[
  {
    "path": ".binny.yaml",
    "content": "tools:\n  # we want to use a pinned version of binny to manage the toolchain (so binny manages itself!)\n  - name: binny\n    version:\n      want: v0.12.0\n    method: github-release\n    with:\n      repo: anchore/binny\n\n  # used to produce SBOMs during release\n  - name: syft\n    version:\n      want: latest\n    method: github-release\n    with:\n      repo: anchore/syft\n\n  # used to sign mac binaries at release\n  - name: quill\n    version:\n      want: v0.7.1\n    method: github-release\n    with:\n      repo: anchore/quill\n\n  # used for linting\n  - name: golangci-lint\n    version:\n      want: v2.11.3\n    method: github-release\n    with:\n      repo: golangci/golangci-lint\n\n  # used for showing the changelog at release\n  - name: glow\n    version:\n      want: v2.1.1\n    method: github-release\n    with:\n      repo: charmbracelet/glow\n\n  # used for signing the checksums file at release\n  - name: cosign\n    version:\n      want: v3.0.5\n    method: github-release\n    with:\n      repo: sigstore/cosign\n\n  # used in integration tests to verify JSON schemas\n  - name: yajsv\n    version:\n      want: v1.4.1\n    method: github-release\n    with:\n      repo: neilpa/yajsv\n\n  # used to release all artifacts\n  - name: goreleaser\n    version:\n      want: v2.14.3\n    method: github-release\n    with:\n      repo: goreleaser/goreleaser\n\n  # used for organizing imports during static analysis\n  - name: gosimports\n    version:\n      want: v0.3.8\n    method: github-release\n    with:\n      repo: rinchsan/gosimports\n\n  # used at release to generate the changelog\n  - name: chronicle\n    version:\n      want: v0.8.0\n    method: github-release\n    with:\n      repo: anchore/chronicle\n\n  # used during static analysis for license compliance\n  - name: bouncer\n    version:\n      want: v0.4.0\n    method: github-release\n    with:\n      repo: wagoodman/go-bouncer\n\n  # used for running all local and CI tasks\n  - name: task\n    version:\n      want: v3.49.1\n    method: github-release\n    with:\n      repo: go-task/task\n\n  # used for triggering a release\n  - name: gh\n    version:\n      want: v2.88.1\n    method: github-release\n    with:\n      repo: cli/cli\n\n  # used to upload test fixture cache\n  - name: oras\n    version:\n      want: v1.3.1\n    method: github-release\n    with:\n      repo: oras-project/oras\n\n  # used to upload test fixture cache\n  - name: yq\n    version:\n      want: v4.52.4\n    method: github-release\n    with:\n      repo: mikefarah/yq\n"
  },
  {
    "path": ".bouncer.yaml",
    "content": "permit:\n  - BSD.*\n  - CC0.*\n  - MIT.*\n  - Apache.*\n  - MPL.*\n  - ISC\n  - WTFPL\n  - Unlicense\n\nignore-packages:\n  # https://github.com/sorairolake/lzip-go/blob/34a2615d2abf740175c6b0a835baa08364e09430/go.sum.license#L3\n  # has `SPDX-License-Identifier: Apache-2.0 OR MIT`, both of which are acceptable\n  - github.com/sorairolake/lzip-go\n  # packageurl-go is released under the MIT license located in the root of the repo at /mit.LICENSE\n  - github.com/anchore/packageurl-go\n\n  # both of these dependencies are specified as Apache-2.0 in their respective GitHub READMEs\n  - github.com/alibabacloud-go/cr-20160607/client\n  - github.com/alibabacloud-go/tea-xml/service\n\n  # crypto/internal/boring is released under the openSSL license as a part of the Golang Standard Libary\n  - crypto/internal/boring\n\n  # from: https://github.com/spdx/tools-golang/blob/main/LICENSE.code\n  # The tools-golang source code is provided and may be used, at your option,\n  # under either:\n  # * Apache License, version 2.0 (Apache-2.0), OR\n  # * GNU General Public License, version 2.0 or later (GPL-2.0-or-later).\n  # (we choose Apache-2.0)\n  - github.com/spdx/tools-golang\n\n  # from: https://github.com/xi2/xz/blob/master/LICENSE\n  # All these files have been put into the public domain.\n  # You can do whatever you want with these files.\n  - github.com/xi2/xz\n\n  # from: https://gitlab.com/cznic/sqlite/-/blob/v1.15.4/LICENSE\n  # This is a BSD-3-Clause license\n  - modernc.org/libc\n  - modernc.org/libc/errno\n  - modernc.org/libc/fcntl\n  - modernc.org/libc/fts\n  - modernc.org/libc/grp\n  - modernc.org/libc/langinfo\n  - modernc.org/libc/limits\n  - modernc.org/libc/netdb\n  - modernc.org/libc/netinet/in\n  - modernc.org/libc/poll\n  - modernc.org/libc/pthread\n  - modernc.org/libc/pwd\n  - modernc.org/libc/signal\n  - modernc.org/libc/stdio\n  - modernc.org/libc/stdlib\n  - modernc.org/libc/sys/socket\n  - modernc.org/libc/sys/stat\n  - modernc.org/libc/sys/types\n  - modernc.org/libc/termios\n  - modernc.org/libc/time\n  - modernc.org/libc/unistd\n  - modernc.org/libc/utime\n  - modernc.org/libc/uuid/uuid\n  - modernc.org/libc/wctype\n  - modernc.org/mathutil\n  - modernc.org/memory\n"
  },
  {
    "path": ".chronicle.yaml",
    "content": "enforce-v0: false\ntitle: \"\"\n\ngithub:\n  host: github.com\n  include-issue-pr-authors: true\n  include-issue-prs: true\n  include-issues-not-planned: false\n  include-prs: true\n  include-issues: true\n  include-unlabeled-issues: true\n  include-unlabeled-prs: true\n  issues-require-linked-prs: false\n  consider-pr-merge-commits: true\n\n  exclude-labels:\n    - duplicate\n    - question\n    - invalid\n    - wontfix\n    - wont-fix\n    - release-ignore\n    - changelog-ignore\n    - ignore\n\n  changes:\n\n    - name: security-fixes\n      title: Security Fixes\n      semver-field: patch\n      labels:\n        - security\n        - vulnerability\n\n    - name: added-feature\n      title: Added Features\n      semver-field: minor\n      labels:\n        - enhancement\n        - feature\n        - minor\n\n    - name: bug-fix\n      title: Bug Fixes\n      semver-field: patch\n      labels:\n        - bug\n        - fix\n        - bug-fix\n        - patch\n\n    - name: breaking-feature\n      title: Breaking Changes\n      semver-field: major\n      labels:\n        - breaking\n        - backwards-incompatible\n        - breaking-change\n        - breaking-feature\n        - major\n        - detected-breaking-change\n\n    - name: removed-feature\n      title: Removed Features\n      semver-field: major\n      labels:\n        - removed\n\n    - name: deprecated-feature\n      title: Deprecated Features\n      semver-field: minor\n      labels:\n        - deprecated\n\n    - name: unknown\n      title: Additional Changes\n      semver-field: \"\"\n      labels: []\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n**What happened**:\n\n**What you expected to happen**:\n\n**Steps to reproduce the issue**:\n\n**Anything else we need to know?**:\n\n**Environment**:\n- Output of `syft version`:\n- OS (e.g: `cat /etc/os-release` or similar):\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "contact_links:\n\n  - name: Join our Discourse community 💬\n    # link to our community Discourse site\n    url: https://anchore.com/discourse\n    about: 'Come chat with us! Ask for help, join our software development efforts, or just give us feedback!'\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\n**What would you like to be added**:\n\n**Why is this needed**:\n\n**Additional context**:\n<!-- Add any other context or screenshots about the feature request here. -->\n"
  },
  {
    "path": ".github/actions/bootstrap/action.yaml",
    "content": "name: \"Bootstrap\"\n\ndescription: \"Bootstrap all tools and dependencies\"\ninputs:\n  go-version:\n    description: \"Go version to install\"\n    required: true\n    default: \"1.26.x\"\n  go-dependencies:\n    description: \"Download go dependencies\"\n    required: true\n    default: \"true\"\n  cache-key-prefix:\n    description: \"Prefix all cache keys with this value\"\n    required: true\n    default: \"53ac821810\"\n  download-test-fixture-cache:\n    description: \"Download test fixture cache from OCI and github actions\"\n    required: true\n    default: \"false\"\n  tools:\n    description: \"whether to install tools\"\n    default: \"true\"\n  bootstrap-apt-packages:\n    description: \"Space delimited list of tools to install via apt\"\n    default: \"libxml2-utils\"\n\nruns:\n  using: \"composite\"\n  steps:\n    # note: go mod and build is automatically cached on default with v4+\n    - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0\n      if: inputs.go-version != ''\n      with:\n        go-version: ${{ inputs.go-version }}\n        check-latest: true\n\n    - name: Restore tool cache\n      if: inputs.tools == 'true'\n      id: tool-cache\n      uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3\n      with:\n        path: ${{ github.workspace }}/.tool\n        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('.binny.yaml') }}\n\n    - name: Install project tools\n      shell: bash\n      if: inputs.tools == 'true'\n      run: |\n        make tools\n        .tool/binny list\n        .tool/binny check\n\n    - name: Install go dependencies\n      if: inputs.go-dependencies == 'true'\n      shell: bash\n      run: make ci-bootstrap-go\n\n    - name: Install apt packages\n      if: inputs.bootstrap-apt-packages != ''\n      shell: bash\n      env:\n        APT_PACKAGES: ${{ inputs.bootstrap-apt-packages }}\n      run: |\n        IFS=' ' read -ra packages <<< \"$APT_PACKAGES\"\n        DEBIAN_FRONTEND=noninteractive sudo apt update && sudo -E apt install -y \"${packages[@]}\"\n\n    - name: Restore ORAS cache from github actions\n      if: inputs.download-test-fixture-cache == 'true'\n      uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3\n      with:\n        path: ${{ github.workspace }}/.tmp/oras-cache\n        key: ${{ inputs.cache-key-prefix }}-oras-cache\n\n    - name: Download test fixture cache\n      if: inputs.download-test-fixture-cache == 'true'\n      shell: bash\n      run: make download-test-fixture-cache\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# Dependabot configuration\n#\n# Grouping behavior (see inline comments for details):\n#   - Minor + patch updates: grouped into a single PR per ecosystem\n#   - Major version bumps: individual PR per dependency\n#   - Security updates: individual PR per dependency\n#\n# Note: \"patch\" refers to semver version bumps (1.2.3 -> 1.2.4), not security fixes.\n# Security updates are identified separately via GitHub's Advisory Database and\n# can be any version bump (patch, minor, or major) that fixes a known CVE.\n\nversion: 2\n\nupdates:\n\n  - package-ecosystem: gomod\n    directory: \"/\"\n    cooldown:\n      default-days: 7\n    schedule:\n      interval: \"weekly\"\n      day: \"friday\"\n    open-pull-requests-limit: 10\n    labels:\n      - \"dependencies\"\n    groups:\n      go-minor-patch:\n        applies-to: version-updates  # security updates get individual PRs\n        patterns:\n          - \"*\"\n        update-types:  # major omitted, gets individual PRs\n          - \"minor\"\n          - \"patch\"\n\n  - package-ecosystem: \"github-actions\"\n    directories:\n      - \"/\"\n      - \"/.github/actions/bootstrap\"\n    cooldown:\n      default-days: 7\n    schedule:\n      interval: \"weekly\"\n      day: \"friday\"\n    open-pull-requests-limit: 10\n    labels:\n      - \"dependencies\"\n    groups:\n      actions-minor-patch:\n        applies-to: version-updates  # security updates get individual PRs\n        patterns:\n          - \"*\"\n        update-types:  # major omitted, gets individual PRs\n          - \"minor\"\n          - \"patch\"\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "## Description\n\n<!-- Please include a summary of the changes along with any relevant motivation and context -->\n\n<!-- If CLI output changed, show an example (before/after if helpful) -->\n\n<!-- If this changes application or API configuration, describe new/changed/removed options -->\n\n## Type of change\n\n<!-- Delete any that are not relevant -->\n\n- [ ] Bug fix (non-breaking change which fixes an issue)\n- [ ] New feature (non-breaking change which adds functionality)\n- [ ] Breaking change (please discuss with the team first; Syft is 1.0 software and we won't accept breaking changes without going to 2.0)\n- [ ] Documentation (updates the documentation)\n- [ ] Chore (improve the developer experience, fix a test flake, etc, without changing the visible behavior of Syft)\n- [ ] Performance (make Syft run faster or use less memory, without changing visible behavior much)\n\n## Checklist\n\n- [ ] I have added unit tests that cover changed behavior\n- [ ] I have tested my code in common scenarios and confirmed there are no regressions\n- [ ] I have added comments to my code, particularly in hard-to-understand sections\n\n## Issue references\n\n<!-- If this fixes an issue, include \"Fixes #<issue-number>\" or otherwise list the issue references -->\n"
  },
  {
    "path": ".github/scripts/capability-drift-check.sh",
    "content": "#!/usr/bin/env bash\nset -u\n\nif [ \"$(git status --porcelain | wc -l)\" -ne \"0\" ]; then\n  echo \"  🔴 there are uncommitted changes, please commit them before running this check\"\n  exit 1\nfi\n\nif ! make generate-capabilities REFRESH=false; then\n  echo \"Generating capability descriptions failed\"\n  exit 1\nfi\n\nif [ \"$(git status --porcelain | wc -l)\" -ne \"0\" ]; then\n  echo \"  🔴 there is drift in capability descriptions! Please run 'make generate-capabilities' and commit the changes.\"\n  exit 1\nfi"
  },
  {
    "path": ".github/scripts/check_binary_fixture_size.sh",
    "content": "#!/bin/bash\n\n# current limit for fixture size\nsize=1000\n\nif [ $# -eq 0 ]; then\n  echo \"Usage: $0 <directory>\"\n  exit 1\nfi\n\ndirectory=\"$1\"\n\n# Remove trailing slash using parameter expansion\ndirectory=\"${directory%/}\"\n\nif [ ! -d \"$directory\" ]; then\n  echo \"Directory not found: $directory\"\n  exit 1\nfi\n\nfound_large_files=0\nwhile IFS= read -r -d '' file; do\n  if [ $(wc -c < \"$file\") -gt $size ]; then\n    echo \"File $file is greater than ${size} bytes.\"\n    found_large_files=1\n  fi\ndone < <(git ls-files -z \"$directory\")\n\nif [ \"$found_large_files\" -eq 1 ]; then\n  echo \"Script failed: Some files are greater than ${size} bytes.\"\n  exit 1\nelse\n  echo \"All files in $directory and its subdirectories are ${size} bytes or smaller. Check passed.\"\n  exit 0\nfi\n\n"
  },
  {
    "path": ".github/scripts/ci-check.sh",
    "content": "#!/usr/bin/env bash\n\nred=$(tput setaf 1)\nbold=$(tput bold)\nnormal=$(tput sgr0)\n\n# assert we are running in CI (or die!)\nif [[ -z \"$CI\" ]]; then\n    echo \"${bold}${red}This step should ONLY be run in CI. Exiting...${normal}\"\n    exit 1\nfi\n"
  },
  {
    "path": ".github/scripts/coverage.py",
    "content": "#!/usr/bin/env python3\nimport subprocess\nimport sys\nimport shlex\n\n\nclass bcolors:\n    HEADER = '\\033[95m'\n    OKBLUE = '\\033[94m'\n    OKCYAN = '\\033[96m'\n    OKGREEN = '\\033[92m'\n    WARNING = '\\033[93m'\n    FAIL = '\\033[91m'\n    ENDC = '\\033[0m'\n    BOLD = '\\033[1m'\n    UNDERLINE = '\\033[4m'\n\n\nif len(sys.argv) < 3:\n    print(\"Usage: coverage.py [threshold] [go-coverage-report]\")\n    sys.exit(1)\n\n\nthreshold = float(sys.argv[1])\nreport = sys.argv[2]\n\n\nargs = shlex.split(f\"go tool cover -func {report}\")\np = subprocess.run(args, capture_output=True, text=True)\n\npercent_coverage = float(p.stdout.splitlines()[-1].split()[-1].replace(\"%\", \"\"))\nprint(f\"{bcolors.BOLD}Coverage: {percent_coverage}%{bcolors.ENDC}\")\n\nif percent_coverage < threshold:\n    print(f\"{bcolors.BOLD}{bcolors.FAIL}Coverage below threshold of {threshold}%{bcolors.ENDC}\")\n    sys.exit(1)\n"
  },
  {
    "path": ".github/scripts/find_cache_paths.py",
    "content": "#!/usr/bin/env python3\nfrom __future__ import annotations\n\nimport os\nimport glob\nimport sys\nimport json\nimport hashlib\n\n\nIGNORED_PREFIXES = []\n\n\ndef find_fingerprints_and_check_dirs(base_dir):\n    all_fingerprints = set(glob.glob(os.path.join(base_dir, '**', 'test*', '**', '*.fingerprint'), recursive=True))\n\n    all_fingerprints = {os.path.relpath(fp) for fp in all_fingerprints\n                        if not any(fp.startswith(prefix) for prefix in IGNORED_PREFIXES)}\n\n    if not all_fingerprints:\n        show(\"No .fingerprint files or cache directories found.\")\n        exit(1)\n\n    missing_content = []\n    valid_paths = set()\n    fingerprint_contents = []\n\n    for fingerprint in all_fingerprints:\n        path = fingerprint.replace('.fingerprint', '')\n\n        if not os.path.exists(path):\n            missing_content.append(path)\n            continue\n\n        if not os.path.isdir(path):\n            valid_paths.add(path)\n            continue\n\n        if os.listdir(path):\n            valid_paths.add(path)\n        else:\n            missing_content.append(path)\n\n        with open(fingerprint, 'r') as f:\n            content = f.read().strip()\n            fingerprint_contents.append((fingerprint, content))\n\n    return sorted(valid_paths), missing_content, fingerprint_contents\n\n\ndef parse_fingerprint_contents(fingerprint_content):\n    input_map = {}\n    for line in fingerprint_content.splitlines():\n        digest, path = line.split()\n        input_map[path] = digest\n    return input_map\n\n\ndef calculate_sha256(fingerprint_contents):\n    sorted_fingerprint_contents = sorted(fingerprint_contents, key=lambda x: x[0])\n\n    concatenated_contents = ''.join(content for _, content in sorted_fingerprint_contents)\n\n    sha256_hash = hashlib.sha256(concatenated_contents.encode()).hexdigest()\n\n    return sha256_hash\n\n\ndef calculate_file_sha256(file_path):\n    sha256_hash = hashlib.sha256()\n    with open(file_path, 'rb') as f:\n        for byte_block in iter(lambda: f.read(4096), b\"\"):\n            sha256_hash.update(byte_block)\n    return sha256_hash.hexdigest()\n\n\ndef show(*s: str):\n    print(*s, file=sys.stderr)\n\n\ndef main(file_path: str | None):\n    base_dir = '.'\n    valid_paths, missing_content, fingerprint_contents = find_fingerprints_and_check_dirs(base_dir)\n\n    if missing_content:\n        show(\"The following paths are missing or have no content, but have corresponding .fingerprint files:\")\n        for path in sorted(missing_content):\n            show(f\"- {path}\")\n        # when adding new cache directories there is a time where it is not possible to have this directory without\n        # running the tests first... but this step is a prerequisite for running the tests. We should not block on this.\n        # show(\"Please ensure these paths exist and have content if they are directories.\")\n        # exit(1)\n\n    sha256_hash = calculate_sha256(fingerprint_contents)\n\n    paths_with_digests = []\n    for path in sorted(valid_paths):\n        fingerprint_file = f\"{path}.fingerprint\"\n        try:\n            if os.path.exists(fingerprint_file):\n                file_digest = calculate_file_sha256(fingerprint_file)\n\n                # Parse the fingerprint file to get the digest/path tuples\n                with open(fingerprint_file, 'r') as f:\n                    fingerprint_content = f.read().strip()\n                    input_map = parse_fingerprint_contents(fingerprint_content)\n\n                paths_with_digests.append({\n                    \"path\": path,\n                    \"digest\": file_digest,\n                    \"input\": input_map\n                })\n\n        except Exception as e:\n            show(f\"Error processing {fingerprint_file}: {e}\")\n            raise e\n\n\n    output = {\n        \"digest\": sha256_hash,\n        \"paths\": paths_with_digests\n    }\n\n    content = json.dumps(output, indent=2, sort_keys=True)\n\n    if file_path:\n        with open(file_path, 'w') as f:\n            f.write(content)\n\n    print(content)\n\n\nif __name__ == \"__main__\":\n    file_path = None\n    if len(sys.argv) > 1:\n        file_path = sys.argv[1]\n    main(file_path)\n"
  },
  {
    "path": ".github/scripts/fingerprint_docker_fixtures.py",
    "content": "#!/usr/bin/env python3\n\nimport os\nimport subprocess\nimport hashlib\n\nBOLD = '\\033[1m'\nYELLOW = '\\033[0;33m'\nRESET = '\\033[0m'\n\n\ndef print_message(message):\n    print(f\"{YELLOW}{message}{RESET}\")\n\n\ndef sha256sum(filepath):\n    h = hashlib.sha256()\n    with open(filepath, 'rb') as f:\n        for chunk in iter(lambda: f.read(4096), b\"\"):\n            h.update(chunk)\n    return h.hexdigest()\n\n\ndef is_git_tracked_or_untracked(directory):\n    \"\"\"Returns a sorted list of files in the directory that are tracked or not ignored by Git.\"\"\"\n    result = subprocess.run(\n        [\"git\", \"ls-files\", \"--cached\", \"--others\", \"--exclude-standard\"],\n        cwd=directory,\n        stdout=subprocess.PIPE,\n        text=True\n    )\n    return sorted(result.stdout.strip().splitlines())\n\n\ndef find_test_fixture_dirs_with_images(base_dir):\n    \"\"\"Find directories that contain 'testdata' and at least one 'image-*' directory.\"\"\"\n    for root, dirs, files in os.walk(base_dir):\n        if 'testdata' in root:\n            image_dirs = [d for d in dirs if d.startswith('image-')]\n            if image_dirs:\n                yield os.path.realpath(root)\n\n\ndef generate_fingerprints():\n    print_message(\"creating fingerprint files for docker fixtures...\")\n\n    for test_fixture_dir in find_test_fixture_dirs_with_images('.'):\n        cache_fingerprint_path = os.path.join(test_fixture_dir, 'cache.fingerprint')\n\n        with open(cache_fingerprint_path, 'w') as fingerprint_file:\n            for image_dir in find_image_dirs(test_fixture_dir):\n                for file in is_git_tracked_or_untracked(image_dir):\n                    file_path = os.path.join(image_dir, file)\n                    checksum = sha256sum(file_path)\n                    path_from_fixture_dir = os.path.relpath(file_path, test_fixture_dir)\n                    fingerprint_file.write(f\"{checksum}  {path_from_fixture_dir}\\n\")\n\n\ndef find_image_dirs(test_fixture_dir):\n    \"\"\"Find all 'image-*' directories inside a given test-fixture directory.\"\"\"\n    result = []\n    for root, dirs, files in os.walk(test_fixture_dir):\n        for dir_name in dirs:\n            if dir_name.startswith('image-'):\n                result.append(os.path.join(root, dir_name))\n    return sorted(result)\n\n\nif __name__ == \"__main__\":\n    generate_fingerprints()\n"
  },
  {
    "path": ".github/scripts/go-mod-tidy-check.sh",
    "content": "#!/usr/bin/env bash\nset -eu\n\nORIGINAL_STATE_DIR=$(mktemp -d \"TEMP-original-state-XXXXXXXXX\")\nTIDY_STATE_DIR=$(mktemp -d \"TEMP-tidy-state-XXXXXXXXX\")\n\ntrap \"cp -p ${ORIGINAL_STATE_DIR}/* ./ && git update-index -q --refresh && rm -fR ${ORIGINAL_STATE_DIR} ${TIDY_STATE_DIR}\" EXIT\n\n# capturing original state of files...\ncp go.mod go.sum \"${ORIGINAL_STATE_DIR}\"\n\n# capturing state of go.mod and go.sum after running go mod tidy...\ngo mod tidy\ncp go.mod go.sum \"${TIDY_STATE_DIR}\"\n\nset +e\n\n# detect difference between the git HEAD state and the go mod tidy state\nDIFF_MOD=$(diff -u \"${ORIGINAL_STATE_DIR}/go.mod\" \"${TIDY_STATE_DIR}/go.mod\")\nDIFF_SUM=$(diff -u \"${ORIGINAL_STATE_DIR}/go.sum\" \"${TIDY_STATE_DIR}/go.sum\")\n\nif [[ -n \"${DIFF_MOD}\" || -n \"${DIFF_SUM}\" ]]; then\n    echo \"go.mod diff:\"\n    echo \"${DIFF_MOD}\"\n    echo \"go.sum diff:\"\n    echo \"${DIFF_SUM}\"\n    echo \"\"\n    printf \"FAILED! go.mod and/or go.sum are NOT tidy; please run 'go mod tidy'.\\n\\n\"\n    exit 1\nfi\n"
  },
  {
    "path": ".github/scripts/json-schema-drift-check.sh",
    "content": "#!/usr/bin/env bash\nset -u\n\nif [ \"$(git status --porcelain | wc -l)\" -ne \"0\" ]; then\n  echo \"  🔴 there are uncommitted changes, please commit them before running this check\"\n  exit 1\nfi\n\nif ! make generate-json-schema; then\n  echo \"Generating json schema failed\"\n  exit 1\nfi\n\nif [ \"$(git status --porcelain | wc -l)\" -ne \"0\" ]; then\n  echo \"  🔴 there is drift in json schema! Please run 'make generate-json-schema' and commit the changes.\"\n  exit 1\nfi\n"
  },
  {
    "path": ".github/scripts/labeler.py",
    "content": "#!/usr/bin/env python3\n\nfrom __future__ import annotations\n\nimport sys\nimport glob\nimport subprocess\nimport os\nimport re\n\nDRY_RUN = False\n\nJSON_SCHEMA_LABEL = \"json-schema\"\n\n# note: we can't use \"breaking-change\" as the label since that might be applied manually by a user. This is a\n# distinct label that we can use to indicate that the label was applied (or removed) by automation.\nBREAKING_CHANGE_LABEL = \"detected-breaking-change\"\n\n\ndef main(changed_files: str | None = None, merge_base_schema_files: str | None = None):\n    global DRY_RUN\n\n    pr_number = os.environ.get(\"GITHUB_PR_NUMBER\")\n    comment_file_path = os.environ.get(\"CI_COMMENT_FILE\")\n\n    if not comment_file_path:\n        print(\"CI_COMMENT_FILE not set\")\n        sys.exit(1)\n\n    if not pr_number:\n        DRY_RUN = True\n\n    if changed_files:\n        DRY_RUN = True\n\n        # read lines from file... this is useful for local testing\n        with open(changed_files) as f:\n            pr_changed_files = f.read().splitlines()\n\n        with open(merge_base_schema_files) as f:\n            og_json_schema_files = sort_json_schema_files(f.read().splitlines())\n\n    else:\n        if not is_ci():\n            print(\"Not in CI\")\n            sys.exit(1)\n\n        if not pr_number:\n            print(\"Not a PR\")\n            sys.exit(1)\n\n        pr_changed_files = get_pr_changed_files(pr_number)\n        # since we are running this in the context of the pull_request_target, the checkout is the merge base..\n        # that is the main branch of the original repo, NOT the branch in the forked repo (or branch in the target \n        # repo for non-forked PRs). This means we just need to list the current checkedout files to get a sense of\n        # the changes before a merge.\n        og_json_schema_files = list_json_schema_files()\n\n    pr_json_schema_files = filter_to_schema_files(pr_changed_files)\n\n    pr_labels = get_pr_labels(pr_number)\n\n    # print(\"schema files in pr:   \", summarize_schema_files(pr_json_schema_files))\n    # print(\"og schema files:      \", summarize_schema_files(og_json_schema_files))\n\n    if not og_json_schema_files:\n        print(\"No schema files found in merge base\")\n        sys.exit(1)\n\n    # pr_json_schema_files = set of PR files are added, removed, and changed files\n    new_schema_files = set(pr_json_schema_files) - set(og_json_schema_files)\n    removed_or_modified_schema_files = set(pr_json_schema_files) - set(new_schema_files)\n\n    print(\"new schemas:                \", summarize_schema_files(new_schema_files))\n    print(\"removed or modified schemas:\", summarize_schema_files(removed_or_modified_schema_files))\n\n    # if there is a new or modified schema, we should add the \"json-schema\" label to the PR...\n    if new_schema_files or removed_or_modified_schema_files:\n        print(\"\\nAdding json-schema label...\")\n        add_label(pr_number, JSON_SCHEMA_LABEL)\n\n    else:\n        if JSON_SCHEMA_LABEL in pr_labels:\n            remove_label(pr_number, JSON_SCHEMA_LABEL)\n\n    # new schema files should be scrutinized, comparing the latest and added versions to see if it's a breaking\n    # change (major version bump). Warn about it on the PR via adding a breaking-change label...\n    if is_breaking_change(new_schema_files, og_json_schema_files[-1]):\n        print(\"\\nBreaking change detected...\")\n        add_label(pr_number, BREAKING_CHANGE_LABEL)\n    else:\n        if BREAKING_CHANGE_LABEL in pr_labels:        \n            remove_label(pr_number, BREAKING_CHANGE_LABEL)\n\n    # modifying an existing schema could be a breaking change, we should warn about it on the PR via a comment...\n    # removing schema files should never be allowed, we should warn about it on the PR via a comment...\n    if removed_or_modified_schema_files:\n        print(\"\\nRemoved or modified schema detected...\")\n        schemas = sort_json_schema_files(list(removed_or_modified_schema_files))\n        schemas_str = \"\\n\".join([f\" - {schema}\" for schema in schemas])\n        add_comment(comment_file_path, f\"Detected modification or removal of existing json schemas:\\n{schemas_str}\", warning=True)\n\n\ndef add_comment(comment_file_path: str, comment: str, warning: bool = False, important: bool = False):\n    if warning or important:\n        comment_lines = comment.splitlines()\n        comment = \"\\n\".join([f\"> {line}\" for line in comment_lines])\n\n    if warning:\n        comment = f\"> [!WARNING]\\n{comment}\"    \n    elif important:\n        comment = f\"> [!IMPORTANT]\\n{comment}\"\n\n    # create any parent directories if they don't exist\n    os.makedirs(os.path.dirname(comment_file_path), exist_ok=True)\n\n    with open(comment_file_path, \"w\") as f:\n        f.write(comment)\n\n    print(f\"Comment file contents: {comment_file_path}\")\n    print(comment)\n\n\ndef add_label(pr_number: str, label: str):\n    # run \"gh pr edit --add-label <label>\"\n    result = run(f\"gh pr edit {pr_number} --add-label {label}\", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n    if result.returncode != 0:\n        print(f\"Unable to add '{label!r}' label to PR, error:\")\n        print(str(result.stderr))\n        sys.exit(1)\n\n\ndef remove_label(pr_number: str, label: str):\n    # run \"gh pr edit --remove-label <label>\"\n    result = run(f\"gh pr edit {pr_number} --remove-label {label}\", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n    if result.returncode != 0:\n        print(f\"Unable to remove '{label!r}' label from PR, error:\")\n        print(str(result.stderr))\n        sys.exit(1)\n\n\ndef major_version(semver: str) -> int:\n    return int(semver.split(\".\")[0])\n\n\ndef is_breaking_change(new_schema_files: set[str], latest_schema_file: str) -> bool:\n    latest_major_version = major_version(get_semver(latest_schema_file))\n    for file in new_schema_files:\n        change_major_version = major_version(get_semver(file))\n        if change_major_version > latest_major_version:\n            return True\n    return False\n\n\ndef summarize_schema_files(files: list[str]) -> list[str]:\n    return [get_semver(file) for file in files]\n\n\ndef is_ci() -> bool:\n    return \"CI\" in os.environ\n\n\ndef get_pr_changed_files(pr_number: str) -> list[str]:\n    result = run(f\"gh pr view {pr_number} --json files --jq '.files.[].path'\", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)\n    if result.returncode != 0:\n        print(\"Unable to get list of changed files in PR\")\n        print(str(result.stderr))\n        sys.exit(1)\n    \n    list_of_files = result.stdout.splitlines()\n    return list_of_files\n\n\ndef get_pr_labels(pr_number: str) -> list[str]:\n    result = run(f\"gh pr view {pr_number} --json labels --jq '.labels[].name'\", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)\n    if result.returncode != 0:\n        print(\"Unable to get list of labels on PR\")\n        print(str(result.stderr))\n        sys.exit(1)\n    \n    list_of_labels = result.stdout.splitlines()\n    return list_of_labels\n\n\ndef filter_to_schema_files(list_of_files: list[str]) -> list[str]:\n    # get files matching \"schema/json/schema-*.json\"\n    files = []\n    for file in list_of_files:\n        if re.match(r\"^schema/json/schema-\\d+\\.\\d+\\.\\d+\\.json$\", file):\n            files.append(file)\n    return sort_json_schema_files(files)\n\n\ndef list_json_schema_files() -> list[str]:\n    # list files in \"schema/json\" directory matching the pattern of \"schema-*.json\"\n    # special case: always ignore the \"latest\" schema file\n    return sort_json_schema_files([f for f in glob.glob(\"schema/json/schema-*.json\") if \"latest\" not in f])\n\n\ndef run(command: str,  **kwargs) -> subprocess.CompletedProcess:\n    if DRY_RUN:\n        print(f\"[DRY RUN] {command}\")\n        return subprocess.CompletedProcess(args=[command], returncode=0)\n    print(f\"[RUN] {command}\")\n    return subprocess.run(command, **kwargs)\n\n\ndef get_semver(input_file: str) -> str:\n    return input_file.split(\"-\")[1].split(\".json\")[0]\n\n\ndef sort_json_schema_files(files: list[str]) -> list[str]:\n    # sort files by schema version, where the input looks like \"schema/json/schema-1.12.1.json\"\n    # we should sort by the semantic version embedded within the basename, not the string\n    # so that \"schema/json/schema-1.2.1.json\" comes before \"schema/json/schema-1.12.1.json\".\n    versions = [get_semver(file) for file in files if file]\n    \n    versions = sorted(versions, key=lambda s: [int(u) for u in s.split('.') if \".\" in s])\n\n    return [f\"schema/json/schema-{version}.json\" for version in versions]\n\n\n# allow for test files that have line-by-line list of files:\n\n# .binny.yaml\n# .github/actions/bootstrap/action.yaml\n# .github/scripts/goreleaser-install.sh\n# .github/workflows/release.yaml\n# .github/workflows/update-bootstrap-tools.yml\n# .github/workflows/update-cpe-dictionary-index.yml\n# .github/workflows/update-stereoscope-release.yml\n# .github/workflows/validations.yaml\n# .gitignore\n# .goreleaser.yaml\n# Makefile\n# Taskfile.yaml\n# schema/cyclonedx/Makefile\n\nif __name__ == \"__main__\":\n    # these are variables for a single file name that contains a list of files (line separated)\n    changed_files = None\n    merge_base_schema_files = None\n\n    if len(sys.argv) > 2:\n        changed_files = sys.argv[1]\n        merge_base_schema_files = sys.argv[2]\n\n    main(changed_files, merge_base_schema_files)\n\n"
  },
  {
    "path": ".github/scripts/labeler_test.py",
    "content": "#!/usr/bin/env python3\n\nimport unittest\nfrom unittest.mock import patch\nimport subprocess\n\nimport labeler\n\nclass Labeler(unittest.TestCase):\n\n    def test_major_version(self):\n        self.assertEqual(labeler.major_version(\"1.2.3\"), 1)\n        self.assertEqual(labeler.major_version(\"2.0.0\"), 2)\n\n    def test_is_breaking_change(self):\n        new_schema_files = [\"schema/json/schema-2.0.0.json\"]\n        latest_schema_file = \"schema/json/schema-1.2.0.json\"\n        self.assertTrue(labeler.is_breaking_change(new_schema_files, latest_schema_file))\n\n        new_schema_files = [\"schema/json/schema-1.3.0.json\"]\n        latest_schema_file = \"schema/json/schema-1.2.0.json\"\n        self.assertFalse(labeler.is_breaking_change(new_schema_files, latest_schema_file))\n\n    def test_summarize_schema_files(self):\n        files = [\"schema/json/schema-1.0.0.json\", \"schema/json/schema-2.0.0.json\"]\n        expected = [\"1.0.0\", \"2.0.0\"]\n        self.assertEqual(labeler.summarize_schema_files(files), expected)\n\n    def test_is_ci(self):\n        # Mock os.environ to simulate CI environment\n        with patch.dict(\"os.environ\", {\"CI\": \"true\"}):\n            self.assertTrue(labeler.is_ci())\n\n    def test_get_pr_changed_files(self):\n        expected_command = \"gh pr view 123 --json files --jq '.files.[].path'\"\n        expected_output = \"file1.json\\nfile2.json\\n\"\n\n        subprocess.CompletedProcess.returncode = 0\n        subprocess.CompletedProcess.stdout = expected_output\n        with patch(\"labeler.run\", return_value=subprocess.CompletedProcess) as mock_run:\n            result = labeler.get_pr_changed_files(\"123\")\n            mock_run.assert_called_with(expected_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)\n            self.assertEqual(result, [\"file1.json\", \"file2.json\"])\n\n    def test_filter_to_schema_files(self):\n        input_files = [\"schema/json/schema-1.0.0.json\", \"not_schema.txt\", \"schema/json/schema-2.0.0.json\"]\n        expected_files = [\"schema/json/schema-1.0.0.json\", \"schema/json/schema-2.0.0.json\"]\n        self.assertEqual(labeler.filter_to_schema_files(input_files), expected_files)\n\n        # we should be strict about what files are allowed to be processed\n        input_files = [\"schema/json/schema-1.0.0extracontent.json\", \"schema/json/schema-1.0.0.md\", \"schema/json/schema-1.0.0.json.extracontent\"]\n        expected_files = []\n        self.assertEqual(labeler.filter_to_schema_files(input_files), expected_files)\n\n    def test_get_semver(self):\n        input_file = \"schema/json/schema-1.0.0.json\"\n        expected_semver = \"1.0.0\"\n        self.assertEqual(labeler.get_semver(input_file), expected_semver)\n\n    def test_sort_json_schema_files(self):\n        files = [\"schema/json/schema-1.12.1.json\", \"schema/json/schema-1.2.1.json\"]\n        expected_sorted_files = [\"schema/json/schema-1.2.1.json\", \"schema/json/schema-1.12.1.json\"]\n        self.assertEqual(labeler.sort_json_schema_files(files), expected_sorted_files)\n\n        # ensure that \"latest\" doesn't cause a problem and is ultimately ignored\n        files = [\"schema/json/schema-1.12.1.json\", \"schema/json/schema-_bogus.json\"]\n        expected_sorted_files = [\"schema/json/schema-_bogus.json\", \"schema/json/schema-1.12.1.json\"]\n        self.assertEqual(labeler.sort_json_schema_files(files), expected_sorted_files)\n\n\nif __name__ == \"__main__\":\n    unittest.main()\n"
  },
  {
    "path": ".github/scripts/trigger-release.sh",
    "content": "#!/usr/bin/env bash\nset -eu\n\nbold=$(tput bold)\nnormal=$(tput sgr0)\n\nGH_CLI=.tool/gh\n\nif ! [ -x \"$(command -v $GH_CLI)\" ]; then\n    echo \"The GitHub CLI could not be found. run: make bootstrap\"\n    exit 1\nfi\n\n$GH_CLI auth status\n\n# set the default repo in cases where multiple remotes are defined\n$GH_CLI repo set-default anchore/syft\n\nexport GITHUB_TOKEN=\"${GITHUB_TOKEN-\"$($GH_CLI auth token)\"}\"\n\n# we need all of the git state to determine the next version. Since tagging is done by\n# the release pipeline it is possible to not have all of the tags from previous releases.\ngit fetch --tags\n\n# populates the CHANGELOG.md and VERSION files\necho \"${bold}Generating changelog...${normal}\"\nmake changelog 2> /dev/null\n\nNEXT_VERSION=$(cat VERSION)\n\nif [[ \"$NEXT_VERSION\" == \"\" ||  \"${NEXT_VERSION}\" == \"(Unreleased)\" ]]; then\n    echo \"Could not determine the next version to release. Exiting...\"\n    exit 1\nfi\n\nwhile true; do\n    read -p \"${bold}Do you want to trigger a release for version '${NEXT_VERSION}'?${normal} [y/n] \" yn\n    case $yn in\n        [Yy]* ) echo; break;;\n        [Nn]* ) echo; echo \"Cancelling release...\"; exit;;\n        * ) echo \"Please answer yes or no.\";;\n    esac\ndone\n\necho \"${bold}Kicking off release for ${NEXT_VERSION}${normal}...\"\necho\n$GH_CLI workflow run release.yaml -f version=${NEXT_VERSION}\n\necho\necho \"${bold}Waiting for release to start...${normal}\"\nsleep 10\n\nset +e\n\necho \"${bold}Head to the release workflow to monitor the release:${normal} $($GH_CLI run list --workflow=release.yaml --limit=1 --json url --jq '.[].url')\"\nid=$($GH_CLI run list --workflow=release.yaml --limit=1 --json databaseId --jq '.[].databaseId')\n$GH_CLI run watch $id --exit-status || (echo ; echo \"${bold}Logs of failed step:${normal}\" && GH_PAGER=\"\" $GH_CLI run view $id --log-failed)\n"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\nname: \"CodeQL Security Scan\"\n\non:\n  push:\n    branches:\n      # only run when there are pushes to the main branch (not on PRs)\n      - main\n\n  schedule:\n    - cron: '0 0 * * 3'\n\npermissions:\n  contents: read\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-22.04-4core-16gb\n    if: github.repository == 'anchore/syft' # only run for main repo\n    permissions:\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        # Override automatic language detection by changing the below list\n        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']\n        language: ['go', 'python']\n        # Learn more...\n        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n      with:\n        persist-credentials: false\n\n    - name: Install Go\n      uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0\n      with:\n        go-version-file: go.mod\n        check-latest: true\n\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6\n      with:\n        languages: ${{ matrix.language }}\n        # If you wish to specify custom queries, you can do so here or in a config file.\n        # By default, queries listed here will override any specified in a config file. \n        # Prefix the list here with \"+\" to use these queries and those in the config file.\n        # queries: ./path/to/local/query, your-org/your-repo/queries@main\n\n    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).\n    # If this step fails, then you should remove it and run the build manually (see below)\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6\n\n    # ℹ️ Command-line programs to run using the OS shell.\n    # 📚 https://git.io/JvXDl\n\n    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines\n    #    and modify them (or add more) to build your code if your project\n    #    uses a compiled language\n\n    #- run: |\n    #   make bootstrap\n    #   make release\n\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6\n"
  },
  {
    "path": ".github/workflows/dependabot-automation.yaml",
    "content": "name: Dependabot Automation\non:\n  pull_request:\n\npermissions:\n  pull-requests: write\n\njobs:\n  run:\n    uses: anchore/workflows/.github/workflows/dependabot-automation.yaml@main\n"
  },
  {
    "path": ".github/workflows/detect-schema-changes.yaml",
    "content": "name: \"Detect schema changes\"\n\non:\n  # IMPORTANT! This workflow is triggered by the `pull_request_target` event\n  # which means that forked PRs will run with access secrets from the repo\n  # it's forked from (the \"target\" repo).\n  #\n  # For this reason we only NEVER checkout the code from the pull request\n  # (e.g. \"ref: ${{ github.event.pull_request.head.sha }}\") to prevent\n  # accidentally running potentially untrusted code.\n  #\n  # By default the checkout will be:\n  #   - GITHUB_SHA: Last commit on the PR base branch\n  #   - GITHUB_REF: PR base branch\n  #\n  # ...unlike a typical PR where:\n  #   - GITHUB_SHA: Last merge commit on the GITHUB_REF branch\n  #   - GITHUB_REF: PR merge branch refs/pull/:prNumber/merge\n  pull_request_target:\n\nenv:\n  # note: this is used within hashFiles() so must be within the GITHUB_WORKSPACE path (or will silently fail)\n  CI_COMMENT_FILE: .tmp/labeler-comment.txt\n  # needs to be any string to uniquely identify the comment on a PR across multiple runs\n  COMMENT_HEADER: \"label-commentary\"\n\njobs:\n  label:\n    name: \"Label changes\"\n    runs-on: ubuntu-22.04\n    permissions:\n      contents: read\n      pull-requests: write\n      issues: write\n    steps:\n\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - run: python .github/scripts/labeler.py\n        env:\n          # note: this token has write access to the repo\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          GITHUB_PR_NUMBER: ${{ github.event.number }}\n\n      - name: Delete existing comment\n        if: ${{ hashFiles( env.CI_COMMENT_FILE ) == '' }}\n        uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 #v2.9.4\n        with:\n          header: ${{ env.COMMENT_HEADER }}\n          hide: true\n          hide_classify: \"OUTDATED\"\n\n      - name: Add comment\n        if: ${{ hashFiles( env.CI_COMMENT_FILE ) != '' }}\n        uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 #v2.9.4\n        with:\n          header: ${{ env.COMMENT_HEADER }}\n          path: ${{ env.CI_COMMENT_FILE }}\n"
  },
  {
    "path": ".github/workflows/oss-project-board-add.yaml",
    "content": "name: Add to OSS board\n\npermissions:\n  contents: read\n\non:\n  issues:\n    types:\n      - opened\n      - reopened\n      - transferred\n      - labeled\n\njobs:\n  run:\n    uses: \"anchore/workflows/.github/workflows/oss-project-board-add.yaml@main\"\n    secrets:\n      token: ${{ secrets.OSS_PROJECT_GH_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/release.yaml",
    "content": "name: \"Release\"\n\npermissions:\n  contents: read\n\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        description: tag the latest commit on main with the given version (prefixed with v)\n        required: true\n      phase:\n        description: the specific workflow phase to run or all\n        required: true\n        default: \"all\"\n        type: choice\n        options:\n          - \"all\"\n          - \"install-script-only\"\n\njobs:\n  quality-gate:\n    environment: release\n    if: ${{ github.event.inputs.phase == 'all' }}\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Validate Apple notarization credentials\n        run: .tool/quill submission list\n        env:\n          QUILL_NOTARY_ISSUER: ${{ secrets.APPLE_NOTARY_ISSUER }}\n          QUILL_NOTARY_KEY_ID: ${{ secrets.APPLE_NOTARY_KEY_ID }}\n          QUILL_NOTARY_KEY: ${{ secrets.APPLE_NOTARY_KEY }}\n\n      - name: Check if running on main\n        if: github.ref != 'refs/heads/main'\n        # we are using the following flag when running `cosign blob-verify` for checksum signature verification:\n        #   --certificate-identity-regexp \"https://github.com/anchore/.github/workflows/release.yaml@refs/heads/main\"\n        # if we are not on the main branch, the signature will not be verifiable since the suffix requires the main branch\n        # at the time of when the OIDC token was issued on the Github Actions runner.\n        run: echo \"This can only be run on the main branch otherwise releases produced will not be verifiable with cosign\" && exit 1\n\n      - name: Check if tag already exists\n        # note: this will fail if the tag already exists\n        run: |\n          [[ \"$VERSION\" == v* ]] || (echo \"version '$VERSION' does not have a 'v' prefix\" && exit 1)\n          git tag \"$VERSION\"\n        env:\n          VERSION: ${{ github.event.inputs.version }}\n\n      - name: Check static analysis results\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: static-analysis\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"Static analysis\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Check unit test results\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: unit\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"Unit tests\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Check integration test results\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: integration\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"Integration tests\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Check acceptance test results (linux)\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: acceptance-linux\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"Acceptance tests (Linux)\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Check acceptance test results (mac)\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: acceptance-mac\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"Acceptance tests (Mac)\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Check cli test results (linux)\n        uses: fountainhead/action-wait-for-check@5a908a24814494009c4bb27c242ea38c93c593be # v1.2.0\n        id: cli-linux\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          # This check name is defined as the github action job name (in .github/workflows/testing.yaml)\n          checkName: \"CLI tests (Linux)\"\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      - name: Quality gate\n        if: steps.static-analysis.outputs.conclusion != 'success' || steps.unit.outputs.conclusion != 'success' || steps.integration.outputs.conclusion != 'success' || steps.cli-linux.outputs.conclusion != 'success' || steps.acceptance-linux.outputs.conclusion != 'success' || steps.acceptance-mac.outputs.conclusion != 'success'\n        env:\n          STATIC_ANALYSIS_STATUS: ${{ steps.static-analysis.conclusion }}\n          UNIT_TEST_STATUS: ${{ steps.unit.outputs.conclusion }}\n          INTEGRATION_TEST_STATUS: ${{ steps.integration.outputs.conclusion }}\n          ACCEPTANCE_LINUX_STATUS: ${{ steps.acceptance-linux.outputs.conclusion }}\n          ACCEPTANCE_MAC_STATUS: ${{ steps.acceptance-mac.outputs.conclusion }}\n          CLI_LINUX_STATUS: ${{ steps.cli-linux.outputs.conclusion }}\n        run: |\n          echo \"Static Analysis Status: $STATIC_ANALYSIS_STATUS\"\n          echo \"Unit Test Status: $UNIT_TEST_STATUS\"\n          echo \"Integration Test Status: $INTEGRATION_TEST_STATUS\"\n          echo \"Acceptance Test (Linux) Status: $ACCEPTANCE_LINUX_STATUS\"\n          echo \"Acceptance Test (Mac) Status: $ACCEPTANCE_MAC_STATUS\"\n          echo \"CLI Test (Linux) Status: $CLI_LINUX_STATUS\"\n          false\n\n  release:\n    needs: [ quality-gate ]\n    if: ${{ github.event.inputs.phase == 'all' }}\n    # runs-on.com: compute instances for parallel builds\n    #   spot disabled: reliability for build workflows (used for releases too)\n    #   goreleaser uses parallelism of 12, so we need more CPUs\n    #   s3-cache: faster actions cache\n    #   tmpfs: faster io-intensive workflows\n    runs-on: runs-on=${{ github.run_id }}/cpu=16+32/ram=32+128/family=c5+c6+c7+c8/spot=false/extras=s3-cache+tmpfs\n    permissions:\n      contents: write\n      packages: write\n      # required for goreleaser signs section with cosign\n      id-token: write\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          fetch-depth: 0\n          persist-credentials: true\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2  #v4.0.0\n        with:\n          username: ${{ secrets.ANCHOREOSSWRITE_DH_USERNAME }}\n          password: ${{ secrets.ANCHOREOSSWRITE_DH_PAT }}\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2  #v4.0.0\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Tag release\n        run: |\n          git config --global user.name \"anchoreci\"\n          git config --global user.email \"anchoreci@users.noreply.github.com\"\n          git tag -a \"$VERSION\" -m \"Release $VERSION\"\n          git push origin --tags\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          VERSION: ${{ github.event.inputs.version }}\n\n      - name: Build & publish release artifacts\n        run: make ci-release\n        env:\n          # for mac signing and notarization...\n          QUILL_SIGN_P12: ${{ secrets.ANCHORE_APPLE_DEVELOPER_ID_CERT_CHAIN }}\n          QUILL_SIGN_PASSWORD: ${{ secrets.ANCHORE_APPLE_DEVELOPER_ID_CERT_PASS }}\n          QUILL_NOTARY_ISSUER: ${{ secrets.APPLE_NOTARY_ISSUER }}\n          QUILL_NOTARY_KEY_ID: ${{ secrets.APPLE_NOTARY_KEY_ID }}\n          QUILL_NOTARY_KEY: ${{ secrets.APPLE_NOTARY_KEY }}\n          # for creating the release (requires write access to packages and content)\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          # for updating brew formula in anchore/homebrew-syft\n          GITHUB_BREW_TOKEN: ${{ secrets.ANCHOREOPS_GITHUB_OSS_WRITE_TOKEN }}\n\n      - uses: anchore/sbom-action@17ae1740179002c89186b61233e0f892c3118b11 #v0.23.0\n        continue-on-error: true\n        with:\n          file: go.mod\n          artifact-name: sbom.spdx.json\n\n      - name: Notify Slack of new release\n        uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a #v2.1.1\n        continue-on-error: true\n        with:\n          webhook: ${{ secrets.SLACK_TOOLBOX_WEBHOOK_URL }}\n          webhook-type: incoming-webhook\n          payload: |\n            text: \"A new Syft release has been published: https://github.com/anchore/syft/releases/tag/${{ github.event.inputs.version }}\"\n            blocks:\n              - type: section\n                text:\n                  type: mrkdwn\n                  text: |\n                    *A new Syft release has been published* :rocket:\n                    • Release: <https://github.com/anchore/syft/releases/tag/${{ github.event.inputs.version }}|${{ github.event.inputs.version }}>\n                    • Repo: `${{ github.repository }}`\n                    • Workflow: `${{ github.workflow }}`\n                    • Event: `${{ github.event_name }}`\n        if: ${{ success() }}\n\n  release-install-script:\n    needs: [ release ]\n    if: ${{ always() && (needs.release.result == 'success' || github.event.inputs.phase == 'install-script-only') }}\n    uses: \"anchore/workflows/.github/workflows/release-install-script.yaml@main\"\n    with:\n      tag: ${{ github.event.inputs.version }}\n    secrets:\n      # needed for r2...\n      R2_INSTALL_ACCESS_KEY_ID: ${{ secrets.OSS_R2_INSTALL_ACCESS_KEY_ID }}\n      R2_INSTALL_SECRET_ACCESS_KEY: ${{ secrets.OSS_R2_INSTALL_SECRET_ACCESS_KEY }}\n      R2_ENDPOINT: ${{ secrets.TOOLBOX_CLOUDFLARE_R2_ENDPOINT }}\n      # needed for s3...\n      S3_INSTALL_AWS_ACCESS_KEY_ID: ${{ secrets.TOOLBOX_AWS_ACCESS_KEY_ID }}\n      S3_INSTALL_AWS_SECRET_ACCESS_KEY: ${{ secrets.TOOLBOX_AWS_SECRET_ACCESS_KEY }}\n"
  },
  {
    "path": ".github/workflows/remove-awaiting-response-label.yaml",
    "content": "name: \"Manage Awaiting Response Label\"\n\non:\n  issue_comment:\n    types: [created]\n\njobs:\n  run:\n    permissions:\n      contents: read\n      issues: write\n      pull-requests: write\n    uses: \"anchore/workflows/.github/workflows/remove-awaiting-response-label.yaml@main\"\n    secrets:\n      token: ${{ secrets.OSS_PROJECT_GH_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/test-fixture-cache-publish.yaml",
    "content": "name: \"Test fixture cache: publish\"\n\non:\n  workflow_dispatch:\n  schedule:\n    # run nightly at 4AM UTC\n    - cron: \"0 4 * * *\"\n\npermissions:\n  contents: read\n\njobs:\n\n  Publish:\n    name: \"Publish test fixture image cache\"\n    # runs-on.com: general purpose instances for building test fixture cache\n    #   spot disabled: can run up to an hour, avoid interruptions\n    #   s3-cache: faster actions cache\n    #   family: note that m*d instances have local nvme storage which is beneficial for building large test fixture images\n    runs-on: \"runs-on=${{ github.run_id }}/cpu=8+16/ram=32+64/family=m5d+m5ad+m5dn+m6gd+m6id+m6idn+m7gd+m8gd/spot=false/extras=s3-cache\"\n    if: github.repository == 'anchore/syft' # only run for main repo\n    permissions:\n      packages: write\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          # we want to rebuild the cache with no previous state\n          download-test-fixture-cache: false\n\n      - name: Run all tests\n        run: |\n          make test\n        env:\n          # we want to rebuild the cache with no previous state\n          DOWNLOAD_TEST_FIXTURE_CACHE: \"false\"\n\n      - name: Login to GitHub Container Registry (ORAS)\n        run: echo \"${{ secrets.GITHUB_TOKEN }}\" | .tool/oras login ghcr.io -u \"$ACTOR\" --password-stdin\n        env:\n          ACTOR: ${{ github.actor }}\n\n      - name: Publish test fixture cache\n        run: make upload-test-fixture-cache\n"
  },
  {
    "path": ".github/workflows/update-anchore-dependencies.yml",
    "content": "name: PR to update Anchore dependencies\non:\n  workflow_dispatch:\n    inputs:\n      repos:\n        description: \"List of dependencies to update\"\n        required: true\n        type: string\n\npermissions:\n  contents: read\n\njobs:\n  update:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'anchore' # only run for main repo (not forks)\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          tools: false\n          bootstrap-apt-packages: \"\"\n\n      - name: Update dependencies\n        id: update\n        uses: anchore/workflows/.github/actions/update-go-dependencies@main\n        with:\n          repos: ${{ github.event.inputs.repos }}\n\n      - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf #v2.2.1\n        id: generate-token\n        with:\n          app-id: ${{ secrets.TOKEN_APP_ID }}\n          private-key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}\n\n      - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0\n        with:\n          signoff: true\n          delete-branch: true\n          draft: ${{ steps.update.outputs.draft }}\n          # do not change this branch, as other workflows depend on it\n          branch: auto/integration\n          labels: dependencies,pre-release\n          commit-message: \"chore(deps): update anchore dependencies\"\n          title: \"chore(deps): update anchore dependencies\"\n          body: ${{ steps.update.outputs.summary }}\n          token: ${{ steps.generate-token.outputs.token }}\n"
  },
  {
    "path": ".github/workflows/update-bootstrap-tools.yml",
    "content": "name: PR for latest versions of tools\non:\n  schedule:\n    - cron: \"0 8 * * *\" # 3 AM EST\n\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  update-bootstrap-tools:\n    runs-on: ubuntu-latest\n    if: github.repository == 'anchore/syft' # only run for main repo\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          bootstrap-apt-packages: \"\"\n          go-dependencies: false\n\n      - name: \"Update tool versions\"\n        id: latest-versions\n        run: |\n          make update-tools\n          make list-tools\n          \n          export NO_COLOR=1\n          delimiter=\"$(openssl rand -hex 8)\"\n          \n          {\n            echo \"status<<${delimiter}\"\n            make list-tool-updates\n            echo \"${delimiter}\"\n          } >> $GITHUB_OUTPUT\n          \n          {\n            echo \"### Tool version status\"\n            echo \"\\`\\`\\`\"\n            make list-tool-updates\n            echo \"\\`\\`\\`\"\n          } >> $GITHUB_STEP_SUMMARY\n\n      - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf #v2.2.1\n        id: generate-token\n        with:\n          app-id: ${{ secrets.TOKEN_APP_ID }}\n          private-key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}\n\n      - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0\n        with:\n          signoff: true\n          delete-branch: true\n          branch: auto/latest-tools\n          labels: dependencies\n          commit-message: 'chore(deps): update tools to latest versions'\n          title: 'chore(deps): update tools to latest versions'\n          body: |\n            ```\n            ${{ steps.latest-versions.outputs.status }}\n            ```\n            This is an auto-generated pull request to update all of the tools to the latest versions.\n          token: ${{ steps.generate-token.outputs.token }}\n"
  },
  {
    "path": ".github/workflows/update-cpe-dictionary-index.yml",
    "content": "name: PR to update CPE dictionary index\non:\n  schedule:\n    - cron: \"0 1 * * 1\" # every monday at 1 AM\n\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\nenv:\n  SLACK_NOTIFICATIONS: true\n\njobs:\n  upgrade-cpe-dictionary-index:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n    if: github.repository == 'anchore/syft' # only run for main repo\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        id: bootstrap\n\n      - name: Login to GitHub Container Registry\n        run: echo \"${{ secrets.GITHUB_TOKEN }}\" | .tool/oras login ghcr.io -u \"$ACTOR\" --password-stdin\n        env:\n          ACTOR: ${{ github.actor }}\n\n      - name: Pull CPE cache from registry\n        run: make generate:cpe-index:cache:pull\n\n      - name: Update CPE cache from NVD API\n        run: make generate:cpe-index:cache:update\n        env:\n          NVD_API_KEY: ${{ secrets.NVD_API_KEY }}\n\n      - name: Generate CPE dictionary index\n        run: make generate:cpe-index:build\n\n      - name: Push updated CPE cache to registry\n        run: make generate:cpe-index:cache:push\n\n      - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf #v2.2.1\n        id: generate-token\n        with:\n          app-id: ${{ secrets.TOKEN_APP_ID }}\n          private-key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}\n\n      - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0\n        with:\n          signoff: true\n          delete-branch: true\n          branch: auto/latest-cpe-dictionary-index\n          labels: dependencies\n          commit-message: \"chore(deps): update CPE dictionary index\"\n          title: \"chore(deps): update CPE dictionary index\"\n          body: |\n            Update CPE dictionary index based on the latest available CPE dictionary\n          token: ${{ steps.generate-token.outputs.token }}\n\n      - name: Notify Slack on failure\n        uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a #v2.1.1\n        with:\n          webhook: ${{ secrets.SLACK_TOOLBOX_WEBHOOK_URL }}\n          webhook-type: incoming-webhook\n          payload: |\n            text: \"Syft CPE dictionary index update failed\"\n            blocks:\n              - type: section\n                text:\n                  type: mrkdwn\n                  text: |\n                    *Syft CPE dictionary index update failed*\n                    • Workflow: `${{ github.workflow }}`\n                    • Event: `${{ github.event_name }}`\n                    • Job Status: `${{ job.status }}`\n                    • <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run>\n        if: ${{ failure() && env.SLACK_NOTIFICATIONS == 'true' }}\n"
  },
  {
    "path": ".github/workflows/update-spdx-license-list.yaml",
    "content": "name: PR to update SPDX license list\non:\n  schedule:\n    - cron: \"0 6 * * 1\" # every monday at 6 AM UTC\n\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\nenv:\n  SLACK_NOTIFICATIONS: true\n\njobs:\n  upgrade-spdx-license-list:\n    runs-on: ubuntu-latest\n    if: github.repository == 'anchore/syft' # only run for main repo\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - run: |\n          make generate-license-list\n\n      - uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a #v2.1.0\n        id: generate-token\n        with:\n          app_id: ${{ secrets.TOKEN_APP_ID }}\n          private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}\n\n      - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0\n        with:\n          signoff: true\n          delete-branch: true\n          branch: auto/latest-spdx-license-list\n          labels: dependencies\n          commit-message: \"chore(deps): update SPDX license list\"\n          title: \"chore(deps): update SPDX license list\"\n          body: |\n            Update SPDX license list based on the latest available list from spdx.org\n          token: ${{ steps.generate-token.outputs.token }}\n\n      - name: Notify Slack on failure\n        uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a #v2.1.1\n        with:\n          webhook: ${{ secrets.SLACK_TOOLBOX_WEBHOOK_URL }}\n          webhook-type: incoming-webhook\n          payload: |\n            text: \"Syft SPDX license list update failed\"\n            blocks:\n              - type: section\n                text:\n                  type: mrkdwn\n                  text: |\n                    *Syft SPDX license list update failed*\n                    • Workflow: `${{ github.workflow }}`\n                    • Event: `${{ github.event_name }}`\n                    • Job Status: `${{ job.status }}`\n                    • <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run>\n        if: ${{ failure() && env.SLACK_NOTIFICATIONS == 'true' }}\n"
  },
  {
    "path": ".github/workflows/validate-github-actions.yaml",
    "content": "name: \"Validate GitHub Actions\"\n\non:\n  pull_request:\n    paths:\n      - '.github/workflows/**'\n      - '.github/actions/**'\n  push:\n    branches:\n      - main\n    paths:\n      - '.github/workflows/**'\n      - '.github/actions/**'\n\npermissions:\n  contents: read\n\njobs:\n  zizmor:\n    name: \"Lint\"\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      security-events: write  # for uploading SARIF results\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: \"Run zizmor\"\n        uses: zizmorcore/zizmor-action@0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d # v0.5.0\n        with:\n          config: .github/zizmor.yml\n          # Disable SARIF upload so the step is a simple pass/fail gate\n          advanced-security: false\n          inputs: .github\n"
  },
  {
    "path": ".github/workflows/validations.yaml",
    "content": "name: \"Validations\"\n\n# we should cancel any in-progress runs for the same workflow + PR/ref\n# so that we can avoid redundant work / save on CI minutes\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n  cancel-in-progress: true\n\non:\n  workflow_dispatch:\n  pull_request:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: read\n\njobs:\n  Static-Analysis:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Static analysis\"\n    # runs-on.com: memory & general purpose instances for testing\n    #   spot enabled: ok to interrupt non-production workloads\n    #   s3-cache: faster actions cache\n    #   tmpfs: faster io-intensive workflows\n    runs-on: &test-runner \"runs-on=${{ github.run_id }}/cpu=4+8/ram=32+128/family=r5+r6+r7+r8+m4+m5+m6+m7+m8/spot=price-capacity-optimized/extras=s3-cache+tmpfs\"\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          # the self-consistency tests for the output of the capabilities code generation depends on unit test\n          # output from  ./syft/pkg/... packages. Therefore we need to download the test fixture cache here\n          # so that running the few unit tests as part of static analysis works correctly.\n          download-test-fixture-cache: true\n\n      - name: Run static analysis\n        run: make static-analysis\n\n  Unit-Test:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Unit tests\"\n    runs-on: *test-runner\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          download-test-fixture-cache: true\n\n      - name: Run unit tests\n        run: make unit\n\n      - name: Check for capability drift\n        run: make check-capability-drift\n\n  Integration-Test:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Integration tests\"\n    runs-on: *test-runner\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          download-test-fixture-cache: true\n\n      - name: Validate syft output against the CycloneDX schema\n        run: make validate-cyclonedx-schema\n\n      - name: Run integration tests\n        run: make integration\n\n  Build-Snapshot-Artifacts:\n    name: \"Build snapshot artifacts\"\n    # runs-on.com: compute instances for parallel builds\n    #   spot disabled: reliability for build workflows (used for releases too)\n    #   goreleaser uses parallelism of 12, so we need more CPUs\n    #   s3-cache: faster actions cache\n    #   tmpfs: faster io-intensive workflows\n    runs-on: \"runs-on=${{ github.run_id }}/cpu=16+32/ram=32+128/family=c5+c6+c7+c8/spot=false/extras=s3-cache+tmpfs\"\n    steps:\n      # required for magic-cache from runs-on to function with artifact upload/download (see https://runs-on.com/caching/magic-cache/#actionsupload-artifact-compatibility)\n      - uses: runs-on/action@cd2b598b0515d39d78c38a02d529db87d2196d1e  # v2.0.3\n\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          bootstrap-apt-packages: \"\"\n\n      - name: Build snapshot artifacts\n        run: make snapshot\n\n      - name: Smoke test snapshot build\n        run: make snapshot-smoke-test\n\n      - name: Upload snapshot artifacts\n        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0\n        with:\n          name: snapshot\n          path: snapshot/\n          retention-days: 30\n\n  Acceptance-Linux:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Acceptance tests (Linux)\"\n    needs: [Build-Snapshot-Artifacts]\n    runs-on: *test-runner\n    steps:\n      # required for magic-cache from runs-on to function with artifact upload/download (see https://runs-on.com/caching/magic-cache/#actionsupload-artifact-compatibility)\n      - uses: runs-on/action@cd2b598b0515d39d78c38a02d529db87d2196d1e  # v2.0.3\n\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          download-test-fixture-cache: true\n\n      - name: Download snapshot artifacts\n        uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 #v8.0.0\n        with:\n          name: snapshot\n          path: snapshot\n\n      - name: Restore binary permissions\n        run: chmod +x snapshot/*/syft snapshot/*/*.exe 2>/dev/null || true\n\n      - name: Run comparison tests (Linux)\n        run: make compare-linux\n\n      - name: Load test image cache\n        if: steps.install-test-image-cache.outputs.cache-hit == 'true'\n        run: make install-test-cache-load\n\n      - name: Run install.sh tests (Linux)\n        run: make install-test\n\n      - name: (cache-miss) Create test image cache\n        if: steps.install-test-image-cache.outputs.cache-hit != 'true'\n        run: make install-test-cache-save\n\n  Acceptance-Mac:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Acceptance tests (Mac)\"\n    needs: [Build-Snapshot-Artifacts]\n    # note: macos runners aren't supported yet for runs-on managed runners.\n    runs-on: macos-latest\n    steps:\n      - name: Install Cosign\n        uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0\n\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          bootstrap-apt-packages: \"\"\n          go-dependencies: false\n          download-test-fixture-cache: true\n\n      - name: Download snapshot artifacts\n        uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 #v8.0.0\n        with:\n          name: snapshot\n          path: snapshot\n\n      - name: Restore binary permissions\n        run: chmod +x snapshot/*/syft 2>/dev/null || true\n\n      - name: Run comparison tests (Mac)\n        run: make compare-mac\n\n      - name: Run install.sh tests (Mac)\n        run: make install-test-ci-mac\n\n  Cli-Linux:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"CLI tests (Linux)\"\n    needs: [Build-Snapshot-Artifacts]\n    runs-on: *test-runner\n    steps:\n      # required for magic-cache from runs-on to function with artifact upload/download (see https://runs-on.com/caching/magic-cache/#actionsupload-artifact-compatibility)\n      - uses: runs-on/action@cd2b598b0515d39d78c38a02d529db87d2196d1e  # v2.0.3\n\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          download-test-fixture-cache: true\n\n      - name: Download snapshot artifacts\n        uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 #v8.0.0\n        with:\n          name: snapshot\n          path: snapshot\n\n      - name: Restore binary permissions\n        run: chmod +x snapshot/*/syft snapshot/*/*.exe 2>/dev/null || true\n\n      - name: Run CLI Tests (Linux)\n        run: make cli\n"
  },
  {
    "path": ".github/zizmor.yml",
    "content": "rules:\n  unpinned-uses:\n    config:\n      policies:\n        # anchore/workflows is an internal repository; using @main is acceptable\n        anchore/*: any\n  dangerous-triggers:\n    ignore:\n      # Safe use of pull_request_target - only runs trusted scripts from base repo,\n      # never checks out PR code, needs secrets for labeling PRs from forks\n      - detect-schema-changes.yaml\n"
  },
  {
    "path": ".gitignore",
    "content": "# local development tailoring\ngo.work\ngo.work.sum\n.tool-versions\n.python-version\n\n# app configuration\n/.syft.yaml\n\n# tool and bin directories\n.tmp/\nbin/\n/bin\n/.bin\n/build\n/dist\n/snapshot\n/.tool\n/.task\n/generate\n/specs\nmise.toml\n\n# changelog generation\nCHANGELOG.md\nVERSION\n\n# IDE configuration\n.vscode/\n.idea/\n.server/\n.history/\n\n# test related\n*.fingerprint\n/test/results\ncoverage.txt\n*.log\n**/test-fixtures/test-observations.json\n**/testdata/test-observations.json\n\n# probable archives\n.images\n*.tar\n*.jar\n*.war\n*.ear\n*.jpi\n*.hpi\n*.zip\n*.iml\n\n# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n\n# Test binary, build with `go test -c`\n*.test\n\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out\n\n# macOS Finder metadata\n.DS_STORE\n\n*.profile\n\n# attestation\ncosign.key\ncosign.pub\n\n# Byte-compiled object files for python\n__pycache__/\n*.py[cod]\n*$py.class\n\n\n"
  },
  {
    "path": ".golangci.yaml",
    "content": "version: \"2\"\nrun:\n  tests: false\nlinters:\n  default: none\n  enable:\n    - asciicheck\n    - bodyclose\n    - copyloopvar\n    - dogsled\n    - dupl\n    - errcheck\n    - funlen\n    - gocognit\n    - goconst\n    - gocritic\n    - gocyclo\n    - goprintffuncname\n    - gosec\n    - govet\n    - ineffassign\n    - misspell\n    - nakedret\n    - nolintlint\n    - revive\n    - staticcheck\n    - unconvert\n    - unparam\n    - unused\n    - whitespace\n  settings:\n    funlen:\n      lines: 70\n      statements: 50\n    gocritic:\n      enabled-checks:\n        - deferInLoop\n        - ruleguard\n      settings:\n        ruleguard:\n          rules: test/rules/rules.go\n    gosec:\n      excludes:\n        - G115\n  exclusions:\n    generated: lax\n    presets:\n      - comments\n      - common-false-positives\n      - legacy\n      - std-error-handling\n    rules:\n      # we have multiple packages in syft that might overlap with the stblib; their names reflect their purpose\n      - linters:\n          - revive\n        text: \"var-naming: avoid package names that conflict\"\n    paths:\n      - third_party$\n      - builtin$\n      - examples$\n\n# do not enable...\n#    - deadcode          # The owner seems to have abandoned the linter. Replaced by \"unused\".\n#    - depguard          # We don't have a configuration for this yet\n#    - goprintffuncname  # does not catch all cases and there are exceptions\n#    - nakedret          # does not catch all cases and should not fail a build\n#    - gochecknoglobals\n#    - gochecknoinits    # this is too aggressive\n#    - rowserrcheck disabled per generics https://github.com/golangci/golangci-lint/issues/2649\n#    - godot\n#    - godox\n#    - goerr113\n#    - goimports   # we're using gosimports now instead to account for extra whitespaces (see https://github.com/golang/go/issues/20818)\n#    - golint      # deprecated\n#    - gomnd       # this is too aggressive\n#    - interfacer  # this is a good idea, but is no longer supported and is prone to false positives\n#    - lll         # without a way to specify per-line exception cases, this is not usable\n#    - maligned    # this is an excellent linter, but tricky to optimize and we are not sensitive to memory layout optimizations\n#    - nestif\n#    - prealloc     # following this rule isn't consistently a good idea, as it sometimes forces unnecessary allocations that result in less idiomatic code\n#    - rowserrcheck # not in a repo with sql, so this is not useful\n#    - scopelint    # deprecated\n#    - structcheck  # The owner seems to have abandoned the linter. Replaced by \"unused\".\n#    - testpackage\n#    - varcheck     # The owner seems to have abandoned the linter. Replaced by \"unused\".\n#    - wsl          # this doens't have an auto-fixer yet and is pretty noisy (https://github.com/bombsimon/wsl/issues/90)\n\nissues:\n  max-same-issues: 25\n  uniq-by-line: false\n\n# TODO: enable this when we have coverage on docstring comments\n#  # The list of ids of default excludes to include or disable.\n#  include:\n#    - EXC0002 # disable excluding of issues about comments from golint\n\nformatters:\n  enable:\n    - gofmt\n    - goimports\n  exclusions:\n    generated: lax\n    paths:\n      - third_party$\n      - builtin$\n      - examples$\n"
  },
  {
    "path": ".goreleaser.yaml",
    "content": "version: 2\nproject_name: syft\n\nrelease:\n  prerelease: auto\n  draft: false\n\nenv:\n  - DOCKER_CLI_EXPERIMENTAL=enabled\n  - CGO_ENABLED=0\n\nbuilds:\n  - id: linux-build\n    dir: ./cmd/syft\n    binary: syft\n    goos: [linux]\n    goarch: [amd64, arm64, ppc64le, s390x]\n    mod_timestamp: &build-timestamp '{{ .CommitTimestamp }}'\n    ldflags: &build-ldflags |\n      -w\n      -s\n      -extldflags '-static'\n      -X main.version={{.Version}}\n      -X main.gitCommit={{.Commit}}\n      -X main.buildDate={{.Date}}\n      -X main.gitDescription={{.Summary}}\n\n  - id: darwin-build\n    dir: ./cmd/syft\n    binary: syft\n    goos: [darwin]\n    goarch: [amd64, arm64]\n    mod_timestamp: *build-timestamp\n    ldflags: *build-ldflags\n    hooks:\n      post:\n        - cmd: .tool/quill sign-and-notarize \"{{ .Path }}\" --dry-run={{ .IsSnapshot }} --ad-hoc={{ .IsSnapshot }} -vv\n          env:\n            - QUILL_LOG_FILE=/tmp/quill-{{ .Target }}.log\n\n  - id: windows-build\n    dir: ./cmd/syft\n    binary: syft\n    goos: [windows]\n    goarch: [amd64, arm64]\n    mod_timestamp: *build-timestamp\n    ldflags: *build-ldflags\n\narchives:\n  - id: linux-archives\n    ids: [linux-build]\n  - id: darwin-archives\n    ids: [darwin-build]\n  - id: windows-archives\n    formats:\n      - zip\n    ids: [windows-build]\n\nnfpms:\n  - license: \"Apache 2.0\"\n    maintainer: \"Anchore, Inc\"\n    homepage: &website \"https://github.com/anchore/syft\"\n    description: &description \"A tool that generates a Software Bill Of Materials (SBOM) from container images and filesystems\"\n    formats: [rpm, deb]\n\nbrews:\n  - repository:\n      owner: anchore\n      name: homebrew-syft\n      token: \"{{.Env.GITHUB_BREW_TOKEN}}\"\n    ids: [darwin-archives, linux-archives]\n    homepage: *website\n    description: *description\n    license: \"Apache License 2.0\"\n\ndockers:\n  # production images...\n  - image_templates:\n      - anchore/syft:{{.Tag}}-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-amd64\n    goarch: amd64\n    dockerfile: Dockerfile\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/amd64\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-arm64v8\n    goarch: arm64\n    dockerfile: Dockerfile\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/arm64/v8\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-ppc64le\n    goarch: ppc64le\n    dockerfile: Dockerfile\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/ppc64le\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-s390x\n      - ghcr.io/anchore/syft:{{.Tag}}-s390x\n    goarch: s390x\n    dockerfile: Dockerfile\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/s390x\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  # nonroot images...\n  - image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-amd64\n    goarch: amd64\n    dockerfile: Dockerfile.nonroot\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/amd64\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-arm64v8\n    goarch: arm64\n    dockerfile: Dockerfile.nonroot\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/arm64/v8\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-ppc64le\n    goarch: ppc64le\n    dockerfile: Dockerfile.nonroot\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/ppc64le\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-s390x\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-s390x\n    goarch: s390x\n    dockerfile: Dockerfile.nonroot\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/s390x\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  # debug images...\n  - image_templates:\n      - anchore/syft:{{.Tag}}-debug-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-amd64\n    goarch: amd64\n    dockerfile: Dockerfile.debug\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/amd64\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-debug-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-arm64v8\n    goarch: arm64\n    dockerfile: Dockerfile.debug\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/arm64/v8\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-debug-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-ppc64le\n    goarch: ppc64le\n    dockerfile: Dockerfile.debug\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/ppc64le\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\n  - image_templates:\n      - anchore/syft:{{.Tag}}-debug-s390x\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-s390x\n    goarch: s390x\n    dockerfile: Dockerfile.debug\n    use: buildx\n    build_flag_templates:\n      - \"--platform=linux/s390x\"\n      - \"--build-arg=BUILD_DATE={{.Date}}\"\n      - \"--build-arg=BUILD_VERSION={{.Version}}\"\n      - \"--build-arg=VCS_REF={{.FullCommit}}\"\n      - \"--build-arg=VCS_URL={{.GitURL}}\"\n\ndocker_manifests:\n  - name_template: anchore/syft:latest\n    image_templates:\n      - anchore/syft:{{.Tag}}-amd64\n      - anchore/syft:{{.Tag}}-arm64v8\n      - anchore/syft:{{.Tag}}-ppc64le\n      - anchore/syft:{{.Tag}}-s390x\n\n  - name_template: ghcr.io/anchore/syft:latest\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-s390x\n\n  - name_template: anchore/syft:{{.Tag}}\n    image_templates:\n      - anchore/syft:{{.Tag}}-amd64\n      - anchore/syft:{{.Tag}}-arm64v8\n      - anchore/syft:{{.Tag}}-ppc64le\n      - anchore/syft:{{.Tag}}-s390x\n\n  - name_template: ghcr.io/anchore/syft:{{.Tag}}\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-s390x\n\n  # nonroot images...\n  - name_template: anchore/syft:nonroot\n    image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-amd64\n      - anchore/syft:{{.Tag}}-nonroot-arm64v8\n      - anchore/syft:{{.Tag}}-nonroot-ppc64le\n      - anchore/syft:{{.Tag}}-nonroot-s390x\n\n  - name_template: ghcr.io/anchore/syft:nonroot\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-s390x\n\n  - name_template: anchore/syft:{{.Tag}}-nonroot\n    image_templates:\n      - anchore/syft:{{.Tag}}-nonroot-amd64\n      - anchore/syft:{{.Tag}}-nonroot-arm64v8\n      - anchore/syft:{{.Tag}}-nonroot-ppc64le\n      - anchore/syft:{{.Tag}}-nonroot-s390x\n\n  - name_template: ghcr.io/anchore/syft:{{.Tag}}-nonroot\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-nonroot-s390x\n\n  # debug images...\n  - name_template: anchore/syft:debug\n    image_templates:\n      - anchore/syft:{{.Tag}}-debug-amd64\n      - anchore/syft:{{.Tag}}-debug-arm64v8\n      - anchore/syft:{{.Tag}}-debug-ppc64le\n      - anchore/syft:{{.Tag}}-debug-s390x\n\n  - name_template: ghcr.io/anchore/syft:debug\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-s390x\n\n  - name_template: anchore/syft:{{.Tag}}-debug\n    image_templates:\n      - anchore/syft:{{.Tag}}-debug-amd64\n      - anchore/syft:{{.Tag}}-debug-arm64v8\n      - anchore/syft:{{.Tag}}-debug-ppc64le\n      - anchore/syft:{{.Tag}}-debug-s390x\n\n  - name_template: ghcr.io/anchore/syft:{{.Tag}}-debug\n    image_templates:\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-amd64\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-arm64v8\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-ppc64le\n      - ghcr.io/anchore/syft:{{.Tag}}-debug-s390x\n\nsboms:\n  - artifacts: archive\n    cmd: ../.tool/syft\n    documents:\n      - \"{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}.sbom\"\n    args:\n      - \"scan\"\n      - \"$artifact\"\n      - \"--output\"\n      - \"json=$document\"\n\nsigns:\n  - cmd: .tool/cosign\n    signature: \"${artifact}.sig\"\n    certificate: \"${artifact}.pem\"\n    args:\n      - \"sign-blob\"\n      - \"--use-signing-config=false\"\n      - \"--oidc-issuer=https://token.actions.githubusercontent.com\"\n      - \"--output-certificate=${certificate}\"\n      - \"--output-signature=${signature}\"\n      - \"${artifact}\"\n      - \"--yes\"\n    artifacts: checksum\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\n\nAll contributors for any Anchore project must follow the [Contributor Covenant Code of Conduct](https://oss.anchore.com/docs/contributing/code-of-conduct/).\n\n**TLDR:** Be kind, be respectful, and assume good intentions. We're all here to build great software together.\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThank you for your interest in contributing to Syft!\n\nPlease see the [contribution guide](https://oss.anchore.com/docs/contributing/syft/) for development requirements and helpful tips to get started developing in the repo. For a deeper dive, please see the [architecture docs](https://oss.anchore.com/docs/architecture/syft/).\n\n**Have a question or need help?** Check out our [issues and discussions guide](https://oss.anchore.com/docs/contributing/issues-and-discussions/) to find the right place to start a conversation.\n\n**Ready to submit code?** Our [pull request guide](https://oss.anchore.com/docs/contributing/pull-requests/) covers everything from title conventions to the review process. Don't forget that ***all commits require a [sign-off](https://oss.anchore.com/docs/contributing/sign-off/)***.\n\n**Found a security issue?** Please do **not** open a public issue. Instead, see our [security policy](https://oss.anchore.com/docs/contributing/security/) for how to report vulnerabilities responsibly.\n\n**Want to help improve the docs?** Check out the [anchore/oss-docs](https://github.com/anchore/oss-docs) repository.\n"
  },
  {
    "path": "CONTRIBUTORS.md",
    "content": "# Syft Contributors\n\nThe following Syft components were contributed by external authors/organizations.\n\n## GraalVM Native Image\n\nA cataloger contributed by Oracle Corporation that extracts packages given within GraalVM Native Image SBOMs.\n\n## Swift Package Manager\n\nA cataloger contributed by Axis Communications that catalogs packages resolved by Swift Package Manager.\n\n## Bitnami Packages\n\nA cataloger contributed by Bitnami developer that catalogs packages described in Bitnami SBOMs.\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM gcr.io/distroless/static-debian12:latest AS build\n\nFROM scratch\n# needed for version check HTTPS request\nCOPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt\n\n# create the /tmp dir, which is needed for image content cache\nWORKDIR /tmp\n\nCOPY syft /\n\nARG BUILD_DATE\nARG BUILD_VERSION\nARG VCS_REF\nARG VCS_URL\n\nLABEL org.opencontainers.image.created=$BUILD_DATE\nLABEL org.opencontainers.image.title=\"syft\"\nLABEL org.opencontainers.image.description=\"CLI tool and library for generating a Software Bill of Materials from container images and filesystems\"\nLABEL org.opencontainers.image.source=$VCS_URL\nLABEL org.opencontainers.image.revision=$VCS_REF\nLABEL org.opencontainers.image.vendor=\"Anchore, Inc.\"\nLABEL org.opencontainers.image.version=$BUILD_VERSION\nLABEL org.opencontainers.image.licenses=\"Apache-2.0\"\nLABEL io.artifacthub.package.readme-url=\"https://raw.githubusercontent.com/anchore/syft/main/README.md\"\nLABEL io.artifacthub.package.logo-url=\"https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png\"\nLABEL io.artifacthub.package.license=\"Apache-2.0\"\n\nENTRYPOINT [\"/syft\"]\n"
  },
  {
    "path": "Dockerfile.debug",
    "content": "FROM gcr.io/distroless/static-debian12:debug-nonroot\n\n# create the /tmp dir, which is needed for image content cache\nWORKDIR /tmp\n\nCOPY syft /\n\nUSER nonroot\n\nARG BUILD_DATE\nARG BUILD_VERSION\nARG VCS_REF\nARG VCS_URL\n\nLABEL org.opencontainers.image.created=$BUILD_DATE\nLABEL org.opencontainers.image.title=\"syft\"\nLABEL org.opencontainers.image.description=\"CLI tool and library for generating a Software Bill of Materials from container images and filesystems\"\nLABEL org.opencontainers.image.source=$VCS_URL\nLABEL org.opencontainers.image.revision=$VCS_REF\nLABEL org.opencontainers.image.vendor=\"Anchore, Inc.\"\nLABEL org.opencontainers.image.version=$BUILD_VERSION\nLABEL org.opencontainers.image.licenses=\"Apache-2.0\"\nLABEL io.artifacthub.package.readme-url=\"https://raw.githubusercontent.com/anchore/syft/main/README.md\"\nLABEL io.artifacthub.package.logo-url=\"https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png\"\nLABEL io.artifacthub.package.license=\"Apache-2.0\"\n\nENTRYPOINT [\"/syft\"]\n"
  },
  {
    "path": "Dockerfile.nonroot",
    "content": "FROM gcr.io/distroless/static-debian12:nonroot\n\n# create the /tmp dir, which is needed for image content cache\nWORKDIR /tmp\n\nCOPY syft /\n\nUSER nonroot\n\nARG BUILD_DATE\nARG BUILD_VERSION\nARG VCS_REF\nARG VCS_URL\n\nLABEL org.opencontainers.image.created=$BUILD_DATE\nLABEL org.opencontainers.image.title=\"syft\"\nLABEL org.opencontainers.image.description=\"CLI tool and library for generating a Software Bill of Materials from container images and filesystems\"\nLABEL org.opencontainers.image.source=$VCS_URL\nLABEL org.opencontainers.image.revision=$VCS_REF\nLABEL org.opencontainers.image.vendor=\"Anchore, Inc.\"\nLABEL org.opencontainers.image.version=$BUILD_VERSION\nLABEL org.opencontainers.image.licenses=\"Apache-2.0\"\nLABEL io.artifacthub.package.readme-url=\"https://raw.githubusercontent.com/anchore/syft/main/README.md\"\nLABEL io.artifacthub.package.logo-url=\"https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png\"\nLABEL io.artifacthub.package.license=\"Apache-2.0\"\n\nENTRYPOINT [\"/syft\"]\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "Makefile",
    "content": "OWNER = anchore\nPROJECT = syft\n\nTOOL_DIR = .tool\nBINNY = $(TOOL_DIR)/binny\nTASK = $(TOOL_DIR)/task\n\n.DEFAULT_GOAL := make-default\n\n## Bootstrapping targets #################################\n\n# note: we need to assume that binny and task have not already been installed\n$(BINNY):\n\t@mkdir -p $(TOOL_DIR)\n\t@curl -sSfL https://get.anchore.io/binny | sh -s -- -b $(TOOL_DIR)\n\n# note: we need to assume that binny and task have not already been installed\n.PHONY: task\n$(TASK) task: $(BINNY)\n\t@$(BINNY) install task -q\n\n.PHONY: ci-bootstrap-go\nci-bootstrap-go:\n\tgo mod download\n\n# this is a bootstrapping catch-all, where if the target doesn't exist, we'll ensure the tools are installed and then try again\n%:\n\t@make --silent $(TASK)\n\t@$(TASK) $@\n\n## Shim targets #################################\n\n.PHONY: make-default\nmake-default: $(TASK)\n\t@# run the default task in the taskfile\n\t@$(TASK)\n\n# for those of us that can't seem to kick the habit of typing `make ...` lets wrap the superior `task` tool\nTASKS := $(shell bash -c \"test -f $(TASK) && NO_COLOR=1 $(TASK) -l | grep '^\\* ' | cut -d' ' -f2 | tr -d ':' | tr '\\n' ' '\" ) $(shell bash -c \"test -f $(TASK) && NO_COLOR=1 $(TASK) -l | grep 'aliases:' | cut -d ':' -f 3 | tr '\\n' ' ' | tr -d ','\")\n\n.PHONY: $(TASKS)\n$(TASKS): $(TASK)\n\t@$(TASK) $@\n\nhelp: $(TASK)\n\t@$(TASK) -l\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n    <img src=\"https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png\" width=\"271\" alt=\"Cute pink owl syft logo\">\n</p>\n\n# Syft\n\n**A CLI tool and Go library for generating a Software Bill of Materials (SBOM) from container images and filesystems. Exceptional for vulnerability detection when used with a scanner like [Grype](https://github.com/anchore/grype).**\n\n<p align=\"center\">\n &nbsp;<a href=\"https://github.com/anchore/syft/actions/workflows/validations.yaml\" target=\"_blank\"><img alt=\"Validations\" src=\"https://github.com/anchore/syft/actions/workflows/validations.yaml/badge.svg\"></a>&nbsp;\n &nbsp;<a href=\"https://goreportcard.com/report/github.com/anchore/syft\" target=\"_blank\"><img alt=\"Go Report Card\" src=\"https://goreportcard.com/badge/github.com/anchore/syft\"></a>&nbsp;\n &nbsp;<a href=\"https://github.com/anchore/syft/releases/latest\" target=\"_blank\"><img alt=\"GitHub release\" src=\"https://img.shields.io/github/release/anchore/syft.svg\"></a>&nbsp;\n &nbsp;<a href=\"https://github.com/anchore/syft\" target=\"_blank\"><img alt=\"GitHub go.mod Go version\" src=\"https://img.shields.io/github/go-mod/go-version/anchore/syft.svg\"></a>&nbsp;\n &nbsp;<a href=\"\" target=\"_blank\"><img alt=\"License: Apache-2.0\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"></a>&nbsp;\n &nbsp;<a href=\"https://anchore.com/discourse\" target=\"_blank\"><img alt=\"Join our Discourse\" src=\"https://img.shields.io/badge/Discourse-Join-blue?logo=discourse\"/></a>&nbsp;\n &nbsp;<a rel=\"me\" href=\"https://fosstodon.org/@syft\"><img alt=\"Follow on Mastodon\" src=\"https://img.shields.io/badge/Mastodon-Follow-blue?logoColor=white&logo=mastodon\"/></a>&nbsp;\n</p>\n\n![syft-demo](https://user-images.githubusercontent.com/590471/90277200-2a253000-de33-11ea-893f-32c219eea11a.gif)\n\n## Features\n\n- Generates SBOMs for **container images**, **filesystems**, **archives** (see the docs for a full list of [supported scan targets](https://oss.anchore.com/docs/guides/sbom/scan-targets/))\n- Supports dozens of packaging ecosystems (e.g. Alpine (apk), Debian (dpkg), RPM, Go, Python, Java, JavaScript, Ruby, Rust, PHP, .NET, and [many more](https://oss.anchore.com/docs/capabilities/all-packages/))\n- Supports OCI, Docker, [Singularity](https://github.com/sylabs/singularity), and [more image formats](https://oss.anchore.com/docs/guides/sbom/scan-targets/)\n- Works seamlessly with [Grype](https://github.com/anchore/grype) for vulnerability scanning\n- Multiple output formats (**CycloneDX**, **SPDX**, **Syft JSON**, and [more](https://oss.anchore.com/docs/guides/sbom/formats/)) including the ability to [convert between SBOM formats](https://oss.anchore.com/docs/guides/sbom/conversion/)\n- Create signed SBOM attestations using the [in-toto specification](https://github.com/in-toto/attestation/blob/main/spec/README.md)\n\n> [!TIP]\n> **New to Syft? Check out the [Getting Started guide](https://oss.anchore.com/docs/guides/sbom/getting-started/) for a walkthrough!**\n\n## Installation\n\nThe quickest way to get up and going:\n```bash\ncurl -sSfL https://get.anchore.io/syft | sudo sh -s -- -b /usr/local/bin\n```\n\n> [!TIP]\n> **See [Installation docs](https://oss.anchore.com/docs/installation/syft/) for more ways to get Syft, including Homebrew, Docker, Scoop, Chocolatey, Nix, and more!**\n\n## The basics\n\nSee the packages within a container image or directory:\n\n```bash\n# container image\nsyft alpine:latest\n\n# directory\nsyft ./my-project\n```\n\nTo get an SBOM, specify one or more output formats:\n\n```bash\n# SBOM to stdout\nsyft <image> -o cyclonedx-json\n\n# Multiple SBOMs to files\nsyft <image> -o spdx-json=./spdx.json -o cyclonedx-json=./cdx.json\n```\n\n\n> [!TIP]\n> **Check out the [Getting Started guide](https://oss.anchore.com/docs/guides/sbom/getting-started/)** to explore all of the capabilities and features.\n>\n> **Want to know all of the ins-and-outs of Syft?** Check out the [CLI docs](https://oss.anchore.com/docs/reference/syft/cli/),  [configuration docs](https://oss.anchore.com/docs/reference/syft/configuration/), and [JSON schema](https://oss.anchore.com/docs/reference/syft/json/latest/).\n\n\n## Contributing\n\nWe encourage users to help make these tools better by [submitting issues](https://github.com/anchore/syft/issues) when you find a bug or want a new feature. \nCheck out our [contributing overview](https://oss.anchore.com/docs/contributing/) and [developer-specific documentation](https://oss.anchore.com/docs/contributing/syft/) if you are interested in providing code contributions.\n\n\n\n<p xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dct=\"http://purl.org/dc/terms/\">\n  Syft development is sponsored by <a href=\"https://anchore.com/\">Anchore</a>, and is released under the <a href=\"https://github.com/anchore/syft?tab=Apache-2.0-1-ov-file\">Apache-2.0 License</a>.\n  The <a property=\"dct:title\" rel=\"cc:attributionURL\" href=\"https://anchore.com/wp-content/uploads/2024/11/syft-logo.svg\">Syft logo</a> by <a rel=\"cc:attributionURL dct:creator\" property=\"cc:attributionName\" href=\"https://anchore.com/\">Anchore</a> is licensed under <a href=\"https://creativecommons.org/licenses/by/4.0/\" target=\"_blank\" rel=\"license noopener noreferrer\" style=\"display:inline-block;\">CC BY 4.0<img style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/cc.svg\" alt=\"\"><img style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/by.svg\" alt=\"\"></a>\n</p>\n\nFor commercial support options with Syft or Grype, please [contact Anchore](https://get.anchore.com/contact/).\n\n## Come talk to us!\n\nThe Syft Team holds regular community meetings online. All are welcome to join to bring topics for discussion.\n- Check the [calendar](https://calendar.google.com/calendar/u/0/r?cid=Y182OTM4dGt0MjRtajI0NnNzOThiaGtnM29qNEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t) for the next meeting date.\n- Add items to the [agenda](https://docs.google.com/document/d/1ZtSAa6fj2a6KRWviTn3WoJm09edvrNUp4Iz_dOjjyY8/edit?usp=sharing) (join [this group](https://groups.google.com/g/anchore-oss-community) for write access to the [agenda](https://docs.google.com/document/d/1ZtSAa6fj2a6KRWviTn3WoJm09edvrNUp4Iz_dOjjyY8/edit?usp=sharing))\n- See you there!\n"
  },
  {
    "path": "RELEASE.md",
    "content": "# Release\n\nA release of syft comprises:\n- a new semver git tag from the current tip of the main branch\n- a new [github release](https://github.com/anchore/syft/releases) with a changelog and archived binary assets\n- docker images published to `ghcr.io` and `dockerhub`, including multi architecture images + manifest\n- [`anchore/homebrew-syft`](https://github.com/anchore/homebrew-syft) tap updated to point to assets in the latest github release\n\nIdeally releasing should be done often with small increments when possible. Unless a\nbreaking change is blocking the release, or no fixes/features have been merged, a good\ntarget release cadence is between every 1 or 2 weeks.\n\n\n## Creating a release\n\nThis release process itself should be as automated as possible, and has only a few steps:\n\n1. **Trigger a new release with `make release`**. At this point you'll see a preview\n  changelog in the terminal. If you're happy with the changelog, press `y` to continue, otherwise\n  you can abort and adjust the labels on the PRs and issues to be included in the release and\n  re-run the release trigger command.\n\n1. A release admin must approve the release on the GitHub Actions [release pipeline](https://github.com/anchore/syft/actions/workflows/release.yaml) run page.\n   Once approved, the release pipeline will generate all assets and publish a GitHub Release.\n\n   \n## Retracting a release\n\nIf a release is found to be problematic, it can be retracted with the following steps:\n\n- Deleting the GitHub Release\n- Untag the docker images in the `ghcr.io` and `docker.io` registries\n- Revert the brew formula in [`anchore/homebrew-syft`](https://github.com/anchore/homebrew-syft) to point to the previous release\n- Add a new `retract` entry in the go.mod for the versioned release\n\n**Note**: do not delete release tags from the git repository since there may already be references to the release\nin the go proxy, which will cause confusion when trying to reuse the tag later (the H1 hash will not match and there\nwill be a warning when users try to pull the new release).\n\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nSecurity updates are applied only to the most recent release, try to always be up to date.\n\n## Reporting a Vulnerability\n\nTo report a security issue, please email\n[security@anchore.com](mailto:security@anchore.com)\nwith a description of the issue, the steps you took to create the issue,\naffected versions, and, if known, mitigations for the issue.\n\nAll support will be made on a best effort basis, so please indicate the \"urgency level\" of the vulnerability as Critical, High, Medium or Low.\n\nFor more details, see our [security policy documentation](https://oss.anchore.com/docs/contributing/security/).\n"
  },
  {
    "path": "Taskfile.yaml",
    "content": "\nversion: \"3\"\n\nincludes:\n  generate:cpe-index: ./task.d/generate/cpe-index.yaml\n\nvars:\n  OWNER: anchore\n  PROJECT: syft\n\n  # v1: when fixtures were located at test-fixtures dirs\n  # v2: migration to testdata dirs\n  CACHE_IMAGE: ghcr.io/{{ .OWNER }}/{{ .PROJECT }}/test-fixture-cache:v2\n\n  # static file dirs\n  TOOL_DIR: .tool\n  TMP_DIR: .tmp\n  ORAS_CACHE: \"{{ .TMP_DIR }}/oras-cache\"\n  CACHE_PATHS_FILE: \"{{ .TMP_DIR }}/cache_paths.json\"\n  LAST_CACHE_PULL_FILE: \"{{ .TMP_DIR }}/last_cache_paths.json\"\n\n  # TOOLS\n  ORAS: \"{{ .TOOL_DIR }}/oras\"\n  YQ: \"{{ .TOOL_DIR }}/yq\"\n  TASK: \"{{ .TOOL_DIR }}/task\"\n\n  # used for changelog generation\n  CHANGELOG: CHANGELOG.md\n  NEXT_VERSION: VERSION\n\n  # used for snapshot builds\n  OS:\n    sh: uname -s | tr '[:upper:]' '[:lower:]'\n  ARCH:\n    sh: |\n      [ \"$(uname -m)\" = \"x86_64\" ] && echo \"amd64_v1\" || { [ \"$(uname -m)\" = \"aarch64\" ] && echo \"arm64_v8.0\" || [ \"$(uname -m)\" = \"arm64\" ] && echo \"arm64_v8.0\" || echo $(uname -m); }\n  PROJECT_ROOT:\n    sh: echo $PWD\n\n  # note: the snapshot dir must be a relative path starting with ./\n  # e.g. when installing snapshot debs from a local path, ./ forces the deb to be installed in the current working directory instead of referencing a package name\n  SNAPSHOT_DIR: ./snapshot\n  SNAPSHOT_BIN: \"{{ .PROJECT_ROOT }}/{{ .SNAPSHOT_DIR }}/{{ .OS }}-build_{{ .OS }}_{{ .ARCH }}/{{ .PROJECT }}\"\n  SNAPSHOT_CMD: \"{{ .TOOL_DIR }}/goreleaser release --config {{ .TMP_DIR }}/goreleaser.yaml --clean --snapshot --skip=publish --skip=sign\"\n  BUILD_CMD:    \"{{ .TOOL_DIR }}/goreleaser build   --config {{ .TMP_DIR }}/goreleaser.yaml --clean --snapshot --single-target\"\n  RELEASE_CMD:  \"{{ .TOOL_DIR }}/goreleaser release --clean --release-notes {{ .CHANGELOG }}\"\n  VERSION:\n    sh: git describe --dirty --always --tags\n\n  # used for install and acceptance testing\n  COMPARE_DIR: ./test/compare\n  COMPARE_TEST_IMAGE: centos:8.2.2004\n\nenv:\n  GNUMAKEFLAGS: '--no-print-directory'\n\ntasks:\n\n  ## High-level tasks #################################\n\n  default:\n    desc: Run all validation tasks\n    aliases:\n      - pr-validations\n      - validations\n    cmds:\n      - task: static-analysis\n      - task: test\n      - task: install-test\n\n  static-analysis:\n    desc: Run all static analysis tasks\n    cmds:\n      - task: check-go-mod-tidy\n      - task: check-licenses\n      - task: lint\n      - task: check-json-schema-drift\n      - task: check-binary-fixture-size\n\n  test:\n    desc: Run all levels of test\n    cmds:\n      - task: unit\n      - task: integration\n      - task: validate-cyclonedx-schema\n      - task: test-utils\n      - task: snapshot\n      - task: cli\n      - task: check-docker-cache\n\n  ## Bootstrap tasks #################################\n\n  binny:\n    internal: true\n    # desc: Get the binny tool\n    generates:\n      - \"{{ .TOOL_DIR }}/binny\"\n    status:\n      - \"test -f {{ .TOOL_DIR }}/binny\"\n    cmd: \"curl -sSfL https://get.anchore.io/binny | sh -s -- -b .tool\"\n    silent: true\n\n  tools:\n    desc: Install all tools needed for CI and local development\n    deps: [binny]\n    aliases:\n      - bootstrap\n    generates:\n      - \".binny.yaml\"\n      - \"{{ .TOOL_DIR }}/*\"\n    status:\n      - \"{{ .TOOL_DIR }}/binny check -v\"\n    cmd: \"{{ .TOOL_DIR }}/binny install -v\"\n    silent: true\n\n  update-tools:\n    desc: Update pinned versions of all tools to their latest available versions\n    deps: [binny]\n    generates:\n      - \".binny.yaml\"\n      - \"{{ .TOOL_DIR }}/*\"\n    cmd: \"{{ .TOOL_DIR }}/binny update -v\"\n    silent: true\n\n  list-tools:\n    desc: List all tools needed for CI and local development\n    deps: [binny]\n    cmd: \"{{ .TOOL_DIR }}/binny list\"\n    silent: true\n\n  list-tool-updates:\n    desc: List all tools that are not up to date relative to the binny config\n    deps: [binny]\n    cmd: \"{{ .TOOL_DIR }}/binny list --updates\"\n    silent: true\n\n  tmpdir:\n    silent: true\n    generates:\n      - \"{{ .TMP_DIR }}\"\n    cmd: \"mkdir -p {{ .TMP_DIR }}\"\n\n  ## Static analysis tasks #################################\n\n  format:\n    desc: Auto-format all source code\n    deps: [tools]\n    cmds:\n      - gofmt -w -s .\n      - \"{{ .TOOL_DIR }}/gosimports -local github.com/anchore -w .\"\n      - go mod tidy\n\n  lint-fix:\n    desc: Auto-format all source code + run golangci lint fixers\n    deps: [tools]\n    cmds:\n      - task: format\n      - \"{{ .TOOL_DIR }}/golangci-lint run --tests=false --fix\"\n\n  lint:\n    desc: Run gofmt + golangci lint checks\n    vars:\n      BAD_FMT_FILES:\n        sh: gofmt -l -s .\n      BAD_FILE_NAMES:\n        sh: \"find . | grep -e ':' || true\"\n    deps: [tools]\n    cmds:\n      # ensure there are no go fmt differences\n      - cmd: 'test -z \"{{ .BAD_FMT_FILES }}\" || (echo \"files with gofmt issues: [{{ .BAD_FMT_FILES }}]\"; exit 1)'\n        silent: true\n      # ensure there are no files with \":\" in it (a known back case in the go ecosystem)\n      - cmd: 'test -z \"{{ .BAD_FILE_NAMES }}\" || (echo \"files with bad names: [{{ .BAD_FILE_NAMES }}]\"; exit 1)'\n        silent: true\n      # run linting\n      - \"{{ .TOOL_DIR }}/golangci-lint run --tests=false\"\n\n\n  check-licenses:\n    # desc: Ensure transitive dependencies are compliant with the current license policy\n    deps: [tools]\n    cmd: \"{{ .TOOL_DIR }}/bouncer check ./...\"\n\n  check-go-mod-tidy:\n    # desc: Ensure go.mod and go.sum are up to date\n    cmds:\n      - cmd: .github/scripts/go-mod-tidy-check.sh && echo \"go.mod and go.sum are tidy!\"\n        silent: true\n\n  check-json-schema-drift:\n    desc: Ensure there is no drift between the JSON schema and the code\n    cmds:\n      - .github/scripts/json-schema-drift-check.sh\n\n  check-capability-drift:\n    desc: Ensure there is no drift between the capabilities data and the code\n    cmds:\n      - .github/scripts/capability-drift-check.sh\n\n  check-binary-fixture-size:\n    desc: Ensure that the binary test fixtures are not too large\n    cmds:\n      - .github/scripts/check_binary_fixture_size.sh syft/pkg/cataloger/binary/testdata/classifiers/snippets\n\n\n  ## Testing tasks #################################\n  update-format-golden-files:\n    desc: \"Update golden (i.e. snapshot) files used by unit tests\"\n    cmds:\n      - go test ./syft/format/spdxjson -update-spdx-json\n      - go test ./syft/format/spdxtagvalue -update-spdx-tv\n      - go test ./syft/format/cyclonedxxml -update-cyclonedx-xml\n      - go test ./syft/format/cyclonedxjson -update-cyclonedx-json\n      - go test ./syft/format/syftjson -update-json\n\n  unit:\n    desc: Run unit tests\n    deps:\n      - tmpdir\n      - fixtures\n    vars:\n      TEST_PKGS:\n        sh: \"go list ./... | grep -v {{ .OWNER }}/{{ .PROJECT }}/test | grep -v {{ .OWNER }}/{{ .PROJECT }}/cmd/syft/internal/test | tr '\\n' ' '\"\n\n      # unit test coverage threshold (in % coverage)\n      COVERAGE_THRESHOLD: 62\n    cmds:\n      - task: clean-test-observations\n      - \"go test -coverprofile {{ .TMP_DIR }}/unit-coverage-details.txt {{ .TEST_PKGS }}\"\n      - cmd: \".github/scripts/coverage.py {{ .COVERAGE_THRESHOLD }} {{ .TMP_DIR }}/unit-coverage-details.txt\"\n        silent: true\n\n  integration:\n    desc: Run integration tests\n    cmds:\n      - \"go test -v ./cmd/syft/internal/test/integration\"\n      # exercise most of the CLI with the data race detector\n      # we use a larger image to ensure we're using multiple catalogers at a time\n      - \"go run -race cmd/syft/main.go anchore/test_images:grype-quality-dotnet-69f15d2\"\n\n  validate-cyclonedx-schema:\n    desc: Validate that Syft produces valid CycloneDX documents\n    cmds:\n      - \"cd schema/cyclonedx && make\"\n\n  cli:\n    desc: Run CLI tests\n    deps: [tools]\n    cmds:\n      - cmd: \"echo 'testing binary: {{ .SNAPSHOT_BIN }}'\"\n        silent: true\n      - cmd: \"test -f {{ .SNAPSHOT_BIN }} || (find {{ .SNAPSHOT_DIR }} && echo '\\nno snapshot found for {{ .SNAPSHOT_BIN }}' && false)\"\n        silent: true\n\n      - \"go test -count=1 -timeout=15m -v ./test/cli\"\n    env:\n      SYFT_BINARY_LOCATION: \"{{ .SNAPSHOT_BIN }}\"\n\n  test-utils:\n    desc: Run tests for pipeline utils\n    cmds:\n      - cmd: .github/scripts/labeler_test.py\n\n\n  ## Test-fixture-related targets #################################\n\n  fingerprints:\n    desc: Generate fingerprints for all non-docker test fixture\n    silent: true\n    # this will look for `testdata/Makefile` and invoke the `fingerprint` target to calculate all cache input fingerprint files\n    generates:\n      - '**/testdata/**/*.fingerprint'\n      - test/install/cache.fingerprint\n    cmds:\n      - |\n        BOLD='\\033[1m'\n        YELLOW='\\033[0;33m'\n        RESET='\\033[0m'\n\n        echo -e \"${YELLOW}creating fingerprint files for non-docker fixtures...${RESET}\"\n        for dir in $(find . -type d -name 'testdata'); do\n          if [ -f \"$dir/Makefile\" ]; then\n            # for debugging...\n            #echo -e \"${YELLOW}• calculating fingerprints in $dir... ${RESET}\"\n\n            (make -C \"$dir\" fingerprint)\n          fi\n        done\n\n        # for debugging...\n        # echo -e \"generated all fixture fingerprints\"\n\n      - .github/scripts/fingerprint_docker_fixtures.py\n      - |\n        # if DOWNLOAD_TEST_FIXTURE_CACHE is set to 'false', then we don't need to calculate the fingerprint for the cache\n        if [ \"$DOWNLOAD_TEST_FIXTURE_CACHE\" = \"false\" ]; then\n          exit 0\n        fi\n        .github/scripts/find_cache_paths.py {{ .CACHE_PATHS_FILE }} > /dev/null\n\n\n  refresh-fixtures:\n    desc: Clear and fetch all test fixture cache\n    aliases:\n      - fixtures\n    silent: true\n    deps:\n      - tools\n    cmds:\n      - |\n        BOLD='\\033[1m'\n        PURPLE='\\033[0;35m'\n        RESET='\\033[0m'\n\n        # if DOWNLOAD_TEST_FIXTURE_CACHE is set to 'false', then skip the cache download and always build\n        if [ \"$DOWNLOAD_TEST_FIXTURE_CACHE\" = \"false\" ]; then\n            echo -e \"${BOLD}${PURPLE}skipping cache download, rebuilding cache...${RESET}\"\n            {{ .TASK }} build-fixtures\n            exit 0\n        fi\n\n        LATEST_FINGERPRINT=$(docker manifest inspect {{ .CACHE_IMAGE }} | {{ .YQ }} -r '.annotations.fingerprint')\n\n        echo \"latest cache:      $LATEST_FINGERPRINT\"\n\n        if [ -f {{ .LAST_CACHE_PULL_FILE }} ]; then\n          LAST_PULL_FINGERPRINT=$(cat {{ .LAST_CACHE_PULL_FILE }} | {{ .YQ }} -r '.digest')\n        else\n          echo -e \"${BOLD}${PURPLE}empty cache, downloading cache...${RESET}\"\n          {{ .TASK }} download-test-fixture-cache\n          exit 0\n        fi\n\n        {{ .TASK }} fingerprints\n\n        WANT_FINGERPRINT=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest')\n\n        echo \"desired cache:     $WANT_FINGERPRINT\"\n        echo \"last pulled cache: $LAST_PULL_FINGERPRINT\"\n\n        # if we already have the latest cache, skip the refresh\n        if [ \"$LAST_PULL_FINGERPRINT\" = \"$WANT_FINGERPRINT\" ]; then\n            echo -e \"${BOLD}${PURPLE}already have the latest cache (skipping cache download)${RESET}\"\n            exit 0\n        fi\n\n        # at this point we only refresh the cache if we want the same cache that is currently available.\n        # we don't by default refresh the cache if the cache if it is simply different from what we have,\n        # because we may be working on a code change that doesn't require a cache refresh (but could trigger one,\n        # which would be annoying to deal with in a development workflow).\n\n        if [ \"$LATEST_FINGERPRINT\" = \"$WANT_FINGERPRINT\" ]; then\n          echo -e \"${BOLD}${PURPLE}found newer cache! downloading cache...${RESET}\"\n          {{ .TASK }} download-test-fixture-cache\n        else\n          echo -e \"${BOLD}${PURPLE}found different cache, but isn't clear if it's newer (skipping cache download and manually building)${RESET}\"\n\n          {{ .YQ }} eval '.paths[] | \"\\(.digest) \\(.path)\"' {{ .LAST_CACHE_PULL_FILE }} > .tmp/last_cache_lines\n          {{ .YQ }} eval '.paths[] | \"\\(.digest) \\(.path)\"' {{ .CACHE_PATHS_FILE }} > .tmp/cache_lines\n          diff .tmp/last_cache_lines .tmp/cache_lines || true\n\n          echo -e \"${BOLD}${PURPLE}diff with more context...${RESET}\"\n\n          diff -U10000 {{ .LAST_CACHE_PULL_FILE }} {{ .CACHE_PATHS_FILE }} || true\n\n          echo -e \"${BOLD}${PURPLE}detected changes to input material, manually building fixtures...${RESET}\"\n\n          {{ .TASK }} build-fixtures\n        fi\n\n  build-fixtures:\n    desc: Generate all non-docker test fixtures\n    silent: true\n    # this will look for `testdata/Makefile` and invoke the `fixtures` target to generate any and all test fixtures\n    cmds:\n      - |\n        # we want to stop on the first build error\n        set -e\n\n        BOLD='\\033[1m'\n        YELLOW='\\033[0;33m'\n        RESET='\\033[0m'\n\n        # Use a for loop with command substitution to avoid subshell issues\n        for dir in $(find . -type d -name 'testdata'); do\n          if [ -f \"$dir/Makefile\" ]; then\n            echo -e \"${YELLOW}${BOLD}generating fixtures in $dir${RESET}\"\n            make -C \"$dir\" fixtures\n          fi\n        done\n        echo -e \"${BOLD}generated all fixtures${RESET}\"\n\n  download-test-fixture-cache:\n    desc: Download test fixture cache from ghcr.io\n    deps: [tools, clean-cache]\n    vars:\n      CACHE_DIGEST:\n        sh: docker manifest inspect {{ .CACHE_IMAGE }} | {{ .YQ }} -r '.annotations.fingerprint'\n    cmds:\n      - silent: true\n        cmd: |\n          # if oras cache is > 4 GB, delete it\n          if [ -d {{ .ORAS_CACHE }} ]; then\n            total_size=$(du -c {{ .ORAS_CACHE }} | grep total | awk '{print $1}')\n            if [ \"$total_size\" -gt 4194304 ]; then\n              echo 'deleting oras cache'\n              rm -rf {{ .ORAS_CACHE }}\n            fi\n          fi\n      - \"ORAS_CACHE={{ .ORAS_CACHE }} {{ .ORAS }} pull {{ .CACHE_IMAGE }}\"\n      - \"cp {{ .CACHE_PATHS_FILE }} {{ .LAST_CACHE_PULL_FILE }}\"\n\n  upload-test-fixture-cache:\n    desc: Upload the test fixture cache to ghcr.io\n    deps: [tools, fingerprints]\n    silent: true\n    cmd: |\n      set -eu\n      oras_command=\"{{ .ORAS }} push {{ .CACHE_IMAGE }}\"\n\n      paths=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.paths[].path')\n      for path in $paths; do\n        oras_command+=\" $path\"\n      done\n      oras_command+=\" {{ .CACHE_PATHS_FILE }}\"\n\n      oras_command+=\" --annotation org.opencontainers.image.source=https://github.com/{{ .OWNER }}/{{ .PROJECT }}\"\n      oras_command+=\" --annotation fingerprint=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest')\"\n\n      echo \"Executing: $oras_command\"\n      eval $oras_command\n\n  show-test-image-cache:\n    silent: true\n    cmds:\n      - \"echo 'Docker daemon cache:'\"\n      - \"docker images --format '{{`{{.ID}}`}} {{`{{.Repository}}`}}:{{`{{.Tag}}`}}' | grep stereoscope-fixture- | sort\"\n      - \"echo '\\nTar cache:'\"\n      - 'find . -type f -wholename \"**/testdata/cache/stereoscope-fixture-*.tar\" | sort'\n\n  check-docker-cache:\n    desc: Ensure docker caches aren't using too much disk space\n    silent: true\n    cmd: |\n      total_size=$(find . | grep cache | grep tar | xargs du -c | grep total | awk '{print $1}')\n      find . | grep cache | grep tar | xargs du\n      echo \"total $total_size KB\"\n\n      if [ \"$total_size\" -gt 5242880  ]; then\n        echo 'docker cache is larger than 5GB'\n        exit 1\n      fi\n\n  ## install.sh testing targets #################################\n\n  install-test:\n    cmds:\n      - \"cd test/install && make\"\n\n  install-test-cache-save:\n    cmds:\n      - \"cd test/install && make save\"\n\n  install-test-cache-load:\n    cmds:\n      - \"cd test/install && make load\"\n\n  install-test-ci-mac:\n    cmds:\n      - \"cd test/install && make ci-test-mac\"\n\n  generate-compare-file:\n    cmd: \"go run ./cmd/syft {{ .COMPARE_TEST_IMAGE }} -o json > {{ .COMPARE_DIR }}/testdata/acceptance-{{ .COMPARE_TEST_IMAGE }}.json\"\n\n  compare-mac:\n    deps: [tmpdir]\n    cmd: |\n      {{ .COMPARE_DIR }}/mac.sh \\\n        {{ .SNAPSHOT_DIR }} \\\n        {{ .COMPARE_DIR }} \\\n        {{ .COMPARE_TEST_IMAGE }} \\\n        {{ .TMP_DIR }}\n\n  compare-linux:\n    cmds:\n      - task: compare-test-deb-package-install\n      - task: compare-test-rpm-package-install\n\n  compare-test-deb-package-install:\n    deps: [tmpdir]\n    cmd: |\n      {{ .COMPARE_DIR }}/deb.sh \\\n        {{ .SNAPSHOT_DIR }} \\\n        {{ .COMPARE_DIR }} \\\n        {{ .COMPARE_TEST_IMAGE }} \\\n        {{ .TMP_DIR }}\n\n  compare-test-rpm-package-install:\n    deps: [tmpdir]\n    cmd: |\n      {{ .COMPARE_DIR }}/rpm.sh \\\n        {{ .SNAPSHOT_DIR }} \\\n        {{ .COMPARE_DIR }} \\\n        {{ .COMPARE_TEST_IMAGE }} \\\n        {{ .TMP_DIR }}\n\n\n  ## Code and data generation targets #################################\n\n  generate:\n    desc: Add data generation tasks\n    cmds:\n      - task: generate-json-schema\n      - task: generate-capabilities\n      - task: generate-license-list\n      - task: generate-cpe-dictionary-index\n\n  generate-json-schema:\n    desc: Generate a new JSON schema\n    cmds:\n      - \"cd ./internal && go generate . && cd ./jsonschema && go run . && go fmt ../...\"\n\n  generate-license-list:\n    desc: Generate an updated license processing code off of the latest available SPDX license list\n    cmds:\n      - \"go generate ./internal/spdxlicense/...\"\n      - \"gofmt -s -w ./internal/spdxlicense\"\n\n  generate-cpe-dictionary-index:\n    desc: Generate the CPE index from local cache\n    cmds:\n      - task: generate:cpe-index:cache:pull\n      - task: generate:cpe-index:cache:update\n      - task: generate:cpe-index:build\n\n  generate-capabilities:\n    desc: Generate the capabilities data file\n    deps:\n      - tmpdir\n      - fixtures\n    vars:\n      # set REFRESH=true to run package tests first and refresh test observations (default: true)\n      REFRESH: '{{ .REFRESH | default \"true\" }}'\n    cmds:\n      # remove all test observations prior to regenerating\n      - task: clean-test-observations\n        if: '{{ eq .REFRESH \"true\" }}'\n      # this is required to update test observations; such evidence is used to update the packages/*.yaml\n      - cmd: \"go test ./syft/pkg/... -count=1\"\n        if: '{{ eq .REFRESH \"true\" }}'\n      - \"go generate ./internal/capabilities/...\"\n      - \"gofmt -s -w ./internal/capabilities\"\n      # now that we have the latest capabilities, run completeness tests to ensure this is self-consistent\n      # note: -p 1 forces sequential package execution to avoid race between generate (writes) and internal (reads)\n      - \"SYFT_ENABLE_COMPLETENESS_TESTS=true go test -p 1 ./internal/capabilities/... -count=1\"\n\n\n  ## Build-related targets #################################\n\n  build:\n    desc: Build the project\n    deps: [tools, tmpdir]\n    generates:\n      - \"{{ .PROJECT }}\"\n    cmds:\n      - silent: true\n        cmd: |\n          echo \"dist: {{ .SNAPSHOT_DIR }}\" > {{ .TMP_DIR }}/goreleaser.yaml\n          cat .goreleaser.yaml >> {{ .TMP_DIR }}/goreleaser.yaml\n\n      - \"{{ .BUILD_CMD }}\"\n\n  snapshot:\n    desc: Create a snapshot release\n    aliases:\n      - build\n    deps: [tools, tmpdir]\n    sources:\n      - cmd/**/*.go\n      - syft/**/*.go\n      - internal/**/*.go\n    method: checksum\n    generates:\n      - \"{{ .SNAPSHOT_BIN }}\"\n    cmds:\n      - silent: true\n        cmd: |\n          echo \"dist: {{ .SNAPSHOT_DIR }}\" > {{ .TMP_DIR }}/goreleaser.yaml\n          cat .goreleaser.yaml >> {{ .TMP_DIR }}/goreleaser.yaml\n\n      - \"{{ .SNAPSHOT_CMD }}\"\n\n  snapshot-smoke-test:\n    desc: Run a smoke test on the snapshot builds + docker images\n    cmds:\n      - cmd: \"echo 'testing snapshot binary: {{ .SNAPSHOT_BIN }}'\"\n        silent: true\n      - cmd: \"test -f {{ .SNAPSHOT_BIN }} || (find {{ .SNAPSHOT_DIR }} && echo '\\nno snapshot found for {{ .SNAPSHOT_BIN }}' && false)\"\n        silent: true\n      - \"{{ .SNAPSHOT_BIN }} version\"\n      - \"{{ .SNAPSHOT_BIN }} scan alpine:latest\"\n      - docker run --rm anchore/syft:latest version\n      - docker run --rm anchore/syft:latest scan alpine:latest\n\n  changelog:\n    desc: Generate a changelog\n    deps: [tools]\n    generates:\n      - \"{{ .CHANGELOG }}\"\n      - \"{{ .NEXT_VERSION }}\"\n    cmds:\n      - \"{{ .TOOL_DIR }}/chronicle -vv -n --version-file {{ .NEXT_VERSION }} > {{ .CHANGELOG }}\"\n      - \"{{ .TOOL_DIR }}/glow -w 0 {{ .CHANGELOG }}\"\n\n\n  ## Release targets #################################\n\n  release:\n    desc: Create a release\n    interactive: true\n    deps: [tools]\n    cmds:\n      - cmd: .github/scripts/trigger-release.sh\n        silent: true\n\n\n  ## CI-only targets #################################\n\n  ci-check:\n    # desc: \"[CI only] Are you in CI?\"\n    cmds:\n      - cmd: .github/scripts/ci-check.sh\n        silent: true\n\n  ci-release:\n    # desc: \"[CI only] Create a release\"\n    deps: [tools]\n    cmds:\n      - task: ci-check\n      - \"{{ .TOOL_DIR }}/chronicle -vvv > CHANGELOG.md\"\n      - cmd: \"cat CHANGELOG.md\"\n        silent: true\n      - \"{{ .RELEASE_CMD }}\"\n\n\n  ## Cleanup targets #################################\n\n  clean:\n    desc: Remove all cache files and old builds\n    cmds:\n      - task: clean-snapshot\n      - task: clean-cache\n      - task: clean-test-observations\n      - task: clean-docker-cache\n      - task: clean-oras-cache\n\n  clean-snapshot:\n    desc: Remove any snapshot builds\n    cmds:\n      - \"rm -rf {{ .SNAPSHOT_DIR }}\"\n      - \"rm -rf {{ .TMP_DIR }}/goreleaser.yaml\"\n\n  clean-docker-cache:\n    desc: Remove all docker cache tars and images from the daemon\n    cmds:\n      - find . -type d -wholename \"**/testdata/cache\" | xargs rm -rf\n      - docker images --format '{{`{{.ID}}`}} {{`{{.Repository}}`}}' | grep stereoscope-fixture- | awk '{print $1}' | uniq | xargs -r docker rmi --force\n\n  clean-oras-cache:\n    desc: Remove all cache for oras commands\n    cmd: rm -rf {{ .ORAS_CACHE }}\n\n  clean-cache:\n    desc: Remove all image docker tar cache, images from the docker daemon, and ephemeral test fixtures\n    cmds:\n      - task: clean-docker-cache\n      - |\n        BOLD='\\033[1m'\n        YELLOW='\\033[0;33m'\n        RESET='\\033[0m'\n\n        # Use a for loop with command substitution to avoid subshell issues\n        for dir in $(find . -type d -name 'testdata'); do\n        if [ -f \"$dir/Makefile\" ]; then\n          echo -e \"${YELLOW}${BOLD}deleting ephemeral test fixtures in $dir${RESET}\"\n          (make -C \"$dir\" clean)\n        fi\n        done\n        echo -e \"${BOLD}Deleted all ephemeral test fixtures${RESET}\"\n      - rm -f {{ .LAST_CACHE_PULL_FILE }} {{ .CACHE_PATHS_FILE }}\n\n  clean-test-observations:\n    desc: Remove all test observations (i.e. testdata/test-observations.json)\n    cmds:\n      - find . -type f -wholename \"**/testdata/test-observations.json\" | xargs rm -f\n"
  },
  {
    "path": "artifacthub-repo.yml",
    "content": "# See documentation here: https://github.com/artifacthub/hub/blob/v1.6.0/docs/metadata/artifacthub-repo.yml\nrepositoryID: eced152f-b15d-4879-8b3b-1175397192ba\nowners:\n  - name: wagoodman\n    email: wagoodman@gmail.com\n"
  },
  {
    "path": "cmd/syft/cli/cli.go",
    "content": "package cli\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\tcranecmd \"github.com/google/go-containerregistry/cmd/crane/cmd\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal\"\n\t\"github.com/anchore/syft/cmd/syft/internal/commands\"\n\tconstants \"github.com/anchore/syft/internal\"\n)\n\n// Application constructs the `syft packages` command and aliases the root command to `syft packages`.\n// It is also responsible for organizing flag usage and injecting the application config for each command.\n// It also constructs the syft attest command and the syft version command.\n// `RunE` is the earliest that the complete application configuration can be loaded.\nfunc Application(id clio.Identification) clio.Application {\n\tapp, _ := create(id, os.Stdout)\n\treturn app\n}\n\n// Command returns the root command for the syft CLI application. This is useful for embedding the entire syft CLI\n// into an existing application.\nfunc Command(id clio.Identification) *cobra.Command {\n\t_, cmd := create(id, os.Stdout)\n\treturn cmd\n}\n\nfunc create(id clio.Identification, out io.Writer) (clio.Application, *cobra.Command) {\n\tclioCfg := internal.AppClioSetupConfig(id, out)\n\n\tapp := clio.New(*clioCfg)\n\n\t// since root is aliased as the packages cmd we need to construct this command first\n\t// we also need the command to have information about the `root` options because of this alias\n\tscanCmd := commands.Scan(app)\n\n\t// root is currently an alias for the scan command\n\trootCmd := commands.Root(app, scanCmd)\n\n\t// add sub-commands\n\trootCmd.AddCommand(\n\t\tscanCmd,\n\t\tcommands.Packages(app, scanCmd), // this is currently an alias for the scan command\n\t\tcommands.Cataloger(app),\n\t\tcommands.Attest(app),\n\t\tcommands.Convert(app),\n\t\tclio.VersionCommand(id, schemaVersion),\n\t\tclio.ConfigCommand(app, nil),\n\t\tcranecmd.NewCmdAuthLogin(id.Name), // syft login uses the same command as crane\n\t)\n\n\t// note: we would direct cobra to use our writer explicitly with rootCmd.SetOut(out) , however this causes\n\t// deprecation warnings to be shown to stdout via the writer instead of stderr. This is unfortunate since this\n\t// does not appear to be the correct behavior on cobra's part https://github.com/spf13/cobra/issues/1708 .\n\t// In the future this functionality should be restored.\n\n\treturn app, rootCmd\n}\n\nfunc schemaVersion() (string, any) {\n\treturn \"SchemaVersion\", constants.JSONSchemaVersion\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_attestation_test.snap",
    "content": "\n[TestHandler_handleAttestationStarted/attesting_in_progress/task_line - 1]\n ⠋ Creating a thing                                                               running a thing \n---\n\n[TestHandler_handleAttestationStarted/attesting_in_progress/log - 1]\n     ░░ contents\n     ░░ of\n     ░░ stuff!\n\n---\n\n[TestHandler_handleAttestationStarted/attesting_complete/task_line - 1]\n ✔ Created a thing                                                                running a thing \n---\n\n[TestHandler_handleAttestationStarted/attesting_complete/log - 1]\n\n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_cataloger_task_test.snap",
    "content": "\n[TestHandler_handleCatalogerTaskStarted/cataloging_task_in_progress - 1]\n ⠙ Cataloging contents             \n ⠙ some task title                 ━━━━━━━━━━━━━━━━━━━━  [some stage]  \n---\n\n[TestHandler_handleCatalogerTaskStarted/cataloging_sub_task_in_progress - 1]\n ⠙ Cataloging contents             \n   └── ⠙ some task title                 ━━━━━━━━━━━━━━━━━━━━  [some stage]  \n---\n\n[TestHandler_handleCatalogerTaskStarted/cataloging_sub_task_complete - 1]\n ⠙ Cataloging contents             \n   └── ✔ some task done                  [some stage]  \n---\n\n[TestHandler_handleCatalogerTaskStarted/cataloging_sub_task_complete_--_hide_stage - 1]\n ⠙ Cataloging contents             \n   └── ✔ some task done                  \n---\n\n[TestHandler_handleCatalogerTaskStarted/cataloging_sub_task_complete_with_removal - 1]\n ⠙ Cataloging contents             \n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_fetch_image_test.snap",
    "content": "\n[TestHandler_handleFetchImage/fetch_image_in_progress - 1]\n ⠋ Loading image                   ━━━━━━━━━━━━━━━━━━━━  [current]                      the-image \n---\n\n[TestHandler_handleFetchImage/fetch_image_complete - 1]\n ✔ Loaded image                                                                         the-image \n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_file_indexing_test.snap",
    "content": "\n[TestHandler_handleFileIndexingStarted/cataloging_in_progress - 1]\n ⠋ Indexing file system            ━━━━━━━━━━━━━━━━━━━━  [current]                     /some/path \n---\n\n[TestHandler_handleFileIndexingStarted/cataloging_complete - 1]\n ✔ Indexed file system                                                                 /some/path \n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_pull_docker_image_test.snap",
    "content": "\n[Test_dockerPullStatusFormatter_Render/pulling - 1]\n3 Layers▕▅▃ ▏[12 B / 30 B]\n---\n\n[Test_dockerPullStatusFormatter_Render/download_complete - 1]\n3 Layers▕█▃ ▏[30 B] Extracting...\n---\n\n[Test_dockerPullStatusFormatter_Render/complete - 1]\n3 Layers▕███▏[30 B] Extracting...\n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_pull_source_test.snap",
    "content": "\n[TestHandler_handlePullSourceStarted/snap_download_in_progress - 1]\n ⠋ Downloading snap file...        ━━━━━━━━━━━━━━━━━━━━                example-app_1.0_amd64.snap \n---\n\n[TestHandler_handlePullSourceStarted/snap_download_complete - 1]\n ✔ Snap downloaded successfully                                        example-app_1.0_amd64.snap \n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/__snapshots__/handle_read_image_test.snap",
    "content": "\n[TestHandler_handleReadImage/read_image_in_progress - 1]\n ⠋ Parsing image                   ━━━━━━━━━━━━━━━━━━━━                                        id \n---\n\n[TestHandler_handleReadImage/read_image_complete - 1]\n ✔ Parsed image                                                                                id \n---\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_attestation.go",
    "content": "package ui\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/google/uuid\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\t\"github.com/zyedidia/generic/queue\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\t\"github.com/anchore/syft/internal/log\"\n\tsyftEventParsers \"github.com/anchore/syft/syft/event/parsers\"\n)\n\nvar (\n\t_ tea.Model = (*attestLogFrame)(nil)\n)\n\ntype attestLogFrame struct {\n\treader     *backgroundLineReader\n\tprog       progress.Progressable\n\tlines      []string\n\tcompleted  bool\n\tfailed     bool\n\twindowSize tea.WindowSizeMsg\n\n\tid       uint32\n\tsequence int\n\n\tupdateDuration time.Duration\n\tborderStype    lipgloss.Style\n}\n\n// attestLogFrameTickMsg indicates that the timer has ticked and we should render a frame.\ntype attestLogFrameTickMsg struct {\n\tTime     time.Time\n\tSequence int\n\tID       uint32\n}\n\ntype backgroundLineReader struct {\n\tlimit int\n\tlines *queue.Queue[string]\n\tlock  *sync.RWMutex\n\n\t// This is added specifically for tests to assert when the background reader is done.\n\t// The main UI uses the global ui wait group from the handler to otherwise block\n\t// Shared concerns among multiple model made it difficult to test using the global wait group\n\t// so this is added to allow tests to assert when the background reader is done.\n\trunning *sync.WaitGroup\n}\n\nfunc (m *Handler) handleAttestationStarted(e partybus.Event) []tea.Model {\n\treader, prog, taskInfo, err := syftEventParsers.ParseAttestationStartedEvent(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\tstage := progress.Stage{}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: taskInfo.Title.Default,\n\t\t\tRunning: taskInfo.Title.WhileRunning,\n\t\t\tSuccess: taskInfo.Title.OnSuccess,\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(\n\t\t\tstruct {\n\t\t\t\tprogress.Progressable\n\t\t\t\tprogress.Stager\n\t\t\t}{\n\t\t\t\tProgressable: prog,\n\t\t\t\tStager:       &stage,\n\t\t\t},\n\t\t),\n\t)\n\n\ttsk.HideStageOnSuccess = false\n\n\tif taskInfo.Context != \"\" {\n\t\ttsk.Context = []string{taskInfo.Context}\n\t}\n\n\tborderStyle := tsk.HintStyle\n\n\treturn []tea.Model{\n\t\ttsk,\n\t\tnewLogFrame(newBackgroundLineReader(m.Running, reader, &stage), prog, borderStyle),\n\t}\n}\n\nfunc newLogFrame(reader *backgroundLineReader, prog progress.Progressable, borderStyle lipgloss.Style) attestLogFrame {\n\treturn attestLogFrame{\n\t\treader:         reader,\n\t\tprog:           prog,\n\t\tid:             uuid.Must(uuid.NewUUID()).ID(),\n\t\tupdateDuration: 250 * time.Millisecond,\n\t\tborderStype:    borderStyle,\n\t}\n}\n\nfunc newBackgroundLineReader(wg *sync.WaitGroup, reader io.Reader, stage *progress.Stage) *backgroundLineReader {\n\tr := &backgroundLineReader{\n\t\tlimit:   7,\n\t\tlock:    &sync.RWMutex{},\n\t\tlines:   queue.New[string](),\n\t\trunning: &sync.WaitGroup{},\n\t}\n\n\t// tracks the background reader for the global handler wait group\n\twg.Add(1)\n\n\t// tracks the background reader for the local wait group (used in tests to decouple from the global handler wait group)\n\tr.running.Add(1)\n\n\tgo func() {\n\t\tr.read(reader, stage)\n\t\twg.Done()\n\t\tr.running.Done()\n\t}()\n\n\treturn r\n}\n\nfunc (l *backgroundLineReader) read(reader io.Reader, stage *progress.Stage) {\n\ts := bufio.NewScanner(reader)\n\n\tfor s.Scan() {\n\t\tl.lock.Lock()\n\n\t\ttext := s.Text()\n\t\tl.lines.Enqueue(text)\n\n\t\tif strings.Contains(text, \"tlog entry created with index\") {\n\t\t\tfields := strings.SplitN(text, \":\", 2)\n\t\t\tpresent := text\n\t\t\tif len(fields) == 2 {\n\t\t\t\tpresent = fmt.Sprintf(\"transparency log index: %s\", fields[1])\n\t\t\t}\n\t\t\tstage.Current = present\n\t\t} else if strings.Contains(text, \"WARNING: skipping transparency log upload\") {\n\t\t\tstage.Current = \"transparency log upload skipped\"\n\t\t}\n\n\t\t// only show the last X lines of the shell output\n\t\tfor l.lines.Len() > l.limit {\n\t\t\tl.lines.Dequeue()\n\t\t}\n\n\t\tl.lock.Unlock()\n\t}\n}\n\nfunc (l backgroundLineReader) Lines() []string {\n\tl.lock.RLock()\n\tdefer l.lock.RUnlock()\n\n\tvar lines []string\n\n\tl.lines.Each(func(line string) {\n\t\tlines = append(lines, line)\n\t})\n\n\treturn lines\n}\n\nfunc (l attestLogFrame) Init() tea.Cmd {\n\t// this is the periodic update of state information\n\treturn func() tea.Msg {\n\t\treturn attestLogFrameTickMsg{\n\t\t\t// The time at which the tick occurred.\n\t\t\tTime: time.Now(),\n\n\t\t\t// The ID of the log frame that this message belongs to. This can be\n\t\t\t// helpful when routing messages, however bear in mind that log frames\n\t\t\t// will ignore messages that don't contain ID by default.\n\t\t\tID: l.id,\n\n\t\t\tSequence: l.sequence,\n\t\t}\n\t}\n}\n\nfunc (l attestLogFrame) Update(msg tea.Msg) (tea.Model, tea.Cmd) {\n\tswitch msg := msg.(type) {\n\tcase tea.WindowSizeMsg:\n\t\tl.windowSize = msg\n\t\treturn l, nil\n\n\tcase attestLogFrameTickMsg:\n\t\tl.lines = l.reader.Lines()\n\n\t\tl.completed = progress.IsCompleted(l.prog)\n\t\terr := l.prog.Error()\n\t\tl.failed = err != nil && !progress.IsErrCompleted(err)\n\n\t\ttickCmd := l.handleTick(msg)\n\n\t\treturn l, tickCmd\n\t}\n\n\treturn l, nil\n}\n\nfunc (l attestLogFrame) View() string {\n\tif l.completed && !l.failed {\n\t\treturn \"\"\n\t}\n\n\tsb := strings.Builder{}\n\n\tfor _, line := range l.lines {\n\t\tfmt.Fprintf(&sb, \"     %s %s\\n\", l.borderStype.Render(\"░░\"), line)\n\t}\n\n\treturn sb.String()\n}\n\nfunc (l attestLogFrame) queueNextTick() tea.Cmd {\n\treturn tea.Tick(l.updateDuration, func(t time.Time) tea.Msg {\n\t\treturn attestLogFrameTickMsg{\n\t\t\tTime:     t,\n\t\t\tID:       l.id,\n\t\t\tSequence: l.sequence,\n\t\t}\n\t})\n}\n\nfunc (l *attestLogFrame) handleTick(msg attestLogFrameTickMsg) tea.Cmd {\n\t// If an ID is set, and the ID doesn't belong to this log frame, reject the message.\n\tif msg.ID > 0 && msg.ID != l.id {\n\t\treturn nil\n\t}\n\n\t// If a sequence is set, and it's not the one we expect, reject the message.\n\t// This prevents the log frame from receiving too many messages and\n\t// thus updating too frequently.\n\tif msg.Sequence > 0 && msg.Sequence != l.sequence {\n\t\treturn nil\n\t}\n\n\tl.sequence++\n\n\t// note: even if the log is completed we should still respond to stage changes and window size events\n\treturn l.queueNextTick()\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_attestation_test.go",
    "content": "package ui\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tsyftEvent \"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n)\n\nfunc TestHandler_handleAttestationStarted(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"attesting in progress\",\n\t\t\t// note: this model depends on a background reader. Multiple iterations ensures that the\n\t\t\t// reader has time to at least start and process the test fixture before the runModel\n\t\t\t// test harness completes (which is a fake event loop anyway).\n\t\t\titerations: 1,\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\treader := strings.NewReader(\"contents\\nof\\nstuff!\")\n\n\t\t\t\tsrc := monitor.GenericTask{\n\t\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\t\tDefault:      \"Create a thing\",\n\t\t\t\t\t\tWhileRunning: \"Creating a thing\",\n\t\t\t\t\t\tOnSuccess:    \"Created a thing\",\n\t\t\t\t\t},\n\t\t\t\t\tContext: \"running a thing\",\n\t\t\t\t}\n\n\t\t\t\tmon := progress.NewManual(-1)\n\t\t\t\tmon.Set(50)\n\n\t\t\t\tvalue := &monitor.ShellProgress{\n\t\t\t\t\tReader:       reader,\n\t\t\t\t\tProgressable: mon,\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   syftEvent.AttestationStarted,\n\t\t\t\t\tSource: src,\n\t\t\t\t\tValue:  value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"attesting complete\",\n\t\t\t// note: this model depends on a background reader. Multiple iterations ensures that the\n\t\t\t// reader has time to at least start and process the test fixture before the runModel\n\t\t\t// test harness completes (which is a fake event loop anyway).\n\t\t\titerations: 1,\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\treader := strings.NewReader(\"contents\\nof\\nstuff!\")\n\n\t\t\t\tsrc := monitor.GenericTask{\n\t\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\t\tDefault:      \"Create a thing\",\n\t\t\t\t\t\tWhileRunning: \"Creating a thing\",\n\t\t\t\t\t\tOnSuccess:    \"Created a thing\",\n\t\t\t\t\t},\n\t\t\t\t\tContext: \"running a thing\",\n\t\t\t\t}\n\n\t\t\t\tmon := progress.NewManual(-1)\n\t\t\t\tmon.Set(50)\n\t\t\t\tmon.SetCompleted()\n\n\t\t\t\tvalue := &monitor.ShellProgress{\n\t\t\t\t\tReader:       reader,\n\t\t\t\t\tProgressable: mon,\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   syftEvent.AttestationStarted,\n\t\t\t\t\tSource: src,\n\t\t\t\t\tValue:  value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tevent := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tmodels, _ := handler.Handle(event)\n\t\t\trequire.Len(t, models, 2)\n\n\t\t\tt.Run(\"task line\", func(t *testing.T) {\n\t\t\t\ttsk, ok := models[0].(taskprogress.Model)\n\t\t\t\trequire.True(t, ok)\n\n\t\t\t\tgotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{\n\t\t\t\t\tTime:     time.Now(),\n\t\t\t\t\tSequence: tsk.Sequence(),\n\t\t\t\t\tID:       tsk.ID(),\n\t\t\t\t})\n\n\t\t\t\tgot := gotModel.View()\n\n\t\t\t\tt.Log(got)\n\t\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t\t})\n\n\t\t\tt.Run(\"log\", func(t *testing.T) {\n\t\t\t\tlog, ok := models[1].(attestLogFrame)\n\t\t\t\trequire.True(t, ok)\n\n\t\t\t\tgotModel := runModel(t, log, tt.iterations, attestLogFrameTickMsg{\n\t\t\t\t\tTime:     time.Now(),\n\t\t\t\t\tSequence: log.sequence,\n\t\t\t\t\tID:       log.id,\n\t\t\t\t}, log.reader.running)\n\n\t\t\t\tgot := gotModel.View()\n\n\t\t\t\tt.Log(got)\n\t\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t\t})\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_cataloger_task.go",
    "content": "package ui\n\nimport (\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/google/uuid\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\t\"github.com/anchore/bubbly/bubbles/tree\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\tsyftEventParsers \"github.com/anchore/syft/syft/event/parsers\"\n)\n\n// we standardize how rows are instantiated to ensure consistency in the appearance across the UI\ntype taskModelFactory func(title taskprogress.Title, opts ...taskprogress.Option) taskprogress.Model\n\nvar _ tea.Model = (*catalogerTaskModel)(nil)\n\ntype catalogerTaskModel struct {\n\tmodel        tree.Model\n\tmodelFactory taskModelFactory\n}\n\nfunc newCatalogerTaskTreeModel(f taskModelFactory) *catalogerTaskModel {\n\tt := tree.NewModel()\n\tt.Padding = \"   \"\n\tt.RootsWithoutPrefix = true\n\treturn &catalogerTaskModel{\n\t\tmodelFactory: f,\n\t\tmodel:        t,\n\t}\n}\n\ntype newCatalogerTaskRowEvent struct {\n\tinfo monitor.GenericTask\n\tprog progress.StagedProgressable\n}\n\nfunc (cts catalogerTaskModel) Init() tea.Cmd {\n\treturn cts.model.Init()\n}\n\nfunc (cts catalogerTaskModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {\n\tevent, ok := msg.(newCatalogerTaskRowEvent)\n\tif !ok {\n\t\tmodel, cmd := cts.model.Update(msg)\n\t\tcts.model = model.(tree.Model)\n\n\t\treturn cts, cmd\n\t}\n\n\tinfo, prog := event.info, event.prog\n\n\ttsk := cts.modelFactory(\n\t\ttaskprogress.Title{\n\t\t\tDefault: info.Title.Default,\n\t\t\tRunning: info.Title.WhileRunning,\n\t\t\tSuccess: info.Title.OnSuccess,\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(prog),\n\t)\n\n\tif info.Context != \"\" {\n\t\ttsk.Context = []string{info.Context}\n\t}\n\n\ttsk.HideOnSuccess = info.HideOnSuccess\n\ttsk.HideStageOnSuccess = info.HideStageOnSuccess\n\ttsk.HideProgressOnSuccess = true\n\n\tif info.ParentID != \"\" {\n\t\ttsk.TitleStyle = lipgloss.NewStyle()\n\t}\n\n\tif err := cts.model.Add(info.ParentID, info.ID, tsk); err != nil {\n\t\tlog.WithFields(\"error\", err).Error(\"unable to add cataloger task to tree model\")\n\t}\n\n\treturn cts, tsk.Init()\n}\n\nfunc (cts catalogerTaskModel) View() string {\n\treturn cts.model.View()\n}\n\nfunc (m *Handler) handleCatalogerTaskStarted(e partybus.Event) ([]tea.Model, tea.Cmd) {\n\tmon, info, err := syftEventParsers.ParseCatalogerTaskStarted(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil, nil\n\t}\n\n\tvar models []tea.Model\n\n\t// only create the new cataloger task tree once to manage all cataloger task events\n\tm.onNewCatalogerTask.Do(func() {\n\t\tmodels = append(models, newCatalogerTaskTreeModel(m.newTaskProgress))\n\t})\n\n\t// we need to update the cataloger task model with a new row. We should never update the model outside of the\n\t// bubbletea update-render event loop. Instead, we return a command that will be executed by the bubbletea runtime,\n\t// producing a message that is passed to the cataloger task model. This is the prescribed way to update models\n\t// in bubbletea.\n\n\tif info.ID == \"\" {\n\t\t// ID is optional from the consumer perspective, but required internally\n\t\tinfo.ID = uuid.Must(uuid.NewRandom()).String()\n\t}\n\n\tcmd := func() tea.Msg {\n\t\t// this message will cause the cataloger task model to add a new row to the output based on the given task\n\t\t// information and progress data.\n\t\treturn newCatalogerTaskRowEvent{\n\t\t\tinfo: *info,\n\t\t\tprog: mon,\n\t\t}\n\t}\n\n\treturn models, cmd\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_cataloger_task_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\tsyftEvent \"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n)\n\nfunc TestHandler_handleCatalogerTaskStarted(t *testing.T) {\n\ttitle := monitor.Title{\n\t\tDefault:   \"some task title\",\n\t\tOnSuccess: \"some task done\",\n\t}\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"cataloging task in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tvalue := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: progress.NewAtomicStage(\"some stage\"),\n\t\t\t\t\tManual:      progress.NewManual(100),\n\t\t\t\t}\n\n\t\t\t\tvalue.Manual.Add(50)\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType: syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: monitor.GenericTask{\n\t\t\t\t\t\tTitle:              title,\n\t\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\t\tHideStageOnSuccess: false,\n\t\t\t\t\t\tID:                 \"my-id\",\n\t\t\t\t\t},\n\t\t\t\t\tValue: value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloging sub task in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tvalue := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: progress.NewAtomicStage(\"some stage\"),\n\t\t\t\t\tManual:      progress.NewManual(100),\n\t\t\t\t}\n\n\t\t\t\tvalue.Manual.Add(50)\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType: syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: monitor.GenericTask{\n\t\t\t\t\t\tTitle:              title,\n\t\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\t\tHideStageOnSuccess: false,\n\t\t\t\t\t\tID:                 \"my-id\",\n\t\t\t\t\t\tParentID:           \"top-level-task\",\n\t\t\t\t\t},\n\t\t\t\t\tValue: value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloging sub task complete\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tvalue := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: progress.NewAtomicStage(\"some stage\"),\n\t\t\t\t\tManual:      progress.NewManual(100),\n\t\t\t\t}\n\n\t\t\t\tvalue.SetCompleted()\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType: syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: monitor.GenericTask{\n\t\t\t\t\t\tTitle:              title,\n\t\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\t\tHideStageOnSuccess: false,\n\t\t\t\t\t\tID:                 \"my-id\",\n\t\t\t\t\t\tParentID:           \"top-level-task\",\n\t\t\t\t\t},\n\t\t\t\t\tValue: value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloging sub task complete -- hide stage\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tvalue := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: progress.NewAtomicStage(\"some stage\"),\n\t\t\t\t\tManual:      progress.NewManual(100),\n\t\t\t\t}\n\n\t\t\t\tvalue.SetCompleted()\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType: syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: monitor.GenericTask{\n\t\t\t\t\t\tTitle:              title,\n\t\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\t\tHideStageOnSuccess: true,\n\t\t\t\t\t\tID:                 \"my-id\",\n\t\t\t\t\t\tParentID:           \"top-level-task\",\n\t\t\t\t\t},\n\t\t\t\t\tValue: value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloging sub task complete with removal\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tvalue := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: progress.NewAtomicStage(\"some stage\"),\n\t\t\t\t\tManual:      progress.NewManual(100),\n\t\t\t\t}\n\n\t\t\t\tvalue.SetCompleted()\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType: syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: monitor.GenericTask{\n\t\t\t\t\t\tTitle:              title,\n\t\t\t\t\t\tHideOnSuccess:      true,\n\t\t\t\t\t\tHideStageOnSuccess: false,\n\t\t\t\t\t\tID:                 \"my-id\",\n\t\t\t\t\t\tParentID:           \"top-level-task\",\n\t\t\t\t\t},\n\t\t\t\t\tValue: value,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// need to be able to get the initial newCatalogerTaskRowEvent + initialize the nested taskprogress model\n\t\t\tif tt.iterations == 0 {\n\t\t\t\ttt.iterations = 2\n\t\t\t}\n\n\t\t\te := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tinfo := monitor.GenericTask{\n\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\tDefault:      \"Catalog contents\",\n\t\t\t\t\tWhileRunning: \"Cataloging contents\",\n\t\t\t\t\tOnSuccess:    \"Cataloged contents\",\n\t\t\t\t},\n\t\t\t\tID: \"top-level-task\",\n\t\t\t}\n\n\t\t\t// note: this line / event is not under test, only needed to show a sub status\n\t\t\tkickoffEvent := &monitor.TaskProgress{\n\t\t\t\tAtomicStage: progress.NewAtomicStage(\"\"),\n\t\t\t\tManual:      progress.NewManual(-1),\n\t\t\t}\n\n\t\t\tmodels, cmd := handler.Handle(\n\t\t\t\tpartybus.Event{\n\t\t\t\t\tType:   syftEvent.CatalogerTaskStarted,\n\t\t\t\t\tSource: info,\n\t\t\t\t\tValue:  progress.StagedProgressable(kickoffEvent),\n\t\t\t\t},\n\t\t\t)\n\t\t\trequire.Len(t, models, 1)\n\t\t\trequire.NotNil(t, cmd)\n\t\t\tmodel := models[0]\n\n\t\t\ttr, ok := model.(*catalogerTaskModel)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgotModel := runModel(t, tr, tt.iterations, cmd())\n\n\t\t\tmodels, cmd = handler.Handle(e)\n\t\t\trequire.Len(t, models, 0)\n\t\t\trequire.NotNil(t, cmd)\n\n\t\t\tgotModel = runModel(t, gotModel, tt.iterations, cmd())\n\n\t\t\tgot := gotModel.View()\n\n\t\t\tt.Log(got)\n\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_fetch_image.go",
    "content": "package ui\n\nimport (\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoEventParsers \"github.com/anchore/stereoscope/pkg/event/parsers\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nfunc (m *Handler) handleFetchImage(e partybus.Event) []tea.Model {\n\timgName, prog, err := stereoEventParsers.ParseFetchImage(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: \"Load image\",\n\t\t\tRunning: \"Loading image\",\n\t\t\tSuccess: \"Loaded image\",\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(prog),\n\t)\n\tif imgName != \"\" {\n\t\ttsk.Context = []string{imgName}\n\t}\n\n\treturn []tea.Model{tsk}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_fetch_image_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoscopeEvent \"github.com/anchore/stereoscope/pkg/event\"\n)\n\nfunc TestHandler_handleFetchImage(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"fetch image in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(50)\n\n\t\t\t\tmon := struct {\n\t\t\t\t\tprogress.Progressable\n\t\t\t\t\tprogress.Stager\n\t\t\t\t}{\n\t\t\t\t\tProgressable: prog,\n\t\t\t\t\tStager: &progress.Stage{\n\t\t\t\t\t\tCurrent: \"current\",\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   stereoscopeEvent.FetchImage,\n\t\t\t\t\tSource: \"the-image\",\n\t\t\t\t\tValue:  mon,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"fetch image complete\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(100)\n\t\t\t\tprog.SetCompleted()\n\n\t\t\t\tmon := struct {\n\t\t\t\t\tprogress.Progressable\n\t\t\t\t\tprogress.Stager\n\t\t\t\t}{\n\t\t\t\t\tProgressable: prog,\n\t\t\t\t\tStager: &progress.Stage{\n\t\t\t\t\t\tCurrent: \"current\",\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   stereoscopeEvent.FetchImage,\n\t\t\t\t\tSource: \"the-image\",\n\t\t\t\t\tValue:  mon,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tevent := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tmodels, _ := handler.Handle(event)\n\t\t\trequire.Len(t, models, 1)\n\t\t\tmodel := models[0]\n\n\t\t\ttsk, ok := model.(taskprogress.Model)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{\n\t\t\t\tTime:     time.Now(),\n\t\t\t\tSequence: tsk.Sequence(),\n\t\t\t\tID:       tsk.ID(),\n\t\t\t})\n\n\t\t\tgot := gotModel.View()\n\n\t\t\tt.Log(got)\n\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_file_indexing.go",
    "content": "package ui\n\nimport (\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\t\"github.com/anchore/syft/internal/log\"\n\tsyftEventParsers \"github.com/anchore/syft/syft/event/parsers\"\n)\n\nfunc (m *Handler) handleFileIndexingStarted(e partybus.Event) []tea.Model {\n\tpath, prog, err := syftEventParsers.ParseFileIndexingStarted(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: \"Index files system\",\n\t\t\tRunning: \"Indexing file system\",\n\t\t\tSuccess: \"Indexed file system\",\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(prog),\n\t)\n\n\ttsk.Context = []string{path}\n\n\treturn []tea.Model{tsk}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_file_indexing_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tsyftEvent \"github.com/anchore/syft/syft/event\"\n)\n\nfunc TestHandler_handleFileIndexingStarted(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"cataloging in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(50)\n\n\t\t\t\tmon := struct {\n\t\t\t\t\tprogress.Progressable\n\t\t\t\t\tprogress.Stager\n\t\t\t\t}{\n\t\t\t\t\tProgressable: prog,\n\t\t\t\t\tStager: &progress.Stage{\n\t\t\t\t\t\tCurrent: \"current\",\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   syftEvent.FileIndexingStarted,\n\t\t\t\t\tSource: \"/some/path\",\n\t\t\t\t\tValue:  mon,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloging complete\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(100)\n\t\t\t\tprog.SetCompleted()\n\n\t\t\t\tmon := struct {\n\t\t\t\t\tprogress.Progressable\n\t\t\t\t\tprogress.Stager\n\t\t\t\t}{\n\t\t\t\t\tProgressable: prog,\n\t\t\t\t\tStager: &progress.Stage{\n\t\t\t\t\t\tCurrent: \"current\",\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   syftEvent.FileIndexingStarted,\n\t\t\t\t\tSource: \"/some/path\",\n\t\t\t\t\tValue:  mon,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tevent := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tmodels, _ := handler.Handle(event)\n\t\t\trequire.Len(t, models, 1)\n\t\t\tmodel := models[0]\n\n\t\t\ttsk, ok := model.(taskprogress.Model)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{\n\t\t\t\tTime:     time.Now(),\n\t\t\t\tSequence: tsk.Sequence(),\n\t\t\t\tID:       tsk.ID(),\n\t\t\t})\n\n\t\t\tgot := gotModel.View()\n\n\t\t\tt.Log(got)\n\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_pull_containerd_image.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/dustin/go-humanize\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoscopeParsers \"github.com/anchore/stereoscope/pkg/event/parsers\"\n\t\"github.com/anchore/stereoscope/pkg/image/containerd\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nvar _ interface {\n\tprogress.Stager\n\tprogress.Progressable\n} = (*containerdPullProgressAdapter)(nil)\n\ntype containerdPullStatus interface {\n\tComplete() bool\n\tLayers() []containerd.LayerID\n\tCurrent(containerd.LayerID) progress.Progressable\n}\n\ntype containerdPullProgressAdapter struct {\n\tstatus    containerdPullStatus\n\tformatter containerdPullStatusFormatter\n}\n\ntype containerdPullStatusFormatter struct {\n\tauxInfoStyle       lipgloss.Style\n\tpullCompletedStyle lipgloss.Style\n\tpullDownloadStyle  lipgloss.Style\n\tpullStageChars     []string\n\tlayerCaps          []string\n}\n\nfunc (m *Handler) handlePullContainerdImage(e partybus.Event) []tea.Model {\n\t_, pullStatus, err := stereoscopeParsers.ParsePullContainerdImage(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\tif pullStatus == nil {\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: \"Pull image\",\n\t\t\tRunning: \"Pulling image\",\n\t\t\tSuccess: \"Pulled image\",\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(\n\t\t\tnewContainerdPullProgressAdapter(pullStatus),\n\t\t),\n\t)\n\n\ttsk.HintStyle = lipgloss.NewStyle()\n\ttsk.HintEndCaps = nil\n\n\treturn []tea.Model{tsk}\n}\n\nfunc newContainerdPullProgressAdapter(status *containerd.PullStatus) *containerdPullProgressAdapter {\n\treturn &containerdPullProgressAdapter{\n\t\tstatus:    status,\n\t\tformatter: newContainerdPullStatusFormatter(),\n\t}\n}\n\nfunc newContainerdPullStatusFormatter() containerdPullStatusFormatter {\n\treturn containerdPullStatusFormatter{\n\t\tauxInfoStyle:       lipgloss.NewStyle().Foreground(lipgloss.Color(\"#777777\")),\n\t\tpullCompletedStyle: lipgloss.NewStyle().Foreground(lipgloss.Color(\"#fcba03\")),\n\t\tpullDownloadStyle:  lipgloss.NewStyle().Foreground(lipgloss.Color(\"#777777\")),\n\t\tpullStageChars:     strings.Split(\"▁▃▄▅▆▇█\", \"\"),\n\t\tlayerCaps:          strings.Split(\"▕▏\", \"\"),\n\t}\n}\n\nfunc (d containerdPullProgressAdapter) Size() int64 {\n\treturn -1\n}\n\nfunc (d containerdPullProgressAdapter) Current() int64 {\n\treturn 1\n}\n\nfunc (d containerdPullProgressAdapter) Error() error {\n\tif d.status.Complete() {\n\t\treturn progress.ErrCompleted\n\t}\n\t// TODO: return intermediate error indications\n\treturn nil\n}\n\nfunc (d containerdPullProgressAdapter) Stage() string {\n\treturn d.formatter.Render(d.status)\n}\n\n// Render crafts the given docker image pull status summarized into a single line.\nfunc (f containerdPullStatusFormatter) Render(pullStatus containerdPullStatus) string {\n\tvar size, current uint64\n\n\tlayers := pullStatus.Layers()\n\tstatus := make(map[containerd.LayerID]progress.Progressable)\n\tcompleted := make([]string, len(layers))\n\n\t// fetch the current state\n\tfor idx, layer := range layers {\n\t\tcompleted[idx] = \" \"\n\t\tstatus[layer] = pullStatus.Current(layer)\n\t}\n\n\tnumCompleted := 0\n\tfor idx, layer := range layers {\n\t\tprog := status[layer]\n\t\tcurN := prog.Current()\n\t\tcurSize := prog.Size()\n\n\t\tif progress.IsCompleted(prog) {\n\t\t\tinput := f.pullStageChars[len(f.pullStageChars)-1]\n\t\t\tcompleted[idx] = f.formatPullPhase(prog.Error() != nil, input)\n\t\t} else if curN != 0 {\n\t\t\tvar ratio float64\n\t\t\tswitch {\n\t\t\tcase curN == 0 || curSize < 0:\n\t\t\t\tratio = 0\n\t\t\tcase curN >= curSize:\n\t\t\t\tratio = 1\n\t\t\tdefault:\n\t\t\t\tratio = float64(curN) / float64(curSize)\n\t\t\t}\n\n\t\t\ti := int(ratio * float64(len(f.pullStageChars)-1))\n\t\t\tinput := f.pullStageChars[i]\n\t\t\tcompleted[idx] = f.formatPullPhase(status[layer].Error() != nil, input)\n\t\t}\n\n\t\tif progress.IsErrCompleted(status[layer].Error()) {\n\t\t\tnumCompleted++\n\t\t}\n\t}\n\n\tfor _, layer := range layers {\n\t\tprog := status[layer]\n\t\tsize += uint64(prog.Size())\n\t\tcurrent += uint64(prog.Current())\n\t}\n\n\tvar progStr, auxInfo string\n\tif len(layers) > 0 {\n\t\trender := strings.Join(completed, \"\")\n\t\tprefix := f.pullCompletedStyle.Render(fmt.Sprintf(\"%d Layers\", len(layers)))\n\t\tauxInfo = f.auxInfoStyle.Render(fmt.Sprintf(\"[%s / %s]\", humanize.Bytes(current), humanize.Bytes(size)))\n\t\tif len(layers) == numCompleted {\n\t\t\tauxInfo = f.auxInfoStyle.Render(fmt.Sprintf(\"[%s] Extracting...\", humanize.Bytes(size)))\n\t\t}\n\n\t\tprogStr = fmt.Sprintf(\"%s%s%s%s\", prefix, f.layerCap(false), render, f.layerCap(true))\n\t}\n\n\treturn progStr + auxInfo\n}\n\n// formatPullPhase returns a single character that represents the status of a layer pull.\nfunc (f containerdPullStatusFormatter) formatPullPhase(completed bool, inputStr string) string {\n\tif completed {\n\t\treturn f.pullCompletedStyle.Render(f.pullStageChars[len(f.pullStageChars)-1])\n\t}\n\treturn f.pullDownloadStyle.Render(inputStr)\n}\n\nfunc (f containerdPullStatusFormatter) layerCap(end bool) string {\n\tl := len(f.layerCaps)\n\tif l == 0 {\n\t\treturn \"\"\n\t}\n\tif end {\n\t\treturn f.layerCaps[l-1]\n\t}\n\treturn f.layerCaps[0]\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_pull_docker_image.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/dustin/go-humanize\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoscopeParsers \"github.com/anchore/stereoscope/pkg/event/parsers\"\n\t\"github.com/anchore/stereoscope/pkg/image/docker\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nvar _ interface {\n\tprogress.Stager\n\tprogress.Progressable\n} = (*dockerPullProgressAdapter)(nil)\n\ntype dockerPullStatus interface {\n\tComplete() bool\n\tLayers() []docker.LayerID\n\tCurrent(docker.LayerID) docker.LayerState\n}\n\ntype dockerPullProgressAdapter struct {\n\tstatus    dockerPullStatus\n\tformatter dockerPullStatusFormatter\n}\n\ntype dockerPullStatusFormatter struct {\n\tauxInfoStyle             lipgloss.Style\n\tdockerPullCompletedStyle lipgloss.Style\n\tdockerPullDownloadStyle  lipgloss.Style\n\tdockerPullExtractStyle   lipgloss.Style\n\tdockerPullStageChars     []string\n\tlayerCaps                []string\n}\n\nfunc (m *Handler) handlePullDockerImage(e partybus.Event) []tea.Model {\n\t_, pullStatus, err := stereoscopeParsers.ParsePullDockerImage(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: \"Pull image\",\n\t\t\tRunning: \"Pulling image\",\n\t\t\tSuccess: \"Pulled image\",\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(\n\t\t\tnewDockerPullProgressAdapter(pullStatus),\n\t\t),\n\t)\n\n\ttsk.HintStyle = lipgloss.NewStyle()\n\ttsk.HintEndCaps = nil\n\n\treturn []tea.Model{tsk}\n}\n\nfunc newDockerPullProgressAdapter(status dockerPullStatus) *dockerPullProgressAdapter {\n\treturn &dockerPullProgressAdapter{\n\t\tstatus:    status,\n\t\tformatter: newDockerPullStatusFormatter(),\n\t}\n}\n\nfunc newDockerPullStatusFormatter() dockerPullStatusFormatter {\n\treturn dockerPullStatusFormatter{\n\t\tauxInfoStyle:             lipgloss.NewStyle().Foreground(lipgloss.Color(\"#777777\")),\n\t\tdockerPullCompletedStyle: lipgloss.NewStyle().Foreground(lipgloss.Color(\"#fcba03\")),\n\t\tdockerPullDownloadStyle:  lipgloss.NewStyle().Foreground(lipgloss.Color(\"#777777\")),\n\t\tdockerPullExtractStyle:   lipgloss.NewStyle().Foreground(lipgloss.Color(\"#ffffff\")),\n\t\tdockerPullStageChars:     strings.Split(\"▁▃▄▅▆▇█\", \"\"),\n\t\tlayerCaps:                strings.Split(\"▕▏\", \"\"),\n\t}\n}\n\nfunc (d dockerPullProgressAdapter) Size() int64 {\n\treturn -1\n}\n\nfunc (d dockerPullProgressAdapter) Current() int64 {\n\treturn 1\n}\n\nfunc (d dockerPullProgressAdapter) Error() error {\n\tif d.status.Complete() {\n\t\treturn progress.ErrCompleted\n\t}\n\t// TODO: return intermediate error indications\n\treturn nil\n}\n\nfunc (d dockerPullProgressAdapter) Stage() string {\n\treturn d.formatter.Render(d.status)\n}\n\n// Render crafts the given docker image pull status summarized into a single line.\nfunc (f dockerPullStatusFormatter) Render(pullStatus dockerPullStatus) string {\n\tvar size, current uint64\n\n\tlayers := pullStatus.Layers()\n\tstatus := make(map[docker.LayerID]docker.LayerState)\n\tcompleted := make([]string, len(layers))\n\n\t// fetch the current state\n\tfor idx, layer := range layers {\n\t\tcompleted[idx] = \" \"\n\t\tstatus[layer] = pullStatus.Current(layer)\n\t}\n\n\tnumCompleted := 0\n\tfor idx, layer := range layers {\n\t\tprog := status[layer].PhaseProgress\n\t\tcurN := prog.Current()\n\t\tcurSize := prog.Size()\n\n\t\tif progress.IsCompleted(prog) {\n\t\t\tinput := f.dockerPullStageChars[len(f.dockerPullStageChars)-1]\n\t\t\tcompleted[idx] = f.formatDockerPullPhase(status[layer].Phase, input)\n\t\t} else if curN != 0 {\n\t\t\tvar ratio float64\n\t\t\tswitch {\n\t\t\tcase curN == 0 || curSize < 0:\n\t\t\t\tratio = 0\n\t\t\tcase curN >= curSize:\n\t\t\t\tratio = 1\n\t\t\tdefault:\n\t\t\t\tratio = float64(curN) / float64(curSize)\n\t\t\t}\n\n\t\t\ti := int(ratio * float64(len(f.dockerPullStageChars)-1))\n\t\t\tinput := f.dockerPullStageChars[i]\n\t\t\tcompleted[idx] = f.formatDockerPullPhase(status[layer].Phase, input)\n\t\t}\n\n\t\tif progress.IsErrCompleted(status[layer].DownloadProgress.Error()) {\n\t\t\tnumCompleted++\n\t\t}\n\t}\n\n\tfor _, layer := range layers {\n\t\tprog := status[layer].DownloadProgress\n\t\tsize += uint64(prog.Size())\n\t\tcurrent += uint64(prog.Current())\n\t}\n\n\tvar progStr, auxInfo string\n\tif len(layers) > 0 {\n\t\trender := strings.Join(completed, \"\")\n\t\tprefix := f.dockerPullCompletedStyle.Render(fmt.Sprintf(\"%d Layers\", len(layers)))\n\t\tauxInfo = f.auxInfoStyle.Render(fmt.Sprintf(\"[%s / %s]\", humanize.Bytes(current), humanize.Bytes(size)))\n\t\tif len(layers) == numCompleted {\n\t\t\tauxInfo = f.auxInfoStyle.Render(fmt.Sprintf(\"[%s] Extracting...\", humanize.Bytes(size)))\n\t\t}\n\n\t\tprogStr = fmt.Sprintf(\"%s%s%s%s\", prefix, f.layerCap(false), render, f.layerCap(true))\n\t}\n\n\treturn progStr + auxInfo\n}\n\n// formatDockerPullPhase returns a single character that represents the status of a layer pull.\nfunc (f dockerPullStatusFormatter) formatDockerPullPhase(phase docker.PullPhase, inputStr string) string {\n\tswitch phase {\n\tcase docker.WaitingPhase:\n\t\t// ignore any progress related to waiting\n\t\treturn \" \"\n\tcase docker.PullingFsPhase, docker.DownloadingPhase:\n\t\treturn f.dockerPullDownloadStyle.Render(inputStr)\n\tcase docker.DownloadCompletePhase:\n\t\treturn f.dockerPullDownloadStyle.Render(f.dockerPullStageChars[len(f.dockerPullStageChars)-1])\n\tcase docker.ExtractingPhase:\n\t\treturn f.dockerPullExtractStyle.Render(inputStr)\n\tcase docker.VerifyingChecksumPhase, docker.PullCompletePhase:\n\t\treturn f.dockerPullCompletedStyle.Render(inputStr)\n\tcase docker.AlreadyExistsPhase:\n\t\treturn f.dockerPullCompletedStyle.Render(f.dockerPullStageChars[len(f.dockerPullStageChars)-1])\n\tdefault:\n\t\treturn inputStr\n\t}\n}\n\nfunc (f dockerPullStatusFormatter) layerCap(end bool) string {\n\tl := len(f.layerCaps)\n\tif l == 0 {\n\t\treturn \"\"\n\t}\n\tif end {\n\t\treturn f.layerCaps[l-1]\n\t}\n\treturn f.layerCaps[0]\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_pull_docker_image_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/stereoscope/pkg/image/docker\"\n)\n\nvar _ dockerPullStatus = (*mockDockerPullStatus)(nil)\n\ntype mockDockerPullStatus struct {\n\tcomplete bool\n\tlayers   []docker.LayerID\n\tcurrent  map[docker.LayerID]docker.LayerState\n}\n\nfunc (m mockDockerPullStatus) Complete() bool {\n\treturn m.complete\n}\n\nfunc (m mockDockerPullStatus) Layers() []docker.LayerID {\n\treturn m.layers\n}\n\nfunc (m mockDockerPullStatus) Current(id docker.LayerID) docker.LayerState {\n\treturn m.current[id]\n}\n\nfunc Test_dockerPullStatusFormatter_Render(t *testing.T) {\n\n\ttests := []struct {\n\t\tname   string\n\t\tstatus dockerPullStatus\n\t}{\n\t\t{\n\t\t\tname: \"pulling\",\n\t\t\tstatus: func() dockerPullStatus {\n\t\t\t\tcomplete := progress.NewManual(10)\n\t\t\t\tcomplete.Set(10)\n\t\t\t\tcomplete.SetCompleted()\n\n\t\t\t\tquarter := progress.NewManual(10)\n\t\t\t\tquarter.Set(2)\n\n\t\t\t\thalf := progress.NewManual(10)\n\t\t\t\thalf.Set(6)\n\n\t\t\t\tempty := progress.NewManual(10)\n\n\t\t\t\treturn mockDockerPullStatus{\n\t\t\t\t\tcomplete: false,\n\t\t\t\t\tlayers: []docker.LayerID{\n\t\t\t\t\t\t\"sha256:1\",\n\t\t\t\t\t\t\"sha256:2\",\n\t\t\t\t\t\t\"sha256:3\",\n\t\t\t\t\t},\n\t\t\t\t\tcurrent: map[docker.LayerID]docker.LayerState{\n\t\t\t\t\t\t\"sha256:1\": {\n\t\t\t\t\t\t\tPhase:            docker.ExtractingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    half,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:2\": {\n\t\t\t\t\t\t\tPhase:            docker.DownloadingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    quarter,\n\t\t\t\t\t\t\tDownloadProgress: quarter,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:3\": {\n\t\t\t\t\t\t\tPhase:            docker.WaitingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    empty,\n\t\t\t\t\t\t\tDownloadProgress: empty,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"download complete\",\n\t\t\tstatus: func() dockerPullStatus {\n\t\t\t\tcomplete := progress.NewManual(10)\n\t\t\t\tcomplete.Set(10)\n\t\t\t\tcomplete.SetCompleted()\n\n\t\t\t\tquarter := progress.NewManual(10)\n\t\t\t\tquarter.Set(2)\n\n\t\t\t\thalf := progress.NewManual(10)\n\t\t\t\thalf.Set(6)\n\n\t\t\t\tempty := progress.NewManual(10)\n\n\t\t\t\treturn mockDockerPullStatus{\n\t\t\t\t\tcomplete: false,\n\t\t\t\t\tlayers: []docker.LayerID{\n\t\t\t\t\t\t\"sha256:1\",\n\t\t\t\t\t\t\"sha256:2\",\n\t\t\t\t\t\t\"sha256:3\",\n\t\t\t\t\t},\n\t\t\t\t\tcurrent: map[docker.LayerID]docker.LayerState{\n\t\t\t\t\t\t\"sha256:1\": {\n\t\t\t\t\t\t\tPhase:            docker.ExtractingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    complete,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:2\": {\n\t\t\t\t\t\t\tPhase:            docker.ExtractingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    quarter,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:3\": {\n\t\t\t\t\t\t\tPhase:            docker.ExtractingPhase,\n\t\t\t\t\t\t\tPhaseProgress:    empty,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"complete\",\n\t\t\tstatus: func() dockerPullStatus {\n\t\t\t\tcomplete := progress.NewManual(10)\n\t\t\t\tcomplete.Set(10)\n\t\t\t\tcomplete.SetCompleted()\n\n\t\t\t\treturn mockDockerPullStatus{\n\t\t\t\t\tcomplete: true,\n\t\t\t\t\tlayers: []docker.LayerID{\n\t\t\t\t\t\t\"sha256:1\",\n\t\t\t\t\t\t\"sha256:2\",\n\t\t\t\t\t\t\"sha256:3\",\n\t\t\t\t\t},\n\t\t\t\t\tcurrent: map[docker.LayerID]docker.LayerState{\n\t\t\t\t\t\t\"sha256:1\": {\n\t\t\t\t\t\t\tPhase:            docker.PullCompletePhase,\n\t\t\t\t\t\t\tPhaseProgress:    complete,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:2\": {\n\t\t\t\t\t\t\tPhase:            docker.PullCompletePhase,\n\t\t\t\t\t\t\tPhaseProgress:    complete,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"sha256:3\": {\n\t\t\t\t\t\t\tPhase:            docker.PullCompletePhase,\n\t\t\t\t\t\t\tPhaseProgress:    complete,\n\t\t\t\t\t\t\tDownloadProgress: complete,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}(),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf := newDockerPullStatusFormatter()\n\t\t\tsnaps.MatchSnapshot(t, f.Render(tt.status))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_pull_source.go",
    "content": "package ui\n\nimport (\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\t\"github.com/anchore/syft/internal/log\"\n\tsyftEventParsers \"github.com/anchore/syft/syft/event/parsers\"\n)\n\nfunc (m *Handler) handlePullSourceStarted(e partybus.Event) []tea.Model {\n\tprog, info, err := syftEventParsers.ParsePullSourceStarted(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: info.Title.Default,\n\t\t\tRunning: info.Title.WhileRunning,\n\t\t\tSuccess: info.Title.OnSuccess,\n\t\t},\n\t\ttaskprogress.WithStagedProgressable(prog),\n\t)\n\n\ttsk.HideOnSuccess = info.HideOnSuccess\n\ttsk.HideStageOnSuccess = info.HideStageOnSuccess\n\ttsk.HideProgressOnSuccess = true\n\n\tif info.Context != \"\" {\n\t\ttsk.Context = []string{info.Context}\n\t}\n\n\treturn []tea.Model{tsk}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_pull_source_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n)\n\nfunc TestHandler_handlePullSourceStarted(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"snap download in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tstage := progress.NewAtomicStage(\"\")\n\t\t\t\tmanual := progress.NewManual(0)\n\t\t\t\tmanual.SetTotal(1000000) // 1MB file\n\t\t\t\tmanual.Set(250000)       // 25% downloaded\n\n\t\t\t\ttaskProg := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: stage,\n\t\t\t\t\tManual:      manual,\n\t\t\t\t}\n\n\t\t\t\tgenericTask := monitor.GenericTask{\n\t\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\t\tDefault:      \"Downloading snap\",\n\t\t\t\t\t\tWhileRunning: \"Downloading snap file...\",\n\t\t\t\t\t\tOnSuccess:    \"Snap downloaded\",\n\t\t\t\t\t},\n\t\t\t\t\tContext:            \"example-app_1.0_amd64.snap\",\n\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\tHideStageOnSuccess: true,\n\t\t\t\t\tID:                 \"snap-download-123\",\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   event.PullSourceStarted,\n\t\t\t\t\tSource: genericTask,\n\t\t\t\t\tValue:  taskProg,\n\t\t\t\t}\n\t\t\t},\n\t\t\titerations: 5,\n\t\t},\n\t\t{\n\t\t\tname: \"snap download complete\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tstage := progress.NewAtomicStage(\"\")\n\t\t\t\tmanual := progress.NewManual(0)\n\t\t\t\tmanual.SetTotal(1000000) // 1MB file\n\t\t\t\tmanual.Set(1000000)      // 100% downloaded\n\t\t\t\tmanual.SetCompleted()\n\n\t\t\t\ttaskProg := &monitor.TaskProgress{\n\t\t\t\t\tAtomicStage: stage,\n\t\t\t\t\tManual:      manual,\n\t\t\t\t}\n\n\t\t\t\tgenericTask := monitor.GenericTask{\n\t\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\t\tDefault:      \"Downloading snap\",\n\t\t\t\t\t\tWhileRunning: \"Downloading snap file...\",\n\t\t\t\t\t\tOnSuccess:    \"Snap downloaded successfully\",\n\t\t\t\t\t},\n\t\t\t\t\tContext:            \"example-app_1.0_amd64.snap\",\n\t\t\t\t\tHideOnSuccess:      false,\n\t\t\t\t\tHideStageOnSuccess: true,\n\t\t\t\t\tID:                 \"snap-download-123\",\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   event.PullSourceStarted,\n\t\t\t\t\tSource: genericTask,\n\t\t\t\t\tValue:  taskProg,\n\t\t\t\t}\n\t\t\t},\n\t\t\titerations: 3,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tevent := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tmodels := handler.handlePullSourceStarted(event)\n\t\t\trequire.Len(t, models, 1)\n\t\t\tmodel := models[0]\n\n\t\t\ttsk, ok := model.(taskprogress.Model)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{\n\t\t\t\tTime:     time.Now(),\n\t\t\t\tSequence: tsk.Sequence(),\n\t\t\t\tID:       tsk.ID(),\n\t\t\t})\n\n\t\t\tgot := gotModel.View()\n\n\t\t\tt.Log(got)\n\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_read_image.go",
    "content": "package ui\n\nimport (\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoEventParsers \"github.com/anchore/stereoscope/pkg/event/parsers\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nfunc (m *Handler) handleReadImage(e partybus.Event) []tea.Model {\n\timgMetadata, prog, err := stereoEventParsers.ParseReadImage(e)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to parse event\")\n\t\treturn nil\n\t}\n\n\ttsk := m.newTaskProgress(\n\t\ttaskprogress.Title{\n\t\t\tDefault: \"Parse image\",\n\t\t\tRunning: \"Parsing image\",\n\t\t\tSuccess: \"Parsed image\",\n\t\t},\n\t\ttaskprogress.WithProgress(prog),\n\t)\n\n\tif imgMetadata != nil {\n\t\ttsk.Context = []string{imgMetadata.ID}\n\t}\n\n\treturn []tea.Model{tsk}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handle_read_image_test.go",
    "content": "package ui\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\tv1 \"github.com/google/go-containerregistry/pkg/v1\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoscopeEvent \"github.com/anchore/stereoscope/pkg/event\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\nfunc TestHandler_handleReadImage(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\teventFn    func(*testing.T) partybus.Event\n\t\titerations int\n\t}{\n\t\t{\n\t\t\tname: \"read image in progress\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(50)\n\n\t\t\t\tsrc := image.Metadata{\n\t\t\t\t\tID:   \"id\",\n\t\t\t\t\tSize: 42,\n\t\t\t\t\tConfig: v1.ConfigFile{\n\t\t\t\t\t\tArchitecture: \"arch\",\n\t\t\t\t\t\tAuthor:       \"auth\",\n\t\t\t\t\t\tContainer:    \"cont\",\n\t\t\t\t\t\tOS:           \"os\",\n\t\t\t\t\t\tOSVersion:    \"os-ver\",\n\t\t\t\t\t\tVariant:      \"vari\",\n\t\t\t\t\t},\n\t\t\t\t\tMediaType:      \"media\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t\tArchitecture:   \"arch\",\n\t\t\t\t\tVariant:        \"var\",\n\t\t\t\t\tOS:             \"os\",\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   stereoscopeEvent.ReadImage,\n\t\t\t\t\tSource: src,\n\t\t\t\t\tValue:  prog,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"read image complete\",\n\t\t\teventFn: func(t *testing.T) partybus.Event {\n\t\t\t\tprog := &progress.Manual{}\n\t\t\t\tprog.SetTotal(100)\n\t\t\t\tprog.Set(100)\n\t\t\t\tprog.SetCompleted()\n\n\t\t\t\tsrc := image.Metadata{\n\t\t\t\t\tID:   \"id\",\n\t\t\t\t\tSize: 42,\n\t\t\t\t\tConfig: v1.ConfigFile{\n\t\t\t\t\t\tArchitecture: \"arch\",\n\t\t\t\t\t\tAuthor:       \"auth\",\n\t\t\t\t\t\tContainer:    \"cont\",\n\t\t\t\t\t\tOS:           \"os\",\n\t\t\t\t\t\tOSVersion:    \"os-ver\",\n\t\t\t\t\t\tVariant:      \"vari\",\n\t\t\t\t\t},\n\t\t\t\t\tMediaType:      \"media\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t\tArchitecture:   \"arch\",\n\t\t\t\t\tVariant:        \"var\",\n\t\t\t\t\tOS:             \"os\",\n\t\t\t\t}\n\n\t\t\t\treturn partybus.Event{\n\t\t\t\t\tType:   stereoscopeEvent.ReadImage,\n\t\t\t\t\tSource: src,\n\t\t\t\t\tValue:  prog,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tevent := tt.eventFn(t)\n\t\t\thandler := New(DefaultHandlerConfig())\n\t\t\thandler.WindowSize = tea.WindowSizeMsg{\n\t\t\t\tWidth:  100,\n\t\t\t\tHeight: 80,\n\t\t\t}\n\n\t\t\tmodels, _ := handler.Handle(event)\n\t\t\trequire.Len(t, models, 1)\n\t\t\tmodel := models[0]\n\n\t\t\ttsk, ok := model.(taskprogress.Model)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{\n\t\t\t\tTime:     time.Now(),\n\t\t\t\tSequence: tsk.Sequence(),\n\t\t\t\tID:       tsk.ID(),\n\t\t\t})\n\n\t\t\tgot := gotModel.View()\n\n\t\t\tt.Log(got)\n\t\t\tsnaps.MatchSnapshot(t, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/handler.go",
    "content": "package ui\n\nimport (\n\t\"sync\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly\"\n\t\"github.com/anchore/bubbly/bubbles/taskprogress\"\n\tstereoscopeEvent \"github.com/anchore/stereoscope/pkg/event\"\n\tsyftEvent \"github.com/anchore/syft/syft/event\"\n)\n\nvar _ interface {\n\tbubbly.EventHandler\n\tbubbly.MessageListener\n\tbubbly.HandleWaiter\n} = (*Handler)(nil)\n\ntype HandlerConfig struct {\n\tTitleWidth        int\n\tAdjustDefaultTask func(taskprogress.Model) taskprogress.Model\n}\n\ntype Handler struct {\n\tWindowSize tea.WindowSizeMsg\n\tRunning    *sync.WaitGroup\n\tConfig     HandlerConfig\n\n\tbubbly.EventHandler\n\n\tonNewCatalogerTask *sync.Once\n}\n\nfunc DefaultHandlerConfig() HandlerConfig {\n\treturn HandlerConfig{\n\t\tTitleWidth: 30,\n\t}\n}\n\nfunc New(cfg HandlerConfig) *Handler {\n\td := bubbly.NewEventDispatcher()\n\n\th := &Handler{\n\t\tEventHandler:       d,\n\t\tRunning:            &sync.WaitGroup{},\n\t\tConfig:             cfg,\n\t\tonNewCatalogerTask: &sync.Once{},\n\t}\n\n\t// register all supported event types with the respective handler functions\n\td.AddHandlers(map[partybus.EventType]bubbly.EventHandlerFn{\n\t\tstereoscopeEvent.PullDockerImage:     simpleHandler(h.handlePullDockerImage),\n\t\tstereoscopeEvent.PullContainerdImage: simpleHandler(h.handlePullContainerdImage),\n\t\tstereoscopeEvent.ReadImage:           simpleHandler(h.handleReadImage),\n\t\tstereoscopeEvent.FetchImage:          simpleHandler(h.handleFetchImage),\n\t\tsyftEvent.FileIndexingStarted:        simpleHandler(h.handleFileIndexingStarted),\n\t\tsyftEvent.AttestationStarted:         simpleHandler(h.handleAttestationStarted),\n\t\tsyftEvent.PullSourceStarted:          simpleHandler(h.handlePullSourceStarted),\n\t\tsyftEvent.CatalogerTaskStarted:       h.handleCatalogerTaskStarted,\n\t})\n\n\treturn h\n}\n\nfunc simpleHandler(fn func(partybus.Event) []tea.Model) bubbly.EventHandlerFn {\n\treturn func(e partybus.Event) ([]tea.Model, tea.Cmd) {\n\t\treturn fn(e), nil\n\t}\n}\n\nfunc (m *Handler) OnMessage(msg tea.Msg) {\n\tif msg, ok := msg.(tea.WindowSizeMsg); ok {\n\t\tm.WindowSize = msg\n\t}\n}\n\nfunc (m *Handler) Wait() {\n\tm.Running.Wait()\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/new_task_progress.go",
    "content": "package ui\n\nimport \"github.com/anchore/bubbly/bubbles/taskprogress\"\n\nfunc (m Handler) newTaskProgress(title taskprogress.Title, opts ...taskprogress.Option) taskprogress.Model {\n\ttsk := taskprogress.New(m.Running, opts...)\n\n\ttsk.HideProgressOnSuccess = true\n\ttsk.HideStageOnSuccess = true\n\ttsk.WindowSize = m.WindowSize\n\ttsk.TitleWidth = m.Config.TitleWidth\n\ttsk.TitleOptions = title\n\n\tif m.Config.AdjustDefaultTask != nil {\n\t\ttsk = m.Config.AdjustDefaultTask(tsk)\n\t}\n\n\treturn tsk\n}\n"
  },
  {
    "path": "cmd/syft/cli/ui/util_test.go",
    "content": "package ui\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n\t\"testing\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n)\n\nfunc runModel(t testing.TB, m tea.Model, iterations int, message tea.Msg, h ...*sync.WaitGroup) tea.Model {\n\tt.Helper()\n\tif iterations == 0 {\n\t\titerations = 1\n\t}\n\tm.Init()\n\tvar cmd tea.Cmd = func() tea.Msg {\n\t\treturn message\n\t}\n\n\tfor _, each := range h {\n\t\tif each != nil {\n\t\t\teach.Wait()\n\t\t}\n\t}\n\n\tfor i := 0; cmd != nil && i < iterations; i++ {\n\t\tmsgs := flatten(cmd())\n\t\tvar nextCmds []tea.Cmd\n\t\tvar next tea.Cmd\n\t\tfor _, msg := range msgs {\n\t\t\tt.Logf(\"Message: %+v %+v\\n\", reflect.TypeOf(msg), msg)\n\t\t\tm, next = m.Update(msg)\n\t\t\tnextCmds = append(nextCmds, next)\n\t\t}\n\t\tcmd = tea.Batch(nextCmds...)\n\t}\n\n\treturn m\n}\n\nfunc flatten(ps ...tea.Msg) (msgs []tea.Msg) {\n\tfor _, p := range ps {\n\t\tif bm, ok := p.(tea.BatchMsg); ok {\n\t\t\tfor _, m := range bm {\n\t\t\t\tif m == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tmsgs = append(msgs, flatten(m())...)\n\t\t\t}\n\t\t} else {\n\t\t\tmsgs = []tea.Msg{p}\n\t\t}\n\t}\n\treturn msgs\n}\n"
  },
  {
    "path": "cmd/syft/internal/clio_setup_config.go",
    "content": "package internal\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/stereoscope\"\n\thandler \"github.com/anchore/syft/cmd/syft/cli/ui\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/redact\"\n)\n\nfunc AppClioSetupConfig(id clio.Identification, out io.Writer) *clio.SetupConfig {\n\tclioCfg := clio.NewSetupConfig(id).\n\t\tWithGlobalConfigFlag().   // add persistent -c <path> for reading an application config from\n\t\tWithGlobalLoggingFlags(). // add persistent -v and -q flags tied to the logging config\n\t\tWithConfigInRootHelp().   // --help on the root command renders the full application config in the help text\n\t\tWithUIConstructor(\n\t\t\t// select a UI based on the logging configuration and state of stdin (if stdin is a tty)\n\t\t\tfunc(cfg clio.Config) (*clio.UICollection, error) {\n\t\t\t\tnoUI := ui.None(out, cfg.Log.Quiet)\n\t\t\t\tif !cfg.Log.AllowUI(os.Stdin) || cfg.Log.Quiet {\n\t\t\t\t\treturn clio.NewUICollection(noUI), nil\n\t\t\t\t}\n\n\t\t\t\treturn clio.NewUICollection(\n\t\t\t\t\tui.New(out, cfg.Log.Quiet,\n\t\t\t\t\t\thandler.New(handler.DefaultHandlerConfig()),\n\t\t\t\t\t),\n\t\t\t\t\tnoUI,\n\t\t\t\t), nil\n\t\t\t},\n\t\t).\n\t\tWithInitializers(\n\t\t\tfunc(state *clio.State) error {\n\t\t\t\t// clio is setting up and providing the bus, redact store, and logger to the application. Once loaded,\n\t\t\t\t// we can hoist them into the internal packages for global use.\n\t\t\t\tstereoscope.SetBus(state.Bus)\n\t\t\t\tbus.Set(state.Bus)\n\n\t\t\t\tredact.Set(state.RedactStore)\n\n\t\t\t\tlog.Set(state.Logger)\n\t\t\t\tstereoscope.SetLogger(state.Logger.Nested(\"from\", \"stereoscope\"))\n\t\t\t\treturn nil\n\t\t\t},\n\t\t).\n\t\tWithPostRuns(func(_ *clio.State, _ error) {\n\t\t\tstereoscope.Cleanup() //nolint:staticcheck // we don't have access to the image object here\n\t\t})\n\treturn clioCfg\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/attest.go",
    "content": "package commands\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/spf13/cobra\"\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst (\n\tattestExample = `  {{.appName}} {{.command}} --output [FORMAT] alpine:latest            defaults to using images from a Docker daemon. If Docker is not present, the image is pulled directly from the registry\n`\n\tattestSchemeHelp = \"\\n  \" + schemeHelpHeader + \"\\n\" + imageSchemeHelp\n\tattestHelp       = attestExample + attestSchemeHelp\n\tcosignBinName    = \"cosign\"\n\tjsonFormat       = \"json\"\n)\n\ntype attestOptions struct {\n\toptions.Config      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.Output      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.UpdateCheck `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.Catalog     `yaml:\",inline\" mapstructure:\",squash\"`\n\tAttest              options.Attest `yaml:\"attest\" mapstructure:\"attest\"`\n\tCache               options.Cache  `json:\"-\" yaml:\"cache\" mapstructure:\"cache\"`\n}\n\nfunc Attest(app clio.Application) *cobra.Command {\n\tid := app.ID()\n\n\topts := defaultAttestOptions()\n\n\t// template format explicitly not allowed\n\topts.Template.Enabled = false\n\n\treturn app.SetupCommand(&cobra.Command{\n\t\tUse:   \"attest --output [FORMAT] <IMAGE>\",\n\t\tShort: \"Generate an SBOM as an attestation for the given [SOURCE] container image\",\n\t\tLong:  \"Generate a packaged-based Software Bill Of Materials (SBOM) from a container image as the predicate of an in-toto attestation that will be uploaded to the image registry\",\n\t\tExample: internal.Tprintf(attestHelp, map[string]interface{}{\n\t\t\t\"appName\": id.Name,\n\t\t\t\"command\": \"attest\",\n\t\t}),\n\t\tArgs:    validateScanArgs,\n\t\tPreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\trestoreStdout := ui.CaptureStdoutToTraceLog()\n\t\t\tdefer restoreStdout()\n\n\t\t\treturn runAttest(cmd.Context(), id, &opts, args[0])\n\t\t},\n\t}, &opts)\n}\n\nfunc defaultAttestOptions() attestOptions {\n\treturn attestOptions{\n\t\tOutput:      defaultAttestOutputOptions(),\n\t\tUpdateCheck: options.DefaultUpdateCheck(),\n\t\tCatalog:     options.DefaultCatalog(),\n\t\tCache:       options.DefaultCache(),\n\t}\n}\n\nfunc defaultAttestOutputOptions() options.Output {\n\treturn options.Output{\n\t\tAllowMultipleOutputs: false,\n\t\tAllowToFile:          false,\n\t\tAllowableOptions: []string{\n\t\t\tstring(syftjson.ID),\n\t\t\tstring(cyclonedxjson.ID),\n\t\t\tstring(spdxjson.ID),\n\t\t\tstring(spdxtagvalue.ID),\n\t\t},\n\t\tOutputs: []string{syftjson.ID.String()},\n\t\t// OutputFile is omitted (defaults to Enabled: false, explicitly not allowed for attestation)\n\t\tFormat: options.DefaultFormat(),\n\t}\n}\n\nfunc runAttest(ctx context.Context, id clio.Identification, opts *attestOptions, userInput string) error {\n\t// TODO: what other validation here besides binary name?\n\tif !commandExists(cosignBinName) {\n\t\treturn fmt.Errorf(\"'syft attest' requires cosign to be installed, however it does not appear to be on PATH\")\n\t}\n\n\t// this is the file that will contain the SBOM being attested\n\tf, err := os.CreateTemp(\"\", \"syft-attest-\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create temp file: %w\", err)\n\t}\n\tdefer os.Remove(f.Name())\n\n\ts, err := generateSBOMForAttestation(ctx, id, &opts.Catalog, userInput)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to build SBOM: %w\", err)\n\t}\n\n\tif err = writeSBOMToFormattedFile(s, f, opts); err != nil {\n\t\treturn fmt.Errorf(\"unable to write SBOM to file: %w\", err)\n\t}\n\n\tif err = createAttestation(f.Name(), opts, userInput); err != nil {\n\t\treturn err\n\t}\n\n\tbus.Notify(\"Attestation has been created, please check your registry for the output or use the cosign command:\")\n\tbus.Notify(fmt.Sprintf(\"cosign download attestation %s\", userInput))\n\treturn nil\n}\n\nfunc writeSBOMToFormattedFile(s *sbom.SBOM, sbomFile io.Writer, opts *attestOptions) error {\n\tif sbomFile == nil {\n\t\treturn fmt.Errorf(\"no output file provided\")\n\t}\n\n\tencs, err := opts.Encoders()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create encoders: %w\", err)\n\t}\n\n\tencoders := format.NewEncoderCollection(encs...)\n\tencoder := encoders.GetByString(opts.Outputs[0])\n\tif encoder == nil {\n\t\treturn fmt.Errorf(\"unable to find encoder for %q\", opts.Outputs[0])\n\t}\n\n\tif err = encoder.Encode(sbomFile, *s); err != nil {\n\t\treturn fmt.Errorf(\"unable to encode SBOM: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc createAttestation(sbomFilepath string, opts *attestOptions, userInput string) error {\n\texecCmd, err := attestCommand(sbomFilepath, opts, userInput)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to craft attest command: %w\", err)\n\t}\n\n\tlog.WithFields(\"cmd\", strings.Join(execCmd.Args, \" \")).Trace(\"creating attestation\")\n\n\t// bus adapter for ui to hook into stdout via an os pipe\n\tr, w, err := os.Pipe()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create os pipe: %w\", err)\n\t}\n\tdefer w.Close()\n\n\tmon := progress.NewManual(-1)\n\n\tbus.Publish(\n\t\tpartybus.Event{\n\t\t\tType: event.AttestationStarted,\n\t\t\tSource: monitor.GenericTask{\n\t\t\t\tTitle: monitor.Title{\n\t\t\t\t\tDefault:      \"Create attestation\",\n\t\t\t\t\tWhileRunning: \"Creating attestation\",\n\t\t\t\t\tOnSuccess:    \"Created attestation\",\n\t\t\t\t},\n\t\t\t\tContext: \"cosign\",\n\t\t\t},\n\t\t\tValue: &monitor.ShellProgress{\n\t\t\t\tReader:       r,\n\t\t\t\tProgressable: mon,\n\t\t\t},\n\t\t},\n\t)\n\n\texecCmd.Stdout = w\n\texecCmd.Stderr = w\n\n\t// attest the SBOM\n\terr = execCmd.Run()\n\tif err != nil {\n\t\tmon.SetError(err)\n\t\treturn fmt.Errorf(\"unable to attest SBOM: %w\", err)\n\t}\n\n\tmon.SetCompleted()\n\treturn nil\n}\n\nfunc attestCommand(sbomFilepath string, opts *attestOptions, userInput string) (*exec.Cmd, error) {\n\toutputNames := opts.OutputNameSet()\n\tvar outputName string\n\tswitch outputNames.Size() {\n\tcase 0:\n\t\treturn nil, fmt.Errorf(\"no output format specified\")\n\tcase 1:\n\t\toutputName = outputNames.List()[0]\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"multiple output formats specified: %s\", strings.Join(outputNames.List(), \", \"))\n\t}\n\n\targs := []string{\"attest\", userInput, \"--predicate\", sbomFilepath, \"--type\", predicateType(outputName), \"-y\"}\n\tif opts.Attest.Key != \"\" {\n\t\targs = append(args, \"--key\", opts.Attest.Key.String())\n\t}\n\n\texecCmd := exec.Command(cosignBinName, args...)\n\texecCmd.Env = os.Environ()\n\tif opts.Attest.Key != \"\" {\n\t\texecCmd.Env = append(execCmd.Env, fmt.Sprintf(\"COSIGN_PASSWORD=%s\", opts.Attest.Password))\n\t} else {\n\t\t// no key provided, use cosign's keyless mode\n\t\texecCmd.Env = append(execCmd.Env, \"COSIGN_EXPERIMENTAL=1\")\n\t}\n\n\treturn execCmd, nil\n}\n\nfunc predicateType(outputName string) string {\n\t// select the Cosign predicate type based on defined output type\n\t// As orientation, check: https://github.com/sigstore/cosign/blob/main/pkg/cosign/attestation/attestation.go\n\tswitch strings.ToLower(outputName) {\n\tcase \"cyclonedx-json\":\n\t\treturn \"cyclonedx\"\n\tcase \"spdx-tag-value\", \"spdx-tv\":\n\t\treturn \"spdx\"\n\tcase \"spdx-json\", jsonFormat:\n\t\treturn \"spdxjson\"\n\tdefault:\n\t\treturn \"custom\"\n\t}\n}\n\nfunc generateSBOMForAttestation(ctx context.Context, id clio.Identification, opts *options.Catalog, userInput string) (*sbom.SBOM, error) {\n\tif len(opts.From) > 1 || (len(opts.From) == 1 && opts.From[0] != stereoscope.RegistryTag) {\n\t\treturn nil, fmt.Errorf(\"attest requires use of an OCI registry directly, one or more of the specified sources is unsupported: %v\", opts.From)\n\t}\n\n\tsrc, err := getSource(ctx, opts, userInput, stereoscope.RegistryTag)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\tif src != nil {\n\t\t\tif err := src.Close(); err != nil {\n\t\t\t\tlog.Tracef(\"unable to close source: %+v\", err)\n\t\t\t}\n\t\t}\n\t}()\n\n\ts, err := generateSBOM(ctx, id, src, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif s == nil {\n\t\treturn nil, fmt.Errorf(\"no SBOM produced for %q\", userInput)\n\t}\n\n\treturn s, nil\n}\n\nfunc commandExists(cmd string) bool {\n\t_, err := exec.LookPath(cmd)\n\treturn err == nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/attest_test.go",
    "content": "package commands\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/spf13/cobra\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/clio/cliotestutils\"\n\t\"github.com/anchore/syft/cmd/syft/internal\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_writeSBOMToFormattedFile(t *testing.T) {\n\ttype args struct {\n\t\ts    *sbom.SBOM\n\t\topts *attestOptions\n\t}\n\ttests := []struct {\n\t\tname         string\n\t\targs         args\n\t\twantSbomFile string\n\t\twantErr      bool\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\targs: args{\n\t\t\t\topts: &attestOptions{\n\t\t\t\t\tOutput: func() options.Output {\n\t\t\t\t\t\tdef := defaultAttestOutputOptions()\n\t\t\t\t\t\tdef.Outputs = []string{\"syft-json\"}\n\t\t\t\t\t\treturn def\n\t\t\t\t\t}(),\n\t\t\t\t},\n\t\t\t\ts: &sbom.SBOM{\n\t\t\t\t\tArtifacts:     sbom.Artifacts{},\n\t\t\t\t\tRelationships: nil,\n\t\t\t\t\tSource: source.Description{\n\t\t\t\t\t\tID:      \"source-id\",\n\t\t\t\t\t\tName:    \"source-name\",\n\t\t\t\t\t\tVersion: \"source-version\",\n\t\t\t\t\t},\n\t\t\t\t\tDescriptor: sbom.Descriptor{\n\t\t\t\t\t\tName:    \"syft-test\",\n\t\t\t\t\t\tVersion: \"non-version\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantSbomFile: `{\n \"artifacts\": [],\n \"artifactRelationships\": [],\n \"source\": {\n  \"id\": \"source-id\",\n  \"name\": \"source-name\",\n  \"version\": \"source-version\",\n  \"type\": \"\",\n  \"metadata\": null\n },\n \"distro\": {},\n \"descriptor\": {\n  \"name\": \"syft-test\",\n  \"version\": \"non-version\"\n },\n \"schema\": {}\n}`,\n\t\t\twantErr: false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsbomFile := &bytes.Buffer{}\n\n\t\t\terr := writeSBOMToFormattedFile(tt.args.s, sbomFile, tt.args.opts)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"writeSBOMToFormattedFile() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// redact the schema block\n\t\t\tre := regexp.MustCompile(`(?s)\"schema\":\\W*\\{.*?},?`)\n\t\t\tsubject := re.ReplaceAllString(sbomFile.String(), `\"schema\":{}`)\n\n\t\t\tassert.JSONEq(t, tt.wantSbomFile, subject)\n\t\t})\n\t}\n}\n\nfunc Test_attestCommand(t *testing.T) {\n\tcmdPrefix := cosignBinName\n\tlp, err := exec.LookPath(cosignBinName)\n\tif err == nil {\n\t\tcmdPrefix = lp\n\t}\n\n\tfullCmd := func(args string) string {\n\t\treturn fmt.Sprintf(\"%s %s\", cmdPrefix, args)\n\t}\n\n\ttype args struct {\n\t\tsbomFilepath string\n\t\topts         attestOptions\n\t\tuserInput    string\n\t}\n\ttests := []struct {\n\t\tname        string\n\t\targs        args\n\t\twantCmd     string\n\t\twantEnvVars map[string]string\n\t\tnotEnvVars  []string\n\t\twantErr     require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"with key and password\",\n\t\t\targs: args{\n\t\t\t\tuserInput:    \"myimage\",\n\t\t\t\tsbomFilepath: \"/tmp/sbom-filepath.json\",\n\t\t\t\topts: func() attestOptions {\n\t\t\t\t\tdef := defaultAttestOptions()\n\t\t\t\t\tdef.Outputs = []string{\"syft-json\"}\n\t\t\t\t\tdef.Attest.Key = \"key\"\n\t\t\t\t\tdef.Attest.Password = \"password\"\n\t\t\t\t\treturn def\n\t\t\t\t}(),\n\t\t\t},\n\t\t\twantCmd: fullCmd(\"attest myimage --predicate /tmp/sbom-filepath.json --type custom -y --key key\"),\n\t\t\twantEnvVars: map[string]string{\n\t\t\t\t\"COSIGN_PASSWORD\": \"password\",\n\t\t\t},\n\t\t\tnotEnvVars: []string{\n\t\t\t\t\"COSIGN_EXPERIMENTAL\", // only for keyless\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"keyless\",\n\t\t\targs: args{\n\t\t\t\tuserInput:    \"myimage\",\n\t\t\t\tsbomFilepath: \"/tmp/sbom-filepath.json\",\n\t\t\t\topts: func() attestOptions {\n\t\t\t\t\tdef := defaultAttestOptions()\n\t\t\t\t\tdef.Outputs = []string{\"syft-json\"}\n\t\t\t\t\treturn def\n\t\t\t\t}(),\n\t\t\t},\n\t\t\twantCmd: fullCmd(\"attest myimage --predicate /tmp/sbom-filepath.json --type custom -y\"),\n\t\t\twantEnvVars: map[string]string{\n\t\t\t\t\"COSIGN_EXPERIMENTAL\": \"1\",\n\t\t\t},\n\t\t\tnotEnvVars: []string{\n\t\t\t\t\"COSIGN_PASSWORD\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tgot, err := attestCommand(tt.args.sbomFilepath, &tt.args.opts, tt.args.userInput)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NotNil(t, got)\n\t\t\tassert.Equal(t, tt.wantCmd, got.String())\n\n\t\t\tgotEnv := strset.New(got.Env...)\n\n\t\t\tfor k, v := range tt.wantEnvVars {\n\t\t\t\tassert.True(t, gotEnv.Has(fmt.Sprintf(\"%s=%s\", k, v)))\n\t\t\t}\n\n\t\t\tfor _, k := range tt.notEnvVars {\n\t\t\t\tfor _, env := range got.Env {\n\t\t\t\t\tfields := strings.Split(env, \"=\")\n\t\t\t\t\tif fields[0] == k {\n\t\t\t\t\t\tt.Errorf(\"attestCommand() unexpected environment variable %s\", k)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_predicateType(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"cyclonedx-json\",\n\t\t\twant: \"cyclonedx\",\n\t\t},\n\t\t{\n\t\t\tname: \"spdx-tag-value\",\n\t\t\twant: \"spdx\",\n\t\t},\n\t\t{\n\t\t\tname: \"spdx-tv\",\n\t\t\twant: \"spdx\",\n\t\t},\n\t\t{\n\t\t\tname: \"spdx-json\",\n\t\t\twant: \"spdxjson\",\n\t\t},\n\t\t{\n\t\t\tname: \"json\",\n\t\t\twant: \"spdxjson\",\n\t\t},\n\t\t{\n\t\t\tname: \"syft-json\",\n\t\t\twant: \"custom\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equalf(t, tt.want, predicateType(tt.name), \"predicateType(%v)\", tt.name)\n\t\t})\n\t}\n}\n\nfunc Test_buildSBOMForAttestation(t *testing.T) {\n\t// note: this test is only meant to test that the filter function is wired\n\t// and not the correctness of the function in depth\n\ttype args struct {\n\t\tid        clio.Identification\n\t\topts      *options.Catalog\n\t\tuserInput string\n\t}\n\ttests := []struct {\n\t\tname    string\n\t\targs    args\n\t\twant    *sbom.SBOM\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"do not allow directory scans\",\n\t\t\targs: args{\n\t\t\t\topts: func() *options.Catalog {\n\t\t\t\t\tdef := defaultAttestOptions()\n\t\t\t\t\treturn &def.Catalog\n\t\t\t\t}(),\n\t\t\t\tuserInput: \"dir:/tmp/something\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\t_, err := generateSBOMForAttestation(context.Background(), tt.args.id, tt.args.opts, tt.args.userInput)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_attestCLIWiring(t *testing.T) {\n\tid := clio.Identification{\n\t\tName:    \"syft\",\n\t\tVersion: \"testing\",\n\t}\n\tcfg := internal.AppClioSetupConfig(id, io.Discard)\n\ttests := []struct {\n\t\tname          string\n\t\tassertionFunc func(*testing.T, *cobra.Command, []string, ...any)\n\t\twantOpts      attestOptions\n\t\targs          []string\n\t\tenv           map[string]string\n\t}{\n\t\t{\n\t\t\tname:          \"key flag is accepted\",\n\t\t\targs:          []string{\"some-image:some-tag\", \"--key\", \"some-cosign-key.key\"},\n\t\t\tassertionFunc: hasAttestOpts(options.Attest{Key: \"some-cosign-key.key\"}),\n\t\t},\n\t\t{\n\t\t\tname: \"key password is read from env\",\n\t\t\targs: []string{\"some-image:some-tag\", \"--key\", \"cosign.key\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_ATTEST_PASSWORD\": \"some-password\",\n\t\t\t},\n\t\t\tassertionFunc: hasAttestOpts(options.Attest{\n\t\t\t\tKey:      \"cosign.key\",\n\t\t\t\tPassword: \"some-password\",\n\t\t\t}),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.env != nil {\n\t\t\t\tfor k, v := range tt.env {\n\t\t\t\t\tt.Setenv(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t\tapp := cliotestutils.NewApplication(t, cfg, tt.assertionFunc)\n\t\t\tcmd := Attest(app)\n\t\t\tcmd.SetArgs(tt.args)\n\t\t\terr := cmd.Execute()\n\t\t\tassert.NoError(t, err)\n\t\t})\n\t}\n}\n\nfunc hasAttestOpts(wantOpts options.Attest) cliotestutils.AssertionFunc {\n\treturn func(t *testing.T, _ *cobra.Command, _ []string, cfgs ...any) {\n\t\tassert.Equal(t, len(cfgs), 1)\n\t\tattestOpts, ok := cfgs[0].(*attestOptions)\n\t\trequire.True(t, ok)\n\t\tif d := cmp.Diff(wantOpts, attestOpts.Attest); d != \"\" {\n\t\t\tt.Errorf(\"mismatched attest options (-want +got):\\n%s\", d)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/cataloger.go",
    "content": "package commands\n\nimport (\n\t\"os\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n)\n\nfunc Cataloger(app clio.Application) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"cataloger\",\n\t\tShort: \"Show available catalogers and configuration\",\n\t}\n\n\tcmd.AddCommand(\n\t\tCatalogerList(app),\n\t)\n\n\t// only add cataloger info command if experimental capabilities feature is enabled\n\tif isCapabilitiesExperimentEnabled() {\n\t\tcmd.AddCommand(CatalogerCaps(app))\n\t}\n\n\treturn cmd\n}\n\nfunc isCapabilitiesExperimentEnabled() bool {\n\treturn os.Getenv(\"SYFT_EXP_CAPABILITIES\") == \"true\"\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/cataloger_info.go",
    "content": "package commands\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/olekukonko/tablewriter\"\n\t\"github.com/olekukonko/tablewriter/renderer\"\n\t\"github.com/olekukonko/tablewriter/tw\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t_ \"github.com/anchore/syft/syft/pkg/cataloger\" // register all cataloger capabilities, otherwise the info command will not function\n)\n\nvar (\n\tyesStyle       = lipgloss.NewStyle().Foreground(lipgloss.Color(\"10\")) // hi green\n\tnoStyle        = lipgloss.NewStyle().Foreground(lipgloss.Color(\"8\"))  // dark grey\n\tcriteriaWidth  = 60\n\tcriteriaMargin = 10\n)\n\n// types for JSON cataloger info output\ntype (\n\tconfigFieldInfo struct {\n\t\tKey         string `json:\"key\"`\n\t\tDescription string `json:\"description\"`\n\t\tAppKey      string `json:\"app_key,omitempty\"`\n\t}\n\n\tconfigInfo struct {\n\t\tType   string            `json:\"type\"`\n\t\tFields []configFieldInfo `json:\"fields,omitempty\"`\n\t}\n\n\tdetectorPackageInfo struct {\n\t\tClass string   `json:\"class\"`\n\t\tName  string   `json:\"name\"`\n\t\tPURL  string   `json:\"purl\"`\n\t\tCPEs  []string `json:\"cpes\"`\n\t\tType  string   `json:\"type\"`\n\t}\n\n\tpatternInfo struct {\n\t\tMethod          string                           `json:\"method\"`\n\t\tCriteria        []string                         `json:\"criteria\"`\n\t\tConditions      []capabilities.DetectorCondition `json:\"conditions,omitempty\"`\n\t\tPackages        []detectorPackageInfo            `json:\"packages,omitempty\"`\n\t\tComment         string                           `json:\"comment,omitempty\"`\n\t\tPackageTypes    []string                         `json:\"package_types,omitempty\"`\n\t\tJSONSchemaTypes []string                         `json:\"json_schema_types,omitempty\"`\n\t\tCapabilities    capabilities.CapabilitySet       `json:\"capabilities,omitempty\"`\n\t}\n\n\tcatalogerInfo struct {\n\t\tEcosystem    string                     `json:\"ecosystem,omitempty\"`\n\t\tName         string                     `json:\"name\"`\n\t\tType         string                     `json:\"type\"`\n\t\tSelectors    []string                   `json:\"selectors,omitempty\"`\n\t\tDeprecated   bool                       `json:\"deprecated,omitempty\"`\n\t\tPatterns     []patternInfo              `json:\"patterns,omitempty\"`\n\t\tCapabilities capabilities.CapabilitySet `json:\"capabilities,omitempty\"`\n\t\tConfig       *configInfo                `json:\"config,omitempty\"`\n\t}\n)\n\ntype catalogerInfoOptions struct {\n\tOutput                     string `yaml:\"output\" json:\"output\" mapstructure:\"output\"`\n\toptions.CatalogerSelection `yaml:\",inline\" json:\",inline\" mapstructure:\",squash\"`\n\tNames                      []string // cataloger names from args\n}\n\nfunc (o *catalogerInfoOptions) setNames(args []string) error {\n\to.Names = args\n\n\tusingLegacyCatalogers := len(o.Catalogers) > 0\n\tusingNewCatalogers := len(o.DefaultCatalogers) > 0 || len(o.SelectCatalogers) > 0\n\tusingSelection := usingNewCatalogers || usingLegacyCatalogers\n\n\tif usingSelection && len(o.Names) > 0 {\n\t\treturn fmt.Errorf(\"cannot use both cataloger name arguments and '--catalogers'/'--select-catalogers'/'--default-catalogers' flags\")\n\t}\n\n\tif usingSelection {\n\t\t// get all available package cataloger tasks\n\t\tpkgTaskFactories := task.DefaultPackageTaskFactories()\n\t\tallPkgTasks, err := pkgTaskFactories.Tasks(task.DefaultCatalogingFactoryConfig())\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create pkg cataloger tasks: %w\", err)\n\t\t}\n\n\t\t// make the selection based on user input\n\t\tdefaultCatalogers := options.FlattenAndSort(o.DefaultCatalogers)\n\t\tselectCatalogers := options.FlattenAndSort(o.SelectCatalogers)\n\t\tselectedTaskGroups, _, err := task.SelectInGroups(\n\t\t\t[][]task.Task{allPkgTasks},\n\t\t\tcataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(defaultCatalogers...).\n\t\t\t\tWithExpression(selectCatalogers...),\n\t\t)\n\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to select catalogers: %w\", err)\n\t\t}\n\n\t\t// build the list of cataloger names based on the selection\n\t\tfor _, g := range selectedTaskGroups {\n\t\t\tfor _, t := range g {\n\t\t\t\to.Names = append(o.Names, t.Name())\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (o *catalogerInfoOptions) AddFlags(flags clio.FlagSet) {\n\tflags.StringVarP(&o.Output, \"output\", \"o\", \"format to output the cataloger info (available: table, json)\")\n}\n\nfunc defaultCatalogerCapsOptions() *catalogerInfoOptions {\n\treturn &catalogerInfoOptions{\n\t\tCatalogerSelection: options.CatalogerSelection{\n\t\t\t// this is different than the default behavior where a scan will automatically detect the default set\n\t\t\tDefaultCatalogers: []string{\"all\"},\n\t\t},\n\t}\n}\n\nfunc CatalogerCaps(app clio.Application) *cobra.Command {\n\topts := defaultCatalogerCapsOptions()\n\n\treturn app.SetupCommand(&cobra.Command{\n\t\tUse:     \"info [OPTIONS] [CATALOGER_NAMES...]\",\n\t\tShort:   \"Show detailed capabilities of catalogers\",\n\t\tArgs:    cobra.ArbitraryArgs,\n\t\tPreRunE: disableUI(app, os.Stdout),\n\t\tRunE: func(_ *cobra.Command, args []string) error {\n\t\t\tif err := opts.setNames(args); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn runCatalogerInfo(opts)\n\t\t},\n\t}, opts)\n}\n\nfunc runCatalogerInfo(opts *catalogerInfoOptions) error {\n\tdoc, err := capabilities.LoadDocument()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to load cataloger capabilities: %w\", err)\n\t}\n\n\t// filter by cataloger names if provided\n\tcatalogers := doc.Catalogers\n\tif len(opts.Names) > 0 {\n\t\tcatalogers = filterCatalogersByName(catalogers, opts.Names)\n\t}\n\n\treport, err := catalogerInfoReport(opts, doc, catalogers)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to generate cataloger info report: %w\", err)\n\t}\n\n\tbus.Report(report)\n\tbus.Notify(\"Note: the `cataloger info` command is experimental and may change or be removed without notice. Do not depend on its output in production systems.\")\n\n\treturn nil\n}\n\nfunc filterCatalogersByName(catalogers []capabilities.CatalogerEntry, names []string) []capabilities.CatalogerEntry {\n\tnameSet := make(map[string]bool)\n\tfor _, name := range names {\n\t\tnameSet[name] = true\n\t}\n\n\tvar filtered []capabilities.CatalogerEntry\n\tfor _, cat := range catalogers {\n\t\tif nameSet[cat.Name] {\n\t\t\tfiltered = append(filtered, cat)\n\t\t}\n\t}\n\treturn filtered\n}\n\nfunc catalogerInfoReport(opts *catalogerInfoOptions, doc *capabilities.Document, catalogers []capabilities.CatalogerEntry) (string, error) {\n\tswitch opts.Output {\n\tcase jsonFormat:\n\t\treturn renderCatalogerInfoJSON(doc, catalogers)\n\tcase \"table\", \"\":\n\t\treturn renderCatalogerInfoTable(doc, catalogers), nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"invalid output format %q, must be one of: table, json\", opts.Output)\n\t}\n}\n\nfunc renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabilities.CatalogerEntry) (string, error) {\n\ttype document struct {\n\t\tCatalogers []catalogerInfo `json:\"catalogers\"`\n\t}\n\n\tdocOut := document{}\n\n\t// sort catalogers by ecosystem then name\n\tsort.Slice(catalogers, func(i, j int) bool {\n\t\tif catalogers[i].Ecosystem != catalogers[j].Ecosystem {\n\t\t\treturn catalogers[i].Ecosystem < catalogers[j].Ecosystem\n\t\t}\n\t\treturn catalogers[i].Name < catalogers[j].Name\n\t})\n\n\tfor _, cat := range catalogers {\n\t\tinfo := catalogerInfo{\n\t\t\tEcosystem:  cat.Ecosystem,\n\t\t\tName:       cat.Name,\n\t\t\tType:       cat.Type,\n\t\t\tSelectors:  cat.Selectors,\n\t\t\tDeprecated: isDeprecatedCataloger(cat.Selectors),\n\t\t}\n\n\t\t// convert parsers to patterns if available\n\t\tinfo.Patterns = convertParsersToPatterns(cat.Parsers)\n\n\t\t// if no parsers, use detectors instead\n\t\tif len(info.Patterns) == 0 {\n\t\t\tinfo.Capabilities = cat.Capabilities\n\t\t\tinfo.Patterns = convertDetectorsToPatterns(cat.Detectors, cat.PackageTypes, cat.JSONSchemaTypes)\n\t\t}\n\n\t\tinfo.Config = getConfigInfoFromDocument(doc, cat.Config)\n\n\t\tdocOut.Catalogers = append(docOut.Catalogers, info)\n\t}\n\n\tby, err := json.Marshal(docOut)\n\treturn string(by), err\n}\n\n// isDeprecatedCataloger checks if a cataloger is deprecated based on its selectors\nfunc isDeprecatedCataloger(selectors []string) bool {\n\tfor _, selector := range selectors {\n\t\tif selector == \"deprecated\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// convertDetectorPackages converts detector package info to the JSON output format\nfunc convertDetectorPackages(pkgs []capabilities.DetectorPackageInfo) []detectorPackageInfo {\n\tvar result []detectorPackageInfo\n\tfor _, pkg := range pkgs {\n\t\tresult = append(result, detectorPackageInfo{\n\t\t\tClass: pkg.Class,\n\t\t\tName:  pkg.Name,\n\t\t\tPURL:  pkg.PURL,\n\t\t\tCPEs:  pkg.CPEs,\n\t\t\tType:  pkg.Type,\n\t\t})\n\t}\n\treturn result\n}\n\n// convertParsersToPatterns converts parser entries to pattern info for JSON output\nfunc convertParsersToPatterns(parsers []capabilities.Parser) []patternInfo {\n\tvar patterns []patternInfo\n\tfor _, parser := range parsers {\n\t\tpatterns = append(patterns, patternInfo{\n\t\t\tMethod:          string(parser.Detector.Method),\n\t\t\tCriteria:        parser.Detector.Criteria,\n\t\t\tConditions:      parser.Detector.Conditions,\n\t\t\tPackages:        convertDetectorPackages(parser.Detector.Packages),\n\t\t\tComment:         parser.Detector.Comment,\n\t\t\tPackageTypes:    parser.PackageTypes,\n\t\t\tJSONSchemaTypes: parser.JSONSchemaTypes,\n\t\t\tCapabilities:    parser.Capabilities,\n\t\t})\n\t}\n\treturn patterns\n}\n\n// convertDetectorsToPatterns converts detector entries to pattern info for JSON output (for non-parser catalogers)\nfunc convertDetectorsToPatterns(detectors []capabilities.Detector, packageTypes, jsonSchemaTypes []string) []patternInfo {\n\tvar patterns []patternInfo\n\tfor _, det := range detectors {\n\t\tpatterns = append(patterns, patternInfo{\n\t\t\tMethod:          string(det.Method),\n\t\t\tCriteria:        det.Criteria,\n\t\t\tConditions:      det.Conditions,\n\t\t\tPackages:        convertDetectorPackages(det.Packages),\n\t\t\tComment:         det.Comment,\n\t\t\tPackageTypes:    packageTypes,\n\t\t\tJSONSchemaTypes: jsonSchemaTypes,\n\t\t})\n\t}\n\treturn patterns\n}\n\n// getConfigInfoFromDocument retrieves config info from the capabilities document\nfunc getConfigInfoFromDocument(doc *capabilities.Document, configType string) *configInfo {\n\tif configType == \"\" {\n\t\treturn nil\n\t}\n\tconfigEntry, ok := doc.Configs[configType]\n\tif !ok {\n\t\treturn nil\n\t}\n\tcfg := &configInfo{\n\t\tType: configType,\n\t}\n\tfor _, field := range configEntry.Fields {\n\t\tcfg.Fields = append(cfg.Fields, configFieldInfo{\n\t\t\tKey:         field.Key,\n\t\t\tDescription: field.Description,\n\t\t\tAppKey:      field.AppKey,\n\t\t})\n\t}\n\treturn cfg\n}\n\nfunc renderCatalogerInfoTable(_ *capabilities.Document, catalogers []capabilities.CatalogerEntry) string {\n\tif len(catalogers) == 0 {\n\t\treturn noStyle.Render(\"No catalogers found\")\n\t}\n\n\t// sort catalogers by ecosystem then name\n\tsort.Slice(catalogers, func(i, j int) bool {\n\t\tif catalogers[i].Ecosystem != catalogers[j].Ecosystem {\n\t\t\treturn catalogers[i].Ecosystem < catalogers[j].Ecosystem\n\t\t}\n\t\treturn catalogers[i].Name < catalogers[j].Name\n\t})\n\n\tvar buf bytes.Buffer\n\n\t// create table with hierarchical merging\n\ttable := tablewriter.NewTable(&buf,\n\t\ttablewriter.WithRenderer(renderer.NewBlueprint(tw.Rendition{\n\t\t\tSettings: tw.Settings{Separators: tw.Separators{BetweenRows: tw.On}},\n\t\t})),\n\t\ttablewriter.WithConfig(tablewriter.Config{\n\t\t\tRow: tw.CellConfig{\n\t\t\t\tFormatting: tw.CellFormatting{MergeMode: tw.MergeHierarchical},\n\t\t\t\tAlignment:  tw.CellAlignment{Global: tw.AlignLeft},\n\t\t\t},\n\t\t}),\n\t)\n\n\t// set headers\n\ttable.Header(\"ECOSYSTEM\", \"CATALOGER\", \"CRITERIA\", \"LICENSE\", \"NODES\", \"EDGES\", \"KINDS\", \"LISTING\", \"DIGESTS\", \"HASH\")\n\n\t// build rows for each cataloger\n\tvar data [][]string\n\tfor _, cat := range catalogers {\n\t\tecosystem := cat.Ecosystem\n\t\tif ecosystem == \"\" {\n\t\t\tecosystem = \"other\"\n\t\t}\n\n\t\tif cat.Type == \"generic\" {\n\t\t\t// generic catalogers: one row per parser\n\t\t\tfor _, parser := range cat.Parsers {\n\t\t\t\tcriteria := formatCriteria([]capabilities.Detector{parser.Detector})\n\t\t\t\trow := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, parser.Capabilities)\n\t\t\t\tdata = append(data, row)\n\t\t\t}\n\t\t} else {\n\t\t\t// custom catalogers: one row with all detectors\n\t\t\tcriteria := formatCriteria(cat.Detectors)\n\t\t\trow := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, cat.Capabilities)\n\t\t\tdata = append(data, row)\n\t\t}\n\t}\n\n\t// add all rows at once for better merging\n\t_ = table.Bulk(data)\n\t_ = table.Render()\n\treturn buf.String()\n}\n\n// buildTableRowFromCapabilities builds a table row from capability values\nfunc buildTableRowFromCapabilities(ecosystem, name, criteria string, caps capabilities.CapabilitySet) []string {\n\t// extract capability default values\n\tlicense := extractBoolCapability(caps, \"license\")\n\tnodes := extractNodesCapability(caps)\n\tedges := extractStringCapability(caps, \"dependency.edges\")\n\tkinds := extractArrayCapability(caps, \"dependency.kinds\")\n\tlisting := extractBoolCapability(caps, \"package_manager.files.listing\")\n\tdigests := extractBoolCapability(caps, \"package_manager.files.digests\")\n\thash := extractBoolCapability(caps, \"package_manager.package_integrity_hash\")\n\n\treturn []string{\n\t\tecosystem,\n\t\tname,\n\t\tcriteria,\n\t\tlicense,\n\t\tnodes,\n\t\tedges,\n\t\tkinds,\n\t\tlisting,\n\t\tdigests,\n\t\thash,\n\t}\n}\n\n// extractBoolCapability extracts a boolean capability value and formats it\nfunc extractBoolCapability(caps capabilities.CapabilitySet, name string) string {\n\tfor _, cap := range caps {\n\t\tif cap.Name == name {\n\t\t\tif b, ok := cap.Default.(bool); ok {\n\t\t\t\tif b {\n\t\t\t\t\treturn yesStyle.Render(\"✔\")\n\t\t\t\t}\n\t\t\t\treturn noStyle.Render(\"·\")\n\t\t\t}\n\t\t\treturn noStyle.Render(\"·\")\n\t\t}\n\t}\n\treturn noStyle.Render(\"·\")\n}\n\n// extractStringCapability extracts a string capability value\nfunc extractStringCapability(caps capabilities.CapabilitySet, name string) string {\n\tfor _, cap := range caps {\n\t\tif cap.Name == name {\n\t\t\tif s, ok := cap.Default.(string); ok && s != \"\" {\n\t\t\t\treturn s\n\t\t\t}\n\t\t\treturn noStyle.Render(\"·\")\n\t\t}\n\t}\n\treturn noStyle.Render(\"·\")\n}\n\n// extractArrayCapability extracts an array capability value and formats it as comma-separated\nfunc extractArrayCapability(caps capabilities.CapabilitySet, name string) string {\n\tfor _, cap := range caps {\n\t\tif cap.Name == name {\n\t\t\t// handle various array types\n\t\t\tswitch v := cap.Default.(type) {\n\t\t\tcase []string:\n\t\t\t\tif len(v) > 0 {\n\t\t\t\t\treturn strings.Join(v, \", \")\n\t\t\t\t}\n\t\t\tcase []interface{}:\n\t\t\t\tif len(v) > 0 {\n\t\t\t\t\tstrs := make([]string, 0, len(v))\n\t\t\t\t\tfor _, item := range v {\n\t\t\t\t\t\tstrs = append(strs, fmt.Sprintf(\"%v\", item))\n\t\t\t\t\t}\n\t\t\t\t\treturn strings.Join(strs, \", \")\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn noStyle.Render(\"·\")\n\t\t}\n\t}\n\treturn noStyle.Render(\"·\")\n}\n\n// extractNodesCapability extracts dependency.depth and formats it\n// maps [\"direct\", \"indirect\"] to \"transitive\"\nfunc extractNodesCapability(caps capabilities.CapabilitySet) string {\n\tfor _, cap := range caps {\n\t\tif cap.Name == \"dependency.depth\" {\n\t\t\tswitch v := cap.Default.(type) {\n\t\t\tcase []string:\n\t\t\t\treturn formatDepthStringArray(v)\n\t\t\tcase []interface{}:\n\t\t\t\treturn formatDepthInterfaceArray(v)\n\t\t\t}\n\t\t\treturn noStyle.Render(\"·\")\n\t\t}\n\t}\n\treturn noStyle.Render(\"·\")\n}\n\n// formatDepthStringArray formats a []string dependency depth value\nfunc formatDepthStringArray(v []string) string {\n\tif len(v) == 0 {\n\t\treturn noStyle.Render(\"·\")\n\t}\n\tif hasBothDirectAndIndirect(v) {\n\t\treturn \"transitive\"\n\t}\n\treturn strings.Join(v, \", \")\n}\n\n// formatDepthInterfaceArray formats a []interface{} dependency depth value\nfunc formatDepthInterfaceArray(v []interface{}) string {\n\tif len(v) == 0 {\n\t\treturn noStyle.Render(\"·\")\n\t}\n\tstrs := make([]string, 0, len(v))\n\tfor _, item := range v {\n\t\tstrs = append(strs, fmt.Sprintf(\"%v\", item))\n\t}\n\tif hasBothDirectAndIndirect(strs) {\n\t\treturn \"transitive\"\n\t}\n\treturn strings.Join(strs, \", \")\n}\n\n// hasBothDirectAndIndirect checks if a slice contains both \"direct\" and \"indirect\" strings\nfunc hasBothDirectAndIndirect(items []string) bool {\n\thasDirect := false\n\thasIndirect := false\n\tfor _, item := range items {\n\t\tif item == \"direct\" {\n\t\t\thasDirect = true\n\t\t}\n\t\tif item == \"indirect\" {\n\t\t\thasIndirect = true\n\t\t}\n\t}\n\treturn hasDirect && hasIndirect\n}\n\nfunc formatCriteria(detectors []capabilities.Detector) string {\n\tvar allCriteria []string\n\tmethods := strset.New()\n\n\tfor _, det := range detectors {\n\t\tallCriteria = append(allCriteria, det.Criteria...)\n\t\tmethods.Add(string(det.Method))\n\t}\n\n\t// smart word wrapping: wrap by word (criterion) up to criteriaWidth,\n\t// allow up to criteriaWidth+criteriaMargin before forcing a new line\n\tvar lines []string\n\tvar currentLine []string\n\tcurrentLength := 0\n\n\tfor _, criterion := range allCriteria {\n\t\t// calculate length including the criterion plus \", \" separator (except for first item)\n\t\titemLength := len(criterion)\n\t\tif len(currentLine) > 0 {\n\t\t\titemLength += 2 // for \", \"\n\t\t}\n\n\t\tnewLength := currentLength + itemLength\n\n\t\tif len(currentLine) > 0 && newLength > criteriaWidth {\n\t\t\t// check if it's within margin\n\t\t\tif newLength <= criteriaWidth+criteriaMargin {\n\t\t\t\t// close enough, add it anyway\n\t\t\t\tcurrentLine = append(currentLine, criterion)\n\t\t\t\tcurrentLength = newLength\n\t\t\t} else {\n\t\t\t\t// too long, finalize current line and start new one\n\t\t\t\tlines = append(lines, strings.Join(currentLine, \", \"))\n\t\t\t\tcurrentLine = []string{criterion}\n\t\t\t\tcurrentLength = len(criterion)\n\t\t\t}\n\t\t} else {\n\t\t\t// fits within width or first item\n\t\t\tcurrentLine = append(currentLine, criterion)\n\t\t\tcurrentLength = newLength\n\t\t}\n\t}\n\n\t// add final line\n\tif len(currentLine) > 0 {\n\t\tlines = append(lines, strings.Join(currentLine, \", \"))\n\t}\n\n\tmethodsList := methods.List()\n\tsort.Strings(methodsList)\n\tmethod := strings.Join(methodsList, \", \")\n\n\tif len(lines) == 0 {\n\t\treturn \"\"\n\t}\n\n\tjoined := strings.Join(lines, \"\\n\")\n\tif method != string(capabilities.GlobDetection) {\n\t\treturn fmt.Sprintf(\"%s (%s)\", joined, method)\n\t}\n\treturn joined\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/cataloger_info_test.go",
    "content": "package commands\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n)\n\nfunc Test_isDeprecatedCataloger(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tselectors []string\n\t\twant      bool\n\t}{\n\t\t{\n\t\t\tname:      \"empty selectors\",\n\t\t\tselectors: nil,\n\t\t\twant:      false,\n\t\t},\n\t\t{\n\t\t\tname:      \"no deprecated selector\",\n\t\t\tselectors: []string{\"python\", \"pip\", \"package\"},\n\t\t\twant:      false,\n\t\t},\n\t\t{\n\t\t\tname:      \"has deprecated selector\",\n\t\t\tselectors: []string{\"python\", \"deprecated\", \"package\"},\n\t\t\twant:      true,\n\t\t},\n\t\t{\n\t\t\tname:      \"only deprecated selector\",\n\t\t\tselectors: []string{\"deprecated\"},\n\t\t\twant:      true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := isDeprecatedCataloger(tt.selectors)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_hasBothDirectAndIndirect(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\titems []string\n\t\twant  bool\n\t}{\n\t\t{\n\t\t\tname:  \"empty slice\",\n\t\t\titems: nil,\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"only direct\",\n\t\t\titems: []string{\"direct\"},\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"only indirect\",\n\t\t\titems: []string{\"indirect\"},\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"both direct and indirect\",\n\t\t\titems: []string{\"direct\", \"indirect\"},\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tname:  \"both with other items\",\n\t\t\titems: []string{\"other\", \"direct\", \"more\", \"indirect\", \"stuff\"},\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tname:  \"unrelated items\",\n\t\t\titems: []string{\"foo\", \"bar\", \"baz\"},\n\t\t\twant:  false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := hasBothDirectAndIndirect(tt.items)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_filterCatalogersByName(t *testing.T) {\n\tcatalogers := []capabilities.CatalogerEntry{\n\t\t{Name: \"python-cataloger\", Ecosystem: \"python\"},\n\t\t{Name: \"java-cataloger\", Ecosystem: \"java\"},\n\t\t{Name: \"go-cataloger\", Ecosystem: \"golang\"},\n\t\t{Name: \"npm-cataloger\", Ecosystem: \"javascript\"},\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tcatalogers []capabilities.CatalogerEntry\n\t\tnames      []string\n\t\twant       []capabilities.CatalogerEntry\n\t}{\n\t\t{\n\t\t\tname:       \"empty names returns empty\",\n\t\t\tcatalogers: catalogers,\n\t\t\tnames:      nil,\n\t\t\twant:       nil,\n\t\t},\n\t\t{\n\t\t\tname:       \"single match\",\n\t\t\tcatalogers: catalogers,\n\t\t\tnames:      []string{\"python-cataloger\"},\n\t\t\twant: []capabilities.CatalogerEntry{\n\t\t\t\t{Name: \"python-cataloger\", Ecosystem: \"python\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"multiple matches\",\n\t\t\tcatalogers: catalogers,\n\t\t\tnames:      []string{\"python-cataloger\", \"java-cataloger\"},\n\t\t\twant: []capabilities.CatalogerEntry{\n\t\t\t\t{Name: \"python-cataloger\", Ecosystem: \"python\"},\n\t\t\t\t{Name: \"java-cataloger\", Ecosystem: \"java\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"no matches\",\n\t\t\tcatalogers: catalogers,\n\t\t\tnames:      []string{\"nonexistent\"},\n\t\t\twant:       nil,\n\t\t},\n\t\t{\n\t\t\tname:       \"partial matches\",\n\t\t\tcatalogers: catalogers,\n\t\t\tnames:      []string{\"python-cataloger\", \"nonexistent\"},\n\t\t\twant: []capabilities.CatalogerEntry{\n\t\t\t\t{Name: \"python-cataloger\", Ecosystem: \"python\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := filterCatalogersByName(tt.catalogers, tt.names)\n\t\t\tif diff := cmp.Diff(tt.want, got); diff != \"\" {\n\t\t\t\tt.Errorf(\"filterCatalogersByName() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_formatCriteria(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tdetectors []capabilities.Detector\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname:      \"empty detectors\",\n\t\t\tdetectors: nil,\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"single glob detector\",\n\t\t\tdetectors: []capabilities.Detector{\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.GlobDetection,\n\t\t\t\t\tCriteria: []string{\"**/*.py\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"**/*.py\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple criteria single detector\",\n\t\t\tdetectors: []capabilities.Detector{\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.GlobDetection,\n\t\t\t\t\tCriteria: []string{\"**/*.py\", \"**/*.pyc\", \"**/requirements.txt\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"**/*.py, **/*.pyc, **/requirements.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"path detection shows method\",\n\t\t\tdetectors: []capabilities.Detector{\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.PathDetection,\n\t\t\t\t\tCriteria: []string{\"/usr/bin/python\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"/usr/bin/python (path)\",\n\t\t},\n\t\t{\n\t\t\tname: \"mimetype detection shows method\",\n\t\t\tdetectors: []capabilities.Detector{\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.MIMETypeDetection,\n\t\t\t\t\tCriteria: []string{\"application/x-python\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"application/x-python (mimetype)\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple detectors combine criteria\",\n\t\t\tdetectors: []capabilities.Detector{\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.GlobDetection,\n\t\t\t\t\tCriteria: []string{\"**/*.py\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMethod:   capabilities.GlobDetection,\n\t\t\t\t\tCriteria: []string{\"**/*.pyc\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"**/*.py, **/*.pyc\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := formatCriteria(tt.detectors)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc testDocument() *capabilities.Document {\n\treturn &capabilities.Document{\n\t\tConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\"test-config\": {\n\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t{Key: \"field1\", Description: \"test field\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc Test_catalogerInfoReport(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\topts       *catalogerInfoOptions\n\t\tdoc        *capabilities.Document\n\t\tcatalogers []capabilities.CatalogerEntry\n\t\twantErr    require.ErrorAssertionFunc\n\t\tassertions func(t *testing.T, got string)\n\t}{\n\t\t{\n\t\t\tname: \"empty catalogers table\",\n\t\t\topts: &catalogerInfoOptions{Output: \"table\"},\n\t\t\tdoc:  testDocument(),\n\t\t\tassertions: func(t *testing.T, got string) {\n\t\t\t\tassert.Contains(t, got, \"No catalogers found\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty catalogers json\",\n\t\t\topts: &catalogerInfoOptions{Output: \"json\"},\n\t\t\tdoc:  testDocument(),\n\t\t\tassertions: func(t *testing.T, got string) {\n\t\t\t\tassert.Contains(t, got, `\"catalogers\":null`)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single cataloger table output\",\n\t\t\topts: &catalogerInfoOptions{Output: \"table\"},\n\t\t\tdoc:  testDocument(),\n\t\t\tcatalogers: []capabilities.CatalogerEntry{\n\t\t\t\t{\n\t\t\t\t\tName:      \"test-cataloger\",\n\t\t\t\t\tEcosystem: \"test\",\n\t\t\t\t\tType:      \"custom\",\n\t\t\t\t\tDetectors: []capabilities.Detector{\n\t\t\t\t\t\t{Method: capabilities.GlobDetection, Criteria: []string{\"**/*.test\"}},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tassertions: func(t *testing.T, got string) {\n\t\t\t\tassert.Contains(t, got, \"test-cataloger\")\n\t\t\t\tassert.Contains(t, got, \"ECOSYSTEM\")\n\t\t\t\tassert.Contains(t, got, \"CATALOGER\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single cataloger json output\",\n\t\t\topts: &catalogerInfoOptions{Output: \"json\"},\n\t\t\tdoc:  testDocument(),\n\t\t\tcatalogers: []capabilities.CatalogerEntry{\n\t\t\t\t{\n\t\t\t\t\tName:      \"test-cataloger\",\n\t\t\t\t\tEcosystem: \"test\",\n\t\t\t\t\tType:      \"custom\",\n\t\t\t\t\tSelectors: []string{\"test\", \"custom\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tassertions: func(t *testing.T, got string) {\n\t\t\t\tassert.Contains(t, got, `\"name\":\"test-cataloger\"`)\n\t\t\t\tassert.Contains(t, got, `\"ecosystem\":\"test\"`)\n\t\t\t\tassert.Contains(t, got, `\"type\":\"custom\"`)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"deprecated cataloger json output\",\n\t\t\topts: &catalogerInfoOptions{Output: \"json\"},\n\t\t\tdoc:  testDocument(),\n\t\t\tcatalogers: []capabilities.CatalogerEntry{\n\t\t\t\t{\n\t\t\t\t\tName:      \"old-cataloger\",\n\t\t\t\t\tEcosystem: \"legacy\",\n\t\t\t\t\tType:      \"custom\",\n\t\t\t\t\tSelectors: []string{\"legacy\", \"deprecated\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tassertions: func(t *testing.T, got string) {\n\t\t\t\tassert.Contains(t, got, `\"deprecated\":true`)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid output format\",\n\t\t\topts:    &catalogerInfoOptions{Output: \"invalid\"},\n\t\t\tdoc:     testDocument(),\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tgot, err := catalogerInfoReport(tt.opts, tt.doc, tt.catalogers)\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif tt.assertions != nil {\n\t\t\t\ttt.assertions(t, got)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_formatCriteria_wordWrapping(t *testing.T) {\n\t// test word wrapping behavior with long criteria lists\n\tlongCriteria := make([]string, 20)\n\tfor i := range longCriteria {\n\t\tlongCriteria[i] = \"**/file\" + strings.Repeat(\"x\", 10)\n\t}\n\n\tdetector := capabilities.Detector{\n\t\tMethod:   capabilities.GlobDetection,\n\t\tCriteria: longCriteria,\n\t}\n\n\tgot := formatCriteria([]capabilities.Detector{detector})\n\n\t// should contain newlines for wrapping\n\tassert.Contains(t, got, \"\\n\")\n\t// should contain all criteria (joined with \", \" and possibly split across lines)\n\tfor _, c := range longCriteria {\n\t\tassert.Contains(t, got, c)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/cataloger_list.go",
    "content": "package commands\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/jedib0t/go-pretty/v6/table\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\nvar (\n\tactivelyAddedStyle     = lipgloss.NewStyle().Foreground(lipgloss.Color(\"10\")) // hi green\n\tdeselectedStyle        = lipgloss.NewStyle().Foreground(lipgloss.Color(\"8\"))  // dark grey\n\tactivelyRemovedStyle   = lipgloss.NewStyle().Foreground(lipgloss.Color(\"9\"))  // high red\n\tdefaultStyle           = lipgloss.NewStyle().Underline(true)\n\tdeselectedDefaultStyle = lipgloss.NewStyle().Inherit(deselectedStyle).Underline(true)\n)\n\ntype catalogerListOptions struct {\n\tOutput                     string `yaml:\"output\" json:\"output\" mapstructure:\"output\"`\n\toptions.CatalogerSelection `yaml:\",inline\" json:\",inline\" mapstructure:\",squash\"`\n\tShowHidden                 bool `yaml:\"show-hidden\" json:\"show-hidden\" mapstructure:\"show-hidden\"`\n}\n\nfunc (o *catalogerListOptions) AddFlags(flags clio.FlagSet) {\n\tflags.StringVarP(&o.Output, \"output\", \"o\", \"format to output the cataloger list (available: table, json)\")\n\n\tflags.BoolVarP(&o.ShowHidden, \"show-hidden\", \"s\", \"show catalogers that have been de-selected\")\n}\n\nfunc defaultCatalogerListOptions() *catalogerListOptions {\n\treturn &catalogerListOptions{\n\t\tCatalogerSelection: options.CatalogerSelection{\n\t\t\t// this is different than the default behavior where a scan will automatically detect the default set\n\t\t\tDefaultCatalogers: []string{\"all\"},\n\t\t},\n\t}\n}\n\nfunc CatalogerList(app clio.Application) *cobra.Command {\n\topts := defaultCatalogerListOptions()\n\n\treturn app.SetupCommand(&cobra.Command{\n\t\tUse:     \"list [OPTIONS]\",\n\t\tShort:   \"List available catalogers\",\n\t\tPreRunE: disableUI(app, os.Stdout),\n\t\tRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\treturn runCatalogerList(opts)\n\t\t},\n\t}, opts)\n}\n\nfunc runCatalogerList(opts *catalogerListOptions) error {\n\tpkgTaskFactories := task.DefaultPackageTaskFactories()\n\tfileTaskFactories := task.DefaultFileTaskFactories()\n\tallPkgTasks, err := pkgTaskFactories.Tasks(task.DefaultCatalogingFactoryConfig())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create pkg cataloger tasks: %w\", err)\n\t}\n\n\tallFileTasks, err := fileTaskFactories.Tasks(task.DefaultCatalogingFactoryConfig())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create file cataloger tasks: %w\", err)\n\t}\n\n\treport, err := catalogerListReport(opts, [][]task.Task{allPkgTasks, allFileTasks})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to generate cataloger list report: %w\", err)\n\t}\n\n\tbus.Report(report)\n\n\treturn nil\n}\n\nfunc catalogerListReport(opts *catalogerListOptions, allTaskGroups [][]task.Task) (string, error) {\n\tdefaultCatalogers := options.FlattenAndSort(opts.DefaultCatalogers)\n\tselectCatalogers := options.FlattenAndSort(opts.SelectCatalogers)\n\tselectedTaskGroups, selectionEvidence, err := task.SelectInGroups(\n\t\tallTaskGroups,\n\t\tcataloging.NewSelectionRequest().\n\t\t\tWithDefaults(defaultCatalogers...).\n\t\t\tWithExpression(selectCatalogers...),\n\t)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to select catalogers: %w\", err)\n\t}\n\tvar report string\n\n\tswitch opts.Output {\n\tcase jsonFormat:\n\t\treport, err = renderCatalogerListJSON(flattenTaskGroups(selectedTaskGroups), selectionEvidence, defaultCatalogers, selectCatalogers)\n\tcase \"table\", \"\":\n\t\tif opts.ShowHidden {\n\t\t\treport = renderCatalogerListTables(allTaskGroups, selectionEvidence)\n\t\t} else {\n\t\t\treport = renderCatalogerListTables(selectedTaskGroups, selectionEvidence)\n\t\t}\n\t}\n\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to render cataloger list: %w\", err)\n\t}\n\n\treturn report, nil\n}\n\nfunc flattenTaskGroups(taskGroups [][]task.Task) []task.Task {\n\tvar allTasks []task.Task\n\tfor _, tasks := range taskGroups {\n\t\tallTasks = append(allTasks, tasks...)\n\t}\n\treturn allTasks\n}\n\nfunc renderCatalogerListJSON(tasks []task.Task, selection task.Selection, defaultSelections, selections []string) (string, error) {\n\ttype node struct {\n\t\tName string   `json:\"name\"`\n\t\tTags []string `json:\"tags\"`\n\t}\n\n\tnames, tagsByName := extractTaskInfo(tasks)\n\n\tnodesByName := make(map[string]node)\n\n\tfor name := range tagsByName {\n\t\ttokensByTask, ok := selection.TokensByTask[name]\n\n\t\tvar tagsSelected []string\n\t\tif ok {\n\t\t\ttagsSelected = tokensByTask.SelectedOn.List()\n\t\t}\n\n\t\tif len(tagsSelected) == 1 && tagsSelected[0] == \"all\" {\n\t\t\ttagsSelected = tagsByName[name]\n\t\t}\n\n\t\tsort.Strings(tagsSelected)\n\n\t\tif tagsSelected == nil {\n\t\t\t// ensure collections are not null\n\t\t\ttagsSelected = []string{}\n\t\t}\n\n\t\tnodesByName[name] = node{\n\t\t\tName: name,\n\t\t\tTags: tagsSelected,\n\t\t}\n\t}\n\n\ttype document struct {\n\t\tDefaultSelection []string `json:\"default\"`\n\t\tSelection        []string `json:\"selection\"`\n\t\tCatalogers       []node   `json:\"catalogers\"`\n\t}\n\n\tif selections == nil {\n\t\t// ensure collections are not null\n\t\tselections = []string{}\n\t}\n\n\tdoc := document{\n\t\tDefaultSelection: defaultSelections,\n\t\tSelection:        selections,\n\t}\n\n\tfor _, name := range names {\n\t\tdoc.Catalogers = append(doc.Catalogers, nodesByName[name])\n\t}\n\n\tby, err := json.Marshal(doc)\n\n\treturn string(by), err\n}\n\nfunc renderCatalogerListTables(taskGroups [][]task.Task, selection task.Selection) string {\n\tpkgCatalogerTable := renderCatalogerListTable(taskGroups[0], selection, \"Package Cataloger\")\n\tfileCatalogerTable := renderCatalogerListTable(taskGroups[1], selection, \"File Cataloger\")\n\n\treport := fileCatalogerTable + \"\\n\" + pkgCatalogerTable + \"\\n\"\n\n\thasAdditions := len(selection.Request.AddNames) > 0\n\thasDefaults := len(selection.Request.DefaultNamesOrTags) > 0\n\thasRemovals := len(selection.Request.RemoveNamesOrTags) > 0\n\thasSubSelections := len(selection.Request.SubSelectTags) > 0\n\texpressions := len(selection.Request.SubSelectTags) + len(selection.Request.AddNames) + len(selection.Request.RemoveNamesOrTags)\n\n\tvar header string\n\n\theader += fmt.Sprintf(\"Default selections: %d\\n\", len(selection.Request.DefaultNamesOrTags))\n\tif hasDefaults {\n\t\tfor _, expr := range selection.Request.DefaultNamesOrTags {\n\t\t\theader += fmt.Sprintf(\"  • '%s'\\n\", expr)\n\t\t}\n\t}\n\n\theader += fmt.Sprintf(\"Selection expressions: %d\\n\", expressions)\n\n\tif hasSubSelections {\n\t\tfor _, n := range selection.Request.SubSelectTags {\n\t\t\theader += fmt.Sprintf(\"  • '%s' (intersect)\\n\", n)\n\t\t}\n\t}\n\tif hasRemovals {\n\t\tfor _, n := range selection.Request.RemoveNamesOrTags {\n\t\t\theader += fmt.Sprintf(\"  • '-%s' (remove)\\n\", n)\n\t\t}\n\t}\n\tif hasAdditions {\n\t\tfor _, n := range selection.Request.AddNames {\n\t\t\theader += fmt.Sprintf(\"  • '+%s' (add)\\n\", n)\n\t\t}\n\t}\n\n\treturn header + report\n}\n\nfunc renderCatalogerListTable(tasks []task.Task, selection task.Selection, kindTitle string) string {\n\tif len(tasks) == 0 {\n\t\treturn activelyRemovedStyle.Render(fmt.Sprintf(\"No %ss selected\", strings.ToLower(kindTitle)))\n\t}\n\n\tt := table.NewWriter()\n\tt.SetStyle(table.StyleLight)\n\tt.AppendHeader(table.Row{kindTitle, \"Tags\"})\n\n\tnames, tagsByName := extractTaskInfo(tasks)\n\n\trowsByName := make(map[string]table.Row)\n\n\tfor name, tags := range tagsByName {\n\t\trowsByName[name] = formatRow(name, tags, selection)\n\t}\n\n\tfor _, name := range names {\n\t\tt.AppendRow(rowsByName[name])\n\t}\n\n\treport := t.Render()\n\n\treturn report\n}\n\nfunc formatRow(name string, tags []string, selection task.Selection) table.Row {\n\tisIncluded := selection.Result.Has(name)\n\tdefaults := strset.New(selection.Request.DefaultNamesOrTags...)\n\tvar selections *task.TokenSelection\n\tif s, exists := selection.TokensByTask[name]; exists {\n\t\tselections = &s\n\t}\n\n\tvar formattedTags []string\n\tfor _, tag := range tags {\n\t\tformattedTags = append(formattedTags, formatToken(tag, selections, isIncluded, defaults))\n\t}\n\n\tvar tagStr string\n\tif isIncluded {\n\t\ttagStr = strings.Join(formattedTags, \", \")\n\t} else {\n\t\ttagStr = strings.Join(formattedTags, deselectedStyle.Render(\", \"))\n\t}\n\n\t// TODO: selection should keep warnings (non-selections) in struct\n\n\treturn table.Row{\n\t\tformatToken(name, selections, isIncluded, defaults),\n\t\ttagStr,\n\t}\n}\n\nfunc formatToken(token string, selection *task.TokenSelection, included bool, defaults *strset.Set) string {\n\tif included && selection != nil {\n\t\t// format all tokens in selection in green\n\t\tif selection.SelectedOn.Has(token) {\n\t\t\tif defaults.Has(token) {\n\t\t\t\treturn defaultStyle.Render(token)\n\t\t\t}\n\t\t\treturn activelyAddedStyle.Render(token)\n\t\t}\n\n\t\treturn token\n\t}\n\n\t// format all tokens in selection in red, all others in grey\n\tif selection != nil && selection.DeselectedOn.Has(token) {\n\t\treturn activelyRemovedStyle.Render(token)\n\t}\n\tif defaults.Has(token) {\n\t\treturn deselectedDefaultStyle.Render(token)\n\t}\n\treturn deselectedStyle.Render(token)\n}\n\nfunc extractTaskInfo(tasks []task.Task) ([]string, map[string][]string) {\n\tinfos := capabilities.ExtractCatalogerInfo(tasks)\n\n\ttagsByName := make(map[string][]string)\n\tvar names []string\n\n\tfor _, info := range infos {\n\t\ttagsByName[info.Name] = info.Selectors\n\t\tnames = append(names, info.Name)\n\t}\n\n\tsort.Strings(names)\n\n\treturn names, tagsByName\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/cataloger_list_test.go",
    "content": "package commands\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ interface {\n\ttask.Task\n\ttask.Selector\n} = (*dummyTask)(nil)\n\ntype dummyTask struct {\n\tname      string\n\tselectors []string\n}\n\nfunc (d dummyTask) HasAllSelectors(s ...string) bool {\n\treturn strset.New(d.selectors...).Has(s...)\n}\n\nfunc (d dummyTask) Selectors() []string {\n\treturn d.selectors\n}\n\nfunc (d dummyTask) Name() string {\n\treturn d.name\n}\n\nfunc (d dummyTask) Execute(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {\n\tpanic(\"implement me\")\n}\n\nfunc testTasks() [][]task.Task {\n\treturn [][]task.Task{\n\t\t{\n\t\t\tdummyTask{\n\t\t\t\tname:      \"task1\",\n\t\t\t\tselectors: []string{\"image\", \"a\", \"b\", \"1\"},\n\t\t\t},\n\t\t\tdummyTask{\n\t\t\t\tname:      \"task2\",\n\t\t\t\tselectors: []string{\"image\", \"b\", \"c\", \"2\"},\n\t\t\t},\n\t\t\tdummyTask{\n\t\t\t\tname:      \"task3\",\n\t\t\t\tselectors: []string{\"directory\", \"c\", \"d\", \"3\"},\n\t\t\t},\n\t\t\tdummyTask{\n\t\t\t\tname:      \"task4\",\n\t\t\t\tselectors: []string{\"directory\", \"d\", \"e\", \"4\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdummyTask{\n\t\t\t\tname:      \"file-task1\",\n\t\t\t\tselectors: []string{\"file\", \"ft\", \"ft-1-b\"},\n\t\t\t},\n\t\t\tdummyTask{\n\t\t\t\tname:      \"file-task2\",\n\t\t\t\tselectors: []string{\"file\", \"ft\", \"ft-2-b\"},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc Test_catalogerListReport(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\toptions *catalogerListOptions\n\t\twant    string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"no expressions, table\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"table\"\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\nDefault selections: 1\n  • 'all'\nSelection expressions: 0\n┌────────────────┬──────────────────┐\n│ FILE CATALOGER │ TAGS             │\n├────────────────┼──────────────────┤\n│ file-task1     │ file, ft, ft-1-b │\n│ file-task2     │ file, ft, ft-2-b │\n└────────────────┴──────────────────┘\n┌───────────────────┬────────────────────┐\n│ PACKAGE CATALOGER │ TAGS               │\n├───────────────────┼────────────────────┤\n│ task1             │ 1, a, b, image     │\n│ task2             │ 2, b, c, image     │\n│ task3             │ 3, c, d, directory │\n│ task4             │ 4, d, directory, e │\n└───────────────────┴────────────────────┘\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"no expressions, json\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"json\"\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\n{\"default\":[\"all\"],\"selection\":[],\"catalogers\":[{\"name\":\"file-task1\",\"tags\":[\"file\",\"ft\",\"ft-1-b\"]},{\"name\":\"file-task2\",\"tags\":[\"file\",\"ft\",\"ft-2-b\"]},{\"name\":\"task1\",\"tags\":[\"1\",\"a\",\"b\",\"image\"]},{\"name\":\"task2\",\"tags\":[\"2\",\"b\",\"c\",\"image\"]},{\"name\":\"task3\",\"tags\":[\"3\",\"c\",\"d\",\"directory\"]},{\"name\":\"task4\",\"tags\":[\"4\",\"d\",\"directory\",\"e\"]}]}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"no expressions, default selection, table\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"table\"\n\t\t\t\tc.DefaultCatalogers = []string{\n\t\t\t\t\t\"image\", // note: for backwards compatibility file will automatically be added\n\t\t\t\t}\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\nDefault selections: 2\n  • 'image'\n  • 'file'\nSelection expressions: 0\n┌────────────────┬──────────────────┐\n│ FILE CATALOGER │ TAGS             │\n├────────────────┼──────────────────┤\n│ file-task1     │ file, ft, ft-1-b │\n│ file-task2     │ file, ft, ft-2-b │\n└────────────────┴──────────────────┘\n┌───────────────────┬────────────────┐\n│ PACKAGE CATALOGER │ TAGS           │\n├───────────────────┼────────────────┤\n│ task1             │ 1, a, b, image │\n│ task2             │ 2, b, c, image │\n└───────────────────┴────────────────┘\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"no expressions, default selection, json\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"json\"\n\t\t\t\tc.DefaultCatalogers = []string{\n\t\t\t\t\t\"image\",\n\t\t\t\t}\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\n{\"default\":[\"image\"],\"selection\":[],\"catalogers\":[{\"name\":\"file-task1\",\"tags\":[\"file\"]},{\"name\":\"file-task2\",\"tags\":[\"file\"]},{\"name\":\"task1\",\"tags\":[\"image\"]},{\"name\":\"task2\",\"tags\":[\"image\"]}]}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"with expressions, default selection, table\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"table\"\n\t\t\t\tc.DefaultCatalogers = []string{\n\t\t\t\t\t\"image\",\n\t\t\t\t}\n\t\t\t\tc.SelectCatalogers = []string{\n\t\t\t\t\t\"-directory\",\n\t\t\t\t\t\"+task3\",\n\t\t\t\t\t\"-c\",\n\t\t\t\t\t\"b\",\n\t\t\t\t\t\"-file\",\n\t\t\t\t\t\"+file-task1\",\n\t\t\t\t}\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\nDefault selections: 1\n  • 'image'\nSelection expressions: 6\n  • 'b' (intersect)\n  • '-c' (remove)\n  • '-directory' (remove)\n  • '-file' (remove)\n  • '+file-task1' (add)\n  • '+task3' (add)\n┌────────────────┬──────────────────┐\n│ FILE CATALOGER │ TAGS             │\n├────────────────┼──────────────────┤\n│ file-task1     │ file, ft, ft-1-b │\n└────────────────┴──────────────────┘\n┌───────────────────┬────────────────────┐\n│ PACKAGE CATALOGER │ TAGS               │\n├───────────────────┼────────────────────┤\n│ task1             │ 1, a, b, image     │\n│ task3             │ 3, c, d, directory │\n└───────────────────┴────────────────────┘\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"with comma separated expressions, table\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"table\"\n\t\t\t\tc.DefaultCatalogers = []string{\n\t\t\t\t\t\"image,task3,file-task1\",\n\t\t\t\t}\n\t\t\t\tc.SelectCatalogers = []string{\n\t\t\t\t\t\"-task2,c,b\",\n\t\t\t\t}\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\nDefault selections: 4\n  • 'file-task1'\n  • 'image'\n  • 'task3'\n  • 'file'\nSelection expressions: 3\n  • 'b' (intersect)\n  • 'c' (intersect)\n  • '-task2' (remove)\n┌────────────────┬──────────────────┐\n│ FILE CATALOGER │ TAGS             │\n├────────────────┼──────────────────┤\n│ file-task1     │ file, ft, ft-1-b │\n│ file-task2     │ file, ft, ft-2-b │\n└────────────────┴──────────────────┘\n┌───────────────────┬────────────────────┐\n│ PACKAGE CATALOGER │ TAGS               │\n├───────────────────┼────────────────────┤\n│ task1             │ 1, a, b, image     │\n│ task3             │ 3, c, d, directory │\n└───────────────────┴────────────────────┘\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"with expressions, default selection, json\",\n\t\t\toptions: func() *catalogerListOptions {\n\t\t\t\tc := defaultCatalogerListOptions()\n\t\t\t\tc.Output = \"json\"\n\t\t\t\tc.DefaultCatalogers = []string{\n\t\t\t\t\t\"image\",\n\t\t\t\t}\n\t\t\t\tc.SelectCatalogers = []string{\n\t\t\t\t\t\"-directory\",\n\t\t\t\t\t\"+task3\",\n\t\t\t\t\t\"-c\",\n\t\t\t\t\t\"b\",\n\t\t\t\t}\n\t\t\t\treturn c\n\t\t\t}(),\n\t\t\twant: `\n{\"default\":[\"image\"],\"selection\":[\"+task3\",\"-c\",\"-directory\",\"b\"],\"catalogers\":[{\"name\":\"file-task1\",\"tags\":[\"file\"]},{\"name\":\"file-task2\",\"tags\":[\"file\"]},{\"name\":\"task1\",\"tags\":[\"b\",\"image\"]},{\"name\":\"task3\",\"tags\":[\"task3\"]}]}\n`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tgot, err := catalogerListReport(tt.options, testTasks())\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Equal(t, strings.TrimSpace(tt.want), strings.TrimSpace(got))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/commands_test.go",
    "content": "package commands\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\tgologgerredact \"github.com/anchore/go-logger/adapter/redact\"\n\t\"github.com/anchore/syft/internal/redact\"\n)\n\nfunc TestMain(m *testing.M) {\n\t// Initialize global state needed to test clio/cobra commands directly\n\t// Should be kept minimal.\n\n\t// Initialize redact store once for all tests in the commands package\n\t// Redact store must be wired up here because syft will panic unless\n\t// a redact store is wired up exactly once\n\tredact.Set(gologgerredact.NewStore())\n\tos.Exit(m.Run())\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/convert.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format\"\n)\n\nconst (\n\tconvertExample = `  {{.appName}} {{.command}} img.syft.json -o spdx-json                      convert a syft SBOM to spdx-json, output goes to stdout\n  {{.appName}} {{.command}} img.syft.json -o cyclonedx-json=img.cdx.json    convert a syft SBOM to CycloneDX, output is written to the file \"img.cdx.json\"\n  {{.appName}} {{.command}} - -o spdx-json                                  convert an SBOM from STDIN to spdx-json\n`\n)\n\ntype ConvertOptions struct {\n\toptions.Config      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.Output      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.UpdateCheck `yaml:\",inline\" mapstructure:\",squash\"`\n}\n\nfunc Convert(app clio.Application) *cobra.Command {\n\tid := app.ID()\n\n\topts := &ConvertOptions{\n\t\tUpdateCheck: options.DefaultUpdateCheck(),\n\t\tOutput:      options.DefaultOutput(),\n\t}\n\n\treturn app.SetupCommand(&cobra.Command{\n\t\tUse:   \"convert [SOURCE-SBOM] -o [FORMAT]\",\n\t\tShort: \"Convert between SBOM formats\",\n\t\tLong:  \"[Experimental] Convert SBOM files to, and from, SPDX, CycloneDX and Syft's format. For more info about data loss between formats see https://github.com/anchore/syft/wiki/format-conversion\",\n\t\tExample: internal.Tprintf(convertExample, map[string]interface{}{\n\t\t\t\"appName\": id.Name,\n\t\t\t\"command\": \"convert\",\n\t\t}),\n\t\tArgs:    validateConvertArgs,\n\t\tPreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),\n\t\tRunE: func(_ *cobra.Command, args []string) error {\n\t\t\trestoreStdout := ui.CaptureStdoutToTraceLog()\n\t\t\tdefer restoreStdout()\n\n\t\t\treturn RunConvert(opts, args[0])\n\t\t},\n\t}, opts)\n}\n\nfunc validateConvertArgs(cmd *cobra.Command, args []string) error {\n\treturn validateArgs(cmd, args, \"an SBOM argument is required\")\n}\n\nfunc RunConvert(opts *ConvertOptions, userInput string) error {\n\tlog.Warn(\"convert is an experimental feature, run `syft convert -h` for help\")\n\n\twriter, err := opts.SBOMWriter()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar reader io.ReadSeekCloser\n\n\tif userInput == \"-\" {\n\t\t// though os.Stdin is an os.File, it does not support seeking\n\t\t// you will get errors such as \"seek /dev/stdin: illegal seek\".\n\t\t// We need to buffer what we read.\n\t\treader = internal.NewBufferedSeeker(os.Stdin)\n\t} else {\n\t\tf, err := os.Open(userInput)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to open SBOM file: %w\", err)\n\t\t}\n\t\tdefer func() {\n\t\t\t_ = f.Close()\n\t\t}()\n\t\treader = f\n\t}\n\n\ts, _, _, err := format.Decode(reader)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to decode SBOM: %w\", err)\n\t}\n\n\tif s == nil {\n\t\treturn fmt.Errorf(\"no SBOM produced\")\n\t}\n\n\tif err := writer.Write(*s); err != nil {\n\t\treturn fmt.Errorf(\"failed to write SBOM: %w\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/packages.go",
    "content": "package commands\n\nimport (\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n\t\"github.com/anchore/syft/internal\"\n)\n\nfunc Packages(app clio.Application, scanCmd *cobra.Command) *cobra.Command {\n\tid := app.ID()\n\n\topts := defaultScanOptions()\n\n\tcmd := app.SetupCommand(&cobra.Command{\n\t\tUse:   \"packages [SOURCE]\",\n\t\tShort: scanCmd.Short,\n\t\tLong:  scanCmd.Long,\n\t\tArgs:  scanCmd.Args,\n\t\tExample: internal.Tprintf(scanHelp, map[string]interface{}{\n\t\t\t\"appName\": id.Name,\n\t\t\t\"command\": \"packages\",\n\t\t}),\n\t\tPreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\trestoreStdout := ui.CaptureStdoutToTraceLog()\n\t\t\tdefer restoreStdout()\n\n\t\t\treturn runScan(cmd.Context(), id, opts, args[0])\n\t\t},\n\t}, opts)\n\n\tcmd.Deprecated = \"use `syft scan` instead\"\n\n\treturn cmd\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/packages_test.go",
    "content": "package commands\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/task\"\n)\n\nfunc Test_filterExpressionErrors_expressionErrorsHelp(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\terr         error\n\t\twantExpErrs []task.ErrInvalidExpression\n\t\twantErr     assert.ErrorAssertionFunc\n\t\twantHelp    string\n\t}{\n\t\t{\n\t\t\tname:        \"no errors\",\n\t\t\terr:         nil,\n\t\t\twantExpErrs: nil,\n\t\t\twantErr:     assert.NoError,\n\t\t\twantHelp:    \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"single non-expression error is retained\",\n\t\t\terr:  errors.New(\"foo\"),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\treturn assert.Equal(t, \"foo\", err.Error())\n\t\t\t},\n\t\t\twantHelp: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple non-expression sibling errors are retained\",\n\t\t\terr: func() error {\n\t\t\t\tvar err error\n\t\t\t\terr = multierror.Append(err, errors.New(\"foo\"))\n\t\t\t\terr = multierror.Append(err, errors.New(\"bar\"))\n\t\t\t\treturn err\n\t\t\t}(),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\t// note: this is the default formatting from the hashicorp multierror object\n\t\t\t\texpected := `2 errors occurred:\n\t* foo\n\t* bar\n\n`\n\t\t\t\treturn assert.Equal(t, expected, err.Error())\n\t\t\t},\n\t\t\twantHelp: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"has multiple expression errors (with sibling errors)\",\n\t\t\terr: func() error {\n\t\t\t\tvar err error\n\t\t\t\terr = multierror.Append(err, errors.New(\"foo\"))\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})\n\t\t\t\terr = multierror.Append(err, errors.New(\"bar\"))\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})\n\t\t\t\terr = multierror.Append(err, errors.New(\"last\"))\n\t\t\t\treturn err\n\t\t\t}(),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\texpected := `5 errors occurred:\n\t* foo\n\t* invalid expression: \"foo\": tags are not allowed with this operation (must use exact names)\n\t* bar\n\t* invalid expression: \"bar\": names are not allowed with this operation (must use tags)\n\t* last\n\n`\n\t\t\t\treturn assert.Equal(t, expected, err.Error())\n\t\t\t},\n\t\t\twantExpErrs: []task.ErrInvalidExpression{\n\t\t\t\t{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},\n\t\t\t\t{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},\n\t\t\t},\n\t\t\twantHelp: `Suggestions:\n\n ❖ Given expression \"--select-catalogers foo\"\n   However, tags are not allowed with this operation (must use exact names).\n   Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\n   If you are certain this is what you want to do, use \"--override-default-catalogers foo\" instead.\n\n ❖ Given expression \"--select-catalogers bar\"\n   However, names are not allowed with this operation (must use tags).\n   It seems like you are intending to add a cataloger in addition to the default set.\n   ... Did you mean \"--select-catalogers +bar\" instead?\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"has multiple expression errors (with error chains and sibling errors)\",\n\t\t\terr: func() error {\n\t\t\t\tvar err error\n\t\t\t\terr = multierror.Append(err, fmt.Errorf(\"foo: %w\", fmt.Errorf(\"bar: %w\", errors.New(\"last\"))))\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})\n\t\t\t\terr = multierror.Append(err, errors.New(\"bottom\"))\n\n\t\t\t\treturn fmt.Errorf(\"top: %w\", fmt.Errorf(\"middle: %w\", err))\n\t\t\t}(),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\texpected := `top: middle: 4 errors occurred:\n\t* foo: bar: last\n\t* invalid expression: \"foo\": tags are not allowed with this operation (must use exact names)\n\t* invalid expression: \"bar\": names are not allowed with this operation (must use tags)\n\t* bottom\n\n`\n\t\t\t\treturn assert.Equal(t, expected, err.Error())\n\t\t\t},\n\t\t\twantExpErrs: []task.ErrInvalidExpression{\n\t\t\t\t{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},\n\t\t\t\t{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},\n\t\t\t},\n\t\t\twantHelp: `Suggestions:\n\n ❖ Given expression \"--select-catalogers foo\"\n   However, tags are not allowed with this operation (must use exact names).\n   Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\n   If you are certain this is what you want to do, use \"--override-default-catalogers foo\" instead.\n\n ❖ Given expression \"--select-catalogers bar\"\n   However, names are not allowed with this operation (must use tags).\n   It seems like you are intending to add a cataloger in addition to the default set.\n   ... Did you mean \"--select-catalogers +bar\" instead?\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"has multiple expression errors (with error chains and sibling errors)\",\n\t\t\terr: func() error {\n\t\t\t\tvar err error\n\t\t\t\terr = multierror.Append(err, fmt.Errorf(\"foo: %w\", fmt.Errorf(\"bar: %w\", errors.New(\"last\"))))\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})\n\t\t\t\terr = multierror.Append(err, errors.New(\"bottom\"))\n\n\t\t\t\t// note we wrap the top error in a chain\n\t\t\t\treturn fmt.Errorf(\"top: %w\", fmt.Errorf(\"middle: %w\", err))\n\t\t\t}(),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\texpected := `top: middle: 4 errors occurred:\n\t* foo: bar: last\n\t* invalid expression: \"foo\": tags are not allowed with this operation (must use exact names)\n\t* invalid expression: \"bar\": names are not allowed with this operation (must use tags)\n\t* bottom\n\n`\n\t\t\t\treturn assert.Equal(t, expected, err.Error())\n\t\t\t},\n\t\t\twantExpErrs: []task.ErrInvalidExpression{\n\t\t\t\t{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},\n\t\t\t\t{Expression: \"bar\", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},\n\t\t\t},\n\t\t\twantHelp: `Suggestions:\n\n ❖ Given expression \"--select-catalogers foo\"\n   However, tags are not allowed with this operation (must use exact names).\n   Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\n   If you are certain this is what you want to do, use \"--override-default-catalogers foo\" instead.\n\n ❖ Given expression \"--select-catalogers bar\"\n   However, names are not allowed with this operation (must use tags).\n   It seems like you are intending to add a cataloger in addition to the default set.\n   ... Did you mean \"--select-catalogers +bar\" instead?\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"preserve for any errors within ErrInvalidExpression types\",\n\t\t\terr: func() error {\n\t\t\t\tvar err error\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})\n\t\t\t\terr = multierror.Append(err, task.ErrInvalidExpression{Expression: \"bar\", Operation: task.SubSelectOperation, Err: errors.New(\"explanation\")}) // this is what makes this test different...\n\n\t\t\t\treturn err\n\t\t\t}(),\n\t\t\twantErr: func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\t\t\t// note: the errors are removed and the help text shows the enriched error help\n\t\t\t\texpected := `2 errors occurred:\n\t* invalid expression: \"foo\": tags are not allowed with this operation (must use exact names)\n\t* invalid expression: \"bar\": explanation\n\n`\n\t\t\t\treturn assert.Equal(t, expected, err.Error())\n\t\t\t},\n\t\t\twantExpErrs: []task.ErrInvalidExpression{\n\t\t\t\t{Expression: \"foo\", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},\n\t\t\t\t{Expression: \"bar\", Operation: task.SubSelectOperation, Err: errors.New(\"explanation\")},\n\t\t\t},\n\t\t\twantHelp: `Suggestions:\n\n ❖ Given expression \"--select-catalogers foo\"\n   However, tags are not allowed with this operation (must use exact names).\n   Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\n   If you are certain this is what you want to do, use \"--override-default-catalogers foo\" instead.\n\n`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotExpErrs := filterExpressionErrors(tt.err)\n\t\t\ttt.wantErr(t, tt.err) // ensure the error still remains\n\t\t\tassert.Equal(t, tt.wantExpErrs, gotExpErrs)\n\n\t\t\tgotHelp := expressionErrorsHelp(gotExpErrs)\n\t\t\tassert.Equal(t, tt.wantHelp, gotHelp)\n\t\t})\n\t}\n}\n\nfunc Test_expressionSuggestions(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\texpErr task.ErrInvalidExpression\n\t\twant   string\n\t}{\n\t\t{\n\t\t\tname: \"no embedded error\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tExpression: \"example\",\n\t\t\t},\n\t\t\twant: ``,\n\t\t},\n\t\t{\n\t\t\tname: \"general error\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        errors.New(\"general error message\"),\n\t\t\t\tExpression: \"example\",\n\t\t\t},\n\t\t\twant: ``,\n\t\t},\n\t\t{\n\t\t\tname: \"ErrUnknownNameOrTag with add operation\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        task.ErrUnknownNameOrTag,\n\t\t\t\tOperation:  task.AddOperation,\n\t\t\t\tExpression: \"+example\",\n\t\t\t},\n\t\t\twant: ``,\n\t\t},\n\t\t{\n\t\t\tname: \"ErrUnknownNameOrTag with subselect operation\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        task.ErrUnknownNameOrTag,\n\t\t\t\tOperation:  task.SubSelectOperation,\n\t\t\t\tExpression: \"example\",\n\t\t\t},\n\t\t\twant: ``,\n\t\t},\n\t\t{\n\t\t\tname: \"ErrNamesNotAllowed with subselect operator\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        task.ErrNamesNotAllowed,\n\t\t\t\tOperation:  task.SubSelectOperation,\n\t\t\t\tExpression: \"example\",\n\t\t\t},\n\t\t\twant: ` ❖ Given expression \"--select-catalogers example\"\n   However, names are not allowed with this operation (must use tags).\n   It seems like you are intending to add a cataloger in addition to the default set.\n   ... Did you mean \"--select-catalogers +example\" instead?\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"ErrTagsNotAllowed with add operation\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        task.ErrTagsNotAllowed,\n\t\t\t\tOperation:  task.AddOperation,\n\t\t\t\tExpression: \"+example\",\n\t\t\t},\n\t\t\twant: ` ❖ Given expression \"--select-catalogers +example\"\n   However, tags are not allowed with this operation (must use exact names).\n   Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\n   If you are certain this is what you want to do, use \"--override-default-catalogers example\" instead.\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"ErrAllNotAllowed with subselect operation\",\n\t\t\texpErr: task.ErrInvalidExpression{\n\t\t\t\tErr:        task.ErrAllNotAllowed,\n\t\t\t\tOperation:  task.SubSelectOperation,\n\t\t\t\tExpression: \"example\",\n\t\t\t},\n\t\t\twant: ` ❖ Given expression \"--select-catalogers example\"\n   However, you cannot use the 'all' operand in this context.\n   It seems like you are intending to use all catalogers (which is not recommended).\n   ... Did you mean \"--override-default-catalogers example\" instead?\n`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, expressionSuggetions(tt.expErr))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/root.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n)\n\nfunc Root(app clio.Application, packagesCmd *cobra.Command) *cobra.Command {\n\tid := app.ID()\n\n\topts := defaultScanOptions()\n\n\treturn app.SetupRootCommand(&cobra.Command{\n\t\tUse:     fmt.Sprintf(\"%s [SOURCE]\", app.ID().Name),\n\t\tShort:   packagesCmd.Short,\n\t\tLong:    packagesCmd.Long,\n\t\tArgs:    packagesCmd.Args,\n\t\tExample: packagesCmd.Example,\n\t\tPreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\trestoreStdout := ui.CaptureStdoutToTraceLog()\n\t\t\tdefer restoreStdout()\n\n\t\t\treturn runScan(cmd.Context(), id, opts, args[0])\n\t\t},\n\t}, opts)\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/scan.go",
    "content": "package commands\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/spf13/cobra\"\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/fangs\"\n\t\"github.com/anchore/go-collections\"\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\nconst (\n\tscanExample = `  {{.appName}} {{.command}} alpine:latest                                a summary of discovered packages\n  {{.appName}} {{.command}} alpine:latest -o json                        show all possible cataloging details\n  {{.appName}} {{.command}} alpine:latest -o cyclonedx                   show a CycloneDX formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -o cyclonedx-json              show a CycloneDX JSON formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -o spdx                        show a SPDX 2.3 Tag-Value formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -o spdx@2.2                    show a SPDX 2.2 Tag-Value formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -o spdx-json                   show a SPDX 2.3 JSON formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -o spdx-json@2.2               show a SPDX 2.2 JSON formatted SBOM\n  {{.appName}} {{.command}} alpine:latest -vv                            show verbose debug information\n  {{.appName}} {{.command}} alpine:latest -o template -t my_format.tmpl  show a SBOM formatted according to given template file\n\n  Supports the following image sources:\n    {{.appName}} {{.command}} yourrepo/yourimage:tag     defaults to using images from a Docker daemon. If Docker is not present, the image is pulled directly from the registry.\n    {{.appName}} {{.command}} path/to/a/file/or/dir      a Docker tar, OCI tar, OCI directory, SIF container, or generic filesystem directory\n`\n\n\tschemeHelpHeader = \"You can also explicitly specify the scheme to use:\"\n\timageSchemeHelp  = `    {{.appName}} {{.command}} docker:yourrepo/yourimage:tag            explicitly use the Docker daemon\n    {{.appName}} {{.command}} podman:yourrepo/yourimage:tag            explicitly use the Podman daemon\n    {{.appName}} {{.command}} registry:yourrepo/yourimage:tag          pull image directly from a registry (no container runtime required)\n    {{.appName}} {{.command}} docker-archive:path/to/yourimage.tar     use a tarball from disk for archives created from \"docker save\"\n    {{.appName}} {{.command}} oci-archive:path/to/yourimage.tar        use a tarball from disk for OCI archives (from Skopeo or otherwise)\n    {{.appName}} {{.command}} oci-dir:path/to/yourimage                read directly from a path on disk for OCI layout directories (from Skopeo or otherwise)\n    {{.appName}} {{.command}} singularity:path/to/yourimage.sif        read directly from a Singularity Image Format (SIF) container on disk\n`\n\tnonImageSchemeHelp = `    {{.appName}} {{.command}} dir:path/to/yourproject                  read directly from a path on disk (any directory)\n    {{.appName}} {{.command}} file:path/to/yourproject/file            read directly from a path on disk (any single file)\n`\n\tmodelSchemeHelp = `    {{.appName}} {{.command}} oci-model-registry:ai/llama3.2           scan an OCI model artifact from a registry (e.g. Docker Hub AI models)\n`\n\tscanSchemeHelp = \"\\n  \" + schemeHelpHeader + \"\\n\" + imageSchemeHelp + modelSchemeHelp + nonImageSchemeHelp\n\n\tscanHelp = scanExample + scanSchemeHelp\n)\n\ntype scanOptions struct {\n\toptions.Config      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.Output      `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.UpdateCheck `yaml:\",inline\" mapstructure:\",squash\"`\n\toptions.Catalog     `yaml:\",inline\" mapstructure:\",squash\"`\n\tCache               options.Cache `json:\"-\" yaml:\"cache\" mapstructure:\"cache\"`\n}\n\nfunc defaultScanOptions() *scanOptions {\n\treturn &scanOptions{\n\t\tOutput:      options.DefaultOutput(),\n\t\tUpdateCheck: options.DefaultUpdateCheck(),\n\t\tCatalog:     options.DefaultCatalog(),\n\t\tCache:       options.DefaultCache(),\n\t}\n}\n\nfunc Scan(app clio.Application) *cobra.Command {\n\tid := app.ID()\n\n\topts := defaultScanOptions()\n\n\treturn app.SetupCommand(&cobra.Command{\n\t\tUse:   \"scan [SOURCE]\",\n\t\tShort: \"Generate an SBOM\",\n\t\tLong:  \"Generate a packaged-based Software Bill Of Materials (SBOM) from container images and filesystems\",\n\t\tExample: internal.Tprintf(scanHelp, map[string]interface{}{\n\t\t\t\"appName\": id.Name,\n\t\t\t\"command\": \"scan\",\n\t\t}),\n\t\tArgs:    validateScanArgs,\n\t\tPreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\trestoreStdout := ui.CaptureStdoutToTraceLog()\n\t\t\tdefer restoreStdout()\n\n\t\t\treturn runScan(cmd.Context(), id, opts, args[0])\n\t\t},\n\t}, opts)\n}\n\nfunc (o *scanOptions) PostLoad() error {\n\treturn o.validateLegacyOptionsNotUsed()\n}\n\nfunc (o *scanOptions) validateLegacyOptionsNotUsed() error {\n\tif len(fangs.Flatten(o.ConfigFile)) == 0 {\n\t\treturn nil\n\t}\n\n\t// check for legacy config file shapes that are no longer valid\n\ttype legacyConfig struct {\n\t\tBasePath                        *string `yaml:\"base-path\" json:\"base-path\" mapstructure:\"base-path\"`\n\t\tDefaultImagePullSource          *string `yaml:\"default-image-pull-source\" json:\"default-image-pull-source\" mapstructure:\"default-image-pull-source\"`\n\t\tExcludeBinaryOverlapByOwnership *bool   `yaml:\"exclude-binary-overlap-by-ownership\" json:\"exclude-binary-overlap-by-ownership\" mapstructure:\"exclude-binary-overlap-by-ownership\"`\n\t\tFile                            any     `yaml:\"file\" json:\"file\" mapstructure:\"file\"`\n\t}\n\n\tfor _, f := range fangs.Flatten(o.ConfigFile) {\n\t\tby, err := os.ReadFile(f)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to read config file during validations %q: %w\", f, err)\n\t\t}\n\n\t\tvar legacy legacyConfig\n\t\tif err := yaml.Unmarshal(by, &legacy); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to parse config file during validations %q: %w\", f, err)\n\t\t}\n\n\t\tif legacy.DefaultImagePullSource != nil {\n\t\t\treturn fmt.Errorf(\"the config file option 'default-image-pull-source' has been removed, please use 'source.image.default-pull-source' instead\")\n\t\t}\n\n\t\tif legacy.ExcludeBinaryOverlapByOwnership != nil {\n\t\t\treturn fmt.Errorf(\"the config file option 'exclude-binary-overlap-by-ownership' has been removed, please use 'package.exclude-binary-overlap-by-ownership' instead\")\n\t\t}\n\n\t\tif legacy.BasePath != nil {\n\t\t\treturn fmt.Errorf(\"the config file option 'base-path' has been removed, please use 'source.base-path' instead\")\n\t\t}\n\n\t\tif legacy.File != nil && reflect.TypeOf(legacy.File).Kind() == reflect.String {\n\t\t\treturn fmt.Errorf(\"the config file option 'file' has been removed, please use 'outputs' instead\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateScanArgs(cmd *cobra.Command, args []string) error {\n\treturn validateArgs(cmd, args, \"an image/directory argument is required\")\n}\n\nfunc validateArgs(cmd *cobra.Command, args []string, err string) error {\n\tif len(args) == 0 {\n\t\t// in the case that no arguments are given we want to show the help text and return with a non-0 return code.\n\t\tif err := cmd.Help(); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to display help: %w\", err)\n\t\t}\n\t\treturn fmt.Errorf(\"%v\", err)\n\t}\n\n\treturn cobra.MaximumNArgs(1)(cmd, args)\n}\n\nfunc runScan(ctx context.Context, id clio.Identification, opts *scanOptions, userInput string) error {\n\twriter, err := opts.SBOMWriter()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsources := opts.From\n\tif len(sources) == 0 {\n\t\t// extract a scheme if it matches any provider tag; this is a holdover for compatibility, using the --from flag is recommended\n\t\texplicitSource, newUserInput := stereoscope.ExtractSchemeSource(userInput, allSourceProviderTags()...)\n\t\tif explicitSource != \"\" {\n\t\t\tsources = append(sources, explicitSource)\n\t\t\tuserInput = newUserInput\n\t\t}\n\t}\n\n\tsrc, err := getSource(ctx, &opts.Catalog, userInput, sources...)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tif src != nil {\n\t\t\tif err := src.Close(); err != nil {\n\t\t\t\tlog.Tracef(\"unable to close source: %+v\", err)\n\t\t\t}\n\t\t}\n\t}()\n\n\ts, err := generateSBOM(ctx, id, src, &opts.Catalog)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif s == nil {\n\t\treturn fmt.Errorf(\"no SBOM produced for %q\", userInput)\n\t}\n\n\tif err := writer.Write(*s); err != nil {\n\t\treturn fmt.Errorf(\"failed to write SBOM: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc getSource(ctx context.Context, opts *options.Catalog, userInput string, sources ...string) (source.Source, error) {\n\tcfg := syft.DefaultGetSourceConfig().\n\t\tWithRegistryOptions(opts.Registry.ToOptions()).\n\t\tWithAlias(source.Alias{\n\t\t\tName:     opts.Source.Name,\n\t\t\tVersion:  opts.Source.Version,\n\t\t\tSupplier: opts.Source.Supplier,\n\t\t}).\n\t\tWithExcludeConfig(source.ExcludeConfig{\n\t\t\tPaths: opts.Exclusions,\n\t\t}).\n\t\tWithBasePath(opts.Source.BasePath).\n\t\tWithSources(sources...).\n\t\tWithDefaultImagePullSource(opts.Source.Image.DefaultPullSource)\n\n\tvar err error\n\tvar platform *image.Platform\n\n\tif opts.Platform != \"\" {\n\t\tplatform, err = image.NewPlatform(opts.Platform)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid platform: %w\", err)\n\t\t}\n\t\tcfg = cfg.WithPlatform(platform)\n\t}\n\n\tif opts.Source.File.Digests != nil {\n\t\thashers, err := file.Hashers(opts.Source.File.Digests...)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid hash algorithm: %w\", err)\n\t\t}\n\t\tcfg = cfg.WithDigestAlgorithms(hashers...)\n\t}\n\n\tsrc, err := syft.GetSource(ctx, userInput, cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not determine source: %w\", err)\n\t}\n\n\treturn src, nil\n}\n\nfunc generateSBOM(ctx context.Context, id clio.Identification, src source.Source, opts *options.Catalog) (*sbom.SBOM, error) {\n\ts, err := syft.CreateSBOM(ctx, src, opts.ToSBOMConfig(id))\n\tif err != nil {\n\t\texpErrs := filterExpressionErrors(err)\n\t\tnotifyExpressionErrors(expErrs)\n\t\treturn nil, err\n\t}\n\treturn s, nil\n}\n\nfunc filterExpressionErrors(err error) []task.ErrInvalidExpression {\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\texpErrs := processErrors(err)\n\n\treturn expErrs\n}\n\n// processErrors traverses error chains and multierror lists and returns all ErrInvalidExpression errors found\nfunc processErrors(err error) []task.ErrInvalidExpression {\n\tvar result []task.ErrInvalidExpression\n\n\tvar processError func(...error)\n\tprocessError = func(errs ...error) {\n\t\tfor _, e := range errs {\n\t\t\t// note: using errors.As will result in surprising behavior (since that will traverse the error chain,\n\t\t\t// potentially skipping over nodes in a list of errors)\n\t\t\tif cerr, ok := e.(task.ErrInvalidExpression); ok {\n\t\t\t\tresult = append(result, cerr)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar multiErr *multierror.Error\n\t\t\tif errors.As(e, &multiErr) {\n\t\t\t\tprocessError(multiErr.Errors...)\n\t\t\t}\n\t\t}\n\t}\n\n\tprocessError(err)\n\n\treturn result\n}\n\nfunc notifyExpressionErrors(expErrs []task.ErrInvalidExpression) {\n\thelpText := expressionErrorsHelp(expErrs)\n\tif helpText == \"\" {\n\t\treturn\n\t}\n\n\tbus.Notify(helpText)\n}\n\nfunc expressionErrorsHelp(expErrs []task.ErrInvalidExpression) string {\n\t// enrich all errors found with CLI hints\n\tif len(expErrs) == 0 {\n\t\treturn \"\"\n\t}\n\n\tsb := strings.Builder{}\n\n\tsb.WriteString(\"Suggestions:\\n\\n\")\n\n\tfound := false\n\tfor i, expErr := range expErrs {\n\t\thelp := expressionSuggetions(expErr)\n\t\tif help == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tfound = true\n\t\tsb.WriteString(help)\n\t\tif i != len(expErrs)-1 {\n\t\t\tsb.WriteString(\"\\n\")\n\t\t}\n\t}\n\n\tif !found {\n\t\treturn \"\"\n\t}\n\n\treturn sb.String()\n}\n\nconst expressionHelpTemplate = \" ❖ Given expression %q\\n%s%s\"\n\nfunc expressionSuggetions(expErr task.ErrInvalidExpression) string {\n\tif expErr.Err == nil {\n\t\treturn \"\"\n\t}\n\n\thint := getHintPhrase(expErr)\n\tif hint == \"\" {\n\t\treturn \"\"\n\t}\n\n\treturn fmt.Sprintf(expressionHelpTemplate,\n\t\tgetExpression(expErr),\n\t\tindentMsg(getExplanation(expErr)),\n\t\tindentMsg(hint),\n\t)\n}\n\nfunc indentMsg(msg string) string {\n\tif msg == \"\" {\n\t\treturn \"\"\n\t}\n\n\tlines := strings.Split(msg, \"\\n\")\n\tfor i, line := range lines {\n\t\tlines[i] = \"   \" + line\n\t}\n\n\treturn strings.Join(lines, \"\\n\") + \"\\n\"\n}\n\nfunc getExpression(expErr task.ErrInvalidExpression) string {\n\tflag := \"--select-catalogers\"\n\tif expErr.Operation == task.SetOperation {\n\t\tflag = \"--override-default-catalogers\"\n\t}\n\treturn fmt.Sprintf(\"%s %s\", flag, expErr.Expression)\n}\n\nfunc getExplanation(expErr task.ErrInvalidExpression) string {\n\terr := expErr.Err\n\tif errors.Is(err, task.ErrUnknownNameOrTag) {\n\t\tnoun := \"\"\n\t\tswitch expErr.Operation {\n\t\tcase task.AddOperation:\n\t\t\tnoun = \"name\"\n\t\tcase task.SubSelectOperation:\n\t\t\tnoun = \"tag\"\n\t\tdefault:\n\t\t\tnoun = \"name or tag\"\n\t\t}\n\n\t\treturn fmt.Sprintf(\"However, %q is not a recognized cataloger %s.\", trimOperation(expErr.Expression), noun)\n\t}\n\n\tif errors.Is(err, task.ErrNamesNotAllowed) {\n\t\tif expErr.Operation == task.SubSelectOperation {\n\t\t\treturn \"However, \" + err.Error() + \".\\nIt seems like you are intending to add a cataloger in addition to the default set.\"\n\t\t}\n\t\treturn \"However, \" + err.Error() + \".\"\n\t}\n\n\tif errors.Is(err, task.ErrTagsNotAllowed) {\n\t\treturn \"However, \" + err.Error() + \".\\nAdding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).\"\n\t}\n\n\tif errors.Is(err, task.ErrAllNotAllowed) {\n\t\treturn \"However, you \" + err.Error() + \".\\nIt seems like you are intending to use all catalogers (which is not recommended).\"\n\t}\n\n\tif err != nil {\n\t\treturn \"However, this is not valid: \" + err.Error()\n\t}\n\n\treturn \"\"\n}\n\nfunc getHintPhrase(expErr task.ErrInvalidExpression) string {\n\tif errors.Is(expErr.Err, task.ErrUnknownNameOrTag) {\n\t\treturn \"\"\n\t}\n\n\tswitch expErr.Operation {\n\tcase task.AddOperation:\n\t\tif errors.Is(expErr.Err, task.ErrTagsNotAllowed) {\n\t\t\treturn fmt.Sprintf(\"If you are certain this is what you want to do, use %q instead.\", \"--override-default-catalogers \"+trimOperation(expErr.Expression))\n\t\t}\n\n\tcase task.SubSelectOperation:\n\t\tdidYouMean := \"... Did you mean %q instead?\"\n\t\tif errors.Is(expErr.Err, task.ErrNamesNotAllowed) {\n\t\t\treturn fmt.Sprintf(didYouMean, \"--select-catalogers +\"+expErr.Expression)\n\t\t}\n\n\t\tif errors.Is(expErr.Err, task.ErrAllNotAllowed) {\n\t\t\treturn fmt.Sprintf(didYouMean, \"--override-default-catalogers \"+expErr.Expression)\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc trimOperation(x string) string {\n\treturn strings.TrimLeft(x, \"+-\")\n}\n\nfunc allSourceProviderTags() []string {\n\treturn collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All(\"\", nil)...).Tags()\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/scan_test.go",
    "content": "package commands\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n)\n\nfunc Test_scanOptions_validateLegacyOptionsNotUsed(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     string\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"no config file\",\n\t\t},\n\t\t{\n\t\t\tname: \"config file with no legacy options\",\n\t\t\tcfg:  \"testdata/scan-configs/no-legacy-options.yaml\",\n\t\t},\n\t\t{\n\t\t\tname:    \"config file with default image pull source legacy option\",\n\t\t\tcfg:     \"testdata/scan-configs/with-default-pull-source.yaml\",\n\t\t\twantErr: assertErrorContains(\"source.image.default-pull-source\"),\n\t\t},\n\t\t{\n\t\t\tname:    \"config file with exclude-binary-overlap-by-ownership legacy option\",\n\t\t\tcfg:     \"testdata/scan-configs/with-exclude-binary-overlap-by-ownership.yaml\",\n\t\t\twantErr: assertErrorContains(\"package.exclude-binary-overlap-by-ownership\"),\n\t\t},\n\t\t{\n\t\t\tname:    \"config file with file string legacy option\",\n\t\t\tcfg:     \"testdata/scan-configs/with-file-string.yaml\",\n\t\t\twantErr: assertErrorContains(\"outputs\"),\n\t\t},\n\t\t{\n\t\t\tname: \"config file with file section\",\n\t\t\tcfg:  \"testdata/scan-configs/with-file-section.yaml\",\n\t\t},\n\t\t{\n\t\t\tname:    \"config file with base-path legacy option\",\n\t\t\tcfg:     \"testdata/scan-configs/with-base-path.yaml\",\n\t\t\twantErr: assertErrorContains(\"source.base-path\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\to := &scanOptions{\n\t\t\t\tConfig: options.Config{ConfigFile: tt.cfg},\n\t\t\t}\n\t\t\ttt.wantErr(t, o.validateLegacyOptionsNotUsed())\n\t\t})\n\t}\n}\n\nfunc assertErrorContains(contains string) assert.ErrorAssertionFunc {\n\treturn func(t assert.TestingT, err error, i ...interface{}) bool {\n\t\treturn assert.ErrorContains(t, err, contains, i...)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/no-legacy-options.yaml",
    "content": "# simple, valid syft config with no legacy fields used\nparallelism: 5\n"
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/with-base-path.yaml",
    "content": "base-path: \"something\""
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/with-default-pull-source.yaml",
    "content": "default-image-pull-source: \"something\""
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/with-exclude-binary-overlap-by-ownership.yaml",
    "content": "exclude-binary-overlap-by-ownership: true"
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/with-file-section.yaml",
    "content": "file:\n  selection: all"
  },
  {
    "path": "cmd/syft/internal/commands/testdata/scan-configs/with-file-string.yaml",
    "content": "file: path"
  },
  {
    "path": "cmd/syft/internal/commands/update.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/spf13/cobra\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/clio\"\n\thashiVersion \"github.com/anchore/go-version\"\n\t\"github.com/anchore/syft/cmd/syft/internal\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/parsers\"\n)\n\nvar latestAppVersionURL = struct {\n\thost string\n\tpath string\n}{\n\thost: \"https://toolbox-data.anchore.io\",\n\tpath: \"/syft/releases/latest/VERSION\",\n}\n\nfunc applicationUpdateCheck(id clio.Identification, check *options.UpdateCheck) func(cmd *cobra.Command, args []string) error {\n\treturn func(_ *cobra.Command, _ []string) error {\n\t\tif check.CheckForAppUpdate {\n\t\t\tcheckForApplicationUpdate(id)\n\t\t}\n\t\treturn nil\n\t}\n}\n\nfunc checkForApplicationUpdate(id clio.Identification) {\n\tlog.Debugf(\"checking if a new version of %s is available\", id.Name)\n\tisAvailable, newVersion, err := isUpdateAvailable(id)\n\tif err != nil {\n\t\t// this should never stop the application\n\t\tlog.Errorf(err.Error())\n\t}\n\tif isAvailable {\n\t\tlog.Infof(\"new version of %s is available: %s (current version is %s)\", id.Name, newVersion, id.Version)\n\n\t\tbus.Publish(partybus.Event{\n\t\t\tType: event.CLIAppUpdateAvailable,\n\t\t\tValue: parsers.UpdateCheck{\n\t\t\t\tNew:     newVersion,\n\t\t\t\tCurrent: id.Version,\n\t\t\t},\n\t\t})\n\t} else {\n\t\tlog.Debugf(\"no new %s update available\", id.Name)\n\t}\n}\n\n// isUpdateAvailable indicates if there is a newer application version available, and if so, what the new version is.\nfunc isUpdateAvailable(id clio.Identification) (bool, string, error) {\n\tif !isProductionBuild(id.Version) {\n\t\t// don't allow for non-production builds to check for a version.\n\t\treturn false, \"\", nil\n\t}\n\n\tcurrentVersion, err := hashiVersion.NewVersion(id.Version)\n\tif err != nil {\n\t\treturn false, \"\", fmt.Errorf(\"failed to parse current application version: %w\", err)\n\t}\n\n\tlatestVersion, err := fetchLatestApplicationVersion(id)\n\tif err != nil {\n\t\treturn false, \"\", err\n\t}\n\n\tif latestVersion.GreaterThan(currentVersion) {\n\t\treturn true, latestVersion.String(), nil\n\t}\n\n\treturn false, \"\", nil\n}\n\nfunc isProductionBuild(version string) bool {\n\tif strings.Contains(version, \"SNAPSHOT\") || strings.Contains(version, internal.NotProvided) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc fetchLatestApplicationVersion(id clio.Identification) (*hashiVersion.Version, error) {\n\treq, err := http.NewRequest(http.MethodGet, latestAppVersionURL.host+latestAppVersionURL.path, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create request for latest version: %w\", err)\n\t}\n\treq.Header.Add(\"User-Agent\", fmt.Sprintf(\"%v %v\", id.Name, id.Version))\n\n\tclient := http.Client{}\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch latest version: %w\", err)\n\t}\n\tdefer func() { _ = resp.Body.Close() }()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn nil, fmt.Errorf(\"HTTP %d on fetching latest version: %s\", resp.StatusCode, resp.Status)\n\t}\n\n\tversionBytes, err := io.ReadAll(io.LimitReader(resp.Body, 500))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read latest version: %w\", err)\n\t}\n\n\tversionStr := strings.TrimSuffix(string(versionBytes), \"\\n\")\n\tif len(versionStr) > 50 {\n\t\treturn nil, fmt.Errorf(\"version too long: %q\", versionStr[:50])\n\t}\n\n\treturn hashiVersion.NewVersion(versionStr)\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/update_test.go",
    "content": "package commands\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\n\t\"github.com/anchore/clio\"\n\thashiVersion \"github.com/anchore/go-version\"\n\t\"github.com/anchore/syft/cmd/syft/internal\"\n)\n\nfunc TestIsUpdateAvailable(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tbuildVersion  string\n\t\tlatestVersion string\n\t\tcode          int\n\t\tisAvailable   bool\n\t\tnewVersion    string\n\t\terr           bool\n\t}{\n\t\t{\n\t\t\tname:          \"equal\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"1.0.0\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           false,\n\t\t},\n\t\t{\n\t\t\tname:          \"hasUpdate\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"1.2.0\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   true,\n\t\t\tnewVersion:    \"1.2.0\",\n\t\t\terr:           false,\n\t\t},\n\t\t{\n\t\t\tname:          \"aheadOfLatest\",\n\t\t\tbuildVersion:  \"1.2.0\",\n\t\t\tlatestVersion: \"1.0.0\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           false,\n\t\t},\n\t\t{\n\t\t\tname:          \"EmptyUpdate\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           true,\n\t\t},\n\t\t{\n\t\t\tname:          \"GarbageUpdate\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"hdfjksdhfhkj\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           true,\n\t\t},\n\t\t{\n\t\t\tname:          \"BadUpdate\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"1.0.\",\n\t\t\tcode:          500,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           true,\n\t\t},\n\t\t{\n\t\t\tname:          \"NoBuildVersion\",\n\t\t\tbuildVersion:  internal.NotProvided,\n\t\t\tlatestVersion: \"1.0.0\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           false,\n\t\t},\n\t\t{\n\t\t\tname:          \"SnapshotBuildVersion\",\n\t\t\tbuildVersion:  \"2.0.0-SHAPSHOT-a78bf9c\",\n\t\t\tlatestVersion: \"1.0.0\",\n\t\t\tcode:          200,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           false,\n\t\t},\n\t\t{\n\t\t\tname:          \"BadUpdateValidVersion\",\n\t\t\tbuildVersion:  \"1.0.0\",\n\t\t\tlatestVersion: \"2.0.0\",\n\t\t\tcode:          404,\n\t\t\tisAvailable:   false,\n\t\t\tnewVersion:    \"\",\n\t\t\terr:           true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// setup mocks\n\t\t\t// local...\n\t\t\tid := clio.Identification{Name: \"Syft\", Version: test.buildVersion}\n\t\t\t// remote...\n\t\t\thandler := http.NewServeMux()\n\t\t\thandler.HandleFunc(latestAppVersionURL.path, func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tw.WriteHeader(test.code)\n\t\t\t\t_, _ = w.Write([]byte(test.latestVersion))\n\t\t\t})\n\t\t\tmockSrv := httptest.NewServer(handler)\n\t\t\tlatestAppVersionURL.host = mockSrv.URL\n\t\t\tdefer mockSrv.Close()\n\n\t\t\tisAvailable, newVersion, err := isUpdateAvailable(id)\n\t\t\tif err != nil && !test.err {\n\t\t\t\tt.Fatalf(\"got error but expected none: %+v\", err)\n\t\t\t} else if err == nil && test.err {\n\t\t\t\tt.Fatalf(\"expected error but got none\")\n\t\t\t}\n\n\t\t\tif newVersion != test.newVersion {\n\t\t\t\tt.Errorf(\"unexpected NEW version: %+v\", newVersion)\n\t\t\t}\n\n\t\t\tif isAvailable != test.isAvailable {\n\t\t\t\tt.Errorf(\"unexpected result: %+v\", isAvailable)\n\t\t\t}\n\t\t})\n\t}\n\n}\n\nfunc TestFetchLatestApplicationVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tresponse        string\n\t\tcode            int\n\t\terr             bool\n\t\tid              clio.Identification\n\t\texpected        *hashiVersion.Version\n\t\texpectedHeaders map[string]string\n\t}{\n\t\t{\n\t\t\tname:            \"gocase\",\n\t\t\tresponse:        \"1.0.0\",\n\t\t\tcode:            200,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        hashiVersion.Must(hashiVersion.NewVersion(\"1.0.0\")),\n\t\t\texpectedHeaders: map[string]string{\"User-Agent\": \"Syft 0.0.0\"},\n\t\t\terr:             false,\n\t\t},\n\t\t{\n\t\t\tname:            \"garbage\",\n\t\t\tresponse:        \"garbage\",\n\t\t\tcode:            200,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        nil,\n\t\t\texpectedHeaders: nil,\n\t\t\terr:             true,\n\t\t},\n\t\t{\n\t\t\tname:            \"http 500\",\n\t\t\tresponse:        \"1.0.0\",\n\t\t\tcode:            500,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        nil,\n\t\t\texpectedHeaders: nil,\n\t\t\terr:             true,\n\t\t},\n\t\t{\n\t\t\tname:            \"http 404\",\n\t\t\tresponse:        \"1.0.0\",\n\t\t\tcode:            404,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        nil,\n\t\t\texpectedHeaders: nil,\n\t\t\terr:             true,\n\t\t},\n\t\t{\n\t\t\tname:            \"empty\",\n\t\t\tresponse:        \"\",\n\t\t\tcode:            200,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        nil,\n\t\t\texpectedHeaders: nil,\n\t\t\terr:             true,\n\t\t},\n\t\t{\n\t\t\tname:            \"too long\",\n\t\t\tresponse:        \"this is really long this is really long this is really long this is really long this is really long this is really long this is really long this is really long \",\n\t\t\tcode:            200,\n\t\t\tid:              clio.Identification{Name: \"Syft\", Version: \"0.0.0\"},\n\t\t\texpected:        nil,\n\t\t\texpectedHeaders: nil,\n\t\t\terr:             true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// setup mock\n\t\t\thandler := http.NewServeMux()\n\t\t\thandler.HandleFunc(latestAppVersionURL.path, func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tif test.expectedHeaders != nil {\n\t\t\t\t\tfor headerName, headerValue := range test.expectedHeaders {\n\t\t\t\t\t\tactualHeader := r.Header.Get(headerName)\n\t\t\t\t\t\tif actualHeader != headerValue {\n\t\t\t\t\t\t\tt.Fatalf(\"expected header %v=%v but got %v\", headerName, headerValue, actualHeader)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tw.WriteHeader(test.code)\n\t\t\t\t_, _ = w.Write([]byte(test.response))\n\t\t\t})\n\t\t\tmockSrv := httptest.NewServer(handler)\n\t\t\tlatestAppVersionURL.host = mockSrv.URL\n\t\t\tdefer mockSrv.Close()\n\n\t\t\tactual, err := fetchLatestApplicationVersion(test.id)\n\t\t\tif err != nil && !test.err {\n\t\t\t\tt.Fatalf(\"got error but expected none: %+v\", err)\n\t\t\t} else if err == nil && test.err {\n\t\t\t\tt.Fatalf(\"expected error but got none\")\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif actual.String() != test.expected.String() {\n\t\t\t\tt.Errorf(\"unexpected version: %+v\", actual.String())\n\t\t\t}\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "cmd/syft/internal/commands/utils.go",
    "content": "package commands\n\nimport (\n\t\"io\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/internal/ui\"\n)\n\nfunc disableUI(app clio.Application, out io.Writer) func(*cobra.Command, []string) error {\n\treturn func(_ *cobra.Command, _ []string) error {\n\t\ttype Stater interface {\n\t\t\tState() *clio.State\n\t\t}\n\n\t\tstate := app.(Stater).State()\n\t\tstate.UI = clio.NewUICollection(ui.None(out, state.Config.Log.Quiet))\n\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/constants.go",
    "content": "package internal\n\nconst (\n\tNotProvided = \"[not provided]\"\n)\n"
  },
  {
    "path": "cmd/syft/internal/options/attest.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n)\n\nvar _ clio.FlagAdder = (*Attest)(nil)\n\ntype Attest struct {\n\t// IMPORTANT: do not show the attestation key/password in any YAML/JSON output (sensitive information)\n\tKey      secret `yaml:\"key\" json:\"key\" mapstructure:\"key\"`\n\tPassword secret `yaml:\"password\" json:\"password\" mapstructure:\"password\"`\n}\n\nvar _ interface {\n\tclio.FlagAdder\n\tclio.FieldDescriber\n} = (*Attest)(nil)\n\nfunc (o *Attest) AddFlags(flags clio.FlagSet) {\n\tflags.StringVarP((*string)(&o.Key), \"key\", \"k\", \"the key to use for the attestation\")\n}\n\nfunc (o *Attest) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.Password, `password to decrypt to given private key\nadditionally responds to COSIGN_PASSWORD env var`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/cache.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/adrg/xdg\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal/cache\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// Cache provides configuration for the Syft caching behavior\ntype Cache struct {\n\tDir string `yaml:\"dir\" mapstructure:\"dir\"`\n\tTTL string `yaml:\"ttl\" mapstructure:\"ttl\"`\n}\n\nfunc (c *Cache) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&c.Dir, \"root directory to cache any downloaded content; empty string will use an in-memory cache\")\n\tdescriptions.Add(&c.TTL, \"time to live for cached data; setting this to 0 will disable caching entirely\")\n}\n\nfunc (c *Cache) PostLoad() error {\n\tttl, err := parseDuration(c.TTL)\n\tif err != nil {\n\t\tlog.Warnf(\"unable to parse duration '%v', using default (%s) due to: %v\", c.TTL, durationToString(defaultTTL()), err)\n\t\tttl = defaultTTL()\n\t}\n\t// if TTL is <= 0, disable caching entirely\n\tif ttl <= 0 {\n\t\tcache.SetManager(nil)\n\t\treturn nil\n\t}\n\t// if dir == \"\" but we have a TTL, use an in-memory cache\n\tif c.Dir == \"\" {\n\t\tcache.SetManager(cache.NewInMemory(ttl))\n\t\treturn nil\n\t}\n\tdir, err := homedir.Expand(c.Dir)\n\tif err != nil {\n\t\tlog.Warnf(\"unable to expand cache directory %s: %v\", c.Dir, err)\n\t\tcache.SetManager(cache.NewInMemory(ttl))\n\t} else {\n\t\tm, err := cache.NewFromDir(dir, ttl)\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"unable to get filesystem cache at %s: %v\", c.Dir, err)\n\t\t\tcache.SetManager(cache.NewInMemory(ttl))\n\t\t} else {\n\t\t\tcache.SetManager(m)\n\t\t}\n\t}\n\treturn nil\n}\n\nvar _ interface {\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*Cache)(nil)\n\nfunc DefaultCache() Cache {\n\treturn Cache{\n\t\tDir: defaultDir(),\n\t\tTTL: durationToString(defaultTTL()),\n\t}\n}\n\nfunc defaultTTL() time.Duration {\n\treturn 7 * 24 * time.Hour\n}\n\nfunc defaultDir() string {\n\tvar err error\n\tcacheRoot := xdg.CacheHome\n\tif cacheRoot == \"\" {\n\t\tcacheRoot, err = homedir.Dir()\n\t\tif err != nil {\n\t\t\tcacheRoot = os.TempDir()\n\t\t\tlog.Debugf(\"unable to get stable cache directory due to: %v, defaulting cache to temp dir: %s\", err, cacheRoot)\n\t\t} else {\n\t\t\tcacheRoot = filepath.Join(cacheRoot, \".cache\")\n\t\t}\n\t}\n\n\treturn filepath.Join(cacheRoot, \"syft\")\n}\n\nfunc durationToString(duration time.Duration) string {\n\tdays := int64(duration / (24 * time.Hour))\n\tremain := duration % (24 * time.Hour)\n\tout := \"\"\n\tif days > 0 {\n\t\tout = fmt.Sprintf(\"%vd\", days)\n\t}\n\tif remain != 0 {\n\t\tout += remain.String()\n\t}\n\tif out == \"\" {\n\t\treturn \"0\"\n\t}\n\treturn out\n}\n\nfunc parseDuration(duration string) (time.Duration, error) {\n\twhitespace := regexp.MustCompile(`\\s+`)\n\tduration = strings.ToLower(whitespace.ReplaceAllString(duration, \"\"))\n\tparts := strings.SplitN(duration, \"d\", 2)\n\tvar days time.Duration\n\tvar remain time.Duration\n\tvar err error\n\tif len(parts) > 1 {\n\t\tnumDays, daysErr := strconv.Atoi(parts[0])\n\t\tif daysErr != nil {\n\t\t\treturn 0, daysErr\n\t\t}\n\t\tdays = time.Duration(numDays) * 24 * time.Hour\n\t\tif len(parts[1]) > 0 {\n\t\t\tremain, err = time.ParseDuration(parts[1])\n\t\t}\n\t} else {\n\t\tremain, err = time.ParseDuration(duration)\n\t}\n\treturn days + remain, err\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/cache_test.go",
    "content": "package options\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/adrg/xdg\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/cache\"\n)\n\nfunc Test_defaultDir(t *testing.T) {\n\ttmpDir := filepath.Join(t.TempDir(), \"cache-temp\")\n\txdgCacheDir := filepath.Join(tmpDir, \"fake-xdg-cache\")\n\thomeDir := filepath.Join(tmpDir, \"fake-home\")\n\n\ttests := []struct {\n\t\tname     string\n\t\tenv      map[string]string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"no-xdg\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"HOME\": homeDir,\n\t\t\t},\n\t\t\texpected: homeDir,\n\t\t},\n\t\t{\n\t\t\tname: \"xdg-cache\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"XDG_CACHE_HOME\": xdgCacheDir,\n\t\t\t},\n\t\t\texpected: xdgCacheDir,\n\t\t},\n\t}\n\n\t// capture all the initial environment variables to reset them before we reset library caches\n\tenv := map[string]string{\n\t\t\"HOME\":            \"\",\n\t\t\"XDG_DATA_HOME\":   \"\",\n\t\t\"XDG_DATA_DIRS\":   \"\",\n\t\t\"XDG_CONFIG_HOME\": \"\",\n\t\t\"XDG_CONFIG_DIRS\": \"\",\n\t\t\"XDG_STATE_HOME\":  \"\",\n\t\t\"XDG_CACHE_HOME\":  \"\",\n\t\t\"XDG_RUNTIME_DIR\": \"\",\n\t}\n\tfor k := range env {\n\t\tenv[k] = os.Getenv(k)\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\trestoreCache(t)\n\n\t\t\tfor k, v := range test.env {\n\t\t\t\tpatchEnv(t, k, v)\n\t\t\t}\n\t\t\txdg.Reload()\n\n\t\t\tgot := defaultDir()\n\n\t\t\trequire.True(t, strings.HasPrefix(got, test.expected))\n\t\t})\n\t}\n}\n\nfunc Test_cacheOptions(t *testing.T) {\n\ttmp := t.TempDir()\n\ttests := []struct {\n\t\tname string\n\t\topts Cache\n\t\ttest func(t *testing.T)\n\t}{\n\t\t{\n\t\t\tname: \"disable-1\",\n\t\t\topts: Cache{\n\t\t\t\tDir: \"some-dir\",\n\t\t\t\tTTL: \"0\",\n\t\t\t},\n\t\t\ttest: func(t *testing.T) {\n\t\t\t\tc := cache.GetManager().GetCache(\"test-disable-1\", \"v-disable-1\")\n\t\t\t\terr := c.Write(\"key-disable-1\", strings.NewReader(\"some-value-disable-1\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trdr, err := c.Read(\"key-disable-1\")\n\t\t\t\trequire.Nil(t, rdr)\n\t\t\t\trequire.Error(t, err)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"disable-2\",\n\t\t\topts: Cache{\n\t\t\t\tDir: \"some-dir\",\n\t\t\t\tTTL: \"0s\",\n\t\t\t},\n\t\t\ttest: func(t *testing.T) {\n\t\t\t\tc := cache.GetManager().GetCache(\"test-disable-2\", \"v-disable-2\")\n\t\t\t\terr := c.Write(\"key-disable-2\", strings.NewReader(\"some-value-disable-2\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trdr, err := c.Read(\"key-disable-2\")\n\t\t\t\trequire.Nil(t, rdr)\n\t\t\t\trequire.Error(t, err)\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\tname: \"disable-3\",\n\t\t\topts: Cache{\n\t\t\t\tDir: \"some-dir\",\n\t\t\t\tTTL: \"0d\",\n\t\t\t},\n\t\t\ttest: func(t *testing.T) {\n\t\t\t\tc := cache.GetManager().GetCache(\"test-disable-3\", \"v-disable-3\")\n\t\t\t\terr := c.Write(\"key-disable-3\", strings.NewReader(\"some-value-disable-3\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trdr, err := c.Read(\"key-disable-3\")\n\t\t\t\trequire.Nil(t, rdr)\n\t\t\t\trequire.Error(t, err)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"in-memory\",\n\t\t\topts: Cache{\n\t\t\t\tDir: \"\",\n\t\t\t\tTTL: \"10m\",\n\t\t\t},\n\t\t\ttest: func(t *testing.T) {\n\t\t\t\tc := cache.GetManager().GetCache(\"test-mem\", \"v-mem\")\n\t\t\t\terr := c.Write(\"key-mem\", strings.NewReader(\"some-value-mem\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trdr, err := c.Read(\"key-mem\")\n\t\t\t\trequire.NotNil(t, rdr)\n\t\t\t\tdefer internal.CloseAndLogError(rdr, \"\")\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tdata, err := io.ReadAll(rdr)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, \"some-value-mem\", string(data))\n\t\t\t\trequire.NoDirExists(t, filepath.Join(\"test-mem\", \"v-mem\"))\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"on disk\",\n\t\t\topts: Cache{\n\t\t\t\tDir: tmp,\n\t\t\t\tTTL: \"10m\",\n\t\t\t},\n\t\t\ttest: func(t *testing.T) {\n\t\t\t\tc := cache.GetManager().GetCache(\"test-disk\", \"v-disk\")\n\t\t\t\terr := c.Write(\"key-disk\", strings.NewReader(\"some-value-disk\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trdr, err := c.Read(\"key-disk\")\n\t\t\t\trequire.NotNil(t, rdr)\n\t\t\t\tdefer internal.CloseAndLogError(rdr, \"\")\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tdata, err := io.ReadAll(rdr)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, \"some-value-disk\", string(data))\n\t\t\t\trequire.DirExists(t, filepath.Join(tmp, \"test-disk\", \"v-disk\"))\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\toriginal := cache.GetManager()\n\t\t\tdefer cache.SetManager(original)\n\n\t\t\terr := test.opts.PostLoad()\n\t\t\trequire.NoError(t, err)\n\n\t\t\ttest.test(t)\n\t\t})\n\t}\n}\n\nfunc Test_parseDuration(t *testing.T) {\n\ttests := []struct {\n\t\tduration string\n\t\texpect   time.Duration\n\t\terr      require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tduration: \"0d\",\n\t\t\texpect:   0,\n\t\t},\n\t\t{\n\t\t\tduration: \"0m\",\n\t\t\texpect:   0,\n\t\t},\n\t\t{\n\t\t\tduration: \"0s\",\n\t\t\texpect:   0,\n\t\t},\n\t\t{\n\t\t\tduration: \"0\",\n\t\t\texpect:   0,\n\t\t},\n\t\t{\n\t\t\tduration: \"1d\",\n\t\t\texpect:   24 * time.Hour,\n\t\t},\n\t\t{\n\t\t\tduration: \"7d\",\n\t\t\texpect:   7 * 24 * time.Hour,\n\t\t},\n\t\t{\n\t\t\tduration: \"365D\",\n\t\t\texpect:   365 * 24 * time.Hour,\n\t\t},\n\t\t{\n\t\t\tduration: \"7d1h1m1s\",\n\t\t\texpect:   7*24*time.Hour + time.Hour + time.Minute + time.Second,\n\t\t},\n\t\t{\n\t\t\tduration: \"7d  1h 1m 1s\",\n\t\t\texpect:   7*24*time.Hour + time.Hour + time.Minute + time.Second,\n\t\t},\n\t\t{\n\t\t\tduration: \"2h\",\n\t\t\texpect:   2 * time.Hour,\n\t\t},\n\t\t{\n\t\t\tduration: \"2h5m\",\n\t\t\texpect:   2*time.Hour + 5*time.Minute,\n\t\t},\n\t\t{\n\t\t\tduration: \"2h 5m\",\n\t\t\texpect:   2*time.Hour + 5*time.Minute,\n\t\t},\n\t\t{\n\t\t\tduration: \"d24h\",\n\t\t\terr:      require.Error,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.duration, func(t *testing.T) {\n\t\t\tgot, err := parseDuration(test.duration)\n\t\t\tif test.err != nil {\n\t\t\t\ttest.err(t, err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.Equal(t, test.expect, got)\n\t\t})\n\t}\n}\n\nfunc Test_durationToString(t *testing.T) {\n\ttests := []struct {\n\t\tduration time.Duration\n\t\texpect   string\n\t\terr      require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\texpect:   \"1d\",\n\t\t\tduration: 24 * time.Hour,\n\t\t},\n\t\t{\n\t\t\texpect:   \"7d\",\n\t\t\tduration: 7 * 24 * time.Hour,\n\t\t},\n\t\t{\n\t\t\texpect:   \"7d1h1m1s\",\n\t\t\tduration: 7*24*time.Hour + time.Hour + time.Minute + time.Second,\n\t\t},\n\t\t{\n\t\t\texpect:   \"2h0m0s\",\n\t\t\tduration: 2 * time.Hour,\n\t\t},\n\t\t{\n\t\t\texpect:   \"2h5m0s\",\n\t\t\tduration: 2*time.Hour + 5*time.Minute,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.expect, func(t *testing.T) {\n\t\t\tgot := durationToString(test.duration)\n\t\t\trequire.Equal(t, test.expect, got)\n\t\t})\n\t}\n}\n\n// restoreCache ensures cache settings are restored after test\nfunc restoreCache(t testing.TB) {\n\tt.Helper()\n\torigEnabled := homedir.CacheEnabled()\n\n\tt.Cleanup(func() {\n\t\thomedir.SetCacheEnable(origEnabled)\n\t\thomedir.Reset()\n\t})\n}\n\n// patchEnv modifies an environment variable for the duration of the test\nfunc patchEnv(t testing.TB, key, value string) {\n\tt.Helper()\n\toriginal := os.Getenv(key)\n\n\tif value != \"\" {\n\t\tos.Setenv(key, value)\n\t} else {\n\t\tos.Unsetenv(key)\n\t}\n\n\tt.Cleanup(func() {\n\t\tif original != \"\" {\n\t\t\tos.Setenv(key, original)\n\t\t} else {\n\t\t\tos.Unsetenv(key)\n\t\t}\n\t\txdg.Reload()\n\t})\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/catalog.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/iancoleman/strcase\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/fangs\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/file/cataloger/executable\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filecontent\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/dotnet\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/golang\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/javascript\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/kernel\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/nix\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/python\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\ntype Catalog struct {\n\t// high-level cataloger configuration\n\tCatalogerSelection `yaml:\",inline\" json:\",inline\" mapstructure:\",squash\"`\n\n\tPackage       packageConfig       `yaml:\"package\" json:\"package\" mapstructure:\"package\"`\n\tLicense       licenseConfig       `yaml:\"license\" json:\"license\" mapstructure:\"license\"`\n\tFile          fileConfig          `yaml:\"file\" json:\"file\" mapstructure:\"file\"`\n\tScope         string              `yaml:\"scope\" json:\"scope\" mapstructure:\"scope\"`\n\tParallelism   int                 `yaml:\"parallelism\" json:\"parallelism\" mapstructure:\"parallelism\"` // the number of catalog workers to run in parallel\n\tRelationships relationshipsConfig `yaml:\"relationships\" json:\"relationships\" mapstructure:\"relationships\"`\n\tCompliance    complianceConfig    `yaml:\"compliance\" json:\"compliance\" mapstructure:\"compliance\"`\n\tEnrich        []string            `yaml:\"enrich\" json:\"enrich\" mapstructure:\"enrich\"`\n\n\t// ecosystem-specific cataloger configuration\n\tDotnet      dotnetConfig      `yaml:\"dotnet\" json:\"dotnet\" mapstructure:\"dotnet\"`\n\tGolang      golangConfig      `yaml:\"golang\" json:\"golang\" mapstructure:\"golang\"`\n\tJava        javaConfig        `yaml:\"java\" json:\"java\" mapstructure:\"java\"`\n\tJavaScript  javaScriptConfig  `yaml:\"javascript\" json:\"javascript\" mapstructure:\"javascript\"`\n\tLinuxKernel linuxKernelConfig `yaml:\"linux-kernel\" json:\"linux-kernel\" mapstructure:\"linux-kernel\"`\n\tNix         nixConfig         `yaml:\"nix\" json:\"nix\" mapstructure:\"nix\"`\n\tPython      pythonConfig      `yaml:\"python\" json:\"python\" mapstructure:\"python\"`\n\n\t// configuration for the source (the subject being analyzed)\n\tRegistry   registryConfig `yaml:\"registry\" json:\"registry\" mapstructure:\"registry\"`\n\tFrom       []string       `yaml:\"from\" json:\"from\" mapstructure:\"from\"`\n\tPlatform   string         `yaml:\"platform\" json:\"platform\" mapstructure:\"platform\"`\n\tSource     sourceConfig   `yaml:\"source\" json:\"source\" mapstructure:\"source\"`\n\tExclusions []string       `yaml:\"exclude\" json:\"exclude\" mapstructure:\"exclude\"`\n\n\t// configuration for inclusion of unknown information within elements\n\tUnknowns unknownsConfig `yaml:\"unknowns\" mapstructure:\"unknowns\"`\n}\n\nvar _ interface {\n\tclio.FlagAdder\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*Catalog)(nil)\n\nfunc DefaultCatalog() Catalog {\n\tcfg := syft.DefaultCreateSBOMConfig()\n\treturn Catalog{\n\t\tCompliance:    defaultComplianceConfig(),\n\t\tScope:         source.SquashedScope.String(),\n\t\tPackage:       defaultPackageConfig(),\n\t\tLicense:       defaultLicenseConfig(),\n\t\tLinuxKernel:   defaultLinuxKernelConfig(),\n\t\tJavaScript:    defaultJavaScriptConfig(),\n\t\tPython:        defaultPythonConfig(),\n\t\tNix:           defaultNixConfig(),\n\t\tDotnet:        defaultDotnetConfig(),\n\t\tGolang:        defaultGolangConfig(),\n\t\tJava:          defaultJavaConfig(),\n\t\tFile:          defaultFileConfig(),\n\t\tRelationships: defaultRelationshipsConfig(),\n\t\tUnknowns:      defaultUnknowns(),\n\t\tSource:        defaultSourceConfig(),\n\t\tParallelism:   cfg.Parallelism,\n\t}\n}\n\nfunc (cfg Catalog) ToSBOMConfig(id clio.Identification) *syft.CreateSBOMConfig {\n\treturn syft.DefaultCreateSBOMConfig().\n\t\tWithTool(id.Name, id.Version).\n\t\tWithParallelism(cfg.Parallelism).\n\t\tWithRelationshipsConfig(cfg.ToRelationshipsConfig()).\n\t\tWithComplianceConfig(cfg.ToComplianceConfig()).\n\t\tWithUnknownsConfig(cfg.ToUnknownsConfig()).\n\t\tWithSearchConfig(cfg.ToSearchConfig()).\n\t\tWithPackagesConfig(cfg.ToPackagesConfig()).\n\t\tWithLicenseConfig(cfg.ToLicenseConfig()).\n\t\tWithFilesConfig(cfg.ToFilesConfig()).\n\t\tWithCatalogerSelection(\n\t\t\tcataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(cfg.DefaultCatalogers...).\n\t\t\t\tWithExpression(cfg.SelectCatalogers...),\n\t\t)\n}\n\nfunc (cfg Catalog) ToSearchConfig() cataloging.SearchConfig {\n\treturn cataloging.SearchConfig{\n\t\tScope: source.ParseScope(cfg.Scope),\n\t}\n}\n\nfunc (cfg Catalog) ToRelationshipsConfig() cataloging.RelationshipsConfig {\n\treturn cataloging.RelationshipsConfig{\n\t\tPackageFileOwnership:        cfg.Relationships.PackageFileOwnership,\n\t\tPackageFileOwnershipOverlap: cfg.Relationships.PackageFileOwnershipOverlap,\n\t\t// note: this option was surfaced in the syft application configuration before this relationships section was added\n\t\tExcludeBinaryPackagesWithFileOwnershipOverlap: cfg.Package.ExcludeBinaryOverlapByOwnership,\n\t}\n}\n\nfunc (cfg Catalog) ToComplianceConfig() cataloging.ComplianceConfig {\n\treturn cataloging.ComplianceConfig{\n\t\tMissingName:    cfg.Compliance.MissingName,\n\t\tMissingVersion: cfg.Compliance.MissingVersion,\n\t}\n}\n\nfunc (cfg Catalog) ToUnknownsConfig() cataloging.UnknownsConfig {\n\treturn cataloging.UnknownsConfig{\n\t\tIncludeExecutablesWithoutPackages: cfg.Unknowns.ExecutablesWithoutPackages,\n\t\tIncludeUnexpandedArchives:         cfg.Unknowns.UnexpandedArchives,\n\t}\n}\n\nfunc (cfg Catalog) ToFilesConfig() filecataloging.Config {\n\thashers, err := intFile.Hashers(cfg.File.Metadata.Digests...)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Warn(\"unable to configure file hashers\")\n\t}\n\n\treturn filecataloging.Config{\n\t\tSelection: cfg.File.Metadata.Selection,\n\t\tHashers:   hashers,\n\t\tContent: filecontent.Config{\n\t\t\tGlobs:              cfg.File.Content.Globs,\n\t\t\tSkipFilesAboveSize: cfg.File.Content.SkipFilesAboveSize,\n\t\t},\n\t\tExecutable: executable.Config{\n\t\t\tMIMETypes: executable.DefaultConfig().MIMETypes,\n\t\t\tGlobs:     cfg.File.Executable.Globs,\n\t\t},\n\t}\n}\n\nfunc (cfg Catalog) ToLicenseConfig() cataloging.LicenseConfig {\n\treturn cataloging.LicenseConfig{\n\t\tIncludeContent: cfg.License.Content,\n\t\tCoverage:       cfg.License.Coverage,\n\t}\n}\n\nfunc (cfg Catalog) ToPackagesConfig() pkgcataloging.Config {\n\tarchiveSearch := cataloging.ArchiveSearchConfig{\n\t\tIncludeIndexedArchives:   cfg.Package.SearchIndexedArchives,\n\t\tIncludeUnindexedArchives: cfg.Package.SearchUnindexedArchives,\n\t}\n\treturn pkgcataloging.Config{\n\t\tBinary: binary.DefaultClassifierCatalogerConfig(),\n\t\tDotnet: dotnet.DefaultCatalogerConfig().\n\t\t\tWithDepPackagesMustHaveDLL(cfg.Dotnet.DepPackagesMustHaveDLL).\n\t\t\tWithDepPackagesMustClaimDLL(cfg.Dotnet.DepPackagesMustClaimDLL).\n\t\t\tWithPropagateDLLClaimsToParents(cfg.Dotnet.PropagateDLLClaimsToParents).\n\t\t\tWithRelaxDLLClaimsWhenBundlingDetected(cfg.Dotnet.RelaxDLLClaimsWhenBundlingDetected),\n\t\tGolang: golang.DefaultCatalogerConfig().\n\t\t\tWithSearchLocalModCacheLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.SearchLocalModCacheLicenses)).\n\t\t\tWithLocalModCacheDir(cfg.Golang.LocalModCacheDir).\n\t\t\tWithSearchLocalVendorLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.SearchLocalVendorLicenses)).\n\t\t\tWithLocalVendorDir(cfg.Golang.LocalVendorDir).\n\t\t\tWithSearchRemoteLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.SearchRemoteLicenses)).\n\t\t\tWithProxy(cfg.Golang.Proxy).\n\t\t\tWithNoProxy(cfg.Golang.NoProxy).\n\t\t\tWithMainModuleVersion(\n\t\t\t\tgolang.DefaultMainModuleVersionConfig().\n\t\t\t\t\tWithFromContents(cfg.Golang.MainModuleVersion.FromContents).\n\t\t\t\t\tWithFromBuildSettings(cfg.Golang.MainModuleVersion.FromBuildSettings).\n\t\t\t\t\tWithFromLDFlags(cfg.Golang.MainModuleVersion.FromLDFlags),\n\t\t\t).\n\t\t\tWithUsePackagesLib(*multiLevelOption(true, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.UsePackagesLib)),\n\t\tJavaScript: javascript.DefaultCatalogerConfig().\n\t\t\tWithIncludeDevDependencies(*multiLevelOption(false, cfg.JavaScript.IncludeDevDependencies)).\n\t\t\tWithSearchRemoteLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.JavaScript, task.Node, task.NPM), cfg.JavaScript.SearchRemoteLicenses)).\n\t\t\tWithNpmBaseURL(cfg.JavaScript.NpmBaseURL),\n\t\tLinuxKernel: kernel.LinuxKernelCatalogerConfig{\n\t\t\tCatalogModules: cfg.LinuxKernel.CatalogModules,\n\t\t},\n\t\tNix: nix.DefaultConfig().\n\t\t\tWithCaptureOwnedFiles(cfg.Nix.CaptureOwnedFiles),\n\t\tPython: python.DefaultCatalogerConfig().\n\t\t\tWithSearchRemoteLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Python), cfg.Python.SearchRemoteLicenses)).\n\t\t\tWithPypiBaseURL(cfg.Python.PypiBaseURL).\n\t\t\tWithGuessUnpinnedRequirements(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Python), cfg.Python.GuessUnpinnedRequirements)),\n\t\tJavaArchive: java.DefaultArchiveCatalogerConfig().\n\t\t\tWithUseMavenLocalRepository(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Java, task.Maven), cfg.Java.UseMavenLocalRepository)).\n\t\t\tWithMavenLocalRepositoryDir(cfg.Java.MavenLocalRepositoryDir).\n\t\t\tWithUseNetwork(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Java, task.Maven), cfg.Java.UseNetwork)).\n\t\t\tWithMavenBaseURL(cfg.Java.MavenURL).\n\t\t\tWithArchiveTraversal(archiveSearch, cfg.Java.MaxParentRecursiveDepth).\n\t\t\tWithResolveTransitiveDependencies(cfg.Java.ResolveTransitiveDependencies),\n\t}\n}\n\nfunc (cfg *Catalog) AddFlags(flags clio.FlagSet) {\n\tvar validScopeValues []string\n\tfor _, scope := range source.AllScopes {\n\t\tvalidScopeValues = append(validScopeValues, strcase.ToDelimited(string(scope), '-'))\n\t}\n\tflags.StringVarP(&cfg.Scope, \"scope\", \"s\",\n\t\tfmt.Sprintf(\"selection of layers to catalog, options=%v\", validScopeValues))\n\n\tflags.StringArrayVarP(&cfg.From, \"from\", \"\",\n\t\t\"specify the source behavior to use (e.g. docker, registry, oci-dir, ...)\")\n\n\tflags.StringVarP(&cfg.Platform, \"platform\", \"\",\n\t\t\"an optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')\")\n\n\tflags.StringArrayVarP(&cfg.Exclusions, \"exclude\", \"\",\n\t\t\"exclude paths from being scanned using a glob expression\")\n\n\tflags.IntVarP(&cfg.Parallelism, \"parallelism\", \"\",\n\t\t\"number of cataloger workers to run in parallel\")\n\n\tflags.StringArrayVarP(&cfg.Enrich, \"enrich\", \"\",\n\t\tfmt.Sprintf(\"enable package data enrichment from local and online sources (options: %s)\", strings.Join(publicisedEnrichmentOptions, \", \")))\n\n\tflags.StringVarP(&cfg.Source.Name, \"source-name\", \"\",\n\t\t\"set the name of the target being analyzed\")\n\n\tflags.StringVarP(&cfg.Source.Version, \"source-version\", \"\",\n\t\t\"set the version of the target being analyzed\")\n\n\tflags.StringVarP(&cfg.Source.BasePath, \"base-path\", \"\",\n\t\t\"base directory for scanning, no links will be followed above this directory, and all paths will be reported relative to this directory\")\n\n\tflags.StringVarP(&cfg.Source.Supplier, \"source-supplier\", \"\",\n\t\t\"the organization that supplied the component, which often may be the manufacturer, distributor, or repackager\")\n}\n\nfunc (cfg *Catalog) DescribeFields(descriptions fangs.FieldDescriptionSet) {\n\tdescriptions.Add(&cfg.Parallelism, `number of cataloger workers to run in parallel\nby default, when set to 0: this will be based on runtime.NumCPU * 4, if set to less than 0 it will be unbounded`)\n\n\tdescriptions.Add(&cfg.Enrich, fmt.Sprintf(`Enable data enrichment operations, which can utilize services such as Maven Central and NPM.\nBy default all enrichment is disabled, use: all to enable everything.\nAvailable options are: %s`, strings.Join(publicisedEnrichmentOptions, \", \")))\n}\n\nfunc (cfg *Catalog) PostLoad() error {\n\tcfg.From = Flatten(cfg.From)\n\tcfg.Enrich = FlattenAndSort(cfg.Enrich)\n\n\ts := source.ParseScope(cfg.Scope)\n\tif s == source.UnknownScope {\n\t\treturn fmt.Errorf(\"bad scope value %q\", cfg.Scope)\n\t}\n\n\t// the binary package exclusion code depends on the file overlap relationships being created upstream in processing\n\tif !cfg.Relationships.PackageFileOwnershipOverlap && cfg.Package.ExcludeBinaryOverlapByOwnership {\n\t\treturn fmt.Errorf(\"cannot enable exclude-binary-overlap-by-ownership without enabling package-file-ownership-overlap\")\n\t}\n\n\treturn nil\n}\n\nfunc Flatten(commaSeparatedEntries []string) []string {\n\tvar out []string\n\tfor _, v := range commaSeparatedEntries {\n\t\tfor _, s := range strings.Split(v, \",\") {\n\t\t\tout = append(out, strings.TrimSpace(s))\n\t\t}\n\t}\n\treturn out\n}\n\nfunc FlattenAndSort(commaSeparatedEntries []string) []string {\n\tout := Flatten(commaSeparatedEntries)\n\tsort.Strings(out)\n\treturn out\n}\n\nvar publicisedEnrichmentOptions = []string{\n\t\"all\",\n\ttask.Golang,\n\ttask.Java,\n\ttask.JavaScript,\n\ttask.Python,\n}\n\nfunc enrichmentEnabled(enrichDirectives []string, features ...string) *bool {\n\tif len(enrichDirectives) == 0 {\n\t\treturn nil\n\t}\n\n\tenabled := func(features ...string) *bool {\n\t\tfor _, directive := range enrichDirectives {\n\t\t\tenable := true\n\t\t\tdirective = strings.TrimPrefix(directive, \"+\") // +java and java are equivalent\n\t\t\tif strings.HasPrefix(directive, \"-\") {\n\t\t\t\tdirective = directive[1:]\n\t\t\t\tenable = false\n\t\t\t}\n\t\t\tfor _, feature := range features {\n\t\t\t\tif directive == feature {\n\t\t\t\t\treturn &enable\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tenableAll := enabled(\"all\")\n\tdisableAll := enabled(\"none\")\n\n\tif disableAll != nil && *disableAll {\n\t\tif enableAll != nil {\n\t\t\tlog.Warn(\"you have specified to both enable and disable all enrichment functionality, defaulting to disabled\")\n\t\t}\n\t\tenableAll = ptr(false)\n\t}\n\n\t// check for explicit enable/disable of feature names\n\tfor _, feat := range features {\n\t\tenableFeature := enabled(feat)\n\t\tif enableFeature != nil {\n\t\t\treturn enableFeature\n\t\t}\n\t}\n\n\treturn enableAll\n}\n\nfunc ptr[T any](val T) *T {\n\treturn &val\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/catalog_test.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestCatalog_PostLoad(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\toptions Catalog\n\t\tassert  func(t *testing.T, options Catalog)\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"must have package overlap flag when pruning binaries by overlap\",\n\t\t\toptions: Catalog{\n\t\t\t\tPackage:       packageConfig{ExcludeBinaryOverlapByOwnership: true},\n\t\t\t\tRelationships: relationshipsConfig{PackageFileOwnershipOverlap: false},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.wantErr(t, tt.options.PostLoad(), fmt.Sprintf(\"PostLoad()\"))\n\t\t\tif tt.assert != nil {\n\t\t\t\ttt.assert(t, tt.options)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFlatten(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"preserves order of comma-separated values\",\n\t\t\tinput:    []string{\"registry,docker,oci-dir\"},\n\t\t\texpected: []string{\"registry\", \"docker\", \"oci-dir\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"preserves order across multiple entries\",\n\t\t\tinput:    []string{\"registry,docker\", \"oci-dir\"},\n\t\t\texpected: []string{\"registry\", \"docker\", \"oci-dir\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"trims whitespace\",\n\t\t\tinput:    []string{\"  registry  ,  docker  \", \"  oci-dir  \"},\n\t\t\texpected: []string{\"registry\", \"docker\", \"oci-dir\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"handles single value\",\n\t\t\tinput:    []string{\"registry\"},\n\t\t\texpected: []string{\"registry\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"handles empty input\",\n\t\t\tinput:    []string{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"preserves reverse alphabetical order\",\n\t\t\tinput:    []string{\"zebra,yankee,xray\"},\n\t\t\texpected: []string{\"zebra\", \"yankee\", \"xray\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := Flatten(tt.input)\n\t\t\tassert.Equal(t, tt.expected, got)\n\t\t})\n\t}\n}\n\nfunc TestFlattenAndSort(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"sorts comma-separated values\",\n\t\t\tinput:    []string{\"registry,docker,oci-dir\"},\n\t\t\texpected: []string{\"docker\", \"oci-dir\", \"registry\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"sorts across multiple entries\",\n\t\t\tinput:    []string{\"registry,docker\", \"oci-dir\"},\n\t\t\texpected: []string{\"docker\", \"oci-dir\", \"registry\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"trims whitespace and sorts\",\n\t\t\tinput:    []string{\"  registry  ,  docker  \", \"  oci-dir  \"},\n\t\t\texpected: []string{\"docker\", \"oci-dir\", \"registry\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"handles single value\",\n\t\t\tinput:    []string{\"registry\"},\n\t\t\texpected: []string{\"registry\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"handles empty input\",\n\t\t\tinput:    []string{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"sorts reverse alphabetical order\",\n\t\t\tinput:    []string{\"zebra,yankee,xray\"},\n\t\t\texpected: []string{\"xray\", \"yankee\", \"zebra\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := FlattenAndSort(tt.input)\n\t\t\tassert.Equal(t, tt.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_enrichmentEnabled(t *testing.T) {\n\ttests := []struct {\n\t\tdirectives string\n\t\ttest       string\n\t\texpected   *bool\n\t}{\n\t\t{\n\t\t\tdirectives: \"\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   nil,\n\t\t},\n\t\t{\n\t\t\tdirectives: \"none\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(false),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"none,+java\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(true),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"all,none\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(false),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"all\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(true),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"golang,js\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   nil,\n\t\t},\n\t\t{\n\t\t\tdirectives: \"golang,-js,java\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(true),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"golang,js,-java\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(false),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"all\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(true),\n\t\t},\n\t\t{\n\t\t\tdirectives: \"all,-java\",\n\t\t\ttest:       \"java\",\n\t\t\texpected:   ptr(false),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.directives, func(t *testing.T) {\n\t\t\tgot := enrichmentEnabled(FlattenAndSort([]string{test.directives}), test.test)\n\t\t\tassert.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/cataloger_selection.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/fangs\"\n)\n\ntype CatalogerSelection struct {\n\t// high-level cataloger configuration\n\tCatalogers        []string `yaml:\"-\" json:\"catalogers\" mapstructure:\"catalogers\"` // deprecated and not shown in yaml output\n\tDefaultCatalogers []string `yaml:\"default-catalogers\" json:\"default-catalogers\" mapstructure:\"default-catalogers\"`\n\tSelectCatalogers  []string `yaml:\"select-catalogers\" json:\"select-catalogers\" mapstructure:\"select-catalogers\"`\n}\n\nvar _ interface {\n\tclio.FlagAdder\n\tclio.PostLoader\n} = (*CatalogerSelection)(nil)\n\nfunc (cfg *CatalogerSelection) AddFlags(flags clio.FlagSet) {\n\tflags.StringArrayVarP(&cfg.Catalogers, \"catalogers\", \"\",\n\t\t\"enable one or more package catalogers\")\n\n\tif pfp, ok := flags.(fangs.PFlagSetProvider); ok {\n\t\tif err := pfp.PFlagSet().MarkDeprecated(\"catalogers\", \"use: override-default-catalogers and select-catalogers\"); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t} else {\n\t\tpanic(\"unable to mark flags as deprecated\")\n\t}\n\n\tflags.StringArrayVarP(&cfg.DefaultCatalogers, \"override-default-catalogers\", \"\",\n\t\t\"set the base set of catalogers to use (defaults to 'image' or 'directory' depending on the scan source)\")\n\n\tflags.StringArrayVarP(&cfg.SelectCatalogers, \"select-catalogers\", \"\",\n\t\t\"add, remove, and filter the catalogers to be used\")\n}\n\nfunc (cfg *CatalogerSelection) PostLoad() error {\n\tusingLegacyCatalogers := len(cfg.Catalogers) > 0\n\tusingNewCatalogers := len(cfg.DefaultCatalogers) > 0 || len(cfg.SelectCatalogers) > 0\n\n\tif usingLegacyCatalogers && usingNewCatalogers {\n\t\treturn fmt.Errorf(\"cannot use both 'catalogers' and 'select-catalogers'/'default-catalogers' flags %q | %q %q\", cfg.Catalogers, cfg.SelectCatalogers, cfg.DefaultCatalogers)\n\t}\n\n\tcfg.Catalogers = FlattenAndSort(cfg.Catalogers)\n\tcfg.DefaultCatalogers = FlattenAndSort(cfg.DefaultCatalogers)\n\tcfg.SelectCatalogers = FlattenAndSort(cfg.SelectCatalogers)\n\n\t// for backwards compatibility\n\tcfg.DefaultCatalogers = append(cfg.DefaultCatalogers, cfg.Catalogers...)\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/cataloger_selection_test.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestCatalogerSelection_PostLoad(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\toptions CatalogerSelection\n\t\tassert  func(t *testing.T, options CatalogerSelection)\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"mutually exclusive cataloger flags (cat / def-cat)\",\n\t\t\toptions: CatalogerSelection{\n\t\t\t\tCatalogers:        []string{\"foo,bar\", \"42\"},\n\t\t\t\tDefaultCatalogers: []string{\"some,thing\"},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"mutually exclusive cataloger flags (cat / sel-cat)\",\n\t\t\toptions: CatalogerSelection{\n\t\t\t\tCatalogers:       []string{\"foo,bar\", \"42\"},\n\t\t\t\tSelectCatalogers: []string{\"some,thing\"},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"allow old cataloger flags\",\n\t\t\toptions: CatalogerSelection{\n\t\t\t\tCatalogers: []string{\"foo,bar\"},\n\t\t\t},\n\t\t\tassert: func(t *testing.T, options CatalogerSelection) {\n\t\t\t\tassert.Equal(t, []string{\"bar\", \"foo\"}, options.DefaultCatalogers) // note: sorted order\n\t\t\t\tassert.Equal(t, []string{\"bar\", \"foo\"}, options.Catalogers)        // note: sorted order\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"allow new cataloger flags\",\n\t\t\toptions: CatalogerSelection{\n\t\t\t\tSelectCatalogers:  []string{\"foo,bar\", \"42\"},\n\t\t\t\tDefaultCatalogers: []string{\"some,thing\"},\n\t\t\t},\n\t\t\tassert: func(t *testing.T, options CatalogerSelection) {\n\t\t\t\tassert.Equal(t, []string{\"42\", \"bar\", \"foo\"}, options.SelectCatalogers) // note: sorted order\n\t\t\t\tassert.Equal(t, []string{\"some\", \"thing\"}, options.DefaultCatalogers)   // note: sorted order\n\t\t\t\tassert.Empty(t, options.Catalogers)\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.wantErr(t, tt.options.PostLoad(), fmt.Sprintf(\"PostLoad()\"))\n\t\t\tif tt.assert != nil {\n\t\t\t\ttt.assert(t, tt.options)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/compliance.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/fangs\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\nvar (\n\t_ fangs.FieldDescriber = (*complianceConfig)(nil)\n\t_ fangs.PostLoader     = (*complianceConfig)(nil)\n)\n\ntype complianceConfig struct {\n\tMissingName    cataloging.ComplianceAction `mapstructure:\"missing-name\" json:\"missing-name\" yaml:\"missing-name\"`\n\tMissingVersion cataloging.ComplianceAction `mapstructure:\"missing-version\" json:\"missing-version\" yaml:\"missing-version\"`\n}\n\nfunc defaultComplianceConfig() complianceConfig {\n\tdef := cataloging.DefaultComplianceConfig()\n\treturn complianceConfig{\n\t\tMissingName:    def.MissingName,\n\t\tMissingVersion: def.MissingVersion,\n\t}\n}\n\nfunc (r *complianceConfig) DescribeFields(descriptions fangs.FieldDescriptionSet) {\n\tdescriptions.Add(&r.MissingName, \"action to take when a package is missing a name\")\n\tdescriptions.Add(&r.MissingVersion, \"action to take when a package is missing a version\")\n}\n\nfunc (r *complianceConfig) PostLoad() error {\n\tr.MissingName = r.MissingName.Parse()\n\tr.MissingVersion = r.MissingVersion.Parse()\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/config.go",
    "content": "package options\n\nimport \"github.com/anchore/fangs\"\n\n// Config holds a reference to the specific config file(s) that were used to load application configuration\ntype Config struct {\n\tConfigFile string `yaml:\"config\" json:\"config\" mapstructure:\"config\"`\n}\n\nfunc (cfg *Config) DescribeFields(descriptions fangs.FieldDescriptionSet) {\n\tdescriptions.Add(&cfg.ConfigFile, \"the configuration file(s) used to load application configuration\")\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/dotnet.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/dotnet\"\n)\n\ntype dotnetConfig struct {\n\tDepPackagesMustHaveDLL bool `mapstructure:\"dep-packages-must-have-dll\" json:\"dep-packages-must-have-dll\" yaml:\"dep-packages-must-have-dll\"`\n\n\tDepPackagesMustClaimDLL bool `mapstructure:\"dep-packages-must-claim-dll\" json:\"dep-packages-must-claim-dll\" yaml:\"dep-packages-must-claim-dll\"`\n\n\tPropagateDLLClaimsToParents bool `mapstructure:\"propagate-dll-claims-to-parents\" json:\"propagate-dll-claims-to-parents\" yaml:\"propagate-dll-claims-to-parents\"`\n\n\tRelaxDLLClaimsWhenBundlingDetected bool `mapstructure:\"relax-dll-claims-when-bundling-detected\" json:\"relax-dll-claims-when-bundling-detected\" yaml:\"relax-dll-claims-when-bundling-detected\"`\n\n\tExcludeProjectReferences bool `mapstructure:\"exclude-project-references\" json:\"exclude-project-references\" yaml:\"exclude-project-references\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*dotnetConfig)(nil)\n\nfunc (o *dotnetConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.DepPackagesMustHaveDLL, `only keep dep.json packages which an executable on disk is found. The package is also included if a DLL is found for any child package, even if the package itself does not have a DLL.`)\n\tdescriptions.Add(&o.DepPackagesMustClaimDLL, `only keep dep.json packages which have a runtime/resource DLL claimed in the deps.json targets section (but not necessarily found on disk). The package is also included if any child package claims a DLL, even if the package itself does not claim a DLL.`)\n\tdescriptions.Add(&o.PropagateDLLClaimsToParents, `treat DLL claims or on-disk evidence for child packages as DLL claims or on-disk evidence for any parent package`)\n\tdescriptions.Add(&o.RelaxDLLClaimsWhenBundlingDetected, `show all packages from the deps.json if bundling tooling is present as a dependency (e.g. ILRepack)`)\n\tdescriptions.Add(&o.ExcludeProjectReferences, `exclude packages with type \"project\" from deps.json output (these are internal project references, not NuGet packages)`)\n}\n\nfunc defaultDotnetConfig() dotnetConfig {\n\tdef := dotnet.DefaultCatalogerConfig()\n\treturn dotnetConfig{\n\t\tDepPackagesMustHaveDLL:             def.DepPackagesMustHaveDLL,\n\t\tDepPackagesMustClaimDLL:            def.DepPackagesMustClaimDLL,\n\t\tPropagateDLLClaimsToParents:        def.PropagateDLLClaimsToParents,\n\t\tRelaxDLLClaimsWhenBundlingDetected: def.RelaxDLLClaimsWhenBundlingDetected,\n\t\tExcludeProjectReferences:           def.ExcludeProjectReferences,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/file.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/clio\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype fileConfig struct {\n\tMetadata   fileMetadata   `yaml:\"metadata\" json:\"metadata\" mapstructure:\"metadata\"`\n\tContent    fileContent    `yaml:\"content\" json:\"content\" mapstructure:\"content\"`\n\tExecutable fileExecutable `yaml:\"executable\" json:\"executable\" mapstructure:\"executable\"`\n}\n\ntype fileMetadata struct {\n\tSelection file.Selection `yaml:\"selection\" json:\"selection\" mapstructure:\"selection\"`\n\tDigests   []string       `yaml:\"digests\" json:\"digests\" mapstructure:\"digests\"`\n}\n\ntype fileContent struct {\n\tSkipFilesAboveSize int64    `yaml:\"skip-files-above-size\" json:\"skip-files-above-size\" mapstructure:\"skip-files-above-size\"`\n\tGlobs              []string `yaml:\"globs\" json:\"globs\" mapstructure:\"globs\"`\n}\n\ntype fileExecutable struct {\n\tGlobs []string `yaml:\"globs\" json:\"globs\" mapstructure:\"globs\"`\n}\n\nfunc defaultFileConfig() fileConfig {\n\treturn fileConfig{\n\t\tMetadata: fileMetadata{\n\t\t\tSelection: file.FilesOwnedByPackageSelection,\n\t\t\tDigests:   []string{\"sha1\", \"sha256\"},\n\t\t},\n\t\tContent: fileContent{\n\t\t\tSkipFilesAboveSize: 250 * intFile.KB,\n\t\t},\n\t\tExecutable: fileExecutable{\n\t\t\tGlobs: nil,\n\t\t},\n\t}\n}\n\nvar _ interface {\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*fileConfig)(nil)\n\nfunc (c *fileConfig) PostLoad() error {\n\tdigests := strset.New(c.Metadata.Digests...).List()\n\tsort.Strings(digests)\n\tc.Metadata.Digests = digests\n\n\tswitch c.Metadata.Selection {\n\tcase file.NoFilesSelection, file.FilesOwnedByPackageSelection, file.AllFilesSelection:\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"invalid file metadata selection: %q\", c.Metadata.Selection)\n}\n\nfunc (c *fileConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&c.Metadata.Selection, `select which files should be captured by the file-metadata cataloger and included in the SBOM. \nOptions include:\n - \"all\": capture all files from the search space\n - \"owned-by-package\": capture only files owned by packages\n - \"none\", \"\": do not capture any files`)\n\tdescriptions.Add(&c.Metadata.Digests, `the file digest algorithms to use when cataloging files (options: \"md5\", \"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\")`)\n\n\tdescriptions.Add(&c.Content.SkipFilesAboveSize, `skip searching a file entirely if it is above the given size (default = 1MB; unit = bytes)`)\n\tdescriptions.Add(&c.Content.Globs, `file globs for the cataloger to match on`)\n\n\tdescriptions.Add(&c.Executable.Globs, `file globs for the cataloger to match on`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/file_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_fileConfig_PostLoad(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     fileConfig\n\t\tassert  func(t *testing.T, cfg fileConfig)\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"deduplicate digests\",\n\t\t\tcfg: fileConfig{\n\t\t\t\tMetadata: fileMetadata{\n\t\t\t\t\tSelection: file.NoFilesSelection,\n\t\t\t\t\tDigests:   []string{\"sha1\", \"sha1\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tassert: func(t *testing.T, cfg fileConfig) {\n\t\t\t\tassert.Equal(t, []string{\"sha1\"}, cfg.Metadata.Digests)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"error on invalid selection\",\n\t\t\tcfg: fileConfig{\n\t\t\t\tMetadata: fileMetadata{\n\t\t\t\t\tSelection: file.Selection(\"invalid\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"error on empty selection\",\n\t\t\tcfg:     fileConfig{},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.wantErr(t, tt.cfg.PostLoad())\n\t\t\tif tt.assert != nil {\n\t\t\t\ttt.assert(t, tt.cfg)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ interface {\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*Format)(nil)\n\n// Format contains all user configuration for output formatting.\ntype Format struct {\n\tPretty        *bool               `yaml:\"pretty\" json:\"pretty\" mapstructure:\"pretty\"`\n\tTemplate      FormatTemplate      `yaml:\"template\" json:\"template\" mapstructure:\"template\" description:\"all template format options\"`\n\tSyftJSON      FormatSyftJSON      `yaml:\"json\" json:\"json\" mapstructure:\"json\" description:\"all syft-json format options\"`\n\tSPDXJSON      FormatSPDXJSON      `yaml:\"spdx-json\" json:\"spdx-json\" mapstructure:\"spdx-json\" description:\"all spdx-json format options\"`\n\tCyclonedxJSON FormatCyclonedxJSON `yaml:\"cyclonedx-json\" json:\"cyclonedx-json\" mapstructure:\"cyclonedx-json\" description:\"all cyclonedx-json format options\"`\n\tCyclonedxXML  FormatCyclonedxXML  `yaml:\"cyclonedx-xml\" json:\"cyclonedx-xml\" mapstructure:\"cyclonedx-xml\" description:\"all cyclonedx-xml format options\"`\n}\n\nfunc (o *Format) PostLoad() error {\n\to.SyftJSON.Pretty = multiLevelOption[bool](false, o.Pretty, o.SyftJSON.Pretty)\n\to.SPDXJSON.Pretty = multiLevelOption[bool](false, o.Pretty, o.SPDXJSON.Pretty)\n\to.CyclonedxJSON.Pretty = multiLevelOption[bool](false, o.Pretty, o.CyclonedxJSON.Pretty)\n\to.CyclonedxXML.Pretty = multiLevelOption[bool](false, o.Pretty, o.CyclonedxXML.Pretty)\n\n\treturn nil\n}\n\nfunc (o *Format) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.Pretty, `default value for all formats that support the \"pretty\" option (default is unset)`)\n\tdescriptions.Add(&o.SyftJSON, `all syft-json format options`)\n\tdescriptions.Add(&o.SyftJSON.Legacy, `transform any syft-json output to conform to an approximation of the v11.0.1 schema. This includes:\n- using the package metadata type names from before v12 of the JSON schema (changed in https://github.com/anchore/syft/pull/1983)\n\nNote: this will still include package types and fields that were added at or after json schema v12. This means\nthat output might not strictly be json schema v11 compliant, however, for consumers that require time to port\nover to the final syft 1.0 json output this option can be used to ease the transition.\n\nNote: long term support for this option is not guaranteed (it may change or break at any time)`)\n\n\tdescriptions.Add(&o.Template.Path, `path to the template file to use when rendering the output with the template output format.\nNote that all template paths are based on the current syft-json schema`)\n\tdescriptions.Add(&o.Template.Legacy, `if true, uses the go structs for the syft-json format for templating.\nif false, uses the syft-json output for templating (which follows the syft JSON schema exactly).\n\nNote: long term support for this option is not guaranteed (it may change or break at any time)`)\n\n\tprettyDescription := `include space indentation and newlines\nnote: inherits default value from 'format.pretty' or 'false' if parent is unset`\n\tdescriptions.Add(&o.SyftJSON.Pretty, prettyDescription)\n\tdescriptions.Add(&o.SPDXJSON.Pretty, prettyDescription)\n\tdescriptions.Add(&o.CyclonedxJSON.Pretty, prettyDescription)\n\tdescriptions.Add(&o.CyclonedxXML.Pretty, prettyDescription)\n}\n\nfunc DefaultFormat() Format {\n\treturn Format{\n\t\tTemplate:      DefaultFormatTemplate(),\n\t\tSyftJSON:      DefaultFormatJSON(),\n\t\tSPDXJSON:      DefaultFormatSPDXJSON(),\n\t\tCyclonedxJSON: DefaultFormatCyclonedxJSON(),\n\t\tCyclonedxXML:  DefaultFormatCyclonedxXML(),\n\t}\n}\n\nfunc (o Format) Encoders() ([]sbom.FormatEncoder, error) {\n\treturn format.EncodersConfig{\n\t\tTemplate:      o.Template.config(),\n\t\tSyftJSON:      o.SyftJSON.config(),\n\t\tSPDXJSON:      o.SPDXJSON.config(format.AllVersions),                   // we support multiple versions, not just a single version\n\t\tSPDXTagValue:  spdxtagvalue.EncoderConfig{Version: format.AllVersions}, // we support multiple versions, not just a single version\n\t\tCyclonedxJSON: o.CyclonedxJSON.config(format.AllVersions),              // we support multiple versions, not just a single version\n\t\tCyclonedxXML:  o.CyclonedxXML.config(format.AllVersions),               // we support multiple versions, not just a single version\n\t}.Encoders()\n}\n\nfunc multiLevelOption[T any](defaultValue T, option ...*T) *T {\n\tresult := defaultValue\n\tfor _, opt := range option {\n\t\tif opt != nil {\n\t\t\tresult = *opt\n\t\t}\n\t}\n\treturn &result\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_cyclonedx_json.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n)\n\ntype FormatCyclonedxJSON struct {\n\tPretty *bool `yaml:\"pretty\" json:\"pretty\" mapstructure:\"pretty\"`\n}\n\nfunc DefaultFormatCyclonedxJSON() FormatCyclonedxJSON {\n\treturn FormatCyclonedxJSON{}\n}\n\nfunc (o FormatCyclonedxJSON) config(version string) cyclonedxjson.EncoderConfig {\n\tvar pretty bool\n\tif o.Pretty != nil {\n\t\tpretty = *o.Pretty\n\t}\n\treturn cyclonedxjson.EncoderConfig{\n\t\tVersion: version,\n\t\tPretty:  pretty,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_cyclonedx_json_test.go",
    "content": "package options\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestFormatCyclonedxJSON_buildConfig(t *testing.T) {\n\t// assert when building the config that we respond to all possible fields\n\n\tft := &FormatCyclonedxJSON{}\n\tft = setAllToNonZero(t, ft).(*FormatCyclonedxJSON)\n\n\tsubject := ft.config(\"Version\")\n\tassertExpectedValue(t, subject)\n}\n\nfunc setAllToNonZero(t testing.TB, structPtr any) any {\n\t// set all fields on the struct to non-zero values\n\trt := reflect.TypeOf(structPtr)\n\tif rt.Kind() != reflect.Ptr || rt.Elem().Kind() != reflect.Struct {\n\t\tt.Fatal(\"expected a pointer to a struct\")\n\t}\n\n\trv := reflect.ValueOf(structPtr).Elem()\n\tfor i := 0; i < rt.Elem().NumField(); i++ {\n\t\tval := getNonZeroExampleValue(t, rv.Field(i).Interface(), rt.Elem().Field(i).Name)\n\t\trv.Field(i).Set(reflect.ValueOf(val))\n\t}\n\treturn structPtr\n}\n\nfunc getNonZeroExampleValue(t testing.TB, v any, name string) any {\n\tswitch v.(type) {\n\tcase bool:\n\t\treturn true\n\tcase *bool:\n\t\tval := true\n\t\treturn &val\n\tcase string:\n\t\treturn name\n\t}\n\tt.Fatalf(\"unsupported type: %T\", v)\n\treturn nil\n}\n\nfunc assertExpectedValue(t *testing.T, structTy any) {\n\trt := reflect.TypeOf(structTy)\n\trv := reflect.ValueOf(structTy)\n\n\tfor i := 0; i < rt.NumField(); i++ {\n\t\tf := rt.Field(i)\n\t\tfieldValue := rv.Field(i)\n\n\t\tif fieldValue.Type().Kind() == reflect.String {\n\t\t\t// use the field name as the expected value\n\t\t\tassert.Equalf(t, f.Name, fieldValue.String(), \"field %q value differs\", f.Name)\n\t\t} else {\n\t\t\t// use the zero value for the type\n\t\t\tif reflect.DeepEqual(fieldValue.Interface(), reflect.Zero(fieldValue.Type()).Interface()) {\n\t\t\t\tt.Errorf(\"field '%s' is zero\", f.Name)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_cyclonedx_xml.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n)\n\ntype FormatCyclonedxXML struct {\n\tPretty *bool `yaml:\"pretty\" json:\"pretty\" mapstructure:\"pretty\"`\n}\n\nfunc DefaultFormatCyclonedxXML() FormatCyclonedxXML {\n\treturn FormatCyclonedxXML{}\n}\n\nfunc (o FormatCyclonedxXML) config(version string) cyclonedxxml.EncoderConfig {\n\tvar pretty bool\n\tif o.Pretty != nil {\n\t\tpretty = *o.Pretty\n\t}\n\treturn cyclonedxxml.EncoderConfig{\n\t\tVersion: version,\n\t\tPretty:  pretty,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_cyclonedx_xml_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n)\n\nfunc TestFormatCyclonedxXML_buildConfig(t *testing.T) {\n\t// assert when building the config that we respond to all possible fields\n\n\tft := FormatCyclonedxXML{}\n\tftp := setAllToNonZero(t, &ft).(*FormatCyclonedxXML)\n\n\tsubject := ftp.config(\"Version\")\n\tassertExpectedValue(t, subject)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_spdx_json.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n)\n\ntype FormatSPDXJSON struct {\n\tPretty *bool `yaml:\"pretty\" json:\"pretty\" mapstructure:\"pretty\"`\n}\n\nfunc DefaultFormatSPDXJSON() FormatSPDXJSON {\n\treturn FormatSPDXJSON{}\n}\n\nfunc (o FormatSPDXJSON) config(v string) spdxjson.EncoderConfig {\n\tvar pretty bool\n\tif o.Pretty != nil {\n\t\tpretty = *o.Pretty\n\t}\n\treturn spdxjson.EncoderConfig{\n\t\tVersion: v,\n\t\tPretty:  pretty,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_spdx_json_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n)\n\nfunc TestFormatSPDXJSON_buildConfig(t *testing.T) {\n\t// assert when building the config that we respond to all possible fields\n\n\tft := &FormatSPDXJSON{}\n\tft = setAllToNonZero(t, ft).(*FormatSPDXJSON)\n\n\tsubject := ft.config(\"Version\")\n\tassertExpectedValue(t, subject)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_syft_json.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n)\n\ntype FormatSyftJSON struct {\n\tLegacy bool  `yaml:\"legacy\" json:\"legacy\" mapstructure:\"legacy\"`\n\tPretty *bool `yaml:\"pretty\" json:\"pretty\" mapstructure:\"pretty\"`\n}\n\nfunc DefaultFormatJSON() FormatSyftJSON {\n\treturn FormatSyftJSON{\n\t\tLegacy: false,\n\t}\n}\n\nfunc (o FormatSyftJSON) config() syftjson.EncoderConfig {\n\tvar pretty bool\n\tif o.Pretty != nil {\n\t\tpretty = *o.Pretty\n\t}\n\treturn syftjson.EncoderConfig{\n\t\tLegacy: o.Legacy,\n\t\tPretty: pretty,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_syft_json_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n)\n\nfunc TestFormatSyftJSON_buildConfig(t *testing.T) {\n\t// assert when building the config that we respond to all possible fields\n\n\tft := &FormatSyftJSON{}\n\tft = setAllToNonZero(t, ft).(*FormatSyftJSON)\n\n\tsubject := ft.config()\n\tassertExpectedValue(t, subject)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/format_template.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/format/template\"\n)\n\nvar _ clio.FlagAdder = (*FormatTemplate)(nil)\n\ntype FormatTemplate struct {\n\tEnabled bool   `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n\tPath    string `yaml:\"path\" json:\"path\" mapstructure:\"path\"` // -t template file to use for output\n\tLegacy  bool   `yaml:\"legacy\" json:\"legacy\" mapstructure:\"legacy\"`\n}\n\nfunc DefaultFormatTemplate() FormatTemplate {\n\treturn FormatTemplate{\n\t\tEnabled: true,\n\t}\n}\n\nfunc (o *FormatTemplate) AddFlags(flags clio.FlagSet) {\n\tif o.Enabled {\n\t\tflags.StringVarP(&o.Path, \"template\", \"t\",\n\t\t\t\"specify the path to a Go template file\")\n\t}\n}\n\nfunc (o FormatTemplate) config() template.EncoderConfig {\n\treturn template.EncoderConfig{\n\t\tTemplatePath: o.Path,\n\t\tLegacy:       o.Legacy,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/golang.go",
    "content": "package options\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/golang\"\n)\n\ntype golangConfig struct {\n\tSearchLocalModCacheLicenses *bool                         `json:\"search-local-mod-cache-licenses\" yaml:\"search-local-mod-cache-licenses\" mapstructure:\"search-local-mod-cache-licenses\"`\n\tLocalModCacheDir            string                        `json:\"local-mod-cache-dir\" yaml:\"local-mod-cache-dir\" mapstructure:\"local-mod-cache-dir\"`\n\tSearchLocalVendorLicenses   *bool                         `json:\"search-local-vendor-licenses\" yaml:\"search-local-vendor-licenses\" mapstructure:\"search-local-vendor-licenses\"`\n\tLocalVendorDir              string                        `json:\"local-vendor-dir\" yaml:\"local-vendor-dir\" mapstructure:\"local-vendor-dir\"`\n\tSearchRemoteLicenses        *bool                         `json:\"search-remote-licenses\" yaml:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\tProxy                       string                        `json:\"proxy\" yaml:\"proxy\" mapstructure:\"proxy\"`\n\tNoProxy                     string                        `json:\"no-proxy\" yaml:\"no-proxy\" mapstructure:\"no-proxy\"`\n\tMainModuleVersion           golangMainModuleVersionConfig `json:\"main-module-version\" yaml:\"main-module-version\" mapstructure:\"main-module-version\"`\n\tUsePackagesLib              *bool                         `json:\"use-packages-lib\" yaml:\"use-packages-lib\" mapstructure:\"use-packages-lib\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*golangConfig)(nil)\n\nfunc (o *golangConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.SearchLocalModCacheLicenses, `search for go package licences in the GOPATH of the system running Syft, note that this is outside the\ncontainer filesystem and potentially outside the root of a local directory scan`)\n\tdescriptions.Add(&o.LocalModCacheDir, `specify an explicit go mod cache directory, if unset this defaults to $GOPATH/pkg/mod or $HOME/go/pkg/mod`)\n\tdescriptions.Add(&o.SearchLocalVendorLicenses, `search for go package licences in the vendor folder on the system running Syft, note that this is outside the\ncontainer filesystem and potentially outside the root of a local directory scan`)\n\tdescriptions.Add(&o.LocalVendorDir, `specify an explicit go vendor directory, if unset this defaults to ./vendor`)\n\tdescriptions.Add(&o.SearchRemoteLicenses, `search for go package licences by retrieving the package from a network proxy`)\n\tdescriptions.Add(&o.Proxy, `remote proxy to use when retrieving go packages from the network,\nif unset this defaults to $GOPROXY followed by https://proxy.golang.org`)\n\tdescriptions.Add(&o.NoProxy, `specifies packages which should not be fetched by proxy\nif unset this defaults to $GONOPROXY`)\n\tdescriptions.Add(&o.MainModuleVersion, `the go main module version discovered from binaries built with the go compiler will\nalways show (devel) as the version. Use these options to control heuristics to guess\na more accurate version from the binary.`)\n\tdescriptions.Add(&o.UsePackagesLib, `use the golang.org/x/tools/go/packages library, which executes golang tooling found on the path in addition to potential network access to get the most accurate results`)\n\tdescriptions.Add(&o.MainModuleVersion.FromLDFlags, `look for LD flags that appear to be setting a version (e.g. -X main.version=1.0.0)`)\n\tdescriptions.Add(&o.MainModuleVersion.FromBuildSettings, `use the build settings (e.g. vcs.version & vcs.time) to craft a v0 pseudo version \n(e.g. v0.0.0-20220308212642-53e6d0aaf6fb) when a more accurate version cannot be found otherwise`)\n\tdescriptions.Add(&o.MainModuleVersion.FromContents, `search for semver-like strings in the binary contents`)\n}\n\ntype golangMainModuleVersionConfig struct {\n\tFromLDFlags       bool `json:\"from-ld-flags\" yaml:\"from-ld-flags\" mapstructure:\"from-ld-flags\"`\n\tFromContents      bool `json:\"from-contents\" yaml:\"from-contents\" mapstructure:\"from-contents\"`\n\tFromBuildSettings bool `json:\"from-build-settings\" yaml:\"from-build-settings\" mapstructure:\"from-build-settings\"`\n}\n\nfunc defaultGolangConfig() golangConfig {\n\tdef := golang.DefaultCatalogerConfig()\n\treturn golangConfig{\n\t\tSearchLocalModCacheLicenses: nil, // this defaults to false, which is the API default\n\t\tLocalModCacheDir:            def.LocalModCacheDir,\n\t\tSearchLocalVendorLicenses:   nil, // this defaults to false, which is the API default\n\t\tLocalVendorDir:              def.LocalVendorDir,\n\t\tSearchRemoteLicenses:        nil, // this defaults to false, which is the API default\n\t\tProxy:                       strings.Join(def.Proxies, \",\"),\n\t\tNoProxy:                     strings.Join(def.NoProxy, \",\"),\n\t\tMainModuleVersion: golangMainModuleVersionConfig{\n\t\t\tFromLDFlags:       def.MainModuleVersion.FromLDFlags,\n\t\t\tFromContents:      def.MainModuleVersion.FromContents,\n\t\t\tFromBuildSettings: def.MainModuleVersion.FromBuildSettings,\n\t\t},\n\t\tUsePackagesLib: nil, // this defaults to true, which is the API default\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/java.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java\"\n)\n\ntype javaConfig struct {\n\tUseNetwork                    *bool  `yaml:\"use-network\" json:\"use-network\" mapstructure:\"use-network\"`\n\tUseMavenLocalRepository       *bool  `yaml:\"use-maven-local-repository\" json:\"use-maven-local-repository\" mapstructure:\"use-maven-local-repository\"`\n\tMavenLocalRepositoryDir       string `yaml:\"maven-local-repository-dir\" json:\"maven-local-repository-dir\" mapstructure:\"maven-local-repository-dir\"`\n\tMavenURL                      string `yaml:\"maven-url\" json:\"maven-url\" mapstructure:\"maven-url\"`\n\tMaxParentRecursiveDepth       int    `yaml:\"max-parent-recursive-depth\" json:\"max-parent-recursive-depth\" mapstructure:\"max-parent-recursive-depth\"`\n\tResolveTransitiveDependencies bool   `yaml:\"resolve-transitive-dependencies\" json:\"resolve-transitive-dependencies\" mapstructure:\"resolve-transitive-dependencies\"`\n}\n\nfunc defaultJavaConfig() javaConfig {\n\tdef := java.DefaultArchiveCatalogerConfig()\n\n\treturn javaConfig{\n\t\tUseNetwork:                    nil, // this defaults to false, which is the API default\n\t\tMaxParentRecursiveDepth:       def.MaxParentRecursiveDepth,\n\t\tUseMavenLocalRepository:       nil, // this defaults to false, which is the API default\n\t\tMavenLocalRepositoryDir:       def.MavenLocalRepositoryDir,\n\t\tMavenURL:                      def.MavenBaseURL,\n\t\tResolveTransitiveDependencies: def.ResolveTransitiveDependencies,\n\t}\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*javaConfig)(nil)\n\nfunc (o *javaConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.UseNetwork, `enables Syft to use the network to fetch version and license information for packages when\na parent or imported pom file is not found in the local maven repository.\nthe pom files are downloaded from the remote Maven repository at 'maven-url'`)\n\tdescriptions.Add(&o.MavenURL, `maven repository to use, defaults to Maven central`)\n\tdescriptions.Add(&o.MaxParentRecursiveDepth, `depth to recursively resolve parent POMs, no limit if <= 0`)\n\tdescriptions.Add(&o.UseMavenLocalRepository, `use the local Maven repository to retrieve pom files. When Maven is installed and was previously used\nfor building the software that is being scanned, then most pom files will be available in this\nrepository on the local file system. this greatly speeds up scans. when all pom files are available\nin the local repository, then 'use-network' is not needed.\nTIP: If you want to download all required pom files to the local repository without running a full\nbuild, run 'mvn help:effective-pom' before performing the scan with syft.`)\n\tdescriptions.Add(&o.MavenLocalRepositoryDir, `override the default location of the local Maven repository. \nthe default is the subdirectory '.m2/repository' in your home directory`)\n\tdescriptions.Add(&o.ResolveTransitiveDependencies, `resolve transient dependencies such as those defined in a dependency's POM on Maven central`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/javascript.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/javascript\"\n)\n\ntype javaScriptConfig struct {\n\tSearchRemoteLicenses   *bool  `json:\"search-remote-licenses\" yaml:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\tNpmBaseURL             string `json:\"npm-base-url\" yaml:\"npm-base-url\" mapstructure:\"npm-base-url\"`\n\tIncludeDevDependencies *bool  `json:\"include-dev-dependencies\" yaml:\"include-dev-dependencies\" mapstructure:\"include-dev-dependencies\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*javaScriptConfig)(nil)\n\nfunc defaultJavaScriptConfig() javaScriptConfig {\n\tdef := javascript.DefaultCatalogerConfig()\n\tvar includeDevDependencies *bool\n\tif def.IncludeDevDependencies {\n\t\tincludeDevDependencies = &def.IncludeDevDependencies\n\t}\n\n\tvar searchRemoteLicenses *bool\n\tif def.SearchRemoteLicenses {\n\t\tsearchRemoteLicenses = &def.SearchRemoteLicenses\n\t}\n\treturn javaScriptConfig{\n\t\tNpmBaseURL:             def.NPMBaseURL,\n\t\tSearchRemoteLicenses:   searchRemoteLicenses,\n\t\tIncludeDevDependencies: includeDevDependencies,\n\t}\n}\n\nfunc (o *javaScriptConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.SearchRemoteLicenses, `enables Syft to use the network to fill in more detailed license information`)\n\tdescriptions.Add(&o.NpmBaseURL, `base NPM url to use`)\n\tdescriptions.Add(&o.IncludeDevDependencies, `include development-scoped dependencies`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/license.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\ntype licenseConfig struct {\n\tContent                 cataloging.LicenseContent   `yaml:\"content\" json:\"content\" mapstructure:\"content\"`\n\tCoverage                float64                     `yaml:\"coverage\" json:\"coverage\" mapstructure:\"coverage\"`\n\tAvailableLicenseContent []cataloging.LicenseContent `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*licenseConfig)(nil)\n\nfunc (o *licenseConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.Content, fmt.Sprintf(\"include the content of licenses in the SBOM for a given syft scan; valid values are: %s\", o.AvailableLicenseContent))\n\n\tdescriptions.Add(&o.Coverage, `adjust the percent as a fraction of the total text, in normalized words, that\nmatches any valid license for the given inputs, expressed as a percentage across all of the licenses matched.`)\n}\n\nfunc (o *licenseConfig) PostLoad() error {\n\tvalidContent := internal.NewSet(o.AvailableLicenseContent...)\n\tif !validContent.Contains(o.Content) {\n\t\treturn fmt.Errorf(\"could not use %q as license content option; valid values are: %v\", o.Content, validContent.ToSlice())\n\t}\n\treturn nil\n}\n\nfunc defaultLicenseConfig() licenseConfig {\n\tcfg := cataloging.DefaultLicenseConfig()\n\treturn licenseConfig{\n\t\tContent:  cfg.IncludeContent,\n\t\tCoverage: cfg.Coverage,\n\t\tAvailableLicenseContent: []cataloging.LicenseContent{\n\t\t\tcataloging.LicenseContentIncludeAll,\n\t\t\tcataloging.LicenseContentIncludeUnknown,\n\t\t\tcataloging.LicenseContentExcludeAll,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/linux_kernel.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/kernel\"\n)\n\ntype linuxKernelConfig struct {\n\tCatalogModules bool `json:\"catalog-modules\" yaml:\"catalog-modules\" mapstructure:\"catalog-modules\"`\n}\n\nfunc defaultLinuxKernelConfig() linuxKernelConfig {\n\tdef := kernel.DefaultLinuxKernelCatalogerConfig()\n\treturn linuxKernelConfig{\n\t\tCatalogModules: def.CatalogModules,\n\t}\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*linuxKernelConfig)(nil)\n\nfunc (o *linuxKernelConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.CatalogModules, `whether to catalog linux kernel modules found within lib/modules/** directories`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/nix.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/nix\"\n)\n\ntype nixConfig struct {\n\tCaptureOwnedFiles bool `json:\"capture-owned-files\" yaml:\"capture-owned-files\" mapstructure:\"capture-owned-files\"`\n}\n\nfunc defaultNixConfig() nixConfig {\n\tdef := nix.DefaultConfig()\n\treturn nixConfig{\n\t\tdef.CaptureOwnedFiles,\n\t}\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*nixConfig)(nil)\n\nfunc (o *nixConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.CaptureOwnedFiles, `enumerate all files owned by packages found within Nix store paths`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/output.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/github\"\n\t\"github.com/anchore/syft/syft/format/purls\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/format/table\"\n\t\"github.com/anchore/syft/syft/format/template\"\n\t\"github.com/anchore/syft/syft/format/text\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ interface {\n\tclio.FlagAdder\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*Output)(nil)\n\n// Output has the standard output options syft accepts: multiple -o, --file, --template\ntype Output struct {\n\tAllowableOptions     []string `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n\tAllowMultipleOutputs bool     `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n\tAllowToFile          bool     `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n\tOutputs              []string `yaml:\"output\" json:\"output\" mapstructure:\"output\"` // -o, the format to use for output\n\tOutputFile           `yaml:\",inline\" json:\"\" mapstructure:\",squash\"`\n\tFormat               `yaml:\"format\" json:\"format\" mapstructure:\"format\"`\n}\n\nfunc DefaultOutput() Output {\n\treturn Output{\n\t\tAllowMultipleOutputs: true,\n\t\tAllowToFile:          true,\n\t\tOutputs:              []string{string(table.ID)},\n\t\tOutputFile: OutputFile{\n\t\t\tEnabled: true,\n\t\t},\n\t\tFormat: DefaultFormat(),\n\t}\n}\n\nfunc (o *Output) PostLoad() error {\n\tvar errs error\n\tfor _, loader := range []clio.PostLoader{&o.OutputFile, &o.Format} {\n\t\tif err := loader.PostLoad(); err != nil {\n\t\t\terrs = multierror.Append(errs, err)\n\t\t}\n\t}\n\n\treturn errs\n}\n\nfunc (o *Output) AddFlags(flags clio.FlagSet) {\n\tvar names []string\n\tfor _, id := range supportedIDs() {\n\t\tnames = append(names, id.String())\n\t}\n\tsort.Strings(names)\n\n\tflags.StringArrayVarP(&o.Outputs, \"output\", \"o\",\n\t\tfmt.Sprintf(\"report output format (<format>=<file> to output to a file), formats=%v\", names))\n}\n\nfunc (o *Output) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.Outputs, `the output format(s) of the SBOM report (options: syft-table, syft-text, syft-json, spdx-json, ...)\nto specify multiple output files in differing formats, use a list:\noutput:\n  - \"syft-json=<syft-json-output-file>\"\n  - \"spdx-json=<spdx-json-output-file>\"\n`)\n}\n\nfunc (o Output) SBOMWriter() (sbom.Writer, error) {\n\tnames := o.OutputNameSet()\n\n\tif len(o.Outputs) > 1 && !o.AllowMultipleOutputs {\n\t\treturn nil, fmt.Errorf(\"only one output format is allowed (given %d: %s)\", len(o.Outputs), names)\n\t}\n\n\tusesTemplateOutput := names.Has(string(template.ID))\n\n\tif usesTemplateOutput && o.Template.Path == \"\" {\n\t\treturn nil, fmt.Errorf(`must specify path to template file when using \"template\" output format`)\n\t}\n\n\tencoders, err := o.Encoders()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !o.AllowToFile {\n\t\tfor _, opt := range o.Outputs {\n\t\t\tif strings.Contains(opt, \"=\") {\n\t\t\t\treturn nil, fmt.Errorf(\"file output is not allowed ('-o format=path' should be '-o format')\")\n\t\t\t}\n\t\t}\n\t}\n\n\treturn makeSBOMWriter(o.Outputs, o.LegacyFile, encoders)\n}\n\nfunc (o Output) OutputNameSet() *strset.Set {\n\tnames := strset.New()\n\tfor _, output := range o.Outputs {\n\t\tfields := strings.Split(output, \"=\")\n\t\tnames.Add(fields[0])\n\t}\n\n\treturn names\n}\n\nfunc supportedIDs() []sbom.FormatID {\n\tencs := []sbom.FormatID{\n\t\t// encoders that support a single version\n\t\tsyftjson.ID,\n\t\tgithub.ID,\n\t\ttable.ID,\n\t\ttext.ID,\n\t\ttemplate.ID,\n\t\tpurls.ID,\n\n\t\t// encoders that support multiple versions\n\t\tcyclonedxxml.ID,\n\t\tcyclonedxjson.ID,\n\t\tspdxtagvalue.ID,\n\t\tspdxjson.ID,\n\t}\n\n\treturn encs\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/output_file.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/fangs\"\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ interface {\n\tclio.FlagAdder\n\tclio.PostLoader\n} = (*OutputFile)(nil)\n\n// Deprecated: OutputFile supports the --file to write the SBOM output to\ntype OutputFile struct {\n\tEnabled    bool   `yaml:\"-\" json:\"-\" mapstructure:\"-\"`\n\tLegacyFile string `yaml:\"-\" json:\"-\" mapstructure:\"legacyFile\"`\n}\n\nfunc (o *OutputFile) AddFlags(flags clio.FlagSet) {\n\tif o.Enabled {\n\t\tflags.StringVarP(&o.LegacyFile, \"file\", \"\",\n\t\t\t\"file to write the default report output to (default is STDOUT)\")\n\n\t\tif pfp, ok := flags.(fangs.PFlagSetProvider); ok {\n\t\t\tflagSet := pfp.PFlagSet()\n\t\t\tflagSet.Lookup(\"file\").Deprecated = \"use: --output FORMAT=PATH\"\n\t\t}\n\t}\n}\n\nfunc (o *OutputFile) PostLoad() error {\n\tif !o.Enabled {\n\t\treturn nil\n\t}\n\tif o.LegacyFile != \"\" {\n\t\tfile, err := expandFilePath(o.LegacyFile)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\to.LegacyFile = file\n\t}\n\treturn nil\n}\n\nfunc (o *OutputFile) SBOMWriter(f sbom.FormatEncoder) (sbom.Writer, error) {\n\tif !o.Enabled {\n\t\treturn nil, nil\n\t}\n\twriter, err := newSBOMMultiWriter(newSBOMWriterDescription(f, o.LegacyFile))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn writer, nil\n}\n\nfunc expandFilePath(file string) (string, error) {\n\tif file != \"\" {\n\t\texpandedPath, err := homedir.Expand(file)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unable to expand file path=%q: %w\", file, err)\n\t\t}\n\t\tfile = expandedPath\n\t}\n\treturn file, nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/output_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/github\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/format/table\"\n\t\"github.com/anchore/syft/syft/format/template\"\n\t\"github.com/anchore/syft/syft/format/text\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_getEncoders(t *testing.T) {\n\tallDefaultEncoderNames := strset.New()\n\tfor _, id := range supportedIDs() {\n\t\tallDefaultEncoderNames.Add(id.String())\n\t}\n\n\topts := DefaultOutput()\n\trequire.NoError(t, opts.Format.PostLoad())\n\topts.Format.Template.Path = \"somewhere\"\n\n\tencoders, err := opts.Encoders()\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, encoders)\n\n\tencoderNames := strset.New()\n\tfor _, e := range encoders {\n\t\tencoderNames.Add(e.ID().String())\n\t}\n\n\tassert.ElementsMatch(t, allDefaultEncoderNames.List(), encoderNames.List(), \"not all encoders are expressed\")\n}\n\nfunc Test_EncoderCollection_ByString_IDOnly_Defaults(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\twant sbom.FormatID\n\t}{\n\t\t// SPDX Tag-Value\n\t\t{\n\t\t\tname: \"spdx\",\n\t\t\twant: spdxtagvalue.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"spdx-tag-value\",\n\t\t\twant: spdxtagvalue.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"spdx-tv\",\n\t\t\twant: spdxtagvalue.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"spdxtv\", // clean variant\n\t\t\twant: spdxtagvalue.ID,\n\t\t},\n\n\t\t// SPDX JSON\n\t\t{\n\t\t\tname: \"spdx-json\",\n\t\t\twant: spdxjson.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"spdxjson\", // clean variant\n\t\t\twant: spdxjson.ID,\n\t\t},\n\n\t\t// Cyclonedx JSON\n\t\t{\n\t\t\tname: \"cyclonedx-json\",\n\t\t\twant: cyclonedxjson.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"cyclonedxjson\", // clean variant\n\t\t\twant: cyclonedxjson.ID,\n\t\t},\n\n\t\t// Cyclonedx XML\n\t\t{\n\t\t\tname: \"cdx\",\n\t\t\twant: cyclonedxxml.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"cyclone\",\n\t\t\twant: cyclonedxxml.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"cyclonedx\",\n\t\t\twant: cyclonedxxml.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"cyclonedx-xml\",\n\t\t\twant: cyclonedxxml.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"cyclonedxxml\", // clean variant\n\t\t\twant: cyclonedxxml.ID,\n\t\t},\n\n\t\t// Syft Table\n\t\t{\n\t\t\tname: \"table\",\n\t\t\twant: table.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"syft-table\",\n\t\t\twant: table.ID,\n\t\t},\n\n\t\t// Syft Text\n\t\t{\n\t\t\tname: \"text\",\n\t\t\twant: text.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"syft-text\",\n\t\t\twant: text.ID,\n\t\t},\n\n\t\t// Syft JSON\n\t\t{\n\t\t\tname: \"json\",\n\t\t\twant: syftjson.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"syft-json\",\n\t\t\twant: syftjson.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"syftjson\", // clean variant\n\t\t\twant: syftjson.ID,\n\t\t},\n\n\t\t// GitHub JSON\n\t\t{\n\t\t\tname: \"github\",\n\t\t\twant: github.ID,\n\t\t},\n\t\t{\n\t\t\tname: \"github-json\",\n\t\t\twant: github.ID,\n\t\t},\n\n\t\t// Syft template\n\t\t{\n\t\t\tname: \"template\",\n\t\t\twant: template.ID,\n\t\t},\n\t}\n\n\topts := DefaultOutput()\n\trequire.NoError(t, opts.Format.PostLoad())\n\topts.Format.Template.Path = \"somewhere\"\n\n\tdefaultEncoders, err := opts.Encoders()\n\trequire.NoError(t, err)\n\n\tencoders := format.NewEncoderCollection(defaultEncoders...)\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf := encoders.GetByString(tt.name)\n\t\t\tif tt.want == \"\" {\n\t\t\t\trequire.Nil(t, f)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NotNil(t, f)\n\t\t\tassert.Equal(t, tt.want, f.ID())\n\t\t})\n\t}\n}\n\nfunc Test_OutputHonorsAllowFile(t *testing.T) {\n\to := DefaultOutput()\n\n\tt.Run(\"file is not allowed\", func(t *testing.T) {\n\t\to.AllowToFile = false\n\t\to.Outputs = []string{\"table=/tmp/somefile\"}\n\n\t\tw, err := o.SBOMWriter()\n\t\tassert.Nil(t, w)\n\t\tassert.ErrorContains(t, err, \"file output is not allowed\")\n\t})\n\n\tt.Run(\"file is allowed\", func(t *testing.T) {\n\t\to.AllowToFile = true\n\t\to.Outputs = []string{\"table=/tmp/somefile\"}\n\n\t\tw, err := o.SBOMWriter()\n\t\tassert.NotNil(t, w)\n\t\tassert.NoError(t, err)\n\t})\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/pkg.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\ntype packageConfig struct {\n\tSearchUnindexedArchives         bool `yaml:\"search-unindexed-archives\" json:\"search-unindexed-archives\" mapstructure:\"search-unindexed-archives\"`\n\tSearchIndexedArchives           bool `yaml:\"search-indexed-archives\" json:\"search-indexed-archives\" mapstructure:\"search-indexed-archives\"`\n\tExcludeBinaryOverlapByOwnership bool `yaml:\"exclude-binary-overlap-by-ownership\" json:\"exclude-binary-overlap-by-ownership\" mapstructure:\"exclude-binary-overlap-by-ownership\"` // exclude synthetic binary packages owned by os package files\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*packageConfig)(nil)\n\nfunc (o *packageConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.SearchIndexedArchives, `search within archives that do contain a file index to search against (zip)\nnote: for now this only applies to the java package cataloger`)\n\tdescriptions.Add(&o.SearchUnindexedArchives, `search within archives that do not contain a file index to search against (tar, tar.gz, tar.bz2, etc)\nnote: enabling this may result in a performance impact since all discovered compressed tars will be decompressed\nnote: for now this only applies to the java package cataloger`)\n\tdescriptions.Add(&o.ExcludeBinaryOverlapByOwnership, `allows users to exclude synthetic binary packages from the sbom\nthese packages are removed if an overlap with a non-synthetic package is found`)\n}\n\nfunc defaultPackageConfig() packageConfig {\n\tc := cataloging.DefaultArchiveSearchConfig()\n\treturn packageConfig{\n\t\tSearchIndexedArchives:           c.IncludeIndexedArchives,\n\t\tSearchUnindexedArchives:         c.IncludeUnindexedArchives,\n\t\tExcludeBinaryOverlapByOwnership: true,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/python.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/python\"\n)\n\ntype pythonConfig struct {\n\tSearchRemoteLicenses      *bool  `json:\"search-remote-licenses\" yaml:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\tPypiBaseURL               string `json:\"pypi-base-url\" yaml:\"pypi-base-url\" mapstructure:\"pypi-base-url\"`\n\tGuessUnpinnedRequirements *bool  `json:\"guess-unpinned-requirements\" yaml:\"guess-unpinned-requirements\" mapstructure:\"guess-unpinned-requirements\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*pythonConfig)(nil)\n\nfunc defaultPythonConfig() pythonConfig {\n\tdef := python.DefaultCatalogerConfig()\n\treturn pythonConfig{\n\t\tGuessUnpinnedRequirements: &def.GuessUnpinnedRequirements,\n\t}\n}\n\nfunc (o *pythonConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.SearchRemoteLicenses, `enables Syft to use the network to fill in more detailed license information`)\n\tdescriptions.Add(&o.PypiBaseURL, `base Pypi url to use`)\n\tdescriptions.Add(&o.GuessUnpinnedRequirements, `when running across entries in requirements.txt that do not specify a specific version \n(e.g. \"sqlalchemy >= 1.0.0, <= 2.0.0, != 3.0.0, <= 3.0.0\"), attempt to guess what the version could\nbe based on the version requirements specified (e.g. \"1.0.0\"). When enabled the lowest expressible version \nwhen given an arbitrary constraint will be used (even if that version may not be available/published).`)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/registry.go",
    "content": "package options\n\nimport (\n\t\"os\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\ntype RegistryCredentials struct {\n\tAuthority string `yaml:\"authority\" json:\"authority\" mapstructure:\"authority\"`\n\t// IMPORTANT: do not show any credential information, use secret type to automatically redact the values\n\tUsername secret `yaml:\"username\" json:\"username\" mapstructure:\"username\"`\n\tPassword secret `yaml:\"password\" json:\"password\" mapstructure:\"password\"`\n\tToken    secret `yaml:\"token\" json:\"token\" mapstructure:\"token\"`\n\n\tTLSCert string `yaml:\"tls-cert,omitempty\" json:\"tls-cert,omitempty\" mapstructure:\"tls-cert\"`\n\tTLSKey  string `yaml:\"tls-key,omitempty\" json:\"tls-key,omitempty\" mapstructure:\"tls-key\"`\n}\n\ntype registryConfig struct {\n\tInsecureSkipTLSVerify bool                  `yaml:\"insecure-skip-tls-verify\" json:\"insecure-skip-tls-verify\" mapstructure:\"insecure-skip-tls-verify\"`\n\tInsecureUseHTTP       bool                  `yaml:\"insecure-use-http\" json:\"insecure-use-http\" mapstructure:\"insecure-use-http\"`\n\tAuth                  []RegistryCredentials `yaml:\"auth\" json:\"auth\" mapstructure:\"auth\"`\n\tCACert                string                `yaml:\"ca-cert\" json:\"ca-cert\" mapstructure:\"ca-cert\"`\n}\n\nvar _ interface {\n\tclio.PostLoader\n\tclio.FieldDescriber\n} = (*registryConfig)(nil)\n\nfunc (cfg *registryConfig) PostLoad() error {\n\t// there may be additional credentials provided by env var that should be appended to the set of credentials\n\tauthority, username, password, token, tlsCert, tlsKey :=\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_AUTHORITY\"),\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_USERNAME\"),\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_PASSWORD\"),\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_TOKEN\"),\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_TLS_CERT\"),\n\t\tos.Getenv(\"SYFT_REGISTRY_AUTH_TLS_KEY\")\n\n\tif hasNonEmptyCredentials(username, password, token, tlsCert, tlsKey) {\n\t\t// note: we prepend the credentials such that the environment variables take precedence over on-disk configuration.\n\t\t// since this PostLoad is called before the PostLoad on the Auth credentials list,\n\t\t// all appropriate redactions will be added\n\t\tcfg.Auth = append([]RegistryCredentials{\n\t\t\t{\n\t\t\t\tAuthority: authority,\n\t\t\t\tUsername:  secret(username),\n\t\t\t\tPassword:  secret(password),\n\t\t\t\tToken:     secret(token),\n\t\t\t\tTLSCert:   tlsCert,\n\t\t\t\tTLSKey:    tlsKey,\n\t\t\t},\n\t\t}, cfg.Auth...)\n\t}\n\treturn nil\n}\n\nfunc (cfg *registryConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&cfg.InsecureSkipTLSVerify, \"skip TLS verification when communicating with the registry\")\n\tdescriptions.Add(&cfg.InsecureUseHTTP, \"use http instead of https when connecting to the registry\")\n\tdescriptions.Add(&cfg.CACert, \"filepath to a CA certificate (or directory containing *.crt, *.cert, *.pem) used to generate the client certificate\")\n\tdescriptions.Add(&cfg.Auth, `Authentication credentials for specific registries. Each entry describes authentication for a specific authority:\n-\tauthority: the registry authority URL the URL to the registry (e.g. \"docker.io\", \"localhost:5000\", etc.) (env: SYFT_REGISTRY_AUTH_AUTHORITY)\n\tusername: a username if using basic credentials (env: SYFT_REGISTRY_AUTH_USERNAME)\n\tpassword: a corresponding password (env: SYFT_REGISTRY_AUTH_PASSWORD)\n\ttoken: a token if using token-based authentication, mutually exclusive with username/password (env: SYFT_REGISTRY_AUTH_TOKEN)\n\ttls-cert: filepath to the client certificate used for TLS authentication to the registry (env: SYFT_REGISTRY_AUTH_TLS_CERT)\n\ttls-key: filepath to the client key used for TLS authentication to the registry (env: SYFT_REGISTRY_AUTH_TLS_KEY)\n`)\n}\n\nfunc hasNonEmptyCredentials(username, password, token, tlsCert, tlsKey string) bool {\n\thasUserPass := username != \"\" && password != \"\"\n\thasToken := token != \"\"\n\thasTLSMaterial := tlsCert != \"\" && tlsKey != \"\"\n\treturn hasUserPass || hasToken || hasTLSMaterial\n}\n\nfunc (cfg *registryConfig) ToOptions() *image.RegistryOptions {\n\tvar auth = make([]image.RegistryCredentials, len(cfg.Auth))\n\tfor i, a := range cfg.Auth {\n\t\tauth[i] = image.RegistryCredentials{\n\t\t\tAuthority:  a.Authority,\n\t\t\tUsername:   a.Username.String(),\n\t\t\tPassword:   a.Password.String(),\n\t\t\tToken:      a.Token.String(),\n\t\t\tClientCert: a.TLSCert,\n\t\t\tClientKey:  a.TLSKey,\n\t\t}\n\t}\n\n\treturn &image.RegistryOptions{\n\t\tInsecureSkipTLSVerify: cfg.InsecureSkipTLSVerify,\n\t\tInsecureUseHTTP:       cfg.InsecureUseHTTP,\n\t\tCredentials:           auth,\n\t\tCAFileOrDir:           cfg.CACert,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/registry_test.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\nfunc TestHasNonEmptyCredentials(t *testing.T) {\n\ttests := []struct {\n\t\tusername, password, token, cert, key string\n\t\texpected                             bool\n\t}{\n\n\t\t{\n\t\t\t\"\", \"\", \"\", \"\", \"\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"user\", \"\", \"\", \"\", \"\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"\", \"pass\", \"\", \"\", \"\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"\", \"pass\", \"tok\", \"\", \"\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"user\", \"\", \"tok\", \"\", \"\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"\", \"\", \"tok\", \"\", \"\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"user\", \"pass\", \"tok\", \"\", \"\",\n\t\t\ttrue,\n\t\t},\n\n\t\t{\n\t\t\t\"user\", \"pass\", \"\", \"\", \"\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"\", \"\", \"\", \"cert\", \"key\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"\", \"\", \"\", \"cert\", \"\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"\", \"\", \"\", \"\", \"key\",\n\t\t\tfalse,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"%+v\", test), func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, hasNonEmptyCredentials(test.username, test.password, test.token, test.cert, test.key))\n\t\t})\n\t}\n}\n\nfunc Test_registry_ToOptions(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    registryConfig\n\t\texpected image.RegistryOptions\n\t}{\n\t\t{\n\t\t\tname:  \"no registry options\",\n\t\t\tinput: registryConfig{},\n\t\t\texpected: image.RegistryOptions{\n\t\t\t\tCredentials: []image.RegistryCredentials{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"set InsecureSkipTLSVerify\",\n\t\t\tinput: registryConfig{\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t},\n\t\t\texpected: image.RegistryOptions{\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t\tCredentials:           []image.RegistryCredentials{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"set InsecureUseHTTP\",\n\t\t\tinput: registryConfig{\n\t\t\t\tInsecureUseHTTP: true,\n\t\t\t},\n\t\t\texpected: image.RegistryOptions{\n\t\t\t\tInsecureUseHTTP: true,\n\t\t\t\tCredentials:     []image.RegistryCredentials{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"set all bool options\",\n\t\t\tinput: registryConfig{\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t\tInsecureUseHTTP:       true,\n\t\t\t},\n\t\t\texpected: image.RegistryOptions{\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t\tInsecureUseHTTP:       true,\n\t\t\t\tCredentials:           []image.RegistryCredentials{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"provide all tls configuration\",\n\t\t\tinput: registryConfig{\n\t\t\t\tCACert:                \"ca.crt\",\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t\tAuth: []RegistryCredentials{\n\t\t\t\t\t{\n\t\t\t\t\t\tTLSCert: \"client.crt\",\n\t\t\t\t\t\tTLSKey:  \"client.key\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: image.RegistryOptions{\n\t\t\t\tCAFileOrDir:           \"ca.crt\",\n\t\t\t\tInsecureSkipTLSVerify: true,\n\t\t\t\tCredentials: []image.RegistryCredentials{\n\t\t\t\t\t{\n\t\t\t\t\t\tClientCert: \"client.crt\",\n\t\t\t\t\t\tClientKey:  \"client.key\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, &test.expected, test.input.ToOptions())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/relationships.go",
    "content": "package options\n\nimport \"github.com/anchore/fangs\"\n\nvar _ fangs.FieldDescriber = (*relationshipsConfig)(nil)\n\ntype relationshipsConfig struct {\n\tPackageFileOwnership        bool `mapstructure:\"package-file-ownership\" json:\"package-file-ownership\" yaml:\"package-file-ownership\"`\n\tPackageFileOwnershipOverlap bool `mapstructure:\"package-file-ownership-overlap\" json:\"package-file-ownership-overlap\" yaml:\"package-file-ownership-overlap\"`\n}\n\nfunc defaultRelationshipsConfig() relationshipsConfig {\n\treturn relationshipsConfig{\n\t\tPackageFileOwnership:        true,\n\t\tPackageFileOwnershipOverlap: true,\n\t}\n}\n\nfunc (r *relationshipsConfig) DescribeFields(descriptions fangs.FieldDescriptionSet) {\n\tdescriptions.Add(&r.PackageFileOwnership, \"include package-to-file relationships that indicate which files are owned by which packages\")\n\tdescriptions.Add(&r.PackageFileOwnershipOverlap, \"include package-to-package relationships that indicate one package is owned by another due to files claimed to be owned by one package are also evidence of another package's existence\")\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/secret.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/internal/redact\"\n)\n\ntype secret string\n\nvar _ interface {\n\tfmt.Stringer\n\tclio.PostLoader\n} = (*secret)(nil)\n\n// PostLoad needs to use a pointer receiver, even if it's not modifying the value\nfunc (r *secret) PostLoad() error {\n\tredact.Add(string(*r))\n\treturn nil\n}\n\nfunc (r secret) String() string {\n\treturn string(r)\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/source.go",
    "content": "package options\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/dustin/go-humanize\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/clio\"\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\ntype sourceConfig struct {\n\tName     string      `json:\"name\" yaml:\"name\" mapstructure:\"name\"`\n\tVersion  string      `json:\"version\" yaml:\"version\" mapstructure:\"version\"`\n\tSupplier string      `json:\"supplier\" yaml:\"supplier\" mapstructure:\"supplier\"`\n\tSource   string      `json:\"source\" yaml:\"source\" mapstructure:\"source\"`\n\tBasePath string      `yaml:\"base-path\" json:\"base-path\" mapstructure:\"base-path\"` // specify base path for all file paths\n\tFile     fileSource  `json:\"file\" yaml:\"file\" mapstructure:\"file\"`\n\tImage    imageSource `json:\"image\" yaml:\"image\" mapstructure:\"image\"`\n}\n\ntype fileSource struct {\n\tDigests []string `json:\"digests\" yaml:\"digests\" mapstructure:\"digests\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*sourceConfig)(nil)\n\nvar _ clio.PostLoader = (*imageSource)(nil)\n\nfunc (o *sourceConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.File.Digests, `the file digest algorithms to use on the scanned file (options: \"md5\", \"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\")`)\n\tdescriptions.Add(&o.Image.DefaultPullSource, `allows users to specify which image source should be used to generate the sbom\nvalid values are: registry, docker, podman`)\n}\n\ntype imageSource struct {\n\tDefaultPullSource string `json:\"default-pull-source\" yaml:\"default-pull-source\" mapstructure:\"default-pull-source\"`\n\tMaxLayerSize      string `json:\"max-layer-size\" yaml:\"max-layer-size\" mapstructure:\"max-layer-size\"`\n}\n\nfunc defaultSourceConfig() sourceConfig {\n\tvar digests []string\n\tfor _, alg := range sourceproviders.DefaultConfig().DigestAlgorithms {\n\t\tdigests = append(digests, alg.String())\n\t}\n\treturn sourceConfig{\n\t\tFile: fileSource{\n\t\t\tDigests: digests,\n\t\t},\n\t}\n}\n\nfunc (c *fileSource) PostLoad() error {\n\tdigests := strset.New(c.Digests...).List()\n\tsort.Strings(digests)\n\tc.Digests = digests\n\treturn nil\n}\n\nfunc (c *imageSource) PostLoad() error {\n\tif c.MaxLayerSize != \"\" {\n\t\tperFileReadLimit, err := humanize.ParseBytes(c.MaxLayerSize)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstereoscopeFile.SetPerFileReadLimit(int64(perFileReadLimit))\n\t}\n\treturn checkDefaultSourceValues(c.DefaultPullSource)\n}\n\nvar validDefaultSourceValues = []string{\"registry\", \"docker\", \"podman\", \"\"}\n\nfunc checkDefaultSourceValues(source string) error {\n\tvalidValues := strset.New(validDefaultSourceValues...)\n\tif !validValues.Has(source) {\n\t\tvalidValuesString := strings.Join(validDefaultSourceValues, \", \")\n\t\treturn fmt.Errorf(\"%s is not a valid default source; please use one of the following: %s''\", source, validValuesString)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/source_test.go",
    "content": "package options\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_fileSource_PostLoad(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     fileSource\n\t\tassert  func(t *testing.T, cfg fileSource)\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"deduplicate digests\",\n\t\t\tcfg: fileSource{\n\t\t\t\tDigests: []string{\"sha1\", \"sha1\"},\n\t\t\t},\n\t\t\tassert: func(t *testing.T, cfg fileSource) {\n\t\t\t\tassert.Equal(t, []string{\"sha1\"}, cfg.Digests)\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.wantErr(t, tt.cfg.PostLoad())\n\t\t\tif tt.assert != nil {\n\t\t\t\ttt.assert(t, tt.cfg)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/unknowns.go",
    "content": "package options\n\nimport (\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\ntype unknownsConfig struct {\n\tRemoveWhenPackagesDefined  bool `json:\"remove-when-packages-defined\" yaml:\"remove-when-packages-defined\" mapstructure:\"remove-when-packages-defined\"`\n\tExecutablesWithoutPackages bool `json:\"executables-without-packages\" yaml:\"executables-without-packages\" mapstructure:\"executables-without-packages\"`\n\tUnexpandedArchives         bool `json:\"unexpanded-archives\" yaml:\"unexpanded-archives\" mapstructure:\"unexpanded-archives\"`\n}\n\nvar _ interface {\n\tclio.FieldDescriber\n} = (*unknownsConfig)(nil)\n\nfunc (o *unknownsConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {\n\tdescriptions.Add(&o.RemoveWhenPackagesDefined, `remove unknown errors on files with discovered packages`)\n\tdescriptions.Add(&o.ExecutablesWithoutPackages, `include executables without any identified packages`)\n\tdescriptions.Add(&o.UnexpandedArchives, `include archives which were not expanded and searched`)\n}\n\nfunc defaultUnknowns() unknownsConfig {\n\tdef := cataloging.DefaultUnknownsConfig()\n\treturn unknownsConfig{\n\t\tRemoveWhenPackagesDefined:  def.RemoveWhenPackagesDefined,\n\t\tExecutablesWithoutPackages: def.IncludeExecutablesWithoutPackages,\n\t\tUnexpandedArchives:         def.IncludeUnexpandedArchives,\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/update_check.go",
    "content": "package options\n\nimport \"github.com/anchore/fangs\"\n\ntype UpdateCheck struct {\n\tCheckForAppUpdate bool `yaml:\"check-for-app-update\" json:\"check-for-app-update\" mapstructure:\"check-for-app-update\"` // whether to check for an application update on start up or not\n}\n\nfunc DefaultUpdateCheck() UpdateCheck {\n\treturn UpdateCheck{\n\t\tCheckForAppUpdate: true,\n\t}\n}\n\nfunc (cfg *UpdateCheck) DescribeFields(descriptions fangs.FieldDescriptionSet) {\n\tdescriptions.Add(&cfg.CheckForAppUpdate, \"whether to check for an application update on start up or not\")\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/writer.go",
    "content": "package options\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/table\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.Writer = (*sbomMultiWriter)(nil)\n\nvar _ interface {\n\tio.Closer\n\tsbom.Writer\n} = (*sbomStreamWriter)(nil)\n\n// makeSBOMWriter creates a sbom.Writer for output or returns an error. this will either return a valid writer\n// or an error but neither both and if there is no error, sbom.Writer.Close() should be called\nfunc makeSBOMWriter(outputs []string, defaultFile string, encoders []sbom.FormatEncoder) (sbom.Writer, error) {\n\toutputOptions, err := parseSBOMOutputFlags(outputs, defaultFile, encoders)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\twriter, err := newSBOMMultiWriter(outputOptions...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn writer, nil\n}\n\n// parseSBOMOutputFlags utility to parse command-line option strings and retain the existing behavior of default format and file\nfunc parseSBOMOutputFlags(outputs []string, defaultFile string, encoders []sbom.FormatEncoder) (out []sbomWriterDescription, errs error) {\n\tencoderCollection := format.NewEncoderCollection(encoders...)\n\n\t// always should have one option -- we generally get the default of \"table\", but just make sure\n\tif len(outputs) == 0 {\n\t\toutputs = append(outputs, table.ID.String())\n\t}\n\n\tfor _, name := range outputs {\n\t\tname = strings.TrimSpace(name)\n\n\t\t// split to at most two parts for <format>=<file>\n\t\tparts := strings.SplitN(name, \"=\", 2)\n\n\t\t// the format name is the first part\n\t\tname = parts[0]\n\n\t\t// default to the --file or empty string if not specified\n\t\tfile := defaultFile\n\n\t\t// If a file is specified as part of the output formatName, use that\n\t\tif len(parts) > 1 {\n\t\t\tfile = parts[1]\n\t\t}\n\n\t\tenc := encoderCollection.GetByString(name)\n\t\tif enc == nil {\n\t\t\terrs = multierror.Append(errs, fmt.Errorf(`unsupported output format \"%s\", supported formats are: %+v`, name, formatVersionOptions(encoderCollection.NameVersions())))\n\t\t\tcontinue\n\t\t}\n\n\t\tout = append(out, newSBOMWriterDescription(enc, file))\n\t}\n\treturn out, errs\n}\n\n// formatVersionOptions takes a list like [\"github-json\", \"syft-json@11.0.0\", \"cyclonedx-xml@1.0\", \"cyclondx-xml@1.1\"...]\n// and formats it into a human-readable string like:\n//\n// Available formats:\n//   - cyclonedx-json @ 1.2, 1.3, 1.4, 1.5\n//   - cyclonedx-xml @ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5\n//   - github-json\n//   - spdx-json @ 2.2, 2.3\n//   - spdx-tag-value @ 2.1, 2.2, 2.3\n//   - syft-json\n//   - syft-table\n//   - syft-text\n//   - template\nfunc formatVersionOptions(nameVersionPairs []string) string {\n\tavailableVersions := make(map[string][]string)\n\tavailableFormats := strset.New()\n\tfor _, nameVersion := range nameVersionPairs {\n\t\tfields := strings.SplitN(nameVersion, \"@\", 2)\n\t\tif len(fields) == 2 {\n\t\t\tavailableVersions[fields[0]] = append(availableVersions[fields[0]], fields[1])\n\t\t}\n\t\tavailableFormats.Add(fields[0])\n\t}\n\n\t// find any formats with exactly one version -- remove them from the version map\n\tfor name, versions := range availableVersions {\n\t\tif len(versions) == 1 {\n\t\t\tdelete(availableVersions, name)\n\t\t}\n\t}\n\n\tsortedAvailableFormats := availableFormats.List()\n\tsort.Strings(sortedAvailableFormats)\n\n\tvar s strings.Builder\n\n\ts.WriteString(\"\\n\")\n\ts.WriteString(\"Available formats:\")\n\n\tfor _, name := range sortedAvailableFormats {\n\t\ts.WriteString(\"\\n\")\n\n\t\tfmt.Fprintf(&s, \"   - %s\", name)\n\n\t\tif len(availableVersions[name]) > 0 {\n\t\t\ts.WriteString(\" @ \")\n\t\t\ts.WriteString(strings.Join(availableVersions[name], \", \"))\n\t\t}\n\t}\n\n\treturn s.String()\n}\n\n// sbomWriterDescription Format and path strings used to create sbom.Writer\ntype sbomWriterDescription struct {\n\tFormat sbom.FormatEncoder\n\tPath   string\n}\n\nfunc newSBOMWriterDescription(f sbom.FormatEncoder, p string) sbomWriterDescription {\n\texpandedPath, err := homedir.Expand(p)\n\tif err != nil {\n\t\tlog.Warnf(\"could not expand given writer output path=%q: %w\", p, err)\n\t\t// ignore errors\n\t\texpandedPath = p\n\t}\n\treturn sbomWriterDescription{\n\t\tFormat: f,\n\t\tPath:   expandedPath,\n\t}\n}\n\n// sbomMultiWriter holds a list of child sbom.Writers to apply all Write and Close operations to\ntype sbomMultiWriter struct {\n\twriters []sbom.Writer\n}\n\n// newSBOMMultiWriter create all report writers from input options; if a file is not specified the given defaultWriter is used\nfunc newSBOMMultiWriter(options ...sbomWriterDescription) (_ *sbomMultiWriter, err error) {\n\tif len(options) == 0 {\n\t\treturn nil, fmt.Errorf(\"no output options provided\")\n\t}\n\n\tout := &sbomMultiWriter{}\n\n\tfor _, option := range options {\n\t\tswitch len(option.Path) {\n\t\tcase 0:\n\t\t\tout.writers = append(out.writers, &sbomPublisher{\n\t\t\t\tformat: option.Format,\n\t\t\t})\n\t\tdefault:\n\t\t\t// create any missing subdirectories\n\t\t\tdir := path.Dir(option.Path)\n\t\t\tif dir != \"\" {\n\t\t\t\ts, err := os.Stat(dir)\n\t\t\t\tif err != nil {\n\t\t\t\t\terr = os.MkdirAll(dir, 0755) // maybe should be os.ModePerm ?\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t} else if !s.IsDir() {\n\t\t\t\t\treturn nil, fmt.Errorf(\"output path does not contain a valid directory: %s\", option.Path)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfileOut, err := os.OpenFile(option.Path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to create report file: %w\", err)\n\t\t\t}\n\t\t\tout.writers = append(out.writers, &sbomStreamWriter{\n\t\t\t\tformat: option.Format,\n\t\t\t\tout:    fileOut,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn out, nil\n}\n\n// Write writes the SBOM to all writers\nfunc (m *sbomMultiWriter) Write(s sbom.SBOM) (errs error) {\n\tfor _, w := range m.writers {\n\t\terr := w.Write(s)\n\t\tif err != nil {\n\t\t\terrs = multierror.Append(errs, fmt.Errorf(\"unable to write SBOM: %w\", err))\n\t\t}\n\t}\n\treturn errs\n}\n\n// sbomStreamWriter implements sbom.Writer for a given format and io.Writer, also providing a close function for cleanup\ntype sbomStreamWriter struct {\n\tformat sbom.FormatEncoder\n\tout    io.Writer\n}\n\n// Write the provided SBOM to the data stream\nfunc (w *sbomStreamWriter) Write(s sbom.SBOM) error {\n\tdefer w.Close()\n\treturn w.format.Encode(w.out, s)\n}\n\n// Close any resources, such as open files\nfunc (w *sbomStreamWriter) Close() error {\n\tif closer, ok := w.out.(io.Closer); ok {\n\t\treturn closer.Close()\n\t}\n\treturn nil\n}\n\n// sbomPublisher implements sbom.Writer that publishes results to the event bus\ntype sbomPublisher struct {\n\tformat sbom.FormatEncoder\n}\n\n// Write the provided SBOM to the data stream\nfunc (w *sbomPublisher) Write(s sbom.SBOM) error {\n\tbuf := &bytes.Buffer{}\n\tif err := w.format.Encode(buf, s); err != nil {\n\t\treturn fmt.Errorf(\"unable to encode SBOM: %w\", err)\n\t}\n\n\tbus.Report(buf.String())\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/options/writer_test.go",
    "content": "package options\n\nimport (\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_MakeSBOMWriter(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\toutputs []string\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"go case\",\n\t\t\toutputs: []string{\"json\"},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"multiple\",\n\t\t\toutputs: []string{\"table\", \"json\"},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"unknown format\",\n\t\t\toutputs: []string{\"unknown\"},\n\t\t\twantErr: func(t assert.TestingT, err error, bla ...interface{}) bool {\n\t\t\t\treturn assert.ErrorContains(t, err, `unsupported output format \"unknown\", supported formats are:`)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\topt := DefaultOutput()\n\t\t\trequire.NoError(t, opt.Format.PostLoad())\n\t\t\tencoders, err := opt.Encoders()\n\t\t\trequire.NoError(t, err)\n\t\t\t_, err = makeSBOMWriter(tt.outputs, \"\", encoders)\n\t\t\ttt.wantErr(t, err)\n\t\t})\n\t}\n}\n\nfunc dummyFormat(name string) sbom.FormatEncoder {\n\treturn dummyEncoder{name: name}\n}\n\nvar _ sbom.FormatEncoder = (*dummyEncoder)(nil)\n\ntype dummyEncoder struct {\n\tname string\n}\n\nfunc (d dummyEncoder) ID() sbom.FormatID {\n\treturn sbom.FormatID(d.name)\n}\n\nfunc (d dummyEncoder) Aliases() []string {\n\treturn nil\n}\n\nfunc (d dummyEncoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (d dummyEncoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\treturn nil\n}\n\nfunc Test_newSBOMMultiWriter(t *testing.T) {\n\ttype writerConfig struct {\n\t\tformat string\n\t\tfile   string\n\t}\n\n\ttmp := t.TempDir()\n\n\ttestName := func(options []sbomWriterDescription, err bool) string {\n\t\tvar out []string\n\t\tfor _, opt := range options {\n\t\t\tout = append(out, string(opt.Format.ID())+\"=\"+opt.Path)\n\t\t}\n\t\terrs := \"\"\n\t\tif err {\n\t\t\terrs = \"(err)\"\n\t\t}\n\t\treturn strings.Join(out, \", \") + errs\n\t}\n\n\ttests := []struct {\n\t\toutputs  []sbomWriterDescription\n\t\terr      bool\n\t\texpected []writerConfig\n\t}{\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{},\n\t\t\terr:     true,\n\t\t},\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"table\"),\n\t\t\t\t\tPath:   \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []writerConfig{\n\t\t\t\t{\n\t\t\t\t\tformat: \"table\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []writerConfig{\n\t\t\t\t{\n\t\t\t\t\tformat: \"json\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"json\"),\n\t\t\t\t\tPath:   \"test-2.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []writerConfig{\n\t\t\t\t{\n\t\t\t\t\tformat: \"json\",\n\t\t\t\t\tfile:   \"test-2.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"json\"),\n\t\t\t\t\tPath:   \"test-3/1.json\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"spdx-json\"),\n\t\t\t\t\tPath:   \"test-3/2.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []writerConfig{\n\t\t\t\t{\n\t\t\t\t\tformat: \"json\",\n\t\t\t\t\tfile:   \"test-3/1.json\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tformat: \"spdx-json\",\n\t\t\t\t\tfile:   \"test-3/2.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\toutputs: []sbomWriterDescription{\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"text\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFormat: dummyFormat(\"spdx-json\"),\n\t\t\t\t\tPath:   \"test-4.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []writerConfig{\n\t\t\t\t{\n\t\t\t\t\tformat: \"text\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tformat: \"spdx-json\",\n\t\t\t\t\tfile:   \"test-4.json\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(testName(test.outputs, test.err), func(t *testing.T) {\n\t\t\toutputs := test.outputs\n\t\t\tfor i := range outputs {\n\t\t\t\tif outputs[i].Path != \"\" {\n\t\t\t\t\toutputs[i].Path = tmp + outputs[i].Path\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmw, err := newSBOMMultiWriter(outputs...)\n\n\t\t\tif test.err {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t}\n\n\t\t\tassert.Len(t, mw.writers, len(test.expected))\n\n\t\t\tfor i, e := range test.expected {\n\t\t\t\tswitch w := mw.writers[i].(type) {\n\t\t\t\tcase *sbomStreamWriter:\n\t\t\t\t\tassert.Equal(t, string(w.format.ID()), e.format)\n\t\t\t\t\tassert.NotNil(t, w.out)\n\t\t\t\t\tif e.file != \"\" {\n\t\t\t\t\t\tassert.FileExists(t, tmp+e.file)\n\t\t\t\t\t}\n\t\t\t\tcase *sbomPublisher:\n\t\t\t\t\tassert.Equal(t, string(w.format.ID()), e.format)\n\t\t\t\tdefault:\n\t\t\t\t\tt.Fatalf(\"unknown writer type: %T\", w)\n\t\t\t\t}\n\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_newSBOMWriterDescription(t *testing.T) {\n\th, err := homedir.Dir()\n\trequire.NoError(t, err)\n\ttests := []struct {\n\t\tname     string\n\t\tpath     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"expand home dir\",\n\t\t\tpath:     \"~/place.txt\",\n\t\t\texpected: filepath.Join(h, \"place.txt\"),\n\t\t},\n\t\t{\n\t\t\tname:     \"passthrough other paths\",\n\t\t\tpath:     \"/other/place.txt\",\n\t\t\texpected: \"/other/place.txt\",\n\t\t},\n\t\t{\n\t\t\tname:     \"no path\",\n\t\t\tpath:     \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\to := newSBOMWriterDescription(dummyFormat(\"table\"), tt.path)\n\t\t\tassert.Equal(t, tt.expected, o.Path)\n\t\t})\n\t}\n}\n\nfunc Test_formatVersionOptions(t *testing.T) {\n\n\ttests := []struct {\n\t\tname             string\n\t\tnameVersionPairs []string\n\t\twant             string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tnameVersionPairs: []string{\n\t\t\t\t\"cyclonedx-json@1.2\", \"cyclonedx-json@1.3\", \"cyclonedx-json@1.4\", \"cyclonedx-json@1.5\",\n\t\t\t\t\"cyclonedx-xml@1.0\", \"cyclonedx-xml@1.1\", \"cyclonedx-xml@1.2\", \"cyclonedx-xml@1.3\",\n\t\t\t\t\"cyclonedx-xml@1.4\", \"cyclonedx-xml@1.5\", \"github-json\", \"spdx-json@2.2\", \"spdx-json@2.3\",\n\t\t\t\t\"spdx-tag-value@2.1\", \"spdx-tag-value@2.2\", \"spdx-tag-value@2.3\", \"syft-json@11.0.0\",\n\t\t\t\t\"syft-table\", \"syft-text\", \"template\",\n\t\t\t},\n\t\t\twant: `\nAvailable formats:\n   - cyclonedx-json @ 1.2, 1.3, 1.4, 1.5\n   - cyclonedx-xml @ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5\n   - github-json\n   - spdx-json @ 2.2, 2.3\n   - spdx-tag-value @ 2.1, 2.2, 2.3\n   - syft-json\n   - syft-table\n   - syft-text\n   - template`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, formatVersionOptions(tt.nameVersionPairs))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/.gitignore",
    "content": "results"
  },
  {
    "path": "cmd/syft/internal/test/integration/all_layers_squashed_comparison_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_AllLayersIncludesSquashed(t *testing.T) {\n\t// This is a verification test for issue grype/#894 (https://github.com/anchore/grype/issues/894)\n\tallLayers, _ := catalogFixtureImage(t, \"image-suse-all-layers\", source.AllLayersScope)\n\tsquashed, _ := catalogFixtureImage(t, \"image-suse-all-layers\", source.SquashedScope)\n\n\tlenAllLayers := len(allLayers.Artifacts.Packages.Sorted())\n\tlenSquashed := len(squashed.Artifacts.Packages.Sorted())\n\n\tif lenAllLayers < lenSquashed {\n\t\tt.Errorf(\"squashed has more packages than all-layers: %d > %d\", lenSquashed, lenAllLayers)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/catalog_packages_cases_test.go",
    "content": "package integration\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\ntype testCase struct {\n\tname        string\n\tpkgType     pkg.Type\n\tpkgLanguage pkg.Language\n\tduplicates  int\n\tpkgInfo     map[string]string\n}\n\nvar imageOnlyTestCases = []testCase{\n\t{\n\t\tname:        \"find gemspec packages\",\n\t\tpkgType:     pkg.GemPkg,\n\t\tpkgLanguage: pkg.Ruby,\n\t\tpkgInfo: map[string]string{\n\t\t\t// specifications in the root specification directory\n\t\t\t\"bundler\": \"2.1.4\",\n\t\t\t// specifications in named directories\n\t\t\t\"unbundler\": \"3.1.4\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find npm package\",\n\t\tpkgType:     pkg.NpmPkg,\n\t\tpkgLanguage: pkg.JavaScript,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"npm\": \"6.14.6\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find python egg & wheel packages\",\n\t\tpkgType:     pkg.PythonPkg,\n\t\tpkgLanguage: pkg.Python,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"pygments\":     \"2.6.1\",\n\t\t\t\"requests\":     \"2.22.0\",\n\t\t\t\"somerequests\": \"3.22.0\",\n\t\t\t\"someotherpkg\": \"3.19.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find PHP composer installed.json packages\",\n\t\tpkgType:     pkg.PhpComposerPkg,\n\t\tpkgLanguage: pkg.PHP,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"nikic/fast-route\": \"v1.3.0\",\n\t\t\t\"psr/container\":    \"2.0.2\",\n\t\t\t\"psr/http-factory\": \"1.0.1\",\n\t\t},\n\t},\n\t{\n\t\t// When the image is build lib overwrites pkgs/lib causing there to only be two packages\n\t\tname:    \"find apkdb packages\",\n\t\tpkgType: pkg.ApkPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"musl-utils\": \"1.1.24-r2\",\n\t\t\t\"libc-utils\": \"0.7.2-r0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find java packages excluding pom.xml\", // image scans can not include packages that have yet to be installed\n\t\tpkgType:     pkg.JavaPkg,\n\t\tpkgLanguage: pkg.Java,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"example-java-app-maven\": \"0.1.0\",\n\t\t\t\"joda-time\":              \"2.9.2\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find R packages\",\n\t\tpkgType:     pkg.Rpkg,\n\t\tpkgLanguage: pkg.R,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"base\": \"4.3.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find .NET packages (deps.json + .dlls)\",\n\t\tpkgType:     pkg.DotnetPkg,\n\t\tpkgLanguage: pkg.Dotnet,\n\t\tpkgInfo: map[string]string{\n\t\t\t// executable\n\t\t\t\"DocuSign.eSign\": \"6.8.0.0\",\n\t\t\t// deps.json\n\t\t\t\"AWSSDK.Core\": \"3.7.10.6\",\n\t\t\t\"Microsoft.Extensions.DependencyInjection\":              \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Logging\":                          \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Logging.Abstractions\":             \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Options\":                          \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Primitives\":                       \"6.0.0\",\n\t\t\t\"Newtonsoft.Json\":                                       \"13.0.1\",\n\t\t\t\"Serilog\":                                               \"2.10.0\",\n\t\t\t\"Serilog.Sinks.Console\":                                 \"4.0.1\",\n\t\t\t//\"System.Diagnostics.DiagnosticSource\":                   \"6.0.0\", // no dll claims in deps.json targets section\n\t\t\t//\"System.Runtime.CompilerServices.Unsafe\":                \"6.0.0\", // no dll claims in deps.json targets section\n\t\t\t//\"TestCommon\":  \"1.0.0\",\n\t\t\t\"TestLibrary\": \"1.0.0\",\n\t\t},\n\t},\n}\n\nvar dirOnlyTestCases = []testCase{\n\t{\n\t\tname:        \"find gemfile packages\",\n\t\tpkgType:     pkg.GemPkg,\n\t\tpkgLanguage: pkg.Ruby,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"actionmailer\":         \"4.1.1\",\n\t\t\t\"actionpack\":           \"4.1.1\",\n\t\t\t\"actionview\":           \"4.1.1\",\n\t\t\t\"activemodel\":          \"4.1.1\",\n\t\t\t\"activerecord\":         \"4.1.1\",\n\t\t\t\"activesupport\":        \"4.1.1\",\n\t\t\t\"arel\":                 \"5.0.1.20140414130214\",\n\t\t\t\"bootstrap-sass\":       \"3.1.1.1\",\n\t\t\t\"builder\":              \"3.2.2\",\n\t\t\t\"bundler\":              \"2.1.4\",\n\t\t\t\"coffee-rails\":         \"4.0.1\",\n\t\t\t\"coffee-script\":        \"2.2.0\",\n\t\t\t\"coffee-script-source\": \"1.7.0\",\n\t\t\t\"erubis\":               \"2.7.0\",\n\t\t\t\"execjs\":               \"2.0.2\",\n\t\t\t\"google-cloud-errors\":  \"1.3.0\",\n\t\t\t\"hike\":                 \"1.2.3\",\n\t\t\t\"i18n\":                 \"0.6.9\",\n\t\t\t\"jbuilder\":             \"2.0.7\",\n\t\t\t\"jquery-rails\":         \"3.1.0\",\n\t\t\t\"json\":                 \"1.8.1\",\n\t\t\t\"kgio\":                 \"2.9.2\",\n\t\t\t\"libv8\":                \"3.16.14.3\",\n\t\t\t\"mail\":                 \"2.5.4\",\n\t\t\t\"mime-types\":           \"1.25.1\",\n\t\t\t\"minitest\":             \"5.3.4\",\n\t\t\t\"multi_json\":           \"1.10.1\",\n\t\t\t\"mysql2\":               \"0.3.16\",\n\t\t\t\"polyglot\":             \"0.3.4\",\n\t\t\t\"rack\":                 \"1.5.2\",\n\t\t\t\"rack-test\":            \"0.6.2\",\n\t\t\t\"rails\":                \"4.1.1\",\n\t\t\t\"railties\":             \"4.1.1\",\n\t\t\t\"raindrops\":            \"0.13.0\",\n\t\t\t\"rake\":                 \"10.3.2\",\n\t\t\t\"rdoc\":                 \"4.1.1\",\n\t\t\t\"ref\":                  \"1.0.5\",\n\t\t\t\"sass\":                 \"3.2.19\",\n\t\t\t\"sass-rails\":           \"4.0.3\",\n\t\t\t\"sdoc\":                 \"0.4.0\",\n\t\t\t\"spring\":               \"1.1.3\",\n\t\t\t\"sprockets\":            \"2.11.0\",\n\t\t\t\"sprockets-rails\":      \"2.1.3\",\n\t\t\t\"sqlite3\":              \"1.3.9\",\n\t\t\t\"therubyracer\":         \"0.12.1\",\n\t\t\t\"thor\":                 \"0.19.1\",\n\t\t\t\"thread_safe\":          \"0.3.3\",\n\t\t\t\"tilt\":                 \"1.4.1\",\n\t\t\t\"treetop\":              \"1.4.15\",\n\t\t\t\"turbolinks\":           \"3.0.0\",\n\t\t\t\"tzinfo\":               \"1.2.0\",\n\t\t\t\"uglifier\":             \"2.5.0\",\n\t\t\t\"unbundler\":            \"3.1.4\",\n\t\t\t\"unicorn\":              \"4.8.3\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find javascript npm packages (yarn.lock & package-lock.json)\",\n\t\tpkgType:     pkg.NpmPkg,\n\t\tpkgLanguage: pkg.JavaScript,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"@babel/code-frame\": \"7.10.4\",\n\t\t\t\"get-stdin\":         \"8.0.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find python requirements.txt & setup.py package references\",\n\t\tpkgType:     pkg.PythonPkg,\n\t\tpkgLanguage: pkg.Python,\n\t\tpkgInfo: map[string]string{\n\t\t\t// dir specific test cases\n\t\t\t\"flask\":              \"4.0.0\",\n\t\t\t\"python-dateutil\":    \"2.8.1\",\n\t\t\t\"python-swiftclient\": \"3.8.1\",\n\t\t\t\"pytz\":               \"2019.3\",\n\t\t\t\"jsonschema\":         \"2.6.0\",\n\t\t\t\"passlib\":            \"1.7.2\",\n\t\t\t\"mypy\":               \"v0.770\",\n\t\t\t// common to image and directory\n\t\t\t\"pygments\":     \"2.6.1\",\n\t\t\t\"requests\":     \"2.22.0\",\n\t\t\t\"somerequests\": \"3.22.0\",\n\t\t\t\"someotherpkg\": \"3.19.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find golang modules\",\n\t\tpkgType:     pkg.GoModulePkg,\n\t\tpkgLanguage: pkg.Go,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"github.com/bmatcuk/doublestar\": \"v1.3.1\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find conan packages\",\n\t\tpkgType:     pkg.ConanPkg,\n\t\tpkgLanguage: pkg.CPP,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"catch2\":     \"2.13.8\",\n\t\t\t\"docopt.cpp\": \"0.6.3\",\n\t\t\t\"fmt\":        \"8.1.1\",\n\t\t\t\"spdlog\":     \"1.9.2\",\n\t\t\t\"sdl\":        \"2.0.20\",\n\t\t\t\"fltk\":       \"1.3.8\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find rust crates\",\n\t\tpkgType:     pkg.RustPkg,\n\t\tpkgLanguage: pkg.Rust,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"memchr\":        \"2.3.3\",\n\t\t\t\"nom\":           \"4.2.3\",\n\t\t\t\"version_check\": \"0.1.5\",\n\t\t},\n\t},\n\t{\n\t\tname:       \"find apkdb packages\",\n\t\tpkgType:    pkg.ApkPkg,\n\t\tduplicates: 2, // when the directory is cataloged we have duplicates between lib/ and pkgs/lib\n\t\tpkgInfo: map[string]string{\n\t\t\t\"musl-utils\": \"1.1.24-r2\",\n\t\t\t\"libc-utils\": \"0.7.2-r0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find php composer package\",\n\t\tpkgType:     pkg.PhpComposerPkg,\n\t\tpkgLanguage: pkg.PHP,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"adoy/fastcgi-client\":       \"1.0.2\",\n\t\t\t\"alcaeus/mongo-php-adapter\": \"1.1.11\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find pubspec lock packages\",\n\t\tpkgType:     pkg.DartPubPkg,\n\t\tpkgLanguage: pkg.Dart,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"ansicolor\":  \"1.1.1\",\n\t\t\t\"archive\":    \"2.0.13\",\n\t\t\t\"args\":       \"1.6.0\",\n\t\t\t\"key_binder\": \"1.11.20\",\n\t\t\t\"ale\":        \"3.3.0\",\n\t\t\t\"analyzer\":   \"0.40.7\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find dotnet packages (.deps.json)\",\n\t\tpkgType:     pkg.DotnetPkg,\n\t\tpkgLanguage: pkg.Dotnet,\n\t\tpkgInfo: map[string]string{\n\t\t\t// all from deps.json\n\t\t\t\"AWSSDK.Core\": \"3.7.10.6\",\n\t\t\t\"Microsoft.Extensions.DependencyInjection\":              \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Logging\":                          \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Logging.Abstractions\":             \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Options\":                          \"6.0.0\",\n\t\t\t\"Microsoft.Extensions.Primitives\":                       \"6.0.0\",\n\t\t\t\"Newtonsoft.Json\":                                       \"13.0.1\",\n\t\t\t\"Serilog\":                                               \"2.10.0\",\n\t\t\t\"Serilog.Sinks.Console\":                                 \"4.0.1\",\n\t\t\t//\"System.Diagnostics.DiagnosticSource\":                   \"6.0.0\", // no dll claims in deps.json targets section\n\t\t\t//\"System.Runtime.CompilerServices.Unsafe\":                \"6.0.0\", // no dll claims in deps.json targets section\n\t\t\t//\"TestCommon\":  \"1.0.0\",\n\t\t\t\"TestLibrary\": \"1.0.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find java packages including pom.xml\", // directory scans can include packages that have yet to be installed\n\t\tpkgType:     pkg.JavaPkg,\n\t\tpkgLanguage: pkg.Java,\n\t\tduplicates:  2, // joda-time and example-java-app-maven are included in both pom.xml AND the .jar collection\n\t\tpkgInfo: map[string]string{\n\t\t\t\"example-java-app-maven\": \"0.1.0\",\n\t\t\t\"joda-time\":              \"2.9.2\",\n\t\t\t\"junit\":                  \"4.12\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find cocoapods packages\",\n\t\tpkgType:     pkg.CocoapodsPkg,\n\t\tpkgLanguage: pkg.Swift,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"GlossButtonNode\":                        \"3.1.2\",\n\t\t\t\"PINCache\":                               \"3.0.3\",\n\t\t\t\"PINCache/Arc-exception-safe\":            \"3.0.3\",\n\t\t\t\"PINCache/Core\":                          \"3.0.3\",\n\t\t\t\"PINOperation\":                           \"1.2.1\",\n\t\t\t\"PINRemoteImage/Core\":                    \"3.0.3\",\n\t\t\t\"PINRemoteImage/iOS\":                     \"3.0.3\",\n\t\t\t\"PINRemoteImage/PINCache\":                \"3.0.3\",\n\t\t\t\"Reveal-SDK\":                             \"33\",\n\t\t\t\"SwiftGen\":                               \"6.5.1\",\n\t\t\t\"Texture\":                                \"3.1.0\",\n\t\t\t\"Texture/AssetsLibrary\":                  \"3.1.0\",\n\t\t\t\"Texture/Core\":                           \"3.1.0\",\n\t\t\t\"Texture/MapKit\":                         \"3.1.0\",\n\t\t\t\"Texture/Photos\":                         \"3.1.0\",\n\t\t\t\"Texture/PINRemoteImage\":                 \"3.1.0\",\n\t\t\t\"Texture/Video\":                          \"3.1.0\",\n\t\t\t\"TextureSwiftSupport\":                    \"3.13.0\",\n\t\t\t\"TextureSwiftSupport/Components\":         \"3.13.0\",\n\t\t\t\"TextureSwiftSupport/Experiments\":        \"3.13.0\",\n\t\t\t\"TextureSwiftSupport/Extensions\":         \"3.13.0\",\n\t\t\t\"TextureSwiftSupport/LayoutSpecBuilders\": \"3.13.0\",\n\t\t\t\"TinyConstraints\":                        \"4.0.2\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find hackage packages\",\n\t\tpkgType:     pkg.HackagePkg,\n\t\tpkgLanguage: pkg.Haskell,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"Cabal\":                    \"3.2.1.0\",\n\t\t\t\"Diff\":                     \"0.4.1\",\n\t\t\t\"HTTP\":                     \"4000.3.16\",\n\t\t\t\"HUnit\":                    \"1.6.2.0\",\n\t\t\t\"OneTuple\":                 \"0.3.1\",\n\t\t\t\"Only\":                     \"0.1\",\n\t\t\t\"PyF\":                      \"0.10.2.0\",\n\t\t\t\"QuickCheck\":               \"2.14.2\",\n\t\t\t\"RSA\":                      \"2.4.1\",\n\t\t\t\"SHA\":                      \"1.6.4.4\",\n\t\t\t\"Spock\":                    \"0.14.0.0\",\n\t\t\t\"ShellCheck\":               \"0.8.0\",\n\t\t\t\"colourista\":               \"0.1.0.1\",\n\t\t\t\"language-docker\":          \"11.0.0\",\n\t\t\t\"spdx\":                     \"1.0.0.2\",\n\t\t\t\"hspec\":                    \"2.9.4\",\n\t\t\t\"hspec-core\":               \"2.9.4\",\n\t\t\t\"hspec-discover\":           \"2.9.4\",\n\t\t\t\"stm\":                      \"2.5.0.2\",\n\t\t\t\"configurator-pg\":          \"0.2.6\",\n\t\t\t\"hasql-dynamic-statements\": \"0.3.1.1\",\n\t\t\t\"hasql-implicits\":          \"0.1.0.4\",\n\t\t\t\"hasql-pool\":               \"0.5.2.2\",\n\t\t\t\"lens-aeson\":               \"1.1.3\",\n\t\t\t\"optparse-applicative\":     \"0.16.1.0\",\n\t\t\t\"protolude\":                \"0.3.2\",\n\t\t\t\"ptr\":                      \"0.16.8.2\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find hex packages\",\n\t\tpkgType:     pkg.HexPkg,\n\t\tpkgLanguage: pkg.Elixir + \",\" + pkg.Erlang,\n\t\tpkgInfo: map[string]string{\n\t\t\t// elixir\n\t\t\t\"castore\":          \"0.1.17\",\n\t\t\t\"connection\":       \"1.1.0\",\n\t\t\t\"cowboy\":           \"2.9.0\",\n\t\t\t\"cowboy_telemetry\": \"0.4.0\",\n\t\t\t\"cowlib\":           \"2.11.0\",\n\t\t\t\"db_connection\":    \"2.4.2\",\n\t\t\t\"decimal\":          \"2.0.0\",\n\t\t\t\"earmark_parser\":   \"1.4.25\",\n\t\t\t\"ecto\":             \"3.8.1\",\n\t\t\t\"ecto_sql\":         \"3.8.1\",\n\t\t\t\"esbuild\":          \"0.5.0\",\n\t\t\t\"ex_doc\":           \"0.28.4\",\n\t\t\t\"gettext\":          \"0.19.1\",\n\t\t\t\"hpax\":             \"0.1.1\",\n\t\t\t\"jason\":            \"1.3.0\",\n\n\t\t\t// erlang\n\t\t\t\"certifi\":             \"2.9.0\",\n\t\t\t\"idna\":                \"6.1.1\",\n\t\t\t\"metrics\":             \"1.0.1\",\n\t\t\t\"mimerl\":              \"1.2.0\",\n\t\t\t\"parse_trans\":         \"3.3.1\",\n\t\t\t\"ssl_verify_fun\":      \"1.1.6\",\n\t\t\t\"unicode_util_compat\": \"0.7.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find ErLang OTP applications\",\n\t\tpkgType:     pkg.ErlangOTPPkg,\n\t\tpkgLanguage: pkg.Erlang,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"accept\": \"0.3.5\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find swift package manager packages\",\n\t\tpkgType:     pkg.SwiftPkg,\n\t\tpkgLanguage: pkg.Swift,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"swift-algorithms\":       \"1.0.0\",\n\t\t\t\"swift-async-algorithms\": \"0.1.0\",\n\t\t\t\"swift-atomics\":          \"1.1.0\",\n\t\t\t\"swift-collections\":      \"1.0.4\",\n\t\t\t\"swift-numerics\":         \"1.0.2\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find swipl pack package manager packages\",\n\t\tpkgType:     pkg.SwiplPackPkg,\n\t\tpkgLanguage: pkg.Swipl,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"hdt\": \"0.5.2\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find github action packages (from usage in workflow files and composite actions)\",\n\t\tpkgType: pkg.GithubActionPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"actions/checkout\": \"v4\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find github shared workflow calls (from usage in workflow files)\",\n\t\tpkgType: pkg.GithubActionWorkflowPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"octo-org/this-repo/.github/workflows/workflow-1.yml\": \"172239021f7ba04fe7327647b213799853a9eb89\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find opam package\",\n\t\tpkgType:     pkg.OpamPkg,\n\t\tpkgLanguage: pkg.OCaml,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"ocaml-base-compiler\": \"4.14.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find terraform packages\",\n\t\tpkgType:     pkg.TerraformPkg,\n\t\tpkgLanguage: pkg.Go,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"registry.terraform.io/hashicorp/aws\": \"5.72.1\",\n\t\t},\n\t},\n}\n\nvar commonTestCases = []testCase{\n\t{\n\t\tname:    \"find alpm packages\",\n\t\tpkgType: pkg.AlpmPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"pacman\": \"6.0.1-5\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find rpmdb packages\",\n\t\tpkgType: pkg.RpmPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"dive\": \"0.9.2-1\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find dpkg packages\",\n\t\tpkgType: pkg.DebPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"apt\":     \"1.8.2\",\n\t\t\t\"dash\":    \"0.5.8-2.4\",\n\t\t\t\"netbase\": \"5.4\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find portage packages\",\n\t\tpkgType: pkg.PortagePkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"app-containers/skopeo\": \"1.5.1\",\n\t\t},\n\t},\n\n\t{\n\t\tname:        \"find jenkins plugins\",\n\t\tpkgType:     pkg.JenkinsPluginPkg,\n\t\tpkgLanguage: pkg.Java,\n\t\tduplicates:  1, // there is a \"example-jenkins-plugin\" HPI, and nested within that a JAR of the same name\n\t\tpkgInfo: map[string]string{\n\t\t\t\"example-jenkins-plugin\": \"1.0-SNAPSHOT\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find nix store packages\",\n\t\tpkgType: pkg.NixPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"glibc\": \"2.34-210\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find wordpress plugins\",\n\t\tpkgType:     pkg.WordpressPluginPkg,\n\t\tpkgLanguage: pkg.PHP,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"Akismet Anti-spam: Spam Protection\": \"5.3\",\n\t\t},\n\t},\n\t{\n\t\tname:    \"find homebrew\",\n\t\tpkgType: pkg.HomebrewPkg,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"afflib\": \"1.2.3\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find php pear/pecl package\",\n\t\tpkgType:     pkg.PhpPearPkg,\n\t\tpkgLanguage: pkg.PHP,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"memcached\": \"3.2.0\",\n\t\t},\n\t},\n\t{\n\t\tname:        \"find lua rock package\",\n\t\tpkgType:     pkg.LuaRocksPkg,\n\t\tpkgLanguage: pkg.Lua,\n\t\tpkgInfo: map[string]string{\n\t\t\t\"kong\": \"3.7.0-0\",\n\t\t},\n\t},\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/catalog_packages_test.go",
    "content": "package integration\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc BenchmarkImagePackageCatalogers(b *testing.B) {\n\t// get the fixture image tar file\n\tfixtureImageName := \"image-pkg-coverage\"\n\timagetest.GetFixtureImage(b, \"docker-archive\", fixtureImageName)\n\ttarPath := imagetest.GetFixtureImageTarPath(b, fixtureImageName)\n\n\t// get the source object for the image\n\ttheSource, err := syft.GetSource(context.Background(), tarPath, syft.DefaultGetSourceConfig().WithSources(\"docker-archive\"))\n\trequire.NoError(b, err)\n\tb.Cleanup(func() {\n\t\trequire.NoError(b, theSource.Close())\n\t})\n\n\t// build the SBOM\n\ts, err := syft.CreateSBOM(context.Background(), theSource, syft.DefaultCreateSBOMConfig())\n\n\t// did it work?\n\trequire.NoError(b, err)\n\trequire.NotNil(b, s)\n}\n\nfunc TestPkgCoverageImage(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-pkg-coverage\", source.SquashedScope)\n\n\tobservedLanguages := strset.New()\n\tdefinedLanguages := strset.New()\n\tfor _, l := range pkg.AllLanguages {\n\t\tdefinedLanguages.Add(l.String())\n\t}\n\n\t// for image scans we should not expect to see any of the following package types\n\tdefinedLanguages.Remove(pkg.Go.String())\n\tdefinedLanguages.Remove(pkg.Rust.String())\n\tdefinedLanguages.Remove(pkg.Dart.String())\n\tdefinedLanguages.Remove(pkg.Swift.String())\n\tdefinedLanguages.Remove(pkg.Swipl.String())\n\tdefinedLanguages.Remove(pkg.OCaml.String())\n\tdefinedLanguages.Remove(pkg.CPP.String())\n\tdefinedLanguages.Remove(pkg.Haskell.String())\n\tdefinedLanguages.Remove(pkg.Elixir.String())\n\tdefinedLanguages.Remove(pkg.Erlang.String())\n\n\tobservedPkgs := strset.New()\n\tdefinedPkgs := strset.New()\n\tfor _, p := range pkg.AllPkgs {\n\t\tdefinedPkgs.Add(string(p))\n\t}\n\n\t// for image scans we should not expect to see any of the following package types\n\tdefinedPkgs.Remove(string(pkg.KbPkg))\n\tdefinedPkgs.Remove(string(pkg.GoModulePkg))\n\tdefinedPkgs.Remove(string(pkg.RustPkg))\n\tdefinedPkgs.Remove(string(pkg.DartPubPkg))\n\tdefinedPkgs.Remove(string(pkg.ErlangOTPPkg))\n\tdefinedPkgs.Remove(string(pkg.CocoapodsPkg))\n\tdefinedPkgs.Remove(string(pkg.ConanPkg))\n\tdefinedPkgs.Remove(string(pkg.HackagePkg))\n\tdefinedPkgs.Remove(string(pkg.BinaryPkg))\n\tdefinedPkgs.Remove(string(pkg.BitnamiPkg))\n\tdefinedPkgs.Remove(string(pkg.GraalVMNativeImagePkg))\n\tdefinedPkgs.Remove(string(pkg.HexPkg))\n\tdefinedPkgs.Remove(string(pkg.LinuxKernelPkg))\n\tdefinedPkgs.Remove(string(pkg.LinuxKernelModulePkg))\n\tdefinedPkgs.Remove(string(pkg.SwiftPkg))\n\tdefinedPkgs.Remove(string(pkg.SwiplPackPkg))\n\tdefinedPkgs.Remove(string(pkg.OpamPkg))\n\tdefinedPkgs.Remove(string(pkg.GithubActionPkg))\n\tdefinedPkgs.Remove(string(pkg.GithubActionWorkflowPkg))\n\tdefinedPkgs.Remove(string(pkg.TerraformPkg))\n\tdefinedPkgs.Remove(string(pkg.PhpPeclPkg)) // we have coverage for pear instead\n\tdefinedPkgs.Remove(string(pkg.CondaPkg))\n\tdefinedPkgs.Remove(string(pkg.ModelPkg))\n\n\tvar cases []testCase\n\tcases = append(cases, commonTestCases...)\n\tcases = append(cases, imageOnlyTestCases...)\n\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tassertPackages(t, sbom, c, observedLanguages, observedPkgs)\n\t\t})\n\t}\n\n\tobservedLanguages.Remove(pkg.UnknownLanguage.String())\n\tdefinedLanguages.Remove(pkg.UnknownLanguage.String())\n\tobservedPkgs.Remove(string(pkg.UnknownPkg))\n\tdefinedPkgs.Remove(string(pkg.UnknownPkg))\n\n\tmissingLang := strset.Difference(definedLanguages, observedLanguages)\n\textraLang := strset.Difference(observedLanguages, definedLanguages)\n\n\t// ensure that integration test cases stay in sync with the available catalogers\n\tif missingLang.Size() > 0 || extraLang.Size() > 0 {\n\t\tt.Errorf(\"language coverage incomplete (languages=%d, coverage=%d)\", definedLanguages.Size(), observedLanguages.Size())\n\t\tt.Errorf(\"unexpected languages: %s\", extraLang.List())\n\t\tt.Errorf(\"missing languages: %s\", missingLang.List())\n\t}\n\n\tmissingPkgs := strset.Difference(definedPkgs, observedPkgs)\n\textraPkgs := strset.Difference(observedPkgs, definedPkgs)\n\n\tif missingPkgs.Size() > 0 || extraPkgs.Size() > 0 {\n\t\tt.Errorf(\"package coverage incomplete (packages=%d, coverage=%d)\", definedPkgs.Size(), observedPkgs.Size())\n\t\tt.Errorf(\"unexpected packages: %s\", extraPkgs.List())\n\t\tt.Errorf(\"missing packages: %s\", missingPkgs.List())\n\t}\n}\n\nfunc TestPkgCoverageDirectory(t *testing.T) {\n\tsbom, _ := catalogDirectory(t, \"testdata/image-pkg-coverage\")\n\n\tobservedLanguages := strset.New()\n\tdefinedLanguages := strset.New()\n\tfor _, l := range pkg.AllLanguages {\n\t\tdefinedLanguages.Add(l.String())\n\t}\n\n\tobservedPkgs := strset.New()\n\tdefinedPkgs := strset.New()\n\tfor _, p := range pkg.AllPkgs {\n\t\tdefinedPkgs.Add(string(p))\n\t}\n\n\tvar cases []testCase\n\tcases = append(cases, commonTestCases...)\n\tcases = append(cases, dirOnlyTestCases...)\n\n\tfor _, test := range cases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassertPackages(t, sbom, test, observedLanguages, observedPkgs)\n\t\t})\n\t}\n\n\tobservedLanguages.Remove(pkg.UnknownLanguage.String())\n\tdefinedLanguages.Remove(pkg.UnknownLanguage.String())\n\tdefinedLanguages.Remove(pkg.R.String())\n\tobservedPkgs.Remove(string(pkg.UnknownPkg))\n\tdefinedPkgs.Remove(string(pkg.BinaryPkg))\n\tdefinedPkgs.Remove(string(pkg.BitnamiPkg))\n\tdefinedPkgs.Remove(string(pkg.GraalVMNativeImagePkg))\n\tdefinedPkgs.Remove(string(pkg.LinuxKernelPkg))\n\tdefinedPkgs.Remove(string(pkg.LinuxKernelModulePkg))\n\tdefinedPkgs.Remove(string(pkg.Rpkg))\n\tdefinedPkgs.Remove(string(pkg.UnknownPkg))\n\tdefinedPkgs.Remove(string(pkg.CondaPkg))\n\tdefinedPkgs.Remove(string(pkg.PhpPeclPkg)) // this is covered as pear packages\n\tdefinedPkgs.Remove(string(pkg.ModelPkg))\n\n\t// for directory scans we should not expect to see any of the following package types\n\tdefinedPkgs.Remove(string(pkg.KbPkg))\n\n\t// ensure that integration test commonTestCases stay in sync with the available catalogers\n\tif observedLanguages.Size() < definedLanguages.Size() {\n\t\tt.Errorf(\"language coverage incomplete (languages=%d, coverage=%d)\", definedLanguages.Size(), observedLanguages.Size())\n\t}\n\n\tif observedPkgs.Size() < definedPkgs.Size() {\n\t\tt.Errorf(\"package coverage incomplete (packages=%d, coverage=%d)\", definedPkgs.Size(), observedPkgs.Size())\n\t}\n}\n\nfunc assertPackages(t *testing.T, sbom sbom.SBOM, test testCase, observedLanguages *strset.Set, observedPkgs *strset.Set) {\n\tactualPkgCount := 0\n\n\tfor actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {\n\t\tobservedLanguages.Add(actualPkg.Language.String())\n\t\tobservedPkgs.Add(string(actualPkg.Type))\n\n\t\texpectedVersion, ok := test.pkgInfo[actualPkg.Name]\n\t\tif !ok {\n\t\t\tt.Errorf(\"unexpected package found: %s\", actualPkg.Name)\n\t\t}\n\n\t\tif expectedVersion != actualPkg.Version {\n\t\t\tt.Errorf(\"unexpected package version (pkg=%s): %s\", actualPkg.Name, actualPkg.Version)\n\t\t}\n\n\t\tvar foundLang bool\n\t\tfor _, lang := range strings.Split(test.pkgLanguage.String(), \",\") {\n\t\t\tif actualPkg.Language.String() == lang {\n\t\t\t\tfoundLang = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !foundLang {\n\t\t\tt.Errorf(\"bad language (pkg=%+v): %+v\", actualPkg.Name, actualPkg.Language)\n\t\t}\n\n\t\tif actualPkg.Type != test.pkgType {\n\t\t\tt.Errorf(\"bad package type (pkg=%+v): %+v\", actualPkg.Name, actualPkg.Type)\n\t\t}\n\t\tactualPkgCount++\n\n\t\t// all packages should have at least one location associated with it, and of those locations at least one should be primary evidence\n\t\tlocs := actualPkg.Locations.ToSlice()\n\t\tassert.NotEmpty(t, locs, \"package %q has no locations (type=%q)\", actualPkg.Name, actualPkg.Type)\n\t\tvar primaryEvidenceFound bool\n\t\tfor _, l := range locs {\n\t\t\tif _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {\n\t\t\t\tt.Errorf(\"missing evidence annotation (pkg=%s type=%s)\", actualPkg.Name, actualPkg.Type)\n\t\t\t}\n\t\t\tif l.Annotations[pkg.EvidenceAnnotationKey] == pkg.PrimaryEvidenceAnnotation {\n\t\t\t\tprimaryEvidenceFound = true\n\t\t\t}\n\t\t}\n\t\tassert.True(t, primaryEvidenceFound, \"no primary evidence found for package %q\", actualPkg.Name)\n\t}\n\n\tif actualPkgCount != len(test.pkgInfo)+test.duplicates {\n\t\tfor actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {\n\t\t\tt.Log(\"   \", actualPkg)\n\t\t}\n\t\tt.Fatalf(\"unexpected package count: %d!=%d\", actualPkgCount, len(test.pkgInfo))\n\t}\n}\n\nfunc TestPkgCoverageImage_HasEvidence(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-pkg-coverage\", source.SquashedScope)\n\n\tvar cases []testCase\n\tcases = append(cases, commonTestCases...)\n\tcases = append(cases, imageOnlyTestCases...)\n\n\tpkgTypesMissingEvidence := strset.New()\n\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tfor a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {\n\t\t\t\tassert.NotEmpty(t, a.Locations.ToSlice(), \"package %q has no locations (type=%q)\", a.Name, a.Type)\n\t\t\t\tfor _, l := range a.Locations.ToSlice() {\n\t\t\t\t\tif _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {\n\t\t\t\t\t\tpkgTypesMissingEvidence.Add(string(a.Type))\n\t\t\t\t\t\tt.Errorf(\"missing evidence annotation (pkg=%s type=%s)\", a.Name, a.Type)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\tif pkgTypesMissingEvidence.Size() > 0 {\n\t\tt.Log(\"Package types missing evidence annotations (img resolver): \", pkgTypesMissingEvidence.List())\n\t}\n}\n\nfunc TestPkgCoverageDirectory_HasEvidence(t *testing.T) {\n\tsbom, _ := catalogDirectory(t, \"testdata/image-pkg-coverage\")\n\n\tvar cases []testCase\n\tcases = append(cases, commonTestCases...)\n\tcases = append(cases, imageOnlyTestCases...)\n\n\tpkgTypesMissingEvidence := strset.New()\n\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tfor a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {\n\t\t\t\tassert.NotEmpty(t, a.Locations.ToSlice(), \"package %q has no locations (type=%q)\", a.Name, a.Type)\n\t\t\t\tfor _, l := range a.Locations.ToSlice() {\n\t\t\t\t\tif _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {\n\t\t\t\t\t\tpkgTypesMissingEvidence.Add(string(a.Type))\n\t\t\t\t\t\tt.Errorf(\"missing evidence annotation (pkg=%s type=%s)\", a.Name, a.Type)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\tif pkgTypesMissingEvidence.Size() > 0 {\n\t\tt.Log(\"Package types missing evidence annotations (dir resolver): \", pkgTypesMissingEvidence.List())\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/distro_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestDistroImage(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-distro-id\", source.SquashedScope)\n\n\texpected := &linux.Release{\n\t\tPrettyName: \"BusyBox v1.31.1\",\n\t\tName:       \"busybox\",\n\t\tID:         \"busybox\",\n\t\tIDLike:     []string{\"busybox\"},\n\t\tVersion:    \"1.31.1\",\n\t\tVersionID:  \"1.31.1\",\n\t}\n\n\tassert.Equal(t, expected, sbom.Artifacts.LinuxDistribution)\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/encode_decode_cycle_test.go",
    "content": "package integration\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// TestEncodeDecodeEncodeCycleComparison is testing for differences in how SBOM documents get encoded on multiple cycles.\n// By encoding and decoding the sbom we can compare the differences between the set of resulting objects. However,\n// this requires specific comparisons being done, and select redactions/omissions being made. Additionally, there are\n// already unit tests on each format encoder-decoder for properly functioning comparisons in depth, so there is no need\n// to do an object-to-object comparison. For this reason this test focuses on a bytes-to-bytes comparison after an\n// encode-decode-encode loop which will detect lossy behavior in both directions.\nfunc TestEncodeDecodeEncodeCycleComparison(t *testing.T) {\n\t// use second image for relationships\n\timages := []string{\n\t\t\"image-pkg-coverage\",\n\t\t\"image-owning-package\",\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tredactor func(in []byte) []byte\n\t\tjson     bool\n\t}{\n\t\t{\n\t\t\tname: syftjson.ID.String(),\n\t\t\tredactor: func(in []byte) []byte {\n\t\t\t\t// no redactions necessary\n\t\t\t\treturn in\n\t\t\t},\n\t\t\tjson: true,\n\t\t},\n\t\t// TODO: ignoring the `ref` field though does create stable results to compare, but the SBOM is fundamentally gutted and not worth comparing (find a better redaction or compare method)\n\t\t//{\n\t\t//\tname: cyclonedxjson.ID.String(),\n\t\t//\tredactor: func(in []byte) []byte {\n\t\t//\t\t// unstable values\n\t\t//\t\tin = regexp.MustCompile(`\"(timestamp|serialNumber|bom-ref|ref)\":\\s*\"(\\n|[^\"])+\"`).ReplaceAll(in, []byte(`\"$1\": \"redacted\"`))\n\t\t//\t\tin = regexp.MustCompile(`\"(dependsOn)\":\\s*\\[(?:\\s|[^]])+]`).ReplaceAll(in, []byte(`\"$1\": []`))\n\t\t//\t\treturn in\n\t\t//\t},\n\t\t//\tjson: true,\n\t\t//},\n\t\t//{\n\t\t//\tname: cyclonedxxml.ID.String(),\n\t\t//\tredactor: func(in []byte) []byte {\n\t\t//\t\t// unstable values\n\t\t//\t\tin = regexp.MustCompile(`(serialNumber|bom-ref|ref)=\"[^\"]+\"`).ReplaceAll(in, []byte{})\n\t\t//\t\tin = regexp.MustCompile(`<timestamp>[^<]+</timestamp>`).ReplaceAll(in, []byte{})\n\t\t//\n\t\t//\t\treturn in\n\t\t//\t},\n\t\t//},\n\t}\n\n\topts := options.DefaultOutput()\n\trequire.NoError(t, opts.PostLoad())\n\tencoderList, err := opts.Encoders()\n\trequire.NoError(t, err)\n\n\tencoders := format.NewEncoderCollection(encoderList...)\n\tdecoders := format.NewDecoderCollection(format.Decoders()...)\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfor _, image := range images {\n\t\t\t\toriginalSBOM, _ := catalogFixtureImage(t, image, source.SquashedScope)\n\t\t\t\t// we need a way to inject supplier into this test\n\t\t\t\t// supplier is not available as part of the SBOM Config API since the flag\n\t\t\t\t// is used in conjunction with the SourceConfig which is injected into generateSBOM during scan\n\t\t\t\toriginalSBOM.Source.Supplier = \"anchore\"\n\t\t\t\tf := encoders.GetByString(test.name)\n\t\t\t\trequire.NotNil(t, f)\n\n\t\t\t\tvar buff1 bytes.Buffer\n\t\t\t\terr := f.Encode(&buff1, originalSBOM)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tnewSBOM, formatID, formatVersion, err := decoders.Decode(bytes.NewReader(buff1.Bytes()))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, f.ID(), formatID)\n\t\t\t\trequire.Equal(t, f.Version(), formatVersion)\n\n\t\t\t\tvar buff2 bytes.Buffer\n\t\t\t\terr = f.Encode(&buff2, *newSBOM)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tby1 := buff1.Bytes()\n\t\t\t\tby2 := buff2.Bytes()\n\t\t\t\tif test.redactor != nil {\n\t\t\t\t\tby1 = test.redactor(by1)\n\t\t\t\t\tby2 = test.redactor(by2)\n\t\t\t\t}\n\n\t\t\t\tif test.json {\n\t\t\t\t\ts1 := string(by1)\n\t\t\t\t\ts2 := string(by2)\n\t\t\t\t\tif diff := cmp.Diff(s1, s2); diff != \"\" {\n\t\t\t\t\t\tt.Errorf(\"Encode/Decode mismatch (-want +got) [image %q]:\\n%s\", image, diff)\n\t\t\t\t\t}\n\t\t\t\t} else if !assert.True(t, bytes.Equal(by1, by2)) {\n\t\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\t\tdiffs := dmp.DiffMain(string(by1), string(by2), true)\n\t\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t\t}\n\n\t\t\t\t// write raw IMAGE@NAME-start and IMAGE@NAME-finish to files within the results dir\n\t\t\t\t// ... this is helpful for debugging\n\t\t\t\trequire.NoError(t, os.MkdirAll(\"results\", 0700))\n\n\t\t\t\tsuffix := \"sbom\"\n\t\t\t\tswitch {\n\t\t\t\tcase strings.Contains(test.name, \"json\"):\n\t\t\t\t\tsuffix = \"json\"\n\t\t\t\tcase strings.Contains(test.name, \"xml\"):\n\t\t\t\t\tsuffix = \"xml\"\n\t\t\t\t}\n\n\t\t\t\trequire.NoError(t, os.WriteFile(filepath.Join(\"results\", image+\"@\"+test.name+\"-start.\"+suffix), by1, 0600))\n\t\t\t\trequire.NoError(t, os.WriteFile(filepath.Join(\"results\", image+\"@\"+test.name+\"-finish.\"+suffix), by2, 0600))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/files_test.go",
    "content": "package integration\n\nimport (\n\t\"crypto\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/clio\"\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filecontent\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestFileCataloging_Default(t *testing.T) {\n\tcfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{})\n\tcfg = cfg.WithFilesConfig(filecataloging.DefaultConfig())\n\tsbom, _ := catalogDirectoryWithConfig(t, \"testdata/files\", cfg)\n\n\tvar metadata map[file.Coordinates]file.Metadata\n\n\tvar digests map[file.Coordinates][]file.Digest\n\n\tvar contents map[file.Coordinates]string\n\n\tassertFileData(t, metadata, digests, contents, sbom)\n}\n\nfunc TestFileCataloging_AllFiles(t *testing.T) {\n\tcfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{})\n\tcfg = cfg.WithFilesConfig(filecataloging.Config{\n\t\tSelection: file.AllFilesSelection,\n\t\tHashers: []crypto.Hash{\n\t\t\tcrypto.SHA256,\n\t\t},\n\t\tContent: filecontent.Config{\n\t\t\t// this is enough to potentially capture a/file, a-small-file, a-symlink-to-a-small-file, and a-symlink-to-file\n\t\t\t// but the size of a/file will cause it to be filtered, and the symlinks will not be included since\n\t\t\t// they are not regular files\n\t\t\tGlobs:              []string{\"**/*file\"},\n\t\t\tSkipFilesAboveSize: 30,\n\t\t},\n\t})\n\tsbom, _ := catalogDirectoryWithConfig(t, \"testdata/files\", cfg)\n\n\tpwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\ttestPath := func(path string) string {\n\t\treturn filepath.Join(pwd, \"testdata/files\", path)\n\t}\n\n\tmetadata := map[file.Coordinates]file.Metadata{\n\t\t{RealPath: \"\"}: {\n\t\t\tPath: testPath(\"\"),\n\t\t\tType: stereoscopeFile.TypeDirectory,\n\t\t},\n\t\t{RealPath: \"/somewhere\"}: {\n\t\t\tPath: testPath(\"/somewhere\"),\n\t\t\tType: stereoscopeFile.TypeDirectory,\n\t\t},\n\t\t{RealPath: \"/somewhere/there\"}: {\n\t\t\tPath: testPath(\"/somewhere/there\"),\n\t\t\tType: stereoscopeFile.TypeDirectory,\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is\"}: {\n\t\t\tPath: testPath(\"/somewhere/there/is\"),\n\t\t\tType: stereoscopeFile.TypeDirectory,\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a\"}: {\n\t\t\tPath: testPath(\"/somewhere/there/is/a\"),\n\t\t\tType: stereoscopeFile.TypeDirectory,\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a-small-file\"}: {\n\t\t\tPath:     testPath(\"/somewhere/there/is/a-small-file\"),\n\t\t\tType:     stereoscopeFile.TypeRegular,\n\t\t\tMIMEType: \"text/plain\",\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a-symlink-to-a-small-file\"}: {\n\t\t\tPath:            testPath(\"/somewhere/there/is/a-symlink-to-a-small-file\"),\n\t\t\tLinkDestination: testPath(\"/somewhere/there/is/a-small-file\"),\n\t\t\tType:            stereoscopeFile.TypeSymLink,\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a-symlink-to-file\"}: {\n\t\t\tPath:            testPath(\"/somewhere/there/is/a-symlink-to-file\"),\n\t\t\tLinkDestination: testPath(\"/somewhere/there/is/a/file\"),\n\t\t\tType:            stereoscopeFile.TypeSymLink,\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a/file\"}: {\n\t\t\tPath:     testPath(\"/somewhere/there/is/a/file\"),\n\t\t\tType:     stereoscopeFile.TypeRegular,\n\t\t\tMIMEType: \"text/plain\",\n\t\t},\n\t}\n\n\tdigests := map[file.Coordinates][]file.Digest{\n\t\t{RealPath: \"/somewhere/there/is/a-small-file\"}: {\n\t\t\tfile.Digest{Algorithm: \"sha256\", Value: \"672c23470e4ce99cf270bb63ae66ad2b8a80aa19090c40e59fbb1229a4ab661a\"},\n\t\t},\n\t\t{RealPath: \"/somewhere/there/is/a/file\"}: {\n\t\t\tfile.Digest{Algorithm: \"sha256\", Value: \"00dac26d6d94353ac0d92bb9640cba76f82f5ca8707bb845ecdc574bd002348e\"},\n\t\t},\n\t}\n\n\tcontents := map[file.Coordinates]string{\n\t\t{RealPath: \"/somewhere/there/is/a-small-file\"}: \"c29tZSBjb250ZW50cyE=\",\n\t}\n\n\tassertFileData(t, metadata, digests, contents, sbom)\n\n}\n\nfunc assertFileData(t testing.TB, metadata map[file.Coordinates]file.Metadata, digests map[file.Coordinates][]file.Digest, contents map[file.Coordinates]string, sbom sbom.SBOM) {\n\tmetadataCompareOpts := cmp.Options{\n\t\tcmp.Comparer(func(x, y file.Metadata) bool {\n\t\t\tif x.Path != y.Path {\n\t\t\t\tt.Logf(\"path mismatch: %s != %s\", x.Path, y.Path)\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif x.Type != y.Type {\n\t\t\t\tt.Logf(\"type mismatch: %s != %s\", x.Type, y.Type)\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif x.LinkDestination != y.LinkDestination {\n\t\t\t\tt.Logf(\"link destination mismatch: %s != %s\", x.LinkDestination, y.LinkDestination)\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif x.MIMEType != y.MIMEType {\n\t\t\t\tt.Logf(\"mime type mismatch: %s != %s\", x.MIMEType, y.MIMEType)\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}),\n\t}\n\n\tif d := cmp.Diff(metadata, sbom.Artifacts.FileMetadata, metadataCompareOpts...); d != \"\" {\n\t\tt.Errorf(\"unexpected metadata (-want +got):\\n%s\", d)\n\t}\n\n\tassert.Equal(t, digests, sbom.Artifacts.FileDigests, \"different digests detected\")\n\tassert.Equal(t, contents, sbom.Artifacts.FileContents, \"different contents detected\")\n\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/go_compiler_detection_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestGolangCompilerDetection(t *testing.T) {\n\ttests := []struct {\n\t\tname              string\n\t\timage             string\n\t\texpectedCompilers []string\n\t\texpectedCPE       []cpe.CPE\n\t\texpectedPURL      []string\n\t}{\n\t\t{\n\t\t\tname:              \"syft can detect a single golang compiler given the golang base image\",\n\t\t\timage:             \"image-golang-compiler\",\n\t\t\texpectedCompilers: []string{\"go1.18.10\"},\n\t\t\texpectedCPE:       []cpe.CPE{cpe.Must(\"cpe:2.3:a:golang:go:1.18.10:-:*:*:*:*:*:*\", cpe.GeneratedSource)},\n\t\t\texpectedPURL:      []string{\"pkg:golang/stdlib@1.18.10\"},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsbom, _ := catalogFixtureImage(t, tt.image, source.SquashedScope)\n\t\t\tpackages := sbom.Artifacts.Packages.PackagesByName(\"stdlib\")\n\n\t\t\tfoundCompilerVersions := make(map[string]struct{})\n\t\t\tfoundCPE := make(map[cpe.CPE]struct{})\n\t\t\tfoundPURL := make(map[string]struct{})\n\n\t\t\tfor _, pkg := range packages {\n\t\t\t\tfoundCompilerVersions[pkg.Version] = struct{}{}\n\t\t\t\tfoundPURL[pkg.PURL] = struct{}{}\n\t\t\t\tfor _, c := range pkg.CPEs {\n\t\t\t\t\tfoundCPE[c] = struct{}{}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, expectedCompiler := range tt.expectedCompilers {\n\t\t\t\tif _, ok := foundCompilerVersions[expectedCompiler]; !ok {\n\t\t\t\t\tt.Fatalf(\"expected %s version; not found in found compilers: %v\", expectedCompiler, foundCompilerVersions)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, expectedPURL := range tt.expectedPURL {\n\t\t\t\tif _, ok := foundPURL[expectedPURL]; !ok {\n\t\t\t\t\tt.Fatalf(\"expected %s purl; not found in found purl: %v\", expectedPURL, expectedPURLs)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, expectedCPE := range tt.expectedCPE {\n\t\t\t\tif _, ok := foundCPE[expectedCPE]; !ok {\n\t\t\t\t\tt.Fatalf(\"expected %s version; not found in found cpe: %v\", expectedCPE, expectedCPE)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/java_purl_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestJavaPURLs(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-test-java-purls\", source.SquashedScope)\n\tfound := make(map[string]string)\n\tfor _, p := range sbom.Artifacts.Packages.Sorted() {\n\t\tif p.Type != pkg.JavaPkg && p.Type != pkg.JenkinsPluginPkg {\n\t\t\tcontinue\n\t\t}\n\n\t\tif metadata, ok := p.Metadata.(pkg.JavaArchive); ok {\n\t\t\tif _, ok := noAssertion[metadata.VirtualPath]; ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfound[metadata.VirtualPath] = p.PURL\n\t\t}\n\t}\n\n\tif d := cmp.Diff(expectedPURLs, found); d != \"\" {\n\t\tt.Errorf(\"unexpected purl values:\\n%s\", d)\n\t}\n}\n\n// This is for artifacts that either don't have a known groupid/artifactid\n// since they aren't available on a known maven repository, or where syft is currently\n// generating the incorrect PURL\nvar noAssertion = map[string]string{\n\t// These are not known to exist on any public maven repo, so no real PURL should be asserted\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/trilead-ssh2-build-217-jenkins-27.jar\": \"pkg:maven/trilead-ssh2-build/trilead-ssh2-build@217-jenkins-27\",\n\t// possibly org.gradle as groupid for these, but unclear\n\t\"/packages/gradle-7.1.1/lib/gradle-api-metadata-7.1.1.jar\":                                                    \"pkg:maven/gradle-api-metadata/gradle-api-metadata@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-base-annotations-7.1.1.jar\":                                                \"pkg:maven/gradle-base-annotations/gradle-base-annotations@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-base-services-7.1.1.jar\":                                                   \"pkg:maven/gradle-base-services/gradle-base-services@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-base-services-groovy-7.1.1.jar\":                                            \"pkg:maven/gradle-base-services-groovy/gradle-base-services-groovy@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-bootstrap-7.1.1.jar\":                                                       \"pkg:maven/gradle-bootstrap/gradle-bootstrap@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-cache-7.1.1.jar\":                                                     \"pkg:maven/gradle-build-cache/gradle-build-cache@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-cache-base-7.1.1.jar\":                                                \"pkg:maven/gradle-build-cache-base/gradle-build-cache-base@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-cache-packaging-7.1.1.jar\":                                           \"pkg:maven/gradle-build-cache-packaging/gradle-build-cache-packaging@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-events-7.1.1.jar\":                                                    \"pkg:maven/gradle-build-events/gradle-build-events@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-operations-7.1.1.jar\":                                                \"pkg:maven/gradle-build-operations/gradle-build-operations@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-build-option-7.1.1.jar\":                                                    \"pkg:maven/gradle-build-option/gradle-build-option@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-cli-7.1.1.jar\":                                                             \"pkg:maven/gradle-cli/gradle-cli@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-core-7.1.1.jar\":                                                            \"pkg:maven/gradle-core/gradle-core@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-core-api-7.1.1.jar\":                                                        \"pkg:maven/gradle-core-api/gradle-core-api@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-data-structures-7.1.1.jar\":                                                 \"pkg:maven/gradle-data-structures/gradle-data-structures@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-execution-7.1.1.jar\":                                                       \"pkg:maven/gradle-execution/gradle-execution@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-file-collections-7.1.1.jar\":                                                \"pkg:maven/gradle-file-collections/gradle-file-collections@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-file-temp-7.1.1.jar\":                                                       \"pkg:maven/gradle-file-temp/gradle-file-temp@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-file-watching-7.1.1.jar\":                                                   \"pkg:maven/gradle-file-watching/gradle-file-watching@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-files-7.1.1.jar\":                                                           \"pkg:maven/gradle-files/gradle-files@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-hashing-7.1.1.jar\":                                                         \"pkg:maven/gradle-hashing/gradle-hashing@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-installation-beacon-7.1.1.jar\":                                             \"pkg:maven/gradle-installation-beacon/gradle-installation-beacon@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-jvm-services-7.1.1.jar\":                                                    \"pkg:maven/gradle-jvm-services/gradle-jvm-services@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-kotlin-dsl-7.1.1.jar\":                                                      \"pkg:maven/gradle-kotlin-dsl/gradle-kotlin-dsl@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-kotlin-dsl-tooling-models-7.1.1.jar\":                                       \"pkg:maven/gradle-kotlin-dsl-tooling-models/gradle-kotlin-dsl-tooling-models@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-launcher-7.1.1.jar\":                                                        \"pkg:maven/org.gradle.launcher.GradleMain/gradle-launcher@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-logging-7.1.1.jar\":                                                         \"pkg:maven/gradle-logging/gradle-logging@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-messaging-7.1.1.jar\":                                                       \"pkg:maven/gradle-messaging/gradle-messaging@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-model-core-7.1.1.jar\":                                                      \"pkg:maven/gradle-model-core/gradle-model-core@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-model-groovy-7.1.1.jar\":                                                    \"pkg:maven/gradle-model-groovy/gradle-model-groovy@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-native-7.1.1.jar\":                                                          \"pkg:maven/gradle-native/gradle-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-normalization-java-7.1.1.jar\":                                              \"pkg:maven/gradle-normalization-java/gradle-normalization-java@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-persistent-cache-7.1.1.jar\":                                                \"pkg:maven/gradle-persistent-cache/gradle-persistent-cache@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-problems-7.1.1.jar\":                                                        \"pkg:maven/gradle-problems/gradle-problems@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-process-services-7.1.1.jar\":                                                \"pkg:maven/gradle-process-services/gradle-process-services@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-resources-7.1.1.jar\":                                                       \"pkg:maven/gradle-resources/gradle-resources@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-runtime-api-info-7.1.1.jar\":                                                \"pkg:maven/gradle-runtime-api-info/gradle-runtime-api-info@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-snapshots-7.1.1.jar\":                                                       \"pkg:maven/gradle-snapshots/gradle-snapshots@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-tooling-api-7.1.1.jar\":                                                     \"pkg:maven/gradle-tooling-api/gradle-tooling-api@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-worker-processes-7.1.1.jar\":                                                \"pkg:maven/gradle-worker-processes/gradle-worker-processes@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-wrapper-7.1.1.jar\":                                                         \"pkg:maven/gradle-wrapper/gradle-wrapper@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/gradle-wrapper-7.1.1.jar:gradle-wrapper.jar\":                                      \"pkg:maven/gradle-wrapper/gradle-wrapper\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-antlr-7.1.1.jar\":                                                   \"pkg:maven/gradle-antlr/gradle-antlr@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-build-cache-http-7.1.1.jar\":                                        \"pkg:maven/gradle-build-cache-http/gradle-build-cache-http@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-build-init-7.1.1.jar\":                                              \"pkg:maven/gradle-build-init/gradle-build-init@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-build-profile-7.1.1.jar\":                                           \"pkg:maven/gradle-build-profile/gradle-build-profile@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-code-quality-7.1.1.jar\":                                            \"pkg:maven/gradle-code-quality/gradle-code-quality@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-composite-builds-7.1.1.jar\":                                        \"pkg:maven/gradle-composite-builds/gradle-composite-builds@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-configuration-cache-7.1.1.jar\":                                     \"pkg:maven/gradle-configuration-cache/gradle-configuration-cache@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-dependency-management-7.1.1.jar\":                                   \"pkg:maven/gradle-dependency-management/gradle-dependency-management@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-diagnostics-7.1.1.jar\":                                             \"pkg:maven/gradle-diagnostics/gradle-diagnostics@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-ear-7.1.1.jar\":                                                     \"pkg:maven/gradle-ear/gradle-ear@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-enterprise-7.1.1.jar\":                                              \"pkg:maven/gradle-enterprise/gradle-enterprise@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-ide-7.1.1.jar\":                                                     \"pkg:maven/gradle-ide/gradle-ide@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-ide-native-7.1.1.jar\":                                              \"pkg:maven/gradle-ide-native/gradle-ide-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-ivy-7.1.1.jar\":                                                     \"pkg:maven/gradle-ivy/gradle-ivy@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-jacoco-7.1.1.jar\":                                                  \"pkg:maven/gradle-jacoco/gradle-jacoco@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-java-compiler-plugin-7.1.1.jar\":                                    \"pkg:maven/gradle-java-compiler-plugin/gradle-java-compiler-plugin@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-kotlin-dsl-provider-plugins-7.1.1.jar\":                             \"pkg:maven/gradle-kotlin-dsl-provider-plugins/gradle-kotlin-dsl-provider-plugins@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-kotlin-dsl-tooling-builders-7.1.1.jar\":                             \"pkg:maven/gradle-kotlin-dsl-tooling-builders/gradle-kotlin-dsl-tooling-builders@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-language-groovy-7.1.1.jar\":                                         \"pkg:maven/gradle-language-groovy/gradle-language-groovy@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-language-java-7.1.1.jar\":                                           \"pkg:maven/gradle-language-java/gradle-language-java@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-language-jvm-7.1.1.jar\":                                            \"pkg:maven/gradle-language-jvm/gradle-language-jvm@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-language-native-7.1.1.jar\":                                         \"pkg:maven/gradle-language-native/gradle-language-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-maven-7.1.1.jar\":                                                   \"pkg:maven/gradle-maven/gradle-maven@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-platform-base-7.1.1.jar\":                                           \"pkg:maven/gradle-platform-base/gradle-platform-base@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-platform-jvm-7.1.1.jar\":                                            \"pkg:maven/gradle-platform-jvm/gradle-platform-jvm@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-platform-native-7.1.1.jar\":                                         \"pkg:maven/gradle-platform-native/gradle-platform-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-plugin-development-7.1.1.jar\":                                      \"pkg:maven/gradle-plugin-development/gradle-plugin-development@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-plugin-use-7.1.1.jar\":                                              \"pkg:maven/gradle-plugin-use/gradle-plugin-use@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-plugins-7.1.1.jar\":                                                 \"pkg:maven/gradle-plugins/gradle-plugins@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-publish-7.1.1.jar\":                                                 \"pkg:maven/gradle-publish/gradle-publish@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-reporting-7.1.1.jar\":                                               \"pkg:maven/gradle-reporting/gradle-reporting@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-resources-gcs-7.1.1.jar\":                                           \"pkg:maven/gradle-resources-gcs/gradle-resources-gcs@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-resources-http-7.1.1.jar\":                                          \"pkg:maven/gradle-resources-http/gradle-resources-http@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-resources-s3-7.1.1.jar\":                                            \"pkg:maven/gradle-resources-s3/gradle-resources-s3@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-resources-sftp-7.1.1.jar\":                                          \"pkg:maven/gradle-resources-sftp/gradle-resources-sftp@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-scala-7.1.1.jar\":                                                   \"pkg:maven/gradle-scala/gradle-scala@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-security-7.1.1.jar\":                                                \"pkg:maven/gradle-security/gradle-security@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-signing-7.1.1.jar\":                                                 \"pkg:maven/gradle-signing/gradle-signing@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-test-kit-7.1.1.jar\":                                                \"pkg:maven/gradle-test-kit/gradle-test-kit@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-testing-base-7.1.1.jar\":                                            \"pkg:maven/gradle-testing-base/gradle-testing-base@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-testing-junit-platform-7.1.1.jar\":                                  \"pkg:maven/gradle-testing-junit-platform/gradle-testing-junit-platform@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-testing-jvm-7.1.1.jar\":                                             \"pkg:maven/gradle-testing-jvm/gradle-testing-jvm@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-testing-native-7.1.1.jar\":                                          \"pkg:maven/gradle-testing-native/gradle-testing-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-tooling-api-builders-7.1.1.jar\":                                    \"pkg:maven/gradle-tooling-api-builders/gradle-tooling-api-builders@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-tooling-native-7.1.1.jar\":                                          \"pkg:maven/gradle-tooling-native/gradle-tooling-native@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-version-control-7.1.1.jar\":                                         \"pkg:maven/gradle-version-control/gradle-version-control@7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gradle-workers-7.1.1.jar\":                                                 \"pkg:maven/gradle-workers/gradle-workers@7.1.1\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/jopenssl.jar\":                        \"pkg:maven/jopenssl/jopenssl\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/jopenssl.jar:rubygems:jruby-openssl\": \"pkg:maven/rubygems/jruby-openssl@0.9.21\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/json/ext/parser.jar\":                 \"pkg:maven/parser/parser\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/json/ext/generator.jar\":              \"pkg:maven/generator/generator\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/psych.jar\":                           \"pkg:maven/psych/psych\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/racc/cparse-jruby.jar\":               \"pkg:maven/cparse-jruby/cparse-jruby\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar\":                        \"pkg:maven/readline/readline\",\n\t\"/packages/org.eclipse.ant.core-3.7.0.jar:lib/antsupportlib.jar\":                                              \"pkg:maven/antsupportlib/antsupportlib\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar\":                                                        \"pkg:maven/sdk/sdk@3.0\",\n\n\t// syft generates incorrect purls\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/jbcrypt-1.0.0.jar\":        \"pkg:maven/org.connectbot/jbcrypt@1.0.0\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/tink-1.5.0.jar\":           \"pkg:maven/com.google.crypto.tink/tink@1.5.0\",\n\t\"/packages/gradle-7.1.1/lib/fastutil-8.5.2-min.jar\":                                         \"pkg:maven/it.unimi.dsi/fastutil@8.5.2-min\",\n\t\"/packages/gradle-7.1.1/lib/file-events-0.22-milestone-16.jar\":                              \"pkg:maven/net.rubygrapefruit/file-events@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-linux-aarch64-0.22-milestone-16.jar\":                \"pkg:maven/net.rubygrapefruit/file-events-linux-aarch64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-linux-amd64-0.22-milestone-16.jar\":                  \"pkg:maven/net.rubygrapefruit/file-events-linux-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-osx-aarch64-0.22-milestone-16.jar\":                  \"pkg:maven/net.rubygrapefruit/file-events-osx-aarch64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-osx-amd64-0.22-milestone-16.jar\":                    \"pkg:maven/net.rubygrapefruit/file-events-osx-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-windows-amd64-0.22-milestone-16.jar\":                \"pkg:maven/net.rubygrapefruit/file-events-windows-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-windows-amd64-min-0.22-milestone-16.jar\":            \"pkg:maven/net.rubygrapefruit/file-events-windows-amd64-min@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-windows-i386-0.22-milestone-16.jar\":                 \"pkg:maven/net.rubygrapefruit/file-events-windows-i386@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/file-events-windows-i386-min-0.22-milestone-16.jar\":             \"pkg:maven/net.rubygrapefruit/file-events-windows-i386-min@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/hamcrest-core-1.3.jar\":                                          \"pkg:maven/org.hamcrest/hamcrest-core@1.3\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-compiler-embeddable-1.4.31-patched-for-gradle-7.1.1.jar\": \"pkg:maven/org.jetbrains.kotlin/kotlin-compiler-embeddable@1.4.31-patched-for-gradle-7.1.1\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-daemon-embeddable-1.4.31.jar\":                            \"pkg:maven/org.jetbrains.kotlin/kotlin-daemon-embeddable@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-reflect-1.4.31.jar\":                                      \"pkg:maven/org.jetbrains.kotlin/kotlin-reflect@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-sam-with-receiver-compiler-plugin-1.4.31.jar\":            \"pkg:maven/org.jetbrains.kotlin/kotlin-sam-with-receiver-compiler-plugin@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-script-runtime-1.4.31.jar\":                               \"pkg:maven/org.jetbrains.kotlin/kotlin-script-runtime@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-scripting-common-1.4.31.jar\":                             \"pkg:maven/org.jetbrains.kotlin/kotlin-scripting-common@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-scripting-compiler-embeddable-1.4.31.jar\":                \"pkg:maven/org.jetbrains.kotlin/kotlin-scripting-compiler-embeddable@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-scripting-compiler-impl-embeddable-1.4.31.jar\":           \"pkg:maven/org.jetbrains.kotlin/kotlin-scripting-compiler-impl-embeddable@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-scripting-jvm-1.4.31.jar\":                                \"pkg:maven/org.jetbrains.kotlin/kotlin-scripting-jvm@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-scripting-jvm-host-1.4.31.jar\":                           \"pkg:maven/org.jetbrains.kotlin/kotlin-scripting-jvm-host@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-stdlib-1.4.31.jar\":                                       \"pkg:maven/org.jetbrains.kotlin/kotlin-stdlib@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-stdlib-common-1.4.31.jar\":                                \"pkg:maven/org.jetbrains.kotlin/kotlin-stdlib-common@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-stdlib-jdk7-1.4.31.jar\":                                  \"pkg:maven/org.jetbrains.kotlin/kotlin-stdlib-jdk7@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlin-stdlib-jdk8-1.4.31.jar\":                                  \"pkg:maven/org.jetbrains.kotlin/kotlin-stdlib-jdk8@1.4.31\",\n\t\"/packages/gradle-7.1.1/lib/kotlinx-metadata-jvm-0.2.0.jar\":                                 \"pkg:maven/org.jetbrains.kotlinx/kotlinx-metadata-jvm@0.2.0\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-0.22-milestone-16.jar\":                          \"pkg:maven/net.rubygrapefruit/native-platform@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-freebsd-amd64-libcpp-0.22-milestone-16.jar\":     \"pkg:maven/net.rubygrapefruit/native-platform-freebsd-amd64-libcpp@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-aarch64-0.22-milestone-16.jar\":            \"pkg:maven/net.rubygrapefruit/native-platform-linux-aarch64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-aarch64-ncurses5-0.22-milestone-16.jar\":   \"pkg:maven/net.rubygrapefruit/native-platform-linux-aarch64-ncurses5@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-aarch64-ncurses6-0.22-milestone-16.jar\":   \"pkg:maven/net.rubygrapefruit/native-platform-linux-aarch64-ncurses6@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-amd64-0.22-milestone-16.jar\":              \"pkg:maven/net.rubygrapefruit/native-platform-linux-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-amd64-ncurses5-0.22-milestone-16.jar\":     \"pkg:maven/net.rubygrapefruit/native-platform-linux-amd64-ncurses5@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-linux-amd64-ncurses6-0.22-milestone-16.jar\":     \"pkg:maven/net.rubygrapefruit/native-platform-linux-amd64-ncurses6@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-osx-aarch64-0.22-milestone-16.jar\":              \"pkg:maven/net.rubygrapefruit/native-platform-osx-aarch64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-osx-amd64-0.22-milestone-16.jar\":                \"pkg:maven/net.rubygrapefruit/native-platform-osx-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-windows-amd64-0.22-milestone-16.jar\":            \"pkg:maven/net.rubygrapefruit/native-platform-windows-amd64@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-windows-amd64-min-0.22-milestone-16.jar\":        \"pkg:maven/net.rubygrapefruit/native-platform-windows-amd64-min@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-windows-i386-0.22-milestone-16.jar\":             \"pkg:maven/net.rubygrapefruit/native-platform-windows-i386@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/native-platform-windows-i386-min-0.22-milestone-16.jar\":         \"pkg:maven/net.rubygrapefruit/native-platform-windows-i386-min@0.22-milestone-16\",\n\t\"/packages/gradle-7.1.1/lib/plugins/apiguardian-api-1.1.0.jar\":                              \"pkg:maven/org.apiguardian/apiguardian-api@1.1.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/bsh-2.0b6.jar\":                                          \"pkg:maven/org.apache-extras.beanshell/bsh@2.0b6\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-api-client-1.25.0.jar\":                           \"pkg:maven/com.google.api-client/google-api-client@1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-api-services-storage-v1-rev171-1.25.0.jar\":       \"pkg:maven/com.google.apis/google-api-services-storage@v1-rev171-1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jcommander-1.78.jar\":                                    \"pkg:maven/com.beust/jcommander@1.78\",\n\t\"/packages/gradle-7.1.1/lib/plugins/junit-platform-commons-1.7.2.jar\":                       \"pkg:maven/org.junit.platform/junit-platform-commons@1.7.2\",\n\t\"/packages/gradle-7.1.1/lib/plugins/junit-platform-engine-1.7.2.jar\":                        \"pkg:maven/org.junit.platform/junit-platform-engine@1.7.2\",\n\t\"/packages/gradle-7.1.1/lib/plugins/junit-platform-launcher-1.7.2.jar\":                      \"pkg:maven/org.junit.platform/junit-platform-launcher@1.7.2\",\n\t\"/packages/gradle-7.1.1/lib/plugins/nekohtml-1.9.22.jar\":                                    \"pkg:maven/net.sourceforge.nekohtml/nekohtml@1.9.22\",\n\t\"/packages/gradle-7.1.1/lib/tomlj-1.0.0.jar\":                                                \"pkg:maven/org.tomlj/tomlj@1.0.0\",\n\t\"/packages/gradle-7.1.1/lib/trove4j-1.0.20181211.jar\":                                       \"pkg:maven/net.sf.trove4j /trove4j@1.0.20181211\",\n\t\"/packages/gradle-7.1.1/lib/xml-apis-1.4.01.jar\":                                            \"pkg:maven/xml-apis/xml-apis@1.4.01\",\n\t\"/packages/gradle-7.1.1/lib/asm-analysis-9.1.jar\":                                           \"pkg:maven/org.ow2.asm/asm-analysis@9.1\",\n\t\"/packages/gradle-7.1.1/lib/asm-commons-9.1.jar\":                                            \"pkg:maven/org.ow2.asm/asm-commons@9.1\",\n\t\"/packages/gradle-7.1.1/lib/asm-tree-9.1.jar\":                                               \"pkg:maven/org.ow2.asm/asm-tree@9.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/ivy-2.3.0.jar\":                                          \"pkg:maven/org.apache.ivy/ivy@2.3.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar\":                                            \"pkg:maven/asm/asm@2.2.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar\":                                    \"pkg:maven/asm/asm-commons@2.2.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar\":                                       \"pkg:maven/asm/asm-tree@2.2.3\",\n\t\"/packages/hudson.war:WEB-INF/slave.jar\":                                                    \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar\":                                      \"pkg:maven/xpp3_min/xpp3_min@1.1.4c\",\n\t\"/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar\":                                          \"pkg:maven/xpp3/xpp3@1.1.4c\",\n\t\"/packages/hudson.war:WEB-INF/hudson-cli.jar\":                                               \"pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar\":                                 \"pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3\",\n\t\"/packages/newrelic-agent-8.8.0.jar\":                                                        \"pkg:maven/com.newrelic.bootstrap.BootstrapAgent/newrelic-agent@8.8.0\",\n\t\"/packages/newrelic-agent-8.8.0.jar:agent-bridge-datastore.jar\":                             \"pkg:maven/agent-bridge-datastore/agent-bridge-datastore@8.8.0\",\n\t\"/packages/newrelic-agent-8.8.0.jar:agent-bridge.jar\":                                       \"pkg:maven/agent-bridge/agent-bridge@8.8.0\",\n\t\"/packages/newrelic-agent-8.8.0.jar:newrelic-api.jar\":                                       \"pkg:maven/newrelic-api/newrelic-api@8.8.0\",\n\t\"/packages/newrelic-agent-8.8.0.jar:newrelic-security-agent.jar\":                            \"pkg:maven/newrelic-security-agent/newrelic-security-agent@1.0.7-public-preview\",\n\t\"/packages/newrelic-agent-8.8.0.jar:newrelic-security-api.jar\":                              \"pkg:maven/newrelic-security-api/newrelic-security-api@1.0.7-public-preview\",\n\t\"/packages/newrelic-agent-8.8.0.jar:newrelic-weaver-api.jar\":                                \"pkg:maven/newrelic-weaver-api/newrelic-weaver-api@8.8.0\",\n\t\"/packages/newrelic-agent-8.8.0.jar:newrelic-weaver-scala-api.jar\":                          \"pkg:maven/newrelic-weaver-scala-api/newrelic-weaver-scala-api@8.8.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsr250-api-1.0.jar\":                                 \"pkg:maven/javax.annotation/jsr250-api@1.0\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-httpclient-3.1.jar\":                       \"pkg:maven/commons-httpclient/commons-httpclient@3.1\",\n\t\"/packages/xpp3_min-1.1.4c.jar\":                                                             \"pkg:maven/xpp3/xpp3_min@1.1.4c\",\n\n\t// Unclear: groupid might be org.glassfish.jaxb or com.sun.xml.bind\n\t\"/packages/gradle-7.1.1/lib/plugins/jaxb-core-3.0.0.jar\": \"pkg:maven/org.glassfish.jaxb/jaxb-core@3.0.0\",\n}\n\n// Constructed by:\n// syft anchore/test_images:java-1abc58f -o json | jq -r '.artifacts.[] | [.metadata.virtualPath, .purl, \"\"] | @csv' | grep 'pkg:maven' | sort | uniq >> /tmp/java_artifacts_mapping.txt\n// The map was then hand-edited for correctness by comparing to Maven Central.\nvar expectedPURLs = map[string]string{\n\t\"/packages/activemq-client-5.18.2.jar\":                       \"pkg:maven/org.apache.activemq/activemq-client@5.18.2\",\n\t\"/packages/activemq-protobuf-1.1.jar\":                        \"pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1\",\n\t\"/packages/akka-actor_2.13-2.6.6.jar\":                        \"pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6\",\n\t\"/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar\": \"pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0\",\n\t\"/packages/ant-1.10.3.jar\":                                   \"pkg:maven/org.apache.ant/ant@1.10.3\",\n\t\"/packages/apache-chainsaw-2.1.0.jar\":                        \"pkg:maven/log4j/apache-chainsaw@2.1.0\",\n\t\"/packages/apache-log4j-extras-1.1.jar\":                      \"pkg:maven/log4j/apache-log4j-extras@1.1\",\n\t\"/packages/apoc-4.4.0.11.jar\":                                \"pkg:maven/org.neo4j.procedure/apoc@4.4.0.11\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi\":       \"pkg:maven/io.jenkins.plugins/atlassian-bitbucket-server-integration@2.1.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/atlassian-bitbucket-server-integration.jar\":                        \"pkg:maven/io.jenkins.plugins/atlassian-bitbucket-server-integration@2.1.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/commons-codec-1.13.jar\":                                            \"pkg:maven/commons-codec/commons-codec@1.13\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/commons-lang3-3.9.jar\":                                             \"pkg:maven/org.apache.commons/commons-lang3@3.9\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/eddsa-0.3.0.jar\":                                                   \"pkg:maven/net.i2p.crypto/eddsa@0.3.0\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/httpcore-4.4.9.jar\":                                                \"pkg:maven/org.apache.httpcomponents/httpcore@4.4.9\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/jackson-annotations-2.11.2.jar\":                                    \"pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.11.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/jackson-core-2.11.2.jar\":                                           \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.11.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/jackson-databind-2.9.10.7.jar\":                                     \"pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.9.10.7\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/jcommon-1.0.24.jar\":                                                \"pkg:maven/org.jfree/jcommon@1.0.24\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/json-20180813.jar\":                                                 \"pkg:maven/org.json/json@20180813\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/oauth-20100527.jar\":                                                \"pkg:maven/net.oauth.core/oauth@20100527\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/oauth-provider-20100527.jar\":                                       \"pkg:maven/net.oauth.core/oauth-provider@20100527\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/okhttp-3.14.1.jar\":                                                 \"pkg:maven/com.squareup.okhttp3/okhttp@3.14.1\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/okio-1.17.2.jar\":                                                   \"pkg:maven/com.squareup.okio/okio@1.17.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/protobuf-java-3.11.1.jar\":                                          \"pkg:maven/com.google.protobuf/protobuf-java@3.11.1\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/trilead-putty-extension-1.2.jar\":                                   \"pkg:maven/org.kohsuke/trilead-putty-extension@1.2\",\n\t\"/packages/atlassian-bitbucket-server-integration.hpi:WEB-INF/lib/trilead-ssh2-build-217-jenkins-27.jar:org.jenkins-ci:trilead-ssh2\": \"pkg:maven/org.jenkins-ci/trilead-ssh2@build-217-jenkins-27\",\n\t\"/packages/aws-sam.hpi\":                                                                                                           \"pkg:maven/io.jenkins.plugins/aws-sam@1.2.2\",\n\t\"/packages/aws-sam.hpi:WEB-INF/lib/aws-sam.jar\":                                                                                   \"pkg:maven/io.jenkins.plugins/aws-sam@1.2.2\",\n\t\"/packages/aws-sam.hpi:WEB-INF/lib/json-20180130.jar\":                                                                             \"pkg:maven/org.json/json@20180130\",\n\t\"/packages/aws-sam.hpi:WEB-INF/lib/snakeyaml-1.21.jar\":                                                                            \"pkg:maven/org.yaml/snakeyaml@1.21\",\n\t\"/packages/bc-fips-1.0.2.3.jar\":                                                                                                   \"pkg:maven/org.bouncycastle/bc-fips@1.0.2.3\",\n\t\"/packages/camel-core-3.1.0.jar\":                                                                                                  \"pkg:maven/org.apache.camel/camel-core@3.1.0\",\n\t\"/packages/cassandra-all-4.1.1.jar\":                                                                                               \"pkg:maven/org.apache.cassandra/cassandra-all@4.1.1\",\n\t\"/packages/commons-logging-1.1.1.jar\":                                                                                             \"pkg:maven/commons-logging/commons-logging@1.1.1\",\n\t\"/packages/commons-vfs-1.0.jar\":                                                                                                   \"pkg:maven/commons-vfs/commons-vfs@1.0\",\n\t\"/packages/cxf-rt-transports-http-2.7.3.jar\":                                                                                      \"pkg:maven/org.apache.cxf/cxf-rt-transports-http@2.7.3\",\n\t\"/packages/dubbo-3.1.4.jar\":                                                                                                       \"pkg:maven/org.apache.dubbo/dubbo@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:com.alibaba:hessian-lite\":                                                                              \"pkg:maven/com.alibaba/hessian-lite@3.2.13\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-auth\":                                                                           \"pkg:maven/org.apache.dubbo/dubbo-auth@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-cluster\":                                                                        \"pkg:maven/org.apache.dubbo/dubbo-cluster@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-common\":                                                                         \"pkg:maven/org.apache.dubbo/dubbo-common@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-compatible\":                                                                     \"pkg:maven/org.apache.dubbo/dubbo-compatible@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-api\":                                                                     \"pkg:maven/org.apache.dubbo/dubbo-config-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-spring\":                                                                  \"pkg:maven/org.apache.dubbo/dubbo-config-spring@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-apollo\":                                                            \"pkg:maven/org.apache.dubbo/dubbo-configcenter-apollo@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-nacos\":                                                             \"pkg:maven/org.apache.dubbo/dubbo-configcenter-nacos@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-zookeeper\":                                                         \"pkg:maven/org.apache.dubbo/dubbo-configcenter-zookeeper@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-api\":                                                                  \"pkg:maven/org.apache.dubbo/dubbo-container-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-spring\":                                                               \"pkg:maven/org.apache.dubbo/dubbo-container-spring@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-cache\":                                                                   \"pkg:maven/org.apache.dubbo/dubbo-filter-cache@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-validation\":                                                              \"pkg:maven/org.apache.dubbo/dubbo-filter-validation@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-kubernetes\":                                                                     \"pkg:maven/org.apache.dubbo/dubbo-kubernetes@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-api\":                                                                   \"pkg:maven/org.apache.dubbo/dubbo-metadata-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-definition-protobuf\":                                                   \"pkg:maven/org.apache.dubbo/dubbo-metadata-definition-protobuf@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-nacos\":                                                          \"pkg:maven/org.apache.dubbo/dubbo-metadata-report-nacos@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-redis\":                                                          \"pkg:maven/org.apache.dubbo/dubbo-metadata-report-redis@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-zookeeper\":                                                      \"pkg:maven/org.apache.dubbo/dubbo-metadata-report-zookeeper@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-api\":                                                                    \"pkg:maven/org.apache.dubbo/dubbo-metrics-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-prometheus\":                                                             \"pkg:maven/org.apache.dubbo/dubbo-metrics-prometheus@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-api\":                                                                    \"pkg:maven/org.apache.dubbo/dubbo-monitor-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-default\":                                                                \"pkg:maven/org.apache.dubbo/dubbo-monitor-default@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-qos\":                                                                            \"pkg:maven/org.apache.dubbo/dubbo-qos@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-reactive\":                                                                       \"pkg:maven/org.apache.dubbo/dubbo-reactive@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-api\":                                                                   \"pkg:maven/org.apache.dubbo/dubbo-registry-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multicast\":                                                             \"pkg:maven/org.apache.dubbo/dubbo-registry-multicast@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multiple\":                                                              \"pkg:maven/org.apache.dubbo/dubbo-registry-multiple@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-nacos\":                                                                 \"pkg:maven/org.apache.dubbo/dubbo-registry-nacos@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-zookeeper\":                                                             \"pkg:maven/org.apache.dubbo/dubbo-registry-zookeeper@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-api\":                                                                   \"pkg:maven/org.apache.dubbo/dubbo-remoting-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-http\":                                                                  \"pkg:maven/org.apache.dubbo/dubbo-remoting-http@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty\":                                                                 \"pkg:maven/org.apache.dubbo/dubbo-remoting-netty@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty4\":                                                                \"pkg:maven/org.apache.dubbo/dubbo-remoting-netty4@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper\":                                                             \"pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper-curator5\":                                                    \"pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper-curator5@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-api\":                                                                        \"pkg:maven/org.apache.dubbo/dubbo-rpc-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-dubbo\":                                                                      \"pkg:maven/org.apache.dubbo/dubbo-rpc-dubbo@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-grpc\":                                                                       \"pkg:maven/org.apache.dubbo/dubbo-rpc-grpc@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-injvm\":                                                                      \"pkg:maven/org.apache.dubbo/dubbo-rpc-injvm@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-rest\":                                                                       \"pkg:maven/org.apache.dubbo/dubbo-rpc-rest@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-triple\":                                                                     \"pkg:maven/org.apache.dubbo/dubbo-rpc-triple@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-api\":                                                              \"pkg:maven/org.apache.dubbo/dubbo-serialization-api@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-fastjson2\":                                                        \"pkg:maven/org.apache.dubbo/dubbo-serialization-fastjson2@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-hessian2\":                                                         \"pkg:maven/org.apache.dubbo/dubbo-serialization-hessian2@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-jdk\":                                                              \"pkg:maven/org.apache.dubbo/dubbo-serialization-jdk@3.1.4\",\n\t\"/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-xds\":                                                                            \"pkg:maven/org.apache.dubbo/dubbo-xds@3.1.4\",\n\t\"/packages/elasticsearch-8.10.2.jar\":                                                                                              \"pkg:maven/org.elasticsearch/elasticsearch@8.10.2\",\n\t\"/packages/elasticsearch-rest-client-sniffer-7.17.11.jar\":                                                                         \"pkg:maven/org.elasticsearch.client/elasticsearch-rest-client-sniffer@7.17.11\",\n\t\"/packages/example-java-app-gradle-0.1.0.ear\":                                                                                     \"pkg:maven/example-java-app-gradle/example-java-app-gradle@0.1.0\",\n\t\"/packages/generic-webhook-trigger.hpi\":                                                                                           \"pkg:maven/org.jenkins-ci.plugins/generic-webhook-trigger@1.71\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/accessors-smart-1.2.jar\":                                                       \"pkg:maven/net.minidev/accessors-smart@1.2\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/asm-5.0.4.jar\":                                                                 \"pkg:maven/org.objectweb.asm/asm@5.0.4\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/commons-ip-math-1.32.jar\":                                                      \"pkg:maven/com.github.jgonian/commons-ip-math@1.32\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/generic-webhook-trigger.jar\":                                                   \"pkg:maven/org.jenkins-ci.plugins/generic-webhook-trigger@1.71\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/gson-2.8.2.jar\":                                                                \"pkg:maven/com.google.code.gson/gson@2.8.2\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/json-path-2.3.0.jar\":                                                           \"pkg:maven/com.jayway.jsonpath.json-path/json-path@2.3.0\",\n\t\"/packages/generic-webhook-trigger.hpi:WEB-INF/lib/json-smart-2.3.jar\":                                                            \"pkg:maven/net.minidev/json-smart@2.3\",\n\t\"/packages/geode-core-1.14.3.jar\":                                                                                                 \"pkg:maven/org.apache.geode/geode-core@1.14.3\",\n\t\"/packages/github-api-1.118.jar\":                                                                                                  \"pkg:maven/org.kohsuke/github-api@1.118\",\n\t\"/packages/google-oauth-client-1.25.0.jar\":                                                                                        \"pkg:maven/com.google.oauth-client/google-oauth-client@1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/annotations-20.1.0.jar\":                                                                               \"pkg:maven/org.jetbrains.annotations/annotations@20.1.0\",\n\t\"/packages/gradle-7.1.1/lib/ant-1.10.9.jar\":                                                                                       \"pkg:maven/org.apache.ant/ant@1.10.9\",\n\t\"/packages/gradle-7.1.1/lib/ant-antlr-1.10.9.jar\":                                                                                 \"pkg:maven/org.apache.ant/ant-antlr@1.10.9\",\n\t\"/packages/gradle-7.1.1/lib/ant-junit-1.10.9.jar\":                                                                                 \"pkg:maven/org.apache.ant/ant-junit@1.10.9\",\n\t\"/packages/gradle-7.1.1/lib/ant-launcher-1.10.9.jar\":                                                                              \"pkg:maven/org.apache.ant/ant-launcher@1.10.9\",\n\t\"/packages/gradle-7.1.1/lib/antlr4-runtime-4.7.2.jar\":                                                                             \"pkg:maven/org.antlr/antlr4-runtime@4.7.2\",\n\t\"/packages/gradle-7.1.1/lib/asm-9.1.jar\":                                                                                          \"pkg:maven/org.objectweb.asm/asm@9.1\",\n\t\"/packages/gradle-7.1.1/lib/commons-compress-1.20.jar\":                                                                            \"pkg:maven/org.apache.commons/commons-compress@1.20\",\n\t\"/packages/gradle-7.1.1/lib/commons-io-2.6.jar\":                                                                                   \"pkg:maven/commons-io/commons-io@2.6\",\n\t\"/packages/gradle-7.1.1/lib/commons-lang-2.6.jar\":                                                                                 \"pkg:maven/commons-lang/commons-lang@2.6\",\n\t\"/packages/gradle-7.1.1/lib/failureaccess-1.0.1.jar\":                                                                              \"pkg:maven/com.google.guava/failureaccess@1.0.1\",\n\t\"/packages/gradle-7.1.1/lib/groovy-3.0.7.jar\":                                                                                     \"pkg:maven/org.codehaus.groovy/groovy@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-ant-3.0.7.jar\":                                                                                 \"pkg:maven/org.codehaus.groovy/groovy-ant@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-astbuilder-3.0.7.jar\":                                                                          \"pkg:maven/org.codehaus.groovy/groovy-astbuilder@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-console-3.0.7.jar\":                                                                             \"pkg:maven/org.codehaus.groovy/groovy-console@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-datetime-3.0.7.jar\":                                                                            \"pkg:maven/org.codehaus.groovy/groovy-datetime@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-dateutil-3.0.7.jar\":                                                                            \"pkg:maven/org.codehaus.groovy/groovy-dateutil@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-docgenerator-3.0.7.jar\":                                                                        \"pkg:maven/org.codehaus.groovy/groovy-docgenerator@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-groovydoc-3.0.7.jar\":                                                                           \"pkg:maven/org.codehaus.groovy/groovy-groovydoc@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-json-3.0.7.jar\":                                                                                \"pkg:maven/org.codehaus.groovy/groovy-json@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-nio-3.0.7.jar\":                                                                                 \"pkg:maven/org.codehaus.groovy/groovy-nio@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-sql-3.0.7.jar\":                                                                                 \"pkg:maven/org.codehaus.groovy/groovy-sql@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-swing-3.0.7.jar\":                                                                               \"pkg:maven/org.codehaus.groovy/groovy-swing@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-templates-3.0.7.jar\":                                                                           \"pkg:maven/org.codehaus.groovy/groovy-templates@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-test-3.0.7.jar\":                                                                                \"pkg:maven/org.codehaus.groovy/groovy-test@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/groovy-xml-3.0.7.jar\":                                                                                 \"pkg:maven/org.codehaus.groovy/groovy-xml@3.0.7\",\n\t\"/packages/gradle-7.1.1/lib/guava-27.1-android.jar\":                                                                               \"pkg:maven/com.google.guava/guava@27.1-android\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar\":                                                                                       \"pkg:maven/org.fusesource.jansi/jansi@1.18\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.hawtjni:hawtjni-runtime\":                                                \"pkg:maven/org.fusesource.hawtjni/hawtjni-runtime@1.17\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-freebsd32\":                                                  \"pkg:maven/org.fusesource.jansi/jansi-freebsd32@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-freebsd64\":                                                  \"pkg:maven/org.fusesource.jansi/jansi-freebsd64@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-linux32\":                                                    \"pkg:maven/org.fusesource.jansi/jansi-linux32@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-linux64\":                                                    \"pkg:maven/org.fusesource.jansi/jansi-linux64@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-native\":                                                     \"pkg:maven/org.fusesource.jansi/jansi-native@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-osx\":                                                        \"pkg:maven/org.fusesource.jansi/jansi-osx@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-windows32\":                                                  \"pkg:maven/org.fusesource.jansi/jansi-windows32@1.8\",\n\t\"/packages/gradle-7.1.1/lib/jansi-1.18.jar:org.fusesource.jansi:jansi-windows64\":                                                  \"pkg:maven/org.fusesource.jansi/jansi-windows64@1.8\",\n\t\"/packages/gradle-7.1.1/lib/javaparser-core-3.17.0.jar\":                                                                           \"pkg:maven/com.github.javaparser/javaparser-core@3.17.0\",\n\t\"/packages/gradle-7.1.1/lib/jcl-over-slf4j-1.7.30.jar\":                                                                            \"pkg:maven/org.slf4j/jcl-over-slf4j@1.7.30\",\n\t\"/packages/gradle-7.1.1/lib/jsr305-3.0.2.jar\":                                                                                     \"pkg:maven/com.google.code.findbugs/jsr305@3.0.2\",\n\t\"/packages/gradle-7.1.1/lib/jul-to-slf4j-1.7.30.jar\":                                                                              \"pkg:maven/org.slf4j/jul-to-slf4j@1.7.30\",\n\t\"/packages/gradle-7.1.1/lib/junit-4.13.2.jar\":                                                                                     \"pkg:maven/junit/junit@4.13.2\",\n\t\"/packages/gradle-7.1.1/lib/kryo-2.24.0.jar\":                                                                                      \"pkg:maven/com.esotericsoftware.kryo/kryo@2.24.0\",\n\t\"/packages/gradle-7.1.1/lib/kryo-2.24.0.jar:com.esotericsoftware.reflectasm:reflectasm\":                                           \"pkg:maven/com.esotericsoftware.reflectasm/reflectasm@1.09\",\n\t\"/packages/gradle-7.1.1/lib/log4j-over-slf4j-1.7.30.jar\":                                                                          \"pkg:maven/org.slf4j/log4j-over-slf4j@1.7.30\",\n\t\"/packages/gradle-7.1.1/lib/minlog-1.2.jar\":                                                                                       \"pkg:maven/com.esotericsoftware.minlog/minlog@1.2\",\n\t\"/packages/gradle-7.1.1/lib/objenesis-2.6.jar\":                                                                                    \"pkg:maven/org.objenesis/objenesis@2.6\",\n\t\"/packages/gradle-7.1.1/lib/plugins/aws-java-sdk-core-1.11.948.jar\":                                                               \"pkg:maven/com.amazonaws/aws-java-sdk-core@1.11.948\",\n\t\"/packages/gradle-7.1.1/lib/plugins/aws-java-sdk-kms-1.11.948.jar\":                                                                \"pkg:maven/com.amazonaws/aws-java-sdk-kms@1.11.948\",\n\t\"/packages/gradle-7.1.1/lib/plugins/aws-java-sdk-s3-1.11.948.jar\":                                                                 \"pkg:maven/com.amazonaws/aws-java-sdk-s3@1.11.948\",\n\t\"/packages/gradle-7.1.1/lib/plugins/aws-java-sdk-sts-1.11.948.jar\":                                                                \"pkg:maven/com.amazonaws/aws-java-sdk-sts@1.11.948\",\n\t\"/packages/gradle-7.1.1/lib/plugins/bcpg-jdk15on-1.68.jar\":                                                                        \"pkg:maven/org.bouncycastle/bcpg-jdk15on@1.68\",\n\t\"/packages/gradle-7.1.1/lib/plugins/bcpkix-jdk15on-1.68.jar\":                                                                      \"pkg:maven/org.bouncycastle/bcpkix-jdk15on@1.68\",\n\t\"/packages/gradle-7.1.1/lib/plugins/bcprov-jdk15on-1.68.jar\":                                                                      \"pkg:maven/org.bouncycastle/bcprov-jdk15on@1.68\",\n\t\"/packages/gradle-7.1.1/lib/plugins/commons-codec-1.15.jar\":                                                                       \"pkg:maven/commons-codec/commons-codec@1.15\",\n\t\"/packages/gradle-7.1.1/lib/plugins/dd-plist-1.21.jar\":                                                                            \"pkg:maven/com.googlecode.plist/dd-plist@1.21\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-api-services-storage-v1-rev171-1.25.0.jar:com.google.apis:google-api-services-storage\": \"pkg:maven/com.google.apis/google-api-services-storage@v1-rev171-1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-http-client-1.25.0.jar\":                                                                \"pkg:maven/com.google.http-client/google-http-client@1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-http-client-jackson2-1.25.0.jar\":                                                       \"pkg:maven/com.google.http-client/google-http-client-jackson2@1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/google-oauth-client-1.25.0.jar\":                                                               \"pkg:maven/com.google.oauth-client/google-oauth-client@1.25.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/gson-2.8.6.jar\":                                                                               \"pkg:maven/com.google.code.gson/gson@2.8.6\",\n\t\"/packages/gradle-7.1.1/lib/plugins/httpclient-4.5.13.jar\":                                                                        \"pkg:maven/org.apache.httpcomponents/httpclient@4.5.13\",\n\t\"/packages/gradle-7.1.1/lib/plugins/httpcore-4.4.14.jar\":                                                                          \"pkg:maven/org.apache.httpcomponents/httpcore@4.4.14\",\n\t\"/packages/gradle-7.1.1/lib/plugins/ion-java-1.0.2.jar\":                                                                           \"pkg:maven/software.amazon.ion/ion-java@1.0.2\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jackson-annotations-2.12.1.jar\":                                                               \"pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.12.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jackson-core-2.12.1.jar\":                                                                      \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.12.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jackson-databind-2.12.1.jar\":                                                                  \"pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.12.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jakarta.activation-2.0.0.jar\":                                                                 \"pkg:maven/com.sun.activation/jakarta.activation@2.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jakarta.xml.bind-api-3.0.0.jar\":                                                               \"pkg:maven/jakarta.xml.bind/jakarta.xml.bind-api@3.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jatl-0.2.3.jar\":                                                                               \"pkg:maven/com.googlecode.jatl/jatl@0.2.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jaxb-core-3.0.0.jar:com.sun.istack:istack-commons-runtime\":                                    \"pkg:maven/com.sun.istack/istack-commons-runtime@4.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jaxb-core-3.0.0.jar:org.glassfish.jaxb:txw2\":                                                  \"pkg:maven/org.glassfish.jaxb/txw2@3.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jaxb-impl-3.0.0.jar\":                                                                          \"pkg:maven/com.sun.xml.bind/jaxb-impl@3.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jaxb-impl-3.0.0.jar:org.glassfish.jaxb:jaxb-runtime\":                                          \"pkg:maven/org.glassfish.jaxb/jaxb-runtime@3.0.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jcifs-1.3.17.jar\":                                                                             \"pkg:maven/jcifs/jcifs@1.3.17\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jmespath-java-1.11.948.jar\":                                                                   \"pkg:maven/com.amazonaws/jmespath-java@1.11.948\",\n\t\"/packages/gradle-7.1.1/lib/plugins/joda-time-2.10.4.jar\":                                                                         \"pkg:maven/joda-time/joda-time@2.10.4\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jsch-0.1.55.jar\":                                                                              \"pkg:maven/com.jcraft/jsch@0.1.55\",\n\t\"/packages/gradle-7.1.1/lib/plugins/jzlib-1.1.3.jar\":                                                                              \"pkg:maven/com.jcraft/jzlib@1.1.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/maven-builder-support-3.6.3.jar\":                                                              \"pkg:maven/org.apache.maven/maven-builder-support@3.6.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/maven-model-3.6.3.jar\":                                                                        \"pkg:maven/org.apache.maven/maven-model@3.6.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/maven-repository-metadata-3.6.3.jar\":                                                          \"pkg:maven/org.apache.maven/maven-repository-metadata@3.6.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/maven-settings-3.6.3.jar\":                                                                     \"pkg:maven/org.apache.maven/maven-settings@3.6.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/maven-settings-builder-3.6.3.jar\":                                                             \"pkg:maven/org.apache.maven/maven-settings-builder@3.6.3\",\n\t\"/packages/gradle-7.1.1/lib/plugins/opentest4j-1.2.0.jar\":                                                                         \"pkg:maven/org.opentest4j/opentest4j@1.2.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/org.eclipse.jgit-5.7.0.202003110725-r.jar\":                                                    \"pkg:maven/org.eclipse.jgit/org.eclipse.jgit@5.7.0.202003110725-r\",\n\t\"/packages/gradle-7.1.1/lib/plugins/plexus-cipher-1.7.jar\":                                                                        \"pkg:maven/org.sonatype.plexus/plexus-cipher@1.7\",\n\t\"/packages/gradle-7.1.1/lib/plugins/plexus-interpolation-1.26.jar\":                                                                \"pkg:maven/org.codehaus.plexus/plexus-interpolation@1.26\",\n\t\"/packages/gradle-7.1.1/lib/plugins/plexus-sec-dispatcher-1.4.jar\":                                                                \"pkg:maven/org.sonatype.plexus/plexus-sec-dispatcher@1.4\",\n\t\"/packages/gradle-7.1.1/lib/plugins/plexus-utils-3.3.0.jar\":                                                                       \"pkg:maven/org.codehaus.plexus/plexus-utils@3.3.0\",\n\t\"/packages/gradle-7.1.1/lib/plugins/snakeyaml-1.28.jar\":                                                                           \"pkg:maven/org.yaml/snakeyaml@1.28\",\n\t\"/packages/gradle-7.1.1/lib/plugins/testng-6.3.1.jar\":                                                                             \"pkg:maven/org.testng/testng@6.3.1\",\n\t\"/packages/gradle-7.1.1/lib/plugins/xercesImpl-2.12.0.jar\":                                                                        \"pkg:maven/org.apache.xerces.impl.Version/xercesImpl@2.12.0\",\n\t\"/packages/gradle-7.1.1/lib/qdox-1.12.1.jar\":                                                                                      \"pkg:maven/com.thoughtworks.qdox/qdox@1.12.1\",\n\t\"/packages/gradle-7.1.1/lib/slf4j-api-1.7.30.jar\":                                                                                 \"pkg:maven/org.slf4j/slf4j-api@1.7.30\",\n\t\"/packages/gradle.hpi\": \"pkg:maven/org.jenkins-ci.plugins/gradle@1.36\",\n\t\"/packages/gradle.hpi:WEB-INF/lib/gradle-plugin-1.36.jar\":                              \"pkg:maven/org.jenkins-ci.plugins/gradle-plugin@1.36\",\n\t\"/packages/graphql-java-20.0.jar\":                                                      \"pkg:maven/com.graphql-java/graphql-java@20.0\",\n\t\"/packages/graphql-java-20.0.jar:com.google.guava:guava\":                               \"pkg:maven/com.google.guava/guava@31.0.1-jre\",\n\t\"/packages/graphql-java-20.0.jar:org.antlr:antlr4-runtime\":                             \"pkg:maven/org.antlr/antlr4-runtime@4.9.3\",\n\t\"/packages/guava-29.0-jre.jar\":                                                         \"pkg:maven/com.google.guava/guava@29.0-jre\",\n\t\"/packages/hadoop-common-3.3.2.jar\":                                                    \"pkg:maven/org.apache.hadoop/hadoop-common@3.3.2\",\n\t\"/packages/hazelcast-5.2.4.jar\":                                                        \"pkg:maven/com.hazelcast/hazelcast@5.2.4\",\n\t\"/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.core:jackson-core\":                \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.2\",\n\t\"/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.jr:jackson-jr-annotation-support\": \"pkg:maven/com.fasterxml.jackson.jr/jackson-jr-annotation-support@2.15.2\",\n\t\"/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.jr:jackson-jr-objects\":            \"pkg:maven/com.fasterxml.jackson.jr/jackson-jr-objects@2.15.2\",\n\t\"/packages/hazelcast-5.2.4.jar:com.github.erosb:everit-json-schema\":                    \"pkg:maven/com.github.erosb/everit-json-schema@1.14.2\",\n\t\"/packages/hazelcast-5.2.4.jar:com.zaxxer:HikariCP\":                                    \"pkg:maven/com.zaxxer/HikariCP@4.0.3\",\n\t\"/packages/hazelcast-5.2.4.jar:io.github.classgraph:classgraph\":                        \"pkg:maven/io.github.classgraph/classgraph@4.8.149\",\n\t\"/packages/hazelcast-5.2.4.jar:org.json:json\":                                          \"pkg:maven/org.json/json@20230227\",\n\t\"/packages/hazelcast-5.2.4.jar:org.snakeyaml:snakeyaml-engine\":                         \"pkg:maven/org.snakeyaml/snakeyaml-engine@2.3\",\n\t\"/packages/hibernate-validator-6.1.3.Final.jar\":                                        \"pkg:maven/org.hibernate.validator/hibernate-validator@6.1.3.Final\",\n\t\"/packages/http2-common-11.0.16.jar\":                                                   \"pkg:maven/org.eclipse.jetty.http2/http2-common@11.0.16\",\n\t\"/packages/hudson.war:WEB-INF/hudson-cli.jar:args4j:args4j\":                            \"pkg:maven/args4j/args4j@2.0.16\",\n\t\"/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet:animal-sniffer-annotation\":      \"pkg:maven/org.jvnet/animal-sniffer-annotation@1.0\",\n\t\"/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet.hudson.main:remoting\":           \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t\"/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet.localizer:localizer\":            \"pkg:maven/org.jvnet.localizer/localizer@1.10\",\n\t// \"/packages/hudson.war:WEB-INF/hudson-cli.jar\":                                          \"pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/access-modifier-annotation-1.0.jar\": \"pkg:maven/org.kohsuke/access-modifier-annotation@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/acegi-security-1.0.5.jar\":           \"pkg:maven/org.acegisecurity/acegi-security@1.0.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/activation-1.1.1-hudson-1.jar\":      \"pkg:maven/org.jvnet.hudson/activation@1.1.1-hudson-1\",\n\t\"/packages/hudson.war:WEB-INF/lib/akuma-1.2.jar\":                      \"pkg:maven/com.sun.akuma/akuma@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/annotation-indexer-1.2.jar\":         \"pkg:maven/org.jvnet.hudson/annotation-indexer@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/ant-1.8.0.jar\":                      \"pkg:maven/org.apache.ant/ant@1.8.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/ant-launcher-1.8.0.jar\":             \"pkg:maven/org.apache.ant/ant-launcher@1.8.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/antlr-2.7.6.jar\":                    \"pkg:maven/antlr/antlr@2.7.6\",\n\t\"/packages/hudson.war:WEB-INF/lib/aopalliance-1.0.jar\":                \"pkg:maven/aopalliance/aopalliance@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/args4j-2.0.16.jar\":                  \"pkg:maven/args4j/args4j@2.0.16\",\n\t// \"/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar\":                                                                                       \"pkg:maven/asm/asm@2.2.3\",\n\t// \"/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar\":                                                                               \"pkg:maven/asm/asm-commons@2.2.3\",\n\t// \"/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar\":                                                                                  \"pkg:maven/asm/asm-tree@2.2.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/avalon-framework-4.1.3.jar\":                          \"pkg:maven/avalon-framework/avalon-framework@4.1.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/bridge-method-annotation-1.2.jar\":                    \"pkg:maven/com.infradna.tool/bridge-method-annotation@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/cli-1.390.jar\":                                       \"pkg:maven/org.jvnet.hudson.main/cli@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-beanutils-1.8.0.jar\":                         \"pkg:maven/commons-beanutils/commons-beanutils@1.8.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-codec-1.4.jar\":                               \"pkg:maven/commons-codec/commons-codec@1.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-collections-3.2.jar\":                         \"pkg:maven/commons-collections/commons-collections@3.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-digester-1.7.jar\":                            \"pkg:maven/commons-digester/commons-digester@1.7\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-discovery-0.4.jar\":                           \"pkg:maven/commons-discovery/commons-discovery@0.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-fileupload-1.2.1.jar\":                        \"pkg:maven/commons-fileupload/commons-fileupload@1.2.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-io-1.4.jar\":                                  \"pkg:maven/commons-io/commons-io@1.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-jelly-1.1-hudson-20100305.jar\":               \"pkg:maven/org.jvnet.hudson/commons-jelly@1.1-hudson-20100305\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-define-1.0.1-hudson-20071021.jar\": \"pkg:maven/org.jvnet.hudson/commons-jelly-tags-define@1.0.1-hudson-20071021\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-fmt-1.0.jar\":                      \"pkg:maven/commons-jelly/commons-jelly-tags-fmt@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-xml-1.1.jar\":                      \"pkg:maven/commons-jelly/commons-jelly-tags-xml@1.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-jexl-1.1-hudson-20090508.jar\":                \"pkg:maven/org.jvnet.hudson/commons-jexl@1.1-hudson-20090508\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-lang-2.4.jar\":                                \"pkg:maven/commons-lang/commons-lang@2.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-logging-1.1.jar\":                             \"pkg:maven/commons-logging/commons-logging@1.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/commons-pool-1.3.jar\":                                \"pkg:maven/commons-pool/commons-pool@1.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/crypto-util-1.0.jar\":                                 \"pkg:maven/org.jvnet.hudson/crypto-util@1.0\",\n\t// \"/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar\":             \"pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3\",\n\t\"/packages/hudson.war:WEB-INF/lib/embedded_su4j-1.1.jar\":              \"pkg:maven/com.sun.solaris/embedded_su4j@1.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/ezmorph-1.0.3.jar\":                  \"pkg:maven/net.sf.ezmorph/ezmorph@1.0.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/graph-layouter-1.0.jar\":             \"pkg:maven/org.kohsuke/graph-layouter@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/groovy-all-1.6.0.jar\":               \"pkg:maven/org.codehaus.groovy/groovy-all@1.6.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/guava-r06.jar\":                      \"pkg:maven/com.google.guava/guava@r06\",\n\t\"/packages/hudson.war:WEB-INF/lib/hudson-core-1.390.jar\":              \"pkg:maven/org.jvnet.hudson.main/hudson-core@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/j-interop-2.0.5.jar\":                \"pkg:maven/j-interop/j-interop@2.0.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/j-interopdeps-2.0.5.jar\":            \"pkg:maven/j-interopdeps/j-interopdeps@2.0.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/jaxen-1.1-beta-11.jar\":              \"pkg:maven/org.jaxen/jaxen@1.1-beta-11\",\n\t\"/packages/hudson.war:WEB-INF/lib/jcaptcha-all-1.0-RC6.jar\":           \"pkg:maven/jcaptcha-all/jcaptcha-all@1.0-RC6\",\n\t\"/packages/hudson.war:WEB-INF/lib/jcifs-1.3.14-kohsuke-1.jar\":         \"pkg:maven/org.samba.jcifs/jcifs@1.3.14-kohsuke-1\",\n\t\"/packages/hudson.war:WEB-INF/lib/jcommon-1.0.12.jar\":                 \"pkg:maven/jfree/jcommon@1.0.12\",\n\t\"/packages/hudson.war:WEB-INF/lib/jfreechart-1.0.9.jar\":               \"pkg:maven/jfreechart/jfreechart@1.0.9\",\n\t\"/packages/hudson.war:WEB-INF/lib/jinterop-proxy-1.1.jar\":             \"pkg:maven/org.kohsuke.jinterop/jinterop-proxy@1.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/jinterop-wmi-1.0.jar\":               \"pkg:maven/org.jvnet.hudson/jinterop-wmi@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/jline-0.9.94.jar\":                   \"pkg:maven/jline/jline@0.9.94\",\n\t\"/packages/hudson.war:WEB-INF/lib/jmdns-3.1.6-hudson-2.jar\":           \"pkg:maven/com.strangeberry.jmdns.tools.Main/jmdns@3.1.6-hudson-2\",\n\t\"/packages/hudson.war:WEB-INF/lib/jna-3.2.4.jar\":                      \"pkg:maven/com.sun.jna/jna@3.2.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/jna-posix-1.0.3.jar\":                \"pkg:maven/org.jruby.ext.posix/jna-posix@1.0.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/json-lib-2.1-rev6.jar\":              \"pkg:maven/json-lib/json-lib@2.1-rev6\",\n\t\"/packages/hudson.war:WEB-INF/lib/jstl-1.1.0.jar\":                     \"pkg:maven/com.sun/jstl@1.1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/jtidy-4aug2000r7-dev-hudson-1.jar\":  \"pkg:maven/jtidy/jtidy@4aug2000r7-dev-hudson-1\",\n\t\"/packages/hudson.war:WEB-INF/lib/libpam4j-1.2.jar\":                   \"pkg:maven/org.jvnet.libpam4j/libpam4j@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/libzfs-0.5.jar\":                     \"pkg:maven/org.jvnet.libzfs/libzfs@0.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/localizer-1.10.jar\":                 \"pkg:maven/org.jvnet.localizer/localizer@1.10\",\n\t\"/packages/hudson.war:WEB-INF/lib/log4j-1.2.9.jar\":                    \"pkg:maven/log4j/log4j@1.2.9\",\n\t\"/packages/hudson.war:WEB-INF/lib/logkit-1.0.1.jar\":                   \"pkg:maven/logkit/logkit@1.0.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/mail-1.4.jar\":                       \"pkg:maven/com.sun/mail@1.4\",\n\t\"/packages/hudson.war:WEB-INF/lib/memory-monitor-1.3.jar\":             \"pkg:maven/org.jvnet.hudson/memory-monitor@1.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/oro-2.0.8.jar\":                      \"pkg:maven/org.apache.oro/oro@2.0.8\",\n\t\"/packages/hudson.war:WEB-INF/lib/remoting-1.390.jar:args4j:args4j\":   \"pkg:maven/args4j/args4j@2.0.16\",\n\t\"/packages/hudson.war:WEB-INF/lib/remoting-1.390.jar\":                 \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t\"/packages/hudson.war:WEB-INF/lib/robust-http-client-1.1.jar\":         \"pkg:maven/org.jvnet.robust-http-client/robust-http-client@1.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/sezpoz-1.7.jar\":                     \"pkg:maven/net.java.sezpoz/sezpoz@1.7\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-aop-2.5.jar\":                 \"pkg:maven/org.springframework/spring-aop@2.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-beans-2.5.jar\":               \"pkg:maven/org.springframework/spring-beans@2.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-context-2.5.jar\":             \"pkg:maven/org.springframework/spring-context@2.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-core-2.5.jar\":                \"pkg:maven/org.springframework/spring-core@2.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-dao-1.2.9.jar\":               \"pkg:maven/org.springframework/spring-dao@1.2.9\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-jdbc-1.2.9.jar\":              \"pkg:maven/org.springframework/spring-jdbc@1.2.9\",\n\t\"/packages/hudson.war:WEB-INF/lib/spring-web-2.5.jar\":                 \"pkg:maven/org.springframework/spring-web@2.5\",\n\t\"/packages/hudson.war:WEB-INF/lib/stapler-1.155.jar\":                  \"pkg:maven/org.kohsuke.stapler/stapler@1.155\",\n\t\"/packages/hudson.war:WEB-INF/lib/stapler-adjunct-timeline-1.2.jar\":   \"pkg:maven/org.kohsuke.stapler/stapler-adjunct-timeline@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/stapler-jelly-1.155.jar\":            \"pkg:maven/org.kohsuke.stapler/stapler-jelly@1.155\",\n\t\"/packages/hudson.war:WEB-INF/lib/stax-api-1.0.1.jar\":                 \"pkg:maven/stax-api/stax-api@1.0.1\",\n\t\"/packages/hudson.war:WEB-INF/lib/task-reactor-1.2.jar\":               \"pkg:maven/org.jvnet.hudson/task-reactor@1.2\",\n\t\"/packages/hudson.war:WEB-INF/lib/tiger-types-1.3.jar\":                \"pkg:maven/org.jvnet/tiger-types@1.3\",\n\t\"/packages/hudson.war:WEB-INF/lib/trilead-putty-extension-1.0.jar\":    \"pkg:maven/org.kohsuke/trilead-putty-extension@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/trilead-ssh2-build212-hudson-5.jar\": \"pkg:maven/org.jvnet.hudson/trilead-ssh2@build212-hudson-5\",\n\t\"/packages/hudson.war:WEB-INF/lib/txw2-20070624.jar\":                  \"pkg:maven/txw2/txw2@20070624\",\n\t\"/packages/hudson.war:WEB-INF/lib/windows-remote-command-1.0.jar\":     \"pkg:maven/org.jvnet.hudson/windows-remote-command@1.0\",\n\t\"/packages/hudson.war:WEB-INF/lib/winp-1.14.jar\":                      \"pkg:maven/org.jvnet.winp/winp@1.14\",\n\t\"/packages/hudson.war:WEB-INF/lib/wstx-asl-3.2.7.jar\":                 \"pkg:maven/wstx-asl/wstx-asl@3.2.7\",\n\t// \"/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar\":                                                                \"pkg:maven/xpp3_min/xpp3_min@1.1.4c\",\n\t// \"/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar\":                                                                    \"pkg:maven/xpp3/xpp3@1.1.4c\",\n\t\"/packages/hudson.war:WEB-INF/lib/xstream-1.3.1-hudson-8.jar\":                                                         \"pkg:maven/org.jvnet.hudson/xstream@1.3.1-hudson-8\",\n\t\"/packages/hudson.war:WEB-INF/plugins/cvs.hpi\":                                                                        \"pkg:maven/org.jvnet.hudson.plugins/cvs@1.2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/avalon-framework-4.1.3.jar\":                        \"pkg:maven/avalon-framework/avalon-framework@4.1.3\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/classworlds-1.1.jar\":                               \"pkg:maven/org.codehaus.classworlds/classworlds@1.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-codec-1.4.jar\":                             \"pkg:maven/commons-codec/commons-codec@1.4\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-httpclient-3.1-rc1.jar\":                    \"pkg:maven/commons-httpclient/commons-httpclient@3.1-rc1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-logging-1.1.jar\":                           \"pkg:maven/commons-logging/commons-logging@1.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/doxia-sink-api-1.0-alpha-10.jar\":                   \"pkg:maven/org.apache.maven.doxia/doxia-sink-api@1.0-alpha-10\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/jsch-0.1.27.jar\":                                   \"pkg:maven/jsch/jsch@0.1.27\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/log4j-1.2.9.jar\":                                   \"pkg:maven/log4j/log4j@1.2.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/logkit-1.0.1.jar\":                                  \"pkg:maven/logkit/logkit@1.0.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-agent-1.390.jar\":                             \"pkg:maven/org.jvnet.hudson.main/maven-agent@1.390\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-artifact-2.0.9.jar\":                          \"pkg:maven/org.apache.maven/maven-artifact@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-artifact-manager-2.0.9.jar\":                  \"pkg:maven/org.apache.maven/maven-artifact-manager@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-core-2.0.9.jar\":                              \"pkg:maven/org.apache.maven/maven-core@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-embedder-2.0.4-hudson-1.jar\":                 \"pkg:maven/org.jvnet.hudson/maven-embedder@2.0.4-hudson-1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-embedder-2.0.4.jar\":                          \"pkg:maven/org.apache.maven/maven-embedder@2.0.4\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-error-diagnostics-2.0.9.jar\":                 \"pkg:maven/org.apache.maven/maven-error-diagnostics@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-interceptor-1.390.jar\":                       \"pkg:maven/org.jvnet.hudson.main/maven-interceptor@1.390\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-model-2.0.9.jar\":                             \"pkg:maven/org.apache.maven/maven-model@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-monitor-2.0.9.jar\":                           \"pkg:maven/org.apache.maven/maven-monitor@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-api-2.0.9.jar\":                        \"pkg:maven/org.apache.maven/maven-plugin-api@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-descriptor-2.0.9.jar\":                 \"pkg:maven/org.apache.maven/maven-plugin-descriptor@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-parameter-documenter-2.0.9.jar\":       \"pkg:maven/org.apache.maven/maven-plugin-parameter-documenter@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-registry-2.0.9.jar\":                   \"pkg:maven/org.apache.maven/maven-plugin-registry@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-profile-2.0.9.jar\":                           \"pkg:maven/org.apache.maven/maven-profile@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-project-2.0.9.jar\":                           \"pkg:maven/org.apache.maven/maven-project@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-reporting-api-2.0.9.jar\":                     \"pkg:maven/org.apache.maven.reporting/maven-reporting-api@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-repository-metadata-2.0.9.jar\":               \"pkg:maven/org.apache.maven/maven-repository-metadata@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-settings-2.0.9.jar\":                          \"pkg:maven/org.apache.maven/maven-settings@2.0.9\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven2.1-interceptor-1.2.jar\":                      \"pkg:maven/org.jvnet.hudson/maven2.1-interceptor@1.2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-container-default-1.0-alpha-9-stable-1.jar\": \"pkg:maven/org.codehaus.plexus/plexus-container-default@1.0-alpha-9-stable-1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-interactivity-api-1.0-alpha-4.jar\":          \"pkg:maven/org.codehaus.plexus/plexus-interactivity-api@1.0-alpha-4\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-utils-1.5.1.jar\":                            \"pkg:maven/org.codehaus.plexus/plexus-utils@1.5.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/slide-webdavlib-2.1.jar\":                           \"pkg:maven/slide-webdavlib/slide-webdavlib@2.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-file-1.0-beta-2.jar\":                         \"pkg:maven/org.apache.maven.wagon/wagon-file@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-http-lightweight-1.0-beta-2.jar\":             \"pkg:maven/org.apache.maven.wagon/wagon-http-lightweight@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-http-shared-1.0-beta-2.jar\":                  \"pkg:maven/org.apache.maven.wagon/wagon-http-shared@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-provider-api-1.0-beta-2.jar\":                 \"pkg:maven/org.apache.maven.wagon/wagon-provider-api@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-1.0-beta-2.jar\":                          \"pkg:maven/org.apache.maven.wagon/wagon-ssh@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-common-1.0-beta-2.jar\":                   \"pkg:maven/org.apache.maven.wagon/wagon-ssh-common@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-external-1.0-beta-2.jar\":                 \"pkg:maven/org.apache.maven.wagon/wagon-ssh-external@1.0-beta-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-webdav-1.0-beta-2-hudson-1.jar\":              \"pkg:maven/org.jvnet.hudson/wagon-webdav@1.0-beta-2-hudson-1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/xml-im-exporter-1.1.jar\":                           \"pkg:maven/xml-im-exporter/xml-im-exporter@1.1\",\n\t\"/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi\":                                                               \"pkg:maven/org.jvnet.hudson.main/maven-plugin@1.390\",\n\t\"/packages/hudson.war:WEB-INF/plugins/ssh-slaves.hpi\":                                                                 \"pkg:maven/org.jvnet.hudson.plugins/ssh-slaves@0.14\",\n\t\"/packages/hudson.war:WEB-INF/plugins/subversion.hpi:WEB-INF/lib/svnkit-1.3.4-hudson-2.jar\":                           \"pkg:maven/svnkit/svnkit@1.3.4-hudson-2\",\n\t\"/packages/hudson.war:WEB-INF/plugins/subversion.hpi\":                                                                 \"pkg:maven/org.jvnet.hudson.plugins/subversion@1.20\",\n\t\"/packages/hudson.war:WEB-INF/remoting.jar:args4j:args4j\":                                                             \"pkg:maven/args4j/args4j@2.0.16\",\n\t\"/packages/hudson.war:WEB-INF/remoting.jar\":                                                                           \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t\"/packages/hudson.war:WEB-INF/slave.jar:args4j:args4j\":                                                                \"pkg:maven/args4j/args4j@2.0.16\",\n\t\"/packages/hudson.war:WEB-INF/slave.jar:org.jvnet.hudson.main:remoting\":                                               \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t// \"/packages/hudson.war:WEB-INF/slave.jar\":                                                                                               \"pkg:maven/org.jvnet.hudson.main/remoting@1.390\",\n\t\"/packages/hudson.war:winstone.jar\":           \"pkg:maven/org.jvnet.hudson.winstone/winstone@0.9.10-hudson-24\",\n\t\"/packages/hudson.war\":                        \"pkg:maven/org.jvnet.hudson.main/hudson-war@1.390\",\n\t\"/packages/infinispan-core-11.0.4.Final.jar\":  \"pkg:maven/org.infinispan/infinispan-core@11.0.4.Final\",\n\t\"/packages/jeecg-boot-common-3.6.0.jar\":       \"pkg:maven/org.jeecgframework.boot/jeecg-boot-common@3.6.0\",\n\t\"/packages/jetty-client-9.4.31.v20200723.jar\": \"pkg:maven/org.eclipse.jetty/jetty-client@9.4.31.v20200723\",\n\t\"/packages/jetty-server-12.0.0.alpha3.jar\":    \"pkg:maven/org.eclipse.jetty/jetty-server@12.0.0.alpha3\",\n\t\"/packages/jetty-setuid-java-1.0.4.jar\":       \"pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4\",\n\t\"/packages/jmdns-3.4.1.jar\":                   \"pkg:maven/javax.jmdns/jmdns@3.4.1\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar\":         \"pkg:maven/org.jruby/jruby-stdlib@9.1.15.0\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.jar\": \"pkg:maven/org.bouncycastle/bcpkix-jdk15on@1.56\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.jar\": \"pkg:maven/org.bouncycastle/bcprov-jdk15on@1.56\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/yaml/snakeyaml/1.18/snakeyaml-1.18.jar\":                   \"pkg:maven/org.yaml/snakeyaml@1.18\",\n\t\"/packages/jsch-0.1.55.jar\":                                    \"pkg:maven/com.jcraft/jsch@0.1.55\",\n\t\"/packages/junit-4.13.1.jar\":                                   \"pkg:maven/junit/junit@4.13.1\",\n\t\"/packages/junit.hpi\":                                          \"pkg:maven/org.jenkins-ci.plugins/junit@1.25\",\n\t\"/packages/junit.hpi:WEB-INF/lib/junit.jar\":                    \"pkg:maven/org.jenkins-ci.plugins/junit@1.25\",\n\t\"/packages/kafka_2.13-3.2.2.jar\":                               \"pkg:maven/org.apache.kafka/kafka_2.13@3.2.2\",\n\t\"/packages/keycloak-core-22.0.2.jar\":                           \"pkg:maven/org.keycloak/keycloak-core@22.0.2\",\n\t\"/packages/log4j-1.2.16.jar\":                                   \"pkg:maven/log4j/log4j@1.2.16\",\n\t\"/packages/log4j-core-2.17.0.jar\":                              \"pkg:maven/org.apache.logging.log4j/log4j-core@2.17.0\",\n\t\"/packages/log4j-over-slf4j-1.7.36.jar\":                        \"pkg:maven/org.slf4j/log4j-over-slf4j@1.7.36\",\n\t\"/packages/manager-pojo-1.8.0.jar\":                             \"pkg:maven/org.apache.inlong/manager-pojo@1.8.0\",\n\t\"/packages/maven-plugin.hpi\":                                   \"pkg:maven/org.jenkins-ci.main/maven-plugin@3.10.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/annotations-3.0.1.jar\": \"pkg:maven/com.google.code.findbugs/annotations@3.0.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/annotations-3.0.1.jar:com.google.code.findbugs:jsr305\": \"pkg:maven/com.google.code.findbugs/jsr305@3.0.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/cdi-api-1.0.jar\":                                       \"pkg:maven/javax.enterprise/cdi-api@1.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/commons-cli-1.4.jar\":                                   \"pkg:maven/commons-cli/commons-cli@1.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/commons-lang3-3.11.jar\":                                \"pkg:maven/org.apache.commons/commons-lang3@3.11\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/commons-net-3.6.jar\":                                   \"pkg:maven/commons-net/commons-net@3.6\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/doxia-sink-api-1.0.jar\":                                \"pkg:maven/org.apache.maven.doxia/doxia-sink-api@1.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jackrabbit-webdav-2.14.4.jar\":                          \"pkg:maven/org.apache.jackrabbit/jackrabbit-webdav@2.14.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jcl-over-slf4j-1.7.30.jar\":                             \"pkg:maven/org.slf4j/jcl-over-slf4j@1.7.30\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jna-platform-4.1.0.jar\":                                \"pkg:maven/com.sun.jna.platform/jna-platform@4.1.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.connector-factory-0.0.9.jar\":           \"pkg:maven/com.jcraft/jsch.agentproxy.connector-factory@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.core-0.0.9.jar\":                        \"pkg:maven/com.jcraft/jsch.agentproxy.core@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.jsch-0.0.9.jar\":                        \"pkg:maven/com.jcraft/jsch.agentproxy.jsch@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.pageant-0.0.9.jar\":                     \"pkg:maven/com.jcraft/jsch.agentproxy.pageant@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.sshagent-0.0.9.jar\":                    \"pkg:maven/com.jcraft/jsch.agentproxy.sshagent@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.usocket-jna-0.0.9.jar\":                 \"pkg:maven/com.jcraft/jsch.agentproxy.usocket-jna@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsch.agentproxy.usocket-nc-0.0.9.jar\":                  \"pkg:maven/com.jcraft/jsch.agentproxy.usocket-nc@0.0.9\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/jsoup-1.12.1.jar\":                                      \"pkg:maven/org.jsoup/jsoup@1.12.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/lib-jenkins-maven-artifact-manager-1.2.jar\":            \"pkg:maven/org.jenkins-ci.lib/lib-jenkins-maven-artifact-manager@1.2\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/lib-jenkins-maven-embedder-3.15.jar\":                   \"pkg:maven/org.jenkins-ci.lib/lib-jenkins-maven-embedder@3.15\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-agent-1.13.jar\":                                  \"pkg:maven/org.jenkins-ci.main.maven/maven-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-artifact-3.5.4.jar\":                              \"pkg:maven/org.apache.maven/maven-artifact@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-builder-support-3.5.4.jar\":                       \"pkg:maven/org.apache.maven/maven-builder-support@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-compat-3.5.4.jar\":                                \"pkg:maven/org.apache.maven/maven-compat@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-core-3.5.4.jar\":                                  \"pkg:maven/org.apache.maven/maven-core@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-embedder-3.5.4.jar\":                              \"pkg:maven/org.apache.maven/maven-embedder@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-interceptor-1.13.jar\":                            \"pkg:maven/org.jenkins-ci.main.maven/maven-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-model-3.5.4.jar\":                                 \"pkg:maven/org.apache.maven/maven-model@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-model-builder-3.5.4.jar\":                         \"pkg:maven/org.apache.maven/maven-model-builder@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-plugin-api-3.5.4.jar\":                            \"pkg:maven/org.apache.maven/maven-plugin-api@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-plugin.jar\":                                      \"pkg:maven/org.jenkins-ci.main/maven-plugin@3.10.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-plugin.jar:classworlds.jar\":                      \"pkg:maven/org.codehaus.classworlds/classworlds@1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-reporting-api-3.0.jar\":                           \"pkg:maven/org.apache.maven.reporting/maven-reporting-api@3.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-repository-metadata-3.5.4.jar\":                   \"pkg:maven/org.apache.maven/maven-repository-metadata@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-api-1.1.1.jar\":                          \"pkg:maven/org.apache.maven.resolver/maven-resolver-api@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-connector-basic-1.1.1.jar\":              \"pkg:maven/org.apache.maven.resolver/maven-resolver-connector-basic@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-impl-1.1.1.jar\":                         \"pkg:maven/org.apache.maven.resolver/maven-resolver-impl@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-provider-3.5.4.jar\":                     \"pkg:maven/org.apache.maven/maven-resolver-provider@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-spi-1.1.1.jar\":                          \"pkg:maven/org.apache.maven.resolver/maven-resolver-spi@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-transport-wagon-1.1.1.jar\":              \"pkg:maven/org.apache.maven.resolver/maven-resolver-transport-wagon@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-resolver-util-1.1.1.jar\":                         \"pkg:maven/org.apache.maven.resolver/maven-resolver-util@1.1.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-settings-3.5.4.jar\":                              \"pkg:maven/org.apache.maven/maven-settings@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-settings-builder-3.5.4.jar\":                      \"pkg:maven/org.apache.maven/maven-settings-builder@3.5.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven-shared-utils-3.2.1.jar\":                          \"pkg:maven/org.apache.maven.shared/maven-shared-utils@3.2.1\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven2.1-interceptor-1.2.jar\":                          \"pkg:maven/org.jvnet.hudson/maven2.1-interceptor@1.2\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven3-agent-1.13.jar\":                                 \"pkg:maven/org.jenkins-ci.main.maven/maven3-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven3-interceptor-1.13.jar\":                           \"pkg:maven/org.jenkins-ci.main.maven/maven3-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven3-interceptor-commons-1.13.jar\":                   \"pkg:maven/org.jenkins-ci.main.maven/maven3-interceptor-commons@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven31-agent-1.13.jar\":                                \"pkg:maven/org.jenkins-ci.main.maven/maven31-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven31-interceptor-1.13.jar\":                          \"pkg:maven/org.jenkins-ci.main.maven/maven31-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven32-agent-1.13.jar\":                                \"pkg:maven/org.jenkins-ci.main.maven/maven32-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven32-interceptor-1.13.jar\":                          \"pkg:maven/org.jenkins-ci.main.maven/maven32-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven33-agent-1.13.jar\":                                \"pkg:maven/org.jenkins-ci.main.maven/maven33-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven33-interceptor-1.13.jar\":                          \"pkg:maven/org.jenkins-ci.main.maven/maven33-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven35-agent-1.13.jar\":                                \"pkg:maven/org.jenkins-ci.main.maven/maven35-agent@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/maven35-interceptor-1.13.jar\":                          \"pkg:maven/org.jenkins-ci.main.maven/maven35-interceptor@1.13\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/org.eclipse.sisu.inject-0.3.3.jar\":                     \"pkg:maven/org.eclipse.sisu.inject/org.eclipse.sisu.inject@0.3.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/org.eclipse.sisu.plexus-0.3.3.jar\":                     \"pkg:maven/org.eclipse.sisu.plexus/org.eclipse.sisu.plexus@0.3.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-cipher-1.8.jar\":                                 \"pkg:maven/org.codehaus.plexus/plexus-cipher@1.8\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-classworlds-2.6.0.jar\":                          \"pkg:maven/org.codehaus.plexus/plexus-classworlds@2.6.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-component-annotations-2.1.0.jar\":                \"pkg:maven/org.codehaus.plexus/plexus-component-annotations@2.1.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-interactivity-api-1.0.jar\":                      \"pkg:maven/org.codehaus.plexus/plexus-interactivity-api@1.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-interpolation-1.24.jar\":                         \"pkg:maven/org.codehaus.plexus/plexus-interpolation@1.24\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-sec-dispatcher-1.4.jar\":                         \"pkg:maven/org.sonatype.plexus/plexus-sec-dispatcher@1.4\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/plexus-utils-3.3.0.jar\":                                \"pkg:maven/org.codehaus.plexus/plexus-utils@3.3.0\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/slf4j-api-1.7.30.jar\":                                  \"pkg:maven/org.slf4j/slf4j-api@1.7.30\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-file-3.4.3.jar\":                                  \"pkg:maven/org.apache.maven.wagon/wagon-file@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-ftp-3.4.3.jar\":                                   \"pkg:maven/org.apache.maven.wagon/wagon-ftp@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-http-3.4.3.jar\":                                  \"pkg:maven/org.apache.maven.wagon/wagon-http@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-http-shared-3.4.3.jar\":                           \"pkg:maven/org.apache.maven.wagon/wagon-http-shared@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-provider-api-3.4.3.jar\":                          \"pkg:maven/org.apache.maven.wagon/wagon-provider-api@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-3.4.3.jar\":                                   \"pkg:maven/org.apache.maven.wagon/wagon-ssh@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-common-3.4.3.jar\":                            \"pkg:maven/org.apache.maven.wagon/wagon-ssh-common@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-external-3.4.3.jar\":                          \"pkg:maven/org.apache.maven.wagon/wagon-ssh-external@3.4.3\",\n\t\"/packages/maven-plugin.hpi:WEB-INF/lib/wagon-webdav-jackrabbit-3.4.3.jar\":                     \"pkg:maven/org.apache.maven.wagon/wagon-webdav-jackrabbit@3.4.3\",\n\t\"/packages/maven-shared-utils-3.2.1.jar\":                                                       \"pkg:maven/org.apache.maven.shared/maven-shared-utils@3.2.1\",\n\t\"/packages/mesos-1.7.1.jar\":                                                                    \"pkg:maven/org.apache.mesos/mesos@1.7.1\",\n\t\"/packages/minio-8.3.8.jar\":                                                                    \"pkg:maven/io.minio/minio@8.3.8\",\n\t\"/packages/ms-mcms-5.3.1.jar\":                                                                  \"pkg:maven/net.mingsoft/ms-mcms@5.3.1\",\n\t\"/packages/my-app-1.jar\":                                                                       \"pkg:maven/com.mycompany.app/my-app@1\",\n\t\"/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-annotations\":                        \"pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.13.2\",\n\t\"/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-core\":                               \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.13.2\",\n\t\"/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-databind\":                           \"pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.13.0\",\n\t\"/packages/my-app-1.jar:com.fasterxml:classmate\":                                               \"pkg:maven/com.fasterxml/classmate@1.5.1\",\n\t\"/packages/my-app-1.jar:com.google.errorprone:error_prone_annotations\":                         \"pkg:maven/com.google.errorprone/error_prone_annotations@2.0.18\",\n\t\"/packages/my-app-1.jar:com.google.guava:guava\":                                                \"pkg:maven/com.google.guava/guava@23.0\",\n\t\"/packages/my-app-1.jar:com.google.j2objc:j2objc-annotations\":                                  \"pkg:maven/com.google.j2objc/j2objc-annotations@1.1\",\n\t\"/packages/my-app-1.jar:com.hazelcast:hazelcast-kubernetes\":                                    \"pkg:maven/com.hazelcast/hazelcast-kubernetes@1.5.4\",\n\t\"/packages/my-app-1.jar:com.hierynomus:asn-one\":                                                \"pkg:maven/com.hierynomus/asn-one@0.5.0\",\n\t\"/packages/my-app-1.jar:com.typesafe.netty:netty-reactive-streams\":                             \"pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.5\",\n\t\"/packages/my-app-1.jar:commons-beanutils:commons-beanutils\":                                   \"pkg:maven/commons-beanutils/commons-beanutils@1.9.2\",\n\t\"/packages/my-app-1.jar:commons-collections:commons-collections\":                               \"pkg:maven/commons-collections/commons-collections@3.2.2\",\n\t\"/packages/my-app-1.jar:commons-digester:commons-digester\":                                     \"pkg:maven/commons-digester/commons-digester@1.8.1\",\n\t\"/packages/my-app-1.jar:commons-io:commons-io\":                                                 \"pkg:maven/commons-io/commons-io@2.8.0\",\n\t\"/packages/my-app-1.jar:commons-logging:commons-logging\":                                       \"pkg:maven/commons-logging/commons-logging@1.2\",\n\t\"/packages/my-app-1.jar:commons-validator:commons-validator\":                                   \"pkg:maven/commons-validator/commons-validator@1.5.1\",\n\t\"/packages/my-app-1.jar:io.netty:netty-buffer\":                                                 \"pkg:maven/io.netty/netty-buffer@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-codec\":                                                  \"pkg:maven/io.netty/netty-codec@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-codec-dns\":                                              \"pkg:maven/io.netty/netty-codec-dns@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-codec-http\":                                             \"pkg:maven/io.netty/netty-codec-http@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-codec-socks\":                                            \"pkg:maven/io.netty/netty-codec-socks@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-common\":                                                 \"pkg:maven/io.netty/netty-common@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-handler\":                                                \"pkg:maven/io.netty/netty-handler@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-handler-proxy\":                                          \"pkg:maven/io.netty/netty-handler-proxy@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-resolver\":                                               \"pkg:maven/io.netty/netty-resolver@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-resolver-dns\":                                           \"pkg:maven/io.netty/netty-resolver-dns@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-resolver-dns-native-macos\":                              \"pkg:maven/io.netty/netty-resolver-dns-native-macos@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-transport\":                                              \"pkg:maven/io.netty/netty-transport@4.1.52.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-transport-native-epoll\":                                 \"pkg:maven/io.netty/netty-transport-native-epoll@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.netty:netty-transport-native-unix-common\":                           \"pkg:maven/io.netty/netty-transport-native-unix-common@4.1.63.Final\",\n\t\"/packages/my-app-1.jar:io.prometheus:simpleclient\":                                            \"pkg:maven/io.prometheus/simpleclient@0.9.0\",\n\t\"/packages/my-app-1.jar:io.prometheus:simpleclient_common\":                                     \"pkg:maven/io.prometheus/simpleclient_common@0.9.0\",\n\t\"/packages/my-app-1.jar:io.vavr:vavr\":                                                          \"pkg:maven/io.vavr/vavr@0.10.2\",\n\t\"/packages/my-app-1.jar:io.vavr:vavr-match\":                                                    \"pkg:maven/io.vavr/vavr-match@0.10.2\",\n\t\"/packages/my-app-1.jar:jakarta.validation:jakarta.validation-api\":                             \"pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2\",\n\t\"/packages/my-app-1.jar:javax.servlet:javax.servlet-api\":                                       \"pkg:maven/javax.servlet/javax.servlet-api@3.1.0\",\n\t\"/packages/my-app-1.jar:org.apache.activemq.protobuf:activemq-protobuf\":                        \"pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1\",\n\t\"/packages/my-app-1.jar:org.apache.commons:commons-compress\":                                   \"pkg:maven/org.apache.commons/commons-compress@1.21\",\n\t\"/packages/my-app-1.jar:org.apache.commons:commons-lang3\":                                      \"pkg:maven/org.apache.commons/commons-lang3@3.10\",\n\t\"/packages/my-app-1.jar:org.apache.maven.shared:maven-shared-utils\":                            \"pkg:maven/org.apache.maven.shared/maven-shared-utils@3.3.4\",\n\t\"/packages/my-app-1.jar:org.codehaus.mojo:animal-sniffer-annotations\":                          \"pkg:maven/org.codehaus.mojo/animal-sniffer-annotations@1.14\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty.http2:http2-common\":                                  \"pkg:maven/org.eclipse.jetty.http2/http2-common@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty.http2:http2-hpack\":                                   \"pkg:maven/org.eclipse.jetty.http2/http2-hpack@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty.toolchain.setuid:jetty-setuid-java\":                  \"pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty:jetty-client\":                                        \"pkg:maven/org.eclipse.jetty/jetty-client@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty:jetty-http\":                                          \"pkg:maven/org.eclipse.jetty/jetty-http@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty:jetty-io\":                                            \"pkg:maven/org.eclipse.jetty/jetty-io@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty:jetty-server\":                                        \"pkg:maven/org.eclipse.jetty/jetty-server@9.1.0.M0\",\n\t\"/packages/my-app-1.jar:org.eclipse.jetty:jetty-util\":                                          \"pkg:maven/org.eclipse.jetty/jetty-util@9.4.43.v20210629\",\n\t\"/packages/my-app-1.jar:org.everit.json:org.everit.json.schema\":                                \"pkg:maven/org.everit.json/org.everit.json.schema@1.5.1\",\n\t\"/packages/my-app-1.jar:org.hibernate.validator:hibernate-validator\":                           \"pkg:maven/org.hibernate.validator/hibernate-validator@6.2.4.Final\",\n\t\"/packages/my-app-1.jar:org.jboss.logging:jboss-logging\":                                       \"pkg:maven/org.jboss.logging/jboss-logging@3.4.1.Final\",\n\t\"/packages/my-app-1.jar:org.jctools:jctools-core\":                                              \"pkg:maven/org.jctools/jctools-core@3.1.0\",\n\t\"/packages/my-app-1.jar:org.jetbrains:annotations\":                                             \"pkg:maven/org.jetbrains/annotations@13.0\",\n\t\"/packages/my-app-1.jar:org.json:json\":                                                         \"pkg:maven/org.json/json@20160810\",\n\t\"/packages/my-app-1.jar:org.kohsuke:github-api\":                                                \"pkg:maven/org.kohsuke/github-api@1.301\",\n\t\"/packages/my-app-1.jar:org.slf4j:log4j-over-slf4j\":                                            \"pkg:maven/org.slf4j/log4j-over-slf4j@1.7.33\",\n\t\"/packages/my-app-1.jar:org.slf4j:slf4j-api\":                                                   \"pkg:maven/org.slf4j/slf4j-api@1.7.33\",\n\t\"/packages/my-app-1.jar:org.sonarsource.analyzer-commons:sonar-analyzer-test-commons\":          \"pkg:maven/org.sonarsource.analyzer-commons/sonar-analyzer-test-commons@1.14.1.690\",\n\t\"/packages/my-app-1.jar:org.sonarsource.php:php-checks\":                                        \"pkg:maven/org.sonarsource.php/php-checks@3.17.0.7439\",\n\t\"/packages/my-app-1.jar:org.sonarsource.php:php-frontend\":                                      \"pkg:maven/org.sonarsource.php/php-frontend@3.17.0.7439\",\n\t\"/packages/my-app-1.jar:org.sonarsource.python:python-checks\":                                  \"pkg:maven/org.sonarsource.python/python-checks@3.4.1.8066\",\n\t\"/packages/my-app-1.jar:org.sonarsource.python:python-frontend\":                                \"pkg:maven/org.sonarsource.python/python-frontend@3.4.1.8066\",\n\t\"/packages/my-app-1.jar:org.sonarsource.sslr:sslr-core\":                                        \"pkg:maven/org.sonarsource.sslr/sslr-core@1.24.0.633\",\n\t\"/packages/netty-reactive-streams-2.0.6.jar\":                                                   \"pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.6\",\n\t\"/packages/nifi-utils-1.12.0.jar\":                                                              \"pkg:maven/org.apache.nifi/nifi-utils@1.12.0\",\n\t\"/packages/nomad.hpi\":                                                                          \"pkg:maven/org.jenkins-ci.plugins/nomad@0.7.4\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/annotations-13.0.jar\":                                         \"pkg:maven/org.jetbrains/annotations@13.0\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/gson-2.8.6.jar\":                                               \"pkg:maven/com.google.code.gson/gson@2.8.6\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/json-20200518.jar\":                                            \"pkg:maven/org.json/json@20200518\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/kotlin-stdlib-1.3.70.jar\":                                     \"pkg:maven/kotlin-stdlib/kotlin-stdlib@1.3.70\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/kotlin-stdlib-common-1.3.70.jar\":                              \"pkg:maven/kotlin-stdlib-common/kotlin-stdlib-common@1.3.70\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/nomad.jar\":                                                    \"pkg:maven/org.jenkins-ci.plugins/nomad@0.7.4\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/okhttp-4.5.0.jar\":                                             \"pkg:maven/com.squareup.okhttp3/okhttp@4.5.0\",\n\t\"/packages/nomad.hpi:WEB-INF/lib/okio-2.5.0.jar\":                                               \"pkg:maven/com.squareup.okio/okio@2.5.0\",\n\t\"/packages/nuget.hpi\": \"pkg:maven/org.jenkins-ci.plugins/nuget@1.0\",\n\t\"/packages/nuget.hpi:WEB-INF/lib/envinject-lib-1.19.jar\":                                                       \"pkg:maven/org.jenkins-ci.lib/envinject-lib@1.19\",\n\t\"/packages/nuget.hpi:WEB-INF/lib/nuget.jar\":                                                                    \"pkg:maven/org.jenkins-ci.plugins/nuget@1.0\",\n\t\"/packages/nuget.hpi:WEB-INF/lib/xtrigger-lib-0.33.jar\":                                                        \"pkg:maven/org.jenkins-ci.lib/xtrigger-lib@0.33\",\n\t\"/packages/openmeetings-util-4.0.9.jar\":                                                                        \"pkg:maven/org.apache.openmeetings/openmeetings-util@4.0.9\",\n\t\"/packages/org.eclipse.ant.core-3.7.0.jar\":                                                                     \"pkg:maven/org.eclipse.platform/org.eclipse.ant.core@3.7.0\",\n\t\"/packages/org.eclipse.osgi-3.18.0.jar\":                                                                        \"pkg:maven/org.eclipse.platform/org.eclipse.osgi@3.18.0\",\n\t\"/packages/org.everit.json.schema-1.5.1.jar\":                                                                   \"pkg:maven/org.everit.json/org.everit.json.schema@1.5.1\",\n\t\"/packages/original-my-app-1.jar\":                                                                              \"pkg:maven/com.mycompany.app/my-app@1\",\n\t\"/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-annotations\":                               \"pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.13.2\",\n\t\"/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-core\":                                      \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.13.2\",\n\t\"/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-databind\":                                  \"pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.13.0\",\n\t\"/packages/original-my-app-1.jar:com.fasterxml:classmate\":                                                      \"pkg:maven/com.fasterxml/classmate@1.5.1\",\n\t\"/packages/original-my-app-1.jar:com.google.errorprone:error_prone_annotations\":                                \"pkg:maven/com.google.errorprone/error_prone_annotations@2.0.18\",\n\t\"/packages/original-my-app-1.jar:com.google.guava:guava\":                                                       \"pkg:maven/com.google.guava/guava@23.0\",\n\t\"/packages/original-my-app-1.jar:com.google.j2objc:j2objc-annotations\":                                         \"pkg:maven/com.google.j2objc/j2objc-annotations@1.1\",\n\t\"/packages/original-my-app-1.jar:com.hazelcast:hazelcast-kubernetes\":                                           \"pkg:maven/com.hazelcast/hazelcast-kubernetes@1.5.4\",\n\t\"/packages/original-my-app-1.jar:com.hierynomus:asn-one\":                                                       \"pkg:maven/com.hierynomus/asn-one@0.5.0\",\n\t\"/packages/original-my-app-1.jar:com.typesafe.netty:netty-reactive-streams\":                                    \"pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.5\",\n\t\"/packages/original-my-app-1.jar:commons-beanutils:commons-beanutils\":                                          \"pkg:maven/commons-beanutils/commons-beanutils@1.9.2\",\n\t\"/packages/original-my-app-1.jar:commons-collections:commons-collections\":                                      \"pkg:maven/commons-collections/commons-collections@3.2.2\",\n\t\"/packages/original-my-app-1.jar:commons-digester:commons-digester\":                                            \"pkg:maven/commons-digester/commons-digester@1.8.1\",\n\t\"/packages/original-my-app-1.jar:commons-io:commons-io\":                                                        \"pkg:maven/commons-io/commons-io@2.8.0\",\n\t\"/packages/original-my-app-1.jar:commons-logging:commons-logging\":                                              \"pkg:maven/commons-logging/commons-logging@1.2\",\n\t\"/packages/original-my-app-1.jar:commons-validator:commons-validator\":                                          \"pkg:maven/commons-validator/commons-validator@1.5.1\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-buffer\":                                                        \"pkg:maven/io.netty/netty-buffer@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-codec\":                                                         \"pkg:maven/io.netty/netty-codec@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-codec-dns\":                                                     \"pkg:maven/io.netty/netty-codec-dns@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-codec-http\":                                                    \"pkg:maven/io.netty/netty-codec-http@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-codec-socks\":                                                   \"pkg:maven/io.netty/netty-codec-socks@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-common\":                                                        \"pkg:maven/io.netty/netty-common@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-handler\":                                                       \"pkg:maven/io.netty/netty-handler@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-handler-proxy\":                                                 \"pkg:maven/io.netty/netty-handler-proxy@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-resolver\":                                                      \"pkg:maven/io.netty/netty-resolver@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-resolver-dns\":                                                  \"pkg:maven/io.netty/netty-resolver-dns@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-resolver-dns-native-macos\":                                     \"pkg:maven/io.netty/netty-resolver-dns-native-macos@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-transport\":                                                     \"pkg:maven/io.netty/netty-transport@4.1.52.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-transport-native-epoll\":                                        \"pkg:maven/io.netty/netty-transport-native-epoll@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.netty:netty-transport-native-unix-common\":                                  \"pkg:maven/io.netty/netty-transport-native-unix-common@4.1.63.Final\",\n\t\"/packages/original-my-app-1.jar:io.prometheus:simpleclient\":                                                   \"pkg:maven/io.prometheus/simpleclient@0.9.0\",\n\t\"/packages/original-my-app-1.jar:io.prometheus:simpleclient_common\":                                            \"pkg:maven/io.prometheus/simpleclient_common@0.9.0\",\n\t\"/packages/original-my-app-1.jar:io.vavr:vavr\":                                                                 \"pkg:maven/io.vavr/vavr@0.10.2\",\n\t\"/packages/original-my-app-1.jar:io.vavr:vavr-match\":                                                           \"pkg:maven/io.vavr/vavr-match@0.10.2\",\n\t\"/packages/original-my-app-1.jar:jakarta.validation:jakarta.validation-api\":                                    \"pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2\",\n\t\"/packages/original-my-app-1.jar:javax.servlet:javax.servlet-api\":                                              \"pkg:maven/javax.servlet/javax.servlet-api@3.1.0\",\n\t\"/packages/original-my-app-1.jar:org.apache.activemq.protobuf:activemq-protobuf\":                               \"pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1\",\n\t\"/packages/original-my-app-1.jar:org.apache.commons:commons-compress\":                                          \"pkg:maven/org.apache.commons/commons-compress@1.21\",\n\t\"/packages/original-my-app-1.jar:org.apache.commons:commons-lang3\":                                             \"pkg:maven/org.apache.commons/commons-lang3@3.10\",\n\t\"/packages/original-my-app-1.jar:org.apache.maven.shared:maven-shared-utils\":                                   \"pkg:maven/org.apache.maven.shared/maven-shared-utils@3.3.4\",\n\t\"/packages/original-my-app-1.jar:org.codehaus.mojo:animal-sniffer-annotations\":                                 \"pkg:maven/org.codehaus.mojo/animal-sniffer-annotations@1.14\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty.http2:http2-common\":                                         \"pkg:maven/org.eclipse.jetty.http2/http2-common@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty.http2:http2-hpack\":                                          \"pkg:maven/org.eclipse.jetty.http2/http2-hpack@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty.toolchain.setuid:jetty-setuid-java\":                         \"pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-client\":                                               \"pkg:maven/org.eclipse.jetty/jetty-client@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-http\":                                                 \"pkg:maven/org.eclipse.jetty/jetty-http@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-io\":                                                   \"pkg:maven/org.eclipse.jetty/jetty-io@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-server\":                                               \"pkg:maven/org.eclipse.jetty/jetty-server@9.1.0.M0\",\n\t\"/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-util\":                                                 \"pkg:maven/org.eclipse.jetty/jetty-util@9.4.43.v20210629\",\n\t\"/packages/original-my-app-1.jar:org.everit.json:org.everit.json.schema\":                                       \"pkg:maven/org.everit.json/org.everit.json.schema@1.5.1\",\n\t\"/packages/original-my-app-1.jar:org.hibernate.validator:hibernate-validator\":                                  \"pkg:maven/org.hibernate.validator/hibernate-validator@6.2.4.Final\",\n\t\"/packages/original-my-app-1.jar:org.jboss.logging:jboss-logging\":                                              \"pkg:maven/org.jboss.logging/jboss-logging@3.4.1.Final\",\n\t\"/packages/original-my-app-1.jar:org.jctools:jctools-core\":                                                     \"pkg:maven/org.jctools/jctools-core@3.1.0\",\n\t\"/packages/original-my-app-1.jar:org.jetbrains:annotations\":                                                    \"pkg:maven/org.jetbrains/annotations@13.0\",\n\t\"/packages/original-my-app-1.jar:org.json:json\":                                                                \"pkg:maven/org.json/json@20160810\",\n\t\"/packages/original-my-app-1.jar:org.kohsuke:github-api\":                                                       \"pkg:maven/org.kohsuke/github-api@1.301\",\n\t\"/packages/original-my-app-1.jar:org.slf4j:log4j-over-slf4j\":                                                   \"pkg:maven/org.slf4j/log4j-over-slf4j@1.7.33\",\n\t\"/packages/original-my-app-1.jar:org.slf4j:slf4j-api\":                                                          \"pkg:maven/org.slf4j/slf4j-api@1.7.33\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.analyzer-commons:sonar-analyzer-test-commons\":                 \"pkg:maven/org.sonarsource.analyzer-commons/sonar-analyzer-test-commons@1.14.1.690\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.php:php-checks\":                                               \"pkg:maven/org.sonarsource.php/php-checks@3.17.0.7439\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.php:php-frontend\":                                             \"pkg:maven/org.sonarsource.php/php-frontend@3.17.0.7439\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.python:python-checks\":                                         \"pkg:maven/org.sonarsource.python/python-checks@3.4.1.8066\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.python:python-frontend\":                                       \"pkg:maven/org.sonarsource.python/python-frontend@3.4.1.8066\",\n\t\"/packages/original-my-app-1.jar:org.sonarsource.sslr:sslr-core\":                                               \"pkg:maven/org.sonarsource.sslr/sslr-core@1.24.0.633\",\n\t\"/packages/php-frontend-3.9.0.6331.jar\":                                                                        \"pkg:maven/org.sonarsource.php/php-frontend@3.9.0.6331\",\n\t\"/packages/postgresql-42.5.0.jar\":                                                                              \"pkg:maven/org.postgresql/postgresql@42.5.0\",\n\t\"/packages/protobuf-java-3.21.6.jar\":                                                                           \"pkg:maven/com.google.protobuf/protobuf-java@3.21.6\",\n\t\"/packages/python-frontend-3.24.0.10784.jar\":                                                                   \"pkg:maven/org.sonarsource.python/python-frontend@3.24.0.10784\",\n\t\"/packages/ratpack-core-1.8.2.jar\":                                                                             \"pkg:maven/io.ratpack/ratpack-core@1.8.2\",\n\t\"/packages/reactor-netty-core-1.0.35.jar\":                                                                      \"pkg:maven/io.projectreactor.netty/reactor-netty-core@1.0.35\",\n\t\"/packages/reactor-netty-http-1.1.9.jar\":                                                                       \"pkg:maven/io.projectreactor.netty/reactor-netty-http@1.1.9\",\n\t\"/packages/reactor-netty-incubator-quic-0.1.3.jar\":                                                             \"pkg:maven/io.projectreactor.netty.incubator/reactor-netty-incubator-quic@0.1.3\",\n\t\"/packages/resilience4j-prometheus-0.17.0.jar\":                                                                 \"pkg:maven/io.github.resilience4j.prometheus/resilience4j-prometheus@0.17.0\",\n\t\"/packages/script-security.hpi\":                                                                                \"pkg:maven/org.jenkins-ci.plugins/script-security@1.74\",\n\t\"/packages/script-security.hpi:WEB-INF/lib/caffeine-2.8.2.jar\":                                                 \"pkg:maven/com.github.ben-manes.caffeine/caffeine@2.8.2\",\n\t\"/packages/script-security.hpi:WEB-INF/lib/checker-qual-3.3.0.jar\":                                             \"pkg:maven/org.checkerframework.checker.qual/checker-qual@3.3.0\",\n\t\"/packages/script-security.hpi:WEB-INF/lib/error_prone_annotations-2.3.4.jar\":                                  \"pkg:maven/com.google.errorprone/error_prone_annotations@2.3.4\",\n\t\"/packages/script-security.hpi:WEB-INF/lib/groovy-sandbox-1.26.jar\":                                            \"pkg:maven/org.kohsuke/groovy-sandbox@1.26\",\n\t\"/packages/script-security.hpi:WEB-INF/lib/script-security.jar\":                                                \"pkg:maven/org.jenkins-ci.plugins/script-security@1.74\",\n\t\"/packages/shiro-core-1.9.1.jar\":                                                                               \"pkg:maven/org.apache.shiro/shiro-core@1.9.1\",\n\t\"/packages/solr-core-8.8.1.jar\":                                                                                \"pkg:maven/org.apache.solr/solr-core@8.8.1\",\n\t\"/packages/spring-amqp-2.4.17.jar\":                                                                             \"pkg:maven/org.springframework.amqp/spring-amqp@2.4.17\",\n\t\"/packages/spring-analytics-2.0.0.RELEASE.jar\":                                                                 \"pkg:maven/org.springframework.analytics/spring-analytics@2.0.0.RELEASE\",\n\t\"/packages/spring-asm-3.0.7.RELEASE.jar\":                                                                       \"pkg:maven/org.springframework/spring-asm@3.0.7.RELEASE\",\n\t\"/packages/spring-batch-core-4.2.1.RELEASE.jar\":                                                                \"pkg:maven/org.springframework.batch/spring-batch-core@4.2.1.RELEASE\",\n\t\"/packages/spring-boot-3.1.2.jar\":                                                                              \"pkg:maven/org.springframework.boot/spring-boot@3.1.2\",\n\t\"/packages/spring-cloud-app-broker-core-1.6.1.jar\":                                                             \"pkg:maven/org.springframework.cloud/spring-cloud-app-broker-core@1.6.1\",\n\t\"/packages/spring-cql-1.5.11.RELEASE.jar\":                                                                      \"pkg:maven/org.springframework.data/spring-cql@1.5.11.RELEASE\",\n\t\"/packages/spring-credhub-core-1.0.1.RELEASE.jar\":                                                              \"pkg:maven/org.springframework.credhub/spring-credhub-core@1.0.1.RELEASE\",\n\t\"/packages/spring-flex-1.0.3.RELEASE.jar\":                                                                      \"pkg:maven/org.springframework.flex/spring-flex@1.0.3.RELEASE\",\n\t\"/packages/spring-graphql-1.2.2.jar\":                                                                           \"pkg:maven/org.springframework.graphql/spring-graphql@1.2.2\",\n\t\"/packages/spring-hateoas-2.1.0.jar\":                                                                           \"pkg:maven/org.springframework.hateoas/spring-hateoas@2.1.0\",\n\t\"/packages/spring-integration-amqp-6.0.5.jar\":                                                                  \"pkg:maven/org.springframework.integration/spring-integration-amqp@6.0.5\",\n\t\"/packages/spring-kafka-3.0.9.jar\":                                                                             \"pkg:maven/org.springframework.kafka/spring-kafka@3.0.9\",\n\t\"/packages/spring-security-core-6.0.2.jar\":                                                                     \"pkg:maven/org.springframework.security/spring-security-core@6.0.2\",\n\t\"/packages/spring-security-kerberos-core-1.0.1.RELEASE.jar\":                                                    \"pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-core@1.0.1.RELEASE\",\n\t\"/packages/spring-security-oauth-2.5.1.RELEASE.jar\":                                                            \"pkg:maven/org.springframework.security.oauth/spring-security-oauth@2.5.1.RELEASE\",\n\t\"/packages/spring-security-oauth2-autoconfigure-2.5.9.jar\":                                                     \"pkg:maven/org.springframework.security.oauth.boot/spring-security-oauth2-autoconfigure@2.5.9\",\n\t\"/packages/spring-security-saml2-core-1.0.10.RELEASE.jar\":                                                      \"pkg:maven/org.springframework.security.extensions/spring-security-saml2-core@1.0.10.RELEASE\",\n\t\"/packages/spring-session-core-3.0.0.jar\":                                                                      \"pkg:maven/org.springframework.session/spring-session-core@3.0.0\",\n\t\"/packages/spring-social-core-1.1.2.RELEASE.jar\":                                                               \"pkg:maven/org.springframework.social/spring-social-core@1.1.2.RELEASE\",\n\t\"/packages/spring-vault-core-3.0.1.jar\":                                                                        \"pkg:maven/org.springframework.vault/spring-vault-core@3.0.1\",\n\t\"/packages/spring-webmvc-3.1.4.RELEASE.jar\":                                                                    \"pkg:maven/org.springframework/spring-webmvc@3.1.4.RELEASE\",\n\t\"/packages/spring-xml-3.0.3.RELEASE.jar\":                                                                       \"pkg:maven/org.springframework.ws/spring-xml@3.0.3.RELEASE\",\n\t\"/packages/ssh-credentials.hpi\":                                                                                \"pkg:maven/org.jenkins-ci.plugins/ssh-credentials@1.18.1\",\n\t\"/packages/ssh-credentials.hpi:WEB-INF/lib/ssh-credentials.jar\":                                                \"pkg:maven/org.jenkins-ci.plugins/ssh-credentials@1.18.1\",\n\t\"/packages/storm-core-1.2.2.jar\":                                                                               \"pkg:maven/org.apache.storm/storm-core@1.2.2\",\n\t\"/packages/storm-core-1.2.2.jar:cheshire:cheshire\":                                                             \"pkg:maven/cheshire/cheshire@5.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:clj-time:clj-time\":                                                             \"pkg:maven/clj-time/clj-time@0.8.0\",\n\t\"/packages/storm-core-1.2.2.jar:clout:clout\":                                                                   \"pkg:maven/clout/clout@1.2.0\",\n\t\"/packages/storm-core-1.2.2.jar:com.fasterxml.jackson.core:jackson-core\":                                       \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.9.4\",\n\t\"/packages/storm-core-1.2.2.jar:com.fasterxml.jackson.dataformat:jackson-dataformat-smile\":                     \"pkg:maven/com.fasterxml.jackson.dataformat/jackson-dataformat-smile@2.9.4\",\n\t\"/packages/storm-core-1.2.2.jar:com.google.guava:guava\":                                                        \"pkg:maven/com.google.guava/guava@16.0.1\",\n\t\"/packages/storm-core-1.2.2.jar:com.twitter:carbonite\":                                                         \"pkg:maven/com.twitter/carbonite@1.5.0\",\n\t\"/packages/storm-core-1.2.2.jar:commons-codec:commons-codec\":                                                   \"pkg:maven/commons-codec/commons-codec@1.6\",\n\t\"/packages/storm-core-1.2.2.jar:commons-collections:commons-collections\":                                       \"pkg:maven/commons-collections/commons-collections@3.2.2\",\n\t\"/packages/storm-core-1.2.2.jar:commons-fileupload:commons-fileupload\":                                         \"pkg:maven/commons-fileupload/commons-fileupload@1.3.2\",\n\t\"/packages/storm-core-1.2.2.jar:commons-io:commons-io\":                                                         \"pkg:maven/commons-io/commons-io@2.5\",\n\t\"/packages/storm-core-1.2.2.jar:commons-lang:commons-lang\":                                                     \"pkg:maven/commons-lang/commons-lang@2.5\",\n\t\"/packages/storm-core-1.2.2.jar:compojure:compojure\":                                                           \"pkg:maven/compojure/compojure@1.1.9\",\n\t\"/packages/storm-core-1.2.2.jar:hiccup:hiccup\":                                                                 \"pkg:maven/hiccup/hiccup@0.3.6\",\n\t\"/packages/storm-core-1.2.2.jar:io.netty:netty\":                                                                \"pkg:maven/io.netty/netty@3.9.9.Final\",\n\t\"/packages/storm-core-1.2.2.jar:joda-time:joda-time\":                                                           \"pkg:maven/joda-time/joda-time@2.3\",\n\t\"/packages/storm-core-1.2.2.jar:metrics-clojure:metrics-clojure\":                                               \"pkg:maven/metrics-clojure/metrics-clojure@2.5.1\",\n\t\"/packages/storm-core-1.2.2.jar:ns-tracker:ns-tracker\":                                                         \"pkg:maven/ns-tracker/ns-tracker@0.2.2\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.commons:commons-compress\":                                           \"pkg:maven/org.apache.commons/commons-compress@1.4.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.commons:commons-exec\":                                               \"pkg:maven/org.apache.commons/commons-exec@1.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.curator:curator-client\":                                             \"pkg:maven/org.apache.curator/curator-client@4.0.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.curator:curator-framework\":                                          \"pkg:maven/org.apache.curator/curator-framework@4.0.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.curator:curator-recipes\":                                            \"pkg:maven/org.apache.curator/curator-recipes@4.0.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.hadoop:hadoop-auth\":                                                 \"pkg:maven/org.apache.hadoop/hadoop-auth@2.6.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.httpcomponents:httpclient\":                                          \"pkg:maven/org.apache.httpcomponents/httpclient@4.3.3\",\n\t\"/packages/storm-core-1.2.2.jar:org.apache.httpcomponents:httpcore\":                                            \"pkg:maven/org.apache.httpcomponents/httpcore@4.4.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:java.jmx\":                                                          \"pkg:maven/org.clojure/java.jmx@0.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:math.numeric-tower\":                                                \"pkg:maven/org.clojure/math.numeric-tower@0.0.1\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:tools.cli\":                                                         \"pkg:maven/org.clojure/tools.cli@0.2.4\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:tools.logging\":                                                     \"pkg:maven/org.clojure/tools.logging@0.2.3\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:tools.macro\":                                                       \"pkg:maven/org.clojure/tools.macro@0.1.0\",\n\t\"/packages/storm-core-1.2.2.jar:org.clojure:tools.namespace\":                                                   \"pkg:maven/org.clojure/tools.namespace@0.2.4\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-client\":                                                \"pkg:maven/org.eclipse.jetty/jetty-client@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-continuation\":                                          \"pkg:maven/org.eclipse.jetty/jetty-continuation@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-http\":                                                  \"pkg:maven/org.eclipse.jetty/jetty-http@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-io\":                                                    \"pkg:maven/org.eclipse.jetty/jetty-io@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-security\":                                              \"pkg:maven/org.eclipse.jetty/jetty-security@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-server\":                                                \"pkg:maven/org.eclipse.jetty/jetty-server@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-servlet\":                                               \"pkg:maven/org.eclipse.jetty/jetty-servlet@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-servlets\":                                              \"pkg:maven/org.eclipse.jetty/jetty-servlets@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-util\":                                                  \"pkg:maven/org.eclipse.jetty/jetty-util@7.6.13.v20130916\",\n\t\"/packages/storm-core-1.2.2.jar:org.jgrapht:jgrapht-core\":                                                      \"pkg:maven/org.jgrapht/jgrapht-core@0.9.0\",\n\t\"/packages/storm-core-1.2.2.jar:org.yaml:snakeyaml\":                                                            \"pkg:maven/org.yaml/snakeyaml@1.11\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-codec\":                                                               \"pkg:maven/ring/ring-codec@1.0.0\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-core\":                                                                \"pkg:maven/ring/ring-core@1.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-devel\":                                                               \"pkg:maven/ring/ring-devel@1.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-jetty-adapter\":                                                       \"pkg:maven/ring/ring-jetty-adapter@1.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-json\":                                                                \"pkg:maven/ring/ring-json@0.3.1\",\n\t\"/packages/storm-core-1.2.2.jar:ring:ring-servlet\":                                                             \"pkg:maven/ring/ring-servlet@1.3.1\",\n\t\"/packages/tapestry-core-5.8.1.jar\":                                                                            \"pkg:maven/org.apache.tapestry/tapestry-core@5.8.1\",\n\t\"/packages/tika-core-1.26.jar\":                                                                                 \"pkg:maven/org.apache.tika/tika-core@1.26\",\n\t\"/packages/tomcat-catalina-11.0.0-M1.jar\":                                                                      \"pkg:maven/org.apache.tomcat/tomcat-catalina@11.0.0-M1\",\n\t\"/packages/tomcat-embed-core-11.0.0-M7.jar\":                                                                    \"pkg:maven/org.apache.tomcat.embed/tomcat-embed-core@11.0.0-M7\",\n\t\"/packages/TwilioNotifier.hpi\":                                                                                 \"pkg:maven/com.twilio.jenkins/TwilioNotifier@0.2.1\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-codec-1.2.jar\":                                               \"pkg:maven/commons-codec/commons-codec@1.2\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-logging-1.0.4.jar\":                                           \"pkg:maven/commons-logging/commons-logging@1.0.4\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/log4j-1.2.9.jar\":                                                     \"pkg:maven/log4j/log4j@1.2.9\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-codec:commons-codec\":                             \"pkg:maven/commons-codec/commons-codec@1.4\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-lang:commons-lang\":                               \"pkg:maven/commons-lang/commons-lang@2.5\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-logging:commons-logging\":                         \"pkg:maven/commons-logging/commons-logging@1.1.1\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.apache.httpcomponents:httpclient\":                    \"pkg:maven/org.apache.httpcomponents/httpclient@4.1.1\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.apache.httpcomponents:httpcore\":                      \"pkg:maven/org.apache.httpcomponents/httpcore@4.1\",\n\t\"/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.easymock:easymock\":                                   \"pkg:maven/org.easymock/easymock@2.4\",\n\t\"/packages/undertow-core-2.3.4.Final.jar\":                                                                      \"pkg:maven/io.undertow/undertow-core@2.3.4.Final\",\n\t\"/packages/vaadin-client-8.11.3.jar\":                                                                           \"pkg:maven/com.vaadin/vaadin-client@8.11.3\",\n\t\"/packages/velocity-1.7.jar\":                                                                                   \"pkg:maven/org.apache.velocity/velocity@1.7\",\n\t\"/packages/vertx-web-4.3.7.jar\":                                                                                \"pkg:maven/io.vertx/vertx-web@4.3.7\",\n\t\"/packages/wicket-core-9.2.0.jar\":                                                                              \"pkg:maven/org.apache.wicket/wicket-core@9.2.0\",\n\t\"/packages/xalan-2.7.2.jar\":                                                                                    \"pkg:maven/xalan/xalan@2.7.2\",\n\t\"/packages/xmlpull-1.1.3.1.jar\":                                                                                \"pkg:maven/xmlpull/xmlpull@1.1.3.1\",\n\t\"/packages/xstream-1.4.11.1.jar\":                                                                               \"pkg:maven/com.thoughtworks.xstream/xstream@1.4.11.1\",\n\t\"/packages/xstream-1.4.19.jar\":                                                                                 \"pkg:maven/com.thoughtworks.xstream/xstream@1.4.19\",\n\t\"/packages/xwiki-commons-xml-15.1.jar\":                                                                         \"pkg:maven/org.xwiki.commons/xwiki-commons-xml@15.1\",\n\t\"/packages/xwiki-platform-oldcore-15.3.jar\":                                                                    \"pkg:maven/org.xwiki.platform/xwiki-platform-oldcore@15.3\",\n\t\"/packages/zookeeper-3.7.1.jar\":                                                                                \"pkg:maven/org.apache.zookeeper/zookeeper@3.7.1\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar:jline:jline\":             \"pkg:maven/jline/jline@2.11\",\n\t\"/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar:rubygems:jruby-readline\": \"pkg:maven/rubygems/jruby-readline@1.2.0\",\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/mariner_distroless_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestMarinerDistroless(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-mariner-distroless\", source.SquashedScope)\n\n\t// 12 RPMs + 2 binaries with ELF package notes claiming to be RPMs\n\texpectedPkgs := 14\n\tactualPkgs := 0\n\tfor range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {\n\t\tactualPkgs += 1\n\t}\n\n\tif actualPkgs != expectedPkgs {\n\t\tt.Errorf(\"unexpected number of RPM packages: %d != %d\", expectedPkgs, actualPkgs)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/node_packages_test.go",
    "content": "package integration\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestNpmPackageLockDirectory(t *testing.T) {\n\tsbom, _ := catalogDirectory(t, \"testdata/npm-lock\")\n\n\tfoundPackages := strset.New()\n\n\tfor actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {\n\t\tfor _, actualLocation := range actualPkg.Locations.ToSlice() {\n\t\t\tif strings.Contains(actualLocation.RealPath, \"node_modules\") {\n\t\t\t\tt.Errorf(\"found packages from package-lock.json in node_modules: %s\", actualLocation)\n\t\t\t}\n\t\t}\n\t\tfoundPackages.Add(actualPkg.Name)\n\t}\n\n\t// ensure that integration test commonTestCases stay in sync with the available catalogers\n\tconst expectedPackageCount = 2\n\tif foundPackages.Size() != expectedPackageCount {\n\t\tt.Errorf(\"found the wrong set of npm package-lock.json packages (expected: %d, actual: %d)\", expectedPackageCount, foundPackages.Size())\n\t}\n}\n\nfunc TestYarnPackageLockDirectory(t *testing.T) {\n\tsbom, _ := catalogDirectory(t, \"testdata/yarn-lock\")\n\n\tfoundPackages := strset.New()\n\t// merge-objects and should-type are devDependencies in package.json and are excluded by default\n\texpectedPackages := strset.New(\"async@0.9.2\", \"async@3.2.3\", \"@4lolo/resize-observer-polyfill@1.5.2\")\n\n\tfor actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {\n\t\tfor _, actualLocation := range actualPkg.Locations.ToSlice() {\n\t\t\tif strings.Contains(actualLocation.RealPath, \"node_modules\") {\n\t\t\t\tt.Errorf(\"found packages from yarn.lock in node_modules: %s\", actualLocation)\n\t\t\t}\n\t\t}\n\t\tfoundPackages.Add(actualPkg.Name + \"@\" + actualPkg.Version)\n\t}\n\n\t// ensure that integration test commonTestCases stay in sync with the available catalogers\n\tif foundPackages.Size() != expectedPackages.Size() {\n\t\tt.Errorf(\"found the wrong set of yarn.lock packages (expected: %d, actual: %d)\", expectedPackages.Size(), foundPackages.Size())\n\t} else if !reflect.DeepEqual(foundPackages, expectedPackages) {\n\t\tt.Errorf(\"found the wrong set of yarn.lock packages (expected: %+q, actual: %+q)\", expectedPackages.List(), foundPackages.List())\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/package_binary_elf_relationships_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestBinaryElfRelationships(t *testing.T) {\n\t// node --> [\"dependency of\" nodes]\n\texpectedGraph := map[string][]string{\n\t\t\"glibc\": {\n\t\t\t\"libhello_world.so\",\n\t\t\t\"syfttestfixture\",\n\t\t},\n\t\t\"libstdc++\": {\n\t\t\t\"syfttestfixture\",\n\t\t},\n\t\t\"libhello_world.so\": {\n\t\t\t\"syfttestfixture\",\n\t\t},\n\t}\n\n\t// run the test...\n\tsbom, _ := catalogFixtureImage(t, \"elf-testdata\", source.SquashedScope)\n\n\t// get a mapping of package names to their IDs\n\tnameToId := map[string]artifact.ID{}\n\n\trecordPkgId := func(name string) {\n\t\tpkgs := sbom.Artifacts.Packages.PackagesByName(name)\n\t\trequire.NotEmpty(t, pkgs, \"expected package %q to be present in the SBOM\", name)\n\t\tfor _, p := range pkgs {\n\t\t\tnameToId[p.Name] = p.ID()\n\t\t}\n\t}\n\tfor name, depNames := range expectedGraph {\n\t\trecordPkgId(name)\n\t\tfor _, depName := range depNames {\n\t\t\trecordPkgId(depName)\n\t\t}\n\t}\n\n\trelationshipIndex := relationship.NewIndex(sbom.Relationships...)\n\tfor name, expectedDepNames := range expectedGraph {\n\t\tpkgId := nameToId[name]\n\t\tp := sbom.Artifacts.Packages.Package(pkgId)\n\t\trequire.NotNil(t, p, \"expected package %q to be present in the SBOM\", name)\n\n\t\trels := relationshipIndex.References(*p, artifact.DependencyOfRelationship)\n\t\trequire.NotEmpty(t, rels, \"expected package %q to have relationships\", name)\n\n\t\ttoIds := map[artifact.ID]struct{}{}\n\t\tfor _, rel := range rels {\n\t\t\ttoIds[rel.To.ID()] = struct{}{}\n\t\t}\n\n\t\tfor _, depName := range expectedDepNames {\n\t\t\tdepId := nameToId[depName]\n\t\t\t_, exists := toIds[depId]\n\t\t\trequire.True(t, exists, \"expected package %q to have a relationship to %q\", name, depName)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/package_cataloger_convention_test.go",
    "content": "package integration\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_packageCatalogerExports(t *testing.T) {\n\t// sanity check that we are actually finding exports\n\n\texports := packageCatalogerExports(t)\n\trequire.NotEmpty(t, exports)\n\n\texpectAtLeast := map[string]*strset.Set{\n\t\t\"golang\": strset.New(\"NewGoModuleFileCataloger\", \"NewGoModuleBinaryCataloger\", \"CatalogerConfig\", \"DefaultCatalogerConfig\"),\n\t}\n\n\tfor pkg, expected := range expectAtLeast {\n\t\tactual, ok := exports[pkg]\n\t\trequire.True(t, ok, pkg)\n\t\tif !assert.True(t, actual.Names().IsSubset(expected), pkg) {\n\t\t\tt.Logf(\"missing: %s\", strset.SymmetricDifference(expected, actual.Names()))\n\t\t}\n\t}\n\n}\n\nfunc Test_validatePackageCatalogerExport(t *testing.T) {\n\tcases := []struct {\n\t\tname    string\n\t\texport  exportToken\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t// valid...\n\t\t{\n\t\t\tname: \"valid constructor\",\n\t\t\texport: exportToken{\n\t\t\t\tName:          \"NewFooCataloger\",\n\t\t\t\tType:          \"*ast.FuncType\",\n\t\t\t\tSignatureSize: 1,\n\t\t\t\tReturnTypeNames: []string{\n\t\t\t\t\t\"pkg.Cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"valid default config\",\n\t\t\texport: exportToken{\n\t\t\t\tName:          \"DefaultFooConfig\",\n\t\t\t\tType:          \"*ast.FuncType\",\n\t\t\t\tSignatureSize: 0,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"valid config\",\n\t\t\texport: exportToken{\n\t\t\t\tName: \"FooConfig\",\n\t\t\t\tType: \"*ast.StructType\",\n\t\t\t},\n\t\t},\n\t\t// invalid...\n\t\t{\n\t\t\tname: \"constructor that returns a concrete type\",\n\t\t\texport: exportToken{\n\t\t\t\tName:          \"NewFooCataloger\",\n\t\t\t\tType:          \"*ast.FuncType\",\n\t\t\t\tSignatureSize: 1,\n\t\t\t\tReturnTypeNames: []string{\n\t\t\t\t\t\"*generic.Cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"struct with constructor name\",\n\t\t\texport: exportToken{\n\t\t\t\tName: \"NewFooCataloger\",\n\t\t\t\tType: \"*ast.StructType\",\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"struct with default config fn name\",\n\t\t\texport: exportToken{\n\t\t\t\tName: \"DefaultFooConfig\",\n\t\t\t\tType: \"*ast.StructType\",\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"fn with struct name\",\n\t\t\texport: exportToken{\n\t\t\t\tName: \"FooConfig\",\n\t\t\t\tType: \"*ast.FuncType\",\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"default config with parameters\",\n\t\t\texport: exportToken{\n\t\t\t\tName:          \"DefaultFooConfig\",\n\t\t\t\tType:          \"*ast.FuncType\",\n\t\t\t\tSignatureSize: 1,\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tif c.wantErr == nil {\n\t\t\t\tc.wantErr = assert.NoError\n\t\t\t}\n\t\t\terr := validatePackageCatalogerExport(t, \"test\", c.export)\n\t\t\tc.wantErr(t, err)\n\t\t})\n\t}\n}\n\nfunc Test_PackageCatalogerConventions(t *testing.T) {\n\t// look at each package in syft/pkg/cataloger...\n\t// we want to make certain that only the following things are exported from the package:\n\t// - function matching New*Cataloger (e.g. NewAptCataloger)\n\t// - function matching Default*Config\n\t// - struct matching *Config\n\t//\n\t// anything else that is exported should result in the test failing.\n\t// note: this is meant to apply to things in static space, not methods on structs or within interfaces.\n\t//\n\t// this additionally ensures that:\n\t// - any config struct has a Default*Config function to pair with it.\n\t// - all cataloger constructors return pkg.Cataloger interface instead of a concrete type\n\n\texportsPerPackage := packageCatalogerExports(t)\n\n\t//for debugging purposes...\n\t//for pkg, exports := range exportsPerPackage {\n\t//\tt.Log(pkg)\n\t//\tfor _, export := range exports {\n\t//\t\tt.Logf(\"  %#v\", export)\n\t//\t}\n\t//}\n\n\tfor pkg, exports := range exportsPerPackage {\n\t\tfor _, export := range exports.List() {\n\t\t\t// assert the export name is valid...\n\t\t\tassert.NoError(t, validatePackageCatalogerExport(t, pkg, export))\n\n\t\t\t// assert that config structs have a Default*Config functions to pair with them...\n\t\t\tif strings.Contains(export.Name, \"Config\") && !strings.Contains(export.Name, \"Default\") {\n\t\t\t\t// this is a config struct, make certain there is a pairing with a Default*Config function\n\t\t\t\tassert.True(t, exports.Has(\"Default\"+export.Name), \"cataloger config struct %q in pkg %q must have a 'Default%s' function\", export.Name, pkg, export.Name)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc validatePackageCatalogerExport(t *testing.T, pkg string, export exportToken) error {\n\n\tconstructorMatches, err := doublestar.Match(\"New*Cataloger\", export.Name)\n\trequire.NoError(t, err)\n\n\tdefaultConfigMatches, err := doublestar.Match(\"Default*Config\", export.Name)\n\trequire.NoError(t, err)\n\n\tconfigMatches, err := doublestar.Match(\"*Config\", export.Name)\n\trequire.NoError(t, err)\n\n\tswitch {\n\tcase constructorMatches:\n\t\tif !export.isFunction() {\n\t\t\treturn fmt.Errorf(\"constructor convention used for non-function in pkg=%q: %#v\", pkg, export)\n\t\t}\n\n\t\treturnTypes := strset.New(export.ReturnTypeNames...)\n\t\tif !returnTypes.Has(\"pkg.Cataloger\") {\n\t\t\treturn fmt.Errorf(\"constructor convention is to return pkg.Cataloger and not concrete types. pkg=%q constructor=%q types=%+v\", pkg, export.Name, strings.Join(export.ReturnTypeNames, \",\"))\n\t\t}\n\n\tcase defaultConfigMatches:\n\t\tif !export.isFunction() {\n\t\t\treturn fmt.Errorf(\"default config convention used for non-function in pkg=%q: %#v\", pkg, export)\n\t\t}\n\t\tif export.SignatureSize != 0 {\n\t\t\treturn fmt.Errorf(\"default config convention used for non-zero signature size in pkg=%q: %#v\", pkg, export)\n\t\t}\n\tcase configMatches:\n\t\tif !export.isStruct() {\n\t\t\treturn fmt.Errorf(\"config convention used for non-struct in pkg=%q: %#v\", pkg, export)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"unexpected export in pkg=%q: %#v\", pkg, export)\n\t}\n\treturn nil\n}\n\ntype exportToken struct {\n\tName            string\n\tType            string\n\tSignatureSize   int\n\tReturnTypeNames []string\n}\n\nfunc (e exportToken) isFunction() bool {\n\treturn strings.Contains(e.Type, \"ast.FuncType\")\n}\n\nfunc (e exportToken) isStruct() bool {\n\treturn strings.Contains(e.Type, \"ast.StructType\")\n}\n\ntype exportTokenSet map[string]exportToken\n\nfunc (s exportTokenSet) Names() *strset.Set {\n\tset := strset.New()\n\tfor k := range s {\n\t\tset.Add(k)\n\t}\n\treturn set\n}\n\nfunc (s exportTokenSet) Has(name string) bool {\n\t_, ok := s[name]\n\treturn ok\n}\n\nfunc (s exportTokenSet) Add(tokens ...exportToken) {\n\tfor _, t := range tokens {\n\t\tif _, ok := s[t.Name]; ok {\n\t\t\tpanic(\"duplicate token name: \" + t.Name)\n\t\t}\n\t\ts[t.Name] = t\n\t}\n}\n\nfunc (s exportTokenSet) Remove(names ...string) {\n\tfor _, name := range names {\n\t\tdelete(s, name)\n\t}\n}\n\nfunc (s exportTokenSet) List() []exportToken {\n\tvar tokens []exportToken\n\tfor _, t := range s {\n\t\ttokens = append(tokens, t)\n\t}\n\treturn tokens\n}\n\nfunc packageCatalogerExports(t *testing.T) map[string]exportTokenSet {\n\tt.Helper()\n\n\tcatalogerPath := filepath.Join(repoRoot(t), \"syft\", \"pkg\", \"cataloger\")\n\n\tignorePaths := []string{\n\t\tfilepath.Join(catalogerPath, \"common\"),\n\t\tfilepath.Join(catalogerPath, \"generic\"),\n\t}\n\n\texportsPerPackage := make(map[string]exportTokenSet)\n\n\terr := filepath.Walk(catalogerPath, func(path string, info os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\n\t\tif info.IsDir() ||\n\t\t\t!strings.HasSuffix(info.Name(), \".go\") ||\n\t\t\tstrings.HasSuffix(info.Name(), \"_test.go\") ||\n\t\t\tstrings.Contains(path, \"testdata\") ||\n\t\t\tstrings.Contains(path, \"internal\") {\n\t\t\treturn nil\n\t\t}\n\n\t\tfor _, ignorePath := range ignorePaths {\n\t\t\tif strings.Contains(path, ignorePath) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\n\t\tfset := token.NewFileSet()\n\t\tnode, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\t\trequire.NoError(t, err)\n\n\t\tpkg := node.Name.Name\n\t\tfor _, f := range node.Decls {\n\t\t\tswitch decl := f.(type) {\n\t\t\tcase *ast.GenDecl:\n\t\t\t\tfor _, spec := range decl.Specs {\n\t\t\t\t\tswitch spec := spec.(type) {\n\t\t\t\t\tcase *ast.TypeSpec:\n\t\t\t\t\t\tif spec.Name.IsExported() {\n\t\t\t\t\t\t\tif _, ok := exportsPerPackage[pkg]; !ok {\n\t\t\t\t\t\t\t\texportsPerPackage[pkg] = make(exportTokenSet)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\texportsPerPackage[pkg].Add(exportToken{\n\t\t\t\t\t\t\t\tName: spec.Name.Name,\n\t\t\t\t\t\t\t\tType: reflect.TypeOf(spec.Type).String(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase *ast.FuncDecl:\n\t\t\t\tif decl.Recv == nil && decl.Name.IsExported() {\n\t\t\t\t\tvar returnTypes []string\n\t\t\t\t\tif decl.Type.Results != nil {\n\t\t\t\t\t\tfor _, field := range decl.Type.Results.List {\n\t\t\t\t\t\t\t// TODO: there is probably a better way to extract the specific type name\n\t\t\t\t\t\t\t//ty := strings.Join(strings.Split(fmt.Sprint(field.Type), \" \"), \".\")\n\t\t\t\t\t\t\tty := types.ExprString(field.Type)\n\n\t\t\t\t\t\t\treturnTypes = append(returnTypes, ty)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif _, ok := exportsPerPackage[pkg]; !ok {\n\t\t\t\t\t\texportsPerPackage[pkg] = make(exportTokenSet)\n\t\t\t\t\t}\n\t\t\t\t\texportsPerPackage[pkg].Add(exportToken{\n\t\t\t\t\t\tName:            decl.Name.Name,\n\t\t\t\t\t\tType:            reflect.TypeOf(decl.Type).String(),\n\t\t\t\t\t\tSignatureSize:   len(decl.Type.Params.List),\n\t\t\t\t\t\tReturnTypeNames: returnTypes,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\t// remove exceptions\n\t// these are known violations to the common convention that are allowed.\n\tif vs, ok := exportsPerPackage[\"binary\"]; ok {\n\t\tvs.Remove(\"Classifier\", \"EvidenceMatcher\", \"FileContentsVersionMatcher\", \"DefaultClassifiers\")\n\t}\n\n\treturn exportsPerPackage\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/package_catalogers_represented_test.go",
    "content": "package integration\n\nimport (\n\t\"bytes\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n)\n\nfunc TestAllPackageCatalogersReachableInTasks(t *testing.T) {\n\t// we want to see if we can get a task for all package catalogers. This is a bit tricky since we\n\t// don't have a nice way to find all cataloger names in the codebase. Instead, we'll look at the\n\t// count of unique task names from the package task factory set and compare that with the known constructors\n\t// from a source analysis... they should match.\n\n\t// additionally, at this time they should either have a \"directory\" or \"image\" tag as well. If there is no tag\n\t// on a cataloger task then the test should fail.\n\n\ttaskFactories := task.DefaultPackageTaskFactories()\n\ttaskTagsByName := make(map[string][]string)\n\tfor _, factory := range taskFactories {\n\t\ttsk := factory(task.DefaultCatalogingFactoryConfig())\n\t\tif taskTagsByName[tsk.Name()] != nil {\n\t\t\tt.Fatalf(\"duplicate task name: %q\", tsk.Name())\n\t\t}\n\n\t\trequire.NotNil(t, tsk)\n\t\tif sel, ok := tsk.(task.Selector); ok {\n\t\t\ttaskTagsByName[tsk.Name()] = sel.Selectors()\n\t\t} else {\n\t\t\ttaskTagsByName[tsk.Name()] = []string{}\n\t\t}\n\t}\n\n\tvar constructorCount int\n\tconstructorsPerPackage := getCatalogerConstructors(t)\n\tfor _, constructors := range constructorsPerPackage {\n\t\tconstructorCount += constructors.Size()\n\t}\n\n\tassert.Equal(t, len(taskTagsByName), constructorCount, \"mismatch in number of cataloger constructors and task names\")\n\n\texceptions := strset.New(\n\t\t// not reachable since they are deprecated\n\t\t\"dotnet-portable-executable-cataloger\",\n\t\t\"dotnet-deps-cataloger\",\n\t\t\"nix-store-cataloger\",\n\t\t\"php-pecl-serialized-cataloger\",\n\t\t// not reachable by design\n\t\t\"sbom-cataloger\",\n\t)\n\n\tfor taskName, tags := range taskTagsByName {\n\t\tif exceptions.Has(taskName) {\n\t\t\tcontinue // this is a special case\n\t\t}\n\t\tif !strset.New(tags...).HasAny(pkgcataloging.ImageTag, pkgcataloging.DirectoryTag) {\n\t\t\tt.Errorf(\"task %q is missing 'directory' or 'image' a tag\", taskName)\n\t\t}\n\t}\n\n}\n\nfunc TestAllPackageCatalogersRepresentedInSource(t *testing.T) {\n\t// find all functions in syft/pkg/cataloger/** that either:\n\t// - match the name glob \"New*Cataloger\"\n\t// - are in cataloger.go and match the name glob \"New*\"\n\t//\n\t// Then:\n\t// - keep track of all packages with cataloger constructors\n\t// - keep track of all constructors\n\tconstructorsPerPackage := getCatalogerConstructors(t)\n\n\t// look at the source file in internal/task/package_tasks.go:\n\t// - ensure all go packages that have constructors are imported\n\t// - ensure there is a reference to all package constructors\n\tassertAllPackageCatalogersRepresented(t, constructorsPerPackage)\n}\n\nfunc getCatalogerConstructors(t *testing.T) map[string]*strset.Set {\n\tt.Helper()\n\troot := repoRoot(t)\n\tcatalogerPath := filepath.Join(root, \"syft\", \"pkg\", \"cataloger\")\n\n\tconstructorsPerPackage := make(map[string]*strset.Set)\n\n\terr := filepath.Walk(catalogerPath, func(path string, info os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\n\t\t// ignore directories and test files...\n\t\tif info.IsDir() || strings.HasSuffix(info.Name(), \"_test.go\") {\n\t\t\treturn nil\n\t\t}\n\n\t\tpartialResults := getConstructorsFromExpectedFile(t, path, info)\n\n\t\tconstructorsPerPackage = mergeConstructors(constructorsPerPackage, partialResults)\n\n\t\tpartialResults = getCatalogerConstructorsFromPackage(t, path, info)\n\n\t\tconstructorsPerPackage = mergeConstructors(constructorsPerPackage, partialResults)\n\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\t// remove some exceptions\n\tdelete(constructorsPerPackage, \"generic\") // this is not an actual cataloger\n\n\treturn constructorsPerPackage\n}\n\nfunc getConstructorsFromExpectedFile(t *testing.T, path string, info os.FileInfo) map[string][]string {\n\tconstructorsPerPackage := make(map[string][]string)\n\n\tif !strings.HasSuffix(info.Name(), \"cataloger.go\") && !strings.HasSuffix(info.Name(), \"catalogers.go\") {\n\t\treturn nil\n\t}\n\n\tfset := token.NewFileSet()\n\tnode, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\trequire.NoError(t, err)\n\n\tfor _, f := range node.Decls {\n\t\tfn, ok := f.(*ast.FuncDecl)\n\t\tif !ok || fn.Recv != nil || !strings.HasPrefix(fn.Name.Name, \"New\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tpkg := node.Name.Name\n\t\tconstructorsPerPackage[pkg] = append(constructorsPerPackage[pkg], fn.Name.Name)\n\t}\n\n\treturn constructorsPerPackage\n}\n\nfunc getCatalogerConstructorsFromPackage(t *testing.T, path string, info os.FileInfo) map[string][]string {\n\tconstructorsPerPackage := make(map[string][]string)\n\n\tif info.IsDir() || !strings.HasSuffix(info.Name(), \".go\") {\n\t\treturn nil\n\t}\n\n\tfset := token.NewFileSet()\n\tnode, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\trequire.NoError(t, err)\n\n\tfor _, f := range node.Decls {\n\t\tfn, ok := f.(*ast.FuncDecl)\n\t\tif !ok || fn.Recv != nil || !strings.HasPrefix(fn.Name.Name, \"New\") || !strings.HasSuffix(fn.Name.Name, \"Cataloger\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tpkg := node.Name.Name\n\t\tconstructorsPerPackage[pkg] = append(constructorsPerPackage[pkg], fn.Name.Name)\n\t}\n\n\treturn constructorsPerPackage\n}\n\nfunc assertAllPackageCatalogersRepresented(t *testing.T, constructorsPerPackage map[string]*strset.Set) {\n\tt.Helper()\n\n\tcontents, err := os.ReadFile(filepath.Join(repoRoot(t), \"internal\", \"task\", \"package_tasks.go\"))\n\trequire.NoError(t, err)\n\n\t// ensure all packages (keys) are represented in the package_tasks.go file\n\tfor pkg, constructors := range constructorsPerPackage {\n\t\tif !assert.True(t, bytes.Contains(contents, []byte(pkg)), \"missing package %q\", pkg) {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, constructor := range constructors.List() {\n\t\t\tassert.True(t, bytes.Contains(contents, []byte(constructor)), \"missing constructor %q for package %q\", constructor, pkg)\n\t\t}\n\t}\n\n}\n\nfunc repoRoot(t testing.TB) string {\n\tt.Helper()\n\troot, err := exec.Command(\"git\", \"rev-parse\", \"--show-toplevel\").Output()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to find repo root dir: %+v\", err)\n\t}\n\tabsRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))\n\tif err != nil {\n\t\tt.Fatal(\"unable to get abs path to repo root:\", err)\n\t}\n\treturn absRepoRoot\n}\n\nfunc mergeConstructors(constructorsPerPackage map[string]*strset.Set, partialResults map[string][]string) map[string]*strset.Set {\n\tfor pkg, constructors := range partialResults {\n\t\tif _, ok := constructorsPerPackage[pkg]; !ok {\n\t\t\tconstructorsPerPackage[pkg] = strset.New()\n\t\t}\n\t\tconstructorsPerPackage[pkg].Add(constructors...)\n\t}\n\n\treturn constructorsPerPackage\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/package_deduplication_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestPackageDeduplication(t *testing.T) {\n\t// this test verifies that package deduplication works correctly across layers.\n\t// The test fixture installs/upgrades packages in multiple stages, creating\n\t// duplicate RPM DB entries across layers. Without deduplication, we'd see ~600 packages.\n\t//\n\t// Note: we index by package name (not name-version) to be resilient to Rocky Linux\n\t// repo updates. Location counts are summed across all versions of each package.\n\ttests := []struct {\n\t\tscope         source.Scope\n\t\tpackageCount  int\n\t\tinstanceCount map[string]int // how many distinct package instances (by name)\n\t\tlocationCount map[string]int // total locations across ALL versions of each package\n\t}{\n\t\t{\n\t\t\tscope:        source.AllLayersScope,\n\t\t\tpackageCount: 176, // without deduplication this would be ~600\n\t\t\tinstanceCount: map[string]int{\n\t\t\t\t\"basesystem\":   1,\n\t\t\t\t\"wget\":         1,\n\t\t\t\t\"curl-minimal\": 2, // base + upgraded (2 different versions)\n\t\t\t\t\"vsftpd\":       1,\n\t\t\t\t\"httpd\":        1,\n\t\t\t},\n\t\t\tlocationCount: map[string]int{\n\t\t\t\t\"basesystem\":   5, // in all layers\n\t\t\t\t\"curl-minimal\": 5, // total across both versions (2 + 3)\n\t\t\t\t\"wget\":         4, // wget + all above layers\n\t\t\t\t\"vsftpd\":       2, // vsftpd + all above layers\n\t\t\t\t\"httpd\":        1, // last layer\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tscope:        source.SquashedScope,\n\t\t\tpackageCount: 170,\n\t\t\tinstanceCount: map[string]int{\n\t\t\t\t\"basesystem\":   1,\n\t\t\t\t\"wget\":         1,\n\t\t\t\t\"curl-minimal\": 1, // deduped to latest\n\t\t\t\t\"vsftpd\":       1,\n\t\t\t\t\"httpd\":        1,\n\t\t\t},\n\t\t\tlocationCount: map[string]int{\n\t\t\t\t\"basesystem\":   1,\n\t\t\t\t\"curl-minimal\": 1,\n\t\t\t\t\"wget\":         1,\n\t\t\t\t\"vsftpd\":       1,\n\t\t\t\t\"httpd\":        1,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(string(tt.scope), func(t *testing.T) {\n\t\t\tsbom, _ := catalogFixtureImage(t, \"image-vertical-package-dups\", tt.scope)\n\n\t\t\t// verify binary packages have names\n\t\t\tfor _, p := range sbom.Artifacts.Packages.Sorted() {\n\t\t\t\tif p.Type == pkg.BinaryPkg {\n\t\t\t\t\tassert.NotEmpty(t, p.Name)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// verify exact package count\n\t\t\tassert.Equal(t, tt.packageCount, sbom.Artifacts.Packages.PackageCount())\n\n\t\t\t// verify instance count by package name\n\t\t\tfor name, expectedCount := range tt.instanceCount {\n\t\t\t\tpkgs := sbom.Artifacts.Packages.PackagesByName(name)\n\t\t\t\tassert.Len(t, pkgs, expectedCount, \"unexpected instance count for %s\", name)\n\t\t\t}\n\n\t\t\t// verify total location count across all versions of each package\n\t\t\tfor name, expectedLocCount := range tt.locationCount {\n\t\t\t\tpkgs := sbom.Artifacts.Packages.PackagesByName(name)\n\t\t\t\ttotalLocations := 0\n\t\t\t\tfor _, p := range pkgs {\n\t\t\t\t\ttotalLocations += len(p.Locations.ToSlice())\n\t\t\t\t}\n\t\t\t\tassert.Equal(t, expectedLocCount, totalLocations, \"unexpected total location count for %s\", name)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/package_ownership_relationship_test.go",
    "content": "package integration\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\tsyftjsonModel \"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestPackageOwnershipRelationships(t *testing.T) {\n\t// ensure that the json encoder is applying artifact ownership with an image that has expected ownership relationships\n\ttests := []struct {\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tfixture: \"image-owning-package\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tsbom, _ := catalogFixtureImage(t, test.fixture, source.SquashedScope)\n\n\t\t\toutput := bytes.NewBufferString(\"\")\n\t\t\terr := syftjson.NewFormatEncoder().Encode(output, sbom)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar doc syftjsonModel.Document\n\t\t\tdecoder := json.NewDecoder(output)\n\t\t\tif err := decoder.Decode(&doc); err != nil {\n\t\t\t\tt.Fatalf(\"unable to decode json doc: %+v\", err)\n\t\t\t}\n\n\t\t\tif len(doc.ArtifactRelationships) == 0 {\n\t\t\t\tt.Errorf(\"expected to find relationships between packages but found none\")\n\t\t\t}\n\n\t\t})\n\t}\n\n}\n\nfunc TestPackageOwnershipExclusions(t *testing.T) {\n\t// ensure that the json encoder is excluding packages by artifact ownership with an image that has expected ownership relationships\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tname:    \"busybox binary is filtered based on ownership relationship\",\n\t\t\tfixture: \"image-os-binary-overlap\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tsbom, _ := catalogFixtureImage(t, test.fixture, source.SquashedScope)\n\t\t\tbinaryPackages := make([]pkg.Package, 0)\n\t\t\tapkPackages := make([]pkg.Package, 0)\n\t\t\tfor p := range sbom.Artifacts.Packages.Enumerate() {\n\t\t\t\tif p.Type == pkg.BinaryPkg && p.Name == \"busybox\" {\n\t\t\t\t\tbinaryPackages = append(binaryPackages, p)\n\t\t\t\t}\n\t\t\t\tif p.Type == pkg.ApkPkg && p.Name == \"busybox\" {\n\t\t\t\t\tapkPackages = append(apkPackages, p)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(binaryPackages) != 0 {\n\t\t\t\tpackageNames := make([]string, 0)\n\t\t\t\tfor _, p := range binaryPackages {\n\t\t\t\t\tpackageNames = append(packageNames, p.Name)\n\t\t\t\t}\n\t\t\t\tt.Errorf(\"expected to find no binary packages but found %d packages: %v\", len(binaryPackages), packageNames)\n\t\t\t}\n\t\t\tif len(apkPackages) == 0 {\n\t\t\t\tt.Errorf(\"expected to find apk packages but found none\")\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_apk_scanner_buffer_size_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestRegression212ApkBufferSize(t *testing.T) {\n\t// This is a regression test for issue #212 (https://github.com/anchore/syft/issues/212) in which the apk db could\n\t// not be processed due to a scanner buffer that was too small\n\tsbom, _ := catalogFixtureImage(t, \"image-large-apk-data\", source.SquashedScope)\n\n\texpectedPkgs := 58\n\tactualPkgs := 0\n\tfor range sbom.Artifacts.Packages.Enumerate(pkg.ApkPkg) {\n\t\tactualPkgs += 1\n\t}\n\n\tif actualPkgs != expectedPkgs {\n\t\tt.Errorf(\"unexpected number of APK packages: %d != %d\", expectedPkgs, actualPkgs)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_go_bin_scanner_arch_test.go",
    "content": "package integration\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestRegressionGoArchDiscovery(t *testing.T) {\n\tconst (\n\t\texpectedELFPkg   = 5\n\t\texpectedWINPkg   = 5\n\t\texpectedMACOSPkg = 5\n\t)\n\t// This is a regression test to make sure the way we detect go binary packages\n\t// stays consistent and reproducible as the tool chain evolves\n\tsbom, _ := catalogFixtureImage(t, \"image-go-bin-arch-coverage\", source.SquashedScope)\n\n\tvar actualELF, actualWIN, actualMACOS int\n\n\tfor p := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {\n\t\tfor _, l := range p.Locations.ToSlice() {\n\t\t\tswitch {\n\t\t\tcase strings.Contains(l.RealPath, \"elf\"):\n\t\t\t\tactualELF++\n\t\t\tcase strings.Contains(l.RealPath, \"win\"):\n\t\t\t\tactualWIN++\n\t\t\tcase strings.Contains(l.RealPath, \"macos\"):\n\t\t\t\tactualMACOS++\n\t\t\tdefault:\n\n\t\t\t}\n\t\t}\n\t}\n\n\tif actualELF != expectedELFPkg {\n\t\tt.Errorf(\"unexpected number of elf packages: %d != %d\", expectedELFPkg, actualELF)\n\t}\n\n\tif actualWIN != expectedWINPkg {\n\t\tt.Errorf(\"unexpected number of win packages: %d != %d\", expectedWINPkg, actualWIN)\n\t}\n\n\tif actualMACOS != expectedMACOSPkg {\n\t\tt.Errorf(\"unexpected number of macos packages: %d != %d\", expectedMACOSPkg, actualMACOS)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_java_no_main_package_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestRegressionJavaNoMainPackage(t *testing.T) { // Regression: https://github.com/anchore/syft/issues/252\n\tcatalogFixtureImage(t, \"image-java-no-main-package\", source.SquashedScope)\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_java_virtualpath_test.go",
    "content": "package integration\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestWarCatalogedCorrectlyIfRenamed(t *testing.T) {\n\t// install hudson-war@2.2.1 and renames the file to `/hudson.war`\n\tsbom, _ := catalogFixtureImage(t, \"image-java-virtualpath-regression\", source.SquashedScope)\n\n\tbadPURL := \"pkg:maven/hudson/hudson@2.2.1\"\n\tgoodPURL := \"pkg:maven/org.jvnet.hudson.main/hudson-war@2.2.1\"\n\tfoundCorrectPackage := false\n\tbadVirtualPath := \"/hudson.war:org.jvnet.hudson.main:hudson-war\"\n\tgoodVirtualPath := \"/hudson.war\"\n\tfor _, p := range sbom.Artifacts.Packages.Sorted() {\n\t\tif p.Type == pkg.JavaPkg && strings.Contains(p.Name, \"hudson\") {\n\t\t\tassert.NotEqual(t, badPURL, p.PURL, \"must not find bad purl %q\", badPURL)\n\t\t\tvirtPath := \"\"\n\t\t\tif meta, ok := p.Metadata.(pkg.JavaArchive); ok {\n\t\t\t\tvirtPath = meta.VirtualPath\n\t\t\t\tif p.PURL == goodPURL && virtPath == goodVirtualPath {\n\t\t\t\t\tfoundCorrectPackage = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tassert.NotEqual(t, badVirtualPath, virtPath, \"must not find bad virtual path %q\", badVirtualPath)\n\t\t}\n\t}\n\tassert.True(t, foundCorrectPackage, \"must find correct package, but did not\")\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_photon_package_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestPhotonPackageRegression(t *testing.T) { // Regression: https://github.com/anchore/syft/pull/1997\n\tsbom, _ := catalogFixtureImage(t, \"image-photon-all-layers\", source.AllLayersScope)\n\tvar count int\n\tfor range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {\n\t\tcount++\n\t}\n\n\tassert.Greater(t, count, 0, \"expected to find RPM packages in the SBOM (but did not)\")\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/regression_sbom_duplicate_relationships_test.go",
    "content": "package integration\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestRelationshipsUnique(t *testing.T) {\n\t// This test is to ensure that the relationships are deduplicated in the final SBOM.\n\t// It is not a test of the relationships themselves.\n\t// This test is a regression test for #syft/2509\n\tsbom, _ := catalogFixtureImage(t, \"image-pkg-coverage\", source.SquashedScope)\n\tobservedRelationships := strset.New()\n\n\tfor _, rel := range sbom.Relationships {\n\t\tunique := fmt.Sprintf(\"%s:%s:%s\", rel.From.ID(), rel.To.ID(), rel.Type)\n\t\tif observedRelationships.Has(unique) {\n\t\t\tt.Errorf(\"duplicate relationship found: %s\", unique)\n\t\t}\n\t\tobservedRelationships.Add(unique)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/rust_audit_binary_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestRustAudit(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-rust-auditable\", source.SquashedScope)\n\n\texpectedPkgs := 2\n\tactualPkgs := 0\n\tfor range sbom.Artifacts.Packages.Enumerate(pkg.RustPkg) {\n\t\tactualPkgs += 1\n\t}\n\n\tif actualPkgs != expectedPkgs {\n\t\tt.Errorf(\"unexpected number of Rust packages: %d != %d\", expectedPkgs, actualPkgs)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/sbom_cataloger_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestSbomCataloger(t *testing.T) {\n\tassertCount := func(t *testing.T, sbom sbom.SBOM, expectedGoModCatalogerPkgs int, expectedSbomCatalogerPkgs int) {\n\t\tactualSbomPkgs := 0\n\t\tactualGoModPkgs := 0\n\n\t\tfor p := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {\n\t\t\tif p.FoundBy == \"go-module-file-cataloger\" {\n\t\t\t\tactualGoModPkgs += 1\n\t\t\t} else if p.FoundBy == \"sbom-cataloger\" {\n\t\t\t\tactualSbomPkgs += 1\n\t\t\t}\n\t\t}\n\n\t\tif actualGoModPkgs != expectedGoModCatalogerPkgs {\n\t\t\tt.Errorf(\"unexpected number of packages from go mod cataloger: %d != %d\", expectedGoModCatalogerPkgs, actualGoModPkgs)\n\t\t}\n\t\tif actualSbomPkgs != expectedSbomCatalogerPkgs {\n\t\t\tt.Errorf(\"unexpected number of packages from sbom cataloger: %d != %d\", expectedSbomCatalogerPkgs, actualSbomPkgs)\n\t\t}\n\t}\n\n\tt.Run(\"default catalogers\", func(t *testing.T) {\n\t\tsbom, _ := catalogFixtureImage(t, \"image-sbom-cataloger\", source.SquashedScope, \"+go-module-file-cataloger\")\n\n\t\texpectedSbomCatalogerPkgs := 0\n\t\texpectedGoModCatalogerPkgs := 2\n\t\tassertCount(t, sbom, expectedGoModCatalogerPkgs, expectedSbomCatalogerPkgs)\n\t})\n\n\t// The image contains a go.mod file with 2 dependencies and an spdx json sbom.\n\t// The go.mod file contains 2 dependencies, and the sbom includes a go dependency\n\t// that overlaps with the go.mod\n\tt.Run(\"with sbom cataloger\", func(t *testing.T) {\n\t\tsbom, _ := catalogFixtureImage(t, \"image-sbom-cataloger\", source.SquashedScope, \"+go-module-file-cataloger\", \"+sbom-cataloger\")\n\n\t\texpectedSbomCatalogerPkgs := 1\n\t\texpectedGoModCatalogerPkgs := 2\n\t\tassertCount(t, sbom, expectedGoModCatalogerPkgs, expectedSbomCatalogerPkgs)\n\t})\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/sbom_metadata_component_test.go",
    "content": "package integration\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestSbomMetadataComponent(t *testing.T) {\n\tsbom, _ := catalogFixtureImage(t, \"image-sbom-metadata-component\", source.SquashedScope, \"+sbom-cataloger\")\n\n\texpectedPkgs := []string{\"first-subcomponent\", \"main-component\"}\n\tfoundPkgs := []string{}\n\n\tfor sbomPkg := range sbom.Artifacts.Packages.Enumerate(pkg.JavaPkg) {\n\t\tfoundPkgs = append(foundPkgs, sbomPkg.Name)\n\t}\n\n\t// check if both the package in `.metadata.component` and the one in `.components` were found\n\tif !reflect.DeepEqual(expectedPkgs, foundPkgs) {\n\t\tt.Errorf(\"expected packages %v, got %v\", expectedPkgs, foundPkgs)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/sqlite_rpmdb_test.go",
    "content": "package integration\n\nimport (\n\t\"testing\"\n\n\t_ \"modernc.org/sqlite\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestSqliteRpm(t *testing.T) {\n\t// This is a regression test for issue #469 (https://github.com/anchore/syft/issues/469). Recent RPM\n\t// based distribution store package data in an sqlite database\n\tsbom, _ := catalogFixtureImage(t, \"image-sqlite-rpmdb\", source.SquashedScope)\n\n\texpectedPkgs := 139\n\tactualPkgs := 0\n\tfor range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {\n\t\tactualPkgs += 1\n\t}\n\n\tif actualPkgs != expectedPkgs {\n\t\tt.Errorf(\"unexpected number of RPM packages: %d != %d\", expectedPkgs, actualPkgs)\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/.gitignore",
    "content": "# we should strive to not commit blobs to the repo and strive to keep the build process of how blobs are acquired in-repo.\n# this blob is generated from syft/syft/catalogers/java/testdata/java-builds , however, preserving the build process\n# twice in the repo seems redundant (even via symlink). Given that the fixture is a few kilobytes in size, the build process is already\n# captured, and integration tests should only be testing if jars can be discovered (not necessarily depth in java detection\n# functionality), committing it seems like an acceptable exception.\n!image-pkg-coverage/pkgs/java/*.jar\n!image-pkg-coverage/pkgs/java/*.hpi\n\n**/go.sum\n!image-go-bin-arch-coverage/go.sum"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/Makefile",
    "content": "FINGERPRINT_FILE := cache.fingerprint\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures:\n\t@echo \"nothing to do\"\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find image-* -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\n.PHONY: clean\nclean:\n\trm -f $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/files/somewhere/there/is/a/file",
    "content": "with a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!\nwith a lot of contents!"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/files/somewhere/there/is/a-small-file",
    "content": "some contents!"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-distro-id/Dockerfile",
    "content": "FROM busybox:1.31.1@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209\n\n\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-go-bin-arch-coverage/Dockerfile",
    "content": "FROM golang:1.21.1@sha256:cffaba795c36f07e372c7191b35ceaae114d74c31c3763d442982e3a4df3b39e as builder\nWORKDIR /app\nCOPY go.sum go.mod app.go ./\n\nRUN GOOS=linux go build -o elf .\nRUN GOOS=windows go build -o win .\nRUN GOOS=darwin go build -o macos .\n\nFROM scratch\n\nWORKDIR /tmp\nCOPY --from=builder /app/elf /\nCOPY --from=builder /app/win /\nCOPY --from=builder /app/macos /\n\nENTRYPOINT [\"/elf\"]\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-go-bin-arch-coverage/app.go",
    "content": "//build:ignore\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"golang.org/x/net/html\"\n\t\"golang.org/x/term\"\n)\n\nvar test = html.ErrBufferExceeded\n\nfunc main() {\n\tt := term.NewTerminal(os.Stdout, \"foo\")\n\tt.Write([]byte(\"hello anchore\"))\n\tt.Write([]byte(fmt.Sprintf(\"%v\", test)))\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-go-bin-arch-coverage/go.mod",
    "content": "module github.com/anchore/test\n\ngo 1.17\n\nrequire (\n\tgolang.org/x/net v0.0.0-20211006190231-62292e806868\n\tgolang.org/x/term v0.0.0-20210927222741-03fcf44c2211\n)\n\nrequire golang.org/x/sys v0.0.0-20211006194710-c8a6f5223071 // indirect\n\nexclude golang.org/x/net v0.0.0-20211005215030-d2e5035098b3\n\nreplace golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 => golang.org/x/term v0.0.0-20210916214954-140adaaadfaf\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-golang-compiler/Dockerfile",
    "content": "FROM --platform=linux/amd64 golang:1.18.10-alpine\n\nFROM scratch\n\n# we don't need the entire golang toolchain, just a single binary with the stdlib baked in\nCOPY --from=0 /usr/local/go/bin/gofmt bin/gofmt\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-java-no-main-package/Dockerfile",
    "content": "FROM jenkins/jenkins:2.346.3-slim-jdk17@sha256:028fbbd9112c60ed086f5197fcba71992317864d27644e5949cf9c52ff4b65f0 AS base\n\nUSER root\n\nWORKDIR /usr/share/jenkins\n\nRUN mkdir tmp\n\nWORKDIR /usr/share/jenkins/tmp\n\nRUN apt-get update 2>&1 > /dev/null && apt-get install -y less zip 2>&1 > /dev/null\n\nRUN unzip ../jenkins.war 2>&1 > /dev/null\n\nRUN rm -rf ./META-INF/MANIFEST.MF ./WEB-INF ./jsbundles ./scripts ./css\n\nWORKDIR /usr/share/jenkins\n\nRUN rm -rf jenkins.war\n\nRUN cd ./tmp && zip -r ../jenkins.war . && cd ..\n\nRUN rm -rf ./tmp\n\nFROM scratch\n\nCOPY --from=base /usr/share/jenkins/jenkins.war /jenkins.war\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-java-virtualpath-regression/Dockerfile",
    "content": "FROM alpine:3.18.3@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a AS base\n\nRUN wget https://repo1.maven.org/maven2/org/jvnet/hudson/main/hudson-war/2.2.1/hudson-war-2.2.1.war\n\nRUN mv hudson-war-2.2.1.war hudson.war\n\n# let's make this image a little smaller as to not take up so much disk space\n# we'll only keep the jar metadata files (pom data + manifest) and throw away the rest\nRUN apk add --no-cache python3 py3-pip\nCOPY extract.py /extract.py\nRUN python extract.py\n\nFROM scratch\n\nCOPY --from=base /slim /\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-java-virtualpath-regression/extract.py",
    "content": "import os\nimport zipfile\nimport io\n\nARCHIVE_EXTENSIONS = ('.jar', '.war', '.ear', '.hpi', '.war', '.sar', '.nar', '.par')\nMETADATA_FILES = ('pom.xml', 'pom.properties', 'MANIFEST.MF')\n\n\ndef slim_archive(archive, output_dir, base_path=\"\", archive_name=\"\"):\n    \"\"\"\n    extracts metadata files from the archive and creates a slim JAR file\n    containing only these files. handles nested JARs by preserving them.\n    \"\"\"\n    slim_buffer = io.BytesIO()\n    with zipfile.ZipFile(archive, 'r') as zip_file:\n        with zipfile.ZipFile(slim_buffer, 'w', zipfile.ZIP_DEFLATED) as slim_zip:\n            for file_name in zip_file.namelist():\n                # check for metadata files or nested JARs\n                if file_name.endswith(METADATA_FILES):\n                    # add metadata files directly to the slimmed archive\n                    file_data = zip_file.read(file_name)\n                    slim_zip.writestr(file_name, file_data)\n                elif file_name.endswith(ARCHIVE_EXTENSIONS):\n                    # if it's a nested archive, recursively slim it\n                    nested_archive = io.BytesIO(zip_file.read(file_name))\n                    nested_slim_buffer = io.BytesIO()\n                    slim_archive(\n                        nested_archive,\n                        nested_slim_buffer,\n                        base_path=os.path.join(base_path, os.path.dirname(file_name)),\n                        archive_name=os.path.basename(file_name)\n                    )\n                    # add the slimmed nested archive back to the parent archive\n                    nested_slim_buffer.seek(0)\n                    slim_zip.writestr(file_name, nested_slim_buffer.read())\n\n    # write out the slimmed JAR to the output directory if output_dir is a directory\n    if isinstance(output_dir, str):\n        output_path = os.path.join(output_dir, base_path, archive_name)\n        os.makedirs(os.path.dirname(output_path), exist_ok=True)\n        with open(output_path, 'wb') as f:\n            slim_buffer.seek(0)\n            f.write(slim_buffer.read())\n    else:\n        # if output_dir is a BytesIO buffer (for nested archives), just write to it\n        output_dir.seek(0)\n        output_dir.write(slim_buffer.getvalue())\n\n\ndef walk_directory_and_slim_jars(base_dir, output_dir):\n    \"\"\"\n    recursively walks through a directory tree looking for .jar, .war, .ear,\n    .hpi files and slims them down by keeping only metadata files.\n    \"\"\"\n    for dirpath, _, filenames in os.walk(base_dir):\n        for filename in filenames:\n            if filename.endswith(ARCHIVE_EXTENSIONS):\n                archive_path = os.path.join(dirpath, filename)\n                print(f\"Processing {archive_path}\")\n                slim_archive(archive_path, output_dir, os.path.relpath(dirpath, base_dir), filename)\n\n\n# a helper script for slimming down JAR files by keeping only metadata files but still keeping the jar packaging,\n# including nested JARs! Useful for testing purposes.\nif __name__ == \"__main__\":\n    BASE_DIR = \".\"\n    OUTPUT_DIR = \"./slim\"\n    os.makedirs(OUTPUT_DIR, exist_ok=True)\n    walk_directory_and_slim_jars(BASE_DIR, OUTPUT_DIR)\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-large-apk-data/Dockerfile",
    "content": "FROM alpine@sha256:d9a7354e3845ea8466bb00b22224d9116b183e594527fb5b6c3d30bc01a20378 AS base\n\n# we keep these unpinned so that if alpine\n# changes our integration tests can adapt\nRUN apk add --no-cache \\\n            tzdata \\\n            vim \\\n            alpine-sdk\n\n# we don't need the installed bins for this test, only the APK installed metadata\nFROM scratch\n\nCOPY --from=base /lib/apk/db/installed /lib/apk/db/installed\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-mariner-distroless/Dockerfile",
    "content": "FROM mcr.microsoft.com/cbl-mariner/distroless/base:2.0.202205275@sha256:f550c5428df17b145851ad75983aca6d613ad4b51ca7983b2a83e67d0ac91a5d AS base\n\n# let's shoot for smaller test fixtures\nFROM scratch\n\nCOPY --from=base /var/lib/rpmmanifest/container-manifest-2 /var/lib/rpmmanifest/container-manifest-2\nCOPY --from=base /usr/bin/gencat /usr/bin/gencat\nCOPY --from=base /usr/bin/openssl /usr/bin/openssl\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-os-binary-overlap/Dockerfile",
    "content": "FROM alpine:3.18.3@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a\n\n# syft should not longer show the binary package for this image:\n# https://github.com/anchore/syft/issues/931\n# busybox                 1.36.1       binary <-- not reported synthetic package overlap\n# busybox                 1.36.1-r0    apk\nRUN apk update && apk add busybox\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-owning-package/Dockerfile",
    "content": "FROM ubuntu:20.04@sha256:33a5cc25d22c45900796a1aca487ad7a7cb09f09ea00b779e3b2026b4fc2faba AS base\n# this covers rpm-python\nRUN apt-get update && apt-get install -y python-pil=6.2.1-3\n\n# let's save some space...\nFROM scratch\n\nCOPY --from=base /var/lib/dpkg/status /var/lib/dpkg/status\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-photon-all-layers/Dockerfile",
    "content": "FROM photon:5.0-20230729@sha256:4cf2a1ce0a3f4625f13a0becb6b9bccfdb014c565be6e9a2ec4c4aad1ff8a5d9 AS base\n\nFROM scratch\n\nCOPY --from=base /usr/lib/sysimage/rpm /usr/lib/sysimage/rpm\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/Dockerfile",
    "content": "FROM fedora:37@sha256:3f987b7657e944cf87a129cc262982d4f80e38bd98f7db313ccaf90ca7069dd2\n\nRUN dnf install 'dnf-command(download)' cpio unzip xz -y\n# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-6.0.7-301.fc37.x86_64.rpm\n# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-modules-6.0.7-301.fc37.x86_64.rpm\nRUN dnf download kernel-core-6.0.7-301.fc37 kernel-modules-6.0.7-301.fc37 -y\n\nRUN rpm2cpio kernel-core-*.rpm | cpio -t && \\\n    rpm2cpio kernel-core-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\n\nRUN rpm2cpio kernel-modules-*.rpm | cpio -t && \\\n    rpm2cpio kernel-modules-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz\n\nRUN unxz /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz\n\n# dotnet pkg coverage\n# https://nuget.info/packages/DocuSign.eSign.dll/6.8.0\n# https://github.com/docusign/docusign-esign-csharp-client/blob/master/LICENSE\nRUN curl -LO https://www.nuget.org/api/v2/package/DocuSign.eSign.dll/6.8.0\nRUN unzip 6.8.0\nRUN chmod 600 lib/net462/DocuSign.eSign.dll\nRUN rm 6.8.0\n\nFROM scratch\n\nCOPY --from=0 lib/net462/DocuSign.eSign.dll .\nCOPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\nCOPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\n\n\nCOPY pkgs/ .\n# we duplicate to show a package count difference between all-layers and squashed scopes\nCOPY lib lib\nCOPY etc/ .\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/conan/conanfile.txt",
    "content": "# Docs at https://docs.conan.io/en/latest/reference/conanfile_txt.html\n\n[requires]\ncatch2/2.13.8\ndocopt.cpp/0.6.3\nfmt/8.1.1\nspdlog/1.9.2\nsdl/2.0.20\nfltk/1.3.8\n\n[generators]\ncmake_find_package_multi\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/etc/os-release",
    "content": "NAME=\"Ubuntu\"\nVERSION=\"20.04 LTS (Focal Fossa)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 20.04 LTS\"\nVERSION_ID=\"20.04\"\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nVERSION_CODENAME=focal\nUBUNTU_CODENAME=focal\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/hackage/cabal.project.freeze",
    "content": "active-repositories: hackage.haskell.org:merge\nconstraints: any.Cabal ==3.2.1.0,\n             any.Diff ==0.4.1,\n             any.HUnit ==1.6.2.0,\n             any.OneTuple ==0.3.1,\n             tls +compat -hans +network,\n             any.Only ==0.1,\n             any.PyF ==0.10.2.0,\n             any.QuickCheck ==2.14.2,\n             semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers,\n             any.RSA ==2.4.1,\n             any.SHA ==1.6.4.4,\n             void -safe,\n             any.Spock ==0.14.0.0,\n             \nindex-state: hackage.haskell.org 2022-07-07T01:01:53Z\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/hackage/stack.yaml",
    "content": "flags: {}\nextra-package-dbs: []\npackages:\n  - .\nresolver: lts-18.28\nextra-deps:\n  - ShellCheck-0.8.0@sha256:353c9322847b661e4c6f7c83c2acf8e5c08b682fbe516c7d46c29605937543df,3297\n  - colourista-0.1.0.1@sha256:98353ee0e2f5d97d2148513f084c1cd37dfda03e48aa9dd7a017c9d9c0ba710e,3307\n  - language-docker-11.0.0@sha256:3406ff0c1d592490f53ead8cf2cd22bdf3d79fd125ccaf3add683f6d71c24d55,3883\n  - spdx-1.0.0.2@sha256:7dfac9b454ff2da0abb7560f0ffbe00ae442dd5cb76e8be469f77e6988a70fed,2008\n  - hspec-2.9.4@sha256:658a6a74d5a70c040edd6df2a12228c6d9e63082adaad1ed4d0438ad082a0ef3,1709\n  - hspec-core-2.9.4@sha256:a126e9087409fef8dcafcd2f8656456527ac7bb163ed4d9cb3a57589042a5fe8,6498\n  - hspec-discover-2.9.4@sha256:fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6,2165\n  - stm-2.5.0.2@sha256:e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55,2314\nghc-options:\n  \"$everything\": -haddock\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/lib/apk/db/installed",
    "content": "C:Q1p78yvTLG094tHE1+dToJGbmYzQE=\nP:libc-utils\nV:0.7.2-r0\nA:x86_64\nS:1175\nI:4096\nT:Meta package to pull in correct libc\nU:http://alpinelinux.org\nL:BSD\no:libc-dev\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1575749004\nc:97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479\nD:musl-utils\n\nC:Q1bTtF5526tETKfL+lnigzIDvm+2o=\nP:musl-utils\nV:1.1.24-r2\nA:x86_64\nS:37944\nI:151552\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT BSD GPL2+\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1584790550\nc:4024cc3b29ad4c65544ad068b8f59172b5494306\nD:scanelf so:libc.musl-x86_64.so.1\np:cmd:getconf cmd:getent cmd:iconv cmd:ldconfig cmd:ldd\nr:libiconv\nF:sbin\nR:ldconfig\na:0:0:755\nZ:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\nF:usr\nF:usr/bin\nR:iconv\na:0:0:755\nZ:Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=\nR:ldd\na:0:0:755\nZ:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\nR:getconf\na:0:0:755\nZ:Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=\nR:getent\na:0:0:755\nZ:Q1eR2Dz/WylabgbWMTkd2+hGmEya4=\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/dotnet/TestLibrary.deps.json",
    "content": "{\n  \"runtimeTarget\": {\n    \"name\": \".NETCoreApp,Version=v6.0\",\n    \"signature\": \"\"\n  },\n  \"compilationOptions\": {},\n  \"targets\": {\n    \".NETCoreApp,Version=v6.0\": {\n      \"TestLibrary/1.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection\": \"6.0.0\",\n          \"Microsoft.Extensions.Logging\": \"6.0.0\",\n          \"Newtonsoft.Json\": \"13.0.1\",\n          \"Serilog\": \"2.10.0\",\n          \"Serilog.Sinks.Console\": \"4.0.1\",\n          \"TestCommon\": \"1.0.0\"\n        },\n        \"runtime\": {\n          \"TestLibrary.dll\": {}\n        }\n      },\n      \"AWSSDK.Core/3.7.10.6\": {\n        \"runtime\": {\n          \"lib/netcoreapp3.1/AWSSDK.Core.dll\": {\n            \"assemblyVersion\": \"3.3.0.0\",\n            \"fileVersion\": \"3.7.10.6\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.DependencyInjection/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0\": {\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Logging/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection\": \"6.0.0\",\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Logging.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Options\": \"6.0.0\",\n          \"System.Diagnostics.DiagnosticSource\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/netstandard2.1/Microsoft.Extensions.Logging.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Logging.Abstractions/6.0.0\": {\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Options/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Primitives\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/netstandard2.1/Microsoft.Extensions.Options.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Primitives/6.0.0\": {\n        \"dependencies\": {\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.Primitives.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Newtonsoft.Json/13.0.1\": {\n        \"runtime\": {\n          \"lib/netstandard2.0/Newtonsoft.Json.dll\": {\n            \"assemblyVersion\": \"13.0.0.0\",\n            \"fileVersion\": \"13.0.1.25517\"\n          }\n        }\n      },\n      \"Serilog/2.10.0\": {\n        \"runtime\": {\n          \"lib/netstandard2.1/Serilog.dll\": {\n            \"assemblyVersion\": \"2.0.0.0\",\n            \"fileVersion\": \"2.10.0.0\"\n          }\n        }\n      },\n      \"Serilog.Sinks.Console/4.0.1\": {\n        \"dependencies\": {\n          \"Serilog\": \"2.10.0\"\n        },\n        \"runtime\": {\n          \"lib/net5.0/Serilog.Sinks.Console.dll\": {\n            \"assemblyVersion\": \"4.0.1.0\",\n            \"fileVersion\": \"4.0.1.0\"\n          }\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/6.0.0\": {\n        \"dependencies\": {\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        }\n      },\n      \"System.Runtime.CompilerServices.Unsafe/6.0.0\": {},\n      \"TestCommon/1.0.0\": {\n        \"dependencies\": {\n          \"AWSSDK.Core\": \"3.7.10.6\"\n        },\n        \"runtime\": {\n          \"TestCommon.dll\": {}\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"TestLibrary/1.0.0\": {\n      \"type\": \"project\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    },\n    \"AWSSDK.Core/3.7.10.6\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==\",\n      \"path\": \"awssdk.core/3.7.10.6\",\n      \"hashPath\": \"awssdk.core.3.7.10.6.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.DependencyInjection/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==\",\n      \"path\": \"microsoft.extensions.dependencyinjection/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==\",\n      \"path\": \"microsoft.extensions.dependencyinjection.abstractions/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Logging/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==\",\n      \"path\": \"microsoft.extensions.logging/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.logging.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Logging.Abstractions/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==\",\n      \"path\": \"microsoft.extensions.logging.abstractions/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Options/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==\",\n      \"path\": \"microsoft.extensions.options/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.options.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Primitives/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==\",\n      \"path\": \"microsoft.extensions.primitives/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.primitives.6.0.0.nupkg.sha512\"\n    },\n    \"Newtonsoft.Json/13.0.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==\",\n      \"path\": \"newtonsoft.json/13.0.1\",\n      \"hashPath\": \"newtonsoft.json.13.0.1.nupkg.sha512\"\n    },\n    \"Serilog/2.10.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==\",\n      \"path\": \"serilog/2.10.0\",\n      \"hashPath\": \"serilog.2.10.0.nupkg.sha512\"\n    },\n    \"Serilog.Sinks.Console/4.0.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==\",\n      \"path\": \"serilog.sinks.console/4.0.1\",\n      \"hashPath\": \"serilog.sinks.console.4.0.1.nupkg.sha512\"\n    },\n    \"System.Diagnostics.DiagnosticSource/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==\",\n      \"path\": \"system.diagnostics.diagnosticsource/6.0.0\",\n      \"hashPath\": \"system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512\"\n    },\n    \"System.Runtime.CompilerServices.Unsafe/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==\",\n      \"path\": \"system.runtime.compilerservices.unsafe/6.0.0\",\n      \"hashPath\": \"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512\"\n    },\n    \"TestCommon/1.0.0\": {\n      \"type\": \"project\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    }\n  }\n}"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/erlang/accept.app",
    "content": "{application,accept,\n             [{description,\"Accept header(s) for Erlang/Elixir\"},\n              {vsn,\"0.3.5\"},\n              {registered,[]},\n              {applications,[kernel,stdlib]},\n              {env,[]},\n              {modules, ['accept_encoding_header','accept_header','accept_neg','accept_parser']},\n              {maintainers,[\"Ilya Khaprov\"]},\n              {licenses,[\"MIT\"]},\n              {links,[{\"Github\",\"https://github.com/deadtrickster/accept\"}]}]}.\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/github-actions/.github/workflows/validations.yaml",
    "content": "name: \"Validations\"\n\non:\n  workflow_dispatch:\n  pull_request:\n  push:\n    branches:\n      - main\n\njobs:\n  call-workflow-1-in-local-repo:\n    uses: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89\n\n  Unit-Test:\n    name: \"Unit tests\"\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/go/go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.14\n\nrequire (\n\tgithub.com/bmatcuk/doublestar v1.3.1\n)\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/homebrew/Cellar/afflib/1.2.3/.brew/afflib.rb",
    "content": "desc \"Advanced Forensic Format\"\nhomepage \"https://github.com/sshock/AFFLIBv3\""
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/java/generate-fixtures.md",
    "content": "See the syft/cataloger/java/testdata/java-builds dir to generate test fixtures and copy to here manually."
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/java/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.anchore</groupId>\n\t<artifactId>example-java-app-maven</artifactId>\n\t<packaging>jar</packaging>\n\t<version>0.1.0</version>\n\n\t<properties>\n\t\t<maven.compiler.source>1.8</maven.compiler.source>\n\t\t<maven.compiler.target>1.8</maven.compiler.target>\n\t</properties>\n\n\t<dependencies>\n\t\t<!-- tag::joda[] -->\n\t\t<dependency>\n\t\t\t<groupId>joda-time</groupId>\n\t\t\t<artifactId>joda-time</artifactId>\n\t\t\t<version>2.9.2</version>\n\t\t</dependency>\n\t\t<!-- end::joda[] -->\n\t\t<!-- tag::junit[] -->\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.12</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<!-- end::junit[] -->\n\t</dependencies>\n\n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-shade-plugin</artifactId>\n\t\t\t\t<version>2.1</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>shade</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<transformers>\n\t\t\t\t\t\t\t\t<transformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n\t\t\t\t\t\t\t\t\t<mainClass>hello.HelloWorld</mainClass>\n\t\t\t\t\t\t\t\t</transformer>\n\t\t\t\t\t\t\t</transformers>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n</project>\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/javascript/package-json/package.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"keywords\": [\n    \"install\",\n    \"modules\",\n    \"package manager\",\n    \"package.json\"\n  ],\n  \"preferGlobal\": true,\n  \"config\": {\n    \"publishtest\": false\n  },\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"directories\": {\n    \"bin\": \"./bin\",\n    \"doc\": \"./doc\",\n    \"lib\": \"./lib\",\n    \"man\": \"./man\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"bin\": {\n    \"npm\": \"./bin/npm-cli.js\",\n    \"npx\": \"./bin/npx-cli.js\"\n  },\n  \"dependencies\": {\n    \"JSONStream\": \"^1.3.5\",\n    \"abbrev\": \"~1.1.1\",\n    \"ansicolors\": \"~0.3.2\",\n    \"ansistyles\": \"~0.1.3\",\n    \"aproba\": \"^2.0.0\",\n    \"archy\": \"~1.0.0\",\n    \"bin-links\": \"^1.1.7\",\n    \"bluebird\": \"^3.5.5\",\n    \"byte-size\": \"^5.0.1\",\n    \"cacache\": \"^12.0.3\",\n    \"call-limit\": \"^1.1.1\",\n    \"chownr\": \"^1.1.4\",\n    \"ci-info\": \"^2.0.0\",\n    \"cli-columns\": \"^3.1.2\",\n    \"cli-table3\": \"^0.5.1\",\n    \"cmd-shim\": \"^3.0.3\",\n    \"columnify\": \"~1.5.4\",\n    \"config-chain\": \"^1.1.12\",\n    \"detect-indent\": \"~5.0.0\",\n    \"detect-newline\": \"^2.1.0\",\n    \"dezalgo\": \"~1.0.3\",\n    \"editor\": \"~1.0.0\",\n    \"figgy-pudding\": \"^3.5.1\",\n    \"find-npm-prefix\": \"^1.0.2\",\n    \"fs-vacuum\": \"~1.2.10\",\n    \"fs-write-stream-atomic\": \"~1.0.10\",\n    \"gentle-fs\": \"^2.3.0\",\n    \"glob\": \"^7.1.6\",\n    \"graceful-fs\": \"^4.2.4\",\n    \"has-unicode\": \"~2.0.1\",\n    \"hosted-git-info\": \"^2.8.8\",\n    \"iferr\": \"^1.0.2\",\n    \"infer-owner\": \"^1.0.4\",\n    \"inflight\": \"~1.0.6\",\n    \"inherits\": \"^2.0.4\",\n    \"ini\": \"^1.3.5\",\n    \"init-package-json\": \"^1.10.3\",\n    \"is-cidr\": \"^3.0.0\",\n    \"json-parse-better-errors\": \"^1.0.2\",\n    \"lazy-property\": \"~1.0.0\",\n    \"libcipm\": \"^4.0.7\",\n    \"libnpm\": \"^3.0.1\",\n    \"libnpmaccess\": \"^3.0.2\",\n    \"libnpmhook\": \"^5.0.3\",\n    \"libnpmorg\": \"^1.0.1\",\n    \"libnpmsearch\": \"^2.0.2\",\n    \"libnpmteam\": \"^1.0.2\",\n    \"libnpx\": \"^10.2.2\",\n    \"lock-verify\": \"^2.1.0\",\n    \"lockfile\": \"^1.0.4\",\n    \"lodash._baseuniq\": \"~4.6.0\",\n    \"lodash.clonedeep\": \"~4.5.0\",\n    \"lodash.union\": \"~4.6.0\",\n    \"lodash.uniq\": \"~4.5.0\",\n    \"lodash.without\": \"~4.4.0\",\n    \"lru-cache\": \"^5.1.1\",\n    \"meant\": \"~1.0.1\",\n    \"mississippi\": \"^3.0.0\",\n    \"mkdirp\": \"^0.5.5\",\n    \"move-concurrently\": \"^1.0.1\",\n    \"node-gyp\": \"^5.1.0\",\n    \"nopt\": \"^4.0.3\",\n    \"normalize-package-data\": \"^2.5.0\",\n    \"npm-audit-report\": \"^1.3.2\",\n    \"npm-cache-filename\": \"~1.0.2\",\n    \"npm-install-checks\": \"^3.0.2\",\n    \"npm-lifecycle\": \"^3.1.4\",\n    \"npm-package-arg\": \"^6.1.1\",\n    \"npm-packlist\": \"^1.4.8\",\n    \"npm-pick-manifest\": \"^3.0.2\",\n    \"npm-profile\": \"^4.0.4\",\n    \"npm-registry-fetch\": \"^4.0.5\",\n    \"npm-user-validate\": \"~1.0.0\",\n    \"npmlog\": \"~4.1.2\",\n    \"once\": \"~1.4.0\",\n    \"opener\": \"^1.5.1\",\n    \"osenv\": \"^0.1.5\",\n    \"pacote\": \"^9.5.12\",\n    \"path-is-inside\": \"~1.0.2\",\n    \"promise-inflight\": \"~1.0.1\",\n    \"qrcode-terminal\": \"^0.12.0\",\n    \"query-string\": \"^6.8.2\",\n    \"qw\": \"~1.0.1\",\n    \"read\": \"~1.0.7\",\n    \"read-cmd-shim\": \"^1.0.5\",\n    \"read-installed\": \"~4.0.3\",\n    \"read-package-json\": \"^2.1.1\",\n    \"read-package-tree\": \"^5.3.1\",\n    \"readable-stream\": \"^3.6.0\",\n    \"readdir-scoped-modules\": \"^1.1.0\",\n    \"request\": \"^2.88.0\",\n    \"retry\": \"^0.12.0\",\n    \"rimraf\": \"^2.7.1\",\n    \"safe-buffer\": \"^5.1.2\",\n    \"semver\": \"^5.7.1\",\n    \"sha\": \"^3.0.0\",\n    \"slide\": \"~1.1.6\",\n    \"sorted-object\": \"~2.0.1\",\n    \"sorted-union-stream\": \"~2.1.3\",\n    \"ssri\": \"^6.0.1\",\n    \"stringify-package\": \"^1.0.1\",\n    \"tar\": \"^4.4.13\",\n    \"text-table\": \"~0.2.0\",\n    \"tiny-relative-date\": \"^1.3.0\",\n    \"uid-number\": \"0.0.6\",\n    \"umask\": \"~1.1.0\",\n    \"unique-filename\": \"^1.1.1\",\n    \"unpipe\": \"~1.0.0\",\n    \"update-notifier\": \"^2.5.0\",\n    \"uuid\": \"^3.3.3\",\n    \"validate-npm-package-license\": \"^3.0.4\",\n    \"validate-npm-package-name\": \"~3.0.0\",\n    \"which\": \"^1.3.1\",\n    \"worker-farm\": \"^1.7.0\",\n    \"write-file-atomic\": \"^2.4.3\"\n  },\n  \"bundleDependencies\": [\n    \"abbrev\",\n    \"ansicolors\",\n    \"ansistyles\",\n    \"aproba\",\n    \"archy\",\n    \"bin-links\",\n    \"bluebird\",\n    \"byte-size\",\n    \"cacache\",\n    \"call-limit\",\n    \"chownr\",\n    \"ci-info\",\n    \"cli-columns\",\n    \"cli-table3\",\n    \"cmd-shim\",\n    \"columnify\",\n    \"config-chain\",\n    \"debuglog\",\n    \"detect-indent\",\n    \"detect-newline\",\n    \"dezalgo\",\n    \"editor\",\n    \"figgy-pudding\",\n    \"find-npm-prefix\",\n    \"fs-vacuum\",\n    \"fs-write-stream-atomic\",\n    \"gentle-fs\",\n    \"glob\",\n    \"graceful-fs\",\n    \"has-unicode\",\n    \"hosted-git-info\",\n    \"iferr\",\n    \"imurmurhash\",\n    \"infer-owner\",\n    \"inflight\",\n    \"inherits\",\n    \"ini\",\n    \"init-package-json\",\n    \"is-cidr\",\n    \"json-parse-better-errors\",\n    \"JSONStream\",\n    \"lazy-property\",\n    \"libcipm\",\n    \"libnpm\",\n    \"libnpmaccess\",\n    \"libnpmhook\",\n    \"libnpmorg\",\n    \"libnpmsearch\",\n    \"libnpmteam\",\n    \"libnpx\",\n    \"lock-verify\",\n    \"lockfile\",\n    \"lodash._baseindexof\",\n    \"lodash._baseuniq\",\n    \"lodash._bindcallback\",\n    \"lodash._cacheindexof\",\n    \"lodash._createcache\",\n    \"lodash._getnative\",\n    \"lodash.clonedeep\",\n    \"lodash.restparam\",\n    \"lodash.union\",\n    \"lodash.uniq\",\n    \"lodash.without\",\n    \"lru-cache\",\n    \"meant\",\n    \"mississippi\",\n    \"mkdirp\",\n    \"move-concurrently\",\n    \"node-gyp\",\n    \"nopt\",\n    \"normalize-package-data\",\n    \"npm-audit-report\",\n    \"npm-cache-filename\",\n    \"npm-install-checks\",\n    \"npm-lifecycle\",\n    \"npm-package-arg\",\n    \"npm-packlist\",\n    \"npm-pick-manifest\",\n    \"npm-profile\",\n    \"npm-registry-fetch\",\n    \"npm-user-validate\",\n    \"npmlog\",\n    \"once\",\n    \"opener\",\n    \"osenv\",\n    \"pacote\",\n    \"path-is-inside\",\n    \"promise-inflight\",\n    \"qrcode-terminal\",\n    \"query-string\",\n    \"qw\",\n    \"read-cmd-shim\",\n    \"read-installed\",\n    \"read-package-json\",\n    \"read-package-tree\",\n    \"read\",\n    \"readable-stream\",\n    \"readdir-scoped-modules\",\n    \"request\",\n    \"retry\",\n    \"rimraf\",\n    \"safe-buffer\",\n    \"semver\",\n    \"sha\",\n    \"slide\",\n    \"sorted-object\",\n    \"sorted-union-stream\",\n    \"ssri\",\n    \"stringify-package\",\n    \"tar\",\n    \"text-table\",\n    \"tiny-relative-date\",\n    \"uid-number\",\n    \"umask\",\n    \"unique-filename\",\n    \"unpipe\",\n    \"update-notifier\",\n    \"uuid\",\n    \"validate-npm-package-license\",\n    \"validate-npm-package-name\",\n    \"which\",\n    \"worker-farm\",\n    \"write-file-atomic\"\n  ],\n  \"devDependencies\": {\n    \"deep-equal\": \"^1.0.1\",\n    \"get-stream\": \"^4.1.0\",\n    \"licensee\": \"^7.0.3\",\n    \"marked\": \"^0.6.3\",\n    \"marked-man\": \"^0.6.0\",\n    \"npm-registry-couchapp\": \"^2.7.4\",\n    \"npm-registry-mock\": \"^1.3.1\",\n    \"require-inject\": \"^1.4.4\",\n    \"sprintf-js\": \"^1.1.2\",\n    \"standard\": \"^11.0.1\",\n    \"tacks\": \"^1.3.0\",\n    \"tap\": \"^12.7.0\",\n    \"tar-stream\": \"^2.1.0\"\n  },\n  \"scripts\": {\n    \"dumpconf\": \"env | grep npm | sort | uniq\",\n    \"prepare\": \"node bin/npm-cli.js rebuild && node bin/npm-cli.js --no-audit --no-timing prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 mandocs\",\n    \"preversion\": \"bash scripts/update-authors.sh && git add AUTHORS && git commit -m \\\"update AUTHORS\\\" || true\",\n    \"licenses\": \"licensee --production --errors-only\",\n    \"tap\": \"tap -J --timeout 300 --no-esm\",\n    \"tap-cover\": \"tap -J --nyc-arg=--cache --coverage --timeout 600 --no-esm\",\n    \"lint\": \"standard\",\n    \"pretest\": \"npm run lint\",\n    \"test\": \"npm run test-tap --\",\n    \"test:nocleanup\": \"NO_TEST_CLEANUP=1 npm run test --\",\n    \"sudotest\": \"sudo npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"sudotest:nocleanup\": \"sudo NO_TEST_CLEANUP=1 npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"posttest\": \"rimraf test/npm_cache*\",\n    \"test-coverage\": \"npm run tap-cover -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-tap\": \"npm run tap -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-node\": \"tap --timeout 240 \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\"\n  },\n  \"license\": \"Artistic-2.0\",\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/lib/apk/db/installed",
    "content": "C:Q1p78yvTLG094tHE1+dToJGbmYzQE=\nP:libc-utils\nV:0.7.2-r0\nA:x86_64\nS:1175\nI:4096\nT:Meta package to pull in correct libc\nU:http://alpinelinux.org\nL:BSD\no:libc-dev\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1575749004\nc:97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479\nD:musl-utils\n\nC:Q1bTtF5526tETKfL+lnigzIDvm+2o=\nP:musl-utils\nV:1.1.24-r2\nA:x86_64\nS:37944\nI:151552\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT BSD GPL2+\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1584790550\nc:4024cc3b29ad4c65544ad068b8f59172b5494306\nD:scanelf so:libc.musl-x86_64.so.1\np:cmd:getconf cmd:getent cmd:iconv cmd:ldconfig cmd:ldd\nr:libiconv\nF:sbin\nR:ldconfig\na:0:0:755\nZ:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\nF:usr\nF:usr/bin\nR:iconv\na:0:0:755\nZ:Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=\nR:ldd\na:0:0:755\nZ:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\nR:getconf\na:0:0:755\nZ:Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=\nR:getent\na:0:0:755\nZ:Q1eR2Dz/WylabgbWMTkd2+hGmEya4="
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1",
    "content": "the man pages"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/opam/ocaml-base-compiler.4.14.0/opam",
    "content": "opam-version: \"2.0\"\nsynopsis: \"Official release 4.14.0\"\nmaintainer: [\n  \"David Allsopp <david@tarides.com>\"\n  \"Florian Angeletti <florian.angeletti@inria.fr>\"\n]\nauthors: \"Xavier Leroy and many contributors\"\nlicense: \"LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception\"\nhomepage: \"https://ocaml.org\"\nbug-reports: \"https://github.com/ocaml/opam-repository/issues\"\ndepends: [\n  \"ocaml\" {= \"4.14.0\" & post}\n  \"base-unix\" {post}\n  \"base-bigarray\" {post}\n  \"base-threads\" {post}\n  \"host-arch-arm32\" {arch = \"arm32\" & post}\n  \"host-arch-arm64\" {arch = \"arm64\" & post}\n  \"host-arch-ppc64\" {arch = \"ppc64\" & post}\n  \"host-arch-riscv64\" {arch = \"riscv64\" & post}\n  \"host-arch-s390x\" {arch = \"s390x\" & post}\n  \"host-arch-x86_32\" {os != \"win32\" & arch = \"x86_32\" & post}\n  \"host-arch-x86_64\" {os != \"win32\" & arch = \"x86_64\" & post}\n  \"host-arch-unknown\"\n    {os != \"win32\" & arch != \"arm32\" & arch != \"arm64\" & arch != \"ppc64\" &\n     arch != \"riscv64\" &\n     arch != \"s390x\" &\n     arch != \"x86_32\" &\n     arch != \"x86_64\" &\n     post}\n  ((\"arch-x86_64\" {os = \"win32\" & arch = \"x86_64\"} &\n    ((\"system-mingw\" & \"mingw-w64-shims\" {os-distribution = \"cygwin\" & post}) |\n     \"system-msvc\")) |\n   (\"arch-x86_32\" {os = \"win32\"} &\n    ((\"system-mingw\" & \"mingw-w64-shims\" {os-distribution = \"cygwin\" & post}) |\n     \"system-msvc\")) |\n   \"host-system-other\" {os != \"win32\" & post})\n  \"ocaml-options-vanilla\" {post}\n  \"flexdll\" {>= \"0.36\" & os = \"win32\"}\n]\nconflict-class: \"ocaml-core-compiler\"\nflags: compiler\nsetenv: CAML_LD_LIBRARY_PATH = \"%{lib}%/stublibs\"\nbuild: [\n  [\n    \"./configure\"\n    \"--host=x86_64-pc-windows\"\n      {system-msvc:installed & arch-x86_64:installed}\n    \"--host=x86_64-w64-mingw32\"\n      {os-distribution = \"cygwin\" & system-mingw:installed &\n       arch-x86_64:installed}\n    \"--host=i686-pc-windows\" {system-msvc:installed & arch-x86_32:installed}\n    \"--host=i686-w64-mingw32\"\n      {os-distribution = \"cygwin\" & system-mingw:installed &\n       arch-x86_32:installed}\n    \"--prefix=%{prefix}%\"\n    \"--docdir=%{doc}%/ocaml\"\n    \"--with-flexdll=%{flexdll:share}%\" {os = \"win32\" & flexdll:installed}\n    \"-C\"\n    \"CC=cc\" {os = \"openbsd\" | os = \"macos\"}\n    \"ASPP=cc -c\" {os = \"openbsd\" | os = \"macos\"}\n  ]\n  [make \"-j%{jobs}%\"]\n]\ninstall: [make \"install\"]\nbuild-env: MSYS2_ARG_CONV_EXCL = \"*\"\npost-messages: [\n  \"\"\"\\\nA failure in the middle of the build may be caused by build parallelism\n   (enabled by default).\n   Please file a bug report at https://github.com/ocaml/opam-repository/issues\"\"\"\n    {failure & jobs > \"1\"}\n  \"\"\"\\\nYou can try installing again including --jobs=1\n   to force a sequential build instead.\"\"\"\n    {failure & jobs > \"1\" & opam-version >= \"2.0.5\"}\n]\ndev-repo: \"git+https://github.com/ocaml/ocaml#4.14\"\nurl {\n  src: \"https://github.com/ocaml/ocaml/archive/4.14.0.tar.gz\"\n  checksum:\n    \"sha256=39f44260382f28d1054c5f9d8bf4753cb7ad64027da792f7938344544da155e8\"\n}\nextra-source \"ocaml-base-compiler.install\" {\n  src:\n    \"https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-base-compiler/ocaml-base-compiler.install\"\n  checksum: [\n    \"sha256=79f2a1a5044a91350a0eb6ce12e261a72a2855c094c425cddf3860e58c486678\"\n    \"md5=3e969b841df1f51ca448e6e6295cb451\"\n  ]\n}\nx-env-path-rewrite: [\n  [CAML_LD_LIBRARY_PATH (\";\" {os = \"win32\"} \":\" {os != \"win32\"}) \"target\"]\n]\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/php/.registry/.channel.pecl.php.net/memcached.reg",
    "content": "a:6:{s:4:\"name\";s:9:\"memcached\";s:7:\"channel\";s:12:\"pecl.php.net\";s:4:\"date\";s:10:\"2022-01-11\";s:4:\"time\";s:8:\"15:23:47\";s:7:\"version\";a:2:{s:7:\"release\";s:5:\"3.2.0\";s:3:\"api\";s:5:\"3.2.0\";}s:7:\"license\";a:2:{s:7:\"attribs\";a:1:{s:3:\"uri\";s:26:\"http://www.php.net/license\";}s:8:\"_content\";s:11:\"PHP License\";}}"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/php/vendor/composer/installed.json",
    "content": "{\n    \"packages\": [\n        {\n            \"name\": \"nikic/fast-route\",\n            \"version\": \"v1.3.0\",\n            \"version_normalized\": \"1.3.0.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/nikic/FastRoute.git\",\n                \"reference\": \"181d480e08d9476e61381e04a71b34dc0432e812\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812\",\n                \"reference\": \"181d480e08d9476e61381e04a71b34dc0432e812\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"php\": \">=5.4.0\"\n            },\n            \"require-dev\": {\n                \"phpunit/phpunit\": \"^4.8.35|~5.7\"\n            },\n            \"time\": \"2018-02-13T20:26:39+00:00\",\n            \"type\": \"library\",\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"FastRoute\\\\\": \"src/\"\n                },\n                \"files\": [\n                    \"src/functions.php\"\n                ]\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"BSD-3-Clause\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Nikita Popov\",\n                    \"email\": \"nikic@php.net\"\n                }\n            ],\n            \"description\": \"Fast request router for PHP\",\n            \"keywords\": [\n                \"router\",\n                \"routing\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/nikic/FastRoute/issues\",\n                \"source\": \"https://github.com/nikic/FastRoute/tree/master\"\n            },\n            \"install-path\": \"../nikic/fast-route\"\n        },\n        {\n            \"name\": \"psr/container\",\n            \"version\": \"2.0.2\",\n            \"version_normalized\": \"2.0.2.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/php-fig/container.git\",\n                \"reference\": \"c71ecc56dfe541dbd90c5360474fbc405f8d5963\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963\",\n                \"reference\": \"c71ecc56dfe541dbd90c5360474fbc405f8d5963\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"php\": \">=7.4.0\"\n            },\n            \"time\": \"2021-11-05T16:47:00+00:00\",\n            \"type\": \"library\",\n            \"extra\": {\n                \"branch-alias\": {\n                    \"dev-master\": \"2.0.x-dev\"\n                }\n            },\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Psr\\\\Container\\\\\": \"src/\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"PHP-FIG\",\n                    \"homepage\": \"https://www.php-fig.org/\"\n                }\n            ],\n            \"description\": \"Common Container Interface (PHP FIG PSR-11)\",\n            \"homepage\": \"https://github.com/php-fig/container\",\n            \"keywords\": [\n                \"PSR-11\",\n                \"container\",\n                \"container-interface\",\n                \"container-interop\",\n                \"psr\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/php-fig/container/issues\",\n                \"source\": \"https://github.com/php-fig/container/tree/2.0.2\"\n            },\n            \"install-path\": \"../psr/container\"\n        },\n        {\n            \"name\": \"psr/http-factory\",\n            \"version\": \"1.0.1\",\n            \"version_normalized\": \"1.0.1.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/php-fig/http-factory.git\",\n                \"reference\": \"12ac7fcd07e5b077433f5f2bee95b3a771bf61be\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be\",\n                \"reference\": \"12ac7fcd07e5b077433f5f2bee95b3a771bf61be\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"php\": \">=7.0.0\",\n                \"psr/http-message\": \"^1.0\"\n            },\n            \"time\": \"2019-04-30T12:38:16+00:00\",\n            \"type\": \"library\",\n            \"extra\": {\n                \"branch-alias\": {\n                    \"dev-master\": \"1.0.x-dev\"\n                }\n            },\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Psr\\\\Http\\\\Message\\\\\": \"src/\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"PHP-FIG\",\n                    \"homepage\": \"http://www.php-fig.org/\"\n                }\n            ],\n            \"description\": \"Common interfaces for PSR-7 HTTP message factories\",\n            \"keywords\": [\n                \"factory\",\n                \"http\",\n                \"message\",\n                \"psr\",\n                \"psr-17\",\n                \"psr-7\",\n                \"request\",\n                \"response\"\n            ],\n            \"support\": {\n                \"source\": \"https://github.com/php-fig/http-factory/tree/master\"\n            },\n            \"install-path\": \"../psr/http-factory\"\n        }\n    ],\n    \"dev\": true,\n    \"dev-package-names\": []\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/dist-info/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nPygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nPygments-2.6.1.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/dist-info/top_level.txt",
    "content": "top-level-pkg"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/egg-info/PKG-INFO",
    "content": "Metadata-Version: 2.1\nName: requests\nVersion: 2.22.0\nSummary: Python HTTP for Humans.\nHome-page: http://python-requests.org\nAuthor: Kenneth Reitz\nAuthor-email: me@kennethreitz.org\nLicense: Apache 2.0\nDescription: Requests: HTTP for Humans™\n        ==========================\n        \n        [![image](https://img.shields.io/pypi/v/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/l/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests/)\n        [![codecov.io](https://codecov.io/github/requests/requests/coverage.svg?branch=master)](https://codecov.io/github/requests/requests)\n        [![image](https://img.shields.io/github/contributors/requests/requests.svg)](https://github.com/requests/requests/graphs/contributors)\n        [![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/kennethreitz)\n        \n        Requests is the only *Non-GMO* HTTP library for Python, safe for human\n        consumption.\n        \n        ![image](https://farm5.staticflickr.com/4317/35198386374_1939af3de6_k_d.jpg)\n        \n        Behold, the power of Requests:\n        \n        ``` {.sourceCode .python}\n        >>> import requests\n        >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))\n        >>> r.status_code\n        200\n        >>> r.headers['content-type']\n        'application/json; charset=utf8'\n        >>> r.encoding\n        'utf-8'\n        >>> r.text\n        u'{\"type\":\"User\"...'\n        >>> r.json()\n        {u'disk_usage': 368627, u'private_gists': 484, ...}\n        ```\n        \n        See [the similar code, sans Requests](https://gist.github.com/973705).\n        \n        [![image](https://raw.githubusercontent.com/requests/requests/master/docs/_static/requests-logo-small.png)](http://docs.python-requests.org/)\n        \n        Requests allows you to send *organic, grass-fed* HTTP/1.1 requests,\n        without the need for manual labor. There's no need to manually add query\n        strings to your URLs, or to form-encode your POST data. Keep-alive and\n        HTTP connection pooling are 100% automatic, thanks to\n        [urllib3](https://github.com/shazow/urllib3).\n        \n        Besides, all the cool kids are doing it. Requests is one of the most\n        downloaded Python packages of all time, pulling in over 11,000,000\n        downloads every month. You don't want to be left out!\n        \n        Feature Support\n        ---------------\n        \n        Requests is ready for today's web.\n        \n        -   International Domains and URLs\n        -   Keep-Alive & Connection Pooling\n        -   Sessions with Cookie Persistence\n        -   Browser-style SSL Verification\n        -   Basic/Digest Authentication\n        -   Elegant Key/Value Cookies\n        -   Automatic Decompression\n        -   Automatic Content Decoding\n        -   Unicode Response Bodies\n        -   Multipart File Uploads\n        -   HTTP(S) Proxy Support\n        -   Connection Timeouts\n        -   Streaming Downloads\n        -   `.netrc` Support\n        -   Chunked Requests\n        \n        Requests officially supports Python 2.7 & 3.4–3.7, and runs great on\n        PyPy.\n        \n        Installation\n        ------------\n        \n        To install Requests, simply use [pipenv](http://pipenv.org/) (or pip, of\n        course):\n        \n        ``` {.sourceCode .bash}\n        $ pipenv install requests\n        ✨🍰✨\n        ```\n        \n        Satisfaction guaranteed.\n        \n        Documentation\n        -------------\n        \n        Fantastic documentation is available at\n        <http://docs.python-requests.org/>, for a limited time only.\n        \n        How to Contribute\n        -----------------\n        \n        1.  Become more familiar with the project by reading our [Contributor's Guide](http://docs.python-requests.org/en/latest/dev/contributing/) and our [development philosophy](http://docs.python-requests.org/en/latest/dev/philosophy/).\n        2.  Check for open issues or open a fresh issue to start a discussion\n            around a feature idea or a bug. There is a [Contributor\n            Friendly](https://github.com/requests/requests/issues?direction=desc&labels=Contributor+Friendly&page=1&sort=updated&state=open)\n            tag for issues that should be ideal for people who are not very\n            familiar with the codebase yet.\n        3.  Fork [the repository](https://github.com/requests/requests) on\n            GitHub to start making your changes to the **master** branch (or\n            branch off of it).\n        4.  Write a test which shows that the bug was fixed or that the feature\n            works as expected.\n        5.  Send a pull request and bug the maintainer until it gets merged and\n            published. :) Make sure to add yourself to\n            [AUTHORS](https://github.com/requests/requests/blob/master/AUTHORS.rst).\n        \n        \nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Natural Language :: English\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nRequires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\nDescription-Content-Type: text/markdown\nProvides-Extra: security\nProvides-Extra: socks"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/egg-info/top_level.txt",
    "content": "top-level-pkg"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/requires/requirements-dev.txt",
    "content": "jsonschema==2.6.0\npasslib==1.7.2"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/requires/requirements.txt",
    "content": "flask==4.0.0\n# this is an ignored line\n\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/requires/test-requirements.txt",
    "content": "python-dateutil==2.8.1\npython-swiftclient==3.8.1\npytz==2019.3"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/setup/setup.py",
    "content": "from setuptools import setup\n\n# TODO: if py gets upgrade to >=1.6,\n#       remove _width_of_current_line in terminal.py\nINSTALL_REQUIRES = [\n    \"py>=1.5.0\",\n    \"packaging\",\n    \"attrs>=17.4.0\",  # should match oldattrs tox env.\n    \"more-itertools>=4.0.0\",\n    'atomicwrites>=1.0;sys_platform==\"win32\"',\n    'pathlib2>=2.2.0;python_version<\"3.6\"',\n    'colorama;sys_platform==\"win32\"',\n    \"pluggy>=0.12,<1.0\",\n    'importlib-metadata>=0.12;python_version<\"3.8\"',\n    \"wcwidth\",\n]\n\n\ndef main():\n    setup(\n        use_scm_version={\"write_to\": \"src/_pytest/_version.py\"},\n        setup_requires=[\"setuptools-scm\", \"setuptools>=40.0\"],\n        package_dir={\"\": \"src\"},\n        extras_require={\n            \"testing\": [\n                \"argcomplete\",\n                \"hypothesis>=3.56\",\n                \"mock\",\n                \"nose\",\n                \"requests\",\n                \"xmlschema\",\n            ],\n            \"checkqa-mypy\": [\n                \"mypy==v0.770\",  # keep this in sync with .pre-commit-config.yaml.\n            ],\n        },\n        install_requires=INSTALL_REQUIRES,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/PKG-INFO",
    "content": "Metadata-Version: 2.1\nName: someotherpkg\nVersion: 3.19.0\nSummary: Python HTTP for Humans.\nHome-page: http://python-requests.org\nAuthor: Kenneth Reitz\nAuthor-email: me@kennethreitz.org\nLicense: Apache 2.0\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/top_level.txt",
    "content": "top-level-pkg"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: somerequests\nVersion: 3.22.0\nSummary: stuff\nHome-page: stuff\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/top_level.txt",
    "content": "top-level-pkg"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/r/base/DESCRIPTION",
    "content": "Package: base\nVersion: 4.3.0\nPriority: base\nTitle: The R Base Package\nAuthor: R Core Team and contributors worldwide\nMaintainer: R Core Team <do-use-Contact-address@r-project.org>\nContact: R-help mailing list <r-help@r-project.org>\nDescription: Base R functions.\nLicense: Part of R 4.3.0\nSuggests: methods\nBuilt: R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/rockspec/kong-3.7.0-0.rockspec",
    "content": "package = \"kong\"\nversion = \"3.7.0-0\"\nrockspec_format = \"3.0\"\nsupported_platforms = {\"linux\", \"macosx\"}\nsource = {\n  url = \"git+https://github.com/Kong/kong.git\",\n  tag = \"3.7.0\"\n}\ndescription = {\n  summary = \"Kong is a scalable and customizable API Management Layer built on top of Nginx.\",\n  homepage = \"https://konghq.com\",\n  license = \"Apache 2.0\"\n}\ndependencies = {\n  \"inspect == 3.1.3\",\n  \"luasec == 1.3.2\",\n  \"luasocket == 3.0-rc1\",\n  \"penlight == 1.13.1\",\n  \"lua-resty-http == 0.17.1\",\n  \"lua-resty-jit-uuid == 0.0.7\",\n  \"lua-ffi-zlib == 0.6\",\n  \"multipart == 0.5.9\",\n  \"version == 1.0.1\",\n  \"kong-lapis == 1.16.0.1\",\n  \"kong-pgmoon == 1.16.2\",\n  \"luatz == 0.4\",\n  \"lua_system_constants == 0.1.4\",\n  \"lyaml == 6.2.8\",\n  \"luasyslog == 2.0.1\",\n  \"lua_pack == 2.0.0\",\n  \"binaryheap >= 0.4\",\n  \"luaxxhash >= 1.0\",\n  \"lua-protobuf == 0.5.0\",\n  \"lua-resty-healthcheck == 3.0.1\",\n  \"lua-messagepack == 0.5.4\",\n  \"lua-resty-aws == 1.3.6\",\n  \"lua-resty-openssl == 1.2.0\",\n  \"lua-resty-counter == 0.2.1\",\n  \"lua-resty-ipmatcher == 0.6.1\",\n  \"lua-resty-acme == 0.12.0\",\n  \"lua-resty-session == 4.0.5\",\n  \"lua-resty-timer-ng == 0.2.6\",\n  \"lpeg == 1.1.0\",\n  \"lua-resty-ljsonschema == 1.1.6-2\",\n}\nbuild = {\n  type = \"builtin\",\n  modules = {\n    [\"kong\"] = \"kong/init.lua\",\n    [\"kong.meta\"] = \"kong/meta.lua\",\n    [\"kong.cache\"] = \"kong/cache/init.lua\",\n    [\"kong.cache.warmup\"] = \"kong/cache/warmup.lua\",\n    [\"kong.global\"] = \"kong/global.lua\",\n    [\"kong.reports\"] = \"kong/reports.lua\",\n    [\"kong.constants\"] = \"kong/constants.lua\",\n    [\"kong.concurrency\"] = \"kong/concurrency.lua\",\n    [\"kong.deprecation\"] = \"kong/deprecation.lua\",\n    [\"kong.globalpatches\"] = \"kong/globalpatches.lua\",\n    [\"kong.error_handlers\"] = \"kong/error_handlers.lua\",\n    [\"kong.hooks\"] = \"kong/hooks.lua\",\n\n    [\"kong.router\"] = \"kong/router/init.lua\",\n    [\"kong.router.traditional\"] = \"kong/router/traditional.lua\",\n    [\"kong.router.compat\"] = \"kong/router/compat.lua\",\n    [\"kong.router.expressions\"] = \"kong/router/expressions.lua\",\n    [\"kong.router.atc\"] = \"kong/router/atc.lua\",\n    [\"kong.router.fields\"] = \"kong/router/fields.lua\",\n    [\"kong.router.utils\"] = \"kong/router/utils.lua\",\n\n    [\"kong.conf_loader\"] = \"kong/conf_loader/init.lua\",\n    [\"kong.conf_loader.constants\"] = \"kong/conf_loader/constants.lua\",\n    [\"kong.conf_loader.parse\"] = \"kong/conf_loader/parse.lua\",\n    [\"kong.conf_loader.listeners\"] = \"kong/conf_loader/listeners.lua\",\n\n    [\"kong.clustering\"] = \"kong/clustering/init.lua\",\n    [\"kong.clustering.data_plane\"] = \"kong/clustering/data_plane.lua\",\n    [\"kong.clustering.control_plane\"] = \"kong/clustering/control_plane.lua\",\n    [\"kong.clustering.utils\"] = \"kong/clustering/utils.lua\",\n    [\"kong.clustering.events\"] = \"kong/clustering/events.lua\",\n    [\"kong.clustering.compat\"] = \"kong/clustering/compat/init.lua\",\n    [\"kong.clustering.compat.version\"] = \"kong/clustering/compat/version.lua\",\n    [\"kong.clustering.compat.removed_fields\"] = \"kong/clustering/compat/removed_fields.lua\",\n    [\"kong.clustering.compat.checkers\"] = \"kong/clustering/compat/checkers.lua\",\n    [\"kong.clustering.config_helper\"] = \"kong/clustering/config_helper.lua\",\n    [\"kong.clustering.tls\"] = \"kong/clustering/tls.lua\",\n\n    [\"kong.cluster_events\"] = \"kong/cluster_events/init.lua\",\n    [\"kong.cluster_events.strategies.postgres\"] = \"kong/cluster_events/strategies/postgres.lua\",\n    [\"kong.cluster_events.strategies.off\"] = \"kong/cluster_events/strategies/off.lua\",\n\n    [\"kong.templates.nginx\"] = \"kong/templates/nginx.lua\",\n    [\"kong.templates.nginx_kong\"] = \"kong/templates/nginx_kong.lua\",\n    [\"kong.templates.nginx_kong_gui_include\"] = \"kong/templates/nginx_kong_gui_include.lua\",\n    [\"kong.templates.nginx_kong_stream\"] = \"kong/templates/nginx_kong_stream.lua\",\n    [\"kong.templates.kong_defaults\"] = \"kong/templates/kong_defaults.lua\",\n    [\"kong.templates.nginx_inject\"] = \"kong/templates/nginx_inject.lua\",\n    [\"kong.templates.nginx_kong_inject\"] = \"kong/templates/nginx_kong_inject.lua\",\n    [\"kong.templates.nginx_kong_stream_inject\"] = \"kong/templates/nginx_kong_stream_inject.lua\",\n    [\"kong.templates.kong_yml\"] = \"kong/templates/kong_yml.lua\",\n\n    [\"kong.resty.dns.client\"] = \"kong/resty/dns/client.lua\",\n    [\"kong.resty.dns.utils\"] = \"kong/resty/dns/utils.lua\",\n    [\"kong.resty.ctx\"] = \"kong/resty/ctx.lua\",\n\n    [\"kong.resty.mlcache\"] = \"kong/resty/mlcache/init.lua\",\n    [\"kong.resty.mlcache.ipc\"] = \"kong/resty/mlcache/ipc.lua\",\n\n    [\"kong.cmd\"] = \"kong/cmd/init.lua\",\n    [\"kong.cmd.roar\"] = \"kong/cmd/roar.lua\",\n    [\"kong.cmd.stop\"] = \"kong/cmd/stop.lua\",\n    [\"kong.cmd.quit\"] = \"kong/cmd/quit.lua\",\n    [\"kong.cmd.start\"] = \"kong/cmd/start.lua\",\n    [\"kong.cmd.check\"] = \"kong/cmd/check.lua\",\n    [\"kong.cmd.config\"] = \"kong/cmd/config.lua\",\n    [\"kong.cmd.reload\"] = \"kong/cmd/reload.lua\",\n    [\"kong.cmd.restart\"] = \"kong/cmd/restart.lua\",\n    [\"kong.cmd.prepare\"] = \"kong/cmd/prepare.lua\",\n    [\"kong.cmd.migrations\"] = \"kong/cmd/migrations.lua\",\n    [\"kong.cmd.health\"] = \"kong/cmd/health.lua\",\n    [\"kong.cmd.vault\"] = \"kong/cmd/vault.lua\",\n    [\"kong.cmd.version\"] = \"kong/cmd/version.lua\",\n    [\"kong.cmd.hybrid\"] = \"kong/cmd/hybrid.lua\",\n    [\"kong.cmd.utils.log\"] = \"kong/cmd/utils/log.lua\",\n    [\"kong.cmd.utils.kill\"] = \"kong/cmd/utils/kill.lua\",\n    [\"kong.cmd.utils.env\"] = \"kong/cmd/utils/env.lua\",\n    [\"kong.cmd.utils.migrations\"] = \"kong/cmd/utils/migrations.lua\",\n    [\"kong.cmd.utils.tty\"] = \"kong/cmd/utils/tty.lua\",\n    [\"kong.cmd.utils.nginx_signals\"] = \"kong/cmd/utils/nginx_signals.lua\",\n    [\"kong.cmd.utils.prefix_handler\"] = \"kong/cmd/utils/prefix_handler.lua\",\n    [\"kong.cmd.utils.process_secrets\"] = \"kong/cmd/utils/process_secrets.lua\",\n    [\"kong.cmd.utils.inject_confs\"] = \"kong/cmd/utils/inject_confs.lua\",\n\n    [\"kong.api\"] = \"kong/api/init.lua\",\n    [\"kong.api.api_helpers\"] = \"kong/api/api_helpers.lua\",\n    [\"kong.api.arguments\"] = \"kong/api/arguments.lua\",\n    [\"kong.api.endpoints\"] = \"kong/api/endpoints.lua\",\n    [\"kong.api.routes.cache\"] = \"kong/api/routes/cache.lua\",\n    [\"kong.api.routes.certificates\"] = \"kong/api/routes/certificates.lua\",\n    [\"kong.api.routes.clustering\"] = \"kong/api/routes/clustering.lua\",\n    [\"kong.api.routes.config\"] = \"kong/api/routes/config.lua\",\n    [\"kong.api.routes.consumers\"] = \"kong/api/routes/consumers.lua\",\n    [\"kong.api.routes.debug\"] = \"kong/api/routes/debug.lua\",\n    [\"kong.api.routes.filter_chains\"] = \"kong/api/routes/filter_chains.lua\",\n    [\"kong.api.routes.health\"] = \"kong/api/routes/health.lua\",\n    [\"kong.api.routes.kong\"] = \"kong/api/routes/kong.lua\",\n    [\"kong.api.routes.plugins\"] = \"kong/api/routes/plugins.lua\",\n    [\"kong.api.routes.snis\"] = \"kong/api/routes/snis.lua\",\n    [\"kong.api.routes.tags\"] = \"kong/api/routes/tags.lua\",\n    [\"kong.api.routes.targets\"] = \"kong/api/routes/targets.lua\",\n    [\"kong.api.routes.upstreams\"] = \"kong/api/routes/upstreams.lua\",\n\n    [\"kong.admin_gui\"] = \"kong/admin_gui/init.lua\",\n    [\"kong.admin_gui.utils\"] = \"kong/admin_gui/utils.lua\",\n\n    [\"kong.status\"] = \"kong/status/init.lua\",\n    [\"kong.status.ready\"] = \"kong/status/ready.lua\",\n\n    [\"kong.tools.dns\"] = \"kong/tools/dns.lua\",\n    [\"kong.tools.grpc\"] = \"kong/tools/grpc.lua\",\n    [\"kong.tools.utils\"] = \"kong/tools/utils.lua\",\n    [\"kong.tools.timestamp\"] = \"kong/tools/timestamp.lua\",\n    [\"kong.tools.stream_api\"] = \"kong/tools/stream_api.lua\",\n    [\"kong.tools.queue\"] = \"kong/tools/queue.lua\",\n    [\"kong.tools.queue_schema\"] = \"kong/tools/queue_schema.lua\",\n    [\"kong.tools.sandbox\"] = \"kong/tools/sandbox.lua\",\n    [\"kong.tools.uri\"] = \"kong/tools/uri.lua\",\n    [\"kong.tools.kong-lua-sandbox\"] = \"kong/tools/kong-lua-sandbox.lua\",\n    [\"kong.tools.protobuf\"] = \"kong/tools/protobuf.lua\",\n    [\"kong.tools.mime_type\"] = \"kong/tools/mime_type.lua\",\n    [\"kong.tools.request_aware_table\"] = \"kong/tools/request_aware_table.lua\",\n    [\"kong.tools.gzip\"] = \"kong/tools/gzip.lua\",\n    [\"kong.tools.string\"] = \"kong/tools/string.lua\",\n    [\"kong.tools.table\"] = \"kong/tools/table.lua\",\n    [\"kong.tools.sha256\"] = \"kong/tools/sha256.lua\",\n    [\"kong.tools.yield\"] = \"kong/tools/yield.lua\",\n    [\"kong.tools.uuid\"] = \"kong/tools/uuid.lua\",\n    [\"kong.tools.rand\"] = \"kong/tools/rand.lua\",\n    [\"kong.tools.system\"] = \"kong/tools/system.lua\",\n    [\"kong.tools.time\"] = \"kong/tools/time.lua\",\n    [\"kong.tools.module\"] = \"kong/tools/module.lua\",\n    [\"kong.tools.ip\"] = \"kong/tools/ip.lua\",\n    [\"kong.tools.http\"] = \"kong/tools/http.lua\",\n    [\"kong.tools.cjson\"] = \"kong/tools/cjson.lua\",\n    [\"kong.tools.redis.schema\"] = \"kong/tools/redis/schema.lua\",\n\n    [\"kong.runloop.handler\"] = \"kong/runloop/handler.lua\",\n    [\"kong.runloop.events\"] = \"kong/runloop/events.lua\",\n    [\"kong.runloop.log_level\"] = \"kong/runloop/log_level.lua\",\n    [\"kong.runloop.certificate\"] = \"kong/runloop/certificate.lua\",\n    [\"kong.runloop.plugins_iterator\"] = \"kong/runloop/plugins_iterator.lua\",\n    [\"kong.runloop.upstream_ssl\"] = \"kong/runloop/upstream_ssl.lua\",\n    [\"kong.runloop.balancer\"] = \"kong/runloop/balancer/init.lua\",\n    [\"kong.runloop.balancer.balancers\"] = \"kong/runloop/balancer/balancers.lua\",\n    [\"kong.runloop.balancer.consistent_hashing\"] = \"kong/runloop/balancer/consistent_hashing.lua\",\n    [\"kong.runloop.balancer.healthcheckers\"] = \"kong/runloop/balancer/healthcheckers.lua\",\n    [\"kong.runloop.balancer.least_connections\"] = \"kong/runloop/balancer/least_connections.lua\",\n    [\"kong.runloop.balancer.latency\"] = \"kong/runloop/balancer/latency.lua\",\n    [\"kong.runloop.balancer.round_robin\"] = \"kong/runloop/balancer/round_robin.lua\",\n    [\"kong.runloop.balancer.targets\"] = \"kong/runloop/balancer/targets.lua\",\n    [\"kong.runloop.balancer.upstreams\"] = \"kong/runloop/balancer/upstreams.lua\",\n    [\"kong.runloop.plugin_servers\"] = \"kong/runloop/plugin_servers/init.lua\",\n    [\"kong.runloop.plugin_servers.process\"] = \"kong/runloop/plugin_servers/process.lua\",\n    [\"kong.runloop.plugin_servers.mp_rpc\"] = \"kong/runloop/plugin_servers/mp_rpc.lua\",\n    [\"kong.runloop.plugin_servers.pb_rpc\"] = \"kong/runloop/plugin_servers/pb_rpc.lua\",\n    [\"kong.runloop.wasm\"] = \"kong/runloop/wasm.lua\",\n    [\"kong.runloop.wasm.properties\"] = \"kong/runloop/wasm/properties.lua\",\n\n    [\"kong.workspaces\"] = \"kong/workspaces/init.lua\",\n\n    [\"kong.db\"] = \"kong/db/init.lua\",\n    [\"kong.db.utils\"] = \"kong/db/utils.lua\",\n    [\"kong.db.errors\"] = \"kong/db/errors.lua\",\n    [\"kong.db.iteration\"] = \"kong/db/iteration.lua\",\n    [\"kong.db.dao\"] = \"kong/db/dao/init.lua\",\n    [\"kong.db.dao.certificates\"] = \"kong/db/dao/certificates.lua\",\n    [\"kong.db.dao.snis\"] = \"kong/db/dao/snis.lua\",\n    [\"kong.db.dao.targets\"] = \"kong/db/dao/targets.lua\",\n    [\"kong.db.dao.plugins\"] = \"kong/db/dao/plugins.lua\",\n    [\"kong.db.dao.tags\"] = \"kong/db/dao/tags.lua\",\n    [\"kong.db.dao.vaults\"] = \"kong/db/dao/vaults.lua\",\n    [\"kong.db.dao.workspaces\"] = \"kong/db/dao/workspaces.lua\",\n    [\"kong.db.dao.services\"] = \"kong/db/dao/services.lua\",\n    [\"kong.db.dao.ca_certificates\"] = \"kong/db/dao/ca_certificates.lua\",\n    [\"kong.db.declarative\"] = \"kong/db/declarative/init.lua\",\n    [\"kong.db.declarative.marshaller\"] = \"kong/db/declarative/marshaller.lua\",\n    [\"kong.db.declarative.export\"] = \"kong/db/declarative/export.lua\",\n    [\"kong.db.declarative.import\"] = \"kong/db/declarative/import.lua\",\n    [\"kong.db.schema\"] = \"kong/db/schema/init.lua\",\n    [\"kong.db.dao.keys\"] = \"kong/db/dao/keys.lua\",\n    [\"kong.db.dao.key_sets\"] = \"kong/db/dao/key_sets.lua\",\n    [\"kong.db.schema.entities.keys\"] = \"kong/db/schema/entities/keys.lua\",\n    [\"kong.db.schema.entities.key_sets\"] = \"kong/db/schema/entities/key_sets.lua\",\n    [\"kong.db.schema.entities.consumers\"] = \"kong/db/schema/entities/consumers.lua\",\n    [\"kong.db.schema.entities.routes\"] = \"kong/db/schema/entities/routes.lua\",\n    [\"kong.db.schema.entities.routes_subschemas\"] = \"kong/db/schema/entities/routes_subschemas.lua\",\n    [\"kong.db.schema.entities.services\"] = \"kong/db/schema/entities/services.lua\",\n    [\"kong.db.schema.entities.certificates\"] = \"kong/db/schema/entities/certificates.lua\",\n    [\"kong.db.schema.entities.snis\"] = \"kong/db/schema/entities/snis.lua\",\n    [\"kong.db.schema.entities.upstreams\"] = \"kong/db/schema/entities/upstreams.lua\",\n    [\"kong.db.schema.entities.targets\"] = \"kong/db/schema/entities/targets.lua\",\n    [\"kong.db.schema.entities.plugins\"] = \"kong/db/schema/entities/plugins.lua\",\n    [\"kong.db.schema.entities.tags\"] = \"kong/db/schema/entities/tags.lua\",\n    [\"kong.db.schema.entities.ca_certificates\"] = \"kong/db/schema/entities/ca_certificates.lua\",\n    [\"kong.db.schema.entities.vaults\"] = \"kong/db/schema/entities/vaults.lua\",\n    [\"kong.db.schema.entities.workspaces\"] = \"kong/db/schema/entities/workspaces.lua\",\n    [\"kong.db.schema.entities.clustering_data_planes\"] = \"kong/db/schema/entities/clustering_data_planes.lua\",\n    [\"kong.db.schema.entities.parameters\"] = \"kong/db/schema/entities/parameters.lua\",\n    [\"kong.db.schema.entities.filter_chains\"] = \"kong/db/schema/entities/filter_chains.lua\",\n    [\"kong.db.schema.json\"] = \"kong/db/schema/json.lua\",\n    [\"kong.db.schema.others.migrations\"] = \"kong/db/schema/others/migrations.lua\",\n    [\"kong.db.schema.others.declarative_config\"] = \"kong/db/schema/others/declarative_config.lua\",\n    [\"kong.db.schema.entity\"] = \"kong/db/schema/entity.lua\",\n    [\"kong.db.schema.metaschema\"] = \"kong/db/schema/metaschema.lua\",\n    [\"kong.db.schema.typedefs\"] = \"kong/db/schema/typedefs.lua\",\n    [\"kong.db.schema.plugin_loader\"] = \"kong/db/schema/plugin_loader.lua\",\n    [\"kong.db.schema.vault_loader\"] = \"kong/db/schema/vault_loader.lua\",\n    [\"kong.db.schema.topological_sort\"] = \"kong/db/schema/topological_sort.lua\",\n    [\"kong.db.strategies\"] = \"kong/db/strategies/init.lua\",\n    [\"kong.db.strategies.connector\"] = \"kong/db/strategies/connector.lua\",\n    [\"kong.db.strategies.postgres\"] = \"kong/db/strategies/postgres/init.lua\",\n    [\"kong.db.strategies.postgres.connector\"] = \"kong/db/strategies/postgres/connector.lua\",\n    [\"kong.db.strategies.postgres.tags\"] = \"kong/db/strategies/postgres/tags.lua\",\n    [\"kong.db.strategies.postgres.services\"] = \"kong/db/strategies/postgres/services.lua\",\n    [\"kong.db.strategies.postgres.plugins\"] = \"kong/db/strategies/postgres/plugins.lua\",\n    [\"kong.db.strategies.off\"] = \"kong/db/strategies/off/init.lua\",\n    [\"kong.db.strategies.off.connector\"] = \"kong/db/strategies/off/connector.lua\",\n    [\"kong.db.strategies.off.tags\"] = \"kong/db/strategies/off/tags.lua\",\n\n    [\"kong.db.migrations.state\"] = \"kong/db/migrations/state.lua\",\n    [\"kong.db.migrations.subsystems\"] = \"kong/db/migrations/subsystems.lua\",\n    [\"kong.db.migrations.core\"] = \"kong/db/migrations/core/init.lua\",\n    [\"kong.db.migrations.core.000_base\"] = \"kong/db/migrations/core/000_base.lua\",\n    [\"kong.db.migrations.core.003_100_to_110\"] = \"kong/db/migrations/core/003_100_to_110.lua\",\n    [\"kong.db.migrations.core.004_110_to_120\"] = \"kong/db/migrations/core/004_110_to_120.lua\",\n    [\"kong.db.migrations.core.005_120_to_130\"] = \"kong/db/migrations/core/005_120_to_130.lua\",\n    [\"kong.db.migrations.core.006_130_to_140\"] = \"kong/db/migrations/core/006_130_to_140.lua\",\n    [\"kong.db.migrations.core.007_140_to_150\"] = \"kong/db/migrations/core/007_140_to_150.lua\",\n    [\"kong.db.migrations.core.008_150_to_200\"] = \"kong/db/migrations/core/008_150_to_200.lua\",\n    [\"kong.db.migrations.core.009_200_to_210\"] = \"kong/db/migrations/core/009_200_to_210.lua\",\n    [\"kong.db.migrations.core.010_210_to_211\"] = \"kong/db/migrations/core/010_210_to_211.lua\",\n    [\"kong.db.migrations.core.011_212_to_213\"] = \"kong/db/migrations/core/011_212_to_213.lua\",\n    [\"kong.db.migrations.core.012_213_to_220\"] = \"kong/db/migrations/core/012_213_to_220.lua\",\n    [\"kong.db.migrations.core.013_220_to_230\"] = \"kong/db/migrations/core/013_220_to_230.lua\",\n    [\"kong.db.migrations.core.014_230_to_270\"] = \"kong/db/migrations/core/014_230_to_270.lua\",\n    [\"kong.db.migrations.core.015_270_to_280\"] = \"kong/db/migrations/core/015_270_to_280.lua\",\n    [\"kong.db.migrations.core.016_280_to_300\"] = \"kong/db/migrations/core/016_280_to_300.lua\",\n    [\"kong.db.migrations.core.017_300_to_310\"] = \"kong/db/migrations/core/017_300_to_310.lua\",\n    [\"kong.db.migrations.core.018_310_to_320\"] = \"kong/db/migrations/core/018_310_to_320.lua\",\n    [\"kong.db.migrations.core.019_320_to_330\"] = \"kong/db/migrations/core/019_320_to_330.lua\",\n    [\"kong.db.migrations.core.020_330_to_340\"] = \"kong/db/migrations/core/020_330_to_340.lua\",\n    [\"kong.db.migrations.core.021_340_to_350\"] = \"kong/db/migrations/core/021_340_to_350.lua\",\n    [\"kong.db.migrations.core.022_350_to_360\"] = \"kong/db/migrations/core/022_350_to_360.lua\",\n    [\"kong.db.migrations.operations.200_to_210\"] = \"kong/db/migrations/operations/200_to_210.lua\",\n    [\"kong.db.migrations.operations.212_to_213\"] = \"kong/db/migrations/operations/212_to_213.lua\",\n    [\"kong.db.migrations.operations.280_to_300\"] = \"kong/db/migrations/operations/280_to_300.lua\",\n    [\"kong.db.migrations.migrate_path_280_300\"] = \"kong/db/migrations/migrate_path_280_300.lua\",\n    [\"kong.db.declarative.migrations\"] = \"kong/db/declarative/migrations/init.lua\",\n    [\"kong.db.declarative.migrations.route_path\"] = \"kong/db/declarative/migrations/route_path.lua\",\n\n    [\"kong.pdk\"] = \"kong/pdk/init.lua\",\n    [\"kong.pdk.private.checks\"] = \"kong/pdk/private/checks.lua\",\n    [\"kong.pdk.private.phases\"] = \"kong/pdk/private/phases.lua\",\n    [\"kong.pdk.private.node\"] = \"kong/pdk/private/node.lua\",\n    [\"kong.pdk.client\"] = \"kong/pdk/client.lua\",\n    [\"kong.pdk.client.tls\"] = \"kong/pdk/client/tls.lua\",\n    [\"kong.pdk.ctx\"] = \"kong/pdk/ctx.lua\",\n    [\"kong.pdk.ip\"] = \"kong/pdk/ip.lua\",\n    [\"kong.pdk.log\"] = \"kong/pdk/log.lua\",\n    [\"kong.pdk.service\"] = \"kong/pdk/service.lua\",\n    [\"kong.pdk.service.request\"] = \"kong/pdk/service/request.lua\",\n    [\"kong.pdk.service.response\"] = \"kong/pdk/service/response.lua\",\n    [\"kong.pdk.router\"] = \"kong/pdk/router.lua\",\n    [\"kong.pdk.request\"] = \"kong/pdk/request.lua\",\n    [\"kong.pdk.response\"] = \"kong/pdk/response.lua\",\n    [\"kong.pdk.table\"] = \"kong/pdk/table.lua\",\n    [\"kong.pdk.node\"] = \"kong/pdk/node.lua\",\n    [\"kong.pdk.nginx\"] = \"kong/pdk/nginx.lua\",\n    [\"kong.pdk.cluster\"] = \"kong/pdk/cluster.lua\",\n    [\"kong.pdk.vault\"] = \"kong/pdk/vault.lua\",\n    [\"kong.pdk.tracing\"] = \"kong/pdk/tracing.lua\",\n    [\"kong.pdk.plugin\"] = \"kong/pdk/plugin.lua\",\n\n    [\"kong.plugins.basic-auth.migrations\"] = \"kong/plugins/basic-auth/migrations/init.lua\",\n    [\"kong.plugins.basic-auth.migrations.000_base_basic_auth\"] = \"kong/plugins/basic-auth/migrations/000_base_basic_auth.lua\",\n    [\"kong.plugins.basic-auth.migrations.002_130_to_140\"] = \"kong/plugins/basic-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.basic-auth.migrations.003_200_to_210\"] = \"kong/plugins/basic-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.basic-auth.crypto\"] = \"kong/plugins/basic-auth/crypto.lua\",\n    [\"kong.plugins.basic-auth.handler\"] = \"kong/plugins/basic-auth/handler.lua\",\n    [\"kong.plugins.basic-auth.access\"] = \"kong/plugins/basic-auth/access.lua\",\n    [\"kong.plugins.basic-auth.schema\"] = \"kong/plugins/basic-auth/schema.lua\",\n    [\"kong.plugins.basic-auth.daos\"] = \"kong/plugins/basic-auth/daos.lua\",\n\n    [\"kong.plugins.key-auth.migrations\"] = \"kong/plugins/key-auth/migrations/init.lua\",\n    [\"kong.plugins.key-auth.migrations.000_base_key_auth\"] = \"kong/plugins/key-auth/migrations/000_base_key_auth.lua\",\n    [\"kong.plugins.key-auth.migrations.002_130_to_140\"] = \"kong/plugins/key-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.key-auth.migrations.003_200_to_210\"] = \"kong/plugins/key-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.key-auth.migrations.004_320_to_330\"] = \"kong/plugins/key-auth/migrations/004_320_to_330.lua\",\n    [\"kong.plugins.key-auth.handler\"] = \"kong/plugins/key-auth/handler.lua\",\n    [\"kong.plugins.key-auth.schema\"] = \"kong/plugins/key-auth/schema.lua\",\n    [\"kong.plugins.key-auth.daos\"] = \"kong/plugins/key-auth/daos.lua\",\n\n    [\"kong.plugins.oauth2.migrations\"] = \"kong/plugins/oauth2/migrations/init.lua\",\n    [\"kong.plugins.oauth2.migrations.000_base_oauth2\"] = \"kong/plugins/oauth2/migrations/000_base_oauth2.lua\",\n    [\"kong.plugins.oauth2.migrations.003_130_to_140\"] = \"kong/plugins/oauth2/migrations/003_130_to_140.lua\",\n    [\"kong.plugins.oauth2.migrations.004_200_to_210\"] = \"kong/plugins/oauth2/migrations/004_200_to_210.lua\",\n    [\"kong.plugins.oauth2.migrations.005_210_to_211\"] = \"kong/plugins/oauth2/migrations/005_210_to_211.lua\",\n    [\"kong.plugins.oauth2.migrations.006_320_to_330\"] = \"kong/plugins/oauth2/migrations/006_320_to_330.lua\",\n    [\"kong.plugins.oauth2.migrations.007_320_to_330\"] = \"kong/plugins/oauth2/migrations/007_320_to_330.lua\",\n    [\"kong.plugins.oauth2.handler\"] = \"kong/plugins/oauth2/handler.lua\",\n    [\"kong.plugins.oauth2.secret\"] = \"kong/plugins/oauth2/secret.lua\",\n    [\"kong.plugins.oauth2.access\"] = \"kong/plugins/oauth2/access.lua\",\n    [\"kong.plugins.oauth2.schema\"] = \"kong/plugins/oauth2/schema.lua\",\n    [\"kong.plugins.oauth2.daos\"] = \"kong/plugins/oauth2/daos.lua\",\n    [\"kong.plugins.oauth2.daos.oauth2_tokens\"] = \"kong/plugins/oauth2/daos/oauth2_tokens.lua\",\n\n    [\"kong.plugins.tcp-log.handler\"] = \"kong/plugins/tcp-log/handler.lua\",\n    [\"kong.plugins.tcp-log.schema\"] = \"kong/plugins/tcp-log/schema.lua\",\n\n    [\"kong.plugins.udp-log.handler\"] = \"kong/plugins/udp-log/handler.lua\",\n    [\"kong.plugins.udp-log.schema\"] = \"kong/plugins/udp-log/schema.lua\",\n\n    [\"kong.plugins.http-log.handler\"] = \"kong/plugins/http-log/handler.lua\",\n    [\"kong.plugins.http-log.schema\"] = \"kong/plugins/http-log/schema.lua\",\n    [\"kong.plugins.http-log.migrations\"] = \"kong/plugins/http-log/migrations/init.lua\",\n    [\"kong.plugins.http-log.migrations.001_280_to_300\"] = \"kong/plugins/http-log/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.file-log.handler\"] = \"kong/plugins/file-log/handler.lua\",\n    [\"kong.plugins.file-log.schema\"] = \"kong/plugins/file-log/schema.lua\",\n\n    [\"kong.plugins.rate-limiting.migrations\"] = \"kong/plugins/rate-limiting/migrations/init.lua\",\n    [\"kong.plugins.rate-limiting.migrations.000_base_rate_limiting\"] = \"kong/plugins/rate-limiting/migrations/000_base_rate_limiting.lua\",\n    [\"kong.plugins.rate-limiting.migrations.003_10_to_112\"] = \"kong/plugins/rate-limiting/migrations/003_10_to_112.lua\",\n    [\"kong.plugins.rate-limiting.migrations.004_200_to_210\"] = \"kong/plugins/rate-limiting/migrations/004_200_to_210.lua\",\n    [\"kong.plugins.rate-limiting.migrations.005_320_to_330\"] = \"kong/plugins/rate-limiting/migrations/005_320_to_330.lua\",\n    [\"kong.plugins.rate-limiting.migrations.006_350_to_360\"] = \"kong/plugins/rate-limiting/migrations/006_350_to_360.lua\",\n    [\"kong.plugins.rate-limiting.expiration\"] = \"kong/plugins/rate-limiting/expiration.lua\",\n    [\"kong.plugins.rate-limiting.handler\"] = \"kong/plugins/rate-limiting/handler.lua\",\n    [\"kong.plugins.rate-limiting.schema\"] = \"kong/plugins/rate-limiting/schema.lua\",\n    [\"kong.plugins.rate-limiting.daos\"] = \"kong/plugins/rate-limiting/daos.lua\",\n    [\"kong.plugins.rate-limiting.policies\"] = \"kong/plugins/rate-limiting/policies/init.lua\",\n    [\"kong.plugins.rate-limiting.policies.cluster\"] = \"kong/plugins/rate-limiting/policies/cluster.lua\",\n    [\"kong.plugins.rate-limiting.clustering.compat.redis_translation\"] = \"kong/plugins/rate-limiting/clustering/compat/redis_translation.lua\",\n\n    [\"kong.plugins.response-ratelimiting.migrations\"] = \"kong/plugins/response-ratelimiting/migrations/init.lua\",\n    [\"kong.plugins.response-ratelimiting.migrations.000_base_response_rate_limiting\"] = \"kong/plugins/response-ratelimiting/migrations/000_base_response_rate_limiting.lua\",\n    [\"kong.plugins.response-ratelimiting.migrations.001_350_to_360\"] = \"kong/plugins/response-ratelimiting/migrations/001_350_to_360.lua\",\n    [\"kong.plugins.response-ratelimiting.handler\"] = \"kong/plugins/response-ratelimiting/handler.lua\",\n    [\"kong.plugins.response-ratelimiting.access\"] = \"kong/plugins/response-ratelimiting/access.lua\",\n    [\"kong.plugins.response-ratelimiting.header_filter\"] = \"kong/plugins/response-ratelimiting/header_filter.lua\",\n    [\"kong.plugins.response-ratelimiting.log\"] = \"kong/plugins/response-ratelimiting/log.lua\",\n    [\"kong.plugins.response-ratelimiting.schema\"] = \"kong/plugins/response-ratelimiting/schema.lua\",\n    [\"kong.plugins.response-ratelimiting.policies\"] = \"kong/plugins/response-ratelimiting/policies/init.lua\",\n    [\"kong.plugins.response-ratelimiting.policies.cluster\"] = \"kong/plugins/response-ratelimiting/policies/cluster.lua\",\n    [\"kong.plugins.response-ratelimiting.clustering.compat.redis_translation\"] = \"kong/plugins/response-ratelimiting/clustering/compat/redis_translation.lua\",\n\n    [\"kong.plugins.request-size-limiting.handler\"] = \"kong/plugins/request-size-limiting/handler.lua\",\n    [\"kong.plugins.request-size-limiting.schema\"] = \"kong/plugins/request-size-limiting/schema.lua\",\n\n    [\"kong.plugins.response-transformer.handler\"] = \"kong/plugins/response-transformer/handler.lua\",\n    [\"kong.plugins.response-transformer.body_transformer\"] = \"kong/plugins/response-transformer/body_transformer.lua\",\n    [\"kong.plugins.response-transformer.header_transformer\"] = \"kong/plugins/response-transformer/header_transformer.lua\",\n    [\"kong.plugins.response-transformer.schema\"] = \"kong/plugins/response-transformer/schema.lua\",\n\n    [\"kong.plugins.cors.handler\"] = \"kong/plugins/cors/handler.lua\",\n    [\"kong.plugins.cors.schema\"] = \"kong/plugins/cors/schema.lua\",\n\n    [\"kong.plugins.ip-restriction.handler\"] = \"kong/plugins/ip-restriction/handler.lua\",\n    [\"kong.plugins.ip-restriction.schema\"] = \"kong/plugins/ip-restriction/schema.lua\",\n    [\"kong.plugins.ip-restriction.migrations\"] = \"kong/plugins/ip-restriction/migrations/init.lua\",\n    [\"kong.plugins.ip-restriction.migrations.001_200_to_210\"] = \"kong/plugins/ip-restriction/migrations/001_200_to_210.lua\",\n\n    [\"kong.plugins.acl.migrations\"] = \"kong/plugins/acl/migrations/init.lua\",\n    [\"kong.plugins.acl.migrations.000_base_acl\"] = \"kong/plugins/acl/migrations/000_base_acl.lua\",\n    [\"kong.plugins.acl.migrations.002_130_to_140\"] = \"kong/plugins/acl/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.acl.migrations.003_200_to_210\"] = \"kong/plugins/acl/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.acl.migrations.004_212_to_213\"] = \"kong/plugins/acl/migrations/004_212_to_213.lua\",\n    [\"kong.plugins.acl.handler\"] = \"kong/plugins/acl/handler.lua\",\n    [\"kong.plugins.acl.schema\"] = \"kong/plugins/acl/schema.lua\",\n    [\"kong.plugins.acl.daos\"] = \"kong/plugins/acl/daos.lua\",\n    [\"kong.plugins.acl.groups\"] = \"kong/plugins/acl/groups.lua\",\n    [\"kong.plugins.acl.acls\"] = \"kong/plugins/acl/acls.lua\",\n    [\"kong.plugins.acl.api\"] = \"kong/plugins/acl/api.lua\",\n\n    [\"kong.plugins.correlation-id.handler\"] = \"kong/plugins/correlation-id/handler.lua\",\n    [\"kong.plugins.correlation-id.schema\"] = \"kong/plugins/correlation-id/schema.lua\",\n\n    [\"kong.plugins.jwt.migrations\"] = \"kong/plugins/jwt/migrations/init.lua\",\n    [\"kong.plugins.jwt.migrations.000_base_jwt\"] = \"kong/plugins/jwt/migrations/000_base_jwt.lua\",\n    [\"kong.plugins.jwt.migrations.002_130_to_140\"] = \"kong/plugins/jwt/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.jwt.migrations.003_200_to_210\"] = \"kong/plugins/jwt/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.jwt.handler\"] = \"kong/plugins/jwt/handler.lua\",\n    [\"kong.plugins.jwt.schema\"] = \"kong/plugins/jwt/schema.lua\",\n    [\"kong.plugins.jwt.daos\"] = \"kong/plugins/jwt/daos.lua\",\n    [\"kong.plugins.jwt.jwt_parser\"] = \"kong/plugins/jwt/jwt_parser.lua\",\n\n    [\"kong.plugins.hmac-auth.migrations\"] = \"kong/plugins/hmac-auth/migrations/init.lua\",\n    [\"kong.plugins.hmac-auth.migrations.000_base_hmac_auth\"] = \"kong/plugins/hmac-auth/migrations/000_base_hmac_auth.lua\",\n    [\"kong.plugins.hmac-auth.migrations.002_130_to_140\"] = \"kong/plugins/hmac-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.hmac-auth.migrations.003_200_to_210\"] = \"kong/plugins/hmac-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.hmac-auth.handler\"] = \"kong/plugins/hmac-auth/handler.lua\",\n    [\"kong.plugins.hmac-auth.access\"] = \"kong/plugins/hmac-auth/access.lua\",\n    [\"kong.plugins.hmac-auth.schema\"] = \"kong/plugins/hmac-auth/schema.lua\",\n    [\"kong.plugins.hmac-auth.daos\"] = \"kong/plugins/hmac-auth/daos.lua\",\n\n    [\"kong.plugins.ldap-auth.handler\"] = \"kong/plugins/ldap-auth/handler.lua\",\n    [\"kong.plugins.ldap-auth.access\"] = \"kong/plugins/ldap-auth/access.lua\",\n    [\"kong.plugins.ldap-auth.schema\"] = \"kong/plugins/ldap-auth/schema.lua\",\n    [\"kong.plugins.ldap-auth.ldap\"] = \"kong/plugins/ldap-auth/ldap.lua\",\n    [\"kong.plugins.ldap-auth.asn1\"] = \"kong/plugins/ldap-auth/asn1.lua\",\n\n    [\"kong.plugins.syslog.handler\"] = \"kong/plugins/syslog/handler.lua\",\n    [\"kong.plugins.syslog.schema\"] = \"kong/plugins/syslog/schema.lua\",\n\n    [\"kong.plugins.loggly.handler\"] = \"kong/plugins/loggly/handler.lua\",\n    [\"kong.plugins.loggly.schema\"] = \"kong/plugins/loggly/schema.lua\",\n\n    [\"kong.plugins.datadog.handler\"] = \"kong/plugins/datadog/handler.lua\",\n    [\"kong.plugins.datadog.schema\"] = \"kong/plugins/datadog/schema.lua\",\n    [\"kong.plugins.datadog.statsd_logger\"] = \"kong/plugins/datadog/statsd_logger.lua\",\n\n    [\"kong.plugins.statsd.constants\"] = \"kong/plugins/statsd/constants.lua\",\n    [\"kong.plugins.statsd.handler\"] = \"kong/plugins/statsd/handler.lua\",\n    [\"kong.plugins.statsd.log\"] = \"kong/plugins/statsd/log.lua\",\n    [\"kong.plugins.statsd.schema\"] = \"kong/plugins/statsd/schema.lua\",\n    [\"kong.plugins.statsd.statsd_logger\"] = \"kong/plugins/statsd/statsd_logger.lua\",\n\n    [\"kong.plugins.bot-detection.handler\"] = \"kong/plugins/bot-detection/handler.lua\",\n    [\"kong.plugins.bot-detection.schema\"] = \"kong/plugins/bot-detection/schema.lua\",\n    [\"kong.plugins.bot-detection.rules\"] = \"kong/plugins/bot-detection/rules.lua\",\n    [\"kong.plugins.bot-detection.migrations\"] = \"kong/plugins/bot-detection/migrations/init.lua\",\n    [\"kong.plugins.bot-detection.migrations.001_200_to_210\"] = \"kong/plugins/bot-detection/migrations/001_200_to_210.lua\",\n\n    [\"kong.plugins.request-termination.handler\"] = \"kong/plugins/request-termination/handler.lua\",\n    [\"kong.plugins.request-termination.schema\"] = \"kong/plugins/request-termination/schema.lua\",\n\n    [\"kong.plugins.aws-lambda.handler\"]              = \"kong/plugins/aws-lambda/handler.lua\",\n    [\"kong.plugins.aws-lambda.schema\"]               = \"kong/plugins/aws-lambda/schema.lua\",\n    [\"kong.plugins.aws-lambda.request-util\"]         = \"kong/plugins/aws-lambda/request-util.lua\",\n\n    [\"kong.plugins.grpc-gateway.deco\"] = \"kong/plugins/grpc-gateway/deco.lua\",\n    [\"kong.plugins.grpc-gateway.handler\"] = \"kong/plugins/grpc-gateway/handler.lua\",\n    [\"kong.plugins.grpc-gateway.schema\"] = \"kong/plugins/grpc-gateway/schema.lua\",\n\n    [\"kong.plugins.acme.api\"] = \"kong/plugins/acme/api.lua\",\n    [\"kong.plugins.acme.client\"] = \"kong/plugins/acme/client.lua\",\n    [\"kong.plugins.acme.clustering.compat.redis_translation\"] = \"kong/plugins/acme/clustering/compat/redis_translation.lua\",\n    [\"kong.plugins.acme.daos\"] = \"kong/plugins/acme/daos.lua\",\n    [\"kong.plugins.acme.handler\"] = \"kong/plugins/acme/handler.lua\",\n    [\"kong.plugins.acme.migrations.000_base_acme\"] = \"kong/plugins/acme/migrations/000_base_acme.lua\",\n    [\"kong.plugins.acme.migrations.001_280_to_300\"] = \"kong/plugins/acme/migrations/001_280_to_300.lua\",\n    [\"kong.plugins.acme.migrations.002_320_to_330\"] = \"kong/plugins/acme/migrations/002_320_to_330.lua\",\n    [\"kong.plugins.acme.migrations.003_350_to_360\"] = \"kong/plugins/acme/migrations/003_350_to_360.lua\",\n    [\"kong.plugins.acme.migrations\"] = \"kong/plugins/acme/migrations/init.lua\",\n    [\"kong.plugins.acme.schema\"] = \"kong/plugins/acme/schema.lua\",\n    [\"kong.plugins.acme.storage.kong\"] = \"kong/plugins/acme/storage/kong.lua\",\n    [\"kong.plugins.acme.storage.config_adapters\"] = \"kong/plugins/acme/storage/config_adapters/init.lua\",\n    [\"kong.plugins.acme.storage.config_adapters.redis\"] = \"kong/plugins/acme/storage/config_adapters/redis.lua\",\n    [\"kong.plugins.acme.reserved_words\"] = \"kong/plugins/acme/reserved_words.lua\",\n\n    [\"kong.plugins.prometheus.api\"] = \"kong/plugins/prometheus/api.lua\",\n    [\"kong.plugins.prometheus.status_api\"] = \"kong/plugins/prometheus/status_api.lua\",\n    [\"kong.plugins.prometheus.exporter\"] = \"kong/plugins/prometheus/exporter.lua\",\n    [\"kong.plugins.prometheus.handler\"] = \"kong/plugins/prometheus/handler.lua\",\n    [\"kong.plugins.prometheus.prometheus\"] = \"kong/plugins/prometheus/prometheus.lua\",\n    [\"kong.plugins.prometheus.serve\"] = \"kong/plugins/prometheus/serve.lua\",\n    [\"kong.plugins.prometheus.schema\"] = \"kong/plugins/prometheus/schema.lua\",\n\n    [\"kong.plugins.session.handler\"] = \"kong/plugins/session/handler.lua\",\n    [\"kong.plugins.session.schema\"] = \"kong/plugins/session/schema.lua\",\n    [\"kong.plugins.session.access\"] = \"kong/plugins/session/access.lua\",\n    [\"kong.plugins.session.header_filter\"] = \"kong/plugins/session/header_filter.lua\",\n    [\"kong.plugins.session.session\"] = \"kong/plugins/session/session.lua\",\n    [\"kong.plugins.session.daos\"] = \"kong/plugins/session/daos.lua\",\n    [\"kong.plugins.session.storage.kong\"] = \"kong/plugins/session/storage/kong.lua\",\n    [\"kong.plugins.session.migrations.000_base_session\"] = \"kong/plugins/session/migrations/000_base_session.lua\",\n    [\"kong.plugins.session.migrations.001_add_ttl_index\"] = \"kong/plugins/session/migrations/001_add_ttl_index.lua\",\n    [\"kong.plugins.session.migrations.002_320_to_330\"] = \"kong/plugins/session/migrations/002_320_to_330.lua\",\n    [\"kong.plugins.session.migrations\"] = \"kong/plugins/session/migrations/init.lua\",\n\n    [\"kong.plugins.proxy-cache.handler\"]              = \"kong/plugins/proxy-cache/handler.lua\",\n    [\"kong.plugins.proxy-cache.cache_key\"]            = \"kong/plugins/proxy-cache/cache_key.lua\",\n    [\"kong.plugins.proxy-cache.schema\"]               = \"kong/plugins/proxy-cache/schema.lua\",\n    [\"kong.plugins.proxy-cache.api\"]                  = \"kong/plugins/proxy-cache/api.lua\",\n    [\"kong.plugins.proxy-cache.strategies\"]           = \"kong/plugins/proxy-cache/strategies/init.lua\",\n    [\"kong.plugins.proxy-cache.strategies.memory\"]    = \"kong/plugins/proxy-cache/strategies/memory.lua\",\n\n    [\"kong.plugins.grpc-web.deco\"] = \"kong/plugins/grpc-web/deco.lua\",\n    [\"kong.plugins.grpc-web.handler\"] = \"kong/plugins/grpc-web/handler.lua\",\n    [\"kong.plugins.grpc-web.schema\"] = \"kong/plugins/grpc-web/schema.lua\",\n\n    [\"kong.plugins.pre-function._handler\"] = \"kong/plugins/pre-function/_handler.lua\",\n    [\"kong.plugins.pre-function._schema\"] = \"kong/plugins/pre-function/_schema.lua\",\n    [\"kong.plugins.pre-function.migrations._001_280_to_300\"] = \"kong/plugins/pre-function/migrations/_001_280_to_300.lua\",\n\n    [\"kong.plugins.pre-function.handler\"] = \"kong/plugins/pre-function/handler.lua\",\n    [\"kong.plugins.pre-function.schema\"] = \"kong/plugins/pre-function/schema.lua\",\n    [\"kong.plugins.pre-function.migrations\"] = \"kong/plugins/pre-function/migrations/init.lua\",\n    [\"kong.plugins.pre-function.migrations.001_280_to_300\"] = \"kong/plugins/pre-function/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.post-function.handler\"] = \"kong/plugins/post-function/handler.lua\",\n    [\"kong.plugins.post-function.schema\"] = \"kong/plugins/post-function/schema.lua\",\n    [\"kong.plugins.post-function.migrations\"] = \"kong/plugins/post-function/migrations/init.lua\",\n    [\"kong.plugins.post-function.migrations.001_280_to_300\"] = \"kong/plugins/post-function/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.zipkin.handler\"] = \"kong/plugins/zipkin/handler.lua\",\n    [\"kong.plugins.zipkin.reporter\"] = \"kong/plugins/zipkin/reporter.lua\",\n    [\"kong.plugins.zipkin.span\"] = \"kong/plugins/zipkin/span.lua\",\n    [\"kong.plugins.zipkin.schema\"] = \"kong/plugins/zipkin/schema.lua\",\n    [\"kong.plugins.zipkin.request_tags\"] = \"kong/plugins/zipkin/request_tags.lua\",\n\n    [\"kong.plugins.request-transformer.migrations.postgres\"] = \"kong/plugins/request-transformer/migrations/postgres.lua\",\n    [\"kong.plugins.request-transformer.migrations.common\"] = \"kong/plugins/request-transformer/migrations/common.lua\",\n    [\"kong.plugins.request-transformer.handler\"] = \"kong/plugins/request-transformer/handler.lua\",\n    [\"kong.plugins.request-transformer.access\"] = \"kong/plugins/request-transformer/access.lua\",\n    [\"kong.plugins.request-transformer.schema\"] = \"kong/plugins/request-transformer/schema.lua\",\n\n    [\"kong.plugins.azure-functions.handler\"] = \"kong/plugins/azure-functions/handler.lua\",\n    [\"kong.plugins.azure-functions.schema\"]  = \"kong/plugins/azure-functions/schema.lua\",\n\n    [\"kong.plugins.opentelemetry.handler\"] = \"kong/plugins/opentelemetry/handler.lua\",\n    [\"kong.plugins.opentelemetry.schema\"]  = \"kong/plugins/opentelemetry/schema.lua\",\n    [\"kong.plugins.opentelemetry.proto\"]  = \"kong/plugins/opentelemetry/proto.lua\",\n    [\"kong.plugins.opentelemetry.otlp\"]  = \"kong/plugins/opentelemetry/otlp.lua\",\n\n    [\"kong.plugins.ai-proxy.handler\"] = \"kong/plugins/ai-proxy/handler.lua\",\n    [\"kong.plugins.ai-proxy.schema\"] = \"kong/plugins/ai-proxy/schema.lua\",\n\n    [\"kong.plugins.ai-request-transformer.handler\"] = \"kong/plugins/ai-request-transformer/handler.lua\",\n    [\"kong.plugins.ai-request-transformer.schema\"] = \"kong/plugins/ai-request-transformer/schema.lua\",\n\n    [\"kong.plugins.ai-response-transformer.handler\"] = \"kong/plugins/ai-response-transformer/handler.lua\",\n    [\"kong.plugins.ai-response-transformer.schema\"] = \"kong/plugins/ai-response-transformer/schema.lua\",\n\n    [\"kong.llm\"] = \"kong/llm/init.lua\",\n    [\"kong.llm.drivers.shared\"] = \"kong/llm/drivers/shared.lua\",\n    [\"kong.llm.drivers.openai\"] = \"kong/llm/drivers/openai.lua\",\n    [\"kong.llm.drivers.azure\"] = \"kong/llm/drivers/azure.lua\",\n    [\"kong.llm.drivers.cohere\"] = \"kong/llm/drivers/cohere.lua\",\n    [\"kong.llm.drivers.anthropic\"] = \"kong/llm/drivers/anthropic.lua\",\n    [\"kong.llm.drivers.mistral\"] = \"kong/llm/drivers/mistral.lua\",\n    [\"kong.llm.drivers.llama2\"] = \"kong/llm/drivers/llama2.lua\",\n\n    [\"kong.plugins.ai-prompt-decorator.handler\"] = \"kong/plugins/ai-prompt-decorator/handler.lua\",\n    [\"kong.plugins.ai-prompt-decorator.schema\"]  = \"kong/plugins/ai-prompt-decorator/schema.lua\",\n\n    [\"kong.plugins.ai-prompt-template.handler\"] = \"kong/plugins/ai-prompt-template/handler.lua\",\n    [\"kong.plugins.ai-prompt-template.schema\"]  = \"kong/plugins/ai-prompt-template/schema.lua\",\n    [\"kong.plugins.ai-prompt-template.templater\"]  = \"kong/plugins/ai-prompt-template/templater.lua\",\n\n    [\"kong.plugins.ai-prompt-guard.handler\"] = \"kong/plugins/ai-prompt-guard/handler.lua\",\n    [\"kong.plugins.ai-prompt-guard.schema\"]  = \"kong/plugins/ai-prompt-guard/schema.lua\",\n\n    [\"kong.vaults.env\"] = \"kong/vaults/env/init.lua\",\n    [\"kong.vaults.env.schema\"] = \"kong/vaults/env/schema.lua\",\n\n    [\"kong.tracing.instrumentation\"] = \"kong/tracing/instrumentation.lua\",\n    [\"kong.tracing.propagation\"] = \"kong/tracing/propagation.lua\",\n    [\"kong.tracing.request_id\"] = \"kong/tracing/request_id.lua\",\n    [\"kong.tracing.tracing_context\"] = \"kong/tracing/tracing_context.lua\",\n\n    [\"kong.timing\"] = \"kong/timing/init.lua\",\n    [\"kong.timing.context\"] = \"kong/timing/context.lua\",\n    [\"kong.timing.hooks\"] = \"kong/timing/hooks/init.lua\",\n    [\"kong.timing.hooks.dns\"] = \"kong/timing/hooks/dns.lua\",\n    [\"kong.timing.hooks.http\"] = \"kong/timing/hooks/http.lua\",\n    [\"kong.timing.hooks.redis\"] = \"kong/timing/hooks/redis.lua\",\n    [\"kong.timing.hooks.socket\"] = \"kong/timing/hooks/socket.lua\",\n\n    [\"kong.dynamic_hook\"] = \"kong/dynamic_hook/init.lua\",\n    [\"kong.dynamic_hook.wrap_function_gen\"] = \"kong/dynamic_hook/wrap_function_gen.lua\",\n  }\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/ruby/specifications/bundler.gemspec",
    "content": "# frozen_string_literal: true\n# -*- encoding: utf-8 -*-                                                                                                                                         \n# stub: bundler 2.1.4 ruby lib                                                                                                                                    \n                                                                                                                                                                  \nGem::Specification.new do |s|                                                                                                                                     \n    s.name = \"bundler\".freeze                                                                                                                                       \n    s.version = \"2.1.4\"                                                                                                                                             \n                                                                                                                                                                    \n    s.required_rubygems_version = Gem::Requirement.new(\">= 2.5.2\".freeze) if s.respond_to? :required_rubygems_version=                                              \n    s.require_paths = [\"lib\".freeze]                                                                                                                                \n    s.authors = [\"Andr\\u00E9 Arko\".freeze, \"Samuel Giddins\".freeze, \"Colby Swandale\".freeze, \"Hiroshi Shibata\".freeze, \"David Rodr\\u00EDguez\".freeze, \"Grey Baker\".f\n    s.bindir = \"exe\".freeze                                                                                                                                         \n    s.date = \"2020-01-05\"                                                                                                                                           \n    s.description = \"Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably\".freeze             \n    s.email = [\"team@bundler.io\".freeze]                                                                                                                            \n    s.executables = [\"bundle\".freeze, \"bundler\".freeze]                                                                                                             \n    s.files = [\"exe/bundle\".freeze, \"exe/bundler\".freeze]                                                                                                           \n    s.homepage = \"https://bundler.io\".freeze                                                                                                                        \n    s.licenses = [\"MIT\".freeze]                                                                                                                                     \n    s.required_ruby_version = Gem::Requirement.new(\">= 2.3.0\".freeze)                                                                                               \n    s.rubygems_version = \"3.1.2\".freeze                                                                                                                             \n    s.summary = \"The best way to manage your application's dependencies\".freeze                                                                                     \n                                                                                                                                                                    \n    s.installed_by_version = \"3.1.2\" if s.respond_to? :installed_by_version                                                                                         \n  end "
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/ruby/specifications/default/unbundler.gemspec",
    "content": "# frozen_string_literal: true\n# -*- encoding: utf-8 -*-                                                                                                                                         \n# stub: unbundler 2.1.4 ruby lib                                                                                                                                    \n                                                                                                                                                                  \nGem::Specification.new do |s|                                                                                                                                     \n    s.name = \"unbundler\".freeze\n    s.version = \"3.1.4\"\n                                                                                                                                                                    \n    s.required_rubygems_version = Gem::Requirement.new(\">= 2.5.2\".freeze) if s.respond_to? :required_rubygems_version=                                              \n    s.require_paths = [\"lib\".freeze]                                                                                                                                \n    s.authors = [\"Andr\\u00E9 Arko\".freeze, \"Samuel Giddins\".freeze, \"Colby Swandale\".freeze, \"Hiroshi Shibata\".freeze, \"David Rodr\\u00EDguez\".freeze, \"Grey Baker\".f\n    s.bindir = \"exe\".freeze                                                                                                                                         \n    s.date = \"2020-01-05\"                                                                                                                                           \n    s.description = \"Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably\".freeze             \n    s.email = [\"team@unbundler.io\".freeze]                                                                                                                            \n    s.executables = [\"unbundle\".freeze, \"unbundler\".freeze]                                                                                                             \n    s.files = [\"exe/unbundle\".freeze, \"exe/unbundler\".freeze]                                                                                                           \n    s.homepage = \"https://unbundler.io\".freeze                                                                                                                        \n    s.licenses = [\"MIT\".freeze]                                                                                                                                     \n    s.required_ruby_version = Gem::Requirement.new(\">= 2.3.0\".freeze)                                                                                               \n    s.rubygems_version = \"3.1.2\".freeze                                                                                                                             \n    s.summary = \"The best way to manage your application's dependencies\".freeze                                                                                     \n                                                                                                                                                                    \n    s.installed_by_version = \"3.1.2\" if s.respond_to? :installed_by_version                                                                                         \n  end "
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS",
    "content": "dir /usr\ndir /usr/bin\nobj /usr/bin/skopeo 376c02bd3b22804df8fdfdc895e7dbfb 1649284374\ndir /etc\ndir /etc/containers\nobj /etc/containers/policy.json c01eb6950f03419e09d4fc88cb42ff6f 1649284375\ndir /etc/containers/registries.d\nobj /etc/containers/registries.d/default.yaml e6e66cd3c24623e0667f26542e0e08f6 1649284375\ndir /var\ndir /var/lib\ndir /var/lib/atomic\ndir /var/lib/atomic/sigstore\nobj /var/lib/atomic/sigstore/.keep_app-containers_skopeo-0 d41d8cd98f00b204e9800998ecf8427e 1649284375\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE",
    "content": "Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/SIZE",
    "content": "27937835\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/dpkg/status",
    "content": "Package: apt\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 4064\nMaintainer: APT Development Team <deity@lists.debian.org>\nArchitecture: amd64\nVersion: 1.8.2\nSource: apt-dev\nReplaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)\nProvides: apt-transport-https (= 1.8.2)\nDepends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, libapt-pkg5.0 (>= 1.7.0~alpha3~), libc6 (>= 2.15), libgcc1 (>= 1:3.0), libgnutls30 (>= 3.6.6), libseccomp2 (>= 1.0.1), libstdc++6 (>= 5.2)\nRecommends: ca-certificates\nSuggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base\nBreaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)\nConffiles:\n /etc/apt/apt.conf.d/01autoremove 76120d358bc9037bb6358e737b3050b5\n /etc/cron.daily/apt-compat 49e9b2cfa17849700d4db735d04244f3\n /etc/kernel/postinst.d/apt-auto-removal 4ad976a68f045517cf4696cec7b8aa3a\n /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3\nDescription: commandline package manager\n This package provides commandline tools for searching and\n managing as well as querying information about packages\n as a low-level access to all features of the libapt-pkg library.\n .\n These include:\n  * apt-get for retrieval of packages and information about them\n    from authenticated sources and for installation, upgrade and\n    removal of packages together with their dependencies\n  * apt-cache for querying available information about installed\n    as well as installable packages\n  * apt-cdrom to use removable media as a source for packages\n  * apt-config as an interface to the configuration settings\n  * apt-key as an interface to manage authentication keys\n\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/dash",
    "content": "Package: dash\nVersion: 0.5.8-2.4\nArchitecture: amd64\nEssential: yes\nMaintainer: Gerrit Pape <pape@smarden.org>\nInstalled-Size: 204\nPre-Depends: libc6 (>= 2.14)\nDepends: debianutils (>= 2.15), dpkg (>= 1.15.0)\nSection: shells\nPriority: required\nHomepage: http://gondor.apana.org.au/~herbert/dash/\nDescription: POSIX-compliant shell\n The Debian Almquist Shell (dash) is a POSIX-compliant shell derived\n from ash.\n .\n Since it executes scripts faster than bash, and has fewer library\n dependencies (making it more robust against software or hardware\n failures), it is used as the default system shell on Debian systems.\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/netbase",
    "content": "Package: netbase\nVersion: 5.4\nArchitecture: all\nMaintainer: Marco d'Itri <md@linux.it>\nInstalled-Size: 44\nSection: admin\nPriority: important\nMulti-Arch: foreign\nDescription: Basic TCP/IP networking system\n This package provides the necessary infrastructure for basic TCP/IP based\n networking.\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/pacman/local/ALPM_DB_VERSION",
    "content": "9\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/desc",
    "content": "%NAME%\npacman\n\n%VERSION%\n6.0.1-5\n\n%BASE%\npacman\n\n%DESC%\nA library-based package manager with dependency support\n\n%URL%\nhttps://www.archlinux.org/pacman/\n\n%ARCH%\nx86_64\n\n%BUILDDATE%\n1652116331\n\n%INSTALLDATE%\n1654074247\n\n%PACKAGER%\nMorten Linderud <foxboron@archlinux.org>\n\n%SIZE%\n4925474\n\n%REASON%\n1\n\n%GROUPS%\nbase-devel\n\n%LICENSE%\nGPL\n\n%VALIDATION%\npgp\n\n%DEPENDS%\nbash\nglibc\nlibarchive\ncurl\ngpgme\npacman-mirrorlist\narchlinux-keyring\n\n%OPTDEPENDS%\nperl-locale-gettext: translation support in makepkg-template\n\n%PROVIDES%\nlibalpm.so=13-64\n\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/files",
    "content": "%FILES%\netc/\netc/makepkg.conf\netc/pacman.conf\nusr/\nusr/bin/\nusr/bin/makepkg\nusr/bin/makepkg-template\nusr/bin/pacman\nusr/bin/pacman-conf\nusr/bin/pacman-db-upgrade\nusr/bin/pacman-key\nusr/bin/repo-add\nusr/bin/repo-elephant\nusr/bin/repo-remove\nusr/bin/testpkg\nusr/bin/vercmp\nusr/include/\nusr/include/alpm.h\nusr/include/alpm_list.h\nusr/lib/\nusr/lib/libalpm.so\nusr/lib/libalpm.so.13\nusr/lib/libalpm.so.13.0.1\nusr/lib/pkgconfig/\nusr/lib/pkgconfig/libalpm.pc\n\n%BACKUP%\netc/pacman.conf\tde541390e52468165b96511c4665bff4\netc/makepkg.conf\t79fce043df7dfc676ae5ecb903762d8b\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/var/lib/rpm/generate-fixture.sh",
    "content": "#!/usr/bin/env bash\nset -eux\n\ndocker create --name generate-rpmdb-fixture rockylinux:9 sh -c 'tail -f /dev/null'\n\nfunction cleanup {\n  docker kill generate-rpmdb-fixture\n  docker rm generate-rpmdb-fixture\n}\ntrap cleanup EXIT\n\ndocker start generate-rpmdb-fixture\ndocker exec -i --tty=false generate-rpmdb-fixture bash <<-EOF\n  mkdir -p /scratch\n  cd /scratch\n  rpm --initdb --dbpath /scratch\n  curl -sSLO https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm\n  rpm --dbpath /scratch -ivh dive_0.9.2_linux_amd64.rpm\n  rm dive_0.9.2_linux_amd64.rpm\n  rpm --dbpath /scratch -qa\nEOF\n\ndocker cp generate-rpmdb-fixture:/scratch/Packages .\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/pkgs/wordpress/wp-content/plugins/akismet/akismet.php",
    "content": "<?php\n/**\n * @package Akismet\n */\n/*\nPlugin Name:Akismet Anti-spam: Spam Protection\nPlugin URI: https://akismet.com/\nDescription: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.\nVersion: 5.3\nRequires at least: 5.8\nRequires PHP: 5.6.20\nAuthor: Automattic - Anti-spam Team\nAuthor URI: https://automattic.com/wordpress-plugins/\nLicense: GPLv2 or later\nText Domain: akismet\n*/\n// rest of plugin's code ..."
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/swift/Package.resolved",
    "content": "{\n  \"pins\" : [\n    {\n      \"identity\" : \"swift-algorithms\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-algorithms.git\",\n      \"state\" : {\n        \"revision\" : \"b14b7f4c528c942f121c8b860b9410b2bf57825e\",\n        \"version\" : \"1.0.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-async-algorithms\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-async-algorithms.git\",\n      \"state\" : {\n        \"revision\" : \"9cfed92b026c524674ed869a4ff2dcfdeedf8a2a\",\n        \"version\" : \"0.1.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-atomics\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-atomics.git\",\n      \"state\" : {\n        \"revision\" : \"6c89474e62719ddcc1e9614989fff2f68208fe10\",\n        \"version\" : \"1.1.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-collections\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-collections.git\",\n      \"state\" : {\n        \"revision\" : \"937e904258d22af6e447a0b72c0bc67583ef64a2\",\n        \"version\" : \"1.0.4\"\n      }\n    },\n    {\n      \"identity\" : \"swift-numerics\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-numerics\",\n      \"state\" : {\n        \"revision\" : \"0a5bc04095a675662cf24757cc0640aa2204253b\",\n        \"version\" : \"1.0.2\"\n      }\n    }\n  ],\n  \"version\" : 2\n}"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/swipl/pack/hdt/pack.pl",
    "content": "name(hdt).\nversion('0.5.2').\n% TODO: swipl_version([90121]).\ntitle('Access RDF HDT files').\nkeywords(['RDF']).\nauthor( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\npackager( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\nmaintainer( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\nhome( 'https://github.com/JanWielemaker/hdt' ).\ndownload( 'https://github.com/JanWielemaker/hdt/archive/V*.zip' ).\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-pkg-coverage/terraform/.terraform.lock.hcl",
    "content": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"registry.terraform.io/hashicorp/aws\" {\n  version     = \"5.72.1\"\n  constraints = \">= 5.72.0\"\n  hashes = [\n    \"h1:jhd5O5o0CfZCNEwwN0EiDAzb7ApuFrtxJqa6HXW4EKE=\",\n    \"zh:0dea6843836e926d33469b48b948744079023816d16a2ff7666bcfb6aa3522d4\",\n    \"zh:195fa9513f75800a0d62797ebec75ee73e9b8c28d713fe9b63d3b1d1eec129b3\",\n    \"zh:1ed92f3961715bf0e024bcde3c12dfbdc50b00c1f8a43cc00802cfc45a256208\",\n    \"zh:2ac687e3a52606466cae4a6813e81d923042488df88d2424e28d3f8530f091bb\",\n    \"zh:32e7ca75f9314557daada3c44628fe1f3bf964a4f833bfb4b2295d833fe64b6f\",\n    \"zh:374ee0e6b4327cc6ef666908ce5d6450a3a56e90cd2b785e83c2bcfc100021d2\",\n    \"zh:5500fd6fdac44f96411fcf9c6d01691159ec35455ed127eb4c3a498e1cc92a64\",\n    \"zh:723a2dc4b064c12e7ee62ad4fbfd72fa5e025206ea47b735994ef53f3c373152\",\n    \"zh:89d97b87605f1d734f27e642567cbecf785b521af8ea81dac55c77ccde876221\",\n    \"zh:951ee1e5731e8d65d521d71b95927e55055b3c4656eef6d46fa580a63328befc\",\n    \"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425\",\n    \"zh:9b2b362470b64ec227b2da64762ab8bc4111c6b80365fd9d82fc5e1e33f44038\",\n    \"zh:aa6e57d0cb974ff0da5dee5d43ad2745cbbc4a2b507d4c799839b9fa96daf688\",\n    \"zh:ba0d14c4a6b7aa844a830d47c0bf995b632e37f0795394b5b60c638b62b7fc03\",\n    \"zh:c9764065a9c5d324db0b02bd201b9e3a2118e49c4960884acdeea377173302e9\",\n  ]\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-rust-auditable/Dockerfile",
    "content": "# An image containing the example hello-auditable binary from https://github.com/Shnatsel/rust-audit/tree/master/hello-auditable\nFROM docker.io/tofay/hello-rust-auditable@sha256:1d35d1e007180b3f7500aae5e27560697909132ca9a6d480c4c825534c1c47a9\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sbom-cataloger/Dockerfile",
    "content": "FROM scratch\nCOPY go.mod /\nCOPY test.spdx.json /\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sbom-cataloger/go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.14\n\nrequire (\n\tgithub.com/anchore/packageurl-go v0.1.1-0.20220428202044-a072fa3cb6d7\n\tgithub.com/bmatcuk/doublestar v1.3.1\n)\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sbom-cataloger/test.spdx.json",
    "content": "{\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"test/integration/test-fixtures/image-sbom-cataloger\",\n \"spdxVersion\": \"SPDX-2.2\",\n \"creationInfo\": {\n  \"created\": \"2022-08-18T05:23:38.066146511Z\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-0.53.0\"\n  ],\n  \"licenseListVersion\": \"3.17\"\n },\n \"dataLicense\": \"CC0-1.0\",\n \"documentNamespace\": \"https://anchore.com/syft/dir/test/integration/test-fixtures/image-sbom-cataloger-057e7aa2-332c-4b50-bbd1-a17dd62ddce4\",\n \"packages\": [\n  {\n   \"SPDXID\": \"SPDXRef-45209ca0cdcbafa\",\n   \"name\": \"github.com/bmatcuk/doublestar\",\n   \"licenseConcluded\": \"NONE\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:bmatcuk:doublestar:v1.3.1:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE_MANAGER\",\n     \"referenceLocator\": \"pkg:golang/github.com/bmatcuk/doublestar@v1.3.1\",\n     \"referenceType\": \"purl\"\n    }\n   ],\n   \"filesAnalyzed\": false,\n   \"licenseDeclared\": \"NONE\",\n   \"sourceInfo\": \"acquired package info from go module information: go.mod\",\n   \"versionInfo\": \"v1.3.1\"\n  }\n ]\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sbom-metadata-component/Dockerfile",
    "content": "FROM scratch\nCOPY test.cdx.json /\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sbom-metadata-component/test.cdx.json",
    "content": "{\n  \"bomFormat\" : \"CycloneDX\",\n  \"specVersion\" : \"1.5\",\n  \"serialNumber\" : \"urn:uuid:dc807d4b-0415-35ab-ba61-49b5d39bc2d9\",\n  \"version\" : 1,\n  \"metadata\" : {\n    \"component\" : {\n      \"name\" : \"main-component\",\n      \"version\" : \"1.2.3\",\n      \"purl\" : \"pkg:maven/org.example/main-component@1.2.3\",\n      \"type\" : \"library\",\n      \"bom-ref\" : \"pkg:maven/org.example/main-component@1.2.3\"\n    }\n  },\n  \"components\" : [\n    {\n      \"name\" : \"first-subcomponent\",\n      \"version\" : \"2.3.4\",\n      \"purl\" : \"pkg:maven/org.example/first-subcomponent@2.3.4\",\n      \"type\" : \"library\",\n      \"bom-ref\" : \"pkg:maven/org.example/first-subcomponent@2.3.4\"\n    }\n  ],\n  \"dependencies\" : [\n    {\n      \"ref\" : \"pkg:maven/org.example/main-component-assembly@1.2.3\",\n      \"dependsOn\" : [\n        \"pkg:maven/org.example/first-subcomponent@2.3.4\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-sqlite-rpmdb/Dockerfile",
    "content": "FROM fedora:35@sha256:36af84ba69e21c9ef86a0424a090674c433b2b80c2462e57503886f1d823abe8 AS base\n\n# lets save some space\nFROM scratch\n\nCOPY --from=base /var/lib/rpm /var/lib/rpm\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-suse-all-layers/Dockerfile",
    "content": "FROM registry.suse.com/suse/sle15:15.3.17.20.20@sha256:fd657ecbab5ca564d6933e887f6ae8542a9398e6a4b399f352ce10c3a24afc64 AS base\nRUN zypper in -y wget\n\n# let's save some space... we really just need an image that has an RPM DB that is linked across layers\nFROM --platform=linux/amd64 busybox:1.36.1\n\n# setup a link /var/lib/rpm -> ../../usr/lib/sysimage/rpm\nRUN mkdir -p /var/lib && ln -s ../../usr/lib/sysimage/rpm /var/lib/rpm\n\n# copy the RPM DB from the SUSE image\nCOPY --from=base /usr/lib/sysimage/rpm/Packages.db /usr/lib/sysimage/rpm/Packages.db\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-test-java-purls/Dockerfile",
    "content": "FROM docker.io/anchore/test_images:java-88948cc@sha256:dea0e6c24636937f53bdc997d9960c2a18966d1e38bcd8ebd0c395d4e169b806 AS base\n\n# not covered in testing...\nRUN rm /packages/gradle-7.1.1-bin.zip\n\nRUN apk add --no-cache python3 py3-pip\n\nCOPY extract.py /extract.py\n\nWORKDIR /\n\n# let's make this image a little smaller as to not take up so much disk space\n# we'll only keep the jar metadata files (pom data + manifest) and throw away the rest\nRUN python extract.py\n\nFROM scratch\n\nCOPY --from=base /slim/packages /packages\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-test-java-purls/extract.py",
    "content": "import os\nimport zipfile\nimport io\n\nARCHIVE_EXTENSIONS = ('.jar', '.war', '.ear', '.hpi', '.war', '.sar', '.nar', '.par')\nMETADATA_FILES = ('pom.xml', 'pom.properties', 'MANIFEST.MF')\n\n\ndef slim_archive(archive, output_dir, base_path=\"\", archive_name=\"\"):\n    \"\"\"\n    extracts metadata files from the archive and creates a slim JAR file\n    containing only these files. handles nested JARs by preserving them.\n    \"\"\"\n    slim_buffer = io.BytesIO()\n    with zipfile.ZipFile(archive, 'r') as zip_file:\n        with zipfile.ZipFile(slim_buffer, 'w', zipfile.ZIP_DEFLATED) as slim_zip:\n            for file_name in zip_file.namelist():\n                # check for metadata files or nested JARs\n                if file_name.endswith(METADATA_FILES):\n                    # add metadata files directly to the slimmed archive\n                    file_data = zip_file.read(file_name)\n                    slim_zip.writestr(file_name, file_data)\n                elif file_name.endswith(ARCHIVE_EXTENSIONS):\n                    # if it's a nested archive, recursively slim it\n                    nested_archive = io.BytesIO(zip_file.read(file_name))\n                    nested_slim_buffer = io.BytesIO()\n                    slim_archive(\n                        nested_archive,\n                        nested_slim_buffer,\n                        base_path=os.path.join(base_path, os.path.dirname(file_name)),\n                        archive_name=os.path.basename(file_name)\n                    )\n                    # add the slimmed nested archive back to the parent archive\n                    nested_slim_buffer.seek(0)\n                    slim_zip.writestr(file_name, nested_slim_buffer.read())\n\n    # write out the slimmed JAR to the output directory if output_dir is a directory\n    if isinstance(output_dir, str):\n        output_path = os.path.join(output_dir, base_path, archive_name)\n        os.makedirs(os.path.dirname(output_path), exist_ok=True)\n        with open(output_path, 'wb') as f:\n            slim_buffer.seek(0)\n            f.write(slim_buffer.read())\n    else:\n        # if output_dir is a BytesIO buffer (for nested archives), just write to it\n        output_dir.seek(0)\n        output_dir.write(slim_buffer.getvalue())\n\n\ndef walk_directory_and_slim_jars(base_dir, output_dir):\n    \"\"\"\n    recursively walks through a directory tree looking for .jar, .war, .ear,\n    .hpi files and slims them down by keeping only metadata files.\n    \"\"\"\n    for dirpath, _, filenames in os.walk(base_dir):\n        for filename in filenames:\n            if filename.endswith(ARCHIVE_EXTENSIONS):\n                archive_path = os.path.join(dirpath, filename)\n                print(f\"Processing {archive_path}\")\n                slim_archive(archive_path, output_dir, os.path.relpath(dirpath, base_dir), filename)\n\n\n# a helper script for slimming down JAR files by keeping only metadata files but still keeping the jar packaging,\n# including nested JARs! Useful for testing purposes.\nif __name__ == \"__main__\":\n    BASE_DIR = \".\"\n    OUTPUT_DIR = \"./slim\"\n    os.makedirs(OUTPUT_DIR, exist_ok=True)\n    walk_directory_and_slim_jars(BASE_DIR, OUTPUT_DIR)\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/image-vertical-package-dups/Dockerfile",
    "content": "FROM --platform=linux/amd64 rockylinux:9.3.20231119@sha256:d644d203142cd5b54ad2a83a203e1dee68af2229f8fe32f52a30c6e1d3c3a9e0 AS base\n\n# modifying the RPM DB multiple times will result in duplicate packages when using all-layers (if there was no de-dup logic)\n# curl is tricky, it already exists in the image and is being upgraded\n\n# but... we want to make the test image as small as possible, so we are making the changes in stages and then\n# copying the RPM DB from each stage to a final stage in separate layers. This will result in a much smaller image.\n\nFROM base AS stage1\nRUN dnf install -y wget\n\nFROM stage1 AS stage2\nRUN dnf update -y curl-minimal\n\nFROM stage2 AS stage3\nRUN dnf install -y vsftpd\n\nFROM stage3 AS stage4\nRUN dnf install -y httpd\n\nFROM scratch\n\nCOPY --from=base /var/lib/rpm /var/lib/rpm\nCOPY --from=stage1 /var/lib/rpm /var/lib/rpm\nCOPY --from=stage2 /var/lib/rpm /var/lib/rpm\nCOPY --from=stage3 /var/lib/rpm /var/lib/rpm\nCOPY --from=stage4 /var/lib/rpm /var/lib/rpm\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/npm-lock/package.json",
    "content": "{\n  \"name\": \"npm-lock\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"collapse-white-space\": \"^2.0.0\",\n    \"insert-css\": \"^2.0.0\"\n  },\n  \"devDependencies\": {\n    \"pump\": \"^3.0.0\"\n  }\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/yarn-lock/package.json",
    "content": "{\n  \"name\": \"yarn-lock\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"private\": true,\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/*\"\n    ]\n  },\n  \"dependencies\": {\n    \"async\": \"^3.2.3\"\n  },\n  \"devDependencies\": {\n    \"merge-objects\": \"^1.0.5\",\n    \"should-type\": \"https://github.com/shouldjs/type.git#1.3.0\"\n  }\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/testdata/yarn-lock/packages/nested-package/package.json",
    "content": "{\n  \"name\": \"yarn-lock-nested-package\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"async\": \"0.9.2\",\n    \"resize-observer-polyfill\": \"^1.5.1\"\n  }\n}\n"
  },
  {
    "path": "cmd/syft/internal/test/integration/utils_test.go",
    "content": "package integration\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/cmd/syft/internal/options\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc catalogFixtureImage(t *testing.T, fixtureImageName string, scope source.Scope, catalogerSelection ...string) (sbom.SBOM, source.Source) {\n\tcfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{\n\t\tName:    \"syft-tester\",\n\t\tVersion: \"v0.99.0\",\n\t}).WithCatalogerSelection(\n\t\tcataloging.NewSelectionRequest().\n\t\t\tWithExpression(catalogerSelection...),\n\t)\n\tcfg.Search.Scope = scope\n\n\treturn catalogFixtureImageWithConfig(t, fixtureImageName, cfg)\n}\n\nfunc catalogFixtureImageWithConfig(t *testing.T, fixtureImageName string, cfg *syft.CreateSBOMConfig) (sbom.SBOM, source.Source) {\n\tcfg.CatalogerSelection = cfg.CatalogerSelection.WithDefaults(pkgcataloging.ImageTag)\n\n\t// get the fixture image tar file\n\ttarPath := imagetest.GetFixtureImageTarPath(t, fixtureImageName)\n\n\t// get the source to build an SBOM against\n\ttheSource, err := syft.GetSource(context.Background(), tarPath, syft.DefaultGetSourceConfig().WithSources(\"docker-archive\"))\n\trequire.NoError(t, err)\n\tt.Cleanup(func() {\n\t\trequire.NoError(t, theSource.Close())\n\t})\n\n\t// build the SBOM\n\ts, err := syft.CreateSBOM(context.Background(), theSource, cfg)\n\n\trequire.NoError(t, err)\n\trequire.NotNil(t, s)\n\n\treturn *s, theSource\n}\n\nfunc catalogDirectory(t *testing.T, dir string, catalogerSelection ...string) (sbom.SBOM, source.Source) {\n\tcfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{\n\t\tName:    \"syft-tester\",\n\t\tVersion: \"v0.99.0\",\n\t}).WithCatalogerSelection(\n\t\tcataloging.NewSelectionRequest().\n\t\t\tWithExpression(catalogerSelection...),\n\t)\n\n\treturn catalogDirectoryWithConfig(t, dir, cfg)\n}\n\nfunc catalogDirectoryWithConfig(t *testing.T, dir string, cfg *syft.CreateSBOMConfig) (sbom.SBOM, source.Source) {\n\tcfg.CatalogerSelection = cfg.CatalogerSelection.WithDefaults(pkgcataloging.DirectoryTag)\n\n\t// get the source to build an SBOM against\n\ttheSource, err := syft.GetSource(context.Background(), dir, syft.DefaultGetSourceConfig().WithSources(\"dir\"))\n\trequire.NoError(t, err)\n\tt.Cleanup(func() {\n\t\trequire.NoError(t, theSource.Close())\n\t})\n\n\t// build the SBOM\n\ts, err := syft.CreateSBOM(context.Background(), theSource, cfg)\n\n\trequire.NoError(t, err)\n\trequire.NotNil(t, s)\n\n\treturn *s, theSource\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/__snapshots__/event_writer_test.snap",
    "content": "\n[Test_writeEvents/no_events/stdout - 1]\n\n---\n\n[Test_writeEvents/no_events/stderr - 1]\n\n---\n\n[Test_writeEvents/all_events/stdout - 1]\n\n\n<my --\n-\n-\nreport 1!!>\n<report 2>\n\n---\n\n[Test_writeEvents/all_events/stderr - 1]\n                    \n                    \n<my notification 1!!\n...still notifying> \n                    \n                    \n<notification 2>\n<notification 3>\nA newer version of syft is available for download: v0.33.0 (installed version is [not provided])\n\n---\n\n[Test_writeEvents/quiet_only_shows_report/stdout - 1]\n<report 1>\n\n---\n\n[Test_writeEvents/quiet_only_shows_report/stderr - 1]\n\n---\n"
  },
  {
    "path": "cmd/syft/internal/ui/capture.go",
    "content": "package ui\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst defaultStdoutLogBufferSize = 1024\n\n// CaptureStdoutToTraceLog replaces stdout and redirects output to the log as trace lines. The return value is a\n// function, which is used to stop the current capturing of output and restore the original file.\n// Example:\n//\n//\trestore := CaptureStdoutToTraceLog()\n//\t// here, stdout will be captured and redirected to the provided writer\n//\trestore() // block until the output has all been sent to the writer and restore the original stdout\nfunc CaptureStdoutToTraceLog() func() {\n\treturn capture(&os.Stdout, newLogWriter(), defaultStdoutLogBufferSize)\n}\n\nfunc capture(target **os.File, writer io.Writer, bufSize int) func() {\n\toriginal := *target\n\n\tr, w, _ := os.Pipe()\n\n\t*target = w\n\n\tdone := make(chan struct{}, 1)\n\n\tgo func() {\n\t\tdefer func() {\n\t\t\tdone <- struct{}{}\n\t\t}()\n\n\t\tbuf := make([]byte, bufSize)\n\t\tfor original != nil {\n\t\t\tn, err := r.Read(buf)\n\t\t\tif n > 0 {\n\t\t\t\t_, _ = writer.Write(buf[0:n])\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn func() {\n\t\tif original != nil {\n\t\t\t_ = w.Close()\n\t\t\tselect {\n\t\t\tcase <-done:\n\t\t\tcase <-time.After(1 * time.Second):\n\t\t\t\tlog.Debugf(\"stdout buffer timed out after 1 second\")\n\t\t\t}\n\t\t\t*target = original\n\t\t\toriginal = nil\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/capture_test.go",
    "content": "package ui\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_capture(t *testing.T) {\n\tr, w, _ := os.Pipe()\n\tt.Logf(\"pipe1: %+v\", w)\n\n\tbuf := &bytes.Buffer{}\n\tbuf2 := &bytes.Buffer{}\n\n\tgo func() {\n\t\t// write to the main file (e.g. os.Stdout)\n\t\t_, _ = w.WriteString(\"write1\")\n\n\t\t// capture the output to the provided buffer\n\t\trestoreInitial := capture(&w, buf, 1024)\n\t\tt.Logf(\"pipe2: %+v\", w)\n\t\t_, _ = w.WriteString(\"write2\")\n\n\t\t// capture output nested\n\t\trestoreFirstCapture := capture(&w, buf2, 1024)\n\t\tt.Logf(\"pipe3: %+v\", w)\n\t\t_, _ = w.WriteString(\"write3\")\n\n\t\t// discard file used to write the \"write3\"\n\t\trestoreFirstCapture()\n\n\t\t// restore should block until all output has been captured, so it's safe to read buf2 here\n\t\trequire.Equal(t, \"write3\", buf2.String())\n\n\t\t// restore should be safe to call multiple times\n\t\trestoreFirstCapture()\n\t\trequire.Equal(t, \"write3\", buf2.String())\n\n\t\t// write again to the initial buffer\n\t\tt.Logf(\"pipe2+: %+v\", w)\n\t\t_, _ = w.WriteString(\"write2+\")\n\n\t\t// restore the initial file (e.g. os.Stdout) and write more to it\n\t\trestoreInitial()\n\t\tt.Logf(\"pipe1+: %+v\", w)\n\t\t_, _ = w.WriteString(\"write1+\")\n\n\t\t// close the pipe to continue with the io.ReadAll, below\n\t\t_ = w.Close()\n\t}()\n\n\tgot, err := io.ReadAll(r)\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"write1write1+\", string(got))\n\n\trequire.Equal(t, \"write2write2+\", buf.String())\n}\n\nfunc Test_captureBufSizes(t *testing.T) {\n\t_, w, _ := os.Pipe()\n\n\tbuf := &bytes.Buffer{}\n\trestore := capture(&w, buf, 200)\n\n\tline := \"line1\\nline2\\nline3\"\n\n\t_, err := w.WriteString(line)\n\trequire.NoError(t, err)\n\n\trestore()\n\trequire.Equal(t, line, buf.String())\n\n\tbuf.Reset()\n\trestore = capture(&w, buf, 2)\n\n\t_, err = w.WriteString(line)\n\trequire.NoError(t, err)\n\n\trestore()\n\trequire.Equal(t, line, buf.String())\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/event_writer.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/parsers\"\n)\n\nfunc writeEvents(out, err io.Writer, quiet bool, events ...partybus.Event) error {\n\thandles := []struct {\n\t\tevent        partybus.EventType\n\t\trespectQuiet bool\n\t\twriter       io.Writer\n\t\tdispatch     func(writer io.Writer, events ...partybus.Event) error\n\t}{\n\t\t{\n\t\t\tevent:        event.CLIReport,\n\t\t\trespectQuiet: false,\n\t\t\twriter:       out,\n\t\t\tdispatch:     writeReports,\n\t\t},\n\t\t{\n\t\t\tevent:        event.CLINotification,\n\t\t\trespectQuiet: true,\n\t\t\twriter:       err,\n\t\t\tdispatch:     writeNotifications,\n\t\t},\n\t\t{\n\t\t\tevent:        event.CLIAppUpdateAvailable,\n\t\t\trespectQuiet: true,\n\t\t\twriter:       err,\n\t\t\tdispatch:     writeAppUpdate,\n\t\t},\n\t}\n\n\tvar errs error\n\tfor _, h := range handles {\n\t\tif quiet && h.respectQuiet {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, e := range events {\n\t\t\tif e.Type != h.event {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif err := h.dispatch(h.writer, e); err != nil {\n\t\t\t\terrs = multierror.Append(errs, err)\n\t\t\t}\n\t\t}\n\t}\n\treturn errs\n}\n\nfunc writeReports(writer io.Writer, events ...partybus.Event) error {\n\tvar reports []string\n\tfor _, e := range events {\n\t\t_, report, err := parsers.ParseCLIReport(e)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Warn(\"failed to gather final report\")\n\t\t\tcontinue\n\t\t}\n\n\t\t// remove all whitespace padding from the end of the report\n\t\treports = append(reports, strings.TrimRight(report, \"\\n \")+\"\\n\")\n\t}\n\n\t// prevent the double new-line at the end of the report\n\treport := strings.Join(reports, \"\\n\")\n\n\tif _, err := fmt.Fprint(writer, report); err != nil {\n\t\treturn fmt.Errorf(\"failed to write final report to stdout: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc writeNotifications(writer io.Writer, events ...partybus.Event) error {\n\t// 13 = high intensity magenta (ANSI 16 bit code)\n\tstyle := lipgloss.NewStyle().Foreground(lipgloss.Color(\"13\"))\n\n\tfor _, e := range events {\n\t\t_, notification, err := parsers.ParseCLINotification(e)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Warn(\"failed to parse notification\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif _, err := fmt.Fprintln(writer, style.Render(notification)); err != nil {\n\t\t\t// don't let this be fatal\n\t\t\tlog.WithFields(\"error\", err).Warn(\"failed to write final notifications\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc writeAppUpdate(writer io.Writer, events ...partybus.Event) error {\n\t// 13 = high intensity magenta (ANSI 16 bit code) + italics\n\tstyle := lipgloss.NewStyle().Foreground(lipgloss.Color(\"13\")).Italic(true)\n\n\tfor _, e := range events {\n\t\tupdateCheck, err := parsers.ParseCLIAppUpdateAvailable(e)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Warn(\"failed to parse app update notification\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif updateCheck.Current == updateCheck.New {\n\t\t\tlog.Tracef(\"update check event with identical versions: %s\", updateCheck.Current)\n\t\t\tcontinue\n\t\t}\n\n\t\tnotice := fmt.Sprintf(\"A newer version of syft is available for download: %s (installed version is %s)\", updateCheck.New, updateCheck.Current)\n\n\t\tif _, err := fmt.Fprintln(writer, style.Render(notice)); err != nil {\n\t\t\t// don't let this be fatal\n\t\t\tlog.WithFields(\"error\", err).Warn(\"failed to write app update notification\")\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/event_writer_test.go",
    "content": "package ui\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/gkampitakis/go-snaps/snaps\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/parsers\"\n)\n\nfunc Test_writeEvents(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tquiet   bool\n\t\tevents  []partybus.Event\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"no events\",\n\t\t},\n\t\t{\n\t\t\tname: \"all events\",\n\t\t\tevents: []partybus.Event{\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLINotification,\n\t\t\t\t\tValue: \"\\n\\n<my notification 1!!\\n...still notifying>\\n\\n\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLINotification,\n\t\t\t\t\tValue: \"<notification 2>\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: event.CLIAppUpdateAvailable,\n\t\t\t\t\tValue: parsers.UpdateCheck{\n\t\t\t\t\t\tNew:     \"v0.33.0\",\n\t\t\t\t\t\tCurrent: \"[not provided]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLINotification,\n\t\t\t\t\tValue: \"<notification 3>\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLIReport,\n\t\t\t\t\tValue: \"\\n\\n<my --\\n-\\n-\\nreport 1!!>\\n\\n\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLIReport,\n\t\t\t\t\tValue: \"<report 2>\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"quiet only shows report\",\n\t\t\tquiet: true,\n\t\t\tevents: []partybus.Event{\n\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLINotification,\n\t\t\t\t\tValue: \"<notification 1>\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType: event.CLIAppUpdateAvailable,\n\t\t\t\t\tValue: parsers.UpdateCheck{\n\t\t\t\t\t\tNew:     \"<new version>\",\n\t\t\t\t\t\tCurrent: \"<current version>\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:  event.CLIReport,\n\t\t\t\t\tValue: \"<report 1>\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tstdout := &bytes.Buffer{}\n\t\t\tstderr := &bytes.Buffer{}\n\n\t\t\terr := writeEvents(stdout, stderr, tt.quiet, tt.events...)\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tt.Run(\"stdout\", func(t *testing.T) {\n\t\t\t\tsnaps.MatchSnapshot(t, stdout.String())\n\t\t\t})\n\n\t\t\tt.Run(\"stderr\", func(t *testing.T) {\n\t\t\t\tsnaps.MatchSnapshot(t, stderr.String())\n\t\t\t})\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/log_writer.go",
    "content": "package ui\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nfunc newLogWriter() io.Writer {\n\tl := logWriter{}\n\tl.r = bufio.NewReader(&l.buf)\n\treturn &l\n}\n\ntype logWriter struct {\n\tbuf bytes.Buffer\n\tr   *bufio.Reader\n}\n\nfunc (l *logWriter) Write(data []byte) (n int, err error) {\n\tl.buf.Write(data)\n\ts, err := l.r.ReadString('\\n')\n\ts = strings.TrimRight(s, \"\\n\")\n\tfor s != \"\" {\n\t\tlog.Trace(\"[unexpected stdout] \" + s)\n\t\tn += len(s)\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\ts, err = l.r.ReadString('\\n')\n\t\ts = strings.TrimRight(s, \"\\n\")\n\t}\n\treturn n, err\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/log_writer_test.go",
    "content": "package ui\n\nimport (\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nfunc Test_logWriter(t *testing.T) {\n\tw := newLogWriter()\n\n\torig := log.Get()\n\tt.Cleanup(func() {\n\t\tlog.Set(orig)\n\t})\n\n\tbl := &bufferLogger{}\n\tlog.Set(bl)\n\n\t_, _ = w.Write([]byte(\"a\\nvalue\"))\n\n\texpected := []any{\"[unexpected stdout] a\", \"[unexpected stdout] value\"}\n\trequire.Equal(t, expected, bl.values)\n\n\tbl.values = nil\n\t_, _ = w.Write([]byte(\"some\"))\n\t_, _ = w.Write([]byte(\"thing\"))\n\n\texpected = []any{\"[unexpected stdout] some\", \"[unexpected stdout] thing\"}\n\trequire.Equal(t, expected, bl.values)\n}\n\ntype bufferLogger struct{ values []any }\n\nfunc (l *bufferLogger) Tracef(_ string, _ ...interface{}) {}\n\nfunc (l *bufferLogger) Debugf(_ string, _ ...interface{}) {}\n\nfunc (l *bufferLogger) Infof(_ string, _ ...interface{}) {}\n\nfunc (l *bufferLogger) Warnf(_ string, _ ...interface{}) {}\n\nfunc (l *bufferLogger) Errorf(_ string, _ ...interface{}) {}\n\nfunc (l *bufferLogger) Trace(vals ...interface{}) {\n\tl.values = append(l.values, vals...)\n}\n\nfunc (l *bufferLogger) Debug(_ ...interface{}) {}\n\nfunc (l *bufferLogger) Info(_ ...interface{}) {}\n\nfunc (l *bufferLogger) Warn(vals ...interface{}) {\n\tl.values = append(l.values, vals...)\n}\n\nfunc (l *bufferLogger) Error(_ ...interface{}) {}\n\nfunc (l *bufferLogger) WithFields(_ ...interface{}) logger.MessageLogger { return l }\n\nfunc (l *bufferLogger) Nested(_ ...interface{}) logger.Logger { return l }\n\nfunc (l *bufferLogger) SetOutput(_ io.Writer) {}\n\nfunc (l *bufferLogger) GetOutput() io.Writer { return nil }\n"
  },
  {
    "path": "cmd/syft/internal/ui/no_ui.go",
    "content": "package ui\n\nimport (\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/syft/event\"\n)\n\nvar _ clio.UI = (*NoUI)(nil)\n\ntype NoUI struct {\n\tout            io.Writer\n\terr            io.Writer\n\tfinalizeEvents []partybus.Event\n\tsubscription   partybus.Unsubscribable\n\tquiet          bool\n}\n\nfunc None(out io.Writer, quiet bool) *NoUI {\n\treturn &NoUI{\n\t\tout:   out,\n\t\terr:   os.Stderr,\n\t\tquiet: quiet,\n\t}\n}\n\nfunc (n *NoUI) Setup(subscription partybus.Unsubscribable) error {\n\tn.subscription = subscription\n\treturn nil\n}\n\nfunc (n *NoUI) Handle(e partybus.Event) error {\n\tswitch e.Type {\n\tcase event.CLIReport, event.CLINotification:\n\t\t// keep these for when the UI is terminated to show to the screen (or perform other events)\n\t\tn.finalizeEvents = append(n.finalizeEvents, e)\n\t}\n\treturn nil\n}\n\nfunc (n NoUI) Teardown(_ bool) error {\n\treturn writeEvents(n.out, n.err, n.quiet, n.finalizeEvents...)\n}\n"
  },
  {
    "path": "cmd/syft/internal/ui/ui.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"sync\"\n\t\"time\"\n\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/bubbly\"\n\t\"github.com/anchore/bubbly/bubbles/frame\"\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event\"\n)\n\nvar _ interface {\n\ttea.Model\n\tpartybus.Responder\n\tclio.UI\n} = (*UI)(nil)\n\ntype UI struct {\n\tout            io.Writer\n\terr            io.Writer\n\tprogram        *tea.Program\n\trunning        *sync.WaitGroup\n\tquiet          bool\n\tsubscription   partybus.Unsubscribable\n\tfinalizeEvents []partybus.Event\n\n\thandler *bubbly.HandlerCollection\n\tframe   tea.Model\n}\n\nfunc New(out io.Writer, quiet bool, handlers ...bubbly.EventHandler) *UI {\n\treturn &UI{\n\t\tout:     out,\n\t\terr:     os.Stderr,\n\t\thandler: bubbly.NewHandlerCollection(handlers...),\n\t\tframe:   frame.New(),\n\t\trunning: &sync.WaitGroup{},\n\t\tquiet:   quiet,\n\t}\n}\n\nfunc (m *UI) Setup(subscription partybus.Unsubscribable) error {\n\t// we still want to collect log messages, however, we also the logger shouldn't write to the screen directly\n\tif logWrapper, ok := log.Get().(logger.Controller); ok {\n\t\tlogWrapper.SetOutput(m.frame.(*frame.Frame).Footer())\n\t}\n\n\tm.subscription = subscription\n\tm.program = tea.NewProgram(m, tea.WithOutput(os.Stderr), tea.WithInput(os.Stdin), tea.WithoutSignalHandler())\n\tm.running.Add(1)\n\n\tgo func() {\n\t\tdefer m.running.Done()\n\t\tif _, err := m.program.Run(); err != nil {\n\t\t\tlog.Errorf(\"unable to start UI: %+v\", err)\n\t\t\tbus.ExitWithInterrupt()\n\t\t}\n\t}()\n\n\treturn nil\n}\n\nfunc (m *UI) Handle(e partybus.Event) error {\n\tif m.program != nil {\n\t\tm.program.Send(e)\n\t}\n\treturn nil\n}\n\nfunc (m *UI) Teardown(force bool) error {\n\tdefer func() {\n\t\t// allow for traditional logging to resume now that the UI is shutting down\n\t\tif logWrapper, ok := log.Get().(logger.Controller); ok {\n\t\t\tlogWrapper.SetOutput(m.err)\n\t\t}\n\t}()\n\n\tif !force {\n\t\tm.handler.Wait()\n\t\tm.program.Quit()\n\t\t// typically in all cases we would want to wait for the UI to finish. However there are still error cases\n\t\t// that are not accounted for, resulting in hangs. For now, we'll just wait for the UI to finish in the\n\t\t// happy path only. There will always be an indication of the problem to the user via reporting the error\n\t\t// string from the worker (outside of the UI after teardown).\n\t\tm.running.Wait()\n\t} else {\n\t\t_ = runWithTimeout(250*time.Millisecond, func() error {\n\t\t\tm.handler.Wait()\n\t\t\treturn nil\n\t\t})\n\n\t\t// it may be tempting to use Kill() however it has been found that this can cause the terminal to be left in\n\t\t// a bad state (where Ctrl+C and other control characters no longer works for future processes in that terminal).\n\t\tm.program.Quit()\n\n\t\t_ = runWithTimeout(250*time.Millisecond, func() error {\n\t\t\tm.running.Wait()\n\t\t\treturn nil\n\t\t})\n\t}\n\n\t// TODO: allow for writing out the full log output to the screen (only a partial log is shown currently)\n\t// this needs coordination to know what the last frame event is to change the state accordingly (which isn't possible now)\n\treturn writeEvents(m.out, m.err, m.quiet, m.finalizeEvents...)\n}\n\n// bubbletea.Model functions\n\nfunc (m UI) Init() tea.Cmd {\n\treturn m.frame.Init()\n}\n\nfunc (m UI) RespondsTo() []partybus.EventType {\n\treturn append([]partybus.EventType{\n\t\tevent.CLIReport,\n\t\tevent.CLINotification,\n\t\tevent.CLIAppUpdateAvailable,\n\t}, m.handler.RespondsTo()...)\n}\n\nfunc (m *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {\n\t// note: we need a pointer receiver such that the same instance of UI used in Teardown is referenced (to keep finalize events)\n\n\tvar cmds []tea.Cmd\n\n\t// allow for non-partybus UI updates (such as window size events). Note: these must not affect existing models,\n\t// that is the responsibility of the frame object on this UI object. The handler is a factory of models\n\t// which the frame is responsible for the lifecycle of. This update allows for injecting the initial state\n\t// of the world when creating those models.\n\tm.handler.OnMessage(msg)\n\n\tswitch msg := msg.(type) {\n\tcase tea.KeyMsg:\n\t\tswitch msg.String() {\n\t\t// today we treat esc and ctrl+c the same, but in the future when the worker has a graceful way to\n\t\t// cancel in-flight work via a context, we can wire up esc to this path with bus.Exit()\n\t\tcase \"esc\", \"ctrl+c\":\n\t\t\tbus.ExitWithInterrupt()\n\t\t\treturn m, tea.Quit\n\t\t}\n\n\tcase partybus.Event:\n\t\tlog.WithFields(\"component\", \"ui\", \"event\", msg.Type).Trace(\"event\")\n\n\t\tswitch msg.Type {\n\t\tcase event.CLIReport, event.CLINotification, event.CLIAppUpdateAvailable:\n\t\t\t// keep these for when the UI is terminated to show to the screen (or perform other events)\n\t\t\tm.finalizeEvents = append(m.finalizeEvents, msg)\n\n\t\t\t// why not return tea.Quit here for exit events? because there may be UI components that still need the update-render loop.\n\t\t\t// for this reason we'll let the event loop call Teardown() which will explicitly wait for these components\n\t\t\treturn m, nil\n\t\t}\n\n\t\tmodels, cmd := m.handler.Handle(msg)\n\t\tif cmd != nil {\n\t\t\tcmds = append(cmds, cmd)\n\t\t}\n\t\tfor _, newModel := range models {\n\t\t\tif newModel == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcmds = append(cmds, newModel.Init())\n\t\t\tm.frame.(*frame.Frame).AppendModel(newModel)\n\t\t}\n\t\t// intentionally fallthrough to update the frame model\n\t}\n\n\tframeModel, cmd := m.frame.Update(msg)\n\tm.frame = frameModel\n\tcmds = append(cmds, cmd)\n\n\treturn m, tea.Batch(cmds...)\n}\n\nfunc (m UI) View() string {\n\treturn m.frame.View()\n}\n\nfunc runWithTimeout(timeout time.Duration, fn func() error) (err error) {\n\tc := make(chan struct{}, 1)\n\tgo func() {\n\t\terr = fn()\n\t\tc <- struct{}{}\n\t}()\n\tselect {\n\tcase <-c:\n\tcase <-time.After(timeout):\n\t\treturn fmt.Errorf(\"timed out after %v\", timeout)\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "cmd/syft/main.go",
    "content": "package main\n\nimport (\n\t_ \"modernc.org/sqlite\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/cmd/syft/cli\"\n\t\"github.com/anchore/syft/cmd/syft/internal\"\n)\n\n// applicationName is the non-capitalized name of the application (do not change this)\nconst applicationName = \"syft\"\n\n// all variables here are provided as build-time arguments, with clear default values\nvar (\n\tversion        = internal.NotProvided\n\tbuildDate      = internal.NotProvided\n\tgitCommit      = internal.NotProvided\n\tgitDescription = internal.NotProvided\n)\n\nfunc main() {\n\tapp := cli.Application(\n\t\tclio.Identification{\n\t\t\tName:           applicationName,\n\t\t\tVersion:        version,\n\t\t\tBuildDate:      buildDate,\n\t\t\tGitCommit:      gitCommit,\n\t\t\tGitDescription: gitDescription,\n\t\t},\n\t)\n\n\tapp.Run()\n}\n"
  },
  {
    "path": "examples/README.md",
    "content": "# Syft API Examples\n\nThis directory contains examples of how to use the Syft API.\n\n- `create_simple_sbom`: Create a simple SBOM from scratch\n- `create_custom_sbom`: Create an SBOM using as much custom configuration as possible, including a custom cataloger implementation\n- `decode_sbom`: Take an existing SBOM file (of arbitrary format) and decode it into a Syft SBOM object\n- `source_detection`: Shows how to detect what to catalog automatically from a user string (e.g. container image vs directory)\n- `source_from_image`: Construct a source from a only a container image\n\nYou can run any of these examples from this directory with:\n\n```bash\ngo run ./DIRECTORY_NAME\n```\n"
  },
  {
    "path": "examples/create_custom_sbom/alpine_configuration_cataloger.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n/*\n  This is a contrived cataloger that attempts to capture useful APK files from the image as if it were a package.\n  This isn't a real cataloger, but it is a good example of how to use API elements to create a custom cataloger.\n*/\n\nvar _ pkg.Cataloger = (*alpineConfigurationCataloger)(nil)\n\ntype alpineConfigurationCataloger struct {\n}\n\nfunc newAlpineConfigurationCataloger() pkg.Cataloger {\n\treturn alpineConfigurationCataloger{}\n}\n\nfunc (m alpineConfigurationCataloger) Name() string {\n\treturn \"apk-configuration-cataloger\"\n}\n\nfunc (m alpineConfigurationCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tversion, versionLocations, err := getVersion(resolver)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get alpine version: %w\", err)\n\t}\n\tif len(versionLocations) == 0 {\n\t\t// this doesn't mean we should stop cataloging, just that we don't have a version to use, thus no package to raise up\n\t\treturn nil, nil, nil\n\t}\n\n\tmetadata, metadataLocations, err := newAlpineConfiguration(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar locations []file.Location\n\tlocations = append(locations, versionLocations...)\n\tlocations = append(locations, metadataLocations...)\n\n\tp := newPackage(version, *metadata, locations...)\n\n\treturn []pkg.Package{p}, nil, nil\n}\n\nfunc newPackage(version string, metadata AlpineConfiguration, locations ...file.Location) pkg.Package {\n\treturn pkg.Package{\n\t\tName:      \"alpine-configuration\",\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tType:      pkg.Type(\"system-configuration\"), // you can make up your own package type here or use an existing one\n\t\tMetadata:  metadata,\n\t}\n}\n\nfunc newAlpineConfiguration(resolver file.Resolver) (*AlpineConfiguration, []file.Location, error) {\n\tvar locations []file.Location\n\n\tkeys, keyLocations, err := getAPKKeys(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tlocations = append(locations, keyLocations...)\n\n\treturn &AlpineConfiguration{\n\t\tAPKKeys: keys,\n\t}, locations, nil\n}\n\nfunc getVersion(resolver file.Resolver) (string, []file.Location, error) {\n\tlocations, err := resolver.FilesByPath(\"/etc/alpine-release\")\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"unable to get alpine version: %w\", err)\n\t}\n\tif len(locations) == 0 {\n\t\treturn \"\", nil, nil\n\t}\n\n\treader, err := resolver.FileContentsByLocation(locations[0])\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"unable to read alpine version: %w\", err)\n\t}\n\tdefer internal.CloseAndLogError(reader, locations[0].RealPath)\n\n\tversion, err := io.ReadAll(reader) //nolint:gocritic // example code\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"unable to read alpine version: %w\", err)\n\t}\n\n\treturn string(version), locations, nil\n}\n\nfunc getAPKKeys(resolver file.Resolver) (map[string]string, []file.Location, error) {\n\t// name-to-content values\n\tkeyContent := make(map[string]string)\n\n\tlocations, err := resolver.FilesByGlob(\"/etc/apk/keys/*.rsa.pub\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get apk keys: %w\", err)\n\t}\n\tfor _, location := range locations {\n\t\tbasename := path.Base(location.RealPath)\n\t\t//nolint:gocritic\n\t\treader, err := resolver.FileContentsByLocation(location)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"unable to resolve file contents by location at %s: %w\", location.RealPath, err)\n\t\t}\n\t\tcontent, err := io.ReadAll(reader) //nolint:gocritic // example code\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"unable to read apk key content at %s: %w\", location.RealPath, err)\n\t\t}\n\t\tkeyContent[basename] = string(content)\n\t}\n\treturn keyContent, locations, nil\n}\n\ntype AlpineConfiguration struct {\n\tAPKKeys map[string]string `json:\"apkKeys\" yaml:\"apkKeys\"`\n\t// Add more data you want to capture as part of the package metadata here...\n}\n"
  },
  {
    "path": "examples/create_custom_sbom/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"go.yaml.in/yaml/v3\"\n\t_ \"modernc.org/sqlite\" // required for rpmdb and other features\n\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst defaultImage = \"alpine:3.19\"\n\nfunc main() {\n\t// automagically get a source.Source for arbitrary string input\n\tsrc := getSource(imageReference())\n\tdefer src.Close()\n\n\t// will catalog the given source and return a SBOM keeping in mind several configurable options\n\tsbom := getSBOM(src)\n\n\t// show a simple package summary\n\tsummarize(sbom)\n\n\t// show the alpine-configuration cataloger results\n\tshowAlpineConfiguration(sbom)\n}\n\nfunc imageReference() string {\n\t// read an image string reference from the command line or use a default\n\tif len(os.Args) > 1 {\n\t\treturn os.Args[1]\n\t}\n\treturn defaultImage\n}\n\nfunc getSource(input string) source.Source {\n\tfmt.Println(\"detecting source type for input:\", input, \"...\")\n\n\tsrc, err := syft.GetSource(context.Background(), input, nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn src\n}\n\nfunc getSBOM(src source.Source) sbom.SBOM {\n\tfmt.Println(\"creating SBOM...\")\n\n\tcfg := syft.DefaultCreateSBOMConfig().\n\t\t// run the catalogers in parallel (5 at a time concurrently max)\n\t\tWithParallelism(5).\n\t\t// bake a specific tool name and version into the SBOM\n\t\tWithTool(\"my-tool\", \"v1.0\").\n\t\t// catalog all files with 3 digests\n\t\tWithFilesConfig(\n\t\t\tfilecataloging.DefaultConfig().\n\t\t\t\tWithSelection(file.AllFilesSelection).\n\t\t\t\tWithHashers(\n\t\t\t\t\tcrypto.MD5,\n\t\t\t\t\tcrypto.SHA1,\n\t\t\t\t\tcrypto.SHA256,\n\t\t\t\t),\n\t\t).\n\t\t// only use OS related catalogers that would have been used with the kind of\n\t\t// source type (container image or directory), but also add a specific python cataloger\n\t\tWithCatalogerSelection(\n\t\t\tcataloging.NewSelectionRequest().\n\t\t\t\tWithSubSelections(\"os\").\n\t\t\t\tWithAdditions(\"python-package-cataloger\"),\n\t\t).\n\t\t// which relationships to include\n\t\tWithRelationshipsConfig(\n\t\t\tcataloging.RelationshipsConfig{\n\t\t\t\tPackageFileOwnership:                          true,\n\t\t\t\tPackageFileOwnershipOverlap:                   true,\n\t\t\t\tExcludeBinaryPackagesWithFileOwnershipOverlap: true,\n\t\t\t},\n\t\t).\n\t\t// add your own cataloger to the mix\n\t\tWithCatalogers(\n\t\t\tpkgcataloging.NewAlwaysEnabledCatalogerReference(\n\t\t\t\tnewAlpineConfigurationCataloger(),\n\t\t\t),\n\t\t)\n\n\ts, err := syft.CreateSBOM(context.Background(), src, cfg)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn *s\n}\n\nfunc summarize(s sbom.SBOM) {\n\tfmt.Printf(\"Cataloged %d packages:\\n\", s.Artifacts.Packages.PackageCount())\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\tfmt.Printf(\" - %s@%s (%s)\\n\", p.Name, p.Version, p.Type)\n\t}\n\tfmt.Println()\n}\n\nfunc showAlpineConfiguration(s sbom.SBOM) {\n\tpkgs := s.Artifacts.Packages.PackagesByName(\"alpine-configuration\")\n\tif len(pkgs) == 0 {\n\t\tfmt.Println(\"no alpine-configuration package found\")\n\t\treturn\n\t}\n\n\tp := pkgs[0]\n\n\tfmt.Printf(\"All 'alpine-configuration' packages: %s\\n\", p.Version)\n\tmeta, err := yaml.Marshal(p.Metadata)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(string(meta))\n}\n"
  },
  {
    "path": "examples/create_simple_sbom/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\n\t_ \"modernc.org/sqlite\" // required for rpmdb and other features\n\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst defaultImage = \"alpine:3.19\"\n\nfunc main() {\n\t// automagically get a source.Source for arbitrary string input\n\tsrc := getSource(imageReference())\n\tdefer src.Close()\n\n\t// catalog the given source and return a SBOM\n\tsbom := getSBOM(src)\n\n\t// take the SBOM object and encode it into the syft-json representation\n\tbytes := formatSBOM(sbom)\n\n\t// show the SBOM!\n\tfmt.Println(string(bytes))\n}\n\nfunc imageReference() string {\n\t// read an image string reference from the command line or use a default\n\tif len(os.Args) > 1 {\n\t\treturn os.Args[1]\n\t}\n\treturn defaultImage\n}\n\nfunc getSource(input string) source.Source {\n\tsrc, err := syft.GetSource(context.Background(), input, nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn src\n}\n\nfunc getSBOM(src source.Source) sbom.SBOM {\n\ts, err := syft.CreateSBOM(context.Background(), src, nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn *s\n}\n\nfunc formatSBOM(s sbom.SBOM) []byte {\n\tbytes, err := format.Encode(s, syftjson.NewFormatEncoder())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn bytes\n}\n"
  },
  {
    "path": "examples/decode_sbom/alpine.syft.json",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"70a21b16f1a2cc6a\",\n   \"name\": \"alpine-baselayout\",\n   \"version\": \"3.2.0-r7\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-only\",\n     \"spdxExpression\": \"GPL-2.0-only\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-baselayout@3.2.0-r7?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"alpine-baselayout\",\n    \"originPackage\": \"alpine-baselayout\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"3.2.0-r7\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n    \"description\": \"Alpine base dir structure and init scripts\",\n    \"size\": 19906,\n    \"installedSize\": 401408,\n    \"pullDependencies\": [\n     \"/bin/sh\",\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:mkmntdirs\"\n    ],\n    \"pullChecksum\": \"Q11bDnATFCrlCl73j/624EDFiVusQ=\",\n    \"gitCommitOfApkPort\": \"c3ce4065bd8a69d20ad392d4cf006ed652c3f1a7\",\n    \"files\": [\n     {\n      \"path\": \"/dev\"\n     },\n     {\n      \"path\": \"/dev/pts\"\n     },\n     {\n      \"path\": \"/dev/shm\"\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/fstab\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11Q7hNe8QpDS531guqCdrXBzoA/o=\"\n      }\n     },\n     {\n      \"path\": \"/etc/group\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1oJ16xWudgKOrXIEquEDzlF2Lsm4=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hostname\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q16nVwYVXP/tChvUPdukVD2ifXOmc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hosts\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/inittab\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1toogjUipHGcMgECgPJX64SwUT1M=\"\n      }\n     },\n     {\n      \"path\": \"/etc/motd\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/mtab\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/passwd\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TchuuLUfur0izvfZQZxgN/LJhB8=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1KpFb8kl5LvwXWlY3e58FNsjrI34=\"\n      }\n     },\n     {\n      \"path\": \"/etc/protocols\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13FqXUnvuOpMDrH/6rehxuYAEE34=\"\n      }\n     },\n     {\n      \"path\": \"/etc/services\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1C6HJNgQvLWqt5VY+n7MZJ1rsDuY=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shadow\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"42\",\n      \"permissions\": \"640\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shells\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/conf.d\"\n     },\n     {\n      \"path\": \"/etc/crontabs\"\n     },\n     {\n      \"path\": \"/etc/crontabs/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"600\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\"\n      }\n     },\n     {\n      \"path\": \"/etc/init.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d/aliases.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/blacklist.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1xxYGU6S6TLQvb7ervPrWWwAWqMg=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/i386.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1pnay/njn6ol9cCssL7KiZZ8etlc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/kms.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ynbLn3GYDpvajba/ldp1niayeog=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules-load.d\"\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/opt\"\n     },\n     {\n      \"path\": \"/etc/periodic\"\n     },\n     {\n      \"path\": \"/etc/periodic/15min\"\n     },\n     {\n      \"path\": \"/etc/periodic/daily\"\n     },\n     {\n      \"path\": \"/etc/periodic/hourly\"\n     },\n     {\n      \"path\": \"/etc/periodic/monthly\"\n     },\n     {\n      \"path\": \"/etc/periodic/weekly\"\n     },\n     {\n      \"path\": \"/etc/profile.d\"\n     },\n     {\n      \"path\": \"/etc/profile.d/color_prompt\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q10wL23GuSCVfumMRgakabUI6EsSk=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile.d/locale.sh\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1S8j+WW71mWxfVy8ythqU7HUVoBw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.d\"\n     },\n     {\n      \"path\": \"/home\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/firmware\"\n     },\n     {\n      \"path\": \"/lib/mdev\"\n     },\n     {\n      \"path\": \"/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d/00-alpine.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1HpElzW1xEgmKfERtTy7oommnq6c=\"\n      }\n     },\n     {\n      \"path\": \"/media\"\n     },\n     {\n      \"path\": \"/media/cdrom\"\n     },\n     {\n      \"path\": \"/media/floppy\"\n     },\n     {\n      \"path\": \"/media/usb\"\n     },\n     {\n      \"path\": \"/mnt\"\n     },\n     {\n      \"path\": \"/opt\"\n     },\n     {\n      \"path\": \"/proc\"\n     },\n     {\n      \"path\": \"/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"700\"\n     },\n     {\n      \"path\": \"/run\"\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/mkmntdirs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1zmX3BDBctenbCV8dx/3QLz2bdRA=\"\n      }\n     },\n     {\n      \"path\": \"/srv\"\n     },\n     {\n      \"path\": \"/sys\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/usr/local\"\n     },\n     {\n      \"path\": \"/usr/local/bin\"\n     },\n     {\n      \"path\": \"/usr/local/lib\"\n     },\n     {\n      \"path\": \"/usr/local/share\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/man\"\n     },\n     {\n      \"path\": \"/usr/share/misc\"\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/run\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\"\n      }\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/empty\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"555\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/misc\"\n     },\n     {\n      \"path\": \"/var/local\"\n     },\n     {\n      \"path\": \"/var/lock\"\n     },\n     {\n      \"path\": \"/var/lock/subsys\"\n     },\n     {\n      \"path\": \"/var/log\"\n     },\n     {\n      \"path\": \"/var/mail\"\n     },\n     {\n      \"path\": \"/var/opt\"\n     },\n     {\n      \"path\": \"/var/spool\"\n     },\n     {\n      \"path\": \"/var/spool/mail\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\"\n      }\n     },\n     {\n      \"path\": \"/var/spool/cron\"\n     },\n     {\n      \"path\": \"/var/spool/cron/crontabs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\"\n      }\n     },\n     {\n      \"path\": \"/var/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"300e781a409ed72e\",\n   \"name\": \"alpine-keys\",\n   \"version\": \"2.4-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-keys:alpine-keys:2.4-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-keys:alpine_keys:2.4-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine-keys:2.4-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine_keys:2.4-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-keys:2.4-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_keys:2.4-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-keys@2.4-r0?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"alpine-keys\",\n    \"originPackage\": \"alpine-keys\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.4-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Public keys for Alpine Linux packages\",\n    \"size\": 13692,\n    \"installedSize\": 159744,\n    \"pullDependencies\": [],\n    \"provides\": [],\n    \"pullChecksum\": \"Q1NfxIKYE+5VU69ul2zrXwNHhvSQg=\",\n    \"gitCommitOfApkPort\": \"ad113d7b2c64187bba3c3e1f71c2774a3246800e\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1BTqS+H/UUyhQuzHwiBl47+BTKuU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Oaxdcsa6AYoPdLi0U4lO3J2we18=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1I9Dy6hryacL2YWXg+KlE6WvwEd4=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1V/a5P9pKRJb6tihE3e8O6xaPgLU=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/apk\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OvCFSO94z97c80mIDCxqGkh2Og4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1v7YWZYzAWoclaLDI45jEguI7YN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1BTqS+H/UUyhQuzHwiBl47+BTKuU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Oaxdcsa6AYoPdLi0U4lO3J2we18=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1yPq+su65ksNox3uXB+DR7P18+QU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1MpZDNX0LeLHvSOwVUyXiXx11NN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1glCQ/eJbvA5xqcswdjFrWv5Fnk0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1XUdDEoNTtjlvrS+iunk6ziFgIpU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1lZlTESNrelWTNkL/oQzmAU8a99A=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WNW6Sy87HpJ3IdemQy8pju33Kms=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1I9Dy6hryacL2YWXg+KlE6WvwEd4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NSnsgmcMbU4g7j5JaNs0tVHpHVA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1VaMBBk4Rxv6boPLKF+I085Q8y2E=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1V/a5P9pKRJb6tihE3e8O6xaPgLU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13wLJrcKQajql5a1p9Q45U+ZXENA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q17j9nWJkQ+wfIuVQzIFrmFZ7fSOc=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1snr+Q1UbfHyCr/cmmtVvMIS7SGs=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1bC+AdQ0qWBTmefXiI0PvmYOJoVQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1xbIVu7ScwqGHxXGwI22aSe5OdUY=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1hCZdFx+LvzbLtPs753je78gEEBQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1t21dhCLbTJmAHXSCeOMq/2vfSgo=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1PS9zNIPJanC8qcsc5qarEWqhV5Q=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NVPbZavaXpsItFwQYDWbpor7yYE=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U6tfuKRy5J8C6iaKPMZaT/e8tbA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1sjbV2r2w0Ih2vwdzC4Jq6UI7cMQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1l09xa7RnbOIC1dI9FqbaCfS/GXY=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Y49eVxhpvftbQ3yAdvlLfcrPLTU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1HjdvcVkpBZzr1aSe3p7oQfAtm/E=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1AUFY+fwSBTcrYetjT7NHvafrSQc=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1qKA23VzMUDle+Dqnrr5Kz+Xvty4=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"87076443f088ac71\",\n   \"name\": \"apk-tools\",\n   \"version\": \"2.10.8-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-only\",\n     \"spdxExpression\": \"GPL-2.0-only\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:apk-tools:apk-tools:2.10.8-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk-tools:apk_tools:2.10.8-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk-tools:2.10.8-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk_tools:2.10.8-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk-tools:2.10.8-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk_tools:2.10.8-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/apk-tools@2.10.8-r1?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"apk-tools\",\n    \"originPackage\": \"apk-tools\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.10.8-r1\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://gitlab.alpinelinux.org/alpine/apk-tools\",\n    \"description\": \"Alpine Package Keeper - package manager for alpine\",\n    \"size\": 106330,\n    \"installedSize\": 274432,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\",\n     \"so:libcrypto.so.1.1\",\n     \"so:libssl.so.1.1\",\n     \"so:libz.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:apk\"\n    ],\n    \"pullChecksum\": \"Q1NJwrNBaATecXdHtXo3mplM1oJow=\",\n    \"gitCommitOfApkPort\": \"6a528d0bdbd1dc3aac4c1ec1f6c841765bc6ae75\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/protected_paths.d\"\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/apk\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1QIkQB4hy0Bq5y7oJ9pUYkoNhgDw=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/apk\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"db9331b6a3a9d6f7\",\n   \"name\": \"busybox\",\n   \"version\": \"1.31.1-r22\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-only\",\n     \"spdxExpression\": \"GPL-2.0-only\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:busybox:busybox:1.31.1-r22:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/busybox@1.31.1-r22?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"busybox\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.31.1-r22\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"Size optimized toolbox of many common UNIX utilities\",\n    \"size\": 517882,\n    \"installedSize\": 1007616,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"/bin/sh\",\n     \"cmd:busybox\",\n     \"cmd:sh\"\n    ],\n    \"pullChecksum\": \"Q1ElJNcYpfArndKCXUEFkc6EMKJx8=\",\n    \"gitCommitOfApkPort\": \"41c9e389fd1ebce7fc2e723a9074fa7f2a00e11a\",\n    \"files\": [\n     {\n      \"path\": \"/bin\"\n     },\n     {\n      \"path\": \"/bin/busybox\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1MLz73DQ9PwDwx4wY1G7S/AUtj4g=\"\n      }\n     },\n     {\n      \"path\": \"/bin/sh\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1pcfTfDNEbNKQc2s1tia7da05M8Q=\"\n      }\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/securetty\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1RpeOldjaFVFDbjnK5fzpLGtxunM=\"\n      }\n     },\n     {\n      \"path\": \"/etc/udhcpd.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1UAiPZcDIW1ClRzobfggcCQ77V28=\"\n      }\n     },\n     {\n      \"path\": \"/etc/logrotate.d\"\n     },\n     {\n      \"path\": \"/etc/logrotate.d/acpid\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TylyCINVmnS+A/Tead4vZhE7Bks=\"\n      }\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d/dad\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"775\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1hlxd3qExrihH8bYxDQ3i7TsM/44=\"\n      }\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc/default.script\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1N2KRDz/R6RqKhGqujQ4Y6EokMXY=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/udhcpd\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"49852edd7b8e27bc\",\n   \"name\": \"ca-certificates-bundle\",\n   \"version\": \"20211220-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-or-later\",\n     \"spdxExpression\": \"GPL-2.0-or-later\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    },\n    {\n     \"value\": \"MPL-2.0\",\n     \"spdxExpression\": \"MPL-2.0\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:mozilla:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:mozilla:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ca-certificates-bundle@20211220-r0?arch=aarch64&upstream=ca-certificates&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"ca-certificates-bundle\",\n    \"originPackage\": \"ca-certificates\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"20211220-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/\",\n    \"description\": \"Pre generated bundle of Mozilla certificates\",\n    \"size\": 119492,\n    \"installedSize\": 221184,\n    \"pullDependencies\": [],\n    \"provides\": [\n     \"ca-certificates-cacert=20211220-r0\"\n    ],\n    \"pullChecksum\": \"Q1gTd1q6+fUJ5dWxizEjOFrYOkJAs=\",\n    \"gitCommitOfApkPort\": \"ff8801d22feefbb59c634f4e5bd3763869025a9f\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/cert.pem\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Nj6gTBdkZpTFW/obJGdpfvK0StA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/certs/ca-certificates.crt\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1m2cJofoNZtCCK41yvjTgX4K7dvs=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"da2d83f64297fd63\",\n   \"name\": \"libc-utils\",\n   \"version\": \"0.7.2-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"BSD-2-Clause AND BSD-3-Clause\",\n     \"spdxExpression\": \"BSD-2-Clause AND BSD-3-Clause\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libc-utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc-utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libc-utils@0.7.2-r3?arch=aarch64&upstream=libc-dev&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"libc-utils\",\n    \"originPackage\": \"libc-dev\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"0.7.2-r3\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Meta package to pull in correct libc\",\n    \"size\": 1225,\n    \"installedSize\": 4096,\n    \"pullDependencies\": [\n     \"musl-utils\"\n    ],\n    \"provides\": [],\n    \"pullChecksum\": \"Q17TxuYvbVV3Bx3QnFnmFDKT6RtBk=\",\n    \"gitCommitOfApkPort\": \"60424133be2e79bbfeff3d58147a22886f817ce2\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"3534729b6cc222b7\",\n   \"name\": \"libcrypto1.1\",\n   \"version\": \"1.1.1n-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"OpenSSL\",\n     \"spdxExpression\": \"OpenSSL\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcrypto1.1:libcrypto1.1:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcrypto1.1:libcrypto:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcrypto:libcrypto1.1:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcrypto:libcrypto:1.1.1n-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libcrypto1.1@1.1.1n-r0?arch=aarch64&upstream=openssl&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"libcrypto1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1n-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"Crypto library from openssl\",\n    \"size\": 1100482,\n    \"installedSize\": 2469888,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"so:libcrypto.so.1.1=1.1\"\n    ],\n    \"pullChecksum\": \"Q1Y2uwiZ4pMJ+aOtwNwUkxMEAKmkA=\",\n    \"gitCommitOfApkPort\": \"b759455d39ebc9606b4b980416c55aa87303ba5f\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc/CA.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1IACevKhK93GYBHp96Ie26jgZ17s=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13NVgfr7dQUuGYxur0tNalH6EIjU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1dIIouz/IZaWh9ah1d+bWyFrIyFI=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/private\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1jMWuykHLp49JqfXNb4ylcrjkbaU=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1T2si+c7ts7sgDxQYve4B3i1Dgo0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1\"\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/afalg.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1oIagSDEM9En4g3EVj+OP1oPl5lU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/capi.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1tzhXBEwKCXeBdk60P8vAgKPgPEE=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/padlock.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Z7bW7J1miX5iqN6Ofy6zgmxvwxc=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d0400558bea1fa0e\",\n   \"name\": \"libssl1.1\",\n   \"version\": \"1.1.1n-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"OpenSSL\",\n     \"spdxExpression\": \"OpenSSL\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libssl1.1:libssl:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libssl:libssl1.1:1.1.1n-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libssl:libssl:1.1.1n-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libssl1.1@1.1.1n-r0?arch=aarch64&upstream=openssl&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"libssl1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1n-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"SSL shared libraries\",\n    \"size\": 209147,\n    \"installedSize\": 536576,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\",\n     \"so:libcrypto.so.1.1\"\n    ],\n    \"provides\": [\n     \"so:libssl.so.1.1=1.1\"\n    ],\n    \"pullChecksum\": \"Q10FSdADnxG9qZTsIGQ39aaq32sjA=\",\n    \"gitCommitOfApkPort\": \"b759455d39ebc9606b4b980416c55aa87303ba5f\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q15R6WogvhTyQIh4ujf2m3Hi3igMw=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q18j35pe3yp6HOgMih1wlGP1/mm2c=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4dd349e42df17a96\",\n   \"name\": \"libtls-standalone\",\n   \"version\": \"2.9.1-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"ISC\",\n     \"spdxExpression\": \"ISC\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libtls-standalone:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libtls-standalone:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libtls_standalone:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libtls_standalone:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libtls:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libtls:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libtls-standalone@2.9.1-r1?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"libtls-standalone\",\n    \"originPackage\": \"libtls-standalone\",\n    \"maintainer\": \"\",\n    \"version\": \"2.9.1-r1\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://www.libressl.org/\",\n    \"description\": \"libtls extricated from libressl sources\",\n    \"size\": 31457,\n    \"installedSize\": 110592,\n    \"pullDependencies\": [\n     \"ca-certificates-bundle\",\n     \"so:libc.musl-aarch64.so.1\",\n     \"so:libcrypto.so.1.1\",\n     \"so:libssl.so.1.1\"\n    ],\n    \"provides\": [\n     \"so:libtls-standalone.so.1=1.0.0\"\n    ],\n    \"pullChecksum\": \"Q1DUhwBWiB9vjN4qWbvbfL6gagsPo=\",\n    \"gitCommitOfApkPort\": \"7ebfa23b6119a24ca9b9375bdc55373259192da1\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libtls-standalone.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1MePJJ8Ajcuvc5x+6vlF3ygJoZYw=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/libtls-standalone.so.1.0.0\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1m2L9fYCclhgYL+t0i/aO/uZ5Hoc=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"761f5684fa0274c6\",\n   \"name\": \"musl\",\n   \"version\": \"1.1.24-r10\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl-libc:musl:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_libc:musl:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl:1.1.24-r10:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl@1.1.24-r10?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"musl\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.1.24-r10\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 383126,\n    \"installedSize\": 638976,\n    \"pullDependencies\": [],\n    \"provides\": [\n     \"so:libc.musl-aarch64.so.1=1\"\n    ],\n    \"pullChecksum\": \"Q12uzTrvht/xFcFxMtQUnMCMp/Q7U=\",\n    \"gitCommitOfApkPort\": \"908046ad5f96c4c1df5541ff4b0251767e110c85\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/ld-musl-aarch64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OjfEikBQOAxRpOpB65rFxXrJSBY=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libc.musl-aarch64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q14RpiCEfZIqcg1XDcVqp8QEpc9ks=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"618e6d5faa1432fe\",\n   \"name\": \"musl-utils\",\n   \"version\": \"1.1.24-r10\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"BSD\",\n     \"spdxExpression\": \"\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    },\n    {\n     \"value\": \"GPL2+\",\n     \"spdxExpression\": \"GPL-2.0-or-later\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    },\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl-utils:musl-utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl-utils:musl_utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl-utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl_utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl-libc:musl-utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl-libc:musl_utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl-utils:1.1.24-r10:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl_utils:1.1.24-r10:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl-utils@1.1.24-r10?arch=aarch64&upstream=musl&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"musl-utils\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.1.24-r10\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 37550,\n    \"installedSize\": 139264,\n    \"pullDependencies\": [\n     \"scanelf\",\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:getconf\",\n     \"cmd:getent\",\n     \"cmd:iconv\",\n     \"cmd:ldconfig\",\n     \"cmd:ldd\"\n    ],\n    \"pullChecksum\": \"Q1anVvYA5k/ok52UU/FaIWoK2sYf8=\",\n    \"gitCommitOfApkPort\": \"908046ad5f96c4c1df5541ff4b0251767e110c85\",\n    \"files\": [\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/ldconfig\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/getconf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1kdlRltC4b4df6xvZ4XtVw6LPnk4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/getent\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1l8d/wLfUmI/BWCMfD6L0Vfczr+g=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/iconv\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1YmPm4OKk7cY+cKGyugmFI9cDUAo=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/ldd\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1r+KYty/HCLl4p4dvPt8kCb1mhB0=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6c34a9b817d73d7b\",\n   \"name\": \"scanelf\",\n   \"version\": \"1.2.6-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-only\",\n     \"spdxExpression\": \"GPL-2.0-only\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:scanelf:scanelf:1.2.6-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/scanelf@1.2.6-r0?arch=aarch64&upstream=pax-utils&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"scanelf\",\n    \"originPackage\": \"pax-utils\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.2.6-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n    \"description\": \"Scan ELF binaries for stuff\",\n    \"size\": 36381,\n    \"installedSize\": 94208,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:scanelf\"\n    ],\n    \"pullChecksum\": \"Q1rsUhHDqsLsp5CECQg8L6K2oe8PA=\",\n    \"gitCommitOfApkPort\": \"753fa8d765c7a4edb76f11b1995f84cdcb45bce5\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/scanelf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1PoUsJHtFOYHiAujB4RsURvdq3t8=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ea144a516278f0ea\",\n   \"name\": \"ssl_client\",\n   \"version\": \"1.31.1-r22\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"GPL-2.0-only\",\n     \"spdxExpression\": \"GPL-2.0-only\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ssl-client:ssl-client:1.31.1-r22:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl-client:ssl_client:1.31.1-r22:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl-client:1.31.1-r22:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl_client:1.31.1-r22:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl-client:1.31.1-r22:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl_client:1.31.1-r22:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ssl_client@1.31.1-r22?arch=aarch64&upstream=busybox&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"ssl_client\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.31.1-r22\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"EXternal ssl_client for busybox wget\",\n    \"size\": 4289,\n    \"installedSize\": 24576,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\",\n     \"so:libtls-standalone.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:ssl_client\"\n    ],\n    \"pullChecksum\": \"Q1ovyIuDBoKvoqqwFdTpvyxGB0Zso=\",\n    \"gitCommitOfApkPort\": \"41c9e389fd1ebce7fc2e723a9074fa7f2a00e11a\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/ssl_client\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1pokN906jhF8cZfksfXQDDQAv3jg=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f871830fe4975a68\",\n   \"name\": \"zlib\",\n   \"version\": \"1.2.12-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apk-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"accessPath\": \"/lib/apk/db/installed\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"Zlib\",\n     \"spdxExpression\": \"Zlib\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": [\n      {\n       \"path\": \"/lib/apk/db/installed\",\n       \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n       \"accessPath\": \"/lib/apk/db/installed\",\n       \"annotations\": {\n        \"evidence\": \"primary\"\n       }\n      }\n     ]\n    }\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:zlib:zlib:1.2.12-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/zlib@1.2.12-r0?arch=aarch64&distro=alpine-3.12.12\",\n   \"metadataType\": \"apk-db-entry\",\n   \"metadata\": {\n    \"package\": \"zlib\",\n    \"originPackage\": \"zlib\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.2.12-r0\",\n    \"architecture\": \"aarch64\",\n    \"url\": \"https://zlib.net/\",\n    \"description\": \"A compression/decompression Library\",\n    \"size\": 52231,\n    \"installedSize\": 102400,\n    \"pullDependencies\": [\n     \"so:libc.musl-aarch64.so.1\"\n    ],\n    \"provides\": [\n     \"so:libz.so.1=1.2.12\"\n    ],\n    \"pullChecksum\": \"Q1pmoYrJ0Z+qYAN3/bFhlKoWkmdN8=\",\n    \"gitCommitOfApkPort\": \"370acac0e4514c90d8c4e33a9740a7c92254853a\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libz.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1+aBjyJ7dmLatVkyqCNnAChlDZh8=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libz.so.1.2.12\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1t8k1PRj167dkycAt7Ax8yOdws60=\"\n      }\n     }\n    ]\n   }\n  }\n ],\n \"artifactRelationships\": [\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"03873777fed9ff43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"0acf160f41630757\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"13dd5ed25240c27e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"22bbedf698c71e11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"237ea5b321ae0600\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"2ff45fbb92b82580\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"469c33e9d320fb4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"5a062656ece9d33f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"5d8389605f14788c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"5dc069665c5b6c2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"879b86f3d56992e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"8b8fbab211078ce3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"8c1b0c306b55d52e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"8c39a34f27d7b8b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"95e4dac118918344\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"a07bc89128850ea8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"aca7829e5caaafec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"c735ab9278164f87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"cb4516b26ca8e5df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"e3bbed8d2f3aa967\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"fcb3750e5159e213\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"300e781a409ed72e\",\n   \"child\": \"fe1d8dac14773061\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"24adce31408e2b35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"40f8c3687a866b44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"4dd349e42df17a96\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"56bd948d4f18705e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"582750a63290fb66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"87076443f088ac71\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"ad399331b09e180e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"b1f03a6b00cbd2fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"d0400558bea1fa0e\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"e557179542ac31a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"f2afd5237fe2c3a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"f51cbcf6ae499899\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3534729b6cc222b7\",\n   \"child\": \"faeab95f86dd9efc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"49852edd7b8e27bc\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"49852edd7b8e27bc\",\n   \"child\": \"4dd349e42df17a96\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"49852edd7b8e27bc\",\n   \"child\": \"b93f18b241f5e8fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4dd349e42df17a96\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"4dd349e42df17a96\",\n   \"child\": \"84404fd6464f61be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4dd349e42df17a96\",\n   \"child\": \"ea144a516278f0ea\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"0ea04a3bc4f3e371\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"18d1f9e5760a915a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"1c96050d6f593ed6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"4983f048a5f72416\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"da2d83f64297fd63\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"618e6d5faa1432fe\",\n   \"child\": \"f87d9fc71efb8382\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6c34a9b817d73d7b\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"6c34a9b817d73d7b\",\n   \"child\": \"618e6d5faa1432fe\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"6c34a9b817d73d7b\",\n   \"child\": \"99744ea397e4db46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"003d67101ea3f703\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"0adde64b7419bc06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"101f0230d16cd4cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"16b538190bd2d8e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"193e0466ebf75373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"1ca4e605d79309bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"1f21b922ea357603\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"280df73804363fac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"2e86066068a63825\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"3239a4705c81f17b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"3ab6b534ff2a041d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"3ff8019c27859ee5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"421dffb84f68146d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"4605d980af91d78c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"57fdaca74461eada\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"65b95b833f4c85f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"8e5d70036925d90e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"92846e0b9a31fa99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"9511997217af8f59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"a4878fc8e917a20e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"c13d4ccfc8334055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"d3f9378623d81cfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70a21b16f1a2cc6a\",\n   \"child\": \"d5707bd5de9a3be4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"3534729b6cc222b7\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"4dd349e42df17a96\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"618e6d5faa1432fe\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"6c34a9b817d73d7b\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"70a21b16f1a2cc6a\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"87076443f088ac71\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"c840950da1ceb044\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"d0400558bea1fa0e\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"db9331b6a3a9d6f7\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"ea144a516278f0ea\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"761f5684fa0274c6\",\n   \"child\": \"f871830fe4975a68\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"87076443f088ac71\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"87076443f088ac71\",\n   \"child\": \"c555bffc18a4c941\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"300e781a409ed72e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"3534729b6cc222b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"49852edd7b8e27bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"4dd349e42df17a96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"618e6d5faa1432fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"6c34a9b817d73d7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"70a21b16f1a2cc6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"761f5684fa0274c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"87076443f088ac71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"d0400558bea1fa0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"da2d83f64297fd63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"db9331b6a3a9d6f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"ea144a516278f0ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"child\": \"f871830fe4975a68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d0400558bea1fa0e\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"d0400558bea1fa0e\",\n   \"child\": \"4dd349e42df17a96\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"d0400558bea1fa0e\",\n   \"child\": \"83fe247fdca374e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d0400558bea1fa0e\",\n   \"child\": \"87076443f088ac71\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"da2d83f64297fd63\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"1a6b06b0bb5a0d17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"59a8ba7df46c2920\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"63db6a190e31d94c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"66cd3d11c9a64a91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"70a21b16f1a2cc6a\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"c2a2950ea79092e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"db9331b6a3a9d6f7\",\n   \"child\": \"c81a1e5c8ec53a85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ea144a516278f0ea\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"ea144a516278f0ea\",\n   \"child\": \"3da24b68eb0cb573\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f871830fe4975a68\",\n   \"child\": \"3859b6ea22aa5e17\",\n   \"type\": \"evident-by\"\n  },\n  {\n   \"parent\": \"f871830fe4975a68\",\n   \"child\": \"783dcad80474487b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f871830fe4975a68\",\n   \"child\": \"87076443f088ac71\",\n   \"type\": \"dependency-of\"\n  }\n ],\n \"files\": [\n  {\n   \"id\": \"59a8ba7df46c2920\",\n   \"location\": {\n    \"path\": \"/bin/busybox\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 886368\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"30bcfbdc343d3f00f0c78c18d46ed2fc052d8f88\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"c624a8adfdcb3670022e56e1aab2b1a5668ef0bdedd9fc3c1f3f40bb1071d6b3\"\n    }\n   ]\n  },\n  {\n   \"id\": \"469c33e9d320fb4e\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"053a92f87fd4532850bb31f0881978efe0532ae5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"1bb2a846c0ea4ca9d0e7862f970863857fc33c32f5506098c636a62a726a847b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"cb4516b26ca8e5df\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"39ac5d72c6ba018a0f74b8b453894edc9db07b5f\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"73867d92083f2f8ab899a26ccda7ef63dfaa0032a938620eda605558958a8041\"\n    }\n   ]\n  },\n  {\n   \"id\": \"e3bbed8d2f3aa967\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"23d0f2ea1af269c2f66165e0f8a944e96bf011de\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"10877cce0a935e46ad88cb79e174a2491680508eccda08e92bf04fb9bf37fbc1\"\n    }\n   ]\n  },\n  {\n   \"id\": \"0acf160f41630757\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"de1241307014aae3dba798e900f163408d98d6f4\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"ebe717d228555aa58133c202314a451f81e71f174781fd7ff8d8970d6cfa60da\"\n    }\n   ]\n  },\n  {\n   \"id\": \"a07bc89128850ea8\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"57f6b93fda4a4496fab62844ddef0eeb168f80b5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"d11f6b21c61b4274e182eb888883a8ba8acdbf820dcc7a6d82a7d9fc2fd2836d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"d3f9378623d81cfb\",\n   \"location\": {\n    \"path\": \"/etc/crontabs/root\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 600,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/tab-separated-values\",\n    \"size\": 283\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"bdf9356a9516238c8b2468613517749098b17ef6\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"575d810a9fae5f2f0671c9b2c0ce973e46c7207fbe5cb8d1b0d1836a6a0470e3\"\n    }\n   ]\n  },\n  {\n   \"id\": \"65b95b833f4c85f9\",\n   \"location\": {\n    \"path\": \"/etc/fstab\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/csv\",\n    \"size\": 89\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"d50ee135ef10a434b9df582ea8276b5c1ce803fa\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"a3efca2e8d62785c87517283092b4c800d88612b6f3f06b80a4c2f39d8e68841\"\n    }\n   ]\n  },\n  {\n   \"id\": \"101f0230d16cd4cc\",\n   \"location\": {\n    \"path\": \"/etc/group\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 682\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a09d7ac56b9d80a3ab5c812ab840f3945d8bb26e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"412af628e00706d3c90a5d465d59cc422ff68d79eeb8870c4f33ed6df04b2871\"\n    }\n   ]\n  },\n  {\n   \"id\": \"9511997217af8f59\",\n   \"location\": {\n    \"path\": \"/etc/hostname\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 10\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"ea75706155cffed0a1bd43ddba4543da27d73a67\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"d906aecb61d076a967d9ffe8821c7b04b063f72df9d9e35b33ef36b1c0d98f16\"\n    }\n   ]\n  },\n  {\n   \"id\": \"3ab6b534ff2a041d\",\n   \"location\": {\n    \"path\": \"/etc/hosts\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/tab-separated-values\",\n    \"size\": 79\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"043eb324a653456caa1a73e2e2d49f77792bb0c5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"e3998dbe02b51dada33de87ae43d18a93ab6915b9e34f5a751bf2b9b25a55492\"\n    }\n   ]\n  },\n  {\n   \"id\": \"92846e0b9a31fa99\",\n   \"location\": {\n    \"path\": \"/etc/inittab\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 570\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"4ecb616e15bb4335917b513f34ac133ae0f8a477\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"54a5f36970125bf70cdf7b215c9e12a287d92ad76a693bd72aec4cbc5645df87\"\n    }\n   ]\n  },\n  {\n   \"id\": \"63db6a190e31d94c\",\n   \"location\": {\n    \"path\": \"/etc/logrotate.d/acpid\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 140\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"4f29720883559a74be03f4de69de2f66113b064b\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"d608a3b7715886b5735def0cc50a6359fd364fac2e0e0a459c588c04be471031\"\n    }\n   ]\n  },\n  {\n   \"id\": \"003d67101ea3f703\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/aliases.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 1545\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"5946e1e930583552bb7b863eb94bcbb3feef8aa9\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"3ebaba946f213670170c7d69949f690a3854553bd0b1560f1d980cba4c83a942\"\n    }\n   ]\n  },\n  {\n   \"id\": \"d5707bd5de9a3be4\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/blacklist.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 1998\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"c7160653a4ba4cb42f6fb7abbcfad65b0016a8c8\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"2e2a6fd7a554924bbb5cbdd30f73dc05963fe0c458437b520cf4d503d4d73ff7\"\n    }\n   ]\n  },\n  {\n   \"id\": \"193e0466ebf75373\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/i386.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 122\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a676b2fe78e7ea897d702b2c2fb2a2659f1eb657\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"6c46c4cbfb8b7594f19eb94801a350fa2221ae9ac5239a8819d15555caa76ae8\"\n    }\n   ]\n  },\n  {\n   \"id\": \"4605d980af91d78c\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/kms.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 91\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"ca76cb9f71980e9bda8db6bf95da759e26b27a88\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"50467fa732f809f3a2bb5738628765c5f895c3a237e1c1ad09f85d41fd9ca7c5\"\n    }\n   ]\n  },\n  {\n   \"id\": \"421dffb84f68146d\",\n   \"location\": {\n    \"path\": \"/etc/modules\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 15\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"b68a208d48a91c670c8040a03c95fae12c144f53\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"2c881de75a5409c35d2433a24f180b8b02ba478ef2c1c60ea3434a35bcbc335d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"1f21b922ea357603\",\n   \"location\": {\n    \"path\": \"/etc/motd\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 283\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"5e676e555354447436ed3bd8a752ebe5332d15c0\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"4ada0c700c4460f85252987092650c6708f17b4ccebc9ae4fcf8732089a1485f\"\n    }\n   ]\n  },\n  {\n   \"id\": \"c81a1e5c8ec53a85\",\n   \"location\": {\n    \"path\": \"/etc/network/if-up.d/dad\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 775,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 218\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"865c5ddea131ae2847f1b6310d0de2ed3b0cff8e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"eadec0a3e18ef58316d8657c6e42b6f4d35d26de52d19cfeb3d3a256622c955b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"3ff8019c27859ee5\",\n   \"location\": {\n    \"path\": \"/etc/passwd\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 1172\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"4dc86eb8b51fbabd22cef7d9419c6037f2c9841f\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"2e0902cf0a7f64bf4e64ef2fad66ae977b4d01975dddf5352a84aea5c4e901f0\"\n    }\n   ]\n  },\n  {\n   \"id\": \"3239a4705c81f17b\",\n   \"location\": {\n    \"path\": \"/etc/profile\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 238\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"2a915bf249792efc175a56377b9f0536c8eb237e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"88dc4b847ee3ca91501b025dee3ff49590a85360a20e90a5e0f1a37bd610f598\"\n    }\n   ]\n  },\n  {\n   \"id\": \"16b538190bd2d8e4\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/color_prompt\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 295\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"d302f6dc6b920957ee98c4606a469b508e84b129\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"a00b56dbd437d3f2c32ced50974daa3cfc84a8dd1cbaf75cf307be20b398fc75\"\n    }\n   ]\n  },\n  {\n   \"id\": \"280df73804363fac\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/locale.sh\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 61\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"4bc8fe596ef5996c5f572f32b61a94ec7515a01c\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"84eb9034099d759ff08e6da5a731cacfc63a319547ad0f1dfc1c64853aca93f2\"\n    }\n   ]\n  },\n  {\n   \"id\": \"0adde64b7419bc06\",\n   \"location\": {\n    \"path\": \"/etc/protocols\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 1865\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"dc5a97527bee3a9303ac7ffaade871b98004137e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"a6695dbd53b87c7b41dfdafd40b1c8ba34fed2f0fa8eaaa296ad17c0b154603e\"\n    }\n   ]\n  },\n  {\n   \"id\": \"1a6b06b0bb5a0d17\",\n   \"location\": {\n    \"path\": \"/etc/securetty\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 70\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"46978e95d8da1551436e39cae5fce92c6b71ba73\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"c8070bc7fc443ac96502b2d811afc3f7d62b24c0417451f9cc65e3eca2a2af13\"\n    }\n   ]\n  },\n  {\n   \"id\": \"1ca4e605d79309bd\",\n   \"location\": {\n    \"path\": \"/etc/services\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 14464\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"0ba1c936042f2d6aade5563e9fb319275aec0ee6\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"a1c2d8af47c1a951f39f11cf53160703f282946d9821068eadf97b7d43208a34\"\n    }\n   ]\n  },\n  {\n   \"id\": \"57fdaca74461eada\",\n   \"location\": {\n    \"path\": \"/etc/shadow\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 640,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 42,\n    \"mimeType\": \"text/plain\",\n    \"size\": 422\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"2877ffc63a5c635e09f404933b7871e210c3d013\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"2d6f677c66af468f483597fbaa53dbe7150eb925a111c2da25c96220915c6a1a\"\n    }\n   ]\n  },\n  {\n   \"id\": \"2e86066068a63825\",\n   \"location\": {\n    \"path\": \"/etc/shells\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 38\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a239b661da4227a07f6a9183699fd275bdb12640\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"24be6ceb236610df45684c83b06c918ae45635be55f69975e43676b7595bbc5f\"\n    }\n   ]\n  },\n  {\n   \"id\": \"b93f18b241f5e8fa\",\n   \"location\": {\n    \"path\": \"/etc/ssl/certs/ca-certificates.crt\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 203223\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"9b6709a1fa0d66d0822b8d72be34e05f82bb76fb\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"07a23c1a1a5094e6c049c61f87ad09150abbda7590797bfbde8c34349f8dabd0\"\n    }\n   ]\n  },\n  {\n   \"id\": \"f2afd5237fe2c3a4\",\n   \"location\": {\n    \"path\": \"/etc/ssl/ct_log_list.cnf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 412\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a2587c4e97408b64274e5e052b74e3754892c13a\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"ad399331b09e180e\",\n   \"location\": {\n    \"path\": \"/etc/ssl/ct_log_list.cnf.dist\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 412\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a2587c4e97408b64274e5e052b74e3754892c13a\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"24adce31408e2b35\",\n   \"location\": {\n    \"path\": \"/etc/ssl/misc/CA.pl\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/x-perl\",\n    \"size\": 7598\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"20009ebca84af77198047a7de887b6ea3819d7bb\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"61ab95f7e96f2b0f2acdcafb8afde2f6c43e899416397230c2fae9c1e701e45b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"582750a63290fb66\",\n   \"location\": {\n    \"path\": \"/etc/ssl/misc/tsget.pl\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/x-perl\",\n    \"size\": 6579\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"748228bb3fc865a5a1f5a87577e6d6c85ac8c852\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"212174afdc2b4b12cb2d28ec41bfc73bc500f5ad72c445843f9f7796a735496a\"\n    }\n   ]\n  },\n  {\n   \"id\": \"faeab95f86dd9efc\",\n   \"location\": {\n    \"path\": \"/etc/ssl/openssl.cnf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 10909\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"c06bb154438af6218b8f58bc0f70520674fb3090\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"b1f03a6b00cbd2fe\",\n   \"location\": {\n    \"path\": \"/etc/ssl/openssl.cnf.dist\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 10909\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"c06bb154438af6218b8f58bc0f70520674fb3090\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"a4878fc8e917a20e\",\n   \"location\": {\n    \"path\": \"/etc/sysctl.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 53\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"e2ea73ded7e7371664204b148569fb5e88b0f7a8\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"8bba47da45bc8715c69ac904a60410eabffaa7bbbef640f9c1368ab9c48493d0\"\n    }\n   ]\n  },\n  {\n   \"id\": \"66cd3d11c9a64a91\",\n   \"location\": {\n    \"path\": \"/etc/udhcpd.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 5306\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"50088f65c0c85b50a5473a1b7e081c090efb576f\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"edf929b3bf6da1fbde03687020739ee97a9a3edc825db6b768e3e2ce08ebbdd3\"\n    }\n   ]\n  },\n  {\n   \"id\": \"3859b6ea22aa5e17\",\n   \"location\": {\n    \"path\": \"/lib/apk/db/installed\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   }\n  },\n  {\n   \"id\": \"c840950da1ceb044\",\n   \"location\": {\n    \"path\": \"/lib/ld-musl-aarch64.so.1\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 621016\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3a37c48a4050380c51a4ea41eb9ac5c57ac94816\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"99c589a28a4639e8b82627ef39794fab8d3e25badc5ec9496c0fe3fd2e89aadc\"\n    }\n   ]\n  },\n  {\n   \"id\": \"e557179542ac31a5\",\n   \"location\": {\n    \"path\": \"/lib/libcrypto.so.1.1\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 2342480\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"8cc5aeca41cba78f49a9f5cd6f8ca572b8e46da5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"78ac2b6af32a71d895ebfa350c782c5e642231378432e28a3b936291ed5fe984\"\n    }\n   ]\n  },\n  {\n   \"id\": \"83fe247fdca374e0\",\n   \"location\": {\n    \"path\": \"/lib/libssl.so.1.1\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 519496\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"e51e96a20be14f2408878ba37f69b71e2de280cc\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"e742f89e940a7e93c22928a374d215a7354a80bc2e26fa262e4d8ff205d2b049\"\n    }\n   ]\n  },\n  {\n   \"id\": \"783dcad80474487b\",\n   \"location\": {\n    \"path\": \"/lib/libz.so.1.2.12\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 91888\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"b7c9353d18f5ebb764c9c02dec0c7cc8e770b3ad\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"da39c3b228641ea2bc568684cee24527e74d6219bcef9b922deca4e5d29e5506\"\n    }\n   ]\n  },\n  {\n   \"id\": \"c13d4ccfc8334055\",\n   \"location\": {\n    \"path\": \"/lib/sysctl.d/00-alpine.conf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 1278\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"1e9125cd6d7112098a7c446d4f2ee8a269a7aba7\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"ee169bea2cb6859420b55ca7a9c23fb68b50adc1d26c951f904dec9e8f767380\"\n    }\n   ]\n  },\n  {\n   \"id\": \"c555bffc18a4c941\",\n   \"location\": {\n    \"path\": \"/sbin/apk\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 223056\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"408910078872d01ab9cbba09f69518928361803c\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"8bec9ddd79c361763a76b59b051497aba6879c0c7ef9a81aacea39e02662afc4\"\n    }\n   ]\n  },\n  {\n   \"id\": \"18d1f9e5760a915a\",\n   \"location\": {\n    \"path\": \"/sbin/ldconfig\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 393\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"2a36b6f8f3992b112450e66ac128c2ea499a103e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"b4a2c06db38742e8c42c3c9838b285a7d8cdac6c091ff3df5ff9a15f1e41b9c7\"\n    }\n   ]\n  },\n  {\n   \"id\": \"8e5d70036925d90e\",\n   \"location\": {\n    \"path\": \"/sbin/mkmntdirs\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 5712\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"ce65f704305cb5e9db095f1dc7fdd02f3d9b7510\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"c6597bce70930e51b48d00e4508bbf8831d951e3d49d796f95915ce4c7e2f027\"\n    }\n   ]\n  },\n  {\n   \"id\": \"f87d9fc71efb8382\",\n   \"location\": {\n    \"path\": \"/usr/bin/getconf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 34648\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"91d95196d0b86f875feb1bd9e17b55c3a2cf9e4e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"88d1b3ca6f4381f4ef6bec9c223f5f1aab705e12bf6bd62cd0dd9871b3c8e565\"\n    }\n   ]\n  },\n  {\n   \"id\": \"0ea04a3bc4f3e371\",\n   \"location\": {\n    \"path\": \"/usr/bin/getent\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 49712\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"97c77fc0b7d4988fc158231f0fa2f455f733afe8\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"cdf20f3c528dcca61170fc2d39895c4783dc819efd5171e67aea8d0e62c23872\"\n    }\n   ]\n  },\n  {\n   \"id\": \"1c96050d6f593ed6\",\n   \"location\": {\n    \"path\": \"/usr/bin/iconv\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 23216\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"6263e6e0e2a4edc63e70a1b2ba098523d703500a\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"6d3f770e026b5e73044a8462cbc821c672bb0fafde003c6e7b7cb6ce20f7f598\"\n    }\n   ]\n  },\n  {\n   \"id\": \"4983f048a5f72416\",\n   \"location\": {\n    \"path\": \"/usr/bin/ldd\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 53\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"afe298b72fc708b978a7876f3edf2409bd66841d\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"5f115be8562262bcc50ec469e25c0af2fda3bad72a960c6aa3488acd7a7da8cf\"\n    }\n   ]\n  },\n  {\n   \"id\": \"99744ea397e4db46\",\n   \"location\": {\n    \"path\": \"/usr/bin/scanelf\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 79560\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3e852c247b453981e202e8c1e11b1446f76adedf\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"be87c7f3079fa22494861a5cdf0979ba74f34d028d1a62b99f2cc74eb0f1aa4d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"3da24b68eb0cb573\",\n   \"location\": {\n    \"path\": \"/usr/bin/ssl_client\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 9808\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a6890df74ea3845f1c65f92c7d74030d002fde38\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"f6e7fd1c20782a4de5ff42a8723d960d513bc0c041f5357990111c9730796757\"\n    }\n   ]\n  },\n  {\n   \"id\": \"40f8c3687a866b44\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/afalg.so\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 18568\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"a086a048310cf449f88371158fe38fd683e5e655\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"619fe939e7116910a2123378ae33703a3f3d2daa6ae5ea65f6da60c7081dbe2d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"f51cbcf6ae499899\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/capi.so\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 5672\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"b73857044c0a097781764eb43fcbc080a3e03c41\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"a657bc2985efc3ff5b71e2f168ede1baf9ceb6a450b04c582361aeae85cd860f\"\n    }\n   ]\n  },\n  {\n   \"id\": \"56bd948d4f18705e\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/padlock.so\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 5672\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"67b6d6ec9d66897e62a8de8e7f2eb3826c6fc317\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"45abb6629c60e922e4af6390dee8c281e346658c55ad02521fd51d37416cd073\"\n    }\n   ]\n  },\n  {\n   \"id\": \"84404fd6464f61be\",\n   \"location\": {\n    \"path\": \"/usr/lib/libtls-standalone.so.1.0.0\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"application/x-sharedlib\",\n    \"size\": 96032\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"9b62fd7d809c9618182feb748bf68efee6791e87\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"3708a8f2fe798b424b8fa4d050dbdf7f4d3c28ac8f836753c3f26af35a34e4cf\"\n    }\n   ]\n  },\n  {\n   \"id\": \"95e4dac118918344\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3af08548ef78cfdedcf349880c2c6a1a48763a0e\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"9c102bcc376af1498d549b77bdbfa815ae86faa1d2d82f040e616b18ef2df2d4\"\n    }\n   ]\n  },\n  {\n   \"id\": \"237ea5b321ae0600\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"bfb616658cc05a872568b0c8e398c482e23b60dd\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"ebf31683b56410ecc4c00acd9f6e2839e237a3b62b5ae7ef686705c7ba0396a9\"\n    }\n   ]\n  },\n  {\n   \"id\": \"fcb3750e5159e213\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"053a92f87fd4532850bb31f0881978efe0532ae5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"1bb2a846c0ea4ca9d0e7862f970863857fc33c32f5506098c636a62a726a847b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"8c1b0c306b55d52e\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3671ae0ec7503b1e193587c1dcdf7b78bc863e42\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"12f899e55a7691225603d6fb3324940fc51cd7f133e7ead788663c2b7eecb00c\"\n    }\n   ]\n  },\n  {\n   \"id\": \"8b8fbab211078ce3\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"39ac5d72c6ba018a0f74b8b453894edc9db07b5f\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"73867d92083f2f8ab899a26ccda7ef63dfaa0032a938620eda605558958a8041\"\n    }\n   ]\n  },\n  {\n   \"id\": \"03873777fed9ff43\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"c8fabeb2eeb992c368c77b9707e0d1ecfd7cf905\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"9a4cd858d9710963848e6d5f555325dc199d1c952b01cf6e64da2c15deedbd97\"\n    }\n   ]\n  },\n  {\n   \"id\": \"8c39a34f27d7b8b8\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"329643357d0b78b1ef48ec155325e25f1d7534dd\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"780b3ed41786772cbc7b68136546fa3f897f28a23b30c72dde6225319c44cfff\"\n    }\n   ]\n  },\n  {\n   \"id\": \"22bbedf698c71e11\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"825090fde25bbc0e71a9cb3076316b5afe459e4d\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"59c01c57b446633249f67c04b115dd6787f4378f183dff2bbf65406df93f176d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"13dd5ed25240c27e\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 451\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"5d4743128353b6396fad2fa2ba793ace21602295\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"db0b49163f07ffba64a5ca198bcf1688610b0bd1f0d8d5afeaf78559d73f2278\"\n    }\n   ]\n  },\n  {\n   \"id\": \"2ff45fbb92b82580\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"95995311236b7a55933642ffa10ce6014f1af7d0\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"207e4696d3c05f7cb05966aee557307151f1f00217af4143c1bcaf33b8df733f\"\n    }\n   ]\n  },\n  {\n   \"id\": \"5dc069665c5b6c2d\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"58d5ba4b2f3b1e927721d7a6432f298eedf72a6b\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"128d34d4aec39b0daedea8163cd8dc24dff36fd3d848630ab97eeb1d3084bbb3\"\n    }\n   ]\n  },\n  {\n   \"id\": \"5d8389605f14788c\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"23d0f2ea1af269c2f66165e0f8a944e96bf011de\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"10877cce0a935e46ad88cb79e174a2491680508eccda08e92bf04fb9bf37fbc1\"\n    }\n   ]\n  },\n  {\n   \"id\": \"5a062656ece9d33f\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3529ec82670c6d4e20ee3e4968db34b551e91d50\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"4a095a9daca86da496a3cd9adcd95ee2197fdbeb84638656d469f05a4d740751\"\n    }\n   ]\n  },\n  {\n   \"id\": \"c735ab9278164f87\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"55a301064e11c6fe9ba0f2ca17e234f3943ccb61\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"0caf5662fde45616d88cfd7021b7bda269a2fcaf311e51c48945a967a609ec0b\"\n    }\n   ]\n  },\n  {\n   \"id\": \"fe1d8dac14773061\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"de1241307014aae3dba798e900f163408d98d6f4\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"ebe717d228555aa58133c202314a451f81e71f174781fd7ff8d8970d6cfa60da\"\n    }\n   ]\n  },\n  {\n   \"id\": \"879b86f3d56992e3\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"57f6b93fda4a4496fab62844ddef0eeb168f80b5\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"d11f6b21c61b4274e182eb888883a8ba8acdbf820dcc7a6d82a7d9fc2fd2836d\"\n    }\n   ]\n  },\n  {\n   \"id\": \"aca7829e5caaafec\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 800\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"df02c9adc2906a3aa5e5ad69f50e3953e65710d0\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"40a216cbd163f22e5f16a9e0929de7cde221b9cbae8e36aa368b1e128afe0a31\"\n    }\n   ]\n  },\n  {\n   \"id\": \"c2a2950ea79092e3\",\n   \"location\": {\n    \"path\": \"/usr/share/udhcpc/default.script\",\n    \"layerID\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\"\n   },\n   \"metadata\": {\n    \"mode\": 755,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"text/plain\",\n    \"size\": 3121\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha1\",\n     \"value\": \"3762910f3fd1e91a8a846aae8d0e18e84a243176\"\n    },\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"18982a8d0bc50408b9893fa04c00bb390d43f6787655043915cbc21edf76a4a1\"\n    }\n   ]\n  }\n ],\n \"source\": {\n  \"id\": \"8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n  \"name\": \"alpine\",\n  \"version\": \"3.12\",\n  \"type\": \"image\",\n  \"metadata\": {\n   \"userInput\": \"alpine:3.12\",\n   \"imageID\": \"sha256:cc604a625da1289c5dd57f947318133161ff7f40fb03dc2a649300473b97e743\",\n   \"manifestDigest\": \"sha256:8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"alpine:3.12\"\n   ],\n   \"imageSize\": 5326796,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6\",\n     \"size\": 5326796\n    }\n   ],\n   \"manifest\": \"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjoxNDg3LCJkaWdlc3QiOiJzaGEyNTY6Y2M2MDRhNjI1ZGExMjg5YzVkZDU3Zjk0NzMxODEzMzE2MWZmN2Y0MGZiMDNkYzJhNjQ5MzAwNDczYjk3ZTc0MyJ9LCJsYXllcnMiOlt7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLCJzaXplIjo1NjE2MTI4LCJkaWdlc3QiOiJzaGEyNTY6ZDgwZTAyMDgzNDVhNWMwZTBlNTU3NWYxMWYzNWQ5OWExNzliY2RmZWM5YTA3NTgyOGU3NzQxNDVjMDI0NWViNiJ9XX0=\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhcm02NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6MDZhOWI5YTE3NTgwYjU2YmUxYzVlMjhjMzBjMWEzYjQ2M2JjZjY3MTRhMjcxMzQ1ZTQwNzUxNTY2YWU1M2M1OSIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiJiZWUwNDg4MDRjYzgwZDA2ZTQ2ZGJkYzk2YTZkZjY4OTJmNjJhYjRhNTNiMzBiMDA1NTcxZTkwYzRjYTVhMjgzIiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6ImJlZTA0ODgwNGNjOCIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjowNmE5YjlhMTc1ODBiNTZiZTFjNWUyOGMzMGMxYTNiNDYzYmNmNjcxNGEyNzEzNDVlNDA3NTE1NjZhZTUzYzU5IiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMi0wNC0wNFQyMzozOTo1My41NTU0MjI1MzZaIiwiZG9ja2VyX3ZlcnNpb24iOiIyMC4xMC4xMiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIyLTA0LTA0VDIzOjM5OjUzLjQzNDc0NDIwNFoiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6YTJhOTkyYjdmNmFmMWU2ZjhmNTY0OGYzMjlmNGE0MDU4ZDhjNDM3NzQxN2FjMjNhZTIxMTI5MGMwY2RjOGY0YiBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMjItMDQtMDRUMjM6Mzk6NTMuNTU1NDIyNTM2WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgQ01EIFtcIi9iaW4vc2hcIl0iLCJlbXB0eV9sYXllciI6dHJ1ZX1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6ZDgwZTAyMDgzNDVhNWMwZTBlNTU3NWYxMWYzNWQ5OWExNzliY2RmZWM5YTA3NTgyOGU3NzQxNDVjMDI0NWViNiJdfSwidmFyaWFudCI6InY4In0=\",\n   \"repoDigests\": [\n    \"alpine@sha256:c75ac27b49326926b803b9ed43bf088bc220d22556de1bc5f72d742c91398f69\"\n   ],\n   \"architecture\": \"arm64\",\n   \"os\": \"linux\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"Alpine Linux v3.12\",\n  \"name\": \"Alpine Linux\",\n  \"id\": \"alpine\",\n  \"versionID\": \"3.12.12\",\n  \"homeURL\": \"https://alpinelinux.org/\",\n  \"bugReportURL\": \"https://bugs.alpinelinux.org/\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"0.101.1\",\n  \"configuration\": {\n   \"catalogers\": {\n    \"requested\": {\n     \"default\": [\n      \"image\"\n     ]\n    },\n    \"used\": [\n     \"alpm-db-cataloger\",\n     \"apk-db-cataloger\",\n     \"binary-cataloger\",\n     \"cargo-auditable-binary-cataloger\",\n     \"conan-info-cataloger\",\n     \"dotnet-portable-executable-cataloger\",\n     \"dpkg-db-cataloger\",\n     \"go-module-binary-cataloger\",\n     \"graalvm-native-image-cataloger\",\n     \"java-archive-cataloger\",\n     \"javascript-package-cataloger\",\n     \"nix-store-cataloger\",\n     \"php-composer-installed-cataloger\",\n     \"portage-cataloger\",\n     \"python-installed-package-cataloger\",\n     \"r-package-cataloger\",\n     \"rpm-db-cataloger\",\n     \"ruby-installed-gemspec-cataloger\",\n     \"sbom-cataloger\"\n    ]\n   },\n   \"data-generation\": {\n    \"generate-cpes\": true\n   },\n   \"files\": {\n    \"content\": {\n     \"globs\": null,\n     \"skip-files-above-size\": 0\n    },\n    \"hashers\": [\n     \"sha-1\",\n     \"sha-256\"\n    ],\n    \"selection\": \"owned-by-package\"\n   },\n   \"packages\": {\n    \"binary\": [\n     \"python-binary\",\n     \"python-binary-lib\",\n     \"pypy-binary-lib\",\n     \"go-binary\",\n     \"julia-binary\",\n     \"helm\",\n     \"redis-binary\",\n     \"java-binary-openjdk\",\n     \"java-binary-ibm\",\n     \"java-binary-oracle\",\n     \"nodejs-binary\",\n     \"go-binary-hint\",\n     \"busybox-binary\",\n     \"haproxy-binary\",\n     \"perl-binary\",\n     \"php-cli-binary\",\n     \"php-fpm-binary\",\n     \"php-apache-binary\",\n     \"php-composer-binary\",\n     \"httpd-binary\",\n     \"memcached-binary\",\n     \"traefik-binary\",\n     \"postgresql-binary\",\n     \"mysql-binary\",\n     \"mysql-binary\",\n     \"mysql-binary\",\n     \"xtrabackup-binary\",\n     \"mariadb-binary\",\n     \"rust-standard-library-linux\",\n     \"rust-standard-library-macos\",\n     \"ruby-binary\",\n     \"erlang-binary\",\n     \"consul-binary\",\n     \"nginx-binary\",\n     \"bash-binary\",\n     \"openssl-binary\",\n     \"gcc-binary\",\n     \"wordpress-cli-binary\"\n    ],\n    \"golang\": {\n     \"local-mod-cache-dir\": \"/Users/wagoodman/go/pkg/mod\",\n     \"proxies\": [\n      \"https://proxy.golang.org\",\n      \"direct\"\n     ],\n     \"search-local-mod-cache-licenses\": false,\n     \"search-remote-licenses\": false\n    },\n    \"java-archive\": {\n     \"include-indexed-archives\": true,\n     \"include-unindexed-archives\": false,\n     \"maven-base-url\": \"https://repo1.maven.org/maven2\",\n     \"max-parent-recursive-depth\": 5,\n     \"use-network\": false\n    },\n    \"javascript\": {\n     \"npm-base-url\": \"https://registry.npmjs.org\",\n     \"search-remote-licenses\": false\n    },\n    \"linux-kernel\": {\n     \"catalog-modules\": true\n    },\n    \"python\": {\n     \"guess-unpinned-requirements\": false\n    }\n   },\n   \"relationships\": {\n    \"exclude-binary-packages-with-file-ownership-overlap\": true,\n    \"package-file-ownership\": true,\n    \"package-file-ownership-overlap\": true\n   },\n   \"search\": {\n    \"scope\": \"squashed\"\n   }\n  }\n },\n \"schema\": {\n  \"version\": \"13.0.0\",\n  \"url\": \"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-13.0.0.json\"\n }\n}\n"
  },
  {
    "path": "examples/decode_sbom/main.go",
    "content": "package main\n\nimport (\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/format\"\n)\n\n//go:embed alpine.syft.json\nvar sbomContents string\n\nfunc main() {\n\t// decode the SBOM\n\tfmt.Println(\"decoding SBOM...\")\n\tsbom, sbomFormat, formatVersion, err := format.Decode(sbomReader())\n\tif err != nil {\n\t\tfmt.Printf(\"failed to decode sbom: %+v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\n\tfmt.Printf(\"SBOM format: %s@%s\\n\", sbomFormat, formatVersion)\n\n\t// print packages found...\n\tfmt.Println(\"\\nPackages found:\")\n\tfor _, pkg := range sbom.Artifacts.Packages.Sorted() {\n\t\tfmt.Printf(\"   %s : %s@%s (%s)\\n\", pkg.ID(), pkg.Name, pkg.Version, pkg.Type)\n\t}\n\n\t// print files found...\n\tfmt.Println(\"\\nFiles found:\")\n\tfor c, f := range sbom.Artifacts.FileMetadata {\n\t\tfmt.Printf(\"   %s : %s\\n\", c.ID(), f.Path)\n\t}\n}\n\nfunc sbomReader() io.Reader {\n\t// read file from sys args (or use the default)\n\tvar reader io.Reader\n\tif len(os.Args) < 2 {\n\t\treader = strings.NewReader(sbomContents)\n\t} else {\n\t\tvar err error\n\t\t// suppress gosec error: reads from local file system by design\n\t\treader, err = os.Open(os.Args[1]) //nolint:gosec\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\treturn reader\n}\n"
  },
  {
    "path": "examples/select_catalogers/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"os\"\n\n\t_ \"modernc.org/sqlite\" // required for rpmdb and other features\n\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst defaultImage = \"alpine:3.19\"\n\nfunc main() {\n\t// automagically get a source.Source for arbitrary string input\n\tsrc := getSource(imageReference())\n\tdefer src.Close()\n\n\t// catalog the given source and return a SBOM\n\t// let's explicitly use catalogers that are:\n\t// - for installed software\n\t// - used in the directory scan\n\tsbom := getSBOM(src, pkgcataloging.InstalledTag, pkgcataloging.DirectoryTag)\n\n\t// Show a basic catalogers and input configuration used\n\tenc := json.NewEncoder(os.Stdout)\n\tenc.SetIndent(\"\", \"  \")\n\tif err := enc.Encode(sbom.Descriptor.Configuration); err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc imageReference() string {\n\t// read an image string reference from the command line or use a default\n\tif len(os.Args) > 1 {\n\t\treturn os.Args[1]\n\t}\n\treturn defaultImage\n}\n\nfunc getSource(input string) source.Source {\n\tsrc, err := syft.GetSource(context.Background(), input, nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn src\n}\n\nfunc getSBOM(src source.Source, defaultTags ...string) sbom.SBOM {\n\tcfg := syft.DefaultCreateSBOMConfig().\n\t\tWithCatalogerSelection(\n\t\t\t// here you can sub-select, add, remove catalogers from the default selection...\n\t\t\t// or replace the default selection entirely!\n\t\t\tcataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(defaultTags...),\n\t\t)\n\n\ts, err := syft.CreateSBOM(context.Background(), src, cfg)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn *s\n}\n"
  },
  {
    "path": "examples/source_detection/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"os\"\n\n\t\"github.com/anchore/go-collections\"\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\n/*\n This example demonstrates how to create a source object from a generic string input.\n\n Example inputs:\n    alpine:3.19                              pull an image from the docker daemon, podman, or the registry (based on what's available)\n    ./my.tar                                 interpret a local archive as an OCI archive, docker save archive, or raw file from disk to catalog\n    docker:yourrepo/yourimage:tag            explicitly use the Docker daemon\n    podman:yourrepo/yourimage:tag            explicitly use the Podman daemon\n    registry:yourrepo/yourimage:tag          pull image directly from a registry (no container runtime required)\n    docker-archive:path/to/yourimage.tar     use a tarball from disk for archives created from \"docker save\"\n    oci-archive:path/to/yourimage.tar        use a tarball from disk for OCI archives (from Skopeo or otherwise)\n    oci-dir:path/to/yourimage                read directly from a path on disk for OCI layout directories (from Skopeo or otherwise)\n    singularity:path/to/yourimage.sif        read directly from a Singularity Image Format (SIF) container on disk\n    dir:path/to/yourproject                  read directly from a path on disk (any directory)\n    file:path/to/yourproject/file            read directly from a path on disk (any single file)\n\n*/\n\nconst defaultImage = \"alpine:3.19\"\n\nfunc main() {\n\tuserInput := imageReference()\n\n\t// parse the scheme against the known set of schemes\n\tschemeSource, newUserInput := stereoscope.ExtractSchemeSource(userInput, allSourceTags()...)\n\n\t// set up the GetSourceConfig\n\tgetSourceCfg := syft.DefaultGetSourceConfig()\n\tif schemeSource != \"\" {\n\t\tgetSourceCfg = getSourceCfg.WithSources(schemeSource)\n\t\tuserInput = newUserInput\n\t}\n\tsrc, err := syft.GetSource(context.Background(), userInput, getSourceCfg)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Show a basic description of the source to the screen\n\tenc := json.NewEncoder(os.Stdout)\n\tenc.SetIndent(\"\", \"  \")\n\tif err := enc.Encode(src.Describe()); err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc imageReference() string {\n\t// read an image string reference from the command line or use a default\n\tif len(os.Args) > 1 {\n\t\treturn os.Args[1]\n\t}\n\treturn defaultImage\n}\n\nfunc allSourceTags() []string {\n\treturn collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All(\"\", nil)...).Tags()\n}\n"
  },
  {
    "path": "examples/source_from_image/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"os\"\n\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/stereoscope/pkg/image/oci\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\n/*\n This shows how to create a source from an image reference. This is useful when you are programmatically always\n expecting to catalog a container image and always from the same source (e.g. docker daemon, podman, registry, etc).\n*/\n\nconst defaultImage = \"alpine:3.19\"\n\nfunc main() {\n\t// using oci.Registry causes the lookup to always use the registry, there are several other \"Source\" options here\n\timg, err := stereoscope.GetImageFromSource(context.Background(), imageReference(), oci.Registry, stereoscope.WithPlatform(\"linux/amd64\"))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: imageReference(),\n\t})\n\n\t// Show a basic description of the source to the screen\n\tenc := json.NewEncoder(os.Stdout)\n\tenc.SetIndent(\"\", \"  \")\n\tif err := enc.Encode(src.Describe()); err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc imageReference() string {\n\t// read an image string reference from the command line or use a default\n\tif len(os.Args) > 1 {\n\t\treturn os.Args[1]\n\t}\n\treturn defaultImage\n}\n"
  },
  {
    "path": "examples/source_from_registry/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"os\"\n\n\t_ \"modernc.org/sqlite\" // required for rpmdb and other features\n\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n)\n\n// This example demonstrates how to create an SBOM, pulling only from \"registry\", with error handling omitted\nfunc main() {\n\timage := \"alpine:3.19\"\n\n\tsrc, _ := syft.GetSource(context.Background(), image, syft.DefaultGetSourceConfig().WithSources(\"registry\"))\n\tdefer src.Close()\n\n\tsbom, _ := syft.CreateSBOM(context.Background(), src, syft.DefaultCreateSBOMConfig())\n\n\t_ = syftjson.NewFormatEncoder().Encode(os.Stdout, *sbom)\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.25.8\n\nrequire (\n\tgithub.com/BurntSushi/toml v1.6.0\n\tgithub.com/CycloneDX/cyclonedx-go v0.10.0\n\tgithub.com/Masterminds/semver/v3 v3.4.0\n\tgithub.com/Masterminds/sprig/v3 v3.3.0\n\tgithub.com/OneOfOne/xxhash v1.2.8\n\tgithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d\n\tgithub.com/adrg/xdg v0.5.3\n\tgithub.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9\n\tgithub.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716\n\tgithub.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2\n\tgithub.com/anchore/go-collections v0.0.0-20251016125210-a3c352120e8c\n\tgithub.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d\n\tgithub.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722\n\tgithub.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb\n\tgithub.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec\n\tgithub.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6\n\tgithub.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b\n\tgithub.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115\n\tgithub.com/anchore/stereoscope v0.1.22\n\tgithub.com/aquasecurity/go-pep440-version v0.0.1\n\tgithub.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef\n\tgithub.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb\n\tgithub.com/bmatcuk/doublestar/v4 v4.10.0\n\tgithub.com/charmbracelet/bubbles v1.0.0\n\tgithub.com/charmbracelet/bubbletea v1.3.10\n\tgithub.com/charmbracelet/lipgloss v1.1.0\n\tgithub.com/dave/jennifer v1.7.1\n\tgithub.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da\n\tgithub.com/diskfs/go-diskfs v1.7.0\n\tgithub.com/distribution/reference v0.6.0\n\tgithub.com/dustin/go-humanize v1.0.1\n\tgithub.com/elliotchance/phpserialize v1.4.0\n\tgithub.com/facebookincubator/nvdtools v0.1.5\n\tgithub.com/github/go-spdx/v2 v2.4.0\n\tgithub.com/gkampitakis/go-snaps v0.5.20\n\tgithub.com/go-git/go-billy/v5 v5.8.0\n\tgithub.com/go-git/go-git/v5 v5.17.0\n\tgithub.com/go-test/deep v1.1.1\n\tgithub.com/go-viper/mapstructure/v2 v2.5.0\n\tgithub.com/gohugoio/hashstructure v0.6.0\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/go-containerregistry v0.21.2\n\tgithub.com/google/licensecheck v0.3.1\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gookit/color v1.6.0\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2\n\tgithub.com/hashicorp/go-getter v1.8.5\n\tgithub.com/hashicorp/go-multierror v1.1.1\n\tgithub.com/hashicorp/hcl/v2 v2.24.0\n\tgithub.com/iancoleman/strcase v0.3.0\n\tgithub.com/invopop/jsonschema v0.13.0\n\tgithub.com/jedib0t/go-pretty/v6 v6.7.8\n\tgithub.com/jinzhu/copier v0.4.0\n\tgithub.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953\n\tgithub.com/magiconair/properties v1.8.10\n\tgithub.com/mholt/archives v0.1.5\n\tgithub.com/moby/sys/mountinfo v0.7.2\n\tgithub.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1\n\tgithub.com/olekukonko/tablewriter v1.1.4\n\tgithub.com/opencontainers/go-digest v1.0.0\n\tgithub.com/pelletier/go-toml v1.9.5\n\tgithub.com/quasilyte/go-ruleguard/dsl v0.3.23\n\tgithub.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c\n\tgithub.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d\n\tgithub.com/sanity-io/litter v1.5.8\n\tgithub.com/sassoftware/go-rpmutils v0.4.0\n\t// pinned to pull in 386 arch fix: https://github.com/scylladb/go-set/commit/cc7b2070d91ebf40d233207b633e28f5bd8f03a5\n\tgithub.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e\n\tgithub.com/sergi/go-diff v1.4.0\n\tgithub.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb\n\tgithub.com/spdx/tools-golang v0.5.7\n\tgithub.com/spf13/afero v1.15.0\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/vbatts/go-mtree v0.7.0\n\tgithub.com/vifraa/gopom v1.0.0\n\tgithub.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651\n\tgithub.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0\n\tgithub.com/xeipuuv/gojsonschema v1.2.0\n\tgithub.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1\n\tgo.uber.org/goleak v1.3.0\n\tgo.yaml.in/yaml/v3 v3.0.4\n\tgolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546\n\tgolang.org/x/mod v0.34.0\n\tgolang.org/x/net v0.52.0\n\tmodernc.org/sqlite v1.46.1\n)\n\nrequire (\n\tcloud.google.com/go v0.123.0 // indirect\n\tcloud.google.com/go/auth v0.18.1 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tcloud.google.com/go/iam v1.5.3 // indirect\n\tcloud.google.com/go/storage v1.60.0 // indirect\n\tdario.cat/mergo v1.0.2 // indirect\n\tgithub.com/DataDog/zstd v1.5.5 // indirect\n\tgithub.com/Masterminds/goutils v1.1.1 // indirect\n\tgithub.com/Microsoft/go-winio v0.6.2 // indirect\n\tgithub.com/Microsoft/hcsshim v0.14.0-rc.1 // indirect\n\tgithub.com/ProtonMail/go-crypto v1.4.0 // indirect\n\tgithub.com/STARRY-S/zip v0.2.3 // indirect\n\tgithub.com/agext/levenshtein v1.2.1 // indirect; indirectt\n\tgithub.com/anchore/go-lzo v0.1.0 // indirect\n\tgithub.com/anchore/go-struct-converter v0.1.0 // indirect\n\tgithub.com/andybalholm/brotli v1.2.0 // indirect\n\tgithub.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect\n\tgithub.com/aquasecurity/go-version v0.0.1 // indirect\n\tgithub.com/atotto/clipboard v0.1.4 // indirect\n\tgithub.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect\n\tgithub.com/becheran/wildmatch-go v1.0.0 // indirect\n\tgithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect\n\tgithub.com/bodgit/plumbing v1.3.0 // indirect\n\tgithub.com/bodgit/sevenzip v1.6.1 // indirect\n\tgithub.com/bodgit/windows v1.0.1 // indirect\n\tgithub.com/charmbracelet/colorprofile v0.4.1 // indirect\n\tgithub.com/charmbracelet/harmonica v0.2.0 // indirect\n\tgithub.com/charmbracelet/x/ansi v0.11.6 // indirect\n\tgithub.com/charmbracelet/x/cellbuf v0.0.15 // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/cloudflare/circl v1.6.3 // indirect\n\tgithub.com/containerd/containerd/api v1.10.0 // indirect\n\tgithub.com/containerd/continuity v0.4.5 // indirect\n\tgithub.com/containerd/errdefs v1.0.0 // indirect\n\tgithub.com/containerd/errdefs/pkg v0.3.0 // indirect\n\tgithub.com/containerd/fifo v1.1.0 // indirect\n\tgithub.com/containerd/log v0.1.0 // indirect\n\tgithub.com/containerd/platforms v1.0.0-rc.2 // indirect\n\tgithub.com/containerd/stargz-snapshotter/estargz v0.18.2 // indirect\n\tgithub.com/containerd/ttrpc v1.2.7 // indirect\n\tgithub.com/containerd/typeurl/v2 v2.2.3 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.6.0 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/docker/cli v29.3.0+incompatible // indirect\n\tgithub.com/docker/distribution v2.8.3+incompatible // indirect\n\tgithub.com/docker/docker-credential-helpers v0.9.5 // indirect\n\tgithub.com/docker/go-connections v0.6.0 // indirect\n\tgithub.com/docker/go-units v0.5.0 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect\n\tgithub.com/emirpasic/gods v1.18.1 // indirect\n\tgithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect\n\tgithub.com/fatih/color v1.18.0 // indirect\n\tgithub.com/felixge/fgprof v0.9.5 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/fsnotify/fsnotify v1.9.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.13 // indirect\n\tgithub.com/gkampitakis/ciinfo v0.3.2 // indirect\n\tgithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/go-restruct/restruct v1.2.0-alpha // indirect\n\tgithub.com/goccy/go-yaml v1.19.2\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect\n\tgithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.17.0 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-version v1.8.0 // indirect\n\tgithub.com/hashicorp/golang-lru/v2 v2.0.7 // indirect\n\tgithub.com/huandu/xstrings v1.5.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect\n\tgithub.com/kevinburke/ssh_config v1.2.0 // indirect\n\tgithub.com/klauspost/compress v1.18.4 // indirect\n\tgithub.com/klauspost/pgzip v1.2.6 // indirect\n\tgithub.com/kr/pretty v0.3.1 // indirect\n\tgithub.com/kr/text v0.2.0 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.3.0 // indirect\n\tgithub.com/maruel/natural v1.1.1 // indirect\n\tgithub.com/mattn/go-colorable v0.1.14 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.19 // indirect\n\tgithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect\n\tgithub.com/mikelolasagasti/xz v1.0.1 // indirect\n\tgithub.com/minio/minlz v1.0.1 // indirect\n\tgithub.com/mitchellh/copystructure v1.2.0 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/go-wordwrap v1.0.1 // indirect\n\tgithub.com/mitchellh/reflectwalk v1.0.2 // indirect\n\tgithub.com/moby/docker-image-spec v1.3.1 // indirect\n\tgithub.com/moby/locker v1.0.1 // indirect\n\tgithub.com/moby/sys/sequential v0.6.0 // indirect\n\tgithub.com/moby/sys/signal v0.7.1 // indirect\n\tgithub.com/moby/sys/user v0.4.0 // indirect\n\tgithub.com/moby/sys/userns v0.1.0 // indirect\n\tgithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/muesli/termenv v0.16.0 // indirect\n\tgithub.com/ncruces/go-strftime v1.0.0 // indirect\n\tgithub.com/opencontainers/image-spec v1.1.1 // indirect\n\tgithub.com/opencontainers/runtime-spec v1.3.0 // indirect\n\tgithub.com/opencontainers/selinux v1.13.1 // indirect\n\tgithub.com/pborman/indent v1.2.1 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.2.4 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.22 // indirect\n\tgithub.com/pjbgf/sha1cd v0.3.2 // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/pkg/profile v1.7.0 // indirect\n\tgithub.com/pkg/xattr v0.4.9 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/rogpeppe/go-internal v1.14.1 // indirect\n\tgithub.com/sagikazarmark/locafero v0.7.0 // indirect\n\tgithub.com/sahilm/fuzzy v0.1.1 // indirect\n\tgithub.com/shopspring/decimal v1.4.0 // indirect\n\tgithub.com/sirupsen/logrus v1.9.4 // indirect\n\tgithub.com/skeema/knownhosts v1.3.1 // indirect\n\tgithub.com/sorairolake/lzip-go v0.3.8 // indirect\n\tgithub.com/sourcegraph/conc v0.3.0 // indirect\n\tgithub.com/spf13/cast v1.7.1 // indirect\n\tgithub.com/spf13/pflag v1.0.10 // indirect\n\tgithub.com/spf13/viper v1.20.0 // indirect\n\tgithub.com/stretchr/objx v0.5.2 // indirect\n\tgithub.com/subosito/gotenv v1.6.0 // indirect\n\tgithub.com/sylabs/sif/v2 v2.24.0 // indirect\n\tgithub.com/sylabs/squashfs v1.0.6 // indirect\n\tgithub.com/therootcompany/xz v1.0.1 // indirect\n\tgithub.com/tidwall/gjson v1.18.0 // indirect\n\tgithub.com/tidwall/match v1.1.1 // indirect\n\tgithub.com/tidwall/pretty v1.2.1 // indirect\n\tgithub.com/tidwall/sjson v1.2.5 // indirect\n\tgithub.com/ulikunitz/xz v0.5.15\n\tgithub.com/vbatts/tar-split v0.12.2 // indirect\n\tgithub.com/xanzy/ssh-agent v0.3.3 // indirect\n\tgithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect\n\tgithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgithub.com/zclconf/go-cty v1.16.3 // indirect\n\tgo.opencensus.io v0.24.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect\n\tgo.opentelemetry.io/otel v1.40.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.40.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.40.0 // indirect\n\tgo.uber.org/atomic v1.9.0 // indirect\n\tgo.uber.org/multierr v1.9.0 // indirect\n\tgo4.org v0.0.0-20230225012048-214862532bf5 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/term v0.41.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0\n\tgolang.org/x/tools v0.43.0\n\tgolang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect\n\tgoogle.golang.org/api v0.267.0 // indirect\n\tgoogle.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n\tgopkg.in/warnings.v0 v0.1.2 // indirect\n\tgopkg.in/yaml.v3 v3.0.1\n\tmodernc.org/libc v1.67.6 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n)\n\nrequire (\n\tgithub.com/acobaugh/osrelease v0.1.0\n\tgithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be\n\tgithub.com/cespare/xxhash/v2 v2.3.0\n\tgithub.com/gpustack/gguf-parser-go v0.24.0\n\tgithub.com/wk8/go-ordered-map/v2 v2.1.8\n)\n\nrequire (\n\tcel.dev/expr v0.25.1 // indirect\n\tcloud.google.com/go/monitoring v1.24.3 // indirect\n\tcyphar.com/go-pathrs v0.2.1 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.2 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.10 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.10 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.96.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.11 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.7 // indirect\n\tgithub.com/aws/smithy-go v1.24.1 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/buger/jsonparser v1.1.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.10.0 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.6.0 // indirect\n\tgithub.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect\n\tgithub.com/containerd/cgroups/v3 v3.1.2 // indirect\n\tgithub.com/containerd/containerd/v2 v2.2.1 // indirect\n\tgithub.com/containerd/plugin v1.0.0 // indirect\n\tgithub.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect\n\tgithub.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.70 // indirect\n\tgithub.com/henvic/httpretty v0.1.4 // indirect\n\tgithub.com/json-iterator/go v1.1.12 // indirect\n\tgithub.com/mailru/easyjson v0.7.7 // indirect\n\tgithub.com/moby/moby/api v1.54.0 // indirect\n\tgithub.com/moby/moby/client v0.3.0 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect\n\tgithub.com/nwaples/rardecode/v2 v2.2.0 // indirect\n\tgithub.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect\n\tgithub.com/olekukonko/errors v1.2.0 // indirect\n\tgithub.com/olekukonko/ll v0.1.6 // indirect\n\tgithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect\n\tgithub.com/smallnest/ringbuffer v0.0.0-20241116012123-461381446e3d // indirect\n\tgithub.com/spiffe/go-spiffe/v2 v2.6.0 // indirect\n\tgo.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.40.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect\n\tgonum.org/v1/gonum v0.16.0 // indirect\n)\n\nretract (\n\tv1.25.0 // published with a replace directive (confusing for API users)\n\tv0.53.2\n\tv0.53.1 // published accidentally with incorrect license in depdencies\n)\n"
  },
  {
    "path": "go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=\ncloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=\ncloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=\ncloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=\ncloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=\ncloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=\ncloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=\ncloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=\ncloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.1 h1:IwTEx92GFUo2pJ6Qea0EU3zYvKnTAeRCODxfA/G5UWs=\ncloud.google.com/go/auth v0.18.1/go.mod h1:GfTYoS9G3CWpRA3Va9doKN9mjPGRS+v41jmZAhBzbrA=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/logging v1.13.1 h1:O7LvmO0kGLaHY/gq8cV7T0dyp6zJhYAOtZPX4TF3QtY=\ncloud.google.com/go/logging v1.13.1/go.mod h1:XAQkfkMBxQRjQek96WLPNze7vsOmay9H5PqfsNYDqvw=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.60.0 h1:oBfZrSOCimggVNz9Y/bXY35uUcts7OViubeddTTVzQ8=\ncloud.google.com/go/storage v1.60.0/go.mod h1:q+5196hXfejkctrnx+VYU8RKQr/L3c0cBIlrjmiAKE0=\ncloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=\ncloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=\ncyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8=\ncyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc=\ndario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=\ndario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=\ngithub.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=\ngithub.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=\ngithub.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/CycloneDX/cyclonedx-go v0.10.0 h1:7xyklU7YD+CUyGzSFIARG18NYLsKVn4QFg04qSsu+7Y=\ngithub.com/CycloneDX/cyclonedx-go v0.10.0/go.mod h1:vUvbCXQsEm48OI6oOlanxstwNByXjCZ2wuleUlwGEO8=\ngithub.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=\ngithub.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=\ngithub.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=\ngithub.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=\ngithub.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=\ngithub.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=\ngithub.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs=\ngithub.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=\ngithub.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=\ngithub.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=\ngithub.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=\ngithub.com/Microsoft/hcsshim v0.14.0-rc.1 h1:qAPXKwGOkVn8LlqgBN8GS0bxZ83hOJpcjxzmlQKxKsQ=\ngithub.com/Microsoft/hcsshim v0.14.0-rc.1/go.mod h1:hTKFGbnDtQb1wHiOWv4v0eN+7boSWAHyK/tNAaYZL0c=\ngithub.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=\ngithub.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=\ngithub.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=\ngithub.com/ProtonMail/go-crypto v1.4.0 h1:Zq/pbM3F5DFgJiMouxEdSVY44MVoQNEKp5d5QxIQceQ=\ngithub.com/ProtonMail/go-crypto v1.4.0/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo=\ngithub.com/STARRY-S/zip v0.2.3 h1:luE4dMvRPDOWQdeDdUxUoZkzUIpTccdKdhHHsQJ1fm4=\ngithub.com/STARRY-S/zip v0.2.3/go.mod h1:lqJ9JdeRipyOQJrYSOtpNAiaesFO6zVDsE8GIGFaoSk=\ngithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=\ngithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=\ngithub.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE=\ngithub.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY=\ngithub.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=\ngithub.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=\ngithub.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8=\ngithub.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9 h1:p0ZIe0htYOX284Y4axJaGBvXHU0VCCzLN5Wf5XbKStU=\ngithub.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9/go.mod h1:3ZsFB9tzW3vl4gEiUeuSOMDnwroWxIxJelOOHUp8dSw=\ngithub.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716 h1:2sIdYJlQESEnyk3Y0WD2vXWW5eD2iMz9Ev8fj1Z8LNA=\ngithub.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716/go.mod h1:Utb9i4kwiCWvqAIxZaJeMIXFO9uOgQXlvH2BfbfO/zI=\ngithub.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2 h1:GC2QaO0YsmjpsZ4rtVKv9DnproIxqqn+qkskpc+i8MA=\ngithub.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2/go.mod h1:XUbUECwVKuD3qYRUj+QZIOHjyyXua2gFmVjKA40iHXA=\ngithub.com/anchore/go-collections v0.0.0-20251016125210-a3c352120e8c h1:eoJXyC0n7DZ4YvySG/ETdYkTar2Due7eH+UmLK6FbrA=\ngithub.com/anchore/go-collections v0.0.0-20251016125210-a3c352120e8c/go.mod h1:1aiktV46ATCkuVg0O573ZrH56BUawTECPETbZyBcqT8=\ngithub.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d h1:gT69osH9AsdpOfqxbRwtxcNnSZ1zg4aKy2BevO3ZBdc=\ngithub.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d/go.mod h1:PhSnuFYknwPZkOWKB1jXBNToChBA+l0FjwOxtViIc50=\ngithub.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722 h1:2SqmFgE7h+Ql4VyBzhjLkRF/3gDrcpUBj8LjvvO6OOM=\ngithub.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722/go.mod h1:oFuE8YuTCM+spgMXhePGzk3asS94yO9biUfDzVTFqNw=\ngithub.com/anchore/go-lzo v0.1.0 h1:NgAacnzqPeGH49Ky19QKLBZEuFRqtTG9cdaucc3Vncs=\ngithub.com/anchore/go-lzo v0.1.0/go.mod h1:3kLx0bve2oN1iDwgM1U5zGku1Tfbdb0No5qp1eL1fIk=\ngithub.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb h1:iDMnx6LIjtjZ46C0akqveX83WFzhpTD3eqOthawb5vU=\ngithub.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb/go.mod h1:DmTY2Mfcv38hsHbG78xMiTDdxFtkHpgYNVDPsF2TgHk=\ngithub.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec h1:SjjPMOXTzpuU1ZME4XeoHyek+dry3/C7I8gzaCo02eg=\ngithub.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec/go.mod h1:eQVa6QFGzKy0qMcnW2pez0XBczvgwSjw9vA23qifEyU=\ngithub.com/anchore/go-struct-converter v0.1.0 h1:2rDRssAl6mgKBSLNiVCMADgZRhoqtw9dedlWa0OhD30=\ngithub.com/anchore/go-struct-converter v0.1.0/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA=\ngithub.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6 h1:Ha+LSCVuXYSYGi7wIkJK6G8g6jI3LH7y6LbyEVyp4Io=\ngithub.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6/go.mod h1:+9oM3XUy8iea/vWj9FhZ9bQGUBN8JpPxxJm5Wbcx9XM=\ngithub.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods=\ngithub.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=\ngithub.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115 h1:ZyRCmiEjnoGJZ1+Ah0ZZ/mKKqNhGcUZBl0s7PTTDzvY=\ngithub.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115/go.mod h1:KoYIv7tdP5+CC9VGkeZV4/vGCKsY55VvoG+5dadg4YI=\ngithub.com/anchore/stereoscope v0.1.22 h1:L807G/kk0WZzOCGuRGF7knxMKzwW2PGdbPVRystryd8=\ngithub.com/anchore/stereoscope v0.1.22/go.mod h1:FikPtAb/WnbqwgLHAvQA9O+fWez0K4pbjxzghz++iy4=\ngithub.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=\ngithub.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=\ngithub.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=\ngithub.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=\ngithub.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=\ngithub.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=\ngithub.com/aquasecurity/go-pep440-version v0.0.1 h1:8VKKQtH2aV61+0hovZS3T//rUF+6GDn18paFTVS0h0M=\ngithub.com/aquasecurity/go-pep440-version v0.0.1/go.mod h1:3naPe+Bp6wi3n4l5iBFCZgS0JG8vY6FT0H4NGhFJ+i4=\ngithub.com/aquasecurity/go-version v0.0.1 h1:4cNl516agK0TCn5F7mmYN+xVs1E3S45LkgZk3cbaW2E=\ngithub.com/aquasecurity/go-version v0.0.1/go.mod h1:s1UU6/v2hctXcOa3OLwfj5d9yoXHa3ahf+ipSwEvGT0=\ngithub.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=\ngithub.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=\ngithub.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=\ngithub.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=\ngithub.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=\ngithub.com/aws/aws-sdk-go-v2 v1.41.2 h1:LuT2rzqNQsauaGkPK/7813XxcZ3o3yePY0Iy891T2ls=\ngithub.com/aws/aws-sdk-go-v2 v1.41.2/go.mod h1:IvvlAZQXvTXznUPfRVfryiG1fbzE2NGK6m9u39YQ+S4=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 h1:489krEF9xIGkOaaX3CE/Be2uWjiXrkCH6gUX+bZA/BU=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4/go.mod h1:IOAPF6oT9KCsceNTvvYMNHy0+kMF8akOjeDvPENWxp4=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.10 h1:9DMthfO6XWZYLfzZglAgW5Fyou2nRI5CuV44sTedKBI=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.10/go.mod h1:2rUIOnA2JaiqYmSKYmRJlcMWy6qTj1vuRFscppSBMcw=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.10 h1:EEhmEUFCE1Yhl7vDhNOI5OCL/iKMdkkYFTRpZXNw7m8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.10/go.mod h1:RnnlFCAlxQCkN2Q379B67USkBMu1PipEEiibzYN5UTE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 h1:Ii4s+Sq3yDfaMLpjrJsqD6SmG/Wq/P5L/hw2qa78UAY=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18/go.mod h1:6x81qnY++ovptLE6nWQeWrpXxbnlIex+4H4eYYGcqfc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18 h1:F43zk1vemYIqPAwhjTjYIz0irU2EY7sOb/F5eJ3HuyM=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.18/go.mod h1:w1jdlZXrGKaJcNoL+Nnrj+k5wlpGXqnNrKoP22HvAug=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18 h1:xCeWVjj0ki0l3nruoyP2slHsGArMxeiiaoPN5QZH6YQ=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.18/go.mod h1:r/eLGuGCBw6l36ZRWiw6PaZwPXb6YOj+i/7MizNl5/k=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 h1:JqcdRG//czea7Ppjb+g/n4o8i/R50aTBHkA7vu0lK+k=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17/go.mod h1:CO+WeGmIdj/MlPel2KwID9Gt7CNq4M65HUfBW97liM0=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5 h1:CeY9LUdur+Dxoeldqoun6y4WtJ3RQtzk0JMP2gfUay0=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.5/go.mod h1:AZLZf2fMaahW5s/wMRciu1sYbdsikT/UHwbUjOdEVTc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 h1:Z5EiPIzXKewUQK0QTMkutjiaPVeVYXX7KIqhXu/0fXs=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8/go.mod h1:FsTpJtvC4U1fyDXk7c71XoDv3HlRm8V3NiYLeYLh5YE=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18 h1:LTRCYFlnnKFlKsyIQxKhJuDuA3ZkrDQMRYm6rXiHlLY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.18/go.mod h1:XhwkgGG6bHSd00nO/mexWTcTjgd6PjuvWQMqSn2UaEk=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 h1:bGeHBsGZx0Dvu/eJC0Lh9adJa3M1xREcndxLNZlve2U=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17/go.mod h1:dcW24lbU0CzHusTE8LLHhRLI42ejmINN8Lcr22bwh/g=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.96.0 h1:oeu8VPlOre74lBA/PMhxa5vewaMIMmILM+RraSyB8KA=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.96.0/go.mod h1:5jggDlZ2CLQhwJBiZJb4vfk4f0GxWdEDruWKEJ1xOdo=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.6 h1:MzORe+J94I+hYu2a6XmV5yC9huoTv8NRcCrUNedDypQ=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.6/go.mod h1:hXzcHLARD7GeWnifd8j9RWqtfIgxj4/cAtIVIK7hg8g=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.11 h1:7oGD8KPfBOJGXiCoRKrrrQkbvCp8N++u36hrLMPey6o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.11/go.mod h1:0DO9B5EUJQlIDif+XJRWCljZRKsAFKh3gpFz7UnDtOo=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15 h1:edCcNp9eGIUDUCrzoCu1jWAXLGFIizeqkdkKgRlJwWc=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.15/go.mod h1:lyRQKED9xWfgkYC/wmmYfv7iVIM68Z5OQ88ZdcV1QbU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.7 h1:NITQpgo9A5NrDZ57uOWj+abvXSb83BbyggcUBVksN7c=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.7/go.mod h1:sks5UWBhEuWYDPdwlnRFn1w7xWdH29Jcpe+/PJQefEs=\ngithub.com/aws/smithy-go v1.24.1 h1:VbyeNfmYkWoxMVpGUAbQumkODcYmfMRfZ8yQiH30SK0=\ngithub.com/aws/smithy-go v1.24.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=\ngithub.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=\ngithub.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=\ngithub.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY=\ngithub.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E=\ngithub.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=\ngithub.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=\ngithub.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA=\ngithub.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4=\ngithub.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=\ngithub.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=\ngithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=\ngithub.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=\ngithub.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef h1:TSFnfbbu2oAOuWbeDDTtwXWE6z+PmpgbSsMBeV7l0ww=\ngithub.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef/go.mod h1:9iglf1GG4oNRJ39bZ5AZrjgAFD2RwQbXw6Qf7Cs47wo=\ngithub.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=\ngithub.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI=\ngithub.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs=\ngithub.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=\ngithub.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=\ngithub.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=\ngithub.com/bodgit/sevenzip v1.6.1 h1:kikg2pUMYC9ljU7W9SaqHXhym5HyKm8/M/jd31fYan4=\ngithub.com/bodgit/sevenzip v1.6.1/go.mod h1:GVoYQbEVbOGT8n2pfqCIMRUaRjQ8F9oSqoBEqZh5fQ8=\ngithub.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=\ngithub.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=\ngithub.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=\ngithub.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=\ngithub.com/buger/jsonparser v1.1.2 h1:frqHqw7otoVbk5M8LlE/L7HTnIq2v9RX6EJ48i9AxJk=\ngithub.com/buger/jsonparser v1.1.2/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=\ngithub.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/charmbracelet/bubbles v1.0.0 h1:12J8/ak/uCZEMQ6KU7pcfwceyjLlWsDLAxB5fXonfvc=\ngithub.com/charmbracelet/bubbles v1.0.0/go.mod h1:9d/Zd5GdnauMI5ivUIVisuEm3ave1XwXtD1ckyV6r3E=\ngithub.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw=\ngithub.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=\ngithub.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco3ej+ngLk1kk=\ngithub.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk=\ngithub.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=\ngithub.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=\ngithub.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=\ngithub.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=\ngithub.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8=\ngithub.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ=\ngithub.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI=\ngithub.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q=\ngithub.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ=\ngithub.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=\ngithub.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=\ngithub.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=\ngithub.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=\ngithub.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs=\ngithub.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=\ngithub.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=\ngithub.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g=\ngithub.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs=\ngithub.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos=\ngithub.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g=\ngithub.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=\ngithub.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=\ngithub.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=\ngithub.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=\ngithub.com/containerd/cgroups/v3 v3.1.2 h1:OSosXMtkhI6Qove637tg1XgK4q+DhR0mX8Wi8EhrHa4=\ngithub.com/containerd/cgroups/v3 v3.1.2/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw=\ngithub.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o=\ngithub.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM=\ngithub.com/containerd/containerd/v2 v2.2.1 h1:TpyxcY4AL5A+07dxETevunVS5zxqzuq7ZqJXknM11yk=\ngithub.com/containerd/containerd/v2 v2.2.1/go.mod h1:NR70yW1iDxe84F2iFWbR9xfAN0N2F0NcjTi1OVth4nU=\ngithub.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4=\ngithub.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE=\ngithub.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=\ngithub.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=\ngithub.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=\ngithub.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=\ngithub.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY=\ngithub.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=\ngithub.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=\ngithub.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=\ngithub.com/containerd/platforms v1.0.0-rc.2 h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4=\ngithub.com/containerd/platforms v1.0.0-rc.2/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4=\ngithub.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y=\ngithub.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8=\ngithub.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw=\ngithub.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY=\ngithub.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ=\ngithub.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=\ngithub.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=\ngithub.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=\ngithub.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=\ngithub.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/cyphar/filepath-securejoin v0.6.0 h1:BtGB77njd6SVO6VztOHfPxKitJvd/VPT+OFBFMOi1Is=\ngithub.com/cyphar/filepath-securejoin v0.6.0/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc=\ngithub.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=\ngithub.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=\ngithub.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da h1:ZOjWpVsFZ06eIhnh4mkaceTiVoktdU67+M7KDHJ268M=\ngithub.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4imdLi4Asdha1Sc6feLMTfPLXh9IUYmysk=\ngithub.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=\ngithub.com/diskfs/go-diskfs v1.7.0 h1:vonWmt5CMowXwUc79jWyGrf2DIMeoOjkLlMnQYGVOs8=\ngithub.com/diskfs/go-diskfs v1.7.0/go.mod h1:LhQyXqOugWFRahYUSw47NyZJPezFzB9UELwhpszLP/k=\ngithub.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=\ngithub.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=\ngithub.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=\ngithub.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=\ngithub.com/docker/cli v29.3.0+incompatible h1:z3iWveU7h19Pqx7alZES8j+IeFQZ1lhTwb2F+V9SVvk=\ngithub.com/docker/cli v29.3.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=\ngithub.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=\ngithub.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=\ngithub.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=\ngithub.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c=\ngithub.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=\ngithub.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=\ngithub.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=\ngithub.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=\ngithub.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=\ngithub.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=\ngithub.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=\ngithub.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=\ngithub.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=\ngithub.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=\ngithub.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=\ngithub.com/elliotchance/phpserialize v1.4.0 h1:cAp/9+KSnEbUC8oYCE32n2n84BeW8HOY3HMDI8hG2OY=\ngithub.com/elliotchance/phpserialize v1.4.0/go.mod h1:gt7XX9+ETUcLXbtTKEuyrqW3lcLUAeS/AnGZ2e49TZs=\ngithub.com/elliotwutingfeng/asciiset v0.0.0-20230602022725-51bbb787efab h1:h1UgjJdAAhj+uPL68n7XASS6bU+07ZX1WJvVS2eyoeY=\ngithub.com/elliotwutingfeng/asciiset v0.0.0-20230602022725-51bbb787efab/go.mod h1:GLo/8fDswSAniFG+BFIaiSPcK610jyzgEhWYPQwuQdw=\ngithub.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=\ngithub.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=\ngithub.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=\ngithub.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=\ngithub.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g=\ngithub.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=\ngithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=\ngithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=\ngithub.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c/go.mod h1:QGzNH9ujQ2ZUr/CjDGZGWeDAVStrWNjHeEcjJL96Nuk=\ngithub.com/facebookincubator/nvdtools v0.1.5 h1:jbmDT1nd6+k+rlvKhnkgMokrCAzHoASWE5LtHbX2qFQ=\ngithub.com/facebookincubator/nvdtools v0.1.5/go.mod h1:Kh55SAWnjckS96TBSrXI99KrEKH4iB0OJby3N8GRJO4=\ngithub.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=\ngithub.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=\ngithub.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA=\ngithub.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI=\ngithub.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=\ngithub.com/felixge/fgprof v0.9.5 h1:8+vR6yu2vvSKn08urWyEuxx75NWPEvybbkBirEpsbVY=\ngithub.com/felixge/fgprof v0.9.5/go.mod h1:yKl+ERSa++RYOs32d8K6WEXCB4uXdLls4ZaZPpayhMM=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=\ngithub.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=\ngithub.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=\ngithub.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=\ngithub.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=\ngithub.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=\ngithub.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=\ngithub.com/github/go-spdx/v2 v2.4.0 h1:+4IwVwJJbm3rzvrQ6P1nI9BDMcy3la4RchRy5uehV/M=\ngithub.com/github/go-spdx/v2 v2.4.0/go.mod h1:/5rwgS0txhGtRdUZwc02bTglzg6HK3FfuEbECKlK2Sg=\ngithub.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs=\ngithub.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=\ngithub.com/gkampitakis/go-snaps v0.5.20 h1:FGKonEeQPJ12t7RQj6cTPa881fl5c8HYarMLv5vP7sg=\ngithub.com/gkampitakis/go-snaps v0.5.20/go.mod h1:gC3YqxQTPyIXvQrw/Vpt3a8VqR1MO8sVpZFWN4DGwNs=\ngithub.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4=\ngithub.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0=\ngithub.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=\ngithub.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=\ngithub.com/go-git/go-billy/v5 v5.8.0 h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0=\ngithub.com/go-git/go-billy/v5 v5.8.0/go.mod h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=\ngithub.com/go-git/go-git/v5 v5.17.0 h1:AbyI4xf+7DsjINHMu35quAh4wJygKBKBuXVjV/pxesM=\ngithub.com/go-git/go-git/v5 v5.17.0/go.mod h1:f82C4YiLx+Lhi8eHxltLeGC5uBTXSFa6PC5WW9o4SjI=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=\ngithub.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc=\ngithub.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk=\ngithub.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=\ngithub.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=\ngithub.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=\ngithub.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=\ngithub.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=\ngithub.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=\ngithub.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=\ngithub.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=\ngithub.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=\ngithub.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=\ngithub.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=\ngithub.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/gohugoio/hashstructure v0.6.0 h1:7wMB/2CfXoThFYhdWRGv3u3rUM761Cq29CxUW+NltUg=\ngithub.com/gohugoio/hashstructure v0.6.0/go.mod h1:lapVLk9XidheHG1IQ4ZSbyYrXcaILU1ZEP/+vno5rBQ=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-containerregistry v0.21.2 h1:vYaMU4nU55JJGFC9JR/s8NZcTjbE9DBBbvusTW9NeS0=\ngithub.com/google/go-containerregistry v0.21.2/go.mod h1:ctO5aCaewH4AK1AumSF5DPW+0+R+d2FmylMJdp5G7p0=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=\ngithub.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY=\ngithub.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=\ngithub.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.11 h1:vAe81Msw+8tKUxi2Dqh/NZMz7475yUvmRIkXr4oN2ao=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.11/go.mod h1:RFV7MUdlb7AgEq2v7FmMCfeSMCllAzWxFgRdusoGks8=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=\ngithub.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=\ngithub.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc=\ngithub.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY=\ngithub.com/gookit/assert v0.1.1 h1:lh3GcawXe/p+cU7ESTZ5Ui3Sm/x8JWpIis4/1aF0mY0=\ngithub.com/gookit/assert v0.1.1/go.mod h1:jS5bmIVQZTIwk42uXl4lyj4iaaxx32tqH16CFj0VX2E=\ngithub.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg=\ngithub.com/gookit/color v1.6.0 h1:JjJXBTk1ETNyqyilJhkTXJYYigHG24TM9Xa2M1xAhRA=\ngithub.com/gookit/color v1.6.0/go.mod h1:9ACFc7/1IpHGBW8RwuDm/0YEnhg3dwwXpoMsmtyHfjs=\ngithub.com/gpustack/gguf-parser-go v0.24.0 h1:tdJceXYp9e5RhE9RwVYIuUpir72Jz2D68NEtDXkKCKc=\ngithub.com/gpustack/gguf-parser-go v0.24.0/go.mod h1:y4TwTtDqFWTK+xvprOjRUh+dowgU2TKCX37vRKvGiZ0=\ngithub.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=\ngithub.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.70 h1:0HADrxxqaQkGycO1JoUUA+B4FnIkuo8d2bz/hSaTFFQ=\ngithub.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.70/go.mod h1:fm2FdDCzJdtbXF7WKAMvBb5NEPouXPHFbGNYs9ShFns=\ngithub.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=\ngithub.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-getter v1.8.5 h1:DMPV5CSw5JrNg/IK7kDZt3+l2REKXOi3oAw7uYLh2NM=\ngithub.com/hashicorp/go-getter v1.8.5/go.mod h1:WIffejwAyDSJhoVptc3UEshEMkR9O63rw34V7k43O3Q=\ngithub.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=\ngithub.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=\ngithub.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=\ngithub.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=\ngithub.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4=\ngithub.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=\ngithub.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=\ngithub.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE=\ngithub.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM=\ngithub.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=\ngithub.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=\ngithub.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=\ngithub.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=\ngithub.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=\ngithub.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=\ngithub.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=\ngithub.com/henvic/httpretty v0.1.4 h1:Jo7uwIRWVFxkqOnErcoYfH90o3ddQyVrSANeS4cxYmU=\ngithub.com/henvic/httpretty v0.1.4/go.mod h1:Dn60sQTZfbt2dYsdUSNsCljyF4AfdqnuJFDLJA1I4AM=\ngithub.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=\ngithub.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=\ngithub.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=\ngithub.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=\ngithub.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=\ngithub.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=\ngithub.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=\ngithub.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=\ngithub.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=\ngithub.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E=\ngithub.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=\ngithub.com/jedib0t/go-pretty/v6 v6.7.8 h1:BVYrDy5DPBA3Qn9ICT+PokP9cvCv1KaHv2i+Hc8sr5o=\ngithub.com/jedib0t/go-pretty/v6 v6.7.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=\ngithub.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=\ngithub.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=\ngithub.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=\ngithub.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=\ngithub.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=\ngithub.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 h1:WdAeg/imY2JFPc/9CST4bZ80nNJbiBFCAdSZCSgrS5Y=\ngithub.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953/go.mod h1:6o+UrvuZWc4UTyBhQf0LGjW9Ld7qJxLz/OqvSOWWlEc=\ngithub.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=\ngithub.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=\ngithub.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=\ngithub.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=\ngithub.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=\ngithub.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=\ngithub.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=\ngithub.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=\ngithub.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=\ngithub.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=\ngithub.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=\ngithub.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=\ngithub.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE=\ngithub.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=\ngithub.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=\ngithub.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=\ngithub.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=\ngithub.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=\ngithub.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=\ngithub.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=\ngithub.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=\ngithub.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=\ngithub.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=\ngithub.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=\ngithub.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw=\ngithub.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=\ngithub.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw=\ngithub.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=\ngithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=\ngithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=\ngithub.com/mholt/archives v0.1.5 h1:Fh2hl1j7VEhc6DZs2DLMgiBNChUux154a1G+2esNvzQ=\ngithub.com/mholt/archives v0.1.5/go.mod h1:3TPMmBLPsgszL+1As5zECTuKwKvIfj6YcwWPpeTAXF4=\ngithub.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=\ngithub.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=\ngithub.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=\ngithub.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=\ngithub.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=\ngithub.com/minio/minlz v1.0.1 h1:OUZUzXcib8diiX+JYxyRLIdomyZYzHct6EShOKtQY2A=\ngithub.com/minio/minlz v1.0.1/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=\ngithub.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=\ngithub.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=\ngithub.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=\ngithub.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=\ngithub.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=\ngithub.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=\ngithub.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=\ngithub.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=\ngithub.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=\ngithub.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=\ngithub.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=\ngithub.com/moby/moby/api v1.54.0 h1:7kbUgyiKcoBhm0UrWbdrMs7RX8dnwzURKVbZGy2GnL0=\ngithub.com/moby/moby/api v1.54.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc=\ngithub.com/moby/moby/client v0.3.0 h1:UUGL5okry+Aomj3WhGt9Aigl3ZOxZGqR7XPo+RLPlKs=\ngithub.com/moby/moby/client v0.3.0/go.mod h1:HJgFbJRvogDQjbM8fqc1MCEm4mIAGMLjXbgwoZp6jCQ=\ngithub.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=\ngithub.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=\ngithub.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=\ngithub.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=\ngithub.com/moby/sys/signal v0.7.1 h1:PrQxdvxcGijdo6UXXo/lU/TvHUWyPhj7UOpSo8tuvk0=\ngithub.com/moby/sys/signal v0.7.1/go.mod h1:Se1VGehYokAkrSQwL4tDzHvETwUZlnY7S5XtQ50mQp8=\ngithub.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs=\ngithub.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=\ngithub.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=\ngithub.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=\ngithub.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=\ngithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=\ngithub.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=\ngithub.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=\ngithub.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=\ngithub.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=\ngithub.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=\ngithub.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=\ngithub.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1 h1:kpt9ZfKcm+EDG4s40hMwE//d5SBgDjUOrITReV2u4aA=\ngithub.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1/go.mod h1:qgCw4bBKZX8qMgGeEZzGFVT3notl42dBjNqO2jut0M0=\ngithub.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249 h1:NHrXEjTNQY7P0Zfx1aMrNhpgxHmow66XQtm0aQLY0AE=\ngithub.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8=\ngithub.com/nwaples/rardecode/v2 v2.2.0 h1:4ufPGHiNe1rYJxYfehALLjup4Ls3ck42CWwjKiOqu0A=\ngithub.com/nwaples/rardecode/v2 v2.2.0/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=\ngithub.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc=\ngithub.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0=\ngithub.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo=\ngithub.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=\ngithub.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA=\ngithub.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88=\ngithub.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I=\ngithub.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY=\ngithub.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=\ngithub.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=\ngithub.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=\ngithub.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=\ngithub.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=\ngithub.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=\ngithub.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg=\ngithub.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=\ngithub.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22F+ISDCJE=\ngithub.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg=\ngithub.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pborman/indent v1.2.1 h1:lFiviAbISHv3Rf0jcuh489bi06hj98JsVMtIDZQb9yM=\ngithub.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrpz5K6Vw=\ngithub.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=\ngithub.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=\ngithub.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=\ngithub.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=\ngithub.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=\ngithub.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=\ngithub.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=\ngithub.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=\ngithub.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=\ngithub.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=\ngithub.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=\ngithub.com/pkg/xattr v0.4.9 h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE=\ngithub.com/pkg/xattr v0.4.9/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=\ngithub.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=\ngithub.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=\ngithub.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=\ngithub.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=\ngithub.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=\ngithub.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=\ngithub.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=\ngithub.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=\ngithub.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=\ngithub.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=\ngithub.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=\ngithub.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c h1:8gOLsYwaY2JwlTMT4brS5/9XJdrdIbmk2obvQ748CC0=\ngithub.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c/go.mod h1:kwM/7r/rVluTE8qJbHAffduuqmSv4knVQT2IajGvSiA=\ngithub.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=\ngithub.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=\ngithub.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=\ngithub.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=\ngithub.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=\ngithub.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=\ngithub.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=\ngithub.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=\ngithub.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=\ngithub.com/sanity-io/litter v1.5.8 h1:uM/2lKrWdGbRXDrIq08Lh9XtVYoeGtcQxk9rtQ7+rYg=\ngithub.com/sanity-io/litter v1.5.8/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=\ngithub.com/sassoftware/go-rpmutils v0.4.0 h1:ojND82NYBxgwrV+mX1CWsd5QJvvEZTKddtCdFLPWhpg=\ngithub.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jNYPjT5mVcQcIsYzI=\ngithub.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ=\ngithub.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=\ngithub.com/sebdah/goldie/v2 v2.8.0 h1:dZb9wR8q5++oplmEiJT+U/5KyotVD+HNGCAc5gNr8rc=\ngithub.com/sebdah/goldie/v2 v2.8.0/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=\ngithub.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=\ngithub.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=\ngithub.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=\ngithub.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=\ngithub.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=\ngithub.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=\ngithub.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=\ngithub.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=\ngithub.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=\ngithub.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=\ngithub.com/smallnest/ringbuffer v0.0.0-20241116012123-461381446e3d h1:3VwvTjiRPA7cqtgOWddEL+JrcijMlXUmj99c/6YyZoY=\ngithub.com/smallnest/ringbuffer v0.0.0-20241116012123-461381446e3d/go.mod h1:tAG61zBM1DYRaGIPloumExGvScf08oHuo0kFoOqdbT0=\ngithub.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik=\ngithub.com/sorairolake/lzip-go v0.3.8/go.mod h1:JcBqGMV0frlxwrsE9sMWXDjqn3EeVf0/54YPsw66qkU=\ngithub.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=\ngithub.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=\ngithub.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=\ngithub.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb h1:bLo8hvc8XFm9J47r690TUKBzcjSWdJDxmjXJZ+/f92U=\ngithub.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM=\ngithub.com/spdx/tools-golang v0.5.7 h1:+sWcKGnhwp3vLdMqPcLdA6QK679vd86cK9hQWH3AwCg=\ngithub.com/spdx/tools-golang v0.5.7/go.mod h1:jg7w0LOpoNAw6OxKEzCoqPC2GCTj45LyTlVmXubDsYw=\ngithub.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=\ngithub.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=\ngithub.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=\ngithub.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=\ngithub.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=\ngithub.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=\ngithub.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=\ngithub.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=\ngithub.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=\ngithub.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=\ngithub.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=\ngithub.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=\ngithub.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=\ngithub.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY=\ngithub.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=\ngithub.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=\ngithub.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=\ngithub.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=\ngithub.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=\ngithub.com/sylabs/sif/v2 v2.24.0 h1:1wB5uMDUQYjk8AckTySaDcP9YnpMb1LyDRr1Jt9A10w=\ngithub.com/sylabs/sif/v2 v2.24.0/go.mod h1:DbXWqWZ1hdLSU+K9ipdds5AmZeHWsyxCOj/oQakBa88=\ngithub.com/sylabs/squashfs v1.0.6 h1:PvJcDzxr+vIm2kH56mEMbaOzvGu79gK7P7IX+R7BDZI=\ngithub.com/sylabs/squashfs v1.0.6/go.mod h1:DlDeUawVXLWAsSRa085Eo0ZenGzAB32JdAUFaB0LZfE=\ngithub.com/terminalstatic/go-xsd-validate v0.1.6 h1:TenYeQ3eY631qNi1/cTmLH/s2slHPRKTTHT+XSHkepo=\ngithub.com/terminalstatic/go-xsd-validate v0.1.6/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw=\ngithub.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=\ngithub.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=\ngithub.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=\ngithub.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=\ngithub.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=\ngithub.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=\ngithub.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=\ngithub.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=\ngithub.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=\ngithub.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=\ngithub.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=\ngithub.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=\ngithub.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=\ngithub.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=\ngithub.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/vbatts/go-mtree v0.7.0 h1:ytmOc3MTRidZiBi9VBCyZ2BHe4fZS47L5v7BVXDWW4E=\ngithub.com/vbatts/go-mtree v0.7.0/go.mod h1:EjdpFC+LZy1TXbRGNa1MKKgjQ+7ew3foMFJK8o4/TdY=\ngithub.com/vbatts/tar-split v0.12.2 h1:w/Y6tjxpeiFMR47yzZPlPj/FcPLpXbTUi/9H7d3CPa4=\ngithub.com/vbatts/tar-split v0.12.2/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=\ngithub.com/vifraa/gopom v1.0.0 h1:L9XlKbyvid8PAIK8nr0lihMApJQg/12OBvMA28BcWh0=\ngithub.com/vifraa/gopom v1.0.0/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o=\ngithub.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA=\ngithub.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20=\ngithub.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0 h1:EHsPe0Q0ANoLOZff1dBLAyeWLTA4sbPTpGI+2zb0FnM=\ngithub.com/wagoodman/go-progress v0.0.0-20260303201901-10176f79b2c0/go.mod h1:g/D9uEUFp5YLyciwCpVsSOZOm56hfv4rzGJod6MlqIM=\ngithub.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=\ngithub.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=\ngithub.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=\ngithub.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=\ngithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=\ngithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=\ngithub.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=\ngithub.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=\ngithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=\ngithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=\ngithub.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=\ngithub.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngithub.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk=\ngithub.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=\ngithub.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=\ngithub.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=\ngithub.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1 h1:V+UsotZpAVvfj3X/LMoEytoLzSiP6Lg0F7wdVyu9gGg=\ngithub.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis=\ngo.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=\ngo.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=\ngo.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=\ngo.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=\ngo.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=\ngo.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.39.0 h1:5gn2urDL/FBnK8OkCfD1j3/ER79rUuTYmCvlXBKeYL8=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.39.0/go.mod h1:0fBG6ZJxhqByfFZDwSwpZGzJU671HkwpWaNe2t4VUPI=\ngo.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=\ngo.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=\ngo.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=\ngo.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=\ngo.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw=\ngo.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg=\ngo.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=\ngo.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=\ngo.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=\ngo.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=\ngo.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=\ngo.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=\ngo.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=\ngo.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngo4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc=\ngo4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU=\ngolang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=\ngolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=\ngolang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=\ngolang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=\ngolang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=\ngolang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=\ngoogle.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=\ngoogle.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=\ngoogle.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=\ngoogle.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=\ngoogle.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU=\ngoogle.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=\ngoogle.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=\ngoogle.golang.org/api v0.267.0 h1:w+vfWPMPYeRs8qH1aYYsFX68jMls5acWl/jocfLomwE=\ngoogle.golang.org/api v0.267.0/go.mod h1:Jzc0+ZfLnyvXma3UtaTl023TdhZu6OMBP9tJ+0EmFD0=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=\ngoogle.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=\ngoogle.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM=\ngoogle.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 h1:7ei4lp52gK1uSejlA8AZl5AJjeLUOHBQscRQZUgAcu0=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20/go.mod h1:ZdbssH/1SOVnjnDlXzxDHK2MCidiqXtbYccJNzNYPEE=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20 h1:Jr5R2J6F6qWyzINc+4AM8t5pfUz6beZpHp678GNrMbE=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260203192932-546029d2fa20/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=\ngotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nmodernc.org/cc/v4 v4.27.1 h1:9W30zRlYrefrDV2JE2O8VDtJ1yPGownxciz5rrbQZis=\nmodernc.org/cc/v4 v4.27.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=\nmodernc.org/ccgo/v4 v4.30.1 h1:4r4U1J6Fhj98NKfSjnPUN7Ze2c6MnAdL0hWw6+LrJpc=\nmodernc.org/ccgo/v4 v4.30.1/go.mod h1:bIOeI1JL54Utlxn+LwrFyjCx2n2RDiYEaJVSrgdrRfM=\nmodernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA=\nmodernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=\nmodernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=\nmodernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=\nmodernc.org/gc/v3 v3.1.1 h1:k8T3gkXWY9sEiytKhcgyiZ2L0DTyCQ/nvX+LoCljoRE=\nmodernc.org/gc/v3 v3.1.1/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY=\nmodernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=\nmodernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=\nmodernc.org/libc v1.67.6 h1:eVOQvpModVLKOdT+LvBPjdQqfrZq+pC39BygcT+E7OI=\nmodernc.org/libc v1.67.6/go.mod h1:JAhxUVlolfYDErnwiqaLvUqc8nfb2r6S6slAgZOnaiE=\nmodernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=\nmodernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=\nmodernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=\nmodernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=\nmodernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=\nmodernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=\nmodernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=\nmodernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=\nmodernc.org/sqlite v1.46.1 h1:eFJ2ShBLIEnUWlLy12raN0Z1plqmFX9Qe3rjQTKt6sU=\nmodernc.org/sqlite v1.46.1/go.mod h1:CzbrU2lSB1DKUusvwGz7rqEKIq+NUd8GWuBBZDs9/nA=\nmodernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=\nmodernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=\nmodernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=\nmodernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=\npgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk=\npgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "install.sh",
    "content": "#!/bin/sh\n# note: we require errors to propagate (don't set -e)\nset -u\n\nPROJECT_NAME=syft\nOWNER=anchore\nREPO=\"${PROJECT_NAME}\"\nGITHUB_DOWNLOAD_PREFIX=https://github.com/${OWNER}/${REPO}/releases/download\nINSTALL_SH_BASE_URL=https://get.anchore.io/${PROJECT_NAME}\nLEGACY_INSTALL_SH_BASE_URL=https://raw.githubusercontent.com/${OWNER}/${PROJECT_NAME}\nPROGRAM_ARGS=$@\n\n# signature verification options\n\n# the location to the cosign binary (allowed to be overridden by the user)\nCOSIGN_BINARY=${COSIGN_BINARY:-cosign}\nVERIFY_SIGN=false\n# this is the earliest tag in the repo where cosign sign-blob was introduced in the release process (see the goreleaser config)\nVERIFY_SIGN_SUPPORTED_VERSION=v0.104.0\n# this is the earliest tag in the repo where the -v flag was introduced to this install.sh script\nVERIFY_SIGN_FLAG_VERSION=v1.6.0\n\n# do not change the name of this parameter (this must always be backwards compatible)\nDOWNLOAD_TAG_INSTALL_SCRIPT=${DOWNLOAD_TAG_INSTALL_SCRIPT:-true}\n\n# ------------------------------------------------------------------------\n# https://github.com/client9/shlib - portable posix shell functions\n# Public domain - http://unlicense.org\n# https://github.com/client9/shlib/blob/master/LICENSE.md\n# but credit (and pull requests) appreciated.\n# ------------------------------------------------------------------------\n\nis_command() (\n  command -v \"$1\" >/dev/null\n)\n\necho_stderr() (\n  echo \"$@\" 1>&2\n)\n\n_logp=2\nlog_set_priority() {\n  _logp=\"$1\"\n}\n\nlog_priority() (\n  if test -z \"$1\"; then\n    echo \"$_logp\"\n    return\n  fi\n  [ \"$1\" -le \"$_logp\" ]\n)\n\ninit_colors() {\n  RED=''\n  BLUE=''\n  PURPLE=''\n  BOLD=''\n  RESET=''\n  # check if stdout is a terminal\n  if test -t 1 && is_command tput; then\n      # see if it supports colors\n      ncolors=$(tput colors)\n      if test -n \"$ncolors\" && test $ncolors -ge 8; then\n        RED='\\033[0;31m'\n        BLUE='\\033[0;34m'\n        PURPLE='\\033[0;35m'\n        BOLD='\\033[1m'\n        RESET='\\033[0m'\n      fi\n  fi\n}\n\ninit_colors\n\nlog_tag() (\n  case $1 in\n    0) echo \"${RED}${BOLD}[error]${RESET}\" ;;\n    1) echo \"${RED}[warn]${RESET}\" ;;\n    2) echo \"[info]${RESET}\" ;;\n    3) echo \"${BLUE}[debug]${RESET}\" ;;\n    4) echo \"${PURPLE}[trace]${RESET}\" ;;\n    *) echo \"[$1]\" ;;\n  esac\n)\n\n\nlog_trace_priority=4\nlog_trace() (\n  priority=$log_trace_priority\n  log_priority \"$priority\" || return 0\n  echo_stderr \"$(log_tag $priority)\" \"${@}\" \"${RESET}\"\n)\n\nlog_debug_priority=3\nlog_debug() (\n  priority=$log_debug_priority\n  log_priority \"$priority\" || return 0\n  echo_stderr \"$(log_tag $priority)\" \"${@}\" \"${RESET}\"\n)\n\nlog_info_priority=2\nlog_info() (\n  priority=$log_info_priority\n  log_priority \"$priority\" || return 0\n  echo_stderr \"$(log_tag $priority)\" \"${@}\" \"${RESET}\"\n)\n\nlog_warn_priority=1\nlog_warn() (\n  priority=$log_warn_priority\n  log_priority \"$priority\" || return 0\n  echo_stderr \"$(log_tag $priority)\" \"${@}\" \"${RESET}\"\n)\n\nlog_err_priority=0\nlog_err() (\n  priority=$log_err_priority\n  log_priority \"$priority\" || return 0\n  echo_stderr \"$(log_tag $priority)\" \"${@}\" \"${RESET}\"\n)\n\nuname_os_check() (\n  os=$1\n  case \"$os\" in\n    darwin) return 0 ;;\n    dragonfly) return 0 ;;\n    freebsd) return 0 ;;\n    linux) return 0 ;;\n    android) return 0 ;;\n    nacl) return 0 ;;\n    netbsd) return 0 ;;\n    openbsd) return 0 ;;\n    plan9) return 0 ;;\n    solaris) return 0 ;;\n    windows) return 0 ;;\n  esac\n  log_err \"uname_os_check '$(uname -s)' got converted to '$os' which is not a GOOS value. Please file bug at https://github.com/client9/shlib\"\n  return 1\n)\n\nuname_arch_check() (\n  arch=$1\n  case \"$arch\" in\n    386) return 0 ;;\n    amd64) return 0 ;;\n    arm64) return 0 ;;\n    armv5) return 0 ;;\n    armv6) return 0 ;;\n    armv7) return 0 ;;\n    ppc64) return 0 ;;\n    ppc64le) return 0 ;;\n    mips) return 0 ;;\n    mipsle) return 0 ;;\n    mips64) return 0 ;;\n    mips64le) return 0 ;;\n    s390x) return 0 ;;\n    amd64p32) return 0 ;;\n  esac\n  log_err \"uname_arch_check '$(uname -m)' got converted to '$arch' which is not a GOARCH value.  Please file bug report at https://github.com/client9/shlib\"\n  return 1\n)\n\nunpack() (\n  archive=$1\n\n  log_trace \"unpack(archive=${archive})\"\n\n  case \"${archive}\" in\n    *.tar.gz | *.tgz) tar --no-same-owner -xzf \"${archive}\" ;;\n    *.tar) tar --no-same-owner -xf \"${archive}\" ;;\n    *.zip) unzip -q \"${archive}\" ;;\n    *.dmg) extract_from_dmg \"${archive}\" ;;\n    *)\n      log_err \"unpack unknown archive format for ${archive}\"\n      return 1\n      ;;\n  esac\n)\n\nextract_from_dmg() (\n  dmg_file=$1\n\n  mount_point=\"/Volumes/tmp-dmg\"\n  hdiutil attach -quiet -nobrowse -mountpoint \"${mount_point}\" \"${dmg_file}\"\n  cp -fR \"${mount_point}/.\" ./\n  hdiutil detach -quiet -force \"${mount_point}\"\n)\n\nhttp_download_curl() (\n  local_file=$1\n  source_url=$2\n  header=$3\n\n  log_trace \"http_download_curl(local_file=$local_file, source_url=$source_url, header=$header)\"\n\n  if [ -z \"$header\" ]; then\n    code=$(curl -w '%{http_code}' -sL -o \"$local_file\" \"$source_url\")\n  else\n    code=$(curl -w '%{http_code}' -sL -H \"$header\" -o \"$local_file\" \"$source_url\")\n  fi\n\n  if [ \"$code\" != \"200\" ]; then\n    log_err \"received HTTP status=$code for url='$source_url'\"\n    return 1\n  fi\n  return 0\n)\n\nhttp_download_wget() (\n  local_file=$1\n  source_url=$2\n  header=$3\n\n  log_trace \"http_download_wget(local_file=$local_file, source_url=$source_url, header=$header)\"\n\n  if [ -z \"$header\" ]; then\n    wget -q -O \"$local_file\" \"$source_url\"\n  else\n    wget -q --header \"$header\" -O \"$local_file\" \"$source_url\"\n  fi\n)\n\nhttp_download() (\n  log_debug \"http_download(url=$2)\"\n  if is_command curl; then\n    http_download_curl \"$@\"\n    return\n  elif is_command wget; then\n    http_download_wget \"$@\"\n    return\n  fi\n  log_err \"http_download unable to find wget or curl\"\n  return 1\n)\n\nhttp_copy() (\n  tmp=$(mktemp)\n  http_download \"${tmp}\" \"$1\" \"$2\" || return 1\n  body=$(cat \"$tmp\")\n  rm -f \"${tmp}\"\n  echo \"$body\"\n)\n\nhash_sha256() (\n  TARGET=${1:-/dev/stdin}\n  if is_command gsha256sum; then\n    hash=$(gsha256sum \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command sha256sum; then\n    hash=$(sha256sum \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command shasum; then\n    hash=$(shasum -a 256 \"$TARGET\" 2>/dev/null) || return 1\n    echo \"$hash\" | cut -d ' ' -f 1\n  elif is_command openssl; then\n    hash=$(openssl -dst openssl dgst -sha256 \"$TARGET\") || return 1\n    echo \"$hash\" | cut -d ' ' -f a\n  else\n    log_err \"hash_sha256 unable to find command to compute sha-256 hash\"\n    return 1\n  fi\n)\n\nhash_sha256_verify() (\n  target=$1\n  checksums=$2\n  if [ -z \"$checksums\" ]; then\n    log_err \"hash_sha256_verify checksum file not specified as argument\"\n    return 1\n  fi\n  target_basename=${target##*/}\n  want=$(grep \"${target_basename}\" \"${checksums}\" 2>/dev/null | tr '\\t' ' ' | cut -d ' ' -f 1)\n  if [ -z \"$want\" ]; then\n    log_err \"hash_sha256_verify unable to find checksum for '${target}' in '${checksums}'\"\n    return 1\n  fi\n  got=$(hash_sha256 \"$target\")\n  if [ \"$want\" != \"$got\" ]; then\n    log_err \"hash_sha256_verify checksum for '$target' did not verify ${want} vs $got\"\n    return 1\n  fi\n)\n\n# ------------------------------------------------------------------------\n# End of functions from https://github.com/client9/shlib\n# ------------------------------------------------------------------------\n\n# asset_file_exists [path]\n#\n# returns 1 if the given file does not exist\n#\nasset_file_exists() (\n  path=\"$1\"\n  if [ ! -f \"${path}\" ]; then\n      return 1\n  fi\n)\n\n\n# github_release_json [owner] [repo] [version]\n#\n# outputs release json string\n#\ngithub_release_json() (\n  owner=$1\n  repo=$2\n  version=$3\n  test -z \"$version\" && version=\"latest\"\n  giturl=\"https://github.com/${owner}/${repo}/releases/${version}\"\n  json=$(http_copy \"$giturl\" \"Accept:application/json\")\n\n  log_trace \"github_release_json(owner=${owner}, repo=${repo}, version=${version}) returned '${json}'\"\n\n  test -z \"$json\" && return 1\n  echo \"${json}\"\n)\n\n# extract_value [key-value-pair]\n#\n# outputs value from a colon delimited key-value pair\n#\nextract_value() (\n  key_value=\"$1\"\n  IFS=':' read -r _ value << EOF\n${key_value}\nEOF\n  echo \"$value\"\n)\n\n# extract_json_value [json] [key]\n#\n# outputs value of the key from the given json string\n#\nextract_json_value() (\n  json=\"$1\"\n  key=\"$2\"\n  key_value=$(echo \"${json}\" | grep  -o \"\\\"$key\\\":[^,]*[,}]\" | tr -d '\",}')\n\n  extract_value \"$key_value\"\n)\n\n# github_release_tag [release-json]\n#\n# outputs release tag string\n#\ngithub_release_tag() (\n  json=\"$1\"\n  tag=$(extract_json_value \"${json}\" \"tag_name\")\n  test -z \"$tag\" && return 1\n  echo \"$tag\"\n)\n\n# github_release_asset_url [release-url-prefix] [name] [version] [output-dir] [filename]\n#\n# outputs the url to the release asset\n#\ngithub_release_asset_url() (\n  download_url=\"$1\"\n  name=\"$2\"\n  version=\"$3\"\n  filename=\"$4\"\n\n  complete_filename=\"${name}_${version}_${filename}\"\n  complete_url=\"${download_url}/${complete_filename}\"\n\n  echo \"${complete_url}\"\n)\n\n# download_github_release_checksums_files [release-url-prefix] [name] [version] [output-dir] [filename]\n#\n# outputs path to the downloaded checksums related file\n#\ndownload_github_release_checksums_files() (\n  download_url=\"$1\"\n  name=\"$2\"\n  version=\"$3\"\n  output_dir=\"$4\"\n  filename=\"$5\"\n\n  log_trace \"download_github_release_checksums_files(url=${download_url}, name=${name}, version=${version}, output_dir=${output_dir}, filename=${filename})\"\n\n  complete_filename=\"${name}_${version}_${filename}\"\n  complete_url=$(github_release_asset_url \"${download_url}\" \"${name}\" \"${version}\" \"${filename}\")\n  output_path=\"${output_dir}/${complete_filename}\"\n\n  http_download \"${output_path}\" \"${complete_url}\" \"\"\n  asset_file_exists \"${output_path}\"\n\n  log_trace \"download_github_release_checksums_files() returned '${output_path}' for file '${complete_filename}'\"\n\n  echo \"${output_path}\"\n)\n\n# download_github_release_checksums [release-url-prefix] [name] [version] [output-dir]\n#\n# outputs path to the downloaded checksums file\n#\ndownload_github_release_checksums() (\n  download_github_release_checksums_files \"$@\" \"checksums.txt\"\n)\n\n# github_release_checksums_sig_url [release-url-prefix] [name] [version]\n#\n# outputs the url to the release checksums signature file\n#\ngithub_release_checksums_sig_url() (\n  github_release_asset_url \"$@\" \"checksums.txt.sig\"\n)\n\n# github_release_checksums_cert_url [release-url-prefix] [name] [version]\n#\n# outputs the url to the release checksums certificate file\n#\ngithub_release_checksums_cert_url() (\n  github_release_asset_url \"$@\" \"checksums.txt.pem\"\n)\n\n# search_for_asset [checksums-file-path] [name] [os] [arch] [format]\n#\n# outputs name of the asset to download\n#\nsearch_for_asset() (\n  checksum_path=\"$1\"\n  name=\"$2\"\n  os=\"$3\"\n  arch=\"$4\"\n  format=\"$5\"\n\n  log_trace \"search_for_asset(checksum-path=${checksum_path}, name=${name}, os=${os}, arch=${arch}, format=${format})\"\n\n  asset_glob=\"${name}_.*_${os}_${arch}.${format}\"\n  output_path=$(grep -o \"${asset_glob}\" \"${checksum_path}\" || true)\n\n  log_trace \"search_for_asset() returned '${output_path}'\"\n\n  echo \"${output_path}\"\n)\n\n# uname_os\n#\n# outputs an adjusted os value\n#\nuname_os() (\n  os=$(uname -s | tr '[:upper:]' '[:lower:]')\n  case \"$os\" in\n    cygwin_nt*) os=\"windows\" ;;\n    mingw*) os=\"windows\" ;;\n    msys_nt*) os=\"windows\" ;;\n  esac\n\n  uname_os_check \"$os\"\n\n  log_trace \"uname_os() returned '${os}'\"\n\n  echo \"$os\"\n)\n\n# uname_arch\n#\n# outputs an adjusted architecture value\n#\nuname_arch() (\n  arch=$(uname -m)\n  case $arch in\n    x86_64) arch=\"amd64\" ;;\n    x86) arch=\"386\" ;;\n    i686) arch=\"386\" ;;\n    i386) arch=\"386\" ;;\n    aarch64) arch=\"arm64\" ;;\n    armv5*) arch=\"armv5\" ;;\n    armv6*) arch=\"armv6\" ;;\n    armv7*) arch=\"armv7\" ;;\n  esac\n\n  uname_arch_check \"${arch}\"\n\n  log_trace \"uname_arch() returned '${arch}'\"\n\n  echo \"${arch}\"\n)\n\n# get_release_tag [owner] [repo] [tag]\n#\n# outputs tag string\n#\nget_release_tag() (\n  owner=\"$1\"\n  repo=\"$2\"\n  tag=\"$3\"\n\n  log_trace \"get_release_tag(owner=${owner}, repo=${repo}, tag=${tag})\"\n\n  json=$(github_release_json \"${owner}\" \"${repo}\" \"${tag}\")\n  real_tag=$(github_release_tag \"${json}\")\n  if test -z \"${real_tag}\"; then\n    return 1\n  fi\n\n  log_trace \"get_release_tag() returned '${real_tag}'\"\n\n  echo \"${real_tag}\"\n)\n\n# tag_to_version [tag]\n#\n# outputs version string\n#\ntag_to_version() (\n  tag=\"$1\"\n  value=\"${tag#v}\"\n\n  log_trace \"tag_to_version(tag=${tag}) returned '${value}'\"\n\n  echo \"$value\"\n)\n\n# get_binary_name [os] [arch] [default-name]\n#\n# outputs a the binary string name\n#\nget_binary_name() (\n  os=\"$1\"\n  arch=\"$2\"\n  binary=\"$3\"\n  original_binary=\"${binary}\"\n\n  case \"${os}\" in\n    windows) binary=\"${binary}.exe\" ;;\n  esac\n\n  log_trace \"get_binary_name(os=${os}, arch=${arch}, binary=${original_binary}) returned '${binary}'\"\n\n  echo \"${binary}\"\n)\n\n\n# get_format_name [os] [arch] [default-format]\n#\n# outputs an adjusted file format\n#\nget_format_name() (\n  os=\"$1\"\n  arch=\"$2\"\n  format=\"$3\"\n  original_format=\"${format}\"\n\n  case ${os} in\n    windows) format=zip ;;\n  esac\n\n  log_trace \"get_format_name(os=${os}, arch=${arch}, format=${original_format}) returned '${format}'\"\n\n  echo \"${format}\"\n)\n\n# download_and_install_asset [release-url-prefix] [download-path] [install-path] [name] [os] [arch] [version] [format] [binary]\n#\n# attempts to download the archive and install it to the given path.\n#\ndownload_and_install_asset() (\n  download_url=\"$1\"\n  download_path=\"$2\"\n  install_path=$3\n  name=\"$4\"\n  os=\"$5\"\n  arch=\"$6\"\n  version=\"$7\"\n  format=\"$8\"\n  binary=\"$9\"\n\n  if ! asset_filepath=$(download_asset \"${download_url}\" \"${download_path}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\"); then\n      log_err \"could not download asset for os='${os}' arch='${arch}' format='${format}'\"\n      return 1\n  fi\n\n  # don't continue if we couldn't download an asset\n  if [ -z \"${asset_filepath}\" ]; then\n      log_err \"could not find release asset for os='${os}' arch='${arch}' format='${format}' \"\n      return 1\n  fi\n\n  install_asset \"${asset_filepath}\" \"${install_path}\" \"${binary}\"\n)\n\n# verify_sign [checksums-file-path] [certificate-reference] [signature-reference] [version]\n#\n# attempts verify the signature of the checksums file from the release workflow in Github Actions run against the main branch.\n#\nverify_sign() {\n  checksums_file=$1\n  cert_reference=$2\n  sig_reference=$3\n\n  log_trace \"verifying artifact $1\"\n\n  log_file=$(mktemp)\n\n  ${COSIGN_BINARY} \\\n    verify-blob \"$checksums_file\" \\\n      --certificate \"$cert_reference\" \\\n      --signature \"$sig_reference\" \\\n      --certificate-identity \"https://github.com/${OWNER}/${REPO}/.github/workflows/release.yaml@refs/heads/main\" \\\n      --certificate-oidc-issuer \"https://token.actions.githubusercontent.com\" > \"${log_file}\" 2>&1\n\n  if [ $? -ne 0 ]; then\n    log_err \"$(cat \"${log_file}\")\"\n    rm -f \"${log_file}\"\n    return 1\n  fi\n\n  rm -f \"${log_file}\"\n}\n\n\n# download_asset [release-url-prefix] [download-path] [name] [os] [arch] [version] [format] [binary]\n#\n# outputs the path to the downloaded asset asset_filepath\n#\ndownload_asset() (\n  download_url=\"$1\"\n  destination=\"$2\"\n  name=\"$3\"\n  os=\"$4\"\n  arch=\"$5\"\n  version=\"$6\"\n  format=\"$7\"\n\n  log_trace \"download_asset(url=${download_url}, destination=${destination}, name=${name}, os=${os}, arch=${arch}, version=${version}, format=${format})\"\n\n  checksums_filepath=$(download_github_release_checksums \"${download_url}\" \"${name}\" \"${version}\" \"${destination}\")\n\n  log_trace \"checksums content:\\n$(cat ${checksums_filepath})\"\n\n  asset_filename=$(search_for_asset \"${checksums_filepath}\" \"${name}\" \"${os}\" \"${arch}\" \"${format}\")\n\n  # don't continue if we couldn't find a matching asset from the checksums file\n  if [ -z \"${asset_filename}\" ]; then\n      return 1\n  fi\n\n  if [ \"$VERIFY_SIGN\" = true ]; then\n    checksum_sig_file_url=$(github_release_checksums_sig_url \"${download_url}\" \"${name}\" \"${version}\")\n    log_trace \"checksums signature url: ${checksum_sig_file_url}\"\n\n    checksums_cert_file_url=$(github_release_checksums_cert_url \"${download_url}\" \"${name}\" \"${version}\")\n    log_trace \"checksums certificate url: ${checksums_cert_file_url}\"\n\n    if ! verify_sign \"${checksums_filepath}\" \"${checksums_cert_file_url}\" \"${checksum_sig_file_url}\"; then\n      log_err \"signature verification failed\"\n      return 1\n    fi\n    log_info \"signature verification succeeded\"\n  fi\n\n  asset_url=\"${download_url}/${asset_filename}\"\n  asset_filepath=\"${destination}/${asset_filename}\"\n  http_download \"${asset_filepath}\" \"${asset_url}\" \"\"\n\n  hash_sha256_verify \"${asset_filepath}\" \"${checksums_filepath}\"\n\n  log_trace \"download_asset_by_checksums_file() returned '${asset_filepath}'\"\n\n  echo \"${asset_filepath}\"\n)\n\n# install_asset [asset-path] [destination-path] [binary]\n#\ninstall_asset() (\n  asset_filepath=\"$1\"\n  destination=\"$2\"\n  binary=\"$3\"\n\n  log_trace \"install_asset(asset=${asset_filepath}, destination=${destination}, binary=${binary})\"\n\n  # don't continue if we don't have anything to install\n  if [ -z \"${asset_filepath}\" ]; then\n      return\n  fi\n\n  archive_dir=$(dirname \"${asset_filepath}\")\n\n  # unarchive the downloaded archive to the temp dir\n  (cd \"${archive_dir}\" && unpack \"${asset_filepath}\")\n\n  # create the destination dir\n  test ! -d \"${destination}\" && install -d \"${destination}\"\n\n  # install the binary to the destination dir\n  install \"${archive_dir}/${binary}\" \"${destination}/\"\n)\n\n# compare two semver strings. Returns 0 if version1 >= version2, 1 otherwise.\n# Note: pre-release (-) and metadata (+) are not supported.\ncompare_semver() {\n    # remove leading 'v' if present\n    version1=${1#v}\n    version2=${2#v}\n\n    IFS=. read -r major1 minor1 patch1 <<EOF\n$version1\nEOF\n    IFS=. read -r major2 minor2 patch2 <<EOF\n$version2\nEOF\n\n    if [ \"$major1\" -gt \"$major2\" ]; then\n        return 0\n    elif [ \"$major1\" -lt \"$major2\" ]; then\n        return 1\n    fi\n\n    if [ \"$minor1\" -gt \"$minor2\" ]; then\n        return 0\n    elif [ \"$minor1\" -lt \"$minor2\" ]; then\n        return 1\n    fi\n\n    if [ \"$patch1\" -gt \"$patch2\" ]; then\n        return 0\n    elif [ \"$patch1\" -lt \"$patch2\" ]; then\n        return 1\n    fi\n\n    # versions are equal\n    return 0\n}\n\nprep_signature_verification() {\n  version=\"$1\"\n\n  if [ \"$VERIFY_SIGN\" != true ]; then\n    return 0\n  fi\n\n  # is there any cryptographic material produced at release that we can use for signature verification?\n  if ! compare_semver \"$version\" \"$VERIFY_SIGN_SUPPORTED_VERSION\"; then\n    log_err \"${PROJECT_NAME} release '$version' does not support signature verification\"\n    log_err \"you can still install ${PROJECT_NAME} by removing the -v flag or using a release that supports signature verification (>= '$VERIFY_SIGN_SUPPORTED_VERSION')\"\n    log_err \"aborting installation\"\n    return 1\n  else\n    log_trace \"${PROJECT_NAME} release '$version' supports signature verification (>= '$VERIFY_SIGN_SUPPORTED_VERSION')\"\n  fi\n\n  # will invoking an earlier version of this script work (considering the -v flag)?\n  if ! compare_semver \"$version\" \"$VERIFY_SIGN_FLAG_VERSION\"; then\n    # the -v argument did not always exist, so we cannot be guaranteed that invoking an earlier version of this script\n    # will work (error with \"illegal option -v\"). However, the user requested signature verification, so we will\n    # attempt to install the application with this version of the script (keeping signature verification).\n    DOWNLOAD_TAG_INSTALL_SCRIPT=false\n    log_debug \"provided version install script does not support -v flag (>= '$VERIFY_SIGN_FLAG_VERSION'), using current script for installation\"\n  else\n    log_trace \"provided version install script supports -v flag (>= '$VERIFY_SIGN_FLAG_VERSION')\"\n  fi\n\n  # check to see if the cosign binary is installed\n  if is_command \"${COSIGN_BINARY}\"; then\n    log_trace \"${COSIGN_BINARY} binary is installed\"\n  else\n    log_err \"signature verification is requested but ${COSIGN_BINARY} binary is not installed (see https://docs.sigstore.dev/system_config/installation/ to install it)\"\n    return 1\n  fi\n}\n\nmain() (\n  # parse arguments\n\n  # note: never change default install directory (this must always be backwards compatible)\n  install_dir=${install_dir:-./bin}\n\n  # note: never change the program flags or arguments (this must always be backwards compatible)\n  while getopts \"b:dvh?x\" arg; do\n    case \"$arg\" in\n      b) install_dir=\"$OPTARG\" ;;\n      d)\n        if [ \"$_logp\" = \"$log_info_priority\" ]; then\n          # -d == debug\n          log_set_priority $log_debug_priority\n        else\n          # -dd (or -ddd...) == trace\n          log_set_priority $log_trace_priority\n        fi\n        ;;\n      v) VERIFY_SIGN=true;;\n      h | \\?)\n        cat <<EOF\nDownload and install a released binary for ${OWNER}/${REPO} from the github releases page\n\nUsage: $0 [-v] [-b DIR] [-d] [TAG]\n  -b DIR  the installation directory (defaults to ./bin)\n  -d      turns on debug logging\n  -dd     turns on trace logging\n  -v      verify checksum signature (requires cosign binary to be installed).\n  TAG     the specific release to use (if missing, then the latest will be used)\nEOF\n        exit 0\n      ;;\n      x) set -x ;;\n    esac\n  done\n  shift $((OPTIND - 1))\n\n  set +u\n  tag=$1\n\n  if [ -z \"${tag}\" ]; then\n    log_info \"checking github for the current release tag\"\n    tag=\"\"\n  else\n    log_info \"checking github for release tag='${tag}'\"\n  fi\n  set -u\n\n  if ! tag=$(get_release_tag \"${OWNER}\" \"${REPO}\" \"${tag}\"); then\n      log_err \"unable to find tag='${tag}'\"\n      log_err \"do not specify a version or select a valid version from https://github.com/${OWNER}/${REPO}/releases\"\n      return 1\n  fi\n\n  # run the application\n\n  version=$(tag_to_version \"${tag}\")\n  os=$(uname_os)\n  arch=$(uname_arch)\n  format=$(get_format_name \"${os}\" \"${arch}\" \"tar.gz\")\n  binary=$(get_binary_name \"${os}\" \"${arch}\" \"${PROJECT_NAME}\")\n  download_url=\"${GITHUB_DOWNLOAD_PREFIX}/${tag}\"\n\n  if ! prep_signature_verification \"$version\"; then\n      return 1\n  fi\n\n  # we always use the install.sh script that is associated with the tagged release. Why? the latest install.sh is not\n  # guaranteed to be able to install every version of the application. We use the DOWNLOAD_TAG_INSTALL_SCRIPT env var\n  # to indicate if we should continue processing with the existing script or to download the script from the given tag.\n  if [ \"${DOWNLOAD_TAG_INSTALL_SCRIPT}\" = \"true\" ]; then\n      export DOWNLOAD_TAG_INSTALL_SCRIPT=false\n      log_info \"fetching release script for tag='${tag}'\"\n      if ! install_script=$(http_copy \"${INSTALL_SH_BASE_URL}/${tag}/install.sh\" \"\"); then\n          log_warn \"failed to fetch from ${INSTALL_SH_BASE_URL}, trying fallback URL\"\n          install_script=$(http_copy \"${LEGACY_INSTALL_SH_BASE_URL}/${tag}/install.sh\" \"\")\n      fi\n      echo \"${install_script}\" | sh -s -- ${PROGRAM_ARGS}\n      exit $?\n  fi\n\n  log_info \"using release tag='${tag}' version='${version}' os='${os}' arch='${arch}'\"\n\n  download_dir=$(mktemp -d)\n  trap 'rm -rf -- \"$download_dir\"' EXIT\n\n  log_debug \"downloading files into ${download_dir}\"\n\n  # don't continue if we couldn't install the asset\n  if ! download_and_install_asset \"${download_url}\" \"${download_dir}\" \"${install_dir}\" \"${PROJECT_NAME}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\" \"${binary}\"; then\n      log_err \"failed to install ${PROJECT_NAME}\"\n      return 1\n  fi\n\n  log_info \"installed ${install_dir}/${binary}\"\n)\n\n# entrypoint\n\nset +u\nif [ -z \"${TEST_INSTALL_SH}\" ]; then\n  set -u\n  main \"$@\"\n  exit $?\nfi\nset -u\n"
  },
  {
    "path": "internal/buffered_seek_reader.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nvar _ io.ReadSeekCloser = (*bufferedSeekReader)(nil)\n\n// bufferedSeekReader wraps an io.ReadCloser to provide io.Seeker functionality.\n// It only supports seeking from the start and cannot seek past what has already been read.\ntype bufferedSeekReader struct {\n\tr      io.ReadCloser\n\tbuf    *bytes.Reader\n\tdata   []byte\n\tpos    int64\n\tclosed bool\n}\n\nfunc NewBufferedSeeker(rc io.ReadCloser) io.ReadSeekCloser {\n\treturn &bufferedSeekReader{\n\t\tr: rc,\n\t}\n}\n\nfunc (bs *bufferedSeekReader) Read(p []byte) (int, error) {\n\tif bs.closed {\n\t\treturn 0, errors.New(\"cannot read from closed reader\")\n\t}\n\tif bs.pos == int64(len(bs.data)) {\n\t\t// if we're at the end of our buffer, read more data into it\n\t\ttmp := make([]byte, len(p))\n\n\t\tn, err := bs.r.Read(tmp)\n\t\tif err != nil && err != io.EOF {\n\t\t\treturn 0, err\n\t\t} else if err == io.EOF {\n\t\t\tbs.closed = true\n\t\t}\n\t\tbs.data = append(bs.data, tmp[:n]...)\n\t\tbs.buf = bytes.NewReader(bs.data)\n\t}\n\n\tn, err := bs.buf.ReadAt(p, bs.pos)\n\tif err != nil && err != io.EOF {\n\t\tlog.WithFields(\"error\", err).Trace(\"buffered seek reader failed to read from underlying reader\")\n\t}\n\tbs.pos += int64(n)\n\n\treturn n, nil\n}\n\nfunc (bs *bufferedSeekReader) Seek(offset int64, whence int) (int64, error) {\n\tvar abs int64\n\tswitch whence {\n\tcase io.SeekStart:\n\t\tabs = offset\n\tcase io.SeekCurrent:\n\t\tabs = bs.pos + offset\n\tcase io.SeekEnd:\n\t\treturn 0, errors.New(\"'SeekEnd' not supported\")\n\tdefault:\n\t\treturn 0, errors.New(\"invalid seek option\")\n\t}\n\n\tif abs < 0 {\n\t\treturn 0, errors.New(\"unable to seek before start\")\n\t}\n\n\tif abs > int64(len(bs.data)) {\n\t\treturn 0, errors.New(\"unable to seek past read data\")\n\t}\n\n\tbs.pos = abs\n\treturn bs.pos, nil\n}\n\nfunc (bs *bufferedSeekReader) Close() error {\n\tbs.closed = true\n\treturn bs.r.Close()\n}\n"
  },
  {
    "path": "internal/buffered_seek_reader_test.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestBufferedSeeker_Read(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinitialData   string\n\t\treadLengths   []int\n\t\texpectedReads []string\n\t\texpectError   bool\n\t}{\n\t\t{\n\t\t\tname:          \"go case (read)\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{5},\n\t\t\texpectedReads: []string{\"Hello\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"multiple reads\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{5, 8},\n\t\t\texpectedReads: []string{\"Hello\", \", World!\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tbs := NewBufferedSeeker(io.NopCloser(bytes.NewBufferString(tt.initialData)))\n\n\t\t\tfor i, length := range tt.readLengths {\n\t\t\t\tbuf := make([]byte, length)\n\t\t\t\tn, err := bs.Read(buf)\n\n\t\t\t\tif !tt.expectError {\n\t\t\t\t\tassert.NoError(t, err)\n\t\t\t\t\tassert.Equalf(t, tt.expectedReads[i], string(buf[:n]), \"read index %d\", i)\n\t\t\t\t} else {\n\t\t\t\t\tassert.Error(t, err)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestBufferedSeeker_Seek(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinitialData   string\n\t\treadLengths   []int\n\t\tseekOffsets   []int64\n\t\tseekWhence    []int\n\t\texpectedReads []string\n\t\tseekError     require.ErrorAssertionFunc\n\t\treadError     require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:          \"seek start 0 without read first\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{5},\n\t\t\tseekOffsets:   []int64{0},\n\t\t\tseekWhence:    []int{io.SeekStart},\n\t\t\texpectedReads: []string{\"Hello\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"read + seek back\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{5, 8, 8},\n\t\t\tseekOffsets:   []int64{-1, -1, 2},\n\t\t\tseekWhence:    []int{io.SeekStart, io.SeekStart, io.SeekStart},\n\t\t\texpectedReads: []string{\"Hello\", \", World!\", \"llo, Wor\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"seek past read data\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{5},\n\t\t\tseekOffsets:   []int64{20},\n\t\t\tseekWhence:    []int{io.SeekStart},\n\t\t\texpectedReads: []string{\"\"},\n\t\t\tseekError:     require.Error,\n\t\t},\n\t\t{\n\t\t\tname:          \"seek to end\",\n\t\t\tinitialData:   \"Hello, World!\",\n\t\t\treadLengths:   []int{-1},\n\t\t\tseekOffsets:   []int64{20},\n\t\t\tseekWhence:    []int{io.SeekEnd},\n\t\t\texpectedReads: []string{\"\"},\n\t\t\tseekError:     require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.seekError == nil {\n\t\t\t\ttt.seekError = require.NoError\n\t\t\t}\n\t\t\tif tt.readError == nil {\n\t\t\t\ttt.readError = require.NoError\n\t\t\t}\n\n\t\t\tbs := NewBufferedSeeker(io.NopCloser(bytes.NewBufferString(tt.initialData)))\n\n\t\t\tfor i, length := range tt.readLengths {\n\t\t\t\tif len(tt.seekOffsets) > i && tt.seekOffsets[i] >= 0 {\n\t\t\t\t\t_, err := bs.Seek(tt.seekOffsets[i], tt.seekWhence[i])\n\t\t\t\t\ttt.seekError(t, err)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif length >= 0 {\n\t\t\t\t\tbuf := make([]byte, length)\n\t\t\t\t\tn, err := bs.Read(buf)\n\t\t\t\t\ttt.readError(t, err)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tassert.Equalf(t, tt.expectedReads[i], string(buf[:n]), \"read index %d\", i)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestBufferedSeeker_Close(t *testing.T) {\n\tbs := NewBufferedSeeker(io.NopCloser(bytes.NewBufferString(\"Hello, World!\")))\n\terr := bs.Close()\n\tassert.NoError(t, err)\n\tn, err := bs.Read(make([]byte, 1))\n\tassert.Equal(t, 0, n)\n\tassert.Error(t, err)\n}\n"
  },
  {
    "path": "internal/bus/bus.go",
    "content": "/*\nPackage bus provides access to a singleton instance of an event bus (provided by the calling application). The event bus\nis intended to allow for the syft library to publish events which library consumers can subscribe to. These events\ncan provide static information, but also have an object as a payload for which the consumer can poll for updates.\nThis is akin to a logger, except instead of only allowing strings to be logged, rich objects that can be interacted with.\n\nNote that the singleton instance is only allowed to publish events and not subscribe to them --this is intentional.\nInternal library interactions should continue to use traditional in-execution-path approaches for data sharing\n(e.g. function returns and channels) and not depend on bus subscriptions for critical interactions (e.g. one part of the\nlib publishes an event and another part of the lib subscribes and reacts to that event). The bus is provided only as a\nmeans for consumers to observe events emitted from the library (such as to provide a rich UI) and not to allow\nconsumers to augment or otherwise change execution.\n*/\npackage bus\n\nimport \"github.com/wagoodman/go-partybus\"\n\nvar publisher partybus.Publisher\n\n// Set sets the singleton event bus publisher. This is optional; if no bus is provided, the library will\n// behave no differently than if a bus had been provided.\nfunc Set(p partybus.Publisher) {\n\tpublisher = p\n}\n\nfunc Get() partybus.Publisher {\n\treturn publisher\n}\n\n// Publish an event onto the bus. If there is no bus set by the calling application, this does nothing.\nfunc Publish(e partybus.Event) {\n\tif publisher != nil {\n\t\tpublisher.Publish(e)\n\t}\n}\n"
  },
  {
    "path": "internal/bus/helpers.go",
    "content": "package bus\n\nimport (\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/syft/internal/redact\"\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n)\n\nfunc Exit() {\n\tPublish(clio.ExitEvent(false))\n}\n\nfunc ExitWithInterrupt() {\n\tPublish(clio.ExitEvent(true))\n}\n\nfunc Report(report string) {\n\tif len(report) == 0 {\n\t\treturn\n\t}\n\treport = redact.Apply(report)\n\tPublish(partybus.Event{\n\t\tType:  event.CLIReport,\n\t\tValue: report,\n\t})\n}\n\nfunc Notify(message string) {\n\tPublish(partybus.Event{\n\t\tType:  event.CLINotification,\n\t\tValue: message,\n\t})\n}\n\nfunc StartCatalogerTask(info monitor.GenericTask, size int64, initialStage string) *monitor.TaskProgress {\n\tt := &monitor.TaskProgress{\n\t\tAtomicStage: progress.NewAtomicStage(initialStage),\n\t\tManual:      progress.NewManual(size),\n\t}\n\n\tPublish(partybus.Event{\n\t\tType:   event.CatalogerTaskStarted,\n\t\tSource: info,\n\t\tValue:  progress.StagedProgressable(t),\n\t})\n\n\treturn t\n}\n\nfunc StartPullSourceTask(info monitor.GenericTask, size int64, initialStage string) *monitor.TaskProgress {\n\tt := &monitor.TaskProgress{\n\t\tAtomicStage: progress.NewAtomicStage(initialStage),\n\t\tManual:      progress.NewManual(size),\n\t}\n\n\tPublish(partybus.Event{\n\t\tType:   event.PullSourceStarted,\n\t\tSource: info,\n\t\tValue:  progress.StagedProgressable(t),\n\t})\n\n\treturn t\n}\n\nfunc StartIndexingFiles(path string) *monitor.TaskProgress {\n\tt := &monitor.TaskProgress{\n\t\tAtomicStage: progress.NewAtomicStage(\"\"),\n\t\tManual:      progress.NewManual(-1),\n\t}\n\n\tPublish(partybus.Event{\n\t\tType:   event.FileIndexingStarted,\n\t\tSource: path,\n\t\tValue:  progress.StagedProgressable(t),\n\t})\n\n\treturn t\n}\n"
  },
  {
    "path": "internal/cache/README.md",
    "content": "# Caching\n\nAll caches are created from a global `manager`. By default this is a `bypassedCache`, which performs no caching.\nOne benefit of this is that tests don't need to worry about caching causing issues unless they explicitly need\nto test the cache and can opt-in using the `cache.TestCache(t)` helper.\n\nSyft sets a `filesystemCache` when the [cache options](../../cmd/syft/internal/options/cache.go) are loaded.\n\nWhen using the `filesystemCache` all items are stored on disk under a root directory, generally in the form of:\n```\n<rootDir>/<named-cache>/<data-version>/path/to/data\n```\n\n# Using the cache\n\nThe easiest and preferred method to use the cache is a `cache.Resolver`, which automatically creates a `<data-version>`\nbased on the _structure_ of the provided type.\nIf the structure changes in any way it will end up with a new version key and all will re populate this new key,\nignoring cached values from older, different versions.\nThe resolver will store items using the `json` package to serialize/deserialize values, so to save space\nit is encouraged to use `omitempty`. For example:\n\n```go\ntype myCacheItem struct {\n\tName string `json:\"name\",omitempty`\n}\n```\n\nIt is possible to use core types such as `pkg.Package` as long as they support the standard `json` serialization,\nbut this is discouraged in order to decouple changes to them from affecting the information stored in the cache.\n\nTo get a cache for this type:\n```go\nresolver := cache.GetResolver[myCacheItem](\"myCacheName\", \"v1\")\n```\n\nUsing the `resolver` is a single call, which manages checking for items in the cache, expiry times,\nand if not found invoking the callback to populate the cache and return a value:\n```go\ndata := resolver.Resolve(\"some/cache/key\", func() (myCacheItem, error) {\n\t// do things to return a myCacheItem or error\n})\n```\n\nIf it is common that checking for an item will result in errors, and you do not want to re-run the resolve function\nwhen errors are encountered, instead of using `GetResolver`, you can use `GetResolverCachingErrors`, which is useful\nfor things such as resolving artifacts over a network, where a number of them will not be resolved, and you do not want\nto continue to have the expense of running the network resolution. This should be used when it is acceptable a network\noutage and cached errors is an acceptable risk.\n\nAn example can be seen in the [golang cataloger](../../syft/pkg/cataloger/golang/licenses.go) fetching remote licenses.\n"
  },
  {
    "path": "internal/cache/bypass.go",
    "content": "package cache\n\nimport \"io\"\n\ntype bypassedCache struct{}\n\nfunc (b *bypassedCache) Read(_ string) (ReaderAtCloser, error) {\n\treturn nil, errNotFound\n}\n\nfunc (b *bypassedCache) Write(_ string, contents io.Reader) error {\n\tif closer, ok := contents.(io.Closer); ok {\n\t\t_ = closer.Close()\n\t}\n\treturn nil\n}\n\nfunc (b *bypassedCache) GetCache(_, _ string) Cache {\n\treturn b\n}\n\nfunc (b *bypassedCache) RootDirs() []string {\n\treturn nil\n}\n"
  },
  {
    "path": "internal/cache/bypass_test.go",
    "content": "package cache\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_bypassedCache(t *testing.T) {\n\tm := bypassedCache{}\n\tcache := m.GetCache(\"name\", \"version\")\n\terr := cache.Write(\"test\", strings.NewReader(\"value\"))\n\trequire.NoError(t, err)\n\trdr, err := cache.Read(\"test\")\n\trequire.Nil(t, rdr)\n\trequire.ErrorIs(t, err, errNotFound)\n}\n"
  },
  {
    "path": "internal/cache/cache.go",
    "content": "package cache\n\nimport (\n\t\"io\"\n)\n\n// Manager is responsible for managing cache data and instantiating all caches\ntype Manager interface {\n\t// GetCache returns a cache scoped to the given named, versioned data\n\tGetCache(name, version string) Cache\n\n\t// RootDirs returns any root directories this cache manager uses\n\tRootDirs() []string\n}\n\n// ReaderAtCloser is an amalgamation of: io.Reader, io.ReaderAt, and io.Closer\ntype ReaderAtCloser interface {\n\tio.Reader\n\tio.ReaderAt\n\tio.Closer\n}\n\n// Cache is what the application interacts with to get and set cached data\ntype Cache interface {\n\t// Read returns a reader for the cache value, if found and not expired\n\t// or errors when unable to find / expired\n\tRead(key string) (ReaderAtCloser, error)\n\n\t// Write writes the contents of the reader to the cache\n\t// and closes it, if the reader implements io.Closer\n\tWrite(key string, contents io.Reader) error\n}\n\n// GetManager returns the global cache manager, which is used to instantiate all caches\nfunc GetManager() Manager {\n\treturn manager\n}\n\n// SetManager sets the global cache manager, which is used to instantiate all caches.\n// Setting this to nil disables caching.\nfunc SetManager(m Manager) {\n\tif m == nil {\n\t\tmanager = &bypassedCache{}\n\t} else {\n\t\tmanager = m\n\t}\n}\n\nvar manager Manager = &bypassedCache{}\n"
  },
  {
    "path": "internal/cache/cache_test.go",
    "content": "package cache\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_SetManager(t *testing.T) {\n\toriginal := GetManager()\n\tdefer SetManager(original)\n\n\tSetManager(nil)\n\n\trequire.NotNil(t, GetManager())\n\trequire.IsType(t, &bypassedCache{}, GetManager())\n\n\tSetManager(NewInMemory(0))\n\n\trequire.NotNil(t, GetManager())\n\trequire.IsType(t, &bypassedCache{}, GetManager())\n\n\tSetManager(NewInMemory(1 * time.Hour))\n\n\trequire.NotNil(t, GetManager())\n\trequire.IsType(t, &filesystemCache{}, GetManager())\n\n\tSetManager(nil)\n\trequire.NotNil(t, GetManager())\n\trequire.IsType(t, &bypassedCache{}, GetManager())\n}\n"
  },
  {
    "path": "internal/cache/error_resolver.go",
    "content": "package cache\n\nimport \"fmt\"\n\n// GetResolverCachingErrors returns a Resolver that caches errors and will return them\n// instead of continuing to call the provided resolve functions\nfunc GetResolverCachingErrors[T any](name, version string) Resolver[T] {\n\treturn &errorResolver[T]{\n\t\tresolver: GetResolver[errResponse[T]](name, version),\n\t}\n}\n\ntype errResponse[T any] struct {\n\tError string `json:\"err,omitempty\"`\n\tValue T      `json:\"val,omitempty\"`\n}\n\ntype errorResolver[T any] struct {\n\tresolver Resolver[errResponse[T]]\n}\n\nfunc (r *errorResolver[T]) Resolve(key string, resolver resolverFunc[T]) (T, error) {\n\tv, err := r.resolver.Resolve(key, func() (errResponse[T], error) {\n\t\tv, err := resolver()\n\t\tout := errResponse[T]{\n\t\t\tValue: v,\n\t\t}\n\t\tif err != nil {\n\t\t\tout.Error = err.Error()\n\t\t}\n\t\treturn out, nil\n\t})\n\tif err != nil {\n\t\treturn v.Value, err\n\t}\n\tif v.Error != \"\" {\n\t\treturn v.Value, fmt.Errorf(\"failed to resolve cache: %s\", v.Error)\n\t}\n\treturn v.Value, nil\n}\n"
  },
  {
    "path": "internal/cache/error_resolver_test.go",
    "content": "package cache\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_errorResolver(t *testing.T) {\n\toriginal := GetManager()\n\tdefer SetManager(original)\n\tSetManager(NewInMemory(time.Hour))\n\n\tresolver := GetResolverCachingErrors[string](\"theCache\", \"theVersion\")\n\n\tresolveCount := 0\n\tresolveFunc := func() (string, error) {\n\t\tresolveCount++\n\t\treturn \"theValue\", nil\n\t}\n\n\tval, err := resolver.Resolve(\"theKey\", resolveFunc)\n\trequire.NoError(t, err)\n\trequire.Equal(t, 1, resolveCount)\n\trequire.Equal(t, \"theValue\", val)\n\n\tval, err = resolver.Resolve(\"theKey\", resolveFunc)\n\trequire.NoError(t, err)\n\trequire.Equal(t, 1, resolveCount)\n\trequire.Equal(t, \"theValue\", val)\n\n\terrorCount := 0\n\terrorFunc := func() (string, error) {\n\t\terrorCount++\n\t\treturn \"\", fmt.Errorf(\"an error\")\n\t}\n\n\t_, err = resolver.Resolve(\"errorValue\", errorFunc)\n\trequire.ErrorContains(t, err, \"an error\")\n\trequire.Equal(t, 1, errorCount)\n\n\t_, err = resolver.Resolve(\"errorValue\", errorFunc)\n\trequire.ErrorContains(t, err, \"an error\")\n\trequire.Equal(t, 1, errorCount)\n}\n"
  },
  {
    "path": "internal/cache/filesystem.go",
    "content": "package cache\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// NewFromDir creates a new cache manager which returns caches stored on disk, rooted at the given directory\nfunc NewFromDir(dir string, ttl time.Duration) (Manager, error) {\n\tdir = filepath.Clean(dir)\n\tfsys, err := subFs(afero.NewOsFs(), dir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &filesystemCache{\n\t\tdir: dir,\n\t\tfs:  fsys,\n\t\tttl: ttl,\n\t}, nil\n}\n\nconst filePermissions = 0700\nconst dirPermissions = os.ModeDir | filePermissions\n\ntype filesystemCache struct {\n\tdir string\n\tfs  afero.Fs\n\tttl time.Duration\n}\n\nfunc (d *filesystemCache) GetCache(name, version string) Cache {\n\tfsys, err := subFs(d.fs, name, version)\n\tif err != nil {\n\t\tlog.Warnf(\"error getting cache for: %s/%s: %v\", name, version, err)\n\t\treturn &bypassedCache{}\n\t}\n\treturn &filesystemCache{\n\t\tdir: filepath.Join(d.dir, name, version),\n\t\tfs:  fsys,\n\t\tttl: d.ttl,\n\t}\n}\n\nfunc (d *filesystemCache) RootDirs() []string {\n\tif d.dir == \"\" {\n\t\treturn nil\n\t}\n\treturn []string{d.dir}\n}\n\nfunc (d *filesystemCache) Read(key string) (ReaderAtCloser, error) {\n\tpath := makeDiskKey(key)\n\tf, err := d.fs.Open(path)\n\tif err != nil {\n\t\tlog.Tracef(\"no cache entry for %s %s: %v\", d.dir, key, err)\n\t\treturn nil, errNotFound\n\t} else if stat, err := f.Stat(); err != nil || stat == nil || time.Since(stat.ModTime()) > d.ttl {\n\t\tlog.Tracef(\"cache entry is too old for %s %s\", d.dir, key)\n\t\treturn nil, errExpired\n\t}\n\tlog.Tracef(\"using cache for %s %s\", d.dir, key)\n\treturn f, nil\n}\n\nfunc (d *filesystemCache) Write(key string, contents io.Reader) error {\n\tpath := makeDiskKey(key)\n\treturn afero.WriteReader(d.fs, path, contents)\n}\n\n// subFs returns a writable directory with the given name under the root cache directory returned from findRoot,\n// the directory will be created if it does not exist\nfunc subFs(fsys afero.Fs, subDirs ...string) (afero.Fs, error) {\n\tdir := filepath.Join(subDirs...)\n\tdir = filepath.Clean(dir)\n\tstat, err := fsys.Stat(dir)\n\tif errors.Is(err, afero.ErrFileNotFound) {\n\t\terr = fsys.MkdirAll(dir, dirPermissions)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to create directory at '%s': %v\", dir, err)\n\t\t}\n\t\tstat, err = fsys.Stat(dir)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif err != nil || stat == nil || !stat.IsDir() {\n\t\treturn nil, fmt.Errorf(\"unable to verify directory '%s': %v\", dir, err)\n\t}\n\tfsys = afero.NewBasePathFs(fsys, dir)\n\treturn fsys, err\n}\n\nvar keyReplacer = regexp.MustCompile(\"[^-._/a-zA-Z0-9]\")\n\n// makeDiskKey makes a safe sub-path but not escape forward slashes, this allows for logical partitioning on disk\nfunc makeDiskKey(key string) string {\n\t// encode single dot directory\n\tif key == \".\" {\n\t\treturn \"%2E\"\n\t}\n\t// replace any disallowed chars with encoded form\n\tkey = keyReplacer.ReplaceAllStringFunc(key, url.QueryEscape)\n\t// allow . in names but not ..\n\tkey = strings.ReplaceAll(key, \"..\", \"%2E%2E\")\n\treturn key\n}\n\nvar errNotFound = fmt.Errorf(\"not found\")\nvar errExpired = fmt.Errorf(\"expired\")\n"
  },
  {
    "path": "internal/cache/filesystem_test.go",
    "content": "package cache\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\nfunc Test_filesystemCache(t *testing.T) {\n\tdir := t.TempDir()\n\tman, err := NewFromDir(dir, 1*time.Minute)\n\trequire.NoError(t, err)\n\n\tcacheName := \"test\"\n\tcacheVersion := \"v1\"\n\tcache := man.GetCache(cacheName, cacheVersion)\n\n\tcacheKey := \"test-key\"\n\tcontentsValue := \"some contents to cache\"\n\n\terr = cache.Write(cacheKey, strings.NewReader(contentsValue))\n\trequire.NoError(t, err)\n\n\trdr, err := cache.Read(cacheKey)\n\trequire.NoError(t, err)\n\tdefer internal.CloseAndLogError(rdr, cacheKey)\n\n\tcontents, err := io.ReadAll(rdr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, contentsValue, string(contents))\n\n\t// check the contents were actually written to disk as expected\n\tcontents, err = os.ReadFile(filepath.Join(dir, cacheName, cacheVersion, cacheKey))\n\trequire.NoError(t, err)\n\trequire.Equal(t, contentsValue, string(contents))\n\n\t_, err = cache.Read(\"otherKey\")\n\trequire.ErrorIs(t, err, errNotFound)\n}\n\nfunc Test_makeDiskKey(t *testing.T) {\n\ttests := []struct {\n\t\tin       string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tin:       \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tin:       \".\",\n\t\t\texpected: \"%2E\",\n\t\t},\n\t\t{\n\t\t\tin:       \"..\",\n\t\t\texpected: \"%2E%2E\",\n\t\t},\n\t\t{\n\t\t\tin:       \"github.com\",\n\t\t\texpected: \"github.com\",\n\t\t},\n\t\t{\n\t\t\tin:       \"../github.com\",\n\t\t\texpected: \"%2E%2E/github.com\",\n\t\t},\n\t\t{\n\t\t\tin:       \"github.com/../..\",\n\t\t\texpected: \"github.com/%2E%2E/%2E%2E\",\n\t\t},\n\t\t{\n\t\t\tin:       \"github.com/%2E../..\",\n\t\t\texpected: \"github.com/%252E%2E%2E/%2E%2E\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.in, func(t *testing.T) {\n\t\t\tgot := makeDiskKey(test.in)\n\t\t\t// validate appropriate escaping\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t\t// also validate that unescaped string matches original\n\t\t\tunescaped, err := url.QueryUnescape(got)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, test.in, unescaped)\n\t\t})\n\t}\n}\n\nfunc Test_errors(t *testing.T) {\n\ttmp := t.TempDir()\n\tcache := filepath.Join(tmp, \"cache\")\n\t// make a non-writable directory\n\trequire.NoError(t, os.MkdirAll(cache, 0500|os.ModeDir))\n\t// attempt to make cache in non-writable directory\n\tdir := filepath.Join(cache, \"dir\")\n\t_, err := NewFromDir(dir, time.Hour)\n\trequire.ErrorContains(t, err, fmt.Sprintf(\"unable to create directory at '%s':\", dir))\n}\n"
  },
  {
    "path": "internal/cache/hash_type.go",
    "content": "package cache\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/gohugoio/hashstructure\"\n)\n\n// hashType returns a stable hash based on the structure of the type\nfunc hashType[T any]() string {\n\t// get the base type and hash an empty instance\n\tvar t T\n\tempty := emptyValue(reflect.TypeOf(t)).Interface()\n\thash, err := hashstructure.Hash(empty, &hashstructure.HashOptions{\n\t\tZeroNil:         false,\n\t\tIgnoreZeroValue: false,\n\t\tSlicesAsSets:    false,\n\t\tUseStringer:     false,\n\t})\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to use type as cache key: %w\", err))\n\t}\n\treturn fmt.Sprintf(\"%x\", hash)\n}\n\nfunc emptyValue(t reflect.Type) reflect.Value {\n\tswitch t.Kind() {\n\tcase reflect.Pointer:\n\t\te := t.Elem()\n\t\tv := emptyValue(e)\n\t\tif v.CanAddr() {\n\t\t\treturn v.Addr()\n\t\t}\n\t\tptrv := reflect.New(e)\n\t\tptrv.Elem().Set(v)\n\t\treturn ptrv\n\tcase reflect.Slice:\n\t\tv := emptyValue(t.Elem())\n\t\ts := reflect.MakeSlice(t, 1, 1)\n\t\ts.Index(0).Set(v)\n\t\treturn s\n\tcase reflect.Struct:\n\t\tv := reflect.New(t).Elem()\n\t\t// get all empty field values, too\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tf := t.Field(i)\n\t\t\tif isIgnored(f) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfv := v.Field(i)\n\t\t\tif fv.CanSet() {\n\t\t\t\tfv.Set(emptyValue(f.Type))\n\t\t\t}\n\t\t}\n\t\treturn v\n\tdefault:\n\t\treturn reflect.New(t).Elem()\n\t}\n}\n\nfunc isIgnored(f reflect.StructField) bool {\n\tif !f.IsExported() {\n\t\treturn true\n\t}\n\ttag := f.Tag.Get(\"hash\")\n\tif tag == \"-\" || tag == \"ignore\" {\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "internal/cache/hash_type_test.go",
    "content": "package cache\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/gohugoio/hashstructure\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_hashType(t *testing.T) {\n\ttype t1 struct {\n\t\tName string\n\t}\n\ttype t2 struct {\n\t\tName string\n\t}\n\ttype generic[T any] struct {\n\t\tVal T\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\thash     func() string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"struct 1\",\n\t\t\thash:     func() string { return hashType[t1]() },\n\t\t\texpected: \"d106c3ffbf98a0b1\",\n\t\t},\n\t\t{\n\t\t\tname:     \"slice of struct 1\",\n\t\t\thash:     func() string { return hashType[[]t1]() },\n\t\t\texpected: \"8122ace4ee1af0b4\",\n\t\t},\n\t\t{\n\t\t\tname:     \"slice of struct 2\",\n\t\t\thash:     func() string { return hashType[[]t2]() },\n\t\t\texpected: \"8cc04b5808be5bf9\",\n\t\t},\n\t\t{\n\t\t\tname:     \"ptr 1\",\n\t\t\thash:     func() string { return hashType[*t1]() },\n\t\t\texpected: \"d106c3ffbf98a0b1\", // same hash as t1, which is ok since the structs are the same\n\t\t},\n\t\t{\n\t\t\tname:     \"slice of ptr 1\",\n\t\t\thash:     func() string { return hashType[[]*t1]() },\n\t\t\texpected: \"8122ace4ee1af0b4\", // same hash as []t1, again underlying serialization is the same\n\t\t},\n\t\t{\n\t\t\tname:     \"slice of ptr 2\",\n\t\t\thash:     func() string { return hashType[[]*t2]() },\n\t\t\texpected: \"8cc04b5808be5bf9\", // same hash as []t2, underlying serialization is the same\n\t\t},\n\t\t{\n\t\t\tname:     \"slice of ptr of slice of ptr\",\n\t\t\thash:     func() string { return hashType[[]*[]*t1]() },\n\t\t\texpected: \"500d9f5b3a5977ce\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic 1\",\n\t\t\thash:     func() string { return hashType[generic[t1]]() },\n\t\t\texpected: \"b5fbb30e24400e81\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic 2\",\n\t\t\thash:     func() string { return hashType[generic[t2]]() },\n\t\t\texpected: \"becdb767c6b22bfa\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic with ptr 1\",\n\t\t\thash:     func() string { return hashType[generic[*t1]]() },\n\t\t\texpected: \"30c8855bf290fd83\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic with ptr 2\",\n\t\t\thash:     func() string { return hashType[generic[*t2]]() },\n\t\t\texpected: \"b66366b6ce9e6361\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic with slice 1\",\n\t\t\thash:     func() string { return hashType[generic[[]t1]]() },\n\t\t\texpected: \"d2ed158942fa6c29\",\n\t\t},\n\t\t{\n\t\t\tname:     \"generic with slice 2\",\n\t\t\thash:     func() string { return hashType[generic[[]t2]]() },\n\t\t\texpected: \"7a7bec575871c179\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\trequire.Equal(t, test.expected, test.hash())\n\t\t})\n\t}\n}\n\nfunc Test_hashIgnores(t *testing.T) {\n\thash := func(v any) string {\n\t\tv, err := hashstructure.Hash(v, &hashstructure.HashOptions{})\n\t\trequire.NoError(t, err)\n\t\treturn fmt.Sprintf(\"%x\", v)\n\t}\n\ttype t1 struct {\n\t\tName        string\n\t\tnotExported string\n\t}\n\trequire.Equal(t, hash(t1{notExported: \"a value\"}), hashType[t1]())\n\n\ttype t2 struct {\n\t\tName     string\n\t\tExported string `hash:\"ignore\"`\n\t}\n\trequire.Equal(t, hash(t2{Exported: \"another value\"}), hashType[t2]())\n\n\ttype t3 struct {\n\t\tName     string\n\t\tExported string `hash:\"-\"`\n\t}\n\trequire.Equal(t, hash(t3{Exported: \"still valued\"}), hashType[t3]())\n}\n"
  },
  {
    "path": "internal/cache/memory.go",
    "content": "package cache\n\nimport (\n\t\"time\"\n\n\t\"github.com/spf13/afero\"\n)\n\n// NewInMemory returns an in-memory only cache manager\nfunc NewInMemory(ttl time.Duration) Manager {\n\tif ttl <= 0 {\n\t\treturn &bypassedCache{}\n\t}\n\treturn &filesystemCache{\n\t\tdir: \"\",\n\t\tfs:  afero.NewMemMapFs(),\n\t\tttl: ttl,\n\t}\n}\n"
  },
  {
    "path": "internal/cache/memory_test.go",
    "content": "package cache\n\nimport (\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\nfunc Test_NewInMemory(t *testing.T) {\n\tman := NewInMemory(time.Hour)\n\n\tcacheName := \"test\"\n\tcacheVersion := \"v1\"\n\tcache := man.GetCache(cacheName, cacheVersion)\n\n\tcacheKey := \"test-key\"\n\tcontentsValue := \"some contents to cache\"\n\n\terr := cache.Write(cacheKey, strings.NewReader(contentsValue))\n\trequire.NoError(t, err)\n\n\trdr, err := cache.Read(cacheKey)\n\trequire.NoError(t, err)\n\tdefer internal.CloseAndLogError(rdr, cacheKey)\n\n\tcontents, err := io.ReadAll(rdr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, contentsValue, string(contents))\n\n\t_, err = cache.Read(\"otherKey\")\n\trequire.ErrorIs(t, err, errNotFound)\n}\n"
  },
  {
    "path": "internal/cache/resolver.go",
    "content": "package cache\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"path\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// Resolver interface provides a single Resolve method, which will return from cache\n// or call the provided resolve function to get the value if not available in cache\ntype Resolver[T any] interface {\n\t// Resolve attempts to resolve the given key from cache and convert it to the type of the cache,\n\t// or calls the resolver function if unable to resolve a cached value\n\tResolve(key string, resolver resolverFunc[T]) (T, error)\n}\n\n// GetResolver returns a cache resolver for persistent cached data across Syft runs, stored in a unique\n// location based on the provided name and versioned by the type\nfunc GetResolver[T any](name, version string) Resolver[T] {\n\ttypeHash := hashType[T]()\n\tversionKey := path.Join(version, typeHash)\n\treturn &cacheResolver[T]{\n\t\tname:  fmt.Sprintf(\"%s/%s\", name, versionKey),\n\t\tcache: manager.GetCache(name, versionKey),\n\t}\n}\n\nconst resolverKeySuffix = \".json\"\n\ntype resolverFunc[T any] func() (T, error)\n\ntype cacheResolver[T any] struct {\n\tname  string\n\tcache Cache\n}\n\nvar _ interface {\n\tResolver[int]\n} = (*cacheResolver[int])(nil)\n\nfunc (r *cacheResolver[T]) Resolve(key string, resolver resolverFunc[T]) (T, error) {\n\tkey += resolverKeySuffix\n\n\trdr, err := r.cache.Read(key)\n\tif rdr == nil || err != nil {\n\t\treturn r.resolveAndCache(key, resolver)\n\t}\n\tdefer internal.CloseAndLogError(rdr, key)\n\n\tdec := json.NewDecoder(rdr)\n\tif dec == nil {\n\t\tlog.Tracef(\"error getting cache json decoder for %s %v: %v\", r.name, key, err)\n\t\treturn r.resolveAndCache(key, resolver)\n\t}\n\tvar t T\n\terr = dec.Decode(&t)\n\tif err != nil {\n\t\tlog.Tracef(\"error decoding cached entry for %s %v: %v\", r.name, key, err)\n\t\treturn r.resolveAndCache(key, resolver)\n\t}\n\t// no error, able to resolve from cache\n\treturn t, nil\n}\n\nfunc (r *cacheResolver[T]) resolveAndCache(key string, resolver func() (T, error)) (T, error) {\n\tt, err := resolver()\n\tif err != nil {\n\t\treturn t, err\n\t}\n\tvar data bytes.Buffer\n\tenc := json.NewEncoder(&data)\n\tenc.SetEscapeHTML(false)\n\terr = enc.Encode(t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\terr = r.cache.Write(key, &data)\n\treturn t, err\n}\n"
  },
  {
    "path": "internal/cache/resolver_test.go",
    "content": "package cache\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_Resolver(t *testing.T) {\n\toriginal := GetManager()\n\tdefer SetManager(original)\n\tSetManager(NewInMemory(time.Hour))\n\n\ttype sub struct {\n\t\tName  string\n\t\tValue bool\n\t}\n\n\ttype thing struct {\n\t\tValue  string\n\t\tValues []int\n\t\tSubs   []*sub\n\t}\n\n\tversionHash := hashType[thing]()\n\tcache := GetManager().GetCache(\"test\", \"v7/\"+versionHash)\n\n\tresolver := GetResolver[thing](\"test\", \"v7\")\n\trequire.NotNil(t, resolver)\n\n\trequire.IsType(t, &cacheResolver[thing]{}, resolver)\n\tcr := resolver.(*cacheResolver[thing])\n\n\trequire.IsType(t, cache, cr.cache)\n\n\tresolveErrCount := 0\n\tresolveThingErr := func() (thing, error) {\n\t\tresolveErrCount++\n\t\treturn thing{}, fmt.Errorf(\"an error\")\n\t}\n\n\t_, err := resolver.Resolve(\"err\", resolveThingErr)\n\trequire.ErrorContains(t, err, \"an error\")\n\trequire.Equal(t, 1, resolveErrCount)\n\n\t_, err = resolver.Resolve(\"err\", resolveThingErr)\n\trequire.ErrorContains(t, err, \"an error\")\n\trequire.Equal(t, 2, resolveErrCount)\n\n\taThing := thing{\n\t\tValue:  \"a value\",\n\t\tValues: []int{7, 8, 9},\n\t\tSubs: []*sub{\n\t\t\t{\n\t\t\t\tName:  \"sub1\",\n\t\t\t\tValue: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:  \"sub2\",\n\t\t\t\tValue: false,\n\t\t\t},\n\t\t},\n\t}\n\n\tresolveThingCount := 0\n\tresolveThing := func() (thing, error) {\n\t\tresolveThingCount++\n\t\treturn aThing, nil\n\t}\n\n\tval, err := resolver.Resolve(\"thing\", resolveThing)\n\trequire.NoError(t, err)\n\trequire.Equal(t, 1, resolveThingCount)\n\trequire.Equal(t, aThing, val)\n\n\tval, err = resolver.Resolve(\"thing\", resolveThing)\n\trequire.NoError(t, err)\n\trequire.Equal(t, 1, resolveThingCount)\n\trequire.Equal(t, aThing, val)\n\n\trdr, err := cache.Read(\"thing\" + resolverKeySuffix)\n\trequire.NoError(t, err)\n\tdecoder := json.NewDecoder(rdr)\n\n\tvar val2 thing\n\terr = decoder.Decode(&val2)\n\trequire.NoError(t, err)\n\trequire.Equal(t, aThing, val2)\n}\n"
  },
  {
    "path": "internal/capabilities/README.md",
    "content": "# Cataloger Capabilities Documentation\n\nThis documentation describes the format and structure of cataloger capabilities YAML files.\n\n## File Organization\n\nCapabilities are organized as follows:\n- **Cataloger capabilities**: Located in `syft/pkg/cataloger/*/capabilities.yaml` (one file per ecosystem, alongside the cataloger source code: `golang/capabilities.yaml`, `python/capabilities.yaml`, etc.)\n- **Application configuration**: Located in `internal/capabilities/appconfig.yaml`\n\nEach `capabilities.yaml` file is partially auto-generated. Run `go generate ./internal/capabilities` to regenerate.\n- Fields marked **AUTO-GENERATED** will be updated during regeneration\n- All **capabilities** sections are **MANUAL** - edit these to describe cataloger behavior\n\n## Capability Sections\n\nThere are two types of capability sections depending on cataloger type:\n\n### 1. Generic Catalogers (`type: generic`)\n- Have capabilities at the **PARSER level**\n- Each parser function has its own capabilities section\n- Allows different parsers within the same cataloger to have different capabilities\n\n### 2. Custom Catalogers (`type: custom`)\n- Have capabilities at the **CATALOGER level**\n- Single capabilities section for the entire cataloger\n\n## Capabilities Format\n\nCapabilities use a field-based format with defaults and optional conditional overrides:\n\n```yaml\ncapabilities:\n  - field: <field-name>           # dot-notation path (e.g., \"license\", \"dependency.depth\")\n    default: <value>              # value when no conditions match\n    conditions:                   # optional - conditional overrides evaluated in order\n      - when: {ConfigField: val}  # when these config fields match (AND logic)\n        value: <override-value>   # use this value instead\n        comment: \"explanation\"    # optional - why this condition exists\n    evidence:                     # optional - source code references\n      - \"StructName.FieldName\"\n    comment: \"explanation\"        # optional - general field explanation\n```\n\n## Detector Conditions\n\nDetectors (used by custom catalogers) can have optional conditions that control when they are active. This allows a single cataloger to have different detection behavior based on configuration.\n\n### Structure\n\n```yaml\ndetectors:\n  - method: glob                 # AUTO-GENERATED - detection method\n    criteria: [\"**/*.jar\"]       # AUTO-GENERATED - patterns to match\n    comment: \"always active\"     # MANUAL - optional explanation\n  - method: glob\n    criteria: [\"**/*.zip\"]\n    conditions:                  # MANUAL - when this detector is active\n      - when: {IncludeZipFiles: true}  # config fields that must match\n        comment: \"optional explanation\"\n    comment: \"ZIP detection requires config\"\n```\n\n### Notes\n- Conditions reference fields from the cataloger's config struct\n- Multiple conditions in the array use **OR logic** (any condition can activate)\n- Multiple fields in a `when` clause use **AND logic** (all must match)\n- Detectors without conditions are always active\n- Only custom catalogers support detectors with conditions\n\n## Condition Evaluation\n\n- Conditions are evaluated in array order (first match wins)\n- Multiple fields in a `when` clause use **AND logic** (all must match)\n- Multiple conditions in the array use **OR logic** (first matching condition)\n- If no conditions match, the default value is used\n\n## Capability Fields\n\nStandard capability field names and their value types:\n\n### `license` (boolean)\n\nWhether license information is available.\n\n**Examples:**\n```yaml\ndefault: true                 # always available\ndefault: false                # never available\ndefault: false                # requires configuration\n  conditions:\n    - when: {SearchRemoteLicenses: true}\n      value: true\n```\n\n### `dependency.depth` (array of strings)\n\nWhich dependency depths can be discovered.\n\n**Values:** `direct` (immediate deps), `indirect` (transitive deps)\n\n**Examples:**\n```yaml\ndefault: [direct]                    # only immediate dependencies\ndefault: [direct, indirect]          # full transitive closure\ndefault: []                          # no dependency information\n```\n\n### `dependency.edges` (string)\n\nRelationships between nodes and completeness of the dependency graph.\n\n**Values:**\n- `\"\"` - dependencies found but no edges between them\n- `\"flat\"` - single level of dependencies with edges to root package only\n- `\"reduced\"` - transitive reduction (redundant edges removed)\n- `\"complete\"` - all relationships with accurate direct and indirect edges\n\n**Examples:**\n```yaml\ndefault: complete\ndefault: \"\"\n```\n\n### `dependency.kinds` (array of strings)\n\nTypes of dependencies that can be discovered.\n\n**Values:** `runtime`, `dev`, `build`, `test`, `optional`\n\n**Examples:**\n```yaml\ndefault: [runtime]                   # production dependencies only\ndefault: [runtime, dev]              # production and development\ndefault: [runtime, dev, build]       # all dependency types\ndefault: [runtime]                   # with conditional dev deps\n  conditions:\n    - when: {IncludeDevDeps: true}\n      value: [runtime, dev]\n```\n\n### `package_manager.files.listing` (boolean)\n\nWhether file listings are available (which files belong to the package).\n\n**Examples:**\n```yaml\ndefault: true\ndefault: false\n  conditions:\n    - when: {CaptureOwnedFiles: true}\n      value: true\n```\n\n### `package_manager.files.digests` (boolean)\n\nWhether file digests/checksums are included in listings.\n\n**Examples:**\n```yaml\ndefault: true\ndefault: false\n```\n\n### `package_manager.package_integrity_hash` (boolean)\n\nWhether a hash for verifying package integrity is available.\n\n**Examples:**\n```yaml\ndefault: true\ndefault: false\n```\n\n## Examples\n\n### Simple cataloger with no configuration\n\n```yaml\ncapabilities:\n  - name: license\n    default: true\n    comment: \"license field always present in package.json\"\n  - name: dependency.depth\n    default: [direct]\n  - name: dependency.edges\n    default: \"\"\n  - name: dependency.kinds\n    default: [runtime]\n    comment: \"devDependencies not parsed by this cataloger\"\n  - name: package_manager.files.listing\n    default: false\n  - name: package_manager.files.digests\n    default: false\n  - name: package_manager.package_integrity_hash\n    default: false\n```\n\n### Cataloger with configuration-dependent capabilities\n\n```yaml\ncapabilities:\n  - name: license\n    default: false\n    conditions:\n      - when: {SearchLocalModCacheLicenses: true}\n        value: true\n        comment: \"searches for licenses in GOPATH mod cache\"\n      - when: {SearchRemoteLicenses: true}\n        value: true\n        comment: \"fetches licenses from proxy.golang.org\"\n    comment: \"license scanning requires configuration\"\n  - name: dependency.depth\n    default: [direct, indirect]\n  - name: dependency.edges\n    default: flat\n  - name: dependency.kinds\n    default: [runtime, dev]\n  - name: package_manager.files.listing\n    default: false\n  - name: package_manager.files.digests\n    default: false\n  - name: package_manager.package_integrity_hash\n    default: true\n    evidence:\n      - \"GolangBinaryBuildinfoEntry.H1Digest\"\n```\n"
  },
  {
    "path": "internal/capabilities/appconfig.yaml",
    "content": "# Application-level configuration. See README.md for documentation.\n# This file is partially auto-generated. Run 'go generate ./internal/capabilities' to regenerate.\n\napplication: # AUTO-GENERATED - application-level config keys\n  - key: dotnet.dep-packages-must-claim-dll\n    description: only keep dep.json packages which have a runtime/resource DLL claimed in the deps.json targets section (but not necessarily found on disk). The package is also included if any child package claims a DLL, even if the package itself does not claim a DLL.\n  - key: dotnet.dep-packages-must-have-dll\n    description: only keep dep.json packages which an executable on disk is found. The package is also included if a DLL is found for any child package, even if the package itself does not have a DLL.\n  - key: dotnet.exclude-project-references\n    description: exclude packages with type \"project\" from deps.json output (these are internal project references, not NuGet packages)\n  - key: dotnet.propagate-dll-claims-to-parents\n    description: treat DLL claims or on-disk evidence for child packages as DLL claims or on-disk evidence for any parent package\n  - key: dotnet.relax-dll-claims-when-bundling-detected\n    description: show all packages from the deps.json if bundling tooling is present as a dependency (e.g. ILRepack)\n  - key: golang.local-mod-cache-dir\n    description: specify an explicit go mod cache directory, if unset this defaults to $GOPATH/pkg/mod or $HOME/go/pkg/mod\n  - key: golang.local-vendor-dir\n    description: specify an explicit go vendor directory, if unset this defaults to ./vendor\n  - key: golang.main-module-version.from-build-settings\n    description: use the build settings (e.g. vcs.version & vcs.time) to craft a v0 pseudo version (e.g. v0.0.0-20220308212642-53e6d0aaf6fb) when a more accurate version cannot be found otherwise\n  - key: golang.main-module-version.from-contents\n    description: search for semver-like strings in the binary contents\n  - key: golang.main-module-version.from-ld-flags\n    description: look for LD flags that appear to be setting a version (e.g. -X main.version=1.0.0)\n  - key: golang.no-proxy\n    description: specifies packages which should not be fetched by proxy if unset this defaults to $GONOPROXY\n  - key: golang.proxy\n    description: remote proxy to use when retrieving go packages from the network, if unset this defaults to $GOPROXY followed by https://proxy.golang.org\n  - key: golang.search-local-mod-cache-licenses\n    description: search for go package licences in the GOPATH of the system running Syft, note that this is outside the container filesystem and potentially outside the root of a local directory scan\n  - key: golang.search-local-vendor-licenses\n    description: search for go package licences in the vendor folder on the system running Syft, note that this is outside the container filesystem and potentially outside the root of a local directory scan\n  - key: golang.search-remote-licenses\n    description: search for go package licences by retrieving the package from a network proxy\n  - key: golang.use-packages-lib\n    description: use the golang.org/x/tools/go/packages library, which executes golang tooling found on the path in addition to potential network access to get the most accurate results\n  - key: java.maven-local-repository-dir\n    description: override the default location of the local Maven repository. the default is the subdirectory '.m2/repository' in your home directory\n  - key: java.maven-url\n    description: maven repository to use, defaults to Maven central\n  - key: java.max-parent-recursive-depth\n    description: depth to recursively resolve parent POMs, no limit if <= 0\n  - key: java.resolve-transitive-dependencies\n    description: resolve transient dependencies such as those defined in a dependency's POM on Maven central\n  - key: java.use-maven-local-repository\n    description: 'use the local Maven repository to retrieve pom files. When Maven is installed and was previously used for building the software that is being scanned, then most pom files will be available in this repository on the local file system. this greatly speeds up scans. when all pom files are available in the local repository, then ''use-network'' is not needed. TIP: If you want to download all required pom files to the local repository without running a full build, run ''mvn help:effective-pom'' before performing the scan with syft.'\n  - key: java.use-network\n    description: enables Syft to use the network to fetch version and license information for packages when a parent or imported pom file is not found in the local maven repository. the pom files are downloaded from the remote Maven repository at 'maven-url'\n  - key: javascript.include-dev-dependencies\n    description: include development-scoped dependencies\n  - key: javascript.npm-base-url\n    description: base NPM url to use\n  - key: javascript.search-remote-licenses\n    description: enables Syft to use the network to fill in more detailed license information\n  - key: linux-kernel.catalog-modules\n    description: whether to catalog linux kernel modules found within lib/modules/** directories\n  - key: nix.capture-owned-files\n    description: enumerate all files owned by packages found within Nix store paths\n  - key: python.guess-unpinned-requirements\n    description: when running across entries in requirements.txt that do not specify a specific version (e.g. \"sqlalchemy >= 1.0.0, <= 2.0.0, != 3.0.0, <= 3.0.0\"), attempt to guess what the version could be based on the version requirements specified (e.g. \"1.0.0\"). When enabled the lowest expressible version when given an arbitrary constraint will be used (even if that version may not be available/published).\n  - key: python.pypi-base-url\n    description: base Pypi url to use\n  - key: python.search-remote-licenses\n    description: enables Syft to use the network to fill in more detailed license information\n"
  },
  {
    "path": "internal/capabilities/capabilities.go",
    "content": "// Package capabilities provides discovery and tracking of cataloger capabilities.\npackage capabilities\n\nimport (\n\t\"embed\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"path/filepath\"\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/internal/task\"\n)\n\n//go:generate go run ./generate\n\n//go:embed appconfig.yaml\nvar appconfigYAML []byte\n\nvar catalogerFiles *embed.FS\n\nfunc RegisterCatalogerFiles(f embed.FS) {\n\tcatalogerFiles = &f\n}\n\n// LoadDocument loads and returns the complete document including configs and app-configs\nfunc LoadDocument() (*Document, error) {\n\tif catalogerFiles == nil {\n\t\treturn nil, fmt.Errorf(\"cataloger files not registered\")\n\t}\n\n\t// parse application config\n\tvar appDoc struct {\n\t\tApplication []ApplicationConfigField `yaml:\"application\"`\n\t}\n\tif err := yaml.Unmarshal(appconfigYAML, &appDoc); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse appconfig.yaml: %w\", err)\n\t}\n\n\t// walk the embedded filesystem to find all cataloger capabilities.yaml files\n\tvar catalogersDoc Document\n\tcatalogersDoc.ApplicationConfig = appDoc.Application\n\tcatalogersDoc.Configs = make(map[string]CatalogerConfigEntry)\n\n\terr := fs.WalkDir(catalogerFiles, \".\", func(path string, d fs.DirEntry, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// skip non-yaml files and directories\n\t\tif d.IsDir() || filepath.Ext(path) != \".yaml\" || path == \".\" {\n\t\t\treturn nil\n\t\t}\n\n\t\t// read the file\n\t\tdata, err := catalogerFiles.ReadFile(path)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to read %s: %w\", path, err)\n\t\t}\n\n\t\t// parse the file\n\t\tvar capDoc struct {\n\t\t\tConfigs    map[string]CatalogerConfigEntry `yaml:\"configs\"`\n\t\t\tCatalogers []CatalogerEntry                `yaml:\"catalogers\"`\n\t\t}\n\t\tif err := yaml.Unmarshal(data, &capDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to parse %s: %w\", path, err)\n\t\t}\n\n\t\t// merge configs\n\t\tfor k, v := range capDoc.Configs {\n\t\t\tcatalogersDoc.Configs[k] = v\n\t\t}\n\n\t\t// merge catalogers\n\t\tcatalogersDoc.Catalogers = append(catalogersDoc.Catalogers, capDoc.Catalogers...)\n\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to walk cataloger capabilities: %w\", err)\n\t}\n\n\t// sort catalogers by name for consistency\n\tsort.Slice(catalogersDoc.Catalogers, func(i, j int) bool {\n\t\treturn catalogersDoc.Catalogers[i].Name < catalogersDoc.Catalogers[j].Name\n\t})\n\n\treturn &catalogersDoc, nil\n}\n\n// Packages loads and returns all cataloger capabilities from the embedded YAML file\nfunc Packages() ([]CatalogerEntry, error) {\n\tdoc, err := LoadDocument()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn doc.Catalogers, nil\n}\n\n// CatalogerInfo represents a cataloger's name and selection tags\ntype CatalogerInfo struct {\n\tName      string\n\tSelectors []string // tags for cataloger name selection\n}\n\n// ExtractCatalogerInfo extracts cataloger names and their selection tags from tasks\nfunc ExtractCatalogerInfo(tasks []task.Task) []CatalogerInfo {\n\tvar infos []CatalogerInfo\n\n\tfor _, tsk := range tasks {\n\t\tvar selectors []string\n\t\tname := tsk.Name()\n\n\t\tif s, ok := tsk.(task.Selector); ok {\n\t\t\tset := strset.New(s.Selectors()...)\n\t\t\tset.Remove(name)\n\t\t\tselectors = set.List()\n\t\t\tsort.Strings(selectors)\n\t\t}\n\n\t\tinfos = append(infos, CatalogerInfo{\n\t\t\tName:      name,\n\t\t\tSelectors: selectors,\n\t\t})\n\t}\n\n\treturn infos\n}\n"
  },
  {
    "path": "internal/capabilities/evaluation.go",
    "content": "package capabilities\n\nimport \"reflect\"\n\n// EvaluateCapabilities evaluates a capability set against a given configuration\n// and returns the effective capability values as a flat map.\n// Example: {\"license\": false, \"dependency.depth\": [\"direct\", \"indirect\"]}\nfunc EvaluateCapabilities(caps CapabilitySet, config map[string]interface{}) map[string]interface{} {\n\tresult := make(map[string]interface{})\n\tfor _, capField := range caps {\n\t\tresult[capField.Name] = EvaluateField(capField, config)\n\t}\n\treturn result\n}\n\n// EvaluateField evaluates a single capability field against a configuration.\n// Conditions are evaluated in order, and the first matching condition's value is returned.\n// If no conditions match, the default value is returned.\nfunc EvaluateField(capField CapabilityField, config map[string]interface{}) interface{} {\n\t// check conditions in order (first match wins)\n\tfor _, cond := range capField.Conditions {\n\t\tif ConditionMatches(cond.When, config) {\n\t\t\treturn cond.Value\n\t\t}\n\t}\n\t// no condition matched, return default\n\treturn capField.Default\n}\n\n// ConditionMatches checks if a condition's when clause matches the given configuration.\n// All fields in the when clause must match the config (AND logic).\n// Returns true if all key-value pairs in when match the config.\nfunc ConditionMatches(when map[string]interface{}, config map[string]interface{}) bool {\n\t// all fields in when must match config (AND logic)\n\tfor key, expectedValue := range when {\n\t\tactualValue, exists := config[key]\n\t\tif !exists {\n\t\t\treturn false\n\t\t}\n\t\tif !valuesEqual(actualValue, expectedValue) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// valuesEqual compares two values for equality, handling different types appropriately.\n// Uses reflect.DeepEqual for complex types like slices and maps.\nfunc valuesEqual(a, b interface{}) bool {\n\t// handle nil cases\n\tif a == nil && b == nil {\n\t\treturn true\n\t}\n\tif a == nil || b == nil {\n\t\treturn false\n\t}\n\n\t// use reflect.DeepEqual for reliable comparison across types\n\treturn reflect.DeepEqual(a, b)\n}\n"
  },
  {
    "path": "internal/capabilities/evaluation_test.go",
    "content": "package capabilities\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_valuesEqual(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\ta    interface{}\n\t\tb    interface{}\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"both nil\",\n\t\t\ta:    nil,\n\t\t\tb:    nil,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"first nil second non-nil\",\n\t\t\ta:    nil,\n\t\t\tb:    \"value\",\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"first non-nil second nil\",\n\t\t\ta:    \"value\",\n\t\t\tb:    nil,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"equal strings\",\n\t\t\ta:    \"hello\",\n\t\t\tb:    \"hello\",\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"different strings\",\n\t\t\ta:    \"hello\",\n\t\t\tb:    \"world\",\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"equal booleans true\",\n\t\t\ta:    true,\n\t\t\tb:    true,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"equal booleans false\",\n\t\t\ta:    false,\n\t\t\tb:    false,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"different booleans\",\n\t\t\ta:    true,\n\t\t\tb:    false,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"equal integers\",\n\t\t\ta:    42,\n\t\t\tb:    42,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"different integers\",\n\t\t\ta:    42,\n\t\t\tb:    43,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"equal slices\",\n\t\t\ta:    []string{\"a\", \"b\", \"c\"},\n\t\t\tb:    []string{\"a\", \"b\", \"c\"},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"different slices\",\n\t\t\ta:    []string{\"a\", \"b\", \"c\"},\n\t\t\tb:    []string{\"a\", \"b\", \"d\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"slices different length\",\n\t\t\ta:    []string{\"a\", \"b\"},\n\t\t\tb:    []string{\"a\", \"b\", \"c\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"equal maps\",\n\t\t\ta:    map[string]int{\"x\": 1, \"y\": 2},\n\t\t\tb:    map[string]int{\"x\": 1, \"y\": 2},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"different maps\",\n\t\t\ta:    map[string]int{\"x\": 1, \"y\": 2},\n\t\t\tb:    map[string]int{\"x\": 1, \"y\": 3},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"different types string vs int\",\n\t\t\ta:    \"42\",\n\t\t\tb:    42,\n\t\t\twant: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := valuesEqual(tt.a, tt.b)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestConditionMatches(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\twhen   map[string]interface{}\n\t\tconfig map[string]interface{}\n\t\twant   bool\n\t}{\n\t\t{\n\t\t\tname:   \"empty when clause matches anything\",\n\t\t\twhen:   map[string]interface{}{},\n\t\t\tconfig: map[string]interface{}{\"key\": \"value\"},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname:   \"empty when clause with empty config\",\n\t\t\twhen:   map[string]interface{}{},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname:   \"single key match\",\n\t\t\twhen:   map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname:   \"single key mismatch\",\n\t\t\twhen:   map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": false},\n\t\t\twant:   false,\n\t\t},\n\t\t{\n\t\t\tname:   \"key missing from config\",\n\t\t\twhen:   map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   false,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple keys all match\",\n\t\t\twhen: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"UseNetwork\":                  true,\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"UseNetwork\":                  true,\n\t\t\t\t\"ExtraKey\":                    \"ignored\",\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple keys one mismatch\",\n\t\t\twhen: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"UseNetwork\":                  true,\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"UseNetwork\":                  false,\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple keys one missing\",\n\t\t\twhen: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"UseNetwork\":                  true,\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname:   \"string value match\",\n\t\t\twhen:   map[string]interface{}{\"mode\": \"fast\"},\n\t\t\tconfig: map[string]interface{}{\"mode\": \"fast\"},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname:   \"slice value match\",\n\t\t\twhen:   map[string]interface{}{\"formats\": []string{\"json\", \"yaml\"}},\n\t\t\tconfig: map[string]interface{}{\"formats\": []string{\"json\", \"yaml\"}},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname:   \"slice value mismatch\",\n\t\t\twhen:   map[string]interface{}{\"formats\": []string{\"json\", \"yaml\"}},\n\t\t\tconfig: map[string]interface{}{\"formats\": []string{\"json\", \"xml\"}},\n\t\t\twant:   false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := ConditionMatches(tt.when, tt.config)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestEvaluateField(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcapField CapabilityField\n\t\tconfig   map[string]interface{}\n\t\twant     interface{}\n\t}{\n\t\t{\n\t\t\tname: \"no conditions returns default\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:       \"license\",\n\t\t\t\tDefault:    false,\n\t\t\t\tConditions: nil,\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   false,\n\t\t},\n\t\t{\n\t\t\tname: \"empty conditions returns default\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:       \"license\",\n\t\t\t\tDefault:    false,\n\t\t\t\tConditions: []CapabilityCondition{},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   false,\n\t\t},\n\t\t{\n\t\t\tname: \"single condition matches\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"license\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\tValue: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\twant:   true,\n\t\t},\n\t\t{\n\t\t\tname: \"single condition does not match\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"license\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\tValue: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": false},\n\t\t\twant:   false,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple conditions first match wins\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"license\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\tValue: \"local\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchRemoteLicenses\": true},\n\t\t\t\t\t\tValue: \"remote\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": true,\n\t\t\t\t\"SearchRemoteLicenses\":        true,\n\t\t\t},\n\t\t\twant: \"local\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple conditions second matches\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"license\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\tValue: \"local\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchRemoteLicenses\": true},\n\t\t\t\t\t\tValue: \"remote\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": false,\n\t\t\t\t\"SearchRemoteLicenses\":        true,\n\t\t\t},\n\t\t\twant: \"remote\",\n\t\t},\n\t\t{\n\t\t\tname: \"no conditions match returns default\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"license\",\n\t\t\t\tDefault: \"none\",\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\tValue: \"local\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen:  map[string]any{\"SearchRemoteLicenses\": true},\n\t\t\t\t\t\tValue: \"remote\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": false,\n\t\t\t\t\"SearchRemoteLicenses\":        false,\n\t\t\t},\n\t\t\twant: \"none\",\n\t\t},\n\t\t{\n\t\t\tname: \"slice default value\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:       \"dependency.depth\",\n\t\t\t\tDefault:    []string{\"direct\", \"indirect\"},\n\t\t\t\tConditions: nil,\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   []string{\"direct\", \"indirect\"},\n\t\t},\n\t\t{\n\t\t\tname: \"condition with multiple when keys\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"feature\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen: map[string]any{\n\t\t\t\t\t\t\t\"EnableFeatureA\": true,\n\t\t\t\t\t\t\t\"EnableFeatureB\": true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"EnableFeatureA\": true,\n\t\t\t\t\"EnableFeatureB\": true,\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"condition with multiple when keys partial match fails\",\n\t\t\tcapField: CapabilityField{\n\t\t\t\tName:    \"feature\",\n\t\t\t\tDefault: false,\n\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t{\n\t\t\t\t\t\tWhen: map[string]any{\n\t\t\t\t\t\t\t\"EnableFeatureA\": true,\n\t\t\t\t\t\t\t\"EnableFeatureB\": true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"EnableFeatureA\": true,\n\t\t\t\t\"EnableFeatureB\": false,\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := EvaluateField(tt.capField, tt.config)\n\t\t\tif diff := cmp.Diff(tt.want, got); diff != \"\" {\n\t\t\t\tt.Errorf(\"EvaluateField() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestEvaluateCapabilities(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tcaps   CapabilitySet\n\t\tconfig map[string]interface{}\n\t\twant   map[string]interface{}\n\t}{\n\t\t{\n\t\t\tname:   \"empty capability set\",\n\t\t\tcaps:   CapabilitySet{},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant:   map[string]interface{}{},\n\t\t},\n\t\t{\n\t\t\tname: \"single capability no conditions\",\n\t\t\tcaps: CapabilitySet{\n\t\t\t\t{\n\t\t\t\t\tName:    \"license\",\n\t\t\t\t\tDefault: false,\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{},\n\t\t\twant: map[string]interface{}{\n\t\t\t\t\"license\": false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single capability with matching condition\",\n\t\t\tcaps: CapabilitySet{\n\t\t\t\t{\n\t\t\t\t\tName:    \"license\",\n\t\t\t\t\tDefault: false,\n\t\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\t\tValue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\twant: map[string]interface{}{\n\t\t\t\t\"license\": true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple capabilities mixed conditions\",\n\t\t\tcaps: CapabilitySet{\n\t\t\t\t{\n\t\t\t\t\tName:    \"license\",\n\t\t\t\t\tDefault: false,\n\t\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\t\tValue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"dependency.depth\",\n\t\t\t\t\tDefault: []string{\"direct\", \"indirect\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"dependency.edges\",\n\t\t\t\t\tDefault: \"flat\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\"SearchLocalModCacheLicenses\": true},\n\t\t\twant: map[string]interface{}{\n\t\t\t\t\"license\":          true,\n\t\t\t\t\"dependency.depth\": []string{\"direct\", \"indirect\"},\n\t\t\t\t\"dependency.edges\": \"flat\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"real-world go module binary cataloger example\",\n\t\t\tcaps: CapabilitySet{\n\t\t\t\t{\n\t\t\t\t\tName:    \"license\",\n\t\t\t\t\tDefault: false,\n\t\t\t\t\tConditions: []CapabilityCondition{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tWhen:  map[string]any{\"SearchLocalModCacheLicenses\": true},\n\t\t\t\t\t\t\tValue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tWhen:  map[string]any{\"SearchRemoteLicenses\": true},\n\t\t\t\t\t\t\tValue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"dependency.depth\",\n\t\t\t\t\tDefault: []string{\"direct\", \"indirect\"},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"dependency.edges\",\n\t\t\t\t\tDefault: \"flat\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"package_manager.files.listing\",\n\t\t\t\t\tDefault: false,\n\t\t\t\t},\n\t\t\t},\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"SearchLocalModCacheLicenses\": false,\n\t\t\t\t\"SearchRemoteLicenses\":        true,\n\t\t\t},\n\t\t\twant: map[string]interface{}{\n\t\t\t\t\"license\":                       true,\n\t\t\t\t\"dependency.depth\":              []string{\"direct\", \"indirect\"},\n\t\t\t\t\"dependency.edges\":              \"flat\",\n\t\t\t\t\"package_manager.files.listing\": false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nil capability set\",\n\t\t\tcaps: nil,\n\t\t\tconfig: map[string]interface{}{\n\t\t\t\t\"anything\": true,\n\t\t\t},\n\t\t\twant: map[string]interface{}{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := EvaluateCapabilities(tt.caps, tt.config)\n\t\t\tif diff := cmp.Diff(tt.want, got); diff != \"\" {\n\t\t\t\tt.Errorf(\"EvaluateCapabilities() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/.gitignore",
    "content": "/generate"
  },
  {
    "path": "internal/capabilities/generate/README.md",
    "content": "# Capabilities Generation System\n\nThis internal tool is responsible for:\n- partially generating the `syft/pkg/cataloger/*/capabilities.yaml` ecosystem files, which document what capabilities each cataloger in syft has\n- running completeness / consistency tests of the claims from capability YAML files against actual test observations\n\nSyft has dozens of catalogers across many ecosystems. Each cataloger has different capabilities, such as:\n- Some provide license information, others don't\n- Some detect transitive dependencies, others only direct\n- Some capabilities depend on configuration\n\nThe capability YAML files (located alongside cataloger source code) contain all of these capability claims, organized by ecosystem.\n\nThe `capabilities` generation system itself:\n1. **Discovers** cataloger information from source code using AST parsing\n2. **Extracts** metadata about parsers, detectors, and configuration from code and tests\n3. **Merges** discovered information with manually-maintained capability documentation\n4. **Validates** that the generated document is complete and in sync with the codebase\n\n**Why do this?** \nThe short answer is to provide a foundation for the OSS documentation, where the source of truth for facts about the capabilities of Syft can be derived from verifiable claims from the tool itself.\n\n\n## Quick Start\n\n**To regenerate capability YAML files after code changes:**\n```bash\nmake generate-capabilities\n```\n\nThis will:\n- Run unit tests under ./syft/pkg... to gather up-to-date cataloger behavior\n- Regenerate code that describes cataloger capabilities\n- Run completeness tests against the newly generated code to ensure all capability YAML claims are consistent with test observations\n\nIf you have made cataloger code changes you may see completeness tests fail, that's ok!\nThat only means that you need to manually update the capability YAML files that were generated.\n\n## Data Flow\n\n```mermaid\ngraph LR\n    subgraph \"Source Code Inputs\"\n        A1[syft/pkg/cataloger/*/<br/>cataloger.go]\n        A2[syft/pkg/cataloger/*/<br/>config.go]\n        A3[cmd/syft/internal/options/<br/>catalog.go, ecosystem.go]\n        A4[syft task factories<br/>AllCatalogers]\n    end\n\n    subgraph \"Test Inputs\"\n        B1[testdata/<br/>test-observations.json]\n    end\n\n    subgraph \"Discovery Processes\"\n        C1[discover_catalogers.go<br/>AST Parse Catalogers]\n        C2[discover_cataloger_configs.go<br/>AST Parse Configs]\n        C3[discover_app_config.go<br/>AST Parse App Configs]\n        C4[discover_metadata.go<br/>Read Observations]\n        C5[cataloger_config_linking.go<br/>Link Catalogers to Configs]\n        C6[cataloger_names.go<br/>Query Task Factories]\n    end\n\n    subgraph \"Discovered Data\"\n        D1[Generic Catalogers<br/>name, parsers, detectors]\n        D2[Config Structs<br/>fields, app-config keys]\n        D3[App Config Fields<br/>keys, descriptions, defaults]\n        D4[Metadata Types<br/>per parser/cataloger]\n        D5[Package Types<br/>per parser/cataloger]\n        D6[Cataloger-Config Links<br/>mapping]\n        D7[Selectors<br/>tags per cataloger]\n    end\n\n    subgraph \"Configuration/Overrides\"\n        E2[metadataTypeCoverageExceptions<br/>packageTypeCoverageExceptions<br/>observationExceptions]\n        E1[catalogerTypeOverrides<br/>catalogerConfigOverrides<br/>catalogerConfigExceptions]\n    end\n\n    subgraph \"Capabilities YAML processing\"\n        F1[io.go<br/>Load Existing YAML]\n        F2[merge.go<br/>Merge Logic]\n        F3[Preserve MANUAL fields<br/>Update AUTO-GENERATED]\n    end\n\n    subgraph \"Output\"\n        G1[syft/pkg/cataloger/*/<br/>capabilities.yaml]\n    end\n\n    subgraph \"Validation\"\n        H1[Distributed Tests<br/>Comprehensive Tests]\n        H2[metadata_check.go<br/>Type Coverage]\n    end\n\n    A1 --> C1\n    A2 --> C2\n    A3 --> C3\n    A4 --> C6\n    B1 --> C4\n\n    C1 --> D1\n    C2 --> D2\n    C3 --> D3\n    C4 --> D4\n    C4 --> D5\n    C5 --> D6\n    C6 --> D7\n\n    D1 --> F2\n    D2 --> F2\n    D3 --> F2\n    D4 --> F2\n    D5 --> F2\n    D6 --> F2\n    D7 --> F2\n\n    E1 -.configure.-> F2\n    E2 -.configure.-> H1\n\n    F1 --> F3\n    F2 --> F3\n    F3 --> G1\n\n    G1 --> H1\n    G1 --> H2\n\n    style D1 fill:#e1f5ff\n    style D2 fill:#e1f5ff\n    style D3 fill:#e1f5ff\n    style D4 fill:#e1f5ff\n    style D5 fill:#e1f5ff\n    style D6 fill:#e1f5ff\n    style D7 fill:#e1f5ff\n    style G1 fill:#c8e6c9\n    style E1 fill:#fff9c4\n    style E2 fill:#fff9c4\n```\n\n1. **Cataloger Discovery**: AST parser walks `syft/pkg/cataloger/` to find `generic.NewCataloger()` calls and extract parser information\n2. **Cataloger Config Discovery**: AST parser finds config structs and extracts fields with `// app-config:` annotations\n3. **App Config Discovery**: AST parser extracts ecosystem configurations from options package, including descriptions and defaults\n4. **Metadata Discovery**: JSON reader loads test observations that record what metadata/package types each parser produces\n5. **Linking**: AST analyzer connects catalogers to their config structs by examining constructor parameters\n6. **Merge**: Discovered data combines with existing YAML, preserving all manually-maintained capability sections\n7. **Validation**: Comprehensive tests ensure the output is complete and synchronized with codebase\n\n## The Capability YAML Files\n\n### Purpose\n\nThe `syft/pkg/cataloger/*/capabilities.yaml` files are the canonical documentation of:\n- Every cataloger in syft\n- What files/patterns each cataloger detects\n- What metadata and package types each cataloger produces\n- What capabilities each cataloger has (licenses, dependencies, etc.)\n- How configuration affects these capabilities\n\n### Structure\n\nEach ecosystem has its own file (e.g., `syft/pkg/cataloger/golang/capabilities.yaml`, `syft/pkg/cataloger/python/capabilities.yaml`):\n\n```yaml\n# syft/pkg/cataloger/golang/capabilities.yaml - Cataloger capabilities for the golang ecosystem\n\nconfigs:  # AUTO-GENERATED - config structs for this ecosystem\n  golang.CatalogerConfig:\n    fields:\n      - key: SearchLocalModCacheLicenses\n        description: SearchLocalModCacheLicenses enables...\n        app_key: golang.search-local-mod-cache-licenses\n\ncatalogers:  # Mixed AUTO-GENERATED structure, MANUAL capabilities\n  - ecosystem: golang            # MANUAL\n    name: go-module-cataloger    # AUTO-GENERATED\n    type: generic                # AUTO-GENERATED\n    source:                      # AUTO-GENERATED\n      file: syft/pkg/cataloger/golang/cataloger.go\n      function: NewGoModuleBinaryCataloger\n    config: golang.CatalogerConfig  # AUTO-GENERATED\n    selectors: [go, golang, ...]    # AUTO-GENERATED\n    parsers:                     # AUTO-GENERATED structure\n      - function: parseGoMod     # AUTO-GENERATED\n        detector:                # AUTO-GENERATED\n          method: glob\n          criteria: [\"**/go.mod\"]\n        metadata_types:          # AUTO-GENERATED\n          - pkg.GolangModuleEntry\n        package_types:           # AUTO-GENERATED\n          - go-module\n        json_schema_types:       # AUTO-GENERATED\n          - GolangModEntry\n        capabilities:            # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n            conditions:\n              - when: {SearchRemoteLicenses: true}\n                value: true\n                comment: fetches licenses from proxy.golang.org\n          - name: dependency.depth\n            default: [direct, indirect]\n          - name: dependency.edges\n            default: complete\n```\n\n### AUTO-GENERATED vs MANUAL Fields\n\n#### AUTO-GENERATED Fields\nThese are updated on every regeneration:\n\n**Cataloger Level:**\n- `name` - cataloger identifier\n- `type` - \"generic\" or \"custom\"\n- `source.file` - source file path\n- `source.function` - constructor function name\n- `config` - linked config struct name\n- `selectors` - tags from task factories\n\n**Parser Level (generic catalogers):**\n- `function` - parser function name (as used in the generic cataloger)\n- `detector.method` - glob/path/mimetype\n- `detector.criteria` - patterns matched\n- `metadata_types` - from test-observations.json\n- `package_types` - from test-observations.json\n- `json_schema_types` - converted from metadata_types\n\n**Custom Cataloger Level:**\n- `metadata_types` - from test-observations.json\n- `package_types` - from test-observations.json\n- `json_schema_types` - converted from metadata_types\n\n**Sections:**\n- `appconfig.yaml`: contains the `application:` section with app-level config keys relevant to catalogers\n- `configs:` section in each ecosystem file: config structs used by catalogers in that ecosystem\n\n#### MANUAL Fields\nThese are preserved across regeneration and must be edited by hand:\n\n- `ecosystem` - ecosystem/language identifier (cataloger level)\n- `capabilities` - capability definitions with conditions\n- `detectors` - for custom catalogers (except binary-classifier-cataloger)\n- `conditions` on detectors - when detector is active based on config\n\n### How Regeneration Works\n\nWhen you run `go generate ./internal/capabilities`:\n\n1. **Loads existing YAML files** from `syft/pkg/cataloger/*/capabilities.yaml` and `internal/capabilities/appconfig.yaml` into both structs (for logic) and node trees (for comment preservation)\n2. **Discovers all cataloger data** from source code and tests\n3. **Merges** discovered data with existing:\n   - Updates AUTO-GENERATED fields\n   - **Preserves** all MANUAL fields (capabilities, ecosystem, etc.)\n   - Adds annotations (`# AUTO-GENERATED`, `# MANUAL`) to field comments\n4. **Writes back** to `syft/pkg/cataloger/*/capabilities.yaml` using the node tree to preserve all comments\n5. **Validates** the result with completeness tests\n\n> [!NOTE]\n> Don't forget to update test observation evidence with `go test ./syft/pkg/...` before regeneration.\n\n## Generation Process\n\n### High-Level Workflow\n\n```\n1. Discovery Phase\n   ├─ Parse cataloger source code (AST)\n   ├─ Find all parsers and detectors\n   ├─ Read test observations for metadata types\n   ├─ Discover config structs and fields\n   ├─ Discover app-level configurations\n   └─ Link catalogers to their configs\n\n2. Merge Phase\n   ├─ Load existing syft/pkg/cataloger/*/capabilities.yaml files\n   ├─ Process each cataloger:\n   │  ├─ Update AUTO-GENERATED fields\n   │  └─ Preserve MANUAL fields\n   ├─ Add new catalogers\n   └─ Detect orphaned entries\n\n3. Write Phase\n   ├─ Group catalogers by ecosystem\n   ├─ Update YAML node trees per ecosystem\n   ├─ Add field annotations\n   └─ Write to syft/pkg/cataloger/*/capabilities.yaml and appconfig.yaml\n\n4. Validation Phase\n   ├─ Check all catalogers present\n   ├─ Check metadata/package type coverage\n   └─ Run completeness tests\n```\n\n### Detailed Discovery Processes\n\n#### 1. Generic Cataloger Discovery (`discover_catalogers.go`)\n\n**What it finds:** catalogers using the `generic.NewCataloger()` pattern\n\n**Process:**\n1. Walk `syft/pkg/cataloger/` recursively for `.go` files\n2. Parse each file with Go AST parser (`go/ast`, `go/parser`)\n3. Find functions matching pattern: `New*Cataloger() pkg.Cataloger`\n4. Within function body, find `generic.NewCataloger(name, ...)` call\n5. Extract cataloger name from first argument\n6. Find all chained `WithParserBy*()` calls:\n   ```go\n   generic.NewCataloger(\"my-cataloger\").\n       WithParserByGlobs(parseMyFormat, \"**/*.myformat\").\n       WithParserByMimeTypes(parseMyBinary, \"application/x-mytype\")\n   ```\n7. For each parser call:\n   - Extract parser function name (e.g., `parseMyFormat`)\n   - Extract detection method (Globs/Path/MimeTypes)\n   - Extract criteria (patterns or mime types)\n   - Resolve constant references across files if needed\n\n**Output:** `map[string]DiscoveredCataloger` with full parser information\n\n#### 2. Config Discovery (`discover_cataloger_configs.go`)\n\n**What it finds:** cataloger configuration structs\n\n**Process:**\n1. Find all `.go` files in `syft/pkg/cataloger/*/`\n2. Look for structs with \"Config\" in their name\n3. For each config struct:\n   - Extract struct fields\n   - Look for `// app-config: key.name` annotations in field comments\n   - Extract field descriptions from doc comments\n4. Filter results by whitelist (only configs referenced in `pkgcataloging.Config`)\n\n**Example source:**\n```go\ntype CatalogerConfig struct {\n    // SearchLocalModCacheLicenses enables searching for go package licenses\n    // in the local GOPATH mod cache.\n    // app-config: golang.search-local-mod-cache-licenses\n    SearchLocalModCacheLicenses bool\n}\n```\n\n**Output:** `map[string]ConfigInfo` with field details and app-config keys\n\n#### 3. App Config Discovery (`discover_app_config.go`)\n\n**What it finds:** application-level configuration from the options package\n\n**Process:**\n1. Parse `cmd/syft/internal/options/catalog.go` to find `Catalog` struct\n2. Extract ecosystem config fields (e.g., `Golang golangConfig`)\n3. For each ecosystem:\n   - Find the config file (e.g., `golang.go`)\n   - Parse the config struct\n   - Find `DescribeFields() []FieldDescription` method\n   - Extract field descriptions from the returned descriptions\n   - Find `default*Config()` function and extract default values\n4. Build full key paths (e.g., `golang.search-local-mod-cache-licenses`)\n\n**Example source:**\n```go\n// golang.go\ntype golangConfig struct {\n    SearchLocalModCacheLicenses bool `yaml:\"search-local-mod-cache-licenses\" ...`\n}\n\nfunc (c golangConfig) DescribeFields(opts ...options.DescribeFieldsOption) []options.FieldDescription {\n    return []options.FieldDescription{\n        {\n            Name: \"search-local-mod-cache-licenses\",\n            Description: \"search for go package licences in the GOPATH...\",\n        },\n    }\n}\n```\n\n**Output:** `[]AppConfigField` with keys, descriptions, and defaults\n\n#### 4. Cataloger-Config Linking (`cataloger_config_linking.go`)\n\n**What it finds:** which config struct each cataloger uses\n\n**Process:**\n1. For each discovered cataloger, find its constructor function\n2. Extract the first parameter type from the function signature\n3. Filter for types that look like configs (contain \"Config\")\n4. Build mapping: cataloger name → config struct name\n5. Apply manual overrides from `catalogerConfigOverrides` map\n6. Apply exceptions from `catalogerConfigExceptions` set\n\n**Example:**\n```go\n// Constructor signature:\nfunc NewGoModuleBinaryCataloger(cfg golang.CatalogerConfig) pkg.Cataloger\n\n// Results in link:\n\"go-module-binary-cataloger\" → \"golang.CatalogerConfig\"\n```\n\n**Output:** `map[string]string` (cataloger → config mapping)\n\n#### 5. Metadata Discovery (`discover_metadata.go`)\n\n**What it finds:** metadata types and package types each parser produces\n\n**Process:**\n1. Find all `testdata/test-observations.json` files\n2. Parse JSON which contains:\n   ```json\n   {\n     \"package\": \"golang\",\n     \"parsers\": {\n       \"parseGoMod\": {\n         \"metadata_types\": [\"pkg.GolangModuleEntry\"],\n         \"package_types\": [\"go-module\"]\n       }\n     },\n     \"catalogers\": {\n       \"linux-kernel-cataloger\": {\n         \"metadata_types\": [\"pkg.LinuxKernel\"],\n         \"package_types\": [\"linux-kernel\"]\n       }\n     }\n   }\n   ```\n3. Build index by package name and parser function\n4. Apply to discovered catalogers:\n   - Parser-level observations → attached to specific parsers\n   - Cataloger-level observations → for custom catalogers\n5. Convert metadata types to JSON schema types using `packagemetadata` registry\n\n**Why this exists:** the AST parser can't determine what types a parser produces just by reading code. This information comes from test execution.\n\n**Output:** populated `MetadataTypes` and `PackageTypes` on catalogers/parsers\n\n## Input Sources\n\n### 1. Source Code Inputs\n\n#### Cataloger Constructors (`syft/pkg/cataloger/*/cataloger.go`)\n\n**What's extracted:**\n- Cataloger names\n- Parser function names\n- Detection methods (glob, path, mimetype)\n- Detection criteria (patterns)\n\n**Example:**\n```go\nfunc NewGoModuleBinaryCataloger() pkg.Cataloger {\n    return generic.NewCataloger(\"go-module-binary-cataloger\").\n        WithParserByGlobs(parseGoBin, \"**/go.mod\").\n        WithParserByMimeTypes(parseGoArchive, \"application/x-archive\")\n}\n```\n\n#### Config Structs (`syft/pkg/cataloger/*/config.go`)\n\n**What's extracted:**\n- Config struct fields\n- Field types\n- Field descriptions from comments\n- App-config key mappings from annotations\n\n**Example:**\n```go\ntype CatalogerConfig struct {\n    // SearchRemoteLicenses enables downloading go package licenses from the upstream\n    // go proxy (typically proxy.golang.org).\n    // app-config: golang.search-remote-licenses\n    SearchRemoteLicenses bool\n\n    // LocalModCacheDir specifies the location of the local go module cache directory.\n    // When not set, syft will attempt to discover the GOPATH env or default to $HOME/go.\n    // app-config: golang.local-mod-cache-dir\n    LocalModCacheDir string\n}\n```\n\n#### Options Package (`cmd/syft/internal/options/`)\n\n**What's extracted:**\n- Ecosystem config structs\n- App-level configuration keys\n- Field descriptions from `DescribeFields()` methods\n- Default values from `default*Config()` functions\n\n**Example:**\n```go\n// catalog.go\ntype Catalog struct {\n    Golang golangConfig `yaml:\"golang\" json:\"golang\" mapstructure:\"golang\"`\n}\n\n// golang.go\nfunc (c golangConfig) DescribeFields(opts ...options.DescribeFieldsOption) []options.FieldDescription {\n    return []options.FieldDescription{\n        {\n            Name: \"search-remote-licenses\",\n            Description: \"search for go package licences by retrieving the package from a network proxy\",\n        },\n    }\n}\n```\n\n### 2. Test-Driven Inputs\n\n#### test-observations.json Files\n\n**Location:** `syft/pkg/cataloger/*/testdata/test-observations.json`\n\n**Purpose:** records what metadata and package types each parser produces during test execution\n\n**How they're generated:** automatically by the `pkgtest.CatalogTester` helpers when tests run\n\n**Example test code:**\n```go\nfunc TestGoModuleCataloger(t *testing.T) {\n    tester := NewGoModuleBinaryCataloger()\n\n    pkgtest.NewCatalogTester().\n        FromDirectory(t, \"testdata/go-module-fixture\").\n        TestCataloger(t, tester)  // Auto-writes observations on first run\n}\n```\n\n**Example observations file:**\n```json\n{\n  \"package\": \"golang\",\n  \"parsers\": {\n    \"parseGoMod\": {\n      \"metadata_types\": [\"pkg.GolangModuleEntry\"],\n      \"package_types\": [\"go-module\"]\n    },\n    \"parseGoSum\": {\n      \"metadata_types\": [\"pkg.GolangModuleEntry\"],\n      \"package_types\": [\"go-module\"]\n    }\n  }\n}\n```\n\n**Why this exists:**\n- Metadata types can't be determined from AST parsing alone\n- Ensures tests use the pkgtest helpers (enforced by `TestAllCatalogers HaveObservations`)\n- Provides test coverage visibility\n\n### 3. Syft Runtime Inputs\n\n#### Task Factories (`allPackageCatalogerInfo()`)\n\n**What's extracted:**\n- Canonical list of all catalogers (ensures sync with binary)\n- Selectors (tags) for each cataloger\n\n**Example:**\n```go\ninfo := cataloger.CatalogerInfo{\n    Name: \"go-module-binary-cataloger\",\n    Selectors: []string{\"go\", \"golang\", \"binary\", \"language\", \"package\"},\n}\n```\n\n### 4. Global Configuration Variables\n\n#### Merge Logic Overrides (`merge.go`)\n\n```go\n// catalogerTypeOverrides forces a specific cataloger type when discovery gets it wrong\nvar catalogerTypeOverrides = map[string]string{\n    \"java-archive-cataloger\": \"custom\",  // technically generic but treated as custom\n}\n\n// catalogerConfigExceptions lists catalogers that should NOT have config linked\nvar catalogerConfigExceptions = strset.New(\n    \"binary-classifier-cataloger\",\n)\n\n// catalogerConfigOverrides manually specifies config when linking fails\nvar catalogerConfigOverrides = map[string]string{\n    \"dotnet-portable-executable-cataloger\": \"dotnet.CatalogerConfig\",\n    \"nix-store-cataloger\":                  \"nix.Config\",\n}\n```\n\n**When to update:**\n- Add to `catalogerTypeOverrides` when a cataloger's type is misdetected\n- Add to `catalogerConfigExceptions` when a cataloger shouldn't have config\n- Add to `catalogerConfigOverrides` when automatic config linking fails\n\n#### Completeness Test Configuration (distributed across `*_test.go` files)\n\n```go\n// requireParserObservations controls observation validation strictness\n// - true: fail if ANY parser is missing observations (strict)\n// - false: only check custom catalogers (lenient, current mode)\nconst requireParserObservations = false\n\n// metadataTypeCoverageExceptions lists metadata types allowed to not be documented\nvar metadataTypeCoverageExceptions = strset.New(\n    reflect.TypeOf(pkg.MicrosoftKbPatch{}).Name(),\n)\n\n// packageTypeCoverageExceptions lists package types allowed to not be documented\nvar packageTypeCoverageExceptions = strset.New(\n    string(pkg.JenkinsPluginPkg),\n    string(pkg.KbPkg),\n)\n\n// observationExceptions maps cataloger/parser names to observation types to skip\n// - nil value: skip ALL observation checks for this cataloger/parser\n// - set value: skip only specified observation types\nvar observationExceptions = map[string]*strset.Set{\n    \"graalvm-native-image-cataloger\": nil,  // skip all checks\n    \"linux-kernel-cataloger\": strset.New(\"relationships\"),  // skip only relationships\n}\n```\n\n**When to update:**\n- Add to exceptions when a type is intentionally not documented\n- Add to `observationExceptions` when a cataloger lacks reliable test fixtures\n- Set `requireParserObservations = true` when ready to enforce full parser coverage\n\n## Completeness Tests\n\n### Purpose\n\nCompleteness tests ensure capability YAML files stay in perfect sync with the codebase. These tests catch:\n- New catalogers that haven't been documented\n- Orphaned cataloger entries (cataloger was removed but YAML wasn't updated)\n- Missing metadata/package type documentation\n- Invalid capability field references\n- Catalogers not using test helpers\n\n### Test Organization\n\nCompleteness tests are distributed across multiple packages:\n- `internal/capabilities/`\n- `internal/capabilities/internal/`\n- `internal/capabilities/generate/`\n\n**Guard Clause**: All completeness tests are protected by `checkCompletenessTestsEnabled()` which checks the `SYFT_ENABLE_COMPLETENESS_TESTS=true` environment variable.\n\n**Why the guard?** There's a chicken-and-egg problem:\n1. Package cataloger tests (`go test ./syft/pkg/...`) must run first to generate observation JSON files\n2. Those observation JSONs are then used by the capabilities generation and completeness tests\n3. Therefore, completeness tests cannot run as normal unit tests - they must run after the pkg tests and generation steps\n\n### Test Categories\n\n#### 1. Synchronization Tests\n\n**`TestCatalogersInSync`**\n- Ensures all catalogers from `syft cataloger list` appear in YAML\n- Ensures all catalogers in YAML exist in the binary\n- Ensures all capabilities sections are filled (no TODOs/nulls)\n\n**Failure means:** you added/removed a cataloger but didn't regenerate the capability YAML files\n\n**Fix:** run `go generate ./internal/capabilities`\n\n---\n\n**`TestCapabilitiesAreUpToDate`**\n- Runs only in CI\n- Ensures regeneration succeeds\n- Ensures generated files have no uncommitted changes\n\n**Failure means:** capability YAML files weren't regenerated after code changes\n\n**Fix:** run `go generate ./internal/capabilities` and commit changes\n\n#### 2. Coverage Tests\n\n**`TestPackageTypeCoverage`**\n- Ensures all types in `pkg.AllPkgs` are documented in some cataloger\n- Allows exceptions via `packageTypeCoverageExceptions`\n\n**Failure means:** you added a new package type but no cataloger documents it\n\n**Fix:** either add a cataloger entry or add to exceptions if intentionally not supported\n\n---\n\n**`TestMetadataTypeCoverage`**\n- Ensures all types in `packagemetadata.AllTypes()` are documented\n- Allows exceptions via `metadataTypeCoverageExceptions`\n\n**Failure means:** you added a new metadata type but no cataloger produces it\n\n**Fix:** either add metadata_types to a cataloger or add to exceptions\n\n---\n\n**`TestMetadataTypesHaveJSONSchemaTypes`**\n- Ensures metadata_types and json_schema_types are synchronized\n- Validates every metadata type has a corresponding json_schema_type with correct conversion\n- Checks both cataloger-level and parser-level types\n\n**Failure means:** metadata_types and json_schema_types are out of sync\n\n**Fix:** run `go generate ./internal/capabilities` to regenerate synchronized types\n\n#### 3. Structure Tests\n\n**`TestCatalogerStructure`**\n- Validates generic vs custom cataloger structure rules:\n  - Generic catalogers must have parsers, no cataloger-level capabilities\n  - Custom catalogers must have detectors and cataloger-level capabilities\n- Ensures ecosystem is always set\n\n**Failure means:** cataloger structure doesn't follow conventions\n\n**Fix:** correct the cataloger structure in the appropriate `syft/pkg/cataloger/*/capabilities.yaml` file\n\n---\n\n**`TestCatalogerDataQuality`**\n- Checks for duplicate cataloger names\n- Validates detector formats for custom catalogers\n- Checks for duplicate parser functions within catalogers\n\n**Failure means:** data integrity issue in capability YAML files\n\n**Fix:** remove duplicates or fix detector definitions\n\n#### 4. Config Tests\n\n**`TestConfigCompleteness`**\n- Ensures all configs in the `configs:` section are referenced by a cataloger\n- Ensures all cataloger config references exist\n- Ensures all app-key references exist in `application:` section\n\n**Failure means:** orphaned config or broken reference\n\n**Fix:** remove unused configs or add missing entries\n\n---\n\n**`TestAppConfigFieldsHaveDescriptions`**\n- Ensures all application config fields have descriptions\n\n**Failure means:** missing `DescribeFields()` entry\n\n**Fix:** add description in the ecosystem's `DescribeFields()` method\n\n---\n\n**`TestAppConfigKeyFormat`**\n- Validates config keys follow format: `ecosystem.field-name`\n- Ensures kebab-case (no underscores or spaces)\n\n**Failure means:** malformed config key\n\n**Fix:** rename the config key to follow conventions\n\n#### 5. Capability Tests\n\n**`TestCapabilityConfigFieldReferences`**\n- Validates that config fields referenced in capability conditions actually exist\n- Checks both cataloger-level and parser-level capabilities\n\n**Example failure:**\n```yaml\ncapabilities:\n  - name: license\n    conditions:\n      - when: {NonExistentField: true}  # ← this field doesn't exist in config struct\n        value: true\n```\n\n**Fix:** correct the field name to match the actual config struct\n\n---\n\n**`TestCapabilityFieldNaming`**\n- Ensures capability field names follow known patterns:\n  - `license`\n  - `dependency.depth`\n  - `dependency.edges`\n  - `dependency.kinds`\n  - `package_manager.files.listing`\n  - `package_manager.files.digests`\n  - `package_manager.package_integrity_hash`\n\n**Failure means:** typo in capability field name\n\n**Fix:** correct the typo or add new field to known list\n\n---\n\n**`TestCapabilityValueTypes`**\n- Validates capability values match expected types:\n  - Boolean fields: `license`, `package_manager.*`\n  - Array fields: `dependency.depth`, `dependency.kinds`\n  - String fields: `dependency.edges`\n\n**Example failure:**\n```yaml\ncapabilities:\n  - name: license\n    default: \"yes\"  # ← should be boolean true/false\n```\n\n**Fix:** use correct type for the field\n\n---\n\n**`TestCapabilityEvidenceFieldReferences`**\n- Validates that evidence references point to real struct fields\n- Uses AST parsing to verify field paths exist\n\n**Example:**\n```yaml\ncapabilities:\n  - name: package_manager.files.digests\n    default: true\n    evidence:\n      - AlpmDBEntry.Files[].Digests  # ← validates this path exists\n```\n\n**Failure means:** typo in evidence reference or struct was changed\n\n**Fix:** correct the evidence reference or update after struct changes\n\n#### 6. Observations Test\n\n**`TestCatalogersHaveTestObservations`**\n- Ensures all custom catalogers have test observations\n- Optionally checks parsers (controlled by `requireParserObservations`)\n- Allows exceptions via `observationExceptions`\n\n**Failure means:** cataloger tests aren't using pkgtest helpers\n\n**Fix:** update tests to use `pkgtest.CatalogTester`:\n```go\npkgtest.NewCatalogTester().\n    FromDirectory(t, \"testdata/my-fixture\").\n    TestCataloger(t, myCataloger)\n```\n\n### How to Fix Test Failures\n\n#### General Approach\n1. **Read the test error message** - it usually tells you exactly what's wrong\n2. **Check if regeneration needed** - most failures fixed by: `go generate ./internal/capabilities`\n3. **Check for code/test changes** - did you add/modify a cataloger?\n4. **Consider exceptions** - is this intentionally unsupported?\n\n#### Common Failures and Fixes\n\n| Failure | Most Likely Cause | Fix |\n|---------|------------------|-----|\n| Cataloger not in YAML | Added new cataloger | Regenerate |\n| Orphaned YAML entry | Removed cataloger | Regenerate |\n| Missing metadata type | Added type but no test observations | Add pkgtest usage or exception |\n| Missing observations | Test not using pkgtest | Update test to use `CatalogTester` |\n| Config field reference | Typo in capability condition | Fix field name in capability YAML |\n| Incomplete capabilities | Missing capability definition | Add capabilities section to capability YAML |\n\n## Manual Maintenance\n\n### What Requires Manual Editing\n\nThese fields in capability YAML files are **MANUAL** and must be maintained by hand:\n\n#### 1. Ecosystem Field (Cataloger Level)\n```yaml\ncatalogers:\n  - ecosystem: golang  # MANUAL - identify the ecosystem\n```\n\n**Guidelines:** use the ecosystem/language name (golang, python, java, rust, etc.)\n\n#### 2. Capabilities Sections\n\n**For Generic Catalogers** (parser level):\n```yaml\nparsers:\n  - function: parseGoMod\n    capabilities:  # MANUAL\n      - name: license\n        default: false\n        conditions:\n          - when: {SearchRemoteLicenses: true}\n            value: true\n            comment: fetches licenses from proxy.golang.org\n      - name: dependency.depth\n        default: [direct, indirect]\n      - name: dependency.edges\n        default: complete\n```\n\n**For Custom Catalogers** (cataloger level):\n```yaml\ncatalogers:\n  - name: linux-kernel-cataloger\n    type: custom\n    capabilities:  # MANUAL\n      - name: license\n        default: true\n```\n\n#### 3. Detectors for Custom Catalogers\n\n**For most custom catalogers:**\n```yaml\ndetectors:  # MANUAL\n  - method: glob\n    criteria:\n      - '**/lib/modules/**/modules.builtin'\n    comment: kernel modules directory\n```\n\n**Exception:** `binary-classifier-cataloger` has AUTO-GENERATED detectors extracted from source\n\n#### 4. Detector Conditions\n\nwhen a detector should only be active with certain configuration:\n```yaml\ndetectors:\n  - method: glob\n    criteria: ['**/*.zip']\n    conditions:  # MANUAL\n      - when: {IncludeZipFiles: true}\n        comment: ZIP detection requires explicit config\n```\n\n### Capabilities Format and Guidelines\n\n#### Standard Capability Fields\n\n**Boolean Fields:**\n```yaml\n- name: license\n  default: true  # always available\n  # OR\n  default: false  # never available\n  # OR\n  default: false\n  conditions:\n    - when: {SearchRemoteLicenses: true}\n      value: true\n      comment: requires network access to fetch licenses\n```\n\n**Array Fields (dependency.depth):**\n```yaml\n- name: dependency.depth\n  default: [direct]              # only immediate dependencies\n  # OR\n  default: [direct, indirect]    # full transitive closure\n  # OR\n  default: []                    # no dependency information\n```\n\n**String Fields (dependency.edges):**\n```yaml\n- name: dependency.edges\n  default: \"\"        # dependencies found but no edges between them\n  # OR\n  default: flat      # single level of dependencies with edges to root only\n  # OR\n  default: reduced   # transitive reduction (redundant edges removed)\n  # OR\n  default: complete  # all relationships with accurate direct/indirect edges\n```\n\n**Array Fields (dependency.kinds):**\n```yaml\n- name: dependency.kinds\n  default: [runtime]                    # production dependencies only\n  # OR\n  default: [runtime, dev]               # production and development\n  # OR\n  default: [runtime, dev, build, test]  # all dependency types\n```\n\n#### Using Conditions\n\nConditions allow capabilities to vary based on configuration values:\n\n```yaml\ncapabilities:\n  - name: license\n    default: false\n    conditions:\n      - when: {SearchLocalModCacheLicenses: true}\n        value: true\n        comment: searches for licenses in GOPATH mod cache\n      - when: {SearchRemoteLicenses: true}\n        value: true\n        comment: fetches licenses from proxy.golang.org\n    comment: license scanning requires configuration\n```\n\n**Rules:**\n- Conditions are evaluated in array order (first match wins)\n- Multiple fields WITHIN a `when` clause use AND logic (all must match)\n- Multiple conditions in the array use OR logic (first matching condition)\n- If no conditions match, the `default` value is used\n\n#### Adding Evidence\n\nevidence documents which struct fields provide the capability:\n\n```yaml\n- name: package_manager.files.listing\n  default: true\n  evidence:\n    - AlpmDBEntry.Files\n  comment: file listings stored in Files array\n```\n\n**For nested fields:**\n```yaml\nevidence:\n  - CondaMetaPackage.PathsData.Paths\n```\n\n**For array element fields:**\n```yaml\nevidence:\n  - AlpmDBEntry.Files[].Digests\n```\n\n### Best Practices\n\n1. **Be specific in comments:** explain WHY, not just WHAT\n2. **Document conditions clearly:** explain what configuration enables the capability\n3. **Use evidence references:** helps verify capabilities are accurate\n4. **Test after edits:** run `SYFT_ENABLE_COMPLETENESS_TESTS=true go test ./internal/capabilities/...` to validate\n\n## Development Workflows\n\n### Adding a New Cataloger\n\n#### If Using `generic.NewCataloger()`:\n\n**What happens automatically:**\n1. Generator discovers the cataloger via AST parsing\n2. Extracts parsers, detectors, and patterns\n3. Adds entry to the appropriate `syft/pkg/cataloger/*/capabilities.yaml` file\n4. Links to config (if constructor has config parameter)\n5. Extracts metadata types from test-observations.json (if test uses pkgtest)\n\n**What you must do manually:**\n1. Set the `ecosystem` field in the capability YAML file\n2. Add `capabilities` sections to each parser\n3. Run `go generate ./internal/capabilities`\n4. Commit the updated capability YAML file\n\n**Example workflow:**\n```bash\n# 1. Write cataloger code\nvim syft/pkg/cataloger/mynew/cataloger.go\n\n# 2. Write tests using pkgtest (generates observations)\nvim syft/pkg/cataloger/mynew/cataloger_test.go\n\n# 3. Run tests to generate observations\ngo test ./syft/pkg/cataloger/mynew\n\n# 4. Regenerate capability YAML files\ngo generate ./internal/capabilities\n\n# 5. Edit the capability file manually\nvim syft/pkg/cataloger/mynew/capabilities.yaml\n# - Set ecosystem field\n# - Add capabilities sections\n\n# 6. Validate\nSYFT_ENABLE_COMPLETENESS_TESTS=true go test ./internal/capabilities/...\n\n# 7. Commit\ngit add syft/pkg/cataloger/mynew/capabilities.yaml\ngit add syft/pkg/cataloger/mynew/testdata/test-observations.json\ngit commit\n```\n\n#### If Writing a Custom Cataloger:\n\n**What happens automatically:**\n1. Generator creates entry with name and type\n2. Extracts metadata types from test-observations.json\n\n**What you must do manually:**\n1. Set `ecosystem`\n2. Add `detectors` array with detection methods\n3. Add `capabilities` section (cataloger level, not parser level)\n4. Run `go generate ./internal/capabilities`\n\n### Modifying an Existing Cataloger\n\n#### If Changing Parser Detection Patterns:\n\n**Impact:** AUTO-GENERATED field, automatically updated\n\n**Workflow:**\n```bash\n# 1. Change the code\nvim syft/pkg/cataloger/something/cataloger.go\n\n# 2. Regenerate\ngo generate ./internal/capabilities\n\n# 3. Review changes\ngit diff syft/pkg/cataloger/*/capabilities.yaml\n\n# 4. Commit\ngit add syft/pkg/cataloger/*/capabilities.yaml\ngit commit\n```\n\n#### If Changing Metadata Type:\n\n**Impact:** AUTO-GENERATED field, updated via test observations\n\n**Workflow:**\n```bash\n# 1. Change the code\nvim syft/pkg/cataloger/something/parser.go\n\n# 2. Update tests (if needed)\nvim syft/pkg/cataloger/something/parser_test.go\n\n# 3. Run tests to update observations\ngo test ./syft/pkg/cataloger/something\n\n# 4. Regenerate\ngo generate ./internal/capabilities\n\n# 5. Commit\ngit add syft/pkg/cataloger/*/capabilities.yaml\ngit add syft/pkg/cataloger/something/testdata/test-observations.json\ngit commit\n```\n\n#### If Changing Capabilities:\n\n**Impact:** MANUAL field, preserved across regeneration\n\n**Workflow:**\n```bash\n# 1. Edit the capability file directly\nvim syft/pkg/cataloger/something/capabilities.yaml\n\n# 2. Validate\nSYFT_ENABLE_COMPLETENESS_TESTS=true go test ./internal/capabilities/...\n\n# 3. Commit\ngit commit syft/pkg/cataloger/something/capabilities.yaml\n```\n\n### Adding New Capability Fields\n\nif you need to add a completely new capability field (e.g., `package_manager.build_tool_info`):\n\n**Steps:**\n1. Add field name to known fields in the appropriate test file\n2. Add value type validation to the validation logic\n3. Update file header documentation in capability YAML files\n4. Add the field to relevant catalogers in the appropriate `syft/pkg/cataloger/*/capabilities.yaml` files\n5. Update any runtime code that consumes capabilities\n\n### When to Update Exceptions\n\n#### Add to `catalogerTypeOverrides`:\n- Discovery incorrectly classifies a cataloger's type\n- Example: cataloger uses generic framework but behaves like custom\n\n#### Add to `catalogerConfigExceptions`:\n- Cataloger should not have config linked\n- Example: simple catalogers with no configuration\n\n#### Add to `catalogerConfigOverrides`:\n- Automatic config linking fails\n- Cataloger in a subpackage or unusual structure\n- Example: dotnet catalogers split across multiple packages\n\n#### Add to `metadataTypeCoverageExceptions`:\n- Metadata type is deprecated or intentionally unused\n- Example: `MicrosoftKbPatch` (special case type)\n\n#### Add to `packageTypeCoverageExceptions`:\n- Package type is deprecated or special case\n- Example: `JenkinsPluginPkg`, `KbPkg`\n\n#### Add to `observationExceptions`:\n- Cataloger lacks reliable test fixtures (e.g., requires specific binaries)\n- Cataloger produces relationships but they're not standard dependencies\n- Example: `graalvm-native-image-cataloger` (requires native images)\n\n## File Inventory\n\n### Core Generation (`internal/capabilities/generate/`)\n\n- **`main.go`**: entry point, orchestrates regeneration, prints status messages\n- **`merge.go`**: core merging logic, preserves manual sections while updating auto-generated\n- **`io.go`**: YAML reading/writing with comment preservation using gopkg.in/yaml.v3\n\n### Discovery (`internal/capabilities/generate/`)\n\n- **`discover_catalogers.go`**: AST parsing to discover generic catalogers and parsers from source code\n- **`discover_cataloger_configs.go`**: AST parsing to discover cataloger config structs\n- **`discover_app_config.go`**: AST parsing to discover application-level config from options package\n- **`cataloger_config_linking.go`**: links catalogers to config structs by analyzing constructors\n- **`discover_metadata.go`**: reads test-observations.json files to get metadata/package types\n\n### Shared Utilities (`internal/capabilities/internal/`)\n\n- **`paths.go`**: single source of truth for all capability file paths\n- **`load_capabilities.go`**: loading and parsing capability YAML files\n- **`cataloger_names.go`**: helper to get all cataloger names from syft task factories\n- **`repo_root.go`**: helpers to find the repository root\n\n### Validation\n\n- **`metadata_check.go`**: validates metadata and package type coverage\n\n### Completeness Tests\n\nTests are distributed across packages with `checkCompletenessTestsEnabled()` guard:\n- `internal/capabilities/*_test.go`\n- `internal/capabilities/internal/*_test.go`\n- `internal/capabilities/generate/*_test.go`\n\n### Unit Tests\n\n- **`discover_catalogers_test.go`**: tests for cataloger discovery\n- **`discover_cataloger_configs_test.go`**: tests for config discovery\n- **`cataloger_config_linking_test.go`**: tests for config linking\n- **`merge_test.go`**: tests for merge logic\n- **`io_test.go`**: tests for YAML I/O\n\n## Troubleshooting\n\n### \"Cataloger X not found in capability YAML\"\n\n**Cause:** you added a new cataloger but didn't regenerate the capability YAML files\n\n**Fix:**\n```bash\ngo generate ./internal/capabilities\n```\n\n### \"Cataloger X in YAML but not in binary\"\n\n**Cause:** you removed a cataloger but didn't regenerate\n\n**Fix:**\n```bash\ngo generate ./internal/capabilities\n# Review the diff - the cataloger entry should be removed\n```\n\n### \"Metadata type X not represented in any cataloger\"\n\n**Cause:** you added a new metadata type but:\n- No cataloger produces it yet, OR\n- Tests don't use pkgtest helpers (so observations aren't generated)\n\n**Fix Option 1 - Add test observations:**\n```go\n// Update test to use pkgtest\npkgtest.NewCatalogTester().\n    FromDirectory(t, \"testdata/my-fixture\").\n    TestCataloger(t, myCataloger)\n\n// Run tests\ngo test ./syft/pkg/cataloger/mypackage\n\n// Regenerate\ngo generate ./internal/capabilities\n```\n\n**Fix Option 2 - Add exception (if intentionally unused):**\n```go\n// in metadata_check.go\nvar metadataTypeExceptions = map[string]bool{\n    \"pkg.MyNewType\": true,\n}\n```\n\n### \"Parser X has no test observations\"\n\n**Cause:** test doesn't use pkgtest helpers\n\n**Fix:**\n```go\n// Before:\nfunc TestMyParser(t *testing.T) {\n    // manual test code\n}\n\n// After:\nfunc TestMyParser(t *testing.T) {\n    cataloger := NewMyCataloger()\n    pkgtest.NewCatalogTester().\n        FromDirectory(t, \"testdata/my-fixture\").\n        TestCataloger(t, cataloger)\n}\n```\n\n### \"Config field X not found in struct Y\"\n\n**Cause:** capability condition references a non-existent config field\n\n**Fix:** edit the capability YAML file and correct the field name:\n```yaml\n# Before:\nconditions:\n  - when: {SerachRemoteLicenses: true}  # typo!\n\n# After:\nconditions:\n  - when: {SearchRemoteLicenses: true}\n```\n\n### \"Evidence field X.Y not found in struct X\"\n\n**Cause:**\n- Typo in evidence reference, OR\n- Struct was refactored and field moved/renamed\n\n**Fix:** edit the capability YAML file and correct the evidence reference:\n```yaml\n# Before:\nevidence:\n  - AlpmDBEntry.FileListing  # wrong field name\n\n# After:\nevidence:\n  - AlpmDBEntry.Files\n```\n\n### \"Capability YAML files have uncommitted changes after regeneration\"\n\n**Cause:** capability YAML files are out of date (usually caught in CI)\n\n**Fix:**\n```bash\ngo generate ./internal/capabilities\ngit add syft/pkg/cataloger/*/capabilities.yaml\ngit commit -m \"chore: regenerate capabilities\"\n```\n\n### Generator Fails with \"struct X not found\"\n\n**Cause:** config linking trying to link to a non-existent struct\n\n**Fix Option 1 - Add override:**\n```go\n// merge.go\nvar catalogerConfigOverrides = map[string]string{\n    \"my-cataloger\": \"mypackage.MyConfig\",\n}\n```\n\n**Fix Option 2 - Add exception:**\n```go\n// merge.go\nvar catalogerConfigExceptions = strset.New(\n    \"my-cataloger\",  // doesn't use config\n)\n```\n\n### \"Parser capabilities must be defined\"\n\n**Cause:** parser in capability YAML file has no capabilities section\n\n**Fix:** add capabilities to the parser:\n```yaml\nparsers:\n  - function: parseMyFormat\n    capabilities:\n      - name: license\n        default: false\n      - name: dependency.depth\n        default: []\n      # ... (add all required capability fields)\n```\n\n### Understanding Error Messages\n\nmost test failures include detailed guidance. Look for:\n- **List of missing items:** tells you exactly what to add/remove\n- **Suggestions:** usually includes the command to fix (e.g., \"Run 'go generate ./internal/capabilities'\")\n- **File locations:** tells you which file to edit\n\n**General debugging approach:**\n1. Read the full error message\n2. Check if it's fixed by regeneration\n3. Check for recent code/test changes\n4. Consider if it should be an exception\n5. Ask for help if still stuck (include full error message)\n\n---\n\n## Questions or Issues?\n\nif you encounter problems not covered here:\n1. Check test error messages (they're usually quite helpful)\n2. Look at recent commits for examples of similar changes\n3. Ask in the team chat with the full error message\n"
  },
  {
    "path": "internal/capabilities/generate/cataloger_config_linking.go",
    "content": "// this file links catalogers to their configuration structs by analyzing constructor function signatures to determine which config struct each cataloger uses.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// LinkCatalogersToConfigs analyzes cataloger constructor functions to determine which config struct\n// each cataloger uses. Returns a map where key is the cataloger name (e.g., \"go-module-binary-cataloger\")\n// and value is the config struct reference (e.g., \"golang.CatalogerConfig\").\n// Returns empty string for catalogers that don't take a config parameter.\nfunc LinkCatalogersToConfigs(repoRoot string) (map[string]string, error) {\n\tcatalogerRoot := filepath.Join(repoRoot, \"syft\", \"pkg\", \"cataloger\")\n\treturn LinkCatalogersToConfigsFromPath(catalogerRoot, repoRoot)\n}\n\n// LinkCatalogersToConfigsFromPath analyzes cataloger constructor functions in the specified directory\n// to determine which config struct each cataloger uses. This is the parameterized version that allows\n// testing with custom fixture directories.\n// Returns a map where key is the cataloger name (e.g., \"go-module-binary-cataloger\")\n// and value is the config struct reference (e.g., \"golang.CatalogerConfig\").\n// Returns empty string for catalogers that don't take a config parameter.\n// The baseRoot parameter is used for relative path calculation to determine package names.\nfunc LinkCatalogersToConfigsFromPath(catalogerRoot, baseRoot string) (map[string]string, error) {\n\t// find all .go files under the cataloger root recursively\n\tvar files []string\n\terr := filepath.Walk(catalogerRoot, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !info.IsDir() && strings.HasSuffix(path, \".go\") && !strings.HasSuffix(path, \"_test.go\") {\n\t\t\tfiles = append(files, path)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to walk cataloger directory: %w\", err)\n\t}\n\n\tlinkages := make(map[string]string)\n\n\tfor _, file := range files {\n\t\tlinks, err := linkCatalogersInFile(file, baseRoot)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", file, err)\n\t\t}\n\n\t\tfor catalogerName, configType := range links {\n\t\t\tif existing, ok := linkages[catalogerName]; ok && existing != configType {\n\t\t\t\treturn nil, fmt.Errorf(\"conflicting config types for cataloger %q: %s vs %s\", catalogerName, existing, configType)\n\t\t\t}\n\t\t\tlinkages[catalogerName] = configType\n\t\t}\n\t}\n\n\treturn linkages, nil\n}\n\nfunc linkCatalogersInFile(path, repoRoot string) (map[string]string, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// extract package name from file path\n\trelPath, err := filepath.Rel(repoRoot, path)\n\tif err != nil {\n\t\trelPath = path\n\t}\n\tpackageName := extractPackageNameFromPath(relPath)\n\tif packageName == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tlinkages := make(map[string]string)\n\n\t// find all function declarations\n\tfor _, decl := range f.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if function name matches New*Cataloger pattern\n\t\tif !strings.HasPrefix(funcDecl.Name.Name, \"New\") || !strings.HasSuffix(funcDecl.Name.Name, \"Cataloger\") {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if return type is pkg.Cataloger\n\t\tif !returnsPackageCataloger(funcDecl) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract the cataloger name from the function body\n\t\tcatalogerName := extractCatalogerName(funcDecl, f, path, repoRoot)\n\t\tif catalogerName == \"\" {\n\t\t\t// couldn't determine cataloger name, skip\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract config type from function parameters\n\t\tconfigType := extractConfigParameter(funcDecl, packageName)\n\n\t\t// store the linkage (empty string means no config)\n\t\tlinkages[catalogerName] = configType\n\t}\n\n\treturn linkages, nil\n}\n\n// extractCatalogerName extracts the cataloger name from the function body.\n// It looks for:\n// 1. generic.NewCataloger(\"name\") calls\n// 2. Cataloger implementations that define Name() method\n// 3. Hardcoded name constants\nfunc extractCatalogerName(funcDecl *ast.FuncDecl, file *ast.File, filePath, repoRoot string) string {\n\tif funcDecl.Body == nil {\n\t\treturn \"\"\n\t}\n\n\tctx := &parseContext{\n\t\tfile:     file,\n\t\tfilePath: filePath,\n\t\trepoRoot: repoRoot,\n\t}\n\n\tvar catalogerName string\n\n\t// walk the function body to find generic.NewCataloger call or name assignment\n\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\t// look for call expressions\n\t\tcallExpr, ok := n.(*ast.CallExpr)\n\t\tif !ok {\n\t\t\treturn true\n\t\t}\n\n\t\t// check if this is a call to generic.NewCataloger\n\t\tif isGenericNewCatalogerCall(callExpr) {\n\t\t\t// extract the cataloger name from the first argument\n\t\t\tif len(callExpr.Args) > 0 {\n\t\t\t\t// handle string literals\n\t\t\t\tif lit, ok := callExpr.Args[0].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\t\t\tcatalogerName = strings.Trim(lit.Value, `\"`)\n\t\t\t\t\treturn false // found it, stop searching\n\t\t\t\t}\n\t\t\t\t// handle constant identifiers\n\t\t\t\tif ident, ok := callExpr.Args[0].(*ast.Ident); ok {\n\t\t\t\t\tcatalogerName = resolveLocalConstant(ident.Name, ctx)\n\t\t\t\t\treturn false // found it, stop searching\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t})\n\n\t// if we didn't find a generic.NewCataloger call, try to infer from custom cataloger\n\tif catalogerName == \"\" {\n\t\tcatalogerName = inferCatalogerNameFromCustomImpl(funcDecl, file, ctx)\n\t}\n\n\treturn catalogerName\n}\n\n// inferCatalogerNameFromCustomImpl tries to infer the cataloger name from custom cataloger implementations\n// by looking for Name() method implementations or hardcoded name variables\nfunc inferCatalogerNameFromCustomImpl(funcDecl *ast.FuncDecl, file *ast.File, ctx *parseContext) string {\n\ttypeName := extractReturnTypeName(funcDecl)\n\tif typeName == \"\" {\n\t\treturn \"\"\n\t}\n\treturn findNameMethodReturn(file, typeName, ctx)\n}\n\n// extractReturnTypeName extracts the type name from the return statement of a constructor function\nfunc extractReturnTypeName(funcDecl *ast.FuncDecl) string {\n\tvar typeName string\n\n\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\treturnStmt, ok := n.(*ast.ReturnStmt)\n\t\tif !ok || len(returnStmt.Results) == 0 {\n\t\t\treturn true\n\t\t}\n\n\t\tresult := returnStmt.Results[0]\n\n\t\t// handle &Type{...}\n\t\tif unaryExpr, ok := result.(*ast.UnaryExpr); ok && unaryExpr.Op == token.AND {\n\t\t\tif compLit, ok := unaryExpr.X.(*ast.CompositeLit); ok {\n\t\t\t\tif ident, ok := compLit.Type.(*ast.Ident); ok {\n\t\t\t\t\ttypeName = ident.Name\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// handle Type{...}\n\t\tif compLit, ok := result.(*ast.CompositeLit); ok {\n\t\t\tif ident, ok := compLit.Type.(*ast.Ident); ok {\n\t\t\t\ttypeName = ident.Name\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t})\n\n\treturn typeName\n}\n\n// findNameMethodReturn finds the Name() method for the given type and extracts its return value\nfunc findNameMethodReturn(file *ast.File, typeName string, ctx *parseContext) string {\n\tfor _, decl := range file.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok || funcDecl.Name.Name != \"Name\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif funcDecl.Recv == nil || len(funcDecl.Recv.List) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\trecvTypeName := extractReceiverTypeName(funcDecl.Recv.List[0].Type)\n\t\tif recvTypeName != typeName {\n\t\t\tcontinue\n\t\t}\n\n\t\t// found the Name() method, extract the return value\n\t\tif funcDecl.Body != nil {\n\t\t\tif name := extractNameFromMethodBody(funcDecl.Body, ctx); name != \"\" {\n\t\t\t\treturn name\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// extractReceiverTypeName extracts the type name from a receiver type expression\nfunc extractReceiverTypeName(recvType ast.Expr) string {\n\t// handle both T and *T receivers\n\tif ident, ok := recvType.(*ast.Ident); ok {\n\t\treturn ident.Name\n\t}\n\tif starExpr, ok := recvType.(*ast.StarExpr); ok {\n\t\tif ident, ok := starExpr.X.(*ast.Ident); ok {\n\t\t\treturn ident.Name\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// extractNameFromMethodBody extracts the cataloger name from a Name() method body\nfunc extractNameFromMethodBody(body *ast.BlockStmt, ctx *parseContext) string {\n\tvar name string\n\tast.Inspect(body, func(n ast.Node) bool {\n\t\treturnStmt, ok := n.(*ast.ReturnStmt)\n\t\tif !ok || len(returnStmt.Results) == 0 {\n\t\t\treturn true\n\t\t}\n\n\t\t// handle string literal\n\t\tif lit, ok := returnStmt.Results[0].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\tname = strings.Trim(lit.Value, `\"`)\n\t\t\treturn false\n\t\t}\n\n\t\t// handle constant identifier (e.g., pomCatalogerName)\n\t\tif ident, ok := returnStmt.Results[0].(*ast.Ident); ok {\n\t\t\tname = resolveLocalConstant(ident.Name, ctx)\n\t\t\treturn false\n\t\t}\n\n\t\treturn true\n\t})\n\treturn name\n}\n\n// extractConfigParameter extracts the config type from the first parameter of a cataloger constructor.\n// Returns empty string if no config parameter is found.\n// Returns format: \"packageName.StructName\" (e.g., \"golang.CatalogerConfig\")\nfunc extractConfigParameter(funcDecl *ast.FuncDecl, localPackageName string) string {\n\tif funcDecl.Type.Params == nil || len(funcDecl.Type.Params.List) == 0 {\n\t\t// no parameters, no config\n\t\treturn \"\"\n\t}\n\n\t// check the first parameter\n\tfirstParam := funcDecl.Type.Params.List[0]\n\tif firstParam.Type == nil {\n\t\treturn \"\"\n\t}\n\n\t// extract the type name\n\tconfigType := extractConfigTypeName(firstParam.Type, localPackageName)\n\n\t// filter out non-config types\n\tif configType != \"\" && !looksLikeConfigType(configType) {\n\t\treturn \"\"\n\t}\n\n\treturn configType\n}\n\n// extractConfigTypeName extracts the full type name from a parameter type expression\nfunc extractConfigTypeName(typeExpr ast.Expr, localPackageName string) string {\n\tswitch t := typeExpr.(type) {\n\tcase *ast.Ident:\n\t\t// local type (e.g., CatalogerConfig)\n\t\treturn localPackageName + \".\" + t.Name\n\tcase *ast.SelectorExpr:\n\t\t// imported type (e.g., java.ArchiveCatalogerConfig)\n\t\tif pkgIdent, ok := t.X.(*ast.Ident); ok {\n\t\t\treturn pkgIdent.Name + \".\" + t.Sel.Name\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// looksLikeConfigType checks if a type name looks like a configuration struct\nfunc looksLikeConfigType(typeName string) bool {\n\t// remove package prefix\n\tparts := strings.Split(typeName, \".\")\n\tif len(parts) < 2 {\n\t\treturn false\n\t}\n\n\tstructName := parts[len(parts)-1]\n\n\t// check for common config patterns\n\treturn strings.Contains(structName, \"Config\")\n}\n"
  },
  {
    "path": "internal/capabilities/generate/cataloger_config_linking_test.go",
    "content": "package main\n\nimport (\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestLinkCatalogersToConfigsFromPath(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tfixturePath      string\n\t\texpectedLinkages map[string]string\n\t\twantErr          require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:        \"simple generic cataloger with local config\",\n\t\t\tfixturePath: \"simple-generic-cataloger\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"go-module-cataloger\": \"golang.CatalogerConfig\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"cataloger name from constant\",\n\t\t\tfixturePath: \"cataloger-with-constant\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"python-package-cataloger\": \"python.CatalogerConfig\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"custom cataloger with Name() in same file\",\n\t\t\tfixturePath: \"custom-cataloger-same-file\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"java-pom-cataloger\": \"java.ArchiveCatalogerConfig\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:             \"custom cataloger with Name() in different file - not detected\",\n\t\t\tfixturePath:      \"custom-cataloger-different-file\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t// empty - current limitation, cannot detect cross-file Names\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"cataloger without config parameter\",\n\t\t\tfixturePath: \"no-config-cataloger\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"javascript-cataloger\": \"\", // empty string means no config\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"imported config type\",\n\t\t\tfixturePath: \"imported-config-type\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"linux-kernel-cataloger\": \"kernel.LinuxKernelCatalogerConfig\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"non-config first parameter\",\n\t\t\tfixturePath: \"non-config-first-param\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"binary-cataloger\": \"\", // Parser not a config type\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"conflicting cataloger names\",\n\t\t\tfixturePath: \"conflicting-names\",\n\t\t\twantErr:     require.Error,\n\t\t},\n\t\t{\n\t\t\tname:        \"mixed naming patterns\",\n\t\t\tfixturePath: \"mixed-naming-patterns\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"ruby-cataloger\": \"ruby.Config\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"selector expression config\",\n\t\t\tfixturePath: \"selector-expression-config\",\n\t\t\texpectedLinkages: map[string]string{\n\t\t\t\t\"rust-cataloger\": \"rust.CatalogerConfig\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tfixtureDir := filepath.Join(\"testdata\", \"cataloger\", tt.fixturePath)\n\t\t\tcatalogerRoot := filepath.Join(fixtureDir, \"cataloger\")\n\t\t\tlinkages, err := LinkCatalogersToConfigsFromPath(catalogerRoot, fixtureDir)\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.expectedLinkages, linkages)\n\t\t})\n\t}\n}\n\nfunc TestExtractConfigTypeName(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tfixturePath      string\n\t\tcatalogerName    string\n\t\texpectedConfig   string\n\t\texpectedNoConfig bool\n\t}{\n\t\t{\n\t\t\tname:           \"golang config\",\n\t\t\tfixturePath:    \"simple-generic-cataloger\",\n\t\t\tcatalogerName:  \"go-module-cataloger\",\n\t\t\texpectedConfig: \"golang.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:           \"python config with constant\",\n\t\t\tfixturePath:    \"cataloger-with-constant\",\n\t\t\tcatalogerName:  \"python-package-cataloger\",\n\t\t\texpectedConfig: \"python.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:           \"java archive config same file\",\n\t\t\tfixturePath:    \"custom-cataloger-same-file\",\n\t\t\tcatalogerName:  \"java-pom-cataloger\",\n\t\t\texpectedConfig: \"java.ArchiveCatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:           \"kernel config imported type\",\n\t\t\tfixturePath:    \"imported-config-type\",\n\t\t\tcatalogerName:  \"linux-kernel-cataloger\",\n\t\t\texpectedConfig: \"kernel.LinuxKernelCatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:             \"javascript - no config\",\n\t\t\tfixturePath:      \"no-config-cataloger\",\n\t\t\tcatalogerName:    \"javascript-cataloger\",\n\t\t\texpectedNoConfig: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"ruby with mixed naming\",\n\t\t\tfixturePath:    \"mixed-naming-patterns\",\n\t\t\tcatalogerName:  \"ruby-cataloger\",\n\t\t\texpectedConfig: \"ruby.Config\",\n\t\t},\n\t\t{\n\t\t\tname:           \"rust with selector expression\",\n\t\t\tfixturePath:    \"selector-expression-config\",\n\t\t\tcatalogerName:  \"rust-cataloger\",\n\t\t\texpectedConfig: \"rust.CatalogerConfig\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfixtureDir := filepath.Join(\"testdata\", \"cataloger\", tt.fixturePath)\n\t\t\tcatalogerRoot := filepath.Join(fixtureDir, \"cataloger\")\n\t\t\tlinkages, err := LinkCatalogersToConfigsFromPath(catalogerRoot, fixtureDir)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tconfig, ok := linkages[tt.catalogerName]\n\n\t\t\tif tt.expectedNoConfig {\n\t\t\t\tif ok {\n\t\t\t\t\trequire.Empty(t, config, \"expected no config for %s\", tt.catalogerName)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trequire.True(t, ok, \"should find cataloger %s\", tt.catalogerName)\n\t\t\t\trequire.Equal(t, tt.expectedConfig, config)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestLooksLikeConfigType(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\ttypeName string\n\t\twant     bool\n\t}{\n\t\t{\n\t\t\tname:     \"golang config\",\n\t\t\ttypeName: \"golang.CatalogerConfig\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"python config\",\n\t\t\ttypeName: \"python.CatalogerConfig\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"java archive config\",\n\t\t\ttypeName: \"java.ArchiveCatalogerConfig\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"kernel config\",\n\t\t\ttypeName: \"kernel.LinuxKernelCatalogerConfig\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"nix config\",\n\t\t\ttypeName: \"nix.Config\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"config prefix\",\n\t\t\ttypeName: \"package.ConfigOptions\",\n\t\t\twant:     true,\n\t\t},\n\t\t{\n\t\t\tname:     \"not a config type\",\n\t\t\ttypeName: \"package.Parser\",\n\t\t\twant:     false,\n\t\t},\n\t\t{\n\t\t\tname:     \"not a config type - resolver\",\n\t\t\ttypeName: \"file.Resolver\",\n\t\t\twant:     false,\n\t\t},\n\t\t{\n\t\t\tname:     \"no package prefix\",\n\t\t\ttypeName: \"CatalogerConfig\",\n\t\t\twant:     false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := looksLikeConfigType(tt.typeName)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractReceiverTypeName(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\treceiver string // receiver code snippet\n\t\twant     string\n\t}{\n\t\t{\n\t\t\tname:     \"value receiver\",\n\t\t\treceiver: \"func (c Cataloger) Name() string { return \\\"\\\" }\",\n\t\t\twant:     \"Cataloger\",\n\t\t},\n\t\t{\n\t\t\tname:     \"pointer receiver\",\n\t\t\treceiver: \"func (c *Cataloger) Name() string { return \\\"\\\" }\",\n\t\t\twant:     \"Cataloger\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// parse the function to get the receiver type\n\t\t\tfset := token.NewFileSet()\n\t\t\tfile, err := parser.ParseFile(fset, \"\", \"package test\\n\"+tt.receiver, 0)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// extract the function declaration\n\t\t\trequire.Len(t, file.Decls, 1)\n\t\t\tfuncDecl, ok := file.Decls[0].(*ast.FuncDecl)\n\t\t\trequire.True(t, ok)\n\n\t\t\t// get receiver type\n\t\t\tvar recvType ast.Expr\n\t\t\tif funcDecl.Recv != nil && len(funcDecl.Recv.List) > 0 {\n\t\t\t\trecvType = funcDecl.Recv.List[0].Type\n\t\t\t}\n\n\t\t\tgot := extractReceiverTypeName(recvType)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractConfigTypeNameHelper(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tfuncSig          string // function signature with parameter\n\t\tlocalPackageName string\n\t\twant             string\n\t}{\n\t\t{\n\t\t\tname:             \"local type\",\n\t\t\tfuncSig:          \"func New(cfg CatalogerConfig) pkg.Cataloger { return nil }\",\n\t\t\tlocalPackageName: \"python\",\n\t\t\twant:             \"python.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:             \"imported type\",\n\t\t\tfuncSig:          \"func New(cfg java.ArchiveCatalogerConfig) pkg.Cataloger { return nil }\",\n\t\t\tlocalPackageName: \"python\",\n\t\t\twant:             \"java.ArchiveCatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:             \"imported type - kernel package\",\n\t\t\tfuncSig:          \"func New(cfg kernel.LinuxKernelCatalogerConfig) pkg.Cataloger { return nil }\",\n\t\t\tlocalPackageName: \"other\",\n\t\t\twant:             \"kernel.LinuxKernelCatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:             \"no parameters\",\n\t\t\tfuncSig:          \"func New() pkg.Cataloger { return nil }\",\n\t\t\tlocalPackageName: \"python\",\n\t\t\twant:             \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// parse the function to get parameter type\n\t\t\tfset := token.NewFileSet()\n\t\t\tfile, err := parser.ParseFile(fset, \"\", \"package test\\n\"+tt.funcSig, 0)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// extract the function declaration\n\t\t\trequire.Len(t, file.Decls, 1)\n\t\t\tfuncDecl, ok := file.Decls[0].(*ast.FuncDecl)\n\t\t\trequire.True(t, ok)\n\n\t\t\t// get first parameter type\n\t\t\tvar paramType ast.Expr\n\t\t\tif funcDecl.Type.Params != nil && len(funcDecl.Type.Params.List) > 0 {\n\t\t\t\tparamType = funcDecl.Type.Params.List[0].Type\n\t\t\t}\n\n\t\t\tgot := extractConfigTypeName(paramType, tt.localPackageName)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractReturnTypeName(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tfuncDef string // complete function definition\n\t\twant    string\n\t}{\n\t\t{\n\t\t\tname: \"pointer to composite literal\",\n\t\t\tfuncDef: `func New() pkg.Cataloger {\n\t\t\t\treturn &javaCataloger{name: \"test\"}\n\t\t\t}`,\n\t\t\twant: \"javaCataloger\",\n\t\t},\n\t\t{\n\t\t\tname: \"composite literal\",\n\t\t\tfuncDef: `func New() pkg.Cataloger {\n\t\t\t\treturn pythonCataloger{name: \"test\"}\n\t\t\t}`,\n\t\t\twant: \"pythonCataloger\",\n\t\t},\n\t\t{\n\t\t\tname: \"variable return\",\n\t\t\tfuncDef: `func New() pkg.Cataloger {\n\t\t\t\tc := &Cataloger{}\n\t\t\t\treturn c\n\t\t\t}`,\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"nil return\",\n\t\t\tfuncDef: `func New() pkg.Cataloger {\n\t\t\t\treturn nil\n\t\t\t}`,\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname:    \"empty function body\",\n\t\t\tfuncDef: `func New() pkg.Cataloger {}`,\n\t\t\twant:    \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// parse the function\n\t\t\tfset := token.NewFileSet()\n\t\t\tfile, err := parser.ParseFile(fset, \"\", \"package test\\n\"+tt.funcDef, 0)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// extract the function declaration\n\t\t\trequire.Len(t, file.Decls, 1)\n\t\t\tfuncDecl, ok := file.Decls[0].(*ast.FuncDecl)\n\t\t\trequire.True(t, ok)\n\n\t\t\tgot := extractReturnTypeName(funcDecl)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_app_config.go",
    "content": "// this file discovers application-level configuration from cmd/syft/internal/options/ by parsing ecosystem config structs, their DescribeFields() methods, and default value functions.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// AppConfigField represents an application-level configuration field for catalogers\ntype AppConfigField struct {\n\tKey          string      // e.g., \"golang.search-local-mod-cache-licenses\"\n\tDescription  string      // extracted from DescribeFields() method\n\tDefaultValue interface{} // extracted from Default*() functions\n}\n\n// extractEcosystemConfigFieldsFromCatalog parses catalog.go and extracts the ecosystem-specific\n// config fields from the Catalog struct, returning a map of struct type name to YAML tag\nfunc extractEcosystemConfigFieldsFromCatalog(catalogFilePath string) (map[string]string, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, catalogFilePath, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse catalog.go: %w\", err)\n\t}\n\n\t// find the Catalog struct\n\tcatalogStruct := findConfigStruct(f, \"Catalog\")\n\tif catalogStruct == nil {\n\t\treturn nil, fmt.Errorf(\"catalog struct not found in %s\", catalogFilePath)\n\t}\n\n\t// extract ecosystem config fields from the Catalog struct\n\t// these are between the \"ecosystem-specific cataloger configuration\" comment and the next section\n\tecosystemConfigs := make(map[string]string)\n\tinEcosystemSection := false\n\n\tfor _, field := range catalogStruct.Fields.List {\n\t\t// check for ecosystem section marker comment\n\t\tif field.Doc != nil {\n\t\t\tfor _, comment := range field.Doc.List {\n\t\t\t\tif strings.Contains(comment.Text, \"ecosystem-specific cataloger configuration\") {\n\t\t\t\t\tinEcosystemSection = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// check if we've hit the next section (any comment marking a new section)\n\t\t\t\tif inEcosystemSection && strings.HasPrefix(comment.Text, \"// configuration for\") {\n\t\t\t\t\tinEcosystemSection = false\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif !inEcosystemSection {\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract field type and yaml tag\n\t\tif len(field.Names) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// get the type name (e.g., \"golangConfig\")\n\t\tvar typeName string\n\t\tif ident, ok := field.Type.(*ast.Ident); ok {\n\t\t\ttypeName = ident.Name\n\t\t} else {\n\t\t\tcontinue\n\t\t}\n\n\t\t// get the yaml tag\n\t\tyamlTag := extractYAMLTag(field)\n\t\tif yamlTag == \"\" || yamlTag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tecosystemConfigs[typeName] = yamlTag\n\t}\n\n\treturn ecosystemConfigs, nil\n}\n\n// findFilesWithCatalogerImports scans the options directory for .go files that import\n// from \"github.com/anchore/syft/syft/pkg/cataloger/*\" packages\nfunc findFilesWithCatalogerImports(optionsDir string) ([]string, error) {\n\tentries, err := os.ReadDir(optionsDir)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read options directory: %w\", err)\n\t}\n\n\tvar candidateFiles []string\n\tfor _, entry := range entries {\n\t\tif entry.IsDir() || !strings.HasSuffix(entry.Name(), \".go\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tfilePath := filepath.Join(optionsDir, entry.Name())\n\n\t\t// parse the file to check imports\n\t\tfset := token.NewFileSet()\n\t\tf, err := parser.ParseFile(fset, filePath, nil, parser.ImportsOnly)\n\t\tif err != nil {\n\t\t\tcontinue // skip files that can't be parsed\n\t\t}\n\n\t\t// check if file imports from cataloger packages\n\t\tfor _, imp := range f.Imports {\n\t\t\timportPath := strings.Trim(imp.Path.Value, `\"`)\n\t\t\tif strings.HasPrefix(importPath, \"github.com/anchore/syft/syft/pkg/cataloger/\") {\n\t\t\t\tcandidateFiles = append(candidateFiles, filePath)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn candidateFiles, nil\n}\n\n// extractConfigStructTypes parses a Go file and returns all struct type names defined in it\nfunc extractConfigStructTypes(filePath string) ([]string, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, filePath, nil, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", filePath, err)\n\t}\n\n\tvar structTypes []string\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// check if it's a struct type\n\t\t\tif _, ok := typeSpec.Type.(*ast.StructType); ok {\n\t\t\t\tstructTypes = append(structTypes, typeSpec.Name.Name)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn structTypes, nil\n}\n\n// discoverCatalogerConfigs discovers cataloger config files by:\n// 1. Finding files with cataloger imports in options directory\n// 2. Extracting ecosystem config fields from Catalog struct\n// 3. Matching file structs against Catalog fields\n// Returns a map of file path to top-level YAML key and a reverse lookup map of YAML key to struct name\nfunc discoverCatalogerConfigs(repoRoot string) (map[string]string, map[string]string, error) {\n\toptionsDir := filepath.Join(repoRoot, \"cmd\", \"syft\", \"internal\", \"options\")\n\tcatalogFilePath := filepath.Join(optionsDir, \"catalog.go\")\n\n\t// get ecosystem config fields from Catalog struct\n\tecosystemConfigs, err := extractEcosystemConfigFieldsFromCatalog(catalogFilePath)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif len(ecosystemConfigs) == 0 {\n\t\treturn nil, nil, fmt.Errorf(\"no ecosystem config fields found in Catalog struct\")\n\t}\n\n\t// find files with cataloger imports\n\tcandidateFiles, err := findFilesWithCatalogerImports(optionsDir)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// match candidate files against Catalog ecosystem fields\n\tfileToKey := make(map[string]string)\n\tfoundStructs := make(map[string]bool)\n\n\tfor _, filePath := range candidateFiles {\n\t\tstructTypes, err := extractConfigStructTypes(filePath)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\t// check if any struct type matches an ecosystem config\n\t\tfor _, structType := range structTypes {\n\t\t\tif yamlKey, exists := ecosystemConfigs[structType]; exists {\n\t\t\t\tfileToKey[filePath] = yamlKey\n\t\t\t\tfoundStructs[structType] = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t// validate that all ecosystem configs were found\n\tvar missingConfigs []string\n\tfor structType := range ecosystemConfigs {\n\t\tif !foundStructs[structType] {\n\t\t\tmissingConfigs = append(missingConfigs, structType)\n\t\t}\n\t}\n\n\tif len(missingConfigs) > 0 {\n\t\tsort.Strings(missingConfigs)\n\t\treturn nil, nil, fmt.Errorf(\"could not find files for ecosystem configs: %s\", strings.Join(missingConfigs, \", \"))\n\t}\n\n\t// build reverse lookup map (yamlKey -> structName)\n\tkeyToStruct := make(map[string]string)\n\tfor structName, yamlKey := range ecosystemConfigs {\n\t\tkeyToStruct[yamlKey] = structName\n\t}\n\n\treturn fileToKey, keyToStruct, nil\n}\n\n// DiscoverAppConfigs discovers all application-level cataloger configuration fields\n// from the options package\nfunc DiscoverAppConfigs(repoRoot string) ([]AppConfigField, error) {\n\t// discover cataloger config files dynamically\n\tconfigFiles, keyToStruct, err := discoverCatalogerConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover cataloger configs: %w\", err)\n\t}\n\n\t// extract configuration fields from each discovered file\n\tvar configs []AppConfigField\n\tfor filePath, topLevelKey := range configFiles {\n\t\tfields, err := extractAppConfigFields(filePath, topLevelKey, keyToStruct)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to extract config from %s: %w\", filePath, err)\n\t\t}\n\t\tconfigs = append(configs, fields...)\n\t}\n\n\t// sort by key for consistent output\n\tsort.Slice(configs, func(i, j int) bool {\n\t\treturn configs[i].Key < configs[j].Key\n\t})\n\n\treturn configs, nil\n}\n\n// extractAppConfigFields extracts config fields from an options file\nfunc extractAppConfigFields(filePath, topLevelKey string, keyToStruct map[string]string) ([]AppConfigField, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar configs []AppConfigField\n\n\t// find the main config struct (not nested ones)\n\tconfigStruct, descriptions := findAppConfigStructAndDescriptions(f, topLevelKey, keyToStruct)\n\tif configStruct == nil {\n\t\treturn nil, fmt.Errorf(\"no config struct found in %s\", filePath)\n\t}\n\n\t// extract default values from the default function\n\tdefaults := extractAppDefaultValues(f)\n\n\t// build config fields from struct fields\n\tfor _, field := range configStruct.Fields.List {\n\t\t// extract yaml tag to get the field key\n\t\tyamlKey := extractYAMLTag(field)\n\t\tif yamlKey == \"\" || yamlKey == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar fieldName string\n\t\tif len(field.Names) > 0 {\n\t\t\tfieldName = field.Names[0].Name\n\t\t} else {\n\t\t\tcontinue\n\t\t}\n\n\t\t// build full key path\n\t\tfullKey := topLevelKey + \".\" + yamlKey\n\n\t\t// handle nested structs (e.g., golang.MainModuleVersion)\n\t\tif isNestedStruct(field.Type) {\n\t\t\tnestedConfigs := extractNestedAppConfigs(f, fullKey, fieldName, field.Type, descriptions, defaults)\n\t\t\tconfigs = append(configs, nestedConfigs...)\n\t\t\tcontinue\n\t\t}\n\n\t\t// get description from DescribeFields\n\t\tdescription := descriptions[fieldName]\n\n\t\t// get default value\n\t\tdefaultValue := defaults[fieldName]\n\n\t\tconfigs = append(configs, AppConfigField{\n\t\t\tKey:          fullKey,\n\t\t\tDescription:  description,\n\t\t\tDefaultValue: defaultValue,\n\t\t})\n\t}\n\n\treturn configs, nil\n}\n\n// findAppConfigStructAndDescriptions finds the main config struct and extracts field descriptions\n// from the DescribeFields method\nfunc findAppConfigStructAndDescriptions(f *ast.File, topLevelKey string, keyToStruct map[string]string) (*ast.StructType, map[string]string) {\n\tstructName := keyToStruct[topLevelKey]\n\tconfigStruct := findConfigStruct(f, structName)\n\tdescriptions := extractDescriptionsFromDescribeFields(f)\n\treturn configStruct, descriptions\n}\n\n// findConfigStruct searches for the config struct with the expected name in the AST\nfunc findConfigStruct(f *ast.File, expectedName string) *ast.StructType {\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tstructType, ok := typeSpec.Type.(*ast.StructType)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif typeSpec.Name.Name == expectedName {\n\t\t\t\treturn structType\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// extractDescriptionsFromDescribeFields extracts field descriptions from the DescribeFields method\nfunc extractDescriptionsFromDescribeFields(f *ast.File) map[string]string {\n\tdescriptions := make(map[string]string)\n\n\tfor _, decl := range f.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok || funcDecl.Name.Name != \"DescribeFields\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract descriptions from descriptions.Add calls\n\t\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\t\tcallExpr, ok := n.(*ast.CallExpr)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// check if this is a descriptions.Add call\n\t\t\tselector, ok := callExpr.Fun.(*ast.SelectorExpr)\n\t\t\tif !ok || selector.Sel.Name != \"Add\" {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// first argument should be a field reference (&o.FieldName or &o.Parent.FieldName)\n\t\t\tif len(callExpr.Args) < 2 {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tfieldPath := extractFieldPathFromRef(callExpr.Args[0])\n\t\t\tif fieldPath == \"\" {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// second argument is the description string\n\t\t\tdescription := extractStringLiteral(callExpr.Args[1])\n\t\t\tif description != \"\" {\n\t\t\t\tdescription = cleanDescription(description)\n\t\t\t\tdescriptions[fieldPath] = description\n\t\t\t}\n\n\t\t\treturn true\n\t\t})\n\t}\n\n\treturn descriptions\n}\n\n// extractNestedAppConfigs handles nested config structs like golang.MainModuleVersion\nfunc extractNestedAppConfigs(f *ast.File, parentKey, parentFieldName string, fieldType ast.Expr, descriptions map[string]string, defaults map[string]interface{}) []AppConfigField {\n\tvar configs []AppConfigField\n\n\t// find the nested struct type\n\tvar nestedStructName string\n\tswitch t := fieldType.(type) {\n\tcase *ast.Ident:\n\t\tnestedStructName = t.Name\n\tdefault:\n\t\treturn nil\n\t}\n\n\t// find the struct definition\n\tvar nestedStruct *ast.StructType\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok || typeSpec.Name.Name != nestedStructName {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar structOk bool\n\t\t\tnestedStruct, structOk = typeSpec.Type.(*ast.StructType)\n\t\t\tif structOk {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif nestedStruct == nil {\n\t\treturn nil\n\t}\n\n\t// extract fields from nested struct\n\tfor _, field := range nestedStruct.Fields.List {\n\t\tyamlKey := extractYAMLTag(field)\n\t\tif yamlKey == \"\" || yamlKey == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar fieldName string\n\t\tif len(field.Names) > 0 {\n\t\t\tfieldName = field.Names[0].Name\n\t\t} else {\n\t\t\tcontinue\n\t\t}\n\n\t\tfullKey := parentKey + \".\" + yamlKey\n\n\t\t// get description using the nested path (e.g., \"MainModuleVersion.FromLDFlags\")\n\t\tnestedPath := parentFieldName + \".\" + fieldName\n\t\tdescription := descriptions[nestedPath]\n\n\t\t// try to get default value from nested defaults\n\t\tvar defaultValue interface{}\n\t\tif nestedDefaults, ok := defaults[parentFieldName].(map[string]interface{}); ok {\n\t\t\tdefaultValue = nestedDefaults[fieldName]\n\t\t}\n\n\t\tconfigs = append(configs, AppConfigField{\n\t\t\tKey:          fullKey,\n\t\t\tDescription:  description,\n\t\t\tDefaultValue: defaultValue,\n\t\t})\n\t}\n\n\treturn configs\n}\n\n// extractAppDefaultValues extracts default values from the default*Config function\nfunc extractAppDefaultValues(f *ast.File) map[string]interface{} {\n\tdefaults := make(map[string]interface{})\n\n\tfor _, decl := range f.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok || !strings.HasPrefix(funcDecl.Name.Name, \"default\") {\n\t\t\tcontinue\n\t\t}\n\n\t\t// look for return statements that construct the config struct\n\t\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\t\t// look for return statements\n\t\t\treturnStmt, ok := n.(*ast.ReturnStmt)\n\t\t\tif !ok || len(returnStmt.Results) == 0 {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// check if returning a struct literal\n\t\t\tcompositeLit, ok := returnStmt.Results[0].(*ast.CompositeLit)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// extract field values from the composite literal\n\t\t\tfor _, elt := range compositeLit.Elts {\n\t\t\t\tkvExpr, ok := elt.(*ast.KeyValueExpr)\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// get field name\n\t\t\t\tident, ok := kvExpr.Key.(*ast.Ident)\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfieldName := ident.Name\n\n\t\t\t\t// extract the value\n\t\t\t\tvalue := extractAppValue(kvExpr.Value)\n\t\t\t\tif value != nil {\n\t\t\t\t\tdefaults[fieldName] = value\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true\n\t\t})\n\t}\n\n\treturn defaults\n}\n\n// extractAppValue extracts a Go value from an AST expression\nfunc extractAppValue(expr ast.Expr) interface{} {\n\tswitch v := expr.(type) {\n\tcase *ast.BasicLit:\n\t\t// string, int, bool literals\n\t\tswitch v.Kind {\n\t\tcase token.STRING:\n\t\t\treturn strings.Trim(v.Value, `\"`)\n\t\tcase token.INT:\n\t\t\treturn v.Value\n\t\tcase token.FLOAT:\n\t\t\treturn v.Value\n\t\t}\n\tcase *ast.Ident:\n\t\t// boolean values\n\t\tif v.Name == \"true\" {\n\t\t\treturn true\n\t\t}\n\t\tif v.Name == \"false\" {\n\t\t\treturn false\n\t\t}\n\t\tif v.Name == \"nil\" {\n\t\t\treturn nil\n\t\t}\n\tcase *ast.CompositeLit:\n\t\t// nested struct literal\n\t\tnested := make(map[string]interface{})\n\t\tfor _, elt := range v.Elts {\n\t\t\tkvExpr, ok := elt.(*ast.KeyValueExpr)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tident, ok := kvExpr.Key.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnested[ident.Name] = extractAppValue(kvExpr.Value)\n\t\t}\n\t\tif len(nested) > 0 {\n\t\t\treturn nested\n\t\t}\n\t}\n\treturn nil\n}\n\n// extractYAMLTag extracts the yaml tag value from a struct field\nfunc extractYAMLTag(field *ast.Field) string {\n\tif field.Tag == nil {\n\t\treturn \"\"\n\t}\n\n\ttag := strings.Trim(field.Tag.Value, \"`\")\n\ttags := reflect.StructTag(tag)\n\tyamlTag := tags.Get(\"yaml\")\n\n\t// handle tags like \"field-name,omitempty\"\n\tif idx := strings.Index(yamlTag, \",\"); idx != -1 {\n\t\tyamlTag = yamlTag[:idx]\n\t}\n\n\treturn yamlTag\n}\n\n// extractFieldPathFromRef extracts field path from & o.FieldName or &o.Parent.FieldName expression\nfunc extractFieldPathFromRef(expr ast.Expr) string {\n\tunaryExpr, ok := expr.(*ast.UnaryExpr)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\n\t// handle nested field references like &o.MainModuleVersion.FromLDFlags\n\tvar parts []string\n\tcurrent := unaryExpr.X\n\n\tfor {\n\t\tselectorExpr, ok := current.(*ast.SelectorExpr)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\t// add this selector to the path\n\t\tparts = append([]string{selectorExpr.Sel.Name}, parts...)\n\n\t\t// move to the next level\n\t\tcurrent = selectorExpr.X\n\t}\n\n\t// join the parts with dots to create the full path\n\t// e.g., [\"MainModuleVersion\", \"FromLDFlags\"] -> \"MainModuleVersion.FromLDFlags\"\n\tif len(parts) > 0 {\n\t\treturn strings.Join(parts, \".\")\n\t}\n\n\treturn \"\"\n}\n\n// extractStringLiteral extracts a string value from a BasicLit node\nfunc extractStringLiteral(expr ast.Expr) string {\n\tlit, ok := expr.(*ast.BasicLit)\n\tif !ok || lit.Kind != token.STRING {\n\t\treturn \"\"\n\t}\n\n\t// remove backticks or quotes\n\tvalue := strings.Trim(lit.Value, \"`\\\"\")\n\treturn value\n}\n\n// cleanDescription cleans up multi-line descriptions\nfunc cleanDescription(desc string) string {\n\t// replace multiple whitespace with single space\n\tdesc = strings.Join(strings.Fields(desc), \" \")\n\treturn strings.TrimSpace(desc)\n}\n\n// isNestedStruct checks if a field type is a nested struct (not a pointer or basic type)\nfunc isNestedStruct(expr ast.Expr) bool {\n\tswitch t := expr.(type) {\n\tcase *ast.Ident:\n\t\t// check if it's a struct type (not a basic type)\n\t\t// basic types would be: string, int, bool, etc.\n\t\tbasicTypes := map[string]bool{\n\t\t\t\"string\": true, \"int\": true, \"int8\": true, \"int16\": true, \"int32\": true, \"int64\": true,\n\t\t\t\"uint\": true, \"uint8\": true, \"uint16\": true, \"uint32\": true, \"uint64\": true,\n\t\t\t\"float32\": true, \"float64\": true, \"bool\": true, \"byte\": true, \"rune\": true,\n\t\t}\n\t\treturn !basicTypes[t.Name]\n\tcase *ast.StarExpr:\n\t\t// pointer types are not nested structs for our purposes\n\t\treturn false\n\tcase *ast.ArrayType, *ast.MapType:\n\t\treturn false\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_app_config_test.go",
    "content": "package main\n\nimport (\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\n// TestAppConfigFieldsHaveDescriptions ensures that all application config fields discovered from the\n// options package have descriptions, which are required for user-facing documentation.\nfunc TestAppConfigFieldsHaveDescriptions(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := internal.RepoRoot()\n\trequire.NoError(t, err)\n\n\tconfigs, err := DiscoverAppConfigs(repoRoot)\n\trequire.NoError(t, err)\n\n\t// verify that all configs have descriptions\n\tvar missingDescriptions []string\n\tfor _, cfg := range configs {\n\t\tif cfg.Description == \"\" {\n\t\t\tmissingDescriptions = append(missingDescriptions, cfg.Key)\n\t\t}\n\t}\n\n\trequire.Empty(t, missingDescriptions, \"the following configs are missing descriptions: %v\", missingDescriptions)\n}\n\n// TestAppConfigKeyFormat validates that all application config keys follow the expected naming convention\n// of \"ecosystem.field-name\" using kebab-case (lowercase with hyphens, no underscores or spaces).\nfunc TestAppConfigKeyFormat(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := internal.RepoRoot()\n\trequire.NoError(t, err)\n\n\tconfigs, err := DiscoverAppConfigs(repoRoot)\n\trequire.NoError(t, err)\n\n\t// verify that all config keys follow the expected format\n\tfor _, cfg := range configs {\n\t\t// keys should be in format \"ecosystem.field-name\" or \"ecosystem.nested.field-name\"\n\t\trequire.Contains(t, cfg.Key, \".\", \"config key should contain at least one dot: %s\", cfg.Key)\n\n\t\t// keys should use kebab-case (all lowercase with hyphens)\n\t\trequire.NotContains(t, cfg.Key, \"_\", \"config key should not contain underscores: %s\", cfg.Key)\n\t\trequire.NotContains(t, cfg.Key, \" \", \"config key should not contain spaces: %s\", cfg.Key)\n\t}\n}\n\nfunc TestCleanDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tdesc string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"single line no extra whitespace\",\n\t\t\tdesc: \"this is a description\",\n\t\t\twant: \"this is a description\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple spaces collapsed\",\n\t\t\tdesc: \"this  has   multiple    spaces\",\n\t\t\twant: \"this has multiple spaces\",\n\t\t},\n\t\t{\n\t\t\tname: \"multi-line description\",\n\t\t\tdesc: \"this is a\\nmulti-line\\ndescription\",\n\t\t\twant: \"this is a multi-line description\",\n\t\t},\n\t\t{\n\t\t\tname: \"leading and trailing whitespace\",\n\t\t\tdesc: \"  \\t  description with spaces  \\t  \",\n\t\t\twant: \"description with spaces\",\n\t\t},\n\t\t{\n\t\t\tname: \"tabs and newlines\",\n\t\t\tdesc: \"description\\t\\twith\\n\\ttabs\",\n\t\t\twant: \"description with tabs\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty string\",\n\t\t\tdesc: \"\",\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"only whitespace\",\n\t\t\tdesc: \"   \\n\\t  \",\n\t\t\twant: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := cleanDescription(tt.desc)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractYAMLTag(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\ttagStr string\n\t\twant   string\n\t}{\n\t\t{\n\t\t\tname:   \"simple yaml tag\",\n\t\t\ttagStr: \"`yaml:\\\"field-name\\\"`\",\n\t\t\twant:   \"field-name\",\n\t\t},\n\t\t{\n\t\t\tname:   \"yaml tag with omitempty\",\n\t\t\ttagStr: \"`yaml:\\\"field-name,omitempty\\\"`\",\n\t\t\twant:   \"field-name\",\n\t\t},\n\t\t{\n\t\t\tname:   \"yaml tag with multiple options\",\n\t\t\ttagStr: \"`yaml:\\\"field-name,omitempty,inline\\\"`\",\n\t\t\twant:   \"field-name\",\n\t\t},\n\t\t{\n\t\t\tname:   \"yaml tag dash means skip\",\n\t\t\ttagStr: \"`yaml:\\\"-\\\"`\",\n\t\t\twant:   \"-\",\n\t\t},\n\t\t{\n\t\t\tname:   \"no yaml tag\",\n\t\t\ttagStr: \"`json:\\\"field-name\\\"`\",\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname:   \"empty tag\",\n\t\t\ttagStr: \"\",\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname:   \"yaml tag with json tag\",\n\t\t\ttagStr: \"`yaml:\\\"yaml-name\\\" json:\\\"json-name\\\"`\",\n\t\t\twant:   \"yaml-name\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// construct a minimal ast.Field with the tag\n\t\t\tfield := &ast.Field{}\n\t\t\tif tt.tagStr != \"\" {\n\t\t\t\tfield.Tag = &ast.BasicLit{\n\t\t\t\t\tKind:  token.STRING,\n\t\t\t\t\tValue: tt.tagStr,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgot := extractYAMLTag(field)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestIsNestedStruct(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\texpr ast.Expr\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"custom struct type\",\n\t\t\texpr: &ast.Ident{Name: \"MainModuleVersion\"},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"string type\",\n\t\t\texpr: &ast.Ident{Name: \"string\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"int type\",\n\t\t\texpr: &ast.Ident{Name: \"int\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"bool type\",\n\t\t\texpr: &ast.Ident{Name: \"bool\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"pointer type\",\n\t\t\texpr: &ast.StarExpr{X: &ast.Ident{Name: \"Config\"}},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"array type\",\n\t\t\texpr: &ast.ArrayType{Elt: &ast.Ident{Name: \"string\"}},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"map type\",\n\t\t\texpr: &ast.MapType{\n\t\t\t\tKey:   &ast.Ident{Name: \"string\"},\n\t\t\t\tValue: &ast.Ident{Name: \"string\"},\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"int32 type\",\n\t\t\texpr: &ast.Ident{Name: \"int32\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"uint64 type\",\n\t\t\texpr: &ast.Ident{Name: \"uint64\"},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"float64 type\",\n\t\t\texpr: &ast.Ident{Name: \"float64\"},\n\t\t\twant: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := isNestedStruct(tt.expr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractStringLiteral(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\texpr ast.Expr\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"double quoted string\",\n\t\t\texpr: &ast.BasicLit{\n\t\t\t\tKind:  token.STRING,\n\t\t\t\tValue: `\"hello world\"`,\n\t\t\t},\n\t\t\twant: \"hello world\",\n\t\t},\n\t\t{\n\t\t\tname: \"backtick string\",\n\t\t\texpr: &ast.BasicLit{\n\t\t\t\tKind:  token.STRING,\n\t\t\t\tValue: \"`hello world`\",\n\t\t\t},\n\t\t\twant: \"hello world\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty string\",\n\t\t\texpr: &ast.BasicLit{\n\t\t\t\tKind:  token.STRING,\n\t\t\t\tValue: `\"\"`,\n\t\t\t},\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"string with spaces\",\n\t\t\texpr: &ast.BasicLit{\n\t\t\t\tKind:  token.STRING,\n\t\t\t\tValue: `\"  spaces  \"`,\n\t\t\t},\n\t\t\twant: \"  spaces  \",\n\t\t},\n\t\t{\n\t\t\tname: \"not a string literal (int)\",\n\t\t\texpr: &ast.BasicLit{\n\t\t\t\tKind:  token.INT,\n\t\t\t\tValue: \"42\",\n\t\t\t},\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"not a basic lit\",\n\t\t\texpr: &ast.Ident{Name: \"someVar\"},\n\t\t\twant: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := extractStringLiteral(tt.expr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractFieldPathFromRef(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tsrc  string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"simple field reference\",\n\t\t\tsrc:  \"&o.Field\",\n\t\t\twant: \"Field\",\n\t\t},\n\t\t{\n\t\t\tname: \"nested field reference\",\n\t\t\tsrc:  \"&o.Parent.Field\",\n\t\t\twant: \"Parent.Field\",\n\t\t},\n\t\t{\n\t\t\tname: \"deeply nested field reference\",\n\t\t\tsrc:  \"&o.MainModuleVersion.FromLDFlags\",\n\t\t\twant: \"MainModuleVersion.FromLDFlags\",\n\t\t},\n\t\t{\n\t\t\tname: \"three levels deep\",\n\t\t\tsrc:  \"&o.Level1.Level2.Level3\",\n\t\t\twant: \"Level1.Level2.Level3\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// parse the expression\n\t\t\texpr, err := parser.ParseExpr(tt.src)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot := extractFieldPathFromRef(expr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractAppValue(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tsrc  string\n\t\twant interface{}\n\t}{\n\t\t{\n\t\t\tname: \"string literal\",\n\t\t\tsrc:  `\"hello\"`,\n\t\t\twant: \"hello\",\n\t\t},\n\t\t{\n\t\t\tname: \"int literal\",\n\t\t\tsrc:  \"42\",\n\t\t\twant: \"42\",\n\t\t},\n\t\t{\n\t\t\tname: \"float literal\",\n\t\t\tsrc:  \"3.14\",\n\t\t\twant: \"3.14\",\n\t\t},\n\t\t{\n\t\t\tname: \"bool true\",\n\t\t\tsrc:  \"true\",\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"bool false\",\n\t\t\tsrc:  \"false\",\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"nil value\",\n\t\t\tsrc:  \"nil\",\n\t\t\twant: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"empty string\",\n\t\t\tsrc:  `\"\"`,\n\t\t\twant: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// parse the expression\n\t\t\texpr, err := parser.ParseExpr(tt.src)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot := extractAppValue(expr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractAppValue_NestedStruct(t *testing.T) {\n\t// test nested struct separately since it returns a map\n\tsrc := `struct{Field1 string; Field2 bool}{Field1: \"value\", Field2: true}`\n\n\t// parse as a composite literal\n\texpr, err := parser.ParseExpr(src)\n\trequire.NoError(t, err)\n\n\t// extract the composite literal\n\tcompositeLit, ok := expr.(*ast.CompositeLit)\n\trequire.True(t, ok)\n\n\tgot := extractAppValue(compositeLit)\n\n\t// verify it's a map with the expected values\n\tgotMap, ok := got.(map[string]interface{})\n\trequire.True(t, ok)\n\trequire.Equal(t, \"value\", gotMap[\"Field1\"])\n\trequire.Equal(t, true, gotMap[\"Field2\"])\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_cataloger_configs.go",
    "content": "// this file discovers cataloger configuration structs using AST parsing to find Config structs and extract fields with app-config annotations.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\n// ConfigField represents a single field in a configuration struct\ntype ConfigField struct {\n\tName        string // e.g., \"SearchLocalModCacheLicenses\"\n\tType        string // e.g., \"bool\", \"string\", \"[]string\", etc.\n\tDescription string // extracted from doc comment (1-2 sentences)\n\tAppKey      string // from \"// app-config: golang.search-local-mod-cache-licenses\"\n}\n\n// ConfigInfo represents a discovered configuration struct\ntype ConfigInfo struct {\n\tPackageName string        // e.g., \"golang\", \"python\", \"dotnet\"\n\tStructName  string        // e.g., \"CatalogerConfig\", \"MainModuleVersionConfig\"\n\tFields      []ConfigField // all fields with their metadata\n}\n\nvar appConfigAnnotationPattern = regexp.MustCompile(`^//\\s*app-config:\\s*(.+)$`)\n\n// DiscoverConfigs walks the cataloger directory and discovers all configuration structs\n// Returns map where key is \"packageName.StructName\" (e.g., \"golang.CatalogerConfig\")\nfunc DiscoverConfigs(repoRoot string) (map[string]ConfigInfo, error) {\n\tcatalogerRoot := filepath.Join(repoRoot, \"syft\", \"pkg\", \"cataloger\")\n\treturn DiscoverConfigsFromPath(catalogerRoot)\n}\n\n// DiscoverConfigsFromPath walks the given directory and discovers all configuration structs\n// Returns map where key is \"packageName.StructName\" (e.g., \"golang.CatalogerConfig\")\nfunc DiscoverConfigsFromPath(catalogerRoot string) (map[string]ConfigInfo, error) {\n\t// find all .go files under the directory recursively\n\tvar files []string\n\terr := filepath.Walk(catalogerRoot, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !info.IsDir() && strings.HasSuffix(path, \".go\") && !strings.HasSuffix(path, \"_test.go\") {\n\t\t\tfiles = append(files, path)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to walk cataloger directory: %w\", err)\n\t}\n\n\tdiscovered := make(map[string]ConfigInfo)\n\n\tfor _, file := range files {\n\t\tconfigs, err := discoverConfigsInFile(file)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", file, err)\n\t\t}\n\n\t\tfor key, config := range configs {\n\t\t\tif _, ok := discovered[key]; ok {\n\t\t\t\treturn nil, fmt.Errorf(\"duplicate config struct %q found in %s\", key, file)\n\t\t\t}\n\t\t\tdiscovered[key] = config\n\t\t}\n\t}\n\n\treturn discovered, nil\n}\n\nfunc discoverConfigsInFile(path string) (map[string]ConfigInfo, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// extract package name from file path (use absolute path, not relative)\n\tpackageName := extractPackageNameFromPath(path)\n\tif packageName == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tdiscovered := make(map[string]ConfigInfo)\n\n\t// find all type declarations\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// check if this is a struct type that looks like a config\n\t\t\tstructType, ok := typeSpec.Type.(*ast.StructType)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// filter for config-related struct names\n\t\t\tstructName := typeSpec.Name.Name\n\t\t\tif !isConfigStruct(structName) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// extract fields from the struct\n\t\t\tfields := extractCatalogerConfigFields(structType)\n\t\t\tif len(fields) == 0 {\n\t\t\t\t// skip structs with no documented config fields\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconfig := ConfigInfo{\n\t\t\t\tPackageName: packageName,\n\t\t\t\tStructName:  structName,\n\t\t\t\tFields:      fields,\n\t\t\t}\n\n\t\t\tkey := packageName + \".\" + structName\n\t\t\tdiscovered[key] = config\n\t\t}\n\t}\n\n\treturn discovered, nil\n}\n\n// isConfigStruct determines if a struct name looks like a configuration struct\nfunc isConfigStruct(name string) bool {\n\t// check for common config patterns\n\treturn strings.Contains(name, \"Config\")\n}\n\n// extractCatalogerConfigFields parses struct fields and extracts their metadata\nfunc extractCatalogerConfigFields(structType *ast.StructType) []ConfigField {\n\treturn extractCatalogerConfigFieldsRecursive(structType, make(map[string]bool), false)\n}\n\n// extractCatalogerConfigFieldsRecursive parses struct fields and extracts their metadata,\n// handling embedded structs recursively with cycle detection.\n// requireAppConfig controls whether to require app-config annotations:\n//   - false for top-level struct (only include fields with app-config)\n//   - true for embedded structs (include all exported fields)\nfunc extractCatalogerConfigFieldsRecursive(structType *ast.StructType, visitedTypes map[string]bool, fromEmbedded bool) []ConfigField {\n\tvar fields []ConfigField\n\n\tfor _, field := range structType.Fields.List {\n\t\t// handle embedded fields with no names\n\t\tif len(field.Names) == 0 {\n\t\t\t// this is an embedded field - resolve and extract its fields\n\t\t\tembeddedFields := resolveEmbeddedStructFields(field.Type, visitedTypes)\n\t\t\tfields = append(fields, embeddedFields...)\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract field name\n\t\tfieldName := field.Names[0].Name\n\n\t\t// skip unexported fields\n\t\tif !ast.IsExported(fieldName) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// extract field type as string\n\t\tfieldType := formatFieldType(field.Type)\n\n\t\t// extract doc comment and app-config annotation\n\t\tdescription, appKey := extractFieldComments(field.Doc)\n\n\t\t// for top-level fields, only include fields that have an app-config annotation\n\t\t// for embedded struct fields, include all exported fields\n\t\tif !fromEmbedded && appKey == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tfields = append(fields, ConfigField{\n\t\t\tName:        fieldName,\n\t\t\tType:        fieldType,\n\t\t\tDescription: description,\n\t\t\tAppKey:      appKey,\n\t\t})\n\t}\n\n\treturn fields\n}\n\n// resolveEmbeddedStructFields resolves an embedded struct type and extracts its fields recursively\nfunc resolveEmbeddedStructFields(fieldType ast.Expr, visitedTypes map[string]bool) []ConfigField {\n\t// extract the type name from the expression\n\ttypeName := formatFieldType(fieldType)\n\n\t// check for cycles\n\tif visitedTypes[typeName] {\n\t\treturn nil // avoid infinite recursion\n\t}\n\tvisitedTypes[typeName] = true\n\n\t// parse the type to get package and struct name\n\t// e.g., \"cataloging.ArchiveSearchConfig\" -> package=\"cataloging\", struct=\"ArchiveSearchConfig\"\n\tvar packageName, structName string\n\tif strings.Contains(typeName, \".\") {\n\t\tparts := strings.Split(typeName, \".\")\n\t\tif len(parts) == 2 {\n\t\t\tpackageName = parts[0]\n\t\t\tstructName = parts[1]\n\t\t}\n\t} else {\n\t\t// embedded type in the same package - would need same-file resolution\n\t\t// for now, we'll skip these as they're less common\n\t\treturn nil\n\t}\n\n\tif packageName == \"\" || structName == \"\" {\n\t\treturn nil\n\t}\n\n\t// find the file containing this struct\n\t// we need to search in the syft codebase for this package\n\trepoRoot, err := internal.RepoRoot()\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\t// try common locations for the package\n\tsearchPaths := []string{\n\t\tfilepath.Join(repoRoot, \"syft\", packageName),\n\t\tfilepath.Join(repoRoot, \"syft\", \"pkg\", packageName),\n\t\tfilepath.Join(repoRoot, \"syft\", \"cataloging\", packageName),\n\t}\n\n\t// add the direct path if packageName is a subpackage indicator\n\tif strings.Contains(packageName, \"/\") || !strings.Contains(packageName, \".\") {\n\t\tsearchPaths = append(searchPaths, filepath.Join(repoRoot, \"syft\", packageName))\n\t}\n\n\tfor _, searchPath := range searchPaths {\n\t\t// try to find a .go file in this directory that contains the struct\n\t\tmatches, err := filepath.Glob(filepath.Join(searchPath, \"*.go\"))\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, file := range matches {\n\t\t\t// skip test files\n\t\t\tif strings.HasSuffix(file, \"_test.go\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// parse the file and look for the struct\n\t\t\tstructType := findStructInFile(file, structName)\n\t\t\tif structType != nil {\n\t\t\t\t// found it! recursively extract fields (fromEmbedded=true means include all exported fields)\n\t\t\t\treturn extractCatalogerConfigFieldsRecursive(structType, visitedTypes, true)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// findStructInFile parses a Go file and returns the struct type with the given name, or nil if not found\nfunc findStructInFile(filePath, structName string) *ast.StructType {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\t// find the struct declaration\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif typeSpec.Name.Name == structName {\n\t\t\t\tstructType, ok := typeSpec.Type.(*ast.StructType)\n\t\t\t\tif ok {\n\t\t\t\t\treturn structType\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// extractFieldComments parses field comments to extract description and app-config annotation\nfunc extractFieldComments(commentGroup *ast.CommentGroup) (description string, appKey string) {\n\tif commentGroup == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tvar descLines []string\n\n\tfor _, comment := range commentGroup.List {\n\t\ttext := strings.TrimPrefix(comment.Text, \"//\")\n\t\ttext = strings.TrimSpace(text)\n\n\t\t// check if this is an app-config annotation\n\t\tif matches := appConfigAnnotationPattern.FindStringSubmatch(comment.Text); len(matches) > 1 {\n\t\t\tappKey = strings.TrimSpace(matches[1])\n\t\t\tcontinue\n\t\t}\n\n\t\t// accumulate description lines\n\t\tif text != \"\" {\n\t\t\tdescLines = append(descLines, text)\n\t\t}\n\t}\n\n\t// join description lines\n\tif len(descLines) > 0 {\n\t\tdescription = strings.Join(descLines, \" \")\n\t}\n\n\treturn description, appKey\n}\n\n// formatFieldType converts an ast.Expr type to a readable string representation\nfunc formatFieldType(expr ast.Expr) string {\n\tswitch t := expr.(type) {\n\tcase *ast.Ident:\n\t\treturn t.Name\n\tcase *ast.SelectorExpr:\n\t\t// handle package.Type (e.g., cataloging.ArchiveSearchConfig)\n\t\tif x, ok := t.X.(*ast.Ident); ok {\n\t\t\treturn x.Name + \".\" + t.Sel.Name\n\t\t}\n\t\treturn t.Sel.Name\n\tcase *ast.ArrayType:\n\t\t// handle []Type\n\t\treturn \"[]\" + formatFieldType(t.Elt)\n\tcase *ast.MapType:\n\t\t// handle map[K]V\n\t\treturn \"map[\" + formatFieldType(t.Key) + \"]\" + formatFieldType(t.Value)\n\tcase *ast.StarExpr:\n\t\t// handle *Type\n\t\treturn \"*\" + formatFieldType(t.X)\n\tcase *ast.InterfaceType:\n\t\treturn \"interface{}\"\n\tdefault:\n\t\t// fallback for complex types\n\t\treturn fmt.Sprintf(\"%T\", expr)\n\t}\n}\n\n// DiscoverAllowedConfigStructs parses the pkgcataloging.Config struct and returns\n// a set of allowed config struct names (e.g., \"golang.CatalogerConfig\").\n// This is used to filter discovered configs to only include top-level cataloger configs\n// that are actually referenced in the main Config struct.\nfunc DiscoverAllowedConfigStructs(repoRoot string) (map[string]bool, error) {\n\tconfigFilePath := filepath.Join(repoRoot, \"syft\", \"cataloging\", \"pkgcataloging\", \"config.go\")\n\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, configFilePath, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse config file: %w\", err)\n\t}\n\n\tallowedConfigs := make(map[string]bool)\n\n\t// find the Config struct declaration\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\ttypeSpec, ok := spec.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// we're looking for the \"Config\" struct specifically\n\t\t\tif typeSpec.Name.Name != \"Config\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tstructType, ok := typeSpec.Type.(*ast.StructType)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// extract field types from the Config struct\n\t\t\tfor _, field := range structType.Fields.List {\n\t\t\t\t// skip embedded fields with no names\n\t\t\t\tif len(field.Names) == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// extract field type as \"package.StructName\"\n\t\t\t\tfieldType := formatFieldType(field.Type)\n\n\t\t\t\t// only include types that look like config structs (contain a dot for package.Type)\n\t\t\t\tif strings.Contains(fieldType, \".\") {\n\t\t\t\t\tallowedConfigs[fieldType] = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we found the Config struct, no need to continue\n\t\t\treturn allowedConfigs, nil\n\t\t}\n\t}\n\n\treturn nil, fmt.Errorf(\"config struct not found in %s\", configFilePath)\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_cataloger_configs_test.go",
    "content": "package main\n\nimport (\n\t\"go/ast\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\nfunc TestDiscoverConfigs(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tfixturePath     string\n\t\texpectedConfigs []string\n\t\tverifyConfig    func(t *testing.T, configs map[string]ConfigInfo)\n\t}{\n\t\t{\n\t\t\tname:        \"simple config with annotations\",\n\t\t\tfixturePath: \"simple-config\",\n\t\t\texpectedConfigs: []string{\n\t\t\t\t\"golang.CatalogerConfig\",\n\t\t\t},\n\t\t\tverifyConfig: func(t *testing.T, configs map[string]ConfigInfo) {\n\t\t\t\tgolangConfig := configs[\"golang.CatalogerConfig\"]\n\t\t\t\trequire.Equal(t, \"golang\", golangConfig.PackageName)\n\t\t\t\trequire.Equal(t, \"CatalogerConfig\", golangConfig.StructName)\n\t\t\t\trequire.Len(t, golangConfig.Fields, 3, \"should have 3 annotated fields\")\n\n\t\t\t\t// verify specific field\n\t\t\t\tvar foundSearchLocalModCache bool\n\t\t\t\tfor _, field := range golangConfig.Fields {\n\t\t\t\t\tif field.Name == \"SearchLocalModCacheLicenses\" {\n\t\t\t\t\t\tfoundSearchLocalModCache = true\n\t\t\t\t\t\trequire.Equal(t, \"bool\", field.Type)\n\t\t\t\t\t\trequire.Equal(t, \"golang.search-local-mod-cache-licenses\", field.AppKey)\n\t\t\t\t\t\trequire.Contains(t, field.Description, \"searching for go package licenses\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trequire.True(t, foundSearchLocalModCache, \"should find SearchLocalModCacheLicenses field\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"nested config struct\",\n\t\t\tfixturePath: \"nested-config\",\n\t\t\texpectedConfigs: []string{\n\t\t\t\t\"golang.CatalogerConfig\",\n\t\t\t\t\"golang.MainModuleVersionConfig\",\n\t\t\t},\n\t\t\tverifyConfig: func(t *testing.T, configs map[string]ConfigInfo) {\n\t\t\t\t// verify main config\n\t\t\t\tgolangConfig := configs[\"golang.CatalogerConfig\"]\n\t\t\t\trequire.Equal(t, \"golang\", golangConfig.PackageName)\n\t\t\t\trequire.Equal(t, \"CatalogerConfig\", golangConfig.StructName)\n\n\t\t\t\t// verify nested config\n\t\t\t\tmainModuleConfig := configs[\"golang.MainModuleVersionConfig\"]\n\t\t\t\trequire.Equal(t, \"golang\", mainModuleConfig.PackageName)\n\t\t\t\trequire.Equal(t, \"MainModuleVersionConfig\", mainModuleConfig.StructName)\n\t\t\t\trequire.Len(t, mainModuleConfig.Fields, 2, \"should have 2 annotated fields\")\n\n\t\t\t\t// check for specific nested field\n\t\t\t\tvar foundFromLDFlags bool\n\t\t\t\tfor _, field := range mainModuleConfig.Fields {\n\t\t\t\t\tif field.Name == \"FromLDFlags\" {\n\t\t\t\t\t\tfoundFromLDFlags = true\n\t\t\t\t\t\trequire.Equal(t, \"bool\", field.Type)\n\t\t\t\t\t\trequire.Equal(t, \"golang.main-module-version.from-ld-flags\", field.AppKey)\n\t\t\t\t\t\trequire.Contains(t, field.Description, \"extract version from LD flags\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trequire.True(t, foundFromLDFlags, \"should find FromLDFlags field\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"multiple configs in different packages\",\n\t\t\tfixturePath: \"multiple-configs\",\n\t\t\texpectedConfigs: []string{\n\t\t\t\t\"python.CatalogerConfig\",\n\t\t\t\t\"java.ArchiveCatalogerConfig\",\n\t\t\t},\n\t\t\tverifyConfig: func(t *testing.T, configs map[string]ConfigInfo) {\n\t\t\t\t// verify python config\n\t\t\t\tpythonConfig := configs[\"python.CatalogerConfig\"]\n\t\t\t\trequire.Equal(t, \"python\", pythonConfig.PackageName)\n\t\t\t\trequire.Len(t, pythonConfig.Fields, 1)\n\n\t\t\t\t// verify java config\n\t\t\t\tjavaConfig := configs[\"java.ArchiveCatalogerConfig\"]\n\t\t\t\trequire.Equal(t, \"java\", javaConfig.PackageName)\n\t\t\t\trequire.Len(t, javaConfig.Fields, 1)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:            \"config without annotations\",\n\t\t\tfixturePath:     \"no-annotations\",\n\t\t\texpectedConfigs: []string{},\n\t\t\tverifyConfig: func(t *testing.T, configs map[string]ConfigInfo) {\n\t\t\t\t// should not discover any configs without annotations\n\t\t\t\trequire.Empty(t, configs, \"should not discover configs without app-config annotations\")\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfixtureDir := filepath.Join(\"testdata\", \"config-discovery\", tt.fixturePath, \"cataloger\")\n\t\t\tconfigs, err := DiscoverConfigsFromPath(fixtureDir)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// Debug: log what was discovered\n\t\t\tt.Logf(\"Discovered %d configs:\", len(configs))\n\t\t\tfor key, config := range configs {\n\t\t\t\tt.Logf(\"  %s: %d fields\", key, len(config.Fields))\n\t\t\t}\n\n\t\t\t// verify expected configs were discovered\n\t\t\tfor _, expected := range tt.expectedConfigs {\n\t\t\t\tconfig, ok := configs[expected]\n\t\t\t\trequire.True(t, ok, \"should discover config: %s\", expected)\n\t\t\t\trequire.NotEmpty(t, config.Fields, \"config %s should have fields\", expected)\n\t\t\t\trequire.Equal(t, expected, config.PackageName+\".\"+config.StructName)\n\t\t\t}\n\n\t\t\t// run custom verification\n\t\t\tif tt.verifyConfig != nil {\n\t\t\t\ttt.verifyConfig(t, configs)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestExtractPackageNameFromPath(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfilePath string\n\t\twant     string\n\t}{\n\t\t{\n\t\t\tname:     \"golang package\",\n\t\t\tfilePath: \"syft/pkg/cataloger/golang/config.go\",\n\t\t\twant:     \"golang\",\n\t\t},\n\t\t{\n\t\t\tname:     \"java package\",\n\t\t\tfilePath: \"syft/pkg/cataloger/java/config.go\",\n\t\t\twant:     \"java\",\n\t\t},\n\t\t{\n\t\t\tname:     \"python cataloger\",\n\t\t\tfilePath: \"syft/pkg/cataloger/python/cataloger.go\",\n\t\t\twant:     \"python\",\n\t\t},\n\t\t{\n\t\t\tname:     \"kernel cataloger\",\n\t\t\tfilePath: \"syft/pkg/cataloger/kernel/cataloger.go\",\n\t\t\twant:     \"kernel\",\n\t\t},\n\t\t{\n\t\t\tname:     \"binary classifier\",\n\t\t\tfilePath: \"syft/pkg/cataloger/binary/classifier_cataloger.go\",\n\t\t\twant:     \"binary\",\n\t\t},\n\t\t{\n\t\t\tname:     \"not a cataloger path\",\n\t\t\tfilePath: \"syft/pkg/other/file.go\",\n\t\t\twant:     \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := extractPackageNameFromPath(tt.filePath)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestFormatFieldType(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\texpr ast.Expr\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"basic identifier - string\",\n\t\t\texpr: &ast.Ident{Name: \"string\"},\n\t\t\twant: \"string\",\n\t\t},\n\t\t{\n\t\t\tname: \"basic identifier - bool\",\n\t\t\texpr: &ast.Ident{Name: \"bool\"},\n\t\t\twant: \"bool\",\n\t\t},\n\t\t{\n\t\t\tname: \"basic identifier - int\",\n\t\t\texpr: &ast.Ident{Name: \"int\"},\n\t\t\twant: \"int\",\n\t\t},\n\t\t{\n\t\t\tname: \"selector expression - package.Type\",\n\t\t\texpr: &ast.SelectorExpr{\n\t\t\t\tX:   &ast.Ident{Name: \"time\"},\n\t\t\t\tSel: &ast.Ident{Name: \"Time\"},\n\t\t\t},\n\t\t\twant: \"time.Time\",\n\t\t},\n\t\t{\n\t\t\tname: \"selector expression - cataloging.Config\",\n\t\t\texpr: &ast.SelectorExpr{\n\t\t\t\tX:   &ast.Ident{Name: \"cataloging\"},\n\t\t\t\tSel: &ast.Ident{Name: \"ArchiveSearchConfig\"},\n\t\t\t},\n\t\t\twant: \"cataloging.ArchiveSearchConfig\",\n\t\t},\n\t\t{\n\t\t\tname: \"array of strings\",\n\t\t\texpr: &ast.ArrayType{\n\t\t\t\tElt: &ast.Ident{Name: \"string\"},\n\t\t\t},\n\t\t\twant: \"[]string\",\n\t\t},\n\t\t{\n\t\t\tname: \"array of ints\",\n\t\t\texpr: &ast.ArrayType{\n\t\t\t\tElt: &ast.Ident{Name: \"int\"},\n\t\t\t},\n\t\t\twant: \"[]int\",\n\t\t},\n\t\t{\n\t\t\tname: \"map[string]bool\",\n\t\t\texpr: &ast.MapType{\n\t\t\t\tKey:   &ast.Ident{Name: \"string\"},\n\t\t\t\tValue: &ast.Ident{Name: \"bool\"},\n\t\t\t},\n\t\t\twant: \"map[string]bool\",\n\t\t},\n\t\t{\n\t\t\tname: \"map[string]int\",\n\t\t\texpr: &ast.MapType{\n\t\t\t\tKey:   &ast.Ident{Name: \"string\"},\n\t\t\t\tValue: &ast.Ident{Name: \"int\"},\n\t\t\t},\n\t\t\twant: \"map[string]int\",\n\t\t},\n\t\t{\n\t\t\tname: \"pointer to type\",\n\t\t\texpr: &ast.StarExpr{\n\t\t\t\tX: &ast.Ident{Name: \"Config\"},\n\t\t\t},\n\t\t\twant: \"*Config\",\n\t\t},\n\t\t{\n\t\t\tname: \"pointer to selector\",\n\t\t\texpr: &ast.StarExpr{\n\t\t\t\tX: &ast.SelectorExpr{\n\t\t\t\t\tX:   &ast.Ident{Name: \"time\"},\n\t\t\t\t\tSel: &ast.Ident{Name: \"Time\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"*time.Time\",\n\t\t},\n\t\t{\n\t\t\tname: \"interface{}\",\n\t\t\texpr: &ast.InterfaceType{\n\t\t\t\tMethods: &ast.FieldList{},\n\t\t\t},\n\t\t\twant: \"interface{}\",\n\t\t},\n\t\t{\n\t\t\tname: \"nested array of arrays\",\n\t\t\texpr: &ast.ArrayType{\n\t\t\t\tElt: &ast.ArrayType{\n\t\t\t\t\tElt: &ast.Ident{Name: \"string\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"[][]string\",\n\t\t},\n\t\t{\n\t\t\tname: \"map with array value\",\n\t\t\texpr: &ast.MapType{\n\t\t\t\tKey: &ast.Ident{Name: \"string\"},\n\t\t\t\tValue: &ast.ArrayType{\n\t\t\t\t\tElt: &ast.Ident{Name: \"int\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"map[string][]int\",\n\t\t},\n\t\t{\n\t\t\tname: \"pointer to array\",\n\t\t\texpr: &ast.StarExpr{\n\t\t\t\tX: &ast.ArrayType{\n\t\t\t\t\tElt: &ast.Ident{Name: \"string\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"*[]string\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := formatFieldType(tt.expr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractFieldComments(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tcommentGroup    *ast.CommentGroup\n\t\twantDescription string\n\t\twantAppKey      string\n\t}{\n\t\t{\n\t\t\tname:            \"nil comment group\",\n\t\t\tcommentGroup:    nil,\n\t\t\twantDescription: \"\",\n\t\t\twantAppKey:      \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty comment group\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{},\n\t\t\t},\n\t\t\twantDescription: \"\",\n\t\t\twantAppKey:      \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"app-config annotation only\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// app-config: golang.search-local-mod-cache-licenses\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"\",\n\t\t\twantAppKey:      \"golang.search-local-mod-cache-licenses\",\n\t\t},\n\t\t{\n\t\t\tname: \"description only\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// enable searching for go package licenses in the local mod cache\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"enable searching for go package licenses in the local mod cache\",\n\t\t\twantAppKey:      \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"description and app-config\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// enable searching for go package licenses in the local mod cache\"},\n\t\t\t\t\t{Text: \"// app-config: golang.search-local-mod-cache-licenses\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"enable searching for go package licenses in the local mod cache\",\n\t\t\twantAppKey:      \"golang.search-local-mod-cache-licenses\",\n\t\t},\n\t\t{\n\t\t\tname: \"app-config before description\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// app-config: golang.search-local-mod-cache-licenses\"},\n\t\t\t\t\t{Text: \"// enable searching for go package licenses in the local mod cache\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"enable searching for go package licenses in the local mod cache\",\n\t\t\twantAppKey:      \"golang.search-local-mod-cache-licenses\",\n\t\t},\n\t\t{\n\t\t\tname: \"multi-line description\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// this is the first line of the description.\"},\n\t\t\t\t\t{Text: \"// this is the second line of the description.\"},\n\t\t\t\t\t{Text: \"// app-config: test.multi-line\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"this is the first line of the description. this is the second line of the description.\",\n\t\t\twantAppKey:      \"test.multi-line\",\n\t\t},\n\t\t{\n\t\t\tname: \"app-config with extra whitespace\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"//   app-config:   golang.test-key  \"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"\",\n\t\t\twantAppKey:      \"golang.test-key\",\n\t\t},\n\t\t{\n\t\t\tname: \"description with special characters\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// enable searching for Go's package licenses (*.mod files)\"},\n\t\t\t\t\t{Text: \"// app-config: golang.search\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"enable searching for Go's package licenses (*.mod files)\",\n\t\t\twantAppKey:      \"golang.search\",\n\t\t},\n\t\t{\n\t\t\tname: \"comment with empty lines\",\n\t\t\tcommentGroup: &ast.CommentGroup{\n\t\t\t\tList: []*ast.Comment{\n\t\t\t\t\t{Text: \"// first line\"},\n\t\t\t\t\t{Text: \"//\"},\n\t\t\t\t\t{Text: \"// second line\"},\n\t\t\t\t\t{Text: \"// app-config: test.key\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantDescription: \"first line second line\",\n\t\t\twantAppKey:      \"test.key\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotDescription, gotAppKey := extractFieldComments(tt.commentGroup)\n\t\t\trequire.Equal(t, tt.wantDescription, gotDescription)\n\t\t\trequire.Equal(t, tt.wantAppKey, gotAppKey)\n\t\t})\n\t}\n}\n\nfunc TestDiscoverAllowedConfigStructs(t *testing.T) {\n\trepoRoot, err := internal.RepoRoot()\n\trequire.NoError(t, err)\n\n\tallowedConfigs, err := DiscoverAllowedConfigStructs(repoRoot)\n\trequire.NoError(t, err)\n\n\t// verify we found multiple config types\n\trequire.NotEmpty(t, allowedConfigs, \"should discover at least one allowed config type\")\n\n\t// verify specific config types that should be in pkgcataloging.Config\n\texpectedConfigs := []string{\n\t\t\"golang.CatalogerConfig\",\n\t\t\"java.ArchiveCatalogerConfig\",\n\t\t\"python.CatalogerConfig\",\n\t\t\"dotnet.CatalogerConfig\",\n\t\t\"kernel.LinuxKernelCatalogerConfig\",\n\t\t\"javascript.CatalogerConfig\",\n\t}\n\n\tfor _, expected := range expectedConfigs {\n\t\trequire.True(t, allowedConfigs[expected], \"should find %s in allowed configs\", expected)\n\t}\n\n\t// log all discovered configs for manual inspection\n\tt.Logf(\"Discovered %d allowed config types:\", len(allowedConfigs))\n\tfor configType := range allowedConfigs {\n\t\tt.Logf(\"  - %s\", configType)\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_catalogers.go",
    "content": "// this file discovers generic catalogers from source code by walking syft/pkg/cataloger/ and using AST parsing to find generic.NewCataloger() calls and extract parser information.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n)\n\n// DiscoveredCataloger represents a cataloger discovered by parsing source code\ntype DiscoveredCataloger struct {\n\tName           string\n\tType           string // \"generic\" or \"custom\"\n\tPackageName    string // e.g., \"python\", \"swift\" - extracted from source file path\n\tSourceFile     string\n\tSourceFunction string\n\tParsers        []DiscoveredParser // only for generic catalogers\n}\n\n// DiscoveredParser represents a parser function and its detection criteria discovered from source\ntype DiscoveredParser struct {\n\tParserFunction  string\n\tMethod          capabilities.ArtifactDetectionMethod\n\tCriteria        []string\n\tMetadataTypes   []string // populated from cataloger-type-uses.json files\n\tPackageTypes    []string // populated from cataloger-type-uses.json files\n\tJSONSchemaTypes []string // populated from MetadataTypes\n}\n\n// discoverGenericCatalogers finds all uses of generic.NewCataloger() in the codebase\n// Returns map[catalogerName]DiscoveredCataloger\nfunc discoverGenericCatalogers(repoRoot string) (map[string]DiscoveredCataloger, error) {\n\tcatalogerRoot := filepath.Join(repoRoot, \"syft\", \"pkg\", \"cataloger\")\n\n\t// find all .go files under syft/pkg/cataloger/ recursively\n\tvar files []string\n\terr := filepath.Walk(catalogerRoot, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif !info.IsDir() && strings.HasSuffix(path, \".go\") && !strings.HasSuffix(path, \"_test.go\") {\n\t\t\tfiles = append(files, path)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to walk cataloger directory: %w\", err)\n\t}\n\n\tdiscovered := make(map[string]DiscoveredCataloger)\n\n\tfor _, file := range files {\n\t\tcatalogers, err := discoverGenericCatalogersInFile(file, repoRoot)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", file, err)\n\t\t}\n\n\t\tfor name, cataloger := range catalogers {\n\t\t\tif existing, ok := discovered[name]; ok {\n\t\t\t\treturn nil, fmt.Errorf(\"duplicate cataloger name %q found in %s and %s\", name, existing.SourceFile, cataloger.SourceFile)\n\t\t\t}\n\t\t\tdiscovered[name] = cataloger\n\t\t}\n\t}\n\n\treturn discovered, nil\n}\n\nfunc discoverGenericCatalogersInFile(path, repoRoot string) (map[string]DiscoveredCataloger, error) {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdiscovered := make(map[string]DiscoveredCataloger)\n\n\t// find all function declarations\n\tfor _, decl := range f.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if function name matches New*Cataloger pattern\n\t\tif !strings.HasPrefix(funcDecl.Name.Name, \"New\") || !strings.HasSuffix(funcDecl.Name.Name, \"Cataloger\") {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if return type is pkg.Cataloger\n\t\tif !returnsPackageCataloger(funcDecl) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// parse the function body to find generic.NewCataloger calls\n\t\tcataloger, err := parseGenericCatalogerFunction(funcDecl, path, repoRoot)\n\t\tif err != nil {\n\t\t\t// not a generic cataloger, skip\n\t\t\tcontinue\n\t\t}\n\n\t\tif cataloger != nil {\n\t\t\tdiscovered[cataloger.Name] = *cataloger\n\t\t}\n\t}\n\n\treturn discovered, nil\n}\n\nfunc returnsPackageCataloger(funcDecl *ast.FuncDecl) bool {\n\tif funcDecl.Type.Results == nil || len(funcDecl.Type.Results.List) != 1 {\n\t\treturn false\n\t}\n\n\t// check if the return type is pkg.Cataloger or just Cataloger\n\treturnType := funcDecl.Type.Results.List[0].Type\n\tselector, ok := returnType.(*ast.SelectorExpr)\n\tif !ok {\n\t\t// might be just \"Cataloger\" without package prefix\n\t\tident, ok := returnType.(*ast.Ident)\n\t\treturn ok && ident.Name == \"Cataloger\"\n\t}\n\n\tpkg, ok := selector.X.(*ast.Ident)\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn pkg.Name == \"pkg\" && selector.Sel.Name == \"Cataloger\"\n}\n\nfunc parseGenericCatalogerFunction(funcDecl *ast.FuncDecl, filePath, repoRoot string) (*DiscoveredCataloger, error) {\n\tif funcDecl.Body == nil {\n\t\treturn nil, fmt.Errorf(\"function has no body\")\n\t}\n\n\t// parse the file again to get imports and constants context\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx := &parseContext{\n\t\tfile:     f,\n\t\tfilePath: filePath,\n\t\trepoRoot: repoRoot,\n\t}\n\n\tvar catalogerName string\n\tvar parsers []DiscoveredParser\n\n\t// walk the function body to find generic.NewCataloger call\n\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\t// look for call expressions\n\t\tcallExpr, ok := n.(*ast.CallExpr)\n\t\tif !ok {\n\t\t\treturn true\n\t\t}\n\n\t\t// check if this is a call to generic.NewCataloger\n\t\tif isGenericNewCatalogerCall(callExpr) {\n\t\t\t// extract the cataloger name from the first argument\n\t\t\tif len(callExpr.Args) > 0 {\n\t\t\t\t// handle string literals\n\t\t\t\tif lit, ok := callExpr.Args[0].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\t\t\tcatalogerName = strings.Trim(lit.Value, `\"`)\n\t\t\t\t}\n\t\t\t\t// handle constant identifiers\n\t\t\t\tif ident, ok := callExpr.Args[0].(*ast.Ident); ok {\n\t\t\t\t\tcatalogerName = resolveLocalConstant(ident.Name, ctx)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check if this is a WithParserBy* call\n\t\tif p := parseWithParserByCall(callExpr, ctx); p != nil {\n\t\t\tparsers = append(parsers, *p)\n\t\t}\n\n\t\treturn true\n\t})\n\n\tif catalogerName == \"\" {\n\t\t// not a generic cataloger\n\t\treturn nil, fmt.Errorf(\"no generic.NewCataloger call found\")\n\t}\n\n\t// make file path relative to repo root\n\trelPath, err := filepath.Rel(repoRoot, filePath)\n\tif err != nil {\n\t\trelPath = filePath\n\t}\n\n\treturn &DiscoveredCataloger{\n\t\tName:           catalogerName,\n\t\tType:           genericCatalogerType,\n\t\tPackageName:    extractPackageNameFromPath(relPath),\n\t\tSourceFile:     relPath,\n\t\tSourceFunction: funcDecl.Name.Name,\n\t\tParsers:        parsers,\n\t}, nil\n}\n\n// extractPackageNameFromPath extracts the package name from a cataloger source file path\n// e.g., \"syft/pkg/cataloger/swift/cataloger.go\" -> \"swift\"\nfunc extractPackageNameFromPath(filePath string) string {\n\tparts := strings.Split(filePath, string(filepath.Separator))\n\n\t// find the LAST occurrence of \"cataloger\" in the path\n\t// (to handle test fixtures with multiple \"cataloger\" segments)\n\tlastCatalogerIndex := -1\n\tfor i, part := range parts {\n\t\tif part == \"cataloger\" {\n\t\t\tlastCatalogerIndex = i\n\t\t}\n\t}\n\n\tif lastCatalogerIndex != -1 && lastCatalogerIndex+1 < len(parts) {\n\t\t// return the next segment after the last \"cataloger\"\n\t\treturn parts[lastCatalogerIndex+1]\n\t}\n\n\treturn \"\"\n}\n\nfunc isGenericNewCatalogerCall(callExpr *ast.CallExpr) bool {\n\tselector, ok := callExpr.Fun.(*ast.SelectorExpr)\n\tif !ok {\n\t\treturn false\n\t}\n\n\tpkg, ok := selector.X.(*ast.Ident)\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn pkg.Name == \"generic\" && selector.Sel.Name == \"NewCataloger\"\n}\n\ntype parseContext struct {\n\tfile     *ast.File\n\tfilePath string\n\trepoRoot string\n}\n\nfunc parseWithParserByCall(callExpr *ast.CallExpr, ctx *parseContext) *DiscoveredParser {\n\tselector, ok := callExpr.Fun.(*ast.SelectorExpr)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tmethodName := selector.Sel.Name\n\n\tvar method capabilities.ArtifactDetectionMethod\n\tswitch {\n\tcase strings.HasPrefix(methodName, \"WithParserByGlobs\"):\n\t\tmethod = capabilities.GlobDetection\n\tcase strings.HasPrefix(methodName, \"WithParserByPath\"):\n\t\tmethod = capabilities.PathDetection\n\tcase strings.HasPrefix(methodName, \"WithParserByMimeTypes\"):\n\t\tmethod = capabilities.MIMETypeDetection\n\tdefault:\n\t\treturn nil\n\t}\n\n\tif len(callExpr.Args) < 2 {\n\t\treturn nil\n\t}\n\n\t// first argument is the parser function name\n\tvar parserFunction string\n\tswitch arg := callExpr.Args[0].(type) {\n\tcase *ast.Ident:\n\t\t// simple identifier: parseFunc\n\t\tparserFunction = arg.Name\n\tcase *ast.SelectorExpr:\n\t\t// selector expression: adapter.parseFunc\n\t\tparserFunction = arg.Sel.Name\n\tdefault:\n\t\treturn nil\n\t}\n\n\t// remaining arguments are detection criteria (can be string literals, constants, or method calls)\n\tvar criteria []string\n\tfor _, arg := range callExpr.Args[1:] {\n\t\tvalues := resolveCriteriaValues(arg, ctx)\n\t\tcriteria = append(criteria, values...)\n\t}\n\n\tif len(criteria) == 0 {\n\t\treturn nil\n\t}\n\n\treturn &DiscoveredParser{\n\t\tParserFunction: parserFunction,\n\t\tMethod:         method,\n\t\tCriteria:       criteria,\n\t}\n}\n\n// resolveCriteriaValues resolves criteria argument(s) to string value(s)\n// handles string literals, constants, and method calls like .List()\nfunc resolveCriteriaValues(arg ast.Expr, ctx *parseContext) []string {\n\tswitch expr := arg.(type) {\n\tcase *ast.BasicLit:\n\t\t// direct string literal\n\t\tif expr.Kind == token.STRING {\n\t\t\tvalue := strings.Trim(expr.Value, `\"`)\n\t\t\tif value != \"\" {\n\t\t\t\treturn []string{value}\n\t\t\t}\n\t\t}\n\n\tcase *ast.Ident:\n\t\t// local constant reference\n\t\tvalue := resolveLocalConstant(expr.Name, ctx)\n\t\tif value != \"\" {\n\t\t\treturn []string{value}\n\t\t}\n\n\tcase *ast.SelectorExpr:\n\t\t// imported constant reference (e.g., pkg.ApkDBGlob)\n\t\tif pkgIdent, ok := expr.X.(*ast.Ident); ok {\n\t\t\tvalue := resolveImportedConstant(pkgIdent.Name, expr.Sel.Name, ctx)\n\t\t\tif value != \"\" {\n\t\t\t\treturn []string{value}\n\t\t\t}\n\t\t}\n\n\tcase *ast.CallExpr:\n\t\t// method call like mimetype.ExecutableMIMETypeSet.List()\n\t\treturn resolveMethodCallValues(expr, ctx)\n\t}\n\n\treturn nil\n}\n\n// resolveMethodCallValues resolves method calls that return string slices\n// specifically handles .List() calls on string sets\nfunc resolveMethodCallValues(callExpr *ast.CallExpr, ctx *parseContext) []string {\n\t// check if this is a .List() method call\n\tselector, ok := callExpr.Fun.(*ast.SelectorExpr)\n\tif !ok || selector.Sel.Name != \"List\" {\n\t\treturn nil\n\t}\n\n\t// get the receiver (e.g., mimetype.ExecutableMIMETypeSet from mimetype.ExecutableMIMETypeSet.List())\n\tvar pkgName, varName string\n\n\tswitch recv := selector.X.(type) {\n\tcase *ast.SelectorExpr:\n\t\t// format: package.Variable (e.g., mimetype.ExecutableMIMETypeSet)\n\t\tif pkgIdent, ok := recv.X.(*ast.Ident); ok {\n\t\t\tpkgName = pkgIdent.Name\n\t\t\tvarName = recv.Sel.Name\n\t\t}\n\tcase *ast.Ident:\n\t\t// format: Variable (local variable)\n\t\tvarName = recv.Name\n\t}\n\n\tif varName == \"\" {\n\t\treturn nil\n\t}\n\n\t// try to resolve the variable to its declaration and extract the string slice\n\tif pkgName != \"\" {\n\t\t// imported variable (e.g., mimetype.ExecutableMIMETypeSet)\n\t\treturn resolveImportedVariable(pkgName, varName, ctx)\n\t}\n\n\t// local variable\n\treturn resolveLocalVariable(varName, ctx)\n}\n\n// resolveImportedVariable finds a variable in an imported package and extracts its string slice values\nfunc resolveImportedVariable(pkgName, varName string, ctx *parseContext) []string {\n\t// find the import path for this package\n\tvar importPath string\n\tfor _, imp := range ctx.file.Imports {\n\t\tpath := strings.Trim(imp.Path.Value, `\"`)\n\n\t\tif imp.Name != nil && imp.Name.Name == pkgName {\n\t\t\timportPath = path\n\t\t\tbreak\n\t\t}\n\n\t\tparts := strings.Split(path, \"/\")\n\t\tif len(parts) > 0 && parts[len(parts)-1] == pkgName {\n\t\t\timportPath = path\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif importPath == \"\" {\n\t\treturn nil\n\t}\n\n\t// resolve import path to file system path\n\tpkgDir := resolveImportPath(importPath, ctx.repoRoot)\n\tif pkgDir == \"\" {\n\t\treturn nil\n\t}\n\n\t// find the variable in the package and extract string slice\n\treturn findVariableStringSlice(pkgDir, varName)\n}\n\n// resolveLocalVariable finds a local variable and extracts its string slice values\nfunc resolveLocalVariable(varName string, ctx *parseContext) []string {\n\treturn extractStringSliceFromFile(ctx.file, varName)\n}\n\n// findVariableStringSlice searches for a variable in a package directory and extracts its string slice\nfunc findVariableStringSlice(pkgDir, varName string) []string {\n\tfiles, err := filepath.Glob(filepath.Join(pkgDir, \"*.go\"))\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tfor _, file := range files {\n\t\tif strings.HasSuffix(file, \"_test.go\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tfset := token.NewFileSet()\n\t\tf, err := parser.ParseFile(fset, file, nil, 0)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif values := extractStringSliceFromFile(f, varName); len(values) > 0 {\n\t\t\treturn values\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// extractStringSliceFromFile extracts string values from a variable declaration like:\n// var Foo = strset.New([]string{\"a\", \"b\", \"c\"}...)\nfunc extractStringSliceFromFile(file *ast.File, varName string) []string {\n\tfor _, decl := range file.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.VAR {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor i, ident := range valueSpec.Names {\n\t\t\t\tif ident.Name == varName && i < len(valueSpec.Values) {\n\t\t\t\t\treturn extractStringSliceFromExpr(valueSpec.Values[i])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// extractStringSliceFromExpr extracts string literals from expressions like:\n// strset.New([]string{\"a\", \"b\"}...)\nfunc extractStringSliceFromExpr(expr ast.Expr) []string {\n\t// handle strset.New(...) calls\n\tcallExpr, ok := expr.(*ast.CallExpr)\n\tif !ok || len(callExpr.Args) == 0 {\n\t\treturn nil\n\t}\n\n\t// get the first argument (should be a composite literal with strings)\n\targ := callExpr.Args[0]\n\n\t// handle []string{...} composite literals\n\tcompositeLit, ok := arg.(*ast.CompositeLit)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tvar values []string\n\tfor _, elt := range compositeLit.Elts {\n\t\tif lit, ok := elt.(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\tvalue := strings.Trim(lit.Value, `\"`)\n\t\t\tif value != \"\" {\n\t\t\t\tvalues = append(values, value)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn values\n}\n\n// resolveLocalConstant finds a constant definition in the current file\nfunc resolveLocalConstant(name string, ctx *parseContext) string {\n\tfor _, decl := range ctx.file.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.CONST {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor i, ident := range valueSpec.Names {\n\t\t\t\tif ident.Name == name && i < len(valueSpec.Values) {\n\t\t\t\t\tif lit, ok := valueSpec.Values[i].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\t\t\t\treturn strings.Trim(lit.Value, `\"`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// resolveImportedConstant finds a constant in an imported package\nfunc resolveImportedConstant(pkgName, constName string, ctx *parseContext) string {\n\t// find the import path for this package alias\n\tvar importPath string\n\tfor _, imp := range ctx.file.Imports {\n\t\tpath := strings.Trim(imp.Path.Value, `\"`)\n\n\t\t// check if this import has the alias we're looking for\n\t\tif imp.Name != nil && imp.Name.Name == pkgName {\n\t\t\timportPath = path\n\t\t\tbreak\n\t\t}\n\n\t\t// check if the package name matches (last component of import path)\n\t\tparts := strings.Split(path, \"/\")\n\t\tif len(parts) > 0 && parts[len(parts)-1] == pkgName {\n\t\t\timportPath = path\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif importPath == \"\" {\n\t\treturn \"\"\n\t}\n\n\t// resolve import path to file system path\n\tpkgDir := resolveImportPath(importPath, ctx.repoRoot)\n\tif pkgDir == \"\" {\n\t\treturn \"\"\n\t}\n\n\t// parse all .go files in the package directory to find the constant\n\treturn findConstantInPackage(pkgDir, constName)\n}\n\n// resolveImportPath converts an import path to a file system path\nfunc resolveImportPath(importPath, repoRoot string) string {\n\t// for github.com/anchore/syft/... imports, convert to repo-relative path\n\tif strings.HasPrefix(importPath, \"github.com/anchore/syft/\") {\n\t\trelPath := strings.TrimPrefix(importPath, \"github.com/anchore/syft/\")\n\t\treturn filepath.Join(repoRoot, relPath)\n\t}\n\n\treturn \"\"\n}\n\n// findConstantInPackage searches for a constant definition in a package directory\nfunc findConstantInPackage(pkgDir, constName string) string {\n\tfiles, err := filepath.Glob(filepath.Join(pkgDir, \"*.go\"))\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tfor _, file := range files {\n\t\tif strings.HasSuffix(file, \"_test.go\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tif value := findConstantInFile(file, constName); value != \"\" {\n\t\t\treturn value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc findConstantInFile(filePath, constName string) string {\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, filePath, nil, 0)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tfor _, decl := range f.Decls {\n\t\tif value := searchConstInDecl(decl, constName); value != \"\" {\n\t\t\treturn value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc searchConstInDecl(decl ast.Decl, constName string) string {\n\tgenDecl, ok := decl.(*ast.GenDecl)\n\tif !ok || genDecl.Tok != token.CONST {\n\t\treturn \"\"\n\t}\n\n\tfor _, spec := range genDecl.Specs {\n\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tif value := getConstValue(valueSpec, constName); value != \"\" {\n\t\t\treturn value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc getConstValue(valueSpec *ast.ValueSpec, constName string) string {\n\tfor i, ident := range valueSpec.Names {\n\t\tif ident.Name == constName && i < len(valueSpec.Values) {\n\t\t\tif lit, ok := valueSpec.Values[i].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\t\treturn strings.Trim(lit.Value, `\"`)\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// extractBinaryClassifiers extracts all binary classifiers with their full information\nfunc extractBinaryClassifiers() []binary.Classifier { //nolint:staticcheck\n\tclassifiers := binary.DefaultClassifiers()\n\n\t// return all classifiers (already sorted by the default function)\n\treturn classifiers\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_catalogers_test.go",
    "content": "package main\n\nimport (\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestReturnsPackageCataloger(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tcode string\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"returns pkg.Cataloger\",\n\t\t\tcode: `func NewFoo() pkg.Cataloger { return nil }`,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"returns bare Cataloger\",\n\t\t\tcode: `func NewFoo() Cataloger { return nil }`,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"returns multiple values\",\n\t\t\tcode: `func NewFoo() (pkg.Cataloger, error) { return nil, nil }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns error\",\n\t\t\tcode: `func NewFoo() error { return nil }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns pointer to Cataloger\",\n\t\t\tcode: `func NewFoo() *pkg.Cataloger { return nil }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns string\",\n\t\t\tcode: `func NewFoo() string { return \"\" }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"no return type\",\n\t\t\tcode: `func NewFoo() { }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns wrong package Cataloger\",\n\t\t\tcode: `func NewFoo() other.Cataloger { return nil }`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns pkg.OtherType\",\n\t\t\tcode: `func NewFoo() pkg.OtherType { return nil }`,\n\t\t\twant: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfuncDecl := parseFuncDecl(t, tt.code)\n\t\t\tgot := returnsPackageCataloger(funcDecl)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestIsGenericNewCatalogerCall(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tcode string\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"generic.NewCataloger call\",\n\t\t\tcode: `generic.NewCataloger(\"foo\")`,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"generic.NewCataloger with no args\",\n\t\t\tcode: `generic.NewCataloger()`,\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"other.NewCataloger call\",\n\t\t\tcode: `other.NewCataloger(\"foo\")`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"generic.OtherMethod call\",\n\t\t\tcode: `generic.OtherMethod(\"foo\")`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"bare NewCataloger call\",\n\t\t\tcode: `NewCataloger(\"foo\")`,\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"nested call\",\n\t\t\tcode: `foo(generic.NewCataloger(\"bar\"))`,\n\t\t\twant: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcallExpr := parseCallExpr(t, tt.code)\n\t\t\tgot := isGenericNewCatalogerCall(callExpr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestExtractStringSliceFromExpr(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tcode string\n\t\twant []string\n\t}{\n\t\t{\n\t\t\tname: \"strset.New with strings\",\n\t\t\tcode: `strset.New([]string{\"foo\", \"bar\", \"baz\"})`,\n\t\t\twant: []string{\"foo\", \"bar\", \"baz\"},\n\t\t},\n\t\t{\n\t\t\tname: \"strset.New with single string\",\n\t\t\tcode: `strset.New([]string{\"single\"})`,\n\t\t\twant: []string{\"single\"},\n\t\t},\n\t\t{\n\t\t\tname: \"strset.New with empty slice\",\n\t\t\tcode: `strset.New([]string{})`,\n\t\t\twant: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"other.New with strings\",\n\t\t\tcode: `other.New([]string{\"x\", \"y\"})`,\n\t\t\twant: []string{\"x\", \"y\"},\n\t\t},\n\t\t{\n\t\t\tname: \"call with no args\",\n\t\t\tcode: `strset.New()`,\n\t\t\twant: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"call with non-composite-literal arg\",\n\t\t\tcode: `strset.New(\"not a slice\")`,\n\t\t\twant: nil,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcallExpr := parseCallExpr(t, tt.code)\n\t\t\tgot := extractStringSliceFromExpr(callExpr)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestSearchConstInDecl(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tcode      string\n\t\tconstName string\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname:      \"single const\",\n\t\t\tcode:      `const Foo = \"bar\"`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"bar\",\n\t\t},\n\t\t{\n\t\t\tname: \"grouped consts - first\",\n\t\t\tcode: `const (\n\t\t\t\tFoo = \"bar\"\n\t\t\t\tBaz = \"qux\"\n\t\t\t)`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"bar\",\n\t\t},\n\t\t{\n\t\t\tname: \"grouped consts - second\",\n\t\t\tcode: `const (\n\t\t\t\tFoo = \"bar\"\n\t\t\t\tBaz = \"qux\"\n\t\t\t)`,\n\t\t\tconstName: \"Baz\",\n\t\t\twant:      \"qux\",\n\t\t},\n\t\t{\n\t\t\tname:      \"const not found\",\n\t\t\tcode:      `const Foo = \"bar\"`,\n\t\t\tconstName: \"Missing\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname:      \"var declaration instead of const\",\n\t\t\tcode:      `var Foo = \"bar\"`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname:      \"const with non-string value\",\n\t\t\tcode:      `const Foo = 42`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgenDecl := parseConstDecl(t, tt.code)\n\t\t\tgot := searchConstInDecl(genDecl, tt.constName)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestGetConstValue(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tcode      string\n\t\tconstName string\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname:      \"single const match\",\n\t\t\tcode:      `const Foo = \"bar\"`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"bar\",\n\t\t},\n\t\t{\n\t\t\tname:      \"no match\",\n\t\t\tcode:      `const Foo = \"bar\"`,\n\t\t\tconstName: \"NotFoo\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname:      \"non-string literal\",\n\t\t\tcode:      `const Foo = 123`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname:      \"const with complex value\",\n\t\t\tcode:      `const Foo = Bar + \"suffix\"`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname:      \"first of multiple in same spec\",\n\t\t\tcode:      `const Foo, Bar = \"baz\", \"qux\"`,\n\t\t\tconstName: \"Foo\",\n\t\t\twant:      \"baz\",\n\t\t},\n\t\t{\n\t\t\tname:      \"second of multiple in same spec\",\n\t\t\tcode:      `const Foo, Bar = \"baz\", \"qux\"`,\n\t\t\tconstName: \"Bar\",\n\t\t\twant:      \"qux\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgenDecl := parseConstDecl(t, tt.code)\n\t\t\trequire.Equal(t, token.CONST, genDecl.Tok)\n\t\t\trequire.NotEmpty(t, genDecl.Specs)\n\n\t\t\t// getConstValue works on a single ValueSpec, so we need to find the right one\n\t\t\t// in case of grouped constants, each const is its own spec\n\t\t\tvar got string\n\t\t\tfor _, spec := range genDecl.Specs {\n\t\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\t\trequire.True(t, ok)\n\n\t\t\t\tgot = getConstValue(valueSpec, tt.constName)\n\t\t\t\tif got != \"\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestResolveImportPath(t *testing.T) {\n\tconst testRepoRoot = \"/repo/root\"\n\n\ttests := []struct {\n\t\tname       string\n\t\timportPath string\n\t\twant       string\n\t}{\n\t\t{\n\t\t\tname:       \"syft pkg cataloger golang\",\n\t\t\timportPath: \"github.com/anchore/syft/syft/pkg/cataloger/golang\",\n\t\t\twant:       \"/repo/root/syft/pkg/cataloger/golang\",\n\t\t},\n\t\t{\n\t\t\tname:       \"syft internal capabilities\",\n\t\t\timportPath: \"github.com/anchore/syft/internal/capabilities\",\n\t\t\twant:       \"/repo/root/internal/capabilities\",\n\t\t},\n\t\t{\n\t\t\tname:       \"syft root package\",\n\t\t\timportPath: \"github.com/anchore/syft/syft\",\n\t\t\twant:       \"/repo/root/syft\",\n\t\t},\n\t\t{\n\t\t\tname:       \"external package\",\n\t\t\timportPath: \"github.com/other/repo/pkg\",\n\t\t\twant:       \"\",\n\t\t},\n\t\t{\n\t\t\tname:       \"standard library\",\n\t\t\timportPath: \"fmt\",\n\t\t\twant:       \"\",\n\t\t},\n\t\t{\n\t\t\tname:       \"empty import path\",\n\t\t\timportPath: \"\",\n\t\t\twant:       \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := resolveImportPath(tt.importPath, testRepoRoot)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\n// test helper functions\n\n// parseFuncDecl parses a function declaration from a code string\nfunc parseFuncDecl(t *testing.T, code string) *ast.FuncDecl {\n\tt.Helper()\n\tfset := token.NewFileSet()\n\tfile, err := parser.ParseFile(fset, \"\", \"package test\\n\"+code, 0)\n\trequire.NoError(t, err)\n\trequire.Len(t, file.Decls, 1, \"expected exactly one declaration\")\n\tfuncDecl, ok := file.Decls[0].(*ast.FuncDecl)\n\trequire.True(t, ok, \"expected declaration to be a function\")\n\treturn funcDecl\n}\n\n// parseCallExpr parses a call expression from a code string\nfunc parseCallExpr(t *testing.T, code string) *ast.CallExpr {\n\tt.Helper()\n\texpr, err := parser.ParseExpr(code)\n\trequire.NoError(t, err)\n\tcallExpr, ok := expr.(*ast.CallExpr)\n\trequire.True(t, ok, \"expected expression to be a call expression\")\n\treturn callExpr\n}\n\n// parseCompositeLit parses a composite literal from a code string\nfunc parseCompositeLit(t *testing.T, code string) *ast.CompositeLit {\n\tt.Helper()\n\texpr, err := parser.ParseExpr(code)\n\trequire.NoError(t, err)\n\tlit, ok := expr.(*ast.CompositeLit)\n\trequire.True(t, ok, \"expected expression to be a composite literal\")\n\treturn lit\n}\n\n// parseConstDecl parses a const declaration from a code string and returns the GenDecl\nfunc parseConstDecl(t *testing.T, code string) *ast.GenDecl {\n\tt.Helper()\n\tfset := token.NewFileSet()\n\tfile, err := parser.ParseFile(fset, \"\", \"package test\\n\"+code, 0)\n\trequire.NoError(t, err)\n\trequire.Len(t, file.Decls, 1, \"expected exactly one declaration\")\n\tgenDecl, ok := file.Decls[0].(*ast.GenDecl)\n\trequire.True(t, ok, \"expected declaration to be a general declaration\")\n\treturn genDecl\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_metadata.go",
    "content": "// this file discovers metadata and package types by reading test-observations.json files generated by pkgtest helpers during test execution.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n\t\"github.com/anchore/syft/internal/capabilities/pkgtestobservation\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n)\n\n// TestObservationIndex indexes all test observations for efficient lookup and application.\n// parser-level observations are indexed by package name (from test file) + parser function,\n// while cataloger-level observations are indexed by cataloger name.\ntype TestObservationIndex struct {\n\t// parser-level observations: package -> parser function -> types\n\tparsersByPackage map[string]map[string]*TypeObservation\n\t// cataloger-level observations: cataloger name -> types\n\tcatalogers map[string]*TypeObservation\n}\n\n// TypeObservation combines metadata types and package types\ntype TypeObservation struct {\n\tMetadataTypes   []string\n\tPackageTypes    []string\n\tJSONSchemaTypes []string\n}\n\n// newTestObservationIndex creates a new empty index\nfunc newTestObservationIndex() *TestObservationIndex {\n\treturn &TestObservationIndex{\n\t\tparsersByPackage: make(map[string]map[string]*TypeObservation),\n\t\tcatalogers:       make(map[string]*TypeObservation),\n\t}\n}\n\n// getParserObservations retrieves parser-level observations by package name and parser function\nfunc (idx *TestObservationIndex) getParserObservations(packageName, parserFunction string) *TypeObservation {\n\tif parsers, ok := idx.parsersByPackage[packageName]; ok {\n\t\treturn parsers[parserFunction]\n\t}\n\treturn nil\n}\n\n// getCatalogerObservations retrieves cataloger-level observations by cataloger name\nfunc (idx *TestObservationIndex) getCatalogerObservations(catalogerName string) *TypeObservation {\n\treturn idx.catalogers[catalogerName]\n}\n\n// setParserObservations stores parser-level observations\nfunc (idx *TestObservationIndex) setParserObservations(packageName, parserFunction string, obs *TypeObservation) {\n\tif idx.parsersByPackage[packageName] == nil {\n\t\tidx.parsersByPackage[packageName] = make(map[string]*TypeObservation)\n\t}\n\tidx.parsersByPackage[packageName][parserFunction] = obs\n}\n\n// setCatalogerObservations stores cataloger-level observations\nfunc (idx *TestObservationIndex) setCatalogerObservations(catalogerName string, obs *TypeObservation) {\n\tidx.catalogers[catalogerName] = obs\n}\n\n// extractCustomCatalogerData extracts cataloger-level metadata and package types for custom catalogers\nfunc (idx *TestObservationIndex) extractCustomCatalogerData() (map[string][]string, map[string][]string) {\n\tmetadata := make(map[string][]string)\n\tpackageTypes := make(map[string][]string)\n\n\tfor catalogerName, obs := range idx.catalogers {\n\t\tif len(obs.MetadataTypes) > 0 {\n\t\t\tmetadata[catalogerName] = obs.MetadataTypes\n\t\t}\n\t\tif len(obs.PackageTypes) > 0 {\n\t\t\tpackageTypes[catalogerName] = obs.PackageTypes\n\t\t}\n\t}\n\n\treturn metadata, packageTypes\n}\n\n// discoverMetadataTypes searches for test-observations.json files and merges metadata type information\n// into the discovered catalogers. Returns maps of custom cataloger metadata types and package types.\nfunc discoverMetadataTypes(repoRoot string, discovered map[string]DiscoveredCataloger) (map[string][]string, map[string][]string, error) {\n\ttestDataDirs, err := internal.FindTestDataDirs(repoRoot)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// create index to aggregate all observations\n\tindex := newTestObservationIndex()\n\n\t// read all test-observations files and merge into index\n\tfor _, dir := range testDataDirs {\n\t\tobservationsFile := filepath.Join(dir, \"test-observations.json\")\n\t\tif observations, err := internal.ReadTestObservations(observationsFile); err == nil {\n\t\t\tmergeTestObservations(observations, index)\n\t\t} else if !os.IsNotExist(err) {\n\t\t\tfmt.Printf(\"  Warning: failed to read %s: %v\\n\", observationsFile, err)\n\t\t}\n\t}\n\n\t// check if any observations were found\n\tif len(index.parsersByPackage) == 0 && len(index.catalogers) == 0 {\n\t\t// no metadata found, this is not an error\n\t\treturn nil, nil, nil\n\t}\n\n\t// apply observations to discovered catalogers\n\tapplyTypesToCatalogers(discovered, index)\n\n\t// extract custom cataloger data for return\n\tcustomMetadata, customPackageTypes := index.extractCustomCatalogerData()\n\treturn customMetadata, customPackageTypes, nil\n}\n\n// mergeAndDeduplicateStrings merges two string slices, removes duplicates, and returns a sorted slice\nfunc mergeAndDeduplicateStrings(existing, additional []string) []string {\n\tset := make(map[string]bool)\n\tfor _, s := range existing {\n\t\tset[s] = true\n\t}\n\tfor _, s := range additional {\n\t\tset[s] = true\n\t}\n\n\tresult := make([]string, 0, len(set))\n\tfor s := range set {\n\t\tresult = append(result, s)\n\t}\n\tsort.Strings(result)\n\treturn result\n}\n\n// convertToJSONSchemaTypes converts Go struct names to UpperCamelCase JSON schema names\nfunc convertToJSONSchemaTypes(metadataTypes []string) []string {\n\tif len(metadataTypes) == 0 {\n\t\treturn nil\n\t}\n\n\tresult := make([]string, 0, len(metadataTypes))\n\tfor _, typeName := range metadataTypes {\n\t\tjsonName := packagemetadata.JSONNameFromString(typeName)\n\t\tif jsonName != \"\" {\n\t\t\tcamelCase := packagemetadata.ToUpperCamelCase(jsonName)\n\t\t\tresult = append(result, camelCase)\n\t\t}\n\t}\n\treturn result\n}\n\n// mergeTestObservations merges metadata and package type data from a test-observations.json file\n// into the observation index\nfunc mergeTestObservations(observations *pkgtestobservation.Test, index *TestObservationIndex) {\n\tpkg := observations.Package\n\n\t// merge parser-level observations\n\tfor parserName, parserObs := range observations.Parsers {\n\t\tif len(parserObs.MetadataTypes) == 0 && len(parserObs.PackageTypes) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\texisting := index.getParserObservations(pkg, parserName)\n\t\tif existing == nil {\n\t\t\texisting = &TypeObservation{}\n\t\t}\n\n\t\t// merge the types\n\t\texisting.MetadataTypes = mergeAndDeduplicateStrings(existing.MetadataTypes, parserObs.MetadataTypes)\n\t\texisting.PackageTypes = mergeAndDeduplicateStrings(existing.PackageTypes, parserObs.PackageTypes)\n\t\t// generate JSON schema types from metadata types\n\t\texisting.JSONSchemaTypes = convertToJSONSchemaTypes(existing.MetadataTypes)\n\n\t\tindex.setParserObservations(pkg, parserName, existing)\n\t}\n\n\t// merge cataloger-level observations\n\tfor catalogerName, catalogerObs := range observations.Catalogers {\n\t\tif len(catalogerObs.MetadataTypes) == 0 && len(catalogerObs.PackageTypes) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\texisting := index.getCatalogerObservations(catalogerName)\n\t\tif existing == nil {\n\t\t\texisting = &TypeObservation{}\n\t\t}\n\n\t\t// merge the types\n\t\texisting.MetadataTypes = mergeAndDeduplicateStrings(existing.MetadataTypes, catalogerObs.MetadataTypes)\n\t\texisting.PackageTypes = mergeAndDeduplicateStrings(existing.PackageTypes, catalogerObs.PackageTypes)\n\t\t// generate JSON schema types from metadata types\n\t\texisting.JSONSchemaTypes = convertToJSONSchemaTypes(existing.MetadataTypes)\n\n\t\tindex.setCatalogerObservations(catalogerName, existing)\n\t}\n}\n\n// applyParserObservations applies parser-level observations to a cataloger's parsers\nfunc applyParserObservations(cataloger *DiscoveredCataloger, index *TestObservationIndex) bool {\n\tfoundData := false\n\n\t// apply parser-level observations by matching package name + parser function\n\tfor i, parser := range cataloger.Parsers {\n\t\tif obs := index.getParserObservations(cataloger.PackageName, parser.ParserFunction); obs != nil {\n\t\t\tif len(obs.MetadataTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].MetadataTypes = obs.MetadataTypes\n\t\t\t\tcataloger.Parsers[i].JSONSchemaTypes = obs.JSONSchemaTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t\tif len(obs.PackageTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].PackageTypes = obs.PackageTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn foundData\n}\n\n// applySingleParserCatalogerObservations applies cataloger-level observations to a single-parser cataloger\n// by merging them with any existing parser-level observations\nfunc applySingleParserCatalogerObservations(cataloger *DiscoveredCataloger, catalogerObs *TypeObservation) bool {\n\tfoundData := false\n\n\tif len(catalogerObs.MetadataTypes) > 0 {\n\t\tcataloger.Parsers[0].MetadataTypes = mergeAndDeduplicateStrings(\n\t\t\tcataloger.Parsers[0].MetadataTypes,\n\t\t\tcatalogerObs.MetadataTypes,\n\t\t)\n\t\tcataloger.Parsers[0].JSONSchemaTypes = convertToJSONSchemaTypes(cataloger.Parsers[0].MetadataTypes)\n\t\tfoundData = true\n\t}\n\n\tif len(catalogerObs.PackageTypes) > 0 {\n\t\tcataloger.Parsers[0].PackageTypes = mergeAndDeduplicateStrings(\n\t\t\tcataloger.Parsers[0].PackageTypes,\n\t\t\tcatalogerObs.PackageTypes,\n\t\t)\n\t\tfoundData = true\n\t}\n\n\treturn foundData\n}\n\n// applyMultiParserCatalogerObservations applies cataloger-level observations to a multi-parser cataloger\n// only applies to parsers that don't already have parser-level data\nfunc applyMultiParserCatalogerObservations(cataloger *DiscoveredCataloger, catalogerObs *TypeObservation) bool {\n\tfoundData := false\n\n\t// count parsers without any data\n\tparsersWithoutData := 0\n\tfor _, parser := range cataloger.Parsers {\n\t\tif len(parser.MetadataTypes) == 0 && len(parser.PackageTypes) == 0 {\n\t\t\tparsersWithoutData++\n\t\t}\n\t}\n\n\t// if all parsers lack data, apply to all and warn\n\tif parsersWithoutData == len(cataloger.Parsers) {\n\t\tfmt.Printf(\"  Warning: cataloger %q has %d parsers but only cataloger-level observations. Consider adding parser-level tests for better granularity.\\n\",\n\t\t\tcataloger.Name, len(cataloger.Parsers))\n\n\t\tfor i := range cataloger.Parsers {\n\t\t\tif len(catalogerObs.MetadataTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].MetadataTypes = catalogerObs.MetadataTypes\n\t\t\t\tcataloger.Parsers[i].JSONSchemaTypes = catalogerObs.JSONSchemaTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t\tif len(catalogerObs.PackageTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].PackageTypes = catalogerObs.PackageTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t}\n\t} else if parsersWithoutData > 0 {\n\t\t// only apply to parsers without data\n\t\tfor i, parser := range cataloger.Parsers {\n\t\t\tif len(parser.MetadataTypes) == 0 && len(catalogerObs.MetadataTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].MetadataTypes = catalogerObs.MetadataTypes\n\t\t\t\tcataloger.Parsers[i].JSONSchemaTypes = catalogerObs.JSONSchemaTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t\tif len(parser.PackageTypes) == 0 && len(catalogerObs.PackageTypes) > 0 {\n\t\t\t\tcataloger.Parsers[i].PackageTypes = catalogerObs.PackageTypes\n\t\t\t\tfoundData = true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn foundData\n}\n\n// applyTypesToCatalogers applies the aggregated metadata and package type data to the discovered catalogers.\n// it updates the cataloger's parser entries with the appropriate metadata and package types.\nfunc applyTypesToCatalogers(discovered map[string]DiscoveredCataloger, index *TestObservationIndex) {\n\tfor catalogerName, cataloger := range discovered {\n\t\tvar foundData bool\n\n\t\t// first, apply parser-level observations\n\t\tif applyParserObservations(&cataloger, index) {\n\t\t\tfoundData = true\n\t\t}\n\n\t\t// then, apply cataloger-level observations if they exist\n\t\tif catalogerObs := index.getCatalogerObservations(catalogerName); catalogerObs != nil && len(cataloger.Parsers) > 0 {\n\t\t\tif len(cataloger.Parsers) == 1 {\n\t\t\t\t// single parser: merge cataloger-level with parser-level observations\n\t\t\t\tif applySingleParserCatalogerObservations(&cataloger, catalogerObs) {\n\t\t\t\t\tfoundData = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// multiple parsers: only apply to parsers without parser-level data\n\t\t\t\tif applyMultiParserCatalogerObservations(&cataloger, catalogerObs) {\n\t\t\t\t\tfoundData = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif foundData {\n\t\t\tdiscovered[catalogerName] = cataloger\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/discover_metadata_test.go",
    "content": "package main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestApplyParserObservations(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tcataloger        DiscoveredCataloger\n\t\tindex            *TestObservationIndex\n\t\twantFoundData    bool\n\t\twantMetadataType string\n\t\twantPackageType  string\n\t}{\n\t\t{\n\t\t\tname: \"parser observations applied to matching parser\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName:        \"test-cataloger\",\n\t\t\t\tPackageName: \"testpkg\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseTestFile\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tindex: func() *TestObservationIndex {\n\t\t\t\tidx := newTestObservationIndex()\n\t\t\t\tidx.setParserObservations(\"testpkg\", \"parseTestFile\", &TypeObservation{\n\t\t\t\t\tMetadataTypes: []string{\"pkg.TestMetadata\"},\n\t\t\t\t\tPackageTypes:  []string{\"test-type\"},\n\t\t\t\t})\n\t\t\t\treturn idx\n\t\t\t}(),\n\t\t\twantFoundData:    true,\n\t\t\twantMetadataType: \"pkg.TestMetadata\",\n\t\t\twantPackageType:  \"test-type\",\n\t\t},\n\t\t{\n\t\t\tname: \"no observations found for parser\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName:        \"test-cataloger\",\n\t\t\t\tPackageName: \"testpkg\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseOtherFile\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tindex: func() *TestObservationIndex {\n\t\t\t\tidx := newTestObservationIndex()\n\t\t\t\tidx.setParserObservations(\"testpkg\", \"parseTestFile\", &TypeObservation{\n\t\t\t\t\tMetadataTypes: []string{\"pkg.TestMetadata\"},\n\t\t\t\t})\n\t\t\t\treturn idx\n\t\t\t}(),\n\t\t\twantFoundData: false,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple parsers with mixed observations\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName:        \"test-cataloger\",\n\t\t\t\tPackageName: \"testpkg\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseFirst\"},\n\t\t\t\t\t{ParserFunction: \"parseSecond\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tindex: func() *TestObservationIndex {\n\t\t\t\tidx := newTestObservationIndex()\n\t\t\t\tidx.setParserObservations(\"testpkg\", \"parseFirst\", &TypeObservation{\n\t\t\t\t\tMetadataTypes: []string{\"pkg.FirstMetadata\"},\n\t\t\t\t})\n\t\t\t\t// parseSecond has no observations\n\t\t\t\treturn idx\n\t\t\t}(),\n\t\t\twantFoundData:    true,\n\t\t\twantMetadataType: \"pkg.FirstMetadata\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotFoundData := applyParserObservations(&tt.cataloger, tt.index)\n\t\t\trequire.Equal(t, tt.wantFoundData, gotFoundData)\n\n\t\t\tif tt.wantFoundData && tt.wantMetadataType != \"\" {\n\t\t\t\trequire.Contains(t, tt.cataloger.Parsers[0].MetadataTypes, tt.wantMetadataType)\n\t\t\t}\n\n\t\t\tif tt.wantFoundData && tt.wantPackageType != \"\" {\n\t\t\t\trequire.Contains(t, tt.cataloger.Parsers[0].PackageTypes, tt.wantPackageType)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestApplySingleParserCatalogerObservations(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tcataloger        DiscoveredCataloger\n\t\tcatalogerObs     *TypeObservation\n\t\twantFoundData    bool\n\t\twantMetadataType []string\n\t\twantPackageType  []string\n\t}{\n\t\t{\n\t\t\tname: \"cataloger-level observations applied to single parser\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"single-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseSingle\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs: &TypeObservation{\n\t\t\t\tMetadataTypes: []string{\"pkg.CatalogerMetadata\"},\n\t\t\t\tPackageTypes:  []string{\"cataloger-type\"},\n\t\t\t},\n\t\t\twantFoundData:    true,\n\t\t\twantMetadataType: []string{\"pkg.CatalogerMetadata\"},\n\t\t\twantPackageType:  []string{\"cataloger-type\"},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloger-level merges with existing parser-level observations\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"single-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{\n\t\t\t\t\t\tParserFunction: \"parseSingle\",\n\t\t\t\t\t\tMetadataTypes:  []string{\"pkg.ParserMetadata\"},\n\t\t\t\t\t\tPackageTypes:   []string{\"parser-type\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs: &TypeObservation{\n\t\t\t\tMetadataTypes: []string{\"pkg.CatalogerMetadata\"},\n\t\t\t\tPackageTypes:  []string{\"cataloger-type\"},\n\t\t\t},\n\t\t\twantFoundData:    true,\n\t\t\twantMetadataType: []string{\"pkg.CatalogerMetadata\", \"pkg.ParserMetadata\"},\n\t\t\twantPackageType:  []string{\"cataloger-type\", \"parser-type\"},\n\t\t},\n\t\t{\n\t\t\tname: \"empty cataloger observations\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"single-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseSingle\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs:  &TypeObservation{},\n\t\t\twantFoundData: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotFoundData := applySingleParserCatalogerObservations(&tt.cataloger, tt.catalogerObs)\n\t\t\trequire.Equal(t, tt.wantFoundData, gotFoundData)\n\n\t\t\tif tt.wantFoundData {\n\t\t\t\tif len(tt.wantMetadataType) > 0 {\n\t\t\t\t\trequire.ElementsMatch(t, tt.wantMetadataType, tt.cataloger.Parsers[0].MetadataTypes)\n\t\t\t\t}\n\t\t\t\tif len(tt.wantPackageType) > 0 {\n\t\t\t\t\trequire.ElementsMatch(t, tt.wantPackageType, tt.cataloger.Parsers[0].PackageTypes)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestApplyMultiParserCatalogerObservations(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tcataloger     DiscoveredCataloger\n\t\tcatalogerObs  *TypeObservation\n\t\twantFoundData bool\n\t\t// expectations for each parser by index\n\t\twantParser0HasMetadata bool\n\t\twantParser1HasMetadata bool\n\t}{\n\t\t{\n\t\t\tname: \"all parsers without data - cataloger-level applied to all\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"multi-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseFirst\"},\n\t\t\t\t\t{ParserFunction: \"parseSecond\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs: &TypeObservation{\n\t\t\t\tMetadataTypes: []string{\"pkg.SharedMetadata\"},\n\t\t\t\tPackageTypes:  []string{\"shared-type\"},\n\t\t\t},\n\t\t\twantFoundData:          true,\n\t\t\twantParser0HasMetadata: true,\n\t\t\twantParser1HasMetadata: true,\n\t\t},\n\t\t{\n\t\t\tname: \"some parsers have data - cataloger-level only fills gaps\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"multi-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{\n\t\t\t\t\t\tParserFunction: \"parseFirst\",\n\t\t\t\t\t\tMetadataTypes:  []string{\"pkg.FirstMetadata\"},\n\t\t\t\t\t},\n\t\t\t\t\t{ParserFunction: \"parseSecond\"}, // no data\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs: &TypeObservation{\n\t\t\t\tMetadataTypes: []string{\"pkg.SharedMetadata\"},\n\t\t\t},\n\t\t\twantFoundData:          true,\n\t\t\twantParser0HasMetadata: false, // already has data, not overwritten\n\t\t\twantParser1HasMetadata: true,  // gets cataloger-level data\n\t\t},\n\t\t{\n\t\t\tname: \"all parsers have data - cataloger-level not applied\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"multi-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{\n\t\t\t\t\t\tParserFunction: \"parseFirst\",\n\t\t\t\t\t\tMetadataTypes:  []string{\"pkg.FirstMetadata\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tParserFunction: \"parseSecond\",\n\t\t\t\t\t\tMetadataTypes:  []string{\"pkg.SecondMetadata\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs: &TypeObservation{\n\t\t\t\tMetadataTypes: []string{\"pkg.SharedMetadata\"},\n\t\t\t},\n\t\t\twantFoundData:          false,\n\t\t\twantParser0HasMetadata: false, // should not have shared metadata\n\t\t\twantParser1HasMetadata: false, // should not have shared metadata\n\t\t},\n\t\t{\n\t\t\tname: \"empty cataloger observations\",\n\t\t\tcataloger: DiscoveredCataloger{\n\t\t\t\tName: \"multi-parser-cataloger\",\n\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t{ParserFunction: \"parseFirst\"},\n\t\t\t\t\t{ParserFunction: \"parseSecond\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcatalogerObs:           &TypeObservation{},\n\t\t\twantFoundData:          false,\n\t\t\twantParser0HasMetadata: false,\n\t\t\twantParser1HasMetadata: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotFoundData := applyMultiParserCatalogerObservations(&tt.cataloger, tt.catalogerObs)\n\t\t\trequire.Equal(t, tt.wantFoundData, gotFoundData)\n\n\t\t\tif tt.wantParser0HasMetadata {\n\t\t\t\trequire.Contains(t, tt.cataloger.Parsers[0].MetadataTypes, \"pkg.SharedMetadata\",\n\t\t\t\t\t\"parser 0 should have shared metadata\")\n\t\t\t} else if len(tt.catalogerObs.MetadataTypes) > 0 {\n\t\t\t\t// if cataloger has metadata but we don't expect it in parser 0, verify it's not there\n\t\t\t\trequire.NotContains(t, tt.cataloger.Parsers[0].MetadataTypes, \"pkg.SharedMetadata\",\n\t\t\t\t\t\"parser 0 should not have shared metadata\")\n\t\t\t}\n\n\t\t\tif tt.wantParser1HasMetadata {\n\t\t\t\trequire.Contains(t, tt.cataloger.Parsers[1].MetadataTypes, \"pkg.SharedMetadata\",\n\t\t\t\t\t\"parser 1 should have shared metadata\")\n\t\t\t} else if len(tt.catalogerObs.MetadataTypes) > 0 {\n\t\t\t\t// if cataloger has metadata but we don't expect it in parser 1, verify it's not there\n\t\t\t\trequire.NotContains(t, tt.cataloger.Parsers[1].MetadataTypes, \"pkg.SharedMetadata\",\n\t\t\t\t\t\"parser 1 should not have shared metadata\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMergeAndDeduplicateStrings(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\texisting   []string\n\t\tadditional []string\n\t\twant       []string\n\t}{\n\t\t{\n\t\t\tname:       \"merge with duplicates\",\n\t\t\texisting:   []string{\"a\", \"b\"},\n\t\t\tadditional: []string{\"b\", \"c\"},\n\t\t\twant:       []string{\"a\", \"b\", \"c\"},\n\t\t},\n\t\t{\n\t\t\tname:       \"empty existing\",\n\t\t\texisting:   []string{},\n\t\t\tadditional: []string{\"a\", \"b\"},\n\t\t\twant:       []string{\"a\", \"b\"},\n\t\t},\n\t\t{\n\t\t\tname:       \"empty additional\",\n\t\t\texisting:   []string{\"a\", \"b\"},\n\t\t\tadditional: []string{},\n\t\t\twant:       []string{\"a\", \"b\"},\n\t\t},\n\t\t{\n\t\t\tname:       \"both empty\",\n\t\t\texisting:   []string{},\n\t\t\tadditional: []string{},\n\t\t\twant:       []string{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := mergeAndDeduplicateStrings(tt.existing, tt.additional)\n\t\t\trequire.ElementsMatch(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/io.go",
    "content": "// this file handles YAML file reading and writing with comment preservation, using gopkg.in/yaml.v3's node tree to maintain all existing comments during regeneration.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\nconst autoGeneratedComment = \"AUTO-GENERATED\"\n\n// writeYAMLToFile writes a YAML node to a file with proper encoding\nfunc writeYAMLToFile(path string, rootNode *yaml.Node) error {\n\tf, err := os.Create(path)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create file: %w\", err)\n\t}\n\tdefer f.Close()\n\n\tencoder := yaml.NewEncoder(f)\n\tencoder.SetIndent(2)\n\tif err := encoder.Encode(rootNode); err != nil {\n\t\treturn fmt.Errorf(\"failed to write YAML: %w\", err)\n\t}\n\tif err := encoder.Close(); err != nil {\n\t\treturn fmt.Errorf(\"failed to close encoder: %w\", err)\n\t}\n\n\t// Sync to ensure data is flushed to disk before subsequent reads.\n\t// This prevents flaky test failures on tmpfs where file contents\n\t// may not be immediately visible after Close() returns.\n\tif err := f.Sync(); err != nil {\n\t\treturn fmt.Errorf(\"failed to sync file: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// addFieldComments adds comments to top-level fields in the YAML node\nfunc addFieldComments(rootNode *yaml.Node) {\n\t// navigate to the mapping node (handle both DocumentNode and MappingNode)\n\tvar mappingNode *yaml.Node\n\tif rootNode.Kind == yaml.DocumentNode && len(rootNode.Content) > 0 {\n\t\tmappingNode = rootNode.Content[0]\n\t} else {\n\t\tmappingNode = rootNode\n\t}\n\n\tif mappingNode != nil && len(mappingNode.Content) > 0 {\n\t\t// iterate through top-level keys\n\t\tfor i := 0; i < len(mappingNode.Content); i += 2 {\n\t\t\tkeyNode := mappingNode.Content[i]\n\t\t\tvalueNode := mappingNode.Content[i+1]\n\n\t\t\tswitch keyNode.Value {\n\t\t\tcase \"configs\":\n\t\t\t\t// configs section is AUTO-GENERATED\n\t\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\t\tkeyNode.LineComment = \"AUTO-GENERATED - config structs and their fields\"\n\t\t\t\t}\n\t\t\tcase \"application\":\n\t\t\t\t// application section is AUTO-GENERATED\n\t\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\t\tkeyNode.LineComment = \"AUTO-GENERATED - application-level config keys\"\n\t\t\t\t}\n\t\t\tcase \"catalogers\":\n\t\t\t\t// clear any HeadComment on catalogers key and value nodes to prevent duplicate headers\n\t\t\t\t// (the only header should be on the root DocumentNode)\n\t\t\t\tkeyNode.HeadComment = \"\"\n\t\t\t\tvalueNode.HeadComment = \"\"\n\t\t\t\taddCatalogerComments(valueNode)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// saveCapabilities saves the capabilities document to distributed YAML files with comments.\n// Groups catalogers by ecosystem and writes each to catalogerDir/{ecosystem}/capabilities.yaml.\n// Also saves appconfig.yaml separately to internal/capabilities/.\nfunc saveCapabilities(catalogerDir, repoRoot string, doc *capabilities.Document, existingNodes map[string]*yaml.Node) error {\n\tcatalogersByEcosystem, configsByEcosystem := groupCatalogersByEcosystem(doc)\n\n\t// write each ecosystem file\n\tfor ecosystem, catalogers := range catalogersByEcosystem {\n\t\tif err := writeEcosystemFile(catalogerDir, ecosystem, catalogers, configsByEcosystem[ecosystem], existingNodes); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// save appconfig.yaml to internal/capabilities/\n\tif len(doc.ApplicationConfig) > 0 {\n\t\tif err := writeAppconfigFile(repoRoot, doc.ApplicationConfig, existingNodes); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// groupCatalogersByEcosystem groups catalogers and their configs by ecosystem\nfunc groupCatalogersByEcosystem(doc *capabilities.Document) (map[string][]capabilities.CatalogerEntry, map[string]map[string]capabilities.CatalogerConfigEntry) {\n\tcatalogersByEcosystem := make(map[string][]capabilities.CatalogerEntry)\n\tconfigsByEcosystem := make(map[string]map[string]capabilities.CatalogerConfigEntry)\n\n\tfor _, cat := range doc.Catalogers {\n\t\tecosystem := mapCatalogerToEcosystem(cat)\n\t\tcatalogersByEcosystem[ecosystem] = append(catalogersByEcosystem[ecosystem], cat)\n\n\t\t// also group configs for this ecosystem\n\t\tif cat.Config != \"\" {\n\t\t\tif configEntry, exists := doc.Configs[cat.Config]; exists {\n\t\t\t\tif configsByEcosystem[ecosystem] == nil {\n\t\t\t\t\tconfigsByEcosystem[ecosystem] = make(map[string]capabilities.CatalogerConfigEntry)\n\t\t\t\t}\n\t\t\t\tconfigsByEcosystem[ecosystem][cat.Config] = configEntry\n\t\t\t}\n\t\t}\n\t}\n\n\treturn catalogersByEcosystem, configsByEcosystem\n}\n\n// writeEcosystemFile writes a single ecosystem's catalogers and configs to a YAML file\nfunc writeEcosystemFile(catalogerDir, ecosystem string, catalogers []capabilities.CatalogerEntry, configs map[string]capabilities.CatalogerConfigEntry, existingNodes map[string]*yaml.Node) error {\n\tecosystemDoc := struct {\n\t\tConfigs    map[string]capabilities.CatalogerConfigEntry `yaml:\"configs,omitempty\"`\n\t\tCatalogers []capabilities.CatalogerEntry                `yaml:\"catalogers\"`\n\t}{\n\t\tConfigs:    configs,\n\t\tCatalogers: catalogers,\n\t}\n\n\tvar rootNode yaml.Node\n\texistingNode, hasExisting := existingNodes[ecosystem]\n\n\tif hasExisting && existingNode != nil {\n\t\t// update existing node tree\n\t\trootNode = *existingNode\n\t\trootNode.HeadComment = \"# Cataloger capabilities. See ../README.md for documentation.\\n\"\n\t\tif err := updateNodeTreeEcosystem(&rootNode, &ecosystemDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update node tree for %s: %w\", ecosystem, err)\n\t\t}\n\t} else {\n\t\t// create new node tree\n\t\tif err := rootNode.Encode(&ecosystemDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to encode %s: %w\", ecosystem, err)\n\t\t}\n\t\trootNode.HeadComment = \"# Cataloger capabilities. See ../README.md for documentation.\\n\"\n\t}\n\n\t// add field comments\n\taddFieldComments(&rootNode)\n\n\t// write file to catalogerDir/{ecosystem}/capabilities.yaml\n\tecosystemPath := internal.EcosystemCapabilitiesPath(catalogerDir, ecosystem)\n\tif err := writeYAMLToFile(ecosystemPath, &rootNode); err != nil {\n\t\treturn fmt.Errorf(\"failed to write %s: %w\", ecosystem, err)\n\t}\n\n\treturn nil\n}\n\n// writeAppconfigFile writes the application config to appconfig.yaml\nfunc writeAppconfigFile(repoRoot string, appConfig []capabilities.ApplicationConfigField, existingNodes map[string]*yaml.Node) error {\n\tappconfigDoc := struct {\n\t\tApplication []capabilities.ApplicationConfigField `yaml:\"application\"`\n\t}{\n\t\tApplication: appConfig,\n\t}\n\n\tvar appNode yaml.Node\n\texistingAppNode, hasExisting := existingNodes[\"appconfig\"]\n\n\tif hasExisting && existingAppNode != nil {\n\t\tappNode = *existingAppNode\n\t\tif err := updateNodeTreeAppConfig(&appNode, &appconfigDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to update appconfig node tree: %w\", err)\n\t\t}\n\t} else {\n\t\tif err := appNode.Encode(&appconfigDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to encode appconfig: %w\", err)\n\t\t}\n\t\tappNode.HeadComment = \"# Application-level configuration. See README.md for documentation.\\n# This file is partially auto-generated. Run 'go generate ./internal/capabilities' to regenerate.\\n\"\n\t}\n\n\taddFieldComments(&appNode)\n\n\tappconfigPath := internal.AppconfigPath(repoRoot)\n\tif err := writeYAMLToFile(appconfigPath, &appNode); err != nil {\n\t\treturn fmt.Errorf(\"failed to write appconfig: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// mapCatalogerToEcosystem determines which ecosystem file a cataloger belongs to\nfunc mapCatalogerToEcosystem(cat capabilities.CatalogerEntry) string {\n\t// first try using the source file path\n\tif cat.Source.File != \"\" {\n\t\t// extract directory from path like \"syft/pkg/cataloger/golang/cataloger.go\"\n\t\tre := regexp.MustCompile(`syft/pkg/cataloger/([^/]+)/`)\n\t\tif matches := re.FindStringSubmatch(cat.Source.File); len(matches) >= 2 {\n\t\t\treturn matches[1]\n\t\t}\n\t}\n\n\t// fallback to inferring from cataloger name (from merge.go)\n\treturn inferEcosystem(cat.Name)\n}\n\n// updateNodeTreeEcosystem updates an existing ecosystem YAML node tree\nfunc updateNodeTreeEcosystem(rootNode *yaml.Node, doc interface{}) error {\n\tvar newNode yaml.Node\n\tif err := newNode.Encode(doc); err != nil {\n\t\treturn err\n\t}\n\n\tvar existingMapping *yaml.Node\n\tif rootNode.Kind == yaml.DocumentNode && len(rootNode.Content) > 0 {\n\t\texistingMapping = rootNode.Content[0]\n\t} else {\n\t\texistingMapping = rootNode\n\t}\n\n\tvar newMapping *yaml.Node\n\tif newNode.Kind == yaml.DocumentNode && len(newNode.Content) > 0 {\n\t\tnewMapping = newNode.Content[0]\n\t} else {\n\t\tnewMapping = &newNode\n\t}\n\n\tif existingMapping.Kind == yaml.MappingNode && newMapping.Kind == yaml.MappingNode {\n\t\texistingMapping.Content = newMapping.Content\n\t}\n\n\treturn nil\n}\n\n// updateNodeTreeAppConfig updates appconfig YAML node tree\nfunc updateNodeTreeAppConfig(rootNode *yaml.Node, doc interface{}) error {\n\treturn updateNodeTreeEcosystem(rootNode, doc)\n}\n\n// addCatalogerFieldComment adds appropriate comment to a single cataloger field\nfunc addCatalogerFieldComment(keyNode, valueNode *yaml.Node, catalogerName string) {\n\tswitch keyNode.Value {\n\tcase \"ecosystem\":\n\t\t// ecosystem is MANUAL\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = \"MANUAL\"\n\t\t}\n\tcase \"name\", \"type\":\n\t\t// add AUTO-GENERATED comment to these fields\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"source\":\n\t\t// add AUTO-GENERATED comment to source field\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"config\":\n\t\t// add AUTO-GENERATED comment to config field\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"selectors\":\n\t\t// selectors are AUTO-GENERATED\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"parsers\":\n\t\t// parsers is AUTO-GENERATED structure\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = \"AUTO-GENERATED structure\"\n\t\t}\n\t\taddParserComments(valueNode)\n\tcase \"detectors\":\n\t\t// detectors are AUTO-GENERATED for binary-classifier-cataloger, MANUAL for others\n\t\tif catalogerName == \"binary-classifier-cataloger\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t} else if keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = \"MANUAL - edit detectors here\"\n\t\t}\n\tcase \"metadata_types\":\n\t\t// cataloger-level metadata_types (for custom catalogers) are AUTO-GENERATED\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"package_types\":\n\t\t// cataloger-level package_types (for custom catalogers) are AUTO-GENERATED\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"json_schema_types\":\n\t\t// json_schema_types are AUTO-GENERATED\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t}\n\tcase \"capabilities\":\n\t\t// capabilities are MANUAL\n\t\tif keyNode.LineComment == \"\" {\n\t\t\tkeyNode.LineComment = \"MANUAL - edit capabilities here\"\n\t\t}\n\t}\n}\n\n// findFieldValue finds a field in a YAML mapping node and returns its value\nfunc findFieldValue(node *yaml.Node, fieldName string) string {\n\tif node.Kind != yaml.MappingNode {\n\t\treturn \"\"\n\t}\n\n\tfor i := 0; i < len(node.Content); i += 2 {\n\t\tkeyNode := node.Content[i]\n\t\tvalueNode := node.Content[i+1]\n\t\tif keyNode.Value == fieldName {\n\t\t\treturn valueNode.Value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc addCatalogerComments(catalogersNode *yaml.Node) {\n\t// catalogersNode should be a sequence of cataloger entries\n\tif catalogersNode.Kind != yaml.SequenceNode {\n\t\treturn\n\t}\n\n\tfor _, catalogerNode := range catalogersNode.Content {\n\t\tif catalogerNode.Kind != yaml.MappingNode {\n\t\t\tcontinue\n\t\t}\n\n\t\t// get the cataloger name for special handling\n\t\tcatalogerName := findFieldValue(catalogerNode, \"name\")\n\n\t\t// iterate through the fields of this cataloger entry\n\t\tfor i := 0; i < len(catalogerNode.Content); i += 2 {\n\t\t\tkeyNode := catalogerNode.Content[i]\n\t\t\tvalueNode := catalogerNode.Content[i+1]\n\t\t\taddCatalogerFieldComment(keyNode, valueNode, catalogerName)\n\t\t}\n\t}\n}\n\nfunc addParserComments(parsersNode *yaml.Node) {\n\t// parsersNode should be a sequence of parser entries\n\tif parsersNode.Kind != yaml.SequenceNode {\n\t\treturn\n\t}\n\n\tfor _, parserNode := range parsersNode.Content {\n\t\tif parserNode.Kind != yaml.MappingNode {\n\t\t\tcontinue\n\t\t}\n\n\t\t// iterate through the fields of this parser entry\n\t\tfor i := 0; i < len(parserNode.Content); i += 2 {\n\t\t\tkeyNode := parserNode.Content[i]\n\t\t\tvalueNode := parserNode.Content[i+1]\n\n\t\t\tswitch keyNode.Value {\n\t\t\tcase \"parser_function\", \"metadata_types\", \"package_types\", \"json_schema_types\":\n\t\t\t\t// add AUTO-GENERATED comment to these fields\n\t\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t\t\t}\n\t\t\tcase \"detector\":\n\t\t\t\t// detector is AUTO-GENERATED\n\t\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t\t\t}\n\t\t\t\taddDetectorComments(valueNode)\n\t\t\tcase \"capabilities\":\n\t\t\t\t// capabilities are MANUAL\n\t\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\t\tkeyNode.LineComment = \"MANUAL - preserved across regeneration\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc addDetectorComments(detectorNode *yaml.Node) {\n\t// detectorNode should be a mapping node with method and criteria fields\n\tif detectorNode.Kind != yaml.MappingNode {\n\t\treturn\n\t}\n\n\t// iterate through the fields of the detector\n\tfor i := 0; i < len(detectorNode.Content); i += 2 {\n\t\tkeyNode := detectorNode.Content[i]\n\n\t\tswitch keyNode.Value {\n\t\tcase \"method\", \"criteria\":\n\t\t\t// add AUTO-GENERATED comment to these fields\n\t\t\tif keyNode.LineComment == \"\" {\n\t\t\t\tkeyNode.LineComment = autoGeneratedComment\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/io_test.go",
    "content": "package main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"gopkg.in/yaml.v3\"\n)\n\nfunc TestFindFieldValue(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tyamlContent string\n\t\tfieldName   string\n\t\twant        string\n\t}{\n\t\t{\n\t\t\tname: \"finds simple string field\",\n\t\t\tyamlContent: `\nname: test-cataloger\ntype: custom\n`,\n\t\t\tfieldName: \"name\",\n\t\t\twant:      \"test-cataloger\",\n\t\t},\n\t\t{\n\t\t\tname: \"finds type field\",\n\t\t\tyamlContent: `\nname: test-cataloger\ntype: generic\n`,\n\t\t\tfieldName: \"type\",\n\t\t\twant:      \"generic\",\n\t\t},\n\t\t{\n\t\t\tname: \"returns empty for non-existent field\",\n\t\t\tyamlContent: `\nname: test-cataloger\n`,\n\t\t\tfieldName: \"nonexistent\",\n\t\t\twant:      \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"finds parser_function field\",\n\t\t\tyamlContent: `\nparser_function: parseGoMod\nmetadata_types: [GoModMetadata]\n`,\n\t\t\tfieldName: \"parser_function\",\n\t\t\twant:      \"parseGoMod\",\n\t\t},\n\t\t{\n\t\t\tname:        \"handles empty mapping\",\n\t\t\tyamlContent: `{}`,\n\t\t\tfieldName:   \"any\",\n\t\t\twant:        \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tvar rootNode yaml.Node\n\t\t\terr := yaml.Unmarshal([]byte(tt.yamlContent), &rootNode)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// get the mapping node\n\t\t\tvar mappingNode *yaml.Node\n\t\t\tif rootNode.Kind == yaml.DocumentNode && len(rootNode.Content) > 0 {\n\t\t\t\tmappingNode = rootNode.Content[0]\n\t\t\t} else {\n\t\t\t\tmappingNode = &rootNode\n\t\t\t}\n\n\t\t\tgot := findFieldValue(mappingNode, tt.fieldName)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestAddCatalogerFieldComment(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tfieldName       string\n\t\tfieldValue      string\n\t\tcatalogerName   string\n\t\twantLineComment string\n\t}{\n\t\t{\n\t\t\tname:            \"ecosystem is MANUAL\",\n\t\t\tfieldName:       \"ecosystem\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: \"MANUAL\",\n\t\t},\n\t\t{\n\t\t\tname:            \"name is AUTO-GENERATED\",\n\t\t\tfieldName:       \"name\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"type is AUTO-GENERATED\",\n\t\t\tfieldName:       \"type\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"source is AUTO-GENERATED\",\n\t\t\tfieldName:       \"source\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"config is AUTO-GENERATED\",\n\t\t\tfieldName:       \"config\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"selectors is AUTO-GENERATED\",\n\t\t\tfieldName:       \"selectors\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"parsers is AUTO-GENERATED structure\",\n\t\t\tfieldName:       \"parsers\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: \"AUTO-GENERATED structure\",\n\t\t},\n\t\t{\n\t\t\tname:            \"detectors for binary-classifier-cataloger is AUTO-GENERATED\",\n\t\t\tfieldName:       \"detectors\",\n\t\t\tcatalogerName:   \"binary-classifier-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"detectors for other catalogers is MANUAL\",\n\t\t\tfieldName:       \"detectors\",\n\t\t\tcatalogerName:   \"java-archive-cataloger\",\n\t\t\twantLineComment: \"MANUAL - edit detectors here\",\n\t\t},\n\t\t{\n\t\t\tname:            \"metadata_types is AUTO-GENERATED\",\n\t\t\tfieldName:       \"metadata_types\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"package_types is AUTO-GENERATED\",\n\t\t\tfieldName:       \"package_types\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"json_schema_types is AUTO-GENERATED\",\n\t\t\tfieldName:       \"json_schema_types\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: autoGeneratedComment,\n\t\t},\n\t\t{\n\t\t\tname:            \"capabilities is MANUAL\",\n\t\t\tfieldName:       \"capabilities\",\n\t\t\tcatalogerName:   \"test-cataloger\",\n\t\t\twantLineComment: \"MANUAL - edit capabilities here\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// create key and value nodes\n\t\t\tkeyNode := &yaml.Node{\n\t\t\t\tKind:  yaml.ScalarNode,\n\t\t\t\tValue: tt.fieldName,\n\t\t\t}\n\t\t\tvalueNode := &yaml.Node{\n\t\t\t\tKind:  yaml.ScalarNode,\n\t\t\t\tValue: tt.fieldValue,\n\t\t\t}\n\n\t\t\taddCatalogerFieldComment(keyNode, valueNode, tt.catalogerName)\n\n\t\t\trequire.Equal(t, tt.wantLineComment, keyNode.LineComment)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/main.go",
    "content": "// this is the entry point for regenerating the cataloger/*/capabilities.yaml files, which orchestrates discovery, merging, and validation of cataloger capabilities.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\nvar (\n\tsuccessStyle = lipgloss.NewStyle().Foreground(lipgloss.Color(\"10\")).Bold(true) // green\n\twarningStyle = lipgloss.NewStyle().Foreground(lipgloss.Color(\"11\")).Bold(true) // yellow\n\terrorStyle   = lipgloss.NewStyle().Foreground(lipgloss.Color(\"9\")).Bold(true)  // red\n\tinfoStyle    = lipgloss.NewStyle().Foreground(lipgloss.Color(\"14\"))            // cyan\n\tdimStyle     = lipgloss.NewStyle().Foreground(lipgloss.Color(\"245\"))           // lighter grey (256-color)\n)\n\nfunc main() {\n\trepoRoot, err := internal.RepoRoot()\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to find repo root: %v\", err)\n\t}\n\n\tcatalogerDir := internal.CatalogerDir(repoRoot)\n\n\tfmt.Println(\"Regenerating capabilities files...\")\n\tfmt.Println()\n\tstats, err := RegenerateCapabilities(catalogerDir, repoRoot)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to regenerate capabilities: %v\", err)\n\t}\n\n\tprintSummary(stats)\n\tcheckIncompleteCapabilities(catalogerDir, repoRoot)\n\tprintMetadataTypeCoverageWarning(catalogerDir, repoRoot)\n\tprintPackageTypeCoverageWarning(catalogerDir, repoRoot)\n}\n\nfunc printSummary(stats *Statistics) {\n\tfmt.Println()\n\tfmt.Println(infoStyle.Bold(true).Render(\"Summary:\"))\n\tfmt.Printf(\"  • Total catalogers: %s (%s generic, %s custom)\\n\",\n\t\tinfoStyle.Render(fmt.Sprintf(\"%d\", stats.TotalGenericCatalogers+stats.TotalCustomCatalogers)),\n\t\tinfoStyle.Render(fmt.Sprintf(\"%d\", stats.TotalGenericCatalogers)),\n\t\tinfoStyle.Render(fmt.Sprintf(\"%d\", stats.TotalCustomCatalogers)))\n\tfmt.Printf(\"  • Total parser functions: %s\\n\", infoStyle.Render(fmt.Sprintf(\"%d\", stats.TotalParserFunctions)))\n\n\tif len(stats.NewCatalogers) > 0 {\n\t\tfmt.Printf(\"  • New catalogers: %s\\n\", successStyle.Render(fmt.Sprintf(\"%d\", len(stats.NewCatalogers))))\n\t\tfor _, name := range stats.NewCatalogers {\n\t\t\tfmt.Printf(\"    - %s\\n\", successStyle.Render(name))\n\t\t}\n\t}\n\n\tif len(stats.NewParserFunctions) > 0 {\n\t\tfmt.Printf(\"  • New parser functions: %s\\n\", successStyle.Render(fmt.Sprintf(\"%d\", len(stats.NewParserFunctions))))\n\t\tfor _, name := range stats.NewParserFunctions {\n\t\t\tfmt.Printf(\"    - %s\\n\", successStyle.Render(name))\n\t\t}\n\t}\n\n\tif len(stats.UpdatedCatalogers) > 0 {\n\t\tfmt.Printf(\"  • Updated catalogers: %s\\n\", infoStyle.Render(fmt.Sprintf(\"%d\", len(stats.UpdatedCatalogers))))\n\t}\n\n\tfmt.Println()\n\tfmt.Println(successStyle.Render(\"✓ Updated capabilities files successfully\"))\n}\n\nfunc checkIncompleteCapabilities(catalogerDir, repoRoot string) {\n\tdoc, _, err := internal.LoadCapabilities(catalogerDir, repoRoot)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to load updated capabilities: %v\", err)\n\t}\n\n\tvar needsAttentionGeneric []string\n\tvar needsAttentionCustom []string\n\tfor _, cataloger := range doc.Catalogers {\n\t\tswitch cataloger.Type {\n\t\tcase genericCatalogerType:\n\t\t\tfor _, parser := range cataloger.Parsers {\n\t\t\t\tif hasEmptyCapabilities(parser.Capabilities) {\n\t\t\t\t\tneedsAttentionGeneric = append(needsAttentionGeneric, fmt.Sprintf(\"%s/%s\", cataloger.Name, parser.ParserFunction))\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"custom\":\n\t\t\tif hasEmptyCapabilities(cataloger.Capabilities) {\n\t\t\t\tneedsAttentionCustom = append(needsAttentionCustom, cataloger.Name)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(needsAttentionGeneric) > 0 || len(needsAttentionCustom) > 0 {\n\t\tfmt.Println()\n\t\tprintFailureASCII()\n\t\tfmt.Println(warningStyle.Render(\"⚠ WARNING:\") + \" The following entries have incomplete capabilities:\")\n\n\t\tif len(needsAttentionGeneric) > 0 {\n\t\t\tfmt.Printf(\"  • %s generic cataloger parser functions need capabilities:\\n\", errorStyle.Render(fmt.Sprintf(\"%d\", len(needsAttentionGeneric))))\n\t\t\tfor _, name := range needsAttentionGeneric {\n\t\t\t\tfmt.Printf(\"    - %s\\n\", dimStyle.Render(name))\n\t\t\t}\n\t\t}\n\n\t\tif len(needsAttentionCustom) > 0 {\n\t\t\tfmt.Printf(\"  • %s custom catalogers need capabilities:\\n\", errorStyle.Render(fmt.Sprintf(\"%d\", len(needsAttentionCustom))))\n\t\t\tfor _, name := range needsAttentionCustom {\n\t\t\t\tfmt.Printf(\"    - %s\\n\", dimStyle.Render(name))\n\t\t\t}\n\t\t}\n\n\t\tfmt.Println()\n\t\tfmt.Println(dimStyle.Render(\"Please update these entries in the capabilities files before running tests.\"))\n\t\tfmt.Println()\n\t\tfmt.Println(dimStyle.Render(\"Exit code: 1\"))\n\t\tos.Exit(1)\n\t}\n\t// show success ASCII art when all validations pass\n\tprintSuccessASCII()\n}\n\nfunc hasEmptyCapabilities(caps capabilities.CapabilitySet) bool {\n\t// only flag if capabilities are completely missing (empty array)\n\t// if someone filled out the capabilities section (even with all false/empty values), that's intentional\n\treturn len(caps) == 0\n}\n\nfunc printSuccessASCII() {\n\tfmt.Println()\n\tfmt.Println(successStyle.Render(\"✓ All validations passed!\") + \" 🎉\")\n\tfmt.Println()\n\tfmt.Println(successStyle.Render(\"  ░█▀▀░█░█░█▀▀░█▀▀░█▀▀░█▀▀░█▀▀\"))\n\tfmt.Println(successStyle.Render(\"  ░▀▀█░█░█░█░░░█░░░█▀▀░▀▀█░▀▀█\"))\n\tfmt.Println(successStyle.Render(\"  ░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀\"))\n\tfmt.Println()\n}\n\nfunc printFailureASCII() {\n\tfmt.Println(errorStyle.Render(\"✗ Validation failed\") + \" 😢\")\n\tfmt.Println()\n\tfmt.Println(errorStyle.Render(\"  ░█▀▀░█▀█░▀█▀░█░░░█▀▀░█▀▄\"))\n\tfmt.Println(errorStyle.Render(\"  ░█▀▀░█▀█░░█░░█░░░█▀▀░█░█\"))\n\tfmt.Println(errorStyle.Render(\"  ░▀░░░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀░\"))\n\tfmt.Println()\n}\n"
  },
  {
    "path": "internal/capabilities/generate/merge.go",
    "content": "// this file contains the core merging logic that combines discovered cataloger data with existing cataloger/*/capabilities.yaml files, preserving all manual sections while updating auto-generated fields.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n)\n\nconst genericCatalogerType = \"generic\"\n\n// stripPURLVersion removes the @version suffix from a PURL string\n// e.g., \"pkg:generic/python@version\" -> \"pkg:generic/python\"\nfunc stripPURLVersion(purl string) string {\n\tif idx := strings.LastIndex(purl, \"@\"); idx != -1 {\n\t\treturn purl[:idx]\n\t}\n\treturn purl\n}\n\n// catalogerTypeOverrides specifies catalogers that should have their type manually controlled\n// rather than determined from the discovered cataloger structure.\n// This is useful when a cataloger is discovered as \"generic\" but should be treated as \"custom\"\n// in the YAML (or vice versa).\nvar catalogerTypeOverrides = map[string]string{\n\t// the java cataloger is technically generic (it has parsers), but we want it to be treated as custom since\n\t// these nuances can't automatically be detected, and it requires manual source info\n\t\"java-archive-cataloger\": \"custom\",\n}\n\n// catalogerConfigExceptions specifies catalogers that should NOT have config fields\n// auto-generated even if a config mapping is discovered via AST parsing.\n// This is useful when a cataloger uses a config struct internally but it shouldn't\n// be exposed in the capabilities document.\nvar catalogerConfigExceptions = strset.New(\n\t\"binary-classifier-cataloger\",\n)\n\n// catalogerConfigOverrides specifies manual mappings from cataloger names to config struct names.\n// Use this when the AST parser cannot automatically discover the config linkage, or when you want\n// to explicitly override the discovered mapping.\n// Format: cataloger-name -> \"package.ConfigStructName\"\nvar catalogerConfigOverrides = map[string]string{\n\t\"dotnet-portable-executable-cataloger\": \"dotnet.CatalogerConfig\",\n\t\"nix-store-cataloger\":                  \"nix.Config\",\n}\n\n// ecosystemMapping maps patterns in cataloger names to ecosystem names.\n// order matters - more specific patterns should come first.\ntype ecosystemMapping struct {\n\tpatterns  []string // patterns to match in the cataloger name\n\tecosystem string   // ecosystem to return if any pattern matches\n}\n\n// ecosystemMappings defines the pattern-to-ecosystem mappings.\n// note: order matters - check more specific patterns first\nvar ecosystemMappings = []ecosystemMapping{\n\t// language-based ecosystems\n\t{[]string{\"rust\", \"cargo\"}, \"rust\"},\n\t{[]string{\"javascript\", \"node\", \"npm\"}, \"javascript\"},\n\t{[]string{\"python\"}, \"python\"},\n\t{[]string{\"java\", \"graalvm\"}, \"java\"},\n\t{[]string{\"go-module\", \"golang\"}, \"go\"},\n\t{[]string{\"ruby\", \"gem\"}, \"ruby\"},\n\t{[]string{\"php\", \"composer\", \"pear\", \"pecl\"}, \"php\"},\n\t{[]string{\"dotnet\", \".net\", \"csharp\"}, \"dotnet\"},\n\t{[]string{\"swift\", \"cocoapods\"}, \"swift\"},\n\t{[]string{\"dart\", \"pubspec\"}, \"dart\"},\n\t{[]string{\"elixir\", \"mix\"}, \"elixir\"},\n\t{[]string{\"erlang\", \"rebar\"}, \"erlang\"},\n\t{[]string{\"haskell\", \"cabal\", \"stack\"}, \"haskell\"},\n\t{[]string{\"lua\"}, \"lua\"},\n\t{[]string{\"ocaml\", \"opam\"}, \"ocaml\"},\n\t{[]string{\"r-package\"}, \"r\"},\n\t{[]string{\"swipl\", \"prolog\"}, \"prolog\"},\n\t{[]string{\"cpp\", \"conan\"}, \"c++\"},\n\t{[]string{\"kotlin\"}, \"kotlin\"},\n\n\t// os/distro-based ecosystems\n\t{[]string{\"apk\", \"alpine\"}, \"alpine\"},\n\t{[]string{\"dpkg\", \"deb\", \"debian\"}, \"debian\"},\n\t{[]string{\"rpm\", \"redhat\"}, \"rpm\"},\n\t{[]string{\"alpm\", \"arch\"}, \"arch\"},\n\t{[]string{\"portage\", \"gentoo\"}, \"gentoo\"},\n\t{[]string{\"homebrew\"}, \"homebrew\"},\n\t{[]string{\"snap\"}, \"snap\"},\n\n\t// other ecosystems\n\t{[]string{\"binary\", \"elf\", \"pe-binary\"}, \"binary\"},\n\t{[]string{\"conda\"}, \"conda\"},\n\t{[]string{\"nix\"}, \"nix\"},\n\t{[]string{\"kernel\"}, \"kernel\"},\n\t{[]string{\"bitnami\"}, \"bitnami\"},\n\t{[]string{\"terraform\"}, \"terraform\"},\n\t{[]string{\"github\"}, \"github-actions\"},\n\t{[]string{\"wordpress\"}, \"wordpress\"},\n\t{[]string{\"sbom\"}, \"sbom\"},\n}\n\n// inferEcosystem attempts to determine the ecosystem from a cataloger name\nfunc inferEcosystem(catalogerName string) string {\n\tname := strings.ToLower(catalogerName)\n\n\tfor _, mapping := range ecosystemMappings {\n\t\tfor _, pattern := range mapping.patterns {\n\t\t\tif strings.Contains(name, pattern) {\n\t\t\t\treturn mapping.ecosystem\n\t\t\t}\n\t\t}\n\t}\n\n\t// default\n\treturn \"other\"\n}\n\n// Statistics contains information about the regeneration process\ntype Statistics struct {\n\tTotalGenericCatalogers int\n\tTotalCustomCatalogers  int\n\tTotalParserFunctions   int\n\tNewCatalogers          []string\n\tNewParserFunctions     []string\n\tUpdatedCatalogers      []string\n}\n\n// RegenerateCapabilities updates the distributed YAML files with discovered catalogers\n// while preserving manually-edited capability information.\n// This is exported for use by the generator in generate/main.go\nfunc RegenerateCapabilities(catalogerDir string, repoRoot string) (*Statistics, error) {\n\tstats := &Statistics{}\n\n\t// 1-2. Discover all cataloger data\n\tdiscovered, customCatalogerMetadata, customCatalogerPackageTypes, binaryClassifiers, allCatalogers, err := discoverAllCatalogerData(repoRoot, stats)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// 3. Load existing YAML files - now returns both document and node trees\n\tfmt.Print(\"  → Loading existing capabilities files...\")\n\texisting, existingNodes, err := internal.LoadCapabilities(catalogerDir, repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load existing capabilities: %w\", err)\n\t}\n\tfmt.Printf(\" loaded %d entries\\n\", len(existing.Catalogers))\n\n\t// 3a-3c. Discover and process all config-related information\n\tdiscoveredConfigs, err := discoverAndFilterConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdiscoveredAppConfigs, err := discoverAndConvertAppConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcatalogerConfigMappings, err := LinkCatalogersToConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to link catalogers to configs: %w\", err)\n\t}\n\tfmt.Printf(\"  → Linking catalogers to config structs... found %d mappings\\n\", len(catalogerConfigMappings))\n\n\tfilteredCatalogerConfigMappings := applyConfigMappingFilters(catalogerConfigMappings)\n\n\t// 4. Build updated catalogers list\n\tfmt.Println(\"  → Merging discovered catalogers with existing entries...\")\n\tupdated, orphans, mergeStats := mergeDiscoveredWithExisting(\n\t\tdiscovered,\n\t\tcustomCatalogerMetadata,\n\t\tcustomCatalogerPackageTypes,\n\t\tbinaryClassifiers,\n\t\tallCatalogers,\n\t\texisting,\n\t\tdiscoveredConfigs,\n\t\tdiscoveredAppConfigs,\n\t\tfilteredCatalogerConfigMappings,\n\t)\n\tstats.NewCatalogers = mergeStats.NewCatalogers\n\tstats.NewParserFunctions = mergeStats.NewParserFunctions\n\tstats.UpdatedCatalogers = mergeStats.UpdatedCatalogers\n\tstats.TotalCustomCatalogers = len(allCatalogers) - stats.TotalGenericCatalogers\n\n\t// 5. Check for orphaned parsers (parser functions that were renamed/deleted)\n\tif len(orphans) > 0 {\n\t\treturn nil, fmt.Errorf(\"orphaned parsers detected (parser functions renamed or deleted):\\n%s\\n\\nPlease manually remove these from the capabilities files or restore the parser functions in the code\",\n\t\t\tformatOrphans(orphans))\n\t}\n\n\t// 6. Write back to YAML files with comments, preserving existing node trees\n\tfmt.Print(\"  → Writing updated capabilities files...\")\n\tif err := saveCapabilities(catalogerDir, repoRoot, updated, existingNodes); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to save capabilities: %w\", err)\n\t}\n\tfmt.Println(\" done\")\n\n\treturn stats, nil\n}\n\n// discoverAllCatalogerData discovers all cataloger-related data including generic catalogers, metadata, binary classifiers, and all catalogers\nfunc discoverAllCatalogerData(repoRoot string, stats *Statistics) (\n\tmap[string]DiscoveredCataloger,\n\tmap[string][]string,\n\tmap[string][]string,\n\t[]binary.Classifier, //nolint:staticcheck\n\t[]capabilities.CatalogerInfo,\n\terror,\n) {\n\t// discover generic catalogers\n\tfmt.Print(\"  → Scanning source code for generic catalogers...\")\n\tdiscovered, err := discoverGenericCatalogers(repoRoot)\n\tif err != nil {\n\t\treturn nil, nil, nil, nil, nil, fmt.Errorf(\"failed to discover catalogers: %w\", err)\n\t}\n\tstats.TotalGenericCatalogers = len(discovered)\n\tfmt.Printf(\" found %d\\n\", stats.TotalGenericCatalogers)\n\n\t// discover metadata types\n\tfmt.Print(\"  → Searching for metadata type and package type information...\")\n\tcustomCatalogerMetadata, customCatalogerPackageTypes, err := discoverMetadataTypes(repoRoot, discovered)\n\tif err != nil {\n\t\treturn nil, nil, nil, nil, nil, fmt.Errorf(\"failed to discover metadata types: %w\", err)\n\t}\n\tfmt.Println(\" done\")\n\n\t// extract binary classifiers\n\tfmt.Print(\"  → Extracting binary classifiers...\")\n\tbinaryClassifiers := extractBinaryClassifiers()\n\tfmt.Printf(\" found %d classifiers\\n\", len(binaryClassifiers))\n\n\t// count parser functions\n\tfor _, disc := range discovered {\n\t\tstats.TotalParserFunctions += len(disc.Parsers)\n\t}\n\n\t// get all cataloger info\n\tfmt.Print(\"  → Fetching all cataloger info from syft...\")\n\tallCatalogers, err := internal.AllPackageCatalogerInfo()\n\tif err != nil {\n\t\treturn nil, nil, nil, nil, nil, fmt.Errorf(\"failed to get cataloger info: %w\", err)\n\t}\n\tfmt.Printf(\" found %d total\\n\", len(allCatalogers))\n\n\treturn discovered, customCatalogerMetadata, customCatalogerPackageTypes, binaryClassifiers, allCatalogers, nil\n}\n\n// discoverAndFilterConfigs discovers cataloger config structs, filters by whitelist, and converts to capabilities format\nfunc discoverAndFilterConfigs(repoRoot string) (map[string]capabilities.CatalogerConfigEntry, error) {\n\tfmt.Print(\"  → Discovering cataloger config structs...\")\n\tconfigInfoMap, err := DiscoverConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover configs: %w\", err)\n\t}\n\tfmt.Printf(\" found %d\\n\", len(configInfoMap))\n\n\tfmt.Print(\"  → Filtering configs by pkgcataloging.Config whitelist...\")\n\tallowedConfigs, err := DiscoverAllowedConfigStructs(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover allowed config structs: %w\", err)\n\t}\n\n\t// filter discovered configs to only include allowed ones\n\tfilteredConfigInfoMap := make(map[string]ConfigInfo)\n\tfor key, configInfo := range configInfoMap {\n\t\tif allowedConfigs[key] {\n\t\t\tfilteredConfigInfoMap[key] = configInfo\n\t\t}\n\t}\n\tfmt.Printf(\" %d allowed (filtered %d)\\n\", len(filteredConfigInfoMap), len(configInfoMap)-len(filteredConfigInfoMap))\n\n\t// convert ConfigInfo to CatalogerConfigEntry format for ecosystem YAML files\n\tdiscoveredConfigs := make(map[string]capabilities.CatalogerConfigEntry)\n\tfor key, configInfo := range filteredConfigInfoMap {\n\t\tfields := make([]capabilities.CatalogerConfigFieldEntry, len(configInfo.Fields))\n\t\tfor i, field := range configInfo.Fields {\n\t\t\tfields[i] = capabilities.CatalogerConfigFieldEntry{\n\t\t\t\tKey:         field.Name,\n\t\t\t\tDescription: field.Description,\n\t\t\t\tAppKey:      field.AppKey,\n\t\t\t}\n\t\t}\n\t\tdiscoveredConfigs[key] = capabilities.CatalogerConfigEntry{\n\t\t\tFields: fields,\n\t\t}\n\t}\n\n\treturn discoveredConfigs, nil\n}\n\n// discoverAndConvertAppConfigs discovers app-level config fields and converts them to capabilities format\nfunc discoverAndConvertAppConfigs(repoRoot string) ([]capabilities.ApplicationConfigField, error) {\n\tfmt.Print(\"  → Discovering app-level config fields...\")\n\tappConfigFields, err := DiscoverAppConfigs(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to discover app configs: %w\", err)\n\t}\n\tfmt.Printf(\" found %d\\n\", len(appConfigFields))\n\n\t// convert to ApplicationConfigField format\n\tdiscoveredAppConfigs := make([]capabilities.ApplicationConfigField, len(appConfigFields))\n\tfor i, field := range appConfigFields {\n\t\tdiscoveredAppConfigs[i] = capabilities.ApplicationConfigField{\n\t\t\tKey:          field.Key,\n\t\t\tDescription:  field.Description,\n\t\t\tDefaultValue: field.DefaultValue,\n\t\t}\n\t}\n\n\treturn discoveredAppConfigs, nil\n}\n\n// applyConfigMappingFilters applies exceptions and manual overrides to cataloger config mappings\nfunc applyConfigMappingFilters(catalogerConfigMappings map[string]string) map[string]string {\n\t// filter by exceptions\n\tfmt.Print(\"  → Filtering cataloger config mappings by exceptions...\")\n\tfilteredCatalogerConfigMappings := make(map[string]string)\n\tfilteredCount := 0\n\tfor catalogerName, configName := range catalogerConfigMappings {\n\t\tif catalogerConfigExceptions.Has(catalogerName) {\n\t\t\tfilteredCount++\n\t\t\tcontinue\n\t\t}\n\t\tfilteredCatalogerConfigMappings[catalogerName] = configName\n\t}\n\tif filteredCount > 0 {\n\t\tfmt.Printf(\" filtered %d\\n\", filteredCount)\n\t} else {\n\t\tfmt.Println(\" none\")\n\t}\n\n\t// merge manual overrides\n\tfmt.Print(\"  → Merging manual config overrides...\")\n\toverrideCount := 0\n\tfor catalogerName, configName := range catalogerConfigOverrides {\n\t\tif catalogerConfigExceptions.Has(catalogerName) {\n\t\t\tcontinue\n\t\t}\n\t\tfilteredCatalogerConfigMappings[catalogerName] = configName\n\t\toverrideCount++\n\t}\n\tif overrideCount > 0 {\n\t\tfmt.Printf(\" added %d\\n\", overrideCount)\n\t} else {\n\t\tfmt.Println(\" none\")\n\t}\n\n\treturn filteredCatalogerConfigMappings\n}\n\ntype orphanInfo struct {\n\tcatalogerName  string\n\tparserFunction string\n}\n\ntype mergeStatistics struct {\n\tNewCatalogers      []string\n\tNewParserFunctions []string\n\tUpdatedCatalogers  []string\n}\n\n// CatalogerRegistry encapsulates cataloger lookup data and provides methods for querying cataloger information\ntype CatalogerRegistry struct {\n\tdiscovered map[string]DiscoveredCataloger\n\tall        []capabilities.CatalogerInfo\n\tinfoByName map[string]*capabilities.CatalogerInfo\n}\n\n// NewCatalogerRegistry creates a new registry with the given discovered and all catalogers\nfunc NewCatalogerRegistry(discovered map[string]DiscoveredCataloger, all []capabilities.CatalogerInfo) *CatalogerRegistry {\n\tinfoByName := make(map[string]*capabilities.CatalogerInfo)\n\tfor i := range all {\n\t\tinfoByName[all[i].Name] = &all[i]\n\t}\n\n\treturn &CatalogerRegistry{\n\t\tdiscovered: discovered,\n\t\tall:        all,\n\t\tinfoByName: infoByName,\n\t}\n}\n\n// IsGeneric checks if a cataloger is a discovered generic cataloger and returns it if found\nfunc (r *CatalogerRegistry) IsGeneric(name string) (DiscoveredCataloger, bool) {\n\tdisc, ok := r.discovered[name]\n\treturn disc, ok\n}\n\n// GetInfo returns the cataloger info for the given name, or nil if not found\nfunc (r *CatalogerRegistry) GetInfo(name string) *capabilities.CatalogerInfo {\n\treturn r.infoByName[name]\n}\n\n// DiscoveredCatalogers returns all discovered generic catalogers\nfunc (r *CatalogerRegistry) DiscoveredCatalogers() map[string]DiscoveredCataloger {\n\treturn r.discovered\n}\n\n// AllCatalogers returns all catalogers from the syft cataloger list\nfunc (r *CatalogerRegistry) AllCatalogers() []capabilities.CatalogerInfo {\n\treturn r.all\n}\n\n// EnrichmentData encapsulates metadata enrichment information (metadata types, package types, binary classifiers)\ntype EnrichmentData struct {\n\tmetadata          map[string][]string\n\tpackageTypes      map[string][]string\n\tbinaryClassifiers []binary.Classifier //nolint:staticcheck\n}\n\n// NewEnrichmentData creates a new enrichment data container\nfunc NewEnrichmentData(metadata, packageTypes map[string][]string, binaryClassifiers []binary.Classifier) *EnrichmentData { //nolint:staticcheck\n\treturn &EnrichmentData{\n\t\tmetadata:          metadata,\n\t\tpackageTypes:      packageTypes,\n\t\tbinaryClassifiers: binaryClassifiers,\n\t}\n}\n\n// GetMetadataTypes returns the metadata types for the given cataloger name\nfunc (e *EnrichmentData) GetMetadataTypes(catalogerName string) ([]string, bool) {\n\ttypes, ok := e.metadata[catalogerName]\n\treturn types, ok\n}\n\n// GetPackageTypes returns the package types for the given cataloger name\nfunc (e *EnrichmentData) GetPackageTypes(catalogerName string) ([]string, bool) {\n\ttypes, ok := e.packageTypes[catalogerName]\n\treturn types, ok\n}\n\n// EnrichEntry enriches a cataloger entry with metadata types and package types if available\nfunc (e *EnrichmentData) EnrichEntry(catalogerName string, entry *capabilities.CatalogerEntry) {\n\t// update metadata types if available\n\tif types, ok := e.GetMetadataTypes(catalogerName); ok {\n\t\tentry.MetadataTypes = types\n\t\t// generate JSON schema types from metadata types\n\t\tentry.JSONSchemaTypes = convertToJSONSchemaTypesFromMetadata(types)\n\t}\n\t// update package types if available\n\tif types, ok := e.GetPackageTypes(catalogerName); ok {\n\t\tentry.PackageTypes = types\n\t}\n}\n\n// convertToJSONSchemaTypesFromMetadata converts Go struct names to UpperCamelCase JSON schema names\nfunc convertToJSONSchemaTypesFromMetadata(metadataTypes []string) []string {\n\tif len(metadataTypes) == 0 {\n\t\treturn nil\n\t}\n\n\tresult := make([]string, 0, len(metadataTypes))\n\tfor _, typeName := range metadataTypes {\n\t\tjsonName := packagemetadata.JSONNameFromString(typeName)\n\t\tif jsonName != \"\" {\n\t\t\tcamelCase := packagemetadata.ToUpperCamelCase(jsonName)\n\t\t\tresult = append(result, camelCase)\n\t\t}\n\t}\n\treturn result\n}\n\n// EnrichWithBinaryClassifier enriches an entry with binary classifier detectors if it's the binary-classifier-cataloger\nfunc (e *EnrichmentData) EnrichWithBinaryClassifier(catalogerName string, entry *capabilities.CatalogerEntry) {\n\t// special handling for binary-classifier-cataloger: auto-generate one detector per classifier\n\tif catalogerName == \"binary-classifier-cataloger\" && len(e.binaryClassifiers) > 0 {\n\t\tvar detectors []capabilities.Detector\n\t\tfor _, classifier := range e.binaryClassifiers {\n\t\t\t// convert CPEs to strings\n\t\t\tcpeStrings := make([]string, len(classifier.CPEs))\n\t\t\tfor i, c := range classifier.CPEs {\n\t\t\t\tcpeStrings[i] = c.Attributes.BindToFmtString()\n\t\t\t}\n\n\t\t\t// strip @version from PURL\n\t\t\tpurlStr := stripPURLVersion(classifier.PURL.String())\n\n\t\t\tpackages := []capabilities.DetectorPackageInfo{\n\t\t\t\t{\n\t\t\t\t\tClass: classifier.Class,\n\t\t\t\t\tName:  classifier.Package,\n\t\t\t\t\tPURL:  purlStr,\n\t\t\t\t\tCPEs:  cpeStrings,\n\t\t\t\t\tType:  \"BinaryPkg\",\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tfor _, o := range binaryClassifierOverrides[classifier.Class] {\n\t\t\t\tpackages = append(packages, capabilities.DetectorPackageInfo{\n\t\t\t\t\tClass: o.Class,\n\t\t\t\t\tName:  o.Package,\n\t\t\t\t\tPURL:  stripPURLVersion(o.PURL),\n\t\t\t\t\tCPEs:  o.CPEs,\n\t\t\t\t\tType:  \"BinaryPkg\",\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdetectors = append(detectors, capabilities.Detector{\n\t\t\t\tMethod:   \"glob\",\n\t\t\t\tCriteria: []string{classifier.FileGlob},\n\t\t\t\tPackages: packages,\n\t\t\t})\n\t\t}\n\t\tentry.Detectors = detectors\n\t}\n}\n\n// CatalogerMerger orchestrates the merging of discovered catalogers with existing capabilities\ntype CatalogerMerger struct {\n\tregistry                *CatalogerRegistry\n\tenrichment              *EnrichmentData\n\texisting                *capabilities.Document\n\tcatalogerConfigMappings map[string]string // catalogerName -> config struct name\n\n\t// internal merge state\n\tupdated             *capabilities.Document\n\tprocessedCatalogers map[string]bool\n\torphans             []orphanInfo\n\tstats               *mergeStatistics\n}\n\n// NewCatalogerMerger creates a new merger with the given registry, enrichment data, and existing document\nfunc NewCatalogerMerger(registry *CatalogerRegistry, enrichment *EnrichmentData, existing *capabilities.Document, catalogerConfigMappings map[string]string) *CatalogerMerger {\n\treturn &CatalogerMerger{\n\t\tregistry:                registry,\n\t\tenrichment:              enrichment,\n\t\texisting:                existing,\n\t\tcatalogerConfigMappings: catalogerConfigMappings,\n\t\tupdated:                 &capabilities.Document{},\n\t\tprocessedCatalogers:     make(map[string]bool),\n\t\tstats:                   &mergeStatistics{},\n\t}\n}\n\n// Merge performs the merge operation and returns the updated document, orphans, and statistics.\n// Note: Configs and ApplicationConfig must be set on the merger's updated document before or after calling Merge.\n// They are AUTO-GENERATED sections that are completely replaced during regeneration.\nfunc (m *CatalogerMerger) Merge() (*capabilities.Document, []orphanInfo, *mergeStatistics) {\n\t// process catalogers\n\tm.processExistingCatalogers()\n\tm.addNewGenericCatalogers()\n\tm.addNewCustomCatalogers()\n\treturn m.updated, m.orphans, m.stats\n}\n\n// processExistingCatalogers processes all existing catalogers in their original order\nfunc (m *CatalogerMerger) processExistingCatalogers() {\n\tfor i := range m.existing.Catalogers {\n\t\texistingEntry := &m.existing.Catalogers[i]\n\t\tcatalogerName := existingEntry.Name\n\n\t\tdisc, isGeneric := m.registry.IsGeneric(catalogerName)\n\t\tinfo := m.registry.GetInfo(catalogerName)\n\n\t\tswitch {\n\t\tcase isGeneric:\n\t\t\t// existing generic cataloger - update auto-gen fields, preserve manual, check for orphans\n\t\t\tm.processGenericCataloger(existingEntry, disc, info)\n\n\t\tcase info != nil:\n\t\t\t// existing custom cataloger - preserve but update ecosystem, selectors, metadata types, and package types\n\t\t\tm.processCustomCataloger(existingEntry, info)\n\n\t\tdefault:\n\t\t\t// cataloger no longer exists in syft - keep it as-is (user may have added manually)\n\t\t\tm.updated.Catalogers = append(m.updated.Catalogers, *existingEntry)\n\t\t}\n\n\t\tm.processedCatalogers[catalogerName] = true\n\t}\n}\n\n// addNewGenericCatalogers appends any new generic catalogers that weren't in existing\nfunc (m *CatalogerMerger) addNewGenericCatalogers() {\n\tfor catalogerName, disc := range m.registry.DiscoveredCatalogers() {\n\t\tif m.processedCatalogers[catalogerName] {\n\t\t\tcontinue\n\t\t}\n\n\t\tinfo := m.registry.GetInfo(catalogerName)\n\t\t// new generic cataloger - create with template\n\t\tentry := createTemplateEntry(disc, info)\n\t\t// update config field from discovered mappings\n\t\tif configName, hasConfig := m.catalogerConfigMappings[catalogerName]; hasConfig {\n\t\t\tentry.Config = configName\n\t\t}\n\t\tm.updated.Catalogers = append(m.updated.Catalogers, entry)\n\t\tm.stats.NewCatalogers = append(m.stats.NewCatalogers, catalogerName)\n\t\tfor _, parser := range disc.Parsers {\n\t\t\tm.stats.NewParserFunctions = append(m.stats.NewParserFunctions, fmt.Sprintf(\"%s/%s\", catalogerName, parser.ParserFunction))\n\t\t}\n\n\t\tm.processedCatalogers[catalogerName] = true\n\t}\n}\n\n// addNewCustomCatalogers appends any new custom catalogers from syft cataloger list\nfunc (m *CatalogerMerger) addNewCustomCatalogers() {\n\tfor _, catalogerInfo := range m.registry.AllCatalogers() {\n\t\tcatalogerName := catalogerInfo.Name\n\t\tif m.processedCatalogers[catalogerName] {\n\t\t\tcontinue\n\t\t}\n\n\t\t// new custom cataloger - create template entry\n\t\tentry := capabilities.CatalogerEntry{\n\t\t\tEcosystem: inferEcosystem(catalogerName),\n\t\t\tName:      catalogerName,\n\t\t\tType:      \"custom\",\n\t\t\tSource: capabilities.Source{\n\t\t\t\tFile:     \"\", // must be filled manually\n\t\t\t\tFunction: \"\", // must be filled manually\n\t\t\t},\n\t\t\tSelectors:    catalogerInfo.Selectors,\n\t\t\tCapabilities: capabilities.CapabilitySet{}, // empty array - must be filled manually\n\t\t}\n\n\t\t// update config field from discovered mappings\n\t\tif configName, hasConfig := m.catalogerConfigMappings[catalogerName]; hasConfig {\n\t\t\tentry.Config = configName\n\t\t}\n\n\t\t// enrich with metadata and package types\n\t\tm.enrichment.EnrichEntry(catalogerName, &entry)\n\n\t\t// fallback: if we have metadata_types but no json_schema_types, convert them\n\t\t// this handles cases where metadata_types exist in YAML but no enrichment data\n\t\tif len(entry.MetadataTypes) > 0 && len(entry.JSONSchemaTypes) == 0 {\n\t\t\tentry.JSONSchemaTypes = convertToJSONSchemaTypesFromMetadata(entry.MetadataTypes)\n\t\t}\n\n\t\t// enrich with binary classifier globs\n\t\tm.enrichment.EnrichWithBinaryClassifier(catalogerName, &entry)\n\n\t\tm.updated.Catalogers = append(m.updated.Catalogers, entry)\n\t\tm.stats.NewCatalogers = append(m.stats.NewCatalogers, catalogerName)\n\n\t\tm.processedCatalogers[catalogerName] = true\n\t}\n}\n\n// processGenericCataloger processes an existing generic cataloger entry\nfunc (m *CatalogerMerger) processGenericCataloger(existingEntry *capabilities.CatalogerEntry, disc DiscoveredCataloger, info *capabilities.CatalogerInfo) {\n\tentry, catalogerOrphans, newParsers := updateEntry(existingEntry, disc, info, m.catalogerConfigMappings)\n\n\t// fallback for catalogers with type override to custom but processed as generic\n\t// these may have cataloger-level metadata_types that need json_schema_types\n\tif len(entry.MetadataTypes) > 0 && len(entry.JSONSchemaTypes) == 0 {\n\t\tentry.JSONSchemaTypes = convertToJSONSchemaTypesFromMetadata(entry.MetadataTypes)\n\t}\n\n\tm.updated.Catalogers = append(m.updated.Catalogers, entry)\n\tm.orphans = append(m.orphans, catalogerOrphans...)\n\tif len(newParsers) > 0 || len(catalogerOrphans) > 0 {\n\t\tm.stats.UpdatedCatalogers = append(m.stats.UpdatedCatalogers, existingEntry.Name)\n\t}\n\tfor _, parser := range newParsers {\n\t\tm.stats.NewParserFunctions = append(m.stats.NewParserFunctions, fmt.Sprintf(\"%s/%s\", existingEntry.Name, parser))\n\t}\n}\n\n// processCustomCataloger processes an existing custom cataloger entry\nfunc (m *CatalogerMerger) processCustomCataloger(existingEntry *capabilities.CatalogerEntry, info *capabilities.CatalogerInfo) {\n\tentry := *existingEntry\n\t// only infer ecosystem if not manually set (ecosystem is MANUAL)\n\tif existingEntry.Ecosystem == \"\" {\n\t\tentry.Ecosystem = inferEcosystem(existingEntry.Name)\n\t}\n\tentry.Selectors = info.Selectors\n\n\t// update config field from discovered mappings (AUTO-GENERATED)\n\tif configName, hasConfig := m.catalogerConfigMappings[existingEntry.Name]; hasConfig {\n\t\tentry.Config = configName\n\t}\n\n\t// enrich with metadata and package types\n\tm.enrichment.EnrichEntry(existingEntry.Name, &entry)\n\n\t// fallback: if we have metadata_types but no json_schema_types, convert them\n\t// this handles cases where metadata_types exist in YAML but no enrichment data\n\tif len(entry.MetadataTypes) > 0 && len(entry.JSONSchemaTypes) == 0 {\n\t\tentry.JSONSchemaTypes = convertToJSONSchemaTypesFromMetadata(entry.MetadataTypes)\n\t}\n\n\t// enrich with binary classifier globs\n\tm.enrichment.EnrichWithBinaryClassifier(existingEntry.Name, &entry)\n\n\tm.updated.Catalogers = append(m.updated.Catalogers, entry)\n}\n\n// mergeDiscoveredWithExisting combines discovered cataloger information with existing capabilities,\n// preserving manual sections (capabilities) while updating AUTO-GENERATED sections.\n//\n// The configs and appConfigs parameters are AUTO-GENERATED sections that completely replace\n// any existing configs/app-config data in the ecosystem YAML files.\n//\n// The catalogerConfigMappings parameter maps cataloger names to their config struct names\n// (e.g., \"go-module-binary-cataloger\" -> \"golang.CatalogerConfig\").\nfunc mergeDiscoveredWithExisting(\n\tdiscovered map[string]DiscoveredCataloger,\n\tcustomMetadata map[string][]string,\n\tcustomPackageTypes map[string][]string,\n\tbinaryClassifiers []binary.Classifier, //nolint:staticcheck\n\tallCatalogers []capabilities.CatalogerInfo,\n\texisting *capabilities.Document,\n\tconfigs map[string]capabilities.CatalogerConfigEntry,\n\tappConfigs []capabilities.ApplicationConfigField,\n\tcatalogerConfigMappings map[string]string,\n) (*capabilities.Document, []orphanInfo, *mergeStatistics) {\n\tregistry := NewCatalogerRegistry(discovered, allCatalogers)\n\tenrichment := NewEnrichmentData(customMetadata, customPackageTypes, binaryClassifiers)\n\tmerger := NewCatalogerMerger(registry, enrichment, existing, catalogerConfigMappings)\n\n\t// set the AUTO-GENERATED config sections\n\t// these completely replace any existing data (not merged)\n\tmerger.updated.Configs = configs\n\tmerger.updated.ApplicationConfig = appConfigs\n\n\treturn merger.Merge()\n}\n\nfunc updateEntry(existing *capabilities.CatalogerEntry, discovered DiscoveredCataloger, info *capabilities.CatalogerInfo, catalogerConfigMappings map[string]string) (capabilities.CatalogerEntry, []orphanInfo, []string) {\n\tupdated := *existing\n\n\t// update AUTO-GENERATED fields\n\tupdated.Name = discovered.Name\n\n\t// check if there's a type override for this cataloger\n\tif overrideType, hasOverride := catalogerTypeOverrides[discovered.Name]; hasOverride {\n\t\tupdated.Type = overrideType\n\t} else {\n\t\tupdated.Type = discovered.Type\n\t}\n\n\tupdated.Source = capabilities.Source{\n\t\tFile:     discovered.SourceFile,\n\t\tFunction: discovered.SourceFunction,\n\t}\n\n\t// update selectors from cataloger info\n\tif info != nil {\n\t\tupdated.Selectors = info.Selectors\n\t}\n\n\t// update config field from discovered mappings (AUTO-GENERATED)\n\tif configName, hasConfig := catalogerConfigMappings[discovered.Name]; hasConfig {\n\t\tupdated.Config = configName\n\t} else {\n\t\t// clear config if no mapping exists (it may have been removed)\n\t\tupdated.Config = \"\"\n\t}\n\n\t// only infer ecosystem if not manually set (ecosystem is MANUAL)\n\tif existing.Ecosystem == \"\" {\n\t\tupdated.Ecosystem = inferEcosystem(discovered.Name)\n\t}\n\n\tvar orphans []orphanInfo\n\tvar newParsers []string\n\n\t// update parsers only if the final type is generic (not overridden to custom)\n\t// if a cataloger is overridden from generic to custom, we don't update parsers\n\tif discovered.Type == genericCatalogerType && updated.Type == genericCatalogerType {\n\t\tupdatedParsers, parserOrphans, newParserFuncs := updateParsers(existing.Parsers, discovered.Parsers, discovered.Name)\n\t\tupdated.Parsers = updatedParsers\n\t\torphans = append(orphans, parserOrphans...)\n\t\tnewParsers = newParserFuncs\n\t}\n\n\treturn updated, orphans, newParsers\n}\n\nfunc updateParsers(existingParsers []capabilities.Parser, discoveredParsers []DiscoveredParser, catalogerName string) ([]capabilities.Parser, []orphanInfo, []string) {\n\tvar updated []capabilities.Parser\n\tvar orphans []orphanInfo\n\tvar newParserFuncs []string\n\n\t// create lookup for discovered parsers by parser function\n\tdiscoveredByParserFunc := make(map[string]*DiscoveredParser)\n\tfor i := range discoveredParsers {\n\t\tdiscoveredByParserFunc[discoveredParsers[i].ParserFunction] = &discoveredParsers[i]\n\t}\n\n\t// create lookup for existing parsers by parser function\n\texistingByParserFunc := make(map[string]*capabilities.Parser)\n\tfor i := range existingParsers {\n\t\texistingByParserFunc[existingParsers[i].ParserFunction] = &existingParsers[i]\n\t}\n\n\t// process all discovered parsers\n\tfor _, discParser := range discoveredParsers {\n\t\texistingParser := existingByParserFunc[discParser.ParserFunction]\n\n\t\tif existingParser == nil {\n\t\t\t// new parser - create with empty capabilities\n\t\t\tupdated = append(updated, createTemplateParser(discParser))\n\t\t\tnewParserFuncs = append(newParserFuncs, discParser.ParserFunction)\n\t\t} else {\n\t\t\t// update auto-gen fields, preserve capabilities\n\t\t\tp := *existingParser\n\t\t\tp.Detector.Method = discParser.Method\n\t\t\tp.Detector.Criteria = discParser.Criteria\n\n\t\t\t// only update metadata/package types if discovered parser has them\n\t\t\t// this preserves existing YAML values when no test observations exist\n\t\t\tif len(discParser.MetadataTypes) > 0 {\n\t\t\t\tp.MetadataTypes = discParser.MetadataTypes\n\t\t\t\tp.JSONSchemaTypes = discParser.JSONSchemaTypes\n\t\t\t} else if len(p.MetadataTypes) > 0 && len(p.JSONSchemaTypes) == 0 {\n\t\t\t\t// fallback: if parser has metadata_types but no json_schema_types, convert them\n\t\t\t\tp.JSONSchemaTypes = convertToJSONSchemaTypesFromMetadata(p.MetadataTypes)\n\t\t\t}\n\n\t\t\tif len(discParser.PackageTypes) > 0 {\n\t\t\t\tp.PackageTypes = discParser.PackageTypes\n\t\t\t}\n\n\t\t\t// p.Capabilities is preserved from existing\n\t\t\tupdated = append(updated, p)\n\t\t}\n\n\t\t// mark this parser as processed\n\t\tdelete(existingByParserFunc, discParser.ParserFunction)\n\t}\n\n\t// any remaining existing parsers are orphans (parser function was renamed/deleted)\n\tfor parserFunc := range existingByParserFunc {\n\t\torphans = append(orphans, orphanInfo{\n\t\t\tcatalogerName:  catalogerName,\n\t\t\tparserFunction: parserFunc,\n\t\t})\n\t}\n\n\treturn updated, orphans, newParserFuncs\n}\n\nfunc createTemplateEntry(disc DiscoveredCataloger, info *capabilities.CatalogerInfo) capabilities.CatalogerEntry {\n\t// determine type, checking for overrides first\n\tcatalogerType := disc.Type\n\tif overrideType, hasOverride := catalogerTypeOverrides[disc.Name]; hasOverride {\n\t\tcatalogerType = overrideType\n\t}\n\n\tentry := capabilities.CatalogerEntry{\n\t\tEcosystem: inferEcosystem(disc.Name),\n\t\tName:      disc.Name,\n\t\tType:      catalogerType,\n\t\tSource: capabilities.Source{\n\t\t\tFile:     disc.SourceFile,\n\t\t\tFunction: disc.SourceFunction,\n\t\t},\n\t}\n\n\t// add selectors from cataloger info\n\tif info != nil {\n\t\tentry.Selectors = info.Selectors\n\t}\n\n\t// use the determined catalogerType (which may be overridden) to structure the entry\n\tswitch catalogerType {\n\tcase genericCatalogerType:\n\t\tfor _, discParser := range disc.Parsers {\n\t\t\tentry.Parsers = append(entry.Parsers, createTemplateParser(discParser))\n\t\t}\n\tcase \"custom\":\n\t\t// custom cataloger with empty capabilities (must be filled manually)\n\t\tentry.Capabilities = capabilities.CapabilitySet{}\n\t}\n\n\treturn entry\n}\n\nfunc createTemplateParser(disc DiscoveredParser) capabilities.Parser {\n\treturn capabilities.Parser{\n\t\tParserFunction: disc.ParserFunction,\n\t\tDetector: capabilities.Detector{\n\t\t\tMethod:   disc.Method,\n\t\t\tCriteria: disc.Criteria,\n\t\t},\n\t\tMetadataTypes:   disc.MetadataTypes,\n\t\tPackageTypes:    disc.PackageTypes,\n\t\tJSONSchemaTypes: disc.JSONSchemaTypes,\n\t\tCapabilities:    capabilities.CapabilitySet{}, // empty array - must be filled manually\n\t}\n}\n\nfunc formatOrphans(orphans []orphanInfo) string {\n\tvar lines []string\n\tfor _, o := range orphans {\n\t\tlines = append(lines, fmt.Sprintf(\"  - cataloger: %s, parser function: %s\", o.catalogerName, o.parserFunction))\n\t}\n\treturn strings.Join(lines, \"\\n\")\n}\n"
  },
  {
    "path": "internal/capabilities/generate/merge_test.go",
    "content": "package main\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n)\n\n// TestCapabilitiesAreUpToDate verifies that cataloger/*/capabilities.yaml files are up to date by running regeneration and checking\n// for uncommitted changes. This test only runs in CI to catch cases where code changed but capabilities weren't regenerated.\nfunc TestCapabilitiesAreUpToDate(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\tif os.Getenv(\"CI\") == \"\" {\n\t\tt.Skip(\"skipping regeneration test in local environment\")\n\t}\n\n\trepoRoot, err := internal.RepoRoot()\n\trequire.NoError(t, err)\n\n\tcatalogerDir := internal.CatalogerDir(repoRoot)\n\n\t// regenerate should not fail\n\t_, err = RegenerateCapabilities(catalogerDir, repoRoot)\n\trequire.NoError(t, err)\n\n\t// verify files haven't changed (i.e., they were already up to date)\n\tcmd := exec.Command(\"git\", \"diff\", \"--exit-code\", catalogerDir)\n\tcmd.Dir = repoRoot\n\terr = cmd.Run()\n\trequire.NoError(t, err, \"cataloger/*/capabilities.yaml files have uncommitted changes after regeneration. Run 'go generate ./internal/capabilities' locally and commit the changes.\")\n}\n\nfunc TestMergeConfigSections(t *testing.T) {\n\ttests := []struct {\n\t\tname               string\n\t\texistingDoc        *capabilities.Document\n\t\tnewConfigs         map[string]capabilities.CatalogerConfigEntry\n\t\tnewAppConfigs      []capabilities.ApplicationConfigField\n\t\texpectedConfigs    map[string]capabilities.CatalogerConfigEntry\n\t\texpectedAppConfigs []capabilities.ApplicationConfigField\n\t\tdescription        string\n\t}{\n\t\t{\n\t\t\tname:        \"new configs replace existing configs\",\n\t\t\tdescription: \"configs and app-config are AUTO-GENERATED, so new data should completely replace old\",\n\t\t\texistingDoc: &capabilities.Document{\n\t\t\t\tConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\t\"golang.OldConfig\": {\n\t\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t\t{Key: \"OldField\", Description: \"old field\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApplicationConfig: []capabilities.ApplicationConfigField{\n\t\t\t\t\t{Key: \"golang.old-config\", Description: \"old config\"},\n\t\t\t\t},\n\t\t\t\tCatalogers: []capabilities.CatalogerEntry{},\n\t\t\t},\n\t\t\tnewConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\"golang.CatalogerConfig\": {\n\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t{Key: \"SearchLocalModCacheLicenses\", Description: \"search local mod cache\", AppKey: \"golang.search-local-mod-cache-licenses\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tnewAppConfigs: []capabilities.ApplicationConfigField{\n\t\t\t\t{Key: \"golang.search-local-mod-cache-licenses\", Description: \"Search licenses in local mod cache\", DefaultValue: false},\n\t\t\t},\n\t\t\texpectedConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\"golang.CatalogerConfig\": {\n\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t{Key: \"SearchLocalModCacheLicenses\", Description: \"search local mod cache\", AppKey: \"golang.search-local-mod-cache-licenses\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedAppConfigs: []capabilities.ApplicationConfigField{\n\t\t\t\t{Key: \"golang.search-local-mod-cache-licenses\", Description: \"Search licenses in local mod cache\", DefaultValue: false},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"empty new configs clears existing configs\",\n\t\t\tdescription: \"if no configs are discovered, the sections should be empty (not nil)\",\n\t\t\texistingDoc: &capabilities.Document{\n\t\t\t\tConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\t\"golang.OldConfig\": {\n\t\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t\t{Key: \"OldField\", Description: \"old field\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApplicationConfig: []capabilities.ApplicationConfigField{\n\t\t\t\t\t{Key: \"golang.old-config\", Description: \"old config\"},\n\t\t\t\t},\n\t\t\t\tCatalogers: []capabilities.CatalogerEntry{},\n\t\t\t},\n\t\t\tnewConfigs:         map[string]capabilities.CatalogerConfigEntry{},\n\t\t\tnewAppConfigs:      []capabilities.ApplicationConfigField{},\n\t\t\texpectedConfigs:    map[string]capabilities.CatalogerConfigEntry{},\n\t\t\texpectedAppConfigs: []capabilities.ApplicationConfigField{},\n\t\t},\n\t\t{\n\t\t\tname:        \"nil existing configs are replaced with new configs\",\n\t\t\tdescription: \"first-time generation should populate configs\",\n\t\t\texistingDoc: &capabilities.Document{\n\t\t\t\tCatalogers: []capabilities.CatalogerEntry{},\n\t\t\t},\n\t\t\tnewConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\"python.CatalogerConfig\": {\n\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t{Key: \"GuessUnpinnedRequirements\", Description: \"guess unpinned reqs\", AppKey: \"python.guess-unpinned-requirements\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tnewAppConfigs: []capabilities.ApplicationConfigField{\n\t\t\t\t{Key: \"python.guess-unpinned-requirements\", Description: \"Guess unpinned requirements\", DefaultValue: false},\n\t\t\t},\n\t\t\texpectedConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\t\"python.CatalogerConfig\": {\n\t\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t\t{Key: \"GuessUnpinnedRequirements\", Description: \"guess unpinned reqs\", AppKey: \"python.guess-unpinned-requirements\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedAppConfigs: []capabilities.ApplicationConfigField{\n\t\t\t\t{Key: \"python.guess-unpinned-requirements\", Description: \"Guess unpinned requirements\", DefaultValue: false},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// use mergeDiscoveredWithExisting to properly test the integration\n\t\t\tupdated, _, _ := mergeDiscoveredWithExisting(\n\t\t\t\tmap[string]DiscoveredCataloger{},\n\t\t\t\tmap[string][]string{},\n\t\t\t\tmap[string][]string{},\n\t\t\t\t[]binary.Classifier{},\n\t\t\t\t[]capabilities.CatalogerInfo{},\n\t\t\t\ttt.existingDoc,\n\t\t\t\ttt.newConfigs,\n\t\t\t\ttt.newAppConfigs,\n\t\t\t\tmap[string]string{},\n\t\t\t)\n\n\t\t\t// verify configs were replaced (not merged)\n\t\t\tif diff := cmp.Diff(tt.expectedConfigs, updated.Configs); diff != \"\" {\n\t\t\t\tt.Errorf(\"Configs mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\n\t\t\t// verify app-configs were replaced (not merged)\n\t\t\tif diff := cmp.Diff(tt.expectedAppConfigs, updated.ApplicationConfig); diff != \"\" {\n\t\t\t\tt.Errorf(\"ApplicationConfig mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMergeCatalogerConfigField(t *testing.T) {\n\ttests := []struct {\n\t\tname                    string\n\t\texistingEntry           capabilities.CatalogerEntry\n\t\tdiscoveredInfo          DiscoveredCataloger\n\t\tcatalogerConfigMappings map[string]string\n\t\texpectedConfig          string\n\t}{\n\t\t{\n\t\t\tname: \"config field is updated from discovered data\",\n\t\t\texistingEntry: capabilities.CatalogerEntry{\n\t\t\t\tName:   \"go-module-binary-cataloger\",\n\t\t\t\tConfig: \"\", // was empty\n\t\t\t},\n\t\t\tdiscoveredInfo: DiscoveredCataloger{\n\t\t\t\tName: \"go-module-binary-cataloger\",\n\t\t\t\tType: \"generic\",\n\t\t\t},\n\t\t\tcatalogerConfigMappings: map[string]string{\n\t\t\t\t\"go-module-binary-cataloger\": \"golang.CatalogerConfig\",\n\t\t\t},\n\t\t\texpectedConfig: \"golang.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname: \"config field is replaced if different\",\n\t\t\texistingEntry: capabilities.CatalogerEntry{\n\t\t\t\tName:   \"go-module-binary-cataloger\",\n\t\t\t\tConfig: \"golang.OldConfig\",\n\t\t\t},\n\t\t\tdiscoveredInfo: DiscoveredCataloger{\n\t\t\t\tName: \"go-module-binary-cataloger\",\n\t\t\t\tType: \"generic\",\n\t\t\t},\n\t\t\tcatalogerConfigMappings: map[string]string{\n\t\t\t\t\"go-module-binary-cataloger\": \"golang.NewConfig\",\n\t\t\t},\n\t\t\texpectedConfig: \"golang.NewConfig\",\n\t\t},\n\t\t{\n\t\t\tname: \"config field is cleared if no mapping exists\",\n\t\t\texistingEntry: capabilities.CatalogerEntry{\n\t\t\t\tName:   \"go-module-binary-cataloger\",\n\t\t\t\tConfig: \"golang.OldConfig\",\n\t\t\t},\n\t\t\tdiscoveredInfo: DiscoveredCataloger{\n\t\t\t\tName: \"go-module-binary-cataloger\",\n\t\t\t\tType: \"generic\",\n\t\t\t},\n\t\t\tcatalogerConfigMappings: map[string]string{},\n\t\t\texpectedConfig:          \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// simulate updateEntry which should update the Config field\n\t\t\tupdated, _, _ := updateEntry(&tt.existingEntry, tt.discoveredInfo, nil, tt.catalogerConfigMappings)\n\n\t\t\trequire.Equal(t, tt.expectedConfig, updated.Config)\n\t\t})\n\t}\n}\n\nfunc TestMergePreservesManualCapabilities(t *testing.T) {\n\t// ensure that while we update configs (AUTO-GENERATED),\n\t// we still preserve capabilities (MANUAL)\n\texistingDoc := &capabilities.Document{\n\t\tConfigs: map[string]capabilities.CatalogerConfigEntry{\n\t\t\t\"golang.OldConfig\": {\n\t\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t\t{Key: \"OldField\", Description: \"old\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tCatalogers: []capabilities.CatalogerEntry{\n\t\t\t{\n\t\t\t\tName: \"test-cataloger\",\n\t\t\t\tType: \"generic\",\n\t\t\t\tParsers: []capabilities.Parser{\n\t\t\t\t\t{\n\t\t\t\t\t\tParserFunction: \"parseTest\",\n\t\t\t\t\t\tCapabilities: capabilities.CapabilitySet{\n\t\t\t\t\t\t\t{Name: \"license\", Default: true}, // manual value\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tdiscovered := map[string]DiscoveredCataloger{\n\t\t\"test-cataloger\": {\n\t\t\tName: \"test-cataloger\",\n\t\t\tType: \"generic\",\n\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t{\n\t\t\t\t\tParserFunction: \"parseTest\",\n\t\t\t\t\tMethod:         \"glob\",\n\t\t\t\t\tCriteria:       []string{\"**/*.test\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tnewConfigs := map[string]capabilities.CatalogerConfigEntry{\n\t\t\"golang.NewConfig\": {\n\t\t\tFields: []capabilities.CatalogerConfigFieldEntry{\n\t\t\t\t{Key: \"NewField\", Description: \"new\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tupdated, _, _ := mergeDiscoveredWithExisting(\n\t\tdiscovered,\n\t\tmap[string][]string{},\n\t\tmap[string][]string{},\n\t\t[]binary.Classifier{},\n\t\t[]capabilities.CatalogerInfo{\n\t\t\t{Name: \"test-cataloger\", Selectors: []string{\"test\"}},\n\t\t},\n\t\texistingDoc,\n\t\tnewConfigs,\n\t\t[]capabilities.ApplicationConfigField{},\n\t\tmap[string]string{},\n\t)\n\n\t// verify configs were replaced\n\trequire.Len(t, updated.Configs, 1)\n\t_, hasOld := updated.Configs[\"golang.OldConfig\"]\n\trequire.False(t, hasOld, \"old config should be removed\")\n\t_, hasNew := updated.Configs[\"golang.NewConfig\"]\n\trequire.True(t, hasNew, \"new config should be present\")\n\n\t// verify capabilities were preserved\n\trequire.Len(t, updated.Catalogers, 1)\n\trequire.Len(t, updated.Catalogers[0].Parsers, 1)\n\tparser := updated.Catalogers[0].Parsers[0]\n\trequire.Len(t, parser.Capabilities, 1)\n\trequire.Equal(t, \"license\", parser.Capabilities[0].Name, \"manual capability field should be preserved\")\n\trequire.Equal(t, true, parser.Capabilities[0].Default, \"manual capability value should be preserved\")\n\n\t// verify AUTO-GENERATED parser fields were updated\n\trequire.Equal(t, \"glob\", string(parser.Detector.Method))\n\trequire.Equal(t, []string{\"**/*.test\"}, parser.Detector.Criteria)\n}\n\nfunc TestCatalogerConfigFieldUpdatedForNewCatalogers(t *testing.T) {\n\ttests := []struct {\n\t\tname                    string\n\t\tcatalogerName           string\n\t\tcatalogerType           string\n\t\tcatalogerConfigMappings map[string]string\n\t\texpectedConfig          string\n\t}{\n\t\t{\n\t\t\tname:          \"new generic cataloger gets config from mapping\",\n\t\t\tcatalogerName: \"go-module-binary-cataloger\",\n\t\t\tcatalogerType: \"generic\",\n\t\t\tcatalogerConfigMappings: map[string]string{\n\t\t\t\t\"go-module-binary-cataloger\": \"golang.CatalogerConfig\",\n\t\t\t},\n\t\t\texpectedConfig: \"golang.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:          \"new custom cataloger gets config from mapping\",\n\t\t\tcatalogerName: \"java-archive-cataloger\",\n\t\t\tcatalogerType: \"custom\",\n\t\t\tcatalogerConfigMappings: map[string]string{\n\t\t\t\t\"java-archive-cataloger\": \"java.CatalogerConfig\",\n\t\t\t},\n\t\t\texpectedConfig: \"java.CatalogerConfig\",\n\t\t},\n\t\t{\n\t\t\tname:                    \"new cataloger without mapping has empty config\",\n\t\t\tcatalogerName:           \"python-cataloger\",\n\t\t\tcatalogerType:           \"generic\",\n\t\t\tcatalogerConfigMappings: map[string]string{},\n\t\t\texpectedConfig:          \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// test for generic catalogers\n\t\t\tif tt.catalogerType == \"generic\" {\n\t\t\t\tdiscovered := map[string]DiscoveredCataloger{\n\t\t\t\t\ttt.catalogerName: {\n\t\t\t\t\t\tName: tt.catalogerName,\n\t\t\t\t\t\tType: \"generic\",\n\t\t\t\t\t\tParsers: []DiscoveredParser{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tParserFunction: \"parseTest\",\n\t\t\t\t\t\t\t\tMethod:         \"glob\",\n\t\t\t\t\t\t\t\tCriteria:       []string{\"**/*.test\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tupdated, _, _ := mergeDiscoveredWithExisting(\n\t\t\t\t\tdiscovered,\n\t\t\t\t\tmap[string][]string{},\n\t\t\t\t\tmap[string][]string{},\n\t\t\t\t\t[]binary.Classifier{},\n\t\t\t\t\t[]capabilities.CatalogerInfo{\n\t\t\t\t\t\t{Name: tt.catalogerName, Selectors: []string{\"test\"}},\n\t\t\t\t\t},\n\t\t\t\t\t&capabilities.Document{Catalogers: []capabilities.CatalogerEntry{}},\n\t\t\t\t\tmap[string]capabilities.CatalogerConfigEntry{},\n\t\t\t\t\t[]capabilities.ApplicationConfigField{},\n\t\t\t\t\ttt.catalogerConfigMappings,\n\t\t\t\t)\n\n\t\t\t\trequire.Len(t, updated.Catalogers, 1)\n\t\t\t\trequire.Equal(t, tt.expectedConfig, updated.Catalogers[0].Config)\n\t\t\t}\n\n\t\t\t// test for custom catalogers\n\t\t\tif tt.catalogerType == \"custom\" {\n\t\t\t\tupdated, _, _ := mergeDiscoveredWithExisting(\n\t\t\t\t\tmap[string]DiscoveredCataloger{},\n\t\t\t\t\tmap[string][]string{},\n\t\t\t\t\tmap[string][]string{},\n\t\t\t\t\t[]binary.Classifier{},\n\t\t\t\t\t[]capabilities.CatalogerInfo{\n\t\t\t\t\t\t{Name: tt.catalogerName, Selectors: []string{\"test\"}},\n\t\t\t\t\t},\n\t\t\t\t\t&capabilities.Document{Catalogers: []capabilities.CatalogerEntry{}},\n\t\t\t\t\tmap[string]capabilities.CatalogerConfigEntry{},\n\t\t\t\t\t[]capabilities.ApplicationConfigField{},\n\t\t\t\t\ttt.catalogerConfigMappings,\n\t\t\t\t)\n\n\t\t\t\trequire.Len(t, updated.Catalogers, 1)\n\t\t\t\trequire.Equal(t, tt.expectedConfig, updated.Catalogers[0].Config)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestStripPURLVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname:  \"purl with version\",\n\t\t\tinput: \"pkg:generic/python@1.0.0\",\n\t\t\twant:  \"pkg:generic/python\",\n\t\t},\n\t\t{\n\t\t\tname:  \"purl without version\",\n\t\t\tinput: \"pkg:generic/python\",\n\t\t\twant:  \"pkg:generic/python\",\n\t\t},\n\t\t{\n\t\t\tname:  \"purl with multiple @ signs\",\n\t\t\tinput: \"pkg:generic/py@thon@1.0.0\",\n\t\t\twant:  \"pkg:generic/py@thon\",\n\t\t},\n\t\t{\n\t\t\tname:  \"empty string\",\n\t\t\tinput: \"\",\n\t\t\twant:  \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := stripPURLVersion(tt.input)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestInferEcosystem(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tcatalogerName string\n\t\twant          string\n\t}{\n\t\t{\n\t\t\tname:          \"go module cataloger\",\n\t\t\tcatalogerName: \"go-module-binary-cataloger\",\n\t\t\twant:          \"go\",\n\t\t},\n\t\t{\n\t\t\tname:          \"python cataloger\",\n\t\t\tcatalogerName: \"python-package-cataloger\",\n\t\t\twant:          \"python\",\n\t\t},\n\t\t{\n\t\t\tname:          \"java archive cataloger\",\n\t\t\tcatalogerName: \"java-archive-cataloger\",\n\t\t\twant:          \"java\",\n\t\t},\n\t\t{\n\t\t\tname:          \"rust cargo cataloger\",\n\t\t\tcatalogerName: \"rust-cargo-lock-cataloger\",\n\t\t\twant:          \"rust\",\n\t\t},\n\t\t{\n\t\t\tname:          \"javascript npm cataloger\",\n\t\t\tcatalogerName: \"javascript-package-cataloger\",\n\t\t\twant:          \"javascript\",\n\t\t},\n\t\t{\n\t\t\tname:          \"ruby gem cataloger\",\n\t\t\tcatalogerName: \"ruby-gemspec-cataloger\",\n\t\t\twant:          \"ruby\",\n\t\t},\n\t\t{\n\t\t\tname:          \"debian dpkg cataloger\",\n\t\t\tcatalogerName: \"dpkg-db-cataloger\",\n\t\t\twant:          \"debian\",\n\t\t},\n\t\t{\n\t\t\tname:          \"alpine apk cataloger\",\n\t\t\tcatalogerName: \"apk-db-cataloger\",\n\t\t\twant:          \"alpine\",\n\t\t},\n\t\t{\n\t\t\tname:          \"linux kernel cataloger\",\n\t\t\tcatalogerName: \"linux-kernel-cataloger\",\n\t\t\twant:          \"kernel\",\n\t\t},\n\t\t{\n\t\t\tname:          \"binary classifier cataloger\",\n\t\t\tcatalogerName: \"binary-classifier-cataloger\",\n\t\t\twant:          \"binary\",\n\t\t},\n\t\t{\n\t\t\tname:          \"github actions cataloger\",\n\t\t\tcatalogerName: \"github-actions-usage-cataloger\",\n\t\t\twant:          \"github-actions\",\n\t\t},\n\t\t{\n\t\t\tname:          \"unknown cataloger defaults to other\",\n\t\t\tcatalogerName: \"unknown-custom-cataloger\",\n\t\t\twant:          \"other\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := inferEcosystem(tt.catalogerName)\n\t\t\trequire.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestConvertToJSONSchemaTypesFromMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tmetadataTypes []string\n\t\twant          []string\n\t}{\n\t\t{\n\t\t\tname:          \"empty slice returns nil\",\n\t\t\tmetadataTypes: []string{},\n\t\t\twant:          nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"nil slice returns nil\",\n\t\t\tmetadataTypes: nil,\n\t\t\twant:          nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"single metadata type\",\n\t\t\tmetadataTypes: []string{\"pkg.AlpmDBEntry\"},\n\t\t\twant:          []string{\"AlpmDbEntry\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"multiple metadata types\",\n\t\t\tmetadataTypes: []string{\"pkg.ApkDBEntry\", \"pkg.BinarySignature\"},\n\t\t\twant:          []string{\"ApkDbEntry\", \"BinarySignature\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := convertToJSONSchemaTypesFromMetadata(tt.metadataTypes)\n\t\t\tif diff := cmp.Diff(tt.want, got); diff != \"\" {\n\t\t\t\tt.Errorf(\"convertToJSONSchemaTypesFromMetadata() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/metadata_check.go",
    "content": "// this file validates that all known metadata and package types are documented in cataloger/*/capabilities.yaml by checking coverage and reporting any missing types.\npackage main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/capabilities/internal\"\n)\n\nvar (\n\twarningStyleMeta = lipgloss.NewStyle().Foreground(lipgloss.Color(\"11\")).Bold(true) // yellow\n\tdimStyleMeta     = lipgloss.NewStyle().Foreground(lipgloss.Color(\"245\"))           // lighter grey (256-color)\n\n\t// exceptions for metadata types that are intentionally not referenced in cataloger/*/capabilities.yaml\n\tmetadataTypeExceptions = map[string]bool{\n\t\t\"pkg.MicrosoftKbPatch\": true,\n\t}\n\n\t// exceptions for package types that are intentionally not referenced in cataloger/*/capabilities.yaml\n\tpackageTypeExceptions = map[string]bool{\n\t\t\"jenkins-plugin\": true,\n\t\t\"msrc-kb\":        true,\n\t}\n)\n\n// parsePackageMetadataTypes parses packagemetadata/generated.go and extracts all metadata type names\n// from the AllTypes() function (e.g., \"pkg.AlpmDBEntry\", \"pkg.ApkDBEntry\", etc.)\nfunc parsePackageMetadataTypes(repoRoot string) ([]string, error) {\n\tmetadataFile := filepath.Join(repoRoot, \"internal\", \"packagemetadata\", \"generated.go\")\n\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, metadataFile, nil, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", metadataFile, err)\n\t}\n\n\tvar types []string\n\n\t// find the AllTypes function\n\tfor _, decl := range f.Decls {\n\t\tfuncDecl, ok := decl.(*ast.FuncDecl)\n\t\tif !ok || funcDecl.Name.Name != \"AllTypes\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// walk the function body to find return statement\n\t\tast.Inspect(funcDecl.Body, func(n ast.Node) bool {\n\t\t\treturnStmt, ok := n.(*ast.ReturnStmt)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// should have one return value: []any{...}\n\t\t\tif len(returnStmt.Results) != 1 {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// parse the composite literal (slice)\n\t\t\tcompositeLit, ok := returnStmt.Results[0].(*ast.CompositeLit)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// extract each element (should be pkg.TypeName{})\n\t\t\tfor _, elt := range compositeLit.Elts {\n\t\t\t\tif typeExpr, ok := elt.(*ast.CompositeLit); ok {\n\t\t\t\t\ttypeName := extractTypeName(typeExpr.Type)\n\t\t\t\t\tif typeName != \"\" {\n\t\t\t\t\t\ttypes = append(types, typeName)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false\n\t\t})\n\t}\n\n\treturn types, nil\n}\n\n// extractTypeName extracts the full type name from an AST type expression\n// e.g., pkg.AlpmDBEntry -> \"pkg.AlpmDBEntry\"\nfunc extractTypeName(expr ast.Expr) string {\n\tswitch t := expr.(type) {\n\tcase *ast.SelectorExpr:\n\t\t// pkg.TypeName\n\t\tif pkgIdent, ok := t.X.(*ast.Ident); ok {\n\t\t\treturn fmt.Sprintf(\"%s.%s\", pkgIdent.Name, t.Sel.Name)\n\t\t}\n\tcase *ast.Ident:\n\t\t// just TypeName\n\t\treturn t.Name\n\t}\n\treturn \"\"\n}\n\n// collectReferencedMetadataTypes walks through all catalogers and collects\n// all metadata types referenced in parser and cataloger-level metadata_types fields\nfunc collectReferencedMetadataTypes(doc *capabilities.Document) []string {\n\ttypeSet := make(map[string]bool)\n\n\tfor _, cataloger := range doc.Catalogers {\n\t\t// collect from parsers (for generic catalogers)\n\t\tfor _, parser := range cataloger.Parsers {\n\t\t\tfor _, metadataType := range parser.MetadataTypes {\n\t\t\t\ttypeSet[metadataType] = true\n\t\t\t}\n\t\t}\n\n\t\t// collect from cataloger-level metadata_types (for custom catalogers)\n\t\tfor _, metadataType := range cataloger.MetadataTypes {\n\t\t\ttypeSet[metadataType] = true\n\t\t}\n\t}\n\n\t// convert set to sorted slice\n\tvar types []string\n\tfor typeName := range typeSet {\n\t\ttypes = append(types, typeName)\n\t}\n\tsort.Strings(types)\n\n\treturn types\n}\n\n// checkMetadataTypeCoverage compares metadata types from packagemetadata/generated.go\n// with types referenced in cataloger/*/capabilities.yaml and returns unreferenced types\nfunc checkMetadataTypeCoverage(capabilitiesDir string, repoRoot string) ([]string, error) {\n\t// parse packagemetadata/generated.go to get all types\n\tallTypes, err := parsePackageMetadataTypes(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse package metadata types: %w\", err)\n\t}\n\n\t// load capabilities files to get referenced types\n\tdoc, _, err := internal.LoadCapabilities(capabilitiesDir, repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load capabilities files: %w\", err)\n\t}\n\n\treferencedTypes := collectReferencedMetadataTypes(doc)\n\n\t// create a set of referenced types for quick lookup\n\treferencedSet := make(map[string]bool)\n\tfor _, typeName := range referencedTypes {\n\t\treferencedSet[typeName] = true\n\t}\n\n\t// find unreferenced types (excluding exceptions)\n\tvar unreferenced []string\n\tfor _, typeName := range allTypes {\n\t\tif !referencedSet[typeName] && !metadataTypeExceptions[typeName] {\n\t\t\tunreferenced = append(unreferenced, typeName)\n\t\t}\n\t}\n\n\treturn unreferenced, nil\n}\n\n// printMetadataTypeCoverageWarning prints a warning if there are metadata types\n// from packagemetadata/generated.go that aren't referenced in cataloger/*/capabilities.yaml\nfunc printMetadataTypeCoverageWarning(capabilitiesDir string, repoRoot string) {\n\tunreferenced, err := checkMetadataTypeCoverage(capabilitiesDir, repoRoot)\n\tif err != nil {\n\t\t// don't fail generation, just skip the check\n\t\tfmt.Printf(\"%s Could not check metadata type coverage: %v\\n\", warningStyleMeta.Render(\"⚠\"), err)\n\t\treturn\n\t}\n\n\tif len(unreferenced) > 0 {\n\t\tfmt.Println()\n\t\tfmt.Printf(\"%s %s metadata types from packagemetadata are not referenced in cataloger/*/capabilities.yaml:\\n\",\n\t\t\twarningStyleMeta.Render(\"⚠ INFO:\"),\n\t\t\twarningStyleMeta.Render(fmt.Sprintf(\"%d\", len(unreferenced))))\n\t\tfor _, typeName := range unreferenced {\n\t\t\t// extract just the type name without \"pkg.\" prefix for cleaner output\n\t\t\tshortName := strings.TrimPrefix(typeName, \"pkg.\")\n\t\t\tfmt.Printf(\"  - %s\\n\", dimStyleMeta.Render(shortName))\n\t\t}\n\t\tfmt.Println()\n\t\tfmt.Println(dimStyleMeta.Render(\"These types may be:\"))\n\t\tfmt.Println(dimStyleMeta.Render(\"  • Used in custom catalogers (which don't have metadata_types)\"))\n\t\tfmt.Println(dimStyleMeta.Render(\"  • Deprecated or unused\"))\n\t\tfmt.Println(dimStyleMeta.Render(\"  • Missing from cataloger pattern documentation\"))\n\t}\n}\n\n// parseConstValues extracts constant names to their string values from an AST file\nfunc parseConstValues(f *ast.File) map[string]string {\n\tconstValues := make(map[string]string)\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.CONST {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor i, ident := range valueSpec.Names {\n\t\t\t\tif i < len(valueSpec.Values) {\n\t\t\t\t\tif lit, ok := valueSpec.Values[i].(*ast.BasicLit); ok && lit.Kind == token.STRING {\n\t\t\t\t\t\tconstValues[ident.Name] = strings.Trim(lit.Value, `\"`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn constValues\n}\n\n// extractTypesFromCompositeLit extracts package type names from a composite literal\nfunc extractTypesFromCompositeLit(compositeLit *ast.CompositeLit, constValues map[string]string) []string {\n\tvar types []string\n\tfor _, elt := range compositeLit.Elts {\n\t\tif ident, ok := elt.(*ast.Ident); ok {\n\t\t\t// look up the string value for this constant\n\t\t\tif typeName, ok := constValues[ident.Name]; ok && typeName != \"UnknownPackage\" {\n\t\t\t\ttypes = append(types, typeName)\n\t\t\t}\n\t\t}\n\t}\n\treturn types\n}\n\n// extractAllPkgsTypes finds the AllPkgs variable and extracts package type names\nfunc extractAllPkgsTypes(f *ast.File, constValues map[string]string) []string {\n\tfor _, decl := range f.Decls {\n\t\tgenDecl, ok := decl.(*ast.GenDecl)\n\t\tif !ok || genDecl.Tok != token.VAR {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, spec := range genDecl.Specs {\n\t\t\tvalueSpec, ok := spec.(*ast.ValueSpec)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor i, ident := range valueSpec.Names {\n\t\t\t\tif ident.Name == \"AllPkgs\" && i < len(valueSpec.Values) {\n\t\t\t\t\t// found AllPkgs, extract the slice elements\n\t\t\t\t\tcompositeLit, ok := valueSpec.Values[i].(*ast.CompositeLit)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\treturn extractTypesFromCompositeLit(compositeLit, constValues)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn []string{}\n}\n\n// parseAllPackageTypes parses syft/pkg/type.go and extracts all package type names\n// from the AllPkgs variable by looking up their const string values\nfunc parseAllPackageTypes(repoRoot string) ([]string, error) {\n\ttypeFile := filepath.Join(repoRoot, \"syft\", \"pkg\", \"type.go\")\n\n\tfset := token.NewFileSet()\n\tf, err := parser.ParseFile(fset, typeFile, nil, 0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse %s: %w\", typeFile, err)\n\t}\n\n\t// first, build a map of constant names to their string values\n\tconstValues := parseConstValues(f)\n\n\t// find the AllPkgs variable and extract types\n\ttypes := extractAllPkgsTypes(f, constValues)\n\n\treturn types, nil\n}\n\n// collectReferencedPackageTypes walks through all catalogers and collects\n// all package types referenced in parser and cataloger-level package_types fields\nfunc collectReferencedPackageTypes(doc *capabilities.Document) []string {\n\ttypeSet := make(map[string]bool)\n\n\tfor _, cataloger := range doc.Catalogers {\n\t\t// collect from parsers (for generic catalogers)\n\t\tfor _, parser := range cataloger.Parsers {\n\t\t\tfor _, pkgType := range parser.PackageTypes {\n\t\t\t\ttypeSet[pkgType] = true\n\t\t\t}\n\t\t}\n\n\t\t// collect from cataloger-level package_types (for custom catalogers)\n\t\tfor _, pkgType := range cataloger.PackageTypes {\n\t\t\ttypeSet[pkgType] = true\n\t\t}\n\t}\n\n\t// convert set to sorted slice\n\tvar types []string\n\tfor typeName := range typeSet {\n\t\ttypes = append(types, typeName)\n\t}\n\tsort.Strings(types)\n\n\treturn types\n}\n\n// checkPackageTypeCoverage compares package types from pkg.AllPkgs\n// with types referenced in cataloger/*/capabilities.yaml and returns unreferenced types\nfunc checkPackageTypeCoverage(capabilitiesDir string, repoRoot string) ([]string, error) {\n\t// parse pkg/type.go to get all package types\n\tallTypes, err := parseAllPackageTypes(repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse package types: %w\", err)\n\t}\n\n\t// load capabilities files to get referenced types\n\tdoc, _, err := internal.LoadCapabilities(capabilitiesDir, repoRoot)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to load capabilities files: %w\", err)\n\t}\n\n\treferencedTypes := collectReferencedPackageTypes(doc)\n\n\t// create a set of referenced types for quick lookup\n\treferencedSet := make(map[string]bool)\n\tfor _, typeName := range referencedTypes {\n\t\treferencedSet[typeName] = true\n\t}\n\n\t// find unreferenced types (excluding exceptions)\n\tvar unreferenced []string\n\tfor _, typeName := range allTypes {\n\t\tif !referencedSet[typeName] && !packageTypeExceptions[typeName] {\n\t\t\tunreferenced = append(unreferenced, typeName)\n\t\t}\n\t}\n\n\treturn unreferenced, nil\n}\n\n// printPackageTypeCoverageWarning prints a warning if there are package types\n// from pkg.AllPkgs that aren't referenced in cataloger/*/capabilities.yaml\nfunc printPackageTypeCoverageWarning(capabilitiesDir string, repoRoot string) {\n\tunreferenced, err := checkPackageTypeCoverage(capabilitiesDir, repoRoot)\n\tif err != nil {\n\t\t// don't fail generation, just skip the check\n\t\tfmt.Printf(\"%s Could not check package type coverage: %v\\n\", warningStyleMeta.Render(\"⚠\"), err)\n\t\treturn\n\t}\n\n\tif len(unreferenced) > 0 {\n\t\tfmt.Println()\n\t\tfmt.Printf(\"%s %s package types from pkg.AllPkgs are not referenced in cataloger/*/capabilities.yaml:\\n\",\n\t\t\twarningStyleMeta.Render(\"⚠ WARNING:\"),\n\t\t\twarningStyleMeta.Render(fmt.Sprintf(\"%d\", len(unreferenced))))\n\t\tfor _, typeName := range unreferenced {\n\t\t\tfmt.Printf(\"  - %s\\n\", dimStyleMeta.Render(typeName))\n\t\t}\n\t\tfmt.Println()\n\t\tfmt.Println(dimStyleMeta.Render(\"These package types should be documented in cataloger/*/capabilities.yaml.\"))\n\t\tfmt.Println(dimStyleMeta.Render(\"If a package type is not emitted by any cataloger, it may be deprecated or unused.\"))\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/overrides.go",
    "content": "package main\n\nimport (\n\t\"github.com/anchore/syft/syft/cpe\"\n)\n\n// this is a hack to get some information in the output that is otherwise difficult to extract.\n// it should be removed after we figure out how to extract it properly from the classifiers\ntype binaryClassifierOverride struct {\n\tClass   string\n\tPackage string\n\tPURL    string\n\tCPEs    []string\n}\n\nvar binaryClassifierOverrides = map[string][]binaryClassifierOverride{\n\t\"java-binary\": {\n\t\t{\n\t\t\tClass:   \"java-binary-graalvm\",\n\t\t\tPackage: \"graalvm\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/graalvm@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:graalvm:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-openjdk-zulu\",\n\t\t\tPackage: \"zulu\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/azul/zulu@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-openjdk-with-update\",\n\t\t\tPackage: \"openjdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:{{.primary}}:update{{.update}}:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-openjdk\",\n\t\t\tPackage: \"openjdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-ibm\",\n\t\t\tPackage: \"java\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ibm/java@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ibm:java:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-openjdk-fallthrough\",\n\t\t\tPackage: \"jre\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jre@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-oracle\",\n\t\t\tPackage: \"jre\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jre@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t},\n\t\"java-jdb-binary\": {\n\t\t{\n\t\t\tClass:   \"java-binary-graalvm\",\n\t\t\tPackage: \"graalvm\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/graalvm@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:graalvm_for_jdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"jdb-binary-openjdk-zulu\",\n\t\t\tPackage: \"zulu\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/azul/zulu@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-jdb-binary-openjdk\",\n\t\t\tPackage: \"openjdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-sdk-binary-ibm\",\n\t\t\tPackage: \"java_sdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ibm/java_sdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ibm:java_sdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-openjdk-fallthrough\",\n\t\t\tPackage: \"openjdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:   \"java-binary-jdk\",\n\t\t\tPackage: \"jdk\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jdk@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t},\n}\n\nfunc mustPURL(purl string) string {\n\treturn purl\n}\n\nfunc singleCPE(cpeString string, _ ...any) []string {\n\treturn []string{cpeString}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/cataloger-with-constant/cataloger/python/cataloger.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst catalogerName = \"python-package-cataloger\"\n\ntype CatalogerConfig struct {\n\tSetting string\n}\n\nfunc NewPythonCataloger(_ CatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\tWithParserByGlobs(parse, \"**/*.py\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/conflicting-names/cataloger/duplicate1/cataloger.go",
    "content": "package duplicate1\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype Config struct {\n\tOption1 bool\n}\n\nfunc NewDuplicateCataloger(_ Config) pkg.Cataloger {\n\treturn generic.NewCataloger(\"duplicate-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/*.txt\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/conflicting-names/cataloger/duplicate2/cataloger.go",
    "content": "package duplicate2\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype Config struct {\n\tOption2 string\n}\n\nfunc NewDuplicateCataloger(_ Config) pkg.Cataloger {\n\treturn generic.NewCataloger(\"duplicate-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/*.json\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/custom-cataloger-different-file/cataloger/dotnet/cataloger.go",
    "content": "package dotnet\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc NewDotnetCataloger(cfg CatalogerConfig) pkg.Cataloger {\n\treturn dotnetCataloger{cfg: cfg}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/custom-cataloger-different-file/cataloger/dotnet/types.go",
    "content": "package dotnet\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst catalogerName = \"dotnet-cataloger\"\n\ntype CatalogerConfig struct {\n\tOption bool\n}\n\ntype dotnetCataloger struct {\n\tcfg CatalogerConfig\n}\n\nfunc (d dotnetCataloger) Name() string {\n\treturn catalogerName\n}\n\nfunc (d dotnetCataloger) Catalog(_ context.Context, _ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/custom-cataloger-same-file/cataloger/java/cataloger.go",
    "content": "package java\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst pomCatalogerName = \"java-pom-cataloger\"\n\ntype ArchiveCatalogerConfig struct {\n\tIncludeArchives bool\n}\n\ntype pomXMLCataloger struct {\n\tcfg ArchiveCatalogerConfig\n}\n\nfunc (p pomXMLCataloger) Name() string {\n\treturn pomCatalogerName\n}\n\nfunc (p pomXMLCataloger) Catalog(_ context.Context, _ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n\nfunc NewPomCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger {\n\treturn pomXMLCataloger{cfg: cfg}\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/imported-config-type/cataloger/kernel/cataloger.go",
    "content": "package kernel\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc NewLinuxKernelCataloger(_ LinuxKernelCatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(\"linux-kernel-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/vmlinuz\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/imported-config-type/cataloger/kernel/config.go",
    "content": "package kernel\n\ntype LinuxKernelCatalogerConfig struct {\n\tKernelVersion string\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/mixed-naming-patterns/cataloger/ruby/cataloger.go",
    "content": "package ruby\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype Config struct {\n\tSetting bool\n}\n\nfunc NewRubyCataloger(_ Config) pkg.Cataloger {\n\treturn generic.NewCataloger(\"ruby-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/Gemfile\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/no-config-cataloger/cataloger/javascript/cataloger.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc NewJavaScriptCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"javascript-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/*.js\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/non-config-first-param/cataloger/binary/cataloger.go",
    "content": "package binary\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype Parser struct{}\n\nfunc NewBinaryCataloger(_ Parser) pkg.Cataloger {\n\treturn generic.NewCataloger(\"binary-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/*\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/selector-expression-config/cataloger/rust/cataloger.go",
    "content": "package rust\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// CatalogerConfig is imported from a selector expression in the real code\ntype CatalogerConfig struct {\n\tSomeOption bool\n}\n\nfunc NewRustCataloger(_ CatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(\"rust-cataloger\").\n\t\tWithParserByGlobs(parse, \"**/Cargo.toml\")\n}\n\nfunc parse(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/cataloger/simple-generic-cataloger/cataloger/golang/cataloger.go",
    "content": "package golang\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype CatalogerConfig struct {\n\tSomeOption bool\n}\n\nfunc NewGoModuleCataloger(_ CatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(\"go-module-cataloger\").\n\t\tWithParserByGlobs(parseGoMod, \"**/go.mod\")\n}\n\nfunc parseGoMod(_ context.Context, _ file.Resolver, _ *generic.Environment, _ file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/config-discovery/multiple-configs/cataloger/java/config.go",
    "content": "package java\n\n// ArchiveCatalogerConfig contains configuration for the java archive cataloger\ntype ArchiveCatalogerConfig struct {\n\t// include archive contents in catalog\n\t// app-config: java.use-network\n\tUseNetwork bool\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/config-discovery/multiple-configs/cataloger/python/config.go",
    "content": "package python\n\n// CatalogerConfig contains configuration for the python cataloger\ntype CatalogerConfig struct {\n\t// guess unpinned python package requirements\n\t// app-config: python.guess-unpinned-requirements\n\tGuessUnpinnedRequirements bool\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/config-discovery/nested-config/cataloger/golang/config.go",
    "content": "package golang\n\n// MainModuleVersionConfig contains nested configuration for main module version detection\ntype MainModuleVersionConfig struct {\n\t// extract version from LD flags\n\t// app-config: golang.main-module-version.from-ld-flags\n\tFromLDFlags bool\n\n\t// extract version from build info\n\t// app-config: golang.main-module-version.from-build-info\n\tFromBuildInfo bool\n}\n\n// CatalogerConfig contains configuration for the golang cataloger\ntype CatalogerConfig struct {\n\t// enable searching for go package licenses in the local mod cache\n\t// app-config: golang.search-local-mod-cache-licenses\n\tSearchLocalModCacheLicenses bool\n\n\t// main module version configuration\n\tMainModuleVersion MainModuleVersionConfig\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/config-discovery/no-annotations/cataloger/javascript/config.go",
    "content": "package javascript\n\n// CatalogerConfig contains configuration for the javascript cataloger (no annotations)\ntype CatalogerConfig struct {\n\t// this field has no app-config annotation\n\tSearchRemoteLicenses bool\n\n\t// this field also has no annotation\n\tIncludeDevDependencies bool\n}\n"
  },
  {
    "path": "internal/capabilities/generate/testdata/config-discovery/simple-config/cataloger/golang/config.go",
    "content": "package golang\n\n// CatalogerConfig contains configuration for the golang cataloger\ntype CatalogerConfig struct {\n\t// enable searching for go package licenses in the local mod cache\n\t// app-config: golang.search-local-mod-cache-licenses\n\tSearchLocalModCacheLicenses bool\n\n\t// base URL for npm registry\n\t// app-config: golang.npm-base-url\n\tNpmBaseURL string\n\n\t// list of globs to search for go.mod files\n\t// app-config: golang.search-patterns\n\tSearchPatterns []string\n}\n"
  },
  {
    "path": "internal/capabilities/generate/util_test.go",
    "content": "package main\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\n// checkCompletenessTestsEnabled skips the test if completeness tests are not enabled via environment variable.\n// Why do this at all? Can't we just run these tests all the time? Short answer: No.\n// These tests are coupled with unit tests under ./syft/pkg/..., which means that these tests must be run not only\n// after those unit tests, but also after code generation that reads observations from test results.\n// This means that we should not really consider these tests as part of normal unit test runs, but rather as a separate\n// self-consistency check during generation, and it's really static analysis that should be checking\n// if the generated code has drifted (not a unit test).\nfunc checkCompletenessTestsEnabled(t *testing.T) {\n\tenabled := os.Getenv(\"SYFT_ENABLE_COMPLETENESS_TESTS\") == \"true\"\n\tif !enabled {\n\t\tt.Skip(\"skipping completeness tests (SYFT_ENABLE_COMPLETENESS_TESTS is not set to 'true')\")\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/internal/cataloger_names.go",
    "content": "// this file retrieves the canonical list of cataloger names and their selectors from syft's task factories.\npackage internal\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/task\"\n)\n\n// AllPackageCatalogerInfo gets all package cataloger info (names and selectors) from task factories\nfunc AllPackageCatalogerInfo() ([]capabilities.CatalogerInfo, error) {\n\tpkgTaskFactories := task.DefaultPackageTaskFactories()\n\tallPkgTasks, err := pkgTaskFactories.Tasks(task.DefaultCatalogingFactoryConfig())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to create pkg cataloger tasks: %w\", err)\n\t}\n\n\tinfos := capabilities.ExtractCatalogerInfo(allPkgTasks)\n\n\t// sort by name for consistency\n\tsort.Slice(infos, func(i, j int) bool {\n\t\treturn infos[i].Name < infos[j].Name\n\t})\n\n\treturn infos, nil\n}\n"
  },
  {
    "path": "internal/capabilities/internal/fixtures.go",
    "content": "package internal\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/anchore/syft/internal/capabilities/pkgtestobservation\"\n)\n\n// FindTestDataDirs walks the cataloger directory tree and returns all testdata directories\nfunc FindTestDataDirs(repoRoot string) ([]string, error) {\n\tcatalogerRoot := filepath.Join(repoRoot, \"syft\", \"pkg\", \"cataloger\")\n\tvar testDataDirs []string\n\n\terr := filepath.Walk(catalogerRoot, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif info.IsDir() && info.Name() == \"testdata\" {\n\t\t\ttestDataDirs = append(testDataDirs, path)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to walk cataloger directory: %w\", err)\n\t}\n\n\treturn testDataDirs, nil\n}\n\n// ReadTestObservations reads and parses a test-observations.json file\nfunc ReadTestObservations(path string) (*pkgtestobservation.Test, error) {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar observations pkgtestobservation.Test\n\tif err := json.Unmarshal(data, &observations); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse JSON: %w\", err)\n\t}\n\n\treturn &observations, nil\n}\n"
  },
  {
    "path": "internal/capabilities/internal/load_capabilities.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n)\n\n// LoadCapabilities loads the capabilities document from a YAML file.\n// Returns both the parsed document and the original YAML node tree to preserve comments.\n// Exported for use by the generator in generate/main.go\nfunc LoadCapabilities(catalogerDir, repoRoot string) (*capabilities.Document, map[string]*yaml.Node, error) {\n\t// load all cataloger/*/capabilities.yaml files\n\tfiles, err := filepath.Glob(filepath.Join(catalogerDir, \"*\", CapabilitiesFilename))\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to glob capabilities files: %w\", err)\n\t}\n\n\tmergedDoc := &capabilities.Document{\n\t\tConfigs:    make(map[string]capabilities.CatalogerConfigEntry),\n\t\tCatalogers: []capabilities.CatalogerEntry{},\n\t}\n\tnodeMap := make(map[string]*yaml.Node)\n\n\t// load each package file\n\tfor _, file := range files {\n\t\tdata, err := os.ReadFile(file)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to read %s: %w\", file, err)\n\t\t}\n\n\t\t// parse into node tree to preserve comments\n\t\tvar rootNode yaml.Node\n\t\tif err := yaml.Unmarshal(data, &rootNode); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse %s into node tree: %w\", file, err)\n\t\t}\n\n\t\t// parse into struct\n\t\tvar doc struct {\n\t\t\tConfigs    map[string]capabilities.CatalogerConfigEntry `yaml:\"configs\"`\n\t\t\tCatalogers []capabilities.CatalogerEntry                `yaml:\"catalogers\"`\n\t\t}\n\t\tif err := yaml.Unmarshal(data, &doc); err != nil {\n\t\t\tfmt.Printf(\"\\n=== DEBUG: YAML Parse Error in %s ===\\n\", file)\n\t\t\tfmt.Printf(\"Error: %v\\n\\n\", err)\n\t\t\tfmt.Printf(\"=== FULL FILE CONTENT ===\\n%s\\n=== END FILE ===\\n\", string(data))\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse %s into struct: %w\", file, err)\n\t\t}\n\n\t\t// merge configs\n\t\tfor k, v := range doc.Configs {\n\t\t\tmergedDoc.Configs[k] = v\n\t\t}\n\n\t\t// merge catalogers\n\t\tmergedDoc.Catalogers = append(mergedDoc.Catalogers, doc.Catalogers...)\n\n\t\t// store node tree by ecosystem directory name\n\t\t// path is like \"/path/to/syft/pkg/cataloger/alpine/capabilities.yaml\"\n\t\tecosystem := filepath.Base(filepath.Dir(file))\n\t\tnodeMap[ecosystem] = &rootNode\n\t}\n\n\t// load appconfig.yaml separately (from internal/capabilities/)\n\tappconfigPath := AppconfigPath(repoRoot)\n\tif _, err := os.Stat(appconfigPath); err == nil {\n\t\tdata, err := os.ReadFile(appconfigPath)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to read appconfig.yaml: %w\", err)\n\t\t}\n\n\t\tvar appDoc struct {\n\t\t\tApplication []capabilities.ApplicationConfigField `yaml:\"application\"`\n\t\t}\n\t\tif err := yaml.Unmarshal(data, &appDoc); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse appconfig.yaml: %w\", err)\n\t\t}\n\n\t\tmergedDoc.ApplicationConfig = appDoc.Application\n\n\t\t// load node tree for appconfig\n\t\tvar appNode yaml.Node\n\t\tif err := yaml.Unmarshal(data, &appNode); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse appconfig.yaml into node tree: %w\", err)\n\t\t}\n\t\tnodeMap[\"appconfig\"] = &appNode\n\t}\n\n\treturn mergedDoc, nodeMap, nil\n}\n"
  },
  {
    "path": "internal/capabilities/internal/load_capabilities_test.go",
    "content": "// this file verifies the claims made in cataloger/*/capabilities.yaml against test observations and source code, ensuring cataloger capabilities are accurate and complete.\npackage internal\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t_ \"github.com/anchore/syft/syft/pkg/cataloger\"\n)\n\n// requireParserObservations controls whether TestAllCatalogersHaveObservations enforces that all parsers have observations\n// - true: fail test if any parser is missing observations (strict mode)\n// - false: only check custom catalogers, skip parser checks (lenient mode, not all parsers are observable)\nconst requireParserObservations = false\n\n// metadataTypeCoverageExceptions lists metadata types that are allowed to not be represented in any cataloger\nvar metadataTypeCoverageExceptions = strset.New(\n\treflect.TypeOf(pkg.MicrosoftKbPatch{}).Name(),\n)\n\n// packageTypeCoverageExceptions lists package types that are allowed to not be represented in any cataloger\nvar packageTypeCoverageExceptions = strset.New(\n\tstring(pkg.JenkinsPluginPkg), // TODO: this should probably be covered by a cataloger test one day\n\tstring(pkg.KbPkg),\n)\n\n// observationExceptions maps cataloger/parser names to observation types that should be ignored during validation\n//\n// TestAllCatalogersHaveObservations:\n//   - always checks custom catalogers\n//   - checks parsers only if requireParserObservations=true\n//   - nil or non-nil value: skip existence check for this cataloger/parser\n//\n// examples:\n//\n//\t\"graalvm-native-image-cataloger\": nil,  // custom cataloger: skip existence check\n//\t\"linux-kernel-cataloger\": strset.New(\"relationships\"),  // custom cataloger: skip only relationships validation\n//\t\"conan-cataloger/parseConanLock\": nil,  // parser: skip all observation validation\n//\t\"cataloger-name/parser-function\": strset.New(\"file_digests\"),  // parser: skip only file_digests validation\nvar observationExceptions = map[string]*strset.Set{\n\t// for the graalvm-native-image-cataloger, we don't have a really reliable test fixture yet\n\t\"graalvm-native-image-cataloger\": nil,\n\t// the linux-kernel-cataloger produces relationships but aren't really indicative of dependency information in the way the user might expect\n\t\"linux-kernel-cataloger\": strset.New(\"relationships\"),\n}\n\nfunc TestLoadDocument(t *testing.T) {\n\tdoc, err := capabilities.LoadDocument()\n\trequire.NoError(t, err)\n\trequire.NotNil(t, doc)\n\n\t// validate application config is loaded\n\tassert.NotEmpty(t, doc.ApplicationConfig, \"should have application config\")\n\n\t// validate catalogers are loaded and merged from all cataloger/*/capabilities.yaml files\n\tassert.NotEmpty(t, doc.Catalogers, \"should have catalogers\")\n\tassert.Greater(t, len(doc.Catalogers), 50, \"should have at least 50 catalogers\")\n\n\t// validate configs are loaded\n\tassert.NotEmpty(t, doc.Configs, \"should have configs\")\n\n\t// check that catalogers are sorted by name\n\tfor i := 1; i < len(doc.Catalogers); i++ {\n\t\tassert.LessOrEqual(t, doc.Catalogers[i-1].Name, doc.Catalogers[i].Name,\n\t\t\t\"catalogers should be sorted by name\")\n\t}\n}\n\nfunc TestPackages(t *testing.T) {\n\tcatalogers, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\trequire.NotNil(t, catalogers)\n\n\tassert.Greater(t, len(catalogers), 50, \"should have at least 50 catalogers\")\n}\n\n// TestConfigCompleteness validates the integrity of config references in cataloger/*/capabilities.yaml, ensuring that all\n// configs in the configs section are referenced by at least one cataloger, all cataloger config references exist,\n// and all app-key references in config fields exist in the application section.\nfunc TestConfigCompleteness(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the cataloger/*/capabilities.yaml files\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all validation errors before failing\n\tvar errors []string\n\n\t// validation 1: all entries in configs section are referenced by at least one cataloger\n\tconfigsReferenced := make(map[string]bool)\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Config != \"\" {\n\t\t\tconfigsReferenced[cataloger.Config] = true\n\t\t}\n\t}\n\n\tfor configKey := range doc.Configs {\n\t\tif !configsReferenced[configKey] {\n\t\t\terrors = append(errors, fmt.Sprintf(\"Config %q is not referenced by any cataloger\", configKey))\n\t\t}\n\t}\n\n\t// validation 2: all catalogers with non-empty config field have entry in configs\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Config != \"\" {\n\t\t\tif _, exists := doc.Configs[cataloger.Config]; !exists {\n\t\t\t\terrors = append(errors, fmt.Sprintf(\"Cataloger %q references config %q which doesn't exist in configs section\", cataloger.Name, cataloger.Config))\n\t\t\t}\n\t\t}\n\t}\n\n\t// validation 3: all app-key references in configs exist in app-config section\n\t// build a set of all app-config keys for quick lookup\n\tappConfigKeys := make(map[string]bool)\n\tfor _, appConfig := range doc.ApplicationConfig {\n\t\tappConfigKeys[appConfig.Key] = true\n\t}\n\n\tfor configName, configEntry := range doc.Configs {\n\t\tfor _, field := range configEntry.Fields {\n\t\t\tif field.AppKey != \"\" {\n\t\t\t\tif !appConfigKeys[field.AppKey] {\n\t\t\t\t\terrors = append(errors, fmt.Sprintf(\"Config field %q.%s references app-key %q which doesn't exist in app-config section\", configName, field.Key, field.AppKey))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"Config completeness validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// TestCapabilityConfigFieldReferences validates that config field names referenced in capability conditions\n// actually exist in the cataloger's config struct, preventing typos and ensuring capability conditions can\n// be properly evaluated at runtime.\nfunc TestCapabilityConfigFieldReferences(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the packages.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all validation errors before failing\n\tvar errors []string\n\n\t// for each cataloger with CapabilitiesV2\n\tfor _, cataloger := range doc.Catalogers {\n\t\t// check cataloger-level CapabilitiesV2 (for custom catalogers)\n\t\tif cataloger.Type == \"custom\" && len(cataloger.Capabilities) > 0 {\n\t\t\t// load the cataloger's config struct if it has one\n\t\t\tif cataloger.Config != \"\" {\n\t\t\t\tconfigEntry, exists := doc.Configs[cataloger.Config]\n\t\t\t\tif !exists {\n\t\t\t\t\terrors = append(errors, fmt.Sprintf(\"Cataloger %q references config %q which doesn't exist\", cataloger.Name, cataloger.Config))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// build a set of valid config field names\n\t\t\t\tvalidFields := make(map[string]bool)\n\t\t\t\tfor _, field := range configEntry.Fields {\n\t\t\t\t\tvalidFields[field.Key] = true\n\t\t\t\t}\n\n\t\t\t\t// validate each capability field\n\t\t\t\tfor _, capField := range cataloger.Capabilities {\n\t\t\t\t\t// check conditions for config field references\n\t\t\t\t\tfor _, condition := range capField.Conditions {\n\t\t\t\t\t\tfor fieldName := range condition.When {\n\t\t\t\t\t\t\tif !validFields[fieldName] {\n\t\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q capability field %q references config field %q which doesn't exist in config struct %q\",\n\t\t\t\t\t\t\t\t\t\tcataloger.Name, capField.Name, fieldName, cataloger.Config))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if len(cataloger.Capabilities) > 0 {\n\t\t\t\t// cataloger has CapabilitiesV2 with conditions but no config - check if any conditions reference fields\n\t\t\t\tfor _, capField := range cataloger.Capabilities {\n\t\t\t\t\tif len(capField.Conditions) > 0 {\n\t\t\t\t\t\tfor _, condition := range capField.Conditions {\n\t\t\t\t\t\t\tif len(condition.When) > 0 {\n\t\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q capability field %q has conditions but cataloger has no config struct\",\n\t\t\t\t\t\t\t\t\t\tcataloger.Name, capField.Name))\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check parser-level CapabilitiesV2 (for generic catalogers)\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, p := range cataloger.Parsers {\n\t\t\t\tif len(p.Capabilities) > 0 {\n\t\t\t\t\t// load the cataloger's config struct if it has one\n\t\t\t\t\tif cataloger.Config != \"\" {\n\t\t\t\t\t\tconfigEntry, exists := doc.Configs[cataloger.Config]\n\t\t\t\t\t\tif !exists {\n\t\t\t\t\t\t\terrors = append(errors, fmt.Sprintf(\"Cataloger %q references config %q which doesn't exist\", cataloger.Name, cataloger.Config))\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// build a set of valid config field names\n\t\t\t\t\t\tvalidFields := make(map[string]bool)\n\t\t\t\t\t\tfor _, field := range configEntry.Fields {\n\t\t\t\t\t\t\tvalidFields[field.Key] = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// validate each capability field\n\t\t\t\t\t\tfor _, capField := range p.Capabilities {\n\t\t\t\t\t\t\t// check conditions for config field references\n\t\t\t\t\t\t\tfor _, condition := range capField.Conditions {\n\t\t\t\t\t\t\t\tfor fieldName := range condition.When {\n\t\t\t\t\t\t\t\t\tif !validFields[fieldName] {\n\t\t\t\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s capability field %q references config field %q which doesn't exist in config struct %q\",\n\t\t\t\t\t\t\t\t\t\t\t\tcataloger.Name, p.ParserFunction, capField.Name, fieldName, cataloger.Config))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// parser has CapabilitiesV2 with conditions but cataloger has no config\n\t\t\t\t\t\tfor _, capField := range p.Capabilities {\n\t\t\t\t\t\t\tif len(capField.Conditions) > 0 {\n\t\t\t\t\t\t\t\tfor _, condition := range capField.Conditions {\n\t\t\t\t\t\t\t\t\tif len(condition.When) > 0 {\n\t\t\t\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s capability field %q has conditions but cataloger has no config struct\",\n\t\t\t\t\t\t\t\t\t\t\t\tcataloger.Name, p.ParserFunction, capField.Name))\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"CapabilityV2 config field reference validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// TestCapabilityFieldNaming validates that all capability field names follow known patterns\n// (e.g., \"license\", \"dependency.depth\", \"package_manager.files.listing\"), catching typos and ensuring\n// consistency across catalogers.\nfunc TestCapabilityFieldNaming(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the packages.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// define known capability field paths\n\tknownFields := strset.New(\n\t\t\"license\",\n\t\t\"dependency.depth\",\n\t\t\"dependency.edges\",\n\t\t\"dependency.kinds\",\n\t\t\"package_manager.files.listing\",\n\t\t\"package_manager.files.digests\",\n\t\t\"package_manager.package_integrity_hash\",\n\t)\n\n\t// collect all validation errors/warnings\n\tvar errors []string\n\n\t// check cataloger-level CapabilitiesV2\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Type == \"custom\" && len(cataloger.Capabilities) > 0 {\n\t\t\tfor _, capField := range cataloger.Capabilities {\n\t\t\t\tif !knownFields.Has(capField.Name) {\n\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q uses unknown capability field %q - may be a typo or new field not in known list\",\n\t\t\t\t\t\t\tcataloger.Name, capField.Name))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check parser-level CapabilitiesV2\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, parser := range cataloger.Parsers {\n\t\t\t\tif len(parser.Capabilities) > 0 {\n\t\t\t\t\tfor _, capField := range parser.Capabilities {\n\t\t\t\t\t\tif !knownFields.Has(capField.Name) {\n\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s uses unknown capability field %q - may be a typo or new field not in known list\",\n\t\t\t\t\t\t\t\t\tcataloger.Name, parser.ParserFunction, capField.Name))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"Capability field naming validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// TestCapabilityValueTypes validates that capability field values match their expected types based on the\n// field name (e.g., boolean fields like \"license\" must have bool values, array fields like \"dependency.depth\"\n// must have []string values), preventing type mismatches that would cause runtime errors.\nfunc TestCapabilityValueTypes(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the packages.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all validation errors\n\tvar errors []string\n\n\t// validate cataloger-level CapabilitiesV2\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Type == \"custom\" && len(cataloger.Capabilities) > 0 {\n\t\t\tfor _, capField := range cataloger.Capabilities {\n\t\t\t\t// validate default value type\n\t\t\t\terr := validateCapabilityValueType(capField.Name, capField.Default)\n\t\t\t\tif err != nil {\n\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q capability field %q default value: %v\",\n\t\t\t\t\t\t\tcataloger.Name, capField.Name, err))\n\t\t\t\t}\n\n\t\t\t\t// validate condition value types\n\t\t\t\tfor i, condition := range capField.Conditions {\n\t\t\t\t\terr := validateCapabilityValueType(capField.Name, condition.Value)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q capability field %q condition %d value: %v\",\n\t\t\t\t\t\t\t\tcataloger.Name, capField.Name, i, err))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// validate parser-level CapabilitiesV2\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, parser := range cataloger.Parsers {\n\t\t\t\tif len(parser.Capabilities) > 0 {\n\t\t\t\t\tfor _, capField := range parser.Capabilities {\n\t\t\t\t\t\t// validate default value type\n\t\t\t\t\t\terr := validateCapabilityValueType(capField.Name, capField.Default)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s capability field %q default value: %v\",\n\t\t\t\t\t\t\t\t\tcataloger.Name, parser.ParserFunction, capField.Name, err))\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// validate condition value types\n\t\t\t\t\t\tfor i, condition := range capField.Conditions {\n\t\t\t\t\t\t\terr := validateCapabilityValueType(capField.Name, condition.Value)\n\t\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s capability field %q condition %d value: %v\",\n\t\t\t\t\t\t\t\t\t\tcataloger.Name, parser.ParserFunction, capField.Name, i, err))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"Capability value type validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// validateCapabilityValueType checks if a value matches the expected type for a capability field\nfunc validateCapabilityValueType(fieldPath string, value interface{}) error {\n\tif value == nil {\n\t\treturn nil // nil is acceptable\n\t}\n\n\tswitch fieldPath {\n\tcase \"license\",\n\t\t\"package_manager.files.listing\",\n\t\t\"package_manager.files.digests\",\n\t\t\"package_manager.package_integrity_hash\":\n\t\t// expect bool\n\t\tif _, ok := value.(bool); !ok {\n\t\t\treturn fmt.Errorf(\"expected bool, got %T\", value)\n\t\t}\n\n\tcase \"dependency.depth\", \"dependency.kinds\":\n\t\t// expect []string or []interface{} that can be converted to []string\n\t\tswitch v := value.(type) {\n\t\tcase []string:\n\t\t\t// ok\n\t\tcase []interface{}:\n\t\t\t// check each element is a string\n\t\t\tfor i, elem := range v {\n\t\t\t\tif _, ok := elem.(string); !ok {\n\t\t\t\t\treturn fmt.Errorf(\"expected []string, but element %d is %T\", i, elem)\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"expected []string, got %T\", value)\n\t\t}\n\n\tcase \"dependency.edges\":\n\t\t// expect string\n\t\tif _, ok := value.(string); !ok {\n\t\t\treturn fmt.Errorf(\"expected string, got %T\", value)\n\t\t}\n\n\tdefault:\n\t\t// unknown field, skip validation\n\t\treturn nil\n\t}\n\n\treturn nil\n}\n\n// TestMetadataTypesHaveJSONSchemaTypes validates that metadata_types and json_schema_types arrays are synchronized\n// in packages.yaml, ensuring every metadata type (e.g., \"pkg.AlpmDBEntry\") has a corresponding json_schema_type\n// (e.g., \"AlpmDbEntry\") with correct conversion, which is required for JSON schema generation.\nfunc TestMetadataTypesHaveJSONSchemaTypes(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the packages.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all validation errors\n\tvar errors []string\n\n\t// validate cataloger-level types (custom catalogers)\n\tfor _, c := range doc.Catalogers {\n\t\tif c.Type == \"custom\" {\n\t\t\tif len(c.MetadataTypes) > 0 {\n\t\t\t\t// verify counts match\n\t\t\t\tif len(c.MetadataTypes) != len(c.JSONSchemaTypes) {\n\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q has %d metadata_types but %d json_schema_types (counts must match)\",\n\t\t\t\t\t\t\tc.Name, len(c.MetadataTypes), len(c.JSONSchemaTypes)))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// verify each metadata_type converts to its corresponding json_schema_type\n\t\t\t\tfor i, metadataType := range c.MetadataTypes {\n\t\t\t\t\texpectedJSONSchemaType := convertMetadataTypeToJSONSchemaType(metadataType)\n\t\t\t\t\tif expectedJSONSchemaType == \"\" {\n\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q metadata_type[%d] %q could not be converted to json_schema_type (not found in packagemetadata registry)\",\n\t\t\t\t\t\t\t\tc.Name, i, metadataType))\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tactualJSONSchemaType := c.JSONSchemaTypes[i]\n\t\t\t\t\tif expectedJSONSchemaType != actualJSONSchemaType {\n\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q metadata_type[%d] %q should convert to json_schema_type %q but found %q\",\n\t\t\t\t\t\t\t\tc.Name, i, metadataType, expectedJSONSchemaType, actualJSONSchemaType))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// validate parser-level types (generic catalogers)\n\t\tif c.Type == \"generic\" {\n\t\t\tfor _, p := range c.Parsers {\n\t\t\t\tif len(p.MetadataTypes) > 0 {\n\t\t\t\t\t// verify counts match\n\t\t\t\t\tif len(p.MetadataTypes) != len(p.JSONSchemaTypes) {\n\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s has %d metadata_types but %d json_schema_types (counts must match)\",\n\t\t\t\t\t\t\t\tc.Name, p.ParserFunction, len(p.MetadataTypes), len(p.JSONSchemaTypes)))\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\t// verify each metadata_type converts to its corresponding json_schema_type\n\t\t\t\t\tfor i, metadataType := range p.MetadataTypes {\n\t\t\t\t\t\texpectedJSONSchemaType := convertMetadataTypeToJSONSchemaType(metadataType)\n\t\t\t\t\t\tif expectedJSONSchemaType == \"\" {\n\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s metadata_type[%d] %q could not be converted to json_schema_type (not found in packagemetadata registry)\",\n\t\t\t\t\t\t\t\t\tc.Name, p.ParserFunction, i, metadataType))\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tactualJSONSchemaType := p.JSONSchemaTypes[i]\n\t\t\t\t\t\tif expectedJSONSchemaType != actualJSONSchemaType {\n\t\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"Parser %q/%s metadata_type[%d] %q should convert to json_schema_type %q but found %q\",\n\t\t\t\t\t\t\t\t\tc.Name, p.ParserFunction, i, metadataType, expectedJSONSchemaType, actualJSONSchemaType))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"Metadata types and JSON schema types validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// convertMetadataTypeToJSONSchemaType converts a metadata type (e.g., \"pkg.AlpmDBEntry\") to its JSON schema type (e.g., \"AlpmDbEntry\")\nfunc convertMetadataTypeToJSONSchemaType(metadataType string) string {\n\tjsonName := packagemetadata.JSONNameFromString(metadataType)\n\tif jsonName == \"\" {\n\t\treturn \"\"\n\t}\n\treturn packagemetadata.ToUpperCamelCase(jsonName)\n}\n\n// findStructFields extracts field names and types from a struct definition\nfunc findStructFields(file *ast.File, structName string) map[string]string {\n\tfields := make(map[string]string)\n\n\tast.Inspect(file, func(n ast.Node) bool {\n\t\t// look for type declarations\n\t\ttypeSpec, ok := n.(*ast.TypeSpec)\n\t\tif !ok || typeSpec.Name.Name != structName {\n\t\t\treturn true\n\t\t}\n\n\t\t// check if it's a struct type\n\t\tstructType, ok := typeSpec.Type.(*ast.StructType)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\n\t\t// extract field names and types\n\t\tfor _, field := range structType.Fields.List {\n\t\t\tif len(field.Names) == 0 {\n\t\t\t\tcontinue // embedded field\n\t\t\t}\n\n\t\t\tfieldName := field.Names[0].Name\n\t\t\tfieldType := getTypeName(field.Type)\n\t\t\tfields[fieldName] = fieldType\n\t\t}\n\n\t\treturn false\n\t})\n\n\treturn fields\n}\n\n// getTypeName extracts a string representation of a type\nfunc getTypeName(expr ast.Expr) string {\n\tswitch t := expr.(type) {\n\tcase *ast.Ident:\n\t\treturn t.Name\n\tcase *ast.SelectorExpr:\n\t\treturn fmt.Sprintf(\"%s.%s\", getTypeName(t.X), t.Sel.Name)\n\tcase *ast.ArrayType:\n\t\treturn fmt.Sprintf(\"[]%s\", getTypeName(t.Elt))\n\tcase *ast.MapType:\n\t\treturn fmt.Sprintf(\"map[%s]%s\", getTypeName(t.Key), getTypeName(t.Value))\n\tcase *ast.StarExpr:\n\t\treturn fmt.Sprintf(\"*%s\", getTypeName(t.X))\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\n// findMetadataStructFile finds the Go file containing a metadata struct definition\n// searches in syft/pkg/*.go for the given struct name\n// also handles type aliases and returns the underlying struct name\nfunc findMetadataStructFile(repoRoot, structName string) (filePath string, actualStructName string, err error) {\n\tpkgDir := filepath.Join(repoRoot, \"syft\", \"pkg\")\n\tfiles, err := filepath.Glob(filepath.Join(pkgDir, \"*.go\"))\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tfor _, fpath := range files {\n\t\tif strings.HasSuffix(fpath, \"_test.go\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tfset := token.NewFileSet()\n\t\tfile, err := parser.ParseFile(fset, fpath, nil, 0)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if this file contains the struct definition or type alias\n\t\tfound := false\n\t\tvar resolvedName string\n\t\tast.Inspect(file, func(n ast.Node) bool {\n\t\t\ttypeSpec, ok := n.(*ast.TypeSpec)\n\t\t\tif !ok || typeSpec.Name.Name != structName {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// check if it's a struct type\n\t\t\tif _, ok := typeSpec.Type.(*ast.StructType); ok {\n\t\t\t\tfound = true\n\t\t\t\tresolvedName = structName\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// check if it's a type alias (e.g., type DpkgArchiveEntry DpkgDBEntry)\n\t\t\tif ident, ok := typeSpec.Type.(*ast.Ident); ok {\n\t\t\t\tfound = true\n\t\t\t\tresolvedName = ident.Name\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\n\t\tif found {\n\t\t\t// if it's a type alias, recursively find the underlying struct\n\t\t\tif resolvedName != structName {\n\t\t\t\treturn findMetadataStructFile(repoRoot, resolvedName)\n\t\t\t}\n\t\t\treturn fpath, structName, nil\n\t\t}\n\t}\n\n\treturn \"\", \"\", fmt.Errorf(\"struct %q not found in syft/pkg/\", structName)\n}\n\n// parseEvidenceReference parses an evidence string like \"StructName.Field\" or \"StructName.Field1.Field2\"\n// into struct name and field path components\n// examples:\n//   - \"CondaMetaPackage.MD5\" -> (\"CondaMetaPackage\", []string{\"MD5\"})\n//   - \"CondaMetaPackage.PathsData.Paths\" -> (\"CondaMetaPackage\", []string{\"PathsData\", \"Paths\"})\n//   - \"AlpmDBEntry.Files[].Digest\" -> (\"AlpmDBEntry\", []string{\"Files\", \"[]\", \"Digest\"})\nfunc parseEvidenceReference(evidence string) (structName string, fieldPath []string, err error) {\n\tparts := strings.Split(evidence, \".\")\n\tif len(parts) < 2 {\n\t\treturn \"\", nil, fmt.Errorf(\"invalid evidence format: %q (expected at least StructName.Field)\", evidence)\n\t}\n\n\tstructName = parts[0]\n\t// process the remaining parts, splitting on [] for array notation\n\tfor _, part := range parts[1:] {\n\t\t// check if this part contains array notation\n\t\tif strings.Contains(part, \"[]\") {\n\t\t\t// split on [] - e.g., \"Files[]\" becomes [\"Files\", \"\"]\n\t\t\tsubparts := strings.Split(part, \"[]\")\n\t\t\tif len(subparts) > 0 && subparts[0] != \"\" {\n\t\t\t\tfieldPath = append(fieldPath, subparts[0])\n\t\t\t}\n\t\t\tfieldPath = append(fieldPath, \"[]\")\n\t\t} else {\n\t\t\tfieldPath = append(fieldPath, part)\n\t\t}\n\t}\n\n\treturn structName, fieldPath, nil\n}\n\n// validateFieldPath validates that a field path exists in a struct definition\n// handles simple fields, nested fields, and array element fields\n// fieldPath can contain \"[]\" to indicate array dereferencing\nfunc validateFieldPath(repoRoot, structName string, fieldPath []string) error {\n\tif len(fieldPath) == 0 {\n\t\treturn fmt.Errorf(\"empty field path\")\n\t}\n\n\t// find the file containing the struct (handles type aliases)\n\tfilePath, actualStructName, err := findMetadataStructFile(repoRoot, structName)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// parse the file\n\tfset := token.NewFileSet()\n\tfile, err := parser.ParseFile(fset, filePath, nil, 0)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse %s: %w\", filePath, err)\n\t}\n\n\t// find the struct fields using the actual struct name\n\tfields := findStructFields(file, actualStructName)\n\tif len(fields) == 0 {\n\t\treturn fmt.Errorf(\"struct %q not found in %s\", actualStructName, filePath)\n\t}\n\n\t// validate each component of the field path\n\tcurrentFields := fields\n\tcurrentStructName := actualStructName\n\tfor i, component := range fieldPath {\n\t\tif component == \"[]\" {\n\t\t\t// array dereference - this is a no-op for validation\n\t\t\t// the previous component should have been an array type\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldType, exists := currentFields[component]\n\t\tif !exists {\n\t\t\treturn fmt.Errorf(\"field %q not found in struct %q (path: %s)\", component, currentStructName, strings.Join(fieldPath[:i+1], \".\"))\n\t\t}\n\n\t\t// if there are more components, we need to navigate to the next struct\n\t\tif i < len(fieldPath)-1 {\n\t\t\t// extract the actual type name, removing pointer/array/slice markers\n\t\t\ttypeName := strings.TrimPrefix(fieldType, \"*\")\n\t\t\ttypeName = strings.TrimPrefix(typeName, \"[]\")\n\n\t\t\t// if it's not a simple type name (e.g., \"CondaPathsData\"), skip validation\n\t\t\t// this handles primitive types that don't have further fields\n\t\t\tif strings.Contains(typeName, \".\") {\n\t\t\t\t// qualified type like \"pkg.Something\" - extract just \"Something\"\n\t\t\t\tparts := strings.Split(typeName, \".\")\n\t\t\t\ttypeName = parts[len(parts)-1]\n\t\t\t}\n\n\t\t\t// try to find the nested struct (handles type aliases)\n\t\t\tnestedFilePath, nestedStructName, err := findMetadataStructFile(repoRoot, typeName)\n\t\t\tif err != nil {\n\t\t\t\t// if we can't find the struct, it might be a primitive or external type\n\t\t\t\t// we'll allow this to pass\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tnestedFset := token.NewFileSet()\n\t\t\tnestedFile, err := parser.ParseFile(nestedFset, nestedFilePath, nil, 0)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcurrentFields = findStructFields(nestedFile, nestedStructName)\n\t\t\tcurrentStructName = nestedStructName\n\t\t\tif len(currentFields) == 0 {\n\t\t\t\t// couldn't load the nested struct, but we found the field, so allow it\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// TestCapabilityEvidenceFieldReferences validates that evidence field references in capabilities\n// (e.g., \"AlpmDBEntry.Files[].Digests\") actually exist on their corresponding metadata structs by using\n// AST parsing to verify the field paths, preventing broken references when structs are refactored.\nfunc TestCapabilityEvidenceFieldReferences(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the cataloger/*/capabilities.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all evidence field references\n\ttype evidenceRef struct {\n\t\tcatalogerName  string\n\t\tparserFunction string // empty for cataloger-level\n\t\tcapabilityName string\n\t\tevidenceField  string\n\t}\n\n\tvar allReferences []evidenceRef\n\n\t// collect from cataloger-level capabilities (custom catalogers)\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Type == \"custom\" && len(cataloger.Capabilities) > 0 {\n\t\t\tfor _, capField := range cataloger.Capabilities {\n\t\t\t\tfor _, evidence := range capField.Evidence {\n\t\t\t\t\tallReferences = append(allReferences, evidenceRef{\n\t\t\t\t\t\tcatalogerName:  cataloger.Name,\n\t\t\t\t\t\tcapabilityName: capField.Name,\n\t\t\t\t\t\tevidenceField:  evidence,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// collect from parser-level capabilities (generic catalogers)\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, parser := range cataloger.Parsers {\n\t\t\t\tif len(parser.Capabilities) > 0 {\n\t\t\t\t\tfor _, capField := range parser.Capabilities {\n\t\t\t\t\t\tfor _, evidence := range capField.Evidence {\n\t\t\t\t\t\t\tallReferences = append(allReferences, evidenceRef{\n\t\t\t\t\t\t\t\tcatalogerName:  cataloger.Name,\n\t\t\t\t\t\t\t\tparserFunction: parser.ParserFunction,\n\t\t\t\t\t\t\t\tcapabilityName: capField.Name,\n\t\t\t\t\t\t\t\tevidenceField:  evidence,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// validate each evidence reference\n\tfor _, ref := range allReferences {\n\t\tref := ref // capture for subtest\n\n\t\t// create test name\n\t\ttestName := ref.catalogerName\n\t\tif ref.parserFunction != \"\" {\n\t\t\ttestName = fmt.Sprintf(\"%s/%s\", ref.catalogerName, ref.parserFunction)\n\t\t}\n\t\ttestName = fmt.Sprintf(\"%s/%s/%s\", testName, ref.capabilityName, ref.evidenceField)\n\n\t\tt.Run(testName, func(t *testing.T) {\n\t\t\t// parse the evidence reference\n\t\t\tstructName, fieldPath, err := parseEvidenceReference(ref.evidenceField)\n\t\t\trequire.NoError(t, err, \"failed to parse evidence reference\")\n\n\t\t\t// validate the field path exists\n\t\t\terr = validateFieldPath(repoRoot, structName, fieldPath)\n\t\t\trequire.NoError(t, err, \"evidence field reference is invalid\")\n\t\t})\n\t}\n}\n\n// TestDetectorConfigFieldReferences validates that config field names referenced in detector conditions\n// actually exist in the cataloger's config struct, ensuring that conditional detectors can properly\n// evaluate their activation conditions based on configuration.\nfunc TestDetectorConfigFieldReferences(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load the cataloger/*/capabilities.yaml\n\tdoc, _, err := LoadCapabilities(CatalogerDir(repoRoot), repoRoot)\n\trequire.NoError(t, err)\n\n\t// collect all validation errors before failing\n\tvar errors []string\n\n\t// check each cataloger's detectors\n\tfor _, cataloger := range doc.Catalogers {\n\t\tif cataloger.Type != \"custom\" {\n\t\t\tcontinue // only custom catalogers have detectors\n\t\t}\n\n\t\tfor detectorIdx, detector := range cataloger.Detectors {\n\t\t\t// if detector has no conditions, skip validation\n\t\t\tif len(detector.Conditions) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// detector has conditions - cataloger must have a config\n\t\t\tif cataloger.Config == \"\" {\n\t\t\t\terrors = append(errors,\n\t\t\t\t\tfmt.Sprintf(\"Cataloger %q detector %d has conditions but cataloger has no config struct\",\n\t\t\t\t\t\tcataloger.Name, detectorIdx))\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// load the cataloger's config struct\n\t\t\tconfigEntry, exists := doc.Configs[cataloger.Config]\n\t\t\tif !exists {\n\t\t\t\terrors = append(errors,\n\t\t\t\t\tfmt.Sprintf(\"Cataloger %q references config %q which doesn't exist\",\n\t\t\t\t\t\tcataloger.Name, cataloger.Config))\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// build a set of valid config field names\n\t\t\tvalidFields := make(map[string]bool)\n\t\t\tfor _, field := range configEntry.Fields {\n\t\t\t\tvalidFields[field.Key] = true\n\t\t\t}\n\n\t\t\t// validate each condition\n\t\t\tfor condIdx, condition := range detector.Conditions {\n\t\t\t\tfor fieldName := range condition.When {\n\t\t\t\t\tif !validFields[fieldName] {\n\t\t\t\t\t\terrors = append(errors,\n\t\t\t\t\t\t\tfmt.Sprintf(\"Cataloger %q detector %d condition %d references config field %q which doesn't exist in config struct %q\",\n\t\t\t\t\t\t\t\tcataloger.Name, detectorIdx, condIdx, fieldName, cataloger.Config))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// report all errors at once\n\tif len(errors) > 0 {\n\t\trequire.Fail(t, \"Detector config field reference validation failed\", strings.Join(errors, \"\\n\"))\n\t}\n}\n\n// TestCatalogersInSync ensures that all catalogers from the syft binary are documented in cataloger/*/capabilities.yaml\n// and vice versa, and that all capability fields are properly filled without TODOs or null values.\nfunc TestCatalogersInSync(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// get canonical list from syft binary\n\tcatalogersInBinary := getCatalogerNamesFromBinary(t)\n\n\t// load catalogers from embedded YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\tyamlCatalogers := strset.New()\n\tfor _, c := range catalogerEntries {\n\t\tyamlCatalogers.Add(c.Name)\n\t}\n\n\t// test 1: All catalogers in binary must be in YAML\n\tvar missingFromYAML []string\n\tfor _, name := range catalogersInBinary {\n\t\tif !yamlCatalogers.Has(name) {\n\t\t\tmissingFromYAML = append(missingFromYAML, name)\n\t\t}\n\t}\n\trequire.Empty(t, missingFromYAML,\n\t\t\"The following catalogers are in 'syft cataloger list' but missing from capabilities YAML: %v\\n\"+\n\t\t\t\"Run 'go generate ./internal/capabilities' to auto-add generic catalogers, or manually add custom catalogers.\",\n\t\tmissingFromYAML)\n\n\t// test 2: All catalogers in YAML must exist in binary\n\tvar orphanedInYAML []string\n\tbinarySet := strset.New()\n\tfor _, name := range catalogersInBinary {\n\t\tbinarySet.Add(name)\n\t}\n\tfor _, name := range yamlCatalogers.List() {\n\t\tif !binarySet.Has(name) {\n\t\t\torphanedInYAML = append(orphanedInYAML, name)\n\t\t}\n\t}\n\trequire.Empty(t, orphanedInYAML,\n\t\t\"The following catalogers are in capabilities YAML but not found in binary: %v\\n\"+\n\t\t\t\"These catalogers may have been removed. Delete them from the YAML.\",\n\t\torphanedInYAML)\n\n\t// test 3: All capabilities must be filled (no TODOs/nulls)\n\tvalidateCapabilitiesFilled(t, catalogerEntries)\n}\n\nfunc getCatalogerNamesFromBinary(t *testing.T) []string {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// get cataloger names from task factories\n\tinfos, err := AllPackageCatalogerInfo()\n\trequire.NoError(t, err)\n\n\tvar names []string\n\tfor _, info := range infos {\n\t\tnames = append(names, info.Name)\n\t}\n\n\tsort.Strings(names)\n\treturn names\n}\n\nfunc validateCapabilitiesFilled(t *testing.T, catalogers []capabilities.CatalogerEntry) {\n\tcheckCompletenessTestsEnabled(t)\n\n\tfor _, c := range catalogers {\n\t\tc := c // capture loop variable for subtest\n\n\t\tt.Run(c.Name, func(t *testing.T) {\n\t\t\tif c.Type == \"generic\" {\n\t\t\t\t// generic catalogers have parsers with capabilities\n\t\t\t\trequire.NotEmpty(t, c.Parsers, \"generic cataloger must have at least one parser\")\n\n\t\t\t\tfor _, p := range c.Parsers {\n\t\t\t\t\tp := p // capture loop variable for subtest\n\n\t\t\t\t\tt.Run(p.ParserFunction, func(t *testing.T) {\n\t\t\t\t\t\trequire.NotEmpty(t, p.Capabilities, \"parser must have at least one capability field defined\")\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else if c.Type == \"custom\" {\n\t\t\t\t// custom catalogers have cataloger-level capabilities\n\t\t\t\trequire.NotEmpty(t, c.Capabilities, \"custom cataloger must have at least one capability field defined\")\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestPackageTypeCoverage ensures that every package type defined in pkg.AllPkgs is represented in at least\n// one cataloger's capabilities, preventing orphaned package types that are defined but never documented.\nfunc TestPackageTypeCoverage(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// load catalogers from embedded YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\t// collect all package types mentioned in catalogers\n\tfoundPkgTypes := strset.New()\n\tfor _, cataloger := range catalogerEntries {\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, parser := range cataloger.Parsers {\n\t\t\t\tfor _, pkgType := range parser.PackageTypes {\n\t\t\t\t\tfoundPkgTypes.Add(pkgType)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if cataloger.Type == \"custom\" {\n\t\t\tfor _, pkgType := range cataloger.PackageTypes {\n\t\t\t\tfoundPkgTypes.Add(pkgType)\n\t\t\t}\n\t\t}\n\t}\n\n\t// check that all known package types are represented\n\tvar missingTypes []pkg.Type\n\tfor _, pkgType := range pkg.AllPkgs {\n\t\tif !foundPkgTypes.Has(string(pkgType)) {\n\t\t\tmissingTypes = append(missingTypes, pkgType)\n\t\t}\n\t}\n\n\t// filter out exceptions\n\tvar missingTypesWithoutExceptions []pkg.Type\n\tfor _, pkgType := range missingTypes {\n\t\tif !packageTypeCoverageExceptions.Has(string(pkgType)) {\n\t\t\tmissingTypesWithoutExceptions = append(missingTypesWithoutExceptions, pkgType)\n\t\t}\n\t}\n\n\trequire.Empty(t, missingTypesWithoutExceptions,\n\t\t\"The following package types are not represented in any cataloger: %v\\n\"+\n\t\t\t\"Either add catalogers for these types or update pkg.AllPkgs if they're no longer supported.\",\n\t\tmissingTypesWithoutExceptions)\n}\n\n// TestMetadataTypeCoverage ensures that every metadata type defined in packagemetadata.AllTypes() is represented\n// in at least one cataloger's capabilities, preventing orphaned metadata types that are defined but never produced.\nfunc TestMetadataTypeCoverage(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// load catalogers from embedded YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\t// collect all metadata types mentioned in catalogers\n\tfoundMetadataTypes := strset.New()\n\tfor _, cataloger := range catalogerEntries {\n\t\tif cataloger.Type == \"generic\" {\n\t\t\tfor _, p := range cataloger.Parsers {\n\t\t\t\tfor _, metadataType := range p.MetadataTypes {\n\t\t\t\t\tfoundMetadataTypes.Add(strings.TrimPrefix(metadataType, \"pkg.\"))\n\t\t\t\t}\n\t\t\t}\n\t\t} else if cataloger.Type == \"custom\" {\n\t\t\tfor _, metadataType := range cataloger.MetadataTypes {\n\t\t\t\tfoundMetadataTypes.Add(strings.TrimPrefix(metadataType, \"pkg.\"))\n\t\t\t}\n\t\t}\n\t}\n\n\t// get all known metadata types\n\tallMetadataTypes := packagemetadata.AllTypes()\n\n\t// check that all known metadata types are represented\n\tvar missingTypes []string\n\tfor _, metadataType := range allMetadataTypes {\n\t\ttypeName := reflect.TypeOf(metadataType).Name()\n\t\tif !foundMetadataTypes.Has(typeName) {\n\t\t\tmissingTypes = append(missingTypes, typeName)\n\t\t}\n\t}\n\n\t// filter out exceptions\n\tvar missingTypesWithoutExceptions []string\n\tfor _, metadataType := range missingTypes {\n\t\tif !metadataTypeCoverageExceptions.Has(metadataType) {\n\t\t\tmissingTypesWithoutExceptions = append(missingTypesWithoutExceptions, metadataType)\n\t\t}\n\t}\n\n\trequire.Empty(t, missingTypesWithoutExceptions,\n\t\t\"The following metadata types are not represented in any cataloger: %v\\n\"+\n\t\t\t\"Either add catalogers for these types or update packagemetadata.AllTypes() if they're no longer supported.\",\n\t\tmissingTypesWithoutExceptions)\n}\n\n// TestCatalogerStructure validates that catalogers follow structural conventions: generic catalogers must have\n// parsers and parser-level capabilities, custom catalogers must have detectors and cataloger-level capabilities,\n// and all catalogers must have an ecosystem set.\nfunc TestCatalogerStructure(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// load catalogers from embedded YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\tfor _, c := range catalogerEntries {\n\t\tc := c // capture loop variable for subtest\n\n\t\tt.Run(c.Name, func(t *testing.T) {\n\t\t\t// ecosystem must always be set (it's MANUAL)\n\t\t\trequire.NotEmpty(t, c.Ecosystem, \"ecosystem must be set for all catalogers\")\n\n\t\t\tif c.Type == \"generic\" {\n\t\t\t\t// generic catalogers must have parsers\n\t\t\t\trequire.NotEmpty(t, c.Parsers, \"generic cataloger must have at least one parser\")\n\n\t\t\t\t// generic catalogers should not have cataloger-level capabilities\n\t\t\t\trequire.Empty(t, c.Capabilities, \"generic cataloger should not have cataloger-level capabilities (use parser-level instead)\")\n\n\t\t\t\t// generic catalogers should not have cataloger-level metadata/package types\n\t\t\t\trequire.Empty(t, c.MetadataTypes, \"generic cataloger should not have cataloger-level metadata types\")\n\t\t\t\trequire.Empty(t, c.PackageTypes, \"generic cataloger should not have cataloger-level package types\")\n\t\t\t} else if c.Type == \"custom\" {\n\t\t\t\t// custom catalogers must have detectors\n\t\t\t\trequire.NotEmpty(t, c.Detectors, \"custom cataloger must have at least one detector\")\n\n\t\t\t\t// custom catalogers must have cataloger-level capabilities\n\t\t\t\trequire.NotEmpty(t, c.Capabilities, \"custom cataloger must have cataloger-level capabilities\")\n\n\t\t\t\t// custom catalogers should not have parsers\n\t\t\t\trequire.Empty(t, c.Parsers, \"custom cataloger should not have parsers (those are for generic catalogers)\")\n\t\t\t} else {\n\t\t\t\tt.Errorf(\"unknown cataloger type: %q (must be 'generic' or 'custom')\", c.Type)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestCatalogerDataQuality checks for data integrity issues in cataloger/*/capabilities.yaml, including duplicate cataloger\n// names, duplicate parser functions within catalogers, and validates that detector definitions are well-formed.\nfunc TestCatalogerDataQuality(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\t// load catalogers from embedded YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\tt.Run(\"no duplicate cataloger names\", func(t *testing.T) {\n\t\tnameCount := make(map[string]int)\n\t\tfor _, cataloger := range catalogerEntries {\n\t\t\tnameCount[cataloger.Name]++\n\t\t}\n\n\t\tvar duplicates []string\n\t\tfor name, count := range nameCount {\n\t\t\tif count > 1 {\n\t\t\t\tduplicates = append(duplicates, fmt.Sprintf(\"%s (appears %d times)\", name, count))\n\t\t\t}\n\t\t}\n\n\t\trequire.Empty(t, duplicates, \"Found duplicate cataloger names: %v\", duplicates)\n\t})\n\n\tt.Run(\"detector validation for custom catalogers\", func(t *testing.T) {\n\t\tfor _, c := range catalogerEntries {\n\t\t\tif c.Type != \"custom\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tc := c // capture loop variable\n\n\t\t\tt.Run(c.Name, func(t *testing.T) {\n\t\t\t\trequire.NotEmpty(t, c.Detectors, \"custom cataloger must have at least one detector\")\n\n\t\t\t\tfor i, detector := range c.Detectors {\n\t\t\t\t\tt.Run(fmt.Sprintf(\"detector-%d\", i), func(t *testing.T) {\n\t\t\t\t\t\t// detector criteria must not be empty\n\t\t\t\t\t\trequire.NotEmpty(t, detector.Criteria, \"detector criteria must not be empty\")\n\n\t\t\t\t\t\t// detector method must be valid\n\t\t\t\t\t\tvalidMethods := map[capabilities.ArtifactDetectionMethod]bool{\n\t\t\t\t\t\t\tcapabilities.GlobDetection:     true,\n\t\t\t\t\t\t\tcapabilities.PathDetection:     true,\n\t\t\t\t\t\t\tcapabilities.MIMETypeDetection: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t\trequire.True(t, validMethods[detector.Method],\n\t\t\t\t\t\t\t\"detector method must be one of: glob, path, mimetype (got %q)\", detector.Method)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t})\n\n\tt.Run(\"no duplicate parser functions within cataloger\", func(t *testing.T) {\n\t\tfor _, c := range catalogerEntries {\n\t\t\tif c.Type != \"generic\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tc := c // capture loop variable\n\n\t\t\tt.Run(c.Name, func(t *testing.T) {\n\t\t\t\tparserFuncs := strset.New()\n\t\t\t\tvar duplicates []string\n\n\t\t\t\tfor _, p := range c.Parsers {\n\t\t\t\t\tif parserFuncs.Has(p.ParserFunction) {\n\t\t\t\t\t\tduplicates = append(duplicates, p.ParserFunction)\n\t\t\t\t\t}\n\t\t\t\t\tparserFuncs.Add(p.ParserFunction)\n\t\t\t\t}\n\n\t\t\t\trequire.Empty(t, duplicates, \"Found duplicate parser functions: %v\", duplicates)\n\t\t\t})\n\t\t}\n\t})\n}\n\n// TestCatalogersHaveTestObservations ensures that all custom catalogers (and optionally parsers) have\n// test observations recorded in testdata/test-observations.json, which proves they are using the\n// pkgtest.CatalogTester helpers and have test coverage.\nfunc TestCatalogersHaveTestObservations(t *testing.T) {\n\tcheckCompletenessTestsEnabled(t)\n\n\trepoRoot, err := RepoRoot()\n\trequire.NoError(t, err)\n\n\t// load catalogers from YAML\n\tcatalogerEntries, err := capabilities.Packages()\n\trequire.NoError(t, err)\n\n\t// collect all catalogers and parsers from observations\n\tobservedCatalogers := strset.New()\n\tobservedParsers := make(map[string]*strset.Set) // package -> parser set\n\n\t// walk testdata directories to find test-observations.json files\n\ttestDataDirs, err := FindTestDataDirs(repoRoot)\n\trequire.NoError(t, err)\n\n\tfor _, dir := range testDataDirs {\n\t\tobservationsFile := filepath.Join(dir, \"test-observations.json\")\n\t\tif _, err := os.Stat(observationsFile); os.IsNotExist(err) {\n\t\t\tcontinue\n\t\t}\n\n\t\tobservations, err := ReadTestObservations(observationsFile)\n\t\tif err != nil {\n\t\t\tt.Logf(\"Warning: failed to read %s: %v\", observationsFile, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// track observed catalogers\n\t\tfor catalogerName := range observations.Catalogers {\n\t\t\tobservedCatalogers.Add(catalogerName)\n\t\t}\n\n\t\t// track observed parsers\n\t\tp := observations.Package\n\t\tif observedParsers[p] == nil {\n\t\t\tobservedParsers[p] = strset.New()\n\t\t}\n\t\tfor parserName := range observations.Parsers {\n\t\t\tobservedParsers[p].Add(parserName)\n\t\t}\n\t}\n\n\t// infer parser observations for single-parser catalogers\n\t// if a cataloger has only one parser and the cataloger was observed, assume the parser was evaluated\n\tfor _, cataloger := range catalogerEntries {\n\t\tif cataloger.Type == \"generic\" && len(cataloger.Parsers) == 1 && observedCatalogers.Has(cataloger.Name) {\n\t\t\tpackageName := extractPackageName(cataloger.Name)\n\t\t\tif observedParsers[packageName] == nil {\n\t\t\t\tobservedParsers[packageName] = strset.New()\n\t\t\t}\n\t\t\tobservedParsers[packageName].Add(cataloger.Parsers[0].ParserFunction)\n\t\t}\n\t}\n\n\t// verify catalogers have observations\n\tvar missingCatalogers []string\n\tvar missingParsers []string\n\n\tfor _, cataloger := range catalogerEntries {\n\t\tif cataloger.Type == \"custom\" {\n\t\t\t// custom catalogers should always have cataloger-level observations\n\t\t\t// skip if this cataloger has an exception (nil or non-nil)\n\t\t\tif _, hasException := observationExceptions[cataloger.Name]; hasException {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !observedCatalogers.Has(cataloger.Name) {\n\t\t\t\tmissingCatalogers = append(missingCatalogers, cataloger.Name)\n\t\t\t}\n\t\t} else if cataloger.Type == \"generic\" && requireParserObservations {\n\t\t\t// generic catalogers have parser-level observations (only checked if requireParserObservations=true)\n\t\t\t// skip if the cataloger itself has an exception (applies to all its parsers)\n\t\t\tif _, hasException := observationExceptions[cataloger.Name]; hasException {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// extract package name from cataloger name\n\t\t\tpackageName := extractPackageName(cataloger.Name)\n\n\t\t\tfor _, p := range cataloger.Parsers {\n\t\t\t\tparserKey := fmt.Sprintf(\"%s/%s\", cataloger.Name, p.ParserFunction)\n\t\t\t\t// skip if this specific parser has an exception (nil or non-nil)\n\t\t\t\tif _, hasException := observationExceptions[parserKey]; hasException {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif observedParsers[packageName] == nil || !observedParsers[packageName].Has(p.ParserFunction) {\n\t\t\t\t\tmissingParsers = append(missingParsers, parserKey)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trequire.Empty(t, missingCatalogers,\n\t\t\"The following custom catalogers have no test observations (not using pkgtest helpers): %v\\n\"+\n\t\t\t\"Update tests to use CatalogTester.TestCataloger() from syft/pkg/cataloger/internal/pkgtest\",\n\t\tmissingCatalogers)\n\n\tif requireParserObservations {\n\t\trequire.Empty(t, missingParsers,\n\t\t\t\"The following parsers have no test observations (not using pkgtest helpers): %v\\n\"+\n\t\t\t\t\"Update tests to use CatalogTester.TestParser() from syft/pkg/cataloger/internal/pkgtest\",\n\t\t\tmissingParsers)\n\t}\n}\n\n// extractPackageName extracts the package name from a cataloger name\n// e.g., \"javascript-lock-cataloger\" -> \"javascript\"\nfunc extractPackageName(catalogerName string) string {\n\t// package name is the first segment before the first dash\n\tfor i, ch := range catalogerName {\n\t\tif ch == '-' {\n\t\t\treturn catalogerName[:i]\n\t\t}\n\t}\n\treturn catalogerName\n}\n"
  },
  {
    "path": "internal/capabilities/internal/paths.go",
    "content": "// this file provides a single source of truth for all capability file paths used in generation and testing.\npackage internal\n\nimport \"path/filepath\"\n\n// path constants - single source of truth for all capability file locations\nconst (\n\t// CatalogerDirRel is the cataloger directory relative to repo root\n\tCatalogerDirRel = \"syft/pkg/cataloger\"\n\n\t// InternalCapabilitiesDirRel is internal capabilities dir relative to repo root\n\tInternalCapabilitiesDirRel = \"internal/capabilities\"\n\n\t// CapabilitiesFilename is the capabilities file name within each ecosystem dir\n\tCapabilitiesFilename = \"capabilities.yaml\"\n\n\t// AppconfigFilename is the application config filename\n\tAppconfigFilename = \"appconfig.yaml\"\n)\n\n// CatalogerDir returns absolute path to cataloger directory\nfunc CatalogerDir(repoRoot string) string {\n\treturn filepath.Join(repoRoot, CatalogerDirRel)\n}\n\n// CapabilitiesDir returns absolute path to internal capabilities\nfunc CapabilitiesDir(repoRoot string) string {\n\treturn filepath.Join(repoRoot, InternalCapabilitiesDirRel)\n}\n\n// EcosystemCapabilitiesPath returns path to an ecosystem's capabilities.yaml\nfunc EcosystemCapabilitiesPath(catalogerDir, ecosystem string) string {\n\treturn filepath.Join(catalogerDir, ecosystem, CapabilitiesFilename)\n}\n\n// AppconfigPath returns path to appconfig.yaml (in internal/capabilities)\nfunc AppconfigPath(repoRoot string) string {\n\treturn filepath.Join(CapabilitiesDir(repoRoot), AppconfigFilename)\n}\n"
  },
  {
    "path": "internal/capabilities/internal/repo_root.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// RepoRoot finds the git repository root directory.\n// Exported for use by the generator in generate/main.go\nfunc RepoRoot() (string, error) {\n\troot, err := exec.Command(\"git\", \"rev-parse\", \"--show-toplevel\").Output()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to find repo root dir: %+v\", err)\n\t}\n\tabsRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get abs path to repo root: %w\", err)\n\t}\n\treturn absRepoRoot, nil\n}\n"
  },
  {
    "path": "internal/capabilities/internal/util_test.go",
    "content": "package internal\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\n// checkCompletenessTestsEnabled skips the test if completeness tests are not enabled via environment variable.\n// Why do this at all? Can't we just run these tests all the time? Short answer: No.\n// These tests are coupled with unit tests under ./syft/pkg/..., which means that these tests must be run not only\n// after those unit tests, but also after code generation that reads observations from test results.\n// This means that we should not really consider these tests as part of normal unit test runs, but rather as a separate\n// self-consistency check during generation, and it's really static analysis that should be checking\n// if the generated code has drifted (not a unit test).\nfunc checkCompletenessTestsEnabled(t *testing.T) {\n\tenabled := os.Getenv(\"SYFT_ENABLE_COMPLETENESS_TESTS\") == \"true\"\n\tif !enabled {\n\t\tt.Skip(\"skipping completeness tests (SYFT_ENABLE_COMPLETENESS_TESTS is not set to 'true')\")\n\t}\n}\n"
  },
  {
    "path": "internal/capabilities/model.go",
    "content": "package capabilities\n\n// ArtifactDetectionMethod specifies the type of artifact detection mechanism\ntype ArtifactDetectionMethod string\n\nconst (\n\t// GlobDetection matches artifacts using glob patterns (e.g., \"**/*.jar\", \"*.pyc\")\n\tGlobDetection ArtifactDetectionMethod = \"glob\"\n\t// PathDetection matches artifacts by exact file path (e.g., \"/usr/bin/python\", \"package.json\")\n\tPathDetection ArtifactDetectionMethod = \"path\"\n\t// MIMETypeDetection matches artifacts by MIME type (e.g., \"application/x-executable\", \"text/x-python\")\n\tMIMETypeDetection ArtifactDetectionMethod = \"mimetype\"\n)\n\n// Document represents the root structure of the capabilities YAML file\ntype Document struct {\n\tConfigs           map[string]CatalogerConfigEntry `yaml:\"configs,omitempty\" json:\"configs,omitempty\"`         // config structs with their fields\n\tApplicationConfig []ApplicationConfigField        `yaml:\"application,omitempty\" json:\"application,omitempty\"` // application-level config keys\n\tCatalogers        []CatalogerEntry                `yaml:\"catalogers\" json:\"catalogers\"`\n}\n\n// CatalogerConfigFieldEntry represents a single field in a cataloger configuration struct\ntype CatalogerConfigFieldEntry struct {\n\tKey         string `yaml:\"key\" json:\"key\"`\n\tDescription string `yaml:\"description\" json:\"description\"`\n\tAppKey      string `yaml:\"app_key,omitempty\" json:\"app_key,omitempty\"` // maps to app-level config key\n}\n\n// CatalogerConfigEntry represents a complete configuration struct (e.g., golang.CatalogerConfig)\ntype CatalogerConfigEntry struct {\n\tFields []CatalogerConfigFieldEntry `yaml:\"fields\" json:\"fields\"`\n}\n\n// ApplicationConfigField represents an application-level configuration field\ntype ApplicationConfigField struct {\n\tKey          string `yaml:\"key\" json:\"key\"`\n\tDescription  string `yaml:\"description\" json:\"description\"`\n\tDefaultValue any    `yaml:\"default,omitempty\" json:\"default,omitempty\"`\n}\n\n// Source describes the source code location of a cataloger\ntype Source struct {\n\tFile     string `yaml:\"file\" json:\"file\"`         // AUTO-GENERATED for generic, MANUAL for custom\n\tFunction string `yaml:\"function\" json:\"function\"` // AUTO-GENERATED for generic, MANUAL for custom\n}\n\n// Detector describes how artifacts are detected (method and criteria)\ntype Detector struct {\n\tMethod     ArtifactDetectionMethod `yaml:\"method\" json:\"method\"`                             // AUTO-GENERATED\n\tCriteria   []string                `yaml:\"criteria\" json:\"criteria\"`                         // AUTO-GENERATED\n\tConditions []DetectorCondition     `yaml:\"conditions,omitempty\" json:\"conditions,omitempty\"` // MANUAL - when this detector should be active\n\tPackages   []DetectorPackageInfo   `yaml:\"packages,omitempty\" json:\"packages,omitempty\"`     // AUTO-GENERATED for binary-classifier-cataloger\n\tComment    string                  `yaml:\"comment,omitempty\" json:\"comment,omitempty\"`       // MANUAL - explanation of this detector\n}\n\n// DetectorPackageInfo describes package information that a detector can produce\ntype DetectorPackageInfo struct {\n\tClass string   `yaml:\"class\" json:\"class\"` // classifier class (e.g., \"python-binary-lib\")\n\tName  string   `yaml:\"name\" json:\"name\"`   // package name (e.g., \"python\")\n\tPURL  string   `yaml:\"purl\" json:\"purl\"`   // package URL without version (e.g., \"pkg:generic/python\")\n\tCPEs  []string `yaml:\"cpes\" json:\"cpes\"`   // CPE strings\n\tType  string   `yaml:\"type\" json:\"type\"`   // package type (e.g., \"BinaryPkg\")\n}\n\n// DetectorCondition specifies when a detector should be active based on configuration\ntype DetectorCondition struct {\n\t// When specifies config field names and their required values (all must match - AND logic)\n\tWhen map[string]any `yaml:\"when\" json:\"when\"`\n\t// Comment provides optional explanation of this condition\n\tComment string `yaml:\"comment,omitempty\" json:\"comment,omitempty\"`\n}\n\n// CatalogerEntry represents a single cataloger's capabilities\ntype CatalogerEntry struct {\n\tEcosystem       string        `yaml:\"ecosystem\" json:\"ecosystem\"`                                     // MANUAL - ecosystem categorization (e.g., \"python\", \"java\", \"javascript\")\n\tName            string        `yaml:\"name\" json:\"name\"`                                               // AUTO-GENERATED for generic, MANUAL for custom\n\tType            string        `yaml:\"type\" json:\"type\"`                                               // AUTO-GENERATED: \"generic\" or \"custom\"\n\tSource          Source        `yaml:\"source\" json:\"source\"`                                           // AUTO-GENERATED for generic, MANUAL for custom\n\tConfig          string        `yaml:\"config,omitempty\" json:\"config,omitempty\"`                       // e.g., \"golang.CatalogerConfig\"\n\tSelectors       []string      `yaml:\"selectors,omitempty\" json:\"selectors,omitempty\"`                 // AUTO-GENERATED - cataloger name tags for selection\n\tParsers         []Parser      `yaml:\"parsers,omitempty\" json:\"parsers,omitempty\"`                     // AUTO-GENERATED structure, only for type=generic\n\tDetectors       []Detector    `yaml:\"detectors,omitempty\" json:\"detectors,omitempty\"`                 // AUTO-GENERATED - detection methods (only for type=custom)\n\tMetadataTypes   []string      `yaml:\"metadata_types,omitempty\" json:\"metadata_types,omitempty\"`       // AUTO-GENERATED - pkg metadata types emitted (only for type=custom)\n\tPackageTypes    []string      `yaml:\"package_types,omitempty\" json:\"package_types,omitempty\"`         // AUTO-GENERATED - package types emitted (only for type=custom)\n\tJSONSchemaTypes []string      `yaml:\"json_schema_types,omitempty\" json:\"json_schema_types,omitempty\"` // AUTO-GENERATED - JSON schema type names (UpperCamelCase)\n\tCapabilities    CapabilitySet `yaml:\"capabilities,omitempty\" json:\"capabilities,omitempty\"`           // MANUAL - config-driven capability definitions (only for type=custom)\n}\n\n// Parser represents a parser function and its artifact detection criteria for generic catalogers\ntype Parser struct {\n\tParserFunction  string        `yaml:\"function\" json:\"function\"`                                       // AUTO-GENERATED (used as preservation key)\n\tDetector        Detector      `yaml:\"detector\" json:\"detector\"`                                       // AUTO-GENERATED - how artifacts are detected\n\tMetadataTypes   []string      `yaml:\"metadata_types,omitempty\" json:\"metadata_types,omitempty\"`       // AUTO-GENERATED - pkg metadata types emitted by this parser\n\tPackageTypes    []string      `yaml:\"package_types,omitempty\" json:\"package_types,omitempty\"`         // AUTO-GENERATED - package types emitted by this parser\n\tJSONSchemaTypes []string      `yaml:\"json_schema_types,omitempty\" json:\"json_schema_types,omitempty\"` // AUTO-GENERATED - JSON schema type names (UpperCamelCase)\n\tCapabilities    CapabilitySet `yaml:\"capabilities,omitempty\" json:\"capabilities,omitempty\"`           // MANUAL - config-driven capability definitions\n}\n\n// CapabilityField represents a single capability field with optional conditional values based on configuration.\n// This is the V2 capabilities format that replaces the mode-based approach.\ntype CapabilityField struct {\n\t// Name is the dot-notation path to the capability (e.g., \"license\", \"dependency.depth\")\n\tName string `yaml:\"name\" json:\"name\"`\n\t// Default is the value when no conditions match\n\tDefault any `yaml:\"default\" json:\"default\"`\n\t// Conditions are optional conditional overrides evaluated in order (first match wins)\n\tConditions []CapabilityCondition `yaml:\"conditions,omitempty\" json:\"conditions,omitempty\"`\n\t// Evidence provides optional references to source code that implements this capability\n\tEvidence []string `yaml:\"evidence,omitempty\" json:\"evidence,omitempty\"`\n\t// Comment provides optional human-readable explanation\n\tComment string `yaml:\"comment,omitempty\" json:\"comment,omitempty\"`\n}\n\n// CapabilityCondition represents a conditional override for a capability field value.\n// When the config fields specified in When match, the Value is used instead of Default.\ntype CapabilityCondition struct {\n\t// When specifies config field names and their required values (all must match - AND logic)\n\t// Example: {\"SearchRemoteLicenses\": true, \"UseNetwork\": true}\n\tWhen map[string]any `yaml:\"when\" json:\"when\"`\n\t// Value is the capability value when the condition matches\n\tValue any `yaml:\"value\" json:\"value\"`\n\t// Comment provides optional explanation of this condition\n\tComment string `yaml:\"comment,omitempty\" json:\"comment,omitempty\"`\n}\n\n// CapabilitySet represents a collection of capability fields (V2 format)\ntype CapabilitySet []CapabilityField\n"
  },
  {
    "path": "internal/capabilities/model_test.go",
    "content": "package capabilities\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\t\"gopkg.in/yaml.v3\"\n)\n\nfunc TestConfigSchemaExtensions(t *testing.T) {\n\t// create a document with configs and app-configs\n\tdoc := Document{\n\t\tConfigs: map[string]CatalogerConfigEntry{\n\t\t\t\"golang.CatalogerConfig\": {\n\t\t\t\tFields: []CatalogerConfigFieldEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:         \"SearchLocalModCacheLicenses\",\n\t\t\t\t\t\tDescription: \"searchLocalModCacheLicenses enables searching for go package licenses in the local GOPATH mod cache.\",\n\t\t\t\t\t\tAppKey:      \"golang.search-local-mod-cache-licenses\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:         \"LocalModCacheDir\",\n\t\t\t\t\t\tDescription: \"localModCacheDir specifies the location of the local go module cache directory.\",\n\t\t\t\t\t\tAppKey:      \"golang.local-mod-cache-dir\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"python.CatalogerConfig\": {\n\t\t\t\tFields: []CatalogerConfigFieldEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:         \"GuessUnpinnedRequirements\",\n\t\t\t\t\t\tDescription: \"guessUnpinnedRequirements attempts to infer package versions from version constraints...\",\n\t\t\t\t\t\tAppKey:      \"python.guess-unpinned-requirements\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tApplicationConfig: []ApplicationConfigField{\n\t\t\t{\n\t\t\t\tKey:          \"golang.search-local-mod-cache-licenses\",\n\t\t\t\tDescription:  \"search for go package licences in the GOPATH of the system running Syft\",\n\t\t\t\tDefaultValue: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tKey:          \"python.guess-unpinned-requirements\",\n\t\t\t\tDescription:  \"attempt to guess what the version could be based on version requirements\",\n\t\t\t\tDefaultValue: false,\n\t\t\t},\n\t\t},\n\t\tCatalogers: []CatalogerEntry{\n\t\t\t{\n\t\t\t\tName:   \"go-module-binary-cataloger\",\n\t\t\t\tType:   \"generic\",\n\t\t\t\tConfig: \"golang.CatalogerConfig\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   \"python-package-cataloger\",\n\t\t\t\tType:   \"generic\",\n\t\t\t\tConfig: \"python.CatalogerConfig\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// marshal to YAML\n\tyamlData, err := yaml.Marshal(&doc)\n\trequire.NoError(t, err)\n\n\t// verify YAML contains expected sections\n\tyamlStr := string(yamlData)\n\trequire.Contains(t, yamlStr, \"configs:\")\n\trequire.Contains(t, yamlStr, \"golang.CatalogerConfig:\")\n\trequire.Contains(t, yamlStr, \"SearchLocalModCacheLicenses\")\n\trequire.Contains(t, yamlStr, \"application:\")\n\trequire.Contains(t, yamlStr, \"golang.search-local-mod-cache-licenses\")\n\n\t// unmarshal back\n\tvar unmarshaled Document\n\terr = yaml.Unmarshal(yamlData, &unmarshaled)\n\trequire.NoError(t, err)\n\n\t// verify data integrity\n\tif diff := cmp.Diff(doc, unmarshaled); diff != \"\" {\n\t\tt.Errorf(\"document mismatch (-want +got):\\n%s\", diff)\n\t}\n}\n\nfunc TestConfigSchemaOmitEmpty(t *testing.T) {\n\t// create a document with no configs or app-configs\n\tdoc := Document{\n\t\tCatalogers: []CatalogerEntry{\n\t\t\t{\n\t\t\t\tName: \"test-cataloger\",\n\t\t\t\tType: \"generic\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// marshal to YAML\n\tyamlData, err := yaml.Marshal(&doc)\n\trequire.NoError(t, err)\n\n\t// verify configs and application are omitted when empty\n\tyamlStr := string(yamlData)\n\trequire.NotContains(t, yamlStr, \"configs:\")\n\trequire.NotContains(t, yamlStr, \"application:\")\n}\n\nfunc TestCatalogerConfigField(t *testing.T) {\n\t// create a cataloger with config field\n\tentry := CatalogerEntry{\n\t\tName:   \"test-cataloger\",\n\t\tType:   \"generic\",\n\t\tConfig: \"test.CatalogerConfig\",\n\t}\n\n\t// marshal to YAML\n\tyamlData, err := yaml.Marshal(&entry)\n\trequire.NoError(t, err)\n\n\t// verify config field is present\n\tyamlStr := string(yamlData)\n\trequire.Contains(t, yamlStr, \"config: test.CatalogerConfig\")\n\n\t// unmarshal back\n\tvar unmarshaled CatalogerEntry\n\terr = yaml.Unmarshal(yamlData, &unmarshaled)\n\trequire.NoError(t, err)\n\n\t// verify data integrity\n\trequire.Equal(t, entry.Config, unmarshaled.Config)\n}\n\nfunc TestCatalogerConfigFieldOmitEmpty(t *testing.T) {\n\t// create a cataloger without config field\n\tentry := CatalogerEntry{\n\t\tName: \"test-cataloger\",\n\t\tType: \"generic\",\n\t}\n\n\t// marshal to YAML\n\tyamlData, err := yaml.Marshal(&entry)\n\trequire.NoError(t, err)\n\n\t// verify config field is omitted when empty\n\tyamlStr := string(yamlData)\n\trequire.NotContains(t, yamlStr, \"config:\")\n}\n"
  },
  {
    "path": "internal/capabilities/pkgtestobservation/model.go",
    "content": "package pkgtestobservation\n\nimport \"time\"\n\n// Observations represents capability observations during testing\ntype Observations struct {\n\tLicense       bool         `json:\"license\"`\n\tRelationships Relationship `json:\"relationships\"`\n\tFileListing   Count        `json:\"file_listing\"`\n\tFileDigests   Count        `json:\"file_digests\"`\n\tIntegrityHash Count        `json:\"integrity_hash\"`\n}\n\n// Relationship tracks dependency relationship observations\ntype Relationship struct {\n\tFound bool `json:\"found\"`\n\tCount int  `json:\"count\"`\n}\n\n// Count tracks whether a capability was found and how many times\ntype Count struct {\n\tFound bool `json:\"found\"`\n\tCount int  `json:\"count\"`\n}\n\n// Test is the root structure for test-observations.json\ntype Test struct {\n\tPackage    string                `json:\"package\"`\n\tUpdatedAt  time.Time             `json:\"updated_at\"`\n\tCatalogers map[string]*Cataloger `json:\"catalogers\"`\n\tParsers    map[string]*Parser    `json:\"parsers\"`\n}\n\n// Parser captures all observations for a parser\ntype Parser struct {\n\tMetadataTypes []string     `json:\"metadata_types\"`\n\tPackageTypes  []string     `json:\"package_types\"`\n\tObservations  Observations `json:\"observations\"`\n}\n\n// Cataloger captures all observations for a cataloger\ntype Cataloger struct {\n\tMetadataTypes []string     `json:\"metadata_types\"`\n\tPackageTypes  []string     `json:\"package_types\"`\n\tObservations  Observations `json:\"observations\"`\n}\n"
  },
  {
    "path": "internal/capabilities/util_test.go",
    "content": "package capabilities\n\nimport (\n\t\"os\"\n\t\"testing\"\n)\n\n// checkCompletenessTestsEnabled skips the test if completeness tests are not enabled via environment variable.\n// Why do this at all? Can't we just run these tests all the time? Short answer: No.\n// These tests are coupled with unit tests under ./syft/pkg/..., which means that these tests must be run not only\n// after those unit tests, but also after code generation that reads observations from test results.\n// This means that we should not really consider these tests as part of normal unit test runs, but rather as a separate\n// self-consistency check during generation, and it's really static analysis that should be checking\n// if the generated code has drifted (not a unit test).\nfunc checkCompletenessTestsEnabled(t *testing.T) {\n\tenabled := os.Getenv(\"SYFT_ENABLE_COMPLETENESS_TESTS\") == \"true\"\n\tif !enabled {\n\t\tt.Skip(\"skipping completeness tests (SYFT_ENABLE_COMPLETENESS_TESTS is not set to 'true')\")\n\t}\n}\n"
  },
  {
    "path": "internal/cmptest/common_options.go",
    "content": "package cmptest\n\nimport (\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\n\t\"github.com/anchore/syft/internal/evidence\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc DefaultOptions() []cmp.Option {\n\treturn BuildOptions(nil, nil)\n}\n\nfunc DefaultIgnoreLocationLayerOptions() []cmp.Option {\n\treturn BuildOptions(LicenseComparerWithoutLocationLayer, LocationComparerWithoutLayer)\n}\n\nfunc BuildOptions(licenseCmp LicenseComparer, locationCmp LocationComparer) []cmp.Option {\n\tif licenseCmp == nil {\n\t\tlicenseCmp = DefaultLicenseComparer\n\t}\n\n\tif locationCmp == nil {\n\t\tlocationCmp = DefaultLocationComparer\n\t}\n\n\treturn []cmp.Option{\n\t\tcmpopts.IgnoreFields(pkg.Package{}, \"id\"),      // note: ID is not deterministic for test purposes\n\t\tcmpopts.IgnoreFields(pkg.Package{}, \"FoundBy\"), // not necessary in most tests\n\t\tcmpopts.SortSlices(pkg.Less),\n\t\tcmpopts.SortSlices(DefaultRelationshipComparer),\n\t\tcmp.Comparer(buildSetComparer[file.Location, file.LocationSet](locationCmp, locationSorter)),\n\t\tcmp.Comparer(buildSetComparer[pkg.License, pkg.LicenseSet](licenseCmp)),\n\t\tcmp.Comparer(locationCmp),\n\t\tcmp.Comparer(licenseCmp),\n\t}\n}\n\n// LocationSorter always sorts by evidence annotations first, then by access path, then by real path.\n// This intentionally does not consider layer details since some test fixtures have no layer information\n// on the left side of the comparison (expected) and does on the right side (actual).\nfunc locationSorter(a, b file.Location) int {\n\t// compare by evidence annotations first...\n\taEvidence := a.Annotations[evidence.AnnotationKey]\n\tbEvidence := b.Annotations[evidence.AnnotationKey]\n\n\tif aEvidence != bEvidence {\n\t\tif aEvidence == evidence.PrimaryAnnotation {\n\t\t\treturn -1\n\t\t}\n\t\tif bEvidence == evidence.PrimaryAnnotation {\n\t\t\treturn 1\n\t\t}\n\n\t\tif aEvidence > bEvidence {\n\t\t\treturn -1\n\t\t}\n\t\tif bEvidence > aEvidence {\n\t\t\treturn 1\n\t\t}\n\t}\n\n\t// ...then by paths\n\tif a.AccessPath != b.AccessPath {\n\t\treturn strings.Compare(a.AccessPath, b.AccessPath)\n\t}\n\n\treturn strings.Compare(a.RealPath, b.RealPath)\n}\n"
  },
  {
    "path": "internal/cmptest/diff_reporter.go",
    "content": "package cmptest\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\n// DiffReporter is a simple custom reporter that only records differences detected during comparison.\ntype DiffReporter struct {\n\tpath  cmp.Path\n\tdiffs []string\n}\n\nfunc NewDiffReporter() DiffReporter {\n\treturn DiffReporter{}\n}\n\nfunc (r *DiffReporter) PushStep(ps cmp.PathStep) {\n\tr.path = append(r.path, ps)\n}\n\nfunc (r *DiffReporter) Report(rs cmp.Result) {\n\tif !rs.Equal() {\n\t\tvx, vy := r.path.Last().Values()\n\t\tr.diffs = append(r.diffs, fmt.Sprintf(\"%#v:\\n\\t-: %+v\\n\\t+: %+v\\n\", r.path, vx, vy))\n\t}\n}\n\nfunc (r *DiffReporter) PopStep() {\n\tr.path = r.path[:len(r.path)-1]\n}\n\nfunc (r *DiffReporter) String() string {\n\treturn strings.Join(r.diffs, \"\\n\")\n}\n"
  },
  {
    "path": "internal/cmptest/license.go",
    "content": "package cmptest\n\nimport (\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype LicenseComparer func(x, y pkg.License) bool\n\nfunc DefaultLicenseComparer(x, y pkg.License) bool {\n\treturn cmp.Equal(\n\t\tx, y,\n\t\tcmp.Comparer(DefaultLocationComparer),\n\t\tcmp.Comparer(buildSetComparer[file.Location, file.LocationSet](DefaultLocationComparer, locationSorter)),\n\t)\n}\n\nfunc LicenseComparerWithoutLocationLayer(x, y pkg.License) bool {\n\treturn cmp.Equal(\n\t\tx, y,\n\t\tcmp.Comparer(LocationComparerWithoutLayer),\n\t\tcmp.Comparer(buildSetComparer[file.Location, file.LocationSet](LocationComparerWithoutLayer, locationSorter)),\n\t)\n}\n"
  },
  {
    "path": "internal/cmptest/location.go",
    "content": "package cmptest\n\nimport (\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype LocationComparer func(x, y file.Location) bool\n\nfunc DefaultLocationComparer(x, y file.Location) bool {\n\treturn cmp.Equal(x.Coordinates, y.Coordinates, cmpopts.IgnoreUnexported(file.Coordinates{})) && cmp.Equal(x.AccessPath, y.AccessPath)\n}\n\nfunc LocationComparerWithoutLayer(x, y file.Location) bool {\n\treturn cmp.Equal(x.RealPath, y.RealPath) && cmp.Equal(x.AccessPath, y.AccessPath)\n}\n"
  },
  {
    "path": "internal/cmptest/relationship.go",
    "content": "package cmptest\n\nimport (\n\t\"github.com/sanity-io/litter\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\ntype RelationshipComparer func(x, y artifact.Relationship) bool\n\nvar relationshipStringer = litter.Options{\n\tCompact:           true,\n\tStripPackageNames: false,\n\tHidePrivateFields: true, // we want to ignore package IDs\n\tHideZeroValues:    true,\n\tStrictGo:          true,\n\t//FieldExclusions: ...  // these can be added for future values that need to be ignored\n\t//FieldFilter: ...\n}\n\nfunc DefaultRelationshipComparer(x, y artifact.Relationship) bool {\n\t// we just need a stable sort, the ordering does not need to be sensible\n\txStr := relationshipStringer.Sdump(x)\n\tyStr := relationshipStringer.Sdump(y)\n\treturn xStr < yStr\n}\n"
  },
  {
    "path": "internal/cmptest/set.go",
    "content": "package cmptest\n\ntype slicer[T any] interface {\n\tToSlice(sorter ...func(a, b T) int) []T\n}\n\nfunc buildSetComparer[T any, S slicer[T]](l func(x, y T) bool, sorters ...func(a, b T) int) func(x, y S) bool {\n\treturn func(x, y S) bool {\n\t\txs := x.ToSlice(sorters...)\n\t\tys := y.ToSlice(sorters...)\n\n\t\tif len(xs) != len(ys) {\n\t\t\treturn false\n\t\t}\n\t\tfor i, xe := range xs {\n\t\t\tye := ys[i]\n\t\t\tif !l(xe, ye) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n}\n"
  },
  {
    "path": "internal/constants.go",
    "content": "package internal\n\nconst (\n\t// JSONSchemaVersion is the current schema version output by the JSON encoder\n\t// This is roughly following the \"SchemaVer\" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment.\n\tJSONSchemaVersion = \"16.1.3\"\n\n\t// Changelog\n\t// 16.1.0 - reformulated the python pdm fields (added \"URL\" and removed the unused \"path\" field).\n\t// 16.1.1 - correct elf package osCpe field according to the document of systemd (also add appCpe field)\n\t// 16.1.2 - placeholder for 16.1.2 changelog\n\t// 16.1.3 - add GGUFFileParts to GGUFFileHeader metadata\n\n)\n"
  },
  {
    "path": "internal/docs.go",
    "content": "/*\nPackage internal contains miscellaneous functions and objects useful within syft but should not be used externally.\n*/\npackage internal\n"
  },
  {
    "path": "internal/err_helper.go",
    "content": "package internal\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// CloseAndLogError closes the given io.Closer and reports any errors found as a warning in the log\nfunc CloseAndLogError(closer io.Closer, location string) {\n\tif err := closer.Close(); err != nil {\n\t\t// suppress \"file already closed\" log messages\n\t\tif errors.Is(err, fs.ErrClosed) {\n\t\t\treturn\n\t\t}\n\t\tlog.Debugf(\"unable to close file for location=%q: %+v\", location, err)\n\t}\n}\n\ntype ErrPath struct {\n\tContext string\n\tPath    string\n\tErr     error\n}\n\nfunc (e ErrPath) Error() string {\n\treturn fmt.Sprintf(\"%s unable to observe contents of %+v: %v\", e.Context, e.Path, e.Err)\n}\n\nfunc IsErrPath(err error) bool {\n\tvar pathErr ErrPath\n\treturn errors.As(err, &pathErr)\n}\n\nfunc IsErrPathPermission(err error) bool {\n\tvar pathErr ErrPath\n\tif errors.As(err, &pathErr) {\n\t\treturn os.IsPermission(pathErr.Err)\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "internal/evidence/constants.go",
    "content": "package evidence\n\n// this package exists so that the file package can reference package evidence in tests without creating a circular dependency.\n\nconst (\n\tAnnotationKey        = \"evidence\"\n\tPrimaryAnnotation    = \"primary\"\n\tSupportingAnnotation = \"supporting\"\n)\n"
  },
  {
    "path": "internal/file/archive_aliases.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/mholt/archives\"\n)\n\n// compoundExtensionAliases maps shorthand archive extensions to their full forms.\n// The mholt/archives library doesn't recognize these aliases natively.\n//\n// See: https://github.com/anchore/syft/issues/4416\n// Reference: https://github.com/mholt/archives?tab=readme-ov-file#supported-compression-formats\nvar compoundExtensionAliases = map[string]string{\n\t\".tgz\":  \".tar.gz\",\n\t\".tbz2\": \".tar.bz2\",\n\t\".txz\":  \".tar.xz\",\n\t\".tlz\":  \".tar.lz\",\n\t\".tzst\": \".tar.zst\",\n}\n\n// IdentifyArchive is a wrapper around archives.Identify that handles compound extension\n// aliases (like .tgz -> .tar.gz) transparently. It first attempts filename-based detection\n// using the alias map, and falls back to content-based detection if needed.\n//\n// This function is a drop-in replacement for archives.Identify that centralizes\n// the compound alias handling logic in one place.\nfunc IdentifyArchive(ctx context.Context, path string, r io.Reader) (archives.Format, io.Reader, error) {\n\t// First, try to identify using the alias-mapped path (filename-based detection)\n\tnormalizedPath := handleCompoundArchiveAliases(path)\n\treturn archives.Identify(ctx, normalizedPath, r)\n}\n\n// handleCompoundArchiveAliases normalizes archive file paths that use compound extension\n// aliases (like .tgz) to their full forms (like .tar.gz) for correct identification\n// by the mholt/archives library.\nfunc handleCompoundArchiveAliases(path string) string {\n\text := filepath.Ext(path)\n\tif newExt, ok := compoundExtensionAliases[ext]; ok {\n\t\treturn strings.TrimSuffix(path, ext) + newExt\n\t}\n\treturn path\n}\n"
  },
  {
    "path": "internal/file/archive_aliases_test.go",
    "content": "package file\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestHandleCompoundArchiveAliases(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"tgz to tar.gz\",\n\t\t\tinput:    \"/path/to/archive.tgz\",\n\t\t\texpected: \"/path/to/archive.tar.gz\",\n\t\t},\n\t\t{\n\t\t\tname:     \"tbz2 to tar.bz2\",\n\t\t\tinput:    \"/path/to/archive.tbz2\",\n\t\t\texpected: \"/path/to/archive.tar.bz2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"txz to tar.xz\",\n\t\t\tinput:    \"/path/to/archive.txz\",\n\t\t\texpected: \"/path/to/archive.tar.xz\",\n\t\t},\n\t\t{\n\t\t\tname:     \"tlz to tar.lz\",\n\t\t\tinput:    \"/path/to/archive.tlz\",\n\t\t\texpected: \"/path/to/archive.tar.lz\",\n\t\t},\n\t\t{\n\t\t\tname:     \"tzst to tar.zst\",\n\t\t\tinput:    \"/path/to/archive.tzst\",\n\t\t\texpected: \"/path/to/archive.tar.zst\",\n\t\t},\n\t\t{\n\t\t\tname:     \"standard tar.gz unchanged\",\n\t\t\tinput:    \"/path/to/archive.tar.gz\",\n\t\t\texpected: \"/path/to/archive.tar.gz\",\n\t\t},\n\t\t{\n\t\t\tname:     \"zip unchanged\",\n\t\t\tinput:    \"/path/to/archive.zip\",\n\t\t\texpected: \"/path/to/archive.zip\",\n\t\t},\n\t\t{\n\t\t\tname:     \"no extension unchanged\",\n\t\t\tinput:    \"/path/to/archive\",\n\t\t\texpected: \"/path/to/archive\",\n\t\t},\n\t\t{\n\t\t\tname:     \"case sensitive - TGZ not matched\",\n\t\t\tinput:    \"/path/to/archive.TGZ\",\n\t\t\texpected: \"/path/to/archive.TGZ\",\n\t\t},\n\t\t{\n\t\t\tname:     \"just filename with tgz\",\n\t\t\tinput:    \"archive.tgz\",\n\t\t\texpected: \"archive.tar.gz\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := handleCompoundArchiveAliases(tt.input)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/file/copy.go",
    "content": "package file\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n)\n\nconst perFileReadLimit = 2 * GB\n\n// safeCopy limits the copy from the reader. This is useful when extracting files from archives to\n// protect against decompression bomb attacks.\nfunc safeCopy(writer io.Writer, reader io.Reader) error {\n\tnumBytes, err := io.Copy(writer, io.LimitReader(reader, perFileReadLimit))\n\tif numBytes >= perFileReadLimit || errors.Is(err, io.EOF) {\n\t\treturn fmt.Errorf(\"zip read limit hit (potential decompression bomb attack)\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "internal/file/digest.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/go-sync\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc supportedHashAlgorithms() []crypto.Hash {\n\treturn []crypto.Hash{\n\t\tcrypto.MD5,\n\t\tcrypto.SHA1,\n\t\tcrypto.SHA224,\n\t\tcrypto.SHA256,\n\t\tcrypto.SHA384,\n\t\tcrypto.SHA512,\n\t}\n}\n\n// Pre-computed hash values for empty files\nconst (\n\temptyMD5    = \"d41d8cd98f00b204e9800998ecf8427e\"\n\temptySHA1   = \"da39a3ee5e6b4b0d3255bfef95601890afd80709\"\n\temptySHA224 = \"d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f\"\n\temptySHA256 = \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n\temptySHA384 = \"38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b\"\n\temptySHA512 = \"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\"\n)\n\nfunc NewDigestsFromFile(ctx context.Context, closer io.ReadCloser, hashes []crypto.Hash) ([]file.Digest, error) {\n\thashes = NormalizeHashes(hashes)\n\t// create a set of hasher objects tied together with a single writer to feed content into\n\thashers := make([]hash.Hash, len(hashes))\n\twriters := make([]io.Writer, len(hashes))\n\tfor idx, hashObj := range hashes {\n\t\thashers[idx] = hashObj.New()\n\t\twriters[idx] = hashers[idx]\n\t}\n\n\tsize, err := io.Copy(sync.ParallelWriter(ctx, cataloging.ExecutorCPU, writers...), closer)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// For empty files, use pre-computed constants for better performance\n\tif size == 0 {\n\t\tresult := make([]file.Digest, len(hashes))\n\t\tfor idx, hashObj := range hashes {\n\t\t\tvar value string\n\t\t\tswitch hashObj {\n\t\t\tcase crypto.MD5:\n\t\t\t\tvalue = emptyMD5\n\t\t\tcase crypto.SHA1:\n\t\t\t\tvalue = emptySHA1\n\t\t\tcase crypto.SHA224:\n\t\t\t\tvalue = emptySHA224\n\t\t\tcase crypto.SHA256:\n\t\t\t\tvalue = emptySHA256\n\t\t\tcase crypto.SHA384:\n\t\t\t\tvalue = emptySHA384\n\t\t\tcase crypto.SHA512:\n\t\t\t\tvalue = emptySHA512\n\t\t\tdefault:\n\t\t\t\t// Fallback to calculated hash for unsupported algorithms\n\t\t\t\tvalue = fmt.Sprintf(\"%+x\", hashers[idx].Sum(nil))\n\t\t\t}\n\t\t\tresult[idx] = file.Digest{\n\t\t\t\tAlgorithm: CleanDigestAlgorithmName(hashObj.String()),\n\t\t\t\tValue:     value,\n\t\t\t}\n\t\t}\n\t\treturn result, nil\n\t}\n\n\tresult := make([]file.Digest, len(hashes))\n\t// Capture digests for all files with content. It is important to base this on actual\n\t// content SIZE rather than FILE TYPE, as it is possible for a tar to be crafted with\n\t// a header-only file type but a body is still allowed.\n\tfor idx, hasher := range hashers {\n\t\tresult[idx] = file.Digest{\n\t\t\tAlgorithm: CleanDigestAlgorithmName(hashes[idx].String()),\n\t\t\tValue:     fmt.Sprintf(\"%+x\", hasher.Sum(nil)),\n\t\t}\n\t}\n\n\treturn result, nil\n}\n\nfunc Hashers(names ...string) ([]crypto.Hash, error) {\n\thashByName := make(map[string]crypto.Hash)\n\tfor _, h := range supportedHashAlgorithms() {\n\t\thashByName[CleanDigestAlgorithmName(h.String())] = h\n\t}\n\n\tvar hashers []crypto.Hash\n\tfor _, hashStr := range names {\n\t\thashObj, ok := hashByName[CleanDigestAlgorithmName(hashStr)]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"unsupported hash algorithm: %s\", hashStr)\n\t\t}\n\t\thashers = append(hashers, hashObj)\n\t}\n\treturn NormalizeHashes(hashers), nil\n}\n\nfunc CleanDigestAlgorithmName(name string) string {\n\tlower := strings.ToLower(name)\n\treturn strings.ReplaceAll(lower, \"-\", \"\")\n}\n"
  },
  {
    "path": "internal/file/digest_test.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestCleanDigestAlgorithmName(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname:  \"go case\",\n\t\t\tinput: \"SHA-256\",\n\t\t\twant:  \"sha256\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, CleanDigestAlgorithmName(tt.input))\n\t\t})\n\t}\n}\n\nfunc TestNewDigestsFromFile(t *testing.T) {\n\trequire.NotEmpty(t, supportedHashAlgorithms())\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\thashes  []crypto.Hash\n\t\twant    []file.Digest\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"check supported hash algorithms\",\n\t\t\tfixture: \"testdata/digest.txt\",\n\t\t\thashes:  supportedHashAlgorithms(),\n\t\t\twant: []file.Digest{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"e8818a24402ae7f8b874cdd9350c1b51\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\tValue:     \"eea4671d168c81fd52e615ed9fb3531a526f4748\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha224\",\n\t\t\t\t\tValue:     \"fd993e84c7afb449d34bcae7c5ee118f5c73b50170da05171523b22c\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     \"cbf1a703b7e4a67529d6e17114880dfa9f879f3749872e1a9d4a20ac509165ad\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha384\",\n\t\t\t\t\tValue:     \"1eaded3f17fb8d7b731c9175a0f355d3a35575c3cb6cdda46a5272b632968d7257a5e6437d0efae599a81a1b2dcc81ba\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha512\",\n\t\t\t\t\tValue:     \"b49d5995456edba144dce750eaa8eae12af8fd08c076d401fcf78aac4172080feb70baaa5ed8c1b05046ec278446330fbf77e8ca9e60c03945ded761a641a7e1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"empty file has valid checksums\",\n\t\t\tfixture: \"testdata/empty.txt\",\n\t\t\thashes:  supportedHashAlgorithms(),\n\t\t\twant: []file.Digest{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"d41d8cd98f00b204e9800998ecf8427e\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\tValue:     \"da39a3ee5e6b4b0d3255bfef95601890afd80709\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha224\",\n\t\t\t\t\tValue:     \"d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha384\",\n\t\t\t\t\tValue:     \"38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha512\",\n\t\t\t\t\tValue:     \"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tfh, err := os.Open(tt.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot, err := NewDigestsFromFile(context.TODO(), fh, tt.hashes)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestHashers(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tnames   []string\n\t\twant    []crypto.Hash\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:  \"check supported hash algorithms\",\n\t\t\tnames: []string{\"MD-5\", \"shA1\", \"sHa224\", \"sha---256\", \"sha384\", \"sha512\"},\n\t\t\twant: []crypto.Hash{\n\t\t\t\tcrypto.MD5,\n\t\t\t\tcrypto.SHA1,\n\t\t\t\tcrypto.SHA224,\n\t\t\t\tcrypto.SHA256,\n\t\t\t\tcrypto.SHA384,\n\t\t\t\tcrypto.SHA512,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"error on unsupported hash algorithm\",\n\t\t\tnames:   []string{\"made-up\"},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tgot, err := Hashers(tt.names...)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/file/getter.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/hashicorp/go-getter\"\n\t\"github.com/hashicorp/go-getter/helper/url\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n)\n\nvar (\n\tarchiveExtensions   = getterDecompressorNames()\n\tErrNonArchiveSource = fmt.Errorf(\"non-archive sources are not supported for directory destinations\")\n)\n\ntype Getter interface {\n\t// GetFile downloads the give URL into the given path. The URL must reference a single file.\n\tGetFile(dst, src string, monitor ...*progress.Manual) error\n\n\t// GetToDir downloads the resource found at the `src` URL into the given `dst` directory.\n\t// The directory must already exist, and the remote resource MUST BE AN ARCHIVE (e.g. `.tar.gz`).\n\tGetToDir(dst, src string, monitor ...*progress.Manual) error\n}\n\ntype HashiGoGetter struct {\n\thttpGetter getter.HttpGetter\n}\n\n// NewGetter creates and returns a new Getter. Providing an http.Client is optional. If one is provided,\n// it will be used for all HTTP(S) getting; otherwise, go-getter's default getters will be used.\nfunc NewGetter(id clio.Identification, httpClient *http.Client) *HashiGoGetter {\n\treturn &HashiGoGetter{\n\t\thttpGetter: getter.HttpGetter{\n\t\t\tClient: httpClient,\n\t\t\tHeader: http.Header{\n\t\t\t\t\"User-Agent\": []string{fmt.Sprintf(\"%v %v\", id.Name, id.Version)},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc (g HashiGoGetter) GetFile(dst, src string, monitors ...*progress.Manual) error {\n\tif len(monitors) > 1 {\n\t\treturn fmt.Errorf(\"multiple monitors provided, which is not allowed\")\n\t}\n\n\treturn getterClient(dst, src, false, g.httpGetter, monitors).Get()\n}\n\nfunc (g HashiGoGetter) GetToDir(dst, src string, monitors ...*progress.Manual) error {\n\t// though there are multiple getters, only the http/https getter requires extra validation\n\tif err := validateHTTPSource(src); err != nil {\n\t\treturn err\n\t}\n\tif len(monitors) > 1 {\n\t\treturn fmt.Errorf(\"multiple monitors provided, which is not allowed\")\n\t}\n\n\treturn getterClient(dst, src, true, g.httpGetter, monitors).Get()\n}\n\nfunc validateHTTPSource(src string) error {\n\t// we are ignoring any sources that are not destined to use the http getter object\n\tif !internal.HasAnyOfPrefixes(src, \"http://\", \"https://\") {\n\t\treturn nil\n\t}\n\n\tu, err := url.Parse(src)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"bad URL provided %q: %w\", src, err)\n\t}\n\t// only allow for sources with archive extensions\n\tif !internal.HasAnyOfSuffixes(u.Path, archiveExtensions...) {\n\t\treturn ErrNonArchiveSource\n\t}\n\treturn nil\n}\n\nfunc getterClient(dst, src string, dir bool, httpGetter getter.HttpGetter, monitors []*progress.Manual) *getter.Client {\n\tclient := &getter.Client{\n\t\tSrc: src,\n\t\tDst: dst,\n\t\tDir: dir,\n\t\tGetters: map[string]getter.Getter{\n\t\t\t\"http\":  &httpGetter,\n\t\t\t\"https\": &httpGetter,\n\t\t\t// note: these are the default getters from https://github.com/hashicorp/go-getter/blob/v1.5.9/get.go#L68-L74\n\t\t\t// it is possible that other implementations need to account for custom httpclient injection, however,\n\t\t\t// that has not been accounted for at this time.\n\t\t\t\"file\": new(getter.FileGetter),\n\t\t\t\"git\":  new(getter.GitGetter),\n\t\t\t\"gcs\":  new(getter.GCSGetter),\n\t\t\t\"hg\":   new(getter.HgGetter),\n\t\t\t\"s3\":   new(getter.S3Getter),\n\t\t},\n\t\tOptions: mapToGetterClientOptions(monitors),\n\t}\n\n\treturn client\n}\n\nfunc withProgress(monitor *progress.Manual) func(client *getter.Client) error {\n\treturn getter.WithProgress(\n\t\t&progressAdapter{monitor: monitor},\n\t)\n}\n\nfunc mapToGetterClientOptions(monitors []*progress.Manual) []getter.ClientOption {\n\tvar result []getter.ClientOption\n\n\tfor _, monitor := range monitors {\n\t\tresult = append(result, withProgress(monitor))\n\t}\n\n\t// derived from https://github.com/hashicorp/go-getter/blob/v2.2.3/decompress.go#L23-L63\n\tfileSizeLimit := int64(5 * file.GB)\n\n\tdec := getter.LimitedDecompressors(0, fileSizeLimit)\n\n\tresult = append(result, getter.WithDecompressors(dec))\n\n\treturn result\n}\n\ntype readCloser struct {\n\tprogress.Reader\n}\n\nfunc (c *readCloser) Close() error { return nil }\n\ntype progressAdapter struct {\n\tmonitor *progress.Manual\n}\n\nfunc (a *progressAdapter) TrackProgress(_ string, currentSize, totalSize int64, stream io.ReadCloser) io.ReadCloser {\n\ta.monitor.Set(currentSize)\n\ta.monitor.SetTotal(totalSize)\n\treturn &readCloser{\n\t\tReader: *progress.NewProxyReader(stream, a.monitor),\n\t}\n}\n\nfunc getterDecompressorNames() (names []string) {\n\tfor name := range getter.Decompressors {\n\t\tnames = append(names, name)\n\t}\n\treturn names\n}\n"
  },
  {
    "path": "internal/file/getter_test.go",
    "content": "package file\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/clio\"\n)\n\nfunc TestGetter_GetFile(t *testing.T) {\n\ttestCases := []struct {\n\t\tname          string\n\t\tprepareClient func(*http.Client)\n\t\tassert        assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:   \"client trusts server's CA\",\n\t\t\tassert: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname:          \"client doesn't trust server's CA\",\n\t\t\tprepareClient: removeTrustedCAs,\n\t\t\tassert:        assertUnknownAuthorityError,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\trequestPath := \"/foo\"\n\n\t\t\tserver := newTestServer(t, withResponseForPath(t, requestPath, testFileContent))\n\t\t\tt.Cleanup(server.Close)\n\n\t\t\thttpClient := getClient(t, server)\n\t\t\tif tc.prepareClient != nil {\n\t\t\t\ttc.prepareClient(httpClient)\n\t\t\t}\n\n\t\t\tgetter := NewGetter(testID, httpClient)\n\t\t\trequestURL := createRequestURL(t, server, requestPath)\n\n\t\t\ttempDir := t.TempDir()\n\t\t\ttempFile := path.Join(tempDir, \"some-destination-file\")\n\n\t\t\terr := getter.GetFile(tempFile, requestURL)\n\t\t\ttc.assert(t, err)\n\t\t})\n\t}\n}\n\nfunc TestGetter_GetToDir_FilterNonArchivesWired(t *testing.T) {\n\ttestCases := []struct {\n\t\tname   string\n\t\tsource string\n\t\tassert assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:   \"error out on non-archive sources\",\n\t\t\tsource: \"http://localhost/something.txt\",\n\t\t\tassert: assertErrNonArchiveSource,\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ttest.assert(t, NewGetter(testID, nil).GetToDir(t.TempDir(), test.source))\n\t\t})\n\t}\n}\n\nfunc TestGetter_validateHttpSource(t *testing.T) {\n\ttestCases := []struct {\n\t\tname   string\n\t\tsource string\n\t\tassert assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:   \"error out on non-archive sources\",\n\t\t\tsource: \"http://localhost/something.txt\",\n\t\t\tassert: assertErrNonArchiveSource,\n\t\t},\n\t\t{\n\t\t\tname:   \"filter out non-archive sources with get param\",\n\t\t\tsource: \"https://localhost/vulnerability-db_v3_2021-11-21T08:15:44Z.txt?checksum=sha256%3Ac402d01fa909a3fa85a5c6733ef27a3a51a9105b6c62b9152adbd24c08358911\",\n\t\t\tassert: assertErrNonArchiveSource,\n\t\t},\n\t\t{\n\t\t\tname:   \"ignore non http-https input\",\n\t\t\tsource: \"s3://bucket/something.txt\",\n\t\t\tassert: assert.NoError,\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ttest.assert(t, validateHTTPSource(test.source))\n\t\t})\n\t}\n}\n\nfunc TestGetter_GetToDir_CertConcerns(t *testing.T) {\n\ttestCases := []struct {\n\t\tname          string\n\t\tprepareClient func(*http.Client)\n\t\tassert        assert.ErrorAssertionFunc\n\t}{\n\n\t\t{\n\t\t\tname:   \"client trusts server's CA\",\n\t\t\tassert: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname:          \"client doesn't trust server's CA\",\n\t\t\tprepareClient: removeTrustedCAs,\n\t\t\tassert:        assertUnknownAuthorityError,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\trequestPath := \"/foo.tar\"\n\t\t\ttarball := createTarball(\"foo\", testFileContent)\n\n\t\t\tserver := newTestServer(t, withResponseForPath(t, requestPath, tarball))\n\t\t\tt.Cleanup(server.Close)\n\n\t\t\thttpClient := getClient(t, server)\n\t\t\tif tc.prepareClient != nil {\n\t\t\t\ttc.prepareClient(httpClient)\n\t\t\t}\n\n\t\t\tgetter := NewGetter(testID, httpClient)\n\t\t\trequestURL := createRequestURL(t, server, requestPath)\n\n\t\t\ttempDir := t.TempDir()\n\n\t\t\terr := getter.GetToDir(tempDir, requestURL)\n\t\t\ttc.assert(t, err)\n\t\t})\n\t}\n}\n\nfunc assertUnknownAuthorityError(t assert.TestingT, err error, _ ...interface{}) bool {\n\treturn assert.ErrorAs(t, err, &x509.UnknownAuthorityError{})\n}\n\nfunc assertErrNonArchiveSource(t assert.TestingT, err error, _ ...interface{}) bool {\n\treturn assert.ErrorIs(t, err, ErrNonArchiveSource)\n}\n\nfunc removeTrustedCAs(client *http.Client) {\n\tclient.Transport.(*http.Transport).TLSClientConfig.RootCAs = x509.NewCertPool()\n}\n\n// createTarball makes a single-file tarball and returns it as a byte slice.\nfunc createTarball(filename string, content []byte) []byte {\n\ttarBuffer := new(bytes.Buffer)\n\ttarWriter := tar.NewWriter(tarBuffer)\n\ttarWriter.WriteHeader(&tar.Header{\n\t\tName: filename,\n\t\tSize: int64(len(content)),\n\t\tMode: 0600,\n\t})\n\ttarWriter.Write(content)\n\ttarWriter.Close()\n\n\treturn tarBuffer.Bytes()\n}\n\ntype muxOption func(mux *http.ServeMux)\n\nfunc withResponseForPath(t *testing.T, path string, response []byte) muxOption {\n\tt.Helper()\n\n\treturn func(mux *http.ServeMux) {\n\t\tmux.HandleFunc(path, func(w http.ResponseWriter, req *http.Request) {\n\t\t\tt.Logf(\"server handling request: %s %s\", req.Method, req.URL)\n\n\t\t\t_, err := w.Write(response)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nvar testID = clio.Identification{\n\tName:    \"test-app\",\n\tVersion: \"v0.5.3\",\n}\n\nfunc newTestServer(t *testing.T, muxOptions ...muxOption) *httptest.Server {\n\tt.Helper()\n\n\tmux := http.NewServeMux()\n\tfor _, option := range muxOptions {\n\t\toption(mux)\n\t}\n\n\tserver := httptest.NewTLSServer(mux)\n\tt.Logf(\"new TLS server listening at %s\", getHost(t, server))\n\n\treturn server\n}\n\nfunc createRequestURL(t *testing.T, server *httptest.Server, path string) string {\n\tt.Helper()\n\n\t// TODO: Figure out how to get this value from the server without hardcoding it here\n\tconst testServerCertificateName = \"example.com\"\n\n\tserverURL, err := url.Parse(server.URL)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Set URL hostname to value from TLS certificate\n\tserverURL.Host = fmt.Sprintf(\"%s:%s\", testServerCertificateName, serverURL.Port())\n\n\tserverURL.Path = path\n\n\treturn serverURL.String()\n}\n\n// getClient returns an http.Client that can be used to contact the test TLS server.\nfunc getClient(t *testing.T, server *httptest.Server) *http.Client {\n\tt.Helper()\n\n\thttpClient := server.Client()\n\ttransport := httpClient.Transport.(*http.Transport)\n\n\tserverHost := getHost(t, server)\n\n\ttransport.DialContext = func(_ context.Context, _, addr string) (net.Conn, error) {\n\t\tt.Logf(\"client dialing %q for host %q\", serverHost, addr)\n\n\t\t// Ensure the client dials our test server\n\t\treturn net.Dial(\"tcp\", serverHost)\n\t}\n\n\treturn httpClient\n}\n\n// getHost extracts the host value from a server URL string.\n// e.g. given a server with URL \"http://1.2.3.4:5000/foo\", getHost returns \"1.2.3.4:5000\"\nfunc getHost(t *testing.T, server *httptest.Server) string {\n\tt.Helper()\n\n\tu, err := url.Parse(server.URL)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\treturn u.Hostname() + \":\" + u.Port()\n}\n\nvar testFileContent = []byte(\"This is the content of a test file!\\n\")\n"
  },
  {
    "path": "internal/file/normalize_hashes.go",
    "content": "package file\n\nimport (\n\t\"crypto\"\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/uset\"\n)\n\nfunc NormalizeHashes(hashes []crypto.Hash) []crypto.Hash {\n\tset := uset.New()\n\tfor _, h := range hashes {\n\t\tset.Add(uint(h))\n\t}\n\tlist := set.List()\n\tsort.Slice(list, func(i, j int) bool {\n\t\treturn list[i] < list[j]\n\t})\n\tresult := make([]crypto.Hash, len(list))\n\tfor i, v := range list {\n\t\tresult[i] = crypto.Hash(v)\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "internal/file/normalize_hashes_test.go",
    "content": "package file\n\nimport (\n\t\"crypto\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestNormalizeHashes(t *testing.T) {\n\n\ttests := []struct {\n\t\tname  string\n\t\tinput []crypto.Hash\n\t\twant  []crypto.Hash\n\t}{\n\t\t{\n\t\t\tname: \"deduplicate hashes\",\n\t\t\tinput: []crypto.Hash{\n\t\t\t\tcrypto.SHA1,\n\t\t\t\tcrypto.SHA1,\n\t\t\t},\n\t\t\twant: []crypto.Hash{\n\t\t\t\tcrypto.SHA1,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sort hashes\",\n\t\t\tinput: []crypto.Hash{\n\t\t\t\tcrypto.SHA512,\n\t\t\t\tcrypto.SHA1,\n\t\t\t},\n\t\t\twant: []crypto.Hash{\n\t\t\t\tcrypto.SHA1,\n\t\t\t\tcrypto.SHA512,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, NormalizeHashes(tt.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/file/opener.go",
    "content": "package file\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\n// Opener is an object that stores a path to later be opened as a file.\ntype Opener struct {\n\tpath string\n}\n\n// Open the stored path as a io.ReadCloser.\nfunc (o Opener) Open() (io.ReadCloser, error) {\n\treturn os.Open(o.path)\n}\n"
  },
  {
    "path": "internal/file/squashfs.go",
    "content": "package file\n\nimport (\n\t\"errors\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/diskfs/go-diskfs/filesystem\"\n)\n\ntype WalkDiskDirFunc func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error\n\n// WalkDiskDir walks the file tree within the go-diskfs filesystem at root, calling fn for each file or directory in the tree, including root.\n// This is meant to mimic the behavior of fs.WalkDir in the standard library.\nfunc WalkDiskDir(fsys filesystem.FileSystem, root string, fn WalkDiskDirFunc) error {\n\tinfos, err := fsys.ReadDir(root)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(infos) == 0 {\n\t\treturn nil\n\t}\n\n\tfor _, info := range infos {\n\t\tp := filepath.Join(root, info.Name())\n\t\terr = walkDiskDir(fsys, p, info, fn)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, fs.SkipDir) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif errors.Is(err, fs.SkipAll) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn err\n}\n\nfunc walkDiskDir(fsys filesystem.FileSystem, name string, d os.FileInfo, walkDirFn WalkDiskDirFunc) error {\n\tif err := walkDirFn(fsys, name, d, nil); err != nil {\n\t\tif errors.Is(err, fs.SkipDir) && (d == nil || d.IsDir()) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\tisDir := d != nil && d.IsDir()\n\tif d == nil {\n\t\t_, err := fsys.ReadDir(name)\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\t\tisDir = true\n\t}\n\n\tif !isDir {\n\t\treturn nil\n\t}\n\n\tdirs, err := fsys.ReadDir(name)\n\tif err != nil {\n\t\terr = walkDirFn(fsys, name, d, err)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, fs.SkipDir) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor _, d1 := range dirs {\n\t\tname1 := filepath.Join(name, d1.Name())\n\t\tif err := walkDiskDir(fsys, name1, d1, walkDirFn); err != nil {\n\t\t\tif errors.Is(err, fs.SkipDir) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif errors.Is(err, fs.SkipAll) {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "internal/file/squashfs_test.go",
    "content": "package file\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/diskfs/go-diskfs/backend/file\"\n\t\"github.com/diskfs/go-diskfs/filesystem\"\n\t\"github.com/diskfs/go-diskfs/filesystem/squashfs\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc createTestFS(t *testing.T) filesystem.FileSystem {\n\tdir := t.TempDir()\n\n\tfilename := \"test.squashfs\"\n\tf, err := os.Create(filepath.Join(dir, filename))\n\trequire.NoError(t, err)\n\n\tb := file.New(f, false)\n\tfsys, err := squashfs.Create(b, 0, 0, 4096)\n\trequire.NoError(t, err)\n\n\ttestFiles := []struct {\n\t\tpath    string\n\t\tcontent string\n\t\tisDir   bool\n\t}{\n\t\t{\"/file1.txt\", \"content of file1\", false},\n\t\t{\"/file2.txt\", \"content of file2\", false},\n\t\t{\"/dir1\", \"\", true},\n\t\t{\"/dir1/subfile1.txt\", \"content of subfile1\", false},\n\t\t{\"/dir1/subfile2.txt\", \"content of subfile2\", false},\n\t\t{\"/dir1/subdir1\", \"\", true},\n\t\t{\"/dir1/subdir1/deepfile.txt\", \"deep content\", false},\n\t\t{\"/dir2\", \"\", true},\n\t\t{\"/dir2/anotherfile.txt\", \"another content\", false},\n\t\t{\"/emptydir\", \"\", true},\n\t}\n\n\tfor _, tf := range testFiles {\n\t\tif tf.isDir {\n\t\t\terr := fsys.Mkdir(tf.path)\n\t\t\trequire.NoError(t, err)\n\t\t} else {\n\t\t\tf, err := fsys.OpenFile(tf.path, os.O_CREATE|os.O_RDWR)\n\t\t\trequire.NoError(t, err)\n\t\t\t_, err = f.Write([]byte(tf.content))\n\t\t\trequire.NoError(t, err)\n\t\t\tf.Close()\n\t\t}\n\t}\n\n\treturn fsys\n}\n\nfunc TestWalkDiskDir_CompleteTraversal(t *testing.T) {\n\tfsys := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fsys, \"/\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\texpectedPaths := []string{\n\t\t\"/file1.txt\",\n\t\t\"/file2.txt\",\n\t\t\"/dir1\",\n\t\t\"/dir1/subfile1.txt\",\n\t\t\"/dir1/subfile2.txt\",\n\t\t\"/dir1/subdir1\",\n\t\t\"/dir1/subdir1/deepfile.txt\",\n\t\t\"/dir2\",\n\t\t\"/dir2/anotherfile.txt\",\n\t\t\"/emptydir\",\n\t}\n\n\tassert.ElementsMatch(t, expectedPaths, visitedPaths)\n}\n\nfunc TestWalkDiskDir_FileInfoCorrect(t *testing.T) {\n\tfsys := createTestFS(t)\n\n\tvar fileInfos []struct {\n\t\tpath  string\n\t\tisDir bool\n\t\tname  string\n\t}\n\n\terr := WalkDiskDir(fsys, \"/\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, d)\n\t\tfileInfos = append(fileInfos, struct {\n\t\t\tpath  string\n\t\t\tisDir bool\n\t\t\tname  string\n\t\t}{\n\t\t\tpath:  path,\n\t\t\tisDir: d.IsDir(),\n\t\t\tname:  d.Name(),\n\t\t})\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\tfor _, fi := range fileInfos {\n\t\texpectedName := filepath.Base(fi.path)\n\t\tassert.Equal(t, expectedName, fi.name)\n\n\t\tif fi.path == \"/dir1\" || fi.path == \"/dir2\" || fi.path == \"/emptydir\" || fi.path == \"/dir1/subdir1\" {\n\t\t\tassert.True(t, fi.isDir, \"Expected %s to be directory\", fi.path)\n\t\t} else {\n\t\t\tassert.False(t, fi.isDir, \"Expected %s to be file\", fi.path)\n\t\t}\n\t}\n}\n\nfunc TestWalkDiskDir_SkipDir(t *testing.T) {\n\tfsys := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fsys, \"/\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\tif path == \"/dir1\" {\n\t\t\treturn fs.SkipDir\n\t\t}\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\tassert.Contains(t, visitedPaths, \"/dir1\")\n\tassert.NotContains(t, visitedPaths, \"/dir1/subfile1.txt\")\n\tassert.NotContains(t, visitedPaths, \"/dir1/subfile2.txt\")\n\tassert.NotContains(t, visitedPaths, \"/dir1/subdir1\")\n\tassert.NotContains(t, visitedPaths, \"/dir1/subdir1/deepfile.txt\")\n\n\tassert.Contains(t, visitedPaths, \"/dir2\")\n\tassert.Contains(t, visitedPaths, \"/dir2/anotherfile.txt\")\n}\n\nfunc TestWalkDiskDir_SkipAll(t *testing.T) {\n\tfsys := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fsys, \"/\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\tif path == \"/dir1\" {\n\t\t\treturn fs.SkipAll\n\t\t}\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\tassert.Contains(t, visitedPaths, \"/dir1\")\n\n\tassert.NotContains(t, visitedPaths, \"/file1.txt\")\n\tassert.NotContains(t, visitedPaths, \"/file2.txt\")\n\tassert.NotContains(t, visitedPaths, \"/dir1/subfile1.txt\")\n\tassert.NotContains(t, visitedPaths, \"/dir2\")\n\tassert.NotContains(t, visitedPaths, \"/dir2/anotherfile.txt\")\n\tassert.NotContains(t, visitedPaths, \"/emptydir\")\n}\n\nfunc TestWalkDiskDir_EmptyDirectory(t *testing.T) {\n\tfs := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fs, \"/emptydir\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\tassert.Empty(t, visitedPaths)\n}\n\nfunc TestWalkDiskDir_NonexistentPath(t *testing.T) {\n\tfs := createTestFS(t)\n\n\terr := WalkDiskDir(fs, \"/nonexistent\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\treturn nil\n\t})\n\n\tassert.Error(t, err)\n}\n\nfunc TestWalkDiskDir_WalkFunctionError(t *testing.T) {\n\tfs := createTestFS(t)\n\n\tcustomErr := assert.AnError\n\terr := WalkDiskDir(fs, \"/\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\tif path == \"/file1.txt\" {\n\t\t\treturn customErr\n\t\t}\n\t\treturn nil\n\t})\n\n\tassert.Error(t, err)\n\tassert.Equal(t, customErr, err)\n}\n\nfunc TestWalkDiskDir_SubdirectoryTraversal(t *testing.T) {\n\tfs := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fs, \"/dir1\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\treturn nil\n\t})\n\n\trequire.NoError(t, err)\n\n\texpectedPaths := []string{\n\t\t\"/dir1/subfile1.txt\",\n\t\t\"/dir1/subfile2.txt\",\n\t\t\"/dir1/subdir1\",\n\t\t\"/dir1/subdir1/deepfile.txt\",\n\t}\n\n\tassert.ElementsMatch(t, expectedPaths, visitedPaths)\n}\n\nfunc TestWalkDiskDir_SingleFile(t *testing.T) {\n\tfs := createTestFS(t)\n\n\tvar visitedPaths []string\n\terr := WalkDiskDir(fs, \"/file1.txt\", func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error {\n\t\trequire.NoError(t, err)\n\t\tvisitedPaths = append(visitedPaths, path)\n\t\treturn nil\n\t})\n\n\t// we are providing a file path, not a directory\n\trequire.Error(t, err)\n\tassert.Empty(t, visitedPaths)\n}\n"
  },
  {
    "path": "internal/file/tar_file_traversal.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/mholt/archives\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\n// TraverseFilesInTar enumerates all paths stored within a tar archive using the visitor pattern.\nfunc TraverseFilesInTar(ctx context.Context, archivePath string, visitor archives.FileHandler) error {\n\ttarReader, err := os.Open(archivePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to open tar archive (%s): %w\", archivePath, err)\n\t}\n\tdefer internal.CloseAndLogError(tarReader, archivePath)\n\n\tformat, _, err := IdentifyArchive(ctx, archivePath, tarReader)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to identify tar compression format: %w\", err)\n\t}\n\n\textractor, ok := format.(archives.Extractor)\n\tif !ok {\n\t\treturn fmt.Errorf(\"file format does not support extraction: %s\", archivePath)\n\t}\n\n\treturn extractor.Extract(ctx, tarReader, visitor)\n}\n\n// ExtractGlobsFromTarToUniqueTempFile extracts paths matching the given globs within the given archive to a temporary directory, returning file openers for each file extracted.\nfunc ExtractGlobsFromTarToUniqueTempFile(ctx context.Context, archivePath, dir string, globs ...string) (map[string]Opener, error) {\n\tresults := make(map[string]Opener)\n\n\t// don't allow for full traversal, only select traversal from given paths\n\tif len(globs) == 0 {\n\t\treturn results, nil\n\t}\n\n\tvisitor := func(_ context.Context, file archives.FileInfo) error {\n\t\t// ignore directories\n\t\tif file.IsDir() {\n\t\t\treturn nil\n\t\t}\n\n\t\t// ignore any filename that doesn't match the given globs...\n\t\tif !matchesAnyGlob(file.Name(), globs...) {\n\t\t\treturn nil\n\t\t}\n\n\t\t// we have a file we want to extract....\n\t\ttempFilePrefix := filepath.Base(filepath.Clean(file.Name())) + \"-\"\n\t\ttempFile, err := os.CreateTemp(dir, tempFilePrefix)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create temp file: %w\", err)\n\t\t}\n\t\t// we shouldn't try and keep the tempFile open as the returned result may have several files, which takes up\n\t\t// resources (leading to \"too many open files\"). Instead we'll return a file opener to the caller which\n\t\t// provides a ReadCloser. It is up to the caller to handle closing the file explicitly.\n\t\tdefer tempFile.Close()\n\n\t\tpackedFile, err := file.Open()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to read file=%q from tar=%q: %w\", file.NameInArchive, archivePath, err)\n\t\t}\n\t\tdefer internal.CloseAndLogError(packedFile, archivePath)\n\n\t\tif err := safeCopy(tempFile, packedFile); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to copy source=%q for tar=%q: %w\", file.Name(), archivePath, err)\n\t\t}\n\n\t\tresults[file.Name()] = Opener{path: tempFile.Name()}\n\n\t\treturn nil\n\t}\n\n\treturn results, TraverseFilesInTar(ctx, archivePath, visitor)\n}\n\nfunc matchesAnyGlob(name string, globs ...string) bool {\n\tfor _, glob := range globs {\n\t\tif matches, err := doublestar.PathMatch(glob, name); err == nil && matches {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "internal/file/testdata/digest.txt",
    "content": "hello, file!"
  },
  {
    "path": "internal/file/testdata/empty.txt",
    "content": ""
  },
  {
    "path": "internal/file/testdata/generate-zip-fixture-from-source-dir.sh",
    "content": "#!/usr/bin/env bash\nset -eux\n\n# $1 —— absolute path to destination file, should end with .zip, ideally\n# $2 —— absolute path to directory from which to add entries to the archive\n# $3 —— if files should be zip64 or not\n\nif [[$3]]; then\n\tpushd \"$2\" && find . -print | zip -fz \"$1\" -@ && popd\nelse\n\tpushd \"$2\" && find . -print | zip \"$1\" -@ && popd\nfi\n"
  },
  {
    "path": "internal/file/testdata/zip-source/b-file/in-subdir.txt",
    "content": "this file is in a subdirectory"
  },
  {
    "path": "internal/file/testdata/zip-source/b-file.txt",
    "content": "B file..."
  },
  {
    "path": "internal/file/testdata/zip-source/some-dir/a-file.txt",
    "content": "A file! nice!"
  },
  {
    "path": "internal/file/zip_file_helpers_test.go",
    "content": "package file\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"testing\"\n)\n\nvar expectedZipArchiveEntries = []string{\n\t\"some-dir/\",\n\t\"some-dir/a-file.txt\",\n\t\"b-file.txt\",\n\t\"b-file/\",\n\t\"b-file/in-subdir.txt\",\n\t\"nested.zip\",\n}\n\n// createZipArchive creates a new ZIP archive file at destinationArchivePath based on the directory found at\n// sourceDirPath. It forces a zip64 archive if zip64 is \"0\".\nfunc createZipArchive(t testing.TB, sourceDirPath, destinationArchivePath string, zip64 bool) {\n\tt.Helper()\n\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to get cwd: %+v\", err)\n\t}\n\tzip64Arg := \"0\"\n\tif zip64 {\n\t\tzip64Arg = \"1\"\n\t}\n\n\tcmd := exec.Command(\"./generate-zip-fixture-from-source-dir.sh\", destinationArchivePath, path.Base(sourceDirPath), zip64Arg)\n\tcmd.Dir = filepath.Join(cwd, \"testdata\")\n\n\tif err := cmd.Start(); err != nil {\n\t\tt.Fatalf(\"unable to start generate zip fixture script: %+v\", err)\n\t}\n\n\tif err := cmd.Wait(); err != nil {\n\t\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\t\t// The program has exited with an exit code != 0\n\n\t\t\t// This works on both Unix and Windows. Although package\n\t\t\t// syscall is generally platform dependent, WaitStatus is\n\t\t\t// defined for both Unix and Windows and in both cases has\n\t\t\t// an ExitStatus() method with the same signature.\n\t\t\tif status, ok := exiterr.Sys().(syscall.WaitStatus); ok {\n\t\t\t\tif status.ExitStatus() != 0 {\n\t\t\t\t\tt.Fatalf(\"failed to generate fixture: rc=%d\", status.ExitStatus())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tt.Fatalf(\"unable to get generate fixture script result: %+v\", err)\n\t\t}\n\t}\n\n}\n\n// setupZipFileTest encapsulates common test setup work for zip file tests. It returns a cleanup function,\n// which should be called (typically deferred) by the caller, the path of the created zip archive, and an error,\n// which should trigger a fatal test failure in the consuming test. The returned cleanup function will never be nil\n// (even if there's an error), and it should always be called.\nfunc setupZipFileTest(t testing.TB, sourceDirPath string, zip64 bool) string {\n\tt.Helper()\n\n\tarchivePrefix := path.Join(t.TempDir(), \"syft-ziputil-archive-TEST-\")\n\tdestinationArchiveFilePath := archivePrefix + \".zip\"\n\tt.Logf(\"archive path: %s\", destinationArchiveFilePath)\n\tcreateZipArchive(t, sourceDirPath, destinationArchiveFilePath, zip64)\n\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to get cwd: %+v\", err)\n\t}\n\n\tt.Logf(\"running from: %s\", cwd)\n\n\treturn destinationArchiveFilePath\n}\n\n// TODO: Consider moving any non-git asset generation to a task (e.g. make) that's run ahead of running go tests.\nfunc ensureNestedZipExists(t *testing.T, sourceDirPath string) error {\n\tt.Helper()\n\n\tnestedArchiveFilePath := path.Join(sourceDirPath, \"nested.zip\")\n\tcreateZipArchive(t, sourceDirPath, nestedArchiveFilePath, false)\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/file/zip_file_manifest.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/mholt/archives\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// ZipFileManifest is a collection of paths and their file metadata.\ntype ZipFileManifest map[string]os.FileInfo\n\n// NewZipFileManifest creates and returns a new ZipFileManifest populated with path and metadata from the given zip archive path.\nfunc NewZipFileManifest(ctx context.Context, archivePath string) (ZipFileManifest, error) {\n\tzipReader, err := os.Open(archivePath)\n\tmanifest := make(ZipFileManifest)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to open zip archive (%s): %v\", archivePath, err)\n\t\treturn manifest, err\n\t}\n\tdefer func() {\n\t\tif err = zipReader.Close(); err != nil {\n\t\t\tlog.Debugf(\"unable to close zip archive (%s): %+v\", archivePath, err)\n\t\t}\n\t}()\n\n\terr = archives.Zip{}.Extract(ctx, zipReader, func(_ context.Context, file archives.FileInfo) error {\n\t\tmanifest.Add(file.NameInArchive, file.FileInfo)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn manifest, err\n\t}\n\treturn manifest, nil\n}\n\n// Add a new path and it's file metadata to the collection.\nfunc (z ZipFileManifest) Add(entry string, info os.FileInfo) {\n\tz[entry] = info\n}\n\n// GlobMatch returns the path keys to files (not directories) that match the given value(s).\nfunc (z ZipFileManifest) GlobMatch(caseInsensitive bool, patterns ...string) []string {\n\tuniqueMatches := strset.New()\n\n\tfor _, pattern := range patterns {\n\t\tfor entry := range z {\n\t\t\tfileInfo := z[entry]\n\t\t\tif fileInfo != nil && fileInfo.IsDir() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// We want to match globs as if entries begin with a leading slash (akin to an absolute path)\n\t\t\t// so that glob logic is consistent inside and outside of ZIP archives\n\t\t\tnormalizedEntry := normalizeZipEntryName(caseInsensitive, entry)\n\n\t\t\tif caseInsensitive {\n\t\t\t\tpattern = strings.ToLower(pattern)\n\t\t\t}\n\n\t\t\tmatches, err := doublestar.Match(pattern, normalizedEntry)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"error with match pattern '%s', including by default: %v\", pattern, err)\n\t\t\t\tmatches = true\n\t\t\t}\n\t\t\tif matches {\n\t\t\t\tuniqueMatches.Add(entry)\n\t\t\t}\n\t\t}\n\t}\n\n\tresults := uniqueMatches.List()\n\tsort.Strings(results)\n\n\treturn results\n}\n\n// normalizeZipEntryName takes the given path entry and ensures it is prefixed with \"/\".\nfunc normalizeZipEntryName(caseInsensitive bool, entry string) string {\n\tif caseInsensitive {\n\t\tentry = strings.ToLower(entry)\n\t}\n\tif !strings.HasPrefix(entry, \"/\") {\n\t\treturn \"/\" + entry\n\t}\n\n\treturn entry\n}\n"
  },
  {
    "path": "internal/file/zip_file_manifest_test.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage file\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewZipFileManifest(t *testing.T) {\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tsourceDirPath := path.Join(cwd, \"testdata\", \"zip-source\")\n\terr = ensureNestedZipExists(t, sourceDirPath)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tarchiveFilePath := setupZipFileTest(t, sourceDirPath, false)\n\n\tactual, err := NewZipFileManifest(context.Background(), archiveFilePath)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to extract from unzip archive: %+v\", err)\n\t}\n\n\tif len(expectedZipArchiveEntries) != len(actual) {\n\t\tt.Fatalf(\"mismatched manifest: %d != %d\", len(actual), len(expectedZipArchiveEntries))\n\t}\n\n\tfor _, e := range expectedZipArchiveEntries {\n\t\t_, ok := actual[e]\n\t\tif !ok {\n\t\t\tt.Errorf(\"missing path: %s\", e)\n\t\t}\n\t}\n\n\tif t.Failed() {\n\t\tb, err := json.MarshalIndent(actual, \"\", \"  \")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"can't show results: %+v\", err)\n\t\t}\n\n\t\tt.Errorf(\"full result: %s\", string(b))\n\t}\n}\n\nfunc TestNewZip64FileManifest(t *testing.T) {\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tsourceDirPath := path.Join(cwd, \"testdata\", \"zip-source\")\n\tarchiveFilePath := setupZipFileTest(t, sourceDirPath, true)\n\n\tactual, err := NewZipFileManifest(context.Background(), archiveFilePath)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to extract from unzip archive: %+v\", err)\n\t}\n\n\tif len(expectedZipArchiveEntries) != len(actual) {\n\t\tt.Fatalf(\"mismatched manifest: %d != %d\", len(actual), len(expectedZipArchiveEntries))\n\t}\n\n\tfor _, e := range expectedZipArchiveEntries {\n\t\t_, ok := actual[e]\n\t\tif !ok {\n\t\t\tt.Errorf(\"missing path: %s\", e)\n\t\t}\n\t}\n\n\tif t.Failed() {\n\t\tb, err := json.MarshalIndent(actual, \"\", \"  \")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"can't show results: %+v\", err)\n\t\t}\n\n\t\tt.Errorf(\"full result: %s\", string(b))\n\t}\n}\n\nfunc TestZipFileManifest_GlobMatch(t *testing.T) {\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tsourceDirPath := path.Join(cwd, \"testdata\", \"zip-source\")\n\terr = ensureNestedZipExists(t, sourceDirPath)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tarchiveFilePath := setupZipFileTest(t, sourceDirPath, false)\n\n\tz, err := NewZipFileManifest(context.Background(), archiveFilePath)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to extract from unzip archive: %+v\", err)\n\t}\n\n\tcases := []struct {\n\t\tglob     string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\t\"/b*\",\n\t\t\t[]string{\"b-file.txt\"},\n\t\t},\n\t\t{\n\t\t\t\"/b*/**\",\n\t\t\t[]string{\"b-file.txt\", \"b-file/in-subdir.txt\"},\n\t\t},\n\t\t{\n\t\t\t\"**/a-file.txt\",\n\t\t\t[]string{\"some-dir/a-file.txt\"},\n\t\t},\n\t\t{\n\t\t\t\"**/A-file.txt\",\n\t\t\t[]string{\"some-dir/a-file.txt\"},\n\t\t},\n\t\t{\n\t\t\t\"**/*.zip\",\n\t\t\t[]string{\"nested.zip\"},\n\t\t},\n\t}\n\n\tfor _, tc := range cases {\n\t\tt.Run(tc.glob, func(t *testing.T) {\n\t\t\tglob := tc.glob\n\n\t\t\tresults := z.GlobMatch(true, glob)\n\n\t\t\trequire.ElementsMatch(t, tc.expected, results)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/file/zip_file_traversal.go",
    "content": "package file\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/mholt/archives\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst (\n\t// represents the order of bytes\n\t_  = iota\n\tKB = 1 << (10 * iota)\n\tMB\n\tGB\n)\n\ntype errZipSlipDetected struct {\n\tPrefix   string\n\tJoinArgs []string\n}\n\nfunc (e *errZipSlipDetected) Error() string {\n\treturn fmt.Sprintf(\"path traversal detected: paths are not allowed to resolve outside of the root prefix (%q). Destination: %q\", e.Prefix, e.JoinArgs)\n}\n\ntype zipTraversalRequest map[string]struct{}\n\nfunc newZipTraverseRequest(paths ...string) zipTraversalRequest {\n\tresults := make(zipTraversalRequest)\n\tfor _, p := range paths {\n\t\tresults[p] = struct{}{}\n\t}\n\treturn results\n}\n\n// TraverseFilesInZip enumerates all paths stored within a zip archive using the visitor pattern.\nfunc TraverseFilesInZip(ctx context.Context, archivePath string, visitor archives.FileHandler, paths ...string) error {\n\trequest := newZipTraverseRequest(paths...)\n\n\tzipReader, err := os.Open(archivePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to open zip archive (%s): %w\", archivePath, err)\n\t}\n\tdefer func() {\n\t\tif err := zipReader.Close(); err != nil {\n\t\t\tlog.Errorf(\"unable to close zip archive (%s): %+v\", archivePath, err)\n\t\t}\n\t}()\n\n\treturn archives.Zip{}.Extract(ctx, zipReader, func(ctx context.Context, file archives.FileInfo) error {\n\t\t// if no paths are given then assume that all files should be traversed\n\t\tif len(paths) > 0 {\n\t\t\tif _, ok := request[file.NameInArchive]; !ok {\n\t\t\t\t// this file path is not of interest\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\n\t\treturn visitor(ctx, file)\n\t})\n}\n\n// ExtractFromZipToUniqueTempFile extracts select paths for the given archive to a temporary directory, returning file openers for each file extracted.\nfunc ExtractFromZipToUniqueTempFile(ctx context.Context, archivePath, dir string, paths ...string) (map[string]Opener, error) {\n\tresults := make(map[string]Opener)\n\n\t// don't allow for full traversal, only select traversal from given paths\n\tif len(paths) == 0 {\n\t\treturn results, nil\n\t}\n\n\tvisitor := func(_ context.Context, file archives.FileInfo) error {\n\t\ttempfilePrefix := filepath.Base(filepath.Clean(file.NameInArchive)) + \"-\"\n\t\ttempFile, err := os.CreateTemp(dir, tempfilePrefix)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create temp file: %w\", err)\n\t\t}\n\t\t// we shouldn't try and keep the tempfile open as the returned result may have several files, which takes up\n\t\t// resources (leading to \"too many open files\"). Instead we'll return a file opener to the caller which\n\t\t// provides a ReadCloser. It is up to the caller to handle closing the file explicitly.\n\t\tdefer tempFile.Close()\n\n\t\tzippedFile, err := file.Open()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to read file=%q from zip=%q: %w\", file.NameInArchive, archivePath, err)\n\t\t}\n\t\tdefer func() {\n\t\t\tif err := zippedFile.Close(); err != nil {\n\t\t\t\tlog.Errorf(\"unable to close source file=%q from zip=%q: %+v\", file.NameInArchive, archivePath, err)\n\t\t\t}\n\t\t}()\n\n\t\tif file.IsDir() {\n\t\t\treturn fmt.Errorf(\"unable to extract directories, only files: %s\", file.NameInArchive)\n\t\t}\n\n\t\tif err := safeCopy(tempFile, zippedFile); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to copy source=%q for zip=%q: %w\", file.NameInArchive, archivePath, err)\n\t\t}\n\n\t\tresults[file.NameInArchive] = Opener{path: tempFile.Name()}\n\n\t\treturn nil\n\t}\n\n\treturn results, TraverseFilesInZip(ctx, archivePath, visitor, paths...)\n}\n\n// ContentsFromZip extracts select paths for the given archive and returns a set of string contents for each path.\nfunc ContentsFromZip(ctx context.Context, archivePath string, paths ...string) (map[string]string, error) {\n\tresults := make(map[string]string)\n\n\t// don't allow for full traversal, only select traversal from given paths\n\tif len(paths) == 0 {\n\t\treturn results, nil\n\t}\n\n\tvisitor := func(_ context.Context, file archives.FileInfo) error {\n\t\tzippedFile, err := file.Open()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to read file=%q from zip=%q: %w\", file.NameInArchive, archivePath, err)\n\t\t}\n\t\tdefer func() {\n\t\t\tif err := zippedFile.Close(); err != nil {\n\t\t\t\tlog.Errorf(\"unable to close source file=%q from zip=%q: %+v\", file.NameInArchive, archivePath, err)\n\t\t\t}\n\t\t}()\n\n\t\tif file.IsDir() {\n\t\t\treturn fmt.Errorf(\"unable to extract directories, only files: %s\", file.NameInArchive)\n\t\t}\n\n\t\tvar buffer bytes.Buffer\n\t\tif err := safeCopy(&buffer, zippedFile); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to copy source=%q for zip=%q: %w\", file.NameInArchive, archivePath, err)\n\t\t}\n\n\t\tresults[file.NameInArchive] = buffer.String()\n\n\t\treturn nil\n\t}\n\n\treturn results, TraverseFilesInZip(ctx, archivePath, visitor, paths...)\n}\n\n// UnzipToDir extracts a zip archive to a target directory.\nfunc UnzipToDir(ctx context.Context, archivePath, targetDir string) error {\n\tvisitor := func(_ context.Context, file archives.FileInfo) error {\n\t\tjoinedPath, err := SafeJoin(targetDir, file.NameInArchive)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn extractSingleFile(file, joinedPath, archivePath)\n\t}\n\n\treturn TraverseFilesInZip(ctx, archivePath, visitor)\n}\n\n// SafeJoin ensures that any destinations do not resolve to a path above the prefix path.\nfunc SafeJoin(prefix string, dest ...string) (string, error) {\n\tjoinResult := filepath.Join(append([]string{prefix}, dest...)...)\n\tcleanJoinResult := filepath.Clean(joinResult)\n\tif !strings.HasPrefix(cleanJoinResult, filepath.Clean(prefix)) {\n\t\treturn \"\", &errZipSlipDetected{\n\t\t\tPrefix:   prefix,\n\t\t\tJoinArgs: dest,\n\t\t}\n\t}\n\t// why not return the clean path? the called may not be expected it from what should only be a join operation.\n\treturn joinResult, nil\n}\n\nfunc extractSingleFile(file archives.FileInfo, expandedFilePath, archivePath string) error {\n\tzippedFile, err := file.Open()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to read file=%q from zip=%q: %w\", file.NameInArchive, archivePath, err)\n\t}\n\tdefer func() {\n\t\tif err := zippedFile.Close(); err != nil {\n\t\t\tlog.Errorf(\"unable to close source file=%q from zip=%q: %+v\", file.NameInArchive, archivePath, err)\n\t\t}\n\t}()\n\n\tif file.IsDir() {\n\t\terr = os.MkdirAll(expandedFilePath, file.Mode())\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create dir=%q from zip=%q: %w\", expandedFilePath, archivePath, err)\n\t\t}\n\t} else {\n\t\t// Open an output file for writing\n\t\toutputFile, err := os.OpenFile(\n\t\t\texpandedFilePath,\n\t\t\tos.O_WRONLY|os.O_CREATE|os.O_TRUNC,\n\t\t\tfile.Mode(),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create dest file=%q from zip=%q: %w\", expandedFilePath, archivePath, err)\n\t\t}\n\t\tdefer func() {\n\t\t\tif err := outputFile.Close(); err != nil {\n\t\t\t\tlog.Errorf(\"unable to close dest file=%q from zip=%q: %+v\", outputFile.Name(), archivePath, err)\n\t\t\t}\n\t\t}()\n\n\t\tif err := safeCopy(outputFile, zippedFile); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to copy source=%q to dest=%q for zip=%q: %w\", file.NameInArchive, outputFile.Name(), archivePath, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "internal/file/zip_file_traversal_test.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage file\n\nimport (\n\t\"archive/zip\"\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc equal(r1, r2 io.Reader) (bool, error) {\n\tw1 := sha256.New()\n\tw2 := sha256.New()\n\tn1, err1 := io.Copy(w1, r1)\n\tif err1 != nil {\n\t\treturn false, err1\n\t}\n\tn2, err2 := io.Copy(w2, r2)\n\tif err2 != nil {\n\t\treturn false, err2\n\t}\n\n\tvar b1, b2 [sha256.Size]byte\n\tcopy(b1[:], w1.Sum(nil))\n\tcopy(b2[:], w2.Sum(nil))\n\n\treturn n1 != n2 || b1 == b2, nil\n}\n\nfunc TestUnzipToDir(t *testing.T) {\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tgoldenRootDir := filepath.Join(cwd, \"testdata\")\n\tsourceDirPath := path.Join(goldenRootDir, \"zip-source\")\n\tarchiveFilePath := setupZipFileTest(t, sourceDirPath, false)\n\n\tunzipDestinationDir := t.TempDir()\n\n\tt.Logf(\"content path: %s\", unzipDestinationDir)\n\n\texpectedPaths := len(expectedZipArchiveEntries)\n\tobservedPaths := 0\n\n\terr = UnzipToDir(context.Background(), archiveFilePath, unzipDestinationDir)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to unzip archive: %+v\", err)\n\t}\n\n\t// compare the source dir tree and the unzipped tree\n\terr = filepath.Walk(unzipDestinationDir,\n\t\tfunc(path string, info os.FileInfo, err error) error {\n\t\t\t// We don't unzip the root archive dir, since there's no archive entry for it\n\t\t\tif path != unzipDestinationDir {\n\t\t\t\tt.Logf(\"unzipped path: %s\", path)\n\t\t\t\tobservedPaths++\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"this should not happen\")\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tgoldenPath := filepath.Join(sourceDirPath, strings.TrimPrefix(path, unzipDestinationDir))\n\n\t\t\tif info.IsDir() {\n\t\t\t\ti, err := os.Stat(goldenPath)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"unable to stat golden path: %+v\", err)\n\t\t\t\t}\n\t\t\t\tif !i.IsDir() {\n\t\t\t\t\tt.Fatalf(\"mismatched file types: %s\", goldenPath)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\t// this is a file, not a dir...\n\n\t\t\ttestFile, err := os.Open(path)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to open test file=%s :%+v\", path, err)\n\t\t\t}\n\n\t\t\tgoldenFile, err := os.Open(goldenPath)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to open golden file=%s :%+v\", goldenPath, err)\n\t\t\t}\n\n\t\t\tsame, err := equal(testFile, goldenFile)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"could not compare files (%s, %s): %+v\", goldenPath, path, err)\n\t\t\t}\n\n\t\t\tif !same {\n\t\t\t\tt.Errorf(\"paths are not the same (%s, %s)\", goldenPath, path)\n\t\t\t}\n\n\t\t\treturn nil\n\t\t})\n\n\tif err != nil {\n\t\tt.Errorf(\"failed to walk dir: %+v\", err)\n\t}\n\n\tif observedPaths != expectedPaths {\n\t\tt.Errorf(\"missed test paths: %d != %d\", observedPaths, expectedPaths)\n\t}\n}\n\nfunc TestContentsFromZip(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tarchivePrep func(tb testing.TB) string\n\t}{\n\t\t{\n\t\t\tname:        \"standard, non-nested zip\",\n\t\t\tarchivePrep: prepZipSourceFixture,\n\t\t},\n\t\t{\n\t\t\tname:        \"zip with prepended bytes\",\n\t\t\tarchivePrep: prependZipSourceFixtureWithString(t, \"junk at the beginning of the file...\"),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tarchivePath := test.archivePrep(t)\n\t\t\texpected := zipSourceFixtureExpectedContents()\n\n\t\t\tvar paths []string\n\t\t\tfor p := range expected {\n\t\t\t\tpaths = append(paths, p)\n\t\t\t}\n\n\t\t\tactual, err := ContentsFromZip(context.Background(), archivePath, paths...)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to extract from unzip archive: %+v\", err)\n\t\t\t}\n\n\t\t\tassertZipSourceFixtureContents(t, actual, expected)\n\t\t})\n\t}\n}\n\nfunc prependZipSourceFixtureWithString(tb testing.TB, value string) func(tb testing.TB) string {\n\tif len(value) == 0 {\n\t\ttb.Fatalf(\"no bytes given to prefix\")\n\t}\n\treturn func(t testing.TB) string {\n\t\tarchivePath := prepZipSourceFixture(t)\n\n\t\t// create a temp file\n\t\ttmpFile, err := os.CreateTemp(tb.TempDir(), \"syft-ziputil-prependZipSourceFixtureWithString-\")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"unable to create tempfile: %+v\", err)\n\t\t}\n\t\tdefer tmpFile.Close()\n\n\t\t// write value to the temp file\n\t\tif _, err := tmpFile.WriteString(value); err != nil {\n\t\t\tt.Fatalf(\"unable to write to tempfile: %+v\", err)\n\t\t}\n\n\t\t// open the original archive\n\t\tsourceFile, err := os.Open(archivePath)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"unable to read source file: %+v\", err)\n\t\t}\n\n\t\t// copy all contents from the archive to the temp file\n\t\tif _, err := io.Copy(tmpFile, sourceFile); err != nil {\n\t\t\tt.Fatalf(\"unable to copy source to dest: %+v\", err)\n\t\t}\n\n\t\tsourceFile.Close()\n\n\t\t// remove the original archive and replace it with the temp file\n\t\tif err := os.Remove(archivePath); err != nil {\n\t\t\tt.Fatalf(\"unable to remove original source archive (%q): %+v\", archivePath, err)\n\t\t}\n\n\t\tif err := os.Rename(tmpFile.Name(), archivePath); err != nil {\n\t\t\tt.Fatalf(\"unable to move new archive to old path (%q): %+v\", tmpFile.Name(), err)\n\t\t}\n\n\t\treturn archivePath\n\t}\n}\n\nfunc prepZipSourceFixture(t testing.TB) string {\n\tt.Helper()\n\tarchivePrefix := path.Join(t.TempDir(), \"syft-ziputil-prepZipSourceFixture-\")\n\n\t// the zip utility will add \".zip\" to the end of the given name\n\tarchivePath := archivePrefix + \".zip\"\n\n\tt.Logf(\"archive path: %s\", archivePath)\n\n\tcreateZipArchive(t, \"zip-source\", archivePrefix, false)\n\n\treturn archivePath\n}\n\nfunc zipSourceFixtureExpectedContents() map[string]string {\n\treturn map[string]string{\n\t\tfilepath.Join(\"some-dir\", \"a-file.txt\"): \"A file! nice!\",\n\t\tfilepath.Join(\"b-file.txt\"):             \"B file...\",\n\t}\n}\n\nfunc assertZipSourceFixtureContents(t testing.TB, actual map[string]string, expected map[string]string) {\n\tt.Helper()\n\tdiffs := deep.Equal(actual, expected)\n\tif len(diffs) > 0 {\n\t\tfor _, d := range diffs {\n\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t}\n\n\t\tb, err := json.MarshalIndent(actual, \"\", \"  \")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"can't show results: %+v\", err)\n\t\t}\n\n\t\tt.Errorf(\"full result: %s\", string(b))\n\t}\n}\n\n// looks like there isn't a helper for this yet? https://github.com/stretchr/testify/issues/497\nfunc assertErrorAs(expectedErr interface{}) assert.ErrorAssertionFunc {\n\treturn func(t assert.TestingT, actualErr error, i ...interface{}) bool {\n\t\treturn errors.As(actualErr, &expectedErr)\n\t}\n}\n\nfunc TestSafeJoin(t *testing.T) {\n\ttests := []struct {\n\t\tprefix       string\n\t\targs         []string\n\t\texpected     string\n\t\terrAssertion assert.ErrorAssertionFunc\n\t}{\n\t\t// go cases...\n\t\t{\n\t\t\tprefix: \"/a/place\",\n\t\t\targs: []string{\n\t\t\t\t\"somewhere/else\",\n\t\t\t},\n\t\t\texpected:     \"/a/place/somewhere/else\",\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tprefix: \"/a/place\",\n\t\t\targs: []string{\n\t\t\t\t\"somewhere/../else\",\n\t\t\t},\n\t\t\texpected:     \"/a/place/else\",\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tprefix: \"/a/../place\",\n\t\t\targs: []string{\n\t\t\t\t\"somewhere/else\",\n\t\t\t},\n\t\t\texpected:     \"/place/somewhere/else\",\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t// zip slip examples....\n\t\t{\n\t\t\tprefix: \"/a/place\",\n\t\t\targs: []string{\n\t\t\t\t\"../../../etc/passwd\",\n\t\t\t},\n\t\t\texpected:     \"\",\n\t\t\terrAssertion: assertErrorAs(&errZipSlipDetected{}),\n\t\t},\n\t\t{\n\t\t\tprefix: \"/a/place\",\n\t\t\targs: []string{\n\t\t\t\t\"../\",\n\t\t\t\t\"../\",\n\t\t\t},\n\t\t\texpected:     \"\",\n\t\t\terrAssertion: assertErrorAs(&errZipSlipDetected{}),\n\t\t},\n\t\t{\n\t\t\tprefix: \"/a/place\",\n\t\t\targs: []string{\n\t\t\t\t\"../\",\n\t\t\t},\n\t\t\texpected:     \"\",\n\t\t\terrAssertion: assertErrorAs(&errZipSlipDetected{}),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"%+v:%+v\", test.prefix, test.args), func(t *testing.T) {\n\t\t\tactual, err := SafeJoin(test.prefix, test.args...)\n\t\t\ttest.errAssertion(t, err)\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n\n// TestSafeJoin_SymlinkProtection demonstrates that SafeJoin protects against\n// directory traversal attacks by validating that archive entry paths cannot escape\n// the extraction directory.\nfunc TestSafeJoin_SymlinkProtection(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tarchivePath string // Path as it would appear in the archive\n\t\texpectError bool\n\t\tdescription string\n\t}{\n\t\t{\n\t\t\tname:        \"path traversal via ../\",\n\t\t\tarchivePath: \"../../../outside/file.txt\",\n\t\t\texpectError: true,\n\t\t\tdescription: \"Archive entry with ../ trying to escape extraction dir\",\n\t\t},\n\t\t{\n\t\t\tname:        \"absolute path symlink target\",\n\t\t\tarchivePath: \"../../../sensitive.txt\",\n\t\t\texpectError: true,\n\t\t\tdescription: \"Simulates symlink pointing outside via relative path\",\n\t\t},\n\t\t{\n\t\t\tname:        \"safe relative path within extraction dir\",\n\t\t\tarchivePath: \"subdir/safe.txt\",\n\t\t\texpectError: false,\n\t\t\tdescription: \"Normal file path that stays within extraction directory\",\n\t\t},\n\t\t{\n\t\t\tname:        \"safe path with internal ../\",\n\t\t\tarchivePath: \"dir1/../dir2/file.txt\",\n\t\t\texpectError: false,\n\t\t\tdescription: \"Path with ../ that still resolves within extraction dir\",\n\t\t},\n\t\t{\n\t\t\tname:        \"deeply nested traversal\",\n\t\t\tarchivePath: \"../../../../../../tmp/evil.txt\",\n\t\t\texpectError: true,\n\t\t\tdescription: \"Multiple levels of ../ trying to escape\",\n\t\t},\n\t\t{\n\t\t\tname:        \"single parent directory escape\",\n\t\t\tarchivePath: \"../\",\n\t\t\texpectError: true,\n\t\t\tdescription: \"Simple one-level escape attempt\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// Create temp directories to simulate extraction scenario\n\t\t\ttmpDir := t.TempDir()\n\t\t\textractDir := filepath.Join(tmpDir, \"extract\")\n\t\t\toutsideDir := filepath.Join(tmpDir, \"outside\")\n\n\t\t\trequire.NoError(t, os.MkdirAll(extractDir, 0755))\n\t\t\trequire.NoError(t, os.MkdirAll(outsideDir, 0755))\n\n\t\t\t// Create a file outside extraction dir that an attacker might target\n\t\t\toutsideFile := filepath.Join(outsideDir, \"sensitive.txt\")\n\t\t\trequire.NoError(t, os.WriteFile(outsideFile, []byte(\"sensitive data\"), 0644))\n\n\t\t\t// Test SafeJoin - this is what happens when processing archive entries\n\t\t\tresult, err := SafeJoin(extractDir, tt.archivePath)\n\n\t\t\tif tt.expectError {\n\t\t\t\t// Should block malicious paths\n\t\t\t\trequire.Error(t, err, \"Expected SafeJoin to reject malicious path\")\n\t\t\t\tvar zipSlipErr *errZipSlipDetected\n\t\t\t\tassert.ErrorAs(t, err, &zipSlipErr, \"Error should be errZipSlipDetected type\")\n\t\t\t\tassert.Empty(t, result, \"Result should be empty for blocked paths\")\n\t\t\t} else {\n\t\t\t\t// Should allow safe paths\n\t\t\t\trequire.NoError(t, err, \"Expected SafeJoin to allow safe path\")\n\t\t\t\tassert.NotEmpty(t, result, \"Result should not be empty for safe paths\")\n\t\t\t\tassert.True(t, strings.HasPrefix(filepath.Clean(result), filepath.Clean(extractDir)),\n\t\t\t\t\t\"Safe path should resolve within extraction directory\")\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestUnzipToDir_SymlinkAttacks tests UnzipToDir function with malicious ZIP archives\n// containing symlink entries that attempt path traversal attacks.\n//\n// EXPECTED BEHAVIOR: UnzipToDir should either:\n//  1. Detect and reject symlinks explicitly with a security error, OR\n//  2. Extract them safely (library converts symlinks to regular files)\nfunc TestUnzipToDir_SymlinkAttacks(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tsymlinkName string\n\t\tfileName    string\n\t\terrContains string\n\t}{\n\t\t{\n\t\t\tname:        \"direct symlink to outside directory\",\n\t\t\tsymlinkName: \"evil_link\",\n\t\t\tfileName:    \"evil_link/payload.txt\",\n\t\t\terrContains: \"not a directory\", // attempt to write through symlink leaf (which is not a directory)\n\t\t},\n\t\t{\n\t\t\tname:        \"directory symlink attack\",\n\t\t\tsymlinkName: \"safe_dir/link\",\n\t\t\tfileName:    \"safe_dir/link/payload.txt\",\n\t\t\terrContains: \"not a directory\", // attempt to write through symlink (which is not a directory)\n\t\t},\n\t\t{\n\t\t\tname:        \"symlink without payload file\",\n\t\t\tsymlinkName: \"standalone_link\",\n\t\t\tfileName:    \"\", // no payload file\n\t\t\terrContains: \"\", // no error expected, symlink without payload is safe\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttempDir := t.TempDir()\n\n\t\t\t// create outside target directory\n\t\t\toutsideDir := filepath.Join(tempDir, \"outside_target\")\n\t\t\trequire.NoError(t, os.MkdirAll(outsideDir, 0755))\n\n\t\t\t// create extraction directory\n\t\t\textractDir := filepath.Join(tempDir, \"extract\")\n\t\t\trequire.NoError(t, os.MkdirAll(extractDir, 0755))\n\n\t\t\tmaliciousZip := createMaliciousZipWithSymlink(t, tempDir, tt.symlinkName, outsideDir, tt.fileName)\n\n\t\t\terr := UnzipToDir(context.Background(), maliciousZip, extractDir)\n\n\t\t\t// check error expectations\n\t\t\tif tt.errContains != \"\" {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tt.errContains)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tanalyzeExtractionDirectory(t, extractDir)\n\n\t\t\t// check if payload file escaped extraction directory\n\t\t\tif tt.fileName != \"\" {\n\t\t\t\tmaliciousFile := filepath.Join(outsideDir, filepath.Base(tt.fileName))\n\t\t\t\tcheckFileOutsideExtraction(t, maliciousFile)\n\t\t\t}\n\n\t\t\t// check if symlink was created pointing outside\n\t\t\tsymlinkPath := filepath.Join(extractDir, tt.symlinkName)\n\t\t\tcheckSymlinkCreation(t, symlinkPath, extractDir, outsideDir)\n\t\t})\n\t}\n}\n\n// TestContentsFromZip_SymlinkAttacks tests the ContentsFromZip function with malicious\n// ZIP archives containing symlink entries.\n//\n// EXPECTED BEHAVIOR: ContentsFromZip should either:\n//  1. Reject symlinks explicitly, OR\n//  2. Return empty content for symlinks (library behavior)\n//\n// Though ContentsFromZip doesn't write to disk, but if symlinks are followed, it could read sensitive\n// files from outside the archive.\nfunc TestContentsFromZip_SymlinkAttacks(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tsymlinkName   string\n\t\tsymlinkTarget string\n\t\trequestPath   string\n\t\terrContains   string\n\t}{\n\t\t{\n\t\t\tname:          \"request symlink entry directly\",\n\t\t\tsymlinkName:   \"evil_link\",\n\t\t\tsymlinkTarget: \"/etc/hosts\", // attempt to read sensitive file\n\t\t\trequestPath:   \"evil_link\",\n\t\t\terrContains:   \"\", // no error expected - library returns symlink metadata\n\t\t},\n\t\t{\n\t\t\tname:          \"symlink in nested directory\",\n\t\t\tsymlinkName:   \"nested/link\",\n\t\t\tsymlinkTarget: \"/etc/hosts\",\n\t\t\trequestPath:   \"nested/link\",\n\t\t\terrContains:   \"\", // no error expected - library returns symlink metadata\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttempDir := t.TempDir()\n\n\t\t\t// create malicious ZIP with symlink entry (no payload file needed)\n\t\t\tmaliciousZip := createMaliciousZipWithSymlink(t, tempDir, tt.symlinkName, tt.symlinkTarget, \"\")\n\n\t\t\tcontents, err := ContentsFromZip(context.Background(), maliciousZip, tt.requestPath)\n\n\t\t\t// check error expectations\n\t\t\tif tt.errContains != \"\" {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tt.errContains)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// verify symlink handling - library should return symlink target as content (metadata)\n\t\t\tcontent, found := contents[tt.requestPath]\n\t\t\trequire.True(t, found, \"symlink entry should be found in results\")\n\n\t\t\t// verify symlink was NOT followed (content should be target path or empty)\n\t\t\tif content != \"\" && content != tt.symlinkTarget {\n\t\t\t\t// content is not empty and not the symlink target - check if actual file was read\n\t\t\t\tif _, statErr := os.Stat(tt.symlinkTarget); statErr == nil {\n\t\t\t\t\ttargetContent, readErr := os.ReadFile(tt.symlinkTarget)\n\t\t\t\t\tif readErr == nil && string(targetContent) == content {\n\t\t\t\t\t\tt.Errorf(\"critical issue!... symlink was FOLLOWED and external file content was read!\")\n\t\t\t\t\t\tt.Logf(\"  symlink: %s → %s\", tt.requestPath, tt.symlinkTarget)\n\t\t\t\t\t\tt.Logf(\"  content length: %d bytes\", len(content))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestExtractFromZipToUniqueTempFile_SymlinkAttacks tests the ExtractFromZipToUniqueTempFile\n// function with malicious ZIP archives containing symlink entries.\n//\n// EXPECTED BEHAVIOR: ExtractFromZipToUniqueTempFile should either:\n//  1. Reject symlinks explicitly, OR\n//  2. Extract them safely (library converts to empty files, filepath.Base sanitizes names)\n//\n// This function uses filepath.Base() on the archive entry name for temp file prefix and\n// os.CreateTemp() which creates files in the specified directory, so it should be protected.\nfunc TestExtractFromZipToUniqueTempFile_SymlinkAttacks(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tsymlinkName   string\n\t\tsymlinkTarget string\n\t\trequestPath   string\n\t\terrContains   string\n\t}{\n\t\t{\n\t\t\tname:          \"extract symlink entry to temp file\",\n\t\t\tsymlinkName:   \"evil_link\",\n\t\t\tsymlinkTarget: \"/etc/passwd\",\n\t\t\trequestPath:   \"evil_link\",\n\t\t\terrContains:   \"\", // no error expected - library extracts symlink metadata\n\t\t},\n\t\t{\n\t\t\tname:          \"extract nested symlink\",\n\t\t\tsymlinkName:   \"nested/dir/link\",\n\t\t\tsymlinkTarget: \"/tmp/outside\",\n\t\t\trequestPath:   \"nested/dir/link\",\n\t\t\terrContains:   \"\", // no error expected\n\t\t},\n\t\t{\n\t\t\tname:          \"extract path traversal symlink name\",\n\t\t\tsymlinkName:   \"../../escape\",\n\t\t\tsymlinkTarget: \"/tmp/outside\",\n\t\t\trequestPath:   \"../../escape\",\n\t\t\terrContains:   \"\", // no error expected - filepath.Base sanitizes name\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttempDir := t.TempDir()\n\n\t\t\tmaliciousZip := createMaliciousZipWithSymlink(t, tempDir, tt.symlinkName, tt.symlinkTarget, \"\")\n\n\t\t\t// create temp directory for extraction\n\t\t\textractTempDir := filepath.Join(tempDir, \"temp_extract\")\n\t\t\trequire.NoError(t, os.MkdirAll(extractTempDir, 0755))\n\n\t\t\topeners, err := ExtractFromZipToUniqueTempFile(context.Background(), maliciousZip, extractTempDir, tt.requestPath)\n\n\t\t\t// check error expectations\n\t\t\tif tt.errContains != \"\" {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tt.errContains)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// verify symlink was extracted\n\t\t\topener, found := openers[tt.requestPath]\n\t\t\trequire.True(t, found, \"symlink entry should be extracted\")\n\n\t\t\t// verify temp file is within temp directory\n\t\t\ttempFilePath := opener.path\n\t\t\tcleanTempDir := filepath.Clean(extractTempDir)\n\t\t\tcleanTempFile := filepath.Clean(tempFilePath)\n\t\t\trequire.True(t, strings.HasPrefix(cleanTempFile, cleanTempDir),\n\t\t\t\t\"temp file must be within temp directory: %s not in %s\", cleanTempFile, cleanTempDir)\n\n\t\t\t// verify symlink was NOT followed (content should be target path or empty)\n\t\t\tf, openErr := opener.Open()\n\t\t\trequire.NoError(t, openErr)\n\t\t\tdefer f.Close()\n\n\t\t\tcontent, readErr := io.ReadAll(f)\n\t\t\trequire.NoError(t, readErr)\n\n\t\t\t// check if symlink was followed (content matches actual file)\n\t\t\tif len(content) > 0 && string(content) != tt.symlinkTarget {\n\t\t\t\tif _, statErr := os.Stat(tt.symlinkTarget); statErr == nil {\n\t\t\t\t\ttargetContent, readErr := os.ReadFile(tt.symlinkTarget)\n\t\t\t\t\tif readErr == nil && string(targetContent) == string(content) {\n\t\t\t\t\t\tt.Errorf(\"critical issue!... symlink was FOLLOWED and external file content was copied!\")\n\t\t\t\t\t\tt.Logf(\"  symlink: %s → %s\", tt.requestPath, tt.symlinkTarget)\n\t\t\t\t\t\tt.Logf(\"  content length: %d bytes\", len(content))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\n// forensicFindings contains the results of analyzing an extraction directory\ntype forensicFindings struct {\n\tsymlinksFound          []forensicSymlink\n\tregularFiles           []string\n\tdirectories            []string\n\tsymlinkVulnerabilities []string\n}\n\ntype forensicSymlink struct {\n\tpath              string\n\ttarget            string\n\tescapesExtraction bool\n\tresolvedPath      string\n}\n\n// analyzeExtractionDirectory walks the extraction directory and detects symlinks that point\n// outside the extraction directory. It is silent unless vulnerabilities are found.\nfunc analyzeExtractionDirectory(t *testing.T, extractDir string) forensicFindings {\n\tt.Helper()\n\n\tfindings := forensicFindings{}\n\n\tfilepath.Walk(extractDir, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil {\n\t\t\t// only log if there's an error walking the directory\n\t\t\tt.Logf(\"Error walking %s: %v\", path, err)\n\t\t\treturn nil\n\t\t}\n\n\t\trelPath := strings.TrimPrefix(path, extractDir+\"/\")\n\t\tif relPath == \"\" {\n\t\t\trelPath = \".\"\n\t\t}\n\n\t\t// use Lstat to detect symlinks without following them\n\t\tlinfo, lerr := os.Lstat(path)\n\t\tif lerr == nil && linfo.Mode()&os.ModeSymlink != 0 {\n\t\t\ttarget, _ := os.Readlink(path)\n\n\t\t\t// resolve to see where it actually points\n\t\t\tvar resolvedPath string\n\t\t\tvar escapesExtraction bool\n\n\t\t\tif filepath.IsAbs(target) {\n\t\t\t\t// absolute symlink\n\t\t\t\tresolvedPath = target\n\t\t\t\tcleanExtractDir := filepath.Clean(extractDir)\n\t\t\t\tescapesExtraction = !strings.HasPrefix(filepath.Clean(target), cleanExtractDir)\n\n\t\t\t\tif escapesExtraction {\n\t\t\t\t\tt.Errorf(\"critical issue!... absolute symlink created: %s → %s\", relPath, target)\n\t\t\t\t\tt.Logf(\"  this symlink points outside the extraction directory\")\n\t\t\t\t\tfindings.symlinkVulnerabilities = append(findings.symlinkVulnerabilities,\n\t\t\t\t\t\tfmt.Sprintf(\"absolute symlink: %s → %s\", relPath, target))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// relative symlink - resolve it\n\t\t\t\tresolvedPath = filepath.Join(filepath.Dir(path), target)\n\t\t\t\tcleanResolved := filepath.Clean(resolvedPath)\n\t\t\t\tcleanExtractDir := filepath.Clean(extractDir)\n\n\t\t\t\tescapesExtraction = !strings.HasPrefix(cleanResolved, cleanExtractDir)\n\n\t\t\t\tif escapesExtraction {\n\t\t\t\t\tt.Errorf(\"critical issue!... symlink escapes extraction dir: %s → %s\", relPath, target)\n\t\t\t\t\tt.Logf(\"  symlink resolves to: %s (outside extraction directory)\", cleanResolved)\n\t\t\t\t\tfindings.symlinkVulnerabilities = append(findings.symlinkVulnerabilities,\n\t\t\t\t\t\tfmt.Sprintf(\"relative symlink escape: %s → %s (resolves to %s)\", relPath, target, cleanResolved))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfindings.symlinksFound = append(findings.symlinksFound, forensicSymlink{\n\t\t\t\tpath:              relPath,\n\t\t\t\ttarget:            target,\n\t\t\t\tescapesExtraction: escapesExtraction,\n\t\t\t\tresolvedPath:      resolvedPath,\n\t\t\t})\n\t\t} else {\n\t\t\t// regular file or directory - collect silently\n\t\t\tif info.IsDir() {\n\t\t\t\tfindings.directories = append(findings.directories, relPath)\n\t\t\t} else {\n\t\t\t\tfindings.regularFiles = append(findings.regularFiles, relPath)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t})\n\n\treturn findings\n}\n\n// checkFileOutsideExtraction checks if a file was written outside the extraction directory.\n// Returns true if the file exists (vulnerability), false otherwise. Silent on success.\nfunc checkFileOutsideExtraction(t *testing.T, filePath string) bool {\n\tt.Helper()\n\n\tif stat, err := os.Stat(filePath); err == nil {\n\t\tcontent, _ := os.ReadFile(filePath)\n\t\tt.Errorf(\"critical issue!... file written OUTSIDE extraction directory!\")\n\t\tt.Logf(\"  location: %s\", filePath)\n\t\tt.Logf(\"  size: %d bytes\", stat.Size())\n\t\tt.Logf(\"  content: %s\", string(content))\n\t\tt.Logf(\"  ...this means an attacker can write files to arbitrary locations on the filesystem\")\n\t\treturn true\n\t}\n\t// no file found outside extraction directory...\n\treturn false\n}\n\n// checkSymlinkCreation verifies if a symlink was created at the expected path and reports\n// whether it points outside the extraction directory. Silent unless a symlink is found.\nfunc checkSymlinkCreation(t *testing.T, symlinkPath, extractDir, expectedTarget string) bool {\n\tt.Helper()\n\n\tif linfo, err := os.Lstat(symlinkPath); err == nil {\n\t\tif linfo.Mode()&os.ModeSymlink != 0 {\n\t\t\ttarget, _ := os.Readlink(symlinkPath)\n\n\t\t\tif expectedTarget != \"\" && target == expectedTarget {\n\t\t\t\tt.Errorf(\"critical issue!... symlink pointing outside extraction dir was created!\")\n\t\t\t\tt.Logf(\"  Symlink: %s → %s\", symlinkPath, target)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Check if it escapes even if target doesn't match expected\n\t\t\tif filepath.IsAbs(target) {\n\t\t\t\tcleanExtractDir := filepath.Clean(extractDir)\n\t\t\t\tif !strings.HasPrefix(filepath.Clean(target), cleanExtractDir) {\n\t\t\t\t\tt.Errorf(\"critical issue!... absolute symlink escapes extraction dir!\")\n\t\t\t\t\tt.Logf(\"  symlink: %s → %s\", symlinkPath, target)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// if it exists but is not a symlink, that's good (attack was thwarted)...\n\t}\n\n\treturn false\n}\n\n// createMaliciousZipWithSymlink creates a ZIP archive containing a symlink entry pointing to an arbitrary target,\n// followed by a file entry that attempts to write through that symlink.\n// returns the path to the created ZIP archive.\nfunc createMaliciousZipWithSymlink(t *testing.T, tempDir, symlinkName, symlinkTarget, fileName string) string {\n\tt.Helper()\n\n\tmaliciousZip := filepath.Join(tempDir, \"malicious.zip\")\n\tzipFile, err := os.Create(maliciousZip)\n\trequire.NoError(t, err)\n\tdefer zipFile.Close()\n\n\tzw := zip.NewWriter(zipFile)\n\n\t// create parent directories if the symlink is nested\n\tif dir := filepath.Dir(symlinkName); dir != \".\" {\n\t\tdirHeader := &zip.FileHeader{\n\t\t\tName:   dir + \"/\",\n\t\t\tMethod: zip.Store,\n\t\t}\n\t\tdirHeader.SetMode(os.ModeDir | 0755)\n\t\t_, err = zw.CreateHeader(dirHeader)\n\t\trequire.NoError(t, err)\n\t}\n\n\t// create symlink entry pointing outside extraction directory\n\t// note: ZIP format stores symlinks as regular files with the target path as content\n\tsymlinkHeader := &zip.FileHeader{\n\t\tName:   symlinkName,\n\t\tMethod: zip.Store,\n\t}\n\tsymlinkHeader.SetMode(os.ModeSymlink | 0755)\n\n\tsymlinkWriter, err := zw.CreateHeader(symlinkHeader)\n\trequire.NoError(t, err)\n\n\t// write the symlink target as the file content (this is how ZIP stores symlinks)\n\t_, err = symlinkWriter.Write([]byte(symlinkTarget))\n\trequire.NoError(t, err)\n\n\t// create file entry that will be written through the symlink\n\tif fileName != \"\" {\n\t\tpayloadContent := []byte(\"MALICIOUS PAYLOAD - This should NOT be written outside extraction dir!\")\n\t\tpayloadHeader := &zip.FileHeader{\n\t\t\tName:   fileName,\n\t\t\tMethod: zip.Deflate,\n\t\t}\n\t\tpayloadHeader.SetMode(0644)\n\n\t\tpayloadWriter, err := zw.CreateHeader(payloadHeader)\n\t\trequire.NoError(t, err)\n\n\t\t_, err = payloadWriter.Write(payloadContent)\n\t\trequire.NoError(t, err)\n\t}\n\n\trequire.NoError(t, zw.Close())\n\trequire.NoError(t, zipFile.Close())\n\n\treturn maliciousZip\n}\n"
  },
  {
    "path": "internal/generate.go",
    "content": "package internal\n\n//go:generate go run ./sourcemetadata/generate/main.go\n//go:generate go run ./packagemetadata/generate/main.go\n"
  },
  {
    "path": "internal/input.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n)\n\n// IsPipedInput returns true if there is no input device, which means the user **may** be providing input via a pipe.\nfunc IsPipedInput() (bool, error) {\n\tfi, err := os.Stdin.Stat()\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"unable to determine if there is piped input: %w\", err)\n\t}\n\n\t// note: we should NOT use the absence of a character device here as the hint that there may be input expected\n\t// on stdin, as running syft as a subprocess you would expect no character device to be present but input can\n\t// be from either stdin or indicated by the CLI. Checking if stdin is a pipe is the most direct way to determine\n\t// if there *may* be bytes that will show up on stdin that should be used for the analysis source.\n\treturn fi.Mode()&os.ModeNamedPipe != 0, nil\n}\n\n// IsTerminal returns true if there is a terminal present.\nfunc IsTerminal() bool {\n\tstat, _ := os.Stdin.Stat()\n\treturn (stat.Mode() & os.ModeCharDevice) != 0\n}\n"
  },
  {
    "path": "internal/jsonschema/README.md",
    "content": "Please see [schema/json/README.md](../../schema/json/README.md) for more information on the JSON schema files in this directory."
  },
  {
    "path": "internal/jsonschema/comments.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/invopop/jsonschema\"\n)\n\nfunc copyAliasFieldComments(commentMap map[string]string, repoRoot string) {\n\t// find all type aliases by parsing Go source files\n\taliases := findTypeAliases(repoRoot)\n\n\t// for each alias, copy field comments from the source type\n\tfor aliasName, sourceName := range aliases {\n\t\t// find all field comments for the source type\n\t\tfor key, comment := range commentMap {\n\t\t\t// check if this is a field comment for the source type\n\t\t\t// format: \"github.com/anchore/syft/syft/pkg.SourceType.FieldName\"\n\t\t\tif strings.Contains(key, \".\"+sourceName+\".\") {\n\t\t\t\t// create the corresponding key for the alias\n\t\t\t\taliasKey := strings.Replace(key, \".\"+sourceName+\".\", \".\"+aliasName+\".\", 1)\n\t\t\t\tcommentMap[aliasKey] = comment\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc findTypeAliases(repoRoot string) map[string]string {\n\taliases := make(map[string]string)\n\tfset := token.NewFileSet()\n\n\t// walk through all Go files in the repo\n\terr := filepath.Walk(repoRoot, func(path string, info os.FileInfo, err error) error {\n\t\tif err != nil || info.IsDir() || !strings.HasSuffix(path, \".go\") {\n\t\t\treturn nil\n\t\t}\n\n\t\t// parse the file\n\t\tfile, err := parser.ParseFile(fset, path, nil, parser.ParseComments)\n\t\tif err != nil {\n\t\t\treturn nil\n\t\t}\n\n\t\t// look for type alias declarations\n\t\tast.Inspect(file, func(n ast.Node) bool {\n\t\t\ttypeSpec, ok := n.(*ast.TypeSpec)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// check if this is a type alias (e.g., type A B where B is an identifier)\n\t\t\tident, ok := typeSpec.Type.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// store the alias mapping: aliasName -> sourceName\n\t\t\taliases[typeSpec.Name.Name] = ident.Name\n\t\t\treturn true\n\t\t})\n\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"error: failed to find type aliases: %v\\n\", err)\n\t\tpanic(err)\n\t}\n\n\treturn aliases\n}\n\nfunc hasDescriptionInAlternatives(schema *jsonschema.Schema) bool {\n\t// check oneOf alternatives\n\tfor _, alt := range schema.OneOf {\n\t\tif alt.Description != \"\" {\n\t\t\treturn true\n\t\t}\n\t}\n\t// check anyOf alternatives\n\tfor _, alt := range schema.AnyOf {\n\t\tif alt.Description != \"\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc warnMissingDescriptions(schema *jsonschema.Schema, metadataNames []string) { //nolint:gocognit\n\tvar missingTypeDescriptions []string\n\tvar missingFieldDescriptions []string\n\n\t// check metadata types for missing descriptions\n\tfor _, name := range metadataNames {\n\t\tdef, ok := schema.Definitions[name]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if type has a description\n\t\tif def.Description == \"\" {\n\t\t\tmissingTypeDescriptions = append(missingTypeDescriptions, name)\n\t\t}\n\n\t\t// check if fields have descriptions\n\t\tif def.Properties != nil {\n\t\t\tfor pair := def.Properties.Newest(); pair != nil; pair = pair.Prev() {\n\t\t\t\tfieldName := pair.Key\n\t\t\t\tfieldSchema := pair.Value\n\n\t\t\t\t// skip if field has a description\n\t\t\t\tif fieldSchema.Description != \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// skip if field is a reference (descriptions come from the referenced type)\n\t\t\t\tif fieldSchema.Ref != \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// skip if field is an array/object with items that are references\n\t\t\t\tif fieldSchema.Items != nil && fieldSchema.Items.Ref != \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// skip if field uses oneOf/anyOf with descriptions in the alternatives\n\t\t\t\tif hasDescriptionInAlternatives(fieldSchema) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tmissingFieldDescriptions = append(missingFieldDescriptions, fmt.Sprintf(\"%s.%s\", name, fieldName))\n\t\t\t}\n\t\t}\n\t}\n\n\t// report findings\n\tif len(missingTypeDescriptions) > 0 {\n\t\tfmt.Fprintf(os.Stderr, \"\\nwarning: %d metadata types are missing descriptions:\\n\", len(missingTypeDescriptions))\n\t\tfor _, name := range missingTypeDescriptions {\n\t\t\tfmt.Fprintf(os.Stderr, \"  - %s\\n\", name)\n\t\t}\n\t}\n\n\tif len(missingFieldDescriptions) > 0 {\n\t\tfmt.Fprintf(os.Stderr, \"\\nwarning: %d fields are missing descriptions:\\n\", len(missingFieldDescriptions))\n\t\tfor _, field := range missingFieldDescriptions {\n\t\t\tfmt.Fprintf(os.Stderr, \"  - %s\\n\", field)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/jsonschema/comments_test.go",
    "content": "package main\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/invopop/jsonschema\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\torderedmap \"github.com/wk8/go-ordered-map/v2\"\n)\n\n// TestCopyAliasFieldComments verifies that field comments from source types are correctly copied to alias types.\n// This is important for type aliases like `type RpmArchive RpmDBEntry` where the alias should inherit all field descriptions.\nfunc TestCopyAliasFieldComments(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tcommentMap   map[string]string\n\t\taliases      map[string]string\n\t\twantComments map[string]string\n\t}{\n\t\t{\n\t\t\tname: \"copies field comments from source type to alias\",\n\t\t\tcommentMap: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry\":       \"RpmDBEntry represents all captured data from a RPM DB package entry.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry.Name\":  \"Name is the RPM package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry.Epoch\": \"Epoch is the version epoch.\",\n\t\t\t},\n\t\t\taliases: map[string]string{\n\t\t\t\t\"RpmArchive\": \"RpmDBEntry\",\n\t\t\t},\n\t\t\twantComments: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry\":       \"RpmDBEntry represents all captured data from a RPM DB package entry.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry.Name\":  \"Name is the RPM package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmDBEntry.Epoch\": \"Epoch is the version epoch.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmArchive.Name\":  \"Name is the RPM package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.RpmArchive.Epoch\": \"Epoch is the version epoch.\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"handles multiple aliases\",\n\t\t\tcommentMap: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry\":              \"DpkgDBEntry represents data from dpkg.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry.Package\":      \"Package is the package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry.Architecture\": \"Architecture is the target arch.\",\n\t\t\t},\n\t\t\taliases: map[string]string{\n\t\t\t\t\"DpkgArchiveEntry\": \"DpkgDBEntry\",\n\t\t\t\t\"DpkgSnapshot\":     \"DpkgDBEntry\",\n\t\t\t},\n\t\t\twantComments: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry\":                   \"DpkgDBEntry represents data from dpkg.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry.Package\":           \"Package is the package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgDBEntry.Architecture\":      \"Architecture is the target arch.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgArchiveEntry.Package\":      \"Package is the package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgArchiveEntry.Architecture\": \"Architecture is the target arch.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgSnapshot.Package\":          \"Package is the package name.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.DpkgSnapshot.Architecture\":     \"Architecture is the target arch.\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"does not copy non-field comments\",\n\t\t\tcommentMap: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.SomeType\":       \"SomeType struct comment.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.SomeType.Field\": \"Field comment.\",\n\t\t\t},\n\t\t\taliases: map[string]string{\n\t\t\t\t\"AliasType\": \"SomeType\",\n\t\t\t},\n\t\t\twantComments: map[string]string{\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.SomeType\":        \"SomeType struct comment.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.SomeType.Field\":  \"Field comment.\",\n\t\t\t\t\"github.com/anchore/syft/syft/pkg.AliasType.Field\": \"Field comment.\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// create temp dir for testing\n\t\t\ttmpDir := t.TempDir()\n\n\t\t\t// create a test go file with type aliases\n\t\t\ttestFile := filepath.Join(tmpDir, \"test.go\")\n\t\t\tcontent := \"package test\\n\\n\"\n\t\t\tfor alias, source := range tt.aliases {\n\t\t\t\tcontent += \"type \" + alias + \" \" + source + \"\\n\"\n\t\t\t}\n\t\t\terr := os.WriteFile(testFile, []byte(content), 0644)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// make a copy of the comment map since the function modifies it\n\t\t\tcommentMap := make(map[string]string)\n\t\t\tfor k, v := range tt.commentMap {\n\t\t\t\tcommentMap[k] = v\n\t\t\t}\n\n\t\t\t// run the function\n\t\t\tcopyAliasFieldComments(commentMap, tmpDir)\n\n\t\t\t// verify results\n\t\t\tassert.Equal(t, tt.wantComments, commentMap)\n\t\t})\n\t}\n}\n\nfunc TestFindTypeAliases(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tfileContent string\n\t\twantAliases map[string]string\n\t}{\n\t\t{\n\t\t\tname: \"finds simple type alias\",\n\t\t\tfileContent: `package test\n\ntype RpmArchive RpmDBEntry\ntype DpkgArchiveEntry DpkgDBEntry\n`,\n\t\t\twantAliases: map[string]string{\n\t\t\t\t\"RpmArchive\":       \"RpmDBEntry\",\n\t\t\t\t\"DpkgArchiveEntry\": \"DpkgDBEntry\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignores struct definitions\",\n\t\t\tfileContent: `package test\n\ntype MyStruct struct {\n\tField string\n}\n\ntype AliasType BaseType\n`,\n\t\t\twantAliases: map[string]string{\n\t\t\t\t\"AliasType\": \"BaseType\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignores interface definitions\",\n\t\t\tfileContent: `package test\n\ntype MyInterface interface {\n\tMethod()\n}\n\ntype AliasType BaseType\n`,\n\t\t\twantAliases: map[string]string{\n\t\t\t\t\"AliasType\": \"BaseType\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"handles multiple files\",\n\t\t\tfileContent: `package test\n\ntype Alias1 Base1\ntype Alias2 Base2\n`,\n\t\t\twantAliases: map[string]string{\n\t\t\t\t\"Alias1\": \"Base1\",\n\t\t\t\t\"Alias2\": \"Base2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// create temp dir\n\t\t\ttmpDir := t.TempDir()\n\n\t\t\t// write test file\n\t\t\ttestFile := filepath.Join(tmpDir, \"test.go\")\n\t\t\terr := os.WriteFile(testFile, []byte(tt.fileContent), 0644)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// run function\n\t\t\taliases := findTypeAliases(tmpDir)\n\n\t\t\t// verify\n\t\t\tassert.Equal(t, tt.wantAliases, aliases)\n\t\t})\n\t}\n}\n\nfunc TestHasDescriptionInAlternatives(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tschema *jsonschema.Schema\n\t\twant   bool\n\t}{\n\t\t{\n\t\t\tname: \"returns true when oneOf has description\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tOneOf: []*jsonschema.Schema{\n\t\t\t\t\t{Description: \"First alternative\"},\n\t\t\t\t\t{Type: \"null\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"returns true when anyOf has description\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tAnyOf: []*jsonschema.Schema{\n\t\t\t\t\t{Description: \"First alternative\"},\n\t\t\t\t\t{Type: \"null\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"returns false when no alternatives have descriptions\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tOneOf: []*jsonschema.Schema{\n\t\t\t\t\t{Type: \"integer\"},\n\t\t\t\t\t{Type: \"null\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns false when no oneOf or anyOf\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tType: \"string\",\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"returns true when any alternative in oneOf has description\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tOneOf: []*jsonschema.Schema{\n\t\t\t\t\t{Type: \"integer\"},\n\t\t\t\t\t{Type: \"string\", Description: \"Second alternative\"},\n\t\t\t\t\t{Type: \"null\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := hasDescriptionInAlternatives(tt.schema)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestWarnMissingDescriptions(t *testing.T) {\n\ttests := []struct {\n\t\tname              string\n\t\tschema            *jsonschema.Schema\n\t\tmetadataNames     []string\n\t\twantTypeWarnings  int\n\t\twantFieldWarnings int\n\t}{\n\t\t{\n\t\t\tname: \"no warnings when all types have descriptions\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tDescription: \"Type A description\",\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {Type: \"string\", Description: \"Field 1\"},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  0,\n\t\t\twantFieldWarnings: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"warns about missing type description\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {Type: \"string\", Description: \"Field 1\"},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  1,\n\t\t\twantFieldWarnings: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"warns about missing field description\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tDescription: \"Type A description\",\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {Type: \"string\"},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  0,\n\t\t\twantFieldWarnings: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"skips fields with references\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tDescription: \"Type A description\",\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {Ref: \"#/$defs/OtherType\"},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  0,\n\t\t\twantFieldWarnings: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"skips fields with items that are references\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tDescription: \"Type A description\",\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {\n\t\t\t\t\t\t\t\tType:  \"array\",\n\t\t\t\t\t\t\t\tItems: &jsonschema.Schema{Ref: \"#/$defs/OtherType\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  0,\n\t\t\twantFieldWarnings: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"skips fields with oneOf containing descriptions\",\n\t\t\tschema: &jsonschema.Schema{\n\t\t\t\tDefinitions: map[string]*jsonschema.Schema{\n\t\t\t\t\t\"TypeA\": {\n\t\t\t\t\t\tDescription: \"Type A description\",\n\t\t\t\t\t\tProperties: newOrderedMap(map[string]*jsonschema.Schema{\n\t\t\t\t\t\t\t\"field1\": {\n\t\t\t\t\t\t\t\tOneOf: []*jsonschema.Schema{\n\t\t\t\t\t\t\t\t\t{Type: \"integer\", Description: \"Integer value\"},\n\t\t\t\t\t\t\t\t\t{Type: \"null\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadataNames:     []string{\"TypeA\"},\n\t\t\twantTypeWarnings:  0,\n\t\t\twantFieldWarnings: 0,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// capture stderr output would require more complex testing\n\t\t\t// for now, just verify the function runs without panicking\n\t\t\trequire.NotPanics(t, func() {\n\t\t\t\twarnMissingDescriptions(tt.schema, tt.metadataNames)\n\t\t\t})\n\t\t})\n\t}\n}\n\n// helper to create an ordered map from a regular map\nfunc newOrderedMap(m map[string]*jsonschema.Schema) *orderedmap.OrderedMap[string, *jsonschema.Schema] {\n\tom := orderedmap.New[string, *jsonschema.Schema]()\n\tfor k, v := range m {\n\t\tom.Set(k, v)\n\t}\n\treturn om\n}\n"
  },
  {
    "path": "internal/jsonschema/main.go",
    "content": "package main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/iancoleman/strcase\"\n\t\"github.com/invopop/jsonschema\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\tsyftJsonModel \"github.com/anchore/syft/syft/format/syftjson/model\"\n)\n\n/*\nThis method of creating the JSON schema only captures strongly typed fields for the purpose of integrations between syft\nJSON output and integrations. The downside to this approach is that any values and types used on weakly typed fields\nare not captured (empty interfaces). This means that pkg.Package.Metadata is not validated at this time. This approach\ncan be extended to include specific package metadata struct shapes in the future.\n*/\n\nvar repoRoot string\n\nfunc init() {\n\tvar err error\n\trepoRoot, err = packagemetadata.RepoRoot()\n\tif err != nil {\n\t\tfmt.Println(\"unable to determine repo root\")\n\t\tos.Exit(1)\n\t}\n}\n\nfunc main() {\n\twrite(encode(build()))\n}\n\nfunc schemaID() jsonschema.ID {\n\t// Today we do not host the schemas at this address, but per the JSON schema spec we should be referencing\n\t// the schema by a URL in a domain we control. This is a placeholder for now.\n\treturn jsonschema.ID(fmt.Sprintf(\"anchore.io/schema/syft/json/%s\", internal.JSONSchemaVersion))\n}\n\nfunc assembleTypeContainer(items []any) (any, map[string]string) {\n\tstructFields := make([]reflect.StructField, len(items))\n\tmapping := make(map[string]string, len(items))\n\ttypesMissingNames := make([]reflect.Type, 0)\n\tfor i, item := range items {\n\t\titemType := reflect.TypeOf(item)\n\n\t\tjsonName := packagemetadata.JSONName(item)\n\t\tfieldName := strcase.ToCamel(jsonName)\n\n\t\tif jsonName == \"\" {\n\t\t\ttypesMissingNames = append(typesMissingNames, itemType)\n\t\t\tcontinue\n\t\t}\n\n\t\tmapping[itemType.Name()] = fieldName\n\n\t\tstructFields[i] = reflect.StructField{\n\t\t\tName: fieldName,\n\t\t\tType: itemType,\n\t\t}\n\t}\n\n\tif len(typesMissingNames) > 0 {\n\t\tfmt.Println(\"the following types are missing JSON names (manually curated in ./internal/packagemetadata/names.go):\")\n\t\tfor _, t := range typesMissingNames {\n\t\t\tfmt.Println(\"  - \", t.Name())\n\t\t}\n\t\tos.Exit(1)\n\t}\n\n\tstructType := reflect.StructOf(structFields)\n\treturn reflect.New(structType).Elem().Interface(), mapping\n}\n\n//nolint:funlen\nfunc build() *jsonschema.Schema {\n\t// create metadata mapping first so we can use it in the Namer function for self-referential types\n\tpkgMetadataContainer, pkgMetadataMapping := assembleTypeContainer(packagemetadata.AllTypes())\n\tpkgMetadataContainerType := reflect.TypeOf(pkgMetadataContainer)\n\n\t// create a set of valid metadata display names for lookup\n\t// (since Namer now returns display names, the schema definitions use display names as keys)\n\tpkgMetadataDisplayNames := make(map[string]struct{}, len(pkgMetadataMapping))\n\tfor _, displayName := range pkgMetadataMapping {\n\t\tpkgMetadataDisplayNames[displayName] = struct{}{}\n\t}\n\n\treflector := &jsonschema.Reflector{\n\t\tBaseSchemaID:              schemaID(),\n\t\tAllowAdditionalProperties: true,\n\t\tNamer: func(r reflect.Type) string {\n\t\t\tname := strings.TrimPrefix(r.Name(), \"JSON\")\n\t\t\t// if this is a metadata type, use the mapped name for consistent references\n\t\t\tif mappedName, ok := pkgMetadataMapping[name]; ok {\n\t\t\t\treturn mappedName\n\t\t\t}\n\t\t\treturn name\n\t\t},\n\t\tCommentMap: make(map[string]string),\n\t}\n\n\t// extract comments from Go source files to enrich schema descriptions\n\t//\n\t// note: AddGoComments parses from the module root and creates keys like \"syft/pkg.TypeName\",\n\t// but the reflector expects fully qualified paths like \"github.com/anchore/syft/syft/pkg.TypeName\".\n\t// We fix up the keys after extraction to match the expected format.\n\tif err := reflector.AddGoComments(\"github.com/anchore/syft\", repoRoot); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"warning: failed to extract Go comments: %v\\n\", err)\n\t} else {\n\t\t// fix up comment map keys to use fully qualified import paths\n\t\t// note: AddGoComments includes the absolute repo path WITHOUT the leading slash\n\t\trepoRootNoSlash := strings.TrimPrefix(repoRoot, \"/\")\n\t\tfixedMap := make(map[string]string)\n\t\tfor k, v := range reflector.CommentMap {\n\t\t\tnewKey := k\n\t\t\tif !strings.HasPrefix(k, \"github.com/\") {\n\t\t\t\t// key doesn't have module prefix, add it\n\t\t\t\tnewKey = \"github.com/anchore/syft/\" + k\n\t\t\t} else if strings.Contains(k, repoRootNoSlash) {\n\t\t\t\t// key has the absolute repo path embedded, strip it\n\t\t\t\t// format: github.com/anchore/syft/Users/wagoodman/code/syft-manual/syft/pkg.Type\n\t\t\t\t// should be: github.com/anchore/syft/syft/pkg.Type\n\t\t\t\tnewKey = strings.Replace(k, repoRootNoSlash+\"/\", \"\", 1)\n\t\t\t}\n\t\t\tfixedMap[newKey] = v\n\t\t}\n\t\treflector.CommentMap = fixedMap\n\n\t\t// copy field comments for type aliases (e.g., type RpmArchive RpmDBEntry)\n\t\tcopyAliasFieldComments(reflector.CommentMap, repoRoot)\n\t}\n\n\t// srcMetadataContainer := assembleTypeContainer(sourcemetadata.AllTypes())\n\t// srcMetadataContainerType := reflect.TypeOf(srcMetadataContainer)\n\n\tdocumentSchema := reflector.ReflectFromType(reflect.TypeOf(&syftJsonModel.Document{}))\n\tpkgMetadataSchema := reflector.ReflectFromType(reflect.TypeOf(pkgMetadataContainer))\n\t// srcMetadataSchema := reflector.ReflectFromType(reflect.TypeOf(srcMetadataContainer))\n\n\t// TODO: add source metadata types\n\n\t// inject the definitions of all packages metadata into the schema definitions\n\n\tvar metadataNames []string\n\tfor typeName, definition := range pkgMetadataSchema.Definitions {\n\t\tif typeName == pkgMetadataContainerType.Name() {\n\t\t\t// ignore the definition for the fake container\n\t\t\tcontinue\n\t\t}\n\n\t\tif _, ok := pkgMetadataDisplayNames[typeName]; ok {\n\t\t\t// this is a package metadata type (typeName is already the display name from Namer)\n\t\t\tdocumentSchema.Definitions[typeName] = definition\n\t\t\tmetadataNames = append(metadataNames, typeName)\n\t\t} else {\n\t\t\t// this is a type that the metadata type uses (e.g. DpkgFileRecord)\n\t\t\tdocumentSchema.Definitions[typeName] = definition\n\t\t}\n\t}\n\n\t// ensure the generated list of names is stable between runs\n\tsort.Strings(metadataNames)\n\n\tmetadataTypes := []*jsonschema.Schema{\n\t\t// allow for no metadata to be provided\n\t\t{Type: \"null\"},\n\t}\n\tfor _, name := range metadataNames {\n\t\tmetadataTypes = append(metadataTypes, &jsonschema.Schema{\n\t\t\tRef: fmt.Sprintf(\"#/$defs/%s\", name),\n\t\t})\n\t}\n\n\t// set the \"anyOf\" field for Package.Metadata to be a conjunction of several types\n\tdocumentSchema.Definitions[\"Package\"].Properties.Set(\"metadata\", &jsonschema.Schema{AnyOf: metadataTypes})\n\n\t// warn about missing descriptions\n\twarnMissingDescriptions(documentSchema, metadataNames)\n\n\treturn documentSchema\n}\n\nfunc encode(schema *jsonschema.Schema) []byte {\n\tnewSchemaBuffer := new(bytes.Buffer)\n\tenc := json.NewEncoder(newSchemaBuffer)\n\t// prevent > and < from being escaped in the payload\n\tenc.SetEscapeHTML(false)\n\tenc.SetIndent(\"\", \"  \")\n\terr := enc.Encode(&schema)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn newSchemaBuffer.Bytes()\n}\n\nfunc write(schema []byte) {\n\tschemaPath := filepath.Join(repoRoot, \"schema\", \"json\", fmt.Sprintf(\"schema-%s.json\", internal.JSONSchemaVersion))\n\tlatestSchemaPath := filepath.Join(repoRoot, \"schema\", \"json\", \"schema-latest.json\")\n\n\tif _, err := os.Stat(schemaPath); !os.IsNotExist(err) {\n\t\t// check if the schema is the same...\n\t\texistingFh, err := os.Open(schemaPath)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\texistingSchemaBytes, err := io.ReadAll(existingFh) //nolint:gocritic // offline code generator\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif bytes.Equal(existingSchemaBytes, schema) {\n\t\t\t// the generated schema is the same, bail with no error :)\n\t\t\tfmt.Println(\"No change to the existing schema!\")\n\t\t\tos.Exit(0)\n\t\t}\n\n\t\t// the generated schema is different, bail with error :(\n\t\tfmt.Printf(\"Cowardly refusing to overwrite existing schema (%s)!\\nSee the schema/json/README.md for how to increment\\n\", schemaPath)\n\t\tos.Exit(1)\n\t}\n\n\tfh, err := os.Create(schemaPath)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer fh.Close()\n\n\t_, err = fh.Write(schema)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tlatestFile, err := os.Create(latestSchemaPath)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer latestFile.Close()\n\n\t_, err = latestFile.Write(schema)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Printf(\"Wrote new schema to %q\\n\", schemaPath)\n}\n"
  },
  {
    "path": "internal/licenses/context.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n)\n\ntype licenseScannerKey struct{}\n\nvar ctxKey = licenseScannerKey{}\n\nfunc SetContextLicenseScanner(ctx context.Context, s Scanner) context.Context {\n\treturn context.WithValue(ctx, ctxKey, s)\n}\n\nfunc IsContextLicenseScannerSet(ctx context.Context) bool {\n\t_, ok := ctx.Value(ctxKey).(Scanner)\n\treturn ok\n}\n\nfunc ContextLicenseScanner(ctx context.Context) (Scanner, error) {\n\tif s, ok := ctx.Value(ctxKey).(Scanner); ok {\n\t\treturn s, nil\n\t}\n\treturn NewDefaultScanner()\n}\n"
  },
  {
    "path": "internal/licenses/context_test.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSetContextLicenseScanner(t *testing.T) {\n\tscanner := testScanner()\n\tctx := context.Background()\n\tctx = SetContextLicenseScanner(ctx, scanner)\n\n\tval := ctx.Value(ctxKey)\n\trequire.NotNil(t, val)\n\ts, ok := val.(Scanner)\n\trequire.True(t, ok)\n\trequire.Equal(t, scanner, s)\n}\n\nfunc TestIsContextLicenseScannerSet(t *testing.T) {\n\tscanner := testScanner()\n\tctx := context.Background()\n\trequire.False(t, IsContextLicenseScannerSet(ctx))\n\n\tctx = SetContextLicenseScanner(ctx, scanner)\n\trequire.True(t, IsContextLicenseScannerSet(ctx))\n}\n\nfunc TestContextLicenseScanner(t *testing.T) {\n\tt.Run(\"with scanner\", func(t *testing.T) {\n\t\tscanner := testScanner()\n\t\tctx := SetContextLicenseScanner(context.Background(), scanner)\n\t\ts, err := ContextLicenseScanner(ctx)\n\t\tif err != nil || s != scanner {\n\t\t\tt.Fatal(\"expected scanner from context\")\n\t\t}\n\t})\n\n\tt.Run(\"without scanner\", func(t *testing.T) {\n\t\tctx := context.Background()\n\t\ts, err := ContextLicenseScanner(ctx)\n\t\tif err != nil || s == nil {\n\t\t\tt.Fatal(\"expected default scanner\")\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "internal/licenses/find_evidence.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"io\"\n)\n\nfunc (s *scanner) FindEvidence(_ context.Context, reader io.Reader) (evidence []Evidence, content []byte, err error) {\n\tif s.scanner == nil {\n\t\treturn nil, nil, nil\n\t}\n\n\tcontent, err = io.ReadAll(reader) //nolint:gocritic // license scanner requires full content\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tcov := s.scanner(content)\n\tif cov.Percent < s.coverageThreshold {\n\t\t// unknown or no licenses here\n\t\t// => check return content to Search to process\n\t\treturn nil, content, nil\n\t}\n\n\tevidence = make([]Evidence, 0)\n\tfor _, m := range cov.Match {\n\t\tevidence = append(evidence, Evidence{\n\t\t\tID:    m.ID,\n\t\t\tType:  m.Type,\n\t\t\tStart: m.Start,\n\t\t\tEnd:   m.End,\n\t\t\tIsURL: m.IsURL,\n\t\t})\n\t}\n\treturn evidence, content, nil\n}\n"
  },
  {
    "path": "internal/licenses/find_evidence_test.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/licensecheck\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestDefaultScanner_FindEvidence(t *testing.T) {\n\ttestCases := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\twantIDs  []string // expected license IDs\n\t\tminMatch int      // minimum # of matches required\n\t}{\n\t\t{\n\t\t\tname:     \"Single licenses are able to be recognized and returned Apache 2.0\",\n\t\t\tfixture:  \"testdata/apache-license-2.0\",\n\t\t\twantIDs:  []string{\"Apache-2.0\"},\n\t\t\tminMatch: 1,\n\t\t},\n\t\t{\n\t\t\tname:    \"Multiple Licenses are returned as evidence with duplicates at different offset\",\n\t\t\tfixture: \"testdata/multi-license\",\n\t\t\twantIDs: []string{\n\t\t\t\t\"MIT\",\n\t\t\t\t\"MIT\",\n\t\t\t\t\"NCSA\",\n\t\t\t\t\"Apache-2.0\",\n\t\t\t\t\"Zlib\",\n\t\t\t\t\"Unlicense\",\n\t\t\t\t\"BSD-2-Clause\",\n\t\t\t\t\"BSD-2-Clause\",\n\t\t\t\t\"BSD-3-Clause\",\n\t\t\t},\n\t\t\tminMatch: 2,\n\t\t},\n\t}\n\n\tscanner := testScanner()\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tfilePath := filepath.Clean(tc.fixture)\n\t\t\tf, err := os.Open(filePath)\n\t\t\trequire.NoError(t, err)\n\t\t\tdefer f.Close()\n\n\t\t\tevidence, content, err := scanner.FindEvidence(context.Background(), f)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotEmpty(t, content)\n\t\t\trequire.GreaterOrEqual(t, len(evidence), tc.minMatch, \"expected at least %d matches\", tc.minMatch)\n\n\t\t\tvar foundIDs []string\n\t\t\tfor _, ev := range evidence {\n\t\t\t\tfoundIDs = append(foundIDs, ev.ID)\n\t\t\t}\n\n\t\t\trequire.ElementsMatch(t, tc.wantIDs, foundIDs, \"expected license IDs %v, but got %v\", tc.wantIDs, foundIDs)\n\t\t})\n\t}\n}\n\nfunc testScanner() Scanner {\n\treturn &scanner{\n\t\tcoverageThreshold: DefaultCoverageThreshold,\n\t\tscanner:           licensecheck.Scan,\n\t}\n}\n\nfunc mustOpen(fixture string) []byte {\n\tcontent, err := os.ReadFile(fixture)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn content\n}\n"
  },
  {
    "path": "internal/licenses/list.go",
    "content": "package licenses\n\n// all of these taken from https://github.com/golang/pkgsite/blob/8996ff632abee854aef1b764ca0501f262f8f523/internal/licenses/licenses.go#L338\n// which unfortunately is not exported. But fortunately is under BSD-style license. Take note that this list has\n// been manually updated to include more license filenames (see https://github.com/anchore/syft/pull/2227).\n\nfunc FileNames() []string {\n\treturn []string{\n\t\t\"AL2.0\",\n\t\t\"COPYING\",\n\t\t\"COPYING.md\",\n\t\t\"COPYING.markdown\",\n\t\t\"COPYING.txt\",\n\t\t\"LGPL2.1\",\n\t\t\"LICENCE\",\n\t\t\"LICENCE.md\",\n\t\t\"LICENCE.markdown\",\n\t\t\"licence.txt\",\n\t\t\"LICENCE.txt\",\n\t\t\"LICENSE\",\n\t\t\"LICENSE.md\",\n\t\t\"LICENSE.markdown\",\n\t\t\"LICENSE.txt\",\n\t\t\"LICENSE-2.0.txt\",\n\t\t\"LICENCE-2.0.txt\",\n\t\t\"LICENSE-APACHE\",\n\t\t\"LICENCE-APACHE\",\n\t\t\"LICENSE-APACHE-2.0.txt\",\n\t\t\"LICENCE-APACHE-2.0.txt\",\n\t\t\"LICENSE-MIT\",\n\t\t\"LICENCE-MIT\",\n\t\t\"LICENSE.MIT\",\n\t\t\"LICENCE.MIT\",\n\t\t\"LICENSE.code\",\n\t\t\"LICENCE.code\",\n\t\t\"LICENSE.docs\",\n\t\t\"LICENCE.docs\",\n\t\t\"LICENSE.rst\",\n\t\t\"LICENCE.rst\",\n\t\t\"MIT-LICENSE\",\n\t\t\"MIT-LICENCE\",\n\t\t\"MIT-LICENSE.md\",\n\t\t\"MIT-LICENCE.md\",\n\t\t\"MIT-LICENSE.markdown\",\n\t\t\"MIT-LICENCE.markdown\",\n\t\t\"MIT-LICENSE.txt\",\n\t\t\"MIT-LICENCE.txt\",\n\t\t\"MIT_LICENSE\",\n\t\t\"MIT_LICENCE\",\n\t\t\"UNLICENSE\",\n\t\t\"UNLICENCE\",\n\t}\n}\n"
  },
  {
    "path": "internal/licenses/scanner.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/google/licensecheck\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst (\n\tUnknownLicensePrefix     = unknownLicenseType + \"_\"\n\tDefaultCoverageThreshold = 75 // determined by experimentation\n\n\tunknownLicenseType = \"UNKNOWN\"\n)\n\ntype Evidence struct {\n\tID    string            // License identifier. (See licenses/README.md.)\n\tType  licensecheck.Type // The type of the license: BSD, MIT, etc.\n\tStart int               // Start offset of match in text; match is at text[Start:End].\n\tEnd   int               // End offset of match in text.\n\tIsURL bool              // Whether match is a URL.\n}\n\ntype Scanner interface {\n\tFindEvidence(context.Context, io.Reader) ([]Evidence, []byte, error)\n}\n\nvar _ Scanner = (*scanner)(nil)\n\ntype scanner struct {\n\tcoverageThreshold float64 // between 0 and 100\n\tscanner           func([]byte) licensecheck.Coverage\n}\n\ntype ScannerConfig struct {\n\tCoverageThreshold float64\n\tScanner           func([]byte) licensecheck.Coverage\n}\n\ntype Option func(*scanner)\n\nfunc WithCoverage(coverage float64) Option {\n\treturn func(s *scanner) {\n\t\ts.coverageThreshold = coverage\n\t}\n}\n\n// NewDefaultScanner returns a scanner that uses a new instance of the default licensecheck package scanner.\nfunc NewDefaultScanner(o ...Option) (Scanner, error) {\n\ts, err := licensecheck.NewScanner(licensecheck.BuiltinLicenses())\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to create default license scanner\")\n\t\treturn nil, fmt.Errorf(\"unable to create default license scanner: %w\", err)\n\t}\n\n\tnewScanner := &scanner{\n\t\tcoverageThreshold: DefaultCoverageThreshold,\n\t\tscanner:           s.Scan,\n\t}\n\n\tfor _, opt := range o {\n\t\topt(newScanner)\n\t}\n\treturn newScanner, nil\n}\n\n// NewScanner generates a license Scanner with the given ScannerConfig\n// if config is nil NewDefaultScanner is used\nfunc NewScanner(c *ScannerConfig) (Scanner, error) {\n\tif c == nil {\n\t\treturn NewDefaultScanner()\n\t}\n\n\treturn &scanner{\n\t\tcoverageThreshold: c.CoverageThreshold,\n\t\tscanner:           c.Scanner,\n\t}, nil\n}\n"
  },
  {
    "path": "internal/licenses/testdata/Knuth-CTAN",
    "content": "Knuth CTAN License\nFull name\nKnuth CTAN License\n\nThis software is copyrighted. Unlimited copying and redistribution of this package and/or its individual files are permitted as long as there are no modifications. Modifications, and redistribution of modifications, are also permitted, but only if the resulting package and/or files are renamed.\n"
  },
  {
    "path": "internal/licenses/testdata/apache-license-2.0",
    "content": "                                Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n   1. Definitions.\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n   END OF TERMS AND CONDITIONS\n   APPENDIX: How to apply the Apache License to your work.\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n   Copyright [yyyy] [name of copyright owner]\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n       http://www.apache.org/licenses/LICENSE-2.0\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "internal/licenses/testdata/multi-license",
    "content": "Emscripten is available under 2 licenses, the MIT license and the\nUniversity of Illinois/NCSA Open Source License.\n\nBoth are permissive open source licenses, with little if any\npractical difference between them.\n\nThe reason for offering both is that (1) the MIT license is\nwell-known, while (2) the University of Illinois/NCSA Open Source\nLicense allows Emscripten's code to be integrated upstream into\nLLVM, which uses that license, should the opportunity arise.\n\nAdditionally, the binaryen project is available under the Apache License\nVersion 2.0.\n\nThe full text of all three licenses follows.\n\n==============================================================================\n\nCopyright (c) 2010-2014 Emscripten authors, see AUTHORS file.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2010-2014 Emscripten authors, see AUTHORS file.\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\"Software\"), to deal with the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\n    Redistributions of source code must retain the above copyright\n    notice, this list of conditions and the following disclaimers.\n\n    Redistributions in binary form must reproduce the above\n    copyright notice, this list of conditions and the following disclaimers\n    in the documentation and/or other materials provided with the\n    distribution.\n\n    Neither the names of Mozilla,\n    nor the names of its contributors may be used to endorse\n    or promote products derived from this Software without specific prior\n    written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR\nANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.\n\n==============================================================================\n\nThis program uses portions of Node.js source code located in src/library_path.js,\nin accordance with the terms of the MIT license. Node's license follows:\n\n    \"\"\"\n        Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to\n        deal in the Software without restriction, including without limitation the\n        rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n        sell copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n\n        The above copyright notice and this permission notice shall be included in\n        all copies or substantial portions of the Software.\n\n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n        FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n        IN THE SOFTWARE.\n    \"\"\"\n\n==============================================================================\n\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n==============================================================================\n\nSimple DirectMedia Layer\n  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n\n==============================================================================\n\nFiles: tools/filelock.py\n\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to <http://unlicense.org>\n\n==============================================================================\n\nFiles: tools/eliminator/node_modules/uglify-js/... tools/node_modules/terser/...\n\n  Distributed under the BSD license:\n\n    Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com>\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n\n        * Redistributions of source code must retain the above\n          copyright notice, this list of conditions and the following\n          disclaimer.\n\n        * Redistributions in binary form must reproduce the above\n          copyright notice, this list of conditions and the following\n          disclaimer in the documentation and/or other materials\n          provided with the distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n    THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n    SUCH DAMAGE.\n\n==============================================================================\n\nFiles: system/include/webgpu/webgpu.h\n\nBSD 3-Clause License\n\nCopyright (c) 2019, \"WebGPU native\" developers\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n   contributors may be used to endorse or promote products derived from\n   this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n==============================================================================\n\nCopyright (c) 2005-2011 David Schultz <das@FreeBSD.ORG>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\nOR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\nHOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\nLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\nOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE."
  },
  {
    "path": "internal/licenses/testdata/nvidia-software-and-cuda-supplement",
    "content": "End User License Agreement\n--------------------------\n\nNVIDIA Software License Agreement and CUDA Supplement to\nSoftware License Agreement. Last updated: October 8, 2021\n"
  },
  {
    "path": "internal/log/log.go",
    "content": "/*\nPackage log contains the singleton object and helper functions for facilitating logging within the syft library.\n*/\npackage log\n\nimport (\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/go-logger/adapter/discard\"\n\t\"github.com/anchore/go-logger/adapter/redact\"\n\tred \"github.com/anchore/syft/internal/redact\"\n)\n\n// log is the singleton used to facilitate logging internally within\nvar log = discard.New()\n\nfunc Set(l logger.Logger) {\n\t// though the application will automatically have a redaction logger, library consumers may not be doing this.\n\t// for this reason we additionally ensure there is a redaction logger configured for any logger passed. The\n\t// source of truth for redaction values is still in the internal redact package. If the passed logger is already\n\t// redacted, then this is a no-op.\n\tstore := red.Get()\n\tif store != nil {\n\t\tl = redact.New(l, store)\n\t}\n\tlog = l\n}\n\nfunc Get() logger.Logger {\n\treturn log\n}\n\n// Errorf takes a formatted template string and template arguments for the error logging level.\nfunc Errorf(format string, args ...interface{}) {\n\tlog.Errorf(format, args...)\n}\n\n// Error logs the given arguments at the error logging level.\nfunc Error(args ...interface{}) {\n\tlog.Error(args...)\n}\n\n// Warnf takes a formatted template string and template arguments for the warning logging level.\nfunc Warnf(format string, args ...interface{}) {\n\tlog.Warnf(format, args...)\n}\n\n// Warn logs the given arguments at the warning logging level.\nfunc Warn(args ...interface{}) {\n\tlog.Warn(args...)\n}\n\n// Infof takes a formatted template string and template arguments for the info logging level.\nfunc Infof(format string, args ...interface{}) {\n\tlog.Infof(format, args...)\n}\n\n// Info logs the given arguments at the info logging level.\nfunc Info(args ...interface{}) {\n\tlog.Info(args...)\n}\n\n// Debugf takes a formatted template string and template arguments for the debug logging level.\nfunc Debugf(format string, args ...interface{}) {\n\tlog.Debugf(format, args...)\n}\n\n// Debug logs the given arguments at the debug logging level.\nfunc Debug(args ...interface{}) {\n\tlog.Debug(args...)\n}\n\n// Tracef takes a formatted template string and template arguments for the trace logging level.\nfunc Tracef(format string, args ...interface{}) {\n\tlog.Tracef(format, args...)\n}\n\n// Trace logs the given arguments at the trace logging level.\nfunc Trace(args ...interface{}) {\n\tlog.Trace(args...)\n}\n\n// WithFields returns a message logger with multiple key-value fields.\nfunc WithFields(fields ...interface{}) logger.MessageLogger {\n\treturn log.WithFields(fields...)\n}\n\n// Nested returns a new logger with hard coded key-value pairs\nfunc Nested(fields ...interface{}) logger.Logger {\n\treturn log.Nested(fields...)\n}\n"
  },
  {
    "path": "internal/mimetype/mimetype_helper.go",
    "content": "package mimetype\n\nimport \"github.com/scylladb/go-set/strset\"\n\nvar (\n\tArchiveMIMETypeSet = strset.New(\n\t\t// derived from https://en.wikipedia.org/wiki/List_of_archive_formats\n\t\t[]string{\n\t\t\t// archive only\n\t\t\t\"application/x-archive\",\n\t\t\t\"application/x-cpio\",\n\t\t\t\"application/x-shar\",\n\t\t\t\"application/x-iso9660-image\",\n\t\t\t\"application/x-sbx\",\n\t\t\t\"application/x-tar\",\n\t\t\t// compression only\n\t\t\t\"application/x-bzip2\",\n\t\t\t\"application/gzip\",\n\t\t\t\"application/x-lzip\",\n\t\t\t\"application/x-lzma\",\n\t\t\t\"application/x-lzop\",\n\t\t\t\"application/x-snappy-framed\",\n\t\t\t\"application/x-xz\",\n\t\t\t\"application/x-compress\",\n\t\t\t\"application/zstd\",\n\t\t\t// archiving and compression\n\t\t\t\"application/x-7z-compressed\",\n\t\t\t\"application/x-ace-compressed\",\n\t\t\t\"application/x-astrotite-afa\",\n\t\t\t\"application/x-alz-compressed\",\n\t\t\t\"application/vnd.android.package-archive\",\n\t\t\t\"application/x-freearc\",\n\t\t\t\"application/x-arj\",\n\t\t\t\"application/x-b1\",\n\t\t\t\"application/vnd.ms-cab-compressed\",\n\t\t\t\"application/x-cfs-compressed\",\n\t\t\t\"application/x-dar\",\n\t\t\t\"application/x-dgc-compressed\",\n\t\t\t\"application/x-apple-diskimage\",\n\t\t\t\"application/x-gca-compressed\",\n\t\t\t\"application/java-archive\",\n\t\t\t\"application/x-lzh\",\n\t\t\t\"application/x-lzx\",\n\t\t\t\"application/x-rar-compressed\",\n\t\t\t\"application/x-stuffit\",\n\t\t\t\"application/x-stuffitx\",\n\t\t\t\"application/x-gtar\",\n\t\t\t\"application/x-ms-wim\",\n\t\t\t\"application/x-xar\",\n\t\t\t\"application/zip\",\n\t\t\t\"application/x-zoo\",\n\t\t}...,\n\t)\n\n\tExecutableMIMETypeSet = strset.New(\n\t\t[]string{\n\t\t\t\"application/x-executable\",\n\t\t\t\"application/x-mach-binary\",\n\t\t\t\"application/x-elf\",\n\t\t\t\"application/x-sharedlib\",\n\t\t\t\"application/vnd.microsoft.portable-executable\",\n\t\t\t\"application/x-executable\",\n\t\t}...,\n\t)\n)\n\nfunc IsArchive(mimeType string) bool {\n\treturn ArchiveMIMETypeSet.Has(mimeType)\n}\n\nfunc IsExecutable(mimeType string) bool {\n\treturn ExecutableMIMETypeSet.Has(mimeType)\n}\n"
  },
  {
    "path": "internal/mimetype/mimetype_helper_test.go",
    "content": "package mimetype\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_IsArchive(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tmimeType string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:     \"not an archive\",\n\t\t\tmimeType: \"application/vnd.unknown\",\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"archive\",\n\t\t\tmimeType: \"application/x-rar-compressed\",\n\t\t\texpected: true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, IsArchive(test.mimeType))\n\t\t})\n\t}\n}\n\nfunc Test_IsExecutable(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tmimeType string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:     \"not an executable\",\n\t\t\tmimeType: \"application/vnd.unknown\",\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"executable\",\n\t\t\tmimeType: \"application/x-mach-binary\",\n\t\t\texpected: true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, IsExecutable(test.mimeType))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/os/feature_detection.go",
    "content": "package os\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc DetectFeatures(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\tbuilder.(sbomsync.Accessor).WriteToSBOM(func(s *sbom.SBOM) {\n\t\tif s.Artifacts.LinuxDistribution == nil {\n\t\t\treturn\n\t\t}\n\n\t\terr := findRhelFeatures(resolver, s.Artifacts.LinuxDistribution)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"release\", s.Artifacts.LinuxDistribution).Trace(\"error searching for extended support\")\n\t\t}\n\t})\n\n\treturn nil\n}\n\nfunc findRhelFeatures(resolver file.Resolver, release *linux.Release) error {\n\tif release == nil || release.ID != \"rhel\" {\n\t\treturn nil\n\t}\n\tcontentManifestFiles, err := resolver.FilesByGlob(\"/root/buildinfo/content_manifests/*.json\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to find content manifests: %w\", err)\n\t}\n\tfor _, contentManifestFile := range contentManifestFiles {\n\t\tfound, err := hasRhelExtendedSupportInContentManifest(resolver, contentManifestFile)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to read content manifest from %s: %w\", contentManifestFile.String(), err)\n\t\t}\n\t\tif found {\n\t\t\trelease.ExtendedSupport = true\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc hasRhelExtendedSupportInContentManifest(resolver file.Resolver, contentManifestFile file.Location) (bool, error) {\n\tcontents, err := resolver.FileContentsByLocation(contentManifestFile)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"unable to read content manifest from %s: %w\", contentManifestFile.String(), err)\n\t}\n\tdefer internal.CloseAndLogError(contents, \"content-manifest\")\n\n\tpatterns := []*regexp.Regexp{regexp.MustCompile(`baseos-eus`), regexp.MustCompile(`baseos-eus|appstream-eus`)}\n\treturn internal.MatchAnyFromReader(contents, patterns...)\n}\n"
  },
  {
    "path": "internal/os/feature_detection_test.go",
    "content": "package os_test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/internal/os\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_EnvironmentTask(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\texpected linux.Release\n\t}{\n\t\t{\n\t\t\tname: \"not_rhel\",\n\t\t\texpected: linux.Release{\n\t\t\t\tPrettyName: \"Red Hat Enterprise Linux 9.4 (Plow)\",\n\t\t\t\tName:       \"Red Hat Enterprise Linux\",\n\t\t\t\tID:         \"not-rhel\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:         \"9.4 (Plow)\",\n\t\t\t\tVersionID:       \"9.4\",\n\t\t\t\tHomeURL:         \"https://www.redhat.com/\",\n\t\t\t\tBugReportURL:    \"https://issues.redhat.com/\",\n\t\t\t\tCPEName:         \"cpe:/o:redhat:enterprise_linux:9::baseos\",\n\t\t\t\tExtendedSupport: false, // important\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rhel_content_manifests\",\n\t\t\texpected: linux.Release{\n\t\t\t\tPrettyName: \"Red Hat Enterprise Linux 9.4 (Plow)\",\n\t\t\t\tName:       \"Red Hat Enterprise Linux\",\n\t\t\t\tID:         \"rhel\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:         \"9.4 (Plow)\",\n\t\t\t\tVersionID:       \"9.4\",\n\t\t\t\tHomeURL:         \"https://www.redhat.com/\",\n\t\t\t\tBugReportURL:    \"https://issues.redhat.com/\",\n\t\t\t\tCPEName:         \"cpe:/o:redhat:enterprise_linux:9::baseos\",\n\t\t\t\tExtendedSupport: true, // important\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rhel_no_manifests\",\n\t\t\texpected: linux.Release{\n\t\t\t\tPrettyName: \"Red Hat Enterprise Linux 9.4 (Plow)\",\n\t\t\t\tName:       \"Red Hat Enterprise Linux\",\n\t\t\t\tID:         \"rhel\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:         \"9.4 (Plow)\",\n\t\t\t\tVersionID:       \"9.4\",\n\t\t\t\tHomeURL:         \"https://www.redhat.com/\",\n\t\t\t\tBugReportURL:    \"https://issues.redhat.com/\",\n\t\t\t\tCPEName:         \"cpe:/o:redhat:enterprise_linux:9::baseos\",\n\t\t\t\tExtendedSupport: false, // important\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ttarPath := imagetest.GetFixtureImageTarPath(t, test.name)\n\n\t\t\t// get the source\n\t\t\ttheSource, err := syft.GetSource(context.Background(), tarPath, syft.DefaultGetSourceConfig().WithSources(\"docker-archive\"))\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, theSource.Close())\n\t\t\t})\n\n\t\t\tresolver, err := theSource.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\ts := sbom.SBOM{}\n\t\t\terr = task.NewEnvironmentTask().Execute(context.Background(), resolver, sbomsync.NewBuilder(&s))\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = os.DetectFeatures(context.Background(), resolver, sbomsync.NewBuilder(&s))\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, &test.expected, s.Artifacts.LinuxDistribution)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/os/testdata/not_rhel/Dockerfile",
    "content": "FROM scratch\n\nCOPY etc/os-release /etc/\nCOPY root/buildinfo/content_manifests/*.json /root/buildinfo/content_manifests/\n"
  },
  {
    "path": "internal/os/testdata/not_rhel/etc/os-release",
    "content": "NAME=\"Red Hat Enterprise Linux\"\nVERSION=\"9.4 (Plow)\"\nID=\"not-rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"9.4\"\nPLATFORM_ID=\"platform:el9\"\nPRETTY_NAME=\"Red Hat Enterprise Linux 9.4 (Plow)\"\nANSI_COLOR=\"0;31\"\nLOGO=\"fedora-logo-icon\"\nCPE_NAME=\"cpe:/o:redhat:enterprise_linux:9::baseos\"\nHOME_URL=\"https://www.redhat.com/\"\nDOCUMENTATION_URL=\"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9\"\nBUG_REPORT_URL=\"https://issues.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 9\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=9.4\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"9.4\"\n"
  },
  {
    "path": "internal/os/testdata/not_rhel/root/buildinfo/content_manifests/driver-toolkit-container-v4.16.0-202411210647.p0.g1d5732f.assembly.stream.el9.json",
    "content": "{\n  \"image_contents\": [],\n  \"metadata\": {\n    \"icm_spec\": \"https://raw.githubusercontent.com/containerbuildsystem/atomic-reactor/f4abcfdaf8247a6b074f94fa84f3846f82d781c6/atomic_reactor/schemas/content_manifest.json\",\n    \"icm_version\": 1,\n    \"image_layer_index\": 3\n  },\n  \"content_sets\": [\n    \"rhel-9-for-x86_64-appstream-eus-rpms__9_DOT_4\",\n    \"rhel-9-for-x86_64-baseos-eus-rpms__9_DOT_4\",\n    \"rhel-9-for-x86_64-rt-rpms__9_DOT_4\",\n    \"rhocp-4.16-for-rhel-9-x86_64-rpms\"\n  ]\n}"
  },
  {
    "path": "internal/os/testdata/rhel_content_manifests/Dockerfile",
    "content": "FROM scratch\n\nCOPY etc/os-release /etc/\nCOPY root/buildinfo/content_manifests/*.json /root/buildinfo/content_manifests/\n"
  },
  {
    "path": "internal/os/testdata/rhel_content_manifests/etc/os-release",
    "content": "NAME=\"Red Hat Enterprise Linux\"\nVERSION=\"9.4 (Plow)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"9.4\"\nPLATFORM_ID=\"platform:el9\"\nPRETTY_NAME=\"Red Hat Enterprise Linux 9.4 (Plow)\"\nANSI_COLOR=\"0;31\"\nLOGO=\"fedora-logo-icon\"\nCPE_NAME=\"cpe:/o:redhat:enterprise_linux:9::baseos\"\nHOME_URL=\"https://www.redhat.com/\"\nDOCUMENTATION_URL=\"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9\"\nBUG_REPORT_URL=\"https://issues.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 9\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=9.4\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"9.4\"\n"
  },
  {
    "path": "internal/os/testdata/rhel_content_manifests/root/buildinfo/content_manifests/driver-toolkit-container-v4.16.0-202411210647.p0.g1d5732f.assembly.stream.el9.json",
    "content": "{\n  \"image_contents\": [],\n  \"metadata\": {\n    \"icm_spec\": \"https://raw.githubusercontent.com/containerbuildsystem/atomic-reactor/f4abcfdaf8247a6b074f94fa84f3846f82d781c6/atomic_reactor/schemas/content_manifest.json\",\n    \"icm_version\": 1,\n    \"image_layer_index\": 3\n  },\n  \"content_sets\": [\n    \"rhel-9-for-x86_64-appstream-eus-rpms__9_DOT_4\",\n    \"rhel-9-for-x86_64-baseos-eus-rpms__9_DOT_4\",\n    \"rhel-9-for-x86_64-rt-rpms__9_DOT_4\",\n    \"rhocp-4.16-for-rhel-9-x86_64-rpms\"\n  ]\n}"
  },
  {
    "path": "internal/os/testdata/rhel_content_manifests/root/buildinfo/content_manifests/openshift-base-rhel9-container-v4.16.0-202411190033.p0.gb45ea65.assembly.stream.el9.json",
    "content": "{\n  \"image_contents\": [],\n  \"metadata\": {\n    \"icm_spec\": \"https://raw.githubusercontent.com/containerbuildsystem/atomic-reactor/f4abcfdaf8247a6b074f94fa84f3846f82d781c6/atomic_reactor/schemas/content_manifest.json\",\n    \"icm_version\": 1,\n    \"image_layer_index\": 1\n  },\n  \"content_sets\": [\n    \"rhel-9-for-x86_64-appstream-eus-rpms__9_DOT_4\",\n    \"rhel-9-for-x86_64-baseos-eus-rpms__9_DOT_4\",\n    \"rhocp-4.16-for-rhel-9-x86_64-rpms\"\n  ]\n}"
  },
  {
    "path": "internal/os/testdata/rhel_no_manifests/Dockerfile",
    "content": "FROM scratch\n\nCOPY ./etc/os-release /etc/\n"
  },
  {
    "path": "internal/os/testdata/rhel_no_manifests/etc/os-release",
    "content": "NAME=\"Red Hat Enterprise Linux\"\nVERSION=\"9.4 (Plow)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"9.4\"\nPLATFORM_ID=\"platform:el9\"\nPRETTY_NAME=\"Red Hat Enterprise Linux 9.4 (Plow)\"\nANSI_COLOR=\"0;31\"\nLOGO=\"fedora-logo-icon\"\nCPE_NAME=\"cpe:/o:redhat:enterprise_linux:9::baseos\"\nHOME_URL=\"https://www.redhat.com/\"\nDOCUMENTATION_URL=\"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9\"\nBUG_REPORT_URL=\"https://issues.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 9\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=9.4\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"9.4\"\n"
  },
  {
    "path": "internal/packagemetadata/completion_tester.go",
    "content": "package packagemetadata\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\ntype CompletionTester struct {\n\tsaw    []any\n\tvalid  []any\n\tignore []any\n}\n\nfunc NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {\n\tt.Helper()\n\ttester := &CompletionTester{\n\t\tvalid:  AllTypes(),\n\t\tignore: ignore,\n\t}\n\tt.Cleanup(func() {\n\t\tt.Helper()\n\t\ttester.validate(t)\n\t})\n\treturn tester\n}\n\nfunc (tr *CompletionTester) Ignore(is ...any) {\n\ttr.ignore = append(tr.ignore, keepNonNil(is...)...)\n}\n\nfunc (tr *CompletionTester) Expect(is ...any) {\n\ttr.valid = append(tr.valid, keepNonNil(is...)...)\n}\n\nfunc (tr *CompletionTester) Tested(t testing.TB, m any) {\n\tt.Helper()\n\n\tif m == nil {\n\t\treturn\n\t}\n\tif len(tr.valid) == 0 {\n\t\tt.Fatal(\"no valid metadata types to test against\")\n\t}\n\tty := reflect.TypeOf(m)\n\n\tfor _, v := range tr.ignore {\n\t\tif reflect.TypeOf(v) == ty {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor _, v := range tr.valid {\n\t\tif reflect.TypeOf(v) == ty {\n\t\t\ttr.saw = append(tr.saw, m)\n\t\t\treturn\n\t\t}\n\t}\n\n\tt.Fatalf(\"tested metadata type is not valid: %s\", ty.Name())\n}\n\nfunc (tr *CompletionTester) validate(t testing.TB) {\n\tt.Helper()\n\n\tcount := make(map[reflect.Type]int)\n\tfor _, m := range tr.saw {\n\t\tcount[reflect.TypeOf(m)]++\n\t}\n\nvalidations:\n\tfor _, v := range tr.valid {\n\t\tty := reflect.TypeOf(v)\n\n\t\tfor _, ignore := range tr.ignore {\n\t\t\tif ty == reflect.TypeOf(ignore) {\n\t\t\t\t// skip ignored types\n\t\t\t\tcontinue validations\n\t\t\t}\n\t\t}\n\n\t\tif c, exists := count[ty]; c == 0 || !exists {\n\t\t\tt.Errorf(\"metadata type %s is not covered by a test\", ty.Name())\n\t\t}\n\t}\n}\n\nfunc keepNonNil(is ...any) []any {\n\tvar result []any\n\tfor _, i := range is {\n\t\tif i != nil {\n\t\t\tresult = append(result, i)\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "internal/packagemetadata/discover_type_names.go",
    "content": "package packagemetadata\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\n// these are names of struct types in the pkg package that are not metadata types (thus should not be in the JSON schema)\nvar knownNonMetadataTypeNames = strset.New(\n\t\"Package\",\n\t\"Collection\",\n\t\"License\",\n\t\"LicenseSet\",\n)\n\n// these are names that would be removed due to common convention (e.g. used within another metadata type) but are\n// known to be metadata types themselves. Adding to this list will prevent the removal of the type from the schema.\nvar knownMetadataTypeNames = strset.New(\n\t\"DotnetPortableExecutableEntry\",\n\t\"GGUFFileHeader\",\n)\n\nfunc DiscoverTypeNames() ([]string, error) {\n\troot, err := RepoRoot()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfiles, err := filepath.Glob(filepath.Join(root, \"syft/pkg/*.go\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn findMetadataDefinitionNames(files...)\n}\n\nfunc RepoRoot() (string, error) {\n\troot, err := exec.Command(\"git\", \"rev-parse\", \"--show-toplevel\").Output()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to find repo root dir: %+v\", err)\n\t}\n\tabsRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get abs path to repo root: %w\", err)\n\t}\n\treturn absRepoRoot, nil\n}\n\nfunc findMetadataDefinitionNames(paths ...string) ([]string, error) {\n\tnames := strset.New()\n\tusedNames := strset.New()\n\tfor _, path := range paths {\n\t\tmetadataDefinitions, usedTypeNames, err := findMetadataDefinitionNamesInFile(path)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// useful for debugging...\n\t\t// fmt.Println(path)\n\t\t// fmt.Println(\"Defs:\", metadataDefinitions)\n\t\t// fmt.Println(\"Used Types:\", usedTypeNames)\n\t\t// fmt.Println()\n\n\t\tnames.Add(metadataDefinitions...)\n\t\tusedNames.Add(usedTypeNames...)\n\t}\n\n\t// any definition that is used within another struct should not be considered a top-level metadata definition\n\tremoveNames := strset.Difference(usedNames, knownMetadataTypeNames)\n\tnames.Remove(removeNames.List()...)\n\n\t// remove known exceptions, that is, types exported in the pkg Package that are not used\n\t// in a metadata type but are not metadata types themselves.\n\tnames.Remove(\"Licenses\", \"KeyValue\")\n\n\tstrNames := names.List()\n\tsort.Strings(strNames)\n\n\t// note: 35 is a point-in-time gut check. This number could be updated if new metadata definitions are added, but is not required.\n\t// it is really intended to catch any major issues with the generation process that would generate, say, 0 definitions.\n\tif len(strNames) < 35 {\n\t\tmsg := fmt.Sprintf(\"not enough metadata definitions found (discovered %d)\", len(strNames))\n\t\treturn nil, fmt.Errorf(\"%v\", msg)\n\t}\n\n\treturn strNames, nil\n}\n\nfunc findMetadataDefinitionNamesInFile(path string) ([]string, []string, error) {\n\t// set up the parser\n\tfs := token.NewFileSet()\n\tf, err := parser.ParseFile(fs, path, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar metadataDefinitions []string\n\tvar usedTypeNames []string\n\tfor _, decl := range f.Decls {\n\t\t// check if the declaration is a type declaration\n\t\tspec, ok := decl.(*ast.GenDecl)\n\t\tif !ok || spec.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\t// loop over all types declared in the type declaration\n\t\tfor _, typ := range spec.Specs {\n\t\t\t// check if the type is a struct type\n\t\t\tspec, ok := typ.(*ast.TypeSpec)\n\t\t\tif !ok || spec.Type == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tname := spec.Name.String()\n\n\t\t\t// only look for exported types\n\t\t\tif !isMetadataTypeCandidate(name) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tstructType := extractStructType(spec.Type)\n\t\t\tif structType == nil {\n\t\t\t\t// maybe this is a slice of structs? This is useful (say type KeyValues is []KeyValue)\n\t\t\t\tstructType = extractSliceOfStructType(spec.Type)\n\t\t\t\tif structType == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmetadataDefinitions = append(metadataDefinitions, name)\n\t\t\tusedTypeNames = append(usedTypeNames, typeNamesUsedInStruct(structType)...)\n\t\t}\n\t}\n\treturn metadataDefinitions, usedTypeNames, nil\n}\n\nfunc extractSliceOfStructType(exp ast.Expr) *ast.StructType {\n\tvar structType *ast.StructType\n\tswitch ty := exp.(type) {\n\tcase *ast.ArrayType:\n\t\t// this is a standard definition:\n\t\t// type FooMetadata []BarMetadata\n\t\tstructType = extractStructType(ty.Elt)\n\tcase *ast.Ident:\n\t\tif ty.Obj == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\t// this might be a type created from another type:\n\t\t// type FooMetadata BarMetadata\n\t\t// ... but we need to check that the other type definition is a struct type\n\t\ttypeSpec, ok := ty.Obj.Decl.(*ast.TypeSpec)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tnestedStructType, ok := typeSpec.Type.(*ast.StructType)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tstructType = nestedStructType\n\t}\n\treturn structType\n}\n\nfunc extractStructType(exp ast.Expr) *ast.StructType {\n\tvar structType *ast.StructType\n\tswitch ty := exp.(type) {\n\tcase *ast.StructType:\n\t\t// this is a standard definition:\n\t\t// type FooMetadata struct { ... }\n\t\tstructType = ty\n\tcase *ast.Ident:\n\t\tif ty.Obj == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\t// this might be a type created from another type:\n\t\t// type FooMetadata BarMetadata\n\t\t// ... but we need to check that the other type definition is a struct type\n\t\ttypeSpec, ok := ty.Obj.Decl.(*ast.TypeSpec)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tnestedStructType, ok := typeSpec.Type.(*ast.StructType)\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\t\tstructType = nestedStructType\n\t}\n\treturn structType\n}\n\nfunc typeNamesUsedInStruct(structType *ast.StructType) []string {\n\t// recursively find all type names used in the struct type\n\tvar names []string\n\tfor i := range structType.Fields.List {\n\t\t// capture names of all of the types (not field names)\n\t\tast.Inspect(structType.Fields.List[i].Type, func(n ast.Node) bool {\n\t\t\tident, ok := n.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// add the type name to the list\n\t\t\tnames = append(names, ident.Name)\n\n\t\t\t// continue inspecting\n\t\t\treturn true\n\t\t})\n\t}\n\n\treturn names\n}\n\nfunc isMetadataTypeCandidate(name string) bool {\n\treturn len(name) > 0 &&\n\t\tunicode.IsUpper(rune(name[0])) && // must be exported\n\t\t!knownNonMetadataTypeNames.Has(name)\n}\n"
  },
  {
    "path": "internal/packagemetadata/discover_type_names_test.go",
    "content": "package packagemetadata\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestDiscoverTypeNames_byExample(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\twant: \"ApkDBEntry\",\n\t\t},\n\t\t{\n\t\t\tname: \"type shadowed with another type\",\n\t\t\twant: \"RpmDBEntry\",\n\t\t},\n\t\t{\n\t\t\tname: \"type shadows another type\",\n\t\t\twant: \"RpmArchive\",\n\t\t},\n\t}\n\n\tgot, err := DiscoverTypeNames()\n\trequire.NotEmpty(t, got)\n\tgotSet := strset.New(got...)\n\trequire.NoError(t, err)\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.True(t, gotSet.Has(tt.want))\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/packagemetadata/generate/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/dave/jennifer/jen\"\n\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n)\n\n// This program is invoked from syft/internal and generates packagemetadata/generated.go\n\nconst (\n\tpkgImport = \"github.com/anchore/syft/syft/pkg\"\n\tpath      = \"packagemetadata/generated.go\"\n)\n\nfunc main() {\n\ttypeNames, err := packagemetadata.DiscoverTypeNames()\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to get all metadata type names: %w\", err))\n\t}\n\n\t// useful for debugging...\n\t// for _, typeName := range typeNames {\n\t//\tfmt.Printf(\" - %s\\n\", typeName)\n\t//}\n\n\tfmt.Printf(\"updating package metadata type list with %+v types\\n\", len(typeNames))\n\n\tf := jen.NewFile(\"packagemetadata\")\n\tf.HeaderComment(\"DO NOT EDIT: generated by internal/packagemetadata/generate/main.go\")\n\tf.ImportName(pkgImport, \"pkg\")\n\tf.Comment(\"AllTypes returns a list of all pkg metadata types that syft supports (that are represented in the pkg.Package.Metadata field).\")\n\n\tf.Func().Id(\"AllTypes\").Params().Index().Any().BlockFunc(func(g *jen.Group) {\n\t\tg.ReturnFunc(func(g *jen.Group) {\n\t\t\tg.Index().Any().ValuesFunc(func(g *jen.Group) {\n\t\t\t\tfor _, typeName := range typeNames {\n\t\t\t\t\tg.Qual(pkgImport, typeName).Values()\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t})\n\n\trendered := fmt.Sprintf(\"%#v\", f)\n\n\tfh, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to open file: %w\", err))\n\t}\n\n\t// fix a little whitespacing\n\trendered = strings.ReplaceAll(rendered, \",\", \",\\n\")\n\trendered = strings.ReplaceAll(rendered, \"[]any{\", \"[]any{\\n\")\n\trendered = strings.ReplaceAll(rendered, \"}}\\n}\", \"},\\n}\\n}\")\n\n\t_, err = fh.WriteString(rendered)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to write file: %w\", err))\n\t}\n\tif err := fh.Close(); err != nil {\n\t\tpanic(fmt.Errorf(\"unable to close file: %w\", err))\n\t}\n}\n"
  },
  {
    "path": "internal/packagemetadata/generated.go",
    "content": "// DO NOT EDIT: generated by internal/packagemetadata/generate/main.go\n\npackage packagemetadata\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\n// AllTypes returns a list of all pkg metadata types that syft supports (that are represented in the pkg.Package.Metadata field).\nfunc AllTypes() []any {\n\treturn []any{\n\t\tpkg.AlpmDBEntry{},\n\t\tpkg.ApkDBEntry{},\n\t\tpkg.BinarySignature{},\n\t\tpkg.BitnamiSBOMEntry{},\n\t\tpkg.CocoaPodfileLockEntry{},\n\t\tpkg.ConanV1LockEntry{},\n\t\tpkg.ConanV2LockEntry{},\n\t\tpkg.ConanfileEntry{},\n\t\tpkg.ConaninfoEntry{},\n\t\tpkg.CondaMetaPackage{},\n\t\tpkg.DartPubspec{},\n\t\tpkg.DartPubspecLockEntry{},\n\t\tpkg.DotnetDepsEntry{},\n\t\tpkg.DotnetPackagesLockEntry{},\n\t\tpkg.DotnetPortableExecutableEntry{},\n\t\tpkg.DpkgArchiveEntry{},\n\t\tpkg.DpkgDBEntry{},\n\t\tpkg.ELFBinaryPackageNoteJSONPayload{},\n\t\tpkg.ElixirMixLockEntry{},\n\t\tpkg.ErlangRebarLockEntry{},\n\t\tpkg.GGUFFileHeader{},\n\t\tpkg.GitHubActionsUseStatement{},\n\t\tpkg.GolangBinaryBuildinfoEntry{},\n\t\tpkg.GolangModuleEntry{},\n\t\tpkg.GolangSourceEntry{},\n\t\tpkg.HackageStackYamlEntry{},\n\t\tpkg.HackageStackYamlLockEntry{},\n\t\tpkg.HomebrewFormula{},\n\t\tpkg.JavaArchive{},\n\t\tpkg.JavaVMInstallation{},\n\t\tpkg.LinuxKernel{},\n\t\tpkg.LinuxKernelModule{},\n\t\tpkg.LuaRocksPackage{},\n\t\tpkg.MicrosoftKbPatch{},\n\t\tpkg.NixStoreEntry{},\n\t\tpkg.NpmPackage{},\n\t\tpkg.NpmPackageLockEntry{},\n\t\tpkg.OpamPackage{},\n\t\tpkg.PEBinary{},\n\t\tpkg.PhpComposerInstalledEntry{},\n\t\tpkg.PhpComposerLockEntry{},\n\t\tpkg.PhpPearEntry{},\n\t\tpkg.PhpPeclEntry{},\n\t\tpkg.PnpmLockEntry{},\n\t\tpkg.PortageEntry{},\n\t\tpkg.PythonPackage{},\n\t\tpkg.PythonPdmLockEntry{},\n\t\tpkg.PythonPipfileLockEntry{},\n\t\tpkg.PythonPoetryLockEntry{},\n\t\tpkg.PythonRequirementsEntry{},\n\t\tpkg.PythonUvLockEntry{},\n\t\tpkg.RDescription{},\n\t\tpkg.RpmArchive{},\n\t\tpkg.RpmDBEntry{},\n\t\tpkg.RubyGemspec{},\n\t\tpkg.RustBinaryAuditEntry{},\n\t\tpkg.RustCargoLockEntry{},\n\t\tpkg.SnapEntry{},\n\t\tpkg.SwiftPackageManagerResolvedEntry{},\n\t\tpkg.SwiplPackEntry{},\n\t\tpkg.TerraformLockProviderEntry{},\n\t\tpkg.WordpressPluginEntry{},\n\t\tpkg.YarnLockEntry{},\n\t}\n}\n"
  },
  {
    "path": "internal/packagemetadata/names.go",
    "content": "package packagemetadata\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype jsonType struct {\n\tty                 any\n\tname               string\n\tlegacyNames        []string\n\tnoLookupLegacyName string // legacy name that conflict with other types, thus should not affect the lookup\n}\n\nfunc jsonNames(ty any, name string, legacyNames ...string) jsonType {\n\treturn jsonType{\n\t\tty:          ty,\n\t\tname:        name,\n\t\tlegacyNames: expandLegacyNameVariants(legacyNames...),\n\t}\n}\n\nfunc jsonNamesWithoutLookup(ty any, name string, noLookupLegacyName string) jsonType {\n\treturn jsonType{\n\t\tty:                 ty,\n\t\tname:               name,\n\t\tnoLookupLegacyName: noLookupLegacyName,\n\t}\n}\n\ntype jsonTypeMapping struct {\n\ttypeToName       map[reflect.Type]string\n\ttypeToLegacyName map[reflect.Type]string\n\tnameToType       map[string]reflect.Type\n}\n\nfunc makeJSONTypes(types ...jsonType) jsonTypeMapping {\n\tout := jsonTypeMapping{\n\t\ttypeToName:       make(map[reflect.Type]string),\n\t\ttypeToLegacyName: make(map[reflect.Type]string),\n\t\tnameToType:       make(map[string]reflect.Type),\n\t}\n\tfor _, t := range types {\n\t\ttyp := reflect.TypeOf(t.ty)\n\t\tout.typeToName[typ] = t.name\n\t\tif len(t.noLookupLegacyName) > 0 {\n\t\t\tout.typeToLegacyName[typ] = t.noLookupLegacyName\n\t\t} else if len(t.legacyNames) > 0 {\n\t\t\tout.typeToLegacyName[typ] = t.legacyNames[0]\n\t\t}\n\t\tout.nameToType[strings.ToLower(t.name)] = typ\n\t\tfor _, name := range t.legacyNames {\n\t\t\tout.nameToType[strings.ToLower(name)] = typ\n\t\t}\n\t}\n\treturn out\n}\n\n// jsonNameFromType is lookup of all known package metadata types to their current JSON name and all previously known aliases.\n// It is important that if a name needs to change that the old name is kept in this map (as an alias) for backwards\n// compatibility to support decoding older JSON documents.\nvar jsonTypes = makeJSONTypes(\n\tjsonNames(pkg.AlpmDBEntry{}, \"alpm-db-entry\", \"AlpmMetadata\"),\n\tjsonNames(pkg.ApkDBEntry{}, \"apk-db-entry\", \"ApkMetadata\"),\n\tjsonNames(pkg.BinarySignature{}, \"binary-signature\", \"BinaryMetadata\"),\n\tjsonNames(pkg.BitnamiSBOMEntry{}, \"bitnami-sbom-entry\"),\n\tjsonNames(pkg.CocoaPodfileLockEntry{}, \"cocoa-podfile-lock-entry\", \"CocoapodsMetadataType\"),\n\tjsonNames(pkg.ConanV1LockEntry{}, \"c-conan-lock-entry\", \"ConanLockMetadataType\"),\n\tjsonNames(pkg.ConanV2LockEntry{}, \"c-conan-lock-v2-entry\"),\n\tjsonNames(pkg.ConanfileEntry{}, \"c-conan-file-entry\", \"ConanMetadataType\"),\n\tjsonNames(pkg.ConaninfoEntry{}, \"c-conan-info-entry\"),\n\tjsonNames(pkg.DartPubspecLockEntry{}, \"dart-pubspec-lock-entry\", \"DartPubMetadata\"),\n\tjsonNames(pkg.DartPubspec{}, \"dart-pubspec\"),\n\tjsonNames(pkg.DotnetDepsEntry{}, \"dotnet-deps-entry\", \"DotnetDepsMetadata\"),\n\tjsonNames(pkg.DotnetPortableExecutableEntry{}, \"dotnet-portable-executable-entry\"),\n\tjsonNames(pkg.DpkgArchiveEntry{}, \"dpkg-archive-entry\"),\n\tjsonNames(pkg.DpkgDBEntry{}, \"dpkg-db-entry\", \"DpkgMetadata\"),\n\tjsonNames(pkg.ELFBinaryPackageNoteJSONPayload{}, \"elf-binary-package-note-json-payload\"),\n\tjsonNames(pkg.RubyGemspec{}, \"ruby-gemspec\", \"GemMetadata\"),\n\tjsonNames(pkg.GitHubActionsUseStatement{}, \"github-actions-use-statement\"),\n\tjsonNames(pkg.GolangBinaryBuildinfoEntry{}, \"go-module-buildinfo-entry\", \"GolangBinMetadata\", \"GolangMetadata\"),\n\tjsonNames(pkg.GolangModuleEntry{}, \"go-module-entry\", \"GolangModMetadata\"),\n\tjsonNames(pkg.GolangSourceEntry{}, \"go-source-entry\"),\n\tjsonNames(pkg.HackageStackYamlLockEntry{}, \"haskell-hackage-stack-lock-entry\", \"HackageMetadataType\"),\n\tjsonNamesWithoutLookup(pkg.HackageStackYamlEntry{}, \"haskell-hackage-stack-entry\", \"HackageMetadataType\"), // the legacy value is split into two types, where the other is preferred\n\tjsonNames(pkg.JavaArchive{}, \"java-archive\", \"JavaMetadata\"),\n\tjsonNames(pkg.JavaVMInstallation{}, \"java-jvm-installation\"),\n\tjsonNames(pkg.MicrosoftKbPatch{}, \"microsoft-kb-patch\", \"KbPatchMetadata\"),\n\tjsonNames(pkg.LinuxKernel{}, \"linux-kernel-archive\", \"LinuxKernel\"),\n\tjsonNames(pkg.LinuxKernelModule{}, \"linux-kernel-module\", \"LinuxKernelModule\"),\n\tjsonNames(pkg.ElixirMixLockEntry{}, \"elixir-mix-lock-entry\", \"MixLockMetadataType\"),\n\tjsonNames(pkg.NixStoreEntry{}, \"nix-store-entry\", \"NixStoreMetadata\"),\n\tjsonNames(pkg.NpmPackage{}, \"javascript-npm-package\", \"NpmPackageJsonMetadata\"),\n\tjsonNames(pkg.NpmPackageLockEntry{}, \"javascript-npm-package-lock-entry\", \"NpmPackageLockJsonMetadata\"),\n\tjsonNames(pkg.YarnLockEntry{}, \"javascript-yarn-lock-entry\", \"YarnLockJsonMetadata\"),\n\tjsonNames(pkg.PnpmLockEntry{}, \"javascript-pnpm-lock-entry\"),\n\tjsonNames(pkg.PEBinary{}, \"pe-binary\"),\n\tjsonNames(pkg.PhpComposerLockEntry{}, \"php-composer-lock-entry\", \"PhpComposerJsonMetadata\"),\n\tjsonNamesWithoutLookup(pkg.PhpComposerInstalledEntry{}, \"php-composer-installed-entry\", \"PhpComposerJsonMetadata\"), // the legacy value is split into two types, where the other is preferred\n\t//nolint:staticcheck\n\tjsonNames(pkg.PhpPeclEntry{}, \"php-pecl-entry\", \"PhpPeclMetadata\"),\n\tjsonNames(pkg.PhpPearEntry{}, \"php-pear-entry\"),\n\tjsonNames(pkg.PortageEntry{}, \"portage-db-entry\", \"PortageMetadata\"),\n\tjsonNames(pkg.PythonPackage{}, \"python-package\", \"PythonPackageMetadata\"),\n\tjsonNames(pkg.PythonPdmLockEntry{}, \"python-pdm-lock-entry\"),\n\tjsonNames(pkg.PythonPipfileLockEntry{}, \"python-pipfile-lock-entry\", \"PythonPipfileLockMetadata\"),\n\tjsonNames(pkg.PythonPoetryLockEntry{}, \"python-poetry-lock-entry\", \"PythonPoetryLockMetadata\"),\n\tjsonNames(pkg.PythonRequirementsEntry{}, \"python-pip-requirements-entry\", \"PythonRequirementsMetadata\"),\n\tjsonNames(pkg.PythonUvLockEntry{}, \"python-uv-lock-entry\"),\n\tjsonNames(pkg.ErlangRebarLockEntry{}, \"erlang-rebar-lock-entry\", \"RebarLockMetadataType\"),\n\tjsonNames(pkg.RDescription{}, \"r-description\", \"RDescriptionFileMetadataType\"),\n\tjsonNames(pkg.RpmDBEntry{}, \"rpm-db-entry\", \"RpmMetadata\", \"RpmdbMetadata\"),\n\tjsonNamesWithoutLookup(pkg.RpmArchive{}, \"rpm-archive\", \"RpmMetadata\"), // the legacy value is split into two types, where the other is preferred\n\tjsonNames(pkg.SwiftPackageManagerResolvedEntry{}, \"swift-package-manager-lock-entry\", \"SwiftPackageManagerMetadata\"),\n\tjsonNames(pkg.SwiplPackEntry{}, \"swiplpack-package\"),\n\tjsonNames(pkg.OpamPackage{}, \"opam-package\"),\n\tjsonNames(pkg.RustCargoLockEntry{}, \"rust-cargo-lock-entry\", \"RustCargoPackageMetadata\"),\n\tjsonNamesWithoutLookup(pkg.RustBinaryAuditEntry{}, \"rust-cargo-audit-entry\", \"RustCargoPackageMetadata\"), // the legacy value is split into two types, where the other is preferred\n\tjsonNames(pkg.SnapEntry{}, \"snap-entry\"),\n\tjsonNames(pkg.WordpressPluginEntry{}, \"wordpress-plugin-entry\", \"WordpressMetadata\"),\n\tjsonNames(pkg.HomebrewFormula{}, \"homebrew-formula\"),\n\tjsonNames(pkg.LuaRocksPackage{}, \"luarocks-package\"),\n\tjsonNames(pkg.TerraformLockProviderEntry{}, \"terraform-lock-provider-entry\"),\n\tjsonNames(pkg.DotnetPackagesLockEntry{}, \"dotnet-packages-lock-entry\"),\n\tjsonNames(pkg.CondaMetaPackage{}, \"conda-metadata-entry\", \"CondaPackageMetadata\"),\n\tjsonNames(pkg.GGUFFileHeader{}, \"gguf-file-header\"),\n)\n\nfunc expandLegacyNameVariants(names ...string) []string {\n\tvar candidates []string\n\tfor _, name := range names {\n\t\tcandidates = append(candidates, name)\n\t\tif strings.HasSuffix(name, \"MetadataType\") {\n\t\t\tcandidates = append(candidates, strings.TrimSuffix(name, \"Type\"))\n\t\t} else if strings.HasSuffix(name, \"Metadata\") {\n\t\t\tcandidates = append(candidates, name+\"Type\")\n\t\t}\n\t}\n\treturn candidates\n}\n\nfunc AllTypeNames() []string {\n\tnames := make([]string, 0)\n\tfor _, t := range AllTypes() {\n\t\tnames = append(names, reflect.TypeOf(t).Name())\n\t}\n\treturn names\n}\n\nfunc JSONName(metadata any) string {\n\tif name, exists := jsonTypes.typeToName[reflect.TypeOf(metadata)]; exists {\n\t\treturn name\n\t}\n\treturn \"\"\n}\n\nfunc JSONLegacyName(metadata any) string {\n\tif name, exists := jsonTypes.typeToLegacyName[reflect.TypeOf(metadata)]; exists {\n\t\treturn name\n\t}\n\treturn JSONName(metadata)\n}\n\nfunc ReflectTypeFromJSONName(name string) reflect.Type {\n\tname = strings.ToLower(name)\n\treturn jsonTypes.nameToType[name]\n}\n\n// JSONNameFromString converts a Go struct name string (e.g., \"pkg.AlpmDBEntry\" or \"AlpmDBEntry\")\n// to its JSON schema name (e.g., \"alpm-db-entry\"). Returns empty string if not found.\nfunc JSONNameFromString(typeName string) string {\n\t// strip \"pkg.\" prefix if present\n\ttypeName = strings.TrimPrefix(typeName, \"pkg.\")\n\n\t// look through all types to find matching struct name\n\tfor typ, jsonName := range jsonTypes.typeToName {\n\t\tif typ.Name() == typeName {\n\t\t\treturn jsonName\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// ToUpperCamelCase converts kebab-case to UpperCamelCase\n// e.g., \"alpm-db-entry\" -> \"AlpmDbEntry\"\nfunc ToUpperCamelCase(kebab string) string {\n\tparts := strings.Split(kebab, \"-\")\n\tfor i, part := range parts {\n\t\tif len(part) > 0 {\n\t\t\tparts[i] = strings.ToUpper(part[0:1]) + part[1:]\n\t\t}\n\t}\n\treturn strings.Join(parts, \"\")\n}\n"
  },
  {
    "path": "internal/packagemetadata/names_test.go",
    "content": "package packagemetadata\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestAllNames(t *testing.T) {\n\t// note: this is a form of completion testing relative to the current code base.\n\n\texpected, err := DiscoverTypeNames()\n\trequire.NoError(t, err)\n\n\tactual := AllTypeNames()\n\n\t// ensure that the codebase (from ast analysis) reflects the latest code generated state\n\tif !assert.ElementsMatch(t, expected, actual) {\n\t\tt.Errorf(\"metadata types not fully represented: \\n%s\", cmp.Diff(expected, actual))\n\t\tt.Log(\"did you add a new pkg.*Metadata type without updating the JSON schema?\")\n\t\tt.Log(\"if so, you need to update the schema version and regenerate the JSON schema (make generate-json-schema)\")\n\t}\n\n\tfor _, ty := range AllTypes() {\n\t\tassert.NotEmpty(t, JSONName(ty), \"metadata type %q does not have a JSON name\", reflect.TypeOf(ty).Name())\n\t}\n}\n\nfunc TestReflectTypeFromJSONName(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tlookup     string\n\t\twantRecord reflect.Type\n\t}{\n\t\t{\n\t\t\tname:       \"exact match on ID\",\n\t\t\tlookup:     \"rust-cargo-lock-entry\",\n\t\t\twantRecord: reflect.TypeOf(pkg.RustCargoLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:       \"exact match on former name\",\n\t\t\tlookup:     \"RustCargoPackageMetadata\",\n\t\t\twantRecord: reflect.TypeOf(pkg.RustCargoLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:       \"case insensitive on ID\",\n\t\t\tlookup:     \"RUST-CARGO-lock-entrY\",\n\t\t\twantRecord: reflect.TypeOf(pkg.RustCargoLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:       \"case insensitive on alias\",\n\t\t\tlookup:     \"rusTcArgopacKagEmEtadATa\",\n\t\t\twantRecord: reflect.TypeOf(pkg.RustCargoLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname: \"consistent override\",\n\t\t\t// there are two correct answers for this -- we should always get the same answer.\n\t\t\tlookup:     \"HackageMetadataType\",\n\t\t\twantRecord: reflect.TypeOf(pkg.HackageStackYamlLockEntry{}),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := ReflectTypeFromJSONName(tt.lookup)\n\t\t\trequire.NotNil(t, got)\n\t\t\tassert.Equal(t, tt.wantRecord.Name(), got.Name())\n\t\t})\n\t}\n}\n\nfunc TestReflectTypeFromJSONName_LegacyValues(t *testing.T) {\n\ttestCases := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected reflect.Type\n\t}{\n\t\t// these cases are always 1:1\n\t\t{\n\t\t\tname:     \"map pkg.AlpmDBEntry struct type\",\n\t\t\tinput:    \"AlpmMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.AlpmDBEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.ApkDBEntry struct type\",\n\t\t\tinput:    \"ApkMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.ApkDBEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.BinarySignature struct type\",\n\t\t\tinput:    \"BinaryMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.BinarySignature{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.CocoaPodfileLockEntry struct type\",\n\t\t\tinput:    \"CocoapodsMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.CocoaPodfileLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.ConanLockEntry struct type\",\n\t\t\tinput:    \"ConanLockMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.ConanV1LockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.ConanfileEntry struct type\",\n\t\t\tinput:    \"ConanMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.ConanfileEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.DartPubspecLockEntry struct type\",\n\t\t\tinput:    \"DartPubMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.DartPubspecLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.DotnetDepsEntry struct type\",\n\t\t\tinput:    \"DotnetDepsMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.DotnetDepsEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.DpkgDBEntry struct type\",\n\t\t\tinput:    \"DpkgMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.DpkgDBEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.RubyGemspec struct type\",\n\t\t\tinput:    \"GemMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.RubyGemspec{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.GolangBinaryBuildinfoEntry struct type\",\n\t\t\tinput:    \"GolangBinMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.GolangBinaryBuildinfoEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.GolangModuleEntry struct type\",\n\t\t\tinput:    \"GolangModMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.GolangModuleEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.JavaArchive struct type\",\n\t\t\tinput:    \"JavaMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.JavaArchive{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.MicrosoftKbPatch struct type\",\n\t\t\tinput:    \"KbPatchMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.MicrosoftKbPatch{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.LinuxKernel struct type\",\n\t\t\tinput:    \"LinuxKernel\",\n\t\t\texpected: reflect.TypeOf(pkg.LinuxKernel{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.LinuxKernelModule struct type\",\n\t\t\tinput:    \"LinuxKernelModule\",\n\t\t\texpected: reflect.TypeOf(pkg.LinuxKernelModule{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.ElixirMixLockEntry struct type\",\n\t\t\tinput:    \"MixLockMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.ElixirMixLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.NixStoreEntry struct type\",\n\t\t\tinput:    \"NixStoreMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.NixStoreEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.NpmPackage struct type\",\n\t\t\tinput:    \"NpmPackageJsonMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.NpmPackage{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.NpmPackageLockEntry struct type\",\n\t\t\tinput:    \"NpmPackageLockJsonMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.NpmPackageLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.PortageEntry struct type\",\n\t\t\tinput:    \"PortageMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.PortageEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.PythonPackage struct type\",\n\t\t\tinput:    \"PythonPackageMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.PythonPackage{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.PythonPipfileLockEntry struct type\",\n\t\t\tinput:    \"PythonPipfileLockMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.PythonPipfileLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.PythonRequirementsEntry struct type\",\n\t\t\tinput:    \"PythonRequirementsMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.PythonRequirementsEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.PhpPeclEntry struct type\",\n\t\t\tinput:    \"PhpPeclMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.PhpPeclEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.ErlangRebarLockEntry struct type\",\n\t\t\tinput:    \"RebarLockMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.ErlangRebarLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.RDescription struct type\",\n\t\t\tinput:    \"RDescriptionFileMetadataType\",\n\t\t\texpected: reflect.TypeOf(pkg.RDescription{}),\n\t\t},\n\t\t{\n\t\t\tname:     \"map pkg.RpmDBEntry struct type\",\n\t\t\tinput:    \"RpmdbMetadata\",\n\t\t\texpected: reflect.TypeOf(pkg.RpmDBEntry{}),\n\t\t},\n\t\t// these cases are 1:many\n\t\t{\n\t\t\tname:  \"map pkg.RpmDBEntry struct type - overlap with RpmArchiveMetadata\",\n\t\t\tinput: \"RpmMetadata\",\n\t\t\t// this used to be shared as a use case for both RpmArchive and RpmDBEntry\n\t\t\t// from a data-shape perspective either would be equally correct\n\t\t\t// however, the RPMDBMetadata has been around longer and may have been more widely used\n\t\t\t// so we'll map to that type for backwards compatibility.\n\t\t\texpected: reflect.TypeOf(pkg.RpmDBEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:  \"map pkg.HackageStackYamlLockEntry struct type - overlap with HackageStack*Metadata\",\n\t\t\tinput: \"HackageMetadataType\",\n\t\t\t// this used to be shared as a use case for both HackageStackYamlLockEntry and HackageStackYamlEntry\n\t\t\t// but the HackageStackYamlLockEntry maps most closely to the original data shape.\n\t\t\texpected: reflect.TypeOf(pkg.HackageStackYamlLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:  \"map pkg.PhpComposerLockEntry struct type\",\n\t\t\tinput: \"PhpComposerJsonMetadata\",\n\t\t\t// this used to be shared as a use case for both PhpComposerLockEntry and PhpComposerInstalledEntry\n\t\t\t// neither of these is more correct over the other. These parsers were also introduced at the same time.\n\t\t\texpected: reflect.TypeOf(pkg.PhpComposerLockEntry{}),\n\t\t},\n\t\t{\n\t\t\tname:  \"map pkg.RustCargoLockEntry struct type\",\n\t\t\tinput: \"RustCargoPackageMetadata\",\n\t\t\t// this used to be shared as a use case for both RustCargoLockEntry and RustBinaryAuditEntry\n\t\t\t// neither of these is more correct over the other.\n\t\t\texpected: reflect.TypeOf(pkg.RustCargoLockEntry{}),\n\t\t},\n\t}\n\n\tfor _, testCase := range testCases {\n\t\tt.Run(testCase.name, func(t *testing.T) {\n\t\t\tresult := ReflectTypeFromJSONName(testCase.input)\n\t\t\tassert.Equal(t, testCase.expected.Name(), result.Name())\n\t\t})\n\t}\n}\n\nfunc Test_JSONName_JSONLegacyName(t *testing.T) {\n\t// note: these are all the types and names covered by the v11.x and v12.x JSON schemas\n\ttests := []struct {\n\t\tname               string\n\t\tmetadata           any\n\t\texpectedJSONName   string\n\t\texpectedLegacyName string\n\t}{\n\t\t{\n\t\t\tname:               \"AlpmMetadata\",\n\t\t\tmetadata:           pkg.AlpmDBEntry{},\n\t\t\texpectedJSONName:   \"alpm-db-entry\",\n\t\t\texpectedLegacyName: \"AlpmMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"ApkMetadata\",\n\t\t\tmetadata:           pkg.ApkDBEntry{},\n\t\t\texpectedJSONName:   \"apk-db-entry\",\n\t\t\texpectedLegacyName: \"ApkMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"BinaryMetadata\",\n\t\t\tmetadata:           pkg.BinarySignature{},\n\t\t\texpectedJSONName:   \"binary-signature\",\n\t\t\texpectedLegacyName: \"BinaryMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"CocoapodsMetadata\",\n\t\t\tmetadata:           pkg.CocoaPodfileLockEntry{},\n\t\t\texpectedJSONName:   \"cocoa-podfile-lock-entry\",\n\t\t\texpectedLegacyName: \"CocoapodsMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"ConanLockMetadata\",\n\t\t\tmetadata:           pkg.ConanV1LockEntry{},\n\t\t\texpectedJSONName:   \"c-conan-lock-entry\",\n\t\t\texpectedLegacyName: \"ConanLockMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"ConanMetadata\",\n\t\t\tmetadata:           pkg.ConanfileEntry{},\n\t\t\texpectedJSONName:   \"c-conan-file-entry\",\n\t\t\texpectedLegacyName: \"ConanMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"DartPubMetadata\",\n\t\t\tmetadata:           pkg.DartPubspecLockEntry{},\n\t\t\texpectedJSONName:   \"dart-pubspec-lock-entry\",\n\t\t\texpectedLegacyName: \"DartPubMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"DotnetDepsMetadata\",\n\t\t\tmetadata:           pkg.DotnetDepsEntry{},\n\t\t\texpectedJSONName:   \"dotnet-deps-entry\",\n\t\t\texpectedLegacyName: \"DotnetDepsMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"DotnetPortableExecutableMetadata\",\n\t\t\tmetadata:           pkg.DotnetPortableExecutableEntry{},\n\t\t\texpectedJSONName:   \"dotnet-portable-executable-entry\",\n\t\t\texpectedLegacyName: \"dotnet-portable-executable-entry\", // note: the legacy name should never be blank if it didn't exist pre v11.x\n\t\t},\n\t\t{\n\t\t\tname:               \"DpkgMetadata\",\n\t\t\tmetadata:           pkg.DpkgDBEntry{},\n\t\t\texpectedJSONName:   \"dpkg-db-entry\",\n\t\t\texpectedLegacyName: \"DpkgMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"GemMetadata\",\n\t\t\tmetadata:           pkg.RubyGemspec{},\n\t\t\texpectedJSONName:   \"ruby-gemspec\",\n\t\t\texpectedLegacyName: \"GemMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"GolangBinMetadata\",\n\t\t\tmetadata:           pkg.GolangBinaryBuildinfoEntry{},\n\t\t\texpectedJSONName:   \"go-module-buildinfo-entry\",\n\t\t\texpectedLegacyName: \"GolangBinMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"GolangModMetadata\",\n\t\t\tmetadata:           pkg.GolangModuleEntry{},\n\t\t\texpectedJSONName:   \"go-module-entry\",\n\t\t\texpectedLegacyName: \"GolangModMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"GolangSourceMetadata\",\n\t\t\tmetadata:           pkg.GolangSourceEntry{},\n\t\t\texpectedJSONName:   \"go-source-entry\",\n\t\t\texpectedLegacyName: \"go-source-entry\",\n\t\t},\n\t\t{\n\t\t\tname:               \"HackageStackYamlLockMetadata\",\n\t\t\tmetadata:           pkg.HackageStackYamlLockEntry{},\n\t\t\texpectedJSONName:   \"haskell-hackage-stack-lock-entry\",\n\t\t\texpectedLegacyName: \"HackageMetadataType\", // this is closest to the original data shape in <=v11.x schema\n\t\t},\n\t\t{\n\t\t\tname:               \"HackageStackYamlMetadata\",\n\t\t\tmetadata:           pkg.HackageStackYamlEntry{},\n\t\t\texpectedJSONName:   \"haskell-hackage-stack-entry\",\n\t\t\texpectedLegacyName: \"HackageMetadataType\", // note: this conflicts with <=v11.x schema for \"haskell-hackage-stack-lock\" metadata type\n\t\t},\n\t\t{\n\t\t\tname:               \"JavaMetadata\",\n\t\t\tmetadata:           pkg.JavaArchive{},\n\t\t\texpectedJSONName:   \"java-archive\",\n\t\t\texpectedLegacyName: \"JavaMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"KbPatchMetadata\",\n\t\t\tmetadata:           pkg.MicrosoftKbPatch{},\n\t\t\texpectedJSONName:   \"microsoft-kb-patch\",\n\t\t\texpectedLegacyName: \"KbPatchMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"LinuxKernel\",\n\t\t\tmetadata:           pkg.LinuxKernel{},\n\t\t\texpectedJSONName:   \"linux-kernel-archive\",\n\t\t\texpectedLegacyName: \"LinuxKernel\",\n\t\t},\n\t\t{\n\t\t\tname:               \"LinuxKernelModule\",\n\t\t\tmetadata:           pkg.LinuxKernelModule{},\n\t\t\texpectedJSONName:   \"linux-kernel-module\",\n\t\t\texpectedLegacyName: \"LinuxKernelModule\",\n\t\t},\n\t\t{\n\t\t\tname:               \"MixLockMetadata\",\n\t\t\tmetadata:           pkg.ElixirMixLockEntry{},\n\t\t\texpectedJSONName:   \"elixir-mix-lock-entry\",\n\t\t\texpectedLegacyName: \"MixLockMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"NixStoreMetadata\",\n\t\t\tmetadata:           pkg.NixStoreEntry{},\n\t\t\texpectedJSONName:   \"nix-store-entry\",\n\t\t\texpectedLegacyName: \"NixStoreMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"NpmPackageJSONMetadata\",\n\t\t\tmetadata:           pkg.NpmPackage{},\n\t\t\texpectedJSONName:   \"javascript-npm-package\",\n\t\t\texpectedLegacyName: \"NpmPackageJsonMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"NpmPackageLockJSONMetadata\",\n\t\t\tmetadata:           pkg.NpmPackageLockEntry{},\n\t\t\texpectedJSONName:   \"javascript-npm-package-lock-entry\",\n\t\t\texpectedLegacyName: \"NpmPackageLockJsonMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"PhpComposerLockMetadata\",\n\t\t\tmetadata:           pkg.PhpComposerLockEntry{},\n\t\t\texpectedJSONName:   \"php-composer-lock-entry\",\n\t\t\texpectedLegacyName: \"PhpComposerJsonMetadata\", // note: maps to multiple entries (v11-12 breaking change)\n\t\t},\n\t\t{\n\t\t\tname:               \"PhpComposerInstalledMetadata\",\n\t\t\tmetadata:           pkg.PhpComposerInstalledEntry{},\n\t\t\texpectedJSONName:   \"php-composer-installed-entry\",\n\t\t\texpectedLegacyName: \"PhpComposerJsonMetadata\", // note: maps to multiple entries (v11-12 breaking change)\n\t\t},\n\t\t{\n\t\t\tname:               \"PhpPeclMetadata\",\n\t\t\tmetadata:           pkg.PhpPeclEntry{},\n\t\t\texpectedJSONName:   \"php-pecl-entry\",\n\t\t\texpectedLegacyName: \"PhpPeclMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"PortageMetadata\",\n\t\t\tmetadata:           pkg.PortageEntry{},\n\t\t\texpectedJSONName:   \"portage-db-entry\",\n\t\t\texpectedLegacyName: \"PortageMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"PythonPackageMetadata\",\n\t\t\tmetadata:           pkg.PythonPackage{},\n\t\t\texpectedJSONName:   \"python-package\",\n\t\t\texpectedLegacyName: \"PythonPackageMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"PythonPipfileLockMetadata\",\n\t\t\tmetadata:           pkg.PythonPipfileLockEntry{},\n\t\t\texpectedJSONName:   \"python-pipfile-lock-entry\",\n\t\t\texpectedLegacyName: \"PythonPipfileLockMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"PythonRequirementsMetadata\",\n\t\t\tmetadata:           pkg.PythonRequirementsEntry{},\n\t\t\texpectedJSONName:   \"python-pip-requirements-entry\",\n\t\t\texpectedLegacyName: \"PythonRequirementsMetadata\",\n\t\t},\n\t\t{\n\t\t\tname:               \"RebarLockMetadata\",\n\t\t\tmetadata:           pkg.ErlangRebarLockEntry{},\n\t\t\texpectedJSONName:   \"erlang-rebar-lock-entry\",\n\t\t\texpectedLegacyName: \"RebarLockMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"RDescriptionFileMetadata\",\n\t\t\tmetadata:           pkg.RDescription{},\n\t\t\texpectedJSONName:   \"r-description\",\n\t\t\texpectedLegacyName: \"RDescriptionFileMetadataType\",\n\t\t},\n\t\t{\n\t\t\tname:               \"RpmDBMetadata\",\n\t\t\tmetadata:           pkg.RpmDBEntry{},\n\t\t\texpectedJSONName:   \"rpm-db-entry\",\n\t\t\texpectedLegacyName: \"RpmMetadata\", // not accurate, but how it was pre v12 of the schema\n\t\t},\n\t\t{\n\t\t\tname:               \"RpmArchiveMetadata\",\n\t\t\tmetadata:           pkg.RpmArchive{},\n\t\t\texpectedJSONName:   \"rpm-archive\",\n\t\t\texpectedLegacyName: \"RpmMetadata\", // note: conflicts with <=v11.x schema for \"rpm-db-entry\" metadata type\n\t\t},\n\t\t{\n\t\t\tname:               \"CargoPackageMetadata\",\n\t\t\tmetadata:           pkg.RustCargoLockEntry{},\n\t\t\texpectedJSONName:   \"rust-cargo-lock-entry\",\n\t\t\texpectedLegacyName: \"RustCargoPackageMetadata\", // note: maps to multiple entries (v11-12 breaking change)\n\t\t},\n\t\t{\n\t\t\tname:               \"CargoPackageMetadata (audit binary)\",\n\t\t\tmetadata:           pkg.RustBinaryAuditEntry{},\n\t\t\texpectedJSONName:   \"rust-cargo-audit-entry\",\n\t\t\texpectedLegacyName: \"RustCargoPackageMetadata\", // note: maps to multiple entries (v11-12 breaking change)\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactualJSONName := JSONName(test.metadata)\n\t\t\tactualLegacyName := JSONLegacyName(test.metadata)\n\t\t\tassert.Equal(t, test.expectedJSONName, actualJSONName, \"unexpected name\")\n\t\t\tassert.Equal(t, test.expectedLegacyName, actualLegacyName, \"unexpected legacy name\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/redact/redact.go",
    "content": "package redact\n\nimport \"github.com/anchore/go-logger/adapter/redact\"\n\nvar store redact.Store\n\nfunc Set(s redact.Store) {\n\tif store != nil {\n\t\t// if someone is trying to set a redaction store and we already have one then something is wrong. The store\n\t\t// that we're replacing might already have values in it, so we should never replace it.\n\t\tpanic(\"replace existing redaction store (probably unintentional)\")\n\t}\n\tstore = s\n}\n\nfunc Get() redact.Store {\n\treturn store\n}\n\nfunc Add(vs ...string) {\n\tif store == nil {\n\t\t// if someone is trying to add values that should never be output and we don't have a store then something is wrong.\n\t\t// we should never accidentally output values that should be redacted, thus we panic here.\n\t\tpanic(\"cannot add redactions without a store\")\n\t}\n\tstore.Add(vs...)\n}\n\nfunc Apply(value string) string {\n\tif store == nil {\n\t\t// if someone is trying to add values that should never be output and we don't have a store then something is wrong.\n\t\t// we should never accidentally output values that should be redacted, thus we panic here.\n\t\tpanic(\"cannot apply redactions without a store\")\n\t}\n\treturn store.RedactString(value)\n}\n"
  },
  {
    "path": "internal/regex_helpers.go",
    "content": "package internal\n\nimport (\n\t\"io\"\n\t\"regexp\"\n)\n\nconst readerChunkSize = 1024 * 1024\n\n// MatchNamedCaptureGroups takes a regular expression and string and returns all of the named capture group results in a map.\n// This is only for the first match in the regex. Callers shouldn't be providing regexes with multiple capture groups with the same name.\nfunc MatchNamedCaptureGroups(regEx *regexp.Regexp, content string) map[string]string {\n\t// note: we are looking across all matches and stopping on the first non-empty match. Why? Take the following example:\n\t// input: \"cool something to match against\" pattern: `((?P<name>match) (?P<version>against))?`. Since the pattern is\n\t// encapsulated in an optional capture group, there will be results for each character, but the results will match\n\t// on nothing. The only \"true\" match will be at the end (\"match against\").\n\tallMatches := regEx.FindAllStringSubmatch(content, -1)\n\tvar results map[string]string\n\tfor _, match := range allMatches {\n\t\t// fill a candidate results map with named capture group results, accepting empty values, but not groups with\n\t\t// no names\n\t\tfor nameIdx, name := range regEx.SubexpNames() {\n\t\t\tif nameIdx > len(match) || len(name) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif results == nil {\n\t\t\t\tresults = make(map[string]string)\n\t\t\t}\n\t\t\tresults[name] = match[nameIdx]\n\t\t}\n\t\t// note: since we are looking for the first best potential match we should stop when we find the first one\n\t\t// with non-empty results.\n\t\tif !isEmptyMap(results) {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn results\n}\n\n// MatchNamedCaptureGroupsFromReader matches named capture groups from a reader, assuming the pattern fits within\n// 1.5x the reader chunk size (1MB * 1.5).\nfunc MatchNamedCaptureGroupsFromReader(re *regexp.Regexp, r io.Reader) (map[string]string, error) {\n\tresults := make(map[string]string)\n\tmatches, err := processReaderInChunks(r, readerChunkSize, matchNamedCaptureGroupsHandler(re, results))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !matches {\n\t\treturn nil, nil\n\t}\n\treturn results, nil\n}\n\n// MatchAnyFromReader matches any of the provided regular expressions from a reader, assuming the pattern fits within\n// 1.5x the reader chunk size (1MB * 1.5).\nfunc MatchAnyFromReader(r io.Reader, res ...*regexp.Regexp) (bool, error) {\n\treturn processReaderInChunks(r, readerChunkSize, matchAnyHandler(res))\n}\n\nfunc matchNamedCaptureGroupsHandler(re *regexp.Regexp, results map[string]string) func(data []byte) (bool, error) {\n\treturn func(data []byte) (bool, error) {\n\t\tif match := re.FindSubmatch(data); match != nil {\n\t\t\tgroupNames := re.SubexpNames()\n\t\t\tfor i, name := range groupNames {\n\t\t\t\tif i > 0 && name != \"\" {\n\t\t\t\t\tresults[name] = string(match[i])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true, nil\n\t\t}\n\t\treturn false, nil\n\t}\n}\n\nfunc matchAnyHandler(res []*regexp.Regexp) func(data []byte) (bool, error) {\n\treturn func(data []byte) (bool, error) {\n\t\tfor _, re := range res {\n\t\t\tif re.Match(data) {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\t}\n\t\treturn false, nil\n\t}\n}\n\n// processReaderInChunks reads from the provided reader in chunks and calls the provided handler with each chunk + portion of the previous neighboring chunk.\n// Note that we only overlap the last half of the previous chunk with the current chunk to avoid missing matches that span chunk boundaries.\nfunc processReaderInChunks(rdr io.Reader, chunkSize int, handler func(data []byte) (bool, error)) (bool, error) {\n\thalf := chunkSize / 2\n\tbufSize := chunkSize + half\n\tbuf := make([]byte, bufSize)\n\tlastRead := 0\n\n\tfor {\n\t\toffset := half\n\t\tif lastRead < half {\n\t\t\toffset = lastRead\n\t\t}\n\t\tstart := half - offset\n\t\tif lastRead > 0 {\n\t\t\tcopy(buf[start:], buf[half+offset:half+lastRead])\n\t\t}\n\t\tn, err := rdr.Read(buf[half:])\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// process the combined data with the handler\n\t\tmatched, handlerErr := handler(buf[start : half+n])\n\t\tif handlerErr != nil {\n\t\t\treturn false, handlerErr\n\t\t}\n\t\tif matched {\n\t\t\treturn true, nil\n\t\t}\n\n\t\tlastRead = n\n\t}\n\n\treturn false, nil\n}\n\nfunc isEmptyMap(m map[string]string) bool {\n\tif len(m) == 0 {\n\t\treturn true\n\t}\n\tfor _, value := range m {\n\t\tif value != \"\" {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "internal/regex_helpers_test.go",
    "content": "package internal\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestMatchCaptureGroups(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\tpattern  string\n\t\texpected map[string]string\n\t}{\n\t\t{\n\t\t\tname:    \"go-case\",\n\t\t\tinput:   \"match this thing\",\n\t\t\tpattern: `(?P<name>match).*(?P<version>thing)`,\n\t\t\texpected: map[string]string{\n\t\t\t\t\"name\":    \"match\",\n\t\t\t\t\"version\": \"thing\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"only matches the first instance\",\n\t\t\tinput:   \"match this thing batch another think\",\n\t\t\tpattern: `(?P<name>[mb]atch).*?(?P<version>thin[gk])`,\n\t\t\texpected: map[string]string{\n\t\t\t\t\"name\":    \"match\",\n\t\t\t\t\"version\": \"thing\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"nested capture groups\",\n\t\t\tinput:   \"cool something to match against\",\n\t\t\tpattern: `((?P<name>match) (?P<version>against))`,\n\t\t\texpected: map[string]string{\n\t\t\t\t\"name\":    \"match\",\n\t\t\t\t\"version\": \"against\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"nested optional capture groups\",\n\t\t\tinput:   \"cool something to match against\",\n\t\t\tpattern: `((?P<name>match) (?P<version>against))?`,\n\t\t\texpected: map[string]string{\n\t\t\t\t\"name\":    \"match\",\n\t\t\t\t\"version\": \"against\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"nested optional capture groups with larger match\",\n\t\t\tinput:   \"cool something to match against match never\",\n\t\t\tpattern: `.*?((?P<name>match) (?P<version>(against|never)))?`,\n\t\t\texpected: map[string]string{\n\t\t\t\t\"name\":    \"match\",\n\t\t\t\t\"version\": \"against\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := MatchNamedCaptureGroups(regexp.MustCompile(test.pattern), test.input)\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n\nfunc TestMatchNamedCaptureGroupsFromReader(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tpattern string\n\t\tinput   string\n\t\twant    map[string]string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"match single group\",\n\t\t\tpattern: `(?P<key>[^1-9]+)`,\n\t\t\tinput:   \"key\",\n\t\t\twant:    map[string]string{\"key\": \"key\"},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"match multiple groups\",\n\t\t\tpattern: `(?P<key>[^1-9]+):(?P<value>\\w+)`,\n\t\t\tinput:   \"key:value\",\n\t\t\twant:    map[string]string{\"key\": \"key\", \"value\": \"value\"},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"no match\",\n\t\t\tpattern: `(?P<key>[^1-9]+)`,\n\t\t\tinput:   \"2345\",\n\t\t\twant:    nil,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"error empty reader\",\n\t\t\tpattern: `(?P<key>\\w+)`,\n\t\t\tinput:   \"\",\n\t\t\twant:    nil,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tre := regexp.MustCompile(tt.pattern)\n\t\t\tr := strings.NewReader(tt.input)\n\t\t\tgot, err := MatchNamedCaptureGroupsFromReader(re, r)\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestMatchAnyFromReader(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\tpatterns []*regexp.Regexp\n\t\twant     bool\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:     \"match single pattern\",\n\t\t\tinput:    \"hello world\",\n\t\t\tpatterns: []*regexp.Regexp{regexp.MustCompile(`hello`)},\n\t\t\twant:     true,\n\t\t\twantErr:  require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:     \"match multiple patterns\",\n\t\t\tinput:    \"test case\",\n\t\t\tpatterns: []*regexp.Regexp{regexp.MustCompile(`case`), regexp.MustCompile(`test`)},\n\t\t\twant:     true,\n\t\t\twantErr:  require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:     \"no match\",\n\t\t\tinput:    \"nothing here\",\n\t\t\tpatterns: []*regexp.Regexp{regexp.MustCompile(`absent`)},\n\t\t\twant:     false,\n\t\t\twantErr:  require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:     \"error empty reader\",\n\t\t\tinput:    \"\",\n\t\t\tpatterns: []*regexp.Regexp{regexp.MustCompile(`match`)},\n\t\t\twant:     false,\n\t\t\twantErr:  require.NoError,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tr := strings.NewReader(tt.input)\n\t\t\tgot, err := MatchAnyFromReader(r, tt.patterns...)\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestProcessReaderInChunks_ChunkBoundaries(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinput         string\n\t\tchunkSize     int\n\t\texpectedCalls []string\n\t\treturnOnChunk int\n\t\twantErr       require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:          \"go case\",\n\t\t\tinput:         \"123456789012345\",\n\t\t\tchunkSize:     4,\n\t\t\treturnOnChunk: 2,\n\t\t\texpectedCalls: []string{\"1234\", \"345678\", \"789012\"},\n\t\t\twantErr:       require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:          \"no match\",\n\t\t\tinput:         \"123456789012345\",\n\t\t\tchunkSize:     4,\n\t\t\treturnOnChunk: -1,\n\t\t\texpectedCalls: []string{\"1234\", \"345678\", \"789012\", \"12345\"},\n\t\t\twantErr:       require.NoError,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tvar actualCalls []string\n\t\t\tvar current int\n\t\t\thandler := func(data []byte) (bool, error) {\n\t\t\t\tactualCalls = append(actualCalls, string(data))\n\t\t\t\tif current == tt.returnOnChunk {\n\t\t\t\t\treturn true, nil\n\t\t\t\t}\n\t\t\t\tcurrent++\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t\tr := strings.NewReader(tt.input)\n\t\t\tgot, err := processReaderInChunks(r, tt.chunkSize, handler)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif tt.returnOnChunk == -1 {\n\t\t\t\tassert.False(t, got)\n\t\t\t} else {\n\t\t\t\tassert.True(t, got)\n\t\t\t}\n\t\t\tassert.Equal(t, tt.expectedCalls, actualCalls)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/binary/binary_dependencies.go",
    "content": "package binary\n\nimport (\n\t\"path\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc NewDependencyRelationships(resolver file.Resolver, accessor sbomsync.Accessor) []artifact.Relationship {\n\t// TODO: consider library format (e.g. ELF, Mach-O, PE) for the meantime assume all binaries are homogeneous format\n\t// start with building new package-to-package relationships for executables-to-executables\n\t// each relationship must be unique, store in a map[id]map[id]relationship to avoid duplicates\n\t// 1 & 2... build an index of all shared libraries and their owning packages to search against\n\tindex := newShareLibIndex(resolver, accessor)\n\n\t// 3. craft package-to-package relationships for each binary that represent shared library dependencies\n\t//note: we only care about package-to-package relationships\n\treturn generateRelationships(resolver, accessor, index)\n}\n\nfunc generateRelationships(resolver file.Resolver, accessor sbomsync.Accessor, index *sharedLibraryIndex) []artifact.Relationship {\n\tnewRelationships := relationship.NewIndex()\n\n\t// find all package-to-package relationships for shared library dependencies\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\trelIndex := relationship.NewIndex(s.Relationships...)\n\n\t\taddRelationship := func(r artifact.Relationship) {\n\t\t\tif !relIndex.Contains(r) {\n\t\t\t\tnewRelationships.Add(r)\n\t\t\t}\n\t\t}\n\t\tfor _, parentPkg := range allElfPackages(s) {\n\t\t\tfor _, evidentLocation := range parentPkg.Locations.ToSlice() {\n\t\t\t\tif evidentLocation.Annotations[pkg.EvidenceAnnotationKey] != pkg.PrimaryEvidenceAnnotation {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// find all libraries that this package depends on\n\t\t\t\texec, ok := s.Artifacts.Executables[evidentLocation.Coordinates]\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tpopulateRelationships(exec, parentPkg, resolver, addRelationship, index)\n\t\t\t}\n\t\t}\n\t})\n\n\treturn newRelationships.All()\n}\n\n// PackagesToRemove returns a list of binary packages (resolved by the ELF cataloger) that should be removed from the SBOM\n// These packages are removed because they are already represented by a higher order packages in the SBOM.\nfunc PackagesToRemove(accessor sbomsync.Accessor) []artifact.ID {\n\tpkgsToDelete := make([]artifact.ID, 0)\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\t// ELF package type > Binary package type\n\t\tpkgsToDelete = append(pkgsToDelete, compareElfBinaryPackages(s)...)\n\t})\n\treturn pkgsToDelete\n}\n\nfunc compareElfBinaryPackages(s *sbom.SBOM) []artifact.ID {\n\tpkgsToDelete := make([]artifact.ID, 0)\n\tfor _, elfPkg := range allElfPackages(s) {\n\t\tfor _, loc := range onlyPrimaryEvidenceLocations(elfPkg) {\n\t\t\tfor _, otherPkg := range s.Artifacts.Packages.PackagesByPath(loc.RealPath) {\n\t\t\t\t// we only care about comparing binary packages to each other (not other types)\n\t\t\t\tif otherPkg.Type != pkg.BinaryPkg {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif !isElfPackage(otherPkg) {\n\t\t\t\t\tpkgsToDelete = append(pkgsToDelete, otherPkg.ID())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn pkgsToDelete\n}\n\nfunc onlyPrimaryEvidenceLocations(p pkg.Package) []file.Location {\n\tvar locs []file.Location\n\tfor _, loc := range p.Locations.ToSlice() {\n\t\tif loc.Annotations[pkg.EvidenceAnnotationKey] != pkg.PrimaryEvidenceAnnotation {\n\t\t\tcontinue\n\t\t}\n\t\tlocs = append(locs, loc)\n\t}\n\n\treturn locs\n}\n\nfunc allElfPackages(s *sbom.SBOM) []pkg.Package {\n\tvar elfPkgs []pkg.Package\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\tif !isElfPackage(p) {\n\t\t\tcontinue\n\t\t}\n\t\telfPkgs = append(elfPkgs, p)\n\t}\n\treturn elfPkgs\n}\n\nfunc isElfPackage(p pkg.Package) bool {\n\t_, ok := p.Metadata.(pkg.ELFBinaryPackageNoteJSONPayload)\n\treturn ok\n}\n\nfunc populateRelationships(exec file.Executable, parentPkg pkg.Package, resolver file.Resolver, addRelationship func(artifact.Relationship), index *sharedLibraryIndex) {\n\tfor _, libReference := range exec.ImportedLibraries {\n\t\t// for each library reference, check s.Artifacts.Packages.Sorted(pkg.BinaryPkg) for a binary package that represents that library\n\t\t// if found, create a relationship between the parent package and the library package\n\t\t// if not found do nothing.\n\t\t// note: we only care about package-to-package relationships\n\n\t\t// find the basename of the library\n\t\tlibBasename := path.Base(libReference)\n\t\tlibLocations, err := resolver.FilesByGlob(\"**/\" + libBasename)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"lib\", libReference, \"error\", err).Trace(\"unable to resolve library basename\")\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, loc := range libLocations {\n\t\t\t// are you in our index?\n\t\t\trealBaseName := path.Base(loc.RealPath)\n\t\t\tpkgCollection := index.owningLibraryPackage(realBaseName)\n\t\t\tif pkgCollection.PackageCount() < 1 {\n\t\t\t\taddRelationship(\n\t\t\t\t\tartifact.Relationship{\n\t\t\t\t\t\tFrom: loc.Coordinates,\n\t\t\t\t\t\tTo:   parentPkg,\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t\tfor _, p := range pkgCollection.Sorted() {\n\t\t\t\taddRelationship(\n\t\t\t\t\tartifact.Relationship{\n\t\t\t\t\t\tFrom: p,\n\t\t\t\t\t\tTo:   parentPkg,\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/binary/binary_dependencies_test.go",
    "content": "package binary\n\nimport (\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestPackagesToRemove(t *testing.T) {\n\tglibcCoordinate := file.NewCoordinates(\"/usr/lib64/libc.so.6\", \"\")\n\tglibCPackage := pkg.Package{\n\t\tName:    \"glibc\",\n\t\tVersion: \"2.28-236.el8_9.12\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(\"path/to/rpmdb\"),\n\t\t),\n\t\tType: pkg.RpmPkg,\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: glibcCoordinate.RealPath,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tglibCPackage.SetID()\n\n\tglibCBinaryELFPackage := pkg.Package{\n\t\tName: \"glibc\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tType: pkg.BinaryPkg,\n\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\tType:       \"testfixture\",\n\t\t\tVendor:     \"syft\",\n\t\t\tSystem:     \"syftsys\",\n\t\t\tSourceRepo: \"https://github.com/someone/somewhere.git\",\n\t\t\tCommit:     \"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\n\t\t},\n\t}\n\tglibCBinaryELFPackage.SetID()\n\n\tglibCBinaryELFPackageAsRPM := pkg.Package{\n\t\tName: \"glibc\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tType: pkg.RpmPkg, // note: the elf package claims it is a RPM, not binary\n\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\tType:       \"rpm\",\n\t\t\tVendor:     \"syft\",\n\t\t\tSystem:     \"syftsys\",\n\t\t\tSourceRepo: \"https://github.com/someone/somewhere.git\",\n\t\t\tCommit:     \"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\n\t\t},\n\t}\n\tglibCBinaryELFPackageAsRPM.SetID()\n\n\tglibCBinaryClassifierPackage := pkg.Package{\n\t\tName: \"glibc\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t),\n\t\tType:     pkg.BinaryPkg,\n\t\tMetadata: pkg.BinarySignature{},\n\t}\n\tglibCBinaryClassifierPackage.SetID()\n\n\tlibCBinaryClassifierPackage := pkg.Package{\n\t\tName: \"libc\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tType:     pkg.BinaryPkg,\n\t\tMetadata: pkg.BinarySignature{},\n\t}\n\tlibCBinaryClassifierPackage.SetID()\n\n\ttests := []struct {\n\t\tname     string\n\t\taccessor sbomsync.Accessor\n\t\twant     []artifact.ID\n\t}{\n\t\t{\n\t\t\tname:     \"remove packages that are overlapping rpm --> binary\",\n\t\t\taccessor: newAccessor([]pkg.Package{glibCPackage, glibCBinaryELFPackage}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\t// this is surprising, right? the calling function reasons about if any generic binary package (regardless of it being an ELF package or not)\n\t\t\t// should be deleted or kept based on the user configuration to do so.\n\t\t\twant: []artifact.ID{},\n\t\t},\n\t\t{\n\t\t\tname:     \"keep packages that are overlapping rpm --> binary when the binary self identifies as an RPM\",\n\t\t\taccessor: newAccessor([]pkg.Package{glibCPackage, glibCBinaryELFPackageAsRPM}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\twant:     []artifact.ID{},\n\t\t},\n\t\t{\n\t\t\tname:     \"remove no packages when there is a single binary package (or self identifying RPM)\",\n\t\t\taccessor: newAccessor([]pkg.Package{glibCBinaryELFPackage, glibCBinaryELFPackageAsRPM}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\twant:     []artifact.ID{},\n\t\t},\n\t\t{\n\t\t\tname:     \"remove packages when there is a single binary package and a classifier package\",\n\t\t\taccessor: newAccessor([]pkg.Package{glibCBinaryELFPackage, glibCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\twant:     []artifact.ID{glibCBinaryClassifierPackage.ID()},\n\t\t},\n\t\t{\n\t\t\tname:     \"ensure we're considering ELF packages, not just binary packages (supporting evidence)\",\n\t\t\taccessor: newAccessor([]pkg.Package{glibCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\twant:     []artifact.ID{},\n\t\t},\n\t\t{\n\t\t\tname:     \"ensure we're considering ELF packages, not just binary packages (primary evidence)\",\n\t\t\taccessor: newAccessor([]pkg.Package{libCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),\n\t\t\twant:     []artifact.ID{},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgsToDelete := PackagesToRemove(tt.accessor)\n\t\t\tif diff := cmp.Diff(tt.want, pkgsToDelete); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected packages to delete (-want, +got): %s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNewDependencyRelationships(t *testing.T) {\n\t// coordinates for the files under test\n\tglibcCoordinate := file.NewCoordinates(\"/usr/lib64/libc.so.6\", \"\")\n\tsecondGlibcCoordinate := file.NewCoordinates(\"/usr/local/lib64/libc.so.6\", \"\")\n\tnestedLibCoordinate := file.NewCoordinates(\"/usr/local/bin/elftests/elfbinwithnestedlib/bin/elfbinwithnestedlib\", \"\")\n\tparallelLibCoordinate := file.NewCoordinates(\"/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin1\", \"\")\n\n\t// rpm package that was discovered in linked section of the ELF binary package\n\tglibCPackage := pkg.Package{\n\t\tName:    \"glibc\",\n\t\tVersion: \"2.28-236.el8_9.12\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath),\n\t\t\tfile.NewLocation(\"some/other/path\"),\n\t\t),\n\t\tType: pkg.RpmPkg,\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: glibcCoordinate.RealPath,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"some/other/path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tglibCPackage.SetID()\n\n\t// second rpm package that could be discovered in linked section of the ELF binary package (same base path as above)\n\tglibCustomPackage := pkg.Package{\n\t\tName:      \"glibc\",\n\t\tVersion:   \"2.28-236.el8_9.12\",\n\t\tLocations: file.NewLocationSet(file.NewLocation(secondGlibcCoordinate.RealPath)),\n\t\tType:      pkg.RpmPkg,\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: secondGlibcCoordinate.RealPath,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tglibCustomPackage.SetID()\n\n\t// binary package that is an executable that can link against above rpm packages\n\tsyftTestFixturePackage := pkg.Package{\n\t\tName:    \"syfttestfixture\",\n\t\tVersion: \"0.01\",\n\t\tPURL:    \"pkg:generic/syftsys/syfttestfixture@0.01\",\n\t\tFoundBy: \"\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(nestedLibCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\tfile.NewLocation(parallelLibCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t),\n\t\tLanguage: \"\",\n\t\tType:     pkg.RpmPkg,\n\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\tType:       \"rpm\",\n\t\t\tVendor:     \"syft\",\n\t\t\tSystem:     \"syftsys\",\n\t\t\tSourceRepo: \"https://github.com/someone/somewhere.git\",\n\t\t\tCommit:     \"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\n\t\t},\n\t}\n\tsyftTestFixturePackage.SetID()\n\n\t// dummy executable representation of glibc\n\tglibcExecutable := file.Executable{\n\t\tFormat:            \"elf\",\n\t\tHasExports:        true,\n\t\tHasEntrypoint:     true,\n\t\tImportedLibraries: []string{},\n\t}\n\n\t// executable representation of the syftTestFixturePackage\n\tsyftTestFixtureExecutable := file.Executable{\n\t\tFormat:        \"elf\",\n\t\tHasExports:    true,\n\t\tHasEntrypoint: true,\n\t\tImportedLibraries: []string{\n\t\t\tpath.Base(glibcCoordinate.RealPath),\n\t\t},\n\t}\n\n\t// second executable representation that has no parent package\n\tsyftTestFixtureExecutable2 := file.Executable{\n\t\tFormat:        \"elf\",\n\t\tHasExports:    true,\n\t\tHasEntrypoint: true,\n\t\tImportedLibraries: []string{\n\t\t\t// this should not be a relationship because it is not a coordinate\n\t\t\t\"foo.so.6\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname                    string\n\t\tresolver                file.Resolver\n\t\tcoordinateIndex         map[file.Coordinates]file.Executable\n\t\tpackages                []pkg.Package\n\t\tprexistingRelationships []artifact.Relationship\n\t\twant                    []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:            \"blank sbom and accessor returns empty relationships\",\n\t\t\tresolver:        nil,\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{},\n\t\t\tpackages:        []pkg.Package{},\n\t\t},\n\t\t{\n\t\t\tname: \"given a package that imports glibc, expect a relationship between the two packages when the package is an executable\",\n\t\t\tresolver: file.NewMockResolverForPaths(\n\t\t\t\tglibcCoordinate.RealPath,\n\t\t\t\tnestedLibCoordinate.RealPath,\n\t\t\t\tparallelLibCoordinate.RealPath,\n\t\t\t),\n\t\t\t// path -> executable (above mock resolver needs to be able to resolve to paths in this map)\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{\n\t\t\t\tglibcCoordinate:       glibcExecutable,\n\t\t\t\tnestedLibCoordinate:   syftTestFixtureExecutable,\n\t\t\t\tparallelLibCoordinate: syftTestFixtureExecutable2,\n\t\t\t},\n\t\t\tpackages: []pkg.Package{glibCPackage, syftTestFixturePackage},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: glibCPackage,\n\t\t\t\t\tTo:   syftTestFixturePackage,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"given an executable maps to one base path represented by two RPM we make two relationships\",\n\t\t\tresolver: file.NewMockResolverForPaths(\n\t\t\t\tglibcCoordinate.RealPath,\n\t\t\t\tsecondGlibcCoordinate.RealPath,\n\t\t\t\tnestedLibCoordinate.RealPath,\n\t\t\t\tparallelLibCoordinate.RealPath,\n\t\t\t),\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{\n\t\t\t\tglibcCoordinate:       glibcExecutable,\n\t\t\t\tsecondGlibcCoordinate: glibcExecutable,\n\t\t\t\tnestedLibCoordinate:   syftTestFixtureExecutable,\n\t\t\t\tparallelLibCoordinate: syftTestFixtureExecutable2,\n\t\t\t},\n\t\t\tpackages: []pkg.Package{glibCPackage, glibCustomPackage, syftTestFixturePackage},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: glibCPackage,\n\t\t\t\t\tTo:   syftTestFixturePackage,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: glibCustomPackage,\n\t\t\t\t\tTo:   syftTestFixturePackage,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"given some dependency relationships already exist, expect no duplicate relationships to be created\",\n\t\t\tresolver: file.NewMockResolverForPaths(\n\t\t\t\tglibcCoordinate.RealPath,\n\t\t\t\tnestedLibCoordinate.RealPath,\n\t\t\t\tparallelLibCoordinate.RealPath,\n\t\t\t),\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{\n\t\t\t\tglibcCoordinate:       glibcExecutable,\n\t\t\t\tnestedLibCoordinate:   syftTestFixtureExecutable,\n\t\t\t\tparallelLibCoordinate: syftTestFixtureExecutable2,\n\t\t\t},\n\t\t\tpackages: []pkg.Package{glibCPackage, glibCustomPackage, syftTestFixturePackage},\n\t\t\tprexistingRelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: glibCPackage,\n\t\t\t\t\tTo:   syftTestFixturePackage,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"given a package that imports a library that is not tracked by the resolver, expect no relationships to be created\",\n\t\t\tresolver: file.NewMockResolverForPaths(),\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{\n\t\t\t\tglibcCoordinate:       glibcExecutable,\n\t\t\t\tnestedLibCoordinate:   syftTestFixtureExecutable,\n\t\t\t\tparallelLibCoordinate: syftTestFixtureExecutable2,\n\t\t\t},\n\t\t\tpackages: []pkg.Package{glibCPackage, syftTestFixturePackage},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\taccessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)\n\t\t\t// given a resolver that knows about the paths of the packages and executables,\n\t\t\t// and given an SBOM accessor that knows about the packages and executables,\n\t\t\t// we should be able to create a set of relationships between the packages and executables\n\t\t\trelationships := NewDependencyRelationships(tt.resolver, accessor)\n\t\t\tif diff := relationshipComparer(tt.want, relationships); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected relationships (-want, +got): %s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc relationshipComparer(x, y []artifact.Relationship) string {\n\treturn cmp.Diff(x, y, cmpopts.IgnoreUnexported(\n\t\tpkg.Package{},\n\t\tartifact.Relationship{},\n\t\tfile.LocationSet{},\n\t\tpkg.LicenseSet{},\n\t), cmpopts.SortSlices(lessRelationships))\n}\n\nfunc lessRelationships(r1, r2 artifact.Relationship) bool {\n\tc := strings.Compare(string(r1.Type), string(r2.Type))\n\tif c != 0 {\n\t\treturn c < 0\n\t}\n\tc = strings.Compare(string(r1.From.ID()), string(r2.From.ID()))\n\tif c != 0 {\n\t\treturn c < 0\n\t}\n\tc = strings.Compare(string(r1.To.ID()), string(r2.To.ID()))\n\treturn c < 0\n}\n\nfunc newAccessor(pkgs []pkg.Package, coordinateIndex map[file.Coordinates]file.Executable, preexistingRelationships []artifact.Relationship) sbomsync.Accessor {\n\tsb := sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkg.NewCollection(),\n\t\t},\n\t}\n\n\tbuilder := sbomsync.NewBuilder(&sb)\n\tbuilder.AddPackages(pkgs...)\n\n\taccessor := builder.(sbomsync.Accessor)\n\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\ts.Artifacts.Executables = coordinateIndex\n\t\tif preexistingRelationships != nil {\n\t\t\ts.Relationships = preexistingRelationships\n\t\t}\n\t})\n\treturn accessor\n}\n"
  },
  {
    "path": "internal/relationship/binary/shared_library_index.go",
    "content": "package binary\n\nimport (\n\t\"path\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\ntype sharedLibraryIndex struct {\n\tlibLocationsByBasename map[string]file.CoordinateSet\n\tallLibLocations        file.CoordinateSet\n\tpackagesByLibraryPath  map[file.Coordinates]*pkg.Collection\n}\n\nfunc newShareLibIndex(resolver file.Resolver, accessor sbomsync.Accessor) *sharedLibraryIndex {\n\ts := &sharedLibraryIndex{\n\t\tlibLocationsByBasename: make(map[string]file.CoordinateSet),\n\t\tallLibLocations:        file.NewCoordinateSet(),\n\t\tpackagesByLibraryPath:  make(map[file.Coordinates]*pkg.Collection),\n\t}\n\n\ts.build(resolver, accessor)\n\n\treturn s\n}\n\nfunc (i *sharedLibraryIndex) build(resolver file.Resolver, accessor sbomsync.Accessor) {\n\t// 1. map out all locations that provide libraries (indexed by the basename)\n\ti.libLocationsByBasename, i.allLibLocations = locationsThatProvideLibraries(accessor)\n\n\t// 2. for each library path, find all packages that claim ownership of the library\n\ti.packagesByLibraryPath = packagesWithLibraryOwnership(resolver, accessor, i.allLibLocations)\n}\n\nfunc (i *sharedLibraryIndex) owningLibraryPackage(libraryBasename string) *pkg.Collection {\n\t// find all packages that own a library by its basename\n\tcollection := pkg.NewCollection()\n\tif set, ok := i.libLocationsByBasename[libraryBasename]; ok {\n\t\tfor _, coord := range set.ToSlice() {\n\t\t\tif pkgSet, ok := i.packagesByLibraryPath[coord]; ok {\n\t\t\t\ttoAdd := pkgSet.Sorted()\n\t\t\t\tcollection.Add(toAdd...)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection\n}\n\nfunc locationsThatProvideLibraries(accessor sbomsync.Accessor) (map[string]file.CoordinateSet, file.CoordinateSet) {\n\t// map out all locations that provide libraries (indexed by the basename)\n\tlibLocationsByBasename := make(map[string]file.CoordinateSet)\n\tallLibLocations := file.NewCoordinateSet()\n\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\t// PROBLEM: this does not consider all symlinks to real paths that are libraries\n\t\tfor coord, f := range s.Artifacts.Executables {\n\t\t\tif !f.HasExports {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tbasename := path.Base(coord.RealPath)\n\t\t\tset := libLocationsByBasename[basename]\n\t\t\tset.Add(coord)\n\t\t\tallLibLocations.Add(coord)\n\t\t\tlibLocationsByBasename[basename] = set\n\t\t}\n\t})\n\n\treturn libLocationsByBasename, allLibLocations\n}\nfunc packagesWithLibraryOwnership(resolver file.Resolver, accessor sbomsync.Accessor, allLibLocations file.CoordinateSet) map[file.Coordinates]*pkg.Collection {\n\t// map out all packages that claim ownership of a library at a specific path\n\tpackagesByLibraryPath := make(map[file.Coordinates]*pkg.Collection)\n\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\tvar ownedFilePaths []string\n\t\t\tif p.Type == pkg.BinaryPkg {\n\t\t\t\tfor _, loc := range p.Locations.ToSlice() {\n\t\t\t\t\townedFilePaths = append(ownedFilePaths, loc.Path())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfileOwner, ok := p.Metadata.(pkg.FileOwner)\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\townedFilePaths = fileOwner.OwnedFiles()\n\t\t\t}\n\n\t\t\tpackagesByLibraryPath = populatePackagesByLibraryPath(resolver, allLibLocations, packagesByLibraryPath, p, ownedFilePaths)\n\t\t}\n\t})\n\n\treturn packagesByLibraryPath\n}\n\nfunc populatePackagesByLibraryPath(\n\tresolver file.Resolver,\n\tallLibLocations file.CoordinateSet,\n\tpackagesByLibraryPath map[file.Coordinates]*pkg.Collection,\n\tp pkg.Package,\n\townedFilePaths []string,\n) map[file.Coordinates]*pkg.Collection {\n\tfor _, pth := range ownedFilePaths {\n\t\townedLocation, err := resolver.FilesByPath(pth)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", pth).Trace(\"unable to find path for owned file\")\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, loc := range ownedLocation {\n\t\t\t// if the location is a library, add the package to the set of packages that own the library\n\t\t\tif !allLibLocations.Contains(loc.Coordinates) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif _, ok := packagesByLibraryPath[loc.Coordinates]; !ok {\n\t\t\t\tpackagesByLibraryPath[loc.Coordinates] = pkg.NewCollection()\n\t\t\t}\n\n\t\t\t// we have a library path, add the package to the set of packages that own the library\n\t\t\tpackagesByLibraryPath[loc.Coordinates].Add(p)\n\t\t}\n\t}\n\treturn packagesByLibraryPath\n}\n"
  },
  {
    "path": "internal/relationship/binary/shared_library_index_test.go",
    "content": "package binary\n\nimport (\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_newShareLibIndex(t *testing.T) {\n\ttests := []struct {\n\t\tname                    string\n\t\tresolver                file.Resolver\n\t\tcoordinateIndex         map[file.Coordinates]file.Executable\n\t\tpackages                []pkg.Package\n\t\tprexistingRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:                    \"constructor\",\n\t\t\tresolver:                file.NewMockResolverForPaths(),\n\t\t\tcoordinateIndex:         map[file.Coordinates]file.Executable{},\n\t\t\tpackages:                []pkg.Package{},\n\t\t\tprexistingRelationships: []artifact.Relationship{},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\taccessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)\n\t\t\tsharedLibraryIndex := newShareLibIndex(tt.resolver, accessor)\n\t\t\tif sharedLibraryIndex == nil {\n\t\t\t\tt.Errorf(\"newShareLibIndex() = %v, want non-nil\", sharedLibraryIndex)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_sharedLibraryIndex_build(t *testing.T) {\n\tglibcCoordinate := file.NewCoordinates(\"/usr/lib64/libc.so.6\", \"\")\n\tsecondGlibcCoordinate := file.NewCoordinates(\"/usr/local/lib64/libc.so.6\", \"\")\n\tglibcExecutable := file.Executable{\n\t\tFormat:        \"elf\",\n\t\tHasExports:    true,\n\t\tHasEntrypoint: true,\n\t\tImportedLibraries: []string{\n\t\t\tpath.Base(glibcCoordinate.RealPath),\n\t\t\tpath.Base(secondGlibcCoordinate.RealPath),\n\t\t},\n\t}\n\tglibCPackage := pkg.Package{\n\t\tName:    \"glibc\",\n\t\tVersion: \"2.28-236.el8_9.12\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(glibcCoordinate.RealPath),\n\t\t\tfile.NewLocation(\"some/other/path\"),\n\t\t),\n\t\tType: pkg.RpmPkg,\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: glibcCoordinate.RealPath,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"some/other/path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname                    string\n\t\tresolver                file.Resolver\n\t\tcoordinateIndex         map[file.Coordinates]file.Executable\n\t\tpackages                []pkg.Package\n\t\tprexistingRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"build with locations and packages\",\n\t\t\tresolver: file.NewMockResolverForPaths([]string{\n\t\t\t\tglibcCoordinate.RealPath,\n\t\t\t\tsecondGlibcCoordinate.RealPath,\n\t\t\t}...),\n\t\t\tcoordinateIndex: map[file.Coordinates]file.Executable{\n\t\t\t\tglibcCoordinate:       glibcExecutable,\n\t\t\t\tsecondGlibcCoordinate: glibcExecutable,\n\t\t\t},\n\t\t\tpackages: []pkg.Package{\n\t\t\t\tglibCPackage,\n\t\t\t},\n\t\t\tprexistingRelationships: []artifact.Relationship{},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\taccessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)\n\t\t\tsharedLibraryIndex := newShareLibIndex(tt.resolver, accessor)\n\t\t\tsharedLibraryIndex.build(tt.resolver, accessor)\n\t\t\tpkgs := sharedLibraryIndex.owningLibraryPackage(path.Base(glibcCoordinate.RealPath))\n\t\t\tif pkgs.PackageCount() < 1 {\n\t\t\t\tt.Errorf(\"owningLibraryPackage() = %v, want non-empty\", pkgs)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/by_file_ownership.go",
    "content": "package relationship\n\nimport (\n\t\"sort\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\n// altRpmDBGlob allows db matches against new locations introduced in fedora:{36,37}\n// See https://github.com/anchore/syft/issues/1077 for larger context\nconst altRpmDBGlob = \"**/rpm/{Packages,Packages.db,rpmdb.sqlite}\"\n\nvar globsForbiddenFromBeingOwned = []string{\n\t// any OS DBs should automatically be ignored to prevent cyclic issues (e.g. the \"rpm\" RPM owns the path to the\n\t// RPM DB, so if not ignored that package would own all other packages on the system).\n\tpkg.ApkDBGlob,\n\tpkg.DpkgDBGlob,\n\tpkg.RpmDBGlob,\n\taltRpmDBGlob,\n\t// DEB packages share common copyright info between, this does not mean that sharing these paths implies ownership.\n\t\"/usr/share/doc/**/copyright\",\n}\n\ntype ownershipByFilesMetadata struct {\n\tFiles []string `json:\"files\"`\n}\n\nfunc ByFileOwnershipOverlapWorker(resolver file.Resolver, accessor sbomsync.Accessor) {\n\tvar relationships []artifact.Relationship\n\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\trelationships = byFileOwnershipOverlap(resolver, s.Artifacts.Packages)\n\t})\n\n\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\ts.Relationships = append(s.Relationships, relationships...)\n\t})\n}\n\n// byFileOwnershipOverlap creates a package-to-package relationship based on discovering which packages have\n// evidence locations that overlap with ownership claim from another package's package manager metadata.\nfunc byFileOwnershipOverlap(resolver file.Resolver, catalog *pkg.Collection) []artifact.Relationship {\n\tvar relationships = findOwnershipByFilesRelationships(resolver, catalog)\n\n\tvar edges []artifact.Relationship\n\tfor parentID, children := range relationships {\n\t\tfor childID, files := range children {\n\t\t\tfs := files.List()\n\t\t\tsort.Strings(fs)\n\n\t\t\tparent := catalog.Package(parentID) // TODO: this is potentially expensive\n\t\t\tchild := catalog.Package(childID)   // TODO: this is potentially expensive\n\n\t\t\tif parent == nil {\n\t\t\t\tlog.Tracef(\"parent package not found: %v\", parentID)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif child == nil {\n\t\t\t\tlog.Tracef(\"child package not found: %v\", childID)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tedges = append(edges, artifact.Relationship{\n\t\t\t\tFrom: *parent,\n\t\t\t\tTo:   *child,\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\tData: ownershipByFilesMetadata{\n\t\t\t\t\tFiles: fs,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\treturn edges\n}\n\n// findOwnershipByFilesRelationships find overlaps in file ownership with a file that defines another package. Specifically, a .Location.Path of\n// a package is found to be owned by another (from the owner's .Metadata.Files[]).\nfunc findOwnershipByFilesRelationships(resolver file.Resolver, catalog *pkg.Collection) map[artifact.ID]map[artifact.ID]*strset.Set { //nolint:gocognit\n\tvar relationships = make(map[artifact.ID]map[artifact.ID]*strset.Set)\n\n\tif catalog == nil {\n\t\treturn relationships\n\t}\n\n\t// Build a map of real paths to packages that directly own them. We'll use this\n\t// to check if a file is already owned by the same type of package when we're\n\t// determining ownership via symlink.\n\tdirectOwnership := directOwnersByPath(catalog)\n\n\t// Now establish relationships, considering symlinks\n\tfor _, candidateOwnerPkg := range catalog.Sorted() {\n\t\tid := candidateOwnerPkg.ID()\n\t\tif candidateOwnerPkg.Metadata == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check to see if this is a file owner\n\t\tpkgFileOwner, ok := candidateOwnerPkg.Metadata.(pkg.FileOwner)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, ownedFilePath := range pkgFileOwner.OwnedFiles() {\n\t\t\tif ownedFilePath == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// find paths that result in a hit (includes resolving symlinks)\n\t\t\tresolvedPaths := resolvePaths(ownedFilePath, resolver)\n\n\t\t\tfor _, resolvedPath := range resolvedPaths {\n\t\t\t\tif matchesAny(resolvedPath, globsForbiddenFromBeingOwned) {\n\t\t\t\t\t// we skip over known exceptions to file ownership, such as the RPM package owning\n\t\t\t\t\t// the RPM DB path, otherwise the RPM package would \"own\" all RPMs, which is not intended\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Skip claiming ownership via symlink if another package of the same type\n\t\t\t\t// directly owns this real path. This is the specific fix for the issue where a\n\t\t\t\t// symlink shouldn't allow a package to claim ownership when another package of\n\t\t\t\t// the same type directly owns the real file.\n\t\t\t\tif resolvedPath != ownedFilePath { // This is a resolved symlink path\n\t\t\t\t\t// Check if another package of the same type directly owns this path\n\t\t\t\t\tif paths := directOwnership[candidateOwnerPkg.Type]; paths != nil && paths.Has(resolvedPath) {\n\t\t\t\t\t\t// Skip this path - a package of the same type directly owns it\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// look for package(s) in the catalog that may be owned by this package and mark the relationship\n\t\t\t\tfor _, subPackage := range catalog.PackagesByPath(resolvedPath) {\n\t\t\t\t\tsubID := subPackage.ID()\n\t\t\t\t\tif subID == id {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif _, exists := relationships[id]; !exists {\n\t\t\t\t\t\trelationships[id] = make(map[artifact.ID]*strset.Set)\n\t\t\t\t\t}\n\n\t\t\t\t\tif _, exists := relationships[id][subID]; !exists {\n\t\t\t\t\t\trelationships[id][subID] = strset.New()\n\t\t\t\t\t}\n\t\t\t\t\trelationships[id][subID].Add(resolvedPath)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn relationships\n}\n\nfunc directOwnersByPath(catalog *pkg.Collection) map[pkg.Type]*strset.Set {\n\tdirectOwnership := map[pkg.Type]*strset.Set{}\n\n\t// First, identify direct ownership of all files\n\tfor _, p := range catalog.Sorted() {\n\t\tif p.Metadata == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check to see if this is a file owner\n\t\tpkgFileOwner, ok := p.Metadata.(pkg.FileOwner)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, ownedFilePath := range pkgFileOwner.OwnedFiles() {\n\t\t\tif ownedFilePath == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Register direct ownership\n\t\t\tpaths := directOwnership[p.Type]\n\t\t\tif paths == nil {\n\t\t\t\tpaths = strset.New()\n\t\t\t\tdirectOwnership[p.Type] = paths\n\t\t\t}\n\t\t\tpaths.Add(ownedFilePath)\n\t\t}\n\t}\n\n\treturn directOwnership\n}\n\nfunc resolvePaths(ownedFilePath string, resolver file.Resolver) []string {\n\t// though we have a string path, we need to resolve symlinks and other filesystem oddities since we cannot assume this is a real path\n\tvar locs []file.Location\n\tvar err error\n\tif resolver != nil {\n\t\tlocs, err = resolver.FilesByPath(ownedFilePath)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", ownedFilePath).Trace(\"unable to find path for owned file\")\n\t\t\tlocs = nil\n\t\t}\n\t}\n\n\townedFilePaths := strset.New(ownedFilePath)\n\tfor _, loc := range locs {\n\t\townedFilePaths.Add(loc.RealPath)\n\t}\n\treturn ownedFilePaths.List()\n}\n\nfunc matchesAny(s string, globs []string) bool {\n\tfor _, g := range globs {\n\t\tmatches, err := doublestar.Match(g, s)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"failed to match glob=%q : %+v\", g, err)\n\t\t}\n\t\tif matches {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "internal/relationship/by_file_ownership_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/cmptest\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype mockFR struct {\n\tfile.Resolver\n\ttranslate map[string]string\n}\n\nfunc (m mockFR) FilesByPath(paths ...string) ([]file.Location, error) {\n\tvar results []file.Location\n\tfor _, p := range paths {\n\t\ttPath, ok := m.translate[p]\n\t\tif !ok {\n\t\t\ttPath = p\n\t\t}\n\t\tresults = append(results, file.NewLocation(tPath))\n\t}\n\treturn results, nil\n}\n\nfunc TestOwnershipByFilesRelationship(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tresolver file.Resolver\n\t\tsetup    func(t testing.TB) ([]pkg.Package, []artifact.Relationship)\n\t}{\n\t\t{\n\t\t\tname: \"owns-by-real-path\",\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tparent := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/a/path\", \"/another/path\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/bee/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.RpmPkg,\n\t\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{Path: \"/owning/path/1\"},\n\t\t\t\t\t\t\t{Path: \"/owning/path/2\"},\n\t\t\t\t\t\t\t{Path: \"/d/path\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\tparent.SetID()\n\n\t\t\t\tchild := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/d/path\", \"/another/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\t}\n\t\t\t\tchild.SetID()\n\n\t\t\t\trelationship := artifact.Relationship{\n\t\t\t\t\tFrom: parent,\n\t\t\t\t\tTo:   child,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t\tData: ownershipByFilesMetadata{\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"/d/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn []pkg.Package{parent, child}, []artifact.Relationship{relationship}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"only-real-file-owner-gets-ownership-relationship-not-symlink-owner\",\n\t\t\tresolver: mockFR{\n\t\t\t\ttranslate: map[string]string{\n\t\t\t\t\t\"/usr/bin/jenkins.war-symlink\": \"/usr/share/jenkins/jenkins.war\", // symlink to the real file\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\t// Package that owns the symlink\n\t\t\t\tsymlinkOwner := pkg.Package{\n\t\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\t\tPackage: \"jenkins-symlink-pkg\",\n\t\t\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t\t\t{Path: \"/usr/bin/jenkins.war-symlink\"}, // this symlinks to the real file\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\tsymlinkOwner.SetID()\n\n\t\t\t\t// Package that owns the real file\n\t\t\t\trealFileOwner := pkg.Package{\n\t\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\t\tPackage: \"jenkins-real-pkg\",\n\t\t\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t\t\t{Path: \"/usr/share/jenkins/jenkins.war\"}, // the real file\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\trealFileOwner.SetID()\n\n\t\t\t\t// A third package that is \"located at\" the real file path\n\t\t\t\t// This simulates a package being discovered at the jenkins.war location\n\t\t\t\tconsumerPackage := pkg.Package{\n\t\t\t\t\tType: pkg.JavaPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/share/jenkins/jenkins.war\", \"/usr/share/jenkins/jenkins.war\"),\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t\tconsumerPackage.SetID()\n\n\t\t\t\t// Only the real file owner should have an ownership relationship with the consumer package\n\t\t\t\t// The symlink owner should NOT have a relationship with the consumer\n\t\t\t\trelationship := artifact.Relationship{\n\t\t\t\t\tFrom: realFileOwner,\n\t\t\t\t\tTo:   consumerPackage,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t\tData: ownershipByFilesMetadata{\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"/usr/share/jenkins/jenkins.war\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn []pkg.Package{symlinkOwner, realFileOwner, consumerPackage}, []artifact.Relationship{relationship}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"misses-by-dead-symlink\",\n\t\t\tresolver: mockFR{\n\t\t\t\ttranslate: map[string]string{\n\t\t\t\t\t\"/bin/gzip\": \"\", // treat this as a dead symlink\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tparent := pkg.Package{\n\t\t\t\t\tType: pkg.DebPkg,\n\t\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t\t{Path: \"/bin/gzip\"}, // this symlinks to gzip via /bin -> /usr/bin\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\tparent.SetID()\n\n\t\t\t\tchild := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/bin/gzip\", \"/usr/bin/gzip\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.BinaryPkg,\n\t\t\t\t}\n\t\t\t\tchild.SetID()\n\n\t\t\t\treturn []pkg.Package{parent, child}, nil // importantly, no relationship is expected\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"owns-by-symlink\",\n\t\t\tresolver: mockFR{\n\t\t\t\ttranslate: map[string]string{\n\t\t\t\t\t\"/bin/gzip\": \"/usr/bin/gzip\", // if there is a string path of /bin/gzip then return the real path of /usr/bin/gzip\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tparent := pkg.Package{\n\t\t\t\t\tType: pkg.DebPkg,\n\t\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t\t{Path: \"/bin/gzip\"}, // this symlinks to gzip via /bin -> /usr/bin\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\tparent.SetID()\n\n\t\t\t\tchild := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/bin/gzip\", \"/usr/bin/gzip\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.BinaryPkg,\n\t\t\t\t}\n\t\t\t\tchild.SetID()\n\n\t\t\t\trelationship := artifact.Relationship{\n\t\t\t\t\tFrom: parent,\n\t\t\t\t\tTo:   child,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t\tData: ownershipByFilesMetadata{\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"/usr/bin/gzip\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\treturn []pkg.Package{parent, child}, []artifact.Relationship{relationship}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"owns-by-virtual-path\",\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tparent := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/a/path\", \"/some/other/path\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/bee/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.RpmPkg,\n\t\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{Path: \"/owning/path/1\"},\n\t\t\t\t\t\t\t{Path: \"/owning/path/2\"},\n\t\t\t\t\t\t\t{Path: \"/another/path\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\tparent.SetID()\n\n\t\t\t\tchild := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path\"),\n\t\t\t\t\t\tfile.NewLocation(\"/d/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\t}\n\t\t\t\tchild.SetID()\n\n\t\t\t\trelationship := artifact.Relationship{\n\t\t\t\t\tFrom: parent,\n\t\t\t\t\tTo:   child,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t\tData: ownershipByFilesMetadata{\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"/another/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn []pkg.Package{parent, child}, []artifact.Relationship{relationship}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignore-empty-path\",\n\t\t\tsetup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tparent := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/a/path\", \"/some/other/path\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/bee/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.RpmPkg,\n\t\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{Path: \"/owning/path/1\"},\n\t\t\t\t\t\t\t{Path: \"/owning/path/2\"},\n\t\t\t\t\t\t\t{Path: \"\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tparent.SetID()\n\n\t\t\t\tchild := pkg.Package{\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path\"),\n\t\t\t\t\t\tfile.NewLocation(\"/d/path\"),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\t}\n\n\t\t\t\tchild.SetID()\n\n\t\t\t\treturn []pkg.Package{parent, child}, nil\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgs, expectedRelations := test.setup(t)\n\t\t\tc := pkg.NewCollection(pkgs...)\n\t\t\trelationships := byFileOwnershipOverlap(test.resolver, c)\n\n\t\t\trequire.Len(t, relationships, len(expectedRelations))\n\t\t\tfor idx, expectedRelationship := range expectedRelations {\n\t\t\t\tactualRelationship := relationships[idx]\n\t\t\t\tif d := cmp.Diff(expectedRelationship, actualRelationship, cmptest.DefaultOptions()...); d != \"\" {\n\t\t\t\t\tt.Errorf(\"unexpected relationship (-want, +got): %s\", d)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/evident_by.go",
    "content": "package relationship\n\nimport (\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc EvidentBy(catalog *pkg.Collection) []artifact.Relationship {\n\tvar edges []artifact.Relationship\n\tfor _, p := range catalog.Sorted() {\n\t\tfor _, l := range p.Locations.ToSlice() {\n\t\t\tkind := pkg.SupportingEvidenceAnnotation\n\t\t\tif v, exists := l.Annotations[pkg.EvidenceAnnotationKey]; exists {\n\t\t\t\tkind = v\n\t\t\t}\n\n\t\t\tedges = append(edges, artifact.Relationship{\n\t\t\t\tFrom: p,\n\t\t\t\tTo:   l.Coordinates,\n\t\t\t\tType: artifact.EvidentByRelationship,\n\t\t\t\tData: map[string]string{\n\t\t\t\t\t\"kind\": kind,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\treturn edges\n}\n"
  },
  {
    "path": "internal/relationship/evident_by_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestRelationshipsEvidentBy(t *testing.T) {\n\n\tc := pkg.NewCollection()\n\n\tcoordA := file.Coordinates{\n\t\tRealPath:     \"/somewhere/real\",\n\t\tFileSystemID: \"abc\",\n\t}\n\tcoordC := file.Coordinates{\n\t\tRealPath:     \"/somewhere/real\",\n\t\tFileSystemID: \"abc\",\n\t}\n\tcoordD := file.Coordinates{\n\t\tRealPath:     \"/somewhere/real\",\n\t\tFileSystemID: \"abc\",\n\t}\n\tpkgA := pkg.Package{\n\t\tLocations: file.NewLocationSet(\n\t\t\t// added!\n\t\t\tfile.NewLocationFromCoordinates(coordA).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t// ignored...\n\t\t\tfile.NewLocationFromCoordinates(coordC).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\tfile.NewLocationFromCoordinates(coordD),\n\t\t),\n\t}\n\tpkgA.SetID()\n\tc.Add(pkgA)\n\n\tcoordB := file.Coordinates{\n\t\tRealPath:     \"/somewhere-else/real\",\n\t\tFileSystemID: \"def\",\n\t}\n\tpkgB := pkg.Package{\n\t\tLocations: file.NewLocationSet(\n\t\t\t// added!\n\t\t\tfile.NewLocationFromCoordinates(coordB).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t}\n\tpkgB.SetID()\n\tc.Add(pkgB)\n\n\ttests := []struct {\n\t\tname    string\n\t\tcatalog *pkg.Collection\n\t\twant    []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"go case\",\n\t\t\tcatalog: c,\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: pkgB,\n\t\t\t\t\tTo:   coordB,\n\t\t\t\t\tType: artifact.EvidentByRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: pkgA,\n\t\t\t\t\tTo:   coordA,\n\t\t\t\t\tType: artifact.EvidentByRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := EvidentBy(tt.catalog)\n\t\t\trequire.Len(t, actual, len(tt.want))\n\t\t\tfor i := range actual {\n\t\t\t\tassert.Equal(t, tt.want[i].From.ID(), actual[i].From.ID(), \"from mismatch at index %d\", i)\n\t\t\t\tassert.Equal(t, tt.want[i].To.ID(), actual[i].To.ID(), \"to mismatch at index %d\", i)\n\t\t\t\tassert.Equal(t, tt.want[i].Type, actual[i].Type, \"type mismatch at index %d\", i)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/exclude_binaries_by_file_ownership_overlap.go",
    "content": "package relationship\n\nimport (\n\t\"reflect\"\n\t\"slices\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar (\n\tosCatalogerTypes = []pkg.Type{\n\t\tpkg.AlpmPkg,\n\t\tpkg.ApkPkg,\n\t\tpkg.DebPkg,\n\t\tpkg.NixPkg,\n\t\tpkg.PortagePkg,\n\t\tpkg.RpmPkg,\n\t}\n\tbinaryCatalogerTypes = []pkg.Type{\n\t\tpkg.BinaryPkg,\n\t}\n\tbitnamiCatalogerTypes = []pkg.Type{\n\t\tpkg.BitnamiPkg,\n\t}\n\tbinaryMetadataTypes = []string{\n\t\treflect.TypeOf(pkg.ELFBinaryPackageNoteJSONPayload{}).Name(),\n\t\treflect.TypeOf(pkg.BinarySignature{}).Name(),\n\t\treflect.TypeOf(pkg.JavaVMInstallation{}).Name(),\n\t}\n)\n\nfunc ExcludeBinariesByFileOwnershipOverlap(accessor sbomsync.Accessor) {\n\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\tfor _, r := range s.Relationships {\n\t\t\tif idToRemove := excludeByFileOwnershipOverlap(r, s.Artifacts.Packages); idToRemove != \"\" {\n\t\t\t\ts.Artifacts.Packages.Delete(idToRemove)\n\t\t\t\ts.Relationships = RemoveRelationshipsByID(s.Relationships, idToRemove)\n\t\t\t}\n\t\t}\n\t})\n}\n\n// excludeByFileOwnershipOverlap will remove packages that should be overridden by a more authoritative package,\n// such as an OS package or a package from a cataloger with more specific information being raised up.\nfunc excludeByFileOwnershipOverlap(r artifact.Relationship, c *pkg.Collection) artifact.ID {\n\tif artifact.OwnershipByFileOverlapRelationship != r.Type {\n\t\treturn \"\"\n\t}\n\n\tparent := c.Package(r.From.ID())\n\tif parent == nil {\n\t\treturn \"\"\n\t}\n\n\tchild := c.Package(r.To.ID())\n\tif child == nil {\n\t\treturn \"\"\n\t}\n\n\tif idToRemove := identifyOverlappingOSRelationship(parent, child); idToRemove != \"\" {\n\t\treturn idToRemove\n\t}\n\n\tif idToRemove := identifyOverlappingJVMRelationship(parent, child); idToRemove != \"\" {\n\t\treturn idToRemove\n\t}\n\n\tif idToRemove := identifyOverlappingBitnamiRelationship(parent, child); idToRemove != \"\" {\n\t\treturn idToRemove\n\t}\n\n\treturn \"\"\n}\n\n// identifyOverlappingJVMRelationship indicates the package to remove if this is a binary -> binary pkg relationship\n// with a java binary signature package and a more authoritative JVM release package.\nfunc identifyOverlappingJVMRelationship(parent *pkg.Package, child *pkg.Package) artifact.ID {\n\tif !slices.Contains(binaryCatalogerTypes, parent.Type) {\n\t\treturn \"\"\n\t}\n\n\tif !slices.Contains(binaryCatalogerTypes, child.Type) {\n\t\treturn \"\"\n\t}\n\n\tif child.Metadata == nil {\n\t\treturn \"\"\n\t}\n\n\tvar (\n\t\tfoundJVM   bool\n\t\tidToRemove artifact.ID\n\t)\n\tfor _, p := range []*pkg.Package{parent, child} {\n\t\tswitch p.Metadata.(type) {\n\t\tcase pkg.JavaVMInstallation:\n\t\t\tfoundJVM = true\n\t\tdefault:\n\t\t\tidToRemove = p.ID()\n\t\t}\n\t}\n\n\tif foundJVM {\n\t\treturn idToRemove\n\t}\n\n\treturn \"\"\n}\n\n// identifyOverlappingOSRelationship indicates the package ID to remove if this is an OS pkg -> bin pkg relationship.\n// This was implemented as a way to help resolve: https://github.com/anchore/syft/issues/931\nfunc identifyOverlappingOSRelationship(parent *pkg.Package, child *pkg.Package) artifact.ID {\n\tif !slices.Contains(osCatalogerTypes, parent.Type) {\n\t\treturn \"\"\n\t}\n\n\tif slices.Contains(binaryCatalogerTypes, child.Type) {\n\t\treturn child.ID()\n\t}\n\n\tif child.Metadata == nil {\n\t\treturn \"\"\n\t}\n\n\tif !slices.Contains(binaryMetadataTypes, reflect.TypeOf(child.Metadata).Name()) {\n\t\treturn \"\"\n\t}\n\n\treturn child.ID()\n}\n\n// identifyOverlappingBitnamiRelationship indicates the package ID to remove if this is a Bitnami pkg -> bin pkg relationship.\nfunc identifyOverlappingBitnamiRelationship(parent *pkg.Package, child *pkg.Package) artifact.ID {\n\tif !slices.Contains(bitnamiCatalogerTypes, parent.Type) {\n\t\treturn \"\"\n\t}\n\n\tif slices.Contains(binaryCatalogerTypes, child.Type) {\n\t\treturn child.ID()\n\t}\n\n\tif child.Metadata == nil {\n\t\treturn \"\"\n\t}\n\n\tif !slices.Contains(binaryMetadataTypes, reflect.TypeOf(child.Metadata).Name()) {\n\t\treturn \"\"\n\t}\n\n\treturn child.ID()\n}\n"
  },
  {
    "path": "internal/relationship/exclude_binaries_by_file_ownership_overlap_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestExcludeByFileOwnershipOverlap(t *testing.T) {\n\tpackageA := pkg.Package{Name: \"package-a\", Type: pkg.ApkPkg}\n\tpackageB := pkg.Package{Name: \"package-b\", Type: pkg.BinaryPkg, Metadata: pkg.JavaVMInstallation{}}\n\tpackageC := pkg.Package{Name: \"package-c\", Type: pkg.BinaryPkg, Metadata: pkg.ELFBinaryPackageNoteJSONPayload{Type: \"rpm\"}}\n\tpackageD := pkg.Package{Name: \"package-d\", Type: pkg.BitnamiPkg}\n\tfor _, p := range []*pkg.Package{&packageA, &packageB, &packageC, &packageD} {\n\t\tp := p\n\t\tp.SetID()\n\t}\n\n\ttests := []struct {\n\t\tname          string\n\t\trelationship  artifact.Relationship\n\t\tpackages      *pkg.Collection\n\t\tshouldExclude bool\n\t}{\n\t\t{\n\t\t\t// prove that OS -> bin exclusions are wired\n\t\t\tname: \"exclusions from os -> elf binary (as RPM)\",\n\t\t\trelationship: artifact.Relationship{\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\tFrom: packageA, // OS\n\t\t\t\tTo:   packageC, // ELF binary\n\t\t\t},\n\t\t\tpackages:      pkg.NewCollection(packageA, packageC),\n\t\t\tshouldExclude: true,\n\t\t},\n\t\t{\n\t\t\t// prove that bin -> JVM exclusions are wired\n\t\t\tname: \"exclusions from binary -> binary with JVM metadata\",\n\t\t\trelationship: artifact.Relationship{\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\tFrom: packageB, // binary with JVM metadata\n\t\t\t\tTo:   packageC, // binary\n\t\t\t},\n\t\t\tpackages:      pkg.NewCollection(packageC, packageB),\n\t\t\tshouldExclude: true,\n\t\t},\n\t\t{\n\t\t\t// prove that Bitnami -> bin exclusions are wired\n\t\t\tname: \"exclusions from bitnami -> binary\",\n\t\t\trelationship: artifact.Relationship{\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\tFrom: packageD, // Bitnami\n\t\t\t\tTo:   packageC, // ELF binary\n\t\t\t},\n\t\t\tpackages:      pkg.NewCollection(packageD, packageC),\n\t\t\tshouldExclude: true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactualExclude := excludeByFileOwnershipOverlap(test.relationship, test.packages)\n\t\t\tdidExclude := actualExclude != \"\"\n\t\t\tif !didExclude && test.shouldExclude {\n\t\t\t\tt.Errorf(\"expected to exclude relationship %+v\", test.relationship)\n\t\t\t}\n\t\t})\n\n\t}\n}\n\nfunc TestIdentifyOverlappingOSRelationship(t *testing.T) {\n\tpackageA := pkg.Package{Name: \"package-a\", Type: pkg.ApkPkg} // OS package\n\tpackageB := pkg.Package{Name: \"package-b\", Type: pkg.BinaryPkg}\n\tpackageC := pkg.Package{Name: \"package-c\", Type: pkg.BinaryPkg, Metadata: pkg.BinarySignature{}}\n\tpackageD := pkg.Package{Name: \"package-d\", Type: pkg.PythonPkg} // Language package\n\tpackageE := pkg.Package{Name: \"package-e\", Type: pkg.BinaryPkg, Metadata: pkg.ELFBinaryPackageNoteJSONPayload{}}\n\n\tfor _, p := range []*pkg.Package{&packageA, &packageB, &packageC, &packageD, &packageE} {\n\t\tp.SetID()\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tparent     *pkg.Package\n\t\tchild      *pkg.Package\n\t\texpectedID artifact.ID\n\t}{\n\t\t{\n\t\t\tname:       \"OS -> binary without metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageB,\n\t\t\texpectedID: packageB.ID(), // OS package to binary package, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"OS -> binary with binary metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: packageC.ID(), // OS package to binary package with binary metadata, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"OS -> non-binary package\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageD,\n\t\t\texpectedID: \"\", // OS package to non-binary package, no exclusion\n\t\t},\n\t\t{\n\t\t\tname:       \"OS -> binary with ELF metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageE,\n\t\t\texpectedID: packageE.ID(), // OS package to binary package with ELF metadata, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"non-OS parent\",\n\t\t\tparent:     &packageD, // non-OS package\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: \"\", // non-OS parent, no exclusion\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresultID := identifyOverlappingOSRelationship(tt.parent, tt.child)\n\t\t\tassert.Equal(t, tt.expectedID, resultID)\n\t\t})\n\t}\n}\n\nfunc TestIdentifyOverlappingBitnamiRelationship(t *testing.T) {\n\tpackageA := pkg.Package{Name: \"package-a\", Type: pkg.BitnamiPkg} // Bitnami package\n\tpackageB := pkg.Package{Name: \"package-b\", Type: pkg.BinaryPkg}\n\tpackageC := pkg.Package{Name: \"package-c\", Type: pkg.BinaryPkg, Metadata: pkg.BinarySignature{}}\n\tpackageD := pkg.Package{Name: \"package-d\", Type: pkg.PythonPkg} // Language package\n\tpackageE := pkg.Package{Name: \"package-e\", Type: pkg.BinaryPkg, Metadata: pkg.ELFBinaryPackageNoteJSONPayload{}}\n\n\tfor _, p := range []*pkg.Package{&packageA, &packageB, &packageC, &packageD, &packageE} {\n\t\tp.SetID()\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tparent     *pkg.Package\n\t\tchild      *pkg.Package\n\t\texpectedID artifact.ID\n\t}{\n\t\t{\n\t\t\tname:       \"Bitnami -> binary without metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageB,\n\t\t\texpectedID: packageB.ID(), // Bitnami package to binary package, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"Bitnami -> binary with binary metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: packageC.ID(), // Bitnami package to binary package with binary metadata, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"Bitnami -> non-binary package\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageD,\n\t\t\texpectedID: \"\", // Bitnami package to non-binary package, no exclusion\n\t\t},\n\t\t{\n\t\t\tname:       \"Bitnami -> binary with ELF metadata\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageE,\n\t\t\texpectedID: packageE.ID(), // Bitnami package to binary package with ELF metadata, should return child ID\n\t\t},\n\t\t{\n\t\t\tname:       \"non-Bitnami parent\",\n\t\t\tparent:     &packageD, // non-Bitnami package\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: \"\", // non-Bitnami parent, no exclusion\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresultID := identifyOverlappingBitnamiRelationship(tt.parent, tt.child)\n\t\t\tassert.Equal(t, tt.expectedID, resultID)\n\t\t})\n\t}\n}\n\nfunc TestIdentifyOverlappingJVMRelationship(t *testing.T) {\n\n\tpackageA := pkg.Package{Name: \"package-a\", Type: pkg.BinaryPkg}\n\tpackageB := pkg.Package{Name: \"package-b\", Type: pkg.BinaryPkg, Metadata: pkg.BinarySignature{}}\n\tpackageC := pkg.Package{Name: \"package-c\", Type: pkg.BinaryPkg, Metadata: pkg.JavaVMInstallation{}}\n\tpackageD := pkg.Package{Name: \"package-d\", Type: pkg.PythonPkg}\n\tpackageE := pkg.Package{Name: \"package-e\", Type: pkg.BinaryPkg}\n\n\tfor _, p := range []*pkg.Package{&packageA, &packageB, &packageC, &packageD, &packageE} {\n\t\tp.SetID()\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tparent     *pkg.Package\n\t\tchild      *pkg.Package\n\t\texpectedID artifact.ID\n\t}{\n\t\t{\n\t\t\tname:       \"binary -> binary with JVM installation\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: packageA.ID(), // JVM found, return BinaryPkg ID\n\t\t},\n\t\t{\n\t\t\tname:       \"binary -> binary with binary signature\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageB,\n\t\t\texpectedID: \"\", // binary signatures only found, no exclusion\n\t\t},\n\t\t{\n\t\t\tname:       \"binary -> python (non-binary child)\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageD,\n\t\t\texpectedID: \"\", // non-binary child, no exclusion\n\t\t},\n\t\t{\n\t\t\tname:       \"no JVM or signature in binary -> binary\",\n\t\t\tparent:     &packageA,\n\t\t\tchild:      &packageE,\n\t\t\texpectedID: \"\", // no JVM or binary signature, no exclusion\n\t\t},\n\t\t{\n\t\t\tname:       \"non-binary parent\",\n\t\t\tparent:     &packageD,\n\t\t\tchild:      &packageC,\n\t\t\texpectedID: \"\", // non-binary parent, no exclusion\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresultID := identifyOverlappingJVMRelationship(tt.parent, tt.child)\n\t\t\tassert.Equal(t, tt.expectedID, resultID)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/relationship/index.go",
    "content": "package relationship\n\nimport (\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// Index indexes relationships, preventing duplicates\ntype Index struct {\n\tall    []*sortableRelationship\n\tfromID map[artifact.ID]*mappedRelationships\n\ttoID   map[artifact.ID]*mappedRelationships\n}\n\n// NewIndex returns a new relationship Index\nfunc NewIndex(relationships ...artifact.Relationship) *Index {\n\tout := Index{\n\t\tfromID: make(map[artifact.ID]*mappedRelationships),\n\t\ttoID:   make(map[artifact.ID]*mappedRelationships),\n\t}\n\tout.Add(relationships...)\n\treturn &out\n}\n\n// Add adds all the given relationships to the index, without adding duplicates\nfunc (i *Index) Add(relationships ...artifact.Relationship) {\n\t// store appropriate indexes for stable ordering to minimize ID() calls\n\tfor _, r := range relationships {\n\t\t// prevent duplicates\n\t\tif i.Contains(r) {\n\t\t\tcontinue\n\t\t}\n\n\t\tfromID := r.From.ID()\n\t\ttoID := r.To.ID()\n\n\t\trelationship := &sortableRelationship{\n\t\t\tfrom:         fromID,\n\t\t\tto:           toID,\n\t\t\trelationship: r,\n\t\t}\n\n\t\t// add to all relationships\n\t\ti.all = append(i.all, relationship)\n\n\t\t// add from -> to mapping\n\t\tmapped := i.fromID[fromID]\n\t\tif mapped == nil {\n\t\t\tmapped = &mappedRelationships{}\n\t\t\ti.fromID[fromID] = mapped\n\t\t}\n\t\tmapped.add(toID, relationship)\n\n\t\t// add to -> from mapping\n\t\tmapped = i.toID[toID]\n\t\tif mapped == nil {\n\t\t\tmapped = &mappedRelationships{}\n\t\t\ti.toID[toID] = mapped\n\t\t}\n\t\tmapped.add(fromID, relationship)\n\t}\n}\n\nfunc (i *Index) Remove(id artifact.ID) {\n\tdelete(i.fromID, id)\n\tdelete(i.toID, id)\n\n\tfor idx := 0; idx < len(i.all); {\n\t\tif i.all[idx].from == id || i.all[idx].to == id {\n\t\t\ti.all = append(i.all[:idx], i.all[idx+1:]...)\n\t\t} else {\n\t\t\tidx++\n\t\t}\n\t}\n}\n\nfunc (i *Index) Replace(ogID artifact.ID, replacement artifact.Identifiable) {\n\tfor _, mapped := range fromMappedByID(i.fromID, ogID) {\n\t\t// the stale relationship(i.e. if there's an elder ID in either side) should be discarded\n\t\tif len(fromMappedByID(i.toID, mapped.relationship.To.ID())) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\ti.Add(artifact.Relationship{\n\t\t\tFrom: replacement,\n\t\t\tTo:   mapped.relationship.To,\n\t\t\tType: mapped.relationship.Type,\n\t\t})\n\t}\n\n\tfor _, mapped := range fromMappedByID(i.toID, ogID) {\n\t\t// same as the above\n\t\tif len(fromMappedByID(i.fromID, mapped.relationship.To.ID())) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\ti.Add(artifact.Relationship{\n\t\t\tFrom: mapped.relationship.From,\n\t\t\tTo:   replacement,\n\t\t\tType: mapped.relationship.Type,\n\t\t})\n\t}\n\n\ti.Remove(ogID)\n}\n\n// From returns all relationships from the given identifiable, with specified types\nfunc (i *Index) From(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {\n\treturn toSortedSlice(fromMapped(i.fromID, identifiable), types)\n}\n\n// To returns all relationships to the given identifiable, with specified types\nfunc (i *Index) To(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {\n\treturn toSortedSlice(fromMapped(i.toID, identifiable), types)\n}\n\n// References returns all relationships that reference to or from the given identifiable\nfunc (i *Index) References(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {\n\treturn toSortedSlice(append(fromMapped(i.fromID, identifiable), fromMapped(i.toID, identifiable)...), types)\n}\n\n// Coordinates returns all coordinates for the provided identifiable for provided relationship types\n// If no types are provided, all relationship types are considered.\nfunc (i *Index) Coordinates(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []file.Coordinates {\n\tvar coordinates []file.Coordinates\n\tfor _, relationship := range i.References(identifiable, types...) {\n\t\tcords := extractCoordinates(relationship)\n\t\tcoordinates = append(coordinates, cords...)\n\t}\n\treturn coordinates\n}\n\n// Contains indicates the relationship is present in this index\nfunc (i *Index) Contains(r artifact.Relationship) bool {\n\tif mapped := i.fromID[r.From.ID()]; mapped != nil {\n\t\tif ids := mapped.typeMap[r.Type]; ids != nil {\n\t\t\treturn ids[r.To.ID()] != nil\n\t\t}\n\t}\n\treturn false\n}\n\n// All returns a sorted set of relationships matching all types, or all relationships if no types specified\nfunc (i *Index) All(types ...artifact.RelationshipType) []artifact.Relationship {\n\treturn toSortedSlice(i.all, types)\n}\n\nfunc fromMapped(idMap map[artifact.ID]*mappedRelationships, identifiable artifact.Identifiable) []*sortableRelationship {\n\tif identifiable == nil {\n\t\treturn nil\n\t}\n\treturn fromMappedByID(idMap, identifiable.ID())\n}\n\nfunc fromMappedByID(idMap map[artifact.ID]*mappedRelationships, id artifact.ID) []*sortableRelationship {\n\tif idMap == nil {\n\t\treturn nil\n\t}\n\tmapped := idMap[id]\n\tif mapped == nil {\n\t\treturn nil\n\t}\n\treturn mapped.allRelated\n}\n\nfunc toSortedSlice(relationships []*sortableRelationship, types []artifact.RelationshipType) []artifact.Relationship {\n\t// always return sorted for SBOM stability\n\tslices.SortFunc(relationships, sortFunc)\n\tvar out []artifact.Relationship\n\tfor _, r := range relationships {\n\t\tif len(types) == 0 || slices.Contains(types, r.relationship.Type) {\n\t\t\tout = append(out, r.relationship)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc extractCoordinates(relationship artifact.Relationship) (results []file.Coordinates) {\n\tif coordinates, exists := relationship.From.(file.Coordinates); exists {\n\t\tresults = append(results, coordinates)\n\t}\n\n\tif coordinates, exists := relationship.To.(file.Coordinates); exists {\n\t\tresults = append(results, coordinates)\n\t}\n\n\treturn results\n}\n\ntype mappedRelationships struct {\n\ttypeMap    map[artifact.RelationshipType]map[artifact.ID]*sortableRelationship\n\tallRelated []*sortableRelationship\n}\n\nfunc (m *mappedRelationships) add(id artifact.ID, newRelationship *sortableRelationship) {\n\tm.allRelated = append(m.allRelated, newRelationship)\n\tif m.typeMap == nil {\n\t\tm.typeMap = map[artifact.RelationshipType]map[artifact.ID]*sortableRelationship{}\n\t}\n\ttypeMap := m.typeMap[newRelationship.relationship.Type]\n\tif typeMap == nil {\n\t\ttypeMap = map[artifact.ID]*sortableRelationship{}\n\t\tm.typeMap[newRelationship.relationship.Type] = typeMap\n\t}\n\ttypeMap[id] = newRelationship\n}\n\ntype sortableRelationship struct {\n\tfrom         artifact.ID\n\tto           artifact.ID\n\trelationship artifact.Relationship\n}\n\nfunc sortFunc(a, b *sortableRelationship) int {\n\tcmp := strings.Compare(string(a.relationship.Type), string(b.relationship.Type))\n\tif cmp != 0 {\n\t\treturn cmp\n\t}\n\tcmp = strings.Compare(string(a.from), string(b.from))\n\tif cmp != 0 {\n\t\treturn cmp\n\t}\n\treturn strings.Compare(string(a.to), string(b.to))\n}\n"
  },
  {
    "path": "internal/relationship/index_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_Index(t *testing.T) {\n\tp1 := pkg.Package{\n\t\tName: \"pkg-1\",\n\t}\n\tp2 := pkg.Package{\n\t\tName: \"pkg-2\",\n\t}\n\tp3 := pkg.Package{\n\t\tName: \"pkg-3\",\n\t}\n\tc1 := file.Coordinates{\n\t\tRealPath: \"/coords/1\",\n\t}\n\tc2 := file.Coordinates{\n\t\tRealPath: \"/coords/2\",\n\t}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3} {\n\t\tp.SetID()\n\t}\n\n\tr1 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p2,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p3,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr3 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr4 := artifact.Relationship{\n\t\tFrom: p2,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr5 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tdup := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tidx := NewIndex(r1, r2, r3, r4, r5, dup)\n\trequire.ElementsMatch(t, slice(r1, r2, r3, r4, r5), idx.All())\n\n\trequire.ElementsMatch(t, slice(r1, r4), idx.References(p2))\n\trequire.ElementsMatch(t, slice(r4), idx.References(p2, artifact.ContainsRelationship))\n\n\trequire.ElementsMatch(t, slice(r1), idx.To(p2))\n\trequire.ElementsMatch(t, []artifact.Relationship(nil), idx.To(p2, artifact.ContainsRelationship))\n\n\trequire.ElementsMatch(t, slice(r4), idx.From(p2))\n\trequire.ElementsMatch(t, slice(r4), idx.From(p2, artifact.ContainsRelationship))\n}\n\nfunc Test_sortOrder(t *testing.T) {\n\tr1 := artifact.Relationship{\n\t\tFrom: id(\"1\"),\n\t\tTo:   id(\"2\"),\n\t\tType: \"1\",\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: id(\"2\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"1\",\n\t}\n\tr3 := artifact.Relationship{\n\t\tFrom: id(\"3\"),\n\t\tTo:   id(\"4\"),\n\t\tType: \"1\",\n\t}\n\tr4 := artifact.Relationship{\n\t\tFrom: id(\"1\"),\n\t\tTo:   id(\"2\"),\n\t\tType: \"2\",\n\t}\n\tr5 := artifact.Relationship{\n\t\tFrom: id(\"2\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"2\",\n\t}\n\tdup := artifact.Relationship{\n\t\tFrom: id(\"2\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"2\",\n\t}\n\tr6 := artifact.Relationship{\n\t\tFrom: id(\"2\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"3\",\n\t}\n\n\tidx := NewIndex(r5, r2, r6, r4, r1, r3, dup)\n\trequire.EqualValues(t, slice(r1, r2, r3, r4, r5, r6), idx.All())\n\n\trequire.EqualValues(t, slice(r1, r4), idx.From(id(\"1\")))\n\n\trequire.EqualValues(t, slice(r2, r5, r6), idx.To(id(\"3\")))\n\n\trLast := artifact.Relationship{\n\t\tFrom: id(\"0\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"9999\",\n\t}\n\n\trFirst := artifact.Relationship{\n\t\tFrom: id(\"0\"),\n\t\tTo:   id(\"3\"),\n\t\tType: \"1\",\n\t}\n\n\trMid := artifact.Relationship{\n\t\tFrom: id(\"0\"),\n\t\tTo:   id(\"1\"),\n\t\tType: \"2\",\n\t}\n\n\tidx.Add(rLast, rFirst, rMid)\n\n\trequire.EqualValues(t, slice(rFirst, r1, r2, r3, rMid, r4, r5, r6, rLast), idx.All())\n\n\trequire.EqualValues(t, slice(rFirst, r2, r5, r6, rLast), idx.To(id(\"3\")))\n}\n\nfunc Test_Coordinates(t *testing.T) {\n\tp1 := pkg.Package{\n\t\tName: \"pkg-1\",\n\t}\n\tp2 := pkg.Package{\n\t\tName: \"pkg-2\",\n\t}\n\tp3 := pkg.Package{\n\t\tName: \"pkg-3\",\n\t}\n\tc1 := file.Coordinates{\n\t\tRealPath: \"/coords/1\",\n\t}\n\tc2 := file.Coordinates{\n\t\tRealPath: \"/coords/2\",\n\t}\n\tc3 := file.Coordinates{\n\t\tRealPath: \"/coords/3\",\n\t}\n\tc4 := file.Coordinates{\n\t\tRealPath: \"/coords/4\",\n\t}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3} {\n\t\tp.SetID()\n\t}\n\n\tr1 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p2,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p3,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr3 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr4 := artifact.Relationship{\n\t\tFrom: p2,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr5 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr6 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr7 := artifact.Relationship{\n\t\tFrom: c1,\n\t\tTo:   c3,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr8 := artifact.Relationship{\n\t\tFrom: c3,\n\t\tTo:   c4,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tidx := NewIndex(r1, r2, r3, r4, r5, r6, r7, r8)\n\n\tgot := idx.Coordinates(p1)\n\trequire.ElementsMatch(t, slice(c1), got)\n\n\tgot = idx.Coordinates(p3)\n\trequire.ElementsMatch(t, slice(c1, c2), got)\n}\n\ntype id string\n\nfunc (i id) ID() artifact.ID {\n\treturn artifact.ID(i)\n}\n\nfunc slice[T any](values ...T) []T {\n\treturn values\n}\n\nfunc TestRemove(t *testing.T) {\n\tp1 := pkg.Package{Name: \"pkg-1\"}\n\tp2 := pkg.Package{Name: \"pkg-2\"}\n\tp3 := pkg.Package{Name: \"pkg-3\"}\n\tc1 := file.Coordinates{RealPath: \"/coords/1\"}\n\tc2 := file.Coordinates{RealPath: \"/coords/2\"}\n\tc3 := file.Coordinates{RealPath: \"/coords/3\"}\n\tc4 := file.Coordinates{RealPath: \"/coords/4\"}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3} {\n\t\tp.SetID()\n\t}\n\n\tr1 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p2,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p3,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr3 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr4 := artifact.Relationship{\n\t\tFrom: p2,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr5 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr6 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr7 := artifact.Relationship{\n\t\tFrom: c1,\n\t\tTo:   c3,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr8 := artifact.Relationship{\n\t\tFrom: c3,\n\t\tTo:   c4,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tindex := NewIndex(r1, r2, r3, r4, r5, r6, r7, r8)\n\n\tassert.Equal(t, 8, len(index.All()))\n\n\t// removal of p1 should remove r1, r2, and r3\n\tindex.Remove(p1.ID())\n\tremaining := index.All()\n\n\tassert.Equal(t, 5, len(remaining))\n\tassert.NotContains(t, remaining, r1)\n\tassert.NotContains(t, remaining, r2)\n\tassert.NotContains(t, remaining, r3)\n\n\tassert.Empty(t, index.From(p1))\n\tassert.Empty(t, index.To(p1))\n\n\t// removal of c1 should remove r5 and r7\n\tindex.Remove(c1.ID())\n\tremaining = index.All()\n\n\t// r8 remains since c3->c4 should still exist\n\tassert.Equal(t, 3, len(remaining))\n\tassert.NotContains(t, remaining, r5)\n\tassert.NotContains(t, remaining, r7)\n\tassert.Contains(t, remaining, r8)\n\n\tassert.Empty(t, index.From(c1))\n\tassert.Empty(t, index.To(c1))\n\n\t// removal of c3 should remove r8\n\tindex.Remove(c3.ID())\n\tremaining = index.All()\n\n\tassert.Equal(t, 2, len(remaining))\n\tassert.Contains(t, remaining, r4)\n\tassert.Contains(t, remaining, r6)\n\n\tassert.Empty(t, index.From(c3))\n\tassert.Empty(t, index.To(c3))\n}\n\nfunc TestReplace(t *testing.T) {\n\tp1 := pkg.Package{Name: \"pkg-1\"}\n\tp2 := pkg.Package{Name: \"pkg-2\"}\n\tp3 := pkg.Package{Name: \"pkg-3\"}\n\tp4 := pkg.Package{Name: \"pkg-4\"}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3, &p4} {\n\t\tp.SetID()\n\t}\n\n\tr1 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   p2,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: p3,\n\t\tTo:   p1,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\tr3 := artifact.Relationship{\n\t\tFrom: p2,\n\t\tTo:   p3,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tindex := NewIndex(r1, r2, r3)\n\n\t// replace p1 with p4 in the relationships\n\tindex.Replace(p1.ID(), &p4)\n\n\texpectedRels := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: p4, // replaced\n\t\t\tTo:   p2,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: p3,\n\t\t\tTo:   p4, // replaced\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: p2,\n\t\t\tTo:   p3,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t},\n\t}\n\n\tcompareRelationships(t, expectedRels, index.All())\n}\n\nfunc compareRelationships(t testing.TB, expected, actual []artifact.Relationship) {\n\tassert.Equal(t, len(expected), len(actual), \"number of relationships should match\")\n\tfor _, e := range expected {\n\t\tfound := false\n\t\tfor _, a := range actual {\n\t\t\tif a.From.ID() == e.From.ID() && a.To.ID() == e.To.ID() && a.Type == e.Type {\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tassert.True(t, found, \"expected relationship not found: %+v\", e)\n\t}\n}\n\nfunc TestReplace_NoExistingRelations(t *testing.T) {\n\tp1 := pkg.Package{Name: \"pkg-1\"}\n\tp2 := pkg.Package{Name: \"pkg-2\"}\n\n\tp1.SetID()\n\tp2.SetID()\n\n\tindex := NewIndex()\n\n\tindex.Replace(p1.ID(), &p2)\n\n\tallRels := index.All()\n\tassert.Len(t, allRels, 0)\n}\n"
  },
  {
    "path": "internal/relationship/remove.go",
    "content": "package relationship\n\nimport \"github.com/anchore/syft/syft/artifact\"\n\n// TODO: put under test...\nfunc RemoveRelationshipsByID(relationships []artifact.Relationship, id artifact.ID) []artifact.Relationship {\n\tvar filtered []artifact.Relationship\n\tfor _, r := range relationships {\n\t\tif r.To.ID() != id && r.From.ID() != id {\n\t\t\tfiltered = append(filtered, r)\n\t\t}\n\t}\n\treturn filtered\n}\n"
  },
  {
    "path": "internal/relationship/sort.go",
    "content": "package relationship\n\nimport (\n\t\"sort\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// Sort takes a set of package-to-package relationships and sorts them in a stable order by name and version.\n// Note: this does not consider package-to-other, other-to-package, or other-to-other relationships.\n// TODO: ideally this should be replaced with a more type-agnostic sort function that resides in the artifact package.\nfunc Sort(rels []artifact.Relationship) {\n\tsort.SliceStable(rels, func(i, j int) bool {\n\t\treturn less(rels[i], rels[j])\n\t})\n}\n\nfunc less(i, j artifact.Relationship) bool {\n\tiFrom, ok1 := i.From.(pkg.Package)\n\tiTo, ok2 := i.To.(pkg.Package)\n\tjFrom, ok3 := j.From.(pkg.Package)\n\tjTo, ok4 := j.To.(pkg.Package)\n\n\tif !ok1 && !ok2 && !ok3 && !ok4 {\n\t\treturn false\n\t}\n\n\tif iFrom.Name != jFrom.Name {\n\t\treturn iFrom.Name < jFrom.Name\n\t}\n\tif iFrom.Version != jFrom.Version {\n\t\treturn iFrom.Version < jFrom.Version\n\t}\n\tif iTo.Name != jTo.Name {\n\t\treturn iTo.Name < jTo.Name\n\t}\n\tif iTo.Version != jTo.Version {\n\t\treturn iTo.Version < jTo.Version\n\t}\n\treturn i.Type < j.Type\n}\n"
  },
  {
    "path": "internal/relationship/to_source.go",
    "content": "package relationship\n\nimport (\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc ToSource(src artifact.Identifiable, c *pkg.Collection) []artifact.Relationship {\n\trelationships := make([]artifact.Relationship, 0) // Should we pre-allocate this by giving catalog a Len() method?\n\tfor p := range c.Enumerate() {\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: src,\n\t\t\tTo:   p,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t})\n\t}\n\n\treturn relationships\n}\n"
  },
  {
    "path": "internal/sbomsync/builder.go",
    "content": "package sbomsync\n\nimport (\n\t\"sync\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ interface {\n\tAccessor\n\tBuilder\n} = (*sbomBuilder)(nil) // integrity check\n\n// Builder provides a simple facade for simple additions to the SBOM\ntype Builder interface {\n\t// nodes\n\n\tAddPackages(...pkg.Package)\n\n\tDeletePackages(...artifact.ID)\n\n\t// edges\n\n\tAddRelationships(...artifact.Relationship)\n\n\t// other\n\n\tSetLinuxDistribution(linux.Release)\n}\n\n// Accessor allows for low-level access to the SBOM\ntype Accessor interface {\n\tWriteToSBOM(func(*sbom.SBOM))\n\tReadFromSBOM(func(*sbom.SBOM))\n}\n\ntype sbomBuilder struct {\n\tsbom    *sbom.SBOM\n\tlock    *sync.RWMutex\n\tonWrite []func(*sbom.SBOM)\n}\n\nfunc NewBuilder(s *sbom.SBOM, onWrite ...func(*sbom.SBOM)) Builder {\n\treturn &sbomBuilder{\n\t\tsbom:    s,\n\t\tlock:    &sync.RWMutex{},\n\t\tonWrite: onWrite,\n\t}\n}\n\nfunc (b sbomBuilder) onWriteEvent() {\n\tfor _, fn := range b.onWrite {\n\t\tfn(b.sbom)\n\t}\n}\n\nfunc (b sbomBuilder) WriteToSBOM(fn func(*sbom.SBOM)) {\n\tb.lock.Lock()\n\tdefer b.lock.Unlock()\n\n\tfn(b.sbom)\n\tb.onWriteEvent()\n}\n\nfunc (b sbomBuilder) ReadFromSBOM(fn func(*sbom.SBOM)) {\n\tb.lock.RLock()\n\tdefer b.lock.RUnlock()\n\n\tfn(b.sbom)\n}\n\nfunc (b sbomBuilder) AddPackages(p ...pkg.Package) {\n\tb.lock.Lock()\n\tdefer b.lock.Unlock()\n\n\tb.sbom.Artifacts.Packages.Add(p...)\n\tb.onWriteEvent()\n}\n\nfunc (b sbomBuilder) DeletePackages(ids ...artifact.ID) {\n\tb.lock.Lock()\n\tdefer b.lock.Unlock()\n\n\tdeleted := make(map[artifact.ID]struct{})\n\tfor _, id := range ids {\n\t\tb.sbom.Artifacts.Packages.Delete(id)\n\t\tdeleted[id] = struct{}{}\n\t}\n\n\t// remove any relationships that reference the deleted packages\n\tvar relationships []artifact.Relationship\n\tfor _, rel := range b.sbom.Relationships {\n\t\tif _, ok := deleted[rel.From.ID()]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := deleted[rel.To.ID()]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// only keep relationships that don't reference the deleted packages\n\t\trelationships = append(relationships, rel)\n\t}\n\n\tb.sbom.Relationships = relationships\n\tb.onWriteEvent()\n}\n\nfunc (b sbomBuilder) AddRelationships(relationship ...artifact.Relationship) {\n\tb.lock.Lock()\n\tdefer b.lock.Unlock()\n\n\tb.sbom.Relationships = append(b.sbom.Relationships, relationship...)\n\tb.onWriteEvent()\n}\n\nfunc (b sbomBuilder) SetLinuxDistribution(release linux.Release) {\n\tb.lock.Lock()\n\tdefer b.lock.Unlock()\n\n\tb.sbom.Artifacts.LinuxDistribution = &release\n\tb.onWriteEvent()\n}\n"
  },
  {
    "path": "internal/sbomsync/builder_test.go",
    "content": "package sbomsync\n\nimport (\n\t\"testing\"\n\n\t\"github.com/magiconair/properties/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestNewBuilder(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tsbom sbom.SBOM\n\t}{\n\t\t{\n\t\t\t\"TestNewBuilder with empty sbom\",\n\t\t\tsbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tbuilder := NewBuilder(&tt.sbom)\n\t\t\tbuilder.AddPackages(pkg.Package{})\n\t\t\taccessor := builder.(Accessor)\n\t\t\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\t\t\tpackageCount := s.Artifacts.Packages.PackageCount()\n\t\t\t\tassert.Equal(t, packageCount, 1, \"expected 1 package in sbom\")\n\t\t\t})\n\t\t})\n\t}\n}\n\nfunc Test_sbomBuilder_DeletePackages(t *testing.T) {\n\ttestPackage := pkg.Package{\n\t\tName:    \"test\",\n\t\tVersion: \"1.0.0\",\n\t\tType:    pkg.DebPkg,\n\t}\n\ttestPackage.SetID()\n\n\tkeepMe := pkg.Package{\n\t\tName:    \"keepMe\",\n\t\tVersion: \"1.0.0\",\n\t\tType:    pkg.DebPkg,\n\t}\n\n\tprexistingRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: testPackage,\n\t\t\tTo:   testPackage,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname string\n\t\tsbom sbom.SBOM\n\t}{\n\t\t{\n\t\t\t\"Test_sbomBuilder_DeletePackages deletes a given package\",\n\t\t\tsbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tbuilder := NewBuilder(&tt.sbom)\n\t\t\tbuilder.AddPackages(testPackage, keepMe)\n\t\t\taccessor := builder.(Accessor)\n\t\t\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\t\t\ts.Relationships = prexistingRelationships\n\t\t\t})\n\n\t\t\tbuilder.DeletePackages(testPackage.ID())\n\t\t\tnewAccess := builder.(Accessor)\n\t\t\tnewAccess.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\t\t\tpackageCount := s.Artifacts.Packages.PackageCount()\n\n\t\t\t\t// deleted target package\n\t\t\t\tassert.Equal(t, packageCount, 1, \"expected 1 packages in sbom\")\n\t\t\t\trelationshipCount := len(s.Relationships)\n\n\t\t\t\t// deleted relationships that reference the deleted package\n\t\t\t\tassert.Equal(t, relationshipCount, 0, \"expected 0 relationships in sbom\")\n\t\t\t})\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/set.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// Set represents a generic set type.\ntype Set[T comparable] map[T]struct{}\n\n// NewSet creates a new empty Set.\nfunc NewSet[T comparable](start ...T) Set[T] {\n\tret := make(Set[T])\n\tfor _, v := range start {\n\t\tret.Add(v)\n\t}\n\treturn ret\n}\n\n// Add adds elements to the set.\nfunc (s Set[T]) Add(elements ...T) {\n\tfor _, e := range elements {\n\t\ts[e] = struct{}{}\n\t}\n}\n\n// Remove removes an element from the set.\nfunc (s Set[T]) Remove(element T) {\n\tdelete(s, element)\n}\n\n// Contains checks if an element is in the set.\nfunc (s Set[T]) Contains(element T) bool {\n\t_, ok := s[element]\n\treturn ok\n}\n\n// ToSlice returns a sorted slice of elements in the set.\nfunc (s Set[T]) ToSlice() []T {\n\tret := make([]T, len(s))\n\tidx := 0\n\tfor v := range s {\n\t\tret[idx] = v\n\t\tidx++\n\t}\n\tsort.Slice(ret, func(i, j int) bool {\n\t\treturn fmt.Sprintf(\"%v\", ret[i]) < fmt.Sprintf(\"%v\", ret[j])\n\t})\n\treturn ret\n}\n\n// Equals checks if two sets are equal.\nfunc (s Set[T]) Equals(o Set[T]) bool {\n\tif len(s) != len(o) {\n\t\treturn false\n\t}\n\tfor k := range s {\n\t\tif !o.Contains(k) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Empty checks if the set is empty.\nfunc (s Set[T]) Empty() bool {\n\treturn len(s) == 0\n}\n"
  },
  {
    "path": "internal/set_test.go",
    "content": "package internal\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestNewSet(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tstart  []int\n\t\tresult Set[int]\n\t}{\n\t\t{\"empty set\", []int{}, NewSet[int]()},\n\t\t{\"non-empty set\", []int{1, 2, 3}, NewSet(1, 2, 3)},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.start...)\n\t\t\trequire.Equal(t, tt.result, s)\n\t\t})\n\t}\n}\n\nfunc TestAdd(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tinput  []int\n\t\tadd    []int\n\t\tresult Set[int]\n\t}{\n\t\t{\"add to empty set\", []int{}, []int{1, 2, 3}, NewSet(1, 2, 3)},\n\t\t{\"add to non-empty set\", []int{1}, []int{2, 3}, NewSet(1, 2, 3)},\n\t\t{\"add existing elements\", []int{1, 2}, []int{2, 3}, NewSet(1, 2, 3)},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.input...)\n\t\t\ts.Add(tt.add...)\n\t\t\tassert.Equal(t, tt.result, s)\n\t\t})\n\t}\n}\n\nfunc TestRemove(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tinput  []int\n\t\tremove int\n\t\tresult Set[int]\n\t}{\n\t\t{\"remove from non-empty set\", []int{1, 2, 3}, 2, NewSet(1, 3)},\n\t\t{\"remove non-existent element\", []int{1, 2}, 3, NewSet(1, 2)},\n\t\t{\"remove from single-element set\", []int{1}, 1, NewSet[int]()},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.input...)\n\t\t\ts.Remove(tt.remove)\n\t\t\tassert.Equal(t, tt.result, s)\n\t\t})\n\t}\n}\n\nfunc TestContains(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []int\n\t\tcontains int\n\t\tresult   bool\n\t}{\n\t\t{\"element in set\", []int{1, 2, 3}, 2, true},\n\t\t{\"element not in set\", []int{1, 2}, 3, false},\n\t\t{\"empty set\", []int{}, 1, false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.input...)\n\t\t\tassert.Equal(t, tt.result, s.Contains(tt.contains))\n\t\t})\n\t}\n}\n\nfunc TestToSlice(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tinput  []int\n\t\tresult []int\n\t}{\n\t\t{\"non-empty set\", []int{3, 1, 2}, []int{1, 2, 3}},\n\t\t{\"empty set\", []int{}, []int{}},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.input...)\n\t\t\tassert.Equal(t, tt.result, s.ToSlice())\n\t\t})\n\t}\n}\n\nfunc TestEquals(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tset1   []int\n\t\tset2   []int\n\t\tresult bool\n\t}{\n\t\t{\"equal sets\", []int{1, 2, 3}, []int{3, 2, 1}, true},\n\t\t{\"different sets\", []int{1, 2}, []int{2, 3}, false},\n\t\t{\"empty sets\", []int{}, []int{}, true},\n\t\t{\"one empty set\", []int{1, 2}, []int{}, false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts1 := NewSet(tt.set1...)\n\t\t\ts2 := NewSet(tt.set2...)\n\t\t\tassert.Equal(t, tt.result, s1.Equals(s2))\n\t\t})\n\t}\n}\n\nfunc TestEmpty(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tinput  []int\n\t\tresult bool\n\t}{\n\t\t{\"non-empty set\", []int{1}, false},\n\t\t{\"empty set\", []int{}, true},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewSet(tt.input...)\n\t\t\tassert.Equal(t, tt.result, s.Empty())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/sourcemetadata/completion_tester.go",
    "content": "package sourcemetadata\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\ntype CompletionTester struct {\n\tsaw    []any\n\tvalid  []any\n\tignore []any\n}\n\nfunc NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {\n\tt.Helper()\n\ttester := &CompletionTester{\n\t\tvalid:  AllTypes(),\n\t\tignore: ignore,\n\t}\n\tt.Cleanup(func() {\n\t\tt.Helper()\n\t\ttester.validate(t)\n\t})\n\treturn tester\n}\n\nfunc (tr *CompletionTester) Ignore(is ...any) {\n\ttr.ignore = append(tr.ignore, keepNonNil(is...)...)\n}\n\nfunc (tr *CompletionTester) Expect(is ...any) {\n\ttr.valid = append(tr.valid, keepNonNil(is...)...)\n}\n\nfunc (tr *CompletionTester) Tested(t testing.TB, m any) {\n\tt.Helper()\n\n\tif m == nil {\n\t\treturn\n\t}\n\tif len(tr.valid) == 0 {\n\t\tt.Fatal(\"no valid metadata types to test against\")\n\t}\n\tty := reflect.TypeOf(m)\n\n\tfor _, v := range tr.ignore {\n\t\tif reflect.TypeOf(v) == ty {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor _, v := range tr.valid {\n\t\tif reflect.TypeOf(v) == ty {\n\t\t\ttr.saw = append(tr.saw, m)\n\t\t\treturn\n\t\t}\n\t}\n\n\tt.Fatalf(\"tested metadata type is not valid: %s\", ty.Name())\n}\n\nfunc (tr *CompletionTester) validate(t testing.TB) {\n\tt.Helper()\n\n\tcount := make(map[reflect.Type]int)\n\tfor _, m := range tr.saw {\n\t\tcount[reflect.TypeOf(m)]++\n\t}\n\nvalidations:\n\tfor _, v := range tr.valid {\n\t\tty := reflect.TypeOf(v)\n\n\t\tfor _, ignore := range tr.ignore {\n\t\t\tif ty == reflect.TypeOf(ignore) {\n\t\t\t\t// skip ignored types\n\t\t\t\tcontinue validations\n\t\t\t}\n\t\t}\n\n\t\tif c, exists := count[ty]; c == 0 || !exists {\n\t\t\tt.Errorf(\"metadata type %s is not covered by a test\", ty.Name())\n\t\t}\n\t}\n}\n\nfunc keepNonNil(is ...any) []any {\n\tvar result []any\n\tfor _, i := range is {\n\t\tif i != nil {\n\t\t\tresult = append(result, i)\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "internal/sourcemetadata/discover_type_names.go",
    "content": "package sourcemetadata\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\nvar metadataExceptions = strset.New()\n\nfunc DiscoverTypeNames() ([]string, error) {\n\troot, err := repoRoot()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfiles, err := filepath.Glob(filepath.Join(root, \"syft/source/*.go\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn findMetadataDefinitionNames(files...)\n}\n\nfunc repoRoot() (string, error) {\n\troot, err := exec.Command(\"git\", \"rev-parse\", \"--show-toplevel\").Output()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to find repo root dir: %+v\", err)\n\t}\n\tabsRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get abs path to repo root: %w\", err)\n\t}\n\treturn absRepoRoot, nil\n}\n\nfunc findMetadataDefinitionNames(paths ...string) ([]string, error) {\n\tnames := strset.New()\n\tusedNames := strset.New()\n\tfor _, path := range paths {\n\t\tmetadataDefinitions, usedTypeNames, err := findMetadataDefinitionNamesInFile(path)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// useful for debugging...\n\t\t// fmt.Println(path)\n\t\t// fmt.Println(\"Defs:\", metadataDefinitions)\n\t\t// fmt.Println(\"Used Types:\", usedTypeNames)\n\t\t// fmt.Println()\n\n\t\tnames.Add(metadataDefinitions...)\n\t\tusedNames.Add(usedTypeNames...)\n\t}\n\n\t// any definition that is used within another struct should not be considered a top-level metadata definition\n\tnames.Remove(usedNames.List()...)\n\n\tstrNames := names.List()\n\tsort.Strings(strNames)\n\n\t// note: 3 is a point-in-time gut check. This number could be updated if new metadata definitions are added, but is not required.\n\t// it is really intended to catch any major issues with the generation process that would generate, say, 0 definitions.\n\tif len(strNames) < 3 {\n\t\tmsg := fmt.Sprintf(\"not enough metadata definitions found (discovered %d)\", len(strNames))\n\t\treturn nil, fmt.Errorf(\"%v\", msg)\n\t}\n\n\treturn strNames, nil\n}\n\nfunc findMetadataDefinitionNamesInFile(path string) ([]string, []string, error) {\n\t// set up the parser\n\tfs := token.NewFileSet()\n\tf, err := parser.ParseFile(fs, path, nil, parser.ParseComments)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar metadataDefinitions []string\n\tvar usedTypeNames []string\n\tfor _, decl := range f.Decls {\n\t\t// check if the declaration is a type declaration\n\t\tspec, ok := decl.(*ast.GenDecl)\n\t\tif !ok || spec.Tok != token.TYPE {\n\t\t\tcontinue\n\t\t}\n\n\t\t// loop over all types declared in the type declaration\n\t\tfor _, typ := range spec.Specs {\n\t\t\ttypeSpec, ok := typ.(*ast.TypeSpec)\n\t\t\tif !ok || typeSpec.Type == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tname := typeSpec.Name.String()\n\n\t\t\t// only look for exported types that end with \"Metadata\"\n\t\t\tif !isMetadataTypeCandidate(name) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tmetadataDefinitions = append(metadataDefinitions, name)\n\n\t\t\t// handle struct types (e.g., \"type FooMetadata struct {...}\")\n\t\t\tif structType, ok := typeSpec.Type.(*ast.StructType); ok {\n\t\t\t\tusedTypeNames = append(usedTypeNames, typeNamesUsedInStruct(structType)...)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// handle type definitions from another type (e.g., \"type FooMetadata BarMetadata\")\n\t\t\t// if the base type is NOT a metadata candidate, track it as used\n\t\t\t// (e.g., we want both ImageMetadata and OCIModelMetadata which is an alias to it)\n\t\t\tif ident, ok := typeSpec.Type.(*ast.Ident); ok {\n\t\t\t\tif !isMetadataTypeCandidate(ident.Name) {\n\t\t\t\t\tusedTypeNames = append(usedTypeNames, ident.Name)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn metadataDefinitions, usedTypeNames, nil\n}\n\nfunc typeNamesUsedInStruct(structType *ast.StructType) []string {\n\t// recursively find all type names used in the struct type\n\tvar names []string\n\tfor i := range structType.Fields.List {\n\t\t// capture names of all of the types (not field names)\n\t\tast.Inspect(structType.Fields.List[i].Type, func(n ast.Node) bool {\n\t\t\tident, ok := n.(*ast.Ident)\n\t\t\tif !ok {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// add the type name to the list\n\t\t\tnames = append(names, ident.Name)\n\n\t\t\t// continue inspecting\n\t\t\treturn true\n\t\t})\n\t}\n\n\treturn names\n}\n\nfunc isMetadataTypeCandidate(name string) bool {\n\treturn len(name) > 0 &&\n\t\tstrings.HasSuffix(name, \"Metadata\") &&\n\t\tunicode.IsUpper(rune(name[0])) && // must be exported\n\t\t!metadataExceptions.Has(name)\n}\n"
  },
  {
    "path": "internal/sourcemetadata/generate/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/dave/jennifer/jen\"\n\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n)\n\n// This program is invoked from syft/internal and generates sourcemetadata/generated.go\n\nconst (\n\tsrcImport = \"github.com/anchore/syft/syft/source\"\n\tpath      = \"sourcemetadata/generated.go\"\n)\n\nfunc main() {\n\ttypeNames, err := sourcemetadata.DiscoverTypeNames()\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to get all metadata type names: %w\", err))\n\t}\n\n\tfmt.Printf(\"updating source metadata type list with %+v types\\n\", len(typeNames))\n\n\tf := jen.NewFile(\"sourcemetadata\")\n\tf.HeaderComment(\"DO NOT EDIT: generated by internal/sourcemetadata/generate/main.go\")\n\tf.ImportName(srcImport, \"source\")\n\tf.Comment(\"AllTypes returns a list of all source metadata types that syft supports (that are represented in the source.Description.Metadata field).\")\n\n\tf.Func().Id(\"AllTypes\").Params().Index().Any().BlockFunc(func(g *jen.Group) {\n\t\tg.ReturnFunc(func(g *jen.Group) {\n\t\t\tg.Index().Any().ValuesFunc(func(g *jen.Group) {\n\t\t\t\tfor _, typeName := range typeNames {\n\t\t\t\t\tg.Qual(srcImport, typeName).Values()\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t})\n\n\trendered := fmt.Sprintf(\"%#v\", f)\n\n\tfh, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to open file: %w\", err))\n\t}\n\t_, err = fh.WriteString(rendered)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"unable to write file: %w\", err))\n\t}\n\tif err := fh.Close(); err != nil {\n\t\tpanic(fmt.Errorf(\"unable to close file: %w\", err))\n\t}\n}\n"
  },
  {
    "path": "internal/sourcemetadata/generated.go",
    "content": "// DO NOT EDIT: generated by internal/sourcemetadata/generate/main.go\n\npackage sourcemetadata\n\nimport \"github.com/anchore/syft/syft/source\"\n\n// AllTypes returns a list of all source metadata types that syft supports (that are represented in the source.Description.Metadata field).\nfunc AllTypes() []any {\n\treturn []any{source.DirectoryMetadata{}, source.FileMetadata{}, source.ImageMetadata{}, source.OCIModelMetadata{}, source.SnapMetadata{}}\n}\n"
  },
  {
    "path": "internal/sourcemetadata/names.go",
    "content": "package sourcemetadata\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar jsonNameFromType = map[reflect.Type][]string{\n\treflect.TypeOf(source.DirectoryMetadata{}): {\"directory\", \"dir\"},\n\treflect.TypeOf(source.FileMetadata{}):      {\"file\"},\n\treflect.TypeOf(source.ImageMetadata{}):     {\"image\"},\n\treflect.TypeOf(source.SnapMetadata{}):      {\"snap\"},\n\treflect.TypeOf(source.OCIModelMetadata{}):  {\"oci-model\"},\n}\n\nfunc AllTypeNames() []string {\n\tnames := make([]string, 0)\n\tfor _, t := range AllTypes() {\n\t\tnames = append(names, reflect.TypeOf(t).Name())\n\t}\n\treturn names\n}\n\nfunc JSONName(metadata any) string {\n\tif vs, exists := jsonNameFromType[reflect.TypeOf(metadata)]; exists {\n\t\treturn vs[0]\n\t}\n\treturn \"\"\n}\n\nfunc ReflectTypeFromJSONName(name string) reflect.Type {\n\tname = strings.ToLower(name)\n\tfor t, vs := range jsonNameFromType {\n\t\tfor _, v := range vs {\n\t\t\tif strings.ToLower(v) == name {\n\t\t\t\treturn t\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "internal/sourcemetadata/names_test.go",
    "content": "package sourcemetadata\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestAllNames(t *testing.T) {\n\t// note: this is a form of completion testing relative to the current code base.\n\n\texpected, err := DiscoverTypeNames()\n\trequire.NoError(t, err)\n\n\tactual := AllTypeNames()\n\n\t// ensure that the codebase (from ast analysis) reflects the latest code generated state\n\tif !assert.ElementsMatch(t, expected, actual) {\n\t\tt.Errorf(\"metadata types not fully represented: \\n%s\", cmp.Diff(expected, actual))\n\t\tt.Log(\"did you add a new source.*Metadata type without updating the JSON schema?\")\n\t\tt.Log(\"if so, you need to update the schema version and regenerate the JSON schema (make generate-json-schema)\")\n\t}\n\n\tfor _, ty := range AllTypes() {\n\t\tassert.NotEmpty(t, JSONName(ty), \"metadata type %q does not have a JSON name\", reflect.TypeOf(ty).Name())\n\t}\n}\n"
  },
  {
    "path": "internal/spdxlicense/generate/generate_license_list.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"text/template\"\n)\n\n// This program generates license_list.go.\nconst (\n\tsource = \"license_list.go\"\n\turl    = \"https://spdx.org/licenses/licenses.json\"\n)\n\nvar tmp = template.Must(template.New(\"\").Parse(`// Code generated by go generate; DO NOT EDIT.\n// This file was generated using data from {{ .URL }}\npackage spdxlicense\n\nconst Version = {{ printf \"%q\" .Version }}\n\nvar licenseIDs = map[string]string{\n{{- range $k, $v := .LicenseIDs }}\n\t{{ printf \"%q\" $k }}: {{ printf \"%q\" $v }},\n{{- end }}\n}\n\n// urlToLicense maps license URLs from the seeAlso field to license IDs\nvar urlToLicense = map[string]string{\n{{- range $url, $id := .URLToLicense }}\n\t{{ printf \"%q\" $url }}: {{ printf \"%q\" $id }},\n{{- end }}\n}\n`))\n\nvar versionMatch = regexp.MustCompile(`([0-9]+)\\.?([0-9]+)?\\.?([0-9]+)?\\.?`)\n\nfunc main() {\n\tif err := run(); err != nil {\n\t\tfmt.Println(err.Error())\n\t\tos.Exit(1)\n\t}\n}\n\nfunc run() error {\n\tresp, err := http.Get(url)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to get licenses list: %w\", err)\n\t}\n\tvar result LicenseList\n\tif err = json.NewDecoder(resp.Body).Decode(&result); err != nil {\n\t\treturn fmt.Errorf(\"unable to decode license list: %w\", err)\n\t}\n\tdefer func() {\n\t\tif err := resp.Body.Close(); err != nil {\n\t\t\tlog.Fatalf(\"unable to close body: %+v\", err)\n\t\t}\n\t}()\n\n\tf, err := os.Create(source)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create %q: %w\", source, err)\n\t}\n\tdefer func() {\n\t\tif err := f.Close(); err != nil {\n\t\t\tlog.Fatalf(\"unable to close %q: %+v\", source, err)\n\t\t}\n\t}()\n\n\tlicenseIDs := processSPDXLicense(result)\n\turlToLicense := buildURLToLicenseMap(result)\n\n\terr = tmp.Execute(f, struct {\n\t\tURL          string\n\t\tVersion      string\n\t\tLicenseIDs   map[string]string\n\t\tURLToLicense map[string]string\n\t}{\n\t\tURL:          url,\n\t\tVersion:      result.Version,\n\t\tLicenseIDs:   licenseIDs,\n\t\tURLToLicense: urlToLicense,\n\t})\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to generate template: %w\", err)\n\t}\n\treturn nil\n}\n\n// Parsing the provided SPDX license list necessitates a three pass approach.\n// The first pass is only related to what SPDX considers the truth. We use license info to\n// find replacements for deprecated licenses.\n// The second pass attempts to generate known short/long version listings for each key.\n// For info on some short name conventions see this document:\n// https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#license-short-name.\n// The short long listing generation attempts to build all license permutations for a given key.\n// The new keys are then also associated with their relative SPDX value. If a key has already been entered\n// we know to ignore it since it came from the first pass which is considered the SPDX source of truth.\n// We also sort the licenses for the second pass so that cases like `GPL-1` associate to `GPL-1.0` and not `GPL-1.1`.\n// The third pass is for overwriting deprecated licenses with replacements, for example GPL-2.0+ is deprecated\n// and now maps to GPL-2.0-or-later.\nfunc processSPDXLicense(result LicenseList) map[string]string {\n\t// The order of variations/permutations of a license ID matter.\n\t// The permutation code can generate the same value for two difference licenses,\n\t// for example: The licenses `ABC-1.0` and `ABC-1.1` can both map to `ABC1`,\n\t// we need to guarantee the order they are created to avoid mapping them incorrectly.\n\t// To do this we use a sorted list.\n\tsort.Slice(result.Licenses, func(i, j int) bool {\n\t\treturn result.Licenses[i].ID < result.Licenses[j].ID\n\t})\n\n\t// keys are simplified by removing dashes and lowercasing ID\n\t// this is so license declarations in the wild like: LGPL3 LGPL-3 lgpl3 and lgpl-3 can all match\n\tlicenseIDs := make(map[string]string)\n\tfor _, l := range result.Licenses {\n\t\t// licensePerms includes the cleanID in return slice\n\t\tcleanID := cleanLicenseID(l.ID)\n\t\tlicensePerms := buildLicenseIDPermutations(cleanID)\n\n\t\t// if license is deprecated, find its replacement and add to licenseIDs\n\t\tif l.Deprecated {\n\t\t\tidToMap := l.ID\n\t\t\treplacement := result.findReplacementLicense(l)\n\t\t\tif replacement != nil {\n\t\t\t\tidToMap = replacement.ID\n\t\t\t}\n\t\t\t// it's important to use the original licensePerms here so that the deprecated license\n\t\t\t// can now point to the new correct license\n\t\t\tfor _, id := range licensePerms {\n\t\t\t\tif _, exists := licenseIDs[id]; exists {\n\t\t\t\t\t// can be used to debug duplicate license permutations and confirm that examples like GPL1\n\t\t\t\t\t// do not point to GPL-1.1\n\t\t\t\t\t// log.Println(\"duplicate license list permutation found when mapping deprecated license to replacement\")\n\t\t\t\t\t// log.Printf(\"already have key: %q for SPDX ID: %q; attempted to map replacement ID: %q for deprecated ID: %q\\n\", id, value, replacement.ID, l.ID)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tlicenseIDs[id] = idToMap\n\t\t\t}\n\t\t}\n\n\t\t// if license is not deprecated, add all permutations to licenseIDs\n\t\tfor _, id := range licensePerms {\n\t\t\tif _, exists := licenseIDs[id]; exists {\n\t\t\t\t// log.Println(\"found duplicate license permutation key for non deprecated license\")\n\t\t\t\t// log.Printf(\"already have key: %q for SPDX ID: %q; tried to insert as SPDX ID:%q\\n\", id, value, l.ID)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlicenseIDs[id] = l.ID\n\t\t}\n\t}\n\n\treturn licenseIDs\n}\n\nfunc cleanLicenseID(id string) string {\n\tcleanID := strings.ToLower(id)\n\treturn strings.ReplaceAll(cleanID, \"-\", \"\")\n}\n\n// buildURLToLicenseMap creates a mapping from license URLs (from seeAlso fields) to license IDs.\n// URLs are stored without scheme (http:// or https://) so that a single lookup covers both.\nfunc buildURLToLicenseMap(result LicenseList) map[string]string {\n\turlMap := make(map[string]string)\n\n\tfor _, l := range result.Licenses {\n\t\t// Skip deprecated licenses\n\t\tif l.Deprecated {\n\t\t\t// Find replacement license if available\n\t\t\treplacement := result.findReplacementLicense(l)\n\t\t\tif replacement != nil {\n\t\t\t\t// Map deprecated license URLs to the replacement license\n\t\t\t\tfor _, url := range l.SeeAlso {\n\t\t\t\t\turlMap[stripScheme(url)] = replacement.ID\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Add URLs from non-deprecated licenses\n\t\tfor _, url := range l.SeeAlso {\n\t\t\turlMap[stripScheme(url)] = l.ID\n\t\t}\n\t}\n\n\treturn urlMap\n}\n\n// stripScheme removes http:// or https:// prefix from a URL.\n// This allows a single map entry to match both schemes.\nfunc stripScheme(url string) string {\n\turl = strings.TrimPrefix(url, \"https://\")\n\turl = strings.TrimPrefix(url, \"http://\")\n\treturn url\n}\n"
  },
  {
    "path": "internal/spdxlicense/generate/generate_license_list_test.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestReplaceDeprecatedLicenses(t *testing.T) {\n\tresults := LicenseList{\n\t\tLicenses: []License{\n\t\t\tlicense1,\n\t\t\tlicense2,\n\t\t\tlicense3,\n\t\t\tlicense4,\n\t\t\tlicense5,\n\t\t\tlicense6,\n\t\t},\n\t}\n\n\texpected := map[string]string{\n\t\t\"abc1\":            \"ABC-1.0-only\",\n\t\t\"abc1only\":        \"ABC-1.0-only\",\n\t\t\"abc1.0\":          \"ABC-1.0-only\",\n\t\t\"abc1.0.0\":        \"ABC-1.0-only\",\n\t\t\"abc1.0only\":      \"ABC-1.0-only\",\n\t\t\"abc1.0.0only\":    \"ABC-1.0-only\",\n\t\t\"abc1+\":           \"ABC-1.0-or-later\",\n\t\t\"abc1.0+\":         \"ABC-1.0-or-later\",\n\t\t\"abc1.0.0+\":       \"ABC-1.0-or-later\",\n\t\t\"abc1orlater\":     \"ABC-1.0-or-later\",\n\t\t\"abc1.0orlater\":   \"ABC-1.0-or-later\",\n\t\t\"abc1.0.0orlater\": \"ABC-1.0-or-later\",\n\t\t\"duh1\":            \"Duh-1.0\",\n\t\t\"duh1.0\":          \"Duh-1.0\",\n\t\t\"duh1.0.0\":        \"Duh-1.0\",\n\t\t\"duh1duh\":         \"Duh-1.0-duh\",\n\t\t\"duh1.0duh\":       \"Duh-1.0-duh\",\n\t\t\"duh1.0.0duh\":     \"Duh-1.0-duh\",\n\t}\n\n\tlicenses := processSPDXLicense(results)\n\tfor k, v := range licenses {\n\t\te := expected[k]\n\t\trequire.Equal(t, e, v, k)\n\t}\n}\n\nfunc Test_processSPDXLicense(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\twant    map[string]string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/licenses.json\",\n\t\t\twant: map[string]string{\n\t\t\t\t\"0bsd\":                                  \"0BSD\",\n\t\t\t\t\"aal\":                                   \"AAL\",\n\t\t\t\t\"abstyles\":                              \"Abstyles\",\n\t\t\t\t\"adacoredoc\":                            \"AdaCore-doc\",\n\t\t\t\t\"adobe2006\":                             \"Adobe-2006\",\n\t\t\t\t\"adobe2006.0\":                           \"Adobe-2006\",\n\t\t\t\t\"adobe2006.0.0\":                         \"Adobe-2006\",\n\t\t\t\t\"adobeglyph\":                            \"Adobe-Glyph\",\n\t\t\t\t\"adsl\":                                  \"ADSL\",\n\t\t\t\t\"afl1\":                                  \"AFL-1.1\",\n\t\t\t\t\"afl1.1\":                                \"AFL-1.1\",\n\t\t\t\t\"afl1.1.0\":                              \"AFL-1.1\",\n\t\t\t\t\"afl1.2\":                                \"AFL-1.2\",\n\t\t\t\t\"afl1.2.0\":                              \"AFL-1.2\",\n\t\t\t\t\"afl2\":                                  \"AFL-2.0\",\n\t\t\t\t\"afl2.0\":                                \"AFL-2.0\",\n\t\t\t\t\"afl2.0.0\":                              \"AFL-2.0\",\n\t\t\t\t\"afl2.1\":                                \"AFL-2.1\",\n\t\t\t\t\"afl2.1.0\":                              \"AFL-2.1\",\n\t\t\t\t\"afl3\":                                  \"AFL-3.0\",\n\t\t\t\t\"afl3.0\":                                \"AFL-3.0\",\n\t\t\t\t\"afl3.0.0\":                              \"AFL-3.0\",\n\t\t\t\t\"afmparse\":                              \"Afmparse\",\n\t\t\t\t\"agpl1\":                                 \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1+\":                                \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl1.0\":                               \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1.0+\":                              \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl1.0.0\":                             \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1.0.0+\":                            \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl1.0.0only\":                         \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1.0.0orlater\":                      \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl1.0only\":                           \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1.0orlater\":                        \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl1only\":                             \"AGPL-1.0-only\",\n\t\t\t\t\"agpl1orlater\":                          \"AGPL-1.0-or-later\",\n\t\t\t\t\"agpl3\":                                 \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3+\":                                \"AGPL-3.0-or-later\",\n\t\t\t\t\"agpl3.0\":                               \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3.0+\":                              \"AGPL-3.0-or-later\",\n\t\t\t\t\"agpl3.0.0\":                             \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3.0.0+\":                            \"AGPL-3.0-or-later\",\n\t\t\t\t\"agpl3.0.0only\":                         \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3.0.0orlater\":                      \"AGPL-3.0-or-later\",\n\t\t\t\t\"agpl3.0only\":                           \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3.0orlater\":                        \"AGPL-3.0-or-later\",\n\t\t\t\t\"agpl3only\":                             \"AGPL-3.0-only\",\n\t\t\t\t\"agpl3orlater\":                          \"AGPL-3.0-or-later\",\n\t\t\t\t\"aladdin\":                               \"Aladdin\",\n\t\t\t\t\"amdplpa\":                               \"AMDPLPA\",\n\t\t\t\t\"aml\":                                   \"AML\",\n\t\t\t\t\"ampas\":                                 \"AMPAS\",\n\t\t\t\t\"antlrpd\":                               \"ANTLR-PD\",\n\t\t\t\t\"antlrpdfallback\":                       \"ANTLR-PD-fallback\",\n\t\t\t\t\"apache1\":                               \"Apache-1.0\",\n\t\t\t\t\"apache1.0\":                             \"Apache-1.0\",\n\t\t\t\t\"apache1.0.0\":                           \"Apache-1.0\",\n\t\t\t\t\"apache1.1\":                             \"Apache-1.1\",\n\t\t\t\t\"apache1.1.0\":                           \"Apache-1.1\",\n\t\t\t\t\"apache2\":                               \"Apache-2.0\",\n\t\t\t\t\"apache2.0\":                             \"Apache-2.0\",\n\t\t\t\t\"apache2.0.0\":                           \"Apache-2.0\",\n\t\t\t\t\"apafml\":                                \"APAFML\",\n\t\t\t\t\"apl1\":                                  \"APL-1.0\",\n\t\t\t\t\"apl1.0\":                                \"APL-1.0\",\n\t\t\t\t\"apl1.0.0\":                              \"APL-1.0\",\n\t\t\t\t\"apps2.0.0p\":                            \"App-s2p\",\n\t\t\t\t\"apps2.0p\":                              \"App-s2p\",\n\t\t\t\t\"apps2p\":                                \"App-s2p\",\n\t\t\t\t\"apsl1\":                                 \"APSL-1.0\",\n\t\t\t\t\"apsl1.0\":                               \"APSL-1.0\",\n\t\t\t\t\"apsl1.0.0\":                             \"APSL-1.0\",\n\t\t\t\t\"apsl1.1\":                               \"APSL-1.1\",\n\t\t\t\t\"apsl1.1.0\":                             \"APSL-1.1\",\n\t\t\t\t\"apsl1.2\":                               \"APSL-1.2\",\n\t\t\t\t\"apsl1.2.0\":                             \"APSL-1.2\",\n\t\t\t\t\"apsl2\":                                 \"APSL-2.0\",\n\t\t\t\t\"apsl2.0\":                               \"APSL-2.0\",\n\t\t\t\t\"apsl2.0.0\":                             \"APSL-2.0\",\n\t\t\t\t\"arphic1999\":                            \"Arphic-1999\",\n\t\t\t\t\"arphic1999.0\":                          \"Arphic-1999\",\n\t\t\t\t\"arphic1999.0.0\":                        \"Arphic-1999\",\n\t\t\t\t\"artistic1\":                             \"Artistic-1.0\",\n\t\t\t\t\"artistic1.0\":                           \"Artistic-1.0\",\n\t\t\t\t\"artistic1.0.0\":                         \"Artistic-1.0\",\n\t\t\t\t\"artistic1.0.0cl8\":                      \"Artistic-1.0-cl8\",\n\t\t\t\t\"artistic1.0.0perl\":                     \"Artistic-1.0-Perl\",\n\t\t\t\t\"artistic1.0cl8\":                        \"Artistic-1.0-cl8\",\n\t\t\t\t\"artistic1.0perl\":                       \"Artistic-1.0-Perl\",\n\t\t\t\t\"artistic1cl8\":                          \"Artistic-1.0-cl8\",\n\t\t\t\t\"artistic1perl\":                         \"Artistic-1.0-Perl\",\n\t\t\t\t\"artistic2\":                             \"Artistic-2.0\",\n\t\t\t\t\"artistic2.0\":                           \"Artistic-2.0\",\n\t\t\t\t\"artistic2.0.0\":                         \"Artistic-2.0\",\n\t\t\t\t\"baekmuk\":                               \"Baekmuk\",\n\t\t\t\t\"bahyph\":                                \"Bahyph\",\n\t\t\t\t\"barr\":                                  \"Barr\",\n\t\t\t\t\"beerware\":                              \"Beerware\",\n\t\t\t\t\"bitstreamcharter\":                      \"Bitstream-Charter\",\n\t\t\t\t\"bitstreamvera\":                         \"Bitstream-Vera\",\n\t\t\t\t\"bittorrent1\":                           \"BitTorrent-1.0\",\n\t\t\t\t\"bittorrent1.0\":                         \"BitTorrent-1.0\",\n\t\t\t\t\"bittorrent1.0.0\":                       \"BitTorrent-1.0\",\n\t\t\t\t\"bittorrent1.1\":                         \"BitTorrent-1.1\",\n\t\t\t\t\"bittorrent1.1.0\":                       \"BitTorrent-1.1\",\n\t\t\t\t\"blessing\":                              \"blessing\",\n\t\t\t\t\"blueoak1\":                              \"BlueOak-1.0.0\",\n\t\t\t\t\"blueoak1.0\":                            \"BlueOak-1.0.0\",\n\t\t\t\t\"blueoak1.0.0\":                          \"BlueOak-1.0.0\",\n\t\t\t\t\"borceux\":                               \"Borceux\",\n\t\t\t\t\"briangladman3.0.0clause\":               \"Brian-Gladman-3-Clause\",\n\t\t\t\t\"briangladman3.0clause\":                 \"Brian-Gladman-3-Clause\",\n\t\t\t\t\"briangladman3clause\":                   \"Brian-Gladman-3-Clause\",\n\t\t\t\t\"bsd1.0.0clause\":                        \"BSD-1-Clause\",\n\t\t\t\t\"bsd1.0clause\":                          \"BSD-1-Clause\",\n\t\t\t\t\"bsd1clause\":                            \"BSD-1-Clause\",\n\t\t\t\t\"bsd2.0.0clause\":                        \"BSD-2-Clause\",\n\t\t\t\t\"bsd2.0.0clausefreebsd\":                 \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd2.0.0clausenetbsd\":                  \"BSD-2-Clause\",\n\t\t\t\t\"bsd2.0.0clausepatent\":                  \"BSD-2-Clause-Patent\",\n\t\t\t\t\"bsd2.0.0clauseviews\":                   \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd2.0clause\":                          \"BSD-2-Clause\",\n\t\t\t\t\"bsd2.0clausefreebsd\":                   \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd2.0clausenetbsd\":                    \"BSD-2-Clause\",\n\t\t\t\t\"bsd2.0clausepatent\":                    \"BSD-2-Clause-Patent\",\n\t\t\t\t\"bsd2.0clauseviews\":                     \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd2clause\":                            \"BSD-2-Clause\",\n\t\t\t\t\"bsd2clausefreebsd\":                     \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd2clausenetbsd\":                      \"BSD-2-Clause\",\n\t\t\t\t\"bsd2clausepatent\":                      \"BSD-2-Clause-Patent\",\n\t\t\t\t\"bsd2clauseviews\":                       \"BSD-2-Clause-Views\",\n\t\t\t\t\"bsd3.0.0clause\":                        \"BSD-3-Clause\",\n\t\t\t\t\"bsd3.0.0clauseattribution\":             \"BSD-3-Clause-Attribution\",\n\t\t\t\t\"bsd3.0.0clauseclear\":                   \"BSD-3-Clause-Clear\",\n\t\t\t\t\"bsd3.0.0clauselbnl\":                    \"BSD-3-Clause-LBNL\",\n\t\t\t\t\"bsd3.0.0clausemodification\":            \"BSD-3-Clause-Modification\",\n\t\t\t\t\"bsd3.0.0clausenomilitarylicense\":       \"BSD-3-Clause-No-Military-License\",\n\t\t\t\t\"bsd3.0.0clausenonuclearlicense\":        \"BSD-3-Clause-No-Nuclear-License\",\n\t\t\t\t\"bsd3.0.0clausenonuclearlicense2014\":    \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\t\t\t\"bsd3.0.0clausenonuclearwarranty\":       \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\t\t\t\"bsd3.0.0clauseopenmpi\":                 \"BSD-3-Clause-Open-MPI\",\n\t\t\t\t\"bsd3.0clause\":                          \"BSD-3-Clause\",\n\t\t\t\t\"bsd3.0clauseattribution\":               \"BSD-3-Clause-Attribution\",\n\t\t\t\t\"bsd3.0clauseclear\":                     \"BSD-3-Clause-Clear\",\n\t\t\t\t\"bsd3.0clauselbnl\":                      \"BSD-3-Clause-LBNL\",\n\t\t\t\t\"bsd3.0clausemodification\":              \"BSD-3-Clause-Modification\",\n\t\t\t\t\"bsd3.0clausenomilitarylicense\":         \"BSD-3-Clause-No-Military-License\",\n\t\t\t\t\"bsd3.0clausenonuclearlicense\":          \"BSD-3-Clause-No-Nuclear-License\",\n\t\t\t\t\"bsd3.0clausenonuclearlicense2014\":      \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\t\t\t\"bsd3.0clausenonuclearwarranty\":         \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\t\t\t\"bsd3.0clauseopenmpi\":                   \"BSD-3-Clause-Open-MPI\",\n\t\t\t\t\"bsd3clause\":                            \"BSD-3-Clause\",\n\t\t\t\t\"bsd3clauseattribution\":                 \"BSD-3-Clause-Attribution\",\n\t\t\t\t\"bsd3clauseclear\":                       \"BSD-3-Clause-Clear\",\n\t\t\t\t\"bsd3clauselbnl\":                        \"BSD-3-Clause-LBNL\",\n\t\t\t\t\"bsd3clausemodification\":                \"BSD-3-Clause-Modification\",\n\t\t\t\t\"bsd3clausenomilitarylicense\":           \"BSD-3-Clause-No-Military-License\",\n\t\t\t\t\"bsd3clausenonuclearlicense\":            \"BSD-3-Clause-No-Nuclear-License\",\n\t\t\t\t\"bsd3clausenonuclearlicense2014\":        \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\t\t\t\"bsd3clausenonuclearwarranty\":           \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\t\t\t\"bsd3clauseopenmpi\":                     \"BSD-3-Clause-Open-MPI\",\n\t\t\t\t\"bsd4.0.0clause\":                        \"BSD-4-Clause\",\n\t\t\t\t\"bsd4.0.0clauseshortened\":               \"BSD-4-Clause-Shortened\",\n\t\t\t\t\"bsd4.0.0clauseuc\":                      \"BSD-4-Clause-UC\",\n\t\t\t\t\"bsd4.0clause\":                          \"BSD-4-Clause\",\n\t\t\t\t\"bsd4.0clauseshortened\":                 \"BSD-4-Clause-Shortened\",\n\t\t\t\t\"bsd4.0clauseuc\":                        \"BSD-4-Clause-UC\",\n\t\t\t\t\"bsd4.3.0reno\":                          \"BSD-4.3RENO\",\n\t\t\t\t\"bsd4.3.0tahoe\":                         \"BSD-4.3TAHOE\",\n\t\t\t\t\"bsd4.3reno\":                            \"BSD-4.3RENO\",\n\t\t\t\t\"bsd4.3tahoe\":                           \"BSD-4.3TAHOE\",\n\t\t\t\t\"bsd4clause\":                            \"BSD-4-Clause\",\n\t\t\t\t\"bsd4clauseshortened\":                   \"BSD-4-Clause-Shortened\",\n\t\t\t\t\"bsd4clauseuc\":                          \"BSD-4-Clause-UC\",\n\t\t\t\t\"bsd4reno\":                              \"BSD-4.3RENO\",\n\t\t\t\t\"bsd4tahoe\":                             \"BSD-4.3TAHOE\",\n\t\t\t\t\"bsdadvertisingacknowledgement\":         \"BSD-Advertising-Acknowledgement\",\n\t\t\t\t\"bsdattributionhpnddisclaimer\":          \"BSD-Attribution-HPND-disclaimer\",\n\t\t\t\t\"bsdprotection\":                         \"BSD-Protection\",\n\t\t\t\t\"bsdsourcecode\":                         \"BSD-Source-Code\",\n\t\t\t\t\"bsl1\":                                  \"BSL-1.0\",\n\t\t\t\t\"bsl1.0\":                                \"BSL-1.0\",\n\t\t\t\t\"bsl1.0.0\":                              \"BSL-1.0\",\n\t\t\t\t\"busl1\":                                 \"BUSL-1.1\",\n\t\t\t\t\"busl1.1\":                               \"BUSL-1.1\",\n\t\t\t\t\"busl1.1.0\":                             \"BUSL-1.1\",\n\t\t\t\t\"bzip21\":                                \"bzip2-1.0.6\",\n\t\t\t\t\"bzip21.0\":                              \"bzip2-1.0.6\",\n\t\t\t\t\"bzip21.0.5\":                            \"bzip2-1.0.6\",\n\t\t\t\t\"bzip21.0.6\":                            \"bzip2-1.0.6\",\n\t\t\t\t\"cal1\":                                  \"CAL-1.0\",\n\t\t\t\t\"cal1.0\":                                \"CAL-1.0\",\n\t\t\t\t\"cal1.0.0\":                              \"CAL-1.0\",\n\t\t\t\t\"cal1.0.0combinedworkexception\":         \"CAL-1.0-Combined-Work-Exception\",\n\t\t\t\t\"cal1.0combinedworkexception\":           \"CAL-1.0-Combined-Work-Exception\",\n\t\t\t\t\"cal1combinedworkexception\":             \"CAL-1.0-Combined-Work-Exception\",\n\t\t\t\t\"caldera\":                               \"Caldera\",\n\t\t\t\t\"catosl1\":                               \"CATOSL-1.1\",\n\t\t\t\t\"catosl1.1\":                             \"CATOSL-1.1\",\n\t\t\t\t\"catosl1.1.0\":                           \"CATOSL-1.1\",\n\t\t\t\t\"cc01\":                                  \"CC0-1.0\",\n\t\t\t\t\"cc01.0\":                                \"CC0-1.0\",\n\t\t\t\t\"cc01.0.0\":                              \"CC0-1.0\",\n\t\t\t\t\"ccby1\":                                 \"CC-BY-1.0\",\n\t\t\t\t\"ccby1.0\":                               \"CC-BY-1.0\",\n\t\t\t\t\"ccby1.0.0\":                             \"CC-BY-1.0\",\n\t\t\t\t\"ccby2\":                                 \"CC-BY-2.0\",\n\t\t\t\t\"ccby2.0\":                               \"CC-BY-2.0\",\n\t\t\t\t\"ccby2.0.0\":                             \"CC-BY-2.0\",\n\t\t\t\t\"ccby2.5\":                               \"CC-BY-2.5\",\n\t\t\t\t\"ccby2.5.0\":                             \"CC-BY-2.5\",\n\t\t\t\t\"ccby2.5.0au\":                           \"CC-BY-2.5-AU\",\n\t\t\t\t\"ccby2.5au\":                             \"CC-BY-2.5-AU\",\n\t\t\t\t\"ccby2au\":                               \"CC-BY-2.5-AU\",\n\t\t\t\t\"ccby3\":                                 \"CC-BY-3.0\",\n\t\t\t\t\"ccby3.0\":                               \"CC-BY-3.0\",\n\t\t\t\t\"ccby3.0.0\":                             \"CC-BY-3.0\",\n\t\t\t\t\"ccby3.0.0at\":                           \"CC-BY-3.0-AT\",\n\t\t\t\t\"ccby3.0.0de\":                           \"CC-BY-3.0-DE\",\n\t\t\t\t\"ccby3.0.0igo\":                          \"CC-BY-3.0-IGO\",\n\t\t\t\t\"ccby3.0.0nl\":                           \"CC-BY-3.0-NL\",\n\t\t\t\t\"ccby3.0.0us\":                           \"CC-BY-3.0-US\",\n\t\t\t\t\"ccby3.0at\":                             \"CC-BY-3.0-AT\",\n\t\t\t\t\"ccby3.0de\":                             \"CC-BY-3.0-DE\",\n\t\t\t\t\"ccby3.0igo\":                            \"CC-BY-3.0-IGO\",\n\t\t\t\t\"ccby3.0nl\":                             \"CC-BY-3.0-NL\",\n\t\t\t\t\"ccby3.0us\":                             \"CC-BY-3.0-US\",\n\t\t\t\t\"ccby3at\":                               \"CC-BY-3.0-AT\",\n\t\t\t\t\"ccby3de\":                               \"CC-BY-3.0-DE\",\n\t\t\t\t\"ccby3igo\":                              \"CC-BY-3.0-IGO\",\n\t\t\t\t\"ccby3nl\":                               \"CC-BY-3.0-NL\",\n\t\t\t\t\"ccby3us\":                               \"CC-BY-3.0-US\",\n\t\t\t\t\"ccby4\":                                 \"CC-BY-4.0\",\n\t\t\t\t\"ccby4.0\":                               \"CC-BY-4.0\",\n\t\t\t\t\"ccby4.0.0\":                             \"CC-BY-4.0\",\n\t\t\t\t\"ccbync1\":                               \"CC-BY-NC-1.0\",\n\t\t\t\t\"ccbync1.0\":                             \"CC-BY-NC-1.0\",\n\t\t\t\t\"ccbync1.0.0\":                           \"CC-BY-NC-1.0\",\n\t\t\t\t\"ccbync2\":                               \"CC-BY-NC-2.0\",\n\t\t\t\t\"ccbync2.0\":                             \"CC-BY-NC-2.0\",\n\t\t\t\t\"ccbync2.0.0\":                           \"CC-BY-NC-2.0\",\n\t\t\t\t\"ccbync2.5\":                             \"CC-BY-NC-2.5\",\n\t\t\t\t\"ccbync2.5.0\":                           \"CC-BY-NC-2.5\",\n\t\t\t\t\"ccbync3\":                               \"CC-BY-NC-3.0\",\n\t\t\t\t\"ccbync3.0\":                             \"CC-BY-NC-3.0\",\n\t\t\t\t\"ccbync3.0.0\":                           \"CC-BY-NC-3.0\",\n\t\t\t\t\"ccbync3.0.0de\":                         \"CC-BY-NC-3.0-DE\",\n\t\t\t\t\"ccbync3.0de\":                           \"CC-BY-NC-3.0-DE\",\n\t\t\t\t\"ccbync3de\":                             \"CC-BY-NC-3.0-DE\",\n\t\t\t\t\"ccbync4\":                               \"CC-BY-NC-4.0\",\n\t\t\t\t\"ccbync4.0\":                             \"CC-BY-NC-4.0\",\n\t\t\t\t\"ccbync4.0.0\":                           \"CC-BY-NC-4.0\",\n\t\t\t\t\"ccbyncnd1\":                             \"CC-BY-NC-ND-1.0\",\n\t\t\t\t\"ccbyncnd1.0\":                           \"CC-BY-NC-ND-1.0\",\n\t\t\t\t\"ccbyncnd1.0.0\":                         \"CC-BY-NC-ND-1.0\",\n\t\t\t\t\"ccbyncnd2\":                             \"CC-BY-NC-ND-2.0\",\n\t\t\t\t\"ccbyncnd2.0\":                           \"CC-BY-NC-ND-2.0\",\n\t\t\t\t\"ccbyncnd2.0.0\":                         \"CC-BY-NC-ND-2.0\",\n\t\t\t\t\"ccbyncnd2.5\":                           \"CC-BY-NC-ND-2.5\",\n\t\t\t\t\"ccbyncnd2.5.0\":                         \"CC-BY-NC-ND-2.5\",\n\t\t\t\t\"ccbyncnd3\":                             \"CC-BY-NC-ND-3.0\",\n\t\t\t\t\"ccbyncnd3.0\":                           \"CC-BY-NC-ND-3.0\",\n\t\t\t\t\"ccbyncnd3.0.0\":                         \"CC-BY-NC-ND-3.0\",\n\t\t\t\t\"ccbyncnd3.0.0de\":                       \"CC-BY-NC-ND-3.0-DE\",\n\t\t\t\t\"ccbyncnd3.0.0igo\":                      \"CC-BY-NC-ND-3.0-IGO\",\n\t\t\t\t\"ccbyncnd3.0de\":                         \"CC-BY-NC-ND-3.0-DE\",\n\t\t\t\t\"ccbyncnd3.0igo\":                        \"CC-BY-NC-ND-3.0-IGO\",\n\t\t\t\t\"ccbyncnd3de\":                           \"CC-BY-NC-ND-3.0-DE\",\n\t\t\t\t\"ccbyncnd3igo\":                          \"CC-BY-NC-ND-3.0-IGO\",\n\t\t\t\t\"ccbyncnd4\":                             \"CC-BY-NC-ND-4.0\",\n\t\t\t\t\"ccbyncnd4.0\":                           \"CC-BY-NC-ND-4.0\",\n\t\t\t\t\"ccbyncnd4.0.0\":                         \"CC-BY-NC-ND-4.0\",\n\t\t\t\t\"ccbyncsa1\":                             \"CC-BY-NC-SA-1.0\",\n\t\t\t\t\"ccbyncsa1.0\":                           \"CC-BY-NC-SA-1.0\",\n\t\t\t\t\"ccbyncsa1.0.0\":                         \"CC-BY-NC-SA-1.0\",\n\t\t\t\t\"ccbyncsa2\":                             \"CC-BY-NC-SA-2.0\",\n\t\t\t\t\"ccbyncsa2.0\":                           \"CC-BY-NC-SA-2.0\",\n\t\t\t\t\"ccbyncsa2.0.0\":                         \"CC-BY-NC-SA-2.0\",\n\t\t\t\t\"ccbyncsa2.0.0de\":                       \"CC-BY-NC-SA-2.0-DE\",\n\t\t\t\t\"ccbyncsa2.0.0fr\":                       \"CC-BY-NC-SA-2.0-FR\",\n\t\t\t\t\"ccbyncsa2.0.0uk\":                       \"CC-BY-NC-SA-2.0-UK\",\n\t\t\t\t\"ccbyncsa2.0de\":                         \"CC-BY-NC-SA-2.0-DE\",\n\t\t\t\t\"ccbyncsa2.0fr\":                         \"CC-BY-NC-SA-2.0-FR\",\n\t\t\t\t\"ccbyncsa2.0uk\":                         \"CC-BY-NC-SA-2.0-UK\",\n\t\t\t\t\"ccbyncsa2.5\":                           \"CC-BY-NC-SA-2.5\",\n\t\t\t\t\"ccbyncsa2.5.0\":                         \"CC-BY-NC-SA-2.5\",\n\t\t\t\t\"ccbyncsa2de\":                           \"CC-BY-NC-SA-2.0-DE\",\n\t\t\t\t\"ccbyncsa2fr\":                           \"CC-BY-NC-SA-2.0-FR\",\n\t\t\t\t\"ccbyncsa2uk\":                           \"CC-BY-NC-SA-2.0-UK\",\n\t\t\t\t\"ccbyncsa3\":                             \"CC-BY-NC-SA-3.0\",\n\t\t\t\t\"ccbyncsa3.0\":                           \"CC-BY-NC-SA-3.0\",\n\t\t\t\t\"ccbyncsa3.0.0\":                         \"CC-BY-NC-SA-3.0\",\n\t\t\t\t\"ccbyncsa3.0.0de\":                       \"CC-BY-NC-SA-3.0-DE\",\n\t\t\t\t\"ccbyncsa3.0.0igo\":                      \"CC-BY-NC-SA-3.0-IGO\",\n\t\t\t\t\"ccbyncsa3.0de\":                         \"CC-BY-NC-SA-3.0-DE\",\n\t\t\t\t\"ccbyncsa3.0igo\":                        \"CC-BY-NC-SA-3.0-IGO\",\n\t\t\t\t\"ccbyncsa3de\":                           \"CC-BY-NC-SA-3.0-DE\",\n\t\t\t\t\"ccbyncsa3igo\":                          \"CC-BY-NC-SA-3.0-IGO\",\n\t\t\t\t\"ccbyncsa4\":                             \"CC-BY-NC-SA-4.0\",\n\t\t\t\t\"ccbyncsa4.0\":                           \"CC-BY-NC-SA-4.0\",\n\t\t\t\t\"ccbyncsa4.0.0\":                         \"CC-BY-NC-SA-4.0\",\n\t\t\t\t\"ccbynd1\":                               \"CC-BY-ND-1.0\",\n\t\t\t\t\"ccbynd1.0\":                             \"CC-BY-ND-1.0\",\n\t\t\t\t\"ccbynd1.0.0\":                           \"CC-BY-ND-1.0\",\n\t\t\t\t\"ccbynd2\":                               \"CC-BY-ND-2.0\",\n\t\t\t\t\"ccbynd2.0\":                             \"CC-BY-ND-2.0\",\n\t\t\t\t\"ccbynd2.0.0\":                           \"CC-BY-ND-2.0\",\n\t\t\t\t\"ccbynd2.5\":                             \"CC-BY-ND-2.5\",\n\t\t\t\t\"ccbynd2.5.0\":                           \"CC-BY-ND-2.5\",\n\t\t\t\t\"ccbynd3\":                               \"CC-BY-ND-3.0\",\n\t\t\t\t\"ccbynd3.0\":                             \"CC-BY-ND-3.0\",\n\t\t\t\t\"ccbynd3.0.0\":                           \"CC-BY-ND-3.0\",\n\t\t\t\t\"ccbynd3.0.0de\":                         \"CC-BY-ND-3.0-DE\",\n\t\t\t\t\"ccbynd3.0de\":                           \"CC-BY-ND-3.0-DE\",\n\t\t\t\t\"ccbynd3de\":                             \"CC-BY-ND-3.0-DE\",\n\t\t\t\t\"ccbynd4\":                               \"CC-BY-ND-4.0\",\n\t\t\t\t\"ccbynd4.0\":                             \"CC-BY-ND-4.0\",\n\t\t\t\t\"ccbynd4.0.0\":                           \"CC-BY-ND-4.0\",\n\t\t\t\t\"ccbysa1\":                               \"CC-BY-SA-1.0\",\n\t\t\t\t\"ccbysa1.0\":                             \"CC-BY-SA-1.0\",\n\t\t\t\t\"ccbysa1.0.0\":                           \"CC-BY-SA-1.0\",\n\t\t\t\t\"ccbysa2\":                               \"CC-BY-SA-2.0\",\n\t\t\t\t\"ccbysa2.0\":                             \"CC-BY-SA-2.0\",\n\t\t\t\t\"ccbysa2.0.0\":                           \"CC-BY-SA-2.0\",\n\t\t\t\t\"ccbysa2.0.0uk\":                         \"CC-BY-SA-2.0-UK\",\n\t\t\t\t\"ccbysa2.0uk\":                           \"CC-BY-SA-2.0-UK\",\n\t\t\t\t\"ccbysa2.1.0jp\":                         \"CC-BY-SA-2.1-JP\",\n\t\t\t\t\"ccbysa2.1jp\":                           \"CC-BY-SA-2.1-JP\",\n\t\t\t\t\"ccbysa2.5\":                             \"CC-BY-SA-2.5\",\n\t\t\t\t\"ccbysa2.5.0\":                           \"CC-BY-SA-2.5\",\n\t\t\t\t\"ccbysa2jp\":                             \"CC-BY-SA-2.1-JP\",\n\t\t\t\t\"ccbysa2uk\":                             \"CC-BY-SA-2.0-UK\",\n\t\t\t\t\"ccbysa3\":                               \"CC-BY-SA-3.0\",\n\t\t\t\t\"ccbysa3.0\":                             \"CC-BY-SA-3.0\",\n\t\t\t\t\"ccbysa3.0.0\":                           \"CC-BY-SA-3.0\",\n\t\t\t\t\"ccbysa3.0.0at\":                         \"CC-BY-SA-3.0-AT\",\n\t\t\t\t\"ccbysa3.0.0de\":                         \"CC-BY-SA-3.0-DE\",\n\t\t\t\t\"ccbysa3.0at\":                           \"CC-BY-SA-3.0-AT\",\n\t\t\t\t\"ccbysa3.0de\":                           \"CC-BY-SA-3.0-DE\",\n\t\t\t\t\"ccbysa3at\":                             \"CC-BY-SA-3.0-AT\",\n\t\t\t\t\"ccbysa3de\":                             \"CC-BY-SA-3.0-DE\",\n\t\t\t\t\"ccbysa4\":                               \"CC-BY-SA-4.0\",\n\t\t\t\t\"ccbysa4.0\":                             \"CC-BY-SA-4.0\",\n\t\t\t\t\"ccbysa4.0.0\":                           \"CC-BY-SA-4.0\",\n\t\t\t\t\"ccpddc\":                                \"CC-PDDC\",\n\t\t\t\t\"cddl1\":                                 \"CDDL-1.0\",\n\t\t\t\t\"cddl1.0\":                               \"CDDL-1.0\",\n\t\t\t\t\"cddl1.0.0\":                             \"CDDL-1.0\",\n\t\t\t\t\"cddl1.1\":                               \"CDDL-1.1\",\n\t\t\t\t\"cddl1.1.0\":                             \"CDDL-1.1\",\n\t\t\t\t\"cdl1\":                                  \"CDL-1.0\",\n\t\t\t\t\"cdl1.0\":                                \"CDL-1.0\",\n\t\t\t\t\"cdl1.0.0\":                              \"CDL-1.0\",\n\t\t\t\t\"cdlapermissive1\":                       \"CDLA-Permissive-1.0\",\n\t\t\t\t\"cdlapermissive1.0\":                     \"CDLA-Permissive-1.0\",\n\t\t\t\t\"cdlapermissive1.0.0\":                   \"CDLA-Permissive-1.0\",\n\t\t\t\t\"cdlapermissive2\":                       \"CDLA-Permissive-2.0\",\n\t\t\t\t\"cdlapermissive2.0\":                     \"CDLA-Permissive-2.0\",\n\t\t\t\t\"cdlapermissive2.0.0\":                   \"CDLA-Permissive-2.0\",\n\t\t\t\t\"cdlasharing1\":                          \"CDLA-Sharing-1.0\",\n\t\t\t\t\"cdlasharing1.0\":                        \"CDLA-Sharing-1.0\",\n\t\t\t\t\"cdlasharing1.0.0\":                      \"CDLA-Sharing-1.0\",\n\t\t\t\t\"cecill1\":                               \"CECILL-1.0\",\n\t\t\t\t\"cecill1.0\":                             \"CECILL-1.0\",\n\t\t\t\t\"cecill1.0.0\":                           \"CECILL-1.0\",\n\t\t\t\t\"cecill1.1\":                             \"CECILL-1.1\",\n\t\t\t\t\"cecill1.1.0\":                           \"CECILL-1.1\",\n\t\t\t\t\"cecill2\":                               \"CECILL-2.0\",\n\t\t\t\t\"cecill2.0\":                             \"CECILL-2.0\",\n\t\t\t\t\"cecill2.0.0\":                           \"CECILL-2.0\",\n\t\t\t\t\"cecill2.1\":                             \"CECILL-2.1\",\n\t\t\t\t\"cecill2.1.0\":                           \"CECILL-2.1\",\n\t\t\t\t\"cecillb\":                               \"CECILL-B\",\n\t\t\t\t\"cecillc\":                               \"CECILL-C\",\n\t\t\t\t\"cernohl1\":                              \"CERN-OHL-1.1\",\n\t\t\t\t\"cernohl1.1\":                            \"CERN-OHL-1.1\",\n\t\t\t\t\"cernohl1.1.0\":                          \"CERN-OHL-1.1\",\n\t\t\t\t\"cernohl1.2\":                            \"CERN-OHL-1.2\",\n\t\t\t\t\"cernohl1.2.0\":                          \"CERN-OHL-1.2\",\n\t\t\t\t\"cernohlp2\":                             \"CERN-OHL-P-2.0\",\n\t\t\t\t\"cernohlp2.0\":                           \"CERN-OHL-P-2.0\",\n\t\t\t\t\"cernohlp2.0.0\":                         \"CERN-OHL-P-2.0\",\n\t\t\t\t\"cernohls2\":                             \"CERN-OHL-S-2.0\",\n\t\t\t\t\"cernohls2.0\":                           \"CERN-OHL-S-2.0\",\n\t\t\t\t\"cernohls2.0.0\":                         \"CERN-OHL-S-2.0\",\n\t\t\t\t\"cernohlw2\":                             \"CERN-OHL-W-2.0\",\n\t\t\t\t\"cernohlw2.0\":                           \"CERN-OHL-W-2.0\",\n\t\t\t\t\"cernohlw2.0.0\":                         \"CERN-OHL-W-2.0\",\n\t\t\t\t\"cfitsio\":                               \"CFITSIO\",\n\t\t\t\t\"checkmk\":                               \"checkmk\",\n\t\t\t\t\"clartistic\":                            \"ClArtistic\",\n\t\t\t\t\"clips\":                                 \"Clips\",\n\t\t\t\t\"cmumach\":                               \"CMU-Mach\",\n\t\t\t\t\"cnrijython\":                            \"CNRI-Jython\",\n\t\t\t\t\"cnripython\":                            \"CNRI-Python\",\n\t\t\t\t\"cnripythongplcompatible\":               \"CNRI-Python-GPL-Compatible\",\n\t\t\t\t\"coil1\":                                 \"COIL-1.0\",\n\t\t\t\t\"coil1.0\":                               \"COIL-1.0\",\n\t\t\t\t\"coil1.0.0\":                             \"COIL-1.0\",\n\t\t\t\t\"communityspec1\":                        \"Community-Spec-1.0\",\n\t\t\t\t\"communityspec1.0\":                      \"Community-Spec-1.0\",\n\t\t\t\t\"communityspec1.0.0\":                    \"Community-Spec-1.0\",\n\t\t\t\t\"condor1\":                               \"Condor-1.1\",\n\t\t\t\t\"condor1.1\":                             \"Condor-1.1\",\n\t\t\t\t\"condor1.1.0\":                           \"Condor-1.1\",\n\t\t\t\t\"copyleftnext0.3\":                       \"copyleft-next-0.3.0\",\n\t\t\t\t\"copyleftnext0.3.0\":                     \"copyleft-next-0.3.0\",\n\t\t\t\t\"copyleftnext0.3.1\":                     \"copyleft-next-0.3.1\",\n\t\t\t\t\"cornelllosslessjpeg\":                   \"Cornell-Lossless-JPEG\",\n\t\t\t\t\"cpal1\":                                 \"CPAL-1.0\",\n\t\t\t\t\"cpal1.0\":                               \"CPAL-1.0\",\n\t\t\t\t\"cpal1.0.0\":                             \"CPAL-1.0\",\n\t\t\t\t\"cpl1\":                                  \"CPL-1.0\",\n\t\t\t\t\"cpl1.0\":                                \"CPL-1.0\",\n\t\t\t\t\"cpl1.0.0\":                              \"CPL-1.0\",\n\t\t\t\t\"cpol1\":                                 \"CPOL-1.02\",\n\t\t\t\t\"cpol1.02\":                              \"CPOL-1.02\",\n\t\t\t\t\"cpol1.02.0\":                            \"CPOL-1.02\",\n\t\t\t\t\"crossword\":                             \"Crossword\",\n\t\t\t\t\"crystalstacker\":                        \"CrystalStacker\",\n\t\t\t\t\"cuaopl1\":                               \"CUA-OPL-1.0\",\n\t\t\t\t\"cuaopl1.0\":                             \"CUA-OPL-1.0\",\n\t\t\t\t\"cuaopl1.0.0\":                           \"CUA-OPL-1.0\",\n\t\t\t\t\"cube\":                                  \"Cube\",\n\t\t\t\t\"cuda1\":                                 \"C-UDA-1.0\",\n\t\t\t\t\"cuda1.0\":                               \"C-UDA-1.0\",\n\t\t\t\t\"cuda1.0.0\":                             \"C-UDA-1.0\",\n\t\t\t\t\"curl\":                                  \"curl\",\n\t\t\t\t\"dfsl1\":                                 \"D-FSL-1.0\",\n\t\t\t\t\"dfsl1.0\":                               \"D-FSL-1.0\",\n\t\t\t\t\"dfsl1.0.0\":                             \"D-FSL-1.0\",\n\t\t\t\t\"diffmark\":                              \"diffmark\",\n\t\t\t\t\"dldeby2\":                               \"DL-DE-BY-2.0\",\n\t\t\t\t\"dldeby2.0\":                             \"DL-DE-BY-2.0\",\n\t\t\t\t\"dldeby2.0.0\":                           \"DL-DE-BY-2.0\",\n\t\t\t\t\"doc\":                                   \"DOC\",\n\t\t\t\t\"dotseqn\":                               \"Dotseqn\",\n\t\t\t\t\"drl1\":                                  \"DRL-1.0\",\n\t\t\t\t\"drl1.0\":                                \"DRL-1.0\",\n\t\t\t\t\"drl1.0.0\":                              \"DRL-1.0\",\n\t\t\t\t\"dsdp\":                                  \"DSDP\",\n\t\t\t\t\"dvipdfm\":                               \"dvipdfm\",\n\t\t\t\t\"ecl1\":                                  \"ECL-1.0\",\n\t\t\t\t\"ecl1.0\":                                \"ECL-1.0\",\n\t\t\t\t\"ecl1.0.0\":                              \"ECL-1.0\",\n\t\t\t\t\"ecl2\":                                  \"ECL-2.0\",\n\t\t\t\t\"ecl2.0\":                                \"ECL-2.0\",\n\t\t\t\t\"ecl2.0.0\":                              \"ECL-2.0\",\n\t\t\t\t\"ecos2\":                                 \"eCos-2.0\",\n\t\t\t\t\"ecos2.0\":                               \"eCos-2.0\",\n\t\t\t\t\"ecos2.0.0\":                             \"eCos-2.0\",\n\t\t\t\t\"efl1\":                                  \"EFL-1.0\",\n\t\t\t\t\"efl1.0\":                                \"EFL-1.0\",\n\t\t\t\t\"efl1.0.0\":                              \"EFL-1.0\",\n\t\t\t\t\"efl2\":                                  \"EFL-2.0\",\n\t\t\t\t\"efl2.0\":                                \"EFL-2.0\",\n\t\t\t\t\"efl2.0.0\":                              \"EFL-2.0\",\n\t\t\t\t\"egenix\":                                \"eGenix\",\n\t\t\t\t\"elastic2\":                              \"Elastic-2.0\",\n\t\t\t\t\"elastic2.0\":                            \"Elastic-2.0\",\n\t\t\t\t\"elastic2.0.0\":                          \"Elastic-2.0\",\n\t\t\t\t\"entessa\":                               \"Entessa\",\n\t\t\t\t\"epics\":                                 \"EPICS\",\n\t\t\t\t\"epl1\":                                  \"EPL-1.0\",\n\t\t\t\t\"epl1.0\":                                \"EPL-1.0\",\n\t\t\t\t\"epl1.0.0\":                              \"EPL-1.0\",\n\t\t\t\t\"epl2\":                                  \"EPL-2.0\",\n\t\t\t\t\"epl2.0\":                                \"EPL-2.0\",\n\t\t\t\t\"epl2.0.0\":                              \"EPL-2.0\",\n\t\t\t\t\"erlpl1\":                                \"ErlPL-1.1\",\n\t\t\t\t\"erlpl1.1\":                              \"ErlPL-1.1\",\n\t\t\t\t\"erlpl1.1.0\":                            \"ErlPL-1.1\",\n\t\t\t\t\"etalab2\":                               \"etalab-2.0\",\n\t\t\t\t\"etalab2.0\":                             \"etalab-2.0\",\n\t\t\t\t\"etalab2.0.0\":                           \"etalab-2.0\",\n\t\t\t\t\"eudatagrid\":                            \"EUDatagrid\",\n\t\t\t\t\"eupl1\":                                 \"EUPL-1.0\",\n\t\t\t\t\"eupl1.0\":                               \"EUPL-1.0\",\n\t\t\t\t\"eupl1.0.0\":                             \"EUPL-1.0\",\n\t\t\t\t\"eupl1.1\":                               \"EUPL-1.1\",\n\t\t\t\t\"eupl1.1.0\":                             \"EUPL-1.1\",\n\t\t\t\t\"eupl1.2\":                               \"EUPL-1.2\",\n\t\t\t\t\"eupl1.2.0\":                             \"EUPL-1.2\",\n\t\t\t\t\"eurosym\":                               \"Eurosym\",\n\t\t\t\t\"fair\":                                  \"Fair\",\n\t\t\t\t\"fdkaac\":                                \"FDK-AAC\",\n\t\t\t\t\"frameworx1\":                            \"Frameworx-1.0\",\n\t\t\t\t\"frameworx1.0\":                          \"Frameworx-1.0\",\n\t\t\t\t\"frameworx1.0.0\":                        \"Frameworx-1.0\",\n\t\t\t\t\"freebsddoc\":                            \"FreeBSD-DOC\",\n\t\t\t\t\"freeimage\":                             \"FreeImage\",\n\t\t\t\t\"fsfap\":                                 \"FSFAP\",\n\t\t\t\t\"fsful\":                                 \"FSFUL\",\n\t\t\t\t\"fsfullr\":                               \"FSFULLR\",\n\t\t\t\t\"fsfullrwd\":                             \"FSFULLRWD\",\n\t\t\t\t\"ftl\":                                   \"FTL\",\n\t\t\t\t\"gd\":                                    \"GD\",\n\t\t\t\t\"gfdl1\":                                 \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1+\":                                \"GFDL-1.1-or-later\",\n\t\t\t\t\"gfdl1+invariants\":                      \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1+noinvariants\":                    \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.1\":                               \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1.1+\":                              \"GFDL-1.1-or-later\",\n\t\t\t\t\"gfdl1.1+invariants\":                    \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1.1+noinvariants\":                  \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.1.0\":                             \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1.1.0+\":                            \"GFDL-1.1-or-later\",\n\t\t\t\t\"gfdl1.1.0+invariants\":                  \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1.1.0+noinvariants\":                \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.1.0invariantsonly\":               \"GFDL-1.1-invariants-only\",\n\t\t\t\t\"gfdl1.1.0invariantsorlater\":            \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1.1.0noinvariantsonly\":             \"GFDL-1.1-no-invariants-only\",\n\t\t\t\t\"gfdl1.1.0noinvariantsorlater\":          \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.1.0only\":                         \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1.1.0orlater\":                      \"GFDL-1.1-or-later\",\n\t\t\t\t\"gfdl1.1invariantsonly\":                 \"GFDL-1.1-invariants-only\",\n\t\t\t\t\"gfdl1.1invariantsorlater\":              \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1.1noinvariantsonly\":               \"GFDL-1.1-no-invariants-only\",\n\t\t\t\t\"gfdl1.1noinvariantsorlater\":            \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.1only\":                           \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1.1orlater\":                        \"GFDL-1.1-or-later\",\n\t\t\t\t\"gfdl1.2\":                               \"GFDL-1.2-only\",\n\t\t\t\t\"gfdl1.2+\":                              \"GFDL-1.2-or-later\",\n\t\t\t\t\"gfdl1.2+invariants\":                    \"GFDL-1.2-invariants-or-later\",\n\t\t\t\t\"gfdl1.2+noinvariants\":                  \"GFDL-1.2-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.2.0\":                             \"GFDL-1.2-only\",\n\t\t\t\t\"gfdl1.2.0+\":                            \"GFDL-1.2-or-later\",\n\t\t\t\t\"gfdl1.2.0+invariants\":                  \"GFDL-1.2-invariants-or-later\",\n\t\t\t\t\"gfdl1.2.0+noinvariants\":                \"GFDL-1.2-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.2.0invariantsonly\":               \"GFDL-1.2-invariants-only\",\n\t\t\t\t\"gfdl1.2.0invariantsorlater\":            \"GFDL-1.2-invariants-or-later\",\n\t\t\t\t\"gfdl1.2.0noinvariantsonly\":             \"GFDL-1.2-no-invariants-only\",\n\t\t\t\t\"gfdl1.2.0noinvariantsorlater\":          \"GFDL-1.2-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.2.0only\":                         \"GFDL-1.2-only\",\n\t\t\t\t\"gfdl1.2.0orlater\":                      \"GFDL-1.2-or-later\",\n\t\t\t\t\"gfdl1.2invariantsonly\":                 \"GFDL-1.2-invariants-only\",\n\t\t\t\t\"gfdl1.2invariantsorlater\":              \"GFDL-1.2-invariants-or-later\",\n\t\t\t\t\"gfdl1.2noinvariantsonly\":               \"GFDL-1.2-no-invariants-only\",\n\t\t\t\t\"gfdl1.2noinvariantsorlater\":            \"GFDL-1.2-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.2only\":                           \"GFDL-1.2-only\",\n\t\t\t\t\"gfdl1.2orlater\":                        \"GFDL-1.2-or-later\",\n\t\t\t\t\"gfdl1.3\":                               \"GFDL-1.3-only\",\n\t\t\t\t\"gfdl1.3+\":                              \"GFDL-1.3-or-later\",\n\t\t\t\t\"gfdl1.3+invariants\":                    \"GFDL-1.3-invariants-or-later\",\n\t\t\t\t\"gfdl1.3+noinvariants\":                  \"GFDL-1.3-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.3.0\":                             \"GFDL-1.3-only\",\n\t\t\t\t\"gfdl1.3.0+\":                            \"GFDL-1.3-or-later\",\n\t\t\t\t\"gfdl1.3.0+invariants\":                  \"GFDL-1.3-invariants-or-later\",\n\t\t\t\t\"gfdl1.3.0+noinvariants\":                \"GFDL-1.3-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.3.0invariantsonly\":               \"GFDL-1.3-invariants-only\",\n\t\t\t\t\"gfdl1.3.0invariantsorlater\":            \"GFDL-1.3-invariants-or-later\",\n\t\t\t\t\"gfdl1.3.0noinvariantsonly\":             \"GFDL-1.3-no-invariants-only\",\n\t\t\t\t\"gfdl1.3.0noinvariantsorlater\":          \"GFDL-1.3-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.3.0only\":                         \"GFDL-1.3-only\",\n\t\t\t\t\"gfdl1.3.0orlater\":                      \"GFDL-1.3-or-later\",\n\t\t\t\t\"gfdl1.3invariantsonly\":                 \"GFDL-1.3-invariants-only\",\n\t\t\t\t\"gfdl1.3invariantsorlater\":              \"GFDL-1.3-invariants-or-later\",\n\t\t\t\t\"gfdl1.3noinvariantsonly\":               \"GFDL-1.3-no-invariants-only\",\n\t\t\t\t\"gfdl1.3noinvariantsorlater\":            \"GFDL-1.3-no-invariants-or-later\",\n\t\t\t\t\"gfdl1.3only\":                           \"GFDL-1.3-only\",\n\t\t\t\t\"gfdl1.3orlater\":                        \"GFDL-1.3-or-later\",\n\t\t\t\t\"gfdl1invariantsonly\":                   \"GFDL-1.1-invariants-only\",\n\t\t\t\t\"gfdl1invariantsorlater\":                \"GFDL-1.1-invariants-or-later\",\n\t\t\t\t\"gfdl1noinvariantsonly\":                 \"GFDL-1.1-no-invariants-only\",\n\t\t\t\t\"gfdl1noinvariantsorlater\":              \"GFDL-1.1-no-invariants-or-later\",\n\t\t\t\t\"gfdl1only\":                             \"GFDL-1.1-only\",\n\t\t\t\t\"gfdl1orlater\":                          \"GFDL-1.1-or-later\",\n\t\t\t\t\"giftware\":                              \"Giftware\",\n\t\t\t\t\"gl2.0.0ps\":                             \"GL2PS\",\n\t\t\t\t\"gl2.0ps\":                               \"GL2PS\",\n\t\t\t\t\"gl2ps\":                                 \"GL2PS\",\n\t\t\t\t\"glide\":                                 \"Glide\",\n\t\t\t\t\"glulxe\":                                \"Glulxe\",\n\t\t\t\t\"glwtpl\":                                \"GLWTPL\",\n\t\t\t\t\"gnuplot\":                               \"gnuplot\",\n\t\t\t\t\"gpl1\":                                  \"GPL-1.0-only\",\n\t\t\t\t\"gpl1+\":                                 \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl1.0\":                                \"GPL-1.0-only\",\n\t\t\t\t\"gpl1.0+\":                               \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl1.0.0\":                              \"GPL-1.0-only\",\n\t\t\t\t\"gpl1.0.0+\":                             \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl1.0.0only\":                          \"GPL-1.0-only\",\n\t\t\t\t\"gpl1.0.0orlater\":                       \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl1.0only\":                            \"GPL-1.0-only\",\n\t\t\t\t\"gpl1.0orlater\":                         \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl1only\":                              \"GPL-1.0-only\",\n\t\t\t\t\"gpl1orlater\":                           \"GPL-1.0-or-later\",\n\t\t\t\t\"gpl2\":                                  \"GPL-2.0-only\",\n\t\t\t\t\"gpl2+\":                                 \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2.0\":                                \"GPL-2.0-only\",\n\t\t\t\t\"gpl2.0+\":                               \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2.0.0\":                              \"GPL-2.0-only\",\n\t\t\t\t\"gpl2.0.0+\":                             \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2.0.0only\":                          \"GPL-2.0-only\",\n\t\t\t\t\"gpl2.0.0orlater\":                       \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2.0.0withautoconfexception\":         \"GPL-2.0-with-autoconf-exception\",\n\t\t\t\t\"gpl2.0.0withbisonexception\":            \"GPL-2.0-with-bison-exception\",\n\t\t\t\t\"gpl2.0.0withclasspathexception\":        \"GPL-2.0-with-classpath-exception\",\n\t\t\t\t\"gpl2.0.0withfontexception\":             \"GPL-2.0-with-font-exception\",\n\t\t\t\t\"gpl2.0.0withgccexception\":              \"GPL-2.0-with-GCC-exception\",\n\t\t\t\t\"gpl2.0only\":                            \"GPL-2.0-only\",\n\t\t\t\t\"gpl2.0orlater\":                         \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2.0withautoconfexception\":           \"GPL-2.0-with-autoconf-exception\",\n\t\t\t\t\"gpl2.0withbisonexception\":              \"GPL-2.0-with-bison-exception\",\n\t\t\t\t\"gpl2.0withclasspathexception\":          \"GPL-2.0-with-classpath-exception\",\n\t\t\t\t\"gpl2.0withfontexception\":               \"GPL-2.0-with-font-exception\",\n\t\t\t\t\"gpl2.0withgccexception\":                \"GPL-2.0-with-GCC-exception\",\n\t\t\t\t\"gpl2only\":                              \"GPL-2.0-only\",\n\t\t\t\t\"gpl2orlater\":                           \"GPL-2.0-or-later\",\n\t\t\t\t\"gpl2withautoconfexception\":             \"GPL-2.0-with-autoconf-exception\",\n\t\t\t\t\"gpl2withbisonexception\":                \"GPL-2.0-with-bison-exception\",\n\t\t\t\t\"gpl2withclasspathexception\":            \"GPL-2.0-with-classpath-exception\",\n\t\t\t\t\"gpl2withfontexception\":                 \"GPL-2.0-with-font-exception\",\n\t\t\t\t\"gpl2withgccexception\":                  \"GPL-2.0-with-GCC-exception\",\n\t\t\t\t\"gpl3\":                                  \"GPL-3.0-only\",\n\t\t\t\t\"gpl3+\":                                 \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3.0\":                                \"GPL-3.0-only\",\n\t\t\t\t\"gpl3.0+\":                               \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3.0.0\":                              \"GPL-3.0-only\",\n\t\t\t\t\"gpl3.0.0+\":                             \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3.0.0only\":                          \"GPL-3.0-only\",\n\t\t\t\t\"gpl3.0.0orlater\":                       \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3.0.0withautoconfexception\":         \"GPL-3.0-with-autoconf-exception\",\n\t\t\t\t\"gpl3.0.0withgccexception\":              \"GPL-3.0-with-GCC-exception\",\n\t\t\t\t\"gpl3.0only\":                            \"GPL-3.0-only\",\n\t\t\t\t\"gpl3.0orlater\":                         \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3.0withautoconfexception\":           \"GPL-3.0-with-autoconf-exception\",\n\t\t\t\t\"gpl3.0withgccexception\":                \"GPL-3.0-with-GCC-exception\",\n\t\t\t\t\"gpl3only\":                              \"GPL-3.0-only\",\n\t\t\t\t\"gpl3orlater\":                           \"GPL-3.0-or-later\",\n\t\t\t\t\"gpl3withautoconfexception\":             \"GPL-3.0-with-autoconf-exception\",\n\t\t\t\t\"gpl3withgccexception\":                  \"GPL-3.0-with-GCC-exception\",\n\t\t\t\t\"graphicsgems\":                          \"Graphics-Gems\",\n\t\t\t\t\"gsoap1.3.0b\":                           \"gSOAP-1.3b\",\n\t\t\t\t\"gsoap1.3b\":                             \"gSOAP-1.3b\",\n\t\t\t\t\"gsoap1b\":                               \"gSOAP-1.3b\",\n\t\t\t\t\"haskellreport\":                         \"HaskellReport\",\n\t\t\t\t\"hippocratic2\":                          \"Hippocratic-2.1\",\n\t\t\t\t\"hippocratic2.1\":                        \"Hippocratic-2.1\",\n\t\t\t\t\"hippocratic2.1.0\":                      \"Hippocratic-2.1\",\n\t\t\t\t\"hp1986\":                                \"HP-1986\",\n\t\t\t\t\"hp1986.0\":                              \"HP-1986\",\n\t\t\t\t\"hp1986.0.0\":                            \"HP-1986\",\n\t\t\t\t\"hpnd\":                                  \"HPND\",\n\t\t\t\t\"hpndexportus\":                          \"HPND-export-US\",\n\t\t\t\t\"hpndmarkuskuhn\":                        \"HPND-Markus-Kuhn\",\n\t\t\t\t\"hpndsellvariant\":                       \"HPND-sell-variant\",\n\t\t\t\t\"hpndsellvariantmitdisclaimer\":          \"HPND-sell-variant-MIT-disclaimer\",\n\t\t\t\t\"htmltidy\":                              \"HTMLTIDY\",\n\t\t\t\t\"ibmpibs\":                               \"IBM-pibs\",\n\t\t\t\t\"icu\":                                   \"ICU\",\n\t\t\t\t\"ieccodecomponentseula\":                 \"IEC-Code-Components-EULA\",\n\t\t\t\t\"ijg\":                                   \"IJG\",\n\t\t\t\t\"ijgshort\":                              \"IJG-short\",\n\t\t\t\t\"imagemagick\":                           \"ImageMagick\",\n\t\t\t\t\"imatix\":                                \"iMatix\",\n\t\t\t\t\"imlib2\":                                \"Imlib2\",\n\t\t\t\t\"imlib2.0\":                              \"Imlib2\",\n\t\t\t\t\"imlib2.0.0\":                            \"Imlib2\",\n\t\t\t\t\"infozip\":                               \"Info-ZIP\",\n\t\t\t\t\"intel\":                                 \"Intel\",\n\t\t\t\t\"intelacpi\":                             \"Intel-ACPI\",\n\t\t\t\t\"interbase1\":                            \"Interbase-1.0\",\n\t\t\t\t\"interbase1.0\":                          \"Interbase-1.0\",\n\t\t\t\t\"interbase1.0.0\":                        \"Interbase-1.0\",\n\t\t\t\t\"ipa\":                                   \"IPA\",\n\t\t\t\t\"ipl1\":                                  \"IPL-1.0\",\n\t\t\t\t\"ipl1.0\":                                \"IPL-1.0\",\n\t\t\t\t\"ipl1.0.0\":                              \"IPL-1.0\",\n\t\t\t\t\"isc\":                                   \"ISC\",\n\t\t\t\t\"jam\":                                   \"Jam\",\n\t\t\t\t\"jasper2\":                               \"JasPer-2.0\",\n\t\t\t\t\"jasper2.0\":                             \"JasPer-2.0\",\n\t\t\t\t\"jasper2.0.0\":                           \"JasPer-2.0\",\n\t\t\t\t\"jplimage\":                              \"JPL-image\",\n\t\t\t\t\"jpnic\":                                 \"JPNIC\",\n\t\t\t\t\"json\":                                  \"JSON\",\n\t\t\t\t\"kazlib\":                                \"Kazlib\",\n\t\t\t\t\"knuthctan\":                             \"Knuth-CTAN\",\n\t\t\t\t\"lal1\":                                  \"LAL-1.2\",\n\t\t\t\t\"lal1.2\":                                \"LAL-1.2\",\n\t\t\t\t\"lal1.2.0\":                              \"LAL-1.2\",\n\t\t\t\t\"lal1.3\":                                \"LAL-1.3\",\n\t\t\t\t\"lal1.3.0\":                              \"LAL-1.3\",\n\t\t\t\t\"latex2.0.0e\":                           \"Latex2e\",\n\t\t\t\t\"latex2.0e\":                             \"Latex2e\",\n\t\t\t\t\"latex2e\":                               \"Latex2e\",\n\t\t\t\t\"leptonica\":                             \"Leptonica\",\n\t\t\t\t\"lgpl2\":                                 \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2+\":                                \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl2.0\":                               \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2.0+\":                              \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl2.0.0\":                             \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2.0.0+\":                            \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl2.0.0only\":                         \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2.0.0orlater\":                      \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl2.0only\":                           \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2.0orlater\":                        \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl2.1\":                               \"LGPL-2.1-only\",\n\t\t\t\t\"lgpl2.1+\":                              \"LGPL-2.1-or-later\",\n\t\t\t\t\"lgpl2.1.0\":                             \"LGPL-2.1-only\",\n\t\t\t\t\"lgpl2.1.0+\":                            \"LGPL-2.1-or-later\",\n\t\t\t\t\"lgpl2.1.0only\":                         \"LGPL-2.1-only\",\n\t\t\t\t\"lgpl2.1.0orlater\":                      \"LGPL-2.1-or-later\",\n\t\t\t\t\"lgpl2.1only\":                           \"LGPL-2.1-only\",\n\t\t\t\t\"lgpl2.1orlater\":                        \"LGPL-2.1-or-later\",\n\t\t\t\t\"lgpl2only\":                             \"LGPL-2.0-only\",\n\t\t\t\t\"lgpl2orlater\":                          \"LGPL-2.0-or-later\",\n\t\t\t\t\"lgpl3\":                                 \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3+\":                                \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpl3.0\":                               \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3.0+\":                              \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpl3.0.0\":                             \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3.0.0+\":                            \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpl3.0.0only\":                         \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3.0.0orlater\":                      \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpl3.0only\":                           \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3.0orlater\":                        \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpl3only\":                             \"LGPL-3.0-only\",\n\t\t\t\t\"lgpl3orlater\":                          \"LGPL-3.0-or-later\",\n\t\t\t\t\"lgpllr\":                                \"LGPLLR\",\n\t\t\t\t\"libpng\":                                \"Libpng\",\n\t\t\t\t\"libpng2\":                               \"libpng-2.0\",\n\t\t\t\t\"libpng2.0\":                             \"libpng-2.0\",\n\t\t\t\t\"libpng2.0.0\":                           \"libpng-2.0\",\n\t\t\t\t\"libselinux1\":                           \"libselinux-1.0\",\n\t\t\t\t\"libselinux1.0\":                         \"libselinux-1.0\",\n\t\t\t\t\"libselinux1.0.0\":                       \"libselinux-1.0\",\n\t\t\t\t\"libtiff\":                               \"libtiff\",\n\t\t\t\t\"libutildavidnugent\":                    \"libutil-David-Nugent\",\n\t\t\t\t\"liliqp1\":                               \"LiLiQ-P-1.1\",\n\t\t\t\t\"liliqp1.1\":                             \"LiLiQ-P-1.1\",\n\t\t\t\t\"liliqp1.1.0\":                           \"LiLiQ-P-1.1\",\n\t\t\t\t\"liliqr1\":                               \"LiLiQ-R-1.1\",\n\t\t\t\t\"liliqr1.1\":                             \"LiLiQ-R-1.1\",\n\t\t\t\t\"liliqr1.1.0\":                           \"LiLiQ-R-1.1\",\n\t\t\t\t\"liliqrplus1\":                           \"LiLiQ-Rplus-1.1\",\n\t\t\t\t\"liliqrplus1.1\":                         \"LiLiQ-Rplus-1.1\",\n\t\t\t\t\"liliqrplus1.1.0\":                       \"LiLiQ-Rplus-1.1\",\n\t\t\t\t\"linuxmanpagescopyleft\":                 \"Linux-man-pages-copyleft\",\n\t\t\t\t\"linuxopenib\":                           \"Linux-OpenIB\",\n\t\t\t\t\"loop\":                                  \"LOOP\",\n\t\t\t\t\"lpl1\":                                  \"LPL-1.0\",\n\t\t\t\t\"lpl1.0\":                                \"LPL-1.0\",\n\t\t\t\t\"lpl1.0.0\":                              \"LPL-1.0\",\n\t\t\t\t\"lpl1.02\":                               \"LPL-1.02\",\n\t\t\t\t\"lpl1.02.0\":                             \"LPL-1.02\",\n\t\t\t\t\"lppl1\":                                 \"LPPL-1.0\",\n\t\t\t\t\"lppl1.0\":                               \"LPPL-1.0\",\n\t\t\t\t\"lppl1.0.0\":                             \"LPPL-1.0\",\n\t\t\t\t\"lppl1.1\":                               \"LPPL-1.1\",\n\t\t\t\t\"lppl1.1.0\":                             \"LPPL-1.1\",\n\t\t\t\t\"lppl1.2\":                               \"LPPL-1.2\",\n\t\t\t\t\"lppl1.2.0\":                             \"LPPL-1.2\",\n\t\t\t\t\"lppl1.3.0a\":                            \"LPPL-1.3a\",\n\t\t\t\t\"lppl1.3.0c\":                            \"LPPL-1.3c\",\n\t\t\t\t\"lppl1.3a\":                              \"LPPL-1.3a\",\n\t\t\t\t\"lppl1.3c\":                              \"LPPL-1.3c\",\n\t\t\t\t\"lppl1a\":                                \"LPPL-1.3a\",\n\t\t\t\t\"lppl1c\":                                \"LPPL-1.3c\",\n\t\t\t\t\"lzmasdk9\":                              \"LZMA-SDK-9.22\",\n\t\t\t\t\"lzmasdk9.11.0to9.20\":                   \"LZMA-SDK-9.11-to-9.20\",\n\t\t\t\t\"lzmasdk9.11to9.20\":                     \"LZMA-SDK-9.11-to-9.20\",\n\t\t\t\t\"lzmasdk9.22\":                           \"LZMA-SDK-9.22\",\n\t\t\t\t\"lzmasdk9.22.0\":                         \"LZMA-SDK-9.22\",\n\t\t\t\t\"lzmasdk9to9.20\":                        \"LZMA-SDK-9.11-to-9.20\",\n\t\t\t\t\"makeindex\":                             \"MakeIndex\",\n\t\t\t\t\"martinbirgmeier\":                       \"Martin-Birgmeier\",\n\t\t\t\t\"minpack\":                               \"Minpack\",\n\t\t\t\t\"miros\":                                 \"MirOS\",\n\t\t\t\t\"mit\":                                   \"MIT\",\n\t\t\t\t\"mit0\":                                  \"MIT-0\",\n\t\t\t\t\"mitadvertising\":                        \"MIT-advertising\",\n\t\t\t\t\"mitcmu\":                                \"MIT-CMU\",\n\t\t\t\t\"mitenna\":                               \"MIT-enna\",\n\t\t\t\t\"mitfeh\":                                \"MIT-feh\",\n\t\t\t\t\"mitmodernvariant\":                      \"MIT-Modern-Variant\",\n\t\t\t\t\"mitnfa\":                                \"MITNFA\",\n\t\t\t\t\"mitopengroup\":                          \"MIT-open-group\",\n\t\t\t\t\"mitwu\":                                 \"MIT-Wu\",\n\t\t\t\t\"motosoto\":                              \"Motosoto\",\n\t\t\t\t\"mpich2\":                                \"mpich2\",\n\t\t\t\t\"mpich2.0\":                              \"mpich2\",\n\t\t\t\t\"mpich2.0.0\":                            \"mpich2\",\n\t\t\t\t\"mpipermissive\":                         \"mpi-permissive\",\n\t\t\t\t\"mpl1\":                                  \"MPL-1.0\",\n\t\t\t\t\"mpl1.0\":                                \"MPL-1.0\",\n\t\t\t\t\"mpl1.0.0\":                              \"MPL-1.0\",\n\t\t\t\t\"mpl1.1\":                                \"MPL-1.1\",\n\t\t\t\t\"mpl1.1.0\":                              \"MPL-1.1\",\n\t\t\t\t\"mpl2\":                                  \"MPL-2.0\",\n\t\t\t\t\"mpl2.0\":                                \"MPL-2.0\",\n\t\t\t\t\"mpl2.0.0\":                              \"MPL-2.0\",\n\t\t\t\t\"mpl2.0.0nocopyleftexception\":           \"MPL-2.0-no-copyleft-exception\",\n\t\t\t\t\"mpl2.0nocopyleftexception\":             \"MPL-2.0-no-copyleft-exception\",\n\t\t\t\t\"mpl2nocopyleftexception\":               \"MPL-2.0-no-copyleft-exception\",\n\t\t\t\t\"mplus\":                                 \"mplus\",\n\t\t\t\t\"mslpl\":                                 \"MS-LPL\",\n\t\t\t\t\"mspl\":                                  \"MS-PL\",\n\t\t\t\t\"msrl\":                                  \"MS-RL\",\n\t\t\t\t\"mtll\":                                  \"MTLL\",\n\t\t\t\t\"mulanpsl1\":                             \"MulanPSL-1.0\",\n\t\t\t\t\"mulanpsl1.0\":                           \"MulanPSL-1.0\",\n\t\t\t\t\"mulanpsl1.0.0\":                         \"MulanPSL-1.0\",\n\t\t\t\t\"mulanpsl2\":                             \"MulanPSL-2.0\",\n\t\t\t\t\"mulanpsl2.0\":                           \"MulanPSL-2.0\",\n\t\t\t\t\"mulanpsl2.0.0\":                         \"MulanPSL-2.0\",\n\t\t\t\t\"multics\":                               \"Multics\",\n\t\t\t\t\"mup\":                                   \"Mup\",\n\t\t\t\t\"naist2003\":                             \"NAIST-2003\",\n\t\t\t\t\"naist2003.0\":                           \"NAIST-2003\",\n\t\t\t\t\"naist2003.0.0\":                         \"NAIST-2003\",\n\t\t\t\t\"nasa1\":                                 \"NASA-1.3\",\n\t\t\t\t\"nasa1.3\":                               \"NASA-1.3\",\n\t\t\t\t\"nasa1.3.0\":                             \"NASA-1.3\",\n\t\t\t\t\"naumen\":                                \"Naumen\",\n\t\t\t\t\"nbpl1\":                                 \"NBPL-1.0\",\n\t\t\t\t\"nbpl1.0\":                               \"NBPL-1.0\",\n\t\t\t\t\"nbpl1.0.0\":                             \"NBPL-1.0\",\n\t\t\t\t\"ncgluk2\":                               \"NCGL-UK-2.0\",\n\t\t\t\t\"ncgluk2.0\":                             \"NCGL-UK-2.0\",\n\t\t\t\t\"ncgluk2.0.0\":                           \"NCGL-UK-2.0\",\n\t\t\t\t\"ncsa\":                                  \"NCSA\",\n\t\t\t\t\"netcdf\":                                \"NetCDF\",\n\t\t\t\t\"netsnmp\":                               \"Net-SNMP\",\n\t\t\t\t\"newsletr\":                              \"Newsletr\",\n\t\t\t\t\"ngpl\":                                  \"NGPL\",\n\t\t\t\t\"nicta1\":                                \"NICTA-1.0\",\n\t\t\t\t\"nicta1.0\":                              \"NICTA-1.0\",\n\t\t\t\t\"nicta1.0.0\":                            \"NICTA-1.0\",\n\t\t\t\t\"nistpd\":                                \"NIST-PD\",\n\t\t\t\t\"nistpdfallback\":                        \"NIST-PD-fallback\",\n\t\t\t\t\"nlod1\":                                 \"NLOD-1.0\",\n\t\t\t\t\"nlod1.0\":                               \"NLOD-1.0\",\n\t\t\t\t\"nlod1.0.0\":                             \"NLOD-1.0\",\n\t\t\t\t\"nlod2\":                                 \"NLOD-2.0\",\n\t\t\t\t\"nlod2.0\":                               \"NLOD-2.0\",\n\t\t\t\t\"nlod2.0.0\":                             \"NLOD-2.0\",\n\t\t\t\t\"nlpl\":                                  \"NLPL\",\n\t\t\t\t\"nokia\":                                 \"Nokia\",\n\t\t\t\t\"nosl\":                                  \"NOSL\",\n\t\t\t\t\"noweb\":                                 \"Noweb\",\n\t\t\t\t\"npl1\":                                  \"NPL-1.0\",\n\t\t\t\t\"npl1.0\":                                \"NPL-1.0\",\n\t\t\t\t\"npl1.0.0\":                              \"NPL-1.0\",\n\t\t\t\t\"npl1.1\":                                \"NPL-1.1\",\n\t\t\t\t\"npl1.1.0\":                              \"NPL-1.1\",\n\t\t\t\t\"nposl3\":                                \"NPOSL-3.0\",\n\t\t\t\t\"nposl3.0\":                              \"NPOSL-3.0\",\n\t\t\t\t\"nposl3.0.0\":                            \"NPOSL-3.0\",\n\t\t\t\t\"nrl\":                                   \"NRL\",\n\t\t\t\t\"ntp\":                                   \"NTP\",\n\t\t\t\t\"ntp0\":                                  \"NTP-0\",\n\t\t\t\t\"nunit\":                                 \"Nunit\",\n\t\t\t\t\"occtpl\":                                \"OCCT-PL\",\n\t\t\t\t\"oclc2\":                                 \"OCLC-2.0\",\n\t\t\t\t\"oclc2.0\":                               \"OCLC-2.0\",\n\t\t\t\t\"oclc2.0.0\":                             \"OCLC-2.0\",\n\t\t\t\t\"odbl1\":                                 \"ODbL-1.0\",\n\t\t\t\t\"odbl1.0\":                               \"ODbL-1.0\",\n\t\t\t\t\"odbl1.0.0\":                             \"ODbL-1.0\",\n\t\t\t\t\"odcby1\":                                \"ODC-By-1.0\",\n\t\t\t\t\"odcby1.0\":                              \"ODC-By-1.0\",\n\t\t\t\t\"odcby1.0.0\":                            \"ODC-By-1.0\",\n\t\t\t\t\"offis\":                                 \"OFFIS\",\n\t\t\t\t\"ofl1\":                                  \"OFL-1.0\",\n\t\t\t\t\"ofl1.0\":                                \"OFL-1.0\",\n\t\t\t\t\"ofl1.0.0\":                              \"OFL-1.0\",\n\t\t\t\t\"ofl1.0.0norfn\":                         \"OFL-1.0-no-RFN\",\n\t\t\t\t\"ofl1.0.0rfn\":                           \"OFL-1.0-RFN\",\n\t\t\t\t\"ofl1.0norfn\":                           \"OFL-1.0-no-RFN\",\n\t\t\t\t\"ofl1.0rfn\":                             \"OFL-1.0-RFN\",\n\t\t\t\t\"ofl1.1\":                                \"OFL-1.1\",\n\t\t\t\t\"ofl1.1.0\":                              \"OFL-1.1\",\n\t\t\t\t\"ofl1.1.0norfn\":                         \"OFL-1.1-no-RFN\",\n\t\t\t\t\"ofl1.1.0rfn\":                           \"OFL-1.1-RFN\",\n\t\t\t\t\"ofl1.1norfn\":                           \"OFL-1.1-no-RFN\",\n\t\t\t\t\"ofl1.1rfn\":                             \"OFL-1.1-RFN\",\n\t\t\t\t\"ofl1norfn\":                             \"OFL-1.0-no-RFN\",\n\t\t\t\t\"ofl1rfn\":                               \"OFL-1.0-RFN\",\n\t\t\t\t\"ogc1\":                                  \"OGC-1.0\",\n\t\t\t\t\"ogc1.0\":                                \"OGC-1.0\",\n\t\t\t\t\"ogc1.0.0\":                              \"OGC-1.0\",\n\t\t\t\t\"ogdltaiwan1\":                           \"OGDL-Taiwan-1.0\",\n\t\t\t\t\"ogdltaiwan1.0\":                         \"OGDL-Taiwan-1.0\",\n\t\t\t\t\"ogdltaiwan1.0.0\":                       \"OGDL-Taiwan-1.0\",\n\t\t\t\t\"oglcanada2\":                            \"OGL-Canada-2.0\",\n\t\t\t\t\"oglcanada2.0\":                          \"OGL-Canada-2.0\",\n\t\t\t\t\"oglcanada2.0.0\":                        \"OGL-Canada-2.0\",\n\t\t\t\t\"ogluk1\":                                \"OGL-UK-1.0\",\n\t\t\t\t\"ogluk1.0\":                              \"OGL-UK-1.0\",\n\t\t\t\t\"ogluk1.0.0\":                            \"OGL-UK-1.0\",\n\t\t\t\t\"ogluk2\":                                \"OGL-UK-2.0\",\n\t\t\t\t\"ogluk2.0\":                              \"OGL-UK-2.0\",\n\t\t\t\t\"ogluk2.0.0\":                            \"OGL-UK-2.0\",\n\t\t\t\t\"ogluk3\":                                \"OGL-UK-3.0\",\n\t\t\t\t\"ogluk3.0\":                              \"OGL-UK-3.0\",\n\t\t\t\t\"ogluk3.0.0\":                            \"OGL-UK-3.0\",\n\t\t\t\t\"ogtsl\":                                 \"OGTSL\",\n\t\t\t\t\"oldap1\":                                \"OLDAP-1.1\",\n\t\t\t\t\"oldap1.1\":                              \"OLDAP-1.1\",\n\t\t\t\t\"oldap1.1.0\":                            \"OLDAP-1.1\",\n\t\t\t\t\"oldap1.2\":                              \"OLDAP-1.2\",\n\t\t\t\t\"oldap1.2.0\":                            \"OLDAP-1.2\",\n\t\t\t\t\"oldap1.3\":                              \"OLDAP-1.3\",\n\t\t\t\t\"oldap1.3.0\":                            \"OLDAP-1.3\",\n\t\t\t\t\"oldap1.4\":                              \"OLDAP-1.4\",\n\t\t\t\t\"oldap1.4.0\":                            \"OLDAP-1.4\",\n\t\t\t\t\"oldap2\":                                \"OLDAP-2.0\",\n\t\t\t\t\"oldap2.0\":                              \"OLDAP-2.0\",\n\t\t\t\t\"oldap2.0.0\":                            \"OLDAP-2.0\",\n\t\t\t\t\"oldap2.0.1\":                            \"OLDAP-2.0.1\",\n\t\t\t\t\"oldap2.1\":                              \"OLDAP-2.1\",\n\t\t\t\t\"oldap2.1.0\":                            \"OLDAP-2.1\",\n\t\t\t\t\"oldap2.2\":                              \"OLDAP-2.2\",\n\t\t\t\t\"oldap2.2.0\":                            \"OLDAP-2.2\",\n\t\t\t\t\"oldap2.2.1\":                            \"OLDAP-2.2.1\",\n\t\t\t\t\"oldap2.2.2\":                            \"OLDAP-2.2.2\",\n\t\t\t\t\"oldap2.3\":                              \"OLDAP-2.3\",\n\t\t\t\t\"oldap2.3.0\":                            \"OLDAP-2.3\",\n\t\t\t\t\"oldap2.4\":                              \"OLDAP-2.4\",\n\t\t\t\t\"oldap2.4.0\":                            \"OLDAP-2.4\",\n\t\t\t\t\"oldap2.5\":                              \"OLDAP-2.5\",\n\t\t\t\t\"oldap2.5.0\":                            \"OLDAP-2.5\",\n\t\t\t\t\"oldap2.6\":                              \"OLDAP-2.6\",\n\t\t\t\t\"oldap2.6.0\":                            \"OLDAP-2.6\",\n\t\t\t\t\"oldap2.7\":                              \"OLDAP-2.7\",\n\t\t\t\t\"oldap2.7.0\":                            \"OLDAP-2.7\",\n\t\t\t\t\"oldap2.8\":                              \"OLDAP-2.8\",\n\t\t\t\t\"oldap2.8.0\":                            \"OLDAP-2.8\",\n\t\t\t\t\"oml\":                                   \"OML\",\n\t\t\t\t\"openpbs2\":                              \"OpenPBS-2.3\",\n\t\t\t\t\"openpbs2.3\":                            \"OpenPBS-2.3\",\n\t\t\t\t\"openpbs2.3.0\":                          \"OpenPBS-2.3\",\n\t\t\t\t\"openssl\":                               \"OpenSSL\",\n\t\t\t\t\"opl1\":                                  \"OPL-1.0\",\n\t\t\t\t\"opl1.0\":                                \"OPL-1.0\",\n\t\t\t\t\"opl1.0.0\":                              \"OPL-1.0\",\n\t\t\t\t\"opubl1\":                                \"OPUBL-1.0\",\n\t\t\t\t\"opubl1.0\":                              \"OPUBL-1.0\",\n\t\t\t\t\"opubl1.0.0\":                            \"OPUBL-1.0\",\n\t\t\t\t\"osetpl2\":                               \"OSET-PL-2.1\",\n\t\t\t\t\"osetpl2.1\":                             \"OSET-PL-2.1\",\n\t\t\t\t\"osetpl2.1.0\":                           \"OSET-PL-2.1\",\n\t\t\t\t\"osl1\":                                  \"OSL-1.0\",\n\t\t\t\t\"osl1.0\":                                \"OSL-1.0\",\n\t\t\t\t\"osl1.0.0\":                              \"OSL-1.0\",\n\t\t\t\t\"osl1.1\":                                \"OSL-1.1\",\n\t\t\t\t\"osl1.1.0\":                              \"OSL-1.1\",\n\t\t\t\t\"osl2\":                                  \"OSL-2.0\",\n\t\t\t\t\"osl2.0\":                                \"OSL-2.0\",\n\t\t\t\t\"osl2.0.0\":                              \"OSL-2.0\",\n\t\t\t\t\"osl2.1\":                                \"OSL-2.1\",\n\t\t\t\t\"osl2.1.0\":                              \"OSL-2.1\",\n\t\t\t\t\"osl3\":                                  \"OSL-3.0\",\n\t\t\t\t\"osl3.0\":                                \"OSL-3.0\",\n\t\t\t\t\"osl3.0.0\":                              \"OSL-3.0\",\n\t\t\t\t\"ouda1\":                                 \"O-UDA-1.0\",\n\t\t\t\t\"ouda1.0\":                               \"O-UDA-1.0\",\n\t\t\t\t\"ouda1.0.0\":                             \"O-UDA-1.0\",\n\t\t\t\t\"parity6\":                               \"Parity-6.0.0\",\n\t\t\t\t\"parity6.0\":                             \"Parity-6.0.0\",\n\t\t\t\t\"parity6.0.0\":                           \"Parity-6.0.0\",\n\t\t\t\t\"parity7\":                               \"Parity-7.0.0\",\n\t\t\t\t\"parity7.0\":                             \"Parity-7.0.0\",\n\t\t\t\t\"parity7.0.0\":                           \"Parity-7.0.0\",\n\t\t\t\t\"pddl1\":                                 \"PDDL-1.0\",\n\t\t\t\t\"pddl1.0\":                               \"PDDL-1.0\",\n\t\t\t\t\"pddl1.0.0\":                             \"PDDL-1.0\",\n\t\t\t\t\"php3\":                                  \"PHP-3.0\",\n\t\t\t\t\"php3.0\":                                \"PHP-3.0\",\n\t\t\t\t\"php3.0.0\":                              \"PHP-3.0\",\n\t\t\t\t\"php3.01\":                               \"PHP-3.01\",\n\t\t\t\t\"php3.01.0\":                             \"PHP-3.01\",\n\t\t\t\t\"plexus\":                                \"Plexus\",\n\t\t\t\t\"polyformnoncommercial1\":                \"PolyForm-Noncommercial-1.0.0\",\n\t\t\t\t\"polyformnoncommercial1.0\":              \"PolyForm-Noncommercial-1.0.0\",\n\t\t\t\t\"polyformnoncommercial1.0.0\":            \"PolyForm-Noncommercial-1.0.0\",\n\t\t\t\t\"polyformsmallbusiness1\":                \"PolyForm-Small-Business-1.0.0\",\n\t\t\t\t\"polyformsmallbusiness1.0\":              \"PolyForm-Small-Business-1.0.0\",\n\t\t\t\t\"polyformsmallbusiness1.0.0\":            \"PolyForm-Small-Business-1.0.0\",\n\t\t\t\t\"postgresql\":                            \"PostgreSQL\",\n\t\t\t\t\"psf2\":                                  \"PSF-2.0\",\n\t\t\t\t\"psf2.0\":                                \"PSF-2.0\",\n\t\t\t\t\"psf2.0.0\":                              \"PSF-2.0\",\n\t\t\t\t\"psfrag\":                                \"psfrag\",\n\t\t\t\t\"psutils\":                               \"psutils\",\n\t\t\t\t\"python2\":                               \"Python-2.0\",\n\t\t\t\t\"python2.0\":                             \"Python-2.0\",\n\t\t\t\t\"python2.0.0\":                           \"Python-2.0\",\n\t\t\t\t\"python2.0.1\":                           \"Python-2.0.1\",\n\t\t\t\t\"qhull\":                                 \"Qhull\",\n\t\t\t\t\"qpl1\":                                  \"QPL-1.0\",\n\t\t\t\t\"qpl1.0\":                                \"QPL-1.0\",\n\t\t\t\t\"qpl1.0.0\":                              \"QPL-1.0\",\n\t\t\t\t\"qpl1.0.0inria2004\":                     \"QPL-1.0-INRIA-2004\",\n\t\t\t\t\"qpl1.0inria2004\":                       \"QPL-1.0-INRIA-2004\",\n\t\t\t\t\"qpl1inria2004\":                         \"QPL-1.0-INRIA-2004\",\n\t\t\t\t\"rdisc\":                                 \"Rdisc\",\n\t\t\t\t\"rhecos1\":                               \"RHeCos-1.1\",\n\t\t\t\t\"rhecos1.1\":                             \"RHeCos-1.1\",\n\t\t\t\t\"rhecos1.1.0\":                           \"RHeCos-1.1\",\n\t\t\t\t\"rpl1\":                                  \"RPL-1.1\",\n\t\t\t\t\"rpl1.1\":                                \"RPL-1.1\",\n\t\t\t\t\"rpl1.1.0\":                              \"RPL-1.1\",\n\t\t\t\t\"rpl1.5\":                                \"RPL-1.5\",\n\t\t\t\t\"rpl1.5.0\":                              \"RPL-1.5\",\n\t\t\t\t\"rpsl1\":                                 \"RPSL-1.0\",\n\t\t\t\t\"rpsl1.0\":                               \"RPSL-1.0\",\n\t\t\t\t\"rpsl1.0.0\":                             \"RPSL-1.0\",\n\t\t\t\t\"rsamd\":                                 \"RSA-MD\",\n\t\t\t\t\"rscpl\":                                 \"RSCPL\",\n\t\t\t\t\"ruby\":                                  \"Ruby\",\n\t\t\t\t\"saxpath\":                               \"Saxpath\",\n\t\t\t\t\"saxpd\":                                 \"SAX-PD\",\n\t\t\t\t\"scea\":                                  \"SCEA\",\n\t\t\t\t\"schemereport\":                          \"SchemeReport\",\n\t\t\t\t\"sendmail\":                              \"Sendmail\",\n\t\t\t\t\"sendmail8\":                             \"Sendmail-8.23\",\n\t\t\t\t\"sendmail8.23\":                          \"Sendmail-8.23\",\n\t\t\t\t\"sendmail8.23.0\":                        \"Sendmail-8.23\",\n\t\t\t\t\"sgib1\":                                 \"SGI-B-1.0\",\n\t\t\t\t\"sgib1.0\":                               \"SGI-B-1.0\",\n\t\t\t\t\"sgib1.0.0\":                             \"SGI-B-1.0\",\n\t\t\t\t\"sgib1.1\":                               \"SGI-B-1.1\",\n\t\t\t\t\"sgib1.1.0\":                             \"SGI-B-1.1\",\n\t\t\t\t\"sgib2\":                                 \"SGI-B-2.0\",\n\t\t\t\t\"sgib2.0\":                               \"SGI-B-2.0\",\n\t\t\t\t\"sgib2.0.0\":                             \"SGI-B-2.0\",\n\t\t\t\t\"shl0.5\":                                \"SHL-0.5\",\n\t\t\t\t\"shl0.5.0\":                              \"SHL-0.5\",\n\t\t\t\t\"shl0.51\":                               \"SHL-0.51\",\n\t\t\t\t\"shl0.51.0\":                             \"SHL-0.51\",\n\t\t\t\t\"simpl2\":                                \"SimPL-2.0\",\n\t\t\t\t\"simpl2.0\":                              \"SimPL-2.0\",\n\t\t\t\t\"simpl2.0.0\":                            \"SimPL-2.0\",\n\t\t\t\t\"sissl\":                                 \"SISSL\",\n\t\t\t\t\"sissl1\":                                \"SISSL-1.2\",\n\t\t\t\t\"sissl1.2\":                              \"SISSL-1.2\",\n\t\t\t\t\"sissl1.2.0\":                            \"SISSL-1.2\",\n\t\t\t\t\"sleepycat\":                             \"Sleepycat\",\n\t\t\t\t\"smlnj\":                                 \"SMLNJ\",\n\t\t\t\t\"smppl\":                                 \"SMPPL\",\n\t\t\t\t\"snia\":                                  \"SNIA\",\n\t\t\t\t\"snprintf\":                              \"snprintf\",\n\t\t\t\t\"spencer86\":                             \"Spencer-86\",\n\t\t\t\t\"spencer86.0\":                           \"Spencer-86\",\n\t\t\t\t\"spencer86.0.0\":                         \"Spencer-86\",\n\t\t\t\t\"spencer94\":                             \"Spencer-94\",\n\t\t\t\t\"spencer94.0\":                           \"Spencer-94\",\n\t\t\t\t\"spencer94.0.0\":                         \"Spencer-94\",\n\t\t\t\t\"spencer99\":                             \"Spencer-99\",\n\t\t\t\t\"spencer99.0\":                           \"Spencer-99\",\n\t\t\t\t\"spencer99.0.0\":                         \"Spencer-99\",\n\t\t\t\t\"spl1\":                                  \"SPL-1.0\",\n\t\t\t\t\"spl1.0\":                                \"SPL-1.0\",\n\t\t\t\t\"spl1.0.0\":                              \"SPL-1.0\",\n\t\t\t\t\"sshopenssh\":                            \"SSH-OpenSSH\",\n\t\t\t\t\"sshshort\":                              \"SSH-short\",\n\t\t\t\t\"sspl1\":                                 \"SSPL-1.0\",\n\t\t\t\t\"sspl1.0\":                               \"SSPL-1.0\",\n\t\t\t\t\"sspl1.0.0\":                             \"SSPL-1.0\",\n\t\t\t\t\"standardmlnj\":                          \"SMLNJ\",\n\t\t\t\t\"sugarcrm1\":                             \"SugarCRM-1.1.3\",\n\t\t\t\t\"sugarcrm1.1\":                           \"SugarCRM-1.1.3\",\n\t\t\t\t\"sugarcrm1.1.3\":                         \"SugarCRM-1.1.3\",\n\t\t\t\t\"sunpro\":                                \"SunPro\",\n\t\t\t\t\"swl\":                                   \"SWL\",\n\t\t\t\t\"symlinks\":                              \"Symlinks\",\n\t\t\t\t\"taprohl1\":                              \"TAPR-OHL-1.0\",\n\t\t\t\t\"taprohl1.0\":                            \"TAPR-OHL-1.0\",\n\t\t\t\t\"taprohl1.0.0\":                          \"TAPR-OHL-1.0\",\n\t\t\t\t\"tcl\":                                   \"TCL\",\n\t\t\t\t\"tcpwrappers\":                           \"TCP-wrappers\",\n\t\t\t\t\"tmate\":                                 \"TMate\",\n\t\t\t\t\"torque1\":                               \"TORQUE-1.1\",\n\t\t\t\t\"torque1.1\":                             \"TORQUE-1.1\",\n\t\t\t\t\"torque1.1.0\":                           \"TORQUE-1.1\",\n\t\t\t\t\"tosl\":                                  \"TOSL\",\n\t\t\t\t\"tpdl\":                                  \"TPDL\",\n\t\t\t\t\"tpl1\":                                  \"TPL-1.0\",\n\t\t\t\t\"tpl1.0\":                                \"TPL-1.0\",\n\t\t\t\t\"tpl1.0.0\":                              \"TPL-1.0\",\n\t\t\t\t\"ttwl\":                                  \"TTWL\",\n\t\t\t\t\"tuberlin1\":                             \"TU-Berlin-1.0\",\n\t\t\t\t\"tuberlin1.0\":                           \"TU-Berlin-1.0\",\n\t\t\t\t\"tuberlin1.0.0\":                         \"TU-Berlin-1.0\",\n\t\t\t\t\"tuberlin2\":                             \"TU-Berlin-2.0\",\n\t\t\t\t\"tuberlin2.0\":                           \"TU-Berlin-2.0\",\n\t\t\t\t\"tuberlin2.0.0\":                         \"TU-Berlin-2.0\",\n\t\t\t\t\"ucar\":                                  \"UCAR\",\n\t\t\t\t\"ucl1\":                                  \"UCL-1.0\",\n\t\t\t\t\"ucl1.0\":                                \"UCL-1.0\",\n\t\t\t\t\"ucl1.0.0\":                              \"UCL-1.0\",\n\t\t\t\t\"unicodedfs2015\":                        \"Unicode-DFS-2015\",\n\t\t\t\t\"unicodedfs2015.0\":                      \"Unicode-DFS-2015\",\n\t\t\t\t\"unicodedfs2015.0.0\":                    \"Unicode-DFS-2015\",\n\t\t\t\t\"unicodedfs2016\":                        \"Unicode-DFS-2016\",\n\t\t\t\t\"unicodedfs2016.0\":                      \"Unicode-DFS-2016\",\n\t\t\t\t\"unicodedfs2016.0.0\":                    \"Unicode-DFS-2016\",\n\t\t\t\t\"unicodetou\":                            \"Unicode-TOU\",\n\t\t\t\t\"unlicense\":                             \"Unlicense\",\n\t\t\t\t\"upl1\":                                  \"UPL-1.0\",\n\t\t\t\t\"upl1.0\":                                \"UPL-1.0\",\n\t\t\t\t\"upl1.0.0\":                              \"UPL-1.0\",\n\t\t\t\t\"vim\":                                   \"Vim\",\n\t\t\t\t\"vostrom\":                               \"VOSTROM\",\n\t\t\t\t\"vsl1\":                                  \"VSL-1.0\",\n\t\t\t\t\"vsl1.0\":                                \"VSL-1.0\",\n\t\t\t\t\"vsl1.0.0\":                              \"VSL-1.0\",\n\t\t\t\t\"w3.0.0c\":                               \"W3C\",\n\t\t\t\t\"w3.0.0c19980720\":                       \"W3C-19980720\",\n\t\t\t\t\"w3.0.0c20150513\":                       \"W3C-20150513\",\n\t\t\t\t\"w3.0.0m\":                               \"w3m\",\n\t\t\t\t\"w3.0c\":                                 \"W3C\",\n\t\t\t\t\"w3.0c19980720\":                         \"W3C-19980720\",\n\t\t\t\t\"w3.0c20150513\":                         \"W3C-20150513\",\n\t\t\t\t\"w3.0m\":                                 \"w3m\",\n\t\t\t\t\"w3c\":                                   \"W3C\",\n\t\t\t\t\"w3c19980720\":                           \"W3C-19980720\",\n\t\t\t\t\"w3c20150513\":                           \"W3C-20150513\",\n\t\t\t\t\"w3m\":                                   \"w3m\",\n\t\t\t\t\"watcom1\":                               \"Watcom-1.0\",\n\t\t\t\t\"watcom1.0\":                             \"Watcom-1.0\",\n\t\t\t\t\"watcom1.0.0\":                           \"Watcom-1.0\",\n\t\t\t\t\"wsuipa\":                                \"Wsuipa\",\n\t\t\t\t\"wtfpl\":                                 \"WTFPL\",\n\t\t\t\t\"wxwindows\":                             \"wxWindows\",\n\t\t\t\t\"x11\":                                   \"X11\",\n\t\t\t\t\"x11.0\":                                 \"X11\",\n\t\t\t\t\"x11.0.0\":                               \"X11\",\n\t\t\t\t\"x11.0.0distributemodificationsvariant\": \"X11-distribute-modifications-variant\",\n\t\t\t\t\"x11.0distributemodificationsvariant\":   \"X11-distribute-modifications-variant\",\n\t\t\t\t\"x11distributemodificationsvariant\":     \"X11-distribute-modifications-variant\",\n\t\t\t\t\"xerox\":                                 \"Xerox\",\n\t\t\t\t\"xfree861\":                              \"XFree86-1.1\",\n\t\t\t\t\"xfree861.1\":                            \"XFree86-1.1\",\n\t\t\t\t\"xfree861.1.0\":                          \"XFree86-1.1\",\n\t\t\t\t\"xinetd\":                                \"xinetd\",\n\t\t\t\t\"xlock\":                                 \"xlock\",\n\t\t\t\t\"xnet\":                                  \"Xnet\",\n\t\t\t\t\"xpp\":                                   \"xpp\",\n\t\t\t\t\"xskat\":                                 \"XSkat\",\n\t\t\t\t\"ypl1\":                                  \"YPL-1.0\",\n\t\t\t\t\"ypl1.0\":                                \"YPL-1.0\",\n\t\t\t\t\"ypl1.0.0\":                              \"YPL-1.0\",\n\t\t\t\t\"ypl1.1\":                                \"YPL-1.1\",\n\t\t\t\t\"ypl1.1.0\":                              \"YPL-1.1\",\n\t\t\t\t\"zed\":                                   \"Zed\",\n\t\t\t\t\"zend2\":                                 \"Zend-2.0\",\n\t\t\t\t\"zend2.0\":                               \"Zend-2.0\",\n\t\t\t\t\"zend2.0.0\":                             \"Zend-2.0\",\n\t\t\t\t\"zimbra1\":                               \"Zimbra-1.3\",\n\t\t\t\t\"zimbra1.3\":                             \"Zimbra-1.3\",\n\t\t\t\t\"zimbra1.3.0\":                           \"Zimbra-1.3\",\n\t\t\t\t\"zimbra1.4\":                             \"Zimbra-1.4\",\n\t\t\t\t\"zimbra1.4.0\":                           \"Zimbra-1.4\",\n\t\t\t\t\"zlib\":                                  \"Zlib\",\n\t\t\t\t\"zlibacknowledgement\":                   \"zlib-acknowledgement\",\n\t\t\t\t\"zpl1\":                                  \"ZPL-1.1\",\n\t\t\t\t\"zpl1.1\":                                \"ZPL-1.1\",\n\t\t\t\t\"zpl1.1.0\":                              \"ZPL-1.1\",\n\t\t\t\t\"zpl2\":                                  \"ZPL-2.0\",\n\t\t\t\t\"zpl2.0\":                                \"ZPL-2.0\",\n\t\t\t\t\"zpl2.0.0\":                              \"ZPL-2.0\",\n\t\t\t\t\"zpl2.1\":                                \"ZPL-2.1\",\n\t\t\t\t\"zpl2.1.0\":                              \"ZPL-2.1\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tf, err := os.Open(tt.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar list LicenseList\n\t\t\trequire.NoError(t, json.NewDecoder(f).Decode(&list))\n\n\t\t\td := cmp.Diff(tt.want, processSPDXLicense(list))\n\t\t\tif d != \"\" {\n\t\t\t\tt.Log(\"differing license list:\\n\" + d)\n\t\t\t\tt.Fail()\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/spdxlicense/generate/license.go",
    "content": "package main\n\nimport (\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\ntype LicenseList struct {\n\tVersion  string    `json:\"licenseListVersion\"`\n\tLicenses []License `json:\"licenses\"`\n}\n\ntype License struct {\n\tID          string   `json:\"licenseId\"`\n\tName        string   `json:\"name\"`\n\tText        string   `json:\"licenseText\"`\n\tDeprecated  bool     `json:\"isDeprecatedLicenseId\"`\n\tOSIApproved bool     `json:\"isOsiApproved\"`\n\tSeeAlso     []string `json:\"seeAlso\"`\n}\n\n// findReplacementLicense returns a replacement license for a deprecated license\nfunc (ll LicenseList) findReplacementLicense(deprecated License) *License {\n\tfor _, l := range ll.Licenses {\n\t\tif l.canReplace(deprecated) {\n\t\t\treturn &l\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (l License) canReplace(deprecated License) bool {\n\t// don't replace a license with a deprecated license\n\tif l.Deprecated {\n\t\treturn false\n\t}\n\n\t// We want to replace deprecated licenses with non-deprecated counterparts\n\t// For more information, see: https://github.com/spdx/license-list-XML/issues/1676\n\tswitch {\n\tcase strings.ReplaceAll(l.ID, \"-only\", \"\") == deprecated.ID:\n\t\treturn true\n\tcase strings.ReplaceAll(l.ID, \"-or-later\", \"+\") == deprecated.ID:\n\t\treturn true\n\tcase l.ID == \"BSD-2-Clause\" && deprecated.ID == \"BSD-2-Clause-NetBSD\":\n\t\treturn true\n\tcase l.ID == \"BSD-2-Clause-Views\" && deprecated.ID == \"BSD-2-Clause-FreeBSD\":\n\t\treturn true\n\tcase l.ID == \"bzip2-1.0.6\" && deprecated.ID == \"bzip2-1.0.5\":\n\t\treturn true\n\tcase l.ID == \"SMLNJ\" && deprecated.ID == \"StandardML-NJ\":\n\t\treturn true\n\t}\n\n\tif l.Name != deprecated.Name {\n\t\treturn false\n\t}\n\n\tif l.OSIApproved != deprecated.OSIApproved {\n\t\treturn false\n\t}\n\n\tif len(l.SeeAlso) != len(deprecated.SeeAlso) {\n\t\treturn false\n\t}\n\n\tfor i, sa := range l.SeeAlso {\n\t\tif sa != deprecated.SeeAlso[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn l.ID == deprecated.ID\n}\n\nfunc buildLicenseIDPermutations(cleanID string) (perms []string) {\n\tlv := findLicenseVersion(cleanID)\n\taddPlusPermutation := strings.HasSuffix(cleanID, \"orlater\")\n\tvp := versionPermutations(lv)\n\tpermSet := strset.New()\n\tversion := strings.Join(lv, \".\")\n\tfor _, p := range vp {\n\t\tif addPlusPermutation {\n\t\t\tbase := strings.TrimSuffix(cleanID, \"orlater\")\n\t\t\tplus := p + \"+\"\n\t\t\tpermSet.Add(strings.Replace(base, version, plus, 1))\n\t\t}\n\t\tpermSet.Add(strings.Replace(cleanID, version, p, 1))\n\t}\n\n\tpermSet.Add(cleanID)\n\treturn permSet.List()\n}\n\nfunc findLicenseVersion(license string) (version []string) {\n\tversionList := versionMatch.FindAllStringSubmatch(license, -1)\n\n\tif len(versionList) == 0 {\n\t\treturn version\n\t}\n\n\tfor i, v := range versionList[0] {\n\t\tif v != \"\" && i != 0 {\n\t\t\tversion = append(version, v)\n\t\t}\n\t}\n\n\treturn version\n}\n\nfunc versionPermutations(version []string) []string {\n\tver := append([]string(nil), version...)\n\tperms := strset.New()\n\tfor i := 1; i <= 3; i++ {\n\t\tif len(ver) < i+1 {\n\t\t\tver = append(ver, \"0\")\n\t\t}\n\n\t\tperm := strings.Join(ver[:i], \".\")\n\t\tbadCount := strings.Count(perm, \"0\") + strings.Count(perm, \".\")\n\n\t\tif badCount != len(perm) {\n\t\t\tperms.Add(perm)\n\t\t}\n\t}\n\n\treturn perms.List()\n}\n"
  },
  {
    "path": "internal/spdxlicense/generate/license_test.go",
    "content": "package main\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nvar (\n\tlicense1 = License{\n\t\tID:         \"ABC-1.0+\",\n\t\tName:       \"The ABC License 1.0\",\n\t\tDeprecated: true,\n\t}\n\n\tlicense2 = License{\n\t\tID:   \"ABC-1.0-or-later\",\n\t\tName: \"The ABC License 1.0\",\n\t}\n\n\tlicense3 = License{\n\t\tID:         \"ABC-1.0\",\n\t\tName:       \"The ABC License 1.0 Only\",\n\t\tDeprecated: true,\n\t}\n\n\tlicense4 = License{\n\t\tID:   \"ABC-1.0-only\",\n\t\tName: \"The ABC License 1.0 Only\",\n\t}\n\tlicense5 = License{\n\t\tID:         \"Duh-1.0\",\n\t\tName:       \"The Duh License 1.0\",\n\t\tDeprecated: true,\n\t}\n\tlicense6 = License{\n\t\tID:         \"Duh-1.0-duh\",\n\t\tName:       \"The Duh License 1.0\",\n\t\tDeprecated: true,\n\t}\n)\n\nfunc TestLicense_canReplace(t *testing.T) {\n\ttests := []struct {\n\t\tl1, l2   License\n\t\texpected bool\n\t}{\n\t\t{license1, license2, false},\n\t\t{license2, license1, true},\n\t\t{license2, license3, false},\n\t\t{license3, license2, false},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.l1.ID+\" - \"+tt.l2.ID, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, tt.l1.canReplace(tt.l2))\n\t\t})\n\t}\n}\n\nfunc TestLicensePermutations(t *testing.T) {\n\tvar tests = []struct {\n\t\tshortName    string\n\t\tpermutations []string\n\t}{\n\t\t{\n\t\t\t\"GPL-1-only\",\n\t\t\t[]string{\n\t\t\t\t\"gpl1only\",\n\t\t\t\t\"gpl1.0only\",\n\t\t\t\t\"gpl1.0.0only\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"GPL-2\",\n\t\t\t[]string{\n\t\t\t\t\"gpl2\",\n\t\t\t\t\"gpl2.0\",\n\t\t\t\t\"gpl2.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"GPL-2.0+\",\n\t\t\t[]string{\n\t\t\t\t\"gpl2+\",\n\t\t\t\t\"gpl2.0+\",\n\t\t\t\t\"gpl2.0.0+\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"GPL-3.0.0-or-later\",\n\t\t\t[]string{\n\t\t\t\t\"gpl3orlater\",\n\t\t\t\t\"gpl3.0orlater\",\n\t\t\t\t\"gpl3.0.0orlater\",\n\t\t\t\t\"gpl3.0.0+\",\n\t\t\t\t\"gpl3.0+\",\n\t\t\t\t\"gpl3+\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"abc-1.1\",\n\t\t\t[]string{\n\t\t\t\t\"abc1\",\n\t\t\t\t\"abc1.1\",\n\t\t\t\t\"abc1.1.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"oldap-2.0\",\n\t\t\t[]string{\n\t\t\t\t\"oldap2\",\n\t\t\t\t\"oldap2.0\",\n\t\t\t\t\"oldap2.0.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.shortName, func(t *testing.T) {\n\t\t\tcleanID := cleanLicenseID(test.shortName)\n\t\t\tperms := buildLicenseIDPermutations(cleanID)\n\t\t\tassert.ElementsMatch(t, test.permutations, perms)\n\t\t})\n\t}\n}\n\nfunc TestVersionPermutations(t *testing.T) {\n\tvar tests = []struct {\n\t\tversion      []string\n\t\tpermutations []string\n\t}{\n\t\t{\n\t\t\t[]string{\"1\", \"0\"},\n\t\t\t[]string{\"1\", \"1.0\", \"1.0.0\"},\n\t\t},\n\t\t{\n\t\t\t[]string{\"2\"},\n\t\t\t[]string{\"2\", \"2.0\", \"2.0.0\"},\n\t\t},\n\t\t{\n\t\t\t[]string{\"2\", \"0\"},\n\t\t\t[]string{\"2\", \"2.0\", \"2.0.0\"},\n\t\t},\n\n\t\t{\n\t\t\t[]string{\"3\", \"0\", \"0\"},\n\t\t\t[]string{\"3\", \"3.0\", \"3.0.0\"},\n\t\t},\n\t\t{\n\t\t\t[]string{\"0\", \"3\"},\n\t\t\t[]string{\"0.3\", \"0.3.0\"},\n\t\t},\n\t\t{\n\t\t\t[]string{\"0\", \"0\", \"3\"},\n\t\t\t[]string{\"0.0.3\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.version, \".\"), func(t *testing.T) {\n\t\t\tgot := versionPermutations(test.version)\n\t\t\tassert.ElementsMatch(t, test.permutations, got)\n\t\t})\n\t}\n}\n\nfunc TestFindLicenseVersion(t *testing.T) {\n\tvar tests = []struct {\n\t\tlicense string\n\t\tversion []string\n\t}{\n\t\t{\n\t\t\t\"GPL-1.0-only\",\n\t\t\t[]string{\"1\", \"0\"},\n\t\t},\n\t\t{\n\t\t\t\"GPL-2.0\",\n\t\t\t[]string{\"2\", \"0\"},\n\t\t},\n\t\t{\n\t\t\t\"GPL-2.0.0\",\n\t\t\t[]string{\"2\", \"0\", \"0\"},\n\t\t},\n\t\t{\n\t\t\t\"GPL-2\",\n\t\t\t[]string{\"2\"},\n\t\t},\n\t\t{\n\t\t\t\"php-3.01\",\n\t\t\t[]string{\"3\", \"01\"},\n\t\t},\n\t\t{\n\t\t\t\"oldap-2.0\",\n\t\t\t[]string{\"2\", \"0\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.license, func(t *testing.T) {\n\t\t\tgot := findLicenseVersion(test.license)\n\t\t\tassert.Equal(t, test.version, got)\n\t\t})\n\t}\n}\n\nfunc Test_findReplacementLicense(t *testing.T) {\n\ttests := []struct {\n\t\tl        License\n\t\texpected *License\n\t\tlicenses LicenseList\n\t}{\n\t\t{license1, nil, LicenseList{}},\n\t\t{license1, nil, LicenseList{Licenses: []License{license3}}},\n\t\t{license1, &license2, LicenseList{Licenses: []License{license2, license3}}},\n\t\t{license1, &license2, LicenseList{Licenses: []License{license2, license3, license4, license5}}},\n\t}\n\n\tfor _, tt := range tests {\n\t\tassert.Equal(t, tt.expected, tt.licenses.findReplacementLicense(tt.l))\n\t}\n}\n"
  },
  {
    "path": "internal/spdxlicense/generate/testdata/licenses.json",
    "content": "{\n  \"licenseListVersion\": \"3.20\",\n  \"licenses\": [\n    {\n      \"reference\": \"https://spdx.org/licenses/SCEA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SCEA.json\",\n      \"referenceNumber\": 0,\n      \"name\": \"SCEA Shared Source License\",\n      \"licenseId\": \"SCEA\",\n      \"seeAlso\": [\n        \"http://research.scea.com/scea_shared_source_license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RSA-MD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RSA-MD.json\",\n      \"referenceNumber\": 1,\n      \"name\": \"RSA Message-Digest License\",\n      \"licenseId\": \"RSA-MD\",\n      \"seeAlso\": [\n        \"http://www.faqs.org/rfcs/rfc1321.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Leptonica.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Leptonica.json\",\n      \"referenceNumber\": 2,\n      \"name\": \"Leptonica License\",\n      \"licenseId\": \"Leptonica\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Leptonica\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Ruby.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Ruby.json\",\n      \"referenceNumber\": 3,\n      \"name\": \"Ruby License\",\n      \"licenseId\": \"Ruby\",\n      \"seeAlso\": [\n        \"http://www.ruby-lang.org/en/LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Zlib.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Zlib.json\",\n      \"referenceNumber\": 4,\n      \"name\": \"zlib License\",\n      \"licenseId\": \"Zlib\",\n      \"seeAlso\": [\n        \"http://www.zlib.net/zlib_license.html\",\n        \"https://opensource.org/licenses/Zlib\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2.json\",\n      \"referenceNumber\": 5,\n      \"name\": \"GNU Free Documentation License v1.2\",\n      \"licenseId\": \"GFDL-1.2\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Unicode-DFS-2016.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Unicode-DFS-2016.json\",\n      \"referenceNumber\": 6,\n      \"name\": \"Unicode License Agreement - Data Files and Software (2016)\",\n      \"licenseId\": \"Unicode-DFS-2016\",\n      \"seeAlso\": [\n        \"http://www.unicode.org/copyright.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-2.5.json\",\n      \"referenceNumber\": 7,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic\",\n      \"licenseId\": \"CC-BY-NC-ND-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FSFULLRWD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FSFULLRWD.json\",\n      \"referenceNumber\": 8,\n      \"name\": \"FSF Unlimited License (With License Retention    and Warranty Disclaimer)\",\n      \"licenseId\": \"FSFULLRWD\",\n      \"seeAlso\": [\n        \"https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/QPL-1.0-INRIA-2004.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/QPL-1.0-INRIA-2004.json\",\n      \"referenceNumber\": 9,\n      \"name\": \"Q Public License 1.0 - INRIA 2004 variant\",\n      \"licenseId\": \"QPL-1.0-INRIA-2004\",\n      \"seeAlso\": [\n        \"https://github.com/maranget/hevea/blob/master/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json\",\n      \"referenceNumber\": 10,\n      \"name\": \"BSD 3-Clause No Nuclear Warranty\",\n      \"licenseId\": \"BSD-3-Clause-No-Nuclear-Warranty\",\n      \"seeAlso\": [\n        \"https://jogamp.org/git/?p\\u003dgluegen.git;a\\u003dblob_plain;f\\u003dLICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSL-2.0.json\",\n      \"referenceNumber\": 11,\n      \"name\": \"Open Software License 2.0\",\n      \"licenseId\": \"OSL-2.0\",\n      \"seeAlso\": [\n        \"http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/mpi-permissive.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/mpi-permissive.json\",\n      \"referenceNumber\": 12,\n      \"name\": \"mpi Permissive License\",\n      \"licenseId\": \"mpi-permissive\",\n      \"seeAlso\": [\n        \"https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\\u003d19#L19\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CUA-OPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CUA-OPL-1.0.json\",\n      \"referenceNumber\": 13,\n      \"name\": \"CUA Office Public License v1.0\",\n      \"licenseId\": \"CUA-OPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/CUA-OPL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0-AT.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0-AT.json\",\n      \"referenceNumber\": 14,\n      \"name\": \"Creative Commons Attribution 3.0 Austria\",\n      \"licenseId\": \"CC-BY-3.0-AT\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/at/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3.json\",\n      \"referenceNumber\": 15,\n      \"name\": \"GNU Free Documentation License v1.3\",\n      \"licenseId\": \"GFDL-1.3\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-only.json\",\n      \"referenceNumber\": 16,\n      \"name\": \"GNU Free Documentation License v1.3 only\",\n      \"licenseId\": \"GFDL-1.3-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.2.json\",\n      \"referenceNumber\": 17,\n      \"name\": \"Open LDAP Public License v2.2\",\n      \"licenseId\": \"OLDAP-2.2\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d470b0c18ec67621c85881b2733057fecf4a1acc3\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NCSA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NCSA.json\",\n      \"referenceNumber\": 18,\n      \"name\": \"University of Illinois/NCSA Open Source License\",\n      \"licenseId\": \"NCSA\",\n      \"seeAlso\": [\n        \"http://otm.illinois.edu/uiuc_openSource\",\n        \"https://opensource.org/licenses/NCSA\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPPL-1.3c.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPPL-1.3c.json\",\n      \"referenceNumber\": 19,\n      \"name\": \"LaTeX Project Public License v1.3c\",\n      \"licenseId\": \"LPPL-1.3c\",\n      \"seeAlso\": [\n        \"http://www.latex-project.org/lppl/lppl-1-3c.txt\",\n        \"https://opensource.org/licenses/LPPL-1.3c\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OpenPBS-2.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OpenPBS-2.3.json\",\n      \"referenceNumber\": 20,\n      \"name\": \"OpenPBS v2.3 Software License\",\n      \"licenseId\": \"OpenPBS-2.3\",\n      \"seeAlso\": [\n        \"https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt\",\n        \"https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LiLiQ-R-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LiLiQ-R-1.1.json\",\n      \"referenceNumber\": 21,\n      \"name\": \"Licence Libre du Québec – Réciprocité version 1.1\",\n      \"licenseId\": \"LiLiQ-R-1.1\",\n      \"seeAlso\": [\n        \"https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/\",\n        \"http://opensource.org/licenses/LiLiQ-R-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/W3C-20150513.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/W3C-20150513.json\",\n      \"referenceNumber\": 22,\n      \"name\": \"W3C Software Notice and Document License (2015-05-13)\",\n      \"licenseId\": \"W3C-20150513\",\n      \"seeAlso\": [\n        \"https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGDL-Taiwan-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGDL-Taiwan-1.0.json\",\n      \"referenceNumber\": 23,\n      \"name\": \"Taiwan Open Government Data License, version 1.0\",\n      \"licenseId\": \"OGDL-Taiwan-1.0\",\n      \"seeAlso\": [\n        \"https://data.gov.tw/license\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/O-UDA-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/O-UDA-1.0.json\",\n      \"referenceNumber\": 24,\n      \"name\": \"Open Use of Data Agreement v1.0\",\n      \"licenseId\": \"O-UDA-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md\",\n        \"https://cdla.dev/open-use-of-data-agreement-v1-0/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDLA-Permissive-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDLA-Permissive-2.0.json\",\n      \"referenceNumber\": 25,\n      \"name\": \"Community Data License Agreement Permissive 2.0\",\n      \"licenseId\": \"CDLA-Permissive-2.0\",\n      \"seeAlso\": [\n        \"https://cdla.dev/permissive-2-0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Graphics-Gems.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Graphics-Gems.json\",\n      \"referenceNumber\": 26,\n      \"name\": \"Graphics Gems License\",\n      \"licenseId\": \"Graphics-Gems\",\n      \"seeAlso\": [\n        \"https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PHP-3.01.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PHP-3.01.json\",\n      \"referenceNumber\": 27,\n      \"name\": \"PHP License v3.01\",\n      \"licenseId\": \"PHP-3.01\",\n      \"seeAlso\": [\n        \"http://www.php.net/license/3_01.txt\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0-DE.json\",\n      \"referenceNumber\": 28,\n      \"name\": \"Creative Commons Attribution 3.0 Germany\",\n      \"licenseId\": \"CC-BY-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Cube.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Cube.json\",\n      \"referenceNumber\": 29,\n      \"name\": \"Cube License\",\n      \"licenseId\": \"Cube\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Cube\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MTLL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MTLL.json\",\n      \"referenceNumber\": 30,\n      \"name\": \"Matrix Template Library License\",\n      \"licenseId\": \"MTLL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-0.json\",\n      \"referenceNumber\": 31,\n      \"name\": \"MIT No Attribution\",\n      \"licenseId\": \"MIT-0\",\n      \"seeAlso\": [\n        \"https://github.com/aws/mit-0\",\n        \"https://romanrm.net/mit-zero\",\n        \"https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/WTFPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/WTFPL.json\",\n      \"referenceNumber\": 32,\n      \"name\": \"Do What The F*ck You Want To Public License\",\n      \"licenseId\": \"WTFPL\",\n      \"seeAlso\": [\n        \"http://www.wtfpl.net/about/\",\n        \"http://sam.zoy.org/wtfpl/COPYING\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EUDatagrid.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EUDatagrid.json\",\n      \"referenceNumber\": 33,\n      \"name\": \"EU DataGrid Software License\",\n      \"licenseId\": \"EUDatagrid\",\n      \"seeAlso\": [\n        \"http://eu-datagrid.web.cern.ch/eu-datagrid/license.html\",\n        \"https://opensource.org/licenses/EUDatagrid\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RSCPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RSCPL.json\",\n      \"referenceNumber\": 34,\n      \"name\": \"Ricoh Source Code Public License\",\n      \"licenseId\": \"RSCPL\",\n      \"seeAlso\": [\n        \"http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml\",\n        \"https://opensource.org/licenses/RSCPL\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Vim.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Vim.json\",\n      \"referenceNumber\": 35,\n      \"name\": \"Vim License\",\n      \"licenseId\": \"Vim\",\n      \"seeAlso\": [\n        \"http://vimdoc.sourceforge.net/htmldoc/uganda.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/gnuplot.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/gnuplot.json\",\n      \"referenceNumber\": 36,\n      \"name\": \"gnuplot License\",\n      \"licenseId\": \"gnuplot\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Gnuplot\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/diffmark.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/diffmark.json\",\n      \"referenceNumber\": 37,\n      \"name\": \"diffmark license\",\n      \"licenseId\": \"diffmark\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/diffmark\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.1-no-RFN.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.1-no-RFN.json\",\n      \"referenceNumber\": 38,\n      \"name\": \"SIL Open Font License 1.1 with no Reserved Font Name\",\n      \"licenseId\": \"OFL-1.1-no-RFN\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL_web\",\n        \"https://opensource.org/licenses/OFL-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDDL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDDL-1.1.json\",\n      \"referenceNumber\": 39,\n      \"name\": \"Common Development and Distribution License 1.1\",\n      \"licenseId\": \"CDDL-1.1\",\n      \"seeAlso\": [\n        \"http://glassfish.java.net/public/CDDL+GPL_1_1.html\",\n        \"https://javaee.github.io/glassfish/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SugarCRM-1.1.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SugarCRM-1.1.3.json\",\n      \"referenceNumber\": 40,\n      \"name\": \"SugarCRM Public License v1.1.3\",\n      \"licenseId\": \"SugarCRM-1.1.3\",\n      \"seeAlso\": [\n        \"http://www.sugarcrm.com/crm/SPL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-4.3TAHOE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-4.3TAHOE.json\",\n      \"referenceNumber\": 41,\n      \"name\": \"BSD 4.3 TAHOE License\",\n      \"licenseId\": \"BSD-4.3TAHOE\",\n      \"seeAlso\": [\n        \"https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-with-bison-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-with-bison-exception.json\",\n      \"referenceNumber\": 42,\n      \"name\": \"GNU General Public License v2.0 w/Bison exception\",\n      \"licenseId\": \"GPL-2.0-with-bison-exception\",\n      \"seeAlso\": [\n        \"http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFFIS.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFFIS.json\",\n      \"referenceNumber\": 43,\n      \"name\": \"OFFIS License\",\n      \"licenseId\": \"OFFIS\",\n      \"seeAlso\": [\n        \"https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.1-RFN.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.1-RFN.json\",\n      \"referenceNumber\": 44,\n      \"name\": \"SIL Open Font License 1.1 with Reserved Font Name\",\n      \"licenseId\": \"OFL-1.1-RFN\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL_web\",\n        \"https://opensource.org/licenses/OFL-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Nokia.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Nokia.json\",\n      \"referenceNumber\": 45,\n      \"name\": \"Nokia Open Source License\",\n      \"licenseId\": \"Nokia\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/nokia\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/DSDP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/DSDP.json\",\n      \"referenceNumber\": 46,\n      \"name\": \"DSDP License\",\n      \"licenseId\": \"DSDP\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/DSDP\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AFL-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AFL-3.0.json\",\n      \"referenceNumber\": 47,\n      \"name\": \"Academic Free License v3.0\",\n      \"licenseId\": \"AFL-3.0\",\n      \"seeAlso\": [\n        \"http://www.rosenlaw.com/AFL3.0.htm\",\n        \"https://opensource.org/licenses/afl-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-1.0.json\",\n      \"referenceNumber\": 48,\n      \"name\": \"Creative Commons Attribution Non Commercial 1.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-C.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-C.json\",\n      \"referenceNumber\": 49,\n      \"name\": \"CeCILL-C Free Software License Agreement\",\n      \"licenseId\": \"CECILL-C\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OpenSSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OpenSSL.json\",\n      \"referenceNumber\": 50,\n      \"name\": \"OpenSSL License\",\n      \"licenseId\": \"OpenSSL\",\n      \"seeAlso\": [\n        \"http://www.openssl.org/source/license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.7.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.7.json\",\n      \"referenceNumber\": 51,\n      \"name\": \"Open LDAP Public License v2.7\",\n      \"licenseId\": \"OLDAP-2.7\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d47c2415c1df81556eeb39be6cad458ef87c534a2\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NGPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NGPL.json\",\n      \"referenceNumber\": 52,\n      \"name\": \"Nethack General Public License\",\n      \"licenseId\": \"NGPL\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/NGPL\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Linux-man-pages-copyleft.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Linux-man-pages-copyleft.json\",\n      \"referenceNumber\": 53,\n      \"name\": \"Linux man-pages Copyleft\",\n      \"licenseId\": \"Linux-man-pages-copyleft\",\n      \"seeAlso\": [\n        \"https://www.kernel.org/doc/man-pages/licenses.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-3.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-3.0.json\",\n      \"referenceNumber\": 54,\n      \"name\": \"GNU Affero General Public License v3.0\",\n      \"licenseId\": \"AGPL-3.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/agpl.txt\",\n        \"https://opensource.org/licenses/AGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.5.json\",\n      \"referenceNumber\": 55,\n      \"name\": \"Open LDAP Public License v2.5\",\n      \"licenseId\": \"OLDAP-2.5\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d6852b9d90022e8593c98205413380536b1b5a7cf\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CAL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CAL-1.0.json\",\n      \"referenceNumber\": 56,\n      \"name\": \"Cryptographic Autonomy License 1.0\",\n      \"licenseId\": \"CAL-1.0\",\n      \"seeAlso\": [\n        \"http://cryptographicautonomylicense.com/license-text.html\",\n        \"https://opensource.org/licenses/CAL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-2.0-UK.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-2.0-UK.json\",\n      \"referenceNumber\": 57,\n      \"name\": \"Creative Commons Attribution Share Alike 2.0 England and Wales\",\n      \"licenseId\": \"CC-BY-SA-2.0-UK\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TCP-wrappers.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TCP-wrappers.json\",\n      \"referenceNumber\": 58,\n      \"name\": \"TCP Wrappers License\",\n      \"licenseId\": \"TCP-wrappers\",\n      \"seeAlso\": [\n        \"http://rc.quest.com/topics/openssh/license.php#tcpwrappers\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Dotseqn.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Dotseqn.json\",\n      \"referenceNumber\": 59,\n      \"name\": \"Dotseqn License\",\n      \"licenseId\": \"Dotseqn\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Dotseqn\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSL-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSL-3.0.json\",\n      \"referenceNumber\": 60,\n      \"name\": \"Open Software License 3.0\",\n      \"licenseId\": \"OSL-3.0\",\n      \"seeAlso\": [\n        \"https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm\",\n        \"https://opensource.org/licenses/OSL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Linux-OpenIB.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Linux-OpenIB.json\",\n      \"referenceNumber\": 61,\n      \"name\": \"Linux Kernel Variant of OpenIB.org license\",\n      \"licenseId\": \"Linux-OpenIB\",\n      \"seeAlso\": [\n        \"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SMPPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SMPPL.json\",\n      \"referenceNumber\": 62,\n      \"name\": \"Secure Messaging Protocol Public License\",\n      \"licenseId\": \"SMPPL\",\n      \"seeAlso\": [\n        \"https://github.com/dcblake/SMP/blob/master/Documentation/License.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-1.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-1.0.json\",\n      \"referenceNumber\": 63,\n      \"name\": \"Affero General Public License v1.0\",\n      \"licenseId\": \"AGPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.affero.org/oagpl.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json\",\n      \"referenceNumber\": 64,\n      \"name\": \"GNU Free Documentation License v1.3 or later - no invariants\",\n      \"licenseId\": \"GFDL-1.3-no-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Net-SNMP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Net-SNMP.json\",\n      \"referenceNumber\": 65,\n      \"name\": \"Net-SNMP License\",\n      \"licenseId\": \"Net-SNMP\",\n      \"seeAlso\": [\n        \"http://net-snmp.sourceforge.net/about/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LAL-1.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LAL-1.3.json\",\n      \"referenceNumber\": 66,\n      \"name\": \"Licence Art Libre 1.3\",\n      \"licenseId\": \"LAL-1.3\",\n      \"seeAlso\": [\n        \"https://artlibre.org/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HPND-Markus-Kuhn.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HPND-Markus-Kuhn.json\",\n      \"referenceNumber\": 67,\n      \"name\": \"Historical Permission Notice and Disclaimer - Markus Kuhn variant\",\n      \"licenseId\": \"HPND-Markus-Kuhn\",\n      \"seeAlso\": [\n        \"https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c\",\n        \"https://sourceware.org/git/?p\\u003dbinutils-gdb.git;a\\u003dblob;f\\u003dreadline/readline/support/wcwidth.c;h\\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\\u003dHEAD#l55\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FSFULLR.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FSFULLR.json\",\n      \"referenceNumber\": 68,\n      \"name\": \"FSF Unlimited License (with License Retention)\",\n      \"licenseId\": \"FSFULLR\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/QPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/QPL-1.0.json\",\n      \"referenceNumber\": 69,\n      \"name\": \"Q Public License 1.0\",\n      \"licenseId\": \"QPL-1.0\",\n      \"seeAlso\": [\n        \"http://doc.qt.nokia.com/3.3/license.html\",\n        \"https://opensource.org/licenses/QPL-1.0\",\n        \"https://doc.qt.io/archives/3.3/license.html\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AFL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AFL-1.2.json\",\n      \"referenceNumber\": 70,\n      \"name\": \"Academic Free License v1.2\",\n      \"licenseId\": \"AFL-1.2\",\n      \"seeAlso\": [\n        \"http://opensource.linux-mirror.org/licenses/afl-1.2.txt\",\n        \"http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AFL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AFL-1.1.json\",\n      \"referenceNumber\": 71,\n      \"name\": \"Academic Free License v1.1\",\n      \"licenseId\": \"AFL-1.1\",\n      \"seeAlso\": [\n        \"http://opensource.linux-mirror.org/licenses/afl-1.1.txt\",\n        \"http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Apache-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Apache-2.0.json\",\n      \"referenceNumber\": 72,\n      \"name\": \"Apache License 2.0\",\n      \"licenseId\": \"Apache-2.0\",\n      \"seeAlso\": [\n        \"https://www.apache.org/licenses/LICENSE-2.0\",\n        \"https://opensource.org/licenses/Apache-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/UPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/UPL-1.0.json\",\n      \"referenceNumber\": 73,\n      \"name\": \"Universal Permissive License v1.0\",\n      \"licenseId\": \"UPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/UPL\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GLWTPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GLWTPL.json\",\n      \"referenceNumber\": 74,\n      \"name\": \"Good Luck With That Public License\",\n      \"licenseId\": \"GLWTPL\",\n      \"seeAlso\": [\n        \"https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RPL-1.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RPL-1.5.json\",\n      \"referenceNumber\": 75,\n      \"name\": \"Reciprocal Public License 1.5\",\n      \"licenseId\": \"RPL-1.5\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/RPL-1.5\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/bzip2-1.0.5.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/bzip2-1.0.5.json\",\n      \"referenceNumber\": 76,\n      \"name\": \"bzip2 and libbzip2 License v1.0.5\",\n      \"licenseId\": \"bzip2-1.0.5\",\n      \"seeAlso\": [\n        \"https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html\",\n        \"http://bzip.org/1.0.5/bzip2-manual-1.0.5.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.0.json\",\n      \"referenceNumber\": 77,\n      \"name\": \"SIL Open Font License 1.0\",\n      \"licenseId\": \"OFL-1.0\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL10_web\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPL-1.02.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPL-1.02.json\",\n      \"referenceNumber\": 78,\n      \"name\": \"Lucent Public License v1.02\",\n      \"licenseId\": \"LPL-1.02\",\n      \"seeAlso\": [\n        \"http://plan9.bell-labs.com/plan9/license.html\",\n        \"https://opensource.org/licenses/LPL-1.02\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.1.json\",\n      \"referenceNumber\": 79,\n      \"name\": \"SIL Open Font License 1.1\",\n      \"licenseId\": \"OFL-1.1\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL_web\",\n        \"https://opensource.org/licenses/OFL-1.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Mup.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Mup.json\",\n      \"referenceNumber\": 80,\n      \"name\": \"Mup License\",\n      \"licenseId\": \"Mup\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Mup\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Borceux.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Borceux.json\",\n      \"referenceNumber\": 81,\n      \"name\": \"Borceux license\",\n      \"licenseId\": \"Borceux\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Borceux\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json\",\n      \"referenceNumber\": 82,\n      \"name\": \"Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France\",\n      \"licenseId\": \"CC-BY-NC-SA-2.0-FR\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json\",\n      \"referenceNumber\": 83,\n      \"name\": \"BSD with Attribution and HPND disclaimer\",\n      \"licenseId\": \"BSD-Attribution-HPND-disclaimer\",\n      \"seeAlso\": [\n        \"https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGL-UK-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGL-UK-1.0.json\",\n      \"referenceNumber\": 84,\n      \"name\": \"Open Government Licence v1.0\",\n      \"licenseId\": \"OGL-UK-1.0\",\n      \"seeAlso\": [\n        \"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Parity-6.0.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Parity-6.0.0.json\",\n      \"referenceNumber\": 85,\n      \"name\": \"The Parity Public License 6.0.0\",\n      \"licenseId\": \"Parity-6.0.0\",\n      \"seeAlso\": [\n        \"https://paritylicense.com/versions/6.0.0.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SPL-1.0.json\",\n      \"referenceNumber\": 86,\n      \"name\": \"Sun Public License v1.0\",\n      \"licenseId\": \"SPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/SPL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-2.0.json\",\n      \"referenceNumber\": 87,\n      \"name\": \"CeCILL Free Software License Agreement v2.0\",\n      \"licenseId\": \"CECILL-2.0\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL_V2-en.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TPDL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TPDL.json\",\n      \"referenceNumber\": 88,\n      \"name\": \"Time::ParseDate License\",\n      \"licenseId\": \"TPDL\",\n      \"seeAlso\": [\n        \"https://metacpan.org/pod/Time::ParseDate#LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LOOP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LOOP.json\",\n      \"referenceNumber\": 89,\n      \"name\": \"Common Lisp LOOP License\",\n      \"licenseId\": \"LOOP\",\n      \"seeAlso\": [\n        \"https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp\",\n        \"http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\\u003dVersion_2_6_13pre\",\n        \"https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp\",\n        \"https://github.com/cl-adams/adams/blob/master/LICENSE.md\",\n        \"https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp\",\n        \"https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-Source-Code.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-Source-Code.json\",\n      \"referenceNumber\": 90,\n      \"name\": \"BSD Source Code Attribution\",\n      \"licenseId\": \"BSD-Source-Code\",\n      \"seeAlso\": [\n        \"https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1.json\",\n      \"referenceNumber\": 91,\n      \"name\": \"GNU Free Documentation License v1.1\",\n      \"licenseId\": \"GFDL-1.1\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MulanPSL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MulanPSL-2.0.json\",\n      \"referenceNumber\": 92,\n      \"name\": \"Mulan Permissive Software License, Version 2\",\n      \"licenseId\": \"MulanPSL-2.0\",\n      \"seeAlso\": [\n        \"https://license.coscl.org.cn/MulanPSL2/\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.8.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.8.json\",\n      \"referenceNumber\": 93,\n      \"name\": \"Open LDAP Public License v2.8\",\n      \"licenseId\": \"OLDAP-2.8\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/software/release/license.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json\",\n      \"referenceNumber\": 94,\n      \"name\": \"BSD 3-Clause No Nuclear License 2014\",\n      \"licenseId\": \"BSD-3-Clause-No-Nuclear-License-2014\",\n      \"seeAlso\": [\n        \"https://java.net/projects/javaeetutorial/pages/BerkeleyLicense\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FDK-AAC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FDK-AAC.json\",\n      \"referenceNumber\": 95,\n      \"name\": \"Fraunhofer FDK AAC Codec Library\",\n      \"licenseId\": \"FDK-AAC\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/FDK-AAC\",\n        \"https://directory.fsf.org/wiki/License:Fdk\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-1.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-1.0-or-later.json\",\n      \"referenceNumber\": 96,\n      \"name\": \"GNU General Public License v1.0 or later\",\n      \"licenseId\": \"GPL-1.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Sendmail.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Sendmail.json\",\n      \"referenceNumber\": 97,\n      \"name\": \"Sendmail License\",\n      \"licenseId\": \"Sendmail\",\n      \"seeAlso\": [\n        \"http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf\",\n        \"https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-3.0-DE.json\",\n      \"referenceNumber\": 98,\n      \"name\": \"Creative Commons Attribution No Derivatives 3.0 Germany\",\n      \"licenseId\": \"CC-BY-ND-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Afmparse.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Afmparse.json\",\n      \"referenceNumber\": 99,\n      \"name\": \"Afmparse License\",\n      \"licenseId\": \"Afmparse\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Afmparse\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-feh.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-feh.json\",\n      \"referenceNumber\": 100,\n      \"name\": \"feh License\",\n      \"licenseId\": \"MIT-feh\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MIT#feh\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-2.0.json\",\n      \"referenceNumber\": 101,\n      \"name\": \"Creative Commons Attribution No Derivatives 2.0 Generic\",\n      \"licenseId\": \"CC-BY-ND-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SHL-0.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SHL-0.5.json\",\n      \"referenceNumber\": 102,\n      \"name\": \"Solderpad Hardware License v0.5\",\n      \"licenseId\": \"SHL-0.5\",\n      \"seeAlso\": [\n        \"https://solderpad.org/licenses/SHL-0.5/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-CMU.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-CMU.json\",\n      \"referenceNumber\": 103,\n      \"name\": \"CMU License\",\n      \"licenseId\": \"MIT-CMU\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:MIT?rd\\u003dLicensing/MIT#CMU_Style\",\n        \"https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Adobe-2006.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Adobe-2006.json\",\n      \"referenceNumber\": 104,\n      \"name\": \"Adobe Systems Incorporated Source Code License Agreement\",\n      \"licenseId\": \"Adobe-2006\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/AdobeLicense\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EPL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EPL-2.0.json\",\n      \"referenceNumber\": 105,\n      \"name\": \"Eclipse Public License 2.0\",\n      \"licenseId\": \"EPL-2.0\",\n      \"seeAlso\": [\n        \"https://www.eclipse.org/legal/epl-2.0\",\n        \"https://www.opensource.org/licenses/EPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ODbL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ODbL-1.0.json\",\n      \"referenceNumber\": 106,\n      \"name\": \"Open Data Commons Open Database License v1.0\",\n      \"licenseId\": \"ODbL-1.0\",\n      \"seeAlso\": [\n        \"http://www.opendatacommons.org/licenses/odbl/1.0/\",\n        \"https://opendatacommons.org/licenses/odbl/1-0/\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CERN-OHL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CERN-OHL-1.1.json\",\n      \"referenceNumber\": 107,\n      \"name\": \"CERN Open Hardware Licence v1.1\",\n      \"licenseId\": \"CERN-OHL-1.1\",\n      \"seeAlso\": [\n        \"https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/App-s2p.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/App-s2p.json\",\n      \"referenceNumber\": 108,\n      \"name\": \"App::s2p License\",\n      \"licenseId\": \"App-s2p\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/App-s2p\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SWL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SWL.json\",\n      \"referenceNumber\": 109,\n      \"name\": \"Scheme Widget Library (SWL) Software License Agreement\",\n      \"licenseId\": \"SWL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/SWL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0+.json\",\n      \"referenceNumber\": 110,\n      \"name\": \"GNU General Public License v3.0 or later\",\n      \"licenseId\": \"GPL-3.0+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gpl-3.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NASA-1.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NASA-1.3.json\",\n      \"referenceNumber\": 111,\n      \"name\": \"NASA Open Source Agreement 1.3\",\n      \"licenseId\": \"NASA-1.3\",\n      \"seeAlso\": [\n        \"http://ti.arc.nasa.gov/opensource/nosa/\",\n        \"https://opensource.org/licenses/NASA-1.3\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.2.1.json\",\n      \"referenceNumber\": 112,\n      \"name\": \"Open LDAP Public License v2.2.1\",\n      \"licenseId\": \"OLDAP-2.2.1\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d4bc786f34b50aa301be6f5600f58a980070f481e\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Libpng.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Libpng.json\",\n      \"referenceNumber\": 113,\n      \"name\": \"libpng License\",\n      \"licenseId\": \"Libpng\",\n      \"seeAlso\": [\n        \"http://www.libpng.org/pub/png/src/libpng-LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-2-Clause-NetBSD.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-2-Clause-NetBSD.json\",\n      \"referenceNumber\": 114,\n      \"name\": \"BSD 2-Clause NetBSD License\",\n      \"licenseId\": \"BSD-2-Clause-NetBSD\",\n      \"seeAlso\": [\n        \"http://www.netbsd.org/about/redistribution.html#default\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/checkmk.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/checkmk.json\",\n      \"referenceNumber\": 115,\n      \"name\": \"Checkmk License\",\n      \"licenseId\": \"checkmk\",\n      \"seeAlso\": [\n        \"https://github.com/libcheck/check/blob/master/checkmk/checkmk.in\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ZPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ZPL-1.1.json\",\n      \"referenceNumber\": 116,\n      \"name\": \"Zope Public License 1.1\",\n      \"licenseId\": \"ZPL-1.1\",\n      \"seeAlso\": [\n        \"http://old.zope.org/Resources/License/ZPL-1.1\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Saxpath.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Saxpath.json\",\n      \"referenceNumber\": 117,\n      \"name\": \"Saxpath License\",\n      \"licenseId\": \"Saxpath\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Saxpath_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/xinetd.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/xinetd.json\",\n      \"referenceNumber\": 118,\n      \"name\": \"xinetd License\",\n      \"licenseId\": \"xinetd\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Xinetd_License\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HP-1986.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HP-1986.json\",\n      \"referenceNumber\": 119,\n      \"name\": \"Hewlett-Packard 1986 License\",\n      \"licenseId\": \"HP-1986\",\n      \"seeAlso\": [\n        \"https://sourceware.org/git/?p\\u003dnewlib-cygwin.git;a\\u003dblob;f\\u003dnewlib/libc/machine/hppa/memchr.S;h\\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\\u003dHEAD#l2\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SSH-OpenSSH.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SSH-OpenSSH.json\",\n      \"referenceNumber\": 120,\n      \"name\": \"SSH OpenSSH license\",\n      \"licenseId\": \"SSH-OpenSSH\",\n      \"seeAlso\": [\n        \"https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json\",\n      \"referenceNumber\": 121,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany\",\n      \"licenseId\": \"CC-BY-NC-ND-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APAFML.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APAFML.json\",\n      \"referenceNumber\": 122,\n      \"name\": \"Adobe Postscript AFM License\",\n      \"licenseId\": \"APAFML\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PHP-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PHP-3.0.json\",\n      \"referenceNumber\": 123,\n      \"name\": \"PHP License v3.0\",\n      \"licenseId\": \"PHP-3.0\",\n      \"seeAlso\": [\n        \"http://www.php.net/license/3_0.txt\",\n        \"https://opensource.org/licenses/PHP-3.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-only.json\",\n      \"referenceNumber\": 124,\n      \"name\": \"GNU Free Documentation License v1.2 only\",\n      \"licenseId\": \"GFDL-1.2-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/UCAR.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/UCAR.json\",\n      \"referenceNumber\": 125,\n      \"name\": \"UCAR License\",\n      \"licenseId\": \"UCAR\",\n      \"seeAlso\": [\n        \"https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ErlPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ErlPL-1.1.json\",\n      \"referenceNumber\": 126,\n      \"name\": \"Erlang Public License v1.1\",\n      \"licenseId\": \"ErlPL-1.1\",\n      \"seeAlso\": [\n        \"http://www.erlang.org/EPLICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPPL-1.3a.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPPL-1.3a.json\",\n      \"referenceNumber\": 127,\n      \"name\": \"LaTeX Project Public License v1.3a\",\n      \"licenseId\": \"LPPL-1.3a\",\n      \"seeAlso\": [\n        \"http://www.latex-project.org/lppl/lppl-1-3a.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CERN-OHL-S-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CERN-OHL-S-2.0.json\",\n      \"referenceNumber\": 128,\n      \"name\": \"CERN Open Hardware Licence Version 2 - Strongly Reciprocal\",\n      \"licenseId\": \"CERN-OHL-S-2.0\",\n      \"seeAlso\": [\n        \"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT.json\",\n      \"referenceNumber\": 129,\n      \"name\": \"MIT License\",\n      \"licenseId\": \"MIT\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/MIT\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-2.1-JP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-2.1-JP.json\",\n      \"referenceNumber\": 130,\n      \"name\": \"Creative Commons Attribution Share Alike 2.1 Japan\",\n      \"licenseId\": \"CC-BY-SA-2.1-JP\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-4.3RENO.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-4.3RENO.json\",\n      \"referenceNumber\": 131,\n      \"name\": \"BSD 4.3 RENO License\",\n      \"licenseId\": \"BSD-4.3RENO\",\n      \"seeAlso\": [\n        \"https://sourceware.org/git/?p\\u003dbinutils-gdb.git;a\\u003dblob;f\\u003dlibiberty/strcasecmp.c;h\\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\\u003dHEAD\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CMU-Mach.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CMU-Mach.json\",\n      \"referenceNumber\": 132,\n      \"name\": \"CMU Mach License\",\n      \"licenseId\": \"CMU-Mach\",\n      \"seeAlso\": [\n        \"https://www.cs.cmu.edu/~410/licenses.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0-US.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0-US.json\",\n      \"referenceNumber\": 133,\n      \"name\": \"Creative Commons Attribution 3.0 United States\",\n      \"licenseId\": \"CC-BY-3.0-US\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/us/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TOSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TOSL.json\",\n      \"referenceNumber\": 134,\n      \"name\": \"Trusster Open Source License\",\n      \"licenseId\": \"TOSL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/TOSL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Giftware.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Giftware.json\",\n      \"referenceNumber\": 135,\n      \"name\": \"Giftware License\",\n      \"licenseId\": \"Giftware\",\n      \"seeAlso\": [\n        \"http://liballeg.org/license.html#allegro-4-the-giftware-license\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/dvipdfm.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/dvipdfm.json\",\n      \"referenceNumber\": 136,\n      \"name\": \"dvipdfm License\",\n      \"licenseId\": \"dvipdfm\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/dvipdfm\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-only.json\",\n      \"referenceNumber\": 137,\n      \"name\": \"GNU Free Documentation License v1.1 only\",\n      \"licenseId\": \"GFDL-1.1-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Crossword.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Crossword.json\",\n      \"referenceNumber\": 138,\n      \"name\": \"Crossword License\",\n      \"licenseId\": \"Crossword\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Crossword\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.0.json\",\n      \"referenceNumber\": 139,\n      \"name\": \"GNU Library General Public License v2 only\",\n      \"licenseId\": \"LGPL-2.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NCGL-UK-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NCGL-UK-2.0.json\",\n      \"referenceNumber\": 140,\n      \"name\": \"Non-Commercial Government Licence\",\n      \"licenseId\": \"NCGL-UK-2.0\",\n      \"seeAlso\": [\n        \"http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NPL-1.0.json\",\n      \"referenceNumber\": 141,\n      \"name\": \"Netscape Public License v1.0\",\n      \"licenseId\": \"NPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.mozilla.org/MPL/NPL/1.0/\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SchemeReport.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SchemeReport.json\",\n      \"referenceNumber\": 142,\n      \"name\": \"Scheme Language Report License\",\n      \"licenseId\": \"SchemeReport\",\n      \"seeAlso\": [],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NLOD-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NLOD-2.0.json\",\n      \"referenceNumber\": 143,\n      \"name\": \"Norwegian Licence for Open Government Data (NLOD) 2.0\",\n      \"licenseId\": \"NLOD-2.0\",\n      \"seeAlso\": [\n        \"http://data.norge.no/nlod/en/2.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Intel-ACPI.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Intel-ACPI.json\",\n      \"referenceNumber\": 144,\n      \"name\": \"Intel ACPI Software License Agreement\",\n      \"licenseId\": \"Intel-ACPI\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.0-or-later.json\",\n      \"referenceNumber\": 145,\n      \"name\": \"GNU Library General Public License v2 or later\",\n      \"licenseId\": \"LGPL-2.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SMLNJ.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SMLNJ.json\",\n      \"referenceNumber\": 146,\n      \"name\": \"Standard ML of New Jersey License\",\n      \"licenseId\": \"SMLNJ\",\n      \"seeAlso\": [\n        \"https://www.smlnj.org/license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-or-later.json\",\n      \"referenceNumber\": 147,\n      \"name\": \"GNU Free Documentation License v1.2 or later\",\n      \"licenseId\": \"GFDL-1.2-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Bitstream-Charter.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Bitstream-Charter.json\",\n      \"referenceNumber\": 148,\n      \"name\": \"Bitstream Charter Font License\",\n      \"licenseId\": \"Bitstream-Charter\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Charter#License_Text\",\n        \"https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Elastic-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Elastic-2.0.json\",\n      \"referenceNumber\": 149,\n      \"name\": \"Elastic License 2.0\",\n      \"licenseId\": \"Elastic-2.0\",\n      \"seeAlso\": [\n        \"https://www.elastic.co/licensing/elastic-license\",\n        \"https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-3.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-3.0-or-later.json\",\n      \"referenceNumber\": 150,\n      \"name\": \"GNU Lesser General Public License v3.0 or later\",\n      \"licenseId\": \"LGPL-3.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/lgpl-3.0-standalone.html\",\n        \"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt\",\n        \"https://opensource.org/licenses/LGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ECL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ECL-1.0.json\",\n      \"referenceNumber\": 151,\n      \"name\": \"Educational Community License v1.0\",\n      \"licenseId\": \"ECL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/ECL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Wsuipa.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Wsuipa.json\",\n      \"referenceNumber\": 152,\n      \"name\": \"Wsuipa License\",\n      \"licenseId\": \"Wsuipa\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Wsuipa\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Sendmail-8.23.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Sendmail-8.23.json\",\n      \"referenceNumber\": 153,\n      \"name\": \"Sendmail License 8.23\",\n      \"licenseId\": \"Sendmail-8.23\",\n      \"seeAlso\": [\n        \"https://www.proofpoint.com/sites/default/files/sendmail-license.pdf\",\n        \"https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-4.0.json\",\n      \"referenceNumber\": 154,\n      \"name\": \"Creative Commons Attribution Share Alike 4.0 International\",\n      \"licenseId\": \"CC-BY-SA-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ODC-By-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ODC-By-1.0.json\",\n      \"referenceNumber\": 155,\n      \"name\": \"Open Data Commons Attribution License v1.0\",\n      \"licenseId\": \"ODC-By-1.0\",\n      \"seeAlso\": [\n        \"https://opendatacommons.org/licenses/by/1.0/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.1-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.1-or-later.json\",\n      \"referenceNumber\": 156,\n      \"name\": \"GNU Lesser General Public License v2.1 or later\",\n      \"licenseId\": \"LGPL-2.1-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html\",\n        \"https://opensource.org/licenses/LGPL-2.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/etalab-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/etalab-2.0.json\",\n      \"referenceNumber\": 157,\n      \"name\": \"Etalab Open License 2.0\",\n      \"licenseId\": \"etalab-2.0\",\n      \"seeAlso\": [\n        \"https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf\",\n        \"https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Xerox.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Xerox.json\",\n      \"referenceNumber\": 158,\n      \"name\": \"Xerox License\",\n      \"licenseId\": \"Xerox\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Xerox\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-4.0.json\",\n      \"referenceNumber\": 159,\n      \"name\": \"Creative Commons Attribution 4.0 International\",\n      \"licenseId\": \"CC-BY-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Zend-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Zend-2.0.json\",\n      \"referenceNumber\": 160,\n      \"name\": \"Zend License v2.0\",\n      \"licenseId\": \"Zend-2.0\",\n      \"seeAlso\": [\n        \"https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Zimbra-1.4.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Zimbra-1.4.json\",\n      \"referenceNumber\": 161,\n      \"name\": \"Zimbra Public License v1.4\",\n      \"licenseId\": \"Zimbra-1.4\",\n      \"seeAlso\": [\n        \"http://www.zimbra.com/legal/zimbra-public-license-1-4\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Qhull.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Qhull.json\",\n      \"referenceNumber\": 162,\n      \"name\": \"Qhull License\",\n      \"licenseId\": \"Qhull\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Qhull\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/curl.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/curl.json\",\n      \"referenceNumber\": 163,\n      \"name\": \"curl License\",\n      \"licenseId\": \"curl\",\n      \"seeAlso\": [\n        \"https://github.com/bagder/curl/blob/master/COPYING\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/W3C.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/W3C.json\",\n      \"referenceNumber\": 164,\n      \"name\": \"W3C Software Notice and License (2002-12-31)\",\n      \"licenseId\": \"W3C\",\n      \"seeAlso\": [\n        \"http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html\",\n        \"https://opensource.org/licenses/W3C\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Hippocratic-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Hippocratic-2.1.json\",\n      \"referenceNumber\": 165,\n      \"name\": \"Hippocratic License 2.1\",\n      \"licenseId\": \"Hippocratic-2.1\",\n      \"seeAlso\": [\n        \"https://firstdonoharm.dev/version/2/1/license.html\",\n        \"https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CPL-1.0.json\",\n      \"referenceNumber\": 166,\n      \"name\": \"Common Public License 1.0\",\n      \"licenseId\": \"CPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/CPL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-2-Clause.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-2-Clause.json\",\n      \"referenceNumber\": 167,\n      \"name\": \"BSD 2-Clause \\\"Simplified\\\" License\",\n      \"licenseId\": \"BSD-2-Clause\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/BSD-2-Clause\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Caldera.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Caldera.json\",\n      \"referenceNumber\": 168,\n      \"name\": \"Caldera License\",\n      \"licenseId\": \"Caldera\",\n      \"seeAlso\": [\n        \"http://www.lemis.com/grog/UNIX/ancient-source-all.pdf\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OPUBL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OPUBL-1.0.json\",\n      \"referenceNumber\": 169,\n      \"name\": \"Open Publication License v1.0\",\n      \"licenseId\": \"OPUBL-1.0\",\n      \"seeAlso\": [\n        \"http://opencontent.org/openpub/\",\n        \"https://www.debian.org/opl\",\n        \"https://www.ctan.org/license/opl\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json\",\n      \"referenceNumber\": 170,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 2.0 Germany\",\n      \"licenseId\": \"CC-BY-NC-SA-2.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDL-1.0.json\",\n      \"referenceNumber\": 171,\n      \"name\": \"Common Documentation License 1.0\",\n      \"licenseId\": \"CDL-1.0\",\n      \"seeAlso\": [\n        \"http://www.opensource.apple.com/cdl/\",\n        \"https://fedoraproject.org/wiki/Licensing/Common_Documentation_License\",\n        \"https://www.gnu.org/licenses/license-list.html#ACDL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MS-LPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MS-LPL.json\",\n      \"referenceNumber\": 172,\n      \"name\": \"Microsoft Limited Public License\",\n      \"licenseId\": \"MS-LPL\",\n      \"seeAlso\": [\n        \"https://www.openhub.net/licenses/mslpl\",\n        \"https://github.com/gabegundy/atlserver/blob/master/License.txt\",\n        \"https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NAIST-2003.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NAIST-2003.json\",\n      \"referenceNumber\": 173,\n      \"name\": \"Nara Institute of Science and Technology License (2003)\",\n      \"licenseId\": \"NAIST-2003\",\n      \"seeAlso\": [\n        \"https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text\",\n        \"https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json\",\n      \"referenceNumber\": 174,\n      \"name\": \"GNU Free Documentation License v1.1 or later - invariants\",\n      \"licenseId\": \"GFDL-1.1-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-only.json\",\n      \"referenceNumber\": 175,\n      \"name\": \"GNU General Public License v2.0 only\",\n      \"licenseId\": \"GPL-2.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BitTorrent-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BitTorrent-1.1.json\",\n      \"referenceNumber\": 176,\n      \"name\": \"BitTorrent Open Source License v1.1\",\n      \"licenseId\": \"BitTorrent-1.1\",\n      \"seeAlso\": [\n        \"http://directory.fsf.org/wiki/License:BitTorrentOSL1.1\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json\",\n      \"referenceNumber\": 177,\n      \"name\": \"GNU General Public License v2.0 w/GCC Runtime Library exception\",\n      \"licenseId\": \"GPL-2.0-with-GCC-exception\",\n      \"seeAlso\": [\n        \"https://gcc.gnu.org/git/?p\\u003dgcc.git;a\\u003dblob;f\\u003dgcc/libgcc1.c;h\\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IPL-1.0.json\",\n      \"referenceNumber\": 178,\n      \"name\": \"IBM Public License v1.0\",\n      \"licenseId\": \"IPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/IPL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-1.1.json\",\n      \"referenceNumber\": 179,\n      \"name\": \"CeCILL Free Software License Agreement v1.1\",\n      \"licenseId\": \"CECILL-1.1\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json\",\n      \"referenceNumber\": 180,\n      \"name\": \"Cryptographic Autonomy License 1.0 (Combined Work Exception)\",\n      \"licenseId\": \"CAL-1.0-Combined-Work-Exception\",\n      \"seeAlso\": [\n        \"http://cryptographicautonomylicense.com/license-text.html\",\n        \"https://opensource.org/licenses/CAL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PDDL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PDDL-1.0.json\",\n      \"referenceNumber\": 181,\n      \"name\": \"Open Data Commons Public Domain Dedication \\u0026 License 1.0\",\n      \"licenseId\": \"PDDL-1.0\",\n      \"seeAlso\": [\n        \"http://opendatacommons.org/licenses/pddl/1.0/\",\n        \"https://opendatacommons.org/licenses/pddl/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ANTLR-PD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ANTLR-PD.json\",\n      \"referenceNumber\": 182,\n      \"name\": \"ANTLR Software Rights Notice\",\n      \"licenseId\": \"ANTLR-PD\",\n      \"seeAlso\": [\n        \"http://www.antlr2.org/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-or-later.json\",\n      \"referenceNumber\": 183,\n      \"name\": \"GNU General Public License v2.0 or later\",\n      \"licenseId\": \"GPL-2.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IJG.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IJG.json\",\n      \"referenceNumber\": 184,\n      \"name\": \"Independent JPEG Group License\",\n      \"licenseId\": \"IJG\",\n      \"seeAlso\": [\n        \"http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\\u003d1.2\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-1.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-1.0-only.json\",\n      \"referenceNumber\": 185,\n      \"name\": \"Affero General Public License v1.0 only\",\n      \"licenseId\": \"AGPL-1.0-only\",\n      \"seeAlso\": [\n        \"http://www.affero.org/oagpl.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Spencer-99.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Spencer-99.json\",\n      \"referenceNumber\": 186,\n      \"name\": \"Spencer License 99\",\n      \"licenseId\": \"Spencer-99\",\n      \"seeAlso\": [\n        \"http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.1+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.1+.json\",\n      \"referenceNumber\": 187,\n      \"name\": \"GNU Lesser General Public License v2.1 or later\",\n      \"licenseId\": \"LGPL-2.1+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html\",\n        \"https://opensource.org/licenses/LGPL-2.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-4-Clause-UC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-4-Clause-UC.json\",\n      \"referenceNumber\": 188,\n      \"name\": \"BSD-4-Clause (University of California-Specific)\",\n      \"licenseId\": \"BSD-4-Clause-UC\",\n      \"seeAlso\": [\n        \"http://www.freebsd.org/copyright/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC0-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC0-1.0.json\",\n      \"referenceNumber\": 189,\n      \"name\": \"Creative Commons Zero v1.0 Universal\",\n      \"licenseId\": \"CC0-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/publicdomain/zero/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MPL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MPL-2.0.json\",\n      \"referenceNumber\": 190,\n      \"name\": \"Mozilla Public License 2.0\",\n      \"licenseId\": \"MPL-2.0\",\n      \"seeAlso\": [\n        \"https://www.mozilla.org/MPL/2.0/\",\n        \"https://opensource.org/licenses/MPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json\",\n      \"referenceNumber\": 191,\n      \"name\": \"LZMA SDK License (versions 9.11 to 9.20)\",\n      \"licenseId\": \"LZMA-SDK-9.11-to-9.20\",\n      \"seeAlso\": [\n        \"https://www.7-zip.org/sdk.html\",\n        \"https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Sleepycat.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Sleepycat.json\",\n      \"referenceNumber\": 192,\n      \"name\": \"Sleepycat License\",\n      \"licenseId\": \"Sleepycat\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Sleepycat\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CrystalStacker.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CrystalStacker.json\",\n      \"referenceNumber\": 193,\n      \"name\": \"CrystalStacker License\",\n      \"licenseId\": \"CrystalStacker\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\\u003dLicensing/CrystalStacker\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json\",\n      \"referenceNumber\": 194,\n      \"name\": \"Mozilla Public License 2.0 (no copyleft exception)\",\n      \"licenseId\": \"MPL-2.0-no-copyleft-exception\",\n      \"seeAlso\": [\n        \"https://www.mozilla.org/MPL/2.0/\",\n        \"https://opensource.org/licenses/MPL-2.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Unicode-TOU.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Unicode-TOU.json\",\n      \"referenceNumber\": 195,\n      \"name\": \"Unicode Terms of Use\",\n      \"licenseId\": \"Unicode-TOU\",\n      \"seeAlso\": [\n        \"http://www.unicode.org/copyright.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FreeImage.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FreeImage.json\",\n      \"referenceNumber\": 196,\n      \"name\": \"FreeImage Public License v1.0\",\n      \"licenseId\": \"FreeImage\",\n      \"seeAlso\": [\n        \"http://freeimage.sourceforge.net/freeimage-license.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AFL-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AFL-2.1.json\",\n      \"referenceNumber\": 197,\n      \"name\": \"Academic Free License v2.1\",\n      \"licenseId\": \"AFL-2.1\",\n      \"seeAlso\": [\n        \"http://opensource.linux-mirror.org/licenses/afl-2.1.txt\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NBPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NBPL-1.0.json\",\n      \"referenceNumber\": 198,\n      \"name\": \"Net Boolean Public License v1\",\n      \"licenseId\": \"NBPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NLOD-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NLOD-1.0.json\",\n      \"referenceNumber\": 199,\n      \"name\": \"Norwegian Licence for Open Government Data (NLOD) 1.0\",\n      \"licenseId\": \"NLOD-1.0\",\n      \"seeAlso\": [\n        \"http://data.norge.no/nlod/en/1.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ADSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ADSL.json\",\n      \"referenceNumber\": 200,\n      \"name\": \"Amazon Digital Services License\",\n      \"licenseId\": \"ADSL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SHL-0.51.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SHL-0.51.json\",\n      \"referenceNumber\": 201,\n      \"name\": \"Solderpad Hardware License, Version 0.51\",\n      \"licenseId\": \"SHL-0.51\",\n      \"seeAlso\": [\n        \"https://solderpad.org/licenses/SHL-0.51/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Spencer-94.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Spencer-94.json\",\n      \"referenceNumber\": 202,\n      \"name\": \"Spencer License 94\",\n      \"licenseId\": \"Spencer-94\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PSF-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PSF-2.0.json\",\n      \"referenceNumber\": 203,\n      \"name\": \"Python Software Foundation License 2.0\",\n      \"licenseId\": \"PSF-2.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Python-2.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.0-no-RFN.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.0-no-RFN.json\",\n      \"referenceNumber\": 204,\n      \"name\": \"SIL Open Font License 1.0 with no Reserved Font Name\",\n      \"licenseId\": \"OFL-1.0-no-RFN\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL10_web\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IEC-Code-Components-EULA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IEC-Code-Components-EULA.json\",\n      \"referenceNumber\": 205,\n      \"name\": \"IEC    Code Components End-user licence agreement\",\n      \"licenseId\": \"IEC-Code-Components-EULA\",\n      \"seeAlso\": [\n        \"https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf\",\n        \"https://www.iec.ch/CCv1\",\n        \"https://www.iec.ch/copyright\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Jam.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Jam.json\",\n      \"referenceNumber\": 206,\n      \"name\": \"Jam License\",\n      \"licenseId\": \"Jam\",\n      \"seeAlso\": [\n        \"https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html\",\n        \"https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TU-Berlin-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TU-Berlin-1.0.json\",\n      \"referenceNumber\": 207,\n      \"name\": \"Technische Universitaet Berlin License 1.0\",\n      \"licenseId\": \"TU-Berlin-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-3.0.json\",\n      \"referenceNumber\": 208,\n      \"name\": \"Creative Commons Attribution Share Alike 3.0 Unported\",\n      \"licenseId\": \"CC-BY-SA-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APSL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APSL-1.2.json\",\n      \"referenceNumber\": 209,\n      \"name\": \"Apple Public Source License 1.2\",\n      \"licenseId\": \"APSL-1.2\",\n      \"seeAlso\": [\n        \"http://www.samurajdata.se/opensource/mirror/licenses/apsl.php\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-3.0-AT.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-3.0-AT.json\",\n      \"referenceNumber\": 210,\n      \"name\": \"Creative Commons Attribution Share Alike 3.0 Austria\",\n      \"licenseId\": \"CC-BY-SA-3.0-AT\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/3.0/at/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ImageMagick.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ImageMagick.json\",\n      \"referenceNumber\": 211,\n      \"name\": \"ImageMagick License\",\n      \"licenseId\": \"ImageMagick\",\n      \"seeAlso\": [\n        \"http://www.imagemagick.org/script/license.php\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Newsletr.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Newsletr.json\",\n      \"referenceNumber\": 212,\n      \"name\": \"Newsletr License\",\n      \"licenseId\": \"Newsletr\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Newsletr\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IPA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IPA.json\",\n      \"referenceNumber\": 213,\n      \"name\": \"IPA Font License\",\n      \"licenseId\": \"IPA\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/IPA\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Unlicense.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Unlicense.json\",\n      \"referenceNumber\": 214,\n      \"name\": \"The Unlicense\",\n      \"licenseId\": \"Unlicense\",\n      \"seeAlso\": [\n        \"https://unlicense.org/\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-Modern-Variant.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-Modern-Variant.json\",\n      \"referenceNumber\": 215,\n      \"name\": \"MIT License Modern Variant\",\n      \"licenseId\": \"MIT-Modern-Variant\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants\",\n        \"https://ptolemy.berkeley.edu/copyright.htm\",\n        \"https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ECL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ECL-2.0.json\",\n      \"referenceNumber\": 216,\n      \"name\": \"Educational Community License v2.0\",\n      \"licenseId\": \"ECL-2.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/ECL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Barr.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Barr.json\",\n      \"referenceNumber\": 217,\n      \"name\": \"Barr License\",\n      \"licenseId\": \"Barr\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Barr\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0+.json\",\n      \"referenceNumber\": 218,\n      \"name\": \"GNU General Public License v2.0 or later\",\n      \"licenseId\": \"GPL-2.0+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BitTorrent-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BitTorrent-1.0.json\",\n      \"referenceNumber\": 219,\n      \"name\": \"BitTorrent Open Source License v1.0\",\n      \"licenseId\": \"BitTorrent-1.0\",\n      \"seeAlso\": [\n        \"http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\\u003d1.1\\u0026r2\\u003d1.1.1.1\\u0026diff_format\\u003ds\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Brian-Gladman-3-Clause.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Brian-Gladman-3-Clause.json\",\n      \"referenceNumber\": 220,\n      \"name\": \"Brian Gladman 3-Clause License\",\n      \"licenseId\": \"Brian-Gladman-3-Clause\",\n      \"seeAlso\": [\n        \"https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SSH-short.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SSH-short.json\",\n      \"referenceNumber\": 221,\n      \"name\": \"SSH short notice\",\n      \"licenseId\": \"SSH-short\",\n      \"seeAlso\": [\n        \"https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h\",\n        \"http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1\",\n        \"https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-4.0.json\",\n      \"referenceNumber\": 222,\n      \"name\": \"Creative Commons Attribution No Derivatives 4.0 International\",\n      \"licenseId\": \"CC-BY-ND-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/VSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/VSL-1.0.json\",\n      \"referenceNumber\": 223,\n      \"name\": \"Vovida Software License v1.0\",\n      \"licenseId\": \"VSL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/VSL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/eCos-2.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/eCos-2.0.json\",\n      \"referenceNumber\": 224,\n      \"name\": \"eCos license version 2.0\",\n      \"licenseId\": \"eCos-2.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/ecos-license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Info-ZIP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Info-ZIP.json\",\n      \"referenceNumber\": 225,\n      \"name\": \"Info-ZIP License\",\n      \"licenseId\": \"Info-ZIP\",\n      \"seeAlso\": [\n        \"http://www.info-zip.org/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SGI-B-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SGI-B-1.0.json\",\n      \"referenceNumber\": 226,\n      \"name\": \"SGI Free Software License B v1.0\",\n      \"licenseId\": \"SGI-B-1.0\",\n      \"seeAlso\": [\n        \"http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json\",\n      \"referenceNumber\": 227,\n      \"name\": \"BSD 3-Clause No Military License\",\n      \"licenseId\": \"BSD-3-Clause-No-Military-License\",\n      \"seeAlso\": [\n        \"https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE\",\n        \"https://github.com/greymass/swift-eosio/blob/master/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ISC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ISC.json\",\n      \"referenceNumber\": 228,\n      \"name\": \"ISC License\",\n      \"licenseId\": \"ISC\",\n      \"seeAlso\": [\n        \"https://www.isc.org/licenses/\",\n        \"https://www.isc.org/downloads/software-support-policy/isc-license/\",\n        \"https://opensource.org/licenses/ISC\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FSFUL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FSFUL.json\",\n      \"referenceNumber\": 229,\n      \"name\": \"FSF Unlimited License\",\n      \"licenseId\": \"FSFUL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSET-PL-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSET-PL-2.1.json\",\n      \"referenceNumber\": 230,\n      \"name\": \"OSET Public License version 2.1\",\n      \"licenseId\": \"OSET-PL-2.1\",\n      \"seeAlso\": [\n        \"http://www.osetfoundation.org/public-license\",\n        \"https://opensource.org/licenses/OPL-2.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ClArtistic.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ClArtistic.json\",\n      \"referenceNumber\": 231,\n      \"name\": \"Clarified Artistic License\",\n      \"licenseId\": \"ClArtistic\",\n      \"seeAlso\": [\n        \"http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/\",\n        \"http://www.ncftp.com/ncftp/doc/LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NTP-0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NTP-0.json\",\n      \"referenceNumber\": 232,\n      \"name\": \"NTP No Attribution\",\n      \"licenseId\": \"NTP-0\",\n      \"seeAlso\": [\n        \"https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NTP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NTP.json\",\n      \"referenceNumber\": 233,\n      \"name\": \"NTP License\",\n      \"licenseId\": \"NTP\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/NTP\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AMPAS.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AMPAS.json\",\n      \"referenceNumber\": 234,\n      \"name\": \"Academy of Motion Picture Arts and Sciences BSD\",\n      \"licenseId\": \"AMPAS\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPLLR.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPLLR.json\",\n      \"referenceNumber\": 235,\n      \"name\": \"Lesser General Public License For Linguistic Resources\",\n      \"licenseId\": \"LGPLLR\",\n      \"seeAlso\": [\n        \"http://www-igm.univ-mlv.fr/~unitex/lgpllr.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-with-font-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-with-font-exception.json\",\n      \"referenceNumber\": 236,\n      \"name\": \"GNU General Public License v2.0 w/Font exception\",\n      \"licenseId\": \"GPL-2.0-with-font-exception\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gpl-faq.html#FontException\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AFL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AFL-2.0.json\",\n      \"referenceNumber\": 237,\n      \"name\": \"Academic Free License v2.0\",\n      \"licenseId\": \"AFL-2.0\",\n      \"seeAlso\": [\n        \"http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-PDDC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-PDDC.json\",\n      \"referenceNumber\": 238,\n      \"name\": \"Creative Commons Public Domain Dedication and Certification\",\n      \"licenseId\": \"CC-PDDC\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/publicdomain/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Spencer-86.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Spencer-86.json\",\n      \"referenceNumber\": 239,\n      \"name\": \"Spencer License 86\",\n      \"licenseId\": \"Spencer-86\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/W3C-19980720.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/W3C-19980720.json\",\n      \"referenceNumber\": 240,\n      \"name\": \"W3C Software Notice and License (1998-07-20)\",\n      \"licenseId\": \"W3C-19980720\",\n      \"seeAlso\": [\n        \"http://www.w3.org/Consortium/Legal/copyright-software-19980720.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-2.5.json\",\n      \"referenceNumber\": 241,\n      \"name\": \"Creative Commons Attribution Share Alike 2.5 Generic\",\n      \"licenseId\": \"CC-BY-SA-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ICU.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ICU.json\",\n      \"referenceNumber\": 242,\n      \"name\": \"ICU License\",\n      \"licenseId\": \"ICU\",\n      \"seeAlso\": [\n        \"http://source.icu-project.org/repos/icu/icu/trunk/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/JasPer-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/JasPer-2.0.json\",\n      \"referenceNumber\": 243,\n      \"name\": \"JasPer License\",\n      \"licenseId\": \"JasPer-2.0\",\n      \"seeAlso\": [\n        \"http://www.ece.uvic.ca/~mdadams/jasper/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Bahyph.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Bahyph.json\",\n      \"referenceNumber\": 244,\n      \"name\": \"Bahyph License\",\n      \"licenseId\": \"Bahyph\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Bahyph\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPL-1.0.json\",\n      \"referenceNumber\": 245,\n      \"name\": \"Lucent Public License Version 1.0\",\n      \"licenseId\": \"LPL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/LPL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Glulxe.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Glulxe.json\",\n      \"referenceNumber\": 246,\n      \"name\": \"Glulxe License\",\n      \"licenseId\": \"Glulxe\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Glulxe\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SISSL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SISSL-1.2.json\",\n      \"referenceNumber\": 247,\n      \"name\": \"Sun Industry Standards Source License v1.2\",\n      \"licenseId\": \"SISSL-1.2\",\n      \"seeAlso\": [\n        \"http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ZPL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ZPL-2.0.json\",\n      \"referenceNumber\": 248,\n      \"name\": \"Zope Public License 2.0\",\n      \"licenseId\": \"ZPL-2.0\",\n      \"seeAlso\": [\n        \"http://old.zope.org/Resources/License/ZPL-2.0\",\n        \"https://opensource.org/licenses/ZPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TPL-1.0.json\",\n      \"referenceNumber\": 249,\n      \"name\": \"THOR Public License 1.0\",\n      \"licenseId\": \"TPL-1.0\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:ThorPublicLicense\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-invariants-only.json\",\n      \"referenceNumber\": 250,\n      \"name\": \"GNU Free Documentation License v1.1 only - invariants\",\n      \"licenseId\": \"GFDL-1.1-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APSL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APSL-2.0.json\",\n      \"referenceNumber\": 251,\n      \"name\": \"Apple Public Source License 2.0\",\n      \"licenseId\": \"APSL-2.0\",\n      \"seeAlso\": [\n        \"http://www.opensource.apple.com/license/apsl/\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EPICS.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EPICS.json\",\n      \"referenceNumber\": 252,\n      \"name\": \"EPICS Open License\",\n      \"licenseId\": \"EPICS\",\n      \"seeAlso\": [\n        \"https://epics.anl.gov/license/open.php\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/D-FSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/D-FSL-1.0.json\",\n      \"referenceNumber\": 253,\n      \"name\": \"Deutsche Freie Software Lizenz\",\n      \"licenseId\": \"D-FSL-1.0\",\n      \"seeAlso\": [\n        \"http://www.dipp.nrw.de/d-fsl/lizenzen/\",\n        \"http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt\",\n        \"http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt\",\n        \"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl\",\n        \"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz\",\n        \"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license\",\n        \"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file\",\n        \"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CERN-OHL-W-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CERN-OHL-W-2.0.json\",\n      \"referenceNumber\": 254,\n      \"name\": \"CERN Open Hardware Licence Version 2 - Weakly Reciprocal\",\n      \"licenseId\": \"CERN-OHL-W-2.0\",\n      \"seeAlso\": [\n        \"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IBM-pibs.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IBM-pibs.json\",\n      \"referenceNumber\": 255,\n      \"name\": \"IBM PowerPC Initialization and Boot Software\",\n      \"licenseId\": \"IBM-pibs\",\n      \"seeAlso\": [\n        \"http://git.denx.de/?p\\u003du-boot.git;a\\u003dblob;f\\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SISSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SISSL.json\",\n      \"referenceNumber\": 256,\n      \"name\": \"Sun Industry Standards Source License v1.1\",\n      \"licenseId\": \"SISSL\",\n      \"seeAlso\": [\n        \"http://www.openoffice.org/licenses/sissl_license.html\",\n        \"https://opensource.org/licenses/SISSL\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LiLiQ-Rplus-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LiLiQ-Rplus-1.1.json\",\n      \"referenceNumber\": 257,\n      \"name\": \"Licence Libre du Québec – Réciprocité forte version 1.1\",\n      \"licenseId\": \"LiLiQ-Rplus-1.1\",\n      \"seeAlso\": [\n        \"https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/\",\n        \"http://opensource.org/licenses/LiLiQ-Rplus-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/iMatix.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/iMatix.json\",\n      \"referenceNumber\": 258,\n      \"name\": \"iMatix Standard Function Library Agreement\",\n      \"licenseId\": \"iMatix\",\n      \"seeAlso\": [\n        \"http://legacy.imatix.com/html/sfl/sfl4.htm#license\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.4.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.4.json\",\n      \"referenceNumber\": 259,\n      \"name\": \"Open LDAP Public License v2.4\",\n      \"licenseId\": \"OLDAP-2.4\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003dcd1284c4a91a8a380d904eee68d1583f989ed386\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json\",\n      \"referenceNumber\": 260,\n      \"name\": \"BSD 3-Clause No Nuclear License\",\n      \"licenseId\": \"BSD-3-Clause-No-Nuclear-License\",\n      \"seeAlso\": [\n        \"http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\\u003d1467140197_43d516ce1776bd08a58235a7785be1cc\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Condor-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Condor-1.1.json\",\n      \"referenceNumber\": 261,\n      \"name\": \"Condor Public License v1.1\",\n      \"licenseId\": \"Condor-1.1\",\n      \"seeAlso\": [\n        \"http://research.cs.wisc.edu/condor/license.html#condor\",\n        \"http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSL-1.0.json\",\n      \"referenceNumber\": 262,\n      \"name\": \"Boost Software License 1.0\",\n      \"licenseId\": \"BSL-1.0\",\n      \"seeAlso\": [\n        \"http://www.boost.org/LICENSE_1_0.txt\",\n        \"https://opensource.org/licenses/BSL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Community-Spec-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Community-Spec-1.0.json\",\n      \"referenceNumber\": 263,\n      \"name\": \"Community Specification License 1.0\",\n      \"licenseId\": \"Community-Spec-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/DRL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/DRL-1.0.json\",\n      \"referenceNumber\": 264,\n      \"name\": \"Detection Rule License 1.0\",\n      \"licenseId\": \"DRL-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NRL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NRL.json\",\n      \"referenceNumber\": 265,\n      \"name\": \"NRL License\",\n      \"licenseId\": \"NRL\",\n      \"seeAlso\": [\n        \"http://web.mit.edu/network/isakmp/nrllicense.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Xnet.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Xnet.json\",\n      \"referenceNumber\": 266,\n      \"name\": \"X.Net License\",\n      \"licenseId\": \"Xnet\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Xnet\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Artistic-1.0-cl8.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Artistic-1.0-cl8.json\",\n      \"referenceNumber\": 267,\n      \"name\": \"Artistic License 1.0 w/clause 8\",\n      \"licenseId\": \"Artistic-1.0-cl8\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Artistic-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json\",\n      \"referenceNumber\": 268,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 3.0 IGO\",\n      \"licenseId\": \"CC-BY-NC-SA-3.0-IGO\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/YPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/YPL-1.1.json\",\n      \"referenceNumber\": 269,\n      \"name\": \"Yahoo! Public License v1.1\",\n      \"licenseId\": \"YPL-1.1\",\n      \"seeAlso\": [\n        \"http://www.zimbra.com/license/yahoo_public_license_1.1.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APL-1.0.json\",\n      \"referenceNumber\": 270,\n      \"name\": \"Adaptive Public License 1.0\",\n      \"licenseId\": \"APL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/APL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Intel.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Intel.json\",\n      \"referenceNumber\": 271,\n      \"name\": \"Intel Open Source License\",\n      \"licenseId\": \"Intel\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Intel\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/XSkat.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/XSkat.json\",\n      \"referenceNumber\": 272,\n      \"name\": \"XSkat License\",\n      \"licenseId\": \"XSkat\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/XSkat_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SNIA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SNIA.json\",\n      \"referenceNumber\": 273,\n      \"name\": \"SNIA Public License 1.1\",\n      \"licenseId\": \"SNIA\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/SNIA_Public_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NLPL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NLPL.json\",\n      \"referenceNumber\": 274,\n      \"name\": \"No Limit Public License\",\n      \"licenseId\": \"NLPL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/NLPL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AAL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AAL.json\",\n      \"referenceNumber\": 275,\n      \"name\": \"Attribution Assurance License\",\n      \"licenseId\": \"AAL\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/attribution\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-3.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-3.0-only.json\",\n      \"referenceNumber\": 276,\n      \"name\": \"GNU Lesser General Public License v3.0 only\",\n      \"licenseId\": \"LGPL-3.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/lgpl-3.0-standalone.html\",\n        \"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt\",\n        \"https://opensource.org/licenses/LGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-3.0.json\",\n      \"referenceNumber\": 277,\n      \"name\": \"Creative Commons Attribution No Derivatives 3.0 Unported\",\n      \"licenseId\": \"CC-BY-ND-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NIST-PD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NIST-PD.json\",\n      \"referenceNumber\": 278,\n      \"name\": \"NIST Public Domain Notice\",\n      \"licenseId\": \"NIST-PD\",\n      \"seeAlso\": [\n        \"https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt\",\n        \"https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/w3m.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/w3m.json\",\n      \"referenceNumber\": 279,\n      \"name\": \"w3m License\",\n      \"licenseId\": \"w3m\",\n      \"seeAlso\": [\n        \"https://github.com/tats/w3m/blob/master/COPYING\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-2.0.json\",\n      \"referenceNumber\": 280,\n      \"name\": \"Creative Commons Attribution Share Alike 2.0 Generic\",\n      \"licenseId\": \"CC-BY-SA-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json\",\n      \"referenceNumber\": 281,\n      \"name\": \"GNU Free Documentation License v1.2 or later - invariants\",\n      \"licenseId\": \"GFDL-1.2-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/JPL-image.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/JPL-image.json\",\n      \"referenceNumber\": 282,\n      \"name\": \"JPL Image Use Policy\",\n      \"licenseId\": \"JPL-image\",\n      \"seeAlso\": [\n        \"https://www.jpl.nasa.gov/jpl-image-use-policy\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EFL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EFL-2.0.json\",\n      \"referenceNumber\": 283,\n      \"name\": \"Eiffel Forum License v2.0\",\n      \"licenseId\": \"EFL-2.0\",\n      \"seeAlso\": [\n        \"http://www.eiffel-nice.org/license/eiffel-forum-license-2.html\",\n        \"https://opensource.org/licenses/EFL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-4.0.json\",\n      \"referenceNumber\": 284,\n      \"name\": \"Creative Commons Attribution Non Commercial 4.0 International\",\n      \"licenseId\": \"CC-BY-NC-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json\",\n      \"referenceNumber\": 285,\n      \"name\": \"PolyForm Noncommercial License 1.0.0\",\n      \"licenseId\": \"PolyForm-Noncommercial-1.0.0\",\n      \"seeAlso\": [\n        \"https://polyformproject.org/licenses/noncommercial/1.0.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Plexus.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Plexus.json\",\n      \"referenceNumber\": 286,\n      \"name\": \"Plexus Classworlds License\",\n      \"licenseId\": \"Plexus\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json\",\n      \"referenceNumber\": 287,\n      \"name\": \"GNU Free Documentation License v1.3 or later - invariants\",\n      \"licenseId\": \"GFDL-1.3-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json\",\n      \"referenceNumber\": 288,\n      \"name\": \"HPND sell variant with MIT disclaimer\",\n      \"licenseId\": \"HPND-sell-variant-MIT-disclaimer\",\n      \"seeAlso\": [\n        \"https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/X11.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/X11.json\",\n      \"referenceNumber\": 289,\n      \"name\": \"X11 License\",\n      \"licenseId\": \"X11\",\n      \"seeAlso\": [\n        \"http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Arphic-1999.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Arphic-1999.json\",\n      \"referenceNumber\": 290,\n      \"name\": \"Arphic Public License\",\n      \"licenseId\": \"Arphic-1999\",\n      \"seeAlso\": [\n        \"http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-2.5-AU.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-2.5-AU.json\",\n      \"referenceNumber\": 291,\n      \"name\": \"Creative Commons Attribution 2.5 Australia\",\n      \"licenseId\": \"CC-BY-2.5-AU\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/2.5/au/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APSL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APSL-1.1.json\",\n      \"referenceNumber\": 292,\n      \"name\": \"Apple Public Source License 1.1\",\n      \"licenseId\": \"APSL-1.1\",\n      \"seeAlso\": [\n        \"http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json\",\n      \"referenceNumber\": 293,\n      \"name\": \"GNU Free Documentation License v1.1 or later - no invariants\",\n      \"licenseId\": \"GFDL-1.1-no-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CERN-OHL-P-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CERN-OHL-P-2.0.json\",\n      \"referenceNumber\": 294,\n      \"name\": \"CERN Open Hardware Licence Version 2 - Permissive\",\n      \"licenseId\": \"CERN-OHL-P-2.0\",\n      \"seeAlso\": [\n        \"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-3.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-3.0-or-later.json\",\n      \"referenceNumber\": 295,\n      \"name\": \"GNU Affero General Public License v3.0 or later\",\n      \"licenseId\": \"AGPL-3.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/agpl.txt\",\n        \"https://opensource.org/licenses/AGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/bzip2-1.0.6.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/bzip2-1.0.6.json\",\n      \"referenceNumber\": 296,\n      \"name\": \"bzip2 and libbzip2 License v1.0.6\",\n      \"licenseId\": \"bzip2-1.0.6\",\n      \"seeAlso\": [\n        \"https://sourceware.org/git/?p\\u003dbzip2.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003dbzip2-1.0.6\",\n        \"http://bzip.org/1.0.5/bzip2-manual-1.0.5.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSL-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSL-2.1.json\",\n      \"referenceNumber\": 297,\n      \"name\": \"Open Software License 2.1\",\n      \"licenseId\": \"OSL-2.1\",\n      \"seeAlso\": [\n        \"http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm\",\n        \"https://opensource.org/licenses/OSL-2.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OCCT-PL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OCCT-PL.json\",\n      \"referenceNumber\": 298,\n      \"name\": \"Open CASCADE Technology Public License\",\n      \"licenseId\": \"OCCT-PL\",\n      \"seeAlso\": [\n        \"http://www.opencascade.com/content/occt-public-license\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CPAL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CPAL-1.0.json\",\n      \"referenceNumber\": 299,\n      \"name\": \"Common Public Attribution License 1.0\",\n      \"licenseId\": \"CPAL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/CPAL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-3.0-DE.json\",\n      \"referenceNumber\": 300,\n      \"name\": \"Creative Commons Attribution Non Commercial 3.0 Germany\",\n      \"licenseId\": \"CC-BY-NC-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.0.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.0.1.json\",\n      \"referenceNumber\": 301,\n      \"name\": \"Open LDAP Public License v2.0.1\",\n      \"licenseId\": \"OLDAP-2.0.1\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NOSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NOSL.json\",\n      \"referenceNumber\": 302,\n      \"name\": \"Netizen Open Source License\",\n      \"licenseId\": \"NOSL\",\n      \"seeAlso\": [\n        \"http://bits.netizen.com.au/licenses/NOSL/nosl.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Python-2.0.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Python-2.0.1.json\",\n      \"referenceNumber\": 303,\n      \"name\": \"Python License 2.0.1\",\n      \"licenseId\": \"Python-2.0.1\",\n      \"seeAlso\": [\n        \"https://www.python.org/download/releases/2.0.1/license/\",\n        \"https://docs.python.org/3/license.html\",\n        \"https://github.com/python/cpython/blob/main/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Unicode-DFS-2015.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Unicode-DFS-2015.json\",\n      \"referenceNumber\": 304,\n      \"name\": \"Unicode License Agreement - Data Files and Software (2015)\",\n      \"licenseId\": \"Unicode-DFS-2015\",\n      \"seeAlso\": [\n        \"https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TU-Berlin-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TU-Berlin-2.0.json\",\n      \"referenceNumber\": 305,\n      \"name\": \"Technische Universitaet Berlin License 2.0\",\n      \"licenseId\": \"TU-Berlin-2.0\",\n      \"seeAlso\": [\n        \"https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Fair.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Fair.json\",\n      \"referenceNumber\": 306,\n      \"name\": \"Fair License\",\n      \"licenseId\": \"Fair\",\n      \"seeAlso\": [\n        \"http://fairlicense.org/\",\n        \"https://opensource.org/licenses/Fair\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDLA-Permissive-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDLA-Permissive-1.0.json\",\n      \"referenceNumber\": 307,\n      \"name\": \"Community Data License Agreement Permissive 1.0\",\n      \"licenseId\": \"CDLA-Permissive-1.0\",\n      \"seeAlso\": [\n        \"https://cdla.io/permissive-1-0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/libpng-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/libpng-2.0.json\",\n      \"referenceNumber\": 308,\n      \"name\": \"PNG Reference Library version 2\",\n      \"licenseId\": \"libpng-2.0\",\n      \"seeAlso\": [\n        \"http://www.libpng.org/pub/png/src/libpng-LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json\",\n      \"referenceNumber\": 309,\n      \"name\": \"GNU General Public License v2.0 w/Classpath exception\",\n      \"licenseId\": \"GPL-2.0-with-classpath-exception\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/software/classpath/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/C-UDA-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/C-UDA-1.0.json\",\n      \"referenceNumber\": 310,\n      \"name\": \"Computational Use of Data Agreement v1.0\",\n      \"licenseId\": \"C-UDA-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md\",\n        \"https://cdla.dev/computational-use-of-data-agreement-v1-0/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-2.0.json\",\n      \"referenceNumber\": 311,\n      \"name\": \"Creative Commons Attribution Non Commercial 2.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0-only.json\",\n      \"referenceNumber\": 312,\n      \"name\": \"GNU General Public License v3.0 only\",\n      \"licenseId\": \"GPL-3.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gpl-3.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RPL-1.1.json\",\n      \"referenceNumber\": 313,\n      \"name\": \"Reciprocal Public License 1.1\",\n      \"licenseId\": \"RPL-1.1\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/RPL-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-invariants-only.json\",\n      \"referenceNumber\": 314,\n      \"name\": \"GNU Free Documentation License v1.2 only - invariants\",\n      \"licenseId\": \"GFDL-1.2-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SGI-B-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SGI-B-1.1.json\",\n      \"referenceNumber\": 315,\n      \"name\": \"SGI Free Software License B v1.1\",\n      \"licenseId\": \"SGI-B-1.1\",\n      \"seeAlso\": [\n        \"http://oss.sgi.com/projects/FreeB/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0.json\",\n      \"referenceNumber\": 316,\n      \"name\": \"GNU General Public License v2.0 only\",\n      \"licenseId\": \"GPL-2.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Frameworx-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Frameworx-1.0.json\",\n      \"referenceNumber\": 317,\n      \"name\": \"Frameworx Open License 1.0\",\n      \"licenseId\": \"Frameworx-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Frameworx-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-Attribution.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-Attribution.json\",\n      \"referenceNumber\": 318,\n      \"name\": \"BSD with attribution\",\n      \"licenseId\": \"BSD-3-Clause-Attribution\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-1.0.json\",\n      \"referenceNumber\": 319,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 1.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-SA-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CNRI-Jython.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CNRI-Jython.json\",\n      \"referenceNumber\": 320,\n      \"name\": \"CNRI Jython License\",\n      \"licenseId\": \"CNRI-Jython\",\n      \"seeAlso\": [\n        \"http://www.jython.org/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SSPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SSPL-1.0.json\",\n      \"referenceNumber\": 321,\n      \"name\": \"Server Side Public License, v 1\",\n      \"licenseId\": \"SSPL-1.0\",\n      \"seeAlso\": [\n        \"https://www.mongodb.com/licensing/server-side-public-license\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TTWL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TTWL.json\",\n      \"referenceNumber\": 322,\n      \"name\": \"Text-Tabs+Wrap License\",\n      \"licenseId\": \"TTWL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/TTWL\",\n        \"https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MirOS.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MirOS.json\",\n      \"referenceNumber\": 323,\n      \"name\": \"The MirOS Licence\",\n      \"licenseId\": \"MirOS\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/MirOS\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGTSL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGTSL.json\",\n      \"referenceNumber\": 324,\n      \"name\": \"Open Group Test Suite License\",\n      \"licenseId\": \"OGTSL\",\n      \"seeAlso\": [\n        \"http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt\",\n        \"https://opensource.org/licenses/OGTSL\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GL2PS.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GL2PS.json\",\n      \"referenceNumber\": 325,\n      \"name\": \"GL2PS License\",\n      \"licenseId\": \"GL2PS\",\n      \"seeAlso\": [\n        \"http://www.geuz.org/gl2ps/COPYING.GL2PS\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0.json\",\n      \"referenceNumber\": 326,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 3.0 Unported\",\n      \"licenseId\": \"CC-BY-NC-SA-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json\",\n      \"referenceNumber\": 327,\n      \"name\": \"GNU General Public License v2.0 w/Autoconf exception\",\n      \"licenseId\": \"GPL-2.0-with-autoconf-exception\",\n      \"seeAlso\": [\n        \"http://ac-archive.sourceforge.net/doc/copyright.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HPND-sell-variant.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HPND-sell-variant.json\",\n      \"referenceNumber\": 328,\n      \"name\": \"Historical Permission Notice and Disclaimer - sell variant\",\n      \"licenseId\": \"HPND-sell-variant\",\n      \"seeAlso\": [\n        \"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\\u003dv4.19\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-2.5.json\",\n      \"referenceNumber\": 329,\n      \"name\": \"Creative Commons Attribution No Derivatives 2.5 Generic\",\n      \"licenseId\": \"CC-BY-ND-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/JPNIC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/JPNIC.json\",\n      \"referenceNumber\": 330,\n      \"name\": \"Japan Network Information Center License\",\n      \"licenseId\": \"JPNIC\",\n      \"seeAlso\": [\n        \"https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-2.5.json\",\n      \"referenceNumber\": 331,\n      \"name\": \"Creative Commons Attribution 2.5 Generic\",\n      \"licenseId\": \"CC-BY-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Apache-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Apache-1.1.json\",\n      \"referenceNumber\": 332,\n      \"name\": \"Apache License 1.1\",\n      \"licenseId\": \"Apache-1.1\",\n      \"seeAlso\": [\n        \"http://apache.org/licenses/LICENSE-1.1\",\n        \"https://opensource.org/licenses/Apache-1.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Parity-7.0.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Parity-7.0.0.json\",\n      \"referenceNumber\": 333,\n      \"name\": \"The Parity Public License 7.0.0\",\n      \"licenseId\": \"Parity-7.0.0\",\n      \"seeAlso\": [\n        \"https://paritylicense.com/versions/7.0.0.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGC-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGC-1.0.json\",\n      \"referenceNumber\": 334,\n      \"name\": \"OGC Software License, Version 1.0\",\n      \"licenseId\": \"OGC-1.0\",\n      \"seeAlso\": [\n        \"https://www.ogc.org/ogc/software/1.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json\",\n      \"referenceNumber\": 335,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 3.0 Germany\",\n      \"licenseId\": \"CC-BY-NC-SA-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CERN-OHL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CERN-OHL-1.2.json\",\n      \"referenceNumber\": 336,\n      \"name\": \"CERN Open Hardware Licence v1.2\",\n      \"licenseId\": \"CERN-OHL-1.2\",\n      \"seeAlso\": [\n        \"https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Entessa.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Entessa.json\",\n      \"referenceNumber\": 337,\n      \"name\": \"Entessa Public License v1.0\",\n      \"licenseId\": \"Entessa\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Entessa\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0-or-later.json\",\n      \"referenceNumber\": 338,\n      \"name\": \"GNU General Public License v3.0 or later\",\n      \"licenseId\": \"GPL-3.0-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gpl-3.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FTL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FTL.json\",\n      \"referenceNumber\": 339,\n      \"name\": \"Freetype Project License\",\n      \"licenseId\": \"FTL\",\n      \"seeAlso\": [\n        \"http://freetype.fis.uniroma2.it/FTL.TXT\",\n        \"http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT\",\n        \"http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PostgreSQL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PostgreSQL.json\",\n      \"referenceNumber\": 340,\n      \"name\": \"PostgreSQL License\",\n      \"licenseId\": \"PostgreSQL\",\n      \"seeAlso\": [\n        \"http://www.postgresql.org/about/licence\",\n        \"https://opensource.org/licenses/PostgreSQL\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0.json\",\n      \"referenceNumber\": 341,\n      \"name\": \"Creative Commons Attribution 3.0 Unported\",\n      \"licenseId\": \"CC-BY-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.5.json\",\n      \"referenceNumber\": 342,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 2.5 Generic\",\n      \"licenseId\": \"CC-BY-NC-SA-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OCLC-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OCLC-2.0.json\",\n      \"referenceNumber\": 343,\n      \"name\": \"OCLC Research Public License 2.0\",\n      \"licenseId\": \"OCLC-2.0\",\n      \"seeAlso\": [\n        \"http://www.oclc.org/research/activities/software/license/v2final.htm\",\n        \"https://opensource.org/licenses/OCLC-2.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Knuth-CTAN.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Knuth-CTAN.json\",\n      \"referenceNumber\": 344,\n      \"name\": \"Knuth CTAN License\",\n      \"licenseId\": \"Knuth-CTAN\",\n      \"seeAlso\": [\n        \"https://ctan.org/license/knuth\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json\",\n      \"referenceNumber\": 345,\n      \"name\": \"BSD 3-Clause Open MPI variant\",\n      \"licenseId\": \"BSD-3-Clause-Open-MPI\",\n      \"seeAlso\": [\n        \"https://www.open-mpi.org/community/license.php\",\n        \"http://www.netlib.org/lapack/LICENSE.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-B.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-B.json\",\n      \"referenceNumber\": 346,\n      \"name\": \"CeCILL-B Free Software License Agreement\",\n      \"licenseId\": \"CECILL-B\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Abstyles.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Abstyles.json\",\n      \"referenceNumber\": 347,\n      \"name\": \"Abstyles License\",\n      \"licenseId\": \"Abstyles\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Abstyles\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/xpp.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/xpp.json\",\n      \"referenceNumber\": 348,\n      \"name\": \"XPP License\",\n      \"licenseId\": \"xpp\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/xpp\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FSFAP.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FSFAP.json\",\n      \"referenceNumber\": 349,\n      \"name\": \"FSF All Permissive License\",\n      \"licenseId\": \"FSFAP\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HaskellReport.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HaskellReport.json\",\n      \"referenceNumber\": 350,\n      \"name\": \"Haskell Language Report License\",\n      \"licenseId\": \"HaskellReport\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/X11-distribute-modifications-variant.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/X11-distribute-modifications-variant.json\",\n      \"referenceNumber\": 351,\n      \"name\": \"X11 License Distribution Modification Variant\",\n      \"licenseId\": \"X11-distribute-modifications-variant\",\n      \"seeAlso\": [\n        \"https://github.com/mirror/ncurses/blob/master/COPYING\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-2-Clause-Patent.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-2-Clause-Patent.json\",\n      \"referenceNumber\": 352,\n      \"name\": \"BSD-2-Clause Plus Patent License\",\n      \"licenseId\": \"BSD-2-Clause-Patent\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/BSDplusPatent\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NIST-PD-fallback.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NIST-PD-fallback.json\",\n      \"referenceNumber\": 353,\n      \"name\": \"NIST Public Domain Notice with license fallback\",\n      \"licenseId\": \"NIST-PD-fallback\",\n      \"seeAlso\": [\n        \"https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE\",\n        \"https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Bitstream-Vera.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Bitstream-Vera.json\",\n      \"referenceNumber\": 354,\n      \"name\": \"Bitstream Vera Font License\",\n      \"licenseId\": \"Bitstream-Vera\",\n      \"seeAlso\": [\n        \"https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/\",\n        \"https://docubrain.com/sites/default/files/licenses/bitstream-vera.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGL-Canada-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGL-Canada-2.0.json\",\n      \"referenceNumber\": 355,\n      \"name\": \"Open Government Licence - Canada\",\n      \"licenseId\": \"OGL-Canada-2.0\",\n      \"seeAlso\": [\n        \"https://open.canada.ca/en/open-government-licence-canada\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LAL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LAL-1.2.json\",\n      \"referenceNumber\": 356,\n      \"name\": \"Licence Art Libre 1.2\",\n      \"licenseId\": \"LAL-1.2\",\n      \"seeAlso\": [\n        \"http://artlibre.org/licence/lal/licence-art-libre-12/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.1-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.1-only.json\",\n      \"referenceNumber\": 357,\n      \"name\": \"GNU Lesser General Public License v2.1 only\",\n      \"licenseId\": \"LGPL-2.1-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html\",\n        \"https://opensource.org/licenses/LGPL-2.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json\",\n      \"referenceNumber\": 358,\n      \"name\": \"CNRI Python Open Source GPL Compatible License Agreement\",\n      \"licenseId\": \"CNRI-Python-GPL-Compatible\",\n      \"seeAlso\": [\n        \"http://www.python.org/download/releases/1.6.1/download_win/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-1.0.json\",\n      \"referenceNumber\": 359,\n      \"name\": \"Creative Commons Attribution 1.0 Generic\",\n      \"licenseId\": \"CC-BY-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Zed.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Zed.json\",\n      \"referenceNumber\": 360,\n      \"name\": \"Zed License\",\n      \"licenseId\": \"Zed\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Zed\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SunPro.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SunPro.json\",\n      \"referenceNumber\": 361,\n      \"name\": \"SunPro License\",\n      \"licenseId\": \"SunPro\",\n      \"seeAlso\": [\n        \"https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c\",\n        \"https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TMate.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TMate.json\",\n      \"referenceNumber\": 362,\n      \"name\": \"TMate Open Source License\",\n      \"licenseId\": \"TMate\",\n      \"seeAlso\": [\n        \"http://svnkit.com/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json\",\n      \"referenceNumber\": 363,\n      \"name\": \"GNU General Public License v3.0 w/GCC Runtime Library exception\",\n      \"licenseId\": \"GPL-3.0-with-GCC-exception\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gcc-exception-3.1.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ANTLR-PD-fallback.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ANTLR-PD-fallback.json\",\n      \"referenceNumber\": 364,\n      \"name\": \"ANTLR Software Rights Notice with license fallback\",\n      \"licenseId\": \"ANTLR-PD-fallback\",\n      \"seeAlso\": [\n        \"http://www.antlr2.org/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/COIL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/COIL-1.0.json\",\n      \"referenceNumber\": 365,\n      \"name\": \"Copyfree Open Innovation License\",\n      \"licenseId\": \"COIL-1.0\",\n      \"seeAlso\": [\n        \"https://coil.apotheon.org/plaintext/01.0.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-Wu.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-Wu.json\",\n      \"referenceNumber\": 366,\n      \"name\": \"MIT Tom Wu Variant\",\n      \"licenseId\": \"MIT-Wu\",\n      \"seeAlso\": [\n        \"https://github.com/chromium/octane/blob/master/crypto.js\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MITNFA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MITNFA.json\",\n      \"referenceNumber\": 367,\n      \"name\": \"MIT +no-false-attribs license\",\n      \"licenseId\": \"MITNFA\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MITNFA\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-open-group.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-open-group.json\",\n      \"referenceNumber\": 368,\n      \"name\": \"MIT Open Group variant\",\n      \"licenseId\": \"MIT-open-group\",\n      \"seeAlso\": [\n        \"https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING\",\n        \"https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING\",\n        \"https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING\",\n        \"https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-or-later.json\",\n      \"referenceNumber\": 369,\n      \"name\": \"GNU Free Documentation License v1.1 or later\",\n      \"licenseId\": \"GFDL-1.1-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-1.0-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-1.0-or-later.json\",\n      \"referenceNumber\": 370,\n      \"name\": \"Affero General Public License v1.0 or later\",\n      \"licenseId\": \"AGPL-1.0-or-later\",\n      \"seeAlso\": [\n        \"http://www.affero.org/oagpl.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Latex2e.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Latex2e.json\",\n      \"referenceNumber\": 371,\n      \"name\": \"Latex2e License\",\n      \"licenseId\": \"Latex2e\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Latex2e\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/0BSD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/0BSD.json\",\n      \"referenceNumber\": 372,\n      \"name\": \"BSD Zero Clause License\",\n      \"licenseId\": \"0BSD\",\n      \"seeAlso\": [\n        \"http://landley.net/toybox/license.html\",\n        \"https://opensource.org/licenses/0BSD\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json\",\n      \"referenceNumber\": 373,\n      \"name\": \"BSD Advertising Acknowledgement License\",\n      \"licenseId\": \"BSD-Advertising-Acknowledgement\",\n      \"seeAlso\": [\n        \"https://github.com/python-excel/xlrd/blob/master/LICENSE#L33\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-2.0.json\",\n      \"referenceNumber\": 374,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-ND-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-LBNL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-LBNL.json\",\n      \"referenceNumber\": 375,\n      \"name\": \"Lawrence Berkeley National Labs BSD variant license\",\n      \"licenseId\": \"BSD-3-Clause-LBNL\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/LBNLBSD\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MPL-1.1.json\",\n      \"referenceNumber\": 376,\n      \"name\": \"Mozilla Public License 1.1\",\n      \"licenseId\": \"MPL-1.1\",\n      \"seeAlso\": [\n        \"http://www.mozilla.org/MPL/MPL-1.1.html\",\n        \"https://opensource.org/licenses/MPL-1.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/libutil-David-Nugent.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/libutil-David-Nugent.json\",\n      \"referenceNumber\": 377,\n      \"name\": \"libutil David Nugent License\",\n      \"licenseId\": \"libutil-David-Nugent\",\n      \"seeAlso\": [\n        \"http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3\",\n        \"https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BUSL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BUSL-1.1.json\",\n      \"referenceNumber\": 378,\n      \"name\": \"Business Source License 1.1\",\n      \"licenseId\": \"BUSL-1.1\",\n      \"seeAlso\": [\n        \"https://mariadb.com/bsl11/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LiLiQ-P-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LiLiQ-P-1.1.json\",\n      \"referenceNumber\": 379,\n      \"name\": \"Licence Libre du Québec – Permissive version 1.1\",\n      \"licenseId\": \"LiLiQ-P-1.1\",\n      \"seeAlso\": [\n        \"https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/\",\n        \"http://opensource.org/licenses/LiLiQ-P-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MPL-1.0.json\",\n      \"referenceNumber\": 380,\n      \"name\": \"Mozilla Public License 1.0\",\n      \"licenseId\": \"MPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.mozilla.org/MPL/MPL-1.0.html\",\n        \"https://opensource.org/licenses/MPL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Clips.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Clips.json\",\n      \"referenceNumber\": 381,\n      \"name\": \"Clips License\",\n      \"licenseId\": \"Clips\",\n      \"seeAlso\": [\n        \"https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HPND-export-US.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HPND-export-US.json\",\n      \"referenceNumber\": 382,\n      \"name\": \"HPND with US Government export control warning\",\n      \"licenseId\": \"HPND-export-US\",\n      \"seeAlso\": [\n        \"https://www.kermitproject.org/ck90.html#source\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-1.4.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-1.4.json\",\n      \"referenceNumber\": 383,\n      \"name\": \"Open LDAP Public License v1.4\",\n      \"licenseId\": \"OLDAP-1.4\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-1.1.json\",\n      \"referenceNumber\": 384,\n      \"name\": \"Open LDAP Public License v1.1\",\n      \"licenseId\": \"OLDAP-1.1\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/DL-DE-BY-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/DL-DE-BY-2.0.json\",\n      \"referenceNumber\": 385,\n      \"name\": \"Data licence Germany – attribution – version 2.0\",\n      \"licenseId\": \"DL-DE-BY-2.0\",\n      \"seeAlso\": [\n        \"https://www.govdata.de/dl-de/by-2-0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HTMLTIDY.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HTMLTIDY.json\",\n      \"referenceNumber\": 386,\n      \"name\": \"HTML Tidy License\",\n      \"licenseId\": \"HTMLTIDY\",\n      \"seeAlso\": [\n        \"https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-1.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-1.0-only.json\",\n      \"referenceNumber\": 387,\n      \"name\": \"GNU General Public License v1.0 only\",\n      \"licenseId\": \"GPL-1.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EFL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EFL-1.0.json\",\n      \"referenceNumber\": 388,\n      \"name\": \"Eiffel Forum License v1.0\",\n      \"licenseId\": \"EFL-1.0\",\n      \"seeAlso\": [\n        \"http://www.eiffel-nice.org/license/forum.txt\",\n        \"https://opensource.org/licenses/EFL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.1.json\",\n      \"referenceNumber\": 389,\n      \"name\": \"Open LDAP Public License v2.1\",\n      \"licenseId\": \"OLDAP-2.1\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003db0d176738e96a0d3b9f85cb51e140a86f21be715\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/libselinux-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/libselinux-1.0.json\",\n      \"referenceNumber\": 390,\n      \"name\": \"libselinux public domain notice\",\n      \"licenseId\": \"libselinux-1.0\",\n      \"seeAlso\": [\n        \"https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/psutils.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/psutils.json\",\n      \"referenceNumber\": 391,\n      \"name\": \"psutils License\",\n      \"licenseId\": \"psutils\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/psutils\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Symlinks.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Symlinks.json\",\n      \"referenceNumber\": 392,\n      \"name\": \"Symlinks License\",\n      \"licenseId\": \"Symlinks\",\n      \"seeAlso\": [\n        \"https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json\",\n      \"referenceNumber\": 393,\n      \"name\": \"GNU Free Documentation License v1.2 or later - no invariants\",\n      \"licenseId\": \"GFDL-1.2-no-invariants-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.2.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.2.2.json\",\n      \"referenceNumber\": 394,\n      \"name\": \"Open LDAP Public License 2.2.2\",\n      \"licenseId\": \"OLDAP-2.2.2\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-4.0.json\",\n      \"referenceNumber\": 395,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 4.0 International\",\n      \"licenseId\": \"CC-BY-NC-SA-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Cornell-Lossless-JPEG.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Cornell-Lossless-JPEG.json\",\n      \"referenceNumber\": 396,\n      \"name\": \"Cornell Lossless JPEG License\",\n      \"licenseId\": \"Cornell-Lossless-JPEG\",\n      \"seeAlso\": [\n        \"https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16\",\n        \"https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h\",\n        \"https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NICTA-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NICTA-1.0.json\",\n      \"referenceNumber\": 397,\n      \"name\": \"NICTA Public Software License, Version 1.0\",\n      \"licenseId\": \"NICTA-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/zlib-acknowledgement.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/zlib-acknowledgement.json\",\n      \"referenceNumber\": 398,\n      \"name\": \"zlib/libpng License with Acknowledgement\",\n      \"licenseId\": \"zlib-acknowledgement\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CNRI-Python.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CNRI-Python.json\",\n      \"referenceNumber\": 399,\n      \"name\": \"CNRI Python License\",\n      \"licenseId\": \"CNRI-Python\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/CNRI-Python\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/VOSTROM.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/VOSTROM.json\",\n      \"referenceNumber\": 400,\n      \"name\": \"VOSTROM Public License for Open Source\",\n      \"licenseId\": \"VOSTROM\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/VOSTROM\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Zimbra-1.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Zimbra-1.3.json\",\n      \"referenceNumber\": 401,\n      \"name\": \"Zimbra Public License v1.3\",\n      \"licenseId\": \"Zimbra-1.3\",\n      \"seeAlso\": [\n        \"http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.0.json\",\n      \"referenceNumber\": 402,\n      \"name\": \"Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)\",\n      \"licenseId\": \"OLDAP-2.0\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/eGenix.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/eGenix.json\",\n      \"referenceNumber\": 403,\n      \"name\": \"eGenix.com Public License 1.1.0\",\n      \"licenseId\": \"eGenix\",\n      \"seeAlso\": [\n        \"http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf\",\n        \"https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/blessing.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/blessing.json\",\n      \"referenceNumber\": 404,\n      \"name\": \"SQLite Blessing\",\n      \"licenseId\": \"blessing\",\n      \"seeAlso\": [\n        \"https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\\u003d4-9\",\n        \"https://sqlite.org/src/artifact/df5091916dbb40e6\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/copyleft-next-0.3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/copyleft-next-0.3.0.json\",\n      \"referenceNumber\": 405,\n      \"name\": \"copyleft-next 0.3.0\",\n      \"licenseId\": \"copyleft-next-0.3.0\",\n      \"seeAlso\": [\n        \"https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Motosoto.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Motosoto.json\",\n      \"referenceNumber\": 406,\n      \"name\": \"Motosoto License\",\n      \"licenseId\": \"Motosoto\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Motosoto\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-1.0.json\",\n      \"referenceNumber\": 407,\n      \"name\": \"Creative Commons Attribution Share Alike 1.0 Generic\",\n      \"licenseId\": \"CC-BY-SA-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OPL-1.0.json\",\n      \"referenceNumber\": 408,\n      \"name\": \"Open Public License v1.0\",\n      \"licenseId\": \"OPL-1.0\",\n      \"seeAlso\": [\n        \"http://old.koalateam.com/jackaroo/OPL_1_0.TXT\",\n        \"https://fedoraproject.org/wiki/Licensing/Open_Public_License\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-1.2.json\",\n      \"referenceNumber\": 409,\n      \"name\": \"Open LDAP Public License v1.2\",\n      \"licenseId\": \"OLDAP-1.2\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NPL-1.1.json\",\n      \"referenceNumber\": 410,\n      \"name\": \"Netscape Public License v1.1\",\n      \"licenseId\": \"NPL-1.1\",\n      \"seeAlso\": [\n        \"http://www.mozilla.org/MPL/NPL/1.1/\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-ND-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-ND-1.0.json\",\n      \"referenceNumber\": 411,\n      \"name\": \"Creative Commons Attribution No Derivatives 1.0 Generic\",\n      \"licenseId\": \"CC-BY-ND-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/ZPL-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/ZPL-2.1.json\",\n      \"referenceNumber\": 412,\n      \"name\": \"Zope Public License 2.1\",\n      \"licenseId\": \"ZPL-2.1\",\n      \"seeAlso\": [\n        \"http://old.zope.org/Resources/ZPL/\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CATOSL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CATOSL-1.1.json\",\n      \"referenceNumber\": 413,\n      \"name\": \"Computer Associates Trusted Open Source License 1.1\",\n      \"licenseId\": \"CATOSL-1.1\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/CATOSL-1.1\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Beerware.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Beerware.json\",\n      \"referenceNumber\": 414,\n      \"name\": \"Beerware License\",\n      \"licenseId\": \"Beerware\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Beerware\",\n        \"https://people.freebsd.org/~phk/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CFITSIO.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CFITSIO.json\",\n      \"referenceNumber\": 415,\n      \"name\": \"CFITSIO License\",\n      \"licenseId\": \"CFITSIO\",\n      \"seeAlso\": [\n        \"https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Watcom-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Watcom-1.0.json\",\n      \"referenceNumber\": 416,\n      \"name\": \"Sybase Open Watcom Public License 1.0\",\n      \"licenseId\": \"Watcom-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Watcom-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MS-PL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MS-PL.json\",\n      \"referenceNumber\": 417,\n      \"name\": \"Microsoft Public License\",\n      \"licenseId\": \"MS-PL\",\n      \"seeAlso\": [\n        \"http://www.microsoft.com/opensource/licenses.mspx\",\n        \"https://opensource.org/licenses/MS-PL\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/snprintf.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/snprintf.json\",\n      \"referenceNumber\": 418,\n      \"name\": \"snprintf License\",\n      \"licenseId\": \"snprintf\",\n      \"seeAlso\": [\n        \"https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Naumen.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Naumen.json\",\n      \"referenceNumber\": 419,\n      \"name\": \"Naumen Public License\",\n      \"licenseId\": \"Naumen\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Naumen\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EUPL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EUPL-1.2.json\",\n      \"referenceNumber\": 420,\n      \"name\": \"European Union Public License 1.2\",\n      \"licenseId\": \"EUPL-1.2\",\n      \"seeAlso\": [\n        \"https://joinup.ec.europa.eu/page/eupl-text-11-12\",\n        \"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf\",\n        \"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt\",\n        \"https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt\",\n        \"http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\\u003dCELEX:32017D0863\",\n        \"https://opensource.org/licenses/EUPL-1.2\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/DOC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/DOC.json\",\n      \"referenceNumber\": 421,\n      \"name\": \"DOC License\",\n      \"licenseId\": \"DOC\",\n      \"seeAlso\": [\n        \"http://www.cs.wustl.edu/~schmidt/ACE-copying.html\",\n        \"https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Artistic-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Artistic-1.0.json\",\n      \"referenceNumber\": 422,\n      \"name\": \"Artistic License 1.0\",\n      \"licenseId\": \"Artistic-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Artistic-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Imlib2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Imlib2.json\",\n      \"referenceNumber\": 423,\n      \"name\": \"Imlib2 License\",\n      \"licenseId\": \"Imlib2\",\n      \"seeAlso\": [\n        \"http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING\",\n        \"https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGL-UK-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGL-UK-2.0.json\",\n      \"referenceNumber\": 424,\n      \"name\": \"Open Government Licence v2.0\",\n      \"licenseId\": \"OGL-UK-2.0\",\n      \"seeAlso\": [\n        \"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json\",\n      \"referenceNumber\": 425,\n      \"name\": \"GNU Free Documentation License v1.3 only - no invariants\",\n      \"licenseId\": \"GFDL-1.3-no-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json\",\n      \"referenceNumber\": 426,\n      \"name\": \"PolyForm Small Business License 1.0.0\",\n      \"licenseId\": \"PolyForm-Small-Business-1.0.0\",\n      \"seeAlso\": [\n        \"https://polyformproject.org/licenses/small-business/1.0.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-invariants-only.json\",\n      \"referenceNumber\": 427,\n      \"name\": \"GNU Free Documentation License v1.3 only - invariants\",\n      \"licenseId\": \"GFDL-1.3-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BlueOak-1.0.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BlueOak-1.0.0.json\",\n      \"referenceNumber\": 428,\n      \"name\": \"Blue Oak Model License 1.0.0\",\n      \"licenseId\": \"BlueOak-1.0.0\",\n      \"seeAlso\": [\n        \"https://blueoakcouncil.org/license/1.0.0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-advertising.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-advertising.json\",\n      \"referenceNumber\": 429,\n      \"name\": \"Enlightenment License (e16)\",\n      \"licenseId\": \"MIT-advertising\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/YPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/YPL-1.0.json\",\n      \"referenceNumber\": 430,\n      \"name\": \"Yahoo! Public License v1.0\",\n      \"licenseId\": \"YPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.zimbra.com/license/yahoo_public_license_1.0.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/IJG-short.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/IJG-short.json\",\n      \"referenceNumber\": 431,\n      \"name\": \"Independent JPEG Group License - short\",\n      \"licenseId\": \"IJG-short\",\n      \"seeAlso\": [\n        \"https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Adobe-Glyph.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Adobe-Glyph.json\",\n      \"referenceNumber\": 432,\n      \"name\": \"Adobe Glyph List License\",\n      \"licenseId\": \"Adobe-Glyph\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-1.0.json\",\n      \"referenceNumber\": 433,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-ND-1.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Glide.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Glide.json\",\n      \"referenceNumber\": 434,\n      \"name\": \"3dfx Glide License\",\n      \"licenseId\": \"Glide\",\n      \"seeAlso\": [\n        \"http://www.users.on.net/~triforce/glidexp/COPYING.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AMDPLPA.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AMDPLPA.json\",\n      \"referenceNumber\": 435,\n      \"name\": \"AMD\\u0027s plpa_map.c License\",\n      \"licenseId\": \"AMDPLPA\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LZMA-SDK-9.22.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LZMA-SDK-9.22.json\",\n      \"referenceNumber\": 436,\n      \"name\": \"LZMA SDK License (versions 9.22 and beyond)\",\n      \"licenseId\": \"LZMA-SDK-9.22\",\n      \"seeAlso\": [\n        \"https://www.7-zip.org/sdk.html\",\n        \"https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDDL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDDL-1.0.json\",\n      \"referenceNumber\": 437,\n      \"name\": \"Common Development and Distribution License 1.0\",\n      \"licenseId\": \"CDDL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/cddl1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MS-RL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MS-RL.json\",\n      \"referenceNumber\": 438,\n      \"name\": \"Microsoft Reciprocal License\",\n      \"licenseId\": \"MS-RL\",\n      \"seeAlso\": [\n        \"http://www.microsoft.com/opensource/licenses.mspx\",\n        \"https://opensource.org/licenses/MS-RL\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/APSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/APSL-1.0.json\",\n      \"referenceNumber\": 439,\n      \"name\": \"Apple Public Source License 1.0\",\n      \"licenseId\": \"APSL-1.0\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0.json\",\n      \"referenceNumber\": 440,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 2.0 Generic\",\n      \"licenseId\": \"CC-BY-NC-SA-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/JSON.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/JSON.json\",\n      \"referenceNumber\": 441,\n      \"name\": \"JSON License\",\n      \"licenseId\": \"JSON\",\n      \"seeAlso\": [\n        \"http://www.json.org/license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json\",\n      \"referenceNumber\": 442,\n      \"name\": \"GNU General Public License v3.0 w/Autoconf exception\",\n      \"licenseId\": \"GPL-3.0-with-autoconf-exception\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/autoconf-exception-3.0.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.6.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.6.json\",\n      \"referenceNumber\": 443,\n      \"name\": \"Open LDAP Public License v2.6\",\n      \"licenseId\": \"OLDAP-2.6\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003d1cae062821881f41b73012ba816434897abf4205\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.3-or-later.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.3-or-later.json\",\n      \"referenceNumber\": 444,\n      \"name\": \"GNU Free Documentation License v1.3 or later\",\n      \"licenseId\": \"GFDL-1.3-or-later\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/fdl-1.3.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SGI-B-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SGI-B-2.0.json\",\n      \"referenceNumber\": 445,\n      \"name\": \"SGI Free Software License B v2.0\",\n      \"licenseId\": \"SGI-B-2.0\",\n      \"seeAlso\": [\n        \"http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/mplus.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/mplus.json\",\n      \"referenceNumber\": 446,\n      \"name\": \"mplus Font License\",\n      \"licenseId\": \"mplus\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:Mplus?rd\\u003dLicensing/mplus\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.0+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.0+.json\",\n      \"referenceNumber\": 447,\n      \"name\": \"GNU Library General Public License v2 or later\",\n      \"licenseId\": \"LGPL-2.0+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0.json\",\n      \"referenceNumber\": 448,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported\",\n      \"licenseId\": \"CC-BY-NC-ND-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/XFree86-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/XFree86-1.1.json\",\n      \"referenceNumber\": 449,\n      \"name\": \"XFree86 License 1.1\",\n      \"licenseId\": \"XFree86-1.1\",\n      \"seeAlso\": [\n        \"http://www.xfree86.org/current/LICENSE4.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-2.0.json\",\n      \"referenceNumber\": 450,\n      \"name\": \"Creative Commons Attribution 2.0 Generic\",\n      \"licenseId\": \"CC-BY-2.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/2.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/UCL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/UCL-1.0.json\",\n      \"referenceNumber\": 451,\n      \"name\": \"Upstream Compatibility License v1.0\",\n      \"licenseId\": \"UCL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/UCL-1.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/wxWindows.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/wxWindows.json\",\n      \"referenceNumber\": 452,\n      \"name\": \"wxWindows Library License\",\n      \"licenseId\": \"wxWindows\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/WXwindows\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-4-Clause.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-4-Clause.json\",\n      \"referenceNumber\": 453,\n      \"name\": \"BSD 4-Clause \\\"Original\\\" or \\\"Old\\\" License\",\n      \"licenseId\": \"BSD-4-Clause\",\n      \"seeAlso\": [\n        \"http://directory.fsf.org/wiki/License:BSD_4Clause\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GD.json\",\n      \"referenceNumber\": 454,\n      \"name\": \"GD License\",\n      \"licenseId\": \"GD\",\n      \"seeAlso\": [\n        \"https://libgd.github.io/manuals/2.3.0/files/license-txt.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-3.0+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-3.0+.json\",\n      \"referenceNumber\": 455,\n      \"name\": \"GNU Lesser General Public License v3.0 or later\",\n      \"licenseId\": \"LGPL-3.0+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/lgpl-3.0-standalone.html\",\n        \"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt\",\n        \"https://opensource.org/licenses/LGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-2.5.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-2.5.json\",\n      \"referenceNumber\": 456,\n      \"name\": \"Creative Commons Attribution Non Commercial 2.5 Generic\",\n      \"licenseId\": \"CC-BY-NC-2.5\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/2.5/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EPL-1.0.json\",\n      \"referenceNumber\": 457,\n      \"name\": \"Eclipse Public License 1.0\",\n      \"licenseId\": \"EPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.eclipse.org/legal/epl-v10.html\",\n        \"https://opensource.org/licenses/EPL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/copyleft-next-0.3.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/copyleft-next-0.3.1.json\",\n      \"referenceNumber\": 458,\n      \"name\": \"copyleft-next 0.3.1\",\n      \"licenseId\": \"copyleft-next-0.3.1\",\n      \"seeAlso\": [\n        \"https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-1.0.json\",\n      \"referenceNumber\": 459,\n      \"name\": \"CeCILL Free Software License Agreement v1.0\",\n      \"licenseId\": \"CECILL-1.0\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AML.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AML.json\",\n      \"referenceNumber\": 460,\n      \"name\": \"Apple MIT License\",\n      \"licenseId\": \"AML\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Apple_MIT_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-Protection.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-Protection.json\",\n      \"referenceNumber\": 461,\n      \"name\": \"BSD Protection License\",\n      \"licenseId\": \"BSD-Protection\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/BSD_Protection_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RHeCos-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RHeCos-1.1.json\",\n      \"referenceNumber\": 462,\n      \"name\": \"Red Hat eCos Public License v1.1\",\n      \"licenseId\": \"RHeCos-1.1\",\n      \"seeAlso\": [\n        \"http://ecos.sourceware.org/old-license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/RPSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/RPSL-1.0.json\",\n      \"referenceNumber\": 463,\n      \"name\": \"RealNetworks Public Source License v1.0\",\n      \"licenseId\": \"RPSL-1.0\",\n      \"seeAlso\": [\n        \"https://helixcommunity.org/content/rpsl\",\n        \"https://opensource.org/licenses/RPSL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MakeIndex.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MakeIndex.json\",\n      \"referenceNumber\": 464,\n      \"name\": \"MakeIndex License\",\n      \"licenseId\": \"MakeIndex\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MakeIndex\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.0-only.json\",\n      \"referenceNumber\": 465,\n      \"name\": \"GNU Library General Public License v2 only\",\n      \"licenseId\": \"LGPL-2.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSL-1.0.json\",\n      \"referenceNumber\": 466,\n      \"name\": \"Open Software License 1.0\",\n      \"licenseId\": \"OSL-1.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/OSL-1.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MIT-enna.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MIT-enna.json\",\n      \"referenceNumber\": 467,\n      \"name\": \"enna License\",\n      \"licenseId\": \"MIT-enna\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MIT#enna\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Artistic-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Artistic-2.0.json\",\n      \"referenceNumber\": 468,\n      \"name\": \"Artistic License 2.0\",\n      \"licenseId\": \"Artistic-2.0\",\n      \"seeAlso\": [\n        \"http://www.perlfoundation.org/artistic_license_2_0\",\n        \"https://www.perlfoundation.org/artistic-license-20.html\",\n        \"https://opensource.org/licenses/artistic-license-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json\",\n      \"referenceNumber\": 469,\n      \"name\": \"GNU Free Documentation License v1.2 only - no invariants\",\n      \"licenseId\": \"GFDL-1.2-no-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Kazlib.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Kazlib.json\",\n      \"referenceNumber\": 470,\n      \"name\": \"Kazlib License\",\n      \"licenseId\": \"Kazlib\",\n      \"seeAlso\": [\n        \"http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\\u003d0062df360c2d17d57f6af19b0e444c51feb99036\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CPOL-1.02.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CPOL-1.02.json\",\n      \"referenceNumber\": 471,\n      \"name\": \"Code Project Open License 1.02\",\n      \"licenseId\": \"CPOL-1.02\",\n      \"seeAlso\": [\n        \"http://www.codeproject.com/info/cpol10.aspx\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NetCDF.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NetCDF.json\",\n      \"referenceNumber\": 472,\n      \"name\": \"NetCDF license\",\n      \"licenseId\": \"NetCDF\",\n      \"seeAlso\": [\n        \"http://www.unidata.ucar.edu/software/netcdf/copyright.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Aladdin.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Aladdin.json\",\n      \"referenceNumber\": 473,\n      \"name\": \"Aladdin Free Public License\",\n      \"licenseId\": \"Aladdin\",\n      \"seeAlso\": [\n        \"http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OML.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OML.json\",\n      \"referenceNumber\": 474,\n      \"name\": \"Open Market License\",\n      \"licenseId\": \"OML\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Open_Market_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/MulanPSL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/MulanPSL-1.0.json\",\n      \"referenceNumber\": 475,\n      \"name\": \"Mulan Permissive Software License, Version 1\",\n      \"licenseId\": \"MulanPSL-1.0\",\n      \"seeAlso\": [\n        \"https://license.coscl.org.cn/MulanPSL/\",\n        \"https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OFL-1.0-RFN.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OFL-1.0-RFN.json\",\n      \"referenceNumber\": 476,\n      \"name\": \"SIL Open Font License 1.0 with Reserved Font Name\",\n      \"licenseId\": \"OFL-1.0-RFN\",\n      \"seeAlso\": [\n        \"http://scripts.sil.org/cms/scripts/page.php?item_id\\u003dOFL10_web\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-4-Clause-Shortened.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-4-Clause-Shortened.json\",\n      \"referenceNumber\": 477,\n      \"name\": \"BSD 4 Clause Shortened\",\n      \"licenseId\": \"BSD-4-Clause-Shortened\",\n      \"seeAlso\": [\n        \"https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPPL-1.0.json\",\n      \"referenceNumber\": 478,\n      \"name\": \"LaTeX Project Public License v1.0\",\n      \"licenseId\": \"LPPL-1.0\",\n      \"seeAlso\": [\n        \"http://www.latex-project.org/lppl/lppl-1-0.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-3.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-3.0.json\",\n      \"referenceNumber\": 479,\n      \"name\": \"GNU General Public License v3.0 only\",\n      \"licenseId\": \"GPL-3.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/gpl-3.0-standalone.html\",\n        \"https://opensource.org/licenses/GPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-2.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-2.3.json\",\n      \"referenceNumber\": 480,\n      \"name\": \"Open LDAP Public License v2.3\",\n      \"licenseId\": \"OLDAP-2.3\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/psfrag.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/psfrag.json\",\n      \"referenceNumber\": 481,\n      \"name\": \"psfrag License\",\n      \"licenseId\": \"psfrag\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/psfrag\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json\",\n      \"referenceNumber\": 482,\n      \"name\": \"GNU Free Documentation License v1.1 only - no invariants\",\n      \"licenseId\": \"GFDL-1.1-no-invariants-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-1.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-1.0.json\",\n      \"referenceNumber\": 483,\n      \"name\": \"GNU General Public License v1.0 only\",\n      \"licenseId\": \"GPL-1.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json\",\n      \"referenceNumber\": 484,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO\",\n      \"licenseId\": \"CC-BY-NC-ND-3.0-IGO\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TCL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TCL.json\",\n      \"referenceNumber\": 485,\n      \"name\": \"TCL/TK License\",\n      \"licenseId\": \"TCL\",\n      \"seeAlso\": [\n        \"http://www.tcl.tk/software/tcltk/license.html\",\n        \"https://fedoraproject.org/wiki/Licensing/TCL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Rdisc.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Rdisc.json\",\n      \"referenceNumber\": 486,\n      \"name\": \"Rdisc License\",\n      \"licenseId\": \"Rdisc\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Rdisc_License\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Python-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Python-2.0.json\",\n      \"referenceNumber\": 487,\n      \"name\": \"Python License 2.0\",\n      \"licenseId\": \"Python-2.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Python-2.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0-IGO.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0-IGO.json\",\n      \"referenceNumber\": 488,\n      \"name\": \"Creative Commons Attribution 3.0 IGO\",\n      \"licenseId\": \"CC-BY-3.0-IGO\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/igo/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json\",\n      \"referenceNumber\": 489,\n      \"name\": \"BSD 2-Clause FreeBSD License\",\n      \"licenseId\": \"BSD-2-Clause-FreeBSD\",\n      \"seeAlso\": [\n        \"http://www.freebsd.org/copyright/freebsd-license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TORQUE-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TORQUE-1.1.json\",\n      \"referenceNumber\": 490,\n      \"name\": \"TORQUE v2.5+ Software License v1.1\",\n      \"licenseId\": \"TORQUE-1.1\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/TORQUEv1.1\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause.json\",\n      \"referenceNumber\": 491,\n      \"name\": \"BSD 3-Clause \\\"New\\\" or \\\"Revised\\\" License\",\n      \"licenseId\": \"BSD-3-Clause\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/BSD-3-Clause\",\n        \"https://www.eclipse.org/org/documents/edl-v10.php\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json\",\n      \"referenceNumber\": 492,\n      \"name\": \"Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales\",\n      \"licenseId\": \"CC-BY-NC-SA-2.0-UK\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/libtiff.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/libtiff.json\",\n      \"referenceNumber\": 493,\n      \"name\": \"libtiff License\",\n      \"licenseId\": \"libtiff\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/libtiff\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EUPL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EUPL-1.0.json\",\n      \"referenceNumber\": 494,\n      \"name\": \"European Union Public License 1.0\",\n      \"licenseId\": \"EUPL-1.0\",\n      \"seeAlso\": [\n        \"http://ec.europa.eu/idabc/en/document/7330.html\",\n        \"http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\\u003d31096\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPPL-1.2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPPL-1.2.json\",\n      \"referenceNumber\": 495,\n      \"name\": \"LaTeX Project Public License v1.2\",\n      \"licenseId\": \"LPPL-1.2\",\n      \"seeAlso\": [\n        \"http://www.latex-project.org/lppl/lppl-1-2.txt\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AdaCore-doc.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AdaCore-doc.json\",\n      \"referenceNumber\": 496,\n      \"name\": \"AdaCore Doc License\",\n      \"licenseId\": \"AdaCore-doc\",\n      \"seeAlso\": [\n        \"https://github.com/AdaCore/xmlada/blob/master/docs/index.rst\",\n        \"https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst\",\n        \"https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OSL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OSL-1.1.json\",\n      \"referenceNumber\": 497,\n      \"name\": \"Open Software License 1.1\",\n      \"licenseId\": \"OSL-1.1\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/OSL1.1\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Multics.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Multics.json\",\n      \"referenceNumber\": 498,\n      \"name\": \"Multics License\",\n      \"licenseId\": \"Multics\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/Multics\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/GPL-1.0+.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/GPL-1.0+.json\",\n      \"referenceNumber\": 499,\n      \"name\": \"GNU General Public License v1.0 or later\",\n      \"licenseId\": \"GPL-1.0+\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/xlock.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/xlock.json\",\n      \"referenceNumber\": 500,\n      \"name\": \"xlock License\",\n      \"licenseId\": \"xlock\",\n      \"seeAlso\": [\n        \"https://fossies.org/linux/tiff/contrib/ras/ras2tif.c\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OLDAP-1.3.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OLDAP-1.3.json\",\n      \"referenceNumber\": 501,\n      \"name\": \"Open LDAP Public License v1.3\",\n      \"licenseId\": \"OLDAP-1.3\",\n      \"seeAlso\": [\n        \"http://www.openldap.org/devel/gitweb.cgi?p\\u003dopenldap.git;a\\u003dblob;f\\u003dLICENSE;hb\\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/HPND.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/HPND.json\",\n      \"referenceNumber\": 502,\n      \"name\": \"Historical Permission Notice and Disclaimer\",\n      \"licenseId\": \"HPND\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/HPND\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Baekmuk.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Baekmuk.json\",\n      \"referenceNumber\": 503,\n      \"name\": \"Baekmuk License\",\n      \"licenseId\": \"Baekmuk\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\\u003dLicensing/Baekmuk\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/AGPL-3.0-only.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/AGPL-3.0-only.json\",\n      \"referenceNumber\": 504,\n      \"name\": \"GNU Affero General Public License v3.0 only\",\n      \"licenseId\": \"AGPL-3.0-only\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/agpl.txt\",\n        \"https://opensource.org/licenses/AGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Nunit.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/Nunit.json\",\n      \"referenceNumber\": 505,\n      \"name\": \"Nunit License\",\n      \"licenseId\": \"Nunit\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Nunit\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CDLA-Sharing-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CDLA-Sharing-1.0.json\",\n      \"referenceNumber\": 506,\n      \"name\": \"Community Data License Agreement Sharing 1.0\",\n      \"licenseId\": \"CDLA-Sharing-1.0\",\n      \"seeAlso\": [\n        \"https://cdla.io/sharing-1-0\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/OGL-UK-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/OGL-UK-3.0.json\",\n      \"referenceNumber\": 507,\n      \"name\": \"Open Government Licence v3.0\",\n      \"licenseId\": \"OGL-UK-3.0\",\n      \"seeAlso\": [\n        \"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Noweb.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Noweb.json\",\n      \"referenceNumber\": 508,\n      \"name\": \"Noweb License\",\n      \"licenseId\": \"Noweb\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Noweb\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Eurosym.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Eurosym.json\",\n      \"referenceNumber\": 509,\n      \"name\": \"Eurosym License\",\n      \"licenseId\": \"Eurosym\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/Eurosym\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-3.0.json\",\n      \"referenceNumber\": 510,\n      \"name\": \"Creative Commons Attribution Non Commercial 3.0 Unported\",\n      \"licenseId\": \"CC-BY-NC-3.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc/3.0/legalcode\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CECILL-2.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CECILL-2.1.json\",\n      \"referenceNumber\": 511,\n      \"name\": \"CeCILL Free Software License Agreement v2.1\",\n      \"licenseId\": \"CECILL-2.1\",\n      \"seeAlso\": [\n        \"http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/TAPR-OHL-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/TAPR-OHL-1.0.json\",\n      \"referenceNumber\": 512,\n      \"name\": \"TAPR Open Hardware License v1.0\",\n      \"licenseId\": \"TAPR-OHL-1.0\",\n      \"seeAlso\": [\n        \"https://www.tapr.org/OHL\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-SA-3.0-DE.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-SA-3.0-DE.json\",\n      \"referenceNumber\": 513,\n      \"name\": \"Creative Commons Attribution Share Alike 3.0 Germany\",\n      \"licenseId\": \"CC-BY-SA-3.0-DE\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-sa/3.0/de/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-3.0-NL.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-3.0-NL.json\",\n      \"referenceNumber\": 514,\n      \"name\": \"Creative Commons Attribution 3.0 Netherlands\",\n      \"licenseId\": \"CC-BY-3.0-NL\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by/3.0/nl/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SAX-PD.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SAX-PD.json\",\n      \"referenceNumber\": 515,\n      \"name\": \"Sax Public Domain Notice\",\n      \"licenseId\": \"SAX-PD\",\n      \"seeAlso\": [\n        \"http://www.saxproject.org/copying.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/FreeBSD-DOC.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/FreeBSD-DOC.json\",\n      \"referenceNumber\": 516,\n      \"name\": \"FreeBSD Documentation License\",\n      \"licenseId\": \"FreeBSD-DOC\",\n      \"seeAlso\": [\n        \"https://www.freebsd.org/copyright/freebsd-doc-license/\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-1-Clause.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-1-Clause.json\",\n      \"referenceNumber\": 517,\n      \"name\": \"BSD 1-Clause License\",\n      \"licenseId\": \"BSD-1-Clause\",\n      \"seeAlso\": [\n        \"https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\\u003d326823\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/CC-BY-NC-ND-4.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/CC-BY-NC-ND-4.0.json\",\n      \"referenceNumber\": 518,\n      \"name\": \"Creative Commons Attribution Non Commercial No Derivatives 4.0 International\",\n      \"licenseId\": \"CC-BY-NC-ND-4.0\",\n      \"seeAlso\": [\n        \"https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LPPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/LPPL-1.1.json\",\n      \"referenceNumber\": 519,\n      \"name\": \"LaTeX Project Public License v1.1\",\n      \"licenseId\": \"LPPL-1.1\",\n      \"seeAlso\": [\n        \"http://www.latex-project.org/lppl/lppl-1-1.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Interbase-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Interbase-1.0.json\",\n      \"referenceNumber\": 520,\n      \"name\": \"Interbase Public License v1.0\",\n      \"licenseId\": \"Interbase-1.0\",\n      \"seeAlso\": [\n        \"https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Martin-Birgmeier.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Martin-Birgmeier.json\",\n      \"referenceNumber\": 521,\n      \"name\": \"Martin Birgmeier License\",\n      \"licenseId\": \"Martin-Birgmeier\",\n      \"seeAlso\": [\n        \"https://github.com/Perl/perl5/blob/blead/util.c#L6136\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-Clear.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-Clear.json\",\n      \"referenceNumber\": 522,\n      \"name\": \"BSD 3-Clause Clear License\",\n      \"licenseId\": \"BSD-3-Clause-Clear\",\n      \"seeAlso\": [\n        \"http://labs.metacarta.com/license-explanation.html#license\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/SimPL-2.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/SimPL-2.0.json\",\n      \"referenceNumber\": 523,\n      \"name\": \"Simple Public License 2.0\",\n      \"licenseId\": \"SimPL-2.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/SimPL-2.0\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/mpich2.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/mpich2.json\",\n      \"referenceNumber\": 524,\n      \"name\": \"mpich2 License\",\n      \"licenseId\": \"mpich2\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing/MIT\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Apache-1.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Apache-1.0.json\",\n      \"referenceNumber\": 525,\n      \"name\": \"Apache License 1.0\",\n      \"licenseId\": \"Apache-1.0\",\n      \"seeAlso\": [\n        \"http://www.apache.org/licenses/LICENSE-1.0\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/EUPL-1.1.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/EUPL-1.1.json\",\n      \"referenceNumber\": 526,\n      \"name\": \"European Union Public License 1.1\",\n      \"licenseId\": \"EUPL-1.1\",\n      \"seeAlso\": [\n        \"https://joinup.ec.europa.eu/software/page/eupl/licence-eupl\",\n        \"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf\",\n        \"https://opensource.org/licenses/EUPL-1.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-3-Clause-Modification.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-3-Clause-Modification.json\",\n      \"referenceNumber\": 527,\n      \"name\": \"BSD 3-Clause Modification\",\n      \"licenseId\": \"BSD-3-Clause-Modification\",\n      \"seeAlso\": [\n        \"https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-3.0.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-3.0.json\",\n      \"referenceNumber\": 528,\n      \"name\": \"GNU Lesser General Public License v3.0 only\",\n      \"licenseId\": \"LGPL-3.0\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/lgpl-3.0-standalone.html\",\n        \"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt\",\n        \"https://opensource.org/licenses/LGPL-3.0\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/LGPL-2.1.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/LGPL-2.1.json\",\n      \"referenceNumber\": 529,\n      \"name\": \"GNU Lesser General Public License v2.1 only\",\n      \"licenseId\": \"LGPL-2.1\",\n      \"seeAlso\": [\n        \"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html\",\n        \"https://opensource.org/licenses/LGPL-2.1\"\n      ],\n      \"isOsiApproved\": true,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Artistic-1.0-Perl.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Artistic-1.0-Perl.json\",\n      \"referenceNumber\": 530,\n      \"name\": \"Artistic License 1.0 (Perl)\",\n      \"licenseId\": \"Artistic-1.0-Perl\",\n      \"seeAlso\": [\n        \"http://dev.perl.org/licenses/artistic.html\"\n      ],\n      \"isOsiApproved\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/BSD-2-Clause-Views.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/BSD-2-Clause-Views.json\",\n      \"referenceNumber\": 531,\n      \"name\": \"BSD 2-Clause with views sentence\",\n      \"licenseId\": \"BSD-2-Clause-Views\",\n      \"seeAlso\": [\n        \"http://www.freebsd.org/copyright/freebsd-license.html\",\n        \"https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh\",\n        \"https://github.com/protegeproject/protege/blob/master/license.txt\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/gSOAP-1.3b.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/gSOAP-1.3b.json\",\n      \"referenceNumber\": 532,\n      \"name\": \"gSOAP Public License v1.3b\",\n      \"licenseId\": \"gSOAP-1.3b\",\n      \"seeAlso\": [\n        \"http://www.cs.fsu.edu/~engelen/license.html\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/Minpack.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/Minpack.json\",\n      \"referenceNumber\": 533,\n      \"name\": \"Minpack License\",\n      \"licenseId\": \"Minpack\",\n      \"seeAlso\": [\n        \"http://www.netlib.org/minpack/disclaimer\",\n        \"https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK\"\n      ],\n      \"isOsiApproved\": false\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/StandardML-NJ.html\",\n      \"isDeprecatedLicenseId\": true,\n      \"detailsUrl\": \"https://spdx.org/licenses/StandardML-NJ.json\",\n      \"referenceNumber\": 534,\n      \"name\": \"Standard ML of New Jersey License\",\n      \"licenseId\": \"StandardML-NJ\",\n      \"seeAlso\": [\n        \"https://www.smlnj.org/license.html\"\n      ],\n      \"isOsiApproved\": false,\n      \"isFsfLibre\": true\n    },\n    {\n      \"reference\": \"https://spdx.org/licenses/NPOSL-3.0.html\",\n      \"isDeprecatedLicenseId\": false,\n      \"detailsUrl\": \"https://spdx.org/licenses/NPOSL-3.0.json\",\n      \"referenceNumber\": 535,\n      \"name\": \"Non-Profit Open Software License 3.0\",\n      \"licenseId\": \"NPOSL-3.0\",\n      \"seeAlso\": [\n        \"https://opensource.org/licenses/NOSL3.0\"\n      ],\n      \"isOsiApproved\": true\n    }\n  ],\n  \"releaseDate\": \"2023-02-17\"\n}"
  },
  {
    "path": "internal/spdxlicense/license.go",
    "content": "package spdxlicense\n\nimport (\n\t\"strings\"\n)\n\n// https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#license-short-name\n// License generated in license_list.go uses a regular expression to help resolve cases where\n// x.0.0 and x are supplied as version numbers. For SPDX compatibility, versions with trailing\n// dot-zeroes are considered to be equivalent to versions without (e.g., “2.0.0” is considered equal to “2.0” and “2”).\n// EX: gpl-2+ ---> GPL-2.0+\n// EX: gpl-2.0.0-only ---> GPL-2.0-only\n// See the debian link for more details on the spdx license differences\n\nconst (\n\tLicenseRefPrefix = \"LicenseRef-\" // prefix for non-standard licenses\n)\n\n//go:generate go run ./generate\n\n// ID returns the canonical license ID for the given license ID\n// Note: this function is only concerned with returning a best match of an SPDX license ID\n// SPDX Expressions will be handled by a parent package which will call this function\nfunc ID(id string) (value string, exists bool) {\n\t// first look for a canonical license\n\tif value, exists := licenseIDs[cleanLicenseID(id)]; exists {\n\t\treturn value, exists\n\t}\n\t// we did not find, so treat it as a separate license\n\treturn \"\", false\n}\n\nfunc cleanLicenseID(id string) string {\n\tid = strings.TrimSpace(id)\n\tid = strings.ToLower(id)\n\treturn strings.ReplaceAll(id, \"-\", \"\")\n}\n\n// LicenseInfo contains license ID and name\ntype LicenseInfo struct {\n\tID string\n}\n\n// LicenseByURL returns the license ID and name for a given URL from the SPDX license list.\n// The URL should match one of the URLs in the seeAlso field of an SPDX license.\n// The scheme (http:// or https://) is stripped before lookup, so both schemes match.\nfunc LicenseByURL(url string) (LicenseInfo, bool) {\n\turl = strings.TrimSpace(url)\n\turl = stripScheme(url)\n\tif id, exists := urlToLicense[url]; exists {\n\t\treturn LicenseInfo{\n\t\t\tID: id,\n\t\t}, true\n\t}\n\treturn LicenseInfo{}, false\n}\n\n// stripScheme removes http:// or https:// prefix from a URL.\n// This allows a single map entry to match both schemes.\nfunc stripScheme(url string) string {\n\turl = strings.TrimPrefix(url, \"https://\")\n\turl = strings.TrimPrefix(url, \"http://\")\n\treturn url\n}\n"
  },
  {
    "path": "internal/spdxlicense/license_list.go",
    "content": "// Code generated by go generate; DO NOT EDIT.\n// This file was generated using data from https://spdx.org/licenses/licenses.json\npackage spdxlicense\n\nconst Version = \"3.28.0\"\n\nvar licenseIDs = map[string]string{\n\t\"0bsd\":                                  \"0BSD\",\n\t\"3.0.0dslicer1.0\":                       \"3D-Slicer-1.0\",\n\t\"3.0dslicer1.0\":                         \"3D-Slicer-1.0\",\n\t\"3dslicer1.0\":                           \"3D-Slicer-1.0\",\n\t\"aal\":                                   \"AAL\",\n\t\"abstyles\":                              \"Abstyles\",\n\t\"adacoredoc\":                            \"AdaCore-doc\",\n\t\"adobe2006\":                             \"Adobe-2006\",\n\t\"adobe2006.0\":                           \"Adobe-2006\",\n\t\"adobe2006.0.0\":                         \"Adobe-2006\",\n\t\"adobedisplaypostscript\":                \"Adobe-Display-PostScript\",\n\t\"adobeglyph\":                            \"Adobe-Glyph\",\n\t\"adobeutopia\":                           \"Adobe-Utopia\",\n\t\"adsl\":                                  \"ADSL\",\n\t\"advancedcrypticsdictionary\":            \"Advanced-Cryptics-Dictionary\",\n\t\"afl1\":                                  \"AFL-1.1\",\n\t\"afl1.1\":                                \"AFL-1.1\",\n\t\"afl1.1.0\":                              \"AFL-1.1\",\n\t\"afl1.2\":                                \"AFL-1.2\",\n\t\"afl1.2.0\":                              \"AFL-1.2\",\n\t\"afl2\":                                  \"AFL-2.0\",\n\t\"afl2.0\":                                \"AFL-2.0\",\n\t\"afl2.0.0\":                              \"AFL-2.0\",\n\t\"afl2.1\":                                \"AFL-2.1\",\n\t\"afl2.1.0\":                              \"AFL-2.1\",\n\t\"afl3\":                                  \"AFL-3.0\",\n\t\"afl3.0\":                                \"AFL-3.0\",\n\t\"afl3.0.0\":                              \"AFL-3.0\",\n\t\"afmparse\":                              \"Afmparse\",\n\t\"agpl1\":                                 \"AGPL-1.0-only\",\n\t\"agpl1+\":                                \"AGPL-1.0-or-later\",\n\t\"agpl1.0\":                               \"AGPL-1.0-only\",\n\t\"agpl1.0+\":                              \"AGPL-1.0-or-later\",\n\t\"agpl1.0.0\":                             \"AGPL-1.0-only\",\n\t\"agpl1.0.0+\":                            \"AGPL-1.0-or-later\",\n\t\"agpl1.0.0only\":                         \"AGPL-1.0-only\",\n\t\"agpl1.0.0orlater\":                      \"AGPL-1.0-or-later\",\n\t\"agpl1.0only\":                           \"AGPL-1.0-only\",\n\t\"agpl1.0orlater\":                        \"AGPL-1.0-or-later\",\n\t\"agpl1only\":                             \"AGPL-1.0-only\",\n\t\"agpl1orlater\":                          \"AGPL-1.0-or-later\",\n\t\"agpl3\":                                 \"AGPL-3.0-only\",\n\t\"agpl3+\":                                \"AGPL-3.0-or-later\",\n\t\"agpl3.0\":                               \"AGPL-3.0-only\",\n\t\"agpl3.0+\":                              \"AGPL-3.0-or-later\",\n\t\"agpl3.0.0\":                             \"AGPL-3.0-only\",\n\t\"agpl3.0.0+\":                            \"AGPL-3.0-or-later\",\n\t\"agpl3.0.0only\":                         \"AGPL-3.0-only\",\n\t\"agpl3.0.0orlater\":                      \"AGPL-3.0-or-later\",\n\t\"agpl3.0only\":                           \"AGPL-3.0-only\",\n\t\"agpl3.0orlater\":                        \"AGPL-3.0-or-later\",\n\t\"agpl3only\":                             \"AGPL-3.0-only\",\n\t\"agpl3orlater\":                          \"AGPL-3.0-or-later\",\n\t\"aladdin\":                               \"Aladdin\",\n\t\"alglibdocumentation\":                   \"ALGLIB-Documentation\",\n\t\"amdnewlib\":                             \"AMD-newlib\",\n\t\"amdplpa\":                               \"AMDPLPA\",\n\t\"aml\":                                   \"AML\",\n\t\"amlglslang\":                            \"AML-glslang\",\n\t\"ampas\":                                 \"AMPAS\",\n\t\"antlrpd\":                               \"ANTLR-PD\",\n\t\"antlrpdfallback\":                       \"ANTLR-PD-fallback\",\n\t\"anyosi\":                                \"any-OSI\",\n\t\"anyosiperlmodules\":                     \"any-OSI-perl-modules\",\n\t\"apache1\":                               \"Apache-1.0\",\n\t\"apache1.0\":                             \"Apache-1.0\",\n\t\"apache1.0.0\":                           \"Apache-1.0\",\n\t\"apache1.1\":                             \"Apache-1.1\",\n\t\"apache1.1.0\":                           \"Apache-1.1\",\n\t\"apache2\":                               \"Apache-2.0\",\n\t\"apache2.0\":                             \"Apache-2.0\",\n\t\"apache2.0.0\":                           \"Apache-2.0\",\n\t\"apafml\":                                \"APAFML\",\n\t\"apl1\":                                  \"APL-1.0\",\n\t\"apl1.0\":                                \"APL-1.0\",\n\t\"apl1.0.0\":                              \"APL-1.0\",\n\t\"apps2.0.0p\":                            \"App-s2p\",\n\t\"apps2.0p\":                              \"App-s2p\",\n\t\"apps2p\":                                \"App-s2p\",\n\t\"apsl1\":                                 \"APSL-1.0\",\n\t\"apsl1.0\":                               \"APSL-1.0\",\n\t\"apsl1.0.0\":                             \"APSL-1.0\",\n\t\"apsl1.1\":                               \"APSL-1.1\",\n\t\"apsl1.1.0\":                             \"APSL-1.1\",\n\t\"apsl1.2\":                               \"APSL-1.2\",\n\t\"apsl1.2.0\":                             \"APSL-1.2\",\n\t\"apsl2\":                                 \"APSL-2.0\",\n\t\"apsl2.0\":                               \"APSL-2.0\",\n\t\"apsl2.0.0\":                             \"APSL-2.0\",\n\t\"arphic1999\":                            \"Arphic-1999\",\n\t\"arphic1999.0\":                          \"Arphic-1999\",\n\t\"arphic1999.0.0\":                        \"Arphic-1999\",\n\t\"artistic1\":                             \"Artistic-1.0\",\n\t\"artistic1.0\":                           \"Artistic-1.0\",\n\t\"artistic1.0.0\":                         \"Artistic-1.0\",\n\t\"artistic1.0.0cl8\":                      \"Artistic-1.0-cl8\",\n\t\"artistic1.0.0perl\":                     \"Artistic-1.0-Perl\",\n\t\"artistic1.0cl8\":                        \"Artistic-1.0-cl8\",\n\t\"artistic1.0perl\":                       \"Artistic-1.0-Perl\",\n\t\"artistic1cl8\":                          \"Artistic-1.0-cl8\",\n\t\"artistic1perl\":                         \"Artistic-1.0-Perl\",\n\t\"artistic2\":                             \"Artistic-2.0\",\n\t\"artistic2.0\":                           \"Artistic-2.0\",\n\t\"artistic2.0.0\":                         \"Artistic-2.0\",\n\t\"artisticdist\":                          \"Artistic-dist\",\n\t\"aspellru\":                              \"Aspell-RU\",\n\t\"aswfdigitalassets1\":                    \"ASWF-Digital-Assets-1.0\",\n\t\"aswfdigitalassets1.0\":                  \"ASWF-Digital-Assets-1.0\",\n\t\"aswfdigitalassets1.0.0\":                \"ASWF-Digital-Assets-1.0\",\n\t\"aswfdigitalassets1.1\":                  \"ASWF-Digital-Assets-1.1\",\n\t\"aswfdigitalassets1.1.0\":                \"ASWF-Digital-Assets-1.1\",\n\t\"baekmuk\":                               \"Baekmuk\",\n\t\"bahyph\":                                \"Bahyph\",\n\t\"barr\":                                  \"Barr\",\n\t\"bcryptsolardesigner\":                   \"bcrypt-Solar-Designer\",\n\t\"beerware\":                              \"Beerware\",\n\t\"bitstreamcharter\":                      \"Bitstream-Charter\",\n\t\"bitstreamvera\":                         \"Bitstream-Vera\",\n\t\"bittorrent1\":                           \"BitTorrent-1.0\",\n\t\"bittorrent1.0\":                         \"BitTorrent-1.0\",\n\t\"bittorrent1.0.0\":                       \"BitTorrent-1.0\",\n\t\"bittorrent1.1\":                         \"BitTorrent-1.1\",\n\t\"bittorrent1.1.0\":                       \"BitTorrent-1.1\",\n\t\"blessing\":                              \"blessing\",\n\t\"blueoak1\":                              \"BlueOak-1.0.0\",\n\t\"blueoak1.0\":                            \"BlueOak-1.0.0\",\n\t\"blueoak1.0.0\":                          \"BlueOak-1.0.0\",\n\t\"boehmgc\":                               \"Boehm-GC\",\n\t\"boehmgcwithoutfee\":                     \"Boehm-GC-without-fee\",\n\t\"bola1\":                                 \"BOLA-1.1\",\n\t\"bola1.1\":                               \"BOLA-1.1\",\n\t\"bola1.1.0\":                             \"BOLA-1.1\",\n\t\"borceux\":                               \"Borceux\",\n\t\"briangladman2.0.0clause\":               \"Brian-Gladman-2-Clause\",\n\t\"briangladman2.0clause\":                 \"Brian-Gladman-2-Clause\",\n\t\"briangladman2clause\":                   \"Brian-Gladman-2-Clause\",\n\t\"briangladman3.0.0clause\":               \"Brian-Gladman-3-Clause\",\n\t\"briangladman3.0clause\":                 \"Brian-Gladman-3-Clause\",\n\t\"briangladman3clause\":                   \"Brian-Gladman-3-Clause\",\n\t\"bsd1.0.0clause\":                        \"BSD-1-Clause\",\n\t\"bsd1.0clause\":                          \"BSD-1-Clause\",\n\t\"bsd1clause\":                            \"BSD-1-Clause\",\n\t\"bsd2.0.0clause\":                        \"BSD-2-Clause\",\n\t\"bsd2.0.0clausedarwin\":                  \"BSD-2-Clause-Darwin\",\n\t\"bsd2.0.0clausefirstlines\":              \"BSD-2-Clause-first-lines\",\n\t\"bsd2.0.0clausefreebsd\":                 \"BSD-2-Clause-Views\",\n\t\"bsd2.0.0clausenetbsd\":                  \"BSD-2-Clause\",\n\t\"bsd2.0.0clausepatent\":                  \"BSD-2-Clause-Patent\",\n\t\"bsd2.0.0clausepkgconfdisclaimer\":       \"BSD-2-Clause-pkgconf-disclaimer\",\n\t\"bsd2.0.0clauseviews\":                   \"BSD-2-Clause-Views\",\n\t\"bsd2.0clause\":                          \"BSD-2-Clause\",\n\t\"bsd2.0clausedarwin\":                    \"BSD-2-Clause-Darwin\",\n\t\"bsd2.0clausefirstlines\":                \"BSD-2-Clause-first-lines\",\n\t\"bsd2.0clausefreebsd\":                   \"BSD-2-Clause-Views\",\n\t\"bsd2.0clausenetbsd\":                    \"BSD-2-Clause\",\n\t\"bsd2.0clausepatent\":                    \"BSD-2-Clause-Patent\",\n\t\"bsd2.0clausepkgconfdisclaimer\":         \"BSD-2-Clause-pkgconf-disclaimer\",\n\t\"bsd2.0clauseviews\":                     \"BSD-2-Clause-Views\",\n\t\"bsd2clause\":                            \"BSD-2-Clause\",\n\t\"bsd2clausedarwin\":                      \"BSD-2-Clause-Darwin\",\n\t\"bsd2clausefirstlines\":                  \"BSD-2-Clause-first-lines\",\n\t\"bsd2clausefreebsd\":                     \"BSD-2-Clause-Views\",\n\t\"bsd2clausenetbsd\":                      \"BSD-2-Clause\",\n\t\"bsd2clausepatent\":                      \"BSD-2-Clause-Patent\",\n\t\"bsd2clausepkgconfdisclaimer\":           \"BSD-2-Clause-pkgconf-disclaimer\",\n\t\"bsd2clauseviews\":                       \"BSD-2-Clause-Views\",\n\t\"bsd3.0.0clause\":                        \"BSD-3-Clause\",\n\t\"bsd3.0.0clauseacpica\":                  \"BSD-3-Clause-acpica\",\n\t\"bsd3.0.0clauseattribution\":             \"BSD-3-Clause-Attribution\",\n\t\"bsd3.0.0clauseclear\":                   \"BSD-3-Clause-Clear\",\n\t\"bsd3.0.0clauseflex\":                    \"BSD-3-Clause-flex\",\n\t\"bsd3.0.0clausehp\":                      \"BSD-3-Clause-HP\",\n\t\"bsd3.0.0clauselbnl\":                    \"BSD-3-Clause-LBNL\",\n\t\"bsd3.0.0clausemodification\":            \"BSD-3-Clause-Modification\",\n\t\"bsd3.0.0clausenomilitarylicense\":       \"BSD-3-Clause-No-Military-License\",\n\t\"bsd3.0.0clausenonuclearlicense\":        \"BSD-3-Clause-No-Nuclear-License\",\n\t\"bsd3.0.0clausenonuclearlicense2014\":    \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\"bsd3.0.0clausenonuclearwarranty\":       \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\"bsd3.0.0clauseopenmpi\":                 \"BSD-3-Clause-Open-MPI\",\n\t\"bsd3.0.0clausesun\":                     \"BSD-3-Clause-Sun\",\n\t\"bsd3.0.0clausetso\":                     \"BSD-3-Clause-Tso\",\n\t\"bsd3.0clause\":                          \"BSD-3-Clause\",\n\t\"bsd3.0clauseacpica\":                    \"BSD-3-Clause-acpica\",\n\t\"bsd3.0clauseattribution\":               \"BSD-3-Clause-Attribution\",\n\t\"bsd3.0clauseclear\":                     \"BSD-3-Clause-Clear\",\n\t\"bsd3.0clauseflex\":                      \"BSD-3-Clause-flex\",\n\t\"bsd3.0clausehp\":                        \"BSD-3-Clause-HP\",\n\t\"bsd3.0clauselbnl\":                      \"BSD-3-Clause-LBNL\",\n\t\"bsd3.0clausemodification\":              \"BSD-3-Clause-Modification\",\n\t\"bsd3.0clausenomilitarylicense\":         \"BSD-3-Clause-No-Military-License\",\n\t\"bsd3.0clausenonuclearlicense\":          \"BSD-3-Clause-No-Nuclear-License\",\n\t\"bsd3.0clausenonuclearlicense2014\":      \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\"bsd3.0clausenonuclearwarranty\":         \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\"bsd3.0clauseopenmpi\":                   \"BSD-3-Clause-Open-MPI\",\n\t\"bsd3.0clausesun\":                       \"BSD-3-Clause-Sun\",\n\t\"bsd3.0clausetso\":                       \"BSD-3-Clause-Tso\",\n\t\"bsd3clause\":                            \"BSD-3-Clause\",\n\t\"bsd3clauseacpica\":                      \"BSD-3-Clause-acpica\",\n\t\"bsd3clauseattribution\":                 \"BSD-3-Clause-Attribution\",\n\t\"bsd3clauseclear\":                       \"BSD-3-Clause-Clear\",\n\t\"bsd3clauseflex\":                        \"BSD-3-Clause-flex\",\n\t\"bsd3clausehp\":                          \"BSD-3-Clause-HP\",\n\t\"bsd3clauselbnl\":                        \"BSD-3-Clause-LBNL\",\n\t\"bsd3clausemodification\":                \"BSD-3-Clause-Modification\",\n\t\"bsd3clausenomilitarylicense\":           \"BSD-3-Clause-No-Military-License\",\n\t\"bsd3clausenonuclearlicense\":            \"BSD-3-Clause-No-Nuclear-License\",\n\t\"bsd3clausenonuclearlicense2014\":        \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\"bsd3clausenonuclearwarranty\":           \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\"bsd3clauseopenmpi\":                     \"BSD-3-Clause-Open-MPI\",\n\t\"bsd3clausesun\":                         \"BSD-3-Clause-Sun\",\n\t\"bsd3clausetso\":                         \"BSD-3-Clause-Tso\",\n\t\"bsd4.0.0clause\":                        \"BSD-4-Clause\",\n\t\"bsd4.0.0clauseshortened\":               \"BSD-4-Clause-Shortened\",\n\t\"bsd4.0.0clauseuc\":                      \"BSD-4-Clause-UC\",\n\t\"bsd4.0clause\":                          \"BSD-4-Clause\",\n\t\"bsd4.0clauseshortened\":                 \"BSD-4-Clause-Shortened\",\n\t\"bsd4.0clauseuc\":                        \"BSD-4-Clause-UC\",\n\t\"bsd4.3.0reno\":                          \"BSD-4.3RENO\",\n\t\"bsd4.3.0tahoe\":                         \"BSD-4.3TAHOE\",\n\t\"bsd4.3reno\":                            \"BSD-4.3RENO\",\n\t\"bsd4.3tahoe\":                           \"BSD-4.3TAHOE\",\n\t\"bsd4clause\":                            \"BSD-4-Clause\",\n\t\"bsd4clauseshortened\":                   \"BSD-4-Clause-Shortened\",\n\t\"bsd4clauseuc\":                          \"BSD-4-Clause-UC\",\n\t\"bsd4reno\":                              \"BSD-4.3RENO\",\n\t\"bsd4tahoe\":                             \"BSD-4.3TAHOE\",\n\t\"bsdadvertisingacknowledgement\":         \"BSD-Advertising-Acknowledgement\",\n\t\"bsdattributionhpnddisclaimer\":          \"BSD-Attribution-HPND-disclaimer\",\n\t\"bsdinfernonettverk\":                    \"BSD-Inferno-Nettverk\",\n\t\"bsdmarkmodifications\":                  \"BSD-Mark-Modifications\",\n\t\"bsdprotection\":                         \"BSD-Protection\",\n\t\"bsdsourcebeginningfile\":                \"BSD-Source-beginning-file\",\n\t\"bsdsourcecode\":                         \"BSD-Source-Code\",\n\t\"bsdsystemics\":                          \"BSD-Systemics\",\n\t\"bsdsystemicsw3.0.0works\":               \"BSD-Systemics-W3Works\",\n\t\"bsdsystemicsw3.0works\":                 \"BSD-Systemics-W3Works\",\n\t\"bsdsystemicsw3works\":                   \"BSD-Systemics-W3Works\",\n\t\"bsl1\":                                  \"BSL-1.0\",\n\t\"bsl1.0\":                                \"BSL-1.0\",\n\t\"bsl1.0.0\":                              \"BSL-1.0\",\n\t\"buddy\":                                 \"Buddy\",\n\t\"busl1\":                                 \"BUSL-1.1\",\n\t\"busl1.1\":                               \"BUSL-1.1\",\n\t\"busl1.1.0\":                             \"BUSL-1.1\",\n\t\"bzip21\":                                \"bzip2-1.0.6\",\n\t\"bzip21.0\":                              \"bzip2-1.0.6\",\n\t\"bzip21.0.5\":                            \"bzip2-1.0.6\",\n\t\"bzip21.0.6\":                            \"bzip2-1.0.6\",\n\t\"cal1\":                                  \"CAL-1.0\",\n\t\"cal1.0\":                                \"CAL-1.0\",\n\t\"cal1.0.0\":                              \"CAL-1.0\",\n\t\"cal1.0.0combinedworkexception\":         \"CAL-1.0-Combined-Work-Exception\",\n\t\"cal1.0combinedworkexception\":           \"CAL-1.0-Combined-Work-Exception\",\n\t\"cal1combinedworkexception\":             \"CAL-1.0-Combined-Work-Exception\",\n\t\"caldera\":                               \"Caldera\",\n\t\"calderanopreamble\":                     \"Caldera-no-preamble\",\n\t\"capectou\":                              \"CAPEC-tou\",\n\t\"catharon\":                              \"Catharon\",\n\t\"catosl1\":                               \"CATOSL-1.1\",\n\t\"catosl1.1\":                             \"CATOSL-1.1\",\n\t\"catosl1.1.0\":                           \"CATOSL-1.1\",\n\t\"cc01\":                                  \"CC0-1.0\",\n\t\"cc01.0\":                                \"CC0-1.0\",\n\t\"cc01.0.0\":                              \"CC0-1.0\",\n\t\"ccby1\":                                 \"CC-BY-1.0\",\n\t\"ccby1.0\":                               \"CC-BY-1.0\",\n\t\"ccby1.0.0\":                             \"CC-BY-1.0\",\n\t\"ccby2\":                                 \"CC-BY-2.0\",\n\t\"ccby2.0\":                               \"CC-BY-2.0\",\n\t\"ccby2.0.0\":                             \"CC-BY-2.0\",\n\t\"ccby2.5\":                               \"CC-BY-2.5\",\n\t\"ccby2.5.0\":                             \"CC-BY-2.5\",\n\t\"ccby2.5.0au\":                           \"CC-BY-2.5-AU\",\n\t\"ccby2.5au\":                             \"CC-BY-2.5-AU\",\n\t\"ccby2au\":                               \"CC-BY-2.5-AU\",\n\t\"ccby3\":                                 \"CC-BY-3.0\",\n\t\"ccby3.0\":                               \"CC-BY-3.0\",\n\t\"ccby3.0.0\":                             \"CC-BY-3.0\",\n\t\"ccby3.0.0at\":                           \"CC-BY-3.0-AT\",\n\t\"ccby3.0.0au\":                           \"CC-BY-3.0-AU\",\n\t\"ccby3.0.0de\":                           \"CC-BY-3.0-DE\",\n\t\"ccby3.0.0igo\":                          \"CC-BY-3.0-IGO\",\n\t\"ccby3.0.0nl\":                           \"CC-BY-3.0-NL\",\n\t\"ccby3.0.0us\":                           \"CC-BY-3.0-US\",\n\t\"ccby3.0at\":                             \"CC-BY-3.0-AT\",\n\t\"ccby3.0au\":                             \"CC-BY-3.0-AU\",\n\t\"ccby3.0de\":                             \"CC-BY-3.0-DE\",\n\t\"ccby3.0igo\":                            \"CC-BY-3.0-IGO\",\n\t\"ccby3.0nl\":                             \"CC-BY-3.0-NL\",\n\t\"ccby3.0us\":                             \"CC-BY-3.0-US\",\n\t\"ccby3at\":                               \"CC-BY-3.0-AT\",\n\t\"ccby3au\":                               \"CC-BY-3.0-AU\",\n\t\"ccby3de\":                               \"CC-BY-3.0-DE\",\n\t\"ccby3igo\":                              \"CC-BY-3.0-IGO\",\n\t\"ccby3nl\":                               \"CC-BY-3.0-NL\",\n\t\"ccby3us\":                               \"CC-BY-3.0-US\",\n\t\"ccby4\":                                 \"CC-BY-4.0\",\n\t\"ccby4.0\":                               \"CC-BY-4.0\",\n\t\"ccby4.0.0\":                             \"CC-BY-4.0\",\n\t\"ccbync1\":                               \"CC-BY-NC-1.0\",\n\t\"ccbync1.0\":                             \"CC-BY-NC-1.0\",\n\t\"ccbync1.0.0\":                           \"CC-BY-NC-1.0\",\n\t\"ccbync2\":                               \"CC-BY-NC-2.0\",\n\t\"ccbync2.0\":                             \"CC-BY-NC-2.0\",\n\t\"ccbync2.0.0\":                           \"CC-BY-NC-2.0\",\n\t\"ccbync2.5\":                             \"CC-BY-NC-2.5\",\n\t\"ccbync2.5.0\":                           \"CC-BY-NC-2.5\",\n\t\"ccbync3\":                               \"CC-BY-NC-3.0\",\n\t\"ccbync3.0\":                             \"CC-BY-NC-3.0\",\n\t\"ccbync3.0.0\":                           \"CC-BY-NC-3.0\",\n\t\"ccbync3.0.0de\":                         \"CC-BY-NC-3.0-DE\",\n\t\"ccbync3.0de\":                           \"CC-BY-NC-3.0-DE\",\n\t\"ccbync3de\":                             \"CC-BY-NC-3.0-DE\",\n\t\"ccbync4\":                               \"CC-BY-NC-4.0\",\n\t\"ccbync4.0\":                             \"CC-BY-NC-4.0\",\n\t\"ccbync4.0.0\":                           \"CC-BY-NC-4.0\",\n\t\"ccbyncnd1\":                             \"CC-BY-NC-ND-1.0\",\n\t\"ccbyncnd1.0\":                           \"CC-BY-NC-ND-1.0\",\n\t\"ccbyncnd1.0.0\":                         \"CC-BY-NC-ND-1.0\",\n\t\"ccbyncnd2\":                             \"CC-BY-NC-ND-2.0\",\n\t\"ccbyncnd2.0\":                           \"CC-BY-NC-ND-2.0\",\n\t\"ccbyncnd2.0.0\":                         \"CC-BY-NC-ND-2.0\",\n\t\"ccbyncnd2.5\":                           \"CC-BY-NC-ND-2.5\",\n\t\"ccbyncnd2.5.0\":                         \"CC-BY-NC-ND-2.5\",\n\t\"ccbyncnd3\":                             \"CC-BY-NC-ND-3.0\",\n\t\"ccbyncnd3.0\":                           \"CC-BY-NC-ND-3.0\",\n\t\"ccbyncnd3.0.0\":                         \"CC-BY-NC-ND-3.0\",\n\t\"ccbyncnd3.0.0de\":                       \"CC-BY-NC-ND-3.0-DE\",\n\t\"ccbyncnd3.0.0igo\":                      \"CC-BY-NC-ND-3.0-IGO\",\n\t\"ccbyncnd3.0de\":                         \"CC-BY-NC-ND-3.0-DE\",\n\t\"ccbyncnd3.0igo\":                        \"CC-BY-NC-ND-3.0-IGO\",\n\t\"ccbyncnd3de\":                           \"CC-BY-NC-ND-3.0-DE\",\n\t\"ccbyncnd3igo\":                          \"CC-BY-NC-ND-3.0-IGO\",\n\t\"ccbyncnd4\":                             \"CC-BY-NC-ND-4.0\",\n\t\"ccbyncnd4.0\":                           \"CC-BY-NC-ND-4.0\",\n\t\"ccbyncnd4.0.0\":                         \"CC-BY-NC-ND-4.0\",\n\t\"ccbyncsa1\":                             \"CC-BY-NC-SA-1.0\",\n\t\"ccbyncsa1.0\":                           \"CC-BY-NC-SA-1.0\",\n\t\"ccbyncsa1.0.0\":                         \"CC-BY-NC-SA-1.0\",\n\t\"ccbyncsa2\":                             \"CC-BY-NC-SA-2.0\",\n\t\"ccbyncsa2.0\":                           \"CC-BY-NC-SA-2.0\",\n\t\"ccbyncsa2.0.0\":                         \"CC-BY-NC-SA-2.0\",\n\t\"ccbyncsa2.0.0de\":                       \"CC-BY-NC-SA-2.0-DE\",\n\t\"ccbyncsa2.0.0fr\":                       \"CC-BY-NC-SA-2.0-FR\",\n\t\"ccbyncsa2.0.0uk\":                       \"CC-BY-NC-SA-2.0-UK\",\n\t\"ccbyncsa2.0de\":                         \"CC-BY-NC-SA-2.0-DE\",\n\t\"ccbyncsa2.0fr\":                         \"CC-BY-NC-SA-2.0-FR\",\n\t\"ccbyncsa2.0uk\":                         \"CC-BY-NC-SA-2.0-UK\",\n\t\"ccbyncsa2.5\":                           \"CC-BY-NC-SA-2.5\",\n\t\"ccbyncsa2.5.0\":                         \"CC-BY-NC-SA-2.5\",\n\t\"ccbyncsa2de\":                           \"CC-BY-NC-SA-2.0-DE\",\n\t\"ccbyncsa2fr\":                           \"CC-BY-NC-SA-2.0-FR\",\n\t\"ccbyncsa2uk\":                           \"CC-BY-NC-SA-2.0-UK\",\n\t\"ccbyncsa3\":                             \"CC-BY-NC-SA-3.0\",\n\t\"ccbyncsa3.0\":                           \"CC-BY-NC-SA-3.0\",\n\t\"ccbyncsa3.0.0\":                         \"CC-BY-NC-SA-3.0\",\n\t\"ccbyncsa3.0.0de\":                       \"CC-BY-NC-SA-3.0-DE\",\n\t\"ccbyncsa3.0.0igo\":                      \"CC-BY-NC-SA-3.0-IGO\",\n\t\"ccbyncsa3.0de\":                         \"CC-BY-NC-SA-3.0-DE\",\n\t\"ccbyncsa3.0igo\":                        \"CC-BY-NC-SA-3.0-IGO\",\n\t\"ccbyncsa3de\":                           \"CC-BY-NC-SA-3.0-DE\",\n\t\"ccbyncsa3igo\":                          \"CC-BY-NC-SA-3.0-IGO\",\n\t\"ccbyncsa4\":                             \"CC-BY-NC-SA-4.0\",\n\t\"ccbyncsa4.0\":                           \"CC-BY-NC-SA-4.0\",\n\t\"ccbyncsa4.0.0\":                         \"CC-BY-NC-SA-4.0\",\n\t\"ccbynd1\":                               \"CC-BY-ND-1.0\",\n\t\"ccbynd1.0\":                             \"CC-BY-ND-1.0\",\n\t\"ccbynd1.0.0\":                           \"CC-BY-ND-1.0\",\n\t\"ccbynd2\":                               \"CC-BY-ND-2.0\",\n\t\"ccbynd2.0\":                             \"CC-BY-ND-2.0\",\n\t\"ccbynd2.0.0\":                           \"CC-BY-ND-2.0\",\n\t\"ccbynd2.5\":                             \"CC-BY-ND-2.5\",\n\t\"ccbynd2.5.0\":                           \"CC-BY-ND-2.5\",\n\t\"ccbynd3\":                               \"CC-BY-ND-3.0\",\n\t\"ccbynd3.0\":                             \"CC-BY-ND-3.0\",\n\t\"ccbynd3.0.0\":                           \"CC-BY-ND-3.0\",\n\t\"ccbynd3.0.0de\":                         \"CC-BY-ND-3.0-DE\",\n\t\"ccbynd3.0de\":                           \"CC-BY-ND-3.0-DE\",\n\t\"ccbynd3de\":                             \"CC-BY-ND-3.0-DE\",\n\t\"ccbynd4\":                               \"CC-BY-ND-4.0\",\n\t\"ccbynd4.0\":                             \"CC-BY-ND-4.0\",\n\t\"ccbynd4.0.0\":                           \"CC-BY-ND-4.0\",\n\t\"ccbysa1\":                               \"CC-BY-SA-1.0\",\n\t\"ccbysa1.0\":                             \"CC-BY-SA-1.0\",\n\t\"ccbysa1.0.0\":                           \"CC-BY-SA-1.0\",\n\t\"ccbysa2\":                               \"CC-BY-SA-2.0\",\n\t\"ccbysa2.0\":                             \"CC-BY-SA-2.0\",\n\t\"ccbysa2.0.0\":                           \"CC-BY-SA-2.0\",\n\t\"ccbysa2.0.0uk\":                         \"CC-BY-SA-2.0-UK\",\n\t\"ccbysa2.0uk\":                           \"CC-BY-SA-2.0-UK\",\n\t\"ccbysa2.1.0jp\":                         \"CC-BY-SA-2.1-JP\",\n\t\"ccbysa2.1jp\":                           \"CC-BY-SA-2.1-JP\",\n\t\"ccbysa2.5\":                             \"CC-BY-SA-2.5\",\n\t\"ccbysa2.5.0\":                           \"CC-BY-SA-2.5\",\n\t\"ccbysa2jp\":                             \"CC-BY-SA-2.1-JP\",\n\t\"ccbysa2uk\":                             \"CC-BY-SA-2.0-UK\",\n\t\"ccbysa3\":                               \"CC-BY-SA-3.0\",\n\t\"ccbysa3.0\":                             \"CC-BY-SA-3.0\",\n\t\"ccbysa3.0.0\":                           \"CC-BY-SA-3.0\",\n\t\"ccbysa3.0.0at\":                         \"CC-BY-SA-3.0-AT\",\n\t\"ccbysa3.0.0de\":                         \"CC-BY-SA-3.0-DE\",\n\t\"ccbysa3.0.0igo\":                        \"CC-BY-SA-3.0-IGO\",\n\t\"ccbysa3.0at\":                           \"CC-BY-SA-3.0-AT\",\n\t\"ccbysa3.0de\":                           \"CC-BY-SA-3.0-DE\",\n\t\"ccbysa3.0igo\":                          \"CC-BY-SA-3.0-IGO\",\n\t\"ccbysa3at\":                             \"CC-BY-SA-3.0-AT\",\n\t\"ccbysa3de\":                             \"CC-BY-SA-3.0-DE\",\n\t\"ccbysa3igo\":                            \"CC-BY-SA-3.0-IGO\",\n\t\"ccbysa4\":                               \"CC-BY-SA-4.0\",\n\t\"ccbysa4.0\":                             \"CC-BY-SA-4.0\",\n\t\"ccbysa4.0.0\":                           \"CC-BY-SA-4.0\",\n\t\"ccpddc\":                                \"CC-PDDC\",\n\t\"ccpdm1\":                                \"CC-PDM-1.0\",\n\t\"ccpdm1.0\":                              \"CC-PDM-1.0\",\n\t\"ccpdm1.0.0\":                            \"CC-PDM-1.0\",\n\t\"ccsa1\":                                 \"CC-SA-1.0\",\n\t\"ccsa1.0\":                               \"CC-SA-1.0\",\n\t\"ccsa1.0.0\":                             \"CC-SA-1.0\",\n\t\"cddl1\":                                 \"CDDL-1.0\",\n\t\"cddl1.0\":                               \"CDDL-1.0\",\n\t\"cddl1.0.0\":                             \"CDDL-1.0\",\n\t\"cddl1.1\":                               \"CDDL-1.1\",\n\t\"cddl1.1.0\":                             \"CDDL-1.1\",\n\t\"cdl1\":                                  \"CDL-1.0\",\n\t\"cdl1.0\":                                \"CDL-1.0\",\n\t\"cdl1.0.0\":                              \"CDL-1.0\",\n\t\"cdlapermissive1\":                       \"CDLA-Permissive-1.0\",\n\t\"cdlapermissive1.0\":                     \"CDLA-Permissive-1.0\",\n\t\"cdlapermissive1.0.0\":                   \"CDLA-Permissive-1.0\",\n\t\"cdlapermissive2\":                       \"CDLA-Permissive-2.0\",\n\t\"cdlapermissive2.0\":                     \"CDLA-Permissive-2.0\",\n\t\"cdlapermissive2.0.0\":                   \"CDLA-Permissive-2.0\",\n\t\"cdlasharing1\":                          \"CDLA-Sharing-1.0\",\n\t\"cdlasharing1.0\":                        \"CDLA-Sharing-1.0\",\n\t\"cdlasharing1.0.0\":                      \"CDLA-Sharing-1.0\",\n\t\"cecill1\":                               \"CECILL-1.0\",\n\t\"cecill1.0\":                             \"CECILL-1.0\",\n\t\"cecill1.0.0\":                           \"CECILL-1.0\",\n\t\"cecill1.1\":                             \"CECILL-1.1\",\n\t\"cecill1.1.0\":                           \"CECILL-1.1\",\n\t\"cecill2\":                               \"CECILL-2.0\",\n\t\"cecill2.0\":                             \"CECILL-2.0\",\n\t\"cecill2.0.0\":                           \"CECILL-2.0\",\n\t\"cecill2.1\":                             \"CECILL-2.1\",\n\t\"cecill2.1.0\":                           \"CECILL-2.1\",\n\t\"cecillb\":                               \"CECILL-B\",\n\t\"cecillc\":                               \"CECILL-C\",\n\t\"cernohl1\":                              \"CERN-OHL-1.1\",\n\t\"cernohl1.1\":                            \"CERN-OHL-1.1\",\n\t\"cernohl1.1.0\":                          \"CERN-OHL-1.1\",\n\t\"cernohl1.2\":                            \"CERN-OHL-1.2\",\n\t\"cernohl1.2.0\":                          \"CERN-OHL-1.2\",\n\t\"cernohlp2\":                             \"CERN-OHL-P-2.0\",\n\t\"cernohlp2.0\":                           \"CERN-OHL-P-2.0\",\n\t\"cernohlp2.0.0\":                         \"CERN-OHL-P-2.0\",\n\t\"cernohls2\":                             \"CERN-OHL-S-2.0\",\n\t\"cernohls2.0\":                           \"CERN-OHL-S-2.0\",\n\t\"cernohls2.0.0\":                         \"CERN-OHL-S-2.0\",\n\t\"cernohlw2\":                             \"CERN-OHL-W-2.0\",\n\t\"cernohlw2.0\":                           \"CERN-OHL-W-2.0\",\n\t\"cernohlw2.0.0\":                         \"CERN-OHL-W-2.0\",\n\t\"cfitsio\":                               \"CFITSIO\",\n\t\"checkcvs\":                              \"check-cvs\",\n\t\"checkmk\":                               \"checkmk\",\n\t\"clartistic\":                            \"ClArtistic\",\n\t\"clips\":                                 \"Clips\",\n\t\"cmumach\":                               \"CMU-Mach\",\n\t\"cmumachnodoc\":                          \"CMU-Mach-nodoc\",\n\t\"cnrijython\":                            \"CNRI-Jython\",\n\t\"cnripython\":                            \"CNRI-Python\",\n\t\"cnripythongplcompatible\":               \"CNRI-Python-GPL-Compatible\",\n\t\"coil1\":                                 \"COIL-1.0\",\n\t\"coil1.0\":                               \"COIL-1.0\",\n\t\"coil1.0.0\":                             \"COIL-1.0\",\n\t\"communityspec1\":                        \"Community-Spec-1.0\",\n\t\"communityspec1.0\":                      \"Community-Spec-1.0\",\n\t\"communityspec1.0.0\":                    \"Community-Spec-1.0\",\n\t\"condor1\":                               \"Condor-1.1\",\n\t\"condor1.1\":                             \"Condor-1.1\",\n\t\"condor1.1.0\":                           \"Condor-1.1\",\n\t\"copyleftnext0.3\":                       \"copyleft-next-0.3.0\",\n\t\"copyleftnext0.3.0\":                     \"copyleft-next-0.3.0\",\n\t\"copyleftnext0.3.1\":                     \"copyleft-next-0.3.1\",\n\t\"cornelllosslessjpeg\":                   \"Cornell-Lossless-JPEG\",\n\t\"cpal1\":                                 \"CPAL-1.0\",\n\t\"cpal1.0\":                               \"CPAL-1.0\",\n\t\"cpal1.0.0\":                             \"CPAL-1.0\",\n\t\"cpl1\":                                  \"CPL-1.0\",\n\t\"cpl1.0\":                                \"CPL-1.0\",\n\t\"cpl1.0.0\":                              \"CPL-1.0\",\n\t\"cpol1\":                                 \"CPOL-1.02\",\n\t\"cpol1.02\":                              \"CPOL-1.02\",\n\t\"cpol1.02.0\":                            \"CPOL-1.02\",\n\t\"cronyx\":                                \"Cronyx\",\n\t\"crossword\":                             \"Crossword\",\n\t\"cryptoswift\":                           \"CryptoSwift\",\n\t\"crystalstacker\":                        \"CrystalStacker\",\n\t\"cuaopl1\":                               \"CUA-OPL-1.0\",\n\t\"cuaopl1.0\":                             \"CUA-OPL-1.0\",\n\t\"cuaopl1.0.0\":                           \"CUA-OPL-1.0\",\n\t\"cube\":                                  \"Cube\",\n\t\"cuda1\":                                 \"C-UDA-1.0\",\n\t\"cuda1.0\":                               \"C-UDA-1.0\",\n\t\"cuda1.0.0\":                             \"C-UDA-1.0\",\n\t\"curl\":                                  \"curl\",\n\t\"cvetou\":                                \"cve-tou\",\n\t\"dec3.0.0clause\":                        \"DEC-3-Clause\",\n\t\"dec3.0clause\":                          \"DEC-3-Clause\",\n\t\"dec3clause\":                            \"DEC-3-Clause\",\n\t\"dfsl1\":                                 \"D-FSL-1.0\",\n\t\"dfsl1.0\":                               \"D-FSL-1.0\",\n\t\"dfsl1.0.0\":                             \"D-FSL-1.0\",\n\t\"diffmark\":                              \"diffmark\",\n\t\"dldeby2\":                               \"DL-DE-BY-2.0\",\n\t\"dldeby2.0\":                             \"DL-DE-BY-2.0\",\n\t\"dldeby2.0.0\":                           \"DL-DE-BY-2.0\",\n\t\"dldezero2\":                             \"DL-DE-ZERO-2.0\",\n\t\"dldezero2.0\":                           \"DL-DE-ZERO-2.0\",\n\t\"dldezero2.0.0\":                         \"DL-DE-ZERO-2.0\",\n\t\"doc\":                                   \"DOC\",\n\t\"docbookdtd\":                            \"DocBook-DTD\",\n\t\"docbookschema\":                         \"DocBook-Schema\",\n\t\"docbookstylesheet\":                     \"DocBook-Stylesheet\",\n\t\"docbookxml\":                            \"DocBook-XML\",\n\t\"dotseqn\":                               \"Dotseqn\",\n\t\"drl1\":                                  \"DRL-1.0\",\n\t\"drl1.0\":                                \"DRL-1.0\",\n\t\"drl1.0.0\":                              \"DRL-1.0\",\n\t\"drl1.1\":                                \"DRL-1.1\",\n\t\"drl1.1.0\":                              \"DRL-1.1\",\n\t\"dsdp\":                                  \"DSDP\",\n\t\"dtoa\":                                  \"dtoa\",\n\t\"dvipdfm\":                               \"dvipdfm\",\n\t\"ecl1\":                                  \"ECL-1.0\",\n\t\"ecl1.0\":                                \"ECL-1.0\",\n\t\"ecl1.0.0\":                              \"ECL-1.0\",\n\t\"ecl2\":                                  \"ECL-2.0\",\n\t\"ecl2.0\":                                \"ECL-2.0\",\n\t\"ecl2.0.0\":                              \"ECL-2.0\",\n\t\"ecos2\":                                 \"eCos-2.0\",\n\t\"ecos2.0\":                               \"eCos-2.0\",\n\t\"ecos2.0.0\":                             \"eCos-2.0\",\n\t\"efl1\":                                  \"EFL-1.0\",\n\t\"efl1.0\":                                \"EFL-1.0\",\n\t\"efl1.0.0\":                              \"EFL-1.0\",\n\t\"efl2\":                                  \"EFL-2.0\",\n\t\"efl2.0\":                                \"EFL-2.0\",\n\t\"efl2.0.0\":                              \"EFL-2.0\",\n\t\"egenix\":                                \"eGenix\",\n\t\"elastic2\":                              \"Elastic-2.0\",\n\t\"elastic2.0\":                            \"Elastic-2.0\",\n\t\"elastic2.0.0\":                          \"Elastic-2.0\",\n\t\"entessa\":                               \"Entessa\",\n\t\"epics\":                                 \"EPICS\",\n\t\"epl1\":                                  \"EPL-1.0\",\n\t\"epl1.0\":                                \"EPL-1.0\",\n\t\"epl1.0.0\":                              \"EPL-1.0\",\n\t\"epl2\":                                  \"EPL-2.0\",\n\t\"epl2.0\":                                \"EPL-2.0\",\n\t\"epl2.0.0\":                              \"EPL-2.0\",\n\t\"erlpl1\":                                \"ErlPL-1.1\",\n\t\"erlpl1.1\":                              \"ErlPL-1.1\",\n\t\"erlpl1.1.0\":                            \"ErlPL-1.1\",\n\t\"esaplpermissive2\":                      \"ESA-PL-permissive-2.4\",\n\t\"esaplpermissive2.4\":                    \"ESA-PL-permissive-2.4\",\n\t\"esaplpermissive2.4.0\":                  \"ESA-PL-permissive-2.4\",\n\t\"esaplstrongcopyleft2\":                  \"ESA-PL-strong-copyleft-2.4\",\n\t\"esaplstrongcopyleft2.4\":                \"ESA-PL-strong-copyleft-2.4\",\n\t\"esaplstrongcopyleft2.4.0\":              \"ESA-PL-strong-copyleft-2.4\",\n\t\"esaplweakcopyleft2\":                    \"ESA-PL-weak-copyleft-2.4\",\n\t\"esaplweakcopyleft2.4\":                  \"ESA-PL-weak-copyleft-2.4\",\n\t\"esaplweakcopyleft2.4.0\":                \"ESA-PL-weak-copyleft-2.4\",\n\t\"etalab2\":                               \"etalab-2.0\",\n\t\"etalab2.0\":                             \"etalab-2.0\",\n\t\"etalab2.0.0\":                           \"etalab-2.0\",\n\t\"eudatagrid\":                            \"EUDatagrid\",\n\t\"eupl1\":                                 \"EUPL-1.0\",\n\t\"eupl1.0\":                               \"EUPL-1.0\",\n\t\"eupl1.0.0\":                             \"EUPL-1.0\",\n\t\"eupl1.1\":                               \"EUPL-1.1\",\n\t\"eupl1.1.0\":                             \"EUPL-1.1\",\n\t\"eupl1.2\":                               \"EUPL-1.2\",\n\t\"eupl1.2.0\":                             \"EUPL-1.2\",\n\t\"eurosym\":                               \"Eurosym\",\n\t\"fair\":                                  \"Fair\",\n\t\"fbm\":                                   \"FBM\",\n\t\"fdkaac\":                                \"FDK-AAC\",\n\t\"fergusontwofish\":                       \"Ferguson-Twofish\",\n\t\"frameworx1\":                            \"Frameworx-1.0\",\n\t\"frameworx1.0\":                          \"Frameworx-1.0\",\n\t\"frameworx1.0.0\":                        \"Frameworx-1.0\",\n\t\"freebsddoc\":                            \"FreeBSD-DOC\",\n\t\"freeimage\":                             \"FreeImage\",\n\t\"fsfap\":                                 \"FSFAP\",\n\t\"fsfapnowarrantydisclaimer\":             \"FSFAP-no-warranty-disclaimer\",\n\t\"fsful\":                                 \"FSFUL\",\n\t\"fsfullr\":                               \"FSFULLR\",\n\t\"fsfullrsd\":                             \"FSFULLRSD\",\n\t\"fsfullrwd\":                             \"FSFULLRWD\",\n\t\"fsl1.1.0alv2\":                          \"FSL-1.1-ALv2\",\n\t\"fsl1.1.0mit\":                           \"FSL-1.1-MIT\",\n\t\"fsl1.1alv2\":                            \"FSL-1.1-ALv2\",\n\t\"fsl1.1mit\":                             \"FSL-1.1-MIT\",\n\t\"fsl1alv2\":                              \"FSL-1.1-ALv2\",\n\t\"fsl1mit\":                               \"FSL-1.1-MIT\",\n\t\"ftl\":                                   \"FTL\",\n\t\"furuseth\":                              \"Furuseth\",\n\t\"fwlw\":                                  \"fwlw\",\n\t\"gameprogramminggems\":                   \"Game-Programming-Gems\",\n\t\"gcrdocs\":                               \"GCR-docs\",\n\t\"gd\":                                    \"GD\",\n\t\"genericxts\":                            \"generic-xts\",\n\t\"gfdl1\":                                 \"GFDL-1.1-only\",\n\t\"gfdl1+\":                                \"GFDL-1.1-or-later\",\n\t\"gfdl1+invariants\":                      \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1+noinvariants\":                    \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1.1\":                               \"GFDL-1.1-only\",\n\t\"gfdl1.1+\":                              \"GFDL-1.1-or-later\",\n\t\"gfdl1.1+invariants\":                    \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1.1+noinvariants\":                  \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1.1.0\":                             \"GFDL-1.1-only\",\n\t\"gfdl1.1.0+\":                            \"GFDL-1.1-or-later\",\n\t\"gfdl1.1.0+invariants\":                  \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1.1.0+noinvariants\":                \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1.1.0invariantsonly\":               \"GFDL-1.1-invariants-only\",\n\t\"gfdl1.1.0invariantsorlater\":            \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1.1.0noinvariantsonly\":             \"GFDL-1.1-no-invariants-only\",\n\t\"gfdl1.1.0noinvariantsorlater\":          \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1.1.0only\":                         \"GFDL-1.1-only\",\n\t\"gfdl1.1.0orlater\":                      \"GFDL-1.1-or-later\",\n\t\"gfdl1.1invariantsonly\":                 \"GFDL-1.1-invariants-only\",\n\t\"gfdl1.1invariantsorlater\":              \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1.1noinvariantsonly\":               \"GFDL-1.1-no-invariants-only\",\n\t\"gfdl1.1noinvariantsorlater\":            \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1.1only\":                           \"GFDL-1.1-only\",\n\t\"gfdl1.1orlater\":                        \"GFDL-1.1-or-later\",\n\t\"gfdl1.2\":                               \"GFDL-1.2-only\",\n\t\"gfdl1.2+\":                              \"GFDL-1.2-or-later\",\n\t\"gfdl1.2+invariants\":                    \"GFDL-1.2-invariants-or-later\",\n\t\"gfdl1.2+noinvariants\":                  \"GFDL-1.2-no-invariants-or-later\",\n\t\"gfdl1.2.0\":                             \"GFDL-1.2-only\",\n\t\"gfdl1.2.0+\":                            \"GFDL-1.2-or-later\",\n\t\"gfdl1.2.0+invariants\":                  \"GFDL-1.2-invariants-or-later\",\n\t\"gfdl1.2.0+noinvariants\":                \"GFDL-1.2-no-invariants-or-later\",\n\t\"gfdl1.2.0invariantsonly\":               \"GFDL-1.2-invariants-only\",\n\t\"gfdl1.2.0invariantsorlater\":            \"GFDL-1.2-invariants-or-later\",\n\t\"gfdl1.2.0noinvariantsonly\":             \"GFDL-1.2-no-invariants-only\",\n\t\"gfdl1.2.0noinvariantsorlater\":          \"GFDL-1.2-no-invariants-or-later\",\n\t\"gfdl1.2.0only\":                         \"GFDL-1.2-only\",\n\t\"gfdl1.2.0orlater\":                      \"GFDL-1.2-or-later\",\n\t\"gfdl1.2invariantsonly\":                 \"GFDL-1.2-invariants-only\",\n\t\"gfdl1.2invariantsorlater\":              \"GFDL-1.2-invariants-or-later\",\n\t\"gfdl1.2noinvariantsonly\":               \"GFDL-1.2-no-invariants-only\",\n\t\"gfdl1.2noinvariantsorlater\":            \"GFDL-1.2-no-invariants-or-later\",\n\t\"gfdl1.2only\":                           \"GFDL-1.2-only\",\n\t\"gfdl1.2orlater\":                        \"GFDL-1.2-or-later\",\n\t\"gfdl1.3\":                               \"GFDL-1.3-only\",\n\t\"gfdl1.3+\":                              \"GFDL-1.3-or-later\",\n\t\"gfdl1.3+invariants\":                    \"GFDL-1.3-invariants-or-later\",\n\t\"gfdl1.3+noinvariants\":                  \"GFDL-1.3-no-invariants-or-later\",\n\t\"gfdl1.3.0\":                             \"GFDL-1.3-only\",\n\t\"gfdl1.3.0+\":                            \"GFDL-1.3-or-later\",\n\t\"gfdl1.3.0+invariants\":                  \"GFDL-1.3-invariants-or-later\",\n\t\"gfdl1.3.0+noinvariants\":                \"GFDL-1.3-no-invariants-or-later\",\n\t\"gfdl1.3.0invariantsonly\":               \"GFDL-1.3-invariants-only\",\n\t\"gfdl1.3.0invariantsorlater\":            \"GFDL-1.3-invariants-or-later\",\n\t\"gfdl1.3.0noinvariantsonly\":             \"GFDL-1.3-no-invariants-only\",\n\t\"gfdl1.3.0noinvariantsorlater\":          \"GFDL-1.3-no-invariants-or-later\",\n\t\"gfdl1.3.0only\":                         \"GFDL-1.3-only\",\n\t\"gfdl1.3.0orlater\":                      \"GFDL-1.3-or-later\",\n\t\"gfdl1.3invariantsonly\":                 \"GFDL-1.3-invariants-only\",\n\t\"gfdl1.3invariantsorlater\":              \"GFDL-1.3-invariants-or-later\",\n\t\"gfdl1.3noinvariantsonly\":               \"GFDL-1.3-no-invariants-only\",\n\t\"gfdl1.3noinvariantsorlater\":            \"GFDL-1.3-no-invariants-or-later\",\n\t\"gfdl1.3only\":                           \"GFDL-1.3-only\",\n\t\"gfdl1.3orlater\":                        \"GFDL-1.3-or-later\",\n\t\"gfdl1invariantsonly\":                   \"GFDL-1.1-invariants-only\",\n\t\"gfdl1invariantsorlater\":                \"GFDL-1.1-invariants-or-later\",\n\t\"gfdl1noinvariantsonly\":                 \"GFDL-1.1-no-invariants-only\",\n\t\"gfdl1noinvariantsorlater\":              \"GFDL-1.1-no-invariants-or-later\",\n\t\"gfdl1only\":                             \"GFDL-1.1-only\",\n\t\"gfdl1orlater\":                          \"GFDL-1.1-or-later\",\n\t\"giftware\":                              \"Giftware\",\n\t\"gl2.0.0ps\":                             \"GL2PS\",\n\t\"gl2.0ps\":                               \"GL2PS\",\n\t\"gl2ps\":                                 \"GL2PS\",\n\t\"glide\":                                 \"Glide\",\n\t\"glulxe\":                                \"Glulxe\",\n\t\"glwtpl\":                                \"GLWTPL\",\n\t\"gnuplot\":                               \"gnuplot\",\n\t\"gpl1\":                                  \"GPL-1.0-only\",\n\t\"gpl1+\":                                 \"GPL-1.0-or-later\",\n\t\"gpl1.0\":                                \"GPL-1.0-only\",\n\t\"gpl1.0+\":                               \"GPL-1.0-or-later\",\n\t\"gpl1.0.0\":                              \"GPL-1.0-only\",\n\t\"gpl1.0.0+\":                             \"GPL-1.0-or-later\",\n\t\"gpl1.0.0only\":                          \"GPL-1.0-only\",\n\t\"gpl1.0.0orlater\":                       \"GPL-1.0-or-later\",\n\t\"gpl1.0only\":                            \"GPL-1.0-only\",\n\t\"gpl1.0orlater\":                         \"GPL-1.0-or-later\",\n\t\"gpl1only\":                              \"GPL-1.0-only\",\n\t\"gpl1orlater\":                           \"GPL-1.0-or-later\",\n\t\"gpl2\":                                  \"GPL-2.0-only\",\n\t\"gpl2+\":                                 \"GPL-2.0-or-later\",\n\t\"gpl2.0\":                                \"GPL-2.0-only\",\n\t\"gpl2.0+\":                               \"GPL-2.0-or-later\",\n\t\"gpl2.0.0\":                              \"GPL-2.0-only\",\n\t\"gpl2.0.0+\":                             \"GPL-2.0-or-later\",\n\t\"gpl2.0.0only\":                          \"GPL-2.0-only\",\n\t\"gpl2.0.0orlater\":                       \"GPL-2.0-or-later\",\n\t\"gpl2.0.0withautoconfexception\":         \"GPL-2.0-with-autoconf-exception\",\n\t\"gpl2.0.0withbisonexception\":            \"GPL-2.0-with-bison-exception\",\n\t\"gpl2.0.0withclasspathexception\":        \"GPL-2.0-with-classpath-exception\",\n\t\"gpl2.0.0withfontexception\":             \"GPL-2.0-with-font-exception\",\n\t\"gpl2.0.0withgccexception\":              \"GPL-2.0-with-GCC-exception\",\n\t\"gpl2.0only\":                            \"GPL-2.0-only\",\n\t\"gpl2.0orlater\":                         \"GPL-2.0-or-later\",\n\t\"gpl2.0withautoconfexception\":           \"GPL-2.0-with-autoconf-exception\",\n\t\"gpl2.0withbisonexception\":              \"GPL-2.0-with-bison-exception\",\n\t\"gpl2.0withclasspathexception\":          \"GPL-2.0-with-classpath-exception\",\n\t\"gpl2.0withfontexception\":               \"GPL-2.0-with-font-exception\",\n\t\"gpl2.0withgccexception\":                \"GPL-2.0-with-GCC-exception\",\n\t\"gpl2only\":                              \"GPL-2.0-only\",\n\t\"gpl2orlater\":                           \"GPL-2.0-or-later\",\n\t\"gpl2withautoconfexception\":             \"GPL-2.0-with-autoconf-exception\",\n\t\"gpl2withbisonexception\":                \"GPL-2.0-with-bison-exception\",\n\t\"gpl2withclasspathexception\":            \"GPL-2.0-with-classpath-exception\",\n\t\"gpl2withfontexception\":                 \"GPL-2.0-with-font-exception\",\n\t\"gpl2withgccexception\":                  \"GPL-2.0-with-GCC-exception\",\n\t\"gpl3\":                                  \"GPL-3.0-only\",\n\t\"gpl3+\":                                 \"GPL-3.0-or-later\",\n\t\"gpl3.0\":                                \"GPL-3.0-only\",\n\t\"gpl3.0+\":                               \"GPL-3.0-or-later\",\n\t\"gpl3.0.0\":                              \"GPL-3.0-only\",\n\t\"gpl3.0.0+\":                             \"GPL-3.0-or-later\",\n\t\"gpl3.0.0only\":                          \"GPL-3.0-only\",\n\t\"gpl3.0.0orlater\":                       \"GPL-3.0-or-later\",\n\t\"gpl3.0.0withautoconfexception\":         \"GPL-3.0-with-autoconf-exception\",\n\t\"gpl3.0.0withgccexception\":              \"GPL-3.0-with-GCC-exception\",\n\t\"gpl3.0only\":                            \"GPL-3.0-only\",\n\t\"gpl3.0orlater\":                         \"GPL-3.0-or-later\",\n\t\"gpl3.0withautoconfexception\":           \"GPL-3.0-with-autoconf-exception\",\n\t\"gpl3.0withgccexception\":                \"GPL-3.0-with-GCC-exception\",\n\t\"gpl3only\":                              \"GPL-3.0-only\",\n\t\"gpl3orlater\":                           \"GPL-3.0-or-later\",\n\t\"gpl3withautoconfexception\":             \"GPL-3.0-with-autoconf-exception\",\n\t\"gpl3withgccexception\":                  \"GPL-3.0-with-GCC-exception\",\n\t\"graphicsgems\":                          \"Graphics-Gems\",\n\t\"gsoap1.3.0b\":                           \"gSOAP-1.3b\",\n\t\"gsoap1.3b\":                             \"gSOAP-1.3b\",\n\t\"gsoap1b\":                               \"gSOAP-1.3b\",\n\t\"gtkbook\":                               \"gtkbook\",\n\t\"gutmann\":                               \"Gutmann\",\n\t\"haskellreport\":                         \"HaskellReport\",\n\t\"hdf5\":                                  \"HDF5\",\n\t\"hdf5.0\":                                \"HDF5\",\n\t\"hdf5.0.0\":                              \"HDF5\",\n\t\"hdparm\":                                \"hdparm\",\n\t\"hidapi\":                                \"HIDAPI\",\n\t\"hippocratic2\":                          \"Hippocratic-2.1\",\n\t\"hippocratic2.1\":                        \"Hippocratic-2.1\",\n\t\"hippocratic2.1.0\":                      \"Hippocratic-2.1\",\n\t\"hp1986\":                                \"HP-1986\",\n\t\"hp1986.0\":                              \"HP-1986\",\n\t\"hp1986.0.0\":                            \"HP-1986\",\n\t\"hp1989\":                                \"HP-1989\",\n\t\"hp1989.0\":                              \"HP-1989\",\n\t\"hp1989.0.0\":                            \"HP-1989\",\n\t\"hpnd\":                                  \"HPND\",\n\t\"hpnddec\":                               \"HPND-DEC\",\n\t\"hpnddoc\":                               \"HPND-doc\",\n\t\"hpnddocsell\":                           \"HPND-doc-sell\",\n\t\"hpndexport2.0.0us\":                     \"HPND-export2-US\",\n\t\"hpndexport2.0us\":                       \"HPND-export2-US\",\n\t\"hpndexport2us\":                         \"HPND-export2-US\",\n\t\"hpndexportus\":                          \"HPND-export-US\",\n\t\"hpndexportusacknowledgement\":           \"HPND-export-US-acknowledgement\",\n\t\"hpndexportusmodify\":                    \"HPND-export-US-modify\",\n\t\"hpndfenneberglivingston\":               \"HPND-Fenneberg-Livingston\",\n\t\"hpndinriaimag\":                         \"HPND-INRIA-IMAG\",\n\t\"hpndintel\":                             \"HPND-Intel\",\n\t\"hpndkevlinhenney\":                      \"HPND-Kevlin-Henney\",\n\t\"hpndmarkuskuhn\":                        \"HPND-Markus-Kuhn\",\n\t\"hpndmerchantabilityvariant\":            \"HPND-merchantability-variant\",\n\t\"hpndmitdisclaimer\":                     \"HPND-MIT-disclaimer\",\n\t\"hpndnetrek\":                            \"HPND-Netrek\",\n\t\"hpndpbmplus\":                           \"HPND-Pbmplus\",\n\t\"hpndsellmitdisclaimerxserver\":          \"HPND-sell-MIT-disclaimer-xserver\",\n\t\"hpndsellregexpr\":                       \"HPND-sell-regexpr\",\n\t\"hpndsellvariant\":                       \"HPND-sell-variant\",\n\t\"hpndsellvariantcriticalsystems\":        \"HPND-sell-variant-critical-systems\",\n\t\"hpndsellvariantmitdisclaimer\":          \"HPND-sell-variant-MIT-disclaimer\",\n\t\"hpndsellvariantmitdisclaimerrev\":       \"HPND-sell-variant-MIT-disclaimer-rev\",\n\t\"hpndsmc\":                               \"HPND-SMC\",\n\t\"hpnduc\":                                \"HPND-UC\",\n\t\"hpnducexportus\":                        \"HPND-UC-export-US\",\n\t\"htmltidy\":                              \"HTMLTIDY\",\n\t\"hyphenbulgarian\":                       \"hyphen-bulgarian\",\n\t\"ibmpibs\":                               \"IBM-pibs\",\n\t\"icu\":                                   \"ICU\",\n\t\"ieccodecomponentseula\":                 \"IEC-Code-Components-EULA\",\n\t\"ijg\":                                   \"IJG\",\n\t\"ijgshort\":                              \"IJG-short\",\n\t\"imagemagick\":                           \"ImageMagick\",\n\t\"imatix\":                                \"iMatix\",\n\t\"imlib2\":                                \"Imlib2\",\n\t\"imlib2.0\":                              \"Imlib2\",\n\t\"imlib2.0.0\":                            \"Imlib2\",\n\t\"infozip\":                               \"Info-ZIP\",\n\t\"innernet2\":                             \"Inner-Net-2.0\",\n\t\"innernet2.0\":                           \"Inner-Net-2.0\",\n\t\"innernet2.0.0\":                         \"Inner-Net-2.0\",\n\t\"innosetup\":                             \"InnoSetup\",\n\t\"intel\":                                 \"Intel\",\n\t\"intelacpi\":                             \"Intel-ACPI\",\n\t\"interbase1\":                            \"Interbase-1.0\",\n\t\"interbase1.0\":                          \"Interbase-1.0\",\n\t\"interbase1.0.0\":                        \"Interbase-1.0\",\n\t\"ipa\":                                   \"IPA\",\n\t\"ipl1\":                                  \"IPL-1.0\",\n\t\"ipl1.0\":                                \"IPL-1.0\",\n\t\"ipl1.0.0\":                              \"IPL-1.0\",\n\t\"isc\":                                   \"ISC\",\n\t\"iscveillard\":                           \"ISC-Veillard\",\n\t\"isopermission\":                         \"ISO-permission\",\n\t\"jam\":                                   \"Jam\",\n\t\"jasper2\":                               \"JasPer-2.0\",\n\t\"jasper2.0\":                             \"JasPer-2.0\",\n\t\"jasper2.0.0\":                           \"JasPer-2.0\",\n\t\"jove\":                                  \"jove\",\n\t\"jplimage\":                              \"JPL-image\",\n\t\"jpnic\":                                 \"JPNIC\",\n\t\"json\":                                  \"JSON\",\n\t\"kastrup\":                               \"Kastrup\",\n\t\"kazlib\":                                \"Kazlib\",\n\t\"knuthctan\":                             \"Knuth-CTAN\",\n\t\"lal1\":                                  \"LAL-1.2\",\n\t\"lal1.2\":                                \"LAL-1.2\",\n\t\"lal1.2.0\":                              \"LAL-1.2\",\n\t\"lal1.3\":                                \"LAL-1.3\",\n\t\"lal1.3.0\":                              \"LAL-1.3\",\n\t\"latex2.0.0e\":                           \"Latex2e\",\n\t\"latex2.0.0etranslatednotice\":           \"Latex2e-translated-notice\",\n\t\"latex2.0e\":                             \"Latex2e\",\n\t\"latex2.0etranslatednotice\":             \"Latex2e-translated-notice\",\n\t\"latex2e\":                               \"Latex2e\",\n\t\"latex2etranslatednotice\":               \"Latex2e-translated-notice\",\n\t\"leptonica\":                             \"Leptonica\",\n\t\"lgpl2\":                                 \"LGPL-2.0-only\",\n\t\"lgpl2+\":                                \"LGPL-2.0-or-later\",\n\t\"lgpl2.0\":                               \"LGPL-2.0-only\",\n\t\"lgpl2.0+\":                              \"LGPL-2.0-or-later\",\n\t\"lgpl2.0.0\":                             \"LGPL-2.0-only\",\n\t\"lgpl2.0.0+\":                            \"LGPL-2.0-or-later\",\n\t\"lgpl2.0.0only\":                         \"LGPL-2.0-only\",\n\t\"lgpl2.0.0orlater\":                      \"LGPL-2.0-or-later\",\n\t\"lgpl2.0only\":                           \"LGPL-2.0-only\",\n\t\"lgpl2.0orlater\":                        \"LGPL-2.0-or-later\",\n\t\"lgpl2.1\":                               \"LGPL-2.1-only\",\n\t\"lgpl2.1+\":                              \"LGPL-2.1-or-later\",\n\t\"lgpl2.1.0\":                             \"LGPL-2.1-only\",\n\t\"lgpl2.1.0+\":                            \"LGPL-2.1-or-later\",\n\t\"lgpl2.1.0only\":                         \"LGPL-2.1-only\",\n\t\"lgpl2.1.0orlater\":                      \"LGPL-2.1-or-later\",\n\t\"lgpl2.1only\":                           \"LGPL-2.1-only\",\n\t\"lgpl2.1orlater\":                        \"LGPL-2.1-or-later\",\n\t\"lgpl2only\":                             \"LGPL-2.0-only\",\n\t\"lgpl2orlater\":                          \"LGPL-2.0-or-later\",\n\t\"lgpl3\":                                 \"LGPL-3.0-only\",\n\t\"lgpl3+\":                                \"LGPL-3.0-or-later\",\n\t\"lgpl3.0\":                               \"LGPL-3.0-only\",\n\t\"lgpl3.0+\":                              \"LGPL-3.0-or-later\",\n\t\"lgpl3.0.0\":                             \"LGPL-3.0-only\",\n\t\"lgpl3.0.0+\":                            \"LGPL-3.0-or-later\",\n\t\"lgpl3.0.0only\":                         \"LGPL-3.0-only\",\n\t\"lgpl3.0.0orlater\":                      \"LGPL-3.0-or-later\",\n\t\"lgpl3.0only\":                           \"LGPL-3.0-only\",\n\t\"lgpl3.0orlater\":                        \"LGPL-3.0-or-later\",\n\t\"lgpl3only\":                             \"LGPL-3.0-only\",\n\t\"lgpl3orlater\":                          \"LGPL-3.0-or-later\",\n\t\"lgpllr\":                                \"LGPLLR\",\n\t\"libpng\":                                \"Libpng\",\n\t\"libpng1\":                               \"libpng-1.6.35\",\n\t\"libpng1.6\":                             \"libpng-1.6.35\",\n\t\"libpng1.6.35\":                          \"libpng-1.6.35\",\n\t\"libpng2\":                               \"libpng-2.0\",\n\t\"libpng2.0\":                             \"libpng-2.0\",\n\t\"libpng2.0.0\":                           \"libpng-2.0\",\n\t\"libselinux1\":                           \"libselinux-1.0\",\n\t\"libselinux1.0\":                         \"libselinux-1.0\",\n\t\"libselinux1.0.0\":                       \"libselinux-1.0\",\n\t\"libtiff\":                               \"libtiff\",\n\t\"libutildavidnugent\":                    \"libutil-David-Nugent\",\n\t\"liliqp1\":                               \"LiLiQ-P-1.1\",\n\t\"liliqp1.1\":                             \"LiLiQ-P-1.1\",\n\t\"liliqp1.1.0\":                           \"LiLiQ-P-1.1\",\n\t\"liliqr1\":                               \"LiLiQ-R-1.1\",\n\t\"liliqr1.1\":                             \"LiLiQ-R-1.1\",\n\t\"liliqr1.1.0\":                           \"LiLiQ-R-1.1\",\n\t\"liliqrplus1\":                           \"LiLiQ-Rplus-1.1\",\n\t\"liliqrplus1.1\":                         \"LiLiQ-Rplus-1.1\",\n\t\"liliqrplus1.1.0\":                       \"LiLiQ-Rplus-1.1\",\n\t\"linuxmanpages1.0.0para\":                \"Linux-man-pages-1-para\",\n\t\"linuxmanpages1.0para\":                  \"Linux-man-pages-1-para\",\n\t\"linuxmanpages1para\":                    \"Linux-man-pages-1-para\",\n\t\"linuxmanpagescopyleft\":                 \"Linux-man-pages-copyleft\",\n\t\"linuxmanpagescopyleft2.0.0para\":        \"Linux-man-pages-copyleft-2-para\",\n\t\"linuxmanpagescopyleft2.0para\":          \"Linux-man-pages-copyleft-2-para\",\n\t\"linuxmanpagescopyleft2para\":            \"Linux-man-pages-copyleft-2-para\",\n\t\"linuxmanpagescopyleftvar\":              \"Linux-man-pages-copyleft-var\",\n\t\"linuxopenib\":                           \"Linux-OpenIB\",\n\t\"loop\":                                  \"LOOP\",\n\t\"lpddocument\":                           \"LPD-document\",\n\t\"lpl1\":                                  \"LPL-1.0\",\n\t\"lpl1.0\":                                \"LPL-1.0\",\n\t\"lpl1.0.0\":                              \"LPL-1.0\",\n\t\"lpl1.02\":                               \"LPL-1.02\",\n\t\"lpl1.02.0\":                             \"LPL-1.02\",\n\t\"lppl1\":                                 \"LPPL-1.0\",\n\t\"lppl1.0\":                               \"LPPL-1.0\",\n\t\"lppl1.0.0\":                             \"LPPL-1.0\",\n\t\"lppl1.1\":                               \"LPPL-1.1\",\n\t\"lppl1.1.0\":                             \"LPPL-1.1\",\n\t\"lppl1.2\":                               \"LPPL-1.2\",\n\t\"lppl1.2.0\":                             \"LPPL-1.2\",\n\t\"lppl1.3.0a\":                            \"LPPL-1.3a\",\n\t\"lppl1.3.0c\":                            \"LPPL-1.3c\",\n\t\"lppl1.3a\":                              \"LPPL-1.3a\",\n\t\"lppl1.3c\":                              \"LPPL-1.3c\",\n\t\"lppl1a\":                                \"LPPL-1.3a\",\n\t\"lppl1c\":                                \"LPPL-1.3c\",\n\t\"lsof\":                                  \"lsof\",\n\t\"lucidabitmapfonts\":                     \"Lucida-Bitmap-Fonts\",\n\t\"lzmasdk9\":                              \"LZMA-SDK-9.22\",\n\t\"lzmasdk9.11.0to9.20\":                   \"LZMA-SDK-9.11-to-9.20\",\n\t\"lzmasdk9.11to9.20\":                     \"LZMA-SDK-9.11-to-9.20\",\n\t\"lzmasdk9.22\":                           \"LZMA-SDK-9.22\",\n\t\"lzmasdk9.22.0\":                         \"LZMA-SDK-9.22\",\n\t\"lzmasdk9to9.20\":                        \"LZMA-SDK-9.11-to-9.20\",\n\t\"mackerras3.0.0clause\":                  \"Mackerras-3-Clause\",\n\t\"mackerras3.0.0clauseacknowledgment\":    \"Mackerras-3-Clause-acknowledgment\",\n\t\"mackerras3.0clause\":                    \"Mackerras-3-Clause\",\n\t\"mackerras3.0clauseacknowledgment\":      \"Mackerras-3-Clause-acknowledgment\",\n\t\"mackerras3clause\":                      \"Mackerras-3-Clause\",\n\t\"mackerras3clauseacknowledgment\":        \"Mackerras-3-Clause-acknowledgment\",\n\t\"magaz\":                                 \"magaz\",\n\t\"mailprio\":                              \"mailprio\",\n\t\"makeindex\":                             \"MakeIndex\",\n\t\"man2.0.0html\":                          \"man2html\",\n\t\"man2.0html\":                            \"man2html\",\n\t\"man2html\":                              \"man2html\",\n\t\"martinbirgmeier\":                       \"Martin-Birgmeier\",\n\t\"mcpheeslideshow\":                       \"McPhee-slideshow\",\n\t\"metamail\":                              \"metamail\",\n\t\"minpack\":                               \"Minpack\",\n\t\"mips\":                                  \"MIPS\",\n\t\"miros\":                                 \"MirOS\",\n\t\"mit\":                                   \"MIT\",\n\t\"mit0\":                                  \"MIT-0\",\n\t\"mitadvertising\":                        \"MIT-advertising\",\n\t\"mitclick\":                              \"MIT-Click\",\n\t\"mitcmu\":                                \"MIT-CMU\",\n\t\"mitenna\":                               \"MIT-enna\",\n\t\"mitfeh\":                                \"MIT-feh\",\n\t\"mitfestival\":                           \"MIT-Festival\",\n\t\"mitkhronosold\":                         \"MIT-Khronos-old\",\n\t\"mitmodernvariant\":                      \"MIT-Modern-Variant\",\n\t\"mitnfa\":                                \"MITNFA\",\n\t\"mitopengroup\":                          \"MIT-open-group\",\n\t\"mitstk\":                                \"MIT-STK\",\n\t\"mittestregex\":                          \"MIT-testregex\",\n\t\"mitwu\":                                 \"MIT-Wu\",\n\t\"mmixware\":                              \"MMIXware\",\n\t\"mmpl1\":                                 \"MMPL-1.0.1\",\n\t\"mmpl1.0\":                               \"MMPL-1.0.1\",\n\t\"mmpl1.0.1\":                             \"MMPL-1.0.1\",\n\t\"motosoto\":                              \"Motosoto\",\n\t\"mpegssg\":                               \"MPEG-SSG\",\n\t\"mpich2\":                                \"mpich2\",\n\t\"mpich2.0\":                              \"mpich2\",\n\t\"mpich2.0.0\":                            \"mpich2\",\n\t\"mpipermissive\":                         \"mpi-permissive\",\n\t\"mpl1\":                                  \"MPL-1.0\",\n\t\"mpl1.0\":                                \"MPL-1.0\",\n\t\"mpl1.0.0\":                              \"MPL-1.0\",\n\t\"mpl1.1\":                                \"MPL-1.1\",\n\t\"mpl1.1.0\":                              \"MPL-1.1\",\n\t\"mpl2\":                                  \"MPL-2.0\",\n\t\"mpl2.0\":                                \"MPL-2.0\",\n\t\"mpl2.0.0\":                              \"MPL-2.0\",\n\t\"mpl2.0.0nocopyleftexception\":           \"MPL-2.0-no-copyleft-exception\",\n\t\"mpl2.0nocopyleftexception\":             \"MPL-2.0-no-copyleft-exception\",\n\t\"mpl2nocopyleftexception\":               \"MPL-2.0-no-copyleft-exception\",\n\t\"mplus\":                                 \"mplus\",\n\t\"mslpl\":                                 \"MS-LPL\",\n\t\"mspl\":                                  \"MS-PL\",\n\t\"msrl\":                                  \"MS-RL\",\n\t\"mtll\":                                  \"MTLL\",\n\t\"mulanpsl1\":                             \"MulanPSL-1.0\",\n\t\"mulanpsl1.0\":                           \"MulanPSL-1.0\",\n\t\"mulanpsl1.0.0\":                         \"MulanPSL-1.0\",\n\t\"mulanpsl2\":                             \"MulanPSL-2.0\",\n\t\"mulanpsl2.0\":                           \"MulanPSL-2.0\",\n\t\"mulanpsl2.0.0\":                         \"MulanPSL-2.0\",\n\t\"multics\":                               \"Multics\",\n\t\"mup\":                                   \"Mup\",\n\t\"naist2003\":                             \"NAIST-2003\",\n\t\"naist2003.0\":                           \"NAIST-2003\",\n\t\"naist2003.0.0\":                         \"NAIST-2003\",\n\t\"nasa1\":                                 \"NASA-1.3\",\n\t\"nasa1.3\":                               \"NASA-1.3\",\n\t\"nasa1.3.0\":                             \"NASA-1.3\",\n\t\"naumen\":                                \"Naumen\",\n\t\"nbpl1\":                                 \"NBPL-1.0\",\n\t\"nbpl1.0\":                               \"NBPL-1.0\",\n\t\"nbpl1.0.0\":                             \"NBPL-1.0\",\n\t\"ncbipd\":                                \"NCBI-PD\",\n\t\"ncgluk2\":                               \"NCGL-UK-2.0\",\n\t\"ncgluk2.0\":                             \"NCGL-UK-2.0\",\n\t\"ncgluk2.0.0\":                           \"NCGL-UK-2.0\",\n\t\"ncl\":                                   \"NCL\",\n\t\"ncsa\":                                  \"NCSA\",\n\t\"netcdf\":                                \"NetCDF\",\n\t\"netsnmp\":                               \"Net-SNMP\",\n\t\"newsletr\":                              \"Newsletr\",\n\t\"ngpl\":                                  \"NGPL\",\n\t\"ngrep\":                                 \"ngrep\",\n\t\"nicta1\":                                \"NICTA-1.0\",\n\t\"nicta1.0\":                              \"NICTA-1.0\",\n\t\"nicta1.0.0\":                            \"NICTA-1.0\",\n\t\"nistpd\":                                \"NIST-PD\",\n\t\"nistpdfallback\":                        \"NIST-PD-fallback\",\n\t\"nistpdtnt\":                             \"NIST-PD-TNT\",\n\t\"nistsoftware\":                          \"NIST-Software\",\n\t\"nlod1\":                                 \"NLOD-1.0\",\n\t\"nlod1.0\":                               \"NLOD-1.0\",\n\t\"nlod1.0.0\":                             \"NLOD-1.0\",\n\t\"nlod2\":                                 \"NLOD-2.0\",\n\t\"nlod2.0\":                               \"NLOD-2.0\",\n\t\"nlod2.0.0\":                             \"NLOD-2.0\",\n\t\"nlpl\":                                  \"NLPL\",\n\t\"nokia\":                                 \"Nokia\",\n\t\"nosl\":                                  \"NOSL\",\n\t\"noweb\":                                 \"Noweb\",\n\t\"npl1\":                                  \"NPL-1.0\",\n\t\"npl1.0\":                                \"NPL-1.0\",\n\t\"npl1.0.0\":                              \"NPL-1.0\",\n\t\"npl1.1\":                                \"NPL-1.1\",\n\t\"npl1.1.0\":                              \"NPL-1.1\",\n\t\"nposl3\":                                \"NPOSL-3.0\",\n\t\"nposl3.0\":                              \"NPOSL-3.0\",\n\t\"nposl3.0.0\":                            \"NPOSL-3.0\",\n\t\"nrl\":                                   \"NRL\",\n\t\"ntiapd\":                                \"NTIA-PD\",\n\t\"ntp\":                                   \"NTP\",\n\t\"ntp0\":                                  \"NTP-0\",\n\t\"nunit\":                                 \"Nunit\",\n\t\"oar\":                                   \"OAR\",\n\t\"occtpl\":                                \"OCCT-PL\",\n\t\"oclc2\":                                 \"OCLC-2.0\",\n\t\"oclc2.0\":                               \"OCLC-2.0\",\n\t\"oclc2.0.0\":                             \"OCLC-2.0\",\n\t\"odbl1\":                                 \"ODbL-1.0\",\n\t\"odbl1.0\":                               \"ODbL-1.0\",\n\t\"odbl1.0.0\":                             \"ODbL-1.0\",\n\t\"odcby1\":                                \"ODC-By-1.0\",\n\t\"odcby1.0\":                              \"ODC-By-1.0\",\n\t\"odcby1.0.0\":                            \"ODC-By-1.0\",\n\t\"offis\":                                 \"OFFIS\",\n\t\"ofl1\":                                  \"OFL-1.0\",\n\t\"ofl1.0\":                                \"OFL-1.0\",\n\t\"ofl1.0.0\":                              \"OFL-1.0\",\n\t\"ofl1.0.0norfn\":                         \"OFL-1.0-no-RFN\",\n\t\"ofl1.0.0rfn\":                           \"OFL-1.0-RFN\",\n\t\"ofl1.0norfn\":                           \"OFL-1.0-no-RFN\",\n\t\"ofl1.0rfn\":                             \"OFL-1.0-RFN\",\n\t\"ofl1.1\":                                \"OFL-1.1\",\n\t\"ofl1.1.0\":                              \"OFL-1.1\",\n\t\"ofl1.1.0norfn\":                         \"OFL-1.1-no-RFN\",\n\t\"ofl1.1.0rfn\":                           \"OFL-1.1-RFN\",\n\t\"ofl1.1norfn\":                           \"OFL-1.1-no-RFN\",\n\t\"ofl1.1rfn\":                             \"OFL-1.1-RFN\",\n\t\"ofl1norfn\":                             \"OFL-1.0-no-RFN\",\n\t\"ofl1rfn\":                               \"OFL-1.0-RFN\",\n\t\"ogc1\":                                  \"OGC-1.0\",\n\t\"ogc1.0\":                                \"OGC-1.0\",\n\t\"ogc1.0.0\":                              \"OGC-1.0\",\n\t\"ogdltaiwan1\":                           \"OGDL-Taiwan-1.0\",\n\t\"ogdltaiwan1.0\":                         \"OGDL-Taiwan-1.0\",\n\t\"ogdltaiwan1.0.0\":                       \"OGDL-Taiwan-1.0\",\n\t\"oglcanada2\":                            \"OGL-Canada-2.0\",\n\t\"oglcanada2.0\":                          \"OGL-Canada-2.0\",\n\t\"oglcanada2.0.0\":                        \"OGL-Canada-2.0\",\n\t\"ogluk1\":                                \"OGL-UK-1.0\",\n\t\"ogluk1.0\":                              \"OGL-UK-1.0\",\n\t\"ogluk1.0.0\":                            \"OGL-UK-1.0\",\n\t\"ogluk2\":                                \"OGL-UK-2.0\",\n\t\"ogluk2.0\":                              \"OGL-UK-2.0\",\n\t\"ogluk2.0.0\":                            \"OGL-UK-2.0\",\n\t\"ogluk3\":                                \"OGL-UK-3.0\",\n\t\"ogluk3.0\":                              \"OGL-UK-3.0\",\n\t\"ogluk3.0.0\":                            \"OGL-UK-3.0\",\n\t\"ogtsl\":                                 \"OGTSL\",\n\t\"oldap1\":                                \"OLDAP-1.1\",\n\t\"oldap1.1\":                              \"OLDAP-1.1\",\n\t\"oldap1.1.0\":                            \"OLDAP-1.1\",\n\t\"oldap1.2\":                              \"OLDAP-1.2\",\n\t\"oldap1.2.0\":                            \"OLDAP-1.2\",\n\t\"oldap1.3\":                              \"OLDAP-1.3\",\n\t\"oldap1.3.0\":                            \"OLDAP-1.3\",\n\t\"oldap1.4\":                              \"OLDAP-1.4\",\n\t\"oldap1.4.0\":                            \"OLDAP-1.4\",\n\t\"oldap2\":                                \"OLDAP-2.0\",\n\t\"oldap2.0\":                              \"OLDAP-2.0\",\n\t\"oldap2.0.0\":                            \"OLDAP-2.0\",\n\t\"oldap2.0.1\":                            \"OLDAP-2.0.1\",\n\t\"oldap2.1\":                              \"OLDAP-2.1\",\n\t\"oldap2.1.0\":                            \"OLDAP-2.1\",\n\t\"oldap2.2\":                              \"OLDAP-2.2\",\n\t\"oldap2.2.0\":                            \"OLDAP-2.2\",\n\t\"oldap2.2.1\":                            \"OLDAP-2.2.1\",\n\t\"oldap2.2.2\":                            \"OLDAP-2.2.2\",\n\t\"oldap2.3\":                              \"OLDAP-2.3\",\n\t\"oldap2.3.0\":                            \"OLDAP-2.3\",\n\t\"oldap2.4\":                              \"OLDAP-2.4\",\n\t\"oldap2.4.0\":                            \"OLDAP-2.4\",\n\t\"oldap2.5\":                              \"OLDAP-2.5\",\n\t\"oldap2.5.0\":                            \"OLDAP-2.5\",\n\t\"oldap2.6\":                              \"OLDAP-2.6\",\n\t\"oldap2.6.0\":                            \"OLDAP-2.6\",\n\t\"oldap2.7\":                              \"OLDAP-2.7\",\n\t\"oldap2.7.0\":                            \"OLDAP-2.7\",\n\t\"oldap2.8\":                              \"OLDAP-2.8\",\n\t\"oldap2.8.0\":                            \"OLDAP-2.8\",\n\t\"olfl1\":                                 \"OLFL-1.3\",\n\t\"olfl1.3\":                               \"OLFL-1.3\",\n\t\"olfl1.3.0\":                             \"OLFL-1.3\",\n\t\"oml\":                                   \"OML\",\n\t\"openmdw1\":                              \"OpenMDW-1.0\",\n\t\"openmdw1.0\":                            \"OpenMDW-1.0\",\n\t\"openmdw1.0.0\":                          \"OpenMDW-1.0\",\n\t\"openpbs2\":                              \"OpenPBS-2.3\",\n\t\"openpbs2.3\":                            \"OpenPBS-2.3\",\n\t\"openpbs2.3.0\":                          \"OpenPBS-2.3\",\n\t\"openssl\":                               \"OpenSSL\",\n\t\"opensslstandalone\":                     \"OpenSSL-standalone\",\n\t\"openvision\":                            \"OpenVision\",\n\t\"opl1\":                                  \"OPL-1.0\",\n\t\"opl1.0\":                                \"OPL-1.0\",\n\t\"opl1.0.0\":                              \"OPL-1.0\",\n\t\"opluk3\":                                \"OPL-UK-3.0\",\n\t\"opluk3.0\":                              \"OPL-UK-3.0\",\n\t\"opluk3.0.0\":                            \"OPL-UK-3.0\",\n\t\"opubl1\":                                \"OPUBL-1.0\",\n\t\"opubl1.0\":                              \"OPUBL-1.0\",\n\t\"opubl1.0.0\":                            \"OPUBL-1.0\",\n\t\"osc1\":                                  \"OSC-1.0\",\n\t\"osc1.0\":                                \"OSC-1.0\",\n\t\"osc1.0.0\":                              \"OSC-1.0\",\n\t\"osetpl2\":                               \"OSET-PL-2.1\",\n\t\"osetpl2.1\":                             \"OSET-PL-2.1\",\n\t\"osetpl2.1.0\":                           \"OSET-PL-2.1\",\n\t\"osl1\":                                  \"OSL-1.0\",\n\t\"osl1.0\":                                \"OSL-1.0\",\n\t\"osl1.0.0\":                              \"OSL-1.0\",\n\t\"osl1.1\":                                \"OSL-1.1\",\n\t\"osl1.1.0\":                              \"OSL-1.1\",\n\t\"osl2\":                                  \"OSL-2.0\",\n\t\"osl2.0\":                                \"OSL-2.0\",\n\t\"osl2.0.0\":                              \"OSL-2.0\",\n\t\"osl2.1\":                                \"OSL-2.1\",\n\t\"osl2.1.0\":                              \"OSL-2.1\",\n\t\"osl3\":                                  \"OSL-3.0\",\n\t\"osl3.0\":                                \"OSL-3.0\",\n\t\"osl3.0.0\":                              \"OSL-3.0\",\n\t\"ossp\":                                  \"OSSP\",\n\t\"ouda1\":                                 \"O-UDA-1.0\",\n\t\"ouda1.0\":                               \"O-UDA-1.0\",\n\t\"ouda1.0.0\":                             \"O-UDA-1.0\",\n\t\"padl\":                                  \"PADL\",\n\t\"paratypefreefont1\":                     \"ParaType-Free-Font-1.3\",\n\t\"paratypefreefont1.3\":                   \"ParaType-Free-Font-1.3\",\n\t\"paratypefreefont1.3.0\":                 \"ParaType-Free-Font-1.3\",\n\t\"parity6\":                               \"Parity-6.0.0\",\n\t\"parity6.0\":                             \"Parity-6.0.0\",\n\t\"parity6.0.0\":                           \"Parity-6.0.0\",\n\t\"parity7\":                               \"Parity-7.0.0\",\n\t\"parity7.0\":                             \"Parity-7.0.0\",\n\t\"parity7.0.0\":                           \"Parity-7.0.0\",\n\t\"pddl1\":                                 \"PDDL-1.0\",\n\t\"pddl1.0\":                               \"PDDL-1.0\",\n\t\"pddl1.0.0\":                             \"PDDL-1.0\",\n\t\"php3\":                                  \"PHP-3.0\",\n\t\"php3.0\":                                \"PHP-3.0\",\n\t\"php3.0.0\":                              \"PHP-3.0\",\n\t\"php3.01\":                               \"PHP-3.01\",\n\t\"php3.01.0\":                             \"PHP-3.01\",\n\t\"pixar\":                                 \"Pixar\",\n\t\"pkgconf\":                               \"pkgconf\",\n\t\"plexus\":                                \"Plexus\",\n\t\"pnmstitch\":                             \"pnmstitch\",\n\t\"polyformnoncommercial1\":                \"PolyForm-Noncommercial-1.0.0\",\n\t\"polyformnoncommercial1.0\":              \"PolyForm-Noncommercial-1.0.0\",\n\t\"polyformnoncommercial1.0.0\":            \"PolyForm-Noncommercial-1.0.0\",\n\t\"polyformsmallbusiness1\":                \"PolyForm-Small-Business-1.0.0\",\n\t\"polyformsmallbusiness1.0\":              \"PolyForm-Small-Business-1.0.0\",\n\t\"polyformsmallbusiness1.0.0\":            \"PolyForm-Small-Business-1.0.0\",\n\t\"postgresql\":                            \"PostgreSQL\",\n\t\"ppl\":                                   \"PPL\",\n\t\"psf2\":                                  \"PSF-2.0\",\n\t\"psf2.0\":                                \"PSF-2.0\",\n\t\"psf2.0.0\":                              \"PSF-2.0\",\n\t\"psfrag\":                                \"psfrag\",\n\t\"psutils\":                               \"psutils\",\n\t\"python2\":                               \"Python-2.0\",\n\t\"python2.0\":                             \"Python-2.0\",\n\t\"python2.0.0\":                           \"Python-2.0\",\n\t\"python2.0.1\":                           \"Python-2.0.1\",\n\t\"pythonldap\":                            \"python-ldap\",\n\t\"qhull\":                                 \"Qhull\",\n\t\"qpl1\":                                  \"QPL-1.0\",\n\t\"qpl1.0\":                                \"QPL-1.0\",\n\t\"qpl1.0.0\":                              \"QPL-1.0\",\n\t\"qpl1.0.0inria2004\":                     \"QPL-1.0-INRIA-2004\",\n\t\"qpl1.0inria2004\":                       \"QPL-1.0-INRIA-2004\",\n\t\"qpl1inria2004\":                         \"QPL-1.0-INRIA-2004\",\n\t\"radvd\":                                 \"radvd\",\n\t\"rdisc\":                                 \"Rdisc\",\n\t\"rhecos1\":                               \"RHeCos-1.1\",\n\t\"rhecos1.1\":                             \"RHeCos-1.1\",\n\t\"rhecos1.1.0\":                           \"RHeCos-1.1\",\n\t\"rpl1\":                                  \"RPL-1.1\",\n\t\"rpl1.1\":                                \"RPL-1.1\",\n\t\"rpl1.1.0\":                              \"RPL-1.1\",\n\t\"rpl1.5\":                                \"RPL-1.5\",\n\t\"rpl1.5.0\":                              \"RPL-1.5\",\n\t\"rpsl1\":                                 \"RPSL-1.0\",\n\t\"rpsl1.0\":                               \"RPSL-1.0\",\n\t\"rpsl1.0.0\":                             \"RPSL-1.0\",\n\t\"rsamd\":                                 \"RSA-MD\",\n\t\"rscpl\":                                 \"RSCPL\",\n\t\"ruby\":                                  \"Ruby\",\n\t\"rubypty\":                               \"Ruby-pty\",\n\t\"saxpath\":                               \"Saxpath\",\n\t\"saxpd\":                                 \"SAX-PD\",\n\t\"saxpd2\":                                \"SAX-PD-2.0\",\n\t\"saxpd2.0\":                              \"SAX-PD-2.0\",\n\t\"saxpd2.0.0\":                            \"SAX-PD-2.0\",\n\t\"scea\":                                  \"SCEA\",\n\t\"schemereport\":                          \"SchemeReport\",\n\t\"sendmail\":                              \"Sendmail\",\n\t\"sendmail8\":                             \"Sendmail-8.23\",\n\t\"sendmail8.23\":                          \"Sendmail-8.23\",\n\t\"sendmail8.23.0\":                        \"Sendmail-8.23\",\n\t\"sendmailopensource1\":                   \"Sendmail-Open-Source-1.1\",\n\t\"sendmailopensource1.1\":                 \"Sendmail-Open-Source-1.1\",\n\t\"sendmailopensource1.1.0\":               \"Sendmail-Open-Source-1.1\",\n\t\"sgib1\":                                 \"SGI-B-1.0\",\n\t\"sgib1.0\":                               \"SGI-B-1.0\",\n\t\"sgib1.0.0\":                             \"SGI-B-1.0\",\n\t\"sgib1.1\":                               \"SGI-B-1.1\",\n\t\"sgib1.1.0\":                             \"SGI-B-1.1\",\n\t\"sgib2\":                                 \"SGI-B-2.0\",\n\t\"sgib2.0\":                               \"SGI-B-2.0\",\n\t\"sgib2.0.0\":                             \"SGI-B-2.0\",\n\t\"sgiopengl\":                             \"SGI-OpenGL\",\n\t\"sgmlugpm\":                              \"SGMLUG-PM\",\n\t\"sgp4\":                                  \"SGP4\",\n\t\"sgp4.0\":                                \"SGP4\",\n\t\"sgp4.0.0\":                              \"SGP4\",\n\t\"shl0.5\":                                \"SHL-0.5\",\n\t\"shl0.5.0\":                              \"SHL-0.5\",\n\t\"shl0.51\":                               \"SHL-0.51\",\n\t\"shl0.51.0\":                             \"SHL-0.51\",\n\t\"simpl2\":                                \"SimPL-2.0\",\n\t\"simpl2.0\":                              \"SimPL-2.0\",\n\t\"simpl2.0.0\":                            \"SimPL-2.0\",\n\t\"sissl\":                                 \"SISSL\",\n\t\"sissl1\":                                \"SISSL-1.2\",\n\t\"sissl1.2\":                              \"SISSL-1.2\",\n\t\"sissl1.2.0\":                            \"SISSL-1.2\",\n\t\"sl\":                                    \"SL\",\n\t\"sleepycat\":                             \"Sleepycat\",\n\t\"smailgpl\":                              \"SMAIL-GPL\",\n\t\"smlnj\":                                 \"SMLNJ\",\n\t\"smppl\":                                 \"SMPPL\",\n\t\"snia\":                                  \"SNIA\",\n\t\"snprintf\":                              \"snprintf\",\n\t\"sofa\":                                  \"SOFA\",\n\t\"softsurfer\":                            \"softSurfer\",\n\t\"soundex\":                               \"Soundex\",\n\t\"spencer86\":                             \"Spencer-86\",\n\t\"spencer86.0\":                           \"Spencer-86\",\n\t\"spencer86.0.0\":                         \"Spencer-86\",\n\t\"spencer94\":                             \"Spencer-94\",\n\t\"spencer94.0\":                           \"Spencer-94\",\n\t\"spencer94.0.0\":                         \"Spencer-94\",\n\t\"spencer99\":                             \"Spencer-99\",\n\t\"spencer99.0\":                           \"Spencer-99\",\n\t\"spencer99.0.0\":                         \"Spencer-99\",\n\t\"spl1\":                                  \"SPL-1.0\",\n\t\"spl1.0\":                                \"SPL-1.0\",\n\t\"spl1.0.0\":                              \"SPL-1.0\",\n\t\"sshkeyscan\":                            \"ssh-keyscan\",\n\t\"sshopenssh\":                            \"SSH-OpenSSH\",\n\t\"sshshort\":                              \"SSH-short\",\n\t\"ssleaystandalone\":                      \"SSLeay-standalone\",\n\t\"sspl1\":                                 \"SSPL-1.0\",\n\t\"sspl1.0\":                               \"SSPL-1.0\",\n\t\"sspl1.0.0\":                             \"SSPL-1.0\",\n\t\"standardmlnj\":                          \"SMLNJ\",\n\t\"sugarcrm1\":                             \"SugarCRM-1.1.3\",\n\t\"sugarcrm1.1\":                           \"SugarCRM-1.1.3\",\n\t\"sugarcrm1.1.3\":                         \"SugarCRM-1.1.3\",\n\t\"sul1\":                                  \"SUL-1.0\",\n\t\"sul1.0\":                                \"SUL-1.0\",\n\t\"sul1.0.0\":                              \"SUL-1.0\",\n\t\"sunppp\":                                \"Sun-PPP\",\n\t\"sunppp2000\":                            \"Sun-PPP-2000\",\n\t\"sunppp2000.0\":                          \"Sun-PPP-2000\",\n\t\"sunppp2000.0.0\":                        \"Sun-PPP-2000\",\n\t\"sunpro\":                                \"SunPro\",\n\t\"swl\":                                   \"SWL\",\n\t\"swrule\":                                \"swrule\",\n\t\"symlinks\":                              \"Symlinks\",\n\t\"taprohl1\":                              \"TAPR-OHL-1.0\",\n\t\"taprohl1.0\":                            \"TAPR-OHL-1.0\",\n\t\"taprohl1.0.0\":                          \"TAPR-OHL-1.0\",\n\t\"tcl\":                                   \"TCL\",\n\t\"tcpwrappers\":                           \"TCP-wrappers\",\n\t\"tekhvc\":                                \"TekHVC\",\n\t\"termreadkey\":                           \"TermReadKey\",\n\t\"tgppl1\":                                \"TGPPL-1.0\",\n\t\"tgppl1.0\":                              \"TGPPL-1.0\",\n\t\"tgppl1.0.0\":                            \"TGPPL-1.0\",\n\t\"thirdeye\":                              \"ThirdEye\",\n\t\"threeparttable\":                        \"threeparttable\",\n\t\"tmate\":                                 \"TMate\",\n\t\"torque1\":                               \"TORQUE-1.1\",\n\t\"torque1.1\":                             \"TORQUE-1.1\",\n\t\"torque1.1.0\":                           \"TORQUE-1.1\",\n\t\"tosl\":                                  \"TOSL\",\n\t\"tpdl\":                                  \"TPDL\",\n\t\"tpl1\":                                  \"TPL-1.0\",\n\t\"tpl1.0\":                                \"TPL-1.0\",\n\t\"tpl1.0.0\":                              \"TPL-1.0\",\n\t\"trustedqsl\":                            \"TrustedQSL\",\n\t\"ttwl\":                                  \"TTWL\",\n\t\"ttyp0\":                                 \"TTYP0\",\n\t\"tuberlin1\":                             \"TU-Berlin-1.0\",\n\t\"tuberlin1.0\":                           \"TU-Berlin-1.0\",\n\t\"tuberlin1.0.0\":                         \"TU-Berlin-1.0\",\n\t\"tuberlin2\":                             \"TU-Berlin-2.0\",\n\t\"tuberlin2.0\":                           \"TU-Berlin-2.0\",\n\t\"tuberlin2.0.0\":                         \"TU-Berlin-2.0\",\n\t\"ubuntufont1\":                           \"Ubuntu-font-1.0\",\n\t\"ubuntufont1.0\":                         \"Ubuntu-font-1.0\",\n\t\"ubuntufont1.0.0\":                       \"Ubuntu-font-1.0\",\n\t\"ucar\":                                  \"UCAR\",\n\t\"ucl1\":                                  \"UCL-1.0\",\n\t\"ucl1.0\":                                \"UCL-1.0\",\n\t\"ucl1.0.0\":                              \"UCL-1.0\",\n\t\"ulem\":                                  \"ulem\",\n\t\"umichmerit\":                            \"UMich-Merit\",\n\t\"unicode3\":                              \"Unicode-3.0\",\n\t\"unicode3.0\":                            \"Unicode-3.0\",\n\t\"unicode3.0.0\":                          \"Unicode-3.0\",\n\t\"unicodedfs2015\":                        \"Unicode-DFS-2015\",\n\t\"unicodedfs2015.0\":                      \"Unicode-DFS-2015\",\n\t\"unicodedfs2015.0.0\":                    \"Unicode-DFS-2015\",\n\t\"unicodedfs2016\":                        \"Unicode-DFS-2016\",\n\t\"unicodedfs2016.0\":                      \"Unicode-DFS-2016\",\n\t\"unicodedfs2016.0.0\":                    \"Unicode-DFS-2016\",\n\t\"unicodetou\":                            \"Unicode-TOU\",\n\t\"unixcrypt\":                             \"UnixCrypt\",\n\t\"unlicense\":                             \"Unlicense\",\n\t\"unlicenselibtelnet\":                    \"Unlicense-libtelnet\",\n\t\"unlicenselibwhirlpool\":                 \"Unlicense-libwhirlpool\",\n\t\"unrar\":                                 \"UnRAR\",\n\t\"upl1\":                                  \"UPL-1.0\",\n\t\"upl1.0\":                                \"UPL-1.0\",\n\t\"upl1.0.0\":                              \"UPL-1.0\",\n\t\"urtrle\":                                \"URT-RLE\",\n\t\"vim\":                                   \"Vim\",\n\t\"vixiecron\":                             \"Vixie-Cron\",\n\t\"vostrom\":                               \"VOSTROM\",\n\t\"vsl1\":                                  \"VSL-1.0\",\n\t\"vsl1.0\":                                \"VSL-1.0\",\n\t\"vsl1.0.0\":                              \"VSL-1.0\",\n\t\"w3.0.0c\":                               \"W3C\",\n\t\"w3.0.0c19980720\":                       \"W3C-19980720\",\n\t\"w3.0.0c20150513\":                       \"W3C-20150513\",\n\t\"w3.0.0m\":                               \"w3m\",\n\t\"w3.0c\":                                 \"W3C\",\n\t\"w3.0c19980720\":                         \"W3C-19980720\",\n\t\"w3.0c20150513\":                         \"W3C-20150513\",\n\t\"w3.0m\":                                 \"w3m\",\n\t\"w3c\":                                   \"W3C\",\n\t\"w3c19980720\":                           \"W3C-19980720\",\n\t\"w3c20150513\":                           \"W3C-20150513\",\n\t\"w3m\":                                   \"w3m\",\n\t\"watcom1\":                               \"Watcom-1.0\",\n\t\"watcom1.0\":                             \"Watcom-1.0\",\n\t\"watcom1.0.0\":                           \"Watcom-1.0\",\n\t\"widgetworkshop\":                        \"Widget-Workshop\",\n\t\"wordnet\":                               \"WordNet\",\n\t\"wsuipa\":                                \"Wsuipa\",\n\t\"wtfnmfpl\":                              \"WTFNMFPL\",\n\t\"wtfpl\":                                 \"WTFPL\",\n\t\"wwl\":                                   \"wwl\",\n\t\"wxwindows\":                             \"wxWindows\",\n\t\"x11\":                                   \"X11\",\n\t\"x11.0\":                                 \"X11\",\n\t\"x11.0.0\":                               \"X11\",\n\t\"x11.0.0distributemodificationsvariant\": \"X11-distribute-modifications-variant\",\n\t\"x11.0.0nopermitpersons\":                \"X11-no-permit-persons\",\n\t\"x11.0.0swapped\":                        \"X11-swapped\",\n\t\"x11.0distributemodificationsvariant\":   \"X11-distribute-modifications-variant\",\n\t\"x11.0nopermitpersons\":                  \"X11-no-permit-persons\",\n\t\"x11.0swapped\":                          \"X11-swapped\",\n\t\"x11distributemodificationsvariant\":     \"X11-distribute-modifications-variant\",\n\t\"x11nopermitpersons\":                    \"X11-no-permit-persons\",\n\t\"x11swapped\":                            \"X11-swapped\",\n\t\"xdebug1\":                               \"Xdebug-1.03\",\n\t\"xdebug1.03\":                            \"Xdebug-1.03\",\n\t\"xdebug1.03.0\":                          \"Xdebug-1.03\",\n\t\"xerox\":                                 \"Xerox\",\n\t\"xfig\":                                  \"Xfig\",\n\t\"xfree861\":                              \"XFree86-1.1\",\n\t\"xfree861.1\":                            \"XFree86-1.1\",\n\t\"xfree861.1.0\":                          \"XFree86-1.1\",\n\t\"xinetd\":                                \"xinetd\",\n\t\"xkeyboardconfigzinoviev\":               \"xkeyboard-config-Zinoviev\",\n\t\"xlock\":                                 \"xlock\",\n\t\"xnet\":                                  \"Xnet\",\n\t\"xpp\":                                   \"xpp\",\n\t\"xskat\":                                 \"XSkat\",\n\t\"xzoom\":                                 \"xzoom\",\n\t\"ypl1\":                                  \"YPL-1.0\",\n\t\"ypl1.0\":                                \"YPL-1.0\",\n\t\"ypl1.0.0\":                              \"YPL-1.0\",\n\t\"ypl1.1\":                                \"YPL-1.1\",\n\t\"ypl1.1.0\":                              \"YPL-1.1\",\n\t\"zed\":                                   \"Zed\",\n\t\"zeeff\":                                 \"Zeeff\",\n\t\"zend2\":                                 \"Zend-2.0\",\n\t\"zend2.0\":                               \"Zend-2.0\",\n\t\"zend2.0.0\":                             \"Zend-2.0\",\n\t\"zimbra1\":                               \"Zimbra-1.3\",\n\t\"zimbra1.3\":                             \"Zimbra-1.3\",\n\t\"zimbra1.3.0\":                           \"Zimbra-1.3\",\n\t\"zimbra1.4\":                             \"Zimbra-1.4\",\n\t\"zimbra1.4.0\":                           \"Zimbra-1.4\",\n\t\"zlib\":                                  \"Zlib\",\n\t\"zlibacknowledgement\":                   \"zlib-acknowledgement\",\n\t\"zpl1\":                                  \"ZPL-1.1\",\n\t\"zpl1.1\":                                \"ZPL-1.1\",\n\t\"zpl1.1.0\":                              \"ZPL-1.1\",\n\t\"zpl2\":                                  \"ZPL-2.0\",\n\t\"zpl2.0\":                                \"ZPL-2.0\",\n\t\"zpl2.0.0\":                              \"ZPL-2.0\",\n\t\"zpl2.1\":                                \"ZPL-2.1\",\n\t\"zpl2.1.0\":                              \"ZPL-2.1\",\n}\n\n// urlToLicense maps license URLs from the seeAlso field to license IDs\nvar urlToLicense = map[string]string{\n\t\"android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16\": \"Cornell-Lossless-JPEG\",\n\t\"apache.org/licenses/LICENSE-1.1\": \"Apache-1.1\",\n\t\"archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html\": \"UnixCrypt\",\n\t\"artlibre.org/\": \"LAL-1.3\",\n\t\"artlibre.org/licence/lal/licence-art-libre-12/\":                                                               \"LAL-1.2\",\n\t\"assets.ubuntu.com/v1/81e5605d-ubuntu-font-licence-1.0.txt\":                                                    \"Ubuntu-font-1.0\",\n\t\"bits.netizen.com.au/licenses/NOSL/nosl.txt\":                                                                   \"NOSL\",\n\t\"blitiri.com.ar/p/bola/\":                                                                                       \"BOLA-1.1\",\n\t\"blueoakcouncil.org/license/1.0.0\":                                                                             \"BlueOak-1.0.0\",\n\t\"bzip.org/1.0.5/bzip2-manual-1.0.5.html\":                                                                       \"bzip2-1.0.6\",\n\t\"capec.mitre.org/about/termsofuse.html\":                                                                        \"CAPEC-tou\",\n\t\"cdla.dev/computational-use-of-data-agreement-v1-0/\":                                                           \"C-UDA-1.0\",\n\t\"cdla.dev/open-use-of-data-agreement-v1-0/\":                                                                    \"O-UDA-1.0\",\n\t\"cdla.dev/permissive-2-0\":                                                                                      \"CDLA-Permissive-2.0\",\n\t\"cdla.io/permissive-1-0\":                                                                                       \"CDLA-Permissive-1.0\",\n\t\"cdla.io/sharing-1-0\":                                                                                          \"CDLA-Sharing-1.0\",\n\t\"celestrak.org/publications/AIAA/2006-6753/faq.php\":                                                            \"SGP4\",\n\t\"cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd\":                                                       \"libutil-David-Nugent\",\n\t\"coil.apotheon.org/plaintext/01.0.txt\":                                                                         \"COIL-1.0\",\n\t\"core.tcl-lang.org/tk/file?name=compat/unistd.h\":                                                               \"HPND-UC\",\n\t\"creativecommons.org/licenses/by-nc-nd/2.0/legalcode\":                                                          \"CC-BY-NC-ND-2.0\",\n\t\"creativecommons.org/licenses/by-nc-nd/2.5/legalcode\":                                                          \"CC-BY-NC-ND-2.5\",\n\t\"creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode\":                                                       \"CC-BY-NC-ND-3.0-DE\",\n\t\"creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode\":                                                      \"CC-BY-NC-ND-3.0-IGO\",\n\t\"creativecommons.org/licenses/by-nc-nd/3.0/legalcode\":                                                          \"CC-BY-NC-ND-3.0\",\n\t\"creativecommons.org/licenses/by-nc-nd/4.0/legalcode\":                                                          \"CC-BY-NC-ND-4.0\",\n\t\"creativecommons.org/licenses/by-nc-sa/1.0/legalcode\":                                                          \"CC-BY-NC-SA-1.0\",\n\t\"creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode\":                                                       \"CC-BY-NC-SA-2.0-DE\",\n\t\"creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode\":                                                       \"CC-BY-NC-SA-2.0-FR\",\n\t\"creativecommons.org/licenses/by-nc-sa/2.0/legalcode\":                                                          \"CC-BY-NC-SA-2.0\",\n\t\"creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode\":                                                       \"CC-BY-NC-SA-2.0-UK\",\n\t\"creativecommons.org/licenses/by-nc-sa/2.5/legalcode\":                                                          \"CC-BY-NC-SA-2.5\",\n\t\"creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode\":                                                       \"CC-BY-NC-SA-3.0-DE\",\n\t\"creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode\":                                                      \"CC-BY-NC-SA-3.0-IGO\",\n\t\"creativecommons.org/licenses/by-nc-sa/3.0/legalcode\":                                                          \"CC-BY-NC-SA-3.0\",\n\t\"creativecommons.org/licenses/by-nc-sa/4.0/legalcode\":                                                          \"CC-BY-NC-SA-4.0\",\n\t\"creativecommons.org/licenses/by-nc/1.0/legalcode\":                                                             \"CC-BY-NC-1.0\",\n\t\"creativecommons.org/licenses/by-nc/2.0/legalcode\":                                                             \"CC-BY-NC-2.0\",\n\t\"creativecommons.org/licenses/by-nc/2.5/legalcode\":                                                             \"CC-BY-NC-2.5\",\n\t\"creativecommons.org/licenses/by-nc/3.0/de/legalcode\":                                                          \"CC-BY-NC-3.0-DE\",\n\t\"creativecommons.org/licenses/by-nc/3.0/legalcode\":                                                             \"CC-BY-NC-3.0\",\n\t\"creativecommons.org/licenses/by-nc/4.0/legalcode\":                                                             \"CC-BY-NC-4.0\",\n\t\"creativecommons.org/licenses/by-nd-nc/1.0/legalcode\":                                                          \"CC-BY-NC-ND-1.0\",\n\t\"creativecommons.org/licenses/by-nd/1.0/legalcode\":                                                             \"CC-BY-ND-1.0\",\n\t\"creativecommons.org/licenses/by-nd/2.0/legalcode\":                                                             \"CC-BY-ND-2.0\",\n\t\"creativecommons.org/licenses/by-nd/2.5/legalcode\":                                                             \"CC-BY-ND-2.5\",\n\t\"creativecommons.org/licenses/by-nd/3.0/de/legalcode\":                                                          \"CC-BY-ND-3.0-DE\",\n\t\"creativecommons.org/licenses/by-nd/3.0/legalcode\":                                                             \"CC-BY-ND-3.0\",\n\t\"creativecommons.org/licenses/by-nd/4.0/legalcode\":                                                             \"CC-BY-ND-4.0\",\n\t\"creativecommons.org/licenses/by-sa/1.0/legalcode\":                                                             \"CC-BY-SA-1.0\",\n\t\"creativecommons.org/licenses/by-sa/2.0/legalcode\":                                                             \"CC-BY-SA-2.0\",\n\t\"creativecommons.org/licenses/by-sa/2.0/uk/legalcode\":                                                          \"CC-BY-SA-2.0-UK\",\n\t\"creativecommons.org/licenses/by-sa/2.1/jp/legalcode\":                                                          \"CC-BY-SA-2.1-JP\",\n\t\"creativecommons.org/licenses/by-sa/2.5/legalcode\":                                                             \"CC-BY-SA-2.5\",\n\t\"creativecommons.org/licenses/by-sa/3.0/at/legalcode\":                                                          \"CC-BY-SA-3.0-AT\",\n\t\"creativecommons.org/licenses/by-sa/3.0/de/legalcode\":                                                          \"CC-BY-SA-3.0-DE\",\n\t\"creativecommons.org/licenses/by-sa/3.0/igo/legalcode\":                                                         \"CC-BY-SA-3.0-IGO\",\n\t\"creativecommons.org/licenses/by-sa/3.0/legalcode\":                                                             \"CC-BY-SA-3.0\",\n\t\"creativecommons.org/licenses/by-sa/4.0/legalcode\":                                                             \"CC-BY-SA-4.0\",\n\t\"creativecommons.org/licenses/by/1.0/legalcode\":                                                                \"CC-BY-1.0\",\n\t\"creativecommons.org/licenses/by/2.0/legalcode\":                                                                \"CC-BY-2.0\",\n\t\"creativecommons.org/licenses/by/2.5/au/legalcode\":                                                             \"CC-BY-2.5-AU\",\n\t\"creativecommons.org/licenses/by/2.5/legalcode\":                                                                \"CC-BY-2.5\",\n\t\"creativecommons.org/licenses/by/3.0/at/legalcode\":                                                             \"CC-BY-3.0-AT\",\n\t\"creativecommons.org/licenses/by/3.0/au/legalcode\":                                                             \"CC-BY-3.0-AU\",\n\t\"creativecommons.org/licenses/by/3.0/de/legalcode\":                                                             \"CC-BY-3.0-DE\",\n\t\"creativecommons.org/licenses/by/3.0/igo/legalcode\":                                                            \"CC-BY-3.0-IGO\",\n\t\"creativecommons.org/licenses/by/3.0/legalcode\":                                                                \"CC-BY-3.0\",\n\t\"creativecommons.org/licenses/by/3.0/nl/legalcode\":                                                             \"CC-BY-3.0-NL\",\n\t\"creativecommons.org/licenses/by/3.0/us/legalcode\":                                                             \"CC-BY-3.0-US\",\n\t\"creativecommons.org/licenses/by/4.0/legalcode\":                                                                \"CC-BY-4.0\",\n\t\"creativecommons.org/licenses/publicdomain/\":                                                                   \"CC-PDDC\",\n\t\"creativecommons.org/licenses/sa/1.0/legalcode\":                                                                \"CC-SA-1.0\",\n\t\"creativecommons.org/publicdomain/mark/1.0/\":                                                                   \"CC-PDM-1.0\",\n\t\"creativecommons.org/publicdomain/zero/1.0/legalcode\":                                                          \"CC0-1.0\",\n\t\"creativecommons.org/share-your-work/cclicenses/\":                                                              \"CC-PDM-1.0\",\n\t\"cryptographicautonomylicense.com/license-text.html\":                                                           \"CAL-1.0-Combined-Work-Exception\",\n\t\"ctan.math.illinois.edu/systems/texlive/tlnet/archive/hyphen-bulgarian.tar.xz\":                                 \"hyphen-bulgarian\",\n\t\"ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx\":                                        \"Kastrup\",\n\t\"ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty\":                                           \"swrule\",\n\t\"ctan.org/license/knuth\":                                                                                       \"Knuth-CTAN\",\n\t\"cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision=1.1.4.3&view=markup&pathrev=cvs1-11-23#l2\": \"check-cvs\",\n\t\"data.gov.tw/license\":                                                                                          \"OGDL-Taiwan-1.0\",\n\t\"data.norge.no/nlod/en/1.0\":                                                                                    \"NLOD-1.0\",\n\t\"data.norge.no/nlod/en/2.0\":                                                                                    \"NLOD-2.0\",\n\t\"dev.perl.org/licenses/artistic.html\":                                                                          \"Artistic-1.0-Perl\",\n\t\"dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2\":                                                         \"IJG\",\n\t\"directory.fsf.org/wiki/License:BSD_4Clause\":                                                                   \"BSD-4-Clause\",\n\t\"directory.fsf.org/wiki/License:BitTorrentOSL1.1\":                                                              \"BitTorrent-1.1\",\n\t\"directory.fsf.org/wiki/License:Fdk\":                                                                           \"FDK-AAC\",\n\t\"doc.qt.io/archives/3.3/license.html\":                                                                          \"QPL-1.0\",\n\t\"doc.qt.nokia.com/3.3/license.html\":                                                                            \"QPL-1.0\",\n\t\"docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html\":                                          \"AML-glslang\",\n\t\"docs.oracle.com/cd/E81115_01/html/E81116/licenses.html\":                                                       \"man2html\",\n\t\"docs.python.org/3/license.html\":                                                                               \"Python-2.0.1\",\n\t\"docs.python.org/3/license.html#execution-tracing\":                                                             \"HPND-SMC\",\n\t\"docubrain.com/sites/default/files/licenses/bitstream-vera.html\":                                               \"Bitstream-Vera\",\n\t\"download.oracle.com/otn-pub/java/licenses/bsd.txt\":                                                            \"BSD-3-Clause-No-Nuclear-License\",\n\t\"ec.europa.eu/idabc/en/document/7330.html\":                                                                     \"EUPL-1.0\",\n\t\"ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096\":                                                             \"EUPL-1.0\",\n\t\"ecos.sourceware.org/old-license.html\":                                                                         \"RHeCos-1.1\",\n\t\"en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)\":                     \"MS-LPL\",\n\t\"enterprise.dejacode.com/licenses/public/naist-2003/#license-text\":                                             \"NAIST-2003\",\n\t\"epics.anl.gov/license/open.php\":                                                                               \"EPICS\",\n\t\"essr.esa.int/license/european-space-agency-public-license-v2-4-permissive-type-3\":                             \"ESA-PL-permissive-2.4\",\n\t\"essr.esa.int/license/european-space-agency-public-license-v2-4-strong-copyleft-type-1\":                        \"ESA-PL-strong-copyleft-2.4\",\n\t\"essr.esa.int/license/european-space-agency-public-license-v2-4-weak-copyleft-type-2\":                          \"ESA-PL-weak-copyleft-2.4\",\n\t\"eu-datagrid.web.cern.ch/eu-datagrid/license.html\":                                                             \"EUDatagrid\",\n\t\"eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863\":                                            \"EUPL-1.2\",\n\t\"fedoraproject.org/wiki/Licensing/AMD_plpa_map_License\":                                                        \"AMDPLPA\",\n\t\"fedoraproject.org/wiki/Licensing/Abstyles\":                                                                    \"Abstyles\",\n\t\"fedoraproject.org/wiki/Licensing/AdobeLicense\":                                                                \"Adobe-2006\",\n\t\"fedoraproject.org/wiki/Licensing/AdobePostscriptAFM\":                                                          \"APAFML\",\n\t\"fedoraproject.org/wiki/Licensing/Afmparse\":                                                                    \"Afmparse\",\n\t\"fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense\":                                                \"ADSL\",\n\t\"fedoraproject.org/wiki/Licensing/App-s2p\":                                                                     \"App-s2p\",\n\t\"fedoraproject.org/wiki/Licensing/Apple_MIT_License\":                                                           \"AML\",\n\t\"fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0\":                                             \"APSL-1.0\",\n\t\"fedoraproject.org/wiki/Licensing/BSD#AMPASBSD\":                                                                \"AMPAS\",\n\t\"fedoraproject.org/wiki/Licensing/BSD_Protection_License\":                                                      \"BSD-Protection\",\n\t\"fedoraproject.org/wiki/Licensing/BSD_with_Attribution\":                                                        \"BSD-3-Clause-Attribution\",\n\t\"fedoraproject.org/wiki/Licensing/Bahyph\":                                                                      \"Bahyph\",\n\t\"fedoraproject.org/wiki/Licensing/Barr\":                                                                        \"Barr\",\n\t\"fedoraproject.org/wiki/Licensing/Beerware\":                                                                    \"Beerware\",\n\t\"fedoraproject.org/wiki/Licensing/Borceux\":                                                                     \"Borceux\",\n\t\"fedoraproject.org/wiki/Licensing/Charter#License_Text\":                                                        \"Bitstream-Charter\",\n\t\"fedoraproject.org/wiki/Licensing/Common_Documentation_License\":                                                \"CDL-1.0\",\n\t\"fedoraproject.org/wiki/Licensing/Crossword\":                                                                   \"Crossword\",\n\t\"fedoraproject.org/wiki/Licensing/Cube\":                                                                        \"Cube\",\n\t\"fedoraproject.org/wiki/Licensing/DSDP\":                                                                        \"DSDP\",\n\t\"fedoraproject.org/wiki/Licensing/Dotseqn\":                                                                     \"Dotseqn\",\n\t\"fedoraproject.org/wiki/Licensing/Eurosym\":                                                                     \"Eurosym\",\n\t\"fedoraproject.org/wiki/Licensing/FDK-AAC\":                                                                     \"FDK-AAC\",\n\t\"fedoraproject.org/wiki/Licensing/FSF_Unlimited_License\":                                                       \"FSFUL\",\n\t\"fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant\":                             \"FSFULLR\",\n\t\"fedoraproject.org/wiki/Licensing/Glulxe\":                                                                      \"Glulxe\",\n\t\"fedoraproject.org/wiki/Licensing/Gnuplot\":                                                                     \"gnuplot\",\n\t\"fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License\":                                             \"HaskellReport\",\n\t\"fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License\":                                        \"Spencer-94\",\n\t\"fedoraproject.org/wiki/Licensing/Inner_Net_License\":                                                           \"Inner-Net-2.0\",\n\t\"fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement\":                                       \"Intel-ACPI\",\n\t\"fedoraproject.org/wiki/Licensing/LBNLBSD\":                                                                     \"BSD-3-Clause-LBNL\",\n\t\"fedoraproject.org/wiki/Licensing/Latex2e\":                                                                     \"Latex2e\",\n\t\"fedoraproject.org/wiki/Licensing/Leptonica\":                                                                   \"Leptonica\",\n\t\"fedoraproject.org/wiki/Licensing/MIT\":                                                                         \"mpich2\",\n\t\"fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph\":                                                              \"Adobe-Glyph\",\n\t\"fedoraproject.org/wiki/Licensing/MIT#enna\":                                                                    \"MIT-enna\",\n\t\"fedoraproject.org/wiki/Licensing/MIT#feh\":                                                                     \"MIT-feh\",\n\t\"fedoraproject.org/wiki/Licensing/MITNFA\":                                                                      \"MITNFA\",\n\t\"fedoraproject.org/wiki/Licensing/MIT_With_Advertising\":                                                        \"MIT-advertising\",\n\t\"fedoraproject.org/wiki/Licensing/MakeIndex\":                                                                   \"MakeIndex\",\n\t\"fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License\":                                             \"MTLL\",\n\t\"fedoraproject.org/wiki/Licensing/Mup\":                                                                         \"Mup\",\n\t\"fedoraproject.org/wiki/Licensing/NLPL\":                                                                        \"NLPL\",\n\t\"fedoraproject.org/wiki/Licensing/Newsletr\":                                                                    \"Newsletr\",\n\t\"fedoraproject.org/wiki/Licensing/Noweb\":                                                                       \"Noweb\",\n\t\"fedoraproject.org/wiki/Licensing/OSL1.1\":                                                                      \"OSL-1.1\",\n\t\"fedoraproject.org/wiki/Licensing/Open_Market_License\":                                                         \"OML\",\n\t\"fedoraproject.org/wiki/Licensing/Open_Public_License\":                                                         \"OPL-1.0\",\n\t\"fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License\":                                                  \"Plexus\",\n\t\"fedoraproject.org/wiki/Licensing/Qhull\":                                                                       \"Qhull\",\n\t\"fedoraproject.org/wiki/Licensing/Rdisc_License\":                                                               \"Rdisc\",\n\t\"fedoraproject.org/wiki/Licensing/SNIA_Public_License\":                                                         \"SNIA\",\n\t\"fedoraproject.org/wiki/Licensing/SWL\":                                                                         \"SWL\",\n\t\"fedoraproject.org/wiki/Licensing/Saxpath_License\":                                                             \"Saxpath\",\n\t\"fedoraproject.org/wiki/Licensing/TCL\":                                                                         \"TCL\",\n\t\"fedoraproject.org/wiki/Licensing/TGPPL\":                                                                       \"TGPPL-1.0\",\n\t\"fedoraproject.org/wiki/Licensing/TORQUEv1.1\":                                                                  \"TORQUE-1.1\",\n\t\"fedoraproject.org/wiki/Licensing/TOSL\":                                                                        \"TOSL\",\n\t\"fedoraproject.org/wiki/Licensing/TTWL\":                                                                        \"TTWL\",\n\t\"fedoraproject.org/wiki/Licensing/Threeparttable\":                                                              \"threeparttable\",\n\t\"fedoraproject.org/wiki/Licensing/VOSTROM\":                                                                     \"VOSTROM\",\n\t\"fedoraproject.org/wiki/Licensing/Wsuipa\":                                                                      \"Wsuipa\",\n\t\"fedoraproject.org/wiki/Licensing/XSkat_License\":                                                               \"XSkat\",\n\t\"fedoraproject.org/wiki/Licensing/Xerox\":                                                                       \"Xerox\",\n\t\"fedoraproject.org/wiki/Licensing/Xinetd_License\":                                                              \"xinetd\",\n\t\"fedoraproject.org/wiki/Licensing/Zed\":                                                                         \"Zed\",\n\t\"fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement\":                                                     \"zlib-acknowledgement\",\n\t\"fedoraproject.org/wiki/Licensing/diffmark\":                                                                    \"diffmark\",\n\t\"fedoraproject.org/wiki/Licensing/dvipdfm\":                                                                     \"dvipdfm\",\n\t\"fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0\":                                             \"eGenix\",\n\t\"fedoraproject.org/wiki/Licensing/libtiff\":                                                                     \"libtiff\",\n\t\"fedoraproject.org/wiki/Licensing/psfrag\":                                                                      \"psfrag\",\n\t\"fedoraproject.org/wiki/Licensing/psutils\":                                                                     \"psutils\",\n\t\"fedoraproject.org/wiki/Licensing/softSurfer\":                                                                  \"softSurfer\",\n\t\"fedoraproject.org/wiki/Licensing/xpp\":                                                                         \"xpp\",\n\t\"fedoraproject.org/wiki/Licensing:BSD#Modification_Variant\":                                                    \"BSD-3-Clause-Modification\",\n\t\"fedoraproject.org/wiki/Licensing:Baekmuk?rd=Licensing/Baekmuk\":                                                \"Baekmuk\",\n\t\"fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker\":                                  \"CrystalStacker\",\n\t\"fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)\":                        \"Boehm-GC\",\n\t\"fedoraproject.org/wiki/Licensing:MIT#Modern_Variants\":                                                         \"MIT-Modern-Variant\",\n\t\"fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant\":                                                      \"OpenVision\",\n\t\"fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant\":                                                            \"Xfig\",\n\t\"fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style\":                                              \"MIT-CMU\",\n\t\"fedoraproject.org/wiki/Licensing:Mplus?rd=Licensing/mplus\":                                                    \"mplus\",\n\t\"fedoraproject.org/wiki/Licensing:ThorPublicLicense\":                                                           \"TPL-1.0\",\n\t\"firstdonoharm.dev/version/2/1/license.html\":                                                                   \"Hippocratic-2.1\",\n\t\"forge.gouv.qc.ca/licence/fr/liliq-v1-1/\":                                                                      \"LiLiQ-P-1.1\",\n\t\"forge.gouv.qc.ca/licence/liliq-p\":                                                                             \"LiLiQ-R-1.1\",\n\t\"forge.gouv.qc.ca/licence/liliq-p/\":                                                                            \"LiLiQ-P-1.1\",\n\t\"forge.gouv.qc.ca/licence/liliq-r+/\":                                                                           \"LiLiQ-Rplus-1.1\",\n\t\"foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70\":                                       \"UnixCrypt\",\n\t\"fossies.org/linux/sendmail/contrib/mailprio\":                                                                  \"mailprio\",\n\t\"fossies.org/linux/tiff/contrib/ras/ras2tif.c\":                                                                 \"xlock\",\n\t\"freeimage.sourceforge.net/freeimage-license.txt\":                                                              \"FreeImage\",\n\t\"freetype.fis.uniroma2.it/FTL.TXT\":                                                                             \"FTL\",\n\t\"fsl.software/FSL-1.1-ALv2.template.md\":                                                                        \"FSL-1.1-ALv2\",\n\t\"fsl.software/FSL-1.1-MIT.template.md\":                                                                         \"FSL-1.1-MIT\",\n\t\"ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-2020.12.07-0.tar.bz2\":                                               \"BSD-Mark-Modifications\",\n\t\"ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2\":                                                   \"Aspell-RU\",\n\t\"ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE\":                                                       \"Arphic-1999\",\n\t\"ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz\":                                                      \"Zeeff\",\n\t\"gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/\":                                              \"ClArtistic\",\n\t\"git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d\": \"IBM-pibs\",\n\t\"git.enlightenment.org/legacy/imlib2.git/tree/COPYING\":                                                               \"Imlib2\",\n\t\"git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4\":                                          \"Linux-man-pages-1-para\",\n\t\"git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8\":                                   \"Linux-man-pages-copyleft-2-para\",\n\t\"git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5\":                                      \"Linux-man-pages-copyleft-2-para\",\n\t\"git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5\":                                   \"Linux-man-pages-copyleft-var\",\n\t\"git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h\":                       \"Linux-OpenIB\",\n\t\"git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19\":    \"HPND-sell-variant\",\n\t\"git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63\":                                                  \"BSD-4.3RENO\",\n\t\"git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type=heads#L39-51\":                                   \"Furuseth\",\n\t\"git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type=heads#L19-23\":                \"PADL\",\n\t\"git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT\":                                                 \"FTL\",\n\t\"git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h=Version_2_6_13pre\":                                    \"LOOP\",\n\t\"git.savannah.gnu.org/cgit/gnulib.git/tree/modules/COPYING?id=7b08932179d0d6b017f7df01a2ddf6e096b038e3\":              \"FSFULLRSD\",\n\t\"git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n1788\":        \"BSD-4.3TAHOE\",\n\t\"git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n74\":          \"Latex2e-translated-notice\",\n\t\"git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id=0062df360c2d17d57f6af19b0e444c51feb99036\":                     \"Kazlib\",\n\t\"git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h=v1.21.3&id=40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6\":      \"FSFAP-no-warranty-disclaimer\",\n\t\"git.sr.ht/~nabijaczleweli/ossp-var\":                                                                                 \"OSSP\",\n\t\"github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15\":                                          \"BSD-4.3TAHOE\",\n\t\"github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt\":      \"ASWF-Digital-Assets-1.0\",\n\t\"github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt\":      \"ASWF-Digital-Assets-1.1\",\n\t\"github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst\":                                                        \"AdaCore-doc\",\n\t\"github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst\":                                                          \"AdaCore-doc\",\n\t\"github.com/AdaCore/xmlada/blob/master/docs/index.rst\":                                                               \"AdaCore-doc\",\n\t\"github.com/BuildCraft/BuildCraft/blob/623d323b1868712f29f4a8b0979a02e8d1835131/LICENSE\":                             \"MMPL-1.0.1\",\n\t\"github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md\":                         \"Community-Spec-1.0\",\n\t\"github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt\":                         \"TU-Berlin-2.0\",\n\t\"github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md\":                                                             \"LPD-document\",\n\t\"github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf\":                                     \"etalab-2.0\",\n\t\"github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT\":                             \"hdparm\",\n\t\"github.com/Distrotech/transfig/blob/master/transfig/transfig.c\":                                                     \"Xfig\",\n\t\"github.com/DrItanium/maya/blob/master/LICENSE.CLIPS\":                                                                \"Clips\",\n\t\"github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12\":                                                         \"metamail\",\n\t\"github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt\":             \"Hippocratic-2.1\",\n\t\"github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32\":                                                  \"HPND-Fenneberg-Livingston\",\n\t\"github.com/GNOME/gcr/blob/master/docs/COPYING\":                                                                      \"GCR-docs\",\n\t\"github.com/GNOME/libxml2/blob/master/dict.c\":                                                                        \"ISC-Veillard\",\n\t\"github.com/HDFGroup/hdf5/?tab=License-1-ov-file#readme\":                                                             \"HDF5\",\n\t\"github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt\":                               \"MIT-Khronos-old\",\n\t\"github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949\":                                                         \"AML-glslang\",\n\t\"github.com/MariaDB/server/blob/11.6/libmysqld/lib_sql.cc\":                                                           \"Boehm-GC-without-fee\",\n\t\"github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md\":                                                    \"DRL-1.0\",\n\t\"github.com/OGRECave/ogre/blob/master/OgreMain/include/OgreSingleton.h#L28C3-L35C46\":                                 \"Game-Programming-Gems\",\n\t\"github.com/Perl/perl5/blob/blead/util.c#L6136\":                                                                      \"Martin-Birgmeier\",\n\t\"github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22\":                              \"Pixar\",\n\t\"github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt\":                                                 \"Pixar\",\n\t\"github.com/RTimothyEdwards/magic/blob/master/LICENSE\":                                                               \"HPND-UC-export-US\",\n\t\"github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE\":                                                   \"libselinux-1.0\",\n\t\"github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h\":                                                  \"Brian-Gladman-3-Clause\",\n\t\"github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26\":       \"FBM\",\n\t\"github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c\":                                                        \"dtoa\",\n\t\"github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md\": \"DRL-1.1\",\n\t\"github.com/Slicer/Slicer/blob/main/License.txt\":                                                                     \"3D-Slicer-1.0\",\n\t\"github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT\":                                                                 \"UCAR\",\n\t\"github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119\":                                                 \"BSD-3-Clause-acpica\",\n\t\"github.com/adaptivecomputing/torque/blob/master/PBS_License.txt\":                                                    \"OpenPBS-2.3\",\n\t\"github.com/adversary-org/wtfnmf/raw/3f2cd8235a64350a57a51b9739715edaea63ec1a/COPYING.WTFNMFPL-utf8\":                 \"WTFNMFPL\",\n\t\"github.com/adversary-org/wtfnmf/raw/refs/tags/1.0/COPYING.WTFNMFPL\":                                                 \"WTFNMFPL\",\n\t\"github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148\":                                                   \"TTWL\",\n\t\"github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29\":                                                            \"Caldera-no-preamble\",\n\t\"github.com/audacious-media-player/audacious/blob/master/COPYING\":                                                    \"BSD-2-Clause-pkgconf-disclaimer\",\n\t\"github.com/audacious-media-player/audacious/blob/master/src/audacious/main.cc\":                                      \"BSD-2-Clause-pkgconf-disclaimer\",\n\t\"github.com/aws/mit-0\": \"MIT-0\",\n\t\"github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE\":                                                 \"MIT-0\",\n\t\"github.com/bagder/curl/blob/master/COPYING\":                                                                              \"curl\",\n\t\"github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c\":                                                 \"bcrypt-Solar-Designer\",\n\t\"github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp\":                                                         \"LOOP\",\n\t\"github.com/bleargh45/Data-UUID/blob/master/LICENSE\":                                                                      \"HP-1989\",\n\t\"github.com/chromium/octane/blob/master/crypto.js\":                                                                        \"MIT-Wu\",\n\t\"github.com/cl-adams/adams/blob/master/LICENSE.md\":                                                                        \"LOOP\",\n\t\"github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0\":                                         \"copyleft-next-0.3.0\",\n\t\"github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1\":                                         \"copyleft-next-0.3.1\",\n\t\"github.com/cyrusimap/cyrus-sasl/blob/master/COPYING\":                                                                     \"BSD-Attribution-HPND-disclaimer\",\n\t\"github.com/dcblake/SMP/blob/master/Documentation/License.txt\":                                                            \"SMPPL\",\n\t\"github.com/dfateyev/libwhirlpool/blob/master/README#L27\":                                                                 \"Unlicense-libwhirlpool\",\n\t\"github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/COPYING#L27\":                     \"DocBook-XML\",\n\t\"github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/assembly/schema/docbook51b7.rnc\": \"DocBook-Schema\",\n\t\"github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28\": \"MIT-testregex\",\n\t\"github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt\":                                                                                       \"Elastic-2.0\",\n\t\"github.com/erich666/GraphicsGems/blob/master/LICENSE.md\":                                                                                                             \"Graphics-Gems\",\n\t\"github.com/fedeinthemix/chez-srfi/blob/master/srfi/LICENSE\":                                                                                                          \"X11-swapped\",\n\t\"github.com/festvox/flite/blob/master/COPYING\":                                                                                                                        \"MIT-Festival\",\n\t\"github.com/festvox/speech_tools/blob/master/COPYING\":                                                                                                                 \"MIT-Festival\",\n\t\"github.com/file/file/blob/master/COPYING\":                                                                                                                            \"BSD-2-Clause-Darwin\",\n\t\"github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c\":                                                                                                     \"SunPro\",\n\t\"github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c\":                                                                                                   \"SunPro\",\n\t\"github.com/gabegundy/atlserver/blob/master/License.txt\":                                                                                                              \"MS-LPL\",\n\t\"github.com/greymass/swift-eosio/blob/master/LICENSE\":                                                                                                                 \"BSD-3-Clause-No-Military-License\",\n\t\"github.com/hamano/man2html/blob/master/man2html.c\":                                                                                                                   \"man2html\",\n\t\"github.com/htacg/tidy-html5/blob/next/README/LICENSE.md\":                                                                                                             \"HTMLTIDY\",\n\t\"github.com/ivmai/libatomic_ops/blob/master/LICENSE\":                                                                                                                  \"Boehm-GC\",\n\t\"github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10\":                                                                                                      \"TermReadKey\",\n\t\"github.com/jonmacs/jove/blob/4_17/LICENSE\":                                                                                                                           \"jove\",\n\t\"github.com/jpr5/ngrep/blob/master/LICENSE\":                                                                                                                           \"ngrep\",\n\t\"github.com/jrsoftware/issrc/blob/HEAD/license.txt\":                                                                                                                   \"InnoSetup\",\n\t\"github.com/jsommers/pytricia/blob/master/patricia.c#L33-L67\":                                                                                                         \"BSD-4-Clause\",\n\t\"github.com/kfish/xsel/blob/master/COPYING\":                                                                                                                           \"HPND-sell-variant\",\n\t\"github.com/kohler/t1utils/blob/master/LICENSE\":                                                                                                                       \"MIT-Click\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133\":                                                                                                        \"HPND-export2-US\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182\":                                                                                                      \"HPND-export-US-modify\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156\":                                                                                                        \"Brian-Gladman-2-Clause\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98\":                                                                                                          \"OpenVision\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690\":                                                                                                        \"BSD-2-Clause-first-lines\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728\":                                                                                                        \"CMU-Mach-nodoc\",\n\t\"github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852\":                                                                                                        \"HPND-export-US-acknowledgement\",\n\t\"github.com/krzyzanowskim/CryptoSwift/blob/main/LICENSE\":                                                                                                              \"CryptoSwift\",\n\t\"github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4\":                                                                                                             \"BSD-Source-beginning-file\",\n\t\"github.com/libcheck/check/blob/master/checkmk/checkmk.in\":                                                                                                            \"checkmk\",\n\t\"github.com/libjpeg-turbo/libjpeg-turbo/blob/main/README.ijg#L117-L161\":                                                                                               \"IJG\",\n\t\"github.com/lsof-org/lsof/blob/master/COPYING\":                                                                                                                        \"lsof\",\n\t\"github.com/maranget/hevea/blob/master/LICENSE\":                                                                                                                       \"QPL-1.0-INRIA-2004\",\n\t\"github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85\":                                                                                          \"GLWTPL\",\n\t\"github.com/mhogomchungu/zuluCrypt/blob/master/external_libraries/tcplay/generic_xts.c\":                                                                               \"generic-xts\",\n\t\"github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md\":                                                                                   \"C-UDA-1.0\",\n\t\"github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md\":                                                                                              \"O-UDA-1.0\",\n\t\"github.com/mirror/ncurses/blob/master/COPYING\":                                                                                                                       \"X11-distribute-modifications-variant\",\n\t\"github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207\":                                                                                                              \"softSurfer\",\n\t\"github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140\":                                                   \"HPND-Kevlin-Henney\",\n\t\"github.com/mtoyoda/sl/blob/master/LICENSE\":                                                                                                                           \"SL\",\n\t\"github.com/n8n-io/n8n/blob/master/LICENSE.md\":                                                                                                                        \"SUL-1.0\",\n\t\"github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md\":                                                                                   \"NCBI-PD\",\n\t\"github.com/ncbi/datasets/blob/master/LICENSE.md\":                                                                                                                     \"NCBI-PD\",\n\t\"github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE\":                                                                                         \"NCBI-PD\",\n\t\"github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE\":                                                                                        \"NCBI-PD\",\n\t\"github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE\":                                                                                     \"NCBI-PD\",\n\t\"github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343\":                                                                                   \"NAIST-2003\",\n\t\"github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24\":                                                                                                           \"Widget-Workshop\",\n\t\"github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11\":                                                                                                  \"gtkbook\",\n\t\"github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15\":                                                \"NIST-Software\",\n\t\"github.com/openjdk/jdk/blob/6162e2c5213c5dd7c1127fd9616b543efa898962/LICENSE\":                                                                                        \"GPL-2.0-or-later\",\n\t\"github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10\":                                                                       \"SSH-OpenSSH\",\n\t\"github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h\":                                                                       \"SSH-short\",\n\t\"github.com/openssh/openssh-portable/blob/master/LICENCE#L82\":                                                                                                         \"ssh-keyscan\",\n\t\"github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2\":                                                                                    \"snprintf\",\n\t\"github.com/pexip/os-perl/blob/833cf4c86cc465ccfc627ff16db67e783156a248/debian/copyright#L2720-L2845\":                                                                 \"Artistic-dist\",\n\t\"github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8\":                                                                                                                \"pkgconf\",\n\t\"github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19\":                                                                                                   \"Sun-PPP-2000\",\n\t\"github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28\":                                                                                                           \"Mackerras-3-Clause-acknowledgment\",\n\t\"github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28\":                                                                                                        \"Mackerras-3-Clause\",\n\t\"github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16\":                                                                                                            \"Sun-PPP\",\n\t\"github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83\":                                                                                                        \"HPND-INRIA-IMAG\",\n\t\"github.com/protegeproject/protege/blob/master/license.txt\":                                                                                                           \"BSD-2-Clause-Views\",\n\t\"github.com/python-excel/xlrd/blob/master/LICENSE#L33\":                                                                                                                \"BSD-Advertising-Acknowledgement\",\n\t\"github.com/python-ldap/python-ldap/blob/main/LICENCE\":                                                                                                                \"python-ldap\",\n\t\"github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE\":                                                                               \"MIT-CMU\",\n\t\"github.com/python/cpython/blob/main/LICENSE\":                                                                                                                         \"Python-2.0.1\",\n\t\"github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt\":                                                                                                      \"HPND-export-US-modify\",\n\t\"github.com/radcli/radcli/blob/master/COPYRIGHT#L34\":                                                                                                                  \"HPND-Fenneberg-Livingston\",\n\t\"github.com/radcli/radcli/blob/master/COPYRIGHT#L64\":                                                                                                                  \"UMich-Merit\",\n\t\"github.com/radvd-project/radvd/blob/master/COPYRIGHT\":                                                                                                                \"radvd\",\n\t\"github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt\":                                                                                                     \"BSD-Source-Code\",\n\t\"github.com/ruby/ruby/blob/9f6deaa6888a423720b4b127b5314f0ad26cc2e6/ext/pty/pty.c#L775-L786\":                                                                          \"Ruby-pty\",\n\t\"github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-ef5fa30838d6d0cecad9e675cc50b24628cfe2cb277c346053fafcc36c91c204\":                          \"Ruby-pty\",\n\t\"github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-fedf217c1ce44bda01f0a678d3ff8b198bed478754d699c527a698ad933979a0\":                          \"Ruby-pty\",\n\t\"github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt\":                                                                                                 \"Catharon\",\n\t\"github.com/seanmiddleditch/libtelnet/blob/develop/COPYING\":                                                                                                           \"Unlicense-libtelnet\",\n\t\"github.com/sigmavirus24/x11-ssh-askpass/blob/master/README\":                                                                                                          \"HPND-sell-variant-MIT-disclaimer\",\n\t\"github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c\":                                                                                                       \"HPND-sell-variant-MIT-disclaimer-rev\",\n\t\"github.com/signal11/hidapi/blob/master/LICENSE-orig.txt\":                                                                                                             \"HIDAPI\",\n\t\"github.com/slogan621/gtkbook\":                                                                                                                                        \"gtkbook\",\n\t\"github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT\":                                                                                   \"TU-Berlin-1.0\",\n\t\"github.com/tats/w3m/blob/master/COPYING\":                                                                                                                             \"w3m\",\n\t\"github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md\":                                                                                 \"NIST-PD\",\n\t\"github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt\":                                                                             \"NIST-PD\",\n\t\"github.com/thestk/stk/blob/6aacd357d76250bb7da2b1ddf675651828784bbc/LICENSE\":                                                                                         \"MIT-STK\",\n\t\"github.com/trusteddomainproject/OpenDMARC/blob/master/LICENSE.Sendmail\":                                                                                              \"Sendmail-Open-Source-1.1\",\n\t\"github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c\":                                                                                                             \"NTP-0\",\n\t\"github.com/uim/libgcroots/blob/master/COPYING\":                                                                                                                       \"Boehm-GC\",\n\t\"github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst\":                                                                                 \"NIST-PD-fallback\",\n\t\"github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE\":                                                                                     \"NIST-PD-fallback\",\n\t\"github.com/vixie/cron/tree/545b3f5246824a9cda5905eeb7cf019c95e66995\":                                                                                                 \"Vixie-Cron\",\n\t\"github.com/vstroebel/jpeg-encoder/blob/main/src/fdct.rs#L1-L72\":                                                                                                      \"IJG\",\n\t\"github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127\":                                                          \"Ferguson-Twofish\",\n\t\"github.com/westes/flex/blob/master/COPYING\":                                                                                                                          \"BSD-3-Clause-flex\",\n\t\"github.com/xdebug/xdebug/blob/master/LICENSE\":                                                                                                                        \"Xdebug-1.03\",\n\t\"github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java\":                              \"BSD-3-Clause-Sun\",\n\t\"github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE\":                                                                                  \"MulanPSL-1.0\",\n\t\"github.com/zdohnal/hplip/blob/master/COPYING#L939\":                                                                                                                   \"BSD-3-Clause-HP\",\n\t\"gitlab.com/agmartin/linuxdoc-tools/-/blob/master/iso-entities/COPYING?ref_type=heads\":                                                                                \"ISO-permission\",\n\t\"gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type=heads#L245\":                                                                             \"HPND-sell-regexpr\",\n\t\"gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp\":                                                                                               \"LOOP\",\n\t\"gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK\":                                                                                                             \"Minpack\",\n\t\"gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp\":                                                                                                 \"LOOP\",\n\t\"gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT\":                                                                                                  \"FTL\",\n\t\"gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32\":                                                                              \"Cornell-Lossless-JPEG\",\n\t\"gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type=heads\":                                                                                                 \"SGI-OpenGL\",\n\t\"gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type=heads#L1-52\":                                                 \"NCL\",\n\t\"gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/959538769bfad6a73bdf34275d46520ec0f9cbb5/COPYING#L176-185\":                                           \"hyphen-bulgarian\",\n\t\"gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type=heads#L178\":                                                                  \"xkeyboard-config-Zinoviev\",\n\t\"gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING\":                                                                                                       \"MIT-open-group\",\n\t\"gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING\":                                                                                                         \"MIT-open-group\",\n\t\"gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type=heads#L69\":                                                                                    \"HPND-DEC\",\n\t\"gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING\":                                                                                                      \"MIT-open-group\",\n\t\"gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/blob/68a5b6d98ae34749cca889f4373b4043d00bfe6a/src/voodoo_dga.c#L12-33\":                                        \"HPND-sell-variant-critical-systems\",\n\t\"gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type=heads\":                                                                           \"Adobe-Utopia\",\n\t\"gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING\":                                                                                                        \"Cronyx\",\n\t\"gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type=heads\":                                                                                     \"Lucida-Bitmap-Fonts\",\n\t\"gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING\":                                                                                              \"Cronyx\",\n\t\"gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING\":                                                                                                \"Cronyx\",\n\t\"gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING\":                                                                                              \"Cronyx\",\n\t\"gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/COPYING?ref_type=heads#L138-171\":                                                                                \"TekHVC\",\n\t\"gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L153-162\":                                                                               \"HPND-doc-sell\",\n\t\"gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L185-197\":                                                                               \"HPND-doc\",\n\t\"gitlab.freedesktop.org/xorg/lib/libxinerama/-/blob/cc22c2f60c3862482562955116d5455263b443dc/COPYING#L44-66\":                                                          \"X11-no-permit-persons\",\n\t\"gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L108-117\":                                                                               \"HPND-doc-sell\",\n\t\"gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L70-77\":                                                                                 \"HPND-doc\",\n\t\"gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L1781\":                                                                                      \"HPND-sell-MIT-disclaimer-xserver\",\n\t\"gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L239\":                                                                                       \"DEC-3-Clause\",\n\t\"gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type=heads#L752\":                                                                                       \"Adobe-Display-PostScript\",\n\t\"gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366\":                                                                                                        \"JPNIC\",\n\t\"gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w\":                                                                                                             \"MMIXware\",\n\t\"gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE\":                                                                                                                  \"BSD-3-Clause-No-Military-License\",\n\t\"gitweb.gentoo.org/repo/gentoo.git/tree/licenses/SGMLUG?id=7d999af4a47bf55e53e54713d98d145f935935c1\":                                                                  \"SGMLUG-PM\",\n\t\"glassfish.java.net/public/CDDL+GPL_1_1.html\":                                                                                                                         \"CDDL-1.1\",\n\t\"graphics.pixar.com/opensubdiv/docs/license.html\":                                                                                                                     \"Pixar\",\n\t\"gridscheduler.sourceforge.net/Gridengine_SISSL_license.html\":                                                                                                         \"SISSL-1.2\",\n\t\"heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html\":                                                                                                      \"CFITSIO\",\n\t\"heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html\":                                                                                                      \"CFITSIO\",\n\t\"helixcommunity.org/content/rpsl\":                                                                                                                                     \"RPSL-1.0\",\n\t\"hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm\":                                                                      \"OpenSSL-standalone\",\n\t\"java.net/projects/javaeetutorial/pages/BerkeleyLicense\":                                                                                                              \"BSD-3-Clause-No-Nuclear-License-2014\",\n\t\"javaee.github.io/glassfish/LICENSE\":                                                                                                                                  \"CDDL-1.1\",\n\t\"jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt\":                                                                                                            \"BSD-3-Clause-No-Nuclear-Warranty\",\n\t\"joinup.ec.europa.eu/page/eupl-text-11-12\":                                                                                                                            \"EUPL-1.2\",\n\t\"joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt\":                                                                            \"EUPL-1.2\",\n\t\"joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf\":                                                                            \"EUPL-1.1\",\n\t\"joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf\":                                                                                     \"EUPL-1.2\",\n\t\"joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt\":                                                                                        \"EUPL-1.2\",\n\t\"joinup.ec.europa.eu/software/page/eupl/licence-eupl\":                                                                                                                 \"EUPL-1.1\",\n\t\"joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp\":                                                                                                      \"SSH-short\",\n\t\"labs.metacarta.com/license-explanation.html#license\":                                                                                                                 \"BSD-3-Clause-Clear\",\n\t\"landley.net/toybox/license.html\":                                                                                                                                     \"0BSD\",\n\t\"legacy.imatix.com/html/sfl/sfl4.htm#license\":                                                                                                                         \"iMatix\",\n\t\"liballeg.org/license.html#allegro-4-the-giftware-license\":                                                                                                            \"Giftware\",\n\t\"libgd.github.io/manuals/2.3.0/files/license-txt.html\":                                                                                                                \"GD\",\n\t\"library.netapp.com/ecm/ecm_download_file/ECMP1196395\":                                                                                                                \"OpenSSL-standalone\",\n\t\"license.coscl.org.cn/MulanPSL/\":                                                                                                                                      \"MulanPSL-1.0\",\n\t\"license.coscl.org.cn/MulanPSL2\":                                                                                                                                      \"MulanPSL-2.0\",\n\t\"lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html\":                                                                                                           \"FSFULLRWD\",\n\t\"lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html\":                                                                       \"HPND\",\n\t\"mariadb.com/bsl11/\":                                                                                             \"BUSL-1.1\",\n\t\"math.nist.gov/tnt/download.html\":                                                                                \"NIST-PD-TNT\",\n\t\"matplotlib.org/stable/project/license.html\":                                                                     \"PSF-2.0\",\n\t\"metacpan.org/pod/Exporter::Tidy#LICENSE\":                                                                        \"any-OSI\",\n\t\"metacpan.org/pod/Net::MQTT::Simple#LICENSE\":                                                                     \"any-OSI-perl-modules\",\n\t\"metacpan.org/pod/Qmail::Deliverable::Client#LICENSE\":                                                            \"any-OSI-perl-modules\",\n\t\"metacpan.org/pod/Time::ParseDate#LICENSE\":                                                                       \"TPDL\",\n\t\"metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7\":                                            \"BSD-Systemics-W3Works\",\n\t\"metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT\":                                                    \"BSD-Systemics\",\n\t\"metacpan.org/release/JUERD/Exporter-Tidy-0.09/view/Tidy.pm#LICENSE\":                                             \"any-OSI-perl-modules\",\n\t\"metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28\":                                                  \"Spencer-94\",\n\t\"metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE\":                                                 \"HPND-MIT-disclaimer\",\n\t\"metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11\":                                            \"Soundex\",\n\t\"metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright\":                         \"BSD-4-Clause-Shortened\",\n\t\"metadata.ftp-master.debian.org/changelogs//main/f/fonts-paratype/fonts-paratype_20181108-4_copyright\":           \"ParaType-Free-Font-1.3\",\n\t\"metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright\":                                 \"xzoom\",\n\t\"mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp\":                     \"McPhee-slideshow\",\n\t\"mirrors.ctan.org/macros/latex/contrib/ulem/README\":                                                              \"ulem\",\n\t\"mirrors.ctan.org/macros/latex/contrib/version/version.sty\":                                                      \"magaz\",\n\t\"mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README\":                                                    \"fwlw\",\n\t\"mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex\":                                                \"magaz\",\n\t\"mod-buildcraft.com/MMPL-1.0.txt\":                                                                                \"MMPL-1.0.1\",\n\t\"old.koalateam.com/jackaroo/OPL_1_0.TXT\":                                                                         \"OPL-1.0\",\n\t\"old.zope.org/Resources/License/ZPL-1.1\":                                                                         \"ZPL-1.1\",\n\t\"old.zope.org/Resources/License/ZPL-2.0\":                                                                         \"ZPL-2.0\",\n\t\"old.zope.org/Resources/ZPL/\":                                                                                    \"ZPL-2.1\",\n\t\"open.canada.ca/en/open-government-licence-canada\":                                                               \"OGL-Canada-2.0\",\n\t\"opencontent.org/openpub/\":                                                                                       \"OPUBL-1.0\",\n\t\"opendatacommons.org/licenses/by/1.0/\":                                                                           \"ODC-By-1.0\",\n\t\"opendatacommons.org/licenses/odbl/1-0/\":                                                                         \"ODbL-1.0\",\n\t\"opendatacommons.org/licenses/pddl/\":                                                                             \"PDDL-1.0\",\n\t\"opendatacommons.org/licenses/pddl/1.0/\":                                                                         \"PDDL-1.0\",\n\t\"openlogisticsfoundation.org/licenses/\":                                                                          \"OLFL-1.3\",\n\t\"openmdw.ai/license/\":                                                                                            \"OpenMDW-1.0\",\n\t\"opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html\": \"UnixCrypt\",\n\t\"opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt\":                        \"NICTA-1.0\",\n\t\"opensource.linux-mirror.org/licenses/afl-1.1.txt\":                                                               \"AFL-1.1\",\n\t\"opensource.linux-mirror.org/licenses/afl-1.2.txt\":                                                               \"AFL-1.2\",\n\t\"opensource.linux-mirror.org/licenses/afl-2.1.txt\":                                                               \"AFL-2.1\",\n\t\"opensource.org/license/apache-2-0\":                                                                              \"Apache-2.0\",\n\t\"opensource.org/license/mit/\":                                                                                    \"MIT\",\n\t\"opensource.org/license/olfl-1-3/\":                                                                               \"OLFL-1.3\",\n\t\"opensource.org/license/osc-license-1-0\":                                                                         \"OSC-1.0\",\n\t\"opensource.org/licenses/0BSD\":                                                                                   \"0BSD\",\n\t\"opensource.org/licenses/AGPL-3.0\":                                                                               \"AGPL-3.0-or-later\",\n\t\"opensource.org/licenses/APL-1.0\":                                                                                \"APL-1.0\",\n\t\"opensource.org/licenses/Apache-1.1\":                                                                             \"Apache-1.1\",\n\t\"opensource.org/licenses/Apache-2.0\":                                                                             \"Apache-2.0\",\n\t\"opensource.org/licenses/Artistic-1.0\":                                                                           \"Artistic-1.0-cl8\",\n\t\"opensource.org/licenses/BSD-2-Clause\":                                                                           \"BSD-2-Clause\",\n\t\"opensource.org/licenses/BSD-3-Clause\":                                                                           \"BSD-3-Clause\",\n\t\"opensource.org/licenses/BSDplusPatent\":                                                                          \"BSD-2-Clause-Patent\",\n\t\"opensource.org/licenses/BSL-1.0\":                                                                                \"BSL-1.0\",\n\t\"opensource.org/licenses/CAL-1.0\":                                                                                \"CAL-1.0-Combined-Work-Exception\",\n\t\"opensource.org/licenses/CATOSL-1.1\":                                                                             \"CATOSL-1.1\",\n\t\"opensource.org/licenses/CNRI-Python\":                                                                            \"CNRI-Python\",\n\t\"opensource.org/licenses/CPAL-1.0\":                                                                               \"CPAL-1.0\",\n\t\"opensource.org/licenses/CPL-1.0\":                                                                                \"CPL-1.0\",\n\t\"opensource.org/licenses/CUA-OPL-1.0\":                                                                            \"CUA-OPL-1.0\",\n\t\"opensource.org/licenses/ECL-1.0\":                                                                                \"ECL-1.0\",\n\t\"opensource.org/licenses/ECL-2.0\":                                                                                \"ECL-2.0\",\n\t\"opensource.org/licenses/EFL-1.0\":                                                                                \"EFL-1.0\",\n\t\"opensource.org/licenses/EFL-2.0\":                                                                                \"EFL-2.0\",\n\t\"opensource.org/licenses/EPL-1.0\":                                                                                \"EPL-1.0\",\n\t\"opensource.org/licenses/EUDatagrid\":                                                                             \"EUDatagrid\",\n\t\"opensource.org/licenses/EUPL-1.1\":                                                                               \"EUPL-1.1\",\n\t\"opensource.org/licenses/EUPL-1.2\":                                                                               \"EUPL-1.2\",\n\t\"opensource.org/licenses/Entessa\":                                                                                \"Entessa\",\n\t\"opensource.org/licenses/Fair\":                                                                                   \"Fair\",\n\t\"opensource.org/licenses/Frameworx-1.0\":                                                                          \"Frameworx-1.0\",\n\t\"opensource.org/licenses/GPL-2.0\":                                                                                \"GPL-2.0-or-later\",\n\t\"opensource.org/licenses/GPL-3.0\":                                                                                \"GPL-3.0-or-later\",\n\t\"opensource.org/licenses/HPND\":                                                                                   \"HPND\",\n\t\"opensource.org/licenses/IPA\":                                                                                    \"IPA\",\n\t\"opensource.org/licenses/IPL-1.0\":                                                                                \"IPL-1.0\",\n\t\"opensource.org/licenses/ISC\":                                                                                    \"ISC\",\n\t\"opensource.org/licenses/Intel\":                                                                                  \"Intel\",\n\t\"opensource.org/licenses/LGPL-2.1\":                                                                               \"LGPL-2.1-or-later\",\n\t\"opensource.org/licenses/LGPL-3.0\":                                                                               \"LGPL-3.0-or-later\",\n\t\"opensource.org/licenses/LPL-1.0\":                                                                                \"LPL-1.0\",\n\t\"opensource.org/licenses/LPL-1.02\":                                                                               \"LPL-1.02\",\n\t\"opensource.org/licenses/LPPL-1.3c\":                                                                              \"LPPL-1.3c\",\n\t\"opensource.org/licenses/LiLiQ-P-1.1\":                                                                            \"LiLiQ-P-1.1\",\n\t\"opensource.org/licenses/LiLiQ-R-1.1\":                                                                            \"LiLiQ-R-1.1\",\n\t\"opensource.org/licenses/LiLiQ-Rplus-1.1\":                                                                        \"LiLiQ-Rplus-1.1\",\n\t\"opensource.org/licenses/MIT\":                                                                                    \"MIT\",\n\t\"opensource.org/licenses/MPL-1.0\":                                                                                \"MPL-1.0\",\n\t\"opensource.org/licenses/MPL-1.1\":                                                                                \"MPL-1.1\",\n\t\"opensource.org/licenses/MPL-2.0\":                                                                                \"MPL-2.0-no-copyleft-exception\",\n\t\"opensource.org/licenses/MS-PL\":                                                                                  \"MS-PL\",\n\t\"opensource.org/licenses/MS-RL\":                                                                                  \"MS-RL\",\n\t\"opensource.org/licenses/MirOS\":                                                                                  \"MirOS\",\n\t\"opensource.org/licenses/Motosoto\":                                                                               \"Motosoto\",\n\t\"opensource.org/licenses/Multics\":                                                                                \"Multics\",\n\t\"opensource.org/licenses/NASA-1.3\":                                                                               \"NASA-1.3\",\n\t\"opensource.org/licenses/NCSA\":                                                                                   \"NCSA\",\n\t\"opensource.org/licenses/NGPL\":                                                                                   \"NGPL\",\n\t\"opensource.org/licenses/NOSL3.0\":                                                                                \"NPOSL-3.0\",\n\t\"opensource.org/licenses/NTP\":                                                                                    \"NTP\",\n\t\"opensource.org/licenses/Naumen\":                                                                                 \"Naumen\",\n\t\"opensource.org/licenses/OCLC-2.0\":                                                                               \"OCLC-2.0\",\n\t\"opensource.org/licenses/OFL-1.1\":                                                                                \"OFL-1.1-no-RFN\",\n\t\"opensource.org/licenses/OGTSL\":                                                                                  \"OGTSL\",\n\t\"opensource.org/licenses/OPL-2.1\":                                                                                \"OSET-PL-2.1\",\n\t\"opensource.org/licenses/OSL-1.0\":                                                                                \"OSL-1.0\",\n\t\"opensource.org/licenses/OSL-2.1\":                                                                                \"OSL-2.1\",\n\t\"opensource.org/licenses/OSL-3.0\":                                                                                \"OSL-3.0\",\n\t\"opensource.org/licenses/PHP-3.0\":                                                                                \"PHP-3.0\",\n\t\"opensource.org/licenses/PostgreSQL\":                                                                             \"PostgreSQL\",\n\t\"opensource.org/licenses/Python-2.0\":                                                                             \"Python-2.0\",\n\t\"opensource.org/licenses/QPL-1.0\":                                                                                \"QPL-1.0\",\n\t\"opensource.org/licenses/RPL-1.1\":                                                                                \"RPL-1.1\",\n\t\"opensource.org/licenses/RPL-1.5\":                                                                                \"RPL-1.5\",\n\t\"opensource.org/licenses/RPSL-1.0\":                                                                               \"RPSL-1.0\",\n\t\"opensource.org/licenses/RSCPL\":                                                                                  \"RSCPL\",\n\t\"opensource.org/licenses/SISSL\":                                                                                  \"SISSL\",\n\t\"opensource.org/licenses/SPL-1.0\":                                                                                \"SPL-1.0\",\n\t\"opensource.org/licenses/SimPL-2.0\":                                                                              \"SimPL-2.0\",\n\t\"opensource.org/licenses/Sleepycat\":                                                                              \"Sleepycat\",\n\t\"opensource.org/licenses/UCL-1.0\":                                                                                \"UCL-1.0\",\n\t\"opensource.org/licenses/UPL\":                                                                                    \"UPL-1.0\",\n\t\"opensource.org/licenses/VSL-1.0\":                                                                                \"VSL-1.0\",\n\t\"opensource.org/licenses/W3C\":                                                                                    \"W3C\",\n\t\"opensource.org/licenses/Watcom-1.0\":                                                                             \"Watcom-1.0\",\n\t\"opensource.org/licenses/Xnet\":                                                                                   \"Xnet\",\n\t\"opensource.org/licenses/ZPL-2.0\":                                                                                \"ZPL-2.0\",\n\t\"opensource.org/licenses/Zlib\":                                                                                   \"Zlib\",\n\t\"opensource.org/licenses/afl-3.0\":                                                                                \"AFL-3.0\",\n\t\"opensource.org/licenses/artistic-license-2.0\":                                                                   \"Artistic-2.0\",\n\t\"opensource.org/licenses/attribution\":                                                                            \"AAL\",\n\t\"opensource.org/licenses/cddl1\":                                                                                  \"CDDL-1.0\",\n\t\"opensource.org/licenses/nokia\":                                                                                  \"Nokia\",\n\t\"oss.sgi.com/projects/FreeB/\":                                                                                    \"SGI-B-1.1\",\n\t\"oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html\":                                                              \"SGI-B-1.0\",\n\t\"oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf\":                                                               \"SGI-B-2.0\",\n\t\"otm.illinois.edu/uiuc_openSource\":                                                                               \"NCSA\",\n\t\"pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm\":                                                              \"Aladdin\",\n\t\"paritylicense.com/versions/6.0.0.html\":                                                                          \"Parity-6.0.0\",\n\t\"paritylicense.com/versions/7.0.0.html\":                                                                          \"Parity-7.0.0\",\n\t\"people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh\":                                                           \"BSD-2-Clause-Views\",\n\t\"people.freebsd.org/~phk/\":                                                                                       \"Beerware\",\n\t\"people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/\":                                                                      \"TTYP0\",\n\t\"pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html\":                                            \"MIT-Modern-Variant\",\n\t\"plan9.bell-labs.com/plan9/license.html\":                                                                         \"LPL-1.02\",\n\t\"polyformproject.org/licenses/noncommercial/1.0.0\":                                                               \"PolyForm-Noncommercial-1.0.0\",\n\t\"polyformproject.org/licenses/small-business/1.0.0\":                                                              \"PolyForm-Small-Business-1.0.0\",\n\t\"primates.ximian.com/~flucifredi/man/man-1.6g.tar.gz\":                                                            \"man2html\",\n\t\"projects.eclipse.org/license/epl-2.0\":                                                                           \"EPL-2.0\",\n\t\"ptolemy.berkeley.edu/copyright.htm\":                                                                             \"MIT-Modern-Variant\",\n\t\"public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/LICENSES/unRAR.txt\":                                              \"UnRAR\",\n\t\"raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE\":                           \"etalab-2.0\",\n\t\"raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c\":                        \"ISC-Veillard\",\n\t\"raw.githubusercontent.com/NTIA/itm/refs/heads/master/LICENSE.md\":                                                \"NTIA-PD\",\n\t\"raw.githubusercontent.com/NTIA/scos-sensor/refs/heads/master/LICENSE.md\":                                        \"NTIA-PD\",\n\t\"raw.githubusercontent.com/OpenMDW/OpenMDW/refs/heads/main/1.0/LICENSE.openmdw\":                                  \"OpenMDW-1.0\",\n\t\"raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt\":                          \"Bitstream-Charter\",\n\t\"rc.quest.com/topics/openssh/license.php#tcpwrappers\":                                                            \"TCP-wrappers\",\n\t\"research.cs.wisc.edu/condor/license.html#condor\":                                                                \"Condor-1.1\",\n\t\"research.scea.com/scea_shared_source_license.html\":                                                              \"SCEA\",\n\t\"romanrm.net/mit-zero\":                                                                                           \"MIT-0\",\n\t\"sam.zoy.org/wtfpl/COPYING\":                                                                                      \"WTFPL\",\n\t\"scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web\":                                                         \"OFL-1.0-no-RFN\",\n\t\"scripts.sil.org/cms/scripts/page.php?item_id=OFL_web\":                                                           \"OFL-1.1-no-RFN\",\n\t\"slicer.org/LICENSE\":                                                                                             \"3D-Slicer-1.0\",\n\t\"solderpad.org/licenses/SHL-0.5/\":                                                                                \"SHL-0.5\",\n\t\"solderpad.org/licenses/SHL-0.51/\":                                                                               \"SHL-0.51\",\n\t\"source.icu-project.org/repos/icu/icu/trunk/license.html\":                                                        \"ICU\",\n\t\"sourceforge.net/p/buddy/gitcode/ci/master/tree/README\":                                                          \"Buddy\",\n\t\"sourceforge.net/p/ctrio/git/ci/master/tree/README\":                                                              \"ISC-Veillard\",\n\t\"sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am\":                                                      \"Xfig\",\n\t\"sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c\":                                \"URT-RLE\",\n\t\"sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c\":                                \"URT-RLE\",\n\t\"sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189\":                   \"MPEG-SSG\",\n\t\"sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2\":                                     \"pnmstitch\",\n\t\"sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8\":                                               \"HPND-Pbmplus\",\n\t\"sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp\":                                                  \"LOOP\",\n\t\"sourceforge.net/p/trustedqsl/tqsl/ci/master/tree/LICENSE.txt\":                                                   \"TrustedQSL\",\n\t\"sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README\":                                                \"OFFIS\",\n\t\"sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/\":                                                       \"IJG-short\",\n\t\"sourceforge.net/projects/sevenzip/files/LZMA%20SDK/\":                                                            \"LZMA-SDK-9.22\",\n\t\"sources.debian.org/copyright/license/debianutils/4.11.2/\":                                                       \"SMAIL-GPL\",\n\t\"sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl=19#L19\":                             \"mpi-permissive\",\n\t\"sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s\":           \"BitTorrent-1.0\",\n\t\"sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html\":                                                             \"bzip2-1.0.6\",\n\t\"sourceware.org/cgit/binutils-gdb/tree/include/coff/sym.h#n11\":                                                   \"MIPS\",\n\t\"sourceware.org/cgit/binutils-gdb/tree/include/coff/symconst.h#n11\":                                              \"ThirdEye\",\n\t\"sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c\":                                                             \"bzip2-1.0.6\",\n\t\"sourceware.org/git/?p=binutils-gdb.git;a=blob;f=libiberty/strcasecmp.c;h=131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb=HEAD\":                  \"BSD-4.3RENO\",\n\t\"sourceware.org/git/?p=binutils-gdb.git;a=blob;f=readline/readline/support/wcwidth.c;h=0f5ec995796f4813abbcf4972aec0378ab74722a;hb=HEAD#l55\": \"HPND-Markus-Kuhn\",\n\t\"sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6\":                                                                            \"bzip2-1.0.6\",\n\t\"sourceware.org/git/?p=glibc.git;a=blob;f=LICENSES;h=530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb=HEAD#l207\":                                  \"Inner-Net-2.0\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/hppa/memchr.S;h=1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb=HEAD#l2\":   \"HP-1986\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/i960/memcpy.S;hb=HEAD\":                                                 \"HPND-Intel\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/misc/fini.c;hb=HEAD\":                                                           \"HPND-merchantability-variant\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdlib/mprec.h;hb=HEAD\":                                                        \"dtoa\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/string/strsignal.c;hb=HEAD#l35\":                                                \"OAR\",\n\t\"sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/sys/a29khif/_close.S;h=04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb=HEAD\":       \"AMD-newlib\",\n\t\"sqlite.org/src/artifact/df5091916dbb40e6\":                                                                                                   \"blessing\",\n\t\"svnkit.com/license.html\": \"TMate\",\n\t\"svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823\":                                                      \"BSD-1-Clause\",\n\t\"tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst\":                                                      \"TGPPL-1.0\",\n\t\"ti.arc.nasa.gov/opensource/nosa/\":                                                                                    \"NASA-1.3\",\n\t\"trac.enlightenment.org/e/browser/trunk/imlib2/COPYING\":                                                               \"Imlib2\",\n\t\"ubuntu.com/legal/font-licence\":                                                                                       \"Ubuntu-font-1.0\",\n\t\"unlicense.org/\":                                                                                                      \"Unlicense\",\n\t\"vimdoc.sourceforge.net/htmldoc/uganda.html\":                                                                          \"Vim\",\n\t\"wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php\":                              \"AFL-1.1\",\n\t\"wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php\":                              \"AFL-1.2\",\n\t\"wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml\":                                   \"RSCPL\",\n\t\"wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt\":                               \"AFL-2.0\",\n\t\"web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html\":                                              \"OSL-2.0\",\n\t\"web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm\":                                                \"OSL-2.1\",\n\t\"web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html\":                 \"Interbase-1.0\",\n\t\"web.archive.org/web/20080207013128/http://www.gnome.org/fonts/\":                                                      \"Bitstream-Vera\",\n\t\"web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html\":                     \"Zimbra-1.3\",\n\t\"web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor\":                           \"Condor-1.1\",\n\t\"web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm\":                                                \"OSL-3.0\",\n\t\"web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt\":                                             \"Zend-2.0\",\n\t\"web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html\":                                            \"Unicode-TOU\",\n\t\"web.archive.org/web/20150926120323/http://fairlicense.org/\":                                                          \"Fair\",\n\t\"web.archive.org/web/20151224134844/http://unicode.org/copyright.html\":                                                \"Unicode-DFS-2015\",\n\t\"web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf\":                   \"Sendmail\",\n\t\"web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README\": \"Jam\",\n\t\"web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License\":                                    \"Unicode-DFS-2016\",\n\t\"web.archive.org/web/20161209023955/http://www.paratype.ru/public/pt_openlicense_eng.asp\":                             \"ParaType-Free-Font-1.3\",\n\t\"web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf\":              \"Sendmail-8.23\",\n\t\"web.mit.edu/freebsd/head/lib/libutil/login_ok.3\":                                                                     \"libutil-David-Nugent\",\n\t\"web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html\":                                                                \"OpenVision\",\n\t\"web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1\":        \"SSH-short\",\n\t\"web.mit.edu/network/isakmp/nrllicense.html\":                                                                          \"NRL\",\n\t\"wiki.p2pfoundation.net/Peer_Production_License\":                                                                      \"PPL\",\n\t\"wordnet.princeton.edu/license-and-commercial-use\":                                                                    \"WordNet\",\n\t\"www-igm.univ-mlv.fr/~unitex/lgpllr.html\":                                                                             \"LGPLLR\",\n\t\"www.7-zip.org/sdk.html\":                                        \"LZMA-SDK-9.22\",\n\t\"www.affero.org/oagpl.html\":                                     \"AGPL-1.0-or-later\",\n\t\"www.antlr2.org/license.html\":                                   \"ANTLR-PD-fallback\",\n\t\"www.apache.org/licenses/LICENSE-1.0\":                           \"Apache-1.0\",\n\t\"www.apache.org/licenses/LICENSE-2.0\":                           \"Apache-2.0\",\n\t\"www.boost.org/LICENSE_1_0.txt\":                                 \"BSL-1.0\",\n\t\"www.boost.org/doc/libs/1_35_0/doc/html/jam.html\":               \"Jam\",\n\t\"www.cecill.info/licences/Licence_CeCILL-B_V1-en.html\":          \"CECILL-B\",\n\t\"www.cecill.info/licences/Licence_CeCILL-C_V1-en.html\":          \"CECILL-C\",\n\t\"www.cecill.info/licences/Licence_CeCILL_V1-fr.html\":            \"CECILL-1.0\",\n\t\"www.cecill.info/licences/Licence_CeCILL_V1.1-US.html\":          \"CECILL-1.1\",\n\t\"www.cecill.info/licences/Licence_CeCILL_V2-en.html\":            \"CECILL-2.0\",\n\t\"www.cecill.info/licences/Licence_CeCILL_V2.1-en.html\":          \"CECILL-2.1\",\n\t\"www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c\":                         \"HPND-Markus-Kuhn\",\n\t\"www.codeproject.com/info/cpol10.aspx\":                          \"CPOL-1.02\",\n\t\"www.cs.auckland.ac.nz/~pgut001/dumpasn1.c\":                     \"Gutmann\",\n\t\"www.cs.cmu.edu/~410/licenses.html\":                             \"CMU-Mach\",\n\t\"www.cs.fsu.edu/~engelen/license.html\":                          \"gSOAP-1.3b\",\n\t\"www.cs.wustl.edu/~schmidt/ACE-copying.html\":                    \"DOC\",\n\t\"www.ctan.org/license/opl\":                                      \"OPUBL-1.0\",\n\t\"www.cve.org/Legal/TermsOfUse\":                                  \"cve-tou\",\n\t\"www.db.net/downloads/wwl+db-1.3.tgz\":                           \"wwl\",\n\t\"www.debian.org/opl\":                                            \"OPUBL-1.0\",\n\t\"www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt\": \"D-FSL-1.0\",\n\t\"www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt\": \"D-FSL-1.0\",\n\t\"www.dipp.nrw.de/d-fsl/lizenzen/\":                               \"D-FSL-1.0\",\n\t\"www.docbook.org/xml/5.0/docbook-5.0.zip\":                       \"DocBook-Stylesheet\",\n\t\"www.docbook.org/xml/simple/1.1/docbook-simple-1.1.zip\":         \"DocBook-DTD\",\n\t\"www.dre.vanderbilt.edu/~schmidt/ACE-copying.html\":              \"DOC\",\n\t\"www.ece.uvic.ca/~mdadams/jasper/LICENSE\":                       \"JasPer-2.0\",\n\t\"www.eclipse.org/legal/epl-2.0\":                                 \"EPL-2.0\",\n\t\"www.eclipse.org/legal/epl-v10.html\":                            \"EPL-1.0\",\n\t\"www.eclipse.org/legal/epl-v20.html\":                            \"EPL-2.0\",\n\t\"www.eclipse.org/org/documents/edl-v10.php\":                     \"BSD-3-Clause\",\n\t\"www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf\":   \"eGenix\",\n\t\"www.eiffel-nice.org/license/eiffel-forum-license-2.html\":       \"EFL-2.0\",\n\t\"www.eiffel-nice.org/license/forum.txt\":                         \"EFL-1.0\",\n\t\"www.elastic.co/licensing/elastic-license\":                      \"Elastic-2.0\",\n\t\"www.erlang.org/EPLICENSE\":                                      \"ErlPL-1.1\",\n\t\"www.faqs.org/rfcs/rfc1321.html\":                                \"RSA-MD\",\n\t\"www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/\": \"LiLiQ-Rplus-1.1\",\n\t\"www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/\":       \"LiLiQ-R-1.1\",\n\t\"www.freebsd.org/copyright/freebsd-doc-license/\":                                      \"FreeBSD-DOC\",\n\t\"www.freebsd.org/copyright/freebsd-license.html\":                                      \"BSD-2-Clause-Views\",\n\t\"www.freebsd.org/copyright/license.html\":                                              \"BSD-4-Clause-UC\",\n\t\"www.geuz.org/gl2ps/COPYING.GL2PS\":                                                    \"GL2PS\",\n\t\"www.gnu.org/licenses/agpl.txt\":                                                       \"AGPL-3.0-or-later\",\n\t\"www.gnu.org/licenses/fdl-1.3.txt\":                                                    \"GFDL-1.3-or-later\",\n\t\"www.gnu.org/licenses/gpl-3.0-standalone.html\":                                        \"GPL-3.0-or-later\",\n\t\"www.gnu.org/licenses/lgpl+gpl-3.0.txt\":                                               \"LGPL-3.0-or-later\",\n\t\"www.gnu.org/licenses/lgpl-3.0-standalone.html\":                                       \"LGPL-3.0-or-later\",\n\t\"www.gnu.org/licenses/license-list.html#ACDL\":                                         \"CDL-1.0\",\n\t\"www.gnu.org/licenses/old-licenses/fdl-1.1.txt\":                                       \"GFDL-1.1-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/fdl-1.2.txt\":                                       \"GFDL-1.2-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html\":                           \"GPL-1.0-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\":                           \"GPL-2.0-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/gpl-2.0.txt\":                                       \"GPL-2.0-only\",\n\t\"www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html\":                          \"LGPL-2.0-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html\":                          \"LGPL-2.1-or-later\",\n\t\"www.gnu.org/licenses/old-licenses/lgpl-2.1.html\":                                     \"LGPL-2.1-or-later\",\n\t\"www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html\":            \"FSFAP\",\n\t\"www.govdata.de/dl-de/by-2-0\":                                                         \"DL-DE-BY-2.0\",\n\t\"www.govdata.de/dl-de/zero-2-0\":                                                       \"DL-DE-ZERO-2.0\",\n\t\"www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl\":                                   \"D-FSL-1.0\",\n\t\"www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file\": \"D-FSL-1.0\",\n\t\"www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file\": \"D-FSL-1.0\",\n\t\"www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz\":    \"D-FSL-1.0\",\n\t\"www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license\":      \"D-FSL-1.0\",\n\t\"www.iausofa.org/tandc.html\":                                                          \"SOFA\",\n\t\"www.iec.ch/CCv1\":                                                                     \"IEC-Code-Components-EULA\",\n\t\"www.iec.ch/copyright\":                                                                \"IEC-Code-Components-EULA\",\n\t\"www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf\":                                        \"IEC-Code-Components-EULA\",\n\t\"www.ietf.org/rfc/rfc1952.txt\":                                                        \"LPD-document\",\n\t\"www.imagemagick.org/script/license.php\":                                              \"ImageMagick\",\n\t\"www.inet.no/dante/LICENSE\":                                                           \"BSD-Inferno-Nettverk\",\n\t\"www.info-zip.org/license.html\":                                                       \"Info-ZIP\",\n\t\"www.isc.org/downloads/software-support-policy/isc-license/\":                          \"ISC\",\n\t\"www.isc.org/licenses/\":                                                               \"ISC\",\n\t\"www.itu.int/ITU-T/formal-language/itu-t/t/t173/1997/ISOMHEG-sir.html\":                \"ISO-permission\",\n\t\"www.jpl.nasa.gov/jpl-image-use-policy\":                                               \"JPL-image\",\n\t\"www.json.org/license.html\":                                                           \"JSON\",\n\t\"www.jython.org/license.html\":                                                         \"CNRI-Jython\",\n\t\"www.kermitproject.org/ck90.html#source\":                                              \"HPND-export-US\",\n\t\"www.kernel.org/doc/man-pages/licenses.html\":                                          \"Linux-man-pages-copyleft\",\n\t\"www.latex-project.org/lppl/lppl-1-0.txt\":                                             \"LPPL-1.0\",\n\t\"www.latex-project.org/lppl/lppl-1-1.txt\":                                             \"LPPL-1.1\",\n\t\"www.latex-project.org/lppl/lppl-1-2.txt\":                                             \"LPPL-1.2\",\n\t\"www.latex-project.org/lppl/lppl-1-3a.txt\":                                            \"LPPL-1.3a\",\n\t\"www.latex-project.org/lppl/lppl-1-3c.txt\":                                            \"LPPL-1.3c\",\n\t\"www.lemis.com/grog/UNIX/ancient-source-all.pdf\":                                      \"Caldera\",\n\t\"www.libpng.org/pub/png/src/libpng-LICENSE.txt\":                                       \"libpng-2.0\",\n\t\"www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html\":                  \"Symlinks\",\n\t\"www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt\":                           \"OpenPBS-2.3\",\n\t\"www.microsoft.com/opensource/licenses.mspx\":                                          \"MS-RL\",\n\t\"www.mongodb.com/licensing/server-side-public-license\":                                \"SSPL-1.0\",\n\t\"www.mozilla.org/MPL/2.0/\":                                                            \"MPL-2.0-no-copyleft-exception\",\n\t\"www.mozilla.org/MPL/MPL-1.0.html\":                                                    \"MPL-1.0\",\n\t\"www.mozilla.org/MPL/MPL-1.1.html\":                                                    \"MPL-1.1\",\n\t\"www.mozilla.org/MPL/NPL/1.0/\":                                                        \"NPL-1.0\",\n\t\"www.mozilla.org/MPL/NPL/1.1/\":                                                        \"NPL-1.1\",\n\t\"www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h\":                                       \"Cornell-Lossless-JPEG\",\n\t\"www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/\":        \"NCGL-UK-2.0\",\n\t\"www.nationalarchives.gov.uk/doc/open-government-licence/version/1/\":                  \"OGL-UK-1.0\",\n\t\"www.nationalarchives.gov.uk/doc/open-government-licence/version/2/\":                  \"OGL-UK-2.0\",\n\t\"www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\":                  \"OGL-UK-3.0\",\n\t\"www.ncftp.com/ncftp/doc/LICENSE.txt\":                                                 \"ClArtistic\",\n\t\"www.netbsd.org/about/redistribution.html#default\":                                    \"BSD-2-Clause\",\n\t\"www.netlib.org/lapack/LICENSE.txt\":                                                   \"BSD-3-Clause-Open-MPI\",\n\t\"www.netlib.org/minpack/disclaimer\":                                                   \"Minpack\",\n\t\"www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf\":                     \"PPL\",\n\t\"www.oclc.org/research/activities/software/license/v2final.htm\":                       \"OCLC-2.0\",\n\t\"www.ogc.org/ogc/software/1.0\":                                                        \"OGC-1.0\",\n\t\"www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2\":                     \"CERN-OHL-W-2.0\",\n\t\"www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1\":                                   \"CERN-OHL-1.1\",\n\t\"www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2\":                                   \"CERN-OHL-1.2\",\n\t\"www.open-mpi.org/community/license.php\":                                              \"BSD-3-Clause-Open-MPI\",\n\t\"www.opencascade.com/content/occt-public-license\":                                     \"OCCT-PL\",\n\t\"www.opendatacommons.org/licenses/odbl/1.0/\":                                          \"ODbL-1.0\",\n\t\"www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt\":                          \"OGTSL\",\n\t\"www.openhub.net/licenses/mslpl\":                                                      \"MS-LPL\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205\": \"OLDAP-2.6\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894\": \"NBPL-1.0\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7\": \"OLDAP-1.2\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3\": \"OLDAP-2.2\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2\": \"OLDAP-2.7\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e\": \"OLDAP-2.2.1\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf\": \"OLDAP-2.5\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f\": \"OLDAP-1.1\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715\": \"OLDAP-2.1\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e\": \"OLDAP-2.0.1\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941\": \"OLDAP-1.4\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea\": \"OLDAP-2.0\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386\": \"OLDAP-2.4\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3\": \"OLDAP-2.3\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188\": \"OLDAP-2.2.2\",\n\t\"www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1\": \"OLDAP-1.3\",\n\t\"www.openldap.org/software/release/license.html\":                                                                \"OLDAP-2.8\",\n\t\"www.openoffice.org/licenses/sissl_license.html\":                                                                \"SISSL\",\n\t\"www.opensource.apple.com/cdl/\":                                                                      \"CDL-1.0\",\n\t\"www.opensource.apple.com/license/apsl/\":                                                             \"APSL-2.0\",\n\t\"www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE\":                      \"APSL-1.1\",\n\t\"www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c\":                                  \"Spencer-99\",\n\t\"www.opensource.org/licenses/EPL-2.0\":                                                                \"EPL-2.0\",\n\t\"www.openssl.org/source/license.html\":                                                                \"OpenSSL\",\n\t\"www.osetfoundation.org/public-license\":                                                              \"OSET-PL-2.1\",\n\t\"www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/\":                   \"OPL-UK-3.0\",\n\t\"www.perlfoundation.org/artistic-license-20.html\":                                                    \"Artistic-2.0\",\n\t\"www.perlfoundation.org/artistic_license_2_0\":                                                        \"Artistic-2.0\",\n\t\"www.php.net/license/3_0.txt\":                                                                        \"PHP-3.0\",\n\t\"www.php.net/license/3_01.txt\":                                                                       \"PHP-3.01\",\n\t\"www.postgresql.org/about/licence\":                                                                   \"PostgreSQL\",\n\t\"www.proofpoint.com/sites/default/files/sendmail-license.pdf\":                                        \"Sendmail-8.23\",\n\t\"www.python.org/download/releases/1.6.1/download_win/\":                                               \"CNRI-Python-GPL-Compatible\",\n\t\"www.python.org/download/releases/2.0.1/license/\":                                                    \"Python-2.0.1\",\n\t\"www.rosenlaw.com/AFL3.0.htm\":                                                                        \"AFL-3.0\",\n\t\"www.ruby-lang.org/en/about/license.txt\":                                                             \"Ruby\",\n\t\"www.samurajdata.se/opensource/mirror/licenses/apsl.php\":                                             \"APSL-1.2\",\n\t\"www.saxproject.org/copying.html\":                                                                    \"SAX-PD-2.0\",\n\t\"www.sendmail.com/pdfs/open_source/sendmail_license.pdf\":                                             \"Sendmail\",\n\t\"www.smlnj.org/license.html\":                                                                         \"SMLNJ\",\n\t\"www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9\":                                                \"blessing\",\n\t\"www.sugarcrm.com/crm/SPL\":                                                                           \"SugarCRM-1.1.3\",\n\t\"www.tapr.org/OHL\":                                                                                   \"TAPR-OHL-1.0\",\n\t\"www.tcl.tk/software/tcltk/license.html\":                                                             \"TCL\",\n\t\"www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf\": \"SSLeay-standalone\",\n\t\"www.unicode.org/copyright.html\":                                                                     \"Unicode-TOU\",\n\t\"www.unicode.org/license.txt\":                                                                        \"Unicode-DFS-2016\",\n\t\"www.unidata.ucar.edu/software/netcdf/copyright.html\":                                                \"NetCDF\",\n\t\"www.users.on.net/~triforce/glidexp/COPYING.txt\":                                                     \"Glide\",\n\t\"www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html\":                                  \"W3C\",\n\t\"www.w3.org/Consortium/Legal/2015/copyright-software-and-document\":                                   \"W3C-20150513\",\n\t\"www.w3.org/Consortium/Legal/copyright-software-19980720.html\":                                       \"W3C-19980720\",\n\t\"www.w3.org/copyright/software-license-2015/\":                                                        \"W3C-20150513\",\n\t\"www.w3.org/copyright/software-license-2023/\":                                                        \"W3C-20150513\",\n\t\"www.wtfpl.net/about/\":                                                                               \"WTFPL\",\n\t\"www.x.org/archive/current/doc/xorg-docs/License.html#Theodore_Tso\":                                  \"BSD-3-Clause-Tso\",\n\t\"www.xfree86.org/3.3.6/COPYRIGHT2.html#3\":                                                            \"X11\",\n\t\"www.xfree86.org/current/LICENSE4.html\":                                                              \"XFree86-1.1\",\n\t\"www.zimbra.com/legal/zimbra-public-license-1-4\":                                                     \"Zimbra-1.4\",\n\t\"www.zimbra.com/license/yahoo_public_license_1.0.html\":                                               \"YPL-1.0\",\n\t\"www.zimbra.com/license/yahoo_public_license_1.1.html\":                                               \"YPL-1.1\",\n\t\"www.zlib.net/zlib_license.html\":                                                                     \"Zlib\",\n}\n"
  },
  {
    "path": "internal/spdxlicense/license_list_test.go",
    "content": "package spdxlicense\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestLicenceListIDs(t *testing.T) {\n\t// do a sanity check on the generated data\n\tassert.Equal(t, \"0BSD\", licenseIDs[\"0bsd\"])\n\tassert.Equal(t, \"ZPL-2.1\", licenseIDs[\"zpl2.1\"])\n\tassert.Equal(t, \"GPL-2.0-only\", licenseIDs[\"gpl2\"])\n\tassert.Equal(t, \"GPL-2.0-or-later\", licenseIDs[\"gpl2+\"])\n\tassert.Equal(t, \"GFDL-1.2-or-later\", licenseIDs[\"gfdl1.2+\"])\n\tassert.NotEmpty(t, Version)\n}\n"
  },
  {
    "path": "internal/spdxlicense/license_test.go",
    "content": "package spdxlicense\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestSPDXIDRecognition(t *testing.T) {\n\tvar tests = []struct {\n\t\tshortName string\n\t\tid        string\n\t\tfound     bool\n\t}{\n\t\t{\n\t\t\t\"GPL-1-only\",\n\t\t\t\"GPL-1.0-only\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"gpl1\",\n\t\t\t\"GPL-1.0-only\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"gpl-1\",\n\t\t\t\"GPL-1.0-only\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"GPL-2\",\n\t\t\t\"GPL-2.0-only\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"GPL-2+\",\n\t\t\t\"GPL-2.0-or-later\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"GPL-3.0.0-or-later\",\n\t\t\t\"GPL-3.0-or-later\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"GPL-3-with-autoconf-exception\",\n\t\t\t\"GPL-3.0-with-autoconf-exception\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"CC-by-nc-3-de\",\n\t\t\t\"CC-BY-NC-3.0-DE\",\n\t\t\ttrue,\n\t\t},\n\t\t// the below few cases are NOT expected, however, seem unavoidable given the current approach\n\t\t{\n\t\t\t\"spencer-86.0.0\",\n\t\t\t\"Spencer-86\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"unicode-dfs-2015.0.0\",\n\t\t\t\"Unicode-DFS-2015\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"Unknown\",\n\t\t\t\"\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"   \",\n\t\t\t\"\",\n\t\t\tfalse,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.shortName, func(t *testing.T) {\n\t\t\tvalue, exists := ID(test.shortName)\n\t\t\tassert.Equal(t, test.found, exists)\n\t\t\tassert.Equal(t, test.id, value)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/spdxlicense/license_url_test.go",
    "content": "package spdxlicense\n\nimport (\n\t\"testing\"\n)\n\nfunc TestLicenseByURL(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\turl       string\n\t\twantID    string\n\t\twantFound bool\n\t}{\n\t\t{\n\t\t\tname:      \"MIT license URL (https)\",\n\t\t\turl:       \"https://opensource.org/license/mit/\",\n\t\t\twantID:    \"MIT\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"MIT license URL (http)\",\n\t\t\turl:       \"http://opensource.org/licenses/MIT\",\n\t\t\twantID:    \"MIT\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"Apache 2.0 license URL\",\n\t\t\turl:       \"https://www.apache.org/licenses/LICENSE-2.0\",\n\t\t\twantID:    \"Apache-2.0\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"GPL 3.0 or later URL\",\n\t\t\turl:       \"https://www.gnu.org/licenses/gpl-3.0-standalone.html\",\n\t\t\twantID:    \"GPL-3.0-or-later\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"BSD 3-Clause URL\",\n\t\t\turl:       \"https://opensource.org/licenses/BSD-3-Clause\",\n\t\t\twantID:    \"BSD-3-Clause\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"URL with trailing whitespace\",\n\t\t\turl:       \"  http://opensource.org/licenses/MIT  \",\n\t\t\twantID:    \"MIT\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"Unknown URL\",\n\t\t\turl:       \"https://example.com/unknown-license\",\n\t\t\twantID:    \"\",\n\t\t\twantFound: false,\n\t\t},\n\t\t{\n\t\t\tname:      \"Empty URL\",\n\t\t\turl:       \"\",\n\t\t\twantID:    \"\",\n\t\t\twantFound: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tinfo, found := LicenseByURL(tt.url)\n\t\t\tif found != tt.wantFound {\n\t\t\t\tt.Errorf(\"LicenseByURL() found = %v, want %v\", found, tt.wantFound)\n\t\t\t}\n\t\t\tif found {\n\t\t\t\tif info.ID != tt.wantID {\n\t\t\t\t\tt.Errorf(\"LicenseByURL() ID = %v, want %v\", info.ID, tt.wantID)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestLicenseByURL_AlternateScheme(t *testing.T) {\n\t// Test that URLs work with alternate schemes (http ↔ https) even if only one is in the SPDX list\n\ttests := []struct {\n\t\tname      string\n\t\turl       string\n\t\twantID    string\n\t\twantFound bool\n\t}{\n\t\t{\n\t\t\tname:      \"Apache URL with http when https is in list\",\n\t\t\turl:       \"http://www.apache.org/licenses/LICENSE-2.0\",\n\t\t\twantID:    \"Apache-2.0\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"BSD-3-Clause with http when https is in list\",\n\t\t\turl:       \"http://opensource.org/licenses/BSD-3-Clause\",\n\t\t\twantID:    \"BSD-3-Clause\",\n\t\t\twantFound: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"Unknown URL with http still not found\",\n\t\t\turl:       \"http://example.com/not-a-real-license\",\n\t\t\twantID:    \"\",\n\t\t\twantFound: false,\n\t\t},\n\t\t{\n\t\t\tname:      \"Unknown URL with https still not found\",\n\t\t\turl:       \"https://example.com/not-a-real-license\",\n\t\t\twantID:    \"\",\n\t\t\twantFound: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tinfo, found := LicenseByURL(tt.url)\n\t\t\tif found != tt.wantFound {\n\t\t\t\tt.Errorf(\"LicenseByURL() found = %v, want %v\", found, tt.wantFound)\n\t\t\t}\n\t\t\tif found && info.ID != tt.wantID {\n\t\t\t\tt.Errorf(\"LicenseByURL() ID = %v, want %v\", info.ID, tt.wantID)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestStripScheme(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\turl  string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"https scheme stripped\",\n\t\t\turl:  \"https://example.com/license\",\n\t\t\twant: \"example.com/license\",\n\t\t},\n\t\t{\n\t\t\tname: \"http scheme stripped\",\n\t\t\turl:  \"http://example.com/license\",\n\t\t\twant: \"example.com/license\",\n\t\t},\n\t\t{\n\t\t\tname: \"ftp scheme not stripped\",\n\t\t\turl:  \"ftp://example.com/license\",\n\t\t\twant: \"ftp://example.com/license\",\n\t\t},\n\t\t{\n\t\t\tname: \"no scheme unchanged\",\n\t\t\turl:  \"example.com/license\",\n\t\t\twant: \"example.com/license\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty string unchanged\",\n\t\t\turl:  \"\",\n\t\t\twant: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := stripScheme(tt.url)\n\t\t\tif got != tt.want {\n\t\t\t\tt.Errorf(\"stripScheme() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestLicenseByURL_DeprecatedLicenses(t *testing.T) {\n\t// Test that deprecated license URLs map to their replacement licenses\n\t// For example, GPL-2.0+ should map to GPL-2.0-or-later\n\n\t// This test needs actual URLs from deprecated licenses\n\t// We can verify by checking if a deprecated license URL maps to a non-deprecated ID\n\turl := \"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\"\n\tinfo, found := LicenseByURL(url)\n\n\tif found {\n\t\t// Check that we got a valid non-deprecated license ID\n\t\tif info.ID == \"\" {\n\t\t\tt.Error(\"Got empty license ID for deprecated license URL\")\n\t\t}\n\t\t// The ID should be the replacement (GPL-2.0-only or GPL-2.0-or-later)\n\t\t// depending on the URL\n\t\tt.Logf(\"Deprecated license URL mapped to: ID=%s\", info.ID)\n\t}\n}\n"
  },
  {
    "path": "internal/string_helpers.go",
    "content": "package internal\n\nimport \"strings\"\n\n// HasAnyOfPrefixes returns an indication if the given string has any of the given prefixes.\nfunc HasAnyOfPrefixes(input string, prefixes ...string) bool {\n\tfor _, prefix := range prefixes {\n\t\tif strings.HasPrefix(input, prefix) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// HasAnyOfSuffixes returns an indication if the given string has any of the given suffixes.\nfunc HasAnyOfSuffixes(input string, suffixes ...string) bool {\n\tfor _, suffix := range suffixes {\n\t\tif strings.HasSuffix(input, suffix) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc TruncateMiddleEllipsis(input string, maxLen int) string {\n\tif len(input) <= maxLen {\n\t\treturn input\n\t}\n\treturn input[:maxLen/2] + \"...\" + input[len(input)-(maxLen/2):]\n}\n\nfunc StringInSlice(a string, list []string) bool {\n\tfor _, b := range list {\n\t\tif b == a {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc SplitAny(s string, seps string) []string {\n\tsplitter := func(r rune) bool {\n\t\treturn strings.ContainsRune(seps, r)\n\t}\n\tresult := strings.FieldsFunc(s, splitter)\n\tif len(result) == 0 {\n\t\treturn []string{s}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "internal/string_helpers_test.go",
    "content": "package internal\n\nimport (\n\t\"strconv\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestHasAnyOfSuffixes(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\tsuffixes []string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:  \"go case\",\n\t\t\tinput: \"this has something\",\n\t\t\tsuffixes: []string{\n\t\t\t\t\"has something\",\n\t\t\t\t\"has NOT something\",\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"no match\",\n\t\t\tinput: \"this has something\",\n\t\t\tsuffixes: []string{\n\t\t\t\t\"has NOT something\",\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tinput:    \"this has something\",\n\t\t\tsuffixes: []string{},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"positive match last\",\n\t\t\tinput: \"this has something\",\n\t\t\tsuffixes: []string{\n\t\t\t\t\"that does not have\",\n\t\t\t\t\"something\",\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"empty input\",\n\t\t\tinput: \"\",\n\t\t\tsuffixes: []string{\n\t\t\t\t\"that does not have\",\n\t\t\t\t\"this has\",\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, HasAnyOfSuffixes(test.input, test.suffixes...))\n\t\t})\n\t}\n}\n\nfunc TestHasAnyOfPrefixes(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\tprefixes []string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:  \"go case\",\n\t\t\tinput: \"this has something\",\n\t\t\tprefixes: []string{\n\t\t\t\t\"this has\",\n\t\t\t\t\"that does not have\",\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"no match\",\n\t\t\tinput: \"this has something\",\n\t\t\tprefixes: []string{\n\t\t\t\t\"this DOES NOT has\",\n\t\t\t\t\"that does not have\",\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tinput:    \"this has something\",\n\t\t\tprefixes: []string{},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:  \"positive match last\",\n\t\t\tinput: \"this has something\",\n\t\t\tprefixes: []string{\n\t\t\t\t\"that does not have\",\n\t\t\t\t\"this has\",\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"empty input\",\n\t\t\tinput: \"\",\n\t\t\tprefixes: []string{\n\t\t\t\t\"that does not have\",\n\t\t\t\t\"this has\",\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, HasAnyOfPrefixes(test.input, test.prefixes...))\n\t\t})\n\t}\n}\n\nfunc TestTruncateMiddleEllipsis(t *testing.T) {\n\ttests := []struct {\n\t\tinput    string\n\t\tlen      int\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tinput:    \"nobody expects the spanish inquisition\",\n\t\t\tlen:      39,\n\t\t\texpected: \"nobody expects the spanish inquisition\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"nobody expects the spanish inquisition\",\n\t\t\tlen:      30,\n\t\t\texpected: \"nobody expects ...ish inquisition\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"nobody expects the spanish inquisition\",\n\t\t\tlen:      38,\n\t\t\texpected: \"nobody expects the spanish inquisition\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"\",\n\t\t\tlen:      30,\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"\",\n\t\t\tlen:      0,\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.input+\":\"+strconv.Itoa(test.len), func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, TruncateMiddleEllipsis(test.input, test.len))\n\t\t})\n\t}\n}\n\nfunc TestSplitAny(t *testing.T) {\n\n\ttests := []struct {\n\t\tname   string\n\t\tinput  string\n\t\tfields string\n\t\twant   []string\n\t}{\n\t\t{\n\t\t\tname:   \"simple\",\n\t\t\tinput:  \"a,b,c\",\n\t\t\tfields: \",\",\n\t\t\twant:   []string{\"a\", \"b\", \"c\"},\n\t\t},\n\t\t{\n\t\t\tname:   \"empty\",\n\t\t\tinput:  \"\",\n\t\t\tfields: \",\",\n\t\t\twant:   []string{\"\"},\n\t\t},\n\t\t{\n\t\t\tname:   \"multiple separators\",\n\t\t\tinput:  \"a,b\\nc:d\",\n\t\t\tfields: \",:\\n\",\n\t\t\twant:   []string{\"a\", \"b\", \"c\", \"d\"},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, SplitAny(tt.input, tt.fields))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/task/cataloging_config.go",
    "content": "package task\n\nimport (\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n)\n\ntype CatalogingFactoryConfig struct {\n\tComplianceConfig     cataloging.ComplianceConfig\n\tSearchConfig         cataloging.SearchConfig\n\tRelationshipsConfig  cataloging.RelationshipsConfig\n\tDataGenerationConfig cataloging.DataGenerationConfig\n\tLicenseConfig        cataloging.LicenseConfig\n\tPackagesConfig       pkgcataloging.Config\n\tFilesConfig          filecataloging.Config\n}\n\nfunc DefaultCatalogingFactoryConfig() CatalogingFactoryConfig {\n\treturn CatalogingFactoryConfig{\n\t\tComplianceConfig:     cataloging.DefaultComplianceConfig(),\n\t\tSearchConfig:         cataloging.DefaultSearchConfig(),\n\t\tRelationshipsConfig:  cataloging.DefaultRelationshipsConfig(),\n\t\tDataGenerationConfig: cataloging.DefaultDataGenerationConfig(),\n\t\tLicenseConfig:        cataloging.DefaultLicenseConfig(),\n\t\tPackagesConfig:       pkgcataloging.DefaultConfig(),\n\t\tFilesConfig:          filecataloging.DefaultConfig(),\n\t}\n}\n"
  },
  {
    "path": "internal/task/environment_tasks.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n)\n\n// TODO: add tui element here?\n\nfunc NewEnvironmentTask() Task {\n\tfn := func(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\trelease := linux.IdentifyRelease(resolver)\n\t\tif release != nil {\n\t\t\tbuilder.SetLinuxDistribution(*release)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\treturn NewTask(\"environment-cataloger\", fn)\n}\n"
  },
  {
    "path": "internal/task/executor.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"runtime/debug\"\n\t\"slices\"\n\t\"time\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc RunTask(ctx context.Context, tsk Task, resolver file.Resolver, s sbomsync.Builder, prog *monitor.TaskProgress) error {\n\terr := runTaskSafely(ctx, tsk, resolver, s)\n\tunknowns, remainingErrors := unknown.ExtractCoordinateErrors(err)\n\tif len(unknowns) > 0 {\n\t\tappendUnknowns(s, tsk.Name(), unknowns)\n\t}\n\tif remainingErrors != nil {\n\t\tprog.SetError(remainingErrors)\n\t}\n\tprog.Increment()\n\treturn remainingErrors\n}\n\nfunc appendUnknowns(builder sbomsync.Builder, taskName string, unknowns []unknown.CoordinateError) {\n\tif accessor, ok := builder.(sbomsync.Accessor); ok {\n\t\taccessor.WriteToSBOM(func(sb *sbom.SBOM) {\n\t\t\tfor _, u := range unknowns {\n\t\t\t\tif sb.Artifacts.Unknowns == nil {\n\t\t\t\t\tsb.Artifacts.Unknowns = map[file.Coordinates][]string{}\n\t\t\t\t}\n\t\t\t\tunknownText := formatUnknown(u.Reason.Error(), taskName)\n\t\t\t\texisting := sb.Artifacts.Unknowns[u.Coordinates]\n\t\t\t\t// don't include duplicate unknowns\n\t\t\t\tif slices.Contains(existing, unknownText) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsb.Artifacts.Unknowns[u.Coordinates] = append(existing, unknownText)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc runTaskSafely(ctx context.Context, t Task, resolver file.Resolver, s sbomsync.Builder) (err error) {\n\t// handle individual cataloger panics\n\tdefer func() {\n\t\tif e := recover(); e != nil {\n\t\t\terr = fmt.Errorf(\"%v at:\\n%s\", e, string(debug.Stack()))\n\t\t}\n\t}()\n\n\tstart := time.Now()\n\tres := t.Execute(ctx, resolver, s)\n\tlog.WithFields(\"task\", t.Name(), \"elapsed\", time.Since(start)).Info(\"task completed\")\n\treturn res\n}\n"
  },
  {
    "path": "internal/task/executor_test.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_TaskExecutor_PanicHandling(t *testing.T) {\n\ttsk := NewTask(\"panicking-cataloger\", func(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {\n\t\tpanic(\"something bad happened\")\n\t})\n\n\terr := RunTask(context.Background(), tsk, nil, nil, &monitor.TaskProgress{\n\t\tManual: progress.NewManual(-1),\n\t})\n\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"executor_test.go\")\n}\n"
  },
  {
    "path": "internal/task/expression.go",
    "content": "package task\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"sort\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\nvar expressionNodePattern = regexp.MustCompile(`^([a-zA-Z0-9][a-zA-Z0-9-+]*)+$`)\n\nconst (\n\tSetOperation       Operation = \"set\"\n\tAddOperation       Operation = \"add\"\n\tSubSelectOperation Operation = \"sub-select\"\n\tRemoveOperation    Operation = \"remove\"\n)\n\nvar (\n\tErrEmptyToken       = fmt.Errorf(\"no value given\")\n\tErrInvalidToken     = fmt.Errorf(\"invalid token given: only alphanumeric characters and hyphens are allowed\")\n\tErrInvalidOperator  = fmt.Errorf(\"invalid operator given\")\n\tErrUnknownNameOrTag = fmt.Errorf(\"unknown name or tag given\")\n\tErrTagsNotAllowed   = fmt.Errorf(\"tags are not allowed with this operation (must use exact names)\")\n\tErrNamesNotAllowed  = fmt.Errorf(\"names are not allowed with this operation (must use tags)\")\n\tErrAllNotAllowed    = fmt.Errorf(\"cannot use the 'all' operand in this context\")\n)\n\n// ErrInvalidExpression represents an expression that cannot be parsed or can be parsed but is logically invalid.\ntype ErrInvalidExpression struct {\n\tExpression string\n\tOperation  Operation\n\tErr        error\n}\n\nfunc (e ErrInvalidExpression) Error() string {\n\treturn fmt.Sprintf(\"invalid expression: %q: %s\", e.Expression, e.Err.Error())\n}\n\nfunc newErrInvalidExpression(exp string, op Operation, err error) ErrInvalidExpression {\n\treturn ErrInvalidExpression{\n\t\tExpression: exp,\n\t\tOperation:  op,\n\t\tErr:        err,\n\t}\n}\n\n// Expression represents a single operation-operand pair with (all validation errors).\n// E.g. \"+foo\", \"-bar\", or \"something\" are all expressions. Some validations are relevant to not only the\n// syntax (operation and operator) but other are sensitive to the context of the operand (e.g. if a given operand\n// is a tag or a name, validated against the operation).\ntype Expression struct {\n\tOperation Operation\n\tOperand   string\n\tErrors    []error\n}\n\n// Operation represents the type of operation to perform on the operand (set, add, remove, sub-select).\ntype Operation string\n\n// Expressions represents a list of expressions.\ntype Expressions []Expression\n\n// expressionContext represents all information needed to validate an expression (e.g. the set of all tasks and their tags).\ntype expressionContext struct {\n\tNames *strset.Set\n\tTags  *strset.Set\n}\n\nfunc newExpressionContext(ts []Task) *expressionContext {\n\tec := &expressionContext{\n\t\tNames: strset.New(tasks(ts).Names()...),\n\t\tTags:  strset.New(tasks(ts).Tags()...),\n\t}\n\n\tec.Tags.Add(\"all\")\n\n\treturn ec\n}\n\n// newExpression creates a new validated Expression object relative to the task names and tags.\nfunc (ec expressionContext) newExpression(exp string, operation Operation, token string) Expression {\n\tif token == \"\" {\n\t\treturn Expression{\n\t\t\tOperation: operation,\n\t\t\tOperand:   token,\n\t\t\tErrors:    []error{newErrInvalidExpression(exp, operation, ErrEmptyToken)},\n\t\t}\n\t}\n\n\tif !isValidNode(token) {\n\t\treturn Expression{\n\t\t\tOperation: operation,\n\t\t\tOperand:   token,\n\t\t\tErrors:    []error{newErrInvalidExpression(exp, operation, ErrInvalidToken)},\n\t\t}\n\t}\n\n\tvar err error\n\tswitch operation {\n\tcase SetOperation, RemoveOperation:\n\t\t// names and tags allowed\n\t\tif !ec.Tags.Has(token) && !ec.Names.Has(token) {\n\t\t\terr = newErrInvalidExpression(exp, operation, ErrUnknownNameOrTag)\n\t\t}\n\tcase AddOperation:\n\t\t// only names are allowed\n\t\tif !ec.Names.Has(token) {\n\t\t\tif ec.Tags.Has(token) {\n\t\t\t\terr = newErrInvalidExpression(exp, operation, ErrTagsNotAllowed)\n\t\t\t} else {\n\t\t\t\terr = newErrInvalidExpression(exp, operation, ErrUnknownNameOrTag)\n\t\t\t}\n\t\t}\n\tcase SubSelectOperation:\n\t\tif token == \"all\" {\n\t\t\t// special case: we cannot sub-select all (this is most likely a misconfiguration and the user intended to use the set operation)\n\t\t\terr = newErrInvalidExpression(exp, operation, ErrAllNotAllowed)\n\t\t} else if !ec.Tags.Has(token) {\n\t\t\t// only tags are allowed...\n\t\t\tif ec.Names.Has(token) {\n\t\t\t\terr = newErrInvalidExpression(exp, operation, ErrNamesNotAllowed)\n\t\t\t} else {\n\t\t\t\terr = newErrInvalidExpression(exp, operation, ErrUnknownNameOrTag)\n\t\t\t}\n\t\t}\n\t}\n\n\tvar errs []error\n\tif err != nil {\n\t\terrs = append(errs, err)\n\t}\n\n\treturn Expression{\n\t\tOperation: operation,\n\t\tOperand:   token,\n\t\tErrors:    errs,\n\t}\n}\n\nfunc newExpressionsFromSelectionRequest(nc *expressionContext, selectionRequest cataloging.SelectionRequest) Expressions {\n\tvar all Expressions\n\n\tfor _, exp := range selectionRequest.DefaultNamesOrTags {\n\t\tall = append(all, nc.newExpression(exp, SetOperation, exp))\n\t}\n\n\tfor _, exp := range selectionRequest.SubSelectTags {\n\t\tall = append(all, nc.newExpression(exp, SubSelectOperation, exp))\n\t}\n\n\tfor _, exp := range selectionRequest.AddNames {\n\t\tall = append(all, nc.newExpression(exp, AddOperation, exp))\n\t}\n\n\tfor _, exp := range selectionRequest.RemoveNamesOrTags {\n\t\tall = append(all, nc.newExpression(exp, RemoveOperation, exp))\n\t}\n\n\tsort.Sort(all)\n\treturn all\n}\n\nfunc isValidNode(s string) bool {\n\treturn expressionNodePattern.Match([]byte(s))\n}\n\nfunc (e Expressions) Clone() Expressions {\n\tclone := make(Expressions, len(e))\n\tcopy(clone, e)\n\treturn clone\n}\n\nfunc (e Expression) String() string {\n\tvar op string\n\tswitch e.Operation {\n\tcase AddOperation:\n\t\top = \"+\"\n\tcase RemoveOperation:\n\t\top = \"-\"\n\tcase SubSelectOperation:\n\t\top = \"\"\n\tcase SetOperation:\n\t\top = \"\"\n\tdefault:\n\t\top = \"?\"\n\t}\n\treturn op + e.Operand\n}\n\nfunc (e Expressions) Len() int {\n\treturn len(e)\n}\n\nfunc (e Expressions) Swap(i, j int) {\n\te[i], e[j] = e[j], e[i]\n}\n\n// order of operations\nvar orderOfOps = map[Operation]int{\n\tSetOperation:       1,\n\tSubSelectOperation: 2,\n\tRemoveOperation:    3,\n\tAddOperation:       4,\n}\n\nfunc (e Expressions) Less(i, j int) bool {\n\tooi := orderOfOps[e[i].Operation]\n\tooj := orderOfOps[e[j].Operation]\n\n\tif ooi != ooj {\n\t\treturn ooi < ooj\n\t}\n\n\treturn i < j\n}\n\nfunc (e Expressions) Errors() (errs []error) {\n\tfor _, n := range e {\n\t\tif len(n.Errors) > 0 {\n\t\t\terrs = append(errs, n.Errors...)\n\t\t}\n\t}\n\treturn errs\n}\n\nfunc (e Expressions) Validate() error {\n\terrs := e.Errors()\n\tif len(errs) == 0 {\n\t\treturn nil\n\t}\n\tvar err error\n\treturn multierror.Append(err, e.Errors()...)\n}\n"
  },
  {
    "path": "internal/task/expression_test.go",
    "content": "package task\n\nimport (\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\nfunc Test_newExpressionsFromSelectionRequest(t *testing.T) {\n\tts := []Task{\n\t\tdummyTask(\"1\", \"t1\"),\n\t\tdummyTask(\"2\", \"t2\"),\n\t\tdummyTask(\"3\", \"t3\"),\n\t\tdummyTask(\"4\", \"t4\"),\n\t\tdummyTask(\"5\"),\n\t\tdummyTask(\"6\"),\n\t}\n\n\tnc := newExpressionContext(ts)\n\n\tvar tests = []struct {\n\t\tname           string\n\t\tbasis          []string\n\t\texpressions    []string\n\t\texpected       Expressions\n\t\texpectedErrors []error\n\t}{\n\t\t{\n\t\t\tname:        \"empty input\",\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{},\n\t\t\texpected:    nil,\n\t\t},\n\t\t{\n\t\t\tname:        \"valid single set operation\",\n\t\t\tbasis:       []string{\"1\"},\n\t\t\texpressions: []string{},\n\t\t\texpected: []Expression{\n\t\t\t\t{Operation: SetOperation, Operand: \"1\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"add operation\",\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{\"+4\"},\n\t\t\texpected: []Expression{\n\t\t\t\t{Operation: AddOperation, Operand: \"4\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"remove operation\",\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{\"-3\"},\n\t\t\texpected: []Expression{\n\t\t\t\t{Operation: RemoveOperation, Operand: \"3\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"select operation\",\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{\"t2\"},\n\t\t\texpected: []Expression{\n\t\t\t\t{Operation: SubSelectOperation, Operand: \"t2\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"mixed operations order\",\n\t\t\tbasis:       []string{\"1\"},\n\t\t\texpressions: []string{\"+4\", \"-3\", \"t2\"},\n\t\t\texpected: []Expression{\n\t\t\t\t// note they are sorted by operation\n\t\t\t\t{Operation: SetOperation, Operand: \"1\"},\n\t\t\t\t{Operation: SubSelectOperation, Operand: \"t2\"},\n\t\t\t\t{Operation: RemoveOperation, Operand: \"3\"},\n\t\t\t\t{Operation: AddOperation, Operand: \"4\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"invalid token\",\n\t\t\tbasis:          []string{\"!1\"},\n\t\t\texpressions:    []string{},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrInvalidToken},\n\t\t},\n\t\t{\n\t\t\tname:           \"use + operator in basis\",\n\t\t\tbasis:          []string{\"+1\"},\n\t\t\texpressions:    []string{},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrInvalidToken},\n\t\t},\n\t\t{\n\t\t\tname:           \"use - operator in basis\",\n\t\t\tbasis:          []string{\"-1\"},\n\t\t\texpressions:    []string{},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrInvalidToken},\n\t\t},\n\t\t{\n\t\t\tname:           \"invalid name\",\n\t\t\tbasis:          []string{},\n\t\t\texpressions:    []string{\"+t1\"},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrTagsNotAllowed},\n\t\t},\n\t\t{\n\t\t\tname:           \"invalid tag\",\n\t\t\tbasis:          []string{},\n\t\t\texpressions:    []string{\"1\"},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrNamesNotAllowed},\n\t\t},\n\t\t{\n\t\t\tname:           \"invalid use of all\",\n\t\t\tbasis:          []string{},\n\t\t\texpressions:    []string{\"all\"},\n\t\t\texpected:       nil,\n\t\t\texpectedErrors: []error{ErrAllNotAllowed},\n\t\t},\n\t\t{\n\t\t\tname:        \"allow all operand\",\n\t\t\tbasis:       []string{\"all\"},\n\t\t\texpressions: []string{},\n\t\t\texpected: []Expression{\n\t\t\t\t// note they are sorted by operation\n\t\t\t\t{Operation: SetOperation, Operand: \"all\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\n\t\t\treq := cataloging.NewSelectionRequest().WithDefaults(tt.basis...).WithExpression(tt.expressions...)\n\n\t\t\tresult := newExpressionsFromSelectionRequest(nc, req)\n\t\t\tif tt.expectedErrors != nil {\n\t\t\t\terrs := result.Errors()\n\t\t\t\trequire.Len(t, errs, len(tt.expectedErrors))\n\t\t\t\tfor i, err := range tt.expectedErrors {\n\t\t\t\t\tvar target ErrInvalidExpression\n\t\t\t\t\trequire.ErrorAs(t, errs[i], &target)\n\t\t\t\t\tassert.Equal(t, err, target.Err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassert.Empty(t, result.Errors())\n\t\t\t\tassert.Equal(t, tt.expected, result)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_expressionNodes_sort(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tsubject Expressions\n\t\twant    Expressions\n\t}{\n\t\t{\n\t\t\tname: \"sort operations but keep token order\",\n\t\t\tsubject: []Expression{\n\t\t\t\t{\n\t\t\t\t\tOperation: AddOperation,\n\t\t\t\t\tOperand:   \"8\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: AddOperation,\n\t\t\t\t\tOperand:   \"7\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: RemoveOperation,\n\t\t\t\t\tOperand:   \"6\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: RemoveOperation,\n\t\t\t\t\tOperand:   \"5\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SetOperation,\n\t\t\t\t\tOperand:   \"2\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SetOperation,\n\t\t\t\t\tOperand:   \"1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SubSelectOperation,\n\t\t\t\t\tOperand:   \"4\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SubSelectOperation,\n\t\t\t\t\tOperand:   \"3\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []Expression{\n\t\t\t\t{\n\t\t\t\t\tOperation: SetOperation,\n\t\t\t\t\tOperand:   \"2\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SetOperation,\n\t\t\t\t\tOperand:   \"1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SubSelectOperation,\n\t\t\t\t\tOperand:   \"4\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: SubSelectOperation,\n\t\t\t\t\tOperand:   \"3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: RemoveOperation,\n\t\t\t\t\tOperand:   \"6\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: RemoveOperation,\n\t\t\t\t\tOperand:   \"5\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: AddOperation,\n\t\t\t\t\tOperand:   \"8\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tOperation: AddOperation,\n\t\t\t\t\tOperand:   \"7\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := tt.subject.Clone()\n\t\t\tsort.Sort(s)\n\t\t\tassert.Equal(t, tt.want, s)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/task/factory.go",
    "content": "package task\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\ntype factory func(cfg CatalogingFactoryConfig) Task\n\ntype Factories []factory\n\nfunc (f Factories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error) {\n\tvar allTasks []Task\n\ttaskNames := strset.New()\n\tduplicateTaskNames := strset.New()\n\tvar err error\n\tfor _, fact := range f {\n\t\ttsk := fact(cfg)\n\t\tif tsk == nil {\n\t\t\tcontinue\n\t\t}\n\t\ttskName := tsk.Name()\n\t\tif taskNames.Has(tskName) {\n\t\t\tduplicateTaskNames.Add(tskName)\n\t\t}\n\n\t\tallTasks = append(allTasks, tsk)\n\t\ttaskNames.Add(tskName)\n\t}\n\tif duplicateTaskNames.Size() > 0 {\n\t\tnames := duplicateTaskNames.List()\n\t\tsort.Strings(names)\n\t\terr = fmt.Errorf(\"duplicate cataloger task names: %v\", strings.Join(names, \", \"))\n\t}\n\n\treturn allTasks, err\n}\n"
  },
  {
    "path": "internal/task/feature_detection.go",
    "content": "package task\n\nimport \"github.com/anchore/syft/internal/os\"\n\nfunc NewOSFeatureDetectionTask() Task {\n\treturn NewTask(\"os-feature-detection\", os.DetectFeatures)\n}\n"
  },
  {
    "path": "internal/task/file_tasks.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/file/cataloger/executable\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filecontent\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filedigest\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filemetadata\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc DefaultFileTaskFactories() Factories {\n\treturn Factories{\n\t\tnewFileDigestCatalogerTaskFactory(\"digest\"),\n\t\tnewFileMetadataCatalogerTaskFactory(\"file-metadata\"),\n\t\tnewFileContentCatalogerTaskFactory(\"content\"),\n\t\tnewExecutableCatalogerTaskFactory(\"binary-metadata\"),\n\t}\n}\n\nfunc newFileDigestCatalogerTaskFactory(tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn newFileDigestCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Hashers, tags...)\n\t}\n}\n\nfunc newFileDigestCatalogerTask(selection file.Selection, hashers []crypto.Hash, tags ...string) Task {\n\tfn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\tif selection == file.NoFilesSelection || len(hashers) == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\taccessor := builder.(sbomsync.Accessor)\n\n\t\tcoordinates, ok := coordinatesForSelection(selection, builder.(sbomsync.Accessor))\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\n\t\tresult, err := filedigest.NewCataloger(hashers).Catalog(ctx, resolver, coordinates...)\n\n\t\taccessor.WriteToSBOM(func(sbom *sbom.SBOM) {\n\t\t\tsbom.Artifacts.FileDigests = result\n\t\t})\n\n\t\treturn err\n\t}\n\n\treturn NewTask(\"file-digest-cataloger\", fn, commonFileTags(tags)...)\n}\n\nfunc newFileMetadataCatalogerTaskFactory(tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn newFileMetadataCatalogerTask(cfg.FilesConfig.Selection, tags...)\n\t}\n}\n\nfunc newFileMetadataCatalogerTask(selection file.Selection, tags ...string) Task {\n\tfn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\tif selection == file.NoFilesSelection {\n\t\t\treturn nil\n\t\t}\n\n\t\taccessor := builder.(sbomsync.Accessor)\n\n\t\tcoordinates, ok := coordinatesForSelection(selection, builder.(sbomsync.Accessor))\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\n\t\tresult, err := filemetadata.NewCataloger().Catalog(ctx, resolver, coordinates...)\n\n\t\taccessor.WriteToSBOM(func(sbom *sbom.SBOM) {\n\t\t\tsbom.Artifacts.FileMetadata = result\n\t\t})\n\n\t\treturn err\n\t}\n\n\treturn NewTask(\"file-metadata-cataloger\", fn, commonFileTags(tags)...)\n}\n\nfunc newFileContentCatalogerTaskFactory(tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn newFileContentCatalogerTask(cfg.FilesConfig.Content, tags...)\n\t}\n}\n\nfunc newFileContentCatalogerTask(cfg filecontent.Config, tags ...string) Task {\n\tfn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\tif len(cfg.Globs) == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\taccessor := builder.(sbomsync.Accessor)\n\n\t\tresult, err := filecontent.NewCataloger(cfg).Catalog(ctx, resolver)\n\n\t\taccessor.WriteToSBOM(func(sbom *sbom.SBOM) {\n\t\t\tsbom.Artifacts.FileContents = result\n\t\t})\n\n\t\treturn err\n\t}\n\n\treturn NewTask(\"file-content-cataloger\", fn, commonFileTags(tags)...)\n}\n\nfunc newExecutableCatalogerTaskFactory(tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn newExecutableCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Executable, tags...)\n\t}\n}\n\nfunc newExecutableCatalogerTask(selection file.Selection, cfg executable.Config, tags ...string) Task {\n\tfn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\tif selection == file.NoFilesSelection {\n\t\t\treturn nil\n\t\t}\n\n\t\taccessor := builder.(sbomsync.Accessor)\n\n\t\tresult, err := executable.NewCataloger(cfg).CatalogCtx(ctx, resolver)\n\n\t\taccessor.WriteToSBOM(func(sbom *sbom.SBOM) {\n\t\t\tsbom.Artifacts.Executables = result\n\t\t})\n\n\t\treturn err\n\t}\n\n\treturn NewTask(\"file-executable-cataloger\", fn, commonFileTags(tags)...)\n}\n\n// TODO: this should be replaced with a fix that allows passing a coordinate or location iterator to the cataloger\n// Today internal to both cataloger this functions differently: a slice of coordinates vs a channel of locations\nfunc coordinatesForSelection(selection file.Selection, accessor sbomsync.Accessor) ([]file.Coordinates, bool) {\n\tif selection == file.AllFilesSelection {\n\t\treturn nil, true\n\t}\n\n\tif selection == file.FilesOwnedByPackageSelection {\n\t\tvar coordinates file.CoordinateSet\n\n\t\taccessor.ReadFromSBOM(func(sbom *sbom.SBOM) {\n\t\t\t// get any file coordinates that are owned by a package\n\t\t\tfor _, r := range sbom.Relationships {\n\t\t\t\tif r.Type != artifact.ContainsRelationship {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif _, ok := r.From.(pkg.Package); !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif c, ok := r.To.(file.Coordinates); ok {\n\t\t\t\t\tcoordinates.Add(c)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// get any file coordinates referenced by a package directly\n\t\t\tfor p := range sbom.Artifacts.Packages.Enumerate() {\n\t\t\t\tcoordinates.Add(p.Locations.CoordinateSet().ToSlice()...)\n\t\t\t}\n\t\t})\n\n\t\tcoords := coordinates.ToSlice()\n\n\t\tif len(coords) == 0 {\n\t\t\treturn nil, false\n\t\t}\n\n\t\treturn coords, true\n\t}\n\n\treturn nil, false\n}\n\nfunc commonFileTags(tags []string) []string {\n\ttags = append(tags, filecataloging.FileTag)\n\treturn tags\n}\n"
  },
  {
    "path": "internal/task/file_tasks_test.go",
    "content": "package task\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_coordinatesForSelection(t *testing.T) {\n\n\ttests := []struct {\n\t\tname      string\n\t\tselection file.Selection\n\t\tsbom      *sbom.SBOM\n\t\tfiles     []file.Coordinates\n\t\tok        bool\n\t}{\n\t\t{\n\t\t\tname:      \"all files\",\n\t\t\tselection: file.AllFilesSelection,\n\t\t\tfiles:     nil,\n\t\t\tok:        true,\n\t\t},\n\t\t{\n\t\t\tname:      \"no files\",\n\t\t\tselection: file.NoFilesSelection,\n\t\t\tfiles:     nil,\n\t\t\tok:        false,\n\t\t},\n\t\t{\n\t\t\tname:      \"specific files with hits\",\n\t\t\tselection: file.FilesOwnedByPackageSelection,\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkg.Package{},\n\t\t\t\t\t\tTo: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"path\",\n\t\t\t\t\t\t\tFileSystemID: \"fs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tfiles: []file.Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"path\",\n\t\t\t\t\tFileSystemID: \"fs\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tok: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"specific files no hits (by wrong type)\",\n\t\t\tselection: file.FilesOwnedByPackageSelection,\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkg.Package{},\n\t\t\t\t\t\tTo: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"path\",\n\t\t\t\t\t\t\tFileSystemID: \"fs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// wrong type\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tfiles: nil,\n\t\t\tok:    false,\n\t\t},\n\t\t{\n\t\t\tname:      \"specific files no hits (by wrong node types)\",\n\t\t\tselection: file.FilesOwnedByPackageSelection,\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: file.Coordinates{}, // wrong type\n\t\t\t\t\t\tTo: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"path\",\n\t\t\t\t\t\t\tFileSystemID: \"fs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tfiles: nil,\n\t\t\tok:    false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfiles, ok := coordinatesForSelection(tt.selection, sbomsync.NewBuilder(tt.sbom).(sbomsync.Accessor))\n\t\t\tassert.Equal(t, tt.files, files)\n\t\t\tassert.Equal(t, tt.ok, ok)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/task/package_task_factory.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\tcpeutils \"github.com/anchore/syft/syft/pkg/cataloger/common/cpe\"\n)\n\nfunc newPackageTaskFactory(catalogerFactory func(CatalogingFactoryConfig) pkg.Cataloger, tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn NewPackageTask(cfg, catalogerFactory(cfg), tags...)\n\t}\n}\n\nfunc newSimplePackageTaskFactory(catalogerFactory func() pkg.Cataloger, tags ...string) factory {\n\treturn func(cfg CatalogingFactoryConfig) Task {\n\t\treturn NewPackageTask(cfg, catalogerFactory(), tags...)\n\t}\n}\n\n// NewPackageTask creates a Task function for a generic pkg.Cataloger, honoring the common configuration options.\nfunc NewPackageTask(cfg CatalogingFactoryConfig, c pkg.Cataloger, tags ...string) Task {\n\tfn := func(ctx context.Context, resolver file.Resolver, sbom sbomsync.Builder) error {\n\t\tcatalogerName := c.Name()\n\t\tlog.WithFields(\"name\", catalogerName).Trace(\"starting package cataloger\")\n\n\t\tinfo := monitor.GenericTask{\n\t\t\tTitle: monitor.Title{\n\t\t\t\tDefault: prettyName(catalogerName),\n\t\t\t},\n\t\t\tID:            catalogerName,\n\t\t\tParentID:      monitor.PackageCatalogingTaskID,\n\t\t\tContext:       \"\",\n\t\t\tHideOnSuccess: true,\n\t\t}\n\n\t\tt := bus.StartCatalogerTask(info, -1, \"\")\n\n\t\tpkgs, relationships, err := c.Catalog(ctx, resolver)\n\n\t\tlog.WithFields(\"cataloger\", catalogerName).Debugf(\"discovered %d packages\", len(pkgs))\n\n\t\tpkgs, relationships = finalizePkgCatalogerResults(cfg, resolver, catalogerName, pkgs, relationships)\n\n\t\tpkgs, relationships = applyCompliance(cfg.ComplianceConfig, pkgs, relationships)\n\n\t\tsbom.AddPackages(pkgs...)\n\t\tsbom.AddRelationships(relationships...)\n\t\tt.Add(int64(len(pkgs)))\n\n\t\tt.SetCompleted()\n\t\tlog.WithFields(\"name\", catalogerName).Trace(\"package cataloger completed\")\n\n\t\treturn err\n\t}\n\ttags = append(tags, pkgcataloging.PackageTag)\n\n\treturn NewTask(c.Name(), fn, tags...)\n}\n\nfunc finalizePkgCatalogerResults(cfg CatalogingFactoryConfig, resolver file.PathResolver, catalogerName string, pkgs []pkg.Package, relationships []artifact.Relationship) ([]pkg.Package, []artifact.Relationship) {\n\tfor i, p := range pkgs {\n\t\tif p.FoundBy == \"\" {\n\t\t\tp.FoundBy = catalogerName\n\t\t}\n\n\t\tif cfg.DataGenerationConfig.GenerateCPEs && !hasAuthoritativeCPE(p.CPEs) {\n\t\t\t// generate CPEs (note: this is excluded from package ID, so is safe to mutate)\n\t\t\t// we might have binary classified CPE already with the package so we want to append here\n\t\t\tdictionaryCPEs, ok := cpeutils.DictionaryFind(p)\n\t\t\tif ok {\n\t\t\t\tlog.Tracef(\"used CPE dictionary to find CPEs for %s package %q: %s\", p.Type, p.Name, dictionaryCPEs)\n\t\t\t\tp.CPEs = append(p.CPEs, dictionaryCPEs...)\n\t\t\t} else {\n\t\t\t\tp.CPEs = append(p.CPEs, cpeutils.Generate(p)...)\n\t\t\t}\n\t\t}\n\n\t\t// if we were not able to identify the language we have an opportunity\n\t\t// to try and get this value from the PURL. Worst case we assert that\n\t\t// we could not identify the language at either stage and set UnknownLanguage\n\t\tif p.Language == \"\" {\n\t\t\tp.Language = pkg.LanguageFromPURL(p.PURL)\n\t\t}\n\n\t\tif cfg.RelationshipsConfig.PackageFileOwnership {\n\t\t\t// create file-to-package relationships for files owned by the package\n\t\t\towningRelationships, err := packageFileOwnershipRelationships(p, resolver)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to create any package-file relationships for package name=%q type=%q: %v\", p.Name, p.Type, err)\n\t\t\t} else {\n\t\t\t\trelationships = append(relationships, owningRelationships...)\n\t\t\t}\n\t\t}\n\n\t\t// we want to know if the user wants to preserve license content or not in the final SBOM\n\t\t// note: this looks incorrect, but pkg.License.Content is NOT used to compute the Package ID\n\t\t// this does NOT change the reproducibility of the Package ID\n\t\tapplyLicenseContentRules(&p, cfg.LicenseConfig)\n\n\t\tpkgs[i] = p\n\t}\n\treturn pkgs, relationships\n}\n\ntype packageReplacement struct {\n\toriginal artifact.ID\n\tpkg      pkg.Package\n}\n\nfunc applyCompliance(cfg cataloging.ComplianceConfig, pkgs []pkg.Package, relationships []artifact.Relationship) ([]pkg.Package, []artifact.Relationship) {\n\tremainingPkgs, droppedPkgs, replacements := filterNonCompliantPackages(pkgs, cfg)\n\n\trelIdx := relationship.NewIndex(relationships...)\n\tfor _, p := range droppedPkgs {\n\t\trelIdx.Remove(p.ID())\n\t}\n\n\tfor _, replacement := range replacements {\n\t\trelIdx.Replace(replacement.original, replacement.pkg)\n\t}\n\n\treturn remainingPkgs, relIdx.All()\n}\n\nfunc filterNonCompliantPackages(pkgs []pkg.Package, cfg cataloging.ComplianceConfig) ([]pkg.Package, []pkg.Package, []packageReplacement) {\n\tvar remainingPkgs, droppedPkgs []pkg.Package\n\tvar replacements []packageReplacement\n\tfor _, p := range pkgs {\n\t\tkeep, replacement := applyComplianceRules(&p, cfg)\n\t\tif keep {\n\t\t\tremainingPkgs = append(remainingPkgs, p)\n\t\t} else {\n\t\t\tdroppedPkgs = append(droppedPkgs, p)\n\t\t}\n\t\tif replacement != nil {\n\t\t\treplacements = append(replacements, *replacement)\n\t\t}\n\t}\n\n\treturn remainingPkgs, droppedPkgs, replacements\n}\n\nfunc applyComplianceRules(p *pkg.Package, cfg cataloging.ComplianceConfig) (bool, *packageReplacement) {\n\tvar drop bool\n\tvar replacement *packageReplacement\n\n\tapplyComplianceRule := func(value, fieldName string, action cataloging.ComplianceAction) bool {\n\t\tif strings.TrimSpace(value) != \"\" {\n\t\t\treturn false\n\t\t}\n\n\t\tloc := \"unknown\"\n\t\tlocs := p.Locations.ToSlice()\n\t\tif len(locs) > 0 {\n\t\t\tloc = locs[0].Path()\n\t\t}\n\t\tswitch action {\n\t\tcase cataloging.ComplianceActionDrop:\n\t\t\tlog.WithFields(\"pkg\", p.String(), \"location\", loc).Debugf(\"package with missing %s, dropping\", fieldName)\n\t\t\tdrop = true\n\n\t\tcase cataloging.ComplianceActionStub:\n\t\t\tlog.WithFields(\"pkg\", p.String(), \"location\", loc).Debugf(\"package with missing %s, stubbing with default value\", fieldName)\n\t\t\treturn true\n\n\t\tcase cataloging.ComplianceActionKeep:\n\t\t\tlog.WithFields(\"pkg\", p.String(), \"location\", loc, \"field\", fieldName).Trace(\"package with missing field, taking no action\")\n\t\t}\n\t\treturn false\n\t}\n\n\togID := p.ID()\n\n\tif applyComplianceRule(p.Name, \"name\", cfg.MissingName) {\n\t\tp.Name = cataloging.UnknownStubValue\n\t\tp.SetID()\n\t}\n\n\tif applyComplianceRule(p.Version, \"version\", cfg.MissingVersion) {\n\t\tp.Version = cataloging.UnknownStubValue\n\t\tp.SetID()\n\t}\n\n\tnewID := p.ID()\n\tif newID != ogID {\n\t\treplacement = &packageReplacement{\n\t\t\toriginal: ogID,\n\t\t\tpkg:      *p,\n\t\t}\n\t}\n\n\treturn !drop, replacement\n}\n\nfunc hasAuthoritativeCPE(cpes []cpe.CPE) bool {\n\tfor _, c := range cpes {\n\t\tif c.Source != cpe.GeneratedSource {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc prettyName(s string) string {\n\tif s == \"\" {\n\t\treturn \"\"\n\t}\n\n\t// Convert first character to uppercase\n\tr := []rune(s)\n\tr[0] = unicode.ToUpper(r[0])\n\n\treturn strings.ReplaceAll(string(r), \"-\", \" \")\n}\n\nfunc packageFileOwnershipRelationships(p pkg.Package, resolver file.PathResolver) ([]artifact.Relationship, error) {\n\tfileOwner, ok := p.Metadata.(pkg.FileOwner)\n\tif !ok {\n\t\treturn nil, nil\n\t}\n\n\tlocations := map[artifact.ID]file.Location{}\n\n\tfor _, path := range fileOwner.OwnedFiles() {\n\t\tpathRefs, err := resolver.FilesByPath(path)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to find path for path=%q: %w\", path, err)\n\t\t}\n\n\t\tif len(pathRefs) == 0 {\n\t\t\t// ideally we want to warn users about missing files from a package, however, it is very common for\n\t\t\t// container image authors to delete files that are not needed in order to keep image sizes small. Adding\n\t\t\t// a warning here would be needlessly noisy (even for popular base images).\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, ref := range pathRefs {\n\t\t\tif oldRef, ok := locations[ref.ID()]; ok {\n\t\t\t\tlog.Debugf(\"found path duplicate of %s\", oldRef.RealPath)\n\t\t\t}\n\t\t\tlocations[ref.ID()] = ref\n\t\t}\n\t}\n\n\tvar relationships []artifact.Relationship\n\tfor _, location := range locations {\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: p,\n\t\t\tTo:   location.Coordinates,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t})\n\t}\n\treturn relationships, nil\n}\n\nfunc applyLicenseContentRules(p *pkg.Package, cfg cataloging.LicenseConfig) {\n\tif p.Licenses.Empty() {\n\t\treturn\n\t}\n\n\tlicenses := p.Licenses.ToSlice()\n\tfor i := range licenses {\n\t\tl := &licenses[i]\n\t\tswitch cfg.IncludeContent {\n\t\tcase cataloging.LicenseContentIncludeUnknown:\n\t\t\t// we have an SPDX expression, which means this is NOT an unknown license\n\t\t\t// remove the content, we are only including content for unknown licenses by default\n\t\t\tif l.SPDXExpression != \"\" {\n\t\t\t\tlicenses[i].Contents = \"\"\n\t\t\t}\n\t\tcase cataloging.LicenseContentIncludeAll:\n\t\t\t// always include the content\n\t\tdefault:\n\t\t\t// clear it all out\n\t\t\tlicenses[i].Contents = \"\"\n\t\t}\n\t}\n\n\tp.Licenses = pkg.NewLicenseSet(licenses...)\n}\n"
  },
  {
    "path": "internal/task/package_task_factory_test.go",
    "content": "package task\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_hasAuthoritativeCPE(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tcpes []cpe.CPE\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"no cpes\",\n\t\t\tcpes: []cpe.CPE{},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"no authoritative cpes\",\n\t\t\tcpes: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tSource: cpe.GeneratedSource,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"has declared (authoritative) cpe\",\n\t\t\tcpes: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"has lookup (authoritative) cpe\",\n\t\t\tcpes: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tSource: cpe.NVDDictionaryLookupSource,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, hasAuthoritativeCPE(tt.cpes))\n\t\t})\n\t}\n}\n\nfunc TestApplyCompliance(t *testing.T) {\n\tp1 := pkg.Package{Name: \"pkg-1\", Version: \"1.0\"}\n\tp2 := pkg.Package{Name: \"\", Version: \"1.0\"}   // missing name\n\tp3 := pkg.Package{Name: \"pkg-3\", Version: \"\"} // missing version\n\tp4 := pkg.Package{Name: \"pkg-4\", Version: \"\"} // missing version\n\tc1 := file.Coordinates{RealPath: \"/coords/1\"}\n\tc2 := file.Coordinates{RealPath: \"/coords/2\"}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3, &p4} {\n\t\tp.SetID()\n\t}\n\n\tr1 := artifact.Relationship{\n\t\tFrom: p1,\n\t\tTo:   c1,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\tr2 := artifact.Relationship{\n\t\tFrom: p2,\n\t\tTo:   c2,\n\t\tType: artifact.ContainsRelationship,\n\t}\n\n\tcfg := cataloging.ComplianceConfig{\n\t\tMissingName:    cataloging.ComplianceActionDrop,\n\t\tMissingVersion: cataloging.ComplianceActionStub,\n\t}\n\n\tremainingPkgs, remainingRels := applyCompliance(cfg, []pkg.Package{p1, p2, p3, p4}, []artifact.Relationship{r1, r2})\n\n\t// p2 should be dropped because it has a missing name, p3 and p4 should pass with a warning for the missing version\n\tassert.Len(t, remainingPkgs, 3) // p1, p3, p4 should remain\n\tassert.Len(t, remainingRels, 1) // only r1 should remain (relationship involving p1)\n}\n\nfunc TestFilterNonCompliantPackages(t *testing.T) {\n\tp1 := pkg.Package{Name: \"pkg-1\", Version: \"1.0\"}\n\tp2 := pkg.Package{Name: \"\", Version: \"1.0\"}   // missing name\n\tp3 := pkg.Package{Name: \"pkg-3\", Version: \"\"} // missing version\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3} {\n\t\tp.SetID()\n\t}\n\n\tcfg := cataloging.ComplianceConfig{\n\t\tMissingName:    cataloging.ComplianceActionDrop,\n\t\tMissingVersion: cataloging.ComplianceActionKeep,\n\t}\n\n\tremainingPkgs, droppedPkgs, replacement := filterNonCompliantPackages([]pkg.Package{p1, p2, p3}, cfg)\n\trequire.Nil(t, replacement)\n\n\t// p2 should be dropped because it has a missing name\n\tassert.Len(t, remainingPkgs, 2)\n\tassert.Len(t, droppedPkgs, 1)\n\tassert.Equal(t, p2, droppedPkgs[0])\n}\n\nfunc TestApplyLicenseContentRules(t *testing.T) {\n\tlicenseWithSPDX := pkg.License{\n\t\tSPDXExpression: \"MIT\",\n\t\tContents:       \"MIT license content\",\n\t}\n\tlicenseWithoutSPDX := pkg.License{\n\t\tValue:    \"License-Not-A-SPDX-Expression\",\n\t\tContents: \"Non-SPDX license content\",\n\t}\n\n\ttests := []struct {\n\t\tname             string\n\t\tinputLicenses    []pkg.License\n\t\tcfg              cataloging.LicenseConfig\n\t\texpectedLicenses []pkg.License\n\t}{\n\t\t{\n\t\t\tname: \"LicenseContentIncludeUnknown\",\n\t\t\tinputLicenses: []pkg.License{\n\t\t\t\tlicenseWithSPDX,\n\t\t\t\tlicenseWithoutSPDX,\n\t\t\t},\n\t\t\tcfg: cataloging.LicenseConfig{\n\t\t\t\tIncludeContent: cataloging.LicenseContentIncludeUnknown,\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tContents:       \"\", // content cleared for SPDX license\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:    \"License-Not-A-SPDX-Expression\",\n\t\t\t\t\tContents: \"Non-SPDX license content\", // content preserved for non-SPDX\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseContentExcludeAll\",\n\t\t\tinputLicenses: []pkg.License{\n\t\t\t\tlicenseWithSPDX,\n\t\t\t\tlicenseWithoutSPDX,\n\t\t\t},\n\t\t\tcfg: cataloging.LicenseConfig{\n\t\t\t\tIncludeContent: cataloging.LicenseContentExcludeAll,\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tContents:       \"\", // content cleared\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:    \"License-Not-A-SPDX-Expression\",\n\t\t\t\t\tContents: \"\", // content cleared\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseContentIncludeAll\",\n\t\t\tinputLicenses: []pkg.License{\n\t\t\t\tlicenseWithSPDX,\n\t\t\t\tlicenseWithoutSPDX,\n\t\t\t},\n\t\t\tcfg: cataloging.LicenseConfig{\n\t\t\t\tIncludeContent: cataloging.LicenseContentIncludeAll,\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tContents:       \"MIT license content\", // content preserved\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:    \"License-Not-A-SPDX-Expression\",\n\t\t\t\t\tContents: \"Non-SPDX license content\", // content preserved\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"default license config should be LicenseContentExcludeAll\",\n\t\t\tinputLicenses: []pkg.License{\n\t\t\t\tlicenseWithSPDX,\n\t\t\t\tlicenseWithoutSPDX,\n\t\t\t},\n\t\t\tcfg: cataloging.DefaultLicenseConfig(),\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue: \"License-Not-A-SPDX-Expression\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid license content cataloging config results in the default case\",\n\t\t\tinputLicenses: []pkg.License{\n\t\t\t\tlicenseWithSPDX,\n\t\t\t\tlicenseWithoutSPDX,\n\t\t\t},\n\t\t\tcfg: cataloging.LicenseConfig{\n\t\t\t\tIncludeContent: cataloging.LicenseContent(\"invalid\"),\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:    \"License-Not-A-SPDX-Expression\",\n\t\t\t\t\tContents: \"\", // content all removed\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:          \"Empty licenses\",\n\t\t\tinputLicenses: []pkg.License{},\n\t\t\tcfg: cataloging.LicenseConfig{\n\t\t\t\tIncludeContent: cataloging.LicenseContentIncludeAll,\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tinputPkg := &pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(tt.inputLicenses...),\n\t\t\t}\n\n\t\t\tinputPkg.SetID()\n\t\t\toriginalID := inputPkg.ID()\n\n\t\t\tapplyLicenseContentRules(inputPkg, tt.cfg)\n\n\t\t\tassert.Equal(t, originalID, inputPkg.ID(), \"package ID changed unexpectedly\")\n\n\t\t\tactualLicenses := inputPkg.Licenses.ToSlice()\n\t\t\texpectedLicenses := pkg.NewLicenseSet(tt.expectedLicenses...).ToSlice()\n\n\t\t\tassert.Equal(t, expectedLicenses, actualLicenses, \"license contents do not match expected values\")\n\n\t\t})\n\t}\n}\n\nfunc TestApplyComplianceRules_DropAndStub(t *testing.T) {\n\tp := pkg.Package{Name: \"\", Version: \"\"}\n\tp.SetID()\n\togID := p.ID()\n\n\tcfg := cataloging.ComplianceConfig{\n\t\tMissingName:    cataloging.ComplianceActionDrop,\n\t\tMissingVersion: cataloging.ComplianceActionStub,\n\t}\n\n\tisCompliant, replacement := applyComplianceRules(&p, cfg)\n\trequire.NotNil(t, replacement)\n\tassert.Equal(t, packageReplacement{\n\t\toriginal: ogID,\n\t\tpkg:      p,\n\t}, *replacement)\n\n\t// the package should be dropped due to missing name (drop action) and its version should be stubbed\n\tassert.False(t, isCompliant)\n\tassert.Equal(t, cataloging.UnknownStubValue, p.Version)\n}\n"
  },
  {
    "path": "internal/task/package_tasks.go",
    "content": "package task\n\nimport (\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/ai\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/alpine\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/arch\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n\tbitnamiSbomCataloger \"github.com/anchore/syft/syft/pkg/cataloger/bitnami\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/conda\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/cpp\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/dart\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/debian\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/dotnet\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/elixir\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/erlang\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/gentoo\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/githubactions\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/golang\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/haskell\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/homebrew\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/javascript\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/kernel\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/lua\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/nix\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/ocaml\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/php\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/python\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/r\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/redhat\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/ruby\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/rust\"\n\tsbomCataloger \"github.com/anchore/syft/syft/pkg/cataloger/sbom\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/snap\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/swift\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/swipl\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/terraform\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/wordpress\"\n)\n\nconst (\n\t// Java ecosystem labels\n\tJava  = \"java\"\n\tMaven = \"maven\"\n\n\t// Go ecosystem labels\n\tGo     = \"go\"\n\tGolang = \"golang\"\n\n\t// JavaScript ecosystem labels\n\tJavaScript = \"javascript\"\n\tNode       = \"node\"\n\tNPM        = \"npm\"\n\n\t// Python ecosystem labels\n\tPython = \"python\"\n)\n\n//nolint:funlen\nfunc DefaultPackageTaskFactories() Factories {\n\treturn []factory{\n\t\t// OS package installed catalogers ///////////////////////////////////////////////////////////////////////////\n\t\tnewSimplePackageTaskFactory(arch.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, \"linux\", \"alpm\", \"archlinux\", \"pacman\"),\n\t\tnewSimplePackageTaskFactory(alpine.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, \"linux\", \"apk\", \"alpine\"),\n\t\tnewSimplePackageTaskFactory(debian.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, \"linux\", \"dpkg\", \"debian\"),\n\t\tnewSimplePackageTaskFactory(gentoo.NewPortageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, \"linux\", \"portage\", \"gentoo\"),\n\t\tnewSimplePackageTaskFactory(redhat.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, \"linux\", \"rpm\", \"redhat\"),\n\n\t\t// OS package declared catalogers ///////////////////////////////////////////////////////////////////////////\n\t\tnewSimplePackageTaskFactory(redhat.NewArchiveCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.OSTag, \"linux\", \"rpm\", \"redhat\"),\n\t\tnewSimplePackageTaskFactory(debian.NewArchiveCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.OSTag, \"linux\", \"deb\", \"debian\"),\n\n\t\t// language-specific package installed catalogers ///////////////////////////////////////////////////////////////////////////\n\t\tnewSimplePackageTaskFactory(cpp.NewConanInfoCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"cpp\", \"conan\"),\n\t\tnewSimplePackageTaskFactory(javascript.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, JavaScript, Node),\n\t\tnewSimplePackageTaskFactory(php.NewComposerInstalledCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"php\", \"composer\"),\n\t\tnewSimplePackageTaskFactory(r.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, pkgcataloging.DirectoryTag, \"r\"),\n\t\tnewSimplePackageTaskFactory(ruby.NewInstalledGemSpecCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"ruby\", \"gem\", \"gemspec\"),\n\t\tnewSimplePackageTaskFactory(rust.NewAuditBinaryCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"rust\", \"binary\"),\n\n\t\t// language-specific package declared catalogers ///////////////////////////////////////////////////////////////////////////\n\t\tnewSimplePackageTaskFactory(cpp.NewConanCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"cpp\", \"conan\"),\n\t\tnewSimplePackageTaskFactory(dart.NewPubspecLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"dart\"),\n\t\tnewSimplePackageTaskFactory(dart.NewPubspecCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"dart\"),\n\t\tnewSimplePackageTaskFactory(elixir.NewMixLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"elixir\"),\n\t\tnewSimplePackageTaskFactory(erlang.NewRebarLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"erlang\"),\n\t\tnewSimplePackageTaskFactory(erlang.NewOTPCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"erlang\", \"otp\"),\n\t\tnewSimplePackageTaskFactory(haskell.NewHackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"haskell\", \"hackage\", \"cabal\"),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn golang.NewGoModuleFileCataloger(cfg.PackagesConfig.Golang)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Go, Golang, \"gomod\",\n\t\t),\n\t\tnewSimplePackageTaskFactory(java.NewGradleLockfileCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, \"gradle\"),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn java.NewPomCataloger(cfg.PackagesConfig.JavaArchive)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, Maven,\n\t\t),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn javascript.NewLockCataloger(cfg.PackagesConfig.JavaScript)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, JavaScript, Node, NPM,\n\t\t),\n\t\tnewSimplePackageTaskFactory(php.NewComposerLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"php\", \"composer\"),\n\t\tnewSimplePackageTaskFactory(php.NewPearCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, pkgcataloging.ImageTag, \"php\", \"pear\"),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn python.NewPackageCataloger(cfg.PackagesConfig.Python)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Python,\n\t\t),\n\t\tnewSimplePackageTaskFactory(ruby.NewGemFileLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"ruby\", \"gem\"),\n\t\tnewSimplePackageTaskFactory(ruby.NewGemSpecCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"ruby\", \"gem\", \"gemspec\"),\n\t\tnewSimplePackageTaskFactory(rust.NewCargoLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"rust\", \"cargo\"),\n\t\tnewSimplePackageTaskFactory(swift.NewCocoapodsCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"swift\", \"cocoapods\"),\n\t\tnewSimplePackageTaskFactory(swift.NewSwiftPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"swift\", \"spm\"),\n\t\tnewSimplePackageTaskFactory(swipl.NewSwiplPackCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"swipl\", \"pack\"),\n\t\tnewSimplePackageTaskFactory(ocaml.NewOpamPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"ocaml\", \"opam\"),\n\n\t\t// language-specific package for both image and directory scans (but not necessarily declared) ////////////////////////////////////////\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn dotnet.NewDotnetDepsBinaryCataloger(cfg.PackagesConfig.Dotnet)\n\t\t\t},\n\t\t\tpkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"dotnet\", \"c#\",\n\t\t),\n\t\tnewSimplePackageTaskFactory(dotnet.NewDotnetPackagesLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.ImageTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, \"dotnet\", \"c#\"),\n\t\tnewSimplePackageTaskFactory(python.NewInstalledPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Python),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn golang.NewGoModuleBinaryCataloger(cfg.PackagesConfig.Golang)\n\t\t\t},\n\t\t\tpkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Go, Golang, \"gomod\", \"binary\",\n\t\t),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn java.NewArchiveCataloger(cfg.PackagesConfig.JavaArchive)\n\t\t\t},\n\t\t\tpkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java, Maven,\n\t\t),\n\t\tnewSimplePackageTaskFactory(java.NewNativeImageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn nix.NewCataloger(cfg.PackagesConfig.Nix)\n\t\t\t},\n\t\t\tpkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"nix\",\n\t\t),\n\t\tnewSimplePackageTaskFactory(lua.NewPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, \"lua\"),\n\n\t\t// other package catalogers ///////////////////////////////////////////////////////////////////////////\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn binary.NewClassifierCataloger(cfg.PackagesConfig.Binary)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"binary\",\n\t\t),\n\t\tnewSimplePackageTaskFactory(binary.NewELFPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"binary\", \"elf-package\", \"elf\"),\n\t\tnewSimplePackageTaskFactory(binary.NewPEPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"binary\", \"pe-package\", \"pe\", \"dll\", \"exe\"),\n\t\tnewSimplePackageTaskFactory(githubactions.NewActionUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, \"github\", \"github-actions\"),\n\t\tnewSimplePackageTaskFactory(githubactions.NewWorkflowUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, \"github\", \"github-actions\"),\n\t\tnewSimplePackageTaskFactory(java.NewJvmDistributionCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"java\", \"jvm\", \"jdk\", \"jre\"),\n\t\tnewPackageTaskFactory(\n\t\t\tfunc(cfg CatalogingFactoryConfig) pkg.Cataloger {\n\t\t\t\treturn kernel.NewLinuxKernelCataloger(cfg.PackagesConfig.LinuxKernel)\n\t\t\t},\n\t\t\tpkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"linux\", \"kernel\",\n\t\t),\n\t\tnewSimplePackageTaskFactory(php.NewInterpreterCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"binary\", \"php\"),\n\t\tnewSimplePackageTaskFactory(sbomCataloger.NewCataloger, \"sbom\"), // note: not evidence of installed packages\n\t\tnewSimplePackageTaskFactory(bitnamiSbomCataloger.NewCataloger, \"bitnami\", pkgcataloging.InstalledTag, pkgcataloging.ImageTag),\n\t\tnewSimplePackageTaskFactory(wordpress.NewWordpressPluginCataloger, pkgcataloging.DirectoryTag, pkgcataloging.ImageTag, \"wordpress\"),\n\t\tnewSimplePackageTaskFactory(terraform.NewLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, \"terraform\"),\n\t\tnewSimplePackageTaskFactory(homebrew.NewCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"homebrew\"),\n\t\tnewSimplePackageTaskFactory(conda.NewCondaMetaCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.PackageTag, \"conda\"),\n\t\tnewSimplePackageTaskFactory(snap.NewCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, \"snap\"),\n\t\tnewSimplePackageTaskFactory(ai.NewGGUFCataloger, pkgcataloging.DirectoryTag, pkgcataloging.ImageTag, \"ai\", \"model\", \"gguf\", \"ml\"),\n\n\t\t// deprecated catalogers ////////////////////////////////////////\n\t\t// these are catalogers that should not be selectable other than specific inclusion via name or \"deprecated\" tag (to remain backwards compatible)\n\t\tnewSimplePackageTaskFactory(dotnet.NewDotnetDepsCataloger, pkgcataloging.DeprecatedTag),               //nolint:staticcheck // TODO: remove in syft v2.0\n\t\tnewSimplePackageTaskFactory(dotnet.NewDotnetPortableExecutableCataloger, pkgcataloging.DeprecatedTag), //nolint:staticcheck // TODO: remove in syft v2.0\n\t\tnewSimplePackageTaskFactory(php.NewPeclCataloger, pkgcataloging.DeprecatedTag),                        //nolint:staticcheck // TODO: remove in syft v2.0\n\t\tnewSimplePackageTaskFactory(nix.NewStoreCataloger, pkgcataloging.DeprecatedTag),                       //nolint:staticcheck // TODO: remove in syft v2.0\n\t}\n}\n"
  },
  {
    "path": "internal/task/relationship_tasks.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/relationship/binary\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar _ artifact.Identifiable = (*sourceIdentifierAdapter)(nil)\n\ntype sourceIdentifierAdapter struct {\n\tdesc source.Description\n}\n\nfunc (s sourceIdentifierAdapter) ID() artifact.ID {\n\treturn artifact.ID(s.desc.ID)\n}\n\nfunc NewRelationshipsTask(cfg cataloging.RelationshipsConfig, src source.Description) Task {\n\tfn := func(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\t\tfinalizeRelationships(\n\t\t\tresolver,\n\t\t\tbuilder,\n\t\t\tcfg,\n\t\t\t&sourceIdentifierAdapter{desc: src})\n\n\t\treturn nil\n\t}\n\n\treturn NewTask(\"relationships-cataloger\", fn)\n}\n\nfunc finalizeRelationships(resolver file.Resolver, builder sbomsync.Builder, cfg cataloging.RelationshipsConfig, src artifact.Identifiable) {\n\taccessor := builder.(sbomsync.Accessor)\n\n\t// remove ELF packages and Binary packages that are already\n\t// represented by a source package (e.g. a package that is evident by some package manager)\n\tbuilder.DeletePackages(binary.PackagesToRemove(accessor)...)\n\n\t// add relationships showing packages that are evident by a file which is owned by another package (package-to-package)\n\tif cfg.PackageFileOwnershipOverlap {\n\t\trelationship.ByFileOwnershipOverlapWorker(resolver, accessor)\n\t}\n\n\t// conditionally remove binary packages based on file ownership overlap relationships found\n\t// https://github.com/anchore/syft/issues/931\n\tif cfg.ExcludeBinaryPackagesWithFileOwnershipOverlap {\n\t\trelationship.ExcludeBinariesByFileOwnershipOverlap(accessor)\n\t}\n\n\t// add the new relationships for executables to the SBOM\n\tnewBinaryRelationships := binary.NewDependencyRelationships(resolver, accessor)\n\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\ts.Relationships = append(s.Relationships, newBinaryRelationships...)\n\t})\n\tbuilder.AddRelationships(newBinaryRelationships...)\n\t// add source \"contains package\" relationship (source-to-package)\n\tvar sourceRelationships []artifact.Relationship\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\tsourceRelationships = relationship.ToSource(src, s.Artifacts.Packages)\n\t})\n\tbuilder.AddRelationships(sourceRelationships...)\n\n\t// add evident-by relationships (package-to-file)\n\tvar evidentByRelationships []artifact.Relationship\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\tevidentByRelationships = relationship.EvidentBy(s.Artifacts.Packages)\n\t})\n\n\tbuilder.AddRelationships(evidentByRelationships...)\n}\n"
  },
  {
    "path": "internal/task/scope_tasks.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc NewDeepSquashedScopeCleanupTask() Task {\n\tfn := func(_ context.Context, _ file.Resolver, builder sbomsync.Builder) error {\n\t\taccessor := builder.(sbomsync.Accessor)\n\n\t\t// remove all packages that doesn't exist in the final state of the image\n\t\tbuilder.DeletePackages(packagesToRemove(accessor)...)\n\t\treturn nil\n\t}\n\n\treturn NewTask(\"deep-squashed-cleaner\", fn)\n}\n\nfunc packagesToRemove(accessor sbomsync.Accessor) []artifact.ID {\n\tpkgsToDelete := make([]artifact.ID, 0)\n\taccessor.ReadFromSBOM(func(s *sbom.SBOM) {\n\t\tfilterDuplicates := make(map[string]bool)\n\t\tfor p := range s.Artifacts.Packages.Enumerate() {\n\t\t\tnoSquashed := true\n\t\t\tnoPrimary := true\n\t\t\tfor _, l := range p.Locations.ToSlice() {\n\t\t\t\tisPrimaryEvidence := l.Annotations[pkg.EvidenceAnnotationKey] == pkg.PrimaryEvidenceAnnotation\n\t\t\t\tswitch l.Annotations[file.VisibleAnnotationKey] {\n\t\t\t\tcase file.VisibleAnnotation:\n\t\t\t\t\tif isPrimaryEvidence || p.Type == pkg.BinaryPkg {\n\t\t\t\t\t\tnoSquashed = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\tcase \"\":\n\t\t\t\t\tif isPrimaryEvidence {\n\t\t\t\t\t\tif exists := filterDuplicates[getKey(p, l)]; exists {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfilterDuplicates[getKey(p, l)] = true\n\t\t\t\t\t\tnoPrimary = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif noSquashed && noPrimary {\n\t\t\t\tpkgsToDelete = append(pkgsToDelete, p.ID())\n\t\t\t}\n\t\t}\n\t})\n\treturn pkgsToDelete\n}\n\nfunc getKey(pkg pkg.Package, loc file.Location) string {\n\treturn fmt.Sprintf(\"%s-%s-%s-%s\", pkg.Name, pkg.Version, loc.RealPath, loc.AccessPath)\n}\n"
  },
  {
    "path": "internal/task/selection.go",
    "content": "package task\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n)\n\n// Selection represents the users request for a subset of tasks to run and the resulting set of task names that were\n// selected. Additionally, all tokens that were matched on to reach the returned conclusion are also provided.\ntype Selection struct {\n\tRequest      cataloging.SelectionRequest\n\tResult       *strset.Set\n\tTokensByTask map[string]TokenSelection\n}\n\n// TokenSelection represents the tokens that were matched on to either include or exclude a given task (based on expression evaluation).\ntype TokenSelection struct {\n\tSelectedOn   *strset.Set\n\tDeselectedOn *strset.Set\n}\n\nfunc newTokenSelection(selected, deselected []string) TokenSelection {\n\treturn TokenSelection{\n\t\tSelectedOn:   strset.New(selected...),\n\t\tDeselectedOn: strset.New(deselected...),\n\t}\n}\n\nfunc (ts *TokenSelection) merge(other ...TokenSelection) {\n\tfor _, o := range other {\n\t\tif ts.SelectedOn != nil {\n\t\t\tts.SelectedOn.Add(o.SelectedOn.List()...)\n\t\t}\n\t\tif ts.DeselectedOn != nil {\n\t\t\tts.DeselectedOn.Add(o.DeselectedOn.List()...)\n\t\t}\n\t}\n}\n\nfunc newSelection() Selection {\n\treturn Selection{\n\t\tResult:       strset.New(),\n\t\tTokensByTask: make(map[string]TokenSelection),\n\t}\n}\n\n// Select parses the given expressions as two sets: expressions that represent a \"set\" operation, and expressions that\n// represent all other operations. The parsed expressions are then evaluated against the given tasks to return\n// a subset (or the same) set of tasks.\nfunc Select(allTasks []Task, selectionRequest cataloging.SelectionRequest) ([]Task, Selection, error) {\n\tensureDefaultSelectionHasFiles(&selectionRequest, allTasks)\n\n\treturn _select(allTasks, selectionRequest)\n}\n\nfunc _select(allTasks []Task, selectionRequest cataloging.SelectionRequest) ([]Task, Selection, error) {\n\tif selectionRequest.IsEmpty() {\n\t\tselection := newSelection()\n\t\tselection.Request = selectionRequest\n\t\treturn nil, selection, nil\n\t}\n\tnodes := newExpressionsFromSelectionRequest(newExpressionContext(allTasks), selectionRequest)\n\n\tfinalTasks, selection := selectByExpressions(allTasks, nodes)\n\n\tselection.Request = selectionRequest\n\n\treturn finalTasks, selection, nodes.Validate()\n}\n\n// ensureDefaultSelectionHasFiles ensures that the default selection request has the \"file\" tag, as this is a required\n// for backwards compatibility (when catalogers were only for packages and not for separate groups of tasks).\nfunc ensureDefaultSelectionHasFiles(selectionRequest *cataloging.SelectionRequest, allTasks ...[]Task) {\n\tfor _, ts := range allTasks {\n\t\t_, leftOver := tagsOrNamesThatTaskGroupRespondsTo(ts, strset.New(filecataloging.FileTag))\n\t\tif leftOver.Has(filecataloging.FileTag) {\n\t\t\t// the given set of tasks do not respond to file, so don't include it in the default selection\n\t\t\tcontinue\n\t\t}\n\n\t\tdefaultNamesOrTags := strset.New(selectionRequest.DefaultNamesOrTags...)\n\t\tremovals := strset.New(selectionRequest.RemoveNamesOrTags...)\n\t\tmissingFileIshTag := !defaultNamesOrTags.Has(filecataloging.FileTag) && !defaultNamesOrTags.Has(\"all\") && !defaultNamesOrTags.Has(\"default\")\n\t\tif missingFileIshTag && !removals.Has(filecataloging.FileTag) {\n\t\t\tlog.Warnf(\"adding '%s' tag to the default cataloger selection, to override add '-%s' to the cataloger selection request\", filecataloging.FileTag, filecataloging.FileTag)\n\t\t\tselectionRequest.DefaultNamesOrTags = append(selectionRequest.DefaultNamesOrTags, filecataloging.FileTag)\n\t\t}\n\t}\n}\n\n// SelectInGroups is a convenience function that allows for selecting tasks from multiple groups of tasks. The original\n// request is split into sub-requests, where only tokens that are relevant to the given group of tasks are considered.\n// If tokens are passed that are not relevant to any group of tasks, an error is returned.\nfunc SelectInGroups(taskGroups [][]Task, selectionRequest cataloging.SelectionRequest) ([][]Task, Selection, error) {\n\tensureDefaultSelectionHasFiles(&selectionRequest, taskGroups...)\n\n\treqs, errs := splitCatalogerSelectionRequest(selectionRequest, taskGroups)\n\tif errs != nil {\n\t\treturn nil, Selection{\n\t\t\tRequest: selectionRequest,\n\t\t}, errs\n\t}\n\n\tvar finalTasks [][]Task\n\tvar selections []Selection\n\tfor idx, req := range reqs {\n\t\ttskGroup := taskGroups[idx]\n\t\tsubFinalTasks, subSelection, err := _select(tskGroup, req)\n\t\tif err != nil {\n\t\t\treturn nil, Selection{\n\t\t\t\tRequest: selectionRequest,\n\t\t\t}, err\n\t\t}\n\t\tfinalTasks = append(finalTasks, subFinalTasks)\n\t\tselections = append(selections, subSelection)\n\t}\n\n\treturn finalTasks, mergeSelections(selections, selectionRequest), nil\n}\n\nfunc mergeSelections(selections []Selection, ogRequest cataloging.SelectionRequest) Selection {\n\tfinalSelection := newSelection()\n\tfor _, s := range selections {\n\t\tfinalSelection.Result.Add(s.Result.List()...)\n\t\tfor name, tokenSelection := range s.TokensByTask {\n\t\t\tif existing, exists := finalSelection.TokensByTask[name]; exists {\n\t\t\t\texisting.merge(tokenSelection)\n\t\t\t\tfinalSelection.TokensByTask[name] = existing\n\t\t\t} else {\n\t\t\t\tfinalSelection.TokensByTask[name] = tokenSelection\n\t\t\t}\n\t\t}\n\t}\n\tfinalSelection.Request = ogRequest\n\treturn finalSelection\n}\n\nfunc splitCatalogerSelectionRequest(req cataloging.SelectionRequest, selectablePkgTaskGroups [][]Task) ([]cataloging.SelectionRequest, error) {\n\trequestTagsOrNames := allRequestReferences(req)\n\tleftoverTags := strset.New()\n\tusedTagsAndNames := strset.New()\n\tvar usedTagGroups []*strset.Set\n\tfor _, taskGroup := range selectablePkgTaskGroups {\n\t\tselectedTagOrNames, remainingTagsOrNames := tagsOrNamesThatTaskGroupRespondsTo(taskGroup, requestTagsOrNames)\n\t\tleftoverTags = strset.Union(leftoverTags, remainingTagsOrNames)\n\t\tusedTagGroups = append(usedTagGroups, selectedTagOrNames)\n\t\tusedTagsAndNames.Add(selectedTagOrNames.List()...)\n\t}\n\n\tleftoverTags = strset.Difference(leftoverTags, usedTagsAndNames)\n\tleftoverTags.Remove(\"all\")\n\n\tif leftoverTags.Size() > 0 {\n\t\tl := leftoverTags.List()\n\t\tsort.Strings(l)\n\t\treturn nil, fmt.Errorf(\"no cataloger tasks respond to the following selections: %v\", strings.Join(l, \", \"))\n\t}\n\n\tvar newSelections []cataloging.SelectionRequest\n\tfor _, tags := range usedTagGroups {\n\t\tnewSelections = append(newSelections, newSelectionWithTags(req, tags))\n\t}\n\n\treturn newSelections, nil\n}\n\nfunc newSelectionWithTags(req cataloging.SelectionRequest, tags *strset.Set) cataloging.SelectionRequest {\n\treturn cataloging.SelectionRequest{\n\t\tDefaultNamesOrTags: filterTags(req.DefaultNamesOrTags, tags),\n\t\tSubSelectTags:      filterTags(req.SubSelectTags, tags),\n\t\tAddNames:           filterTags(req.AddNames, tags),\n\t\tRemoveNamesOrTags:  filterTags(req.RemoveNamesOrTags, tags),\n\t}\n}\n\nfunc filterTags(reqTags []string, filterTags *strset.Set) []string {\n\tvar filtered []string\n\tfor _, tag := range reqTags {\n\t\tif filterTags.Has(tag) {\n\t\t\tfiltered = append(filtered, tag)\n\t\t}\n\t}\n\treturn filtered\n}\n\nfunc tagsOrNamesThatTaskGroupRespondsTo(tasks []Task, requestTagsOrNames *strset.Set) (*strset.Set, *strset.Set) {\n\tpositiveRefs := strset.New()\n\tfor _, t := range tasks {\n\t\tif sel, ok := t.(Selector); ok {\n\t\t\tpositiveRefs.Add(\"all\") // everything responds to \"all\"\n\t\t\tpositiveRefs.Add(strset.Intersection(requestTagsOrNames, strset.New(sel.Selectors()...)).List()...)\n\t\t}\n\t\tpositiveRefs.Add(t.Name())\n\t}\n\treturn positiveRefs, strset.Difference(requestTagsOrNames, positiveRefs)\n}\n\nfunc allRequestReferences(s cataloging.SelectionRequest) *strset.Set {\n\tst := strset.New()\n\tst.Add(s.DefaultNamesOrTags...)\n\tst.Add(s.SubSelectTags...)\n\tst.Add(s.AddNames...)\n\tst.Add(s.RemoveNamesOrTags...)\n\treturn st\n}\n\n// selectByExpressions the set of tasks to run based on the given expression(s).\nfunc selectByExpressions(ts tasks, nodes Expressions) (tasks, Selection) {\n\tif len(nodes) == 0 {\n\t\treturn ts, newSelection()\n\t}\n\n\tfinalSet := newSet()\n\tselectionSet := newSet()\n\taddSet := newSet()\n\tremoveSet := newSet()\n\n\tallSelections := make(map[string]TokenSelection)\n\n\tnodes = nodes.Clone()\n\tsort.Sort(nodes)\n\n\tfor i, node := range nodes {\n\t\tif len(node.Errors) > 0 {\n\t\t\tcontinue\n\t\t}\n\t\tselectedTasks, selections := evaluateExpression(ts, node)\n\n\t\tfor name, ss := range selections {\n\t\t\tif selection, exists := allSelections[name]; exists {\n\t\t\t\tss.merge(selection)\n\t\t\t}\n\t\t\tallSelections[name] = ss\n\t\t}\n\n\t\tif len(selectedTasks) == 0 {\n\t\t\tlog.WithFields(\"selection\", fmt.Sprintf(\"%q\", node.String())).Warn(\"no cataloger tasks selected found for given selection (this might be a misconfiguration)\")\n\t\t}\n\n\t\tswitch node.Operation {\n\t\tcase SetOperation:\n\t\t\tfinalSet.Add(selectedTasks...)\n\t\tcase AddOperation, \"\":\n\t\t\taddSet.Add(selectedTasks...)\n\t\tcase RemoveOperation:\n\t\t\tremoveSet.Add(selectedTasks...)\n\t\tcase SubSelectOperation:\n\t\t\tselectionSet.Add(selectedTasks...)\n\t\tdefault:\n\t\t\tnodes[i].Errors = append(nodes[i].Errors, ErrInvalidOperator)\n\t\t}\n\t}\n\n\tif len(selectionSet.tasks) > 0 {\n\t\tfinalSet.Intersect(selectionSet.Tasks()...)\n\t}\n\tfinalSet.Remove(removeSet.Tasks()...)\n\tfinalSet.Add(addSet.Tasks()...)\n\n\tfinalTasks := finalSet.Tasks()\n\n\treturn finalTasks, Selection{\n\t\tResult:       strset.New(finalTasks.Names()...),\n\t\tTokensByTask: allSelections,\n\t}\n}\n\n// evaluateExpression returns the set of tasks that match the given expression (as well as all tokens that were matched\n// on to reach the returned conclusion).\nfunc evaluateExpression(ts tasks, node Expression) ([]Task, map[string]TokenSelection) {\n\tselection := make(map[string]TokenSelection)\n\tvar finalTasks []Task\n\n\tfor _, t := range ts {\n\t\tif !isSelected(t, node.Operand) {\n\t\t\tcontinue\n\t\t}\n\n\t\ts := newTokenSelection(nil, nil)\n\n\t\tswitch node.Operation {\n\t\tcase SetOperation, SubSelectOperation, AddOperation:\n\t\t\ts.SelectedOn.Add(node.Operand)\n\t\tcase RemoveOperation:\n\t\t\ts.DeselectedOn.Add(node.Operand)\n\t\t}\n\n\t\tfinalTasks = append(finalTasks, t)\n\n\t\tif og, exists := selection[t.Name()]; exists {\n\t\t\ts.merge(og)\n\t\t}\n\n\t\tselection[t.Name()] = s\n\t}\n\treturn finalTasks, selection\n}\n\n// isSelected returns true if the given task matches the given token. If the token is \"all\" then the task is always selected.\nfunc isSelected(td Task, token string) bool {\n\tif token == \"all\" {\n\t\treturn true\n\t}\n\n\tif ts, ok := td.(Selector); ok {\n\t\t// use the selector to verify all tags\n\t\tif ts.HasAllSelectors(token) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\t// only do exact name matching\n\tif td.Name() == token {\n\t\treturn true\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "internal/task/selection_test.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc dummyTask(name string, tags ...string) Task {\n\treturn NewTask(name, func(ctx context.Context, resolver file.Resolver, sbom sbomsync.Builder) error {\n\t\tpanic(\"not implemented\")\n\t}, tags...)\n}\n\n// note: this test fixture does not need to be kept up to date here, but makes a great test subject\nfunc createDummyPackageTasks() tasks {\n\treturn []Task{\n\t\t// OS package installed catalogers\n\t\tdummyTask(\"alpm-db-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"os\", \"alpm\", \"archlinux\"),\n\t\tdummyTask(\"apk-db-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"os\", \"apk\", \"alpine\"),\n\t\tdummyTask(\"dpkg-db-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"os\", \"dpkg\", \"debian\"),\n\t\tdummyTask(\"portage-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"os\", \"portage\", \"gentoo\"),\n\t\tdummyTask(\"rpm-db-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"os\", \"rpm\", \"redhat\"),\n\n\t\t// OS package declared catalogers\n\t\tdummyTask(\"rpm-archive-cataloger\", \"package\", \"declared\", \"directory\", \"os\", \"rpm\", \"redhat\"),\n\n\t\t// language-specific package installed catalogers\n\t\tdummyTask(\"conan-info-cataloger\", \"package\", \"installed\", \"image\", \"language\", \"cpp\", \"conan\"),\n\t\tdummyTask(\"javascript-package-cataloger\", \"package\", \"installed\", \"image\", \"language\", \"javascript\", \"node\"),\n\t\tdummyTask(\"php-composer-installed-cataloger\", \"package\", \"installed\", \"image\", \"language\", \"php\", \"composer\"),\n\t\tdummyTask(\"ruby-installed-gemspec-cataloger\", \"package\", \"installed\", \"image\", \"language\", \"ruby\", \"gem\", \"gemspec\"),\n\t\tdummyTask(\"rust-cargo-lock-cataloger\", \"package\", \"installed\", \"image\", \"language\", \"rust\", \"binary\"),\n\n\t\t// language-specific package declared catalogers\n\t\tdummyTask(\"conan-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"cpp\", \"conan\"),\n\t\tdummyTask(\"dart-pubspec-lock-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"dart\"),\n\t\tdummyTask(\"dotnet-deps-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"dotnet\", \"c#\"),\n\t\tdummyTask(\"elixir-mix-lock-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"elixir\"),\n\t\tdummyTask(\"erlang-rebar-lock-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"erlang\"),\n\t\tdummyTask(\"javascript-lock-cataloger\", \"package\", \"declared\", \"directory\", \"language\", \"javascript\", \"node\", \"npm\"),\n\n\t\t// language-specific package for both image and directory scans (but not necessarily declared)\n\t\tdummyTask(\"dotnet-portable-executable-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"language\", \"dotnet\", \"c#\"),\n\t\tdummyTask(\"python-installed-package-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"language\", \"python\"),\n\t\tdummyTask(\"go-module-binary-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"language\", \"go\", \"golang\", \"gomod\", \"binary\"),\n\t\tdummyTask(\"java-archive-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"language\", \"java\", \"maven\"),\n\t\tdummyTask(\"graalvm-native-image-cataloger\", \"package\", \"directory\", \"installed\", \"image\", \"language\", \"java\"),\n\n\t\t// other package catalogers\n\t\tdummyTask(\"binary-cataloger\", \"package\", \"declared\", \"directory\", \"image\", \"binary\"),\n\t\tdummyTask(\"github-actions-usage-cataloger\", \"package\", \"declared\", \"directory\", \"github\", \"github-actions\"),\n\t\tdummyTask(\"github-action-workflow-usage-cataloger\", \"package\", \"declared\", \"directory\", \"github\", \"github-actions\"),\n\t\tdummyTask(\"sbom-cataloger\", \"package\", \"declared\", \"directory\", \"image\", \"sbom\"),\n\t}\n}\n\nfunc createDummyFileTasks() tasks {\n\treturn []Task{\n\t\tdummyTask(\"file-content-cataloger\", \"file\", \"content\"),\n\t\tdummyTask(\"file-metadata-cataloger\", \"file\", \"metadata\"),\n\t\tdummyTask(\"file-digest-cataloger\", \"file\", \"digest\"),\n\t\tdummyTask(\"file-executable-cataloger\", \"file\", \"binary-metadata\"),\n\t}\n}\n\nfunc TestSelect(t *testing.T) {\n\n\ttests := []struct {\n\t\tname        string\n\t\tallTasks    []Task\n\t\tbasis       []string\n\t\texpressions []string\n\t\twantNames   []string\n\t\twantTokens  map[string]TokenSelection\n\t\twantRequest cataloging.SelectionRequest\n\t\twantErr     assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:        \"empty input\",\n\t\t\tallTasks:    []Task{},\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{},\n\t\t\twantNames:   []string{},\n\t\t\twantTokens:  map[string]TokenSelection{},\n\t\t\twantRequest: cataloging.SelectionRequest{},\n\t\t},\n\t\t{\n\t\t\tname:     \"use default tasks\",\n\t\t\tallTasks: createDummyPackageTasks(),\n\t\t\tbasis: []string{\n\t\t\t\t\"image\",\n\t\t\t},\n\t\t\texpressions: []string{},\n\t\t\twantNames: []string{\n\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\"dpkg-db-cataloger\",\n\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\"conan-info-cataloger\",\n\t\t\t\t\"javascript-package-cataloger\",\n\t\t\t\t\"php-composer-installed-cataloger\",\n\t\t\t\t\"ruby-installed-gemspec-cataloger\",\n\t\t\t\t\"rust-cargo-lock-cataloger\",\n\t\t\t\t\"dotnet-portable-executable-cataloger\",\n\t\t\t\t\"python-installed-package-cataloger\",\n\t\t\t\t\"go-module-binary-cataloger\",\n\t\t\t\t\"java-archive-cataloger\",\n\t\t\t\t\"graalvm-native-image-cataloger\",\n\t\t\t\t\"binary-cataloger\",\n\t\t\t\t\"sbom-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t\"alpm-db-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"portage-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"select, add, and remove tasks\",\n\t\t\tallTasks: createDummyPackageTasks(),\n\t\t\tbasis: []string{\n\t\t\t\t\"image\",\n\t\t\t},\n\t\t\texpressions: []string{\n\t\t\t\t\"+github-actions-usage-cataloger\",\n\t\t\t\t\"-dpkg\",\n\t\t\t\t\"os\",\n\t\t\t},\n\t\t\twantNames: []string{\n\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\"github-actions-usage-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// selected\n\t\t\t\t\"alpm-db-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":               newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, []string{\"dpkg\"}),\n\t\t\t\t\"portage-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":               newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"github-actions-usage-cataloger\": newTokenSelection([]string{\"github-actions-usage-cataloger\"}, nil),\n\n\t\t\t\t// ultimately not selected\n\t\t\t\t\"rpm-archive-cataloger\":                newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\"},\n\t\t\t\tSubSelectTags:      []string{\"os\"},\n\t\t\t\tRemoveNamesOrTags:  []string{\"dpkg\"},\n\t\t\t\tAddNames:           []string{\"github-actions-usage-cataloger\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"allow for partial selections\",\n\t\t\tallTasks: createDummyPackageTasks(),\n\t\t\tbasis: []string{\n\t\t\t\t\"image\",\n\t\t\t},\n\t\t\texpressions: []string{\n\t\t\t\t// valid...\n\t\t\t\t\"+github-actions-usage-cataloger\",\n\t\t\t\t\"-dpkg\",\n\t\t\t\t\"os\",\n\t\t\t\t// invalid...\n\t\t\t\t\"+python\",\n\t\t\t\t\"rust-cargo-lock-cataloger\",\n\t\t\t},\n\t\t\twantNames: []string{\n\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\"github-actions-usage-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// selected\n\t\t\t\t\"alpm-db-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":               newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, []string{\"dpkg\"}),\n\t\t\t\t\"portage-cataloger\":              newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":               newTokenSelection([]string{\"image\", \"os\"}, nil),\n\t\t\t\t\"github-actions-usage-cataloger\": newTokenSelection([]string{\"github-actions-usage-cataloger\"}, nil),\n\n\t\t\t\t// ultimately not selected\n\t\t\t\t\"rpm-archive-cataloger\":                newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil), // note: there is no python token used for selection\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\"},\n\t\t\t\tSubSelectTags:      []string{\"os\", \"rust-cargo-lock-cataloger\"},\n\t\t\t\tRemoveNamesOrTags:  []string{\"dpkg\"},\n\t\t\t\tAddNames:           []string{\"github-actions-usage-cataloger\", \"python\"},\n\t\t\t},\n\t\t\twantErr: assert.Error, // !important!\n\t\t},\n\t\t{\n\t\t\tname:     \"select all tasks\",\n\t\t\tallTasks: createDummyPackageTasks(),\n\t\t\tbasis: []string{\n\t\t\t\t\"all\",\n\t\t\t},\n\t\t\texpressions: []string{},\n\t\t\twantNames: []string{\n\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\"dpkg-db-cataloger\",\n\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\"rpm-archive-cataloger\",\n\t\t\t\t\"conan-info-cataloger\",\n\t\t\t\t\"javascript-package-cataloger\",\n\t\t\t\t\"php-composer-installed-cataloger\",\n\t\t\t\t\"ruby-installed-gemspec-cataloger\",\n\t\t\t\t\"rust-cargo-lock-cataloger\",\n\t\t\t\t\"conan-cataloger\",\n\t\t\t\t\"dart-pubspec-lock-cataloger\",\n\t\t\t\t\"dotnet-deps-cataloger\",\n\t\t\t\t\"elixir-mix-lock-cataloger\",\n\t\t\t\t\"erlang-rebar-lock-cataloger\",\n\t\t\t\t\"javascript-lock-cataloger\",\n\t\t\t\t\"dotnet-portable-executable-cataloger\",\n\t\t\t\t\"python-installed-package-cataloger\",\n\t\t\t\t\"go-module-binary-cataloger\",\n\t\t\t\t\"java-archive-cataloger\",\n\t\t\t\t\"graalvm-native-image-cataloger\",\n\t\t\t\t\"binary-cataloger\",\n\t\t\t\t\"github-actions-usage-cataloger\",\n\t\t\t\t\"github-action-workflow-usage-cataloger\",\n\t\t\t\t\"sbom-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t\"alpm-db-cataloger\":                      newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":                       newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":                      newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"portage-cataloger\":                      newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":                       newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"rpm-archive-cataloger\":                  newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                   newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":           newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":       newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":       newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":              newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"conan-cataloger\":                        newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"dart-pubspec-lock-cataloger\":            newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"dotnet-deps-cataloger\":                  newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"elixir-mix-lock-cataloger\":              newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"erlang-rebar-lock-cataloger\":            newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"javascript-lock-cataloger\":              newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\":   newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":     newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":             newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":                 newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":         newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"binary-cataloger\":                       newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"github-actions-usage-cataloger\":         newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"github-action-workflow-usage-cataloger\": newTokenSelection([]string{\"all\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                         newTokenSelection([]string{\"all\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"all\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"set default with multiple tags\",\n\t\t\tallTasks: createDummyPackageTasks(),\n\t\t\tbasis: []string{\n\t\t\t\t\"gemspec\",\n\t\t\t\t\"python\",\n\t\t\t},\n\t\t\texpressions: []string{},\n\t\t\twantNames: []string{\n\t\t\t\t\"ruby-installed-gemspec-cataloger\",\n\t\t\t\t\"python-installed-package-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":   newTokenSelection([]string{\"gemspec\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\": newTokenSelection([]string{\"python\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"gemspec\", \"python\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"automatically add file to default tags\",\n\t\t\tallTasks:    createDummyFileTasks(),\n\t\t\tbasis:       []string{},\n\t\t\texpressions: []string{},\n\t\t\twantNames: []string{\n\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\"file-metadata-cataloger\",\n\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t\"file-executable-cataloger\",\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"file\"},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\n\t\t\treq := cataloging.NewSelectionRequest().WithDefaults(tt.basis...).WithExpression(tt.expressions...)\n\n\t\t\tgot, gotEvidence, err := Select(tt.allTasks, req)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\t// dev note: this is useful for debugging when needed...\n\t\t\t\t//for _, e := range gotEvidence.Request.Expressions {\n\t\t\t\t//\tt.Logf(\"expression (errors %q): %#v\", e.Errors, e)\n\t\t\t\t//}\n\n\t\t\t\t// note: we DON'T bail early in validations... this is because we should always return the full set of\n\t\t\t\t// of selected tasks and surrounding evidence.\n\t\t\t}\n\n\t\t\tgotNames := make([]string, 0)\n\t\t\tfor _, g := range got {\n\t\t\t\tgotNames = append(gotNames, g.Name())\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.wantNames, gotNames)\n\n\t\t\t// names in selection should match all tasks returned\n\t\t\trequire.Len(t, tt.wantNames, gotEvidence.Result.Size(), \"selected tasks should match all tasks returned (but does not)\")\n\t\t\tassert.ElementsMatch(t, tt.wantNames, gotEvidence.Result.List(), \"selected tasks should match all tasks returned (but does not)\")\n\n\t\t\tsetCompare := cmp.Comparer(func(x, y *strset.Set) bool {\n\t\t\t\treturn x.IsEqual(y)\n\t\t\t})\n\n\t\t\tif d := cmp.Diff(tt.wantTokens, gotEvidence.TokensByTask, setCompare); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected tokens by task (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t\tassert.Equal(t, tt.wantRequest, gotEvidence.Request)\n\n\t\t})\n\t}\n}\n\nfunc TestSelectInGroups(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\ttaskGroups   [][]Task\n\t\tselectionReq cataloging.SelectionRequest\n\t\twantGroups   [][]string\n\t\twantTokens   map[string]TokenSelection\n\t\twantRequest  cataloging.SelectionRequest\n\t\twantErr      assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"select only within the file tasks (leave package tasks alone)\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(\"image\"). // note: file missing\n\t\t\t\tWithSubSelections(\"content\", \"digest\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t{\n\t\t\t\t\t// this is the original, untouched package task list\n\t\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\t\"dpkg-db-cataloger\",\n\t\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\t\"conan-info-cataloger\",\n\t\t\t\t\t\"javascript-package-cataloger\",\n\t\t\t\t\t\"php-composer-installed-cataloger\",\n\t\t\t\t\t\"ruby-installed-gemspec-cataloger\",\n\t\t\t\t\t\"rust-cargo-lock-cataloger\",\n\t\t\t\t\t\"dotnet-portable-executable-cataloger\",\n\t\t\t\t\t\"python-installed-package-cataloger\",\n\t\t\t\t\t\"go-module-binary-cataloger\",\n\t\t\t\t\t\"java-archive-cataloger\",\n\t\t\t\t\t\"graalvm-native-image-cataloger\",\n\t\t\t\t\t\"binary-cataloger\",\n\t\t\t\t\t\"sbom-cataloger\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// this has been filtered based on the request\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// packages\n\t\t\t\t\"alpm-db-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"portage-cataloger\":                    newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t// files\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"content\", \"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"digest\", \"file\"}, nil),\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"}, // note: file automatically added\n\t\t\t\tSubSelectTags:      []string{\"content\", \"digest\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select package tasks (leave file tasks alone)\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().WithDefaults(\"image\").WithSubSelections(\"os\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t{\n\t\t\t\t\t// filtered based on the request\n\t\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\t\"dpkg-db-cataloger\",\n\t\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// this is the original, untouched file task list\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-metadata-cataloger\",\n\t\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t\t\"file-executable-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// packages - os\n\t\t\t\t\"alpm-db-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":      newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"rpm-archive-cataloger\": newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":      newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"portage-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t// packages - remaining\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t// files\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\tSubSelectTags:      []string{\"os\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select only file tasks (default)\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().WithDefaults(\"file\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t// filtered based on the request\n\t\t\t\tnil,\n\t\t\t\t{\n\t\t\t\t\t// this is the original, untouched file task list\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-metadata-cataloger\",\n\t\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t\t\"file-executable-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// files\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"file\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select only file tasks (via removal of package)\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().WithDefaults(\"file\", \"image\").WithRemovals(\"package\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t// filtered based on the request\n\t\t\t\tnil,\n\t\t\t\t{\n\t\t\t\t\t// this is the original, untouched file task list\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-metadata-cataloger\",\n\t\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t\t\"file-executable-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// packages\n\t\t\t\t\"alpm-db-cataloger\":                      newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"apk-db-cataloger\":                       newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"binary-cataloger\":                       newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"conan-info-cataloger\":                   newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"dotnet-portable-executable-cataloger\":   newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"dpkg-db-cataloger\":                      newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"go-module-binary-cataloger\":             newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"graalvm-native-image-cataloger\":         newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"java-archive-cataloger\":                 newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"javascript-package-cataloger\":           newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"php-composer-installed-cataloger\":       newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"portage-cataloger\":                      newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"python-installed-package-cataloger\":     newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"rpm-db-cataloger\":                       newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":       newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"rust-cargo-lock-cataloger\":              newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"sbom-cataloger\":                         newTokenSelection([]string{\"image\"}, []string{\"package\"}),\n\t\t\t\t\"rpm-archive-cataloger\":                  newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"conan-cataloger\":                        newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"dart-pubspec-lock-cataloger\":            newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"dotnet-deps-cataloger\":                  newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"elixir-mix-lock-cataloger\":              newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"erlang-rebar-lock-cataloger\":            newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"javascript-lock-cataloger\":              newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"github-actions-usage-cataloger\":         newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t\"github-action-workflow-usage-cataloger\": newTokenSelection(nil, []string{\"package\"}),\n\t\t\t\t// files\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"file\", \"image\"},\n\t\t\t\tRemoveNamesOrTags:  []string{\"package\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select file and package tasks\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(\"image\").\n\t\t\t\tWithSubSelections(\"os\", \"content\", \"digest\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t{\n\t\t\t\t\t// filtered based on the request\n\t\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\t\"dpkg-db-cataloger\",\n\t\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// filtered based on the request\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-digest-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// packages - os\n\t\t\t\t\"alpm-db-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":      newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"rpm-archive-cataloger\": newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"rpm-db-cataloger\":      newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"portage-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":     newTokenSelection([]string{\"os\", \"image\"}, nil),\n\t\t\t\t// packages - remaining\n\t\t\t\t\"binary-cataloger\":                     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"conan-info-cataloger\":                 newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"dotnet-portable-executable-cataloger\": newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"go-module-binary-cataloger\":           newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"graalvm-native-image-cataloger\":       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"java-archive-cataloger\":               newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"javascript-package-cataloger\":         newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"php-composer-installed-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"python-installed-package-cataloger\":   newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"ruby-installed-gemspec-cataloger\":     newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"rust-cargo-lock-cataloger\":            newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t\"sbom-cataloger\":                       newTokenSelection([]string{\"image\"}, nil),\n\t\t\t\t// files\n\t\t\t\t\"file-content-cataloger\":    newTokenSelection([]string{\"file\", \"content\"}, nil), // note extra tags\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\", \"digest\"}, nil),  // note extra tags\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\":   newTokenSelection([]string{\"file\"}, nil),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\tSubSelectTags:      []string{\"os\", \"content\", \"digest\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"complex selection with multiple operators across groups\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().\n\t\t\t\tWithDefaults(\"os\"). // note: no file tag present\n\t\t\t\tWithExpression(\"+github-actions-usage-cataloger\", \"-dpkg\", \"-digest\", \"content\", \"+file-metadata-cataloger\", \"-declared\"),\n\t\t\twantGroups: [][]string{\n\t\t\t\t{\n\t\t\t\t\t\"alpm-db-cataloger\",\n\t\t\t\t\t\"apk-db-cataloger\",\n\t\t\t\t\t\"portage-cataloger\",\n\t\t\t\t\t\"rpm-db-cataloger\",\n\t\t\t\t\t\"github-actions-usage-cataloger\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"file-content-cataloger\",\n\t\t\t\t\t\"file-metadata-cataloger\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantTokens: map[string]TokenSelection{\n\t\t\t\t// selected package tasks\n\t\t\t\t\"alpm-db-cataloger\":              newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"apk-db-cataloger\":               newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"dpkg-db-cataloger\":              newTokenSelection([]string{\"os\"}, []string{\"dpkg\"}),\n\t\t\t\t\"portage-cataloger\":              newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"rpm-archive-cataloger\":          newTokenSelection([]string{\"os\"}, []string{\"declared\"}),\n\t\t\t\t\"rpm-db-cataloger\":               newTokenSelection([]string{\"os\"}, nil),\n\t\t\t\t\"github-actions-usage-cataloger\": newTokenSelection([]string{\"github-actions-usage-cataloger\"}, []string{\"declared\"}),\n\n\t\t\t\t// selected file tasks\n\t\t\t\t\"file-content-cataloger\":  newTokenSelection([]string{\"content\", \"file\"}, nil),\n\t\t\t\t\"file-metadata-cataloger\": newTokenSelection([]string{\"file-metadata-cataloger\", \"file\"}, nil),\n\n\t\t\t\t// removed package tasks\n\t\t\t\t\"binary-cataloger\":                       newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"conan-cataloger\":                        newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"dart-pubspec-lock-cataloger\":            newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"dotnet-deps-cataloger\":                  newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"elixir-mix-lock-cataloger\":              newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"erlang-rebar-lock-cataloger\":            newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"github-action-workflow-usage-cataloger\": newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"javascript-lock-cataloger\":              newTokenSelection(nil, []string{\"declared\"}),\n\t\t\t\t\"sbom-cataloger\":                         newTokenSelection(nil, []string{\"declared\"}),\n\n\t\t\t\t// removed file tasks\n\t\t\t\t\"file-executable-cataloger\": newTokenSelection([]string{\"file\"}, nil),\n\t\t\t\t\"file-digest-cataloger\":     newTokenSelection([]string{\"file\"}, []string{\"digest\"}),\n\t\t\t},\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"os\", \"file\"}, // note: file added automatically\n\t\t\t\tSubSelectTags:      []string{\"content\"},\n\t\t\t\tRemoveNamesOrTags:  []string{\"dpkg\", \"digest\", \"declared\"},\n\t\t\t\tAddNames:           []string{\"github-actions-usage-cataloger\", \"file-metadata-cataloger\"},\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid tag\",\n\t\t\ttaskGroups: [][]Task{\n\t\t\t\tcreateDummyPackageTasks(),\n\t\t\t\tcreateDummyFileTasks(),\n\t\t\t},\n\t\t\tselectionReq: cataloging.NewSelectionRequest().WithDefaults(\"invalid\"),\n\t\t\twantGroups:   nil,\n\t\t\twantTokens:   nil,\n\t\t\twantRequest: cataloging.SelectionRequest{\n\t\t\t\tDefaultNamesOrTags: []string{\"invalid\", \"file\"},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\n\t\t\tgotGroups, gotSelection, err := SelectInGroups(tt.taskGroups, tt.selectionReq)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\t// dev note: this is useful for debugging when needed...\n\t\t\t\t//for _, e := range gotEvidence.Request.Expressions {\n\t\t\t\t//\tt.Logf(\"expression (errors %q): %#v\", e.Errors, e)\n\t\t\t\t//}\n\n\t\t\t\t// note: we DON'T bail early in validations... this is because we should always return the full set of\n\t\t\t\t// of selected tasks and surrounding evidence.\n\t\t\t}\n\n\t\t\tvar gotGroupNames [][]string\n\t\t\tfor _, group := range gotGroups {\n\t\t\t\tvar names []string\n\t\t\t\tfor _, task := range group {\n\t\t\t\t\tnames = append(names, task.Name())\n\t\t\t\t}\n\t\t\t\tgotGroupNames = append(gotGroupNames, names)\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.wantGroups, gotGroupNames)\n\t\t\tassert.Equal(t, tt.wantTokens, gotSelection.TokensByTask)\n\t\t\tassert.Equal(t, tt.wantRequest, gotSelection.Request)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/task/set.go",
    "content": "package task\n\ntype set struct {\n\torder []string\n\ttasks map[string]Task\n}\n\nfunc newSet(tasks ...Task) *set {\n\ts := &set{\n\t\torder: []string{},\n\t\ttasks: make(map[string]Task),\n\t}\n\n\ts.Add(tasks...)\n\n\treturn s\n}\n\nfunc (ts *set) Len() int {\n\treturn len(ts.tasks)\n}\n\nfunc (ts *set) Add(tasks ...Task) {\n\tfor _, t := range tasks {\n\t\ttaskName := t.Name()\n\t\tif _, exists := ts.tasks[taskName]; exists {\n\t\t\tcontinue\n\t\t}\n\t\tts.tasks[taskName] = t\n\t\tts.order = append(ts.order, taskName)\n\t}\n}\n\nfunc (ts *set) Remove(tasks ...Task) {\n\tfor _, t := range tasks {\n\t\ttaskName := t.Name()\n\t\tif _, exists := ts.tasks[taskName]; !exists {\n\t\t\tcontinue\n\t\t}\n\n\t\tdelete(ts.tasks, taskName)\n\t\tfor i, t := range ts.order {\n\t\t\tif t == taskName {\n\t\t\t\tts.order = append(ts.order[:i], ts.order[i+1:]...)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (ts *set) Intersect(tasks ...Task) {\n\tother := newSet(tasks...)\n\tresult := newSet()\n\tfor _, taskName := range ts.order {\n\t\t// we make a new set to prevent the original set from being modified while we are iterating over \"order\"\n\t\tif _, exists := other.tasks[taskName]; exists {\n\t\t\t// note: keep the original task and ordering\n\t\t\tresult.Add(ts.tasks[taskName])\n\t\t}\n\t}\n\t*ts = *result\n}\n\nfunc (ts set) Tasks() tasks {\n\tvar result []Task\n\tfor _, name := range ts.order {\n\t\tresult = append(result, ts.tasks[name])\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "internal/task/set_test.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ Task = (*mockTask)(nil)\n\ntype mockTask struct {\n\tname string\n}\n\nfunc (m mockTask) Execute(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {\n\tpanic(\"implement me\")\n}\n\nfunc (m mockTask) Name() string {\n\treturn m.name\n}\n\nfunc Test_set_Add(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tinitialTasks []Task\n\t\tnewTasks     []Task\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname:         \"add unique tasks\",\n\t\t\tinitialTasks: []Task{mockTask{\"task2\"}, mockTask{\"task1\"}},\n\t\t\tnewTasks:     []Task{mockTask{\"task3\"}},\n\t\t\texpected: []string{\n\t\t\t\t\"task2\", // note order is honored\n\t\t\t\t\"task1\",\n\t\t\t\t\"task3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"add duplicate tasks\",\n\t\t\tinitialTasks: []Task{mockTask{\"task1\"}, mockTask{\"task2\"}},\n\t\t\tnewTasks:     []Task{mockTask{\"task1\"}},\n\t\t\texpected: []string{\n\t\t\t\t\"task1\",\n\t\t\t\t\"task2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := newSet(tt.initialTasks...)\n\t\t\ts.Add(tt.newTasks...)\n\t\t\tgot := s.Tasks()\n\t\t\tvar gotNames []string\n\t\t\tfor _, tsk := range got {\n\t\t\t\tgotNames = append(gotNames, tsk.Name())\n\t\t\t}\n\t\t\tassert.Equal(t, tt.expected, gotNames)\n\t\t})\n\t}\n}\n\nfunc Test_set_Remove(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinitialTasks  []Task\n\t\ttasksToRemove []Task\n\t\texpectedOrder []string\n\t}{\n\t\t{\n\t\t\tname:          \"remove existing tasks\",\n\t\t\tinitialTasks:  []Task{mockTask{\"task1\"}, mockTask{\"task2\"}, mockTask{\"task3\"}},\n\t\t\ttasksToRemove: []Task{mockTask{\"task2\"}},\n\t\t\texpectedOrder: []string{\"task1\", \"task3\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"remove non-existing tasks\",\n\t\t\tinitialTasks:  []Task{mockTask{\"task1\"}, mockTask{\"task2\"}},\n\t\t\ttasksToRemove: []Task{mockTask{\"task3\"}},\n\t\t\texpectedOrder: []string{\"task1\", \"task2\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := newSet(tt.initialTasks...)\n\t\t\ts.Remove(tt.tasksToRemove...)\n\t\t\tassert.Equal(t, tt.expectedOrder, s.order)\n\t\t})\n\t}\n}\n\nfunc Test_set_Intersect(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tinitialTasks   []Task\n\t\tintersectTasks []Task\n\t\texpectedOrder  []string\n\t}{\n\t\t{\n\t\t\tname:           \"intersect with overlapping tasks\",\n\t\t\tinitialTasks:   []Task{mockTask{\"task1\"}, mockTask{\"task2\"}},\n\t\t\tintersectTasks: []Task{mockTask{\"task2\"}, mockTask{\"task3\"}},\n\t\t\texpectedOrder:  []string{\"task2\"},\n\t\t},\n\t\t{\n\t\t\tname:           \"intersect with non-overlapping tasks\",\n\t\t\tinitialTasks:   []Task{mockTask{\"task1\"}, mockTask{\"task4\"}},\n\t\t\tintersectTasks: []Task{mockTask{\"task2\"}, mockTask{\"task3\"}},\n\t\t\texpectedOrder:  []string{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := newSet(tt.initialTasks...)\n\t\t\ts.Intersect(tt.intersectTasks...)\n\t\t\tassert.Equal(t, tt.expectedOrder, s.order)\n\t\t})\n\t}\n}\n\nfunc Test_set_Tasks(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinitialTasks  []Task\n\t\texpectedTasks tasks\n\t}{\n\t\t{\n\t\t\tname:          \"empty set\",\n\t\t\tinitialTasks:  []Task{},\n\t\t\texpectedTasks: nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"get tasks from set\",\n\t\t\tinitialTasks:  []Task{mockTask{\"task1\"}, mockTask{\"task2\"}},\n\t\t\texpectedTasks: []Task{mockTask{\"task1\"}, mockTask{\"task2\"}},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := newSet(tt.initialTasks...)\n\t\t\tresultTasks := s.Tasks()\n\t\t\tassert.Equal(t, tt.expectedTasks, resultTasks)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/task/task.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ interface {\n\tTask\n\tSelector\n} = (*task)(nil)\n\n// Task is a function that can wrap a cataloger to populate the SBOM with data (coordinated through the mutex).\ntype Task interface {\n\tName() string\n\tExecute(context.Context, file.Resolver, sbomsync.Builder) error\n}\n\ntype Selector interface {\n\tHasAllSelectors(...string) bool\n\tSelectors() []string\n}\n\ntype tasks []Task\n\ntype task struct {\n\tname      string\n\tselectors *strset.Set\n\ttask      func(context.Context, file.Resolver, sbomsync.Builder) error\n}\n\nfunc NewTask(name string, tsk func(context.Context, file.Resolver, sbomsync.Builder) error, tags ...string) Task {\n\tif tsk == nil {\n\t\tpanic(fmt.Errorf(\"task cannot be nil\"))\n\t}\n\ttags = append(tags, name)\n\treturn &task{\n\t\tname:      name,\n\t\tselectors: strset.New(tags...),\n\t\ttask:      tsk,\n\t}\n}\n\nfunc (t task) HasAllSelectors(ids ...string) bool {\n\t// tags or name\n\treturn t.selectors.Has(ids...)\n}\n\nfunc (t task) Selectors() []string {\n\treturn t.selectors.List()\n}\n\nfunc (t task) Name() string {\n\treturn t.name\n}\n\nfunc (t task) Execute(ctx context.Context, resolver file.Resolver, sbom sbomsync.Builder) error {\n\treturn t.task(ctx, resolver, sbom)\n}\n\nfunc (ts tasks) Names() []string {\n\tvar names []string\n\tfor _, td := range ts {\n\t\tnames = append(names, td.Name())\n\t}\n\treturn names\n}\n\nfunc (ts tasks) Tags() []string {\n\ttags := strset.New()\n\tfor _, td := range ts {\n\t\tif s, ok := td.(Selector); ok {\n\t\t\ttags.Add(s.Selectors()...)\n\t\t}\n\n\t\ttags.Remove(td.Name())\n\t}\n\n\ttagsList := tags.List()\n\tsort.Strings(tagsList)\n\n\treturn tagsList\n}\n"
  },
  {
    "path": "internal/task/unknowns_tasks.go",
    "content": "package task\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst unknownsLabelerTaskName = \"unknowns-labeler\"\n\nfunc NewUnknownsLabelerTask(cfg cataloging.UnknownsConfig) Task {\n\treturn NewTask(unknownsLabelerTaskName, unknownsLabelerTask{cfg}.processUnknowns)\n}\n\ntype unknownsLabelerTask struct {\n\tcataloging.UnknownsConfig\n}\n\n// processUnknowns removes unknown entries that have valid packages reported for the locations\nfunc (c unknownsLabelerTask) processUnknowns(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {\n\taccessor := builder.(sbomsync.Accessor)\n\taccessor.WriteToSBOM(func(s *sbom.SBOM) {\n\t\tc.finalize(resolver, s)\n\t})\n\treturn nil\n}\n\nfunc (c unknownsLabelerTask) finalize(resolver file.Resolver, s *sbom.SBOM) {\n\thasPackageReference := coordinateReferenceLookup(resolver, s)\n\n\tif c.RemoveWhenPackagesDefined {\n\t\tfor coords := range s.Artifacts.Unknowns {\n\t\t\tif !hasPackageReference(coords) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdelete(s.Artifacts.Unknowns, coords)\n\t\t}\n\t}\n\n\tif s.Artifacts.Unknowns == nil {\n\t\ts.Artifacts.Unknowns = map[file.Coordinates][]string{}\n\t}\n\n\tif c.IncludeExecutablesWithoutPackages {\n\t\tfor coords := range s.Artifacts.Executables {\n\t\t\tif !hasPackageReference(coords) {\n\t\t\t\ts.Artifacts.Unknowns[coords] = append(s.Artifacts.Unknowns[coords], formatUnknown(\"no package identified in executable file\", unknownsLabelerTaskName))\n\t\t\t}\n\t\t}\n\t}\n\n\tif c.IncludeUnexpandedArchives {\n\t\tctx := context.Background()\n\t\tfor coords := range s.Artifacts.FileMetadata {\n\t\t\tformat, _, notArchiveErr := intFile.IdentifyArchive(ctx, coords.RealPath, nil)\n\t\t\tif format != nil && notArchiveErr == nil && !hasPackageReference(coords) {\n\t\t\t\ts.Artifacts.Unknowns[coords] = append(s.Artifacts.Unknowns[coords], \"archive not cataloged\")\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc formatUnknown(err string, task ...string) string {\n\treturn strings.Join(task, \"/\") + \": \" + err\n}\n\nfunc coordinateReferenceLookup(resolver file.Resolver, s *sbom.SBOM) func(coords file.Coordinates) bool {\n\tallPackageCoords := file.NewCoordinateSet()\n\n\t// include all directly included locations that result in packages\n\tfor p := range s.Artifacts.Packages.Enumerate() {\n\t\tallPackageCoords.Add(p.Locations.CoordinateSet().ToSlice()...)\n\t}\n\n\t// include owned files, for example specified by package managers.\n\t// relationships for these owned files may be disabled, but we always want to include them\n\tfor p := range s.Artifacts.Packages.Enumerate() {\n\t\tif f, ok := p.Metadata.(pkg.FileOwner); ok {\n\t\t\tfor _, ownedFilePath := range f.OwnedFiles() {\n\t\t\t\t// resolve these owned files, as they may have symlinks\n\t\t\t\t// but coordinates we will test against are always absolute paths\n\t\t\t\tlocations, err := resolver.FilesByPath(ownedFilePath)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Debugf(\"unable to resolve owned file '%s': %v\", ownedFilePath, err)\n\t\t\t\t}\n\t\t\t\tfor _, loc := range locations {\n\t\t\t\t\tallPackageCoords.Add(loc.Coordinates)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// include relationships\n\tfor _, r := range s.Relationships {\n\t\t_, fromPkgOk := r.From.(pkg.Package)\n\t\tfromFile, fromFileOk := r.From.(file.Coordinates)\n\t\t_, toPkgOk := r.To.(pkg.Package)\n\t\ttoFile, toFileOk := r.To.(file.Coordinates)\n\t\tif fromPkgOk && toFileOk {\n\t\t\tallPackageCoords.Add(toFile)\n\t\t} else if fromFileOk && toPkgOk {\n\t\t\tallPackageCoords.Add(fromFile)\n\t\t}\n\t}\n\n\treturn allPackageCoords.Contains\n}\n"
  },
  {
    "path": "internal/testutils/golden_files.go",
    "content": "package testutils\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n)\n\nconst (\n\tTestDataDir       = \"testdata\"\n\tGoldenFileDirName = \"snapshot\"\n\tGoldenFileExt     = \".golden\"\n\tGoldenFileDirPath = TestDataDir + string(filepath.Separator) + GoldenFileDirName\n)\n\nfunc GetGoldenFilePath(t *testing.T) string {\n\tt.Helper()\n\t// when using table-driven-tests, the `t.Name()` results in a string with slashes\n\t// which makes it impossible to reference in a filesystem, producing a \"No such file or directory\"\n\tfilename := strings.ReplaceAll(t.Name(), \"/\", \"_\")\n\treturn path.Join(GoldenFileDirPath, filename+GoldenFileExt)\n}\n\nfunc UpdateGoldenFileContents(t *testing.T, contents []byte) {\n\tt.Helper()\n\n\tgoldenFilePath := GetGoldenFilePath(t)\n\n\tt.Log(dangerText(\"!!! UPDATING GOLDEN FILE !!!\"), goldenFilePath)\n\n\terr := os.WriteFile(goldenFilePath, contents, 0o600)\n\tif err != nil {\n\t\tt.Fatalf(\"could not update golden file (%s): %+v\", goldenFilePath, err)\n\t}\n}\n\nfunc GetGoldenFileContents(t *testing.T) []byte {\n\tt.Helper()\n\n\tgoldenPath := GetGoldenFilePath(t)\n\tif !fileOrDirExists(t, goldenPath) {\n\t\tt.Fatalf(\"golden file does not exist: %s\", goldenPath)\n\t}\n\tf, err := os.Open(goldenPath)\n\tif err != nil {\n\t\tt.Fatalf(\"could not open file (%s): %+v\", goldenPath, err)\n\t}\n\tdefer f.Close()\n\n\t// suppress lint prohibiting ReadAll since golden files are source files in Syft's repository\n\t// and not user provided artifacts.\n\tbytes, err := io.ReadAll(f) //nolint:gocritic // golden files are trusted source files, not user artifacts\n\tif err != nil {\n\t\tt.Fatalf(\"could not read file (%s): %+v\", goldenPath, err)\n\t}\n\treturn bytes\n}\n\nfunc fileOrDirExists(t *testing.T, filename string) bool {\n\tt.Helper()\n\t_, err := os.Stat(filename)\n\treturn !os.IsNotExist(err)\n}\n\n// dangerText wraps text in ANSI escape codes for reverse red to make it highly visible.\nfunc dangerText(s string) string {\n\treturn \"\\033[7;31m\" + s + \"\\033[0m\"\n}\n"
  },
  {
    "path": "internal/tmpdir/tmpdir.go",
    "content": "package tmpdir\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\ntype ctxKey struct{}\n\n// Root creates a new root temp directory with the given prefix and returns a context with the\n// TempDir attached. Callers should defer Cleanup() on the returned TempDir to ensure all\n// temp files are removed.\nfunc Root(ctx context.Context, prefix string) (context.Context, *TempDir) {\n\ttd := &TempDir{prefix: prefix}\n\treturn context.WithValue(ctx, ctxKey{}, td), td\n}\n\n// FromPath creates a TempDir backed by an existing directory. The caller owns the lifecycle of\n// the directory; Cleanup() is a no-op. This is useful for wrapping a directory from t.TempDir()\n// where the test framework handles cleanup automatically.\nfunc FromPath(dir string) *TempDir {\n\ttd := &TempDir{}\n\ttd.root = dir\n\ttd.initOnce.Do(func() {}) // mark as initialized\n\treturn td\n}\n\n// WithValue returns a new context with the given TempDir attached. Use this to inject an\n// existing TempDir into a context (e.g., sharing a TempDir across multiple test contexts).\nfunc WithValue(ctx context.Context, td *TempDir) context.Context {\n\treturn context.WithValue(ctx, ctxKey{}, td)\n}\n\n// FromContext returns the TempDir from the context, or nil if none is set.\nfunc FromContext(ctx context.Context) *TempDir {\n\ttd, _ := ctx.Value(ctxKey{}).(*TempDir)\n\treturn td\n}\n\n// TempDir manages a tree of temporary directories. All files and child directories live under\n// a single root path that can be removed in one shot via Cleanup(). After initialization, the\n// struct has no mutable state — NewChild and NewFile delegate uniqueness to os.MkdirTemp and\n// os.CreateTemp respectively, so no locking is needed on the hot path.\ntype TempDir struct {\n\tprefix      string\n\troot        string // set exactly once by initOnce\n\tinitOnce    sync.Once\n\tinitErr     error\n\tcleanupOnce sync.Once\n\tcleaned     atomic.Bool\n}\n\nfunc noop() {}\n\n// path returns the root directory, lazily creating it on the first call.\nfunc (t *TempDir) path() (string, error) {\n\tt.initOnce.Do(func() {\n\t\tt.root, t.initErr = os.MkdirTemp(\"\", t.prefix+\"-\")\n\t})\n\tif t.initErr != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to create root temp dir: %w\", t.initErr)\n\t}\n\tif t.cleaned.Load() {\n\t\treturn \"\", fmt.Errorf(\"temp dir has been cleaned up\")\n\t}\n\treturn t.root, nil\n}\n\n// NewChild creates a named subdirectory under this TempDir. The returned cleanup function removes\n// the subdirectory and all contents; callers should defer it to reclaim space early. The root\n// Cleanup acts as a safety net if the per-child cleanup is missed. The cleanup function is safe\n// to call multiple times and is safe to call after the root has already been cleaned up.\nfunc (t *TempDir) NewChild(name string) (string, func(), error) {\n\troot, err := t.path()\n\tif err != nil {\n\t\treturn \"\", noop, err\n\t}\n\tdir, err := os.MkdirTemp(root, name+\"-\")\n\tif err != nil {\n\t\treturn \"\", noop, fmt.Errorf(\"failed to create child temp dir: %w\", err)\n\t}\n\tcleanup := func() {\n\t\t_ = os.RemoveAll(dir)\n\t}\n\treturn dir, cleanup, nil\n}\n\n// NewFile creates a new temp file under this TempDir with the given name pattern (as in os.CreateTemp).\n// The caller is responsible for closing the file. The returned cleanup function removes the file;\n// callers should defer it to reclaim space early. The root Cleanup acts as a safety net if the\n// per-file cleanup is missed. The cleanup function is safe to call multiple times.\nfunc (t *TempDir) NewFile(pattern string) (*os.File, func(), error) {\n\troot, err := t.path()\n\tif err != nil {\n\t\treturn nil, noop, err\n\t}\n\tf, err := os.CreateTemp(root, pattern)\n\tif err != nil {\n\t\treturn nil, noop, fmt.Errorf(\"failed to create temp file: %w\", err)\n\t}\n\tcleanup := func() {\n\t\t_ = os.Remove(f.Name())\n\t}\n\treturn f, cleanup, nil\n}\n\n// Cleanup removes the entire root directory and all contents. Safe to call multiple times.\nfunc (t *TempDir) Cleanup() error {\n\tvar err error\n\tt.cleanupOnce.Do(func() {\n\t\tt.cleaned.Store(true)\n\t\tif t.root == \"\" {\n\t\t\treturn\n\t\t}\n\t\terr = os.RemoveAll(t.root)\n\t})\n\treturn err\n}\n"
  },
  {
    "path": "internal/tmpdir/tmpdir_test.go",
    "content": "package tmpdir\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestRootAndFromContext(t *testing.T) {\n\tctx := context.Background()\n\tassert.Nil(t, FromContext(ctx))\n\n\tctx, td := Root(ctx, \"test\")\n\trequire.NotNil(t, FromContext(ctx))\n\tassert.Same(t, td, FromContext(ctx))\n}\n\nfunc TestWithValue(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\n\t// inject the existing TempDir into a fresh context\n\tctx := WithValue(context.Background(), td)\n\tassert.Same(t, td, FromContext(ctx))\n\n\t// the injected TempDir is fully functional\n\tf, cleanup, err := FromContext(ctx).NewFile(\"with-value-*.txt\")\n\trequire.NoError(t, err)\n\tdefer cleanup()\n\trequire.NoError(t, f.Close())\n}\n\nfunc TestNewChild(t *testing.T) {\n\tctx, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\t_ = ctx\n\n\tchild1, cleanup1, err := td.NewChild(\"sub\")\n\trequire.NoError(t, err)\n\tdefer cleanup1()\n\tchild2, cleanup2, err := td.NewChild(\"sub\")\n\trequire.NoError(t, err)\n\tdefer cleanup2()\n\n\t// children are distinct\n\tassert.NotEqual(t, child1, child2)\n\n\t// both exist and are under the same root\n\tinfo1, err := os.Stat(child1)\n\trequire.NoError(t, err)\n\tassert.True(t, info1.IsDir())\n\n\tinfo2, err := os.Stat(child2)\n\trequire.NoError(t, err)\n\tassert.True(t, info2.IsDir())\n\n\tassert.Equal(t, filepath.Dir(child1), filepath.Dir(child2))\n}\n\nfunc TestNewFile(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\n\tf, cleanup, err := td.NewFile(\"hello-*.txt\")\n\trequire.NoError(t, err)\n\tdefer cleanup()\n\n\t_, err = f.WriteString(\"hello\")\n\trequire.NoError(t, err)\n\trequire.NoError(t, f.Close())\n\n\tcontent, err := os.ReadFile(f.Name())\n\trequire.NoError(t, err)\n\tassert.Equal(t, \"hello\", string(content))\n}\n\nfunc TestCleanup(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\n\tchild, _, err := td.NewChild(\"sub\")\n\trequire.NoError(t, err)\n\n\tf, _, err := td.NewFile(\"file-*\")\n\trequire.NoError(t, err)\n\tfname := f.Name()\n\tf.Close()\n\n\t// write a file inside the child dir too\n\trequire.NoError(t, os.WriteFile(filepath.Join(child, \"inner.txt\"), []byte(\"x\"), 0600))\n\n\t// everything exists\n\t_, err = os.Stat(child)\n\trequire.NoError(t, err)\n\t_, err = os.Stat(fname)\n\trequire.NoError(t, err)\n\n\t// cleanup\n\trequire.NoError(t, td.Cleanup())\n\n\t// everything is gone\n\t_, err = os.Stat(child)\n\tassert.True(t, os.IsNotExist(err))\n\t_, err = os.Stat(fname)\n\tassert.True(t, os.IsNotExist(err))\n\n\t// double cleanup is safe\n\trequire.NoError(t, td.Cleanup())\n}\n\nfunc TestCleanupPreventsNewAllocation(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\trequire.NoError(t, td.Cleanup())\n\n\t_, _, err := td.NewChild(\"nope\")\n\tassert.Error(t, err)\n\n\t_, _, err = td.NewFile(\"nope-*\")\n\tassert.Error(t, err)\n}\n\nfunc TestEarlyCleanupFile(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\n\tf, cleanup, err := td.NewFile(\"early-*.txt\")\n\trequire.NoError(t, err)\n\n\tfname := f.Name()\n\trequire.NoError(t, f.Close())\n\n\t// file exists before cleanup\n\t_, err = os.Stat(fname)\n\trequire.NoError(t, err)\n\n\t// early cleanup removes the file\n\tcleanup()\n\t_, err = os.Stat(fname)\n\tassert.True(t, os.IsNotExist(err))\n\n\t// calling cleanup again is safe (idempotent)\n\tcleanup()\n}\n\nfunc TestEarlyCleanupChild(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\n\tchild, cleanup, err := td.NewChild(\"early\")\n\trequire.NoError(t, err)\n\n\t// child dir exists\n\t_, err = os.Stat(child)\n\trequire.NoError(t, err)\n\n\t// early cleanup removes it\n\tcleanup()\n\t_, err = os.Stat(child)\n\tassert.True(t, os.IsNotExist(err))\n\n\t// calling cleanup again is safe (idempotent)\n\tcleanup()\n}\n\nfunc TestEarlyCleanupThenRootCleanup(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\n\tf, cleanupFile, err := td.NewFile(\"combo-*.txt\")\n\trequire.NoError(t, err)\n\tfname := f.Name()\n\tf.Close()\n\n\tchild, cleanupChild, err := td.NewChild(\"combo\")\n\trequire.NoError(t, err)\n\n\t// early cleanup both\n\tcleanupFile()\n\tcleanupChild()\n\n\t// files are already gone\n\t_, err = os.Stat(fname)\n\tassert.True(t, os.IsNotExist(err))\n\t_, err = os.Stat(child)\n\tassert.True(t, os.IsNotExist(err))\n\n\t// root cleanup still works (no error on already-removed contents)\n\trequire.NoError(t, td.Cleanup())\n}\n\nfunc TestConcurrentNewChildAndNewFile(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\tdefer td.Cleanup()\n\n\tconst goroutines = 20\n\terrs := make(chan error, goroutines)\n\tpaths := make(chan string, goroutines)\n\n\tfor i := 0; i < goroutines; i++ {\n\t\tgo func(i int) {\n\t\t\tif i%2 == 0 {\n\t\t\t\tchild, cleanup, err := td.NewChild(\"concurrent\")\n\t\t\t\tif err != nil {\n\t\t\t\t\terrs <- err\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tdefer cleanup()\n\t\t\t\tpaths <- child\n\t\t\t} else {\n\t\t\t\tf, cleanup, err := td.NewFile(\"concurrent-*.txt\")\n\t\t\t\tif err != nil {\n\t\t\t\t\terrs <- err\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tdefer cleanup()\n\t\t\t\t_ = f.Close()\n\t\t\t\tpaths <- f.Name()\n\t\t\t}\n\t\t\terrs <- nil\n\t\t}(i)\n\t}\n\n\tseen := make(map[string]bool)\n\tfor i := 0; i < goroutines; i++ {\n\t\terr := <-errs\n\t\trequire.NoError(t, err)\n\t}\n\tclose(paths)\n\tfor p := range paths {\n\t\tassert.False(t, seen[p], \"duplicate path: %s\", p)\n\t\tseen[p] = true\n\t}\n\tassert.Len(t, seen, goroutines)\n}\n\nfunc TestConcurrentNewChildDuringCleanup(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\n\t// trigger root creation\n\t_, cleanup, err := td.NewChild(\"init\")\n\trequire.NoError(t, err)\n\tcleanup()\n\n\t// cleanup and concurrent NewChild should not panic\n\tdone := make(chan struct{})\n\tgo func() {\n\t\t_ = td.Cleanup()\n\t\tclose(done)\n\t}()\n\t// try creating children concurrently with cleanup — should get errors, not panics\n\tfor i := 0; i < 10; i++ {\n\t\t_, c, _ := td.NewChild(\"race\")\n\t\tif c != nil {\n\t\t\tc()\n\t\t}\n\t}\n\t<-done\n}\n\nfunc TestLazyCreation(t *testing.T) {\n\t_, td := Root(context.Background(), \"test\")\n\n\t// root dir is not created until needed\n\tassert.Equal(t, \"\", td.root)\n\n\t_, _, err := td.NewFile(\"trigger-*\")\n\trequire.NoError(t, err)\n\n\tassert.NotEmpty(t, td.root)\n\n\trequire.NoError(t, td.Cleanup())\n}\n\nfunc TestFromPath(t *testing.T) {\n\tdir := t.TempDir()\n\ttd := FromPath(dir)\n\n\t// can create children\n\tchild, cleanup, err := td.NewChild(\"sub\")\n\trequire.NoError(t, err)\n\tdefer cleanup()\n\tassert.DirExists(t, child)\n\n\t// can create files\n\tf, cleanupFile, err := td.NewFile(\"file-*.txt\")\n\trequire.NoError(t, err)\n\tdefer cleanupFile()\n\trequire.NoError(t, f.Close())\n\tassert.FileExists(t, f.Name())\n\n\t// root is the provided dir\n\tassert.Equal(t, dir, filepath.Dir(child))\n}\n"
  },
  {
    "path": "internal/tprint.go",
    "content": "package internal\n\nimport (\n\t\"bytes\"\n\t\"text/template\"\n)\n\n// Tprintf renders a string from a given template string and field values\nfunc Tprintf(tmpl string, data map[string]interface{}) string {\n\tt := template.Must(template.New(\"\").Parse(tmpl))\n\tbuf := &bytes.Buffer{}\n\tif err := t.Execute(buf, data); err != nil {\n\t\treturn \"\"\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "internal/unknown/coordinate_error.go",
    "content": "package unknown\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype hasCoordinates interface {\n\tGetCoordinates() file.Coordinates\n}\n\ntype CoordinateError struct {\n\tCoordinates file.Coordinates\n\tReason      error\n}\n\nvar _ error = (*CoordinateError)(nil)\n\nfunc (u *CoordinateError) Error() string {\n\tif u.Coordinates.FileSystemID == \"\" {\n\t\treturn fmt.Sprintf(\"%s: %v\", u.Coordinates.RealPath, u.Reason)\n\t}\n\treturn fmt.Sprintf(\"%s (%s): %v\", u.Coordinates.RealPath, u.Coordinates.FileSystemID, u.Reason)\n}\n\n// New returns a new CoordinateError unless the reason is a CoordinateError itself, in which case\n// reason will be returned directly or if reason is nil, nil will be returned\nfunc New(coords hasCoordinates, reason error) *CoordinateError {\n\tif reason == nil {\n\t\treturn nil\n\t}\n\tcoordinates := coords.GetCoordinates()\n\treasonCoordinateError := &CoordinateError{}\n\tif errors.As(reason, &reasonCoordinateError) {\n\t\t// if the reason is already a coordinate error, it is potentially for a different location,\n\t\t// so we do not want to surface this location having an error\n\t\treturn reasonCoordinateError\n\t}\n\treturn &CoordinateError{\n\t\tCoordinates: coordinates,\n\t\tReason:      reason,\n\t}\n}\n\n// Newf returns a new CoordinateError with a reason of an error created from given format and args\nfunc Newf(coords hasCoordinates, format string, args ...any) *CoordinateError {\n\treturn New(coords, fmt.Errorf(format, args...))\n}\n\n// Append returns an error joined to the first error/set of errors, with a new CoordinateError appended to the end\nfunc Append(errs error, coords hasCoordinates, reason error) error {\n\treturn Join(errs, New(coords, reason))\n}\n\n// Appendf returns an error joined to the first error/set of errors, with a new CoordinateError appended to the end,\n// created from the given reason and args\nfunc Appendf(errs error, coords hasCoordinates, format string, args ...any) error {\n\treturn Append(errs, coords, fmt.Errorf(format, args...))\n}\n\n// Join joins the provided sets of errors together in a flattened manner, taking into account nested errors created\n// from other sources, including errors.Join, multierror.Append, and unknown.Join\nfunc Join(errs ...error) error {\n\tvar out []error\n\tfor _, err := range errs {\n\t\t// append errors, de-duplicated\n\t\tfor _, e := range flatten(err) {\n\t\t\tif containsErr(out, e) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tout = append(out, e)\n\t\t}\n\t}\n\tif len(out) == 1 {\n\t\treturn out[0]\n\t}\n\tif len(out) == 0 {\n\t\treturn nil\n\t}\n\treturn errors.Join(out...)\n}\n\n// Joinf joins the provided sets of errors together in a flattened manner, taking into account nested errors created\n// from other sources, including errors.Join, multierror.Append, and unknown.Join and appending a new error,\n// created from the format and args provided -- the error is NOT a CoordinateError\nfunc Joinf(errs error, format string, args ...any) error {\n\treturn Join(errs, fmt.Errorf(format, args...))\n}\n\n// IfEmptyf returns a new Errorf-formatted error, only when the provided slice is empty or nil when\n// the slice has entries\nfunc IfEmptyf[T any](emptyTest []T, format string, args ...any) error {\n\tif len(emptyTest) == 0 {\n\t\treturn fmt.Errorf(format, args...)\n\t}\n\treturn nil\n}\n\n// ExtractCoordinateErrors extracts all coordinate errors returned, and any _additional_ errors in the graph\n// are encapsulated in the second, error return parameter\nfunc ExtractCoordinateErrors(err error) (coordinateErrors []CoordinateError, remainingErrors error) {\n\tremainingErrors = visitErrors(err, func(e error) error {\n\t\tif coordinateError, _ := e.(*CoordinateError); coordinateError != nil {\n\t\t\tcoordinateErrors = append(coordinateErrors, *coordinateError)\n\t\t\treturn nil\n\t\t}\n\t\treturn e\n\t})\n\treturn coordinateErrors, remainingErrors\n}\n\nfunc flatten(errs ...error) []error {\n\tvar out []error\n\tfor _, err := range errs {\n\t\tif err == nil {\n\t\t\tcontinue\n\t\t}\n\t\t// turn all errors nested under a coordinate error to individual coordinate errors\n\t\tif e, ok := err.(*CoordinateError); ok {\n\t\t\tif e == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, r := range flatten(e.Reason) {\n\t\t\t\tout = append(out, New(e.Coordinates, r))\n\t\t\t}\n\t\t} else\n\t\t// from multierror.Append\n\t\tif e, ok := err.(interface{ WrappedErrors() []error }); ok {\n\t\t\tif e == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tout = append(out, flatten(e.WrappedErrors()...)...)\n\t\t} else\n\t\t// from errors.Join\n\t\tif e, ok := err.(interface{ Unwrap() []error }); ok {\n\t\t\tif e == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tout = append(out, flatten(e.Unwrap()...)...)\n\t\t} else {\n\t\t\tout = append(out, err)\n\t\t}\n\t}\n\treturn out\n}\n\n// containsErr returns true if a duplicate error is found\nfunc containsErr(out []error, err error) bool {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tlog.Tracef(\"error comparing errors: %v\", err)\n\t\t}\n\t}()\n\tfor _, e := range out {\n\t\tif e == err {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// visitErrors visits every wrapped error. the returned error replaces the provided error, null errors are omitted from\n// the object graph\nfunc visitErrors(err error, fn func(error) error) error {\n\t// unwrap errors from errors.Join\n\tif errs, ok := err.(interface{ Unwrap() []error }); ok {\n\t\tvar out []error\n\t\tfor _, e := range errs.Unwrap() {\n\t\t\tout = append(out, visitErrors(e, fn))\n\t\t}\n\t\t// errors.Join omits nil errors and will return nil if all passed errors are nil\n\t\treturn errors.Join(out...)\n\t}\n\t// unwrap errors from multierror.Append -- these also implement Unwrap() error, so check this first\n\tif errs, ok := err.(interface{ WrappedErrors() []error }); ok {\n\t\tvar out []error\n\t\tfor _, e := range errs.WrappedErrors() {\n\t\t\tout = append(out, visitErrors(e, fn))\n\t\t}\n\t\t// errors.Join omits nil errors and will return nil if all passed errors are nil\n\t\treturn errors.Join(out...)\n\t}\n\t// unwrap singly wrapped errors\n\tif e, ok := err.(interface{ Unwrap() error }); ok {\n\t\twrapped := e.Unwrap()\n\t\tgot := visitErrors(wrapped, fn)\n\t\tif got == nil {\n\t\t\treturn nil\n\t\t}\n\t\tif wrapped.Error() != got.Error() {\n\t\t\tprefix := strings.TrimSuffix(err.Error(), wrapped.Error())\n\t\t\treturn fmt.Errorf(\"%s%w\", prefix, got)\n\t\t}\n\t\treturn err\n\t}\n\treturn fn(err)\n}\n"
  },
  {
    "path": "internal/unknown/coordinate_error_test.go",
    "content": "package unknown\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_visitErrors(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tin        error\n\t\ttransform func(error) error\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tname: \"return\",\n\t\t\tin:   fmt.Errorf(\"err1\"),\n\t\t\ttransform: func(e error) error {\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"err1\",\n\t\t},\n\t\t{\n\t\t\tname: \"omit\",\n\t\t\tin:   fmt.Errorf(\"err1\"),\n\t\t\ttransform: func(_ error) error {\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\texpected: \"<nil>\",\n\t\t},\n\t\t{\n\t\t\tname: \"wrapped return\",\n\t\t\tin:   fmt.Errorf(\"wrapped: %w\", fmt.Errorf(\"err1\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"wrapped: err1\",\n\t\t},\n\t\t{\n\t\t\tname: \"wrapped omit\",\n\t\t\tin:   fmt.Errorf(\"wrapped: %w\", fmt.Errorf(\"err1\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\tif e.Error() == \"err1\" {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"<nil>\",\n\t\t},\n\t\t{\n\t\t\tname: \"joined return\",\n\t\t\tin:   errors.Join(fmt.Errorf(\"err1\"), fmt.Errorf(\"err2\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"err1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname: \"joined omit\",\n\t\t\tin:   errors.Join(fmt.Errorf(\"err1\"), fmt.Errorf(\"err2\")),\n\t\t\ttransform: func(_ error) error {\n\t\t\t\treturn nil\n\t\t\t},\n\t\t\texpected: \"<nil>\",\n\t\t},\n\t\t{\n\t\t\tname: \"joined omit first\",\n\t\t\tin:   errors.Join(fmt.Errorf(\"err1\"), fmt.Errorf(\"err2\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\tif e.Error() == \"err1\" {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"err2\",\n\t\t},\n\t\t{\n\t\t\tname: \"joined wrapped return\",\n\t\t\tin:   errors.Join(fmt.Errorf(\"wrapped: %w\", fmt.Errorf(\"err1\")), fmt.Errorf(\"err2\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"wrapped: err1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname: \"joined wrapped omit first\",\n\t\t\tin:   errors.Join(fmt.Errorf(\"wrapped: %w\", fmt.Errorf(\"err1\")), fmt.Errorf(\"err2\")),\n\t\t\ttransform: func(e error) error {\n\t\t\t\tif e.Error() == \"err1\" {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\treturn e\n\t\t\t},\n\t\t\texpected: \"err2\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgotErr := visitErrors(test.in, test.transform)\n\t\t\tgot := fmt.Sprintf(\"%v\", gotErr)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_Join(t *testing.T) {\n\terr1 := fmt.Errorf(\"err1\")\n\terr2 := fmt.Errorf(\"err2\")\n\n\ttests := []struct {\n\t\tname     string ``\n\t\tin       []error\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"basic\",\n\t\t\tin:       []error{fmt.Errorf(\"err\")},\n\t\t\texpected: \"err\",\n\t\t},\n\t\t{\n\t\t\tname:     \"wrapped\",\n\t\t\tin:       []error{fmt.Errorf(\"outer: %w\", fmt.Errorf(\"err\"))},\n\t\t\texpected: \"outer: err\",\n\t\t},\n\t\t{\n\t\t\tname:     \"wrapped joined\",\n\t\t\tin:       []error{errors.Join(fmt.Errorf(\"outer: %w\", fmt.Errorf(\"err1\")), fmt.Errorf(\"err2\"))},\n\t\t\texpected: \"outer: err1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"duplicates\",\n\t\t\tin:       []error{err1, err1, err2},\n\t\t\texpected: \"err1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nested duplicates\",\n\t\t\tin:       []error{errors.Join(err1, err2), err1, err2},\n\t\t\texpected: \"err1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nested duplicates coords\",\n\t\t\tin:       []error{New(file.NewLocation(\"l1\"), errors.Join(fmt.Errorf(\"err1\"), fmt.Errorf(\"err2\"))), fmt.Errorf(\"err1\"), fmt.Errorf(\"err2\")},\n\t\t\texpected: \"l1: err1\\nl1: err2\\nerr1\\nerr2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"all nil\",\n\t\t\tin:       []error{nil, nil, nil},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := Join(test.in...)\n\t\t\tif test.expected == \"\" {\n\t\t\t\trequire.Nil(t, got)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NotNil(t, got)\n\t\t\trequire.Equal(t, test.expected, got.Error())\n\t\t})\n\t}\n}\n\nfunc Test_flatten(t *testing.T) {\n\tcoords := file.Coordinates{\n\t\tRealPath: \"real/path\",\n\t}\n\te1 := fmt.Errorf(\"e1\")\n\te2 := fmt.Errorf(\"e2\")\n\tc1 := New(coords, fmt.Errorf(\"c1\"))\n\tc2 := New(coords, fmt.Errorf(\"c2\"))\n\ttests := []struct {\n\t\tname     string ``\n\t\tin       error\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"basic\",\n\t\t\tin:       errors.Join(e1, e2),\n\t\t\texpected: \"e1//e2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"coords\",\n\t\t\tin:       New(coords, e1),\n\t\t\texpected: \"real/path: e1\",\n\t\t},\n\t\t{\n\t\t\tname:     \"coords with joined children\",\n\t\t\tin:       New(coords, errors.Join(e1, e2)),\n\t\t\texpected: \"real/path: e1//real/path: e2\",\n\t\t},\n\t\t{\n\t\t\tname:     \"very nested\",\n\t\t\tin:       errors.Join(errors.Join(errors.Join(errors.Join(e1, c1), e2), c2), e2),\n\t\t\texpected: \"e1//real/path: c1//e2//real/path: c2//e2\",\n\t\t},\n\t}\n\ttoString := func(errs ...error) string {\n\t\tvar parts []string\n\t\tfor _, e := range errs {\n\t\t\tparts = append(parts, e.Error())\n\t\t}\n\t\treturn strings.Join(parts, \"//\")\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := flatten(test.in)\n\t\t\trequire.NotNil(t, got)\n\t\t\trequire.Equal(t, test.expected, toString(got...))\n\t\t})\n\t}\n}\n\nfunc Test_Append(t *testing.T) {\n\te1 := New(file.NewLocation(\"l1\"), fmt.Errorf(\"e1\"))\n\te2 := Append(e1, file.NewLocation(\"l2\"), fmt.Errorf(\"e2\"))\n\te3 := Appendf(e2, file.NewLocation(\"l3\"), \"%s\", \"e3\")\n\trequire.Equal(t, \"l1: e1\\nl2: e2\\nl3: e3\", e3.Error())\n\n\te1 = New(file.NewLocation(\"l1\"), nil)\n\trequire.Nil(t, e1)\n\te2 = Append(e1, file.NewLocation(\"l2\"), fmt.Errorf(\"e2\"))\n\te3 = Appendf(e2, file.NewLocation(\"l3\"), \"%s\", \"e3\")\n\trequire.Equal(t, \"l2: e2\\nl3: e3\", e3.Error())\n\n\te1 = New(file.NewLocation(\"l1\"), fmt.Errorf(\"e1\"))\n\te2 = Append(e1, file.NewLocation(\"l2\"), nil)\n\te3 = Appendf(e2, file.NewLocation(\"l3\"), \"%s\", \"e3\")\n\trequire.Equal(t, \"l1: e1\\nl3: e3\", e3.Error())\n}\n"
  },
  {
    "path": "internal/unknown/path_error.go",
    "content": "package unknown\n\nimport (\n\t\"regexp\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar pathErrorRegex = regexp.MustCompile(`.*path=\"([^\"]+)\".*`)\n\n// ProcessPathErrors replaces \"path\" errors returned from the file.Resolver into unknowns,\n// and warn logs non-unknown errors, returning only the unknown errors\nfunc ProcessPathErrors(err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\terrText := err.Error()\n\tif pathErrorRegex.MatchString(errText) {\n\t\tfoundPath := pathErrorRegex.ReplaceAllString(err.Error(), \"$1\")\n\t\tif foundPath != \"\" {\n\t\t\treturn New(file.NewLocation(foundPath), err)\n\t\t}\n\t}\n\tunknowns, remainingErrors := ExtractCoordinateErrors(err)\n\tlog.Debug(remainingErrors)\n\n\tvar out []error\n\tfor _, u := range unknowns {\n\t\tout = append(out, &u)\n\t}\n\treturn Join(out...)\n}\n"
  },
  {
    "path": "internal/unknown/path_error_test.go",
    "content": "package unknown\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_ProcessPathErrors(t *testing.T) {\n\ttests := []struct {\n\t\terrorText string\n\t\texpected  error\n\t}{\n\t\t{\n\t\t\terrorText: `prefix path=\"/var/lib/thing\" suffix`,\n\t\t\texpected: &CoordinateError{\n\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\tRealPath: \"/var/lib/thing\",\n\t\t\t\t},\n\t\t\t\tReason: fmt.Errorf(`prefix path=\"/var/lib/thing\" suffix`),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terrorText: `prefix path=\"/var/lib/thing\"`,\n\t\t\texpected: &CoordinateError{\n\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\tRealPath: \"/var/lib/thing\",\n\t\t\t\t},\n\t\t\t\tReason: fmt.Errorf(`prefix path=\"/var/lib/thing\"`),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terrorText: `path=\"/var/lib/thing\" suffix`,\n\t\t\texpected: &CoordinateError{\n\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\tRealPath: \"/var/lib/thing\",\n\t\t\t\t},\n\t\t\t\tReason: fmt.Errorf(`path=\"/var/lib/thing\" suffix`),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\terrorText: \"all your base are belong to us\",\n\t\t\texpected:  nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.errorText, func(t *testing.T) {\n\t\t\tgot := ProcessPathErrors(fmt.Errorf(\"%s\", test.errorText))\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "schema/cyclonedx/.gitignore",
    "content": "bom.xml\nbom.json\n"
  },
  {
    "path": "schema/cyclonedx/Makefile",
    "content": ".DEFAULT_GOAL := validate-schema\n.PHONY: validate-schema\nvalidate-schema:\n\t@echo \"Generating CycloneDX SBOMs...\"\n\tgo run ../../cmd/syft/main.go ubuntu:latest -v -o cyclonedx-xml=bom.xml -o cyclonedx-json=bom.json\n\n\t@echo \"\\nValidating CycloneDX XML...\"\n\txmllint --noout --schema ./cyclonedx.xsd bom.xml\n\n\t@echo \"\\nValidating CycloneDX JSON...\"\n\t../../.tool/yajsv -s cyclonedx.json -r spdx.schema.json bom.json\n"
  },
  {
    "path": "schema/cyclonedx/README.md",
    "content": "# CycloneDX Schemas\n\n`syft` generates a CycloneDX Bom output. We want to be able to validate the CycloneDX schemas\n(and dependent schemas) against generated syft output. The best way to do this is with `xmllint`,\nhowever, this tool does not know how to deal with references from HTTP, only the local filesystem.\nFor this reason we've included a copy of all schemas needed to validate `syft` output, modified\nto reference local copies of dependent schemas.\n\nYou can get the latest schemas from the [CycloneDX specifications repo](https://github.com/CycloneDX/specification/tree/master/schema).\n\nWhen the spec version is bumped an approach to determining prior modifications is to compare the \nprior spec version (e.g. if updating to 1.7, compare the files in this directory against the 1.6 \nequivalents). \n\nOne can also update the schemas and observe the errors in order to make the necessary updates. \nAt the time of writing, the cyclonedx.xsd needed modifications to link to the local spdx.xsd,\nand also to change the minOccurs for a license tag to 0. (The json schema does not require\nmodification for the generated file to lint properly, but can simply be copy/pasted).   \n"
  },
  {
    "path": "schema/cyclonedx/cyclonedx.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://cyclonedx.org/schema/bom-1.6.schema.json\",\n  \"type\": \"object\",\n  \"title\": \"CycloneDX Bill of Materials Standard\",\n  \"$comment\" : \"CycloneDX JSON schema is published under the terms of the Apache License 2.0.\",\n  \"required\": [\n    \"bomFormat\",\n    \"specVersion\"\n  ],\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"$schema\": {\n      \"type\": \"string\"\n    },\n    \"bomFormat\": {\n      \"type\": \"string\",\n      \"title\": \"BOM Format\",\n      \"description\": \"Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention, nor does JSON schema support namespaces. This value MUST be \\\"CycloneDX\\\".\",\n      \"enum\": [\n        \"CycloneDX\"\n      ]\n    },\n    \"specVersion\": {\n      \"type\": \"string\",\n      \"title\": \"CycloneDX Specification Version\",\n      \"description\": \"The version of the CycloneDX specification the BOM conforms to.\",\n      \"examples\": [\"1.6\"]\n    },\n    \"serialNumber\": {\n      \"type\": \"string\",\n      \"title\": \"BOM Serial Number\",\n      \"description\": \"Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers is RECOMMENDED.\",\n      \"examples\": [\"urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79\"],\n      \"pattern\": \"^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n    },\n    \"version\": {\n      \"type\": \"integer\",\n      \"title\": \"BOM Version\",\n      \"description\": \"Whenever an existing BOM is modified, either manually or through automated processes, the version of the BOM SHOULD be incremented by 1. When a system is presented with multiple BOMs with identical serial numbers, the system SHOULD use the most recent version of the BOM. The default version is '1'.\",\n      \"minimum\": 1,\n      \"default\": 1,\n      \"examples\": [1]\n    },\n    \"metadata\": {\n      \"$ref\": \"#/definitions/metadata\",\n      \"title\": \"BOM Metadata\",\n      \"description\": \"Provides additional information about a BOM.\"\n    },\n    \"components\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/component\"},\n      \"uniqueItems\": true,\n      \"title\": \"Components\",\n      \"description\": \"A list of software and hardware components.\"\n    },\n    \"services\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/service\"},\n      \"uniqueItems\": true,\n      \"title\": \"Services\",\n      \"description\": \"A list of services. This may include microservices, function-as-a-service, and other types of network or intra-process services.\"\n    },\n    \"externalReferences\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n      \"title\": \"External References\",\n      \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n    },\n    \"dependencies\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/dependency\"},\n      \"uniqueItems\": true,\n      \"title\": \"Dependencies\",\n      \"description\": \"Provides the ability to document dependency relationships including provided & implemented components.\"\n    },\n    \"compositions\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/compositions\"},\n      \"uniqueItems\": true,\n      \"title\": \"Compositions\",\n      \"description\": \"Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described.\"\n    },\n    \"vulnerabilities\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/vulnerability\"},\n      \"uniqueItems\": true,\n      \"title\": \"Vulnerabilities\",\n      \"description\": \"Vulnerabilities identified in components or services.\"\n    },\n    \"annotations\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/annotations\"},\n      \"uniqueItems\": true,\n      \"title\": \"Annotations\",\n      \"description\": \"Comments made by people, organizations, or tools about any object with a bom-ref, such as components, services, vulnerabilities, or the BOM itself. Unlike inventory information, annotations may contain opinions or commentary from various stakeholders. Annotations may be inline (with inventory) or externalized via BOM-Link and may optionally be signed.\"\n    },\n    \"formulation\": {\n      \"type\": \"array\",\n      \"items\": {\"$ref\": \"#/definitions/formula\"},\n      \"uniqueItems\": true,\n      \"title\": \"Formulation\",\n      \"description\": \"Describes how a component or service was manufactured or deployed. This is achieved through the use of formulas, workflows, tasks, and steps, which declare the precise steps to reproduce along with the observed formulas describing the steps which transpired in the manufacturing process.\"\n    },\n    \"declarations\": {\n      \"type\": \"object\",\n      \"title\": \"Declarations\",\n      \"description\": \"The list of declarations which describe the conformance to standards. Each declaration may include attestations, claims, and evidence.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"assessors\": {\n          \"type\": \"array\",\n          \"title\": \"Assessors\",\n          \"description\": \"The list of assessors evaluating claims and determining conformance to requirements and confidence in that assessment.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Assessor\",\n            \"description\": \"The assessor who evaluates claims and determines conformance to requirements and confidence in that assessment.\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n              },\n              \"thirdParty\": {\n                \"type\": \"boolean\",\n                \"title\": \"Third Party\",\n                \"description\": \"The boolean indicating if the assessor is outside the organization generating claims. A value of false indicates a self assessor.\"\n              },\n              \"organization\": {\n                \"$ref\": \"#/definitions/organizationalEntity\",\n                \"title\": \"Organization\",\n                \"description\": \"The entity issuing the assessment.\"\n              }\n            }\n          }\n        },\n        \"attestations\": {\n          \"type\": \"array\",\n          \"title\": \"Attestations\",\n          \"description\": \"The list of attestations asserted by an assessor that maps requirements to claims.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Attestation\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"summary\":  {\n                \"type\": \"string\",\n                \"title\": \"Summary\",\n                \"description\": \"The short description explaining the main points of the attestation.\"\n              },\n              \"assessor\": {\n                \"$ref\": \"#/definitions/refLinkType\",\n                \"title\": \"Assessor\",\n                \"description\": \"The `bom-ref` to the assessor asserting the attestation.\"\n              },\n              \"map\": {\n                \"type\": \"array\",\n                \"title\": \"Map\",\n                \"description\": \"The grouping of requirements to claims and the attestors declared conformance and confidence thereof.\",\n                \"items\": {\n                  \"type\": \"object\",\n                  \"title\": \"Map\",\n                  \"additionalProperties\": false,\n                  \"properties\": {\n                    \"requirement\": {\n                      \"$ref\": \"#/definitions/refLinkType\",\n                      \"title\": \"Requirement\",\n                      \"description\": \"The `bom-ref` to the requirement being attested to.\"\n                    },\n                    \"claims\": {\n                      \"type\": \"array\",\n                      \"title\": \"Claims\",\n                      \"description\": \"The list of `bom-ref` to the claims being attested to.\",\n                      \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n                    },\n                    \"counterClaims\": {\n                      \"type\": \"array\",\n                      \"title\": \"Counter Claims\",\n                      \"description\": \"The list of  `bom-ref` to the counter claims being attested to.\",\n                      \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n                    },\n                    \"conformance\": {\n                      \"type\": \"object\",\n                      \"title\": \"Conformance\",\n                      \"description\": \"The conformance of the claim meeting a requirement.\",\n                      \"additionalProperties\": false,\n                      \"properties\": {\n                        \"score\": {\n                          \"type\": \"number\",\n                          \"minimum\": 0,\n                          \"maximum\": 1,\n                          \"title\": \"Score\",\n                          \"description\": \"The conformance of the claim between and inclusive of 0 and 1, where 1 is 100% conformance.\"\n                        },\n                        \"rationale\": {\n                          \"type\": \"string\",\n                          \"title\": \"Rationale\",\n                          \"description\": \"The rationale for the conformance score.\"\n                        },\n                        \"mitigationStrategies\": {\n                          \"type\": \"array\",\n                          \"title\": \"Mitigation Strategies\",\n                          \"description\": \"The list of  `bom-ref` to the evidence provided describing the mitigation strategies.\",\n                          \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n                        }\n                      }\n                    },\n                    \"confidence\": {\n                      \"type\": \"object\",\n                      \"title\": \"Confidence\",\n                      \"description\": \"The confidence of the claim meeting the requirement.\",\n                      \"additionalProperties\": false,\n                      \"properties\": {\n                        \"score\": {\n                          \"type\": \"number\",\n                          \"minimum\": 0,\n                          \"maximum\": 1,\n                          \"title\": \"Score\",\n                          \"description\": \"The confidence of the claim between and inclusive of 0 and 1, where 1 is 100% confidence.\"\n                        },\n                        \"rationale\": {\n                          \"type\": \"string\",\n                          \"title\": \"Rationale\",\n                          \"description\": \"The rationale for the confidence score.\"\n                        }\n                      }\n                    }\n                  }\n                }\n              },\n              \"signature\": {\n                \"$ref\": \"#/definitions/signature\",\n                \"title\": \"Signature\",\n                \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n              }\n            }\n          }\n        },\n        \"claims\": {\n          \"type\": \"array\",\n          \"title\": \"Claims\",\n          \"description\": \"The list of claims.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Claim\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n              },\n              \"target\": {\n                \"$ref\": \"#/definitions/refLinkType\",\n                \"title\": \"Target\",\n                \"description\": \"The `bom-ref` to a target representing a specific system, application, API, module, team, person, process, business unit, company, etc...  that this claim is being applied to.\"\n              },\n              \"predicate\": {\n                \"type\": \"string\",\n                \"title\": \"Predicate\",\n                \"description\": \"The specific statement or assertion about the target.\"\n              },\n              \"mitigationStrategies\": {\n                \"type\": \"array\",\n                \"title\": \"Mitigation Strategies\",\n                \"description\": \"The list of  `bom-ref` to the evidence provided describing the mitigation strategies. Each mitigation strategy should include an explanation of how any weaknesses in the evidence will be mitigated.\",\n                \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n              },\n              \"reasoning\": {\n                \"type\": \"string\",\n                \"title\": \"Reasoning\",\n                \"description\": \"The written explanation of why the evidence provided substantiates the claim.\"\n              },\n              \"evidence\": {\n                \"type\": \"array\",\n                \"title\": \"Evidence\",\n                \"description\": \"The list of `bom-ref` to evidence that supports this claim.\",\n                \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n              },\n              \"counterEvidence\": {\n                \"type\": \"array\",\n                \"title\": \"Counter Evidence\",\n                \"description\": \"The list of `bom-ref` to counterEvidence that supports this claim.\",\n                \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n              },\n              \"externalReferences\": {\n                \"type\": \"array\",\n                \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n                \"title\": \"External References\",\n                \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n              },\n              \"signature\": {\n                \"$ref\": \"#/definitions/signature\",\n                \"title\": \"Signature\",\n                \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n              }\n            }\n          }\n        },\n        \"evidence\": {\n          \"type\": \"array\",\n          \"title\": \"Evidence\",\n          \"description\": \"The list of evidence\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Evidence\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n              },\n              \"propertyName\": {\n                \"type\": \"string\",\n                \"title\": \"Property Name\",\n                \"description\": \"The reference to the property name as defined in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy/).\"\n              },\n              \"description\": {\n                \"type\": \"string\",\n                \"title\": \"Description\",\n                \"description\": \"The written description of what this evidence is and how it was created.\"\n              },\n              \"data\": {\n                \"type\": \"array\",\n                \"title\": \"Data\",\n                \"description\": \"The output or analysis that supports claims.\",\n                \"items\": {\n                  \"type\": \"object\",\n                  \"title\": \"Data\",\n                  \"additionalProperties\": false,\n                  \"properties\": {\n                    \"name\": {\n                      \"title\": \"Data Name\",\n                      \"description\": \"The name of the data.\",\n                      \"type\": \"string\"\n                    },\n                    \"contents\": {\n                      \"type\": \"object\",\n                      \"title\": \"Data Contents\",\n                      \"description\": \"The contents or references to the contents of the data being described.\",\n                      \"additionalProperties\": false,\n                      \"properties\": {\n                        \"attachment\": {\n                          \"title\": \"Data Attachment\",\n                          \"description\": \"An optional way to include textual or encoded data.\",\n                          \"$ref\": \"#/definitions/attachment\"\n                        },\n                        \"url\": {\n                          \"type\": \"string\",\n                          \"title\": \"Data URL\",\n                          \"description\": \"The URL to where the data can be retrieved.\",\n                          \"format\": \"iri-reference\"\n                        }\n                      }\n                    },\n                    \"classification\": {\n                      \"$ref\": \"#/definitions/dataClassification\"\n                    },\n                    \"sensitiveData\": {\n                      \"type\": \"array\",\n                      \"title\": \"Sensitive Data\",\n                      \"description\": \"A description of any sensitive data included.\",\n                      \"items\": {\n                        \"type\": \"string\"\n                      }\n                    },\n                    \"governance\": {\n                      \"title\": \"Data Governance\",\n                      \"$ref\": \"#/definitions/dataGovernance\"\n                    }\n                  }\n                }\n              },\n              \"created\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Created\",\n                \"description\": \"The date and time (timestamp) when the evidence was created.\"\n              },\n              \"expires\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Expires\",\n                \"description\": \"The optional date and time (timestamp) when the evidence is no longer valid.\"\n              },\n              \"author\": {\n                \"$ref\": \"#/definitions/organizationalContact\",\n                \"title\": \"Author\",\n                \"description\": \"The author of the evidence.\"\n              },\n              \"reviewer\": {\n                \"$ref\": \"#/definitions/organizationalContact\",\n                \"title\": \"Reviewer\",\n                \"description\": \"The reviewer of the evidence.\"\n              },\n              \"signature\": {\n                \"$ref\": \"#/definitions/signature\",\n                \"title\": \"Signature\",\n                \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n              }\n            }\n          }\n        },\n        \"targets\": {\n          \"type\": \"object\",\n          \"title\": \"Targets\",\n          \"description\": \"The list of targets which claims are made against.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"organizations\": {\n              \"type\": \"array\",\n              \"title\": \"Organizations\",\n              \"description\": \"The list of organizations which claims are made against.\",\n              \"items\": {\"$ref\": \"#/definitions/organizationalEntity\"}\n            },\n            \"components\": {\n              \"type\": \"array\",\n              \"title\": \"Components\",\n              \"description\": \"The list of components which claims are made against.\",\n              \"items\": {\"$ref\": \"#/definitions/component\"}\n            },\n            \"services\": {\n              \"type\": \"array\",\n              \"title\": \"Services\",\n              \"description\": \"The list of services which claims are made against.\",\n              \"items\": {\"$ref\": \"#/definitions/service\"}\n            }\n          }\n        },\n        \"affirmation\": {\n          \"type\": \"object\",\n          \"title\": \"Affirmation\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"statement\": {\n              \"type\": \"string\",\n              \"title\": \"Statement\",\n              \"description\": \"The brief statement affirmed by an individual regarding all declarations.\\n*- Notes This could be an affirmation of acceptance by a third-party auditor or receiving individual of a file.\",\n              \"examples\": [ \"I certify, to the best of my knowledge, that all information is correct.\" ]\n            },\n            \"signatories\": {\n              \"type\": \"array\",\n              \"title\": \"Signatories\",\n              \"description\": \"The list of signatories authorized on behalf of an organization to assert validity of this document.\",\n              \"items\": {\n                \"type\": \"object\",\n                \"title\": \"Signatory\",\n                \"additionalProperties\": false,\n                \"oneOf\": [\n                  {\n                    \"required\": [\"signature\"]\n                  },\n                  {\n                    \"required\": [\"externalReference\", \"organization\"]\n                  }\n                ],\n                \"properties\": {\n                  \"name\": {\n                    \"type\": \"string\",\n                    \"title\": \"Name\",\n                    \"description\": \"The signatory's name.\"\n                  },\n                  \"role\": {\n                    \"type\": \"string\",\n                    \"title\": \"Role\",\n                    \"description\": \"The signatory's role within an organization.\"\n                  },\n                  \"signature\": {\n                    \"$ref\": \"#/definitions/signature\",\n                    \"title\": \"Signature\",\n                    \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n                  },\n                  \"organization\": {\n                    \"$ref\": \"#/definitions/organizationalEntity\",\n                    \"title\": \"Organization\",\n                    \"description\": \"The signatory's organization.\"\n                  },\n                  \"externalReference\": {\n                    \"$ref\": \"#/definitions/externalReference\",\n                    \"title\": \"External Reference\",\n                    \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n                  }\n                }\n              }\n            },\n            \"signature\": {\n              \"$ref\": \"#/definitions/signature\",\n              \"title\": \"Signature\",\n              \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n            }\n          }\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"definitions\": {\n      \"type\": \"object\",\n      \"title\": \"Definitions\",\n      \"description\": \"A collection of reusable objects that are defined and may be used elsewhere in the BOM.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"standards\": {\n          \"type\": \"array\",\n          \"title\": \"Standards\",\n          \"description\": \"The list of standards which may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/standard\"\n          }\n        }\n      }\n    },\n    \"properties\": {\n      \"type\": \"array\",\n      \"title\": \"Properties\",\n      \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n      \"items\": {\n        \"$ref\": \"#/definitions/property\"\n      }\n    },\n    \"signature\": {\n      \"$ref\": \"#/definitions/signature\",\n      \"title\": \"Signature\",\n      \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n    }\n  },\n  \"definitions\": {\n    \"refType\": {\n      \"description\": \"Identifier for referable and therefore interlinkable elements.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"$comment\": \"TODO (breaking change): add a format constraint that prevents the value from staring with 'urn:cdx:'\"\n    },\n    \"refLinkType\": {\n      \"description\": \"Descriptor for an element identified by the attribute 'bom-ref' in the same BOM document.\\nIn contrast to `bomLinkElementType`.\",\n      \"$ref\": \"#/definitions/refType\"\n    },\n    \"bomLinkDocumentType\": {\n      \"title\": \"BOM-Link Document\",\n      \"description\": \"Descriptor for another BOM document. See https://cyclonedx.org/capabilities/bomlink/\",\n      \"type\": \"string\",\n      \"format\": \"iri-reference\",\n      \"pattern\": \"^urn:cdx:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/[1-9][0-9]*$\",\n      \"$comment\": \"part of the pattern is based on `bom.serialNumber`'s pattern\"\n    },\n    \"bomLinkElementType\": {\n      \"title\": \"BOM-Link Element\",\n      \"description\": \"Descriptor for an element in a BOM document. See https://cyclonedx.org/capabilities/bomlink/\",\n      \"type\": \"string\",\n      \"format\": \"iri-reference\",\n      \"pattern\": \"^urn:cdx:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/[1-9][0-9]*#.+$\",\n      \"$comment\": \"part of the pattern is based on `bom.serialNumber`'s pattern\"\n    },\n    \"bomLink\": {\n      \"title\": \"BOM-Link\",\n      \"anyOf\": [\n        {\n          \"title\": \"BOM-Link Document\",\n          \"$ref\": \"#/definitions/bomLinkDocumentType\"\n        },\n        {\n          \"title\": \"BOM-Link Element\",\n          \"$ref\": \"#/definitions/bomLinkElementType\"\n        }\n      ]\n    },\n    \"metadata\": {\n      \"type\": \"object\",\n      \"title\": \"BOM Metadata\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"description\": \"The date and time (timestamp) when the BOM was created.\"\n        },\n        \"lifecycles\": {\n          \"type\": \"array\",\n          \"title\": \"Lifecycles\",\n          \"description\": \"Lifecycles communicate the stage(s) in which data in the BOM was captured. Different types of data may be available at various phases of a lifecycle, such as the Software Development Lifecycle (SDLC), IT Asset Management (ITAM), and Software Asset Management (SAM). Thus, a BOM may include data specific to or only obtainable in a given lifecycle.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Lifecycle\",\n            \"description\": \"The product lifecycle(s) that this BOM represents.\",\n            \"oneOf\": [\n              {\n                \"title\": \"Pre-Defined Phase\",\n                \"required\": [\"phase\"],\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"phase\": {\n                    \"type\": \"string\",\n                    \"title\": \"Phase\",\n                    \"description\": \"A pre-defined phase in the product lifecycle.\",\n                    \"enum\": [\n                      \"design\",\n                      \"pre-build\",\n                      \"build\",\n                      \"post-build\",\n                      \"operations\",\n                      \"discovery\",\n                      \"decommission\"\n                    ],\n                    \"meta:enum\": {\n                      \"design\": \"BOM produced early in the development lifecycle containing an inventory of components and services that are proposed or planned to be used. The inventory may need to be procured, retrieved, or resourced prior to use.\",\n                      \"pre-build\": \"BOM consisting of information obtained prior to a build process and may contain source files and development artifacts and manifests. The inventory may need to be resolved and retrieved prior to use.\",\n                      \"build\": \"BOM consisting of information obtained during a build process where component inventory is available for use. The precise versions of resolved components are usually available at this time as well as the provenance of where the components were retrieved from.\",\n                      \"post-build\": \"BOM consisting of information obtained after a build process has completed and the resulting components(s) are available for further analysis. Built components may exist as the result of a CI/CD process, may have been installed or deployed to a system or device, and may need to be retrieved or extracted from the system or device.\",\n                      \"operations\": \"BOM produced that represents inventory that is running and operational. This may include staging or production environments and will generally encompass multiple SBOMs describing the applications and operating system, along with HBOMs describing the hardware that makes up the system. Operations Bill of Materials (OBOM) can provide full-stack inventory of runtime environments, configurations, and additional dependencies.\",\n                      \"discovery\": \"BOM consisting of information observed through network discovery providing point-in-time enumeration of embedded, on-premise, and cloud-native services such as server applications, connected devices, microservices, and serverless functions.\",\n                      \"decommission\": \"BOM containing inventory that will be, or has been retired from operations.\"\n                    }\n                  }\n                }\n              },\n              {\n                \"title\": \"Custom Phase\",\n                \"required\": [\"name\"],\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"name\": {\n                    \"type\": \"string\",\n                    \"title\": \"Name\",\n                    \"description\": \"The name of the lifecycle phase\"\n                  },\n                  \"description\": {\n                    \"type\": \"string\",\n                    \"title\": \"Description\",\n                    \"description\": \"The description of the lifecycle phase\"\n                  }\n                }\n              }\n            ]\n          }\n      },\n        \"tools\": {\n          \"title\": \"Tools\",\n          \"description\": \"The tool(s) used in the creation, enrichment, and validation of the BOM.\",\n          \"oneOf\": [\n            {\n              \"type\": \"object\",\n              \"title\": \"Tools\",\n              \"description\": \"The tool(s) used in the creation, enrichment, and validation of the BOM.\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"components\": {\n                  \"type\": \"array\",\n                  \"items\": {\"$ref\": \"#/definitions/component\"},\n                  \"uniqueItems\": true,\n                  \"title\": \"Components\",\n                  \"description\": \"A list of software and hardware components used as tools.\"\n                },\n                \"services\": {\n                  \"type\": \"array\",\n                  \"items\": {\"$ref\": \"#/definitions/service\"},\n                  \"uniqueItems\": true,\n                  \"title\": \"Services\",\n                  \"description\": \"A list of services used as tools. This may include microservices, function-as-a-service, and other types of network or intra-process services.\"\n                }\n              }\n            },\n            {\n              \"type\": \"array\",\n              \"title\": \"Tools (legacy)\",\n              \"description\": \"[Deprecated] The tool(s) used in the creation, enrichment, and validation of the BOM.\",\n              \"items\": {\"$ref\": \"#/definitions/tool\"}\n            }\n          ]\n        },\n        \"manufacturer\": {\n          \"title\": \"BOM Manufacturer\",\n          \"description\": \"The organization that created the BOM.\\nManufacturer is common in BOMs created through automated processes. BOMs created through manual means may have `@.authors` instead.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"authors\": {\n          \"type\": \"array\",\n          \"title\": \"BOM Authors\",\n          \"description\": \"The person(s) who created the BOM.\\nAuthors are common in BOMs created through manual processes. BOMs created through automated means may have `@.manufacturer` instead.\",\n          \"items\": {\"$ref\": \"#/definitions/organizationalContact\"}\n        },\n        \"component\": {\n          \"title\": \"Component\",\n          \"description\": \"The component that the BOM describes.\",\n          \"$ref\": \"#/definitions/component\"\n        },\n        \"manufacture\": {\n          \"deprecated\": true,\n          \"title\": \"Component Manufacture (legacy)\",\n          \"description\": \"[Deprecated] This will be removed in a future version. Use the `@.component.manufacturer` instead.\\nThe organization that manufactured the component that the BOM describes.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"supplier\": {\n          \"title\": \"Supplier\",\n          \"description\": \" The organization that supplied the component that the BOM describes. The supplier may often be the manufacturer, but may also be a distributor or repackager.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"licenses\": {\n          \"title\": \"BOM License(s)\",\n          \"description\": \"The license information for the BOM document.\\nThis may be different from the license(s) of the component(s) that the BOM describes.\",\n          \"$ref\": \"#/definitions/licenseChoice\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        }\n      }\n    },\n    \"tool\": {\n      \"type\": \"object\",\n      \"title\": \"Tool\",\n      \"description\": \"[Deprecated] This will be removed in a future version. Use component or service instead. Information about the automated or manual tool used\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"vendor\": {\n          \"type\": \"string\",\n          \"title\": \"Tool Vendor\",\n          \"description\": \"The name of the vendor who created the tool\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Tool Name\",\n          \"description\": \"The name of the tool\"\n        },\n        \"version\": {\n          \"$ref\": \"#/definitions/version\",\n          \"title\": \"Tool Version\",\n          \"description\": \"The version of the tool\"\n        },\n        \"hashes\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/hash\"},\n          \"title\": \"Hashes\",\n          \"description\": \"The hashes of the tool (if applicable).\"\n        },\n        \"externalReferences\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n          \"title\": \"External References\",\n          \"description\": \"External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n        }\n      }\n    },\n    \"organizationalEntity\": {\n      \"type\": \"object\",\n      \"title\": \"Organizational Entity\",\n      \"description\": \"\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Organization Name\",\n          \"description\": \"The name of the organization\",\n          \"examples\": [\n            \"Example Inc.\"\n          ]\n        },\n        \"address\": {\n          \"$ref\": \"#/definitions/postalAddress\",\n          \"title\": \"Organization Address\",\n          \"description\": \"The physical address (location) of the organization\"\n        },\n        \"url\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"iri-reference\"\n          },\n          \"title\": \"Organization URL(s)\",\n          \"description\": \"The URL of the organization. Multiple URLs are allowed.\",\n          \"examples\": [\"https://example.com\"]\n        },\n        \"contact\": {\n          \"type\": \"array\",\n          \"title\": \"Organizational Contact\",\n          \"description\": \"A contact at the organization. Multiple contacts are allowed.\",\n          \"items\": {\"$ref\": \"#/definitions/organizationalContact\"}\n        }\n      }\n    },\n    \"organizationalContact\": {\n      \"type\": \"object\",\n      \"title\": \"Organizational Contact\",\n      \"description\": \"\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"The name of a contact\",\n          \"examples\": [\"Contact name\"]\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"format\": \"idn-email\",\n          \"title\": \"Email Address\",\n          \"description\": \"The email address of the contact.\",\n          \"examples\": [\"firstname.lastname@example.com\"]\n        },\n        \"phone\": {\n          \"type\": \"string\",\n          \"title\": \"Phone\",\n          \"description\": \"The phone number of the contact.\",\n          \"examples\": [\"800-555-1212\"]\n        }\n      }\n    },\n    \"component\": {\n      \"type\": \"object\",\n      \"title\": \"Component\",\n      \"required\": [\n        \"type\",\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"application\",\n            \"framework\",\n            \"library\",\n            \"container\",\n            \"platform\",\n            \"operating-system\",\n            \"device\",\n            \"device-driver\",\n            \"firmware\",\n            \"file\",\n            \"machine-learning-model\",\n            \"data\",\n            \"cryptographic-asset\"\n          ],\n          \"meta:enum\": {\n            \"application\": \"A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications.\",\n            \"framework\": \"A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries.\",\n            \"library\": \"A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing)) for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED.\",\n            \"container\": \"A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization).\",\n            \"platform\": \"A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms.\",\n            \"operating-system\": \"A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system).\",\n            \"device\": \"A hardware device such as a processor or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device. See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md).\",\n            \"device-driver\": \"A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver).\",\n            \"firmware\": \"A special type of software that provides low-level control over a device's hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware).\",\n            \"file\": \"A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files.\",\n            \"machine-learning-model\": \"A model based on training data that can make predictions or decisions without being explicitly programmed to do so.\",\n            \"data\": \"A collection of discrete values that convey information.\",\n            \"cryptographic-asset\": \"A cryptographic asset including algorithms, protocols, certificates, keys, tokens, and secrets.\"\n          },\n          \"title\": \"Component Type\",\n          \"description\": \"Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component.\",\n          \"examples\": [\"library\"]\n        },\n        \"mime-type\": {\n          \"type\": \"string\",\n          \"title\": \"Mime-Type\",\n          \"description\": \"The optional mime-type of the component. When used on file components, the mime-type can provide additional context about the kind of file being represented, such as an image, font, or executable. Some library or framework components may also have an associated mime-type.\",\n          \"examples\": [\"image/jpeg\"],\n          \"pattern\": \"^[-+a-z0-9.]+/[-+a-z0-9.]+$\"\n        },\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"supplier\": {\n          \"title\": \"Component Supplier\",\n          \"description\": \" The organization that supplied the component. The supplier may often be the manufacturer, but may also be a distributor or repackager.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"manufacturer\": {\n          \"title\": \"Component Manufacturer\",\n          \"description\": \"The organization that created the component.\\nManufacturer is common in components created through automated processes. Components created through manual means may have `@.authors` instead.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"authors\" :{\n          \"type\": \"array\",\n          \"title\": \"Component Authors\",\n          \"description\": \"The person(s) who created the component.\\nAuthors are common in components created through manual processes. Components created through automated means may have `@.manufacturer` instead.\",\n          \"items\": {\"$ref\": \"#/definitions/organizationalContact\"}\n        },\n        \"author\": {\n          \"deprecated\": true,\n          \"type\": \"string\",\n          \"title\": \"Component Author (legacy)\",\n          \"description\": \"[Deprecated] This will be removed in a future version. Use `@.authors` or `@.manufacturer` instead.\\nThe person(s) or organization(s) that authored the component\",\n          \"examples\": [\"Acme Inc\"]\n        },\n        \"publisher\": {\n          \"type\": \"string\",\n          \"title\": \"Component Publisher\",\n          \"description\": \"The person(s) or organization(s) that published the component\",\n          \"examples\": [\"Acme Inc\"]\n        },\n        \"group\": {\n          \"type\": \"string\",\n          \"title\": \"Component Group\",\n          \"description\": \"The grouping name or identifier. This will often be a shortened, single name of the company or project that produced the component, or the source package or domain name. Whitespace and special characters should be avoided. Examples include: apache, org.apache.commons, and apache.org.\",\n          \"examples\": [\"com.acme\"]\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Component Name\",\n          \"description\": \"The name of the component. This will often be a shortened, single name of the component. Examples: commons-lang3 and jquery\",\n          \"examples\": [\"tomcat-catalina\"]\n        },\n        \"version\": {\n          \"$ref\": \"#/definitions/version\",\n          \"title\": \"Component Version\",\n          \"description\": \"The component version. The version should ideally comply with semantic versioning but is not enforced.\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Component Description\",\n          \"description\": \"Specifies a description for the component\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"required\",\n            \"optional\",\n            \"excluded\"\n          ],\n          \"meta:enum\": {\n            \"required\": \"The component is required for runtime\",\n            \"optional\": \"The component is optional at runtime. Optional components are components that are not capable of being called due to them not being installed or otherwise accessible by any means. Components that are installed but due to configuration or other restrictions are prohibited from being called must be scoped as 'required'.\",\n            \"excluded\": \"Components that are excluded provide the ability to document component usage for test and other non-runtime purposes. Excluded components are not reachable within a call graph at runtime.\"\n          },\n          \"title\": \"Component Scope\",\n          \"description\": \"Specifies the scope of the component. If scope is not specified, 'required' scope SHOULD be assumed by the consumer of the BOM.\",\n          \"default\": \"required\"\n        },\n        \"hashes\": {\n          \"type\": \"array\",\n          \"title\": \"Component Hashes\",\n          \"description\": \"The hashes of the component.\",\n          \"items\": {\"$ref\": \"#/definitions/hash\"}\n        },\n        \"licenses\": {\n          \"$ref\": \"#/definitions/licenseChoice\",\n          \"title\": \"Component License(s)\"\n        },\n        \"copyright\": {\n          \"type\": \"string\",\n          \"title\": \"Component Copyright\",\n          \"description\": \"A copyright notice informing users of the underlying claims to copyright ownership in a published work.\",\n          \"examples\": [\"Acme Inc\"]\n        },\n        \"cpe\": {\n          \"type\": \"string\",\n          \"title\": \"Common Platform Enumeration (CPE)\",\n          \"description\": \"Asserts the identity of the component using CPE. The CPE must conform to the CPE 2.2 or 2.3 specification. See [https://nvd.nist.gov/products/cpe](https://nvd.nist.gov/products/cpe). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.\",\n          \"examples\": [\"cpe:2.3:a:acme:component_framework:-:*:*:*:*:*:*:*\"]\n        },\n        \"purl\": {\n          \"type\": \"string\",\n          \"title\": \"Package URL (purl)\",\n          \"description\": \"Asserts the identity of the component using package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.\",\n          \"examples\": [\"pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar\"]\n        },\n        \"omniborId\": {\n          \"type\": \"array\",\n          \"title\": \"OmniBOR Artifact Identifier (gitoid)\",\n          \"description\": \"Asserts the identity of the component using the OmniBOR Artifact ID. The OmniBOR, if specified, MUST be valid and conform to the specification defined at: [https://www.iana.org/assignments/uri-schemes/prov/gitoid](https://www.iana.org/assignments/uri-schemes/prov/gitoid). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.\",\n          \"items\": { \"type\": \"string\" },\n          \"examples\": [\n            \"gitoid:blob:sha1:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3\",\n            \"gitoid:blob:sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\"\n          ]\n        },\n        \"swhid\": {\n          \"type\": \"array\",\n          \"title\": \"SoftWare Heritage Identifier\",\n          \"description\": \"Asserts the identity of the component using the Software Heritage persistent identifier (SWHID). The SWHID, if specified, MUST be valid and conform to the specification defined at: [https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html](https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.\",\n          \"items\": { \"type\": \"string\" },\n          \"examples\": [\"swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2\"]\n        },\n        \"swid\": {\n          \"$ref\": \"#/definitions/swid\",\n          \"title\": \"SWID Tag\",\n          \"description\": \"Asserts the identity of the component using [ISO-IEC 19770-2 Software Identification (SWID) Tags](https://www.iso.org/standard/65666.html). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.\"\n        },\n        \"modified\": {\n          \"type\": \"boolean\",\n          \"title\": \"Component Modified From Original\",\n          \"description\": \"[Deprecated] This will be removed in a future version. Use the pedigree element instead to supply information on exactly how the component was modified. A boolean value indicating if the component has been modified from the original. A value of true indicates the component is a derivative of the original. A value of false indicates the component has not been modified from the original.\"\n        },\n        \"pedigree\": {\n          \"type\": \"object\",\n          \"title\": \"Component Pedigree\",\n          \"description\": \"Component pedigree is a way to document complex supply chain scenarios where components are created, distributed, modified, redistributed, combined with other components, etc. Pedigree supports viewing this complex chain from the beginning, the end, or anywhere in the middle. It also provides a way to document variants where the exact relation may not be known.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"ancestors\": {\n              \"type\": \"array\",\n              \"title\": \"Ancestors\",\n              \"description\": \"Describes zero or more components in which a component is derived from. This is commonly used to describe forks from existing projects where the forked version contains a ancestor node containing the original component it was forked from. For example, Component A is the original component. Component B is the component being used and documented in the BOM. However, Component B contains a pedigree node with a single ancestor documenting Component A - the original component from which Component B is derived from.\",\n              \"items\": {\"$ref\": \"#/definitions/component\"}\n            },\n            \"descendants\": {\n              \"type\": \"array\",\n              \"title\": \"Descendants\",\n              \"description\": \"Descendants are the exact opposite of ancestors. This provides a way to document all forks (and their forks) of an original or root component.\",\n              \"items\": {\"$ref\": \"#/definitions/component\"}\n            },\n            \"variants\": {\n              \"type\": \"array\",\n              \"title\": \"Variants\",\n              \"description\": \"Variants describe relations where the relationship between the components is not known. For example, if Component A contains nearly identical code to Component B. They are both related, but it is unclear if one is derived from the other, or if they share a common ancestor.\",\n              \"items\": {\"$ref\": \"#/definitions/component\"}\n            },\n            \"commits\": {\n              \"type\": \"array\",\n              \"title\": \"Commits\",\n              \"description\": \"A list of zero or more commits which provide a trail describing how the component deviates from an ancestor, descendant, or variant.\",\n              \"items\": {\"$ref\": \"#/definitions/commit\"}\n            },\n            \"patches\": {\n              \"type\": \"array\",\n              \"title\": \"Patches\",\n              \"description\": \">A list of zero or more patches describing how the component deviates from an ancestor, descendant, or variant. Patches may be complementary to commits or may be used in place of commits.\",\n              \"items\": {\"$ref\": \"#/definitions/patch\"}\n            },\n            \"notes\": {\n              \"type\": \"string\",\n              \"title\": \"Notes\",\n              \"description\": \"Notes, observations, and other non-structured commentary describing the components pedigree.\"\n            }\n          }\n        },\n        \"externalReferences\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n          \"title\": \"External References\",\n          \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n        },\n        \"components\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/component\"},\n          \"uniqueItems\": true,\n          \"title\": \"Components\",\n          \"description\": \"A list of software and hardware components included in the parent component. This is not a dependency tree. It provides a way to specify a hierarchical representation of component assemblies, similar to system &#8594; subsystem &#8594; parts assembly in physical supply chains.\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/definitions/componentEvidence\",\n          \"title\": \"Evidence\",\n          \"description\": \"Provides the ability to document evidence collected through various forms of extraction or analysis.\"\n        },\n        \"releaseNotes\": {\n          \"$ref\": \"#/definitions/releaseNotes\",\n          \"title\": \"Release notes\",\n          \"description\": \"Specifies optional release notes.\"\n        },\n         \"modelCard\": {\n          \"$ref\": \"#/definitions/modelCard\",\n          \"title\": \"AI/ML Model Card\"\n        },\n        \"data\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/componentData\"},\n          \"title\": \"Data\",\n          \"description\": \"This object SHOULD be specified for any component of type `data` and MUST NOT be specified for other component types.\"\n        },\n        \"cryptoProperties\": {\n          \"$ref\": \"#/definitions/cryptoProperties\",\n          \"title\": \"Cryptographic Properties\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        },\n        \"tags\": {\n          \"$ref\": \"#/definitions/tags\",\n          \"title\": \"Tags\"\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"swid\": {\n      \"type\": \"object\",\n      \"title\": \"SWID Tag\",\n      \"description\": \"Specifies metadata and content for ISO-IEC 19770-2 Software Identification (SWID) Tags.\",\n      \"required\": [\n        \"tagId\",\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"tagId\": {\n          \"type\": \"string\",\n          \"title\": \"Tag ID\",\n          \"description\": \"Maps to the tagId of a SoftwareIdentity.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"Maps to the name of a SoftwareIdentity.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"title\": \"Version\",\n          \"default\": \"0.0\",\n          \"description\": \"Maps to the version of a SoftwareIdentity.\"\n        },\n        \"tagVersion\": {\n          \"type\": \"integer\",\n          \"title\": \"Tag Version\",\n          \"default\": 0,\n          \"description\": \"Maps to the tagVersion of a SoftwareIdentity.\"\n        },\n        \"patch\": {\n          \"type\": \"boolean\",\n          \"title\": \"Patch\",\n          \"default\": false,\n          \"description\": \"Maps to the patch of a SoftwareIdentity.\"\n        },\n        \"text\": {\n          \"title\": \"Attachment text\",\n          \"description\": \"Specifies the metadata and content of the SWID tag.\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"URL\",\n          \"description\": \"The URL to the SWID file.\",\n          \"format\": \"iri-reference\"\n        }\n      }\n    },\n    \"attachment\": {\n      \"type\": \"object\",\n      \"title\": \"Attachment\",\n      \"description\": \"Specifies the metadata and content for an attachment.\",\n      \"required\": [\n        \"content\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"contentType\": {\n          \"type\": \"string\",\n          \"title\": \"Content-Type\",\n          \"description\": \"Specifies the content type of the text. Defaults to text/plain if not specified.\",\n          \"default\": \"text/plain\"\n        },\n        \"encoding\": {\n          \"type\": \"string\",\n          \"title\": \"Encoding\",\n          \"description\": \"Specifies the optional encoding the text is represented in.\",\n          \"enum\": [\n            \"base64\"\n          ],\n          \"meta:enum\": {\n            \"base64\": \"Base64 is a binary-to-text encoding scheme that represents binary data in an ASCII string.\"\n          }\n        },\n        \"content\": {\n          \"type\": \"string\",\n          \"title\": \"Attachment Text\",\n          \"description\": \"The attachment data. Proactive controls such as input validation and sanitization should be employed to prevent misuse of attachment text.\"\n        }\n      }\n    },\n    \"hash\": {\n      \"type\": \"object\",\n      \"title\": \"Hash\",\n      \"required\": [\n        \"alg\",\n        \"content\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"alg\": {\n          \"$ref\": \"#/definitions/hash-alg\"\n        },\n        \"content\": {\n          \"$ref\": \"#/definitions/hash-content\"\n        }\n      }\n    },\n    \"hash-alg\": {\n      \"type\": \"string\",\n      \"title\": \"Hash Algorithm\",\n      \"description\": \"The algorithm that generated the hash value.\",\n      \"enum\": [\n        \"MD5\",\n        \"SHA-1\",\n        \"SHA-256\",\n        \"SHA-384\",\n        \"SHA-512\",\n        \"SHA3-256\",\n        \"SHA3-384\",\n        \"SHA3-512\",\n        \"BLAKE2b-256\",\n        \"BLAKE2b-384\",\n        \"BLAKE2b-512\",\n        \"BLAKE3\"\n      ]\n    },\n    \"hash-content\": {\n      \"type\": \"string\",\n      \"title\": \"Hash Value\",\n      \"description\": \"The value of the hash.\",\n      \"examples\": [\"3942447fac867ae5cdb3229b658f4d48\"],\n      \"pattern\": \"^([a-fA-F0-9]{32}|[a-fA-F0-9]{40}|[a-fA-F0-9]{64}|[a-fA-F0-9]{96}|[a-fA-F0-9]{128})$\"\n    },\n    \"license\": {\n      \"type\": \"object\",\n      \"title\": \"License\",\n      \"oneOf\": [\n        {\n          \"required\": [\"id\"]\n        },\n        {\n          \"required\": [\"name\"]\n        }\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"id\": {\n          \"$ref\": \"spdx.schema.json\",\n          \"title\": \"License ID (SPDX)\",\n          \"description\": \"A valid SPDX license ID\",\n          \"examples\": [\"Apache-2.0\"]\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"License Name\",\n          \"description\": \"If SPDX does not define the license used, this field may be used to provide the license name\",\n          \"examples\": [\"Acme Software License\"]\n        },\n        \"acknowledgement\": {\n          \"$ref\": \"#/definitions/licenseAcknowledgementEnumeration\"\n        },\n        \"text\": {\n          \"title\": \"License text\",\n          \"description\": \"An optional way to include the textual content of a license.\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"License URL\",\n          \"description\": \"The URL to the license file. If specified, a 'license' externalReference should also be specified for completeness\",\n          \"examples\": [\"https://www.apache.org/licenses/LICENSE-2.0.txt\"],\n          \"format\": \"iri-reference\"\n        },\n        \"licensing\": {\n          \"type\": \"object\",\n          \"title\": \"Licensing information\",\n          \"description\": \"Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and other important metadata\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"altIds\": {\n              \"type\": \"array\",\n              \"title\": \"Alternate License Identifiers\",\n              \"description\": \"License identifiers that may be used to manage licenses and their lifecycle\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"licensor\": {\n              \"title\": \"Licensor\",\n              \"description\": \"The individual or organization that grants a license to another individual or organization\",\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"organization\": {\n                  \"title\": \"Licensor (Organization)\",\n                  \"description\": \"The organization that granted the license\",\n                  \"$ref\": \"#/definitions/organizationalEntity\"\n                },\n                \"individual\": {\n                  \"title\": \"Licensor (Individual)\",\n                  \"description\": \"The individual, not associated with an organization, that granted the license\",\n                  \"$ref\": \"#/definitions/organizationalContact\"\n                }\n              },\n              \"oneOf\":[\n                {\n                  \"required\": [\"organization\"]\n                },\n                {\n                  \"required\": [\"individual\"]\n                }\n              ]\n            },\n            \"licensee\": {\n              \"title\": \"Licensee\",\n              \"description\": \"The individual or organization for which a license was granted to\",\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"organization\": {\n                  \"title\": \"Licensee (Organization)\",\n                  \"description\": \"The organization that was granted the license\",\n                  \"$ref\": \"#/definitions/organizationalEntity\"\n                },\n                \"individual\": {\n                  \"title\": \"Licensee (Individual)\",\n                  \"description\": \"The individual, not associated with an organization, that was granted the license\",\n                  \"$ref\": \"#/definitions/organizationalContact\"\n                }\n              },\n              \"oneOf\":[\n                {\n                  \"required\": [\"organization\"]\n                },\n                {\n                  \"required\": [\"individual\"]\n                }\n              ]\n            },\n            \"purchaser\": {\n              \"title\": \"Purchaser\",\n              \"description\": \"The individual or organization that purchased the license\",\n              \"type\": \"object\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"organization\": {\n                  \"title\": \"Purchaser (Organization)\",\n                  \"description\": \"The organization that purchased the license\",\n                  \"$ref\": \"#/definitions/organizationalEntity\"\n                },\n                \"individual\": {\n                  \"title\": \"Purchaser (Individual)\",\n                  \"description\": \"The individual, not associated with an organization, that purchased the license\",\n                  \"$ref\": \"#/definitions/organizationalContact\"\n                }\n              },\n              \"oneOf\":[\n                {\n                  \"required\": [\"organization\"]\n                },\n                {\n                  \"required\": [\"individual\"]\n                }\n              ]\n            },\n            \"purchaseOrder\": {\n              \"type\": \"string\",\n              \"title\": \"Purchase Order\",\n              \"description\": \"The purchase order identifier the purchaser sent to a supplier or vendor to authorize a purchase\"\n            },\n            \"licenseTypes\": {\n              \"type\": \"array\",\n              \"title\": \"License Type\",\n              \"description\": \"The type of license(s) that was granted to the licensee.\",\n              \"items\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"academic\",\n                  \"appliance\",\n                  \"client-access\",\n                  \"concurrent-user\",\n                  \"core-points\",\n                  \"custom-metric\",\n                  \"device\",\n                  \"evaluation\",\n                  \"named-user\",\n                  \"node-locked\",\n                  \"oem\",\n                  \"perpetual\",\n                  \"processor-points\",\n                  \"subscription\",\n                  \"user\",\n                  \"other\"\n                ],\n                \"meta:enum\": {\n                  \"academic\": \"A license that grants use of software solely for the purpose of education or research.\",\n                  \"appliance\": \"A license covering use of software embedded in a specific piece of hardware.\",\n                  \"client-access\": \"A Client Access License (CAL) allows client computers to access services provided by server software.\",\n                  \"concurrent-user\": \"A Concurrent User license (aka floating license) limits the number of licenses for a software application and licenses are shared among a larger number of users.\",\n                  \"core-points\": \"A license where the core of a computer's processor is assigned a specific number of points.\",\n                  \"custom-metric\": \"A license for which consumption is measured by non-standard metrics.\",\n                  \"device\": \"A license that covers a defined number of installations on computers and other types of devices.\",\n                  \"evaluation\": \"A license that grants permission to install and use software for trial purposes.\",\n                  \"named-user\": \"A license that grants access to the software to one or more pre-defined users.\",\n                  \"node-locked\": \"A license that grants access to the software on one or more pre-defined computers or devices.\",\n                  \"oem\": \"An Original Equipment Manufacturer license that is delivered with hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.\",\n                  \"perpetual\": \"A license where the software is sold on a one-time basis and the licensee can use a copy of the software indefinitely.\",\n                  \"processor-points\": \"A license where each installation consumes points per processor.\",\n                  \"subscription\": \"A license where the licensee pays a fee to use the software or service.\",\n                  \"user\": \"A license that grants access to the software or service by a specified number of users.\",\n                  \"other\": \"Another license type.\"\n                }\n              }\n            },\n            \"lastRenewal\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"Last Renewal\",\n              \"description\": \"The timestamp indicating when the license was last renewed. For new purchases, this is often the purchase or acquisition date. For non-perpetual licenses or subscriptions, this is the timestamp of when the license was last renewed.\"\n            },\n            \"expiration\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"Expiration\",\n              \"description\": \"The timestamp indicating when the current license expires (if applicable).\"\n            }\n          }\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        }\n      }\n    },\n    \"licenseAcknowledgementEnumeration\": {\n      \"title\": \"License Acknowledgement\",\n      \"description\": \"Declared licenses and concluded licenses represent two different stages in the licensing process within software development. Declared licenses refer to the initial intention of the software authors regarding the licensing terms under which their code is released. On the other hand, concluded licenses are the result of a comprehensive analysis of the project's codebase to identify and confirm the actual licenses of the components used, which may differ from the initially declared licenses. While declared licenses provide an upfront indication of the licensing intentions, concluded licenses offer a more thorough understanding of the actual licensing within a project, facilitating proper compliance and risk management. Observed licenses are defined in `@.evidence.licenses`. Observed licenses form the evidence necessary to substantiate a concluded license.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"declared\",\n        \"concluded\"\n      ],\n      \"meta:enum\": {\n        \"declared\": \"Declared licenses represent the initial intentions of authors regarding the licensing terms of their code.\",\n        \"concluded\": \"Concluded licenses are verified and confirmed.\"\n      }\n    },\n    \"licenseChoice\": {\n      \"title\": \"License Choice\",\n      \"description\": \"EITHER (list of SPDX licenses and/or named licenses) OR (tuple of one SPDX License Expression)\",\n      \"type\": \"array\",\n      \"oneOf\": [\n        {\n          \"title\": \"Multiple licenses\",\n          \"description\": \"A list of SPDX licenses and/or named licenses.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"License\",\n            \"required\": [\"license\"],\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"license\": {\"$ref\": \"#/definitions/license\"}\n            }\n          }\n        },\n        {\n          \"title\": \"SPDX License Expression\",\n          \"description\": \"A tuple of exactly one SPDX License Expression.\",\n          \"type\": \"array\",\n          \"additionalItems\": false,\n          \"minItems\": 1,\n          \"maxItems\": 1,\n          \"items\": [{\n            \"type\": \"object\",\n            \"additionalProperties\": false,\n            \"required\": [\"expression\"],\n            \"properties\": {\n              \"expression\": {\n                \"type\": \"string\",\n                \"title\": \"SPDX License Expression\",\n                \"description\": \"A valid SPDX license expression.\\nRefer to https://spdx.org/specifications for syntax requirements\",\n                \"examples\": [\n                  \"Apache-2.0 AND (MIT OR GPL-2.0-only)\",\n                  \"GPL-3.0-only WITH Classpath-exception-2.0\"\n                ]\n              },\n              \"acknowledgement\": {\n                \"$ref\": \"#/definitions/licenseAcknowledgementEnumeration\"\n              },\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n              }\n            }\n          }]\n        }\n      ]\n    },\n    \"commit\": {\n      \"type\": \"object\",\n      \"title\": \"Commit\",\n      \"description\": \"Specifies an individual commit\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"uid\": {\n          \"type\": \"string\",\n          \"title\": \"UID\",\n          \"description\": \"A unique identifier of the commit. This may be version control specific. For example, Subversion uses revision numbers whereas git uses commit hashes.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"URL\",\n          \"description\": \"The URL to the commit. This URL will typically point to a commit in a version control system.\",\n          \"format\": \"iri-reference\"\n        },\n        \"author\": {\n          \"title\": \"Author\",\n          \"description\": \"The author who created the changes in the commit\",\n          \"$ref\": \"#/definitions/identifiableAction\"\n        },\n        \"committer\": {\n          \"title\": \"Committer\",\n          \"description\": \"The person who committed or pushed the commit\",\n          \"$ref\": \"#/definitions/identifiableAction\"\n        },\n        \"message\": {\n          \"type\": \"string\",\n          \"title\": \"Message\",\n          \"description\": \"The text description of the contents of the commit\"\n        }\n      }\n    },\n    \"patch\": {\n      \"type\": \"object\",\n      \"title\": \"Patch\",\n      \"description\": \"Specifies an individual patch\",\n      \"required\": [\n        \"type\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"unofficial\",\n            \"monkey\",\n            \"backport\",\n            \"cherry-pick\"\n          ],\n          \"meta:enum\": {\n            \"unofficial\": \"A patch which is not developed by the creators or maintainers of the software being patched. Refer to [https://en.wikipedia.org/wiki/Unofficial_patch](https://en.wikipedia.org/wiki/Unofficial_patch).\",\n            \"monkey\": \"A patch which dynamically modifies runtime behavior. Refer to [https://en.wikipedia.org/wiki/Monkey_patch](https://en.wikipedia.org/wiki/Monkey_patch).\",\n            \"backport\": \"A patch which takes code from a newer version of the software and applies it to older versions of the same software. Refer to [https://en.wikipedia.org/wiki/Backporting](https://en.wikipedia.org/wiki/Backporting).\",\n            \"cherry-pick\": \"A patch created by selectively applying commits from other versions or branches of the same software.\"\n          },\n          \"title\": \"Patch Type\",\n          \"description\": \"Specifies the purpose for the patch including the resolution of defects, security issues, or new behavior or functionality.\"\n        },\n        \"diff\": {\n          \"title\": \"Diff\",\n          \"description\": \"The patch file (or diff) that shows changes. Refer to [https://en.wikipedia.org/wiki/Diff](https://en.wikipedia.org/wiki/Diff)\",\n          \"$ref\": \"#/definitions/diff\"\n        },\n        \"resolves\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/issue\"},\n          \"title\": \"Resolves\",\n          \"description\": \"A collection of issues the patch resolves\"\n        }\n      }\n    },\n    \"diff\": {\n      \"type\": \"object\",\n      \"title\": \"Diff\",\n      \"description\": \"The patch file (or diff) that shows changes. Refer to https://en.wikipedia.org/wiki/Diff\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Diff text\",\n          \"description\": \"Specifies the optional text of the diff\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"URL\",\n          \"description\": \"Specifies the URL to the diff\",\n          \"format\": \"iri-reference\"\n        }\n      }\n    },\n    \"issue\": {\n      \"type\": \"object\",\n      \"title\": \"Issue\",\n      \"description\": \"An individual issue that has been resolved.\",\n      \"required\": [\n        \"type\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"defect\",\n            \"enhancement\",\n            \"security\"\n          ],\n          \"meta:enum\": {\n            \"defect\": \"A fault, flaw, or bug in software.\",\n            \"enhancement\": \"A new feature or behavior in software.\",\n            \"security\": \"A special type of defect which impacts security.\"\n          },\n          \"title\": \"Issue Type\",\n          \"description\": \"Specifies the type of issue\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"title\": \"Issue ID\",\n          \"description\": \"The identifier of the issue assigned by the source of the issue\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Issue Name\",\n          \"description\": \"The name of the issue\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Issue Description\",\n          \"description\": \"A description of the issue\"\n        },\n        \"source\": {\n          \"type\": \"object\",\n          \"title\": \"Source\",\n          \"description\": \"The source of the issue where it is documented\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"name\": {\n              \"type\": \"string\",\n              \"title\": \"Name\",\n              \"description\": \"The name of the source.\",\n              \"examples\": [\n                \"National Vulnerability Database\",\n                \"NVD\",\n                \"Apache\"\n              ]\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"title\": \"URL\",\n              \"description\": \"The url of the issue documentation as provided by the source\",\n              \"format\": \"iri-reference\"\n            }\n          }\n        },\n        \"references\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"iri-reference\"\n          },\n          \"title\": \"References\",\n          \"description\": \"A collection of URL's for reference. Multiple URLs are allowed.\",\n          \"examples\": [\"https://example.com\"]\n        }\n      }\n    },\n    \"identifiableAction\": {\n      \"type\": \"object\",\n      \"title\": \"Identifiable Action\",\n      \"description\": \"Specifies an individual commit\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"description\": \"The timestamp in which the action occurred\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"The name of the individual who performed the action\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"format\": \"idn-email\",\n          \"title\": \"E-mail\",\n          \"description\": \"The email address of the individual who performed the action\"\n        }\n      }\n    },\n    \"externalReference\": {\n      \"type\": \"object\",\n      \"title\": \"External Reference\",\n      \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\",\n      \"required\": [\n        \"url\",\n        \"type\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"url\": {\n          \"anyOf\": [\n            {\n              \"title\": \"URL\",\n              \"type\": \"string\",\n              \"format\": \"iri-reference\"\n            },\n            {\n              \"title\": \"BOM-Link\",\n              \"$ref\": \"#/definitions/bomLink\"\n            }\n          ],\n          \"title\": \"URL\",\n          \"description\": \"The URI (URL or URN) to the external reference. External references are URIs and therefore can accept any URL scheme including https ([RFC-7230](https://www.ietf.org/rfc/rfc7230.txt)), mailto ([RFC-2368](https://www.ietf.org/rfc/rfc2368.txt)), tel ([RFC-3966](https://www.ietf.org/rfc/rfc3966.txt)), and dns ([RFC-4501](https://www.ietf.org/rfc/rfc4501.txt)). External references may also include formally registered URNs such as [CycloneDX BOM-Link](https://cyclonedx.org/capabilities/bomlink/) to reference CycloneDX BOMs or any object within a BOM. BOM-Link transforms applicable external references into relationships that can be expressed in a BOM or across BOMs.\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"title\": \"Comment\",\n          \"description\": \"An optional comment describing the external reference\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"title\": \"Type\",\n          \"description\": \"Specifies the type of external reference.\",\n          \"enum\": [\n            \"vcs\",\n            \"issue-tracker\",\n            \"website\",\n            \"advisories\",\n            \"bom\",\n            \"mailing-list\",\n            \"social\",\n            \"chat\",\n            \"documentation\",\n            \"support\",\n            \"source-distribution\",\n            \"distribution\",\n            \"distribution-intake\",\n            \"license\",\n            \"build-meta\",\n            \"build-system\",\n            \"release-notes\",\n            \"security-contact\",\n            \"model-card\",\n            \"log\",\n            \"configuration\",\n            \"evidence\",\n            \"formulation\",\n            \"attestation\",\n            \"threat-model\",\n            \"adversary-model\",\n            \"risk-assessment\",\n            \"vulnerability-assertion\",\n            \"exploitability-statement\",\n            \"pentest-report\",\n            \"static-analysis-report\",\n            \"dynamic-analysis-report\",\n            \"runtime-analysis-report\",\n            \"component-analysis-report\",\n            \"maturity-report\",\n            \"certification-report\",\n            \"codified-infrastructure\",\n            \"quality-metrics\",\n            \"poam\",\n            \"electronic-signature\",\n            \"digital-signature\",\n            \"rfc-9116\",\n            \"other\"\n          ],\n          \"meta:enum\": {\n            \"vcs\": \"Version Control System\",\n            \"issue-tracker\": \"Issue or defect tracking system, or an Application Lifecycle Management (ALM) system\",\n            \"website\": \"Website\",\n            \"advisories\": \"Security advisories\",\n            \"bom\": \"Bill of Materials (SBOM, OBOM, HBOM, SaaSBOM, etc)\",\n            \"mailing-list\": \"Mailing list or discussion group\",\n            \"social\": \"Social media account\",\n            \"chat\": \"Real-time chat platform\",\n            \"documentation\": \"Documentation, guides, or how-to instructions\",\n            \"support\": \"Community or commercial support\",\n            \"source-distribution\": \"The location where the source code distributable can be obtained. This is often an archive format such as zip or tgz. The source-distribution type complements use of the version control (vcs) type.\",\n            \"distribution\": \"Direct or repository download location\",\n            \"distribution-intake\": \"The location where a component was published to. This is often the same as \\\"distribution\\\" but may also include specialized publishing processes that act as an intermediary.\",\n            \"license\": \"The reference to the license file. If a license URL has been defined in the license node, it should also be defined as an external reference for completeness.\",\n            \"build-meta\": \"Build-system specific meta file (i.e. pom.xml, package.json, .nuspec, etc)\",\n            \"build-system\": \"Reference to an automated build system\",\n            \"release-notes\": \"Reference to release notes\",\n            \"security-contact\": \"Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies the records containing DNS Security TXT.\",\n            \"model-card\": \"A model card describes the intended uses of a machine learning model, potential limitations, biases, ethical considerations, training parameters, datasets used to train the model, performance metrics, and other relevant data useful for ML transparency.\",\n            \"log\": \"A record of events that occurred in a computer system or application, such as problems, errors, or information on current operations.\",\n            \"configuration\": \"Parameters or settings that may be used by other components or services.\",\n            \"evidence\": \"Information used to substantiate a claim.\",\n            \"formulation\": \"Describes how a component or service was manufactured or deployed.\",\n            \"attestation\": \"Human or machine-readable statements containing facts, evidence, or testimony.\",\n            \"threat-model\": \"An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format.\",\n            \"adversary-model\": \"The defined assumptions, goals, and capabilities of an adversary.\",\n            \"risk-assessment\": \"Identifies and analyzes the potential of future events that may negatively impact individuals, assets, and/or the environment. Risk assessments may also include judgments on the tolerability of each risk.\",\n            \"vulnerability-assertion\": \"A Vulnerability Disclosure Report (VDR) which asserts the known and previously unknown vulnerabilities that affect a component, service, or product including the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on a component, service, or product.\",\n            \"exploitability-statement\": \"A Vulnerability Exploitability eXchange (VEX) which asserts the known vulnerabilities that do not affect a product, product family, or organization, and optionally the ones that do. The VEX should include the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on the product, product family, or organization.\",\n            \"pentest-report\": \"Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test.\",\n            \"static-analysis-report\": \"SARIF or proprietary machine or human-readable report for which static analysis has identified code quality, security, and other potential issues with the source code.\",\n            \"dynamic-analysis-report\": \"Dynamic analysis report that has identified issues such as vulnerabilities and misconfigurations.\",\n            \"runtime-analysis-report\": \"Report generated by analyzing the call stack of a running application.\",\n            \"component-analysis-report\": \"Report generated by Software Composition Analysis (SCA), container analysis, or other forms of component analysis.\",\n            \"maturity-report\": \"Report containing a formal assessment of an organization, business unit, or team against a maturity model.\",\n            \"certification-report\": \"Industry, regulatory, or other certification from an accredited (if applicable) certification body.\",\n            \"codified-infrastructure\": \"Code or configuration that defines and provisions virtualized infrastructure, commonly referred to as Infrastructure as Code (IaC).\",\n            \"quality-metrics\": \"Report or system in which quality metrics can be obtained.\",\n            \"poam\": \"Plans of Action and Milestones (POAM) complement an \\\"attestation\\\" external reference. POAM is defined by NIST as a \\\"document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones\\\".\",\n            \"electronic-signature\": \"An e-signature is commonly a scanned representation of a written signature or a stylized script of the person's name.\",\n            \"digital-signature\": \"A signature that leverages cryptography, typically public/private key pairs, which provides strong authenticity verification.\",\n            \"rfc-9116\": \"Document that complies with RFC-9116 (A File Format to Aid in Security Vulnerability Disclosure)\",\n            \"other\": \"Use this if no other types accurately describe the purpose of the external reference.\"\n          }\n        },\n        \"hashes\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/hash\"},\n          \"title\": \"Hashes\",\n          \"description\": \"The hashes of the external reference (if applicable).\"\n        }\n      }\n    },\n    \"dependency\": {\n      \"type\": \"object\",\n      \"title\": \"Dependency\",\n      \"description\": \"Defines the direct dependencies of a component, service, or the components provided/implemented by a given component. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of an object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs.\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"ref\": {\n          \"$ref\": \"#/definitions/refLinkType\",\n          \"title\": \"Reference\",\n          \"description\": \"References a component or service by its bom-ref attribute\"\n        },\n        \"dependsOn\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/refLinkType\"\n          },\n          \"title\": \"Depends On\",\n          \"description\": \"The bom-ref identifiers of the components or services that are dependencies of this dependency object.\"\n        },\n        \"provides\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/refLinkType\"\n          },\n          \"title\": \"Provides\",\n          \"description\": \"The bom-ref identifiers of the components or services that define a given specification or standard, which are provided or implemented by this dependency object.\\nFor example, a cryptographic library which implements a cryptographic algorithm. A component which implements another component does not imply that the implementation is in use.\"\n        }\n      }\n    },\n    \"service\": {\n      \"type\": \"object\",\n      \"title\": \"Service\",\n      \"required\": [\n        \"name\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the service elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"provider\": {\n          \"title\": \"Provider\",\n          \"description\": \"The organization that provides the service.\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"group\": {\n          \"type\": \"string\",\n          \"title\": \"Service Group\",\n          \"description\": \"The grouping name, namespace, or identifier. This will often be a shortened, single name of the company or project that produced the service or domain name. Whitespace and special characters should be avoided.\",\n          \"examples\": [\"com.acme\"]\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Service Name\",\n          \"description\": \"The name of the service. This will often be a shortened, single name of the service.\",\n          \"examples\": [\"ticker-service\"]\n        },\n        \"version\": {\n          \"$ref\": \"#/definitions/version\",\n          \"title\": \"Service Version\",\n          \"description\": \"The service version.\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Service Description\",\n          \"description\": \"Specifies a description for the service\"\n        },\n        \"endpoints\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\",\n            \"format\": \"iri-reference\"\n          },\n          \"title\": \"Endpoints\",\n          \"description\": \"The endpoint URIs of the service. Multiple endpoints are allowed.\",\n          \"examples\": [\"https://example.com/api/v1/ticker\"]\n        },\n        \"authenticated\": {\n          \"type\": \"boolean\",\n          \"title\": \"Authentication Required\",\n          \"description\": \"A boolean value indicating if the service requires authentication. A value of true indicates the service requires authentication prior to use. A value of false indicates the service does not require authentication.\"\n        },\n        \"x-trust-boundary\": {\n          \"type\": \"boolean\",\n          \"title\": \"Crosses Trust Boundary\",\n          \"description\": \"A boolean value indicating if use of the service crosses a trust zone or boundary. A value of true indicates that by using the service, a trust boundary is crossed. A value of false indicates that by using the service, a trust boundary is not crossed.\"\n        },\n        \"trustZone\": {\n          \"type\": \"string\",\n          \"title\": \"Trust Zone\",\n          \"description\": \"The name of the trust zone the service resides in.\"\n        },\n        \"data\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/serviceData\"},\n          \"title\": \"Data\",\n          \"description\": \"Specifies information about the data including the directional flow of data and the data classification.\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/definitions/licenseChoice\",\n          \"title\": \"Component License(s)\"\n        },\n        \"externalReferences\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n          \"title\": \"External References\",\n          \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n        },\n        \"services\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/service\"},\n          \"uniqueItems\": true,\n          \"title\": \"Services\",\n          \"description\": \"A list of services included or deployed behind the parent service. This is not a dependency tree. It provides a way to specify a hierarchical representation of service assemblies.\"\n        },\n        \"releaseNotes\": {\n          \"$ref\": \"#/definitions/releaseNotes\",\n          \"title\": \"Release notes\",\n          \"description\": \"Specifies optional release notes.\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        },\n        \"tags\": {\n          \"$ref\": \"#/definitions/tags\",\n          \"title\": \"Tags\"\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"serviceData\": {\n      \"type\": \"object\",\n      \"title\": \"Hash Objects\",\n      \"required\": [\n        \"flow\",\n        \"classification\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"flow\": {\n          \"$ref\": \"#/definitions/dataFlowDirection\",\n          \"title\": \"Directional Flow\",\n          \"description\": \"Specifies the flow direction of the data. Direction is relative to the service. Inbound flow states that data enters the service. Outbound flow states that data leaves the service. Bi-directional states that data flows both ways and unknown states that the direction is not known.\"\n        },\n        \"classification\": {\n          \"$ref\": \"#/definitions/dataClassification\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"Name for the defined data\",\n          \"examples\": [\n            \"Credit card reporting\"\n          ]\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Description\",\n          \"description\": \"Short description of the data content and usage\",\n          \"examples\": [\n            \"Credit card information being exchanged in between the web app and the database\"\n          ]\n        },\n        \"governance\": {\n          \"title\": \"Data Governance\",\n          \"$ref\": \"#/definitions/dataGovernance\"\n        },\n        \"source\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"title\": \"URL\",\n                \"type\": \"string\",\n                \"format\": \"iri-reference\"\n              },\n              {\n                \"title\": \"BOM-Link Element\",\n                \"$ref\": \"#/definitions/bomLinkElementType\"\n              }\n            ]\n          },\n          \"title\": \"Source\",\n          \"description\": \"The URI, URL, or BOM-Link of the components or services the data came in from\"\n        },\n        \"destination\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"title\": \"URL\",\n                \"type\": \"string\",\n                \"format\": \"iri-reference\"\n              },\n              {\n                \"title\": \"BOM-Link Element\",\n                \"$ref\": \"#/definitions/bomLinkElementType\"\n              }\n            ]\n          },\n          \"title\": \"Destination\",\n          \"description\": \"The URI, URL, or BOM-Link of the components or services the data is sent to\"\n        }\n      }\n    },\n    \"dataFlowDirection\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"inbound\",\n        \"outbound\",\n        \"bi-directional\",\n        \"unknown\"\n      ],\n      \"meta:enum\": {\n        \"inbound\": \"Data that enters a service.\",\n        \"outbound\": \"Data that exits a service.\",\n        \"bi-directional\": \"Data flows in and out of the service.\",\n        \"unknown\": \"The directional flow of data is not known.\"\n      },\n      \"title\": \"Data flow direction\",\n      \"description\": \"Specifies the flow direction of the data. Direction is relative to the service.\"\n    },\n    \"copyright\": {\n      \"type\": \"object\",\n      \"title\": \"Copyright\",\n      \"required\": [\n        \"text\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"title\": \"Copyright Text\"\n        }\n      }\n    },\n    \"componentEvidence\": {\n      \"type\": \"object\",\n      \"title\": \"Evidence\",\n      \"description\": \"Provides the ability to document evidence collected through various forms of extraction or analysis.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"identity\": {\n          \"title\": \"Identity Evidence\",\n          \"description\": \"Evidence that substantiates the identity of a component. The identity may be an object or an array of identity objects. Support for specifying identity as a single object was introduced in CycloneDX v1.5. Arrays were introduced in v1.6. It is RECOMMENDED that all implementations use arrays, even if only one identity object is specified.\",\n          \"oneOf\" : [\n            {\n              \"type\": \"array\",\n              \"title\": \"Array of Identity Objects\",\n              \"items\": { \"$ref\": \"#/definitions/componentIdentityEvidence\" }\n            },\n            {\n              \"title\": \"A Single Identity Object\",\n              \"description\": \"[Deprecated]\",\n              \"$ref\": \"#/definitions/componentIdentityEvidence\",\n              \"deprecated\": true\n            }\n          ]\n        },\n        \"occurrences\": {\n          \"type\": \"array\",\n          \"title\": \"Occurrences\",\n          \"description\": \"Evidence of individual instances of a component spread across multiple locations.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [ \"location\" ],\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the occurrence elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n              },\n              \"location\": {\n                \"type\": \"string\",\n                \"title\": \"Location\",\n                \"description\": \"The location or path to where the component was found.\"\n              },\n              \"line\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"title\": \"Line Number\",\n                \"description\": \"The line number where the component was found.\"\n              },\n              \"offset\": {\n                \"type\": \"integer\",\n                \"minimum\": 0,\n                \"title\": \"Offset\",\n                \"description\": \"The offset where the component was found.\"\n              },\n              \"symbol\": {\n                \"type\": \"string\",\n                \"title\": \"Symbol\",\n                \"description\": \"The symbol name that was found associated with the component.\"\n              },\n              \"additionalContext\": {\n                \"type\": \"string\",\n                \"title\": \"Additional Context\",\n                \"description\": \"Any additional context of the detected component (e.g. a code snippet).\"\n              }\n            }\n          }\n        },\n        \"callstack\": {\n          \"type\": \"object\",\n          \"title\": \"Call Stack\",\n          \"description\": \"Evidence of the components use through the callstack.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"frames\": {\n              \"type\": \"array\",\n              \"title\": \"Frames\",\n              \"description\": \"Within a call stack, a frame is a discrete unit that encapsulates an execution context, including local variables, parameters, and the return address. As function calls are made, frames are pushed onto the stack, forming an array-like structure that orchestrates the flow of program execution and manages the sequence of function invocations.\",\n              \"items\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"module\"\n                ],\n                \"additionalProperties\": false,\n                \"properties\": {\n                  \"package\": {\n                    \"title\": \"Package\",\n                    \"description\": \"A package organizes modules into namespaces, providing a unique namespace for each type it contains.\",\n                    \"type\": \"string\"\n                  },\n                  \"module\": {\n                    \"title\": \"Module\",\n                    \"description\": \"A module or class that encloses functions/methods and other code.\",\n                    \"type\": \"string\"\n                  },\n                  \"function\": {\n                    \"title\": \"Function\",\n                    \"description\": \"A block of code designed to perform a particular task.\",\n                    \"type\": \"string\"\n                  },\n                  \"parameters\": {\n                    \"title\": \"Parameters\",\n                    \"description\": \"Optional arguments that are passed to the module or function.\",\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"type\": \"string\"\n                    }\n                  },\n                  \"line\": {\n                    \"title\": \"Line\",\n                    \"description\": \"The line number the code that is called resides on.\",\n                    \"type\": \"integer\"\n                  },\n                  \"column\": {\n                    \"title\": \"Column\",\n                    \"description\": \"The column the code that is called resides.\",\n                    \"type\": \"integer\"\n                  },\n                  \"fullFilename\": {\n                    \"title\": \"Full Filename\",\n                    \"description\": \"The full path and filename of the module.\",\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"licenses\": {\n          \"$ref\": \"#/definitions/licenseChoice\",\n          \"title\": \"License Evidence\"\n        },\n        \"copyright\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/copyright\"},\n          \"title\": \"Copyright Evidence\",\n          \"description\": \"Copyright evidence captures intellectual property assertions, providing evidence of possible ownership and legal protection.\"\n        }\n      }\n    },\n    \"compositions\": {\n      \"type\": \"object\",\n      \"title\": \"Compositions\",\n      \"required\": [\n        \"aggregate\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the composition elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"aggregate\": {\n          \"$ref\": \"#/definitions/aggregateType\",\n          \"title\": \"Aggregate\",\n          \"description\": \"Specifies an aggregate type that describe how complete a relationship is.\"\n        },\n        \"assemblies\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"title\": \"Ref\",\n                \"$ref\": \"#/definitions/refLinkType\"\n              },\n              {\n                \"title\": \"BOM-Link Element\",\n                \"$ref\": \"#/definitions/bomLinkElementType\"\n              }\n            ]\n          },\n          \"title\": \"BOM references\",\n          \"description\": \"The bom-ref identifiers of the components or services being described. Assemblies refer to nested relationships whereby a constituent part may include other constituent parts. References do not cascade to child parts. References are explicit for the specified constituent part only.\"\n        },\n        \"dependencies\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"BOM references\",\n          \"description\": \"The bom-ref identifiers of the components or services being described. Dependencies refer to a relationship whereby an independent constituent part requires another independent constituent part. References do not cascade to transitive dependencies. References are explicit for the specified dependency only.\"\n        },\n        \"vulnerabilities\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"BOM references\",\n          \"description\": \"The bom-ref identifiers of the vulnerabilities being described.\"\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"aggregateType\": {\n      \"type\": \"string\",\n      \"default\": \"not_specified\",\n      \"enum\": [\n        \"complete\",\n        \"incomplete\",\n        \"incomplete_first_party_only\",\n        \"incomplete_first_party_proprietary_only\",\n        \"incomplete_first_party_opensource_only\",\n        \"incomplete_third_party_only\",\n        \"incomplete_third_party_proprietary_only\",\n        \"incomplete_third_party_opensource_only\",\n        \"unknown\",\n        \"not_specified\"\n      ],\n      \"meta:enum\": {\n        \"complete\": \"The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist.\",\n        \"incomplete\": \"The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies.\",\n        \"incomplete_first_party_only\": \"The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented.\",\n        \"incomplete_first_party_proprietary_only\": \"The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.\",\n        \"incomplete_first_party_opensource_only\": \"The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource.\",\n        \"incomplete_third_party_only\": \"The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented.\",\n        \"incomplete_third_party_proprietary_only\": \"The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.\",\n        \"incomplete_third_party_opensource_only\": \"The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.\",\n        \"unknown\": \"The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive.\",\n        \"not_specified\": \"The relationship completeness is not specified.\"\n      }\n    },\n    \"property\": {\n      \"type\": \"object\",\n      \"title\": \"Lightweight name-value pair\",\n      \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"The name of the property. Duplicate names are allowed, each potentially having a different value.\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"title\": \"Value\",\n          \"description\": \"The value of the property.\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"localeType\": {\n      \"type\": \"string\",\n      \"pattern\": \"^([a-z]{2})(-[A-Z]{2})?$\",\n      \"title\": \"Locale\",\n      \"description\": \"Defines a syntax for representing two character language code (ISO-639) followed by an optional two character country code. The language code MUST be lower case. If the country code is specified, the country code MUST be upper case. The language code and country code MUST be separated by a minus sign. Examples: en, en-US, fr, fr-CA\"\n    },\n    \"releaseType\": {\n      \"type\": \"string\",\n      \"examples\": [\n        \"major\",\n        \"minor\",\n        \"patch\",\n        \"pre-release\",\n        \"internal\"\n      ],\n      \"description\": \"The software versioning type. It is RECOMMENDED that the release type use one of 'major', 'minor', 'patch', 'pre-release', or 'internal'. Representing all possible software release types is not practical, so standardizing on the recommended values, whenever possible, is strongly encouraged.\\n\\n* __major__ = A major release may contain significant changes or may introduce breaking changes.\\n* __minor__ = A minor release, also known as an update, may contain a smaller number of changes than major releases.\\n* __patch__ = Patch releases are typically unplanned and may resolve defects or important security issues.\\n* __pre-release__ = A pre-release may include alpha, beta, or release candidates and typically have limited support. They provide the ability to preview a release prior to its general availability.\\n* __internal__ = Internal releases are not for public consumption and are intended to be used exclusively by the project or manufacturer that produced it.\"\n    },\n    \"note\": {\n      \"type\": \"object\",\n      \"title\": \"Note\",\n      \"description\": \"A note containing the locale and content.\",\n      \"required\": [\n        \"text\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"locale\": {\n          \"$ref\": \"#/definitions/localeType\",\n          \"title\": \"Locale\",\n          \"description\": \"The ISO-639 (or higher) language code and optional ISO-3166 (or higher) country code. Examples include: \\\"en\\\", \\\"en-US\\\", \\\"fr\\\" and \\\"fr-CA\\\"\"\n        },\n        \"text\": {\n          \"title\": \"Release note content\",\n          \"description\": \"Specifies the full content of the release note.\",\n          \"$ref\": \"#/definitions/attachment\"\n        }\n      }\n    },\n    \"releaseNotes\": {\n      \"type\": \"object\",\n      \"title\": \"Release notes\",\n      \"required\": [\n        \"type\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"$ref\": \"#/definitions/releaseType\",\n          \"title\": \"Type\",\n          \"description\": \"The software versioning type the release note describes.\"\n        },\n        \"title\": {\n          \"type\": \"string\",\n          \"title\": \"Title\",\n          \"description\": \"The title of the release.\"\n        },\n        \"featuredImage\": {\n          \"type\": \"string\",\n          \"format\": \"iri-reference\",\n          \"title\": \"Featured image\",\n          \"description\": \"The URL to an image that may be prominently displayed with the release note.\"\n        },\n        \"socialImage\": {\n          \"type\": \"string\",\n          \"format\": \"iri-reference\",\n          \"title\": \"Social image\",\n          \"description\": \"The URL to an image that may be used in messaging on social media platforms.\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Description\",\n          \"description\": \"A short description of the release.\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"description\": \"The date and time (timestamp) when the release note was created.\"\n        },\n        \"aliases\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Aliases\",\n          \"description\": \"One or more alternate names the release may be referred to. This may include unofficial terms used by development and marketing teams (e.g. code names).\"\n        },\n        \"tags\": {\n          \"$ref\": \"#/definitions/tags\",\n          \"title\": \"Tags\"\n        },\n        \"resolves\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/issue\"},\n          \"title\": \"Resolves\",\n          \"description\": \"A collection of issues that have been resolved.\"\n        },\n        \"notes\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/note\"},\n          \"title\": \"Notes\",\n          \"description\": \"Zero or more release notes containing the locale and content. Multiple note objects may be specified to support release notes in a wide variety of languages.\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        }\n      }\n    },\n    \"advisory\": {\n      \"type\": \"object\",\n      \"title\": \"Advisory\",\n      \"description\": \"Title and location where advisory information can be obtained. An advisory is a notification of a threat to a component, service, or system.\",\n      \"required\": [\"url\"],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"title\": \"Title\",\n          \"description\": \"An optional name of the advisory.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"URL\",\n          \"format\": \"iri-reference\",\n          \"description\": \"Location where the advisory can be obtained.\"\n        }\n      }\n    },\n    \"cwe\": {\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"title\": \"CWE\",\n      \"description\": \"Integer representation of a Common Weaknesses Enumerations (CWE). For example 399 (of https://cwe.mitre.org/data/definitions/399.html)\"\n    },\n    \"severity\": {\n      \"type\": \"string\",\n      \"title\": \"Severity\",\n      \"description\": \"Textual representation of the severity of the vulnerability adopted by the analysis method. If the analysis method uses values other than what is provided, the user is expected to translate appropriately.\",\n      \"enum\": [\n        \"critical\",\n        \"high\",\n        \"medium\",\n        \"low\",\n        \"info\",\n        \"none\",\n        \"unknown\"\n      ],\n      \"meta:enum\": {\n        \"critical\": \"Critical severity\",\n        \"high\": \"High severity\",\n        \"medium\": \"Medium severity\",\n        \"low\": \"Low severity\",\n        \"info\": \"Informational warning.\",\n        \"none\": \"None\",\n        \"unknown\": \"The severity is not known\"\n      }\n    },\n    \"scoreMethod\": {\n      \"type\": \"string\",\n      \"title\": \"Method\",\n      \"description\": \"Specifies the severity or risk scoring methodology or standard used.\",\n      \"enum\": [\n        \"CVSSv2\",\n        \"CVSSv3\",\n        \"CVSSv31\",\n        \"CVSSv4\",\n        \"OWASP\",\n        \"SSVC\",\n        \"other\"\n      ],\n      \"meta:enum\": {\n        \"CVSSv2\": \"Common Vulnerability Scoring System v2.0\",\n        \"CVSSv3\": \"Common Vulnerability Scoring System v3.0\",\n        \"CVSSv31\": \"Common Vulnerability Scoring System v3.1\",\n        \"CVSSv4\": \"Common Vulnerability Scoring System v4.0\",\n        \"OWASP\": \"OWASP Risk Rating Methodology\",\n        \"SSVC\": \"Stakeholder Specific Vulnerability Categorization\",\n        \"other\": \"Another severity or risk scoring methodology\"\n      }\n    },\n    \"impactAnalysisState\": {\n      \"type\": \"string\",\n      \"title\": \"Impact Analysis State\",\n      \"description\": \"Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.\",\n      \"enum\": [\n        \"resolved\",\n        \"resolved_with_pedigree\",\n        \"exploitable\",\n        \"in_triage\",\n        \"false_positive\",\n        \"not_affected\"\n      ],\n      \"meta:enum\": {\n        \"resolved\": \"The vulnerability has been remediated.\",\n        \"resolved_with_pedigree\": \"The vulnerability has been remediated and evidence of the changes are provided in the affected components pedigree containing verifiable commit history and/or diff(s).\",\n        \"exploitable\": \"The vulnerability may be directly or indirectly exploitable.\",\n        \"in_triage\": \"The vulnerability is being investigated.\",\n        \"false_positive\": \"The vulnerability is not specific to the component or service and was falsely identified or associated.\",\n        \"not_affected\": \"The component or service is not affected by the vulnerability. Justification should be specified for all not_affected cases.\"\n      }\n    },\n    \"impactAnalysisJustification\": {\n      \"type\": \"string\",\n      \"title\": \"Impact Analysis Justification\",\n      \"description\": \"The rationale of why the impact analysis state was asserted.\",\n      \"enum\": [\n        \"code_not_present\",\n        \"code_not_reachable\",\n        \"requires_configuration\",\n        \"requires_dependency\",\n        \"requires_environment\",\n        \"protected_by_compiler\",\n        \"protected_at_runtime\",\n        \"protected_at_perimeter\",\n        \"protected_by_mitigating_control\"\n      ],\n      \"meta:enum\": {\n        \"code_not_present\": \"The code has been removed or tree-shaked.\",\n        \"code_not_reachable\": \"The vulnerable code is not invoked at runtime.\",\n        \"requires_configuration\": \"Exploitability requires a configurable option to be set/unset.\",\n        \"requires_dependency\": \"Exploitability requires a dependency that is not present.\",\n        \"requires_environment\": \"Exploitability requires a certain environment which is not present.\",\n        \"protected_by_compiler\": \"Exploitability requires a compiler flag to be set/unset.\",\n        \"protected_at_runtime\": \"Exploits are prevented at runtime.\",\n        \"protected_at_perimeter\": \"Attacks are blocked at physical, logical, or network perimeter.\",\n        \"protected_by_mitigating_control\": \"Preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability.\"\n      }\n    },\n    \"rating\": {\n      \"type\": \"object\",\n      \"title\": \"Rating\",\n      \"description\": \"Defines the severity or risk ratings of a vulnerability.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/definitions/vulnerabilitySource\",\n          \"description\": \"The source that calculated the severity or risk rating of the vulnerability.\"\n        },\n        \"score\": {\n          \"type\": \"number\",\n          \"title\": \"Score\",\n          \"description\": \"The numerical score of the rating.\"\n        },\n        \"severity\": {\n          \"$ref\": \"#/definitions/severity\",\n          \"description\": \"Textual representation of the severity that corresponds to the numerical score of the rating.\"\n        },\n        \"method\": {\n          \"$ref\": \"#/definitions/scoreMethod\"\n        },\n        \"vector\": {\n          \"type\": \"string\",\n          \"title\": \"Vector\",\n          \"description\": \"Textual representation of the metric values used to score the vulnerability\"\n        },\n        \"justification\": {\n          \"type\": \"string\",\n          \"title\": \"Justification\",\n          \"description\": \"An optional reason for rating the vulnerability as it was\"\n        }\n      }\n    },\n    \"vulnerabilitySource\": {\n      \"type\": \"object\",\n      \"title\": \"Source\",\n      \"description\": \"The source of vulnerability information. This is often the organization that published the vulnerability.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"title\": \"URL\",\n          \"description\": \"The url of the vulnerability documentation as provided by the source.\",\n          \"examples\": [\n            \"https://nvd.nist.gov/vuln/detail/CVE-2021-39182\"\n          ]\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"The name of the source.\",\n          \"examples\": [\n            \"NVD\",\n            \"National Vulnerability Database\",\n            \"OSS Index\",\n            \"VulnDB\",\n            \"GitHub Advisories\"\n          ]\n        }\n      }\n    },\n    \"vulnerability\": {\n      \"type\": \"object\",\n      \"title\": \"Vulnerability\",\n      \"description\": \"Defines a weakness in a component or service that could be exploited or triggered by a threat source.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the vulnerability elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"title\": \"ID\",\n          \"description\": \"The identifier that uniquely identifies the vulnerability.\",\n          \"examples\": [\n            \"CVE-2021-39182\",\n            \"GHSA-35m5-8cvj-8783\",\n            \"SNYK-PYTHON-ENROCRYPT-1912876\"\n          ]\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/vulnerabilitySource\",\n          \"description\": \"The source that published the vulnerability.\"\n        },\n        \"references\": {\n          \"type\": \"array\",\n          \"title\": \"References\",\n          \"description\": \"Zero or more pointers to vulnerabilities that are the equivalent of the vulnerability specified. Often times, the same vulnerability may exist in multiple sources of vulnerability intelligence, but have different identifiers. References provide a way to correlate vulnerabilities across multiple sources of vulnerability intelligence.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\n              \"id\",\n              \"source\"\n            ],\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\",\n                \"title\": \"ID\",\n                \"description\": \"An identifier that uniquely identifies the vulnerability.\",\n                \"examples\": [\n                  \"CVE-2021-39182\",\n                  \"GHSA-35m5-8cvj-8783\",\n                  \"SNYK-PYTHON-ENROCRYPT-1912876\"\n                ]\n              },\n              \"source\": {\n                \"$ref\": \"#/definitions/vulnerabilitySource\",\n                \"description\": \"The source that published the vulnerability.\"\n              }\n            }\n          }\n        },\n        \"ratings\": {\n          \"type\": \"array\",\n          \"title\": \"Ratings\",\n          \"description\": \"List of vulnerability ratings\",\n          \"items\": {\n            \"$ref\": \"#/definitions/rating\"\n          }\n        },\n        \"cwes\": {\n          \"type\": \"array\",\n          \"title\": \"CWEs\",\n          \"description\": \"List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability.\",\n          \"examples\": [399],\n          \"items\": {\n            \"$ref\": \"#/definitions/cwe\"\n          }\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Description\",\n          \"description\": \"A description of the vulnerability as provided by the source.\"\n        },\n        \"detail\": {\n          \"type\": \"string\",\n          \"title\": \"Details\",\n          \"description\": \"If available, an in-depth description of the vulnerability as provided by the source organization. Details often include information useful in understanding root cause.\"\n        },\n        \"recommendation\": {\n          \"type\": \"string\",\n          \"title\": \"Recommendation\",\n          \"description\": \"Recommendations of how the vulnerability can be remediated or mitigated.\"\n        },\n        \"workaround\": {\n          \"type\": \"string\",\n          \"title\": \"Workarounds\",\n          \"description\": \"A bypass, usually temporary, of the vulnerability that reduces its likelihood and/or impact. Workarounds often involve changes to configuration or deployments.\"\n        },\n        \"proofOfConcept\": {\n          \"type\": \"object\",\n          \"title\": \"Proof of Concept\",\n          \"description\": \"Evidence used to reproduce the vulnerability.\",\n          \"properties\": {\n            \"reproductionSteps\": {\n              \"type\": \"string\",\n              \"title\": \"Steps to Reproduce\",\n              \"description\": \"Precise steps to reproduce the vulnerability.\"\n            },\n            \"environment\": {\n              \"type\": \"string\",\n              \"title\": \"Environment\",\n              \"description\": \"A description of the environment in which reproduction was possible.\"\n            },\n            \"supportingMaterial\": {\n              \"type\": \"array\",\n              \"title\": \"Supporting Material\",\n              \"description\": \"Supporting material that helps in reproducing or understanding how reproduction is possible. This may include screenshots, payloads, and PoC exploit code.\",\n              \"items\": { \"$ref\": \"#/definitions/attachment\" }\n            }\n          }\n        },\n        \"advisories\": {\n          \"type\": \"array\",\n          \"title\": \"Advisories\",\n          \"description\": \"Published advisories of the vulnerability if provided.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/advisory\"\n          }\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Created\",\n          \"description\": \"The date and time (timestamp) when the vulnerability record was created in the vulnerability database.\"\n        },\n        \"published\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Published\",\n          \"description\": \"The date and time (timestamp) when the vulnerability record was first published.\"\n        },\n        \"updated\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Updated\",\n          \"description\": \"The date and time (timestamp) when the vulnerability record was last updated.\"\n        },\n        \"rejected\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Rejected\",\n          \"description\": \"The date and time (timestamp) when the vulnerability record was rejected (if applicable).\"\n        },\n        \"credits\": {\n          \"type\": \"object\",\n          \"title\": \"Credits\",\n          \"description\": \"Individuals or organizations credited with the discovery of the vulnerability.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"organizations\": {\n              \"type\": \"array\",\n              \"title\": \"Organizations\",\n              \"description\": \"The organizations credited with vulnerability discovery.\",\n              \"items\": {\n                \"$ref\": \"#/definitions/organizationalEntity\"\n              }\n            },\n            \"individuals\": {\n              \"type\": \"array\",\n              \"title\": \"Individuals\",\n              \"description\": \"The individuals, not associated with organizations, that are credited with vulnerability discovery.\",\n              \"items\": {\n                \"$ref\": \"#/definitions/organizationalContact\"\n              }\n            }\n          }\n        },\n        \"tools\": {\n          \"title\": \"Tools\",\n          \"description\": \"The tool(s) used to identify, confirm, or score the vulnerability.\",\n          \"oneOf\": [\n            {\n              \"type\": \"object\",\n              \"title\": \"Tools\",\n              \"description\": \"The tool(s) used to identify, confirm, or score the vulnerability.\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"components\": {\n                  \"type\": \"array\",\n                  \"items\": {\"$ref\": \"#/definitions/component\"},\n                  \"uniqueItems\": true,\n                  \"title\": \"Components\",\n                  \"description\": \"A list of software and hardware components used as tools.\"\n                },\n                \"services\": {\n                  \"type\": \"array\",\n                  \"items\": {\"$ref\": \"#/definitions/service\"},\n                  \"uniqueItems\": true,\n                  \"title\": \"Services\",\n                  \"description\": \"A list of services used as tools. This may include microservices, function-as-a-service, and other types of network or intra-process services.\"\n                }\n              }\n            },\n            {\n              \"type\": \"array\",\n              \"title\": \"Tools (legacy)\",\n              \"description\": \"[Deprecated] The tool(s) used to identify, confirm, or score the vulnerability.\",\n              \"items\": {\"$ref\": \"#/definitions/tool\"}\n            }\n          ]\n        },\n        \"analysis\": {\n          \"type\": \"object\",\n          \"title\": \"Impact Analysis\",\n          \"description\": \"An assessment of the impact and exploitability of the vulnerability.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"state\": {\n              \"$ref\": \"#/definitions/impactAnalysisState\"\n            },\n            \"justification\": {\n              \"$ref\": \"#/definitions/impactAnalysisJustification\"\n            },\n            \"response\": {\n              \"type\": \"array\",\n              \"title\": \"Response\",\n              \"description\": \"A response to the vulnerability by the manufacturer, supplier, or project responsible for the affected component or service. More than one response is allowed. Responses are strongly encouraged for vulnerabilities where the analysis state is exploitable.\",\n              \"items\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"can_not_fix\",\n                  \"will_not_fix\",\n                  \"update\",\n                  \"rollback\",\n                  \"workaround_available\"\n                ],\n                \"meta:enum\": {\n                  \"can_not_fix\": \"Can not fix\",\n                  \"will_not_fix\": \"Will not fix\",\n                  \"update\": \"Update to a different revision or release\",\n                  \"rollback\": \"Revert to a previous revision or release\",\n                  \"workaround_available\": \"There is a workaround available\"\n                }\n              }\n            },\n            \"detail\": {\n              \"type\": \"string\",\n              \"title\": \"Detail\",\n              \"description\": \"Detailed description of the impact including methods used during assessment. If a vulnerability is not exploitable, this field should include specific details on why the component or service is not impacted by this vulnerability.\"\n            },\n            \"firstIssued\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"First Issued\",\n              \"description\": \"The date and time (timestamp) when the analysis was first issued.\"\n            },\n            \"lastUpdated\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"Last Updated\",\n              \"description\": \"The date and time (timestamp) when the analysis was last updated.\"\n            }\n          }\n        },\n        \"affects\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\n              \"ref\"\n            ],\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"ref\": {\n                \"anyOf\": [\n                  {\n                    \"title\": \"Ref\",\n                    \"$ref\": \"#/definitions/refLinkType\"\n                  },\n                  {\n                    \"title\": \"BOM-Link Element\",\n                    \"$ref\": \"#/definitions/bomLinkElementType\"\n                  }\n                ],\n                \"title\": \"Reference\",\n                \"description\": \"References a component or service by the objects bom-ref\"\n              },\n              \"versions\": {\n                \"type\": \"array\",\n                \"title\": \"Versions\",\n                \"description\": \"Zero or more individual versions or range of versions.\",\n                \"items\": {\n                  \"type\": \"object\",\n                  \"oneOf\": [\n                    {\n                      \"required\": [\"version\"]\n                    },\n                    {\n                      \"required\": [\"range\"]\n                    }\n                  ],\n                  \"additionalProperties\": false,\n                  \"properties\": {\n                    \"version\": {\n                      \"title\": \"Version\",\n                      \"description\": \"A single version of a component or service.\",\n                      \"$ref\": \"#/definitions/version\"\n                    },\n                    \"range\": {\n                      \"title\": \"Version Range\",\n                      \"description\": \"A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst\",\n                      \"$ref\": \"#/definitions/versionRange\"\n                    },\n                    \"status\": {\n                      \"title\": \"Status\",\n                      \"description\": \"The vulnerability status for the version or range of versions.\",\n                      \"$ref\": \"#/definitions/affectedStatus\",\n                      \"default\": \"affected\"\n                    }\n                  }\n                }\n              }\n            }\n          },\n          \"title\": \"Affects\",\n          \"description\": \"The components or services that are affected by the vulnerability.\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"affectedStatus\": {\n      \"description\": \"The vulnerability status of a given version or range of versions of a product. The statuses 'affected' and 'unaffected' indicate that the version is affected or unaffected by the vulnerability. The status 'unknown' indicates that it is unknown or unspecified whether the given version is affected. There can be many reasons for an 'unknown' status, including that an investigation has not been undertaken or that a vendor has not disclosed the status.\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"affected\",\n        \"unaffected\",\n        \"unknown\"\n      ],\n      \"meta:enum\": {\n        \"affected\": \"The version is affected by the vulnerability.\",\n        \"unaffected\": \"The version is not affected by the vulnerability.\",\n        \"unknown\": \"It is unknown (or unspecified) whether the given version is affected.\"\n      }\n    },\n    \"version\": {\n      \"description\": \"A single disjunctive version identifier, for a component or service.\",\n      \"type\": \"string\",\n      \"maxLength\": 1024,\n      \"examples\": [\n        \"9.0.14\",\n        \"v1.33.7\",\n        \"7.0.0-M1\",\n        \"2.0pre1\",\n        \"1.0.0-beta1\",\n        \"0.8.15\"\n      ]\n    },\n    \"versionRange\": {\n      \"description\": \"A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst\",\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 4096,\n      \"examples\": [\n        \"vers:cargo/9.0.14\",\n        \"vers:npm/1.2.3|>=2.0.0|<5.0.0\",\n        \"vers:pypi/0.0.0|0.0.1|0.0.2|0.0.3|1.0|2.0pre1\",\n        \"vers:tomee/>=1.0.0-beta1|<=1.7.5|>=7.0.0-M1|<=7.0.7|>=7.1.0|<=7.1.2|>=8.0.0-M1|<=8.0.1\",\n        \"vers:gem/>=2.2.0|!= 2.2.1|<2.3.0\"\n      ]\n    },\n    \"range\": {\n      \"deprecated\": true,\n      \"description\": \"Deprecated definition. use definition `versionRange` instead.\",\n      \"$ref\": \"#/definitions/versionRange\"\n    },\n    \"annotations\": {\n      \"type\": \"object\",\n      \"title\": \"Annotations\",\n      \"description\": \"A comment, note, explanation, or similar textual content which provides additional context to the object(s) being annotated.\",\n      \"required\": [\n        \"subjects\",\n        \"annotator\",\n        \"timestamp\",\n        \"text\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the annotation elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"subjects\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"title\": \"Ref\",\n                \"$ref\": \"#/definitions/refLinkType\"\n              },\n              {\n                \"title\": \"BOM-Link Element\",\n                \"$ref\": \"#/definitions/bomLinkElementType\"\n              }\n            ]\n          },\n          \"title\": \"Subjects\",\n          \"description\": \"The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs.\"\n        },\n        \"annotator\": {\n          \"type\": \"object\",\n          \"title\": \"Annotator\",\n          \"description\": \"The organization, person, component, or service which created the textual content of the annotation.\",\n          \"oneOf\": [\n            {\n              \"required\": [\n                \"organization\"\n              ]\n            },\n            {\n              \"required\": [\n                \"individual\"\n              ]\n            },\n            {\n              \"required\": [\n                \"component\"\n              ]\n            },\n            {\n              \"required\": [\n                \"service\"\n              ]\n            }\n          ],\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"organization\": {\n              \"description\": \"The organization that created the annotation\",\n              \"$ref\": \"#/definitions/organizationalEntity\"\n            },\n            \"individual\": {\n              \"description\": \"The person that created the annotation\",\n              \"$ref\": \"#/definitions/organizationalContact\"\n            },\n            \"component\": {\n              \"description\": \"The tool or component that created the annotation\",\n              \"$ref\": \"#/definitions/component\"\n            },\n            \"service\": {\n              \"description\": \"The service that created the annotation\",\n              \"$ref\": \"#/definitions/service\"\n            }\n          }\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"description\": \"The date and time (timestamp) when the annotation was created.\"\n        },\n        \"text\": {\n          \"type\": \"string\",\n          \"title\": \"Text\",\n          \"description\": \"The textual content of the annotation.\"\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"modelCard\": {\n      \"$comment\": \"Model card support in CycloneDX is derived from TensorFlow Model Card Toolkit released under the Apache 2.0 license and available from https://github.com/tensorflow/model-card-toolkit/blob/main/model_card_toolkit/schema/v0.0.2/model_card.schema.json. In addition, CycloneDX model card support includes portions of VerifyML, also released under the Apache 2.0 license and available from https://github.com/cylynx/verifyml/blob/main/verifyml/model_card_toolkit/schema/v0.0.4/model_card.schema.json.\",\n      \"type\": \"object\",\n      \"title\": \"Model Card\",\n      \"description\": \"A model card describes the intended uses of a machine learning model and potential limitations, including biases and ethical considerations. Model cards typically contain the training parameters, which datasets were used to train the model, performance metrics, and other relevant data useful for ML transparency. This object SHOULD be specified for any component of type `machine-learning-model` and MUST NOT be specified for other component types.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the model card elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"modelParameters\": {\n          \"type\": \"object\",\n          \"title\": \"Model Parameters\",\n          \"description\": \"Hyper-parameters for construction of the model.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"approach\": {\n              \"type\": \"object\",\n              \"title\": \"Approach\",\n              \"description\": \"The overall approach to learning used by the model for problem solving.\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"type\": {\n                  \"type\": \"string\",\n                  \"title\": \"Learning Type\",\n                  \"description\": \"Learning types describing the learning problem or hybrid learning problem.\",\n                  \"enum\": [\n                    \"supervised\",\n                    \"unsupervised\",\n                    \"reinforcement-learning\",\n                    \"semi-supervised\",\n                    \"self-supervised\"\n                  ],\n                  \"meta:enum\": {\n                    \"supervised\": \"Supervised machine learning involves training an algorithm on labeled data to predict or classify new data based on the patterns learned from the labeled examples.\",\n                    \"unsupervised\": \"Unsupervised machine learning involves training algorithms on unlabeled data to discover patterns, structures, or relationships without explicit guidance, allowing the model to identify inherent structures or clusters within the data.\",\n                    \"reinforcement-learning\": \"Reinforcement learning is a type of machine learning where an agent learns to make decisions by interacting with an environment to maximize cumulative rewards, through trial and error.\",\n                    \"semi-supervised\": \"Semi-supervised machine learning utilizes a combination of labeled and unlabeled data during training to improve model performance, leveraging the benefits of both supervised and unsupervised learning techniques.\",\n                    \"self-supervised\": \"Self-supervised machine learning involves training models to predict parts of the input data from other parts of the same data, without requiring external labels, enabling learning from large amounts of unlabeled data.\"\n                  }\n                }\n              }\n            },\n            \"task\": {\n              \"type\": \"string\",\n              \"title\": \"Task\",\n              \"description\": \"Directly influences the input and/or output. Examples include classification, regression, clustering, etc.\"\n            },\n            \"architectureFamily\": {\n              \"type\": \"string\",\n              \"title\": \"Architecture Family\",\n              \"description\": \"The model architecture family such as transformer network, convolutional neural network, residual neural network, LSTM neural network, etc.\"\n            },\n            \"modelArchitecture\": {\n              \"type\": \"string\",\n              \"title\": \"Model Architecture\",\n              \"description\": \"The specific architecture of the model such as GPT-1, ResNet-50, YOLOv3, etc.\"\n            },\n            \"datasets\": {\n              \"type\": \"array\",\n              \"title\": \"Datasets\",\n              \"description\": \"The datasets used to train and evaluate the model.\",\n              \"items\" : {\n                \"oneOf\" : [\n                  {\n                    \"title\": \"Inline Data Information\",\n                    \"$ref\": \"#/definitions/componentData\"\n                  },\n                  {\n                    \"type\": \"object\",\n                    \"title\": \"Data Reference\",\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                      \"ref\": {\n                        \"anyOf\": [\n                          {\n                            \"title\": \"Ref\",\n                            \"$ref\": \"#/definitions/refLinkType\"\n                          },\n                          {\n                            \"title\": \"BOM-Link Element\",\n                            \"$ref\": \"#/definitions/bomLinkElementType\"\n                          }\n                        ],\n                        \"title\": \"Reference\",\n                        \"description\": \"References a data component by the components bom-ref attribute\"\n                      }\n                    }\n                  }\n                ]\n              }\n            },\n            \"inputs\": {\n              \"type\": \"array\",\n              \"title\": \"Inputs\",\n              \"description\": \"The input format(s) of the model\",\n              \"items\": { \"$ref\": \"#/definitions/inputOutputMLParameters\" }\n            },\n            \"outputs\": {\n              \"type\": \"array\",\n              \"title\": \"Outputs\",\n              \"description\": \"The output format(s) from the model\",\n              \"items\": { \"$ref\": \"#/definitions/inputOutputMLParameters\" }\n            }\n          }\n        },\n        \"quantitativeAnalysis\": {\n          \"type\": \"object\",\n          \"title\": \"Quantitative Analysis\",\n          \"description\": \"A quantitative analysis of the model\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"performanceMetrics\": {\n              \"type\": \"array\",\n              \"title\": \"Performance Metrics\",\n              \"description\": \"The model performance metrics being reported. Examples may include accuracy, F1 score, precision, top-3 error rates, MSC, etc.\",\n              \"items\": { \"$ref\": \"#/definitions/performanceMetric\" }\n            },\n            \"graphics\": { \"$ref\": \"#/definitions/graphicsCollection\" }\n          }\n        },\n        \"considerations\": {\n          \"type\": \"object\",\n          \"title\": \"Considerations\",\n          \"description\": \"What considerations should be taken into account regarding the model's construction, training, and application?\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"users\": {\n              \"type\": \"array\",\n              \"title\": \"Users\",\n              \"description\": \"Who are the intended users of the model?\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"useCases\": {\n              \"type\": \"array\",\n              \"title\": \"Use Cases\",\n              \"description\": \"What are the intended use cases of the model?\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"technicalLimitations\": {\n              \"type\": \"array\",\n              \"title\": \"Technical Limitations\",\n              \"description\": \"What are the known technical limitations of the model? E.g. What kind(s) of data should the model be expected not to perform well on? What are the factors that might degrade model performance?\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"performanceTradeoffs\": {\n              \"type\": \"array\",\n              \"title\": \"Performance Tradeoffs\",\n              \"description\": \"What are the known tradeoffs in accuracy/performance of the model?\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            },\n            \"ethicalConsiderations\": {\n              \"type\": \"array\",\n              \"title\": \"Ethical Considerations\",\n              \"description\": \"What are the ethical risks involved in the application of this model?\",\n              \"items\": { \"$ref\": \"#/definitions/risk\" }\n            },\n            \"environmentalConsiderations\":{\n              \"$ref\": \"#/definitions/environmentalConsiderations\",\n              \"title\": \"Environmental Considerations\",\n              \"description\": \"What are the various environmental impacts the corresponding machine learning model has exhibited across its lifecycle?\"\n            },\n            \"fairnessAssessments\": {\n              \"type\": \"array\",\n              \"title\": \"Fairness Assessments\",\n              \"description\": \"How does the model affect groups at risk of being systematically disadvantaged? What are the harms and benefits to the various affected groups?\",\n              \"items\": {\n                \"$ref\": \"#/definitions/fairnessAssessment\"\n              }\n            }\n          }\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n          \"items\": {\"$ref\": \"#/definitions/property\"}\n        }\n      }\n    },\n    \"inputOutputMLParameters\": {\n      \"type\": \"object\",\n      \"title\": \"Input and Output Parameters\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"format\": {\n          \"title\": \"Input/Output Format\",\n          \"description\": \"The data format for input/output to the model.\",\n          \"type\": \"string\",\n          \"examples\": [ \"string\", \"image\", \"time-series\"]\n        }\n      }\n    },\n    \"componentData\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"type\"\n      ],\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the dataset elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"title\": \"Type of Data\",\n          \"description\": \"The general theme or subject matter of the data being specified.\",\n          \"enum\": [\n            \"source-code\",\n            \"configuration\",\n            \"dataset\",\n            \"definition\",\n            \"other\"\n          ],\n          \"meta:enum\": {\n            \"source-code\": \"Any type of code, code snippet, or data-as-code.\",\n            \"configuration\": \"Parameters or settings that may be used by other components.\",\n            \"dataset\": \"A collection of data.\",\n            \"definition\": \"Data that can be used to create new instances of what the definition defines.\",\n            \"other\": \"Any other type of data that does not fit into existing definitions.\"\n          }\n        },\n        \"name\": {\n          \"title\": \"Dataset Name\",\n          \"description\": \"The name of the dataset.\",\n          \"type\": \"string\"\n        },\n        \"contents\": {\n          \"type\": \"object\",\n          \"title\": \"Data Contents\",\n          \"description\": \"The contents or references to the contents of the data being described.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"attachment\": {\n              \"title\": \"Data Attachment\",\n              \"description\": \"An optional way to include textual or encoded data.\",\n              \"$ref\": \"#/definitions/attachment\"\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"title\": \"Data URL\",\n              \"description\": \"The URL to where the data can be retrieved.\",\n              \"format\": \"iri-reference\"\n            },\n            \"properties\": {\n              \"type\": \"array\",\n              \"title\": \"Configuration Properties\",\n              \"description\": \"Provides the ability to document name-value parameters used for configuration.\",\n              \"items\": {\n                \"$ref\": \"#/definitions/property\"\n              }\n            }\n          }\n        },\n        \"classification\": {\n          \"$ref\": \"#/definitions/dataClassification\"\n        },\n        \"sensitiveData\": {\n          \"type\": \"array\",\n          \"title\": \"Sensitive Data\",\n          \"description\": \"A description of any sensitive data in a dataset.\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        },\n        \"graphics\": { \"$ref\": \"#/definitions/graphicsCollection\" },\n        \"description\": {\n          \"title\": \"Dataset Description\",\n          \"description\": \"A description of the dataset. Can describe size of dataset, whether it's used for source code, training, testing, or validation, etc.\",\n          \"type\": \"string\"\n        },\n        \"governance\": {\n          \"title\": \"Data Governance\",\n          \"$ref\": \"#/definitions/dataGovernance\"\n        }\n      }\n    },\n    \"dataGovernance\": {\n      \"type\": \"object\",\n      \"title\": \"Data Governance\",\n      \"description\": \"Data governance captures information regarding data ownership, stewardship, and custodianship, providing insights into the individuals or entities responsible for managing, overseeing, and safeguarding the data throughout its lifecycle.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"custodians\": {\n          \"type\": \"array\",\n          \"title\": \"Data Custodians\",\n          \"description\": \"Data custodians are responsible for the safe custody, transport, and storage of data.\",\n          \"items\": { \"$ref\": \"#/definitions/dataGovernanceResponsibleParty\" }\n        },\n        \"stewards\": {\n          \"type\": \"array\",\n          \"title\": \"Data Stewards\",\n          \"description\": \"Data stewards are responsible for data content, context, and associated business rules.\",\n          \"items\": { \"$ref\": \"#/definitions/dataGovernanceResponsibleParty\" }\n        },\n        \"owners\": {\n          \"type\": \"array\",\n          \"title\": \"Data Owners\",\n          \"description\": \"Data owners are concerned with risk and appropriate access to data.\",\n          \"items\": { \"$ref\": \"#/definitions/dataGovernanceResponsibleParty\" }\n        }\n      }\n    },\n    \"dataGovernanceResponsibleParty\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"organization\": {\n          \"title\": \"Organization\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"contact\": {\n          \"title\": \"Individual\",\n          \"$ref\": \"#/definitions/organizationalContact\"\n        }\n      },\n      \"oneOf\":[\n        {\n          \"required\": [\"organization\"]\n        },\n        {\n          \"required\": [\"contact\"]\n        }\n      ]\n    },\n    \"graphicsCollection\": {\n      \"type\": \"object\",\n      \"title\": \"Graphics Collection\",\n      \"description\": \"A collection of graphics that represent various measurements.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of this collection of graphics.\",\n          \"type\": \"string\"\n        },\n        \"collection\": {\n          \"title\": \"Collection\",\n          \"description\": \"A collection of graphics.\",\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/definitions/graphic\" }\n        }\n      }\n    },\n    \"graphic\": {\n      \"type\": \"object\",\n      \"title\": \"Graphic\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the graphic.\",\n          \"type\": \"string\"\n        },\n        \"image\": {\n          \"title\": \"Graphic Image\",\n          \"description\": \"The graphic (vector or raster). Base64 encoding MUST be specified for binary images.\",\n          \"$ref\": \"#/definitions/attachment\"\n        }\n      }\n    },\n    \"performanceMetric\": {\n      \"type\": \"object\",\n      \"title\": \"Performance Metric\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"title\": \"Type\",\n          \"description\": \"The type of performance metric.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"description\": \"The value of the performance metric.\",\n          \"type\": \"string\"\n        },\n        \"slice\": {\n          \"title\": \"Slice\",\n          \"description\": \"The name of the slice this metric was computed on. By default, assume this metric is not sliced.\",\n          \"type\": \"string\"\n        },\n        \"confidenceInterval\": {\n          \"title\": \"Confidence Interval\",\n          \"description\": \"The confidence interval of the metric.\",\n          \"type\": \"object\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"lowerBound\": {\n              \"title\": \"Lower Bound\",\n              \"description\": \"The lower bound of the confidence interval.\",\n              \"type\": \"string\"\n            },\n            \"upperBound\": {\n              \"title\": \"Upper Bound\",\n              \"description\": \"The upper bound of the confidence interval.\",\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    },\n    \"risk\": {\n      \"type\": \"object\",\n      \"title\": \"Risk\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the risk.\",\n          \"type\": \"string\"\n        },\n        \"mitigationStrategy\": {\n          \"title\": \"Mitigation Strategy\",\n          \"description\": \"Strategy used to address this risk.\",\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"fairnessAssessment\": {\n      \"type\": \"object\",\n      \"title\": \"Fairness Assessment\",\n      \"description\": \"Information about the benefits and harms of the model to an identified at risk group.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"groupAtRisk\": {\n          \"type\": \"string\",\n          \"title\": \"Group at Risk\",\n          \"description\": \"The groups or individuals at risk of being systematically disadvantaged by the model.\"\n        },\n        \"benefits\": {\n          \"type\": \"string\",\n          \"title\": \"Benefits\",\n          \"description\": \"Expected benefits to the identified groups.\"\n        },\n        \"harms\": {\n          \"type\": \"string\",\n          \"title\": \"Harms\",\n          \"description\": \"Expected harms to the identified groups.\"\n        },\n        \"mitigationStrategy\": {\n          \"type\": \"string\",\n          \"title\": \"Mitigation Strategy\",\n          \"description\": \"With respect to the benefits and harms outlined, please describe any mitigation strategy implemented.\"\n        }\n      }\n    },\n    \"dataClassification\": {\n      \"type\": \"string\",\n      \"title\": \"Data Classification\",\n      \"description\": \"Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.\"\n    },\n    \"environmentalConsiderations\": {\n      \"type\": \"object\",\n      \"title\": \"Environmental Considerations\",\n      \"description\": \"Describes various environmental impact metrics.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"energyConsumptions\": {\n          \"title\": \"Energy Consumptions\",\n          \"description\": \"Describes energy consumption information incurred for one or more component lifecycle activities.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/energyConsumption\"\n          }\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"energyConsumption\": {\n      \"title\": \"Energy consumption\",\n      \"description\": \"Describes energy consumption information incurred for the specified lifecycle activity.\",\n      \"type\": \"object\",\n      \"required\": [\n        \"activity\",\n        \"energyProviders\",\n        \"activityEnergyCost\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"activity\": {\n          \"type\": \"string\",\n          \"title\": \"Activity\",\n          \"description\": \"The type of activity that is part of a machine learning model development or operational lifecycle.\",\n          \"enum\": [\n            \"design\",\n            \"data-collection\",\n            \"data-preparation\",\n            \"training\",\n            \"fine-tuning\",\n            \"validation\",\n            \"deployment\",\n            \"inference\",\n            \"other\"\n          ],\n          \"meta:enum\": {\n            \"design\": \"A model design including problem framing, goal definition and algorithm selection.\",\n            \"data-collection\": \"Model data acquisition including search, selection and transfer.\",\n            \"data-preparation\": \"Model data preparation including data cleaning, labeling and conversion.\",\n            \"training\": \"Model building, training and generalized tuning.\",\n            \"fine-tuning\": \"Refining a trained model to produce desired outputs for a given problem space.\",\n            \"validation\": \"Model validation including model output evaluation and testing.\",\n            \"deployment\": \"Explicit model deployment to a target hosting infrastructure.\",\n            \"inference\": \"Generating an output response from a hosted model from a set of inputs.\",\n            \"other\": \"A lifecycle activity type whose description does not match currently defined values.\"\n          }\n        },\n        \"energyProviders\": {\n          \"title\": \"Energy Providers\",\n          \"description\": \"The provider(s) of the energy consumed by the associated model development lifecycle activity.\",\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/definitions/energyProvider\" }\n        },\n        \"activityEnergyCost\": {\n          \"title\": \"Activity Energy Cost\",\n          \"description\": \"The total energy cost associated with the model lifecycle activity.\",\n          \"$ref\": \"#/definitions/energyMeasure\"\n        },\n        \"co2CostEquivalent\": {\n          \"title\": \"CO2 Equivalent Cost\",\n          \"description\": \"The CO2 cost (debit) equivalent to the total energy cost.\",\n          \"$ref\": \"#/definitions/co2Measure\"\n        },\n        \"co2CostOffset\": {\n          \"title\": \"CO2 Cost Offset\",\n          \"description\": \"The CO2 offset (credit) for the CO2 equivalent cost.\",\n          \"$ref\": \"#/definitions/co2Measure\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"energyMeasure\": {\n      \"type\": \"object\",\n      \"title\": \"Energy Measure\",\n      \"description\": \"A measure of energy.\",\n      \"required\": [\n        \"value\",\n        \"unit\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"value\": {\n          \"type\": \"number\",\n          \"title\": \"Value\",\n          \"description\": \"Quantity of energy.\"\n        },\n        \"unit\": {\n          \"type\": \"string\",\n          \"enum\": [ \"kWh\" ],\n          \"title\": \"Unit\",\n          \"description\": \"Unit of energy.\",\n          \"meta:enum\": {\n            \"kWh\": \"Kilowatt-hour (kWh) is the energy delivered by one kilowatt (kW) of power for one hour (h).\"\n          }\n        }\n      }\n    },\n    \"co2Measure\": {\n      \"type\": \"object\",\n      \"title\": \"CO2 Measure\",\n      \"description\": \"A measure of carbon dioxide (CO2).\",\n      \"required\": [\n        \"value\",\n        \"unit\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"value\": {\n          \"type\": \"number\",\n          \"title\": \"Value\",\n          \"description\": \"Quantity of carbon dioxide (CO2).\"\n        },\n        \"unit\": {\n          \"type\": \"string\",\n          \"enum\": [ \"tCO2eq\" ],\n          \"title\": \"Unit\",\n          \"description\": \"Unit of carbon dioxide (CO2).\",\n          \"meta:enum\": {\n            \"tCO2eq\": \"Tonnes (t) of carbon dioxide (CO2) equivalent (eq).\"\n          }\n        }\n      }\n    },\n    \"energyProvider\": {\n      \"type\": \"object\",\n      \"title\": \"Energy Provider\",\n      \"description\": \"Describes the physical provider of energy used for model development or operations.\",\n      \"required\": [\n        \"organization\",\n        \"energySource\",\n        \"energyProvided\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the energy provider elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Description\",\n          \"description\": \"A description of the energy provider.\"\n        },\n        \"organization\": {\n          \"type\": \"object\",\n          \"title\": \"Organization\",\n          \"$ref\": \"#/definitions/organizationalEntity\"\n        },\n        \"energySource\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"coal\",\n            \"oil\",\n            \"natural-gas\",\n            \"nuclear\",\n            \"wind\",\n            \"solar\",\n            \"geothermal\",\n            \"hydropower\",\n            \"biofuel\",\n            \"unknown\",\n            \"other\"\n          ],\n          \"meta:enum\": {\n            \"coal\": \"Energy produced by types of coal.\",\n            \"oil\": \"Petroleum products (primarily crude oil and its derivative fuel oils).\",\n            \"natural-gas\": \"Hydrocarbon gas liquids (HGL) that occur as gases at atmospheric pressure and as liquids under higher pressures including Natural gas (C5H12 and heavier), Ethane (C2H6), Propane (C3H8), etc.\",\n            \"nuclear\": \"Energy produced from the cores of atoms (i.e., through nuclear fission or fusion).\",\n            \"wind\": \"Energy produced from moving air.\",\n            \"solar\": \"Energy produced from the sun (i.e., solar radiation).\",\n            \"geothermal\": \"Energy produced from heat within the earth.\",\n            \"hydropower\": \"Energy produced from flowing water.\",\n            \"biofuel\": \"Liquid fuels produced from biomass feedstocks (i.e., organic materials such as plants or animals).\",\n            \"unknown\": \"The energy source is unknown.\",\n            \"other\": \"An energy source that is not listed.\"\n          },\n          \"title\": \"Energy Source\",\n          \"description\": \"The energy source for the energy provider.\"\n        },\n        \"energyProvided\": {\n          \"$ref\": \"#/definitions/energyMeasure\",\n          \"title\": \"Energy Provided\",\n          \"description\": \"The energy provided by the energy source for an associated activity.\"\n        },\n        \"externalReferences\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n          \"title\": \"External References\",\n          \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n        }\n      }\n    },\n    \"postalAddress\": {\n      \"type\": \"object\",\n      \"title\": \"Postal address\",\n      \"description\": \"An address used to identify a contactable location.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the address elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"country\": {\n          \"type\": \"string\",\n          \"title\": \"Country\",\n          \"description\": \"The country name or the two-letter ISO 3166-1 country code.\"\n        },\n        \"region\": {\n          \"type\": \"string\",\n          \"title\": \"Region\",\n          \"description\": \"The region or state in the country.\",\n          \"examples\": [ \"Texas\" ]\n        },\n        \"locality\": {\n          \"type\": \"string\",\n          \"title\": \"Locality\",\n          \"description\": \"The locality or city within the country.\",\n          \"examples\": [ \"Austin\" ]\n        },\n        \"postOfficeBoxNumber\": {\n          \"type\": \"string\",\n          \"title\": \"Post Office Box Number\",\n          \"description\": \"The post office box number.\",\n          \"examples\": [ \"901\" ]\n        },\n        \"postalCode\": {\n          \"type\": \"string\",\n          \"title\": \"Postal Code\",\n          \"description\": \"The postal code.\",\n          \"examples\": [ \"78758\" ]\n        },\n        \"streetAddress\": {\n          \"type\": \"string\",\n          \"title\": \"Street Address\",\n          \"description\": \"The street address.\",\n          \"examples\": [ \"100 Main Street\" ]\n        }\n      }\n    },\n    \"formula\": {\n      \"title\": \"Formula\",\n      \"description\": \"Describes workflows and resources that captures rules and other aspects of how the associated BOM component or service was formed.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the formula elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"components\": {\n          \"title\": \"Components\",\n          \"description\": \"Transient components that are used in tasks that constitute one or more of this formula's workflows\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/component\"\n          },\n          \"uniqueItems\": true\n        },\n        \"services\": {\n          \"title\": \"Services\",\n          \"description\": \"Transient services that are used in tasks that constitute one or more of this formula's workflows\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/service\"\n          },\n          \"uniqueItems\": true\n        },\n        \"workflows\": {\n          \"title\": \"Workflows\",\n          \"description\": \"List of workflows that can be declared to accomplish specific orchestrated goals and independently triggered.\",\n          \"$comment\": \"Different workflows can be designed to work together to perform end-to-end CI/CD builds and deployments.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/workflow\"\n          },\n          \"uniqueItems\": true\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"workflow\": {\n      \"title\": \"Workflow\",\n      \"description\": \"A specialized orchestration task.\",\n      \"$comment\": \"Workflow are as task themselves and can trigger other workflow tasks.  These relationships can be modeled in the taskDependencies graph.\",\n      \"type\": \"object\",\n      \"required\": [\n        \"bom-ref\",\n        \"uid\",\n        \"taskTypes\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the workflow elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier for the resource instance within its deployment context.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"resourceReferences\": {\n          \"title\": \"Resource references\",\n          \"description\": \"References to component or service resources that are used to realize the resource instance.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/resourceReferenceChoice\"\n          }\n        },\n        \"tasks\": {\n          \"title\": \"Tasks\",\n          \"description\": \"The tasks that comprise the workflow.\",\n          \"$comment\": \"Note that tasks can appear more than once as different instances (by name or UID).\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/task\"\n          }\n        },\n        \"taskDependencies\": {\n          \"title\": \"Task dependency graph\",\n          \"description\": \"The graph of dependencies between tasks within the workflow.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/dependency\"\n          }\n        },\n        \"taskTypes\": {\n          \"title\": \"Task types\",\n          \"description\": \"Indicates the types of activities performed by the set of workflow tasks.\",\n          \"$comment\": \"Currently, these types reflect common CI/CD actions.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/taskType\"\n          }\n        },\n        \"trigger\": {\n          \"title\": \"Trigger\",\n          \"description\": \"The trigger that initiated the task.\",\n          \"$ref\": \"#/definitions/trigger\"\n        },\n        \"steps\": {\n          \"title\": \"Steps\",\n          \"description\": \"The sequence of steps for the task.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/step\"\n          },\n          \"uniqueItems\": true\n        },\n        \"inputs\": {\n          \"title\": \"Inputs\",\n          \"description\": \"Represents resources and data brought into a task at runtime by executor or task commands\",\n          \"examples\": [\"a `configuration` file which was declared as a local `component` or `externalReference`\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/inputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"outputs\": {\n          \"title\": \"Outputs\",\n          \"description\": \"Represents resources and data output from a task at runtime by executor or task commands\",\n          \"examples\": [\"a log file or metrics data produced by the task\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/outputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"timeStart\": {\n          \"title\": \"Time start\",\n          \"description\": \"The date and time (timestamp) when the task started.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"timeEnd\": {\n          \"title\": \"Time end\",\n          \"description\": \"The date and time (timestamp) when the task ended.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"workspaces\": {\n          \"title\": \"Workspaces\",\n          \"description\": \"A set of named filesystem or data resource shareable by workflow tasks.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/workspace\"\n          }\n        },\n        \"runtimeTopology\": {\n          \"title\": \"Runtime topology\",\n          \"description\": \"A graph of the component runtime topology for workflow's instance.\",\n          \"$comment\": \"A description of the runtime component and service topology.  This can describe a partial or complete topology used to host and execute the task (e.g., hardware, operating systems, configurations, etc.),\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/dependency\"\n          }\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"task\": {\n      \"title\": \"Task\",\n      \"description\": \"Describes the inputs, sequence of steps and resources used to accomplish a task and its output.\",\n      \"$comment\": \"Tasks are building blocks for constructing assemble CI/CD workflows or pipelines.\",\n      \"type\": \"object\",\n      \"required\": [\n        \"bom-ref\",\n        \"uid\",\n        \"taskTypes\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the task elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier for the resource instance within its deployment context.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"resourceReferences\": {\n          \"title\": \"Resource references\",\n          \"description\": \"References to component or service resources that are used to realize the resource instance.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/resourceReferenceChoice\"\n          }\n        },\n        \"taskTypes\": {\n          \"title\": \"Task types\",\n          \"description\": \"Indicates the types of activities performed by the set of workflow tasks.\",\n          \"$comment\": \"Currently, these types reflect common CI/CD actions.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/taskType\"\n          }\n        },\n        \"trigger\": {\n          \"title\": \"Trigger\",\n          \"description\": \"The trigger that initiated the task.\",\n          \"$ref\": \"#/definitions/trigger\"\n        },\n        \"steps\": {\n          \"title\": \"Steps\",\n          \"description\": \"The sequence of steps for the task.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/step\"\n          },\n          \"uniqueItems\": true\n        },\n        \"inputs\": {\n          \"title\": \"Inputs\",\n          \"description\": \"Represents resources and data brought into a task at runtime by executor or task commands\",\n          \"examples\": [\"a `configuration` file which was declared as a local `component` or `externalReference`\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/inputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"outputs\": {\n          \"title\": \"Outputs\",\n          \"description\": \"Represents resources and data output from a task at runtime by executor or task commands\",\n          \"examples\": [\"a log file or metrics data produced by the task\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/outputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"timeStart\": {\n          \"title\": \"Time start\",\n          \"description\": \"The date and time (timestamp) when the task started.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"timeEnd\": {\n          \"title\": \"Time end\",\n          \"description\": \"The date and time (timestamp) when the task ended.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"workspaces\": {\n          \"title\": \"Workspaces\",\n          \"description\": \"A set of named filesystem or data resource shareable by workflow tasks.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/workspace\"\n          },\n          \"uniqueItems\": true\n        },\n        \"runtimeTopology\": {\n          \"title\": \"Runtime topology\",\n          \"description\": \"A graph of the component runtime topology for task's instance.\",\n          \"$comment\": \"A description of the runtime component and service topology.  This can describe a partial or complete topology used to host and execute the task (e.g., hardware, operating systems, configurations, etc.),\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/dependency\"\n          },\n          \"uniqueItems\": true\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"step\": {\n      \"type\": \"object\",\n      \"description\": \"Executes specific commands or tools in order to accomplish its owning task as part of a sequence.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"A name for the step.\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the step.\",\n          \"type\": \"string\"\n        },\n        \"commands\": {\n          \"title\": \"Commands\",\n          \"description\": \"Ordered list of commands or directives for the step\",\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/command\"\n          }\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"command\": {\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"executed\": {\n          \"title\": \"Executed\",\n          \"description\": \"A text representation of the executed command.\",\n          \"type\": \"string\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"workspace\": {\n      \"title\": \"Workspace\",\n      \"description\": \"A named filesystem or data resource shareable by workflow tasks.\",\n      \"type\": \"object\",\n      \"required\": [\n        \"bom-ref\",\n        \"uid\"\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the workspace elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier for the resource instance within its deployment context.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"aliases\": {\n          \"title\": \"Aliases\",\n          \"description\": \"The names for the workspace as referenced by other workflow tasks. Effectively, a name mapping so other tasks can use their own local name in their steps.\",\n          \"type\": \"array\",\n          \"items\": {\"type\": \"string\"}\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"resourceReferences\": {\n          \"title\": \"Resource references\",\n          \"description\": \"References to component or service resources that are used to realize the resource instance.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/resourceReferenceChoice\"\n          }\n        },\n        \"accessMode\": {\n          \"title\": \"Access mode\",\n          \"description\": \"Describes the read-write access control for the workspace relative to the owning resource instance.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"read-only\",\n            \"read-write\",\n            \"read-write-once\",\n            \"write-once\",\n            \"write-only\"\n          ]\n        },\n        \"mountPath\": {\n          \"title\": \"Mount path\",\n          \"description\": \"A path to a location on disk where the workspace will be available to the associated task's steps.\",\n          \"type\": \"string\"\n        },\n        \"managedDataType\": {\n          \"title\": \"Managed data type\",\n          \"description\": \"The name of a domain-specific data type the workspace represents.\",\n          \"$comment\": \"This property is for CI/CD frameworks that are able to provide access to structured, managed data at a more granular level than a filesystem.\",\n          \"examples\": [\"ConfigMap\",\"Secret\"],\n          \"type\": \"string\"\n        },\n        \"volumeRequest\": {\n          \"title\": \"Volume request\",\n          \"description\": \"Identifies the reference to the request for a specific volume type and parameters.\",\n          \"examples\": [\"a kubernetes Persistent Volume Claim (PVC) name\"],\n          \"type\": \"string\"\n        },\n        \"volume\": {\n          \"title\": \"Volume\",\n          \"description\": \"Information about the actual volume instance allocated to the workspace.\",\n          \"$comment\": \"The actual volume allocated may be different than the request.\",\n          \"examples\": [\"see https://kubernetes.io/docs/concepts/storage/persistent-volumes/\"],\n          \"$ref\": \"#/definitions/volume\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"volume\": {\n      \"title\": \"Volume\",\n      \"description\": \"An identifiable, logical unit of data storage tied to a physical device.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier for the volume instance within its deployment context.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the volume instance\",\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"title\": \"Mode\",\n          \"description\": \"The mode for the volume instance.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"filesystem\", \"block\"\n          ],\n          \"default\": \"filesystem\"\n        },\n        \"path\": {\n          \"title\": \"Path\",\n          \"description\": \"The underlying path created from the actual volume.\",\n          \"type\": \"string\"\n        },\n        \"sizeAllocated\": {\n          \"title\": \"Size allocated\",\n          \"description\": \"The allocated size of the volume accessible to the associated workspace. This should include the scalar size as well as IEC standard unit in either decimal or binary form.\",\n          \"examples\": [\"10GB\", \"2Ti\", \"1Pi\"],\n          \"type\": \"string\"\n        },\n        \"persistent\": {\n          \"title\": \"Persistent\",\n          \"description\": \"Indicates if the volume persists beyond the life of the resource it is associated with.\",\n          \"type\": \"boolean\"\n        },\n        \"remote\": {\n          \"title\": \"Remote\",\n          \"description\": \"Indicates if the volume is remotely (i.e., network) attached.\",\n          \"type\": \"boolean\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"trigger\": {\n      \"title\": \"Trigger\",\n      \"description\": \"Represents a resource that can conditionally activate (or fire) tasks based upon associated events and their data.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"type\",\n        \"bom-ref\",\n        \"uid\"\n      ],\n      \"properties\": {\n        \"bom-ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the trigger elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.\",\n          \"$ref\": \"#/definitions/refType\"\n        },\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier for the resource instance within its deployment context.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the resource instance.\",\n          \"type\": \"string\"\n        },\n        \"resourceReferences\": {\n          \"title\": \"Resource references\",\n          \"description\": \"References to component or service resources that are used to realize the resource instance.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/resourceReferenceChoice\"\n          }\n        },\n        \"type\": {\n          \"title\": \"Type\",\n          \"description\": \"The source type of event which caused the trigger to fire.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"manual\",\n            \"api\",\n            \"webhook\",\n            \"scheduled\"\n          ]\n        },\n        \"event\": {\n          \"title\": \"Event\",\n          \"description\": \"The event data that caused the associated trigger to activate.\",\n          \"$ref\": \"#/definitions/event\"\n        },\n        \"conditions\": {\n          \"type\": \"array\",\n          \"title\": \"Conditions\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/condition\"\n          }\n        },\n        \"timeActivated\": {\n          \"title\": \"Time activated\",\n          \"description\": \"The date and time (timestamp) when the trigger was activated.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"inputs\": {\n          \"title\": \"Inputs\",\n          \"description\": \"Represents resources and data brought into a task at runtime by executor or task commands\",\n          \"examples\": [\"a `configuration` file which was declared as a local `component` or `externalReference`\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/inputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"outputs\": {\n          \"title\": \"Outputs\",\n          \"description\": \"Represents resources and data output from a task at runtime by executor or task commands\",\n          \"examples\": [\"a log file or metrics data produced by the task\"],\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/outputType\"\n          },\n          \"uniqueItems\": true\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"event\": {\n      \"title\": \"Event\",\n      \"description\": \"Represents something that happened that may trigger a response.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"uid\": {\n          \"title\": \"Unique Identifier (UID)\",\n          \"description\": \"The unique identifier of the event.\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"A description of the event.\",\n          \"type\": \"string\"\n        },\n        \"timeReceived\": {\n          \"title\": \"Time Received\",\n          \"description\": \"The date and time (timestamp) when the event was received.\",\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"data\": {\n          \"title\": \"Data\",\n          \"description\": \"Encoding of the raw event data.\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"source\": {\n          \"title\": \"Source\",\n          \"description\": \"References the component or service that was the source of the event\",\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"target\": {\n          \"title\": \"Target\",\n          \"description\": \"References the component or service that was the target of the event\",\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"inputType\": {\n      \"title\": \"Input type\",\n      \"description\": \"Type that represents various input data types and formats.\",\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"required\": [\n            \"resource\"\n          ]\n        },\n        {\n          \"required\": [\n            \"parameters\"\n          ]\n        },\n        {\n          \"required\": [\n            \"environmentVars\"\n          ]\n        },\n        {\n          \"required\": [\n            \"data\"\n          ]\n        }\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"source\": {\n          \"title\": \"Source\",\n          \"description\": \"A reference to the component or service that provided the input to the task (e.g., reference to a service with data flow value of `inbound`)\",\n          \"examples\": [\n            \"source code repository\",\n            \"database\"\n          ],\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"target\": {\n          \"title\": \"Target\",\n          \"description\": \"A reference to the component or service that received or stored the input if not the task itself (e.g., a local, named storage workspace)\",\n          \"examples\": [\n            \"workspace\",\n            \"directory\"\n          ],\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"resource\": {\n          \"title\": \"Resource\",\n          \"description\": \"A reference to an independent resource provided as an input to a task by the workflow runtime.\",\n          \"examples\": [\n            \"a reference to a configuration file in a repository (i.e., a bom-ref)\",\n            \"a reference to a scanning service used in a task (i.e., a bom-ref)\"\n          ],\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"parameters\": {\n          \"title\": \"Parameters\",\n          \"description\": \"Inputs that have the form of parameters with names and values.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"$ref\": \"#/definitions/parameter\"\n          }\n        },\n        \"environmentVars\": {\n          \"title\": \"Environment variables\",\n          \"description\": \"Inputs that have the form of parameters with names and values.\",\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"oneOf\": [\n              {\n                \"$ref\": \"#/definitions/property\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          }\n        },\n        \"data\": {\n          \"title\": \"Data\",\n          \"description\": \"Inputs that have the form of data.\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"outputType\": {\n      \"type\": \"object\",\n      \"oneOf\": [\n        {\n          \"required\": [\n            \"resource\"\n          ]\n        },\n        {\n          \"required\": [\n            \"environmentVars\"\n          ]\n        },\n        {\n          \"required\": [\n            \"data\"\n          ]\n        }\n      ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"type\": {\n          \"title\": \"Type\",\n          \"description\": \"Describes the type of data output.\",\n          \"type\": \"string\",\n          \"enum\": [\n            \"artifact\",\n            \"attestation\",\n            \"log\",\n            \"evidence\",\n            \"metrics\",\n            \"other\"\n          ]\n        },\n        \"source\": {\n          \"title\": \"Source\",\n          \"description\": \"Component or service that generated or provided the output from the task (e.g., a build tool)\",\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"target\": {\n          \"title\": \"Target\",\n          \"description\": \"Component or service that received the output from the task (e.g., reference to an artifactory service with data flow value of `outbound`)\",\n          \"examples\": [\"a log file described as an `externalReference` within its target domain.\"],\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"resource\": {\n          \"title\": \"Resource\",\n          \"description\": \"A reference to an independent resource generated as output by the task.\",\n          \"examples\": [\n            \"configuration file\",\n            \"source code\",\n            \"scanning service\"\n          ],\n          \"$ref\": \"#/definitions/resourceReferenceChoice\"\n        },\n        \"data\": {\n          \"title\": \"Data\",\n          \"description\": \"Outputs that have the form of data.\",\n          \"$ref\": \"#/definitions/attachment\"\n        },\n        \"environmentVars\": {\n          \"title\": \"Environment variables\",\n          \"description\": \"Outputs that have the form of environment variables.\",\n          \"type\": \"array\",\n          \"items\": {\n            \"oneOf\": [\n              {\n                \"$ref\": \"#/definitions/property\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"uniqueItems\": true\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"resourceReferenceChoice\": {\n      \"title\": \"Resource reference choice\",\n      \"description\": \"A reference to a locally defined resource (e.g., a bom-ref) or an externally accessible resource.\",\n      \"$comment\": \"Enables reference to a resource that participates in a workflow; using either internal (bom-ref) or external (externalReference) types.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"ref\": {\n          \"title\": \"BOM Reference\",\n          \"description\": \"References an object by its bom-ref attribute\",\n          \"anyOf\": [\n            {\n              \"title\": \"Ref\",\n              \"$ref\": \"#/definitions/refLinkType\"\n            },\n            {\n              \"title\": \"BOM-Link Element\",\n              \"$ref\": \"#/definitions/bomLinkElementType\"\n            }\n          ]\n        },\n        \"externalReference\": {\n          \"title\": \"External reference\",\n          \"description\": \"Reference to an externally accessible resource.\",\n          \"$ref\": \"#/definitions/externalReference\"\n        }\n      },\n      \"oneOf\": [\n        {\n          \"required\": [\n            \"ref\"\n          ]\n        },\n        {\n          \"required\": [\n            \"externalReference\"\n          ]\n        }\n      ]\n    },\n    \"condition\": {\n      \"title\": \"Condition\",\n      \"description\": \"A condition that was used to determine a trigger should be activated.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"description\": {\n          \"title\": \"Description\",\n          \"description\": \"Describes the set of conditions which cause the trigger to activate.\",\n          \"type\": \"string\"\n        },\n        \"expression\": {\n          \"title\": \"Expression\",\n          \"description\": \"The logical expression that was evaluated that determined the trigger should be fired.\",\n          \"type\": \"string\"\n        },\n        \"properties\": {\n          \"type\": \"array\",\n          \"title\": \"Properties\",\n          \"items\": {\n            \"$ref\": \"#/definitions/property\"\n          }\n        }\n      }\n    },\n    \"taskType\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"copy\",\n        \"clone\",\n        \"lint\",\n        \"scan\",\n        \"merge\",\n        \"build\",\n        \"test\",\n        \"deliver\",\n        \"deploy\",\n        \"release\",\n        \"clean\",\n        \"other\"\n      ],\n      \"meta:enum\": {\n        \"copy\": \"A task that copies software or data used to accomplish other tasks in the workflow.\",\n        \"clone\": \"A task that clones a software repository into the workflow in order to retrieve its source code or data for use in a build step.\",\n        \"lint\": \"A task that checks source code for programmatic and stylistic errors.\",\n        \"scan\": \"A task that performs a scan against source code, or built or deployed components and services. Scans are typically run to gather or test for security vulnerabilities or policy compliance.\",\n        \"merge\": \"A task that merges changes or fixes into source code prior to a build step in the workflow.\",\n        \"build\": \"A task that builds the source code, dependencies and/or data into an artifact that can be deployed to and executed on target systems.\",\n        \"test\": \"A task that verifies the functionality of a component or service.\",\n        \"deliver\": \"A task that delivers a built artifact to one or more target repositories or storage systems.\",\n        \"deploy\": \"A task that deploys a built artifact for execution on one or more target systems.\",\n        \"release\": \"A task that releases a built, versioned artifact to a target repository or distribution system.\",\n        \"clean\": \"A task that cleans unnecessary tools, build artifacts and/or data from workflow storage.\",\n        \"other\": \"A workflow task that does not match current task type definitions.\"\n      }\n    },\n    \"parameter\": {\n      \"title\": \"Parameter\",\n      \"description\": \"A representation of a functional parameter.\",\n      \"type\": \"object\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"description\": \"The name of the parameter.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"description\": \"The value of the parameter.\",\n          \"type\": \"string\"\n        },\n        \"dataType\": {\n          \"title\": \"Data type\",\n          \"description\": \"The data type of the parameter.\",\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"componentIdentityEvidence\": {\n      \"type\": \"object\",\n      \"title\": \"Identity Evidence\",\n      \"description\": \"Evidence that substantiates the identity of a component.\",\n      \"required\": [ \"field\" ],\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"field\": {\n          \"type\": \"string\",\n          \"enum\": [\n            \"group\", \"name\", \"version\", \"purl\", \"cpe\", \"omniborId\", \"swhid\", \"swid\", \"hash\"\n          ],\n          \"title\": \"Field\",\n          \"description\": \"The identity field of the component which the evidence describes.\"\n        },\n        \"confidence\": {\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"maximum\": 1,\n          \"title\": \"Confidence\",\n          \"description\": \"The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence.\"\n        },\n        \"concludedValue\": {\n          \"type\": \"string\",\n          \"title\": \"Concluded Value\",\n          \"description\": \"The value of the field (cpe, purl, etc) that has been concluded based on the aggregate of all methods (if available).\"\n        },\n        \"methods\": {\n          \"type\": \"array\",\n          \"title\": \"Methods\",\n          \"description\": \"The methods used to extract and/or analyze the evidence.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"required\": [\n              \"technique\" ,\n              \"confidence\"\n            ],\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"technique\": {\n                \"title\": \"Technique\",\n                \"description\": \"The technique used in this method of analysis.\",\n                \"type\": \"string\",\n                \"enum\": [\n                  \"source-code-analysis\",\n                  \"binary-analysis\",\n                  \"manifest-analysis\",\n                  \"ast-fingerprint\",\n                  \"hash-comparison\",\n                  \"instrumentation\",\n                  \"dynamic-analysis\",\n                  \"filename\",\n                  \"attestation\",\n                  \"other\"\n                ]\n              },\n              \"confidence\": {\n                \"type\": \"number\",\n                \"minimum\": 0,\n                \"maximum\": 1,\n                \"title\": \"Confidence\",\n                \"description\": \"The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence.\"\n              },\n              \"value\": {\n                \"type\": \"string\",\n                \"title\": \"Value\",\n                \"description\": \"The value or contents of the evidence.\"\n              }\n            }\n          }\n        },\n        \"tools\": {\n          \"type\": \"array\",\n          \"uniqueItems\": true,\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"title\": \"Ref\",\n                \"$ref\": \"#/definitions/refLinkType\"\n              },\n              {\n                \"title\": \"BOM-Link Element\",\n                \"$ref\": \"#/definitions/bomLinkElementType\"\n              }\n            ]\n          },\n          \"title\": \"BOM References\",\n          \"description\": \"The object in the BOM identified by its bom-ref. This is often a component or service but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation.\"\n        }\n      }\n    },\n    \"standard\": {\n      \"type\": \"object\",\n      \"title\": \"Standard\",\n      \"description\": \"A standard may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"bom-ref\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"BOM Reference\",\n          \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Name\",\n          \"description\": \"The name of the standard. This will often be a shortened, single name of the standard.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"title\": \"Version\",\n          \"description\": \"The version of the standard.\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"title\": \"Description\",\n          \"description\": \"The description of the standard.\"\n        },\n        \"owner\": {\n          \"type\": \"string\",\n          \"title\": \"Owner\",\n          \"description\": \"The owner of the standard, often the entity responsible for its release.\"\n        },\n        \"requirements\": {\n          \"type\": \"array\",\n          \"title\": \"Requirements\",\n          \"description\": \"The list of requirements comprising the standard.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Requirement\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n              },\n              \"identifier\": {\n                \"type\": \"string\",\n                \"title\": \"Identifier\",\n                \"description\": \"The unique identifier used in the standard to identify a specific requirement. This should match what is in the standard and should not be the requirements bom-ref.\"\n              },\n              \"title\": {\n                \"type\": \"string\",\n                \"title\": \"Title\",\n                \"description\": \"The title of the requirement.\"\n              },\n              \"text\": {\n                \"type\": \"string\",\n                \"title\": \"Text\",\n                \"description\": \"The textual content of the requirement.\"\n              },\n              \"descriptions\": {\n                \"type\": \"array\",\n                \"title\": \"Descriptions\",\n                \"description\": \"The supplemental text that provides additional guidance or context to the requirement, but is not directly part of the requirement.\",\n                \"items\": { \"type\":  \"string\" }\n              },\n              \"openCre\": {\n                \"type\": \"array\",\n                \"title\": \"OWASP OpenCRE Identifier(s)\",\n                \"description\": \"The Common Requirements Enumeration (CRE) identifier(s). CRE is a structured and standardized framework for uniting security standards and guidelines. CRE links each section of a resource to a shared topic identifier (a Common Requirement). Through this shared topic link, all resources map to each other. Use of CRE promotes clear and unambiguous communication among stakeholders.\",\n                \"items\": {\n                  \"type\":  \"string\",\n                  \"pattern\": \"^CRE:[0-9]+-[0-9]+$\",\n                  \"examples\": [ \"CRE:764-507\" ]\n                }\n              },\n              \"parent\": {\n                \"$ref\": \"#/definitions/refLinkType\",\n                \"title\": \"Parent BOM Reference\",\n                \"description\": \"The optional `bom-ref` to a parent requirement. This establishes a hierarchy of requirements. Top-level requirements must not define a parent. Only child requirements should define parents.\"\n              },\n              \"properties\": {\n                \"type\": \"array\",\n                \"title\": \"Properties\",\n                \"description\": \"Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.\",\n                \"items\": {\n                  \"$ref\": \"#/definitions/property\"\n                }\n              },\n              \"externalReferences\": {\n                \"type\": \"array\",\n                \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n                \"title\": \"External References\",\n                \"description\": \"External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n              }\n            }\n          }\n        },\n        \"levels\": {\n          \"type\": \"array\",\n          \"title\": \"Levels\",\n          \"description\": \"The list of levels associated with the standard. Some standards have different levels of compliance.\",\n          \"items\": {\n            \"type\": \"object\",\n            \"title\": \"Level\",\n            \"additionalProperties\": false,\n            \"properties\": {\n              \"bom-ref\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"BOM Reference\",\n                \"description\": \"An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\"\n              },\n              \"identifier\": {\n                \"type\": \"string\",\n                \"title\": \"Identifier\",\n                \"description\": \"The identifier used in the standard to identify a specific level.\"\n              },\n              \"title\": {\n                \"type\": \"string\",\n                \"title\": \"Title\",\n                \"description\": \"The title of the level.\"\n              },\n              \"description\": {\n                \"type\": \"string\",\n                \"title\": \"Description\",\n                \"description\": \"The description of the level.\"\n              },\n              \"requirements\": {\n                \"type\": \"array\",\n                \"title\": \"Requirements\",\n                \"description\": \"The list of requirement `bom-ref`s that comprise the level.\",\n                \"items\": { \"$ref\": \"#/definitions/refLinkType\" }\n              }\n            }\n          }\n        },\n        \"externalReferences\": {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/externalReference\"},\n          \"title\": \"External References\",\n          \"description\": \"External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\"\n        },\n        \"signature\": {\n          \"$ref\": \"#/definitions/signature\",\n          \"title\": \"Signature\",\n          \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n        }\n      }\n    },\n    \"signature\": {\n      \"$ref\": \"jsf-0.82.schema.json#/definitions/signature\",\n      \"title\": \"Signature\",\n      \"description\": \"Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html).\"\n    },\n    \"cryptoProperties\": {\n      \"type\": \"object\",\n      \"title\": \"Cryptographic Properties\",\n      \"description\": \"Cryptographic assets have properties that uniquely define them and that make them actionable for further reasoning. As an example, it makes a difference if one knows the algorithm family (e.g. AES) or the specific variant or instantiation (e.g. AES-128-GCM). This is because the security level and the algorithm primitive (authenticated encryption) are only defined by the definition of the algorithm variant. The presence of a weak cryptographic algorithm like SHA1 vs. HMAC-SHA1 also makes a difference.\",\n      \"additionalProperties\": false,\n      \"required\": [\n        \"assetType\"\n      ],\n      \"properties\": {\n        \"assetType\": {\n          \"type\": \"string\",\n          \"title\": \"Asset Type\",\n          \"description\": \"Cryptographic assets occur in several forms. Algorithms and protocols are most commonly implemented in specialized cryptographic libraries. They may, however, also be 'hardcoded' in software components. Certificates and related cryptographic material like keys, tokens, secrets or passwords are other cryptographic assets to be modelled.\",\n          \"enum\": [\n            \"algorithm\",\n            \"certificate\",\n            \"protocol\",\n            \"related-crypto-material\"\n          ],\n          \"meta:enum\": {\n            \"algorithm\": \"Mathematical function commonly used for data encryption, authentication, and digital signatures.\",\n            \"certificate\": \"An electronic document that is used to provide the identity or validate a public key.\",\n            \"protocol\": \"A set of rules and guidelines that govern the behavior and communication with each other.\",\n            \"related-crypto-material\": \"Other cryptographic assets related to algorithms, certificates, and protocols such as keys and tokens.\"\n          }\n        },\n        \"algorithmProperties\": {\n          \"type\": \"object\",\n          \"title\": \"Algorithm Properties\",\n          \"description\": \"Additional properties specific to a cryptographic algorithm.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"primitive\": {\n              \"type\": \"string\",\n              \"title\": \"primitive\",\n              \"description\": \"Cryptographic building blocks used in higher-level cryptographic systems and protocols. Primitives represent different cryptographic routines: deterministic random bit generators (drbg, e.g. CTR_DRBG from NIST SP800-90A-r1), message authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES), streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256), public-key encryption schemes (pke, e.g. RSA), extended output functions (xof, e.g. SHAKE256), key derivation functions (e.g. pbkdf2), key agreement algorithms (e.g. ECDH), key encapsulation mechanisms (e.g. ML-KEM), authenticated encryption (ae, e.g. AES-GCM) and the combination of multiple algorithms (combiner, e.g. SP800-56Cr2).\",\n              \"enum\": [\n                \"drbg\",\n                \"mac\",\n                \"block-cipher\",\n                \"stream-cipher\",\n                \"signature\",\n                \"hash\",\n                \"pke\",\n                \"xof\",\n                \"kdf\",\n                \"key-agree\",\n                \"kem\",\n                \"ae\",\n                \"combiner\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"drbg\": \"Deterministic Random Bit Generator (DRBG) is a type of pseudorandom number generator designed to produce a sequence of bits from an initial seed value. DRBGs are commonly used in cryptographic applications where reproducibility of random values is important.\",\n                \"mac\": \"In cryptography, a Message Authentication Code (MAC) is information used for authenticating and integrity-checking a message.\",\n                \"block-cipher\": \"A block cipher is a symmetric key algorithm that operates on fixed-size blocks of data. It encrypts or decrypts the data in block units, providing confidentiality. Block ciphers are widely used in various cryptographic modes and protocols for secure data transmission.\",\n                \"stream-cipher\": \"A stream cipher is a symmetric key cipher where plaintext digits are combined with a pseudorandom cipher digit stream (keystream).\",\n                \"signature\": \"In cryptography, a signature is a digital representation of a message or data that proves its origin, identity, and integrity. Digital signatures are generated using cryptographic algorithms and are widely used for authentication and verification in secure communication.\",\n                \"hash\": \"A hash function is a mathematical algorithm that takes an input (or 'message') and produces a fixed-size string of characters, which is typically a hash value. Hash functions are commonly used in various cryptographic applications, including data integrity verification and password hashing.\",\n                \"pke\": \"Public Key Encryption (PKE) is a type of encryption that uses a pair of public and private keys for secure communication. The public key is used for encryption, while the private key is used for decryption. PKE is a fundamental component of public-key cryptography.\",\n                \"xof\": \"An XOF is an extendable output function that can take arbitrary input and creates a stream of output, up to a limit determined by the size of the internal state of the hash function that underlies the XOF.\",\n                \"kdf\": \"A Key Derivation Function (KDF) derives key material from another source of entropy while preserving the entropy of the input.\",\n                \"key-agree\": \"In cryptography, a key-agreement is a protocol whereby two or more parties agree on a cryptographic key in such a way that both influence the outcome.\",\n                \"kem\": \"A Key Encapsulation Mechanism (KEM) algorithm is a mechanism for transporting random keying material to a recipient using the recipient's public key.\",\n                \"ae\": \"Authenticated Encryption (AE) is a cryptographic process that provides both confidentiality and data integrity. It ensures that the encrypted data has not been tampered with and comes from a legitimate source. AE is commonly used in secure communication protocols.\",\n                \"combiner\": \"A combiner aggregates many candidates for a cryptographic primitive and generates a new candidate for the same primitive.\",\n                \"other\": \"Another primitive type.\",\n                \"unknown\": \"The primitive is not known.\"\n              }\n            },\n            \"parameterSetIdentifier\": {\n              \"type\": \"string\",\n              \"title\": \"Parameter Set Identifier\",\n              \"description\": \"An identifier for the parameter set of the cryptographic algorithm. Examples: in AES128, '128' identifies the key length in bits, in SHA256, '256' identifies the digest length, '128' in SHAKE128 identifies its maximum security level in bits, and 'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205).\"\n            },\n            \"curve\": {\n              \"type\": \"string\",\n              \"title\": \"Elliptic Curve\",\n              \"description\": \"The specific underlying Elliptic Curve (EC) definition employed which is an indicator of the level of security strength, performance and complexity. Absent an authoritative source of curve names, CycloneDX recommends using curve names as defined at [https://neuromancer.sk/std/](https://neuromancer.sk/std/), the source of which can be found at [https://github.com/J08nY/std-curves](https://github.com/J08nY/std-curves).\"\n            },\n            \"executionEnvironment\": {\n              \"type\": \"string\",\n              \"title\": \"Execution Environment\",\n              \"description\": \"The target and execution environment in which the algorithm is implemented in.\",\n              \"enum\": [\n                \"software-plain-ram\",\n                \"software-encrypted-ram\",\n                \"software-tee\",\n                \"hardware\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"software-plain-ram\": \"A software implementation running in plain unencrypted RAM.\",\n                \"software-encrypted-ram\": \"A software implementation running in encrypted RAM.\",\n                \"software-tee\": \"A software implementation running in a trusted execution environment.\",\n                \"hardware\": \"A hardware implementation.\",\n                \"other\": \"Another implementation environment.\",\n                \"unknown\": \"The execution environment is not known.\"\n              }\n            },\n            \"implementationPlatform\": {\n              \"type\": \"string\",\n              \"title\": \"implementation platform\",\n              \"description\": \"The target platform for which the algorithm is implemented. The implementation can be 'generic', running on any platform or for a specific platform.\",\n              \"enum\": [\n                \"generic\",\n                \"x86_32\",\n                \"x86_64\",\n                \"armv7-a\",\n                \"armv7-m\",\n                \"armv8-a\",\n                \"armv8-m\",\n                \"armv9-a\",\n                \"armv9-m\",\n                \"s390x\",\n                \"ppc64\",\n                \"ppc64le\",\n                \"other\",\n                \"unknown\"\n              ]\n            },\n            \"certificationLevel\": {\n              \"type\": \"array\",\n              \"title\": \"Certification Level\",\n              \"description\": \"The certification that the implementation of the cryptographic algorithm has received, if any. Certifications include revisions and levels of FIPS 140 or Common Criteria of different Extended Assurance Levels (CC-EAL).\",\n              \"items\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"none\",\n                  \"fips140-1-l1\",\n                  \"fips140-1-l2\",\n                  \"fips140-1-l3\",\n                  \"fips140-1-l4\",\n                  \"fips140-2-l1\",\n                  \"fips140-2-l2\",\n                  \"fips140-2-l3\",\n                  \"fips140-2-l4\",\n                  \"fips140-3-l1\",\n                  \"fips140-3-l2\",\n                  \"fips140-3-l3\",\n                  \"fips140-3-l4\",\n                  \"cc-eal1\",\n                  \"cc-eal1+\",\n                  \"cc-eal2\",\n                  \"cc-eal2+\",\n                  \"cc-eal3\",\n                  \"cc-eal3+\",\n                  \"cc-eal4\",\n                  \"cc-eal4+\",\n                  \"cc-eal5\",\n                  \"cc-eal5+\",\n                  \"cc-eal6\",\n                  \"cc-eal6+\",\n                  \"cc-eal7\",\n                  \"cc-eal7+\",\n                  \"other\",\n                  \"unknown\"\n                ],\n                \"meta:enum\": {\n                  \"none\": \"No certification obtained\",\n                  \"fips140-1-l1\": \"FIPS 140-1 Level 1\",\n                  \"fips140-1-l2\": \"FIPS 140-1 Level 2\",\n                  \"fips140-1-l3\": \"FIPS 140-1 Level 3\",\n                  \"fips140-1-l4\": \"FIPS 140-1 Level 4\",\n                  \"fips140-2-l1\": \"FIPS 140-2 Level 1\",\n                  \"fips140-2-l2\": \"FIPS 140-2 Level 2\",\n                  \"fips140-2-l3\": \"FIPS 140-2 Level 3\",\n                  \"fips140-2-l4\": \"FIPS 140-2 Level 4\",\n                  \"fips140-3-l1\": \"FIPS 140-3 Level 1\",\n                  \"fips140-3-l2\": \"FIPS 140-3 Level 2\",\n                  \"fips140-3-l3\": \"FIPS 140-3 Level 3\",\n                  \"fips140-3-l4\": \"FIPS 140-3 Level 4\",\n                  \"cc-eal1\": \"Common Criteria - Evaluation Assurance Level 1\",\n                  \"cc-eal1+\": \"Common Criteria - Evaluation Assurance Level 1 (Augmented)\",\n                  \"cc-eal2\": \"Common Criteria - Evaluation Assurance Level 2\",\n                  \"cc-eal2+\": \"Common Criteria - Evaluation Assurance Level 2 (Augmented)\",\n                  \"cc-eal3\": \"Common Criteria - Evaluation Assurance Level 3\",\n                  \"cc-eal3+\": \"Common Criteria - Evaluation Assurance Level 3 (Augmented)\",\n                  \"cc-eal4\": \"Common Criteria - Evaluation Assurance Level 4\",\n                  \"cc-eal4+\": \"Common Criteria - Evaluation Assurance Level 4 (Augmented)\",\n                  \"cc-eal5\": \"Common Criteria - Evaluation Assurance Level 5\",\n                  \"cc-eal5+\": \"Common Criteria - Evaluation Assurance Level 5 (Augmented)\",\n                  \"cc-eal6\": \"Common Criteria - Evaluation Assurance Level 6\",\n                  \"cc-eal6+\": \"Common Criteria - Evaluation Assurance Level 6 (Augmented)\",\n                  \"cc-eal7\": \"Common Criteria - Evaluation Assurance Level 7\",\n                  \"cc-eal7+\": \"Common Criteria - Evaluation Assurance Level 7 (Augmented)\",\n                  \"other\": \"Another certification\",\n                  \"unknown\": \"The certification level is not known\"\n                }\n              }\n            },\n            \"mode\": {\n              \"type\": \"string\",\n              \"title\": \"Mode\",\n              \"description\": \"The mode of operation in which the cryptographic algorithm (block cipher) is used.\",\n              \"enum\": [\n                \"cbc\",\n                \"ecb\",\n                \"ccm\",\n                \"gcm\",\n                \"cfb\",\n                \"ofb\",\n                \"ctr\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"cbc\": \"Cipher block chaining\",\n                \"ecb\": \"Electronic codebook\",\n                \"ccm\": \"Counter with cipher block chaining message authentication code\",\n                \"gcm\": \"Galois/counter\",\n                \"cfb\": \"Cipher feedback\",\n                \"ofb\": \"Output feedback\",\n                \"ctr\": \"Counter\",\n                \"other\": \"Another mode of operation\",\n                \"unknown\": \"The mode of operation is not known\"\n              }\n            },\n            \"padding\": {\n              \"type\": \"string\",\n              \"title\": \"Padding\",\n              \"description\": \"The padding scheme that is used for the cryptographic algorithm.\",\n              \"enum\": [\n                \"pkcs5\",\n                \"pkcs7\",\n                \"pkcs1v15\",\n                \"oaep\",\n                \"raw\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"pkcs5\": \"Public Key Cryptography Standard: Password-Based Cryptography\",\n                \"pkcs7\": \"Public Key Cryptography Standard: Cryptographic Message Syntax\",\n                \"pkcs1v15\": \"Public Key Cryptography Standard: RSA Cryptography v1.5\",\n                \"oaep\": \"Optimal asymmetric encryption padding\",\n                \"raw\": \"Raw\",\n                \"other\": \"Another padding scheme\",\n                \"unknown\": \"The padding scheme is not known\"\n              }\n            },\n            \"cryptoFunctions\": {\n              \"type\": \"array\",\n              \"title\": \"Cryptographic functions\",\n              \"description\": \"The cryptographic functions implemented by the cryptographic algorithm.\",\n              \"items\": {\n                \"type\": \"string\",\n                \"enum\": [\n                  \"generate\",\n                  \"keygen\",\n                  \"encrypt\",\n                  \"decrypt\",\n                  \"digest\",\n                  \"tag\",\n                  \"keyderive\",\n                  \"sign\",\n                  \"verify\",\n                  \"encapsulate\",\n                  \"decapsulate\",\n                  \"other\",\n                  \"unknown\"\n                ]\n              }\n            },\n            \"classicalSecurityLevel\": {\n              \"type\": \"integer\",\n              \"title\": \"classical security level\",\n              \"description\": \"The classical security level that a cryptographic algorithm provides (in bits).\",\n              \"minimum\": 0\n            },\n            \"nistQuantumSecurityLevel\": {\n              \"type\": \"integer\",\n              \"title\": \"NIST security strength category\",\n              \"description\": \"The NIST security strength category as defined in https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria). A value of 0 indicates that none of the categories are met.\",\n              \"minimum\": 0,\n              \"maximum\": 6\n            }\n          }\n        },\n        \"certificateProperties\": {\n          \"type\": \"object\",\n          \"title\": \"Certificate Properties\",\n          \"description\": \"Properties for cryptographic assets of asset type 'certificate'\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"subjectName\": {\n              \"type\": \"string\",\n              \"title\": \"Subject Name\",\n              \"description\": \"The subject name for the certificate\"\n            },\n            \"issuerName\": {\n              \"type\": \"string\",\n              \"title\": \"Issuer Name\",\n              \"description\": \"The issuer name for the certificate\"\n            },\n            \"notValidBefore\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"Not Valid Before\",\n              \"description\": \"The date and time according to ISO-8601 standard from which the certificate is valid\"\n            },\n            \"notValidAfter\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"title\": \"Not Valid After\",\n              \"description\": \"The date and time according to ISO-8601 standard from which the certificate is not valid anymore\"\n            },\n            \"signatureAlgorithmRef\": {\n              \"$ref\": \"#/definitions/refType\",\n              \"title\": \"Algorithm Reference\",\n              \"description\": \"The bom-ref to signature algorithm used by the certificate\"\n            },\n            \"subjectPublicKeyRef\": {\n              \"$ref\": \"#/definitions/refType\",\n              \"title\": \"Key reference\",\n              \"description\": \"The bom-ref to the public key of the subject\"\n            },\n            \"certificateFormat\": {\n              \"type\": \"string\",\n              \"title\": \"Certificate Format\",\n              \"description\": \"The format of the certificate\",\n              \"examples\": [\n                \"X.509\",\n                \"PEM\",\n                \"DER\",\n                \"CVC\"\n              ]\n            },\n            \"certificateExtension\": {\n              \"type\": \"string\",\n              \"title\": \"Certificate File Extension\",\n              \"description\": \"The file extension of the certificate\",\n              \"examples\": [\n                \"crt\",\n                \"pem\",\n                \"cer\",\n                \"der\",\n                \"p12\"\n              ]\n            }\n          }\n        },\n        \"relatedCryptoMaterialProperties\": {\n          \"type\": \"object\",\n          \"title\": \"Related Cryptographic Material Properties\",\n          \"description\": \"Properties for cryptographic assets of asset type: `related-crypto-material`\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"title\": \"relatedCryptoMaterialType\",\n              \"description\": \"The type for the related cryptographic material\",\n              \"enum\": [\n                \"private-key\",\n                \"public-key\",\n                \"secret-key\",\n                \"key\",\n                \"ciphertext\",\n                \"signature\",\n                \"digest\",\n                \"initialization-vector\",\n                \"nonce\",\n                \"seed\",\n                \"salt\",\n                \"shared-secret\",\n                \"tag\",\n                \"additional-data\",\n                \"password\",\n                \"credential\",\n                \"token\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"private-key\": \"The confidential key of a key pair used in asymmetric cryptography.\",\n                \"public-key\": \"The non-confidential key of a key pair used in asymmetric cryptography.\",\n                \"secret-key\": \"A key used to encrypt and decrypt messages in symmetric cryptography.\",\n                \"key\": \"A piece of information, usually an octet string, which, when processed through a cryptographic algorithm, processes cryptographic data.\",\n                \"ciphertext\": \"The result of encryption performed on plaintext using an algorithm (or cipher).\",\n                \"signature\": \"A cryptographic value that is calculated from the data and a key known only by the signer.\",\n                \"digest\": \"The output of the hash function.\",\n                \"initialization-vector\": \"A fixed-size random or pseudo-random value used as an input parameter for cryptographic algorithms.\",\n                \"nonce\": \"A random or pseudo-random number that can only be used once in a cryptographic communication.\",\n                \"seed\": \"The input to a pseudo-random number generator. Different seeds generate different pseudo-random sequences.\",\n                \"salt\": \"A value used in a cryptographic process, usually to ensure that the results of computations for one instance cannot be reused by an attacker.\",\n                \"shared-secret\": \"A piece of data known only to the parties involved, in a secure communication.\",\n                \"tag\": \"A message authentication code (MAC), sometimes known as an authentication tag, is a short piece of information used for authenticating and integrity-checking a message.\",\n                \"additional-data\": \"An unspecified collection of data with relevance to cryptographic activity.\",\n                \"password\": \"A secret word, phrase, or sequence of characters used during authentication or authorization.\",\n                \"credential\": \"Establishes the identity of a party to communication, usually in the form of cryptographic keys or passwords.\",\n                \"token\": \"An object encapsulating a security identity.\",\n                \"other\": \"Another type of cryptographic asset.\",\n                \"unknown\": \"The type of cryptographic asset is not known.\"\n              }\n            },\n            \"id\": {\n                \"type\": \"string\",\n                \"title\": \"ID\",\n                \"description\": \"The optional unique identifier for the related cryptographic material.\"\n            },\n            \"state\": {\n                \"type\": \"string\",\n                \"title\": \"State\",\n                \"description\": \"The key state as defined by NIST SP 800-57.\",\n                \"enum\": [\n                    \"pre-activation\",\n                    \"active\",\n                    \"suspended\",\n                    \"deactivated\",\n                    \"compromised\",\n                    \"destroyed\"\n                ]\n            },\n            \"algorithmRef\": {\n                \"$ref\": \"#/definitions/refType\",\n                \"title\": \"Algorithm Reference\",\n                \"description\": \"The bom-ref to the algorithm used to generate the related cryptographic material.\"\n            },\n            \"creationDate\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Creation Date\",\n                \"description\": \"The date and time (timestamp) when the related cryptographic material was created.\"\n            },\n            \"activationDate\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Activation Date\",\n                \"description\": \"The date and time (timestamp) when the related cryptographic material was activated.\"\n            },\n            \"updateDate\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Update Date\",\n                \"description\": \"The date and time (timestamp) when the related cryptographic material was updated.\"\n            },\n            \"expirationDate\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"title\": \"Expiration Date\",\n                \"description\": \"The date and time (timestamp) when the related cryptographic material expires.\"\n            },\n            \"value\": {\n                \"type\": \"string\",\n                \"title\": \"Value\",\n                \"description\": \"The associated value of the cryptographic material.\"\n            },\n            \"size\": {\n                \"type\": \"integer\",\n                \"title\":\"Size\",\n                \"description\": \"The size of the cryptographic asset (in bits).\"\n            },\n            \"format\": {\n                \"type\": \"string\",\n                \"title\": \"Format\",\n                \"description\": \"The format of the related cryptographic material (e.g. P8, PEM, DER).\"\n            },\n            \"securedBy\": {\n                \"$ref\": \"#/definitions/securedBy\",\n                \"title\": \"Secured By\",\n                \"description\": \"The mechanism by which the cryptographic asset is secured by.\"\n            }\n          }\n        },\n        \"protocolProperties\": {\n          \"type\": \"object\",\n          \"title\": \"Protocol Properties\",\n          \"description\": \"Properties specific to cryptographic assets of type: `protocol`.\",\n          \"additionalProperties\": false,\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"title\": \"Type\",\n              \"description\": \"The concrete protocol type.\",\n              \"enum\": [\n                \"tls\",\n                \"ssh\",\n                \"ipsec\",\n                \"ike\",\n                \"sstp\",\n                \"wpa\",\n                \"other\",\n                \"unknown\"\n              ],\n              \"meta:enum\": {\n                \"tls\": \"Transport Layer Security\",\n                \"ssh\": \"Secure Shell\",\n                \"ipsec\": \"Internet Protocol Security\",\n                \"ike\": \"Internet Key Exchange\",\n                \"sstp\": \"Secure Socket Tunneling Protocol\",\n                \"wpa\": \"Wi-Fi Protected Access\",\n                \"other\": \"Another protocol type\",\n                \"unknown\": \"The protocol type is not known\"\n              }\n            },\n            \"version\": {\n              \"type\": \"string\",\n              \"title\": \"Protocol Version\",\n              \"description\": \"The version of the protocol.\",\n              \"examples\": [\n                \"1.0\",\n                \"1.2\",\n                \"1.99\"\n              ]\n            },\n            \"cipherSuites\": {\n              \"type\": \"array\",\n              \"title\": \"Cipher Suites\",\n              \"description\": \"A list of cipher suites related to the protocol.\",\n              \"items\": {\n                \"$ref\": \"#/definitions/cipherSuite\",\n                \"title\": \"Cipher Suite\"\n              }\n            },\n            \"ikev2TransformTypes\": {\n              \"type\": \"object\",\n              \"title\": \"IKEv2 Transform Types\",\n              \"description\": \"The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.\",\n              \"additionalProperties\": false,\n              \"properties\": {\n                \"encr\": {\n                  \"$ref\": \"#/definitions/cryptoRefArray\",\n                  \"title\": \"Encryption Algorithm (ENCR)\",\n                  \"description\": \"Transform Type 1: encryption algorithms\"\n                },\n                \"prf\": {\n                  \"$ref\": \"#/definitions/cryptoRefArray\",\n                  \"title\": \"Pseudorandom Function (PRF)\",\n                  \"description\": \"Transform Type 2: pseudorandom functions\"\n                },\n                \"integ\": {\n                  \"$ref\": \"#/definitions/cryptoRefArray\",\n                  \"title\": \"Integrity Algorithm (INTEG)\",\n                  \"description\": \"Transform Type 3: integrity algorithms\"\n                },\n                \"ke\": {\n                  \"$ref\": \"#/definitions/cryptoRefArray\",\n                  \"title\": \"Key Exchange Method (KE)\",\n                  \"description\": \"Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)\"\n                },\n                \"esn\": {\n                  \"type\": \"boolean\",\n                  \"title\": \"Extended Sequence Numbers (ESN)\",\n                  \"description\": \"Specifies if an Extended Sequence Number (ESN) is used.\"\n                },\n                \"auth\": {\n                  \"$ref\": \"#/definitions/cryptoRefArray\",\n                  \"title\": \"IKEv2 Authentication method\",\n                  \"description\": \"IKEv2 Authentication method\"\n                }\n              }\n            },\n            \"cryptoRefArray\": {\n              \"$ref\": \"#/definitions/cryptoRefArray\",\n              \"title\": \"Cryptographic References\",\n              \"description\": \"A list of protocol-related cryptographic assets\"\n            }\n          }\n        },\n        \"oid\": {\n          \"type\": \"string\",\n          \"title\": \"OID\",\n          \"description\": \"The object identifier (OID) of the cryptographic asset.\"\n        }\n      }\n    },\n    \"cipherSuite\": {\n      \"type\": \"object\",\n      \"title\": \"Cipher Suite\",\n      \"description\": \"Object representing a cipher suite\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"title\": \"Common Name\",\n          \"description\": \"A common name for the cipher suite.\",\n          \"examples\": [\n            \"TLS_DHE_RSA_WITH_AES_128_CCM\"\n          ]\n        },\n        \"algorithms\": {\n          \"type\": \"array\",\n          \"title\": \"Related Algorithms\",\n          \"description\": \"A list of algorithms related to the cipher suite.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/refType\",\n            \"title\": \"Algorithm reference\",\n            \"description\": \"The bom-ref to algorithm cryptographic asset.\"\n          }\n        },\n        \"identifiers\": {\n          \"type\": \"array\",\n          \"title\": \"Cipher Suite Identifiers\",\n          \"description\": \"A list of common identifiers for the cipher suite.\",\n          \"items\": {\n            \"type\": \"string\",\n            \"title\": \"identifier\",\n            \"description\": \"Cipher suite identifier\",\n            \"examples\": [\n              \"0xC0\",\n              \"0x9E\"\n            ]\n          }\n        }\n      }\n    },\n    \"cryptoRefArray\" : {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/refType\"\n      }\n    },\n    \"securedBy\": {\n      \"type\": \"object\",\n      \"title\": \"Secured By\",\n      \"description\": \"Specifies the mechanism by which the cryptographic asset is secured by\",\n      \"additionalProperties\": false,\n      \"properties\": {\n        \"mechanism\": {\n          \"type\": \"string\",\n          \"title\": \"Mechanism\",\n          \"description\": \"Specifies the mechanism by which the cryptographic asset is secured by.\",\n          \"examples\": [\n            \"HSM\",\n            \"TPM\",\n            \"SGX\",\n            \"Software\",\n            \"None\"\n          ]\n        },\n        \"algorithmRef\": {\n          \"$ref\": \"#/definitions/refType\",\n          \"title\": \"Algorithm Reference\",\n          \"description\": \"The bom-ref to the algorithm.\"\n        }\n      }\n    },\n    \"tags\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"title\": \"Tags\",\n      \"description\": \"Textual strings that aid in discovery, search, and retrieval of the associated object. Tags often serve as a way to group or categorize similar or related objects by various attributes.\",\n      \"examples\": [\n        \"json-parser\",\n        \"object-persistence\",\n        \"text-to-image\",\n        \"translation\",\n        \"object-detection\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/cyclonedx/cyclonedx.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\nCycloneDX Bill of Material (BOM) Specification\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:vc=\"http://www.w3.org/2007/XMLSchema-versioning\"\n           xmlns:bom=\"http://cyclonedx.org/schema/bom/1.6\"\n           xmlns:spdx=\"http://cyclonedx.org/schema/spdx\"\n           elementFormDefault=\"qualified\"\n           targetNamespace=\"http://cyclonedx.org/schema/bom/1.6\"\n           vc:minVersion=\"1.0\"\n           vc:maxVersion=\"1.1\"\n           version=\"1.6.0\">\n\n    <xs:import namespace=\"http://cyclonedx.org/schema/spdx\" schemaLocation=\"./spdx.xsd\"/>\n\n    <xs:annotation>\n        <xs:documentation>\n            <name>CycloneDX Bill of Materials Standard</name>\n            <url>https://cyclonedx.org/</url>\n            <license uri=\"http://www.apache.org/licenses/LICENSE-2.0\"\n                     version=\"2.0\">Apache License, Version 2.0</license>\n        </xs:documentation>\n    </xs:annotation>\n\n    <xs:simpleType name=\"refType\">\n        <xs:annotation>\n            <xs:documentation>Identifier for referable and therefore interlink-able elements.</xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:minLength value=\"1\"/>\n            <!-- value SHOULD not start with the BOM-Link intro \"urn:cdx:\" -->\n        </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType name=\"refLinkType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Descriptor for an element identified by the attribute \"bom-ref\" in the same BOM document.\n                In contrast to `bomLinkElementType`.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"bom:refType\"/>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"versionType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\"><![CDATA[\n                A single disjunctive version identifier, for a component or service.\n\n                Example values:\n                - \"9.0.14\"\n                - \"v1.33.7\"\n                - \"7.0.0-M1\"\n                - \"2.0pre1\"\n                - \"1.0.0-beta1\"\n                - \"0.8.15\"\n            ]]>\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:normalizedString\">\n            <xs:maxLength value=\"1024\"/>\n        </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType name=\"versionRangeType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\"><![CDATA[\n                A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst\n\n                Example values:\n                - \"vers:cargo/9.0.14\"\n                - \"vers:npm/1.2.3|>=2.0.0|<5.0.0\"\n                - \"vers:pypi/0.0.0|0.0.1|0.0.2|0.0.3|1.0|2.0pre1\"\n                - \"vers:tomee/>=1.0.0-beta1|<=1.7.5|>=7.0.0-M1|<=7.0.7|>=7.1.0|<=7.1.2|>=8.0.0-M1|<=8.0.1\"\n                - \"vers:gem/>=2.2.0|!= 2.2.1|<2.3.0\"\n            ]]>\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:normalizedString\">\n            <xs:minLength value=\"1\"/>\n            <xs:maxLength value=\"4096\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"bomLinkDocumentType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Descriptor for another BOM document.\n                See https://cyclonedx.org/capabilities/bomlink/\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:anyURI\">\n            <!-- part of the pattern is based on `bom.serialNumber`'s pattern -->\n            <xs:pattern value=\"urn:cdx:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/[1-9][0-9]*\"/>\n        </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType name=\"bomLinkElementType\">\n        <xs:annotation>\n            <xs:documentation  xml:lang=\"en\">\n                Descriptor for an element in another BOM document.\n                See https://cyclonedx.org/capabilities/bomlink/\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:anyURI\">\n            <!-- part of the pattern is based on `bom.serialNumber`'s pattern -->\n            <xs:pattern value=\"urn:cdx:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/[1-9][0-9]*#.+\"/>\n        </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType name=\"bomLinkType\">\n        <xs:union memberTypes=\"bom:bomLinkDocumentType bom:bomLinkElementType\"/>\n    </xs:simpleType>\n\n    <xs:complexType name=\"metadata\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n            <xs:element name=\"timestamp\" type=\"xs:dateTime\" minOccurs=\"0\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the BOM was created.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"lifecycles\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Lifecycles communicate the stage(s) in which data in the BOM was captured. Different types of data may be available at various phases of a lifecycle, such as the Software Development Lifecycle (SDLC), IT Asset Management (ITAM), and Software Asset Management (SAM). Thus, a BOM may include data specific to or only obtainable in a given lifecycle.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"lifecycle\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:choice>\n                                    <xs:sequence>\n                                        <xs:element name=\"phase\" type=\"bom:lifecyclePhaseType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>\n                                                    A pre-defined phase in the product lifecycle.\n                                                </xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                    </xs:sequence>\n                                    <xs:sequence>\n                                        <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>\n                                                    The name of the lifecycle phase\n                                                </xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                        <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>\n                                                    The description of the lifecycle phase\n                                                </xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                    </xs:sequence>\n                                </xs:choice>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"tools\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The tool(s) used in the creation of the BOM.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:choice>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:element name=\"tool\" minOccurs=\"0\" type=\"bom:toolType\">\n                                <xs:annotation>\n                                    <xs:documentation>DEPRECATED. Use tools\\components or tools\\services instead.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                        </xs:sequence>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:element name=\"components\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                <xs:annotation>\n                                    <xs:documentation>A list of software and hardware components used as tools.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                            <xs:element name=\"services\" type=\"bom:servicesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                <xs:annotation>\n                                    <xs:documentation>A list of services used as tools.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                        </xs:sequence>\n                    </xs:choice>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"authors\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The person(s) who created the BOM.\n                        Authors are common in BOMs created through manual processes. BOMs created through automated means may have './manufacturer' instead.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"author\" type=\"bom:organizationalContact\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"component\" type=\"bom:component\" minOccurs=\"0\">\n                <xs:annotation>\n                    <xs:documentation>The component that the BOM describes.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"manufacturer\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The organization that created the BOM.\n                        Manufacturer is common in BOMs created through automated processes. BOMs created through manual means may have './authors' instead.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"manufacture\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        DEPRECATED - DO NOT USE. This will be removed in a future version. Use the `./component/manufacturer` instead.\n                        The organization that manufactured the component that the BOM describes.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"supplier\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The organization that supplied the component that the BOM describes. The\n                        supplier may often be the manufacturer, but may also be a distributor or repackager.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"licenses\" type=\"bom:licenseChoiceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The license information for the BOM document.\n                        This may be different from the license(s) of the component(s) that the BOM describes.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"lifecyclePhaseType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"design\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM produced early in the development lifecycle containing inventory of components and services\n                        that are proposed or planned to be used. The inventory may need to be procured, retrieved,\n                        or resourced prior to use.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"pre-build\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM consisting of information obtained prior to a build process and may contain source files\n                        and development artifacts and manifests. The inventory may need to be resolved and retrieved\n                        prior to use.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"build\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM consisting of information obtained during a build process where component inventory is\n                        available for use. The precise versions of resolved components are usually available at this\n                        time as well as the provenance of where the components were retrieved from.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"post-build\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM consisting of information obtained after a build process has completed and the resulting\n                        components(s) are available for further analysis. Built components may exist as the result of a\n                        CI/CD process, may have been installed or deployed to a system or device, and may need to be\n                        retrieved or extracted from the system or device.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"operations\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM produced that represents inventory that is running and operational. This may include staging\n                        or production environments and will generally encompass multiple SBOMs describing the applications\n                        and operating system, along with HBOMs describing the hardware that makes up the system. Operations\n                        Bill of Materials (OBOM) can provide full-stack inventory of runtime environments, configurations,\n                        and additional dependencies.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"discovery\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM consisting of information observed through network discovery providing point-in-time\n                        enumeration of embedded, on-premise, and cloud-native services such as server applications,\n                        connected devices, microservices, and serverless functions.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"decommission\">\n                <xs:annotation>\n                    <xs:documentation>\n                        BOM containing inventory that will be, or has been retired from operations.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"organizationalEntity\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the organization</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"address\" type=\"bom:postalAddressType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The physical address (location) of the organization.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>The URL of the organization. Multiple URLs are allowed.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"contact\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>A contact person at the organization. Multiple contacts are allowed.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the object elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"toolType\">\n        <xs:annotation>\n            <xs:documentation>Information about the automated or manual tool used</xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n            <xs:element name=\"vendor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:normalizedString\">\n                <xs:annotation>\n                    <xs:documentation>The name of the vendor who created the tool</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:normalizedString\">\n                <xs:annotation>\n                    <xs:documentation>The name of the tool</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"version\" minOccurs=\"0\" maxOccurs=\"1\" type=\"bom:versionType\">\n                <xs:annotation>\n                    <xs:documentation>The version of the tool</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"hashes\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"hash\" type=\"bom:hashType\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document external references related to the tool.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"organizationalContact\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the contact</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"email\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The email address of the contact.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"phone\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The phone number of the contact.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the object elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"componentsType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"component\" type=\"bom:component\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"component\">\n        <xs:sequence>\n            <xs:element name=\"supplier\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The organization that supplied the component. The supplier may often\n                        be the manufacturer, but may also be a distributor or repackager.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"manufacturer\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The organization that created the component.\n                        Manufacturer is common in components created through automated processes. Components created through manual means may have './authors' instead.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"authors\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The person(s) who created the component.\n                        Authors are common in components created through manual processes. Components created through automated means may have `./manufacturer` instead.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"author\" type=\"bom:organizationalContact\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"author\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        DEPRECATED - DO NOT USE. This will be removed in a future version. Use `./authors` or `./manufacturer` instead.\n                        The person(s) or organization(s) that authored the component.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"publisher\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The person(s) or organization(s) that published the component</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"group\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The grouping name or identifier. This will often be a shortened, single\n                        name of the company or project that produced the component, or the source package or\n                        domain name. Whitespace and special characters should be avoided. Examples include:\n                        apache, org.apache.commons, and apache.org.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the component. This will often be a shortened, single name\n                        of the component. Examples: commons-lang3 and jquery</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"version\" type=\"bom:versionType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The component version. The version should ideally comply with semantic versioning\n                        but is not enforced.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies a description for the component</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"scope\" type=\"bom:scope\" minOccurs=\"0\" maxOccurs=\"1\" default=\"required\">\n                <xs:annotation>\n                    <xs:documentation>Specifies the scope of the component. If scope is not specified, 'required'\n                        scope SHOULD be assumed by the consumer of the BOM.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"hashes\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"hash\" type=\"bom:hashType\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"licenses\" type=\"bom:licenseChoiceType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"copyright\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A copyright notice informing users of the underlying claims to\n                        copyright ownership in a published work.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"cpe\" type=\"bom:cpe\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Specifies a well-formed CPE name that conforms to the CPE 2.2 or 2.3 specification. See https://nvd.nist.gov/products/cpe\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"purl\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Specifies the package-url (purl). The purl, if specified, MUST be valid and conform\n                        to the specification defined at: https://github.com/package-url/purl-spec\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"omniborId\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Specifies the OmniBOR Artifact ID. The OmniBOR, if specified, MUST be valid and conform\n                        to the specification defined at: https://www.iana.org/assignments/uri-schemes/prov/gitoid\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"swhid\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Specifies the Software Heritage persistent identifier (SWHID). The SWHID, if specified, MUST\n                        be valid and conform to the specification defined at:\n                        https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"swid\" type=\"bom:swidType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Specifies metadata and content for ISO-IEC 19770-2 Software Identification (SWID) Tags.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"modified\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        DEPRECATED - DO NOT USE. This will be removed in a future version. Use the pedigree\n                        element instead to supply information on exactly how the component was modified.\n                        A boolean value indicating if the component has been modified from the original.\n                        A value of true indicates the component is a derivative of the original.\n                        A value of false indicates the component has not been modified from the original.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"pedigree\" type=\"bom:pedigreeType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Component pedigree is a way to document complex supply chain scenarios where components are\n                        created, distributed, modified, redistributed, combined with other components, etc.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document external references related to the\n                        component or to the project the component describes.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"components\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A list of software and hardware components included in the parent component. This is not a\n                        dependency tree. It provides a way to specify a hierarchical representation of component\n                        assemblies, similar to system -> subsystem -> parts assembly in physical supply chains.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"component\" type=\"bom:component\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"evidence\" type=\"bom:componentEvidenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document evidence collected through various forms of extraction or analysis.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"releaseNotes\" type=\"bom:releaseNotesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies optional release notes.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"modelCard\" type=\"bom:modelCardType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A model card describes the intended uses of a machine learning model and potential\n                        limitations, including biases and ethical considerations. Model cards typically contain the\n                        training parameters, which datasets were used to train the model, performance metrics, and other\n                        relevant data useful for ML transparency. This object SHOULD be specified for any component of\n                        type `machine-learning-model` and MUST NOT be specified for other component types.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"data\" type=\"bom:componentDataType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>This object SHOULD be specified for any component of type `data` and MUST NOT be\n                        specified for other component types.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"cryptoProperties\" type=\"bom:cryptoPropertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Cryptographic assets have properties that uniquely define them and that make them actionable\n                        for further reasoning. As an example, it makes a difference if one knows the algorithm family\n                        (e.g. AES) or the specific variant or instantiation (e.g. AES-128-GCM). This is because the\n                        security level and the algorithm primitive (authenticated encryption) is only defined by the\n                        definition of the algorithm variant. The presence of a weak cryptographic algorithm like SHA1\n                        vs. HMAC-SHA1 also makes a difference.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"tags\" type=\"bom:tagsType\" minOccurs=\"0\" maxOccurs=\"1\" />\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"type\" type=\"bom:classification\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>\n                    Specifies the type of component. For software components, classify as application if no more\n                    specific appropriate classification is available or cannot be determined for the component.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"mime-type\" type=\"bom:mimeType\">\n            <xs:annotation>\n                <xs:documentation>\n                    The OPTIONAL mime-type of the component. When used on file components, the mime-type\n                    can provide additional context about the kind of file being represented such as an image,\n                    font, or executable. Some library or framework components may also have an associated mime-type.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the component elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"licenseType\">\n        <xs:sequence>\n            <xs:choice>\n                <xs:element name=\"id\" type=\"spdx:licenseId\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>A valid SPDX license ID</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>If SPDX does not define the license used, this field may be used to provide the license name</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n            </xs:choice>\n            <xs:element name=\"text\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies the optional full text of the attachment</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The URL to the attachment file. If the attachment is a license or BOM,\n                        an externalReference should also be specified for completeness.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"licensing\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Licensing details describing the licensor/licensee, license type, renewal and\n                        expiration dates, and other important metadata</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"altIds\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>License identifiers that may be used to manage licenses and\n                                    their lifecycle</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"altId\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"licensor\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The individual or organization that grants a license to another\n                                    individual or organization</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:choice>\n                                        <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The organization that granted the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                        <xs:element name=\"individual\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The individual, not associated with an organization,\n                                                    that granted the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                    </xs:choice>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"licensee\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The individual or organization for which a license was granted to</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:choice>\n                                        <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The organization that was granted the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                        <xs:element name=\"individual\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The individual, not associated with an organization,\n                                                    that was granted the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                    </xs:choice>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"purchaser\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The individual or organization that purchased the license</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:choice>\n                                        <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The organization that purchased the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                        <xs:element name=\"individual\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                                            <xs:annotation>\n                                                <xs:documentation>The individual, not associated with an organization,\n                                                    that purchased the license</xs:documentation>\n                                            </xs:annotation>\n                                        </xs:element>\n                                    </xs:choice>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"purchaseOrder\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The purchase order identifier the purchaser sent to a supplier or\n                                    vendor to authorize a purchase</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"licenseTypes\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The type of license(s) that was granted to the licensee</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"licenseType\" type=\"bom:licenseTypeEnum\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"lastRenewal\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">The timestamp indicating when the license was last\n                                    renewed. For new purchases, this is often the purchase or acquisition date.\n                                    For non-perpetual licenses or subscriptions, this is the timestamp of when the\n                                    license was last renewed.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"expiration\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">The timestamp indicating when the current license\n                                    expires (if applicable).</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the license elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"acknowledgement\" type=\"bom:licenseAcknowledgementEnumerationType\">\n            <xs:annotation>\n                <xs:documentation>\n                    Declared licenses and concluded licenses represent two different stages in the\n                    licensing process within software development. Declared licenses refer to the\n                    initial intention of the software authors regarding the licensing terms under\n                    which their code is released. On the other hand, concluded licenses are the\n                    result of a comprehensive analysis of the project's codebase to identify and\n                    confirm the actual licenses of the components used, which may differ from the\n                    initially declared licenses. While declared licenses provide an upfront indication\n                    of the licensing intentions, concluded licenses offer a more thorough understanding\n                    of the actual licensing within a project, facilitating proper compliance and risk\n                    management. Observed licenses are defined in `evidence.licenses`. Observed licenses\n                    form the evidence necessary to substantiate a concluded license.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"attachedTextType\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:string\">\n                <xs:annotation>\n                    <xs:documentation>The attachment data. Proactive controls such as input validation and sanitization should be employed to prevent misuse of attachment text.</xs:documentation>\n                </xs:annotation>\n                <xs:attribute name=\"content-type\" type=\"xs:normalizedString\" default=\"text/plain\">\n                    <xs:annotation>\n                        <xs:documentation>Specifies the content type of the text. Defaults to text/plain\n                            if not specified.</xs:documentation>\n                    </xs:annotation>\n                </xs:attribute>\n                <xs:attribute name=\"encoding\" type=\"bom:encoding\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Specifies the optional encoding the text is represented in\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:attribute>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:complexType name=\"hashType\">\n        <xs:annotation>\n            <xs:documentation>Specifies the file hash of the component</xs:documentation>\n        </xs:annotation>\n        <xs:simpleContent>\n            <xs:extension base=\"bom:hashValue\">\n                <xs:attribute name=\"alg\" type=\"bom:hashAlg\" use=\"required\">\n                    <xs:annotation>\n                        <xs:documentation>Specifies the algorithm used to create the hash</xs:documentation>\n                    </xs:annotation>\n                </xs:attribute>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:simpleType name=\"scope\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"required\">\n                <xs:annotation>\n                    <xs:documentation>The component is required for runtime</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"optional\">\n                <xs:annotation>\n                    <xs:documentation>The component is optional at runtime. Optional components are components that\n                        are not capable of being called due to them not be installed or otherwise accessible by any means.\n                        Components that are installed but due to configuration or other restrictions are prohibited from\n                        being called must be scoped as 'required'.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"excluded\">\n                <xs:annotation>\n                    <xs:documentation>Components that are excluded provide the ability to document component usage\n                        for test and other non-runtime purposes. Excluded components are not reachable within a call\n                        graph at runtime.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"classification\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"application\">\n                <xs:annotation>\n                    <xs:documentation>A software application. Refer to https://en.wikipedia.org/wiki/Application_software\n                        for information about applications.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"framework\">\n                <xs:annotation>\n                    <xs:documentation>A software framework. Refer to https://en.wikipedia.org/wiki/Software_framework\n                        for information on how frameworks vary slightly from libraries.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"library\">\n                <xs:annotation>\n                    <xs:documentation>A software library. Refer to https://en.wikipedia.org/wiki/Library_(computing)\n                        for information about libraries. All third-party and open source reusable components will likely\n                        be a library. If the library also has key features of a framework, then it should be classified\n                        as a framework. If not, or is unknown, then specifying library is recommended.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"container\">\n                <xs:annotation>\n                    <xs:documentation>A packaging and/or runtime format, not specific to any particular technology,\n                        which isolates software inside the container from software outside of a container through\n                        virtualization technology. Refer to https://en.wikipedia.org/wiki/OS-level_virtualization</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"platform\">\n                <xs:annotation>\n                    <xs:documentation>A runtime environment which interprets or executes software. This may include\n                        runtimes such as those that execute bytecode or low-code/no-code application platforms.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"operating-system\">\n                <xs:annotation>\n                    <xs:documentation>A software operating system without regard to deployment model\n                        (i.e. installed on physical hardware, virtual machine, image, etc) Refer to\n                        https://en.wikipedia.org/wiki/Operating_system</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"device\">\n                <xs:annotation>\n                    <xs:documentation>A hardware device such as a processor, or chip-set. A hardware device\n                        containing firmware SHOULD include a component for the physical hardware itself, and another\n                        component of type 'firmware' or 'operating-system' (whichever is relevant), describing\n                        information about the software running on the device.\n                        See also the list of known device properties: https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"device-driver\">\n                <xs:annotation>\n                    <xs:documentation>A special type of software that operates or controls a particular type of device.\n                        Refer to https://en.wikipedia.org/wiki/Device_driver</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"firmware\">\n                <xs:annotation>\n                    <xs:documentation>A special type of software that provides low-level control over a devices\n                        hardware. Refer to https://en.wikipedia.org/wiki/Firmware</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"file\">\n                <xs:annotation>\n                    <xs:documentation>A computer file. Refer to https://en.wikipedia.org/wiki/Computer_file\n                        for information about files.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"machine-learning-model\">\n                <xs:annotation>\n                    <xs:documentation>A model based on training data that can make predictions or decisions without\n                        being explicitly programmed to do so.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"data\">\n                <xs:annotation>\n                    <xs:documentation>A collection of discrete values that convey information.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"cryptographic-asset\">\n                <xs:annotation>\n                    <xs:documentation>A cryptographic asset including algorithms, protocols, certificates, keys, tokens, and secrets.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"hashAlg\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"MD5\"/>\n            <xs:enumeration value=\"SHA-1\"/>\n            <xs:enumeration value=\"SHA-256\"/>\n            <xs:enumeration value=\"SHA-384\"/>\n            <xs:enumeration value=\"SHA-512\"/>\n            <xs:enumeration value=\"SHA3-256\"/>\n            <xs:enumeration value=\"SHA3-384\"/>\n            <xs:enumeration value=\"SHA3-512\"/>\n            <xs:enumeration value=\"BLAKE2b-256\"/>\n            <xs:enumeration value=\"BLAKE2b-384\"/>\n            <xs:enumeration value=\"BLAKE2b-512\"/>\n            <xs:enumeration value=\"BLAKE3\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"licenseTypeEnum\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"academic\">\n                <xs:annotation>\n                    <xs:documentation>A license that grants use of software solely for the purpose\n                        of education or research.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"appliance\">\n                <xs:annotation>\n                    <xs:documentation>A license covering use of software embedded in a specific\n                        piece of hardware.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"client-access\">\n                <xs:annotation>\n                    <xs:documentation>A Client Access License (CAL) allows client computers to access\n                        services provided by server software.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"concurrent-user\">\n                <xs:annotation>\n                    <xs:documentation>A Concurrent User license (aka floating license) limits the\n                        number of licenses for a software application and licenses are shared among\n                        a larger number of users.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"core-points\">\n                <xs:annotation>\n                    <xs:documentation>A license where the core of a computer's processor is assigned\n                        a specific number of points.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"custom-metric\">\n                <xs:annotation>\n                    <xs:documentation>A license for which consumption is measured by non-standard\n                        metrics.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"device\">\n                <xs:annotation>\n                    <xs:documentation>A license that covers a defined number of installations on\n                        computers and other types of devices.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"evaluation\">\n                <xs:annotation>\n                    <xs:documentation>A license that grants permission to install and use software\n                        for trial purposes.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"named-user\">\n                <xs:annotation>\n                    <xs:documentation>A license that grants access to the software to one or more\n                        pre-defined users.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"node-locked\">\n                <xs:annotation>\n                    <xs:documentation>A license that grants access to the software on one or more\n                        pre-defined computers or devices.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"oem\">\n                <xs:annotation>\n                    <xs:documentation>An Original Equipment Manufacturer license that is delivered\n                        with hardware, cannot be transferred to other hardware, and is valid for the\n                        life of the hardware.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"perpetual\">\n                <xs:annotation>\n                    <xs:documentation>A license where the software is sold on a one-time basis and\n                        the licensee can use a copy of the software indefinitely.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"processor-points\">\n                <xs:annotation>\n                    <xs:documentation>A license where each installation consumes points per\n                        processor.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"subscription\">\n                <xs:annotation>\n                    <xs:documentation>A license where the licensee pays a fee to use the software\n                        or service.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"user\">\n                <xs:annotation>\n                    <xs:documentation>A license that grants access to the software or service by a\n                        specified number of users.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation>Another license type.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"hashValue\">\n        <xs:restriction base=\"xs:token\">\n            <xs:pattern value=\"([a-fA-F0-9]{32})|([a-fA-F0-9]{40})|([a-fA-F0-9]{64})|([a-fA-F0-9]{96})|([a-fA-F0-9]{128})\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"mimeType\">\n        <xs:restriction base=\"xs:token\">\n            <xs:pattern value=\"[-+a-z0-9.]+/[-+a-z0-9.]+\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"encoding\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"base64\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"cpe\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Define the format for acceptable CPE URIs. Supports CPE 2.2 and CPE 2.3 formats.\n                Refer to https://nvd.nist.gov/products/cpe for official specification.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:pattern value=\"([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\._\\-~%]*){0,6})|(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!&quot;#$$%&amp;'\\(\\)\\+,/:;&lt;=&gt;@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!&quot;#$$%&amp;'\\(\\)\\+,/:;&lt;=&gt;@\\[\\]\\^`\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"swidType\">\n        <xs:sequence>\n            <xs:element name=\"text\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies the full content of the SWID tag.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The URL to the SWID file.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"tagId\" type=\"xs:string\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>Maps to the tagId of a SoftwareIdentity.</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>Maps to the name of a SoftwareIdentity.</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"version\" type=\"xs:string\" use=\"optional\" default=\"0.0\">\n            <xs:annotation>\n                <xs:documentation>Maps to the version of a SoftwareIdentity.</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"tagVersion\" type=\"xs:integer\" use=\"optional\" default=\"0\">\n            <xs:annotation>\n                <xs:documentation>Maps to the tagVersion of a SoftwareIdentity.</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"patch\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n            <xs:annotation>\n                <xs:documentation>Maps to the patch of a SoftwareIdentity.</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"urnUuid\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Defines a string representation of a UUID conforming to RFC 4122.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:pattern value=\"urn:uuid:([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|(\\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\})\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"externalReferenceType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"vcs\">\n                <xs:annotation>\n                    <xs:documentation>Version Control System</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"issue-tracker\">\n                <xs:annotation>\n                    <xs:documentation>Issue or defect tracking system, or an Application Lifecycle Management (ALM) system</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"website\">\n                <xs:annotation>\n                    <xs:documentation>Website</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"advisories\">\n                <xs:annotation>\n                    <xs:documentation>Security advisories</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"bom\">\n                <xs:annotation>\n                    <xs:documentation>Bill-of-materials (SBOM, OBOM, HBOM, SaaSBOM, etc)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mailing-list\">\n                <xs:annotation>\n                    <xs:documentation>Mailing list or discussion group</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"social\">\n                <xs:annotation>\n                    <xs:documentation>Social media account</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"chat\">\n                <xs:annotation>\n                    <xs:documentation>Real-time chat platform</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"documentation\">\n                <xs:annotation>\n                    <xs:documentation>Documentation, guides, or how-to instructions</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"support\">\n                <xs:annotation>\n                    <xs:documentation>Community or commercial support</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"source-distribution\">\n                <xs:annotation>\n                    <xs:documentation>The location where the source code distributable can be obtained. This is often an archive format such as zip or tgz. The source-distribution type complements use of the version control (vcs) type.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"distribution\">\n                <xs:annotation>\n                    <xs:documentation>Direct or repository download location</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"distribution-intake\">\n                <xs:annotation>\n                    <xs:documentation>The location where a component was published to. This is often the same as \"distribution\" but may also include specialized publishing processes that act as an intermediary</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"license\">\n                <xs:annotation>\n                    <xs:documentation>The URL to the license file. If a license URL has been defined in the license\n                        node, it should also be defined as an external reference for completeness</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"build-meta\">\n                <xs:annotation>\n                    <xs:documentation>Build-system specific meta file (i.e. pom.xml, package.json, .nuspec, etc)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"build-system\">\n                <xs:annotation>\n                    <xs:documentation>URL to an automated build system</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"release-notes\">\n                <xs:annotation>\n                    <xs:documentation>URL to release notes</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"security-contact\">\n                <xs:annotation>\n                    <xs:documentation>Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies the records containing DNS Security TXT.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"model-card\">\n                <xs:annotation>\n                    <xs:documentation>A model card describes the intended uses of a machine learning model, potential\n                        limitations, biases, ethical considerations, training parameters, datasets used to train the\n                        model, performance metrics, and other relevant data useful for ML transparency.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"log\">\n                <xs:annotation>\n                    <xs:documentation>A record of events that occurred in a computer system or application, such as problems, errors, or information on current operations.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"configuration\">\n                <xs:annotation>\n                    <xs:documentation>Parameters or settings that may be used by other components or services.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"evidence\">\n                <xs:annotation>\n                    <xs:documentation>Information used to substantiate a claim.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"formulation\">\n                <xs:annotation>\n                    <xs:documentation>Describes how a component or service was manufactured or deployed.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"attestation\">\n                <xs:annotation>\n                    <xs:documentation>Human or machine-readable statements containing facts, evidence, or testimony</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"threat-model\">\n                <xs:annotation>\n                    <xs:documentation>An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"adversary-model\">\n                <xs:annotation>\n                    <xs:documentation>The defined assumptions, goals, and capabilities of an adversary.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"risk-assessment\">\n                <xs:annotation>\n                    <xs:documentation>Identifies and analyzes the potential of future events that may negatively impact individuals, assets, and/or the environment. Risk assessments may also include judgments on the tolerability of each risk.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"vulnerability-assertion\">\n                <xs:annotation>\n                    <xs:documentation>A Vulnerability Disclosure Report (VDR) which asserts the known and previously unknown vulnerabilities that affect a component, service, or product including the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on a component, service, or product.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"exploitability-statement\">\n                <xs:annotation>\n                    <xs:documentation>A Vulnerability Exploitability eXchange (VEX) which asserts the known vulnerabilities that do not affect a product, product family, or organization, and optionally the ones that do. The VEX should include the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on the product, product family, or organization.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"pentest-report\">\n                <xs:annotation>\n                    <xs:documentation>Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"static-analysis-report\">\n                <xs:annotation>\n                    <xs:documentation>SARIF or proprietary machine or human-readable report for which static analysis has identified code quality, security, and other potential issues with the source code</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"dynamic-analysis-report\">\n                <xs:annotation>\n                    <xs:documentation>Dynamic analysis report that has identified issues such as vulnerabilities and misconfigurations</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"runtime-analysis-report\">\n                <xs:annotation>\n                    <xs:documentation>Report generated by analyzing the call stack of a running application</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"component-analysis-report\">\n                <xs:annotation>\n                    <xs:documentation>Report generated by Software Composition Analysis (SCA), container analysis, or other forms of component analysis</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"maturity-report\">\n                <xs:annotation>\n                    <xs:documentation>Report containing a formal assessment of an organization, business unit, or team against a maturity model</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"certification-report\">\n                <xs:annotation>\n                    <xs:documentation>Industry, regulatory, or other certification from an accredited (if applicable) certification body</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"quality-metrics\">\n                <xs:annotation>\n                    <xs:documentation>Report or system in which quality metrics can be obtained</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"codified-infrastructure\">\n                <xs:annotation>\n                    <xs:documentation>Code or configuration that defines and provisions virtualized infrastructure, commonly referred to as Infrastructure as Code (IaC)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"poam\">\n                <xs:annotation>\n                    <xs:documentation>Plans of Action and Milestones (POAM) complement an \"attestation\" external reference. POAM is defined by NIST as a \"document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones\".</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"electronic-signature\">\n                <xs:annotation>\n                    <xs:documentation>An e-signature is commonly a scanned representation of a written signature or a stylized script of the persons name.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"digital-signature\">\n                <xs:annotation>\n                    <xs:documentation>A signature that leverages cryptography, typically public/private key pairs, which provides strong authenticity verification.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"rfc-9116\">\n                <xs:annotation>\n                    <xs:documentation>Document that complies with RFC-9116 (A File Format to Aid in Security Vulnerability Disclosure)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation>Use this if no other types accurately describe the purpose of the external reference</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"externalReferences\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                External references provide a way to document systems, sites, and information that may be\n                relevant, but are not included with the BOM. They may also establish specific relationships\n                within or external to the BOM.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"reference\" type=\"bom:externalReference\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Zero or more external references can be defined</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"externalReference\">\n        <xs:sequence>\n            <xs:element name=\"url\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The URI (URL or URN) to the external reference. External references\n                        are URIs and therefore can accept any URL scheme including https, mailto, tel, and dns.\n                        External references may also include formally registered URNs such as CycloneDX BOM-Link to\n                        reference CycloneDX BOMs or any object within a BOM. BOM-Link transforms applicable external\n                        references into relationships that can be expressed in a BOM or across BOMs. Refer to:\n                        https://cyclonedx.org/capabilities/bomlink/</xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:union memberTypes=\"xs:anyURI bom:bomLinkType\"/>\n                </xs:simpleType>\n            </xs:element>\n            <xs:element name=\"comment\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">An optional comment describing the external reference</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"hashes\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"hash\" type=\"bom:hashType\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"type\" type=\"bom:externalReferenceType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>Specifies the type of external reference. There are built-in types to describe common\n                    references. If a type does not exist for the reference being referred to, use the \"other\" type.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"commitsType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">Zero or more commits can be specified.</xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"commit\" type=\"bom:commitType\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Specifies an individual commit.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"commitType\">\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">A unique identifier of the commit. This may be version control\n                        specific. For example, Subversion uses revision numbers whereas git uses commit hashes.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The URL to the commit. This URL will typically point to a commit\n                        in a version control system.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"author\" type=\"bom:identifiableActionType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The author who created the changes in the commit</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"committer\" type=\"bom:identifiableActionType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The person who committed or pushed the commit</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"message\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The text description of the contents of the commit</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"patchesType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">Zero or more patches can be specified.</xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"patch\" type=\"bom:patchType\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Specifies an individual patch.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"patchType\">\n        <xs:sequence>\n            <xs:element name=\"diff\" type=\"bom:diffType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The patch file (or diff) that show changes.\n                        Refer to https://en.wikipedia.org/wiki/Diff</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"resolves\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"issue\" type=\"bom:issueType\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"type\" type=\"bom:patchClassification\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>Specifies the purpose for the patch including the resolution of defects,\n                    security issues, or new behavior or functionality</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"patchClassification\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"unofficial\">\n                <xs:annotation>\n                    <xs:documentation>A patch which is not developed by the creators or maintainers of the software\n                        being patched. Refer to https://en.wikipedia.org/wiki/Unofficial_patch</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"monkey\">\n                <xs:annotation>\n                    <xs:documentation>A patch which dynamically modifies runtime behavior.\n                        Refer to https://en.wikipedia.org/wiki/Monkey_patch</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"backport\">\n                <xs:annotation>\n                    <xs:documentation>A patch which takes code from a newer version of software and applies\n                        it to older versions of the same software. Refer to https://en.wikipedia.org/wiki/Backporting</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"cherry-pick\">\n                <xs:annotation>\n                    <xs:documentation>A patch created by selectively applying commits from other versions or\n                        branches of the same software.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"issueClassification\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"defect\">\n                <xs:annotation>\n                    <xs:documentation>A fault, flaw, or bug in software</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"enhancement\">\n                <xs:annotation>\n                    <xs:documentation>A new feature or behavior in software</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"security\">\n                <xs:annotation>\n                    <xs:documentation>A special type of defect which impacts security</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"diffType\">\n        <xs:sequence>\n            <xs:element name=\"text\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Specifies the optional text of the diff</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Specifies the URL to the diff</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"issueType\">\n        <xs:annotation>\n            <xs:documentation>\n                An individual issue that has been resolved.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"id\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The identifier of the issue assigned by the source of the issue</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The name of the issue</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">A description of the issue</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"source\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:annotation>\n                        <xs:documentation xml:lang=\"en\">\n                            The source of the issue where it is documented.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:sequence>\n                        <xs:element name=\"name\" minOccurs=\"0\" type=\"xs:normalizedString\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    The name of the source. For example \"National Vulnerability Database\",\n                                    \"NVD\", and \"Apache\"\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"url\" minOccurs=\"0\" type=\"xs:anyURI\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    The url of the issue documentation as provided by the source\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"references\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"url\" type=\"xs:anyURI\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"type\" type=\"bom:issueClassification\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>Specifies the type of issue</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"identifiableActionType\">\n        <xs:sequence>\n            <xs:element name=\"timestamp\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The timestamp in which the action occurred</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The name of the individual who performed the action</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"email\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">The email address of the individual who performed the action</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"pedigreeType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Component pedigree is a way to document complex supply chain scenarios where components are created,\n                distributed, modified, redistributed, combined with other components, etc. Pedigree supports viewing\n                this complex chain from the beginning, the end, or anywhere in the middle. It also provides a way to\n                document variants where the exact relation may not be known.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"ancestors\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Describes zero or more components in which a component is derived\n                        from. This is commonly used to describe forks from existing projects where the forked version\n                        contains a ancestor node containing the original component it was forked from. For example,\n                        Component A is the original component. Component B is the component being used and documented\n                        in the BOM. However, Component B contains a pedigree node with a single ancestor documenting\n                        Component A - the original component from which Component B is derived from.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"descendants\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Descendants are the exact opposite of ancestors. This provides a\n                        way to document all forks (and their forks) of an original or root component.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"variants\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Variants describe relations where the relationship between the\n                        components are not known. For example, if Component A contains nearly identical code to\n                        Component B. They are both related, but it is unclear if one is derived from the other,\n                        or if they share a common ancestor.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"commits\" type=\"bom:commitsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">A list of zero or more commits which provide a trail describing\n                        how the component deviates from an ancestor, descendant, or variant.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"patches\" type=\"bom:patchesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">A list of zero or more patches describing how the component\n                        deviates from an ancestor, descendant, or variant. Patches may be complementary to commits\n                        or may be used in place of commits.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"notes\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">Notes, observations, and other non-structured commentary\n                        describing the components pedigree.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"dependencyType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"dependency\" type=\"bom:dependencyType\" minOccurs=\"0\">\n                <xs:annotation>\n                    <xs:documentation>The component or service that is a dependency of this dependency object.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"provides\" minOccurs=\"0\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The component or service that define a given specification or standard, which is provided or implemented by this dependency object.\n                        For example, a cryptographic library which implements a cryptographic algorithm. A component which implements another component does not imply that the implementation is in use.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:attribute name=\"ref\" type=\"bom:refLinkType\" use=\"required\">\n                        <xs:annotation>\n                            <xs:documentation>References a component or service by its bom-ref attribute</xs:documentation>\n                        </xs:annotation>\n                    </xs:attribute>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"ref\" type=\"bom:refLinkType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>References a component or service by its bom-ref attribute</xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"dependenciesType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"dependency\" type=\"bom:dependencyType\">\n                <xs:annotation>\n                    <xs:documentation>Defines the direct dependencies of a component or service. Components or services\n                        that do not have their own dependencies MUST be declared as empty elements within the graph.\n                        Components or services that are not represented in the dependency graph MAY have unknown\n                        dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an\n                        indicator of a object being dependency-free. It is RECOMMENDED to leverage compositions to\n                        indicate unknown dependency graphs.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"servicesType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"service\" type=\"bom:service\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"service\">\n        <xs:sequence>\n            <xs:element name=\"provider\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The organization that provides the service.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"group\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The grouping name, namespace, or identifier. This will often be a shortened,\n                        single name of the company or project that produced the service or domain name.\n                        Whitespace and special characters should be avoided.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the service. This will often be a shortened, single name\n                        of the service.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"version\" type=\"bom:versionType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The service version.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies a description for the service.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"endpoints\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"endpoint\" type=\"xs:anyURI\" minOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>A service endpoint URI.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"authenticated\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A boolean value indicating if the service requires authentication.\n                        A value of true indicates the service requires authentication prior to use.\n                        A value of false indicates the service does not require authentication.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"x-trust-boundary\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A boolean value indicating if use of the service crosses a trust zone or boundary.\n                        A value of true indicates that by using the service, a trust boundary is crossed.\n                        A value of false indicates that by using the service, a trust boundary is not crossed.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"trustZone\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the trust zone the service resides in.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"data\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:choice>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:element name=\"classification\" type=\"bom:dataClassificationType\">\n                                <xs:annotation>\n                                    <xs:documentation>DEPRECATED: Specifies the data classification. THIS FIELD IS DEPRECATED AS OF v1.5. Use dataflow\\classification instead</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                        </xs:sequence>\n                        <xs:element name=\"dataflow\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>Specifies the data classification.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"classification\" type=\"bom:dataClassificationType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Specifies the data classification.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"governance\" type=\"bom:dataGovernance\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                    <xs:element name=\"source\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The URI, URL, or BOM-Link of the components or services the data came in from.</xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                <xs:element name=\"url\">\n                                                    <xs:simpleType>\n                                                        <xs:union memberTypes=\"xs:anyURI bom:bomLinkElementType\"/>\n                                                    </xs:simpleType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                    <xs:element name=\"destination\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The URI, URL, or BOM-Link of the components or services the data is sent to.</xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                <xs:element name=\"url\">\n                                                    <xs:simpleType>\n                                                        <xs:union memberTypes=\"xs:anyURI bom:bomLinkElementType\"/>\n                                                    </xs:simpleType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                                <xs:attribute name=\"name\" type=\"xs:string\" use=\"optional\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            Name for the defined data.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:attribute name=\"description\" type=\"xs:string\" use=\"optional\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            Short description of the data content and usage.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:choice>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"licenses\" type=\"bom:licenseChoiceType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document external references related to the service.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"services\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A list of services included or deployed behind the parent service. This is not a dependency\n                        tree. It provides a way to specify a hierarchical representation of service assemblies.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"service\" type=\"bom:service\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"releaseNotes\" type=\"bom:releaseNotesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Specifies optional release notes.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"tags\" type=\"bom:tagsType\" minOccurs=\"0\" maxOccurs=\"1\" />\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the service elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"dataClassificationType\">\n        <xs:annotation>\n            <xs:documentation>Specifies the data classification.</xs:documentation>\n        </xs:annotation>\n        <xs:simpleContent>\n            <xs:extension base=\"xs:normalizedString\">\n                <xs:attribute name=\"flow\" type=\"bom:dataFlowType\" use=\"required\">\n                    <xs:annotation>\n                        <xs:documentation>Specifies the flow direction of the data.</xs:documentation>\n                    </xs:annotation>\n                </xs:attribute>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:simpleType name=\"dataFlowType\">\n        <xs:annotation>\n            <xs:documentation>Specifies the flow direction of the data. Valid values are:\n                inbound, outbound, bi-directional, and unknown. Direction is relative to the service.\n                Inbound flow states that data enters the service. Outbound flow states that data\n                leaves the service. Bi-directional states that data flows both ways, and unknown\n                states that the direction is not known.</xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"inbound\"/>\n            <xs:enumeration value=\"outbound\"/>\n            <xs:enumeration value=\"bi-directional\"/>\n            <xs:enumeration value=\"unknown\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"licenseChoiceType\">\n        <xs:choice>\n            <xs:element name=\"license\" type=\"bom:licenseType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xs:element name=\"expression\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A valid SPDX license expression.\n                        Refer to https://spdx.org/specifications for syntax requirements\n\n                        Example values:\n                        - Apache-2.0 AND (MIT OR GPL-2.0-only)\n                        - GPL-3.0-only WITH Classpath-exception-2.0\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:simpleContent>\n                        <xs:extension base=\"xs:normalizedString\">\n                            <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                <xs:annotation>\n                                    <xs:documentation>\n                                        An optional identifier which can be used to reference the license elsewhere in the BOM.\n                                        Uniqueness is enforced within all elements and children of the root-level bom element.\n                                    </xs:documentation>\n                                </xs:annotation>\n                            </xs:attribute>\n                            <xs:attribute name=\"acknowledgement\" type=\"bom:licenseAcknowledgementEnumerationType\">\n                                <xs:annotation>\n                                    <xs:documentation>\n                                        Declared licenses and concluded licenses represent two different stages in the\n                                        licensing process within software development. Declared licenses refer to the\n                                        initial intention of the software authors regarding the licensing terms under\n                                        which their code is released. On the other hand, concluded licenses are the\n                                        result of a comprehensive analysis of the project's codebase to identify and\n                                        confirm the actual licenses of the components used, which may differ from the\n                                        initially declared licenses. While declared licenses provide an upfront indication\n                                        of the licensing intentions, concluded licenses offer a more thorough understanding\n                                        of the actual licensing within a project, facilitating proper compliance and risk\n                                        management. Observed licenses are defined in `evidence.licenses`. Observed licenses\n                                        form the evidence necessary to substantiate a concluded license.\n                                    </xs:documentation>\n                                </xs:annotation>\n                            </xs:attribute>\n                        </xs:extension>\n                    </xs:simpleContent>\n                </xs:complexType>\n            </xs:element>\n        </xs:choice>\n    </xs:complexType>\n\n    <xs:simpleType name=\"licenseAcknowledgementEnumerationType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"declared\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Declared licenses represent the initial intentions of authors regarding\n                            the licensing terms of their code.\n                        </xs:documentation>\n                    </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"concluded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Concluded licenses are verified and confirmed.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"copyrightsType\">\n        <xs:sequence>\n            <xs:element name=\"text\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:simpleType name=\"identityFieldType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"group\"/>\n            <xs:enumeration value=\"name\"/>\n            <xs:enumeration value=\"version\"/>\n            <xs:enumeration value=\"purl\"/>\n            <xs:enumeration value=\"cpe\"/>\n            <xs:enumeration value=\"omniborId\"/>\n            <xs:enumeration value=\"swhid\"/>\n            <xs:enumeration value=\"swid\"/>\n            <xs:enumeration value=\"hash\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"decimalPercentType\">\n        <xs:restriction base=\"xs:decimal\">\n            <xs:minInclusive value=\"0\"/>\n            <xs:maxInclusive value=\"1\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"evidenceTechnique\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"source-code-analysis\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Examines the source code without executing it.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"binary-analysis\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Examines a compiled binary through reverse engineering, typically via disassembly or bytecode reversal.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"manifest-analysis\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Examines a package management system such as those used for building software or installing software.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ast-fingerprint\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Examines the Abstract Syntax Tree (AST) of source code or a compiled binary.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"hash-comparison\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Evaluates the cryptographic hash of a component against a set of pre-computed hashes of identified software.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"instrumentation\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Examines the call stack of running applications by intercepting and monitoring application logic without the need to modify the application.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"dynamic-analysis\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Evaluates a running application.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"filename\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Evaluates file name of a component against a set of known file names of identified software.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"attestation\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A testimony to the accuracy of the identify of a component made by an individual or entity.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Any other technique.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"componentEvidenceType\">\n        <xs:sequence>\n            <xs:element name=\"identity\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>Evidence that substantiates the identity of a component. The identify may be an\n                        object or an array of identity objects. Support for specifying identity as a single object was\n                        introduced in CycloneDX v1.5. \"unbounded\" was introduced in v1.6. It is RECOMMENDED that all\n                        implementations are aware of \"unbounded\".</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"field\" type=\"bom:identityFieldType\" minOccurs=\"1\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The identity field of the component which the evidence describes.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"confidence\" type=\"bom:decimalPercentType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"concludedValue\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The value of the field (cpe, purl, etc) that has been concluded based on the aggregate of all methods (if available).</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"methods\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The methods used to extract and/or analyze the evidence.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"method\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"technique\" type=\"bom:evidenceTechnique\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The technique used in this method of analysis.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"confidence\" type=\"bom:decimalPercentType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The value or contents of the evidence.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"tools\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The object in the BOM identified by its bom-ref. This is often a component or service,\n                                    but may be any object type supporting bom-refs. Tools used for analysis should already\n                                    be defined in the BOM, either in the metadata/tools, components, or formulation.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"tool\" type=\"bom:bomReferenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"occurrences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Evidence of individual instances of a component spread across multiple locations.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"occurrence\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"location\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The location or path to where the component was found.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"line\" type=\"xs:nonNegativeInteger\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The line number where the component was found.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"offset\" type=\"xs:nonNegativeInteger\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The offset where the component was found.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"symbol\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The symbol name that was found associated with the component.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"additionalContext\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Any additional context of the detected component (e.g. a code snippet).</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the occurrence elsewhere\n                                            in the BOM. Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"callstack\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Evidence of the components use through the callstack.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"frames\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"frame\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"package\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>A package organizes modules into namespaces, providing a unique namespace for each type it contains.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"module\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>A module or class that encloses functions/methods and other code.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"function\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>A block of code designed to perform a particular task.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"parameters\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>Optional arguments that are passed to the module or function.</xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"parameter\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"line\" type=\"xs:integer\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The line number the code that is called resides on.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"column\" type=\"xs:integer\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The column the code that is called resides.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"fullFilename\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>The full path and filename of the module.</xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"tools\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The object in the BOM identified by its bom-ref. This is often a component or service,\n                                    but may be any object type supporting bom-refs. Tools used for analysis should already\n                                    be defined in the BOM, either in the metadata/tools, components, or formulation.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"tool\" type=\"bom:bomReferenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"licenses\" type=\"bom:licenseChoiceType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"copyright\" type=\"bom:copyrightsType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"compositionsType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"composition\" type=\"bom:compositionType\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"compositionType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"aggregate\" type=\"bom:aggregateType\" default=\"not_specified\">\n                <xs:annotation>\n                    <xs:documentation>Specifies an aggregate type that describe how complete a relationship is.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"assemblies\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The bom-ref identifiers of the components or services being described. Assemblies refer to\n                        nested relationships whereby a constituent part may include other constituent parts. References\n                        do not cascade to child parts. References are explicit for the specified constituent part only.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"assembly\" type=\"bom:bomReferenceType\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"dependencies\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The bom-ref identifiers of the components or services being described. Dependencies refer to a\n                        relationship whereby an independent constituent part requires another independent constituent\n                        part. References do not cascade to transitive dependencies. References are explicit for the\n                        specified dependency only.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"dependency\" type=\"bom:bomReferenceType\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"vulnerabilities\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The bom-ref identifiers of the vulnerabilities being described.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"vulnerability\" type=\"bom:bomReferenceType\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the composition elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"aggregateType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"complete\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_first_party_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_first_party_proprietary_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_first_party_opensource_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_third_party_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_third_party_proprietary_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"incomplete_third_party_opensource_only\">\n                <xs:annotation>\n                    <xs:documentation>The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"unknown\">\n                <xs:annotation>\n                    <xs:documentation>The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"not_specified\">\n                <xs:annotation>\n                    <xs:documentation>The relationship completeness is not specified.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"localeType\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Defines a syntax for representing two character language code (ISO-639) followed by an optional two\n                character country code. The language code MUST be lower case. If the country code is specified, the\n                country code MUST be upper case. The language code and country code MUST be separated by a minus sign.\n                Examples: en, en-US, fr, fr-CA\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:pattern value=\"([a-z]{2})(-[A-Z]{2})?\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"releaseNotesType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"type\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The software versioning type. It is RECOMMENDED that the release type use one\n                        of 'major', 'minor', 'patch', 'pre-release', or 'internal'. Representing all possible software\n                        release types is not practical, so standardizing on the recommended values, whenever possible,\n                        is strongly encouraged.\n                        * major = A major release may contain significant changes or may introduce breaking changes.\n                        * minor = A minor release, also known as an update, may contain a smaller number of changes than major releases.\n                        * patch = Patch releases are typically unplanned and may resolve defects or important security issues.\n                        * pre-release = A pre-release may include alpha, beta, or release candidates and typically have\n                          limited support. They provide the ability to preview a release prior to its general availability.\n                        * internal = Internal releases are not for public consumption and are intended to be used exclusively\n                          by the project or manufacturer that produced it.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"title\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The title of the release.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"featuredImage\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The URL to an image that may be prominently displayed with the release note.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"socialImage\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The URL to an image that may be used in messaging on social media platforms.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A short description of the release.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"timestamp\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the release note was created.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"aliases\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"alias\" type=\"xs:normalizedString\">\n                            <xs:annotation>\n                                <xs:documentation>One or more alternate names the release may be referred to. This may\n                                include unofficial terms used by development and marketing teams (e.g. code names).</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"tags\" type=\"bom:tagsType\" minOccurs=\"0\" maxOccurs=\"1\" />\n            <xs:element name=\"resolves\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A collection of issues that have been resolved.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"issue\" type=\"bom:issueType\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"notes\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"note\">\n                            <xs:annotation>\n                                <xs:documentation>Zero or more release notes containing the locale and content. Multiple\n                                note elements may be specified to support release notes in a wide variety of languages.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                    <xs:element name=\"locale\" type=\"bom:localeType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The ISO-639 (or higher) language code and optional ISO-3166\n                                                (or higher) country code. Examples include: \"en\", \"en-US\", \"fr\" and \"fr-CA\".</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"text\" type=\"bom:attachedTextType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Specifies the full content of the release note.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n   <!--\n   Model card support in CycloneDX is derived from TensorFlow Model Card Toolkit released under the Apache 2.0 license and\n   available from https://github.com/tensorflow/model-card-toolkit/blob/main/model_card_toolkit/schema/v0.0.2/model_card.schema.json.\n   In addition, CycloneDX model card support includes portions of VerifyML, also released under the Apache 2.0 license and\n   available from https://github.com/cylynx/verifyml/blob/main/verifyml/model_card_toolkit/schema/v0.0.4/model_card.schema.json.\n   -->\n    <xs:complexType name=\"modelCardType\">\n        <xs:annotation>\n            <xs:documentation>\n                A model card describes the intended uses of a machine learning model and potential limitations, including\n                biases and ethical considerations. Model cards typically contain the training parameters, which datasets\n                were used to train the model, performance metrics, and other relevant data useful for ML transparency.\n                This object SHOULD be specified for any component of type `machine-learning-model` and MUST NOT be specified\n                for other component types.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"modelParameters\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Hyper-parameters for construction of the model.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"approach\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The overall approach to learning used by the model for problem solving.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"type\" type=\"bom:machineLearningApproachType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Learning types describing the learning problem or hybrid learning problem.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"task\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Directly influences the input and/or output. Examples include classification,\n                                    regression, clustering, etc.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"architectureFamily\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The model architecture family such as transformer network, convolutional neural\n                                    network, residual neural network, LSTM neural network, etc.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"modelArchitecture\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The specific architecture of the model such as GPT-1, ResNet-50, YOLOv3, etc.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"datasets\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The datasets used to train and evaluate the model.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                    <xs:element name=\"ref\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>References a data component by the components bom-ref attribute</xs:documentation>\n                                        </xs:annotation>\n                                        <xs:simpleType>\n                                            <xs:union memberTypes=\"bom:refLinkType bom:bomLinkElementType\"/>\n                                        </xs:simpleType>\n                                    </xs:element>\n                                    <xs:element name=\"dataset\" type=\"bom:componentDataType\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                </xs:choice>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"inputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The input format(s) of the model\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"input\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"format\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The data format for input to the model. Example formats include string, image, time-series\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"outputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The output format(s) from the model\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"output\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"format\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The data format for output from the model. Example formats include string, image, time-series\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"quantitativeAnalysis\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A quantitative analysis of the model\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"performanceMetrics\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"performanceMetric\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"type\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The type of performance metric.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The value of the performance metric.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"slice\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The name of the slice this metric was computed on. By default, assume\n                                                            this metric is not sliced.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"confidenceInterval\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The confidence interval of the metric.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"lowerBound\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The lower bound of the confidence interval.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                            <xs:element name=\"upperBound\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The upper bound of the confidence interval.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"graphics\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    A collection of graphics that represent various measurements\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A description of this collection of graphics.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"collection\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A collection of graphics.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"graphic\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The name of the graphic.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                            <xs:element name=\"image\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The graphic (vector or raster). Base64 encoding MUST be specified for binary images.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"considerations\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        What considerations should be taken into account regarding the model's construction, training,\n                        and application?\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"users\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Who are the intended users of the model?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"user\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"useCases\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    What are the intended use cases of the model?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"useCase\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"technicalLimitations\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    What are the known technical limitations of the model? E.g. What kind(s) of data\n                                    should the model be expected not to perform well on? What are the factors that might\n                                    degrade model performance?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"technicalLimitation\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"performanceTradeoffs\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    What are the known tradeoffs in accuracy/performance of the model?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"performanceTradeoff\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"ethicalConsiderations\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    What are the ethical risks involved in the application of this model?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"ethicalConsideration\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The name of the risk\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"mitigationStrategy\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            Strategy used to address this risk\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"environmentalConsiderations\" type=\"bom:environmentalConsiderationsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    What are the various environmental impacts the corresponding machine learning model has exhibited across its lifecycle?\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"fairnessAssessments\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    How does the model affect groups at risk of being systematically disadvantaged?\n                                    What are the harms and benefits to the various affected groups?\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"fairnessAssessment\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"groupAtRisk\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The groups or individuals at risk of being systematically disadvantaged by the model.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"benefits\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            Expected benefits to the identified groups.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"harms\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            Expected harms to the identified groups.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"mitigationStrategy\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            With respect to the benefits and harms outlined, please\n                                                            describe any mitigation strategy implemented.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the model card elsewhere in the BOM.\n                    Every bom-ref MUST be unique within the BOM.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"environmentalConsiderationsType\">\n        <xs:annotation>\n            <xs:documentation>\n                Describes various environmental impact metrics.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"energyConsumptions\" type=\"bom:energyConsumptionsType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Describes energy consumption information incurred for one or more component lifecycle activities.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"energyConsumptionsType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"energyConsumption\" type=\"bom:energyConsumptionType\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"energyConsumptionType\">\n        <xs:annotation>\n            <xs:documentation>\n                Describes energy consumption information incurred for the specified lifecycle activity.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"activity\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The type of activity that is part of a machine learning model development or operational lifecycle.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:restriction base=\"xs:string\">\n                        <xs:enumeration value=\"design\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    model design including problem framing, goal definition and algorithm selection.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"data-collection\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    model data acquisition including search, selection and transfer.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"data-preparation\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    model data preparation including data cleaning, labeling and conversion.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"training\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    model building, training and generalized tuning.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"fine-tuning\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    refining a trained model to produce desired outputs for a given problem space.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"validation\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    model validation including model output evaluation and testing.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"deployment\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    explicit model deployment to a target hosting infrastructure.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"inference\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    generating an output response from a hosted model from a set of inputs.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"other\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    a lifecycle activity type whose description does not match currently defined values.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                    </xs:restriction>\n                </xs:simpleType>\n            </xs:element>\n            <xs:element name=\"energyProviders\" type=\"bom:energyProviderType\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The provider(s) of the energy consumed by the associated model development lifecycle activity.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"activityEnergyCost\" type=\"bom:energyMeasureType\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The total energy cost associated with the model lifecycle activity.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"co2CostEquivalent\" type=\"bom:co2MeasureType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The CO2 cost (debit) equivalent to the total energy cost.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"co2CostOffset\" type=\"bom:co2MeasureType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The CO2 offset (credit) for the CO2 equivalent cost.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"energyMeasureType\">\n        <xs:annotation>\n            <xs:documentation>\n                A measure of energy.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"value\" type=\"xs:decimal\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Quantity of energy.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"unit\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Unit of energy.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:restriction base=\"xs:string\">\n                        <xs:enumeration value=\"kWh\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    kilowatt-hour (kWh) is the energy delivered by one kilowatt (kW) of power for one hour (h).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                    </xs:restriction>\n                </xs:simpleType>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"co2MeasureType\">\n        <xs:annotation>\n            <xs:documentation>\n                A measure of carbon dioxide (CO2).\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"value\" type=\"xs:decimal\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Quantity of carbon dioxide (CO2).\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"unit\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Unit of carbon dioxide (CO2).\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:restriction base=\"xs:string\">\n                        <xs:enumeration value=\"tCO2eq\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Tonnes (t) of carbon dioxide (CO2) equivalent (eq).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                    </xs:restriction>\n                </xs:simpleType>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"energyProviderType\">\n        <xs:annotation>\n            <xs:documentation>\n                Describes the physical provider of energy used for model development or operations.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of the energy provider.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The organization of the energy provider.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"energySource\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The energy source for the energy provider.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:restriction base=\"xs:string\">\n                        <xs:enumeration value=\"coal\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced by types of coal.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"oil\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Petroleum products (primarily crude oil and its derivative fuel oils).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"natural-gas\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Hydrocarbon gas liquids (HGL) that occur as gases at atmospheric pressure and as liquids under higher pressures including Natural gas (C5H12 and heavier), Ethane (C2H6), Propane (C3H8), etc.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"nuclear\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced from the cores of atoms (i.e., through nuclear fission or fusion).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"wind\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced from moving air.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"solar\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced from the sun (i.e., solar radiation).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"geothermal\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced from heat within the earth.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"hydropower\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Energy produced from flowing water.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"biofuel\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Liquid fuels produced from biomass feedstocks (i.e., organic materials such as plants or animals).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"unknown\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The energy source is unknown.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"other\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    An energy source that is not listed.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                    </xs:restriction>\n                </xs:simpleType>\n            </xs:element>\n            <xs:element name=\"energyProvided\" type=\"bom:energyMeasureType\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The energy provided by the energy source for an associated activity.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the energy provider elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"postalAddressType\">\n        <xs:annotation>\n            <xs:documentation>\n                An address used to identify a contactable location.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"country\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The country name or the two-letter ISO 3166-1 country code.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"region\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The region or state in the country. For example, Texas.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"locality\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The locality or city within the country. For example, Austin.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"postOfficeBoxNumber\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The post office box number. For example, 901.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"postalCode\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The postal code. For example, 78758.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"streetAddress\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The street address. For example, 100 Main Street.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the address elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"machineLearningApproachType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"supervised\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Supervised machine learning involves training an algorithm on labeled\n                        data to predict or classify new data based on the patterns learned from\n                        the labeled examples.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"unsupervised\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Unsupervised machine learning involves training algorithms on unlabeled\n                        data to discover patterns, structures, or relationships without explicit\n                        guidance, allowing the model to identify inherent structures or clusters\n                        within the data.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"reinforcement-learning\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Reinforcement learning is a type of machine learning where an agent learns\n                        to make decisions by interacting with an environment to maximize cumulative\n                        rewards, through trial and error.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"semi-supervised\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Semi-supervised machine learning utilizes a combination of labeled and\n                        unlabeled data during training to improve model performance, leveraging\n                        the benefits of both supervised and unsupervised learning techniques.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"self-supervised\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Self-supervised machine learning involves training models to predict parts\n                        of the input data from other parts of the same data, without requiring\n                        external labels, enabling learning from large amounts of unlabeled data.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"componentDataType\">\n        <xs:sequence>\n            <xs:element name=\"type\" type=\"bom:componentDataTypeEnumeration\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The general theme or subject matter of the data being specified.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the dataset.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"contents\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The contents or references to the contents of the data being described.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"attachment\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>An optional way to include textual or encoded data.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The URL to where the data can be retrieved.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>Provides the ability to document name-value parameters used for configuration.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"classification\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"sensitiveData\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of any sensitive data in a dataset.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"graphics\" type=\"bom:graphicsCollectionType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A collection of graphics that represent various measurements.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of the dataset. Can describe size of dataset, whether it's used for source code,\n                        training, testing, or validation, etc.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"governance\" type=\"bom:dataGovernance\" minOccurs=\"0\" maxOccurs=\"1\" />\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the dataset elsewhere in the BOM.\n                    Every bom-ref MUST be unique within the BOM.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"dataGovernance\">\n        <xs:sequence>\n            <xs:element name=\"custodians\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Data custodians are responsible for the safe custody, transport, and storage of data.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"custodian\" type=\"bom:organizationOrIndividualType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"stewards\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Data stewards are responsible for data content, context, and associated business rules.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"steward\" type=\"bom:organizationOrIndividualType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"owners\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Data owners are concerned with risk and appropriate access to data.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"owner\" type=\"bom:organizationOrIndividualType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"organizationOrIndividualType\">\n        <xs:choice>\n            <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\" />\n            <xs:element name=\"individual\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\" />\n        </xs:choice>\n    </xs:complexType>\n\n    <xs:complexType name=\"graphicsCollectionType\">\n        <xs:annotation>\n            <xs:documentation>\n                A collection of graphics that represent various measurements.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"description\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of this collection of graphics.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"collection\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A collection of graphics.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"graphic\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The name of the graphic.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"image\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The graphic (vector or raster). Base64 encoding MUST be specified for binary images.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:simpleType name=\"componentDataTypeEnumeration\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"source-code\">\n                <xs:annotation>\n                    <xs:documentation>Any type of code, code snippet, or data-as-code.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"configuration\">\n                <xs:annotation>\n                    <xs:documentation>Parameters or settings that may be used by other components.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"dataset\">\n                <xs:annotation>\n                    <xs:documentation>A collection of data.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"definition\">\n                <xs:annotation>\n                    <xs:documentation>Data that can be used to create new instances of what the definition defines.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation>Any other type of data that does not fit into existing definitions.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"bomReferenceType\">\n        <xs:attribute name=\"ref\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>References a component or service by its bom-ref attribute</xs:documentation>\n            </xs:annotation>\n            <xs:simpleType>\n                <xs:union memberTypes=\"bom:refLinkType bom:bomLinkType\"/>\n            </xs:simpleType>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"propertiesType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"property\" type=\"bom:propertyType\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"propertyType\">\n        <xs:annotation>\n            <xs:documentation>Specifies an individual property with a name and value.</xs:documentation>\n        </xs:annotation>\n        <xs:simpleContent>\n            <xs:extension base=\"xs:normalizedString\">\n                <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\">\n                    <xs:annotation>\n                        <xs:documentation>The name of the property. Duplicate names are allowed, each potentially having a different value.</xs:documentation>\n                    </xs:annotation>\n                </xs:attribute>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:complexType name=\"vulnerabilitiesType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"vulnerability\" type=\"bom:vulnerabilityType\">\n                <xs:annotation>\n                    <xs:documentation>Defines a weakness in a component or service that could be exploited or triggered by a threat source.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"vulnerabilityType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n            <xs:element name=\"id\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The identifier that uniquely identifies the vulnerability. For example:\n                        CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"source\" type=\"bom:vulnerabilitySourceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The source that published the vulnerability.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"references\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Zero or more pointers to vulnerabilities that are the equivalent of the\n                        vulnerability specified. Often times, the same vulnerability may exist in multiple sources of\n                        vulnerability intelligence, but have different identifiers. References provide a way to\n                        correlate vulnerabilities across multiple sources of vulnerability intelligence.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"reference\">\n                            <xs:annotation>\n                                <xs:documentation>A pointer to a vulnerability that is the equivalent of the\n                                    vulnerability specified.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"1\" maxOccurs=\"1\">\n                                    <xs:element name=\"id\" type=\"xs:normalizedString\" minOccurs=\"1\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The identifier that uniquely identifies the vulnerability. For example:\n                                                CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"source\" type=\"bom:vulnerabilitySourceType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The source that published the vulnerability.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"ratings\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">List of vulnerability ratings.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"rating\" type=\"bom:ratingType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"cwes\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:annotation>\n                        <xs:documentation xml:lang=\"en\">\n                            List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability.\n                            For example 399 (of https://cwe.mitre.org/data/definitions/399.html)\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:sequence>\n                        <xs:element name=\"cwe\" type=\"xs:integer\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A description of the vulnerability as provided by the source.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"detail\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>If available, an in-depth description of the vulnerability as provided by the\n                        source organization. Details often include information useful in understanding root cause.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"recommendation\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Recommendations of how the vulnerability can be remediated or mitigated.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"workaround\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A bypass, usually temporary, of the vulnerability that reduces its likelihood and/or impact. Workarounds often involve changes to configuration or deployments.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"proofOfConcept\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:annotation>\n                        <xs:documentation xml:lang=\"en\">\n                            Evidence used to reproduce the vulnerability.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:sequence>\n                        <xs:element name=\"reproductionSteps\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                <xs:annotation>\n                                    <xs:documentation>Precise steps to reproduce the vulnerability.</xs:documentation>\n                                </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"environment\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>A description of the environment in which reproduction was possible.</xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"supportingMaterial\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>Supporting material that helps in reproducing or understanding how reproduction is possible. This may include screenshots, payloads, and PoC exploit code.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"attachment\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"advisories\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:annotation>\n                        <xs:documentation xml:lang=\"en\">\n                            Published advisories of the vulnerability if provided.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:sequence>\n                        <xs:element name=\"advisory\" type=\"bom:advisoryType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"created\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the vulnerability record was created in the vulnerability database.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"published\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the vulnerability record was first published.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"updated\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the vulnerability record was last updated.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"rejected\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the vulnerability record was rejected (if applicable).</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"credits\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Individuals or organizations credited with the discovery of the vulnerability.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"organizations\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The organizations credited with vulnerability discovery.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                    <xs:element name=\"organization\" type=\"bom:organizationalEntity\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"individuals\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>The individuals, not associated with organizations, that are credited with vulnerability discovery.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                    <xs:element name=\"individual\" type=\"bom:organizationalContact\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"tools\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The tool(s) used to identify, confirm, or score the vulnerability.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:choice>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:element name=\"tool\" minOccurs=\"0\" type=\"bom:toolType\">\n                                <xs:annotation>\n                                    <xs:documentation>DEPRECATED. Use tools\\components or tools\\services instead.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                        </xs:sequence>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:element name=\"components\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                <xs:annotation>\n                                    <xs:documentation>A list of software and hardware components used as tools.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                            <xs:element name=\"services\" type=\"bom:servicesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                <xs:annotation>\n                                    <xs:documentation>A list of services used as tools.</xs:documentation>\n                                </xs:annotation>\n                            </xs:element>\n                        </xs:sequence>\n                    </xs:choice>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"analysis\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:annotation>\n                        <xs:documentation xml:lang=\"en\">\n                            An assessment of the impact and exploitability of the vulnerability.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n                        <xs:element name=\"state\" type=\"bom:impactAnalysisStateType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"justification\" type=\"bom:impactAnalysisJustificationType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    The rationale of why the impact analysis state was asserted.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"responses\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>A response to the vulnerability by the manufacturer, supplier, or\n                                    project responsible for the affected component or service. More than one response\n                                    is allowed. Responses are strongly encouraged for vulnerabilities where the analysis\n                                    state is exploitable.</xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                    <xs:element name=\"response\" type=\"bom:impactAnalysisResponsesType\"/>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"detail\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    Detailed description of the impact including methods used during assessment.\n                                    If a vulnerability is not exploitable, this field should include specific details\n                                    on why the component or service is not impacted by this vulnerability.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"firstIssued\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    The date and time (timestamp) when the analysis was first issued.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"lastUpdated\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation xml:lang=\"en\">\n                                    The date and time (timestamp) when the analysis was last updated.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"affects\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The components or services that are affected by the vulnerability.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"target\">\n                            <xs:complexType>\n                                <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n                                    <xs:element name=\"ref\" minOccurs=\"1\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>References a component or service by the objects bom-ref.</xs:documentation>\n                                        </xs:annotation>\n                                        <xs:simpleType>\n                                            <xs:union memberTypes=\"bom:refLinkType bom:bomLinkElementType\"/>\n                                        </xs:simpleType>\n                                    </xs:element>\n                                    <xs:element name=\"versions\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Zero or more individual versions or range of versions.</xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                <xs:element name=\"version\">\n                                                    <xs:complexType>\n                                                        <xs:sequence minOccurs=\"0\" maxOccurs=\"1\">\n                                                            <xs:choice>\n                                                                <xs:element name=\"version\" type=\"bom:versionType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                                    <xs:annotation>\n                                                                        <xs:documentation>A single version of a component or service.</xs:documentation>\n                                                                    </xs:annotation>\n                                                                </xs:element>\n                                                                <xs:element name=\"range\" type=\"bom:versionRangeType\" minOccurs=\"1\" maxOccurs=\"1\">\n                                                                    <xs:annotation>\n                                                                        <xs:documentation>A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst</xs:documentation>\n                                                                    </xs:annotation>\n                                                                </xs:element>\n                                                            </xs:choice>\n                                                            <xs:element name=\"status\" type=\"bom:impactAnalysisAffectedStatusType\" minOccurs=\"0\" maxOccurs=\"1\" default=\"affected\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The vulnerability status for the version or range of versions.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the vulnerability elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"vulnerabilitySourceType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"name\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The name of the source.\n                        For example: NVD, National Vulnerability Database, OSS Index, VulnDB, and GitHub Advisories\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The url of the vulnerability documentation as provided by the source.\n                    For example: https://nvd.nist.gov/vuln/detail/CVE-2021-39182</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"ratingType\">\n        <xs:sequence>\n            <xs:element name=\"source\" type=\"bom:vulnerabilitySourceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The source that calculated the severity or risk rating of the vulnerability.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"score\" type=\"xs:decimal\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The numerical score of the rating.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"severity\" type=\"bom:severityType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Textual representation of the severity that corresponds to the numerical score of the rating.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"method\" type=\"bom:scoreSourceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The risk scoring methodology/standard used.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"vector\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Textual representation of the metric values used to score the vulnerability.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"justification\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>An optional reason for rating the vulnerability as it was.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"advisoryType\">\n        <xs:sequence>\n            <xs:element name=\"title\" type=\"xs:normalizedString\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>An optional name of the advisory.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Location where the advisory can be obtained.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"annotationsType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"annotation\" type=\"bom:annotationType\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"annotatorChoiceType\">\n        <xs:choice>\n            <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The organization that created the annotation</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"individual\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The person that created the annotation</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"component\" type=\"bom:component\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The tool or component that created the annotation</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"service\" type=\"bom:service\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The service that created the annotation</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:choice>\n    </xs:complexType>\n\n    <xs:complexType name=\"annotationType\">\n        <xs:sequence>\n            <xs:element name=\"subjects\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The objects in the BOM identified by their bom-ref's. This is often components or services, but may be any object type supporting bom-refs.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                        <xs:element name=\"subject\" type=\"bom:bomReferenceType\"/>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"annotator\" type=\"bom:annotatorChoiceType\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The organization, individual, component, or service which created the textual content\n                        of the annotation.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"timestamp\" type=\"xs:dateTime\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The date and time (timestamp) when the annotation was created.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"text\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The textual content of the annotation.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the annotation elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"severityType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Textual representation of the severity of the vulnerability adopted by the analysis method. If the\n                analysis method uses values other than what is provided, the user is expected to translate appropriately.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"critical\"/>\n            <xs:enumeration value=\"high\"/>\n            <xs:enumeration value=\"medium\"/>\n            <xs:enumeration value=\"low\"/>\n            <xs:enumeration value=\"info\"/>\n            <xs:enumeration value=\"none\"/>\n            <xs:enumeration value=\"unknown\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"impactAnalysisStateType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"resolved\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerability has been remediated.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"resolved_with_pedigree\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerability has been remediated and evidence of the changes are provided in the affected\n                        components pedigree containing verifiable commit history and/or diff(s).\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"exploitable\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerability may be directly or indirectly exploitable.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"in_triage\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerability is being investigated.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"false_positive\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerability is not specific to the component or service and was falsely identified or associated.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"not_affected\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The component or service is not affected by the vulnerability. Justification should be specified\n                        for all not_affected cases.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"impactAnalysisJustificationType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                The rationale of why the impact analysis state was asserted.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"code_not_present\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The code has been removed or tree-shaked.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"code_not_reachable\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The vulnerable code is not invoked at runtime.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"requires_configuration\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Exploitability requires a configurable option to be set/unset.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"requires_dependency\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Exploitability requires a dependency that is not present.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"requires_environment\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Exploitability requires a certain environment which is not present.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"protected_by_compiler\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Exploitability requires a compiler flag to be set/unset.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"protected_at_runtime\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Exploits are prevented at runtime.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"protected_at_perimeter\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Attacks are blocked at physical, logical, or network perimeter.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"protected_by_mitigating_control\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"scoreSourceType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                Specifies the severity or risk scoring methodology or standard used.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"CVSSv2\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Common Vulnerability Scoring System v2.0 standard as defined at https://www.first.org/cvss/v2/\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CVSSv3\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Common Vulnerability Scoring System v3.0 standard as defined at https://www.first.org/cvss/v3-0/\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CVSSv31\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Common Vulnerability Scoring System v3.1 standard as defined at https://www.first.org/cvss/v3-1/\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CVSSv4\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Common Vulnerability Scoring System v4.0 standard as defined at https://www.first.org/cvss/v4-0/\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OWASP\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        OWASP Risk Rating as defined at https://owasp.org/www-community/OWASP_Risk_Rating_Methodology\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SSVC\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Stakeholder Specific Vulnerability Categorization as defined at https://github.com/CERTCC/SSVC\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Another severity or risk scoring methodology\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"impactAnalysisResponsesType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                The rationale of why the impact analysis state was asserted.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"can_not_fix\"/>\n            <xs:enumeration value=\"will_not_fix\"/>\n            <xs:enumeration value=\"update\"/>\n            <xs:enumeration value=\"rollback\"/>\n            <xs:enumeration value=\"workaround_available\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:simpleType name=\"impactAnalysisAffectedStatusType\" final=\"restriction\">\n        <xs:annotation>\n            <xs:documentation xml:lang=\"en\">\n                The vulnerability status of a given version or range of versions of a product. The statuses\n                'affected' and 'unaffected' indicate that the version is affected or unaffected by the vulnerability.\n                The status 'unknown' indicates that it is unknown or unspecified whether the given version is affected.\n                There can be many reasons for an 'unknown' status, including that an investigation has not been\n                undertaken or that a vendor has not disclosed the status.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"affected\"/>\n            <xs:enumeration value=\"unaffected\"/>\n            <xs:enumeration value=\"unknown\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"formulationType\">\n        <xs:annotation>\n            <xs:documentation>\n                Describes how a component or service was manufactured or deployed. This is achieved through the use\n                of formulas, workflows, tasks, and steps, which declare the precise steps to reproduce along with the\n                observed formulas describing the steps which transpired in the manufacturing process.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"formula\" type=\"bom:formulaType\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"formulaType\">\n        <xs:annotation>\n            <xs:documentation>\n                Describes workflows and resources that captures rules and other aspects of how the associated\n                BOM component or service was formed.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"components\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Transient components that are used in tasks that constitute one or more of\n                        this formula's workflows</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"services\" type=\"bom:servicesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Transient services that are used in tasks that constitute one or more of\n                        this formula's workflows</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"workflows\" type=\"bom:workflowsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>List of workflows that can be declared to accomplish specific orchestrated goals\n                        and independently triggered.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the formula elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"workflowsType\">\n        <xs:sequence>\n            <xs:element name=\"workflow\" type=\"bom:workflowType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"workflowType\">\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier for the resource instance within its deployment context.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The description of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"resourceReferences\" type=\"bom:resourceReferencesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>References to component or service resources that are used to realize\n                        the resource instance.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"tasks\" type=\"bom:tasksType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The tasks that comprise the workflow.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"taskDependencies\" type=\"bom:dependenciesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The graph of dependencies between tasks within the workflow.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"taskTypes\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Indicates the types of activities performed by the set of workflow tasks.</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"taskType\" type=\"bom:taskTypeEnum\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"trigger\" type=\"bom:triggerType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>The trigger that initiated the task.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"steps\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The sequence of steps for the task.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"step\" type=\"bom:stepType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"inputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Represents resources and data brought into a task at runtime by executor\n                        or task commands</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"input\" type=\"bom:inputType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"outputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Represents resources and data output from a task at runtime by executor\n                        or task commands</xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"output\" type=\"bom:outputType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"timeStart\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the task started.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"timeEnd\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the task ended.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"workspaces\" type=\"bom:workspacesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A set of named filesystem or data resource shareable by workflow tasks.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"runtimeTopology\" type=\"bom:dependenciesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>A graph of the component runtime topology for workflow's instance.\n                        A description of the runtime component and service topology.  This can describe a partial or\n                        complete topology used to host and execute the task (e.g., hardware, operating systems,\n                        configurations, etc.)</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the workflow elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"resourceReferencesType\">\n        <xs:sequence>\n            <xs:element name=\"resourceReference\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"resourceReferenceType\">\n        <xs:sequence>\n            <xs:choice>\n                <xs:element name=\"ref\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            References an object by its bom-ref attribute\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:simpleType>\n                        <xs:union memberTypes=\"bom:refLinkType bom:bomLinkElementType\"/>\n                    </xs:simpleType>\n                </xs:element>\n                <xs:element name=\"externalReference\" type=\"bom:externalReference\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Reference to an externally accessible resource.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n            </xs:choice>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"tasksType\">\n        <xs:sequence>\n            <xs:element name=\"task\" type=\"bom:taskType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"taskType\">\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier for the resource instance within its deployment context.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The description of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"resourceReferences\" type=\"bom:resourceReferencesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        References to component or service resources that are used to realize the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"taskTypes\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Indicates the types of activities performed by the set of workflow tasks.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"taskType\" type=\"bom:taskTypeEnum\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"trigger\" type=\"bom:triggerType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The trigger that initiated the task.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"steps\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The sequence of steps for the task.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"step\" type=\"bom:stepType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"inputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Represents resources and data brought into a task at runtime by executor or task commands.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"input\" type=\"bom:inputType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"outputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Represents resources and data output from a task at runtime by executor or task commands\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"output\" type=\"bom:outputType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"timeStart\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the task started.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"timeEnd\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the task ended.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"workspaces\" type=\"bom:workspacesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A set of named filesystem or data resource shareable by workflow tasks.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"runtimeTopology\" type=\"bom:dependenciesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A graph of the component runtime topology for task's instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the task elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"taskTypeEnum\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"copy\">\n                <xs:annotation>\n                    <xs:documentation>A task that copies software or data used to accomplish other tasks in the workflow.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"clone\">\n                <xs:annotation>\n                    <xs:documentation>A task that clones a software repository into the workflow in order to retrieve its source code or data for use in a build step.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"lint\">\n                <xs:annotation>\n                    <xs:documentation>A task that checks source code for programmatic and stylistic errors.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"scan\">\n                <xs:annotation>\n                    <xs:documentation>A task that performs a scan against source code, or built or deployed components and services. Scans are typically run to gather or test for security vulnerabilities or policy compliance.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"merge\">\n                <xs:annotation>\n                    <xs:documentation>A task that merges changes or fixes into source code prior to a build step in the workflow.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"build\">\n                <xs:annotation>\n                    <xs:documentation>A task that builds the source code, dependencies and/or data into an artifact that can be deployed to and executed on target systems.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"test\">\n                <xs:annotation>\n                    <xs:documentation>A task that verifies the functionality of a component or service.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"deliver\">\n                <xs:annotation>\n                    <xs:documentation>A task that delivers a built artifact to one or more target repositories or storage systems.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"deploy\">\n                <xs:annotation>\n                    <xs:documentation>A task that deploys a built artifact for execution on one or more target systems.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"release\">\n                <xs:annotation>\n                    <xs:documentation>A task that releases a built, versioned artifact to a target repository or distribution system.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"clean\">\n                <xs:annotation>\n                    <xs:documentation>A task that cleans unnecessary tools, build artifacts and/or data from workflow storage.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"other\">\n                <xs:annotation>\n                    <xs:documentation>A workflow task that does not match current task type definitions.</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"workspacesType\">\n        <xs:sequence>\n            <xs:element name=\"workspace\" type=\"bom:workspaceType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"workspaceType\">\n        <xs:annotation>\n            <xs:documentation>\n                A named filesystem or data resource shareable by workflow tasks.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier for the resource instance within its deployment context.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"aliases\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The names for the workspace as referenced by other workflow tasks. Effectively, a name mapping\n                        so other tasks can use their own local name in their steps.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"alias\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The description of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"resourceReferences\" type=\"bom:resourceReferencesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        References to component or service resources that are used to realize the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"accessMode\" type=\"bom:accessModeEnum\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Describes the read-write access control for the workspace relative to the owning resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"mountPath\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A path to a location on disk where the workspace will be available to the associated task's steps.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"managedDataType\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of a domain-specific data type the workspace represents. This property is for CI/CD\n                        frameworks that are able to provide access to structured, managed data at a more granular level\n                        than a filesystem.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"volumeRequest\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Identifies the reference to the request for a specific volume type and parameters.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"volume\" type=\"bom:volumeType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Information about the actual volume instance allocated to the workspace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the workflow elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"accessModeEnum\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"read-only\"/>\n            <xs:enumeration value=\"read-write\"/>\n            <xs:enumeration value=\"read-write-once\"/>\n            <xs:enumeration value=\"write-once\"/>\n            <xs:enumeration value=\"write-only\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"volumeType\">\n        <xs:annotation>\n            <xs:documentation>\n                An identifiable, logical unit of data storage tied to a physical device.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier for the volume instance within its deployment context.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the volume instance\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"mode\" type=\"bom:volumeModeEnum\" minOccurs=\"0\" maxOccurs=\"1\" default=\"filesystem\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The mode for the volume instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"path\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The underlying path created from the actual volume.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"sizeAllocated\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The allocated size of the volume accessible to the associated workspace. This should include\n                        the scalar size as well as IEC standard unit in either decimal or binary form.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"persistent\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Indicates if the volume persists beyond the life of the resource it is associated with.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"remote\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Indicates if the volume is remotely (i.e., network) attached.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:simpleType name=\"volumeModeEnum\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"filesystem\"/>\n            <xs:enumeration value=\"block\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"stepType\">\n        <xs:annotation>\n            <xs:documentation>\n                Executes specific commands or tools in order to accomplish its owning task as part of a sequence.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A name for the step.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of the step.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"commands\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Ordered list of commands or directives for the step\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"command\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"executed\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A text representation of the executed command.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Provides the ability to document properties in a name/value store.\n                                                This provides flexibility to include data not officially supported in the standard\n                                                without having to use additional namespaces or create extensions. Property names\n                                                of interest to the general public are encouraged to be registered in the\n                                                CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                                                Formal registration is OPTIONAL.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"triggerType\">\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier for the resource instance within its deployment context.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The description of the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"resourceReferences\" type=\"bom:resourceReferencesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        References to component or service resources that are used to realize the resource instance.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"type\" type=\"bom:triggerTypeType\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The source type of event which caused the trigger to fire.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"event\" type=\"bom:eventType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The event data that caused the associated trigger to activate.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"conditions\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    A condition that was used to determine a trigger should be activated.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Describes the set of conditions which cause the trigger to activate.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"expression\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The logical expression that was evaluated that determined the trigger should be fired.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Provides the ability to document properties in a name/value store.\n                                                This provides flexibility to include data not officially supported in the standard\n                                                without having to use additional namespaces or create extensions. Property names\n                                                of interest to the general public are encouraged to be registered in the\n                                                CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                                                Formal registration is OPTIONAL.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"timeActivated\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the trigger was activated.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"inputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Represents resources and data brought into a task at runtime by executor or task commands\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"input\" type=\"bom:inputType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"outputs\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Represents resources and data output from a task at runtime by executor or task commands\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"output\" type=\"bom:outputType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\" use=\"required\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the trigger elsewhere in the BOM.\n                    Uniqueness is enforced within all elements and children of the root-level bom element.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"triggerTypeType\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"manual\"/>\n            <xs:enumeration value=\"api\"/>\n            <xs:enumeration value=\"webhook\"/>\n            <xs:enumeration value=\"scheduled\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"eventType\">\n        <xs:sequence>\n            <xs:element name=\"uid\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The unique identifier of the event.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A description of the event.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"timeReceived\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The date and time (timestamp) when the event was received.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"data\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Encoding of the raw event data.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"source\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        References the component or service that was the source of the event\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"target\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        References the component or service that was the target of the event\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"inputType\">\n        <xs:annotation>\n            <xs:documentation>\n                Type that represents various input data types and formats.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:choice>\n                <xs:element name=\"resource\" type=\"bom:resourceReferenceType\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            A reference to an independent resource provided as an input to a task by the workflow runtime.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"parameters\" type=\"bom:parametersType\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Inputs that have the form of parameters with names and values.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"environmentVars\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Inputs that have the form of parameters with names and values.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:complexType>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <!-- maxOccurs=\"unbounded\" NEEDS to be set on the sequence, not the individual elements -->\n                            <xs:choice>\n                                <xs:element name=\"environmentVar\" type=\"bom:propertyType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n                                <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n                            </xs:choice>\n                        </xs:sequence>\n                    </xs:complexType>\n                </xs:element>\n                <xs:element name=\"data\" type=\"bom:attachedTextType\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Inputs that have the form of data.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n            </xs:choice>\n            <xs:element name=\"source\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A references to the component or service that provided the input to the task\n                        (e.g., reference to a service with data flow value of inbound)\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"target\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        A reference to the component or service that received or stored the input if not the task\n                        itself (e.g., a local, named storage workspace)\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"outputType\">\n        <xs:annotation>\n            <xs:documentation>\n                Represents resources and data output from a task at runtime by executor or task commands\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:choice>\n                <xs:element name=\"resource\" type=\"bom:resourceReferenceType\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            A reference to an independent resource generated as output by the task.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"environmentVars\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Outputs that have the form of environment variables.\n                        </xs:documentation>\n                    </xs:annotation>\n                    <xs:complexType>\n                        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <!-- maxOccurs=\"unbounded\" NEEDS to be set on the sequence, not the individual elements -->\n                            <xs:choice>\n                                <xs:element name=\"environmentVar\" type=\"bom:propertyType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n                                <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n                            </xs:choice>\n                        </xs:sequence>\n                    </xs:complexType>\n                </xs:element>\n                <xs:element name=\"data\" type=\"bom:attachedTextType\" minOccurs=\"1\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Outputs that have the form of data.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n            </xs:choice>\n            <xs:element name=\"type\" type=\"bom:outputTypeEnum\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Describes the type of data output.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"source\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Component or service that generated or provided the output from the task (e.g., a build tool)\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"target\" type=\"bom:resourceReferenceType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Component or service that received the output from the task\n                        (e.g., reference to an artifactory service with data flow value of outbound)\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document properties in a name/value store.\n                        This provides flexibility to include data not officially supported in the standard\n                        without having to use additional namespaces or create extensions. Property names\n                        of interest to the general public are encouraged to be registered in the\n                        CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                        Formal registration is OPTIONAL.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:simpleType name=\"outputTypeEnum\">\n        <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"artifact\"/>\n            <xs:enumeration value=\"attestation\"/>\n            <xs:enumeration value=\"log\"/>\n            <xs:enumeration value=\"evidence\"/>\n            <xs:enumeration value=\"metrics\"/>\n            <xs:enumeration value=\"other\"/>\n        </xs:restriction>\n    </xs:simpleType>\n\n    <xs:complexType name=\"parametersType\">\n        <xs:sequence>\n            <xs:element name=\"parameter\" type=\"bom:parameterType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"parameterType\">\n        <xs:annotation>\n            <xs:documentation>\n                A representation of a functional parameter.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the parameter.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The value of the parameter.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"dataType\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The data type of the parameter.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"cryptoPropertiesType\">\n        <xs:annotation>\n            <xs:documentation>\n                Cryptographic assets have properties that uniquely define them and that make them actionable for\n                further reasoning. As an example, it makes a difference if one knows the algorithm family (e.g. AES)\n                or the specific variant or instantiation (e.g. AES-128-GCM). This is because the security level and the\n                algorithm primitive (authenticated encryption) is only defined by the definition of the algorithm variant.\n                The presence of a weak cryptographic algorithm like SHA1 vs. HMAC-SHA1 also makes a difference.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"assetType\" minOccurs=\"1\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Cryptographic assets occur in several forms. Algorithms and protocols are most commonly\n                        implemented in specialized cryptographic libraries. They may however also be 'hardcoded'\n                        in software components. Certificates and related cryptographic material like keys, tokens,\n                        secrets or passwords are other cryptographic assets to be modelled.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:simpleType>\n                    <xs:restriction base=\"xs:string\">\n                        <xs:enumeration value=\"algorithm\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Mathematical function commonly used for data encryption, authentication, and\n                                    digital signatures.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"certificate\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    An electronic document that is used to provide the identity or validate a public key.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"protocol\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    A set of rules and guidelines that govern the behavior and communication with each other.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                        <xs:enumeration value=\"related-crypto-material\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Other cryptographic assets that are related to algorithms, certificate, and protocols\n                                    such as keys and tokens.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:enumeration>\n                    </xs:restriction>\n                </xs:simpleType>\n            </xs:element>\n            <xs:element name=\"algorithmProperties\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Additional properties specific to a cryptographic algorithm.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"primitive\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Cryptographic building blocks used in higher-level cryptographic systems and\n                                    protocols. Primitives represent different cryptographic routines: deterministic\n                                    random bit generators (drbg, e.g. CTR_DRBG from NIST SP800-90A-r1), message\n                                    authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES),\n                                    streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256),\n                                    public-key encryption schemes (pke, e.g. RSA), extended output functions\n                                    (xof, e.g. SHAKE256), key derivation functions (e.g. pbkdf2), key agreement\n                                    algorithms (e.g. ECDH), key encapsulation mechanisms (e.g. ML-KEM), authenticated\n                                    encryption (ae, e.g. AES-GCM) and the combination of multiple algorithms\n                                    (combiner, e.g. SP800-56Cr2).\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"drbg\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Deterministic Random Bit Generator (DRBG) is a type of pseudorandom\n                                                number generator designed to produce a sequence of bits from an initial\n                                                seed value. DRBGs are commonly used in cryptographic applications where\n                                                reproducibility of random values is important.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"mac\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                In cryptography, a Message Authentication Code (MAC) is information\n                                                used for authenticating and integrity-checking a message.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"block-cipher\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A block cipher is a symmetric key algorithm that operates on fixed-size\n                                                blocks of data. It encrypts or decrypts the data in block units,\n                                                providing confidentiality. Block ciphers are widely used in various\n                                                cryptographic modes and protocols for secure data transmission.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"stream-cipher\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A stream cipher is a symmetric key cipher where plaintext digits are\n                                                combined with a pseudorandom cipher digit stream (keystream).\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"signature\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                In cryptography, a signature is a digital representation of a message\n                                                or data that proves its origin, identity, and integrity. Digital\n                                                signatures are generated using cryptographic algorithms and are widely\n                                                used for authentication and verification in secure communication.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"hash\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A hash function is a mathematical algorithm that takes an input\n                                                (or 'message') and produces a fixed-size string of characters, which is\n                                                typically a hash value. Hash functions are commonly used in various\n                                                cryptographic applications, including data integrity verification and\n                                                password hashing.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"pke\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Public Key Encryption (PKE) is a type of encryption that uses a pair of\n                                                public and private keys for secure communication. The public key is used\n                                                for encryption, while the private key is used for decryption. PKE is a\n                                                fundamental component of public-key cryptography.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"xof\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                An XOF is an extendable output function that can take arbitrary input\n                                                and creates a stream of output, up to a limit determined by the size of\n                                                the internal state of the hash function that underlies the XOF.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"kdf\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A Key Derivation Function (KDF) derives key material from another source\n                                                of entropy while preserving the entropy of the input.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"key-agree\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                In cryptography, a key-agreement is a protocol whereby two or more\n                                                parties agree on a cryptographic key in such a way that both influence\n                                                the outcome.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"kem\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A Key Encapsulation Mechanism (KEM) algorithm is a mechanism for\n                                                transporting random keying material to a recipient using the recipient's\n                                                public key.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ae\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Authenticated Encryption (AE) is a cryptographic process that provides\n                                                both confidentiality and data integrity. It ensures that the encrypted\n                                                data has not been tampered with and comes from a legitimate source.\n                                                AE is commonly used in secure communication protocols.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"combiner\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A combiner aggregates many candidates for a cryptographic primitive and\n                                                generates a new candidate for the same primitive.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"other\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Another primitive type.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"unknown\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The primitive is not known.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"parameterSetIdentifier\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    An identifier for the parameter set of the cryptographic algorithm. Examples: in\n                                    AES128, '128' identifies the key length in bits, in SHA256, '256' identifies the\n                                    digest length, '128' in SHAKE128 identifies its maximum security level in bits, and\n                                    'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"curve\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The specific underlying Elliptic Curve (EC) definition employed which is an indicator\n                                    of the level of security strength, performance and complexity. Absent an\n                                    authoritative source of curve names, CycloneDX recommends use of curve names as\n                                    defined at https://neuromancer.sk/std/, the source from which can be found at\n                                    https://github.com/J08nY/std-curves.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"executionEnvironment\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The target and execution environment in which the algorithm is implemented in.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"software-plain-ram\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A software implementation running in plain unencrypted RAM.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"software-encrypted-ram\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                A software implementation running in encrypted RAM.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration><xs:enumeration value=\"software-tee\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            A software implementation running in a trusted execution environment.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:enumeration><xs:enumeration value=\"hardware\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            A hardware implementation.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:enumeration><xs:enumeration value=\"other\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            Another implementation environment.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:enumeration><xs:enumeration value=\"unknown\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            The execution environment is not known.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"implementationPlatform\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The target platform for which the algorithm is implemented. The implementation can\n                                    be 'generic', running on any platform or for a specific platform.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"generic\"/>\n                                    <xs:enumeration value=\"x86_32\"/>\n                                    <xs:enumeration value=\"x86_64\"/>\n                                    <xs:enumeration value=\"armv7-a\"/>\n                                    <xs:enumeration value=\"armv7-m\"/>\n                                    <xs:enumeration value=\"armv8-a\"/>\n                                    <xs:enumeration value=\"armv8-m\"/>\n                                    <xs:enumeration value=\"armv9-a\"/>\n                                    <xs:enumeration value=\"armv9-m\"/>\n                                    <xs:enumeration value=\"s390x\"/>\n                                    <xs:enumeration value=\"ppc64\"/>\n                                    <xs:enumeration value=\"ppc64le\"/>\n                                    <xs:enumeration value=\"other\"/>\n                                    <xs:enumeration value=\"unknown\"/>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"certificationLevel\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The certification that the implementation of the cryptographic algorithm has\n                                    received, if any. Certifications include revisions and levels of FIPS 140 or\n                                    Common Criteria of different Extended Assurance Levels (CC-EAL).\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"none\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                No certification obtained\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-1-l1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-1 Level 1\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-1-l2\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-1 Level 2\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-1-l3\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-1 Level 3\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-1-l4\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-1 Level 4\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-2-l1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-2 Level 1\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-2-l2\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-2 Level 2\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-2-l3\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-2 Level 3\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-2-l4\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-2 Level 4\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-3-l1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-3 Level 1\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-3-l2\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-3 Level 2\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-3-l3\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-3 Level 3\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"fips140-3-l4\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                FIPS 140-3 Level 4\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 1\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal1+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 1 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal2\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 2\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal2+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 2 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal3\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 3\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal3+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 3 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal4\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 4\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal4+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 4 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal5\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 5\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal5+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 5 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal6\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 6\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal6+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 6 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal7\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 7\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cc-eal7+\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Common Criteria - Evaluation Assurance Level 7 (Augmented)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"other\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Another certification\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"unknown\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The certification level is not known\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"mode\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The mode of operation in which the cryptographic algorithm (block cipher) is used.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"cbc\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Cipher block chaining\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ecb\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Electronic codebook\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ccm\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Counter with cipher block chaining message authentication code\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"gcm\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Galois/counter\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"cfb\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Cipher feedback\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ofb\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Output feedback\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ctr\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Counter\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"other\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Another mode of operation\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"unknown\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The mode of operation is not known\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"padding\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The padding scheme that is used for the cryptographic algorithm.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"pkcs5\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Password-Based Cryptography Specification #5\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"pkcs7\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Public Key Cryptography Standard: Cryptographic Message Syntax\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"pkcs1v15\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Public Key Cryptography Standard: RSA Cryptography v1.5\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"oaep\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Optimal asymmetric encryption padding\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"raw\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Raw\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"other\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Another padding scheme\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"unknown\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The padding scheme is not known\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"cryptoFunctions\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The cryptographic functions implemented by the cryptographic algorithm.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"cryptoFunction\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:simpleType>\n                                            <xs:restriction base=\"xs:string\">\n                                                <xs:enumeration value=\"generate\"/>\n                                                <xs:enumeration value=\"keygen\"/>\n                                                <xs:enumeration value=\"encrypt\"/>\n                                                <xs:enumeration value=\"decrypt\"/>\n                                                <xs:enumeration value=\"digest\"/>\n                                                <xs:enumeration value=\"tag\"/>\n                                                <xs:enumeration value=\"keyderive\"/>\n                                                <xs:enumeration value=\"sign\"/>\n                                                <xs:enumeration value=\"verify\"/>\n                                                <xs:enumeration value=\"encapsulate\"/>\n                                                <xs:enumeration value=\"decapsulate\"/>\n                                                <xs:enumeration value=\"other\"/>\n                                                <xs:enumeration value=\"unknown\"/>\n                                            </xs:restriction>\n                                        </xs:simpleType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"classicalSecurityLevel\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The classical security level that a cryptographic algorithm provides (in bits).\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:integer\">\n                                    <xs:minInclusive value=\"0\"/>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"nistQuantumSecurityLevel\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The NIST security strength category as defined in\n                                    https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria).\n                                    A value of 0 indicates that none of the categories are met.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:integer\">\n                                    <xs:minInclusive value=\"0\"/>\n                                    <xs:maxInclusive value=\"6\"/>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"certificateProperties\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Properties for cryptographic assets of asset type 'certificate'\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"subjectName\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The subject name for the certificate\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"issuerName\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The issuer name for the certificate\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"notValidBefore\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time according to ISO-8601 standard from which the certificate is valid\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"notValidAfter\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time according to ISO-8601 standard from which the certificate is not valid anymore\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"signatureAlgorithmRef\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The bom-ref to signature algorithm used by the certificate\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"subjectPublicKeyRef\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The bom-ref to the public key of the subject\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"certificateFormat\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The format of the certificate. Examples include X.509, PEM, DER, and CVC\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"certificateExtension\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The file extension of the certificate. Examples include crt, pem, cer, der, and p12.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"relatedCryptoMaterialProperties\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Properties for cryptographic assets of asset type 'relatedCryptoMaterial'\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"type\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The type for the related cryptographic material\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"private-key\"/>\n                                    <xs:enumeration value=\"public-key\"/>\n                                    <xs:enumeration value=\"secret-key\"/>\n                                    <xs:enumeration value=\"key\"/>\n                                    <xs:enumeration value=\"ciphertext\"/>\n                                    <xs:enumeration value=\"signature\"/>\n                                    <xs:enumeration value=\"digest\"/>\n                                    <xs:enumeration value=\"initialization-vector\"/>\n                                    <xs:enumeration value=\"nonce\"/>\n                                    <xs:enumeration value=\"seed\"/>\n                                    <xs:enumeration value=\"salt\"/>\n                                    <xs:enumeration value=\"shared-secret\"/>\n                                    <xs:enumeration value=\"tag\"/>\n                                    <xs:enumeration value=\"additional-data\"/>\n                                    <xs:enumeration value=\"password\"/>\n                                    <xs:enumeration value=\"credential\"/>\n                                    <xs:enumeration value=\"token\"/>\n                                    <xs:enumeration value=\"other\"/>\n                                    <xs:enumeration value=\"unknown\"/>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The optional unique identifier for the related cryptographic material.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"state\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The key state as defined by NIST SP 800-57.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"pre-activation\"/>\n                                    <xs:enumeration value=\"active\"/>\n                                    <xs:enumeration value=\"suspended\"/>\n                                    <xs:enumeration value=\"deactivated\"/>\n                                    <xs:enumeration value=\"compromised\"/>\n                                    <xs:enumeration value=\"destroyed\"/>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"algorithmRef\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The bom-ref to the algorithm used to generate the related cryptographic material.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"creationDate\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time (timestamp) when the related cryptographic material was created.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"activationDate\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time (timestamp) when the related cryptographic material was activated.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"updateDate\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time (timestamp) when the related cryptographic material was updated.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"expirationDate\" type=\"xs:dateTime\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The date and time (timestamp) when the related cryptographic material expires.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"value\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The associated value of the cryptographic material.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"size\" type=\"xs:integer\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The size of the cryptographic asset (in bits).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"format\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The format of the related cryptographic material (e.g. P8, PEM, DER).\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"securedBy\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The mechanism by which the cryptographic asset is secured by.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"mechanism\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Specifies the mechanism by which the cryptographic asset is secured by.\n                                                Examples include HSM, TPM, XGX, Software, and None.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"algorithmRef\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The bom-ref to the algorithm.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"protocolProperties\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Properties specific to cryptographic assets of type: 'protocol'.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"type\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The concrete protocol type.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:simpleType>\n                                <xs:restriction base=\"xs:string\">\n                                    <xs:enumeration value=\"tls\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Transport Layer Security\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ssh\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Secure Shell\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ipsec\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Internet Protocol Security\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"ike\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Internet Key Exchange\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"sstp\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Secure Socket Tunneling Protocol\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"wpa\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Wi-Fi Protected Access\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"other\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Another protocol type\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                    <xs:enumeration value=\"unknown\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The protocol type is not known\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:enumeration>\n                                </xs:restriction>\n                            </xs:simpleType>\n                        </xs:element>\n                        <xs:element name=\"version\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The version of the protocol. Examples include 1.0, 1.2, and 1.99.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"cipherSuites\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    A list of cipher suites related to the protocol.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"cipherSuite\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            A common name for the cipher suite. For example: TLS_DHE_RSA_WITH_AES_128_CCM\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"algorithms\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            A list of algorithms related to the cipher suite.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"algorithm\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The bom-ref to algorithm cryptographic asset.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"identifiers\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            A list of common identifiers for the cipher suite.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"identifier\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        Cipher suite identifier. Examples include 0xC0 and 0x9E.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"ikev2TransformTypes\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2,\n                                    and additional properties.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"encr\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Transform Type 1: encryption algorithms\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"prf\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Transform Type 2: pseudorandom functions\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"integ\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Transform Type 3: integrity algorithms\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"ke\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"esn\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Specifies if an Extended Sequence Number (ESN) is used.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"auth\" type=\"bom:refType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                IKEv2 Authentication method\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"oid\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The object identifier (OID) of the cryptographic asset.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"declarationsType\">\n        <xs:sequence>\n            <xs:element name=\"assessors\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of assessors evaluating claims and determining conformance to requirements and confidence in that assessment.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"assessor\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The assessor who evaluates claims and determines conformance to requirements and confidence in that assessment.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"thirdParty\" type=\"xs:boolean\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The boolean indicating if the assessor is outside the organization generating claims. A value of false indicates a self assessor.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The entity issuing the assessment.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the object elsewhere in the BOM.\n                                            Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"attestations\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of attestations asserted by an assessor that maps requirements to claims.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"attestation\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    An attestation asserted by an assessor that maps requirements to claims.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"summary\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The short description explaining the main points of the attestation.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"assessor\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The `bom-ref` to the assessor asserting the attestation.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"map\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The grouping of requirements to claims and the attestors declared conformance and confidence thereof.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"requirement\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The `bom-ref` to the requirement being attested to.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"claims\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The list of `bom-ref` to the claims being attested to.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"claim\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The `bom-ref` to the claim being attested to.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"counterClaims\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The list of `bom-ref` to the counter claims being attested to.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"counterClaim\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The `bom-ref` to the counter claim being attested to.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"conformance\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The conformance of the claim meeting a requirement.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"score\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The conformance of the claim between and inclusive of 0 and 1, where 1 is 100% conformance.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                                <xs:simpleType>\n                                                                    <xs:restriction base=\"xs:decimal\">\n                                                                        <xs:minInclusive value=\"0\"/>\n                                                                        <xs:maxInclusive value=\"1\"/>\n                                                                    </xs:restriction>\n                                                                </xs:simpleType>\n                                                            </xs:element>\n                                                            <xs:element name=\"rationale\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The rationale for the score of conformance.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                            <xs:element name=\"mitigationStrategies\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The list of  `bom-ref` to the evidence provided describing the\n                                                                        mitigation strategies. Each mitigation strategy should include an\n                                                                        explanation of how any weaknesses in the evidence will be mitigated.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                                <xs:complexType>\n                                                                    <xs:sequence>\n                                                                        <xs:element name=\"mitigationStrategy\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                                                    </xs:sequence>\n                                                                </xs:complexType>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"confidence\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The confidence of the claim meeting the requirement.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"score\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The confidence of the claim between and inclusive of 0 and 1, where 1 is 100% confidence.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                                <xs:simpleType>\n                                                                    <xs:restriction base=\"xs:decimal\">\n                                                                        <xs:minInclusive value=\"0\"/>\n                                                                        <xs:maxInclusive value=\"1\"/>\n                                                                    </xs:restriction>\n                                                                </xs:simpleType>\n                                                            </xs:element>\n                                                            <xs:element name=\"rationale\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>\n                                                                        The rationale for the confidence score.\n                                                                    </xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                    <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:any>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"claims\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of claims.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"claim\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"target\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The `bom-ref` to a target representing a specific system, application,\n                                                API, module, team, person, process, business unit, company, etc...\n                                                that this claim is being applied to.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"predicate\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The specific statement or assertion about the target.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"mitigationStrategies\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The list of  `bom-ref` to the evidence provided describing the\n                                                mitigation strategies. Each mitigation strategy should include an\n                                                explanation of how any weaknesses in the evidence will be mitigated.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"mitigationStrategy\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                    <xs:element name=\"reasoning\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The written explanation of why the evidence provided substantiates the claim.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"evidence\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The list of `bom-ref` to evidence that supports this claim.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"counterEvidence\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The list of `bom-ref` to counterEvidence that supports this claim.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Provides the ability to document external references related to the claim the BOM describes.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:any>\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the object elsewhere\n                                            in the BOM. Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"evidence\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of evidence\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"evidence\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The list of evidence\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"propertyName\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The reference to the property name as defined in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy/).\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The written description of what this evidence is and how it was created.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"data\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The output or analysis that supports claims.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The name of the data.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"contents\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The contents or references to the contents of the data being described.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                    <xs:complexType>\n                                                        <xs:sequence>\n                                                            <xs:element name=\"attachment\" type=\"bom:attachedTextType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>An optional way to include textual or encoded data.</xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                            <xs:element name=\"url\" type=\"xs:anyURI\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                                <xs:annotation>\n                                                                    <xs:documentation>The URL to where the data can be retrieved.</xs:documentation>\n                                                                </xs:annotation>\n                                                            </xs:element>\n                                                        </xs:sequence>\n                                                    </xs:complexType>\n                                                </xs:element>\n                                                <xs:element name=\"classification\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"sensitiveData\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            A description of any sensitive data.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"governance\" type=\"bom:dataGovernance\" minOccurs=\"0\" maxOccurs=\"1\" />\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                    <xs:element name=\"created\" type=\"xs:dateTime\" minOccurs=\"0\">\n                                        <xs:annotation>\n                                            <xs:documentation>The date and time (timestamp) when the evidence was created.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"expires\" type=\"xs:dateTime\" minOccurs=\"0\">\n                                        <xs:annotation>\n                                            <xs:documentation>The optional date and time (timestamp) when the evidence is no longer valid.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"author\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The author of the evidence.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"reviewer\" type=\"bom:organizationalContact\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>The reviewer of the evidence.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:any>\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the object elsewhere\n                                            in the BOM. Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"targets\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of targets which claims are made against.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"organizations\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The list of organizations which claims are made against.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"components\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The list of components which claims are made against.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"component\" type=\"bom:component\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:element name=\"services\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The list of services which claims are made against.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"service\" type=\"bom:service\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"affirmation\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"statement\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The brief statement affirmed by an individual regarding all declarations.\n                                    This could be an affirmation of acceptance by a third-party auditor or receiving\n                                    individual of a file. For example: \"I certify, to the best of my knowledge, that all information is correct.\"\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:element>\n                        <xs:element name=\"signatories\" minOccurs=\"0\" maxOccurs=\"1\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    The list of signatories authorized on behalf of an organization to assert validity of this document.\n                                </xs:documentation>\n                            </xs:annotation>\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"signatory\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The signatory's name.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"role\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The signatory's role within an organization.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"organization\" type=\"bom:organizationalEntity\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            The signatory's organization.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:element name=\"externalReference\" type=\"bom:externalReference\" minOccurs=\"0\" maxOccurs=\"1\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            An External reference provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:element>\n                                                <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                                    <xs:annotation>\n                                                        <xs:documentation>\n                                                            Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                                        </xs:documentation>\n                                                    </xs:annotation>\n                                                </xs:any>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                            </xs:complexType>\n                        </xs:element>\n                        <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:annotation>\n                                <xs:documentation>\n                                    Allows any undeclared elements as long as the elements are placed in a different namespace.\n                                </xs:documentation>\n                            </xs:annotation>\n                        </xs:any>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"definitionsType\">\n        <xs:annotation>\n            <xs:documentation>\n                A collection of reusable objects that are defined and may be used elsewhere in the BOM.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"standards\" type=\"bom:standardsType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:complexType name=\"standardsType\">\n        <xs:annotation>\n            <xs:documentation>\n                The list of standards which may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"standard\" type=\"bom:standard\"/>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"standard\">\n        <xs:annotation>\n            <xs:documentation>\n                A standard may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.\n            </xs:documentation>\n        </xs:annotation>\n        <xs:sequence>\n            <xs:element name=\"name\" type=\"xs:string\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The name of the standard. This will often be a shortened, single name of the standard.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"version\" type=\"xs:string\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The version of the standard.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"description\" type=\"xs:string\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The description of the standard.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"owner\" type=\"xs:string\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The owner of the standard, often the entity responsible for its release.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:element name=\"requirements\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of requirements comprising the standard.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"requirement\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"identifier\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The unique identifier used in the standard to identify a specific requirement. This should match what is in the standard and should not be the requirements bom-ref.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"title\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The title of the requirement.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"text\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The textual content of the requirement.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"descriptions\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The supplemental text that provides additional guidance or context to the requirement, but is not directly part of the requirement.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                    <xs:element name=\"openCre\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The Common Requirements Enumeration (CRE) identifier(s). CRE is a structured and standardized framework for uniting security standards and guidelines. CRE links each section of a resource to a shared topic identifier (a Common Requirement). Through this shared topic link, all resources map to each other. Use of CRE promotes clear and unambiguous communication among stakeholders.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:simpleType>\n                                            <xs:restriction base=\"xs:string\">\n                                                <xs:pattern value=\"CRE:[0-9]+-[0-9]+\"/>\n                                            </xs:restriction>\n                                        </xs:simpleType>\n                                    </xs:element>\n                                    <xs:element name=\"parent\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The optional `bom-ref` to a parent requirement. This establishes a hierarchy of requirements. Top-level requirements must not define a parent. Only child requirements should define parents.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Provides the ability to document properties in a name/value store.\n                                                This provides flexibility to include data not officially supported in the standard\n                                                without having to use additional namespaces or create extensions. Property names\n                                                of interest to the general public are encouraged to be registered in the\n                                                CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                                                Formal registration is OPTIONAL.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>Provides the ability to document external references related to the BOM or\n                                                to the project the BOM describes.</xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the object elsewhere\n                                            in the BOM. Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"levels\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>\n                        The list of levels associated with the standard. Some standards have different levels of compliance.\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:complexType>\n                    <xs:sequence>\n                        <xs:element name=\"level\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                            <xs:complexType>\n                                <xs:sequence>\n                                    <xs:element name=\"identifier\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The identifier used in the standard to identify a specific level.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"title\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The title of the level.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"description\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The description of the level.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                    </xs:element>\n                                    <xs:element name=\"requirements\" minOccurs=\"0\" maxOccurs=\"1\">\n                                        <xs:annotation>\n                                            <xs:documentation>\n                                                The list of requirement `bom-ref`s that comprise the level.\n                                            </xs:documentation>\n                                        </xs:annotation>\n                                        <xs:complexType>\n                                            <xs:sequence>\n                                                <xs:element name=\"requirement\" type=\"bom:refLinkType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n                                            </xs:sequence>\n                                        </xs:complexType>\n                                    </xs:element>\n                                </xs:sequence>\n                                <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n                                    <xs:annotation>\n                                        <xs:documentation>\n                                            An optional identifier which can be used to reference the object elsewhere\n                                            in the BOM. Every bom-ref MUST be unique within the BOM.\n                                        </xs:documentation>\n                                    </xs:annotation>\n                                </xs:attribute>\n                                <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n                                    <xs:annotation>\n                                        <xs:documentation>User-defined attributes may be used on this element as long as they\n                                            do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                                    </xs:annotation>\n                                </xs:anyAttribute>\n                            </xs:complexType>\n                        </xs:element>\n                    </xs:sequence>\n                </xs:complexType>\n            </xs:element>\n            <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Provides the ability to document external references related to the BOM or\n                        to the project the BOM describes.</xs:documentation>\n                </xs:annotation>\n            </xs:element>\n            <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                <xs:annotation>\n                    <xs:documentation>\n                        Allows any undeclared elements as long as the elements are placed in a different namespace.\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:any>\n        </xs:sequence>\n        <xs:attribute name=\"bom-ref\" type=\"bom:refType\">\n            <xs:annotation>\n                <xs:documentation>\n                    An optional identifier which can be used to reference the object elsewhere\n                    in the BOM. Every bom-ref MUST be unique within the BOM.\n                </xs:documentation>\n            </xs:annotation>\n        </xs:attribute>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\">\n            <xs:annotation>\n                <xs:documentation>User-defined attributes may be used on this element as long as they\n                    do not have the same name as an existing attribute used by the schema.</xs:documentation>\n            </xs:annotation>\n        </xs:anyAttribute>\n    </xs:complexType>\n\n    <xs:complexType name=\"tagsType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element name=\"tag\" type=\"xs:normalizedString\">\n                <xs:annotation>\n                    <xs:documentation>Textual strings that aid in discovery, search, and retrieval of the associated\n                        object. Tags often serve as a way to group or categorize similar or related objects by various\n                        attributes.\n\n                        Examples include:\n                        \"json-parser\", \"object-persistence\", \"text-to-image\", \"translation\", and \"object-detection\"\n                    </xs:documentation>\n                </xs:annotation>\n            </xs:element>\n        </xs:sequence>\n    </xs:complexType>\n\n    <xs:element name=\"bom\">\n        <xs:complexType>\n            <xs:sequence>\n                <xs:element name=\"metadata\" type=\"bom:metadata\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Provides additional information about a BOM.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"components\" type=\"bom:componentsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>A list of software and hardware components.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"services\" type=\"bom:servicesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>A list of services. This may include microservices, function-as-a-service, and other types of network or intra-process services.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"externalReferences\" type=\"bom:externalReferences\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Provides the ability to document external references related to the BOM or\n                            to the project the BOM describes.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"dependencies\" type=\"bom:dependenciesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Provides the ability to document dependency relationships.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"compositions\" type=\"bom:compositionsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"properties\" type=\"bom:propertiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Provides the ability to document properties in a name/value store.\n                            This provides flexibility to include data not officially supported in the standard\n                            without having to use additional namespaces or create extensions. Property names\n                            of interest to the general public are encouraged to be registered in the\n                            CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.\n                            Formal registration is OPTIONAL.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"vulnerabilities\" type=\"bom:vulnerabilitiesType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Vulnerabilities identified in components or services.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"annotations\" type=\"bom:annotationsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Comments made by people, organizations, or tools about any object with\n                            a bom-ref, such as components, services, vulnerabilities, or the BOM itself. Unlike\n                            inventory information, annotations may contain opinion or commentary from various\n                            stakeholders. Annotations may be inline (with inventory) or externalized via BOM-Link,\n                            and may optionally be signed.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"formulation\" type=\"bom:formulationType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>Describes how a component or service was manufactured or deployed. This is\n                            achieved through the use of formulas, workflows, tasks, and steps, which declare the precise\n                            steps to reproduce along with the observed formulas describing the steps which transpired\n                            in the manufacturing process.</xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"declarations\" type=\"bom:declarationsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            The list of declarations which describe the conformance to standards. Each declaration may\n                            include attestations, claims, and evidence.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:element name=\"definitions\" type=\"bom:definitionsType\" minOccurs=\"0\" maxOccurs=\"1\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            A collection of reusable objects that are defined and may be used elsewhere in the BOM.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:element>\n                <xs:any namespace=\"##other\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n                    <xs:annotation>\n                        <xs:documentation>\n                            Allows any undeclared elements as long as the elements are placed in a different namespace.\n                        </xs:documentation>\n                    </xs:annotation>\n                </xs:any>\n            </xs:sequence>\n            <xs:attribute name=\"version\" type=\"xs:positiveInteger\" default=\"1\">\n                <xs:annotation>\n                    <xs:documentation>Whenever an existing BOM is modified, either manually or through automated\n                        processes, the version of the BOM SHOULD be incremented by 1. When a system is presented with\n                        multiple BOMs with identical serial numbers, the system SHOULD use the most recent version of the BOM.\n                        The default version is '1'.</xs:documentation>\n                </xs:annotation>\n            </xs:attribute>\n            <xs:attribute name=\"serialNumber\" type=\"bom:urnUuid\">\n                <xs:annotation>\n                    <xs:documentation>Every BOM generated SHOULD have a unique serial number, even if the contents of\n                        the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122.\n                        Use of serial numbers are RECOMMENDED.</xs:documentation>\n                </xs:annotation>\n            </xs:attribute>\n            <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n                <xs:annotation>\n                    <xs:documentation>User-defined attributes may be used on this element as long as they\n                        do not have the same name as an existing attribute used by the schema.</xs:documentation>\n                </xs:annotation>\n            </xs:anyAttribute>\n        </xs:complexType>\n        <xs:unique name=\"bom-ref\">\n            <xs:selector xpath=\".//*\"/>\n            <xs:field xpath=\"@bom-ref\"/>\n        </xs:unique>\n    </xs:element>\n</xs:schema>"
  },
  {
    "path": "schema/cyclonedx/spdx.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://cyclonedx.org/schema/spdx.schema.json\",\n  \"$comment\": \"v1.0-3.27.0\",\n  \"type\": \"string\",\n  \"enum\": [\n    \"0BSD\",\n    \"3D-Slicer-1.0\",\n    \"AAL\",\n    \"Abstyles\",\n    \"AdaCore-doc\",\n    \"Adobe-2006\",\n    \"Adobe-Display-PostScript\",\n    \"Adobe-Glyph\",\n    \"Adobe-Utopia\",\n    \"ADSL\",\n    \"AFL-1.1\",\n    \"AFL-1.2\",\n    \"AFL-2.0\",\n    \"AFL-2.1\",\n    \"AFL-3.0\",\n    \"Afmparse\",\n    \"AGPL-1.0\",\n    \"AGPL-1.0-only\",\n    \"AGPL-1.0-or-later\",\n    \"AGPL-3.0\",\n    \"AGPL-3.0-only\",\n    \"AGPL-3.0-or-later\",\n    \"Aladdin\",\n    \"AMD-newlib\",\n    \"AMDPLPA\",\n    \"AML\",\n    \"AML-glslang\",\n    \"AMPAS\",\n    \"ANTLR-PD\",\n    \"ANTLR-PD-fallback\",\n    \"any-OSI\",\n    \"any-OSI-perl-modules\",\n    \"Apache-1.0\",\n    \"Apache-1.1\",\n    \"Apache-2.0\",\n    \"APAFML\",\n    \"APL-1.0\",\n    \"App-s2p\",\n    \"APSL-1.0\",\n    \"APSL-1.1\",\n    \"APSL-1.2\",\n    \"APSL-2.0\",\n    \"Arphic-1999\",\n    \"Artistic-1.0\",\n    \"Artistic-1.0-cl8\",\n    \"Artistic-1.0-Perl\",\n    \"Artistic-2.0\",\n    \"Artistic-dist\",\n    \"Aspell-RU\",\n    \"ASWF-Digital-Assets-1.0\",\n    \"ASWF-Digital-Assets-1.1\",\n    \"Baekmuk\",\n    \"Bahyph\",\n    \"Barr\",\n    \"bcrypt-Solar-Designer\",\n    \"Beerware\",\n    \"Bitstream-Charter\",\n    \"Bitstream-Vera\",\n    \"BitTorrent-1.0\",\n    \"BitTorrent-1.1\",\n    \"blessing\",\n    \"BlueOak-1.0.0\",\n    \"Boehm-GC\",\n    \"Boehm-GC-without-fee\",\n    \"Borceux\",\n    \"Brian-Gladman-2-Clause\",\n    \"Brian-Gladman-3-Clause\",\n    \"BSD-1-Clause\",\n    \"BSD-2-Clause\",\n    \"BSD-2-Clause-Darwin\",\n    \"BSD-2-Clause-first-lines\",\n    \"BSD-2-Clause-FreeBSD\",\n    \"BSD-2-Clause-NetBSD\",\n    \"BSD-2-Clause-Patent\",\n    \"BSD-2-Clause-pkgconf-disclaimer\",\n    \"BSD-2-Clause-Views\",\n    \"BSD-3-Clause\",\n    \"BSD-3-Clause-acpica\",\n    \"BSD-3-Clause-Attribution\",\n    \"BSD-3-Clause-Clear\",\n    \"BSD-3-Clause-flex\",\n    \"BSD-3-Clause-HP\",\n    \"BSD-3-Clause-LBNL\",\n    \"BSD-3-Clause-Modification\",\n    \"BSD-3-Clause-No-Military-License\",\n    \"BSD-3-Clause-No-Nuclear-License\",\n    \"BSD-3-Clause-No-Nuclear-License-2014\",\n    \"BSD-3-Clause-No-Nuclear-Warranty\",\n    \"BSD-3-Clause-Open-MPI\",\n    \"BSD-3-Clause-Sun\",\n    \"BSD-4-Clause\",\n    \"BSD-4-Clause-Shortened\",\n    \"BSD-4-Clause-UC\",\n    \"BSD-4.3RENO\",\n    \"BSD-4.3TAHOE\",\n    \"BSD-Advertising-Acknowledgement\",\n    \"BSD-Attribution-HPND-disclaimer\",\n    \"BSD-Inferno-Nettverk\",\n    \"BSD-Protection\",\n    \"BSD-Source-beginning-file\",\n    \"BSD-Source-Code\",\n    \"BSD-Systemics\",\n    \"BSD-Systemics-W3Works\",\n    \"BSL-1.0\",\n    \"BUSL-1.1\",\n    \"bzip2-1.0.5\",\n    \"bzip2-1.0.6\",\n    \"C-UDA-1.0\",\n    \"CAL-1.0\",\n    \"CAL-1.0-Combined-Work-Exception\",\n    \"Caldera\",\n    \"Caldera-no-preamble\",\n    \"Catharon\",\n    \"CATOSL-1.1\",\n    \"CC-BY-1.0\",\n    \"CC-BY-2.0\",\n    \"CC-BY-2.5\",\n    \"CC-BY-2.5-AU\",\n    \"CC-BY-3.0\",\n    \"CC-BY-3.0-AT\",\n    \"CC-BY-3.0-AU\",\n    \"CC-BY-3.0-DE\",\n    \"CC-BY-3.0-IGO\",\n    \"CC-BY-3.0-NL\",\n    \"CC-BY-3.0-US\",\n    \"CC-BY-4.0\",\n    \"CC-BY-NC-1.0\",\n    \"CC-BY-NC-2.0\",\n    \"CC-BY-NC-2.5\",\n    \"CC-BY-NC-3.0\",\n    \"CC-BY-NC-3.0-DE\",\n    \"CC-BY-NC-4.0\",\n    \"CC-BY-NC-ND-1.0\",\n    \"CC-BY-NC-ND-2.0\",\n    \"CC-BY-NC-ND-2.5\",\n    \"CC-BY-NC-ND-3.0\",\n    \"CC-BY-NC-ND-3.0-DE\",\n    \"CC-BY-NC-ND-3.0-IGO\",\n    \"CC-BY-NC-ND-4.0\",\n    \"CC-BY-NC-SA-1.0\",\n    \"CC-BY-NC-SA-2.0\",\n    \"CC-BY-NC-SA-2.0-DE\",\n    \"CC-BY-NC-SA-2.0-FR\",\n    \"CC-BY-NC-SA-2.0-UK\",\n    \"CC-BY-NC-SA-2.5\",\n    \"CC-BY-NC-SA-3.0\",\n    \"CC-BY-NC-SA-3.0-DE\",\n    \"CC-BY-NC-SA-3.0-IGO\",\n    \"CC-BY-NC-SA-4.0\",\n    \"CC-BY-ND-1.0\",\n    \"CC-BY-ND-2.0\",\n    \"CC-BY-ND-2.5\",\n    \"CC-BY-ND-3.0\",\n    \"CC-BY-ND-3.0-DE\",\n    \"CC-BY-ND-4.0\",\n    \"CC-BY-SA-1.0\",\n    \"CC-BY-SA-2.0\",\n    \"CC-BY-SA-2.0-UK\",\n    \"CC-BY-SA-2.1-JP\",\n    \"CC-BY-SA-2.5\",\n    \"CC-BY-SA-3.0\",\n    \"CC-BY-SA-3.0-AT\",\n    \"CC-BY-SA-3.0-DE\",\n    \"CC-BY-SA-3.0-IGO\",\n    \"CC-BY-SA-4.0\",\n    \"CC-PDDC\",\n    \"CC-PDM-1.0\",\n    \"CC-SA-1.0\",\n    \"CC0-1.0\",\n    \"CDDL-1.0\",\n    \"CDDL-1.1\",\n    \"CDL-1.0\",\n    \"CDLA-Permissive-1.0\",\n    \"CDLA-Permissive-2.0\",\n    \"CDLA-Sharing-1.0\",\n    \"CECILL-1.0\",\n    \"CECILL-1.1\",\n    \"CECILL-2.0\",\n    \"CECILL-2.1\",\n    \"CECILL-B\",\n    \"CECILL-C\",\n    \"CERN-OHL-1.1\",\n    \"CERN-OHL-1.2\",\n    \"CERN-OHL-P-2.0\",\n    \"CERN-OHL-S-2.0\",\n    \"CERN-OHL-W-2.0\",\n    \"CFITSIO\",\n    \"check-cvs\",\n    \"checkmk\",\n    \"ClArtistic\",\n    \"Clips\",\n    \"CMU-Mach\",\n    \"CMU-Mach-nodoc\",\n    \"CNRI-Jython\",\n    \"CNRI-Python\",\n    \"CNRI-Python-GPL-Compatible\",\n    \"COIL-1.0\",\n    \"Community-Spec-1.0\",\n    \"Condor-1.1\",\n    \"copyleft-next-0.3.0\",\n    \"copyleft-next-0.3.1\",\n    \"Cornell-Lossless-JPEG\",\n    \"CPAL-1.0\",\n    \"CPL-1.0\",\n    \"CPOL-1.02\",\n    \"Cronyx\",\n    \"Crossword\",\n    \"CryptoSwift\",\n    \"CrystalStacker\",\n    \"CUA-OPL-1.0\",\n    \"Cube\",\n    \"curl\",\n    \"cve-tou\",\n    \"D-FSL-1.0\",\n    \"DEC-3-Clause\",\n    \"diffmark\",\n    \"DL-DE-BY-2.0\",\n    \"DL-DE-ZERO-2.0\",\n    \"DOC\",\n    \"DocBook-DTD\",\n    \"DocBook-Schema\",\n    \"DocBook-Stylesheet\",\n    \"DocBook-XML\",\n    \"Dotseqn\",\n    \"DRL-1.0\",\n    \"DRL-1.1\",\n    \"DSDP\",\n    \"dtoa\",\n    \"dvipdfm\",\n    \"ECL-1.0\",\n    \"ECL-2.0\",\n    \"eCos-2.0\",\n    \"EFL-1.0\",\n    \"EFL-2.0\",\n    \"eGenix\",\n    \"Elastic-2.0\",\n    \"Entessa\",\n    \"EPICS\",\n    \"EPL-1.0\",\n    \"EPL-2.0\",\n    \"ErlPL-1.1\",\n    \"etalab-2.0\",\n    \"EUDatagrid\",\n    \"EUPL-1.0\",\n    \"EUPL-1.1\",\n    \"EUPL-1.2\",\n    \"Eurosym\",\n    \"Fair\",\n    \"FBM\",\n    \"FDK-AAC\",\n    \"Ferguson-Twofish\",\n    \"Frameworx-1.0\",\n    \"FreeBSD-DOC\",\n    \"FreeImage\",\n    \"FSFAP\",\n    \"FSFAP-no-warranty-disclaimer\",\n    \"FSFUL\",\n    \"FSFULLR\",\n    \"FSFULLRSD\",\n    \"FSFULLRWD\",\n    \"FSL-1.1-ALv2\",\n    \"FSL-1.1-MIT\",\n    \"FTL\",\n    \"Furuseth\",\n    \"fwlw\",\n    \"Game-Programming-Gems\",\n    \"GCR-docs\",\n    \"GD\",\n    \"generic-xts\",\n    \"GFDL-1.1\",\n    \"GFDL-1.1-invariants-only\",\n    \"GFDL-1.1-invariants-or-later\",\n    \"GFDL-1.1-no-invariants-only\",\n    \"GFDL-1.1-no-invariants-or-later\",\n    \"GFDL-1.1-only\",\n    \"GFDL-1.1-or-later\",\n    \"GFDL-1.2\",\n    \"GFDL-1.2-invariants-only\",\n    \"GFDL-1.2-invariants-or-later\",\n    \"GFDL-1.2-no-invariants-only\",\n    \"GFDL-1.2-no-invariants-or-later\",\n    \"GFDL-1.2-only\",\n    \"GFDL-1.2-or-later\",\n    \"GFDL-1.3\",\n    \"GFDL-1.3-invariants-only\",\n    \"GFDL-1.3-invariants-or-later\",\n    \"GFDL-1.3-no-invariants-only\",\n    \"GFDL-1.3-no-invariants-or-later\",\n    \"GFDL-1.3-only\",\n    \"GFDL-1.3-or-later\",\n    \"Giftware\",\n    \"GL2PS\",\n    \"Glide\",\n    \"Glulxe\",\n    \"GLWTPL\",\n    \"gnuplot\",\n    \"GPL-1.0\",\n    \"GPL-1.0+\",\n    \"GPL-1.0-only\",\n    \"GPL-1.0-or-later\",\n    \"GPL-2.0\",\n    \"GPL-2.0+\",\n    \"GPL-2.0-only\",\n    \"GPL-2.0-or-later\",\n    \"GPL-2.0-with-autoconf-exception\",\n    \"GPL-2.0-with-bison-exception\",\n    \"GPL-2.0-with-classpath-exception\",\n    \"GPL-2.0-with-font-exception\",\n    \"GPL-2.0-with-GCC-exception\",\n    \"GPL-3.0\",\n    \"GPL-3.0+\",\n    \"GPL-3.0-only\",\n    \"GPL-3.0-or-later\",\n    \"GPL-3.0-with-autoconf-exception\",\n    \"GPL-3.0-with-GCC-exception\",\n    \"Graphics-Gems\",\n    \"gSOAP-1.3b\",\n    \"gtkbook\",\n    \"Gutmann\",\n    \"HaskellReport\",\n    \"HDF5\",\n    \"hdparm\",\n    \"HIDAPI\",\n    \"Hippocratic-2.1\",\n    \"HP-1986\",\n    \"HP-1989\",\n    \"HPND\",\n    \"HPND-DEC\",\n    \"HPND-doc\",\n    \"HPND-doc-sell\",\n    \"HPND-export-US\",\n    \"HPND-export-US-acknowledgement\",\n    \"HPND-export-US-modify\",\n    \"HPND-export2-US\",\n    \"HPND-Fenneberg-Livingston\",\n    \"HPND-INRIA-IMAG\",\n    \"HPND-Intel\",\n    \"HPND-Kevlin-Henney\",\n    \"HPND-Markus-Kuhn\",\n    \"HPND-merchantability-variant\",\n    \"HPND-MIT-disclaimer\",\n    \"HPND-Netrek\",\n    \"HPND-Pbmplus\",\n    \"HPND-sell-MIT-disclaimer-xserver\",\n    \"HPND-sell-regexpr\",\n    \"HPND-sell-variant\",\n    \"HPND-sell-variant-MIT-disclaimer\",\n    \"HPND-sell-variant-MIT-disclaimer-rev\",\n    \"HPND-UC\",\n    \"HPND-UC-export-US\",\n    \"HTMLTIDY\",\n    \"IBM-pibs\",\n    \"ICU\",\n    \"IEC-Code-Components-EULA\",\n    \"IJG\",\n    \"IJG-short\",\n    \"ImageMagick\",\n    \"iMatix\",\n    \"Imlib2\",\n    \"Info-ZIP\",\n    \"Inner-Net-2.0\",\n    \"InnoSetup\",\n    \"Intel\",\n    \"Intel-ACPI\",\n    \"Interbase-1.0\",\n    \"IPA\",\n    \"IPL-1.0\",\n    \"ISC\",\n    \"ISC-Veillard\",\n    \"Jam\",\n    \"JasPer-2.0\",\n    \"jove\",\n    \"JPL-image\",\n    \"JPNIC\",\n    \"JSON\",\n    \"Kastrup\",\n    \"Kazlib\",\n    \"Knuth-CTAN\",\n    \"LAL-1.2\",\n    \"LAL-1.3\",\n    \"Latex2e\",\n    \"Latex2e-translated-notice\",\n    \"Leptonica\",\n    \"LGPL-2.0\",\n    \"LGPL-2.0+\",\n    \"LGPL-2.0-only\",\n    \"LGPL-2.0-or-later\",\n    \"LGPL-2.1\",\n    \"LGPL-2.1+\",\n    \"LGPL-2.1-only\",\n    \"LGPL-2.1-or-later\",\n    \"LGPL-3.0\",\n    \"LGPL-3.0+\",\n    \"LGPL-3.0-only\",\n    \"LGPL-3.0-or-later\",\n    \"LGPLLR\",\n    \"Libpng\",\n    \"libpng-1.6.35\",\n    \"libpng-2.0\",\n    \"libselinux-1.0\",\n    \"libtiff\",\n    \"libutil-David-Nugent\",\n    \"LiLiQ-P-1.1\",\n    \"LiLiQ-R-1.1\",\n    \"LiLiQ-Rplus-1.1\",\n    \"Linux-man-pages-1-para\",\n    \"Linux-man-pages-copyleft\",\n    \"Linux-man-pages-copyleft-2-para\",\n    \"Linux-man-pages-copyleft-var\",\n    \"Linux-OpenIB\",\n    \"LOOP\",\n    \"LPD-document\",\n    \"LPL-1.0\",\n    \"LPL-1.02\",\n    \"LPPL-1.0\",\n    \"LPPL-1.1\",\n    \"LPPL-1.2\",\n    \"LPPL-1.3a\",\n    \"LPPL-1.3c\",\n    \"lsof\",\n    \"Lucida-Bitmap-Fonts\",\n    \"LZMA-SDK-9.11-to-9.20\",\n    \"LZMA-SDK-9.22\",\n    \"Mackerras-3-Clause\",\n    \"Mackerras-3-Clause-acknowledgment\",\n    \"magaz\",\n    \"mailprio\",\n    \"MakeIndex\",\n    \"man2html\",\n    \"Martin-Birgmeier\",\n    \"McPhee-slideshow\",\n    \"metamail\",\n    \"Minpack\",\n    \"MIPS\",\n    \"MirOS\",\n    \"MIT\",\n    \"MIT-0\",\n    \"MIT-advertising\",\n    \"MIT-Click\",\n    \"MIT-CMU\",\n    \"MIT-enna\",\n    \"MIT-feh\",\n    \"MIT-Festival\",\n    \"MIT-Khronos-old\",\n    \"MIT-Modern-Variant\",\n    \"MIT-open-group\",\n    \"MIT-testregex\",\n    \"MIT-Wu\",\n    \"MITNFA\",\n    \"MMIXware\",\n    \"Motosoto\",\n    \"MPEG-SSG\",\n    \"mpi-permissive\",\n    \"mpich2\",\n    \"MPL-1.0\",\n    \"MPL-1.1\",\n    \"MPL-2.0\",\n    \"MPL-2.0-no-copyleft-exception\",\n    \"mplus\",\n    \"MS-LPL\",\n    \"MS-PL\",\n    \"MS-RL\",\n    \"MTLL\",\n    \"MulanPSL-1.0\",\n    \"MulanPSL-2.0\",\n    \"Multics\",\n    \"Mup\",\n    \"NAIST-2003\",\n    \"NASA-1.3\",\n    \"Naumen\",\n    \"NBPL-1.0\",\n    \"NCBI-PD\",\n    \"NCGL-UK-2.0\",\n    \"NCL\",\n    \"NCSA\",\n    \"Net-SNMP\",\n    \"NetCDF\",\n    \"Newsletr\",\n    \"NGPL\",\n    \"ngrep\",\n    \"NICTA-1.0\",\n    \"NIST-PD\",\n    \"NIST-PD-fallback\",\n    \"NIST-Software\",\n    \"NLOD-1.0\",\n    \"NLOD-2.0\",\n    \"NLPL\",\n    \"Nokia\",\n    \"NOSL\",\n    \"Noweb\",\n    \"NPL-1.0\",\n    \"NPL-1.1\",\n    \"NPOSL-3.0\",\n    \"NRL\",\n    \"NTIA-PD\",\n    \"NTP\",\n    \"NTP-0\",\n    \"Nunit\",\n    \"O-UDA-1.0\",\n    \"OAR\",\n    \"OCCT-PL\",\n    \"OCLC-2.0\",\n    \"ODbL-1.0\",\n    \"ODC-By-1.0\",\n    \"OFFIS\",\n    \"OFL-1.0\",\n    \"OFL-1.0-no-RFN\",\n    \"OFL-1.0-RFN\",\n    \"OFL-1.1\",\n    \"OFL-1.1-no-RFN\",\n    \"OFL-1.1-RFN\",\n    \"OGC-1.0\",\n    \"OGDL-Taiwan-1.0\",\n    \"OGL-Canada-2.0\",\n    \"OGL-UK-1.0\",\n    \"OGL-UK-2.0\",\n    \"OGL-UK-3.0\",\n    \"OGTSL\",\n    \"OLDAP-1.1\",\n    \"OLDAP-1.2\",\n    \"OLDAP-1.3\",\n    \"OLDAP-1.4\",\n    \"OLDAP-2.0\",\n    \"OLDAP-2.0.1\",\n    \"OLDAP-2.1\",\n    \"OLDAP-2.2\",\n    \"OLDAP-2.2.1\",\n    \"OLDAP-2.2.2\",\n    \"OLDAP-2.3\",\n    \"OLDAP-2.4\",\n    \"OLDAP-2.5\",\n    \"OLDAP-2.6\",\n    \"OLDAP-2.7\",\n    \"OLDAP-2.8\",\n    \"OLFL-1.3\",\n    \"OML\",\n    \"OpenPBS-2.3\",\n    \"OpenSSL\",\n    \"OpenSSL-standalone\",\n    \"OpenVision\",\n    \"OPL-1.0\",\n    \"OPL-UK-3.0\",\n    \"OPUBL-1.0\",\n    \"OSET-PL-2.1\",\n    \"OSL-1.0\",\n    \"OSL-1.1\",\n    \"OSL-2.0\",\n    \"OSL-2.1\",\n    \"OSL-3.0\",\n    \"PADL\",\n    \"Parity-6.0.0\",\n    \"Parity-7.0.0\",\n    \"PDDL-1.0\",\n    \"PHP-3.0\",\n    \"PHP-3.01\",\n    \"Pixar\",\n    \"pkgconf\",\n    \"Plexus\",\n    \"pnmstitch\",\n    \"PolyForm-Noncommercial-1.0.0\",\n    \"PolyForm-Small-Business-1.0.0\",\n    \"PostgreSQL\",\n    \"PPL\",\n    \"PSF-2.0\",\n    \"psfrag\",\n    \"psutils\",\n    \"Python-2.0\",\n    \"Python-2.0.1\",\n    \"python-ldap\",\n    \"Qhull\",\n    \"QPL-1.0\",\n    \"QPL-1.0-INRIA-2004\",\n    \"radvd\",\n    \"Rdisc\",\n    \"RHeCos-1.1\",\n    \"RPL-1.1\",\n    \"RPL-1.5\",\n    \"RPSL-1.0\",\n    \"RSA-MD\",\n    \"RSCPL\",\n    \"Ruby\",\n    \"Ruby-pty\",\n    \"SAX-PD\",\n    \"SAX-PD-2.0\",\n    \"Saxpath\",\n    \"SCEA\",\n    \"SchemeReport\",\n    \"Sendmail\",\n    \"Sendmail-8.23\",\n    \"Sendmail-Open-Source-1.1\",\n    \"SGI-B-1.0\",\n    \"SGI-B-1.1\",\n    \"SGI-B-2.0\",\n    \"SGI-OpenGL\",\n    \"SGP4\",\n    \"SHL-0.5\",\n    \"SHL-0.51\",\n    \"SimPL-2.0\",\n    \"SISSL\",\n    \"SISSL-1.2\",\n    \"SL\",\n    \"Sleepycat\",\n    \"SMAIL-GPL\",\n    \"SMLNJ\",\n    \"SMPPL\",\n    \"SNIA\",\n    \"snprintf\",\n    \"SOFA\",\n    \"softSurfer\",\n    \"Soundex\",\n    \"Spencer-86\",\n    \"Spencer-94\",\n    \"Spencer-99\",\n    \"SPL-1.0\",\n    \"ssh-keyscan\",\n    \"SSH-OpenSSH\",\n    \"SSH-short\",\n    \"SSLeay-standalone\",\n    \"SSPL-1.0\",\n    \"StandardML-NJ\",\n    \"SugarCRM-1.1.3\",\n    \"SUL-1.0\",\n    \"Sun-PPP\",\n    \"Sun-PPP-2000\",\n    \"SunPro\",\n    \"SWL\",\n    \"swrule\",\n    \"Symlinks\",\n    \"TAPR-OHL-1.0\",\n    \"TCL\",\n    \"TCP-wrappers\",\n    \"TermReadKey\",\n    \"TGPPL-1.0\",\n    \"ThirdEye\",\n    \"threeparttable\",\n    \"TMate\",\n    \"TORQUE-1.1\",\n    \"TOSL\",\n    \"TPDL\",\n    \"TPL-1.0\",\n    \"TrustedQSL\",\n    \"TTWL\",\n    \"TTYP0\",\n    \"TU-Berlin-1.0\",\n    \"TU-Berlin-2.0\",\n    \"Ubuntu-font-1.0\",\n    \"UCAR\",\n    \"UCL-1.0\",\n    \"ulem\",\n    \"UMich-Merit\",\n    \"Unicode-3.0\",\n    \"Unicode-DFS-2015\",\n    \"Unicode-DFS-2016\",\n    \"Unicode-TOU\",\n    \"UnixCrypt\",\n    \"Unlicense\",\n    \"Unlicense-libtelnet\",\n    \"Unlicense-libwhirlpool\",\n    \"UPL-1.0\",\n    \"URT-RLE\",\n    \"Vim\",\n    \"VOSTROM\",\n    \"VSL-1.0\",\n    \"W3C\",\n    \"W3C-19980720\",\n    \"W3C-20150513\",\n    \"w3m\",\n    \"Watcom-1.0\",\n    \"Widget-Workshop\",\n    \"Wsuipa\",\n    \"WTFPL\",\n    \"wwl\",\n    \"wxWindows\",\n    \"X11\",\n    \"X11-distribute-modifications-variant\",\n    \"X11-swapped\",\n    \"Xdebug-1.03\",\n    \"Xerox\",\n    \"Xfig\",\n    \"XFree86-1.1\",\n    \"xinetd\",\n    \"xkeyboard-config-Zinoviev\",\n    \"xlock\",\n    \"Xnet\",\n    \"xpp\",\n    \"XSkat\",\n    \"xzoom\",\n    \"YPL-1.0\",\n    \"YPL-1.1\",\n    \"Zed\",\n    \"Zeeff\",\n    \"Zend-2.0\",\n    \"Zimbra-1.3\",\n    \"Zimbra-1.4\",\n    \"Zlib\",\n    \"zlib-acknowledgement\",\n    \"ZPL-1.1\",\n    \"ZPL-2.0\",\n    \"ZPL-2.1\",\n    \"389-exception\",\n    \"Asterisk-exception\",\n    \"Asterisk-linking-protocols-exception\",\n    \"Autoconf-exception-2.0\",\n    \"Autoconf-exception-3.0\",\n    \"Autoconf-exception-generic\",\n    \"Autoconf-exception-generic-3.0\",\n    \"Autoconf-exception-macro\",\n    \"Bison-exception-1.24\",\n    \"Bison-exception-2.2\",\n    \"Bootloader-exception\",\n    \"CGAL-linking-exception\",\n    \"Classpath-exception-2.0\",\n    \"CLISP-exception-2.0\",\n    \"cryptsetup-OpenSSL-exception\",\n    \"Digia-Qt-LGPL-exception-1.1\",\n    \"DigiRule-FOSS-exception\",\n    \"eCos-exception-2.0\",\n    \"erlang-otp-linking-exception\",\n    \"Fawkes-Runtime-exception\",\n    \"FLTK-exception\",\n    \"fmt-exception\",\n    \"Font-exception-2.0\",\n    \"freertos-exception-2.0\",\n    \"GCC-exception-2.0\",\n    \"GCC-exception-2.0-note\",\n    \"GCC-exception-3.1\",\n    \"Gmsh-exception\",\n    \"GNAT-exception\",\n    \"GNOME-examples-exception\",\n    \"GNU-compiler-exception\",\n    \"gnu-javamail-exception\",\n    \"GPL-3.0-389-ds-base-exception\",\n    \"GPL-3.0-interface-exception\",\n    \"GPL-3.0-linking-exception\",\n    \"GPL-3.0-linking-source-exception\",\n    \"GPL-CC-1.0\",\n    \"GStreamer-exception-2005\",\n    \"GStreamer-exception-2008\",\n    \"harbour-exception\",\n    \"i2p-gpl-java-exception\",\n    \"Independent-modules-exception\",\n    \"KiCad-libraries-exception\",\n    \"LGPL-3.0-linking-exception\",\n    \"libpri-OpenH323-exception\",\n    \"Libtool-exception\",\n    \"Linux-syscall-note\",\n    \"LLGPL\",\n    \"LLVM-exception\",\n    \"LZMA-exception\",\n    \"mif-exception\",\n    \"mxml-exception\",\n    \"Nokia-Qt-exception-1.1\",\n    \"OCaml-LGPL-linking-exception\",\n    \"OCCT-exception-1.0\",\n    \"OpenJDK-assembly-exception-1.0\",\n    \"openvpn-openssl-exception\",\n    \"PCRE2-exception\",\n    \"polyparse-exception\",\n    \"PS-or-PDF-font-exception-20170817\",\n    \"QPL-1.0-INRIA-2004-exception\",\n    \"Qt-GPL-exception-1.0\",\n    \"Qt-LGPL-exception-1.1\",\n    \"Qwt-exception-1.0\",\n    \"romic-exception\",\n    \"RRDtool-FLOSS-exception-2.0\",\n    \"SANE-exception\",\n    \"SHL-2.0\",\n    \"SHL-2.1\",\n    \"stunnel-exception\",\n    \"SWI-exception\",\n    \"Swift-exception\",\n    \"Texinfo-exception\",\n    \"u-boot-exception-2.0\",\n    \"UBDL-exception\",\n    \"Universal-FOSS-exception-1.0\",\n    \"vsftpd-openssl-exception\",\n    \"WxWindows-exception-3.1\",\n    \"x11vnc-openssl-exception\"\n  ]\n}\n"
  },
  {
    "path": "schema/cyclonedx/spdx.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           elementFormDefault=\"qualified\"\n           targetNamespace=\"http://cyclonedx.org/schema/spdx\"\n           version=\"1.0-3.27.0\">\n\n    <xs:simpleType name=\"licenseId\">\n        <xs:restriction base=\"xs:string\">\n            <!-- Licenses -->\n            <xs:enumeration value=\"0BSD\">\n                <xs:annotation>\n                    <xs:documentation>BSD Zero Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"3D-Slicer-1.0\">\n                <xs:annotation>\n                    <xs:documentation>3D Slicer License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AAL\">\n                <xs:annotation>\n                    <xs:documentation>Attribution Assurance License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Abstyles\">\n                <xs:annotation>\n                    <xs:documentation>Abstyles License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AdaCore-doc\">\n                <xs:annotation>\n                    <xs:documentation>AdaCore Doc License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Adobe-2006\">\n                <xs:annotation>\n                    <xs:documentation>Adobe Systems Incorporated Source Code License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Adobe-Display-PostScript\">\n                <xs:annotation>\n                    <xs:documentation>Adobe Display PostScript License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Adobe-Glyph\">\n                <xs:annotation>\n                    <xs:documentation>Adobe Glyph List License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Adobe-Utopia\">\n                <xs:annotation>\n                    <xs:documentation>Adobe Utopia Font License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ADSL\">\n                <xs:annotation>\n                    <xs:documentation>Amazon Digital Services License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AFL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Academic Free License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AFL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>Academic Free License v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AFL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Academic Free License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AFL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Academic Free License v2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AFL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Academic Free License v3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Afmparse\">\n                <xs:annotation>\n                    <xs:documentation>Afmparse License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Affero General Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-1.0-only\">\n                <xs:annotation>\n                    <xs:documentation>Affero General Public License v1.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-1.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>Affero General Public License v1.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU Affero General Public License v3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-3.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Affero General Public License v3.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AGPL-3.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Affero General Public License v3.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Aladdin\">\n                <xs:annotation>\n                    <xs:documentation>Aladdin Free Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AMD-newlib\">\n                <xs:annotation>\n                    <xs:documentation>AMD newlib License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AMDPLPA\">\n                <xs:annotation>\n                    <xs:documentation>AMD&apos;s plpa_map.c License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AML\">\n                <xs:annotation>\n                    <xs:documentation>Apple MIT License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AML-glslang\">\n                <xs:annotation>\n                    <xs:documentation>AML glslang variant License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"AMPAS\">\n                <xs:annotation>\n                    <xs:documentation>Academy of Motion Picture Arts and Sciences BSD</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ANTLR-PD\">\n                <xs:annotation>\n                    <xs:documentation>ANTLR Software Rights Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ANTLR-PD-fallback\">\n                <xs:annotation>\n                    <xs:documentation>ANTLR Software Rights Notice with license fallback</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"any-OSI\">\n                <xs:annotation>\n                    <xs:documentation>Any OSI License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"any-OSI-perl-modules\">\n                <xs:annotation>\n                    <xs:documentation>Any OSI License - Perl Modules</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Apache-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Apache License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Apache-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Apache License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Apache-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Apache License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APAFML\">\n                <xs:annotation>\n                    <xs:documentation>Adobe Postscript AFM License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Adaptive Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"App-s2p\">\n                <xs:annotation>\n                    <xs:documentation>App::s2p License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Apple Public Source License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APSL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Apple Public Source License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APSL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>Apple Public Source License 1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"APSL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Apple Public Source License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Arphic-1999\">\n                <xs:annotation>\n                    <xs:documentation>Arphic Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Artistic-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Artistic License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Artistic-1.0-cl8\">\n                <xs:annotation>\n                    <xs:documentation>Artistic License 1.0 w/clause 8</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Artistic-1.0-Perl\">\n                <xs:annotation>\n                    <xs:documentation>Artistic License 1.0 (Perl)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Artistic-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Artistic License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Artistic-dist\">\n                <xs:annotation>\n                    <xs:documentation>Artistic License 1.0 (dist)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Aspell-RU\">\n                <xs:annotation>\n                    <xs:documentation>Aspell Russian License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ASWF-Digital-Assets-1.0\">\n                <xs:annotation>\n                    <xs:documentation>ASWF Digital Assets License version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ASWF-Digital-Assets-1.1\">\n                <xs:annotation>\n                    <xs:documentation>ASWF Digital Assets License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Baekmuk\">\n                <xs:annotation>\n                    <xs:documentation>Baekmuk License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bahyph\">\n                <xs:annotation>\n                    <xs:documentation>Bahyph License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Barr\">\n                <xs:annotation>\n                    <xs:documentation>Barr License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"bcrypt-Solar-Designer\">\n                <xs:annotation>\n                    <xs:documentation>bcrypt Solar Designer License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Beerware\">\n                <xs:annotation>\n                    <xs:documentation>Beerware License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bitstream-Charter\">\n                <xs:annotation>\n                    <xs:documentation>Bitstream Charter Font License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bitstream-Vera\">\n                <xs:annotation>\n                    <xs:documentation>Bitstream Vera Font License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BitTorrent-1.0\">\n                <xs:annotation>\n                    <xs:documentation>BitTorrent Open Source License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BitTorrent-1.1\">\n                <xs:annotation>\n                    <xs:documentation>BitTorrent Open Source License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"blessing\">\n                <xs:annotation>\n                    <xs:documentation>SQLite Blessing</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BlueOak-1.0.0\">\n                <xs:annotation>\n                    <xs:documentation>Blue Oak Model License 1.0.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Boehm-GC\">\n                <xs:annotation>\n                    <xs:documentation>Boehm-Demers-Weiser GC License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Boehm-GC-without-fee\">\n                <xs:annotation>\n                    <xs:documentation>Boehm-Demers-Weiser GC License (without fee)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Borceux\">\n                <xs:annotation>\n                    <xs:documentation>Borceux license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Brian-Gladman-2-Clause\">\n                <xs:annotation>\n                    <xs:documentation>Brian Gladman 2-Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Brian-Gladman-3-Clause\">\n                <xs:annotation>\n                    <xs:documentation>Brian Gladman 3-Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-1-Clause\">\n                <xs:annotation>\n                    <xs:documentation>BSD 1-Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause &quot;Simplified&quot; License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-Darwin\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause - Ian Darwin variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-first-lines\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause - first lines requirement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-FreeBSD\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause FreeBSD License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-NetBSD\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause NetBSD License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-Patent\">\n                <xs:annotation>\n                    <xs:documentation>BSD-2-Clause Plus Patent License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-pkgconf-disclaimer\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause pkgconf disclaimer variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-2-Clause-Views\">\n                <xs:annotation>\n                    <xs:documentation>BSD 2-Clause with views sentence</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause &quot;New&quot; or &quot;Revised&quot; License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-acpica\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause acpica variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-Attribution\">\n                <xs:annotation>\n                    <xs:documentation>BSD with attribution</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-Clear\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause Clear License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-flex\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause Flex variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-HP\">\n                <xs:annotation>\n                    <xs:documentation>Hewlett-Packard BSD variant license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-LBNL\">\n                <xs:annotation>\n                    <xs:documentation>Lawrence Berkeley National Labs BSD variant license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-Modification\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause Modification</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-No-Military-License\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause No Military License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-No-Nuclear-License\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause No Nuclear License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-No-Nuclear-License-2014\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause No Nuclear License 2014</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-No-Nuclear-Warranty\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause No Nuclear Warranty</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-Open-MPI\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause Open MPI variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-3-Clause-Sun\">\n                <xs:annotation>\n                    <xs:documentation>BSD 3-Clause Sun Microsystems</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-4-Clause\">\n                <xs:annotation>\n                    <xs:documentation>BSD 4-Clause &quot;Original&quot; or &quot;Old&quot; License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-4-Clause-Shortened\">\n                <xs:annotation>\n                    <xs:documentation>BSD 4 Clause Shortened</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-4-Clause-UC\">\n                <xs:annotation>\n                    <xs:documentation>BSD-4-Clause (University of California-Specific)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-4.3RENO\">\n                <xs:annotation>\n                    <xs:documentation>BSD 4.3 RENO License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-4.3TAHOE\">\n                <xs:annotation>\n                    <xs:documentation>BSD 4.3 TAHOE License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Advertising-Acknowledgement\">\n                <xs:annotation>\n                    <xs:documentation>BSD Advertising Acknowledgement License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Attribution-HPND-disclaimer\">\n                <xs:annotation>\n                    <xs:documentation>BSD with Attribution and HPND disclaimer</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Inferno-Nettverk\">\n                <xs:annotation>\n                    <xs:documentation>BSD-Inferno-Nettverk</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Protection\">\n                <xs:annotation>\n                    <xs:documentation>BSD Protection License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Source-beginning-file\">\n                <xs:annotation>\n                    <xs:documentation>BSD Source Code Attribution - beginning of file variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Source-Code\">\n                <xs:annotation>\n                    <xs:documentation>BSD Source Code Attribution</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Systemics\">\n                <xs:annotation>\n                    <xs:documentation>Systemics BSD variant license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSD-Systemics-W3Works\">\n                <xs:annotation>\n                    <xs:documentation>Systemics W3Works BSD variant license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Boost Software License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"BUSL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Business Source License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"bzip2-1.0.5\">\n                <xs:annotation>\n                    <xs:documentation>bzip2 and libbzip2 License v1.0.5</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"bzip2-1.0.6\">\n                <xs:annotation>\n                    <xs:documentation>bzip2 and libbzip2 License v1.0.6</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"C-UDA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Computational Use of Data Agreement v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CAL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Cryptographic Autonomy License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CAL-1.0-Combined-Work-Exception\">\n                <xs:annotation>\n                    <xs:documentation>Cryptographic Autonomy License 1.0 (Combined Work Exception)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Caldera\">\n                <xs:annotation>\n                    <xs:documentation>Caldera License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Caldera-no-preamble\">\n                <xs:annotation>\n                    <xs:documentation>Caldera License (without preamble)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Catharon\">\n                <xs:annotation>\n                    <xs:documentation>Catharon License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CATOSL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Computer Associates Trusted Open Source License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-2.5-AU\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 2.5 Australia</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-AT\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 Austria</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-AU\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 Australia</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-IGO\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 IGO</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-NL\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 Netherlands</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-3.0-US\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 3.0 United States</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-3.0-IGO\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-ND-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial No Derivatives 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-2.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 2.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-2.0-FR\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-2.0-UK\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-3.0-IGO\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 3.0 IGO</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-NC-SA-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Non Commercial Share Alike 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-ND-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution No Derivatives 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 2.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-2.0-UK\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 2.0 England and Wales</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-2.1-JP\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 2.1 Japan</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 2.5 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 3.0 Unported</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-3.0-AT\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 3.0 Austria</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-3.0-DE\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 3.0 Germany</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-3.0-IGO\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution-ShareAlike 3.0 IGO</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-BY-SA-4.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Attribution Share Alike 4.0 International</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-PDDC\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Public Domain Dedication and Certification</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-PDM-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative    Commons Public Domain Mark 1.0 Universal</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC-SA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Share Alike 1.0 Generic</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CC0-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Creative Commons Zero v1.0 Universal</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDDL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Common Development and Distribution License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDDL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Common Development and Distribution License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Common Documentation License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDLA-Permissive-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Community Data License Agreement Permissive 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDLA-Permissive-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Community Data License Agreement Permissive 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CDLA-Sharing-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Community Data License Agreement Sharing 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL Free Software License Agreement v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL Free Software License Agreement v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL Free Software License Agreement v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL Free Software License Agreement v2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-B\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL-B Free Software License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CECILL-C\">\n                <xs:annotation>\n                    <xs:documentation>CeCILL-C Free Software License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CERN-OHL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>CERN Open Hardware Licence v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CERN-OHL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>CERN Open Hardware Licence v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CERN-OHL-P-2.0\">\n                <xs:annotation>\n                    <xs:documentation>CERN Open Hardware Licence Version 2 - Permissive</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CERN-OHL-S-2.0\">\n                <xs:annotation>\n                    <xs:documentation>CERN Open Hardware Licence Version 2 - Strongly Reciprocal</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CERN-OHL-W-2.0\">\n                <xs:annotation>\n                    <xs:documentation>CERN Open Hardware Licence Version 2 - Weakly Reciprocal</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CFITSIO\">\n                <xs:annotation>\n                    <xs:documentation>CFITSIO License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"check-cvs\">\n                <xs:annotation>\n                    <xs:documentation>check-cvs License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"checkmk\">\n                <xs:annotation>\n                    <xs:documentation>Checkmk License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ClArtistic\">\n                <xs:annotation>\n                    <xs:documentation>Clarified Artistic License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Clips\">\n                <xs:annotation>\n                    <xs:documentation>Clips License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CMU-Mach\">\n                <xs:annotation>\n                    <xs:documentation>CMU Mach License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CMU-Mach-nodoc\">\n                <xs:annotation>\n                    <xs:documentation>CMU    Mach - no notices-in-documentation variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CNRI-Jython\">\n                <xs:annotation>\n                    <xs:documentation>CNRI Jython License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CNRI-Python\">\n                <xs:annotation>\n                    <xs:documentation>CNRI Python License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CNRI-Python-GPL-Compatible\">\n                <xs:annotation>\n                    <xs:documentation>CNRI Python Open Source GPL Compatible License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"COIL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Copyfree Open Innovation License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Community-Spec-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Community Specification License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Condor-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Condor Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"copyleft-next-0.3.0\">\n                <xs:annotation>\n                    <xs:documentation>copyleft-next 0.3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"copyleft-next-0.3.1\">\n                <xs:annotation>\n                    <xs:documentation>copyleft-next 0.3.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Cornell-Lossless-JPEG\">\n                <xs:annotation>\n                    <xs:documentation>Cornell Lossless JPEG License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CPAL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Common Public Attribution License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Common Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CPOL-1.02\">\n                <xs:annotation>\n                    <xs:documentation>Code Project Open License 1.02</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Cronyx\">\n                <xs:annotation>\n                    <xs:documentation>Cronyx License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Crossword\">\n                <xs:annotation>\n                    <xs:documentation>Crossword License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CryptoSwift\">\n                <xs:annotation>\n                    <xs:documentation>CryptoSwift License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CrystalStacker\">\n                <xs:annotation>\n                    <xs:documentation>CrystalStacker License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CUA-OPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>CUA Office Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Cube\">\n                <xs:annotation>\n                    <xs:documentation>Cube License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"curl\">\n                <xs:annotation>\n                    <xs:documentation>curl License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"cve-tou\">\n                <xs:annotation>\n                    <xs:documentation>Common Vulnerability Enumeration ToU License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"D-FSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Deutsche Freie Software Lizenz</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DEC-3-Clause\">\n                <xs:annotation>\n                    <xs:documentation>DEC 3-Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"diffmark\">\n                <xs:annotation>\n                    <xs:documentation>diffmark license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DL-DE-BY-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Data licence Germany – attribution – version 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DL-DE-ZERO-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Data licence Germany – zero – version 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DOC\">\n                <xs:annotation>\n                    <xs:documentation>DOC License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DocBook-DTD\">\n                <xs:annotation>\n                    <xs:documentation>DocBook DTD License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DocBook-Schema\">\n                <xs:annotation>\n                    <xs:documentation>DocBook Schema License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DocBook-Stylesheet\">\n                <xs:annotation>\n                    <xs:documentation>DocBook Stylesheet License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DocBook-XML\">\n                <xs:annotation>\n                    <xs:documentation>DocBook XML License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Dotseqn\">\n                <xs:annotation>\n                    <xs:documentation>Dotseqn License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DRL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Detection Rule License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DRL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Detection Rule License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DSDP\">\n                <xs:annotation>\n                    <xs:documentation>DSDP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"dtoa\">\n                <xs:annotation>\n                    <xs:documentation>David M. Gay dtoa License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"dvipdfm\">\n                <xs:annotation>\n                    <xs:documentation>dvipdfm License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ECL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Educational Community License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ECL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Educational Community License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"eCos-2.0\">\n                <xs:annotation>\n                    <xs:documentation>eCos license version 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EFL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Eiffel Forum License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EFL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Eiffel Forum License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"eGenix\">\n                <xs:annotation>\n                    <xs:documentation>eGenix.com Public License 1.1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Elastic-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Elastic License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Entessa\">\n                <xs:annotation>\n                    <xs:documentation>Entessa Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EPICS\">\n                <xs:annotation>\n                    <xs:documentation>EPICS Open License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Eclipse Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Eclipse Public License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ErlPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Erlang Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"etalab-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Etalab Open License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EUDatagrid\">\n                <xs:annotation>\n                    <xs:documentation>EU DataGrid Software License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EUPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>European Union Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EUPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>European Union Public License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"EUPL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>European Union Public License 1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Eurosym\">\n                <xs:annotation>\n                    <xs:documentation>Eurosym License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Fair\">\n                <xs:annotation>\n                    <xs:documentation>Fair License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FBM\">\n                <xs:annotation>\n                    <xs:documentation>Fuzzy Bitmap License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FDK-AAC\">\n                <xs:annotation>\n                    <xs:documentation>Fraunhofer FDK AAC Codec Library</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Ferguson-Twofish\">\n                <xs:annotation>\n                    <xs:documentation>Ferguson Twofish License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Frameworx-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Frameworx Open License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FreeBSD-DOC\">\n                <xs:annotation>\n                    <xs:documentation>FreeBSD Documentation License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FreeImage\">\n                <xs:annotation>\n                    <xs:documentation>FreeImage Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFAP\">\n                <xs:annotation>\n                    <xs:documentation>FSF All Permissive License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFAP-no-warranty-disclaimer\">\n                <xs:annotation>\n                    <xs:documentation>FSF All Permissive License (without Warranty)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFUL\">\n                <xs:annotation>\n                    <xs:documentation>FSF Unlimited License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFULLR\">\n                <xs:annotation>\n                    <xs:documentation>FSF Unlimited License (with License Retention)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFULLRSD\">\n                <xs:annotation>\n                    <xs:documentation>FSF Unlimited License (with License Retention and Short Disclaimer)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSFULLRWD\">\n                <xs:annotation>\n                    <xs:documentation>FSF Unlimited License (With License Retention and Warranty Disclaimer)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSL-1.1-ALv2\">\n                <xs:annotation>\n                    <xs:documentation>Functional Source License, Version 1.1, ALv2 Future License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FSL-1.1-MIT\">\n                <xs:annotation>\n                    <xs:documentation>Functional Source License, Version 1.1, MIT Future License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FTL\">\n                <xs:annotation>\n                    <xs:documentation>Freetype Project License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Furuseth\">\n                <xs:annotation>\n                    <xs:documentation>Furuseth License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"fwlw\">\n                <xs:annotation>\n                    <xs:documentation>fwlw License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Game-Programming-Gems\">\n                <xs:annotation>\n                    <xs:documentation>Game Programming Gems License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GCR-docs\">\n                <xs:annotation>\n                    <xs:documentation>Gnome GCR Documentation License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GD\">\n                <xs:annotation>\n                    <xs:documentation>GD License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"generic-xts\">\n                <xs:annotation>\n                    <xs:documentation>Generic XTS License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 only - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 or later - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-no-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 only - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-no-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 or later - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.1-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.1 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 only - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 or later - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-no-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 only - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-no-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 or later - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.2-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.2 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 only - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 or later - invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-no-invariants-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 only - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-no-invariants-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 or later - no invariants</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GFDL-1.3-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Free Documentation License v1.3 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Giftware\">\n                <xs:annotation>\n                    <xs:documentation>Giftware License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GL2PS\">\n                <xs:annotation>\n                    <xs:documentation>GL2PS License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Glide\">\n                <xs:annotation>\n                    <xs:documentation>3dfx Glide License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Glulxe\">\n                <xs:annotation>\n                    <xs:documentation>Glulxe License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GLWTPL\">\n                <xs:annotation>\n                    <xs:documentation>Good Luck With That Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"gnuplot\">\n                <xs:annotation>\n                    <xs:documentation>gnuplot License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v1.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-1.0+\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v1.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-1.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v1.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-1.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v1.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0+\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-with-autoconf-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 w/Autoconf exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-with-bison-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 w/Bison exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-with-classpath-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 w/Classpath exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-with-font-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 w/Font exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-2.0-with-GCC-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v2.0 w/GCC Runtime Library exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0+\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-with-autoconf-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 w/Autoconf exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-with-GCC-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU General Public License v3.0 w/GCC Runtime Library exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Graphics-Gems\">\n                <xs:annotation>\n                    <xs:documentation>Graphics Gems License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"gSOAP-1.3b\">\n                <xs:annotation>\n                    <xs:documentation>gSOAP Public License v1.3b</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"gtkbook\">\n                <xs:annotation>\n                    <xs:documentation>gtkbook License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Gutmann\">\n                <xs:annotation>\n                    <xs:documentation>Gutmann License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HaskellReport\">\n                <xs:annotation>\n                    <xs:documentation>Haskell Language Report License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HDF5\">\n                <xs:annotation>\n                    <xs:documentation>HDF5 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"hdparm\">\n                <xs:annotation>\n                    <xs:documentation>hdparm License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HIDAPI\">\n                <xs:annotation>\n                    <xs:documentation>HIDAPI License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Hippocratic-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Hippocratic License 2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HP-1986\">\n                <xs:annotation>\n                    <xs:documentation>Hewlett-Packard 1986 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HP-1989\">\n                <xs:annotation>\n                    <xs:documentation>Hewlett-Packard 1989 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-DEC\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - DEC variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-doc\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - documentation variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-doc-sell\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - documentation sell variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-export-US\">\n                <xs:annotation>\n                    <xs:documentation>HPND with US Government export control warning</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-export-US-acknowledgement\">\n                <xs:annotation>\n                    <xs:documentation>HPND with US Government export control warning and acknowledgment</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-export-US-modify\">\n                <xs:annotation>\n                    <xs:documentation>HPND with US Government export control warning and modification rqmt</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-export2-US\">\n                <xs:annotation>\n                    <xs:documentation>HPND with US Government export control and 2 disclaimers</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Fenneberg-Livingston\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-INRIA-IMAG\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer    - INRIA-IMAG variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Intel\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Intel variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Kevlin-Henney\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Kevlin Henney variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Markus-Kuhn\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Markus Kuhn variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-merchantability-variant\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - merchantability variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-MIT-disclaimer\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer with MIT disclaimer</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Netrek\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Netrek variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-Pbmplus\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - Pbmplus variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-sell-MIT-disclaimer-xserver\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-sell-regexpr\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - sell regexpr variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-sell-variant\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - sell variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-sell-variant-MIT-disclaimer\">\n                <xs:annotation>\n                    <xs:documentation>HPND sell variant with MIT disclaimer</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-sell-variant-MIT-disclaimer-rev\">\n                <xs:annotation>\n                    <xs:documentation>HPND sell variant with MIT disclaimer - reverse</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-UC\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - University of California variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HPND-UC-export-US\">\n                <xs:annotation>\n                    <xs:documentation>Historical Permission Notice and Disclaimer - University of California, US export warning</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"HTMLTIDY\">\n                <xs:annotation>\n                    <xs:documentation>HTML Tidy License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IBM-pibs\">\n                <xs:annotation>\n                    <xs:documentation>IBM PowerPC Initialization and Boot Software</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ICU\">\n                <xs:annotation>\n                    <xs:documentation>ICU License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IEC-Code-Components-EULA\">\n                <xs:annotation>\n                    <xs:documentation>IEC    Code Components End-user licence agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IJG\">\n                <xs:annotation>\n                    <xs:documentation>Independent JPEG Group License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IJG-short\">\n                <xs:annotation>\n                    <xs:documentation>Independent JPEG Group License - short</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ImageMagick\">\n                <xs:annotation>\n                    <xs:documentation>ImageMagick License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"iMatix\">\n                <xs:annotation>\n                    <xs:documentation>iMatix Standard Function Library Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Imlib2\">\n                <xs:annotation>\n                    <xs:documentation>Imlib2 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Info-ZIP\">\n                <xs:annotation>\n                    <xs:documentation>Info-ZIP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Inner-Net-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Inner Net License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"InnoSetup\">\n                <xs:annotation>\n                    <xs:documentation>Inno Setup License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Intel\">\n                <xs:annotation>\n                    <xs:documentation>Intel Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Intel-ACPI\">\n                <xs:annotation>\n                    <xs:documentation>Intel ACPI Software License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Interbase-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Interbase Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IPA\">\n                <xs:annotation>\n                    <xs:documentation>IPA Font License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"IPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>IBM Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ISC\">\n                <xs:annotation>\n                    <xs:documentation>ISC License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ISC-Veillard\">\n                <xs:annotation>\n                    <xs:documentation>ISC Veillard variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Jam\">\n                <xs:annotation>\n                    <xs:documentation>Jam License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"JasPer-2.0\">\n                <xs:annotation>\n                    <xs:documentation>JasPer License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"jove\">\n                <xs:annotation>\n                    <xs:documentation>Jove License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"JPL-image\">\n                <xs:annotation>\n                    <xs:documentation>JPL Image Use Policy</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"JPNIC\">\n                <xs:annotation>\n                    <xs:documentation>Japan Network Information Center License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"JSON\">\n                <xs:annotation>\n                    <xs:documentation>JSON License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Kastrup\">\n                <xs:annotation>\n                    <xs:documentation>Kastrup License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Kazlib\">\n                <xs:annotation>\n                    <xs:documentation>Kazlib License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Knuth-CTAN\">\n                <xs:annotation>\n                    <xs:documentation>Knuth CTAN License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LAL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>Licence Art Libre 1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LAL-1.3\">\n                <xs:annotation>\n                    <xs:documentation>Licence Art Libre 1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Latex2e\">\n                <xs:annotation>\n                    <xs:documentation>Latex2e License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Latex2e-translated-notice\">\n                <xs:annotation>\n                    <xs:documentation>Latex2e with translated notice permission</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Leptonica\">\n                <xs:annotation>\n                    <xs:documentation>Leptonica License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU Library General Public License v2 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.0+\">\n                <xs:annotation>\n                    <xs:documentation>GNU Library General Public License v2 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Library General Public License v2 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Library General Public License v2 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v2.1 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.1+\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v2.1 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.1-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v2.1 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-2.1-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v2.1 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v3.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-3.0+\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v3.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-3.0-only\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v3.0 only</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-3.0-or-later\">\n                <xs:annotation>\n                    <xs:documentation>GNU Lesser General Public License v3.0 or later</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPLLR\">\n                <xs:annotation>\n                    <xs:documentation>Lesser General Public License For Linguistic Resources</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Libpng\">\n                <xs:annotation>\n                    <xs:documentation>libpng License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libpng-1.6.35\">\n                <xs:annotation>\n                    <xs:documentation>PNG Reference Library License v1 (for libpng 0.5 through 1.6.35)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libpng-2.0\">\n                <xs:annotation>\n                    <xs:documentation>PNG Reference Library version 2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libselinux-1.0\">\n                <xs:annotation>\n                    <xs:documentation>libselinux public domain notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libtiff\">\n                <xs:annotation>\n                    <xs:documentation>libtiff License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libutil-David-Nugent\">\n                <xs:annotation>\n                    <xs:documentation>libutil David Nugent License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LiLiQ-P-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Licence Libre du Québec – Permissive version 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LiLiQ-R-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Licence Libre du Québec – Réciprocité version 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LiLiQ-Rplus-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Licence Libre du Québec – Réciprocité forte version 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-man-pages-1-para\">\n                <xs:annotation>\n                    <xs:documentation>Linux man-pages - 1 paragraph</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-man-pages-copyleft\">\n                <xs:annotation>\n                    <xs:documentation>Linux man-pages Copyleft</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-man-pages-copyleft-2-para\">\n                <xs:annotation>\n                    <xs:documentation>Linux man-pages Copyleft - 2 paragraphs</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-man-pages-copyleft-var\">\n                <xs:annotation>\n                    <xs:documentation>Linux man-pages Copyleft Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-OpenIB\">\n                <xs:annotation>\n                    <xs:documentation>Linux Kernel Variant of OpenIB.org license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LOOP\">\n                <xs:annotation>\n                    <xs:documentation>Common Lisp LOOP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPD-document\">\n                <xs:annotation>\n                    <xs:documentation>LPD Documentation License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Lucent Public License Version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPL-1.02\">\n                <xs:annotation>\n                    <xs:documentation>Lucent Public License v1.02</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>LaTeX Project Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>LaTeX Project Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPPL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>LaTeX Project Public License v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPPL-1.3a\">\n                <xs:annotation>\n                    <xs:documentation>LaTeX Project Public License v1.3a</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LPPL-1.3c\">\n                <xs:annotation>\n                    <xs:documentation>LaTeX Project Public License v1.3c</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"lsof\">\n                <xs:annotation>\n                    <xs:documentation>lsof License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Lucida-Bitmap-Fonts\">\n                <xs:annotation>\n                    <xs:documentation>Lucida Bitmap Fonts License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LZMA-SDK-9.11-to-9.20\">\n                <xs:annotation>\n                    <xs:documentation>LZMA SDK License (versions 9.11 to 9.20)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LZMA-SDK-9.22\">\n                <xs:annotation>\n                    <xs:documentation>LZMA SDK License (versions 9.22 and beyond)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Mackerras-3-Clause\">\n                <xs:annotation>\n                    <xs:documentation>Mackerras 3-Clause License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Mackerras-3-Clause-acknowledgment\">\n                <xs:annotation>\n                    <xs:documentation>Mackerras 3-Clause - acknowledgment variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"magaz\">\n                <xs:annotation>\n                    <xs:documentation>magaz License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mailprio\">\n                <xs:annotation>\n                    <xs:documentation>mailprio License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MakeIndex\">\n                <xs:annotation>\n                    <xs:documentation>MakeIndex License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"man2html\">\n                <xs:annotation>\n                    <xs:documentation>man2html License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Martin-Birgmeier\">\n                <xs:annotation>\n                    <xs:documentation>Martin Birgmeier License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"McPhee-slideshow\">\n                <xs:annotation>\n                    <xs:documentation>McPhee Slideshow License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"metamail\">\n                <xs:annotation>\n                    <xs:documentation>metamail License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Minpack\">\n                <xs:annotation>\n                    <xs:documentation>Minpack License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIPS\">\n                <xs:annotation>\n                    <xs:documentation>MIPS License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MirOS\">\n                <xs:annotation>\n                    <xs:documentation>The MirOS Licence</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT\">\n                <xs:annotation>\n                    <xs:documentation>MIT License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-0\">\n                <xs:annotation>\n                    <xs:documentation>MIT No Attribution</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-advertising\">\n                <xs:annotation>\n                    <xs:documentation>Enlightenment License (e16)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-Click\">\n                <xs:annotation>\n                    <xs:documentation>MIT Click License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-CMU\">\n                <xs:annotation>\n                    <xs:documentation>CMU License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-enna\">\n                <xs:annotation>\n                    <xs:documentation>enna License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-feh\">\n                <xs:annotation>\n                    <xs:documentation>feh License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-Festival\">\n                <xs:annotation>\n                    <xs:documentation>MIT Festival Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-Khronos-old\">\n                <xs:annotation>\n                    <xs:documentation>MIT Khronos - old variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-Modern-Variant\">\n                <xs:annotation>\n                    <xs:documentation>MIT License Modern Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-open-group\">\n                <xs:annotation>\n                    <xs:documentation>MIT Open Group variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-testregex\">\n                <xs:annotation>\n                    <xs:documentation>MIT testregex Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MIT-Wu\">\n                <xs:annotation>\n                    <xs:documentation>MIT Tom Wu Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MITNFA\">\n                <xs:annotation>\n                    <xs:documentation>MIT +no-false-attribs license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MMIXware\">\n                <xs:annotation>\n                    <xs:documentation>MMIXware License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Motosoto\">\n                <xs:annotation>\n                    <xs:documentation>Motosoto License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MPEG-SSG\">\n                <xs:annotation>\n                    <xs:documentation>MPEG Software Simulation</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mpi-permissive\">\n                <xs:annotation>\n                    <xs:documentation>mpi Permissive License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mpich2\">\n                <xs:annotation>\n                    <xs:documentation>mpich2 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Mozilla Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Mozilla Public License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Mozilla Public License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MPL-2.0-no-copyleft-exception\">\n                <xs:annotation>\n                    <xs:documentation>Mozilla Public License 2.0 (no copyleft exception)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mplus\">\n                <xs:annotation>\n                    <xs:documentation>mplus Font License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MS-LPL\">\n                <xs:annotation>\n                    <xs:documentation>Microsoft Limited Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MS-PL\">\n                <xs:annotation>\n                    <xs:documentation>Microsoft Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MS-RL\">\n                <xs:annotation>\n                    <xs:documentation>Microsoft Reciprocal License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MTLL\">\n                <xs:annotation>\n                    <xs:documentation>Matrix Template Library License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MulanPSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Mulan Permissive Software License, Version 1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"MulanPSL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Mulan Permissive Software License, Version 2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Multics\">\n                <xs:annotation>\n                    <xs:documentation>Multics License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Mup\">\n                <xs:annotation>\n                    <xs:documentation>Mup License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NAIST-2003\">\n                <xs:annotation>\n                    <xs:documentation>Nara Institute of Science and Technology License (2003)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NASA-1.3\">\n                <xs:annotation>\n                    <xs:documentation>NASA Open Source Agreement 1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Naumen\">\n                <xs:annotation>\n                    <xs:documentation>Naumen Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NBPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Net Boolean Public License v1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NCBI-PD\">\n                <xs:annotation>\n                    <xs:documentation>NCBI Public Domain Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NCGL-UK-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Non-Commercial Government Licence</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NCL\">\n                <xs:annotation>\n                    <xs:documentation>NCL Source Code License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NCSA\">\n                <xs:annotation>\n                    <xs:documentation>University of Illinois/NCSA Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Net-SNMP\">\n                <xs:annotation>\n                    <xs:documentation>Net-SNMP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NetCDF\">\n                <xs:annotation>\n                    <xs:documentation>NetCDF license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Newsletr\">\n                <xs:annotation>\n                    <xs:documentation>Newsletr License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NGPL\">\n                <xs:annotation>\n                    <xs:documentation>Nethack General Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ngrep\">\n                <xs:annotation>\n                    <xs:documentation>ngrep License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NICTA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>NICTA Public Software License, Version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NIST-PD\">\n                <xs:annotation>\n                    <xs:documentation>NIST Public Domain Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NIST-PD-fallback\">\n                <xs:annotation>\n                    <xs:documentation>NIST Public Domain Notice with license fallback</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NIST-Software\">\n                <xs:annotation>\n                    <xs:documentation>NIST Software License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NLOD-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Norwegian Licence for Open Government Data (NLOD) 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NLOD-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Norwegian Licence for Open Government Data (NLOD) 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NLPL\">\n                <xs:annotation>\n                    <xs:documentation>No Limit Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Nokia\">\n                <xs:annotation>\n                    <xs:documentation>Nokia Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NOSL\">\n                <xs:annotation>\n                    <xs:documentation>Netizen Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Noweb\">\n                <xs:annotation>\n                    <xs:documentation>Noweb License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Netscape Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Netscape Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NPOSL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Non-Profit Open Software License 3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NRL\">\n                <xs:annotation>\n                    <xs:documentation>NRL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NTIA-PD\">\n                <xs:annotation>\n                    <xs:documentation>NTIA Public Domain Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NTP\">\n                <xs:annotation>\n                    <xs:documentation>NTP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"NTP-0\">\n                <xs:annotation>\n                    <xs:documentation>NTP No Attribution</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Nunit\">\n                <xs:annotation>\n                    <xs:documentation>Nunit License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"O-UDA-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Use of Data Agreement v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OAR\">\n                <xs:annotation>\n                    <xs:documentation>OAR License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OCCT-PL\">\n                <xs:annotation>\n                    <xs:documentation>Open CASCADE Technology Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OCLC-2.0\">\n                <xs:annotation>\n                    <xs:documentation>OCLC Research Public License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ODbL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Data Commons Open Database License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ODC-By-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Data Commons Attribution License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFFIS\">\n                <xs:annotation>\n                    <xs:documentation>OFFIS License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.0-no-RFN\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.0 with no Reserved Font Name</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.0-RFN\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.0 with Reserved Font Name</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.1-no-RFN\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.1 with no Reserved Font Name</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OFL-1.1-RFN\">\n                <xs:annotation>\n                    <xs:documentation>SIL Open Font License 1.1 with Reserved Font Name</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGC-1.0\">\n                <xs:annotation>\n                    <xs:documentation>OGC Software License, Version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGDL-Taiwan-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Taiwan Open Government Data License, version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGL-Canada-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Government Licence - Canada</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGL-UK-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Government Licence v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGL-UK-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Government Licence v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGL-UK-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Government Licence v3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OGTSL\">\n                <xs:annotation>\n                    <xs:documentation>Open Group Test Suite License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-1.2\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-1.3\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-1.4\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v1.4</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.0.1\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.0.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.2\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.2.1\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.2.2\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License 2.2.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.3\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.4\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.4</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.5\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.5</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.6\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.6</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.7\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.7</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLDAP-2.8\">\n                <xs:annotation>\n                    <xs:documentation>Open LDAP Public License v2.8</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OLFL-1.3\">\n                <xs:annotation>\n                    <xs:documentation>Open Logistics Foundation License Version 1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OML\">\n                <xs:annotation>\n                    <xs:documentation>Open Market License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OpenPBS-2.3\">\n                <xs:annotation>\n                    <xs:documentation>OpenPBS v2.3 Software License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OpenSSL\">\n                <xs:annotation>\n                    <xs:documentation>OpenSSL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OpenSSL-standalone\">\n                <xs:annotation>\n                    <xs:documentation>OpenSSL License - standalone</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OpenVision\">\n                <xs:annotation>\n                    <xs:documentation>OpenVision License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OPL-UK-3.0\">\n                <xs:annotation>\n                    <xs:documentation>United    Kingdom Open Parliament Licence v3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OPUBL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Publication License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSET-PL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>OSET Public License version 2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Software License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Open Software License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Software License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Open Software License 2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OSL-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Software License 3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PADL\">\n                <xs:annotation>\n                    <xs:documentation>PADL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Parity-6.0.0\">\n                <xs:annotation>\n                    <xs:documentation>The Parity Public License 6.0.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Parity-7.0.0\">\n                <xs:annotation>\n                    <xs:documentation>The Parity Public License 7.0.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PDDL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open Data Commons Public Domain Dedication &amp; License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PHP-3.0\">\n                <xs:annotation>\n                    <xs:documentation>PHP License v3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PHP-3.01\">\n                <xs:annotation>\n                    <xs:documentation>PHP License v3.01</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Pixar\">\n                <xs:annotation>\n                    <xs:documentation>Pixar License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"pkgconf\">\n                <xs:annotation>\n                    <xs:documentation>pkgconf License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Plexus\">\n                <xs:annotation>\n                    <xs:documentation>Plexus Classworlds License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"pnmstitch\">\n                <xs:annotation>\n                    <xs:documentation>pnmstitch License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PolyForm-Noncommercial-1.0.0\">\n                <xs:annotation>\n                    <xs:documentation>PolyForm Noncommercial License 1.0.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PolyForm-Small-Business-1.0.0\">\n                <xs:annotation>\n                    <xs:documentation>PolyForm Small Business License 1.0.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PostgreSQL\">\n                <xs:annotation>\n                    <xs:documentation>PostgreSQL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PPL\">\n                <xs:annotation>\n                    <xs:documentation>Peer Production License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PSF-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Python Software Foundation License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"psfrag\">\n                <xs:annotation>\n                    <xs:documentation>psfrag License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"psutils\">\n                <xs:annotation>\n                    <xs:documentation>psutils License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Python-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Python License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Python-2.0.1\">\n                <xs:annotation>\n                    <xs:documentation>Python License 2.0.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"python-ldap\">\n                <xs:annotation>\n                    <xs:documentation>Python ldap License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Qhull\">\n                <xs:annotation>\n                    <xs:documentation>Qhull License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"QPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Q Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"QPL-1.0-INRIA-2004\">\n                <xs:annotation>\n                    <xs:documentation>Q Public License 1.0 - INRIA 2004 variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"radvd\">\n                <xs:annotation>\n                    <xs:documentation>radvd License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Rdisc\">\n                <xs:annotation>\n                    <xs:documentation>Rdisc License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RHeCos-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Red Hat eCos Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Reciprocal Public License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RPL-1.5\">\n                <xs:annotation>\n                    <xs:documentation>Reciprocal Public License 1.5</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RPSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>RealNetworks Public Source License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RSA-MD\">\n                <xs:annotation>\n                    <xs:documentation>RSA Message-Digest License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RSCPL\">\n                <xs:annotation>\n                    <xs:documentation>Ricoh Source Code Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Ruby\">\n                <xs:annotation>\n                    <xs:documentation>Ruby License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Ruby-pty\">\n                <xs:annotation>\n                    <xs:documentation>Ruby pty extension license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SAX-PD\">\n                <xs:annotation>\n                    <xs:documentation>Sax Public Domain Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SAX-PD-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Sax Public Domain Notice 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Saxpath\">\n                <xs:annotation>\n                    <xs:documentation>Saxpath License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SCEA\">\n                <xs:annotation>\n                    <xs:documentation>SCEA Shared Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SchemeReport\">\n                <xs:annotation>\n                    <xs:documentation>Scheme Language Report License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sendmail\">\n                <xs:annotation>\n                    <xs:documentation>Sendmail License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sendmail-8.23\">\n                <xs:annotation>\n                    <xs:documentation>Sendmail License 8.23</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sendmail-Open-Source-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Sendmail Open Source License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SGI-B-1.0\">\n                <xs:annotation>\n                    <xs:documentation>SGI Free Software License B v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SGI-B-1.1\">\n                <xs:annotation>\n                    <xs:documentation>SGI Free Software License B v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SGI-B-2.0\">\n                <xs:annotation>\n                    <xs:documentation>SGI Free Software License B v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SGI-OpenGL\">\n                <xs:annotation>\n                    <xs:documentation>SGI OpenGL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SGP4\">\n                <xs:annotation>\n                    <xs:documentation>SGP4 Permission Notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SHL-0.5\">\n                <xs:annotation>\n                    <xs:documentation>Solderpad Hardware License v0.5</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SHL-0.51\">\n                <xs:annotation>\n                    <xs:documentation>Solderpad Hardware License, Version 0.51</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SimPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Simple Public License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SISSL\">\n                <xs:annotation>\n                    <xs:documentation>Sun Industry Standards Source License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SISSL-1.2\">\n                <xs:annotation>\n                    <xs:documentation>Sun Industry Standards Source License v1.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SL\">\n                <xs:annotation>\n                    <xs:documentation>SL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sleepycat\">\n                <xs:annotation>\n                    <xs:documentation>Sleepycat License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SMAIL-GPL\">\n                <xs:annotation>\n                    <xs:documentation>SMAIL General Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SMLNJ\">\n                <xs:annotation>\n                    <xs:documentation>Standard ML of New Jersey License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SMPPL\">\n                <xs:annotation>\n                    <xs:documentation>Secure Messaging Protocol Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SNIA\">\n                <xs:annotation>\n                    <xs:documentation>SNIA Public License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"snprintf\">\n                <xs:annotation>\n                    <xs:documentation>snprintf License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SOFA\">\n                <xs:annotation>\n                    <xs:documentation>SOFA Software License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"softSurfer\">\n                <xs:annotation>\n                    <xs:documentation>softSurfer License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Soundex\">\n                <xs:annotation>\n                    <xs:documentation>Soundex License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Spencer-86\">\n                <xs:annotation>\n                    <xs:documentation>Spencer License 86</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Spencer-94\">\n                <xs:annotation>\n                    <xs:documentation>Spencer License 94</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Spencer-99\">\n                <xs:annotation>\n                    <xs:documentation>Spencer License 99</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Sun Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ssh-keyscan\">\n                <xs:annotation>\n                    <xs:documentation>ssh-keyscan License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SSH-OpenSSH\">\n                <xs:annotation>\n                    <xs:documentation>SSH OpenSSH license</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SSH-short\">\n                <xs:annotation>\n                    <xs:documentation>SSH short notice</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SSLeay-standalone\">\n                <xs:annotation>\n                    <xs:documentation>SSLeay License - standalone</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SSPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Server Side Public License, v 1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"StandardML-NJ\">\n                <xs:annotation>\n                    <xs:documentation>Standard ML of New Jersey License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SugarCRM-1.1.3\">\n                <xs:annotation>\n                    <xs:documentation>SugarCRM Public License v1.1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SUL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Sustainable Use License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sun-PPP\">\n                <xs:annotation>\n                    <xs:documentation>Sun PPP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Sun-PPP-2000\">\n                <xs:annotation>\n                    <xs:documentation>Sun PPP License (2000)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SunPro\">\n                <xs:annotation>\n                    <xs:documentation>SunPro License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SWL\">\n                <xs:annotation>\n                    <xs:documentation>Scheme Widget Library (SWL) Software License Agreement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"swrule\">\n                <xs:annotation>\n                    <xs:documentation>swrule License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Symlinks\">\n                <xs:annotation>\n                    <xs:documentation>Symlinks License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TAPR-OHL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>TAPR Open Hardware License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TCL\">\n                <xs:annotation>\n                    <xs:documentation>TCL/TK License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TCP-wrappers\">\n                <xs:annotation>\n                    <xs:documentation>TCP Wrappers License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TermReadKey\">\n                <xs:annotation>\n                    <xs:documentation>TermReadKey License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TGPPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Transitive Grace Period Public Licence 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ThirdEye\">\n                <xs:annotation>\n                    <xs:documentation>ThirdEye License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"threeparttable\">\n                <xs:annotation>\n                    <xs:documentation>threeparttable License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TMate\">\n                <xs:annotation>\n                    <xs:documentation>TMate Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TORQUE-1.1\">\n                <xs:annotation>\n                    <xs:documentation>TORQUE v2.5+ Software License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TOSL\">\n                <xs:annotation>\n                    <xs:documentation>Trusster Open Source License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TPDL\">\n                <xs:annotation>\n                    <xs:documentation>Time::ParseDate License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>THOR Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TrustedQSL\">\n                <xs:annotation>\n                    <xs:documentation>TrustedQSL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TTWL\">\n                <xs:annotation>\n                    <xs:documentation>Text-Tabs+Wrap License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TTYP0\">\n                <xs:annotation>\n                    <xs:documentation>TTYP0 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TU-Berlin-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Technische Universitaet Berlin License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"TU-Berlin-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Technische Universitaet Berlin License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Ubuntu-font-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Ubuntu Font Licence v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UCAR\">\n                <xs:annotation>\n                    <xs:documentation>UCAR License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UCL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Upstream Compatibility License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ulem\">\n                <xs:annotation>\n                    <xs:documentation>ulem License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UMich-Merit\">\n                <xs:annotation>\n                    <xs:documentation>Michigan/Merit Networks License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unicode-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Unicode License v3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unicode-DFS-2015\">\n                <xs:annotation>\n                    <xs:documentation>Unicode License Agreement - Data Files and Software (2015)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unicode-DFS-2016\">\n                <xs:annotation>\n                    <xs:documentation>Unicode License Agreement - Data Files and Software (2016)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unicode-TOU\">\n                <xs:annotation>\n                    <xs:documentation>Unicode Terms of Use</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UnixCrypt\">\n                <xs:annotation>\n                    <xs:documentation>UnixCrypt License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unlicense\">\n                <xs:annotation>\n                    <xs:documentation>The Unlicense</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unlicense-libtelnet\">\n                <xs:annotation>\n                    <xs:documentation>Unlicense - libtelnet variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Unlicense-libwhirlpool\">\n                <xs:annotation>\n                    <xs:documentation>Unlicense - libwhirlpool variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Universal Permissive License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"URT-RLE\">\n                <xs:annotation>\n                    <xs:documentation>Utah Raster Toolkit Run Length Encoded License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Vim\">\n                <xs:annotation>\n                    <xs:documentation>Vim License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"VOSTROM\">\n                <xs:annotation>\n                    <xs:documentation>VOSTROM Public License for Open Source</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"VSL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Vovida Software License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"W3C\">\n                <xs:annotation>\n                    <xs:documentation>W3C Software Notice and License (2002-12-31)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"W3C-19980720\">\n                <xs:annotation>\n                    <xs:documentation>W3C Software Notice and License (1998-07-20)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"W3C-20150513\">\n                <xs:annotation>\n                    <xs:documentation>W3C Software Notice and Document License (2015-05-13)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"w3m\">\n                <xs:annotation>\n                    <xs:documentation>w3m License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Watcom-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Sybase Open Watcom Public License 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Widget-Workshop\">\n                <xs:annotation>\n                    <xs:documentation>Widget Workshop License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Wsuipa\">\n                <xs:annotation>\n                    <xs:documentation>Wsuipa License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"WTFPL\">\n                <xs:annotation>\n                    <xs:documentation>Do What The F*ck You Want To Public License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"wwl\">\n                <xs:annotation>\n                    <xs:documentation>WWL License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"wxWindows\">\n                <xs:annotation>\n                    <xs:documentation>wxWindows Library License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"X11\">\n                <xs:annotation>\n                    <xs:documentation>X11 License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"X11-distribute-modifications-variant\">\n                <xs:annotation>\n                    <xs:documentation>X11 License Distribution Modification Variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"X11-swapped\">\n                <xs:annotation>\n                    <xs:documentation>X11 swapped final paragraphs</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Xdebug-1.03\">\n                <xs:annotation>\n                    <xs:documentation>Xdebug License v 1.03</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Xerox\">\n                <xs:annotation>\n                    <xs:documentation>Xerox License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Xfig\">\n                <xs:annotation>\n                    <xs:documentation>Xfig License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"XFree86-1.1\">\n                <xs:annotation>\n                    <xs:documentation>XFree86 License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"xinetd\">\n                <xs:annotation>\n                    <xs:documentation>xinetd License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"xkeyboard-config-Zinoviev\">\n                <xs:annotation>\n                    <xs:documentation>xkeyboard-config Zinoviev License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"xlock\">\n                <xs:annotation>\n                    <xs:documentation>xlock License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Xnet\">\n                <xs:annotation>\n                    <xs:documentation>X.Net License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"xpp\">\n                <xs:annotation>\n                    <xs:documentation>XPP License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"XSkat\">\n                <xs:annotation>\n                    <xs:documentation>XSkat License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"xzoom\">\n                <xs:annotation>\n                    <xs:documentation>xzoom License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"YPL-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Yahoo! Public License v1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"YPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Yahoo! Public License v1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zed\">\n                <xs:annotation>\n                    <xs:documentation>Zed License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zeeff\">\n                <xs:annotation>\n                    <xs:documentation>Zeeff License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zend-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Zend License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zimbra-1.3\">\n                <xs:annotation>\n                    <xs:documentation>Zimbra Public License v1.3</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zimbra-1.4\">\n                <xs:annotation>\n                    <xs:documentation>Zimbra Public License v1.4</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Zlib\">\n                <xs:annotation>\n                    <xs:documentation>zlib License</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"zlib-acknowledgement\">\n                <xs:annotation>\n                    <xs:documentation>zlib/libpng License with Acknowledgement</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ZPL-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Zope Public License 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ZPL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Zope Public License 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"ZPL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Zope Public License 2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <!-- Exceptions -->\n            <xs:enumeration value=\"389-exception\">\n                <xs:annotation>\n                    <xs:documentation>389 Directory Server Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Asterisk-exception\">\n                <xs:annotation>\n                    <xs:documentation>Asterisk exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Asterisk-linking-protocols-exception\">\n                <xs:annotation>\n                    <xs:documentation>Asterisk linking protocols exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Autoconf-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Autoconf exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Autoconf-exception-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Autoconf exception 3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Autoconf-exception-generic\">\n                <xs:annotation>\n                    <xs:documentation>Autoconf generic exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Autoconf-exception-generic-3.0\">\n                <xs:annotation>\n                    <xs:documentation>Autoconf generic exception for GPL-3.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Autoconf-exception-macro\">\n                <xs:annotation>\n                    <xs:documentation>Autoconf macro exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bison-exception-1.24\">\n                <xs:annotation>\n                    <xs:documentation>Bison exception 1.24</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bison-exception-2.2\">\n                <xs:annotation>\n                    <xs:documentation>Bison exception 2.2</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Bootloader-exception\">\n                <xs:annotation>\n                    <xs:documentation>Bootloader Distribution Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CGAL-linking-exception\">\n                <xs:annotation>\n                    <xs:documentation>CGAL Linking Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Classpath-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Classpath exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"CLISP-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>CLISP exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"cryptsetup-OpenSSL-exception\">\n                <xs:annotation>\n                    <xs:documentation>cryptsetup OpenSSL exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Digia-Qt-LGPL-exception-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Digia Qt LGPL Exception version 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"DigiRule-FOSS-exception\">\n                <xs:annotation>\n                    <xs:documentation>DigiRule FOSS License Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"eCos-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>eCos exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"erlang-otp-linking-exception\">\n                <xs:annotation>\n                    <xs:documentation>Erlang/OTP Linking Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Fawkes-Runtime-exception\">\n                <xs:annotation>\n                    <xs:documentation>Fawkes Runtime Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"FLTK-exception\">\n                <xs:annotation>\n                    <xs:documentation>FLTK exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"fmt-exception\">\n                <xs:annotation>\n                    <xs:documentation>fmt exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Font-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Font exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"freertos-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>FreeRTOS Exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GCC-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>GCC Runtime Library exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GCC-exception-2.0-note\">\n                <xs:annotation>\n                    <xs:documentation>GCC    Runtime Library exception 2.0 - note variant</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GCC-exception-3.1\">\n                <xs:annotation>\n                    <xs:documentation>GCC Runtime Library exception 3.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Gmsh-exception\">\n                <xs:annotation>\n                    <xs:documentation>Gmsh exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GNAT-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNAT exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GNOME-examples-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNOME examples exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GNU-compiler-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU Compiler Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"gnu-javamail-exception\">\n                <xs:annotation>\n                    <xs:documentation>GNU JavaMail exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-389-ds-base-exception\">\n                <xs:annotation>\n                    <xs:documentation>GPL-3.0 389 DS Base Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-interface-exception\">\n                <xs:annotation>\n                    <xs:documentation>GPL-3.0 Interface Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-linking-exception\">\n                <xs:annotation>\n                    <xs:documentation>GPL-3.0 Linking Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-3.0-linking-source-exception\">\n                <xs:annotation>\n                    <xs:documentation>GPL-3.0 Linking Exception (with Corresponding Source)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GPL-CC-1.0\">\n                <xs:annotation>\n                    <xs:documentation>GPL Cooperation Commitment 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GStreamer-exception-2005\">\n                <xs:annotation>\n                    <xs:documentation>GStreamer Exception (2005)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"GStreamer-exception-2008\">\n                <xs:annotation>\n                    <xs:documentation>GStreamer Exception (2008)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"harbour-exception\">\n                <xs:annotation>\n                    <xs:documentation>harbour exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"i2p-gpl-java-exception\">\n                <xs:annotation>\n                    <xs:documentation>i2p GPL+Java Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Independent-modules-exception\">\n                <xs:annotation>\n                    <xs:documentation>Independent Module Linking exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"KiCad-libraries-exception\">\n                <xs:annotation>\n                    <xs:documentation>KiCad Libraries Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LGPL-3.0-linking-exception\">\n                <xs:annotation>\n                    <xs:documentation>LGPL-3.0 Linking Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"libpri-OpenH323-exception\">\n                <xs:annotation>\n                    <xs:documentation>libpri OpenH323 exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Libtool-exception\">\n                <xs:annotation>\n                    <xs:documentation>Libtool Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Linux-syscall-note\">\n                <xs:annotation>\n                    <xs:documentation>Linux Syscall Note</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LLGPL\">\n                <xs:annotation>\n                    <xs:documentation>LLGPL Preamble</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LLVM-exception\">\n                <xs:annotation>\n                    <xs:documentation>LLVM Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"LZMA-exception\">\n                <xs:annotation>\n                    <xs:documentation>LZMA exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mif-exception\">\n                <xs:annotation>\n                    <xs:documentation>Macros and Inline Functions Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"mxml-exception\">\n                <xs:annotation>\n                    <xs:documentation>mxml Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Nokia-Qt-exception-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Nokia Qt LGPL exception 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OCaml-LGPL-linking-exception\">\n                <xs:annotation>\n                    <xs:documentation>OCaml LGPL Linking Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OCCT-exception-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Open CASCADE Exception 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"OpenJDK-assembly-exception-1.0\">\n                <xs:annotation>\n                    <xs:documentation>OpenJDK Assembly exception 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"openvpn-openssl-exception\">\n                <xs:annotation>\n                    <xs:documentation>OpenVPN OpenSSL Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PCRE2-exception\">\n                <xs:annotation>\n                    <xs:documentation>PCRE2 exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"polyparse-exception\">\n                <xs:annotation>\n                    <xs:documentation>Polyparse Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"PS-or-PDF-font-exception-20170817\">\n                <xs:annotation>\n                    <xs:documentation>PS/PDF font exception (2017-08-17)</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"QPL-1.0-INRIA-2004-exception\">\n                <xs:annotation>\n                    <xs:documentation>INRIA QPL 1.0 2004 variant exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Qt-GPL-exception-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Qt GPL exception 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Qt-LGPL-exception-1.1\">\n                <xs:annotation>\n                    <xs:documentation>Qt LGPL exception 1.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Qwt-exception-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Qwt exception 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"romic-exception\">\n                <xs:annotation>\n                    <xs:documentation>Romic Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"RRDtool-FLOSS-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>RRDtool FLOSS exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SANE-exception\">\n                <xs:annotation>\n                    <xs:documentation>SANE Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SHL-2.0\">\n                <xs:annotation>\n                    <xs:documentation>Solderpad Hardware License v2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SHL-2.1\">\n                <xs:annotation>\n                    <xs:documentation>Solderpad Hardware License v2.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"stunnel-exception\">\n                <xs:annotation>\n                    <xs:documentation>stunnel Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"SWI-exception\">\n                <xs:annotation>\n                    <xs:documentation>SWI exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Swift-exception\">\n                <xs:annotation>\n                    <xs:documentation>Swift Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Texinfo-exception\">\n                <xs:annotation>\n                    <xs:documentation>Texinfo exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"u-boot-exception-2.0\">\n                <xs:annotation>\n                    <xs:documentation>U-Boot exception 2.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"UBDL-exception\">\n                <xs:annotation>\n                    <xs:documentation>Unmodified Binary Distribution exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"Universal-FOSS-exception-1.0\">\n                <xs:annotation>\n                    <xs:documentation>Universal FOSS Exception, Version 1.0</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"vsftpd-openssl-exception\">\n                <xs:annotation>\n                    <xs:documentation>vsftpd OpenSSL exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"WxWindows-exception-3.1\">\n                <xs:annotation>\n                    <xs:documentation>WxWindows Library Exception 3.1</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n            <xs:enumeration value=\"x11vnc-openssl-exception\">\n                <xs:annotation>\n                    <xs:documentation>x11vnc OpenSSL Exception</xs:documentation>\n                </xs:annotation>\n            </xs:enumeration>\n        </xs:restriction>\n    </xs:simpleType>\n\n</xs:schema>"
  },
  {
    "path": "schema/json/README.md",
    "content": "# JSON Schema\n\nThis is the JSON schema for output from the JSON presenters (`syft packages <img> -o json`). The required inputs for defining the JSON schema are as follows:\n\n- the value of `internal.JSONSchemaVersion` that governs the schema filename\n- the `Document` struct definition within `github.com/anchore/syft/syft/formats/syftjson/model/document.go` that governs the overall document shape\n- generated `AllTypes()` helper function within the `syft/internal/sourcemetadata` and `syft/internal/packagemetadata` packages\n\nWith regard to testing the JSON schema, integration test cases provided by the developer are used as examples to validate that JSON output from Syft is always valid relative to the `schema/json/schema-$VERSION.json` file.\n\n## Versioning\n\nVersioning the JSON schema must be done manually by changing the `JSONSchemaVersion` constant within `internal/constants.go`.\n\nThis schema is being versioned based off of the \"SchemaVer\" guidelines, which slightly diverges from Semantic Versioning to tailor for the purposes of data models. \n\nGiven a version number format `MODEL.REVISION.ADDITION`:\n\n- `MODEL`: increment when you make a breaking schema change which will prevent interaction with any historical data\n- `REVISION`: increment when you make a schema change which may prevent interaction with some historical data\n- `ADDITION`: increment when you make a schema change that is compatible with all historical data\n\n## Adding a New `pkg.*Metadata` Type\n\nWhen adding a new `pkg.*Metadata` that is assigned to the `pkg.Package.Metadata` struct field you must add a test case to `cmd/syft/internal/test/integration/catalog_packages_cases_test.go` that exercises the new package type with the new metadata.\n\nAdditionally it is important to generate a new JSON schema since the `pkg.Package.Metadata` field is covered by the schema.\n\n## Generating a New Schema\n\nCreate the new schema by running `make generate-json-schema` from the root of the repo:\n\n- If there is **not** an existing schema for the given version, then the new schema file will be written to `schema/json/schema-$VERSION.json`\n- If there is an existing schema for the given version and the new schema matches the existing schema, no action is taken\n- If there is an existing schema for the given version and the new schema **does not** match the existing schema, an error is shown indicating to increment the version appropriately (see the \"Versioning\" section)\n\n***Note: never delete a JSON schema and never change an existing JSON schema once it has been published in a release!*** Only add new schemas with a newly incremented version. All previous schema files must be stored in the `schema/json/` directory.\n"
  },
  {
    "path": "schema/json/schema-1.0.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-1.0.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-1.0.2.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\",\n        \"artifactRelationships\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-1.0.3.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\",\n        \"artifactRelationships\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    }\n  }\n}"
  },
  {
    "path": "schema/json/schema-1.0.4.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"fileMetadata\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/FileMetadata\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        },\n        \"artifacts.metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadata\": {\n      \"required\": [\n        \"location\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-1.0.5.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"fileMetadata\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/FileMetadata\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        },\n        \"artifacts.metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"md5\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadata\": {\n      \"required\": [\n        \"location\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"sha256\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-1.1.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distribution\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"fileClassifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/FileClassifications\"\n          },\n          \"type\": \"array\"\n        },\n        \"fileContents\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/FileContents\"\n          },\n          \"type\": \"array\"\n        },\n        \"fileMetadata\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/FileMetadata\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distribution\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileClassifications\": {\n      \"required\": [\n        \"location\",\n        \"classification\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"classification\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Classification\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileContents\": {\n      \"required\": [\n        \"location\",\n        \"contents\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadata\": {\n      \"required\": [\n        \"location\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Location\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-10.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/10.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-10.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/10.0.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-10.0.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/10.0.2/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-11.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/11.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-11.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/11.0.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-11.0.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/11.0.2/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginMetadata\": {\n      \"properties\": {\n        \"plugin_name\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"author_uri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"plugin_name\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-12.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/12.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-12.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/12.0.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-13.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/13.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-14.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/14.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-15.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/15.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.11.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.11/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.12.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.12/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.13.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.13/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.14.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.14/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.15.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.15/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.16.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.16/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.17.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.17/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.18.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.18/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.19.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.19/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.2/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.20.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.20/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.21.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.21/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.22.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.22/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.23.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.23/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.24.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.24/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.25.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.25/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.26.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.26/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.27.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.27/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"fullText\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"fullText\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.28.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.28/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"fullText\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"fullText\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.29.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.29/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"fullText\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"fullText\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.3.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.3/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.30.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.30/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"fullText\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"fullText\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.31.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.31/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"fullText\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"fullText\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.32.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.32/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.33.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.33/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.34.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.34/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.35.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.35/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.36.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.36/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ]\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.37.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.37/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ]\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"supplier\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.38.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.38/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ]\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"build\": {\n          \"type\": \"string\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"subdir\": {\n          \"type\": \"string\"\n        },\n        \"noarch\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"license_family\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\"\n        },\n        \"fn\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ]\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\"\n        },\n        \"path_type\": {\n          \"type\": \"string\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ]\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ]\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"supplier\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.39.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.39/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"distro\": {\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ]\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"build\": {\n          \"type\": \"string\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"subdir\": {\n          \"type\": \"string\"\n        },\n        \"noarch\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"license_family\": {\n          \"type\": \"string\"\n        },\n        \"md5\": {\n          \"type\": \"string\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\"\n        },\n        \"fn\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ]\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\"\n        },\n        \"path_type\": {\n          \"type\": \"string\"\n        },\n        \"sha256\": {\n          \"type\": \"string\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ]\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"documentation\": {\n          \"type\": \"string\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\"\n        },\n        \"flutter\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"comment\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"os\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ]\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\"\n        },\n        \"libc\": {\n          \"type\": \"string\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"osArch\": {\n          \"type\": \"string\"\n        },\n        \"osName\": {\n          \"type\": \"string\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\"\n        },\n        \"imageType\": {\n          \"type\": \"string\"\n        },\n        \"buildType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ]\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"licenses\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ]\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ]\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"type\": \"string\"\n        },\n        \"created\": {\n          \"type\": \"string\"\n        },\n        \"issuer\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"supplier\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ]\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"constraints\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.4.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.4/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.40.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.40/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor describes what created the document as well as surrounding metadata\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch is slightly odd in how it is expected to map onto data.\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"supplier\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Instead, the Supplier can be determined by the user of syft and passed as a config or flag to help fulfill the NTIA minimum elements.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.41.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.41/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor describes what created the document as well as surrounding metadata\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch is slightly odd in how it is expected to map onto data.\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications, without environment qualifiers\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"supplier\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Instead, the Supplier can be determined by the user of syft and passed as a config or flag to help fulfill the NTIA minimum elements.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.42.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.42/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications, without environment qualifiers\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.43.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.43/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications, without environment qualifiers\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.5.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.5/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.6.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.6/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.7.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.7/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.8.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.8/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.0.9.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.0.9/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"packageID\": {\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"type\": \"string\"\n        },\n        \"channel\": {\n          \"type\": \"string\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\"\n        },\n        \"relRO\": {\n          \"type\": \"string\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ]\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"type\": \"string\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\"\n        },\n        \"commit\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ]\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\"\n        },\n        \"offset\": {\n          \"type\": \"integer\"\n        },\n        \"extent\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ]\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ]\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ]\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\"\n      ]\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ]\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ]\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ]\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.1.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.1.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmFileEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the file download URL\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest is the hash digest of the file hosted at the URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"digest\"\n      ]\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests (for the base package without extras)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the \\\"environment\\\" --conditional expressions that determine whether a package should be installed based on the runtime environment\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications for the base package (without extras)\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmLockExtraVariant\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras contains variants for different extras combinations (PDM may have multiple entries per package)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPdmLockExtraVariant\": {\n      \"properties\": {\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional extras enabled for this variant (e.g., [\\\"toml\\\"], [\\\"dev\\\"], or [\\\"toml\\\", \\\"dev\\\"])\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependencies specific to this extras variant\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files specific to this variant (only populated if different from base)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the environment conditional expression for this variant (e.g., \\\"python_version \\u003c \\\\\\\"3.11\\\\\\\"\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"extras\"\n      ],\n      \"description\": \"PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.1.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.1.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"executables\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\\n\\nDeprecated: in Syft 2.0 the struct tag will be corrected to `osCpe` to match the systemd spec casing.\"\n        },\n        \"appCpe\": {\n          \"type\": \"string\",\n          \"description\": \"AppCpe is a CPE name for the upstream Application, as found in NVD CPE search (e.g. cpe:2.3:a:gnu:coreutils:5.0)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmFileEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the file download URL\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest is the hash digest of the file hosted at the URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"digest\"\n      ]\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests (for the base package without extras)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the \\\"environment\\\" --conditional expressions that determine whether a package should be installed based on the runtime environment\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications for the base package (without extras)\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmLockExtraVariant\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras contains variants for different extras combinations (PDM may have multiple entries per package)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPdmLockExtraVariant\": {\n      \"properties\": {\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional extras enabled for this variant (e.g., [\\\"toml\\\"], [\\\"dev\\\"], or [\\\"toml\\\", \\\"dev\\\"])\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependencies specific to this extras variant\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files specific to this variant (only populated if different from base)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the environment conditional expression for this variant (e.g., \\\"python_version \\u003c \\\\\\\"3.11\\\\\\\"\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"extras\"\n      ],\n      \"description\": \"PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.1.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.1.2/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Artifacts is the list of packages discovered and placed into the catalog\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\",\n          \"description\": \"note: must have omitempty\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\",\n          \"description\": \"Source represents the original object that was cataloged\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\",\n          \"description\": \"Distro represents the Linux distribution that was detected from the source\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\",\n          \"description\": \"Descriptor is a block containing self-describing information about syft\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\",\n          \"description\": \"Schema is a block reserved for defining the version for the shape of this JSON document and where to find the schema document to validate the shape\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is type of entry could be package or project for internal refs\"\n        },\n        \"executables\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\\n\\nDeprecated: in Syft 2.0 the struct tag will be corrected to `osCpe` to match the systemd spec casing.\"\n        },\n        \"appCpe\": {\n          \"type\": \"string\",\n          \"description\": \"AppCpe is a CPE name for the upstream Application, as found in NVD CPE search (e.g. cpe:2.3:a:gnu:coreutils:5.0)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Arbitrary key-value pairs that can be used to annotate a location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmFileEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the file download URL\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest is the hash digest of the file hosted at the URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"digest\"\n      ]\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests (for the base package without extras)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the \\\"environment\\\" --conditional expressions that determine whether a package should be installed based on the runtime environment\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications for the base package (without extras)\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmLockExtraVariant\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras contains variants for different extras combinations (PDM may have multiple entries per package)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPdmLockExtraVariant\": {\n      \"properties\": {\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional extras enabled for this variant (e.g., [\\\"toml\\\"], [\\\"dev\\\"], or [\\\"toml\\\", \\\"dev\\\"])\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependencies specific to this extras variant\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files specific to this variant (only populated if different from base)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the environment conditional expression for this variant (e.g., \\\"python_version \\u003c \\\\\\\"3.11\\\\\\\"\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"extras\"\n      ],\n      \"description\": \"PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-16.1.3.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.1.3/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Artifacts is the list of packages discovered and placed into the catalog\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\",\n          \"description\": \"note: must have omitempty\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\",\n          \"description\": \"Source represents the original object that was cataloged\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\",\n          \"description\": \"Distro represents the Linux distribution that was detected from the source\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\",\n          \"description\": \"Descriptor is a block containing self-describing information about syft\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\",\n          \"description\": \"Schema is a block reserved for defining the version for the shape of this JSON document and where to find the schema document to validate the shape\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is type of entry could be package or project for internal refs\"\n        },\n        \"executables\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\\n\\nDeprecated: in Syft 2.0 the struct tag will be corrected to `osCpe` to match the systemd spec casing.\"\n        },\n        \"appCpe\": {\n          \"type\": \"string\",\n          \"description\": \"AppCpe is a CPE name for the upstream Application, as found in NVD CPE search (e.g. cpe:2.3:a:gnu:coreutils:5.0)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        },\n        \"parts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/GgufFileHeader\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Parts contains headers from additional GGUF files that were merged\\ninto this package during post-processing (e.g., from OCI layers without model names).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Arbitrary key-value pairs that can be used to annotate a location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmFileEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the file download URL\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest is the hash digest of the file hosted at the URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"digest\"\n      ]\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests (for the base package without extras)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the \\\"environment\\\" --conditional expressions that determine whether a package should be installed based on the runtime environment\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications for the base package (without extras)\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmLockExtraVariant\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras contains variants for different extras combinations (PDM may have multiple entries per package)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPdmLockExtraVariant\": {\n      \"properties\": {\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional extras enabled for this variant (e.g., [\\\"toml\\\"], [\\\"dev\\\"], or [\\\"toml\\\", \\\"dev\\\"])\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependencies specific to this extras variant\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files specific to this variant (only populated if different from base)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the environment conditional expression for this variant (e.g., \\\"python_version \\u003c \\\\\\\"3.11\\\\\\\"\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"extras\"\n      ],\n      \"description\": \"PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-2.0.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distro\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distro\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-2.0.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distro\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distro\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-2.0.2.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Distro\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"idLike\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Distro\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.0.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Release\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\",\n        \"metadataType\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Release\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.0.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"type\": \"integer\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.1.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.1.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\",\n        \"h1Digest\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.2.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.2.2.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.2.3.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.2.4.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.3.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.3.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"package\",\n        \"version\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-3.3.2.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmdbMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"package\",\n        \"version\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-4.0.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanLockMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"KbPackageMetadata\": {\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"package\",\n        \"version\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-4.1.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanLockMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"KbPackageMetadata\": {\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"package\",\n        \"version\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-5.0.0.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"virtual_path\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"virtual_path\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanLockMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"KbPackageMetadata\": {\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}"
  },
  {
    "path": "schema/json/schema-5.0.1.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"$ref\": \"#/definitions/Document\",\n  \"definitions\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ApkMetadata\": {\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CargoPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Classification\": {\n      \"required\": [\n        \"class\",\n        \"virtual_path\",\n        \"metadata\"\n      ],\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"virtual_path\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"CocoapodsMetadata\": {\n      \"required\": [\n        \"checksum\"\n      ],\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanLockMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"ConanMetadata\": {\n      \"required\": [\n        \"ref\"\n      ],\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Coordinates\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DartPubMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Descriptor\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Digest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Document\": {\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Source\"\n        },\n        \"distro\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Descriptor\"\n        },\n        \"schema\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/Schema\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DotnetDepsMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"DpkgMetadata\": {\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"metadata\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"FileMetadataEntry\": {\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ],\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GemMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"GolangBinMetadata\": {\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"KbPackageMetadata\": {\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Package\": {\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/definitions/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/definitions/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerAuthors\": {\n      \"required\": [\n        \"name\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/definitions/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomParent\": {\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProject\": {\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PomProperties\": {\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"extraFields\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PortageMetadata\": {\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"required\": [\n        \"url\"\n      ],\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileDigest\": {\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonFileRecord\": {\n      \"required\": [\n        \"path\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"PythonPackageMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n          \"$ref\": \"#/definitions/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Relationship\": {\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmMetadata\": {\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ],\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"RpmdbFileRecord\": {\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/definitions/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Schema\": {\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"SearchResult\": {\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ],\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Secrets\": {\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ],\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/definitions/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n            \"$ref\": \"#/definitions/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ],\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"additionalProperties\": true\n        }\n      },\n      \"additionalProperties\": true,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-5.1.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"type\": \"string\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Classification\": {\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"virtual_path\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"class\",\n        \"virtual_path\",\n        \"metadata\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-6.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"Classification\": {\n      \"properties\": {\n        \"class\": {\n          \"type\": \"string\"\n        },\n        \"virtual_path\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"class\",\n        \"virtual_path\",\n        \"metadata\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        },\n        \"classifications\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Classification\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-6.1.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"realPath\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"realPath\",\n        \"virtualPath\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-6.2.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"realPath\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"realPath\",\n        \"virtualPath\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"virtualPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Coordinates\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.3.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.4.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.5.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-7.1.6.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"license\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"license\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"licenses\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"license\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-8.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-8.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://github.com/anchore/syft/syft/formats/syftjson/model/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"target\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"type\",\n        \"target\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-9.0.0.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/9.0.0/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-9.0.1.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/9.0.1/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-9.0.2.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/9.0.2/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"type\": \"string\"\n        },\n        \"gid\": {\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        },\n        \"link\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"AlpmMetadata\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\"\n        },\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"packager\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"validation\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ]\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"ApkMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ]\n    },\n    \"BinaryMetadata\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ]\n    },\n    \"CargoPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"checksum\": {\n          \"type\": \"string\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ]\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ]\n    },\n    \"CocoapodsMetadata\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ]\n    },\n    \"ConanLockMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        },\n        \"package_id\": {\n          \"type\": \"string\"\n        },\n        \"prev\": {\n          \"type\": \"string\"\n        },\n        \"requires\": {\n          \"type\": \"string\"\n        },\n        \"build_requires\": {\n          \"type\": \"string\"\n        },\n        \"py_requires\": {\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"context\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"ConanMetadata\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ]\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"DartPubMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"configuration\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Secrets\"\n          },\n          \"type\": \"array\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ]\n    },\n    \"DotnetDepsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"sha512\": {\n          \"type\": \"string\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ]\n    },\n    \"DotnetPortableExecutableMetadata\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\"\n        },\n        \"comments\": {\n          \"type\": \"string\"\n        },\n        \"internalName\": {\n          \"type\": \"string\"\n        },\n        \"companyName\": {\n          \"type\": \"string\"\n        },\n        \"productName\": {\n          \"type\": \"string\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ]\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ]\n    },\n    \"DpkgMetadata\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\"\n        },\n        \"contents\": {\n          \"type\": \"string\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ]\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\"\n        },\n        \"userID\": {\n          \"type\": \"integer\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ]\n    },\n    \"GemMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"GolangBinMetadata\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ]\n    },\n    \"GolangModMetadata\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"HackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ]\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"namedSections\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"patternProperties\": {\n                \".*\": {\n                  \"type\": \"string\"\n                }\n              },\n              \"type\": \"object\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"JavaMetadata\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/PomProperties\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/PomProject\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ]\n    },\n    \"KbPackageMetadata\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\"\n        },\n        \"kb\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ]\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ]\n    },\n    \"LinuxKernelMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"type\": \"string\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ]\n    },\n    \"LinuxKernelModuleMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"license\": {\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"versionID\": {\n          \"type\": \"string\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\"\n        },\n        \"buildID\": {\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"type\": \"string\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\"\n        },\n        \"variant\": {\n          \"type\": \"string\"\n        },\n        \"variantID\": {\n          \"type\": \"string\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"layerID\": {\n          \"type\": \"string\"\n        },\n        \"annotations\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"MixLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"NixStoreMetadata\": {\n      \"properties\": {\n        \"outputHash\": {\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\",\n        \"files\"\n      ]\n    },\n    \"NpmPackageJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ]\n    },\n    \"NpmPackageLockJSONMetadata\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\"\n        },\n        \"integrity\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\"\n      ]\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinaryMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CargoPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoapodsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/ConanMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GemMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangBinMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/GolangModMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/HackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/KbPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModuleMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/MixLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/NpmPackageLockJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerJSONMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackageMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonRequirementsMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescriptionFileMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RebarLockMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmMetadata\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerMetadata\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ]\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"email\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"type\": \"string\"\n        },\n        \"shasum\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ]\n    },\n    \"PhpComposerJSONMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\"\n        },\n        \"require\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"provide\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"require-dev\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"suggest\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"homepage\": {\n          \"type\": \"string\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ]\n    },\n    \"PomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/PomParent\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ]\n    },\n    \"PomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"groupId\": {\n          \"type\": \"string\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"type\": \"string\"\n        },\n        \"extraFields\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ]\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PortageMetadata\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ]\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"commitId\": {\n          \"type\": \"string\"\n        },\n        \"vcs\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ]\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ]\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\"\n        },\n        \"size\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ]\n    },\n    \"PythonPackageMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ]\n    },\n    \"PythonPipfileLockMetadata\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"index\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ]\n    },\n    \"PythonRequirementsMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        },\n        \"markers\": {\n          \"patternProperties\": {\n            \".*\": {\n              \"type\": \"string\"\n            }\n          },\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"extras\",\n        \"versionConstraint\",\n        \"url\",\n        \"markers\"\n      ]\n    },\n    \"RDescriptionFileMetadata\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"author\": {\n          \"type\": \"string\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"repository\": {\n          \"type\": \"string\"\n        },\n        \"built\": {\n          \"type\": \"string\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"RebarLockMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ]\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\"\n        },\n        \"child\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ]\n    },\n    \"RpmMetadata\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\"\n        },\n        \"release\": {\n          \"type\": \"string\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"vendor\": {\n          \"type\": \"string\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmdbFileRecord\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"modularityLabel\",\n        \"files\"\n      ]\n    },\n    \"RpmdbFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"type\": \"integer\"\n        },\n        \"size\": {\n          \"type\": \"integer\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\"\n        },\n        \"userName\": {\n          \"type\": \"string\"\n        },\n        \"groupName\": {\n          \"type\": \"string\"\n        },\n        \"flags\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ]\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ]\n    },\n    \"SearchResult\": {\n      \"properties\": {\n        \"classification\": {\n          \"type\": \"string\"\n        },\n        \"lineNumber\": {\n          \"type\": \"integer\"\n        },\n        \"lineOffset\": {\n          \"type\": \"integer\"\n        },\n        \"seekPosition\": {\n          \"type\": \"integer\"\n        },\n        \"length\": {\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classification\",\n        \"lineNumber\",\n        \"lineOffset\",\n        \"seekPosition\",\n        \"length\"\n      ]\n    },\n    \"Secrets\": {\n      \"properties\": {\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\"\n        },\n        \"secrets\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/SearchResult\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"location\",\n        \"secrets\"\n      ]\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": true\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ]\n    },\n    \"SwiftPackageManagerMetadata\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ]\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/schema-latest.json",
    "content": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"anchore.io/schema/syft/json/16.1.3/document\",\n  \"$ref\": \"#/$defs/Document\",\n  \"$defs\": {\n    \"AlpmDbEntry\": {\n      \"properties\": {\n        \"basepackage\": {\n          \"type\": \"string\",\n          \"description\": \"BasePackage is the base package name this package was built from (source package in Arch build system)\"\n        },\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the desc file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the desc file\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \\\"any\\\" for arch-independent packages)\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the installed size in bytes\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is the name and email of the person who packaged this (RFC822 format)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"validation\": {\n          \"type\": \"string\",\n          \"description\": \"Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\"\n        },\n        \"reason\": {\n          \"type\": \"integer\",\n          \"description\": \"Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        },\n        \"backup\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/AlpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Backup is the list of configuration files that pacman backs up before upgrades\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the runtime dependencies required by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"basepackage\",\n        \"package\",\n        \"version\",\n        \"description\",\n        \"architecture\",\n        \"size\",\n        \"packager\",\n        \"url\",\n        \"validation\",\n        \"reason\",\n        \"files\",\n        \"backup\"\n      ],\n      \"description\": \"AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\"\n    },\n    \"AlpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g. regular file, directory, symlink)\"\n        },\n        \"uid\": {\n          \"type\": \"string\",\n          \"description\": \"UID is the file owner user ID as recorded by pacman\"\n        },\n        \"gid\": {\n          \"type\": \"string\",\n          \"description\": \"GID is the file owner group ID as recorded by pacman\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"format\": \"date-time\",\n          \"description\": \"Time is the file modification timestamp\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes\"\n        },\n        \"link\": {\n          \"type\": \"string\",\n          \"description\": \"Link is the symlink target path if this is a symlink\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains file content hashes for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\"\n    },\n    \"ApkDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the installed file\"\n        },\n        \"originPackage\": {\n          \"type\": \"string\",\n          \"description\": \"OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer name and email\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the installed file\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the upstream project URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes (.apk file size)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in bytes\"\n        },\n        \"pullDependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the runtime dependencies required by this package\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are virtual packages provided by this package (for capability-based dependencies)\"\n        },\n        \"pullChecksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the package content checksum for integrity verification\"\n        },\n        \"gitCommitOfApkPort\": {\n          \"type\": \"string\",\n          \"description\": \"GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ApkFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"originPackage\",\n        \"maintainer\",\n        \"version\",\n        \"architecture\",\n        \"url\",\n        \"description\",\n        \"size\",\n        \"installedSize\",\n        \"pullDependencies\",\n        \"provides\",\n        \"pullChecksum\",\n        \"gitCommitOfApkPort\",\n        \"files\"\n      ],\n      \"description\": \"ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\"\n    },\n    \"ApkFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"ownerUid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerUID is the file owner user ID\"\n        },\n        \"ownerGid\": {\n          \"type\": \"string\",\n          \"description\": \"OwnerGID is the file owner group ID\"\n        },\n        \"permissions\": {\n          \"type\": \"string\",\n          \"description\": \"Permissions is the file permission mode string (e.g. \\\"0755\\\", \\\"0644\\\")\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash for integrity verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\"\n    },\n    \"BinarySignature\": {\n      \"properties\": {\n        \"matches\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ClassifierMatch\"\n          },\n          \"type\": \"array\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"matches\"\n      ],\n      \"description\": \"BinarySignature represents a set of matched values within a binary file.\"\n    },\n    \"BitnamiSbomEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the Bitnami SPDX file\"\n        },\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\"\n        },\n        \"distro\": {\n          \"type\": \"string\",\n          \"description\": \"Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\"\n        },\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the Bitnami SPDX file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installation path in the filesystem where the package is located\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file paths owned by this package (tracked via SPDX relationships)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"arch\",\n        \"distro\",\n        \"revision\",\n        \"version\",\n        \"path\",\n        \"files\"\n      ],\n      \"description\": \"BitnamiSBOMEntry represents all captured data from Bitnami packages described in Bitnami' SPDX files.\"\n    },\n    \"CConanFileEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanfileEntry represents a single \\\"Requires\\\" entry from a conanfile.txt.\"\n    },\n    \"CConanInfoEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConaninfoEntry represents a single \\\"full_requires\\\" entry from a conaninfo.txt.\"\n    },\n    \"CConanLockEntry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"package_id\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\"\n        },\n        \"prev\": {\n          \"type\": \"string\",\n          \"description\": \"Prev is the previous lock entry reference for versioning\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires are the runtime package dependencies\"\n        },\n        \"build_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"BuildRequires are the build-time dependencies (e.g. cmake, compilers)\"\n        },\n        \"py_requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PythonRequires are the Python dependencies needed for Conan recipes\"\n        },\n        \"options\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the package in Conan cache\"\n        },\n        \"context\": {\n          \"type\": \"string\",\n          \"description\": \"Context is the build context information\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV1LockEntry represents a single \\\"node\\\" entry from a conan.lock V1 file.\"\n    },\n    \"CConanLockV2Entry\": {\n      \"properties\": {\n        \"ref\": {\n          \"type\": \"string\",\n          \"description\": \"Ref is the package reference string in format name/version@user/channel\"\n        },\n        \"packageID\": {\n          \"type\": \"string\",\n          \"description\": \"PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\"\n        },\n        \"username\": {\n          \"type\": \"string\",\n          \"description\": \"Username is the Conan user/organization name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\"\n        },\n        \"recipeRevision\": {\n          \"type\": \"string\",\n          \"description\": \"RecipeRevision is a git-like revision hash (RREV) of the recipe\"\n        },\n        \"packageRevision\": {\n          \"type\": \"string\",\n          \"description\": \"PackageRevision is a git-like revision hash of the built binary package\"\n        },\n        \"timestamp\": {\n          \"type\": \"string\",\n          \"description\": \"TimeStamp is when this package was built/locked\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ref\"\n      ],\n      \"description\": \"ConanV2LockEntry represents a single \\\"node\\\" entry from a conan.lock V2 file.\"\n    },\n    \"CPE\": {\n      \"properties\": {\n        \"cpe\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the CPE string identifier.\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source where this CPE was obtained or generated from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cpe\"\n      ],\n      \"description\": \"CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\"\n    },\n    \"ClassifierMatch\": {\n      \"properties\": {\n        \"classifier\": {\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"classifier\",\n        \"location\"\n      ],\n      \"description\": \"ClassifierMatch represents a single matched value within a binary file and the \\\"class\\\" name the search pattern represents.\"\n    },\n    \"CocoaPodfileLockEntry\": {\n      \"properties\": {\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"checksum\"\n      ],\n      \"description\": \"CocoaPodfileLockEntry represents a single entry from the \\\"Pods\\\" section of a Podfile.lock file.\"\n    },\n    \"CondaLink\": {\n      \"properties\": {\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the original path where the package was extracted from cache.\"\n        },\n        \"type\": {\n          \"type\": \"integer\",\n          \"description\": \"Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"source\",\n        \"type\"\n      ],\n      \"description\": \"CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\"\n    },\n    \"CondaMetadataEntry\": {\n      \"properties\": {\n        \"arch\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture for the package (e.g., \\\"arm64\\\", \\\"x86_64\\\").\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the conda-meta JSON file.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the conda-meta JSON file.\"\n        },\n        \"build\": {\n          \"type\": \"string\",\n          \"description\": \"Build is the build string identifier (e.g., \\\"h90dfc92_1014\\\").\"\n        },\n        \"build_number\": {\n          \"type\": \"integer\",\n          \"description\": \"BuildNumber is the sequential build number for this version.\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is the Conda channel URL where the package was retrieved from.\"\n        },\n        \"subdir\": {\n          \"type\": \"string\",\n          \"description\": \"Subdir is the subdirectory within the channel (e.g., \\\"osx-arm64\\\", \\\"linux-64\\\").\"\n        },\n        \"noarch\": {\n          \"type\": \"string\",\n          \"description\": \"Noarch indicates if the package is platform-independent (e.g., \\\"python\\\", \\\"generic\\\").\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is the package license identifier.\"\n        },\n        \"license_family\": {\n          \"type\": \"string\",\n          \"description\": \"LicenseFamily is the general license category (e.g., \\\"MIT\\\", \\\"Apache\\\", \\\"GPL\\\").\"\n        },\n        \"md5\": {\n          \"type\": \"string\",\n          \"description\": \"MD5 is the MD5 hash of the package archive.\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the package archive.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the package archive size in bytes.\"\n        },\n        \"timestamp\": {\n          \"type\": \"integer\",\n          \"description\": \"Timestamp is the Unix timestamp when the package was built.\"\n        },\n        \"fn\": {\n          \"type\": \"string\",\n          \"description\": \"Filename is the original package archive filename (e.g., \\\"zlib-1.2.11-h90dfc92_1014.tar.bz2\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the full download URL for the package archive.\"\n        },\n        \"extracted_package_dir\": {\n          \"type\": \"string\",\n          \"description\": \"ExtractedPackageDir is the local cache directory where the package was extracted.\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends is the list of runtime dependencies with version constraints.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is the list of files installed by this package.\"\n        },\n        \"paths_data\": {\n          \"$ref\": \"#/$defs/CondaPathsData\",\n          \"description\": \"PathsData contains detailed file metadata from the paths.json file.\"\n        },\n        \"link\": {\n          \"$ref\": \"#/$defs/CondaLink\",\n          \"description\": \"Link contains installation source metadata from the link.json file.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"build\",\n        \"build_number\"\n      ],\n      \"description\": \"CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\"\n    },\n    \"CondaPathData\": {\n      \"properties\": {\n        \"_path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the Conda environment root.\"\n        },\n        \"path_type\": {\n          \"type\": \"string\",\n          \"description\": \"PathType indicates the link type for the file (e.g., \\\"hardlink\\\", \\\"softlink\\\", \\\"directory\\\").\"\n        },\n        \"sha256\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256 is the SHA-256 hash of the file contents.\"\n        },\n        \"sha256_in_prefix\": {\n          \"type\": \"string\",\n          \"description\": \"SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\"\n        },\n        \"size_in_bytes\": {\n          \"type\": \"integer\",\n          \"description\": \"SizeInBytes is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"_path\",\n        \"path_type\",\n        \"sha256\",\n        \"sha256_in_prefix\",\n        \"size_in_bytes\"\n      ],\n      \"description\": \"CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\"\n    },\n    \"CondaPathsData\": {\n      \"properties\": {\n        \"paths_version\": {\n          \"type\": \"integer\",\n          \"description\": \"PathsVersion is the schema version of the paths data format.\"\n        },\n        \"paths\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CondaPathData\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Paths is the list of file metadata entries for all files in the package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"paths_version\",\n        \"paths\"\n      ],\n      \"description\": \"CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\"\n    },\n    \"Coordinates\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g.\"\n    },\n    \"DartPubspec\": {\n      \"properties\": {\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the package homepage URL\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is the source code repository URL\"\n        },\n        \"documentation\": {\n          \"type\": \"string\",\n          \"description\": \"Documentation is the documentation site URL\"\n        },\n        \"publish_to\": {\n          \"type\": \"string\",\n          \"description\": \"PublishTo is the package repository to publish to, or \\\"none\\\" to prevent accidental publishing\"\n        },\n        \"environment\": {\n          \"$ref\": \"#/$defs/DartPubspecEnvironment\",\n          \"description\": \"Environment is SDK version constraints for Dart and Flutter\"\n        },\n        \"platforms\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Platforms are the supported platforms (Android, iOS, web, etc.)\"\n        },\n        \"ignored_advisories\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"IgnoredAdvisories are the security advisories to explicitly ignore for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspec is a struct that represents a package described in a pubspec.yaml file\"\n    },\n    \"DartPubspecEnvironment\": {\n      \"properties\": {\n        \"sdk\": {\n          \"type\": \"string\",\n          \"description\": \"SDK is the Dart SDK version constraint (e.g. \\\"\\u003e=2.12.0 \\u003c3.0.0\\\")\"\n        },\n        \"flutter\": {\n          \"type\": \"string\",\n          \"description\": \"Flutter is the Flutter SDK version constraint if this is a Flutter package\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\"\n    },\n    \"DartPubspecLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the pubspec.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the pubspec.lock file\"\n        },\n        \"hosted_url\": {\n          \"type\": \"string\",\n          \"description\": \"HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\"\n        },\n        \"vcs_url\": {\n          \"type\": \"string\",\n          \"description\": \"VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"DartPubspecLockEntry is a struct that represents a single entry found in the \\\"packages\\\" section in a Dart pubspec.lock file.\"\n    },\n    \"Descriptor\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the tool that generated this SBOM (e.g., \\\"syft\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the tool that generated this SBOM.\"\n        },\n        \"configuration\": {\n          \"description\": \"Configuration contains the tool configuration used during SBOM generation.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\"\n    },\n    \"Digest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm specifies the hash algorithm used (e.g., \\\"sha256\\\", \\\"md5\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hexadecimal string representation of the hash.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"Digest represents a cryptographic hash of file contents.\"\n    },\n    \"Document\": {\n      \"properties\": {\n        \"artifacts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Package\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Artifacts is the list of packages discovered and placed into the catalog\"\n        },\n        \"artifactRelationships\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relationship\"\n          },\n          \"type\": \"array\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/File\"\n          },\n          \"type\": \"array\",\n          \"description\": \"note: must have omitempty\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\",\n          \"description\": \"Source represents the original object that was cataloged\"\n        },\n        \"distro\": {\n          \"$ref\": \"#/$defs/LinuxRelease\",\n          \"description\": \"Distro represents the Linux distribution that was detected from the source\"\n        },\n        \"descriptor\": {\n          \"$ref\": \"#/$defs/Descriptor\",\n          \"description\": \"Descriptor is a block containing self-describing information about syft\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/$defs/Schema\",\n          \"description\": \"Schema is a block reserved for defining the version for the shape of this JSON document and where to find the schema document to validate the shape\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"artifacts\",\n        \"artifactRelationships\",\n        \"source\",\n        \"distro\",\n        \"descriptor\",\n        \"schema\"\n      ],\n      \"description\": \"Document represents the syft cataloging findings as a JSON document\"\n    },\n    \"DotnetDepsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the deps.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the deps.json file\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the relative path to the package within the deps structure (e.g. \\\"app.metrics/3.0.0\\\")\"\n        },\n        \"sha512\": {\n          \"type\": \"string\",\n          \"description\": \"Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\"\n        },\n        \"hashPath\": {\n          \"type\": \"string\",\n          \"description\": \"HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \\\"app.metrics.3.0.0.nupkg.sha512\\\")\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is type of entry could be package or project for internal refs\"\n        },\n        \"executables\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Executables are the map of .NET Portable Executable files within this package with their version resources\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"path\",\n        \"sha512\",\n        \"hashPath\"\n      ],\n      \"description\": \"DotnetDepsEntry is a struct that represents a single entry found in the \\\"libraries\\\" section in a .NET [*.]deps.json file.\"\n    },\n    \"DotnetPackagesLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the packages.lock.json file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the packages.lock.json file\"\n        },\n        \"contentHash\": {\n          \"type\": \"string\",\n          \"description\": \"ContentHash is the hash of the package content for verification\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"contentHash\",\n        \"type\"\n      ],\n      \"description\": \"DotnetPackagesLockEntry is a struct that represents a single entry found in the \\\"dependencies\\\" section in a .NET packages.lock.json file.\"\n    },\n    \"DotnetPortableExecutableEntry\": {\n      \"properties\": {\n        \"assemblyVersion\": {\n          \"type\": \"string\",\n          \"description\": \"AssemblyVersion is the .NET assembly version number (strong-named version)\"\n        },\n        \"legalCopyright\": {\n          \"type\": \"string\",\n          \"description\": \"LegalCopyright is the copyright notice string\"\n        },\n        \"comments\": {\n          \"type\": \"string\",\n          \"description\": \"Comments are additional comments or description embedded in PE resources\"\n        },\n        \"internalName\": {\n          \"type\": \"string\",\n          \"description\": \"InternalName is the internal name of the file\"\n        },\n        \"companyName\": {\n          \"type\": \"string\",\n          \"description\": \"CompanyName is the company that produced the file\"\n        },\n        \"productName\": {\n          \"type\": \"string\",\n          \"description\": \"ProductName is the name of the product this file is part of\"\n        },\n        \"productVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ProductVersion is the version of the product (may differ from AssemblyVersion)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"assemblyVersion\",\n        \"legalCopyright\",\n        \"companyName\",\n        \"productName\",\n        \"productVersion\"\n      ],\n      \"description\": \"DotnetPortableExecutableEntry is a struct that represents a single entry found within \\\"VersionResources\\\" section of a .NET Portable Executable binary file.\"\n    },\n    \"DpkgArchiveEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\"\n    },\n    \"DpkgDbEntry\": {\n      \"properties\": {\n        \"package\": {\n          \"type\": \"string\",\n          \"description\": \"Package is the package name as found in the status file\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source package name this binary was built from (one source can produce multiple binary packages)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the binary package version as found in the status file\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \\\"all\\\", or \\\"source\\\" for source packages)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\"\n        },\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is the total size of installed files in kilobytes\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \\\"libdigest-md5-perl (= 2.55.01)\\\")\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\"\n        },\n        \"preDepends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DpkgFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"package\",\n        \"source\",\n        \"version\",\n        \"sourceVersion\",\n        \"architecture\",\n        \"maintainer\",\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\"\n    },\n    \"DpkgFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\"\n        },\n        \"isConfigFile\": {\n          \"type\": \"boolean\",\n          \"description\": \"IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"isConfigFile\"\n      ],\n      \"description\": \"DpkgFileRecord represents a single file attributed to a debian package.\"\n    },\n    \"ELFSecurityFeatures\": {\n      \"properties\": {\n        \"symbolTableStripped\": {\n          \"type\": \"boolean\",\n          \"description\": \"SymbolTableStripped indicates whether debugging symbols have been removed.\"\n        },\n        \"stackCanary\": {\n          \"type\": \"boolean\",\n          \"description\": \"StackCanary indicates whether stack smashing protection is enabled.\"\n        },\n        \"nx\": {\n          \"type\": \"boolean\",\n          \"description\": \"NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\"\n        },\n        \"relRO\": {\n          \"type\": \"string\",\n          \"description\": \"RelocationReadOnly indicates the RELRO protection level.\"\n        },\n        \"pie\": {\n          \"type\": \"boolean\",\n          \"description\": \"PositionIndependentExecutable indicates whether the binary is compiled as PIE.\"\n        },\n        \"dso\": {\n          \"type\": \"boolean\",\n          \"description\": \"DynamicSharedObject indicates whether the binary is a shared library.\"\n        },\n        \"safeStack\": {\n          \"type\": \"boolean\",\n          \"description\": \"LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\\nsee https://clang.llvm.org/docs/SafeStack.html\"\n        },\n        \"cfi\": {\n          \"type\": \"boolean\",\n          \"description\": \"ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\\nsee https://clang.llvm.org/docs/ControlFlowIntegrity.html\"\n        },\n        \"fortify\": {\n          \"type\": \"boolean\",\n          \"description\": \"ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\\nsee https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"symbolTableStripped\",\n        \"nx\",\n        \"relRO\",\n        \"pie\",\n        \"dso\"\n      ],\n      \"description\": \"ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\"\n    },\n    \"ElfBinaryPackageNoteJsonPayload\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the type of the package (e.g. \\\"rpm\\\", \\\"deb\\\", \\\"apk\\\", etc.)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture of the binary package (e.g. \\\"amd64\\\", \\\"arm\\\", etc.)\"\n        },\n        \"osCPE\": {\n          \"type\": \"string\",\n          \"description\": \"OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\\n\\nDeprecated: in Syft 2.0 the struct tag will be corrected to `osCpe` to match the systemd spec casing.\"\n        },\n        \"appCpe\": {\n          \"type\": \"string\",\n          \"description\": \"AppCpe is a CPE name for the upstream Application, as found in NVD CPE search (e.g. cpe:2.3:a:gnu:coreutils:5.0)\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OS is the OS name, typically corresponding to ID in os-release (e.g. \\\"fedora\\\")\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \\\"33\\\")\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is a context-specific name for the system that the binary package is intended to run on or a part of\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the individual or organization that produced the source code for the binary\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo is the URL to the source repository for which the binary was built from\"\n        },\n        \"commit\": {\n          \"type\": \"string\",\n          \"description\": \"Commit is the commit hash of the source repository for which the binary was built from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\"\n    },\n    \"ElixirMixLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the mix.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the mix.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\"\n    },\n    \"ErlangRebarLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the rebar.lock file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the rebar.lock file\"\n        },\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\"\n        },\n        \"pkgHashExt\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"pkgHash\",\n        \"pkgHashExt\"\n      ],\n      \"description\": \"ErlangRebarLockEntry represents a single package entry from the \\\"deps\\\" section within an Erlang rebar.lock file.\"\n    },\n    \"Executable\": {\n      \"properties\": {\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format denotes either ELF, Mach-O, or PE\"\n        },\n        \"hasExports\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasExports indicates whether the binary exports symbols.\"\n        },\n        \"hasEntrypoint\": {\n          \"type\": \"boolean\",\n          \"description\": \"HasEntrypoint indicates whether the binary has an entry point function.\"\n        },\n        \"importedLibraries\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ImportedLibraries lists the shared libraries required by this executable.\"\n        },\n        \"elfSecurityFeatures\": {\n          \"$ref\": \"#/$defs/ELFSecurityFeatures\",\n          \"description\": \"ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"format\",\n        \"hasExports\",\n        \"hasEntrypoint\",\n        \"importedLibraries\"\n      ],\n      \"description\": \"Executable contains metadata about binary files and their security features.\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for this file within the SBOM.\"\n        },\n        \"location\": {\n          \"$ref\": \"#/$defs/Coordinates\",\n          \"description\": \"Location is the file path and layer information where this file was found.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/$defs/FileMetadataEntry\",\n          \"description\": \"Metadata contains filesystem metadata such as permissions, ownership, and file type.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the file contents for small files.\"\n        },\n        \"digests\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Digests contains cryptographic hashes of the file contents.\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/FileLicense\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses contains license information discovered within this file.\"\n        },\n        \"executable\": {\n          \"$ref\": \"#/$defs/Executable\",\n          \"description\": \"Executable contains executable metadata if this file is a binary.\"\n        },\n        \"unknowns\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Unknowns contains unknown fields for forward compatibility.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"location\"\n      ],\n      \"description\": \"File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\"\n    },\n    \"FileLicense\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or text as found in the file.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"evidence\": {\n          \"$ref\": \"#/$defs/FileLicenseEvidence\",\n          \"description\": \"Evidence contains supporting evidence for this license detection.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\"\n      ],\n      \"description\": \"FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\"\n    },\n    \"FileLicenseEvidence\": {\n      \"properties\": {\n        \"confidence\": {\n          \"type\": \"integer\",\n          \"description\": \"Confidence is the confidence score for this license detection (0-100).\"\n        },\n        \"offset\": {\n          \"type\": \"integer\",\n          \"description\": \"Offset is the byte offset where the license text starts in the file.\"\n        },\n        \"extent\": {\n          \"type\": \"integer\",\n          \"description\": \"Extent is the length of the license text in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"confidence\",\n        \"offset\",\n        \"extent\"\n      ],\n      \"description\": \"FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\"\n    },\n    \"FileMetadataEntry\": {\n      \"properties\": {\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the Unix file permission mode in octal format.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the file type (e.g., \\\"RegularFile\\\", \\\"Directory\\\", \\\"SymbolicLink\\\").\"\n        },\n        \"linkDestination\": {\n          \"type\": \"string\",\n          \"description\": \"LinkDestination is the target path for symbolic links.\"\n        },\n        \"userID\": {\n          \"type\": \"integer\",\n          \"description\": \"UserID is the file owner user ID.\"\n        },\n        \"groupID\": {\n          \"type\": \"integer\",\n          \"description\": \"GroupID is the file owner group ID.\"\n        },\n        \"mimeType\": {\n          \"type\": \"string\",\n          \"description\": \"MIMEType is the MIME type of the file contents.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"mode\",\n        \"type\",\n        \"userID\",\n        \"groupID\",\n        \"mimeType\",\n        \"size\"\n      ],\n      \"description\": \"FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\"\n    },\n    \"GgufFileHeader\": {\n      \"properties\": {\n        \"ggufVersion\": {\n          \"type\": \"integer\",\n          \"description\": \"GGUFVersion is the GGUF format version (e.g., 3)\"\n        },\n        \"fileSize\": {\n          \"type\": \"integer\",\n          \"description\": \"FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the model architecture (from general.architecture, e.g., \\\"qwen3moe\\\", \\\"llama\\\")\"\n        },\n        \"quantization\": {\n          \"type\": \"string\",\n          \"description\": \"Quantization is the quantization type (e.g., \\\"IQ4_NL\\\", \\\"Q4_K_M\\\")\"\n        },\n        \"parameters\": {\n          \"type\": \"integer\",\n          \"description\": \"Parameters is the number of model parameters (if present in header)\"\n        },\n        \"tensorCount\": {\n          \"type\": \"integer\",\n          \"description\": \"TensorCount is the number of tensors in the model\"\n        },\n        \"header\": {\n          \"type\": \"object\",\n          \"description\": \"RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\\nrepresented as typed fields above. This preserves additional metadata fields for reference\\n(namespaced with general.*, llama.*, etc.) while avoiding duplication.\"\n        },\n        \"metadataHash\": {\n          \"type\": \"string\",\n          \"description\": \"MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\\nThis hash is computed over the complete header metadata (including the fields extracted\\ninto typed fields above) and provides a stable identifier for the model configuration\\nacross different file locations or remotes. It allows matching identical models even\\nwhen stored in different repositories or with different filenames.\"\n        },\n        \"parts\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/GgufFileHeader\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Parts contains headers from additional GGUF files that were merged\\ninto this package during post-processing (e.g., from OCI layers without model names).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"ggufVersion\",\n        \"tensorCount\"\n      ],\n      \"description\": \"GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\"\n    },\n    \"GithubActionsUseStatement\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the action reference (e.g. \\\"actions/checkout@v3\\\")\"\n        },\n        \"comment\": {\n          \"type\": \"string\",\n          \"description\": \"Comment is the inline comment associated with this uses statement\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\"\n      ],\n      \"description\": \"GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\"\n    },\n    \"GoModuleBuildinfoEntry\": {\n      \"properties\": {\n        \"goBuildSettings\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\"\n        },\n        \"goCompiledVersion\": {\n          \"type\": \"string\",\n          \"description\": \"GoCompiledVersion is the version of Go used to compile the binary.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\"\n        },\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format for the main module from go.sum.\"\n        },\n        \"mainModule\": {\n          \"type\": \"string\",\n          \"description\": \"MainModule is the main module path for the binary (e.g., \\\"github.com/anchore/syft\\\").\"\n        },\n        \"goCryptoSettings\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\"\n        },\n        \"goExperiments\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"GoExperiments lists experimental Go features enabled during compilation (e.g., \\\"arenas\\\", \\\"cgocheck2\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"goCompiledVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\"\n    },\n    \"GoModuleEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\"\n    },\n    \"GoSourceEntry\": {\n      \"properties\": {\n        \"h1Digest\": {\n          \"type\": \"string\",\n          \"description\": \"H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\"\n        },\n        \"os\": {\n          \"type\": \"string\",\n          \"description\": \"OperatingSystem is the target OS for build constraints (e.g., \\\"linux\\\", \\\"darwin\\\", \\\"windows\\\").\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture for build constraints (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        },\n        \"buildTags\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTags are the build tags used to conditionally compile code (e.g., \\\"integration,debug\\\").\"\n        },\n        \"cgoEnabled\": {\n          \"type\": \"boolean\",\n          \"description\": \"CgoEnabled indicates whether CGO was enabled for this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"cgoEnabled\"\n      ],\n      \"description\": \"GolangSourceEntry represents all captured data for a Golang package found through source analysis\"\n    },\n    \"HaskellHackageStackEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlEntry represents a single entry from the \\\"extra-deps\\\" section of a stack.yaml file.\"\n    },\n    \"HaskellHackageStackLockEntry\": {\n      \"properties\": {\n        \"pkgHash\": {\n          \"type\": \"string\",\n          \"description\": \"PkgHash is the package content hash for verification\"\n        },\n        \"snapshotURL\": {\n          \"type\": \"string\",\n          \"description\": \"SnapshotURL is the URL to the Stack snapshot this package came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HackageStackYamlLockEntry represents a single entry from the \\\"packages\\\" section of a stack.yaml.lock file.\"\n    },\n    \"HomebrewFormula\": {\n      \"properties\": {\n        \"tap\": {\n          \"type\": \"string\",\n          \"description\": \"Tap is Homebrew tap this formula belongs to (e.g. \\\"homebrew/core\\\")\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is the upstream project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable formula description\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\"\n    },\n    \"IDLikes\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": \"array\",\n      \"description\": \"IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\"\n    },\n    \"JavaArchive\": {\n      \"properties\": {\n        \"virtualPath\": {\n          \"type\": \"string\",\n          \"description\": \"VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\"\n        },\n        \"manifest\": {\n          \"$ref\": \"#/$defs/JavaManifest\",\n          \"description\": \"Manifest is parsed META-INF/MANIFEST.MF contents\"\n        },\n        \"pomProperties\": {\n          \"$ref\": \"#/$defs/JavaPomProperties\",\n          \"description\": \"PomProperties is parsed pom.properties file contents\"\n        },\n        \"pomProject\": {\n          \"$ref\": \"#/$defs/JavaPomProject\",\n          \"description\": \"PomProject is parsed pom.xml file contents\"\n        },\n        \"digest\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Digest\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ArchiveDigests is cryptographic hashes of the archive file\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"virtualPath\"\n      ],\n      \"description\": \"JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\"\n    },\n    \"JavaJvmInstallation\": {\n      \"properties\": {\n        \"release\": {\n          \"$ref\": \"#/$defs/JavaVMRelease\",\n          \"description\": \"Release is JVM release information and version details\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files that are part of this JVM installation\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"release\",\n        \"files\"\n      ],\n      \"description\": \"JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\"\n    },\n    \"JavaManifest\": {\n      \"properties\": {\n        \"main\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"Main is main manifest attributes as key-value pairs\"\n        },\n        \"sections\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/KeyValues\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Sections are the named sections from the manifest (e.g. per-entry attributes)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\"\n    },\n    \"JavaPomParent\": {\n      \"properties\": {\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is the parent Maven group identifier\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is the parent Maven artifact identifier\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the parent version (child inherits configuration from this specific version of parent POM)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomParent contains the fields within the \\u003cparent\\u003e tag in a pom.xml file\"\n    },\n    \"JavaPomProject\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.xml file within the archive\"\n        },\n        \"parent\": {\n          \"$ref\": \"#/$defs/JavaPomParent\",\n          \"description\": \"Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier (reversed domain name like org.apache.maven)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier (project name)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is a human-readable project name (displayed in Maven-generated documentation)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed project description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the project URL (typically project website or repository)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\",\n        \"name\"\n      ],\n      \"description\": \"JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file.\"\n    },\n    \"JavaPomProperties\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the pom.properties file within the archive\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the project name\"\n        },\n        \"groupId\": {\n          \"type\": \"string\",\n          \"description\": \"GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\"\n        },\n        \"artifactId\": {\n          \"type\": \"string\",\n          \"description\": \"ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is artifact version\"\n        },\n        \"scope\": {\n          \"type\": \"string\",\n          \"description\": \"Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\"\n        },\n        \"extraFields\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Extra is additional custom properties not in standard Maven coordinates\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"name\",\n        \"groupId\",\n        \"artifactId\",\n        \"version\"\n      ],\n      \"description\": \"JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\"\n    },\n    \"JavaVMRelease\": {\n      \"properties\": {\n        \"implementor\": {\n          \"type\": \"string\",\n          \"description\": \"Implementor is extracted with the `java.vendor` JVM property\"\n        },\n        \"implementorVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImplementorVersion is extracted with the `java.vendor.version` JVM property\"\n        },\n        \"javaRuntimeVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"javaVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersion matches that from `java -version` command output\"\n        },\n        \"javaVersionDate\": {\n          \"type\": \"string\",\n          \"description\": \"JavaVersionDate is extracted from the 'java.version.date' JVM property\"\n        },\n        \"libc\": {\n          \"type\": \"string\",\n          \"description\": \"Libc can either be 'glibc' or 'musl'\"\n        },\n        \"modules\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Modules is a list of JVM modules that are packaged\"\n        },\n        \"osArch\": {\n          \"type\": \"string\",\n          \"description\": \"OsArch is the target CPU architecture\"\n        },\n        \"osName\": {\n          \"type\": \"string\",\n          \"description\": \"OsName is the name of the target runtime operating system environment\"\n        },\n        \"osVersion\": {\n          \"type\": \"string\",\n          \"description\": \"OsVersion is the version of the target runtime operating system environment\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source refers to the origin repository of OpenJDK source\"\n        },\n        \"buildSource\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSource Git SHA of the build repository\"\n        },\n        \"buildSourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildSourceRepo refers to rhe repository URL for the build source\"\n        },\n        \"sourceRepo\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRepo refers to the OpenJDK repository URL\"\n        },\n        \"fullVersion\": {\n          \"type\": \"string\",\n          \"description\": \"FullVersion is extracted from the 'java.runtime.version' JVM property\"\n        },\n        \"semanticVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SemanticVersion is derived from the OpenJDK version\"\n        },\n        \"buildInfo\": {\n          \"type\": \"string\",\n          \"description\": \"BuildInfo contains additional build information\"\n        },\n        \"jvmVariant\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\"\n        },\n        \"jvmVersion\": {\n          \"type\": \"string\",\n          \"description\": \"JvmVersion is extracted from the 'java.vm.version' JVM property\"\n        },\n        \"imageType\": {\n          \"type\": \"string\",\n          \"description\": \"ImageType can be 'JDK' or 'JRE'\"\n        },\n        \"buildType\": {\n          \"type\": \"string\",\n          \"description\": \"BuildType can be 'commercial' (used in some older oracle JDK distributions)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\"\n    },\n    \"JavascriptNpmPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in package.json\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in package.json\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author name\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is repository or project URL\"\n        },\n        \"private\": {\n          \"type\": \"boolean\",\n          \"description\": \"Private is whether this is a private package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"private\"\n      ],\n      \"description\": \"NpmPackage represents the contents of a javascript package.json file.\"\n    },\n    \"JavascriptNpmPackageLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from (registry source)\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their version markers, i.e. \\\"lodash\\\": \\\"^1.0.0\\\"\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"NpmPackageLockEntry represents a single entry within the \\\"packages\\\" section of a package-lock.json file.\"\n    },\n    \"JavascriptPnpmLockEntry\": {\n      \"properties\": {\n        \"resolution\": {\n          \"$ref\": \"#/$defs/PnpmLockResolution\",\n          \"description\": \"Resolution is the resolution information for the package\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolution\",\n        \"dependencies\"\n      ],\n      \"description\": \"PnpmLockEntry represents a single entry in the \\\"packages\\\" section of a pnpm-lock.yaml file.\"\n    },\n    \"JavascriptYarnLockEntry\": {\n      \"properties\": {\n        \"resolved\": {\n          \"type\": \"string\",\n          \"description\": \"Resolved is URL where this package was downloaded from\"\n        },\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies is a map of dependencies and their versions\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"resolved\",\n        \"integrity\",\n        \"dependencies\"\n      ],\n      \"description\": \"YarnLockEntry represents a single entry section of a yarn.lock file.\"\n    },\n    \"KeyValue\": {\n      \"properties\": {\n        \"key\": {\n          \"type\": \"string\",\n          \"description\": \"Key is the key name\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the value associated with the key\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"key\",\n        \"value\"\n      ],\n      \"description\": \"KeyValue represents a single key-value pair.\"\n    },\n    \"KeyValues\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/KeyValue\"\n      },\n      \"type\": \"array\",\n      \"description\": \"KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\"\n    },\n    \"License\": {\n      \"properties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the raw license identifier or expression as found.\"\n        },\n        \"spdxExpression\": {\n          \"type\": \"string\",\n          \"description\": \"SPDXExpression is the parsed SPDX license expression.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the license type classification (e.g., declared, concluded, discovered).\"\n        },\n        \"urls\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URLs are URLs where license text or information can be found.\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Locations are file locations where this license was discovered.\"\n        },\n        \"contents\": {\n          \"type\": \"string\",\n          \"description\": \"Contents is the full license text content.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"value\",\n        \"spdxExpression\",\n        \"type\",\n        \"urls\",\n        \"locations\"\n      ],\n      \"description\": \"License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\"\n    },\n    \"LinuxKernelArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is kernel name (typically \\\"Linux\\\")\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is kernel version string\"\n        },\n        \"extendedVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ExtendedVersion is additional version information\"\n        },\n        \"buildTime\": {\n          \"type\": \"string\",\n          \"description\": \"BuildTime is when the kernel was built\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is who built the kernel\"\n        },\n        \"format\": {\n          \"type\": \"string\",\n          \"description\": \"Format is kernel image format (e.g. bzImage, zImage)\"\n        },\n        \"rwRootFS\": {\n          \"type\": \"boolean\",\n          \"description\": \"RWRootFS is whether root filesystem is mounted read-write\"\n        },\n        \"swapDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"SwapDevice is swap device number\"\n        },\n        \"rootDevice\": {\n          \"type\": \"integer\",\n          \"description\": \"RootDevice is root device number\"\n        },\n        \"videoMode\": {\n          \"type\": \"string\",\n          \"description\": \"VideoMode is default video mode setting\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"architecture\",\n        \"version\"\n      ],\n      \"description\": \"LinuxKernel represents all captured data for a Linux kernel\"\n    },\n    \"LinuxKernelModule\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is module name\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is module version string\"\n        },\n        \"sourceVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SourceVersion is the source code version identifier\"\n        },\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the filesystem path to the .ko kernel object file (absolute path)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable module description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is module author name and email\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is module license (e.g. GPL, BSD) which must be compatible with kernel\"\n        },\n        \"kernelVersion\": {\n          \"type\": \"string\",\n          \"description\": \"KernelVersion is kernel version this module was built for\"\n        },\n        \"versionMagic\": {\n          \"type\": \"string\",\n          \"description\": \"VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \\\"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\\\"). Module will NOT load if vermagic doesn't match running kernel.\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/LinuxKernelModuleParameter\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Parameters are the module parameters that can be configured at load time (user-settable values like module options)\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\"\n    },\n    \"LinuxKernelModuleParameter\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is parameter data type (e.g. int, string, bool, array types)\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable parameter description explaining what the parameter controls\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\"\n    },\n    \"LinuxRelease\": {\n      \"properties\": {\n        \"prettyName\": {\n          \"type\": \"string\",\n          \"description\": \"PrettyName is a human-readable operating system name with version.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the operating system name without version information.\"\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is the lower-case operating system identifier (e.g., \\\"ubuntu\\\", \\\"rhel\\\").\"\n        },\n        \"idLike\": {\n          \"$ref\": \"#/$defs/IDLikes\",\n          \"description\": \"IDLike is a list of operating system IDs this distribution is similar to or derived from.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the operating system version including codename if available.\"\n        },\n        \"versionID\": {\n          \"type\": \"string\",\n          \"description\": \"VersionID is the operating system version number or identifier.\"\n        },\n        \"versionCodename\": {\n          \"type\": \"string\",\n          \"description\": \"VersionCodename is the operating system release codename (e.g., \\\"jammy\\\", \\\"bullseye\\\").\"\n        },\n        \"buildID\": {\n          \"type\": \"string\",\n          \"description\": \"BuildID is a build identifier for the operating system.\"\n        },\n        \"imageID\": {\n          \"type\": \"string\",\n          \"description\": \"ImageID is an identifier for container or cloud images.\"\n        },\n        \"imageVersion\": {\n          \"type\": \"string\",\n          \"description\": \"ImageVersion is the version for container or cloud images.\"\n        },\n        \"variant\": {\n          \"type\": \"string\",\n          \"description\": \"Variant is the operating system variant name (e.g., \\\"Server\\\", \\\"Workstation\\\").\"\n        },\n        \"variantID\": {\n          \"type\": \"string\",\n          \"description\": \"VariantID is the lower-case operating system variant identifier.\"\n        },\n        \"homeURL\": {\n          \"type\": \"string\",\n          \"description\": \"HomeURL is the homepage URL for the operating system.\"\n        },\n        \"supportURL\": {\n          \"type\": \"string\",\n          \"description\": \"SupportURL is the support or help URL for the operating system.\"\n        },\n        \"bugReportURL\": {\n          \"type\": \"string\",\n          \"description\": \"BugReportURL is the bug reporting URL for the operating system.\"\n        },\n        \"privacyPolicyURL\": {\n          \"type\": \"string\",\n          \"description\": \"PrivacyPolicyURL is the privacy policy URL for the operating system.\"\n        },\n        \"cpeName\": {\n          \"type\": \"string\",\n          \"description\": \"CPEName is the Common Platform Enumeration name for the operating system.\"\n        },\n        \"supportEnd\": {\n          \"type\": \"string\",\n          \"description\": \"SupportEnd is the end of support date or version identifier.\"\n        },\n        \"extendedSupport\": {\n          \"type\": \"boolean\",\n          \"description\": \"ExtendedSupport indicates whether extended security or support is available.\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\"\n    },\n    \"Location\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\"\n        },\n        \"layerID\": {\n          \"type\": \"string\",\n          \"description\": \"FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\"\n        },\n        \"accessPath\": {\n          \"type\": \"string\",\n          \"description\": \"AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\"\n        },\n        \"annotations\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Arbitrary key-value pairs that can be used to annotate a location\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"accessPath\"\n      ],\n      \"description\": \"Location represents a path relative to a particular filesystem resolved to a specific file.Reference.\"\n    },\n    \"LuarocksPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .rockspec file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .rockspec file\"\n        },\n        \"license\": {\n          \"type\": \"string\",\n          \"description\": \"License is license identifier\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source download URL\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Dependencies are the map of dependency names to version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"license\",\n        \"homepage\",\n        \"description\",\n        \"url\",\n        \"dependencies\"\n      ],\n      \"description\": \"LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\"\n    },\n    \"MicrosoftKbPatch\": {\n      \"properties\": {\n        \"product_id\": {\n          \"type\": \"string\",\n          \"description\": \"ProductID is MSRC Product ID (e.g. \\\"Windows 10 Version 1703 for 32-bit Systems\\\")\"\n        },\n        \"kb\": {\n          \"type\": \"string\",\n          \"description\": \"Kb is Knowledge Base article number (e.g. \\\"5001028\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"product_id\",\n        \"kb\"\n      ],\n      \"description\": \"MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\"\n    },\n    \"NixDerivation\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the .drv file in Nix store\"\n        },\n        \"system\": {\n          \"type\": \"string\",\n          \"description\": \"System is target system string indicating where derivation can be built (e.g. \\\"x86_64-linux\\\", \\\"aarch64-darwin\\\"). Must match current system for local builds.\"\n        },\n        \"inputDerivations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/NixDerivationReference\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputDerivations are the list of other derivations that were inputs to this build (dependencies)\"\n        },\n        \"inputSources\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"InputSources are the list of source file paths that were inputs to this build\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\"\n    },\n    \"NixDerivationReference\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is path to the referenced .drv file\"\n        },\n        \"outputs\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Outputs are which outputs of the referenced derivation were used (e.g. [\\\"out\\\"], [\\\"bin\\\", \\\"dev\\\"])\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\"\n    },\n    \"NixStoreEntry\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\"\n        },\n        \"output\": {\n          \"type\": \"string\",\n          \"description\": \"Output is the specific output name for multi-output packages (empty string for default \\\"out\\\" output, can be \\\"bin\\\", \\\"dev\\\", \\\"doc\\\", etc.)\"\n        },\n        \"outputHash\": {\n          \"type\": \"string\",\n          \"description\": \"OutputHash is hash prefix of the store path basename (first part before the dash)\"\n        },\n        \"derivation\": {\n          \"$ref\": \"#/$defs/NixDerivation\",\n          \"description\": \"Derivation is information about the .drv file that describes how this package was built\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the list of files under the nix/store path for this package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"outputHash\"\n      ],\n      \"description\": \"NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\"\n    },\n    \"OpamPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .opam file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .opam file\"\n        },\n        \"licenses\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Licenses are the list of applicable licenses\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is download URL for the package source\"\n        },\n        \"checksum\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Checksums are the list of checksums for verification\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"licenses\",\n        \"url\",\n        \"checksum\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\"\n    },\n    \"Package\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"foundBy\": {\n          \"type\": \"string\"\n        },\n        \"locations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Location\"\n          },\n          \"type\": \"array\"\n        },\n        \"licenses\": {\n          \"$ref\": \"#/$defs/licenses\"\n        },\n        \"language\": {\n          \"type\": \"string\"\n        },\n        \"cpes\": {\n          \"$ref\": \"#/$defs/cpes\"\n        },\n        \"purl\": {\n          \"type\": \"string\"\n        },\n        \"metadataType\": {\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"null\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ApkDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/BinarySignature\"\n            },\n            {\n              \"$ref\": \"#/$defs/BitnamiSbomEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanFileEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanInfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CConanLockV2Entry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CocoaPodfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/CondaMetadataEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/DartPubspecLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetDepsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPackagesLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DotnetPortableExecutableEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgArchiveEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/DpkgDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElfBinaryPackageNoteJsonPayload\"\n            },\n            {\n              \"$ref\": \"#/$defs/ElixirMixLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErlangRebarLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GgufFileHeader\"\n            },\n            {\n              \"$ref\": \"#/$defs/GithubActionsUseStatement\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleBuildinfoEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoModuleEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoSourceEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HaskellHackageStackLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/HomebrewFormula\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavaJvmInstallation\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptNpmPackageLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptPnpmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/JavascriptYarnLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/LinuxKernelModule\"\n            },\n            {\n              \"$ref\": \"#/$defs/LuarocksPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/MicrosoftKbPatch\"\n            },\n            {\n              \"$ref\": \"#/$defs/NixStoreEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/OpamPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PeBinary\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerInstalledEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpComposerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPearEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PhpPeclEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PortageDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPdmLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipRequirementsEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPipfileLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonPoetryLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/PythonUvLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RDescription\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmArchive\"\n            },\n            {\n              \"$ref\": \"#/$defs/RpmDbEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RubyGemspec\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoAuditEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/RustCargoLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SnapEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiftPackageManagerLockEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwiplpackPackage\"\n            },\n            {\n              \"$ref\": \"#/$defs/TerraformLockProviderEntry\"\n            },\n            {\n              \"$ref\": \"#/$defs/WordpressPluginEntry\"\n            }\n          ]\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"foundBy\",\n        \"locations\",\n        \"licenses\",\n        \"language\",\n        \"cpes\",\n        \"purl\"\n      ],\n      \"description\": \"Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\"\n    },\n    \"PeBinary\": {\n      \"properties\": {\n        \"VersionResources\": {\n          \"$ref\": \"#/$defs/KeyValues\",\n          \"description\": \"VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"VersionResources\"\n      ],\n      \"description\": \"PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\"\n    },\n    \"PhpComposerAuthors\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is author's full name\"\n        },\n        \"email\": {\n          \"type\": \"string\",\n          \"description\": \"Email is author's email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is author's personal or company website\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\"\n      ],\n      \"description\": \"PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\"\n    },\n    \"PhpComposerExternalReference\": {\n      \"properties\": {\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is reference type (git for source VCS, zip/tar for dist archives)\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the resource (git repository URL or archive download URL)\"\n        },\n        \"reference\": {\n          \"type\": \"string\",\n          \"description\": \"Reference is git commit hash or version tag for source, or archive version for dist\"\n        },\n        \"shasum\": {\n          \"type\": \"string\",\n          \"description\": \"Shasum is SHA hash of the archive file for integrity verification (dist only)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"type\",\n        \"url\",\n        \"reference\"\n      ],\n      \"description\": \"PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\"\n    },\n    \"PhpComposerInstalledEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \\\"installed.json\\\" files (very similar to composer.lock files).\"\n    },\n    \"PhpComposerLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is package name in vendor/package format (e.g. symfony/console)\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"source\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\"\n        },\n        \"dist\": {\n          \"$ref\": \"#/$defs/PhpComposerExternalReference\",\n          \"description\": \"Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\"\n        },\n        \"require\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\"\n        },\n        \"provide\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\"\n        },\n        \"require-dev\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\"\n        },\n        \"suggest\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"object\",\n          \"description\": \"Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of license identifiers (SPDX format)\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\"\n        },\n        \"notification-url\": {\n          \"type\": \"string\",\n          \"description\": \"NotificationURL is the URL to notify when package is installed (for tracking/statistics)\"\n        },\n        \"bin\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Bin is the list of binary/executable files that should be added to PATH\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PhpComposerAuthors\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of package authors with name/email/homepage\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is a human-readable package description\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"keywords\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Keywords are the list of keywords for package discovery/search\"\n        },\n        \"time\": {\n          \"type\": \"string\",\n          \"description\": \"Time is timestamp when this package version was released\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"dist\"\n      ],\n      \"description\": \"PhpComposerLockEntry represents a single package entry found from a composer.lock file.\"\n    },\n    \"PhpPearEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPearEntry represents a single package entry found within php pear metadata files.\"\n    },\n    \"PhpPeclEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name\"\n        },\n        \"channel\": {\n          \"type\": \"string\",\n          \"description\": \"Channel is PEAR channel this package is from\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version\"\n        },\n        \"license\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"License is the list of applicable licenses\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"PhpPeclEntry represents a single package entry found within php pecl metadata files.\"\n    },\n    \"PnpmLockResolution\": {\n      \"properties\": {\n        \"integrity\": {\n          \"type\": \"string\",\n          \"description\": \"Integrity is Subresource Integrity hash for verification (SRI format)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"integrity\"\n      ],\n      \"description\": \"PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\"\n    },\n    \"PortageDbEntry\": {\n      \"properties\": {\n        \"installedSize\": {\n          \"type\": \"integer\",\n          \"description\": \"InstalledSize is total size of installed files in bytes\"\n        },\n        \"licenses\": {\n          \"type\": \"string\",\n          \"description\": \"Licenses is license string which may be an expression (e.g. \\\"GPL-2 OR Apache-2.0\\\")\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PortageFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the files installed by this package (tracked in CONTENTS file)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"installedSize\",\n        \"files\"\n      ],\n      \"description\": \"PortageEntry represents a single package entry in the portage DB flat-file store.\"\n    },\n    \"PortageFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the file path relative to the filesystem root\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest is file content hash (MD5 for regular files in CONTENTS format: \\\"obj filename md5hash mtime\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PortageFileRecord represents a single file attributed to a portage package.\"\n    },\n    \"PythonDirectURLOriginInfo\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the source URL from which the package was installed.\"\n        },\n        \"commitId\": {\n          \"type\": \"string\",\n          \"description\": \"CommitID is the VCS commit hash if installed from version control.\"\n        },\n        \"vcs\": {\n          \"type\": \"string\",\n          \"description\": \"VCS is the version control system type (e.g., \\\"git\\\", \\\"hg\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\"\n      ],\n      \"description\": \"PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\"\n    },\n    \"PythonFileDigest\": {\n      \"properties\": {\n        \"algorithm\": {\n          \"type\": \"string\",\n          \"description\": \"Algorithm is the hash algorithm used (e.g., \\\"sha256\\\").\"\n        },\n        \"value\": {\n          \"type\": \"string\",\n          \"description\": \"Value is the hex-encoded hash digest value.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algorithm\",\n        \"value\"\n      ],\n      \"description\": \"PythonFileDigest represents the file metadata for a single file attributed to a python package.\"\n    },\n    \"PythonFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the installed file path from the RECORD file.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"size\": {\n          \"type\": \"string\",\n          \"description\": \"Size is the file size in bytes as a string.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\"\n      ],\n      \"description\": \"PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\"\n    },\n    \"PythonPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the Name field in PKG-INFO or METADATA.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version from the Version field in PKG-INFO or METADATA.\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is the package author name from the Author field.\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is the package author's email address from the Author-Email field.\"\n        },\n        \"platform\": {\n          \"type\": \"string\",\n          \"description\": \"Platform indicates the target platform for the package (e.g., \\\"any\\\", \\\"linux\\\", \\\"win32\\\").\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\"\n        },\n        \"sitePackagesRootPath\": {\n          \"type\": \"string\",\n          \"description\": \"SitePackagesRootPath is the root directory path containing the package (e.g., \\\"/usr/lib/python3.9/site-packages\\\").\"\n        },\n        \"topLevelPackages\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"TopLevelPackages are the top-level Python module names from top_level.txt file.\"\n        },\n        \"directUrlOrigin\": {\n          \"$ref\": \"#/$defs/PythonDirectURLOriginInfo\",\n          \"description\": \"DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"requiresDist\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\"\n        },\n        \"providesExtra\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"ProvidesExtra lists optional feature names that can be installed via extras (e.g., \\\"dev\\\", \\\"test\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"platform\",\n        \"sitePackagesRootPath\"\n      ],\n      \"description\": \"PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\"\n    },\n    \"PythonPdmFileEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the file download URL\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/PythonFileDigest\",\n          \"description\": \"Digest is the hash digest of the file hosted at the URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"digest\"\n      ]\n    },\n    \"PythonPdmLockEntry\": {\n      \"properties\": {\n        \"summary\": {\n          \"type\": \"string\",\n          \"description\": \"Summary provides a description of the package\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files with their paths and hash digests (for the base package without extras)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the \\\"environment\\\" --conditional expressions that determine whether a package should be installed based on the runtime environment\"\n        },\n        \"requiresPython\": {\n          \"type\": \"string\",\n          \"description\": \"RequiresPython specifies the Python version requirement (e.g., \\\"\\u003e=3.6\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependency specifications for the base package (without extras)\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmLockExtraVariant\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras contains variants for different extras combinations (PDM may have multiple entries per package)\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"summary\",\n        \"files\"\n      ],\n      \"description\": \"PythonPdmLockEntry represents a single package entry within a pdm.lock file.\"\n    },\n    \"PythonPdmLockExtraVariant\": {\n      \"properties\": {\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional extras enabled for this variant (e.g., [\\\"toml\\\"], [\\\"dev\\\"], or [\\\"toml\\\", \\\"dev\\\"])\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the dependencies specific to this extras variant\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPdmFileEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the package files specific to this variant (only populated if different from base)\"\n        },\n        \"marker\": {\n          \"type\": \"string\",\n          \"description\": \"Marker is the environment conditional expression for this variant (e.g., \\\"python_version \\u003c \\\\\\\"3.11\\\\\\\"\\\")\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"extras\"\n      ],\n      \"description\": \"PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\"\n    },\n    \"PythonPipRequirementsEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name from the requirements file.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional features to install from the package (e.g., package[dev,test]).\"\n        },\n        \"versionConstraint\": {\n          \"type\": \"string\",\n          \"description\": \"VersionConstraint specifies version requirements (e.g., \\\"\\u003e=1.0,\\u003c2.0\\\").\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the direct download URL or VCS URL if specified instead of a PyPI package.\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions for conditional installation (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"versionConstraint\"\n      ],\n      \"description\": \"PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\"\n    },\n    \"PythonPipfileLockEntry\": {\n      \"properties\": {\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are the package file hash values in the format \\\"algorithm:digest\\\" for integrity verification.\"\n        },\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the PyPI index name where the package should be fetched from.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"hashes\",\n        \"index\"\n      ],\n      \"description\": \"PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked version or version constraint for the dependency.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"optional\"\n      ],\n      \"description\": \"PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\"\n    },\n    \"PythonPoetryLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonPoetryLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\"\n    },\n    \"PythonPoetryLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\"\n    },\n    \"PythonUvLockDependencyEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the dependency package name.\"\n        },\n        \"optional\": {\n          \"type\": \"boolean\",\n          \"description\": \"Optional indicates whether this dependency is optional (only needed for certain extras).\"\n        },\n        \"markers\": {\n          \"type\": \"string\",\n          \"description\": \"Markers are environment marker expressions that conditionally enable the dependency (e.g., \\\"python_version \\u003e= '3.8'\\\").\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are the optional feature names from the dependency that should be installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"optional\"\n      ],\n      \"description\": \"PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\"\n    },\n    \"PythonUvLockEntry\": {\n      \"properties\": {\n        \"index\": {\n          \"type\": \"string\",\n          \"description\": \"Index is the package repository name where the package should be fetched from.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockDependencyEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package's runtime dependencies with version constraints.\"\n        },\n        \"extras\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/PythonUvLockExtraEntry\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Extras are optional feature groups that include additional dependencies.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"index\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockEntry represents a single package entry within a uv.lock file.\"\n    },\n    \"PythonUvLockExtraEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the optional feature name (e.g., \\\"dev\\\", \\\"test\\\").\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the package names required when this extra is installed.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"dependencies\"\n      ],\n      \"description\": \"PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\"\n    },\n    \"RDescription\": {\n      \"properties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"description\": \"Title is short one-line package title\"\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"description\": \"Description is detailed package description\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is package author(s)\"\n        },\n        \"maintainer\": {\n          \"type\": \"string\",\n          \"description\": \"Maintainer is current package maintainer\"\n        },\n        \"url\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"URL is the list of related URLs\"\n        },\n        \"repository\": {\n          \"type\": \"string\",\n          \"description\": \"Repository is CRAN or other repository name\"\n        },\n        \"built\": {\n          \"type\": \"string\",\n          \"description\": \"Built is R version and platform this was built with\"\n        },\n        \"needsCompilation\": {\n          \"type\": \"boolean\",\n          \"description\": \"NeedsCompilation is whether this package requires compilation\"\n        },\n        \"imports\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Imports are the packages imported in the NAMESPACE\"\n        },\n        \"depends\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Depends are the packages this package depends on\"\n        },\n        \"suggests\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Suggests are the optional packages that extend functionality\"\n        }\n      },\n      \"type\": \"object\",\n      \"description\": \"RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\"\n    },\n    \"Relationship\": {\n      \"properties\": {\n        \"parent\": {\n          \"type\": \"string\",\n          \"description\": \"Parent is the ID of the parent artifact in this relationship.\"\n        },\n        \"child\": {\n          \"type\": \"string\",\n          \"description\": \"Child is the ID of the child artifact in this relationship.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the relationship type (e.g., \\\"contains\\\", \\\"dependency-of\\\", \\\"ancestor-of\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional relationship-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"parent\",\n        \"child\",\n        \"type\"\n      ],\n      \"description\": \"Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\"\n    },\n    \"RpmArchive\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\"\n    },\n    \"RpmDbEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the RPM package name as found in the RPM database.\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the upstream version of the package.\"\n        },\n        \"epoch\": {\n          \"oneOf\": [\n            {\n              \"type\": \"integer\",\n              \"description\": \"Epoch is the version epoch used to force upgrade ordering (null if not set).\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Arch is the target CPU architecture (e.g., \\\"x86_64\\\", \\\"aarch64\\\", \\\"noarch\\\").\"\n        },\n        \"release\": {\n          \"type\": \"string\",\n          \"description\": \"Release is the package release number or distribution-specific version suffix.\"\n        },\n        \"sourceRpm\": {\n          \"type\": \"string\",\n          \"description\": \"SourceRpm is the source RPM filename that was used to build this package.\"\n        },\n        \"signatures\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmSignature\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Signatures contains GPG signature metadata for package verification.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the total installed size of the package in bytes.\"\n        },\n        \"vendor\": {\n          \"type\": \"string\",\n          \"description\": \"Vendor is the organization that packaged the software.\"\n        },\n        \"modularityLabel\": {\n          \"type\": \"string\",\n          \"description\": \"ModularityLabel identifies the module stream for modular RPM packages (e.g., \\\"nodejs:12:20200101\\\").\"\n        },\n        \"provides\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Provides lists the virtual packages and capabilities this package provides.\"\n        },\n        \"requires\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Requires lists the dependencies required by this package.\"\n        },\n        \"files\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/RpmFileRecord\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files are the file records for all files owned by this package.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"epoch\",\n        \"architecture\",\n        \"release\",\n        \"sourceRpm\",\n        \"size\",\n        \"vendor\",\n        \"files\"\n      ],\n      \"description\": \"RpmDBEntry represents all captured data from a RPM DB package entry.\"\n    },\n    \"RpmFileRecord\": {\n      \"properties\": {\n        \"path\": {\n          \"type\": \"string\",\n          \"description\": \"Path is the absolute file path where the file is installed.\"\n        },\n        \"mode\": {\n          \"type\": \"integer\",\n          \"description\": \"Mode is the file permission mode bits following Unix stat.h conventions.\"\n        },\n        \"size\": {\n          \"type\": \"integer\",\n          \"description\": \"Size is the file size in bytes.\"\n        },\n        \"digest\": {\n          \"$ref\": \"#/$defs/Digest\",\n          \"description\": \"Digest contains the hash algorithm and value for file integrity verification.\"\n        },\n        \"userName\": {\n          \"type\": \"string\",\n          \"description\": \"UserName is the owner username for the file.\"\n        },\n        \"groupName\": {\n          \"type\": \"string\",\n          \"description\": \"GroupName is the group name for the file.\"\n        },\n        \"flags\": {\n          \"type\": \"string\",\n          \"description\": \"Flags indicates the file type (e.g., \\\"%config\\\", \\\"%doc\\\", \\\"%ghost\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"path\",\n        \"mode\",\n        \"size\",\n        \"digest\",\n        \"userName\",\n        \"groupName\",\n        \"flags\"\n      ],\n      \"description\": \"RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\"\n    },\n    \"RpmSignature\": {\n      \"properties\": {\n        \"algo\": {\n          \"type\": \"string\",\n          \"description\": \"PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \\\"RSA\\\").\"\n        },\n        \"hash\": {\n          \"type\": \"string\",\n          \"description\": \"HashAlgorithm is the hash algorithm used for the signature (e.g., \\\"SHA256\\\").\"\n        },\n        \"created\": {\n          \"type\": \"string\",\n          \"description\": \"Created is the timestamp when the signature was created.\"\n        },\n        \"issuer\": {\n          \"type\": \"string\",\n          \"description\": \"IssuerKeyID is the GPG key ID that created the signature.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"algo\",\n        \"hash\",\n        \"created\",\n        \"issuer\"\n      ],\n      \"description\": \"RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\"\n    },\n    \"RubyGemspec\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is gem name as specified in the gemspec\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is gem version as specified in the gemspec\"\n        },\n        \"files\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \\\"lib/bundler/vendor/uri/lib/uri/ldap.rb\\\" but actual path is \\\"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\\\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\"\n        },\n        \"authors\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\"\n      ],\n      \"description\": \"RubyGemspec represents all metadata parsed from the *.gemspec file\"\n    },\n    \"RustCargoAuditEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in audit section of the build binary\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in audit section of the build binary\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository where this crate came from\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\"\n      ],\n      \"description\": \"RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\"\n    },\n    \"RustCargoLockEntry\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is crate name as specified in Cargo.toml\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is crate version as specified in Cargo.toml\"\n        },\n        \"source\": {\n          \"type\": \"string\",\n          \"description\": \"Source is the source registry or repository URL in format \\\"registry+https://github.com/rust-lang/crates.io-index\\\" for registry packages\"\n        },\n        \"checksum\": {\n          \"type\": \"string\",\n          \"description\": \"Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of dependencies with version constraints\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"source\",\n        \"checksum\",\n        \"dependencies\"\n      ],\n      \"description\": \"RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\"\n    },\n    \"Schema\": {\n      \"properties\": {\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the JSON schema version for this document format.\"\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the URL to the JSON schema definition document.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"version\",\n        \"url\"\n      ],\n      \"description\": \"Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\"\n    },\n    \"SnapEntry\": {\n      \"properties\": {\n        \"snapType\": {\n          \"type\": \"string\",\n          \"description\": \"SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\"\n        },\n        \"base\": {\n          \"type\": \"string\",\n          \"description\": \"Base is the base snap name that this snap depends on (e.g., \\\"core20\\\", \\\"core22\\\").\"\n        },\n        \"snapName\": {\n          \"type\": \"string\",\n          \"description\": \"SnapName is the snap package name.\"\n        },\n        \"snapVersion\": {\n          \"type\": \"string\",\n          \"description\": \"SnapVersion is the snap package version.\"\n        },\n        \"architecture\": {\n          \"type\": \"string\",\n          \"description\": \"Architecture is the target CPU architecture (e.g., \\\"amd64\\\", \\\"arm64\\\").\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"snapType\",\n        \"base\",\n        \"snapName\",\n        \"snapVersion\",\n        \"architecture\"\n      ],\n      \"description\": \"SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"description\": \"ID is a unique identifier for the analyzed source artifact.\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the name of the analyzed artifact (e.g., image name, directory path).\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the version of the analyzed artifact (e.g., image tag).\"\n        },\n        \"supplier\": {\n          \"type\": \"string\",\n          \"description\": \"Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\"\n        },\n        \"type\": {\n          \"type\": \"string\",\n          \"description\": \"Type is the source type (e.g., \\\"image\\\", \\\"directory\\\", \\\"file\\\").\"\n        },\n        \"metadata\": {\n          \"description\": \"Metadata contains additional source-specific metadata.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"id\",\n        \"name\",\n        \"version\",\n        \"type\",\n        \"metadata\"\n      ],\n      \"description\": \"Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\"\n    },\n    \"SwiftPackageManagerLockEntry\": {\n      \"properties\": {\n        \"revision\": {\n          \"type\": \"string\",\n          \"description\": \"Revision is git commit hash of the resolved package\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"revision\"\n      ],\n      \"description\": \"SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\"\n    },\n    \"SwiplpackPackage\": {\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"description\": \"Name is the package name as found in the .toml file\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the package version as found in the .toml file\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is author name\"\n        },\n        \"authorEmail\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorEmail is author email address\"\n        },\n        \"packager\": {\n          \"type\": \"string\",\n          \"description\": \"Packager is packager name (if different from author)\"\n        },\n        \"packagerEmail\": {\n          \"type\": \"string\",\n          \"description\": \"PackagerEmail is packager email address\"\n        },\n        \"homepage\": {\n          \"type\": \"string\",\n          \"description\": \"Homepage is project homepage URL\"\n        },\n        \"dependencies\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Dependencies are the list of required dependencies\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"name\",\n        \"version\",\n        \"author\",\n        \"authorEmail\",\n        \"packager\",\n        \"packagerEmail\",\n        \"homepage\",\n        \"dependencies\"\n      ],\n      \"description\": \"SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\"\n    },\n    \"TerraformLockProviderEntry\": {\n      \"properties\": {\n        \"url\": {\n          \"type\": \"string\",\n          \"description\": \"URL is the provider source address (e.g., \\\"registry.terraform.io/hashicorp/aws\\\").\"\n        },\n        \"constraints\": {\n          \"type\": \"string\",\n          \"description\": \"Constraints specifies the version constraints for the provider (e.g., \\\"~\\u003e 4.0\\\").\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"description\": \"Version is the locked provider version selected during terraform init.\"\n        },\n        \"hashes\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"description\": \"Hashes are cryptographic checksums for the provider plugin archives across different platforms.\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"url\",\n        \"constraints\",\n        \"version\",\n        \"hashes\"\n      ],\n      \"description\": \"TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\"\n    },\n    \"WordpressPluginEntry\": {\n      \"properties\": {\n        \"pluginInstallDirectory\": {\n          \"type\": \"string\",\n          \"description\": \"PluginInstallDirectory is directory name where the plugin is installed\"\n        },\n        \"author\": {\n          \"type\": \"string\",\n          \"description\": \"Author is plugin author name\"\n        },\n        \"authorUri\": {\n          \"type\": \"string\",\n          \"description\": \"AuthorURI is author's website URL\"\n        }\n      },\n      \"type\": \"object\",\n      \"required\": [\n        \"pluginInstallDirectory\"\n      ],\n      \"description\": \"WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\"\n    },\n    \"cpes\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/CPE\"\n      },\n      \"type\": \"array\"\n    },\n    \"licenses\": {\n      \"items\": {\n        \"$ref\": \"#/$defs/License\"\n      },\n      \"type\": \"array\"\n    }\n  }\n}\n"
  },
  {
    "path": "schema/json/vnd.syft+json",
    "content": "(registered 2021-11-05, last updated 2025-13-05)\n\nMedia type name: application\nMedia subtype name: vnd.syft+json\n\nRequired parameters: N/A\n\nOptional parameters:\nversion\n\nThe version parameter refers to the Syft specification version in use.\n\nversion = 1*DIGIT \".\" 1*DIGIT \".\" 1*DIGIT\n\nEncoding considerations: binary\nThis media type has all of the same encoding considerations of\napplication/json as described in [RFC8259]\n\n\nSecurity considerations:\nThis media type has all of the same security\nconsiderations of application/json as described in [RFC8259].\n\nDepending on the operational context of the device or software being described by the SBOM there may be additional security requirements. These may include but are not limited to, encryption at rest, encryption in transit, and restrictions on the transmission of the SBOM to 3rd parties. These additional requirements are considered out of scope for the specification. They will typically be enforced by contract or copyright terms.\n\n\nInteroperability considerations:\nThis media type has the same interoperability considerations of application/json as described in [RFC8259].\n\nPublished specification:\nThe specification can be found on the main Syft GitHub repository under the schema directory https://github.com/anchore/syft/blob/main/schema/json\n\nApplications which use this media:\nThis media type is used to specify a software bill of materials.\nIt will be used by tools that produce SBOMs either during the software build process or as a result of software composition analysis.\n\nIt will also be used by tools that consume SBOMs for software\nsupply chain, component, supplier, license, and vulnerability\nanalysis.\n\nFragment identifier considerations:\nN/A\n\nRestrictions on usage:\nN/A\n\nProvisional registration? (standards tree only):\nN/A\n\nAdditional information:\n\n1. Deprecated alias names for this type: N/A\n2. Magic number(s): N/A\n3. File extension(s): .syft.json\n4. Macintosh file type code: N/A\n5. Object Identifiers: N/A\n\nGeneral Comments:\n\n\nPerson to contact for further information:\n\n1. Name: Dan Nurmi\n2. Email: opensource@anchore.com\n\nIntended usage: Common\nThe Syft SBOM format is an open-source software bill of materials specification. It is intended to be exchanged between different parties of the software supply chain.\n\n\nAuthor/Change controller: Dan Nurmi, on behalf of Anchore\n"
  },
  {
    "path": "schema/spdx-json/spdx-schema-2.3.json",
    "content": "{\n  \"$schema\" : \"http://json-schema.org/draft-07/schema#\",\n  \"$id\" : \"http://spdx.org/rdf/terms/2.3\",\n  \"title\" : \"SPDX 2.3\",\n  \"type\" : \"object\",\n  \"properties\" : {\n    \"SPDXID\" : {\n      \"type\" : \"string\",\n      \"description\" : \"Uniquely identify any element in an SPDX document which may be referenced by other elements.\"\n    },\n    \"annotations\" : {\n      \"description\" : \"Provide additional information about an SpdxElement.\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"annotationDate\" : {\n            \"description\" : \"Identify when the comment was made. This is to be specified according to the combined date and time in the UTC format, as specified in the ISO 8601 standard.\",\n            \"type\" : \"string\"\n          },\n          \"annotationType\" : {\n            \"description\" : \"Type of the annotation.\",\n            \"type\" : \"string\",\n            \"enum\" : [ \"OTHER\", \"REVIEW\" ]\n          },\n          \"annotator\" : {\n            \"description\" : \"This field identifies the person, organization, or tool that has commented on a file, package, snippet, or the entire document.\",\n            \"type\" : \"string\"\n          },\n          \"comment\" : {\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"annotationDate\", \"annotationType\", \"annotator\", \"comment\" ],\n        \"additionalProperties\" : false,\n        \"description\" : \"An Annotation is a comment on an SpdxItem by an agent.\"\n      }\n    },\n    \"comment\" : {\n      \"type\" : \"string\"\n    },\n    \"creationInfo\" : {\n      \"type\" : \"object\",\n      \"properties\" : {\n        \"comment\" : {\n          \"type\" : \"string\"\n        },\n        \"created\" : {\n          \"description\" : \"Identify when the SPDX document was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard.\",\n          \"type\" : \"string\"\n        },\n        \"creators\" : {\n          \"description\" : \"Identify who (or what, in the case of a tool) created the SPDX document. If the SPDX document was created by an individual, indicate the person's name. If the SPDX document was created on behalf of a company or organization, indicate the entity name. If the SPDX document was created using a software tool, indicate the name and version for that tool. If multiple participants or tools were involved, use multiple instances of this field. Person name or organization name may be designated as “anonymous” if appropriate.\",\n          \"minItems\" : 1,\n          \"type\" : \"array\",\n          \"items\" : {\n            \"description\" : \"Identify who (or what, in the case of a tool) created the SPDX document. If the SPDX document was created by an individual, indicate the person's name. If the SPDX document was created on behalf of a company or organization, indicate the entity name. If the SPDX document was created using a software tool, indicate the name and version for that tool. If multiple participants or tools were involved, use multiple instances of this field. Person name or organization name may be designated as “anonymous” if appropriate.\",\n            \"type\" : \"string\"\n          }\n        },\n        \"licenseListVersion\" : {\n          \"description\" : \"An optional field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created.\",\n          \"type\" : \"string\"\n        }\n      },\n      \"required\" : [ \"created\", \"creators\" ],\n      \"additionalProperties\" : false,\n      \"description\" : \"One instance is required for each SPDX file produced. It provides the necessary information for forward and backward compatibility for processing tools.\"\n    },\n    \"dataLicense\" : {\n      \"description\" : \"License expression for dataLicense. See SPDX Annex D for the license expression syntax.  Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\\\"SPDX-Metadata\\\"). The SPDX specification contains numerous fields where an SPDX document creator may provide relevant explanatory text in SPDX-Metadata. Without opining on the lawfulness of \\\"database rights\\\" (in jurisdictions where applicable), such explanatory text is copyrightable subject matter in most Berne Convention countries. By using the SPDX specification, or any portion hereof, you hereby agree that any copyright rights (as determined by your jurisdiction) in any SPDX-Metadata, including without limitation explanatory text, shall be subject to the terms of the Creative Commons CC0 1.0 Universal license. For SPDX-Metadata not containing any copyright rights, you hereby agree and acknowledge that the SPDX-Metadata is provided to you \\\"as-is\\\" and without any representations or warranties of any kind concerning the SPDX-Metadata, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non-infringement, or the absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.\",\n      \"type\" : \"string\"\n    },\n    \"externalDocumentRefs\" : {\n      \"description\" : \"Identify any external SPDX documents referenced within this SPDX document.\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"checksum\" : {\n            \"type\" : \"object\",\n            \"properties\" : {\n              \"algorithm\" : {\n                \"description\" : \"Identifies the algorithm used to produce the subject Checksum. Currently, SHA-1 is the only supported algorithm. It is anticipated that other algorithms will be supported at a later time.\",\n                \"type\" : \"string\",\n                \"enum\" : [ \"SHA1\", \"BLAKE3\", \"SHA3-384\", \"SHA256\", \"SHA384\", \"BLAKE2b-512\", \"BLAKE2b-256\", \"SHA3-512\", \"MD2\", \"ADLER32\", \"MD4\", \"SHA3-256\", \"BLAKE2b-384\", \"SHA512\", \"MD6\", \"MD5\", \"SHA224\" ]\n              },\n              \"checksumValue\" : {\n                \"description\" : \"The checksumValue property provides a lower case hexidecimal encoded digest value produced using a specific algorithm.\",\n                \"type\" : \"string\"\n              }\n            },\n            \"required\" : [ \"algorithm\", \"checksumValue\" ],\n            \"additionalProperties\" : false,\n            \"description\" : \"A Checksum is value that allows the contents of a file to be authenticated. Even small changes to the content of the file will change its checksum. This class allows the results of a variety of checksum and cryptographic message digest algorithms to be represented.\"\n          },\n          \"externalDocumentId\" : {\n            \"description\" : \"externalDocumentId is a string containing letters, numbers, ., - and/or + which uniquely identifies an external document within this document.\",\n            \"type\" : \"string\"\n          },\n          \"spdxDocument\" : {\n            \"description\" : \"SPDX ID for SpdxDocument.  A property containing an SPDX document.\",\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"checksum\", \"externalDocumentId\", \"spdxDocument\" ],\n        \"additionalProperties\" : false,\n        \"description\" : \"Information about an external SPDX document reference including the checksum. This allows for verification of the external references.\"\n      }\n    },\n    \"hasExtractedLicensingInfos\" : {\n      \"description\" : \"Indicates that a particular ExtractedLicensingInfo was defined in the subject SpdxDocument.\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"crossRefs\" : {\n            \"description\" : \"Cross Reference Detail for a license SeeAlso URL\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"isLive\" : {\n                  \"description\" : \"Indicate a URL is still a live accessible location on the public internet\",\n                  \"type\" : \"boolean\"\n                },\n                \"isValid\" : {\n                  \"description\" : \"True if the URL is a valid well formed URL\",\n                  \"type\" : \"boolean\"\n                },\n                \"isWayBackLink\" : {\n                  \"description\" : \"True if the License SeeAlso URL points to a Wayback archive\",\n                  \"type\" : \"boolean\"\n                },\n                \"match\" : {\n                  \"description\" : \"Status of a License List SeeAlso URL reference if it refers to a website that matches the license text.\",\n                  \"type\" : \"string\"\n                },\n                \"order\" : {\n                  \"description\" : \"The ordinal order of this element within a list\",\n                  \"type\" : \"integer\"\n                },\n                \"timestamp\" : {\n                  \"description\" : \"Timestamp\",\n                  \"type\" : \"string\"\n                },\n                \"url\" : {\n                  \"description\" : \"URL Reference\",\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"url\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"Cross reference details for the a URL reference\"\n            }\n          },\n          \"extractedText\" : {\n            \"description\" : \"Provide a copy of the actual text of the license reference extracted from the package, file or snippet that is associated with the License Identifier to aid in future analysis.\",\n            \"type\" : \"string\"\n          },\n          \"licenseId\" : {\n            \"description\" : \"A human readable short form license identifier for a license. The license ID is either on the standard license list or the form \\\"LicenseRef-[idString]\\\" where [idString] is a unique string containing letters, numbers, \\\".\\\" or \\\"-\\\".  When used within a license expression, the license ID can optionally include a reference to an external document in the form \\\"DocumentRef-[docrefIdString]:LicenseRef-[idString]\\\" where docRefIdString is an ID for an external document reference.\",\n            \"type\" : \"string\"\n          },\n          \"name\" : {\n            \"description\" : \"Identify name of this SpdxElement.\",\n            \"type\" : \"string\"\n          },\n          \"seeAlsos\" : {\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"string\"\n            }\n          }\n        },\n        \"required\" : [ \"extractedText\", \"licenseId\" ],\n        \"additionalProperties\" : false,\n        \"description\" : \"An ExtractedLicensingInfo represents a license or licensing notice that was found in a package, file or snippet. Any license text that is recognized as a license may be represented as a License rather than an ExtractedLicensingInfo.\"\n      }\n    },\n    \"name\" : {\n      \"description\" : \"Identify name of this SpdxElement.\",\n      \"type\" : \"string\"\n    },\n    \"revieweds\" : {\n      \"description\" : \"Reviewed\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"reviewDate\" : {\n            \"description\" : \"The date and time at which the SpdxDocument was reviewed. This value must be in UTC and have 'Z' as its timezone indicator.\",\n            \"type\" : \"string\"\n          },\n          \"reviewer\" : {\n            \"description\" : \"The name and, optionally, contact information of the person who performed the review. Values of this property must conform to the agent and tool syntax.  The reviewer property is deprecated in favor of Annotation with an annotationType review.\",\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"reviewDate\" ],\n        \"additionalProperties\" : false,\n        \"description\" : \"This class has been deprecated in favor of an Annotation with an Annotation type of review.\"\n      }\n    },\n    \"spdxVersion\" : {\n      \"description\" : \"Provide a reference number that can be used to understand how to parse and interpret the rest of the file. It will enable both future changes to the specification and to support backward compatibility. The version number consists of a major and minor version indicator. The major field will be incremented when incompatible changes between versions are made (one or more sections are created, modified or deleted). The minor field will be incremented when backwards compatible changes are made.\",\n      \"type\" : \"string\"\n    },\n    \"documentNamespace\" : {\n      \"type\" : \"string\",\n      \"description\" : \"The URI provides an unambiguous mechanism for other SPDX documents to reference SPDX elements within this SPDX document.\"\n    },\n    \"documentDescribes\" : {\n      \"description\" : \"Packages, files and/or Snippets described by this SPDX document\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"string\",\n        \"description\" : \"SPDX ID for each Package, File, or Snippet.\"\n      }\n    },\n    \"packages\" : {\n      \"description\" : \"Packages referenced in the SPDX document\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"SPDXID\" : {\n            \"type\" : \"string\",\n            \"description\" : \"Uniquely identify any element in an SPDX document which may be referenced by other elements.\"\n          },\n          \"annotations\" : {\n            \"description\" : \"Provide additional information about an SpdxElement.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"annotationDate\" : {\n                  \"description\" : \"Identify when the comment was made. This is to be specified according to the combined date and time in the UTC format, as specified in the ISO 8601 standard.\",\n                  \"type\" : \"string\"\n                },\n                \"annotationType\" : {\n                  \"description\" : \"Type of the annotation.\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"OTHER\", \"REVIEW\" ]\n                },\n                \"annotator\" : {\n                  \"description\" : \"This field identifies the person, organization, or tool that has commented on a file, package, snippet, or the entire document.\",\n                  \"type\" : \"string\"\n                },\n                \"comment\" : {\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"annotationDate\", \"annotationType\", \"annotator\", \"comment\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"An Annotation is a comment on an SpdxItem by an agent.\"\n            }\n          },\n          \"attributionTexts\" : {\n            \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"builtDate\" : {\n            \"description\" : \"This field provides a place for recording the actual date the package was built.\",\n            \"type\" : \"string\"\n          },\n          \"checksums\" : {\n            \"description\" : \"The checksum property provides a mechanism that can be used to verify that the contents of a File or Package have not changed.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"algorithm\" : {\n                  \"description\" : \"Identifies the algorithm used to produce the subject Checksum. Currently, SHA-1 is the only supported algorithm. It is anticipated that other algorithms will be supported at a later time.\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"SHA1\", \"BLAKE3\", \"SHA3-384\", \"SHA256\", \"SHA384\", \"BLAKE2b-512\", \"BLAKE2b-256\", \"SHA3-512\", \"MD2\", \"ADLER32\", \"MD4\", \"SHA3-256\", \"BLAKE2b-384\", \"SHA512\", \"MD6\", \"MD5\", \"SHA224\" ]\n                },\n                \"checksumValue\" : {\n                  \"description\" : \"The checksumValue property provides a lower case hexidecimal encoded digest value produced using a specific algorithm.\",\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"algorithm\", \"checksumValue\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"A Checksum is value that allows the contents of a file to be authenticated. Even small changes to the content of the file will change its checksum. This class allows the results of a variety of checksum and cryptographic message digest algorithms to be represented.\"\n            }\n          },\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"copyrightText\" : {\n            \"description\" : \"The text of copyright declarations recited in the package, file or snippet.\\n\\nIf the copyrightText field is not present, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"description\" : {\n            \"description\" : \"Provides a detailed description of the package.\",\n            \"type\" : \"string\"\n          },\n          \"downloadLocation\" : {\n            \"description\" : \"The URI at which this package is available for download. Private (i.e., not publicly reachable) URIs are acceptable as values of this property. The values http://spdx.org/rdf/terms#none and http://spdx.org/rdf/terms#noassertion may be used to specify that the package is not downloadable or that no attempt was made to determine its download location, respectively.\",\n            \"type\" : \"string\"\n          },\n          \"externalRefs\" : {\n            \"description\" : \"An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"comment\" : {\n                  \"type\" : \"string\"\n                },\n                \"referenceCategory\" : {\n                  \"description\" : \"Category for the external reference\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"OTHER\", \"PERSISTENT-ID\", \"PERSISTENT_ID\", \"SECURITY\", \"PACKAGE-MANAGER\", \"PACKAGE_MANAGER\" ]\n                },\n                \"referenceLocator\" : {\n                  \"description\" : \"The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location. The format of the locator is subject to constraints defined by the <type>.\",\n                  \"type\" : \"string\"\n                },\n                \"referenceType\" : {\n                  \"description\" : \"Type of the external reference. These are defined in an appendix in the SPDX specification.\",\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"referenceCategory\", \"referenceLocator\", \"referenceType\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package.\"\n            }\n          },\n          \"filesAnalyzed\" : {\n            \"description\" : \"Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document. If false indicates packages that represent metadata or URI references to a project, product, artifact, distribution or a component. If set to false, the package must not contain any files.\",\n            \"type\" : \"boolean\"\n          },\n          \"hasFiles\" : {\n            \"description\" : \"Indicates that a particular file belongs to a package.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"SPDX ID for File.  Indicates that a particular file belongs to a package.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"homepage\" : {\n            \"type\" : \"string\"\n          },\n          \"licenseComments\" : {\n            \"description\" : \"The licenseComments property allows the preparer of the SPDX document to describe why the licensing in spdx:licenseConcluded was chosen.\",\n            \"type\" : \"string\"\n          },\n          \"licenseConcluded\" : {\n            \"description\" : \"License expression for licenseConcluded. See SPDX Annex D for the license expression syntax.  The licensing that the preparer of this SPDX document has concluded, based on the evidence, actually applies to the SPDX Item.\\n\\nIf the licenseConcluded field is not present for an SPDX Item, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"licenseDeclared\" : {\n            \"description\" : \"License expression for licenseDeclared. See SPDX Annex D for the license expression syntax.  The licensing that the creators of the software in the package, or the packager, have declared. Declarations by the original software creator should be preferred, if they exist.\",\n            \"type\" : \"string\"\n          },\n          \"licenseInfoFromFiles\" : {\n            \"description\" : \"The licensing information that was discovered directly within the package. There will be an instance of this property for each distinct value of alllicenseInfoInFile properties of all files contained in the package.\\n\\nIf the licenseInfoFromFiles field is not present for a package and filesAnalyzed property for that same package is true or omitted, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"License expression for licenseInfoFromFiles. See SPDX Annex D for the license expression syntax.  The licensing information that was discovered directly within the package. There will be an instance of this property for each distinct value of alllicenseInfoInFile properties of all files contained in the package.\\n\\nIf the licenseInfoFromFiles field is not present for a package and filesAnalyzed property for that same package is true or omitted, it implies an equivalent meaning to NOASSERTION.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"name\" : {\n            \"description\" : \"Identify name of this SpdxElement.\",\n            \"type\" : \"string\"\n          },\n          \"originator\" : {\n            \"description\" : \"The name and, optionally, contact information of the person or organization that originally created the package. Values of this property must conform to the agent and tool syntax.\",\n            \"type\" : \"string\"\n          },\n          \"packageFileName\" : {\n            \"description\" : \"The base name of the package file name. For example, zlib-1.2.5.tar.gz.\",\n            \"type\" : \"string\"\n          },\n          \"packageVerificationCode\" : {\n            \"type\" : \"object\",\n            \"properties\" : {\n              \"packageVerificationCodeExcludedFiles\" : {\n                \"description\" : \"A file that was excluded when calculating the package verification code. This is usually a file containing SPDX data regarding the package. If a package contains more than one SPDX file all SPDX files must be excluded from the package verification code. If this is not done it would be impossible to correctly calculate the verification codes in both files.\",\n                \"type\" : \"array\",\n                \"items\" : {\n                  \"description\" : \"A file that was excluded when calculating the package verification code. This is usually a file containing SPDX data regarding the package. If a package contains more than one SPDX file all SPDX files must be excluded from the package verification code. If this is not done it would be impossible to correctly calculate the verification codes in both files.\",\n                  \"type\" : \"string\"\n                }\n              },\n              \"packageVerificationCodeValue\" : {\n                \"description\" : \"The actual package verification code as a hex encoded value.\",\n                \"type\" : \"string\"\n              }\n            },\n            \"required\" : [ \"packageVerificationCodeValue\" ],\n            \"additionalProperties\" : false,\n            \"description\" : \"A manifest based verification code (the algorithm is defined in section 4.7 of the full specification) of the SPDX Item. This allows consumers of this data and/or database to determine if an SPDX item they have in hand is identical to the SPDX item from which the data was produced. This algorithm works even if the SPDX document is included in the SPDX item.\"\n          },\n          \"primaryPackagePurpose\" : {\n            \"description\" : \"This field provides information about the primary purpose of the identified package. Package Purpose is intrinsic to how the package is being used rather than the content of the package.\",\n            \"type\" : \"string\",\n            \"enum\" : [ \"OTHER\", \"INSTALL\", \"ARCHIVE\", \"FIRMWARE\", \"APPLICATION\", \"FRAMEWORK\", \"LIBRARY\", \"CONTAINER\", \"SOURCE\", \"DEVICE\", \"OPERATING_SYSTEM\", \"FILE\" ]\n          },\n          \"releaseDate\" : {\n            \"description\" : \"This field provides a place for recording the date the package was released.\",\n            \"type\" : \"string\"\n          },\n          \"sourceInfo\" : {\n            \"description\" : \"Allows the producer(s) of the SPDX document to describe how the package was acquired and/or changed from the original source.\",\n            \"type\" : \"string\"\n          },\n          \"summary\" : {\n            \"description\" : \"Provides a short description of the package.\",\n            \"type\" : \"string\"\n          },\n          \"supplier\" : {\n            \"description\" : \"The name and, optionally, contact information of the person or organization who was the immediate supplier of this package to the recipient. The supplier may be different than originator when the software has been repackaged. Values of this property must conform to the agent and tool syntax.\",\n            \"type\" : \"string\"\n          },\n          \"validUntilDate\" : {\n            \"description\" : \"This field provides a place for recording the end of the support period for a package from the supplier.\",\n            \"type\" : \"string\"\n          },\n          \"versionInfo\" : {\n            \"description\" : \"Provides an indication of the version of the package that is described by this SpdxDocument.\",\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"SPDXID\", \"downloadLocation\", \"name\" ],\n        \"additionalProperties\" : false\n      }\n    },\n    \"files\" : {\n      \"description\" : \"Files referenced in the SPDX document\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"SPDXID\" : {\n            \"type\" : \"string\",\n            \"description\" : \"Uniquely identify any element in an SPDX document which may be referenced by other elements.\"\n          },\n          \"annotations\" : {\n            \"description\" : \"Provide additional information about an SpdxElement.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"annotationDate\" : {\n                  \"description\" : \"Identify when the comment was made. This is to be specified according to the combined date and time in the UTC format, as specified in the ISO 8601 standard.\",\n                  \"type\" : \"string\"\n                },\n                \"annotationType\" : {\n                  \"description\" : \"Type of the annotation.\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"OTHER\", \"REVIEW\" ]\n                },\n                \"annotator\" : {\n                  \"description\" : \"This field identifies the person, organization, or tool that has commented on a file, package, snippet, or the entire document.\",\n                  \"type\" : \"string\"\n                },\n                \"comment\" : {\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"annotationDate\", \"annotationType\", \"annotator\", \"comment\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"An Annotation is a comment on an SpdxItem by an agent.\"\n            }\n          },\n          \"artifactOfs\" : {\n            \"description\" : \"Indicates the project in which the SpdxElement originated. Tools must preserve doap:homepage and doap:name properties and the URI (if one is known) of doap:Project resources that are values of this property. All other properties of doap:Projects are not directly supported by SPDX and may be dropped when translating to or from some SPDX formats.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\"\n            }\n          },\n          \"attributionTexts\" : {\n            \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"checksums\" : {\n            \"description\" : \"The checksum property provides a mechanism that can be used to verify that the contents of a File or Package have not changed.\",\n            \"minItems\" : 1,\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"algorithm\" : {\n                  \"description\" : \"Identifies the algorithm used to produce the subject Checksum. Currently, SHA-1 is the only supported algorithm. It is anticipated that other algorithms will be supported at a later time.\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"SHA1\", \"BLAKE3\", \"SHA3-384\", \"SHA256\", \"SHA384\", \"BLAKE2b-512\", \"BLAKE2b-256\", \"SHA3-512\", \"MD2\", \"ADLER32\", \"MD4\", \"SHA3-256\", \"BLAKE2b-384\", \"SHA512\", \"MD6\", \"MD5\", \"SHA224\" ]\n                },\n                \"checksumValue\" : {\n                  \"description\" : \"The checksumValue property provides a lower case hexidecimal encoded digest value produced using a specific algorithm.\",\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"algorithm\", \"checksumValue\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"A Checksum is value that allows the contents of a file to be authenticated. Even small changes to the content of the file will change its checksum. This class allows the results of a variety of checksum and cryptographic message digest algorithms to be represented.\"\n            }\n          },\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"copyrightText\" : {\n            \"description\" : \"The text of copyright declarations recited in the package, file or snippet.\\n\\nIf the copyrightText field is not present, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"fileContributors\" : {\n            \"description\" : \"This field provides a place for the SPDX file creator to record file contributors. Contributors could include names of copyright holders and/or authors who may not be copyright holders yet contributed to the file content.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"This field provides a place for the SPDX file creator to record file contributors. Contributors could include names of copyright holders and/or authors who may not be copyright holders yet contributed to the file content.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"fileDependencies\" : {\n            \"description\" : \"This field is deprecated since SPDX 2.0 in favor of using Section 7 which provides more granularity about relationships.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"SPDX ID for File.  This field is deprecated since SPDX 2.0 in favor of using Section 7 which provides more granularity about relationships.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"fileName\" : {\n            \"description\" : \"The name of the file relative to the root of the package.\",\n            \"type\" : \"string\"\n          },\n          \"fileTypes\" : {\n            \"description\" : \"The type of the file.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"The type of the file.\",\n              \"type\" : \"string\",\n              \"enum\" : [ \"OTHER\", \"DOCUMENTATION\", \"IMAGE\", \"VIDEO\", \"ARCHIVE\", \"SPDX\", \"APPLICATION\", \"SOURCE\", \"BINARY\", \"TEXT\", \"AUDIO\" ]\n            }\n          },\n          \"licenseComments\" : {\n            \"description\" : \"The licenseComments property allows the preparer of the SPDX document to describe why the licensing in spdx:licenseConcluded was chosen.\",\n            \"type\" : \"string\"\n          },\n          \"licenseConcluded\" : {\n            \"description\" : \"License expression for licenseConcluded. See SPDX Annex D for the license expression syntax.  The licensing that the preparer of this SPDX document has concluded, based on the evidence, actually applies to the SPDX Item.\\n\\nIf the licenseConcluded field is not present for an SPDX Item, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"licenseInfoInFiles\" : {\n            \"description\" : \"Licensing information that was discovered directly in the subject file. This is also considered a declared license for the file.\\n\\nIf the licenseInfoInFile field is not present for a file, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"License expression for licenseInfoInFile. See SPDX Annex D for the license expression syntax.  Licensing information that was discovered directly in the subject file. This is also considered a declared license for the file.\\n\\nIf the licenseInfoInFile field is not present for a file, it implies an equivalent meaning to NOASSERTION.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"noticeText\" : {\n            \"description\" : \"This field provides a place for the SPDX file creator to record potential legal notices found in the file. This may or may not include copyright statements.\",\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"SPDXID\", \"checksums\", \"fileName\" ],\n        \"additionalProperties\" : false\n      }\n    },\n    \"snippets\" : {\n      \"description\" : \"Snippets referenced in the SPDX document\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"SPDXID\" : {\n            \"type\" : \"string\",\n            \"description\" : \"Uniquely identify any element in an SPDX document which may be referenced by other elements.\"\n          },\n          \"annotations\" : {\n            \"description\" : \"Provide additional information about an SpdxElement.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"annotationDate\" : {\n                  \"description\" : \"Identify when the comment was made. This is to be specified according to the combined date and time in the UTC format, as specified in the ISO 8601 standard.\",\n                  \"type\" : \"string\"\n                },\n                \"annotationType\" : {\n                  \"description\" : \"Type of the annotation.\",\n                  \"type\" : \"string\",\n                  \"enum\" : [ \"OTHER\", \"REVIEW\" ]\n                },\n                \"annotator\" : {\n                  \"description\" : \"This field identifies the person, organization, or tool that has commented on a file, package, snippet, or the entire document.\",\n                  \"type\" : \"string\"\n                },\n                \"comment\" : {\n                  \"type\" : \"string\"\n                }\n              },\n              \"required\" : [ \"annotationDate\", \"annotationType\", \"annotator\", \"comment\" ],\n              \"additionalProperties\" : false,\n              \"description\" : \"An Annotation is a comment on an SpdxItem by an agent.\"\n            }\n          },\n          \"attributionTexts\" : {\n            \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"This field provides a place for the SPDX data creator to record acknowledgements that may be required to be communicated in some contexts. This is not meant to include the actual complete license text (see licenseConculded and licenseDeclared), and may or may not include copyright notices (see also copyrightText). The SPDX data creator may use this field to record other acknowledgements, such as particular clauses from license texts, which may be necessary or desirable to reproduce.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"copyrightText\" : {\n            \"description\" : \"The text of copyright declarations recited in the package, file or snippet.\\n\\nIf the copyrightText field is not present, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"licenseComments\" : {\n            \"description\" : \"The licenseComments property allows the preparer of the SPDX document to describe why the licensing in spdx:licenseConcluded was chosen.\",\n            \"type\" : \"string\"\n          },\n          \"licenseConcluded\" : {\n            \"description\" : \"License expression for licenseConcluded. See SPDX Annex D for the license expression syntax.  The licensing that the preparer of this SPDX document has concluded, based on the evidence, actually applies to the SPDX Item.\\n\\nIf the licenseConcluded field is not present for an SPDX Item, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"string\"\n          },\n          \"licenseInfoInSnippets\" : {\n            \"description\" : \"Licensing information that was discovered directly in the subject snippet. This is also considered a declared license for the snippet.\\n\\nIf the licenseInfoInSnippet field is not present for a snippet, it implies an equivalent meaning to NOASSERTION.\",\n            \"type\" : \"array\",\n            \"items\" : {\n              \"description\" : \"License expression for licenseInfoInSnippet. See SPDX Annex D for the license expression syntax.  Licensing information that was discovered directly in the subject snippet. This is also considered a declared license for the snippet.\\n\\nIf the licenseInfoInSnippet field is not present for a snippet, it implies an equivalent meaning to NOASSERTION.\",\n              \"type\" : \"string\"\n            }\n          },\n          \"name\" : {\n            \"description\" : \"Identify name of this SpdxElement.\",\n            \"type\" : \"string\"\n          },\n          \"ranges\" : {\n            \"description\" : \"This field defines the byte range in the original host file (in X.2) that the snippet information applies to\",\n            \"minItems\" : 1,\n            \"type\" : \"array\",\n            \"items\" : {\n              \"type\" : \"object\",\n              \"properties\" : {\n                \"endPointer\" : {\n                  \"type\" : \"object\",\n                  \"properties\" : {\n                    \"reference\" : {\n                      \"description\" : \"SPDX ID for File\",\n                      \"type\" : \"string\"\n                    },\n                    \"offset\" : {\n                      \"type\" : \"integer\",\n                      \"description\" : \"Byte offset in the file\"\n                    },\n                    \"lineNumber\" : {\n                      \"type\" : \"integer\",\n                      \"description\" : \"line number offset in the file\"\n                    }\n                  },\n                  \"required\" : [ \"reference\" ],\n                  \"additionalProperties\" : false\n                },\n                \"startPointer\" : {\n                  \"type\" : \"object\",\n                  \"properties\" : {\n                    \"reference\" : {\n                      \"description\" : \"SPDX ID for File\",\n                      \"type\" : \"string\"\n                    },\n                    \"offset\" : {\n                      \"type\" : \"integer\",\n                      \"description\" : \"Byte offset in the file\"\n                    },\n                    \"lineNumber\" : {\n                      \"type\" : \"integer\",\n                      \"description\" : \"line number offset in the file\"\n                    }\n                  },\n                  \"required\" : [ \"reference\" ],\n                  \"additionalProperties\" : false\n                }\n              },\n              \"required\" : [ \"endPointer\", \"startPointer\" ],\n              \"additionalProperties\" : false\n            }\n          },\n          \"snippetFromFile\" : {\n            \"description\" : \"SPDX ID for File.  File containing the SPDX element (e.g. the file contaning a snippet).\",\n            \"type\" : \"string\"\n          }\n        },\n        \"required\" : [ \"SPDXID\", \"name\", \"ranges\", \"snippetFromFile\" ],\n        \"additionalProperties\" : false\n      }\n    },\n    \"relationships\" : {\n      \"description\" : \"Relationships referenced in the SPDX document\",\n      \"type\" : \"array\",\n      \"items\" : {\n        \"type\" : \"object\",\n        \"properties\" : {\n          \"spdxElementId\" : {\n            \"type\" : \"string\",\n            \"description\" : \"Id to which the SPDX element is related\"\n          },\n          \"comment\" : {\n            \"type\" : \"string\"\n          },\n          \"relatedSpdxElement\" : {\n            \"description\" : \"SPDX ID for SpdxElement.  A related SpdxElement.\",\n            \"type\" : \"string\"\n          },\n          \"relationshipType\" : {\n            \"description\" : \"Describes the type of relationship between two SPDX elements.\",\n            \"type\" : \"string\",\n            \"enum\" : [ \"VARIANT_OF\", \"COPY_OF\", \"PATCH_FOR\", \"TEST_DEPENDENCY_OF\", \"CONTAINED_BY\", \"DATA_FILE_OF\", \"OPTIONAL_COMPONENT_OF\", \"ANCESTOR_OF\", \"GENERATES\", \"CONTAINS\", \"OPTIONAL_DEPENDENCY_OF\", \"FILE_ADDED\", \"REQUIREMENT_DESCRIPTION_FOR\", \"DEV_DEPENDENCY_OF\", \"DEPENDENCY_OF\", \"BUILD_DEPENDENCY_OF\", \"DESCRIBES\", \"PREREQUISITE_FOR\", \"HAS_PREREQUISITE\", \"PROVIDED_DEPENDENCY_OF\", \"DYNAMIC_LINK\", \"DESCRIBED_BY\", \"METAFILE_OF\", \"DEPENDENCY_MANIFEST_OF\", \"PATCH_APPLIED\", \"RUNTIME_DEPENDENCY_OF\", \"TEST_OF\", \"TEST_TOOL_OF\", \"DEPENDS_ON\", \"SPECIFICATION_FOR\", \"FILE_MODIFIED\", \"DISTRIBUTION_ARTIFACT\", \"AMENDS\", \"DOCUMENTATION_OF\", \"GENERATED_FROM\", \"STATIC_LINK\", \"OTHER\", \"BUILD_TOOL_OF\", \"TEST_CASE_OF\", \"PACKAGE_OF\", \"DESCENDANT_OF\", \"FILE_DELETED\", \"EXPANDED_FROM_ARCHIVE\", \"DEV_TOOL_OF\", \"EXAMPLE_OF\" ]\n          }\n        },\n        \"required\" : [ \"spdxElementId\", \"relatedSpdxElement\", \"relationshipType\" ],\n        \"additionalProperties\" : false\n      }\n    }\n  },\n  \"required\" : [ \"SPDXID\", \"creationInfo\", \"dataLicense\", \"name\", \"spdxVersion\", \"documentNamespace\" ],\n  \"additionalProperties\" : false\n}\n"
  },
  {
    "path": "syft/artifact/id.go",
    "content": "package artifact\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/gohugoio/hashstructure\"\n)\n\n// ID represents a unique value for each package added to a package catalog.\ntype ID string\n\ntype Identifiable interface {\n\tID() ID\n}\n\nfunc IDByHash(obj interface{}) (ID, error) {\n\tf, err := hashstructure.Hash(obj, &hashstructure.HashOptions{\n\t\tZeroNil:      true,\n\t\tSlicesAsSets: true,\n\t})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"could not build ID for object=%+v: %w\", obj, err)\n\t}\n\n\treturn ID(fmt.Sprintf(\"%016x\", f)), nil\n}\n"
  },
  {
    "path": "syft/artifact/relationship.go",
    "content": "package artifact\n\nconst (\n\t// OwnershipByFileOverlapRelationship (supports package-to-package linkages) indicates that the parent package\n\t// claims ownership of a child package since the parent metadata indicates overlap with a location that a\n\t// cataloger found the child package by. This relationship must be created only after all package cataloging\n\t// has been completed.\n\tOwnershipByFileOverlapRelationship RelationshipType = \"ownership-by-file-overlap\"\n\n\t// EvidentByRelationship is a package-to-file relationship indicating the that existence of this package is evident\n\t// by the contents of a file. This does not necessarily mean that the package is contained within that file\n\t// or that it is described by it (either or both may be true). This does NOT map to an existing specific SPDX\n\t// relationship. Instead, this should be mapped to OTHER and the comment field be updated to show EVIDENT_BY.\n\tEvidentByRelationship RelationshipType = \"evident-by\"\n\n\t// ContainsRelationship (supports any-to-any linkages) is a proxy for the SPDX 2.2 CONTAINS relationship.\n\tContainsRelationship RelationshipType = \"contains\"\n\n\t// DependencyOfRelationship is a proxy for the SPDX 2.2.1 DEPENDENCY_OF\trelationship.\n\tDependencyOfRelationship RelationshipType = \"dependency-of\"\n\n\t// DescribedByRelationship is a proxy for the SPDX 2.2.2 DESCRIBED_BY relationship.\n\tDescribedByRelationship RelationshipType = \"described-by\"\n)\n\nfunc AllRelationshipTypes() []RelationshipType {\n\treturn []RelationshipType{\n\t\tOwnershipByFileOverlapRelationship,\n\t\tContainsRelationship,\n\t\tDependencyOfRelationship,\n\t\tDescribedByRelationship,\n\t}\n}\n\ntype RelationshipType string\n\ntype Relationship struct {\n\tFrom Identifiable\n\tTo   Identifiable\n\tType RelationshipType\n\tData interface{}\n}\n"
  },
  {
    "path": "syft/cataloging/archive_search.go",
    "content": "package cataloging\n\ntype ArchiveSearchConfig struct {\n\t// IncludeIndexedArchives indicates whether to search within indexed archive files (e.g., .zip).\n\tIncludeIndexedArchives bool `yaml:\"include-indexed-archives\" json:\"include-indexed-archives\" mapstructure:\"include-indexed-archives\"`\n\n\t// IncludeUnindexedArchives indicates whether to search within unindexed archive files (e.g., .tar*).\n\tIncludeUnindexedArchives bool `yaml:\"include-unindexed-archives\" json:\"include-unindexed-archives\" mapstructure:\"include-unindexed-archives\"`\n}\n\nfunc DefaultArchiveSearchConfig() ArchiveSearchConfig {\n\treturn ArchiveSearchConfig{\n\t\tIncludeIndexedArchives:   true,\n\t\tIncludeUnindexedArchives: false,\n\t}\n}\n\nfunc (c ArchiveSearchConfig) WithIncludeIndexedArchives(include bool) ArchiveSearchConfig {\n\tc.IncludeIndexedArchives = include\n\treturn c\n}\n\nfunc (c ArchiveSearchConfig) WithIncludeUnindexedArchives(include bool) ArchiveSearchConfig {\n\tc.IncludeUnindexedArchives = include\n\treturn c\n}\n"
  },
  {
    "path": "syft/cataloging/compliance.go",
    "content": "package cataloging\n\nimport (\n\t\"strings\"\n)\n\nconst (\n\tComplianceActionKeep ComplianceAction = \"keep\"\n\tComplianceActionDrop ComplianceAction = \"drop\"\n\tComplianceActionStub ComplianceAction = \"stub\"\n)\n\nconst UnknownStubValue = \"UNKNOWN\"\n\ntype ComplianceAction string\n\ntype ComplianceConfig struct {\n\tMissingName    ComplianceAction `yaml:\"missing-name\" json:\"missing-name\" mapstructure:\"missing-name\"`\n\tMissingVersion ComplianceAction `yaml:\"missing-version\" json:\"missing-version\" mapstructure:\"missing-version\"`\n}\n\nfunc DefaultComplianceConfig() ComplianceConfig {\n\t// Note: name and version are required minimum SBOM elements by NTIA, thus should be the API default\n\treturn ComplianceConfig{\n\t\tMissingName:    ComplianceActionDrop,\n\t\tMissingVersion: ComplianceActionStub,\n\t}\n}\n\nfunc (c ComplianceConfig) Parse() ComplianceConfig {\n\treturn ComplianceConfig{\n\t\tMissingName:    c.MissingName.Parse(),\n\t\tMissingVersion: c.MissingVersion.Parse(),\n\t}\n}\n\nfunc (c ComplianceAction) Parse() ComplianceAction {\n\tswitch strings.ToLower(string(c)) {\n\tcase string(ComplianceActionKeep), \"include\":\n\t\treturn ComplianceActionKeep\n\tcase string(ComplianceActionDrop), \"exclude\":\n\t\treturn ComplianceActionDrop\n\tcase string(ComplianceActionStub), \"replace\":\n\t\treturn ComplianceActionStub\n\t}\n\treturn ComplianceActionKeep\n}\n"
  },
  {
    "path": "syft/cataloging/data_generation.go",
    "content": "package cataloging\n\ntype DataGenerationConfig struct {\n\tGenerateCPEs bool `yaml:\"generate-cpes\" json:\"generate-cpes\" mapstructure:\"generate-cpes\"`\n}\n\nfunc DefaultDataGenerationConfig() DataGenerationConfig {\n\treturn DataGenerationConfig{\n\t\tGenerateCPEs: true,\n\t}\n}\n\nfunc (c DataGenerationConfig) WithGenerateCPEs(generate bool) DataGenerationConfig {\n\tc.GenerateCPEs = generate\n\treturn c\n}\n"
  },
  {
    "path": "syft/cataloging/executor.go",
    "content": "package cataloging\n\n// ExecutorCPU is the name to use when executing parallel functions which are CPU-intensive, such as\n// hashing full files\nconst ExecutorCPU = \"cpu\"\n\n// ExecutorFile is the name to use when executing parallel file reading functions, such as cataloging\nconst ExecutorFile = \"file\"\n"
  },
  {
    "path": "syft/cataloging/filecataloging/config.go",
    "content": "package filecataloging\n\nimport (\n\t\"crypto\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/file/cataloger/executable\"\n\t\"github.com/anchore/syft/syft/file/cataloger/filecontent\"\n)\n\ntype Config struct {\n\tSelection  file.Selection     `yaml:\"selection\" json:\"selection\" mapstructure:\"selection\"`\n\tHashers    []crypto.Hash      `yaml:\"hashers\" json:\"hashers\" mapstructure:\"hashers\"`\n\tContent    filecontent.Config `yaml:\"content\" json:\"content\" mapstructure:\"content\"`\n\tExecutable executable.Config  `yaml:\"executable\" json:\"executable\" mapstructure:\"executable\"`\n}\n\ntype configMarshaledForm struct {\n\tSelection file.Selection     `yaml:\"selection\" json:\"selection\" mapstructure:\"selection\"`\n\tHashers   []string           `yaml:\"hashers\" json:\"hashers\" mapstructure:\"hashers\"`\n\tContent   filecontent.Config `yaml:\"content\" json:\"content\" mapstructure:\"content\"`\n}\n\nfunc DefaultConfig() Config {\n\thashers, err := intFile.Hashers(\"sha256\")\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Warn(\"unable to create file hashers\")\n\t}\n\treturn Config{\n\t\tSelection:  file.FilesOwnedByPackageSelection,\n\t\tHashers:    hashers,\n\t\tContent:    filecontent.DefaultConfig(),\n\t\tExecutable: executable.DefaultConfig(),\n\t}\n}\n\nfunc (cfg Config) MarshalJSON() ([]byte, error) {\n\tmarshaled := configMarshaledForm{\n\t\tSelection: cfg.Selection,\n\t\tHashers:   hashersToString(cfg.Hashers),\n\t}\n\treturn json.Marshal(marshaled)\n}\n\nfunc hashersToString(hashers []crypto.Hash) []string {\n\tvar result []string\n\tfor _, h := range hashers {\n\t\tresult = append(result, strings.ToLower(h.String()))\n\t}\n\treturn result\n}\n\nfunc (cfg *Config) UnmarshalJSON(data []byte) error {\n\tvar marshaled configMarshaledForm\n\tif err := json.Unmarshal(data, &marshaled); err != nil {\n\t\treturn err\n\t}\n\n\thashers, err := intFile.Hashers(marshaled.Hashers...)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to parse configured hashers: %w\", err)\n\t}\n\tcfg.Selection = marshaled.Selection\n\tcfg.Hashers = hashers\n\treturn nil\n}\n\nfunc (cfg Config) WithSelection(selection file.Selection) Config {\n\tcfg.Selection = selection\n\treturn cfg\n}\n\nfunc (cfg Config) WithHashers(hashers ...crypto.Hash) Config {\n\tcfg.Hashers = intFile.NormalizeHashes(hashers)\n\treturn cfg\n}\n\nfunc (cfg Config) WithContentConfig(content filecontent.Config) Config {\n\tcfg.Content = content\n\treturn cfg\n}\n"
  },
  {
    "path": "syft/cataloging/filecataloging/config_test.go",
    "content": "package filecataloging\n\nimport (\n\t\"crypto\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestConfig_MarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     Config\n\t\twant    []byte\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"converts hashers to strings\",\n\t\t\tcfg: Config{\n\t\t\t\tSelection: file.FilesOwnedByPackageSelection,\n\t\t\t\tHashers:   []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\twant: []byte(`{\"selection\":\"owned-by-package\",\"hashers\":[\"sha-256\"],\"content\":{\"globs\":null,\"skip-files-above-size\":0}}`),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tgot, err := tt.cfg.MarshalJSON()\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif d := cmp.Diff(got, tt.want); d != \"\" {\n\t\t\t\tt.Errorf(\"MarshalJSON() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestConfig_UnmarshalJSON(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tdata    []byte\n\t\twant    Config\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"converts strings to hashers\",\n\t\t\tdata: []byte(`{\"selection\":\"owned-by-package\",\"hashers\":[\"sha-256\"]}`),\n\t\t\twant: Config{\n\t\t\t\tSelection: file.FilesOwnedByPackageSelection,\n\t\t\t\tHashers:   []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcfg := Config{}\n\t\t\tif err := cfg.UnmarshalJSON(tt.data); (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"UnmarshalJSON() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.want, cfg)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/cataloging/filecataloging/tags.go",
    "content": "package filecataloging\n\nconst (\n\t// FileTag should be used to identify catalogers that primarily discover information about files (as opposed to packages).\n\tFileTag = \"file\"\n)\n"
  },
  {
    "path": "syft/cataloging/license.go",
    "content": "package cataloging\n\nimport (\n\t\"github.com/anchore/syft/internal/licenses\"\n)\n\n// LicenseContent controls when license content should be included in the SBOM.\ntype LicenseContent string\n\nconst (\n\tLicenseContentIncludeAll     LicenseContent = \"all\"\n\tLicenseContentIncludeUnknown LicenseContent = \"unknown\"\n\tLicenseContentExcludeAll     LicenseContent = \"none\"\n)\n\ntype LicenseConfig struct {\n\t// IncludeContent controls whether license copy discovered should be included in the SBOM.\n\tIncludeContent LicenseContent `json:\"include-content\" yaml:\"include-content\" mapstructure:\"include-content\"`\n\n\t// Coverage is the percentage of text that must match a license for it to be considered a match.\n\tCoverage float64 `json:\"coverage\" yaml:\"coverage\" mapstructure:\"coverage\"`\n}\n\nfunc DefaultLicenseConfig() LicenseConfig {\n\treturn LicenseConfig{\n\t\tIncludeContent: LicenseContentExcludeAll,\n\t\tCoverage:       licenses.DefaultCoverageThreshold,\n\t}\n}\n"
  },
  {
    "path": "syft/cataloging/pkgcataloging/cataloger_reference.go",
    "content": "package pkgcataloging\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\ntype CatalogerReference struct {\n\tCataloger     pkg.Cataloger\n\tAlwaysEnabled bool\n\tTags          []string\n}\n\nfunc NewCatalogerReference(cataloger pkg.Cataloger, tags []string) CatalogerReference {\n\treturn CatalogerReference{\n\t\tCataloger: cataloger,\n\t\tTags:      tags,\n\t}\n}\n\nfunc NewAlwaysEnabledCatalogerReference(cataloger pkg.Cataloger) CatalogerReference {\n\treturn CatalogerReference{\n\t\tCataloger:     cataloger,\n\t\tAlwaysEnabled: true,\n\t}\n}\n"
  },
  {
    "path": "syft/cataloging/pkgcataloging/config.go",
    "content": "package pkgcataloging\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/dotnet\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/golang\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/javascript\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/kernel\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/nix\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/python\"\n)\n\ntype Config struct {\n\tBinary      binary.ClassifierCatalogerConfig  `yaml:\"binary\" json:\"binary\" mapstructure:\"binary\"`\n\tDotnet      dotnet.CatalogerConfig            `yaml:\"dotnet\" json:\"dotnet\" mapstructure:\"dotnet\"`\n\tGolang      golang.CatalogerConfig            `yaml:\"golang\" json:\"golang\" mapstructure:\"golang\"`\n\tJavaArchive java.ArchiveCatalogerConfig       `yaml:\"java-archive\" json:\"java-archive\" mapstructure:\"java-archive\"`\n\tJavaScript  javascript.CatalogerConfig        `yaml:\"javascript\" json:\"javascript\" mapstructure:\"javascript\"`\n\tLinuxKernel kernel.LinuxKernelCatalogerConfig `yaml:\"linux-kernel\" json:\"linux-kernel\" mapstructure:\"linux-kernel\"`\n\tNix         nix.Config                        `yaml:\"nix\" json:\"nix\" mapstructure:\"nix\"`\n\tPython      python.CatalogerConfig            `yaml:\"python\" json:\"python\" mapstructure:\"python\"`\n}\n\nfunc DefaultConfig() Config {\n\treturn Config{\n\t\tBinary:      binary.DefaultClassifierCatalogerConfig(),\n\t\tDotnet:      dotnet.DefaultCatalogerConfig(),\n\t\tGolang:      golang.DefaultCatalogerConfig(),\n\t\tJavaArchive: java.DefaultArchiveCatalogerConfig(),\n\t\tLinuxKernel: kernel.DefaultLinuxKernelCatalogerConfig(),\n\t\tNix:         nix.DefaultConfig(),\n\t\tPython:      python.DefaultCatalogerConfig(),\n\t}\n}\n\nfunc (c Config) WithNixConfig(cfg nix.Config) Config {\n\tc.Nix = cfg\n\treturn c\n}\n\nfunc (c Config) WithBinaryConfig(cfg binary.ClassifierCatalogerConfig) Config {\n\tc.Binary = cfg\n\treturn c\n}\n\nfunc (c Config) WithDotnetConfig(cfg dotnet.CatalogerConfig) Config {\n\tc.Dotnet = cfg\n\treturn c\n}\n\nfunc (c Config) WithGolangConfig(cfg golang.CatalogerConfig) Config {\n\tc.Golang = cfg\n\treturn c\n}\n\nfunc (c Config) WithJavascriptConfig(cfg javascript.CatalogerConfig) Config {\n\tc.JavaScript = cfg\n\treturn c\n}\n\nfunc (c Config) WithLinuxKernelConfig(cfg kernel.LinuxKernelCatalogerConfig) Config {\n\tc.LinuxKernel = cfg\n\treturn c\n}\n\nfunc (c Config) WithPythonConfig(cfg python.CatalogerConfig) Config {\n\tc.Python = cfg\n\treturn c\n}\n\nfunc (c Config) WithJavaArchiveConfig(cfg java.ArchiveCatalogerConfig) Config {\n\tc.JavaArchive = cfg\n\treturn c\n}\n"
  },
  {
    "path": "syft/cataloging/pkgcataloging/selection.go",
    "content": "package pkgcataloging\n\nimport (\n\t\"github.com/anchore/syft/syft/cataloging\"\n)\n\n// SelectionRequest is deprecated: use cataloging.SelectionRequest instead\ntype SelectionRequest = cataloging.SelectionRequest\n\n// NewSelectionRequest is deprecated: use cataloging.NewSelectionRequest instead\nvar NewSelectionRequest = cataloging.NewSelectionRequest\n"
  },
  {
    "path": "syft/cataloging/pkgcataloging/tags.go",
    "content": "package pkgcataloging\n\nconst (\n\t// InstalledTag is to identify packages found to be positively installed.\n\tInstalledTag = \"installed\"\n\n\t// DeclaredTag is to identify packages described but not necessarily installed.\n\tDeclaredTag = \"declared\"\n\n\t// ImageTag indicates the cataloger should be used when cataloging images.\n\tImageTag = \"image\"\n\n\t// DirectoryTag indicates the cataloger should be used when cataloging directories.\n\tDirectoryTag = \"directory\"\n\n\t// PackageTag should be used to identify catalogers that are package-based.\n\tPackageTag = \"package\"\n\n\t// OSTag should be used to identify catalogers that cataloging OS packages.\n\tOSTag = \"os\"\n\n\t// LanguageTag should be used to identify catalogers that cataloging language-specific packages.\n\tLanguageTag = \"language\"\n\n\t// DeprecatedTag should be used to identify catalogers that are deprecated.\n\tDeprecatedTag = \"deprecated\"\n)\n"
  },
  {
    "path": "syft/cataloging/relationships.go",
    "content": "package cataloging\n\ntype RelationshipsConfig struct {\n\t// PackageFileOwnership will include package-to-file relationships that indicate which files are owned by which packages.\n\tPackageFileOwnership bool `yaml:\"package-file-ownership\" json:\"package-file-ownership\" mapstructure:\"package-file-ownership\"`\n\n\t// PackageFileOwnershipOverlap will include package-to-package relationships that indicate one package is owned by another due to files claimed to be owned by one package are also evidence of another package's existence.\n\t// For example, if an RPM package is installed and claims to own /etc/app/package.lock and a separate NPM package was discovered by cataloging /etc/app/package.lock, then the two packages will\n\t// have ownership overlap relationship.\n\tPackageFileOwnershipOverlap bool `yaml:\"package-file-ownership-overlap\" json:\"package-file-ownership-overlap\" mapstructure:\"package-file-ownership-overlap\"`\n\n\t// ExcludeBinaryPackagesWithFileOwnershipOverlap will exclude binary packages from the package catalog that are evident by files also owned by another package.\n\t// For example, if a binary package representing the /bin/python binary is discovered and there is a python RPM package installed which claims to\n\t// orn /bin/python, then the binary package will be excluded from the catalog altogether if this configuration is set to true.\n\tExcludeBinaryPackagesWithFileOwnershipOverlap bool `yaml:\"exclude-binary-packages-with-file-ownership-overlap\" json:\"exclude-binary-packages-with-file-ownership-overlap\" mapstructure:\"exclude-binary-packages-with-file-ownership-overlap\"`\n}\n\nfunc DefaultRelationshipsConfig() RelationshipsConfig {\n\treturn RelationshipsConfig{\n\t\tPackageFileOwnership:                          true,\n\t\tPackageFileOwnershipOverlap:                   true,\n\t\tExcludeBinaryPackagesWithFileOwnershipOverlap: true,\n\t}\n}\n\nfunc (c RelationshipsConfig) WithPackageFileOwnership(ownership bool) RelationshipsConfig {\n\tc.PackageFileOwnership = ownership\n\treturn c\n}\n\nfunc (c RelationshipsConfig) WithPackageFileOwnershipOverlap(overlap bool) RelationshipsConfig {\n\tc.PackageFileOwnershipOverlap = overlap\n\treturn c\n}\n\nfunc (c RelationshipsConfig) WithExcludeBinaryPackagesWithFileOwnershipOverlap(exclude bool) RelationshipsConfig {\n\tc.ExcludeBinaryPackagesWithFileOwnershipOverlap = exclude\n\treturn c\n}\n"
  },
  {
    "path": "syft/cataloging/search.go",
    "content": "package cataloging\n\nimport \"github.com/anchore/syft/syft/source\"\n\ntype SearchConfig struct {\n\tScope source.Scope `yaml:\"scope\" json:\"scope\" mapstructure:\"scope\"`\n}\n\nfunc DefaultSearchConfig() SearchConfig {\n\treturn SearchConfig{\n\t\tScope: source.SquashedScope,\n\t}\n}\n\nfunc (c SearchConfig) WithScope(scope source.Scope) SearchConfig {\n\tc.Scope = scope\n\treturn c\n}\n"
  },
  {
    "path": "syft/cataloging/selection.go",
    "content": "package cataloging\n\nimport \"strings\"\n\ntype SelectionRequest struct {\n\tDefaultNamesOrTags []string `json:\"default,omitempty\"`\n\tSubSelectTags      []string `json:\"selection,omitempty\"`\n\tAddNames           []string `json:\"addition,omitempty\"`\n\tRemoveNamesOrTags  []string `json:\"removal,omitempty\"`\n}\n\nfunc NewSelectionRequest() SelectionRequest {\n\treturn SelectionRequest{}\n}\n\nfunc (s SelectionRequest) WithExpression(expressions ...string) SelectionRequest {\n\texpressions = cleanSelection(expressions)\n\tfor _, expr := range expressions {\n\t\tswitch {\n\t\tcase strings.HasPrefix(expr, \"+\"):\n\t\t\ts = s.WithAdditions(strings.TrimPrefix(expr, \"+\"))\n\t\tcase strings.HasPrefix(expr, \"-\"):\n\t\t\ts = s.WithRemovals(strings.TrimPrefix(expr, \"-\"))\n\t\tdefault:\n\t\t\ts = s.WithSubSelections(expr)\n\t\t}\n\t}\n\treturn s\n}\n\nfunc (s SelectionRequest) WithDefaults(nameOrTags ...string) SelectionRequest {\n\ts.DefaultNamesOrTags = append(s.DefaultNamesOrTags, nameOrTags...)\n\treturn s\n}\n\nfunc (s SelectionRequest) WithSubSelections(tags ...string) SelectionRequest {\n\ts.SubSelectTags = append(s.SubSelectTags, tags...)\n\treturn s\n}\n\nfunc (s SelectionRequest) WithAdditions(names ...string) SelectionRequest {\n\ts.AddNames = append(s.AddNames, names...)\n\treturn s\n}\n\nfunc (s SelectionRequest) WithRemovals(nameOrTags ...string) SelectionRequest {\n\ts.RemoveNamesOrTags = append(s.RemoveNamesOrTags, nameOrTags...)\n\treturn s\n}\n\nfunc (s SelectionRequest) IsEmpty() bool {\n\treturn len(s.AddNames) == 0 && len(s.RemoveNamesOrTags) == 0 && len(s.SubSelectTags) == 0 && len(s.DefaultNamesOrTags) == 0\n}\n\nfunc cleanSelection(tags []string) []string {\n\tvar cleaned []string\n\tfor _, tag := range tags {\n\t\tfor _, t := range strings.Split(tag, \",\") {\n\t\t\tt = strings.TrimSpace(t)\n\t\t\tif t == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcleaned = append(cleaned, t)\n\t\t}\n\t}\n\treturn cleaned\n}\n"
  },
  {
    "path": "syft/cataloging/unknowns.go",
    "content": "package cataloging\n\ntype UnknownsConfig struct {\n\tRemoveWhenPackagesDefined         bool\n\tIncludeExecutablesWithoutPackages bool\n\tIncludeUnexpandedArchives         bool\n}\n\nfunc DefaultUnknownsConfig() UnknownsConfig {\n\treturn UnknownsConfig{\n\t\tRemoveWhenPackagesDefined:         true,\n\t\tIncludeExecutablesWithoutPackages: true,\n\t\tIncludeUnexpandedArchives:         true,\n\t}\n}\n"
  },
  {
    "path": "syft/configuration_audit_trail.go",
    "content": "package syft\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n)\n\n// configurationAuditTrail is all input configuration was used to generate the SBOM\ntype configurationAuditTrail struct {\n\tSearch         cataloging.SearchConfig         `json:\"search\" yaml:\"search\" mapstructure:\"search\"`\n\tRelationships  cataloging.RelationshipsConfig  `json:\"relationships\" yaml:\"relationships\" mapstructure:\"relationships\"`\n\tDataGeneration cataloging.DataGenerationConfig `json:\"data-generation\" yaml:\"data-generation\" mapstructure:\"data-generation\"`\n\tPackages       pkgcataloging.Config            `json:\"packages\" yaml:\"packages\" mapstructure:\"packages\"`\n\tFiles          filecataloging.Config           `json:\"files\" yaml:\"files\" mapstructure:\"files\"`\n\tLicenses       cataloging.LicenseConfig        `json:\"licenses\" yaml:\"licenses\" mapstructure:\"licenses\"`\n\tCatalogers     catalogerManifest               `json:\"catalogers\" yaml:\"catalogers\" mapstructure:\"catalogers\"`\n\tExtraConfigs   any                             `json:\"extra,omitempty\" yaml:\"extra\" mapstructure:\"extra\"`\n}\n\ntype catalogerManifest struct {\n\tRequested cataloging.SelectionRequest `json:\"requested\" yaml:\"requested\" mapstructure:\"requested\"`\n\tUsed      []string                    `json:\"used\" yaml:\"used\" mapstructure:\"used\"`\n}\n\ntype marshalAPIConfiguration configurationAuditTrail\n\nfunc (cfg configurationAuditTrail) MarshalJSON() ([]byte, error) {\n\t// since the api configuration is placed into the SBOM in an empty interface, and we want a stable ordering of\n\t// keys (not guided by the struct ordering) we need to convert the struct to a map. This is best done with\n\t// simply marshalling and unmarshalling. Mapstructure is used to ensure we are honoring all json struct\n\t// tags. Once we have a map, we can lean on the stable ordering of json map keys in the stdlib. This is an\n\t// implementation detail that can be at least relied on until Go 2 (at which point it can change).\n\t// This dance allows us to guarantee ordering of keys in the configuration section of the SBOM.\n\n\tinitialJSON, err := json.Marshal(marshalAPIConfiguration(cfg))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar dataMap map[string]interface{}\n\tif err := json.Unmarshal(initialJSON, &dataMap); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif v, exists := dataMap[\"extra\"]; exists && v == nil {\n\t\t// remove the extra key if it renders as nil\n\t\tdelete(dataMap, \"extra\")\n\t}\n\n\treturn marshalSorted(dataMap)\n}\n\n// marshalSorted recursively marshals a map with sorted keys\nfunc marshalSorted(m interface{}) ([]byte, error) {\n\tif reflect.TypeOf(m).Kind() != reflect.Map {\n\t\treturn json.Marshal(m)\n\t}\n\n\tval := reflect.ValueOf(m)\n\tsortedMap := make(map[string]interface{})\n\n\tfor _, key := range val.MapKeys() {\n\t\tvalue := val.MapIndex(key).Interface()\n\n\t\tif value != nil && reflect.TypeOf(value).Kind() == reflect.Map {\n\t\t\tsortedValue, err := marshalSorted(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tsortedMap[key.String()] = json.RawMessage(sortedValue)\n\t\t} else {\n\t\t\tsortedMap[key.String()] = value\n\t\t}\n\t}\n\n\treturn json.Marshal(sortedMap)\n}\n"
  },
  {
    "path": "syft/configuration_audit_trail_test.go",
    "content": "package syft\n\nimport (\n\t\"bytes\"\n\t\"crypto\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/iancoleman/strcase\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_configurationAuditTrail_StructTags(t *testing.T) {\n\t// we need to ensure that the output for any configuration is well-formed and follows conventions.\n\t// We ensure that:\n\t// 1. all fields have a JSON tag\n\t// 2. the tag value follows lowercase kebab-case style\n\n\tjsonTags := getJSONTags(t, configurationAuditTrail{})\n\n\tfor _, tag := range jsonTags {\n\t\tassertLowercaseKebab(t, tag)\n\t}\n\n}\n\nfunc getJSONTags(t *testing.T, v interface{}) []string {\n\tvar tags []string\n\terr := collectJSONTags(t, reflect.ValueOf(v), &tags, \"\", \"\")\n\trequire.NoError(t, err)\n\treturn tags\n}\n\nfunc collectJSONTags(t *testing.T, v reflect.Value, tags *[]string, parentTag string, path string) error {\n\tvar errs error\n\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tif v.Kind() != reflect.Struct {\n\t\treturn errs\n\t}\n\n\ttType := v.Type()\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tfield := v.Field(i)\n\t\tfieldType := tType.Field(i)\n\n\t\tcurPath := path + \".\" + fieldType.Name\n\n\t\t// account for embeddings\n\t\tif fieldType.Anonymous {\n\t\t\tembeddedField := field\n\n\t\t\tif embeddedField.Kind() == reflect.Ptr {\n\t\t\t\t// this can be enhanced in the future if the need arises...\n\t\t\t\terrs = multierror.Append(errs, fmt.Errorf(\"field '%s' is a pointer to an embedded struct, this is not supported in the test helper\", curPath))\n\t\t\t}\n\n\t\t\tif embeddedField.Kind() == reflect.Struct {\n\t\t\t\terr := collectJSONTags(t, field, tags, parentTag, curPath)\n\t\t\t\tif err != nil {\n\t\t\t\t\terrs = multierror.Append(errs, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tvar tag string\n\t\tvar ok bool\n\t\tif fieldType.PkgPath == \"\" {\n\t\t\ttag, ok = fieldType.Tag.Lookup(\"json\")\n\t\t\tif !ok || (tag == \"\" && parentTag == \"\") {\n\t\t\t\terrs = multierror.Append(errs, fmt.Errorf(\"field '%s' does not have a json tag\", curPath))\n\t\t\t\treturn errs\n\t\t\t}\n\t\t\tif tag != \"\" && tag != \"-\" {\n\t\t\t\t*tags = append(*tags, tag)\n\t\t\t}\n\t\t}\n\n\t\tif field.Kind() == reflect.Struct || (field.Kind() == reflect.Ptr && field.Elem().Kind() == reflect.Struct) {\n\t\t\terr := collectJSONTags(t, field, tags, tag, curPath)\n\t\t\tif err != nil {\n\t\t\t\terrs = multierror.Append(errs, err)\n\t\t\t}\n\t\t}\n\t}\n\treturn errs\n}\n\nfunc assertLowercaseKebab(t *testing.T, tag string) {\n\tt.Helper()\n\trequire.NotEmpty(t, tag)\n\tassert.Equal(t, strcase.ToKebab(tag), tag)\n}\n\nfunc Test_collectJSONTags(t *testing.T) {\n\t// though this is not used in production, this is a sensitive and complex enough of a check to warrant testing the test helper.\n\ttype good struct {\n\t\tA string `json:\"a\"`\n\t}\n\n\ttype missing struct {\n\t\tA string `json:\"a\"`\n\t\tB string\n\t}\n\n\ttype exclude struct {\n\t\tA string `json:\"a\"`\n\t\tB string `json:\"-\"`\n\t}\n\n\ttype goodEmbedded struct {\n\t\tgood `json:\"\"`\n\t}\n\n\ttype badEmbedded struct {\n\t\tmissing `json:\"\"`\n\t}\n\n\t// simply not covered and require further development to support\n\ttype goodPtrEmbedded struct {\n\t\t*good `json:\"\"`\n\t}\n\n\t// simply not covered and require further development to support\n\ttype badPtrEmbedded struct {\n\t\t*missing `json:\"\"`\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tv       interface{}\n\t\twant    []string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"good\",\n\t\t\tv:    good{},\n\t\t\twant: []string{\n\t\t\t\t\"a\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"missing\",\n\t\t\tv:       missing{},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"exclude\",\n\t\t\tv:    exclude{},\n\t\t\twant: []string{\n\t\t\t\t\"a\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"bad embedded\",\n\t\t\tv:       badEmbedded{},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"good embedded\",\n\t\t\tv:    goodEmbedded{},\n\t\t\twant: []string{\n\t\t\t\t\"a\",\n\t\t\t},\n\t\t},\n\t\t// these cases are simply not covered and require further development to support\n\t\t{\n\t\t\tname:    \"bad ptr embedded\",\n\t\t\tv:       badPtrEmbedded{},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"good ptr embedded\",\n\t\t\tv:    goodPtrEmbedded{},\n\t\t\twant: []string{\n\t\t\t\t\"a\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tvar tags []string\n\n\t\t\terr := collectJSONTags(t, reflect.ValueOf(tt.v), &tags, \"\", \"\")\n\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.want, tags)\n\t\t})\n\t}\n\n}\n\nfunc Test_configurationAuditTrail_MarshalJSON(t *testing.T) {\n\n\ttests := []struct {\n\t\tname   string\n\t\tcfg    configurationAuditTrail\n\t\tassert func(t *testing.T, got []byte)\n\t}{\n\t\t{\n\t\t\tname: \"ensure other marshallers are called\",\n\t\t\tcfg: configurationAuditTrail{\n\n\t\t\t\tFiles: filecataloging.Config{\n\t\t\t\t\tSelection: file.FilesOwnedByPackageSelection,\n\t\t\t\t\tHashers: []crypto.Hash{\n\t\t\t\t\t\tcrypto.SHA256,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// the custom file marshaller swaps ints for strings for hashers\n\t\t\tassert: func(t *testing.T, got []byte) {\n\t\t\t\tassert.Contains(t, string(got), `\"hashers\":[\"sha-256\"]`)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ensure maps are sorted\",\n\t\t\tcfg:  configurationAuditTrail{},\n\t\t\tassert: func(t *testing.T, got []byte) {\n\t\t\t\tassert.NoError(t, assertJSONKeysSorted(got))\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\n\t\t\tgot, err := tt.cfg.MarshalJSON()\n\t\t\trequire.NoError(t, err)\n\t\t\tif tt.assert == nil {\n\t\t\t\tt.Fatal(\"assert function must be provided\")\n\t\t\t}\n\t\t\ttt.assert(t, got)\n\n\t\t})\n\t}\n}\n\n// assertJSONKeysSorted asserts that all keys in JSON maps are sorted.\nfunc assertJSONKeysSorted(jsonBytes []byte) error {\n\tvar errs error\n\tdecoder := json.NewDecoder(bytes.NewReader(jsonBytes))\n\tvar keys []string\n\tvar inObject bool\n\n\tfor {\n\t\ttoken, err := decoder.Token()\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\terrs = multierror.Append(errs, fmt.Errorf(\"error decoding JSON: %w\", err))\n\t\t}\n\n\t\tswitch v := token.(type) {\n\t\tcase json.Delim:\n\t\t\tswitch v {\n\t\t\tcase '{':\n\t\t\t\tinObject = true\n\t\t\t\tkeys = nil // Reset keys for a new object\n\t\t\tcase '}':\n\t\t\t\tinObject = false\n\t\t\t\tif !sort.StringsAreSorted(keys) {\n\t\t\t\t\terrs = multierror.Append(errs, fmt.Errorf(\"Keys are not sorted: %v\", keys))\n\t\t\t\t}\n\t\t\t}\n\t\tcase string:\n\t\t\tif inObject && v != \"\" {\n\t\t\t\tkeys = append(keys, v)\n\t\t\t}\n\t\t}\n\t}\n\treturn errs\n}\n\nfunc Test_assertJSONKeysSorted(t *testing.T) {\n\t// this test function is sufficiently complicated enough to warrant its own test...\n\n\tsorted := []byte(`{\"a\":1,\"b\":2}`)\n\tunsorted := []byte(`{\"b\":2,\"a\":1}`)\n\n\tnestedSorted := []byte(`{\"a\":1,\"b\":{\"a\":1,\"b\":2}}`)\n\tnestedUnsorted := []byte(`{\"a\":1,\"b\":{\"b\":2,\"a\":1}}`)\n\n\ttests := []struct {\n\t\tname    string\n\t\tjson    []byte\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"sorted\",\n\t\t\tjson:    sorted,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"unsorted\",\n\t\t\tjson:    unsorted,\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"nested sorted\",\n\t\t\tjson:    nestedSorted,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"nested unsorted\",\n\t\t\tjson:    nestedUnsorted,\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\terr := assertJSONKeysSorted(tt.json)\n\t\t\ttt.wantErr(t, err)\n\t\t})\n\n\t}\n}\n"
  },
  {
    "path": "syft/cpe/by_source_then_specificity.go",
    "content": "package cpe\n\nimport \"sort\"\n\ntype BySourceThenSpecificity []CPE\n\nfunc (b BySourceThenSpecificity) Len() int {\n\treturn len(b)\n}\n\nfunc (b BySourceThenSpecificity) Less(i, j int) bool {\n\tsourceOrder := map[Source]int{\n\t\tNVDDictionaryLookupSource: 1,\n\t\tDeclaredSource:            2,\n\t\tGeneratedSource:           3,\n\t}\n\n\tgetRank := func(source Source) int {\n\t\tif rank, exists := sourceOrder[source]; exists {\n\t\t\treturn rank\n\t\t}\n\t\treturn 4 // Sourced we don't know about can't be assigned special priority, so\n\t\t// are considered ties.\n\t}\n\tiSource := b[i].Source\n\tjSource := b[j].Source\n\trankI, rankJ := getRank(iSource), getRank(jSource)\n\tif rankI != rankJ {\n\t\treturn rankI < rankJ\n\t}\n\n\treturn isMoreSpecific(b[i].Attributes, b[j].Attributes)\n}\n\nfunc (b BySourceThenSpecificity) Swap(i, j int) {\n\tb[i], b[j] = b[j], b[i]\n}\n\nvar _ sort.Interface = (*BySourceThenSpecificity)(nil)\n"
  },
  {
    "path": "syft/cpe/by_source_then_specificity_test.go",
    "content": "package cpe\n\nimport (\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestBySourceThenSpecificity(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput []CPE\n\t\twant  []CPE\n\t}{\n\t\t{\n\t\t\tname: \"empty case\",\n\t\t},\n\t\t{\n\t\t\tname: \"nvd before generated\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"declared before generated\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t\tMust(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"most specific attributes of equal sources\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\", NVDDictionaryLookupSource),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"most specific attributes of unknown sources\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", \"\"),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\", \"some-other-unknown-source\"),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", \"some-unknown-source\"),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\", \"some-other-unknown-source\"),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", \"\"),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", \"some-unknown-source\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"lexical sorting on equal sources puts escaped characters later\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:pipeline\\\\\\\\:_supporting_apis:865.v43e78cc44e0d:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:pipeline_supporting_apis:865.v43e78cc44e0d:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:pipeline_supporting_apis:865.v43e78cc44e0d:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:pipeline\\\\\\\\:_supporting_apis:865.v43e78cc44e0d:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"lexical sorting on equal sources puts more specific attributes earlier\",\n\t\t\tinput: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:mailer:472.vf7c289a_4b_420:*:*:*:*:*:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:mailer:472.vf7c289a_4b_420:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t},\n\t\t\twant: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:mailer:472.vf7c289a_4b_420:*:*:*:*:jenkins:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t\tMust(\"cpe:2.3:a:jenkins:mailer:472.vf7c289a_4b_420:*:*:*:*:*:*:*\", \"nvd-cpe-dictionary\"),\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsort.Sort(BySourceThenSpecificity(tt.input))\n\t\t\tassert.Equal(t, tt.want, tt.input)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/cpe/by_specificity.go",
    "content": "package cpe\n\nimport (\n\t\"sort\"\n)\n\nvar _ sort.Interface = (*BySpecificity)(nil)\n\ntype BySpecificity []Attributes\n\nfunc (c BySpecificity) Len() int { return len(c) }\n\nfunc (c BySpecificity) Swap(i, j int) { c[i], c[j] = c[j], c[i] }\n\nfunc (c BySpecificity) Less(i, j int) bool {\n\treturn isMoreSpecific(c[i], c[j])\n}\n\n// Returns true if i is more specific than j, with some\n// tie breaking mechanisms to make sorting equally-specific cpe Attributes\n// deterministic.\nfunc isMoreSpecific(i, j Attributes) bool {\n\tiScore := weightedCountForSpecifiedFields(i)\n\tjScore := weightedCountForSpecifiedFields(j)\n\n\t// check weighted sort first\n\tif iScore != jScore {\n\t\treturn iScore > jScore\n\t}\n\n\t// sort longer fields to top\n\tif countFieldLength(i) != countFieldLength(j) {\n\t\treturn countFieldLength(i) > countFieldLength(j)\n\t}\n\n\t// if score and length are equal then text sort\n\t// note that we are not using String from the syft pkg\n\t// as we are not encoding/decoding this Attributes string so we don't\n\t// need the proper quoted version of the Attributes.\n\treturn i.BindToFmtString() < j.BindToFmtString()\n}\n\nfunc countFieldLength(cpe Attributes) int {\n\treturn len(cpe.Part + cpe.Vendor + cpe.Product + cpe.Version + cpe.TargetSW)\n}\n\nfunc weightedCountForSpecifiedFields(cpe Attributes) int {\n\tchecksForSpecifiedField := []func(cpe Attributes) (bool, int){\n\t\tfunc(cpe Attributes) (bool, int) { return cpe.Part != \"\", 2 },\n\t\tfunc(cpe Attributes) (bool, int) { return cpe.Vendor != \"\", 3 },\n\t\tfunc(cpe Attributes) (bool, int) { return cpe.Product != \"\", 4 },\n\t\tfunc(cpe Attributes) (bool, int) { return cpe.Version != \"\", 1 },\n\t\tfunc(cpe Attributes) (bool, int) { return cpe.TargetSW != \"\", 1 },\n\t}\n\n\tweightedCount := 0\n\tfor _, fieldIsSpecified := range checksForSpecifiedField {\n\t\tisSpecified, weight := fieldIsSpecified(cpe)\n\t\tif isSpecified {\n\t\t\tweightedCount += weight\n\t\t}\n\t}\n\n\treturn weightedCount\n}\n"
  },
  {
    "path": "syft/cpe/by_specificity_test.go",
    "content": "package cpe\n\nimport (\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_BySpecificity(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []Attributes\n\t\texpected []Attributes\n\t}{\n\t\t{\n\t\t\tname: \"sort strictly by wfn *\",\n\t\t\tinput: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:package:1:*:*:*:*:some:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\"),\n\t\t\t},\n\t\t\texpected: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:1:*:*:*:*:some:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:package:1:*:*:*:*:some:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sort strictly by field length\",\n\t\t\tinput: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:22:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:333:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:666666:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:4444:*:*\"),\n\t\t\t},\n\t\t\texpected: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:666666:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:4444:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:333:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:22:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:1:*:*\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sort by mix of field length and specificity\",\n\t\t\tinput: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:666666:*:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:1:1:*:*:*:*:4444:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:*:333:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:22:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*\"),\n\t\t\t},\n\t\t\texpected: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:22:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:1:1:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:666666:*:*:*:*:*:1:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:*:1:1:*:*:*:*:4444:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:1:*:333:*:*:*:*:*:*:*\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sort by mix of field length, specificity, dash\",\n\t\t\tinput: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine_keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine-keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine-keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine_keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t},\n\t\t\texpected: []Attributes{\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine-keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine-keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine_keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine_keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine:alpine-keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t\tMustAttributes(\"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsort.Sort(BySpecificity(test.input))\n\t\t\tassert.Equal(t, test.expected, test.input)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/cpe/cpe.go",
    "content": "package cpe\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/facebookincubator/nvdtools/wfn\"\n)\n\n// CPE contains the attributes of an NVD Attributes and a string\n// describing where Syft got the Attributes, e.g. generated by heuristics\n// vs looked up in the NVD Attributes dictionary\ntype CPE struct {\n\tAttributes Attributes\n\tSource     Source\n}\n\ntype Source string\n\nfunc (c Source) String() string {\n\treturn string(c)\n}\n\nconst (\n\tGeneratedSource           Source = \"syft-generated\"\n\tNVDDictionaryLookupSource Source = \"nvd-cpe-dictionary\"\n\tDeclaredSource            Source = \"declared\"\n)\n\nconst Any = \"\"\n\ntype Attributes struct {\n\tPart      string\n\tVendor    string\n\tProduct   string\n\tVersion   string\n\tUpdate    string\n\tEdition   string\n\tSWEdition string\n\tTargetSW  string\n\tTargetHW  string\n\tOther     string\n\tLanguage  string\n}\n\nfunc (c Attributes) asAttributes() wfn.Attributes {\n\treturn wfn.Attributes(c)\n}\n\nfunc fromAttributes(a wfn.Attributes) Attributes {\n\treturn Attributes(a)\n}\n\nfunc (c Attributes) BindToFmtString() string {\n\treturn c.asAttributes().BindToFmtString()\n}\n\nfunc NewWithAny() Attributes {\n\treturn fromAttributes(*(wfn.NewAttributesWithAny()))\n}\n\nconst (\n\tallowedCPEPunctuation = \"-!\\\"#$%&'()+,./:;<=>@[]^`{|}~\"\n)\n\n// This regex string is taken from\n// https://csrc.nist.gov/schema/cpe/2.3/cpe-naming_2.3.xsd which has the official cpe spec\n// This first part matches Attributes urls and the second part matches binding strings\nconst cpeRegexString = ((`^([c][pP][eE]:/[AHOaho]?(:[A-Za-z0-9\\._\\-~%]*){0,6})`) +\n\t// Or match the Attributes binding string\n\t// Note that we had to replace '`' with '\\x60' to escape the backticks\n\t`|(cpe:2\\.3:[aho\\*\\-](:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^\\x60\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\\*\\-]))(:(((\\?*|\\*?)([a-zA-Z0-9\\-\\._]|(\\\\[\\\\\\*\\?!\"#$$%&'\\(\\)\\+,/:;<=>@\\[\\]\\^\\x60\\{\\|}~]))+(\\?*|\\*?))|[\\*\\-])){4})$`)\n\nvar cpeRegex = regexp.MustCompile(cpeRegexString)\n\nfunc New(value string, source Source) (CPE, error) {\n\tattributes, err := NewAttributes(value)\n\tif err != nil {\n\t\treturn CPE{}, err\n\t}\n\treturn CPE{\n\t\tAttributes: attributes,\n\t\tSource:     source,\n\t}, nil\n}\n\n// NewAttributes will parse a formatted Attributes string and return a Attributes object. Some input, such as the existence of whitespace\n// characters is allowed, however, a more strict validation is done after this sanitization process.\nfunc NewAttributes(cpeStr string) (Attributes, error) {\n\t// get a Attributes object based on the given string --don't validate yet since it may be possible to escape select cases on the callers behalf\n\tc, err := newWithoutValidation(cpeStr)\n\tif err != nil {\n\t\treturn Attributes{}, fmt.Errorf(\"unable to parse Attributes string: %w\", err)\n\t}\n\n\t// ensure that this Attributes can be validated after being fully sanitized\n\tif err = ValidateString(c.String()); err != nil {\n\t\treturn Attributes{}, err\n\t}\n\n\t// we don't return the sanitized string, as this is a concern for later when creating Attributes strings. In fact, since\n\t// sanitization is lossy (whitespace is replaced, not escaped) it's important that the raw values are left as.\n\treturn c, nil\n}\n\n// Must returns a CPE or panics if the provided string is not valid\nfunc Must(cpeStr string, source Source) CPE {\n\tc := MustAttributes(cpeStr)\n\treturn CPE{\n\t\tAttributes: c,\n\t\tSource:     source,\n\t}\n}\n\nfunc MustAttributes(cpeStr string) Attributes {\n\tc, err := NewAttributes(cpeStr)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn c\n}\n\nfunc ValidateString(cpeStr string) error {\n\t// We should filter out all CPEs that do not match the official Attributes regex\n\t// The facebook nvdtools parser can sometimes incorrectly parse invalid Attributes strings\n\tif !cpeRegex.MatchString(cpeStr) {\n\t\treturn fmt.Errorf(\"failed to parse Attributes=%q as it doesn't match the regex=%s\", cpeStr, cpeRegexString)\n\t}\n\treturn nil\n}\n\nfunc newWithoutValidation(cpeStr string) (Attributes, error) {\n\tvalue, err := wfn.Parse(cpeStr)\n\tif err != nil {\n\t\treturn Attributes{}, fmt.Errorf(\"failed to parse Attributes=%q: %w\", cpeStr, err)\n\t}\n\n\tif value == nil {\n\t\treturn Attributes{}, fmt.Errorf(\"failed to parse Attributes=%q\", cpeStr)\n\t}\n\n\tsyftCPE := fromAttributes(*value)\n\n\t// we need to compare the raw data since we are constructing CPEs in other locations\n\tsyftCPE.Vendor = normalizeField(syftCPE.Vendor)\n\tsyftCPE.Product = normalizeField(syftCPE.Product)\n\tsyftCPE.Language = normalizeField(syftCPE.Language)\n\tsyftCPE.Version = normalizeField(syftCPE.Version)\n\tsyftCPE.TargetSW = normalizeField(syftCPE.TargetSW)\n\tsyftCPE.Part = normalizeField(syftCPE.Part)\n\tsyftCPE.Edition = normalizeField(syftCPE.Edition)\n\tsyftCPE.Other = normalizeField(syftCPE.Other)\n\tsyftCPE.SWEdition = normalizeField(syftCPE.SWEdition)\n\tsyftCPE.TargetHW = normalizeField(syftCPE.TargetHW)\n\tsyftCPE.Update = normalizeField(syftCPE.Update)\n\n\treturn syftCPE, nil\n}\n\nfunc normalizeField(field string) string {\n\t// replace spaces with underscores (per section 5.3.2 of the Attributes spec v 2.3)\n\tfield = strings.ReplaceAll(field, \" \", \"_\")\n\n\t// keep dashes and forward slashes unescaped\n\tif field == \"*\" {\n\t\treturn Any\n\t}\n\treturn stripSlashes(field)\n}\n\n// stripSlashes is a reverse of the sanitize function below.\n// It correctly removes slashes that are followed by allowed puncts.\n// This is to allow for a correct round trip parsing of cpes with quoted characters.\nfunc stripSlashes(s string) string {\n\tsb := strings.Builder{}\n\tfor i, c := range s {\n\t\tif c == '\\\\' && i+1 < len(s) && strings.ContainsRune(allowedCPEPunctuation, rune(s[i+1])) {\n\t\t\tcontinue\n\t\t}\n\t\tsb.WriteRune(c)\n\t}\n\treturn sb.String()\n}\n\nfunc (c Attributes) String() string {\n\toutput := Attributes{}\n\toutput.Vendor = sanitize(c.Vendor)\n\toutput.Product = sanitize(c.Product)\n\toutput.Language = sanitize(c.Language)\n\toutput.Version = sanitize(c.Version)\n\toutput.TargetSW = sanitize(c.TargetSW)\n\toutput.Part = sanitize(c.Part)\n\toutput.Edition = sanitize(c.Edition)\n\toutput.Other = sanitize(c.Other)\n\toutput.SWEdition = sanitize(c.SWEdition)\n\toutput.TargetHW = sanitize(c.TargetHW)\n\toutput.Update = sanitize(c.Update)\n\treturn output.BindToFmtString()\n}\n\n// sanitize is a modified version of WFNize function from nvdtools\n// that quotes all the allowed punctation chars with a slash and replaces\n// spaces with underscores. It differs from the upstream implmentation as\n// it does not use the buggy nvdtools implementation, specifically the \"addSlashesAt\" part of the\n// function which stops the loop as soon as it encounters \":\" a valid\n// character for a WFN attribute after quoting, but the way nvdtools\n// handles it causes it to truncate strings that container \":\". As a result\n// strings like \"prefix:1.2\" which would have been quoted as \"prefix\\:1.2\"\n// end up becoming \"prefix\" instead causing loss of information and\n// incorrect CPEs being generated.\nfunc sanitize(s string) string {\n\t// replace spaces with underscores\n\tin := strings.ReplaceAll(s, \" \", \"_\")\n\n\t// escape allowable punctuation per section 5.3.2 in the CPE 2.3 spec\n\tsb := strings.Builder{}\n\tfor _, c := range in {\n\t\tif strings.ContainsRune(allowedCPEPunctuation, c) {\n\t\t\tsb.WriteRune('\\\\')\n\t\t}\n\t\tsb.WriteRune(c)\n\t}\n\treturn sb.String()\n}\n"
  },
  {
    "path": "syft/cpe/cpe_test.go",
    "content": "package cpe\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_NewAttributes(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected Attributes\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:     \"gocase\",\n\t\t\tinput:    `cpe:/a:10web:form_maker:1.0.0::~~~wordpress~~`,\n\t\t\texpected: MustAttributes(`cpe:2.3:a:10web:form_maker:1.0.0:*:*:*:*:wordpress:*:*`),\n\t\t},\n\t\t{\n\t\t\tname:     \"dashes\",\n\t\t\tinput:    `cpe:/a:7-zip:7-zip:4.56:beta:~~~windows~~`,\n\t\t\texpected: MustAttributes(`cpe:2.3:a:7-zip:7-zip:4.56:beta:*:*:*:windows:*:*`),\n\t\t},\n\t\t{\n\t\t\tname:     \"URL escape characters\",\n\t\t\tinput:    `cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::~~~android~~`,\n\t\t\texpected: MustAttributes(`cpe:2.3:a:\\$0.99_kindle_books_project:\\$0.99_kindle_books:6:*:*:*:*:android:*:*`),\n\t\t},\n\t\t{\n\t\t\tname:    \"null byte in version for some reason\",\n\t\t\tinput:   \"cpe:2.3:a:oracle:openjdk:11.0.22+7\\u0000-J-ms8m:*:*:*:*:*:*:*\",\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual, err := NewAttributes(test.input)\n\t\t\tif test.wantErr != nil {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif d := cmp.Diff(actual, test.expected); d != \"\" {\n\t\t\t\tt.Errorf(\"Attributes mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc Test_normalizeCpeField(t *testing.T) {\n\n\ttests := []struct {\n\t\tfield    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tfield:    \"something\",\n\t\t\texpected: \"something\",\n\t\t},\n\t\t{\n\t\t\tfield:    \"some\\\\thing\",\n\t\t\texpected: `some\\thing`,\n\t\t},\n\t\t{\n\t\t\tfield:    \"*\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tfield:    \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.field, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, normalizeField(test.field))\n\t\t})\n\t}\n}\n\nfunc Test_CPEParser(t *testing.T) {\n\tvar testCases []struct {\n\t\tCPEString string     `json:\"cpe-string\"`\n\t\tCPEUrl    string     `json:\"cpe-url\"`\n\t\tWFN       Attributes `json:\"wfn\"`\n\t}\n\tout, err := os.ReadFile(\"testdata/cpe-data.json\")\n\trequire.NoError(t, err)\n\trequire.NoError(t, json.Unmarshal(out, &testCases))\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.CPEString, func(t *testing.T) {\n\t\t\tc1, err := NewAttributes(test.CPEString)\n\t\t\tassert.NoError(t, err)\n\t\t\tc2, err := NewAttributes(test.CPEUrl)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, c1, c2)\n\t\t\tassert.Equal(t, c1, test.WFN)\n\t\t\tassert.Equal(t, c2, test.WFN)\n\t\t\tassert.Equal(t, test.WFN.String(), test.CPEString)\n\t\t})\n\t}\n}\n\nfunc Test_InvalidCPE(t *testing.T) {\n\ttype testcase struct {\n\t\tname        string\n\t\tin          string\n\t\texpected    string\n\t\texpectedErr bool\n\t}\n\n\ttests := []testcase{\n\t\t{\n\t\t\t// 5.3.2: The underscore (x5f) MAY be used, and it SHOULD be used in place of whitespace characters (which SHALL NOT be used)\n\t\t\tname:     \"translates spaces\",\n\t\t\tin:       \"cpe:2.3:a:some-vendor:name:1 2:*:*:*:*:*:*:*\",\n\t\t\texpected: \"cpe:2.3:a:some-vendor:name:1_2:*:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\t// it isn't easily possible in the string formatted string to detect improper escaping of : (it will fail parsing)\n\t\t\tname:        \"unescaped ':' cannot be helped -- too many fields\",\n\t\t\tin:          \"cpe:2.3:a:some-vendor:name:::*:*:*:*:*:*:*\",\n\t\t\texpectedErr: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"too few fields\",\n\t\t\tin:       \"cpe:2.3:a:some-vendor:name:*:*:*:*:*:*:*\",\n\t\t\texpected: \"cpe:2.3:a:some-vendor:name:*:*:*:*:*:*:*:*\",\n\t\t},\n\t\t// Note: though the CPE spec does not allow for ? and * as escaped character input, these seem to be allowed in\n\t\t// the NVD CPE validator for this reason these edge cases were removed\n\t}\n\n\t// the wfn library does not account for escapes of . and -\n\texceptions := \".-\"\n\t// it isn't easily possible in the string formatted string to detect improper escaping of : (it will fail parsing)\n\tskip := \":\"\n\n\t// make escape exceptions for section 5.3.2 of the CPE spec (2.3)\n\tfor _, char := range allowedCPEPunctuation {\n\t\tif strings.Contains(skip, string(char)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tin := fmt.Sprintf(\"cpe:2.3:a:some-vendor:name:*:%s:*:*:*:*:*:*\", string(char))\n\t\texp := fmt.Sprintf(`cpe:2.3:a:some-vendor:name:*:\\%s:*:*:*:*:*:*`, string(char))\n\t\tif strings.Contains(exceptions, string(char)) {\n\t\t\texp = in\n\t\t}\n\n\t\ttests = append(tests, testcase{\n\t\t\tname:        fmt.Sprintf(\"allowes future escape of character (%s)\", string(char)),\n\t\t\tin:          in,\n\t\t\texpected:    exp,\n\t\t\texpectedErr: false,\n\t\t})\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc, err := NewAttributes(test.in)\n\t\t\tif test.expectedErr {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tif t.Failed() {\n\t\t\t\t\tt.Logf(\"got Attributes: %q details: %+v\", c, c)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, test.expected, c.String())\n\t\t})\n\t}\n}\n\nfunc Test_RoundTrip(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tcpe       string\n\t\tparsedCPE Attributes\n\t}{\n\t\t{\n\t\t\tname: \"normal\",\n\t\t\tcpe:  \"cpe:2.3:a:some-vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\tparsedCPE: Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"some-vendor\",\n\t\t\t\tProduct: \"name\",\n\t\t\t\tVersion: \"3.2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"escaped colon\",\n\t\t\tcpe:  \"cpe:2.3:a:some-vendor:name:1\\\\:3.2:*:*:*:*:*:*:*\",\n\t\t\tparsedCPE: Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"some-vendor\",\n\t\t\t\tProduct: \"name\",\n\t\t\t\tVersion: \"1:3.2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"escaped forward slash\",\n\t\t\tcpe:  \"cpe:2.3:a:test\\\\/some-vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\tparsedCPE: Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"test/some-vendor\",\n\t\t\t\tProduct: \"name\",\n\t\t\t\tVersion: \"3.2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// Attributes string must be preserved through a round trip\n\t\t\tassert.Equal(t, test.cpe, MustAttributes(test.cpe).String())\n\t\t\t// The parsed Attributes must be the same after a round trip\n\t\t\tassert.Equal(t, MustAttributes(test.cpe), MustAttributes(MustAttributes(test.cpe).String()))\n\t\t\t// The test case parsed Attributes must be the same after parsing the input string\n\t\t\tassert.Equal(t, test.parsedCPE, MustAttributes(test.cpe))\n\t\t\t// The test case parsed Attributes must produce the same string as the input cpe\n\t\t\tassert.Equal(t, test.parsedCPE.String(), test.cpe)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/cpe/merge_cpes.go",
    "content": "package cpe\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n)\n\n// Merge returns unique SourcedCPEs that are found in A or B\n// Two SourcedCPEs are identical if their source and normalized string are identical\nfunc Merge(a, b []CPE) []CPE {\n\tvar result []CPE\n\tdedupe := make(map[string]CPE)\n\tkey := func(scpe CPE) string {\n\t\treturn fmt.Sprintf(\"%s:%s\", scpe.Source.String(), scpe.Attributes.BindToFmtString())\n\t}\n\tfor _, s := range a {\n\t\tdedupe[key(s)] = s\n\t}\n\tfor _, s := range b {\n\t\tdedupe[key(s)] = s\n\t}\n\tfor _, val := range dedupe {\n\t\tresult = append(result, val)\n\t}\n\tsort.Sort(BySourceThenSpecificity(result))\n\treturn result\n}\n"
  },
  {
    "path": "syft/cpe/merge_cpes_test.go",
    "content": "package cpe\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_Merge(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    [][]CPE\n\t\texpected []CPE\n\t}{\n\t\t{\n\t\t\tname: \"merge, removing duplicates and ordered\",\n\t\t\tinput: [][]CPE{\n\t\t\t\t{\n\t\t\t\t\tMust(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\t\tMust(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []CPE{\n\t\t\t\tMust(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\", NVDDictionaryLookupSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t\tMust(\"cpe:2.3:a:*:package:1:*:*:*:*:*:*:*\", DeclaredSource),\n\t\t\t\tMust(\"cpe:2.3:a:some:package:*:*:*:*:*:*:*:*\", GeneratedSource),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tout := Merge(test.input[0], test.input[1])\n\t\t\tassert.Equal(t, test.expected, out)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/cpe/testdata/cpe-data.json",
    "content": "[\n  {\n    \"cpe-string\": \"cpe:2.3:h:supermicro:x9drff-7\\\\/i\\\\(t\\\\)g\\\\+:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:supermicro:x9drff-7%2fi%28t%29g%2b:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"supermicro\",\n      \"Product\": \"x9drff-7/i(t)g+\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:thimpress:learnpress:3.0.0:closebeta.2:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:thimpress:learnpress:3.0.0:closebeta.2:~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"thimpress\",\n      \"Product\": \"learnpress\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"closebeta.2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fortinet:fortisiem:3.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fortinet:fortisiem:3.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortisiem\",\n      \"Version\": \"3.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:uglifyjs_project:uglifyjs:2.8.12:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:uglifyjs_project:uglifyjs:2.8.12::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"uglifyjs_project\",\n      \"Product\": \"uglifyjs\",\n      \"Version\": \"2.8.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:drogon:drogon:1.0.0:beta10:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:drogon:drogon:1.0.0:beta10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"drogon\",\n      \"Product\": \"drogon\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"beta10\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gtranslate:gtranslate:1.0.4:*:*:*:enterprise:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:gtranslate:gtranslate:1.0.4::~~enterprise~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gtranslate\",\n      \"Product\": \"gtranslate\",\n      \"Version\": \"1.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:abb:800xa_system:5.1:feature_pack_4_revision_d:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:abb:800xa_system:5.1:feature_pack_4_revision_d\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"abb\",\n      \"Product\": \"800xa_system\",\n      \"Version\": \"5.1\",\n      \"Update\": \"feature_pack_4_revision_d\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:totvs:fluig_mobile:1.17.13:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:totvs:fluig_mobile:1.17.13::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"totvs\",\n      \"Product\": \"fluig_mobile\",\n      \"Version\": \"1.17.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:diesel:diesel:1.4.2:*:*:*:*:rust:*:*\",\n    \"cpe-url\": \"cpe:/a:diesel:diesel:1.4.2::~~~rust~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"diesel\",\n      \"Product\": \"diesel\",\n      \"Version\": \"1.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"rust\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:mitsubishielectric:r16mtcpu_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:mitsubishielectric:r16mtcpu_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"mitsubishielectric\",\n      \"Product\": \"r16mtcpu_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:communigate:communigate_pro:5.4.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:communigate:communigate_pro:5.4.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"communigate\",\n      \"Product\": \"communigate_pro\",\n      \"Version\": \"5.4.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:smartertools:smartermail:7.0.3845:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:smartertools:smartermail:7.0.3845\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"smartertools\",\n      \"Product\": \"smartermail\",\n      \"Version\": \"7.0.3845\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bluetrace:opentrace:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bluetrace:opentrace:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bluetrace\",\n      \"Product\": \"opentrace\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:crocoblock:jetwidgets_for_elementor:1.0.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:crocoblock:jetwidgets_for_elementor:1.0.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"crocoblock\",\n      \"Product\": \"jetwidgets_for_elementor\",\n      \"Version\": \"1.0.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:on_demand_services_sdk:0.14.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:on_demand_services_sdk:0.14.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"on_demand_services_sdk\",\n      \"Version\": \"0.14.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:horde:wicked:2.0.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:horde:wicked:2.0.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"horde\",\n      \"Product\": \"wicked\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kopano:groupware_core:8.7.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kopano:groupware_core:8.7.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kopano\",\n      \"Product\": \"groupware_core\",\n      \"Version\": \"8.7.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nasm:netwide_assembler:2.14.0:rc14:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nasm:netwide_assembler:2.14.0:rc14\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nasm\",\n      \"Product\": \"netwide_assembler\",\n      \"Version\": \"2.14.0\",\n      \"Update\": \"rc14\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:components_for_wp_bakery_page_builder_project:components_for_wp_bakery_page_builder:4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:components_for_wp_bakery_page_builder_project:components_for_wp_bakery_page_builder:4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"components_for_wp_bakery_page_builder_project\",\n      \"Product\": \"components_for_wp_bakery_page_builder\",\n      \"Version\": \"4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dollar_bank:dollar_bank_mobile:2.4.2:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:dollar_bank:dollar_bank_mobile:2.4.2::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dollar_bank\",\n      \"Product\": \"dollar_bank_mobile\",\n      \"Version\": \"2.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adm-zip_project:adm-zip:0.1.4:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:adm-zip_project:adm-zip:0.1.4::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adm-zip_project\",\n      \"Product\": \"adm-zip\",\n      \"Version\": \"0.1.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vega_project:vega:5.0.0:rc3:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:vega_project:vega:5.0.0:rc3:~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vega_project\",\n      \"Product\": \"vega\",\n      \"Version\": \"5.0.0\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:citrix:gateway:12.1-62.25:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:citrix:gateway:12.1-62.25\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"citrix\",\n      \"Product\": \"gateway\",\n      \"Version\": \"12.1-62.25\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nystudio107:seomatic:3.1.38:*:*:*:*:craft_cms:*:*\",\n    \"cpe-url\": \"cpe:/a:nystudio107:seomatic:3.1.38::~~~craft_cms~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nystudio107\",\n      \"Product\": \"seomatic\",\n      \"Version\": \"3.1.38\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"craft_cms\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:lucene:2.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:lucene:2.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"lucene\",\n      \"Version\": \"2.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spinnaker:orca:1.307.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:spinnaker:orca:1.307.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spinnaker\",\n      \"Product\": \"orca\",\n      \"Version\": \"1.307.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:apple:iphone:1.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:apple:iphone:1.0.1\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"iphone\",\n      \"Version\": \"1.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:scapy:scapy:0.9.17.33:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:scapy:scapy:0.9.17.33\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"scapy\",\n      \"Product\": \"scapy\",\n      \"Version\": \"0.9.17.33\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:metabox:meta_box:3.1.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:metabox:meta_box:3.1.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"metabox\",\n      \"Product\": \"meta_box\",\n      \"Version\": \"3.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:segue_project:segue:2.2.8.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:segue_project:segue:2.2.8.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"segue_project\",\n      \"Product\": \"segue\",\n      \"Version\": \"2.2.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:idreamsoft:icms:7.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:idreamsoft:icms:7.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"idreamsoft\",\n      \"Product\": \"icms\",\n      \"Version\": \"7.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spreecommerce:spree:0.30.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:spreecommerce:spree:0.30.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spreecommerce\",\n      \"Product\": \"spree\",\n      \"Version\": \"0.30.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ruby-lang:ruby:1.8.7:p357:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ruby-lang:ruby:1.8.7:p357\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ruby-lang\",\n      \"Product\": \"ruby\",\n      \"Version\": \"1.8.7\",\n      \"Update\": \"p357\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:lucene:3.6.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:lucene:3.6.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"lucene\",\n      \"Version\": \"3.6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:socket.io-file_project:socket.io-file:1.0.41:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:socket.io-file_project:socket.io-file:1.0.41::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"socket.io-file_project\",\n      \"Product\": \"socket.io-file\",\n      \"Version\": \"1.0.41\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mintty_project:mintty:2.2.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mintty_project:mintty:2.2.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mintty_project\",\n      \"Product\": \"mintty\",\n      \"Version\": \"2.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:netgear:gs110tp:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:netgear:gs110tp:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"gs110tp\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rsvpmaker_project:rsvpmaker:4.5.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:rsvpmaker_project:rsvpmaker:4.5.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rsvpmaker_project\",\n      \"Product\": \"rsvpmaker\",\n      \"Version\": \"4.5.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:security_qradar_analyst_workflow:1.18.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:security_qradar_analyst_workflow:1.18.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"security_qradar_analyst_workflow\",\n      \"Version\": \"1.18.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:docker:docker:2.1.0.2:*:*:*:community:*:*:*\",\n    \"cpe-url\": \"cpe:/a:docker:docker:2.1.0.2::~~community~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"docker\",\n      \"Product\": \"docker\",\n      \"Version\": \"2.1.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"community\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudfoundry:cf-deployment:4.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudfoundry:cf-deployment:4.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudfoundry\",\n      \"Product\": \"cf-deployment\",\n      \"Version\": \"4.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:procurve_switch:jg247a:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:procurve_switch:jg247a\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"procurve_switch\",\n      \"Version\": \"jg247a\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:microsoft:ms-dos:4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:microsoft:ms-dos:4.0\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"ms-dos\",\n      \"Version\": \"4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:horde:horde_translation:1.0.0:alpha1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:horde:horde_translation:1.0.0:alpha1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"horde\",\n      \"Product\": \"horde_translation\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"alpha1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:saltos:saltos:3.7:8870:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:saltos:saltos:3.7:8870\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"saltos\",\n      \"Product\": \"saltos\",\n      \"Version\": \"3.7\",\n      \"Update\": \"8870\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:mikrotik:routeros:6.43.7:*:*:*:-:*:*:*\",\n    \"cpe-url\": \"cpe:/o:mikrotik:routeros:6.43.7::~~-~~~\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"mikrotik\",\n      \"Product\": \"routeros\",\n      \"Version\": \"6.43.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.3.364:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.3.364\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.3.364\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:telegram:telegram_desktop:0.8.46:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:telegram:telegram_desktop:0.8.46\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"telegram\",\n      \"Product\": \"telegram_desktop\",\n      \"Version\": \"0.8.46\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hiawatha-webserver:hiawatha:5.8.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hiawatha-webserver:hiawatha:5.8.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hiawatha-webserver\",\n      \"Product\": \"hiawatha\",\n      \"Version\": \"5.8.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cpe17:autorun_killer:1.8.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cpe17:autorun_killer:1.8.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cpe17\",\n      \"Product\": \"autorun_killer\",\n      \"Version\": \"1.8.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:tri-band_wireless-ac_17265:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:tri-band_wireless-ac_17265:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"tri-band_wireless-ac_17265\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:goodiware:goodreader:2.5:-:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:goodiware:goodreader:2.5:-:~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"goodiware\",\n      \"Product\": \"goodreader\",\n      \"Version\": \"2.5\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:brainstormforce:astra:1.7.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:brainstormforce:astra:1.7.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"brainstormforce\",\n      \"Product\": \"astra\",\n      \"Version\": \"1.7.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pyrocms:pyrocms:3.4.14:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pyrocms:pyrocms:3.4.14\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pyrocms\",\n      \"Product\": \"pyrocms\",\n      \"Version\": \"3.4.14\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:iij:seil_b1_firmware:4.61:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:iij:seil_b1_firmware:4.61\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"iij\",\n      \"Product\": \"seil_b1_firmware\",\n      \"Version\": \"4.61\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:imagemagick:imagemagick:6.7.3-5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:imagemagick:imagemagick:6.7.3-5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"imagemagick\",\n      \"Product\": \"imagemagick\",\n      \"Version\": \"6.7.3-5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:doctrine-project:object_relational_mapper:2.5.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:doctrine-project:object_relational_mapper:2.5.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"doctrine-project\",\n      \"Product\": \"object_relational_mapper\",\n      \"Version\": \"2.5.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:typo3:typo3:6.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:typo3:typo3:6.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"typo3\",\n      \"Product\": \"typo3\",\n      \"Version\": \"6.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:libgee:0.8.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:libgee:0.8.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"libgee\",\n      \"Version\": \"0.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:horde:internet_mail_program:6.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:horde:internet_mail_program:6.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"horde\",\n      \"Product\": \"internet_mail_program\",\n      \"Version\": \"6.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:arubanetworks:aruba_instant:6.4.4.8-4.2.4.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:arubanetworks:aruba_instant:6.4.4.8-4.2.4.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"arubanetworks\",\n      \"Product\": \"aruba_instant\",\n      \"Version\": \"6.4.4.8-4.2.4.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:racket-lang:racket:6.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:racket-lang:racket:6.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"racket-lang\",\n      \"Product\": \"racket\",\n      \"Version\": \"6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nlnetlabs:name_server_daemon:4.1.16:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nlnetlabs:name_server_daemon:4.1.16:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nlnetlabs\",\n      \"Product\": \"name_server_daemon\",\n      \"Version\": \"4.1.16\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:scilab:scilab:5.1.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:scilab:scilab:5.1.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"scilab\",\n      \"Product\": \"scilab\",\n      \"Version\": \"5.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:ibm:mcs-7815i-2.0:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:ibm:mcs-7815i-2.0:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"mcs-7815i-2.0\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:plainware:locatoraid:3.2.4:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:plainware:locatoraid:3.2.4::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"plainware\",\n      \"Product\": \"locatoraid\",\n      \"Version\": \"3.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:httplib2_project:httplib2:0.10.1:*:*:*:*:python:*:*\",\n    \"cpe-url\": \"cpe:/a:httplib2_project:httplib2:0.10.1::~~~python~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"httplib2_project\",\n      \"Product\": \"httplib2\",\n      \"Version\": \"0.10.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"python\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:virtuemart:virtuemart:3.0.0:*:*:*:*:joomla\\\\!:*:*\",\n    \"cpe-url\": \"cpe:/a:virtuemart:virtuemart:3.0.0::~~~joomla%21~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"virtuemart\",\n      \"Product\": \"virtuemart\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"joomla!\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:microsoft:.net_core:5.0:preview2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:microsoft:.net_core:5.0:preview2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \".net_core\",\n      \"Version\": \"5.0\",\n      \"Update\": \"preview2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:jira:6.0.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:jira:6.0.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"jira\",\n      \"Version\": \"6.0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxcontainers:lxc:1.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxcontainers:lxc:1.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxcontainers\",\n      \"Product\": \"lxc\",\n      \"Version\": \"1.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pear:html_ajax:0.3.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pear:html_ajax:0.3.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pear\",\n      \"Product\": \"html_ajax\",\n      \"Version\": \"0.3.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:evo:evolution_cms:1.4.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:evo:evolution_cms:1.4.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"evo\",\n      \"Product\": \"evolution_cms\",\n      \"Version\": \"1.4.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:abb:cp676-web_firmware:1.76:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:abb:cp676-web_firmware:1.76\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"abb\",\n      \"Product\": \"cp676-web_firmware\",\n      \"Version\": \"1.76\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:fortinet:fortios:4.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:fortinet:fortios:4.0.4\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortios\",\n      \"Version\": \"4.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openwhyd:openwhyd:1.26.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openwhyd:openwhyd:1.26.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openwhyd\",\n      \"Product\": \"openwhyd\",\n      \"Version\": \"1.26.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:axis:mpeg-2_video_server:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:axis:mpeg-2_video_server:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"axis\",\n      \"Product\": \"mpeg-2_video_server\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:d845bg_motherboard:p02-0015:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:d845bg_motherboard:p02-0015\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"d845bg_motherboard\",\n      \"Version\": \"p02-0015\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redis:redis:2.8.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redis:redis:2.8.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redis\",\n      \"Product\": \"redis\",\n      \"Version\": \"2.8.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:db2:9.7.0.3:*:*:*:express:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:db2:9.7.0.3::~~express~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"db2\",\n      \"Version\": \"9.7.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"express\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ninjaforms:ninja_forms:3.0.21:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ninjaforms:ninja_forms:3.0.21::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ninjaforms\",\n      \"Product\": \"ninja_forms\",\n      \"Version\": \"3.0.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim_project:vim:0.15.4:*:*:*:*:visual_studio_code:*:*\",\n    \"cpe-url\": \"cpe:/a:vim_project:vim:0.15.4::~~~visual_studio_code~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim_project\",\n      \"Product\": \"vim\",\n      \"Version\": \"0.15.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"visual_studio_code\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jekyllrb:jekyll:1.4.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jekyllrb:jekyll:1.4.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jekyllrb\",\n      \"Product\": \"jekyll\",\n      \"Version\": \"1.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:eclipse:keti:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:eclipse:keti:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"eclipse\",\n      \"Product\": \"keti\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:softvelum:nimble_streamer:3.4.0-4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:softvelum:nimble_streamer:3.4.0-4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"softvelum\",\n      \"Product\": \"nimble_streamer\",\n      \"Version\": \"3.4.0-4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:netgear:r7850:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:netgear:r7850:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"r7850\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:proftpd:proftpd:1.2.2:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:proftpd:proftpd:1.2.2:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"proftpd\",\n      \"Product\": \"proftpd\",\n      \"Version\": \"1.2.2\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rocomotion:pplog:2.32:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rocomotion:pplog:2.32\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rocomotion\",\n      \"Product\": \"pplog\",\n      \"Version\": \"2.32\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sysstat_project:sysstat:9.1.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sysstat_project:sysstat:9.1.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sysstat_project\",\n      \"Product\": \"sysstat\",\n      \"Version\": \"9.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:beaker:0.8.0-11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:beaker:0.8.0-11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"beaker\",\n      \"Version\": \"0.8.0-11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:percona:percona_server:5.6.44-85.0-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:percona:percona_server:5.6.44-85.0-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"percona\",\n      \"Product\": \"percona_server\",\n      \"Version\": \"5.6.44-85.0-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:omniauth:omniauth:1.1.3:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:omniauth:omniauth:1.1.3::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"omniauth\",\n      \"Product\": \"omniauth\",\n      \"Version\": \"1.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:videojs:video.js:6.1.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:videojs:video.js:6.1.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"videojs\",\n      \"Product\": \"video.js\",\n      \"Version\": \"6.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:httpie:httpie:0.1.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:httpie:httpie:0.1.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"httpie\",\n      \"Product\": \"httpie\",\n      \"Version\": \"0.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fortinet:fortimanager:5.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fortinet:fortimanager:5.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortimanager\",\n      \"Version\": \"5.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:check_mk_project:check_mk:1.4.0:p25:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:check_mk_project:check_mk:1.4.0:p25\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"check_mk_project\",\n      \"Product\": \"check_mk\",\n      \"Version\": \"1.4.0\",\n      \"Update\": \"p25\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wp-livechat:live_chat_support:2.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wp-livechat:live_chat_support:2.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wp-livechat\",\n      \"Product\": \"live_chat_support\",\n      \"Version\": \"2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:signal:signal:2.25.0.10:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:signal:signal:2.25.0.10::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"signal\",\n      \"Product\": \"signal\",\n      \"Version\": \"2.25.0.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:telerik:ui_for_asp.net_core:2018.2.620:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:telerik:ui_for_asp.net_core:2018.2.620\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"telerik\",\n      \"Product\": \"ui_for_asp.net_core\",\n      \"Version\": \"2018.2.620\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kde:paste_applet:4.6.90:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kde:paste_applet:4.6.90\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kde\",\n      \"Product\": \"paste_applet\",\n      \"Version\": \"4.6.90\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:5.0.382.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:5.0.382.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"5.0.382.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:fronius:primo_5.0-1_firmware:3.14.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:fronius:primo_5.0-1_firmware:3.14.1\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"fronius\",\n      \"Product\": \"primo_5.0-1_firmware\",\n      \"Version\": \"3.14.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:videolan:vlc_media_player:2.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:videolan:vlc_media_player:2.0.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"videolan\",\n      \"Product\": \"vlc_media_player\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:woocommerce:woocommerce:3.5.7:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:woocommerce:woocommerce:3.5.7::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"woocommerce\",\n      \"Product\": \"woocommerce\",\n      \"Version\": \"3.5.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:yajl-ruby_project:yajl-ruby:1.2.3:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:yajl-ruby_project:yajl-ruby:1.2.3::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"yajl-ruby_project\",\n      \"Product\": \"yajl-ruby\",\n      \"Version\": \"1.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gitlab:gitlab:8.2.4:*:*:*:community:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gitlab:gitlab:8.2.4::~~community~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gitlab\",\n      \"Product\": \"gitlab\",\n      \"Version\": \"8.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"community\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:b3log:symphony:3.4.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:b3log:symphony:3.4.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"b3log\",\n      \"Product\": \"symphony\",\n      \"Version\": \"3.4.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gajim:gajim:1.3.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gajim:gajim:1.3.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gajim\",\n      \"Product\": \"gajim\",\n      \"Version\": \"1.3.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rope_project:rope:0.15.0:*:*:*:*:python:*:*\",\n    \"cpe-url\": \"cpe:/a:rope_project:rope:0.15.0::~~~python~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rope_project\",\n      \"Product\": \"rope\",\n      \"Version\": \"0.15.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"python\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:microsoft:sql_srv:7.0:sp3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:microsoft:sql_srv:7.0:sp3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"sql_srv\",\n      \"Version\": \"7.0\",\n      \"Update\": \"sp3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openconext:openconext_engineblock:1.17.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openconext:openconext_engineblock:1.17.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openconext\",\n      \"Product\": \"openconext_engineblock\",\n      \"Version\": \"1.17.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nmap:nmap:7.30:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nmap:nmap:7.30\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nmap\",\n      \"Product\": \"nmap\",\n      \"Version\": \"7.30\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:openmeetings:3.3.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:openmeetings:3.3.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"openmeetings\",\n      \"Version\": \"3.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:owasp_dependency-track:3.1.0:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:owasp_dependency-track:3.1.0::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"owasp_dependency-track\",\n      \"Version\": \"3.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpsymposiumpro:wp_symposium:13.08.01:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpsymposiumpro:wp_symposium:13.08.01::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpsymposiumpro\",\n      \"Product\": \"wp_symposium\",\n      \"Version\": \"13.08.01\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:4.0.249.51:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:4.0.249.51\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"4.0.249.51\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:feehi:feehi_cms:2.1.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:feehi:feehi_cms:2.1.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"feehi\",\n      \"Product\": \"feehi_cms\",\n      \"Version\": \"2.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:altiris:network_discovery_language_pack:6.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:altiris:network_discovery_language_pack:6.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"altiris\",\n      \"Product\": \"network_discovery_language_pack\",\n      \"Version\": \"6.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:python:3.9.0:alpha6:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:python:3.9.0:alpha6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"python\",\n      \"Version\": \"3.9.0\",\n      \"Update\": \"alpha6\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:app_engine_python_sdk:1.9.71:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:app_engine_python_sdk:1.9.71\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"app_engine_python_sdk\",\n      \"Version\": \"1.9.71\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:web_security_appliance:7.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:web_security_appliance:7.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"web_security_appliance\",\n      \"Version\": \"7.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:html-pdf_project:html-pdf:-:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:html-pdf_project:html-pdf:-::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"html-pdf_project\",\n      \"Product\": \"html-pdf\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:htmlsanitizer_project:htmlsanitizer:3.3.125:beta:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:htmlsanitizer_project:htmlsanitizer:3.3.125:beta\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"htmlsanitizer_project\",\n      \"Product\": \"htmlsanitizer\",\n      \"Version\": \"3.3.125\",\n      \"Update\": \"beta\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:neliosoftware:nelio_ab_testing:4.4.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:neliosoftware:nelio_ab_testing:4.4.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"neliosoftware\",\n      \"Product\": \"nelio_ab_testing\",\n      \"Version\": \"4.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:jbpm:7.12.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:jbpm:7.12.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"jbpm\",\n      \"Version\": \"7.12.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:businessobjects_business_intelligence:4.1:support_package1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:businessobjects_business_intelligence:4.1:support_package1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"businessobjects_business_intelligence\",\n      \"Version\": \"4.1\",\n      \"Update\": \"support_package1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:cordova:5.2.2:*:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:cordova:5.2.2::~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"cordova\",\n      \"Version\": \"5.2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:nx-os:12.0\\\\(1q\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:nx-os:12.0%281q%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"nx-os\",\n      \"Version\": \"12.0(1q)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:solarwinds:serv-u:15.2.2:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:solarwinds:serv-u:15.2.2:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"solarwinds\",\n      \"Product\": \"serv-u\",\n      \"Version\": \"15.2.2\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpdeveloper:essential_addons_for_elementor:2.8.7:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpdeveloper:essential_addons_for_elementor:2.8.7::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpdeveloper\",\n      \"Product\": \"essential_addons_for_elementor\",\n      \"Version\": \"2.8.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:sourcetree:1.0.7:*:*:*:*:macos:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:sourcetree:1.0.7::~~~macos~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"sourcetree\",\n      \"Version\": \"1.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"macos\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:infinispan:infinispan-server-runtime:11.0.0:alpha1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:infinispan:infinispan-server-runtime:11.0.0:alpha1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"infinispan\",\n      \"Product\": \"infinispan-server-runtime\",\n      \"Version\": \"11.0.0\",\n      \"Update\": \"alpha1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.3.485:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.3.485\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.3.485\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bytecodealliance:cranelift-codegen:0.17.0:alpha:*:*:*:rust:*:*\",\n    \"cpe-url\": \"cpe:/a:bytecodealliance:cranelift-codegen:0.17.0:alpha:~~~rust~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bytecodealliance\",\n      \"Product\": \"cranelift-codegen\",\n      \"Version\": \"0.17.0\",\n      \"Update\": \"alpha\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"rust\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zeit:next.js:9.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zeit:next.js:9.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zeit\",\n      \"Product\": \"next.js\",\n      \"Version\": \"9.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ansible-vault_project:ansible-vault:1.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ansible-vault_project:ansible-vault:1.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ansible-vault_project\",\n      \"Product\": \"ansible-vault\",\n      \"Version\": \"1.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:sg300-28p_firmware:1.4.8.06:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:sg300-28p_firmware:1.4.8.06\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"sg300-28p_firmware\",\n      \"Version\": \"1.4.8.06\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:digium:asterisk:1.4.40:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:digium:asterisk:1.4.40:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"digium\",\n      \"Product\": \"asterisk\",\n      \"Version\": \"1.4.40\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:idrive:remotepc:7.6.26:*:*:*:*:macos:*:*\",\n    \"cpe-url\": \"cpe:/a:idrive:remotepc:7.6.26::~~~macos~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"idrive\",\n      \"Product\": \"remotepc\",\n      \"Version\": \"7.6.26\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"macos\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oracle:ireceivables:12.2.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oracle:ireceivables:12.2.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oracle\",\n      \"Product\": \"ireceivables\",\n      \"Version\": \"12.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloud_foundry:bits_service:2.25.0:dev7:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloud_foundry:bits_service:2.25.0:dev7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloud_foundry\",\n      \"Product\": \"bits_service\",\n      \"Version\": \"2.25.0\",\n      \"Update\": \"dev7\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zeromq:zeromq:0.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zeromq:zeromq:0.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zeromq\",\n      \"Product\": \"zeromq\",\n      \"Version\": \"0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mobyproject:moby:0.1.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mobyproject:moby:0.1.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mobyproject\",\n      \"Product\": \"moby\",\n      \"Version\": \"0.1.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:jira:3.7:*:enterprise:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:jira:3.7::enterprise\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"jira\",\n      \"Version\": \"3.7\",\n      \"Update\": \"\",\n      \"Edition\": \"enterprise\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:ac_9462_firmware:22.40:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:ac_9462_firmware:22.40\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"ac_9462_firmware\",\n      \"Version\": \"22.40\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:lenovo:thinkpad_usb_3.0_ethernet_adapter:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:lenovo:thinkpad_usb_3.0_ethernet_adapter:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"lenovo\",\n      \"Product\": \"thinkpad_usb_3.0_ethernet_adapter\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:ui:unifi_dream_machine_pro_firmware:1.8.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:ui:unifi_dream_machine_pro_firmware:1.8.4\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"ui\",\n      \"Product\": \"unifi_dream_machine_pro_firmware\",\n      \"Version\": \"1.8.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:php:php:3.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:php:php:3.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"php\",\n      \"Product\": \"php\",\n      \"Version\": \"3.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:handsontable:handsontable:0.32.0:beta2:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:handsontable:handsontable:0.32.0:beta2:~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"handsontable\",\n      \"Product\": \"handsontable\",\n      \"Version\": \"0.32.0\",\n      \"Update\": \"beta2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:charlesproxy:charles:3.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:charlesproxy:charles:3.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"charlesproxy\",\n      \"Product\": \"charles\",\n      \"Version\": \"3.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:f5:big-ip_analytics:13.1.1.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:f5:big-ip_analytics:13.1.1.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"f5\",\n      \"Product\": \"big-ip_analytics\",\n      \"Version\": \"13.1.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:jenkins:1.437:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:jenkins:1.437\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"jenkins\",\n      \"Version\": \"1.437\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:shout_project:shout:0.32.5:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:shout_project:shout:0.32.5::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"shout_project\",\n      \"Product\": \"shout\",\n      \"Version\": \"0.32.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openenergymonitor:emoncms:10.1.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openenergymonitor:emoncms:10.1.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openenergymonitor\",\n      \"Product\": \"emoncms\",\n      \"Version\": \"10.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:advancedcustomfields:advanced_custom_fields:5.5.7:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:advancedcustomfields:advanced_custom_fields:5.5.7::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"advancedcustomfields\",\n      \"Product\": \"advanced_custom_fields\",\n      \"Version\": \"5.5.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cpanel:cpanel:11.38.0.19:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cpanel:cpanel:11.38.0.19\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cpanel\",\n      \"Product\": \"cpanel\",\n      \"Version\": \"11.38.0.19\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ovirt:ovirt:4.2.4.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ovirt:ovirt:4.2.4.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ovirt\",\n      \"Product\": \"ovirt\",\n      \"Version\": \"4.2.4.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ruamel.yaml_project:ruamel.yaml:0.15.13:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ruamel.yaml_project:ruamel.yaml:0.15.13\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ruamel.yaml_project\",\n      \"Product\": \"ruamel.yaml\",\n      \"Version\": \"0.15.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:cisco:firepower_1020:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:cisco:firepower_1020:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"firepower_1020\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:libsoup:2.34.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:libsoup:2.34.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"libsoup\",\n      \"Version\": \"2.34.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:setuptools:36.2.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:setuptools:36.2.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"setuptools\",\n      \"Version\": \"36.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sonarsource:sonarqube_docker_image:6.7.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sonarsource:sonarqube_docker_image:6.7.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sonarsource\",\n      \"Product\": \"sonarqube_docker_image\",\n      \"Version\": \"6.7.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gatsbyjs:gatsby-source-wordpress:3.1.70:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:gatsbyjs:gatsby-source-wordpress:3.1.70::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gatsbyjs\",\n      \"Product\": \"gatsby-source-wordpress\",\n      \"Version\": \"3.1.70\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:jboss-ejb-client:4.0.0:cr6:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:jboss-ejb-client:4.0.0:cr6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"jboss-ejb-client\",\n      \"Version\": \"4.0.0\",\n      \"Update\": \"cr6\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:octopus:tentacle:6.1.1016:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:octopus:tentacle:6.1.1016\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"octopus\",\n      \"Product\": \"tentacle\",\n      \"Version\": \"6.1.1016\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dpl:product_feed_on_woocommerce_for_google\\\\,_awin\\\\,_shareasale\\\\,_bing\\\\,_and_more:3.0.0.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:dpl:product_feed_on_woocommerce_for_google%2c_awin%2c_shareasale%2c_bing%2c_and_more:3.0.0.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dpl\",\n      \"Product\": \"product_feed_on_woocommerce_for_google,_awin,_shareasale,_bing,_and_more\",\n      \"Version\": \"3.0.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:xeon_e5-1428l_v3_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:xeon_e5-1428l_v3_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e5-1428l_v3_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:netgear:r7000p_firmware:v1.0.11.100_10.2.100:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:netgear:r7000p_firmware:v1.0.11.100_10.2.100\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"r7000p_firmware\",\n      \"Version\": \"v1.0.11.100_10.2.100\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:lynxtechnology:twonky_server:7.3.1-3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:lynxtechnology:twonky_server:7.3.1-3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"lynxtechnology\",\n      \"Product\": \"twonky_server\",\n      \"Version\": \"7.3.1-3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:shareaholic:shareaholic:7.0.4.7:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:shareaholic:shareaholic:7.0.4.7::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"shareaholic\",\n      \"Product\": \"shareaholic\",\n      \"Version\": \"7.0.4.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:12.2\\\\(31\\\\)sga9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:12.2%2831%29sga9\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"12.2(31)sga9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:veronalabs:wp_statistics:8.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:veronalabs:wp_statistics:8.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"veronalabs\",\n      \"Product\": \"wp_statistics\",\n      \"Version\": \"8.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zom:zom:1.0.17:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:zom:zom:1.0.17::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zom\",\n      \"Product\": \"zom\",\n      \"Version\": \"1.0.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:codepeople:appointment_booking_calendar:1.2.44:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:codepeople:appointment_booking_calendar:1.2.44::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"codepeople\",\n      \"Product\": \"appointment_booking_calendar\",\n      \"Version\": \"1.2.44\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxcontainers:lxd:2.0.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxcontainers:lxd:2.0.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxcontainers\",\n      \"Product\": \"lxd\",\n      \"Version\": \"2.0.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bochs_project:bochs:2.0:pre1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bochs_project:bochs:2.0:pre1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bochs_project\",\n      \"Product\": \"bochs\",\n      \"Version\": \"2.0\",\n      \"Update\": \"pre1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:qualcomm:smb1394_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:qualcomm:smb1394_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"qualcomm\",\n      \"Product\": \"smb1394_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.4a.015:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.4a.015\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.4a.015\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:superantispyware:superantispyware:4.26.1002:*:*:*:professional:*:*:*\",\n    \"cpe-url\": \"cpe:/a:superantispyware:superantispyware:4.26.1002::~~professional~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"superantispyware\",\n      \"Product\": \"superantispyware\",\n      \"Version\": \"4.26.1002\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"professional\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:silverstripe:silverstripe:2.4.4:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:silverstripe:silverstripe:2.4.4:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"silverstripe\",\n      \"Product\": \"silverstripe\",\n      \"Version\": \"2.4.4\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:advantech:webaccess:7.0-2010.05.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:advantech:webaccess:7.0-2010.05.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"advantech\",\n      \"Product\": \"webaccess\",\n      \"Version\": \"7.0-2010.05.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tinyxml2_project:tinyxml2:5.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tinyxml2_project:tinyxml2:5.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tinyxml2_project\",\n      \"Product\": \"tinyxml2\",\n      \"Version\": \"5.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:eclipse:jetty:4.2.23:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:eclipse:jetty:4.2.23:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"eclipse\",\n      \"Product\": \"jetty\",\n      \"Version\": \"4.2.23\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:property-expr_project:property-expr:1.0.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:property-expr_project:property-expr:1.0.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"property-expr_project\",\n      \"Product\": \"property-expr\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:netgear:srs60_firmware:2.5.2.104:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:netgear:srs60_firmware:2.5.2.104\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"srs60_firmware\",\n      \"Version\": \"2.5.2.104\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spinnaker:orca:6.77.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:spinnaker:orca:6.77.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spinnaker\",\n      \"Product\": \"orca\",\n      \"Version\": \"6.77.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:protobufjs_project:protobufjs:1.0.0:beta5:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:protobufjs_project:protobufjs:1.0.0:beta5:~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"protobufjs_project\",\n      \"Product\": \"protobufjs\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"beta5\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:imagemagick:imagemagick:6.4.5-9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:imagemagick:imagemagick:6.4.5-9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"imagemagick\",\n      \"Product\": \"imagemagick\",\n      \"Version\": \"6.4.5-9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:evolution-ews:3.8.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:evolution-ews:3.8.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"evolution-ews\",\n      \"Version\": \"3.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openstack:horizon:18.3.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openstack:horizon:18.3.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openstack\",\n      \"Product\": \"horizon\",\n      \"Version\": \"18.3.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:advanced_access_manager_project:advanced_access_manager:6.3.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:advanced_access_manager_project:advanced_access_manager:6.3.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"advanced_access_manager_project\",\n      \"Product\": \"advanced_access_manager\",\n      \"Version\": \"6.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rails_admin_project:rails_admin:0.6.8:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:rails_admin_project:rails_admin:0.6.8::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rails_admin_project\",\n      \"Product\": \"rails_admin\",\n      \"Version\": \"0.6.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:moxa:nport_ia5150a_firmware:1.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:moxa:nport_ia5150a_firmware:1.4\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"moxa\",\n      \"Product\": \"nport_ia5150a_firmware\",\n      \"Version\": \"1.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jkeenan:file-path_module:2.09:*:*:*:*:perl:*:*\",\n    \"cpe-url\": \"cpe:/a:jkeenan:file-path_module:2.09::~~~perl~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jkeenan\",\n      \"Product\": \"file-path_module\",\n      \"Version\": \"2.09\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"perl\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:corusent:global_tv:4.3.1:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:corusent:global_tv:4.3.1::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"corusent\",\n      \"Product\": \"global_tv\",\n      \"Version\": \"4.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ldapauth_project:ldapauth:2.3.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:ldapauth_project:ldapauth:2.3.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ldapauth_project\",\n      \"Product\": \"ldapauth\",\n      \"Version\": \"2.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openvswitch:openvswitch:2.9.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openvswitch:openvswitch:2.9.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openvswitch\",\n      \"Product\": \"openvswitch\",\n      \"Version\": \"2.9.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:packagekit_project:packagekit:0.8.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:packagekit_project:packagekit:0.8.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"packagekit_project\",\n      \"Product\": \"packagekit\",\n      \"Version\": \"0.8.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:piwik:piwik:1.11.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:piwik:piwik:1.11.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"piwik\",\n      \"Product\": \"piwik\",\n      \"Version\": \"1.11.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.1609:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.1609\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.1609\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:npmjs:npm:1.2.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:npmjs:npm:1.2.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"npmjs\",\n      \"Product\": \"npm\",\n      \"Version\": \"1.2.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:maximo_for_aviation:7.6.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:maximo_for_aviation:7.6.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"maximo_for_aviation\",\n      \"Version\": \"7.6.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:infinispan:infinispan:12.0.0:dev07:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:infinispan:infinispan:12.0.0:dev07\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"infinispan\",\n      \"Product\": \"infinispan\",\n      \"Version\": \"12.0.0\",\n      \"Update\": \"dev07\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:exponentcms:exponent_cms:2.3.5:patch2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:exponentcms:exponent_cms:2.3.5:patch2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"exponentcms\",\n      \"Product\": \"exponent_cms\",\n      \"Version\": \"2.3.5\",\n      \"Update\": \"patch2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:puppet:facter:3.1.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:puppet:facter:3.1.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"puppet\",\n      \"Product\": \"facter\",\n      \"Version\": \"3.1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:boot2docker:boot2docker:17.11.0:rc2:*:*:community:*:*:*\",\n    \"cpe-url\": \"cpe:/o:boot2docker:boot2docker:17.11.0:rc2:~~community~~~\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"boot2docker\",\n      \"Product\": \"boot2docker\",\n      \"Version\": \"17.11.0\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"community\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:flask-appbuilder_project:flask-appbuilder:1.9.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:flask-appbuilder_project:flask-appbuilder:1.9.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"flask-appbuilder_project\",\n      \"Product\": \"flask-appbuilder\",\n      \"Version\": \"1.9.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:samsung:tizenrt:3.0:gbb:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:samsung:tizenrt:3.0:gbb\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"samsung\",\n      \"Product\": \"tizenrt\",\n      \"Version\": \"3.0\",\n      \"Update\": \"gbb\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bit_project:bit:0.6.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bit_project:bit:0.6.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bit_project\",\n      \"Product\": \"bit\",\n      \"Version\": \"0.6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.3.300:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.3.300\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.3.300\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:isc:dhcp:4.1-esv:r8_rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:isc:dhcp:4.1-esv:r8_rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"isc\",\n      \"Product\": \"dhcp\",\n      \"Version\": \"4.1-esv\",\n      \"Update\": \"r8_rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:bosh_cli:0.0.95:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:bosh_cli:0.0.95\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"bosh_cli\",\n      \"Version\": \"0.0.95\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fortinet:fortimail:5.1.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fortinet:fortimail:5.1.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortimail\",\n      \"Version\": \"5.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:bitbucket:4.14.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:bitbucket:4.14.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"bitbucket\",\n      \"Version\": \"4.14.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libnl_project:libnl:3.2.21:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libnl_project:libnl:3.2.21\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libnl_project\",\n      \"Product\": \"libnl\",\n      \"Version\": \"3.2.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:livezilla:livezilla:7.0.2.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:livezilla:livezilla:7.0.2.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"livezilla\",\n      \"Product\": \"livezilla\",\n      \"Version\": \"7.0.2.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gwolle_guestbook_project:gwolle_guestbook:2.5.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:gwolle_guestbook_project:gwolle_guestbook:2.5.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gwolle_guestbook_project\",\n      \"Product\": \"gwolle_guestbook\",\n      \"Version\": \"2.5.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:microsoft:visual_studio_2019:8.1:*:*:*:*:macos:*:*\",\n    \"cpe-url\": \"cpe:/a:microsoft:visual_studio_2019:8.1::~~~macos~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"visual_studio_2019\",\n      \"Version\": \"8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"macos\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:linux:acrn:2018w30.2-140000p:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:linux:acrn:2018w30.2-140000p\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"linux\",\n      \"Product\": \"acrn\",\n      \"Version\": \"2018w30.2-140000p\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:herry:sfpagent:0.4.9:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:herry:sfpagent:0.4.9::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"herry\",\n      \"Product\": \"sfpagent\",\n      \"Version\": \"0.4.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wedevs:happy_addons_for_elementor:2.21.0:*:*:*:-:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wedevs:happy_addons_for_elementor:2.21.0::~~-~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wedevs\",\n      \"Product\": \"happy_addons_for_elementor\",\n      \"Version\": \"2.21.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:iij:seil_b1_firmware:3.26:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:iij:seil_b1_firmware:3.26\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"iij\",\n      \"Product\": \"seil_b1_firmware\",\n      \"Version\": \"3.26\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mechanize_project:mechanize:0.8.3:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:mechanize_project:mechanize:0.8.3::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mechanize_project\",\n      \"Product\": \"mechanize\",\n      \"Version\": \"0.8.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:digium:certified_asterisk:1.2.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:digium:certified_asterisk:1.2.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"digium\",\n      \"Product\": \"certified_asterisk\",\n      \"Version\": \"1.2.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:dell:vostro_5401:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:dell:vostro_5401:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"dell\",\n      \"Product\": \"vostro_5401\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:canonical:microk8s:1.15.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:canonical:microk8s:1.15.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"canonical\",\n      \"Product\": \"microk8s\",\n      \"Version\": \"1.15.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:w3m_project:w3m:0.5.3-34.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:w3m_project:w3m:0.5.3-34.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"w3m_project\",\n      \"Product\": \"w3m\",\n      \"Version\": \"0.5.3-34.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wekan_project:wekan:2.59:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wekan_project:wekan:2.59\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wekan_project\",\n      \"Product\": \"wekan\",\n      \"Version\": \"2.59\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pippinsplugins:featured_comments:1.2.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:pippinsplugins:featured_comments:1.2.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pippinsplugins\",\n      \"Product\": \"featured_comments\",\n      \"Version\": \"1.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:signal:messenger:3.7.0:*:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:signal:messenger:3.7.0::~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"signal\",\n      \"Product\": \"messenger\",\n      \"Version\": \"3.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:youtube_embed_project:youtube_embed:5.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:youtube_embed_project:youtube_embed:5.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"youtube_embed_project\",\n      \"Product\": \"youtube_embed\",\n      \"Version\": \"5.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:camunda:modeler:4.6.0:rc0:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:camunda:modeler:4.6.0:rc0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"camunda\",\n      \"Product\": \"modeler\",\n      \"Version\": \"4.6.0\",\n      \"Update\": \"rc0\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:beanshell:beanshell:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:beanshell:beanshell:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"beanshell\",\n      \"Product\": \"beanshell\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:infolific:ultimate_category_excluder:0.2:beta:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:infolific:ultimate_category_excluder:0.2:beta:~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"infolific\",\n      \"Product\": \"ultimate_category_excluder\",\n      \"Version\": \"0.2\",\n      \"Update\": \"beta\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:isc:bind:9.7.1:rc1:*:*:-:*:*:*\",\n    \"cpe-url\": \"cpe:/a:isc:bind:9.7.1:rc1:~~-~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"isc\",\n      \"Product\": \"bind\",\n      \"Version\": \"9.7.1\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:shapeshift:keepkey_firmware:5.2.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:shapeshift:keepkey_firmware:5.2.2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"shapeshift\",\n      \"Product\": \"keepkey_firmware\",\n      \"Version\": \"5.2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:puppet:puppet:3.7.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:puppet:puppet:3.7.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"puppet\",\n      \"Product\": \"puppet\",\n      \"Version\": \"3.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sangoma:freepbx:13.0.119.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sangoma:freepbx:13.0.119.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sangoma\",\n      \"Product\": \"freepbx\",\n      \"Version\": \"13.0.119.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phpunit_project:phpunit:3.2.20:*:*:*:*:-:*:*\",\n    \"cpe-url\": \"cpe:/a:phpunit_project:phpunit:3.2.20::~~~-~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phpunit_project\",\n      \"Product\": \"phpunit\",\n      \"Version\": \"3.2.20\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"-\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:http.rb_project:http.rb:0.8.9:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:http.rb_project:http.rb:0.8.9::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"http.rb_project\",\n      \"Product\": \"http.rb\",\n      \"Version\": \"0.8.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:verbb:image_resizer:0.0.2:*:*:*:*:craft_cms:*:*\",\n    \"cpe-url\": \"cpe:/a:verbb:image_resizer:0.0.2::~~~craft_cms~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"verbb\",\n      \"Product\": \"image_resizer\",\n      \"Version\": \"0.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"craft_cms\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:minecraft:minecraft:1.17:*:*:*:java:*:*:*\",\n    \"cpe-url\": \"cpe:/a:minecraft:minecraft:1.17::~~java~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"minecraft\",\n      \"Product\": \"minecraft\",\n      \"Version\": \"1.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"java\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ip_conference_phone_7832_firmware:12.5\\\\(1\\\\)sr2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ip_conference_phone_7832_firmware:12.5%281%29sr2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ip_conference_phone_7832_firmware\",\n      \"Version\": \"12.5(1)sr2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpmobilepack:wordpress_mobile_pack:2.1.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpmobilepack:wordpress_mobile_pack:2.1.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpmobilepack\",\n      \"Product\": \"wordpress_mobile_pack\",\n      \"Version\": \"2.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:abus:secvest_wireless_remote_control_fube50015_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:abus:secvest_wireless_remote_control_fube50015_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"abus\",\n      \"Product\": \"secvest_wireless_remote_control_fube50015_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnu:mailman:2.1.14-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnu:mailman:2.1.14-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnu\",\n      \"Product\": \"mailman\",\n      \"Version\": \"2.1.14-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inedo:otter:1.5.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:inedo:otter:1.5.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inedo\",\n      \"Product\": \"otter\",\n      \"Version\": \"1.5.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:10web:photo_gallery:1.2.82:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:10web:photo_gallery:1.2.82::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"10web\",\n      \"Product\": \"photo_gallery\",\n      \"Version\": \"1.2.82\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nodejs:node.js:9.5.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nodejs:node.js:9.5.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nodejs\",\n      \"Product\": \"node.js\",\n      \"Version\": \"9.5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:the-guild:graphql-tools:0.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:the-guild:graphql-tools:0.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"the-guild\",\n      \"Product\": \"graphql-tools\",\n      \"Version\": \"0.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jetbrains:kotlin:1.4.0:dev250:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jetbrains:kotlin:1.4.0:dev250\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jetbrains\",\n      \"Product\": \"kotlin\",\n      \"Version\": \"1.4.0\",\n      \"Update\": \"dev250\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:restafary_project:restafary:1.6.4:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:restafary_project:restafary:1.6.4::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"restafary_project\",\n      \"Product\": \"restafary\",\n      \"Version\": \"1.6.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpshopstyling:wp-ecommerce-shop-styling:1.4:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpshopstyling:wp-ecommerce-shop-styling:1.4::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpshopstyling\",\n      \"Product\": \"wp-ecommerce-shop-styling\",\n      \"Version\": \"1.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:buttle_project:buttle:0.0.4:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:buttle_project:buttle:0.0.4::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"buttle_project\",\n      \"Product\": \"buttle\",\n      \"Version\": \"0.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ueberhamm-design:youtube_video_inserter:1.2.0.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ueberhamm-design:youtube_video_inserter:1.2.0.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ueberhamm-design\",\n      \"Product\": \"youtube_video_inserter\",\n      \"Version\": \"1.2.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:asr_5000_software:18.1_base:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:asr_5000_software:18.1_base\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"asr_5000_software\",\n      \"Version\": \"18.1_base\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:quagga:quagga:0.99.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:quagga:quagga:0.99.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"quagga\",\n      \"Product\": \"quagga\",\n      \"Version\": \"0.99.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cognitoys:stemosaur_firmware:0.0.794:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cognitoys:stemosaur_firmware:0.0.794\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cognitoys\",\n      \"Product\": \"stemosaur_firmware\",\n      \"Version\": \"0.0.794\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pagerduty:rundeck:3.4.3:rc2:*:*:community:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pagerduty:rundeck:3.4.3:rc2:~~community~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pagerduty\",\n      \"Product\": \"rundeck\",\n      \"Version\": \"3.4.3\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"community\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudfoundry:cf-deployment:7.10.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudfoundry:cf-deployment:7.10.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudfoundry\",\n      \"Product\": \"cf-deployment\",\n      \"Version\": \"7.10.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:litespeedtech:litespeed_cache:2.9.7.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:litespeedtech:litespeed_cache:2.9.7.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"litespeedtech\",\n      \"Product\": \"litespeed_cache\",\n      \"Version\": \"2.9.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netflix:priam:3.11.33:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netflix:priam:3.11.33\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netflix\",\n      \"Product\": \"priam\",\n      \"Version\": \"3.11.33\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.0086:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.0086\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.0086\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bolt:bolt_cms:3.3.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bolt:bolt_cms:3.3.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bolt\",\n      \"Product\": \"bolt_cms\",\n      \"Version\": \"3.3.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:synacor:zimbra_collaboration_suite:8.8.8:patch10:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:synacor:zimbra_collaboration_suite:8.8.8:patch10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"synacor\",\n      \"Product\": \"zimbra_collaboration_suite\",\n      \"Version\": \"8.8.8\",\n      \"Update\": \"patch10\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:credhub-release:2.5.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:credhub-release:2.5.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"credhub-release\",\n      \"Version\": \"2.5.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gluster:glusterfs:3.5.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gluster:glusterfs:3.5.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gluster\",\n      \"Product\": \"glusterfs\",\n      \"Version\": \"3.5.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:glib:2.27.92:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:glib:2.27.92\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"glib\",\n      \"Version\": \"2.27.92\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rom_walton:boinc:7.0.67:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rom_walton:boinc:7.0.67\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rom_walton\",\n      \"Product\": \"boinc\",\n      \"Version\": \"7.0.67\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:geode:1.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:geode:1.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"geode\",\n      \"Version\": \"1.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:online_bus_booking_system_project:online_bus_booking_system:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:online_bus_booking_system_project:online_bus_booking_system:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"online_bus_booking_system_project\",\n      \"Product\": \"online_bus_booking_system\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:jspwiki:2.9.0:incubating_rc4:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:jspwiki:2.9.0:incubating_rc4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"jspwiki\",\n      \"Version\": \"2.9.0\",\n      \"Update\": \"incubating_rc4\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:z.cash:zcash:1.0.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:z.cash:zcash:1.0.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"z.cash\",\n      \"Product\": \"zcash\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:cloud_foundry:221:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:cloud_foundry:221\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"cloud_foundry\",\n      \"Version\": \"221\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ays-pro:quiz_maker:6.2.1.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ays-pro:quiz_maker:6.2.1.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ays-pro\",\n      \"Product\": \"quiz_maker\",\n      \"Version\": \"6.2.1.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:torproject:tor_browser:7.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:torproject:tor_browser:7.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"torproject\",\n      \"Product\": \"tor_browser\",\n      \"Version\": \"7.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:revive-adserver:revive_adserver:3.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:revive-adserver:revive_adserver:3.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"revive-adserver\",\n      \"Product\": \"revive_adserver\",\n      \"Version\": \"3.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:opennms:meridian:2019.1.14-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:opennms:meridian:2019.1.14-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"opennms\",\n      \"Product\": \"meridian\",\n      \"Version\": \"2019.1.14-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bitcoincore:bitcoin_core:0.7.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bitcoincore:bitcoin_core:0.7.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bitcoincore\",\n      \"Product\": \"bitcoin_core\",\n      \"Version\": \"0.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:aws_elastic_beanstalk_publisher:1.4.1:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:aws_elastic_beanstalk_publisher:1.4.1::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"aws_elastic_beanstalk_publisher\",\n      \"Version\": \"1.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpml:wpml:2.6.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpml:wpml:2.6.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpml\",\n      \"Product\": \"wpml\",\n      \"Version\": \"2.6.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:saasproject:booking_package:1.2.72:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:saasproject:booking_package:1.2.72::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"saasproject\",\n      \"Product\": \"booking_package\",\n      \"Version\": \"1.2.72\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rsvpmaker_project:rsvpmaker:0.7.4:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:rsvpmaker_project:rsvpmaker:0.7.4::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rsvpmaker_project\",\n      \"Product\": \"rsvpmaker\",\n      \"Version\": \"0.7.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudfoundry:credhub:1.3.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudfoundry:credhub:1.3.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudfoundry\",\n      \"Product\": \"credhub\",\n      \"Version\": \"1.3.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:horde:horde_prefs:2.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:horde:horde_prefs:2.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"horde\",\n      \"Product\": \"horde_prefs\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:linux:linux_kernel:2.6.5:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:linux:linux_kernel:2.6.5:rc3\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"linux\",\n      \"Product\": \"linux_kernel\",\n      \"Version\": \"2.6.5\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:restsharp:restsharp:106.6.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:restsharp:restsharp:106.6.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"restsharp\",\n      \"Product\": \"restsharp\",\n      \"Version\": \"106.6.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:lenovo:thinkagile_7y12:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:lenovo:thinkagile_7y12:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"lenovo\",\n      \"Product\": \"thinkagile_7y12\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hashicorp:vault:0.8.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hashicorp:vault:0.8.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hashicorp\",\n      \"Product\": \"vault\",\n      \"Version\": \"0.8.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wppopupmaker:popup_maker:1.5.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wppopupmaker:popup_maker:1.5.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wppopupmaker\",\n      \"Product\": \"popup_maker\",\n      \"Version\": \"1.5.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:netgear:r6020_firmware:1.0.0.48:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:netgear:r6020_firmware:1.0.0.48\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"r6020_firmware\",\n      \"Version\": \"1.0.0.48\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:verdaccio:verdaccio:0.1.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:verdaccio:verdaccio:0.1.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"verdaccio\",\n      \"Product\": \"verdaccio\",\n      \"Version\": \"0.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:nvidia:quadro_m3000m:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:nvidia:quadro_m3000m:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"nvidia\",\n      \"Product\": \"quadro_m3000m\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:s2600cwt_firmware:01.01.0029:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:s2600cwt_firmware:01.01.0029\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"s2600cwt_firmware\",\n      \"Version\": \"01.01.0029\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxfoundation:jaeger:1.7.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxfoundation:jaeger:1.7.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxfoundation\",\n      \"Product\": \"jaeger\",\n      \"Version\": \"1.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:brainstormforce:starter_templates:1.2.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:brainstormforce:starter_templates:1.2.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"brainstormforce\",\n      \"Product\": \"starter_templates\",\n      \"Version\": \"1.2.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oisf:suricata:2.0.1:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oisf:suricata:2.0.1:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oisf\",\n      \"Product\": \"suricata\",\n      \"Version\": \"2.0.1\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inedo:buildmaster:5.0.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:inedo:buildmaster:5.0.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inedo\",\n      \"Product\": \"buildmaster\",\n      \"Version\": \"5.0.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:typelevel:http4s:0.16.0:milestone2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:typelevel:http4s:0.16.0:milestone2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"typelevel\",\n      \"Product\": \"http4s\",\n      \"Version\": \"0.16.0\",\n      \"Update\": \"milestone2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vovsoft:vov_sticky_notes:6.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vovsoft:vov_sticky_notes:6.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vovsoft\",\n      \"Product\": \"vov_sticky_notes\",\n      \"Version\": \"6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bitnami:containers:7.6.0-debian-10-r38:*:*:*:*:laravel:*:*\",\n    \"cpe-url\": \"cpe:/a:bitnami:containers:7.6.0-debian-10-r38::~~~laravel~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bitnami\",\n      \"Product\": \"containers\",\n      \"Version\": \"7.6.0-debian-10-r38\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"laravel\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:glib:2.6.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:glib:2.6.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"glib\",\n      \"Version\": \"2.6.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:schedmd:slurm:18.08.0.0:pre1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:schedmd:slurm:18.08.0.0:pre1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"schedmd\",\n      \"Product\": \"slurm\",\n      \"Version\": \"18.08.0.0\",\n      \"Update\": \"pre1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:29.0.1547.31:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:29.0.1547.31\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"29.0.1547.31\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.1502:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.1502\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.1502\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:weekly_schedule_project:weekly_schedule:2.2.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:weekly_schedule_project:weekly_schedule:2.2.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"weekly_schedule_project\",\n      \"Product\": \"weekly_schedule\",\n      \"Version\": \"2.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:websphere_commerce:8.0.4.10:*:*:*:professional:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:websphere_commerce:8.0.4.10::~~professional~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"websphere_commerce\",\n      \"Version\": \"8.0.4.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"professional\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:chef:chef:15.4.61:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:chef:chef:15.4.61\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"chef\",\n      \"Product\": \"chef\",\n      \"Version\": \"15.4.61\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:bodhi:2.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:bodhi:2.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"bodhi\",\n      \"Version\": \"2.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cartpauj:mingle-forum:1.0.18:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cartpauj:mingle-forum:1.0.18\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cartpauj\",\n      \"Product\": \"mingle-forum\",\n      \"Version\": \"1.0.18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wclovers:frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible:2.0.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wclovers:frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible:2.0.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wclovers\",\n      \"Product\": \"frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible\",\n      \"Version\": \"2.0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tryton:trytond:3.6.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tryton:trytond:3.6.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tryton\",\n      \"Product\": \"trytond\",\n      \"Version\": \"3.6.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cmsmadesimple:form_builder:0.6b1:*:*:*:*:cms_made_simple:*:*\",\n    \"cpe-url\": \"cpe:/a:cmsmadesimple:form_builder:0.6b1::~~~cms_made_simple~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cmsmadesimple\",\n      \"Product\": \"form_builder\",\n      \"Version\": \"0.6b1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"cms_made_simple\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:15.2\\\\(4\\\\)jb6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:15.2%284%29jb6\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"15.2(4)jb6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ldap_\\\\/_sso_authentication_project:ldap_\\\\/_sso_authentication:3.2.1:*:*:*:*:typo3:*:*\",\n    \"cpe-url\": \"cpe:/a:ldap_%2f_sso_authentication_project:ldap_%2f_sso_authentication:3.2.1::~~~typo3~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ldap_/_sso_authentication_project\",\n      \"Product\": \"ldap_/_sso_authentication\",\n      \"Version\": \"3.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"typo3\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adaltas:printf:0.2.3:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:adaltas:printf:0.2.3::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adaltas\",\n      \"Product\": \"printf\",\n      \"Version\": \"0.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:raitan:commandcenter_secure_gateway:5.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:raitan:commandcenter_secure_gateway:5.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"raitan\",\n      \"Product\": \"commandcenter_secure_gateway\",\n      \"Version\": \"5.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adobe:acrobat:9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adobe:acrobat:9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adobe\",\n      \"Product\": \"acrobat\",\n      \"Version\": \"9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:klibc_project:klibc:0.172:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:klibc_project:klibc:0.172\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"klibc_project\",\n      \"Product\": \"klibc\",\n      \"Version\": \"0.172\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:luke_herrington:stickynote:7.x-1.x:dev:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:luke_herrington:stickynote:7.x-1.x:dev\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"luke_herrington\",\n      \"Product\": \"stickynote\",\n      \"Version\": \"7.x-1.x\",\n      \"Update\": \"dev\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oppia:oppia:2.6.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oppia:oppia:2.6.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oppia\",\n      \"Product\": \"oppia\",\n      \"Version\": \"2.6.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:abb:800xa_system:6.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:abb:800xa_system:6.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"abb\",\n      \"Product\": \"800xa_system\",\n      \"Version\": \"6.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:12.2\\\\(2\\\\)xb9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:12.2%282%29xb9\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"12.2(2)xb9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:perl:dbi:0.92:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:perl:dbi:0.92\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"perl\",\n      \"Product\": \"dbi\",\n      \"Version\": \"0.92\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:cordova:1.0.0:rc1:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:cordova:1.0.0:rc1:~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"cordova\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:contiki-os:contiki:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:contiki-os:contiki:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"contiki-os\",\n      \"Product\": \"contiki\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:owncloud:owncloud_desktop_client:2.2.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:owncloud:owncloud_desktop_client:2.2.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"owncloud\",\n      \"Product\": \"owncloud_desktop_client\",\n      \"Version\": \"2.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:microsoft:windows_2000:-:sp2:*:*:server:*:*:*\",\n    \"cpe-url\": \"cpe:/o:microsoft:windows_2000:-:sp2:~~server~~~\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"windows_2000\",\n      \"Version\": \"-\",\n      \"Update\": \"sp2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"server\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:simple-membership-plugin:simple_membership:1.8.4:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:simple-membership-plugin:simple_membership:1.8.4::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"simple-membership-plugin\",\n      \"Product\": \"simple_membership\",\n      \"Version\": \"1.8.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:f8b04a:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:f8b04a:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"f8b04a\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netsweeper:netsweeper:4.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netsweeper:netsweeper:4.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netsweeper\",\n      \"Product\": \"netsweeper\",\n      \"Version\": \"4.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.3.529:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.3.529\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.3.529\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sqlalchemy:sqlalchemy:0.9.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sqlalchemy:sqlalchemy:0.9.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sqlalchemy\",\n      \"Product\": \"sqlalchemy\",\n      \"Version\": \"0.9.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ctfd:ctfd:2.2.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ctfd:ctfd:2.2.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ctfd\",\n      \"Product\": \"ctfd\",\n      \"Version\": \"2.2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.4.447:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.4.447\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.4.447\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:iodata:hdl2-a_firmware:1.07:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:iodata:hdl2-a_firmware:1.07\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"iodata\",\n      \"Product\": \"hdl2-a_firmware\",\n      \"Version\": \"1.07\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:xeon_e5-1630_v3:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:xeon_e5-1630_v3:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e5-1630_v3\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:cloud_foundry_uaa_bosh:24.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:cloud_foundry_uaa_bosh:24.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"cloud_foundry_uaa_bosh\",\n      \"Version\": \"24.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netflix:hollow:2.4.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netflix:hollow:2.4.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netflix\",\n      \"Product\": \"hollow\",\n      \"Version\": \"2.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:webmin:usermin:1.770:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:webmin:usermin:1.770\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"webmin\",\n      \"Product\": \"usermin\",\n      \"Version\": \"1.770\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:recon-ng_project:recon-ng:3.4.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:recon-ng_project:recon-ng:3.4.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"recon-ng_project\",\n      \"Product\": \"recon-ng\",\n      \"Version\": \"3.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spinnaker:orca:0.439:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:spinnaker:orca:0.439\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spinnaker\",\n      \"Product\": \"orca\",\n      \"Version\": \"0.439\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:r-consortium:rmysql:0.10.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:r-consortium:rmysql:0.10.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"r-consortium\",\n      \"Product\": \"rmysql\",\n      \"Version\": \"0.10.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wekan_project:wekan:4.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wekan_project:wekan:4.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wekan_project\",\n      \"Product\": \"wekan\",\n      \"Version\": \"4.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phpmyadmin:phpmyadmin:1.2.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:phpmyadmin:phpmyadmin:1.2.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phpmyadmin\",\n      \"Product\": \"phpmyadmin\",\n      \"Version\": \"1.2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zmanda:amanda:2.5.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zmanda:amanda:2.5.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zmanda\",\n      \"Product\": \"amanda\",\n      \"Version\": \"2.5.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:ips_sensor_software:5.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:ips_sensor_software:5.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ips_sensor_software\",\n      \"Version\": \"5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:koha:koha:16.05.00:beta:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:koha:koha:16.05.00:beta\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"koha\",\n      \"Product\": \"koha\",\n      \"Version\": \"16.05.00\",\n      \"Update\": \"beta\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pizzashack:rssh:2.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pizzashack:rssh:2.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pizzashack\",\n      \"Product\": \"rssh\",\n      \"Version\": \"2.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:elastic:kibana_x-pack:5.4.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:elastic:kibana_x-pack:5.4.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"elastic\",\n      \"Product\": \"kibana_x-pack\",\n      \"Version\": \"5.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dropbox:dropbox:72.2:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:dropbox:dropbox:72.2::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dropbox\",\n      \"Product\": \"dropbox\",\n      \"Version\": \"72.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hygeia_project:hygeia:1.0.2:beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hygeia_project:hygeia:1.0.2:beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hygeia_project\",\n      \"Product\": \"hygeia\",\n      \"Version\": \"1.0.2\",\n      \"Update\": \"beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:12.3\\\\(8\\\\)jea:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:12.3%288%29jea\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"12.3(8)jea\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:quizandsurveymaster:quiz_and_survey_master:4.4.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:quizandsurveymaster:quiz_and_survey_master:4.4.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"quizandsurveymaster\",\n      \"Product\": \"quiz_and_survey_master\",\n      \"Version\": \"4.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:denx:u-boot:1.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:denx:u-boot:1.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"denx\",\n      \"Product\": \"u-boot\",\n      \"Version\": \"1.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.1.2374:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.1.2374\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.1.2374\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:avaya:aura_communication_manager:7.1.3.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:avaya:aura_communication_manager:7.1.3.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"avaya\",\n      \"Product\": \"aura_communication_manager\",\n      \"Version\": \"7.1.3.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:huawei:secospace_usg6600_firmware:v500r001c00spc050:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:huawei:secospace_usg6600_firmware:v500r001c00spc050\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"secospace_usg6600_firmware\",\n      \"Version\": \"v500r001c00spc050\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kiboit:phastpress:1.49:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:kiboit:phastpress:1.49::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kiboit\",\n      \"Product\": \"phastpress\",\n      \"Version\": \"1.49\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vercel:next.js:1.0.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:vercel:next.js:1.0.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vercel\",\n      \"Product\": \"next.js\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:scala-lang:scala:2.13.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:scala-lang:scala:2.13.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"scala-lang\",\n      \"Product\": \"scala\",\n      \"Version\": \"2.13.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:agilebits:knox:2.1.9:-:*:*:*:mac_os_x:*:*\",\n    \"cpe-url\": \"cpe:/a:agilebits:knox:2.1.9:-:~~~mac_os_x~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"agilebits\",\n      \"Product\": \"knox\",\n      \"Version\": \"2.1.9\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"mac_os_x\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sqreen:php_microagent:1.9.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sqreen:php_microagent:1.9.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sqreen\",\n      \"Product\": \"php_microagent\",\n      \"Version\": \"1.9.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:h5ai_project:h5ai:0.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:h5ai_project:h5ai:0.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"h5ai_project\",\n      \"Product\": \"h5ai\",\n      \"Version\": \"0.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:weechat:weechat:3.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:weechat:weechat:3.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"weechat\",\n      \"Product\": \"weechat\",\n      \"Version\": \"3.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:rabbitmq:1.9.8:*:*:*:*:pivotal_cloud_foundry:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:rabbitmq:1.9.8::~~~pivotal_cloud_foundry~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"rabbitmq\",\n      \"Version\": \"1.9.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"pivotal_cloud_foundry\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:12.1eu:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:12.1eu\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"12.1eu\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ntp:ntp:4.2.7:p349:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ntp:ntp:4.2.7:p349\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ntp\",\n      \"Product\": \"ntp\",\n      \"Version\": \"4.2.7\",\n      \"Update\": \"p349\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mariadb:mariadb:10.2.26:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mariadb:mariadb:10.2.26\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mariadb\",\n      \"Product\": \"mariadb\",\n      \"Version\": \"10.2.26\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudbees:jenkins:1.424.1:-:lts:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudbees:jenkins:1.424.1:-:lts\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudbees\",\n      \"Product\": \"jenkins\",\n      \"Version\": \"1.424.1\",\n      \"Update\": \"-\",\n      \"Edition\": \"lts\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:colossusxt:colossuscoinxt:0.3.23:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:colossusxt:colossuscoinxt:0.3.23:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"colossusxt\",\n      \"Product\": \"colossuscoinxt\",\n      \"Version\": \"0.3.23\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fortinet:fortianalyzer:6.4.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fortinet:fortianalyzer:6.4.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortianalyzer\",\n      \"Version\": \"6.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gaku:tablacus_explorer:17.6.15:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gaku:tablacus_explorer:17.6.15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gaku\",\n      \"Product\": \"tablacus_explorer\",\n      \"Version\": \"17.6.15\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netsweeper:netsweeper:6.3.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netsweeper:netsweeper:6.3.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netsweeper\",\n      \"Product\": \"netsweeper\",\n      \"Version\": \"6.3.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:18.0.1006.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:18.0.1006.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"18.0.1006.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxfoundation:containerd:1.0.1:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxfoundation:containerd:1.0.1:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxfoundation\",\n      \"Product\": \"containerd\",\n      \"Version\": \"1.0.1\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:convert\\\\:\\\\:asn1_project:convert\\\\:\\\\:asn1:0.27:*:*:*:*:perl:*:*\",\n    \"cpe-url\": \"cpe:/a:convert%3a%3aasn1_project:convert%3a%3aasn1:0.27::~~~perl~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"convert::asn1_project\",\n      \"Product\": \"convert::asn1\",\n      \"Version\": \"0.27\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"perl\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sandhillsdev:easy_digital_downloads:2.1.9:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:sandhillsdev:easy_digital_downloads:2.1.9::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sandhillsdev\",\n      \"Product\": \"easy_digital_downloads\",\n      \"Version\": \"2.1.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ffmpeg:ffmpeg:2.8.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ffmpeg:ffmpeg:2.8.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ffmpeg\",\n      \"Product\": \"ffmpeg\",\n      \"Version\": \"2.8.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:txjia:imcat:3.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:txjia:imcat:3.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"txjia\",\n      \"Product\": \"imcat\",\n      \"Version\": \"3.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spiffyplugins:spiffy_calendar:3.4.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:spiffyplugins:spiffy_calendar:3.4.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spiffyplugins\",\n      \"Product\": \"spiffy_calendar\",\n      \"Version\": \"3.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tryton:trytond:1.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tryton:trytond:1.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tryton\",\n      \"Product\": \"trytond\",\n      \"Version\": \"1.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:openpyxl:2.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:openpyxl:2.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"openpyxl\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:keybase:keybase:1.0.29:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:keybase:keybase:1.0.29\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"keybase\",\n      \"Product\": \"keybase\",\n      \"Version\": \"1.0.29\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mozilla:nss:3.60:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mozilla:nss:3.60\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mozilla\",\n      \"Product\": \"nss\",\n      \"Version\": \"3.60\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:designmodo:wp_maintenance_mode:1.8.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:designmodo:wp_maintenance_mode:1.8.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"designmodo\",\n      \"Product\": \"wp_maintenance_mode\",\n      \"Version\": \"1.8.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:brave:brave:0.15.314:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:brave:brave:0.15.314\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"brave\",\n      \"Product\": \"brave\",\n      \"Version\": \"0.15.314\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:iij:seil_b1_firmware:3.48:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:iij:seil_b1_firmware:3.48\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"iij\",\n      \"Product\": \"seil_b1_firmware\",\n      \"Version\": \"3.48\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:core_i7:4790s:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:core_i7:4790s\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"core_i7\",\n      \"Version\": \"4790s\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sophos:unified_threat_management_up2date:9.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sophos:unified_threat_management_up2date:9.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sophos\",\n      \"Product\": \"unified_threat_management_up2date\",\n      \"Version\": \"9.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:plainware:hitappoint:6.4.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:plainware:hitappoint:6.4.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"plainware\",\n      \"Product\": \"hitappoint\",\n      \"Version\": \"6.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zabbix:zabbix:1.8.4:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zabbix:zabbix:1.8.4:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zabbix\",\n      \"Product\": \"zabbix\",\n      \"Version\": \"1.8.4\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:espressif:esp32_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:espressif:esp32_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"espressif\",\n      \"Product\": \"esp32_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:signal:messenger:1.8.2:*:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:signal:messenger:1.8.2::~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"signal\",\n      \"Product\": \"messenger\",\n      \"Version\": \"1.8.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tendermint:tendermint:0.26.0:rc0:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tendermint:tendermint:0.26.0:rc0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tendermint\",\n      \"Product\": \"tendermint\",\n      \"Version\": \"0.26.0\",\n      \"Update\": \"rc0\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:brave:brave:1.27.107:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:brave:brave:1.27.107\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"brave\",\n      \"Product\": \"brave\",\n      \"Version\": \"1.27.107\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sumatrapdfreader:sumatrapdf:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sumatrapdfreader:sumatrapdf:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sumatrapdfreader\",\n      \"Product\": \"sumatrapdf\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:siemens:simatic_ipc647c:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:siemens:simatic_ipc647c:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"siemens\",\n      \"Product\": \"simatic_ipc647c\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:codiad:codiad:2.2.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:codiad:codiad:2.2.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"codiad\",\n      \"Product\": \"codiad\",\n      \"Version\": \"2.2.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:confluence_data_center:3.5.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:confluence_data_center:3.5.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"confluence_data_center\",\n      \"Version\": \"3.5.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:iptanus:wordpress_file_upload:4.6.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:iptanus:wordpress_file_upload:4.6.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"iptanus\",\n      \"Product\": \"wordpress_file_upload\",\n      \"Version\": \"4.6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hp:nonstop_netbatch:j06.14.03:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hp:nonstop_netbatch:j06.14.03\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"nonstop_netbatch\",\n      \"Version\": \"j06.14.03\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.0412:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.0412\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.0412\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:emby:emby.releases:3.4.1.20:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:emby:emby.releases:3.4.1.20\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"emby\",\n      \"Product\": \"emby.releases\",\n      \"Version\": \"3.4.1.20\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:brave:brave:1.8.50:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:brave:brave:1.8.50\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"brave\",\n      \"Product\": \"brave\",\n      \"Version\": \"1.8.50\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apollosapp:data-connector-rock:2.3.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:apollosapp:data-connector-rock:2.3.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apollosapp\",\n      \"Product\": \"data-connector-rock\",\n      \"Version\": \"2.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:keyring:2.0.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:keyring:2.0.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"keyring\",\n      \"Version\": \"2.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sleuthkit:the_sleuth_kit:4.6.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sleuthkit:the_sleuth_kit:4.6.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sleuthkit\",\n      \"Product\": \"the_sleuth_kit\",\n      \"Version\": \"4.6.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adjam:rekonq:0.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adjam:rekonq:0.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adjam\",\n      \"Product\": \"rekonq\",\n      \"Version\": \"0.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:unified_intelligence_center:11.6\\\\(1\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:unified_intelligence_center:11.6%281%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"unified_intelligence_center\",\n      \"Version\": \"11.6(1)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:5.0.332.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:5.0.332.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"5.0.332.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:pipeline_github_notify_step:1.0.5:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:pipeline_github_notify_step:1.0.5::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"pipeline_github_notify_step\",\n      \"Version\": \"1.0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netflix:hollow:4.8.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netflix:hollow:4.8.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netflix\",\n      \"Product\": \"hollow\",\n      \"Version\": \"4.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:impress:wp_rollback:1.2.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:impress:wp_rollback:1.2.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"impress\",\n      \"Product\": \"wp_rollback\",\n      \"Version\": \"1.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:concourse:0.6.0:rc21:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:concourse:0.6.0:rc21\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"concourse\",\n      \"Version\": \"0.6.0\",\n      \"Update\": \"rc21\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:nx-os:5.2\\\\(1\\\\)sm1\\\\(5.1\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:nx-os:5.2%281%29sm1%285.1%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"nx-os\",\n      \"Version\": \"5.2(1)sm1(5.1)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fortinet:fortiportal:4.2.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fortinet:fortiportal:4.2.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortiportal\",\n      \"Version\": \"4.2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:orbital:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:orbital:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"orbital\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:symantec:veritas_storage_foundation_for_windows:5.10.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:symantec:veritas_storage_foundation_for_windows:5.10.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"symantec\",\n      \"Product\": \"veritas_storage_foundation_for_windows\",\n      \"Version\": \"5.10.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jupyter:notebook:5.1.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jupyter:notebook:5.1.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jupyter\",\n      \"Product\": \"notebook\",\n      \"Version\": \"5.1.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:unity:web_player:4.5.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:unity:web_player:4.5.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"unity\",\n      \"Product\": \"web_player\",\n      \"Version\": \"4.5.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:m0p39a:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:m0p39a:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"m0p39a\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:knexjs:knex:0.7.5:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:knexjs:knex:0.7.5::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"knexjs\",\n      \"Product\": \"knex\",\n      \"Version\": \"0.7.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mailenable:mailenable:1.18:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mailenable:mailenable:1.18::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mailenable\",\n      \"Product\": \"mailenable\",\n      \"Version\": \"1.18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:btcpayserver:btcpay_server:1.0.2.114:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:btcpayserver:btcpay_server:1.0.2.114\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"btcpayserver\",\n      \"Product\": \"btcpay_server\",\n      \"Version\": \"1.0.2.114\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:incubator_superset:0.34.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:incubator_superset:0.34.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"incubator_superset\",\n      \"Version\": \"0.34.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:asset_pipeline_project:asset-pipeline:2.13.0:*:*:*:*:grails:*:*\",\n    \"cpe-url\": \"cpe:/a:asset_pipeline_project:asset-pipeline:2.13.0::~~~grails~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"asset_pipeline_project\",\n      \"Product\": \"asset-pipeline\",\n      \"Version\": \"2.13.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"grails\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:flashbackrecorder:flashback:5.23.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:flashbackrecorder:flashback:5.23.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"flashbackrecorder\",\n      \"Product\": \"flashback\",\n      \"Version\": \"5.23.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:n9k-c9396tx_firmware:13.2\\\\(3n\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:n9k-c9396tx_firmware:13.2%283n%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"n9k-c9396tx_firmware\",\n      \"Version\": \"13.2(3n)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:flexense:diskboss:6.5:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:flexense:diskboss:6.5::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"flexense\",\n      \"Product\": \"diskboss\",\n      \"Version\": \"6.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dart:dart_software_development_kit:0.6.21.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:dart:dart_software_development_kit:0.6.21.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dart\",\n      \"Product\": \"dart_software_development_kit\",\n      \"Version\": \"0.6.21.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:activestate:activeperl:5.8.819:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:activestate:activeperl:5.8.819\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"activestate\",\n      \"Product\": \"activeperl\",\n      \"Version\": \"5.8.819\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:aedes_project:aedes:0.13.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:aedes_project:aedes:0.13.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"aedes_project\",\n      \"Product\": \"aedes\",\n      \"Version\": \"0.13.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:swoole:swoole_php_framework:1.13.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:swoole:swoole_php_framework:1.13.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"swoole\",\n      \"Product\": \"swoole_php_framework\",\n      \"Version\": \"1.13.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:credova:financial:1.4.9:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:credova:financial:1.4.9::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"credova\",\n      \"Product\": \"financial\",\n      \"Version\": \"1.4.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vmware:spring_integration_zip:1.0.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vmware:spring_integration_zip:1.0.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vmware\",\n      \"Product\": \"spring_integration_zip\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nokogiri:nokogiri:1.6.2:beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nokogiri:nokogiri:1.6.2:beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nokogiri\",\n      \"Product\": \"nokogiri\",\n      \"Version\": \"1.6.2\",\n      \"Update\": \"beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:multicorewareinc:x265:1.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:multicorewareinc:x265:1.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"multicorewareinc\",\n      \"Product\": \"x265\",\n      \"Version\": \"1.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:wago:750-8202:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:wago:750-8202:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"wago\",\n      \"Product\": \"750-8202\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:octobercms:october_cms:1.0.228:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:octobercms:october_cms:1.0.228\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"octobercms\",\n      \"Product\": \"october_cms\",\n      \"Version\": \"1.0.228\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:centreon:widget-host-monitoring:19.04.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:centreon:widget-host-monitoring:19.04.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"centreon\",\n      \"Product\": \"widget-host-monitoring\",\n      \"Version\": \"19.04.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sonatype:nexus_repository_manager:2.14.15:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sonatype:nexus_repository_manager:2.14.15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sonatype\",\n      \"Product\": \"nexus_repository_manager\",\n      \"Version\": \"2.14.15\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:12.2\\\\\\\\\\\\(25\\\\\\\\\\\\)seg2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:12.2%5c%2825%5c%29seg2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"12.2\\\\\\\\(25\\\\\\\\)seg2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:eq-3:ccu2_firmware:2.5.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:eq-3:ccu2_firmware:2.5.4\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"eq-3\",\n      \"Product\": \"ccu2_firmware\",\n      \"Version\": \"2.5.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nextcloud:end-to-end_encryption:1.7.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nextcloud:end-to-end_encryption:1.7.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nextcloud\",\n      \"Product\": \"end-to-end_encryption\",\n      \"Version\": \"1.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxfoundation:containerd:0.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxfoundation:containerd:0.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxfoundation\",\n      \"Product\": \"containerd\",\n      \"Version\": \"0.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wtfutil:wtf:0.0.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wtfutil:wtf:0.0.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wtfutil\",\n      \"Product\": \"wtf\",\n      \"Version\": \"0.0.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:maxthon:maxthon_browser:5.2.3.4000:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:maxthon:maxthon_browser:5.2.3.4000\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"maxthon\",\n      \"Product\": \"maxthon_browser\",\n      \"Version\": \"5.2.3.4000\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fasterxml:jackson-dataformats-binary:2.9.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fasterxml:jackson-dataformats-binary:2.9.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fasterxml\",\n      \"Product\": \"jackson-dataformats-binary\",\n      \"Version\": \"2.9.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:attachmate:reflection_for_secure_it_client:7.2.1163:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:attachmate:reflection_for_secure_it_client:7.2.1163\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"attachmate\",\n      \"Product\": \"reflection_for_secure_it_client\",\n      \"Version\": \"7.2.1163\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ea:origin_client:10.5.86:*:*:*:*:mac_os:*:*\",\n    \"cpe-url\": \"cpe:/a:ea:origin_client:10.5.86::~~~mac_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ea\",\n      \"Product\": \"origin_client\",\n      \"Version\": \"10.5.86\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"mac_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:paloaltonetworks:expedition:1.1.83:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:paloaltonetworks:expedition:1.1.83\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"paloaltonetworks\",\n      \"Product\": \"expedition\",\n      \"Version\": \"1.1.83\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:hp:hp-ux:8.04:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:hp:hp-ux:8.04\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"hp-ux\",\n      \"Version\": \"8.04\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:exposure_notification_verification_server:0.23.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:exposure_notification_verification_server:0.23.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"exposure_notification_verification_server\",\n      \"Version\": \"0.23.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:drweb:web_security_space:6.0.0.03100:-:professional:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:drweb:web_security_space:6.0.0.03100:-:professional\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"drweb\",\n      \"Product\": \"web_security_space\",\n      \"Version\": \"6.0.0.03100\",\n      \"Update\": \"-\",\n      \"Edition\": \"professional\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:fortinet:fortiswitch:3.6.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:fortinet:fortiswitch:3.6.6\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortiswitch\",\n      \"Version\": \"3.6.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kaseya:vsa:9.5.0.20:*:*:*:rmm:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kaseya:vsa:9.5.0.20::~~rmm~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kaseya\",\n      \"Product\": \"vsa\",\n      \"Version\": \"9.5.0.20\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"rmm\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nghttp2:nghttp2:1.29.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nghttp2:nghttp2:1.29.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nghttp2\",\n      \"Product\": \"nghttp2\",\n      \"Version\": \"1.29.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tcoffee:t-coffee:11.00.8cbe486-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tcoffee:t-coffee:11.00.8cbe486-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tcoffee\",\n      \"Product\": \"t-coffee\",\n      \"Version\": \"11.00.8cbe486-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:hns2600bpq24r_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:hns2600bpq24r_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"hns2600bpq24r_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:belden:hirschmann_rsb20-0900mmm2taabe:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:belden:hirschmann_rsb20-0900mmm2taabe:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"belden\",\n      \"Product\": \"hirschmann_rsb20-0900mmm2taabe\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:npmjs:tar:4.4.3:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:npmjs:tar:4.4.3::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"npmjs\",\n      \"Product\": \"tar\",\n      \"Version\": \"4.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:microchip:atsama5d27c-cnrvao:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:microchip:atsama5d27c-cnrvao:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"microchip\",\n      \"Product\": \"atsama5d27c-cnrvao\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tryton:tryton:3.6.13:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tryton:tryton:3.6.13\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tryton\",\n      \"Product\": \"tryton\",\n      \"Version\": \"3.6.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ays-pro:quiz_maker:3.0.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ays-pro:quiz_maker:3.0.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ays-pro\",\n      \"Product\": \"quiz_maker\",\n      \"Version\": \"3.0.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:codeaurora:android-msm:3.12.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:codeaurora:android-msm:3.12.11\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"codeaurora\",\n      \"Product\": \"android-msm\",\n      \"Version\": \"3.12.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tiny.cloud:tinymce:3.4.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tiny.cloud:tinymce:3.4.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tiny.cloud\",\n      \"Product\": \"tinymce\",\n      \"Version\": \"3.4.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bracketspace:notification:2.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:bracketspace:notification:2.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bracketspace\",\n      \"Product\": \"notification\",\n      \"Version\": \"2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:lenovo:thinkpad_e565_bios:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:lenovo:thinkpad_e565_bios:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"lenovo\",\n      \"Product\": \"thinkpad_e565_bios\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:spi-inc:ganeti:2.1.0:beta0:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:spi-inc:ganeti:2.1.0:beta0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"spi-inc\",\n      \"Product\": \"ganeti\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"beta0\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:telegram:telegram_desktop:0.7.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:telegram:telegram_desktop:0.7.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"telegram\",\n      \"Product\": \"telegram_desktop\",\n      \"Version\": \"0.7.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:encode:uvicorn:0.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:encode:uvicorn:0.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"encode\",\n      \"Product\": \"uvicorn\",\n      \"Version\": \"0.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:linux:tizen:4.0:m3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:linux:tizen:4.0:m3\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"linux\",\n      \"Product\": \"tizen\",\n      \"Version\": \"4.0\",\n      \"Update\": \"m3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rancher:rancher:2.5.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rancher:rancher:2.5.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rancher\",\n      \"Product\": \"rancher\",\n      \"Version\": \"2.5.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:imagemagick:imagemagick:6.9.9-18:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:imagemagick:imagemagick:6.9.9-18\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"imagemagick\",\n      \"Product\": \"imagemagick\",\n      \"Version\": \"6.9.9-18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hp:system_management_homepage:2.1.3.132:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hp:system_management_homepage:2.1.3.132\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"system_management_homepage\",\n      \"Version\": \"2.1.3.132\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:http_server:2.2.33:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:http_server:2.2.33\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"http_server\",\n      \"Version\": \"2.2.33\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:unity3d:unity_editor:5.5.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:unity3d:unity_editor:5.5.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"unity3d\",\n      \"Product\": \"unity_editor\",\n      \"Version\": \"5.5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:xen-orchestra:xen_orchestra_server:4.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:xen-orchestra:xen_orchestra_server:4.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"xen-orchestra\",\n      \"Product\": \"xen_orchestra_server\",\n      \"Version\": \"4.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zuuse:beims_contractorweb_.net:5.18.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zuuse:beims_contractorweb_.net:5.18.0.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zuuse\",\n      \"Product\": \"beims_contractorweb_.net\",\n      \"Version\": \"5.18.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mailcow:mailcow\\\\:_dockerized:0.3.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mailcow:mailcow%3a_dockerized:0.3.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mailcow\",\n      \"Product\": \"mailcow:_dockerized\",\n      \"Version\": \"0.3.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:3cx:live_chat:8.0.32:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:3cx:live_chat:8.0.32::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"3cx\",\n      \"Product\": \"live_chat\",\n      \"Version\": \"8.0.32\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:unified_contact_center_enterprise:11.0\\\\(1\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:unified_contact_center_enterprise:11.0%281%29\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"unified_contact_center_enterprise\",\n      \"Version\": \"11.0(1)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:weseek:growi:3.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:weseek:growi:3.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"weseek\",\n      \"Product\": \"growi\",\n      \"Version\": \"3.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:enalean:tuleap:10.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:enalean:tuleap:10.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"enalean\",\n      \"Product\": \"tuleap\",\n      \"Version\": \"10.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:jf812a:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:jf812a:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"jf812a\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:webyog:sqlyog:3.52:-:enterprise:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:webyog:sqlyog:3.52:-:enterprise\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"webyog\",\n      \"Product\": \"sqlyog\",\n      \"Version\": \"3.52\",\n      \"Update\": \"-\",\n      \"Edition\": \"enterprise\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pidgin:pidgin:2.10.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pidgin:pidgin:2.10.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pidgin\",\n      \"Product\": \"pidgin\",\n      \"Version\": \"2.10.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libguestfs:libguestfs:1.33.17:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libguestfs:libguestfs:1.33.17\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libguestfs\",\n      \"Product\": \"libguestfs\",\n      \"Version\": \"1.33.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:urllib3:1.18:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:urllib3:1.18\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"urllib3\",\n      \"Version\": \"1.18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:jclouds:1.6.1:incubating-rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:jclouds:1.6.1:incubating-rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"jclouds\",\n      \"Version\": \"1.6.1\",\n      \"Update\": \"incubating-rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:appleple:a-blog_cms:2.7.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:appleple:a-blog_cms:2.7.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"appleple\",\n      \"Product\": \"a-blog_cms\",\n      \"Version\": \"2.7.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnu:libredwg:0.10.1.2670:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnu:libredwg:0.10.1.2670\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnu\",\n      \"Product\": \"libredwg\",\n      \"Version\": \"0.10.1.2670\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:postgresql:postgresql:8.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:postgresql:postgresql:8.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"postgresql\",\n      \"Product\": \"postgresql\",\n      \"Version\": \"8.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:open_stf:1.0.2:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:open_stf:1.0.2::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"open_stf\",\n      \"Version\": \"1.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:winwar:wp_ebay_product_feeds:0.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:winwar:wp_ebay_product_feeds:0.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"winwar\",\n      \"Product\": \"wp_ebay_product_feeds\",\n      \"Version\": \"0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:web-mv:resads:1.0.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:web-mv:resads:1.0.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"web-mv\",\n      \"Product\": \"resads\",\n      \"Version\": \"1.0.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:uglifyjs_project:uglifyjs:3.0.16:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:uglifyjs_project:uglifyjs:3.0.16::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"uglifyjs_project\",\n      \"Product\": \"uglifyjs\",\n      \"Version\": \"3.0.16\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:frontaccounting:frontaccounting:2.3.22:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:frontaccounting:frontaccounting:2.3.22\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"frontaccounting\",\n      \"Product\": \"frontaccounting\",\n      \"Version\": \"2.3.22\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apple:itunes:7.4.2:-:mac:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apple:itunes:7.4.2:-:mac\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"itunes\",\n      \"Version\": \"7.4.2\",\n      \"Update\": \"-\",\n      \"Edition\": \"mac\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fluentd:fluentd:1.12.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fluentd:fluentd:1.12.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fluentd\",\n      \"Product\": \"fluentd\",\n      \"Version\": \"1.12.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sun:java_dynamic_management_kit:5.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sun:java_dynamic_management_kit:5.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sun\",\n      \"Product\": \"java_dynamic_management_kit\",\n      \"Version\": \"5.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:contao:contao:4.5.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:contao:contao:4.5.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"contao\",\n      \"Product\": \"contao\",\n      \"Version\": \"4.5.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gvectors:wpdiscuz:5.1.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:gvectors:wpdiscuz:5.1.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gvectors\",\n      \"Product\": \"wpdiscuz\",\n      \"Version\": \"5.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jupyterhub:kubespawner:0.8.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jupyterhub:kubespawner:0.8.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jupyterhub\",\n      \"Product\": \"kubespawner\",\n      \"Version\": \"0.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tracker-software:pdf-xchange_lite_printer:4.0.154:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tracker-software:pdf-xchange_lite_printer:4.0.154\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tracker-software\",\n      \"Product\": \"pdf-xchange_lite_printer\",\n      \"Version\": \"4.0.154\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:node-opencv_project:node-opencv:0.0.9:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:node-opencv_project:node-opencv:0.0.9::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"node-opencv_project\",\n      \"Product\": \"node-opencv\",\n      \"Version\": \"0.0.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:flarum:flarum:0.1.0:beta6:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:flarum:flarum:0.1.0:beta6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"flarum\",\n      \"Product\": \"flarum\",\n      \"Version\": \"0.1.0\",\n      \"Update\": \"beta6\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:php:pear:1.4.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:php:pear:1.4.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"php\",\n      \"Product\": \"pear\",\n      \"Version\": \"1.4.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:belwith-keeler:hickory_smart:01.01.05:*:*:*:*:iphone_os:*:*\",\n    \"cpe-url\": \"cpe:/a:belwith-keeler:hickory_smart:01.01.05::~~~iphone_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"belwith-keeler\",\n      \"Product\": \"hickory_smart\",\n      \"Version\": \"01.01.05\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"iphone_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:huawei:secospace_usg6600_firmware:v100r001c30spc500:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:huawei:secospace_usg6600_firmware:v100r001c30spc500\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"secospace_usg6600_firmware\",\n      \"Version\": \"v100r001c30spc500\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:trousers_project:trousers:0.3.13:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:trousers_project:trousers:0.3.13\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"trousers_project\",\n      \"Product\": \"trousers\",\n      \"Version\": \"0.3.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pterodactyl:panel:1.0.0:beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pterodactyl:panel:1.0.0:beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pterodactyl\",\n      \"Product\": \"panel\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:laserjet_managed_flow_mfp_e67550_l3u70a:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:laserjet_managed_flow_mfp_e67550_l3u70a:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"laserjet_managed_flow_mfp_e67550_l3u70a\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:freedownloadmanager:freedownloadmanager:2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:freedownloadmanager:freedownloadmanager:2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"freedownloadmanager\",\n      \"Product\": \"freedownloadmanager\",\n      \"Version\": \"2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:db2:10.1.0.3:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:db2:10.1.0.3::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"db2\",\n      \"Version\": \"10.1.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openstack:oslo.middleware:3.30.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openstack:oslo.middleware:3.30.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openstack\",\n      \"Product\": \"oslo.middleware\",\n      \"Version\": \"3.30.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:simplenews_scheduler_project:simplenews_scheduler:6.x-2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:simplenews_scheduler_project:simplenews_scheduler:6.x-2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"simplenews_scheduler_project\",\n      \"Product\": \"simplenews_scheduler\",\n      \"Version\": \"6.x-2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpexpertdeveloper:wp_private_content_plus:1.7:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpexpertdeveloper:wp_private_content_plus:1.7::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpexpertdeveloper\",\n      \"Product\": \"wp_private_content_plus\",\n      \"Version\": \"1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:catchplugins:generate_child_theme:-:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:catchplugins:generate_child_theme:-::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"catchplugins\",\n      \"Product\": \"generate_child_theme\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:spa_502g_firmware:7.6.2:sr1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:spa_502g_firmware:7.6.2:sr1\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"spa_502g_firmware\",\n      \"Version\": \"7.6.2\",\n      \"Update\": \"sr1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cleverplugins:seo_booster:3.6.14:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:cleverplugins:seo_booster:3.6.14::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cleverplugins\",\n      \"Product\": \"seo_booster\",\n      \"Version\": \"3.6.14\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:go-jose_project:go-jose:2.1.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:go-jose_project:go-jose:2.1.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"go-jose_project\",\n      \"Product\": \"go-jose\",\n      \"Version\": \"2.1.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pdfinfo_project:pdfinfo:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pdfinfo_project:pdfinfo:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pdfinfo_project\",\n      \"Product\": \"pdfinfo\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pervasive:data_integrator_engine:9.0.3.30:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pervasive:data_integrator_engine:9.0.3.30\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pervasive\",\n      \"Product\": \"data_integrator_engine\",\n      \"Version\": \"9.0.3.30\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inmedias:questionaire:3.0.45:beta:*:*:*:typo3:*:*\",\n    \"cpe-url\": \"cpe:/a:inmedias:questionaire:3.0.45:beta:~~~typo3~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inmedias\",\n      \"Product\": \"questionaire\",\n      \"Version\": \"3.0.45\",\n      \"Update\": \"beta\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"typo3\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:webyog:sqlyog:8.15:-:community:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:webyog:sqlyog:8.15:-:community\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"webyog\",\n      \"Product\": \"sqlyog\",\n      \"Version\": \"8.15\",\n      \"Update\": \"-\",\n      \"Edition\": \"community\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:wildfly_core:3.0.0:beta3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:wildfly_core:3.0.0:beta3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"wildfly_core\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"beta3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pressified:sendpress:0.9.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:pressified:sendpress:0.9.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pressified\",\n      \"Product\": \"sendpress\",\n      \"Version\": \"0.9.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cakephp:cakephp:3.4.0:beta2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cakephp:cakephp:3.4.0:beta2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cakephp\",\n      \"Product\": \"cakephp\",\n      \"Version\": \"3.4.0\",\n      \"Update\": \"beta2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mobyproject:moby:1.12.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mobyproject:moby:1.12.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mobyproject\",\n      \"Product\": \"moby\",\n      \"Version\": \"1.12.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redmine:redmine:2.6.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redmine:redmine:2.6.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redmine\",\n      \"Product\": \"redmine\",\n      \"Version\": \"2.6.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:openui5:1.44.18:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:openui5:1.44.18\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"openui5\",\n      \"Version\": \"1.44.18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ikiwiki:ikiwiki:2.55:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ikiwiki:ikiwiki:2.55\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ikiwiki\",\n      \"Product\": \"ikiwiki\",\n      \"Version\": \"2.55\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:percona:xtrabackup:2.1.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:percona:xtrabackup:2.1.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"percona\",\n      \"Product\": \"xtrabackup\",\n      \"Version\": \"2.1.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libpng:libpng:1.7.0:beta01:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libpng:libpng:1.7.0:beta01\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libpng\",\n      \"Product\": \"libpng\",\n      \"Version\": \"1.7.0\",\n      \"Update\": \"beta01\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kentico:kentico_cms:12.0.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kentico:kentico_cms:12.0.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kentico\",\n      \"Product\": \"kentico_cms\",\n      \"Version\": \"12.0.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:aufs_project:aufs2:2.6.36:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:aufs_project:aufs2:2.6.36:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"aufs_project\",\n      \"Product\": \"aufs2\",\n      \"Version\": \"2.6.36\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnu:libredwg:0.8.1898:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnu:libredwg:0.8.1898\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnu\",\n      \"Product\": \"libredwg\",\n      \"Version\": \"0.8.1898\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:prost_project:prost:0.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:prost_project:prost:0.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"prost_project\",\n      \"Product\": \"prost\",\n      \"Version\": \"0.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mjml:mjml:3.3.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mjml:mjml:3.3.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mjml\",\n      \"Product\": \"mjml\",\n      \"Version\": \"3.3.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dotnetblogengine:blogengine.net:2.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:dotnetblogengine:blogengine.net:2.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dotnetblogengine\",\n      \"Product\": \"blogengine.net\",\n      \"Version\": \"2.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:iij:seil_b1_firmware:3.05:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:iij:seil_b1_firmware:3.05\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"iij\",\n      \"Product\": \"seil_b1_firmware\",\n      \"Version\": \"3.05\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.2.3210:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.2.3210\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.2.3210\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vfbpro:visual_form_builder:3.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:vfbpro:visual_form_builder:3.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vfbpro\",\n      \"Product\": \"visual_form_builder\",\n      \"Version\": \"3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gleamtech:fileultimate:6.5.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gleamtech:fileultimate:6.5.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gleamtech\",\n      \"Product\": \"fileultimate\",\n      \"Version\": \"6.5.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.0132:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.0132\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.0132\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:xeon_e3-1220:6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:xeon_e3-1220:6\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e3-1220\",\n      \"Version\": \"6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:senecajs:seneca:2.0.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:senecajs:seneca:2.0.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"senecajs\",\n      \"Product\": \"seneca\",\n      \"Version\": \"2.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloud_foundry:bosh:263.9.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloud_foundry:bosh:263.9.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloud_foundry\",\n      \"Product\": \"bosh\",\n      \"Version\": \"263.9.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:harpjs:harp:0.11.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:harpjs:harp:0.11.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"harpjs\",\n      \"Product\": \"harp\",\n      \"Version\": \"0.11.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:totvs:fluig:1.7.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:totvs:fluig:1.7.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"totvs\",\n      \"Product\": \"fluig\",\n      \"Version\": \"1.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kramdown_project:kramdown:0.14.1:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:kramdown_project:kramdown:0.14.1::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kramdown_project\",\n      \"Product\": \"kramdown\",\n      \"Version\": \"0.14.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nullsoft:winamp:5.21:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nullsoft:winamp:5.21\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nullsoft\",\n      \"Product\": \"winamp\",\n      \"Version\": \"5.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hibara:attachecase:3.2.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hibara:attachecase:3.2.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hibara\",\n      \"Product\": \"attachecase\",\n      \"Version\": \"3.2.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sumatrapdfreader:sumatrapdf:2.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sumatrapdfreader:sumatrapdf:2.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sumatrapdfreader\",\n      \"Product\": \"sumatrapdf\",\n      \"Version\": \"2.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:owncloud:owncloud:1.1.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:owncloud:owncloud:1.1.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"owncloud\",\n      \"Product\": \"owncloud\",\n      \"Version\": \"1.1.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bundler:bundler:1.14.0:pre2:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:bundler:bundler:1.14.0:pre2:~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bundler\",\n      \"Product\": \"bundler\",\n      \"Version\": \"1.14.0\",\n      \"Update\": \"pre2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cyrus:imap:2.5.15:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cyrus:imap:2.5.15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cyrus\",\n      \"Product\": \"imap\",\n      \"Version\": \"2.5.15\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vaadin:vaadin-menu-bar:2.0.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vaadin:vaadin-menu-bar:2.0.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vaadin\",\n      \"Product\": \"vaadin-menu-bar\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:github:github:2.9.9:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:github:github:2.9.9::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"github\",\n      \"Product\": \"github\",\n      \"Version\": \"2.9.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:tomcat:10.0.0:milestone1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:tomcat:10.0.0:milestone1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"tomcat\",\n      \"Version\": \"10.0.0\",\n      \"Update\": \"milestone1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:dashboard_view:2.12:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:dashboard_view:2.12::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"dashboard_view\",\n      \"Version\": \"2.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:triple-game:triplea:2.0.17114:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:triple-game:triplea:2.0.17114\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"triple-game\",\n      \"Product\": \"triplea\",\n      \"Version\": \"2.0.17114\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:commons_compress:1.13:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:commons_compress:1.13\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"commons_compress\",\n      \"Version\": \"1.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cern:root:5-18-00:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cern:root:5-18-00\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cern\",\n      \"Product\": \"root\",\n      \"Version\": \"5-18-00\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:evolution-ews:3.24.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:evolution-ews:3.24.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"evolution-ews\",\n      \"Version\": \"3.24.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gradle:maven:1.2.3:*:*:*:*:gradle:*:*\",\n    \"cpe-url\": \"cpe:/a:gradle:maven:1.2.3::~~~gradle~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gradle\",\n      \"Product\": \"maven\",\n      \"Version\": \"1.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"gradle\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:contest_gallery:contest_gallery:9.3.8:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:contest_gallery:contest_gallery:9.3.8::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"contest_gallery\",\n      \"Product\": \"contest_gallery\",\n      \"Version\": \"9.3.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:interactivebrokers:ibapi:0.1.9:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:interactivebrokers:ibapi:0.1.9::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"interactivebrokers\",\n      \"Product\": \"ibapi\",\n      \"Version\": \"0.1.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tinyproxy_project:tinyproxy:1.6.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tinyproxy_project:tinyproxy:1.6.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tinyproxy_project\",\n      \"Product\": \"tinyproxy\",\n      \"Version\": \"1.6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tiki:tikiwiki_cms\\\\/groupware:15.4:*:*:*:lts:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tiki:tikiwiki_cms%2fgroupware:15.4::~~lts~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tiki\",\n      \"Product\": \"tikiwiki_cms/groupware\",\n      \"Version\": \"15.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"lts\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sensu:sensu_core:5.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sensu:sensu_core:5.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sensu\",\n      \"Product\": \"sensu_core\",\n      \"Version\": \"5.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:advancestack_10base-t_switching_hub_j3210a:a.03.07:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:advancestack_10base-t_switching_hub_j3210a:a.03.07\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"advancestack_10base-t_switching_hub_j3210a\",\n      \"Version\": \"a.03.07\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:9.0.597.27:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:9.0.597.27\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"9.0.597.27\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:pivotal_cloud_cache:1.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:pivotal_cloud_cache:1.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"pivotal_cloud_cache\",\n      \"Version\": \"1.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:accurev:0.4:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:accurev:0.4::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"accurev\",\n      \"Version\": \"0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:maven:3.5.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:maven:3.5.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"maven\",\n      \"Version\": \"3.5.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:jabber_\\\\(xmpp\\\\)_notifier_and_control:1.9:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:jabber_%28xmpp%29_notifier_and_control:1.9::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"jabber_(xmpp)_notifier_and_control\",\n      \"Version\": \"1.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adaptivecomputing:torque_resource_manager:2.3.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adaptivecomputing:torque_resource_manager:2.3.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adaptivecomputing\",\n      \"Product\": \"torque_resource_manager\",\n      \"Version\": \"2.3.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:26.0.1410.29:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:26.0.1410.29\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"26.0.1410.29\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:samba:samba:4.1.21:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:samba:samba:4.1.21\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"samba\",\n      \"Product\": \"samba\",\n      \"Version\": \"4.1.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kubernetes:kubernetes:1.16.0:alpha0:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kubernetes:kubernetes:1.16.0:alpha0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kubernetes\",\n      \"Product\": \"kubernetes\",\n      \"Version\": \"1.16.0\",\n      \"Update\": \"alpha0\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:python:setuptools:41.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:python:setuptools:41.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"python\",\n      \"Product\": \"setuptools\",\n      \"Version\": \"41.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gitlab:gitlab:12.1.5:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gitlab:gitlab:12.1.5::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gitlab\",\n      \"Product\": \"gitlab\",\n      \"Version\": \"12.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:apple:mac_os_x:11.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:apple:mac_os_x:11.0.1\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"mac_os_x\",\n      \"Version\": \"11.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:osgeo:mapserver:4.2.0:beta2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:osgeo:mapserver:4.2.0:beta2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"osgeo\",\n      \"Product\": \"mapserver\",\n      \"Version\": \"4.2.0\",\n      \"Update\": \"beta2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bitpay:copay_bitcoin_wallet:4.3.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bitpay:copay_bitcoin_wallet:4.3.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bitpay\",\n      \"Product\": \"copay_bitcoin_wallet\",\n      \"Version\": \"4.3.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bayashi:dopvstar\\\\*:0084:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bayashi:dopvstar%2a:0084\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bayashi\",\n      \"Product\": \"dopvstar\\\\*\",\n      \"Version\": \"0084\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:xyzscripts:newsletter_manager:1.1:-:-:*:-:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:xyzscripts:newsletter_manager:1.1:-:~-~-~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"xyzscripts\",\n      \"Product\": \"newsletter_manager\",\n      \"Version\": \"1.1\",\n      \"Update\": \"-\",\n      \"Edition\": \"-\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gitlab:runner:9.0.0:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gitlab:runner:9.0.0:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gitlab\",\n      \"Product\": \"runner\",\n      \"Version\": \"9.0.0\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hygeia_project:hygeia:1.22.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hygeia_project:hygeia:1.22.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hygeia_project\",\n      \"Product\": \"hygeia\",\n      \"Version\": \"1.22.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bit_project:bit:0.5.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bit_project:bit:0.5.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bit_project\",\n      \"Product\": \"bit\",\n      \"Version\": \"0.5.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:freebsd:freebsd:10.2:p2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:freebsd:freebsd:10.2:p2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"freebsd\",\n      \"Product\": \"freebsd\",\n      \"Version\": \"10.2\",\n      \"Update\": \"p2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:grafana:agent:0.20.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:grafana:agent:0.20.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"grafana\",\n      \"Product\": \"agent\",\n      \"Version\": \"0.20.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ubports:unity8:7.84\\\\+14.04.20140314-0ubuntu1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ubports:unity8:7.84%2b14.04.20140314-0ubuntu1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ubports\",\n      \"Product\": \"unity8\",\n      \"Version\": \"7.84+14.04.20140314-0ubuntu1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mozilla:thunderbird:31.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mozilla:thunderbird:31.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mozilla\",\n      \"Product\": \"thunderbird\",\n      \"Version\": \"31.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gonitro:nitro_pro:10.5.9.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gonitro:nitro_pro:10.5.9.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gonitro\",\n      \"Product\": \"nitro_pro\",\n      \"Version\": \"10.5.9.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ntp:ntp:4.2.7:p216:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ntp:ntp:4.2.7:p216\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ntp\",\n      \"Product\": \"ntp\",\n      \"Version\": \"4.2.7\",\n      \"Update\": \"p216\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:xeon_w-2133:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:xeon_w-2133:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_w-2133\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxfoundation:fabric:1.4.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxfoundation:fabric:1.4.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxfoundation\",\n      \"Product\": \"fabric\",\n      \"Version\": \"1.4.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pixar:openusd:18.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pixar:openusd:18.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pixar\",\n      \"Product\": \"openusd\",\n      \"Version\": \"18.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ays-pro:quiz_maker:5.4.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ays-pro:quiz_maker:5.4.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ays-pro\",\n      \"Product\": \"quiz_maker\",\n      \"Version\": \"5.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpfastestcache:wp_fastest_cache:0.7.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpfastestcache:wp_fastest_cache:0.7.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpfastestcache\",\n      \"Product\": \"wp_fastest_cache\",\n      \"Version\": \"0.7.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:unified_computing_system_central_software:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:unified_computing_system_central_software:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"unified_computing_system_central_software\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nttdocomo:spmode_mail_android:5000:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nttdocomo:spmode_mail_android:5000\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nttdocomo\",\n      \"Product\": \"spmode_mail_android\",\n      \"Version\": \"5000\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:swi-prolog:swi-prolog:7.1.32:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:swi-prolog:swi-prolog:7.1.32\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"swi-prolog\",\n      \"Product\": \"swi-prolog\",\n      \"Version\": \"7.1.32\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:facebook:react:16.7.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:facebook:react:16.7.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"facebook\",\n      \"Product\": \"react\",\n      \"Version\": \"16.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:intel:xeon_e3:x3480:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:intel:xeon_e3:x3480\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e3\",\n      \"Version\": \"x3480\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vips:vips:7.11.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vips:vips:7.11.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vips\",\n      \"Product\": \"vips\",\n      \"Version\": \"7.11.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libpng:libpng:1.6.17:beta01:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libpng:libpng:1.6.17:beta01\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libpng\",\n      \"Product\": \"libpng\",\n      \"Version\": \"1.6.17\",\n      \"Update\": \"beta01\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:smartbear:swagger-ui:3.6.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:smartbear:swagger-ui:3.6.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"smartbear\",\n      \"Product\": \"swagger-ui\",\n      \"Version\": \"3.6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:1up:oneupuploaderbundle:0.9.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:1up:oneupuploaderbundle:0.9.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"1up\",\n      \"Product\": \"oneupuploaderbundle\",\n      \"Version\": \"0.9.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:lenovo:v310-15isk:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:lenovo:v310-15isk:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"lenovo\",\n      \"Product\": \"v310-15isk\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mozilla:thunderbird:3.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mozilla:thunderbird:3.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mozilla\",\n      \"Product\": \"thunderbird\",\n      \"Version\": \"3.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wp-dbmanager_project:wp-dbmanager:2.79:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wp-dbmanager_project:wp-dbmanager:2.79::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wp-dbmanager_project\",\n      \"Product\": \"wp-dbmanager\",\n      \"Version\": \"2.79\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apereo:opencast:1.4.2:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apereo:opencast:1.4.2:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apereo\",\n      \"Product\": \"opencast\",\n      \"Version\": \"1.4.2\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nette:latte:2.6.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nette:latte:2.6.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nette\",\n      \"Product\": \"latte\",\n      \"Version\": \"2.6.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:docker:engine:17.03.2:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:docker:engine:17.03.2:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"docker\",\n      \"Product\": \"engine\",\n      \"Version\": \"17.03.2\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudflare:octopki:1.1.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudflare:octopki:1.1.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudflare\",\n      \"Product\": \"octopki\",\n      \"Version\": \"1.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bestit:amazon_pay:7.0.1:*:*:*:*:shopware:*:*\",\n    \"cpe-url\": \"cpe:/a:bestit:amazon_pay:7.0.1::~~~shopware~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bestit\",\n      \"Product\": \"amazon_pay\",\n      \"Version\": \"7.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"shopware\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:otrs:otrs:3.0.0:beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:otrs:otrs:3.0.0:beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"otrs\",\n      \"Product\": \"otrs\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libaacplus_project:libaacplus:1.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libaacplus_project:libaacplus:1.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libaacplus_project\",\n      \"Product\": \"libaacplus\",\n      \"Version\": \"1.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ammonia_project:ammonia:2.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ammonia_project:ammonia:2.0.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ammonia_project\",\n      \"Product\": \"ammonia\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:transloadit:uppy:0.28.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:transloadit:uppy:0.28.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"transloadit\",\n      \"Product\": \"uppy\",\n      \"Version\": \"0.28.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mit:kerberos:5-1.14:alpha1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mit:kerberos:5-1.14:alpha1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mit\",\n      \"Product\": \"kerberos\",\n      \"Version\": \"5-1.14\",\n      \"Update\": \"alpha1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:libvirt:0.4.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:libvirt:0.4.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"libvirt\",\n      \"Version\": \"0.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:itextpdf:itext:1.3.5:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:itextpdf:itext:1.3.5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"itextpdf\",\n      \"Product\": \"itext\",\n      \"Version\": \"1.3.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:strapi:strapi:3.0.0:beta15:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:strapi:strapi:3.0.0:beta15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"strapi\",\n      \"Product\": \"strapi\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"beta15\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:microsoft:windows_server_2008:-:sp2:hpc:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:microsoft:windows_server_2008:-:sp2:hpc\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"windows_server_2008\",\n      \"Version\": \"-\",\n      \"Update\": \"sp2\",\n      \"Edition\": \"hpc\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:slf4j:slf4j-api:1.7.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:slf4j:slf4j-api:1.7.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"slf4j\",\n      \"Product\": \"slf4j-api\",\n      \"Version\": \"1.7.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oracle:e-business_suite_technology_stack:12.1.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oracle:e-business_suite_technology_stack:12.1.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oracle\",\n      \"Product\": \"e-business_suite_technology_stack\",\n      \"Version\": \"12.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:webfactoryltd:wp_reset_pro:5.81:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:webfactoryltd:wp_reset_pro:5.81::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"webfactoryltd\",\n      \"Product\": \"wp_reset_pro\",\n      \"Version\": \"5.81\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:docsifyjs:docsify:1.7.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:docsifyjs:docsify:1.7.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"docsifyjs\",\n      \"Product\": \"docsify\",\n      \"Version\": \"1.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:hp:envy_photo_7800_k7s00a_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:hp:envy_photo_7800_k7s00a_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"envy_photo_7800_k7s00a_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zoom:zoom:4.4.55387.0716:*:*:*:*:mac_os:*:*\",\n    \"cpe-url\": \"cpe:/a:zoom:zoom:4.4.55387.0716::~~~mac_os~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zoom\",\n      \"Product\": \"zoom\",\n      \"Version\": \"4.4.55387.0716\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"mac_os\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wesnoth:the_battle_for_wesnoth:0.8.5:rc5:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wesnoth:the_battle_for_wesnoth:0.8.5:rc5\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wesnoth\",\n      \"Product\": \"the_battle_for_wesnoth\",\n      \"Version\": \"0.8.5\",\n      \"Update\": \"rc5\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:fortinet:fortios:6.0.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:fortinet:fortios:6.0.3\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"fortinet\",\n      \"Product\": \"fortios\",\n      \"Version\": \"6.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:processing:processing:2.0:beta4:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:processing:processing:2.0:beta4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"processing\",\n      \"Product\": \"processing\",\n      \"Version\": \"2.0\",\n      \"Update\": \"beta4\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:epson:px-m7050fp_firmware:2017-10-13:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:epson:px-m7050fp_firmware:2017-10-13\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"epson\",\n      \"Product\": \"px-m7050fp_firmware\",\n      \"Version\": \"2017-10-13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ntp:ntp:4.2.8:p1_beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ntp:ntp:4.2.8:p1_beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ntp\",\n      \"Product\": \"ntp\",\n      \"Version\": \"4.2.8\",\n      \"Update\": \"p1_beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:easycorp:zentao:13.0:beta4:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:easycorp:zentao:13.0:beta4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"easycorp\",\n      \"Product\": \"zentao\",\n      \"Version\": \"13.0\",\n      \"Update\": \"beta4\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:git-annex_project:git-annex:6.20160229:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:git-annex_project:git-annex:6.20160229\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"git-annex_project\",\n      \"Product\": \"git-annex\",\n      \"Version\": \"6.20160229\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:delivery_pipeline:0.7.5:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:delivery_pipeline:0.7.5::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"delivery_pipeline\",\n      \"Version\": \"0.7.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hp:c4100_help:70.0.231.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hp:c4100_help:70.0.231.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"c4100_help\",\n      \"Version\": \"70.0.231.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apple:cups:1.5.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apple:cups:1.5.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"cups\",\n      \"Version\": \"1.5.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:google_compute_engine:1.0.7:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:google_compute_engine:1.0.7::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"google_compute_engine\",\n      \"Version\": \"1.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:support-project:knowledge:1.6.0:pre4:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:support-project:knowledge:1.6.0:pre4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"support-project\",\n      \"Product\": \"knowledge\",\n      \"Version\": \"1.6.0\",\n      \"Update\": \"pre4\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gitlab:gitlab:13.6.1:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gitlab:gitlab:13.6.1::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gitlab\",\n      \"Product\": \"gitlab\",\n      \"Version\": \"13.6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openmage:magento:1.9.1.1:*:*:*:lts:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openmage:magento:1.9.1.1::~~lts~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openmage\",\n      \"Product\": \"magento\",\n      \"Version\": \"1.9.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"lts\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:socket:engine.io-client:1.8.2:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:socket:engine.io-client:1.8.2::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"socket\",\n      \"Product\": \"engine.io-client\",\n      \"Version\": \"1.8.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:b2evolution:b2evolution_cms:6.5.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:b2evolution:b2evolution_cms:6.5.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"b2evolution\",\n      \"Product\": \"b2evolution_cms\",\n      \"Version\": \"6.5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:linuxfoundation:harbor:2.1.0:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:linuxfoundation:harbor:2.1.0:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"linuxfoundation\",\n      \"Product\": \"harbor\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wekan_project:wekan:3.76:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wekan_project:wekan:3.76\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wekan_project\",\n      \"Product\": \"wekan\",\n      \"Version\": \"3.76\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:novell:edirectory:8.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:novell:edirectory:8.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"novell\",\n      \"Product\": \"edirectory\",\n      \"Version\": \"8.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnu:emacs:19.31:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnu:emacs:19.31\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnu\",\n      \"Product\": \"emacs\",\n      \"Version\": \"19.31\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vips:vips:7.7.14:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vips:vips:7.7.14\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vips\",\n      \"Product\": \"vips\",\n      \"Version\": \"7.7.14\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:hp:cq183a_firmware:1828b:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:hp:cq183a_firmware:1828b\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"cq183a_firmware\",\n      \"Version\": \"1828b\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:editor-core:118.0.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:editor-core:118.0.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"editor-core\",\n      \"Version\": \"118.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:lilypond:lilypond:2.19.44:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:lilypond:lilypond:2.19.44\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"lilypond\",\n      \"Product\": \"lilypond\",\n      \"Version\": \"2.19.44\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openstack:tripleo_heat_templates:6.2.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openstack:tripleo_heat_templates:6.2.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openstack\",\n      \"Product\": \"tripleo_heat_templates\",\n      \"Version\": \"6.2.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oracle:fusion_middleware:11.1.1.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oracle:fusion_middleware:11.1.1.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oracle\",\n      \"Product\": \"fusion_middleware\",\n      \"Version\": \"11.1.1.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tripleplay:onelan_cms:2.0.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tripleplay:onelan_cms:2.0.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tripleplay\",\n      \"Product\": \"onelan_cms\",\n      \"Version\": \"2.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:portainer:portainer:1.15.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:portainer:portainer:1.15.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"portainer\",\n      \"Product\": \"portainer\",\n      \"Version\": \"1.15.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:firefly-iii:firefly_iii:5.2.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:firefly-iii:firefly_iii:5.2.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"firefly-iii\",\n      \"Product\": \"firefly_iii\",\n      \"Version\": \"5.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:getkirby:kirby:2.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:getkirby:kirby:2.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"getkirby\",\n      \"Product\": \"kirby\",\n      \"Version\": \"2.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:auth0:auth0.js:9.3.2:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:auth0:auth0.js:9.3.2::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"auth0\",\n      \"Product\": \"auth0.js\",\n      \"Version\": \"9.3.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:spring_integration:4.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:spring_integration:4.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"spring_integration\",\n      \"Version\": \"4.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:btcpayserver:btcpayserver:1.0.1.38:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:btcpayserver:btcpayserver:1.0.1.38\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"btcpayserver\",\n      \"Product\": \"btcpayserver\",\n      \"Version\": \"1.0.1.38\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:octobercms:october:1.0.73:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:octobercms:october:1.0.73\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"octobercms\",\n      \"Product\": \"october\",\n      \"Version\": \"1.0.73\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ceph:ceph-ansible:4.0.34.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ceph:ceph-ansible:4.0.34.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ceph\",\n      \"Product\": \"ceph-ansible\",\n      \"Version\": \"4.0.34.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:cisco:asr_920-12sz-im_r:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:cisco:asr_920-12sz-im_r:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"asr_920-12sz-im_r\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apple:quicktime:7.3.0:-:mac:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apple:quicktime:7.3.0:-:mac\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"quicktime\",\n      \"Version\": \"7.3.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"mac\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openpgpjs:openpgpjs:3.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openpgpjs:openpgpjs:3.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openpgpjs\",\n      \"Product\": \"openpgpjs\",\n      \"Version\": \"3.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:electronjs:electron:11.0.0:beta15:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:electronjs:electron:11.0.0:beta15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"electronjs\",\n      \"Product\": \"electron\",\n      \"Version\": \"11.0.0\",\n      \"Update\": \"beta15\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:invensys:wonderware_application_server:2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:invensys:wonderware_application_server:2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"invensys\",\n      \"Product\": \"wonderware_application_server\",\n      \"Version\": \"2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:contest_gallery:contest_gallery:1.18:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:contest_gallery:contest_gallery:1.18::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"contest_gallery\",\n      \"Product\": \"contest_gallery\",\n      \"Version\": \"1.18\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pajbot_project:pajbot:1.49:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pajbot_project:pajbot:1.49\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pajbot_project\",\n      \"Product\": \"pajbot\",\n      \"Version\": \"1.49\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:iobroker:iobroker.admin:3.5.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:iobroker:iobroker.admin:3.5.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"iobroker\",\n      \"Product\": \"iobroker.admin\",\n      \"Version\": \"3.5.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:maximo_for_oil_and_gas:7.5.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:maximo_for_oil_and_gas:7.5.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"maximo_for_oil_and_gas\",\n      \"Version\": \"7.5.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:firepower_management_center_firmware:6.0.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:firepower_management_center_firmware:6.0.0.0\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"firepower_management_center_firmware\",\n      \"Version\": \"6.0.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adobe:acrobat_reader_dc:15.000.0000:*:*:*:classic:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adobe:acrobat_reader_dc:15.000.0000::~~classic~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adobe\",\n      \"Product\": \"acrobat_reader_dc\",\n      \"Version\": \"15.000.0000\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"classic\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:node-postgres:pg:0.10.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:node-postgres:pg:0.10.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"node-postgres\",\n      \"Product\": \"pg\",\n      \"Version\": \"0.10.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:infolific:real-time_find_and_replace:4.0.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:infolific:real-time_find_and_replace:4.0.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"infolific\",\n      \"Product\": \"real-time_find_and_replace\",\n      \"Version\": \"4.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:asyncos:11.1:hot_patch2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:asyncos:11.1:hot_patch2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"asyncos\",\n      \"Version\": \"11.1\",\n      \"Update\": \"hot_patch2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:nx-os:7.0\\\\(3\\\\)i3\\\\(0.170\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:nx-os:7.0%283%29i3%280.170%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"nx-os\",\n      \"Version\": \"7.0(3)i3(0.170)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:skype:skype:3.0.0.198:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:skype:skype:3.0.0.198\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"skype\",\n      \"Product\": \"skype\",\n      \"Version\": \"3.0.0.198\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:gui:7.70:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:gui:7.70:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"gui\",\n      \"Version\": \"7.70\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:0231a65t:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:0231a65t:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"0231a65t\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:progress:mixlib-archive:1.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:progress:mixlib-archive:1.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"progress\",\n      \"Product\": \"mixlib-archive\",\n      \"Version\": \"1.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tuxfamily:chrony:1.28:pre1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tuxfamily:chrony:1.28:pre1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tuxfamily\",\n      \"Product\": \"chrony\",\n      \"Version\": \"1.28\",\n      \"Update\": \"pre1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:custom_search_project:custom_search:6.x-1.10:*:*:*:*:drupal:*:*\",\n    \"cpe-url\": \"cpe:/a:custom_search_project:custom_search:6.x-1.10::~~~drupal~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"custom_search_project\",\n      \"Product\": \"custom_search\",\n      \"Version\": \"6.x-1.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"drupal\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dpl:product_feed_on_woocommerce_for_google\\\\,_awin\\\\,_shareasale\\\\,_bing\\\\,_and_more:3.5.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:dpl:product_feed_on_woocommerce_for_google%2c_awin%2c_shareasale%2c_bing%2c_and_more:3.5.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dpl\",\n      \"Product\": \"product_feed_on_woocommerce_for_google,_awin,_shareasale,_bing,_and_more\",\n      \"Version\": \"3.5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:pureapplication_system:2.1.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:pureapplication_system:2.1.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"pureapplication_system\",\n      \"Version\": \"2.1.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:traefik:traefik:2.3.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:traefik:traefik:2.3.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"traefik\",\n      \"Product\": \"traefik\",\n      \"Version\": \"2.3.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.3.662:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.3.662\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.3.662\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:i-doit:i-doit:1.10.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:i-doit:i-doit:1.10.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"i-doit\",\n      \"Product\": \"i-doit\",\n      \"Version\": \"1.10.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:supsystic:photo_gallery:1.2.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:supsystic:photo_gallery:1.2.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"supsystic\",\n      \"Product\": \"photo_gallery\",\n      \"Version\": \"1.2.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:elastic:kibana:1.0.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:elastic:kibana:1.0.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"elastic\",\n      \"Product\": \"kibana\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tgstation13:tgstation-server:4.0.1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tgstation13:tgstation-server:4.0.1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tgstation13\",\n      \"Product\": \"tgstation-server\",\n      \"Version\": \"4.0.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:2checkout:ithemes_2checkout:-:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:2checkout:ithemes_2checkout:-::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"2checkout\",\n      \"Product\": \"ithemes_2checkout\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dbd-mysql_project:dbd-mysql:4.022:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:dbd-mysql_project:dbd-mysql:4.022\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dbd-mysql_project\",\n      \"Product\": \"dbd-mysql\",\n      \"Version\": \"4.022\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jruby:jruby:1.5.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jruby:jruby:1.5.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jruby\",\n      \"Product\": \"jruby\",\n      \"Version\": \"1.5.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:alchemy-cms:alchemy_cms:3.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:alchemy-cms:alchemy_cms:3.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"alchemy-cms\",\n      \"Product\": \"alchemy_cms\",\n      \"Version\": \"3.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rankmath:seo:1.0.9:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:rankmath:seo:1.0.9::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rankmath\",\n      \"Product\": \"seo\",\n      \"Version\": \"1.0.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:media_library_assistant_project:media_library_assistant:2.54:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:media_library_assistant_project:media_library_assistant:2.54::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"media_library_assistant_project\",\n      \"Product\": \"media_library_assistant\",\n      \"Version\": \"2.54\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:theforeman:katello:0.1.209-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:theforeman:katello:0.1.209-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"theforeman\",\n      \"Product\": \"katello\",\n      \"Version\": \"0.1.209-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fancybox_project:fancybox:3.0.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:fancybox_project:fancybox:3.0.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fancybox_project\",\n      \"Product\": \"fancybox\",\n      \"Version\": \"3.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wp_domain_redirect_project:wp_domain_redirect:1.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wp_domain_redirect_project:wp_domain_redirect:1.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wp_domain_redirect_project\",\n      \"Product\": \"wp_domain_redirect\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:xen-orchestra:xen_orchestra_server:5.10.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:xen-orchestra:xen_orchestra_server:5.10.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"xen-orchestra\",\n      \"Product\": \"xen_orchestra_server\",\n      \"Version\": \"5.10.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:databaseschemaviewer_project:dbschemareader:2.7.4.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:databaseschemaviewer_project:dbschemareader:2.7.4.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"databaseschemaviewer_project\",\n      \"Product\": \"dbschemareader\",\n      \"Version\": \"2.7.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:intel:converged_security_and_manageability_engine:11.22.86:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:intel:converged_security_and_manageability_engine:11.22.86\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"converged_security_and_manageability_engine\",\n      \"Version\": \"11.22.86\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fujitsu:interstage_application_server:9.1.0:*:*:*:enterprise:*:*:*\",\n    \"cpe-url\": \"cpe:/a:fujitsu:interstage_application_server:9.1.0::~~enterprise~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fujitsu\",\n      \"Product\": \"interstage_application_server\",\n      \"Version\": \"9.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"enterprise\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libinfinity_project:libinfinity:0.5.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libinfinity_project:libinfinity:0.5.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libinfinity_project\",\n      \"Product\": \"libinfinity\",\n      \"Version\": \"0.5.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:macpaw:cleanmymac_x:3.8.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:macpaw:cleanmymac_x:3.8.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"macpaw\",\n      \"Product\": \"cleanmymac_x\",\n      \"Version\": \"3.8.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pacman_project:pacman:3.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pacman_project:pacman:3.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pacman_project\",\n      \"Product\": \"pacman\",\n      \"Version\": \"3.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:tensorflow:2.1.0:-:*:*:lite:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:tensorflow:2.1.0:-:~~lite~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"tensorflow\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"lite\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apple:apple_application_support:1.4.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apple:apple_application_support:1.4.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"apple_application_support\",\n      \"Version\": \"1.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:schneider-electric:bmep582040s_firmware:2.90:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:schneider-electric:bmep582040s_firmware:2.90\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"schneider-electric\",\n      \"Product\": \"bmep582040s_firmware\",\n      \"Version\": \"2.90\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:morequick:greenbrowser:6.1.0117:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:morequick:greenbrowser:6.1.0117\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"morequick\",\n      \"Product\": \"greenbrowser\",\n      \"Version\": \"6.1.0117\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:freebsd:freebsd:9.3:p43:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:freebsd:freebsd:9.3:p43\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"freebsd\",\n      \"Product\": \"freebsd\",\n      \"Version\": \"9.3\",\n      \"Update\": \"p43\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:yamaha:rtv700:8.00.81:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:yamaha:rtv700:8.00.81\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"yamaha\",\n      \"Product\": \"rtv700\",\n      \"Version\": \"8.00.81\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:trihedral:vtscada:11.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:trihedral:vtscada:11.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"trihedral\",\n      \"Product\": \"vtscada\",\n      \"Version\": \"11.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnome:gtk:0.99.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnome:gtk:0.99.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnome\",\n      \"Product\": \"gtk\",\n      \"Version\": \"0.99.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:qpdf_project:qpdf:2.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:qpdf_project:qpdf:2.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"qpdf_project\",\n      \"Product\": \"qpdf\",\n      \"Version\": \"2.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:klibc_project:klibc:0.121:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:klibc_project:klibc:0.121\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"klibc_project\",\n      \"Product\": \"klibc\",\n      \"Version\": \"0.121\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kunena:kunena:4.0.4:*:*:*:*:joomla\\\\!:*:*\",\n    \"cpe-url\": \"cpe:/a:kunena:kunena:4.0.4::~~~joomla%21~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kunena\",\n      \"Product\": \"kunena\",\n      \"Version\": \"4.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"joomla!\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:tp-link:tl-wr840n_firmware:3.13.27:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:tp-link:tl-wr840n_firmware:3.13.27\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"tp-link\",\n      \"Product\": \"tl-wr840n_firmware\",\n      \"Version\": \"3.13.27\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:slf4j:slf4j-jdk14:1.6.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:slf4j:slf4j-jdk14:1.6.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"slf4j\",\n      \"Product\": \"slf4j-jdk14\",\n      \"Version\": \"1.6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nextscripts:social_networks_auto_poster:4.2.0:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:nextscripts:social_networks_auto_poster:4.2.0::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nextscripts\",\n      \"Product\": \"social_networks_auto_poster\",\n      \"Version\": \"4.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:koha:koha:16.05.03:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:koha:koha:16.05.03\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"koha\",\n      \"Product\": \"koha\",\n      \"Version\": \"16.05.03\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:opennms:opennms:25.2.1-1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:opennms:opennms:25.2.1-1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"opennms\",\n      \"Product\": \"opennms\",\n      \"Version\": \"25.2.1-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:formidableforms:formidable:3.03.01:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:formidableforms:formidable:3.03.01::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"formidableforms\",\n      \"Product\": \"formidable\",\n      \"Version\": \"3.03.01\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:lftp_project:lftp:2.4.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:lftp_project:lftp:2.4.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"lftp_project\",\n      \"Product\": \"lftp\",\n      \"Version\": \"2.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:bitcoin:bitcoin:0.13.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:bitcoin:bitcoin:0.13.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"bitcoin\",\n      \"Product\": \"bitcoin\",\n      \"Version\": \"0.13.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:groovy:3.0.0:alpha1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:groovy:3.0.0:alpha1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"groovy\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"alpha1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phoenix_media_rename_project:phoenix_media_rename:2.0.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:phoenix_media_rename_project:phoenix_media_rename:2.0.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phoenix_media_rename_project\",\n      \"Product\": \"phoenix_media_rename\",\n      \"Version\": \"2.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pivotal_software:operations_manager:1.12.20:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pivotal_software:operations_manager:1.12.20\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pivotal_software\",\n      \"Product\": \"operations_manager\",\n      \"Version\": \"1.12.20\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phpcheckz:phpcheckz:0.4.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:phpcheckz:phpcheckz:0.4.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phpcheckz\",\n      \"Product\": \"phpcheckz\",\n      \"Version\": \"0.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudfoundry:credhub:1.9.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudfoundry:credhub:1.9.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudfoundry\",\n      \"Product\": \"credhub\",\n      \"Version\": \"1.9.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gleamtech:filevista:5.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gleamtech:filevista:5.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gleamtech\",\n      \"Product\": \"filevista\",\n      \"Version\": \"5.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openvcloud_project:openvcloud:2.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openvcloud_project:openvcloud:2.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openvcloud_project\",\n      \"Product\": \"openvcloud\",\n      \"Version\": \"2.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpseeds:wp_database_backup:5.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpseeds:wp_database_backup:5.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpseeds\",\n      \"Product\": \"wp_database_backup\",\n      \"Version\": \"5.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:owasp:owasp_modsecurity_core_rule_set:3.0.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:owasp:owasp_modsecurity_core_rule_set:3.0.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"owasp\",\n      \"Product\": \"owasp_modsecurity_core_rule_set\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:four_kitchens:block_class:7.x-2.x:dev:*:*:*:drupal:*:*\",\n    \"cpe-url\": \"cpe:/a:four_kitchens:block_class:7.x-2.x:dev:~~~drupal~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"four_kitchens\",\n      \"Product\": \"block_class\",\n      \"Version\": \"7.x-2.x\",\n      \"Update\": \"dev\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"drupal\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mediacoderhq:mediacoder:0.8.5800:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mediacoderhq:mediacoder:0.8.5800\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mediacoderhq\",\n      \"Product\": \"mediacoder\",\n      \"Version\": \"0.8.5800\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:minimagick_project:minimagick:4.7.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:minimagick_project:minimagick:4.7.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"minimagick_project\",\n      \"Product\": \"minimagick\",\n      \"Version\": \"4.7.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phpmyadmin:phpmyadmin:4.1.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:phpmyadmin:phpmyadmin:4.1.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phpmyadmin\",\n      \"Product\": \"phpmyadmin\",\n      \"Version\": \"4.1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:logitech:harmony_hub:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:logitech:harmony_hub:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"logitech\",\n      \"Product\": \"harmony_hub\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:ecessa:shieldlink_sl175ehq_firmware:8.0.19:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:ecessa:shieldlink_sl175ehq_firmware:8.0.19\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"ecessa\",\n      \"Product\": \"shieldlink_sl175ehq_firmware\",\n      \"Version\": \"8.0.19\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:octopus:octopus_deploy:2018.12.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:octopus:octopus_deploy:2018.12.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"octopus\",\n      \"Product\": \"octopus_deploy\",\n      \"Version\": \"2018.12.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:alpinelinux:abuild:2.27.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:alpinelinux:abuild:2.27.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"alpinelinux\",\n      \"Product\": \"abuild\",\n      \"Version\": \"2.27.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:amazon:freertos:1.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:amazon:freertos:1.2.0\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"amazon\",\n      \"Product\": \"freertos\",\n      \"Version\": \"1.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:microsoft:systems_management_server:1.2:sp3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:microsoft:systems_management_server:1.2:sp3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"systems_management_server\",\n      \"Version\": \"1.2\",\n      \"Update\": \"sp3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netty:netty:4.1.15:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netty:netty:4.1.15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netty\",\n      \"Product\": \"netty\",\n      \"Version\": \"4.1.15\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ntp:ntp:4.0.97:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ntp:ntp:4.0.97\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ntp\",\n      \"Product\": \"ntp\",\n      \"Version\": \"4.0.97\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:spss_statistics:24.0.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:spss_statistics:24.0.0.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"spss_statistics\",\n      \"Version\": \"24.0.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fenrir-inc:sleipnir_mobile:2.1.0:*:*:*:-:android:*:*\",\n    \"cpe-url\": \"cpe:/a:fenrir-inc:sleipnir_mobile:2.1.0::~~-~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fenrir-inc\",\n      \"Product\": \"sleipnir_mobile\",\n      \"Version\": \"2.1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:phoenixcontact:fl_switch_4008t-2gt-3fx_sm_firmware:1.21:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:phoenixcontact:fl_switch_4008t-2gt-3fx_sm_firmware:1.21\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"phoenixcontact\",\n      \"Product\": \"fl_switch_4008t-2gt-3fx_sm_firmware\",\n      \"Version\": \"1.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wp_svg_icons_project:wp_svg_icons:3.1.8.4:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wp_svg_icons_project:wp_svg_icons:3.1.8.4::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wp_svg_icons_project\",\n      \"Product\": \"wp_svg_icons\",\n      \"Version\": \"3.1.8.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:facebook:hiphop_virtual_machine:3.13.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:facebook:hiphop_virtual_machine:3.13.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"facebook\",\n      \"Product\": \"hiphop_virtual_machine\",\n      \"Version\": \"3.13.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jetbrains:kotlin:1.4.0:dev458:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:jetbrains:kotlin:1.4.0:dev458\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jetbrains\",\n      \"Product\": \"kotlin\",\n      \"Version\": \"1.4.0\",\n      \"Update\": \"dev458\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:linux:linux_kernel:2.6.13.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:linux:linux_kernel:2.6.13.2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"linux\",\n      \"Product\": \"linux_kernel\",\n      \"Version\": \"2.6.13.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:chef:chef:14.0.217:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:chef:chef:14.0.217\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"chef\",\n      \"Product\": \"chef\",\n      \"Version\": \"14.0.217\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:get-simple:getsimple_cms:3.3.14:b1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:get-simple:getsimple_cms:3.3.14:b1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"get-simple\",\n      \"Product\": \"getsimple_cms\",\n      \"Version\": \"3.3.14\",\n      \"Update\": \"b1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tcl:tcl:8.4.16:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tcl:tcl:8.4.16\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tcl\",\n      \"Product\": \"tcl\",\n      \"Version\": \"8.4.16\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gogs:gogs:0.6.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gogs:gogs:0.6.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gogs\",\n      \"Product\": \"gogs\",\n      \"Version\": \"0.6.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:postsrsd_prject:postsrsd:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:postsrsd_prject:postsrsd:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"postsrsd_prject\",\n      \"Product\": \"postsrsd\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:axis:c8033_firmware:1.81.040.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:axis:c8033_firmware:1.81.040.1\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"axis\",\n      \"Product\": \"c8033_firmware\",\n      \"Version\": \"1.81.040.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:huawei:mate_10_pro_firmware:bla-l29_8.0.0.148\\\\(c432\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:huawei:mate_10_pro_firmware:bla-l29_8.0.0.148%28c432%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"mate_10_pro_firmware\",\n      \"Version\": \"bla-l29_8.0.0.148(c432)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:netsarang:xshell:7:build_0065:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:netsarang:xshell:7:build_0065\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"netsarang\",\n      \"Product\": \"xshell\",\n      \"Version\": \"7\",\n      \"Update\": \"build_0065\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpdatatables:wpdatatables:2.0.16:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpdatatables:wpdatatables:2.0.16::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpdatatables\",\n      \"Product\": \"wpdatatables\",\n      \"Version\": \"2.0.16\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:clusterlabs:pacemaker:2.0.2:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:clusterlabs:pacemaker:2.0.2:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"clusterlabs\",\n      \"Product\": \"pacemaker\",\n      \"Version\": \"2.0.2\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:swi-prolog:swi-prolog:5.4.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:swi-prolog:swi-prolog:5.4.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"swi-prolog\",\n      \"Product\": \"swi-prolog\",\n      \"Version\": \"5.4.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wftpserver:wing_ftp_server:3.9.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wftpserver:wing_ftp_server:3.9.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wftpserver\",\n      \"Product\": \"wing_ftp_server\",\n      \"Version\": \"3.9.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpplugin:accept_donations_with_paypal:1.2.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpplugin:accept_donations_with_paypal:1.2.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpplugin\",\n      \"Product\": \"accept_donations_with_paypal\",\n      \"Version\": \"1.2.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:abcm2ps_project:abcm2ps:8.14.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:abcm2ps_project:abcm2ps:8.14.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"abcm2ps_project\",\n      \"Product\": \"abcm2ps\",\n      \"Version\": \"8.14.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:episerver:ektron_cms:8.00:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:episerver:ektron_cms:8.00:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"episerver\",\n      \"Product\": \"ektron_cms\",\n      \"Version\": \"8.00\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:laserjet_managed_e85055_t3u51a:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:laserjet_managed_e85055_t3u51a:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"laserjet_managed_e85055_t3u51a\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wallabag:wallabag:2.0.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wallabag:wallabag:2.0.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wallabag\",\n      \"Product\": \"wallabag\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:google:chrome:13.0.752.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:google:chrome:13.0.752.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"google\",\n      \"Product\": \"chrome\",\n      \"Version\": \"13.0.752.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:xeon_e5-2430_v2_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:xeon_e5-2430_v2_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e5-2430_v2_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:url-parse_project:url-parse:1.4.3:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:url-parse_project:url-parse:1.4.3::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"url-parse_project\",\n      \"Product\": \"url-parse\",\n      \"Version\": \"1.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:crear.ne.jp:al-mail32:1.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:crear.ne.jp:al-mail32:1.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"crear.ne.jp\",\n      \"Product\": \"al-mail32\",\n      \"Version\": \"1.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:triplea-game:triplea:1.9.0.0.12537:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:triplea-game:triplea:1.9.0.0.12537\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"triplea-game\",\n      \"Product\": \"triplea\",\n      \"Version\": \"1.9.0.0.12537\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:yithemes:yith_woocommerce_request_a_quote:1.6.2:*:*:*:premium:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:yithemes:yith_woocommerce_request_a_quote:1.6.2::~~premium~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"yithemes\",\n      \"Product\": \"yith_woocommerce_request_a_quote\",\n      \"Version\": \"1.6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"premium\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:eucalyptus:eucalyptus:3.0.0:beta2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:eucalyptus:eucalyptus:3.0.0:beta2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"eucalyptus\",\n      \"Product\": \"eucalyptus\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"beta2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:strategy11:formidable_form_builder:4.0.03:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:strategy11:formidable_form_builder:4.0.03::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"strategy11\",\n      \"Product\": \"formidable_form_builder\",\n      \"Version\": \"4.0.03\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:dhcpcd_project:dhcpcd:6.9.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:dhcpcd_project:dhcpcd:6.9.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"dhcpcd_project\",\n      \"Product\": \"dhcpcd\",\n      \"Version\": \"6.9.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rocket.chat:rocket.chat:3.4.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rocket.chat:rocket.chat:3.4.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rocket.chat\",\n      \"Product\": \"rocket.chat\",\n      \"Version\": \"3.4.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:fujitsu:m12-2_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:fujitsu:m12-2_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"fujitsu\",\n      \"Product\": \"m12-2_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:hp:proliant_bl460c_firmware:2.20:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:hp:proliant_bl460c_firmware:2.20\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"proliant_bl460c_firmware\",\n      \"Version\": \"2.20\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openjsf:express:4.11.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:openjsf:express:4.11.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openjsf\",\n      \"Product\": \"express\",\n      \"Version\": \"4.11.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:huawei:usg2220bsr_firmware:v300r001c00:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:huawei:usg2220bsr_firmware:v300r001c00\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"usg2220bsr_firmware\",\n      \"Version\": \"v300r001c00\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:10web:photo_gallery:1.3.67:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:10web:photo_gallery:1.3.67::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"10web\",\n      \"Product\": \"photo_gallery\",\n      \"Version\": \"1.3.67\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:express-gateway:express-gateway_docker_image:1.16.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:express-gateway:express-gateway_docker_image:1.16.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"express-gateway\",\n      \"Product\": \"express-gateway_docker_image\",\n      \"Version\": \"1.16.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:zyxel:gs1900-24ep:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:zyxel:gs1900-24ep:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"zyxel\",\n      \"Product\": \"gs1900-24ep\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:llvm:compiler:2.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:llvm:compiler:2.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"llvm\",\n      \"Product\": \"compiler\",\n      \"Version\": \"2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:qos:logback:0.9.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:qos:logback:0.9.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"qos\",\n      \"Product\": \"logback\",\n      \"Version\": \"0.9.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:openui5:1.63.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:openui5:1.63.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"openui5\",\n      \"Version\": \"1.63.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sugarcrm:sugarcrm:6.5.8:*:*:*:community:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sugarcrm:sugarcrm:6.5.8::~~community~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sugarcrm\",\n      \"Product\": \"sugarcrm\",\n      \"Version\": \"6.5.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"community\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wordpress:wordpress:4.1:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wordpress:wordpress:4.1:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wordpress\",\n      \"Product\": \"wordpress\",\n      \"Version\": \"4.1\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:psutil_project:psutil:5.4.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:psutil_project:psutil:5.4.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"psutil_project\",\n      \"Product\": \"psutil\",\n      \"Version\": \"5.4.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adobe:flash_player:11.2.202.291:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adobe:flash_player:11.2.202.291\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adobe\",\n      \"Product\": \"flash_player\",\n      \"Version\": \"11.2.202.291\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:horde:kronolith:3.0.15:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:horde:kronolith:3.0.15\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"horde\",\n      \"Product\": \"kronolith\",\n      \"Version\": \"3.0.15\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gitlab:gitlab:9.4.0:*:*:*:-:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gitlab:gitlab:9.4.0::~~-~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gitlab\",\n      \"Product\": \"gitlab\",\n      \"Version\": \"9.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:microsoft:windows_8:-:-:x86:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:microsoft:windows_8:-:-:x86\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"windows_8\",\n      \"Version\": \"-\",\n      \"Update\": \"-\",\n      \"Edition\": \"x86\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:emberjs:ember.js:3.11.0:beta1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:emberjs:ember.js:3.11.0:beta1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"emberjs\",\n      \"Product\": \"ember.js\",\n      \"Version\": \"3.11.0\",\n      \"Update\": \"beta1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.1587:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.1587\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.1587\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cloudera:cloudera_manager:5.13.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cloudera:cloudera_manager:5.13.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cloudera\",\n      \"Product\": \"cloudera_manager\",\n      \"Version\": \"5.13.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:git-scm:git:1.5.5:rc3:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:git-scm:git:1.5.5:rc3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"git-scm\",\n      \"Product\": \"git\",\n      \"Version\": \"1.5.5\",\n      \"Update\": \"rc3\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:coder:code-server:3.9.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:coder:code-server:3.9.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"coder\",\n      \"Product\": \"code-server\",\n      \"Version\": \"3.9.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:piwik:piwik:0.2.19:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:piwik:piwik:0.2.19\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"piwik\",\n      \"Product\": \"piwik\",\n      \"Version\": \"0.2.19\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openconext:openconext_engineblock:3.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:openconext:openconext_engineblock:3.0.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openconext\",\n      \"Product\": \"openconext_engineblock\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:isc:bind:9.8.0:p1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:isc:bind:9.8.0:p1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"isc\",\n      \"Product\": \"bind\",\n      \"Version\": \"9.8.0\",\n      \"Update\": \"p1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wordfence:wordfence_security:5.0.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wordfence:wordfence_security:5.0.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wordfence\",\n      \"Product\": \"wordfence_security\",\n      \"Version\": \"5.0.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:canon:eos_m5_firmware:1.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:canon:eos_m5_firmware:1.0.1\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"canon\",\n      \"Product\": \"eos_m5_firmware\",\n      \"Version\": \"1.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:dell:poweredge_r940xa_firmware:2.11.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:dell:poweredge_r940xa_firmware:2.11.2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"dell\",\n      \"Product\": \"poweredge_r940xa_firmware\",\n      \"Version\": \"2.11.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:litespeedtech:litespeed_cache:1.0.9:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:litespeedtech:litespeed_cache:1.0.9::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"litespeedtech\",\n      \"Product\": \"litespeed_cache\",\n      \"Version\": \"1.0.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:koha:koha:3.20.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:koha:koha:3.20.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"koha\",\n      \"Product\": \"koha\",\n      \"Version\": \"3.20.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:elasticsearch:kibana:5.2.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:elasticsearch:kibana:5.2.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"elasticsearch\",\n      \"Product\": \"kibana\",\n      \"Version\": \"5.2.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:sony:nw-a47:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:sony:nw-a47:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"sony\",\n      \"Product\": \"nw-a47\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:puma:puma:4.3.4:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:puma:puma:4.3.4::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"puma\",\n      \"Product\": \"puma\",\n      \"Version\": \"4.3.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:modx:revolution:2.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:modx:revolution:2.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"modx\",\n      \"Product\": \"revolution\",\n      \"Version\": \"2.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:denx:u-boot:2017.05:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:denx:u-boot:2017.05:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"denx\",\n      \"Product\": \"u-boot\",\n      \"Version\": \"2017.05\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:blubrry:powerpress:1.0.10:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:blubrry:powerpress:1.0.10::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"blubrry\",\n      \"Product\": \"powerpress\",\n      \"Version\": \"1.0.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:editor-core:72.1.13:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:editor-core:72.1.13::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"editor-core\",\n      \"Version\": \"72.1.13\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:silanis:approveit_desktop:7.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:silanis:approveit_desktop:7.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"silanis\",\n      \"Product\": \"approveit_desktop\",\n      \"Version\": \"7.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:telerik:ui_for_asp.net_core:2014.2.903:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:telerik:ui_for_asp.net_core:2014.2.903\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"telerik\",\n      \"Product\": \"ui_for_asp.net_core\",\n      \"Version\": \"2014.2.903\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:serve-here.js_project:serve-here.js:1.1.3:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:serve-here.js_project:serve-here.js:1.1.3::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"serve-here.js_project\",\n      \"Product\": \"serve-here.js\",\n      \"Version\": \"1.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ios:11.1\\\\(24c\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ios:11.1%2824c%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ios\",\n      \"Version\": \"11.1(24c)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:netgear:jgs524pe:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:netgear:jgs524pe:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"netgear\",\n      \"Product\": \"jgs524pe\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:facebook:nuclide:0.182.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:facebook:nuclide:0.182.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"facebook\",\n      \"Product\": \"nuclide\",\n      \"Version\": \"0.182.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:unified_customer_voice_portal:9.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:unified_customer_voice_portal:9.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"unified_customer_voice_portal\",\n      \"Version\": \"9.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:ui5:1.52.28:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:ui5:1.52.28\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"ui5\",\n      \"Version\": \"1.52.28\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:encs_5400_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:encs_5400_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"encs_5400_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:alpinelinux:aports:3.0.5:*:*:*:*:alpine:*:*\",\n    \"cpe-url\": \"cpe:/a:alpinelinux:aports:3.0.5::~~~alpine~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"alpinelinux\",\n      \"Product\": \"aports\",\n      \"Version\": \"3.0.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"alpine\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:soliddb:6.3.53:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:soliddb:6.3.53\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"soliddb\",\n      \"Version\": \"6.3.53\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:lenovo:yoga_530-14ikb_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:lenovo:yoga_530-14ikb_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"lenovo\",\n      \"Product\": \"yoga_530-14ikb_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:red-gate:smartassembly:6.6.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:red-gate:smartassembly:6.6.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"red-gate\",\n      \"Product\": \"smartassembly\",\n      \"Version\": \"6.6.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:underscorejs:underscore:1.3.2:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:underscorejs:underscore:1.3.2::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"underscorejs\",\n      \"Product\": \"underscore\",\n      \"Version\": \"1.3.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wp-property-hive:propertyhive:1.4.10:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wp-property-hive:propertyhive:1.4.10::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wp-property-hive\",\n      \"Product\": \"propertyhive\",\n      \"Version\": \"1.4.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:socusoft:flash_slideshow_maker:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:socusoft:flash_slideshow_maker:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"socusoft\",\n      \"Product\": \"flash_slideshow_maker\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rimarts:becky\\\\!_internet_mail:2.20.01:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rimarts:becky%21_internet_mail:2.20.01\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rimarts\",\n      \"Product\": \"becky!_internet_mail\",\n      \"Version\": \"2.20.01\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:invoiceninja:invoice_ninja:2.3.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:invoiceninja:invoice_ninja:2.3.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"invoiceninja\",\n      \"Product\": \"invoice_ninja\",\n      \"Version\": \"2.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:cisco:telepresence_system_500-37:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:cisco:telepresence_system_500-37:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"telepresence_system_500-37\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:autohotkey:autohotkey:1.1.30.00:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:autohotkey:autohotkey:1.1.30.00\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"autohotkey\",\n      \"Product\": \"autohotkey\",\n      \"Version\": \"1.1.30.00\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nih:ncbi_toolbox:2.2.26:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nih:ncbi_toolbox:2.2.26\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nih\",\n      \"Product\": \"ncbi_toolbox\",\n      \"Version\": \"2.2.26\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:xnview:xnview:1.99:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:xnview:xnview:1.99\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"xnview\",\n      \"Product\": \"xnview\",\n      \"Version\": \"1.99\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kernel:util-linux:2.25:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kernel:util-linux:2.25\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kernel\",\n      \"Product\": \"util-linux\",\n      \"Version\": \"2.25\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:hp:0231a65t:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:hp:0231a65t:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"0231a65t\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pgp:e-business_server:7.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pgp:e-business_server:7.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pgp\",\n      \"Product\": \"e-business_server\",\n      \"Version\": \"7.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:electronjs:electron:10.0.0:beta9:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:electronjs:electron:10.0.0:beta9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"electronjs\",\n      \"Product\": \"electron\",\n      \"Version\": \"10.0.0\",\n      \"Update\": \"beta9\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:libpng:libpng:1.6.23:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:libpng:libpng:1.6.23\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"libpng\",\n      \"Product\": \"libpng\",\n      \"Version\": \"1.6.23\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:smackcoders:ultimate_csv_importer:3.2.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:smackcoders:ultimate_csv_importer:3.2.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"smackcoders\",\n      \"Product\": \"ultimate_csv_importer\",\n      \"Version\": \"3.2.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:cordova:1.8.1:*:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:cordova:1.8.1::~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"cordova\",\n      \"Version\": \"1.8.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:ansible:2.8.0:-:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:ansible:2.8.0:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"ansible\",\n      \"Version\": \"2.8.0\",\n      \"Update\": \"-\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:intel:xeon_e7-8860_v4:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:intel:xeon_e7-8860_v4:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_e7-8860_v4\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:misskey:misskey:10.82.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:misskey:misskey:10.82.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"misskey\",\n      \"Product\": \"misskey\",\n      \"Version\": \"10.82.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sprockets_project:sprockets:2.0.0:beta11:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sprockets_project:sprockets:2.0.0:beta11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sprockets_project\",\n      \"Product\": \"sprockets\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"beta11\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ip_phone_7800_firmware:10.2\\\\(2\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ip_phone_7800_firmware:10.2%282%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ip_phone_7800_firmware\",\n      \"Version\": \"10.2(2)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wire:wire-webapp:2020-02-24:staging0:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wire:wire-webapp:2020-02-24:staging0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wire\",\n      \"Product\": \"wire-webapp\",\n      \"Version\": \"2020-02-24\",\n      \"Update\": \"staging0\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:abap_platform:7.31:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:abap_platform:7.31\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"abap_platform\",\n      \"Version\": \"7.31\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:xen-orchestra:xen_orchestra_web:5.7.8:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:xen-orchestra:xen_orchestra_web:5.7.8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"xen-orchestra\",\n      \"Product\": \"xen_orchestra_web\",\n      \"Version\": \"5.7.8\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:socket:engine.io:1.0.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:socket:engine.io:1.0.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"socket\",\n      \"Product\": \"engine.io\",\n      \"Version\": \"1.0.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:rspamd_project:rspamd:0.6.10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:rspamd_project:rspamd:0.6.10\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"rspamd_project\",\n      \"Product\": \"rspamd\",\n      \"Version\": \"0.6.10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlantiswordprocessor:atlantis_word_processor:2.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlantiswordprocessor:atlantis_word_processor:2.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlantiswordprocessor\",\n      \"Product\": \"atlantis_word_processor\",\n      \"Version\": \"2.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:openlayers:closure-util:1.14.0:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:openlayers:closure-util:1.14.0::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"openlayers\",\n      \"Product\": \"closure-util\",\n      \"Version\": \"1.14.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:novell:nsure_audit:1.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:novell:nsure_audit:1.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"novell\",\n      \"Product\": \"nsure_audit\",\n      \"Version\": \"1.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:iceni:infix:6.1.9:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:iceni:infix:6.1.9\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"iceni\",\n      \"Product\": \"infix\",\n      \"Version\": \"6.1.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.0.009:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.0.009\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.0.009\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:tomcat:8.0.34:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:tomcat:8.0.34\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"tomcat\",\n      \"Version\": \"8.0.34\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:emqx:emq_x_broker:0.8.1:alpha:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:emqx:emq_x_broker:0.8.1:alpha\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"emqx\",\n      \"Product\": \"emq_x_broker\",\n      \"Version\": \"0.8.1\",\n      \"Update\": \"alpha\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:eclipse:business_intelligence_and_reporting_tools:4.3.1:rc2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:eclipse:business_intelligence_and_reporting_tools:4.3.1:rc2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"eclipse\",\n      \"Product\": \"business_intelligence_and_reporting_tools\",\n      \"Version\": \"4.3.1\",\n      \"Update\": \"rc2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phoenixcontact:pc_worx:1.50:hotfix1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:phoenixcontact:pc_worx:1.50:hotfix1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phoenixcontact\",\n      \"Product\": \"pc_worx\",\n      \"Version\": \"1.50\",\n      \"Update\": \"hotfix1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:lexmark:cx860_firmware:cxtpp.052.204:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:lexmark:cx860_firmware:cxtpp.052.204\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"lexmark\",\n      \"Product\": \"cx860_firmware\",\n      \"Version\": \"cxtpp.052.204\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:network_admission_control_manager_and_server_system_software:4.0.0.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:network_admission_control_manager_and_server_system_software:4.0.0.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"network_admission_control_manager_and_server_system_software\",\n      \"Version\": \"4.0.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:tivoli_directory_server:6.1.0.33:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:tivoli_directory_server:6.1.0.33\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"tivoli_directory_server\",\n      \"Version\": \"6.1.0.33\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zettlr:zettlr:1.7.0:beta12:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zettlr:zettlr:1.7.0:beta12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zettlr\",\n      \"Product\": \"zettlr\",\n      \"Version\": \"1.7.0\",\n      \"Update\": \"beta12\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ruby-lang:ruby:1.8.6.304:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ruby-lang:ruby:1.8.6.304\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ruby-lang\",\n      \"Product\": \"ruby\",\n      \"Version\": \"1.8.6.304\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:fusioncharts:apexcharts:3.17.1:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:fusioncharts:apexcharts:3.17.1::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"fusioncharts\",\n      \"Product\": \"apexcharts\",\n      \"Version\": \"3.17.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vercel:next.js:10.0.2:canary5:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:vercel:next.js:10.0.2:canary5:~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vercel\",\n      \"Product\": \"next.js\",\n      \"Version\": \"10.0.2\",\n      \"Update\": \"canary5\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:apple:iphone_os:14.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:apple:iphone_os:14.4\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"iphone_os\",\n      \"Version\": \"14.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ruby-lang:ruby:1.8.5.31:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ruby-lang:ruby:1.8.5.31\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ruby-lang\",\n      \"Product\": \"ruby\",\n      \"Version\": \"1.8.5.31\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:avaya:ip_soft_phone:6.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:avaya:ip_soft_phone:6.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"avaya\",\n      \"Product\": \"ip_soft_phone\",\n      \"Version\": \"6.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:frostwire:frostwire:1.9.1:build353:*:*:*:android:*:*\",\n    \"cpe-url\": \"cpe:/a:frostwire:frostwire:1.9.1:build353:~~~android~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"frostwire\",\n      \"Product\": \"frostwire\",\n      \"Version\": \"1.9.1\",\n      \"Update\": \"build353\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"android\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:d-link:dir-885l:a1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:d-link:dir-885l:a1\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"d-link\",\n      \"Product\": \"dir-885l\",\n      \"Version\": \"a1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:search_meter_project:search_meter:2.13.1:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:search_meter_project:search_meter:2.13.1::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"search_meter_project\",\n      \"Product\": \"search_meter\",\n      \"Version\": \"2.13.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:s9y:serendipity_event_freetag:3.74:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:s9y:serendipity_event_freetag:3.74\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"s9y\",\n      \"Product\": \"serendipity_event_freetag\",\n      \"Version\": \"3.74\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sensiolabs:symfony:5.2.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sensiolabs:symfony:5.2.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sensiolabs\",\n      \"Product\": \"symfony\",\n      \"Version\": \"5.2.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:x:libxrandr:1.2.99.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:x:libxrandr:1.2.99.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"x\",\n      \"Product\": \"libxrandr\",\n      \"Version\": \"1.2.99.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inpsyde:backwpup:3.3.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:inpsyde:backwpup:3.3.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inpsyde\",\n      \"Product\": \"backwpup\",\n      \"Version\": \"3.3.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:websphere_application_server:20.0.0.7:*:*:*:liberty:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:websphere_application_server:20.0.0.7::~~liberty~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"websphere_application_server\",\n      \"Version\": \"20.0.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"liberty\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:microsoft:azure-iot-sdk-c:2017-09-08:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:microsoft:azure-iot-sdk-c:2017-09-08\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"microsoft\",\n      \"Product\": \"azure-iot-sdk-c\",\n      \"Version\": \"2017-09-08\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:pdqinc:laserwash_autoxpress_plus:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:pdqinc:laserwash_autoxpress_plus:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"pdqinc\",\n      \"Product\": \"laserwash_autoxpress_plus\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:deskpro:deskpro:2021.1.7:*:*:*:cloud:*:*:*\",\n    \"cpe-url\": \"cpe:/a:deskpro:deskpro:2021.1.7::~~cloud~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"deskpro\",\n      \"Product\": \"deskpro\",\n      \"Version\": \"2021.1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"cloud\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:nuuo:nvrsolo:1.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:nuuo:nvrsolo:1.3.0\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"nuuo\",\n      \"Product\": \"nvrsolo\",\n      \"Version\": \"1.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:httpclient:4.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:httpclient:4.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"httpclient\",\n      \"Version\": \"4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:qnap:photo_station:5.7.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:qnap:photo_station:5.7.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"qnap\",\n      \"Product\": \"photo_station\",\n      \"Version\": \"5.7.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ithemes:ithemes_security:7.3.2:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:ithemes:ithemes_security:7.3.2::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ithemes\",\n      \"Product\": \"ithemes_security\",\n      \"Version\": \"7.3.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpcharitable:charitable:1.6.17:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpcharitable:charitable:1.6.17::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpcharitable\",\n      \"Product\": \"charitable\",\n      \"Version\": \"1.6.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:pepperl-fuchs:pgv100-f200-b17-v1d-7477_firmware:2.0.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:pepperl-fuchs:pgv100-f200-b17-v1d-7477_firmware:2.0.0\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"pepperl-fuchs\",\n      \"Product\": \"pgv100-f200-b17-v1d-7477_firmware\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:arista:mos:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:arista:mos:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"arista\",\n      \"Product\": \"mos\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:blackberry:enterprise_service:12.2.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:blackberry:enterprise_service:12.2.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"blackberry\",\n      \"Product\": \"enterprise_service\",\n      \"Version\": \"12.2.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:triplea-game:triplea:1.9.0.0.11975:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:triplea-game:triplea:1.9.0.0.11975\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"triplea-game\",\n      \"Product\": \"triplea\",\n      \"Version\": \"1.9.0.0.11975\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:ip_phone_8861_firmware:10.3\\\\(1\\\\)sr4b:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:ip_phone_8861_firmware:10.3%281%29sr4b\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ip_phone_8861_firmware\",\n      \"Version\": \"10.3(1)sr4b\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:symantec:security_information_manager:4.7.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:symantec:security_information_manager:4.7.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"symantec\",\n      \"Product\": \"security_information_manager\",\n      \"Version\": \"4.7.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vmware:vrealize_operations_for_published_applications:6.5.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vmware:vrealize_operations_for_published_applications:6.5.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vmware\",\n      \"Product\": \"vrealize_operations_for_published_applications\",\n      \"Version\": \"6.5.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:apple:watchos:3.1.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:apple:watchos:3.1.3\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"apple\",\n      \"Product\": \"watchos\",\n      \"Version\": \"3.1.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:etherpad:etherpad:1.6.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:etherpad:etherpad:1.6.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"etherpad\",\n      \"Product\": \"etherpad\",\n      \"Version\": \"1.6.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:apache:http_server:2.2.16:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:apache:http_server:2.2.16\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"apache\",\n      \"Product\": \"http_server\",\n      \"Version\": \"2.2.16\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:hikvision:ds-2cd2086g2-iu\\\\/sl_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:hikvision:ds-2cd2086g2-iu%2fsl_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"hikvision\",\n      \"Product\": \"ds-2cd2086g2-iu/sl_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:dell:latitude_5300_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:dell:latitude_5300_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"dell\",\n      \"Product\": \"latitude_5300_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:adobe:robohelp:2020.0.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:adobe:robohelp:2020.0.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"adobe\",\n      \"Product\": \"robohelp\",\n      \"Version\": \"2020.0.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sendio:sendio:7.1.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sendio:sendio:7.1.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sendio\",\n      \"Product\": \"sendio\",\n      \"Version\": \"7.1.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tendermint:tendermint:0.19.6:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tendermint:tendermint:0.19.6:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tendermint\",\n      \"Product\": \"tendermint\",\n      \"Version\": \"0.19.6\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kakaocorp:kakaotalk:2.7.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kakaocorp:kakaotalk:2.7.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kakaocorp\",\n      \"Product\": \"kakaotalk\",\n      \"Version\": \"2.7.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:betcash_project:betcash:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:betcash_project:betcash:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"betcash_project\",\n      \"Product\": \"betcash\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:jenkins:checkstyle:1.7:*:*:*:*:jenkins:*:*\",\n    \"cpe-url\": \"cpe:/a:jenkins:checkstyle:1.7::~~~jenkins~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"jenkins\",\n      \"Product\": \"checkstyle\",\n      \"Version\": \"1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"jenkins\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:yithemes:yith_woocommerce_pdf_invoice_and_shipping_list:1.4.17:*:*:*:premium:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:yithemes:yith_woocommerce_pdf_invoice_and_shipping_list:1.4.17::~~premium~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"yithemes\",\n      \"Product\": \"yith_woocommerce_pdf_invoice_and_shipping_list\",\n      \"Version\": \"1.4.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"premium\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sass-lang:libsass:3.5.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sass-lang:libsass:3.5.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sass-lang\",\n      \"Product\": \"libsass\",\n      \"Version\": \"3.5.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:buffalo:wzr-hp-ag300h:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:buffalo:wzr-hp-ag300h:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"buffalo\",\n      \"Product\": \"wzr-hp-ag300h\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mailstore:mailstore_server:12.0.6:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mailstore:mailstore_server:12.0.6\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mailstore\",\n      \"Product\": \"mailstore_server\",\n      \"Version\": \"12.0.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:darwin:factor:3.0.17:*:*:*:*:node.js:*:*\",\n    \"cpe-url\": \"cpe:/a:darwin:factor:3.0.17::~~~node.js~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"darwin\",\n      \"Product\": \"factor\",\n      \"Version\": \"3.0.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"node.js\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inspireui:mstore_api:2.9.9:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:inspireui:mstore_api:2.9.9::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inspireui\",\n      \"Product\": \"mstore_api\",\n      \"Version\": \"2.9.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:edac-utils_project:edac-utils:0.12:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:edac-utils_project:edac-utils:0.12\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"edac-utils_project\",\n      \"Product\": \"edac-utils\",\n      \"Version\": \"0.12\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:huawei:jennifer-an00c:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:huawei:jennifer-an00c:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"jennifer-an00c\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:backup-guard:backup_guard:1.1.79:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:backup-guard:backup_guard:1.1.79::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"backup-guard\",\n      \"Product\": \"backup_guard\",\n      \"Version\": \"1.1.79\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:phpbb:phpbb:3.2.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:phpbb:phpbb:3.2.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"phpbb\",\n      \"Product\": \"phpbb\",\n      \"Version\": \"3.2.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nodejs:node.js:0.10.21:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nodejs:node.js:0.10.21\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nodejs\",\n      \"Product\": \"node.js\",\n      \"Version\": \"0.10.21\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:citrix:sd-wan:10.2.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:citrix:sd-wan:10.2.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"citrix\",\n      \"Product\": \"sd-wan\",\n      \"Version\": \"10.2.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cpanel:cpanel:58.0.25:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cpanel:cpanel:58.0.25\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cpanel\",\n      \"Product\": \"cpanel\",\n      \"Version\": \"58.0.25\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:codesys:control_for_plcnext:3.5.15.30:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:codesys:control_for_plcnext:3.5.15.30\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"codesys\",\n      \"Product\": \"control_for_plcnext\",\n      \"Version\": \"3.5.15.30\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:change_and_configuration_management_database:7.1.1.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:change_and_configuration_management_database:7.1.1.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"change_and_configuration_management_database\",\n      \"Version\": \"7.1.1.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:7.4.1529:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:7.4.1529\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"7.4.1529\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:alpinelinux:aports:3.13.0:rc5:*:*:*:alpine:*:*\",\n    \"cpe-url\": \"cpe:/a:alpinelinux:aports:3.13.0:rc5:~~~alpine~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"alpinelinux\",\n      \"Product\": \"aports\",\n      \"Version\": \"3.13.0\",\n      \"Update\": \"rc5\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"alpine\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tadtools_project:tadtools:3.04:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tadtools_project:tadtools:3.04\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tadtools_project\",\n      \"Product\": \"tadtools\",\n      \"Version\": \"3.04\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:katello_project:katello:3.3.0.1:*:*:*:*:foreman:*:*\",\n    \"cpe-url\": \"cpe:/a:katello_project:katello:3.3.0.1::~~~foreman~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"katello_project\",\n      \"Product\": \"katello\",\n      \"Version\": \"3.3.0.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"foreman\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:extremenetworks:extremewireless_wing:5.7.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:extremenetworks:extremewireless_wing:5.7.2\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"extremenetworks\",\n      \"Product\": \"extremewireless_wing\",\n      \"Version\": \"5.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cisco:nx-os:6.2\\\\(24\\\\):*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cisco:nx-os:6.2%2824%29\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"nx-os\",\n      \"Version\": \"6.2(24)\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vmware:spring_security:5.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vmware:spring_security:5.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vmware\",\n      \"Product\": \"spring_security\",\n      \"Version\": \"5.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:panasonic:eluga_ray_530_firmware:2020-04-10:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:panasonic:eluga_ray_530_firmware:2020-04-10\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"panasonic\",\n      \"Product\": \"eluga_ray_530_firmware\",\n      \"Version\": \"2020-04-10\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:inedo:proget:4.8.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:inedo:proget:4.8.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"inedo\",\n      \"Product\": \"proget\",\n      \"Version\": \"4.8.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:redhat:ovirt-engine:4.3.0:alpha2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:redhat:ovirt-engine:4.3.0:alpha2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"redhat\",\n      \"Product\": \"ovirt-engine\",\n      \"Version\": \"4.3.0\",\n      \"Update\": \"alpha2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kde:paste_applet:4.1.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kde:paste_applet:4.1.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kde\",\n      \"Product\": \"paste_applet\",\n      \"Version\": \"4.1.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wpdownloadmanager:wordpress_download_manager:2.4.3:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:wpdownloadmanager:wordpress_download_manager:2.4.3::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wpdownloadmanager\",\n      \"Product\": \"wordpress_download_manager\",\n      \"Version\": \"2.4.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zohocorp:manageengine_remote_access_plus:10.0.256:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:zohocorp:manageengine_remote_access_plus:10.0.256\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zohocorp\",\n      \"Product\": \"manageengine_remote_access_plus\",\n      \"Version\": \"10.0.256\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:x2engine:x2crm:5.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:x2engine:x2crm:5.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"x2engine\",\n      \"Product\": \"x2crm\",\n      \"Version\": \"5.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:kubernetes:kubernetes:1.6.0:alpha1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:kubernetes:kubernetes:1.6.0:alpha1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"kubernetes\",\n      \"Product\": \"kubernetes\",\n      \"Version\": \"1.6.0\",\n      \"Update\": \"alpha1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:prestosql:presto:327:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:prestosql:presto:327\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"prestosql\",\n      \"Product\": \"presto\",\n      \"Version\": \"327\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:saltos:saltos:3.7:9160:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:saltos:saltos:3.7:9160\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"saltos\",\n      \"Product\": \"saltos\",\n      \"Version\": \"3.7\",\n      \"Update\": \"9160\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:hp:sgi_tempo:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:hp:sgi_tempo:-\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"hp\",\n      \"Product\": \"sgi_tempo\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mongodb:mongodb:3.6.17:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mongodb:mongodb:3.6.17\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mongodb\",\n      \"Product\": \"mongodb\",\n      \"Version\": \"3.6.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:wftpserver:wing_ftp_server:2.4:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:wftpserver:wing_ftp_server:2.4\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"wftpserver\",\n      \"Product\": \"wing_ftp_server\",\n      \"Version\": \"2.4\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:webkitgtk:webkitgtk:2.7.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:webkitgtk:webkitgtk:2.7.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"webkitgtk\",\n      \"Product\": \"webkitgtk\",\n      \"Version\": \"2.7.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ucweb:ucmobile_blovestorm:1.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ucweb:ucmobile_blovestorm:1.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ucweb\",\n      \"Product\": \"ucmobile_blovestorm\",\n      \"Version\": \"1.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cisco:finesse:9.1\\\\(1\\\\)_su1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cisco:finesse:9.1%281%29_su1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"finesse\",\n      \"Version\": \"9.1(1)_su1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:oracle:collaboration_suite:10.1.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:oracle:collaboration_suite:10.1.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"oracle\",\n      \"Product\": \"collaboration_suite\",\n      \"Version\": \"10.1.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:huawei:s9300:v100r003:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:huawei:s9300:v100r003\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"huawei\",\n      \"Product\": \"s9300\",\n      \"Version\": \"v100r003\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sanitize_project:sanitize:4.4.0:*:*:*:*:ruby:*:*\",\n    \"cpe-url\": \"cpe:/a:sanitize_project:sanitize:4.4.0::~~~ruby~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sanitize_project\",\n      \"Product\": \"sanitize\",\n      \"Version\": \"4.4.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"ruby\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:vim:vim:8.0.0087:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:vim:vim:8.0.0087\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"vim\",\n      \"Product\": \"vim\",\n      \"Version\": \"8.0.0087\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:triplea-game:triplea:1.9.0.0.13066:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:triplea-game:triplea:1.9.0.0.13066\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"triplea-game\",\n      \"Product\": \"triplea\",\n      \"Version\": \"1.9.0.0.13066\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:telestar:imperial_i200:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:telestar:imperial_i200:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"telestar\",\n      \"Product\": \"imperial_i200\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:sap:openui5:1.56.17:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:sap:openui5:1.56.17\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"sap\",\n      \"Product\": \"openui5\",\n      \"Version\": \"1.56.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:tekmonks:monkshu:2.01:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:tekmonks:monkshu:2.01\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"tekmonks\",\n      \"Product\": \"monkshu\",\n      \"Version\": \"2.01\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:magentocommerce:magento:1.6.1.0:rc1:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:magentocommerce:magento:1.6.1.0:rc1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"magentocommerce\",\n      \"Product\": \"magento\",\n      \"Version\": \"1.6.1.0\",\n      \"Update\": \"rc1\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cantemo:portal:3.4.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:cantemo:portal:3.4.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cantemo\",\n      \"Product\": \"portal\",\n      \"Version\": \"3.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:torproject:tor:0.1.0.17:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:torproject:tor:0.1.0.17\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"torproject\",\n      \"Product\": \"tor\",\n      \"Version\": \"0.1.0.17\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:codeasily:grand_flagallery:5.1.5:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:codeasily:grand_flagallery:5.1.5::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"codeasily\",\n      \"Product\": \"grand_flagallery\",\n      \"Version\": \"5.1.5\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:cdatatec:fd1104b_firmware:2.4.04_001:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:cdatatec:fd1104b_firmware:2.4.04_001\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"cdatatec\",\n      \"Product\": \"fd1104b_firmware\",\n      \"Version\": \"2.4.04_001\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:simon_brown:pebble:2.0.0:m2:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:simon_brown:pebble:2.0.0:m2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"simon_brown\",\n      \"Product\": \"pebble\",\n      \"Version\": \"2.0.0\",\n      \"Update\": \"m2\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:npmjs:npm:1.0.0:rc8:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:npmjs:npm:1.0.0:rc8\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"npmjs\",\n      \"Product\": \"npm\",\n      \"Version\": \"1.0.0\",\n      \"Update\": \"rc8\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:opmantek:open-audit:1.12.2-1:*:*:*:-:*:*:*\",\n    \"cpe-url\": \"cpe:/a:opmantek:open-audit:1.12.2-1::~~-~~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"opmantek\",\n      \"Product\": \"open-audit\",\n      \"Version\": \"1.12.2-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"-\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:intel:xeon_processor_d-1577_firmware:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:intel:xeon_processor_d-1577_firmware:-\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"intel\",\n      \"Product\": \"xeon_processor_d-1577_firmware\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:atlassian:fisheye:3.5.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:atlassian:fisheye:3.5.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"atlassian\",\n      \"Product\": \"fisheye\",\n      \"Version\": \"3.5.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:yithemes:yith_woocommerce_request_a_quote:3.0.0:*:*:*:premium:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:yithemes:yith_woocommerce_request_a_quote:3.0.0::~~premium~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"yithemes\",\n      \"Product\": \"yith_woocommerce_request_a_quote\",\n      \"Version\": \"3.0.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"premium\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:h:cisco:ncs_5502:-:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/h:cisco:ncs_5502:-\",\n    \"wfn\": {\n      \"Part\": \"h\",\n      \"Vendor\": \"cisco\",\n      \"Product\": \"ncs_5502\",\n      \"Version\": \"-\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:mediacoderhq:mediacoder:0.8.5802:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:mediacoderhq:mediacoder:0.8.5802\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"mediacoderhq\",\n      \"Product\": \"mediacoder\",\n      \"Version\": \"0.8.5802\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:contao:contao:2.3.0:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:contao:contao:2.3.0\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"contao\",\n      \"Product\": \"contao\",\n      \"Version\": \"2.3.0\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:zoom:zoom:4.5.9:*:*:*:*:macos:*:*\",\n    \"cpe-url\": \"cpe:/a:zoom:zoom:4.5.9::~~~macos~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"zoom\",\n      \"Product\": \"zoom\",\n      \"Version\": \"4.5.9\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"macos\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:elastic:x-pack:5.6.2:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:elastic:x-pack:5.6.2\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"elastic\",\n      \"Product\": \"x-pack\",\n      \"Version\": \"5.6.2\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:debian:apt:0.8.15.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:debian:apt:0.8.15.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"debian\",\n      \"Product\": \"apt\",\n      \"Version\": \"0.8.15.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:plainware:shiftcontroller:2.0.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:plainware:shiftcontroller:2.0.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"plainware\",\n      \"Product\": \"shiftcontroller\",\n      \"Version\": \"2.0.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:o:sgi:irix:6.5.9m:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/o:sgi:irix:6.5.9m\",\n    \"wfn\": {\n      \"Part\": \"o\",\n      \"Vendor\": \"sgi\",\n      \"Product\": \"irix\",\n      \"Version\": \"6.5.9m\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:nikola_posa:webfoliocms:1.0.7:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:nikola_posa:webfoliocms:1.0.7\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"nikola_posa\",\n      \"Product\": \"webfoliocms\",\n      \"Version\": \"1.0.7\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:katello_project:katello:0.2.55-1:*:*:*:*:foreman:*:*\",\n    \"cpe-url\": \"cpe:/a:katello_project:katello:0.2.55-1::~~~foreman~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"katello_project\",\n      \"Product\": \"katello\",\n      \"Version\": \"0.2.55-1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"foreman\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:chocolate-doom:crispy_doom:5.6.3:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:chocolate-doom:crispy_doom:5.6.3\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"chocolate-doom\",\n      \"Product\": \"crispy_doom\",\n      \"Version\": \"5.6.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:cmsmadesimple:bable\\\\:multilingual_site:0.3.3:*:*:*:*:cms_made_simple:*:*\",\n    \"cpe-url\": \"cpe:/a:cmsmadesimple:bable%3amultilingual_site:0.3.3::~~~cms_made_simple~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"cmsmadesimple\",\n      \"Product\": \"bable:multilingual_site\",\n      \"Version\": \"0.3.3\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"cms_made_simple\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pressified:sendpress:0.9.9.9.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:pressified:sendpress:0.9.9.9.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pressified\",\n      \"Product\": \"sendpress\",\n      \"Version\": \"0.9.9.9.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:ibm:tivoli_storage_manager_for_virtual_environments:6.4.3.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:ibm:tivoli_storage_manager_for_virtual_environments:6.4.3.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"ibm\",\n      \"Product\": \"tivoli_storage_manager_for_virtual_environments\",\n      \"Version\": \"6.4.3.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:debian:advanced_package_tool:0.7.11:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:debian:advanced_package_tool:0.7.11\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"debian\",\n      \"Product\": \"advanced_package_tool\",\n      \"Version\": \"0.7.11\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:triplea-game:triplea:1.10.13997:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:triplea-game:triplea:1.10.13997\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"triplea-game\",\n      \"Product\": \"triplea\",\n      \"Version\": \"1.10.13997\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:facebook:thrift:2018.02.05.00:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:facebook:thrift:2018.02.05.00\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"facebook\",\n      \"Product\": \"thrift\",\n      \"Version\": \"2018.02.05.00\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:qantumthemes:onair2:3.1.6:*:*:*:*:wordpress:*:*\",\n    \"cpe-url\": \"cpe:/a:qantumthemes:onair2:3.1.6::~~~wordpress~~\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"qantumthemes\",\n      \"Product\": \"onair2\",\n      \"Version\": \"3.1.6\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"wordpress\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:pimcore:pimcore:4.4.1:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:pimcore:pimcore:4.4.1\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"pimcore\",\n      \"Product\": \"pimcore\",\n      \"Version\": \"4.4.1\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  },\n  {\n    \"cpe-string\": \"cpe:2.3:a:gnu:libredwg:0.8.1853:*:*:*:*:*:*:*\",\n    \"cpe-url\": \"cpe:/a:gnu:libredwg:0.8.1853\",\n    \"wfn\": {\n      \"Part\": \"a\",\n      \"Vendor\": \"gnu\",\n      \"Product\": \"libredwg\",\n      \"Version\": \"0.8.1853\",\n      \"Update\": \"\",\n      \"Edition\": \"\",\n      \"Language\": \"\",\n      \"SwEdition\": \"\",\n      \"TargetSw\": \"\",\n      \"TargetHw\": \"\",\n      \"Other\": \"\"\n    }\n  }\n]"
  },
  {
    "path": "syft/create_sbom.go",
    "content": "package syft\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sort\"\n\n\t\"github.com/dustin/go-humanize\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/go-sync\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/sbomsync\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// CreateSBOM creates a software bill-of-materials from the given source. If the CreateSBOMConfig is nil, then\n// default options will be used.\n//\n//nolint:funlen\nfunc CreateSBOM(ctx context.Context, src source.Source, cfg *CreateSBOMConfig) (*sbom.SBOM, error) {\n\tif cfg == nil {\n\t\tcfg = DefaultCreateSBOMConfig()\n\t}\n\tif err := cfg.validate(); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid configuration: %w\", err)\n\t}\n\n\tsrcMetadata := src.Describe()\n\n\ttaskGroups, audit, err := cfg.makeTaskGroups(srcMetadata)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresolver, err := src.FileResolver(cfg.Search.Scope)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get file resolver: %w\", err)\n\t}\n\n\ts := sbom.SBOM{\n\t\tSource: srcMetadata,\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    cfg.ToolName,\n\t\t\tVersion: cfg.ToolVersion,\n\t\t\tConfiguration: configurationAuditTrail{\n\t\t\t\tSearch:         cfg.Search,\n\t\t\t\tRelationships:  cfg.Relationships,\n\t\t\t\tDataGeneration: cfg.DataGeneration,\n\t\t\t\tPackages:       cfg.Packages,\n\t\t\t\tFiles:          cfg.Files,\n\t\t\t\tLicenses:       cfg.Licenses,\n\t\t\t\tCatalogers:     *audit,\n\t\t\t\tExtraConfigs:   cfg.ToolConfiguration,\n\t\t\t},\n\t\t},\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkg.NewCollection(),\n\t\t},\n\t}\n\n\t// check if the caller already provided a TempDir; if so, don't clean it up (the caller owns it)\n\tcallerOwnsTempDir := tmpdir.FromContext(ctx) != nil\n\n\t// setup everything we need in context: license scanner, executors, temp storage, etc.\n\tctx, err = setupContext(ctx, cfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !callerOwnsTempDir {\n\t\tif td := tmpdir.FromContext(ctx); td != nil {\n\t\t\tdefer func() {\n\t\t\t\tif err := td.Cleanup(); err != nil {\n\t\t\t\t\tlog.Warnf(\"failed to clean up temp dir: %v\", err)\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t}\n\n\tcatalogingProgress := monitorCatalogingTask(src.ID(), taskGroups)\n\tpackageCatalogingProgress := monitorPackageCatalogingTask()\n\n\tbuilder := sbomsync.NewBuilder(&s, monitorPackageCount(packageCatalogingProgress))\n\tfor i := range taskGroups {\n\t\terr = sync.Collect(&ctx, cataloging.ExecutorFile, sync.ToSeq(taskGroups[i]), func(t task.Task) (any, error) {\n\t\t\treturn nil, task.RunTask(ctx, t, resolver, builder, catalogingProgress)\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\t// TODO: tie this to the open progress monitors...\n\t\t\treturn nil, fmt.Errorf(\"failed to run tasks: %w\", err)\n\t\t}\n\t}\n\n\tpackageCatalogingProgress.SetCompleted()\n\tcatalogingProgress.SetCompleted()\n\n\treturn &s, nil\n}\n\nfunc setupContext(ctx context.Context, cfg *CreateSBOMConfig) (context.Context, error) {\n\t// configure parallel executors\n\tctx = setContextExecutors(ctx, cfg)\n\n\t// configure temp dir factory for catalogers (if not already set)\n\tif tmpdir.FromContext(ctx) == nil {\n\t\tctx, _ = tmpdir.Root(ctx, \"syft-cataloger\")\n\t}\n\n\t// configure license scanner\n\t// skip injecting a license scanner if one already set on context\n\tif licenses.IsContextLicenseScannerSet(ctx) {\n\t\treturn ctx, nil\n\t}\n\n\treturn SetContextLicenseScanner(ctx, cfg.Licenses)\n}\n\n// SetContextLicenseScanner creates and sets a license scanner\n// on the provided context using the provided license config.\nfunc SetContextLicenseScanner(ctx context.Context, cfg cataloging.LicenseConfig) (context.Context, error) {\n\t// inject a single license scanner and content config for all package cataloging tasks into context\n\tlicenseScanner, err := licenses.NewDefaultScanner(\n\t\tlicenses.WithCoverage(cfg.Coverage),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not build licenseScanner for cataloging: %w\", err)\n\t}\n\tctx = licenses.SetContextLicenseScanner(ctx, licenseScanner)\n\treturn ctx, nil\n}\n\nfunc setContextExecutors(ctx context.Context, cfg *CreateSBOMConfig) context.Context {\n\tparallelism := 0\n\tif cfg != nil {\n\t\tparallelism = cfg.Parallelism\n\t}\n\t// executor parallelism is: 0 == serial, no goroutines, 1 == max 1 goroutine\n\t// so if they set 1, we just run in serial to avoid overhead, and treat 0 as default, reasonable max for the system\n\t// negative is unbounded, so no need for any other special handling\n\tswitch parallelism {\n\tcase 0:\n\t\tparallelism = runtime.NumCPU() * 4\n\tcase 1:\n\t\tparallelism = 0 // run in serial, don't spawn goroutines\n\tcase -99:\n\t\tparallelism = 1 // special case to catch incorrect executor usage during testing\n\t}\n\t// set up executors for each dimension we want to coordinate bounds for\n\tif !sync.HasContextExecutor(ctx, cataloging.ExecutorCPU) {\n\t\tctx = sync.SetContextExecutor(ctx, cataloging.ExecutorCPU, sync.NewExecutor(parallelism))\n\t}\n\tif !sync.HasContextExecutor(ctx, cataloging.ExecutorFile) {\n\t\tctx = sync.SetContextExecutor(ctx, cataloging.ExecutorFile, sync.NewExecutor(parallelism))\n\t}\n\treturn ctx\n}\n\nfunc monitorPackageCount(prog *monitor.TaskProgress) func(s *sbom.SBOM) {\n\treturn func(s *sbom.SBOM) {\n\t\tcount := humanize.Comma(int64(s.Artifacts.Packages.PackageCount()))\n\t\tprog.AtomicStage.Set(fmt.Sprintf(\"%s packages\", count))\n\t}\n}\n\nfunc monitorPackageCatalogingTask() *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault: \"Packages\",\n\t\t},\n\t\tID:            monitor.PackageCatalogingTaskID,\n\t\tHideOnSuccess: false,\n\t\tParentID:      monitor.TopLevelCatalogingTaskID,\n\t}\n\n\treturn bus.StartCatalogerTask(info, -1, \"\")\n}\n\nfunc monitorCatalogingTask(srcID artifact.ID, tasks [][]task.Task) *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault:      \"Catalog contents\",\n\t\t\tWhileRunning: \"Cataloging contents\",\n\t\t\tOnSuccess:    \"Cataloged contents\",\n\t\t},\n\t\tID:            monitor.TopLevelCatalogingTaskID,\n\t\tContext:       string(srcID),\n\t\tHideOnSuccess: false,\n\t}\n\n\tvar length int64\n\tfor _, tg := range tasks {\n\t\tlength += int64(len(tg))\n\t}\n\n\treturn bus.StartCatalogerTask(info, length, \"\")\n}\n\nfunc formatTaskNames(tasks []task.Task) []string {\n\tset := strset.New()\n\tfor _, td := range tasks {\n\t\tif td == nil {\n\t\t\tcontinue\n\t\t}\n\t\tset.Add(td.Name())\n\t}\n\tlist := set.List()\n\tsort.Strings(list)\n\treturn list\n}\n"
  },
  {
    "path": "syft/create_sbom_config.go",
    "content": "package syft\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime/debug\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// CreateSBOMConfig specifies all parameters needed for creating an SBOM.\ntype CreateSBOMConfig struct {\n\t// required configuration input to specify how cataloging should be performed\n\tCompliance         cataloging.ComplianceConfig\n\tSearch             cataloging.SearchConfig\n\tRelationships      cataloging.RelationshipsConfig\n\tUnknowns           cataloging.UnknownsConfig\n\tDataGeneration     cataloging.DataGenerationConfig\n\tPackages           pkgcataloging.Config\n\tLicenses           cataloging.LicenseConfig\n\tFiles              filecataloging.Config\n\tParallelism        int\n\tCatalogerSelection cataloging.SelectionRequest\n\n\t// audit what tool is being used to generate the SBOM\n\tToolName          string\n\tToolVersion       string\n\tToolConfiguration interface{}\n\n\tpackageTaskFactories       task.Factories\n\tpackageCatalogerReferences []pkgcataloging.CatalogerReference\n}\n\nfunc DefaultCreateSBOMConfig() *CreateSBOMConfig {\n\treturn &CreateSBOMConfig{\n\t\tCompliance:           cataloging.DefaultComplianceConfig(),\n\t\tSearch:               cataloging.DefaultSearchConfig(),\n\t\tRelationships:        cataloging.DefaultRelationshipsConfig(),\n\t\tDataGeneration:       cataloging.DefaultDataGenerationConfig(),\n\t\tPackages:             pkgcataloging.DefaultConfig(),\n\t\tLicenses:             cataloging.DefaultLicenseConfig(),\n\t\tFiles:                filecataloging.DefaultConfig(),\n\t\tParallelism:          0, // use default: run in parallel based on number of CPUs\n\t\tpackageTaskFactories: task.DefaultPackageTaskFactories(),\n\n\t\t// library consumers are free to override the tool values to fit their needs, however, we have some sane defaults\n\t\t// to ensure that SBOMs generated don't have missing tool metadata.\n\t\tToolName:    \"syft\",\n\t\tToolVersion: syftVersion(),\n\t}\n}\n\nfunc syftVersion() string {\n\t// extract the syft version from the go module info from the current binary that is running. This is useful for\n\t// library consumers to at least encode the version of syft that was used to generate the SBOM. Note: we don't\n\t// use the version info from main because it's baked in with ldflags, which we don't control for library consumers.\n\t// This approach won't work in all cases though, such as when the binary is stripped of the buildinfo section.\n\n\tbuildInfo, ok := debug.ReadBuildInfo()\n\tif !ok {\n\t\treturn \"\"\n\t}\n\n\tfor _, d := range buildInfo.Deps {\n\t\tif d.Path == \"github.com/anchore/syft\" && d.Version != \"(devel)\" {\n\t\t\treturn d.Version\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// WithTool allows for setting the specific name, version, and any additional configuration that is not captured\n// in the syft default API configuration. This could cover inputs for catalogers that were user-provided, thus,\n// is not visible to the syft API, but would be useful to see in the SBOM output.\nfunc (c *CreateSBOMConfig) WithTool(name, version string, cfg ...any) *CreateSBOMConfig {\n\tc.ToolName = name\n\tc.ToolVersion = version\n\tc.ToolConfiguration = cfg\n\treturn c\n}\n\n// WithParallelism allows for setting the number of concurrent cataloging tasks that can be performed at once\nfunc (c *CreateSBOMConfig) WithParallelism(p int) *CreateSBOMConfig {\n\tc.Parallelism = p\n\treturn c\n}\n\n// WithComplianceConfig allows for setting the specific compliance configuration for cataloging.\nfunc (c *CreateSBOMConfig) WithComplianceConfig(cfg cataloging.ComplianceConfig) *CreateSBOMConfig {\n\tc.Compliance = cfg\n\treturn c\n}\n\n// WithSearchConfig allows for setting the specific search configuration for cataloging.\nfunc (c *CreateSBOMConfig) WithSearchConfig(cfg cataloging.SearchConfig) *CreateSBOMConfig {\n\tc.Search = cfg\n\treturn c\n}\n\n// WithRelationshipsConfig allows for defining the specific relationships that should be captured during cataloging.\nfunc (c *CreateSBOMConfig) WithRelationshipsConfig(cfg cataloging.RelationshipsConfig) *CreateSBOMConfig {\n\tc.Relationships = cfg\n\treturn c\n}\n\n// WithUnknownsConfig allows for defining the specific behavior dealing with unknowns\nfunc (c *CreateSBOMConfig) WithUnknownsConfig(cfg cataloging.UnknownsConfig) *CreateSBOMConfig {\n\tc.Unknowns = cfg\n\treturn c\n}\n\n// WithDataGenerationConfig allows for defining what data elements that cannot be discovered from the underlying\n// target being scanned that should be generated after package creation.\nfunc (c *CreateSBOMConfig) WithDataGenerationConfig(cfg cataloging.DataGenerationConfig) *CreateSBOMConfig {\n\tc.DataGeneration = cfg\n\treturn c\n}\n\n// WithPackagesConfig allows for defining any specific package cataloging behavior for syft-implemented catalogers.\nfunc (c *CreateSBOMConfig) WithPackagesConfig(cfg pkgcataloging.Config) *CreateSBOMConfig {\n\tc.Packages = cfg\n\treturn c\n}\n\n// WithLicenseConfig allows for defining any specific license cataloging behavior for syft-implemented catalogers.\nfunc (c *CreateSBOMConfig) WithLicenseConfig(cfg cataloging.LicenseConfig) *CreateSBOMConfig {\n\tc.Licenses = cfg\n\treturn c\n}\n\n// WithFilesConfig allows for defining file-based cataloging parameters.\nfunc (c *CreateSBOMConfig) WithFilesConfig(cfg filecataloging.Config) *CreateSBOMConfig {\n\tc.Files = cfg\n\treturn c\n}\n\n// WithoutFiles allows for disabling file cataloging altogether.\nfunc (c *CreateSBOMConfig) WithoutFiles() *CreateSBOMConfig {\n\tc.Files = filecataloging.Config{\n\t\tSelection: file.NoFilesSelection,\n\t\tHashers:   nil,\n\t}\n\treturn c\n}\n\n// WithCatalogerSelection allows for adding to, removing from, or sub-selecting the final set of catalogers by name or tag.\nfunc (c *CreateSBOMConfig) WithCatalogerSelection(selection cataloging.SelectionRequest) *CreateSBOMConfig {\n\tc.CatalogerSelection = selection\n\treturn c\n}\n\n// WithoutCatalogers removes all catalogers from the final set of catalogers. This is useful if you want to only use\n// user-provided catalogers (without the default syft-provided catalogers).\nfunc (c *CreateSBOMConfig) WithoutCatalogers() *CreateSBOMConfig {\n\tc.packageTaskFactories = nil\n\tc.packageCatalogerReferences = nil\n\treturn c\n}\n\n// WithCatalogers allows for adding user-provided catalogers to the final set of catalogers that will always be run\n// regardless of the source type or any cataloger selections provided.\nfunc (c *CreateSBOMConfig) WithCatalogers(catalogerRefs ...pkgcataloging.CatalogerReference) *CreateSBOMConfig {\n\tfor i := range catalogerRefs {\n\t\t// ensure that all package catalogers have the package tag\n\t\tcatalogerRefs[i].Tags = append(catalogerRefs[i].Tags, pkgcataloging.PackageTag)\n\t}\n\tc.packageCatalogerReferences = append(c.packageCatalogerReferences, catalogerRefs...)\n\n\treturn c\n}\n\n// makeTaskGroups considers the entire configuration and finalizes the set of tasks to be run. Tasks are run in\n// groups, where each task in a group can be run concurrently, while tasks in different groups must be run serially.\n// The final set of task groups is returned along with a cataloger manifest that describes the catalogers that were\n// selected and the tokens that were sensitive to this selection (both for adding and removing from the final set).\nfunc (c *CreateSBOMConfig) makeTaskGroups(src source.Description) ([][]task.Task, *catalogerManifest, error) {\n\tvar taskGroups [][]task.Task\n\n\t// generate package and file tasks based on the configuration\n\tenvironmentTasks := c.environmentTasks()\n\tscopeTasks := c.scopeTasks()\n\trelationshipsTasks := c.relationshipTasks(src)\n\tunknownTasks := c.unknownsTasks()\n\tosFeatureDetectionTasks := c.osFeatureDetectionTasks()\n\n\tpkgTasks, fileTasks, selectionEvidence, err := c.selectTasks(src)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// combine the user-provided and configured tasks\n\tif c.Files.Selection == file.FilesOwnedByPackageSelection {\n\t\t// special case: we need the package info when we are cataloging files owned by packages\n\t\ttaskGroups = append(taskGroups, pkgTasks, fileTasks)\n\t} else {\n\t\ttaskGroups = append(taskGroups, append(pkgTasks, fileTasks...))\n\t}\n\n\t// all scope work must be done after all nodes (files and packages) have been cataloged and before the relationship\n\tif len(scopeTasks) > 0 {\n\t\ttaskGroups = append(taskGroups, scopeTasks)\n\t}\n\n\t// all relationship work must be done after all nodes (files and packages) have been cataloged\n\tif len(relationshipsTasks) > 0 {\n\t\ttaskGroups = append(taskGroups, relationshipsTasks)\n\t}\n\n\t// all unknowns tasks should happen after all scanning is complete\n\tif len(unknownTasks) > 0 {\n\t\ttaskGroups = append(taskGroups, unknownTasks)\n\t}\n\n\t// osFeatureDetectionTasks should happen after package scanning is complete\n\tif len(osFeatureDetectionTasks) > 0 {\n\t\ttaskGroups = append(taskGroups, osFeatureDetectionTasks)\n\t}\n\n\t// identifying the environment (i.e. the linux release) must be done first as this is required for package cataloging\n\ttaskGroups = append(\n\t\t[][]task.Task{\n\t\t\tenvironmentTasks,\n\t\t},\n\t\ttaskGroups...,\n\t)\n\n\tvar allTasks []task.Task\n\tallTasks = append(allTasks, pkgTasks...)\n\tallTasks = append(allTasks, fileTasks...)\n\n\treturn taskGroups, &catalogerManifest{\n\t\tRequested: selectionEvidence.Request,\n\t\tUsed:      formatTaskNames(allTasks),\n\t}, nil\n}\n\n// fileTasks returns the set of tasks that should be run to catalog files.\nfunc (c *CreateSBOMConfig) fileTasks(cfg task.CatalogingFactoryConfig) ([]task.Task, error) {\n\ttsks, err := task.DefaultFileTaskFactories().Tasks(cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to create file cataloger tasks: %w\", err)\n\t}\n\n\treturn tsks, nil\n}\n\n// selectTasks returns the set of tasks that should be run to catalog packages and files.\nfunc (c *CreateSBOMConfig) selectTasks(src source.Description) ([]task.Task, []task.Task, *task.Selection, error) {\n\tcfg := task.CatalogingFactoryConfig{\n\t\tSearchConfig:         c.Search,\n\t\tRelationshipsConfig:  c.Relationships,\n\t\tDataGenerationConfig: c.DataGeneration,\n\t\tPackagesConfig:       c.Packages,\n\t\tLicenseConfig:        c.Licenses,\n\t\tComplianceConfig:     c.Compliance,\n\t\tFilesConfig:          c.Files,\n\t}\n\n\tpersistentPkgTasks, selectablePkgTasks, err := c.allPackageTasks(cfg)\n\tif err != nil {\n\t\treturn nil, nil, nil, fmt.Errorf(\"unable to create package cataloger tasks: %w\", err)\n\t}\n\n\treq, err := finalTaskSelectionRequest(c.CatalogerSelection, src)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tselectableFileTasks, err := c.fileTasks(cfg)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\ttaskGroups := [][]task.Task{\n\t\tselectablePkgTasks,\n\t\tselectableFileTasks,\n\t}\n\n\tfinalTaskGroups, selection, err := task.SelectInGroups(taskGroups, *req)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tif deprecatedNames := deprecatedTasks(finalTaskGroups); len(deprecatedNames) > 0 {\n\t\tlog.WithFields(\"catalogers\", strings.Join(deprecatedNames, \", \")).Warn(\"deprecated catalogers are being used (please remove them from your configuration)\")\n\t}\n\n\tfinalPkgTasks := finalTaskGroups[0]\n\tfinalFileTasks := finalTaskGroups[1]\n\n\tfinalPkgTasks = append(finalPkgTasks, persistentPkgTasks...)\n\n\tif len(finalPkgTasks) == 0 && len(finalFileTasks) == 0 {\n\t\treturn nil, nil, nil, fmt.Errorf(\"no catalogers selected\")\n\t}\n\n\tlogTaskNames(finalPkgTasks, \"package cataloger\")\n\tlogTaskNames(finalFileTasks, \"file cataloger\")\n\n\tif len(finalPkgTasks) == 0 && len(finalFileTasks) == 0 {\n\t\treturn nil, nil, nil, fmt.Errorf(\"no catalogers selected\")\n\t}\n\n\tif len(finalPkgTasks) == 0 {\n\t\tlog.Debug(\"no package catalogers selected\")\n\t}\n\n\tif len(finalFileTasks) == 0 {\n\t\tif c.Files.Selection != file.NoFilesSelection {\n\t\t\tlog.Warnf(\"no file catalogers selected but file selection is configured as %q (this may be unintentional)\", c.Files.Selection)\n\t\t} else {\n\t\t\tlog.Debug(\"no file catalogers selected\")\n\t\t}\n\t}\n\n\treturn finalPkgTasks, finalFileTasks, &selection, nil\n}\n\nfunc deprecatedTasks(taskGroups [][]task.Task) []string {\n\t// we want to identify any deprecated catalogers that are being used but default selections will always additionally select `file`\n\t// catalogers. For this reason, we must explicitly remove `file` catalogers in the selection request. This means if we\n\t// deprecate a file cataloger we will need special processing.\n\t_, selection, err := task.SelectInGroups(taskGroups, cataloging.SelectionRequest{DefaultNamesOrTags: []string{pkgcataloging.DeprecatedTag}, RemoveNamesOrTags: []string{filecataloging.FileTag}})\n\tif err != nil {\n\t\t// ignore the error, as it is not critical\n\t\treturn nil\n\t}\n\treturn selection.Result.List()\n}\n\nfunc logTaskNames(tasks []task.Task, kind string) {\n\t// log as tree output (like tree command)\n\tlog.Debugf(\"selected %d %s tasks\", len(tasks), kind)\n\tnames := formatTaskNames(tasks)\n\tfor idx, t := range names {\n\t\tif idx == len(tasks)-1 {\n\t\t\tlog.Tracef(\"└── %s\", t)\n\t\t} else {\n\t\t\tlog.Tracef(\"├── %s\", t)\n\t\t}\n\t}\n}\n\nfunc finalTaskSelectionRequest(req cataloging.SelectionRequest, src source.Description) (*cataloging.SelectionRequest, error) {\n\tif len(req.DefaultNamesOrTags) == 0 {\n\t\tdefaultTags, err := findDefaultTags(src)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to determine default cataloger tag: %w\", err)\n\t\t}\n\n\t\treq.DefaultNamesOrTags = append(req.DefaultNamesOrTags, defaultTags...)\n\n\t\treq.RemoveNamesOrTags = replaceDefaultTagReferences(defaultTags, req.RemoveNamesOrTags)\n\t\treq.SubSelectTags = replaceDefaultTagReferences(defaultTags, req.SubSelectTags)\n\t}\n\n\treturn &req, nil\n}\n\nfunc (c *CreateSBOMConfig) allPackageTasks(cfg task.CatalogingFactoryConfig) ([]task.Task, []task.Task, error) {\n\tpersistentPackageTasks, selectablePackageTasks, err := c.userPackageTasks(cfg)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\ttsks, err := c.packageTaskFactories.Tasks(cfg)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to create package cataloger tasks: %w\", err)\n\t}\n\n\treturn persistentPackageTasks, append(tsks, selectablePackageTasks...), nil\n}\n\nfunc (c *CreateSBOMConfig) userPackageTasks(cfg task.CatalogingFactoryConfig) ([]task.Task, []task.Task, error) {\n\tvar (\n\t\tpersistentPackageTasks []task.Task\n\t\tselectablePackageTasks []task.Task\n\t)\n\n\tfor _, catalogerRef := range c.packageCatalogerReferences {\n\t\tif catalogerRef.Cataloger == nil {\n\t\t\treturn nil, nil, errors.New(\"provided cataloger reference without a cataloger\")\n\t\t}\n\t\tif catalogerRef.AlwaysEnabled {\n\t\t\tpersistentPackageTasks = append(persistentPackageTasks, task.NewPackageTask(cfg, catalogerRef.Cataloger, catalogerRef.Tags...))\n\t\t\tcontinue\n\t\t}\n\t\tif len(catalogerRef.Tags) == 0 {\n\t\t\treturn nil, nil, errors.New(\"provided cataloger reference without tags\")\n\t\t}\n\t\tselectablePackageTasks = append(selectablePackageTasks, task.NewPackageTask(cfg, catalogerRef.Cataloger, catalogerRef.Tags...))\n\t}\n\n\treturn persistentPackageTasks, selectablePackageTasks, nil\n}\n\n// scopeTasks returns the set of tasks that should be run to generate additional scope information\nfunc (c *CreateSBOMConfig) scopeTasks() []task.Task {\n\tvar tsks []task.Task\n\tif c.Search.Scope == source.DeepSquashedScope {\n\t\tif t := task.NewDeepSquashedScopeCleanupTask(); t != nil {\n\t\t\ttsks = append(tsks, t)\n\t\t}\n\t}\n\treturn tsks\n}\n\n// relationshipTasks returns the set of tasks that should be run to generate additional relationships as well as\n// prune existing relationships.\nfunc (c *CreateSBOMConfig) relationshipTasks(src source.Description) []task.Task {\n\tvar tsks []task.Task\n\n\tif t := task.NewRelationshipsTask(c.Relationships, src); t != nil {\n\t\ttsks = append(tsks, t)\n\t}\n\treturn tsks\n}\n\n// environmentTasks returns the set of tasks that should be run to identify what is being scanned or the context\n// of where it is being scanned. Today this is used to identify the linux distribution release for container images\n// being scanned.\nfunc (c *CreateSBOMConfig) environmentTasks() []task.Task {\n\tvar tsks []task.Task\n\n\tif t := task.NewEnvironmentTask(); t != nil {\n\t\ttsks = append(tsks, t)\n\t}\n\treturn tsks\n}\n\n// unknownsTasks returns a set of tasks that perform any necessary post-processing\n// to identify SBOM elements as unknowns\nfunc (c *CreateSBOMConfig) unknownsTasks() []task.Task {\n\tvar tasks []task.Task\n\n\tif t := task.NewUnknownsLabelerTask(c.Unknowns); t != nil {\n\t\ttasks = append(tasks, t)\n\t}\n\n\treturn tasks\n}\n\n// osFeatureDetectionTasks returns a set of tasks that perform post-processing feature detection and update the SBOM accordingly\nfunc (c *CreateSBOMConfig) osFeatureDetectionTasks() []task.Task {\n\tvar tasks []task.Task\n\n\tif t := task.NewOSFeatureDetectionTask(); t != nil {\n\t\ttasks = append(tasks, t)\n\t}\n\n\treturn tasks\n}\n\nfunc (c *CreateSBOMConfig) validate() error {\n\tif c.Relationships.ExcludeBinaryPackagesWithFileOwnershipOverlap {\n\t\tif !c.Relationships.PackageFileOwnershipOverlap {\n\t\t\treturn fmt.Errorf(\"invalid configuration: to exclude binary packages based on file ownership overlap relationships, cataloging file ownership overlap relationships must be enabled\")\n\t\t}\n\t}\n\treturn nil\n}\n\n// Create creates an SBOM from the given source with the current SBOM configuration.\nfunc (c *CreateSBOMConfig) Create(ctx context.Context, src source.Source) (*sbom.SBOM, error) {\n\treturn CreateSBOM(ctx, src, c)\n}\n\nfunc findDefaultTags(src source.Description) ([]string, error) {\n\tswitch m := src.Metadata.(type) {\n\tcase source.ImageMetadata, source.OCIModelMetadata:\n\t\treturn []string{pkgcataloging.ImageTag, filecataloging.FileTag}, nil\n\tcase source.FileMetadata, source.DirectoryMetadata:\n\t\treturn []string{pkgcataloging.DirectoryTag, filecataloging.FileTag}, nil\n\tcase source.SnapMetadata:\n\t\treturn []string{pkgcataloging.InstalledTag, filecataloging.FileTag}, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unable to determine default cataloger tag for source type=%T\", m)\n\t}\n}\n\nfunc replaceDefaultTagReferences(defaultTags []string, lst []string) []string {\n\tfor i, tag := range lst {\n\t\tif strings.ToLower(tag) == \"default\" {\n\t\t\tswitch len(defaultTags) {\n\t\t\tcase 0:\n\t\t\t\tlst[i] = \"\"\n\t\t\tcase 1:\n\t\t\t\tlst[i] = defaultTags[0]\n\t\t\tdefault:\n\t\t\t\t// remove the default tag and add the individual tags\n\t\t\t\tlst = append(lst[:i], append(defaultTags, lst[i+1:]...)...)\n\t\t\t}\n\t\t}\n\t}\n\treturn lst\n}\n"
  },
  {
    "path": "syft/create_sbom_config_test.go",
    "content": "package syft\n\nimport (\n\t\"context\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/task\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/filecataloging\"\n\t\"github.com/anchore/syft/syft/cataloging/pkgcataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar _ pkg.Cataloger = (*dummyCataloger)(nil)\n\ntype dummyCataloger struct {\n\tname string\n}\n\nfunc newDummyCataloger(name string) pkg.Cataloger {\n\treturn dummyCataloger{name: name}\n}\n\nfunc (d dummyCataloger) Name() string {\n\treturn d.name\n}\n\nfunc (d dummyCataloger) Catalog(_ context.Context, _ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn nil, nil, nil\n}\n\nfunc TestCreateSBOMConfig_makeTaskGroups(t *testing.T) {\n\tpkgIntersect := func(intersect ...string) []string {\n\t\tvar sets []*strset.Set\n\t\tfor _, s := range intersect {\n\t\t\tsets = append(sets, strset.New(pkgCatalogerNamesWithTagOrName(t, s)...))\n\t\t}\n\n\t\tintersectSet := strset.Intersection(sets...)\n\n\t\tslice := intersectSet.List()\n\n\t\tsort.Strings(slice)\n\n\t\treturn slice\n\t}\n\n\taddTo := func(slice []string, add ...string) []string {\n\t\tslice = append(slice, add...)\n\t\tsort.Strings(slice)\n\t\treturn slice\n\t}\n\n\timgSrc := source.Description{\n\t\tMetadata: source.ImageMetadata{},\n\t}\n\n\tdirSrc := source.Description{\n\t\tMetadata: source.DirectoryMetadata{},\n\t}\n\n\tfileSrc := source.Description{\n\t\tMetadata: source.FileMetadata{},\n\t}\n\n\ttests := []struct {\n\t\tname          string\n\t\tsrc           source.Description\n\t\tcfg           *CreateSBOMConfig\n\t\twantTaskNames [][]string\n\t\twantManifest  *catalogerManifest\n\t\twantErr       require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"default catalogers for image source\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig(),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"image\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"default catalogers for directory source\",\n\t\t\tsrc:  dirSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig(),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"directory\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"directory\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"directory\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\t// note, the file source acts like a directory scan\n\t\t\tname: \"default catalogers for file source\",\n\t\t\tsrc:  fileSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig(),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"directory\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"directory\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"directory\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"no file digest cataloger\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig().WithCatalogerSelection(cataloging.NewSelectionRequest().WithRemovals(\"digest\")),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t\tfileCatalogerNames(\"file-metadata\", \"content\", \"binary-metadata\"),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t\tRemoveNamesOrTags:  []string{\"digest\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"image\"), fileCatalogerNames(\"file-metadata\", \"content\", \"binary-metadata\")),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select no file catalogers\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig().WithCatalogerSelection(cataloging.NewSelectionRequest().WithRemovals(\"file\")),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t\tnil, // note: there is a file cataloging group, with no items in it\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t\tRemoveNamesOrTags:  []string{\"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: pkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"select all file catalogers\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg:  DefaultCreateSBOMConfig().WithFilesConfig(filecataloging.DefaultConfig().WithSelection(file.AllFilesSelection)),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\t// note: there is a single group of catalogers for pkgs and files\n\t\t\t\tappend(\n\t\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t\t\tfileCatalogerNames()...,\n\t\t\t\t),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"image\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"user-provided persistent cataloger is always run (image)\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg: DefaultCreateSBOMConfig().WithCatalogers(\n\t\t\t\tpkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger(\"persistent\")),\n\t\t\t),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\taddTo(pkgCatalogerNamesWithTagOrName(t, \"image\"), \"persistent\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(addTo(pkgCatalogerNamesWithTagOrName(t, \"image\"), \"persistent\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"user-provided persistent cataloger is always run (directory)\",\n\t\t\tsrc:  dirSrc,\n\t\t\tcfg: DefaultCreateSBOMConfig().WithCatalogers(\n\t\t\t\tpkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger(\"persistent\")),\n\t\t\t),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\taddTo(pkgCatalogerNamesWithTagOrName(t, \"directory\"), \"persistent\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"directory\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(addTo(pkgCatalogerNamesWithTagOrName(t, \"directory\"), \"persistent\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"user-provided persistent cataloger is always run (user selection does not affect this)\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg: DefaultCreateSBOMConfig().WithCatalogers(\n\t\t\t\tpkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger(\"persistent\")),\n\t\t\t).WithCatalogerSelection(cataloging.NewSelectionRequest().WithSubSelections(\"javascript\")),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\taddTo(pkgIntersect(\"image\", \"javascript\"), \"persistent\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t\tSubSelectTags:      []string{\"javascript\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(addTo(pkgIntersect(\"image\", \"javascript\"), \"persistent\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"user-provided cataloger runs when selected\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg: DefaultCreateSBOMConfig().WithCatalogers(\n\t\t\t\tpkgcataloging.NewCatalogerReference(newDummyCataloger(\"user-provided\"), []string{\"image\"}),\n\t\t\t),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\taddTo(pkgCatalogerNamesWithTagOrName(t, \"image\"), \"user-provided\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(addTo(pkgCatalogerNamesWithTagOrName(t, \"image\"), \"user-provided\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"user-provided cataloger NOT run when NOT selected\",\n\t\t\tsrc:  imgSrc,\n\t\t\tcfg: DefaultCreateSBOMConfig().WithCatalogers(\n\t\t\t\tpkgcataloging.NewCatalogerReference(newDummyCataloger(\"user-provided\"), []string{\"bogus-selector-will-never-be-used\"}),\n\t\t\t),\n\t\t\twantTaskNames: [][]string{\n\t\t\t\tenvironmentCatalogerNames(),\n\t\t\t\tpkgCatalogerNamesWithTagOrName(t, \"image\"),\n\t\t\t\tfileCatalogerNames(),\n\t\t\t\trelationshipCatalogerNames(),\n\t\t\t\tunknownsTaskNames(),\n\t\t\t\tosFeatureDetectionTaskNames(),\n\t\t\t},\n\t\t\twantManifest: &catalogerManifest{\n\t\t\t\tRequested: cataloging.SelectionRequest{\n\t\t\t\t\tDefaultNamesOrTags: []string{\"image\", \"file\"},\n\t\t\t\t},\n\t\t\t\tUsed: flatten(pkgCatalogerNamesWithTagOrName(t, \"image\"), fileCatalogerNames()),\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\t// sanity check\n\t\t\trequire.NotEmpty(t, tt.wantTaskNames)\n\n\t\t\t// test the subject\n\t\t\tgotTasks, gotManifest, err := tt.cfg.makeTaskGroups(tt.src)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tgotNames := taskGroupNames(gotTasks)\n\n\t\t\tif d := cmp.Diff(\n\t\t\t\ttt.wantTaskNames,\n\t\t\t\tgotNames,\n\t\t\t\t// order within a group does not matter\n\t\t\t\tcmpopts.SortSlices(func(a, b string) bool {\n\t\t\t\t\treturn a < b\n\t\t\t\t}),\n\t\t\t); d != \"\" {\n\t\t\t\tt.Errorf(\"mismatched task group names (-want +got):\\n%s\", d)\n\t\t\t}\n\n\t\t\tif d := cmp.Diff(tt.wantManifest, gotManifest); d != \"\" {\n\t\t\t\tt.Errorf(\"mismatched cataloger manifest (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc pkgCatalogerNamesWithTagOrName(t *testing.T, token string) []string {\n\tvar names []string\n\tcfg := task.DefaultCatalogingFactoryConfig()\n\tfor _, factory := range task.DefaultPackageTaskFactories() {\n\t\tcat := factory(cfg)\n\n\t\tname := cat.Name()\n\n\t\tif selector, ok := cat.(task.Selector); ok {\n\t\t\tif selector.HasAllSelectors(token) {\n\t\t\t\tnames = append(names, name)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif name == token {\n\t\t\tnames = append(names, name)\n\t\t}\n\t}\n\n\t// these thresholds are arbitrary but should be large enough to catch any major changes\n\tswitch token {\n\tcase \"image\":\n\t\trequire.Greater(t, len(names), 18, \"minimum cataloger sanity check failed token\")\n\tcase \"directory\":\n\t\trequire.Greater(t, len(names), 25, \"minimum cataloger sanity check failed token\")\n\tdefault:\n\t\trequire.Greater(t, len(names), 0, \"minimum cataloger sanity check failed token\")\n\t}\n\n\tsort.Strings(names)\n\treturn names\n}\n\nfunc fileCatalogerNames(tokens ...string) []string {\n\tvar names []string\n\tcfg := task.DefaultCatalogingFactoryConfig()\ntopLoop:\n\tfor _, factory := range task.DefaultFileTaskFactories() {\n\t\tcat := factory(cfg)\n\n\t\tif cat == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tname := cat.Name()\n\n\t\tif len(tokens) == 0 {\n\t\t\tnames = append(names, name)\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, token := range tokens {\n\t\t\tif selector, ok := cat.(task.Selector); ok {\n\t\t\t\tif selector.HasAllSelectors(token) {\n\t\t\t\t\tnames = append(names, name)\n\t\t\t\t\tcontinue topLoop\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tif name == token {\n\t\t\t\tnames = append(names, name)\n\t\t\t}\n\t\t}\n\t}\n\n\tsort.Strings(names)\n\treturn names\n}\n\nfunc flatten(lists ...[]string) []string {\n\tvar final []string\n\tfor _, lst := range lists {\n\t\tfinal = append(final, lst...)\n\t}\n\tsort.Strings(final)\n\treturn final\n}\n\nfunc relationshipCatalogerNames() []string {\n\treturn []string{\"relationships-cataloger\"}\n}\n\nfunc unknownsTaskNames() []string {\n\treturn []string{\"unknowns-labeler\"}\n}\n\nfunc osFeatureDetectionTaskNames() []string {\n\treturn []string{\"os-feature-detection\"}\n}\n\nfunc environmentCatalogerNames() []string {\n\treturn []string{\"environment-cataloger\"}\n}\n\nfunc taskGroupNames(groups [][]task.Task) [][]string {\n\tvar names [][]string\n\tfor _, group := range groups {\n\t\tvar groupNames []string\n\t\tfor _, tsk := range group {\n\t\t\tgroupNames = append(groupNames, tsk.Name())\n\t\t}\n\t\tnames = append(names, groupNames)\n\t}\n\treturn names\n}\n\nfunc Test_replaceDefaultTagReferences(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tlst  []string\n\t\twant []string\n\t}{\n\t\t{\n\t\t\tname: \"no default tag\",\n\t\t\tlst:  []string{\"foo\", \"bar\"},\n\t\t\twant: []string{\"foo\", \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname: \"replace default tag\",\n\t\t\tlst:  []string{\"foo\", \"default\", \"bar\"},\n\t\t\twant: []string{\"foo\", \"replacement\", \"bar\"},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, replaceDefaultTagReferences([]string{\"replacement\"}, tt.lst))\n\t\t})\n\t}\n}\n\nfunc Test_findDefaultTag(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tsrc     source.Description\n\t\twant    []string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{},\n\t\t\t},\n\t\t\twant: []string{pkgcataloging.ImageTag, filecataloging.FileTag},\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.DirectoryMetadata{},\n\t\t\t},\n\t\t\twant: []string{pkgcataloging.DirectoryTag, filecataloging.FileTag},\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.FileMetadata{},\n\t\t\t},\n\t\t\twant: []string{pkgcataloging.DirectoryTag, filecataloging.FileTag}, // not a mistake...\n\t\t},\n\t\t{\n\t\t\tname: \"unknown\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: struct{}{},\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tgot, err := findDefaultTags(tt.src)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestCreateSBOMConfig_validate(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     *CreateSBOMConfig\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"incompatible ExcludeBinaryPackagesWithFileOwnershipOverlap selection\",\n\t\t\tcfg: DefaultCreateSBOMConfig().\n\t\t\t\tWithRelationshipsConfig(\n\t\t\t\t\tcataloging.DefaultRelationshipsConfig().\n\t\t\t\t\t\tWithExcludeBinaryPackagesWithFileOwnershipOverlap(true).\n\t\t\t\t\t\tWithPackageFileOwnershipOverlap(false),\n\t\t\t\t),\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.wantErr(t, tt.cfg.validate())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/event/event.go",
    "content": "/*\nPackage event provides event types for all events that the syft library published onto the event bus. By convention, for each event\ndefined here there should be a corresponding event parser defined in the parsers/ child package.\n*/\npackage event\n\nimport (\n\t\"github.com/wagoodman/go-partybus\"\n)\n\nconst (\n\ttypePrefix    = \"syft\"\n\tcliTypePrefix = typePrefix + \"-cli\"\n\n\t// Events from the syft library\n\n\t// FileIndexingStarted is a partybus event that occurs when the directory resolver begins indexing a filesystem\n\tFileIndexingStarted partybus.EventType = typePrefix + \"-file-indexing-started-event\"\n\n\t// AttestationStarted is a partybus event that occurs when starting an SBOM attestation process\n\tAttestationStarted partybus.EventType = typePrefix + \"-attestation-started-event\"\n\n\t// CatalogerTaskStarted is a partybus event that occurs when starting a task within a cataloger\n\tCatalogerTaskStarted partybus.EventType = typePrefix + \"-cataloger-task-started\"\n\n\t// PullSourceStarted is a partybus event that occurs when starting to pull a source (does not overlap with stereoscope image pull events,\n\t// this covers any additional sources such as snap and git repos).\n\tPullSourceStarted partybus.EventType = typePrefix + \"-pull-source-started\"\n\n\t// Events exclusively for the CLI\n\n\t// CLIAppUpdateAvailable is a partybus event that occurs when an application update is available\n\tCLIAppUpdateAvailable partybus.EventType = cliTypePrefix + \"-app-update-available\"\n\n\t// CLIReport is a partybus event that occurs when an analysis result is ready for final presentation to stdout\n\tCLIReport partybus.EventType = cliTypePrefix + \"-report\"\n\n\t// CLINotification is a partybus event that occurs when auxiliary information is ready for presentation to stderr\n\tCLINotification partybus.EventType = cliTypePrefix + \"-notification\"\n)\n"
  },
  {
    "path": "syft/event/monitor/generic_task.go",
    "content": "package monitor\n\nimport (\n\t\"io\"\n\n\t\"github.com/wagoodman/go-progress\"\n)\n\nconst (\n\tTopLevelCatalogingTaskID = \"cataloging\"\n\tPackageCatalogingTaskID  = \"package-cataloging\"\n)\n\ntype ShellProgress struct {\n\tio.Reader\n\tprogress.Progressable\n}\n\ntype Title struct {\n\tDefault      string\n\tWhileRunning string\n\tOnSuccess    string\n}\n\ntype GenericTask struct {\n\n\t// required fields\n\n\tTitle Title\n\n\t// optional format fields\n\n\tHideOnSuccess      bool\n\tHideStageOnSuccess bool\n\n\t// optional fields\n\n\tID       string\n\tParentID string\n\tContext  string\n}\n\ntype TaskProgress struct {\n\t*progress.AtomicStage\n\t*progress.Manual\n}\n"
  },
  {
    "path": "syft/event/parsers/parsers.go",
    "content": "/*\nPackage parsers provides parser helpers to extract payloads for each event type that the syft library publishes onto the event bus.\n*/\npackage parsers\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/wagoodman/go-partybus\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/syft/syft/event\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n)\n\ntype ErrBadPayload struct {\n\tType  partybus.EventType\n\tField string\n\tValue interface{}\n}\n\nfunc (e *ErrBadPayload) Error() string {\n\treturn fmt.Sprintf(\"event='%s' has bad event payload field=%q: %q\", string(e.Type), e.Field, e.Value)\n}\n\nfunc newPayloadErr(t partybus.EventType, field string, value interface{}) error {\n\treturn &ErrBadPayload{\n\t\tType:  t,\n\t\tField: field,\n\t\tValue: value,\n\t}\n}\n\nfunc checkEventType(actual, expected partybus.EventType) error {\n\tif actual != expected {\n\t\treturn newPayloadErr(expected, \"Type\", actual)\n\t}\n\treturn nil\n}\n\nfunc ParseFileIndexingStarted(e partybus.Event) (string, progress.StagedProgressable, error) {\n\tif err := checkEventType(e.Type, event.FileIndexingStarted); err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\tpath, ok := e.Source.(string)\n\tif !ok {\n\t\treturn \"\", nil, newPayloadErr(e.Type, \"Source\", e.Source)\n\t}\n\n\tprog, ok := e.Value.(progress.StagedProgressable)\n\tif !ok {\n\t\treturn \"\", nil, newPayloadErr(e.Type, \"Value\", e.Value)\n\t}\n\n\treturn path, prog, nil\n}\n\nfunc ParseCatalogerTaskStarted(e partybus.Event) (progress.StagedProgressable, *monitor.GenericTask, error) {\n\tif err := checkEventType(e.Type, event.CatalogerTaskStarted); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar mon progress.StagedProgressable\n\n\tsource, ok := e.Source.(monitor.GenericTask)\n\tif !ok {\n\t\treturn nil, nil, newPayloadErr(e.Type, \"Source\", e.Source)\n\t}\n\n\tmon, ok = e.Value.(progress.StagedProgressable)\n\tif !ok {\n\t\tmon = nil\n\t}\n\n\treturn mon, &source, nil\n}\n\nfunc ParsePullSourceStarted(e partybus.Event) (progress.StagedProgressable, *monitor.GenericTask, error) {\n\tif err := checkEventType(e.Type, event.PullSourceStarted); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar mon progress.StagedProgressable\n\n\tsource, ok := e.Source.(monitor.GenericTask)\n\tif !ok {\n\t\treturn nil, nil, newPayloadErr(e.Type, \"Source\", e.Source)\n\t}\n\n\tmon, ok = e.Value.(progress.StagedProgressable)\n\tif !ok {\n\t\tmon = nil\n\t}\n\n\treturn mon, &source, nil\n}\n\nfunc ParseAttestationStartedEvent(e partybus.Event) (io.Reader, progress.Progressable, *monitor.GenericTask, error) {\n\tif err := checkEventType(e.Type, event.AttestationStarted); err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tsource, ok := e.Source.(monitor.GenericTask)\n\tif !ok {\n\t\treturn nil, nil, nil, newPayloadErr(e.Type, \"Source\", e.Source)\n\t}\n\n\tsp, ok := e.Value.(*monitor.ShellProgress)\n\tif !ok {\n\t\treturn nil, nil, nil, newPayloadErr(e.Type, \"Value\", e.Value)\n\t}\n\n\treturn sp.Reader, sp.Progressable, &source, nil\n}\n\n// CLI event types\n\ntype UpdateCheck struct {\n\tNew     string\n\tCurrent string\n}\n\nfunc ParseCLIAppUpdateAvailable(e partybus.Event) (*UpdateCheck, error) {\n\tif err := checkEventType(e.Type, event.CLIAppUpdateAvailable); err != nil {\n\t\treturn nil, err\n\t}\n\n\tupdateCheck, ok := e.Value.(UpdateCheck)\n\tif !ok {\n\t\treturn nil, newPayloadErr(e.Type, \"Value\", e.Value)\n\t}\n\n\treturn &updateCheck, nil\n}\n\nfunc ParseCLIReport(e partybus.Event) (string, string, error) {\n\tif err := checkEventType(e.Type, event.CLIReport); err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tcontext, ok := e.Source.(string)\n\tif !ok {\n\t\t// this is optional\n\t\tcontext = \"\"\n\t}\n\n\treport, ok := e.Value.(string)\n\tif !ok {\n\t\treturn \"\", \"\", newPayloadErr(e.Type, \"Value\", e.Value)\n\t}\n\n\treturn context, report, nil\n}\n\nfunc ParseCLINotification(e partybus.Event) (string, string, error) {\n\tif err := checkEventType(e.Type, event.CLINotification); err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tcontext, ok := e.Source.(string)\n\tif !ok {\n\t\t// this is optional\n\t\tcontext = \"\"\n\t}\n\n\tnotification, ok := e.Value.(string)\n\tif !ok {\n\t\treturn \"\", \"\", newPayloadErr(e.Type, \"Value\", e.Value)\n\t}\n\n\treturn context, notification, nil\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/cataloger.go",
    "content": "package executable\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/dustin/go-humanize\"\n\n\t\"github.com/anchore/go-sync\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\ntype Config struct {\n\tMIMETypes []string `json:\"mime-types\" yaml:\"mime-types\" mapstructure:\"mime-types\"`\n\tGlobs     []string `json:\"globs\" yaml:\"globs\" mapstructure:\"globs\"`\n}\n\ntype Cataloger struct {\n\tconfig Config\n}\n\nfunc DefaultConfig() Config {\n\tm := mimetype.ExecutableMIMETypeSet.List()\n\tsort.Strings(m)\n\treturn Config{\n\t\tMIMETypes: m,\n\t\tGlobs:     nil,\n\t}\n}\n\nfunc NewCataloger(cfg Config) *Cataloger {\n\treturn &Cataloger{\n\t\tconfig: cfg,\n\t}\n}\n\nfunc (i *Cataloger) Catalog(resolver file.Resolver) (map[file.Coordinates]file.Executable, error) {\n\treturn i.CatalogCtx(context.Background(), resolver)\n}\n\nfunc (i *Cataloger) CatalogCtx(ctx context.Context, resolver file.Resolver) (map[file.Coordinates]file.Executable, error) {\n\tlocs, err := resolver.FilesByMIMEType(i.config.MIMETypes...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get file locations for binaries: %w\", err)\n\t}\n\n\tlocs, err = filterByGlobs(locs, i.config.Globs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tprog := catalogingProgress(int64(len(locs)))\n\n\tresults := make(map[file.Coordinates]file.Executable)\n\terrs := sync.Collect(&ctx, cataloging.ExecutorFile, sync.ToSeq(locs), func(loc file.Location) (*file.Executable, error) {\n\t\tprog.AtomicStage.Set(loc.Path())\n\n\t\texec, err := processExecutableLocation(loc, resolver)\n\t\tif err != nil {\n\t\t\terr = unknown.New(loc, err)\n\t\t}\n\t\treturn exec, err\n\t}, func(loc file.Location, exec *file.Executable) {\n\t\tif exec != nil {\n\t\t\tprog.Increment()\n\t\t\tresults[loc.Coordinates] = *exec\n\t\t}\n\t})\n\n\tlog.Debugf(\"executable cataloger processed %d files\", len(results))\n\n\tprog.AtomicStage.Set(fmt.Sprintf(\"%s executables\", humanize.Comma(prog.Current())))\n\tprog.SetCompleted()\n\n\treturn results, errs\n}\n\nfunc processExecutableLocation(loc file.Location, resolver file.Resolver) (*file.Executable, error) {\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", loc.RealPath).Debug(\"unable to get file contents\")\n\t\treturn nil, fmt.Errorf(\"unable to get file contents: %w\", err)\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\tuReader, err := unionreader.GetUnionReader(reader)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", loc.RealPath).Debug(\"unable to get union reader\")\n\t\treturn nil, fmt.Errorf(\"unable to get union reader: %w\", err)\n\t}\n\n\treturn processExecutable(loc, uReader)\n}\n\nfunc catalogingProgress(locations int64) *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault: \"Executables\",\n\t\t},\n\t\tParentID: monitor.TopLevelCatalogingTaskID,\n\t}\n\n\treturn bus.StartCatalogerTask(info, locations, \"\")\n}\n\nfunc filterByGlobs(locs []file.Location, globs []string) ([]file.Location, error) {\n\tif len(globs) == 0 {\n\t\treturn locs, nil\n\t}\n\tvar filteredLocs []file.Location\n\tfor _, loc := range locs {\n\t\tmatches, err := locationMatchesGlob(loc, globs)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif matches {\n\t\t\tfilteredLocs = append(filteredLocs, loc)\n\t\t}\n\t}\n\treturn filteredLocs, nil\n}\n\nfunc locationMatchesGlob(loc file.Location, globs []string) (bool, error) {\n\tfor _, glob := range globs {\n\t\tfor _, path := range []string{loc.RealPath, loc.AccessPath} {\n\t\t\tif path == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmatches, err := doublestar.Match(glob, path)\n\t\t\tif err != nil {\n\t\t\t\treturn false, fmt.Errorf(\"unable to match glob %q to path %q: %w\", glob, path, err)\n\t\t\t}\n\t\t\tif matches {\n\t\t\t\treturn true, nil\n\t\t\t}\n\t\t}\n\t}\n\treturn false, nil\n}\n\nfunc processExecutable(loc file.Location, reader unionreader.UnionReader) (*file.Executable, error) {\n\tdata := file.Executable{}\n\n\t// determine the executable format\n\n\tformat, err := findExecutableFormat(reader)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to determine executable kind for %v: %v\", loc.RealPath, err)\n\t\treturn nil, fmt.Errorf(\"unable to determine executable kind: %w\", err)\n\t}\n\n\tif format == \"\" {\n\t\t// this is not an \"unknown\", so just log -- this binary does not have parseable data in it\n\t\tlog.Debugf(\"unable to determine executable format for %q\", loc.RealPath)\n\t\treturn nil, nil\n\t}\n\n\tdata.Format = format\n\n\tswitch format {\n\tcase file.ELF:\n\t\tif err = findELFFeatures(&data, reader); err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", loc.RealPath).Trace(\"unable to determine ELF features\")\n\t\t\terr = fmt.Errorf(\"unable to determine ELF features: %w\", err)\n\t\t}\n\tcase file.PE:\n\t\tif err = findPEFeatures(&data, reader); err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", loc.RealPath).Trace(\"unable to determine PE features\")\n\t\t\terr = fmt.Errorf(\"unable to determine PE features: %w\", err)\n\t\t}\n\tcase file.MachO:\n\t\tif err = findMachoFeatures(&data, reader); err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", loc.RealPath).Trace(\"unable to determine Macho features\")\n\t\t\terr = fmt.Errorf(\"unable to determine Macho features: %w\", err)\n\t\t}\n\t}\n\n\t// always allocate collections for presentation\n\tif data.ImportedLibraries == nil {\n\t\tdata.ImportedLibraries = []string{}\n\t}\n\n\treturn &data, err\n}\n\nfunc findExecutableFormat(reader unionreader.UnionReader) (file.ExecutableFormat, error) {\n\t// read the first sector of the file\n\tbuf := make([]byte, 512)\n\tn, err := reader.ReadAt(buf, 0)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to read first sector of file: %w\", err)\n\t}\n\tif n < 512 {\n\t\treturn \"\", fmt.Errorf(\"unable to read enough bytes to determine executable format\")\n\t}\n\n\tswitch {\n\tcase isMacho(buf):\n\t\treturn file.MachO, nil\n\tcase isPE(buf):\n\t\treturn file.PE, nil\n\tcase isELF(buf):\n\t\treturn file.ELF, nil\n\t}\n\n\treturn \"\", nil\n}\n\nfunc isMacho(by []byte) bool {\n\t// sourced from https://github.com/gabriel-vasile/mimetype/blob/02af149c0dfd1444d9256fc33c2012bb3153e1d2/internal/magic/binary.go#L44\n\n\tif classOrMachOFat(by) && by[7] < 20 {\n\t\treturn true\n\t}\n\n\tif len(by) < 4 {\n\t\treturn false\n\t}\n\n\tbe := binary.BigEndian.Uint32(by)\n\tle := binary.LittleEndian.Uint32(by)\n\n\treturn be == macho.Magic32 ||\n\t\tle == macho.Magic32 ||\n\t\tbe == macho.Magic64 ||\n\t\tle == macho.Magic64\n}\n\n// Java bytecode and Mach-O binaries share the same magic number.\n// More info here https://github.com/threatstack/libmagic/blob/master/magic/Magdir/cafebabe\nfunc classOrMachOFat(in []byte) bool {\n\t// sourced from https://github.com/gabriel-vasile/mimetype/blob/02af149c0dfd1444d9256fc33c2012bb3153e1d2/internal/magic/binary.go#L44\n\n\t// There should be at least 8 bytes for both of them because the only way to\n\t// quickly distinguish them is by comparing byte at position 7\n\tif len(in) < 8 {\n\t\treturn false\n\t}\n\n\treturn bytes.HasPrefix(in, []byte{0xCA, 0xFE, 0xBA, 0xBE})\n}\n\nfunc isPE(by []byte) bool {\n\treturn bytes.HasPrefix(by, []byte(\"MZ\"))\n}\n\nfunc isELF(by []byte) bool {\n\treturn bytes.HasPrefix(by, []byte(elf.ELFMAG))\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/elf.go",
    "content": "package executable\n\nimport (\n\t\"debug/elf\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc findELFFeatures(data *file.Executable, reader unionreader.UnionReader) error {\n\tf, err := elf.NewFile(reader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlibs, err := f.ImportedLibraries()\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read imported libraries from elf file\")\n\t\terr = unknown.Joinf(err, \"unable to read imported libraries from elf file: %w\", err)\n\t\tlibs = nil\n\t}\n\n\tif libs == nil {\n\t\tlibs = []string{}\n\t}\n\n\tdata.ImportedLibraries = libs\n\tdata.ELFSecurityFeatures = findELFSecurityFeatures(f)\n\tdata.HasEntrypoint = elfHasEntrypoint(f)\n\tdata.HasExports = elfHasExports(f)\n\n\treturn err\n}\n\nfunc findELFSecurityFeatures(f *elf.File) *file.ELFSecurityFeatures {\n\treturn &file.ELFSecurityFeatures{\n\t\tSymbolTableStripped:           isElfSymbolTableStripped(f),\n\t\tStackCanary:                   checkElfStackCanary(f),\n\t\tNoExecutable:                  checkElfNXProtection(f),\n\t\tRelocationReadOnly:            checkElfRelROProtection(f),\n\t\tPositionIndependentExecutable: isELFPIE(f),\n\t\tDynamicSharedObject:           isELFDSO(f),\n\t\tLlvmSafeStack:                 checkLLVMSafeStack(f),\n\t\tLlvmControlFlowIntegrity:      checkLLVMControlFlowIntegrity(f),\n\t\tClangFortifySource:            checkClangFortifySource(f),\n\t}\n}\n\nfunc isElfSymbolTableStripped(file *elf.File) bool {\n\treturn file.Section(\".symtab\") == nil\n}\n\nfunc checkElfStackCanary(file *elf.File) *bool {\n\treturn hasAnyDynamicSymbols(file, \"__stack_chk_fail\", \"__stack_chk_guard\")\n}\n\nfunc hasAnyDynamicSymbols(file *elf.File, symbolNames ...string) *bool {\n\tdynSyms, err := file.DynamicSymbols()\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read dynamic symbols from elf file\")\n\t\treturn nil\n\t}\n\n\tnameSet := strset.New(symbolNames...)\n\n\tfor _, sym := range dynSyms {\n\t\tif nameSet.Has(sym.Name) {\n\t\t\treturn boolRef(true)\n\t\t}\n\t}\n\treturn boolRef(false)\n}\n\nfunc boolRef(b bool) *bool {\n\treturn &b\n}\n\nfunc checkElfNXProtection(file *elf.File) bool {\n\t// find the program headers until you find the GNU_STACK segment\n\tfor _, prog := range file.Progs {\n\t\tif prog.Type == elf.PT_GNU_STACK {\n\t\t\t// check if the GNU_STACK segment is executable\n\t\t\treturn prog.Flags&elf.PF_X == 0\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc checkElfRelROProtection(f *elf.File) file.RelocationReadOnly {\n\t// background on relro https://www.redhat.com/en/blog/hardening-elf-binaries-using-relocation-read-only-relro\n\thasRelro := false\n\thasBindNow := hasBindNowDynTagOrFlag(f)\n\n\tfor _, prog := range f.Progs {\n\t\tif prog.Type == elf.PT_GNU_RELRO {\n\t\t\thasRelro = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tswitch {\n\tcase hasRelro && hasBindNow:\n\t\treturn file.RelocationReadOnlyFull\n\tcase hasRelro:\n\t\treturn file.RelocationReadOnlyPartial\n\tdefault:\n\t\treturn file.RelocationReadOnlyNone\n\t}\n}\n\nfunc hasBindNowDynTagOrFlag(f *elf.File) bool {\n\tif hasElfDynTag(f, elf.DT_BIND_NOW) {\n\t\t// support older binaries...\n\t\treturn true\n\t}\n\n\t// \"DT_BIND_NOW ... use has been superseded by the DF_BIND_NOW flag\"\n\t// source: https://refspecs.linuxbase.org/elf/gabi4+/ch5.dynamic.html\n\treturn hasElfDynFlag(f, elf.DF_BIND_NOW)\n}\n\nfunc hasElfDynFlag(f *elf.File, flag elf.DynFlag) bool {\n\tvals, err := f.DynValue(elf.DT_FLAGS)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read DT_FLAGS from elf file\")\n\t\treturn false\n\t}\n\tfor _, val := range vals {\n\t\tif val&uint64(flag) != 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc hasElfDynFlag1(f *elf.File, flag elf.DynFlag1) bool {\n\tvals, err := f.DynValue(elf.DT_FLAGS_1)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read DT_FLAGS_1 from elf file\")\n\t\treturn false\n\t}\n\tfor _, val := range vals {\n\t\tif val&uint64(flag) != 0 {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc hasElfDynTag(f *elf.File, tag elf.DynTag) bool {\n\t// source https://github.com/golang/go/blob/9b4b3e5acca2dabe107fa2c3ed963097d78a4562/src/cmd/cgo/internal/testshared/shared_test.go#L280\n\n\tds := f.SectionByType(elf.SHT_DYNAMIC)\n\tif ds == nil {\n\t\treturn false\n\t}\n\td, err := ds.Data()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tfor len(d) > 0 {\n\t\tvar t elf.DynTag\n\t\tswitch f.Class {\n\t\tcase elf.ELFCLASS32:\n\t\t\tt = elf.DynTag(f.ByteOrder.Uint32(d[0:4]))\n\t\t\td = d[8:]\n\t\tcase elf.ELFCLASS64:\n\t\t\tt = elf.DynTag(f.ByteOrder.Uint64(d[0:8]))\n\t\t\td = d[16:]\n\t\t}\n\t\tif t == tag {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc isELFPIE(f *elf.File) bool {\n\t// being a shared object is not sufficient to be a PIE, the explicit flag must be set also\n\treturn isELFDSO(f) && hasElfDynFlag1(f, elf.DF_1_PIE)\n}\n\nfunc isELFDSO(f *elf.File) bool {\n\treturn f.Type == elf.ET_DYN\n}\n\nfunc checkLLVMSafeStack(file *elf.File) *bool {\n\t// looking for the presence of https://github.com/microsoft/compiler-rt/blob/30b3b8cb5c9a0854f2f40f187c6f6773561a35f2/lib/safestack/safestack.cc#L207\n\treturn hasAnyDynamicSymbols(file, \"__safestack_init\")\n}\n\nfunc checkLLVMControlFlowIntegrity(file *elf.File) *bool {\n\t// look for any symbols that are functions and end with \".cfi\"\n\tdynSyms, err := file.Symbols()\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read symbols from elf file\")\n\t\treturn nil\n\t}\n\n\tfor _, sym := range dynSyms {\n\t\tif isFunction(sym) && strings.HasSuffix(sym.Name, \".cfi\") {\n\t\t\treturn boolRef(true)\n\t\t}\n\t}\n\treturn boolRef(false)\n}\n\nfunc isFunction(sym elf.Symbol) bool {\n\treturn elf.ST_TYPE(sym.Info) == elf.STT_FUNC\n}\n\nvar fortifyPattern = regexp.MustCompile(`__\\w+_chk@.+`)\n\nfunc checkClangFortifySource(file *elf.File) *bool {\n\tdynSyms, err := file.Symbols()\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read symbols from elf file\")\n\t\treturn nil\n\t}\n\n\tfor _, sym := range dynSyms {\n\t\tif isFunction(sym) && fortifyPattern.MatchString(sym.Name) {\n\t\t\treturn boolRef(true)\n\t\t}\n\t}\n\treturn boolRef(false)\n}\n\nfunc elfHasEntrypoint(f *elf.File) bool {\n\t// this is akin to\n\t//    readelf -h ./path/to/bin | grep \"Entry point address\"\n\treturn f.Entry > 0\n}\n\nfunc elfHasExports(f *elf.File) bool {\n\t// this is akin to:\n\t//    nm -D --defined-only ./path/to/bin | grep ' T \\| W \\| B '\n\t// where:\n\t//   T - symbol in the text section\n\t//   W - weak symbol that might be overwritten\n\t//   B - variable located in the uninitialized data section\n\t// really anything that is not marked with 'U' (undefined) is considered an export.\n\tsymbols, err := f.DynamicSymbols()\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to get ELF dynamic symbols\")\n\t\treturn false\n\t}\n\n\tfor _, s := range symbols {\n\t\t// check if the section is SHN_UNDEF, which is the \"U\" output type from \"nm -D\" meaning that the symbol\n\t\t// is undefined, meaning it is not an export. Any entry that is not undefined is considered an export.\n\t\tif s.Section != elf.SHN_UNDEF {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/elf_test.go",
    "content": "package executable\n\nimport (\n\t\"debug/elf\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc Test_findELFSecurityFeatures(t *testing.T) {\n\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/elf\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\twant         *file.ELFSecurityFeatures\n\t\twantErr      require.ErrorAssertionFunc\n\t\twantStripped bool\n\t}{\n\t\t{\n\t\t\tname:    \"detect canary\",\n\t\t\tfixture: \"bin/with_canary\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:              boolRef(true), // ! important !\n\t\t\t\tRelocationReadOnly:       file.RelocationReadOnlyNone,\n\t\t\t\tLlvmSafeStack:            boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity: boolRef(false),\n\t\t\t\tClangFortifySource:       boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect nx\",\n\t\t\tfixture: \"bin/with_nx\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:              boolRef(false),\n\t\t\t\tNoExecutable:             true, // ! important !\n\t\t\t\tRelocationReadOnly:       file.RelocationReadOnlyNone,\n\t\t\t\tLlvmSafeStack:            boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity: boolRef(false),\n\t\t\t\tClangFortifySource:       boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect relro\",\n\t\t\tfixture: \"bin/with_relro\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:              boolRef(false),\n\t\t\t\tRelocationReadOnly:       file.RelocationReadOnlyFull, // ! important !\n\t\t\t\tLlvmSafeStack:            boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity: boolRef(false),\n\t\t\t\tClangFortifySource:       boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect partial relro\",\n\t\t\tfixture: \"bin/with_partial_relro\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:              boolRef(false),\n\t\t\t\tRelocationReadOnly:       file.RelocationReadOnlyPartial, // ! important !\n\t\t\t\tLlvmSafeStack:            boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity: boolRef(false),\n\t\t\t\tClangFortifySource:       boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect pie\",\n\t\t\tfixture: \"bin/with_pie\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:                   boolRef(false),\n\t\t\t\tRelocationReadOnly:            file.RelocationReadOnlyNone,\n\t\t\t\tPositionIndependentExecutable: true, // ! important !\n\t\t\t\tDynamicSharedObject:           true, // ! important !\n\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity:      boolRef(false),\n\t\t\t\tClangFortifySource:            boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect dso\",\n\t\t\tfixture: \"bin/pie_false_positive.so\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tStackCanary:                   boolRef(false),\n\t\t\t\tRelocationReadOnly:            file.RelocationReadOnlyPartial,\n\t\t\t\tNoExecutable:                  true,\n\t\t\t\tPositionIndependentExecutable: false, // ! important !\n\t\t\t\tDynamicSharedObject:           true,  // ! important !\n\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity:      boolRef(false),\n\t\t\t\tClangFortifySource:            boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect safestack\",\n\t\t\tfixture: \"bin/with_safestack\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tNoExecutable:                  true,\n\t\t\t\tStackCanary:                   boolRef(false),\n\t\t\t\tRelocationReadOnly:            file.RelocationReadOnlyPartial,\n\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\tLlvmSafeStack:                 boolRef(true), // ! important !\n\t\t\t\tLlvmControlFlowIntegrity:      boolRef(false),\n\t\t\t\tClangFortifySource:            boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect cfi\",\n\t\t\tfixture: \"bin/with_cfi\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tNoExecutable:                  true,\n\t\t\t\tStackCanary:                   boolRef(false),\n\t\t\t\tRelocationReadOnly:            file.RelocationReadOnlyPartial,\n\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity:      boolRef(true), // ! important !\n\t\t\t\tClangFortifySource:            boolRef(false),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect fortify\",\n\t\t\tfixture: \"bin/with_fortify\",\n\t\t\twant: &file.ELFSecurityFeatures{\n\t\t\t\tNoExecutable:                  true,\n\t\t\t\tStackCanary:                   boolRef(false),\n\t\t\t\tRelocationReadOnly:            file.RelocationReadOnlyPartial,\n\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\tLlvmControlFlowIntegrity:      boolRef(false),\n\t\t\t\tClangFortifySource:            boolRef(true), // ! important !\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := elf.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot := findELFSecurityFeatures(f)\n\n\t\t\tif d := cmp.Diff(tt.want, got); d != \"\" {\n\t\t\t\tt.Errorf(\"findELFSecurityFeatures() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_elfHasEntrypoint(t *testing.T) {\n\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/libhello.so\",\n\t\t\twant:    false,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello_linux\",\n\t\t\twant:    true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := elf.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, elfHasEntrypoint(f))\n\t\t})\n\t}\n}\n\nfunc Test_elfHasExports(t *testing.T) {\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/libhello.so\",\n\t\t\twant:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello_linux\",\n\t\t\twant:    false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := elf.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, elfHasExports(f))\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/macho.go",
    "content": "package executable\n\nimport (\n\t\"debug/macho\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\n// source http://www.cilinder.be/docs/next/NeXTStep/3.3/nd/DevTools/14_MachO/MachO.htmld/index.html\nconst (\n\tmachoNPExt uint8 = 0x10 /* N_PEXT: private external symbol bit */\n\tmachoNExt  uint8 = 0x01 /* N_EXT: external symbol bit, set for external symbols */\n\t// > #define LC_REQ_DYLD 0x80000000\n\t// > #define LC_MAIN (0x28|LC_REQ_DYLD) /* replacement for LC_UNIXTHREAD */\n\tlcMain = 0x28 | 0x80000000\n)\n\nfunc findMachoFeatures(data *file.Executable, reader unionreader.UnionReader) error {\n\t// TODO: support security features\n\n\t// a universal binary may have multiple architectures, so we need to check each one\n\treaders, err := unionreader.GetReaders(reader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar libs []string\n\tfor _, r := range readers {\n\t\tf, err := macho.NewFile(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trLibs, err := f.ImportedLibraries()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlibs = append(libs, rLibs...)\n\n\t\t// TODO handle only some having entrypoints/exports? If that is even practical\n\t\t// only check for entrypoint if we don't already have one\n\t\tif !data.HasEntrypoint {\n\t\t\tdata.HasEntrypoint = machoHasEntrypoint(f)\n\t\t}\n\t\t// only check for exports if we don't already have them\n\t\tif !data.HasExports {\n\t\t\tdata.HasExports = machoHasExports(f)\n\t\t}\n\t}\n\n\t// de-duplicate libraries\n\tdata.ImportedLibraries = internal.NewSet(libs...).ToSlice()\n\n\treturn nil\n}\n\nfunc machoHasEntrypoint(f *macho.File) bool {\n\t// derived from struct entry_point_command found from which explicitly calls out LC_MAIN:\n\t// https://opensource.apple.com/source/xnu/xnu-2050.18.24/EXTERNAL_HEADERS/mach-o/loader.h\n\t// we need to look for both LC_MAIN and LC_UNIXTHREAD commands to determine if the file is an executable\n\t//\n\t// this is akin to:\n\t//    otool -l ./path/to/bin | grep -A4 LC_MAIN\n\t//    otool -l ./path/to/bin | grep -A4 LC_UNIXTHREAD\n\tfor _, l := range f.Loads {\n\t\tdata := l.Raw()\n\t\tcmd := f.ByteOrder.Uint32(data)\n\n\t\tif macho.LoadCmd(cmd) == macho.LoadCmdUnixThread || macho.LoadCmd(cmd) == lcMain {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc machoHasExports(f *macho.File) bool {\n\tif f == nil || f.Symtab == nil {\n\t\treturn false\n\t}\n\tfor _, sym := range f.Symtab.Syms {\n\t\t// look for symbols that are:\n\t\t//  - not private and are external\n\t\t//  - do not have an N_TYPE value of N_UNDF (undefined symbol)\n\t\t//\n\t\t// here's the bit layout for the n_type field:\n\t\t// 0000 0000\n\t\t// ─┬─│ ─┬─│\n\t\t//  │ │  │ └─ N_EXT (external symbol)\n\t\t//  │ │  └─ N_TYPE (N_UNDF, N_ABS, N_SECT, N_PBUD, N_INDR)\n\t\t//  │ └─ N_PEXT (private external symbol)\n\t\t//  └─ N_STAB (debugging symbol)\n\t\t//\n\t\tisExternal := sym.Type&machoNExt == machoNExt\n\t\tisPrivate := sym.Type&machoNPExt == machoNPExt\n\t\tnTypeIsUndefined := sym.Type&0x0e == 0\n\n\t\tif isExternal && !isPrivate {\n\t\t\tif sym.Name == \"_main\" || sym.Name == \"__mh_execute_header\" {\n\t\t\t\t// ...however there are some symbols that are not exported but are still important\n\t\t\t\t// for debugging or as an entrypoint, so we need to explicitly check for them\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif nTypeIsUndefined {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// we have a symbol that is not private and is external\n\t\t\t// and is not undefined, so it is an export\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/macho_test.go",
    "content": "package executable\n\nimport (\n\t\"debug/macho\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc Test_machoHasEntrypoint(t *testing.T) {\n\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/libhello.dylib\",\n\t\t\twant:    false,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello_mac\",\n\t\t\twant:    true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := macho.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, machoHasEntrypoint(f))\n\t\t})\n\t}\n}\n\nfunc Test_machoHasExports(t *testing.T) {\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/libhello.dylib\",\n\t\t\twant:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello_mac\",\n\t\t\twant:    false,\n\t\t},\n\t\t{\n\t\t\tname:    \"gcc-amd64-darwin-exec-debug\",\n\t\t\tfixture: \"bin/gcc-amd64-darwin-exec-debug\",\n\t\t\twant:    false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := macho.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, machoHasExports(f))\n\t\t})\n\t}\n}\n\nfunc Test_machoUniversal(t *testing.T) {\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    file.Executable\n\t}{\n\t\t{\n\t\t\tname:    \"universal lib\",\n\t\t\tfixture: \"bin/libhello_universal.dylib\",\n\t\t\twant:    file.Executable{HasExports: true, HasEntrypoint: false},\n\t\t},\n\t\t{\n\t\t\tname:    \"universal application\",\n\t\t\tfixture: \"bin/hello_mac_universal\",\n\t\t\twant:    file.Executable{HasExports: false, HasEntrypoint: true},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tvar data file.Executable\n\t\t\terr := findMachoFeatures(&data, readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, tt.want.HasEntrypoint, data.HasEntrypoint)\n\t\t\tassert.Equal(t, tt.want.HasExports, data.HasExports)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/pe.go",
    "content": "package executable\n\nimport (\n\t\"debug/pe\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc findPEFeatures(data *file.Executable, reader unionreader.UnionReader) error {\n\t// TODO: support security features\n\n\tf, err := pe.NewFile(reader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlibs, err := f.ImportedLibraries()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdata.ImportedLibraries = libs\n\tdata.HasEntrypoint = peHasEntrypoint(f)\n\tdata.HasExports = peHasExports(f)\n\n\treturn nil\n}\n\nvar (\n\twindowsExeEntrypoints = strset.New(\"main\", \"WinMain\", \"wWinMain\")\n\twindowsDllEntrypoints = strset.New(\"DllMain\", \"_DllMainCRTStartup@12\", \"CRT_INIT\")\n)\n\nfunc peHasEntrypoint(f *pe.File) bool {\n\t// DLLs can have entrypoints, but they are not \"executables\" in the traditional sense,\n\t// but instead point to an initialization function (DLLMain).\n\t// The PE format does not require an entrypoint, so it is possible to not have one, however,\n\t// the microsoft C runtime does: https://learn.microsoft.com/en-US/troubleshoot/developer/visualstudio/cpp/libraries/use-c-run-time\n\t//\n\t// > When building a DLL which uses any of the C Run-time libraries, in order to ensure that the CRT is properly initialized, either\n\t// > 1. the initialization function must be named DllMain() and the entry point must be specified with the linker option -entry:_DllMainCRTStartup@12 - or -\n\t// > 2. the DLL's entry point must explicitly call CRT_INIT() on process attach and process detach\n\t//\n\t// This isn't really helpful from a user perspective when it comes to indicating if there is an entrypoint or not\n\t// since it will always effectively be true for DLLs! All DLLs and Executables (aka \"modules\") have a single\n\t// entrypoint, _GetPEImageBase, but we're more interested in the logical idea of an entrypoint.\n\t// See https://learn.microsoft.com/en-us/windows/win32/psapi/module-information for more details.\n\n\tvar hasLibEntrypoint, hasExeEntrypoint bool\n\tfor _, s := range f.Symbols {\n\t\tif windowsExeEntrypoints.Has(s.Name) {\n\t\t\thasExeEntrypoint = true\n\t\t}\n\t\tif windowsDllEntrypoints.Has(s.Name) {\n\t\t\thasLibEntrypoint = true\n\t\t}\n\t}\n\n\tswitch v := f.OptionalHeader.(type) {\n\tcase *pe.OptionalHeader32:\n\t\treturn v.AddressOfEntryPoint > 0 && !hasLibEntrypoint && hasExeEntrypoint\n\tcase *pe.OptionalHeader64:\n\t\treturn v.AddressOfEntryPoint > 0 && !hasLibEntrypoint && hasExeEntrypoint\n\t}\n\treturn false\n}\n\nfunc peHasExports(f *pe.File) bool {\n\tif f.OptionalHeader == nil {\n\t\treturn false\n\t}\n\n\tswitch v := f.OptionalHeader.(type) {\n\tcase *pe.OptionalHeader32:\n\t\treturn v.DataDirectory[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].Size > 0\n\tcase *pe.OptionalHeader64:\n\t\treturn v.DataDirectory[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].Size > 0\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/pe_test.go",
    "content": "package executable\n\nimport (\n\t\"debug/pe\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc Test_peHasEntrypoint(t *testing.T) {\n\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/hello.dll\", // though this is a shared lib, it has an entrypoint (DLLMain)\n\t\t\twant:    false,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello.exe\",\n\t\t\twant:    true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := pe.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, peHasEntrypoint(f))\n\t\t})\n\t}\n}\n\nfunc Test_peHasExports(t *testing.T) {\n\treaderForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {\n\t\tt.Helper()\n\t\tf, err := os.Open(filepath.Join(\"testdata/shared-info\", fixture))\n\t\trequire.NoError(t, err)\n\t\treturn f\n\t}\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    bool\n\t}{\n\t\t{\n\t\t\tname:    \"shared lib\",\n\t\t\tfixture: \"bin/hello.dll\",\n\t\t\twant:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"application\",\n\t\t\tfixture: \"bin/hello.exe\",\n\t\t\twant:    false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := pe.NewFile(readerForFixture(t, tt.fixture))\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, peHasExports(f))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/.gitignore",
    "content": "bin\nactual_verify\nDockerfile.sha256"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/Makefile",
    "content": ".DEFAULT_GOAL := default\n\ndefault:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir || exit 1; \\\n\t\tfi; \\\n\tdone\n\n%:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir $@ || exit 1; \\\n\t\tfi; \\\n\tdone\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/.gitignore",
    "content": "../bin\nactual_verify\nDockerfile.sha256"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/Dockerfile",
    "content": "FROM gcc:9.5.0\n\nRUN apt update -y && apt install -y clang cmake git make m4 pkg-config zlib1g-dev\n\n## from https://github.com/runsafesecurity/selfrando/blob/tb-v0.4.2/docs/linux-build-instructions.md\n#RUN git clone https://github.com/runsafesecurity/selfrando.git && \\\n#    export SR_ARCH=`uname -m | sed s/i686/x86/` && \\\n#    cd selfrando && \\\n#    cmake . -DSR_DEBUG_LEVEL=env -DCMAKE_BUILD_TYPE=Release -DSR_BUILD_LIBELF=1 \\\n#      -DSR_ARCH=$SR_ARCH -DSR_LOG=console \\\n#      -DSR_FORCE_INPLACE=1 -G \"Unix Makefiles\" \\\n#      -DCMAKE_INSTALL_PREFIX:PATH=$PWD/out/$SR_ARCH\n#RUN cd selfrando && make -j`nprocs --all`\n#RUN cd selfrando && make install\n\nRUN curl -o /bin/checksec https://raw.githubusercontent.com/slimm609/checksec.sh/2.6.0/checksec && chmod +x /bin/checksec\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/Makefile",
    "content": "BIN=./bin\nTOOL_IMAGE=localhost/syft-bin-build-tools:latest\nVERIFY_FILE=actual_verify\nFINGERPRINT_FILE=$(BIN).fingerprint\n\nifndef BIN\n    $(error BIN is not set)\nendif\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: build verify\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\ntools-check:\n\t@sha256sum -c Dockerfile.sha256 || (echo \"Tools Dockerfile has changed\" && exit 1)\n\n# for selfrando...\n# docker buildx build --platform linux/amd64 -t $(TOOL_IMAGE) .\n\ntools:\n\t@(docker image inspect $(TOOL_IMAGE) > /dev/null 2>&1 && make tools-check) || (docker build -t $(TOOL_IMAGE) . && sha256sum Dockerfile > Dockerfile.sha256)\n\nbuild: tools\n\tmkdir -p $(BIN)\n\tdocker run -i -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) make\n\nverify: tools\n\t@rm -f $(VERIFY_FILE)\n\tdocker run -i -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) make verify > $(VERIFY_FILE)\n\t@python3 ./differ expected_verify $(VERIFY_FILE)\n\ndebug:\n\tdocker run -i --rm -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) bash\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find project Dockerfile Makefile -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:\n\trm -rf $(BIN) Dockerfile.sha256 $(VERIFY_FILE) $(FINGERPRINT_FILE)\n\n.PHONY: tools tools-check build verify debug clean"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/differ/__main__.py",
    "content": "import json\nimport sys\n\n\ndef load_json(file_path):\n    with open(file_path, 'r') as file:\n        return json.load(file)\n\n\ndef diff_json(json1, json2):\n    differences_found = False\n\n    for key in json1:\n        if key not in json2:\n            print(f'missing key \"{key}\"')\n            continue\n\n        differences = []\n        for subkey in json1[key]:\n            if subkey not in json2[key]:\n                differences.append(f'  - \"{subkey}\": expected \"{json1[key][subkey]}\" but was MISSING')\n                continue\n\n            if subkey in json2[key] and json1[key][subkey] != json2[key][subkey]:\n                differences.append(f'  - \"{subkey}\": expected \"{json1[key][subkey]}\" got \"{json2[key][subkey]}\"')\n\n        if differences:\n            differences_found = True\n            print(f'{key}')\n            for diff in differences:\n                print(diff)\n            print()\n\n    return differences_found\n\n\ndef main():\n    if len(sys.argv) != 3:\n        print(\"Usage: python ./differ file1.json file2.json\")\n        sys.exit(1)\n\n    json1 = load_json(sys.argv[1])\n    json2 = load_json(sys.argv[2])\n\n    if diff_json(json1, json2):\n        print(\"FAIL: unexpected security feature differences\")\n        sys.exit(1)\n    else:\n        print(\"PASS: all security features accounted for\")\n        sys.exit(0)\n\n\nmain()\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/expected_verify",
    "content": "{ \"dir\": { \"name\":\"../bin\" }, \"../bin/no_protection\": { \"relro\":\"no\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"yes\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/no_protection\"}, \"../bin/with_nx\": { \"relro\":\"no\",\"canary\":\"no\",\"nx\":\"yes\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_nx\"}, \"../bin/with_rpath\": { \"relro\":\"no\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"yes\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_rpath\"}, \"../bin/with_canary\": { \"relro\":\"no\",\"canary\":\"yes\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_canary\"}, \"../bin/with_relro\": { \"relro\":\"full\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_relro\"}, \"../bin/with_pie\": { \"relro\":\"no\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"yes\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_pie\"}, \"../bin/with_runpath\": { \"relro\":\"no\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"yes\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_runpath\"}, \"../bin/with_safestack\": { \"relro\":\"partial\",\"canary\":\"no\",\"nx\":\"yes\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"yes\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"3\", \"filename\":\"../bin/with_safestack\"}, \"../bin/pie_false_positive.so\": { \"relro\":\"partial\",\"canary\":\"no\",\"nx\":\"yes\",\"pie\":\"dso\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"0\", \"filename\":\"../bin/pie_false_positive.so\"}, \"../bin/with_cfi\": { \"relro\":\"partial\",\"canary\":\"no\",\"nx\":\"yes\",\"pie\":\"no\",\"clangcfi\":\"yes\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_cfi\"}, \"../bin/with_partial_relro\": { \"relro\":\"partial\",\"canary\":\"no\",\"nx\":\"no\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_partial_relro\"}, \"../bin/protected\": { \"relro\":\"full\",\"canary\":\"yes\",\"nx\":\"yes\",\"pie\":\"yes\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"no\",\"fortified\":\"0\",\"fortify-able\":\"2\", \"filename\":\"../bin/protected\"}, \"../bin/with_fortify\": { \"relro\":\"partial\",\"canary\":\"no\",\"nx\":\"yes\",\"pie\":\"no\",\"clangcfi\":\"no\",\"safestack\":\"no\",\"rpath\":\"no\",\"runpath\":\"no\",\"symbols\":\"yes\",\"fortify_source\":\"yes\",\"fortified\":\"1\",\"fortify-able\":\"2\", \"filename\":\"../bin/with_fortify\"}}"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/project/Makefile",
    "content": "### GCC Options ############################################\nCANARY := -fstack-protector\nNO_CANARY := -fno-stack-protector\n\nSHARED_OBJ := -shared\n\nRELRO := -z relro -z now\nPARTIAL_RELRO := -z relro\nNO_RELRO := -z norelro\n\nNX := -z noexecstack\nNO_NX := -z execstack\n\nPIE := -fpic -pie\nNO_PIE := -no-pie\n\n# deprecated\nRPATH := -Wl,--disable-new-dtags,-rpath,./libs\n\n# replaces RPATH (thus us mutually exclusive with it)\nRUNPATH :=  -Wl,-rpath,./libs\n\nGCCFLAGS := -g \n\n### Clang Options ############################################\n\nSAFE_STACK := -fsanitize=safe-stack\n\nCFI := -flto -fvisibility=hidden -fsanitize=cfi\n\nFORTIFY := -O2 -D_FORTIFY_SOURCE=2\n\n### Common Options ############################################\n\nSRC := main.c\nLIB_SRC := lib.c\nBIN := ../bin\n\nBINS :=        $(BIN)/no_protection $(BIN)/with_nx $(BIN)/pie_false_positive.so $(BIN)/with_pie $(BIN)/with_canary $(BIN)/with_relro $(BIN)/with_partial_relro $(BIN)/with_rpath $(BIN)/with_runpath $(BIN)/with_safestack $(BIN)/with_cfi $(BIN)/with_fortify $(BIN)/protected\n#.PHONY: verify $(BIN)/no_protection $(BIN)/with_nx $(BIN)/pie_false_positive.so $(BIN)/with_pie $(BIN)/with_canary $(BIN)/with_relro $(BIN)/with_partial_relro $(BIN)/with_rpath $(BIN)/with_runpath $(BIN)/with_safestack $(BIN)/with_cfi $(BIN)/with_fortify $(BIN)/protected\n.PHONY: verify clean all\n\nall: $(BINS)\n\n\n$(BIN)/no_protection : $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RUNPATH) \n\n$(BIN)/with_nx : $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NX) $(NO_RELRO) $(NO_PIE) \n\n$(BIN)/pie_false_positive.so: $(LIB_SRC)\n\tgcc $< -c -Wall -Werror -fpic $(LIB_SRC)\n\tgcc -shared -o $@ lib.o ; rm lib.o\n\n$(BIN)/with_pie: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(PIE)\n\n$(BIN)/with_canary: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) \n\n$(BIN)/with_relro: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(RELRO) $(NO_PIE)\n\n$(BIN)/with_partial_relro: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(PARTIAL_RELRO) $(NO_PIE)\n\n$(BIN)/with_rpath: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RPATH)\n\n$(BIN)/with_runpath: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RUNPATH)\n\n$(BIN)/with_safestack: $(SRC)\n\tclang $< -o $@ $(SAFE_STACK)\n\n$(BIN)/with_cfi: $(SRC)\n\tclang $< -o $@ $(CFI)\n\n$(BIN)/with_fortify: $(SRC)\n\tclang $< -o $@ $(FORTIFY)\n\n#$(BIN)/with_selfrando: $(SRC)\n#\tsrenv gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE)\n\n$(BIN)/protected: $(SRC)\n\tgcc $< -o $@ $(GCCFLAGS) $(CANARY) $(NX) $(RELRO) $(PIE)\n\nverify:\n\t@/bin/checksec --dir=$(BIN) --extended --output=json\n\nclean:\n\trm -rf $(BINS)"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/project/lib.c",
    "content": "#include <stdio.h>\n\nvoid foo(void)\n{\n    puts(\"Share me!\");\n}"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/project/lib.h",
    "content": "#ifndef foo_h__\n#define foo_h__\n\nextern void foo(void);\n\n#endif  // foo_h__"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/elf/project/main.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n\n// source: https://github.com/trailofbits/clang-cfi-showcase/blob/master/cfi_icall.c\n\ntypedef int (*int_arg_fn)(int);\ntypedef int (*float_arg_fn)(float);\n\nstatic int int_arg(int arg) {\n    printf(\"In %s: (%d)\\n\", __FUNCTION__, arg);\n    return 0;\n}\n\nstatic int float_arg(float arg) {\n    printf(\"CFI should protect transfer to here\\n\");\n    printf(\"In %s: (%f)\\n\", __FUNCTION__, (double)arg);\n    return 0;\n}\n\nstatic int bad_int_arg(int arg) {\n    printf(\"CFI will not protect transfer to here\\n\");\n    printf(\"In %s: (%d)\\n\", __FUNCTION__, arg);\n    return 0;\n}\n\nstatic int not_entry_point(int arg) {\n    // nop sled for x86 / x86-64\n    // these instructions act as a buffer\n    // for an indirect control flow transfer to skip\n    // a valid function entry point, but continue\n    // to execute normal code\n    __asm__ volatile (\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\" \"nop\\n\"\n            );\n    printf(\"CFI ensures control flow only transfers to potentially valid destinations\\n\");\n    printf(\"In %s: (%d)\\n\", __FUNCTION__, arg);\n    // need to exit or the program will segfault anyway,\n    // since the indirect call skipped the function preamble\n    exit(arg);\n}\n\nstruct foo {\n    int_arg_fn int_funcs[1];\n    int_arg_fn bad_int_funcs[1];\n    float_arg_fn float_funcs[1];\n    int_arg_fn not_entries[1];\n};\n\n// the struct aligns the function pointer arrays\n// so indexing past the end will reliably\n// call working function pointers\nstatic struct foo f = {\n    .int_funcs = {int_arg},\n    .bad_int_funcs = {bad_int_arg},\n    .float_funcs = {float_arg},\n    .not_entries = {(int_arg_fn)((uintptr_t)(not_entry_point)+0x20)}\n};\n\nvoid simple1() {\n    char buf[16];\n    fgets(buf, sizeof(buf), stdin);\n    printf(buf);\n}\n\nvoid simple2() {\n    char buf[16];\n    scanf(\"%s\", buf);\n}\n\n\nint main(int argc, char **argv) {\n    if(argc != 2) {\n        printf(\"Usage: %s <option>\\n\", argv[0]);\n        printf(\"Option values:\\n\");\n        printf(\"\\t0\\tCall correct function\\n\");\n        printf(\"\\t1\\tCall the wrong function but with the same signature\\n\");\n        printf(\"\\t2\\tCall a float function with an int function signature\\n\");\n        printf(\"\\t3\\tCall into the middle of a function\\n\");\n        printf(\"\\n\");\n        printf(\"\\tAll other options are undefined, but should be caught by CFI :)\\n\");\n        printf(\"\\n\\n\");\n        printf(\"Here are some pointers so clang doesn't optimize away members of `struct foo f`:\\n\");\n        printf(\"\\tint_funcs: %p\\n\", (void*)f.int_funcs);\n        printf(\"\\tbad_int_funcs: %p\\n\", (void*)f.bad_int_funcs);\n        printf(\"\\tfloat_funcs: %p\\n\", (void*)f.float_funcs);\n        printf(\"\\tnot_entries: %p\\n\", (void*)f.not_entries);\n        return 1;\n    }\n\n    simple1();\n    simple2();\n\n    printf(\"Calling a function:\\n\");\n\n    int idx = argv[1][0] - '0';\n\n    return f.int_funcs[idx](idx);\n}"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/.gitignore",
    "content": "bin"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\n\nARG OSXCROSS_VERSION=13.1\nFROM --platform=linux/amd64 crazymax/osxcross:${OSXCROSS_VERSION}-ubuntu AS osxcross\n\nFROM --platform=linux/amd64 ubuntu:22.04\n\nRUN apt update -y && apt install -y \\\n    curl wget \\\n    make gcc clang \\\n    git mingw-w64\n\nCOPY --from=osxcross /osxcross /osxcross\nENV PATH=\"/osxcross/bin:$PATH\"\nENV LD_LIBRARY_PATH=\"/osxcross/lib:$LD_LIBRARY_PATH\"\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/Makefile",
    "content": "BIN=./bin\nTOOL_IMAGE=localhost/syft-shared-info-build-tools:latest\nVERIFY_FILE=actual_verify\nFINGERPRINT_FILE=$(BIN).fingerprint\n\nifndef BIN\n    $(error BIN is not set)\nendif\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: build\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\ntools-check:\n\t@sha256sum -c Dockerfile.sha256 || (echo \"Tools Dockerfile has changed\" && exit 1)\n\ntools:\n\t@(docker image inspect $(TOOL_IMAGE) > /dev/null 2>&1 && make tools-check) || (docker build --platform linux/amd64 -t $(TOOL_IMAGE) . && sha256sum Dockerfile > Dockerfile.sha256)\n\nbuild: tools\n\t@mkdir -p $(BIN)\n\tdocker run --platform linux/amd64 -i -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) make\n\ndebug:\n\tdocker run --platform linux/amd64 -i --rm -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) bash\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find project Dockerfile Makefile -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:\n\trm -rf $(BIN) Dockerfile.sha256 $(VERIFY_FILE) $(FINGERPRINT_FILE)\n\n.PHONY: tools tools-check build debug clean\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/Makefile",
    "content": "# invoke all make files in subdirectories\n.PHONY: all hello libhello\n\nall: hello libhello ../bin/gcc-amd64-darwin-exec-debug\n\nhello:\n\t$(MAKE) -C hello\n\nlibhello:\n\t$(MAKE) -C libhello\n\n../bin/gcc-amd64-darwin-exec-debug:\n\tcurl -L -o ../bin/gcc-amd64-darwin-exec-debug  https://github.com/golang/tools/raw/9ed98faabadd2cb94de86d5290b1c6942b7c4877/cmd/splitdwarf/internal/macho/testdata/gcc-amd64-darwin-exec-debug\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/hello/Makefile",
    "content": ".PHONY: all linux windows mac\n\nBIN=../../bin\n\nall: $(BIN)/hello_linux $(BIN)/hello.exe $(BIN)/hello_mac $(BIN)/hello_mac_universal\n\nlinux: $(BIN)/libhello.so\n\nwindows: $(BIN)/libhello.dll\n\nmac: $(BIN)/libhello.dylib $(BIN)/hello_mac_universal\n\n$(BIN)/hello_linux:\n\tgcc hello.c -o $(BIN)/hello_linux\n\n$(BIN)/hello.exe:\n\tx86_64-w64-mingw32-gcc hello.c -o $(BIN)/hello.exe\n\n$(BIN)/hello_mac:\n\to64-clang hello.c -o $(BIN)/hello_mac\n\n$(BIN)/hello_mac_universal:\n\to64-clang -arch arm64 -arch x86_64 hello.c -o $(BIN)/hello_mac_universal\n\nclean:\n\trm -f $(BIN)/hello_linux $(BIN)/hello.exe $(BIN)/hello_mac $(BIN)/hello_mac_universal\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/hello/hello.c",
    "content": "#include <stdio.h>\n\nint main() {\n    printf(\"Hello, World!\\n\");\n    return 0;\n}\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/libhello/Makefile",
    "content": ".PHONY: all linux windows mac\n\nBIN=../../bin\n\nall:  $(BIN)/libhello.so  $(BIN)/libhello.dll $(BIN)/libhello.dylib $(BIN)/libhello_universal.dylib\n\nlinux: $(BIN)/libhello.so\n\nwindows: $(BIN)/libhello.dll\n\nmac: $(BIN)/libhello.dylib $(BIN)/libhello_universal.dylib\n\n$(BIN)/libhello.so:\n\tgcc -shared -fPIC -o $(BIN)/libhello.so hello.c\n\n$(BIN)/libhello.dll:\n\tx86_64-w64-mingw32-gcc -shared -o $(BIN)/hello.dll hello.c -Wl,--out-implib,$(BIN)/libhello.a\n\n$(BIN)/libhello.dylib:\n\to64-clang -dynamiclib -o $(BIN)/libhello.dylib hello.c\n\n$(BIN)/libhello_universal.dylib:\n\to64-clang -dynamiclib -arch arm64 -arch x86_64 hello.c -o $(BIN)/libhello_universal.dylib\n\nclean:\n\trm -f $(BIN)/libhello.so $(BIN)/hello.dll $(BIN)/libhello.dylib $(BIN)/libhello.a $(BIN)/libhello_universal.dylib\n"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/libhello/hello.c",
    "content": "#include <stdio.h>\n\nvoid hello() {\n    printf(\"Hello from shared library!\\n\");\n}"
  },
  {
    "path": "syft/file/cataloger/executable/testdata/shared-info/project/libhello/hello.h",
    "content": "#ifndef HELLO_H\n#define HELLO_H\n\nvoid hello();\n\n#endif"
  },
  {
    "path": "syft/file/cataloger/filecontent/cataloger.go",
    "content": "package filecontent\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/dustin/go-humanize\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/bus\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype Config struct {\n\t// Globs are the file patterns that must be matched for a file to be considered for cataloging.\n\tGlobs []string `yaml:\"globs\" json:\"globs\" mapstructure:\"globs\"`\n\n\t// SkipFilesAboveSize is the maximum file size (in bytes) to allow to be considered while cataloging. If the file is larger than this size it will be skipped.\n\tSkipFilesAboveSize int64 `yaml:\"skip-files-above-size\" json:\"skip-files-above-size\" mapstructure:\"skip-files-above-size\"`\n}\n\ntype Cataloger struct {\n\tglobs                     []string\n\tskipFilesAboveSizeInBytes int64\n}\n\nfunc DefaultConfig() Config {\n\treturn Config{\n\t\tSkipFilesAboveSize: 250 * intFile.KB,\n\t}\n}\n\nfunc NewCataloger(cfg Config) *Cataloger {\n\treturn &Cataloger{\n\t\tglobs:                     cfg.Globs,\n\t\tskipFilesAboveSizeInBytes: cfg.SkipFilesAboveSize,\n\t}\n}\n\nfunc (i *Cataloger) Catalog(_ context.Context, resolver file.Resolver) (map[file.Coordinates]string, error) {\n\tresults := make(map[file.Coordinates]string)\n\tvar locations []file.Location\n\tvar errs error\n\n\tlocations, err := resolver.FilesByGlob(i.globs...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tprog := catalogingProgress(int64(len(locations)))\n\n\tfor _, location := range locations {\n\t\tprog.AtomicStage.Set(location.Path())\n\n\t\tmetadata, err := resolver.FileMetadataByLocation(location)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\tprog.SetError(err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif i.skipFilesAboveSizeInBytes > 0 && metadata.Size() > i.skipFilesAboveSizeInBytes {\n\t\t\tcontinue\n\t\t}\n\n\t\tresult, err := i.catalogLocation(resolver, location)\n\t\tif internal.IsErrPathPermission(err) {\n\t\t\terrs = unknown.Append(errs, location, fmt.Errorf(\"permission error reading file contents: %w\", err))\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tprog.Increment()\n\n\t\tresults[location.Coordinates] = result\n\t}\n\n\tlog.Debugf(\"file contents cataloger processed %d files\", len(results))\n\n\tprog.AtomicStage.Set(fmt.Sprintf(\"%s files\", humanize.Comma(prog.Current())))\n\tprog.SetCompleted()\n\n\treturn results, errs\n}\n\nfunc (i *Cataloger) catalogLocation(resolver file.Resolver, location file.Location) (string, error) {\n\tcontentReader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer internal.CloseAndLogError(contentReader, location.AccessPath)\n\n\tbuf := &bytes.Buffer{}\n\tencoder := base64.NewEncoder(base64.StdEncoding, buf)\n\tif _, err = io.Copy(encoder, contentReader); err != nil {\n\t\treturn \"\", internal.ErrPath{Context: \"content-cataloger\", Path: location.RealPath, Err: err}\n\t}\n\t// note: it's important to close the reader before reading from the buffer since closing will flush the remaining bytes\n\tif err := encoder.Close(); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to close base64 encoder: %w\", err)\n\t}\n\n\treturn buf.String(), nil\n}\n\nfunc catalogingProgress(locations int64) *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault: \"File contents\",\n\t\t},\n\t\tParentID: monitor.TopLevelCatalogingTaskID,\n\t}\n\n\treturn bus.StartCatalogerTask(info, locations, \"\")\n}\n"
  },
  {
    "path": "syft/file/cataloger/filecontent/cataloger_test.go",
    "content": "package filecontent\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestContentsCataloger(t *testing.T) {\n\tallFiles := []string{\"testdata/last/path.txt\", \"testdata/another-path.txt\", \"testdata/a-path.txt\"}\n\n\ttests := []struct {\n\t\tname     string\n\t\tglobs    []string\n\t\tmaxSize  int64\n\t\tfiles    []string\n\t\texpected map[file.Coordinates]string\n\t}{\n\t\t{\n\t\t\tname:  \"multi-pattern\",\n\t\t\tglobs: []string{\"testdata/last/*.txt\", \"testdata/*.txt\"},\n\t\t\tfiles: allFiles,\n\t\t\texpected: map[file.Coordinates]string{\n\t\t\t\tfile.NewLocation(\"testdata/last/path.txt\").Coordinates:    \"dGVzdC1maXh0dXJlcy9sYXN0L3BhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/another-path.txt\").Coordinates: \"dGVzdC1maXh0dXJlcy9hbm90aGVyLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/a-path.txt\").Coordinates:       \"dGVzdC1maXh0dXJlcy9hLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"no-patterns\",\n\t\t\tglobs:    []string{},\n\t\t\tfiles:    []string{\"testdata/last/path.txt\", \"testdata/another-path.txt\", \"testdata/a-path.txt\"},\n\t\t\texpected: map[file.Coordinates]string{},\n\t\t},\n\t\t{\n\t\t\tname:  \"all-txt\",\n\t\t\tglobs: []string{\"**/*.txt\"},\n\t\t\tfiles: allFiles,\n\t\t\texpected: map[file.Coordinates]string{\n\t\t\t\tfile.NewLocation(\"testdata/last/path.txt\").Coordinates:    \"dGVzdC1maXh0dXJlcy9sYXN0L3BhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/another-path.txt\").Coordinates: \"dGVzdC1maXh0dXJlcy9hbm90aGVyLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/a-path.txt\").Coordinates:       \"dGVzdC1maXh0dXJlcy9hLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"subpath\",\n\t\t\tglobs: []string{\"testdata/*.txt\"},\n\t\t\tfiles: allFiles,\n\t\t\texpected: map[file.Coordinates]string{\n\t\t\t\tfile.NewLocation(\"testdata/another-path.txt\").Coordinates: \"dGVzdC1maXh0dXJlcy9hbm90aGVyLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/a-path.txt\").Coordinates:       \"dGVzdC1maXh0dXJlcy9hLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"size-filter\",\n\t\t\tmaxSize: 42,\n\t\t\tglobs:   []string{\"**/*.txt\"},\n\t\t\tfiles:   allFiles,\n\t\t\texpected: map[file.Coordinates]string{\n\t\t\t\tfile.NewLocation(\"testdata/last/path.txt\").Coordinates: \"dGVzdC1maXh0dXJlcy9sYXN0L3BhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t\tfile.NewLocation(\"testdata/a-path.txt\").Coordinates:    \"dGVzdC1maXh0dXJlcy9hLXBhdGgudHh0IGZpbGUgY29udGVudHMh\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewCataloger(Config{\n\t\t\t\tGlobs:              test.globs,\n\t\t\t\tSkipFilesAboveSize: test.maxSize,\n\t\t\t})\n\n\t\t\tresolver := file.NewMockResolverForPaths(test.files...)\n\t\t\tactual, err := c.Catalog(context.Background(), resolver)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, test.expected, actual, \"mismatched contents\")\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/cataloger/filecontent/testdata/a-path.txt",
    "content": "test-fixtures/a-path.txt file contents!"
  },
  {
    "path": "syft/file/cataloger/filecontent/testdata/another-path.txt",
    "content": "test-fixtures/another-path.txt file contents!"
  },
  {
    "path": "syft/file/cataloger/filecontent/testdata/last/empty/empty",
    "content": ""
  },
  {
    "path": "syft/file/cataloger/filecontent/testdata/last/path.txt",
    "content": "test-fixtures/last/path.txt file contents!"
  },
  {
    "path": "syft/file/cataloger/filedigest/cataloger.go",
    "content": "package filedigest\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/dustin/go-humanize\"\n\n\t\"github.com/anchore/go-sync\"\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/bus\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n\tintCataloger \"github.com/anchore/syft/syft/file/cataloger/internal\"\n)\n\nvar ErrUndigestableFile = errors.New(\"undigestable file\")\n\ntype Cataloger struct {\n\thashes []crypto.Hash\n}\n\nfunc NewCataloger(hashes []crypto.Hash) *Cataloger {\n\treturn &Cataloger{\n\t\thashes: intFile.NormalizeHashes(hashes),\n\t}\n}\n\nfunc (i *Cataloger) Catalog(ctx context.Context, resolver file.Resolver, coordinates ...file.Coordinates) (map[file.Coordinates][]file.Digest, error) {\n\tresults := make(map[file.Coordinates][]file.Digest)\n\tvar locations []file.Location\n\n\tif len(coordinates) == 0 {\n\t\tlocations = intCataloger.AllRegularFiles(ctx, resolver)\n\t} else {\n\t\tfor _, c := range coordinates {\n\t\t\tlocs, err := resolver.FilesByPath(c.RealPath)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to get file locations for path %q: %w\", c.RealPath, err)\n\t\t\t}\n\t\t\tlocations = append(locations, locs...)\n\t\t}\n\t}\n\n\tprog := catalogingProgress(int64(len(locations)))\n\n\terr := sync.Collect(&ctx, cataloging.ExecutorFile, sync.ToSeq(locations), func(location file.Location) ([]file.Digest, error) {\n\t\tresult, err := i.catalogLocation(ctx, resolver, location)\n\n\t\tif errors.Is(err, ErrUndigestableFile) {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\tprog.AtomicStage.Set(location.Path())\n\n\t\tif internal.IsErrPathPermission(err) {\n\t\t\tlog.Debugf(\"file digests cataloger skipping %q: %+v\", location.RealPath, err)\n\t\t\treturn nil, unknown.New(location, err)\n\t\t}\n\n\t\tif err != nil {\n\t\t\tprog.SetError(err)\n\t\t\treturn nil, unknown.New(location, err)\n\t\t}\n\n\t\tprog.Increment()\n\n\t\treturn result, nil\n\t}, func(location file.Location, digests []file.Digest) {\n\t\tif len(digests) > 0 {\n\t\t\tresults[location.Coordinates] = digests\n\t\t}\n\t})\n\n\tlog.Debugf(\"file digests cataloger processed %d files\", prog.Current())\n\n\tprog.AtomicStage.Set(fmt.Sprintf(\"%s files\", humanize.Comma(prog.Current())))\n\tprog.SetCompleted()\n\n\treturn results, err\n}\n\nfunc (i *Cataloger) catalogLocation(ctx context.Context, resolver file.Resolver, location file.Location) ([]file.Digest, error) {\n\tmeta, err := resolver.FileMetadataByLocation(location)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// we should only attempt to report digests for files that are regular files (don't attempt to resolve links)\n\tif meta.Type != stereoscopeFile.TypeRegular {\n\t\treturn nil, ErrUndigestableFile\n\t}\n\n\tcontentReader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contentReader, location.AccessPath)\n\n\tdigests, err := intFile.NewDigestsFromFile(ctx, contentReader, i.hashes)\n\tif err != nil {\n\t\treturn nil, internal.ErrPath{Context: \"digests-cataloger\", Path: location.RealPath, Err: err}\n\t}\n\n\treturn digests, nil\n}\n\nfunc catalogingProgress(locations int64) *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault: \"File digests\",\n\t\t},\n\t\tParentID: monitor.TopLevelCatalogingTaskID,\n\t}\n\n\treturn bus.StartCatalogerTask(info, locations, \"\")\n}\n"
  },
  {
    "path": "syft/file/cataloger/filedigest/cataloger_test.go",
    "content": "package filedigest\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nfunc testDigests(t testing.TB, root string, files []string, hashes ...crypto.Hash) map[file.Coordinates][]file.Digest {\n\tdigests := make(map[file.Coordinates][]file.Digest)\n\n\tfor _, f := range files {\n\t\tfh, err := os.Open(filepath.Join(root, f))\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"could not open %q : %+v\", f, err)\n\t\t}\n\t\tb, err := io.ReadAll(fh)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"could not read %q : %+v\", f, err)\n\t\t}\n\n\t\t// Calculate digests for all files, including empty files\n\t\tfor _, hash := range hashes {\n\t\t\th := hash.New()\n\t\t\th.Write(b)\n\t\t\tdigests[file.NewLocation(f).Coordinates] = append(digests[file.NewLocation(f).Coordinates], file.Digest{\n\t\t\t\tAlgorithm: intFile.CleanDigestAlgorithmName(hash.String()),\n\t\t\t\tValue:     fmt.Sprintf(\"%x\", h.Sum(nil)),\n\t\t\t})\n\t\t}\n\t}\n\n\treturn digests\n}\n\nfunc TestDigestsCataloger(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tdigests  []crypto.Hash\n\t\tfiles    []string\n\t\texpected map[file.Coordinates][]file.Digest\n\t}{\n\t\t{\n\t\t\tname:     \"md5\",\n\t\t\tdigests:  []crypto.Hash{crypto.MD5},\n\t\t\tfiles:    []string{\"testdata/last/empty/empty\", \"testdata/last/path.txt\"},\n\t\t\texpected: testDigests(t, \"testdata/last\", []string{\"empty/empty\", \"path.txt\"}, crypto.MD5),\n\t\t},\n\t\t{\n\t\t\tname:     \"md5-sha1-sha256\",\n\t\t\tdigests:  []crypto.Hash{crypto.MD5, crypto.SHA1, crypto.SHA256},\n\t\t\tfiles:    []string{\"testdata/last/empty/empty\", \"testdata/last/path.txt\"},\n\t\t\texpected: testDigests(t, \"testdata/last\", []string{\"empty/empty\", \"path.txt\"}, crypto.MD5, crypto.SHA1, crypto.SHA256),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewCataloger(test.digests)\n\n\t\t\tsrc, err := directorysource.NewFromPath(\"testdata/last/\")\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual, err := c.Catalog(context.Background(), resolver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, test.expected, actual, \"mismatched digests\")\n\t\t})\n\t}\n}\n\nfunc TestDigestsCataloger_MixFileTypes(t *testing.T) {\n\ttestImage := \"image-file-type-mix\"\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: testImage,\n\t})\n\n\tresolver, err := src.FileResolver(source.SquashedScope)\n\tif err != nil {\n\t\tt.Fatalf(\"could not create resolver: %+v\", err)\n\t}\n\n\ttests := []struct {\n\t\tpath     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tpath:     \"/file-1.txt\",\n\t\t\texpected: \"888c139e550867814eb7c33b84d76e4d\",\n\t\t},\n\t\t// this is difficult to reproduce in a cross-platform way\n\t\t//{\n\t\t//\tpath: \"/hardlink-1\",\n\t\t//},\n\t\t{\n\t\t\tpath: \"/symlink-1\",\n\t\t},\n\t\t{\n\t\t\tpath: \"/char-device-1\",\n\t\t},\n\t\t{\n\t\t\tpath: \"/block-device-1\",\n\t\t},\n\t\t{\n\t\t\tpath: \"/fifo-1\",\n\t\t},\n\t\t{\n\t\t\tpath: \"/bin\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\tc := NewCataloger([]crypto.Hash{crypto.MD5})\n\n\t\t\tactual, err := c.Catalog(context.Background(), resolver)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"could not catalog: %+v\", err)\n\t\t\t}\n\n\t\t\t_, ref, err := img.SquashedTree().File(stereoscopeFile.Path(test.path))\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to get file=%q : %+v\", test.path, err)\n\t\t\t}\n\t\t\tl := file.NewLocationFromImage(test.path, *ref.Reference, img)\n\n\t\t\tif len(actual[l.Coordinates]) == 0 {\n\t\t\t\tif test.expected != \"\" {\n\t\t\t\t\tt.Fatalf(\"no digest found, but expected one\")\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tassert.Equal(t, actual[l.Coordinates][0].Value, test.expected, \"mismatched digests\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFileDigestCataloger_GivenCoordinates(t *testing.T) {\n\ttestImage := \"image-file-type-mix\"\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\n\tc := NewCataloger([]crypto.Hash{crypto.SHA256})\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: testImage,\n\t})\n\n\tresolver, err := src.FileResolver(source.SquashedScope)\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tpath     string\n\t\texists   bool\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tpath:     \"/file-1.txt\",\n\t\t\texists:   true,\n\t\t\texpected: \"b089629781f05ef805b4511e93717f2ffa4c9d991771d5cbfa4b7242b4ef5fff\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\t_, ref, err := img.SquashedTree().File(stereoscopeFile.Path(test.path))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tl := file.NewLocationFromImage(test.path, *ref.Reference, img)\n\n\t\t\t// note: an important difference between this test and the previous is that this test is using a list\n\t\t\t// of specific coordinates to catalog\n\t\t\tactual, err := c.Catalog(context.Background(), resolver, l.Coordinates)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, actual, 1)\n\n\t\t\tassert.Equal(t, test.expected, actual[l.Coordinates][0].Value, \"mismatched digests\")\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/file/cataloger/filedigest/testdata/image-file-type-mix/Dockerfile",
    "content": "FROM busybox:1.28.1@sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4\n\nADD file-1.txt .\nRUN chmod 644 file-1.txt\nRUN chown 1:2 file-1.txt\nRUN ln -s file-1.txt symlink-1\n# note: hard links may behave inconsistently, this should be a golden image\nRUN ln file-1.txt hardlink-1\nRUN mknod char-device-1 c 89 1\nRUN mknod block-device-1 b 0 1\nRUN mknod fifo-1 p\nRUN mkdir /dir\nRUN rm -rf home etc/group etc/localtime etc/mtab etc/network etc/passwd etc/shadow var usr bin/*"
  },
  {
    "path": "syft/file/cataloger/filedigest/testdata/image-file-type-mix/file-1.txt",
    "content": "file 1!"
  },
  {
    "path": "syft/file/cataloger/filedigest/testdata/last/empty/empty",
    "content": ""
  },
  {
    "path": "syft/file/cataloger/filedigest/testdata/last/path.txt",
    "content": "test-fixtures/last/path.txt file contents!"
  },
  {
    "path": "syft/file/cataloger/filemetadata/cataloger.go",
    "content": "package filemetadata\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/dustin/go-humanize\"\n\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype Cataloger struct {\n}\n\nfunc NewCataloger() *Cataloger {\n\treturn &Cataloger{}\n}\n\nfunc (i *Cataloger) Catalog(ctx context.Context, resolver file.Resolver, coordinates ...file.Coordinates) (map[file.Coordinates]file.Metadata, error) {\n\tvar errs error\n\tresults := make(map[file.Coordinates]file.Metadata)\n\tvar locations <-chan file.Location\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\tif len(coordinates) == 0 {\n\t\tlocations = resolver.AllLocations(ctx)\n\t} else {\n\t\tlocations = func() <-chan file.Location {\n\t\t\tch := make(chan file.Location)\n\t\t\tgo func() {\n\t\t\t\tdefer close(ch)\n\t\t\t\tfor _, c := range coordinates {\n\t\t\t\t\tlocs, err := resolver.FilesByPath(c.RealPath)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\terrs = unknown.Append(errs, c, err)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor _, loc := range locs {\n\t\t\t\t\t\tselect {\n\t\t\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\tcase ch <- loc:\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}()\n\t\t\treturn ch\n\t\t}()\n\t}\n\n\tprog := catalogingProgress(-1)\n\tfor location := range locations {\n\t\tprog.AtomicStage.Set(location.Path())\n\n\t\tmetadata, err := resolver.FileMetadataByLocation(location)\n\t\tif err != nil {\n\t\t\tprog.SetError(err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tprog.Increment()\n\n\t\tresults[location.Coordinates] = metadata\n\t}\n\n\tlog.Debugf(\"file metadata cataloger processed %d files\", prog.Current())\n\n\tprog.AtomicStage.Set(fmt.Sprintf(\"%s locations\", humanize.Comma(prog.Current())))\n\tprog.SetCompleted()\n\n\treturn results, errs\n}\n\nfunc catalogingProgress(locations int64) *monitor.TaskProgress {\n\tinfo := monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault: \"File metadata\",\n\t\t},\n\t\tParentID: monitor.TopLevelCatalogingTaskID,\n\t}\n\n\treturn bus.StartCatalogerTask(info, locations, \"\")\n}\n"
  },
  {
    "path": "syft/file/cataloger/filemetadata/cataloger_test.go",
    "content": "package filemetadata\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nfunc TestFileMetadataCataloger(t *testing.T) {\n\ttestImage := \"image-file-type-mix\"\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\n\tc := NewCataloger()\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: testImage,\n\t})\n\n\tresolver, err := src.FileResolver(source.SquashedScope)\n\trequire.NoError(t, err)\n\n\tactual, err := c.Catalog(context.Background(), resolver)\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tpath     string\n\t\texists   bool\n\t\texpected file.Metadata\n\t\terr      bool\n\t}{\n\t\t// note: it is difficult to add a hardlink-based test in a cross-platform way and is already covered well in stereoscope\n\t\t{\n\t\t\tpath:   \"/file-1.txt\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"file-1.txt\",\n\t\t\t\t\tModeValue: 0644,\n\t\t\t\t\tSizeValue: 7,\n\t\t\t\t},\n\t\t\t\tPath:     \"/file-1.txt\",\n\t\t\t\tType:     stereoscopeFile.TypeRegular,\n\t\t\t\tUserID:   1,\n\t\t\t\tGroupID:  2,\n\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath:   \"/symlink-1\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tPath: \"/symlink-1\",\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"symlink-1\",\n\t\t\t\t\tModeValue: 0777 | os.ModeSymlink,\n\t\t\t\t},\n\t\t\t\tType:            stereoscopeFile.TypeSymLink,\n\t\t\t\tLinkDestination: \"file-1.txt\",\n\t\t\t\tUserID:          0,\n\t\t\t\tGroupID:         0,\n\t\t\t\tMIMEType:        \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath:   \"/char-device-1\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tPath: \"/char-device-1\",\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"char-device-1\",\n\t\t\t\t\tModeValue: 0644 | os.ModeDevice | os.ModeCharDevice,\n\t\t\t\t},\n\t\t\t\tType:     stereoscopeFile.TypeCharacterDevice,\n\t\t\t\tUserID:   0,\n\t\t\t\tGroupID:  0,\n\t\t\t\tMIMEType: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath:   \"/block-device-1\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tPath: \"/block-device-1\",\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"block-device-1\",\n\t\t\t\t\tModeValue: 0644 | os.ModeDevice,\n\t\t\t\t},\n\t\t\t\tType:     stereoscopeFile.TypeBlockDevice,\n\t\t\t\tUserID:   0,\n\t\t\t\tGroupID:  0,\n\t\t\t\tMIMEType: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath:   \"/fifo-1\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tPath: \"/fifo-1\",\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"fifo-1\",\n\t\t\t\t\tModeValue: 0644 | os.ModeNamedPipe,\n\t\t\t\t},\n\t\t\t\tType:     stereoscopeFile.TypeFIFO,\n\t\t\t\tUserID:   0,\n\t\t\t\tGroupID:  0,\n\t\t\t\tMIMEType: \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath:   \"/bin\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tPath: \"/bin\",\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"bin\",\n\t\t\t\t\tModeValue: 0755 | os.ModeDir,\n\t\t\t\t},\n\t\t\t\tType:     stereoscopeFile.TypeDirectory,\n\t\t\t\tUserID:   0,\n\t\t\t\tGroupID:  0,\n\t\t\t\tMIMEType: \"\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\t_, ref, err := img.SquashedTree().File(stereoscopeFile.Path(test.path))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tl := file.NewLocationFromImage(test.path, *ref.Reference, img)\n\n\t\t\tif _, ok := actual[l.Coordinates]; ok {\n\t\t\t\t// we're not interested in keeping the test fixtures up to date with the latest file modification times\n\t\t\t\t// thus ModTime is not under test\n\t\t\t\tfi := test.expected.FileInfo.(stereoscopeFile.ManualInfo)\n\t\t\t\tfi.ModTimeValue = actual[l.Coordinates].ModTime()\n\t\t\t\ttest.expected.FileInfo = fi\n\t\t\t}\n\n\t\t\tassert.True(t, test.expected.Equal(actual[l.Coordinates]))\n\t\t})\n\t}\n\n}\n\nfunc TestFileMetadataCataloger_GivenCoordinates(t *testing.T) {\n\ttestImage := \"image-file-type-mix\"\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\n\tc := NewCataloger()\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: testImage,\n\t})\n\n\tresolver, err := src.FileResolver(source.SquashedScope)\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tpath     string\n\t\texists   bool\n\t\texpected file.Metadata\n\t}{\n\t\t{\n\t\t\tpath:   \"/file-1.txt\",\n\t\t\texists: true,\n\t\t\texpected: file.Metadata{\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: \"file-1.txt\",\n\t\t\t\t\tModeValue: 0644,\n\t\t\t\t\tSizeValue: 7,\n\t\t\t\t},\n\t\t\t\tPath:     \"/file-1.txt\",\n\t\t\t\tType:     stereoscopeFile.TypeRegular,\n\t\t\t\tUserID:   1,\n\t\t\t\tGroupID:  2,\n\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\t_, ref, err := img.SquashedTree().File(stereoscopeFile.Path(test.path))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tl := file.NewLocationFromImage(test.path, *ref.Reference, img)\n\n\t\t\t// note: an important difference between this test and the previous is that this test is using a list\n\t\t\t// of specific coordinates to catalog\n\t\t\tactual, err := c.Catalog(context.Background(), resolver, l.Coordinates)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, actual, 1)\n\n\t\t\tif _, ok := actual[l.Coordinates]; ok {\n\t\t\t\t// we're not interested in keeping the test fixtures up to date with the latest file modification times\n\t\t\t\t// thus ModTime is not under test\n\t\t\t\tfi := test.expected.FileInfo.(stereoscopeFile.ManualInfo)\n\t\t\t\tfi.ModTimeValue = actual[l.Coordinates].ModTime()\n\t\t\t\ttest.expected.FileInfo = fi\n\t\t\t}\n\n\t\t\tassert.True(t, test.expected.Equal(actual[l.Coordinates]))\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/file/cataloger/filemetadata/testdata/image-file-type-mix/Dockerfile",
    "content": "FROM busybox:1.28.1@sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4\n\nADD file-1.txt .\nRUN chmod 644 file-1.txt\nRUN chown 1:2 file-1.txt\nRUN ln -s file-1.txt symlink-1\n# note: hard links may behave inconsistently, this should be a golden image\nRUN ln file-1.txt hardlink-1\nRUN mknod char-device-1 c 89 1\nRUN mknod block-device-1 b 0 1\nRUN mknod fifo-1 p\nRUN mkdir /dir\nRUN rm -rf home etc/group etc/localtime etc/mtab etc/network etc/passwd etc/shadow var usr bin/*"
  },
  {
    "path": "syft/file/cataloger/filemetadata/testdata/image-file-type-mix/file-1.txt",
    "content": "file 1!"
  },
  {
    "path": "syft/file/cataloger/internal/all_regular_files.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc AllRegularFiles(ctx context.Context, resolver file.Resolver) (locations []file.Location) {\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\tfor location := range resolver.AllLocations(ctx) {\n\t\tresolvedLocations, err := resolver.FilesByPath(location.RealPath)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to resolve %+v: %+v\", location, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, resolvedLocation := range resolvedLocations {\n\t\t\tmetadata, err := resolver.FileMetadataByLocation(resolvedLocation)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to get metadata for %+v: %+v\", location, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif metadata.Type != stereoscopeFile.TypeRegular {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlocations = append(locations, resolvedLocation)\n\t\t}\n\t}\n\treturn locations\n}\n"
  },
  {
    "path": "syft/file/cataloger/internal/all_regular_files_test.go",
    "content": "package internal\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nfunc Test_allRegularFiles(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tsetup           func() file.Resolver\n\t\twantRealPaths   *strset.Set\n\t\twantAccessPaths *strset.Set\n\t}{\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tsetup: func() file.Resolver {\n\t\t\t\ttestImage := \"image-file-type-mix\"\n\n\t\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\n\t\t\t\ts := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\t\t\t\tReference: testImage,\n\t\t\t\t})\n\n\t\t\t\tr, err := s.FileResolver(source.SquashedScope)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\treturn r\n\t\t\t},\n\t\t\twantRealPaths:   strset.New(\"/file-1.txt\"),\n\t\t\twantAccessPaths: strset.New(\"/file-1.txt\", \"/symlink-1\", \"/hardlink-1\"),\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsetup: func() file.Resolver {\n\t\t\t\ts, err := directorysource.NewFromPath(\"testdata/symlinked-root/nested/link-root\")\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tr, err := s.FileResolver(source.SquashedScope)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\treturn r\n\t\t\t},\n\t\t\twantRealPaths:   strset.New(\"file1.txt\", \"nested/file2.txt\"),\n\t\t\twantAccessPaths: strset.New(\"file1.txt\", \"nested/file2.txt\", \"nested/linked-file1.txt\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresolver := tt.setup()\n\t\t\tlocations := AllRegularFiles(context.Background(), resolver)\n\t\t\trealLocations := strset.New()\n\t\t\tvirtualLocations := strset.New()\n\t\t\tfor _, l := range locations {\n\t\t\t\trealLocations.Add(l.RealPath)\n\t\t\t\tif l.AccessPath != \"\" {\n\t\t\t\t\tvirtualLocations.Add(l.AccessPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// this is difficult to reproduce in a cross-platform way\n\t\t\trealLocations.Remove(\"/hardlink-1\")\n\t\t\tvirtualLocations.Remove(\"/hardlink-1\")\n\t\t\ttt.wantRealPaths.Remove(\"/hardlink-1\")\n\t\t\ttt.wantAccessPaths.Remove(\"/hardlink-1\")\n\n\t\t\tassert.ElementsMatch(t, tt.wantRealPaths.List(), realLocations.List(), \"real paths differ: \"+cmp.Diff(tt.wantRealPaths.List(), realLocations.List()))\n\t\t\tassert.ElementsMatch(t, tt.wantAccessPaths.List(), virtualLocations.List(), \"virtual paths differ: \"+cmp.Diff(tt.wantAccessPaths.List(), virtualLocations.List()))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/cataloger/internal/testdata/image-file-type-mix/Dockerfile",
    "content": "FROM busybox:1.28.1@sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4\n\nADD file-1.txt .\nRUN chmod 644 file-1.txt\nRUN chown 1:2 file-1.txt\nRUN ln -s file-1.txt symlink-1\n# note: hard links may behave inconsistently, this should be a golden image\nRUN ln file-1.txt hardlink-1\nRUN mknod char-device-1 c 89 1\nRUN mknod block-device-1 b 0 1\nRUN mknod fifo-1 p\nRUN mkdir /dir\nRUN rm -rf home etc/group etc/localtime etc/mtab etc/network etc/passwd etc/shadow var usr bin/*"
  },
  {
    "path": "syft/file/cataloger/internal/testdata/image-file-type-mix/file-1.txt",
    "content": "file 1!"
  },
  {
    "path": "syft/file/cataloger/internal/testdata/symlinked-root/real-root/file1.txt",
    "content": "contents!\n"
  },
  {
    "path": "syft/file/cataloger/internal/testdata/symlinked-root/real-root/nested/file2.txt",
    "content": "more contents!\n"
  },
  {
    "path": "syft/file/coordinate_set.go",
    "content": "package file\n\nimport (\n\t\"sort\"\n\n\t\"github.com/gohugoio/hashstructure\"\n\t\"github.com/scylladb/go-set/strset\"\n)\n\n// CoordinateSet provides a unique collection of Coordinates with set operations.\ntype CoordinateSet struct {\n\tset map[Coordinates]struct{}\n}\n\nfunc NewCoordinateSet(coordinates ...Coordinates) (s CoordinateSet) {\n\tfor _, l := range coordinates {\n\t\ts.Add(l)\n\t}\n\n\treturn s\n}\n\nfunc (s *CoordinateSet) Add(coordinates ...Coordinates) {\n\tif s.set == nil {\n\t\ts.set = make(map[Coordinates]struct{})\n\t}\n\tfor _, l := range coordinates {\n\t\ts.set[l] = struct{}{}\n\t}\n}\n\nfunc (s CoordinateSet) Remove(coordinates ...Coordinates) {\n\tif s.set == nil {\n\t\treturn\n\t}\n\tfor _, l := range coordinates {\n\t\tdelete(s.set, l)\n\t}\n}\n\nfunc (s CoordinateSet) Contains(l Coordinates) bool {\n\tif s.set == nil {\n\t\treturn false\n\t}\n\t_, ok := s.set[l]\n\treturn ok\n}\n\nfunc (s CoordinateSet) Paths() []string {\n\tif s.set == nil {\n\t\treturn nil\n\t}\n\n\tpaths := strset.New()\n\tfor _, c := range s.ToSlice() {\n\t\tpaths.Add(c.RealPath)\n\t}\n\tpathSlice := paths.List()\n\tsort.Strings(pathSlice)\n\treturn pathSlice\n}\n\nfunc (s CoordinateSet) ToSlice(sorters ...func(a, b Coordinates) int) []Coordinates {\n\tcoordinates := s.ToUnorderedSlice()\n\n\tvar sorted bool\n\tfor _, sorter := range sorters {\n\t\tif sorter == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsort.Slice(coordinates, func(i, j int) bool {\n\t\t\treturn sorter(coordinates[i], coordinates[j]) < 0\n\t\t})\n\t\tsorted = true\n\t\tbreak\n\t}\n\n\tif !sorted {\n\t\tsort.SliceStable(coordinates, func(i, j int) bool {\n\t\t\tif coordinates[i].FileSystemID == coordinates[j].FileSystemID {\n\t\t\t\treturn coordinates[i].RealPath < coordinates[j].RealPath\n\t\t\t}\n\t\t\treturn coordinates[i].FileSystemID < coordinates[j].FileSystemID\n\t\t})\n\t}\n\n\treturn coordinates\n}\n\nfunc (s CoordinateSet) ToUnorderedSlice() []Coordinates {\n\tif s.set == nil {\n\t\treturn nil\n\t}\n\tcoordinates := make([]Coordinates, len(s.set))\n\tidx := 0\n\tfor v := range s.set {\n\t\tcoordinates[idx] = v\n\t\tidx++\n\t}\n\treturn coordinates\n}\n\nfunc (s CoordinateSet) Hash() (uint64, error) {\n\treturn hashstructure.Hash(s.ToSlice(), &hashstructure.HashOptions{\n\t\tZeroNil:      true,\n\t\tSlicesAsSets: true,\n\t})\n}\n"
  },
  {
    "path": "syft/file/coordinate_set_test.go",
    "content": "package file\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\nfunc TestCoordinatesSet(t *testing.T) {\n\n\tbinA := Coordinates{\n\t\tRealPath:     \"/bin\",\n\t\tFileSystemID: \"a\",\n\t}\n\n\tbinB := Coordinates{\n\t\tRealPath:     \"/bin\",\n\t\tFileSystemID: \"b\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []Coordinates\n\t\texpected []Coordinates\n\t}{\n\t\t{\n\t\t\tname: \"de-dup same location\",\n\t\t\tinput: []Coordinates{\n\t\t\t\tbinA, binA, binA,\n\t\t\t},\n\t\t\texpected: []Coordinates{\n\t\t\t\tbinA,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dont de-dup different filesystem\",\n\t\t\tinput: []Coordinates{\n\t\t\t\tbinB, binA,\n\t\t\t},\n\t\t\texpected: []Coordinates{\n\t\t\t\tbinA, binB,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tset := NewCoordinateSet(test.input...)\n\t\t\tassert.Equal(t, test.expected, set.ToSlice())\n\t\t})\n\t}\n}\n\nfunc TestCoordinateSet_Hash(t *testing.T) {\n\tetcA := Coordinates{\n\t\tRealPath:     \"/etc\",\n\t\tFileSystemID: \"a\",\n\t}\n\n\tetcB := Coordinates{\n\t\tRealPath:     \"/etc\",\n\t\tFileSystemID: \"b\",\n\t}\n\n\tbinA := Coordinates{\n\t\tRealPath:     \"/bin\",\n\t\tFileSystemID: \"a\",\n\t}\n\n\tbinB := Coordinates{\n\t\tRealPath:     \"/bin\",\n\t\tFileSystemID: \"b\",\n\t}\n\n\ttests := []struct {\n\t\tname string\n\t\tsetA CoordinateSet\n\t\tsetB CoordinateSet\n\t\twant assert.ComparisonAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"empty sets have the same hash\",\n\t\t\tsetA: NewCoordinateSet(),\n\t\t\tsetB: NewCoordinateSet(),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same elements have the same hash\",\n\t\t\tsetA: NewCoordinateSet(binA, etcA),\n\t\t\tsetB: NewCoordinateSet(etcA, binA),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with different elements have different hashes\",\n\t\t\tsetA: NewCoordinateSet(binA, etcA),\n\t\t\tsetB: NewCoordinateSet(binA),\n\t\t\twant: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same paths but different FS IDs have different hashes\",\n\t\t\tsetA: NewCoordinateSet(etcA, binA),\n\t\t\tsetB: NewCoordinateSet(etcB, binB),\n\t\t\twant: assert.NotEqual,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotA, err := artifact.IDByHash(tt.setA)\n\t\t\trequire.NoError(t, err)\n\t\t\tgotB, err := artifact.IDByHash(tt.setB)\n\t\t\trequire.NoError(t, err)\n\t\t\ttt.want(t, gotA, gotB)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/coordinates.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\n// Coordinates contains the minimal information needed to describe how to find a file within any possible source object (e.g. image and directory sources)\ntype Coordinates struct {\n\t// RealPath is the canonical absolute form of the path accessed (all symbolic links have been followed and relative path components like '.' and '..' have been removed).\n\tRealPath string `json:\"path\" cyclonedx:\"path\"`\n\n\t// FileSystemID is an ID representing and entire filesystem. For container images, this is a layer digest. For directories or a root filesystem, this is blank.\n\tFileSystemID string `json:\"layerID,omitempty\" cyclonedx:\"layerID\"`\n}\n\nfunc NewCoordinates(realPath, fsID string) Coordinates {\n\treturn Coordinates{\n\t\tRealPath:     realPath,\n\t\tFileSystemID: fsID,\n\t}\n}\n\nfunc (c Coordinates) ID() artifact.ID {\n\tf, err := artifact.IDByHash(c)\n\tif err != nil {\n\t\t// TODO: what to do in this case?\n\t\tlog.Debugf(\"unable to get fingerprint of location coordinate=%+v: %+v\", c, err)\n\t\treturn \"\"\n\t}\n\n\treturn f\n}\n\nfunc (c Coordinates) String() string {\n\tstr := fmt.Sprintf(\"RealPath=%q\", c.RealPath)\n\n\tif c.FileSystemID != \"\" {\n\t\tstr += fmt.Sprintf(\" Layer=%q\", c.FileSystemID)\n\t}\n\treturn fmt.Sprintf(\"Location<%s>\", str)\n}\n\nfunc (c Coordinates) GetCoordinates() Coordinates {\n\treturn c\n}\n"
  },
  {
    "path": "syft/file/digest.go",
    "content": "package file\n\n// Digest represents a cryptographic hash of file contents.\ntype Digest struct {\n\t// Algorithm specifies the hash algorithm used (e.g., \"sha256\", \"md5\").\n\tAlgorithm string `json:\"algorithm\"`\n\n\t// Value is the hexadecimal string representation of the hash.\n\tValue string `json:\"value\"`\n}\n"
  },
  {
    "path": "syft/file/executable.go",
    "content": "package file\n\ntype (\n\t// ExecutableFormat represents the binary executable format type.\n\tExecutableFormat string\n\n\t// RelocationReadOnly indicates the RELRO security protection level applied to an ELF binary.\n\tRelocationReadOnly string\n)\n\nconst (\n\tELF   ExecutableFormat = \"elf\"   // Executable and Linkable Format used on Unix-like systems\n\tMachO ExecutableFormat = \"macho\" // Mach object file format used on macOS and iOS\n\tPE    ExecutableFormat = \"pe\"    // Portable Executable format used on Windows\n\n\tRelocationReadOnlyNone    RelocationReadOnly = \"none\"    // no RELRO protection\n\tRelocationReadOnlyPartial RelocationReadOnly = \"partial\" // partial RELRO protection\n\tRelocationReadOnlyFull    RelocationReadOnly = \"full\"    // full RELRO protection\n)\n\n// Executable contains metadata about binary files and their security features.\ntype Executable struct {\n\t// Format denotes either ELF, Mach-O, or PE\n\tFormat ExecutableFormat `json:\"format\" yaml:\"format\" mapstructure:\"format\"`\n\n\t// HasExports indicates whether the binary exports symbols.\n\tHasExports bool `json:\"hasExports\" yaml:\"hasExports\" mapstructure:\"hasExports\"`\n\n\t// HasEntrypoint indicates whether the binary has an entry point function.\n\tHasEntrypoint bool `json:\"hasEntrypoint\" yaml:\"hasEntrypoint\" mapstructure:\"hasEntrypoint\"`\n\n\t// ImportedLibraries lists the shared libraries required by this executable.\n\tImportedLibraries []string `json:\"importedLibraries\" yaml:\"importedLibraries\" mapstructure:\"importedLibraries\"`\n\n\t// ELFSecurityFeatures contains ELF-specific security hardening information when Format is ELF.\n\tELFSecurityFeatures *ELFSecurityFeatures `json:\"elfSecurityFeatures,omitempty\" yaml:\"elfSecurityFeatures\" mapstructure:\"elfSecurityFeatures\"`\n}\n\n// ELFSecurityFeatures captures security hardening and protection mechanisms in ELF binaries.\ntype ELFSecurityFeatures struct {\n\t// SymbolTableStripped indicates whether debugging symbols have been removed.\n\tSymbolTableStripped bool `json:\"symbolTableStripped\" yaml:\"symbolTableStripped\" mapstructure:\"symbolTableStripped\"`\n\n\t// StackCanary indicates whether stack smashing protection is enabled.\n\tStackCanary *bool `json:\"stackCanary,omitempty\" yaml:\"stackCanary\" mapstructure:\"stackCanary\"`\n\n\t// NoExecutable indicates whether NX (no-execute) protection is enabled for the stack.\n\tNoExecutable bool `json:\"nx\" yaml:\"nx\" mapstructure:\"nx\"`\n\n\t// RelocationReadOnly indicates the RELRO protection level.\n\tRelocationReadOnly RelocationReadOnly `json:\"relRO\" yaml:\"relRO\" mapstructure:\"relRO\"`\n\n\t// PositionIndependentExecutable indicates whether the binary is compiled as PIE.\n\tPositionIndependentExecutable bool `json:\"pie\" yaml:\"pie\" mapstructure:\"pie\"`\n\n\t// DynamicSharedObject indicates whether the binary is a shared library.\n\tDynamicSharedObject bool `json:\"dso\" yaml:\"dso\" mapstructure:\"dso\"`\n\n\t// LlvmSafeStack represents a compiler-based security mechanism that separates the stack into a safe stack for storing return addresses and other critical data, and an unsafe stack for everything else, to mitigate stack-based memory corruption errors\n\t// see https://clang.llvm.org/docs/SafeStack.html\n\tLlvmSafeStack *bool `json:\"safeStack,omitempty\" yaml:\"safeStack\" mapstructure:\"safeStack\"`\n\n\t// ControlFlowIntegrity represents runtime checks to ensure a program's control flow adheres to the legal paths determined at compile time, thus protecting against various types of control-flow hijacking attacks\n\t// see https://clang.llvm.org/docs/ControlFlowIntegrity.html\n\tLlvmControlFlowIntegrity *bool `json:\"cfi,omitempty\" yaml:\"cfi\" mapstructure:\"cfi\"`\n\n\t// ClangFortifySource is a broad suite of extensions to libc aimed at catching misuses of common library functions\n\t// see https://android.googlesource.com/platform//bionic/+/d192dbecf0b2a371eb127c0871f77a9caf81c4d2/docs/clang_fortify_anatomy.md\n\tClangFortifySource *bool `json:\"fortify,omitempty\" yaml:\"fortify\" mapstructure:\"fortify\"`\n\n\t//// Selfrando provides function order shuffling to defend against ROP and other types of code reuse\n\t//// see https://github.com/runsafesecurity/selfrando\n\t// Selfrando *bool `json:\"selfrando,omitempty\" yaml:\"selfrando\" mapstructure:\"selfrando\"`\n}\n"
  },
  {
    "path": "syft/file/license.go",
    "content": "package file\n\nimport (\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\n// License represents license information discovered within a file.\ntype License struct {\n\t// Value is the raw license string as found in the file.\n\tValue string\n\n\t// SPDXExpression is the parsed SPDX license expression if available.\n\tSPDXExpression string\n\n\t// Type categorizes how the license was determined (e.g., declared, concluded -- following the same semantics as SPDX).\n\tType license.Type\n\n\tLicenseEvidence *LicenseEvidence\n\n\t// Contents optionally stores the full license text.\n\tContents string `hash:\"ignore\"`\n}\n\n// LicenseEvidence contains details from license classifier analysis.\ntype LicenseEvidence struct {\n\t// Confidence is a score indicating certainty of the license match.\n\tConfidence int\n\n\t// Offset is the byte position where the license text begins in the file.\n\tOffset int\n\n\t// Extent is the length in bytes of the matched license text.\n\tExtent int\n}\n\nfunc NewLicense(value string) License {\n\tspdxExpression, err := license.ParseExpression(value)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"value\", value).Trace(\"unable to parse license expression\")\n\t}\n\n\treturn License{\n\t\tValue:          value,\n\t\tSPDXExpression: spdxExpression,\n\t\tType:           license.Concluded,\n\t}\n}\n"
  },
  {
    "path": "syft/file/location.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\nconst (\n\t// VisibleAnnotationKey is the key used to indicate if the location is visible or not at runtime\n\tVisibleAnnotationKey = \"visible\"\n\n\t// HiddenAnnotation is the value used to indicate that the location is not visible at runtime because it was deleted\n\tHiddenAnnotation = \"false\"\n\n\t// VisibleAnnotation is the value used to indicate that the location is visible at runtime\n\tVisibleAnnotation = \"true\"\n)\n\n// Location represents a path relative to a particular filesystem resolved to a specific file.Reference. This struct is used as a key\n// in content fetching to uniquely identify a file relative to a request (the AccessPath).\ntype Location struct {\n\tLocationData     `cyclonedx:\"\"`\n\tLocationMetadata `cyclonedx:\"\"`\n}\n\n// LocationData contains the core identifying information for a file location.\ntype LocationData struct {\n\tCoordinates `cyclonedx:\"\"` // Empty string here means there is no intermediate property name, e.g. syft:locations:0:path without \"coordinates\"\n\t// note: it is IMPORTANT to ignore anything but the coordinates for a Location when considering the ID (hash value)\n\t// since the coordinates are the minimally correct ID for a location (symlinks should not come into play)\n\n\t// AccessPath is the path used to retrieve file contents (which may or may not have hardlinks / symlinks in the path)\n\tAccessPath string `hash:\"ignore\" json:\"accessPath\"`\n\n\t// ref is the stereoscope file reference relative to the stereoscope.FileCatalog that has more information about this location.\n\tref file.Reference `hash:\"ignore\"`\n}\n\nfunc (l LocationData) Reference() file.Reference {\n\treturn l.ref\n}\n\n// LocationMetadata provides additional contextual information about a file location.\ntype LocationMetadata struct {\n\tAnnotations map[string]string `json:\"annotations,omitempty\"` // Arbitrary key-value pairs that can be used to annotate a location\n}\n\nfunc (m *LocationMetadata) merge(other LocationMetadata) error {\n\tvar errs error\n\tfor k, v := range other.Annotations {\n\t\tif otherV, ok := m.Annotations[k]; ok {\n\t\t\tif v != otherV {\n\t\t\t\terr := fmt.Errorf(\"unable to merge location metadata: conflicting values for key=%q: %q != %q\", k, v, otherV)\n\t\t\t\terrs = multierror.Append(errs, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tm.Annotations[k] = v\n\t}\n\treturn errs\n}\n\nfunc (l Location) WithAnnotation(key, value string) Location {\n\tif key == \"\" || value == \"\" {\n\t\treturn l\n\t}\n\tif l.Annotations == nil {\n\t\tl.Annotations = map[string]string{}\n\t}\n\tl.Annotations[key] = value\n\treturn l\n}\n\nfunc (l Location) WithoutAnnotations() Location {\n\tl.Annotations = map[string]string{}\n\n\treturn l\n}\n\n// NewLocation creates a new Location representing a path without denoting a filesystem or FileCatalog reference.\nfunc NewLocation(realPath string) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath: realPath,\n\t\t\t},\n\t\t\tAccessPath: realPath,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t},\n\t}\n}\n\n// NewVirtualLocation creates a new location for a path accessed by a virtual path (a path with a symlink or hardlink somewhere in the path)\nfunc NewVirtualLocation(realPath, accessPath string) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath: realPath,\n\t\t\t},\n\t\t\tAccessPath: accessPath,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t}}\n}\n\n// NewLocationFromCoordinates creates a new location for the given Coordinates.\nfunc NewLocationFromCoordinates(coordinates Coordinates) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: coordinates,\n\t\t\tAccessPath:  coordinates.RealPath,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t}}\n}\n\n// NewVirtualLocationFromCoordinates creates a new location for the given Coordinates via a virtual path.\nfunc NewVirtualLocationFromCoordinates(coordinates Coordinates, accessPath string) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: coordinates,\n\t\t\tAccessPath:  accessPath,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t}}\n}\n\n// NewLocationFromImage creates a new Location representing the given path (extracted from the Reference) relative to the given image.\nfunc NewLocationFromImage(accessPath string, ref file.Reference, img *image.Image) Location {\n\tlayer := img.FileCatalog.Layer(ref)\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     string(ref.RealPath),\n\t\t\t\tFileSystemID: layer.Metadata.Digest,\n\t\t\t},\n\t\t\tAccessPath: accessPath,\n\t\t\tref:        ref,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t},\n\t}\n}\n\n// NewLocationFromDirectory creates a new Location representing the given path (extracted from the Reference) relative to the given directory.\nfunc NewLocationFromDirectory(responsePath string, fd string, ref file.Reference) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     responsePath,\n\t\t\t\tFileSystemID: fd,\n\t\t\t},\n\t\t\tAccessPath: responsePath,\n\t\t\tref:        ref,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t},\n\t}\n}\n\n// NewVirtualLocationFromDirectory creates a new Location representing the given path (extracted from the Reference) relative to the given directory with a separate virtual access path.\nfunc NewVirtualLocationFromDirectory(responsePath, responseAccessPath string, ref file.Reference) Location {\n\treturn Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath: responsePath,\n\t\t\t},\n\t\t\tAccessPath: responseAccessPath,\n\t\t\tref:        ref,\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t},\n\t}\n}\n\nfunc (l Location) Path() string {\n\tif l.AccessPath != \"\" {\n\t\treturn l.AccessPath\n\t}\n\treturn l.RealPath\n}\n\nfunc (l Location) String() string {\n\tstr := \"\"\n\tif l.ref.ID() != 0 {\n\t\tstr += fmt.Sprintf(\"id=%d \", l.ref.ID())\n\t}\n\n\tstr += fmt.Sprintf(\"RealPath=%q\", l.RealPath)\n\n\tif l.AccessPath != \"\" && l.AccessPath != l.RealPath {\n\t\tstr += fmt.Sprintf(\" AccessPath=%q\", l.AccessPath)\n\t}\n\n\tif l.FileSystemID != \"\" {\n\t\tstr += fmt.Sprintf(\" Layer=%q\", l.FileSystemID)\n\t}\n\treturn fmt.Sprintf(\"Location<%s>\", str)\n}\n\nfunc (l Location) Equals(other Location) bool {\n\treturn l.RealPath == other.RealPath &&\n\t\tl.AccessPath == other.AccessPath &&\n\t\tl.FileSystemID == other.FileSystemID\n}\n"
  },
  {
    "path": "syft/file/location_read_closer.go",
    "content": "package file\n\nimport \"io\"\n\n// LocationReadCloser combines a Location with a ReadCloser for accessing file content with location metadata.\ntype LocationReadCloser struct {\n\tLocation\n\tio.ReadCloser\n}\n\nfunc NewLocationReadCloser(location Location, reader io.ReadCloser) LocationReadCloser {\n\treturn LocationReadCloser{\n\t\tLocation:   location,\n\t\tReadCloser: reader,\n\t}\n}\n"
  },
  {
    "path": "syft/file/location_set.go",
    "content": "package file\n\nimport (\n\t\"slices\"\n\t\"sort\"\n\n\t\"github.com/gohugoio/hashstructure\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// LocationSet provides a unique collection of Locations with metadata and set operations.\ntype LocationSet struct {\n\tset map[LocationData]LocationMetadata\n}\n\nfunc NewLocationSet(locations ...Location) (s LocationSet) {\n\tfor _, l := range locations {\n\t\ts.Add(l)\n\t}\n\n\treturn s\n}\n\nfunc (s *LocationSet) Add(locations ...Location) {\n\tif s.set == nil {\n\t\ts.set = make(map[LocationData]LocationMetadata)\n\t}\n\tfor _, l := range locations {\n\t\tif m, ok := s.set[l.LocationData]; ok {\n\t\t\terr := m.merge(l.LocationMetadata)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"partial merge of location metadata: %+v\", err)\n\t\t\t}\n\t\t\ts.set[l.LocationData] = m\n\t\t} else {\n\t\t\ts.set[l.LocationData] = l.LocationMetadata\n\t\t}\n\t}\n}\n\nfunc (s LocationSet) Remove(locations ...Location) {\n\tif s.set == nil {\n\t\treturn\n\t}\n\tfor _, l := range locations {\n\t\tdelete(s.set, l.LocationData)\n\t}\n}\n\nfunc (s LocationSet) Contains(l Location) bool {\n\tif s.set == nil {\n\t\treturn false\n\t}\n\t_, ok := s.set[l.LocationData]\n\treturn ok\n}\n\nfunc (s LocationSet) ToSlice(sorters ...func(a, b Location) int) []Location {\n\tlocations := s.ToUnorderedSlice()\n\n\tvar sorted bool\n\tfor _, sorter := range sorters {\n\t\tif sorter == nil {\n\t\t\tcontinue\n\t\t}\n\t\tslices.SortFunc(locations, sorter)\n\t\tsorted = true\n\t\tbreak\n\t}\n\n\tif !sorted {\n\t\t// though no sorter was passed, we need to guarantee a stable ordering between calls\n\t\tsort.Sort(Locations(locations))\n\t}\n\n\treturn locations\n}\n\nfunc (s LocationSet) ToUnorderedSlice() []Location {\n\tif s.set == nil {\n\t\treturn nil\n\t}\n\tlocations := make([]Location, len(s.set))\n\tidx := 0\n\tfor dir := range s.set {\n\t\tlocations[idx] = Location{\n\t\t\tLocationData:     dir,\n\t\t\tLocationMetadata: s.set[dir],\n\t\t}\n\t\tidx++\n\t}\n\treturn locations\n}\n\nfunc (s *LocationSet) CoordinateSet() CoordinateSet {\n\tif s.set == nil {\n\t\treturn NewCoordinateSet()\n\t}\n\tset := NewCoordinateSet()\n\tfor l := range s.set {\n\t\tset.Add(l.Coordinates)\n\t}\n\treturn set\n}\n\nfunc (s *LocationSet) Empty() bool {\n\tif s.set == nil {\n\t\treturn true\n\t}\n\treturn len(s.set) == 0\n}\n\nfunc (s LocationSet) Hash() (uint64, error) {\n\t// access paths and filesystem IDs are not considered when hashing a location set, only the real paths\n\treturn hashstructure.Hash(s.CoordinateSet().Paths(), &hashstructure.HashOptions{\n\t\tZeroNil:      true,\n\t\tSlicesAsSets: true,\n\t})\n}\n"
  },
  {
    "path": "syft/file/location_set_test.go",
    "content": "package file\n\nimport (\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/evidence\"\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\nfunc TestLocationSet_SortPaths(t *testing.T) {\n\n\tetcHostsLinkVar := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/var/etc/hosts\",\n\t\t},\n\t}\n\n\tetcHostsLinkHome := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/home/wagoodman/hosts\",\n\t\t},\n\t}\n\n\tbinA := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t}\n\n\tbinB := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"b\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []Location\n\t\texpected []Location\n\t}{\n\t\t{\n\t\t\tname: \"de-dup same location\",\n\t\t\tinput: []Location{\n\t\t\t\tbinA, binA, binA,\n\t\t\t},\n\t\t\texpected: []Location{\n\t\t\t\tbinA,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dont de-dup different filesystem\",\n\t\t\tinput: []Location{\n\t\t\t\tbinB, binA,\n\t\t\t},\n\t\t\texpected: []Location{\n\t\t\t\tbinA, binB,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dont de-dup different virtual paths\",\n\t\t\tinput: []Location{\n\t\t\t\tetcHostsLinkVar, etcHostsLinkHome,\n\t\t\t},\n\t\t\texpected: []Location{\n\t\t\t\tetcHostsLinkHome, etcHostsLinkVar,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := NewLocationSet(test.input...).ToSlice()\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n\nfunc TestLocationSet_SortEvidence(t *testing.T) {\n\tprimaryEvidence := map[string]string{evidence.AnnotationKey: evidence.PrimaryAnnotation}\n\tsecondaryEvidence := map[string]string{evidence.AnnotationKey: evidence.SupportingAnnotation}\n\n\tbinPrimary := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: primaryEvidence,\n\t\t},\n\t}\n\n\tbinSecondary := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: secondaryEvidence,\n\t\t},\n\t}\n\n\tbinNoEvidence := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t}\n\n\tetcHostsPrimary := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/var/etc/hosts\",\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: primaryEvidence,\n\t\t},\n\t}\n\n\tetcHostsSecondary := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/var/etc/hosts\",\n\t\t},\n\t\tLocationMetadata: LocationMetadata{\n\t\t\tAnnotations: secondaryEvidence,\n\t\t},\n\t}\n\n\tetcHostsNoEvidence := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/var/etc/hosts\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []Location\n\t\texpected []Location\n\t}{\n\t\t{\n\t\t\tname: \"sort primary, secondary, tertiary, no evidence\",\n\t\t\tinput: []Location{\n\t\t\t\tbinNoEvidence, binPrimary, binSecondary,\n\t\t\t},\n\t\t\texpected: []Location{\n\t\t\t\tbinPrimary, binSecondary, binNoEvidence,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sort by evidence, then path\",\n\t\t\tinput: []Location{\n\t\t\t\tetcHostsNoEvidence, etcHostsSecondary,\n\t\t\t\tbinSecondary, binNoEvidence,\n\t\t\t\tbinPrimary, etcHostsPrimary,\n\t\t\t},\n\t\t\texpected: []Location{\n\t\t\t\tbinPrimary, etcHostsPrimary, binSecondary, etcHostsSecondary, binNoEvidence, etcHostsNoEvidence,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsort.Sort(Locations(test.input))\n\t\t\tassert.Equal(t, test.expected, test.input)\n\t\t})\n\t}\n}\n\nfunc TestLocationSet_Hash(t *testing.T) {\n\tetcAlink := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/var/etc/hosts\",\n\t\t},\n\t}\n\n\tetcA := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t},\n\t}\n\n\tetcB := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/etc/hosts\",\n\t\t\t\tFileSystemID: \"b\",\n\t\t\t},\n\t\t},\n\t}\n\n\tbinA := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"a\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t}\n\n\tbinB := Location{\n\t\tLocationData: LocationData{\n\t\t\tCoordinates: Coordinates{\n\t\t\t\tRealPath:     \"/bin\",\n\t\t\t\tFileSystemID: \"b\",\n\t\t\t},\n\t\t\tAccessPath: \"/usr/bin\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname string\n\t\tsetA LocationSet\n\t\tsetB LocationSet\n\t\twant assert.ComparisonAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"empty sets have the same hash\",\n\t\t\tsetA: NewLocationSet(),\n\t\t\tsetB: NewLocationSet(),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same elements accessed through different paths have the same hash\",\n\t\t\tsetA: NewLocationSet(binA, etcA),\n\t\t\tsetB: NewLocationSet(etcAlink, binA),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same elements have the same hash\",\n\t\t\tsetA: NewLocationSet(binA, etcA),\n\t\t\tsetB: NewLocationSet(etcA, binA),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with different element counts have different hashes\",\n\t\t\tsetA: NewLocationSet(binA, etcA),\n\t\t\tsetB: NewLocationSet(binA),\n\t\t\twant: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same path but different FS IDs have the same hash\",\n\t\t\tsetA: NewLocationSet(binA),\n\t\t\tsetB: NewLocationSet(binB),\n\t\t\twant: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"sets with same paths but different FS IDs have the same hash\",\n\t\t\tsetA: NewLocationSet(etcA, binA),\n\t\t\tsetB: NewLocationSet(binB, etcB),\n\t\t\twant: assert.Equal,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotA, err := artifact.IDByHash(tt.setA)\n\t\t\trequire.NoError(t, err)\n\t\t\tgotB, err := artifact.IDByHash(tt.setB)\n\t\t\trequire.NoError(t, err)\n\t\t\ttt.want(t, gotA, gotB)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/location_test.go",
    "content": "package file\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n)\n\nfunc TestLocation_ID(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tcoordinates Coordinates\n\t\tvirtualPath string\n\t\tref         file.Reference\n\t}{\n\t\t{\n\t\t\tname: \"coordinates should match location hash\",\n\t\t\tcoordinates: Coordinates{\n\t\t\t\tRealPath:     \"path!\",\n\t\t\t\tFileSystemID: \"filesystem!\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"coordinates should match location hash (with extra fields)\",\n\t\t\tcoordinates: Coordinates{\n\t\t\t\tRealPath:     \"path!\",\n\t\t\t\tFileSystemID: \"filesystem!\",\n\t\t\t},\n\t\t\tvirtualPath: \"virtualPath!\",\n\t\t\tref: file.Reference{\n\t\t\t\tRealPath: \"other-real-path!\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tl := Location{\n\t\t\t\tLocationData: LocationData{\n\t\t\t\t\tCoordinates: test.coordinates,\n\t\t\t\t\tAccessPath:  test.virtualPath,\n\t\t\t\t\tref:         test.ref,\n\t\t\t\t},\n\t\t\t}\n\t\t\tassert.Equal(t, l.ID(), test.coordinates.ID())\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/file/locations.go",
    "content": "package file\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/evidence\"\n)\n\nvar locationSorterWithoutLayers = LocationSorter(nil)\n\n// Locations is a sortable slice of Location values.\ntype Locations []Location\n\nfunc (l Locations) Len() int {\n\treturn len(l)\n}\n\nfunc (l Locations) Less(i, j int) bool {\n\treturn locationSorterWithoutLayers(l[i], l[j]) < 0\n}\n\nfunc (l Locations) Swap(i, j int) {\n\tl[i], l[j] = l[j], l[i]\n}\n\n// LocationSorter creates a comparison function (slices.SortFunc) for Location objects based on layer order\nfunc LocationSorter(layers []string) func(a, b Location) int { //nolint:gocognit\n\tvar layerOrderByDigest map[string]int\n\tif len(layers) > 0 {\n\t\tlayerOrderByDigest = make(map[string]int)\n\t\tfor i, digest := range layers {\n\t\t\tlayerOrderByDigest[digest] = i\n\t\t}\n\t}\n\n\treturn func(a, b Location) int {\n\t\t// compare by evidence annotations first...\n\t\taEvidence := a.Annotations[evidence.AnnotationKey]\n\t\tbEvidence := b.Annotations[evidence.AnnotationKey]\n\n\t\tif aEvidence != bEvidence {\n\t\t\tif aEvidence == evidence.PrimaryAnnotation {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif bEvidence == evidence.PrimaryAnnotation {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\tif aEvidence > bEvidence {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif bEvidence > aEvidence {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t}\n\n\t\t// ...then by layer order\n\t\tif layerOrderByDigest != nil {\n\t\t\t// we're given layer order details\n\t\t\taLayerIdx, aExists := layerOrderByDigest[a.FileSystemID]\n\t\t\tbLayerIdx, bExists := layerOrderByDigest[b.FileSystemID]\n\n\t\t\tif aLayerIdx != bLayerIdx {\n\t\t\t\tif !aExists && !bExists {\n\t\t\t\t\treturn strings.Compare(a.FileSystemID, b.FileSystemID)\n\t\t\t\t}\n\t\t\t\tif !aExists {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\tif !bExists {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\n\t\t\t\treturn aLayerIdx - bLayerIdx\n\t\t\t}\n\t\t} else if a.FileSystemID != b.FileSystemID {\n\t\t\t// no layer info given, legacy behavior is to sort lexicographically\n\t\t\treturn strings.Compare(a.FileSystemID, b.FileSystemID)\n\t\t}\n\n\t\t// ...then by paths\n\t\tif a.AccessPath != b.AccessPath {\n\t\t\treturn strings.Compare(a.AccessPath, b.AccessPath)\n\t\t}\n\n\t\treturn strings.Compare(a.RealPath, b.RealPath)\n\t}\n}\n\n// CoordinatesSorter creates a comparison function (slices.SortFunc) for Coordinate objects based on layer order\nfunc CoordinatesSorter(layers []string) func(a, b Coordinates) int {\n\tvar layerOrderByDigest map[string]int\n\tif len(layers) > 0 {\n\t\tlayerOrderByDigest = make(map[string]int)\n\t\tfor i, digest := range layers {\n\t\t\tlayerOrderByDigest[digest] = i\n\t\t}\n\t}\n\n\treturn func(a, b Coordinates) int {\n\t\t// ...then by layer order\n\t\tif layerOrderByDigest != nil {\n\t\t\taLayerIdx, aExists := layerOrderByDigest[a.FileSystemID]\n\t\t\tbLayerIdx, bExists := layerOrderByDigest[b.FileSystemID]\n\n\t\t\tif aLayerIdx != bLayerIdx {\n\t\t\t\tif !aExists && !bExists {\n\t\t\t\t\treturn strings.Compare(a.FileSystemID, b.FileSystemID)\n\t\t\t\t}\n\t\t\t\tif !aExists {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\tif !bExists {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\n\t\t\t\treturn aLayerIdx - bLayerIdx\n\t\t\t}\n\t\t}\n\n\t\treturn strings.Compare(a.RealPath, b.RealPath)\n\t}\n}\n"
  },
  {
    "path": "syft/file/locations_test.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/anchore/syft/internal/evidence\"\n)\n\nfunc TestLocationAndCoordinatesSorters(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tlayers     []string\n\t\tlocs       []Location\n\t\tcoords     []Coordinates\n\t\twantLocs   []string\n\t\twantCoords []string\n\t}{\n\t\t{\n\t\t\tname:       \"empty location slice\",\n\t\t\tlayers:     []string{\"fsid-1\"},\n\t\t\tlocs:       []Location{},\n\t\t\tcoords:     []Coordinates{},\n\t\t\twantLocs:   []string{},\n\t\t\twantCoords: []string{},\n\t\t},\n\t\t{\n\t\t\tname:   \"nil layer list\",\n\t\t\tlayers: nil,\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/a (/a) @ fsid-1 map[]\",\n\t\t\t\t\"/b (/b) @ fsid-2 map[]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ fsid-1\",\n\t\t\t\t\"/b @ fsid-2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"sort by evidence type only\",\n\t\t\tlayers: []string{\"fsid-1\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: \"\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.SupportingAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/c (/c) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/b (/b) @ fsid-1 map[evidence:supporting]\",\n\t\t\t\t\"/a (/a) @ fsid-1 map[evidence:]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ fsid-1\",\n\t\t\t\t\"/b @ fsid-1\",\n\t\t\t\t\"/c @ fsid-1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"same evidence type, sort by layer\",\n\t\t\tlayers: []string{\"fsid-1\", \"fsid-2\", \"fsid-3\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/b (/b) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/c (/c) @ fsid-2 map[evidence:primary]\",\n\t\t\t\t\"/a (/a) @ fsid-3 map[evidence:primary]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/b @ fsid-1\",\n\t\t\t\t\"/c @ fsid-2\",\n\t\t\t\t\"/a @ fsid-3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"same evidence and layer, sort by access path\",\n\t\t\tlayers: []string{\"fsid-1\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/x\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/y\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/z\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/x\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/y\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/z\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/y (/a) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/z (/b) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/x (/c) @ fsid-1 map[evidence:primary]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/x @ fsid-1\",\n\t\t\t\t\"/y @ fsid-1\",\n\t\t\t\t\"/z @ fsid-1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"same evidence, layer, and access path - sort by real path\",\n\t\t\tlayers: []string{\"fsid-1\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/same\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/same\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/same\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/a (/same) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/b (/same) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/c (/same) @ fsid-1 map[evidence:primary]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ fsid-1\",\n\t\t\t\t\"/b @ fsid-1\",\n\t\t\t\t\"/c @ fsid-1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"unknown layers\",\n\t\t\tlayers: []string{\"fsid-1\", \"fsid-2\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"unknown-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"unknown-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"unknown-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"unknown-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/a (/a) @ unknown-1 map[]\",\n\t\t\t\t\"/b (/b) @ unknown-2 map[]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ unknown-1\",\n\t\t\t\t\"/b @ unknown-2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"mixed known and unknown layers\",\n\t\t\tlayers: []string{\"fsid-1\", \"fsid-2\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"unknown\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"unknown\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/a (/a) @ fsid-1 map[]\",\n\t\t\t\t\"/b (/b) @ unknown map[]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ fsid-1\",\n\t\t\t\t\"/b @ unknown\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"evidence comparison when one has none\",\n\t\t\tlayers: []string{\"fsid-1\"},\n\t\t\tlocs: []Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\t// No evidence.AnnotationKey\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: LocationData{\n\t\t\t\t\t\tCoordinates: Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: LocationMetadata{\n\t\t\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\t\tevidence.AnnotationKey: evidence.PrimaryAnnotation,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcoords: []Coordinates{\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantLocs: []string{\n\t\t\t\t\"/b (/b) @ fsid-1 map[evidence:primary]\",\n\t\t\t\t\"/a (/a) @ fsid-1 map[]\",\n\t\t\t},\n\t\t\twantCoords: []string{\n\t\t\t\t\"/a @ fsid-1\",\n\t\t\t\t\"/b @ fsid-1\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tt.Run(\"Location\", func(t *testing.T) {\n\t\t\t\tlocs := make([]Location, len(tt.locs))\n\t\t\t\tcopy(locs, tt.locs)\n\n\t\t\t\tslices.SortFunc(locs, LocationSorter(tt.layers))\n\n\t\t\t\tgot := make([]string, len(locs))\n\t\t\t\tfor i, loc := range locs {\n\t\t\t\t\tgot[i] = fmt.Sprintf(\"%s (%s) @ %s %s\",\n\t\t\t\t\t\tloc.RealPath,\n\t\t\t\t\t\tloc.AccessPath,\n\t\t\t\t\t\tloc.FileSystemID,\n\t\t\t\t\t\tloc.LocationMetadata.Annotations)\n\t\t\t\t}\n\n\t\t\t\tif d := cmp.Diff(tt.wantLocs, got); d != \"\" {\n\t\t\t\t\tt.Errorf(\"LocationSorter() mismatch (-want +got):\\n%s\", d)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tt.Run(\"Coordinates\", func(t *testing.T) {\n\t\t\t\tcoords := make([]Coordinates, len(tt.coords))\n\t\t\t\tcopy(coords, tt.coords)\n\n\t\t\t\tslices.SortFunc(coords, CoordinatesSorter(tt.layers))\n\n\t\t\t\tgot := make([]string, len(coords))\n\t\t\t\tfor i, coord := range coords {\n\t\t\t\t\tgot[i] = fmt.Sprintf(\"%s @ %s\",\n\t\t\t\t\t\tcoord.RealPath,\n\t\t\t\t\t\tcoord.FileSystemID)\n\t\t\t\t}\n\n\t\t\t\tif d := cmp.Diff(tt.wantCoords, got); d != \"\" {\n\t\t\t\t\tt.Errorf(\"CoordinatesSorter() mismatch (-want +got):\\n%s\", d)\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/file/metadata.go",
    "content": "package file\n\nimport \"github.com/anchore/stereoscope/pkg/file\"\n\ntype Metadata = file.Metadata\n"
  },
  {
    "path": "syft/file/mock_resolver.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n)\n\nvar _ Resolver = (*MockResolver)(nil)\nvar _ OCIMediaTypeResolver = (*MockResolver)(nil)\n\n// MockResolver implements the FileResolver interface and is intended for use *only in test code*.\n// It provides an implementation that can resolve local filesystem paths using only a provided discrete list of file\n// paths, which are typically paths to test fixtures.\ntype MockResolver struct {\n\tlocations      []Location\n\tmetadata       map[Coordinates]Metadata\n\tmimeTypeIndex  map[string][]Location\n\tmediaTypeIndex map[string][]Location\n\textension      map[string][]Location\n\tbasename       map[string][]Location\n}\n\n// NewMockResolverForPaths creates a new MockResolver, where the only resolvable\n// files are those specified by the supplied paths.\nfunc NewMockResolverForPaths(paths ...string) *MockResolver {\n\tvar locations []Location\n\textension := make(map[string][]Location)\n\tbasename := make(map[string][]Location)\n\tfor _, p := range paths {\n\t\tloc := NewLocation(p)\n\t\tlocations = append(locations, loc)\n\t\text := path.Ext(p)\n\t\textension[ext] = append(extension[ext], loc)\n\t\tbn := path.Base(p)\n\t\tbasename[bn] = append(basename[bn], loc)\n\t}\n\n\treturn &MockResolver{\n\t\tlocations: locations,\n\t\tmetadata:  make(map[Coordinates]Metadata),\n\t\textension: extension,\n\t\tbasename:  basename,\n\t}\n}\n\nfunc NewMockResolverForPathsWithMetadata(metadata map[Coordinates]Metadata) *MockResolver {\n\tvar locations []Location\n\tvar mimeTypeIndex = make(map[string][]Location)\n\textension := make(map[string][]Location)\n\tbasename := make(map[string][]Location)\n\tfor c, m := range metadata {\n\t\tl := NewLocationFromCoordinates(c)\n\t\tlocations = append(locations, l)\n\t\tmimeTypeIndex[m.MIMEType] = append(mimeTypeIndex[m.MIMEType], l)\n\t\text := path.Ext(l.RealPath)\n\t\textension[ext] = append(extension[ext], l)\n\t\tbn := path.Base(l.RealPath)\n\t\tbasename[bn] = append(basename[bn], l)\n\t}\n\n\treturn &MockResolver{\n\t\tlocations:     locations,\n\t\tmetadata:      metadata,\n\t\tmimeTypeIndex: mimeTypeIndex,\n\t\textension:     extension,\n\t\tbasename:      basename,\n\t}\n}\n\n// NewMockResolverForMediaTypes creates a MockResolver that can resolve files by media type.\n// The mediaTypes map specifies which locations should be returned for each media type.\nfunc NewMockResolverForMediaTypes(mediaTypes map[string][]Location) *MockResolver {\n\tvar locations []Location\n\tmediaTypeIndex := make(map[string][]Location)\n\textension := make(map[string][]Location)\n\tbasename := make(map[string][]Location)\n\n\tfor mediaType, locs := range mediaTypes {\n\t\tmediaTypeIndex[mediaType] = append(mediaTypeIndex[mediaType], locs...)\n\t\tfor _, l := range locs {\n\t\t\tlocations = append(locations, l)\n\t\t\text := path.Ext(l.RealPath)\n\t\t\textension[ext] = append(extension[ext], l)\n\t\t\tbn := path.Base(l.RealPath)\n\t\t\tbasename[bn] = append(basename[bn], l)\n\t\t}\n\t}\n\n\treturn &MockResolver{\n\t\tlocations:      locations,\n\t\tmetadata:       make(map[Coordinates]Metadata),\n\t\tmediaTypeIndex: mediaTypeIndex,\n\t\textension:      extension,\n\t\tbasename:       basename,\n\t}\n}\n\n// HasPath indicates if the given path exists in the underlying source.\nfunc (r MockResolver) HasPath(path string) bool {\n\tfor _, l := range r.locations {\n\t\tif l.RealPath == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// String returns the string representation of the MockResolver.\nfunc (r MockResolver) String() string {\n\treturn fmt.Sprintf(\"mock:(%s,...)\", r.locations[0].RealPath)\n}\n\n// FileContentsByLocation fetches file contents for a single location. If the\n// path does not exist, an error is returned.\nfunc (r MockResolver) FileContentsByLocation(location Location) (io.ReadCloser, error) {\n\tfor _, l := range r.locations {\n\t\tif l.Coordinates == location.Coordinates {\n\t\t\treturn os.Open(location.RealPath)\n\t\t}\n\t}\n\n\treturn nil, fmt.Errorf(\"no file for location: %v\", location)\n}\n\n// FilesByPath returns all Locations that match the given paths.\nfunc (r MockResolver) FilesByPath(paths ...string) ([]Location, error) {\n\tvar results []Location\n\tfor _, p := range paths {\n\t\tfor _, location := range r.locations {\n\t\t\tif p == location.RealPath {\n\t\t\t\tresults = append(results, NewLocation(p))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results, nil\n}\n\n// FilesByGlob returns all Locations that match the given path glob pattern.\nfunc (r MockResolver) FilesByGlob(patterns ...string) ([]Location, error) {\n\tvar results []Location\n\tfor _, pattern := range patterns {\n\t\tfor _, location := range r.locations {\n\t\t\tmatches, err := doublestar.Match(pattern, location.RealPath)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif matches {\n\t\t\t\tresults = append(results, location)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results, nil\n}\n\n// RelativeFileByPath returns a single Location for the given path.\nfunc (r MockResolver) RelativeFileByPath(_ Location, path string) *Location {\n\tpaths, err := r.FilesByPath(path)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tif len(paths) < 1 {\n\t\treturn nil\n\t}\n\n\treturn &paths[0]\n}\n\nfunc (r MockResolver) AllLocations(ctx context.Context) <-chan Location {\n\tresults := make(chan Location)\n\tgo func() {\n\t\tdefer close(results)\n\t\tfor _, l := range r.locations {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase results <- l:\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}()\n\treturn results\n}\n\nfunc (r MockResolver) FileMetadataByLocation(l Location) (Metadata, error) {\n\tinfo, err := os.Stat(l.RealPath)\n\tif err != nil {\n\t\treturn Metadata{}, err\n\t}\n\n\t// other types not supported\n\tty := file.TypeRegular\n\tif info.IsDir() {\n\t\tty = file.TypeDirectory\n\t}\n\n\treturn Metadata{\n\t\tFileInfo: info,\n\t\tType:     ty,\n\t\tUserID:   0, // not supported\n\t\tGroupID:  0, // not supported\n\t}, nil\n}\n\nfunc (r MockResolver) FilesByMIMEType(types ...string) ([]Location, error) {\n\tvar locations []Location\n\tfor _, ty := range types {\n\t\tlocations = append(r.mimeTypeIndex[ty], locations...)\n\t}\n\treturn locations, nil\n}\n\nfunc (r MockResolver) FilesByMediaType(types ...string) ([]Location, error) {\n\tvar locations []Location\n\tfor _, ty := range types {\n\t\tlocations = append(locations, r.mediaTypeIndex[ty]...)\n\t}\n\treturn locations, nil\n}\n\nfunc (r MockResolver) FilesByExtension(extensions ...string) ([]Location, error) {\n\tvar results []Location\n\tfor _, ext := range extensions {\n\t\tresults = append(results, r.extension[ext]...)\n\t}\n\treturn results, nil\n}\n\nfunc (r MockResolver) FilesByBasename(filenames ...string) ([]Location, error) {\n\tvar results []Location\n\tfor _, filename := range filenames {\n\t\tresults = append(results, r.basename[filename]...)\n\t}\n\treturn results, nil\n}\n\nfunc (r MockResolver) FilesByBasenameGlob(_ ...string) ([]Location, error) {\n\t// TODO implement me\n\tpanic(\"implement me\")\n}\n\nfunc (r MockResolver) Write(_ Location, _ io.Reader) error {\n\treturn nil\n}\n"
  },
  {
    "path": "syft/file/resolver.go",
    "content": "package file\n\nimport (\n\t\"context\"\n\t\"io\"\n)\n\n// Resolver is an interface that encompasses how to get specific file references and file contents for a generic data source.\ntype Resolver interface {\n\tContentResolver\n\tPathResolver\n\tLocationResolver\n\tMetadataResolver\n}\n\n// ContentResolver knows how to get file content for a given Location\ntype ContentResolver interface {\n\tFileContentsByLocation(Location) (io.ReadCloser, error)\n}\n\n// MetadataResolver provides file metadata lookup by location.\ntype MetadataResolver interface {\n\tFileMetadataByLocation(Location) (Metadata, error)\n}\n\n// PathResolver knows how to get a Location for given string paths and globs\ntype PathResolver interface {\n\t// HasPath indicates if the given path exists in the underlying source.\n\t// The implementation for this may vary, however, generally the following considerations should be made:\n\t// - full symlink resolution should be performed on all requests\n\t// - returns locations for any file or directory\n\tHasPath(string) bool\n\n\t// FilesByPath fetches a set of file references which have the given path (for an image, there may be multiple matches).\n\t// The implementation for this may vary, however, generally the following considerations should be made:\n\t// - full symlink resolution should be performed on all requests\n\t// - only returns locations to files (NOT directories)\n\tFilesByPath(paths ...string) ([]Location, error)\n\n\t// FilesByGlob fetches a set of file references for the given glob matches\n\t// The implementation for this may vary, however, generally the following considerations should be made:\n\t// - full symlink resolution should be performed on all requests\n\t// - if multiple paths to the same file are found, the best single match should be returned\n\t// - only returns locations to files (NOT directories)\n\tFilesByGlob(patterns ...string) ([]Location, error)\n\n\t// FilesByMIMEType fetches a set of file references which the contents have been classified as one of the given MIME Types.\n\tFilesByMIMEType(types ...string) ([]Location, error)\n\n\t// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n\t// This is helpful when attempting to find a file that is in the same layer or lower as another file.\n\tRelativeFileByPath(_ Location, path string) *Location\n}\n\n// OCIMediaTypeResolver resolves single files as a layer in an OCI artifact for a given media type.\ntype OCIMediaTypeResolver interface {\n\t// FilesByMediaType fetches a set of file references which the contents have been classified as one of the given Media Types.\n\t// The implementation for this may vary, however, this was first implemented to classify ai globs stored in OCI images.\n\t// The following considerations should be made when implementing:\n\t// - only return locations to files (NOT directories)\n\t// - locations for the implementer should be \"/\" and the fsid should be the layer digest the glob was found\n\t// - locations should be used with the FileContents API to return readers to the temporary data\n\tFilesByMediaType(types ...string) ([]Location, error)\n}\n\n// LocationResolver provides iteration over all file locations in a source.\ntype LocationResolver interface {\n\t// AllLocations returns a channel of all file references from the underlying source.\n\t// The implementation for this may vary, however, generally the following considerations should be made:\n\t// - NO symlink resolution should be performed on results\n\t// - returns locations for any file or directory\n\tAllLocations(ctx context.Context) <-chan Location\n}\n\n// WritableResolver extends Resolver with the ability to write file content.\ntype WritableResolver interface {\n\tResolver\n\n\tWrite(location Location, reader io.Reader) error\n}\n"
  },
  {
    "path": "syft/file/search_result.go",
    "content": "package file\n\nimport (\n\t\"fmt\"\n)\n\n// SearchResult represents a match found during content scanning, such as secret detection.\ntype SearchResult struct {\n\t// Classification identifies the type or category of the matched content.\n\tClassification string `json:\"classification\"`\n\n\t// LineNumber is the 1-indexed line number where the match was found.\n\tLineNumber int64 `json:\"lineNumber\"`\n\n\t// LineOffset is the character offset from the start of the line where the match begins.\n\tLineOffset int64 `json:\"lineOffset\"`\n\n\t// SeekPosition is the absolute byte offset from the start of the file.\n\tSeekPosition int64 `json:\"seekPosition\"`\n\n\t// Length is the size in bytes of the matched content.\n\tLength int64 `json:\"length\"`\n\n\t// Value optionally contains the actual matched content.\n\tValue string `json:\"value,omitempty\"`\n}\n\nfunc (s SearchResult) String() string {\n\treturn fmt.Sprintf(\"SearchResult(classification=%q seek=%q length=%q)\", s.Classification, s.SeekPosition, s.Length)\n}\n"
  },
  {
    "path": "syft/file/selection.go",
    "content": "package file\n\nconst (\n\tNoFilesSelection             Selection = \"none\"             // no files are selected\n\tFilesOwnedByPackageSelection Selection = \"owned-by-package\" // only files owned by packages are selected\n\tAllFilesSelection            Selection = \"all\"              // all files are selected\n)\n\n// Selection defines which files should be included during cataloging operations.\ntype Selection string\n"
  },
  {
    "path": "syft/file/testdata/req-resp/.gitignore",
    "content": "path/to/abs-inside.txt\npath/to/the/abs-outside.txt"
  },
  {
    "path": "syft/file/testdata/req-resp/path/to/the/file.txt",
    "content": "file-1\n"
  },
  {
    "path": "syft/file/testdata/req-resp/somewhere/outside.txt",
    "content": "file-2\n"
  },
  {
    "path": "syft/format/common/cyclonedxhelpers/to_format_model.go",
    "content": "package cyclonedxhelpers\n\nimport (\n\t\"fmt\"\n\t\"slices\"\n\t\"strings\"\n\t\"time\"\n\n\tcyclonedx \"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/google/uuid\"\n\n\tstfile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil/helpers\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar cycloneDXValidHash = map[string]cyclonedx.HashAlgorithm{\n\t\"sha1\":       cyclonedx.HashAlgoSHA1,\n\t\"md5\":        cyclonedx.HashAlgoMD5,\n\t\"sha256\":     cyclonedx.HashAlgoSHA256,\n\t\"sha384\":     cyclonedx.HashAlgoSHA384,\n\t\"sha512\":     cyclonedx.HashAlgoSHA512,\n\t\"blake2b256\": cyclonedx.HashAlgoBlake2b_256,\n\t\"blake2b384\": cyclonedx.HashAlgoBlake2b_384,\n\t\"blake2b512\": cyclonedx.HashAlgoBlake2b_512,\n\t\"blake3\":     cyclonedx.HashAlgoBlake3,\n}\n\nfunc ToFormatModel(s sbom.SBOM) *cyclonedx.BOM {\n\tcdxBOM := cyclonedx.NewBOM()\n\n\t// NOTE(jonasagx): cycloneDX requires URN uuids (URN returns the RFC 2141 URN form of uuid):\n\t// https://github.com/CycloneDX/specification/blob/master/schema/bom-1.3-strict.schema.json#L36\n\t// \"pattern\": \"^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n\tcdxBOM.SerialNumber = uuid.New().URN()\n\tcdxBOM.Metadata = toBomDescriptor(s.Descriptor.Name, s.Descriptor.Version, s.Source)\n\n\tcoordinates, locationSorter := getCoordinates(s)\n\n\t// Packages\n\tpackages := s.Artifacts.Packages.Sorted()\n\tcomponents := make([]cyclonedx.Component, len(packages))\n\tfor i, p := range packages {\n\t\tcomponents[i] = helpers.EncodeComponent(p, s.Source.Supplier, locationSorter)\n\t}\n\tcomponents = append(components, toOSComponent(s.Artifacts.LinuxDistribution)...)\n\n\tartifacts := s.Artifacts\n\n\tfor _, coordinate := range coordinates {\n\t\tvar metadata *file.Metadata\n\t\t// File Info\n\t\tfileMetadata, exists := artifacts.FileMetadata[coordinate]\n\t\t// no file metadata then don't include in SBOM\n\t\t// the syft config allows for sometimes only capturing files owned by packages\n\t\t// so there can be a map miss here where we have less metadata than all coordinates\n\t\tif !exists {\n\t\t\tcontinue\n\t\t}\n\t\tif fileMetadata.Type == stfile.TypeDirectory ||\n\t\t\tfileMetadata.Type == stfile.TypeSocket ||\n\t\t\tfileMetadata.Type == stfile.TypeSymLink {\n\t\t\t// skip dir, symlinks and sockets for the final bom\n\t\t\tcontinue\n\t\t}\n\t\tmetadata = &fileMetadata\n\n\t\t// Digests\n\t\tvar digests []file.Digest\n\t\tif digestsForLocation, exists := artifacts.FileDigests[coordinate]; exists {\n\t\t\tdigests = digestsForLocation\n\t\t}\n\n\t\tcdxHashes := digestsToHashes(digests)\n\t\tcomponents = append(components, cyclonedx.Component{\n\t\t\tBOMRef: string(coordinate.ID()),\n\t\t\tType:   cyclonedx.ComponentTypeFile,\n\t\t\tName:   metadata.Path,\n\t\t\tHashes: &cdxHashes,\n\t\t})\n\t}\n\tcdxBOM.Components = &components\n\n\tdependencies := toDependencies(s.Relationships)\n\tif len(dependencies) > 0 {\n\t\tcdxBOM.Dependencies = &dependencies\n\t}\n\n\treturn cdxBOM\n}\n\nfunc getCoordinates(s sbom.SBOM) ([]file.Coordinates, func(a, b file.Location) int) {\n\tvar layers []string\n\tif m, ok := s.Source.Metadata.(source.ImageMetadata); ok {\n\t\tfor _, l := range m.Layers {\n\t\t\tlayers = append(layers, l.Digest)\n\t\t}\n\t}\n\n\tcoordSorter := file.CoordinatesSorter(layers)\n\tcoordinates := s.AllCoordinates()\n\n\tslices.SortFunc(coordinates, coordSorter)\n\treturn coordinates, file.LocationSorter(layers)\n}\n\nfunc digestsToHashes(digests []file.Digest) []cyclonedx.Hash {\n\tvar hashes []cyclonedx.Hash\n\tfor _, digest := range digests {\n\t\tlookup := strings.ToLower(digest.Algorithm)\n\t\tcdxAlgo, exists := cycloneDXValidHash[lookup]\n\t\tif !exists {\n\t\t\tcontinue\n\t\t}\n\t\thashes = append(hashes, cyclonedx.Hash{\n\t\t\tAlgorithm: cdxAlgo,\n\t\t\tValue:     digest.Value,\n\t\t})\n\t}\n\treturn hashes\n}\n\nfunc toOSComponent(distro *linux.Release) []cyclonedx.Component {\n\tif distro == nil {\n\t\treturn []cyclonedx.Component{}\n\t}\n\teRefs := &[]cyclonedx.ExternalReference{}\n\tif distro.BugReportURL != \"\" {\n\t\t*eRefs = append(*eRefs, cyclonedx.ExternalReference{\n\t\t\tURL:  distro.BugReportURL,\n\t\t\tType: cyclonedx.ERTypeIssueTracker,\n\t\t})\n\t}\n\tif distro.HomeURL != \"\" {\n\t\t*eRefs = append(*eRefs, cyclonedx.ExternalReference{\n\t\t\tURL:  distro.HomeURL,\n\t\t\tType: cyclonedx.ERTypeWebsite,\n\t\t})\n\t}\n\tif distro.SupportURL != \"\" {\n\t\t*eRefs = append(*eRefs, cyclonedx.ExternalReference{\n\t\t\tURL:     distro.SupportURL,\n\t\t\tType:    cyclonedx.ERTypeOther,\n\t\t\tComment: \"support\",\n\t\t})\n\t}\n\tif distro.PrivacyPolicyURL != \"\" {\n\t\t*eRefs = append(*eRefs, cyclonedx.ExternalReference{\n\t\t\tURL:     distro.PrivacyPolicyURL,\n\t\t\tType:    cyclonedx.ERTypeOther,\n\t\t\tComment: \"privacyPolicy\",\n\t\t})\n\t}\n\tif len(*eRefs) == 0 {\n\t\teRefs = nil\n\t}\n\tprops := helpers.EncodeProperties(distro, \"syft:distro\")\n\tvar properties *[]cyclonedx.Property\n\tif len(props) > 0 {\n\t\tproperties = &props\n\t}\n\treturn []cyclonedx.Component{\n\t\t{\n\t\t\tBOMRef: toOSBomRef(distro.ID, distro.VersionID),\n\t\t\tType:   cyclonedx.ComponentTypeOS,\n\t\t\t// is it idiomatic to be using SWID here for specific name and version information?\n\t\t\tSWID: &cyclonedx.SWID{\n\t\t\t\tTagID:   distro.ID,\n\t\t\t\tName:    distro.ID,\n\t\t\t\tVersion: distro.VersionID,\n\t\t\t},\n\t\t\tDescription: distro.PrettyName,\n\t\t\tName:        distro.ID,\n\t\t\tVersion:     distro.VersionID,\n\t\t\t// should we add a PURL?\n\t\t\tCPE:                formatCPE(distro.CPEName),\n\t\t\tExternalReferences: eRefs,\n\t\t\tProperties:         properties,\n\t\t},\n\t}\n}\n\nfunc toOSBomRef(name string, version string) string {\n\tif name == \"\" {\n\t\treturn \"os:unknown\"\n\t}\n\tif version == \"\" {\n\t\treturn fmt.Sprintf(\"os:%s\", name)\n\t}\n\treturn fmt.Sprintf(\"os:%s@%s\", name, version)\n}\n\nfunc formatCPE(cpeString string) string {\n\tc, err := cpe.NewAttributes(cpeString)\n\tif err != nil {\n\t\tlog.Debugf(\"skipping invalid CPE: %s\", cpeString)\n\t\treturn \"\"\n\t}\n\treturn c.String()\n}\n\n// NewBomDescriptor returns a new BomDescriptor tailored for the current time and \"syft\" tool details.\nfunc toBomDescriptor(name, version string, srcMetadata source.Description) *cyclonedx.Metadata {\n\treturn &cyclonedx.Metadata{\n\t\tTimestamp: time.Now().Format(time.RFC3339),\n\t\tTools: &cyclonedx.ToolsChoice{\n\t\t\tComponents: &[]cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tType:    cyclonedx.ComponentTypeApplication,\n\t\t\t\t\tAuthor:  \"anchore\",\n\t\t\t\t\tName:    name,\n\t\t\t\t\tVersion: version,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tSupplier:   toBomSupplier(srcMetadata),\n\t\tProperties: toBomProperties(srcMetadata),\n\t\tComponent:  toBomDescriptorComponent(srcMetadata),\n\t}\n}\n\nfunc toBomSupplier(srcMetadata source.Description) *cyclonedx.OrganizationalEntity {\n\tif srcMetadata.Supplier != \"\" {\n\t\treturn &cyclonedx.OrganizationalEntity{\n\t\t\tName: srcMetadata.Supplier,\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// used to indicate that a relationship listed under the syft artifact package can be represented as a cyclonedx dependency.\n// NOTE: CycloneDX provides the ability to describe components and their dependency on other components.\n// The dependency graph is capable of representing both direct and transitive relationships.\n// If a relationship is either direct or transitive it can be included in this function.\n// An example of a relationship to not include would be: OwnershipByFileOverlapRelationship.\nfunc isExpressiblePackageRelationship(ty artifact.RelationshipType) bool {\n\tswitch ty {\n\tcase artifact.DependencyOfRelationship:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc toDependencies(relationships []artifact.Relationship) []cyclonedx.Dependency {\n\tdependencies := map[string]*cyclonedx.Dependency{}\n\tfor _, r := range relationships {\n\t\texists := isExpressiblePackageRelationship(r.Type)\n\t\tif !exists {\n\t\t\tlog.Debugf(\"unable to convert relationship type to CycloneDX JSON, dropping: %#v\", r)\n\t\t\tcontinue\n\t\t}\n\n\t\t// we only capture package-to-package relationships for now\n\t\tfromPkg, ok := r.From.(pkg.Package)\n\t\tif !ok {\n\t\t\tlog.Tracef(\"unable to convert relationship fromPkg to CycloneDX JSON, dropping: %#v\", r)\n\t\t\tcontinue\n\t\t}\n\n\t\ttoPkg, ok := r.To.(pkg.Package)\n\t\tif !ok {\n\t\t\tlog.Tracef(\"unable to convert relationship toPkg to CycloneDX JSON, dropping: %#v\", r)\n\t\t\tcontinue\n\t\t}\n\n\t\ttoRef := helpers.DeriveBomRef(toPkg)\n\t\tdep := dependencies[toRef]\n\t\tif dep == nil {\n\t\t\tdep = &cyclonedx.Dependency{\n\t\t\t\tRef:          toRef,\n\t\t\t\tDependencies: &[]string{},\n\t\t\t}\n\t\t\tdependencies[toRef] = dep\n\t\t}\n\n\t\tfromRef := helpers.DeriveBomRef(fromPkg)\n\t\tif !slices.Contains(*dep.Dependencies, fromRef) {\n\t\t\t*dep.Dependencies = append(*dep.Dependencies, fromRef)\n\t\t}\n\t}\n\n\tresult := make([]cyclonedx.Dependency, 0, len(dependencies))\n\tfor _, dep := range dependencies {\n\t\tslices.Sort(*dep.Dependencies)\n\t\tresult = append(result, *dep)\n\t}\n\n\tslices.SortFunc(result, func(a, b cyclonedx.Dependency) int {\n\t\treturn strings.Compare(a.Ref, b.Ref)\n\t})\n\n\treturn result\n}\n\nfunc toBomProperties(srcMetadata source.Description) *[]cyclonedx.Property {\n\tmetadata, ok := srcMetadata.Metadata.(source.ImageMetadata)\n\tif ok {\n\t\tprops := helpers.EncodeProperties(metadata.Labels, \"syft:image:labels\")\n\t\t// return nil if props is nil to avoid creating a pointer to a nil slice,\n\t\t// which results in a null JSON value that does not comply with the CycloneDX schema.\n\t\t// https://github.com/anchore/grype/issues/1759\n\t\tif props == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn &props\n\t}\n\treturn nil\n}\n\nfunc toBomDescriptorComponent(srcMetadata source.Description) *cyclonedx.Component {\n\tname := srcMetadata.Name\n\tversion := srcMetadata.Version\n\tswitch metadata := srcMetadata.Metadata.(type) {\n\tcase source.ImageMetadata:\n\t\tif name == \"\" {\n\t\t\tname = metadata.UserInput\n\t\t}\n\t\tif version == \"\" {\n\t\t\tversion = metadata.ManifestDigest\n\t\t}\n\t\tbomRef, err := artifact.IDByHash(metadata.ID)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to get fingerprint of source image metadata=%s: %+v\", metadata.ID, err)\n\t\t}\n\t\treturn &cyclonedx.Component{\n\t\t\tBOMRef:   string(bomRef),\n\t\t\tType:     cyclonedx.ComponentTypeContainer,\n\t\t\tName:     name,\n\t\t\tVersion:  version,\n\t\t\tSupplier: toBomSupplier(srcMetadata),\n\t\t}\n\tcase source.DirectoryMetadata:\n\t\tif name == \"\" {\n\t\t\tname = metadata.Path\n\t\t}\n\t\tbomRef, err := artifact.IDByHash(metadata.Path)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to get fingerprint of source directory metadata path=%s: %+v\", metadata.Path, err)\n\t\t}\n\t\treturn &cyclonedx.Component{\n\t\t\tBOMRef: string(bomRef),\n\t\t\t// TODO: this is lossy... we can't know if this is a file or a directory\n\t\t\tType:     cyclonedx.ComponentTypeFile,\n\t\t\tName:     name,\n\t\t\tVersion:  version,\n\t\t\tSupplier: toBomSupplier(srcMetadata),\n\t\t}\n\tcase source.FileMetadata:\n\t\tif name == \"\" {\n\t\t\tname = metadata.Path\n\t\t}\n\t\tbomRef, err := artifact.IDByHash(metadata.Path)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to get fingerprint of source file metadata path=%s: %+v\", metadata.Path, err)\n\t\t}\n\t\treturn &cyclonedx.Component{\n\t\t\tBOMRef: string(bomRef),\n\t\t\t// TODO: this is lossy... we can't know if this is a file or a directory\n\t\t\tType:     cyclonedx.ComponentTypeFile,\n\t\t\tName:     name,\n\t\t\tVersion:  version,\n\t\t\tSupplier: toBomSupplier(srcMetadata),\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/common/cyclonedxhelpers/to_format_model_test.go",
    "content": "package cyclonedxhelpers\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstfile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil/helpers\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_formatCPE(t *testing.T) {\n\ttests := []struct {\n\t\tcpe      string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tcpe:      \"cpe:2.3:o:amazon:amazon_linux:2\",\n\t\t\texpected: \"cpe:2.3:o:amazon:amazon_linux:2:*:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\tcpe:      \"cpe:/o:opensuse:leap:15.2\",\n\t\t\texpected: \"cpe:2.3:o:opensuse:leap:15.2:*:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\tcpe:      \"invalid-cpe\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.cpe, func(t *testing.T) {\n\t\t\tout := formatCPE(test.cpe)\n\t\t\tassert.Equal(t, test.expected, out)\n\t\t})\n\t}\n}\n\nfunc Test_relationships(t *testing.T) {\n\tp1 := pkg.Package{\n\t\tName: \"p1\",\n\t}\n\n\tp2 := pkg.Package{\n\t\tName: \"p2\",\n\t}\n\n\tp3 := pkg.Package{\n\t\tName: \"p3\",\n\t}\n\n\tp4 := pkg.Package{\n\t\tName: \"p4\",\n\t}\n\n\tfor _, p := range []*pkg.Package{&p1, &p2, &p3, &p4} {\n\t\tp.PURL = fmt.Sprintf(\"pkg:generic/%s@%s\", p.Name, p.Name)\n\t\tp.SetID()\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tsbom     sbom.SBOM\n\t\texpected *[]cyclonedx.Dependency\n\t}{\n\t\t{\n\t\t\tname: \"package dependencyOf relationships output as dependencies\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(p1, p2, p3, p4),\n\t\t\t\t},\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p2,\n\t\t\t\t\t\tTo:   p1,\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p3,\n\t\t\t\t\t\tTo:   p1,\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p4,\n\t\t\t\t\t\tTo:   p2,\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.Dependency{\n\t\t\t\t{\n\t\t\t\t\tRef: helpers.DeriveBomRef(p1),\n\t\t\t\t\tDependencies: &[]string{\n\t\t\t\t\t\thelpers.DeriveBomRef(p2),\n\t\t\t\t\t\thelpers.DeriveBomRef(p3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRef: helpers.DeriveBomRef(p2),\n\t\t\t\t\tDependencies: &[]string{\n\t\t\t\t\t\thelpers.DeriveBomRef(p4),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package contains relationships not output\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(p1, p2, p3),\n\t\t\t\t},\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p2,\n\t\t\t\t\t\tTo:   p1,\n\t\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p3,\n\t\t\t\t\t\tTo:   p1,\n\t\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcdx := ToFormatModel(test.sbom)\n\t\t\tgot := cdx.Dependencies\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_FileComponents(t *testing.T) {\n\tp1 := pkg.Package{\n\t\tName: \"p1\",\n\t}\n\ttests := []struct {\n\t\tname string\n\t\tsbom sbom.SBOM\n\t\twant []cyclonedx.Component\n\t}{\n\t\t{\n\t\t\tname: \"sbom coordinates with file metadata are serialized to cdx along with packages\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(p1),\n\t\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {Path: \"/test\", Type: stfile.TypeRegular},\n\t\t\t\t\t},\n\t\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"xyz12345\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"2a1fc74ade23e357\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeLibrary,\n\t\t\t\t\tName:   \"p1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"3f31cb2d98be6c1e\",\n\t\t\t\t\tName:   \"/test\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeFile,\n\t\t\t\t\tHashes: &[]cyclonedx.Hash{\n\t\t\t\t\t\t{Algorithm: \"SHA-256\", Value: \"xyz12345\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sbom coordinates that don't contain metadata are not added to the final output\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {Path: \"/test\", Type: stfile.TypeRegular},\n\t\t\t\t\t},\n\t\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"xyz12345\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{RealPath: \"/test-2\"}: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"xyz678910\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"3f31cb2d98be6c1e\",\n\t\t\t\t\tName:   \"/test\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeFile,\n\t\t\t\t\tHashes: &[]cyclonedx.Hash{\n\t\t\t\t\t\t{Algorithm: \"SHA-256\", Value: \"xyz12345\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sbom coordinates that return hashes not covered by cdx only include valid digests\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {Path: \"/test\", Type: stfile.TypeRegular},\n\t\t\t\t\t},\n\t\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"xxh64\",\n\t\t\t\t\t\t\t\tValue:     \"xyz12345\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"xyz678910\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"3f31cb2d98be6c1e\",\n\t\t\t\t\tName:   \"/test\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeFile,\n\t\t\t\t\tHashes: &[]cyclonedx.Hash{\n\t\t\t\t\t\t{Algorithm: \"SHA-256\", Value: \"xyz678910\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sbom coordinates who's metadata is directory or symlink are skipped\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\t\t{RealPath: \"/testdir\"}: {\n\t\t\t\t\t\t\tPath: \"/testdir\",\n\t\t\t\t\t\t\tType: stfile.TypeDirectory,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{RealPath: \"/testsym\"}: {\n\t\t\t\t\t\t\tPath: \"/testsym\",\n\t\t\t\t\t\t\tType: stfile.TypeSymLink,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{RealPath: \"/test\"}: {Path: \"/test\", Type: stfile.TypeRegular},\n\t\t\t\t\t},\n\t\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\t\t{RealPath: \"/test\"}: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"xyz12345\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"3f31cb2d98be6c1e\",\n\t\t\t\t\tName:   \"/test\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeFile,\n\t\t\t\t\tHashes: &[]cyclonedx.Hash{\n\t\t\t\t\t\t{Algorithm: \"SHA-256\", Value: \"xyz12345\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"sbom with no files serialized correctly\",\n\t\t\tsbom: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(p1),\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []cyclonedx.Component{\n\t\t\t\t{\n\t\t\t\t\tBOMRef: \"2a1fc74ade23e357\",\n\t\t\t\t\tType:   cyclonedx.ComponentTypeLibrary,\n\t\t\t\t\tName:   \"p1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcdx := ToFormatModel(test.sbom)\n\t\t\tgot := *cdx.Components\n\t\t\tif diff := cmp.Diff(test.want, got); diff != \"\" {\n\t\t\t\tt.Errorf(\"cdx file components mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_toBomDescriptor(t *testing.T) {\n\ttype args struct {\n\t\tname        string\n\t\tversion     string\n\t\tsrcMetadata source.Description\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant *cyclonedx.Metadata\n\t}{\n\t\t{\n\t\t\tname: \"with image labels source metadata\",\n\t\t\targs: args{\n\t\t\t\tname:    \"test-image\",\n\t\t\t\tversion: \"1.0.0\",\n\t\t\t\tsrcMetadata: source.Description{\n\t\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\t\tLabels: map[string]string{\n\t\t\t\t\t\t\t\"key1\": \"value1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: &cyclonedx.Metadata{\n\t\t\t\tTimestamp:  \"\",\n\t\t\t\tLifecycles: nil,\n\t\t\t\tTools: &cyclonedx.ToolsChoice{\n\t\t\t\t\tComponents: &[]cyclonedx.Component{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType:    cyclonedx.ComponentTypeApplication,\n\t\t\t\t\t\t\tAuthor:  \"anchore\",\n\t\t\t\t\t\t\tName:    \"test-image\",\n\t\t\t\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthors: nil,\n\t\t\t\tComponent: &cyclonedx.Component{\n\t\t\t\t\tBOMRef:             \"\",\n\t\t\t\t\tMIMEType:           \"\",\n\t\t\t\t\tType:               \"container\",\n\t\t\t\t\tSupplier:           nil,\n\t\t\t\t\tAuthor:             \"\",\n\t\t\t\t\tPublisher:          \"\",\n\t\t\t\t\tGroup:              \"\",\n\t\t\t\t\tName:               \"\",\n\t\t\t\t\tVersion:            \"\",\n\t\t\t\t\tDescription:        \"\",\n\t\t\t\t\tScope:              \"\",\n\t\t\t\t\tHashes:             nil,\n\t\t\t\t\tLicenses:           nil,\n\t\t\t\t\tCopyright:          \"\",\n\t\t\t\t\tCPE:                \"\",\n\t\t\t\t\tPackageURL:         \"\",\n\t\t\t\t\tSWID:               nil,\n\t\t\t\t\tModified:           nil,\n\t\t\t\t\tPedigree:           nil,\n\t\t\t\t\tExternalReferences: nil,\n\t\t\t\t\tProperties:         nil,\n\t\t\t\t\tComponents:         nil,\n\t\t\t\t\tEvidence:           nil,\n\t\t\t\t\tReleaseNotes:       nil,\n\t\t\t\t},\n\t\t\t\tManufacture: nil,\n\t\t\t\tSupplier:    nil,\n\t\t\t\tLicenses:    nil,\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:image:labels:key1\",\n\t\t\t\t\t\tValue: \"value1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with optional supplier is on the root component and bom metadata\",\n\t\t\targs: args{\n\t\t\t\tname:    \"test-image\",\n\t\t\t\tversion: \"1.0.0\",\n\t\t\t\tsrcMetadata: source.Description{\n\t\t\t\t\tName:     \"test-image\",\n\t\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\t\tSupplier: \"optional-supplier\",\n\t\t\t\t\tMetadata: source.ImageMetadata{},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: &cyclonedx.Metadata{\n\t\t\t\tTimestamp:  \"\",\n\t\t\t\tLifecycles: nil,\n\t\t\t\tTools: &cyclonedx.ToolsChoice{\n\t\t\t\t\tComponents: &[]cyclonedx.Component{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType:    cyclonedx.ComponentTypeApplication,\n\t\t\t\t\t\t\tAuthor:  \"anchore\",\n\t\t\t\t\t\t\tName:    \"test-image\",\n\t\t\t\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthors: nil,\n\t\t\t\tComponent: &cyclonedx.Component{\n\t\t\t\t\tBOMRef:   \"\",\n\t\t\t\t\tMIMEType: \"\",\n\t\t\t\t\tType:     \"container\",\n\t\t\t\t\tSupplier: &cyclonedx.OrganizationalEntity{\n\t\t\t\t\t\tName: \"optional-supplier\",\n\t\t\t\t\t},\n\t\t\t\t\tAuthor:             \"\",\n\t\t\t\t\tPublisher:          \"\",\n\t\t\t\t\tGroup:              \"\",\n\t\t\t\t\tName:               \"test-image\",\n\t\t\t\t\tVersion:            \"1.0.0\",\n\t\t\t\t\tDescription:        \"\",\n\t\t\t\t\tScope:              \"\",\n\t\t\t\t\tHashes:             nil,\n\t\t\t\t\tLicenses:           nil,\n\t\t\t\t\tCopyright:          \"\",\n\t\t\t\t\tCPE:                \"\",\n\t\t\t\t\tPackageURL:         \"\",\n\t\t\t\t\tSWID:               nil,\n\t\t\t\t\tModified:           nil,\n\t\t\t\t\tPedigree:           nil,\n\t\t\t\t\tExternalReferences: nil,\n\t\t\t\t\tProperties:         nil,\n\t\t\t\t\tComponents:         nil,\n\t\t\t\t\tEvidence:           nil,\n\t\t\t\t\tReleaseNotes:       nil,\n\t\t\t\t},\n\t\t\t\tManufacture: nil,\n\t\t\t\tSupplier: &cyclonedx.OrganizationalEntity{\n\t\t\t\t\tName: \"optional-supplier\",\n\t\t\t\t},\n\t\t\t\tLicenses: nil,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsubject := toBomDescriptor(tt.args.name, tt.args.version, tt.args.srcMetadata)\n\n\t\t\trequire.NotEmpty(t, subject.Component.BOMRef)\n\t\t\tsubject.Timestamp = \"\" // not under test\n\n\t\t\trequire.NotNil(t, subject.Component)\n\t\t\trequire.NotEmpty(t, subject.Component.BOMRef)\n\t\t\tsubject.Component.BOMRef = \"\" // not under test\n\n\t\t\tif d := cmp.Diff(tt.want, subject); d != \"\" {\n\t\t\t\tt.Errorf(\"toBomDescriptor() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_toBomProperties(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tsrcMetadata source.Description\n\t\tprops       *[]cyclonedx.Property\n\t}{\n\t\t{\n\t\t\tname: \"ImageMetadata without labels\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tLabels: map[string]string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprops: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ImageMetadata with labels\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tLabels: map[string]string{\n\t\t\t\t\t\t\"label1\": \"value1\",\n\t\t\t\t\t\t\"label2\": \"value2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprops: &[]cyclonedx.Property{\n\t\t\t\t{Name: \"syft:image:labels:label1\", Value: \"value1\"},\n\t\t\t\t{Name: \"syft:image:labels:label2\", Value: \"value2\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"not ImageMetadata\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.FileMetadata{},\n\t\t\t},\n\t\t\tprops: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tt.Parallel()\n\t\t\tprops := toBomProperties(test.srcMetadata)\n\t\t\trequire.Equal(t, test.props, props)\n\t\t})\n\t}\n}\n\nfunc Test_toOsComponent(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trelease  linux.Release\n\t\texpected cyclonedx.Component\n\t}{\n\t\t{\n\t\t\tname: \"basic os component\",\n\t\t\trelease: linux.Release{\n\t\t\t\tID:        \"myLinux\",\n\t\t\t\tVersionID: \"myVersion\",\n\t\t\t},\n\t\t\texpected: cyclonedx.Component{\n\t\t\t\tBOMRef:  \"os:myLinux@myVersion\",\n\t\t\t\tType:    cyclonedx.ComponentTypeOS,\n\t\t\t\tName:    \"myLinux\",\n\t\t\t\tVersion: \"myVersion\",\n\t\t\t\tSWID: &cyclonedx.SWID{\n\t\t\t\t\tTagID:   \"myLinux\",\n\t\t\t\t\tName:    \"myLinux\",\n\t\t\t\t\tVersion: \"myVersion\",\n\t\t\t\t},\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:distro:extendedSupport\",\n\t\t\t\t\t\tValue: \"false\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:distro:id\",\n\t\t\t\t\t\tValue: \"myLinux\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:distro:versionID\",\n\t\t\t\t\t\tValue: \"myVersion\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgotSlice := toOSComponent(&test.release)\n\t\t\trequire.Len(t, gotSlice, 1)\n\t\t\tgot := gotSlice[0]\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_toOSBomRef(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tosName    string\n\t\tosVersion string\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tname:      \"no name or version specified\",\n\t\t\tosName:    \"\",\n\t\t\tosVersion: \"\",\n\t\t\texpected:  \"os:unknown\",\n\t\t},\n\t\t{\n\t\t\tname:      \"no version specified\",\n\t\t\tosName:    \"my-name\",\n\t\t\tosVersion: \"\",\n\t\t\texpected:  \"os:my-name\",\n\t\t},\n\t\t{\n\t\t\tname:      \"no name specified\",\n\t\t\tosName:    \"\",\n\t\t\tosVersion: \"my-version\",\n\t\t\texpected:  \"os:unknown\",\n\t\t},\n\t\t{\n\t\t\tname:      \"both name and version specified\",\n\t\t\tosName:    \"my-name\",\n\t\t\tosVersion: \"my-version\",\n\t\t\texpected:  \"os:my-name@my-version\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := toOSBomRef(test.osName, test.osVersion)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/common/spdxhelpers/to_format_model.go",
    "content": "//nolint:gosec // sha1 is used as a required hash function for SPDX, not a crypto function\npackage spdxhelpers\n\nimport (\n\t\"crypto/sha1\"\n\t\"fmt\"\n\t\"path\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/distribution/reference\"\n\t\"github.com/spdx/tools-golang/spdx\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\tformatInternal \"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil/helpers\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst (\n\tnoAssertion = \"NOASSERTION\"\n\n\tspdxPrimaryPurposeContainer = \"CONTAINER\"\n\tspdxPrimaryPurposeFile      = \"FILE\"\n\tspdxPrimaryPurposeOther     = \"OTHER\"\n\n\tprefixImage     = \"Image\"\n\tprefixOCIModel  = \"OCIModel\"\n\tprefixDirectory = \"Directory\"\n\tprefixFile      = \"File\"\n\tprefixSnap      = \"Snap\"\n\tprefixUnknown   = \"Unknown\"\n)\n\n// ToFormatModel creates and populates a new SPDX document struct that follows the SPDX 2.3\n// spec from the given SBOM model.\n//\n//nolint:funlen\nfunc ToFormatModel(s sbom.SBOM) *spdx.Document {\n\tname, namespace := helpers.DocumentNameAndNamespace(s.Source, s.Descriptor)\n\n\trels := relationship.NewIndex(s.Relationships...)\n\tpackages, otherLicenses := toPackages(rels, s.Artifacts.Packages, s)\n\n\tallRelationships := toRelationships(rels.All())\n\n\t// for valid SPDX we need a document describes relationship\n\tdescribesID := spdx.ElementID(\"DOCUMENT\")\n\n\trootPackage := toRootPackage(s.Source)\n\tif rootPackage != nil {\n\t\tdescribesID = rootPackage.PackageSPDXIdentifier\n\n\t\t// add all relationships from the document root to all other packages\n\t\tallRelationships = append(allRelationships, toRootRelationships(rootPackage, packages)...)\n\n\t\t// append the root package\n\t\tpackages = append(packages, rootPackage)\n\t}\n\n\t// add a relationship for the package the document describes\n\tdocumentDescribesRelationship := &spdx.Relationship{\n\t\tRefA: spdx.DocElementID{\n\t\t\tElementRefID: \"DOCUMENT\",\n\t\t},\n\t\tRelationship: string(helpers.DescribesRelationship),\n\t\tRefB: spdx.DocElementID{\n\t\t\tElementRefID: describesID,\n\t\t},\n\t}\n\n\t// add the root document relationship\n\tallRelationships = append(allRelationships, documentDescribesRelationship)\n\n\treturn &spdx.Document{\n\t\t// 6.1: SPDX Version; should be in the format \"SPDX-x.x\"\n\t\t// Cardinality: mandatory, one\n\t\tSPDXVersion: spdx.Version,\n\n\t\t// 6.2: Data License; should be \"CC0-1.0\"\n\t\t// Cardinality: mandatory, one\n\t\tDataLicense: spdx.DataLicense,\n\n\t\t// 6.3: SPDX Identifier; should be \"DOCUMENT\" to represent mandatory identifier of SPDXRef-DOCUMENT\n\t\t// Cardinality: mandatory, one\n\t\tSPDXIdentifier: \"DOCUMENT\",\n\n\t\t// 6.4: Document Name\n\t\t// Cardinality: mandatory, one\n\t\tDocumentName: name,\n\n\t\t// 6.5: Document Namespace\n\t\t// Cardinality: mandatory, one\n\t\t// Purpose: Provide an SPDX document specific namespace as a unique absolute Uniform Resource\n\t\t// Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter. The SPDX\n\t\t// Document URI cannot contain a URI \"part\" (e.g. the \"#\" character), since the ‘#’ is used in SPDX\n\t\t// element URIs (packages, files, snippets, etc) to separate the document namespace from the\n\t\t// element’s SPDX identifier. Additionally, a scheme (e.g. “https:”) is required.\n\n\t\t// The URI must be unique for the SPDX document including the specific version of the SPDX document.\n\t\t// If the SPDX document is updated, thereby creating a new version, a new URI for the updated\n\t\t// document must be used. There can only be one URI for an SPDX document and only one SPDX document\n\t\t// for a given URI.\n\n\t\t// Note that the URI does not have to be accessible. It is only intended to provide a unique ID.\n\t\t// In many cases, the URI will point to a web accessible document, but this should not be assumed\n\t\t// to be the case.\n\n\t\tDocumentNamespace: namespace,\n\n\t\t// 6.6: External Document References\n\t\t// Cardinality: optional, one or many\n\t\tExternalDocumentReferences: nil,\n\n\t\t// 6.11: Document Comment\n\t\t// Cardinality: optional, one\n\t\tDocumentComment: \"\",\n\n\t\tCreationInfo: &spdx.CreationInfo{\n\t\t\t// 6.7: License List Version\n\t\t\t// Cardinality: optional, one\n\t\t\tLicenseListVersion: trimPatchVersion(spdxlicense.Version),\n\n\t\t\t// 6.8: Creators: may have multiple keys for Person, Organization\n\t\t\t//      and/or Tool\n\t\t\t// Cardinality: mandatory, one or many\n\t\t\tCreators: []spdx.Creator{\n\t\t\t\t{\n\t\t\t\t\tCreator:     \"Anchore, Inc\",\n\t\t\t\t\tCreatorType: \"Organization\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tCreator:     s.Descriptor.Name + \"-\" + s.Descriptor.Version,\n\t\t\t\t\tCreatorType: \"Tool\",\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// 6.9: Created: data format YYYY-MM-DDThh:mm:ssZ\n\t\t\t// Cardinality: mandatory, one\n\t\t\tCreated: time.Now().UTC().Format(time.RFC3339),\n\n\t\t\t// 6.10: Creator Comment\n\t\t\t// Cardinality: optional, one\n\t\t\tCreatorComment: \"\",\n\t\t},\n\t\tPackages:      packages,\n\t\tFiles:         toFiles(s),\n\t\tRelationships: allRelationships,\n\t\tOtherLicenses: convertOtherLicense(otherLicenses),\n\t}\n}\n\nfunc toRootRelationships(rootPackage *spdx.Package, packages []*spdx.Package) (out []*spdx.Relationship) {\n\tfor _, p := range packages {\n\t\tout = append(out, &spdx.Relationship{\n\t\t\tRefA: spdx.DocElementID{\n\t\t\t\tElementRefID: rootPackage.PackageSPDXIdentifier,\n\t\t\t},\n\t\t\tRelationship: string(helpers.ContainsRelationship),\n\t\t\tRefB: spdx.DocElementID{\n\t\t\t\tElementRefID: p.PackageSPDXIdentifier,\n\t\t\t},\n\t\t})\n\t}\n\treturn\n}\n\n//nolint:funlen\nfunc toRootPackage(s source.Description) *spdx.Package {\n\tvar prefix string\n\n\tname := s.Name\n\tversion := s.Version\n\n\tvar purl *packageurl.PackageURL\n\tpurpose := \"\"\n\tvar checksums []spdx.Checksum\n\tswitch m := s.Metadata.(type) {\n\tcase source.ImageMetadata:\n\t\tprefix = prefixImage\n\t\tpurpose = spdxPrimaryPurposeContainer\n\n\t\tqualifiers := packageurl.Qualifiers{\n\t\t\t{\n\t\t\t\tKey:   \"arch\",\n\t\t\t\tValue: m.Architecture,\n\t\t\t},\n\t\t}\n\n\t\tref, _ := reference.Parse(m.UserInput)\n\t\tif ref, ok := ref.(reference.NamedTagged); ok {\n\t\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\t\tKey:   \"tag\",\n\t\t\t\tValue: ref.Tag(),\n\t\t\t})\n\t\t}\n\n\t\tc := toChecksum(m.ManifestDigest)\n\t\tif c != nil {\n\t\t\tchecksums = append(checksums, *c)\n\t\t\tpurl = &packageurl.PackageURL{\n\t\t\t\tType:       \"oci\",\n\t\t\t\tName:       s.Name,\n\t\t\t\tVersion:    m.ManifestDigest,\n\t\t\t\tQualifiers: qualifiers,\n\t\t\t}\n\t\t}\n\n\tcase source.OCIModelMetadata:\n\t\tprefix = prefixOCIModel\n\t\tpurpose = spdxPrimaryPurposeContainer\n\n\t\tqualifiers := packageurl.Qualifiers{\n\t\t\t{\n\t\t\t\tKey:   \"arch\",\n\t\t\t\tValue: m.Architecture,\n\t\t\t},\n\t\t}\n\n\t\tref, _ := reference.Parse(m.UserInput)\n\t\tif ref, ok := ref.(reference.NamedTagged); ok {\n\t\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\t\tKey:   \"tag\",\n\t\t\t\tValue: ref.Tag(),\n\t\t\t})\n\t\t}\n\n\t\tc := toChecksum(m.ManifestDigest)\n\t\tif c != nil {\n\t\t\tchecksums = append(checksums, *c)\n\t\t\tpurl = &packageurl.PackageURL{\n\t\t\t\tType:       \"oci\",\n\t\t\t\tName:       s.Name,\n\t\t\t\tVersion:    m.ManifestDigest,\n\t\t\t\tQualifiers: qualifiers,\n\t\t\t}\n\t\t}\n\n\tcase source.DirectoryMetadata:\n\t\tprefix = prefixDirectory\n\t\tpurpose = spdxPrimaryPurposeFile\n\n\tcase source.FileMetadata:\n\t\tprefix = prefixFile\n\t\tpurpose = spdxPrimaryPurposeFile\n\n\t\tfor _, d := range m.Digests {\n\t\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\t\tAlgorithm: toChecksumAlgorithm(d.Algorithm),\n\t\t\t\tValue:     d.Value,\n\t\t\t})\n\t\t}\n\n\tcase source.SnapMetadata:\n\t\tprefix = prefixSnap\n\t\tpurpose = spdxPrimaryPurposeContainer\n\n\t\tfor _, d := range m.Digests {\n\t\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\t\tAlgorithm: toChecksumAlgorithm(d.Algorithm),\n\t\t\t\tValue:     d.Value,\n\t\t\t})\n\t\t}\n\n\tdefault:\n\t\tprefix = prefixUnknown\n\t\tpurpose = spdxPrimaryPurposeOther\n\n\t\tif name == \"\" {\n\t\t\tname = s.ID\n\t\t}\n\t}\n\n\tp := &spdx.Package{\n\t\tPackageName:               name,\n\t\tPackageSPDXIdentifier:     spdx.ElementID(helpers.SanitizeElementID(fmt.Sprintf(\"DocumentRoot-%s-%s\", prefix, name))),\n\t\tPackageVersion:            version,\n\t\tPackageChecksums:          checksums,\n\t\tPackageExternalReferences: nil,\n\t\tPrimaryPackagePurpose:     purpose,\n\t\tPackageSupplier:           toSPDXSupplier(s),\n\t\tPackageCopyrightText:      helpers.NOASSERTION,\n\t\tPackageDownloadLocation:   helpers.NOASSERTION,\n\t\tPackageLicenseConcluded:   helpers.NOASSERTION,\n\t\tPackageLicenseDeclared:    helpers.NOASSERTION,\n\t}\n\n\tif purl != nil {\n\t\tp.PackageExternalReferences = []*spdx.PackageExternalReference{\n\t\t\t{\n\t\t\t\tCategory: string(helpers.PackageManagerReferenceCategory),\n\t\t\t\tRefType:  string(helpers.PurlExternalRefType),\n\t\t\t\tLocator:  purl.String(),\n\t\t\t},\n\t\t}\n\t}\n\n\treturn p\n}\n\nfunc toSPDXID(identifiable artifact.Identifiable) spdx.ElementID {\n\tid := string(identifiable.ID())\n\tif strings.HasPrefix(id, \"SPDXRef-\") {\n\t\t// this is already an SPDX ID, no need to change it (except for the prefix)\n\t\treturn spdx.ElementID(helpers.SanitizeElementID(strings.TrimPrefix(id, \"SPDXRef-\")))\n\t}\n\tmaxLen := 40\n\tswitch it := identifiable.(type) {\n\tcase pkg.Package:\n\t\tif strings.HasPrefix(id, \"Package-\") {\n\t\t\t// this is already an SPDX ID, no need to change it\n\t\t\treturn spdx.ElementID(helpers.SanitizeElementID(id))\n\t\t}\n\t\tswitch {\n\t\tcase it.Type != \"\" && it.Name != \"\":\n\t\t\tid = fmt.Sprintf(\"Package-%s-%s-%s\", it.Type, it.Name, id)\n\t\tcase it.Name != \"\":\n\t\t\tid = fmt.Sprintf(\"Package-%s-%s\", it.Name, id)\n\t\tcase it.Type != \"\":\n\t\t\tid = fmt.Sprintf(\"Package-%s-%s\", it.Type, id)\n\t\tdefault:\n\t\t\tid = fmt.Sprintf(\"Package-%s\", id)\n\t\t}\n\tcase file.Coordinates:\n\t\tif strings.HasPrefix(id, \"File-\") {\n\t\t\t// this is already an SPDX ID, no need to change it. Note: there is no way to reach this case today\n\t\t\t// from within syft, however, this covers future cases where the ID can be overridden\n\t\t\treturn spdx.ElementID(helpers.SanitizeElementID(id))\n\t\t}\n\t\tp := \"\"\n\t\tparts := strings.Split(it.RealPath, \"/\")\n\t\tfor i := len(parts); i > 0; i-- {\n\t\t\tpart := parts[i-1]\n\t\t\tif len(part) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif i < len(parts) && len(p)+len(part)+3 > maxLen {\n\t\t\t\tp = \"...\" + p\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tp = path.Join(part, p)\n\t\t}\n\t\tid = fmt.Sprintf(\"File-%s-%s\", p, id)\n\t}\n\t// NOTE: the spdx library prepend SPDXRef-, so we don't do it here\n\treturn spdx.ElementID(helpers.SanitizeElementID(id))\n}\n\nfunc toSPDXSupplier(s source.Description) *spdx.Supplier {\n\tsupplier := helpers.NOASSERTION\n\tif s.Supplier != \"\" {\n\t\tsupplier = s.Supplier\n\t}\n\n\tsupplierType := \"\"\n\tif supplier != helpers.NOASSERTION {\n\t\tsupplierType = helpers.SUPPLIERORG\n\t}\n\n\treturn &spdx.Supplier{\n\t\tSupplier:     supplier,\n\t\tSupplierType: supplierType,\n\t}\n}\n\n// packages populates all Package Information from the package Collection (see https://spdx.github.io/spdx-spec/3-package-information/)\n//\n//nolint:funlen\nfunc toPackages(rels *relationship.Index, catalog *pkg.Collection, sbom sbom.SBOM) (results []*spdx.Package, otherLicenses []spdx.OtherLicense) {\n\totherLicenseSet := helpers.NewSPDXOtherLicenseSet()\n\tfor _, p := range catalog.Sorted() {\n\t\t// name should be guaranteed to be unique but semantically useful and stable\n\t\tid := toSPDXID(p)\n\n\t\t// If the Concluded License is not the same as the Declared License, a written explanation should be provided\n\t\t// in the Comments on License field (section 7.16). With respect to NOASSERTION, a written explanation in\n\t\t// the Comments on License field (section 7.16) is preferred.\n\t\t// extract these correctly to the spdx license format\n\t\tconcluded, declared, ol := helpers.License(p)\n\t\totherLicenseSet.Add(ol...)\n\n\t\t// two ways to get filesAnalyzed == true:\n\t\t// 1. syft has generated a sha1 digest for the package itself - usually in the java cataloger\n\t\t// 2. syft has generated a sha1 digest for the package's contents\n\t\tpackageChecksums, filesAnalyzed := toPackageChecksums(p)\n\n\t\tpackageVerificationCode := newPackageVerificationCode(rels, p, sbom)\n\t\tif packageVerificationCode != nil {\n\t\t\tfilesAnalyzed = true\n\t\t}\n\n\t\t// invalid SPDX document state\n\t\tif filesAnalyzed && packageVerificationCode == nil {\n\t\t\t// this is an invalid document state\n\t\t\t// we reset the filesAnalyzed flag to false to avoid\n\t\t\t// cases where a package digest was generated but there was\n\t\t\t// not enough metadata to generate a verification code regarding the files\n\t\t\tfilesAnalyzed = false\n\t\t}\n\n\t\tresults = append(results, &spdx.Package{\n\t\t\t// NOT PART OF SPEC\n\t\t\t// flag: does this \"package\" contain files that were in fact \"unpackaged\",\n\t\t\t// e.g. included directly in the Document without being in a Package?\n\t\t\tIsUnpackaged: false,\n\n\t\t\t// 7.1: Package Name\n\t\t\t// Cardinality: mandatory, one\n\t\t\tPackageName: p.Name,\n\n\t\t\t// 7.2: Package SPDX Identifier: \"SPDXRef-[idstring]\"\n\t\t\t// Cardinality: mandatory, one\n\t\t\tPackageSPDXIdentifier: id,\n\n\t\t\t// 7.3: Package Version\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageVersion: p.Version,\n\n\t\t\t// 7.4: Package File Name\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageFileName: \"\",\n\n\t\t\t// 7.5: Package Supplier: may have single result for either Person or Organization,\n\t\t\t//                        or NOASSERTION\n\t\t\t// Cardinality: optional, one\n\n\t\t\t// 7.6: Package Originator: may have single result for either Person or Organization,\n\t\t\t//                          or NOASSERTION\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageSupplier: toPackageSupplier(p, sbom.Source.Supplier),\n\n\t\t\tPackageOriginator: toPackageOriginator(p),\n\n\t\t\t// 7.7: Package Download Location\n\t\t\t// Cardinality: mandatory, one\n\t\t\t// NONE if there is no download location whatsoever.\n\t\t\t// NOASSERTION if:\n\t\t\t//   (i) the SPDX file creator has attempted to but cannot reach a reasonable objective determination;\n\t\t\t//   (ii) the SPDX file creator has made no attempt to determine this field; or\n\t\t\t//   (iii) the SPDX file creator has intentionally provided no information (no meaning should be implied by doing so).\n\t\t\tPackageDownloadLocation: helpers.DownloadLocation(p),\n\n\t\t\t// 7.8: FilesAnalyzed\n\t\t\t// Cardinality: optional, one; default value is \"true\" if omitted\n\n\t\t\t// Purpose: Indicates whether the file content of this package has been available for or subjected to\n\t\t\t// analysis when creating the SPDX document. If false, indicates packages that represent metadata or\n\t\t\t// URI references to a project, product, artifact, distribution or a component. If false, the package\n\t\t\t// must not contain any files.\n\n\t\t\t// Intent: A package can refer to a project, product, artifact, distribution or a component that is\n\t\t\t// external to the SPDX document.\n\t\t\tFilesAnalyzed: filesAnalyzed,\n\t\t\t// NOT PART OF SPEC: did FilesAnalyzed tag appear?\n\t\t\tIsFilesAnalyzedTagPresent: true,\n\n\t\t\t// 7.9: Package Verification Code\n\t\t\t// Cardinality: optional, one if filesAnalyzed is true / omitted;\n\t\t\t//              zero (must be omitted) if filesAnalyzed is false\n\t\t\tPackageVerificationCode: packageVerificationCode,\n\n\t\t\t// 7.10: Package Checksum: may have keys for SHA1, SHA256 and/or MD5\n\t\t\t// Cardinality: optional, one or many\n\n\t\t\t// 7.10.1 Purpose: Provide an independently reproducible mechanism that permits unique identification of\n\t\t\t// a specific package that correlates to the data in this SPDX file. This identifier enables a recipient\n\t\t\t// to determine if any file in the original package has been changed. If the SPDX file is to be included\n\t\t\t// in a package, this value should not be calculated. The SHA-1 algorithm will be used to provide the\n\t\t\t// checksum by default.\n\t\t\tPackageChecksums: packageChecksums,\n\n\t\t\t// 7.11: Package Home Page\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageHomePage: helpers.Homepage(p),\n\n\t\t\t// 7.12: Source Information\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageSourceInfo: helpers.SourceInfo(p),\n\n\t\t\t// 7.13: Concluded License: SPDX License Expression, \"NONE\" or \"NOASSERTION\"\n\t\t\t// Cardinality: mandatory, one\n\t\t\t// Purpose: Contain the license the SPDX file creator has concluded as governing the\n\t\t\t// package or alternative values, if the governing license cannot be determined.\n\t\t\tPackageLicenseConcluded: concluded,\n\n\t\t\t// 7.14: All Licenses Info from Files: SPDX License Expression, \"NONE\" or \"NOASSERTION\"\n\t\t\t// Cardinality: mandatory, one or many if filesAnalyzed is true / omitted;\n\t\t\t//              zero (must be omitted) if filesAnalyzed is false\n\t\t\tPackageLicenseInfoFromFiles: nil,\n\n\t\t\t// 7.15: Declared License: SPDX License Expression, \"NONE\" or \"NOASSERTION\"\n\t\t\t// Cardinality: mandatory, one\n\t\t\t// Purpose: List the licenses that have been declared by the authors of the package.\n\t\t\t// Any license information that does not originate from the package authors, e.g. license\n\t\t\t// information from a third party repository, should not be included in this field.\n\t\t\tPackageLicenseDeclared: declared,\n\n\t\t\t// 7.16: Comments on License\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageLicenseComments: \"\",\n\n\t\t\t// 7.17: Copyright Text: copyright notice(s) text, \"NONE\" or \"NOASSERTION\"\n\t\t\t// Cardinality: mandatory, one\n\t\t\t// Purpose: IdentifyFormat the copyright holders of the package, as well as any dates present. This will be a free form text field extracted from package information files. The options to populate this field are limited to:\n\t\t\t//\n\t\t\t// Any text related to a copyright notice, even if not complete;\n\t\t\t// NONE if the package contains no copyright information whatsoever; or\n\t\t\t// NOASSERTION, if\n\t\t\t//   (i) the SPDX document creator has made no attempt to determine this field; or\n\t\t\t//   (ii) the SPDX document creator has intentionally provided no information (no meaning should be implied by doing so).\n\t\t\t//\n\t\t\tPackageCopyrightText: noAssertion,\n\n\t\t\t// 7.18: Package Summary Description\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageSummary: \"\",\n\n\t\t\t// 7.19: Package Detailed Description\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageDescription: helpers.Description(p),\n\n\t\t\t// 7.20: Package Comment\n\t\t\t// Cardinality: optional, one\n\t\t\tPackageComment: \"\",\n\n\t\t\t// 7.21: Package External Reference\n\t\t\t// Cardinality: optional, one or many\n\t\t\tPackageExternalReferences: formatSPDXExternalRefs(p),\n\n\t\t\t// 7.22: Package External Reference Comment\n\t\t\t// Cardinality: conditional (optional, one) for each External Reference\n\t\t\t// contained within PackageExternalReference2_1 struct, if present\n\n\t\t\t// 7.23: Package Attribution Text\n\t\t\t// Cardinality: optional, one or many\n\t\t\tPackageAttributionTexts: nil,\n\t\t})\n\t}\n\treturn results, otherLicenseSet.ToSlice()\n}\n\nfunc toPackageChecksums(p pkg.Package) ([]spdx.Checksum, bool) {\n\tfilesAnalyzed := false\n\tvar checksums []spdx.Checksum\n\tswitch meta := p.Metadata.(type) {\n\t// we generate digest for some Java packages\n\t// spdx.github.io/spdx-spec/package-information/#710-package-checksum-field\n\tcase pkg.JavaArchive:\n\t\t// if syft has generated the digest here then filesAnalyzed is true\n\t\tif len(meta.ArchiveDigests) > 0 {\n\t\t\tfilesAnalyzed = true\n\t\t\tfor _, digest := range meta.ArchiveDigests {\n\t\t\t\talgo := strings.ToUpper(digest.Algorithm)\n\t\t\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\t\t\tAlgorithm: spdx.ChecksumAlgorithm(algo),\n\t\t\t\t\tValue:     digest.Value,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\tcase pkg.GolangBinaryBuildinfoEntry:\n\t\t// because the H1 digest is found in the Golang metadata we cannot claim that the files were analyzed\n\t\talgo, hexStr, err := helpers.HDigestToSHA(meta.H1Digest)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"invalid h1digest: %s: %v\", meta.H1Digest, err)\n\t\t\tbreak\n\t\t}\n\t\talgo = strings.ToUpper(algo)\n\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\tAlgorithm: spdx.ChecksumAlgorithm(algo),\n\t\t\tValue:     hexStr,\n\t\t})\n\tcase pkg.OpamPackage:\n\t\tfor _, checksum := range meta.Checksums {\n\t\t\tparts := strings.Split(checksum, \"=\")\n\t\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\t\tAlgorithm: spdx.ChecksumAlgorithm(strings.ToUpper(parts[0])),\n\t\t\t\tValue:     parts[1],\n\t\t\t})\n\t\t}\n\t}\n\treturn checksums, filesAnalyzed\n}\n\nfunc toPackageOriginator(p pkg.Package) *spdx.Originator {\n\tkind, originator := helpers.Originator(p)\n\tif kind == \"\" || originator == \"\" {\n\t\treturn nil\n\t}\n\treturn &spdx.Originator{\n\t\tOriginator:     originator,\n\t\tOriginatorType: kind,\n\t}\n}\n\nfunc toPackageSupplier(p pkg.Package, sbomSupplier string) *spdx.Supplier {\n\tkind, supplier := helpers.Supplier(p)\n\tif kind == \"\" || supplier == \"\" {\n\t\tsupplier := helpers.NOASSERTION\n\t\tsupplierType := \"\"\n\t\tif sbomSupplier != \"\" {\n\t\t\tsupplier = sbomSupplier\n\t\t\tsupplierType = helpers.SUPPLIERORG\n\t\t}\n\t\treturn &spdx.Supplier{\n\t\t\tSupplier:     supplier,\n\t\t\tSupplierType: supplierType,\n\t\t}\n\t}\n\treturn &spdx.Supplier{\n\t\tSupplier:     supplier,\n\t\tSupplierType: kind,\n\t}\n}\n\nfunc formatSPDXExternalRefs(p pkg.Package) (refs []*spdx.PackageExternalReference) {\n\tfor _, ref := range helpers.ExternalRefs(p) {\n\t\trefs = append(refs, &spdx.PackageExternalReference{\n\t\t\tCategory:           string(ref.ReferenceCategory),\n\t\t\tRefType:            string(ref.ReferenceType),\n\t\t\tLocator:            ref.ReferenceLocator,\n\t\t\tExternalRefComment: ref.Comment,\n\t\t})\n\t}\n\treturn refs\n}\n\nfunc toRelationships(relationships []artifact.Relationship) (result []*spdx.Relationship) {\n\tfor _, r := range relationships {\n\t\texists, relationshipType, comment := lookupRelationship(r.Type)\n\n\t\tif !exists {\n\t\t\tlog.Debugf(\"unable to convert relationship to SPDX, dropping: %+v\", r)\n\t\t\tcontinue\n\t\t}\n\n\t\t// FIXME: we are only currently including Package -> * relationships\n\t\tif _, ok := r.From.(pkg.Package); !ok {\n\t\t\tlog.Debugf(\"skipping non-package relationship: %+v\", r)\n\t\t\tcontinue\n\t\t}\n\n\t\tresult = append(result, &spdx.Relationship{\n\t\t\tRefA: spdx.DocElementID{\n\t\t\t\tElementRefID: toSPDXID(r.From),\n\t\t\t},\n\t\t\tRelationship: string(relationshipType),\n\t\t\tRefB: spdx.DocElementID{\n\t\t\t\tElementRefID: toSPDXID(r.To),\n\t\t\t},\n\t\t\tRelationshipComment: comment,\n\t\t})\n\t}\n\treturn result\n}\n\nfunc lookupRelationship(ty artifact.RelationshipType) (bool, helpers.RelationshipType, string) {\n\tswitch ty {\n\tcase artifact.ContainsRelationship:\n\t\treturn true, helpers.ContainsRelationship, \"\"\n\tcase artifact.DependencyOfRelationship:\n\t\treturn true, helpers.DependencyOfRelationship, \"\"\n\tcase artifact.OwnershipByFileOverlapRelationship:\n\t\treturn true, helpers.OtherRelationship, fmt.Sprintf(\"%s: indicates that the parent package claims ownership of a child package since the parent metadata indicates overlap with a location that a cataloger found the child package by\", ty)\n\tcase artifact.EvidentByRelationship:\n\t\treturn true, helpers.OtherRelationship, fmt.Sprintf(\"%s: indicates the package's existence is evident by the given file\", ty)\n\t}\n\treturn false, \"\", \"\"\n}\n\nfunc toFiles(s sbom.SBOM) (results []*spdx.File) {\n\tartifacts := s.Artifacts\n\n\t_, coordinateSorter := formatInternal.GetLocationSorters(s)\n\n\tcoordinates := s.AllCoordinates()\n\tslices.SortFunc(coordinates, coordinateSorter)\n\n\tfor _, c := range coordinates {\n\t\tvar metadata *file.Metadata\n\t\tif metadataForLocation, exists := artifacts.FileMetadata[c]; exists {\n\t\t\tmetadata = &metadataForLocation\n\t\t}\n\n\t\tvar digests []file.Digest\n\t\tif digestsForLocation, exists := artifacts.FileDigests[c]; exists {\n\t\t\tdigests = digestsForLocation\n\t\t}\n\n\t\t// if we don't have any metadata or digests for this location\n\t\t// then the file is most likely a symlink or non-regular file\n\t\t// for now we include a 0 sha1 digest as requested by the spdx spec\n\t\t// TODO: update location code in core SBOM so that we can map complex links\n\t\t// back to their real file digest location.\n\t\tif len(digests) == 0 {\n\t\t\tdigests = append(digests, file.Digest{Algorithm: \"sha1\", Value: \"0000000000000000000000000000000000000000\"})\n\t\t}\n\n\t\t// TODO: add file classifications (?) and content as a snippet\n\n\t\tvar comment string\n\t\tif c.FileSystemID != \"\" {\n\t\t\tcomment = fmt.Sprintf(\"layerID: %s\", c.FileSystemID)\n\t\t}\n\n\t\trelativePath, err := convertAbsoluteToRelative(c.RealPath)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to convert relative path '%s' to absolute path: %s\", c.RealPath, err)\n\t\t\trelativePath = c.RealPath\n\t\t}\n\n\t\tresults = append(results, &spdx.File{\n\t\t\tFileSPDXIdentifier: toSPDXID(c),\n\t\t\tFileComment:        comment,\n\t\t\t// required, no attempt made to determine license information\n\t\t\tLicenseConcluded:  noAssertion,\n\t\t\tFileCopyrightText: noAssertion,\n\t\t\tChecksums:         toFileChecksums(digests),\n\t\t\tFileName:          relativePath,\n\t\t\tFileTypes:         toFileTypes(metadata),\n\t\t\tLicenseInfoInFiles: []string{ // required in SPDX 2.2\n\t\t\t\thelpers.NOASSERTION,\n\t\t\t},\n\t\t})\n\t}\n\n\t// sort by real path then virtual path to ensure the result is stable across multiple runs\n\tsort.SliceStable(results, func(i, j int) bool {\n\t\tif results[i].FileName == results[j].FileName {\n\t\t\treturn results[i].FileSPDXIdentifier < results[j].FileSPDXIdentifier\n\t\t}\n\t\treturn results[i].FileName < results[j].FileName\n\t})\n\treturn results\n}\n\nfunc toFileChecksums(digests []file.Digest) (checksums []spdx.Checksum) {\n\tchecksums = make([]spdx.Checksum, 0, len(digests))\n\tfor _, digest := range digests {\n\t\tchecksums = append(checksums, spdx.Checksum{\n\t\t\tAlgorithm: toChecksumAlgorithm(digest.Algorithm),\n\t\t\tValue:     digest.Value,\n\t\t})\n\t}\n\treturn checksums\n}\n\n// toChecksum takes a checksum in the format <algorithm>:<hash> and returns an spdx.Checksum or nil if the string is invalid\nfunc toChecksum(algorithmHash string) *spdx.Checksum {\n\tparts := strings.Split(algorithmHash, \":\")\n\tif len(parts) < 2 {\n\t\treturn nil\n\t}\n\treturn &spdx.Checksum{\n\t\tAlgorithm: toChecksumAlgorithm(parts[0]),\n\t\tValue:     parts[1],\n\t}\n}\n\nfunc toChecksumAlgorithm(algorithm string) spdx.ChecksumAlgorithm {\n\t// this needs to be an uppercase version of our algorithm\n\treturn spdx.ChecksumAlgorithm(strings.ToUpper(algorithm))\n}\n\nfunc toFileTypes(metadata *file.Metadata) (ty []string) {\n\tif metadata == nil {\n\t\treturn nil\n\t}\n\n\tmimeTypePrefix := strings.Split(metadata.MIMEType, \"/\")[0]\n\tswitch mimeTypePrefix {\n\tcase \"image\":\n\t\tty = append(ty, string(helpers.ImageFileType))\n\tcase \"video\":\n\t\tty = append(ty, string(helpers.VideoFileType))\n\tcase \"application\":\n\t\tty = append(ty, string(helpers.ApplicationFileType))\n\tcase \"text\":\n\t\tty = append(ty, string(helpers.TextFileType))\n\tcase \"audio\":\n\t\tty = append(ty, string(helpers.AudioFileType))\n\t}\n\n\tif mimetype.IsExecutable(metadata.MIMEType) {\n\t\tty = append(ty, string(helpers.BinaryFileType))\n\t}\n\n\tif mimetype.IsArchive(metadata.MIMEType) {\n\t\tty = append(ty, string(helpers.ArchiveFileType))\n\t}\n\n\t// TODO: add support for source, spdx, and documentation file types\n\tif len(ty) == 0 {\n\t\tty = append(ty, string(helpers.OtherFileType))\n\t}\n\n\treturn ty\n}\n\n// TODO: handle SPDX excludes file case\n// f file is an \"excludes\" file, skip it /* exclude SPDX analysis file(s) */\n// see: https://spdx.github.io/spdx-spec/v2.3/package-information/#79-package-verification-code-field\n// the above link contains the SPDX algorithm for a package verification code\nfunc newPackageVerificationCode(rels *relationship.Index, p pkg.Package, sbom sbom.SBOM) *spdx.PackageVerificationCode {\n\t// key off of the spdx contains relationship;\n\t// spdx validator will fail if a package claims to contain a file, but no sha1 provided\n\t// if a sha1 for a file is provided, then the validator will fail if the package does not have\n\t// a package verification code\n\tcoordinates := rels.Coordinates(p, artifact.ContainsRelationship)\n\tvar digests []file.Digest\n\tfor _, c := range coordinates {\n\t\tdigest := sbom.Artifacts.FileDigests[c]\n\t\tif len(digest) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar d file.Digest\n\t\tfor _, digest := range digest {\n\t\t\tif digest.Algorithm == \"sha1\" {\n\t\t\t\td = digest\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tdigests = append(digests, d)\n\t}\n\n\tif len(digests) == 0 {\n\t\treturn nil\n\t}\n\n\t// sort templist in ascending order by SHA1 value\n\tsort.SliceStable(digests, func(i, j int) bool {\n\t\treturn digests[i].Value < digests[j].Value\n\t})\n\n\t// filelist = templist with \"/n\"s removed. /* ordered sequence of SHA1 values with no separators\n\tvar b strings.Builder\n\tfor _, digest := range digests {\n\t\tb.WriteString(digest.Value)\n\t}\n\n\t//nolint:gosec\n\thasher := sha1.New()\n\t_, _ = hasher.Write([]byte(b.String()))\n\treturn &spdx.PackageVerificationCode{\n\t\t// 7.9.1: Package Verification Code Value\n\t\t// Cardinality: mandatory, one\n\t\tValue: fmt.Sprintf(\"%+x\", hasher.Sum(nil)),\n\t}\n}\n\n// SPDX 2.2 spec requires that the patch version be removed from the semver string\n// for the license list version field\nfunc trimPatchVersion(semver string) string {\n\tparts := strings.Split(semver, \".\")\n\tif len(parts) >= 3 {\n\t\treturn strings.Join(parts[:2], \".\")\n\t}\n\treturn semver\n}\n\n// spdx requires that the file name field is a relative filename\n// with the root of the package archive or directory\nfunc convertAbsoluteToRelative(absPath string) (string, error) {\n\t// Ensure the absolute path is absolute (although it should already be)\n\tif !path.IsAbs(absPath) {\n\t\t// already relative\n\t\tlog.Debugf(\"%s is already relative\", absPath)\n\t\treturn absPath, nil\n\t}\n\n\t// we use \"/\" here given that we're converting absolute paths from root to relative\n\trelPath, found := strings.CutPrefix(absPath, \"/\")\n\tif !found {\n\t\treturn \"\", fmt.Errorf(\"error calculating relative path: %s\", absPath)\n\t}\n\n\treturn relPath, nil\n}\n\nfunc convertOtherLicense(otherLicenses []spdx.OtherLicense) []*spdx.OtherLicense {\n\tif len(otherLicenses) == 0 {\n\t\treturn nil\n\t}\n\n\tresult := make([]*spdx.OtherLicense, 0, len(otherLicenses))\n\tfor i := range otherLicenses {\n\t\tresult = append(result, &otherLicenses[i])\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "syft/format/common/spdxhelpers/to_format_model_test.go",
    "content": "package spdxhelpers\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/spdx/tools-golang/spdx\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_3\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil/helpers\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_toFormatModel(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname     string\n\t\tin       sbom.SBOM\n\t\texpected *spdx.Document\n\t}{\n\t\t{\n\t\t\tname: \"container\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName:     \"alpine\",\n\t\t\t\t\tVersion:  \"sha256:d34db33f\",\n\t\t\t\t\tSupplier: \"Alpine Linux\",\n\t\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\t\tUserInput:      \"alpine:latest\",\n\t\t\t\t\t\tManifestDigest: \"sha256:d34db33f\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &spdx.Document{\n\t\t\t\tSPDXIdentifier: \"DOCUMENT\",\n\t\t\t\tSPDXVersion:    spdx.Version,\n\t\t\t\tDataLicense:    spdx.DataLicense,\n\t\t\t\tDocumentName:   \"alpine\",\n\t\t\t\tPackages: []*spdx.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\tPackageName:           \"pkg-1\",\n\t\t\t\t\t\tPackageVersion:        \"version-1\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier:     \"Alpine Linux\",\n\t\t\t\t\t\t\tSupplierType: \"Organization\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"DocumentRoot-Image-alpine\",\n\t\t\t\t\t\tPackageName:           \"alpine\",\n\t\t\t\t\t\tPackageVersion:        \"sha256:d34db33f\",\n\t\t\t\t\t\tPrimaryPackagePurpose: \"CONTAINER\",\n\t\t\t\t\t\tPackageChecksums:      []spdx.Checksum{{Algorithm: \"SHA256\", Value: \"d34db33f\"}},\n\t\t\t\t\t\tPackageExternalReferences: []*v2_3.PackageExternalReference{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t\t\t\tLocator:  \"pkg:oci/alpine@sha256%3Ad34db33f?arch=&tag=latest\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier:     \"Alpine Linux\",\n\t\t\t\t\t\t\tSupplierType: \"Organization\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Image-alpine\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipContains,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DOCUMENT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Image-alpine\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipDescribes,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName: \"some/directory\",\n\t\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\t\tPath: \"some/directory\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &spdx.Document{\n\t\t\t\tSPDXIdentifier: \"DOCUMENT\",\n\t\t\t\tSPDXVersion:    spdx.Version,\n\t\t\t\tDataLicense:    spdx.DataLicense,\n\t\t\t\tDocumentName:   \"some/directory\",\n\n\t\t\t\tPackages: []*spdx.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\tPackageName:           \"pkg-1\",\n\t\t\t\t\t\tPackageVersion:        \"version-1\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"DocumentRoot-Directory-some-directory\",\n\t\t\t\t\t\tPackageName:           \"some/directory\",\n\t\t\t\t\t\tPackageVersion:        \"\",\n\t\t\t\t\t\tPrimaryPackagePurpose: \"FILE\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Directory-some-directory\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipContains,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DOCUMENT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Directory-some-directory\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipDescribes,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName:    \"path/to/some.file\",\n\t\t\t\t\tVersion: \"sha256:d34db33f\",\n\t\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\t\tPath: \"path/to/some.file\",\n\t\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"d34db33f\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &spdx.Document{\n\t\t\t\tSPDXIdentifier: \"DOCUMENT\",\n\t\t\t\tSPDXVersion:    spdx.Version,\n\t\t\t\tDataLicense:    spdx.DataLicense,\n\t\t\t\tDocumentName:   \"path/to/some.file\",\n\t\t\t\tPackages: []*spdx.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\tPackageName:           \"pkg-1\",\n\t\t\t\t\t\tPackageVersion:        \"version-1\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"DocumentRoot-File-path-to-some.file\",\n\t\t\t\t\t\tPackageName:           \"path/to/some.file\",\n\t\t\t\t\t\tPackageVersion:        \"sha256:d34db33f\",\n\t\t\t\t\t\tPrimaryPackagePurpose: \"FILE\",\n\t\t\t\t\t\tPackageChecksums:      []spdx.Checksum{{Algorithm: \"SHA256\", Value: \"d34db33f\"}},\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-File-path-to-some.file\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipContains,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DOCUMENT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-File-path-to-some.file\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipDescribes,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"snap\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName:    \"etcd\",\n\t\t\t\t\tVersion: \"3.4.36\",\n\t\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\t\tSummary:     \"Distributed reliable key-value store\",\n\t\t\t\t\t\tBase:        \"core18\",\n\t\t\t\t\t\tGrade:       \"stable\",\n\t\t\t\t\t\tConfinement: \"strict\",\n\t\t\t\t\t\tArchitectures: []string{\n\t\t\t\t\t\t\t\"amd64\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"d34db33f\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &spdx.Document{\n\t\t\t\tSPDXIdentifier: \"DOCUMENT\",\n\t\t\t\tSPDXVersion:    spdx.Version,\n\t\t\t\tDataLicense:    spdx.DataLicense,\n\t\t\t\tDocumentName:   \"etcd\",\n\t\t\t\tPackages: []*spdx.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\tPackageName:           \"pkg-1\",\n\t\t\t\t\t\tPackageVersion:        \"version-1\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"DocumentRoot-Snap-etcd\",\n\t\t\t\t\t\tPackageName:           \"etcd\",\n\t\t\t\t\t\tPackageVersion:        \"3.4.36\",\n\t\t\t\t\t\tPrimaryPackagePurpose: \"CONTAINER\",\n\t\t\t\t\t\tPackageChecksums:      []spdx.Checksum{{Algorithm: \"SHA256\", Value: \"d34db33f\"}},\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier: \"NOASSERTION\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Snap-etcd\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipContains,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DOCUMENT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-Snap-etcd\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipDescribes,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName:     \"llama\",\n\t\t\t\t\tVersion:  \"sha256:d34db33f\",\n\t\t\t\t\tSupplier: \"Model Provider\",\n\t\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\t\tUserInput:      \"model-repo/llama:latest\",\n\t\t\t\t\t\tManifestDigest: \"sha256:d34db33f\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &spdx.Document{\n\t\t\t\tSPDXIdentifier: \"DOCUMENT\",\n\t\t\t\tSPDXVersion:    spdx.Version,\n\t\t\t\tDataLicense:    spdx.DataLicense,\n\t\t\t\tDocumentName:   \"llama\",\n\t\t\t\tPackages: []*spdx.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\tPackageName:           \"pkg-1\",\n\t\t\t\t\t\tPackageVersion:        \"version-1\",\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier:     \"Model Provider\",\n\t\t\t\t\t\t\tSupplierType: \"Organization\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPackageSPDXIdentifier: \"DocumentRoot-OCIModel-llama\",\n\t\t\t\t\t\tPackageName:           \"llama\",\n\t\t\t\t\t\tPackageVersion:        \"sha256:d34db33f\",\n\t\t\t\t\t\tPrimaryPackagePurpose: \"CONTAINER\",\n\t\t\t\t\t\tPackageChecksums:      []spdx.Checksum{{Algorithm: \"SHA256\", Value: \"d34db33f\"}},\n\t\t\t\t\t\tPackageExternalReferences: []*v2_3.PackageExternalReference{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t\t\t\tLocator:  \"pkg:oci/llama@sha256%3Ad34db33f?arch=&tag=latest\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageSupplier: &spdx.Supplier{\n\t\t\t\t\t\t\tSupplier:     \"Model Provider\",\n\t\t\t\t\t\t\tSupplierType: \"Organization\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-OCIModel-llama\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"Package-pkg-1-pkg-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipContains,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRefA: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DOCUMENT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRefB: spdx.DocElementID{\n\t\t\t\t\t\t\tElementRefID: \"DocumentRoot-OCIModel-llama\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRelationship: spdx.RelationshipDescribes,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ttracker.Tested(t, test.in.Source.Metadata)\n\n\t\t\t// replace IDs with package names\n\t\t\tvar pkgs []pkg.Package\n\t\t\tfor p := range test.in.Artifacts.Packages.Enumerate() {\n\t\t\t\tp.OverrideID(artifact.ID(p.Name))\n\t\t\t\tpkgs = append(pkgs, p)\n\t\t\t}\n\t\t\ttest.in.Artifacts.Packages = pkg.NewCollection(pkgs...)\n\n\t\t\t// convert\n\t\t\tgot := ToFormatModel(test.in)\n\n\t\t\t// check differences\n\t\t\tif diff := cmp.Diff(test.expected, got,\n\t\t\t\tcmpopts.IgnoreUnexported(spdx.Document{}, spdx.Package{}),\n\t\t\t\tcmpopts.IgnoreFields(spdx.Document{}, \"CreationInfo\", \"DocumentNamespace\"),\n\t\t\t\tcmpopts.IgnoreFields(spdx.Package{}, \"PackageDownloadLocation\", \"IsFilesAnalyzedTagPresent\", \"PackageSourceInfo\", \"PackageLicenseConcluded\", \"PackageLicenseDeclared\", \"PackageCopyrightText\"),\n\t\t\t); diff != \"\" {\n\t\t\t\tt.Error(diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_toPackageChecksums(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tpkg           pkg.Package\n\t\texpected      []spdx.Checksum\n\t\tfilesAnalyzed bool\n\t}{\n\t\t{\n\t\t\tname: \"Java Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tArchiveDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha1\", // SPDX expects these to be uppercase\n\t\t\t\t\t\t\tValue:     \"1234\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []spdx.Checksum{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA1\",\n\t\t\t\t\tValue:     \"1234\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tfilesAnalyzed: true,\n\t\t},\n\t\t{\n\t\t\tname: \"Java Package with no archive digests\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tArchiveDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected:      []spdx.Checksum{},\n\t\t\tfilesAnalyzed: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Java Package with no metadata\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t},\n\t\t\texpected:      []spdx.Checksum{},\n\t\t\tfilesAnalyzed: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Go Binary Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tH1Digest: \"h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []spdx.Checksum{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA256\",\n\t\t\t\t\tValue:     \"f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tfilesAnalyzed: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Opam Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tMetadata: pkg.OpamPackage{\n\t\t\t\t\tChecksums: []string{\n\t\t\t\t\t\t\"sha256=f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t\t\t\t\t\"sha512=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []spdx.Checksum{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA256\",\n\t\t\t\t\tValue:     \"f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA512\",\n\t\t\t\t\tValue:     \"05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tfilesAnalyzed: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Package with no metadata type\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: struct{}{},\n\t\t\t},\n\t\t\texpected:      []spdx.Checksum{},\n\t\t\tfilesAnalyzed: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcommonSum, filesAnalyzed := toPackageChecksums(test.pkg)\n\t\t\tassert.ElementsMatch(t, test.expected, commonSum)\n\t\t\tassert.Equal(t, test.filesAnalyzed, filesAnalyzed)\n\t\t})\n\t}\n}\n\nfunc Test_toFiles(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tin   sbom.SBOM\n\t\twant spdx.File\n\t}{\n\t\t{\n\t\t\tname: \"File paths are converted to relative in final SPDX collection\",\n\t\t\tin: sbom.SBOM{\n\t\t\t\tSource: source.Description{\n\t\t\t\t\tName:    \"alpine\",\n\t\t\t\t\tVersion: \"sha256:d34db33f\",\n\t\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\t\tUserInput:      \"alpine:latest\",\n\t\t\t\t\t\tManifestDigest: \"sha256:d34db33f\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"pkg-1\",\n\t\t\t\t\t\tVersion: \"version-1\",\n\t\t\t\t\t}),\n\t\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRealPath:     \"/some/path\",\n\t\t\t\t\t\t\tFileSystemID: \"\",\n\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\tPath: \"/some/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: spdx.File{\n\t\t\t\tFileName: \"some/path\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tfiles := toFiles(test.in)\n\t\tgot := files[0]\n\t\tassert.Equal(t, test.want.FileName, got.FileName)\n\t}\n}\n\nfunc Test_toFileTypes(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata file.Metadata\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"application\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"application/vnd.unknown\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.ApplicationFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"archive\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"application/zip\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.ApplicationFileType),\n\t\t\t\tstring(helpers.ArchiveFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"audio\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"audio/ogg\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.AudioFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"video\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"video/3gpp\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.VideoFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"text\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"text/html\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.TextFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"image/png\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.ImageFileType),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"binary\",\n\t\t\tmetadata: file.Metadata{\n\t\t\t\tMIMEType: \"application/x-sharedlib\",\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\tstring(helpers.ApplicationFileType),\n\t\t\t\tstring(helpers.BinaryFileType),\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, toFileTypes(&test.metadata))\n\t\t})\n\t}\n}\n\nfunc Test_lookupRelationship(t *testing.T) {\n\n\ttests := []struct {\n\t\tinput   artifact.RelationshipType\n\t\texists  bool\n\t\tty      helpers.RelationshipType\n\t\tcomment string\n\t}{\n\t\t{\n\t\t\tinput:  artifact.ContainsRelationship,\n\t\t\texists: true,\n\t\t\tty:     helpers.ContainsRelationship,\n\t\t},\n\t\t{\n\t\t\tinput:   artifact.OwnershipByFileOverlapRelationship,\n\t\t\texists:  true,\n\t\t\tty:      helpers.OtherRelationship,\n\t\t\tcomment: \"ownership-by-file-overlap: indicates that the parent package claims ownership of a child package since the parent metadata indicates overlap with a location that a cataloger found the child package by\",\n\t\t},\n\t\t{\n\t\t\tinput:   artifact.EvidentByRelationship,\n\t\t\texists:  true,\n\t\t\tty:      helpers.OtherRelationship,\n\t\t\tcomment: \"evident-by: indicates the package's existence is evident by the given file\",\n\t\t},\n\t\t{\n\t\t\tinput:  \"made-up\",\n\t\t\texists: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(string(test.input), func(t *testing.T) {\n\t\t\texists, ty, comment := lookupRelationship(test.input)\n\t\t\tassert.Equal(t, exists, test.exists)\n\t\t\tassert.Equal(t, ty, test.ty)\n\t\t\tassert.Equal(t, comment, test.comment)\n\t\t})\n\t}\n}\n\nfunc Test_toFileChecksums(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdigests  []file.Digest\n\t\texpected []spdx.Checksum\n\t}{\n\t\t{\n\t\t\tname: \"empty\",\n\t\t},\n\t\t{\n\t\t\tname: \"has digests\",\n\t\t\tdigests: []file.Digest{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA256\",\n\t\t\t\t\tValue:     \"deadbeefcafe\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"meh\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []spdx.Checksum{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"SHA256\",\n\t\t\t\t\tValue:     \"deadbeefcafe\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"MD5\",\n\t\t\t\t\tValue:     \"meh\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, toFileChecksums(test.digests))\n\t\t})\n\t}\n}\n\nfunc Test_fileIDsForPackage(t *testing.T) {\n\tp := pkg.Package{\n\t\tName: \"bogus\",\n\t}\n\n\tc := file.Coordinates{\n\t\tRealPath:     \"/path\",\n\t\tFileSystemID: \"nowhere\",\n\t}\n\n\tdocElementId := func(identifiable artifact.Identifiable) spdx.DocElementID {\n\t\treturn spdx.DocElementID{\n\t\t\tElementRefID: toSPDXID(identifiable),\n\t\t}\n\t}\n\n\ttests := []struct {\n\t\tname          string\n\t\trelationships []artifact.Relationship\n\t\texpected      []*spdx.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"package-to-file contains relationships\",\n\t\t\trelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: p,\n\t\t\t\t\tTo:   c,\n\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []*spdx.Relationship{\n\t\t\t\t{\n\t\t\t\t\tRelationship: \"CONTAINS\",\n\t\t\t\t\tRefA:         docElementId(p),\n\t\t\t\t\tRefB:         docElementId(c),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package-to-package\",\n\t\t\trelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: p,\n\t\t\t\t\tTo:   p,\n\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []*spdx.Relationship{\n\t\t\t\t{\n\t\t\t\t\tRelationship: \"CONTAINS\",\n\t\t\t\t\tRefA:         docElementId(p),\n\t\t\t\t\tRefB:         docElementId(p),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignore file-to-file\",\n\t\t\trelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: c,\n\t\t\t\t\tTo:   c,\n\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore file-to-package\",\n\t\t\trelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: c,\n\t\t\t\t\tTo:   p,\n\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"include package-to-file overlap relationships\",\n\t\t\trelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: p,\n\t\t\t\t\tTo:   c,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []*spdx.Relationship{\n\t\t\t\t{\n\t\t\t\t\tRelationship:        \"OTHER\",\n\t\t\t\t\tRefA:                docElementId(p),\n\t\t\t\t\tRefB:                docElementId(c),\n\t\t\t\t\tRelationshipComment: \"ownership-by-file-overlap: indicates that the parent package claims ownership of a child package since the parent metadata indicates overlap with a location that a cataloger found the child package by\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\trelationships := toRelationships(test.relationships)\n\t\t\tassert.Equal(t, test.expected, relationships)\n\t\t})\n\t}\n}\n\nfunc Test_H1Digest(t *testing.T) {\n\ts := sbom.SBOM{}\n\ttests := []struct {\n\t\tname           string\n\t\tpkg            pkg.Package\n\t\texpectedDigest string\n\t}{\n\t\t{\n\t\t\tname: \"valid h1digest\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tVersion: \"v0.5.5\",\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tH1Digest: \"h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"SHA256:f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid h1digest\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tVersion: \"v0.5.5\",\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tH1Digest: \"h1:9fHAtK0uzzz\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"unsupported h-digest\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tVersion: \"v0.5.5\",\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tH1Digest: \"h12:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcatalog := pkg.NewCollection(test.pkg)\n\t\t\tpkgs, _ := toPackages(relationship.NewIndex(), catalog, s)\n\t\t\trequire.Len(t, pkgs, 1)\n\t\t\tfor _, p := range pkgs {\n\t\t\t\tif test.expectedDigest == \"\" {\n\t\t\t\t\trequire.Len(t, p.PackageChecksums, 0)\n\t\t\t\t} else {\n\t\t\t\t\trequire.Len(t, p.PackageChecksums, 1)\n\t\t\t\t\tfor _, c := range p.PackageChecksums {\n\t\t\t\t\t\trequire.Equal(t, test.expectedDigest, fmt.Sprintf(\"%s:%s\", c.Algorithm, c.Value))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_OtherLicenses(t *testing.T) {\n\tctx := context.Background()\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []spdx.OtherLicense\n\t}{\n\t\t{\n\t\t\tname: \"no licenseRef\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t},\n\t\t\texpected: []spdx.OtherLicense{},\n\t\t},\n\t\t{\n\t\t\tname: \"single licenseRef\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"foobar\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: []spdx.OtherLicense{\n\t\t\t\t{\n\t\t\t\t\tLicenseIdentifier: \"LicenseRef-foobar\",\n\t\t\t\t\tLicenseName:       \"foobar\",\n\t\t\t\t\tExtractedText:     \"NOASSERTION\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple licenseRef\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"internal made up license name\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"new apple license 2.0\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: []spdx.OtherLicense{\n\t\t\t\t{\n\t\t\t\t\tLicenseIdentifier: \"LicenseRef-internal-made-up-license-name\",\n\t\t\t\t\tExtractedText:     \"NOASSERTION\",\n\t\t\t\t\tLicenseName:       \"internal made up license name\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicenseIdentifier: \"LicenseRef-new-apple-license-2.0\",\n\t\t\t\t\tExtractedText:     \"NOASSERTION\",\n\t\t\t\t\tLicenseName:       \"new apple license 2.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseRef as a valid spdx expression\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"LicenseRef-Fedora-Public-Domain\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: []spdx.OtherLicense{},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseRef as a valid spdx expression does not otherize compound spdx expressions\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"(MIT AND LicenseRef-Fedora-Public-Domain)\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: []spdx.OtherLicense{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcatalog := pkg.NewCollection(test.pkg)\n\t\t\trels := relationship.NewIndex()\n\t\t\t_, otherLicenses := toPackages(rels, catalog, sbom.SBOM{})\n\t\t\trequire.Len(t, otherLicenses, len(test.expected))\n\t\t\trequire.Equal(t, test.expected, otherLicenses)\n\t\t})\n\t}\n}\n\nfunc Test_toSPDXID(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tit       artifact.Identifiable\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"short filename\",\n\t\t\tit: file.Coordinates{\n\t\t\t\tRealPath: \"/short/path/file.txt\",\n\t\t\t},\n\t\t\texpected: \"File-short-path-file.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"long filename\",\n\t\t\tit: file.Coordinates{\n\t\t\t\tRealPath: \"/some/long/path/with/a/lot/of-text/that-contains-a/file.txt\",\n\t\t\t},\n\t\t\texpected: \"File-...a-lot-of-text-that-contains-a-file.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"package\",\n\t\t\tit: pkg.Package{\n\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\tName: \"some-package\",\n\t\t\t},\n\t\t\texpected: \"Package-npm-some-package\",\n\t\t},\n\t\t{\n\t\t\tname: \"package with existing SPDX ID\",\n\t\t\tit: func() pkg.Package {\n\t\t\t\tp := pkg.Package{\n\t\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\t\tName: \"some-package\",\n\t\t\t\t}\n\t\t\t\t// SPDXRef- prefix is removed on decode (when everything is working as it should)\n\t\t\t\tp.OverrideID(\"Package-npm-some-package-extra!\")\n\t\t\t\treturn p\n\t\t\t}(),\n\t\t\t// note: we still sanitize out the \"!\" which is not allowed in SPDX IDs\n\t\t\texpected: \"Package-npm-some-package-extra\",\n\t\t},\n\t\t{\n\t\t\tname: \"package with existing SPDX Ref\",\n\t\t\tit: func() pkg.Package {\n\t\t\t\tp := pkg.Package{\n\t\t\t\t\tType: pkg.NpmPkg,\n\t\t\t\t\tName: \"some-package\",\n\t\t\t\t}\n\t\t\t\t// someone incorrectly added SPDXRef- prefix\n\t\t\t\tp.OverrideID(\"SPDXRef-Package-npm-some-package-extra!\")\n\t\t\t\treturn p\n\t\t\t}(),\n\t\t\t// note: we still sanitize out the \"!\" which is not allowed in SPDX IDs\n\t\t\texpected: \"Package-npm-some-package-extra\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := string(toSPDXID(test.it))\n\t\t\t// trim the hash\n\t\t\tgot = regexp.MustCompile(`-[a-z0-9]*$`).ReplaceAllString(got, \"\")\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_otherLicenses(t *testing.T) {\n\tctx := context.TODO()\n\tpkg1 := pkg.Package{\n\t\tName:    \"first-pkg\",\n\t\tVersion: \"1.1\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t),\n\t}\n\tpkg2 := pkg.Package{\n\t\tName:    \"second-pkg\",\n\t\tVersion: \"2.2\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseWithContext(ctx, \"non spdx license\"),\n\t\t),\n\t}\n\tbigText := `\n                                 Apache License\n                           Version 2.0, January 2004`\n\tpkg3 := pkg.Package{\n\t\tName:    \"third-pkg\",\n\t\tVersion: \"3.3\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseWithContext(ctx, bigText),\n\t\t),\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tpackages []pkg.Package\n\t\texpected []*spdx.OtherLicense\n\t}{\n\t\t{\n\t\t\tname:     \"no other licenses when all valid spdx expressions\",\n\t\t\tpackages: []pkg.Package{pkg1},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"other licenses must include some original text\",\n\t\t\tpackages: []pkg.Package{pkg2},\n\t\t\texpected: []*spdx.OtherLicense{\n\t\t\t\t{\n\t\t\t\t\tLicenseIdentifier: \"LicenseRef-non-spdx-license\",\n\t\t\t\t\tLicenseName:       \"non spdx license\",\n\t\t\t\t\tExtractedText:     \"NOASSERTION\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"big licenses get hashed and space is trimmed\",\n\t\t\tpackages: []pkg.Package{pkg3},\n\t\t\texpected: []*spdx.OtherLicense{\n\t\t\t\t{\n\t\t\t\t\tLicenseIdentifier: \"LicenseRef-3f17782eef51ae86f18fdd6832f5918e2b40f688b52c9adc07ba6ec1024ef408\",\n\t\t\t\t\t// Carries through the syft-json license value when we shasum large texts\n\t\t\t\t\tLicenseName:   \"sha256:3f17782eef51ae86f18fdd6832f5918e2b40f688b52c9adc07ba6ec1024ef408\",\n\t\t\t\t\tExtractedText: strings.TrimSpace(bigText),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ts := sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(test.packages...),\n\t\t\t\t},\n\t\t\t}\n\t\t\tgot := ToFormatModel(s)\n\t\t\trequire.Equal(t, test.expected, got.OtherLicenses)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/common/spdxhelpers/to_syft_model.go",
    "content": "package spdxhelpers\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/spdx/tools-golang/spdx\"\n\t\"github.com/spdx/tools-golang/spdx/v2/common\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil/helpers\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc ToSyftModel(doc *spdx.Document) (*sbom.SBOM, error) {\n\tif doc == nil {\n\t\treturn nil, errors.New(\"cannot convert SPDX document to Syft model because document is nil\")\n\t}\n\n\tspdxIDMap := make(map[string]any)\n\n\ts := &sbom.SBOM{\n\t\tSource: extractSource(spdxIDMap, doc),\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages:          pkg.NewCollection(),\n\t\t\tFileMetadata:      map[file.Coordinates]file.Metadata{},\n\t\t\tFileDigests:       map[file.Coordinates][]file.Digest{},\n\t\t\tLinuxDistribution: findLinuxReleaseByPURL(doc),\n\t\t},\n\t}\n\n\tcollectSyftPackages(s, spdxIDMap, doc)\n\n\tcollectSyftFiles(s, spdxIDMap, doc)\n\n\ts.Relationships = toSyftRelationships(spdxIDMap, doc)\n\n\treturn s, nil\n}\n\nfunc isDirectory(name string) bool {\n\tif name == \".\" || name == \"..\" || strings.HasSuffix(name, \"/\") || !strings.Contains(path.Base(name), \".\") {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc removePackage(packages []*spdx.Package, remove *spdx.Package) (pkgs []*spdx.Package) {\n\tfor _, p := range packages {\n\t\tif p == remove {\n\t\t\tcontinue\n\t\t}\n\t\tpkgs = append(pkgs, p)\n\t}\n\treturn\n}\n\nfunc removeRelationships(relationships []*spdx.Relationship, spdxID spdx.ElementID) (relations []*spdx.Relationship) {\n\tfor _, r := range relationships {\n\t\tif r.RefA.ElementRefID == spdxID || r.RefB.ElementRefID == spdxID {\n\t\t\tcontinue\n\t\t}\n\t\trelations = append(relations, r)\n\t}\n\treturn\n}\n\nfunc findRootPackages(doc *spdx.Document) (out []*spdx.Package) {\n\tfor _, p := range doc.Packages {\n\t\tfor _, r := range doc.Relationships {\n\t\t\tdescribes := r.RefA.ElementRefID == \"DOCUMENT\" &&\n\t\t\t\tr.Relationship == spdx.RelationshipDescribes &&\n\t\t\t\tr.RefB.ElementRefID == p.PackageSPDXIdentifier\n\n\t\t\tdescribedBy := r.RefB.ElementRefID == \"DOCUMENT\" &&\n\t\t\t\tr.Relationship == spdx.RelationshipDescribedBy &&\n\t\t\t\tr.RefA.ElementRefID == p.PackageSPDXIdentifier\n\n\t\t\tif !describes && !describedBy {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tout = append(out, p)\n\t\t}\n\t}\n\treturn\n}\n\nfunc extractSource(spdxIDMap map[string]any, doc *spdx.Document) source.Description {\n\tsrc := extractSourceFromNamespace(doc.DocumentNamespace)\n\n\trootPackages := findRootPackages(doc)\n\n\tif len(rootPackages) != 1 {\n\t\treturn src\n\t}\n\n\tp := rootPackages[0]\n\n\tswitch p.PrimaryPackagePurpose {\n\tcase spdxPrimaryPurposeContainer:\n\t\tsrc = containerSource(p)\n\tcase spdxPrimaryPurposeFile:\n\t\tsrc = fileSource(p)\n\tdefault:\n\t\treturn src\n\t}\n\n\tspdxIDMap[string(p.PackageSPDXIdentifier)] = src\n\n\tdoc.Packages = removePackage(doc.Packages, p)\n\tdoc.Relationships = removeRelationships(doc.Relationships, p.PackageSPDXIdentifier)\n\n\treturn src\n}\n\nfunc containerSource(p *spdx.Package) source.Description {\n\tid := string(p.PackageSPDXIdentifier)\n\n\tcontainer := p.PackageName\n\tv := p.PackageVersion\n\tif v != \"\" {\n\t\tcontainer += \":\" + v\n\t}\n\n\tdigest := \"\"\n\tif len(p.PackageChecksums) > 0 {\n\t\tc := p.PackageChecksums[0]\n\t\tdigest = fmt.Sprintf(\"%s:%s\", fromChecksumAlgorithm(c.Algorithm), c.Value)\n\t}\n\n\tsupplier := \"\"\n\tif p.PackageSupplier != nil {\n\t\t// we also don't want NOASSERTION transferred to the syft format\n\t\t// NOASSERTION == \"\"\n\t\tif p.PackageSupplier.Supplier != helpers.NOASSERTION && p.PackageSupplier.SupplierType == helpers.SUPPLIERORG {\n\t\t\tsupplier = p.PackageSupplier.Supplier\n\t\t}\n\t}\n\n\treturn source.Description{\n\t\tID:       id,\n\t\tName:     p.PackageName,\n\t\tVersion:  p.PackageVersion,\n\t\tSupplier: supplier,\n\t\tMetadata: source.ImageMetadata{\n\t\t\tUserInput:      container,\n\t\t\tID:             id,\n\t\t\tLayers:         nil, // TODO handle formats with nested layer packages like Tern and K8s BOM tool\n\t\t\tManifestDigest: digest,\n\t\t},\n\t}\n}\n\nfunc fileSource(p *spdx.Package) source.Description {\n\ttypeRegex := regexp.MustCompile(\"^DocumentRoot-([^-]+)-.*$\")\n\ttypeName := typeRegex.ReplaceAllString(string(p.PackageSPDXIdentifier), \"$1\")\n\n\tvar version string\n\tvar metadata any\n\tswitch {\n\tcase typeName == prefixDirectory:\n\t\t// is a Syft SBOM, explicitly a directory source\n\t\tmetadata, version = directorySourceMetadata(p)\n\tcase typeName == prefixFile:\n\t\t// is a Syft SBOM, explicitly a file source\n\t\tmetadata, version = fileSourceMetadata(p)\n\tcase isDirectory(p.PackageName):\n\t\t// is a non-Syft SBOM, which looks like a directory\n\t\tmetadata, version = directorySourceMetadata(p)\n\tdefault:\n\t\t// is a non-Syft SBOM, which is probably a file\n\t\tmetadata, version = fileSourceMetadata(p)\n\t}\n\n\tsupplier := \"\"\n\tif p.PackageSupplier.Supplier != helpers.NOASSERTION {\n\t\tsupplier = p.PackageSupplier.Supplier\n\t}\n\n\treturn source.Description{\n\t\tID:       string(p.PackageSPDXIdentifier),\n\t\tName:     p.PackageName,\n\t\tVersion:  version,\n\t\tSupplier: supplier,\n\t\tMetadata: metadata,\n\t}\n}\n\nfunc fileSourceMetadata(p *spdx.Package) (any, string) {\n\tversion := p.PackageVersion\n\n\tm := source.FileMetadata{\n\t\tPath: p.PackageName,\n\t}\n\t// if this is a Syft SBOM, we might have output a digest as the version\n\tchecksum := toChecksum(p.PackageVersion)\n\tfor _, d := range p.PackageChecksums {\n\t\tif checksum != nil && checksum.Value == d.Value {\n\t\t\tversion = \"\"\n\t\t}\n\t\tm.Digests = append(m.Digests, file.Digest{\n\t\t\tAlgorithm: fromChecksumAlgorithm(d.Algorithm),\n\t\t\tValue:     d.Value,\n\t\t})\n\t}\n\n\treturn m, version\n}\n\nfunc directorySourceMetadata(p *spdx.Package) (any, string) {\n\treturn source.DirectoryMetadata{\n\t\tPath: p.PackageName,\n\t\tBase: \"\",\n\t}, p.PackageVersion\n}\n\n// NOTE(jonas): SPDX doesn't inform what an SBOM is about,\n// image, directory, for example. This is our best effort to determine\n// the scheme. Syft-generated SBOMs have in the namespace\n// field a type encoded, which we try to identify here.\nfunc extractSourceFromNamespace(ns string) source.Description {\n\tu, err := url.Parse(ns)\n\tif err != nil {\n\t\treturn source.Description{\n\t\t\tMetadata: nil,\n\t\t}\n\t}\n\n\tparts := strings.Split(u.Path, \"/\")\n\tfor _, p := range parts {\n\t\tswitch p {\n\t\tcase helpers.InputFile:\n\t\t\treturn source.Description{\n\t\t\t\tMetadata: source.FileMetadata{},\n\t\t\t}\n\t\tcase helpers.InputImage:\n\t\t\treturn source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{},\n\t\t\t}\n\t\tcase helpers.InputDirectory:\n\t\t\treturn source.Description{\n\t\t\t\tMetadata: source.DirectoryMetadata{},\n\t\t\t}\n\t\t}\n\t}\n\treturn source.Description{}\n}\n\nfunc findLinuxReleaseByPURL(doc *spdx.Document) *linux.Release {\n\tfor _, p := range doc.Packages {\n\t\tpurlValue := findPURLValue(p)\n\t\tif purlValue == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tpurl, err := packageurl.FromString(purlValue)\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"unable to parse purl: %s\", purlValue)\n\t\t\tcontinue\n\t\t}\n\t\tdistro := findQualifierValue(purl, pkg.PURLQualifierDistro)\n\t\tif distro != \"\" {\n\t\t\tparts := strings.Split(distro, \"-\")\n\t\t\tname := parts[0]\n\t\t\tversion := \"\"\n\t\t\tif len(parts) > 1 {\n\t\t\t\tversion = parts[1]\n\t\t\t}\n\t\t\treturn &linux.Release{\n\t\t\t\tPrettyName: name,\n\t\t\t\tName:       name,\n\t\t\t\tID:         name,\n\t\t\t\tIDLike:     []string{name},\n\t\t\t\tVersion:    version,\n\t\t\t\tVersionID:  version,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc collectSyftPackages(s *sbom.SBOM, spdxIDMap map[string]any, doc *spdx.Document) {\n\tskipIDs := packageIDsToSkip(doc)\n\tfor _, p := range doc.Packages {\n\t\tif p == nil || skipIDs.Has(string(p.PackageSPDXIdentifier)) {\n\t\t\tcontinue\n\t\t}\n\t\tsyftPkg := toSyftPackage(p)\n\t\tspdxIDMap[string(p.PackageSPDXIdentifier)] = syftPkg\n\t\ts.Artifacts.Packages.Add(syftPkg)\n\t}\n}\n\nfunc collectSyftFiles(s *sbom.SBOM, spdxIDMap map[string]any, doc *spdx.Document) {\n\tfor _, p := range doc.Packages {\n\t\tfor _, f := range p.Files {\n\t\t\tl := toSyftLocation(f)\n\t\t\tspdxIDMap[string(f.FileSPDXIdentifier)] = l\n\n\t\t\ts.Artifacts.FileMetadata[l.Coordinates] = toFileMetadata(f)\n\t\t\ts.Artifacts.FileDigests[l.Coordinates] = toFileDigests(f)\n\t\t}\n\t}\n\n\tfor _, f := range doc.Files {\n\t\tl := toSyftLocation(f)\n\t\tspdxIDMap[string(f.FileSPDXIdentifier)] = l\n\n\t\ts.Artifacts.FileMetadata[l.Coordinates] = toFileMetadata(f)\n\t\ts.Artifacts.FileDigests[l.Coordinates] = toFileDigests(f)\n\t}\n}\n\nfunc toFileDigests(f *spdx.File) (digests []file.Digest) {\n\tfor _, digest := range f.Checksums {\n\t\tdigests = append(digests, file.Digest{\n\t\t\tAlgorithm: fromChecksumAlgorithm(digest.Algorithm),\n\t\t\tValue:     digest.Value,\n\t\t})\n\t}\n\treturn digests\n}\n\nfunc fromChecksumAlgorithm(algorithm common.ChecksumAlgorithm) string {\n\treturn strings.ToLower(string(algorithm))\n}\n\nfunc toFileMetadata(f *spdx.File) (meta file.Metadata) {\n\t// FIXME Syft is currently lossy due to the SPDX 2.2.1 spec not supporting arbitrary mimetypes\n\tfor _, typ := range f.FileTypes {\n\t\tswitch helpers.FileType(typ) {\n\t\tcase helpers.ImageFileType:\n\t\t\tmeta.MIMEType = \"image/\"\n\t\tcase helpers.VideoFileType:\n\t\t\tmeta.MIMEType = \"video/\"\n\t\tcase helpers.ApplicationFileType:\n\t\t\tmeta.MIMEType = \"application/\"\n\t\tcase helpers.TextFileType:\n\t\t\tmeta.MIMEType = \"text/\"\n\t\tcase helpers.AudioFileType:\n\t\t\tmeta.MIMEType = \"audio/\"\n\t\tcase helpers.BinaryFileType:\n\t\tcase helpers.ArchiveFileType:\n\t\tcase helpers.OtherFileType:\n\t\t}\n\t}\n\treturn meta\n}\n\nfunc toSyftRelationships(spdxIDMap map[string]any, doc *spdx.Document) []artifact.Relationship {\n\tout := collectDocRelationships(spdxIDMap, doc)\n\n\tout = append(out, collectPackageFileRelationships(spdxIDMap, doc)...)\n\n\treturn out\n}\n\nfunc collectDocRelationships(spdxIDMap map[string]any, doc *spdx.Document) (out []artifact.Relationship) {\n\tfor _, r := range doc.Relationships {\n\t\t// FIXME what to do with r.RefA.DocumentRefID and r.RefA.SpecialID\n\t\tif r.RefA.DocumentRefID != \"\" && requireAndTrimPrefix(r.RefA.DocumentRefID, \"DocumentRef-\") != string(doc.SPDXIdentifier) {\n\t\t\tlog.Debugf(\"ignoring relationship to external document: %+v\", r)\n\t\t\tcontinue\n\t\t}\n\t\ta := spdxIDMap[string(r.RefA.ElementRefID)]\n\t\tb := spdxIDMap[string(r.RefB.ElementRefID)]\n\t\tfrom, fromOk := a.(pkg.Package)\n\t\ttoPackage, toPackageOk := b.(pkg.Package)\n\t\ttoLocation, toLocationOk := b.(file.Location)\n\t\t//nolint:staticcheck\n\t\tif !fromOk || !(toPackageOk || toLocationOk) {\n\t\t\tlog.Debugf(\"unable to find valid relationship mapping from SPDX, ignoring: (from: %+v) (to: %+v)\", a, b)\n\t\t\tcontinue\n\t\t}\n\t\tvar to artifact.Identifiable\n\t\tvar typ artifact.RelationshipType\n\t\tif toLocationOk {\n\t\t\tswitch helpers.RelationshipType(r.Relationship) {\n\t\t\tcase helpers.ContainsRelationship:\n\t\t\t\ttyp = artifact.ContainsRelationship\n\t\t\t\tto = toLocation\n\t\t\tcase helpers.OtherRelationship:\n\t\t\t\t// Encoding uses a specifically formatted comment...\n\t\t\t\tif strings.Index(r.RelationshipComment, string(artifact.EvidentByRelationship)) == 0 {\n\t\t\t\t\ttyp = artifact.EvidentByRelationship\n\t\t\t\t\tto = toLocation\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tswitch helpers.RelationshipType(r.Relationship) {\n\t\t\tcase helpers.DependencyOfRelationship:\n\t\t\t\ttyp = artifact.DependencyOfRelationship\n\t\t\t\tto = toPackage\n\t\t\tcase helpers.DependsOnRelationship:\n\t\t\t\ttyp = artifact.DependencyOfRelationship\n\t\t\t\tto = from\n\t\t\t\tfrom = toPackage\n\t\t\tcase helpers.ContainsRelationship:\n\t\t\t\ttyp = artifact.ContainsRelationship\n\t\t\t\tto = toPackage\n\t\t\tcase helpers.OtherRelationship:\n\t\t\t\t// Encoding uses a specifically formatted comment...\n\t\t\t\tif strings.Index(r.RelationshipComment, string(artifact.OwnershipByFileOverlapRelationship)) == 0 {\n\t\t\t\t\ttyp = artifact.OwnershipByFileOverlapRelationship\n\t\t\t\t\tto = toPackage\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif typ != \"\" && to != nil {\n\t\t\tout = append(out, artifact.Relationship{\n\t\t\t\tFrom: from,\n\t\t\t\tTo:   to,\n\t\t\t\tType: typ,\n\t\t\t})\n\t\t}\n\t}\n\treturn out\n}\n\n// collectPackageFileRelationships add relationships for direct files\nfunc collectPackageFileRelationships(spdxIDMap map[string]any, doc *spdx.Document) (out []artifact.Relationship) {\n\tfor _, p := range doc.Packages {\n\t\ta := spdxIDMap[string(p.PackageSPDXIdentifier)]\n\t\tfrom, fromOk := a.(pkg.Package)\n\t\tif !fromOk {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, f := range p.Files {\n\t\t\tb := spdxIDMap[string(f.FileSPDXIdentifier)]\n\t\t\tto, toLocationOk := b.(file.Location)\n\t\t\tif !toLocationOk {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tout = append(out, artifact.Relationship{\n\t\t\t\tFrom: from,\n\t\t\t\tTo:   to,\n\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t})\n\t\t}\n\t}\n\treturn out\n}\n\nfunc toSyftCoordinates(f *spdx.File) file.Coordinates {\n\tconst layerIDPrefix = \"layerID: \"\n\tvar fileSystemID string\n\tif strings.Index(f.FileComment, layerIDPrefix) == 0 {\n\t\tfileSystemID = strings.TrimPrefix(f.FileComment, layerIDPrefix)\n\t}\n\tif strings.Index(string(f.FileSPDXIdentifier), layerIDPrefix) == 0 {\n\t\tfileSystemID = strings.TrimPrefix(string(f.FileSPDXIdentifier), layerIDPrefix)\n\t}\n\treturn file.Coordinates{\n\t\tRealPath:     f.FileName,\n\t\tFileSystemID: fileSystemID,\n\t}\n}\n\nfunc toSyftLocation(f *spdx.File) file.Location {\n\tl := file.NewVirtualLocationFromCoordinates(toSyftCoordinates(f), f.FileName)\n\treturn l\n}\n\nfunc requireAndTrimPrefix(val interface{}, prefix string) string {\n\tif v, ok := val.(string); ok {\n\t\tif i := strings.Index(v, prefix); i == 0 {\n\t\t\treturn strings.Replace(v, prefix, \"\", 1)\n\t\t}\n\t}\n\treturn \"\"\n}\n\ntype pkgInfo struct {\n\tpurl packageurl.PackageURL\n\ttyp  pkg.Type\n\tlang pkg.Language\n}\n\nfunc (p *pkgInfo) qualifierValue(name string) string {\n\treturn findQualifierValue(p.purl, name)\n}\n\nfunc findQualifierValue(purl packageurl.PackageURL, qualifier string) string {\n\tfor _, q := range purl.Qualifiers {\n\t\tif q.Key == qualifier {\n\t\t\treturn q.Value\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc extractPkgInfo(p *spdx.Package) pkgInfo {\n\tpu := findPURLValue(p)\n\tpurl, err := packageurl.FromString(pu)\n\tif err != nil {\n\t\treturn pkgInfo{}\n\t}\n\treturn pkgInfo{\n\t\tpurl,\n\t\tpkg.TypeByName(purl.Type),\n\t\tpkg.LanguageByName(purl.Type),\n\t}\n}\n\nfunc toSyftPackage(p *spdx.Package) pkg.Package {\n\tinfo := extractPkgInfo(p)\n\tsP := &pkg.Package{\n\t\tType:     info.typ,\n\t\tName:     p.PackageName,\n\t\tVersion:  p.PackageVersion,\n\t\tLicenses: pkg.NewLicenseSet(parseSPDXLicenses(p)...),\n\t\tCPEs:     extractCPEs(p),\n\t\tPURL:     purlValue(info.purl),\n\t\tLanguage: info.lang,\n\t\tMetadata: extractMetadata(p, info),\n\t}\n\n\tinternal.Backfill(sP)\n\n\tif p.PackageSPDXIdentifier != \"\" {\n\t\t// always prefer the IDs from the SBOM over derived IDs\n\t\tsP.OverrideID(artifact.ID(p.PackageSPDXIdentifier))\n\t} else {\n\t\tsP.SetID()\n\t}\n\n\treturn *sP\n}\n\nfunc purlValue(purl packageurl.PackageURL) string {\n\tval := purl.String()\n\tif _, err := packageurl.FromString(val); err != nil {\n\t\treturn \"\"\n\t}\n\treturn val\n}\n\nfunc parseSPDXLicenses(p *spdx.Package) []pkg.License {\n\tlicenses := make([]pkg.License, 0)\n\n\t// concluded\n\tif p.PackageLicenseConcluded != helpers.NOASSERTION && p.PackageLicenseConcluded != helpers.NONE && p.PackageLicenseConcluded != \"\" {\n\t\tl := pkg.NewLicenseWithContext(context.TODO(), cleanSPDXID(p.PackageLicenseConcluded))\n\t\tl.Type = license.Concluded\n\t\tlicenses = append(licenses, l)\n\t}\n\n\t// declared\n\tif p.PackageLicenseDeclared != helpers.NOASSERTION && p.PackageLicenseDeclared != helpers.NONE && p.PackageLicenseDeclared != \"\" {\n\t\tl := pkg.NewLicenseWithContext(context.TODO(), cleanSPDXID(p.PackageLicenseDeclared))\n\t\tl.Type = license.Declared\n\t\tlicenses = append(licenses, l)\n\t}\n\n\treturn licenses\n}\n\nfunc cleanSPDXID(id string) string {\n\treturn strings.TrimPrefix(id, spdxlicense.LicenseRefPrefix)\n}\n\n//nolint:funlen\nfunc extractMetadata(p *spdx.Package, info pkgInfo) any {\n\tarch := info.qualifierValue(pkg.PURLQualifierArch)\n\tupstreamValue := info.qualifierValue(pkg.PURLQualifierUpstream)\n\tupstream := strings.SplitN(upstreamValue, \"@\", 2)\n\tupstreamName := upstream[0]\n\tupstreamVersion := \"\"\n\tif len(upstream) > 1 {\n\t\tupstreamVersion = upstream[1]\n\t}\n\tsupplier := \"\"\n\tif p.PackageSupplier != nil {\n\t\tsupplier = p.PackageSupplier.Supplier\n\t}\n\toriginator := \"\"\n\tif p.PackageOriginator != nil {\n\t\toriginator = p.PackageOriginator.Originator\n\t}\n\tswitch info.typ {\n\tcase pkg.ApkPkg:\n\t\treturn pkg.ApkDBEntry{\n\t\t\tPackage:       p.PackageName,\n\t\t\tOriginPackage: upstreamName,\n\t\t\tMaintainer:    supplier,\n\t\t\tVersion:       p.PackageVersion,\n\t\t\tArchitecture:  arch,\n\t\t\tURL:           p.PackageHomePage,\n\t\t\tDescription:   p.PackageDescription,\n\t\t}\n\tcase pkg.RpmPkg:\n\t\tconverted, err := strconv.Atoi(info.qualifierValue(pkg.PURLQualifierEpoch))\n\t\tvar epoch *int\n\t\tif err != nil {\n\t\t\tepoch = nil\n\t\t} else {\n\t\t\tepoch = &converted\n\t\t}\n\t\treturn pkg.RpmDBEntry{\n\t\t\tName:      p.PackageName,\n\t\t\tVersion:   p.PackageVersion,\n\t\t\tEpoch:     epoch,\n\t\t\tArch:      arch,\n\t\t\tSourceRpm: upstreamValue,\n\t\t\tVendor:    originator,\n\t\t}\n\tcase pkg.DebPkg:\n\t\treturn pkg.DpkgDBEntry{\n\t\t\tPackage:       p.PackageName,\n\t\t\tSource:        upstreamName,\n\t\t\tVersion:       p.PackageVersion,\n\t\t\tSourceVersion: upstreamVersion,\n\t\t\tArchitecture:  arch,\n\t\t\tMaintainer:    originator,\n\t\t}\n\tcase pkg.JavaPkg:\n\t\tvar digests []file.Digest\n\t\tfor _, value := range p.PackageChecksums {\n\t\t\tdigests = append(digests, file.Digest{Algorithm: fromChecksumAlgorithm(value.Algorithm), Value: value.Value})\n\t\t}\n\t\treturn pkg.JavaArchive{\n\t\t\tArchiveDigests: digests,\n\t\t}\n\tcase pkg.GoModulePkg:\n\t\tvar h1Digest string\n\t\tfor _, value := range p.PackageChecksums {\n\t\t\tdigest, err := helpers.HDigestFromSHA(fromChecksumAlgorithm(value.Algorithm), value.Value)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"invalid h1digest: %v %v\", value, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\th1Digest = digest\n\t\t\tbreak\n\t\t}\n\t\treturn pkg.GolangBinaryBuildinfoEntry{\n\t\t\tH1Digest: h1Digest,\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc findPURLValue(p *spdx.Package) string {\n\tfor _, r := range p.PackageExternalReferences {\n\t\tif r.RefType == string(helpers.PurlExternalRefType) {\n\t\t\treturn r.Locator\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc extractCPEs(p *spdx.Package) (cpes []cpe.CPE) {\n\tfor _, r := range p.PackageExternalReferences {\n\t\tif r.RefType == string(helpers.Cpe23ExternalRefType) {\n\t\t\tc, err := cpe.New(r.Locator, cpe.DeclaredSource)\n\t\t\tif err != nil {\n\t\t\t\tlog.Warnf(\"unable to extract SPDX CPE=%q: %+v\", r.Locator, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcpes = append(cpes, c)\n\t\t}\n\t}\n\treturn cpes\n}\n\n// packageIDsToSkip returns a set of packageIDs that should not be imported\nfunc packageIDsToSkip(doc *spdx.Document) *strset.Set {\n\tskipIDs := strset.New()\n\tfor i := 0; i < len(doc.Relationships); i++ {\n\t\tr := doc.Relationships[i]\n\t\tif r != nil && r.Relationship == spdx.RelationshipGeneratedFrom {\n\t\t\tskipIDs.Add(string(r.RefB.ElementRefID))\n\t\t}\n\t}\n\treturn skipIDs\n}\n"
  },
  {
    "path": "syft/format/common/spdxhelpers/to_syft_model_test.go",
    "content": "package spdxhelpers\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/spdx/tools-golang/spdx\"\n\t\"github.com/spdx/tools-golang/spdx/v2/common\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestToSyftModel(t *testing.T) {\n\tsbom, err := ToSyftModel(&spdx.Document{\n\t\tSPDXVersion:                \"1\",\n\t\tDataLicense:                \"GPL\",\n\t\tSPDXIdentifier:             \"id-doc-1\",\n\t\tDocumentName:               \"docName\",\n\t\tDocumentNamespace:          \"docNamespace\",\n\t\tExternalDocumentReferences: nil,\n\t\tDocumentComment:            \"\",\n\t\tCreationInfo: &spdx.CreationInfo{\n\t\t\tLicenseListVersion: \"\",\n\t\t\tCreated:            \"\",\n\t\t\tCreatorComment:     \"\",\n\t\t},\n\t\tPackages: []*spdx.Package{\n\t\t\t{\n\t\t\t\tPackageName:            \"pkg-1\",\n\t\t\t\tPackageSPDXIdentifier:  \"id-pkg-1\",\n\t\t\t\tPackageVersion:         \"5.4.3\",\n\t\t\t\tPackageLicenseDeclared: \"\",\n\t\t\t\tPackageDescription:     \"\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"SECURITY\",\n\t\t\t\t\t\tLocator:  \"cpe:2.3:a:pkg-1:pkg-1:5.4.3:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tRefType:  \"cpe23Type\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"SECURITY\",\n\t\t\t\t\t\tLocator:  \"cpe:2.3:a:pkg_1:pkg_1:5.4.3:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tRefType:  \"cpe23Type\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:apk/alpine/pkg-1@5.4.3?arch=x86_64&upstream=p1-origin&distro=alpine-3.10.9\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFiles: nil,\n\t\t\t},\n\t\t\t{\n\t\t\t\tPackageName:            \"pkg-2\",\n\t\t\t\tPackageSPDXIdentifier:  \"id-pkg-2\",\n\t\t\t\tPackageVersion:         \"7.3.1\",\n\t\t\t\tPackageLicenseDeclared: \"\",\n\t\t\t\tPackageDescription:     \"\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"SECURITY\",\n\t\t\t\t\t\tLocator:  \"cpe:2.3:a:pkg-2:pkg-2:7.3.1:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tRefType:  \"cpe23Type\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"SECURITY\",\n\t\t\t\t\t\tLocator:  \"cpe:2.3:a:pkg_2:pkg_2:7.3.1:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tRefType:  \"cpe23Type\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"SECURITY\",\n\t\t\t\t\t\tLocator:  \"cpe:2.3:a:pkg-2:pkg_2:7.3.1:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tRefType:  \"cpe23Type\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:deb/pkg-2@7.3.1?arch=x86_64&upstream=p2-origin@9.1.3&distro=debian-3.10.9\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFiles: nil,\n\t\t\t},\n\t\t},\n\t\tRelationships: []*spdx.Relationship{},\n\t})\n\n\tassert.NoError(t, err)\n\n\tassert.NotNil(t, sbom)\n\n\tpkgs := sbom.Artifacts.Packages.Sorted()\n\n\tassert.Len(t, pkgs, 2)\n\n\tp1 := pkgs[0]\n\tassert.Equal(t, p1.Name, \"pkg-1\")\n\tp1meta := p1.Metadata.(pkg.ApkDBEntry)\n\tassert.Equal(t, p1meta.OriginPackage, \"p1-origin\")\n\tassert.Len(t, p1.CPEs, 2)\n\n\tp2 := pkgs[1]\n\tassert.Equal(t, p2.Name, \"pkg-2\")\n\tp2meta := p2.Metadata.(pkg.DpkgDBEntry)\n\tassert.Equal(t, p2meta.Source, \"p2-origin\")\n\tassert.Equal(t, p2meta.SourceVersion, \"9.1.3\")\n\tassert.Len(t, p2.CPEs, 3)\n}\n\nfunc Test_extractMetadata(t *testing.T) {\n\toneTwoThreeFour := 1234\n\ttests := []struct {\n\t\tpkg  spdx.Package\n\t\tmeta interface{}\n\t}{\n\t\t{\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"SomeDebPkg\",\n\t\t\t\tPackageVersion: \"43.1.235\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:deb/pkg-2@7.3.1?arch=x86_64&upstream=somedebpkg-origin@9.1.3&distro=debian-3.10.9\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmeta: pkg.DpkgDBEntry{\n\t\t\t\tPackage:       \"SomeDebPkg\",\n\t\t\t\tSource:        \"somedebpkg-origin\",\n\t\t\t\tVersion:       \"43.1.235\",\n\t\t\t\tSourceVersion: \"9.1.3\",\n\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"SomeApkPkg\",\n\t\t\t\tPackageVersion: \"3.2.9\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:apk/alpine/pkg-2@7.3.1?arch=x86_64&upstream=apk-origin@9.1.3&distro=alpine-3.10.9\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmeta: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"SomeApkPkg\",\n\t\t\t\tOriginPackage: \"apk-origin\",\n\t\t\t\tVersion:       \"3.2.9\",\n\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"SomeRpmPkg\",\n\t\t\t\tPackageVersion: \"13.2.79\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:rpm/pkg-2@7.3.1?arch=x86_64&epoch=1234&upstream=some-rpm-origin-1.16.3&distro=alpine-3.10.9\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmeta: pkg.RpmDBEntry{\n\t\t\t\tName:      \"SomeRpmPkg\",\n\t\t\t\tVersion:   \"13.2.79\",\n\t\t\t\tEpoch:     &oneTwoThreeFour,\n\t\t\t\tArch:      \"x86_64\",\n\t\t\t\tRelease:   \"\",\n\t\t\t\tSourceRpm: \"some-rpm-origin-1.16.3\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.pkg.PackageName, func(t *testing.T) {\n\t\t\tinfo := extractPkgInfo(&test.pkg)\n\t\t\tmeta := extractMetadata(&test.pkg, info)\n\t\t\tassert.EqualValues(t, test.meta, meta)\n\t\t})\n\t}\n}\n\nfunc TestExtractSourceFromNamespaces(t *testing.T) {\n\ttests := []struct {\n\t\tnamespace string\n\t\texpected  any\n\t}{\n\t\t{\n\t\t\tnamespace: \"https://anchore.com/syft/file/d42b01d0-7325-409b-b03f-74082935c4d3\",\n\t\t\texpected:  source.FileMetadata{},\n\t\t},\n\t\t{\n\t\t\tnamespace: \"https://anchore.com/syft/image/d42b01d0-7325-409b-b03f-74082935c4d3\",\n\t\t\texpected:  source.ImageMetadata{},\n\t\t},\n\t\t{\n\t\t\tnamespace: \"https://anchore.com/syft/dir/d42b01d0-7325-409b-b03f-74082935c4d3\",\n\t\t\texpected:  source.DirectoryMetadata{},\n\t\t},\n\t\t{\n\t\t\tnamespace: \"https://another-host/blob/123\",\n\t\t\texpected:  nil,\n\t\t},\n\t\t{\n\t\t\tnamespace: \"bla bla\",\n\t\t\texpected:  nil,\n\t\t},\n\t\t{\n\t\t\tnamespace: \"\",\n\t\t\texpected:  nil,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tdesc := extractSourceFromNamespace(tt.namespace)\n\t\tif tt.expected == nil && desc.Metadata == nil {\n\t\t\treturn\n\t\t}\n\t\tif tt.expected != nil && desc.Metadata == nil {\n\t\t\tt.Fatal(\"expected metadata but got nil\")\n\t\t}\n\t\tif tt.expected == nil && desc.Metadata != nil {\n\t\t\tt.Fatal(\"expected nil metadata but got something\")\n\t\t}\n\t\trequire.Equal(t, reflect.TypeOf(tt.expected), reflect.TypeOf(desc.Metadata))\n\t}\n}\n\nfunc TestH1Digest(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tpkg            spdx.Package\n\t\texpectedDigest string\n\t}{\n\t\t{\n\t\t\tname: \"valid h1digest\",\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tPackageVersion: \"v0.5.5\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:golang/github.com/googleapis/gnostic@v0.5.5\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPackageChecksums: []spdx.Checksum{\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: spdx.SHA256,\n\t\t\t\t\t\tValue:     \"f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid h1digest algorithm\",\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tPackageVersion: \"v0.5.5\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:golang/github.com/googleapis/gnostic@v0.5.5\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPackageChecksums: []spdx.Checksum{\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: spdx.SHA1,\n\t\t\t\t\t\tValue:     \"f5f1c0b4ad2e0dfa6f79eaaaa3586411925c16f61702208ddd4bad2fc17dc47c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid h1digest digest\",\n\t\t\tpkg: spdx.Package{\n\t\t\t\tPackageName:    \"github.com/googleapis/gnostic\",\n\t\t\t\tPackageVersion: \"v0.5.5\",\n\t\t\t\tPackageExternalReferences: []*spdx.PackageExternalReference{\n\t\t\t\t\t{\n\t\t\t\t\t\tCategory: \"PACKAGE-MANAGER\",\n\t\t\t\t\t\tLocator:  \"pkg:golang/github.com/googleapis/gnostic@v0.5.5\",\n\t\t\t\t\t\tRefType:  \"purl\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPackageChecksums: []spdx.Checksum{\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: spdx.SHA256,\n\t\t\t\t\t\tValue:     \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedDigest: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tp := toSyftPackage(&test.pkg)\n\t\t\tmeta := p.Metadata.(pkg.GolangBinaryBuildinfoEntry)\n\t\t\trequire.Equal(t, test.expectedDigest, meta.H1Digest)\n\t\t})\n\t}\n}\n\nfunc Test_toSyftRelationships(t *testing.T) {\n\ttype args struct {\n\t\tspdxIDMap map[string]any\n\t\tdoc       *spdx.Document\n\t}\n\n\tpkg1 := pkg.Package{\n\t\tName:    \"github.com/googleapis/gnostic\",\n\t\tVersion: \"v0.5.5\",\n\t}\n\tpkg1.SetID()\n\n\tpkg2 := pkg.Package{\n\t\tName:    \"rfc3339\",\n\t\tVersion: \"1.2\",\n\t\tType:    pkg.RpmPkg,\n\t}\n\tpkg2.SetID()\n\n\tpkg3 := pkg.Package{\n\t\tName:    \"rfc3339\",\n\t\tVersion: \"1.2\",\n\t\tType:    pkg.PythonPkg,\n\t}\n\tpkg3.SetID()\n\n\tloc1 := file.NewLocationFromCoordinates(file.Coordinates{\n\t\tRealPath:     \"/somewhere/real\",\n\t\tFileSystemID: \"abc\",\n\t})\n\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"evident-by relationship\",\n\t\t\targs: args{\n\t\t\t\tspdxIDMap: map[string]any{\n\t\t\t\t\tstring(toSPDXID(pkg1)): pkg1,\n\t\t\t\t\tstring(toSPDXID(loc1)): loc1,\n\t\t\t\t},\n\t\t\t\tdoc: &spdx.Document{\n\t\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRefA: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRefB: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(loc1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRelationship:        spdx.RelationshipOther,\n\t\t\t\t\t\t\tRelationshipComment: \"evident-by: indicates the package's existence is evident by the given file\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: pkg1,\n\t\t\t\t\tTo:   loc1,\n\t\t\t\t\tType: artifact.EvidentByRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ownership-by-file-overlap relationship\",\n\t\t\targs: args{\n\t\t\t\tspdxIDMap: map[string]any{\n\t\t\t\t\tstring(toSPDXID(pkg2)): pkg2,\n\t\t\t\t\tstring(toSPDXID(pkg3)): pkg3,\n\t\t\t\t},\n\t\t\t\tdoc: &spdx.Document{\n\t\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRefA: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRefB: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRelationship:        spdx.RelationshipOther,\n\t\t\t\t\t\t\tRelationshipComment: \"ownership-by-file-overlap: indicates that the parent package claims ownership of a child package since the parent metadata indicates overlap with a location that a cataloger found the child package by\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: pkg2,\n\t\t\t\t\tTo:   pkg3,\n\t\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dependency-of relationship\",\n\t\t\targs: args{\n\t\t\t\tspdxIDMap: map[string]any{\n\t\t\t\t\tstring(toSPDXID(pkg2)): pkg2,\n\t\t\t\t\tstring(toSPDXID(pkg3)): pkg3,\n\t\t\t\t},\n\t\t\t\tdoc: &spdx.Document{\n\t\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRefA: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRefB: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRelationship:        spdx.RelationshipDependencyOf,\n\t\t\t\t\t\t\tRelationshipComment: \"dependency-of: indicates that the package in RefA is a dependency of the package in RefB\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: pkg2,\n\t\t\t\t\tTo:   pkg3,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dependends-on relationship\",\n\t\t\targs: args{\n\t\t\t\tspdxIDMap: map[string]any{\n\t\t\t\t\tstring(toSPDXID(pkg2)): pkg2,\n\t\t\t\t\tstring(toSPDXID(pkg3)): pkg3,\n\t\t\t\t},\n\t\t\t\tdoc: &spdx.Document{\n\t\t\t\t\tRelationships: []*spdx.Relationship{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRefA: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRefB: common.DocElementID{\n\t\t\t\t\t\t\t\tElementRefID: toSPDXID(pkg2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRelationship:        spdx.RelationshipDependsOn,\n\t\t\t\t\t\t\tRelationshipComment: \"dependends-on: indicates that the package in RefA depends on the package in RefB\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: pkg2,\n\t\t\t\t\tTo:   pkg3,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := toSyftRelationships(tt.args.spdxIDMap, tt.args.doc)\n\t\t\trequire.Len(t, actual, len(tt.want))\n\t\t\tfor i := range actual {\n\t\t\t\trequire.Equal(t, tt.want[i].From.ID(), actual[i].From.ID())\n\t\t\t\trequire.Equal(t, tt.want[i].To.ID(), actual[i].To.ID())\n\t\t\t\trequire.Equal(t, tt.want[i].Type, actual[i].Type)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_convertToAndFromFormat(t *testing.T) {\n\tpackages := []pkg.Package{\n\t\t{\n\t\t\tName: \"pkg1\",\n\t\t},\n\t\t{\n\t\t\tName: \"pkg2\",\n\t\t},\n\t}\n\n\tfor i := range packages {\n\t\t(&packages[i]).SetID()\n\t}\n\n\trelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: packages[0],\n\t\t\tTo:   packages[1],\n\t\t\tType: artifact.ContainsRelationship,\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname          string\n\t\tsource        source.Description\n\t\tpackages      []pkg.Package\n\t\trelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"image source\",\n\t\t\tsource: source.Description{\n\t\t\t\tID: \"DocumentRoot-Image-some-image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tID:             \"DocumentRoot-Image-some-image\",\n\t\t\t\t\tUserInput:      \"some-image:some-tag\",\n\t\t\t\t\tManifestDigest: \"sha256:ab8b83234bc28f28d8e\",\n\t\t\t\t},\n\t\t\t\tName:     \"some-image\",\n\t\t\t\tVersion:  \"some-tag\",\n\t\t\t\tSupplier: \"some-supplier\",\n\t\t\t},\n\t\t\tpackages:      packages,\n\t\t\trelationships: relationships,\n\t\t},\n\t\t{\n\t\t\tname: \". directory source with supplier\",\n\t\t\tsource: source.Description{\n\t\t\t\tID:       \"DocumentRoot-Directory-.\",\n\t\t\t\tName:     \".\",\n\t\t\t\tSupplier: \"some-supplier\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \".\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tpackages:      packages,\n\t\t\trelationships: relationships,\n\t\t},\n\t\t{\n\t\t\tname: \"directory source without supplier\",\n\t\t\tsource: source.Description{\n\t\t\t\tID:   \"DocumentRoot-Directory-my-app\",\n\t\t\t\tName: \"my-app\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"my-app\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tpackages:      packages,\n\t\t\trelationships: relationships,\n\t\t},\n\t\t{\n\t\t\tname: \"file source\",\n\t\t\tsource: source.Description{\n\t\t\t\tID: \"DocumentRoot-File-my-app.exe\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath: \"my-app.exe\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"3723cae0b8b83234bc28f28d8e\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tName: \"my-app.exe\",\n\t\t\t},\n\t\t\tpackages:      packages,\n\t\t\trelationships: relationships,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsrc := &test.source\n\t\t\ts := sbom.SBOM{\n\t\t\t\tSource: *src,\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(test.packages...),\n\t\t\t\t},\n\t\t\t\tRelationships: test.relationships,\n\t\t\t}\n\t\t\tdoc := ToFormatModel(s)\n\t\t\tgot, err := ToSyftModel(doc)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(&s, got,\n\t\t\t\tcmpopts.IgnoreUnexported(artifact.Relationship{}),\n\t\t\t\tcmpopts.IgnoreUnexported(file.LocationSet{}),\n\t\t\t\tcmpopts.IgnoreUnexported(pkg.Collection{}),\n\t\t\t\tcmpopts.IgnoreUnexported(pkg.Package{}),\n\t\t\t\tcmpopts.IgnoreUnexported(pkg.LicenseSet{}),\n\t\t\t\tcmpopts.IgnoreFields(sbom.Artifacts{}, \"FileMetadata\", \"FileDigests\"),\n\t\t\t); diff != \"\" {\n\t\t\t\tt.Fatalf(\"packages do not match:\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_purlValue(t *testing.T) {\n\ttests := []struct {\n\t\tpurl     packageurl.PackageURL\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tpurl:     packageurl.PackageURL{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpurl: packageurl.PackageURL{\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"version\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpurl: packageurl.PackageURL{\n\t\t\t\tType:    \"typ\",\n\t\t\t\tVersion: \"version\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpurl: packageurl.PackageURL{\n\t\t\t\tType:    \"typ\",\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"version\",\n\t\t\t},\n\t\t\texpected: \"pkg:typ/name@version\",\n\t\t},\n\t\t{\n\t\t\tpurl: packageurl.PackageURL{\n\t\t\t\tType:    \"typ\",\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"version\",\n\t\t\t\tQualifiers: packageurl.Qualifiers{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"q\",\n\t\t\t\t\t\tValue: \"v\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"pkg:typ/name@version?q=v\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.purl.String(), func(t *testing.T) {\n\t\t\tgot := purlValue(test.purl)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_directPackageFiles(t *testing.T) {\n\tdoc := &spdx.Document{\n\t\tSPDXVersion: \"SPDX-2.3\",\n\t\tPackages: []*spdx.Package{\n\t\t\t{\n\t\t\t\tPackageName:           \"some-package\",\n\t\t\t\tPackageSPDXIdentifier: \"1\", // important!\n\t\t\t\tPackageVersion:        \"1.0.5\",\n\t\t\t\tFiles: []*spdx.File{\n\t\t\t\t\t{\n\t\t\t\t\t\tFileName:           \"some-file\",\n\t\t\t\t\t\tFileSPDXIdentifier: \"2\",\n\t\t\t\t\t\tChecksums: []spdx.Checksum{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"SHA1\",\n\t\t\t\t\t\t\t\tValue:     \"a8d733c64f9123\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tgot, err := ToSyftModel(doc)\n\trequire.NoError(t, err)\n\n\tp := pkg.Package{\n\t\tName:    \"some-package\",\n\t\tVersion: \"1.0.5\",\n\t}\n\tp.OverrideID(\"1\") // the same as the spdxID on the package element\n\tf := file.Location{\n\t\tLocationData: file.LocationData{\n\t\t\tCoordinates: file.Coordinates{\n\t\t\t\tRealPath:     \"some-file\",\n\t\t\t\tFileSystemID: \"\",\n\t\t\t},\n\t\t\tAccessPath: \"some-file\",\n\t\t},\n\t\tLocationMetadata: file.LocationMetadata{\n\t\t\tAnnotations: map[string]string{},\n\t\t},\n\t}\n\ts := &sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkg.NewCollection(p),\n\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\tf.Coordinates: {},\n\t\t\t},\n\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\tf.Coordinates: {\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\t\tValue:     \"a8d733c64f9123\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tRelationships: []artifact.Relationship{\n\t\t\t{\n\t\t\t\tFrom: p,\n\t\t\t\tTo:   f,\n\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t},\n\t\t},\n\t\tSource:     source.Description{},\n\t\tDescriptor: sbom.Descriptor{},\n\t}\n\n\trequire.Equal(t, s, got)\n}\n\nfunc Test_useSPDXIdentifierOverDerivedSyftArtifactID(t *testing.T) {\n\tdoc := &spdx.Document{\n\t\tSPDXVersion: \"SPDX-2.3\",\n\t\tPackages: []*spdx.Package{\n\t\t\t{\n\t\t\t\tPackageName:           \"some-package\",\n\t\t\t\tPackageSPDXIdentifier: \"1\", // important!\n\t\t\t\tPackageVersion:        \"1.0.5\",\n\t\t\t\tFiles: []*spdx.File{\n\t\t\t\t\t{\n\t\t\t\t\t\tFileName:           \"some-file\",\n\t\t\t\t\t\tFileSPDXIdentifier: \"2\",\n\t\t\t\t\t\tChecksums: []spdx.Checksum{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"SHA1\",\n\t\t\t\t\t\t\t\tValue:     \"a8d733c64f9123\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\ts, err := ToSyftModel(doc)\n\n\tassert.Nil(t, err)\n\tassert.NotNil(t, s.Artifacts.Packages.Package(\"1\"))\n}\n\nfunc Test_skipsPackagesWithGeneratedFromRelationship(t *testing.T) {\n\tdoc := &spdx.Document{\n\t\tSPDXVersion: \"SPDX-2.3\",\n\t\tPackages: []*spdx.Package{\n\t\t\t{\n\t\t\t\tPackageName:           \"package-1\",\n\t\t\t\tPackageSPDXIdentifier: \"1\",\n\t\t\t\tPackageVersion:        \"1.0.5\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tPackageName:           \"package-1-src\",\n\t\t\t\tPackageSPDXIdentifier: \"1-src\",\n\t\t\t\tPackageVersion:        \"1.0.5-src\",\n\t\t\t},\n\t\t},\n\t\tRelationships: []*spdx.Relationship{\n\t\t\t{\n\t\t\t\tRelationship: spdx.RelationshipGeneratedFrom,\n\t\t\t\tRefA: common.DocElementID{ // package 1\n\t\t\t\t\tElementRefID: spdx.ElementID(\"1\"),\n\t\t\t\t},\n\t\t\t\tRefB: common.DocElementID{ // generated from package 1-src\n\t\t\t\t\tElementRefID: spdx.ElementID(\"1-src\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\ts, err := ToSyftModel(doc)\n\n\tassert.Nil(t, err)\n\tassert.NotNil(t, s.Artifacts.Packages.Package(\"1\"))\n\tassert.Nil(t, s.Artifacts.Packages.Package(\"1-src\"))\n}\n"
  },
  {
    "path": "syft/format/cpes/decoder.go",
    "content": "package cpes\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID sbom.FormatID = \"cpes\"\nconst version = \"1\"\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct{}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\tif r == nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"no reader provided\")\n\t}\n\ts, err := toSyftModel(r)\n\treturn s, ID, version, err\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\tif r == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\t\tif line == \"\" {\n\t\t\t// skip whitespace only lines\n\t\t\tcontinue\n\t\t}\n\n\t\terr := cpe.ValidateString(line)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\"\n\t\t}\n\n\t\treturn ID, version\n\t}\n\n\treturn \"\", \"\"\n}\n\nfunc toSyftModel(r io.Reader) (*sbom.SBOM, error) {\n\tvar errs []error\n\tpkgs := pkg.NewCollection()\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// skip invalid CPEs\n\t\tc, err := cpe.New(line, \"\")\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"line\", line).Debug(\"unable to parse cpe\")\n\t\t\tcontinue\n\t\t}\n\n\t\tp := pkg.Package{\n\t\t\tName:    c.Attributes.Product,\n\t\t\tVersion: c.Attributes.Version,\n\t\t\tCPEs:    []cpe.CPE{c},\n\t\t}\n\n\t\tinternal.Backfill(&p)\n\t\tp.SetID()\n\t\tpkgs.Add(p)\n\t}\n\n\treturn &sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkgs,\n\t\t},\n\t}, errors.Join(errs...)\n}\n"
  },
  {
    "path": "syft/format/cpes/decoder_test.go",
    "content": "package cpes\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tuserInput string\n\t\tsbom      *sbom.SBOM\n\t}{\n\t\t{\n\t\t\tname:      \"takes a single cpe\",\n\t\t\tuserInput: \"cpe:/a:apache:log4j:2.14.1\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"log4j\",\n\t\t\t\t\t\tVersion: \"2.14.1\",\n\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\tcpe.Must(\"cpe:/a:apache:log4j:2.14.1\", \"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"takes multiple cpes\",\n\t\t\tuserInput: `cpe:/a:apache:log4j:2.14.1\n\t\t\t\t\t\tcpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*;\n\t\t\t\t\t\tcpe:2.3:a:f5:nginx:0.5.2:*:*:*:*:*:*:*;\n\t\t\t\t\t\tcpe:2.3:a:f5:nginx:0.5.3:*:*:*:*:*:*:*;`,\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(\n\t\t\t\t\t\tpkg.Package{\n\t\t\t\t\t\t\tName:    \"log4j\",\n\t\t\t\t\t\t\tVersion: \"2.14.1\",\n\t\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\t\tcpe.Must(\"cpe:/a:apache:log4j:2.14.1\", \"\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpkg.Package{\n\t\t\t\t\t\t\tName:    \"nginx\",\n\t\t\t\t\t\t\tVersion: \"\",\n\t\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*;\", \"\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpkg.Package{\n\t\t\t\t\t\t\tName:    \"nginx\",\n\t\t\t\t\t\t\tVersion: \"0.5.2\",\n\t\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:f5:nginx:0.5.2:*:*:*:*:*:*:*;\", \"\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpkg.Package{\n\t\t\t\t\t\t\tName:    \"nginx\",\n\t\t\t\t\t\t\tVersion: \"0.5.3\",\n\t\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:f5:nginx:0.5.3:*:*:*:*:*:*:*;\", \"\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"takes cpe with no version\",\n\t\t\tuserInput: \"cpe:/a:apache:log4j\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName: \"log4j\",\n\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\tcpe.Must(\"cpe:/a:apache:log4j\", \"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"takes CPE 2.3 format\",\n\t\t\tuserInput: \"cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName:    \"log4j\",\n\t\t\t\t\t\tVersion: \"2.14.1\",\n\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*\", \"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"deduces target SW from CPE - known target_sw\",\n\t\t\tuserInput: \"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:ruby:*:*\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName: \"opensearch\",\n\t\t\t\t\t\tType: pkg.GemPkg,\n\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:ruby:*:*\", \"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"handles unknown target_sw CPE field\",\n\t\t\tuserInput: \"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:loremipsum:*:*\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(pkg.Package{\n\t\t\t\t\t\tName: \"opensearch\",\n\t\t\t\t\t\tType: \"\",\n\t\t\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t\t\tcpe.Must(\"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:loremipsum:*:*\", \"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"invalid prefix\",\n\t\t\tuserInput: \"dir:testdata/cpe\",\n\t\t\tsbom: &sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tsyftPkgOpts := []cmp.Option{\n\t\tcmpopts.IgnoreFields(pkg.Package{}, \"id\", \"Language\"),\n\t\tcmpopts.IgnoreUnexported(pkg.Package{}, file.LocationSet{}, pkg.LicenseSet{}),\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tdecodedSBOM, _, _, err := dec.Decode(strings.NewReader(tc.userInput))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgotSyftPkgs := decodedSBOM.Artifacts.Packages.Sorted()\n\t\t\twantSyftPkgs := tc.sbom.Artifacts.Packages.Sorted()\n\t\t\trequire.Equal(t, len(gotSyftPkgs), len(wantSyftPkgs))\n\t\t\tfor idx, wantPkg := range wantSyftPkgs {\n\t\t\t\tif d := cmp.Diff(wantPkg, gotSyftPkgs[idx], syftPkgOpts...); d != \"\" {\n\t\t\t\t\tt.Errorf(\"unexpected Syft Package (-want +got):\\n%s\", d)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/decoder.go",
    "content": "package cyclonedxjson\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil/helpers\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct {\n\tdecoder cyclonedxutil.Decoder\n}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{\n\t\tdecoder: cyclonedxutil.NewDecoder(cyclonedx.BOMFileFormatJSON),\n\t}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", err\n\t}\n\n\tid, version := d.Identify(reader)\n\tif id != ID {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"not a cyclonedx json document\")\n\t}\n\tif version == \"\" {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unsupported cyclonedx json document version\")\n\t}\n\n\t_, err = reader.Seek(0, io.SeekStart)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to seek to start of CycloneDX JSON SBOM: %+v\", err)\n\t}\n\tdoc, err := d.decoder.Decode(reader)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to decode cyclonedx json document: %w\", err)\n\t}\n\n\ts, err := helpers.ToSyftModel(doc)\n\tif err != nil {\n\t\treturn nil, id, version, err\n\t}\n\n\treturn s, id, version, nil\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tif _, err := reader.Seek(0, io.SeekStart); err != nil {\n\t\tlog.Debugf(\"unable to seek to start of CycloneDX JSON SBOM: %+v\", err)\n\t\treturn \"\", \"\"\n\t}\n\n\ttype Document struct {\n\t\tJSONSchema  string `json:\"$schema\"`\n\t\tBOMFormat   string `json:\"bomFormat\"`\n\t\tSpecVersion string `json:\"specVersion\"`\n\t}\n\n\tdec := json.NewDecoder(reader)\n\n\tvar doc Document\n\tif err = dec.Decode(&doc); err != nil {\n\t\t// maybe not json? maybe not valid? doesn't matter, we won't process it.\n\t\treturn \"\", \"\"\n\t}\n\n\tid, version := getFormatInfo(doc.BOMFormat, doc.SpecVersion)\n\tif version == \"\" || id != ID {\n\t\t// not a cyclonedx json document that we support\n\t\treturn \"\", \"\"\n\t}\n\n\treturn id, version\n}\n\nfunc getFormatInfo(bomFormat string, specVersion any) (sbom.FormatID, string) {\n\tif bomFormat != \"CycloneDX\" {\n\t\t// not a cyclonedx json document\n\t\treturn \"\", \"\"\n\t}\n\n\t// by this point, it looks to be cyclonedx json, but we need to know the version\n\n\tvar (\n\t\tversion string\n\t\tspec    cyclonedx.SpecVersion\n\t\terr     error\n\t)\n\tswitch s := specVersion.(type) {\n\tcase string:\n\t\tversion = s\n\t\tspec, err = cyclonedxutil.SpecVersionFromString(version)\n\t\tif err != nil {\n\t\t\t// not a supported version, but is cyclonedx json\n\t\t\treturn ID, \"\"\n\t\t}\n\tcase cyclonedx.SpecVersion:\n\t\tspec = s\n\t\tversion = cyclonedxutil.VersionFromSpecVersion(spec)\n\t\tif version == \"\" {\n\t\t\t// not a supported version, but is cyclonedx json\n\t\t\treturn ID, \"\"\n\t\t}\n\tdefault:\n\t\t// bad input provided for version info\n\t\treturn ID, \"\"\n\t}\n\n\tif spec < 0 {\n\t\t// not a supported version, but is cyclonedx json\n\t\treturn ID, \"\"\n\t}\n\n\treturn ID, version\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/decoder_test.go",
    "content": "package cyclonedxjson\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfile     string\n\t\terr      bool\n\t\tdistro   string\n\t\tpackages []string\n\t}{\n\t\t{\n\t\t\tname:     \"dir-scan\",\n\t\t\tfile:     \"snapshot/TestCycloneDxDirectoryEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"image-scan\",\n\t\t\tfile:     \"snapshot/TestCycloneDxImageEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname: \"not-an-sbom\",\n\t\t\tfile: \"bad-sbom\",\n\t\t\terr:  true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.file, func(t *testing.T) {\n\t\t\treader, err := os.Open(filepath.Join(\"testdata\", test.file))\n\t\t\trequire.NoError(t, err)\n\t\t\treset := func() { _, err = reader.Seek(0, io.SeekStart); require.NoError(t, err) }\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tif test.err {\n\t\t\t\tassert.Equal(t, sbom.FormatID(\"\"), formatID)\n\t\t\t\tassert.Equal(t, \"\", formatVersion)\n\n\t\t\t\treset()\n\t\t\t\t_, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tassert.Equal(t, sbom.FormatID(\"\"), decodeID)\n\t\t\t\tassert.Equal(t, \"\", decodeVersion)\n\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, ID, formatID)\n\t\t\tassert.NotEmpty(t, formatVersion)\n\n\t\t\treset()\n\t\t\tbom, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\trequire.NotNil(t, bom)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, ID, decodeID)\n\t\t\tassert.Equal(t, formatVersion, decodeVersion)\n\n\t\t\tsplit := strings.SplitN(test.distro, \":\", 2)\n\t\t\tdistroName := split[0]\n\t\t\tdistroVersion := split[1]\n\t\t\tassert.Equal(t, bom.Artifacts.LinuxDistribution.ID, distroName)\n\t\t\tassert.Equal(t, bom.Artifacts.LinuxDistribution.Version, distroVersion)\n\n\t\t\tvar pkgs []string\n\t\t\tfor p := range bom.Artifacts.Packages.Enumerate() {\n\t\t\t\tpkgs = append(pkgs, fmt.Sprintf(\"%s:%s\", p.Name, p.Version))\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.packages, pkgs)\n\t\t})\n\t}\n}\n\nfunc TestDecoder_Identify(t *testing.T) {\n\ttype testCase struct {\n\t\tname    string\n\t\tfile    string\n\t\tid      sbom.FormatID\n\t\tversion string\n\t}\n\n\tvar cases []testCase\n\n\tfor _, version := range SupportedVersions() {\n\t\tcases = append(cases, testCase{\n\t\t\tname:    fmt.Sprintf(\"v%s schema\", version),\n\t\t\tfile:    fmt.Sprintf(\"testdata/identify/%s.json\", version),\n\t\t\tid:      ID,\n\t\t\tversion: version,\n\t\t})\n\t}\n\n\tcases = append(cases, []testCase{\n\t\t{\n\t\t\tname:    \"no-schema-1.4\",\n\t\t\tfile:    \"testdata/identify/micronaut-1.4.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"1.4\",\n\t\t},\n\t\t{\n\t\t\tname:    \"no-schema-1.5\",\n\t\t\tfile:    \"testdata/identify/micronaut-1.5.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"1.5\",\n\t\t},\n\t}...)\n\n\tfor _, test := range cases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\treader, err := os.Open(test.file)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\tassert.Equal(t, test.version, formatVersion)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/encoder.go",
    "content": "package cyclonedxjson\n\nimport (\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID = cyclonedxutil.JSONFormatID\n\nfunc SupportedVersions() []string {\n\treturn cyclonedxutil.SupportedVersions(ID)\n}\n\ntype EncoderConfig struct {\n\tVersion string\n\tPretty  bool // don't include spaces and newlines; same as jq -c\n}\n\ntype encoder struct {\n\tcfg EncoderConfig\n\tcyclonedxutil.Encoder\n}\n\nfunc NewFormatEncoderWithConfig(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\tenc, err := cyclonedxutil.NewEncoder(cfg.Version, cyclonedx.BOMFileFormatJSON, cfg.Pretty)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn encoder{\n\t\tcfg:     cfg,\n\t\tEncoder: enc,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tVersion: cyclonedxutil.DefaultVersion,\n\t\tPretty:  false,\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{}\n}\n\nfunc (e encoder) Version() string {\n\treturn e.cfg.Version\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/encoder_test.go",
    "content": "package cyclonedxjson\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-cyclonedx-json\", false, \"update the *.golden files for cyclone-dx JSON encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc getEncoder(t testing.TB) sbom.FormatEncoder {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\treturn enc\n}\n\nfunc TestPrettyOutput(t *testing.T) {\n\trun := func(opt bool) string {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{\n\t\t\tVersion: cyclonedxutil.DefaultVersion,\n\t\t\tPretty:  opt,\n\t\t})\n\t\trequire.NoError(t, err)\n\n\t\tdir := t.TempDir()\n\t\ts := testutil.DirectoryInput(t, dir)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\treturn strings.TrimSpace(buffer.String())\n\t}\n\n\tt.Run(\"pretty\", func(t *testing.T) {\n\t\tactual := run(true)\n\t\tassert.Contains(t, actual, \"\\n\")\n\t})\n\n\tt.Run(\"compact\", func(t *testing.T) {\n\t\tactual := run(false)\n\t\tassert.NotContains(t, actual, \"\\n\")\n\t})\n}\n\nfunc TestEscapeHTML(t *testing.T) {\n\tdir := t.TempDir()\n\ts := testutil.DirectoryInput(t, dir)\n\ts.Artifacts.Packages.Add(pkg.Package{\n\t\tName: \"<html-package>\",\n\t})\n\n\t// by default we do not escape HTML\n\tt.Run(\"default\", func(t *testing.T) {\n\t\tcfg := DefaultEncoderConfig()\n\n\t\tenc, err := NewFormatEncoderWithConfig(cfg)\n\t\trequire.NoError(t, err)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\tactual := buffer.String()\n\t\tassert.Contains(t, actual, \"<html-package>\")\n\t\tassert.NotContains(t, actual, \"\\\\u003chtml-package\\\\u003e\")\n\t})\n\n}\n\nfunc TestCycloneDxDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestCycloneDxImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactorSpec(\n\t\t\ttestutil.PatternReplacement{\n\t\t\t\t// only the source component bom-ref (not package or other component bom-refs)\n\t\t\t\tSearch:  regexp.MustCompile(`\"component\": \\{[^}]*\"bom-ref\":\\s*\"(?P<redact>.+)\"[^}]*}`),\n\t\t\t\tGroups:  []string{\"redact\"}, // use the regex to anchore the search, but only replace bytes within the capture group\n\t\t\t\tReplace: \"redacted\",\n\t\t\t},\n\t\t).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// UUIDs\n\t\t\t\t`urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}`: `urn:uuid:redacted`,\n\n\t\t\t\t// timestamps\n\t\t\t\t`([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(([Zz])|([+|\\-]([01][0-9]|2[0-3]):[0-5][0-9]))`: `timestamp:redacted`,\n\n\t\t\t\t// image hashes\n\t\t\t\t`sha256:[A-Fa-f0-9]{64}`: `sha256:redacted`,\n\t\t\t},\n\t\t)\n}\n\nfunc TestSupportedVersions(t *testing.T) {\n\tencs := defaultFormatEncoders()\n\trequire.NotEmpty(t, encs)\n\n\tversions := SupportedVersions()\n\trequire.Equal(t, len(versions), len(encs))\n\n\tsubject := testutil.DirectoryInput(t, t.TempDir())\n\tdec := NewFormatDecoder()\n\n\tfor _, enc := range encs {\n\t\tt.Run(enc.Version(), func(t *testing.T) {\n\t\t\trequire.Contains(t, versions, enc.Version())\n\n\t\t\tvar buf bytes.Buffer\n\t\t\trequire.NoError(t, enc.Encode(&buf, subject))\n\n\t\t\tid, version := dec.Identify(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\tvar s *sbom.SBOM\n\t\t\tvar err error\n\t\t\ts, id, version, err = dec.Decode(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\trequire.NotEmpty(t, s.Artifacts.Packages.PackageCount())\n\n\t\t\tassert.Equal(t, len(subject.Relationships), len(s.Relationships), \"mismatched relationship count\")\n\n\t\t\tif !assert.Equal(t, subject.Artifacts.Packages.PackageCount(), s.Artifacts.Packages.PackageCount(), \"mismatched package count\") {\n\t\t\t\tt.Logf(\"expected: %d\", subject.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range subject.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t\tt.Logf(\"actual: %d\", s.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc defaultFormatEncoders() []sbom.FormatEncoder {\n\tvar encs []sbom.FormatEncoder\n\tfor _, version := range SupportedVersions() {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{Version: version})\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tencs = append(encs, enc)\n\t}\n\treturn encs\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/bad-sbom",
    "content": "not an sbom!"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/1.2.json",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.2.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.2\",\n  \"serialNumber\": \"urn:uuid:8cfb48be-7ed8-4cea-8c23-8992e98d12be\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"2023-09-29T12:02:02-04:00\",\n    \"tools\": [\n      {\n        \"vendor\": \"anchore\",\n        \"name\": \"syft\",\n        \"version\": \"[not provided]\"\n      }\n    ],\n    \"component\": {\n      \"bom-ref\": \"a0ff99a6af10f11f\",\n      \"type\": \"file\",\n      \"name\": \"go.mod\",\n      \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\",\n      \"type\": \"library\",\n      \"name\": \"github.com/wagoodman/go-partybus\",\n      \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n      \"cpe\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/1.3.json",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.3.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.3\",\n  \"serialNumber\": \"urn:uuid:57ce2636-4ca6-46ba-b389-196af071d6fc\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"2023-09-29T12:02:02-04:00\",\n    \"tools\": [\n      {\n        \"vendor\": \"anchore\",\n        \"name\": \"syft\",\n        \"version\": \"[not provided]\"\n      }\n    ],\n    \"component\": {\n      \"bom-ref\": \"a0ff99a6af10f11f\",\n      \"type\": \"file\",\n      \"name\": \"go.mod\",\n      \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\",\n      \"type\": \"library\",\n      \"name\": \"github.com/wagoodman/go-partybus\",\n      \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n      \"cpe\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"go-module-file-cataloger\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"go\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"GolangModMetadata\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"go-module\"\n        },\n        {\n          \"name\": \"syft:cpe23\",\n          \"value\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/go.mod\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/1.4.json",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.4.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.4\",\n  \"serialNumber\": \"urn:uuid:6be7491f-6a9b-40f0-a60e-f74e2c0e23c3\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"2023-09-29T12:02:02-04:00\",\n    \"tools\": [\n      {\n        \"vendor\": \"anchore\",\n        \"name\": \"syft\",\n        \"version\": \"[not provided]\"\n      }\n    ],\n    \"component\": {\n      \"bom-ref\": \"a0ff99a6af10f11f\",\n      \"type\": \"file\",\n      \"name\": \"go.mod\",\n      \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\",\n      \"type\": \"library\",\n      \"name\": \"github.com/wagoodman/go-partybus\",\n      \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n      \"cpe\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"go-module-file-cataloger\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"go\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"GolangModMetadata\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"go-module\"\n        },\n        {\n          \"name\": \"syft:cpe23\",\n          \"value\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/go.mod\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/1.5.json",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.5.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.5\",\n  \"serialNumber\": \"urn:uuid:22c456c5-c2a0-4285-a8ef-01b4382822c3\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"2023-09-29T12:02:02-04:00\",\n    \"tools\": [\n      {\n        \"vendor\": \"anchore\",\n        \"name\": \"syft\",\n        \"version\": \"[not provided]\"\n      }\n    ],\n    \"component\": {\n      \"bom-ref\": \"a0ff99a6af10f11f\",\n      \"type\": \"file\",\n      \"name\": \"go.mod\",\n      \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\",\n      \"type\": \"library\",\n      \"name\": \"github.com/wagoodman/go-partybus\",\n      \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n      \"cpe\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"go-module-file-cataloger\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"go\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"GolangModMetadata\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"go-module\"\n        },\n        {\n          \"name\": \"syft:cpe23\",\n          \"value\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/go.mod\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/1.6.json",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.5.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.6\",\n  \"serialNumber\": \"urn:uuid:5208fea9-73dd-4624-b596-69fddccdb9e7\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"2023-09-29T12:02:02-04:00\",\n    \"tools\": [\n      {\n        \"vendor\": \"anchore\",\n        \"name\": \"syft\",\n        \"version\": \"[not provided]\"\n      }\n    ],\n    \"component\": {\n      \"bom-ref\": \"a0ff99a6af10f11f\",\n      \"type\": \"file\",\n      \"name\": \"go.mod\",\n      \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\",\n      \"type\": \"library\",\n      \"name\": \"github.com/wagoodman/go-partybus\",\n      \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n      \"cpe\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"go-module-file-cataloger\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"go\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"GolangModMetadata\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"go-module\"\n        },\n        {\n          \"name\": \"syft:cpe23\",\n          \"value\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/go.mod\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/micronaut-1.4.json",
    "content": "{\n    \"bomFormat\": \"CycloneDX\",\n    \"specVersion\": \"1.4\",\n    \"version\": 1,\n    \"components\": [\n        {\n            \"type\": \"library\",\n            \"group\": \"io.netty\",\n            \"name\": \"netty-codec-http2\",\n            \"version\": \"4.1.73.Final\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:codec:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty-codec-http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty_codec_http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                }\n            ]\n        }\n    ],\n    \"serialNumber\": \"urn:uuid:43538af4-f715-3d85-9629-336fdd3790ad\"\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/micronaut-1.5.json",
    "content": "{\n    \"bomFormat\": \"CycloneDX\",\n    \"specVersion\": \"1.5\",\n    \"version\": 1,\n    \"components\": [\n        {\n            \"type\": \"library\",\n            \"group\": \"io.netty\",\n            \"name\": \"netty-codec-http2\",\n            \"version\": \"4.1.73.Final\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:codec:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty-codec-http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty_codec_http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                }\n            ]\n        }\n    ],\n    \"serialNumber\": \"urn:uuid:f4-f715-3d85-9629-336fdd3790ad\"\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/identify/micronaut-1.6.json",
    "content": "{\n    \"bomFormat\": \"CycloneDX\",\n    \"specVersion\": \"1.6\",\n    \"version\": 1,\n    \"components\": [\n        {\n            \"type\": \"library\",\n            \"group\": \"io.netty\",\n            \"name\": \"netty-codec-http2\",\n            \"version\": \"4.1.73.Final\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:codec:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty-codec-http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty_codec_http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                }\n            ]\n        }\n    ],\n    \"serialNumber\": \"urn:uuid:3eb5ec7a-cb05-4339-b873-e27b1c1efaba\"\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/snapshot/TestCycloneDxDirectoryEncoder.golden",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.6.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.6\",\n  \"serialNumber\": \"urn:uuid:redacted\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"timestamp:redacted\",\n    \"tools\": {\n      \"components\": [\n        {\n          \"type\": \"application\",\n          \"author\": \"anchore\",\n          \"name\": \"syft\",\n          \"version\": \"v0.42.0-bogus\"\n        }\n      ]\n    },\n    \"component\": {\n      \"bom-ref\": \"redacted\",\n      \"type\": \"file\",\n      \"name\": \"some/path\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"f04d218ff5ff50db\",\n      \"type\": \"library\",\n      \"name\": \"package-1\",\n      \"version\": \"1.0.1\",\n      \"licenses\": [\n        {\n          \"license\": {\n            \"id\": \"MIT\"\n          }\n        }\n      ],\n      \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n      \"purl\": \"a-purl-2\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"the-cataloger-1\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"python\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"python\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"python-package\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/some/path/pkg1\"\n        }\n      ]\n    },\n    {\n      \"bom-ref\": \"pkg:deb/debian/package-2@2.0.1?package-id=39392bb5e270f669\",\n      \"type\": \"library\",\n      \"name\": \"package-2\",\n      \"version\": \"2.0.1\",\n      \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:deb/debian/package-2@2.0.1\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"the-cataloger-2\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"deb\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"dpkg-db-entry\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/some/path/pkg1\"\n        },\n        {\n          \"name\": \"syft:metadata:installedSize\",\n          \"value\": \"0\"\n        }\n      ]\n    },\n    {\n      \"bom-ref\": \"os:debian@1.2.3\",\n      \"type\": \"operating-system\",\n      \"name\": \"debian\",\n      \"version\": \"1.2.3\",\n      \"description\": \"debian\",\n      \"swid\": {\n        \"tagId\": \"debian\",\n        \"name\": \"debian\",\n        \"version\": \"1.2.3\"\n      },\n      \"properties\": [\n        {\n          \"name\": \"syft:distro:extendedSupport\",\n          \"value\": \"false\"\n        },\n        {\n          \"name\": \"syft:distro:id\",\n          \"value\": \"debian\"\n        },\n        {\n          \"name\": \"syft:distro:idLike:0\",\n          \"value\": \"like!\"\n        },\n        {\n          \"name\": \"syft:distro:prettyName\",\n          \"value\": \"debian\"\n        },\n        {\n          \"name\": \"syft:distro:versionID\",\n          \"value\": \"1.2.3\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxjson/testdata/snapshot/TestCycloneDxImageEncoder.golden",
    "content": "{\n  \"$schema\": \"http://cyclonedx.org/schema/bom-1.6.schema.json\",\n  \"bomFormat\": \"CycloneDX\",\n  \"specVersion\": \"1.6\",\n  \"serialNumber\": \"urn:uuid:redacted\",\n  \"version\": 1,\n  \"metadata\": {\n    \"timestamp\": \"timestamp:redacted\",\n    \"tools\": {\n      \"components\": [\n        {\n          \"type\": \"application\",\n          \"author\": \"anchore\",\n          \"name\": \"syft\",\n          \"version\": \"v0.42.0-bogus\"\n        }\n      ]\n    },\n    \"component\": {\n      \"bom-ref\": \"redacted\",\n      \"type\": \"container\",\n      \"name\": \"user-image-input\",\n      \"version\": \"sha256:redacted\"\n    }\n  },\n  \"components\": [\n    {\n      \"bom-ref\": \"2f52f617f1548337\",\n      \"type\": \"library\",\n      \"name\": \"package-1\",\n      \"version\": \"1.0.1\",\n      \"licenses\": [\n        {\n          \"license\": {\n            \"id\": \"MIT\"\n          }\n        }\n      ],\n      \"cpe\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n      \"purl\": \"a-purl-1\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"the-cataloger-1\"\n        },\n        {\n          \"name\": \"syft:package:language\",\n          \"value\": \"python\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"python\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"python-package\"\n        },\n        {\n          \"name\": \"syft:location:0:layerID\",\n          \"value\": \"sha256:redacted\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/somefile-1.txt\"\n        }\n      ]\n    },\n    {\n      \"bom-ref\": \"pkg:deb/debian/package-2@2.0.1?package-id=4b756c6f6fb127a3\",\n      \"type\": \"library\",\n      \"name\": \"package-2\",\n      \"version\": \"2.0.1\",\n      \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n      \"purl\": \"pkg:deb/debian/package-2@2.0.1\",\n      \"properties\": [\n        {\n          \"name\": \"syft:package:foundBy\",\n          \"value\": \"the-cataloger-2\"\n        },\n        {\n          \"name\": \"syft:package:type\",\n          \"value\": \"deb\"\n        },\n        {\n          \"name\": \"syft:package:metadataType\",\n          \"value\": \"dpkg-db-entry\"\n        },\n        {\n          \"name\": \"syft:location:0:layerID\",\n          \"value\": \"sha256:redacted\"\n        },\n        {\n          \"name\": \"syft:location:0:path\",\n          \"value\": \"/somefile-2.txt\"\n        },\n        {\n          \"name\": \"syft:metadata:installedSize\",\n          \"value\": \"0\"\n        }\n      ]\n    },\n    {\n      \"bom-ref\": \"os:debian@1.2.3\",\n      \"type\": \"operating-system\",\n      \"name\": \"debian\",\n      \"version\": \"1.2.3\",\n      \"description\": \"debian\",\n      \"swid\": {\n        \"tagId\": \"debian\",\n        \"name\": \"debian\",\n        \"version\": \"1.2.3\"\n      },\n      \"properties\": [\n        {\n          \"name\": \"syft:distro:extendedSupport\",\n          \"value\": \"false\"\n        },\n        {\n          \"name\": \"syft:distro:id\",\n          \"value\": \"debian\"\n        },\n        {\n          \"name\": \"syft:distro:idLike:0\",\n          \"value\": \"like!\"\n        },\n        {\n          \"name\": \"syft:distro:prettyName\",\n          \"value\": \"debian\"\n        },\n        {\n          \"name\": \"syft:distro:versionID\",\n          \"value\": \"1.2.3\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxxml/decoder.go",
    "content": "package cyclonedxxml\n\nimport (\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil/helpers\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct {\n\tdecoder cyclonedxutil.Decoder\n}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{\n\t\tdecoder: cyclonedxutil.NewDecoder(cyclonedx.BOMFileFormatXML),\n\t}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", err\n\t}\n\n\tid, version := d.Identify(reader)\n\tif id != ID {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"not a cyclonedx xml document\")\n\t}\n\tif version == \"\" {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unsupported cyclonedx xml document version\")\n\t}\n\n\t_, err = reader.Seek(0, io.SeekStart)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to seek to start of CycloneDX XML SBOM: %w\", err)\n\t}\n\tdoc, err := d.decoder.Decode(reader)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to decode cyclonedx xml document: %w\", err)\n\t}\n\n\ts, err := helpers.ToSyftModel(doc)\n\tif err != nil {\n\t\treturn nil, id, version, err\n\t}\n\n\treturn s, id, version, nil\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tif _, err := reader.Seek(0, io.SeekStart); err != nil {\n\t\tlog.Debugf(\"unable to seek to start of CycloneDX XML SBOM: %+v\", err)\n\t\treturn \"\", \"\"\n\t}\n\n\ttype Document struct {\n\t\tXMLNS string `xml:\"xmlns,attr\"`\n\t}\n\n\tdec := xml.NewDecoder(reader)\n\n\tvar doc Document\n\tif err = dec.Decode(&doc); err != nil {\n\t\t// maybe not xml? maybe not valid? doesn't matter, we won't process it.\n\t\treturn \"\", \"\"\n\t}\n\n\tid, version := getFormatInfo(doc.XMLNS)\n\tif version == \"\" || id != ID {\n\t\t// not a cyclonedx xml document that we support\n\t\treturn \"\", \"\"\n\t}\n\n\treturn id, version\n}\n\nfunc getFormatInfo(xmlns string) (sbom.FormatID, string) {\n\tversion := getVersionFromXMLNS(xmlns)\n\n\tif !strings.Contains(xmlns, \"cyclonedx.org/schema/bom\") {\n\t\t// not a cyclonedx xml document\n\t\treturn \"\", \"\"\n\t}\n\n\tspec, err := cyclonedxutil.SpecVersionFromString(version)\n\tif spec < 0 || err != nil {\n\t\t// not a supported version, but is cyclonedx xml\n\t\treturn ID, \"\"\n\t}\n\treturn ID, version\n}\n\nfunc getVersionFromXMLNS(xmlns string) string {\n\tfields := strings.Split(xmlns, \"/\")\n\treturn fields[len(fields)-1]\n}\n"
  },
  {
    "path": "syft/format/cyclonedxxml/decoder_test.go",
    "content": "package cyclonedxxml\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfile     string\n\t\terr      bool\n\t\tdistro   string\n\t\tpackages []string\n\t}{\n\t\t{\n\t\t\tname:     \"dir-scan\",\n\t\t\tfile:     \"snapshot/TestCycloneDxDirectoryEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"image-scan\",\n\t\t\tfile:     \"snapshot/TestCycloneDxImageEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname: \"not-an-sbom\",\n\t\t\tfile: \"bad-sbom\",\n\t\t\terr:  true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.file, func(t *testing.T) {\n\t\t\treader, err := os.Open(filepath.Join(\"testdata\", test.file))\n\t\t\trequire.NoError(t, err)\n\n\t\t\treset := func() { _, err = reader.Seek(0, io.SeekStart); require.NoError(t, err) }\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tif test.err {\n\t\t\t\tassert.Equal(t, sbom.FormatID(\"\"), formatID)\n\t\t\t\tassert.Equal(t, \"\", formatVersion)\n\n\t\t\t\treset()\n\t\t\t\t_, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tassert.Equal(t, sbom.FormatID(\"\"), decodeID)\n\t\t\t\tassert.Equal(t, \"\", decodeVersion)\n\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, ID, formatID)\n\t\t\tassert.NotEmpty(t, formatVersion)\n\n\t\t\treset()\n\t\t\tbom, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\trequire.NotNil(t, bom)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, ID, decodeID)\n\t\t\tassert.Equal(t, formatVersion, decodeVersion)\n\n\t\t\tsplit := strings.SplitN(test.distro, \":\", 2)\n\t\t\tdistroName := split[0]\n\t\t\tdistroVersion := split[1]\n\t\t\tassert.Equal(t, bom.Artifacts.LinuxDistribution.ID, distroName)\n\t\t\tassert.Equal(t, bom.Artifacts.LinuxDistribution.Version, distroVersion)\n\n\t\t\tvar pkgs []string\n\t\t\tfor p := range bom.Artifacts.Packages.Enumerate() {\n\t\t\t\tpkgs = append(pkgs, fmt.Sprintf(\"%s:%s\", p.Name, p.Version))\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.packages, pkgs)\n\t\t})\n\t}\n}\n\nfunc TestDecoder_Identify(t *testing.T) {\n\ttype testCase struct {\n\t\tname    string\n\t\tfile    string\n\t\tid      sbom.FormatID\n\t\tversion string\n\t}\n\n\tvar cases []testCase\n\n\tfor _, version := range SupportedVersions() {\n\t\tcases = append(cases, testCase{\n\t\t\tname:    fmt.Sprintf(\"v%s schema\", version),\n\t\t\tfile:    fmt.Sprintf(\"testdata/identify/%s.xml\", version),\n\t\t\tid:      ID,\n\t\t\tversion: version,\n\t\t})\n\t}\n\n\tfor _, test := range cases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\treader, err := os.Open(test.file)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\tassert.Equal(t, test.version, formatVersion)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/cyclonedxxml/encoder.go",
    "content": "package cyclonedxxml\n\nimport (\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatEncoder = (*encoder)(nil)\n\nconst ID = cyclonedxutil.XMLFormatID\n\nfunc SupportedVersions() []string {\n\treturn cyclonedxutil.SupportedVersions(ID)\n}\n\ntype EncoderConfig struct {\n\tVersion string\n\tPretty  bool // set indent to 0\n}\n\ntype encoder struct {\n\tcfg EncoderConfig\n\tcyclonedxutil.Encoder\n}\n\nfunc NewFormatEncoderWithConfig(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\tenc, err := cyclonedxutil.NewEncoder(cfg.Version, cyclonedx.BOMFileFormatXML, cfg.Pretty)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn encoder{\n\t\tcfg:     cfg,\n\t\tEncoder: enc,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tVersion: cyclonedxutil.DefaultVersion,\n\t\tPretty:  false,\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"cyclonedx\",\n\t\t\"cyclone\",\n\t\t\"cdx\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn e.cfg.Version\n}\n"
  },
  {
    "path": "syft/format/cyclonedxxml/encoder_test.go",
    "content": "package cyclonedxxml\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-cyclonedx-xml\", false, \"update the *.golden files for cyclone-dx XML encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc getEncoder(t testing.TB) sbom.FormatEncoder {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\treturn enc\n}\n\nfunc TestPrettyOutput(t *testing.T) {\n\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{\n\t\tVersion: cyclonedxutil.DefaultVersion,\n\t\tPretty:  false,\n\t})\n\trequire.NoError(t, err)\n\n\tdir := t.TempDir()\n\ts := testutil.DirectoryInput(t, dir)\n\n\tvar buffer bytes.Buffer\n\terr = enc.Encode(&buffer, s)\n\trequire.NoError(t, err)\n\n\tactual := buffer.String()\n\tlines := strings.Split(actual, \"\\n\")\n\trequire.NotEmpty(t, lines)\n\twhitespace := regexp.MustCompile(`^\\s+`)\n\tfor _, line := range lines {\n\t\tif len(line) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// require a non-whitespace character (tab, space, etc) as the first character of the line\n\t\trequire.False(t, whitespace.Match([]byte(line)), \"line should not start with whitespace: %q\", line)\n\t}\n}\n\nfunc TestCycloneDxDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestCycloneDxImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactorSpec(\n\t\t\ttestutil.PatternReplacement{\n\t\t\t\t// only the source component bom-ref (not package or other component bom-refs)\n\t\t\t\tSearch:  regexp.MustCompile(`<component bom-ref=\"(?P<redact>[^\"]*)\" type=\"file\">`),\n\t\t\t\tGroups:  []string{\"redact\"}, // use the regex to anchor the search, but only replace bytes within the capture group\n\t\t\t\tReplace: \"redacted\",\n\t\t\t},\n\t\t).\n\t\tWithPatternRedactorSpec(\n\t\t\ttestutil.PatternReplacement{\n\t\t\t\t// only the source component bom-ref (not package or other component bom-refs)\n\t\t\t\tSearch:  regexp.MustCompile(`<component bom-ref=\"(?P<redact>[^\"]*)\" type=\"container\">`),\n\t\t\t\tGroups:  []string{\"redact\"}, // use the regex to anchor the search, but only replace bytes within the capture group\n\t\t\t\tReplace: \"redacted\",\n\t\t\t},\n\t\t).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// dates\n\t\t\t\t`([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(([Zz])|([+|\\-]([01][0-9]|2[0-3]):[0-5][0-9]))`: `redacted`,\n\n\t\t\t\t// image hashes\n\t\t\t\t`sha256:[A-Za-z0-9]{64}`: `sha256:redacted`,\n\n\t\t\t\t// serial numbers\n\t\t\t\t`(serialNumber)=\"[^\"]+\"`: `$1=\"redacted\"`,\n\t\t\t},\n\t\t)\n}\n\nfunc TestSupportedVersions(t *testing.T) {\n\tencs := defaultFormatEncoders()\n\trequire.NotEmpty(t, encs)\n\n\tversions := SupportedVersions()\n\trequire.Equal(t, len(versions), len(encs))\n\n\tsubject := testutil.DirectoryInput(t, t.TempDir())\n\tdec := NewFormatDecoder()\n\n\tfor _, enc := range encs {\n\t\tt.Run(enc.Version(), func(t *testing.T) {\n\t\t\trequire.Contains(t, versions, enc.Version())\n\n\t\t\tvar buf bytes.Buffer\n\t\t\trequire.NoError(t, enc.Encode(&buf, subject))\n\n\t\t\tid, version := dec.Identify(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\tvar s *sbom.SBOM\n\t\t\tvar err error\n\t\t\ts, id, version, err = dec.Decode(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\trequire.NotEmpty(t, s.Artifacts.Packages.PackageCount())\n\n\t\t\tassert.Equal(t, len(subject.Relationships), len(s.Relationships), \"mismatched relationship count\")\n\n\t\t\tif !assert.Equal(t, subject.Artifacts.Packages.PackageCount(), s.Artifacts.Packages.PackageCount(), \"mismatched package count\") {\n\t\t\t\tt.Logf(\"expected: %d\", subject.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range subject.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t\tt.Logf(\"actual: %d\", s.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc defaultFormatEncoders() []sbom.FormatEncoder {\n\tvar encs []sbom.FormatEncoder\n\tfor _, version := range SupportedVersions() {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{Version: version})\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tencs = append(encs, enc)\n\t}\n\treturn encs\n}\n"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/bad-sbom",
    "content": "not an sbom!"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.0.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.0\" version=\"1\">\n  <components>\n    <component type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n      <modified>false</modified>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.1\" serialNumber=\"urn:uuid:32ad4aec-ddc3-4c26-90e7-796f7ca82a1d\" version=\"1\">\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.2\" serialNumber=\"urn:uuid:214033a9-6fe2-4f0b-88f2-8dbca251d0e0\" version=\"1\">\n  <metadata>\n    <timestamp>2023-09-29T11:48:10-04:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>anchore</vendor>\n        <name>syft</name>\n        <version>[not provided]</version>\n      </tool>\n    </tools>\n    <component bom-ref=\"a0ff99a6af10f11f\" type=\"file\">\n      <name>go.mod</name>\n      <version>sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.3\" serialNumber=\"urn:uuid:7ec2b549-3d31-4c7b-85be-fad838c8f312\" version=\"1\">\n  <metadata>\n    <timestamp>2023-09-29T11:48:10-04:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>anchore</vendor>\n        <name>syft</name>\n        <version>[not provided]</version>\n      </tool>\n    </tools>\n    <component bom-ref=\"a0ff99a6af10f11f\" type=\"file\">\n      <name>go.mod</name>\n      <version>sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">go-module-file-cataloger</property>\n        <property name=\"syft:package:language\">go</property>\n        <property name=\"syft:package:metadataType\">GolangModMetadata</property>\n        <property name=\"syft:package:type\">go-module</property>\n        <property name=\"syft:cpe23\">cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</property>\n        <property name=\"syft:location:0:path\">/go.mod</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.4\" serialNumber=\"urn:uuid:3e5d8b2a-30cd-409f-9519-558c53e542c5\" version=\"1\">\n  <metadata>\n    <timestamp>2023-09-29T11:48:10-04:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>anchore</vendor>\n        <name>syft</name>\n        <version>[not provided]</version>\n      </tool>\n    </tools>\n    <component bom-ref=\"a0ff99a6af10f11f\" type=\"file\">\n      <name>go.mod</name>\n      <version>sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">go-module-file-cataloger</property>\n        <property name=\"syft:package:language\">go</property>\n        <property name=\"syft:package:metadataType\">GolangModMetadata</property>\n        <property name=\"syft:package:type\">go-module</property>\n        <property name=\"syft:cpe23\">cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</property>\n        <property name=\"syft:location:0:path\">/go.mod</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.5.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.5\" serialNumber=\"urn:uuid:b2188bff-93b8-47e7-b86e-41c417e0d75e\" version=\"1\">\n  <metadata>\n    <timestamp>2023-09-29T11:48:10-04:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>anchore</vendor>\n        <name>syft</name>\n        <version>[not provided]</version>\n      </tool>\n    </tools>\n    <component bom-ref=\"a0ff99a6af10f11f\" type=\"file\">\n      <name>go.mod</name>\n      <version>sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">go-module-file-cataloger</property>\n        <property name=\"syft:package:language\">go</property>\n        <property name=\"syft:package:metadataType\">GolangModMetadata</property>\n        <property name=\"syft:package:type\">go-module</property>\n        <property name=\"syft:cpe23\">cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</property>\n        <property name=\"syft:location:0:path\">/go.mod</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/identify/1.6.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.6\" serialNumber=\"urn:uuid:098e8516-ecd5-4130-9d5f-c32ba1ddb0dd\" version=\"1\">\n  <metadata>\n    <timestamp>2023-09-29T11:48:10-04:00</timestamp>\n    <tools>\n      <tool>\n        <vendor>anchore</vendor>\n        <name>syft</name>\n        <version>[not provided]</version>\n      </tool>\n    </tools>\n    <component bom-ref=\"a0ff99a6af10f11f\" type=\"file\">\n      <name>go.mod</name>\n      <version>sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651?package-id=2ff71a67fb024c86\" type=\"library\">\n      <name>github.com/wagoodman/go-partybus</name>\n      <version>v0.0.0-20230516145632-8ccac152c651</version>\n      <cpe>cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">go-module-file-cataloger</property>\n        <property name=\"syft:package:language\">go</property>\n        <property name=\"syft:package:metadataType\">GolangModMetadata</property>\n        <property name=\"syft:package:type\">go-module</property>\n        <property name=\"syft:cpe23\">cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*</property>\n        <property name=\"syft:location:0:path\">/go.mod</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/snapshot/TestCycloneDxDirectoryEncoder.golden",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.6\" serialNumber=\"redacted\" version=\"1\">\n  <metadata>\n    <timestamp>redacted</timestamp>\n    <tools>\n      <components>\n        <component type=\"application\">\n          <author>anchore</author>\n          <name>syft</name>\n          <version>v0.42.0-bogus</version>\n        </component>\n      </components>\n    </tools>\n    <component bom-ref=\"redacted\" type=\"file\">\n      <name>some/path</name>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"f04d218ff5ff50db\" type=\"library\">\n      <name>package-1</name>\n      <version>1.0.1</version>\n      <licenses>\n        <license>\n          <id>MIT</id>\n        </license>\n      </licenses>\n      <cpe>cpe:2.3:*:some:package:2:*:*:*:*:*:*:*</cpe>\n      <purl>a-purl-2</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">the-cataloger-1</property>\n        <property name=\"syft:package:language\">python</property>\n        <property name=\"syft:package:type\">python</property>\n        <property name=\"syft:package:metadataType\">python-package</property>\n        <property name=\"syft:location:0:path\">/some/path/pkg1</property>\n      </properties>\n    </component>\n    <component bom-ref=\"pkg:deb/debian/package-2@2.0.1?package-id=39392bb5e270f669\" type=\"library\">\n      <name>package-2</name>\n      <version>2.0.1</version>\n      <cpe>cpe:2.3:*:some:package:2:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:deb/debian/package-2@2.0.1</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">the-cataloger-2</property>\n        <property name=\"syft:package:type\">deb</property>\n        <property name=\"syft:package:metadataType\">dpkg-db-entry</property>\n        <property name=\"syft:location:0:path\">/some/path/pkg1</property>\n        <property name=\"syft:metadata:installedSize\">0</property>\n      </properties>\n    </component>\n    <component bom-ref=\"os:debian@1.2.3\" type=\"operating-system\">\n      <name>debian</name>\n      <version>1.2.3</version>\n      <description>debian</description>\n      <swid tagId=\"debian\" name=\"debian\" version=\"1.2.3\"></swid>\n      <properties>\n        <property name=\"syft:distro:extendedSupport\">false</property>\n        <property name=\"syft:distro:id\">debian</property>\n        <property name=\"syft:distro:idLike:0\">like!</property>\n        <property name=\"syft:distro:prettyName\">debian</property>\n        <property name=\"syft:distro:versionID\">1.2.3</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/cyclonedxxml/testdata/snapshot/TestCycloneDxImageEncoder.golden",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bom xmlns=\"http://cyclonedx.org/schema/bom/1.6\" serialNumber=\"redacted\" version=\"1\">\n  <metadata>\n    <timestamp>redacted</timestamp>\n    <tools>\n      <components>\n        <component type=\"application\">\n          <author>anchore</author>\n          <name>syft</name>\n          <version>v0.42.0-bogus</version>\n        </component>\n      </components>\n    </tools>\n    <component bom-ref=\"redacted\" type=\"container\">\n      <name>user-image-input</name>\n      <version>sha256:redacted</version>\n    </component>\n  </metadata>\n  <components>\n    <component bom-ref=\"2f52f617f1548337\" type=\"library\">\n      <name>package-1</name>\n      <version>1.0.1</version>\n      <licenses>\n        <license>\n          <id>MIT</id>\n        </license>\n      </licenses>\n      <cpe>cpe:2.3:*:some:package:1:*:*:*:*:*:*:*</cpe>\n      <purl>a-purl-1</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">the-cataloger-1</property>\n        <property name=\"syft:package:language\">python</property>\n        <property name=\"syft:package:type\">python</property>\n        <property name=\"syft:package:metadataType\">python-package</property>\n        <property name=\"syft:location:0:layerID\">sha256:redacted</property>\n        <property name=\"syft:location:0:path\">/somefile-1.txt</property>\n      </properties>\n    </component>\n    <component bom-ref=\"pkg:deb/debian/package-2@2.0.1?package-id=4b756c6f6fb127a3\" type=\"library\">\n      <name>package-2</name>\n      <version>2.0.1</version>\n      <cpe>cpe:2.3:*:some:package:2:*:*:*:*:*:*:*</cpe>\n      <purl>pkg:deb/debian/package-2@2.0.1</purl>\n      <properties>\n        <property name=\"syft:package:foundBy\">the-cataloger-2</property>\n        <property name=\"syft:package:type\">deb</property>\n        <property name=\"syft:package:metadataType\">dpkg-db-entry</property>\n        <property name=\"syft:location:0:layerID\">sha256:redacted</property>\n        <property name=\"syft:location:0:path\">/somefile-2.txt</property>\n        <property name=\"syft:metadata:installedSize\">0</property>\n      </properties>\n    </component>\n    <component bom-ref=\"os:debian@1.2.3\" type=\"operating-system\">\n      <name>debian</name>\n      <version>1.2.3</version>\n      <description>debian</description>\n      <swid tagId=\"debian\" name=\"debian\" version=\"1.2.3\"></swid>\n      <properties>\n        <property name=\"syft:distro:extendedSupport\">false</property>\n        <property name=\"syft:distro:id\">debian</property>\n        <property name=\"syft:distro:idLike:0\">like!</property>\n        <property name=\"syft:distro:prettyName\">debian</property>\n        <property name=\"syft:distro:versionID\">1.2.3</property>\n      </properties>\n    </component>\n  </components>\n</bom>"
  },
  {
    "path": "syft/format/decoders.go",
    "content": "package format\n\nimport (\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/format/cpes\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/purls\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar staticDecoders sbom.FormatDecoder\n\nfunc init() {\n\tstaticDecoders = NewDecoderCollection(Decoders()...)\n}\n\nfunc Decoders() []sbom.FormatDecoder {\n\treturn []sbom.FormatDecoder{\n\t\tsyftjson.NewFormatDecoder(),\n\t\tcyclonedxxml.NewFormatDecoder(),\n\t\tcyclonedxjson.NewFormatDecoder(),\n\t\tspdxtagvalue.NewFormatDecoder(),\n\t\tspdxjson.NewFormatDecoder(),\n\t\tpurls.NewFormatDecoder(),\n\t\tcpes.NewFormatDecoder(),\n\t}\n}\n\n// Identify takes a set of bytes and attempts to identify the format of the SBOM.\nfunc Identify(reader io.Reader) (sbom.FormatID, string) {\n\treturn staticDecoders.Identify(reader)\n}\n\n// Decode takes a set of bytes and attempts to decode it into an SBOM.\nfunc Decode(reader io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treturn staticDecoders.Decode(reader)\n}\n"
  },
  {
    "path": "syft/format/decoders_collection.go",
    "content": "package format\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*DecoderCollection)(nil)\n\ntype DecoderCollection struct {\n\tdecoders []sbom.FormatDecoder\n}\n\nfunc NewDecoderCollection(decoders ...sbom.FormatDecoder) sbom.FormatDecoder {\n\treturn &DecoderCollection{\n\t\tdecoders: decoders,\n\t}\n}\n\n// Decode takes a set of bytes and attempts to decode it into an SBOM relative to the decoders in the collection.\nfunc (c *DecoderCollection) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\tif r == nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"no SBOM bytes provided\")\n\t}\n\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to create a seekable reader: %w\", err)\n\t}\n\n\tvar bestID sbom.FormatID\n\tfor _, d := range c.decoders {\n\t\t_, err = reader.Seek(0, io.SeekStart)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to seek to start of SBOM: %w\", err)\n\t\t}\n\t\tid, version := d.Identify(reader)\n\t\tif id == \"\" || version == \"\" {\n\t\t\tif id != \"\" {\n\t\t\t\tbestID = id\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t_, err = reader.Seek(0, io.SeekStart)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to seek to start of SBOM: %w\", err)\n\t\t}\n\t\treturn d.Decode(reader)\n\t}\n\n\tif bestID != \"\" {\n\t\treturn nil, bestID, \"\", fmt.Errorf(\"sbom format found to be %q but the version is not supported\", bestID)\n\t}\n\n\treturn nil, \"\", \"\", fmt.Errorf(\"sbom format not recognized\")\n}\n\n// Identify takes a set of bytes and attempts to identify the format of the SBOM relative to the decoders in the collection.\nfunc (c *DecoderCollection) Identify(r io.Reader) (sbom.FormatID, string) {\n\tif r == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to create a seekable reader: %v\", err)\n\t\treturn \"\", \"\"\n\t}\n\n\tfor _, d := range c.decoders {\n\t\t_, err = reader.Seek(0, io.SeekStart)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to seek to start of SBOM: %v\", err)\n\t\t}\n\t\tid, version := d.Identify(reader)\n\t\tif id != \"\" && version != \"\" {\n\t\t\treturn id, version\n\t\t}\n\t}\n\treturn \"\", \"\"\n}\n"
  },
  {
    "path": "syft/format/decoders_collection_test.go",
    "content": "package format\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestIdentify(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\tid      sbom.FormatID\n\t\tversion string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/alpine-syft.json\",\n\t\t\tid:      syftjson.ID,\n\t\t\tversion: \"1.1.0\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\treader, err := os.Open(test.fixture)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tid, version := Identify(reader)\n\t\t\tassert.Equal(t, test.id, id)\n\t\t\tassert.Equal(t, test.version, version)\n\n\t\t})\n\t}\n}\n\nfunc TestDecodeUnseekable(t *testing.T) {\n\treader, err := os.Open(\"spdxjson/testdata/spdx/example7-go-module.spdx.json\")\n\tassert.NoError(t, err)\n\n\t// io.NopCloser wraps the reader in a non-seekable type\n\tunseekableReader := io.NopCloser(reader)\n\t_, formatID, _, err := Decode(unseekableReader)\n\tassert.NoError(t, err)\n\tassert.Equal(t, spdxjson.ID, formatID)\n}\n\nfunc TestFormats_EmptyInput(t *testing.T) {\n\tfor _, format := range Decoders() {\n\t\tname := strings.Split(fmt.Sprintf(\"%#v\", format), \"{\")[0]\n\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tt.Run(\"Decode\", func(t *testing.T) {\n\t\t\t\tassert.NotPanics(t, func() {\n\t\t\t\t\tdecodedSBOM, _, _, err := format.Decode(nil)\n\t\t\t\t\tassert.Error(t, err)\n\t\t\t\t\tassert.Nil(t, decodedSBOM)\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tt.Run(\"Identify\", func(t *testing.T) {\n\t\t\t\tassert.NotPanics(t, func() {\n\t\t\t\t\tid, version := format.Identify(nil)\n\t\t\t\t\tassert.Empty(t, id)\n\t\t\t\t\tassert.Empty(t, version)\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/encoders.go",
    "content": "package format\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/github\"\n\t\"github.com/anchore/syft/syft/format/purls\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/format/table\"\n\t\"github.com/anchore/syft/syft/format/template\"\n\t\"github.com/anchore/syft/syft/format/text\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst AllVersions = \"all-versions\"\n\ntype EncodersConfig struct {\n\tTemplate      template.EncoderConfig\n\tSyftJSON      syftjson.EncoderConfig\n\tSPDXJSON      spdxjson.EncoderConfig\n\tSPDXTagValue  spdxtagvalue.EncoderConfig\n\tCyclonedxJSON cyclonedxjson.EncoderConfig\n\tCyclonedxXML  cyclonedxxml.EncoderConfig\n}\n\nfunc Encoders() []sbom.FormatEncoder {\n\tencs, _ := DefaultEncodersConfig().Encoders()\n\treturn encs\n}\n\nfunc DefaultEncodersConfig() EncodersConfig {\n\tcfg := EncodersConfig{\n\t\tTemplate:      template.DefaultEncoderConfig(),\n\t\tSyftJSON:      syftjson.DefaultEncoderConfig(),\n\t\tSPDXJSON:      spdxjson.DefaultEncoderConfig(),\n\t\tSPDXTagValue:  spdxtagvalue.DefaultEncoderConfig(),\n\t\tCyclonedxJSON: cyclonedxjson.DefaultEncoderConfig(),\n\t\tCyclonedxXML:  cyclonedxxml.DefaultEncoderConfig(),\n\t}\n\n\t// empty value means to support all versions\n\tcfg.SPDXJSON.Version = AllVersions\n\tcfg.SPDXTagValue.Version = AllVersions\n\tcfg.CyclonedxJSON.Version = AllVersions\n\tcfg.CyclonedxXML.Version = AllVersions\n\n\treturn cfg\n}\n\nfunc (o EncodersConfig) Encoders() ([]sbom.FormatEncoder, error) {\n\tvar l encodersList\n\n\tif o.Template.TemplatePath != \"\" {\n\t\tl.addWithErr(template.ID)(o.templateEncoders())\n\t}\n\n\tl.addWithErr(syftjson.ID)(o.syftJSONEncoders())\n\tl.add(table.ID)(table.NewFormatEncoder())\n\tl.add(text.ID)(text.NewFormatEncoder())\n\tl.add(purls.ID)(purls.NewFormatEncoder())\n\tl.add(github.ID)(github.NewFormatEncoder())\n\tl.addWithErr(cyclonedxxml.ID)(o.cyclonedxXMLEncoders())\n\tl.addWithErr(cyclonedxjson.ID)(o.cyclonedxJSONEncoders())\n\tl.addWithErr(spdxjson.ID)(o.spdxJSONEncoders())\n\tl.addWithErr(spdxtagvalue.ID)(o.spdxTagValueEncoders())\n\n\treturn l.encoders, l.err\n}\n\nfunc (o EncodersConfig) templateEncoders() ([]sbom.FormatEncoder, error) {\n\tenc, err := template.NewFormatEncoder(o.Template)\n\treturn []sbom.FormatEncoder{enc}, err\n}\n\nfunc (o EncodersConfig) syftJSONEncoders() ([]sbom.FormatEncoder, error) {\n\tenc, err := syftjson.NewFormatEncoderWithConfig(o.SyftJSON)\n\treturn []sbom.FormatEncoder{enc}, err\n}\n\nfunc (o EncodersConfig) cyclonedxXMLEncoders() ([]sbom.FormatEncoder, error) {\n\tvar (\n\t\tencs []sbom.FormatEncoder\n\t\terrs error\n\t)\n\n\tcfg := o.CyclonedxXML\n\n\tvar versions []string\n\tif cfg.Version == AllVersions {\n\t\tversions = cyclonedxxml.SupportedVersions()\n\t} else {\n\t\tversions = []string{cfg.Version}\n\t}\n\n\tfor _, v := range versions {\n\t\tcfg.Version = v\n\t\tenc, err := cyclonedxxml.NewFormatEncoderWithConfig(cfg)\n\t\tif err != nil {\n\t\t\terrs = multierror.Append(errs, err)\n\t\t} else {\n\t\t\tencs = append(encs, enc)\n\t\t}\n\t}\n\treturn encs, errs\n}\n\nfunc (o EncodersConfig) cyclonedxJSONEncoders() ([]sbom.FormatEncoder, error) {\n\tvar (\n\t\tencs []sbom.FormatEncoder\n\t\terrs error\n\t)\n\n\tcfg := o.CyclonedxJSON\n\n\tvar versions []string\n\tif cfg.Version == AllVersions {\n\t\tversions = cyclonedxjson.SupportedVersions()\n\t} else {\n\t\tversions = []string{cfg.Version}\n\t}\n\n\tfor _, v := range versions {\n\t\tcfg.Version = v\n\t\tenc, err := cyclonedxjson.NewFormatEncoderWithConfig(cfg)\n\t\tif err != nil {\n\t\t\terrs = multierror.Append(errs, err)\n\t\t} else {\n\t\t\tencs = append(encs, enc)\n\t\t}\n\t}\n\treturn encs, errs\n}\n\nfunc (o EncodersConfig) spdxJSONEncoders() ([]sbom.FormatEncoder, error) {\n\tvar (\n\t\tencs []sbom.FormatEncoder\n\t\terrs error\n\t)\n\n\tcfg := o.SPDXJSON\n\n\tvar versions []string\n\tif cfg.Version == AllVersions {\n\t\tversions = spdxjson.SupportedVersions()\n\t} else {\n\t\tversions = []string{cfg.Version}\n\t}\n\n\tfor _, v := range versions {\n\t\tcfg.Version = v\n\t\tenc, err := spdxjson.NewFormatEncoderWithConfig(cfg)\n\t\tif err != nil {\n\t\t\terrs = multierror.Append(errs, err)\n\t\t} else {\n\t\t\tencs = append(encs, enc)\n\t\t}\n\t}\n\treturn encs, errs\n}\n\nfunc (o EncodersConfig) spdxTagValueEncoders() ([]sbom.FormatEncoder, error) {\n\tvar (\n\t\tencs []sbom.FormatEncoder\n\t\terrs error\n\t)\n\n\tcfg := o.SPDXTagValue\n\n\tvar versions []string\n\tif cfg.Version == AllVersions {\n\t\tversions = spdxtagvalue.SupportedVersions()\n\t} else {\n\t\tversions = []string{cfg.Version}\n\t}\n\n\tfor _, v := range versions {\n\t\tcfg.Version = v\n\t\tenc, err := spdxtagvalue.NewFormatEncoderWithConfig(cfg)\n\t\tif err != nil {\n\t\t\terrs = multierror.Append(errs, err)\n\t\t} else {\n\t\t\tencs = append(encs, enc)\n\t\t}\n\t}\n\treturn encs, errs\n}\n\ntype encodersList struct {\n\tencoders []sbom.FormatEncoder\n\terr      error\n}\n\nfunc (l *encodersList) addWithErr(name sbom.FormatID) func([]sbom.FormatEncoder, error) {\n\treturn func(encs []sbom.FormatEncoder, err error) {\n\t\tif err != nil {\n\t\t\tl.err = multierror.Append(l.err, fmt.Errorf(\"unable to configure %q format encoder: %w\", name, err))\n\t\t\treturn\n\t\t}\n\t\tfor _, enc := range encs {\n\t\t\tif enc == nil {\n\t\t\t\tl.err = multierror.Append(l.err, fmt.Errorf(\"unable to configure %q format encoder: nil encoder returned\", name))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tl.encoders = append(l.encoders, enc)\n\t\t}\n\t}\n}\n\nfunc (l *encodersList) add(name sbom.FormatID) func(...sbom.FormatEncoder) {\n\treturn func(encs ...sbom.FormatEncoder) {\n\t\tfor _, enc := range encs {\n\t\t\tif enc == nil {\n\t\t\t\tl.err = multierror.Append(l.err, fmt.Errorf(\"unable to configure %q format encoder: nil encoder returned\", name))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tl.encoders = append(l.encoders, enc)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/format/encoders_collection.go",
    "content": "package format\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\ntype EncoderCollection struct {\n\tencoders []sbom.FormatEncoder\n}\n\nfunc NewEncoderCollection(encoders ...sbom.FormatEncoder) *EncoderCollection {\n\treturn &EncoderCollection{\n\t\tencoders: encoders,\n\t}\n}\n\n// IDs returns all format IDs represented in the collection.\nfunc (e EncoderCollection) IDs() []sbom.FormatID {\n\tidSet := strset.New()\n\tfor _, f := range e.encoders {\n\t\tidSet.Add(string(f.ID()))\n\t}\n\n\tidList := idSet.List()\n\tsort.Strings(idList)\n\n\tvar ids []sbom.FormatID\n\tfor _, id := range idList {\n\t\tids = append(ids, sbom.FormatID(id))\n\t}\n\n\treturn ids\n}\n\n// NameVersions returns all formats that are supported by the collection as a list of \"name@version\" strings.\nfunc (e EncoderCollection) NameVersions() []string {\n\tset := strset.New()\n\tfor _, f := range e.encoders {\n\t\tif f.Version() == sbom.AnyVersion {\n\t\t\tset.Add(string(f.ID()))\n\t\t} else {\n\t\t\tset.Add(fmt.Sprintf(\"%s@%s\", f.ID(), f.Version()))\n\t\t}\n\t}\n\n\tlist := set.List()\n\tsort.Strings(list)\n\n\treturn list\n}\n\n// Aliases returns all format aliases represented in the collection (where an ID would be \"spdx-tag-value\" the alias would be \"spdx\").\nfunc (e EncoderCollection) Aliases() []string {\n\taliases := strset.New()\n\tfor _, f := range e.encoders {\n\t\taliases.Add(f.Aliases()...)\n\t}\n\tlst := aliases.List()\n\tsort.Strings(lst)\n\treturn lst\n}\n\n// Get returns the contained encoder for a given format name and version.\nfunc (e EncoderCollection) Get(name string, version string) sbom.FormatEncoder {\n\tlog.WithFields(\"name\", name, \"version\", version).Trace(\"looking for matching encoder\")\n\n\tname = cleanFormatName(name)\n\tvar mostRecentFormat sbom.FormatEncoder\n\n\tfor _, f := range e.encoders {\n\t\tlog.WithFields(\"name\", f.ID(), \"version\", f.Version(), \"aliases\", f.Aliases()).Trace(\"considering format\")\n\t\tnames := []string{string(f.ID())}\n\t\tnames = append(names, f.Aliases()...)\n\t\tfor _, n := range names {\n\t\t\tif cleanFormatName(n) == name && versionMatches(f.Version(), version) {\n\t\t\t\tif mostRecentFormat == nil || f.Version() > mostRecentFormat.Version() {\n\t\t\t\t\tmostRecentFormat = f\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif mostRecentFormat != nil {\n\t\tlog.WithFields(\"name\", mostRecentFormat.ID(), \"version\", mostRecentFormat.Version()).Trace(\"found matching encoder\")\n\t} else {\n\t\tlog.WithFields(\"search-name\", name, \"search-version\", version).Trace(\"no matching encoder found\")\n\t}\n\n\treturn mostRecentFormat\n}\n\n// GetByString accepts a name@version string, such as:\n//   - json\n//   - spdx-json@2.1\n//   - cdx@1.5\nfunc (e EncoderCollection) GetByString(s string) sbom.FormatEncoder {\n\tparts := strings.SplitN(s, \"@\", 2)\n\tversion := sbom.AnyVersion\n\tif len(parts) > 1 {\n\t\tversion = parts[1]\n\t}\n\treturn e.Get(parts[0], version)\n}\n\nfunc versionMatches(version string, match string) bool {\n\tif version == sbom.AnyVersion || match == sbom.AnyVersion {\n\t\treturn true\n\t}\n\n\tmatch = strings.ReplaceAll(match, \".\", \"\\\\.\")\n\tmatch = strings.ReplaceAll(match, \"*\", \".*\")\n\tmatch = fmt.Sprintf(\"^%s(\\\\..*)*$\", match)\n\tmatcher, err := regexp.Compile(match)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn matcher.MatchString(version)\n}\n\nfunc cleanFormatName(name string) string {\n\tr := strings.NewReplacer(\"-\", \"\", \"_\", \"\")\n\treturn strings.ToLower(r.Replace(name))\n}\n\n// Encode takes all SBOM elements and a format option and encodes an SBOM document.\nfunc Encode(s sbom.SBOM, f sbom.FormatEncoder) ([]byte, error) {\n\tbuff := bytes.Buffer{}\n\n\tif err := f.Encode(&buff, s); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to encode sbom: %w\", err)\n\t}\n\n\treturn buff.Bytes(), nil\n}\n"
  },
  {
    "path": "syft/format/encoders_collection_test.go",
    "content": "package format\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_versionMatches(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tversion string\n\t\tmatch   string\n\t\tmatches bool\n\t}{\n\t\t{\n\t\t\tname:    \"any version matches number\",\n\t\t\tversion: string(sbom.AnyVersion),\n\t\t\tmatch:   \"6\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"number matches any version\",\n\t\t\tversion: \"6\",\n\t\t\tmatch:   string(sbom.AnyVersion),\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"same number matches\",\n\t\t\tversion: \"3\",\n\t\t\tmatch:   \"3\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"same major number matches\",\n\t\t\tversion: \"3.1\",\n\t\t\tmatch:   \"3\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"same minor number matches\",\n\t\t\tversion: \"3.1\",\n\t\t\tmatch:   \"3.1\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"wildcard-version matches minor\",\n\t\t\tversion: \"7.1.3\",\n\t\t\tmatch:   \"7.*\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"wildcard-version matches patch\",\n\t\t\tversion: \"7.4.8\",\n\t\t\tmatch:   \"7.4.*\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version matches major\",\n\t\t\tversion: \"7.19.11\",\n\t\t\tmatch:   \"7\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version matches minor\",\n\t\t\tversion: \"7.55.2\",\n\t\t\tmatch:   \"7.55\",\n\t\t\tmatches: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version matches patch\",\n\t\t\tversion: \"7.32.6\",\n\t\t\tmatch:   \"7.32.6\",\n\t\t\tmatches: true,\n\t\t},\n\t\t// negative tests\n\t\t{\n\t\t\tname:    \"different number does not match\",\n\t\t\tversion: \"3\",\n\t\t\tmatch:   \"4\",\n\t\t\tmatches: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version doesn't match major\",\n\t\t\tversion: \"7.2.5\",\n\t\t\tmatch:   \"8.2.5\",\n\t\t\tmatches: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version doesn't match minor\",\n\t\t\tversion: \"7.2.9\",\n\t\t\tmatch:   \"7.1\",\n\t\t\tmatches: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"sub-version doesn't match patch\",\n\t\t\tversion: \"7.32.6\",\n\t\t\tmatch:   \"7.32.5\",\n\t\t\tmatches: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tmatches := versionMatches(test.version, test.match)\n\t\t\tassert.Equal(t, test.matches, matches)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/encoders_test.go",
    "content": "package format\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/internal/cyclonedxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/format/template\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_Encoders(t *testing.T) {\n\t// this is an explicit test that the default encoders and encoders are the same and does not error\n\tencs, err := DefaultEncodersConfig().Encoders()\n\trequire.NoError(t, err)\n\tassert.NotEmpty(t, encs)\n\n\texpected := expectedDefaultEncoders()\n\tassertHasEncoders(t, expected, encs)\n\tassertHasEncoders(t, expected, Encoders())\n}\n\nfunc expectedDefaultEncoders() *strset.Set {\n\texpected := strset.New()\n\t// note: template is not expected in the default encoders\n\texpected.Add(\"syft-json@\" + internal.JSONSchemaVersion) // TODO: support multiple versions\n\texpected.Add(\"syft-table@\")                             // no version\n\texpected.Add(\"syft-text@\")                              // no version\n\texpected.Add(\"github-json@\")                            // no version\n\texpected.Add(\"purls@\")                                  // no version\n\tfor _, v := range spdxjson.SupportedVersions() {\n\t\texpected.Add(\"spdx-json@\" + v)\n\t}\n\tfor _, v := range spdxtagvalue.SupportedVersions() {\n\t\texpected.Add(\"spdx-tag-value@\" + v)\n\t}\n\tfor _, v := range cyclonedxjson.SupportedVersions() {\n\t\texpected.Add(\"cyclonedx-json@\" + v)\n\t}\n\tfor _, v := range cyclonedxxml.SupportedVersions() {\n\t\texpected.Add(\"cyclonedx-xml@\" + v)\n\t}\n\treturn expected\n}\n\nfunc assertHasEncoders(t *testing.T, expected *strset.Set, encs []sbom.FormatEncoder) {\n\tfor _, enc := range encs {\n\t\tassert.True(t, expected.Has(string(enc.ID())+\"@\"+enc.Version()), \"missing: \"+string(enc.ID())+\"@\"+enc.Version())\n\t}\n\n\tif t.Failed() {\n\t\tt.Log(\"got encoders:\")\n\t\tfor _, enc := range encs {\n\t\t\tt.Log(\" - \" + string(enc.ID()) + \"@\" + enc.Version())\n\t\t}\n\t}\n}\n\nfunc TestEncodersConfig_Encoders(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     EncodersConfig\n\t\twant    *strset.Set\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"default\",\n\t\t\tcfg:  DefaultEncodersConfig(),\n\t\t\twant: expectedDefaultEncoders(),\n\t\t},\n\t\t{\n\t\t\tname: \"with template\",\n\t\t\tcfg: func() EncodersConfig {\n\t\t\t\tcfg := DefaultEncodersConfig()\n\t\t\t\tcfg.Template.TemplatePath = \"foo\"\n\t\t\t\treturn cfg\n\t\t\t}(),\n\t\t\twant: func() *strset.Set {\n\t\t\t\texpected := expectedDefaultEncoders()\n\t\t\t\texpected.Add(\"template@\")\n\t\t\t\treturn expected\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"explicit versions template\",\n\t\t\tcfg: EncodersConfig{\n\t\t\t\tTemplate:      template.DefaultEncoderConfig(),\n\t\t\t\tSyftJSON:      syftjson.DefaultEncoderConfig(),\n\t\t\t\tSPDXJSON:      spdxjson.DefaultEncoderConfig(),\n\t\t\t\tSPDXTagValue:  spdxtagvalue.DefaultEncoderConfig(),\n\t\t\t\tCyclonedxJSON: cyclonedxjson.DefaultEncoderConfig(),\n\t\t\t\tCyclonedxXML:  cyclonedxxml.DefaultEncoderConfig(),\n\t\t\t},\n\t\t\twant: func() *strset.Set {\n\t\t\t\texpected := strset.New()\n\t\t\t\t// note: template is not expected in the default encoders\n\t\t\t\texpected.Add(\"syft-json@\" + internal.JSONSchemaVersion) // TODO: support multiple versions\n\t\t\t\texpected.Add(\"syft-table@\")                             // no version\n\t\t\t\texpected.Add(\"syft-text@\")                              // no version\n\t\t\t\texpected.Add(\"github-json@\")                            // no version\n\t\t\t\texpected.Add(\"purls@\")                                  // no version\n\t\t\t\texpected.Add(\"spdx-json@\" + spdxutil.DefaultVersion)\n\t\t\t\texpected.Add(\"spdx-tag-value@\" + spdxutil.DefaultVersion)\n\t\t\t\texpected.Add(\"cyclonedx-json@\" + cyclonedxutil.DefaultVersion)\n\t\t\t\texpected.Add(\"cyclonedx-xml@\" + cyclonedxutil.DefaultVersion)\n\n\t\t\t\treturn expected\n\t\t\t}(),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tgot, err := tt.cfg.Encoders()\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassertHasEncoders(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/github/encoder.go",
    "content": "package github\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/format/github/internal/model\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID sbom.FormatID = \"github-json\"\n\ntype encoder struct {\n}\n\nfunc NewFormatEncoder() sbom.FormatEncoder {\n\treturn encoder{}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"github\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tbom := model.ToGithubModel(&s)\n\n\tenc := json.NewEncoder(writer)\n\tenc.SetEscapeHTML(false)\n\tenc.SetIndent(\"\", \"  \")\n\n\treturn enc.Encode(bom)\n}\n"
  },
  {
    "path": "syft/format/github/encoder_test.go",
    "content": "package github\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-github\", false, \"update the *.golden files for github encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc TestGithubDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestGithubImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage),\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// dates\n\t\t\t\t`\"scanned\":\\s*\"[^\"]+\"`: `\"scanned\":\"redacted\"`,\n\n\t\t\t\t// image metadata\n\t\t\t\t`\"syft:filesystem\":\\s*\"[^\"]+\"`: `\"syft:filesystem\":\"redacted\"`,\n\t\t\t},\n\t\t)\n}\n"
  },
  {
    "path": "syft/format/github/internal/model/github_dependency_api.go",
    "content": "package model\n\n// Derived from: https://gist.github.com/reiddraper/fdab2883db0f372c146d1a750fc1c43f\n\ntype DependencySnapshot struct {\n\tVersion   int              `json:\"version\"`\n\tJob       Job              `json:\"job,omitempty\"` // !omitempty\n\tSha       string           `json:\"sha,omitempty\"` // !omitempty sha of the Git commit\n\tRef       string           `json:\"ref,omitempty\"` // !omitempty ref of the Git commit example \"refs/heads/main\"\n\tDetector  DetectorMetadata `json:\"detector,omitempty\"`\n\tMetadata  Metadata         `json:\"metadata,omitempty\"`\n\tManifests Manifests        `json:\"manifests,omitempty\"`\n\tScanned   ISO8601Date      `json:\"scanned,omitempty\"`\n}\n\ntype Job struct {\n\tCorrelator string `json:\"correlator,omitempty\"` // !omitempty\n\tID         string `json:\"id,omitempty\"`         // !omitempty\n\tHTMLURL    string `json:\"html_url,omitempty\"`\n}\n\ntype DetectorMetadata struct {\n\tName    string `json:\"name,omitempty\"`\n\tURL     string `json:\"url,omitempty\"`\n\tVersion string `json:\"version,omitempty\"`\n}\n\ntype Manifests map[string]Manifest\n\n// Manifest A collection of related dependencies, either declared in a file,\n// or representing a logical group of dependencies.\ntype Manifest struct {\n\tName     string          `json:\"name\"`\n\tFile     FileInfo        `json:\"file\"`\n\tMetadata Metadata        `json:\"metadata,omitempty\"`\n\tResolved DependencyGraph `json:\"resolved,omitempty\"`\n}\n\ntype FileInfo struct {\n\tSourceLocation string `json:\"source_location,omitempty\"`\n}\n\n// DependencyRelationship A notation of whether a dependency is requested directly\n// by this manifest, or is a dependency of another dependency.\ntype DependencyRelationship string\n\nconst (\n\tDependencyRelationshipDirect   DependencyRelationship = \"direct\"\n\tDependencyRelationshipIndirect DependencyRelationship = \"indirect\"\n)\n\n// DependencyScope A notation of whether the dependency is required for the primary\n// build artifact (runtime), or is only used for development.\n// Future versions of this specification may allow for more granular\n// scopes, like `runtimeserver`, `runtimeshipped`,\n// `developmenttest`, `developmentbenchmark`.\ntype DependencyScope string\n\nconst (\n\tDependencyScopeRuntime     DependencyScope = \"runtime\"\n\tDependencyScopeDevelopment DependencyScope = \"development\"\n)\n\ntype DependencyNode struct {\n\tPackageURL   string                 `json:\"package_url,omitempty\"`\n\tMetadata     Metadata               `json:\"metadata,omitempty\"`\n\tRelationship DependencyRelationship `json:\"relationship,omitempty\"`\n\tScope        DependencyScope        `json:\"scope,omitempty\"`\n\tDependencies []string               `json:\"dependencies,omitempty\"`\n}\n\ntype DependencyGraph map[string]DependencyNode\n\ntype ISO8601Date = string\n\ntype Scalar interface{} // should be: null | boolean | string | number\n\ntype Metadata map[string]Scalar\n"
  },
  {
    "path": "syft/format/github/internal/model/model.go",
    "content": "package model\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// ToGithubModel converts the provided SBOM to a GitHub dependency model\nfunc ToGithubModel(s *sbom.SBOM) DependencySnapshot {\n\tscanTime := time.Now().Format(time.RFC3339) // TODO is there a record of this somewhere?\n\tv := s.Descriptor.Version\n\tif v == \"[not provided]\" || v == \"\" {\n\t\tv = \"0.0.0-dev\"\n\t}\n\treturn DependencySnapshot{\n\t\tVersion: 0,\n\t\t// TODO allow property input to specify the Job, Sha, and Ref\n\t\tDetector: DetectorMetadata{\n\t\t\tName:    s.Descriptor.Name,\n\t\t\tURL:     \"https://github.com/anchore/syft\",\n\t\t\tVersion: v,\n\t\t},\n\t\tMetadata:  toSnapshotMetadata(s),\n\t\tManifests: toGithubManifests(s),\n\t\tScanned:   scanTime,\n\t}\n}\n\n// toSnapshotMetadata captures the linux distribution information and other metadata\nfunc toSnapshotMetadata(s *sbom.SBOM) Metadata {\n\tout := Metadata{}\n\n\tif s.Artifacts.LinuxDistribution != nil {\n\t\td := s.Artifacts.LinuxDistribution\n\t\tqualifiers := packageurl.Qualifiers{}\n\t\tif len(d.IDLike) > 0 {\n\t\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\t\tKey:   \"like\",\n\t\t\t\tValue: strings.Join(d.IDLike, \",\"),\n\t\t\t})\n\t\t}\n\t\tpurl := packageurl.NewPackageURL(\"generic\", \"\", d.ID, d.VersionID, qualifiers, \"\")\n\t\tout[\"syft:distro\"] = purl.ToString()\n\t}\n\n\treturn out\n}\n\nfunc filesystem(p pkg.Package) string {\n\tlocations := p.Locations.ToSlice()\n\tif len(locations) > 0 {\n\t\treturn locations[0].FileSystemID\n\t}\n\treturn \"\"\n}\n\n// toGithubManifests manifests, each of which represents a specific location that has dependencies\nfunc toGithubManifests(s *sbom.SBOM) Manifests {\n\tmanifests := map[string]*Manifest{}\n\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\tpath := toPath(s.Source, p)\n\t\tmanifest, ok := manifests[path]\n\t\tif !ok {\n\t\t\tmanifest = &Manifest{\n\t\t\t\tName: path,\n\t\t\t\tFile: FileInfo{\n\t\t\t\t\tSourceLocation: path,\n\t\t\t\t},\n\t\t\t\tResolved: DependencyGraph{},\n\t\t\t}\n\t\t\tfs := filesystem(p)\n\t\t\tif fs != \"\" {\n\t\t\t\tmanifest.Metadata = Metadata{\n\t\t\t\t\t\"syft:filesystem\": fs,\n\t\t\t\t}\n\t\t\t}\n\t\t\tmanifests[path] = manifest\n\t\t}\n\n\t\tname := dependencyName(p)\n\t\tif name == \"\" || p.PURL == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tmanifest.Resolved[name] = DependencyNode{\n\t\t\tPackageURL:   p.PURL,\n\t\t\tMetadata:     toDependencyMetadata(p),\n\t\t\tRelationship: toDependencyRelationshipType(p),\n\t\t\tScope:        toDependencyScope(p),\n\t\t\tDependencies: toDependencies(s, p),\n\t\t}\n\t}\n\n\tout := Manifests{}\n\tfor k, v := range manifests {\n\t\tout[k] = *v\n\t}\n\treturn out\n}\n\n// toPath Generates a string representation of the package location, optionally including the layer hash\nfunc toPath(s source.Description, p pkg.Package) string {\n\tinputPath := trimRelative(s.Name)\n\tlocations := p.Locations.ToSlice()\n\tif len(locations) > 0 {\n\t\tlocation := locations[0]\n\t\tpackagePath := location.RealPath\n\t\tif location.AccessPath != \"\" {\n\t\t\tpackagePath = location.AccessPath\n\t\t}\n\t\tpackagePath = strings.TrimPrefix(packagePath, \"/\")\n\t\tswitch metadata := s.Metadata.(type) {\n\t\tcase source.ImageMetadata:\n\t\t\timage := strings.ReplaceAll(metadata.UserInput, \":/\", \"//\")\n\t\t\treturn fmt.Sprintf(\"%s:/%s\", image, packagePath)\n\t\tcase source.OCIModelMetadata:\n\t\t\timage := strings.ReplaceAll(metadata.UserInput, \":/\", \"//\")\n\t\t\treturn fmt.Sprintf(\"%s:/%s\", image, packagePath)\n\t\tcase source.FileMetadata:\n\t\t\tpath := trimRelative(metadata.Path)\n\t\t\tif isArchive(metadata.Path) {\n\t\t\t\treturn fmt.Sprintf(\"%s:/%s\", path, packagePath)\n\t\t\t}\n\t\t\treturn path\n\t\tcase source.DirectoryMetadata:\n\t\t\tpath := trimRelative(metadata.Path)\n\t\t\tif path != \"\" {\n\t\t\t\treturn fmt.Sprintf(\"%s/%s\", path, packagePath)\n\t\t\t}\n\t\t\treturn packagePath\n\t\tcase source.SnapMetadata:\n\t\t\tif inputPath != \"\" {\n\t\t\t\treturn fmt.Sprintf(\"%s:/%s\", inputPath, packagePath)\n\t\t\t}\n\t\t\treturn packagePath\n\t\t}\n\t}\n\treturn inputPath\n}\n\nfunc trimRelative(s string) string {\n\ts = strings.TrimPrefix(s, \"./\")\n\tif s == \".\" {\n\t\ts = \"\"\n\t}\n\treturn s\n}\n\n// isArchive returns true if the path appears to be an archive\nfunc isArchive(path string) bool {\n\tformat, _, err := file.IdentifyArchive(context.Background(), path, nil)\n\treturn err == nil && format != nil\n}\n\nfunc toDependencies(s *sbom.SBOM, p pkg.Package) (out []string) {\n\tfor _, r := range s.Relationships {\n\t\tif r.From.ID() == p.ID() {\n\t\t\tif p, ok := r.To.(pkg.Package); ok {\n\t\t\t\tout = append(out, dependencyName(p))\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\n// dependencyName to make things a little nicer to read; this might end up being lossy\nfunc dependencyName(p pkg.Package) string {\n\tpurl, err := packageurl.FromString(p.PURL)\n\tif err != nil {\n\t\tlog.Debugf(\"Invalid PURL for package: '%s' PURL: '%s' (%w)\", p.Name, p.PURL, err)\n\t\treturn \"\"\n\t}\n\t// don't use qualifiers for this\n\tpurl.Qualifiers = nil\n\treturn purl.ToString()\n}\n\nfunc toDependencyScope(_ pkg.Package) DependencyScope {\n\treturn DependencyScopeRuntime\n}\n\nfunc toDependencyRelationshipType(_ pkg.Package) DependencyRelationship {\n\treturn DependencyRelationshipDirect\n}\n\nfunc toDependencyMetadata(_ pkg.Package) Metadata {\n\t// We have limited properties: up to 8 with reasonably small values\n\t// For now, we are encoding the location as part of the key, we are encoding PURLs with most\n\t// of the other information Grype might need; and the distro information at the top level\n\t// so we don't need anything here yet\n\treturn Metadata{}\n}\n"
  },
  {
    "path": "syft/format/github/internal/model/model_test.go",
    "content": "package model\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc sbomFixture() sbom.SBOM {\n\ts := sbom.SBOM{\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName: \"syft\",\n\t\t},\n\t\tSource: source.Description{\n\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\tUserInput:    \"ubuntu:18.04\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t},\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tID:        \"ubuntu\",\n\t\t\t\tVersionID: \"18.04\",\n\t\t\t\tIDLike:    []string{\"debian\"},\n\t\t\t},\n\t\t\tPackages: pkg.NewCollection(),\n\t\t},\n\t}\n\tfor _, p := range []pkg.Package{\n\t\t{\n\t\t\tName:    \"pkg-1\",\n\t\t\tVersion: \"1.0.1\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/usr/lib\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:    \"pkg-2\",\n\t\t\tVersion: \"2.0.2\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/usr/lib\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:    \"pkg-3\",\n\t\t\tVersion: \"3.0.3\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/etc\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t),\n\t\t},\n\t} {\n\t\tp.PURL = packageurl.NewPackageURL(\n\t\t\t\"generic\",\n\t\t\t\"\",\n\t\t\tp.Name,\n\t\t\tp.Version,\n\t\t\tnil,\n\t\t\t\"\",\n\t\t).ToString()\n\t\ts.Artifacts.Packages.Add(p)\n\t}\n\n\treturn s\n}\n\nfunc Test_toGithubModel(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata any\n\t\ttestPath string\n\t\texpected *DependencySnapshot\n\t}{\n\t\t{\n\t\t\tname: \"image\",\n\t\t\texpected: &DependencySnapshot{\n\t\t\t\tVersion: 0,\n\t\t\t\tDetector: DetectorMetadata{\n\t\t\t\t\tName:    \"syft\",\n\t\t\t\t\tVersion: \"0.0.0-dev\",\n\t\t\t\t\tURL:     \"https://github.com/anchore/syft\",\n\t\t\t\t},\n\t\t\t\tMetadata: Metadata{\n\t\t\t\t\t\"syft:distro\": \"pkg:generic/ubuntu@18.04?like=debian\",\n\t\t\t\t},\n\t\t\t\t//Scanned: actual.Scanned,\n\t\t\t\tManifests: Manifests{\n\t\t\t\t\t\"ubuntu:18.04:/usr/lib\": Manifest{\n\t\t\t\t\t\tName: \"ubuntu:18.04:/usr/lib\",\n\t\t\t\t\t\tFile: FileInfo{\n\t\t\t\t\t\t\tSourceLocation: \"ubuntu:18.04:/usr/lib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMetadata: Metadata{\n\t\t\t\t\t\t\t\"syft:filesystem\": \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResolved: DependencyGraph{\n\t\t\t\t\t\t\t\"pkg:generic/pkg-1@1.0.1\": DependencyNode{\n\t\t\t\t\t\t\t\tPackageURL:   \"pkg:generic/pkg-1@1.0.1\",\n\t\t\t\t\t\t\t\tScope:        DependencyScopeRuntime,\n\t\t\t\t\t\t\t\tRelationship: DependencyRelationshipDirect,\n\t\t\t\t\t\t\t\tMetadata:     Metadata{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"pkg:generic/pkg-2@2.0.2\": DependencyNode{\n\t\t\t\t\t\t\t\tPackageURL:   \"pkg:generic/pkg-2@2.0.2\",\n\t\t\t\t\t\t\t\tScope:        DependencyScopeRuntime,\n\t\t\t\t\t\t\t\tRelationship: DependencyRelationshipDirect,\n\t\t\t\t\t\t\t\tMetadata:     Metadata{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"ubuntu:18.04:/etc\": Manifest{\n\t\t\t\t\t\tName: \"ubuntu:18.04:/etc\",\n\t\t\t\t\t\tFile: FileInfo{\n\t\t\t\t\t\t\tSourceLocation: \"ubuntu:18.04:/etc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMetadata: Metadata{\n\t\t\t\t\t\t\t\"syft:filesystem\": \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResolved: DependencyGraph{\n\t\t\t\t\t\t\t\"pkg:generic/pkg-3@3.0.3\": DependencyNode{\n\t\t\t\t\t\t\t\tPackageURL:   \"pkg:generic/pkg-3@3.0.3\",\n\t\t\t\t\t\t\t\tScope:        DependencyScopeRuntime,\n\t\t\t\t\t\t\t\tRelationship: DependencyRelationshipDirect,\n\t\t\t\t\t\t\t\tMetadata:     Metadata{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"current directory\",\n\t\t\tmetadata: source.DirectoryMetadata{Path: \".\"},\n\t\t\ttestPath: \"etc\",\n\t\t},\n\t\t{\n\t\t\tname:     \"relative directory\",\n\t\t\tmetadata: source.DirectoryMetadata{Path: \"./artifacts\"},\n\t\t\ttestPath: \"artifacts/etc\",\n\t\t},\n\t\t{\n\t\t\tname:     \"absolute directory\",\n\t\t\tmetadata: source.DirectoryMetadata{Path: \"/artifacts\"},\n\t\t\ttestPath: \"/artifacts/etc\",\n\t\t},\n\t\t{\n\t\t\tname:     \"file\",\n\t\t\tmetadata: source.FileMetadata{Path: \"./executable\"},\n\t\t\ttestPath: \"executable\",\n\t\t},\n\t\t{\n\t\t\tname:     \"archive\",\n\t\t\tmetadata: source.FileMetadata{Path: \"./archive.tar.gz\"},\n\t\t\ttestPath: \"archive.tar.gz:/etc\",\n\t\t},\n\t\t{\n\t\t\tname:     \"snap\",\n\t\t\tmetadata: source.SnapMetadata{},\n\t\t\ttestPath: \"name:/etc\",\n\t\t},\n\t\t{\n\t\t\tname:     \"oci-model\",\n\t\t\tmetadata: source.OCIModelMetadata{UserInput: \"model-repo/llama:latest\"},\n\t\t\ttestPath: \"model-repo/llama:latest:/etc\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ts := sbomFixture()\n\n\t\t\tif test.metadata != nil {\n\t\t\t\ts.Source.Name = \"name\"\n\t\t\t\ts.Source.Metadata = test.metadata\n\t\t\t}\n\t\t\tactual := ToGithubModel(&s)\n\n\t\t\tif test.expected != nil {\n\t\t\t\tif d := cmp.Diff(*test.expected, actual, cmpopts.IgnoreFields(DependencySnapshot{}, \"Scanned\")); d != \"\" {\n\t\t\t\t\tt.Errorf(\"unexpected result (-want +got):\\n%s\", d)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tassert.Equal(t, test.testPath, actual.Manifests[test.testPath].Name)\n\n\t\t\t// track each scheme tested (passed or not)\n\t\t\ttracker.Tested(t, s.Source.Metadata)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/github/testdata/snapshot/TestGithubDirectoryEncoder.golden",
    "content": "{\n  \"version\": 0,\n  \"job\": {},\n  \"detector\": {\n    \"name\": \"syft\",\n    \"url\": \"https://github.com/anchore/syft\",\n    \"version\": \"v0.42.0-bogus\"\n  },\n  \"metadata\": {\n    \"syft:distro\": \"pkg:generic/debian@1.2.3?like=like%21\"\n  },\n  \"manifests\": {\n    \"redacted/some/path/some/path/pkg1\": {\n      \"name\": \"redacted/some/path/some/path/pkg1\",\n      \"file\": {\n        \"source_location\": \"redacted/some/path/some/path/pkg1\"\n      },\n      \"resolved\": {\n        \"pkg:deb/debian/package-2@2.0.1\": {\n          \"package_url\": \"pkg:deb/debian/package-2@2.0.1\",\n          \"relationship\": \"direct\",\n          \"scope\": \"runtime\"\n        }\n      }\n    }\n  },\n  \"scanned\":\"redacted\"\n}\n"
  },
  {
    "path": "syft/format/github/testdata/snapshot/TestGithubImageEncoder.golden",
    "content": "{\n  \"version\": 0,\n  \"job\": {},\n  \"detector\": {\n    \"name\": \"syft\",\n    \"url\": \"https://github.com/anchore/syft\",\n    \"version\": \"v0.42.0-bogus\"\n  },\n  \"metadata\": {\n    \"syft:distro\": \"pkg:generic/debian@1.2.3?like=like%21\"\n  },\n  \"manifests\": {\n    \"user-image-input:/somefile-1.txt\": {\n      \"name\": \"user-image-input:/somefile-1.txt\",\n      \"file\": {\n        \"source_location\": \"user-image-input:/somefile-1.txt\"\n      },\n      \"metadata\": {\n        \"syft:filesystem\":\"redacted\"\n      }\n    },\n    \"user-image-input:/somefile-2.txt\": {\n      \"name\": \"user-image-input:/somefile-2.txt\",\n      \"file\": {\n        \"source_location\": \"user-image-input:/somefile-2.txt\"\n      },\n      \"metadata\": {\n        \"syft:filesystem\":\"redacted\"\n      },\n      \"resolved\": {\n        \"pkg:deb/debian/package-2@2.0.1\": {\n          \"package_url\": \"pkg:deb/debian/package-2@2.0.1\",\n          \"relationship\": \"direct\",\n          \"scope\": \"runtime\"\n        }\n      }\n    }\n  },\n  \"scanned\":\"redacted\"\n}\n"
  },
  {
    "path": "syft/format/internal/backfill.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\tcataloger \"github.com/anchore/syft/syft/pkg/cataloger/common/cpe\"\n)\n\n// Backfill takes all information present in the package and attempts to fill in any missing information\n// from any available sources, such as the Metadata, PURL, or CPEs.\n//\n// Backfill does not call p.SetID(), but this needs to be called later to ensure it's up to date\nfunc Backfill(p *pkg.Package) {\n\tbackfillFromPurl(p)\n\tbackfillFromCPE(p)\n}\n\nfunc backfillFromCPE(p *pkg.Package) {\n\tif len(p.CPEs) == 0 {\n\t\treturn\n\t}\n\n\tc := p.CPEs[0]\n\n\tif p.Type == \"\" {\n\t\tp.Type = cataloger.TargetSoftwareToPackageType(c.Attributes.TargetSW)\n\t}\n}\n\nfunc backfillFromPurl(p *pkg.Package) {\n\tif p.PURL == \"\" {\n\t\treturn\n\t}\n\n\tpurl, err := packageurl.FromString(p.PURL)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to parse purl: %s: %w\", p.PURL, err)\n\t\treturn\n\t}\n\n\tvar cpes []cpe.CPE\n\tepoch := \"\"\n\trpmmod := \"\"\n\n\tfor _, qualifier := range purl.Qualifiers {\n\t\tswitch qualifier.Key {\n\t\tcase pkg.PURLQualifierCPES:\n\t\t\trawCpes := strings.Split(qualifier.Value, \",\")\n\t\t\tfor _, rawCpe := range rawCpes {\n\t\t\t\tc, err := cpe.New(rawCpe, cpe.DeclaredSource)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Debugf(\"unable to decode cpe %s in purl %s: %w\", rawCpe, p.PURL, err)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tcpes = append(cpes, c)\n\t\t\t}\n\t\tcase pkg.PURLQualifierEpoch:\n\t\t\tepoch = qualifier.Value\n\t\tcase pkg.PURLQualifierRpmModularity:\n\t\t\trpmmod = qualifier.Value\n\t\t}\n\t}\n\n\tif p.Type == \"\" {\n\t\tp.Type = pkg.TypeFromPURL(p.PURL)\n\t}\n\tif p.Language == \"\" {\n\t\tp.Language = pkg.LanguageFromPURL(p.PURL)\n\t}\n\tif p.Name == \"\" {\n\t\tp.Name = nameFromPurl(purl)\n\t}\n\n\tsetVersionFromPurl(p, purl, epoch)\n\n\tif p.Language == pkg.Java {\n\t\tsetJavaMetadataFromPurl(p, purl)\n\t}\n\n\tif p.Type == pkg.RpmPkg {\n\t\tsetRpmMetadataFromPurl(p, rpmmod)\n\t}\n\n\tfor _, c := range cpes {\n\t\tif slices.Contains(p.CPEs, c) {\n\t\t\tcontinue\n\t\t}\n\t\tp.CPEs = append(p.CPEs, c)\n\t}\n}\n\nfunc setJavaMetadataFromPurl(p *pkg.Package, _ packageurl.PackageURL) {\n\tif p.Type != pkg.JavaPkg {\n\t\treturn\n\t}\n\tif p.Metadata == nil {\n\t\t// since we don't know if the purl elements directly came from pom properties or the manifest,\n\t\t// we can only go as far as to set the type to JavaArchive, but not fill in the group id and artifact id\n\t\tp.Metadata = pkg.JavaArchive{}\n\t}\n}\n\nfunc setRpmMetadataFromPurl(p *pkg.Package, rpmmod string) {\n\tif p.Type != pkg.RpmPkg {\n\t\treturn\n\t}\n\tif rpmmod == \"\" {\n\t\treturn\n\t}\n\n\tif p.Metadata == nil {\n\t\tp.Metadata = pkg.RpmDBEntry{\n\t\t\tModularityLabel: &rpmmod,\n\t\t}\n\t\treturn\n\t}\n\n\tswitch m := p.Metadata.(type) {\n\tcase pkg.RpmDBEntry:\n\t\tif m.ModularityLabel == nil {\n\t\t\tm.ModularityLabel = &rpmmod\n\t\t\tp.Metadata = m\n\t\t}\n\tcase pkg.RpmArchive:\n\t\tif m.ModularityLabel == nil {\n\t\t\tm.ModularityLabel = &rpmmod\n\t\t\tp.Metadata = m\n\t\t}\n\t}\n}\n\nfunc setVersionFromPurl(p *pkg.Package, purl packageurl.PackageURL, epoch string) {\n\tif p.Version == \"\" {\n\t\tp.Version = purl.Version\n\t}\n\n\tif epoch != \"\" && p.Type == pkg.RpmPkg && !epochPrefix.MatchString(p.Version) {\n\t\tp.Version = fmt.Sprintf(\"%s:%s\", epoch, p.Version)\n\t}\n}\n\nvar epochPrefix = regexp.MustCompile(`^\\d+:`)\n\n// nameFromPurl returns the syft package name of the package from the purl. If the purl includes a namespace,\n// the name is prefixed as appropriate based on the PURL type\nfunc nameFromPurl(purl packageurl.PackageURL) string {\n\tif !nameExcludesPurlNamespace(purl.Type) && purl.Namespace != \"\" {\n\t\treturn fmt.Sprintf(\"%s/%s\", purl.Namespace, purl.Name)\n\t}\n\treturn purl.Name\n}\n\nfunc nameExcludesPurlNamespace(purlType string) bool {\n\tswitch purlType {\n\tcase packageurl.TypeAlpine,\n\t\tpackageurl.TypeAlpm,\n\t\tpackageurl.TypeConan,\n\t\tpackageurl.TypeCpan,\n\t\tpackageurl.TypeDebian,\n\t\tpackageurl.TypeMaven,\n\t\tpackageurl.TypeQpkg,\n\t\tpackageurl.TypeRPM,\n\t\tpackageurl.TypeSWID:\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "syft/format/internal/backfill_test.go",
    "content": "package internal\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_Backfill(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tin       pkg.Package\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"npm type\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:npm/test@3.0.0\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:     \"pkg:npm/test@3.0.0\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tName:     \"test\",\n\t\t\t\tVersion:  \"3.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm no epoch\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:    \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tName:    \"dbus-common\",\n\t\t\t\tVersion: \"1.12.8-26.el8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm epoch\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&epoch=1&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:    \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&epoch=1&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tName:    \"dbus-common\",\n\t\t\t\tVersion: \"1:1.12.8-26.el8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm with rpmmod\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:rpm/redhat/httpd@2.4.37-51?arch=x86_64&distro=rhel-8.7&rpmmod=httpd:2.4\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:    \"pkg:rpm/redhat/httpd@2.4.37-51?arch=x86_64&distro=rhel-8.7&rpmmod=httpd:2.4\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tName:    \"httpd\",\n\t\t\t\tVersion: \"2.4.37-51\",\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tModularityLabel: strRef(\"httpd:2.4\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"bad cpe\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:npm/testp@3.0.0?cpes=cpe:2.3a:testv:testp:3.0.0:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:     \"pkg:npm/testp@3.0.0?cpes=cpe:2.3a:testv:testp:3.0.0:*:*:*:*:*:*:*\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tName:     \"testp\",\n\t\t\t\tVersion:  \"3.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"good cpe\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:npm/testp@3.0.0?cpes=cpe:2.3:a:testv:testp:3.0.0:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:     \"pkg:npm/testp@3.0.0?cpes=cpe:2.3:a:testv:testp:3.0.0:*:*:*:*:*:*:*\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tName:     \"testp\",\n\t\t\t\tVersion:  \"3.0.0\",\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t{\n\t\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\t\tVendor:  \"testv\",\n\t\t\t\t\t\t\tProduct: \"testp\",\n\t\t\t\t\t\t\tVersion: \"3.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"java type\",\n\t\t\tin: pkg.Package{\n\t\t\t\tPURL: \"pkg:maven/org.apache/some-thing@1.2.3\",\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tPURL:     \"pkg:maven/org.apache/some-thing@1.2.3\",\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tName:     \"some-thing\",\n\t\t\t\tVersion:  \"1.2.3\",\n\t\t\t\t// we intentionally don't claim we found a pom properties file with a groupID from the purl.\n\t\t\t\t// but we do claim that we found java data with an empty type.\n\t\t\t\tMetadata: pkg.JavaArchive{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"target-sw from CPE\",\n\t\t\tin: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:ruby:*:*\", \"\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:amazon:opensearch:*:*:*:*:*:ruby:*:*\", \"\"),\n\t\t\t\t},\n\t\t\t\tType: pkg.GemPkg,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tBackfill(&tt.in)\n\t\t\ttt.in.OverrideID(\"\")\n\t\t\trequire.Equal(t, tt.expected, tt.in)\n\t\t})\n\t}\n}\n\nfunc Test_nameFromPurl(t *testing.T) {\n\ttests := []struct {\n\t\tin       string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tin:       \"pkg:npm/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:maven/org.apache/some-name@1.2.3\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:deb/debian/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:rpm/redhat/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:gem/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:apk/alpine/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:docker/some-org/some-name@3.0.0\",\n\t\t\texpected: \"some-org/some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:npm/some-name@3.0.0\",\n\t\t\texpected: \"some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:npm/some-org/some-name@3.0.0\",\n\t\t\texpected: \"some-org/some-name\",\n\t\t},\n\t\t{\n\t\t\tin:       \"pkg:oci/library/mysql@8.1.0\",\n\t\t\texpected: \"library/mysql\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.in, func(t *testing.T) {\n\t\t\tp, err := packageurl.FromString(tt.in)\n\t\t\trequire.NoError(t, err)\n\t\t\tgot := nameFromPurl(p)\n\t\t\trequire.Equal(t, tt.expected, got)\n\t\t})\n\t}\n}\n\nfunc strRef(s string) *string {\n\treturn &s\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/decoder.go",
    "content": "package cyclonedxutil\n\nimport (\n\t\"io\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n)\n\ntype Decoder struct {\n\tformat cyclonedx.BOMFileFormat\n}\n\nfunc NewDecoder(format cyclonedx.BOMFileFormat) Decoder {\n\treturn Decoder{\n\t\tformat: format,\n\t}\n}\n\nfunc (d Decoder) Decode(r io.Reader) (*cyclonedx.BOM, error) {\n\tdoc := &cyclonedx.BOM{\n\t\tComponents: &[]cyclonedx.Component{},\n\t}\n\terr := cyclonedx.NewBOMDecoder(r, d.format).Decode(doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn doc, nil\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/decoder_test.go",
    "content": "package cyclonedxutil\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_missingComponentsDecode(t *testing.T) {\n\tbom := &cyclonedx.BOM{\n\t\tSpecVersion: cyclonedx.SpecVersion1_4,\n\t}\n\tbomBytes, _ := json.Marshal(&bom)\n\tdec := NewDecoder(cyclonedx.BOMFileFormatJSON)\n\n\t_, err := dec.Decode(bytes.NewReader(bomBytes))\n\tassert.NoError(t, err)\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/encoder.go",
    "content": "package cyclonedxutil\n\nimport (\n\t\"io\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/syft/format/common/cyclonedxhelpers\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst DefaultVersion = \"1.6\"\n\ntype Encoder struct {\n\tversion cyclonedx.SpecVersion\n\tformat  cyclonedx.BOMFileFormat\n\tpretty  bool\n}\n\nfunc NewEncoder(version string, format cyclonedx.BOMFileFormat, pretty bool) (Encoder, error) {\n\tspecVersion, err := SpecVersionFromString(version)\n\tif err != nil {\n\t\treturn Encoder{}, err\n\t}\n\treturn Encoder{\n\t\tversion: specVersion,\n\t\tformat:  format,\n\t\tpretty:  pretty,\n\t}, nil\n}\n\nfunc (e Encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tbom := cyclonedxhelpers.ToFormatModel(s)\n\tenc := cyclonedx.NewBOMEncoder(writer, e.format)\n\tenc.SetPretty(e.pretty)\n\tenc.SetEscapeHTML(false)\n\n\treturn enc.EncodeVersion(bom, e.version)\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/author.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc encodeAuthor(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.NpmPackage:\n\t\t\treturn metadata.Author\n\t\tcase pkg.PythonPackage:\n\t\t\tauthor := metadata.Author\n\t\t\tif metadata.AuthorEmail != \"\" {\n\t\t\t\tif author == \"\" {\n\t\t\t\t\treturn metadata.AuthorEmail\n\t\t\t\t}\n\t\t\t\tauthor += fmt.Sprintf(\" <%s>\", metadata.AuthorEmail)\n\t\t\t}\n\t\t\treturn author\n\t\tcase pkg.RubyGemspec:\n\t\t\tif len(metadata.Authors) > 0 {\n\t\t\t\treturn strings.Join(metadata.Authors, \",\")\n\t\t\t}\n\t\t\treturn \"\"\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc decodeAuthor(author string, metadata interface{}) {\n\tswitch meta := metadata.(type) {\n\tcase *pkg.NpmPackage:\n\t\tmeta.Author = author\n\tcase *pkg.PythonPackage:\n\t\tparts := strings.SplitN(author, \" <\", 2)\n\t\tmeta.Author = parts[0]\n\t\tif len(parts) > 1 {\n\t\t\tmeta.AuthorEmail = strings.TrimSuffix(parts[1], \">\")\n\t\t}\n\tcase *pkg.RubyGemspec:\n\t\tmeta.Authors = strings.Split(author, \",\")\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/author_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeAuthor(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from gem\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tAuthors: []string{\n\t\t\t\t\t\t\"auth1\",\n\t\t\t\t\t\t\"auth2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth1,auth2\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - just name\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - just email\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthorEmail: \"auth@auth.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth@auth.gov\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - both name and email\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthor:      \"auth\",\n\t\t\t\t\tAuthorEmail: \"auth@auth.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth <auth@auth.gov>\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodeAuthor(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/component.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc EncodeComponent(p pkg.Package, supplier string, locationSorter func(a, b file.Location) int) cyclonedx.Component {\n\tprops := EncodeProperties(p, \"syft:package\")\n\n\tif p.Metadata != nil {\n\t\t// encode the metadataType as a property, something that doesn't exist on the core model\n\t\tprops = append(props, cyclonedx.Property{\n\t\t\tName:  \"syft:package:metadataType\",\n\t\t\tValue: packagemetadata.JSONName(p.Metadata),\n\t\t})\n\t}\n\n\tprops = append(props, encodeCPEs(p)...)\n\tlocations := p.Locations.ToSlice(locationSorter)\n\tif len(locations) > 0 {\n\t\tprops = append(props, EncodeProperties(locations, \"syft:location\")...)\n\t}\n\tif hasMetadata(p) {\n\t\tprops = append(props, EncodeProperties(p.Metadata, \"syft:metadata\")...)\n\t}\n\n\tvar properties *[]cyclonedx.Property\n\tif len(props) > 0 {\n\t\tproperties = &props\n\t}\n\n\tcomponentType := cyclonedx.ComponentTypeLibrary\n\tswitch p.Type {\n\tcase pkg.BinaryPkg:\n\t\tcomponentType = cyclonedx.ComponentTypeApplication\n\tcase pkg.ModelPkg:\n\t\tcomponentType = cyclonedx.ComponentTypeMachineLearningModel\n\t}\n\n\treturn cyclonedx.Component{\n\t\tType:               componentType,\n\t\tName:               p.Name,\n\t\tGroup:              encodeGroup(p),\n\t\tVersion:            p.Version,\n\t\tSupplier:           encodeSupplier(p, supplier),\n\t\tPackageURL:         p.PURL,\n\t\tLicenses:           encodeLicenses(p),\n\t\tCPE:                encodeSingleCPE(p),\n\t\tAuthor:             encodeAuthor(p),\n\t\tPublisher:          encodePublisher(p),\n\t\tDescription:        encodeDescription(p),\n\t\tExternalReferences: encodeExternalReferences(p),\n\t\tProperties:         properties,\n\t\tBOMRef:             DeriveBomRef(p),\n\t}\n}\n\n// TODO: we eventually want to update this so that we can read \"supplier\" from different syft metadata\nfunc encodeSupplier(_ pkg.Package, sbomSupplier string) *cyclonedx.OrganizationalEntity {\n\tif sbomSupplier != \"\" {\n\t\treturn &cyclonedx.OrganizationalEntity{\n\t\t\tName: sbomSupplier,\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc DeriveBomRef(p pkg.Package) string {\n\t// try and parse the PURL if possible and append syft id to it, to make\n\t// the purl unique in the BOM.\n\t// TODO: In the future we may want to dedupe by PURL and combine components with\n\t// the same PURL while preserving their unique metadata.\n\tif parsedPURL, err := packageurl.FromString(p.PURL); err == nil {\n\t\tparsedPURL.Qualifiers = append(parsedPURL.Qualifiers, packageurl.Qualifier{Key: \"package-id\", Value: string(p.ID())})\n\t\treturn parsedPURL.ToString()\n\t}\n\t// fallback is to use strictly the ID if there is no valid pURL\n\treturn string(p.ID())\n}\n\nfunc hasMetadata(p pkg.Package) bool {\n\treturn p.Metadata != nil\n}\n\nfunc decodeComponent(c *cyclonedx.Component) *pkg.Package {\n\tvalues := map[string]string{}\n\tif c.Properties != nil {\n\t\tfor _, p := range *c.Properties {\n\t\t\tvalues[p.Name] = p.Value\n\t\t}\n\t}\n\n\tp := &pkg.Package{\n\t\tVersion:   c.Version,\n\t\tLocations: decodeLocations(values),\n\t\tLicenses:  pkg.NewLicenseSet(decodeLicenses(c)...),\n\t\tCPEs:      decodeCPEs(c),\n\t}\n\n\t// note: this may write in syft package type information\n\tDecodeInto(p, values, \"syft:package\", CycloneDXFields)\n\n\tmetadataType := values[\"syft:package:metadataType\"]\n\n\tp.Metadata = decodePackageMetadata(values, c, metadataType)\n\n\t// this will either use the purl from the component or generate a new one based off of any type information\n\t// that was decoded above.\n\tp.PURL = getPURL(c, p.Type)\n\n\tif p.Type == \"\" {\n\t\tp.Type = pkg.TypeFromPURL(p.PURL)\n\t}\n\n\tsetPackageName(p, c)\n\n\tinternal.Backfill(p)\n\tp.SetID()\n\n\treturn p\n}\n\nfunc getPURL(c *cyclonedx.Component, ty pkg.Type) string {\n\tif c.PackageURL != \"\" {\n\t\t// if there is a purl that where the namespace does not match the group information, we may\n\t\t// accidentally drop group. We should consider adding group as a top-level syft package field.\n\t\treturn c.PackageURL\n\t}\n\n\tif strings.HasPrefix(c.BOMRef, \"pkg:\") {\n\t\t// the bomref is a purl, so try to use that as the purl\n\t\t_, err := packageurl.FromString(c.BOMRef)\n\t\tif err == nil {\n\t\t\treturn c.BOMRef\n\t\t}\n\t}\n\n\tif ty == \"\" {\n\t\treturn \"\"\n\t}\n\n\ttyStr := ty.PackageURLType()\n\tswitch tyStr {\n\tcase \"\", packageurl.TypeGeneric:\n\t\treturn \"\"\n\t}\n\n\tpurl := packageurl.PackageURL{\n\t\tType:      tyStr,\n\t\tNamespace: c.Group,\n\t\tName:      c.Name,\n\t\tVersion:   c.Version,\n\t}\n\n\treturn purl.ToString()\n}\n\nfunc setPackageName(p *pkg.Package, c *cyclonedx.Component) {\n\tname := c.Name\n\tif c.Group != \"\" {\n\t\tswitch p.Type {\n\t\tcase pkg.JavaPkg:\n\t\t\tif p.Metadata == nil {\n\t\t\t\tp.Metadata = pkg.JavaArchive{}\n\t\t\t}\n\t\t\tvar pomProperties *pkg.JavaPomProperties\n\t\t\tjavaMetadata, ok := p.Metadata.(pkg.JavaArchive)\n\t\t\tif ok {\n\t\t\t\tpomProperties = javaMetadata.PomProperties\n\t\t\t\tif pomProperties == nil {\n\t\t\t\t\tpomProperties = &pkg.JavaPomProperties{}\n\t\t\t\t\tjavaMetadata.PomProperties = pomProperties\n\t\t\t\t\tp.Metadata = javaMetadata\n\t\t\t\t}\n\t\t\t}\n\t\t\tif pomProperties != nil {\n\t\t\t\tif pomProperties.ArtifactID == \"\" {\n\t\t\t\t\tpomProperties.ArtifactID = c.Name\n\t\t\t\t}\n\t\t\t\tif pomProperties.GroupID == \"\" {\n\t\t\t\t\tpomProperties.GroupID = c.Group\n\t\t\t\t}\n\t\t\t\tif pomProperties.Version == \"\" {\n\t\t\t\t\tpomProperties.Version = p.Version\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tname = fmt.Sprintf(\"%s/%s\", c.Group, name)\n\t\t}\n\t}\n\tp.Name = name\n}\n\nfunc decodeLocations(vals map[string]string) file.LocationSet {\n\tv := Decode(reflect.TypeOf([]file.Location{}), vals, \"syft:location\", CycloneDXFields)\n\tout, ok := v.([]file.Location)\n\tif !ok {\n\t\tout = nil\n\t}\n\treturn file.NewLocationSet(out...)\n}\n\nfunc decodePackageMetadata(vals map[string]string, c *cyclonedx.Component, typeName string) interface{} {\n\tif typeName != \"\" && c.Properties != nil {\n\t\tmetadataType := packagemetadata.ReflectTypeFromJSONName(typeName)\n\t\tif metadataType == nil {\n\t\t\treturn nil\n\t\t}\n\t\tmetaPtrTyp := reflect.PointerTo(metadataType)\n\t\tmetaPtr := Decode(metaPtrTyp, vals, \"syft:metadata\", CycloneDXFields)\n\n\t\t// Map all explicit metadata properties\n\t\tdecodeAuthor(c.Author, metaPtr)\n\t\tdecodeGroup(c.Group, metaPtr)\n\t\tdecodePublisher(c.Publisher, metaPtr)\n\t\tdecodeDescription(c.Description, metaPtr)\n\t\tdecodeExternalReferences(c, metaPtr)\n\n\t\t// return the actual interface{} -> struct ... not interface{} -> *struct\n\t\treturn PtrToStruct(metaPtr)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/component_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeComponentProperties(t *testing.T) {\n\tepoch := 2\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected []cyclonedx.Property\n\t}{\n\t\t{\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tFoundBy: \"cataloger\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{RealPath: \"test\"}),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"libc-utils\",\n\t\t\t\t\tOriginPackage: \"libc-dev\",\n\t\t\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\t\t\tVersion:       \"0.7.2-r0\",\n\t\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\t\tURL:           \"http://alpinelinux.org\",\n\t\t\t\t\tDescription:   \"Meta package to pull in correct libc\",\n\t\t\t\t\tSize:          0,\n\t\t\t\t\tInstalledSize: 4096,\n\t\t\t\t\tDependencies:  []string{\"musl-utils\"},\n\t\t\t\t\tProvides:      []string{\"so:libc.so.1\"},\n\t\t\t\t\tChecksum:      \"Q1p78yvTLG094tHE1+dToJGbmYzQE=\",\n\t\t\t\t\tGitCommit:     \"97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479\",\n\t\t\t\t\tFiles:         []pkg.ApkFileRecord{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []cyclonedx.Property{\n\t\t\t\t{Name: \"syft:package:foundBy\", Value: \"cataloger\"},\n\t\t\t\t{Name: \"syft:package:metadataType\", Value: \"apk-db-entry\"},\n\t\t\t\t{Name: \"syft:location:0:path\", Value: \"test\"},\n\t\t\t\t{Name: \"syft:metadata:gitCommitOfApkPort\", Value: \"97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479\"},\n\t\t\t\t{Name: \"syft:metadata:installedSize\", Value: \"4096\"},\n\t\t\t\t{Name: \"syft:metadata:originPackage\", Value: \"libc-dev\"},\n\t\t\t\t{Name: \"syft:metadata:provides:0\", Value: \"so:libc.so.1\"},\n\t\t\t\t{Name: \"syft:metadata:pullChecksum\", Value: \"Q1p78yvTLG094tHE1+dToJGbmYzQE=\"},\n\t\t\t\t{Name: \"syft:metadata:pullDependencies:0\", Value: \"musl-utils\"},\n\t\t\t\t{Name: \"syft:metadata:size\", Value: \"0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from dpkg\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tPackage:       \"tzdata\",\n\t\t\t\t\tVersion:       \"2020a-0+deb10u1\",\n\t\t\t\t\tSource:        \"tzdata-dev\",\n\t\t\t\t\tSourceVersion: \"1.0\",\n\t\t\t\t\tArchitecture:  \"all\",\n\t\t\t\t\tInstalledSize: 3036,\n\t\t\t\t\tMaintainer:    \"GNU Libc Maintainers <debian-glibc@lists.debian.org>\",\n\t\t\t\t\tFiles:         []pkg.DpkgFileRecord{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []cyclonedx.Property{\n\t\t\t\t{Name: \"syft:package:metadataType\", Value: \"dpkg-db-entry\"},\n\t\t\t\t{Name: \"syft:metadata:installedSize\", Value: \"3036\"},\n\t\t\t\t{Name: \"syft:metadata:source\", Value: \"tzdata-dev\"},\n\t\t\t\t{Name: \"syft:metadata:sourceVersion\", Value: \"1.0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from go bin\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tName:     \"golang.org/x/net\",\n\t\t\t\tVersion:  \"v0.0.0-20211006190231-62292e806868\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tGoCompiledVersion: \"1.17\",\n\t\t\t\t\tArchitecture:      \"amd64\",\n\t\t\t\t\tH1Digest:          \"h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []cyclonedx.Property{\n\t\t\t\t{Name: \"syft:package:language\", Value: pkg.Go.String()},\n\t\t\t\t{Name: \"syft:package:metadataType\", Value: \"go-module-buildinfo-entry\"},\n\t\t\t\t{Name: \"syft:package:type\", Value: \"go-module\"},\n\t\t\t\t{Name: \"syft:metadata:architecture\", Value: \"amd64\"},\n\t\t\t\t{Name: \"syft:metadata:goCompiledVersion\", Value: \"1.17\"},\n\t\t\t\t{Name: \"syft:metadata:h1Digest\", Value: \"h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from go mod\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tName:     \"golang.org/x/net\",\n\t\t\t\tVersion:  \"v0.0.0-20211006190231-62292e806868\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\tMetadata: pkg.GolangModuleEntry{\n\t\t\t\t\tH1Digest: \"h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []cyclonedx.Property{\n\t\t\t\t{Name: \"syft:package:language\", Value: pkg.Go.String()},\n\t\t\t\t{Name: \"syft:package:metadataType\", Value: \"go-module-entry\"},\n\t\t\t\t{Name: \"syft:package:type\", Value: \"go-module\"},\n\t\t\t\t{Name: \"syft:metadata:h1Digest\", Value: \"h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from rpm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tName:    \"dive\",\n\t\t\t\tVersion: \"0.9.2-1\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tName:      \"dive\",\n\t\t\t\t\tEpoch:     &epoch,\n\t\t\t\t\tArch:      \"x86_64\",\n\t\t\t\t\tRelease:   \"1\",\n\t\t\t\t\tVersion:   \"0.9.2\",\n\t\t\t\t\tSourceRpm: \"dive-0.9.2-1.src.rpm\",\n\t\t\t\t\tSize:      12406784,\n\t\t\t\t\tVendor:    \"\",\n\t\t\t\t\tFiles:     []pkg.RpmFileRecord{},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []cyclonedx.Property{\n\t\t\t\t{Name: \"syft:package:metadataType\", Value: \"rpm-db-entry\"},\n\t\t\t\t{Name: \"syft:package:type\", Value: \"rpm\"},\n\t\t\t\t{Name: \"syft:metadata:epoch\", Value: \"2\"},\n\t\t\t\t{Name: \"syft:metadata:release\", Value: \"1\"},\n\t\t\t\t{Name: \"syft:metadata:size\", Value: \"12406784\"},\n\t\t\t\t{Name: \"syft:metadata:sourceRpm\", Value: \"dive-0.9.2-1.src.rpm\"},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsbomSupplier := \"\"\n\t\t\tc := EncodeComponent(test.input, sbomSupplier, file.LocationSorter(nil))\n\t\t\tif test.expected == nil {\n\t\t\t\tif c.Properties != nil {\n\t\t\t\t\tt.Fatalf(\"expected no properties, got: %+v\", *c.Properties)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, test.expected, *c.Properties)\n\t\t})\n\t}\n}\n\nfunc Test_encodeCompomentType(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tpkg  pkg.Package\n\t\twant cyclonedx.Component\n\t}{\n\t\t{\n\t\t\tname: \"non-binary package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"pkg1\",\n\t\t\t\tVersion: \"1.9.2\",\n\t\t\t\tType:    pkg.GoModulePkg,\n\t\t\t},\n\t\t\twant: cyclonedx.Component{\n\t\t\t\tName:    \"pkg1\",\n\t\t\t\tVersion: \"1.9.2\",\n\t\t\t\tType:    cyclonedx.ComponentTypeLibrary,\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:package:type\",\n\t\t\t\t\t\tValue: \"go-module\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"non-binary package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"pkg1\",\n\t\t\t\tVersion: \"3.1.2\",\n\t\t\t\tType:    pkg.BinaryPkg,\n\t\t\t},\n\t\t\twant: cyclonedx.Component{\n\t\t\t\tName:    \"pkg1\",\n\t\t\t\tVersion: \"3.1.2\",\n\t\t\t\tType:    cyclonedx.ComponentTypeApplication,\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:package:type\",\n\t\t\t\t\t\tValue: \"binary\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttt.pkg.ID()\n\t\t\tsbomSupplier := \"\"\n\t\t\tp := EncodeComponent(tt.pkg, sbomSupplier, file.LocationSorter(nil))\n\t\t\tassert.Equal(t, tt.want, p)\n\t\t})\n\t}\n}\n\nfunc Test_deriveBomRef(t *testing.T) {\n\tpkgWithPurl := pkg.Package{\n\t\tName:    \"django\",\n\t\tVersion: \"1.11.1\",\n\t\tPURL:    \"pkg:pypi/django@1.11.1\",\n\t}\n\tpkgWithPurl.SetID()\n\n\tpkgWithOutPurl := pkg.Package{\n\t\tName:    \"django\",\n\t\tVersion: \"1.11.1\",\n\t\tPURL:    \"\",\n\t}\n\tpkgWithOutPurl.SetID()\n\n\tpkgWithBadPurl := pkg.Package{\n\t\tName:    \"django\",\n\t\tVersion: \"1.11.1\",\n\t\tPURL:    \"pkg:pyjango@1.11.1\",\n\t}\n\tpkgWithBadPurl.SetID()\n\n\ttests := []struct {\n\t\tname string\n\t\tpkg  pkg.Package\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"use pURL-id hybrid\",\n\t\t\tpkg:  pkgWithPurl,\n\t\t\twant: fmt.Sprintf(\"pkg:pypi/django@1.11.1?package-id=%s\", pkgWithPurl.ID()),\n\t\t},\n\t\t{\n\t\t\tname: \"fallback to ID when pURL is invalid\",\n\t\t\tpkg:  pkgWithBadPurl,\n\t\t\twant: string(pkgWithBadPurl.ID()),\n\t\t},\n\t\t{\n\t\t\tname: \"fallback to ID when pURL is missing\",\n\t\t\tpkg:  pkgWithOutPurl,\n\t\t\twant: string(pkgWithOutPurl.ID()),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttt.pkg.ID()\n\t\t\tassert.Equal(t, tt.want, DeriveBomRef(tt.pkg))\n\t\t})\n\t}\n}\n\nfunc Test_decodeComponent(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tcomponent    cyclonedx.Component\n\t\twantLanguage pkg.Language\n\t\twantMetadata any\n\t\twantPURL     string\n\t}{\n\t\t{\n\t\t\tname: \"derive language from pURL if missing\",\n\t\t\tcomponent: cyclonedx.Component{\n\t\t\t\tName:       \"ch.qos.logback/logback-classic\",\n\t\t\t\tVersion:    \"1.2.3\",\n\t\t\t\tPackageURL: \"pkg:maven/ch.qos.logback/logback-classic@1.2.3\",\n\t\t\t\tType:       \"library\",\n\t\t\t\tBOMRef:     \"pkg:maven/ch.qos.logback/logback-classic@1.2.3\",\n\t\t\t},\n\t\t\twantLanguage: pkg.Java,\n\t\t\twantPURL:     \"pkg:maven/ch.qos.logback/logback-classic@1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname: \"derive language from bomref if missing\",\n\t\t\tcomponent: cyclonedx.Component{\n\t\t\t\tName:    \"ch.qos.logback/logback-classic\",\n\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\tType:    \"library\",\n\t\t\t\tBOMRef:  \"pkg:maven/ch.qos.logback/logback-classic@1.2.3\",\n\t\t\t},\n\t\t\twantLanguage: pkg.Java,\n\t\t\twantPURL:     \"pkg:maven/ch.qos.logback/logback-classic@1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname: \"handle RpmdbMetadata type without properties\",\n\t\t\tcomponent: cyclonedx.Component{\n\t\t\t\tName:       \"acl\",\n\t\t\t\tVersion:    \"2.2.53-1.el8\",\n\t\t\t\tPackageURL: \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t\t\tType:       \"library\",\n\t\t\t\tBOMRef:     \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:package:metadataType\",\n\t\t\t\t\t\tValue: \"RpmdbMetadata\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantMetadata: pkg.RpmDBEntry{},\n\t\t\twantPURL:     \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t},\n\t\t{\n\t\t\tname: \"handle RpmdbMetadata type with properties\",\n\t\t\tcomponent: cyclonedx.Component{\n\t\t\t\tName:       \"acl\",\n\t\t\t\tVersion:    \"2.2.53-1.el8\",\n\t\t\t\tPackageURL: \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t\t\tType:       \"library\",\n\t\t\t\tBOMRef:     \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:package:metadataType\",\n\t\t\t\t\t\tValue: \"RpmDBMetadata\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:metadata:release\",\n\t\t\t\t\t\tValue: \"some-release\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantMetadata: pkg.RpmDBEntry{\n\t\t\t\tRelease: \"some-release\",\n\t\t\t},\n\t\t\twantPURL: \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t},\n\t\t{\n\t\t\tname: \"generate a purl from package type\",\n\t\t\tcomponent: cyclonedx.Component{\n\t\t\t\tName:    \"log4j\",\n\t\t\t\tGroup:   \"org.apache.logging.log4j\",\n\t\t\t\tVersion: \"2.0.4\",\n\t\t\t\tType:    \"library\",\n\t\t\t\tBOMRef:  \"log4j\",\n\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"syft:package:type\",\n\t\t\t\t\t\tValue: \"java-archive\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPURL: \"pkg:maven/org.apache.logging.log4j/log4j@2.0.4\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tp := decodeComponent(&tt.component)\n\t\t\tif tt.wantLanguage != \"\" {\n\t\t\t\tassert.Equal(t, tt.wantLanguage, p.Language)\n\t\t\t}\n\t\t\tif tt.wantMetadata != nil {\n\t\t\t\tassert.Truef(t, reflect.DeepEqual(tt.wantMetadata, p.Metadata), \"metadata should match: %+v != %+v\", tt.wantMetadata, p.Metadata)\n\t\t\t}\n\n\t\t\tif tt.wantPURL != \"\" {\n\t\t\t\tassert.Equal(t, tt.wantPURL, p.PURL, \"purl should match\")\n\t\t\t}\n\n\t\t\tif tt.wantMetadata == nil && tt.wantLanguage == \"\" && tt.wantPURL == \"\" {\n\t\t\t\tt.Fatal(\"this is a useless test, please remove it\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetPURL(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tcomponent *cyclonedx.Component\n\t\tpkgType   pkg.Type\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tname: \"component with PackageURL\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tPackageURL: \"pkg:npm/lodash@4.17.21\",\n\t\t\t\tName:       \"lodash\",\n\t\t\t\tVersion:    \"4.17.20\", // different version to verify PackageURL is used\n\t\t\t\tGroup:      \"npm\",\n\t\t\t},\n\t\t\tpkgType:  pkg.NpmPkg,\n\t\t\texpected: \"pkg:npm/lodash@4.17.21\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with BOMRef as valid PURL\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tBOMRef:  \"pkg:maven/org.apache.commons/commons-lang3@3.12.0\",\n\t\t\t\tName:    \"commons-lang3\",\n\t\t\t\tVersion: \"3.11.0\", // different version to verify BOMRef is used\n\t\t\t\tGroup:   \"org.apache.commons\",\n\t\t\t},\n\t\t\tpkgType:  pkg.JavaPkg,\n\t\t\texpected: \"pkg:maven/org.apache.commons/commons-lang3@3.12.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with BOMRef not a valid PURL\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tBOMRef:  \"not-a-purl-ref\",\n\t\t\t\tName:    \"commons-lang3\",\n\t\t\t\tVersion: \"3.12.0\",\n\t\t\t\tGroup:   \"org.apache.commons\",\n\t\t\t},\n\t\t\tpkgType:  pkg.JavaPkg,\n\t\t\texpected: \"pkg:maven/org.apache.commons/commons-lang3@3.12.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with unknown package type\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:    \"some-component\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\tGroup:   \"org.example\",\n\t\t\t},\n\t\t\tpkgType:  pkg.UnknownPkg,\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with empty package type\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:    \"some-component\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\tGroup:   \"org.example\",\n\t\t\t},\n\t\t\tpkgType:  \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with generic package type\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:    \"some-component\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\tGroup:   \"org.example\",\n\t\t\t},\n\t\t\tpkgType:  pkg.LinuxKernelModulePkg,\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with valid package type\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:    \"react\",\n\t\t\t\tVersion: \"18.2.0\",\n\t\t\t\tGroup:   \"facebook\",\n\t\t\t},\n\t\t\tpkgType:  pkg.NpmPkg,\n\t\t\texpected: \"pkg:npm/facebook/react@18.2.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with no group\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:    \"express\",\n\t\t\t\tVersion: \"4.18.2\",\n\t\t\t},\n\t\t\tpkgType:  pkg.NpmPkg,\n\t\t\texpected: \"pkg:npm/express@4.18.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"component with no version\",\n\t\t\tcomponent: &cyclonedx.Component{\n\t\t\t\tName:  \"express\",\n\t\t\t\tGroup: \"npm\",\n\t\t\t},\n\t\t\tpkgType:  pkg.NpmPkg,\n\t\t\texpected: \"pkg:npm/npm/express\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := getPURL(tt.component, tt.pkgType)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/cpe.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc encodeSingleCPE(p pkg.Package) string {\n\t// Since the CPEs in a package are sorted by specificity\n\t// we can extract the first CPE as the one to output in cyclonedx\n\tif len(p.CPEs) > 0 {\n\t\treturn p.CPEs[0].Attributes.String()\n\t}\n\treturn \"\"\n}\n\nfunc encodeCPEs(p pkg.Package) (out []cyclonedx.Property) {\n\tfor i, c := range p.CPEs {\n\t\t// first CPE is \"most specific\" and already encoded as the component CPE\n\t\tif i == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, cyclonedx.Property{\n\t\t\tName:  \"syft:cpe23\",\n\t\t\tValue: c.Attributes.String(),\n\t\t})\n\t}\n\treturn\n}\n\nfunc decodeCPEs(c *cyclonedx.Component) (out []cpe.CPE) {\n\tif c.CPE != \"\" {\n\t\tcp, err := cpe.New(c.CPE, cpe.DeclaredSource)\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"invalid CPE: %s\", c.CPE)\n\t\t} else {\n\t\t\tout = append(out, cp)\n\t\t}\n\t}\n\n\tif c.Properties != nil {\n\t\tfor _, p := range *c.Properties {\n\t\t\tif p.Name == \"syft:cpe23\" {\n\t\t\t\tcp, err := cpe.New(p.Value, cpe.DeclaredSource)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Warnf(\"invalid CPE: %s\", p.Value)\n\t\t\t\t} else {\n\t\t\t\t\tout = append(out, cp)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/cpe_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeCPE(t *testing.T) {\n\ttestCPE := cpe.Must(\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\", \"test-source\")\n\ttestCPE2 := cpe.Must(\"cpe:2.3:a:name:name2:3.2:*:*:*:*:*:*:*\", \"test-source-2\")\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"no metadata\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"single Attributes\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\ttestCPE,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple CPEs\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\ttestCPE2,\n\t\t\t\t\ttestCPE,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"cpe:2.3:a:name:name2:3.2:*:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"empty\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodeSingleCPE(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/decoder.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc ToSyftModel(bom *cyclonedx.BOM) (*sbom.SBOM, error) {\n\tif bom == nil {\n\t\treturn nil, fmt.Errorf(\"no content defined in CycloneDX BOM\")\n\t}\n\n\ts := &sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages:          pkg.NewCollection(),\n\t\t\tLinuxDistribution: linuxReleaseFromComponents(*bom.Components),\n\t\t},\n\t\tSource:     extractComponents(bom.Metadata),\n\t\tDescriptor: extractDescriptor(bom.Metadata),\n\t}\n\n\tidMap := make(map[string]interface{})\n\n\tif err := collectBomPackages(bom, s, idMap); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcollectRelationships(bom, s, idMap)\n\n\treturn s, nil\n}\n\nfunc collectBomPackages(bom *cyclonedx.BOM, s *sbom.SBOM, idMap map[string]interface{}) error {\n\tcomponentsPresent := false\n\tif bom.Components != nil {\n\t\tfor i := range *bom.Components {\n\t\t\tcollectPackages(&(*bom.Components)[i], s, idMap)\n\t\t}\n\t\tcomponentsPresent = true\n\t}\n\n\tif bom.Metadata != nil && bom.Metadata.Component != nil {\n\t\tcollectPackages(bom.Metadata.Component, s, idMap)\n\t\tcomponentsPresent = true\n\t}\n\n\tif !componentsPresent {\n\t\treturn fmt.Errorf(\"no components are defined in the CycloneDX BOM\")\n\t}\n\n\treturn nil\n}\n\nfunc collectPackages(component *cyclonedx.Component, s *sbom.SBOM, idMap map[string]interface{}) {\n\tswitch component.Type {\n\tcase cyclonedx.ComponentTypeOS:\n\tcase cyclonedx.ComponentTypeContainer:\n\tcase cyclonedx.ComponentTypeApplication, cyclonedx.ComponentTypeFramework, cyclonedx.ComponentTypeLibrary, cyclonedx.ComponentTypeMachineLearningModel:\n\t\tp := decodeComponent(component)\n\t\tidMap[component.BOMRef] = p\n\t\tif component.BOMRef != \"\" {\n\t\t\t// always prefer the IDs from the SBOM over derived IDs\n\t\t\tp.OverrideID(artifact.ID(component.BOMRef))\n\t\t} else {\n\t\t\tp.SetID()\n\t\t}\n\t\tsyftID := p.ID()\n\t\tif syftID != \"\" {\n\t\t\tidMap[string(syftID)] = p\n\t\t}\n\t\ts.Artifacts.Packages.Add(*p)\n\t}\n\n\tif component.Components != nil {\n\t\tfor i := range *component.Components {\n\t\t\tcollectPackages(&(*component.Components)[i], s, idMap)\n\t\t}\n\t}\n}\n\nfunc linuxReleaseFromComponents(components []cyclonedx.Component) *linux.Release {\n\tfor i := range components {\n\t\tcomponent := &components[i]\n\t\tif component.Type == cyclonedx.ComponentTypeOS {\n\t\t\treturn linuxReleaseFromOSComponent(component)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc linuxReleaseFromOSComponent(component *cyclonedx.Component) *linux.Release {\n\tif component == nil {\n\t\treturn nil\n\t}\n\n\tvar name string\n\tvar version string\n\tif component.SWID != nil {\n\t\tname = component.SWID.Name\n\t\tversion = component.SWID.Version\n\t}\n\tif name == \"\" {\n\t\tname = component.Name\n\t}\n\tif name == \"\" {\n\t\tname = getPropertyValue(component, \"id\")\n\t}\n\tif version == \"\" {\n\t\tversion = component.Version\n\t}\n\tif version == \"\" {\n\t\tversion = getPropertyValue(component, \"versionID\")\n\t}\n\n\trel := &linux.Release{\n\t\tCPEName:    component.CPE,\n\t\tPrettyName: name,\n\t\tName:       name,\n\t\tID:         name,\n\t\tIDLike:     []string{name},\n\t\tVersion:    version,\n\t\tVersionID:  version,\n\t}\n\tif component.ExternalReferences != nil {\n\t\tfor _, ref := range *component.ExternalReferences {\n\t\t\tswitch ref.Type {\n\t\t\tcase cyclonedx.ERTypeIssueTracker:\n\t\t\t\trel.BugReportURL = ref.URL\n\t\t\tcase cyclonedx.ERTypeWebsite:\n\t\t\t\trel.HomeURL = ref.URL\n\t\t\tcase cyclonedx.ERTypeOther:\n\t\t\t\tswitch ref.Comment {\n\t\t\t\tcase \"support\":\n\t\t\t\t\trel.SupportURL = ref.URL\n\t\t\t\tcase \"privacyPolicy\":\n\t\t\t\t\trel.PrivacyPolicyURL = ref.URL\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif component.Properties != nil {\n\t\tvalues := map[string]string{}\n\t\tfor _, p := range *component.Properties {\n\t\t\tvalues[p.Name] = p.Value\n\t\t}\n\t\tDecodeInto(&rel, values, \"syft:distro\", CycloneDXFields)\n\t}\n\n\treturn rel\n}\n\nfunc getPropertyValue(component *cyclonedx.Component, name string) string {\n\tif component.Properties != nil {\n\t\tfor _, p := range *component.Properties {\n\t\t\tif p.Name == name {\n\t\t\t\treturn p.Value\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc collectRelationships(bom *cyclonedx.BOM, s *sbom.SBOM, idMap map[string]interface{}) {\n\tif bom.Dependencies == nil {\n\t\treturn\n\t}\n\tfor _, d := range *bom.Dependencies {\n\t\tif d.Dependencies == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\ttoPtr, toExists := idMap[d.Ref]\n\t\tif !toExists {\n\t\t\tcontinue\n\t\t}\n\t\tto, ok := PtrToStruct(toPtr).(artifact.Identifiable)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, t := range *d.Dependencies {\n\t\t\tfromPtr, fromExists := idMap[t]\n\t\t\tif !fromExists {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfrom, ok := PtrToStruct(fromPtr).(artifact.Identifiable)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.Relationships = append(s.Relationships, artifact.Relationship{\n\t\t\t\tFrom: from,\n\t\t\t\tTo:   to,\n\t\t\t\t// match assumptions in encoding, that this is the only type of relationship captured:\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc extractComponents(meta *cyclonedx.Metadata) source.Description {\n\tif meta == nil || meta.Component == nil {\n\t\treturn source.Description{}\n\t}\n\tc := meta.Component\n\n\tsupplier := \"\"\n\t// First check component-level supplier\n\tif c.Supplier != nil && c.Supplier.Name != \"\" {\n\t\tsupplier = c.Supplier.Name\n\t}\n\t// Fall back to metadata-level supplier if component supplier is not set\n\tif supplier == \"\" && meta.Supplier != nil && meta.Supplier.Name != \"\" {\n\t\tsupplier = meta.Supplier.Name\n\t}\n\n\tswitch c.Type {\n\tcase cyclonedx.ComponentTypeContainer:\n\t\tvar labels map[string]string\n\n\t\tif meta.Properties != nil {\n\t\t\tlabels = decodeProperties(*meta.Properties, \"syft:image:labels:\")\n\t\t}\n\n\t\treturn source.Description{\n\t\t\tID:       \"\",\n\t\t\tSupplier: supplier,\n\t\t\t// TODO: can we decode alias name-version somehow? (it isn't be encoded in the first place yet)\n\n\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\tUserInput:      c.Name,\n\t\t\t\tID:             c.BOMRef,\n\t\t\t\tManifestDigest: c.Version,\n\t\t\t\tLabels:         labels,\n\t\t\t},\n\t\t}\n\tcase cyclonedx.ComponentTypeFile:\n\t\t// TODO: can we decode alias name-version somehow? (it isn't be encoded in the first place yet)\n\n\t\t// TODO: this is lossy... we can't know if this is a file or a directory\n\t\treturn source.Description{\n\t\t\tID:       \"\",\n\t\t\tSupplier: supplier,\n\t\t\tMetadata: source.FileMetadata{Path: c.Name},\n\t\t}\n\t}\n\treturn source.Description{}\n}\n\n// if there is more than one tool in meta.Tools' list the last item will be used\n// as descriptor. If there is a way to know which tool to use here please fix it.\nfunc extractDescriptor(meta *cyclonedx.Metadata) (desc sbom.Descriptor) {\n\tif meta == nil || meta.Tools == nil {\n\t\treturn\n\t}\n\n\t// handle 1.5 component element\n\tif meta.Tools.Components != nil {\n\t\tfor _, t := range *meta.Tools.Components {\n\t\t\tdesc.Name = t.Name\n\t\t\tdesc.Version = t.Version\n\t\t\treturn\n\t\t}\n\t}\n\n\t// handle pre-1.5 tool element\n\tif meta.Tools.Tools != nil {\n\t\tfor _, t := range *meta.Tools.Tools {\n\t\t\tdesc.Name = t.Name\n\t\t\tdesc.Version = t.Version\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/decoder_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc Test_decode(t *testing.T) {\n\ttype expected struct {\n\t\tos       string\n\t\tpkg      string\n\t\tver      string\n\t\trelation string\n\t\tpurl     string\n\t\tcpe      string\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tinput    cyclonedx.BOM\n\t\texpected []expected\n\t}{\n\t\t{\n\t\t\tname: \"basic mapping from cyclonedx\",\n\t\t\tinput: cyclonedx.BOM{\n\t\t\t\tMetadata: nil,\n\t\t\t\tComponents: &[]cyclonedx.Component{\n\t\t\t\t\t{\n\t\t\t\t\t\tBOMRef:      \"p1\",\n\t\t\t\t\t\tType:        cyclonedx.ComponentTypeLibrary,\n\t\t\t\t\t\tName:        \"package-1\",\n\t\t\t\t\t\tVersion:     \"1.0.1\",\n\t\t\t\t\t\tDescription: \"\",\n\t\t\t\t\t\tHashes:      nil,\n\t\t\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\t\t\t\tID: \"MIT\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCPE:        \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tPackageURL: \"pkg:some/package-1@1.0.1?arch=arm64&upstream=upstream1&distro=alpine-1\",\n\t\t\t\t\t\tExternalReferences: &[]cyclonedx.ExternalReference{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tURL:     \"\",\n\t\t\t\t\t\t\t\tComment: \"\",\n\t\t\t\t\t\t\t\tHashes:  nil,\n\t\t\t\t\t\t\t\tType:    \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"foundBy\",\n\t\t\t\t\t\t\t\tValue: \"the-cataloger-1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"language\",\n\t\t\t\t\t\t\t\tValue: \"python\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"type\",\n\t\t\t\t\t\t\t\tValue: \"python\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"metadataType\",\n\t\t\t\t\t\t\t\tValue: \"PythonPackageMetadata\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"path\",\n\t\t\t\t\t\t\t\tValue: \"/some/path/pkg1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tComponents: nil,\n\t\t\t\t\t\tEvidence:   nil,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tBOMRef:  \"p2\",\n\t\t\t\t\t\tType:    cyclonedx.ComponentTypeLibrary,\n\t\t\t\t\t\tName:    \"package-2\",\n\t\t\t\t\t\tVersion: \"2.0.2\",\n\t\t\t\t\t\tHashes:  nil,\n\t\t\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\t\t\t\tID: \"MIT\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCPE:        \"cpe:2.3:*:another:package:2:*:*:*:*:*:*:*\",\n\t\t\t\t\t\tPackageURL: \"pkg:apk/alpine/alpine-baselayout@3.2.0-r16?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.14.2\",\n\t\t\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"foundBy\",\n\t\t\t\t\t\t\t\tValue: \"apkdb-cataloger\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"type\",\n\t\t\t\t\t\t\t\tValue: \"apk\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"metadataType\",\n\t\t\t\t\t\t\t\tValue: \"ApkMetadata\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"path\",\n\t\t\t\t\t\t\t\tValue: \"/lib/apk/db/installed\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"layerID\",\n\t\t\t\t\t\t\t\tValue: \"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"originPackage\",\n\t\t\t\t\t\t\t\tValue: \"zlib\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"size\",\n\t\t\t\t\t\t\t\tValue: \"51213\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"installedSize\",\n\t\t\t\t\t\t\t\tValue: \"110592\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"pullDependencies\",\n\t\t\t\t\t\t\t\tValue: \"so:libc.musl-x86_64.so.1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"pullChecksum\",\n\t\t\t\t\t\t\t\tValue: \"Q1uss4DfpvL16Nw2YUTwmzGBABz3Y=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"gitCommitOfApkPort\",\n\t\t\t\t\t\t\t\tValue: \"d2bfb22c8e8f67ad7d8d02704f35ec4d2a19f9b9\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tType:    cyclonedx.ComponentTypeOS,\n\t\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t\t\tHashes:  nil,\n\t\t\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\t\t\t\tID: \"MIT\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: &[]cyclonedx.Property{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"prettyName\",\n\t\t\t\t\t\t\t\tValue: \"debian\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"id\",\n\t\t\t\t\t\t\t\tValue: \"debian\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tName:  \"versionID\",\n\t\t\t\t\t\t\t\tValue: \"1.2.3\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tComponents: nil,\n\t\t\t\t\t\tEvidence:   nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDependencies: &[]cyclonedx.Dependency{\n\t\t\t\t\t{\n\t\t\t\t\t\tRef:          \"p1\",\n\t\t\t\t\t\tDependencies: &[]string{\"p2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []expected{\n\t\t\t\t{\n\t\t\t\t\tos:  \"debian\",\n\t\t\t\t\tver: \"1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpkg:  \"package-1\",\n\t\t\t\t\tver:  \"1.0.1\",\n\t\t\t\t\tcpe:  \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n\t\t\t\t\tpurl: \"pkg:some/package-1@1.0.1?arch=arm64&upstream=upstream1&distro=alpine-1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpkg:      \"package-2\",\n\t\t\t\t\tver:      \"2.0.2\",\n\t\t\t\t\tpurl:     \"pkg:apk/alpine/alpine-baselayout@3.2.0-r16?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.14.2\",\n\t\t\t\t\trelation: \"package-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsbom, err := ToSyftModel(&test.input)\n\t\t\tassert.NoError(t, err)\n\n\t\ttest:\n\t\t\tfor _, e := range test.expected {\n\t\t\t\tif e.os != \"\" {\n\t\t\t\t\tassert.Equal(t, e.os, sbom.Artifacts.LinuxDistribution.ID)\n\t\t\t\t\tassert.Equal(t, e.ver, sbom.Artifacts.LinuxDistribution.VersionID)\n\t\t\t\t}\n\t\t\t\tif e.pkg != \"\" {\n\t\t\t\t\tfor p := range sbom.Artifacts.Packages.Enumerate() {\n\t\t\t\t\t\tif e.pkg != p.Name {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tassert.Equal(t, e.ver, p.Version)\n\n\t\t\t\t\t\tif e.cpe != \"\" {\n\t\t\t\t\t\t\tfoundCPE := false\n\t\t\t\t\t\t\tfor _, c := range p.CPEs {\n\t\t\t\t\t\t\t\tcstr := c.Attributes.BindToFmtString()\n\t\t\t\t\t\t\t\tif e.cpe == cstr {\n\t\t\t\t\t\t\t\t\tfoundCPE = true\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif !foundCPE {\n\t\t\t\t\t\t\t\tassert.Fail(t, fmt.Sprintf(\"CPE not found in package: %s\", e.cpe))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif e.purl != \"\" {\n\t\t\t\t\t\t\tassert.Equal(t, e.purl, p.PURL)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif e.relation != \"\" {\n\t\t\t\t\t\t\tfoundRelation := false\n\t\t\t\t\t\t\tfor _, r := range sbom.Relationships {\n\t\t\t\t\t\t\t\tp := sbom.Artifacts.Packages.Package(r.To.ID())\n\t\t\t\t\t\t\t\tif e.relation == p.Name {\n\t\t\t\t\t\t\t\t\tfoundRelation = true\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif !foundRelation {\n\t\t\t\t\t\t\t\tassert.Fail(t, fmt.Sprintf(\"relation not found: %s\", e.relation))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue test\n\t\t\t\t\t}\n\t\t\t\t\tassert.Fail(t, fmt.Sprintf(\"package should be present: %s\", e.pkg))\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_relationshipDirection(t *testing.T) {\n\tcyclonedx_bom := cyclonedx.BOM{Metadata: nil,\n\t\tComponents: &[]cyclonedx.Component{\n\t\t\t{\n\t\t\t\tBOMRef:     \"p1\",\n\t\t\t\tType:       cyclonedx.ComponentTypeLibrary,\n\t\t\t\tName:       \"package-1\",\n\t\t\t\tVersion:    \"1.0.1\",\n\t\t\t\tPackageURL: \"pkg:some/package-1@1.0.1?arch=arm64&upstream=upstream1&distro=alpine-1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tBOMRef:     \"p2\",\n\t\t\t\tType:       cyclonedx.ComponentTypeLibrary,\n\t\t\t\tName:       \"package-2\",\n\t\t\t\tVersion:    \"2.0.2\",\n\t\t\t\tPackageURL: \"pkg:some/package-2@2.0.2?arch=arm64&upstream=upstream1&distro=alpine-1\",\n\t\t\t},\n\t\t},\n\t\tDependencies: &[]cyclonedx.Dependency{\n\t\t\t{\n\t\t\t\tRef:          \"p1\",\n\t\t\t\tDependencies: &[]string{\"p2\"},\n\t\t\t},\n\t\t}}\n\tsbom, err := ToSyftModel(&cyclonedx_bom)\n\tassert.Nil(t, err)\n\tassert.Len(t, sbom.Relationships, 1)\n\trelationship := sbom.Relationships[0]\n\n\t// check that p2 -- dependency of --> p1\n\t// same as p1 -- depends on --> p2\n\tassert.Equal(t, artifact.DependencyOfRelationship, relationship.Type)\n\tassert.Equal(t, \"package-2\", packageNameFromIdentifier(sbom, relationship.From))\n\tassert.Equal(t, \"package-1\", packageNameFromIdentifier(sbom, relationship.To))\n}\n\nfunc packageNameFromIdentifier(model *sbom.SBOM, identifier artifact.Identifiable) string {\n\treturn model.Artifacts.Packages.Package(identifier.ID()).Name\n}\n\nfunc Test_missingDataDecode(t *testing.T) {\n\tbom := &cyclonedx.BOM{\n\t\tMetadata:    nil,\n\t\tComponents:  &[]cyclonedx.Component{},\n\t\tSpecVersion: cyclonedx.SpecVersion1_4,\n\t}\n\n\t_, err := ToSyftModel(bom)\n\tassert.NoError(t, err)\n\n\tbom.Metadata = &cyclonedx.Metadata{}\n\n\t_, err = ToSyftModel(bom)\n\tassert.NoError(t, err)\n\n\tpkg := decodeComponent(&cyclonedx.Component{\n\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t{\n\t\t\t\tLicense: nil,\n\t\t\t},\n\t\t},\n\t})\n\tassert.Equal(t, pkg.Licenses.Empty(), true)\n}\n\nfunc Test_decodeDependencies(t *testing.T) {\n\tc1 := cyclonedx.Component{\n\t\tName: \"c1\",\n\t}\n\n\tc2 := cyclonedx.Component{\n\t\tName: \"c2\",\n\t}\n\n\tc3 := cyclonedx.Component{\n\t\tName: \"c3\",\n\t}\n\n\tfor _, c := range []*cyclonedx.Component{&c1, &c2, &c3} {\n\t\tc.BOMRef = c.Name\n\t}\n\n\tsetTypes := func(typ cyclonedx.ComponentType, components ...cyclonedx.Component) *[]cyclonedx.Component {\n\t\tvar out []cyclonedx.Component\n\t\tfor _, c := range components {\n\t\t\tc.Type = typ\n\t\t\tout = append(out, c)\n\t\t}\n\t\treturn &out\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tsbom     cyclonedx.BOM\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"dependencies decoded as dependencyOf relationships\",\n\t\t\tsbom: cyclonedx.BOM{\n\t\t\t\tComponents: setTypes(cyclonedx.ComponentTypeLibrary,\n\t\t\t\t\tc1,\n\t\t\t\t\tc2,\n\t\t\t\t\tc3,\n\t\t\t\t),\n\t\t\t\tDependencies: &[]cyclonedx.Dependency{\n\t\t\t\t\t{\n\t\t\t\t\t\tRef: c1.BOMRef,\n\t\t\t\t\t\tDependencies: &[]string{\n\t\t\t\t\t\t\tc2.BOMRef,\n\t\t\t\t\t\t\tc3.BOMRef,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{c2.Name, c3.Name},\n\t\t},\n\t\t{\n\t\t\tname: \"dependencies skipped with unhandled components\",\n\t\t\tsbom: cyclonedx.BOM{\n\t\t\t\tComponents: setTypes(\"\",\n\t\t\t\t\tc1,\n\t\t\t\t\tc2,\n\t\t\t\t\tc3,\n\t\t\t\t),\n\t\t\t\tDependencies: &[]cyclonedx.Dependency{\n\t\t\t\t\t{\n\t\t\t\t\t\tRef: c1.BOMRef,\n\t\t\t\t\t\tDependencies: &[]string{\n\t\t\t\t\t\t\tc2.BOMRef,\n\t\t\t\t\t\t\tc3.BOMRef,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\ts, err := ToSyftModel(&test.sbom)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, s)\n\n\t\t\tvar deps []string\n\t\t\tif s != nil {\n\t\t\t\tfor _, r := range s.Relationships {\n\t\t\t\t\tif r.Type != artifact.DependencyOfRelationship {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif p, ok := r.To.(pkg.Package); !ok || p.Name != c1.Name {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif p, ok := r.From.(pkg.Package); ok {\n\t\t\t\t\t\tdeps = append(deps, p.Name)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\trequire.Equal(t, test.expected, deps)\n\t\t})\n\t}\n}\n\nfunc Test_useBomRefOverDerivedSyftArtifactID(t *testing.T) {\n\n\tpackageWithId := cyclonedx.Component{\n\t\tBOMRef:     \"pkg:maven/org.springframework.boot/spring-boot-starter-test?package-id=646a5a71a4abeee0\",\n\t\tType:       cyclonedx.ComponentTypeLibrary,\n\t\tName:       \"spring-boot-starter-test\",\n\t\tVersion:    \"\",\n\t\tPackageURL: \"pkg:maven/org.springframework.boot/spring-boot-starter-test\",\n\t}\n\n\tpackageWithoutId := cyclonedx.Component{\n\t\tBOMRef:     \"pkg:maven/org.springframework.boot/spring-boot-starter-webflux\",\n\t\tType:       cyclonedx.ComponentTypeLibrary,\n\t\tName:       \"spring-boot-starter-webflux\",\n\t\tVersion:    \"\",\n\t\tPackageURL: \"pkg:maven/org.springframework.boot/spring-boot-starter-webflux\",\n\t}\n\n\tbom := cyclonedx.BOM{Metadata: nil,\n\t\tComponents: &[]cyclonedx.Component{\n\t\t\tpackageWithId,\n\t\t\tpackageWithoutId,\n\t\t}}\n\n\ts, err := ToSyftModel(&bom)\n\n\tassert.Nil(t, err)\n\tassert.NotNil(t, s.Artifacts.Packages.Package(\"pkg:maven/org.springframework.boot/spring-boot-starter-test?package-id=646a5a71a4abeee0\"))\n\n\tpkgsWithoutID := s.Artifacts.Packages.PackagesByName(packageWithoutId.Name)\n\n\tassert.Len(t, pkgsWithoutID, 1)\n\tassert.NotEqual(t, \"\", pkgsWithoutID[0].ID())\n\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/description.go",
    "content": "package helpers\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc encodeDescription(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.ApkDBEntry:\n\t\t\treturn metadata.Description\n\t\tcase pkg.NpmPackage:\n\t\t\treturn metadata.Description\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc decodeDescription(description string, metadata interface{}) {\n\tswitch meta := metadata.(type) {\n\tcase *pkg.ApkDBEntry:\n\t\tmeta.Description = description\n\tcase *pkg.NpmPackage:\n\t\tmeta.Description = description\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/description_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tDescription: \"a description!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"a description!\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tDescription: \"a description!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"a description!\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tHomepage: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodeDescription(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/external_references.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/internal/file\"\n\tsyftFile \"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n//nolint:gocognit\nfunc encodeExternalReferences(p pkg.Package) *[]cyclonedx.ExternalReference {\n\tvar refs []cyclonedx.ExternalReference\n\tif hasMetadata(p) {\n\t\t// Skip adding extracted URL and Homepage metadata\n\t\t// as \"external_reference\" if the metadata isn't IRI-compliant\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.ApkDBEntry:\n\t\t\tif metadata.URL != \"\" && isValidExternalRef(metadata.URL) {\n\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.URL,\n\t\t\t\t\tType: cyclonedx.ERTypeDistribution,\n\t\t\t\t})\n\t\t\t}\n\t\tcase pkg.RustCargoLockEntry:\n\t\t\tif metadata.Source != \"\" {\n\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.Source,\n\t\t\t\t\tType: cyclonedx.ERTypeDistribution,\n\t\t\t\t})\n\t\t\t}\n\t\tcase pkg.NpmPackage:\n\t\t\tif metadata.URL != \"\" && isValidExternalRef(metadata.URL) {\n\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.URL,\n\t\t\t\t\tType: cyclonedx.ERTypeDistribution,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif metadata.Homepage != \"\" && isValidExternalRef(metadata.Homepage) {\n\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.Homepage,\n\t\t\t\t\tType: cyclonedx.ERTypeWebsite,\n\t\t\t\t})\n\t\t\t}\n\t\tcase pkg.RubyGemspec:\n\t\t\tif metadata.Homepage != \"\" && isValidExternalRef(metadata.Homepage) {\n\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.Homepage,\n\t\t\t\t\tType: cyclonedx.ERTypeWebsite,\n\t\t\t\t})\n\t\t\t}\n\t\tcase pkg.JavaArchive:\n\t\t\tif len(metadata.ArchiveDigests) > 0 {\n\t\t\t\tfor _, digest := range metadata.ArchiveDigests {\n\t\t\t\t\trefs = append(refs, cyclonedx.ExternalReference{\n\t\t\t\t\t\tURL:  \"\",\n\t\t\t\t\t\tType: cyclonedx.ERTypeBuildMeta,\n\t\t\t\t\t\tHashes: &[]cyclonedx.Hash{{\n\t\t\t\t\t\t\tAlgorithm: toCycloneDXAlgorithm(digest.Algorithm),\n\t\t\t\t\t\t\tValue:     digest.Value,\n\t\t\t\t\t\t}},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\tcase pkg.PythonPackage:\n\t\t\tif metadata.DirectURLOrigin != nil && metadata.DirectURLOrigin.URL != \"\" {\n\t\t\t\tref := cyclonedx.ExternalReference{\n\t\t\t\t\tURL:  metadata.DirectURLOrigin.URL,\n\t\t\t\t\tType: cyclonedx.ERTypeVCS,\n\t\t\t\t}\n\t\t\t\tif metadata.DirectURLOrigin.CommitID != \"\" {\n\t\t\t\t\tref.Comment = fmt.Sprintf(\"commit: %s\", metadata.DirectURLOrigin.CommitID)\n\t\t\t\t}\n\t\t\t\trefs = append(refs, ref)\n\t\t\t}\n\t\t}\n\t}\n\tif len(refs) > 0 {\n\t\treturn &refs\n\t}\n\treturn nil\n}\n\n// supported algorithm in cycloneDX as of 1.4\n// \"MD5\", \"SHA-1\", \"SHA-256\", \"SHA-384\", \"SHA-512\",\n// \"SHA3-256\", \"SHA3-384\", \"SHA3-512\", \"BLAKE2b-256\", \"BLAKE2b-384\", \"BLAKE2b-512\", \"BLAKE3\"\n// syft supported digests: cmd/syft/cli/eventloop/tasks.go\n// MD5, SHA1, SHA256\nfunc toCycloneDXAlgorithm(algorithm string) cyclonedx.HashAlgorithm {\n\tvalidMap := map[string]cyclonedx.HashAlgorithm{\n\t\t\"sha1\":   cyclonedx.HashAlgorithm(\"SHA-1\"),\n\t\t\"md5\":    cyclonedx.HashAlgorithm(\"MD5\"),\n\t\t\"sha256\": cyclonedx.HashAlgorithm(\"SHA-256\"),\n\t}\n\n\treturn validMap[strings.ToLower(algorithm)]\n}\n\nfunc decodeExternalReferences(c *cyclonedx.Component, metadata interface{}) {\n\tif c.ExternalReferences == nil {\n\t\treturn\n\t}\n\tswitch meta := metadata.(type) {\n\tcase *pkg.ApkDBEntry:\n\t\tmeta.URL = refURL(c, cyclonedx.ERTypeDistribution)\n\tcase *pkg.RustCargoLockEntry:\n\t\tmeta.Source = refURL(c, cyclonedx.ERTypeDistribution)\n\tcase *pkg.NpmPackage:\n\t\tmeta.URL = refURL(c, cyclonedx.ERTypeDistribution)\n\t\tmeta.Homepage = refURL(c, cyclonedx.ERTypeWebsite)\n\tcase *pkg.RubyGemspec:\n\t\tmeta.Homepage = refURL(c, cyclonedx.ERTypeWebsite)\n\tcase *pkg.JavaArchive:\n\t\tvar digests []syftFile.Digest\n\t\tif ref := findExternalRef(c, cyclonedx.ERTypeBuildMeta); ref != nil {\n\t\t\tif ref.Hashes != nil {\n\t\t\t\tfor _, hash := range *ref.Hashes {\n\t\t\t\t\tdigests = append(digests, syftFile.Digest{\n\t\t\t\t\t\tAlgorithm: file.CleanDigestAlgorithmName(string(hash.Algorithm)),\n\t\t\t\t\t\tValue:     hash.Value,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmeta.ArchiveDigests = digests\n\tcase *pkg.PythonPackage:\n\t\tif meta.DirectURLOrigin == nil {\n\t\t\tmeta.DirectURLOrigin = &pkg.PythonDirectURLOriginInfo{}\n\t\t}\n\t\tmeta.DirectURLOrigin.URL = refURL(c, cyclonedx.ERTypeVCS)\n\t\tmeta.DirectURLOrigin.CommitID = strings.TrimPrefix(refComment(c, cyclonedx.ERTypeVCS), \"commit: \")\n\t}\n}\n\nfunc findExternalRef(c *cyclonedx.Component, typ cyclonedx.ExternalReferenceType) *cyclonedx.ExternalReference {\n\tif c.ExternalReferences != nil {\n\t\tfor _, r := range *c.ExternalReferences {\n\t\t\tif r.Type == typ {\n\t\t\t\treturn &r\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc refURL(c *cyclonedx.Component, typ cyclonedx.ExternalReferenceType) string {\n\tif r := findExternalRef(c, typ); r != nil {\n\t\treturn r.URL\n\t}\n\treturn \"\"\n}\n\nfunc refComment(c *cyclonedx.Component, typ cyclonedx.ExternalReferenceType) string {\n\tif r := findExternalRef(c, typ); r != nil {\n\t\treturn r.Comment\n\t}\n\treturn \"\"\n}\n\n// isValidExternalRef checks for IRI-comppliance for input string to be added into \"external_reference\"\nfunc isValidExternalRef(s string) bool {\n\tparsed, err := url.Parse(s)\n\treturn err == nil && parsed != nil && parsed.Host != \"\"\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/external_references_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeExternalReferences(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected *[]cyclonedx.ExternalReference\n\t}{\n\t\t{\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tURL: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeDistribution},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from npm with valid URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeDistribution},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from npm with invalid URL but valid Homepage\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL:      \"b-place\",\n\t\t\t\t\tHomepage: \"http://b-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://b-place.gov\", Type: cyclonedx.ERTypeWebsite},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from cargo lock\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tName:     \"ansi_term\",\n\t\t\t\tVersion:  \"0.12.1\",\n\t\t\t\tLanguage: pkg.Rust,\n\t\t\t\tType:     pkg.RustPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:     \"ansi_term\",\n\t\t\t\t\tVersion:  \"0.12.1\",\n\t\t\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\t\t\tChecksum: \"d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2\",\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"winapi\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"registry+https://github.com/rust-lang/crates.io-index\", Type: cyclonedx.ERTypeDistribution},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from npm with homepage\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL:      \"http://a-place.gov\",\n\t\t\t\t\tHomepage: \"http://homepage\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeDistribution},\n\t\t\t\t{URL: \"http://homepage\", Type: cyclonedx.ERTypeWebsite},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from gem\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tHomepage: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeWebsite},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from python direct url\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tDirectURLOrigin: &pkg.PythonDirectURLOriginInfo{\n\t\t\t\t\t\tURL: \"http://a-place.gov\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeVCS},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from python direct url with commit\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tDirectURLOrigin: &pkg.PythonDirectURLOriginInfo{\n\t\t\t\t\t\tURL:      \"http://a-place.gov\",\n\t\t\t\t\t\tCommitID: \"test\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &[]cyclonedx.ExternalReference{\n\t\t\t\t{URL: \"http://a-place.gov\", Type: cyclonedx.ERTypeVCS, Comment: \"commit: test\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodeExternalReferences(test.input))\n\t\t})\n\t}\n}\n\nfunc Test_isValidExternalRef(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:     \"valid URL for external_reference, git protocol\",\n\t\t\tinput:    \"git+https://github.com/abc/def.git\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"valid URL for external_reference, git protocol\",\n\t\t\tinput:    \"git+https://github.com/abc/def.git\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"invalid URL for external_reference\",\n\t\t\tinput:    \"abc/def\",\n\t\t\texpected: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, isValidExternalRef(test.input))\n\t\t})\n\t}\n}\n\nfunc Test_toCycloneDXAlgorithm(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected cyclonedx.HashAlgorithm\n\t}{\n\t\t{\n\t\t\tname:     \"valid algorithm name in upper case\",\n\t\t\tinput:    \"SHA1\",\n\t\t\texpected: cyclonedx.HashAlgorithm(\"SHA-1\"),\n\t\t},\n\t\t{\n\t\t\tname:     \"valid algorithm name in lower case\",\n\t\t\tinput:    \"sha1\",\n\t\t\texpected: cyclonedx.HashAlgorithm(\"SHA-1\"),\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, toCycloneDXAlgorithm(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/group.go",
    "content": "package helpers\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc encodeGroup(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tif metadata, ok := p.Metadata.(pkg.JavaArchive); ok && metadata.PomProperties != nil {\n\t\t\treturn metadata.PomProperties.GroupID\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc decodeGroup(group string, metadata interface{}) {\n\tif meta, ok := metadata.(*pkg.JavaArchive); ok {\n\t\tif meta.PomProperties == nil {\n\t\t\tmeta.PomProperties = &pkg.JavaPomProperties{}\n\t\t}\n\t\tmeta.PomProperties.GroupID = group\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/group_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeGroup(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"metadata is not Java\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"metadata is Java but pom properties is empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"metadata is Java and contains pomProperties\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"test\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"test\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodeGroup(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/licenses.go",
    "content": "package helpers\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"strings\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// This should be a function that just surfaces licenses already validated in the package struct\nfunc encodeLicenses(p pkg.Package) *cyclonedx.Licenses {\n\tspdx, other, ex := separateLicenses(p)\n\tout := spdx\n\tout = append(out, other...)\n\n\tif len(other) > 0 || len(spdx) > 0 {\n\t\t// found non spdx related licenses\n\t\t// build individual license choices for each\n\t\t// complex expressions are not combined and set as NAME fields\n\t\tfor _, e := range ex {\n\t\t\tif e == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tout = append(out, cyclonedx.LicenseChoice{\n\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\tName: e,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t} else if len(ex) > 0 {\n\t\t// only expressions found\n\t\te := mergeSPDX(ex)\n\t\tif e != \"\" {\n\t\t\tout = append(out, cyclonedx.LicenseChoice{\n\t\t\t\tExpression: e,\n\t\t\t})\n\t\t}\n\t}\n\n\tif len(out) > 0 {\n\t\treturn &out\n\t}\n\n\treturn nil\n}\n\nfunc decodeLicenses(c *cyclonedx.Component) []pkg.License {\n\tlicenses := make([]pkg.License, 0)\n\tif c == nil || c.Licenses == nil {\n\t\treturn licenses\n\t}\n\n\tfor _, l := range *c.Licenses {\n\t\t// these fields are mutually exclusive in the spec\n\t\tswitch {\n\t\tcase l.License != nil && l.License.ID != \"\":\n\t\t\tlicenses = append(licenses, pkg.NewLicenseFromURLsWithContext(context.TODO(), l.License.ID, l.License.URL))\n\t\tcase l.License != nil && l.License.Name != \"\":\n\t\t\tlicenses = append(licenses, pkg.NewLicenseFromURLsWithContext(context.TODO(), l.License.Name, l.License.URL))\n\t\tcase l.License != nil && l.License.URL != \"\":\n\t\t\t// Try to enrich license from URL when ID and Name are empty\n\t\t\tlicenses = append(licenses, pkg.NewLicenseFromURLsWithContext(context.TODO(), \"\", l.License.URL))\n\t\tcase l.Expression != \"\":\n\t\t\tlicenses = append(licenses, pkg.NewLicenseWithContext(context.TODO(), l.Expression))\n\t\tdefault:\n\t\t}\n\t}\n\n\treturn licenses\n}\n\nfunc separateLicenses(p pkg.Package) (spdx, other cyclonedx.Licenses, expressions []string) {\n\tex := make([]string, 0)\n\tspdxc := cyclonedx.Licenses{}\n\totherc := cyclonedx.Licenses{}\n\t/*\n\t\t\tpkg.License can be a couple of things: see above declarations\n\t\t\t- Complex SPDX expression\n\t\t\t- Some other Valid license ID\n\t\t\t- Some non-standard non spdx license\n\n\t\t\tTo determine if an expression is a singular ID we first run it against the SPDX license list.\n\n\t\tThe weird case we run into is if there is a package with a license that is not a valid SPDX expression\n\t\t\tand a license that is a valid complex expression. In this case we will surface the valid complex expression\n\t\t\tas a license choice and the invalid expression as a license string.\n\n\t*/\n\tseen := make(map[string]bool)\n\tfor _, l := range p.Licenses.ToSlice() {\n\t\t// singular expression case\n\t\t// only ID field here since we guarantee that the license is valid\n\t\tif value, exists := spdxlicense.ID(l.SPDXExpression); exists {\n\t\t\tif len(l.URLs) > 0 {\n\t\t\t\tprocessLicenseURLs(l, value, &spdxc)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif _, exists := seen[value]; exists {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// try making set of license choices to avoid duplicates\n\t\t\t// only update if the license has more information\n\t\t\tspdxc = append(spdxc, cyclonedx.LicenseChoice{\n\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\tID: value,\n\t\t\t\t},\n\t\t\t})\n\t\t\tseen[value] = true\n\t\t\t// we have added the license to the SPDX license list check next license\n\t\t\tcontinue\n\t\t}\n\n\t\tif l.SPDXExpression != \"\" && !strings.HasPrefix(l.SPDXExpression, licenses.UnknownLicensePrefix) {\n\t\t\t// COMPLEX EXPRESSION CASE\n\t\t\tex = append(ex, l.SPDXExpression)\n\t\t\tcontinue\n\t\t}\n\n\t\t// license string that are not valid spdx expressions or ids\n\t\t// we only use license Name here since we cannot guarantee that the license is a valid SPDX expression\n\t\tif len(l.URLs) > 0 && !strings.HasPrefix(l.SPDXExpression, licenses.UnknownLicensePrefix) {\n\t\t\tprocessLicenseURLs(l, \"\", &otherc)\n\t\t\tcontinue\n\t\t}\n\n\t\totherc = append(otherc, processCustomLicense(l)...)\n\t}\n\treturn spdxc, otherc, ex\n}\n\nfunc processCustomLicense(l pkg.License) cyclonedx.Licenses {\n\tresult := cyclonedx.Licenses{}\n\tif strings.HasPrefix(l.SPDXExpression, licenses.UnknownLicensePrefix) {\n\t\tcyclonedxLicense := &cyclonedx.License{\n\t\t\tName: l.SPDXExpression,\n\t\t}\n\t\tif len(l.URLs) > 0 {\n\t\t\tcyclonedxLicense.URL = l.URLs[0]\n\t\t}\n\t\tif len(l.Contents) > 0 {\n\t\t\tcyclonedxLicense.Text = &cyclonedx.AttachedText{\n\t\t\t\tContent: base64.StdEncoding.EncodeToString([]byte(l.Contents)),\n\t\t\t}\n\t\t\tcyclonedxLicense.Text.ContentType = \"text/plain\"\n\t\t\tcyclonedxLicense.Text.Encoding = \"base64\"\n\t\t}\n\t\tresult = append(result, cyclonedx.LicenseChoice{\n\t\t\tLicense: cyclonedxLicense,\n\t\t})\n\t} else {\n\t\tresult = append(result, cyclonedx.LicenseChoice{\n\t\t\tLicense: &cyclonedx.License{\n\t\t\t\tName: l.Value,\n\t\t\t},\n\t\t})\n\t}\n\treturn result\n}\n\nfunc processLicenseURLs(l pkg.License, spdxID string, populate *cyclonedx.Licenses) {\n\tfor _, url := range l.URLs {\n\t\tif spdxID == \"\" {\n\t\t\t// CycloneDX requires either an id or name to be present for a license\n\t\t\t// If l.Value is empty, use the URL as the name to ensure schema compliance\n\t\t\t// at this point we've already tried to enrich the license we just don't want the format\n\t\t\t// conversion to be lossy here\n\t\t\tname := l.Value\n\t\t\tif name == \"\" {\n\t\t\t\tname = url\n\t\t\t}\n\t\t\t*populate = append(*populate, cyclonedx.LicenseChoice{\n\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\tURL:  url,\n\t\t\t\t\tName: name,\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\t*populate = append(*populate, cyclonedx.LicenseChoice{\n\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\tID:  spdxID,\n\t\t\t\t\tURL: url,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc mergeSPDX(ex []string) string {\n\tvar candidate []string\n\tfor _, e := range ex {\n\t\t// if the expression does not have balanced parens add them\n\t\tif !strings.HasPrefix(e, \"(\") && !strings.HasSuffix(e, \")\") {\n\t\t\te = \"(\" + e + \")\"\n\t\t}\n\t\tcandidate = append(candidate, e)\n\t}\n\n\tif len(candidate) == 1 {\n\t\treturn reduceOuter(candidate[0])\n\t}\n\n\treturn reduceOuter(strings.Join(candidate, \" AND \"))\n}\n\nfunc reduceOuter(expression string) string {\n\texpression = strings.TrimSpace(expression)\n\n\t// If the entire expression is wrapped in parentheses, check if they are redundant.\n\tif strings.HasPrefix(expression, \"(\") && strings.HasSuffix(expression, \")\") {\n\t\ttrimmed := expression[1 : len(expression)-1]\n\t\tif isBalanced(trimmed) {\n\t\t\treturn reduceOuter(trimmed) // Recursively reduce the trimmed expression.\n\t\t}\n\t}\n\n\treturn expression\n}\n\nfunc isBalanced(expression string) bool {\n\tcount := 0\n\tfor _, c := range expression {\n\t\tswitch c {\n\t\tcase '(':\n\t\t\tcount++\n\t\tcase ')':\n\t\t\tcount--\n\t\t\tif count < 0 {\n\t\t\t\treturn false\n\t\t\t}\n\t\tdefault:\n\t\t}\n\t}\n\treturn count == 0\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/licenses_test.go",
    "content": "package helpers\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodeLicense(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected *cyclonedx.Licenses\n\t}{\n\t\t{\n\t\t\tname:  \"no licenses\",\n\t\t\tinput: pkg.Package{},\n\t\t},\n\t\t{\n\t\t\tname: \"no SPDX licenses\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"RandomLicense\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"RandomLicense\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single SPDX ID and Non SPDX ID\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"mit\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"FOOBAR\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID: \"MIT\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"FOOBAR\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with complex SPDX license expression\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tExpression: \"MIT AND GPL-3.0-only\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with multiple complex SPDX license expression\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only WITH Classpath-exception-2.0\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tExpression: \"(MIT AND GPL-3.0-only) AND (MIT AND GPL-3.0-only WITH Classpath-exception-2.0)\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with multiple URLs and expressions\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://opensource.org/licenses/MIT\", \"https://spdx.org/licenses/MIT.html\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only\"),\n\t\t\t\t\tpkg.NewLicenseFromURLsWithContext(ctx, \"FakeLicense\", \"htts://someurl.com\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID:  \"MIT\",\n\t\t\t\t\t\tURL: \"https://opensource.org/licenses/MIT\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID:  \"MIT\",\n\t\t\t\t\t\tURL: \"https://spdx.org/licenses/MIT.html\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"FakeLicense\",\n\t\t\t\t\t\tURL:  \"htts://someurl.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"MIT AND GPL-3.0-only\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with URL only and no name or SPDX ID\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromURLsWithContext(ctx, \"\", \"http://jaxen.codehaus.org/license.html\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"http://jaxen.codehaus.org/license.html\",\n\t\t\t\t\t\tURL:  \"http://jaxen.codehaus.org/license.html\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with multiple values licenses are deduplicated\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"Apache-2\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"Apache-2.0\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID: \"Apache-2.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with multiple URLs and single with no URLs\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\t\tpkg.NewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://opensource.org/licenses/MIT\", \"https://spdx.org/licenses/MIT.html\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID:  \"MIT\",\n\t\t\t\t\t\tURL: \"https://opensource.org/licenses/MIT\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tID:  \"MIT\",\n\t\t\t\t\t\tURL: \"https://spdx.org/licenses/MIT.html\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\tName: \"MIT AND GPL-3.0-only\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single parenthesized SPDX expression\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, \"(MIT OR Apache-2.0)\")...),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tExpression: \"MIT OR Apache-2.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single license AND to parenthesized SPDX expression\",\n\t\t\t// (LGPL-3.0-or-later OR GPL-2.0-or-later OR (LGPL-3.0-or-later AND GPL-2.0-or-later)) AND GFDL-1.3-invariants-or-later\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, \"(LGPL-3.0-or-later OR GPL-2.0-or-later OR (LGPL-3.0-or-later AND GPL-2.0-or-later)) AND GFDL-1.3-invariants-or-later\")...),\n\t\t\t},\n\t\t\texpected: &cyclonedx.Licenses{\n\t\t\t\t{\n\t\t\t\t\tExpression: \"(LGPL-3.0-or-later OR GPL-2.0-or-later OR (LGPL-3.0-or-later AND GPL-2.0-or-later)) AND GFDL-1.3-invariants-or-later\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t// TODO: do we drop the non SPDX ID license and do a single expression\n\t\t// OR do we keep the non SPDX ID license and do multiple licenses where the complex\n\t\t// expressions are set as the NAME field?\n\t\t//{\n\t\t//\tname: \"with multiple complex SPDX license expression and a non spdx id\",\n\t\t//\tinput: pkg.Package{\n\t\t//\t\tLicenses: []pkg.License{\n\t\t//\t\t\t{\n\t\t//\t\t\t\tSPDXExpression: \"MIT AND GPL-3.0-only\",\n\t\t//\t\t\t},\n\t\t//\t\t\t{\n\t\t//\t\t\t\tSPDXExpression: \"MIT AND GPL-3.0-only WITH Classpath-exception-2.0\",\n\t\t//\t\t\t},\n\t\t//\t\t\t{\n\t\t//\t\t\t\tValue: \"FOOBAR\",\n\t\t//\t\t\t},\n\t\t//\t\t},\n\t\t//\t},\n\t\t//\texpected: &cyclonedx.Licenses{\n\t\t//\t\t{\n\t\t//\t\t\tExpression: \"(MIT AND GPL-3.0-only) AND (MIT AND GPL-3.0-only WITH Classpath-exception-2.0)\",\n\t\t//\t\t},\n\t\t//\t},\n\t\t//},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tif d := cmp.Diff(test.expected, encodeLicenses(test.input)); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected license (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDecodeLicenses(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    *cyclonedx.Component\n\t\texpected []pkg.License\n\t}{\n\t\t{\n\t\t\tname:     \"no licenses\",\n\t\t\tinput:    &cyclonedx.Component{},\n\t\t\texpected: []pkg.License{},\n\t\t},\n\t\t{\n\t\t\tname: \"no SPDX license ID or expression\",\n\t\t\tinput: &cyclonedx.Component{\n\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t{\n\t\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\t\tName: \"RandomLicense\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tValue: \"RandomLicense\",\n\t\t\t\t\t// CycloneDX specification doesn't give a field for determining the license type\n\t\t\t\t\tType: license.Declared,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with SPDX license ID\",\n\t\t\tinput: &cyclonedx.Component{\n\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t{\n\t\t\t\t\t\tLicense: &cyclonedx.License{\n\t\t\t\t\t\t\tID: \"MIT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with complex SPDX license expression\",\n\t\t\tinput: &cyclonedx.Component{\n\t\t\t\tLicenses: &cyclonedx.Licenses{\n\t\t\t\t\t{\n\t\t\t\t\t\t// CycloneDX specification doesn't allow to provide License if Expression is provided\n\t\t\t\t\t\tLicense:    nil,\n\t\t\t\t\t\tExpression: \"MIT AND GPL-3.0-only WITH Classpath-exception-2.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT AND GPL-3.0-only WITH Classpath-exception-2.0\",\n\t\t\t\t\tSPDXExpression: \"MIT AND GPL-3.0-only WITH Classpath-exception-2.0\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, decodeLicenses(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/properties.go",
    "content": "package helpers\n\nimport (\n\t\"strings\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n)\n\nvar (\n\tCycloneDXFields = RequiredTag(\"cyclonedx\")\n)\n\nfunc EncodeProperties(obj interface{}, prefix string) (out []cyclonedx.Property) {\n\tfor _, p := range Sorted(Encode(obj, prefix, CycloneDXFields)) {\n\t\tout = append(out, cyclonedx.Property{\n\t\t\tName:  p.Name,\n\t\t\tValue: p.Value,\n\t\t})\n\t}\n\treturn\n}\n\nfunc decodeProperties(properties []cyclonedx.Property, prefix string) map[string]string {\n\tlabels := make(map[string]string)\n\tfor _, property := range properties {\n\t\tif strings.HasPrefix(property.Name, prefix) {\n\t\t\tlabelName := strings.TrimPrefix(property.Name, prefix)\n\t\t\tlabels[labelName] = property.Value\n\t\t}\n\t}\n\treturn labels\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/property_encoder.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// FieldName return a flag to indicate this is a valid field and a name to use\ntype FieldName func(field reflect.StructField) (string, bool)\n\n// OptionalTag given a tag name, will return the defined tag or fall back to lower camel case field name\nfunc OptionalTag(tag string) FieldName {\n\treturn func(f reflect.StructField) (string, bool) {\n\t\tif n, ok := f.Tag.Lookup(tag); ok {\n\t\t\treturn n, true\n\t\t}\n\t\treturn lowerFirst(f.Name), true\n\t}\n}\n\n// TrimOmitempty trims `,omitempty` from the name\nfunc TrimOmitempty(fn FieldName) FieldName {\n\treturn func(f reflect.StructField) (string, bool) {\n\t\tif v, ok := fn(f); ok {\n\t\t\treturn strings.TrimSuffix(v, \",omitempty\"), true\n\t\t}\n\t\treturn \"\", false\n\t}\n}\n\n// RequiredTag based on the given tag, only use a field if present\nfunc RequiredTag(tag string) FieldName {\n\treturn func(f reflect.StructField) (string, bool) {\n\t\tif n, ok := f.Tag.Lookup(tag); ok {\n\t\t\treturn n, true\n\t\t}\n\t\treturn \"\", false\n\t}\n}\n\nvar (\n\t// OptionalJSONTag uses field names defined in json tags, if available\n\tOptionalJSONTag = TrimOmitempty(OptionalTag(\"json\"))\n)\n\n// lowerFirst converts the first character of the string to lower case\nfunc lowerFirst(s string) string {\n\treturn strings.ToLower(s[0:1]) + s[1:]\n}\n\n// Encode recursively encodes the object's properties as an ordered set of NameValue pairs\nfunc Encode(obj any, prefix string, fn FieldName) map[string]string {\n\tif obj == nil {\n\t\treturn nil\n\t}\n\tprops := map[string]string{}\n\tencode(props, reflect.ValueOf(obj), prefix, fn)\n\treturn props\n}\n\n// NameValue a simple type to store stringified name/value pairs\ntype NameValue struct {\n\tName  string\n\tValue string\n}\n\n// Sorted returns a sorted set of NameValue pairs\nfunc Sorted(values map[string]string) (out []NameValue) {\n\tvar keys []string\n\tfor k := range values {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\tfor _, k := range keys {\n\t\tout = append(out, NameValue{\n\t\t\tName:  k,\n\t\t\tValue: values[k],\n\t\t})\n\t}\n\treturn\n}\n\nfunc encode(out map[string]string, value reflect.Value, prefix string, fn FieldName) {\n\tif !value.IsValid() {\n\t\treturn\n\t}\n\n\ttyp := value.Type()\n\n\tswitch typ.Kind() {\n\tcase reflect.Ptr:\n\t\tif value.IsNil() {\n\t\t\treturn\n\t\t}\n\t\tvalue = value.Elem()\n\t\tencode(out, value, prefix, fn)\n\tcase reflect.String:\n\t\tv := value.String()\n\t\tif v != \"\" {\n\t\t\tout[prefix] = v\n\t\t}\n\tcase reflect.Bool:\n\t\tv := value.Bool()\n\t\tout[prefix] = strconv.FormatBool(v)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tv := value.Int()\n\t\tout[prefix] = strconv.FormatInt(v, 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tv := value.Uint()\n\t\tout[prefix] = strconv.FormatUint(v, 10)\n\tcase reflect.Float32, reflect.Float64:\n\t\tv := value.Float()\n\t\tout[prefix] = fmt.Sprintf(\"%f\", v)\n\tcase reflect.Array, reflect.Slice:\n\t\tfor idx := 0; idx < value.Len(); idx++ {\n\t\t\tencode(out, value.Index(idx), fmt.Sprintf(\"%s:%d\", prefix, idx), fn)\n\t\t}\n\tcase reflect.Struct:\n\t\tfor i := 0; i < typ.NumField(); i++ {\n\t\t\tpv := value.Field(i)\n\t\t\tf := typ.Field(i)\n\t\t\tname, ok := fieldName(f, prefix, fn)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tencode(out, pv, name, fn)\n\t\t}\n\tcase reflect.Map:\n\t\t// currently only map[string]string is really supported\n\t\tfor _, key := range value.MapKeys() {\n\t\t\tencode(out, value.MapIndex(key), fmt.Sprintf(\"%s:%v\", prefix, key.Interface()), fn)\n\t\t}\n\tdefault:\n\t\tlog.Debugf(\"skipping encoding of unsupported property: %s\", prefix)\n\t}\n}\n\n// fieldName gets the name of the field using the provided FieldName function\nfunc fieldName(f reflect.StructField, prefix string, fn FieldName) (string, bool) {\n\tname, ok := fn(f)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\tif name == \"\" {\n\t\treturn prefix, true\n\t}\n\tif prefix != \"\" {\n\t\tname = fmt.Sprintf(\"%s:%s\", prefix, name)\n\t}\n\treturn name, true\n}\n\n// Decode based on the given type, applies all values to hydrate a new instance\nfunc Decode(typ reflect.Type, values map[string]string, prefix string, fn FieldName) any {\n\tisPtr := false\n\tfor typ.Kind() == reflect.Ptr {\n\t\ttyp = typ.Elem()\n\t\tisPtr = true\n\t}\n\n\tisSlice := false\n\tif typ.Kind() == reflect.Slice {\n\t\ttyp = reflect.PointerTo(typ)\n\t\tisSlice = true\n\t}\n\n\tv := reflect.New(typ)\n\n\tdecode(values, v, prefix, fn)\n\n\tswitch {\n\tcase isSlice && isPtr:\n\t\treturn v.Elem().Interface()\n\tcase isSlice:\n\t\treturn PtrToStruct(v.Elem().Interface())\n\tcase isPtr:\n\t\treturn v.Interface()\n\t}\n\treturn v.Elem().Interface()\n}\n\n// DecodeInto decodes all values to hydrate the given object instance\nfunc DecodeInto(obj any, values map[string]string, prefix string, fn FieldName) {\n\tvalue := reflect.ValueOf(obj)\n\n\tfor value.Type().Kind() == reflect.Ptr {\n\t\tvalue = value.Elem()\n\t}\n\n\tdecode(values, value, prefix, fn)\n}\n\n//nolint:funlen,gocognit,gocyclo\nfunc decode(vals map[string]string, value reflect.Value, prefix string, fn FieldName) bool {\n\tif !value.IsValid() {\n\t\treturn false\n\t}\n\n\ttyp := value.Type()\n\n\tincoming, valid := vals[prefix]\n\tswitch typ.Kind() {\n\tcase reflect.Ptr:\n\t\tt := typ.Elem()\n\t\tv := value\n\t\tif v.IsNil() {\n\t\t\tv = reflect.New(t)\n\t\t}\n\t\tif decode(vals, v.Elem(), prefix, fn) && value.CanSet() {\n\t\t\to := v.Interface()\n\t\t\tlog.Tracef(\"%v\", o)\n\t\t\tvalue.Set(v)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.String:\n\t\tif valid {\n\t\t\tvalue.SetString(incoming)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Bool:\n\t\tif !valid {\n\t\t\treturn false\n\t\t}\n\t\tif b, err := strconv.ParseBool(incoming); err == nil {\n\t\t\tvalue.SetBool(b)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tif !valid {\n\t\t\treturn false\n\t\t}\n\t\tif i, err := strconv.ParseInt(incoming, 10, 64); err == nil {\n\t\t\tvalue.SetInt(i)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tif !valid {\n\t\t\treturn false\n\t\t}\n\t\tif i, err := strconv.ParseUint(incoming, 10, 64); err == nil {\n\t\t\tvalue.SetUint(i)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tif !valid {\n\t\t\treturn false\n\t\t}\n\t\tif i, err := strconv.ParseFloat(incoming, 64); err == nil {\n\t\t\tvalue.SetFloat(i)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Array, reflect.Slice:\n\t\tvalues := false\n\t\tt := typ.Elem()\n\t\tslice := reflect.MakeSlice(typ, 0, 0)\n\t\tfor idx := 0; ; idx++ {\n\t\t\t// test for index\n\t\t\tstr := fmt.Sprintf(\"%s:%d\", prefix, idx)\n\t\t\t// create new placeholder and decode values\n\t\t\tnewType := t\n\t\t\tif t.Kind() == reflect.Ptr {\n\t\t\t\tnewType = t.Elem()\n\t\t\t}\n\t\t\tv := reflect.New(newType)\n\t\t\tif decode(vals, v.Elem(), str, fn) {\n\t\t\t\t// append to slice\n\t\t\t\tif t.Kind() != reflect.Ptr {\n\t\t\t\t\tv = v.Elem()\n\t\t\t\t}\n\t\t\t\tslice = reflect.Append(slice, v)\n\t\t\t\tvalues = true\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif values {\n\t\t\tvalue.Set(slice)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Map:\n\t\tvalues := false\n\t\tkeyType := typ.Key()\n\t\tvalueType := typ.Elem()\n\t\toutMap := reflect.MakeMap(typ)\n\t\tstr := fmt.Sprintf(\"%s:\", prefix)\n\t\tkeyVals := map[string]string{}\n\t\t// iterate through all keys to find those prefixed with a reference to this map\n\t\t// NOTE: this will not work for nested maps\n\t\tfor key := range vals {\n\t\t\t// test for map prefix\n\t\t\tif strings.HasPrefix(key, str) {\n\t\t\t\tkeyVals[key] = strings.TrimPrefix(key, str)\n\t\t\t\t// create new placeholder and decode key\n\t\t\t\tnewKeyType := keyType\n\t\t\t\tif keyType.Kind() == reflect.Ptr {\n\t\t\t\t\tnewKeyType = keyType.Elem()\n\t\t\t\t}\n\t\t\t\tk := reflect.New(newKeyType)\n\t\t\t\tif !decode(keyVals, k.Elem(), key, fn) {\n\t\t\t\t\tlog.Debugf(\"unable to decode key for: %s\", key)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif keyType.Kind() != reflect.Ptr {\n\t\t\t\t\tk = k.Elem()\n\t\t\t\t}\n\n\t\t\t\t// create new placeholder and decode value\n\t\t\t\tnewValueType := valueType\n\t\t\t\tif valueType.Kind() == reflect.Ptr {\n\t\t\t\t\tnewValueType = valueType.Elem()\n\t\t\t\t}\n\t\t\t\tv := reflect.New(newValueType)\n\t\t\t\tif decode(vals, v.Elem(), key, fn) {\n\t\t\t\t\tif valueType.Kind() != reflect.Ptr {\n\t\t\t\t\t\tv = v.Elem()\n\t\t\t\t\t}\n\n\t\t\t\t\t// set in map\n\t\t\t\t\toutMap.SetMapIndex(k, v)\n\t\t\t\t\tvalues = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif values {\n\t\t\tvalue.Set(outMap)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase reflect.Struct:\n\t\tvalues := false\n\t\tfor i := 0; i < typ.NumField(); i++ {\n\t\t\tf := typ.Field(i)\n\t\t\tv := value.Field(i)\n\n\t\t\tname, ok := fieldName(f, prefix, fn)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif decode(vals, v, name, fn) {\n\t\t\t\tvalues = true\n\t\t\t}\n\t\t}\n\t\treturn values\n\tdefault:\n\t\tlog.Debugf(\"unable to set field: %s\", prefix)\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc PtrToStruct(ptr any) any {\n\tv := reflect.ValueOf(ptr)\n\tif v.IsZero() && v.Type().Kind() != reflect.Struct {\n\t\treturn nil\n\t}\n\tswitch v.Type().Kind() {\n\tcase reflect.Ptr:\n\t\treturn PtrToStruct(v.Elem().Interface())\n\tcase reflect.Interface:\n\t\treturn PtrToStruct(v.Elem().Interface())\n\tdefault:\n\t\tif v.CanInterface() {\n\t\t\treturn v.Interface()\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/property_encoder_test.go",
    "content": "package helpers\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\ntype T1 struct {\n\tName     string\n\tVal      int\n\tValU     uint\n\tFlag     bool `json:\"bool_flag\"`\n\tFloat    float64\n\tT2       T2\n\tT2Ptr    *T2\n\tT2Arr    []T2\n\tT2PtrArr []*T2\n\tStrArr   []string\n\tIntArr   []int\n\tFloatArr []float64\n\tBoolArr  []bool\n\tT3Arr    []T3\n}\n\ntype T2 struct {\n\tName string\n}\n\ntype T3 struct {\n\tT4Arr []T4\n}\n\ntype T4 struct {\n\tTyp    string\n\tIntPtr *int\n}\n\ntype T5 struct {\n\tMap map[string]string\n}\n\nfunc Test_EncodeDecodeCycle(t *testing.T) {\n\tval := 99\n\n\ttests := []struct {\n\t\tname  string\n\t\tvalue interface{}\n\t}{\n\t\t{\n\t\t\tname: \"all values\",\n\t\t\tvalue: T1{\n\t\t\t\tName:  \"name\",\n\t\t\t\tVal:   10,\n\t\t\t\tValU:  16,\n\t\t\t\tFlag:  true,\n\t\t\t\tFloat: 1.2,\n\t\t\t\tT2: T2{\n\t\t\t\t\tName: \"embedded t2\",\n\t\t\t\t},\n\t\t\t\tT2Ptr: &T2{\n\t\t\t\t\t\"t2 ptr\",\n\t\t\t\t},\n\t\t\t\tT2Arr: []T2{\n\t\t\t\t\t{\"t2 elem 0\"},\n\t\t\t\t\t{\"t2 elem 1\"},\n\t\t\t\t},\n\t\t\t\tT2PtrArr: []*T2{\n\t\t\t\t\t{\"t2 ptr v1\"},\n\t\t\t\t\t{\"t2 ptr v2\"},\n\t\t\t\t},\n\t\t\t\tStrArr:   []string{\"s 1\", \"s 2\", \"s 3\"},\n\t\t\t\tIntArr:   []int{9, 12, -1},\n\t\t\t\tFloatArr: []float64{-23.99, 15.234321, 39912342314},\n\t\t\t\tBoolArr:  []bool{false, true, true, true, false},\n\t\t\t\tT3Arr: []T3{\n\t\t\t\t\t{\n\t\t\t\t\t\tT4Arr: []T4{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tTyp: \"t4 nested typ 1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tTyp:    \"t4 nested typ 2\",\n\t\t\t\t\t\t\t\tIntPtr: &val,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nil values\",\n\t\t\tvalue: T1{\n\t\t\t\tName:     \"t1 test\",\n\t\t\t\tVal:      0,\n\t\t\t\tValU:     0,\n\t\t\t\tFlag:     false,\n\t\t\t\tFloat:    0,\n\t\t\t\tT2:       T2{},\n\t\t\t\tT2Ptr:    nil,\n\t\t\t\tT2Arr:    nil,\n\t\t\t\tT2PtrArr: nil,\n\t\t\t\tStrArr:   nil,\n\t\t\t\tIntArr:   nil,\n\t\t\t\tFloatArr: nil,\n\t\t\t\tBoolArr:  nil,\n\t\t\t\tT3Arr:    nil,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"array values\",\n\t\t\tvalue: []T2{\n\t\t\t\t{\"t2 elem 0\"},\n\t\t\t\t{\"t2 elem 1\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"array ptr\",\n\t\t\tvalue: &[]T2{\n\t\t\t\t{\"t2 elem 0\"},\n\t\t\t\t{\"t2 elem 1\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"map of strings\",\n\t\t\tvalue: &T5{\n\t\t\t\tMap: map[string]string{\n\t\t\t\t\t\"key1\": \"value1\",\n\t\t\t\t\t\"key2\": \"value2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tvals := Encode(test.value, \"props\", OptionalJSONTag)\n\n\t\t\ttyp := reflect.TypeOf(test.value)\n\n\t\t\tif typ.Kind() != reflect.Slice && typ.Kind() != reflect.Ptr {\n\t\t\t\tassert.NotEmpty(t, vals[\"props:bool_flag\"])\n\n\t\t\t\tt2 := T1{}\n\t\t\t\tDecodeInto(&t2, vals, \"props\", OptionalJSONTag)\n\n\t\t\t\tassert.EqualValues(t, test.value, t2)\n\t\t\t}\n\n\t\t\tt3 := Decode(typ, vals, \"props\", OptionalJSONTag)\n\n\t\t\tassert.EqualValues(t, test.value, t3)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/publisher.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc encodePublisher(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.ApkDBEntry:\n\t\t\treturn metadata.Maintainer\n\t\tcase pkg.RpmDBEntry:\n\t\t\treturn metadata.Vendor\n\t\tcase pkg.DpkgDBEntry:\n\t\t\treturn metadata.Maintainer\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc decodePublisher(publisher string, metadata interface{}) {\n\tswitch meta := metadata.(type) {\n\tcase *pkg.ApkDBEntry:\n\t\tmeta.Maintainer = publisher\n\tcase *pkg.RpmDBEntry:\n\t\tmeta.Vendor = publisher\n\tcase *pkg.DpkgDBEntry:\n\t\tmeta.Maintainer = publisher\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/helpers/publisher_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_encodePublisher(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tMaintainer: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from rpm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tVendor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from dpkg\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tMaintainer: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"auth\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, encodePublisher(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/cyclonedxutil/versions.go",
    "content": "package cyclonedxutil\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/CycloneDX/cyclonedx-go\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst (\n\tXMLFormatID  sbom.FormatID = \"cyclonedx-xml\"\n\tJSONFormatID sbom.FormatID = \"cyclonedx-json\"\n)\n\nfunc SupportedVersions(id sbom.FormatID) []string {\n\tversions := []string{\n\t\t\"1.2\",\n\t\t\"1.3\",\n\t\t\"1.4\",\n\t\t\"1.5\",\n\t\t\"1.6\",\n\t}\n\n\tif id != JSONFormatID {\n\t\t// JSON format not supported for version < 1.2\n\t\tversions = append([]string{\"1.0\", \"1.1\"}, versions...)\n\t}\n\n\treturn versions\n}\n\nfunc SpecVersionFromString(v string) (cyclonedx.SpecVersion, error) {\n\tswitch v {\n\tcase \"1.0\":\n\t\treturn cyclonedx.SpecVersion1_0, nil\n\tcase \"1.1\":\n\t\treturn cyclonedx.SpecVersion1_1, nil\n\tcase \"1.2\":\n\t\treturn cyclonedx.SpecVersion1_2, nil\n\tcase \"1.3\":\n\t\treturn cyclonedx.SpecVersion1_3, nil\n\tcase \"1.4\":\n\t\treturn cyclonedx.SpecVersion1_4, nil\n\tcase \"1.5\":\n\t\treturn cyclonedx.SpecVersion1_5, nil\n\tcase \"1.6\":\n\t\treturn cyclonedx.SpecVersion1_6, nil\n\t}\n\treturn -1, fmt.Errorf(\"unsupported CycloneDX version %q\", v)\n}\n\nfunc VersionFromSpecVersion(spec cyclonedx.SpecVersion) string {\n\tswitch spec {\n\tcase cyclonedx.SpecVersion1_0:\n\t\treturn \"1.0\"\n\tcase cyclonedx.SpecVersion1_1:\n\t\treturn \"1.1\"\n\tcase cyclonedx.SpecVersion1_2:\n\t\treturn \"1.2\"\n\tcase cyclonedx.SpecVersion1_3:\n\t\treturn \"1.3\"\n\tcase cyclonedx.SpecVersion1_4:\n\t\treturn \"1.4\"\n\tcase cyclonedx.SpecVersion1_5:\n\t\treturn \"1.5\"\n\tcase cyclonedx.SpecVersion1_6:\n\t\treturn \"1.6\"\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/format/internal/location_sorter.go",
    "content": "package internal\n\nimport (\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc GetLocationSorters(s sbom.SBOM) (func(a, b file.Location) int, func(a, b file.Coordinates) int) {\n\tvar layers []string\n\tif m, ok := s.Source.Metadata.(source.ImageMetadata); ok {\n\t\tfor _, l := range m.Layers {\n\t\t\tlayers = append(layers, l.Digest)\n\t\t}\n\t}\n\treturn file.LocationSorter(layers), file.CoordinatesSorter(layers)\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/description.go",
    "content": "package helpers\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc Description(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.ApkDBEntry:\n\t\t\treturn metadata.Description\n\t\tcase pkg.NpmPackage:\n\t\t\treturn metadata.Description\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc hasMetadata(p pkg.Package) bool {\n\treturn p.Metadata != nil\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/description_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_Description(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tDescription: \"a description!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"a description!\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tDescription: \"a description!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"a description!\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tHomepage: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, Description(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/document_name.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc DocumentName(src source.Description) string {\n\tif src.Name != \"\" {\n\t\treturn src.Name\n\t}\n\n\tswitch metadata := src.Metadata.(type) {\n\tcase source.ImageMetadata:\n\t\treturn metadata.UserInput\n\tcase source.OCIModelMetadata:\n\t\treturn metadata.UserInput\n\tcase source.DirectoryMetadata:\n\t\treturn metadata.Path\n\tcase source.FileMetadata:\n\t\treturn metadata.Path\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/document_name_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_DocumentName(t *testing.T) {\n\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname        string\n\t\tsrcMetadata source.Description\n\t\texpected    string\n\t}{\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"image-repo/name:tag\",\n\t\t\t\t\tID:             \"id\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"image-repo/name:tag\",\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.DirectoryMetadata{Path: \"some/path/to/place\"},\n\t\t\t},\n\t\t\texpected: \"some/path/to/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.FileMetadata{Path: \"some/path/to/place\"},\n\t\t\t},\n\t\t\texpected: \"some/path/to/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"snap\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tName: \"some/name\",\n\t\t\t\t// there is nothing in the snap metadata that indicates a name\n\t\t\t\tMetadata: source.SnapMetadata{},\n\t\t\t},\n\t\t\texpected: \"some/name\",\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"model-repo/name:tag\",\n\t\t\t\t\tID:             \"id\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"model-repo/name:tag\",\n\t\t},\n\t\t{\n\t\t\tname: \"named\",\n\t\t\tsrcMetadata: source.Description{\n\t\t\t\tName:     \"some/name\",\n\t\t\t\tMetadata: source.FileMetadata{Path: \"some/path/to/place\"},\n\t\t\t},\n\t\t\texpected: \"some/name\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := DocumentName(test.srcMetadata)\n\t\t\tassert.True(t, strings.HasPrefix(actual, test.expected), fmt.Sprintf(\"actual name %q\", actual))\n\n\t\t\t// track each scheme tested (passed or not)\n\t\t\ttracker.Tested(t, test.srcMetadata.Metadata)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/document_namespace.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/google/uuid\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst (\n\tInputImage     = \"image\"\n\tInputOCIModel  = \"oci-model\"\n\tInputDirectory = \"dir\"\n\tInputFile      = \"file\"\n\tInputSnap      = \"snap\"\n)\n\nfunc DocumentNameAndNamespace(src source.Description, desc sbom.Descriptor) (string, string) {\n\tname := DocumentName(src)\n\treturn name, DocumentNamespace(name, src, desc)\n}\n\nfunc DocumentNamespace(name string, src source.Description, desc sbom.Descriptor) string {\n\tname = cleanName(name)\n\tinput := \"unknown-source-type\"\n\tswitch src.Metadata.(type) {\n\tcase source.ImageMetadata:\n\t\tinput = InputImage\n\tcase source.OCIModelMetadata:\n\t\tinput = InputOCIModel\n\tcase source.DirectoryMetadata:\n\t\tinput = InputDirectory\n\tcase source.FileMetadata:\n\t\tinput = InputFile\n\tcase source.SnapMetadata:\n\t\tinput = InputSnap\n\t}\n\n\tuniqueID := uuid.Must(uuid.NewRandom())\n\tidentifier := path.Join(input, uniqueID.String())\n\tif name != \".\" {\n\t\tidentifier = path.Join(input, fmt.Sprintf(\"%s-%s\", name, uniqueID.String()))\n\t}\n\n\tu := url.URL{\n\t\tScheme: \"https\",\n\t\tHost:   \"anchore.com\",\n\t\tPath:   path.Join(desc.Name, identifier),\n\t}\n\n\treturn u.String()\n}\n\n// see: https://spdx.github.io/spdx-spec/v2.3/document-creation-information/#65-spdx-document-namespace-field\nfunc cleanName(name string) string {\n\t// remove # according to specification\n\tname = strings.ReplaceAll(name, \"#\", \"-\")\n\t// remove : for url construction\n\tname = strings.ReplaceAll(name, \":\", \"-\")\n\t// clean relative pathing\n\treturn path.Clean(name)\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/document_namespace_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_DocumentNamespace(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname      string\n\t\tinputName string\n\t\tsrc       source.Description\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tname:      \"image\",\n\t\t\tinputName: \"my-name\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"image-repo/name:tag\",\n\t\t\t\t\tID:             \"id\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://anchore.com/syft/image/my-name-\",\n\t\t},\n\t\t{\n\t\t\tname:      \"directory\",\n\t\t\tinputName: \"my-name\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path/to/place\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://anchore.com/syft/dir/my-name-\",\n\t\t},\n\t\t{\n\t\t\tname:      \"file\",\n\t\t\tinputName: \"my-name\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath: \"some/path/to/place\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://anchore.com/syft/file/my-name-\",\n\t\t},\n\t\t{\n\t\t\tname:      \"snap\",\n\t\t\tinputName: \"my-name\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.SnapMetadata{},\n\t\t\t},\n\t\t\texpected: \"https://anchore.com/syft/snap/my-name-\",\n\t\t},\n\t\t{\n\t\t\tname:      \"oci-model\",\n\t\t\tinputName: \"my-name\",\n\t\t\tsrc: source.Description{\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"model-repo/name:tag\",\n\t\t\t\t\tID:             \"id\",\n\t\t\t\t\tManifestDigest: \"digest\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://anchore.com/syft/oci-model/my-name-\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := DocumentNamespace(test.inputName, test.src, sbom.Descriptor{\n\t\t\t\tName: \"syft\",\n\t\t\t})\n\n\t\t\t// note: since the namespace ends with a UUID we check the prefix\n\t\t\tassert.True(t, strings.HasPrefix(actual, test.expected), fmt.Sprintf(\"expected prefix: '%s' got: '%s'\", test.expected, actual))\n\n\t\t\t// track each scheme tested (passed or not)\n\t\t\ttracker.Tested(t, test.src.Metadata)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/download_location.go",
    "content": "package helpers\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n\n\turilib \"github.com/spdx/gordf/uri\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst NONE = \"NONE\"\nconst NOASSERTION = \"NOASSERTION\"\nconst SUPPLIERORG = \"Organization\"\n\nfunc DownloadLocation(p pkg.Package) string {\n\t// 3.7: Package Download Location\n\t// Cardinality: mandatory, one\n\t// NONE if there is no download location whatsoever.\n\t// NOASSERTION if:\n\t//   (i) the SPDX file creator has attempted to but cannot reach a reasonable objective determination;\n\t//   (ii) the SPDX file creator has made no attempt to determine this field; or\n\t//   (iii) the SPDX file creator has intentionally provided no information (no meaning should be implied by doing so).\n\n\tvar location string\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.ApkDBEntry:\n\t\t\tlocation = metadata.URL\n\t\tcase pkg.NpmPackage:\n\t\t\tlocation = metadata.URL\n\t\tcase pkg.NpmPackageLockEntry:\n\t\t\tlocation = metadata.Resolved\n\t\tcase pkg.PhpComposerLockEntry:\n\t\t\tlocation = metadata.Dist.URL\n\t\tcase pkg.PhpComposerInstalledEntry:\n\t\t\tlocation = metadata.Dist.URL\n\t\tcase pkg.OpamPackage:\n\t\t\tlocation = metadata.URL\n\t\t}\n\t}\n\treturn URIValue(location)\n}\n\nfunc isURIValid(uri string) bool {\n\t_, err := urilib.NewURIRef(uri)\n\treturn err == nil\n}\n\nfunc URIValue(uri string) string {\n\tif strings.ToLower(uri) != \"none\" {\n\t\tif isURIValid(uri) {\n\t\t\treturn updateForGithub(url.Parse(uri))\n\t\t}\n\t\treturn NOASSERTION\n\t}\n\treturn NONE\n}\n\n// Github repository is a valid NPM location but not a valid SPDX DownloadURL\nfunc updateForGithub(uri *url.URL, err error) string {\n\tif err != nil {\n\t\treturn NOASSERTION\n\t}\n\tupdatedLocation := uri.String()\n\tif uri.Scheme == \"github\" {\n\t\tupdatedLocation = \"https://github.com/\" + uri.Opaque\n\t}\n\treturn updatedLocation\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/download_location_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_DownloadLocation(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tURL: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://a-place.gov\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://a-place.gov\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"from npm package-lock should include resolved\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackageLockEntry{\n\t\t\t\t\tResolved: \"http://package-lock.test\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://package-lock.test\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm package-lock empty should be NONE\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackageLockEntry{\n\t\t\t\t\tResolved: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"from php installed.json\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerInstalledEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"http://package-lock.test\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://package-lock.test\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerInstalledEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"from php composer.lock\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"http://package-lock.test\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://package-lock.test\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"none\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"none\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NONE,\n\t\t},\n\t\t{\n\t\t\tname: \"none uppercase\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"NONE\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NONE,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid uri\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"example/package\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: NOASSERTION,\n\t\t},\n\t\t{\n\t\t\tname: \"Basic Git Protocol URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git://git.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git://git.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTPS URL with .git Extension\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+https://git.myproject.org/MyProject.git\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+https://git.myproject.org/MyProject.git\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTP URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+http://git.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+http://git.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git SSH URL with .git Extension\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+ssh://git.myproject.org/MyProject.git\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+ssh://git.myproject.org/MyProject.git\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git Protocol with Prefix\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+git://git.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+git://git.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git URL with C File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git://git.myproject.org/MyProject#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git://git.myproject.org/MyProject#src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTPS URL with Java File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+https://git.myproject.org/MyProject#src/Class.java\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+https://git.myproject.org/MyProject#src/Class.java\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git URL with Master Branch\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git://git.myproject.org/MyProject.git@master\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git://git.myproject.org/MyProject.git@master\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTPS URL with Version Tag\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+https://git.myproject.org/MyProject.git@v1.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+https://git.myproject.org/MyProject.git@v1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git URL with Full Commit Hash\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTPS URL with Branch and CPP File Path\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+https://git.myproject.org/MyProject.git@master#/src/MyClass.cpp\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+https://git.myproject.org/MyProject.git@master#/src/MyClass.cpp\",\n\t\t},\n\t\t{\n\t\t\tname: \"Git HTTPS URL with Commit Hash and Ruby File\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"git+https://git.myproject.org/MyProject@da39a3ee5e6b4b0d3255bfef95601890afd80709#lib/variable.rb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"git+https://git.myproject.org/MyProject@da39a3ee5e6b4b0d3255bfef95601890afd80709#lib/variable.rb\",\n\t\t},\n\t\t{\n\t\t\tname: \"Basic Mercurial HTTP URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+http://hg.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+http://hg.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Basic Mercurial HTTPS URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Basic Mercurial SSH URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+ssh://hg.myproject.org/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+ssh://hg.myproject.org/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject#src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Java Class Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject#src/Class.java\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject#src/Class.java\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Commit Hash\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@da39a3ee5e6b\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@da39a3ee5e6b\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Year Reference\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@2019\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@2019\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Version Tag\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@v1.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@v1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Feature Branch\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@special_feature\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@special_feature\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Branch and File Path\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@master#/src/MyClass.cpp\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@master#/src/MyClass.cpp\",\n\t\t},\n\t\t{\n\t\t\tname: \"Mercurial URL with Commit Hash and Ruby File\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"hg+https://hg.myproject.org/MyProject@da39a3ee5e6b#lib/variable.rb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"hg+https://hg.myproject.org/MyProject@da39a3ee5e6b#lib/variable.rb\",\n\t\t},\n\n\t\t// Test cases for Subversion (svn) URLs\n\t\t{\n\t\t\tname: \"Basic SVN URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn://svn.myproject.org/svn/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn://svn.myproject.org/svn/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Protocol Prefix\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+svn://svn.myproject.org/svn/MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+svn://svn.myproject.org/svn/MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN HTTP URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+http://svn.myproject.org/svn/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+http://svn.myproject.org/svn/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN HTTPS URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/svn/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/svn/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with C File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject#src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Java Class Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject#src/Class.java\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject#src/Class.java\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Trunk and C File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject/trunk#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject/trunk#src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Full File Path\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject/trunk/src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject/trunk/src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Revision Number\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/svn/MyProject/trunk@2019\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/svn/MyProject/trunk@2019\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Revision and CPP File Path\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject@123#/src/MyClass.cpp\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject@123#/src/MyClass.cpp\",\n\t\t},\n\t\t{\n\t\t\tname: \"SVN URL with Trunk, Revision and Ruby File Path\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"svn+https://svn.myproject.org/MyProject/trunk@1234#lib/variable/variable.rb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"svn+https://svn.myproject.org/MyProject/trunk@1234#lib/variable/variable.rb\",\n\t\t},\n\n\t\t// Test cases for Bazaar (bzr) URLs\n\t\t{\n\t\t\tname: \"Bazaar HTTPS URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+https://bzr.myproject.org/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+https://bzr.myproject.org/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar HTTP URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+http://bzr.myproject.org/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+http://bzr.myproject.org/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar SFTP URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+sftp://myproject.org/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+sftp://myproject.org/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar SSH URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+ssh://myproject.org/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+ssh://myproject.org/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar FTP URL with Trunk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+ftp://myproject.org/MyProject/trunk\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+ftp://myproject.org/MyProject/trunk\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar Launchpad URL\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+lp:MyProject\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+lp:MyProject\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar URL with C File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+https://bzr.myproject.org/MyProject/trunk#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+https://bzr.myproject.org/MyProject/trunk#src/somefile.c\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar URL with Java Class Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+https://bzr.myproject.org/MyProject/trunk#src/Class.java\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+https://bzr.myproject.org/MyProject/trunk#src/Class.java\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar URL with Revision\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+https://bzr.myproject.org/MyProject/trunk@2019\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+https://bzr.myproject.org/MyProject/trunk@2019\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar URL with Version Tag\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+http://bzr.myproject.org/MyProject/trunk@v1.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+http://bzr.myproject.org/MyProject/trunk@v1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"Bazaar URL with Revision and C File Fragment\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\t\tURL: \"bzr+https://bzr.myproject.org/MyProject/trunk@2019#src/somefile.c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"bzr+https://bzr.myproject.org/MyProject/trunk@2019#src/somefile.c\",\n\t\t},\n\n\t\t{\n\t\t\tname: \"Github Repository\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tURL: \"github:anchore/syft\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"https://github.com/anchore/syft\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, DownloadLocation(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/external_ref.go",
    "content": "package helpers\n\ntype ReferenceCategory string\n\nconst (\n\tSecurityReferenceCategory       ReferenceCategory = \"SECURITY\"\n\tPackageManagerReferenceCategory ReferenceCategory = \"PACKAGE-MANAGER\"\n\tOtherReferenceCategory          ReferenceCategory = \"OTHER\"\n)\n\n// source: https://spdx.github.io/spdx-spec/v2.2.2/external-repository-identifiers/\n\ntype ExternalRefType string\n\nconst (\n\t// see https://nvd.nist.gov/cpe\n\tCpe22ExternalRefType ExternalRefType = \"cpe22Type\"\n\t// see https://nvd.nist.gov/cpe\n\tCpe23ExternalRefType ExternalRefType = \"cpe23Type\"\n\t// see http://repo1.maven.org/maven2/\n\tMavenCentralExternalRefType ExternalRefType = \"maven-central\"\n\t// see https://www.npmjs.com/\n\tNpmExternalRefType ExternalRefType = \"npm\"\n\t// see https://www.nuget.org/\n\tNugetExternalRefType ExternalRefType = \"nuget\"\n\t// see http://bower.io/\n\tBowerExternalRefType ExternalRefType = \"bower\"\n\t// see https://github.com/package-url/purl-spec\n\tPurlExternalRefType ExternalRefType = \"purl\"\n\t// These point to objects present in the Software Heritage archive by the means of SoftWare Heritage persistent Identifiers (SWHID)\n\tSwhExternalRefType ExternalRefType = \"swh\"\n)\n\ntype ExternalRef struct {\n\tComment string `json:\"comment,omitempty\"`\n\t// Category for the external reference.\n\tReferenceCategory ReferenceCategory `json:\"referenceCategory\"`\n\t// The unique string with no spaces necessary to access the package-specific information, metadata, or content\n\t// within the target location. The format of the locator is subject to constraints defined by the <type>.\n\tReferenceLocator string `json:\"referenceLocator\"`\n\t// Type of the external reference. These are defined in an appendix in the SPDX specification.\n\tReferenceType ExternalRefType `json:\"referenceType\"`\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/external_refs.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc ExternalRefs(p pkg.Package) (externalRefs []ExternalRef) {\n\texternalRefs = make([]ExternalRef, 0)\n\n\tfor _, c := range p.CPEs {\n\t\texternalRefs = append(externalRefs, ExternalRef{\n\t\t\tReferenceCategory: SecurityReferenceCategory,\n\t\t\tReferenceLocator:  c.Attributes.String(),\n\t\t\tReferenceType:     Cpe23ExternalRefType,\n\t\t})\n\t}\n\n\tif p.PURL != \"\" {\n\t\texternalRefs = append(externalRefs, ExternalRef{\n\t\t\tReferenceCategory: PackageManagerReferenceCategory,\n\t\t\tReferenceLocator:  p.PURL,\n\t\t\tReferenceType:     PurlExternalRefType,\n\t\t})\n\t}\n\n\treturn externalRefs\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/external_refs_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_ExternalRefs(t *testing.T) {\n\ttestCPE := cpe.Must(\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\", cpe.Source(\"\"))\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected []ExternalRef\n\t}{\n\t\t{\n\t\t\tname: \"cpe + purl\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\ttestCPE,\n\t\t\t\t},\n\t\t\t\tPURL: \"a-purl\",\n\t\t\t},\n\t\t\texpected: []ExternalRef{\n\t\t\t\t{\n\t\t\t\t\tReferenceCategory: SecurityReferenceCategory,\n\t\t\t\t\tReferenceLocator:  testCPE.Attributes.String(),\n\t\t\t\t\tReferenceType:     Cpe23ExternalRefType,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tReferenceCategory: PackageManagerReferenceCategory,\n\t\t\t\t\tReferenceLocator:  \"a-purl\",\n\t\t\t\t\tReferenceType:     PurlExternalRefType,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, ExternalRefs(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/file_type.go",
    "content": "package helpers\n\ntype FileType string\n\nconst (\n\tDocumentationFileType FileType = \"DOCUMENTATION\" // if the file serves as documentation\n\tImageFileType         FileType = \"IMAGE\"         // if the file is associated with a picture image file (MIME type of image/*, e.g., .jpg, .gif)\n\tVideoFileType         FileType = \"VIDEO\"         // if the file is associated with a video file type (MIME type of video/*)\n\tArchiveFileType       FileType = \"ARCHIVE\"       // if the file represents an archive (.tar, .jar, etc.)\n\tSpdxFileType          FileType = \"SPDX\"          // if the file is an SPDX document\n\tApplicationFileType   FileType = \"APPLICATION\"   // if the file is associated with a specific application type (MIME type of application/*)\n\tSourceFileType        FileType = \"SOURCE\"        // if the file is human readable source code (.c, .html, etc.)\n\tBinaryFileType        FileType = \"BINARY\"        // if the file is a compiled object, target image or binary executable (.o, .a, etc.)\n\tTextFileType          FileType = \"TEXT\"          // if the file is human readable text file (MIME type of text/*)\n\tAudioFileType         FileType = \"AUDIO\"         // if the file is associated with an audio file (MIME type of audio/* , e.g. .mp3)\n\tOtherFileType         FileType = \"OTHER\"         // if the file doesn't fit into the above categories (generated artifacts, data files, etc.)\n)\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/h_digest.go",
    "content": "package helpers\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"strings\"\n)\n\n// HDigestToSHA converts a h# digest, such as h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= to an\n// algorithm such as sha256 and a hex encoded digest\nfunc HDigestToSHA(digest string) (string, string, error) {\n\t// hash is base64, but we need hex encode\n\tparts := strings.Split(digest, \":\")\n\tif len(parts) == 2 {\n\t\talgo := parts[0]\n\t\thash := parts[1]\n\t\tchecksum, err := base64.StdEncoding.DecodeString(hash)\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", err\n\t\t}\n\n\t\thexStr := hex.EncodeToString(checksum)\n\n\t\tswitch algo {\n\t\t// golang h1 hash == sha256\n\t\tcase \"h1\":\n\t\t\talgo = \"sha256\"\n\t\tdefault:\n\t\t\treturn \"\", \"\", fmt.Errorf(\"unsupported h#digest algorithm: %s\", algo)\n\t\t}\n\n\t\treturn algo, hexStr, nil\n\t}\n\n\treturn \"\", \"\", fmt.Errorf(\"invalid h#digest: %s\", digest)\n}\n\n// HDigestFromSHA converts an algorithm, such sha256 with a hex encoded digest to a\n// h# value such as h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\nfunc HDigestFromSHA(algorithm string, digest string) (string, error) {\n\tif digest == \"\" {\n\t\treturn \"\", fmt.Errorf(\"no digest value provided\")\n\t}\n\t// digest is hex, but we need to base64 encode\n\talgorithm = strings.ToLower(algorithm)\n\tif algorithm == \"sha256\" {\n\t\tchecksum, err := hex.DecodeString(digest)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\t// hash is hex, but we need base64\n\t\tb64digest := base64.StdEncoding.EncodeToString(checksum)\n\t\treturn fmt.Sprintf(\"h1:%s\", b64digest), nil\n\t}\n\treturn \"\", fmt.Errorf(\"not a recognized h#digest algorithm: %s\", algorithm)\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/h_digest_test.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_HDigestToSHA(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\thDigest  string\n\t\texpected string\n\t\terror    bool\n\t}{\n\t\t{\n\t\t\tname:     \"valid h1digest\",\n\t\t\thDigest:  \"h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\",\n\t\t\texpected: \"sha256:f10a9c0e0ceb52a9546ff1b63d04d68ae786a33b91d7cf3881d74ccb093a88b5\",\n\t\t\terror:    false,\n\t\t},\n\t\t{\n\t\t\tname:     \"other valid h1digest\",\n\t\t\thDigest:  \"h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\",\n\t\t\texpected: \"sha256:4933fc0ef0f273f748e5bf13e61b21b648d2f84e364e7cac34250f7637221a16\",\n\t\t\terror:    false,\n\t\t},\n\t\t{\n\t\t\tname:     \"invalid h1digest\",\n\t\t\thDigest:  \"h12:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\",\n\t\t\texpected: \"\",\n\t\t\terror:    true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\talgo, digest, err := HDigestToSHA(test.hDigest)\n\t\t\tif test.error {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\tgot := fmt.Sprintf(\"%s:%s\", algo, digest)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_HDigestFromSHA(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsha      string\n\t\texpected string\n\t\terror    bool\n\t}{\n\t\t{\n\t\t\tname:     \"valid sha\",\n\t\t\tsha:      \"sha256:f10a9c0e0ceb52a9546ff1b63d04d68ae786a33b91d7cf3881d74ccb093a88b5\",\n\t\t\texpected: \"h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\",\n\t\t\terror:    false,\n\t\t},\n\t\t{\n\t\t\tname:     \"other valid sha\",\n\t\t\tsha:      \"sha256:4933fc0ef0f273f748e5bf13e61b21b648d2f84e364e7cac34250f7637221a16\",\n\t\t\texpected: \"h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\",\n\t\t\terror:    false,\n\t\t},\n\t\t{\n\t\t\tname:     \"invalid sha\",\n\t\t\texpected: \"h12:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\",\n\t\t\tsha:      \"sha256:f10a9c0e0zzzzceb52a99968ae786a33b91d7cf3881d74ccb093a88b5\",\n\t\t\terror:    true,\n\t\t},\n\t\t{\n\t\t\tname:     \"invalid algorithm\",\n\t\t\texpected: \"h12:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\",\n\t\t\tsha:      \"sha1:f10a9c0e0ceb52a9546ff1b63d04d68ae786a33b91d7cf3881d74ccb093a88b5\",\n\t\t\terror:    true,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty sha\",\n\t\t\texpected: \"\",\n\t\t\tsha:      \"sha256:\",\n\t\t\terror:    true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tparts := strings.Split(test.sha, \":\")\n\t\t\talgo := parts[0]\n\t\t\tdigest := parts[1]\n\t\t\tgot, err := HDigestFromSHA(algo, digest)\n\t\t\tif test.error {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/homepage.go",
    "content": "package helpers\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc Homepage(p pkg.Package) string {\n\tif hasMetadata(p) {\n\t\tswitch metadata := p.Metadata.(type) {\n\t\tcase pkg.RubyGemspec:\n\t\t\treturn metadata.Homepage\n\t\tcase pkg.NpmPackage:\n\t\t\treturn metadata.Homepage\n\t\t}\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/homepage_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_Homepage(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:     \"no metadata\",\n\t\t\tinput:    pkg.Package{},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from gem\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tHomepage: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://a-place.gov\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tHomepage: \"http://a-place.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"http://a-place.gov\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tHomepage: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, Homepage(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/license.go",
    "content": "package helpers\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/spdx/tools-golang/spdx\"\n\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc License(p pkg.Package) (concluded, declared string, otherLicenses []spdx.OtherLicense) {\n\t// source: https://spdx.github.io/spdx-spec/v2.3/package-information/#713-concluded-license-field\n\t// The options to populate this field are limited to:\n\t// A valid SPDX License Expression as defined in Annex D;\n\t// NONE, if the SPDX file creator concludes there is no license available for this package; or\n\t// NOASSERTION if:\n\t//   (i) the SPDX file creator has attempted to but cannot reach a reasonable objective determination;\n\t//   (ii) the SPDX file creator has made no attempt to determine this field; or\n\t//   (iii) the SPDX file creator has intentionally provided no information (no meaning should be implied by doing so).\n\n\tif p.Licenses.Empty() {\n\t\treturn NOASSERTION, NOASSERTION, nil\n\t}\n\n\t// take all licenses and assume an AND expression;\n\t// for information about license expressions see:\n\t// https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/\n\tpc, pd, ol := ParseLicenses(p.Licenses.ToSlice())\n\n\treturn joinLicenses(pc), joinLicenses(pd), ol\n}\n\nfunc joinLicenses(licenses []SPDXLicense) string {\n\tif len(licenses) == 0 {\n\t\treturn NOASSERTION\n\t}\n\n\tvar newLicenses []string\n\n\tfor _, l := range licenses {\n\t\tv := l.ID\n\t\t// check if license does not start or end with parens\n\t\tif !strings.HasPrefix(v, \"(\") && !strings.HasSuffix(v, \")\") {\n\t\t\t// if license contains AND, OR, or WITH, then wrap in parens\n\t\t\tif strings.Contains(v, \" AND \") ||\n\t\t\t\tstrings.Contains(v, \" OR \") ||\n\t\t\t\tstrings.Contains(v, \" WITH \") {\n\t\t\t\tnewLicenses = append(newLicenses, \"(\"+v+\")\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tnewLicenses = append(newLicenses, v)\n\t}\n\n\treturn strings.Join(newLicenses, \" AND \")\n}\n\ntype SPDXLicense struct {\n\t// Valid SPDX ID OR License Value (should have LicenseRef- prefix and be sanitized)\n\t// OR combination of the above as a valid SPDX License Expression as defined in Annex D.\n\t// https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/\n\tID string\n\t// If the SPDX license is not on the SPDX License List\n\tLicenseName string\n\tFullText    string // 0..1 (Mandatory, one) if there is a License Identifier assigned (LicenseRef).\n\tURLs        []string\n}\n\nfunc ParseLicenses(raw []pkg.License) (concluded, declared []SPDXLicense, otherLicenses []spdx.OtherLicense) {\n\tfor _, l := range raw {\n\t\tcandidate := createSPDXLicense(l)\n\n\t\t// this determines if the candidate falls under https://spdx.github.io/spdx-spec/v2.3/other-licensing-information-detected/#\n\t\t// of the SPDX spec, where:\n\t\t// - we should not have a complex SPDX expression\n\t\t// - if a single license, it should not be a known license (on the SPDX license list)\n\t\tif l.SPDXExpression == \"\" && strings.Contains(candidate.ID, spdxlicense.LicenseRefPrefix) {\n\t\t\totherLicenses = append(otherLicenses, spdx.OtherLicense{\n\t\t\t\tLicenseIdentifier:      candidate.ID,\n\t\t\t\tExtractedText:          candidate.FullText,\n\t\t\t\tLicenseName:            candidate.LicenseName,\n\t\t\t\tLicenseCrossReferences: candidate.URLs,\n\t\t\t})\n\t\t}\n\t\tswitch l.Type {\n\t\tcase license.Concluded:\n\t\t\tconcluded = append(concluded, candidate)\n\t\tcase license.Declared:\n\t\t\tdeclared = append(declared, candidate)\n\t\t}\n\t}\n\n\treturn concluded, declared, otherLicenses\n}\n\nfunc createSPDXLicense(l pkg.License) SPDXLicense {\n\t// source: https://spdx.github.io/spdx-spec/v2.3/other-licensing-information-detected/#102-extracted-text-field\n\t// we need to populate this field in the spdx document if we have a license ref\n\t// 0..1 (Mandatory, one) if there is a License Identifier assigned (LicenseRef).\n\tft := NOASSERTION\n\tif l.Contents != \"\" {\n\t\tft = l.Contents\n\t}\n\n\treturn SPDXLicense{\n\t\tID:          generateLicenseID(l),\n\t\tLicenseName: l.Value,\n\t\tFullText:    ft,\n\t\tURLs:        l.URLs,\n\t}\n}\n\n// generateLicenseID generates a license ID for the given license, which is either the license value or the SPDX expression.\nfunc generateLicenseID(l pkg.License) string {\n\tif l.SPDXExpression != \"\" {\n\t\treturn l.SPDXExpression\n\t}\n\n\t// syft format includes the algo for the sha in the values\n\t// we can strip this and just make LicenseRef-<sum> for spdx consumption\n\tid := strings.ReplaceAll(l.Value, \"sha256:\", \"\")\n\tif !strings.HasPrefix(id, \"LicenseRef-\") {\n\t\tid = \"LicenseRef-\" + id\n\t}\n\treturn SanitizeElementID(id)\n}\n\ntype SPDXOtherLicenseSet struct {\n\tset map[string]spdx.OtherLicense\n}\n\nfunc NewSPDXOtherLicenseSet() *SPDXOtherLicenseSet {\n\treturn &SPDXOtherLicenseSet{\n\t\tset: make(map[string]spdx.OtherLicense),\n\t}\n}\n\nfunc (s *SPDXOtherLicenseSet) Add(licenses ...spdx.OtherLicense) {\n\tfor _, l := range licenses {\n\t\ts.set[l.LicenseIdentifier] = l\n\t}\n}\n\ntype ByLicenseIdentifier []spdx.OtherLicense\n\nfunc (o ByLicenseIdentifier) Len() int      { return len(o) }\nfunc (o ByLicenseIdentifier) Swap(i, j int) { o[i], o[j] = o[j], o[i] }\nfunc (o ByLicenseIdentifier) Less(i, j int) bool {\n\treturn o[i].LicenseIdentifier < o[j].LicenseIdentifier\n}\n\nfunc (s *SPDXOtherLicenseSet) ToSlice() []spdx.OtherLicense {\n\tvalues := make([]spdx.OtherLicense, 0, len(s.set))\n\tfor _, v := range s.set {\n\t\tvalues = append(values, v)\n\t}\n\tsort.Sort(ByLicenseIdentifier(values))\n\treturn values\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/license_test.go",
    "content": "package helpers\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_License(t *testing.T) {\n\tctx := context.TODO()\n\ttype expected struct {\n\t\tconcluded string\n\t\tdeclared  string\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected expected\n\t}{\n\t\t{\n\t\t\tname:  \"no licenses\",\n\t\t\tinput: pkg.Package{},\n\t\t\texpected: expected{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\tdeclared:  \"NOASSERTION\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"no SPDX licenses\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"made-up\")),\n\t\t\t},\n\t\t\texpected: expected{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\tdeclared:  \"LicenseRef-made-up\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with SPDX license\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\t\t},\n\t\t\texpected: struct {\n\t\t\t\tconcluded string\n\t\t\t\tdeclared  string\n\t\t\t}{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\tdeclared:  \"MIT\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with SPDX license expression\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-3.0-only\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: expected{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\t// because we sort licenses alphabetically GPL ends up at the start\n\t\t\t\tdeclared: \"GPL-3.0-only AND MIT\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"includes valid LicenseRef-\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"one thing first\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"two things/#$^second\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: expected{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\t// because we separate licenses between valid SPDX and non valid, valid ID always end at the front\n\t\t\t\tdeclared: \"MIT AND LicenseRef-one-thing-first AND LicenseRef-two-things----second\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"join parentheses correctly\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"one thing first\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT AND GPL-3.0-only\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT OR APACHE-2.0\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: expected{\n\t\t\t\tconcluded: \"NOASSERTION\",\n\t\t\t\t// because we separate licenses between valid SPDX and non valid, valid ID always end at the front\n\t\t\t\tdeclared: \"(MIT AND GPL-3.0-only) AND (MIT OR APACHE-2.0) AND LicenseRef-one-thing-first\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc, d, _ := License(test.input)\n\t\t\tassert.Equal(t, test.expected.concluded, c)\n\t\t\tassert.Equal(t, test.expected.declared, d)\n\t\t})\n\t}\n}\n\nfunc TestGenerateLicenseID(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tlicense  pkg.License\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"SPDX expression is preferred\",\n\t\t\tlicense: pkg.License{\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tValue:          \"SomeValue\",\n\t\t\t\tContents:       \"Some text\",\n\t\t\t},\n\t\t\texpected: \"Apache-2.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"Uses value if no SPDX expression\",\n\t\t\tlicense: pkg.License{\n\t\t\t\tValue: \"my-sweet-custom-license\",\n\t\t\t},\n\t\t\texpected: spdxlicense.LicenseRefPrefix + \"my-sweet-custom-license\",\n\t\t},\n\t\t{\n\t\t\t// note: this is an oversight of the SPDX spec. It does NOT allow \"+\" in the ID even though they are\n\t\t\t//  significant to the licenses in the expressions below\n\t\t\tname: \"Long value is sanitized correctly\",\n\t\t\tlicense: pkg.License{\n\t\t\t\tValue: \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\",\n\t\t\t},\n\t\t\texpected: spdxlicense.LicenseRefPrefix +\n\t\t\t\t\"LGPLv2--and-LGPLv2--with-exceptions-and-GPLv2--and-GPLv2--with-exceptions-and-BSD-and-Inner-Net-and-ISC-and-Public-Domain-and-GFDL\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tid := generateLicenseID(tt.license)\n\t\t\tif tt.expected == \"\" {\n\t\t\t\tassert.True(t, len(id) > len(spdxlicense.LicenseRefPrefix))\n\t\t\t\tassert.Contains(t, id, spdxlicense.LicenseRefPrefix)\n\t\t\t} else {\n\t\t\t\tassert.Equal(t, tt.expected, id)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_joinLicenses(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\targs []SPDXLicense\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"multiple licenses\",\n\t\t\targs: []SPDXLicense{{ID: \"MIT\"}, {ID: \"GPL-3.0-only\"}},\n\t\t\twant: \"MIT AND GPL-3.0-only\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple licenses with complex expressions\",\n\t\t\targs: []SPDXLicense{{ID: \"MIT AND Apache\"}, {ID: \"GPL-3.0-only\"}},\n\t\t\twant: \"(MIT AND Apache) AND GPL-3.0-only\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equalf(t, tt.want, joinLicenses(tt.args), \"joinLicenses(%v)\", tt.args)\n\t\t})\n\t}\n}\n\nfunc TestCreateSPDXLicenseAndGenerateLicenseID(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.License\n\t\texpected SPDXLicense\n\t}{\n\t\t{\n\t\t\tname: \"SPDX expression used as ID\",\n\t\t\tinput: pkg.License{\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tContents:       \"\",\n\t\t\t},\n\t\t\texpected: SPDXLicense{\n\t\t\t\tID:          \"MIT\",\n\t\t\t\tLicenseName: \"MIT\",\n\t\t\t\tFullText:    \"NOASSERTION\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseRef with contents\",\n\t\t\tinput: pkg.License{\n\t\t\t\tValue:    \"sha256:123abc\",\n\t\t\t\tContents: \"license contents here\",\n\t\t\t},\n\t\t\texpected: SPDXLicense{\n\t\t\t\tID:          \"LicenseRef-123abc\",\n\t\t\t\tLicenseName: \"sha256:123abc\",\n\t\t\t\tFullText:    \"license contents here\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LicenseRef without contents\",\n\t\t\tinput: pkg.License{\n\t\t\t\tValue:    \"custom-license\",\n\t\t\t\tContents: \"\",\n\t\t\t},\n\t\t\texpected: SPDXLicense{\n\t\t\t\tID:          \"LicenseRef-custom-license\",\n\t\t\t\tLicenseName: \"custom-license\",\n\t\t\t\tFullText:    \"NOASSERTION\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"URL is passed through\",\n\t\t\tinput: pkg.License{\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"https://example.com/license\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: SPDXLicense{\n\t\t\t\tID:       \"MIT\",\n\t\t\t\tFullText: \"NOASSERTION\",\n\t\t\t\tURLs:     []string{\"https://example.com/license\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tlicense := createSPDXLicense(tt.input)\n\t\t\tif d := cmp.Diff(tt.expected, license); d != \"\" {\n\t\t\t\tt.Errorf(\"createSPDXLicense() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/originator_supplier.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst (\n\torgType    = \"Organization\"\n\tpersonType = \"Person\"\n)\n\n// Originator needs to conform to the SPDX spec here:\n// https://spdx.github.io/spdx-spec/v2.2.2/package-information/#76-package-originator-field\n//\n// Definition:\n//\n//\tIf the package identified in the SPDX document originated from a different person or\n//\torganization than identified as Package Supplier (see 7.5 above), this field identifies from\n//\twhere or whom the package originally came. In some cases, a package may be created and\n//\toriginally distributed by a different third party than the Package Supplier of the package.\n//\tFor example, the SPDX document identifies the package as glibc and the Package Supplier as\n//\tRed Hat, but the Free Software Foundation is the Package Originator.\n//\n// Use NOASSERTION if:\n//\n//   - the SPDX document creator has attempted to but cannot reach a reasonable objective determination;\n//   - the SPDX document creator has made no attempt to determine this field; or\n//   - the SPDX document creator has intentionally provided no information (no meaning should be implied by doing so).\n//\n// Available options are: <omit>, NOASSERTION, Person: <person>, Organization: <org>\n// return values are: <type>, <value>\nfunc Originator(p pkg.Package) (typ string, author string) { //nolint: gocyclo,funlen\n\tif !hasMetadata(p) {\n\t\treturn typ, author\n\t}\n\n\tswitch metadata := p.Metadata.(type) {\n\tcase pkg.ApkDBEntry:\n\t\tauthor = metadata.Maintainer\n\n\tcase pkg.BitnamiSBOMEntry:\n\t\ttyp = orgType\n\t\tauthor = \"Bitnami\"\n\n\tcase pkg.DotnetPortableExecutableEntry:\n\t\ttyp = orgType\n\t\tauthor = metadata.CompanyName\n\tcase pkg.PEBinary:\n\t\t// this is a known common keyword used in version resources\n\t\t// for more info see: https://learn.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource\n\t\tval, ok := metadata.VersionResources.Get(\"CompanyName\")\n\t\tif ok {\n\t\t\ttyp = orgType\n\t\t\tauthor = val\n\t\t}\n\n\tcase pkg.DpkgDBEntry:\n\t\tauthor = metadata.Maintainer\n\n\tcase pkg.DpkgArchiveEntry:\n\t\tauthor = metadata.Maintainer\n\n\tcase pkg.GitHubActionsUseStatement:\n\t\ttyp = orgType\n\t\torg := strings.Split(metadata.Value, \"/\")[0]\n\t\tif org == \"actions\" {\n\t\t\t// this is a GitHub action, so the org is GitHub\n\t\t\torg = \"GitHub\"\n\t\t}\n\t\tauthor = org\n\n\tcase pkg.JavaArchive:\n\t\tif metadata.Manifest != nil {\n\t\t\tauthor = metadata.Manifest.Main.MustGet(\"Specification-Vendor\")\n\t\t\tif author == \"\" {\n\t\t\t\tauthor = metadata.Manifest.Main.MustGet(\"Implementation-Vendor\")\n\t\t\t}\n\t\t\t// Vendor is specified, hence set 'Organization' as the PackageSupplier\n\t\t\tif author != \"\" {\n\t\t\t\ttyp = orgType\n\t\t\t}\n\t\t}\n\n\tcase pkg.JavaVMInstallation:\n\t\ttyp = orgType\n\t\tauthor = metadata.Release.Implementor\n\n\tcase pkg.LinuxKernelModule:\n\t\tauthor = metadata.Author\n\n\tcase pkg.PhpComposerLockEntry:\n\t\tif len(metadata.Authors) > 0 {\n\t\t\tentry := metadata.Authors[0]\n\t\t\tauthor = formatPersonOrOrg(entry.Name, entry.Email)\n\t\t}\n\n\tcase pkg.PhpComposerInstalledEntry:\n\t\tif len(metadata.Authors) > 0 {\n\t\t\tentry := metadata.Authors[0]\n\t\t\tauthor = formatPersonOrOrg(entry.Name, entry.Email)\n\t\t}\n\n\tcase pkg.RDescription:\n\t\t// this is most likely to have a name and email\n\t\tauthor = metadata.Maintainer\n\n\t\tif author == \"\" {\n\t\t\tauthor = metadata.Author\n\t\t}\n\n\tcase pkg.NpmPackage:\n\t\tauthor = metadata.Author\n\n\tcase pkg.PythonPackage:\n\t\tauthor = formatPersonOrOrg(metadata.Author, metadata.AuthorEmail)\n\n\tcase pkg.RubyGemspec:\n\t\tif len(metadata.Authors) > 0 {\n\t\t\tauthor = metadata.Authors[0]\n\t\t}\n\tcase pkg.RpmDBEntry:\n\t\ttyp = orgType\n\t\tauthor = metadata.Vendor\n\n\tcase pkg.RpmArchive:\n\t\ttyp = orgType\n\t\tauthor = metadata.Vendor\n\n\tcase pkg.WordpressPluginEntry:\n\t\t// it seems that the vast majority of the time the author is an org, not a person\n\t\ttyp = orgType\n\t\tauthor = metadata.Author\n\n\tcase pkg.SwiplPackEntry:\n\t\tauthor = formatPersonOrOrg(metadata.Author, metadata.AuthorEmail)\n\t}\n\n\tif typ == \"\" && author != \"\" {\n\t\ttyp = personType\n\t}\n\n\treturn typ, parseAndFormatPersonOrOrg(author)\n}\n\n// Supplier needs to conform to the SPDX spec here:\n// https://spdx.github.io/spdx-spec/v2.2.2/package-information/#75-package-supplier-field\n//\n// Definition:\n//\n//\tIdentify the actual distribution source for the package/directory identified in the SPDX document. This might\n//\tor might not be different from the originating distribution source for the package. The name of the Package Supplier\n//\tshall be an organization or recognized author and not a web site. For example, SourceForge is a host website, not a\n//\tsupplier, the supplier for https://sourceforge.net/projects/bridge/ is “The Linux Foundation.”\n//\n// Use NOASSERTION if:\n//\n//   - the SPDX document creator has attempted to but cannot reach a reasonable objective determination;\n//   - the SPDX document creator has made no attempt to determine this field; or\n//   - the SPDX document creator has intentionally provided no information (no meaning should be implied by doing so).\n//\n// Available options are: <omit>, NOASSERTION, Person: <person>, Organization: <org>\n// return values are: <type>, <value>\nfunc Supplier(p pkg.Package) (typ string, author string) {\n\tif !hasMetadata(p) {\n\t\treturn\n\t}\n\n\tif metadata, ok := p.Metadata.(pkg.AlpmDBEntry); ok {\n\t\t// most indications here are that this is the person that is simply packaging the upstream software. Most\n\t\t// of the time this is not the original author of the upstream software (which would be the originator).\n\t\t// Though it is possible for users to be both the packager and the author, this code cannot distinct this\n\t\t// case and sticks to the semantically correct interpretation of the \"packager\" (which says nothing about the\n\t\t// authorship of the upstream software).\n\t\tauthor = metadata.Packager\n\t}\n\n\tif metadata, ok := p.Metadata.(pkg.SwiplPackEntry); ok {\n\t\tauthor = formatPersonOrOrg(metadata.Packager, metadata.PackagerEmail)\n\t}\n\n\tif author == \"\" {\n\t\t// TODO: this uses the Originator function for now until a better distinction can be made for supplier\n\t\treturn Originator(p)\n\t}\n\n\tif typ == \"\" && author != \"\" {\n\t\ttyp = personType\n\t}\n\n\treturn typ, parseAndFormatPersonOrOrg(author)\n}\n\nvar nameEmailURLPattern = regexp.MustCompile(`^(?P<name>[^<>()]*)( <(?P<email>[^@]+@\\w+\\.\\w+)>)?( \\((?P<url>.*)\\))?$`)\n\nfunc parseAndFormatPersonOrOrg(s string) string {\n\tname, email, _ := parseNameEmailURL(s)\n\treturn formatPersonOrOrg(name, email)\n}\n\nfunc parseNameEmailURL(s string) (name, email, url string) {\n\tfields := internal.MatchNamedCaptureGroups(nameEmailURLPattern, s)\n\tname = strings.TrimSpace(fields[\"name\"])\n\temail = strings.TrimSpace(fields[\"email\"])\n\turl = strings.TrimSpace(fields[\"url\"])\n\n\tif email == \"\" {\n\t\tif approximatesAsEmail(url) {\n\t\t\temail = url\n\t\t\turl = \"\"\n\t\t} else if approximatesAsEmail(name) {\n\t\t\temail = name\n\t\t\tname = \"\"\n\t\t}\n\t}\n\treturn name, email, url\n}\n\nfunc approximatesAsEmail(s string) bool {\n\tatIndex := strings.Index(s, \"@\")\n\tif atIndex == -1 {\n\t\treturn false\n\t}\n\tdotIndex := strings.Index(s[atIndex:], \".\")\n\treturn dotIndex != -1\n}\n\nfunc formatPersonOrOrg(name, email string) string {\n\tname = strings.TrimSpace(name)\n\temail = strings.TrimSpace(email)\n\n\tblankName := name == \"\"\n\tblankEmail := email == \"\"\n\n\tif !blankEmail && !blankName {\n\t\treturn fmt.Sprintf(\"%s (%s)\", name, email)\n\t}\n\tif !blankName && blankEmail {\n\t\treturn name\n\t}\n\tif blankName && !blankEmail {\n\t\treturn email\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/originator_supplier_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_OriginatorSupplier(t *testing.T) {\n\tcompletionTester := packagemetadata.NewCompletionTester(t,\n\t\tpkg.BinarySignature{},\n\t\tpkg.BitnamiSBOMEntry{},\n\t\tpkg.CocoaPodfileLockEntry{},\n\t\tpkg.ConanV1LockEntry{},\n\t\tpkg.ConanV2LockEntry{}, // the field Username might be the username of either the package originator or the supplier (unclear currently)\n\t\tpkg.ConanfileEntry{},\n\t\tpkg.ConaninfoEntry{},\n\t\tpkg.CondaMetaPackage{},\n\t\tpkg.DartPubspecLockEntry{},\n\t\tpkg.DartPubspec{},\n\t\tpkg.DotnetDepsEntry{},\n\t\tpkg.DotnetPackagesLockEntry{},\n\t\tpkg.ELFBinaryPackageNoteJSONPayload{},\n\t\tpkg.ElixirMixLockEntry{},\n\t\tpkg.ErlangRebarLockEntry{},\n\t\tpkg.GolangBinaryBuildinfoEntry{},\n\t\tpkg.GolangModuleEntry{},\n\t\tpkg.GolangSourceEntry{},\n\t\tpkg.HomebrewFormula{},\n\t\tpkg.HackageStackYamlLockEntry{},\n\t\tpkg.HackageStackYamlEntry{},\n\t\tpkg.LinuxKernel{},\n\t\tpkg.LuaRocksPackage{},\n\t\tpkg.MicrosoftKbPatch{},\n\t\tpkg.NixStoreEntry{},\n\t\tpkg.NpmPackageLockEntry{},\n\t\tpkg.PhpComposerInstalledEntry{},\n\t\tpkg.PhpPearEntry{},\n\t\tpkg.PhpPeclEntry{},\n\t\tpkg.PnpmLockEntry{},\n\t\tpkg.PortageEntry{},\n\t\tpkg.PythonPipfileLockEntry{},\n\t\tpkg.PythonPdmLockEntry{},\n\t\tpkg.PythonRequirementsEntry{},\n\t\tpkg.PythonPoetryLockEntry{},\n\t\tpkg.PythonUvLockEntry{},\n\t\tpkg.RustBinaryAuditEntry{},\n\t\tpkg.RustCargoLockEntry{},\n\t\tpkg.SnapEntry{},\n\t\tpkg.SwiftPackageManagerResolvedEntry{},\n\t\tpkg.SwiplPackEntry{},\n\t\tpkg.OpamPackage{},\n\t\tpkg.YarnLockEntry{},\n\t\tpkg.TerraformLockProviderEntry{},\n\t\tpkg.GGUFFileHeader{},\n\t)\n\ttests := []struct {\n\t\tname       string\n\t\tinput      pkg.Package\n\t\toriginator string\n\t\tsupplier   string\n\t}{\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname:       \"no metadata\",\n\t\t\tinput:      pkg.Package{},\n\t\t\toriginator: \"\",\n\t\t\tsupplier:   \"\",\n\t\t},\n\t\t{\n\t\t\t// note: since this is an optional field, no value is preferred over NONE or NOASSERTION\n\t\t\tname: \"empty author on existing metadata\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"\",\n\t\t\tsupplier:   \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from apk\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tMaintainer: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from alpm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\t\t\tPackager: \"someone\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"\",\n\t\t\tsupplier:   \"Person: someone\",\n\t\t},\n\t\t{\n\t\t\tname: \"from bitnami\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.BitnamiSBOMEntry{},\n\t\t\t},\n\t\t\toriginator: \"Organization: Bitnami\",\n\t\t\tsupplier:   \"Organization: Bitnami\",\n\t\t},\n\t\t{\n\t\t\tname: \"from dotnet -- PE binary\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\tCompanyName: \"Microsoft Corporation\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: Microsoft Corporation\",\n\t\t\tsupplier:   \"Organization: Microsoft Corporation\",\n\t\t},\n\t\t{\n\t\t\tname: \"from PE binary\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PEBinary{\n\t\t\t\t\tVersionResources: pkg.KeyValues{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"CompanyName\",\n\t\t\t\t\t\t\tValue: \"Microsoft Corporation\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: Microsoft Corporation\",\n\t\t\tsupplier:   \"Organization: Microsoft Corporation\",\n\t\t},\n\t\t{\n\t\t\tname: \"from dpkg DB\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tMaintainer: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from dpkg archive\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.DpkgArchiveEntry{\n\t\t\t\t\tMaintainer: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from gem\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tAuthors: []string{\n\t\t\t\t\t\t\"auth1\",\n\t\t\t\t\t\t\"auth2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth1\",\n\t\t\tsupplier:   \"Person: auth1\",\n\t\t},\n\t\t{\n\t\t\tname: \"from java -- spec > impl cendor in main manifest section\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\t\tValue: \"auth-impl\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Specification-Vendor\",\n\t\t\t\t\t\t\t\tValue: \"auth-spec\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: auth-spec\",\n\t\t\tsupplier:   \"Organization: auth-spec\",\n\t\t},\n\t\t{\n\t\t\tname: \"from java -- fallback to impl vendor in main manifest section\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\t\tValue: \"auth-impl\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: auth-impl\",\n\t\t\tsupplier:   \"Organization: auth-impl\",\n\t\t},\n\t\t{\n\t\t\tname: \"from java -- non-main manifest sections ignored\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"auth-impl\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMain: pkg.KeyValues{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: empty!\n\t\t},\n\t\t{\n\t\t\tname: \"from java -- jvm installation\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\t\t\tRelease: pkg.JavaVMRelease{\n\t\t\t\t\t\tImplementor: \"Oracle\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: Oracle\",\n\t\t\tsupplier:   \"Organization: Oracle\",\n\t\t},\n\t\t{\n\t\t\tname: \"from linux kernel module\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.LinuxKernelModule{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from Lua Rockspecs\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.LuaRocksPackage{},\n\t\t\t},\n\t\t\toriginator: \"\",\n\t\t\tsupplier:   \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm -- name, email, and url\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: Isaac Z. Schlueter (i@izs.me)\",\n\t\t\tsupplier:   \"Person: Isaac Z. Schlueter (i@izs.me)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from npm -- name, email\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"Isaac Z. Schlueter <i@izs.me>\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: Isaac Z. Schlueter (i@izs.me)\",\n\t\t\tsupplier:   \"Person: Isaac Z. Schlueter (i@izs.me)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from php composer installed file\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerInstalledEntry{\n\t\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:  \"auth\",\n\t\t\t\t\t\t\tEmail: \"me@auth.com\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth (me@auth.com)\",\n\t\t\tsupplier:   \"Person: auth (me@auth.com)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from php composer installed file\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:  \"auth\",\n\t\t\t\t\t\t\tEmail: \"me@auth.com\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth (me@auth.com)\",\n\t\t\tsupplier:   \"Person: auth (me@auth.com)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - just name\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth\",\n\t\t\tsupplier:   \"Person: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - just email\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthorEmail: \"auth@auth.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth@auth.gov\",\n\t\t\tsupplier:   \"Person: auth@auth.gov\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python - both name and email\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthor:      \"auth\",\n\t\t\t\t\tAuthorEmail: \"auth@auth.gov\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth (auth@auth.gov)\",\n\t\t\tsupplier:   \"Person: auth (auth@auth.gov)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from python PDM lock\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tURL: \"https://pypi.org/project/testpkg/1.2.3/file1.tar.gz\",\n\t\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\tValue:     \"3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tSummary: \"A test package\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"\",\n\t\t\tsupplier:   \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"from r -- maintainer > author\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RDescription{\n\t\t\t\t\tAuthor:     \"author\",\n\t\t\t\t\tMaintainer: \"maintainer\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: maintainer\",\n\t\t\tsupplier:   \"Person: maintainer\",\n\t\t},\n\t\t{\n\t\t\tname: \"from r -- fallback to author\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RDescription{\n\t\t\t\t\tAuthor: \"author\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: author\",\n\t\t\tsupplier:   \"Person: author\",\n\t\t},\n\t\t{\n\t\t\tname: \"from rpm archive\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RpmArchive{\n\t\t\t\t\tVendor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: auth\",\n\t\t\tsupplier:   \"Organization: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from rpm DB\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tVendor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: auth\",\n\t\t\tsupplier:   \"Organization: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from wordpress plugin\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tAuthor: \"auth\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: auth\",\n\t\t\tsupplier:   \"Organization: auth\",\n\t\t},\n\t\t{\n\t\t\tname: \"from swipl pack\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.SwiplPackEntry{\n\t\t\t\t\tAuthor:        \"auth\",\n\t\t\t\t\tAuthorEmail:   \"auth@auth.gov\",\n\t\t\t\t\tPackager:      \"me\",\n\t\t\t\t\tPackagerEmail: \"me@auth.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Person: auth (auth@auth.gov)\",\n\t\t\tsupplier:   \"Person: me (me@auth.com)\",\n\t\t},\n\t\t{\n\t\t\tname: \"from github actions workflow/action\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.GitHubActionsUseStatement{\n\t\t\t\t\tValue: \"actions/checkout@v4\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: GitHub\",\n\t\t\tsupplier:   \"Organization: GitHub\",\n\t\t},\n\t\t{\n\t\t\tname: \"from github actions workflow/action\",\n\t\t\tinput: pkg.Package{\n\t\t\t\tMetadata: pkg.GitHubActionsUseStatement{\n\t\t\t\t\tValue: \"google/something@v6\",\n\t\t\t\t},\n\t\t\t},\n\t\t\toriginator: \"Organization: google\",\n\t\t\tsupplier:   \"Organization: google\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcompletionTester.Tested(t, test.input.Metadata)\n\n\t\t\ttyp, value := Originator(test.input)\n\t\t\tif typ != \"\" {\n\t\t\t\tvalue = typ + \": \" + value\n\t\t\t}\n\t\t\tassert.Equal(t, test.originator, value)\n\n\t\t\ttyp, value = Supplier(test.input)\n\t\t\tif typ != \"\" {\n\t\t\t\tvalue = typ + \": \" + value\n\t\t\t}\n\t\t\tassert.Equal(t, test.supplier, value)\n\t\t})\n\t}\n}\n\nfunc Test_parseNameEmailUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tinput     string\n\t\twantName  string\n\t\twantEmail string\n\t\twantUrl   string\n\t}{\n\t\t{\n\t\t\tname:  \"empty\",\n\t\t\tinput: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"npm-like: name only\",\n\t\t\tinput:    \"Isaac Z. Schlueter\",\n\t\t\twantName: \"Isaac Z. Schlueter\",\n\t\t},\n\t\t{\n\t\t\tname:      \"npm-like: name and email\",\n\t\t\tinput:     \"Ray Nos <bogus2@gmail.com>\",\n\t\t\twantName:  \"Ray Nos\",\n\t\t\twantEmail: \"bogus2@gmail.com\",\n\t\t},\n\t\t{\n\t\t\tname:     \"npm-like: name and url\",\n\t\t\tinput:    \"Ray Nos (http://example.com)\",\n\t\t\twantName: \"Ray Nos\",\n\t\t\twantUrl:  \"http://example.com\",\n\t\t},\n\t\t{\n\t\t\tname:      \"npm-like: name, email, and url\",\n\t\t\tinput:     \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\twantName:  \"Isaac Z. Schlueter\",\n\t\t\twantEmail: \"i@izs.me\",\n\t\t\twantUrl:   \"http://blog.izs.me\",\n\t\t},\n\t\t{\n\t\t\tname:      \"mixed input: email only\",\n\t\t\tinput:     \"i@izs.me\",\n\t\t\twantEmail: \"i@izs.me\",\n\t\t},\n\t\t{\n\t\t\tname:      \"mixed input: email in url\",\n\t\t\tinput:     \"my name (i@izs.me)\",\n\t\t\twantName:  \"my name\",\n\t\t\twantEmail: \"i@izs.me\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotName, gotEmail, gotUrl := parseNameEmailURL(tt.input)\n\t\t\tassert.Equal(t, tt.wantName, gotName)\n\t\t\tassert.Equal(t, tt.wantEmail, gotEmail)\n\t\t\tassert.Equal(t, tt.wantUrl, gotUrl)\n\t\t})\n\t}\n}\n\nfunc Test_formatPersonOrOrg(t *testing.T) {\n\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\temail string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\twant: \"\",\n\t\t},\n\t\t{\n\t\t\tname:  \"name only\",\n\t\t\tinput: \"Isaac Z. Schlueter\",\n\t\t\twant:  \"Isaac Z. Schlueter\",\n\t\t},\n\t\t{\n\t\t\tname:  \"email only\",\n\t\t\temail: \"i@something.com\",\n\t\t\twant:  \"i@something.com\",\n\t\t},\n\t\t{\n\t\t\tname:  \"name and email\",\n\t\t\tinput: \"Isaac Z. Schlueter\",\n\t\t\temail: \"i@something.com\",\n\t\t\twant:  \"Isaac Z. Schlueter (i@something.com)\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, formatPersonOrOrg(tt.input, tt.email))\n\t\t})\n\t}\n}\n\nfunc Test_approximatesAsEmail(t *testing.T) {\n\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  bool\n\t}{\n\t\t{\n\t\t\tname:  \"empty\",\n\t\t\tinput: \"\",\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"no at\",\n\t\t\tinput: \"something.com\",\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"no dot\",\n\t\t\tinput: \"something@com\",\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"dot before at\",\n\t\t\tinput: \"something.com@nothing\",\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"valid\",\n\t\t\tinput: \"something@nothing.com\",\n\t\t\twant:  true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, approximatesAsEmail(tt.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/relationship_type.go",
    "content": "package helpers\n\n// source: https://spdx.github.io/spdx-spec/v2.2.2/relationships-between-SPDX-elements/\ntype RelationshipType string\n\nconst (\n\t// DescribedByRelationship is to be used when SPDXRef-A is described by SPDXREF-Document.\n\t// Example: The package 'WildFly' is described by SPDX document WildFly.spdx.\n\tDescribedByRelationship RelationshipType = \"DESCRIBED_BY\"\n\n\t// Describes is to be used when SPDXRef-DOCUMENT describes SPDXRef-A.\n\t// Example: An SPDX document WildFly.spdx describes package ‘WildFly’.\n\t// Note this is a logical relationship to help organize related items within an SPDX document that is mandatory if more than one package or set of files (not in a package) is present.\n\tDescribesRelationship RelationshipType = \"DESCRIBES\"\n\n\t// ContainsRelationship is to be used when SPDXRef-A contains SPDXRef-B.\n\t// Example: An ARCHIVE file bar.tgz contains a SOURCE file foo.c.\n\tContainsRelationship RelationshipType = \"CONTAINS\"\n\n\t// ContainedByRelationship is to be used when SPDXRef-A is contained by SPDXRef-B.\n\t// Example: A SOURCE file foo.c is contained by ARCHIVE file bar.tgz\n\tContainedByRelationship RelationshipType = \"CONTAINED_BY\"\n\n\t// DependsOnRelationship is to be used when SPDXRef-A depends on SPDXRef-B.\n\t// Example: Package A depends on the presence of package B in order to build and run\n\tDependsOnRelationship RelationshipType = \"DEPENDS_ON\"\n\n\t// DependencyOfRelationship is to be used when SPDXRef-A is dependency of SPDXRef-B.\n\t// Example: A is explicitly stated as a dependency of B in a machine-readable file. Use when a package manager does not define scopes.\n\tDependencyOfRelationship RelationshipType = \"DEPENDENCY_OF\"\n\n\t// DependencyManifestOfRelationship is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B.\n\t// Example: A file package.json is the dependency manifest of a package foo. Note that only one manifest should be used to define the same dependency graph.\n\tDependencyManifestOfRelationship RelationshipType = \"DEPENDENCY_MANIFEST_OF\"\n\n\t// BuildDependencyOfRelationship is to be used when SPDXRef-A is a build dependency of SPDXRef-B.\n\t// Example: A is in the compile scope of B in a Maven project.\n\tBuildDependencyOfRelationship RelationshipType = \"BUILD_DEPENDENCY_OF\"\n\n\t// DevDependencyOfRelationship is to be used when SPDXRef-A is a development dependency of SPDXRef-B.\n\t// Example: A is in the devDependencies scope of B in a Maven project.\n\tDevDependencyOfRelationship RelationshipType = \"DEV_DEPENDENCY_OF\"\n\n\t// OptionalDependencyOfRelationship is to be used when SPDXRef-A is an optional dependency of SPDXRef-B.\n\t// Example: Use when building the code will proceed even if a dependency cannot be found, fails to install, or is only installed on a specific platform. For example, A is in the optionalDependencies scope of npm project B.\n\tOptionalDependencyOfRelationship RelationshipType = \"OPTIONAL_DEPENDENCY_OF\"\n\n\t// ProvidedDependencyOfRelationship is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B.\n\t// Example: A is in the provided scope of B in a Maven project, indicating that the project expects it to be provided, for instance, by the container or JDK.\n\tProvidedDependencyOfRelationship RelationshipType = \"PROVIDED_DEPENDENCY_OF\"\n\n\t// TestDependencyOfRelationship is to be used when SPDXRef-A is a test dependency of SPDXRef-B.\n\t// Example: A is in the test scope of B in a Maven project.\n\tTestDependencyOfRelationship RelationshipType = \"TEST_DEPENDENCY_OF\"\n\n\t// RuntimeDependencyOfRelationship is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B.\n\t// Example: A is in the runtime scope of B in a Maven project.\n\tRuntimeDependencyOfRelationship RelationshipType = \"RUNTIME_DEPENDENCY_OF\"\n\n\t// ExampleOfRelationship is to be used when SPDXRef-A is an example of SPDXRef-B.\n\t// Example: The file or snippet that illustrates how to use an application or library.\n\tExampleOfRelationship RelationshipType = \"EXAMPLE_OF\"\n\n\t// GeneratesRelationship is to be used when SPDXRef-A generates SPDXRef-B.\n\t// Example: A SOURCE file makefile.mk generates a BINARY file a.out\n\tGeneratesRelationship RelationshipType = \"GENERATES\"\n\n\t// GeneratedFromRelationship is to be used when SPDXRef-A was generated from SPDXRef-B.\n\t// Example: A BINARY file a.out has been generated from a SOURCE file makefile.mk. A BINARY file foolib.a is generated from a SOURCE file bar.c.\n\tGeneratedFromRelationship RelationshipType = \"GENERATED_FROM\"\n\n\t// AncestorOfRelationship is to be used when SPDXRef-A is an ancestor (same lineage but pre-dates) SPDXRef-B.\n\t// Example: A SOURCE file makefile.mk is a version of the original ancestor SOURCE file 'makefile2.mk'\n\tAncestorOfRelationship RelationshipType = \"ANCESTOR_OF\"\n\n\t// DescendantOfRelationship is to be used when SPDXRef-A is a descendant of (same lineage but postdates) SPDXRef-B.\n\t// Example: A SOURCE file makefile2.mk is a descendant of the original SOURCE file 'makefile.mk'\n\tDescendantOfRelationship RelationshipType = \"DESCENDANT_OF\"\n\n\t// VariantOfRelationship is to be used when SPDXRef-A is a variant of (same lineage but not clear which came first) SPDXRef-B.\n\t// Example: A SOURCE file makefile2.mk is a variant of SOURCE file makefile.mk if they differ by some edit, but there is no way to tell which came first (no reliable date information).\n\tVariantOfRelationship RelationshipType = \"VARIANT_OF\"\n\n\t// DistributionArtifactRelationship is to be used when distributing SPDXRef-A requires that SPDXRef-B also be distributed.\n\t// Example: A BINARY file foo.o requires that the ARCHIVE file bar-sources.tgz be made available on distribution.\n\tDistributionArtifactRelationship RelationshipType = \"DISTRIBUTION_ARTIFACT\"\n\n\t// PatchForRelationship is to be used when SPDXRef-A is a patch file for (to be applied to) SPDXRef-B.\n\t// Example: A SOURCE file foo.diff is a patch file for SOURCE file foo.c.\n\tPatchForRelationship RelationshipType = \"PATCH_FOR\"\n\n\t// PatchAppliedRelationship is to be used when SPDXRef-A is a patch file that has been applied to SPDXRef-B.\n\t// Example: A SOURCE file foo.diff is a patch file that has been applied to SOURCE file 'foo-patched.c'.\n\tPatchAppliedRelationship RelationshipType = \"PATCH_APPLIED\"\n\n\t// CopyOfRelationship is to be used when SPDXRef-A is an exact copy of SPDXRef-B.\n\t// Example: A BINARY file alib.a is an exact copy of BINARY file a2lib.a.\n\tCopyOfRelationship RelationshipType = \"COPY_OF\"\n\n\t// FileAddedRelationship is to be used when SPDXRef-A is a file that was added to SPDXRef-B.\n\t// Example: A SOURCE file foo.c has been added to package ARCHIVE bar.tgz.\n\tFileAddedRelationship RelationshipType = \"FILE_ADDED\"\n\n\t// FileDeletedRelationship is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B.\n\t// Example: A SOURCE file foo.diff has been deleted from package ARCHIVE bar.tgz.\n\tFileDeletedRelationship RelationshipType = \"FILE_DELETED\"\n\n\t// FileModifiedRelationship is to be used when SPDXRef-A is a file that was modified from SPDXRef-B.\n\t// Example: A SOURCE file foo.c has been modified from SOURCE file foo.orig.c.\n\tFileModifiedRelationship RelationshipType = \"FILE_MODIFIED\"\n\n\t// ExpandedFromArchiveRelationship is to be used when SPDXRef-A is expanded from the archive SPDXRef-B.\n\t// Example: A SOURCE file foo.c, has been expanded from the archive ARCHIVE file xyz.tgz.\n\tExpandedFromArchiveRelationship RelationshipType = \"EXPANDED_FROM_ARCHIVE\"\n\n\t// DynamicLinkRelationship is to be used when SPDXRef-A dynamically links to SPDXRef-B.\n\t// Example: An APPLICATION file 'myapp' dynamically links to BINARY file zlib.so.\n\tDynamicLinkRelationship RelationshipType = \"DYNAMIC_LINK\"\n\n\t// StaticLinkRelationship is to be used when SPDXRef-A statically links to SPDXRef-B.\n\t// Example: An APPLICATION file 'myapp' statically links to BINARY zlib.a.\n\tStaticLinkRelationship RelationshipType = \"STATIC_LINK\"\n\n\t// DataFileOfRelationship is to be used when SPDXRef-A is a data file used in SPDXRef-B.\n\t// Example: An IMAGE file 'kitty.jpg' is a data file of an APPLICATION 'hellokitty'.\n\tDataFileOfRelationship RelationshipType = \"DATA_FILE_OF\"\n\n\t// TestCaseOfRelationship is to be used when SPDXRef-A is a test case used in testing SPDXRef-B.\n\t// Example: A SOURCE file testMyCode.java is a unit test file used to test an APPLICATION MyPackage.\n\tTestCaseOfRelationship RelationshipType = \"TEST_CASE_OF\"\n\n\t// BuildToolOfRelationship is to be used when SPDXRef-A is used to build SPDXRef-B.\n\t// Example: A SOURCE file makefile.mk is used to build an APPLICATION 'zlib'.\n\tBuildToolOfRelationship RelationshipType = \"BUILD_TOOL_OF\"\n\n\t// DevToolOfRelationship is to be used when SPDXRef-A is used as a development tool for SPDXRef-B.\n\t// Example: Any tool used for development such as a code debugger.\n\tDevToolOfRelationship RelationshipType = \"DEV_TOOL_OF\"\n\n\t// TestOfRelationship is to be used when SPDXRef-A is used for testing SPDXRef-B.\n\t// Example: Generic relationship for cases where it's clear that something is used for testing but unclear whether it's TEST_CASE_OF or TEST_TOOL_OF.\n\tTestOfRelationship RelationshipType = \"TEST_OF\"\n\n\t// TestToolOfRelationship is to be used when SPDXRef-A is used as a test tool for SPDXRef-B.\n\t// Example: Any tool used to test the code such as ESlint.\n\tTestToolOfRelationship RelationshipType = \"TEST_TOOL_OF\"\n\n\t// DocumentationOfRelationship is to be used when SPDXRef-A provides documentation of SPDXRef-B.\n\t// Example: A DOCUMENTATION file readme.txt documents the APPLICATION 'zlib'.\n\tDocumentationOfRelationship RelationshipType = \"DOCUMENTATION_OF\"\n\n\t// OptionalComponentOfRelationship is to be used when SPDXRef-A is an optional component of SPDXRef-B.\n\t// Example: A SOURCE file fool.c (which is in the contributors directory) may or may not be included in the build of APPLICATION 'atthebar'.\n\tOptionalComponentOfRelationship RelationshipType = \"OPTIONAL_COMPONENT_OF\"\n\n\t// MetafileOfRelationship is to be used when SPDXRef-A is a metafile of SPDXRef-B.\n\t// Example: A SOURCE file pom.xml is a metafile of the APPLICATION 'Apache Xerces'.\n\tMetafileOfRelationship RelationshipType = \"METAFILE_OF\"\n\n\t// PackageOfRelationship is to be used when SPDXRef-A is used as a package as part of SPDXRef-B.\n\t// Example: A Linux distribution contains an APPLICATION package gawk as part of the distribution MyLinuxDistro.\n\tPackageOfRelationship RelationshipType = \"PACKAGE_OF\"\n\n\t// AmendsRelationship is to be used when (current) SPDXRef-DOCUMENT amends the SPDX information in SPDXRef-B.\n\t// Example: (Current) SPDX document A version 2 contains a correction to a previous version of the SPDX document A version 1. Note the reserved identifier SPDXRef-DOCUMENT for the current document is required.\n\tAmendsRelationship RelationshipType = \"AMENDS\"\n\n\t// PrerequisiteForRelationship is to be used when SPDXRef-A is a prerequisite for SPDXRef-B.\n\t// Example: A library bar.dll is a prerequisite or dependency for APPLICATION foo.exe\n\tPrerequisiteForRelationship RelationshipType = \"PREREQUISITE_FOR\"\n\n\t// HasPrerequisiteRelationship is to be used when SPDXRef-A has as a prerequisite SPDXRef-B.\n\t// Example: An APPLICATION foo.exe has prerequisite or dependency on bar.dll\n\tHasPrerequisiteRelationship RelationshipType = \"HAS_PREREQUISITE\"\n\n\t// OtherRelationship is to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field.\n\tOtherRelationship RelationshipType = \"OTHER\"\n)\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/source_info.go",
    "content": "package helpers\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n//nolint:funlen, gocyclo\nfunc SourceInfo(p pkg.Package) string {\n\tanswer := \"\"\n\tswitch p.Type {\n\tcase pkg.AlpmPkg:\n\t\tanswer = \"acquired package info from ALPM DB\"\n\tcase pkg.RpmPkg:\n\t\tanswer = \"acquired package info from RPM DB\"\n\tcase pkg.ApkPkg:\n\t\tanswer = \"acquired package info from APK DB\"\n\tcase pkg.BitnamiPkg:\n\t\tanswer = \"acquired package info from a Bitnami SBOM\"\n\tcase pkg.DartPubPkg:\n\t\tanswer = \"acquired package info from pubspec manifest\"\n\tcase pkg.DebPkg:\n\t\tanswer = \"acquired package info from DPKG DB\"\n\tcase pkg.DotnetPkg:\n\t\tanswer = \"acquired package info from dotnet project assets file\"\n\tcase pkg.NpmPkg:\n\t\tanswer = \"acquired package info from installed node module manifest file\"\n\tcase pkg.PythonPkg:\n\t\tanswer = \"acquired package info from installed python package manifest file\"\n\tcase pkg.JavaPkg, pkg.JenkinsPluginPkg:\n\t\tanswer = \"acquired package info from installed java archive\"\n\tcase pkg.GemPkg:\n\t\tanswer = \"acquired package info from installed gem metadata file\"\n\tcase pkg.GoModulePkg:\n\t\tanswer = \"acquired package info from go module information\"\n\tcase pkg.GraalVMNativeImagePkg:\n\t\tanswer = \"acquired package info from GraalVM native image\"\n\tcase pkg.RustPkg:\n\t\tanswer = \"acquired package info from rust cargo manifest\"\n\tcase pkg.PhpComposerPkg:\n\t\tanswer = \"acquired package info from PHP composer manifest\"\n\tcase pkg.PhpPearPkg:\n\t\tanswer = \"acquired package info from PHP Pear manifest\"\n\tcase pkg.PhpPeclPkg:\n\t\tanswer = \"acquired package info from PHP Pecl manifest\"\n\tcase pkg.CocoapodsPkg:\n\t\tanswer = \"acquired package info from installed cocoapods manifest file\"\n\tcase pkg.ConanPkg:\n\t\tanswer = \"acquired package info from conan manifest\"\n\tcase pkg.CondaPkg:\n\t\tanswer = \"acquired package info from conda metadata\"\n\tcase pkg.PortagePkg:\n\t\tanswer = \"acquired package info from portage DB\"\n\tcase pkg.HackagePkg:\n\t\tanswer = \"acquired package info from cabal or stack manifest files\"\n\tcase pkg.HexPkg:\n\t\tanswer = \"acquired package info from rebar3 or mix manifest file\"\n\tcase pkg.ErlangOTPPkg:\n\t\tanswer = \"acquired package info from ErLang application resource file\"\n\tcase pkg.LinuxKernelPkg:\n\t\tanswer = \"acquired package info from linux kernel archive\"\n\tcase pkg.LinuxKernelModulePkg:\n\t\tanswer = \"acquired package info from linux kernel module files\"\n\tcase pkg.NixPkg:\n\t\tanswer = \"acquired package info from nix store path\"\n\tcase pkg.Rpkg:\n\t\tanswer = \"acquired package info from R-package DESCRIPTION file\"\n\tcase pkg.LuaRocksPkg:\n\t\tanswer = \"acquired package info from Rockspec package file\"\n\tcase pkg.SwiftPkg:\n\t\tanswer = \"acquired package info from resolved Swift package manifest\"\n\tcase pkg.SwiplPackPkg:\n\t\tanswer = \"acquired package info from SWI Prolo pack package file\"\n\tcase pkg.OpamPkg:\n\t\tanswer = \"acquired package info from OCaml opam package file\"\n\tcase pkg.GithubActionPkg, pkg.GithubActionWorkflowPkg:\n\t\tanswer = \"acquired package info from GitHub Actions workflow file or composite action file\"\n\tcase pkg.WordpressPluginPkg:\n\t\tanswer = \"acquired package info from found wordpress plugin PHP source files\"\n\tcase pkg.HomebrewPkg:\n\t\tanswer = \"acquired package info from Homebrew formula\"\n\tcase pkg.TerraformPkg:\n\t\tanswer = \"acquired package info from Terraform dependency lock file\"\n\tcase pkg.ModelPkg:\n\t\tanswer = \"acquired package info from AI artifact (e.g. GGUF File)\"\n\tdefault:\n\t\tanswer = \"acquired package info from the following paths\"\n\t}\n\tif p.FoundBy == \"sbom-cataloger\" {\n\t\tanswer = \"acquired package info from SBOM\"\n\t}\n\tvar paths []string\n\tfor _, l := range p.Locations.ToSlice() {\n\t\tpaths = append(paths, l.RealPath)\n\t}\n\n\treturn answer + \": \" + strings.Join(paths, \", \")\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/source_info_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_SourceInfo(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"locations are captured\",\n\t\t\tinput: pkg.Package{\n\t\t\t\t// note: no type given\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewVirtualLocation(\"/a-place\", \"/b-place\"),\n\t\t\t\t\tfile.NewVirtualLocation(\"/c-place\", \"/d-place\"),\n\t\t\t\t),\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from the following paths\",\n\t\t\t\t\"/a-place\",\n\t\t\t\t\"/c-place\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: no specific support for this\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.KbPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from the following paths\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.RpmPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from RPM DB\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from APK DB\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.DebPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from DPKG DB\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.NpmPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from installed node module manifest file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.PythonPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from installed python package manifest file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from installed java archive\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.JenkinsPluginPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from installed java archive\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.GemPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from installed gem metadata file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.GoModulePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from go module information\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.GraalVMNativeImagePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from GraalVM native image\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.RustPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from rust cargo manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.PhpComposerPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from PHP composer manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.PhpPeclPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from PHP Pecl manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.PhpPearPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from PHP Pear manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.DartPubPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from pubspec manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.DotnetPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from dotnet project assets file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.AlpmPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from ALPM DB\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.CocoapodsPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"installed cocoapods manifest file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.ConanPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from conan manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.CondaPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from conda metadata\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.PortagePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from portage DB\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.HackagePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from cabal or stack manifest files\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.BinaryPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from the following paths\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.BitnamiPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from a Bitnami SBOM\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.HexPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from rebar3 or mix manifest file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.ErlangOTPPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from ErLang application resource file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.LinuxKernelPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from linux kernel archive\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.LinuxKernelModulePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from linux kernel module files\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.NixPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from nix store path\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.Rpkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from R-package DESCRIPTION file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.LuaRocksPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from Rockspec package file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.SwiftPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from resolved Swift package manifest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.SwiplPackPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from SWI Prolo pack package file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.OpamPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from OCaml opam package file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.GithubActionPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from GitHub Actions workflow file or composite action file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.GithubActionWorkflowPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"from GitHub Actions workflow file or composite action file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.WordpressPluginPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from found wordpress plugin PHP source files\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.HomebrewPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from Homebrew formula\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.TerraformPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"acquired package info from Terraform dependency lock file\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tinput: pkg.Package{\n\t\t\t\tType: pkg.ModelPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"\",\n\t\t\t},\n\t\t},\n\t}\n\tvar pkgTypes []pkg.Type\n\tfor _, test := range tests {\n\t\tt.Run(test.name+\" \"+string(test.input.Type), func(t *testing.T) {\n\t\t\tif test.input.Type != \"\" {\n\t\t\t\tpkgTypes = append(pkgTypes, test.input.Type)\n\t\t\t}\n\t\t\tactual := SourceInfo(test.input)\n\t\t\tfor _, expected := range test.expected {\n\t\t\t\tassert.Contains(t, actual, expected)\n\t\t\t}\n\t\t})\n\t}\n\tassert.ElementsMatch(t, pkg.AllPkgs, pkgTypes, \"missing one or more package types to test against (maybe a package type was added?)\")\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/spdxid.go",
    "content": "package helpers\n\nimport (\n\t\"regexp\"\n)\n\nvar expr = regexp.MustCompile(\"[^a-zA-Z0-9.-]\")\n\n// SPDX spec says SPDXID must be:\n// \"SPDXRef-\"[idstring] where [idstring] is a unique string containing letters, numbers, ., and/or -\n// https://spdx.github.io/spdx-spec/v2.3/snippet-information/\nfunc SanitizeElementID(id string) string {\n\treturn expr.ReplaceAllString(id, \"-\")\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/helpers/spdxid_test.go",
    "content": "package helpers\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_SanitizeElementID(t *testing.T) {\n\ttests := []struct {\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tinput:    \"letters\",\n\t\t\texpected: \"letters\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"ssl-client\",\n\t\t\texpected: \"ssl-client\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"ssl_client\",\n\t\t\texpected: \"ssl-client\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"go-module-sigs.k8s.io/structured-merge-diff/v3\",\n\t\t\texpected: \"go-module-sigs.k8s.io-structured-merge-diff-v3\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.input, func(t *testing.T) {\n\t\t\tactual := SanitizeElementID(test.input)\n\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/spdxutil/versions.go",
    "content": "package spdxutil\n\nimport (\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst DefaultVersion = \"2.3\"\n\nconst (\n\tJSONFormatID     sbom.FormatID = \"spdx-json\"\n\tTagValueFormatID sbom.FormatID = \"spdx-tag-value\"\n)\n\nfunc SupportedVersions(id sbom.FormatID) []string {\n\tversions := []string{\n\t\t\"2.2\",\n\t\t\"2.3\",\n\t}\n\n\tif id != JSONFormatID {\n\t\t// JSON format is not supported in v2.1\n\t\treturn append([]string{\"2.1\"}, versions...)\n\t}\n\n\treturn versions\n}\n"
  },
  {
    "path": "syft/format/internal/stream/seekable_reader.go",
    "content": "package stream\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n)\n\n// SeekableReader takes an io.Reader and returns an io.ReadSeeker relative to the current position of the reader.\n// Users of this function expect to be able to reset the reader to the current position, not potentially reset the\n// reader prior to the location when this reader is provided. An example is a reader with multiple JSON\n// documents separated by newlines (JSONL). After reading the first document, if a call is made to decode\n// the second and Seek(0, SeekStart) is called it would reset the overall reader back to the first document.\nfunc SeekableReader(reader io.Reader) (io.ReadSeeker, error) {\n\tif reader == nil {\n\t\treturn nil, fmt.Errorf(\"no bytes provided\")\n\t}\n\n\tif r, ok := reader.(io.ReadSeeker); ok {\n\t\treturn getOffsetReadSeeker(r)\n\t}\n\n\tcontent, err := io.ReadAll(reader) //nolint:gocritic // buffering non-seekable to seekable reader\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn bytes.NewReader(content), nil\n}\n\ntype offsetReadSeeker struct {\n\trdr    io.ReadSeeker\n\toffset int64\n}\n\n// getOffsetReadSeeker returns a new io.ReadSeeker that may wrap another io.ReadSeeker with the current offset, so\n// seek calls will be relative to the _current_ position, rather than relative to the reader itself\nfunc getOffsetReadSeeker(r io.ReadSeeker) (io.ReadSeeker, error) {\n\tif r == nil {\n\t\treturn nil, fmt.Errorf(\"no reader provided\")\n\t}\n\tpos, err := r.Seek(0, io.SeekCurrent)\n\tif pos == 0 {\n\t\t// if the ReadSeeker is currently at 0, we don't need to track an offset\n\t\treturn r, nil\n\t}\n\treturn &offsetReadSeeker{\n\t\trdr:    r,\n\t\toffset: pos,\n\t}, err\n}\n\nfunc (o *offsetReadSeeker) Read(p []byte) (n int, err error) {\n\treturn o.rdr.Read(p)\n}\n\nfunc (o *offsetReadSeeker) Seek(offset int64, whence int) (int64, error) {\n\tswitch whence {\n\tcase io.SeekStart:\n\t\tif offset < 0 {\n\t\t\treturn 0, fmt.Errorf(\"cannot seek < 0\")\n\t\t}\n\t\tnewOffset, err := o.rdr.Seek(o.offset+offset, io.SeekStart)\n\t\treturn newOffset - o.offset, err\n\tcase io.SeekCurrent:\n\t\tcurrentOffset, err := o.rdr.Seek(0, io.SeekCurrent)\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"cannot seek current: %w\", err)\n\t\t}\n\t\tif currentOffset-o.offset+offset < 0 {\n\t\t\treturn 0, fmt.Errorf(\"cannot seek < 0\")\n\t\t}\n\t\tnewOffset, err := o.rdr.Seek(offset, io.SeekCurrent)\n\t\treturn newOffset - o.offset, err\n\t}\n\treturn 0, fmt.Errorf(\"only SeekStart and SeekCurrent supported\")\n}\n\nvar _ io.ReadSeeker = (*offsetReadSeeker)(nil)\n"
  },
  {
    "path": "syft/format/internal/stream/seekable_reader_test.go",
    "content": "package stream\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSeekableReader(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tinput   io.Reader\n\t\tassert  func(io.Reader, io.ReadSeeker)\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"nil reader\",\n\t\t\tinput:   nil,\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:  \"empty reader\",\n\t\t\tinput: bytes.NewBuffer([]byte{}), // does not implement io.Seeker (but does implement io.Reader)\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\timpl, ok := got.(*bytes.Reader) // contents are copied to a byte slice, accessed via bytes.Reader\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := impl.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(impl)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte{}, content)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"empty read seeker\",\n\t\t\tinput: strings.NewReader(\"\"), // implements io.ReadSeeker, not offset\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\t_, ok := got.(*strings.Reader) // same ReadSeeker is returned when not offset\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := got.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(got)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte{}, content)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"non-empty read seeker\",\n\t\t\tinput: strings.NewReader(\"hello world!\"), // implements io.ReadSeeker, not offset\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\t_, ok := got.(*strings.Reader) // same ReadSeeker is returned when not offset\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := got.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(got)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte(\"hello world!\"), content)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"non-empty reader\",\n\t\t\tinput: bytes.NewBufferString(\"hello world!\"), // does not implement io.Seeker (but does implement io.Reader)\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\timpl, ok := got.(*bytes.Reader)\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := impl.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(impl)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte(\"hello world!\"), content)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"position zero read seeker\",\n\t\t\tinput: strings.NewReader(\"a string reader\"), // implements io.ReadSeeker at position 0\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\t_, ok := got.(*strings.Reader) // returns the same ReadSeeker\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := got.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(got)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte(\"a string reader\"), content)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"offset read seeker\",\n\t\t\tinput: moveOffset(t, bytes.NewReader([]byte{1, 2, 3, 4, 5}), 3), // implements io.ReadSeeker, with an offset\n\t\t\tassert: func(input io.Reader, got io.ReadSeeker) {\n\t\t\t\t_, ok := got.(*offsetReadSeeker) // returns an offset-tracking ReadSeeker\n\t\t\t\trequire.True(t, ok)\n\t\t\t\t_, err := got.Seek(0, io.SeekStart)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tcontent, err := io.ReadAll(got)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Equal(t, []byte{4, 5}, content)\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tgot, err := SeekableReader(tt.input)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttt.assert(tt.input, got)\n\t\t})\n\t}\n}\n\nfunc Test_offsetReadSeeker(t *testing.T) {\n\tabcd1234 := func() io.ReadSeeker { return strings.NewReader(\"abcd1234\") }\n\tabcd1234offset := func(offset int) func() io.ReadSeeker {\n\t\treturn func() io.ReadSeeker {\n\t\t\tr := strings.NewReader(\"abcd1234\")\n\t\t\t_, err := r.Seek(int64(offset), io.SeekStart)\n\t\t\trequire.NoError(t, err)\n\t\t\treturn r\n\t\t}\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tinput    func() io.ReadSeeker\n\t\tseek     int64\n\t\tseek2    int64\n\t\twhence   int\n\t\texpected string\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:     \"basic reader\",\n\t\t\tinput:    abcd1234,\n\t\t\tseek:     0,\n\t\t\twhence:   io.SeekStart,\n\t\t\texpected: \"abcd1234\",\n\t\t},\n\t\t{\n\t\t\tname:     \"basic reader offset\",\n\t\t\tinput:    abcd1234offset(1),\n\t\t\tseek:     0,\n\t\t\twhence:   io.SeekStart,\n\t\t\texpected: \"bcd1234\",\n\t\t},\n\t\t{\n\t\t\tname:     \"basic reader offset both\",\n\t\t\tinput:    abcd1234offset(2),\n\t\t\tseek:     2,\n\t\t\twhence:   io.SeekStart,\n\t\t\texpected: \"1234\",\n\t\t},\n\t\t{\n\t\t\tname:    \"basic reader offset seek current\",\n\t\t\tinput:   abcd1234offset(1),\n\t\t\tseek:    -1,\n\t\t\twhence:  io.SeekCurrent,\n\t\t\twantErr: require.Error, // would be < current, which is an error\n\t\t},\n\t\t{\n\t\t\tname:     \"valid negative offset from current\",\n\t\t\tinput:    abcd1234offset(1),\n\t\t\tseek:     2,\n\t\t\tseek2:    -1,\n\t\t\twhence:   io.SeekCurrent,\n\t\t\texpected: \"cd1234\",\n\t\t},\n\t\t{\n\t\t\tname:     \"basic reader offset multiple\",\n\t\t\tinput:    abcd1234offset(2),\n\t\t\tseek:     3,\n\t\t\tseek2:    2,\n\t\t\twhence:   io.SeekCurrent,\n\t\t\texpected: \"4\",\n\t\t},\n\t\t{\n\t\t\tname:    \"bad whence\",\n\t\t\tinput:   abcd1234,\n\t\t\tseek:    1,\n\t\t\twhence:  io.SeekEnd,\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\trdr := tt.input()\n\n\t\t\toff, err := rdr.Seek(0, io.SeekCurrent)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// construct new offsetReadSeeker\n\t\t\tsr := offsetReadSeeker{rdr: rdr, offset: off}\n\n\t\t\t_, err = sr.Seek(tt.seek, tt.whence)\n\t\t\tif tt.seek2 != 0 {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\t_, err = sr.Seek(tt.seek2, tt.whence)\n\t\t\t}\n\t\t\tif tt.wantErr != nil {\n\t\t\t\ttt.wantErr(t, err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tbuf := make([]byte, 1024)\n\t\t\tn, err := sr.Read(buf)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, tt.expected, string(buf[:n]))\n\t\t})\n\t}\n}\n\nfunc moveOffset(t *testing.T, reader io.ReadSeeker, offset int64) io.Reader {\n\tpos, err := reader.Seek(offset, io.SeekStart)\n\trequire.NoError(t, err)\n\trequire.Equal(t, offset, pos)\n\treturn reader\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/directory_input.go",
    "content": "package testutil\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n)\n\nfunc DirectoryInput(t testing.TB, dir string) sbom.SBOM {\n\tcatalog := newDirectoryCatalog()\n\n\tpath := filepath.Join(dir, \"some\", \"path\")\n\n\trequire.NoError(t, os.MkdirAll(path, 0755))\n\n\tsrc, err := directorysource.New(\n\t\tdirectorysource.Config{\n\t\t\tPath: path,\n\t\t\tBase: dir,\n\t\t},\n\t)\n\trequire.NoError(t, err)\n\n\treturn sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: catalog,\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tPrettyName: \"debian\",\n\t\t\t\tName:       \"debian\",\n\t\t\t\tID:         \"debian\",\n\t\t\t\tIDLike:     []string{\"like!\"},\n\t\t\t\tVersion:    \"1.2.3\",\n\t\t\t\tVersionID:  \"1.2.3\",\n\t\t\t},\n\t\t},\n\t\tSource: src.Describe(),\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"v0.42.0-bogus\",\n\t\t\t// the application configuration should be persisted here, however, we do not want to import\n\t\t\t// the application configuration in this package (it's reserved only for ingestion by the cmd package)\n\t\t\tConfiguration: map[string]string{\n\t\t\t\t\"config-key\": \"config-value\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc DirectoryInputWithAuthorField(t testing.TB) sbom.SBOM {\n\tcatalog := newDirectoryCatalogWithAuthorField()\n\n\tdir := t.TempDir()\n\tpath := filepath.Join(dir, \"some\", \"path\")\n\n\trequire.NoError(t, os.MkdirAll(path, 0755))\n\n\tsrc, err := directorysource.New(\n\t\tdirectorysource.Config{\n\t\t\tPath: path,\n\t\t\tBase: dir,\n\t\t},\n\t)\n\trequire.NoError(t, err)\n\n\treturn sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: catalog,\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tPrettyName: \"debian\",\n\t\t\t\tName:       \"debian\",\n\t\t\t\tID:         \"debian\",\n\t\t\t\tIDLike:     []string{\"like!\"},\n\t\t\t\tVersion:    \"1.2.3\",\n\t\t\t\tVersionID:  \"1.2.3\",\n\t\t\t},\n\t\t},\n\t\tSource: src.Describe(),\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"v0.42.0-bogus\",\n\t\t\t// the application configuration should be persisted here, however, we do not want to import\n\t\t\t// the application configuration in this package (it's reserved only for ingestion by the cmd package)\n\t\t\tConfiguration: map[string]string{\n\t\t\t\t\"config-key\": \"config-value\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc newDirectoryCatalog() *pkg.Collection {\n\tcatalog := pkg.NewCollection()\n\tctx := context.TODO()\n\t// populate catalog with test data\n\tcatalog.Add(pkg.Package{\n\t\tName:    \"package-1\",\n\t\tVersion: \"1.0.1\",\n\t\tType:    pkg.PythonPkg,\n\t\tFoundBy: \"the-cataloger-1\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(\"/some/path/pkg1\"),\n\t\t),\n\t\tLanguage: pkg.Python,\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t),\n\t\tMetadata: pkg.PythonPackage{\n\t\t\tName:    \"package-1\",\n\t\t\tVersion: \"1.0.1\",\n\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/some/path/pkg1/dependencies/foo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tPURL: \"a-purl-2\", // intentionally a bad pURL for test fixtures\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", cpe.Source(\"\")),\n\t\t},\n\t})\n\tcatalog.Add(pkg.Package{\n\t\tName:    \"package-2\",\n\t\tVersion: \"2.0.1\",\n\t\tType:    pkg.DebPkg,\n\t\tFoundBy: \"the-cataloger-2\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(\"/some/path/pkg1\"),\n\t\t),\n\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\tPackage: \"package-2\",\n\t\t\tVersion: \"2.0.1\",\n\t\t},\n\t\tPURL: \"pkg:deb/debian/package-2@2.0.1\",\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", cpe.Source(\"\")),\n\t\t},\n\t})\n\n\treturn catalog\n}\n\nfunc newDirectoryCatalogWithAuthorField() *pkg.Collection {\n\tcatalog := pkg.NewCollection()\n\tctx := context.TODO()\n\t// populate catalog with test data\n\tcatalog.Add(pkg.Package{\n\t\tName:    \"package-1\",\n\t\tVersion: \"1.0.1\",\n\t\tType:    pkg.PythonPkg,\n\t\tFoundBy: \"the-cataloger-1\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(\"/some/path/pkg1\"),\n\t\t),\n\t\tLanguage: pkg.Python,\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t),\n\t\tMetadata: pkg.PythonPackage{\n\t\t\tName:    \"package-1\",\n\t\t\tVersion: \"1.0.1\",\n\t\t\tAuthor:  \"test-author\",\n\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/some/path/pkg1/dependencies/foo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tPURL: \"a-purl-2\", // intentionally a bad pURL for test fixtures\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t},\n\t})\n\tcatalog.Add(pkg.Package{\n\t\tName:    \"package-2\",\n\t\tVersion: \"2.0.1\",\n\t\tType:    pkg.DebPkg,\n\t\tFoundBy: \"the-cataloger-2\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocation(\"/some/path/pkg1\"),\n\t\t),\n\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\tPackage: \"package-2\",\n\t\t\tVersion: \"2.0.1\",\n\t\t},\n\t\tPURL: \"pkg:deb/debian/package-2@2.0.1\",\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", \"another-test-source\"),\n\t\t},\n\t})\n\n\treturn catalog\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/file_relationships.go",
    "content": "package testutil\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\n//nolint:gosec\nfunc AddSampleFileRelationships(s *sbom.SBOM) {\n\tcatalog := s.Artifacts.Packages.Sorted()\n\ts.Artifacts.FileMetadata = map[file.Coordinates]file.Metadata{}\n\n\tfiles := []string{\"/f1\", \"/f2\", \"/d1/f3\", \"/d2/f4\", \"/z1/f5\", \"/a1/f6\"}\n\trnd := rand.New(rand.NewSource(time.Now().UnixNano()))\n\trnd.Shuffle(len(files), func(i, j int) { files[i], files[j] = files[j], files[i] })\n\n\tfor _, f := range files {\n\t\tmeta := file.Metadata{}\n\t\tcoords := file.Coordinates{RealPath: f}\n\t\ts.Artifacts.FileMetadata[coords] = meta\n\n\t\ts.Relationships = append(s.Relationships, artifact.Relationship{\n\t\t\tFrom: catalog[0],\n\t\t\tTo:   coords,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/image_input.go",
    "content": "package testutil\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nfunc ImageInput(t testing.TB, testImage string, options ...ImageOption) sbom.SBOM {\n\tt.Helper()\n\tcatalog := pkg.NewCollection()\n\tvar cfg imageCfg\n\tvar img *image.Image\n\tfor _, opt := range options {\n\t\topt(&cfg)\n\t}\n\n\tdefer changeToDirectoryWithGoldenFixture(t, testImage)()\n\n\tswitch cfg.fromSnapshot {\n\tcase true:\n\t\timg = imagetest.GetGoldenFixtureImage(t, testImage)\n\tdefault:\n\t\timg = imagetest.GetFixtureImage(t, \"docker-archive\", testImage)\n\t}\n\n\tpopulateImageCatalog(catalog, img)\n\n\t// this is a hard coded value that is not given by the fixture helper and must be provided manually\n\timg.Metadata.ManifestDigest = \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\"\n\n\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: \"user-image-input\",\n\t})\n\n\treturn sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: catalog,\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tPrettyName: \"debian\",\n\t\t\t\tName:       \"debian\",\n\t\t\t\tID:         \"debian\",\n\t\t\t\tIDLike:     []string{\"like!\"},\n\t\t\t\tVersion:    \"1.2.3\",\n\t\t\t\tVersionID:  \"1.2.3\",\n\t\t\t},\n\t\t},\n\t\tSource: src.Describe(),\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"v0.42.0-bogus\",\n\t\t\t// the application configuration should be persisted here, however, we do not want to import\n\t\t\t// the application configuration in this package (it's reserved only for ingestion by the cmd package)\n\t\t\tConfiguration: map[string]string{\n\t\t\t\t\"config-key\": \"config-value\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc changeToDirectoryWithGoldenFixture(t testing.TB, testImage string) func() {\n\t// check if test fixture exists... if not, check if there is a shared fixture relative to this dir\n\tfn := func() {}\n\n\tpath := filepath.Join(\"testdata\", testImage)\n\tif _, err := os.Stat(path); err != nil {\n\t\t// change dir, restore as defer\n\t\twd, err := os.Getwd()\n\t\trequire.NoError(t, err)\n\t\tfn = func() {\n\t\t\trequire.NoError(t, os.Chdir(wd))\n\t\t}\n\n\t\t// change dir to the testutil dir\n\t\trequire.NoError(t, os.Chdir(filepath.Join(wd, \"..\", \"internal\", \"testutil\")))\n\t\tt.Cleanup(fn)\n\n\t\tif _, err := os.Stat(path); err != nil {\n\t\t\tt.Fatalf(\"unable to find test fixture: %s\", path)\n\t\t}\n\t}\n\treturn fn\n}\n\nfunc populateImageCatalog(catalog *pkg.Collection, img *image.Image) {\n\t// TODO: this helper function is coupled to the image-simple fixture, which seems like a bad idea\n\t_, ref1, _ := img.SquashedTree().File(\"/somefile-1.txt\", filetree.FollowBasenameLinks)\n\t_, ref2, _ := img.SquashedTree().File(\"/somefile-2.txt\", filetree.FollowBasenameLinks)\n\tctx := context.TODO()\n\t// populate catalog with test data\n\tif ref1 != nil {\n\t\tcatalog.Add(pkg.Package{\n\t\t\tName:    \"package-1\",\n\t\t\tVersion: \"1.0.1\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromImage(string(ref1.RealPath), *ref1.Reference, img),\n\t\t\t),\n\t\t\tType:     pkg.PythonPkg,\n\t\t\tFoundBy:  \"the-cataloger-1\",\n\t\t\tLanguage: pkg.Python,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t),\n\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\tName:    \"package-1\",\n\t\t\t\tVersion: \"1.0.1\",\n\t\t\t},\n\t\t\tPURL: \"a-purl-1\", // intentionally a bad pURL for test fixtures\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\t},\n\t\t})\n\t}\n\n\tif ref2 != nil {\n\t\tcatalog.Add(pkg.Package{\n\t\t\tName:    \"package-2\",\n\t\t\tVersion: \"2.0.1\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromImage(string(ref2.RealPath), *ref2.Reference, img),\n\t\t\t),\n\t\t\tType:    pkg.DebPkg,\n\t\t\tFoundBy: \"the-cataloger-2\",\n\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage: \"package-2\",\n\t\t\t\tVersion: \"2.0.1\",\n\t\t\t},\n\t\t\tPURL: \"pkg:deb/debian/package-2@2.0.1\",\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/redactor.go",
    "content": "package testutil\n\nimport (\n\t\"bytes\"\n\t\"regexp\"\n)\n\nvar (\n\t_ Redactor = (*RedactorFn)(nil)\n\t_ Redactor = (*PatternReplacement)(nil)\n\t_ Redactor = (*ValueReplacement)(nil)\n\t_ Redactor = (*Redactions)(nil)\n)\n\ntype Redactor interface {\n\tRedact([]byte) []byte\n}\n\n// Replace by function //////////////////////////////\n\ntype RedactorFn func([]byte) []byte\n\nfunc (r RedactorFn) Redact(b []byte) []byte {\n\treturn r(b)\n}\n\n// Replace by regex //////////////////////////////\n\ntype PatternReplacement struct {\n\tSearch  *regexp.Regexp\n\tGroups  []string\n\tReplace string\n}\n\nfunc NewPatternReplacement(r *regexp.Regexp) PatternReplacement {\n\treturn PatternReplacement{\n\t\tSearch:  r,\n\t\tReplace: \"redacted\",\n\t}\n}\n\nfunc (p PatternReplacement) Redact(b []byte) []byte {\n\tif len(p.Groups) == 0 {\n\t\treturn p.Search.ReplaceAll(b, []byte(p.Replace))\n\t}\n\n\treturn p.redactNamedGroups(b)\n}\n\nfunc (p PatternReplacement) redactNamedGroups(b []byte) []byte {\n\tgroupsToReplace := make(map[string]bool)\n\tfor _, g := range p.Groups {\n\t\tgroupsToReplace[g] = true\n\t}\n\n\tsubexpNames := p.Search.SubexpNames()\n\n\treturn p.Search.ReplaceAllFunc(b, func(match []byte) []byte {\n\t\tindexes := p.Search.FindSubmatchIndex(match)\n\t\tif indexes == nil {\n\t\t\treturn match\n\t\t}\n\n\t\tresult := make([]byte, len(match))\n\t\tcopy(result, match)\n\n\t\t// keep track of the offset as we replace groups\n\t\toffset := 0\n\n\t\t// process each named group\n\t\tfor i, name := range subexpNames {\n\t\t\t// skip the full match (i==0) and groups we don't want to replace\n\t\t\tif i == 0 || !groupsToReplace[name] {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// get the start and end positions of this group\n\t\t\tstartPos := indexes[2*i]\n\t\t\tendPos := indexes[2*i+1]\n\n\t\t\t// skip if the group didn't match\n\t\t\tif startPos < 0 || endPos < 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// adjust positions based on previous replacements\n\t\t\tstartPos += offset\n\t\t\tendPos += offset\n\n\t\t\t// replace the group with our replacement text\n\t\t\tbeforeGroup := result[:startPos]\n\t\t\tafterGroup := result[endPos:]\n\n\t\t\t// calculate the new offset\n\t\t\toldLen := endPos - startPos\n\t\t\tnewLen := len(p.Replace)\n\t\t\toffset += (newLen - oldLen)\n\n\t\t\tresult = append(beforeGroup, append([]byte(p.Replace), afterGroup...)...) //nolint:gocritic\n\t\t}\n\n\t\treturn result\n\t})\n}\n\n// Replace by value //////////////////////////////\n\ntype ValueReplacement struct {\n\tSearch  string\n\tReplace string\n}\n\nfunc NewValueReplacement(v string) ValueReplacement {\n\treturn ValueReplacement{\n\t\tSearch:  v,\n\t\tReplace: \"redacted\",\n\t}\n}\n\nfunc (v ValueReplacement) Redact(b []byte) []byte {\n\treturn bytes.ReplaceAll(b, []byte(v.Search), []byte(v.Replace))\n}\n\n// Handle a collection of redactors //////////////////////////////\n\ntype Redactions struct {\n\tredactors []Redactor\n}\n\nfunc NewRedactions(redactors ...Redactor) *Redactions {\n\tr := &Redactions{\n\t\tredactors: redactors,\n\t}\n\n\treturn r.WithFunctions(carriageRedactor)\n}\n\nfunc (r *Redactions) WithPatternRedactors(values map[string]string) *Redactions {\n\tfor k, v := range values {\n\t\tr.redactors = append(r.redactors,\n\t\t\tPatternReplacement{\n\t\t\t\tSearch:  regexp.MustCompile(k),\n\t\t\t\tReplace: v,\n\t\t\t},\n\t\t)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithPatternRedactorSpec(values ...PatternReplacement) *Redactions {\n\tfor _, v := range values {\n\t\tr.redactors = append(r.redactors, v)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithValueRedactors(values map[string]string) *Redactions {\n\tfor k, v := range values {\n\t\tr.redactors = append(r.redactors,\n\t\t\tValueReplacement{\n\t\t\t\tSearch:  k,\n\t\t\t\tReplace: v,\n\t\t\t},\n\t\t)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithPatternsRedacted(values ...string) *Redactions {\n\tfor _, pattern := range values {\n\t\tr.redactors = append(r.redactors,\n\t\t\tNewPatternReplacement(regexp.MustCompile(pattern)),\n\t\t)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithValuesRedacted(values ...string) *Redactions {\n\tfor _, v := range values {\n\t\tr.redactors = append(r.redactors,\n\t\t\tNewValueReplacement(v),\n\t\t)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithFunctions(values ...func([]byte) []byte) *Redactions {\n\tfor _, fn := range values {\n\t\tr.redactors = append(r.redactors,\n\t\t\tRedactorFn(fn),\n\t\t)\n\t}\n\treturn r\n}\n\nfunc (r *Redactions) WithRedactors(rs ...Redactor) *Redactions {\n\tr.redactors = append(r.redactors, rs...)\n\treturn r\n}\n\nfunc (r Redactions) Redact(b []byte) []byte {\n\tfor _, redactor := range r.redactors {\n\t\tb = redactor.Redact(b)\n\t}\n\treturn b\n}\n\nfunc carriageRedactor(s []byte) []byte {\n\treturn bytes.ReplaceAll(s, []byte(\"\\r\\n\"), []byte(\"\\n\"))\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/snapshot.go",
    "content": "package testutil\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/internal/testutils\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\ntype imageCfg struct {\n\tfromSnapshot bool\n}\n\ntype ImageOption func(cfg *imageCfg)\n\nfunc FromSnapshot() ImageOption {\n\treturn func(cfg *imageCfg) {\n\t\tcfg.fromSnapshot = true\n\t}\n}\n\ntype EncoderSnapshotTestConfig struct {\n\tSubject                     sbom.SBOM\n\tFormat                      sbom.FormatEncoder\n\tUpdateSnapshot              bool\n\tPersistRedactionsInSnapshot bool\n\tIsJSON                      bool\n\tRedactor                    Redactor\n}\n\nfunc AssertEncoderAgainstGoldenSnapshot(t *testing.T, cfg EncoderSnapshotTestConfig) {\n\tt.Helper()\n\tvar buffer bytes.Buffer\n\n\terr := cfg.Format.Encode(&buffer, cfg.Subject)\n\tassert.NoError(t, err)\n\tactual := buffer.Bytes()\n\n\tif cfg.UpdateSnapshot && !cfg.PersistRedactionsInSnapshot {\n\t\t// replace the expected snapshot contents with the current (unredacted) encoder contents\n\t\ttestutils.UpdateGoldenFileContents(t, actual)\n\t\treturn\n\t}\n\n\tif cfg.Redactor != nil {\n\t\tactual = cfg.Redactor.Redact(actual)\n\t}\n\n\tif cfg.UpdateSnapshot && cfg.PersistRedactionsInSnapshot {\n\t\t// replace the expected snapshot contents with the current (redacted) encoder contents\n\t\ttestutils.UpdateGoldenFileContents(t, actual)\n\t\treturn\n\t}\n\n\tvar expected []byte\n\tif cfg.Redactor != nil {\n\t\texpected = cfg.Redactor.Redact(testutils.GetGoldenFileContents(t))\n\t} else {\n\t\texpected = testutils.GetGoldenFileContents(t)\n\t}\n\n\tif cfg.IsJSON {\n\t\trequire.JSONEq(t, string(expected), string(actual))\n\t} else {\n\t\trequireEqual(t, string(expected), string(actual))\n\t}\n}\n\nfunc requireEqual(t *testing.T, expected string, actual string) {\n\tif diff := cmp.Diff(expected, actual); diff != \"\" {\n\t\t// uncomment to debug\n\t\t// t.Logf(\"expected:\\n%s\", expected)\n\t\t// t.Logf(\"actual:\\n%s\", actual)\n\t\tt.Fatalf(\"mismatched output: %s\", diff)\n\t}\n}\n\ntype ImageSnapshotTestConfig struct {\n\tImage               string\n\tUpdateImageSnapshot bool\n}\n\nfunc AssertEncoderAgainstGoldenImageSnapshot(t *testing.T, imgCfg ImageSnapshotTestConfig, cfg EncoderSnapshotTestConfig) {\n\tif imgCfg.UpdateImageSnapshot {\n\t\tdefer changeToDirectoryWithGoldenFixture(t, imgCfg.Image)()\n\n\t\t// grab the latest image contents and persist\n\t\timagetest.UpdateGoldenFixtureImage(t, imgCfg.Image)\n\t}\n\n\tAssertEncoderAgainstGoldenSnapshot(t, cfg)\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/testdata/image-simple/Dockerfile",
    "content": "# Note: changes to this file will result in updating several test values. Consider making a new image fixture instead of editing this one.\nFROM scratch\nADD file-1.txt /somefile-1.txt\nADD file-2.txt /somefile-2.txt\n"
  },
  {
    "path": "syft/format/internal/testutil/testdata/image-simple/file-1.txt",
    "content": "this file has contents"
  },
  {
    "path": "syft/format/internal/testutil/testdata/image-simple/file-2.txt",
    "content": "file-2 contents!"
  },
  {
    "path": "syft/format/internal/testutil/testdata/snapshot/TestImageEncoder.golden",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"25f6913140cb5286\",\n   \"name\": \"package-1\",\n   \"version\": \"1.0.1\",\n   \"type\": \"python\",\n   \"foundBy\": \"the-cataloger-1\",\n   \"locations\": [\n    {\n     \"path\": \"/somefile-1.txt\",\n     \"layerID\": \"sha256:100d5a55f9032faead28b7427fa3e650e4f0158f86ea89d06e1489df00cb8c6f\",\n     \"accessPath\": \"/somefile-1.txt\"\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"fullText\": \"\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": []\n    }\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n     \"source\": \"syft-generated\"\n    }\n   ],\n   \"purl\": \"a-purl-1\",\n   \"metadataType\": \"python-package\",\n   \"metadata\": {\n    \"name\": \"package-1\",\n    \"version\": \"1.0.1\",\n    \"author\": \"\",\n    \"authorEmail\": \"\",\n    \"platform\": \"\",\n    \"sitePackagesRootPath\": \"\"\n   }\n  },\n  {\n   \"id\": \"4b756c6f6fb127a3\",\n   \"name\": \"package-2\",\n   \"version\": \"2.0.1\",\n   \"type\": \"deb\",\n   \"foundBy\": \"the-cataloger-2\",\n   \"locations\": [\n    {\n     \"path\": \"/somefile-2.txt\",\n     \"layerID\": \"sha256:000fb9200890d3a19138478b20023023c0dce1c54352007c2863716780f049eb\",\n     \"accessPath\": \"/somefile-2.txt\"\n    }\n   ],\n   \"licenses\": [],\n   \"language\": \"\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n     \"source\": \"nvd-cpe-dictionary\"\n    }\n   ],\n   \"purl\": \"pkg:deb/debian/package-2@2.0.1\",\n   \"metadataType\": \"dpkg-db-entry\",\n   \"metadata\": {\n    \"package\": \"package-2\",\n    \"source\": \"\",\n    \"version\": \"2.0.1\",\n    \"sourceVersion\": \"\",\n    \"architecture\": \"\",\n    \"maintainer\": \"\",\n    \"installedSize\": 0,\n    \"files\": null\n   }\n  }\n ],\n \"artifactRelationships\": [],\n \"source\": {\n  \"id\": \"34d40fdc6ca13e9a3fa18415db216b50bff047716fae7d95a225c09732fe83fb\",\n  \"name\": \"user-image-input\",\n  \"version\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n  \"type\": \"image\",\n  \"metadata\": {\n   \"userInput\": \"user-image-input\",\n   \"imageID\": \"sha256:bf783ea304a3f02b5c7d2ece521800f5e2182e65ed5bb5116f578e17d6e82be4\",\n   \"manifestDigest\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"stereoscope-fixture-image-simple:85066c51088bdd274f7a89e99e00490f666c49e72ffc955707cd6e18f0e22c5b\"\n   ],\n   \"imageSize\": 38,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:100d5a55f9032faead28b7427fa3e650e4f0158f86ea89d06e1489df00cb8c6f\",\n     \"size\": 22\n    },\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:000fb9200890d3a19138478b20023023c0dce1c54352007c2863716780f049eb\",\n     \"size\": 16\n    }\n   ],\n   \"manifest\": \"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjo2NzIsImRpZ2VzdCI6InNoYTI1NjpiZjc4M2VhMzA0YTNmMDJiNWM3ZDJlY2U1MjE4MDBmNWUyMTgyZTY1ZWQ1YmI1MTE2ZjU3OGUxN2Q2ZTgyYmU0In0sImxheWVycyI6W3sibWVkaWFUeXBlIjoiYXBwbGljYXRpb24vdm5kLmRvY2tlci5pbWFnZS5yb290ZnMuZGlmZi50YXIuZ3ppcCIsInNpemUiOjIwNDgsImRpZ2VzdCI6InNoYTI1NjoxMDBkNWE1NWY5MDMyZmFlYWQyOGI3NDI3ZmEzZTY1MGU0ZjAxNThmODZlYTg5ZDA2ZTE0ODlkZjAwY2I4YzZmIn0seyJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmltYWdlLnJvb3Rmcy5kaWZmLnRhci5nemlwIiwic2l6ZSI6MjA0OCwiZGlnZXN0Ijoic2hhMjU2OjAwMGZiOTIwMDg5MGQzYTE5MTM4NDc4YjIwMDIzMDIzYzBkY2UxYzU0MzUyMDA3YzI4NjM3MTY3ODBmMDQ5ZWIifV19\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhcm02NCIsImNvbmZpZyI6eyJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiV29ya2luZ0RpciI6Ii8iLCJPbkJ1aWxkIjpudWxsfSwiY3JlYXRlZCI6IjIwMjMtMDktMjhUMTI6MjM6MzUuNDAwNjcyODg1WiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIzLTA5LTI4VDEyOjIzOjM1LjM5Mzk4NjUxWiIsImNyZWF0ZWRfYnkiOiJBREQgZmlsZS0xLnR4dCAvc29tZWZpbGUtMS50eHQgIyBidWlsZGtpdCIsImNvbW1lbnQiOiJidWlsZGtpdC5kb2NrZXJmaWxlLnYwIn0seyJjcmVhdGVkIjoiMjAyMy0wOS0yOFQxMjoyMzozNS40MDA2NzI4ODVaIiwiY3JlYXRlZF9ieSI6IkFERCBmaWxlLTIudHh0IC9zb21lZmlsZS0yLnR4dCAjIGJ1aWxka2l0IiwiY29tbWVudCI6ImJ1aWxka2l0LmRvY2tlcmZpbGUudjAifV0sIm9zIjoibGludXgiLCJyb290ZnMiOnsidHlwZSI6ImxheWVycyIsImRpZmZfaWRzIjpbInNoYTI1NjoxMDBkNWE1NWY5MDMyZmFlYWQyOGI3NDI3ZmEzZTY1MGU0ZjAxNThmODZlYTg5ZDA2ZTE0ODlkZjAwY2I4YzZmIiwic2hhMjU2OjAwMGZiOTIwMDg5MGQzYTE5MTM4NDc4YjIwMDIzMDIzYzBkY2UxYzU0MzUyMDA3YzI4NjM3MTY3ODBmMDQ5ZWIiXX19\",\n   \"repoDigests\": [],\n   \"architecture\": \"\",\n   \"os\": \"\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"debian\",\n  \"name\": \"debian\",\n  \"id\": \"debian\",\n  \"idLike\": [\n   \"like!\"\n  ],\n  \"version\": \"1.2.3\",\n  \"versionID\": \"1.2.3\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"v0.42.0-bogus\",\n  \"configuration\": {\n   \"config-key\": \"config-value\"\n  }\n }\n}\n"
  },
  {
    "path": "syft/format/internal/testutil/testdata/snapshot/TestSPDXTagValueImageEncoder.golden",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: user-image-input\nDocumentNamespace: redacted\nLicenseListVersion: redacted\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-v0.42.0-bogus\nCreated: redacted\n\n##### Package: user-image-input\n\nPackageName: user-image-input\nSPDXID: SPDXRef-DocumentRoot-Image-user-image-input\nPackageVersion: sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: CONTAINER\nFilesAnalyzed: false\nPackageChecksum: SHA256: 2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nExternalRef: PACKAGE-MANAGER purl pkg:oci/user-image-input@sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368?arch=\n\n##### Package: package-2\n\nPackageName: package-2\nSPDXID: SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nPackageVersion: 2.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from DPKG DB: /somefile-2.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:deb/debian/package-2@2.0.1\n\n##### Package: package-1\n\nPackageName: package-1\nSPDXID: SPDXRef-Package-python-package-1-25f6913140cb5286\nPackageVersion: 1.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from installed python package manifest file: /somefile-1.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: MIT\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl a-purl-1\n\n##### Relationships\n\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-python-package-1-25f6913140cb5286\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Image-user-image-input\n\n"
  },
  {
    "path": "syft/format/purls/decoder.go",
    "content": "package purls\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct{}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\tif r == nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"no reader provided\")\n\t}\n\ts, err := toSyftModel(r)\n\treturn s, ID, version, err\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\tif r == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\t\tif line == \"\" {\n\t\t\t// skip whitespace only lines\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"pkg:\") {\n\t\t\t_, err := packageurl.FromString(line)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"error\", err, \"line\", line).Debug(\"unable to parse purl\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn ID, version\n\t\t}\n\t\t// not a purl, so we can't identify the format as a list of purls\n\t\treturn \"\", \"\"\n\t}\n\n\treturn \"\", \"\"\n}\n\nfunc toSyftModel(r io.Reader) (*sbom.SBOM, error) {\n\tvar errs []error\n\tpkgs := pkg.NewCollection()\n\n\tscanner := bufio.NewScanner(r)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// skip invalid PURLs\n\t\t_, err := packageurl.FromString(line)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"line\", line).Debug(\"unable to parse purl\")\n\t\t\tcontinue\n\t\t}\n\t\tp := pkg.Package{\n\t\t\t// name, version and other properties set during Backfill\n\t\t\tPURL: line,\n\t\t}\n\n\t\tinternal.Backfill(&p)\n\t\tp.SetID()\n\t\tpkgs.Add(p)\n\t}\n\n\treturn &sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkgs,\n\t\t},\n\t}, errors.Join(errs...)\n}\n"
  },
  {
    "path": "syft/format/purls/decoder_test.go",
    "content": "package purls\n\nimport (\n\t\"bytes\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/cmptest\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tpurl     string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tpurl: \"pkg:generic/some-package@1.2.3\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"some-package\",\n\t\t\t\t\tType:    pkg.UnknownPkg,\n\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t\tPURL:    \"pkg:generic/some-package@1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:npm/some-package@1.2.3\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"some-package\",\n\t\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\t\tVersion:  \"1.2.3\",\n\t\t\t\t\tPURL:     \"pkg:npm/some-package@1.2.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:apk/curl@7.61.1\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"curl\",\n\t\t\t\t\tVersion: \"7.61.1\",\n\t\t\t\t\tType:    pkg.ApkPkg,\n\t\t\t\t\tPURL:    \"pkg:apk/curl@7.61.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:deb/debian/sysv-rc@2.88dsf-59?arch=all&distro=debian-jessie&upstream=sysvinit\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"sysv-rc\",\n\t\t\t\t\tVersion: \"2.88dsf-59\",\n\t\t\t\t\tType:    pkg.DebPkg,\n\t\t\t\t\tPURL:    \"pkg:deb/debian/sysv-rc@2.88dsf-59?arch=all&distro=debian-jessie&upstream=sysvinit\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:apk/libcrypto3@3.3.2?upstream=openssl\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"libcrypto3\",\n\t\t\t\t\tVersion: \"3.3.2\",\n\t\t\t\t\tType:    pkg.ApkPkg,\n\t\t\t\t\tPURL:    \"pkg:apk/libcrypto3@3.3.2?upstream=openssl\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:apk/libcrypto3@3.3.2?upstream=openssl%403.2.1\", // %40 is @\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"libcrypto3\",\n\t\t\t\t\tVersion: \"3.3.2\",\n\t\t\t\t\tType:    pkg.ApkPkg,\n\t\t\t\t\tPURL:    \"pkg:apk/libcrypto3@3.3.2?upstream=openssl%403.2.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:rpm/redhat/systemd-x@239-82.el8_10.2?arch=aarch64&distro=rhel-8.10&upstream=systemd-239-82.el8_10.2.src.rpm\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"systemd-x\",\n\t\t\t\t\tVersion: \"239-82.el8_10.2\",\n\t\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\t\tPURL:    \"pkg:rpm/redhat/systemd-x@239-82.el8_10.2?arch=aarch64&distro=rhel-8.10&upstream=systemd-239-82.el8_10.2.src.rpm\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&epoch=1&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"dbus-common\",\n\t\t\t\t\tVersion: \"1:1.12.8-26.el8\",\n\t\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\t\tPURL:    \"pkg:rpm/redhat/dbus-common@1.12.8-26.el8?arch=noarch&distro=rhel-8.10&epoch=1&upstream=dbus-1.12.8-26.el8.src.rpm\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:apk/curl@7.61.1?arch=aarch64&distro=alpine-3.20.3\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"curl\",\n\t\t\t\t\tVersion: \"7.61.1\",\n\t\t\t\t\tType:    pkg.ApkPkg,\n\t\t\t\t\tPURL:    \"pkg:apk/curl@7.61.1?arch=aarch64&distro=alpine-3.20.3\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:golang/k8s.io/ingress-nginx@v1.11.2\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"k8s.io/ingress-nginx\",\n\t\t\t\t\tVersion:  \"v1.11.2\",\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tPURL:     \"pkg:golang/k8s.io/ingress-nginx@v1.11.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:golang/github.com/wazuh/wazuh@v4.5.0\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/wazuh/wazuh\",\n\t\t\t\t\tVersion:  \"v4.5.0\",\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/wazuh/wazuh@v4.5.0\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:golang/wazuh@v4.5.0\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"wazuh\",\n\t\t\t\t\tVersion:  \"v4.5.0\",\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tPURL:     \"pkg:golang/wazuh@v4.5.0\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:maven/org.apache/some-pkg@4.11.3\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"some-pkg\",\n\t\t\t\t\tVersion:  \"4.11.3\",\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tPURL:     \"pkg:maven/org.apache/some-pkg@4.11.3\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\t// we intentionally do not claim we found a pom properties file (don't derive this from the purl).\n\t\t\t\t\t// but we need a metadata allocated since all Java packages have a this metadata type (a consistency point)\n\t\t\t\t\tMetadata: pkg.JavaArchive{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.purl, func(t *testing.T) {\n\t\t\tdec := NewFormatDecoder()\n\t\t\tgot, _, _, err := dec.Decode(strings.NewReader(test.purl))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(test.expected, got.Artifacts.Packages.Sorted(), cmptest.DefaultOptions()...); diff != \"\" {\n\t\t\t\tt.Errorf(\"expected packages (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_DecodeEncodeCycle(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t}{\n\t\t{\n\t\t\tname:  \"basic\",\n\t\t\tinput: \"pkg:generic/some-package@1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname:  \"multiple\",\n\t\t\tinput: \"pkg:generic/pkg1\\npkg:generic/pkg2\\n\\npkg:npm/@vercel/ncc@2.9.5\",\n\t\t},\n\t\t{\n\t\t\tname:  \"java\",\n\t\t\tinput: \"pkg:maven/org.apache/some-thing@4.11.3\",\n\t\t},\n\t\t{\n\t\t\tname:  \"leading whitespace\",\n\t\t\tinput: \"     \\n \\t  pkg:maven/org.apache/some-thing@4.11.3\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tdec := NewFormatDecoder()\n\t\t\tdecodedSBOM, _, _, err := dec.Decode(strings.NewReader(tt.input))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar buf bytes.Buffer\n\t\t\tenc := NewFormatEncoder()\n\t\t\trequire.NoError(t, enc.Encode(&buf, *decodedSBOM))\n\n\t\t\tin := strings.TrimSpace(regexp.MustCompile(`\\s+`).ReplaceAllString(strings.TrimSpace(tt.input), \"\\n\"))\n\t\t\texpected := strings.Split(in, \"\\n\")\n\t\t\tslices.Sort(expected)\n\n\t\t\tgot := strings.Split(strings.TrimSpace(buf.String()), \"\\n\")\n\t\t\tslices.Sort(got)\n\t\t\trequire.EqualValues(t, expected, got)\n\n\t\t\tfor _, item := range got {\n\t\t\t\t// require every result is a valid PURL -- no whitespace lines, etc.\n\t\t\t\t_, err = packageurl.FromString(item)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/purls/encoder.go",
    "content": "package purls\n\nimport (\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID sbom.FormatID = \"purls\"\nconst version = \"1\"\n\ntype encoder struct {\n}\n\nfunc NewFormatEncoder() sbom.FormatEncoder {\n\treturn encoder{}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"purl\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\toutput := strset.New()\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\tpurl := strings.TrimSpace(p.PURL)\n\t\tif purl == \"\" || output.Has(purl) {\n\t\t\tcontinue\n\t\t}\n\t\t// ensure syft doesn't output invalid PURLs in this format\n\t\t_, err := packageurl.FromString(purl)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"invalid purl: %q\", purl)\n\t\t\tcontinue\n\t\t}\n\t\toutput.Add(purl)\n\t\t_, err = writer.Write([]byte(purl))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = writer.Write([]byte(\"\\n\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/purls/encoder_test.go",
    "content": "package purls\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-purls\", false, \"update the *.golden files for purls format\")\n\nfunc Test_Encoder(t *testing.T) {\n\tpkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"npmtest\",\n\t\t\tVersion:  \"1.5.1\",\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tPURL:     \"pkg:npm/npmtest@1.5.1\",\n\t\t},\n\t\t{\n\t\t\tName:     \"npmtest2\",\n\t\t\tVersion:  \"1.5.1\",\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tPURL:     \"pkg:npm/npmtest@1.5.1\", // duplicate should not be included\n\t\t},\n\t\t{\n\t\t\tName:     \"npmtest\",\n\t\t\tVersion:  \"3.1.1\",\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tPURL:     \"http://npm/npmtest@3.1.1\", // invalid PURL should not be included\n\t\t},\n\t\t{\n\t\t\tName:     \"javatest\",\n\t\t\tVersion:  \"0.30.1\",\n\t\t\tType:     pkg.JavaPkg,\n\t\t\tLanguage: pkg.Java,\n\t\t\tPURL:     \"pkg:maven/org.apache/javatest@0.30.1\",\n\t\t},\n\t\t{\n\t\t\tType: pkg.UnknownPkg,\n\t\t\tPURL: \"pkg:generic/generic@1.2.3\",\n\t\t},\n\t}\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject: sbom.SBOM{Artifacts: sbom.Artifacts{\n\t\t\t\tPackages: pkg.NewCollection(pkgs...),\n\t\t\t}},\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n"
  },
  {
    "path": "syft/format/purls/testdata/snapshot/Test_Encoder.golden",
    "content": "pkg:generic/generic@1.2.3\npkg:maven/org.apache/javatest@0.30.1\npkg:npm/npmtest@1.5.1\n"
  },
  {
    "path": "syft/format/spdxjson/decoder.go",
    "content": "package spdxjson\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\tspdxJson \"github.com/spdx/tools-golang/json\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/common/spdxhelpers\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct {\n}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", err\n\t}\n\n\t// since spdx lib will always return the latest version of the document, we need to identify the version\n\t// first and then decode into the appropriate document object. Otherwise if we get the version info from the\n\t// decoded object we will always get the latest version (instead of the version we decoded from).\n\tid, version := d.Identify(reader)\n\tif id != ID {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"not a spdx json document\")\n\t}\n\tif version == \"\" {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unsupported spdx json document version\")\n\t}\n\n\tif _, err := reader.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to seek to start of SPDX JSON SBOM: %+v\", err)\n\t}\n\n\tdoc, err := spdxJson.Read(reader)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to decode spdx json: %w\", err)\n\t}\n\n\ts, err := spdxhelpers.ToSyftModel(doc)\n\tif err != nil {\n\t\treturn nil, id, version, err\n\t}\n\treturn s, id, version, nil\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn \"\", \"\"\n\t}\n\n\tif _, err := reader.Seek(0, io.SeekStart); err != nil {\n\t\tlog.Debugf(\"unable to seek to start of SPDX JSON SBOM: %+v\", err)\n\t\treturn \"\", \"\"\n\t}\n\n\t// Example JSON document\n\t// {\n\t// \"spdxVersion\": \"SPDX-2.3\",\n\t// ...\n\ttype Document struct {\n\t\tSPDXVersion string `json:\"spdxVersion\"`\n\t}\n\n\tdec := json.NewDecoder(reader)\n\n\tvar doc Document\n\tif err = dec.Decode(&doc); err != nil {\n\t\t// maybe not json? maybe not valid? doesn't matter, we won't process it.\n\t\treturn \"\", \"\"\n\t}\n\n\tid, version := getFormatInfo(doc.SPDXVersion)\n\tif version == \"\" || id != ID {\n\t\t// not a spdx json document that we support\n\t\treturn \"\", \"\"\n\t}\n\n\treturn id, version\n}\n\nfunc getFormatInfo(spdxVersion string) (sbom.FormatID, string) {\n\t// example input: SPDX-2.3\n\tif !strings.HasPrefix(strings.ToLower(spdxVersion), \"spdx-\") {\n\t\treturn \"\", \"\"\n\t}\n\tfields := strings.Split(spdxVersion, \"-\")\n\tif len(fields) != 2 {\n\t\treturn ID, \"\"\n\t}\n\n\treturn ID, fields[1]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/decoder_test.go",
    "content": "package spdxjson\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tfail          bool\n\t\tid            sbom.FormatID\n\t\tversion       string\n\t\tpackages      []string\n\t\trelationships []string\n\t}{\n\t\t{\n\t\t\tname:          \"alpine-3.10.syft.spdx.json\",\n\t\t\tid:            ID,\n\t\t\tversion:       \"2.2\",\n\t\t\tpackages:      []string{\"busybox\", \"libssl1.1\", \"ssl_client\"},\n\t\t\trelationships: []string{\"busybox\", \"busybox\", \"libssl1.1\", \"libssl1.1\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"alpine-3.10.vendor.spdx.json\",\n\t\t\tid:            ID,\n\t\t\tversion:       \"2.2\",\n\t\t\tpackages:      []string{\"alpine\", \"busybox\", \"ssl_client\"},\n\t\t\trelationships: []string{},\n\t\t},\n\t\t{\n\t\t\tname:    \"example7-bin.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t},\n\t\t{\n\t\t\tname:    \"example7-go-module.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t},\n\t\t{\n\t\t\tname:    \"example7-golang.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t},\n\t\t{\n\t\t\tname:    \"example7-third-party-modules.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t},\n\t\t{\n\t\t\tname:    \"bad/example7-bin.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t\tfail:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"bad/example7-go-module.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t\tfail:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"bad/example7-golang.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t\tfail:    true,\n\t\t},\n\t\t{\n\t\t\tname:    \"bad/example7-third-party-modules.spdx.json\",\n\t\t\tid:      ID,\n\t\t\tversion: \"2.2\",\n\t\t\tfail:    true,\n\t\t},\n\t\t{\n\t\t\tname: \"bad/bad-sbom\",\n\t\t\tfail: true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\treader, err := os.Open(filepath.Join(\"testdata\", \"spdx\", test.name))\n\t\t\trequire.NoError(t, err)\n\n\t\t\treset := func() { _, err = reader.Seek(0, io.SeekStart); require.NoError(t, err) }\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tif test.fail {\n\t\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\t\tassert.Equal(t, test.version, formatVersion)\n\n\t\t\t\treset()\n\t\t\t\t_, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tassert.Equal(t, test.id, decodeID)\n\t\t\t\tassert.Equal(t, test.version, decodeVersion)\n\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\tassert.Equal(t, test.version, formatVersion)\n\n\t\t\treset()\n\t\t\ts, decodeID, decodeVersion, err := dec.Decode(reader)\n\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, test.id, decodeID)\n\t\t\tassert.Equal(t, test.version, decodeVersion)\n\n\t\t\tif test.packages != nil {\n\t\t\t\tassert.Equal(t, s.Artifacts.Packages.PackageCount(), len(test.packages))\n\n\t\t\tpackages:\n\t\t\t\tfor _, pkgName := range test.packages {\n\t\t\t\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\t\t\t\tif p.Name == pkgName {\n\t\t\t\t\t\t\tcontinue packages\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tassert.NoError(t, fmt.Errorf(\"Unable to find package: %s\", pkgName))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif test.relationships != nil {\n\t\t\t\tassert.Len(t, s.Relationships, len(test.relationships))\n\n\t\t\trelationships:\n\t\t\t\tfor _, pkgName := range test.relationships {\n\t\t\t\t\tfor _, rel := range s.Relationships {\n\t\t\t\t\t\tp, ok := rel.From.(pkg.Package)\n\t\t\t\t\t\tif ok && p.Name == pkgName {\n\t\t\t\t\t\t\tcontinue relationships\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tassert.NoError(t, fmt.Errorf(\"Unable to find relationship: %s\", pkgName))\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDecoder_Identify(t *testing.T) {\n\ttype testCase struct {\n\t\tname    string\n\t\tfile    string\n\t\tid      sbom.FormatID\n\t\tversion string\n\t}\n\n\tvar cases []testCase\n\n\tfor _, version := range SupportedVersions() {\n\t\tcases = append(cases, testCase{\n\t\t\tname:    fmt.Sprintf(\"v%s schema\", version),\n\t\t\tfile:    fmt.Sprintf(\"testdata/identify/%s.json\", version),\n\t\t\tid:      ID,\n\t\t\tversion: version,\n\t\t})\n\t}\n\n\tfor _, test := range cases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\treader, err := os.Open(test.file)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\tassert.Equal(t, test.version, formatVersion)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/spdxjson/encoder.go",
    "content": "package spdxjson\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/spdx/tools-golang/convert\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_1\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_2\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_3\"\n\n\t\"github.com/anchore/syft/syft/format/common/spdxhelpers\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID = spdxutil.JSONFormatID\n\nfunc SupportedVersions() []string {\n\treturn spdxutil.SupportedVersions(ID)\n}\n\ntype EncoderConfig struct {\n\tVersion string\n\tPretty  bool // don't include spaces and newlines; same as jq -c\n}\n\ntype encoder struct {\n\tcfg EncoderConfig\n}\n\nfunc NewFormatEncoderWithConfig(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\treturn encoder{\n\t\tcfg: cfg,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tVersion: spdxutil.DefaultVersion,\n\t\tPretty:  false,\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{}\n}\n\nfunc (e encoder) Version() string {\n\treturn e.cfg.Version\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tlatestDoc := spdxhelpers.ToFormatModel(s)\n\tif latestDoc == nil {\n\t\treturn fmt.Errorf(\"unable to convert SBOM to SPDX document\")\n\t}\n\n\tvar err error\n\tvar encodeDoc any\n\tswitch e.cfg.Version {\n\tcase \"2.1\":\n\t\tdoc := v2_1.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\tcase \"2.2\":\n\t\tdoc := v2_2.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\n\tcase \"2.3\":\n\t\tdoc := v2_3.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported SPDX version %q\", e.cfg.Version)\n\t}\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to convert SBOM to SPDX document: %w\", err)\n\t}\n\n\tenc := json.NewEncoder(writer)\n\n\tenc.SetEscapeHTML(false)\n\n\tif e.cfg.Pretty {\n\t\tenc.SetIndent(\"\", \" \")\n\t}\n\n\treturn enc.Encode(encodeDoc)\n}\n"
  },
  {
    "path": "syft/format/spdxjson/encoder_test.go",
    "content": "package spdxjson\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil\"\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-spdx-json\", false, \"update the *.golden files for spdx-json encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc getEncoder(t testing.TB) sbom.FormatEncoder {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\treturn enc\n}\n\nfunc TestPrettyOutput(t *testing.T) {\n\trun := func(opt bool) string {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{\n\t\t\tVersion: spdxutil.DefaultVersion,\n\t\t\tPretty:  opt,\n\t\t})\n\t\trequire.NoError(t, err)\n\n\t\tdir := t.TempDir()\n\t\ts := testutil.DirectoryInput(t, dir)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\treturn strings.TrimSpace(buffer.String())\n\t}\n\n\tt.Run(\"pretty\", func(t *testing.T) {\n\t\tactual := run(true)\n\t\tassert.Contains(t, actual, \"\\n\")\n\t})\n\n\tt.Run(\"compact\", func(t *testing.T) {\n\t\tactual := run(false)\n\t\tassert.NotContains(t, actual, \"\\n\")\n\t})\n}\n\nfunc TestEscapeHTML(t *testing.T) {\n\tdir := t.TempDir()\n\ts := testutil.DirectoryInput(t, dir)\n\ts.Artifacts.Packages.Add(pkg.Package{\n\t\tName: \"<html-package>\",\n\t})\n\n\t// by default we do not escape HTML\n\tt.Run(\"default\", func(t *testing.T) {\n\t\tcfg := DefaultEncoderConfig()\n\n\t\tenc, err := NewFormatEncoderWithConfig(cfg)\n\t\trequire.NoError(t, err)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\tactual := buffer.String()\n\t\tassert.Contains(t, actual, \"<html-package>\")\n\t\tassert.NotContains(t, actual, \"\\\\u003chtml-package\\\\u003e\")\n\t})\n\n}\n\nfunc TestSPDXJSONDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestSPDXJSONImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage, testutil.FromSnapshot()),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc TestSPDX22JSONRequredProperties(t *testing.T) {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\tcfg.Version = \"2.2\"\n\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\n\tcoords := file.Coordinates{\n\t\tRealPath:     \"/some/file\",\n\t\tFileSystemID: \"ac897d978b6c38749a1\",\n\t}\n\n\tp1 := pkg.Package{\n\t\tName:      \"files-analyzed-true\",\n\t\tVersion:   \"v1\",\n\t\tLocations: file.NewLocationSet(file.NewLocation(coords.RealPath)),\n\t\tLicenses:  pkg.LicenseSet{},\n\t\tLanguage:  pkg.Java,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tArchiveDigests: []file.Digest{\n\t\t\t\t{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     \"a9b87321a9879c79d87987987a97c97b9789ce978dffea987\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tParent: nil,\n\t\t},\n\t}\n\tp1.SetID()\n\n\tp2 := pkg.Package{\n\t\tName:    \"files-analyzed-false\",\n\t\tVersion: \"v2\",\n\t}\n\tp2.SetID()\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject: sbom.SBOM{\n\t\t\t\tArtifacts: sbom.Artifacts{\n\t\t\t\t\tPackages: pkg.NewCollection(p1, p2),\n\t\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\t\tcoords: {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\t\t\t\tValue:     \"3b4ab96c371d913e2a88c269844b6c5fb5cbe761\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelationships: []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: p1,\n\t\t\t\t\t\tTo:   coords,\n\t\t\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFormat:                      enc,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc TestSPDXRelationshipOrder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\n\ts := testutil.ImageInput(t, testImage, testutil.FromSnapshot())\n\ttestutil.AddSampleFileRelationships(&s)\n\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     s,\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// each SBOM reports the time it was generated, which is not useful during snapshot testing\n\t\t\t\t`\"created\":\\s+\"[^\"]*\"`: `\"created\":\"redacted\"`,\n\n\t\t\t\t// each SBOM reports a unique documentNamespace when generated, this is not useful for snapshot testing\n\t\t\t\t`\"documentNamespace\":\\s+\"[^\"]*\"`: `\"documentNamespace\":\"redacted\"`,\n\n\t\t\t\t// the license list will be updated periodically, the value here should not be directly tested in snapshot tests\n\t\t\t\t`\"licenseListVersion\":\\s+\"[^\"]*\"`: `\"licenseListVersion\":\"redacted\"`,\n\t\t\t},\n\t\t)\n}\n\nfunc TestSupportedVersions(t *testing.T) {\n\tencs := defaultFormatEncoders()\n\trequire.NotEmpty(t, encs)\n\n\tversions := SupportedVersions()\n\trequire.Equal(t, len(versions), len(encs))\n\n\tsubject := testutil.DirectoryInput(t, t.TempDir())\n\tdec := NewFormatDecoder()\n\n\trelationshipOffsetPerVersion := map[string]int{\n\t\t// the package representing the source gets a relationship from the source package to all other packages found\n\t\t// these relationships cannot be removed until the primaryPackagePurpose info is available in 2.3\n\t\t\"2.1\": 2,\n\t\t\"2.2\": 2,\n\t\t// the source-to-package relationships can be removed since the primaryPackagePurpose info is available in 2.3\n\t\t\"2.3\": 0,\n\t}\n\n\tpkgCountOffsetPerVersion := map[string]int{\n\t\t\"2.1\": 1, // the source is mapped as a package, but cannot distinguish it since the primaryPackagePurpose info is not available until 2.3\n\t\t\"2.2\": 1, // the source is mapped as a package, but cannot distinguish it since the primaryPackagePurpose info is not available until 2.3\n\t\t\"2.3\": 0, // the source package can be removed since the primaryPackagePurpose info is available\n\t}\n\n\tfor _, enc := range encs {\n\t\tt.Run(enc.Version(), func(t *testing.T) {\n\t\t\trequire.Contains(t, versions, enc.Version())\n\n\t\t\tvar buf bytes.Buffer\n\t\t\trequire.NoError(t, enc.Encode(&buf, subject))\n\n\t\t\tid, version := dec.Identify(bytes.NewReader(buf.Bytes()))\n\t\t\tassert.Equal(t, enc.ID(), id)\n\t\t\tassert.Equal(t, enc.Version(), version)\n\n\t\t\tvar s *sbom.SBOM\n\t\t\tvar err error\n\t\t\ts, id, version, err = dec.Decode(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, enc.ID(), id)\n\t\t\tassert.Equal(t, enc.Version(), version)\n\n\t\t\trequire.NotEmpty(t, s.Artifacts.Packages.PackageCount())\n\n\t\t\toffset := relationshipOffsetPerVersion[enc.Version()]\n\n\t\t\tassert.Equal(t, len(subject.Relationships)+offset, len(s.Relationships), \"mismatched relationship count\")\n\n\t\t\toffset = pkgCountOffsetPerVersion[enc.Version()]\n\n\t\t\tif !assert.Equal(t, subject.Artifacts.Packages.PackageCount()+offset, s.Artifacts.Packages.PackageCount(), \"mismatched package count\") {\n\t\t\t\tt.Logf(\"expected: %d\", subject.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range subject.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t\tt.Logf(\"actual: %d\", s.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc defaultFormatEncoders() []sbom.FormatEncoder {\n\tvar encs []sbom.FormatEncoder\n\tfor _, version := range SupportedVersions() {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{Version: version})\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tencs = append(encs, enc)\n\t}\n\treturn encs\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/identify/2.2.json",
    "content": "{\n \"spdxVersion\": \"SPDX-2.2\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"go.mod\",\n \"documentNamespace\": \"https://anchore.com/syft/file/go.mod-3f39882d-5e0e-43a8-901e-a09668b09aea\",\n \"creationInfo\": {\n  \"licenseListVersion\": \"3.21\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-0.91.0\"\n  ],\n  \"created\": \"2023-09-29T15:18:10Z\"\n },\n \"packages\": [\n  {\n   \"name\": \"github.com/wagoodman/go-partybus\",\n   \"SPDXID\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"versionInfo\": \"v0.0.0-20230516145632-8ccac152c651\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"packageVerificationCode\": {\n    \"packageVerificationCodeValue\": \"\"\n   },\n   \"sourceInfo\": \"acquired package info from go module information: /go.mod\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoFromFiles\": null,\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE_MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\"\n    }\n   ]\n  },\n  {\n   \"name\": \"go.mod\",\n   \"SPDXID\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"versionInfo\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"packageVerificationCode\": {\n    \"packageVerificationCodeValue\": \"\"\n   },\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA256\",\n     \"checksumValue\": \"dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n   ],\n   \"licenseConcluded\": \"\",\n   \"licenseInfoFromFiles\": null,\n   \"licenseDeclared\": \"\",\n   \"copyrightText\": \"\"\n  }\n ],\n \"files\": [\n  {\n   \"fileName\": \"/go.mod\",\n   \"SPDXID\": \"SPDXRef-File-go.mod-3fc5a8d3d86e9790\",\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": null,\n   \"copyrightText\": \"\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"relatedSpdxElement\": \"SPDXRef-File-go.mod-3fc5a8d3d86e9790\",\n   \"relationshipType\": \"OTHER\",\n   \"comment\": \"evident-by: indicates the package's existence is evident by the given file\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/identify/2.3.json",
    "content": "{\n \"spdxVersion\": \"SPDX-2.3\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"go.mod\",\n \"documentNamespace\": \"https://anchore.com/syft/file/go.mod-3b649f47-dca2-45ca-9d30-147003de8594\",\n \"creationInfo\": {\n  \"licenseListVersion\": \"3.21\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-0.91.0\"\n  ],\n  \"created\": \"2023-09-29T15:18:10Z\"\n },\n \"packages\": [\n  {\n   \"name\": \"github.com/wagoodman/go-partybus\",\n   \"SPDXID\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"versionInfo\": \"v0.0.0-20230516145632-8ccac152c651\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from go module information: /go.mod\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\"\n    }\n   ]\n  },\n  {\n   \"name\": \"go.mod\",\n   \"SPDXID\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"versionInfo\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA256\",\n     \"checksumValue\": \"dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n   ],\n   \"primaryPackagePurpose\": \"FILE\"\n  }\n ],\n \"files\": [\n  {\n   \"fileName\": \"/go.mod\",\n   \"SPDXID\": \"SPDXRef-File-go.mod-3fc5a8d3d86e9790\",\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"copyrightText\": \"\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"relatedSpdxElement\": \"SPDXRef-File-go.mod-3fc5a8d3d86e9790\",\n   \"relationshipType\": \"OTHER\",\n   \"comment\": \"evident-by: indicates the package's existence is evident by the given file\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-File-go.mod\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/snapshot/TestSPDX22JSONRequredProperties.golden",
    "content": "{\n \"spdxVersion\": \"SPDX-2.2\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"unknown\",\n \"documentNamespace\":\"redacted\",\n \"creationInfo\": {\n  \"licenseListVersion\":\"redacted\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: -\"\n  ],\n  \"created\":\"redacted\"\n },\n \"packages\": [\n  {\n   \"SPDXID\": \"SPDXRef-Package-files-analyzed-false-7d37ba9d2f7c574b\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"name\": \"files-analyzed-false\",\n   \"sourceInfo\": \"acquired package info from the following paths: \",\n   \"supplier\": \"NOASSERTION\",\n   \"versionInfo\": \"v2\"\n  },\n  {\n   \"name\": \"files-analyzed-true\",\n   \"SPDXID\": \"SPDXRef-Package-files-analyzed-true-035066c2086b8bb4\",\n   \"versionInfo\": \"v1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": true,\n   \"packageVerificationCode\": {\n    \"packageVerificationCodeValue\": \"6fe0c471faaaa544e33cae0918eabcdc1c798d18\"\n   },\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA256\",\n     \"checksumValue\": \"a9b87321a9879c79d87987987a97c97b9789ce978dffea987\"\n    }\n   ],\n   \"sourceInfo\": \"acquired package info from the following paths: /some/file\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"SPDXID\": \"SPDXRef-DocumentRoot-Unknown-\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"name\": \"\",\n   \"supplier\": \"NOASSERTION\"\n  }\n ],\n \"files\": [\n  {\n   \"fileName\": \"some/file\",\n   \"SPDXID\": \"SPDXRef-File-some-file-2c5bc344430decac\",\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"3b4ab96c371d913e2a88c269844b6c5fb5cbe761\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\",\n   \"comment\": \"layerID: ac897d978b6c38749a1\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-Package-files-analyzed-true-035066c2086b8bb4\",\n   \"relatedSpdxElement\": \"SPDXRef-File-some-file-2c5bc344430decac\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Unknown-\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-files-analyzed-false-7d37ba9d2f7c574b\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Unknown-\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-files-analyzed-true-035066c2086b8bb4\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-Unknown-\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/snapshot/TestSPDXJSONDirectoryEncoder.golden",
    "content": "{\n \"spdxVersion\": \"SPDX-2.3\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"some/path\",\n \"documentNamespace\":\"redacted\",\n \"creationInfo\": {\n  \"licenseListVersion\":\"redacted\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-v0.42.0-bogus\"\n  ],\n  \"created\":\"redacted\"\n },\n \"packages\": [\n  {\n   \"name\": \"package-1\",\n   \"SPDXID\": \"SPDXRef-Package-python-package-1-f04d218ff5ff50db\",\n   \"versionInfo\": \"1.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from installed python package manifest file: /some/path/pkg1\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"MIT\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"a-purl-2\"\n    }\n   ]\n  },\n  {\n   \"name\": \"package-2\",\n   \"SPDXID\": \"SPDXRef-Package-deb-package-2-39392bb5e270f669\",\n   \"versionInfo\": \"2.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from DPKG DB: /some/path/pkg1\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:deb/debian/package-2@2.0.1\"\n    }\n   ]\n  },\n  {\n   \"name\": \"some/path\",\n   \"SPDXID\": \"SPDXRef-DocumentRoot-Directory-some-path\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"primaryPackagePurpose\": \"FILE\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Directory-some-path\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-python-package-1-f04d218ff5ff50db\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Directory-some-path\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-deb-package-2-39392bb5e270f669\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-Directory-some-path\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/snapshot/TestSPDXJSONImageEncoder.golden",
    "content": "{\n \"spdxVersion\": \"SPDX-2.3\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"user-image-input\",\n \"documentNamespace\":\"redacted\",\n \"creationInfo\": {\n  \"licenseListVersion\":\"redacted\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-v0.42.0-bogus\"\n  ],\n  \"created\":\"redacted\"\n },\n \"packages\": [\n  {\n   \"name\": \"package-1\",\n   \"SPDXID\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"versionInfo\": \"1.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from installed python package manifest file: /somefile-1.txt\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"MIT\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"a-purl-1\"\n    }\n   ]\n  },\n  {\n   \"name\": \"package-2\",\n   \"SPDXID\": \"SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\",\n   \"versionInfo\": \"2.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from DPKG DB: /somefile-2.txt\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:deb/debian/package-2@2.0.1\"\n    }\n   ]\n  },\n  {\n   \"name\": \"user-image-input\",\n   \"SPDXID\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"versionInfo\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA256\",\n     \"checksumValue\": \"2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:oci/user-image-input@sha256%3A2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368?arch=\"\n    }\n   ],\n   \"primaryPackagePurpose\": \"CONTAINER\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/snapshot/TestSPDXRelationshipOrder.golden",
    "content": "{\n \"spdxVersion\": \"SPDX-2.3\",\n \"dataLicense\": \"CC0-1.0\",\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"user-image-input\",\n \"documentNamespace\":\"redacted\",\n \"creationInfo\": {\n  \"licenseListVersion\":\"redacted\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-v0.42.0-bogus\"\n  ],\n  \"created\":\"redacted\"\n },\n \"packages\": [\n  {\n   \"name\": \"package-1\",\n   \"SPDXID\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"versionInfo\": \"1.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from installed python package manifest file: /somefile-1.txt\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"MIT\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"a-purl-1\"\n    }\n   ]\n  },\n  {\n   \"name\": \"package-2\",\n   \"SPDXID\": \"SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\",\n   \"versionInfo\": \"2.0.1\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"sourceInfo\": \"acquired package info from DPKG DB: /somefile-2.txt\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceType\": \"cpe23Type\",\n     \"referenceLocator\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:deb/debian/package-2@2.0.1\"\n    }\n   ]\n  },\n  {\n   \"name\": \"user-image-input\",\n   \"SPDXID\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"versionInfo\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n   \"supplier\": \"NOASSERTION\",\n   \"downloadLocation\": \"NOASSERTION\",\n   \"filesAnalyzed\": false,\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA256\",\n     \"checksumValue\": \"2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseDeclared\": \"NOASSERTION\",\n   \"copyrightText\": \"NOASSERTION\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"PACKAGE-MANAGER\",\n     \"referenceType\": \"purl\",\n     \"referenceLocator\": \"pkg:oci/user-image-input@sha256%3A2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368?arch=\"\n    }\n   ],\n   \"primaryPackagePurpose\": \"CONTAINER\"\n  }\n ],\n \"files\": [\n  {\n   \"fileName\": \"a1/f6\",\n   \"SPDXID\": \"SPDXRef-File-a1-f6-9c2f7510199b17f6\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"fileName\": \"d1/f3\",\n   \"SPDXID\": \"SPDXRef-File-d1-f3-c6f5b29dca12661f\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"fileName\": \"d2/f4\",\n   \"SPDXID\": \"SPDXRef-File-d2-f4-c641caa71518099f\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"fileName\": \"f1\",\n   \"SPDXID\": \"SPDXRef-File-f1-5265a4dde3edbf7c\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"fileName\": \"f2\",\n   \"SPDXID\": \"SPDXRef-File-f2-f9e49132a4b96ccd\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  },\n  {\n   \"fileName\": \"z1/f5\",\n   \"SPDXID\": \"SPDXRef-File-z1-f5-839d99ee67d9d174\",\n   \"fileTypes\": [\n    \"OTHER\"\n   ],\n   \"checksums\": [\n    {\n     \"algorithm\": \"SHA1\",\n     \"checksumValue\": \"0000000000000000000000000000000000000000\"\n    }\n   ],\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"licenseInfoInFiles\": [\n    \"NOASSERTION\"\n   ],\n   \"copyrightText\": \"NOASSERTION\"\n  }\n ],\n \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-f1-5265a4dde3edbf7c\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-z1-f5-839d99ee67d9d174\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-a1-f6-9c2f7510199b17f6\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-d2-f4-c641caa71518099f\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-d1-f3-c6f5b29dca12661f\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relatedSpdxElement\": \"SPDXRef-File-f2-f9e49132a4b96ccd\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-python-package-1-2f52f617f1548337\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relatedSpdxElement\": \"SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\",\n   \"relationshipType\": \"CONTAINS\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n   \"relatedSpdxElement\": \"SPDXRef-DocumentRoot-Image-user-image-input\",\n   \"relationshipType\": \"DESCRIBES\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/alpine-3.10.syft.spdx.json",
    "content": "{\n \"SPDXID\": \"SPDXRef-DOCUMENT\",\n \"name\": \"alpine-3.10\",\n \"spdxVersion\": \"SPDX-2.2\",\n \"creationInfo\": {\n  \"created\": \"2022-01-20T21:40:24.439211Z\",\n  \"creators\": [\n   \"Organization: Anchore, Inc\",\n   \"Tool: syft-[not provided]\"\n  ],\n  \"licenseListVersion\": \"3.15\"\n },\n \"dataLicense\": \"CC0-1.0\",\n \"documentNamespace\": \"https://anchore.com/syft/image/alpine-3.10-204b304b-beb3-4413-9b38-d8a2e58e3dfb\",\n \"packages\": [\n  {\n   \"SPDXID\": \"SPDXRef-a61243292e73923\",\n   \"name\": \"busybox\",\n   \"licenseConcluded\": \"GPL-2.0\",\n   \"description\": \"Size optimized toolbox of many common UNIX utilities\",\n   \"downloadLocation\": \"https://busybox.net/\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:busybox:busybox:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE_MANAGER\",\n     \"referenceLocator\": \"pkg:apk/alpine/busybox@1.30.1-r5?arch=x86_64&distro=alpine-3.10.9\",\n     \"referenceType\": \"purl\"\n    }\n   ],\n   \"filesAnalyzed\": false,\n   \"licenseDeclared\": \"GPL-2.0\",\n   \"originator\": \"Person: Natanael Copa <ncopa@alpinelinux.org>\",\n   \"sourceInfo\": \"acquired package info from APK DB: /lib/apk/db/installed\",\n   \"versionInfo\": \"1.30.1-r5\"\n  },\n  {\n   \"SPDXID\": \"SPDXRef-d2f55e316dbe92e4\",\n   \"name\": \"libssl1.1\",\n   \"licenseConcluded\": \"OpenSSL\",\n   \"description\": \"SSL shared libraries\",\n   \"downloadLocation\": \"https://www.openssl.org\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1k-r0:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE_MANAGER\",\n     \"referenceLocator\": \"pkg:apk/alpine/libssl1.1@1.1.1k-r0?arch=x86_64&distro=alpine-3.10.9\",\n     \"referenceType\": \"purl\"\n    }\n   ],\n   \"filesAnalyzed\": false,\n   \"licenseDeclared\": \"OpenSSL\",\n   \"originator\": \"Person: Timo Teras <timo.teras@iki.fi>\",\n   \"sourceInfo\": \"acquired package info from APK DB: /lib/apk/db/installed\",\n   \"versionInfo\": \"1.1.1k-r0\"\n  },\n  {\n   \"SPDXID\": \"SPDXRef-2b24657ad7aaafea\",\n   \"name\": \"ssl_client\",\n   \"licenseConcluded\": \"GPL-2.0\",\n   \"description\": \"EXternal ssl_client for busybox wget\",\n   \"downloadLocation\": \"https://busybox.net/\",\n   \"externalRefs\": [\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl-client:ssl-client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl-client:ssl_client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl_client:ssl-client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl_client:ssl_client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl:ssl-client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"SECURITY\",\n     \"referenceLocator\": \"cpe:2.3:a:ssl:ssl_client:1.30.1-r5:*:*:*:*:*:*:*\",\n     \"referenceType\": \"cpe23Type\"\n    },\n    {\n     \"referenceCategory\": \"PACKAGE_MANAGER\",\n     \"referenceLocator\": \"pkg:apk/alpine/ssl_client@1.30.1-r5?arch=x86_64&upstream=busybox&distro=alpine-3.10.9\",\n     \"referenceType\": \"purl\"\n    }\n   ],\n   \"filesAnalyzed\": false,\n   \"licenseDeclared\": \"GPL-2.0\",\n   \"originator\": \"Person: Natanael Copa <ncopa@alpinelinux.org>\",\n   \"sourceInfo\": \"acquired package info from APK DB: /lib/apk/db/installed\",\n   \"versionInfo\": \"1.30.1-r5\"\n  }\n ],\n \"files\": [\n  {\n   \"SPDXID\": \"SPDXRef-a07392483a2d0750\",\n   \"comment\": \"layerID: sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"fileName\": \"/bin/busybox\"\n  },\n  {\n   \"SPDXID\": \"SPDXRef-aa3cfed221706d80\",\n   \"comment\": \"layerID: sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n   \"licenseConcluded\": \"NOASSERTION\",\n   \"fileName\": \"/lib/libssl.so.1.1\"\n  }\n  ],\n  \"relationships\": [\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-a07392483a2d0750\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-a07392483a2d0750\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-499bb68237b0f2b8\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-df78c68c8206be69\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-7c980486fc17af43\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-a61243292e73923\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-8762661e65166719\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-d2f55e316dbe92e4\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-aa3cfed221706d80\"\n  },\n  {\n   \"spdxElementId\": \"SPDXRef-d2f55e316dbe92e4\",\n   \"relationshipType\": \"CONTAINS\",\n   \"relatedSpdxElement\": \"SPDXRef-aa3cfed221706d80\"\n  }\n ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/alpine-3.10.vendor.spdx.json",
    "content": "{\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"creationInfo\": {\n    \"created\": \"2022-01-18T22:16:16Z\",\n    \"creators\": [\n      \"Tool: vendor\"\n    ],\n    \"licenseListVersion\": \"3.8\"\n  },\n  \"name\": \"alpine:3.10\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"documentNamespace\": \"https://spdx.org/spdxdocs/alpine-154c794c-4264-4e9f-a2ff-5c01bfbfc02c\",\n  \"documentDescribes\": [\n    \"SPDXRef-alpine-3.10\"\n  ],\n  \"packages\": [\n    {\n      \"name\": \"alpine\",\n      \"SPDXID\": \"SPDXRef-alpine-3.10\",\n      \"versionInfo\": \"3.10\",\n      \"downloadLocation\": \"NOASSERTION\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    },\n    {\n      \"name\": \"busybox\",\n      \"SPDXID\": \"SPDXRef-busybox-1.30.1-r5\",\n      \"versionInfo\": \"1.30.1-r5\",\n      \"downloadLocation\": \"NOASSERTION\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"LicenseRef-7d19a72\",\n      \"copyrightText\": \"NONE\",\n      \"comment\": \"busybox:\\n\\twarning: No metadata for key: copyright\\n\\twarning: No metadata for key: download_url\\n\\twarning: No metadata for key: checksum\\n\\twarning: No metadata for key: pkg_licenses\\n\\twarning: No metadata for key: pkg_format\\n\\twarning: No metadata for key: src_name\\n\\twarning: No metadata for key: src_version\\n\"\n    },\n    {\n      \"name\": \"ssl_client\",\n      \"SPDXID\": \"SPDXRef-ssl_client-1.30.1-r5\",\n      \"versionInfo\": \"1.30.1-r5\",\n      \"downloadLocation\": \"NOASSERTION\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"LicenseRef-de5acdd\",\n      \"copyrightText\": \"NONE\",\n      \"comment\": \"ssl_client:\\n\\twarning: No metadata for key: copyright\\n\\twarning: No metadata for key: download_url\\n\\twarning: No metadata for key: checksum\\n\\twarning: No metadata for key: pkg_licenses\\n\\twarning: No metadata for key: pkg_format\\n\\twarning: No metadata for key: src_name\\n\\twarning: No metadata for key: src_version\\n\"\n    }\n  ],\n  \"relationships\": [\n    {\n      \"spdxElementId\": \"SPDXRef-DOCUMENT\",\n      \"relatedSpdxElement\": \"SPDXRef-alpine-3.10\",\n      \"relationshipType\": \"DESCRIBES\"\n    },\n    {\n      \"spdxElementId\": \"SPDXRef-9fb3aa2f8b\",\n      \"relatedSpdxElement\": \"SPDXRef-busybox-1.30.1-r5\",\n      \"relationshipType\": \"CONTAINS\"\n    },\n    {\n      \"spdxElementId\": \"SPDXRef-9fb3aa2f8b\",\n      \"relatedSpdxElement\": \"SPDXRef-ssl_client-1.30.1-r5\",\n      \"relationshipType\": \"CONTAINS\"\n    }\n  ],\n  \"hasExtractedLicensingInfos\": [\n    {\n      \"extractedText\": \"OpenSSL\",\n      \"licenseId\": \"LicenseRef-de5acdd\"\n    },\n    {\n      \"extractedText\": \"GPL-2.0\",\n      \"licenseId\": \"LicenseRef-7d19a72\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/bad/bad-sbom",
    "content": "bogus!"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/bad/example7-bin.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [\n      {\n        \"Person\": \"Nisha K (nishak@vmware.com)\"\n      }\n    ]\n  },\n  \"name\": \"hello-go-binary.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-go-binary\",\n  \"externalDocumentRefs\": [\n    {\n      \"externalDocumentId\": \"DocumentRef-hello-go-module\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"d661f8f831a99c288a64e5843b4794ad5181224a\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/hello-go-module-cfa0c58d-79db-4860-99b6-258477e4838b\"\n    },\n    {\n      \"externalDocumentId\": \"DocumentRef-golang-dist\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"b6cf54a46329e7cc7610aa5d244018b80103d111\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/golang-dist-492dfde4-318b-49f7-b48c-934bfafbde48\"\n    },\n    {\n      \"externalDocumentId\": \"DocumentRef-hello-imports\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"14ff98203c3ddd2bd4803c00b5225d2551ca603c\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/hello-imports-c2d068df-67aa-4c68-98c8-100b450fc408\"\n    }\n  ],\n  \"documentDescribes\": [\n    \"SPDXRef-go-bin-hello\"\n  ],\n  \"packages\": [\n    {\n      \"packageName\": \"hello\",\n      \"SPDXID\": \"SPDXRef-go-bin-hello\",\n      \"downloadLocation\": \"git@github.com:swinslow/spdx-examples.git#example7/content/build/hello\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    }\n  ],\n  \"relationships\": [\n    {\n      \"spdxElementId\": \"DocumentRef-golang-dist\",\n      \"relatedSpdxElement\": \"DocumentRef-hello-go-module\",\n      \"relationshipType\": \"BUILD_TOOL_OF\"\n    },\n    {\n      \"spdxElementId\": \"DocumentRef-golang-dist:SPDXRef-go-compiler\",\n      \"relatedSpdxElement\": \"SPDXRef-go-bin-hello\",\n      \"relationshipType\": \"GENERATES\"\n    },\n    {\n      \"spdxElementId\": \"DocumentRef-hello-imports\",\n      \"relatedSpdxElement\": \"SPDXRef-go-bin-hello\",\n      \"relationshipType\": \"STATIC_LINK\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/bad/example7-go-module.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [\n      {\n        \"Person\": \"Nisha K (nishak@vmware.com)\"\n      }\n    ]\n  },\n  \"name\": \"hello-go-module.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-go-module\",\n  \"documentDescribes\": [\n    \"SPDXRef-go-module-example.com/hello\"\n  ],\n  \"packages\": [\n    {\n      \"packageName\": \"example.com/hello\",\n      \"SPDXID\": \"SPDXRef-go-module-example.com/hello\",\n      \"downloadLocation\": \"git@github.com:swinslow/spdx-examples.git#example7/content/src/hello\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/bad/example7-golang.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [\n      {\n        \"Person\": \"Nisha K (nishak@vmware.com)\"\n      }\n    ]\n  },\n  \"name\": \"golang-dist\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/golang-dist\",\n  \"documentDescribes\": [\n    \"SPDXRef-golang-dist\"\n  ],\n  \"packages\": [\n    {\n      \"packageName\": \"go1.16.4.linux-amd64\",\n      \"SPDXID\": \"SPDXRef-golang-dist\",\n      \"downloadLocation\": \"https://golang.org/dl/go1.16.4.linux-amd64.tar.gz\",\n      \"packageVersion\": \"1.16.4\",\n      \"filesAnalyzed\": \"false\",\n      \"checksums\": [\n        {\n          \"algorithm\": \"SHA256\",\n          \"checksumValue\": \"7154e88f5a8047aad4b80ebace58a059e36e7e2e4eb3b383127a28c711b4ff59\"\n        }\n      ],\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"LicenseRef-Golang-BSD-plus-Patents\",\n      \"packageCopyrightText\": \"Copyright (c) 2009 The Go Authors. All rights reserved.\"\n    },\n    {\n      \"packageName\": \"go\",\n      \"SPDXID\": \"SPDXRef-go-compiler\",\n      \"downloadLocation\": \"https://golang.org/dl/go1.16.4.linux-amd64.tar.gz\",\n      \"packageVersion\": \"1.16.4\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/bad/example7-third-party-modules.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [\n      {\n        \"Person\": \"Nisha K (nishak@vmware.com)\"\n      }\n    ]\n  },\n  \"name\": \"hello-imports.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-imports\",\n  \"documentDescribes\": [\n    \"SPDXRef-go-module-golang.org/x/text\",\n    \"SPDXRef-go-module-rsc.io/quote\",\n    \"SPDXRef-go-module-rsc.io/sampler\"\n  ],\n  \"packages\": [\n    {\n      \"packageName\": \"golang.org/x/text\",\n      \"SPDXID\": \"SPDXRef-go-module-golang.org/x/text\",\n      \"downloadLocation\": \"go://golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    },\n    {\n      \"packageName\": \"rsc.io/quote\",\n      \"SPDXID\": \"SPDXRef-go-module-rsc.io/quote\",\n      \"downloadLocation\": \"go://rsc.io/quote@v1.5.2\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    },\n    {\n      \"packageName\": \"rsc.io/sampler\",\n      \"SPDXID\": \"SPDXRef-go-module-rsc.io/sampler\",\n      \"downloadLocation\": \"go://rsc.io/sampler@v1.3.0\",\n      \"filesAnalyzed\": \"false\",\n      \"packageLicenseConcluded\": \"NOASSERTION\",\n      \"packageLicenseDeclared\": \"NOASSERTION\",\n      \"packageCopyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/example7-bin.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [ \"Person: Nisha K (nishak@vmware.com)\" ]\n  },\n  \"name\": \"hello-go-binary.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-go-binary\",\n  \"externalDocumentRefs\": [\n    {\n      \"externalDocumentId\": \"DocumentRef-hello-go-module\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"d661f8f831a99c288a64e5843b4794ad5181224a\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/hello-go-module-cfa0c58d-79db-4860-99b6-258477e4838b\"\n    },\n    {\n      \"externalDocumentId\": \"DocumentRef-golang-dist\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"b6cf54a46329e7cc7610aa5d244018b80103d111\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/golang-dist-492dfde4-318b-49f7-b48c-934bfafbde48\"\n    },\n    {\n      \"externalDocumentId\": \"DocumentRef-hello-imports\",\n      \"checksum\": {\n        \"algorithm\": \"SHA1\",\n        \"checksumValue\": \"14ff98203c3ddd2bd4803c00b5225d2551ca603c\"\n      },\n      \"spdxDocument\": \"https://swinslow.net/spdx-examples/example7/hello-imports-c2d068df-67aa-4c68-98c8-100b450fc408\"\n    }\n  ],\n  \"documentDescribes\": [\n    \"SPDXRef-go-bin-hello\"\n  ],\n  \"packages\": [\n    {\n      \"name\": \"hello\",\n      \"SPDXID\": \"SPDXRef-go-bin-hello\",\n      \"downloadLocation\": \"git@github.com:swinslow/spdx-examples.git#example7/content/build/hello\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    }\n  ],\n  \"relationships\": [\n    {\n      \"spdxElementId\": \"DocumentRef-golang-dist:SPDXRef-golang-dist\",\n      \"relatedSpdxElement\": \"DocumentRef-hello-go-module:SPDXRef-hello-go-module\",\n      \"relationshipType\": \"BUILD_TOOL_OF\"\n    },\n    {\n      \"spdxElementId\": \"DocumentRef-golang-dist:SPDXRef-go-compiler\",\n      \"relatedSpdxElement\": \"SPDXRef-go-bin-hello\",\n      \"relationshipType\": \"GENERATES\"\n    },\n    {\n      \"spdxElementId\": \"DocumentRef-hello-imports:SPDXRef-hello-imports\",\n      \"relatedSpdxElement\": \"SPDXRef-go-bin-hello\",\n      \"relationshipType\": \"STATIC_LINK\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/example7-go-module.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [ \"Person: Nisha K (nishak@vmware.com)\" ]\n  },\n  \"name\": \"hello-go-module.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-go-module\",\n  \"documentDescribes\": [\n    \"SPDXRef-go-module-example.com/hello\"\n  ],\n  \"packages\": [\n    {\n      \"name\": \"example.com/hello\",\n      \"SPDXID\": \"SPDXRef-go-module-example.com/hello\",\n      \"downloadLocation\": \"git@github.com:swinslow/spdx-examples.git#example7/content/src/hello\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/example7-golang.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [ \"Person: Nisha K (nishak@vmware.com)\" ]\n  },\n  \"name\": \"golang-dist\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/golang-dist\",\n  \"documentDescribes\": [\n    \"SPDXRef-golang-dist\"\n  ],\n  \"packages\": [\n    {\n      \"name\": \"go1.16.4.linux-amd64\",\n      \"SPDXID\": \"SPDXRef-golang-dist\",\n      \"downloadLocation\": \"https://golang.org/dl/go1.16.4.linux-amd64.tar.gz\",\n      \"versionInfo\": \"1.16.4\",\n      \"filesAnalyzed\": false,\n      \"checksums\": [\n        {\n          \"algorithm\": \"SHA256\",\n          \"checksumValue\": \"7154e88f5a8047aad4b80ebace58a059e36e7e2e4eb3b383127a28c711b4ff59\"\n        }\n      ],\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"LicenseRef-Golang-BSD-plus-Patents\",\n      \"copyrightText\": \"Copyright (c) 2009 The Go Authors. All rights reserved.\"\n    },\n    {\n      \"name\": \"go\",\n      \"SPDXID\": \"SPDXRef-go-compiler\",\n      \"downloadLocation\": \"https://golang.org/dl/go1.16.4.linux-amd64.tar.gz\",\n      \"versionInfo\": \"1.16.4\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxjson/testdata/spdx/example7-third-party-modules.spdx.json",
    "content": "{\n  \"spdxVersion\": \"SPDX-2.2\",\n  \"dataLicense\": \"CC0-1.0\",\n  \"SPDXID\": \"SPDXRef-DOCUMENT\",\n  \"creationInfo\": {\n    \"created\": \"2020-11-24T01:12:27Z\",\n    \"creators\": [ \"Person: Nisha K (nishak@vmware.com)\" ]\n  },\n  \"name\": \"hello-imports.spdx.json\",\n  \"documentNamespace\": \"https://swinslow.net/spdx-examples/example7/hello-imports\",\n  \"documentDescribes\": [\n    \"SPDXRef-go-module-golang.org/x/text\",\n    \"SPDXRef-go-module-rsc.io/quote\",\n    \"SPDXRef-go-module-rsc.io/sampler\"\n  ],\n  \"packages\": [\n    {\n      \"name\": \"golang.org/x/text\",\n      \"SPDXID\": \"SPDXRef-go-module-golang.org/x/text\",\n      \"downloadLocation\": \"go://golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    },\n    {\n      \"name\": \"rsc.io/quote\",\n      \"SPDXID\": \"SPDXRef-go-module-rsc.io/quote\",\n      \"downloadLocation\": \"go://rsc.io/quote@v1.5.2\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    },\n    {\n      \"name\": \"rsc.io/sampler\",\n      \"SPDXID\": \"SPDXRef-go-module-rsc.io/sampler\",\n      \"downloadLocation\": \"go://rsc.io/sampler@v1.3.0\",\n      \"filesAnalyzed\": false,\n      \"licenseConcluded\": \"NOASSERTION\",\n      \"licenseDeclared\": \"NOASSERTION\",\n      \"copyrightText\": \"NOASSERTION\"\n    }\n  ]\n}\n"
  },
  {
    "path": "syft/format/spdxtagvalue/decoder.go",
    "content": "package spdxtagvalue\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/spdx/tools-golang/tagvalue\"\n\n\t\"github.com/anchore/syft/syft/format/common/spdxhelpers\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct {\n}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", err\n\t}\n\n\t// since spdx lib will always return the latest version of the document, we need to identify the version\n\t// first and then decode into the appropriate document object. Otherwise if we get the version info from the\n\t// decoded object we will always get the latest version (instead of the version we decoded from).\n\tid, version := d.Identify(reader)\n\tif id != ID {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"not a spdx tag-value document\")\n\t}\n\tif version == \"\" {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unsupported spdx tag-value document version\")\n\t}\n\n\tif _, err = reader.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to seek to start of SPDX Tag-Value SBOM: %w\", err)\n\t}\n\n\tdoc, err := tagvalue.Read(reader)\n\tif err != nil {\n\t\treturn nil, id, version, fmt.Errorf(\"unable to decode spdx tag-value: %w\", err)\n\t}\n\n\ts, err := spdxhelpers.ToSyftModel(doc)\n\tif err != nil {\n\t\treturn nil, id, version, err\n\t}\n\treturn s, id, version, nil\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\tif r == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\t// Example document\n\t// SPDXVersion: SPDX-2.3\n\t// DataLicense: CC0-1.0\n\t// SPDXID: SPDXRef-DOCUMENT\n\n\tscanner := bufio.NewScanner(r)\n\tscanner.Split(bufio.ScanLines)\n\n\tvar id sbom.FormatID\n\tvar version string\n\tfor i := 0; scanner.Scan() && i < 3; i++ {\n\t\tline := scanner.Text()\n\t\tif strings.HasPrefix(line, \"SPDXVersion:\") {\n\t\t\tid, version = getFormatInfo(line)\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif version == \"\" || id != ID {\n\t\t// not a spdx tag-value document\n\t\treturn \"\", \"\"\n\t}\n\n\treturn id, version\n}\n\nfunc getFormatInfo(line string) (sbom.FormatID, string) {\n\t// example input: SPDXVersion: SPDX-2.3\n\tfields := strings.SplitN(line, \":\", 2)\n\tif len(fields) != 2 {\n\t\treturn \"\", \"\"\n\t}\n\tspdxVersion := fields[1]\n\tif !strings.HasPrefix(strings.TrimSpace(strings.ToLower(spdxVersion)), \"spdx-\") {\n\t\treturn \"\", \"\"\n\t}\n\tfields = strings.Split(spdxVersion, \"-\")\n\tif len(fields) != 2 {\n\t\treturn ID, \"\"\n\t}\n\n\treturn ID, fields[1]\n}\n"
  },
  {
    "path": "syft/format/spdxtagvalue/decoder_test.go",
    "content": "package spdxtagvalue\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestDecoder_Decode(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfile     string\n\t\terr      bool\n\t\tdistro   string\n\t\tpackages []string\n\t}{\n\t\t{\n\t\t\tname:     \"dir-scan\",\n\t\t\tfile:     \"snapshot/TestSPDXTagValueDirectoryEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"image-scan\",\n\t\t\tfile:     \"snapshot/TestSPDXTagValueImageEncoder.golden\",\n\t\t\tdistro:   \"debian:1.2.3\",\n\t\t\tpackages: []string{\"package-1:1.0.1\", \"package-2:2.0.1\"},\n\t\t},\n\t\t{\n\t\t\tname: \"not-an-sbom\",\n\t\t\tfile: \"bad-sbom\",\n\t\t\terr:  true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.file, func(t *testing.T) {\n\t\t\treader, err := os.Open(filepath.Join(\"testdata\", test.file))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tif test.err {\n\t\t\t\tassert.Equal(t, sbom.FormatID(\"\"), formatID)\n\t\t\t\tassert.Equal(t, \"\", formatVersion)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, ID, formatID)\n\t\t\tassert.NotEmpty(t, formatVersion)\n\n\t\t\t// reset reader\n\t\t\t_, err = reader.Seek(0, io.SeekStart)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tbom, decodeID, decodeVersion, err := dec.Decode(reader)\n\t\t\trequire.NotNil(t, bom)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, ID, decodeID)\n\t\t\tassert.Equal(t, formatVersion, decodeVersion)\n\n\t\t\tvar pkgs []string\n\t\t\tfor p := range bom.Artifacts.Packages.Enumerate() {\n\t\t\t\tpkgs = append(pkgs, fmt.Sprintf(\"%s:%s\", p.Name, p.Version))\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.packages, pkgs)\n\t\t})\n\t}\n}\n\nfunc Test_packageDirectFiles(t *testing.T) {\n\tcontents := `\nSPDXVersion: SPDX-2.2\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: Some-SBOM\nDocumentNamespace: https://example.org/some/namespace\nCreator: Organization: Some-organization\nCreator: Tool: Some-tool Version: 1.0\nCreated: 2021-12-29T17:02:21Z\nPackageName: Some-package\nPackageVersion: 5.1.2\nSPDXID: SPDXRef-Package-43c51b08-cc7e-406d-8ad9-34aa292d1157\nPackageSupplier: Organization: Some-organization\nPackageDownloadLocation: https://example.org/download/location\nFilesAnalyzed: true\nPackageLicenseInfoFromFiles: NOASSERTION\nPackageVerificationCode: 23460C5559C8D4DE3F6504E0E84E844CAC8B1D95\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nPackageChecksum: SHA1: 23460C5559C8D4DE3F6504E0E84E844CAC8B1D95\nFileName: Some-file-name\nSPDXID: SPDXRef-99545d55-933d-4e08-9eb5-9d826111cb79\nFileContributor: Some-file-contributor\nFileType: BINARY\nFileChecksum: SHA1: 23460C5559C8D4DE3F6504E0E84E844CAC8B1D95\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n`\n\n\tdec := NewFormatDecoder()\n\n\ts, id, version, err := dec.Decode(strings.NewReader(contents))\n\trequire.NoError(t, err)\n\tassert.Equal(t, ID, id)\n\tassert.Equal(t, \"2.2\", version)\n\n\tpkgs := s.Artifacts.Packages.Sorted()\n\tassert.Len(t, pkgs, 1)\n\tassert.Len(t, s.Artifacts.FileMetadata, 1)\n\tassert.Len(t, s.Relationships, 1)\n\tp := pkgs[0]\n\tr := s.Relationships[0]\n\tf := file.Location{}\n\tfor c := range s.Artifacts.FileMetadata {\n\t\tf = file.Location{\n\t\t\tLocationData: file.LocationData{\n\t\t\t\tCoordinates: c,\n\t\t\t\tAccessPath:  \"\",\n\t\t\t},\n\t\t\tLocationMetadata: file.LocationMetadata{},\n\t\t}\n\t\tbreak // there should only be 1\n\t}\n\tassert.Equal(t, p.ID(), r.From.ID())\n\tassert.Equal(t, f.ID(), r.To.ID())\n}\n\nfunc TestDecoder_Identify(t *testing.T) {\n\ttype testCase struct {\n\t\tname    string\n\t\tfile    string\n\t\tid      sbom.FormatID\n\t\tversion string\n\t}\n\n\tvar cases []testCase\n\n\tfor _, version := range SupportedVersions() {\n\t\tcases = append(cases, testCase{\n\t\t\tname:    fmt.Sprintf(\"v%s schema\", version),\n\t\t\tfile:    fmt.Sprintf(\"testdata/identify/%s.sbom\", version),\n\t\t\tid:      ID,\n\t\t\tversion: version,\n\t\t})\n\t}\n\n\tfor _, test := range cases {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\treader, err := os.Open(test.file)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tformatID, formatVersion := dec.Identify(reader)\n\t\t\tassert.Equal(t, test.id, formatID)\n\t\t\tassert.Equal(t, test.version, formatVersion)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/spdxtagvalue/encoder.go",
    "content": "package spdxtagvalue\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/spdx/tools-golang/convert\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_1\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_2\"\n\t\"github.com/spdx/tools-golang/spdx/v2/v2_3\"\n\t\"github.com/spdx/tools-golang/tagvalue\"\n\n\t\"github.com/anchore/syft/syft/format/common/spdxhelpers\"\n\t\"github.com/anchore/syft/syft/format/internal/spdxutil\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID = spdxutil.TagValueFormatID\n\nfunc SupportedVersions() []string {\n\treturn spdxutil.SupportedVersions(ID)\n}\n\ntype EncoderConfig struct {\n\tVersion string\n}\n\ntype encoder struct {\n\tcfg EncoderConfig\n}\n\nfunc NewFormatEncoderWithConfig(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\treturn encoder{\n\t\tcfg: cfg,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tVersion: spdxutil.DefaultVersion,\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"spdx\",\n\t\t\"spdx-tv\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn e.cfg.Version\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tlatestDoc := spdxhelpers.ToFormatModel(s)\n\tif latestDoc == nil {\n\t\treturn fmt.Errorf(\"unable to convert SBOM to SPDX document\")\n\t}\n\n\tvar err error\n\tvar encodeDoc any\n\tswitch e.cfg.Version {\n\tcase \"2.1\":\n\t\tdoc := v2_1.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\tcase \"2.2\":\n\t\tdoc := v2_2.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\n\tcase \"2.3\", \"\", \"2\", \"2.x\":\n\t\tdoc := v2_3.Document{}\n\t\terr = convert.Document(latestDoc, &doc)\n\t\tencodeDoc = doc\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported SPDX version %q\", e.cfg.Version)\n\t}\n\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to convert SBOM to SPDX document: %w\", err)\n\t}\n\n\treturn tagvalue.Write(encodeDoc, writer)\n}\n"
  },
  {
    "path": "syft/format/spdxtagvalue/encoder_test.go",
    "content": "package spdxtagvalue\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-spdx-tv\", false, \"update the *.golden files for spdx-tv encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc getEncoder(t testing.TB) sbom.FormatEncoder {\n\tenc, err := NewFormatEncoderWithConfig(DefaultEncoderConfig())\n\trequire.NoError(t, err)\n\treturn enc\n}\n\nfunc TestSPDXTagValueDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestSPDXTagValueImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage, testutil.FromSnapshot()),\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc TestSPDXJSONSPDXIDs(t *testing.T) {\n\tvar pkgs []pkg.Package\n\tfor _, name := range []string{\"some/slashes\", \"@at-sign\", \"under_scores\"} {\n\t\tp := pkg.Package{\n\t\t\tName: name,\n\t\t}\n\t\tp.SetID()\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\ts := sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkg.NewCollection(pkgs...),\n\t\t},\n\t\tRelationships: nil,\n\t\tSource: source.Description{\n\t\t\tName:     \"foobar/baz\", // in this case, foobar is used as the spdx document name\n\t\t\tMetadata: source.DirectoryMetadata{},\n\t\t},\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"v0.42.0-bogus\",\n\t\t\tConfiguration: map[string]string{\n\t\t\t\t\"config-key\": \"config-value\",\n\t\t\t},\n\t\t},\n\t}\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     s,\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc TestSPDXRelationshipOrder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ts := testutil.ImageInput(t, testImage, testutil.FromSnapshot())\n\ttestutil.AddSampleFileRelationships(&s)\n\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     s,\n\t\t\tFormat:                      getEncoder(t),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// each SBOM reports the time it was generated, which is not useful during snapshot testing\n\t\t\t\t`Created: .*`: \"Created: redacted\",\n\n\t\t\t\t// each SBOM reports a unique documentNamespace when generated, this is not useful for snapshot testing\n\t\t\t\t`DocumentNamespace: https://anchore.com/.*`: \"DocumentNamespace: redacted\",\n\n\t\t\t\t// the license list will be updated periodically, the value here should not be directly tested in snapshot tests\n\t\t\t\t`LicenseListVersion: .*`: \"LicenseListVersion: redacted\",\n\t\t\t},\n\t\t)\n}\n\nfunc TestSupportedVersions(t *testing.T) {\n\tencs := defaultFormatEncoders()\n\trequire.NotEmpty(t, encs)\n\n\tversions := SupportedVersions()\n\trequire.Equal(t, len(versions), len(encs))\n\n\tsubject := testutil.DirectoryInput(t, t.TempDir())\n\tdec := NewFormatDecoder()\n\n\trelationshipOffsetPerVersion := map[string]int{\n\t\t// the package representing the source gets a relationship from the source package to all other packages found\n\t\t// these relationships cannot be removed until the primaryPackagePurpose info is available in 2.3\n\t\t\"2.1\": 2,\n\t\t\"2.2\": 2,\n\t\t// the source-to-package relationships can be removed since the primaryPackagePurpose info is available in 2.3\n\t\t\"2.3\": 0,\n\t}\n\n\tpkgCountOffsetPerVersion := map[string]int{\n\t\t\"2.1\": 1, // the source is mapped as a package, but cannot distinguish it since the primaryPackagePurpose info is not available until 2.3\n\t\t\"2.2\": 1, // the source is mapped as a package, but cannot distinguish it since the primaryPackagePurpose info is not available until 2.3\n\t\t\"2.3\": 0, // the source package can be removed since the primaryPackagePurpose info is available\n\t}\n\n\tfor _, enc := range encs {\n\t\tt.Run(enc.Version(), func(t *testing.T) {\n\t\t\trequire.Contains(t, versions, enc.Version())\n\n\t\t\tvar buf bytes.Buffer\n\t\t\trequire.NoError(t, enc.Encode(&buf, subject))\n\n\t\t\tid, version := dec.Identify(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\tvar s *sbom.SBOM\n\t\t\tvar err error\n\t\t\ts, id, version, err = dec.Decode(bytes.NewReader(buf.Bytes()))\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, enc.ID(), id)\n\t\t\trequire.Equal(t, enc.Version(), version)\n\n\t\t\trequire.NotEmpty(t, s.Artifacts.Packages.PackageCount())\n\n\t\t\toffset := relationshipOffsetPerVersion[enc.Version()]\n\n\t\t\tassert.Equal(t, len(subject.Relationships)+offset, len(s.Relationships), \"mismatched relationship count\")\n\n\t\t\toffset = pkgCountOffsetPerVersion[enc.Version()]\n\n\t\t\tif !assert.Equal(t, subject.Artifacts.Packages.PackageCount()+offset, s.Artifacts.Packages.PackageCount(), \"mismatched package count\") {\n\t\t\t\tt.Logf(\"expected: %d\", subject.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range subject.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t\tt.Logf(\"actual: %d\", s.Artifacts.Packages.PackageCount())\n\t\t\t\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t\t\t\tt.Logf(\"  - %s\", p.String())\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc defaultFormatEncoders() []sbom.FormatEncoder {\n\tvar encs []sbom.FormatEncoder\n\tfor _, version := range SupportedVersions() {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{Version: version})\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tencs = append(encs, enc)\n\t}\n\treturn encs\n}\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/bad-sbom",
    "content": "not an sbom!"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/identify/2.1.sbom",
    "content": "SPDXVersion: SPDX-2.1\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: go.mod\nDocumentNamespace: https://anchore.com/syft/file/go.mod-91ab66ec-bf3a-4c1b-85a9-e480f6296a1c\nLicenseListVersion: 3.21\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-0.91.0\nCreated: 2023-09-29T15:16:29Z\n\n##### Unpackaged files\n\nFileName: /go.mod\nSPDXID: SPDXRef-File-go.mod-3fc5a8d3d86e9790\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\n\n##### Package: go.mod\n\nPackageName: go.mod\nSPDXID: SPDXRef-DocumentRoot-File-go.mod\nPackageVersion: sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageChecksum: SHA256: dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\n\n##### Package: github.com/wagoodman/go-partybus\n\nPackageName: github.com/wagoodman/go-partybus\nSPDXID: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nPackageVersion: v0.0.0-20230516145632-8ccac152c651\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from go module information: /go.mod\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\n\n##### Relationships\n\nRelationship: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86 OTHER SPDXRef-File-go.mod-3fc5a8d3d86e9790\nRelationshipComment: evident-by: indicates the package's existence is evident by the given file\nRelationship: SPDXRef-DocumentRoot-File-go.mod CONTAINS SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-File-go.mod\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/identify/2.2.sbom",
    "content": "SPDXVersion: SPDX-2.2\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: go.mod\nDocumentNamespace: https://anchore.com/syft/file/go.mod-022ab85e-2140-4cce-9d31-180ceb152d81\nLicenseListVersion: 3.21\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-0.91.0\nCreated: 2023-09-29T15:16:29Z\n\n##### Unpackaged files\n\nFileName: /go.mod\nSPDXID: SPDXRef-File-go.mod-3fc5a8d3d86e9790\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\n\n##### Package: go.mod\n\nPackageName: go.mod\nSPDXID: SPDXRef-DocumentRoot-File-go.mod\nPackageVersion: sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageChecksum: SHA256: dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\n\n##### Package: github.com/wagoodman/go-partybus\n\nPackageName: github.com/wagoodman/go-partybus\nSPDXID: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nPackageVersion: v0.0.0-20230516145632-8ccac152c651\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from go module information: /go.mod\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\n\n##### Relationships\n\nRelationship: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86 OTHER SPDXRef-File-go.mod-3fc5a8d3d86e9790\nRelationshipComment: evident-by: indicates the package's existence is evident by the given file\nRelationship: SPDXRef-DocumentRoot-File-go.mod CONTAINS SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-File-go.mod\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/identify/2.3.sbom",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: go.mod\nDocumentNamespace: https://anchore.com/syft/file/go.mod-63b8e1d7-2f51-4996-bd88-bd2dca400a39\nLicenseListVersion: 3.21\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-0.91.0\nCreated: 2023-09-29T15:16:29Z\n\n##### Unpackaged files\n\nFileName: /go.mod\nSPDXID: SPDXRef-File-go.mod-3fc5a8d3d86e9790\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\n\n##### Package: go.mod\n\nPackageName: go.mod\nSPDXID: SPDXRef-DocumentRoot-File-go.mod\nPackageVersion: sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: FILE\nFilesAnalyzed: false\nPackageChecksum: SHA256: dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\n\n##### Package: github.com/wagoodman/go-partybus\n\nPackageName: github.com/wagoodman/go-partybus\nSPDXID: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nPackageVersion: v0.0.0-20230516145632-8ccac152c651\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from go module information: /go.mod\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\n\n##### Relationships\n\nRelationship: SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86 OTHER SPDXRef-File-go.mod-3fc5a8d3d86e9790\nRelationshipComment: evident-by: indicates the package's existence is evident by the given file\nRelationship: SPDXRef-DocumentRoot-File-go.mod CONTAINS SPDXRef-Package-go-module-github.com-wagoodman-go-partybus-2ff71a67fb024c86\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-File-go.mod\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/snapshot/TestSPDXJSONSPDXIDs.golden",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: foobar/baz\nDocumentNamespace: redacted\nLicenseListVersion: redacted\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-v0.42.0-bogus\nCreated: redacted\n\n##### Package: foobar/baz\n\nPackageName: foobar/baz\nSPDXID: SPDXRef-DocumentRoot-Directory-foobar-baz\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: FILE\nFilesAnalyzed: false\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\n\n##### Package: @at-sign\n\nPackageName: @at-sign\nSPDXID: SPDXRef-Package--at-sign-1c8c811ea5b1cd46\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from the following paths: \nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\n\n##### Package: some/slashes\n\nPackageName: some/slashes\nSPDXID: SPDXRef-Package-some-slashes-8a8e95924316c66b\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from the following paths: \nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\n\n##### Package: under_scores\n\nPackageName: under_scores\nSPDXID: SPDXRef-Package-under-scores-883703d950ec00f3\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from the following paths: \nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\n\n##### Relationships\n\nRelationship: SPDXRef-DocumentRoot-Directory-foobar-baz CONTAINS SPDXRef-Package--at-sign-1c8c811ea5b1cd46\nRelationship: SPDXRef-DocumentRoot-Directory-foobar-baz CONTAINS SPDXRef-Package-some-slashes-8a8e95924316c66b\nRelationship: SPDXRef-DocumentRoot-Directory-foobar-baz CONTAINS SPDXRef-Package-under-scores-883703d950ec00f3\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Directory-foobar-baz\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/snapshot/TestSPDXRelationshipOrder.golden",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: user-image-input\nDocumentNamespace: redacted\nLicenseListVersion: redacted\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-v0.42.0-bogus\nCreated: redacted\n\n##### Unpackaged files\n\nFileName: a1/f6\nSPDXID: SPDXRef-File-a1-f6-9c2f7510199b17f6\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\nFileName: d1/f3\nSPDXID: SPDXRef-File-d1-f3-c6f5b29dca12661f\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\nFileName: d2/f4\nSPDXID: SPDXRef-File-d2-f4-c641caa71518099f\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\nFileName: f1\nSPDXID: SPDXRef-File-f1-5265a4dde3edbf7c\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\nFileName: f2\nSPDXID: SPDXRef-File-f2-f9e49132a4b96ccd\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\nFileName: z1/f5\nSPDXID: SPDXRef-File-z1-f5-839d99ee67d9d174\nFileType: OTHER\nFileChecksum: SHA1: 0000000000000000000000000000000000000000\nLicenseConcluded: NOASSERTION\nLicenseInfoInFile: NOASSERTION\nFileCopyrightText: NOASSERTION\n\n##### Package: user-image-input\n\nPackageName: user-image-input\nSPDXID: SPDXRef-DocumentRoot-Image-user-image-input\nPackageVersion: sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: CONTAINER\nFilesAnalyzed: false\nPackageChecksum: SHA256: 2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: PACKAGE-MANAGER purl pkg:oci/user-image-input@sha256%3A2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368?arch=\n\n##### Package: package-2\n\nPackageName: package-2\nSPDXID: SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nPackageVersion: 2.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from DPKG DB: /somefile-2.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:deb/debian/package-2@2.0.1\n\n##### Package: package-1\n\nPackageName: package-1\nSPDXID: SPDXRef-Package-python-package-1-2f52f617f1548337\nPackageVersion: 1.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from installed python package manifest file: /somefile-1.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: MIT\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl a-purl-1\n\n##### Relationships\n\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-f1-5265a4dde3edbf7c\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-z1-f5-839d99ee67d9d174\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-a1-f6-9c2f7510199b17f6\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-d2-f4-c641caa71518099f\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-d1-f3-c6f5b29dca12661f\nRelationship: SPDXRef-Package-python-package-1-2f52f617f1548337 CONTAINS SPDXRef-File-f2-f9e49132a4b96ccd\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-python-package-1-2f52f617f1548337\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Image-user-image-input\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/snapshot/TestSPDXTagValueDirectoryEncoder.golden",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: some/path\nDocumentNamespace: redacted\nLicenseListVersion: redacted\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-v0.42.0-bogus\nCreated: redacted\n\n##### Package: some/path\n\nPackageName: some/path\nSPDXID: SPDXRef-DocumentRoot-Directory-some-path\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: FILE\nFilesAnalyzed: false\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\n\n##### Package: package-2\n\nPackageName: package-2\nSPDXID: SPDXRef-Package-deb-package-2-39392bb5e270f669\nPackageVersion: 2.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from DPKG DB: /some/path/pkg1\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:deb/debian/package-2@2.0.1\n\n##### Package: package-1\n\nPackageName: package-1\nSPDXID: SPDXRef-Package-python-package-1-f04d218ff5ff50db\nPackageVersion: 1.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from installed python package manifest file: /some/path/pkg1\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: MIT\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl a-purl-2\n\n##### Relationships\n\nRelationship: SPDXRef-DocumentRoot-Directory-some-path CONTAINS SPDXRef-Package-python-package-1-f04d218ff5ff50db\nRelationship: SPDXRef-DocumentRoot-Directory-some-path CONTAINS SPDXRef-Package-deb-package-2-39392bb5e270f669\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Directory-some-path\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/snapshot/TestSPDXTagValueImageEncoder.golden",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentName: user-image-input\nDocumentNamespace: redacted\nLicenseListVersion: redacted\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-v0.42.0-bogus\nCreated: redacted\n\n##### Package: user-image-input\n\nPackageName: user-image-input\nSPDXID: SPDXRef-DocumentRoot-Image-user-image-input\nPackageVersion: sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nPrimaryPackagePurpose: CONTAINER\nFilesAnalyzed: false\nPackageChecksum: SHA256: 2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: PACKAGE-MANAGER purl pkg:oci/user-image-input@sha256%3A2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368?arch=\n\n##### Package: package-2\n\nPackageName: package-2\nSPDXID: SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nPackageVersion: 2.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from DPKG DB: /somefile-2.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: NOASSERTION\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:deb/debian/package-2@2.0.1\n\n##### Package: package-1\n\nPackageName: package-1\nSPDXID: SPDXRef-Package-python-package-1-2f52f617f1548337\nPackageVersion: 1.0.1\nPackageSupplier: NOASSERTION\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from installed python package manifest file: /somefile-1.txt\nPackageLicenseConcluded: NOASSERTION\nPackageLicenseDeclared: MIT\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl a-purl-1\n\n##### Relationships\n\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-python-package-1-2f52f617f1548337\nRelationship: SPDXRef-DocumentRoot-Image-user-image-input CONTAINS SPDXRef-Package-deb-package-2-4b756c6f6fb127a3\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Image-user-image-input\n\n"
  },
  {
    "path": "syft/format/spdxtagvalue/testdata/tag-value.spdx",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nSPDXID: SPDXRef-DOCUMENT\nDocumentNamespace: https://anchore.com/syft/image\nLicenseListVersion: 3.18\nCreator: Organization: Anchore, Inc\nCreator: Tool: syft-\nCreated: 2022-11-18T16:48:55Z\n\n##### Package: busybox\n\nPackageName: busybox\nSPDXID: SPDXRef-Package-apk-busybox-9d15fb154d2c566a\nPackageVersion: 1.31.1-r19\nPackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>\nPackageDownloadLocation: https://busybox.net/\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed\nPackageLicenseConcluded: GPL-2.0-only\nPackageLicenseDeclared: GPL-2.0-only\nPackageCopyrightText: NOASSERTION\nPackageDescription: Size optimized toolbox of many common UNIX utilities\nExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox:1.31.1-r19:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/busybox@1.31.1-r19?arch=x86_64&upstream=busybox&distro=alpine-3.12.5\n\n##### Package: my-app\n\nPackageName: my-app\nSPDXID: SPDXRef-Package-java-archive-my-app-4e39fdbdf089a141\nPackageVersion: 1\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: true\nPackageChecksum: SHA1: 11d42fc32de6a699c5705f6e58d2e387c5e9c8b5\nPackageSourceInfo: acquired package info from installed java archive: /sandbox/target/my-app-1.jar\nPackageLicenseConcluded: NONE\nPackageLicenseDeclared: NONE\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:app:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:maven/com.mycompany.app/my-app@1\n\n##### Package: my-app\n\nPackageName: my-app\nSPDXID: SPDXRef-Package-java-archive-my-app-ad62c29113227c17\nPackageVersion: 1\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: false\nPackageSourceInfo: acquired package info from installed java archive: /sandbox/target/original-my-app-1.jar\nPackageLicenseConcluded: NONE\nPackageLicenseDeclared: NONE\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:mycompany:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my-app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my_app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:app:app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:my:app:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:maven/com.mycompany.app/my-app@1\n\n##### Package: original-my-app\n\nPackageName: original-my-app\nSPDXID: SPDXRef-Package-java-archive-original-my-app-57464fff85325201\nPackageVersion: 1\nPackageDownloadLocation: NOASSERTION\nFilesAnalyzed: true\nPackageChecksum: SHA1: 11d42fc32de6a699c5705f6e58d2e387c5e9c8b5\nPackageSourceInfo: acquired package info from installed java archive: /sandbox/target/original-my-app-1.jar\nPackageLicenseConcluded: NONE\nPackageLicenseDeclared: NONE\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original-my-app:original-my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original-my-app:original_my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original_my_app:original-my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original_my_app:original_my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original-my:original-my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original-my:original_my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original_my:original-my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original_my:original_my_app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original:original-my-app:1:*:*:*:*:*:*:*\nExternalRef: SECURITY cpe23Type cpe:2.3:a:original:original_my_app:1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:maven/original-my-app/original-my-app@1\n"
  },
  {
    "path": "syft/format/syftjson/decoder.go",
    "content": "package syftjson\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/Masterminds/semver/v3\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/format/internal/stream\"\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatDecoder = (*decoder)(nil)\n\ntype decoder struct{}\n\nfunc NewFormatDecoder() sbom.FormatDecoder {\n\treturn decoder{}\n}\n\nfunc (d decoder) Decode(r io.Reader) (*sbom.SBOM, sbom.FormatID, string, error) {\n\treader, err := stream.SeekableReader(r)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", err\n\t}\n\n\tid, version := d.Identify(reader)\n\tif version == \"\" || id != ID {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"not a syft-json document\")\n\t}\n\tvar doc model.Document\n\n\tif _, err := reader.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to seek to start of Syft JSON SBOM: %+v\", err)\n\t}\n\n\tdec := json.NewDecoder(reader)\n\n\tif err = dec.Decode(&doc); err != nil {\n\t\treturn nil, \"\", \"\", fmt.Errorf(\"unable to decode syft-json document: %w\", err)\n\t}\n\n\tif err := checkSupportedSchema(doc.Schema.Version, internal.JSONSchemaVersion); err != nil {\n\t\tlog.Warn(err)\n\t}\n\n\treturn toSyftModel(doc), ID, doc.Schema.Version, nil\n}\n\nfunc (d decoder) Identify(r io.Reader) (sbom.FormatID, string) {\n\tif r == nil {\n\t\treturn \"\", \"\"\n\t}\n\n\ttype Document struct {\n\t\tSchema model.Schema `json:\"schema\"`\n\t}\n\n\tdec := json.NewDecoder(r)\n\n\tvar doc Document\n\tif err := dec.Decode(&doc); err != nil {\n\t\t// maybe not json? maybe not valid? doesn't matter, we won't process it.\n\t\treturn \"\", \"\"\n\t}\n\n\tif !strings.Contains(doc.Schema.URL, \"anchore/syft\") {\n\t\t// not a syft-json document\n\t\treturn \"\", \"\"\n\t}\n\n\t// note: we support all previous schema versions\n\treturn ID, doc.Schema.Version\n}\n\nfunc checkSupportedSchema(documentVersion string, parserVersion string) error {\n\tdocumentV, err := semver.NewVersion(documentVersion)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error comparing document schema version with parser schema version: %w\", err)\n\t}\n\n\tparserV, err := semver.NewVersion(parserVersion)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error comparing document schema version with parser schema version: %w\", err)\n\t}\n\n\tif documentV.GreaterThan(parserV) {\n\t\treturn fmt.Errorf(\"document has schema version %s, but parser has older schema version (%s)\", documentVersion, parserVersion)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/syftjson/decoder_test.go",
    "content": "package syftjson\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_EncodeDecodeCycle(t *testing.T) {\n\n\ttable := []struct {\n\t\tname         string\n\t\tfixtureImage string\n\t\tcfg          EncoderConfig\n\t}{\n\t\t{\n\t\t\tname:         \"go case\",\n\t\t\tfixtureImage: \"image-simple\",\n\t\t\tcfg:          DefaultEncoderConfig(),\n\t\t},\n\t\t{\n\t\t\tname:         \"default alpine\",\n\t\t\tfixtureImage: \"image-alpine\",\n\t\t\tcfg:          DefaultEncoderConfig(),\n\t\t},\n\t\t{\n\t\t\tname:         \"legacy alpine\",\n\t\t\tfixtureImage: \"image-alpine\",\n\t\t\tcfg: EncoderConfig{\n\t\t\t\tLegacy: true,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range table {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\toriginalSBOM := testutil.ImageInput(t, tt.fixtureImage)\n\n\t\t\tenc, err := NewFormatEncoderWithConfig(tt.cfg)\n\t\t\trequire.NoError(t, err)\n\t\t\tdec := NewFormatDecoder()\n\n\t\t\tvar buf bytes.Buffer\n\t\t\tassert.NoError(t, enc.Encode(&buf, originalSBOM))\n\n\t\t\tactualSBOM, decodedID, decodedVersion, err := dec.Decode(bytes.NewReader(buf.Bytes()))\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, ID, decodedID)\n\t\t\tassert.Equal(t, internal.JSONSchemaVersion, decodedVersion)\n\n\t\t\tfor _, d := range deep.Equal(originalSBOM.Source, actualSBOM.Source) {\n\t\t\t\tif strings.HasSuffix(d, \"<nil slice> != []\") {\n\t\t\t\t\t// semantically the same\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tt.Errorf(\"metadata difference: %+v\", d)\n\t\t\t}\n\n\t\t\tactualPackages := actualSBOM.Artifacts.Packages.Sorted()\n\t\t\tfor idx, p := range originalSBOM.Artifacts.Packages.Sorted() {\n\t\t\t\tif !assert.Equal(t, p.Name, actualPackages[idx].Name) {\n\t\t\t\t\tt.Errorf(\"different package at idx=%d: %s vs %s\", idx, p.Name, actualPackages[idx].Name)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor _, d := range deep.Equal(p, actualPackages[idx]) {\n\t\t\t\t\tif strings.Contains(d, \".AccessPath: \") {\n\t\t\t\t\t\t// location.Virtual path is not exposed in the json output\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif strings.HasSuffix(d, \"<nil slice> != []\") {\n\t\t\t\t\t\t// semantically the same\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tt.Errorf(\"%q package difference (%s): %+v\", tt.fixtureImage, p.Name, d)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOutOfDateParser(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tdocumentVersion string\n\t\tparserVersion   string\n\t\twant            error\n\t}{{\n\t\tname:            \"no warning when doc version is older\",\n\t\tdocumentVersion: \"1.0.9\",\n\t\tparserVersion:   \"3.1.0\",\n\t}, {\n\t\tname:            \"warning when parser is older\",\n\t\tdocumentVersion: \"4.3.2\",\n\t\tparserVersion:   \"3.1.0\",\n\t\twant:            fmt.Errorf(\"document has schema version %s, but parser has older schema version (%s)\", \"4.3.2\", \"3.1.0\"),\n\t}, {\n\t\tname:            \"warning when document version is unparseable\",\n\t\tdocumentVersion: \"some-nonsense\",\n\t\tparserVersion:   \"3.1.0\",\n\t\twant:            fmt.Errorf(\"error comparing document schema version with parser schema version: %w\", errors.New(\"invalid semantic version\")),\n\t}, {\n\t\tname:            \"warning when parser version is unparseable\",\n\t\tdocumentVersion: \"7.1.0\",\n\t\tparserVersion:   \"some-nonsense\",\n\t\twant:            fmt.Errorf(\"error comparing document schema version with parser schema version: %w\", errors.New(\"invalid semantic version\")),\n\t}}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := checkSupportedSchema(tt.documentVersion, tt.parserVersion)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_encodeDecodeFileMetadata(t *testing.T) {\n\tp := pkg.Package{\n\t\tName:    \"pkg\",\n\t\tVersion: \"version\",\n\t\tFoundBy: \"something\",\n\t\tLocations: file.NewLocationSet(file.Location{\n\t\t\tLocationData: file.LocationData{\n\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\tRealPath:     \"/somewhere\",\n\t\t\t\t\tFileSystemID: \"id\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocationMetadata: file.LocationMetadata{\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"key\": \"value\",\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tLicenses: pkg.NewLicenseSet(pkg.License{\n\t\t\tValue:          \"MIT\",\n\t\t\tSPDXExpression: \"MIT\",\n\t\t\tType:           \"MIT\",\n\t\t\tURLs:           []string{\"https://example.org/license\"},\n\t\t\tLocations:      file.LocationSet{},\n\t\t}),\n\t\tLanguage: \"language\",\n\t\tType:     \"type\",\n\t\tCPEs: []cpe.CPE{\n\t\t\t{\n\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\tVendor:  \"vendor\",\n\t\t\t\t\tProduct: \"product\",\n\t\t\t\t\tVersion: \"version\",\n\t\t\t\t\tUpdate:  \"update\",\n\t\t\t\t},\n\t\t\t\tSource: \"test-source\",\n\t\t\t},\n\t\t},\n\t\tPURL:     \"pkg:generic/pkg@version\",\n\t\tMetadata: nil,\n\t}\n\tp.SetID()\n\n\tc := file.Coordinates{\n\t\tRealPath:     \"some-file\",\n\t\tFileSystemID: \"some-fs-id\",\n\t}\n\n\ts := sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: pkg.NewCollection(p),\n\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\tc: {\n\t\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\t\tNameValue: c.RealPath,\n\t\t\t\t\t\tModeValue: 0644,\n\t\t\t\t\t\tSizeValue: 7,\n\t\t\t\t\t},\n\t\t\t\t\tPath:     c.RealPath,\n\t\t\t\t\tType:     stereoscopeFile.TypeRegular,\n\t\t\t\t\tUserID:   1,\n\t\t\t\t\tGroupID:  2,\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\tc: {\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\t\tValue:     \"d34db33f\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFileContents: map[file.Coordinates]string{\n\t\t\t\tc: \"some contents\",\n\t\t\t},\n\t\t\tFileLicenses: map[file.Coordinates][]file.License{\n\t\t\t\tc: {\n\t\t\t\t\t{\n\t\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\t\tType:           \"MIT\",\n\t\t\t\t\t\tLicenseEvidence: &file.LicenseEvidence{\n\t\t\t\t\t\t\tConfidence: 1,\n\t\t\t\t\t\t\tOffset:     2,\n\t\t\t\t\t\t\tExtent:     3,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tUnknowns: map[file.Coordinates][]string{},\n\t\t\tExecutables: map[file.Coordinates]file.Executable{\n\t\t\t\tc: {\n\t\t\t\t\tFormat: file.ELF,\n\t\t\t\t\tELFSecurityFeatures: &file.ELFSecurityFeatures{\n\t\t\t\t\t\tSymbolTableStripped:           false,\n\t\t\t\t\t\tStackCanary:                   boolRef(true),\n\t\t\t\t\t\tNoExecutable:                  false,\n\t\t\t\t\t\tRelocationReadOnly:            \"partial\",\n\t\t\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\t\t\tLlvmControlFlowIntegrity:      boolRef(true),\n\t\t\t\t\t\tClangFortifySource:            boolRef(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tPrettyName:       \"some os\",\n\t\t\t\tName:             \"os\",\n\t\t\t\tID:               \"os-id\",\n\t\t\t\tIDLike:           []string{\"os\"},\n\t\t\t\tVersion:          \"version\",\n\t\t\t\tVersionID:        \"version\",\n\t\t\t\tVersionCodename:  \"codename\",\n\t\t\t\tBuildID:          \"build-id\",\n\t\t\t\tImageID:          \"image-id\",\n\t\t\t\tImageVersion:     \"image-version\",\n\t\t\t\tVariant:          \"variant\",\n\t\t\t\tVariantID:        \"variant-id\",\n\t\t\t\tHomeURL:          \"https://example.org/os\",\n\t\t\t\tSupportURL:       \"https://example.org/os/support\",\n\t\t\t\tBugReportURL:     \"https://example.org/os/bugs\",\n\t\t\t\tPrivacyPolicyURL: \"https://example.org/os/privacy\",\n\t\t\t\tCPEName:          \"os-cpe\",\n\t\t\t\tSupportEnd:       \"now\",\n\t\t\t},\n\t\t},\n\t\tRelationships: nil,\n\t\tSource: source.Description{\n\t\t\tID:      \"some-id\",\n\t\t\tName:    \"some-name\",\n\t\t\tVersion: \"some-version\",\n\t\t\tMetadata: source.FileMetadata{\n\t\t\t\tPath: \"/some-file-source-path\",\n\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: \"sha1\",\n\t\t\t\t\t\tValue:     \"d34db33f\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMIMEType: \"file/zip\",\n\t\t\t},\n\t\t},\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"this-version\",\n\t\t},\n\t}\n\n\tbuf := &bytes.Buffer{}\n\tenc := NewFormatEncoder()\n\terr := enc.Encode(buf, s)\n\trequire.NoError(t, err)\n\n\tdec := NewFormatDecoder()\n\n\tgot, decodedID, decodedVersion, err := dec.Decode(bytes.NewReader(buf.Bytes()))\n\trequire.NoError(t, err)\n\tassert.Equal(t, ID, decodedID)\n\tassert.Equal(t, internal.JSONSchemaVersion, decodedVersion)\n\n\trequire.Equal(t, s, *got)\n}\n"
  },
  {
    "path": "syft/format/syftjson/encoder.go",
    "content": "package syftjson\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nvar _ sbom.FormatEncoder = (*encoder)(nil)\n\nconst ID sbom.FormatID = \"syft-json\"\n\ntype EncoderConfig struct {\n\tLegacy bool // transform the output to the legacy syft-json format (pre v1.0 changes, enumerated in the README.md)\n\tPretty bool // don't include spaces and newlines; same as jq -c\n}\n\ntype encoder struct {\n\tcfg EncoderConfig\n}\n\nfunc NewFormatEncoder() sbom.FormatEncoder {\n\tenc, err := NewFormatEncoderWithConfig(DefaultEncoderConfig())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn enc\n}\n\nfunc NewFormatEncoderWithConfig(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\treturn encoder{\n\t\tcfg: cfg,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tLegacy: false,\n\t\tPretty: false,\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"json\",\n\t\t\"syft\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn internal.JSONSchemaVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tdoc := ToFormatModel(s, e.cfg)\n\n\tenc := json.NewEncoder(writer)\n\n\tenc.SetEscapeHTML(false)\n\n\tif e.cfg.Pretty {\n\t\tenc.SetIndent(\"\", \" \")\n\t}\n\n\treturn enc.Encode(&doc)\n}\n"
  },
  {
    "path": "syft/format/syftjson/encoder_test.go",
    "content": "package syftjson\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"flag\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-json\", false, \"update the *.golden files for json encoders\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc TestDefaultNameAndVersion(t *testing.T) {\n\texpectedID, expectedVersion := ID, internal.JSONSchemaVersion\n\tenc := NewFormatEncoder()\n\tif enc.ID() != expectedID {\n\t\tt.Errorf(\"expected ID %q, got %q\", expectedID, enc.ID())\n\t}\n\n\tif enc.Version() != expectedVersion {\n\t\tt.Errorf(\"expected version %q, got %q\", expectedVersion, enc.Version())\n\t}\n}\n\nfunc TestPrettyOutput(t *testing.T) {\n\trun := func(opt bool) string {\n\t\tenc, err := NewFormatEncoderWithConfig(EncoderConfig{\n\t\t\tPretty: opt,\n\t\t})\n\t\trequire.NoError(t, err)\n\n\t\tdir := t.TempDir()\n\t\ts := testutil.DirectoryInput(t, dir)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\treturn strings.TrimSpace(buffer.String())\n\t}\n\n\tt.Run(\"pretty\", func(t *testing.T) {\n\t\tactual := run(true)\n\t\tassert.Contains(t, actual, \"\\n\")\n\t})\n\n\tt.Run(\"compact\", func(t *testing.T) {\n\t\tactual := run(false)\n\t\tassert.NotContains(t, actual, \"\\n\")\n\t})\n}\n\nfunc TestEscapeHTML(t *testing.T) {\n\tdir := t.TempDir()\n\ts := testutil.DirectoryInput(t, dir)\n\ts.Artifacts.Packages.Add(pkg.Package{\n\t\tName: \"<html-package>\",\n\t})\n\n\t// by default we do not escape HTML\n\tt.Run(\"default\", func(t *testing.T) {\n\t\tcfg := DefaultEncoderConfig()\n\n\t\tenc, err := NewFormatEncoderWithConfig(cfg)\n\t\trequire.NoError(t, err)\n\n\t\tvar buffer bytes.Buffer\n\t\terr = enc.Encode(&buffer, s)\n\t\trequire.NoError(t, err)\n\n\t\tactual := buffer.String()\n\t\tassert.Contains(t, actual, \"<html-package>\")\n\t\tassert.NotContains(t, actual, \"\\\\u003chtml-package\\\\u003e\")\n\t})\n}\n\nfunc TestDirectoryEncoder(t *testing.T) {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      enc,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestImageEncoder(t *testing.T) {\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage, testutil.FromSnapshot()),\n\t\t\tFormat:                      enc,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc TestEncodeFullJSONDocument(t *testing.T) {\n\tcatalog := pkg.NewCollection()\n\tctx := context.TODO()\n\tp1 := pkg.Package{\n\t\tName:    \"package-1\",\n\t\tVersion: \"1.0.1\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\tRealPath: \"/a/place/a\",\n\t\t\t}),\n\t\t),\n\t\tType:     pkg.PythonPkg,\n\t\tFoundBy:  \"the-cataloger-1\",\n\t\tLanguage: pkg.Python,\n\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\tMetadata: pkg.PythonPackage{\n\t\t\tName:    \"package-1\",\n\t\t\tVersion: \"1.0.1\",\n\t\t\tFiles:   []pkg.PythonFileRecord{},\n\t\t},\n\t\tPURL: \"a-purl-1\",\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t}\n\n\tp2 := pkg.Package{\n\t\tName:    \"package-2\",\n\t\tVersion: \"2.0.1\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\tRealPath: \"/b/place/b\",\n\t\t\t}),\n\t\t),\n\t\tType:    pkg.DebPkg,\n\t\tFoundBy: \"the-cataloger-2\",\n\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\tPackage: \"package-2\",\n\t\t\tVersion: \"2.0.1\",\n\t\t\tFiles:   []pkg.DpkgFileRecord{},\n\t\t},\n\t\tPURL: \"a-purl-2\",\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(\"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t},\n\t}\n\n\tcatalog.Add(p1)\n\tcatalog.Add(p2)\n\n\ts := sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages: catalog,\n\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\tfile.NewVirtualLocation(\"/a/place\", \"/a/symlink/to/place\").Coordinates: {\n\t\t\t\t\tFileInfo: stereoFile.ManualInfo{\n\t\t\t\t\t\tNameValue: \"/a/place\",\n\t\t\t\t\t\tModeValue: 0775,\n\t\t\t\t\t},\n\t\t\t\t\tType:    stereoFile.TypeDirectory,\n\t\t\t\t\tUserID:  0,\n\t\t\t\t\tGroupID: 0,\n\t\t\t\t},\n\t\t\t\tfile.NewLocation(\"/a/place/a\").Coordinates: {\n\t\t\t\t\tFileInfo: stereoFile.ManualInfo{\n\t\t\t\t\t\tNameValue: \"/a/place/a\",\n\t\t\t\t\t\tModeValue: 0775,\n\t\t\t\t\t},\n\t\t\t\t\tType:    stereoFile.TypeRegular,\n\t\t\t\t\tUserID:  0,\n\t\t\t\t\tGroupID: 0,\n\t\t\t\t},\n\t\t\t\tfile.NewLocation(\"/b\").Coordinates: {\n\t\t\t\t\tFileInfo: stereoFile.ManualInfo{\n\t\t\t\t\t\tNameValue: \"/b\",\n\t\t\t\t\t\tModeValue: 0775,\n\t\t\t\t\t},\n\t\t\t\t\tType:            stereoFile.TypeSymLink,\n\t\t\t\t\tLinkDestination: \"/c\",\n\t\t\t\t\tUserID:          0,\n\t\t\t\t\tGroupID:         0,\n\t\t\t\t},\n\t\t\t\tfile.NewLocation(\"/b/place/b\").Coordinates: {\n\t\t\t\t\tFileInfo: stereoFile.ManualInfo{\n\t\t\t\t\t\tNameValue: \"/b/place/b\",\n\t\t\t\t\t\tModeValue: 0644,\n\t\t\t\t\t},\n\t\t\t\t\tType:    stereoFile.TypeRegular,\n\t\t\t\t\tUserID:  1,\n\t\t\t\t\tGroupID: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\tfile.NewLocation(\"/a/place/a\").Coordinates: {\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\tValue:     \"366a3f5653e34673b875891b021647440d0127c2ef041e3b1a22da2a7d4f3703\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfile.NewLocation(\"/b/place/b\").Coordinates: {\n\t\t\t\t\t{\n\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\tValue:     \"1b3722da2a7d90d033b87581a2a3f12021647445653e34666ef041e3b4f3707c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFileContents: map[file.Coordinates]string{\n\t\t\t\tfile.NewLocation(\"/a/place/a\").Coordinates: \"the-contents\",\n\t\t\t},\n\t\t\tLinuxDistribution: &linux.Release{\n\t\t\t\tID:        \"redhat\",\n\t\t\t\tVersion:   \"7\",\n\t\t\t\tVersionID: \"7\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"rhel\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tRelationships: []artifact.Relationship{\n\t\t\t{\n\t\t\t\tFrom: p1,\n\t\t\t\tTo:   p2,\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t\tData: map[string]string{\n\t\t\t\t\t\"file\": \"path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tSource: source.Description{\n\t\t\tID: \"c2b46b4eb06296933b7cf0722683964e9ecbd93265b9ef6ae9642e3952afbba0\",\n\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\tUserInput:      \"user-image-input\",\n\t\t\t\tID:             \"sha256:c2b46b4eb06296933b7cf0722683964e9ecbd93265b9ef6ae9642e3952afbba0\",\n\t\t\t\tManifestDigest: \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n\t\t\t\tMediaType:      \"application/vnd.docker.distribution.manifest.v2+json\",\n\t\t\t\tTags: []string{\n\t\t\t\t\t\"stereoscope-fixture-image-simple:85066c51088bdd274f7a89e99e00490f666c49e72ffc955707cd6e18f0e22c5b\",\n\t\t\t\t},\n\t\t\t\tSize: 38,\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tMediaType: \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\tDigest:    \"sha256:3de16c5b8659a2e8d888b8ded8427be7a5686a3c8c4e4dd30de20f362827285b\",\n\t\t\t\t\t\tSize:      22,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tMediaType: \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\tDigest:    \"sha256:366a3f5653e34673b875891b021647440d0127c2ef041e3b1a22da2a7d4f3703\",\n\t\t\t\t\t\tSize:      16,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRawManifest: []byte(\"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJh...\"),\n\t\t\t\tRawConfig:   []byte(\"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZp...\"),\n\t\t\t\tRepoDigests: []string{},\n\t\t\t},\n\t\t},\n\t\tDescriptor: sbom.Descriptor{\n\t\t\tName:    \"syft\",\n\t\t\tVersion: \"v0.42.0-bogus\",\n\t\t\t// the application configuration should be persisted here, however, we do not want to import\n\t\t\t// the application configuration in this package (it's reserved only for ingestion by the cmd package)\n\t\t\tConfiguration: map[string]string{\n\t\t\t\t\"config-key\": \"config-value\",\n\t\t\t},\n\t\t},\n\t}\n\n\tcfg := DefaultEncoderConfig()\n\tcfg.Pretty = true\n\tenc, err := NewFormatEncoderWithConfig(cfg)\n\trequire.NoError(t, err)\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     s,\n\t\t\tFormat:                      enc,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      true,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...).\n\t\tWithPatternRedactors(\n\t\t\tmap[string]string{\n\t\t\t\t// remove schema version (don't even show the key or value)\n\t\t\t\t`,?\\s*\"schema\":\\s*\\{[^}]*}`: \"\",\n\t\t\t},\n\t\t)\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/document.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\n// Document represents the syft cataloging findings as a JSON document\ntype Document struct {\n\tArtifacts             []Package      `json:\"artifacts\"` // Artifacts is the list of packages discovered and placed into the catalog\n\tArtifactRelationships []Relationship `json:\"artifactRelationships\"`\n\tFiles                 []File         `json:\"files,omitempty\"` // note: must have omitempty\n\tSource                Source         `json:\"source\"`          // Source represents the original object that was cataloged\n\tDistro                LinuxRelease   `json:\"distro\"`          // Distro represents the Linux distribution that was detected from the source\n\tDescriptor            Descriptor     `json:\"descriptor\"`      // Descriptor is a block containing self-describing information about syft\n\tSchema                Schema         `json:\"schema\"`          // Schema is a block reserved for defining the version for the shape of this JSON document and where to find the schema document to validate the shape\n}\n\nfunc (d *Document) UnmarshalJSON(data []byte) error {\n\ttype Alias *Document\n\taux := Alias(d)\n\n\tif err := json.Unmarshal(data, aux); err != nil {\n\t\treturn fmt.Errorf(\"could not unmarshal syft JSON document: %w\", err)\n\t}\n\n\t// in previous versions of anchorectl, the file modes were stored as decimal values instead of octal.\n\tif d.Schema.Version == \"1.0.0\" && d.Descriptor.Name == \"anchorectl\" {\n\t\t// convert all file modes from decimal to octal\n\t\tfor i := range d.Files {\n\t\t\td.Files[i].Metadata.Mode = convertBase10ToBase8(d.Files[i].Metadata.Mode)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Descriptor identifies the tool that generated this SBOM document, including its name, version, and configuration used during catalog generation.\ntype Descriptor struct {\n\t// Name is the name of the tool that generated this SBOM (e.g., \"syft\").\n\tName string `json:\"name\"`\n\n\t// Version is the version of the tool that generated this SBOM.\n\tVersion string `json:\"version\"`\n\n\t// Configuration contains the tool configuration used during SBOM generation.\n\tConfiguration interface{} `json:\"configuration,omitempty\"`\n}\n\n// Schema specifies the JSON schema version and URL reference that defines the structure and validation rules for this document format.\ntype Schema struct {\n\t// Version is the JSON schema version for this document format.\n\tVersion string `json:\"version\"`\n\n\t// URL is the URL to the JSON schema definition document.\n\tURL string `json:\"url\"`\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/document_test.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestDocumentUnmarshalJSON_SchemaDetection(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tjsonData string\n\t\tmodes    []int\n\t}{\n\t\t{\n\t\t\tname: \"schema version 1.0.0 + anchorectl\",\n\t\t\tjsonData: `{\n\t\t\t\t\"files\": [\n\t\t\t\t\t{\"metadata\": {\"mode\": 493}},\n\t\t\t\t\t{\"metadata\": {\"mode\": 420}}\n\t\t\t\t],\n\t\t\t\t\"schema\": {\"version\": \"1.0.0\"},\n                \"descriptor\": {\n\t\t\t\t\t\"name\": \"anchorectl\"\n\t\t\t\t}\n\t\t\t}`,\n\t\t\tmodes: []int{755, 644},\n\t\t},\n\t\t{\n\t\t\tname: \"schema version 1.0.0 + syft\",\n\t\t\tjsonData: `{\n\t\t\t\t\"files\": [\n\t\t\t\t\t{\"metadata\": {\"mode\": 755}},\n\t\t\t\t\t{\"metadata\": {\"mode\": 644}}\n\t\t\t\t],\n\t\t\t\t\"schema\": {\"version\": \"1.0.0\"},\n                \"descriptor\": {\n\t\t\t\t\t\"name\": \"syft\"\n\t\t\t\t}\n\t\t\t}`,\n\t\t\tmodes: []int{755, 644},\n\t\t},\n\t\t{\n\t\t\tname: \"schema version 2.0.0 + anchorectl\",\n\t\t\tjsonData: `{\n\t\t\t\t\"files\": [\n\t\t\t\t\t{\"metadata\": {\"mode\": 755}},\n\t\t\t\t\t{\"metadata\": {\"mode\": 644}}\n\t\t\t\t],\n\t\t\t\t\"schema\": {\"version\": \"2.0.0\"},\n                \"descriptor\": {\n\t\t\t\t\t\"name\": \"anchorectl\"\n\t\t\t\t}\n\t\t\t}`,\n\t\t\tmodes: []int{755, 644},\n\t\t},\n\t\t{\n\t\t\tname: \"missing schema version should not convert modes\",\n\t\t\tjsonData: `{\n\t\t\t\t\"files\": [\n\t\t\t\t\t{\"metadata\": {\"mode\": 755}}\n\t\t\t\t],\n\t\t\t\t\"schema\": {}\n\t\t\t}`,\n\t\t\tmodes: []int{755},\n\t\t},\n\t\t{\n\t\t\tname: \"empty files array with version 1.0.0\",\n\t\t\tjsonData: `{\n\t\t\t\t\"files\": [],\n\t\t\t\t\"schema\": {\"version\": \"1.0.0\"},\n                \"descriptor\": {\n\t\t\t\t\t\"name\": \"anchorectl\"\n\t\t\t\t}\n\t\t\t}`,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tvar doc Document\n\n\t\t\terr := json.Unmarshal([]byte(tt.jsonData), &doc)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"Failed to unmarshal JSON: %v\", err)\n\t\t\t}\n\n\t\t\tvar modes []int\n\t\t\tfor _, file := range doc.Files {\n\t\t\t\tmodes = append(modes, file.Metadata.Mode)\n\t\t\t}\n\n\t\t\trequire.Len(t, doc.Files, len(tt.modes), \"Unexpected number of files\")\n\t\t\tassert.Equal(t, tt.modes, modes, \"File modes do not match expected values\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/file.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\n// File represents a file discovered during cataloging with its metadata, content digests, licenses, and relationships to packages.\ntype File struct {\n\t// ID is a unique identifier for this file within the SBOM.\n\tID string `json:\"id\"`\n\n\t// Location is the file path and layer information where this file was found.\n\tLocation file.Coordinates `json:\"location\"`\n\n\t// Metadata contains filesystem metadata such as permissions, ownership, and file type.\n\tMetadata *FileMetadataEntry `json:\"metadata,omitempty\"`\n\n\t// Contents is the file contents for small files.\n\tContents string `json:\"contents,omitempty\"`\n\n\t// Digests contains cryptographic hashes of the file contents.\n\tDigests []file.Digest `json:\"digests,omitempty\"`\n\n\t// Licenses contains license information discovered within this file.\n\tLicenses []FileLicense `json:\"licenses,omitempty\"`\n\n\t// Executable contains executable metadata if this file is a binary.\n\tExecutable *file.Executable `json:\"executable,omitempty\"`\n\n\t// Unknowns contains unknown fields for forward compatibility.\n\tUnknowns []string `json:\"unknowns,omitempty\"`\n}\n\n// FileMetadataEntry contains filesystem-level metadata attributes such as permissions, ownership, type, and size for a cataloged file.\ntype FileMetadataEntry struct {\n\t// Mode is the Unix file permission mode in octal format.\n\tMode int `json:\"mode\"`\n\n\t// Type is the file type (e.g., \"RegularFile\", \"Directory\", \"SymbolicLink\").\n\tType string `json:\"type\"`\n\n\t// LinkDestination is the target path for symbolic links.\n\tLinkDestination string `json:\"linkDestination,omitempty\"`\n\n\t// UserID is the file owner user ID.\n\tUserID int `json:\"userID\"`\n\n\t// GroupID is the file owner group ID.\n\tGroupID int `json:\"groupID\"`\n\n\t// MIMEType is the MIME type of the file contents.\n\tMIMEType string `json:\"mimeType\"`\n\n\t// Size is the file size in bytes.\n\tSize int64 `json:\"size\"`\n}\n\ntype auxFileMetadataEntry FileMetadataEntry\ntype fileMetadataEntryWithLegacyHint struct {\n\t*auxFileMetadataEntry `json:\",inline\"`\n\tLegacyHint            any `json:\"FileInfo\"`\n}\n\nfunc (f *FileMetadataEntry) UnmarshalJSON(data []byte) error {\n\taux := fileMetadataEntryWithLegacyHint{\n\t\tauxFileMetadataEntry: (*auxFileMetadataEntry)(f),\n\t}\n\tif err := json.Unmarshal(data, &aux); err == nil {\n\t\tfieldsSpecified := f.Mode != 0 || f.Type != \"\" || f.LinkDestination != \"\" ||\n\t\t\tf.UserID != 0 || f.GroupID != 0 || f.MIMEType != \"\" || f.Size != 0\n\t\tif aux.LegacyHint == nil && fieldsSpecified {\n\t\t\t// we should have at least one field set to a non-zero value... (this is not a legacy shape)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tvar legacy sbomImportLegacyFileMetadataEntry\n\tif err := json.Unmarshal(data, &legacy); err != nil {\n\t\treturn err\n\t}\n\n\tif !legacy.Type.WasInt {\n\t\t// this occurs for document shapes from a non-import path and indicates that the mode has already been converted to octal.\n\t\t// That being said, we want to handle all legacy shapes the same, so we will convert this to base 10 for consistency.\n\t\tlegacy.Mode = convertBase8ToBase10(legacy.Mode)\n\t}\n\n\tf.Mode = legacy.Mode\n\tf.Type = legacy.Type.Value\n\tf.LinkDestination = legacy.LinkDestination\n\tf.UserID = legacy.UserID\n\tf.GroupID = legacy.GroupID\n\tf.MIMEType = legacy.MIMEType\n\tf.Size = legacy.Size\n\n\treturn nil\n}\n\ntype sbomImportLegacyFileMetadataEntry struct {\n\tMode            int                 `json:\"Mode\"`\n\tType            intOrStringFileType `json:\"Type\"`\n\tLinkDestination string              `json:\"LinkDestination\"`\n\tUserID          int                 `json:\"UserID\"`\n\tGroupID         int                 `json:\"GroupID\"`\n\tMIMEType        string              `json:\"MIMEType\"`\n\tSize            int64               `json:\"Size\"`\n}\n\n// FileLicense represents license information discovered within a file's contents or metadata, including the matched license text and SPDX expression.\ntype FileLicense struct {\n\t// Value is the raw license identifier or text as found in the file.\n\tValue string `json:\"value\"`\n\n\t// SPDXExpression is the parsed SPDX license expression.\n\tSPDXExpression string `json:\"spdxExpression\"`\n\n\t// Type is the license type classification (e.g., declared, concluded, discovered).\n\tType license.Type `json:\"type\"`\n\n\t// Evidence contains supporting evidence for this license detection.\n\tEvidence *FileLicenseEvidence `json:\"evidence,omitempty\"`\n}\n\n// FileLicenseEvidence contains supporting evidence for a license detection in a file, including the byte offset, extent, and confidence level.\ntype FileLicenseEvidence struct {\n\t// Confidence is the confidence score for this license detection (0-100).\n\tConfidence int `json:\"confidence\"`\n\n\t// Offset is the byte offset where the license text starts in the file.\n\tOffset int `json:\"offset\"`\n\n\t// Extent is the length of the license text in bytes.\n\tExtent int `json:\"extent\"`\n}\n\ntype intOrStringFileType struct {\n\tValue  string\n\tWasInt bool\n}\n\nfunc (lt *intOrStringFileType) UnmarshalJSON(data []byte) error {\n\tvar str string\n\tif err := json.Unmarshal(data, &str); err == nil {\n\t\tlt.Value = str\n\t\treturn nil\n\t}\n\n\tvar num stereoFile.Type\n\tif err := json.Unmarshal(data, &num); err != nil {\n\t\treturn fmt.Errorf(\"file.Type must be either string or int, got: %s\", string(data))\n\t}\n\n\tlt.Value = num.String()\n\tlt.WasInt = true\n\treturn nil\n}\n\nfunc convertBase10ToBase8(rawMode int) int {\n\toctalStr := fmt.Sprintf(\"%o\", rawMode)\n\t// we don't need to check that this is a valid octal string since the input is always an integer\n\tresult, _ := strconv.Atoi(octalStr)\n\treturn result\n}\n\nfunc convertBase8ToBase10(octalMode int) int {\n\toctalStr := strconv.Itoa(octalMode)\n\tresult, _ := strconv.ParseInt(octalStr, 8, 64)\n\n\treturn int(result)\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/file_test.go",
    "content": "package model\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_FileMetadataEntry_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tjsonData []byte\n\t\texpected FileMetadataEntry\n\t}{\n\t\t{\n\t\t\tname: \"unmarshal current format\",\n\t\t\tjsonData: []byte(`{\n             \"mode\": 644,\n             \"type\": \"RegularFile\",\n             \"linkDestination\": \"/usr/bin/python3\",\n             \"userID\": 1000,\n             \"groupID\": 1000,\n             \"mimeType\": \"text/plain\",\n             \"size\": 10174\n          }`),\n\t\t\texpected: FileMetadataEntry{\n\t\t\t\tMode:            644,\n\t\t\t\tType:            \"RegularFile\",\n\t\t\t\tLinkDestination: \"/usr/bin/python3\",\n\t\t\t\tUserID:          1000,\n\t\t\t\tGroupID:         1000,\n\t\t\t\tMIMEType:        \"text/plain\",\n\t\t\t\tSize:            10174,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unmarshal legacy image add internal document format\",\n\t\t\tjsonData: []byte(`{\n             \"FileInfo\": {},\n             \"Mode\": 644,\n             \"Type\": \"RegularFile\",\n             \"LinkDestination\": \"/usr/bin/python3\",\n             \"UserID\": 1000,\n             \"GroupID\": 1000,\n             \"MIMEType\": \"text/plain\",\n             \"Size\": 10174\n          }`),\n\t\t\texpected: FileMetadataEntry{\n\t\t\t\tMode:            420, // important! we convert this to base 10 so that all documents are consistent\n\t\t\t\tType:            \"RegularFile\",\n\t\t\t\tLinkDestination: \"/usr/bin/python3\",\n\t\t\t\tUserID:          1000,\n\t\t\t\tGroupID:         1000,\n\t\t\t\tMIMEType:        \"text/plain\",\n\t\t\t\tSize:            10174,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unmarshal legacy sbom import format\",\n\t\t\tjsonData: []byte(`{\n             \"FileInfo\": {},\n             \"Mode\": 644,\n             \"Type\": 0,\n             \"LinkDestination\": \"/usr/bin/python3\",\n             \"UserID\": 1000,\n             \"GroupID\": 1000,\n             \"MIMEType\": \"text/plain\",\n             \"Size\": 10174\n          }`),\n\t\t\texpected: FileMetadataEntry{\n\t\t\t\tMode:            644,\n\t\t\t\tType:            \"RegularFile\",\n\t\t\t\tLinkDestination: \"/usr/bin/python3\",\n\t\t\t\tUserID:          1000,\n\t\t\t\tGroupID:         1000,\n\t\t\t\tMIMEType:        \"text/plain\",\n\t\t\t\tSize:            10174,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unmarshal minimal current format\",\n\t\t\tjsonData: []byte(`{\n             \"mode\": 0,\n             \"type\": \"RegularFile\",\n             \"userID\": 0,\n             \"groupID\": 0,\n             \"size\": 0\n          }`),\n\t\t\texpected: FileMetadataEntry{\n\t\t\t\tType: \"RegularFile\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unmarshal minimal legacy format\",\n\t\t\tjsonData: []byte(`{\n             \"FileInfo\": {},\n             \"Mode\": 0,\n             \"Type\": \"RegularFile\",\n             \"UserID\": 0,\n             \"GroupID\": 0,\n             \"Size\": 0\n          }`),\n\t\t\texpected: FileMetadataEntry{\n\t\t\t\tType: \"RegularFile\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tvar actual FileMetadataEntry\n\t\t\terr := actual.UnmarshalJSON(test.jsonData)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"FileMetadataEntry mismatch (-expected +actual):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_intOrStringFileType_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tjsonData       []byte\n\t\texpected       string\n\t\texpectedWasInt bool\n\t\twantErr        require.ErrorAssertionFunc\n\t}{\n\t\t// string inputs - should pass through unchanged\n\t\t{\n\t\t\tname:     \"string RegularFile\",\n\t\t\tjsonData: []byte(`\"RegularFile\"`),\n\t\t\texpected: \"RegularFile\",\n\t\t},\n\t\t{\n\t\t\tname:     \"string HardLink\",\n\t\t\tjsonData: []byte(`\"HardLink\"`),\n\t\t\texpected: \"HardLink\",\n\t\t},\n\t\t{\n\t\t\tname:     \"string Directory\",\n\t\t\tjsonData: []byte(`\"Directory\"`),\n\t\t\texpected: \"Directory\",\n\t\t},\n\t\t{\n\t\t\tname:     \"string custom value\",\n\t\t\tjsonData: []byte(`\"CustomFileType\"`),\n\t\t\texpected: \"CustomFileType\",\n\t\t},\n\t\t// integer inputs - should convert to string representation\n\t\t{\n\t\t\tname:           \"int 0 (TypeRegular)\",\n\t\t\tjsonData:       []byte(`0`),\n\t\t\texpected:       \"RegularFile\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 1 (TypeHardLink)\",\n\t\t\tjsonData:       []byte(`1`),\n\t\t\texpected:       \"HardLink\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 2 (TypeSymLink)\",\n\t\t\tjsonData:       []byte(`2`),\n\t\t\texpected:       \"SymbolicLink\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 3 (TypeCharacterDevice)\",\n\t\t\tjsonData:       []byte(`3`),\n\t\t\texpected:       \"CharacterDevice\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 4 (TypeBlockDevice)\",\n\t\t\tjsonData:       []byte(`4`),\n\t\t\texpected:       \"BlockDevice\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 5 (TypeDirectory)\",\n\t\t\tjsonData:       []byte(`5`),\n\t\t\texpected:       \"Directory\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 6 (TypeFIFO)\",\n\t\t\tjsonData:       []byte(`6`),\n\t\t\texpected:       \"FIFONode\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 7 (TypeSocket)\",\n\t\t\tjsonData:       []byte(`7`),\n\t\t\texpected:       \"Socket\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"int 8 (TypeIrregular)\",\n\t\t\tjsonData:       []byte(`8`),\n\t\t\texpected:       \"IrregularFile\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"unknown int\",\n\t\t\tjsonData:       []byte(`99`),\n\t\t\texpected:       \"Unknown\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:           \"negative int\",\n\t\t\tjsonData:       []byte(`-1`),\n\t\t\texpected:       \"Unknown\",\n\t\t\texpectedWasInt: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"null value\",\n\t\t\tjsonData: []byte(`null`),\n\t\t},\n\t\t{\n\t\t\tname:     \"invalid JSON\",\n\t\t\tjsonData: []byte(`{`),\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"boolean value\",\n\t\t\tjsonData: []byte(`true`),\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"array value\",\n\t\t\tjsonData: []byte(`[]`),\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"object value\",\n\t\t\tjsonData: []byte(`{}`),\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"float value\",\n\t\t\tjsonData: []byte(`1.5`),\n\t\t\twantErr:  require.Error,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tif test.wantErr == nil {\n\t\t\t\ttest.wantErr = require.NoError\n\t\t\t}\n\t\t\tvar ft intOrStringFileType\n\t\t\terr := ft.UnmarshalJSON(test.jsonData)\n\t\t\ttest.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, test.expected, ft.Value)\n\t\t\tassert.Equal(t, test.expectedWasInt, ft.WasInt)\n\t\t})\n\t}\n}\n\nfunc Test_convertBase10ToBase8(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    int\n\t\texpected int\n\t}{\n\t\t{\n\t\t\tname:     \"no permissions\",\n\t\t\tinput:    0,\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname:     \"symlink + rwxrwxrwx\",\n\t\t\tinput:    134218239,\n\t\t\texpected: 1000000777,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := convertBase10ToBase8(tt.input)\n\n\t\t\trequire.Equal(t, tt.expected, actual)\n\t\t})\n\t}\n}\n\nfunc Test_convertBase8ToBase10(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    int\n\t\texpected int\n\t}{\n\t\t{\n\t\t\tname:     \"no permissions\",\n\t\t\tinput:    0,\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname:     \"symlink + rwxrwxrwx\",\n\t\t\tinput:    1000000777,\n\t\t\texpected: 134218239,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := convertBase8ToBase10(tt.input)\n\n\t\t\trequire.Equal(t, tt.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/linux_release.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n)\n\n// IDLikes represents a list of distribution IDs that this Linux distribution is similar to or derived from, as defined in os-release ID_LIKE field.\ntype IDLikes []string\n\n// LinuxRelease contains Linux distribution identification and version information extracted from /etc/os-release or similar system files.\ntype LinuxRelease struct {\n\t// PrettyName is a human-readable operating system name with version.\n\tPrettyName string `json:\"prettyName,omitempty\"`\n\n\t// Name is the operating system name without version information.\n\tName string `json:\"name,omitempty\"`\n\n\t// ID is the lower-case operating system identifier (e.g., \"ubuntu\", \"rhel\").\n\tID string `json:\"id,omitempty\"`\n\n\t// IDLike is a list of operating system IDs this distribution is similar to or derived from.\n\tIDLike IDLikes `json:\"idLike,omitempty\"`\n\n\t// Version is the operating system version including codename if available.\n\tVersion string `json:\"version,omitempty\"`\n\n\t// VersionID is the operating system version number or identifier.\n\tVersionID string `json:\"versionID,omitempty\"`\n\n\t// VersionCodename is the operating system release codename (e.g., \"jammy\", \"bullseye\").\n\tVersionCodename string `json:\"versionCodename,omitempty\"`\n\n\t// BuildID is a build identifier for the operating system.\n\tBuildID string `json:\"buildID,omitempty\"`\n\n\t// ImageID is an identifier for container or cloud images.\n\tImageID string `json:\"imageID,omitempty\"`\n\n\t// ImageVersion is the version for container or cloud images.\n\tImageVersion string `json:\"imageVersion,omitempty\"`\n\n\t// Variant is the operating system variant name (e.g., \"Server\", \"Workstation\").\n\tVariant string `json:\"variant,omitempty\"`\n\n\t// VariantID is the lower-case operating system variant identifier.\n\tVariantID string `json:\"variantID,omitempty\"`\n\n\t// HomeURL is the homepage URL for the operating system.\n\tHomeURL string `json:\"homeURL,omitempty\"`\n\n\t// SupportURL is the support or help URL for the operating system.\n\tSupportURL string `json:\"supportURL,omitempty\"`\n\n\t// BugReportURL is the bug reporting URL for the operating system.\n\tBugReportURL string `json:\"bugReportURL,omitempty\"`\n\n\t// PrivacyPolicyURL is the privacy policy URL for the operating system.\n\tPrivacyPolicyURL string `json:\"privacyPolicyURL,omitempty\"`\n\n\t// CPEName is the Common Platform Enumeration name for the operating system.\n\tCPEName string `json:\"cpeName,omitempty\"`\n\n\t// SupportEnd is the end of support date or version identifier.\n\tSupportEnd string `json:\"supportEnd,omitempty\"`\n\n\t// ExtendedSupport indicates whether extended security or support is available.\n\tExtendedSupport bool `json:\"extendedSupport,omitempty\"`\n}\n\nfunc (s *IDLikes) UnmarshalJSON(data []byte) error {\n\tvar str string\n\tvar strSlice []string\n\n\t// we support unmarshalling from a single value to support syft json schema v2\n\tif err := json.Unmarshal(data, &str); err == nil {\n\t\t*s = []string{str}\n\t} else if err := json.Unmarshal(data, &strSlice); err == nil {\n\t\t*s = strSlice\n\t} else {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/linux_release_test.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIDLikes_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     interface{}\n\t\texpected IDLikes\n\t}{\n\t\t{\n\t\t\tname: \"single string\",\n\t\t\tdata: \"well hello there!\",\n\t\t\texpected: IDLikes{\n\t\t\t\t\"well hello there!\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple strings\",\n\t\t\tdata: []string{\n\t\t\t\t\"well hello there!\",\n\t\t\t\t\"...hello there, john!\",\n\t\t\t},\n\t\t\texpected: IDLikes{\n\t\t\t\t\"well hello there!\",\n\t\t\t\t\"...hello there, john!\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tdata, err := json.Marshal(&tt.data)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar obj IDLikes\n\t\t\trequire.NoError(t, json.Unmarshal(data, &obj))\n\n\t\t\tassert.Equal(t, tt.expected, obj)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/package.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar errUnknownMetadataType = errors.New(\"unknown metadata type\")\n\n// Package represents a pkg.Package object specialized for JSON marshaling and unmarshalling.\ntype Package struct {\n\tPackageBasicData\n\tPackageCustomData\n}\n\n// PackageBasicData contains non-ambiguous values (type-wise) from pkg.Package.\ntype PackageBasicData struct {\n\tID        string          `json:\"id\"`\n\tName      string          `json:\"name\"`\n\tVersion   string          `json:\"version\"`\n\tType      pkg.Type        `json:\"type\"`\n\tFoundBy   string          `json:\"foundBy\"`\n\tLocations []file.Location `json:\"locations\"`\n\tLicenses  licenses        `json:\"licenses\"`\n\tLanguage  pkg.Language    `json:\"language\"`\n\tCPEs      cpes            `json:\"cpes\"`\n\tPURL      string          `json:\"purl\"`\n}\n\n// cpes is a collection of Common Platform Enumeration identifiers for a package.\ntype cpes []CPE\n\n// CPE represents a Common Platform Enumeration identifier used for matching packages to known vulnerabilities in security databases.\ntype CPE struct {\n\t// Value is the CPE string identifier.\n\tValue string `json:\"cpe\"`\n\n\t// Source is the source where this CPE was obtained or generated from.\n\tSource string `json:\"source,omitempty\"`\n}\n\n// licenses is a collection of license findings associated with a package.\ntype licenses []License\n\n// License represents software license information discovered for a package, including SPDX expressions and supporting evidence locations.\ntype License struct {\n\t// Value is the raw license identifier or expression as found.\n\tValue string `json:\"value\"`\n\n\t// SPDXExpression is the parsed SPDX license expression.\n\tSPDXExpression string `json:\"spdxExpression\"`\n\n\t// Type is the license type classification (e.g., declared, concluded, discovered).\n\tType license.Type `json:\"type\"`\n\n\t// URLs are URLs where license text or information can be found.\n\tURLs []string `json:\"urls\"`\n\n\t// Locations are file locations where this license was discovered.\n\tLocations []file.Location `json:\"locations\"`\n\n\t// Contents is the full license text content.\n\tContents string `json:\"contents,omitempty\"`\n}\n\nfunc newModelLicensesFromValues(licenses []string) (ml []License) {\n\tfor _, v := range licenses {\n\t\texpression, err := license.ParseExpression(v)\n\t\tif err != nil {\n\t\t\tlog.Tracef(\"could not find valid spdx expression for %s: %w\", v, err)\n\t\t}\n\t\tml = append(ml, License{\n\t\t\tValue:          v,\n\t\t\tSPDXExpression: expression,\n\t\t\tType:           license.Declared,\n\t\t})\n\t}\n\treturn ml\n}\n\nfunc (f *licenses) UnmarshalJSON(b []byte) error {\n\tvar lics []License\n\tif err := json.Unmarshal(b, &lics); err != nil {\n\t\tvar simpleLicense []string\n\t\tif err := json.Unmarshal(b, &simpleLicense); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal license: %w\", err)\n\t\t}\n\t\tlics = newModelLicensesFromValues(simpleLicense)\n\t}\n\t*f = lics\n\treturn nil\n}\n\nfunc sourcedCPESfromSimpleCPEs(simpleCPEs []string) []CPE {\n\tvar result []CPE\n\tfor _, s := range simpleCPEs {\n\t\tresult = append(result, CPE{\n\t\t\tValue: s,\n\t\t})\n\t}\n\treturn result\n}\n\nfunc (c *cpes) UnmarshalJSON(b []byte) error {\n\tvar cs []CPE\n\tif err := json.Unmarshal(b, &cs); err != nil {\n\t\tvar simpleCPEs []string\n\t\tif err := json.Unmarshal(b, &simpleCPEs); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal cpes: %w\", err)\n\t\t}\n\t\tcs = sourcedCPESfromSimpleCPEs(simpleCPEs)\n\t}\n\t*c = cs\n\treturn nil\n}\n\n// PackageCustomData contains ambiguous values (type-wise) from pkg.Package.\ntype PackageCustomData struct {\n\tMetadataType string `json:\"metadataType,omitempty\"`\n\tMetadata     any    `json:\"metadata,omitempty\"`\n}\n\n// packageMetadataUnpacker is all values needed from Package to disambiguate ambiguous fields during json unmarshaling.\ntype packageMetadataUnpacker struct {\n\tMetadataType string          `json:\"metadataType\"`\n\tMetadata     json.RawMessage `json:\"metadata\"`\n}\n\nfunc (p *packageMetadataUnpacker) String() string {\n\treturn fmt.Sprintf(\"metadataType: %s, metadata: %s\", p.MetadataType, string(p.Metadata))\n}\n\n// UnmarshalJSON is a custom unmarshaller for handling basic values and values with ambiguous types.\nfunc (p *Package) UnmarshalJSON(b []byte) error {\n\tvar basic PackageBasicData\n\tif err := json.Unmarshal(b, &basic); err != nil {\n\t\treturn err\n\t}\n\tp.PackageBasicData = basic\n\n\tvar unpacker packageMetadataUnpacker\n\tif err := json.Unmarshal(b, &unpacker); err != nil {\n\t\tlog.Warnf(\"failed to unmarshall into packageMetadataUnpacker: %v\", err)\n\t\treturn err\n\t}\n\n\terr := unpackPkgMetadata(p, unpacker)\n\tif errors.Is(err, errUnknownMetadataType) {\n\t\tlog.Warnf(\"unknown package metadata type=%q for packageID=%q\", p.MetadataType, p.ID)\n\t\treturn nil\n\t}\n\n\treturn err\n}\n\nfunc unpackPkgMetadata(p *Package, unpacker packageMetadataUnpacker) error {\n\tif unpacker.MetadataType == \"\" {\n\t\treturn nil\n\t}\n\n\t// check for legacy correction cases from schema v11 -> v12\n\tty := unpacker.MetadataType\n\tswitch unpacker.MetadataType {\n\tcase \"HackageMetadataType\":\n\t\tfor _, l := range p.Locations {\n\t\t\tif strings.HasSuffix(l.RealPath, \".yaml.lock\") {\n\t\t\t\tty = \"haskell-hackage-stack-lock-entry\"\n\t\t\t\tbreak\n\t\t\t} else if strings.HasSuffix(l.RealPath, \".yaml\") {\n\t\t\t\tty = \"haskell-hackage-stack-entry\"\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase \"RpmMetadata\":\n\t\tfor _, l := range p.Locations {\n\t\t\tif strings.HasSuffix(l.RealPath, \".rpm\") {\n\t\t\t\tty = \"rpm-archive\"\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tcase \"RustCargoPackageMetadata\":\n\t\tvar found bool\n\t\tfor _, l := range p.Locations {\n\t\t\tif strings.HasSuffix(strings.ToLower(l.RealPath), \"cargo.lock\") {\n\t\t\t\tty = \"rust-cargo-lock-entry\"\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\tty = \"rust-cargo-audit-entry\"\n\t\t}\n\t}\n\n\ttyp := packagemetadata.ReflectTypeFromJSONName(ty)\n\tif typ == nil {\n\t\t// capture unknown metadata as a generic struct\n\t\tif len(unpacker.Metadata) > 0 {\n\t\t\tvar val interface{}\n\t\t\tif err := json.Unmarshal(unpacker.Metadata, &val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tp.Metadata = val\n\t\t}\n\n\t\treturn errUnknownMetadataType\n\t}\n\n\tval := reflect.New(typ).Interface()\n\tif len(unpacker.Metadata) > 0 {\n\t\tif err := json.Unmarshal(unpacker.Metadata, val); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tp.Metadata = reflect.ValueOf(val).Elem().Interface()\n\tp.MetadataType = ty\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/package_test.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tpackageData []byte\n\t\tassert      func(*Package)\n\t}{\n\t\t{\n\t\t\tname: \"unmarshal package metadata\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-module-binary-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [\n\t\t\t\t  {\n\t\t\t\t   \"value\": \"MIT\",\n\t\t\t\t   \"spdxExpression\": \"MIT\",\n\t\t\t\t   \"type\": \"declared\",\n\t\t\t\t   \"url\": []\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\",\n\t\t\t\t\"metadataType\": \"GolangBinMetadata\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t  \"goCompiledVersion\": \"go1.18\",\n\t\t\t\t  \"architecture\": \"amd64\",\n\t\t\t\t  \"h1Digest\": \"h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=\"\n\t\t\t\t}\n\t\t\t}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\trequire.NotNil(t, p.Metadata)\n\t\t\t\tgolangMetadata := p.Metadata.(pkg.GolangBinaryBuildinfoEntry)\n\t\t\t\trequire.NotEmpty(t, golangMetadata)\n\t\t\t\tassert.Equal(t, \"go1.18\", golangMetadata.GoCompiledVersion)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package without metadata\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-mod-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [\n\t\t\t\t  {\n\t\t\t\t    \"value\": \"MIT\",\n\t\t\t\t\t\"spdxExpression\": \"MIT\",\n\t\t\t\t\t\"type\": \"declared\",\n\t\t\t\t\t\"url\": [\"https://www.github.com\"]\n\t\t\t\t  },\n\t\t\t\t  {\n\t\t\t\t    \"value\": \"MIT\",\n\t\t\t\t\t\"spdxExpression\": \"MIT\",\n\t\t\t\t\t\"type\": \"declared\",\n\t\t\t\t\t\"locations\": [{\"path\": \"/Users/hal/go/bin/syft\"}]\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\"\n\t\t\t}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Empty(t, p.MetadataType)\n\t\t\t\tassert.Empty(t, p.Metadata)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with []string licenses\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-mod-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [\"MIT\", \"Apache-2.0\"],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\"\n\t\t\t}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, licenses{\n\t\t\t\t\t{\n\t\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\t},\n\t\t\t\t}, p.Licenses)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with []pkg.License licenses\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-mod-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [\t\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\": \"MIT\",\n\t\t\t\t\t\t\"spdxExpression\": \"MIT\",\n\t\t\t\t\t\t\"type\": \"declared\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"value\": \"Apache-2.0\",\n\t\t\t\t\t\t\"spdxExpression\": \"Apache-2.0\",\n\t\t\t\t\t\t\"type\": \"declared\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\"\n\t\t\t}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, licenses{\n\t\t\t\t\t{\n\t\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\t},\n\t\t\t\t}, p.Licenses)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: rpm db vs archive (select db)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"739158935bfffc4d\",\n  \"name\": \"dbus\",\n  \"version\": \"1:1.12.8-12.el8\",\n  \"type\": \"rpm\",\n  \"foundBy\": \"rpm-db-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/var/lib/rpm/Packages\",\n      \"layerID\": \"sha256:d871dadfb37b53ef1ca45be04fc527562b91989991a8f545345ae3be0b93f92a\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"\",\n  \"cpes\": [],\n  \"purl\": \"pkg:rpm/centos/dbus@1.12.8-12.el8?arch=aarch64&epoch=1&upstream=dbus-1.12.8-12.el8.src.rpm&distro=centos-8\",\n  \"metadataType\": \"RpmMetadata\",\n  \"metadata\": {\n    \"name\": \"dbus\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"aarch64\",\n    \"release\": \"12.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-12.el8.src.rpm\",\n    \"size\": 0,\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": []\n  }\n}\n`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.RpmPkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.RpmDBEntry{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: rpm db vs archive (select archive)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"739158935bfffc4d\",\n  \"name\": \"dbus\",\n  \"version\": \"1:1.12.8-12.el8\",\n  \"type\": \"rpm\",\n  \"foundBy\": \"rpm-db-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/var/cache/dbus-1.12.8-12.el8.rpm\",\n      \"layerID\": \"sha256:d871dadfb37b53ef1ca45be04fc527562b91989991a8f545345ae3be0b93f92a\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"\",\n  \"cpes\": [],\n  \"purl\": \"pkg:rpm/centos/dbus@1.12.8-12.el8?arch=aarch64&epoch=1&upstream=dbus-1.12.8-12.el8.src.rpm&distro=centos-8\",\n  \"metadataType\": \"RpmMetadata\",\n  \"metadata\": {\n    \"name\": \"dbus\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"aarch64\",\n    \"release\": \"12.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-12.el8.src.rpm\",\n    \"size\": 0,\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": []\n  }\n}\n`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.RpmPkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.RpmArchive{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: stack.yaml vs stack.yaml.lock (select stack.yaml)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"46ff1a71f7715f38\",\n  \"name\": \"hspec-discover\",\n  \"version\": \"2.9.4\",\n  \"type\": \"hackage\",\n  \"foundBy\": \"haskell-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/stack.yaml\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"haskell\",\n  \"cpes\": [\n    \"cpe:2.3:a:hspec-discover:hspec-discover:2.9.4:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:hspec-discover:hspec_discover:2.9.4:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:hspec_discover:hspec-discover:2.9.4:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:hspec_discover:hspec_discover:2.9.4:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:hspec:hspec-discover:2.9.4:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:hspec:hspec_discover:2.9.4:*:*:*:*:*:*:*\"\n  ],\n  \"purl\": \"pkg:hackage/hspec-discover@2.9.4\",\n  \"metadataType\": \"HackageMetadataType\",\n  \"metadata\": {\n    \"name\": \"\",\n    \"version\": \"\",\n    \"pkgHash\": \"fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6\"\n  }\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.HackagePkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.HackageStackYamlEntry{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: stack.yaml vs stack.yaml.lock (select stack.yaml.lock)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"87939e95124ceb92\",\n  \"name\": \"optparse-applicative\",\n  \"version\": \"0.16.1.0\",\n  \"type\": \"hackage\",\n  \"foundBy\": \"haskell-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/stack.yaml.lock\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"haskell\",\n  \"cpes\": [\n    \"cpe:2.3:a:optparse-applicative:optparse-applicative:0.16.1.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:optparse-applicative:optparse_applicative:0.16.1.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:optparse_applicative:optparse-applicative:0.16.1.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:optparse_applicative:optparse_applicative:0.16.1.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:optparse:optparse-applicative:0.16.1.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:optparse:optparse_applicative:0.16.1.0:*:*:*:*:*:*:*\"\n  ],\n  \"purl\": \"pkg:hackage/optparse-applicative@0.16.1.0\",\n  \"metadataType\": \"HackageMetadataType\",\n  \"metadata\": {\n    \"name\": \"\",\n    \"version\": \"\",\n    \"pkgHash\": \"418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731\",\n    \"snapshotURL\": \"https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/14.yaml\"\n  }\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.HackagePkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.HackageStackYamlLockEntry{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: rust cargo.lock vs audit (select cargo.lock)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"95124ceb9287939e\",\n  \"name\": \"optpkg\",\n  \"version\": \"1.16.1\",\n  \"type\": \"hackage\",\n  \"foundBy\": \"rust-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/cargo.lock\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"rust\",\n  \"cpes\": [],\n  \"purl\": \"pkg:cargo/optpkg@1.16.1\",\n  \"metadataType\": \"RustCargoPackageMetadata\",\n  \"metadata\": {}\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.HackagePkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.RustCargoLockEntry{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"breaking v11-v12 schema change: rust cargo.lock vs audit (select audit binary)\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"95124ceb9287939e\",\n  \"name\": \"optpkg\",\n  \"version\": \"1.16.1\",\n  \"type\": \"hackage\",\n  \"foundBy\": \"rust-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/my-binary\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"rust\",\n  \"cpes\": [],\n  \"purl\": \"pkg:cargo/optpkg@1.16.1\",\n  \"metadataType\": \"RustCargoPackageMetadata\",\n  \"metadata\": {}\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tassert.Equal(t, pkg.HackagePkg, p.Type)\n\t\t\t\tassert.Equal(t, reflect.TypeOf(pkg.RustBinaryAuditEntry{}).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"map-based java metadata\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"e6f845bdaa69ddb2\",\n  \"name\": \"SparseBitSet\",\n  \"version\": \"1.2\",\n  \"type\": \"java-archive\",\n  \"foundBy\": \"java-archive-cataloger\",\n  \"locations\": [],\n  \"licenses\": [],\n  \"language\": \"java\",\n  \"cpes\": [],\n  \"purl\": \"pkg:maven/com.zaxxer/SparseBitSet@1.2\",\n  \"metadataType\": \"java-archive\",\n  \"metadata\": {\n    \"virtualPath\": \"/opt/solr-9.4.1/modules/extraction/lib/SparseBitSet-1.2.jar\",\n    \"manifest\": {\n      \"main\": {\n        \"Archiver-Version\": \"Plexus Archiver\",\n        \"Build-Jdk\": \"1.8.0_73\",\n        \"Built-By\": \"lbayer\",\n        \"Created-By\": \"Apache Maven 3.5.0\",\n        \"Manifest-Version\": \"1.0\"\n      },\n      \"namedSections\": {\n        \"META-INF/mailcap\": {\n          \"SHA-256-Digest\": \"kXN4VupOQOJhduMGwxumj4ijmD/YAlz97a9Mp7CVXtk=\"\n        },\n        \"META-INF/versions/9/module-info.class\": {\n          \"SHA-256-Digest\": \"cMeIRa5l8DWPgrVWavr/6TKVBUGixVKGcu6yOTZMlKk=\"\n        }\n      }\n    }\n  }\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tmeta := p.Metadata.(pkg.JavaArchive)\n\t\t\t\tmanifest := meta.Manifest\n\t\t\t\tassert.Equal(t, \"1.8.0_73\", manifest.Main.MustGet(\"Build-Jdk\"))\n\t\t\t\trequire.Equal(t, 2, len(manifest.Sections))\n\t\t\t\tassert.Equal(t, \"META-INF/mailcap\", manifest.Sections[0].MustGet(\"Name\"))\n\t\t\t\tassert.Equal(t, \"kXN4VupOQOJhduMGwxumj4ijmD/YAlz97a9Mp7CVXtk=\", manifest.Sections[0].MustGet(\"SHA-256-Digest\"))\n\t\t\t\tassert.Equal(t, \"META-INF/versions/9/module-info.class\", manifest.Sections[1].MustGet(\"Name\"))\n\t\t\t\tassert.Equal(t, \"cMeIRa5l8DWPgrVWavr/6TKVBUGixVKGcu6yOTZMlKk=\", manifest.Sections[1].MustGet(\"SHA-256-Digest\"))\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"pre key-value golang metadata\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"e348ed25484a94c9\",\n  \"name\": \"github.com/anchore/syft\",\n  \"version\": \"v0.101.1-SNAPSHOT-4c777834\",\n  \"type\": \"go-module\",\n  \"foundBy\": \"go-module-binary-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/syft\",\n      \"layerID\": \"sha256:2274947a5f3527e48d8725a96646aefdcce3d99340c1eefb1e7c894043863c92\",\n      \"accessPath\": \"/syft\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"go\",\n  \"cpes\": [\n    \"cpe:2.3:a:anchore:syft:v0.101.1-SNAPSHOT-4c777834:*:*:*:*:*:*:*\"\n  ],\n  \"purl\": \"pkg:golang/github.com/anchore/syft@v0.101.1-SNAPSHOT-4c777834\",\n  \"metadataType\": \"go-module-buildinfo-entry\",\n  \"metadata\": {\n    \"goBuildSettings\": {\n      \"-buildmode\": \"exe\",\n      \"-compiler\": \"gc\",\n      \"-ldflags\": \"-w -s -extldflags '-static' -X main.version=0.101.1-SNAPSHOT-4c777834 -X main.gitCommit=4c777834618b2ad8ad94cd200a45d6670bc1c013 -X main.buildDate=2024-01-22T16:43:49Z -X main.gitDescription=v0.101.1-4-g4c777834 \",\n      \"CGO_ENABLED\": \"0\",\n      \"GOAMD64\": \"v1\",\n      \"GOARCH\": \"amd64\",\n      \"GOOS\": \"linux\",\n      \"vcs\": \"git\",\n      \"vcs.modified\": \"false\",\n      \"vcs.revision\": \"4c777834618b2ad8ad94cd200a45d6670bc1c013\",\n      \"vcs.time\": \"2024-01-22T16:31:41Z\"\n    },\n    \"goCompiledVersion\": \"go1.21.2\",\n    \"architecture\": \"amd64\",\n    \"mainModule\": \"github.com/anchore/syft\"\n  }\n}\n`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tbuildInfo := p.Metadata.(pkg.GolangBinaryBuildinfoEntry)\n\t\t\t\tassert.Equal(t, \"exe\", buildInfo.BuildSettings.MustGet(\"-buildmode\"))\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"conan lock with legacy options\",\n\t\t\tpackageData: []byte(`{\n  \"id\": \"75eb35307226c921\",\n  \"name\": \"boost\",\n  \"version\": \"1.75.0\",\n  \"type\": \"conan\",\n  \"foundBy\": \"conan-cataloger\",\n  \"locations\": [\n    {\n      \"path\": \"/conan.lock\",\n      \"accessPath\": \"/conan.lock\",\n      \"annotations\": {\n        \"evidence\": \"primary\"\n      }\n    }\n  ],\n  \"licenses\": [],\n  \"language\": \"c++\",\n  \"cpes\": [\n    \"cpe:2.3:a:boost:boost:1.75.0:*:*:*:*:*:*:*\"\n  ],\n  \"purl\": \"pkg:conan/boost@1.75.0\",\n  \"metadataType\": \"c-conan-lock-entry\",\n  \"metadata\": {\n    \"ref\": \"boost/1.75.0#a9c318f067216f900900e044e7af4ab1\",\n    \"package_id\": \"dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978\",\n    \"prev\": \"b9d7912e6131dfa453c725593b36c808\",\n    \"options\": {\n      \"addr2line_location\": \"/usr/bin/addr2line\",\n      \"asio_no_deprecated\": \"False\",\n      \"zstd\": \"False\"\n    },\n    \"context\": \"host\"\n  }\n}`),\n\t\t\tassert: func(p *Package) {\n\t\t\t\tmetadata := p.Metadata.(pkg.ConanV1LockEntry)\n\t\t\t\tassert.Equal(t, \"False\", metadata.Options.MustGet(\"asio_no_deprecated\"))\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tp := &Package{}\n\t\t\terr := p.UnmarshalJSON(test.packageData)\n\t\t\trequire.NoError(t, err)\n\t\t\ttest.assert(p)\n\t\t})\n\t}\n}\n\nfunc Test_unpackMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tpackageData  []byte\n\t\twantMetadata any\n\t\twantErr      require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:         \"unmarshal package metadata\",\n\t\t\twantMetadata: pkg.GolangBinaryBuildinfoEntry{},\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-module-binary-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\",\n\t\t\t\t\"metadataType\": \"GolangBinMetadata\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t  \"goCompiledVersion\": \"go1.18\",\n\t\t\t\t  \"architecture\": \"amd64\",\n\t\t\t\t  \"h1Digest\": \"h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=\"\n\t\t\t\t}\n\t\t\t}`),\n\t\t},\n\t\t{\n\t\t\tname:         \"can handle package without metadata\",\n\t\t\twantMetadata: nil,\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-mod-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\"\n\t\t\t}`),\n\t\t},\n\t\t{\n\t\t\tname:         \"can handle RpmdbMetadata\",\n\t\t\twantMetadata: pkg.RpmDBEntry{},\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"4ac699c3b8fe1835\",\n\t\t\t\t\"name\": \"acl\",\n\t\t\t\t\"version\": \"2.2.53-1.el8\",\n\t\t\t\t\"type\": \"rpm\",\n\t\t\t\t\"foundBy\": \"rpm-db-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t\t{\n\t\t\t\t\t \"path\": \"/var/lib/rpm/Packages\",\n\t\t\t\t\t \"layerID\": \"sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"language\": \"\",\n\t\t\t\t\"cpes\": [\n\t\t\t\t\t\"cpe:2.3:a:centos:acl:2.2.53-1.el8:*:*:*:*:*:*:*\",\n\t\t\t\t\t\"cpe:2.3:a:acl:acl:2.2.53-1.el8:*:*:*:*:*:*:*\"\n\t\t\t\t],\n\t\t\t\t\"purl\": \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n\t\t\t\t\"metadataType\": \"RpmdbMetadata\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"name\": \"acl\",\n\t\t\t\t\t\"version\": \"2.2.53\",\n\t\t\t\t\t\"epoch\": null,\n\t\t\t\t\t\"architecture\": \"x86_64\",\n\t\t\t\t\t\"release\": \"1.el8\",\n\t\t\t\t\t\"sourceRpm\": \"acl-2.2.53-1.el8.src.rpm\",\n\t\t\t\t\t\"size\": 205740,\n\t\t\t\t\t\"license\": \"GPLv2+\",\n\t\t\t\t\t\"vendor\": \"CentOS\",\n\t\t\t\t\t\"modularityLabel\": \"\"\n\t\t\t\t}\n\t\t\t}`),\n\t\t},\n\t\t{\n\t\t\tname:    \"bad metadata type is an error\",\n\t\t\twantErr: require.Error,\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"id\": \"8b594519bc23da50\",\n\t\t\t\t\"name\": \"gopkg.in/square/go-jose.v2\",\n\t\t\t\t\"version\": \"v2.6.0\",\n\t\t\t\t\"type\": \"go-module\",\n\t\t\t\t\"foundBy\": \"go-mod-cataloger\",\n\t\t\t\t\"locations\": [\n\t\t\t\t  {\n\t\t\t\t    \"path\": \"/Users/hal/go/bin/syft\"\n\t\t\t\t  }\n\t\t\t\t],\n\t\t\t\t\"licenses\": [],\n\t\t\t\t\"language\": \"go\",\n\t\t\t\t\"cpes\": [],\n\t\t\t\t\"purl\": \"pkg:golang/gopkg.in/square/go-jose.v2@v2.6.0\",\n\t\t\t\t\"metadataType\": \"BOGOSITY\"\n\t\t\t}`),\n\t\t},\n\t\t{\n\t\t\tname: \"unknown metadata type\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"metadataType\": \"NewMetadataType\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"thing\": \"thing-1\"\n\t\t\t\t}\n\t\t\t}`),\n\t\t\twantErr: require.Error,\n\t\t\twantMetadata: map[string]interface{}{\n\t\t\t\t\"thing\": \"thing-1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with metadata type but missing metadata\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"metadataType\": \"GolangBinMetadata\"\n\t\t\t}`),\n\t\t\twantMetadata: pkg.GolangBinaryBuildinfoEntry{},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with golang bin metadata type\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"metadataType\": \"GolangBinMetadata\"\n\t\t\t}`),\n\t\t\twantMetadata: pkg.GolangBinaryBuildinfoEntry{},\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with unknown metadata type and missing metadata\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"metadataType\": \"BadMetadata\"\n\t\t\t}`),\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"can handle package with unknown metadata type and metadata\",\n\t\t\tpackageData: []byte(`{\n\t\t\t\t\"metadataType\": \"BadMetadata\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"random\": \"thing\"\n\t\t\t\t}\n\t\t\t}`),\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tif test.wantErr == nil {\n\t\t\t\ttest.wantErr = require.NoError\n\t\t\t}\n\t\t\tp := &Package{}\n\n\t\t\tvar unpacker packageMetadataUnpacker\n\t\t\trequire.NoError(t, json.Unmarshal(test.packageData, &unpacker))\n\n\t\t\terr := unpackPkgMetadata(p, unpacker)\n\t\t\ttest.wantErr(t, err)\n\n\t\t\tif test.wantMetadata != nil {\n\t\t\t\tif p.Metadata == nil {\n\t\t\t\t\tt.Fatalf(\"expected metadata to be populated\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tassert.Equal(t, reflect.TypeOf(test.wantMetadata).Name(), reflect.TypeOf(p.Metadata).Name())\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/relationship.go",
    "content": "package model\n\n// Relationship represents a directed relationship between two artifacts in the SBOM, such as package-contains-file or package-depends-on-package.\ntype Relationship struct {\n\t// Parent is the ID of the parent artifact in this relationship.\n\tParent string `json:\"parent\"`\n\n\t// Child is the ID of the child artifact in this relationship.\n\tChild string `json:\"child\"`\n\n\t// Type is the relationship type (e.g., \"contains\", \"dependency-of\", \"ancestor-of\").\n\tType string `json:\"type\"`\n\n\t// Metadata contains additional relationship-specific metadata.\n\tMetadata interface{} `json:\"metadata,omitempty\"`\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/secrets.go",
    "content": "package model\n\nimport (\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype Secrets struct {\n\tLocation file.Coordinates    `json:\"location\"`\n\tSecrets  []file.SearchResult `json:\"secrets\"`\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/source.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// Source represents the artifact that was analyzed to generate this SBOM, such as a container image, directory, or file archive.\n// The Supplier field can be provided by users to fulfill NTIA minimum elements requirements.\ntype Source struct {\n\t// ID is a unique identifier for the analyzed source artifact.\n\tID string `json:\"id\"`\n\n\t// Name is the name of the analyzed artifact (e.g., image name, directory path).\n\tName string `json:\"name\"`\n\n\t// Version is the version of the analyzed artifact (e.g., image tag).\n\tVersion string `json:\"version\"`\n\n\t// Supplier is supplier information, which can be user-provided for NTIA minimum elements compliance.\n\tSupplier string `json:\"supplier,omitempty\"`\n\n\t// Type is the source type (e.g., \"image\", \"directory\", \"file\").\n\tType string `json:\"type\"`\n\n\t// Metadata contains additional source-specific metadata.\n\tMetadata interface{} `json:\"metadata\"`\n}\n\n// sourceUnpacker is used to unmarshal Source objects\ntype sourceUnpacker struct {\n\tID       string          `json:\"id,omitempty\"`\n\tName     string          `json:\"name\"`\n\tVersion  string          `json:\"version\"`\n\tSupplier string          `json:\"supplier,omitempty\"`\n\tType     string          `json:\"type\"`\n\tMetadata json.RawMessage `json:\"metadata\"`\n\tTarget   json.RawMessage `json:\"target\"` // pre-v9 schema support\n}\n\n// UnmarshalJSON populates a source object from JSON bytes.\nfunc (s *Source) UnmarshalJSON(b []byte) error {\n\tvar unpacker sourceUnpacker\n\terr := json.Unmarshal(b, &unpacker)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ts.Name = unpacker.Name\n\ts.Version = unpacker.Version\n\ts.Supplier = unpacker.Supplier\n\ts.Type = unpacker.Type\n\ts.ID = unpacker.ID\n\n\tif len(unpacker.Target) > 0 {\n\t\ts.Type = cleanPreSchemaV9MetadataType(s.Type)\n\t\ts.Metadata, err = extractPreSchemaV9Metadata(s.Type, unpacker.Target)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to extract pre-schema-v9 source metadata: %w\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn unpackSrcMetadata(s, unpacker)\n}\n\nfunc unpackSrcMetadata(s *Source, unpacker sourceUnpacker) error {\n\trt := sourcemetadata.ReflectTypeFromJSONName(s.Type)\n\tif rt == nil {\n\t\t// in cases where we are converting from an SBOM without any source information, we don't want this to be fatal\n\t\treturn nil\n\t}\n\n\tval := reflect.New(rt).Interface()\n\tif len(unpacker.Metadata) > 0 {\n\t\tif err := json.Unmarshal(unpacker.Metadata, val); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\ts.Metadata = reflect.ValueOf(val).Elem().Interface()\n\n\treturn nil\n}\n\nfunc cleanPreSchemaV9MetadataType(t string) string {\n\tt = strings.ToLower(t)\n\tif t == \"dir\" {\n\t\treturn \"directory\"\n\t}\n\treturn t\n}\n\nfunc extractPreSchemaV9Metadata(t string, target []byte) (interface{}, error) {\n\tswitch t {\n\tcase \"directory\", \"dir\":\n\t\tcleanTarget, err := strconv.Unquote(string(target))\n\t\tif err != nil {\n\t\t\tcleanTarget = string(target)\n\t\t}\n\n\t\treturn source.DirectoryMetadata{\n\t\t\tPath: cleanTarget,\n\t\t}, nil\n\n\tcase \"file\":\n\t\tcleanTarget, err := strconv.Unquote(string(target))\n\t\tif err != nil {\n\t\t\tcleanTarget = string(target)\n\t\t}\n\n\t\treturn source.FileMetadata{\n\t\t\tPath: cleanTarget,\n\t\t}, nil\n\n\tcase \"image\":\n\t\tvar payload source.ImageMetadata\n\t\tif err := json.Unmarshal(target, &payload); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn payload, nil\n\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported package metadata type: %+v\", t)\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/model/source_test.go",
    "content": "package model\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestSource_UnmarshalJSON(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\tcases := []struct {\n\t\tname     string\n\t\tinput    []byte\n\t\texpected *Source\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"type\": \"\",\n\t\t\t\t\"metadata\": null\n\t\t\t}`),\n\t\t\texpected: &Source{},\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"directory\",\n\t\t\t\t\"metadata\": {\"path\": \"/var/lib/foo\", \"base\":\"/nope\"}\n\t\t\t}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"/var/lib/foo\",\n\t\t\t\t\t//Base: \"/nope\", // note: should be ignored entirely\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"image\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"userInput\": \"alpine:3.10\",\n\t\t\t\t\t\"imageID\": \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\t\"manifestDigest\": \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\t\"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n\t\t\t\t\t\"tags\": [],\n\t\t\t\t\t\"imageSize\": 5576169,\n\t\t\t\t\t\"layers\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\t\t\"digest\": \"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n\t\t\t\t\t\t\t\"size\": 5576169\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"manifest\": \"ewogICAic2NoZW1hVmVyc2lvbiI6IDIsCiAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5kaXN0cmlidXRpb24ubWFuaWZlc3QudjIranNvbiIsCiAgICJjb25maWciOiB7CiAgICAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5jb250YWluZXIuaW1hZ2UudjEranNvbiIsCiAgICAgICJzaXplIjogMTQ3MiwKICAgICAgImRpZ2VzdCI6ICJzaGEyNTY6ZTdiMzAwYWVlOWY5YmYzNDMzZDMyYmM5MzA1YmZkZDIyMTgzYmViNTlkOTMzYjQ4ZDc3YWI1NmJhNTNhMTk3YSIKICAgfSwKICAgImxheWVycyI6IFsKICAgICAgewogICAgICAgICAibWVkaWFUeXBlIjogImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLAogICAgICAgICAic2l6ZSI6IDI3OTgzMzgsCiAgICAgICAgICJkaWdlc3QiOiAic2hhMjU2OjM5NmMzMTgzNzExNmFjMjkwNDU4YWZjYjkyOGY2OGI2Y2MxYzdiZGQ2OTYzZmM3MmY1MmYzNjVhMmE4OWMxYjUiCiAgICAgIH0KICAgXQp9\",\n\t\t\t\t\t\"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6ZWIyMDgwYzQ1NWU5NGMyMmFlMzViM2FlZjllMDc4YzQ5MmEwMDc5NTQxMmUwMjZlNGQ2YjQxZWY2NGJjN2RkOCIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiJmZGI3ZTgwZTMzMzllOGQwNTk5MjgyZTYwNmM5MDdhYTU4ODFlZTRjNjY4YTY4MTM2MTE5ZTZkZmFjNmNlM2E0IiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6ImZkYjdlODBlMzMzOSIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjplYjIwODBjNDU1ZTk0YzIyYWUzNWIzYWVmOWUwNzhjNDkyYTAwNzk1NDEyZTAyNmU0ZDZiNDFlZjY0YmM3ZGQ4IiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMS0wNC0xNFQxOToyMDowNS4zMzgzOTc3NjFaIiwiZG9ja2VyX3ZlcnNpb24iOiIxOS4wMy4xMiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIxLTA0LTE0VDE5OjIwOjA0Ljk4NzIxOTEyNFoiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6YzUzNzdlYWE5MjZiZjQxMmRkOGQ0YTA4YjBhMWYyMzk5Y2ZkNzA4NzQzNTMzYjBhYTAzYjUzZDE0Y2I0YmI0ZSBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMjEtMDQtMTRUMTk6MjA6MDUuMzM4Mzk3NzYxWiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgQ01EIFtcIi9iaW4vc2hcIl0iLCJlbXB0eV9sYXllciI6dHJ1ZX1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6OWZiM2FhMmY4YjgwMjNhNGJlYmJmOTJhYTU2N2NhZjg4ZTM4ZTk2OWFkYTlmMGFjMTI2NDNiMjg0NzM5MTYzNSJdfX0=\",\n\t\t\t\t\t\"repoDigests\": [\n\t\t\t\t\t\t\"index.docker.io/library/alpine@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98\"\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"alpine:3.10\",\n\t\t\t\t\tID:             \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\tManifestDigest: \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\tMediaType:      \"application/vnd.docker.distribution.manifest.v2+json\",\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t\tSize:           5576169,\n\t\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMediaType: \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\t\tDigest:    \"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n\t\t\t\t\t\t\tSize:      5576169,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRawManifest: []byte(`{\n   \"schemaVersion\": 2,\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"config\": {\n      \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n      \"size\": 1472,\n      \"digest\": \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\"\n   },\n   \"layers\": [\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 2798338,\n         \"digest\": \"sha256:396c31837116ac290458afcb928f68b6cc1c7bdd6963fc72f52f365a2a89c1b5\"\n      }\n   ]\n}`),\n\t\t\t\t\tRawConfig: []byte(`{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"Image\":\"sha256:eb2080c455e94c22ae35b3aef9e078c492a00795412e026e4d6b41ef64bc7dd8\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container\":\"fdb7e80e3339e8d0599282e606c907aa5881ee4c668a68136119e6dfac6ce3a4\",\"container_config\":{\"Hostname\":\"fdb7e80e3339\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) \",\"CMD [\\\"/bin/sh\\\"]\"],\"Image\":\"sha256:eb2080c455e94c22ae35b3aef9e078c492a00795412e026e4d6b41ef64bc7dd8\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2021-04-14T19:20:05.338397761Z\",\"docker_version\":\"19.03.12\",\"history\":[{\"created\":\"2021-04-14T19:20:04.987219124Z\",\"created_by\":\"/bin/sh -c #(nop) ADD file:c5377eaa926bf412dd8d4a08b0a1f2399cfd708743533b0aa03b53d14cb4bb4e in / \"},{\"created\":\"2021-04-14T19:20:05.338397761Z\",\"created_by\":\"/bin/sh -c #(nop)  CMD [\\\"/bin/sh\\\"]\",\"empty_layer\":true}],\"os\":\"linux\",\"rootfs\":{\"type\":\"layers\",\"diff_ids\":[\"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\"]}}`),\n\t\t\t\t\tRepoDigests: []string{\n\t\t\t\t\t\t\"index.docker.\" +\n\t\t\t\t\t\t\t\"io/library/alpine@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"file\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"path\": \"/var/lib/foo/go.mod\",\n\t\t\t\t\t\"mimeType\": \"text/plain\",\n\t\t\t\t\t\"digests\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"algorithm\": \"sha256\",\n\t\t\t\t\t\t\t\"value\": \t \"e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath: \"/var/lib/foo/go.mod\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"snap\",\n\t\t\tinput: []byte(`{\n  \"id\": \"foobar\",\n  \"name\": \"etcd\",\n  \"version\": \"3.4.36\",\n  \"type\": \"snap\",\n  \"metadata\": {\n    \"summary\": \"Distributed reliable key-value store\",\n    \"base\": \"core18\",\n    \"grade\": \"stable\",\n    \"confinement\": \"strict\",\n    \"architectures\": [\n      \"amd64\"\n    ],\n    \"digests\": [\n      {\n        \"algorithm\": \"sha256\",\n        \"value\": \"6700d789d2c38b0f7513058ddcea8f9a275e2206b4621a772eb065e12069956e\"\n      }\n    ]\n  }\n}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:      \"foobar\",\n\t\t\t\tName:    \"etcd\",\n\t\t\t\tVersion: \"3.4.36\",\n\t\t\t\tType:    \"snap\",\n\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\tSummary:     \"Distributed reliable key-value store\",\n\t\t\t\t\tBase:        \"core18\",\n\t\t\t\t\tGrade:       \"stable\",\n\t\t\t\t\tConfinement: \"strict\",\n\t\t\t\t\tArchitectures: []string{\n\t\t\t\t\t\t\"amd64\",\n\t\t\t\t\t},\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"6700d789d2c38b0f7513058ddcea8f9a275e2206b4621a772eb065e12069956e\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"oci-model\",\n\t\t\t\t\"metadata\": {\n\t\t\t\t\t\"userInput\": \"model-repo/llama:latest\",\n\t\t\t\t\t\"imageID\": \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\t\"manifestDigest\": \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\t\"mediaType\": \"application/vnd.oci.image.manifest.v1+json\",\n\t\t\t\t\t\"tags\": [],\n\t\t\t\t\t\"imageSize\": 5576169,\n\t\t\t\t\t\"layers\": [],\n\t\t\t\t\t\"repoDigests\": []\n\t\t\t\t}\n\t\t\t}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"oci-model\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"model-repo/llama:latest\",\n\t\t\t\t\tID:             \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\tManifestDigest: \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\tMediaType:      \"application/vnd.oci.image.manifest.v1+json\",\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t\tSize:           5576169,\n\t\t\t\t\tLayers:         []source.LayerMetadata{},\n\t\t\t\t\tRepoDigests:    []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"unknown source type\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"unknown-thing\",\n\t\t\t\t\"target\":\"/var/lib/foo\"\n\t\t\t}`),\n\t\t\texpected: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"unknown-thing\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tvar src Source\n\t\t\terr := json.Unmarshal(tt.input, &src)\n\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tif diff := cmp.Diff(tt.expected, &src); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected result from Source unmarshaling (-want +got)\\n%s\", diff)\n\t\t\t}\n\n\t\t\ttracker.Tested(t, tt.expected.Metadata)\n\t\t})\n\t}\n}\n\nfunc TestSource_UnmarshalJSON_PreSchemaV9(t *testing.T) {\n\tcases := []struct {\n\t\tname           string\n\t\tinput          []byte\n\t\texpectedSource *Source\n\t\terrAssertion   assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"abbreviated directory\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"dir\",\n\t\t\t\t\"target\":\"/var/lib/foo\"\n\t\t\t}`),\n\t\t\texpectedSource: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"/var/lib/foo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"directory\",\n\t\t\t\t\"target\":\"/var/lib/foo\"\n\t\t\t}`),\n\t\t\texpectedSource: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"/var/lib/foo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"image\",\n\t\t\t\t\"target\": {\n\t\t\t\t\t\"userInput\": \"alpine:3.10\",\n\t\t\t\t\t\"imageID\": \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\t\"manifestDigest\": \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\t\"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n\t\t\t\t\t\"tags\": [],\n\t\t\t\t\t\"imageSize\": 5576169,\n\t\t\t\t\t\"layers\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\t\t\"digest\": \"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n\t\t\t\t\t\t\t\"size\": 5576169\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"manifest\": \"ewogICAic2NoZW1hVmVyc2lvbiI6IDIsCiAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5kaXN0cmlidXRpb24ubWFuaWZlc3QudjIranNvbiIsCiAgICJjb25maWciOiB7CiAgICAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5jb250YWluZXIuaW1hZ2UudjEranNvbiIsCiAgICAgICJzaXplIjogMTQ3MiwKICAgICAgImRpZ2VzdCI6ICJzaGEyNTY6ZTdiMzAwYWVlOWY5YmYzNDMzZDMyYmM5MzA1YmZkZDIyMTgzYmViNTlkOTMzYjQ4ZDc3YWI1NmJhNTNhMTk3YSIKICAgfSwKICAgImxheWVycyI6IFsKICAgICAgewogICAgICAgICAibWVkaWFUeXBlIjogImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLAogICAgICAgICAic2l6ZSI6IDI3OTgzMzgsCiAgICAgICAgICJkaWdlc3QiOiAic2hhMjU2OjM5NmMzMTgzNzExNmFjMjkwNDU4YWZjYjkyOGY2OGI2Y2MxYzdiZGQ2OTYzZmM3MmY1MmYzNjVhMmE4OWMxYjUiCiAgICAgIH0KICAgXQp9\",\n\t\t\t\t\t\"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6ZWIyMDgwYzQ1NWU5NGMyMmFlMzViM2FlZjllMDc4YzQ5MmEwMDc5NTQxMmUwMjZlNGQ2YjQxZWY2NGJjN2RkOCIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiJmZGI3ZTgwZTMzMzllOGQwNTk5MjgyZTYwNmM5MDdhYTU4ODFlZTRjNjY4YTY4MTM2MTE5ZTZkZmFjNmNlM2E0IiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6ImZkYjdlODBlMzMzOSIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjplYjIwODBjNDU1ZTk0YzIyYWUzNWIzYWVmOWUwNzhjNDkyYTAwNzk1NDEyZTAyNmU0ZDZiNDFlZjY0YmM3ZGQ4IiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMS0wNC0xNFQxOToyMDowNS4zMzgzOTc3NjFaIiwiZG9ja2VyX3ZlcnNpb24iOiIxOS4wMy4xMiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIxLTA0LTE0VDE5OjIwOjA0Ljk4NzIxOTEyNFoiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6YzUzNzdlYWE5MjZiZjQxMmRkOGQ0YTA4YjBhMWYyMzk5Y2ZkNzA4NzQzNTMzYjBhYTAzYjUzZDE0Y2I0YmI0ZSBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMjEtMDQtMTRUMTk6MjA6MDUuMzM4Mzk3NzYxWiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgQ01EIFtcIi9iaW4vc2hcIl0iLCJlbXB0eV9sYXllciI6dHJ1ZX1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6OWZiM2FhMmY4YjgwMjNhNGJlYmJmOTJhYTU2N2NhZjg4ZTM4ZTk2OWFkYTlmMGFjMTI2NDNiMjg0NzM5MTYzNSJdfX0=\",\n\t\t\t\t\t\"repoDigests\": [\n\t\t\t\t\t\t\"index.docker.io/library/alpine@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98\"\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}`),\n\t\t\texpectedSource: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"alpine:3.10\",\n\t\t\t\t\tID:             \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\",\n\t\t\t\t\tManifestDigest: \"sha256:e515aad2ed234a5072c4d2ef86a1cb77d5bfe4b11aa865d9214875734c4eeb3c\",\n\t\t\t\t\tMediaType:      \"application/vnd.docker.distribution.manifest.v2+json\",\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t\tSize:           5576169,\n\t\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMediaType: \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n\t\t\t\t\t\t\tDigest:    \"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\",\n\t\t\t\t\t\t\tSize:      5576169,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRawManifest: []byte(`{\n   \"schemaVersion\": 2,\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"config\": {\n      \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n      \"size\": 1472,\n      \"digest\": \"sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a\"\n   },\n   \"layers\": [\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 2798338,\n         \"digest\": \"sha256:396c31837116ac290458afcb928f68b6cc1c7bdd6963fc72f52f365a2a89c1b5\"\n      }\n   ]\n}`),\n\t\t\t\t\tRawConfig: []byte(`{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"Image\":\"sha256:eb2080c455e94c22ae35b3aef9e078c492a00795412e026e4d6b41ef64bc7dd8\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container\":\"fdb7e80e3339e8d0599282e606c907aa5881ee4c668a68136119e6dfac6ce3a4\",\"container_config\":{\"Hostname\":\"fdb7e80e3339\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) \",\"CMD [\\\"/bin/sh\\\"]\"],\"Image\":\"sha256:eb2080c455e94c22ae35b3aef9e078c492a00795412e026e4d6b41ef64bc7dd8\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2021-04-14T19:20:05.338397761Z\",\"docker_version\":\"19.03.12\",\"history\":[{\"created\":\"2021-04-14T19:20:04.987219124Z\",\"created_by\":\"/bin/sh -c #(nop) ADD file:c5377eaa926bf412dd8d4a08b0a1f2399cfd708743533b0aa03b53d14cb4bb4e in / \"},{\"created\":\"2021-04-14T19:20:05.338397761Z\",\"created_by\":\"/bin/sh -c #(nop)  CMD [\\\"/bin/sh\\\"]\",\"empty_layer\":true}],\"os\":\"linux\",\"rootfs\":{\"type\":\"layers\",\"diff_ids\":[\"sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635\"]}}`),\n\t\t\t\t\tRepoDigests: []string{\n\t\t\t\t\t\t\"index.docker.\" +\n\t\t\t\t\t\t\t\"io/library/alpine@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"file\",\n\t\t\t\t\"target\":\"/var/lib/foo/go.mod\"\n\t\t\t}`),\n\t\t\texpectedSource: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath: \"/var/lib/foo/go.mod\",\n\t\t\t\t},\n\t\t\t},\n\t\t\terrAssertion: assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"unknown source type\",\n\t\t\tinput: []byte(`{\n\t\t\t\t\"id\": \"foobar\",\n\t\t\t\t\"type\": \"unknown-thing\",\n\t\t\t\t\"target\":\"/var/lib/foo\"\n\t\t\t}`),\n\t\t\texpectedSource: &Source{\n\t\t\t\tID:   \"foobar\",\n\t\t\t\tType: \"unknown-thing\",\n\t\t\t},\n\t\t\terrAssertion: assert.Error,\n\t\t},\n\t}\n\n\tfor _, testCase := range cases {\n\t\tt.Run(testCase.name, func(t *testing.T) {\n\t\t\tsrc := new(Source)\n\n\t\t\terr := json.Unmarshal(testCase.input, src)\n\n\t\t\ttestCase.errAssertion(t, err)\n\t\t\tif diff := cmp.Diff(testCase.expectedSource, src); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected result from Source unmarshaling (-want +got)\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/schema_test.go",
    "content": "package syftjson\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/iancoleman/strcase\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n)\n\ntype schema struct {\n\tSchema string                `json:\"$schema\"`\n\tID     string                `json:\"$id\"`\n\tRef    string                `json:\"$ref\"`\n\tDefs   map[string]properties `json:\"$defs\"`\n}\n\ntype properties struct {\n\tProperties map[string]any `json:\"properties\"`\n\tType       string         `json:\"type\"`\n\tRequired   []string       `json:\"required\"`\n}\n\nfunc (p properties) fields() []string {\n\tvar result []string\n\n\tfor k := range p.Properties {\n\t\tresult = append(result, k)\n\t}\n\treturn result\n}\n\nfunc Test_JSONSchemaConventions(t *testing.T) {\n\t// read schema/json/schema-latest.json\n\t// look at all attributes and ensure that all fields are camelCase\n\t// we want to strictly follow https://google.github.io/styleguide/javaguide.html#s5.3-camel-case\n\t//\n\t// > Convert the phrase to plain ASCII and remove any apostrophes. For example, \"Müller's algorithm\" might become \"Muellers algorithm\".\n\t// > Divide this result into words, splitting on spaces and any remaining punctuation (typically hyphens).\n\t// > Recommended: if any word already has a conventional camel-case appearance in common usage, split this into its constituent parts (e.g., \"AdWords\" becomes \"ad words\"). Note that a word such as \"iOS\" is not really in camel case per se; it defies any convention, so this recommendation does not apply.\n\t// > Now lowercase everything (including acronyms), then uppercase only the first character of:\n\t// > ... each word, to yield upper camel case, or\n\t// > ... each word except the first, to yield lower camel case\n\t// > Finally, join all the words into a single identifier.\n\t//\n\t// This means that acronyms should be treated as words (e.g. \"HttpServer\" not \"HTTPServer\")\n\n\troot, err := packagemetadata.RepoRoot()\n\trequire.NoError(t, err)\n\n\tcontents, err := os.ReadFile(filepath.Join(root, \"schema\", \"json\", \"schema-latest.json\"))\n\trequire.NoError(t, err)\n\n\tvar s schema\n\trequire.NoError(t, json.Unmarshal(contents, &s))\n\n\trequire.NotEmpty(t, s.Defs)\n\n\tfor name, def := range s.Defs {\n\t\tcheckAndConvertFields(t, name, def.fields())\n\t}\n}\n\nfunc checkAndConvertFields(t *testing.T, path string, properties []string) {\n\tfor _, fieldName := range properties {\n\t\tif pass, exp := isFollowingConvention(path, fieldName); !pass {\n\t\t\tt.Logf(\"%s: has non camel case field: %q (expected %q)\", path, fieldName, exp)\n\t\t}\n\n\t}\n}\n\nfunc isFollowingConvention(path, fieldName string) (bool, string) {\n\texp := strcase.ToLowerCamel(fieldName)\n\tresult := exp == fieldName\n\n\texception := func(exceptions ...string) (bool, string) {\n\t\tfor _, e := range exceptions {\n\t\t\tif e == fieldName {\n\t\t\t\treturn true, fieldName\n\t\t\t}\n\t\t}\n\t\treturn result, exp\n\t}\n\n\t// add exceptions as needed... these are grandfathered in and will be addressed in a future breaking schema change\n\t// ideally in the future there will be no exceptions to the camel case convention for fields\n\tswitch path {\n\tcase \"Coordinates\", \"Location\":\n\t\treturn exception(\"layerID\")\n\tcase \"MicrosoftKbPatch\":\n\t\treturn exception(\"product_id\")\n\tcase \"HaskellHackageStackLockEntry\":\n\t\treturn exception(\"snapshotURL\")\n\tcase \"LinuxRelease\":\n\t\treturn exception(\"imageID\", \"supportURL\", \"privacyPolicyURL\", \"versionID\", \"variantID\", \"homeURL\", \"buildID\", \"bugReportURL\")\n\tcase \"CConanLockV2Entry\":\n\t\treturn exception(\"packageID\")\n\tcase \"CConanInfoEntry\":\n\t\treturn exception(\"package_id\")\n\tcase \"PhpComposerInstalledEntry\", \"PhpComposerLockEntry\":\n\t\treturn exception(\"notification-url\", \"require-dev\")\n\tcase \"LinuxKernelArchive\":\n\t\treturn exception(\"rwRootFS\")\n\tcase \"CConanLockEntry\":\n\t\treturn exception(\"build_requires\", \"py_requires\", \"package_id\")\n\tcase \"FileMetadataEntry\":\n\t\treturn exception(\"userID\", \"groupID\")\n\tcase \"DartPubspecLockEntry\":\n\t\treturn exception(\"hosted_url\", \"vcs_url\")\n\tcase \"ELFSecurityFeatures\":\n\t\treturn exception(\"relRO\")\n\t}\n\treturn result, exp\n}\n"
  },
  {
    "path": "syft/format/syftjson/testdata/identify/11.0.0.json",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"2ff71a67fb024c86\",\n   \"name\": \"github.com/wagoodman/go-partybus\",\n   \"version\": \"v0.0.0-20230516145632-8ccac152c651\",\n   \"type\": \"go-module\",\n   \"foundBy\": \"go-module-file-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/go.mod\",\n     \"annotations\": {\n      \"evidence\": \"primary\"\n     }\n    }\n   ],\n   \"licenses\": [],\n   \"language\": \"go\",\n   \"cpes\": [\n    \"cpe:2.3:a:wagoodman:go-partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:wagoodman:go_partybus:v0.0.0-20230516145632-8ccac152c651:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:golang/github.com/wagoodman/go-partybus@v0.0.0-20230516145632-8ccac152c651\",\n   \"metadataType\": \"GolangModMetadata\",\n   \"metadata\": {}\n  }\n ],\n \"artifactRelationships\": [\n  {\n   \"parent\": \"0bc762d3cbc1598aacb33550d32b58cf8a6f6c4b639a8520f1a8987a6747c288\",\n   \"child\": \"2ff71a67fb024c86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2ff71a67fb024c86\",\n   \"child\": \"3fc5a8d3d86e9790\",\n   \"type\": \"evident-by\"\n  }\n ],\n \"files\": [\n  {\n   \"id\": \"3fc5a8d3d86e9790\",\n   \"location\": {\n    \"path\": \"/go.mod\"\n   }\n  }\n ],\n \"source\": {\n  \"id\": \"0bc762d3cbc1598aacb33550d32b58cf8a6f6c4b639a8520f1a8987a6747c288\",\n  \"name\": \"go.mod\",\n  \"version\": \"sha256:sha256:dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\",\n  \"type\": \"file\",\n  \"metadata\": {\n   \"path\": \".tmp/go.mod\",\n   \"digests\": [\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"dc333f342905248a52e424d8dfd061251d01867d01a4f9d7397144a775ff9ebd\"\n    }\n   ],\n   \"mimeType\": \"text/plain\"\n  }\n },\n \"distro\": {},\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"0.91.0\",\n  \"configuration\": {\n   \"catalogers\": null,\n   \"package\": {\n    \"cataloger\": {\n     \"enabled\": true,\n     \"scope\": \"Squashed\"\n    },\n    \"search-unindexed-archives\": false,\n    \"search-indexed-archives\": true\n   },\n   \"golang\": {\n    \"search-local-mod-cache-licenses\": false,\n    \"local-mod-cache-dir\": \"\",\n    \"search-remote-licenses\": false,\n    \"proxy\": \"\",\n    \"no-proxy\": \"\"\n   },\n   \"linux-kernel\": {\n    \"catalog-modules\": true\n   },\n   \"python\": {\n    \"guess-unpinned-requirements\": false\n   },\n   \"file-metadata\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"digests\": [\n     \"sha256\"\n    ]\n   },\n   \"file-classification\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    }\n   },\n   \"file-contents\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"skip-files-above-size\": 1048576,\n    \"globs\": null\n   },\n   \"secrets\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"AllLayers\"\n    },\n    \"additional-patterns\": null,\n    \"exclude-pattern-names\": null,\n    \"reveal-values\": false,\n    \"skip-files-above-size\": 1048576\n   },\n   \"registry\": {\n    \"insecure-skip-tls-verify\": false,\n    \"insecure-use-http\": false,\n    \"auth\": null,\n    \"ca-cert\": \"\"\n   },\n   \"exclude\": [],\n   \"platform\": \"\",\n   \"name\": \"\",\n   \"source\": {\n    \"name\": \"\",\n    \"version\": \"\",\n    \"file\": {\n     \"digests\": [\n      \"sha256\"\n     ]\n    }\n   },\n   \"parallelism\": 1,\n   \"default-image-pull-source\": \"\",\n   \"base-path\": \"\",\n   \"exclude-binary-overlap-by-ownership\": true\n  }\n },\n \"schema\": {\n  \"version\": \"11.0.0\",\n  \"url\": \"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-11.0.0.json\"\n }\n}\n"
  },
  {
    "path": "syft/format/syftjson/testdata/image-alpine/Dockerfile",
    "content": "FROM alpine:3.18.4@sha256:48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86\n"
  },
  {
    "path": "syft/format/syftjson/testdata/snapshot/TestDirectoryEncoder.golden",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"f04d218ff5ff50db\",\n   \"name\": \"package-1\",\n   \"version\": \"1.0.1\",\n   \"type\": \"python\",\n   \"foundBy\": \"the-cataloger-1\",\n   \"locations\": [\n    {\n     \"path\": \"/some/path/pkg1\",\n     \"accessPath\": \"/some/path/pkg1\"\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": []\n    }\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    }\n   ],\n   \"purl\": \"a-purl-2\",\n   \"metadataType\": \"python-package\",\n   \"metadata\": {\n    \"name\": \"package-1\",\n    \"version\": \"1.0.1\",\n    \"author\": \"\",\n    \"authorEmail\": \"\",\n    \"platform\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/some/path/pkg1/dependencies/foo\"\n     }\n    ],\n    \"sitePackagesRootPath\": \"\"\n   }\n  },\n  {\n   \"id\": \"39392bb5e270f669\",\n   \"name\": \"package-2\",\n   \"version\": \"2.0.1\",\n   \"type\": \"deb\",\n   \"foundBy\": \"the-cataloger-2\",\n   \"locations\": [\n    {\n     \"path\": \"/some/path/pkg1\",\n     \"accessPath\": \"/some/path/pkg1\"\n    }\n   ],\n   \"licenses\": [],\n   \"language\": \"\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\"\n    }\n   ],\n   \"purl\": \"pkg:deb/debian/package-2@2.0.1\",\n   \"metadataType\": \"dpkg-db-entry\",\n   \"metadata\": {\n    \"package\": \"package-2\",\n    \"source\": \"\",\n    \"version\": \"2.0.1\",\n    \"sourceVersion\": \"\",\n    \"architecture\": \"\",\n    \"maintainer\": \"\",\n    \"installedSize\": 0,\n    \"files\": null\n   }\n  }\n ],\n \"artifactRelationships\": [],\n \"source\": {\n  \"id\": \"d1563248892cd59af469f406eee907c76fa4f9041f5410d45b93aef903bc4216\",\n  \"name\": \"some/path\",\n  \"version\": \"\",\n  \"type\": \"directory\",\n  \"metadata\": {\n   \"path\": \"redacted/some/path\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"debian\",\n  \"name\": \"debian\",\n  \"id\": \"debian\",\n  \"idLike\": [\n   \"like!\"\n  ],\n  \"version\": \"1.2.3\",\n  \"versionID\": \"1.2.3\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"v0.42.0-bogus\",\n  \"configuration\": {\n   \"config-key\": \"config-value\"\n  }\n }\n}\n"
  },
  {
    "path": "syft/format/syftjson/testdata/snapshot/TestEncodeFullJSONDocument.golden",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"951845d9a8d6b5b2\",\n   \"name\": \"package-1\",\n   \"version\": \"1.0.1\",\n   \"type\": \"python\",\n   \"foundBy\": \"the-cataloger-1\",\n   \"locations\": [\n    {\n     \"path\": \"/a/place/a\",\n     \"accessPath\": \"/a/place/a\"\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": []\n    }\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n     \"source\": \"nvd-cpe-dictionary\"\n    }\n   ],\n   \"purl\": \"a-purl-1\",\n   \"metadataType\": \"python-package\",\n   \"metadata\": {\n    \"name\": \"package-1\",\n    \"version\": \"1.0.1\",\n    \"author\": \"\",\n    \"authorEmail\": \"\",\n    \"platform\": \"\",\n    \"sitePackagesRootPath\": \"\"\n   }\n  },\n  {\n   \"id\": \"fa4ec37eccd65756\",\n   \"name\": \"package-2\",\n   \"version\": \"2.0.1\",\n   \"type\": \"deb\",\n   \"foundBy\": \"the-cataloger-2\",\n   \"locations\": [\n    {\n     \"path\": \"/b/place/b\",\n     \"accessPath\": \"/b/place/b\"\n    }\n   ],\n   \"licenses\": [],\n   \"language\": \"\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n     \"source\": \"syft-generated\"\n    }\n   ],\n   \"purl\": \"a-purl-2\",\n   \"metadataType\": \"dpkg-db-entry\",\n   \"metadata\": {\n    \"package\": \"package-2\",\n    \"source\": \"\",\n    \"version\": \"2.0.1\",\n    \"sourceVersion\": \"\",\n    \"architecture\": \"\",\n    \"maintainer\": \"\",\n    \"installedSize\": 0,\n    \"files\": []\n   }\n  }\n ],\n \"artifactRelationships\": [\n  {\n   \"parent\": \"\",\n   \"child\": \"\",\n   \"type\": \"ownership-by-file-overlap\",\n   \"metadata\": {\n    \"file\": \"path\"\n   }\n  }\n ],\n \"files\": [\n  {\n   \"id\": \"913b4592e2c2ebdf\",\n   \"location\": {\n    \"path\": \"/a/place\"\n   },\n   \"metadata\": {\n    \"mode\": 775,\n    \"type\": \"Directory\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"\",\n    \"size\": 0\n   }\n  },\n  {\n   \"id\": \"0e7c88bd18e11b0b\",\n   \"location\": {\n    \"path\": \"/a/place/a\"\n   },\n   \"metadata\": {\n    \"mode\": 775,\n    \"type\": \"RegularFile\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"\",\n    \"size\": 0\n   },\n   \"contents\": \"the-contents\",\n   \"digests\": [\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"366a3f5653e34673b875891b021647440d0127c2ef041e3b1a22da2a7d4f3703\"\n    }\n   ]\n  },\n  {\n   \"id\": \"5c3dc6885f48b5a1\",\n   \"location\": {\n    \"path\": \"/b\"\n   },\n   \"metadata\": {\n    \"mode\": 775,\n    \"type\": \"SymbolicLink\",\n    \"linkDestination\": \"/c\",\n    \"userID\": 0,\n    \"groupID\": 0,\n    \"mimeType\": \"\",\n    \"size\": 0\n   }\n  },\n  {\n   \"id\": \"799d2f12da0bcec4\",\n   \"location\": {\n    \"path\": \"/b/place/b\"\n   },\n   \"metadata\": {\n    \"mode\": 644,\n    \"type\": \"RegularFile\",\n    \"userID\": 1,\n    \"groupID\": 2,\n    \"mimeType\": \"\",\n    \"size\": 0\n   },\n   \"digests\": [\n    {\n     \"algorithm\": \"sha256\",\n     \"value\": \"1b3722da2a7d90d033b87581a2a3f12021647445653e34666ef041e3b4f3707c\"\n    }\n   ]\n  }\n ],\n \"source\": {\n  \"id\": \"c2b46b4eb06296933b7cf0722683964e9ecbd93265b9ef6ae9642e3952afbba0\",\n  \"name\": \"\",\n  \"version\": \"\",\n  \"type\": \"image\",\n  \"metadata\": {\n   \"userInput\": \"user-image-input\",\n   \"imageID\": \"sha256:c2b46b4eb06296933b7cf0722683964e9ecbd93265b9ef6ae9642e3952afbba0\",\n   \"manifestDigest\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"stereoscope-fixture-image-simple:85066c51088bdd274f7a89e99e00490f666c49e72ffc955707cd6e18f0e22c5b\"\n   ],\n   \"imageSize\": 38,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:3de16c5b8659a2e8d888b8ded8427be7a5686a3c8c4e4dd30de20f362827285b\",\n     \"size\": 22\n    },\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:366a3f5653e34673b875891b021647440d0127c2ef041e3b1a22da2a7d4f3703\",\n     \"size\": 16\n    }\n   ],\n   \"manifest\": \"ZXlKelkyaGxiV0ZXWlhKemFXOXVJam95TENKdFpXUnBZVlI1Y0dVaU9pSmguLi4=\",\n   \"config\": \"ZXlKaGNtTm9hWFJsWTNSMWNtVWlPaUpoYldRMk5DSXNJbU52Ym1acC4uLg==\",\n   \"repoDigests\": [],\n   \"architecture\": \"\",\n   \"os\": \"\"\n  }\n },\n \"distro\": {\n  \"id\": \"redhat\",\n  \"idLike\": [\n   \"rhel\"\n  ],\n  \"version\": \"7\",\n  \"versionID\": \"7\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"v0.42.0-bogus\",\n  \"configuration\": {\n   \"config-key\": \"config-value\"\n  }\n }\n}\n"
  },
  {
    "path": "syft/format/syftjson/testdata/snapshot/TestImageEncoder.golden",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"2f52f617f1548337\",\n   \"name\": \"package-1\",\n   \"version\": \"1.0.1\",\n   \"type\": \"python\",\n   \"foundBy\": \"the-cataloger-1\",\n   \"locations\": [\n    {\n     \"path\": \"/somefile-1.txt\",\n     \"layerID\": \"sha256:dfefe618c89b08fef0f9c7f1a2682521dddbe03d6678f4a9fb9b078381d8eb45\",\n     \"accessPath\": \"/somefile-1.txt\"\n    }\n   ],\n   \"licenses\": [\n    {\n     \"value\": \"MIT\",\n     \"spdxExpression\": \"MIT\",\n     \"type\": \"declared\",\n     \"urls\": [],\n     \"locations\": []\n    }\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:1:*:*:*:*:*:*:*\",\n     \"source\": \"syft-generated\"\n    }\n   ],\n   \"purl\": \"a-purl-1\",\n   \"metadataType\": \"python-package\",\n   \"metadata\": {\n    \"name\": \"package-1\",\n    \"version\": \"1.0.1\",\n    \"author\": \"\",\n    \"authorEmail\": \"\",\n    \"platform\": \"\",\n    \"sitePackagesRootPath\": \"\"\n   }\n  },\n  {\n   \"id\": \"4b756c6f6fb127a3\",\n   \"name\": \"package-2\",\n   \"version\": \"2.0.1\",\n   \"type\": \"deb\",\n   \"foundBy\": \"the-cataloger-2\",\n   \"locations\": [\n    {\n     \"path\": \"/somefile-2.txt\",\n     \"layerID\": \"sha256:38ddc2847fb6bcafd7401b4bf27c10014b5d60e2400bc188890c7cb7cdd7cd6c\",\n     \"accessPath\": \"/somefile-2.txt\"\n    }\n   ],\n   \"licenses\": [],\n   \"language\": \"\",\n   \"cpes\": [\n    {\n     \"cpe\": \"cpe:2.3:*:some:package:2:*:*:*:*:*:*:*\",\n     \"source\": \"nvd-cpe-dictionary\"\n    }\n   ],\n   \"purl\": \"pkg:deb/debian/package-2@2.0.1\",\n   \"metadataType\": \"dpkg-db-entry\",\n   \"metadata\": {\n    \"package\": \"package-2\",\n    \"source\": \"\",\n    \"version\": \"2.0.1\",\n    \"sourceVersion\": \"\",\n    \"architecture\": \"\",\n    \"maintainer\": \"\",\n    \"installedSize\": 0,\n    \"files\": null\n   }\n  }\n ],\n \"artifactRelationships\": [],\n \"source\": {\n  \"id\": \"62d3f24eca2930d1ebfe6ee78ef47964fd8dc624b2e22886275facf322d1720a\",\n  \"name\": \"user-image-input\",\n  \"version\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n  \"type\": \"image\",\n  \"metadata\": {\n   \"userInput\": \"user-image-input\",\n   \"imageID\": \"sha256:35a6658e24fab92eae9ec6fc252dec58986c4c007891758d4d37c7e43fbbe0c5\",\n   \"manifestDigest\": \"sha256:2731251dc34951c0e50fcc643b4c5f74922dad1a5d98f302b504cf46cd5d9368\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"stereoscope-fixture-image-simple:85066c51088bdd274f7a89e99e00490f666c49e72ffc955707cd6e18f0e22c5b\"\n   ],\n   \"imageSize\": 38,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:dfefe618c89b08fef0f9c7f1a2682521dddbe03d6678f4a9fb9b078381d8eb45\",\n     \"size\": 22\n    },\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:38ddc2847fb6bcafd7401b4bf27c10014b5d60e2400bc188890c7cb7cdd7cd6c\",\n     \"size\": 16\n    }\n   ],\n   \"manifest\": \"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjo2NTgsImRpZ2VzdCI6InNoYTI1NjozNWE2NjU4ZTI0ZmFiOTJlYWU5ZWM2ZmMyNTJkZWM1ODk4NmM0YzAwNzg5MTc1OGQ0ZDM3YzdlNDNmYmJlMGM1In0sImxheWVycyI6W3sibWVkaWFUeXBlIjoiYXBwbGljYXRpb24vdm5kLmRvY2tlci5pbWFnZS5yb290ZnMuZGlmZi50YXIuZ3ppcCIsInNpemUiOjIwNDgsImRpZ2VzdCI6InNoYTI1NjpkZmVmZTYxOGM4OWIwOGZlZjBmOWM3ZjFhMjY4MjUyMWRkZGJlMDNkNjY3OGY0YTlmYjliMDc4MzgxZDhlYjQ1In0seyJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmltYWdlLnJvb3Rmcy5kaWZmLnRhci5nemlwIiwic2l6ZSI6MjA0OCwiZGlnZXN0Ijoic2hhMjU2OjM4ZGRjMjg0N2ZiNmJjYWZkNzQwMWI0YmYyN2MxMDAxNGI1ZDYwZTI0MDBiYzE4ODg5MGM3Y2I3Y2RkN2NkNmMifV19\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiV29ya2luZ0RpciI6Ii8ifSwiY3JlYXRlZCI6IjIwMjQtMTEtMDRUMDQ6MTM6NDMuMzQwNTA3MTc1WiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDI0LTExLTA0VDA0OjEzOjQzLjMyMDg2OTk2OFoiLCJjcmVhdGVkX2J5IjoiQUREIGZpbGUtMS50eHQgL3NvbWVmaWxlLTEudHh0ICMgYnVpbGRraXQiLCJjb21tZW50IjoiYnVpbGRraXQuZG9ja2VyZmlsZS52MCJ9LHsiY3JlYXRlZCI6IjIwMjQtMTEtMDRUMDQ6MTM6NDMuMzQwNTA3MTc1WiIsImNyZWF0ZWRfYnkiOiJBREQgZmlsZS0yLnR4dCAvc29tZWZpbGUtMi50eHQgIyBidWlsZGtpdCIsImNvbW1lbnQiOiJidWlsZGtpdC5kb2NrZXJmaWxlLnYwIn1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6ZGZlZmU2MThjODliMDhmZWYwZjljN2YxYTI2ODI1MjFkZGRiZTAzZDY2NzhmNGE5ZmI5YjA3ODM4MWQ4ZWI0NSIsInNoYTI1NjozOGRkYzI4NDdmYjZiY2FmZDc0MDFiNGJmMjdjMTAwMTRiNWQ2MGUyNDAwYmMxODg4OTBjN2NiN2NkZDdjZDZjIl19fQ==\",\n   \"repoDigests\": [],\n   \"architecture\": \"\",\n   \"os\": \"\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"debian\",\n  \"name\": \"debian\",\n  \"id\": \"debian\",\n  \"idLike\": [\n   \"like!\"\n  ],\n  \"version\": \"1.2.3\",\n  \"versionID\": \"1.2.3\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"v0.42.0-bogus\",\n  \"configuration\": {\n   \"config-key\": \"config-value\"\n  }\n }\n}\n"
  },
  {
    "path": "syft/format/syftjson/to_format_model.go",
    "content": "package syftjson\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\tformatInternal \"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// MetadataType infers the metadata type value based on the pkg.Metadata payload.\nfunc MetadataType(metadata interface{}) string {\n\treturn metadataType(metadata, false)\n}\n\nfunc metadataType(metadata interface{}, legacy bool) string {\n\tif legacy {\n\t\treturn packagemetadata.JSONLegacyName(metadata)\n\t}\n\treturn packagemetadata.JSONName(metadata)\n}\n\n// ToFormatModel transforms the sbom import a format-specific model.\nfunc ToFormatModel(s sbom.SBOM, cfg EncoderConfig) model.Document {\n\tlocationSorter, coordinateSorter := formatInternal.GetLocationSorters(s)\n\n\treturn model.Document{\n\t\tArtifacts:             toPackageModels(s.Artifacts.Packages, locationSorter, cfg),\n\t\tArtifactRelationships: toRelationshipModel(s.Relationships),\n\t\tFiles:                 toFile(s, coordinateSorter),\n\t\tSource:                toSourceModel(s.Source),\n\t\tDistro:                toLinuxRelease(s.Artifacts.LinuxDistribution),\n\t\tDescriptor:            toDescriptor(s.Descriptor),\n\t\tSchema: model.Schema{\n\t\t\tVersion: internal.JSONSchemaVersion,\n\t\t\tURL:     fmt.Sprintf(\"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-%s.json\", internal.JSONSchemaVersion),\n\t\t},\n\t}\n}\n\nfunc toLinuxRelease(d *linux.Release) model.LinuxRelease {\n\tif d == nil {\n\t\treturn model.LinuxRelease{}\n\t}\n\treturn model.LinuxRelease{\n\t\tPrettyName:       d.PrettyName,\n\t\tName:             d.Name,\n\t\tID:               d.ID,\n\t\tIDLike:           d.IDLike,\n\t\tVersion:          d.Version,\n\t\tVersionID:        d.VersionID,\n\t\tVersionCodename:  d.VersionCodename,\n\t\tBuildID:          d.BuildID,\n\t\tImageID:          d.ImageID,\n\t\tImageVersion:     d.ImageVersion,\n\t\tVariant:          d.Variant,\n\t\tVariantID:        d.VariantID,\n\t\tHomeURL:          d.HomeURL,\n\t\tSupportURL:       d.SupportURL,\n\t\tBugReportURL:     d.BugReportURL,\n\t\tPrivacyPolicyURL: d.PrivacyPolicyURL,\n\t\tCPEName:          d.CPEName,\n\t\tSupportEnd:       d.SupportEnd,\n\t\tExtendedSupport:  d.ExtendedSupport,\n\t}\n}\n\nfunc toDescriptor(d sbom.Descriptor) model.Descriptor {\n\treturn model.Descriptor{\n\t\tName:          d.Name,\n\t\tVersion:       d.Version,\n\t\tConfiguration: d.Configuration,\n\t}\n}\n\nfunc toFile(s sbom.SBOM, coordinateSorter func(a, b file.Coordinates) int) []model.File {\n\tresults := make([]model.File, 0)\n\tartifacts := s.Artifacts\n\n\tfor _, coordinates := range s.AllCoordinates() {\n\t\tvar metadata *file.Metadata\n\t\tif metadataForLocation, exists := artifacts.FileMetadata[coordinates]; exists {\n\t\t\tmetadata = &metadataForLocation\n\t\t}\n\n\t\tvar digests []file.Digest\n\t\tif digestsForLocation, exists := artifacts.FileDigests[coordinates]; exists {\n\t\t\tdigests = digestsForLocation\n\t\t}\n\n\t\tvar contents string\n\t\tif contentsForLocation, exists := artifacts.FileContents[coordinates]; exists {\n\t\t\tcontents = contentsForLocation\n\t\t}\n\n\t\tvar unknowns []string\n\t\tif unknownsForLocation, exists := artifacts.Unknowns[coordinates]; exists {\n\t\t\tunknowns = unknownsForLocation\n\t\t}\n\n\t\tvar licenses []model.FileLicense\n\t\tfor _, l := range artifacts.FileLicenses[coordinates] {\n\t\t\tvar evidence *model.FileLicenseEvidence\n\t\t\tif e := l.LicenseEvidence; e != nil {\n\t\t\t\tevidence = &model.FileLicenseEvidence{\n\t\t\t\t\tConfidence: e.Confidence,\n\t\t\t\t\tOffset:     e.Offset,\n\t\t\t\t\tExtent:     e.Extent,\n\t\t\t\t}\n\t\t\t}\n\t\t\tlicenses = append(licenses, model.FileLicense{\n\t\t\t\tValue:          l.Value,\n\t\t\t\tSPDXExpression: l.SPDXExpression,\n\t\t\t\tType:           l.Type,\n\t\t\t\tEvidence:       evidence,\n\t\t\t})\n\t\t}\n\n\t\tvar executable *file.Executable\n\t\tif exec, exists := artifacts.Executables[coordinates]; exists {\n\t\t\texecutable = &exec\n\t\t}\n\n\t\tresults = append(results, model.File{\n\t\t\tID:         string(coordinates.ID()),\n\t\t\tLocation:   coordinates,\n\t\t\tMetadata:   toFileMetadataEntry(coordinates, metadata),\n\t\t\tDigests:    digests,\n\t\t\tContents:   contents,\n\t\t\tLicenses:   licenses,\n\t\t\tExecutable: executable,\n\t\t\tUnknowns:   unknowns,\n\t\t})\n\t}\n\n\t// sort to ensure we're stable across multiple runs\n\t// should order by the layer order from the container image then by real path\n\tsortFiles(results, coordinateSorter)\n\treturn results\n}\n\nfunc sortFiles(files []model.File, coordinateSorter func(a, b file.Coordinates) int) {\n\tfileSorter := func(a, b model.File) int {\n\t\treturn coordinateSorter(a.Location, b.Location)\n\t}\n\tsort.SliceStable(files, func(i, j int) bool {\n\t\treturn fileSorter(files[i], files[j]) < 0\n\t})\n}\n\nfunc toFileMetadataEntry(coordinates file.Coordinates, metadata *file.Metadata) *model.FileMetadataEntry {\n\tif metadata == nil {\n\t\treturn nil\n\t}\n\n\tvar mode int\n\tvar size int64\n\tif metadata.FileInfo != nil {\n\t\tvar err error\n\n\t\tmode, err = strconv.Atoi(fmt.Sprintf(\"%o\", metadata.Mode()))\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"invalid mode found in file catalog @ location=%+v mode=%q: %+v\", coordinates, metadata.Mode, err)\n\t\t\tmode = 0\n\t\t}\n\n\t\tsize = metadata.Size()\n\t}\n\n\treturn &model.FileMetadataEntry{\n\t\tMode:            mode,\n\t\tType:            toFileType(metadata.Type),\n\t\tLinkDestination: metadata.LinkDestination,\n\t\tUserID:          metadata.UserID,\n\t\tGroupID:         metadata.GroupID,\n\t\tMIMEType:        metadata.MIMEType,\n\t\tSize:            size,\n\t}\n}\n\nfunc toFileType(ty stereoscopeFile.Type) string {\n\tswitch ty {\n\tcase stereoscopeFile.TypeSymLink:\n\t\treturn \"SymbolicLink\"\n\tcase stereoscopeFile.TypeHardLink:\n\t\treturn \"HardLink\"\n\tcase stereoscopeFile.TypeDirectory:\n\t\treturn \"Directory\"\n\tcase stereoscopeFile.TypeSocket:\n\t\treturn \"Socket\"\n\tcase stereoscopeFile.TypeBlockDevice:\n\t\treturn \"BlockDevice\"\n\tcase stereoscopeFile.TypeCharacterDevice:\n\t\treturn \"CharacterDevice\"\n\tcase stereoscopeFile.TypeFIFO:\n\t\treturn \"FIFONode\"\n\tcase stereoscopeFile.TypeRegular:\n\t\treturn \"RegularFile\"\n\tcase stereoscopeFile.TypeIrregular:\n\t\treturn \"IrregularFile\"\n\tdefault:\n\t\treturn \"Unknown\"\n\t}\n}\n\nfunc toPackageModels(catalog *pkg.Collection, locationSorter func(a, b file.Location) int, cfg EncoderConfig) []model.Package {\n\tartifacts := make([]model.Package, 0)\n\tif catalog == nil {\n\t\treturn artifacts\n\t}\n\tfor _, p := range catalog.Sorted() {\n\t\tartifacts = append(artifacts, toPackageModel(p, locationSorter, cfg))\n\t}\n\treturn artifacts\n}\n\nfunc toLicenseModel(pkgLicenses []pkg.License, locationSorter func(a, b file.Location) int) (modelLicenses []model.License) {\n\tfor _, l := range pkgLicenses {\n\t\t// format model must have allocated collections\n\t\turls := l.URLs\n\t\tif urls == nil {\n\t\t\turls = []string{}\n\t\t}\n\n\t\tmodelLicenses = append(modelLicenses, model.License{\n\t\t\tValue:          l.Value,\n\t\t\tSPDXExpression: l.SPDXExpression,\n\t\t\tContents:       l.Contents,\n\t\t\tType:           l.Type,\n\t\t\tURLs:           urls,\n\t\t\tLocations:      toLocationsModel(l.Locations, locationSorter),\n\t\t})\n\t}\n\treturn\n}\n\n// toPackageModel crates a new Package from the given pkg.Package.\nfunc toPackageModel(p pkg.Package, locationSorter func(a, b file.Location) int, cfg EncoderConfig) model.Package {\n\tvar cpes = make([]model.CPE, len(p.CPEs))\n\tfor i, c := range p.CPEs {\n\t\tconvertedCPE := model.CPE{\n\t\t\tValue:  c.Attributes.String(),\n\t\t\tSource: c.Source.String(),\n\t\t}\n\t\tcpes[i] = convertedCPE\n\t}\n\n\t// we want to make sure all catalogers are\n\t// initializing the array; this is a good choke point for this check\n\tvar licenses = make([]model.License, 0)\n\tif !p.Licenses.Empty() {\n\t\tlicenses = toLicenseModel(p.Licenses.ToSlice(), locationSorter)\n\t}\n\n\treturn model.Package{\n\t\tPackageBasicData: model.PackageBasicData{\n\t\t\tID:        string(p.ID()),\n\t\t\tName:      p.Name,\n\t\t\tVersion:   p.Version,\n\t\t\tType:      p.Type,\n\t\t\tFoundBy:   p.FoundBy,\n\t\t\tLocations: toLocationsModel(p.Locations, locationSorter),\n\t\t\tLicenses:  licenses,\n\t\t\tLanguage:  p.Language,\n\t\t\tCPEs:      cpes,\n\t\t\tPURL:      p.PURL,\n\t\t},\n\t\tPackageCustomData: model.PackageCustomData{\n\t\t\tMetadataType: metadataType(p.Metadata, cfg.Legacy),\n\t\t\tMetadata:     p.Metadata,\n\t\t},\n\t}\n}\n\nfunc toLocationsModel(locations file.LocationSet, locationSorter func(a, b file.Location) int) []file.Location {\n\tif locations.Empty() {\n\t\treturn []file.Location{}\n\t}\n\n\treturn locations.ToSlice(locationSorter)\n}\n\nfunc toRelationshipModel(relationships []artifact.Relationship) []model.Relationship {\n\tresult := make([]model.Relationship, len(relationships))\n\tfor i, r := range relationships {\n\t\tresult[i] = model.Relationship{\n\t\t\tParent:   string(r.From.ID()),\n\t\t\tChild:    string(r.To.ID()),\n\t\t\tType:     string(r.Type),\n\t\t\tMetadata: r.Data,\n\t\t}\n\t}\n\tsort.Slice(result, func(i, j int) bool {\n\t\tif iParent, jParent := result[i].Parent, result[j].Parent; iParent != jParent {\n\t\t\treturn iParent < jParent\n\t\t}\n\t\tif iChild, jChild := result[i].Child, result[j].Child; iChild != jChild {\n\t\t\treturn iChild < jChild\n\t\t}\n\t\treturn result[i].Type < result[j].Type\n\t})\n\treturn result\n}\n\n// toSourceModel creates a new source object to be represented into JSON.\nfunc toSourceModel(src source.Description) model.Source {\n\tm := model.Source{\n\t\tID:       src.ID,\n\t\tName:     src.Name,\n\t\tVersion:  src.Version,\n\t\tSupplier: src.Supplier,\n\t\tType:     sourcemetadata.JSONName(src.Metadata),\n\t\tMetadata: src.Metadata,\n\t}\n\n\tswitch metadata := src.Metadata.(type) {\n\tcase source.ImageMetadata:\n\t\t// ensure that empty collections are not shown as null\n\t\tif metadata.RepoDigests == nil {\n\t\t\tmetadata.RepoDigests = []string{}\n\t\t}\n\t\tif metadata.Tags == nil {\n\t\t\tmetadata.Tags = []string{}\n\t\t}\n\t\tm.Metadata = metadata\n\tcase source.OCIModelMetadata:\n\t\t// ensure that empty collections are not shown as null\n\t\tif metadata.RepoDigests == nil {\n\t\t\tmetadata.RepoDigests = []string{}\n\t\t}\n\t\tif metadata.Tags == nil {\n\t\t\tmetadata.Tags = []string{}\n\t\t}\n\t\tm.Metadata = metadata\n\t}\n\n\treturn m\n}\n"
  },
  {
    "path": "syft/format/syftjson/to_format_model_test.go",
    "content": "package syftjson\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_toSourceModel_IgnoreBase(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tsrc  source.Description\n\t}{\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID: \"test-id\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// assert the model transformation is correct\n\t\t\tactual := toSourceModel(test.src)\n\n\t\t\tby, err := json.Marshal(actual)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.NotContains(t, string(by), \"some/base\")\n\t\t})\n\t}\n}\n\nfunc Test_toSourceModel(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname     string\n\t\tsrc      source.Description\n\t\texpected model.Source\n\t}{\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID:       \"test-id\",\n\t\t\t\tName:     \"some-name\",\n\t\t\t\tVersion:  \"some-version\",\n\t\t\t\tSupplier: \"optional-supplier\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:       \"test-id\",\n\t\t\t\tName:     \"some-name\",\n\t\t\t\tVersion:  \"some-version\",\n\t\t\t\tSupplier: \"optional-supplier\",\n\t\t\t\tType:     \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID:       \"test-id\",\n\t\t\t\tName:     \"some-name\",\n\t\t\t\tVersion:  \"some-version\",\n\t\t\t\tSupplier: \"optional-supplier\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:       \"test-id\",\n\t\t\t\tName:     \"some-name\",\n\t\t\t\tVersion:  \"some-version\",\n\t\t\t\tSupplier: \"optional-supplier\",\n\t\t\t\tType:     \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t\tRepoDigests:    []string{},\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"snap\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\tSummary:       \"some summary\",\n\t\t\t\t\tBase:          \"some/base\",\n\t\t\t\t\tGrade:         \"some grade\",\n\t\t\t\t\tConfinement:   \"some confinement\",\n\t\t\t\t\tArchitectures: []string{\"x86_64\", \"arm64\"},\n\t\t\t\t\tDigests:       []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"snap\",\n\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\tSummary:       \"some summary\",\n\t\t\t\t\tBase:          \"some/base\",\n\t\t\t\t\tGrade:         \"some grade\",\n\t\t\t\t\tConfinement:   \"some confinement\",\n\t\t\t\t\tArchitectures: []string{\"x86_64\", \"arm64\"},\n\t\t\t\t\tDigests:       []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:      \"test-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"oci-model\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t\tRepoDigests:    []string{},\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t// below are regression tests for when the name/version are not provided\n\t\t// historically we've hoisted up the name/version from the metadata, now it is a simple pass-through\n\t\t{\n\t\t\tname: \"directory - no name/version\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID: \"test-id\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:   \"test-id\",\n\t\t\t\tType: \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file - no name/version\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID: \"test-id\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:   \"test-id\",\n\t\t\t\tType: \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image - no name/version\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID: \"test-id\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:   \"test-id\",\n\t\t\t\tType: \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t\tRepoDigests:    []string{},\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model - no name/version\",\n\t\t\tsrc: source.Description{\n\t\t\t\tID: \"test-id\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: model.Source{\n\t\t\t\tID:   \"test-id\",\n\t\t\t\tType: \"oci-model\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t\tRepoDigests:    []string{},\n\t\t\t\t\tTags:           []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// assert the model transformation is correct\n\t\t\tactual := toSourceModel(test.src)\n\t\t\tassert.Equal(t, test.expected, actual)\n\n\t\t\t// track each scheme tested (passed or not)\n\t\t\ttracker.Tested(t, test.expected.Metadata)\n\t\t})\n\t}\n}\n\nfunc Test_toFileType(t *testing.T) {\n\n\tbadType := stereoscopeFile.Type(0x1337)\n\tvar allTypesTested []stereoscopeFile.Type\n\ttests := []struct {\n\t\tty   stereoscopeFile.Type\n\t\tname string\n\t}{\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeRegular,\n\t\t\tname: \"RegularFile\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeDirectory,\n\t\t\tname: \"Directory\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeSymLink,\n\t\t\tname: \"SymbolicLink\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeHardLink,\n\t\t\tname: \"HardLink\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeSocket,\n\t\t\tname: \"Socket\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeCharacterDevice,\n\t\t\tname: \"CharacterDevice\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeBlockDevice,\n\t\t\tname: \"BlockDevice\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeFIFO,\n\t\t\tname: \"FIFONode\",\n\t\t},\n\t\t{\n\t\t\tty:   stereoscopeFile.TypeIrregular,\n\t\t\tname: \"IrregularFile\",\n\t\t},\n\t\t{\n\t\t\tty:   badType,\n\t\t\tname: \"Unknown\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equalf(t, tt.name, toFileType(tt.ty), \"toFileType(%v)\", tt.ty)\n\t\t\tif tt.ty != badType {\n\t\t\t\tallTypesTested = append(allTypesTested, tt.ty)\n\t\t\t}\n\t\t})\n\t}\n\n\tassert.ElementsMatch(t, allTypesTested, stereoscopeFile.AllTypes(), \"not all file.Types are under test\")\n}\n\nfunc Test_toFileMetadataEntry(t *testing.T) {\n\tcoords := file.Coordinates{\n\t\tRealPath:     \"/path\",\n\t\tFileSystemID: \"x\",\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata *file.Metadata\n\t\twant     *model.FileMetadataEntry\n\t}{\n\t\t{\n\t\t\tname: \"no metadata\",\n\t\t},\n\t\t{\n\t\t\tname: \"no file info\",\n\t\t\tmetadata: &file.Metadata{\n\t\t\t\tFileInfo: nil,\n\t\t\t},\n\t\t\twant: &model.FileMetadataEntry{\n\t\t\t\tType: stereoscopeFile.TypeRegular.String(),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with file info\",\n\t\t\tmetadata: &file.Metadata{\n\t\t\t\tFileInfo: &stereoscopeFile.ManualInfo{\n\t\t\t\t\tModeValue: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: &model.FileMetadataEntry{\n\t\t\t\tMode: 1,\n\t\t\t\tType: stereoscopeFile.TypeRegular.String(),\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, toFileMetadataEntry(coords, tt.metadata))\n\t\t})\n\t}\n}\n\nfunc Test_toPackageModel_metadataType(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\tcfg  EncoderConfig\n\t\twant model.Package\n\t}{\n\t\t{\n\t\t\tname: \"empty config\",\n\t\t\tp: pkg.Package{\n\t\t\t\tMetadata: pkg.RpmDBEntry{},\n\t\t\t},\n\t\t\tcfg: EncoderConfig{},\n\t\t\twant: model.Package{\n\t\t\t\tPackageCustomData: model.PackageCustomData{\n\t\t\t\t\tMetadataType: \"rpm-db-entry\",\n\t\t\t\t\tMetadata:     pkg.RpmDBEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"legacy config\",\n\t\t\tp: pkg.Package{\n\t\t\t\tMetadata: pkg.RpmDBEntry{},\n\t\t\t},\n\t\t\tcfg: EncoderConfig{\n\t\t\t\tLegacy: true,\n\t\t\t},\n\t\t\twant: model.Package{\n\t\t\t\tPackageCustomData: model.PackageCustomData{\n\t\t\t\t\tMetadataType: \"RpmMetadata\",\n\t\t\t\t\tMetadata:     pkg.RpmDBEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif d := cmp.Diff(tt.want, toPackageModel(tt.p, file.LocationSorter(nil), tt.cfg), cmpopts.EquateEmpty()); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected package (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_toPackageModel_layerOrdering(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tp          pkg.Package\n\t\tlayerOrder []string\n\t\tcfg        EncoderConfig\n\t\twant       model.Package\n\t}{\n\t\t{\n\t\t\tname: \"with layer ordering\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"pkg-1\",\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.License{\n\t\t\t\t\tValue: \"MIT\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/lic-b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-0\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t}),\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t}),\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-0\",\n\t\t\t\t\t}),\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t},\n\t\t\tlayerOrder: []string{\n\t\t\t\t\"fsid-0\",\n\t\t\t\t\"fsid-1\",\n\t\t\t\t\"fsid-2\",\n\t\t\t\t\"fsid-3\",\n\t\t\t},\n\t\t\twant: model.Package{\n\t\t\t\tPackageBasicData: model.PackageBasicData{\n\t\t\t\t\tName: \"pkg-1\",\n\t\t\t\t\tLicenses: []model.License{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tValue: \"MIT\",\n\t\t\t\t\t\t\tLocations: []file.Location{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\t\t\tRealPath:     \"/lic-b\",\n\t\t\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-0\", // important!\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAccessPath: \"/lic-b\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-1\", // important!\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAccessPath: \"/lic-a\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-2\", // important!\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAccessPath: \"/lic-a\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\t\t\tRealPath:     \"/lic-a\",\n\t\t\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-3\", // important!\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAccessPath: \"/lic-a\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLocations: []file.Location{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-0\", // important!\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-1\", // important!\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-2\", // important!\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\t\t\tFileSystemID: \"fsid-3\", // important!\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif d := cmp.Diff(tt.want, toPackageModel(tt.p, file.LocationSorter(tt.layerOrder), tt.cfg), cmpopts.EquateEmpty(), cmpopts.IgnoreUnexported(file.LocationData{})); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected package (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_toLocationModel(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tlocations file.LocationSet\n\t\tlayers    []string\n\t\twant      []file.Location\n\t}{\n\t\t{\n\t\t\tname:      \"empty location set\",\n\t\t\tlocations: file.NewLocationSet(),\n\t\t\tlayers:    []string{\"fsid-1\"},\n\t\t\twant:      []file.Location{},\n\t\t},\n\t\t{\n\t\t\tname: \"nil layer order map\",\n\t\t\tlocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlayers: nil, // please don't panic!\n\t\t\twant: []file.Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tlocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t\t\"fsid-2\",\n\t\t\t\t\"fsid-3\",\n\t\t\t},\n\t\t\twant: []file.Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"same layer different paths\", // prove we can sort by path irrespective of layer\n\t\t\tlocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t},\n\t\t\twant: []file.Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"mixed layers and paths\",\n\t\t\tlocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/z\",\n\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t}),\n\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{\n\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t\t\"fsid-2\",\n\t\t\t\t\"fsid-3\",\n\t\t\t},\n\t\t\twant: []file.Location{\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/b\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/a\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/c\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\tCoordinates: file.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/z\",\n\t\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessPath: \"/z\",\n\t\t\t\t\t},\n\t\t\t\t\tLocationMetadata: file.LocationMetadata{Annotations: map[string]string{}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := toLocationsModel(tt.locations, file.LocationSorter(tt.layers))\n\t\t\tif d := cmp.Diff(tt.want, got, cmpopts.IgnoreUnexported(file.LocationData{})); d != \"\" {\n\t\t\t\tt.Errorf(\"toLocationsModel() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_sortFiles(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tfiles  []model.File\n\t\tlayers []string\n\t\twant   []model.File\n\t}{\n\t\t{\n\t\t\tname:   \"empty files slice\",\n\t\t\tfiles:  []model.File{},\n\t\t\tlayers: []string{\"fsid-1\"},\n\t\t\twant:   []model.File{},\n\t\t},\n\t\t{\n\t\t\tname: \"nil layer order map\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayers: nil,\n\t\t\twant: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"layer ordering\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t\t\"fsid-2\",\n\t\t\t\t\"fsid-3\",\n\t\t\t},\n\t\t\twant: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"same layer different paths\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t},\n\t\t\twant: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/c\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"stability test - preserve original order for equivalent items\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t},\n\t\t\twant: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-3\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"complex file metadata doesn't affect sorting\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t\tMetadata: &model.FileMetadataEntry{\n\t\t\t\t\t\tMode:     0644,\n\t\t\t\t\t\tType:     \"file\",\n\t\t\t\t\t\tUserID:   1000,\n\t\t\t\t\t\tGroupID:  1000,\n\t\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t\t\tSize:     100,\n\t\t\t\t\t},\n\t\t\t\t\tContents: \"content1\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"abc123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t\tMetadata: &model.FileMetadataEntry{\n\t\t\t\t\t\tMode:     0755,\n\t\t\t\t\t\tType:     \"directory\",\n\t\t\t\t\t\tUserID:   0,\n\t\t\t\t\t\tGroupID:  0,\n\t\t\t\t\t\tMIMEType: \"application/directory\",\n\t\t\t\t\t\tSize:     4096,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayers: []string{\n\t\t\t\t\"fsid-1\",\n\t\t\t\t\"fsid-2\",\n\t\t\t},\n\t\t\twant: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID: \"file-2\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b\",\n\t\t\t\t\t\tFileSystemID: \"fsid-1\",\n\t\t\t\t\t},\n\t\t\t\t\tMetadata: &model.FileMetadataEntry{\n\t\t\t\t\t\tMode:     0755,\n\t\t\t\t\t\tType:     \"directory\",\n\t\t\t\t\t\tUserID:   0,\n\t\t\t\t\t\tGroupID:  0,\n\t\t\t\t\t\tMIMEType: \"application/directory\",\n\t\t\t\t\t\tSize:     4096,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tID: \"file-1\",\n\t\t\t\t\tLocation: file.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/a\",\n\t\t\t\t\t\tFileSystemID: \"fsid-2\",\n\t\t\t\t\t},\n\t\t\t\t\tMetadata: &model.FileMetadataEntry{\n\t\t\t\t\t\tMode:     0644,\n\t\t\t\t\t\tType:     \"file\",\n\t\t\t\t\t\tUserID:   1000,\n\t\t\t\t\t\tGroupID:  1000,\n\t\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t\t\tSize:     100,\n\t\t\t\t\t},\n\t\t\t\t\tContents: \"content1\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"abc123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfiles := make([]model.File, len(tt.files))\n\t\t\tcopy(files, tt.files)\n\n\t\t\tsortFiles(files, file.CoordinatesSorter(tt.layers))\n\n\t\t\tif d := cmp.Diff(tt.want, files); d != \"\" {\n\t\t\t\tt.Errorf(\"sortFiles() mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/syftjson/to_syft_model.go",
    "content": "package syftjson\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\t\"math\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/internal\"\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc toSyftModel(doc model.Document) *sbom.SBOM {\n\tidAliases := make(map[string]string)\n\n\tcatalog := toSyftCatalog(doc.Artifacts, idAliases)\n\n\tfileArtifacts := toSyftFiles(doc.Files)\n\n\treturn &sbom.SBOM{\n\t\tArtifacts: sbom.Artifacts{\n\t\t\tPackages:          catalog,\n\t\t\tFileMetadata:      fileArtifacts.FileMetadata,\n\t\t\tFileDigests:       fileArtifacts.FileDigests,\n\t\t\tFileContents:      fileArtifacts.FileContents,\n\t\t\tFileLicenses:      fileArtifacts.FileLicenses,\n\t\t\tExecutables:       fileArtifacts.Executables,\n\t\t\tUnknowns:          fileArtifacts.Unknowns,\n\t\t\tLinuxDistribution: toInternalLinuxRelease(doc.Distro),\n\t\t},\n\t\tSource:        *toSyftSourceData(doc.Source),\n\t\tDescriptor:    toSyftDescriptor(doc.Descriptor),\n\t\tRelationships: warnConversionErrors(toSyftRelationships(&doc, catalog, doc.ArtifactRelationships, idAliases)),\n\t}\n}\n\nfunc warnConversionErrors[T any](converted []T, errors []error) []T {\n\terrorMessages := deduplicateErrors(errors)\n\tfor _, msg := range errorMessages {\n\t\tlog.Warn(msg)\n\t}\n\treturn converted\n}\n\nfunc deduplicateErrors(errors []error) []string {\n\terrorCounts := make(map[string]int)\n\tvar errorMessages []string\n\tfor _, e := range errors {\n\t\terrorCounts[e.Error()] = errorCounts[e.Error()] + 1\n\t}\n\tfor msg, count := range errorCounts {\n\t\terrorMessages = append(errorMessages, fmt.Sprintf(\"%q occurred %d time(s)\", msg, count))\n\t}\n\treturn errorMessages\n}\n\n//nolint:funlen\nfunc toSyftFiles(files []model.File) sbom.Artifacts {\n\tret := sbom.Artifacts{\n\t\tFileMetadata: make(map[file.Coordinates]file.Metadata),\n\t\tFileDigests:  make(map[file.Coordinates][]file.Digest),\n\t\tFileContents: make(map[file.Coordinates]string),\n\t\tFileLicenses: make(map[file.Coordinates][]file.License),\n\t\tExecutables:  make(map[file.Coordinates]file.Executable),\n\t\tUnknowns:     make(map[file.Coordinates][]string),\n\t}\n\n\tfor _, f := range files {\n\t\tcoord := f.Location\n\t\tif f.Metadata != nil {\n\t\t\tfm, err := safeFileModeConvert(f.Metadata.Mode)\n\t\t\tif err != nil {\n\t\t\t\tlog.Warnf(\"invalid mode found in file catalog @ location=%+v mode=%q: %+v\", coord, f.Metadata.Mode, err)\n\t\t\t\tfm = 0\n\t\t\t}\n\n\t\t\tret.FileMetadata[coord] = file.Metadata{\n\t\t\t\tFileInfo: stereoscopeFile.ManualInfo{\n\t\t\t\t\tNameValue: path.Base(coord.RealPath),\n\t\t\t\t\tSizeValue: f.Metadata.Size,\n\t\t\t\t\tModeValue: fm,\n\t\t\t\t},\n\t\t\t\tPath:            coord.RealPath,\n\t\t\t\tLinkDestination: f.Metadata.LinkDestination,\n\t\t\t\tUserID:          f.Metadata.UserID,\n\t\t\t\tGroupID:         f.Metadata.GroupID,\n\t\t\t\tType:            toSyftFileType(f.Metadata.Type),\n\t\t\t\tMIMEType:        f.Metadata.MIMEType,\n\t\t\t}\n\t\t}\n\n\t\tfor _, d := range f.Digests {\n\t\t\tret.FileDigests[coord] = append(ret.FileDigests[coord], file.Digest{\n\t\t\t\tAlgorithm: d.Algorithm,\n\t\t\t\tValue:     d.Value,\n\t\t\t})\n\t\t}\n\n\t\tif f.Contents != \"\" {\n\t\t\tret.FileContents[coord] = f.Contents\n\t\t}\n\n\t\tfor _, l := range f.Licenses {\n\t\t\tvar evidence *file.LicenseEvidence\n\t\t\tif e := l.Evidence; e != nil {\n\t\t\t\tevidence = &file.LicenseEvidence{\n\t\t\t\t\tConfidence: e.Confidence,\n\t\t\t\t\tOffset:     e.Offset,\n\t\t\t\t\tExtent:     e.Extent,\n\t\t\t\t}\n\t\t\t}\n\t\t\tret.FileLicenses[coord] = append(ret.FileLicenses[coord], file.License{\n\t\t\t\tValue:           l.Value,\n\t\t\t\tSPDXExpression:  l.SPDXExpression,\n\t\t\t\tType:            l.Type,\n\t\t\t\tLicenseEvidence: evidence,\n\t\t\t})\n\t\t}\n\n\t\tif f.Executable != nil {\n\t\t\tret.Executables[coord] = *f.Executable\n\t\t}\n\n\t\tif len(f.Unknowns) > 0 {\n\t\t\tret.Unknowns[coord] = f.Unknowns\n\t\t}\n\t}\n\n\treturn ret\n}\n\nfunc safeFileModeConvert(val int) (fs.FileMode, error) {\n\tmode, err := strconv.ParseInt(strconv.Itoa(val), 8, 64)\n\tif mode < 0 || mode > math.MaxUint32 {\n\t\t// value is out of the range that int32 can represent\n\t\treturn 0, fmt.Errorf(\"value %d is out of the range that int32 can represent\", val)\n\t}\n\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn os.FileMode(mode), nil\n}\n\nfunc toSyftLicenses(m []model.License) (p []pkg.License) {\n\tfor _, l := range m {\n\t\tp = append(p, pkg.License{\n\t\t\tValue:          l.Value,\n\t\t\tSPDXExpression: l.SPDXExpression,\n\t\t\tType:           l.Type,\n\t\t\tURLs:           l.URLs,\n\t\t\tLocations:      file.NewLocationSet(l.Locations...),\n\t\t\tContents:       l.Contents,\n\t\t})\n\t}\n\treturn\n}\n\nfunc toSyftFileType(ty string) stereoscopeFile.Type {\n\tswitch ty {\n\tcase \"SymbolicLink\":\n\t\treturn stereoscopeFile.TypeSymLink\n\tcase \"HardLink\":\n\t\treturn stereoscopeFile.TypeHardLink\n\tcase \"Directory\":\n\t\treturn stereoscopeFile.TypeDirectory\n\tcase \"Socket\":\n\t\treturn stereoscopeFile.TypeSocket\n\tcase \"BlockDevice\":\n\t\treturn stereoscopeFile.TypeBlockDevice\n\tcase \"CharacterDevice\":\n\t\treturn stereoscopeFile.TypeCharacterDevice\n\tcase \"FIFONode\":\n\t\treturn stereoscopeFile.TypeFIFO\n\tcase \"RegularFile\":\n\t\treturn stereoscopeFile.TypeRegular\n\tcase \"IrregularFile\":\n\t\treturn stereoscopeFile.TypeIrregular\n\tdefault:\n\t\treturn stereoscopeFile.TypeIrregular\n\t}\n}\n\nfunc toInternalLinuxRelease(d model.LinuxRelease) *linux.Release {\n\tif cmp.Equal(d, model.LinuxRelease{}) {\n\t\treturn nil\n\t}\n\treturn &linux.Release{\n\t\tPrettyName:       d.PrettyName,\n\t\tName:             d.Name,\n\t\tID:               d.ID,\n\t\tIDLike:           d.IDLike,\n\t\tVersion:          d.Version,\n\t\tVersionID:        d.VersionID,\n\t\tVersionCodename:  d.VersionCodename,\n\t\tBuildID:          d.BuildID,\n\t\tImageID:          d.ImageID,\n\t\tImageVersion:     d.ImageVersion,\n\t\tVariant:          d.Variant,\n\t\tVariantID:        d.VariantID,\n\t\tHomeURL:          d.HomeURL,\n\t\tSupportURL:       d.SupportURL,\n\t\tBugReportURL:     d.BugReportURL,\n\t\tPrivacyPolicyURL: d.PrivacyPolicyURL,\n\t\tCPEName:          d.CPEName,\n\t\tSupportEnd:       d.SupportEnd,\n\t\tExtendedSupport:  d.ExtendedSupport,\n\t}\n}\n\nfunc toSyftRelationships(doc *model.Document, catalog *pkg.Collection, relationships []model.Relationship, idAliases map[string]string) ([]artifact.Relationship, []error) {\n\tidMap := make(map[string]interface{})\n\n\tfor _, p := range catalog.Sorted() {\n\t\tidMap[string(p.ID())] = p\n\t\tlocations := p.Locations.ToSlice()\n\t\tfor _, l := range locations {\n\t\t\tidMap[string(l.ID())] = l.Coordinates\n\t\t}\n\t}\n\n\t// set source metadata in identifier map\n\tidMap[doc.Source.ID] = toSyftSource(doc.Source)\n\n\tfor _, f := range doc.Files {\n\t\tidMap[f.ID] = f.Location\n\t}\n\n\tvar out []artifact.Relationship\n\tvar conversionErrors []error\n\tfor _, r := range relationships {\n\t\tsyftRelationship, err := toSyftRelationship(idMap, r, idAliases)\n\t\tif err != nil {\n\t\t\tconversionErrors = append(conversionErrors, err)\n\t\t}\n\t\tif syftRelationship != nil {\n\t\t\tout = append(out, *syftRelationship)\n\t\t}\n\t}\n\n\treturn out, conversionErrors\n}\n\nfunc toSyftSource(s model.Source) source.Source {\n\tdescription := toSyftSourceData(s)\n\tif description == nil {\n\t\treturn nil\n\t}\n\treturn source.FromDescription(*description)\n}\n\nfunc toSyftRelationship(idMap map[string]interface{}, relationship model.Relationship, idAliases map[string]string) (*artifact.Relationship, error) {\n\tid := func(id string) string {\n\t\taliased, ok := idAliases[id]\n\t\tif ok {\n\t\t\treturn aliased\n\t\t}\n\t\treturn id\n\t}\n\n\tfrom, ok := idMap[id(relationship.Parent)].(artifact.Identifiable)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"relationship mapping from key %s is not a valid artifact.Identifiable type: %+v\", relationship.Parent, idMap[relationship.Parent])\n\t}\n\n\tto, ok := idMap[id(relationship.Child)].(artifact.Identifiable)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"relationship mapping to key %s is not a valid artifact.Identifiable type: %+v\", relationship.Child, idMap[relationship.Child])\n\t}\n\n\ttyp := artifact.RelationshipType(relationship.Type)\n\n\tswitch typ {\n\tcase artifact.OwnershipByFileOverlapRelationship, artifact.ContainsRelationship, artifact.DependencyOfRelationship, artifact.EvidentByRelationship:\n\tdefault:\n\t\tif !strings.Contains(string(typ), \"dependency-of\") {\n\t\t\treturn nil, fmt.Errorf(\"unknown relationship type: %s\", string(typ))\n\t\t}\n\t\t// lets try to stay as compatible as possible with similar relationship types without dropping the relationship\n\t\tlog.Warnf(\"assuming %q for relationship type %q\", artifact.DependencyOfRelationship, typ)\n\t\ttyp = artifact.DependencyOfRelationship\n\t}\n\treturn &artifact.Relationship{\n\t\tFrom: from,\n\t\tTo:   to,\n\t\tType: typ,\n\t\tData: relationship.Metadata,\n\t}, nil\n}\n\nfunc toSyftDescriptor(d model.Descriptor) sbom.Descriptor {\n\treturn sbom.Descriptor{\n\t\tName:          d.Name,\n\t\tVersion:       d.Version,\n\t\tConfiguration: d.Configuration,\n\t}\n}\n\nfunc toSyftSourceData(s model.Source) *source.Description {\n\treturn &source.Description{\n\t\tID:       s.ID,\n\t\tName:     s.Name,\n\t\tVersion:  s.Version,\n\t\tSupplier: s.Supplier,\n\t\tMetadata: s.Metadata,\n\t}\n}\n\nfunc toSyftCatalog(pkgs []model.Package, idAliases map[string]string) *pkg.Collection {\n\tcatalog := pkg.NewCollection()\n\tfor _, p := range pkgs {\n\t\tcatalog.Add(toSyftPackage(p, idAliases))\n\t}\n\treturn catalog\n}\n\nfunc toSyftPackage(p model.Package, idAliases map[string]string) pkg.Package {\n\tvar cpes []cpe.CPE\n\tfor _, c := range p.CPEs {\n\t\tvalue, err := cpe.New(c.Value, cpe.Source(c.Source))\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"excluding invalid Attributes %q: %v\", c, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tcpes = append(cpes, value)\n\t}\n\n\tout := pkg.Package{\n\t\tName:      p.Name,\n\t\tVersion:   p.Version,\n\t\tFoundBy:   p.FoundBy,\n\t\tLocations: file.NewLocationSet(p.Locations...),\n\t\tLicenses:  pkg.NewLicenseSet(toSyftLicenses(p.Licenses)...),\n\t\tLanguage:  p.Language,\n\t\tType:      p.Type,\n\t\tCPEs:      cpes,\n\t\tPURL:      p.PURL,\n\t\tMetadata:  p.Metadata,\n\t}\n\n\tinternal.Backfill(&out)\n\n\t// always prefer the IDs from the SBOM over derived IDs\n\tout.OverrideID(artifact.ID(p.ID))\n\n\t// this alias mapping is currently defunct, but could be useful in the future.\n\tid := string(out.ID())\n\tif id != p.ID {\n\t\tidAliases[p.ID] = id\n\t}\n\n\treturn out\n}\n"
  },
  {
    "path": "syft/format/syftjson/to_syft_model_test.go",
    "content": "package syftjson\n\nimport (\n\t\"errors\"\n\t\"io/fs\"\n\t\"math\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_toSyftSourceData(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\n\ttests := []struct {\n\t\tname     string\n\t\tsrc      model.Source\n\t\texpected *source.Description\n\t}{\n\t\t{\n\t\t\tname: \"directory\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"snap\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"snap\",\n\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\tSummary:       \"something!\",\n\t\t\t\t\tBase:          \"base!\",\n\t\t\t\t\tGrade:         \"grade!\",\n\t\t\t\t\tConfinement:   \"confined!\",\n\t\t\t\t\tArchitectures: []string{\"arch!\"},\n\t\t\t\t\tDigests:       []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest!\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.SnapMetadata{\n\t\t\t\t\tSummary:       \"something!\",\n\t\t\t\t\tBase:          \"base!\",\n\t\t\t\t\tGrade:         \"grade!\",\n\t\t\t\t\tConfinement:   \"confined!\",\n\t\t\t\t\tArchitectures: []string{\"arch!\"},\n\t\t\t\t\tDigests:       []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest!\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tType:    \"oci-model\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID:      \"the-id\",\n\t\t\t\tName:    \"some-name\",\n\t\t\t\tVersion: \"some-version\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t// below are regression tests for when the name/version are not provided\n\t\t// historically we've hoisted up the name/version from the metadata, now it is a simple pass-through\n\t\t{\n\t\t\tname: \"directory - no name/version\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:   \"the-id\",\n\t\t\t\tType: \"directory\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID: \"the-id\",\n\t\t\t\tMetadata: source.DirectoryMetadata{\n\t\t\t\t\tPath: \"some/path\",\n\t\t\t\t\tBase: \"some/base\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"file - no name/version\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:   \"the-id\",\n\t\t\t\tType: \"file\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID: \"the-id\",\n\t\t\t\tMetadata: source.FileMetadata{\n\t\t\t\t\tPath:     \"some/path\",\n\t\t\t\t\tDigests:  []file.Digest{{Algorithm: \"sha256\", Value: \"some-digest\"}},\n\t\t\t\t\tMIMEType: \"text/plain\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image - no name/version\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:   \"the-id\",\n\t\t\t\tType: \"image\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID: \"the-id\",\n\t\t\t\tMetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"oci-model - no name/version\",\n\t\t\tsrc: model.Source{\n\t\t\t\tID:   \"the-id\",\n\t\t\t\tType: \"oci-model\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &source.Description{\n\t\t\t\tID: \"the-id\",\n\t\t\t\tMetadata: source.OCIModelMetadata{\n\t\t\t\t\tUserInput:      \"user-input\",\n\t\t\t\t\tID:             \"id...\",\n\t\t\t\t\tManifestDigest: \"digest...\",\n\t\t\t\t\tMediaType:      \"type...\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// assert the model transformation is correct\n\t\t\tactual := toSyftSourceData(test.src)\n\t\t\tassert.Equal(t, test.expected, actual)\n\n\t\t\ttracker.Tested(t, test.expected.Metadata)\n\t\t})\n\t}\n}\n\nfunc Test_idsHaveChanged(t *testing.T) {\n\ts := toSyftModel(model.Document{\n\t\tSource: model.Source{\n\t\t\tType:     \"file\",\n\t\t\tMetadata: source.FileMetadata{Path: \"some/path\"},\n\t\t},\n\t\tArtifacts: []model.Package{\n\t\t\t{\n\t\t\t\tPackageBasicData: model.PackageBasicData{\n\t\t\t\t\tID:   \"1\",\n\t\t\t\t\tName: \"pkg-1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tPackageBasicData: model.PackageBasicData{\n\t\t\t\t\tID:   \"2\",\n\t\t\t\t\tName: \"pkg-2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tArtifactRelationships: []model.Relationship{\n\t\t\t{\n\t\t\t\tParent: \"1\",\n\t\t\t\tChild:  \"2\",\n\t\t\t\tType:   string(artifact.ContainsRelationship),\n\t\t\t},\n\t\t},\n\t})\n\n\trequire.Len(t, s.Relationships, 1)\n\n\tr := s.Relationships[0]\n\n\tfrom := s.Artifacts.Packages.Package(r.From.ID())\n\trequire.NotNil(t, from)\n\tassert.Equal(t, \"pkg-1\", from.Name)\n\n\tto := s.Artifacts.Packages.Package(r.To.ID())\n\trequire.NotNil(t, to)\n\tassert.Equal(t, \"pkg-2\", to.Name)\n}\n\nfunc Test_toSyftFiles(t *testing.T) {\n\tcoord := file.Coordinates{\n\t\tRealPath:     \"/somerwhere/place\",\n\t\tFileSystemID: \"abc\",\n\t}\n\n\ttests := []struct {\n\t\tname  string\n\t\tfiles []model.File\n\t\twant  sbom.Artifacts\n\t}{\n\t\t{\n\t\t\tname:  \"empty\",\n\t\t\tfiles: []model.File{},\n\t\t\twant: sbom.Artifacts{\n\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{},\n\t\t\t\tFileDigests:  map[file.Coordinates][]file.Digest{},\n\t\t\t\tExecutables:  map[file.Coordinates]file.Executable{},\n\t\t\t\tUnknowns:     make(map[file.Coordinates][]string),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"no metadata\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID:       string(coord.ID()),\n\t\t\t\t\tLocation: coord,\n\t\t\t\t\tMetadata: nil,\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExecutable: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: sbom.Artifacts{\n\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{},\n\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\tcoord: {\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExecutables: map[file.Coordinates]file.Executable{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single file\",\n\t\t\tfiles: []model.File{\n\t\t\t\t{\n\t\t\t\t\tID:       string(coord.ID()),\n\t\t\t\t\tLocation: coord,\n\t\t\t\t\tMetadata: &model.FileMetadataEntry{\n\t\t\t\t\t\tMode:            777,\n\t\t\t\t\t\tType:            \"RegularFile\",\n\t\t\t\t\t\tLinkDestination: \"\",\n\t\t\t\t\t\tUserID:          42,\n\t\t\t\t\t\tGroupID:         32,\n\t\t\t\t\t\tMIMEType:        \"text/plain\",\n\t\t\t\t\t\tSize:            92,\n\t\t\t\t\t},\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExecutable: &file.Executable{\n\t\t\t\t\t\tFormat: file.ELF,\n\t\t\t\t\t\tELFSecurityFeatures: &file.ELFSecurityFeatures{\n\t\t\t\t\t\t\tSymbolTableStripped:           false,\n\t\t\t\t\t\t\tStackCanary:                   boolRef(true),\n\t\t\t\t\t\t\tNoExecutable:                  false,\n\t\t\t\t\t\t\tRelocationReadOnly:            \"partial\",\n\t\t\t\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\t\t\t\tLlvmControlFlowIntegrity:      boolRef(true),\n\t\t\t\t\t\t\tClangFortifySource:            boolRef(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: sbom.Artifacts{\n\t\t\t\tFileMetadata: map[file.Coordinates]file.Metadata{\n\t\t\t\t\tcoord: {\n\t\t\t\t\t\tFileInfo: stereoFile.ManualInfo{\n\t\t\t\t\t\t\tNameValue: \"place\",\n\t\t\t\t\t\t\tSizeValue: 92,\n\t\t\t\t\t\t\tModeValue: 511, // 777 octal = 511 decimal\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPath:            coord.RealPath,\n\t\t\t\t\t\tLinkDestination: \"\",\n\t\t\t\t\t\tUserID:          42,\n\t\t\t\t\t\tGroupID:         32,\n\t\t\t\t\t\tType:            stereoFile.TypeRegular,\n\t\t\t\t\t\tMIMEType:        \"text/plain\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileDigests: map[file.Coordinates][]file.Digest{\n\t\t\t\t\tcoord: {\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExecutables: map[file.Coordinates]file.Executable{\n\t\t\t\t\tcoord: {\n\t\t\t\t\t\tFormat: file.ELF,\n\t\t\t\t\t\tELFSecurityFeatures: &file.ELFSecurityFeatures{\n\t\t\t\t\t\t\tSymbolTableStripped:           false,\n\t\t\t\t\t\t\tStackCanary:                   boolRef(true),\n\t\t\t\t\t\t\tNoExecutable:                  false,\n\t\t\t\t\t\t\tRelocationReadOnly:            \"partial\",\n\t\t\t\t\t\t\tPositionIndependentExecutable: false,\n\t\t\t\t\t\t\tDynamicSharedObject:           false,\n\t\t\t\t\t\t\tLlvmSafeStack:                 boolRef(false),\n\t\t\t\t\t\t\tLlvmControlFlowIntegrity:      boolRef(true),\n\t\t\t\t\t\t\tClangFortifySource:            boolRef(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttt.want.FileContents = make(map[file.Coordinates]string)\n\t\t\ttt.want.FileLicenses = make(map[file.Coordinates][]file.License)\n\t\t\ttt.want.Unknowns = make(map[file.Coordinates][]string)\n\t\t\tassert.Equal(t, tt.want, toSyftFiles(tt.files))\n\t\t})\n\t}\n}\n\nfunc boolRef(b bool) *bool {\n\treturn &b\n}\n\nfunc Test_toSyftRelationship(t *testing.T) {\n\tpackageWithId := func(id string) *pkg.Package {\n\t\tp := &pkg.Package{}\n\t\tp.OverrideID(artifact.ID(id))\n\t\treturn p\n\t}\n\tchildPackage := packageWithId(\"some-child-id\")\n\tparentPackage := packageWithId(\"some-parent-id\")\n\ttests := []struct {\n\t\tname          string\n\t\tidMap         map[string]interface{}\n\t\tidAliases     map[string]string\n\t\trelationships model.Relationship\n\t\twant          *artifact.Relationship\n\t\twantError     error\n\t}{\n\t\t{\n\t\t\tname: \"one relationship no warnings\",\n\t\t\tidMap: map[string]interface{}{\n\t\t\t\t\"some-child-id\":  childPackage,\n\t\t\t\t\"some-parent-id\": parentPackage,\n\t\t\t},\n\t\t\tidAliases: map[string]string{},\n\t\t\trelationships: model.Relationship{\n\t\t\t\tParent: \"some-parent-id\",\n\t\t\t\tChild:  \"some-child-id\",\n\t\t\t\tType:   string(artifact.ContainsRelationship),\n\t\t\t},\n\t\t\twant: &artifact.Relationship{\n\t\t\t\tTo:   childPackage,\n\t\t\t\tFrom: parentPackage,\n\t\t\t\tType: artifact.ContainsRelationship,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"relationship unknown type one warning\",\n\t\t\tidMap: map[string]interface{}{\n\t\t\t\t\"some-child-id\":  childPackage,\n\t\t\t\t\"some-parent-id\": parentPackage,\n\t\t\t},\n\t\t\tidAliases: map[string]string{},\n\t\t\trelationships: model.Relationship{\n\t\t\t\tParent: \"some-parent-id\",\n\t\t\t\tChild:  \"some-child-id\",\n\t\t\t\tType:   \"some-unknown-relationship-type\",\n\t\t\t},\n\t\t\twantError: errors.New(\n\t\t\t\t\"unknown relationship type: some-unknown-relationship-type\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tname: \"relationship missing child ID one warning\",\n\t\t\tidMap: map[string]interface{}{\n\t\t\t\t\"some-parent-id\": parentPackage,\n\t\t\t},\n\t\t\tidAliases: map[string]string{},\n\t\t\trelationships: model.Relationship{\n\t\t\t\tParent: \"some-parent-id\",\n\t\t\t\tChild:  \"some-child-id\",\n\t\t\t\tType:   string(artifact.ContainsRelationship),\n\t\t\t},\n\t\t\twantError: errors.New(\n\t\t\t\t\"relationship mapping to key some-child-id is not a valid artifact.Identifiable type: <nil>\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tname: \"relationship missing parent ID one warning\",\n\t\t\tidMap: map[string]interface{}{\n\t\t\t\t\"some-child-id\": childPackage,\n\t\t\t},\n\t\t\tidAliases: map[string]string{},\n\t\t\trelationships: model.Relationship{\n\t\t\t\tParent: \"some-parent-id\",\n\t\t\t\tChild:  \"some-child-id\",\n\t\t\t\tType:   string(artifact.ContainsRelationship),\n\t\t\t},\n\t\t\twantError: errors.New(\"relationship mapping from key some-parent-id is not a valid artifact.Identifiable type: <nil>\"),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, gotErr := toSyftRelationship(tt.idMap, tt.relationships, tt.idAliases)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t\tassert.Equal(t, tt.wantError, gotErr)\n\t\t})\n\t}\n}\n\nfunc Test_deduplicateErrors(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\terrors []error\n\t\twant   []string\n\t}{\n\t\t{\n\t\t\tname: \"no errors, nil slice\",\n\t\t},\n\t\t{\n\t\t\tname: \"deduplicates errors\",\n\t\t\terrors: []error{\n\t\t\t\terrors.New(\"some error\"),\n\t\t\t\terrors.New(\"some error\"),\n\t\t\t},\n\t\t\twant: []string{\n\t\t\t\t`\"some error\" occurred 2 time(s)`,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := deduplicateErrors(tt.errors)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_safeFileModeConvert(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tval     int\n\t\twant    fs.FileMode\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\t// fs.go ModePerm 511 = FileMode = 0777 // Unix permission bits :192\n\t\t\tname:    \"valid perm\",\n\t\t\tval:     777,\n\t\t\twant:    os.FileMode(511), // 777 in octal equals 511 in decimal\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"valid perm with symlink type\",\n\t\t\tval:     1000000777,                // symlink + rwxrwxrwx\n\t\t\twant:    os.FileMode(0o1000000777), // 134218239\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"outside int32 high\",\n\t\t\tval:     int(math.MaxInt32) + 1,\n\t\t\twant:    0,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"outside int32 low\",\n\t\t\tval:     int(math.MinInt32) - 1,\n\t\t\twant:    0,\n\t\t\twantErr: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, err := safeFileModeConvert(tt.val)\n\t\t\tif tt.wantErr {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tassert.Equal(t, tt.want, got)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/format/table/encoder.go",
    "content": "package table\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/olekukonko/tablewriter\"\n\t\"github.com/olekukonko/tablewriter/renderer\"\n\t\"github.com/olekukonko/tablewriter/tw\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID sbom.FormatID = \"syft-table\"\n\ntype encoder struct {\n}\n\nfunc NewFormatEncoder() sbom.FormatEncoder {\n\treturn encoder{}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"table\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tvar rows [][]string\n\n\tcolumns := []string{\"Name\", \"Version\", \"Type\"}\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\trow := []string{\n\t\t\tp.Name,\n\t\t\tp.Version,\n\t\t\tstring(p.Type),\n\t\t}\n\t\trows = append(rows, row)\n\t}\n\n\tif len(rows) == 0 {\n\t\t_, err := fmt.Fprintln(writer, \"No packages discovered\")\n\t\treturn err\n\t}\n\n\t// sort by name, version, then type\n\tsort.SliceStable(rows, func(i, j int) bool {\n\t\tfor col := 0; col < len(columns); col++ {\n\t\t\tif rows[i][col] != rows[j][col] {\n\t\t\t\treturn rows[i][col] < rows[j][col]\n\t\t\t}\n\t\t}\n\t\treturn false\n\t})\n\n\tcolumns = append(columns, \"\") // add a column for duplicate annotations\n\trows = markDuplicateRows(rows)\n\n\ttable := newTableWriter(writer, columns)\n\n\tif err := table.Bulk(rows); err != nil {\n\t\treturn fmt.Errorf(\"failed to add table rows: %w\", err)\n\t}\n\n\treturn table.Render()\n}\n\nfunc newTableWriter(writer io.Writer, columns []string) *tablewriter.Table {\n\t// Here’s a simplified diagram of a table with a header, rows, and footer:\n\t//\n\t// [Borders.Top]\n\t// | Header1 | Header2 |  (Line below header: Lines.ShowTop)\n\t// [Separators.BetweenRows]\n\t// | Row1    | Row1    |\n\t// [Separators.BetweenRows]\n\t// | Row2    | Row2    |\n\t// [Lines.ShowBottom]\n\t// | Footer1 | Footer2 |\n\t// [Borders.Bottom]\n\t//\n\t// So for example:\n\t// ┌──────┬─────┐  <- Borders.Top\n\t// │ NAME │ AGE │\n\t// ├──────┼─────┤  <- Lines.ShowTop\n\t// │ Alice│ 25  │\n\t// ├──────┼─────┤  <- Separators.BetweenRows\n\t// │ Bob  │ 30  │\n\t// ├──────┼─────┤  <- Lines.ShowBottom\n\t// │ Total│ 2   │\n\t// └──────┴─────┘  <- Borders.Bottom\n\n\treturn tablewriter.NewTable(writer,\n\t\ttablewriter.WithHeader(columns),\n\t\ttablewriter.WithHeaderAutoFormat(tw.On),\n\t\ttablewriter.WithHeaderAutoWrap(tw.WrapNone),\n\t\ttablewriter.WithHeaderAlignment(tw.AlignLeft),\n\t\ttablewriter.WithRowAutoFormat(tw.Off),\n\t\ttablewriter.WithRowAutoWrap(tw.WrapNone),\n\t\ttablewriter.WithRowAlignment(tw.AlignLeft),\n\t\ttablewriter.WithTrimSpace(tw.On),\n\t\ttablewriter.WithAutoHide(tw.On),\n\t\ttablewriter.WithRenderer(renderer.NewBlueprint()),\n\t\ttablewriter.WithBehavior(\n\t\t\ttw.Behavior{\n\t\t\t\tTrimSpace: tw.On,\n\t\t\t\tAutoHide:  tw.On,\n\t\t\t},\n\t\t),\n\t\ttablewriter.WithPadding(\n\t\t\ttw.Padding{\n\t\t\t\tLeft:   \"\",\n\t\t\t\tRight:  \"  \",\n\t\t\t\tTop:    \"\",\n\t\t\t\tBottom: \"\",\n\t\t\t},\n\t\t),\n\t\ttablewriter.WithRendition(\n\t\t\ttw.Rendition{\n\t\t\t\tSymbols: tw.NewSymbols(tw.StyleNone),\n\t\t\t\tBorders: tw.Border{\n\t\t\t\t\tLeft:   tw.Off,\n\t\t\t\t\tTop:    tw.Off,\n\t\t\t\t\tRight:  tw.Off,\n\t\t\t\t\tBottom: tw.Off,\n\t\t\t\t},\n\t\t\t\tSettings: tw.Settings{\n\t\t\t\t\tSeparators: tw.Separators{\n\t\t\t\t\t\tShowHeader:     tw.Off,\n\t\t\t\t\t\tShowFooter:     tw.Off,\n\t\t\t\t\t\tBetweenRows:    tw.Off,\n\t\t\t\t\t\tBetweenColumns: tw.Off,\n\t\t\t\t\t},\n\t\t\t\t\tLines: tw.Lines{\n\t\t\t\t\t\tShowTop:        tw.Off,\n\t\t\t\t\t\tShowBottom:     tw.Off,\n\t\t\t\t\t\tShowHeaderLine: tw.Off,\n\t\t\t\t\t\tShowFooterLine: tw.Off,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t),\n\t)\n}\n\nfunc markDuplicateRows(items [][]string) [][]string {\n\tseen := map[string]int{}\n\tvar result [][]string\n\n\tfor _, v := range items {\n\t\tkey := strings.Join(v, \"|\")\n\t\tif _, ok := seen[key]; ok {\n\t\t\t// dup!\n\t\t\tseen[key]++\n\t\t\tcontinue\n\t\t}\n\n\t\tseen[key] = 1\n\t\tresult = append(result, v)\n\t}\n\n\tstyle := lipgloss.NewStyle().Foreground(lipgloss.Color(\"#777777\"))\n\tfor i, v := range result {\n\t\tkey := strings.Join(v, \"|\")\n\t\t// var name string\n\t\tvar annotation string\n\t\tswitch seen[key] {\n\t\tcase 0, 1:\n\t\tcase 2:\n\t\t\tannotation = \"(+1 duplicate)\"\n\t\tdefault:\n\t\t\tannotation = fmt.Sprintf(\"(+%d duplicates)\", seen[key]-1)\n\t\t}\n\n\t\tannotation = style.Render(annotation)\n\t\tresult[i] = append(v, annotation)\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "syft/format/table/encoder_test.go",
    "content": "package table\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-table\", false, \"update the *.golden files for table format\")\n\nfunc TestTableEncoder(t *testing.T) {\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, t.TempDir()),\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n\nfunc Test_markDuplicateRows(t *testing.T) {\n\tdata := [][]string{\n\t\t{\"1\", \"2\", \"3\"},\n\t\t{\"a\", \"b\", \"c\"},\n\t\t{\"1\", \"2\", \"3\"},\n\t\t{\"a\", \"b\", \"c\"},\n\t\t{\"1\", \"2\", \"3\"},\n\t\t{\"4\", \"5\", \"6\"},\n\t\t{\"1\", \"2\", \"1\"},\n\t}\n\n\texpected := [][]string{\n\t\t{\"1\", \"2\", \"3\", \"(+2 duplicates)\"},\n\t\t{\"a\", \"b\", \"c\", \"(+1 duplicate)\"},\n\t\t{\"4\", \"5\", \"6\", \"\"},\n\t\t{\"1\", \"2\", \"1\", \"\"},\n\t}\n\n\tactual := markDuplicateRows(data)\n\n\tif diffs := deep.Equal(expected, actual); len(diffs) > 0 {\n\t\tt.Errorf(\"found diffs!\")\n\t\tfor _, d := range diffs {\n\t\t\tt.Errorf(\"   diff: %+v\", d)\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "syft/format/table/testdata/snapshot/TestTableEncoder.golden",
    "content": "NAME       VERSION  TYPE    \npackage-1  1.0.1    python  \npackage-2  2.0.1    deb     \n"
  },
  {
    "path": "syft/format/template/encoder.go",
    "content": "package template\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n\t\"text/template\"\n\n\t\"github.com/Masterminds/sprig/v3\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/syft/format/syftjson\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nconst ID sbom.FormatID = \"template\"\n\ntype EncoderConfig struct {\n\tTemplatePath string\n\tLegacy       bool\n\tsyftjson.EncoderConfig\n}\n\ntype encoder struct {\n\tcfg     EncoderConfig\n\tfuncMap template.FuncMap\n}\n\nfunc NewFormatEncoder(cfg EncoderConfig) (sbom.FormatEncoder, error) {\n\t// TODO: revisit this... should no template file be an error or simply render an empty result? or render the json output?\n\t// Note: do not check for the existence of the template file here, as the default encoder cannot provide one.\n\tf := sprig.HermeticTxtFuncMap()\n\tf[\"getLastIndex\"] = func(collection interface{}) int {\n\t\tif v := reflect.ValueOf(collection); v.Kind() == reflect.Slice {\n\t\t\treturn v.Len() - 1\n\t\t}\n\n\t\treturn 0\n\t}\n\t// Checks if a field is defined\n\tf[\"hasField\"] = func(obj interface{}, field string) bool {\n\t\tt := reflect.TypeOf(obj)\n\t\t_, ok := t.FieldByName(field)\n\t\treturn ok\n\t}\n\n\treturn encoder{\n\t\tcfg: cfg,\n\t\t// These are custom functions available to template authors.\n\t\tfuncMap: f,\n\t}, nil\n}\n\nfunc DefaultEncoderConfig() EncoderConfig {\n\treturn EncoderConfig{\n\t\tEncoderConfig: syftjson.DefaultEncoderConfig(),\n\t}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{}\n}\n\nfunc (e encoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\tif e.cfg.TemplatePath == \"\" {\n\t\treturn errors.New(\"no template file provided\")\n\t}\n\n\ttemplatePath, err := homedir.Expand(e.cfg.TemplatePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to expand path %s\", e.cfg.TemplatePath)\n\t}\n\n\ttemplateContents, err := os.ReadFile(templatePath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to get template content: %w\", err)\n\t}\n\n\ttmpl, err := template.New(templatePath).Funcs(e.funcMap).Parse(string(templateContents))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to parse template: %w\", err)\n\t}\n\n\tvar doc any\n\tif e.cfg.Legacy {\n\t\tdoc = syftjson.ToFormatModel(s, e.cfg.EncoderConfig)\n\t} else {\n\t\tenc, err := syftjson.NewFormatEncoderWithConfig(e.cfg.EncoderConfig)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create json encoder: %w\", err)\n\t\t}\n\n\t\tvar buff bytes.Buffer\n\t\tif err = enc.Encode(&buff, s); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to encode json: %w\", err)\n\t\t}\n\n\t\tdeserializedDoc := make(map[string]any)\n\n\t\tif err = json.Unmarshal(buff.Bytes(), &deserializedDoc); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal json for template: %w\", err)\n\t\t}\n\n\t\tdoc = deserializedDoc\n\t}\n\n\treturn tmpl.Execute(writer, doc)\n}\n"
  },
  {
    "path": "syft/format/template/encoder_test.go",
    "content": "package template\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-template\", false, \"update the *.golden files for json encoders\")\n\nfunc TestFormatWithOption_Legacy(t *testing.T) {\n\tf, err := NewFormatEncoder(EncoderConfig{\n\t\tTemplatePath: \"testdata/legacy/csv.template\",\n\t\tLegacy:       true,\n\t})\n\trequire.NoError(t, err)\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, t.TempDir()),\n\t\t\tFormat:                      f,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n\nfunc TestFormatWithOptionAndHasField_Legacy(t *testing.T) {\n\tf, err := NewFormatEncoder(EncoderConfig{\n\t\tTemplatePath: \"testdata/legacy/csv-hasField.template\",\n\t\tLegacy:       true,\n\t})\n\trequire.NoError(t, err)\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInputWithAuthorField(t),\n\t\t\tFormat:                      f,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n\nfunc TestFormatWithOption(t *testing.T) {\n\tf, err := NewFormatEncoder(EncoderConfig{\n\t\tTemplatePath: \"testdata/csv.template\",\n\t})\n\trequire.NoError(t, err)\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, t.TempDir()),\n\t\t\tFormat:                      f,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n\nfunc TestFormatWithOptionAndHasField(t *testing.T) {\n\tf, err := NewFormatEncoder(EncoderConfig{\n\t\tTemplatePath: \"testdata/csv-hasField.template\",\n\t})\n\trequire.NoError(t, err)\n\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInputWithAuthorField(t),\n\t\t\tFormat:                      f,\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t},\n\t)\n}\n\nfunc TestFormatWithoutOptions(t *testing.T) {\n\tf, err := NewFormatEncoder(DefaultEncoderConfig())\n\trequire.NoError(t, err)\n\terr = f.Encode(nil, testutil.DirectoryInput(t, t.TempDir()))\n\tassert.ErrorContains(t, err, \"no template file provided\")\n}\n"
  },
  {
    "path": "syft/format/template/testdata/csv-hasField.template",
    "content": "\"Package\",\"Version Installed\",\"Found by\",\"Author\"\n{{- range .artifacts}}\n\"{{.name}}\",\"{{.version}}\",\"{{.foundBy}}\",\"{{ if index .metadata \"author\" }}{{.metadata.author}}{{ else }}NO AUTHOR SUPPLIED{{end}}\"\n{{- end}}"
  },
  {
    "path": "syft/format/template/testdata/csv.template",
    "content": "\"Package\",\"Version Installed\", \"Found by\"\n{{- range .artifacts}}\n\"{{.name}}\",\"{{.version}}\",\"{{.foundBy}}\"\n{{- end}}"
  },
  {
    "path": "syft/format/template/testdata/legacy/csv-hasField.template",
    "content": "\"Package\",\"Version Installed\",\"Found by\",\"Author\"\n{{- range .Artifacts}}\n\"{{.Name}}\",\"{{.Version}}\",\"{{.FoundBy}}\",\"{{ if hasField .Metadata \"Author\" }}{{.Metadata.Author}}{{ else }}NO AUTHOR SUPPLIED{{end}}\"\n{{- end}}"
  },
  {
    "path": "syft/format/template/testdata/legacy/csv.template",
    "content": "\"Package\",\"Version Installed\", \"Found by\"\n{{- range .Artifacts}}\n\"{{.Name}}\",\"{{.Version}}\",\"{{.FoundBy}}\"\n{{- end}}"
  },
  {
    "path": "syft/format/template/testdata/snapshot/TestFormatWithOption.golden",
    "content": "\"Package\",\"Version Installed\", \"Found by\"\n\"package-1\",\"1.0.1\",\"the-cataloger-1\"\n\"package-2\",\"2.0.1\",\"the-cataloger-2\""
  },
  {
    "path": "syft/format/template/testdata/snapshot/TestFormatWithOptionAndHasField.golden",
    "content": "\"Package\",\"Version Installed\",\"Found by\",\"Author\"\n\"package-1\",\"1.0.1\",\"the-cataloger-1\",\"test-author\"\n\"package-2\",\"2.0.1\",\"the-cataloger-2\",\"NO AUTHOR SUPPLIED\""
  },
  {
    "path": "syft/format/template/testdata/snapshot/TestFormatWithOptionAndHasField_Legacy.golden",
    "content": "\"Package\",\"Version Installed\",\"Found by\",\"Author\"\n\"package-1\",\"1.0.1\",\"the-cataloger-1\",\"test-author\"\n\"package-2\",\"2.0.1\",\"the-cataloger-2\",\"NO AUTHOR SUPPLIED\""
  },
  {
    "path": "syft/format/template/testdata/snapshot/TestFormatWithOption_Legacy.golden",
    "content": "\"Package\",\"Version Installed\", \"Found by\"\n\"package-1\",\"1.0.1\",\"the-cataloger-1\"\n\"package-2\",\"2.0.1\",\"the-cataloger-2\""
  },
  {
    "path": "syft/format/testdata/alpine-syft.json",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"880965c7-95ff-483c-80bb-22799bbbee63\",\n   \"name\": \"alpine-baselayout\",\n   \"version\": \"3.2.0-r16\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r16:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r16:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r16:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r16:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r16:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r16:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-baselayout@3.2.0-r16?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"alpine-baselayout\",\n    \"originPackage\": \"alpine-baselayout\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"3.2.0-r16\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n    \"description\": \"Alpine base dir structure and init scripts\",\n    \"size\": 20716,\n    \"installedSize\": 413696,\n    \"pullDependencies\": \"/bin/sh so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1UJtB9cNV4r+/VbxySkEei++qbho=\",\n    \"gitCommitOfApkPort\": \"8a8c96a0ea2fcd824c361aa4438763fa33ee8ca0\",\n    \"files\": [\n     {\n      \"path\": \"/dev\"\n     },\n     {\n      \"path\": \"/dev/pts\"\n     },\n     {\n      \"path\": \"/dev/shm\"\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/fstab\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q11Q7hNe8QpDS531guqCdrXBzoA/o=\"\n      }\n     },\n     {\n      \"path\": \"/etc/group\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q13K+olJg5ayzHSVNUkggZJXuB+9Y=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hostname\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q16nVwYVXP/tChvUPdukVD2ifXOmc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hosts\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/inittab\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1toogjUipHGcMgECgPJX64SwUT1M=\"\n      }\n     },\n     {\n      \"path\": \"/etc/motd\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/mtab\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/passwd\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1TchuuLUfur0izvfZQZxgN/LJhB8=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1VmHPWPjjvz4oCsbmYCUB4uWpSkc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/protocols\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1omKlp3vgGq2ZqYzyD/KHNdo8rDc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/services\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q19WLCv5ItKg4MH7RWfNRh1I7byQc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shadow\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"42\",\n      \"permissions\": \"640\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shells\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/conf.d\"\n     },\n     {\n      \"path\": \"/etc/crontabs\"\n     },\n     {\n      \"path\": \"/etc/crontabs/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"600\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\"\n      }\n     },\n     {\n      \"path\": \"/etc/init.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d/aliases.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/blacklist.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1xxYGU6S6TLQvb7ervPrWWwAWqMg=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/i386.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1pnay/njn6ol9cCssL7KiZZ8etlc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/kms.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ynbLn3GYDpvajba/ldp1niayeog=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules-load.d\"\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/opt\"\n     },\n     {\n      \"path\": \"/etc/periodic\"\n     },\n     {\n      \"path\": \"/etc/periodic/15min\"\n     },\n     {\n      \"path\": \"/etc/periodic/daily\"\n     },\n     {\n      \"path\": \"/etc/periodic/hourly\"\n     },\n     {\n      \"path\": \"/etc/periodic/monthly\"\n     },\n     {\n      \"path\": \"/etc/periodic/weekly\"\n     },\n     {\n      \"path\": \"/etc/profile.d\"\n     },\n     {\n      \"path\": \"/etc/profile.d/README\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q135OWsCzzvnB2fmFx62kbqm1Ax1k=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile.d/color_prompt.sh.disabled\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q10wL23GuSCVfumMRgakabUI6EsSk=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile.d/locale.sh\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1S8j+WW71mWxfVy8ythqU7HUVoBw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.d\"\n     },\n     {\n      \"path\": \"/home\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/firmware\"\n     },\n     {\n      \"path\": \"/lib/mdev\"\n     },\n     {\n      \"path\": \"/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d/00-alpine.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1HpElzW1xEgmKfERtTy7oommnq6c=\"\n      }\n     },\n     {\n      \"path\": \"/media\"\n     },\n     {\n      \"path\": \"/media/cdrom\"\n     },\n     {\n      \"path\": \"/media/floppy\"\n     },\n     {\n      \"path\": \"/media/usb\"\n     },\n     {\n      \"path\": \"/mnt\"\n     },\n     {\n      \"path\": \"/opt\"\n     },\n     {\n      \"path\": \"/proc\"\n     },\n     {\n      \"path\": \"/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"700\"\n     },\n     {\n      \"path\": \"/run\"\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/mkmntdirs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1VcFI6coRl6HWWVShMW+G5Sb3JH8=\"\n      }\n     },\n     {\n      \"path\": \"/srv\"\n     },\n     {\n      \"path\": \"/sys\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/usr/local\"\n     },\n     {\n      \"path\": \"/usr/local/bin\"\n     },\n     {\n      \"path\": \"/usr/local/lib\"\n     },\n     {\n      \"path\": \"/usr/local/share\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/man\"\n     },\n     {\n      \"path\": \"/usr/share/misc\"\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/run\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\"\n      }\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/empty\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"555\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/misc\"\n     },\n     {\n      \"path\": \"/var/local\"\n     },\n     {\n      \"path\": \"/var/lock\"\n     },\n     {\n      \"path\": \"/var/lock/subsys\"\n     },\n     {\n      \"path\": \"/var/log\"\n     },\n     {\n      \"path\": \"/var/mail\"\n     },\n     {\n      \"path\": \"/var/opt\"\n     },\n     {\n      \"path\": \"/var/spool\"\n     },\n     {\n      \"path\": \"/var/spool/mail\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\"\n      }\n     },\n     {\n      \"path\": \"/var/spool/cron\"\n     },\n     {\n      \"path\": \"/var/spool/cron/crontabs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\"\n      }\n     },\n     {\n      \"path\": \"/var/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8dbd8f4d-c13f-4120-8c2b-4596e5c46fce\",\n   \"name\": \"alpine-keys\",\n   \"version\": \"2.3-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-keys:2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-keys@2.3-r1?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"alpine-keys\",\n    \"originPackage\": \"alpine-keys\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.3-r1\",\n    \"license\": \"MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Public keys for Alpine Linux packages\",\n    \"size\": 5988,\n    \"installedSize\": 118784,\n    \"pullDependencies\": \"\",\n    \"pullChecksum\": \"Q1ZV5wTtRXerQz0CBrwtKcvErpPeY=\",\n    \"gitCommitOfApkPort\": \"0972396a79fd723a429e518120fdf7ab48407468\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1OvCFSO94z97c80mIDCxqGkh2Og4=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1v7YWZYzAWoclaLDI45jEguI7YN0=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/apk\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1OvCFSO94z97c80mIDCxqGkh2Og4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1v7YWZYzAWoclaLDI45jEguI7YN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1BTqS+H/UUyhQuzHwiBl47+BTKuU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Oaxdcsa6AYoPdLi0U4lO3J2we18=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1yPq+su65ksNox3uXB+DR7P18+QU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1MpZDNX0LeLHvSOwVUyXiXx11NN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1glCQ/eJbvA5xqcswdjFrWv5Fnk0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1XUdDEoNTtjlvrS+iunk6ziFgIpU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q17j9nWJkQ+wfIuVQzIFrmFZ7fSOc=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1hCZdFx+LvzbLtPs753je78gEEBQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1t21dhCLbTJmAHXSCeOMq/2vfSgo=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1NVPbZavaXpsItFwQYDWbpor7yYE=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1sjbV2r2w0Ih2vwdzC4Jq6UI7cMQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Y49eVxhpvftbQ3yAdvlLfcrPLTU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1AUFY+fwSBTcrYetjT7NHvafrSQc=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b03a5cd0-e8e4-4a0c-b283-86b4942b4cfc\",\n   \"name\": \"apk-tools\",\n   \"version\": \"2.12.7-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:apk-tools:apk-tools:2.12.7-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk-tools:apk_tools:2.12.7-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk-tools:2.12.7-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk_tools:2.12.7-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk-tools:2.12.7-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk_tools:2.12.7-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/apk-tools@2.12.7-r0?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"apk-tools\",\n    \"originPackage\": \"apk-tools\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.12.7-r0\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://gitlab.alpinelinux.org/alpine/apk-tools\",\n    \"description\": \"Alpine Package Keeper - package manager for alpine\",\n    \"size\": 119979,\n    \"installedSize\": 311296,\n    \"pullDependencies\": \"musl>=1.2 so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1 so:libssl.so.1.1 so:libz.so.1\",\n    \"pullChecksum\": \"Q1VnSoy5XasRtvFODOZ9P0pZG4Hxs=\",\n    \"gitCommitOfApkPort\": \"03c6b1b0ec20f417cee0f3c1d56795b27871b1c5\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/protected_paths.d\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libapk.so.3.12.0\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1fg+B1BJHpxBSS5dRPU+3zeeuFI4=\"\n      }\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/apk\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1LugZocafK9LifJwfELs3VqdEIxw=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/apk\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"cb3f3296-98d8-4e88-bf0a-3bdc53f817fb\",\n   \"name\": \"busybox\",\n   \"version\": \"1.33.1-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:busybox:busybox:1.33.1-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/busybox@1.33.1-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"busybox\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.33.1-r3\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"Size optimized toolbox of many common UNIX utilities\",\n    \"size\": 499368,\n    \"installedSize\": 950272,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1rGvmeXEbASEg01DqEqMbxV0fts4=\",\n    \"gitCommitOfApkPort\": \"98710256acf90e670e79f32f1f0350b830979d24\",\n    \"files\": [\n     {\n      \"path\": \"/bin\"\n     },\n     {\n      \"path\": \"/bin/busybox\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q135CE+2ocG61L7La8CI3kfLURucU=\"\n      }\n     },\n     {\n      \"path\": \"/bin/sh\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1pcfTfDNEbNKQc2s1tia7da05M8Q=\"\n      }\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/securetty\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1mB95Hq2NUTZ599RDiSsj9w5FrOU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/udhcpd.conf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1UAiPZcDIW1ClRzobfggcCQ77V28=\"\n      }\n     },\n     {\n      \"path\": \"/etc/logrotate.d\"\n     },\n     {\n      \"path\": \"/etc/logrotate.d/acpid\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1TylyCINVmnS+A/Tead4vZhE7Bks=\"\n      }\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d/dad\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"775\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ORf+lPRKuYgdkBBcKoevR1t60Q4=\"\n      }\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc/default.script\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1t9vir/ZrX3nbSIYT9BDLWZenkVQ=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/udhcpd\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"bdac28cf-4448-43d1-bdb6-1b6e8df0a2d3\",\n   \"name\": \"ca-certificates-bundle\",\n   \"version\": \"20191127-r5\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"MPL-2.0\",\n    \"AND\",\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca-certificates-bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca_certificates_bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca-certificates-bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca_certificates_bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca-certificates-bundle:20191127-r5:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca_certificates_bundle:20191127-r5:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ca-certificates-bundle@20191127-r5?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"ca-certificates-bundle\",\n    \"originPackage\": \"ca-certificates\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"20191127-r5\",\n    \"license\": \"MPL-2.0 AND MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/\",\n    \"description\": \"Pre generated bundle of Mozilla certificates\",\n    \"size\": 124473,\n    \"installedSize\": 233472,\n    \"pullDependencies\": \"\",\n    \"pullChecksum\": \"Q1bQ4InxwFIUUNl11tjOwqrqAeAIA=\",\n    \"gitCommitOfApkPort\": \"51999ab9304ec11c68c4ea9e99350ac7570e7f21\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/cert.pem\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Nj6gTBdkZpTFW/obJGdpfvK0StA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/certs/ca-certificates.crt\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1yxhc/Gjt/YEWliIZBXQz/RBrszU=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ef75a96d-f7be-45fa-abf0-a66c2779cfee\",\n   \"name\": \"libc-utils\",\n   \"version\": \"0.7.2-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD-2-Clause\",\n    \"AND\",\n    \"BSD-3-Clause\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libc-utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc-utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libc-utils@0.7.2-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libc-utils\",\n    \"originPackage\": \"libc-dev\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"0.7.2-r3\",\n    \"license\": \"BSD-2-Clause AND BSD-3-Clause\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Meta package to pull in correct libc\",\n    \"size\": 1228,\n    \"installedSize\": 4096,\n    \"pullDependencies\": \"musl-utils\",\n    \"pullChecksum\": \"Q1UsLZaz0/Go44hd4Vw49UCt40Vp8=\",\n    \"gitCommitOfApkPort\": \"60424133be2e79bbfeff3d58147a22886f817ce2\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"bb1fd421-fb64-499b-bc59-fe67b8553c1d\",\n   \"name\": \"libcrypto1.1\",\n   \"version\": \"1.1.1l-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenSSL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcrypto1.1:libcrypto1.1:1.1.1l-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libcrypto1.1@1.1.1l-r0?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libcrypto1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1l-r0\",\n    \"license\": \"OpenSSL\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"Crypto library from openssl\",\n    \"size\": 1211998,\n    \"installedSize\": 2768896,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1Sywj1TEYEdvX0+MuqC+ea+zXxR0=\",\n    \"gitCommitOfApkPort\": \"3ef1965150d5b1de4af88dc51cf407e11b20b848\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc/CA.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1IACevKhK93GYBHp96Ie26jgZ17s=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q13NVgfr7dQUuGYxur0tNalH6EIjU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ufKVrFftKLv8K/vullp/2reEDdo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/private\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1p0rHZXV1yOM1jGs0zuNSpi951t8=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1T2si+c7ts7sgDxQYve4B3i1Dgo0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1\"\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/afalg.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q13GvceRRzjQ6bnB5laIGCkDOHTM0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/capi.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1h8YLf+3MhbqdHUhGNEabdH5MooA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/padlock.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1TzNLJ3/GEmO9XW9XuZ/Izoy7zPk=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"114e7b49-1001-4d72-9f2e-086e0aa5a8b7\",\n   \"name\": \"libretls\",\n   \"version\": \"3.3.3p1-r2\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"ISC\",\n    \"AND\",\n    \"(BSD-3-Clause\",\n    \"OR\",\n    \"MIT)\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libretls:libretls:3.3.3p1-r2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libretls@3.3.3p1-r2?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libretls\",\n    \"originPackage\": \"libretls\",\n    \"maintainer\": \"Ariadne Conill <ariadne@dereferenced.org>\",\n    \"version\": \"3.3.3p1-r2\",\n    \"license\": \"ISC AND (BSD-3-Clause OR MIT)\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://git.causal.agency/libretls/\",\n    \"description\": \"port of libtls from libressl to openssl\",\n    \"size\": 28872,\n    \"installedSize\": 86016,\n    \"pullDependencies\": \"ca-certificates-bundle so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1 so:libssl.so.1.1\",\n    \"pullChecksum\": \"Q1mKL75PNQ3352oQUtXLS8GfI+37M=\",\n    \"gitCommitOfApkPort\": \"161d02ee8c48f3c3cae1d2b4b5d008fa318da0e1\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libtls.so.2\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1nNEC9T/t6W+Ecm0DxqMUnRvcT6k=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/libtls.so.2.0.3\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1t1MtXTHs0kMZ9+GCPJLriysmtA8=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ed01e864-9235-4b28-b69a-4c95a3c0457b\",\n   \"name\": \"libssl1.1\",\n   \"version\": \"1.1.1l-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenSSL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1l-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libssl1.1@1.1.1l-r0?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libssl1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1l-r0\",\n    \"license\": \"OpenSSL\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"SSL shared libraries\",\n    \"size\": 212918,\n    \"installedSize\": 540672,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1\",\n    \"pullChecksum\": \"Q1Fgsc0DiapwjaJHbihB9ZrLQhr7Q=\",\n    \"gitCommitOfApkPort\": \"3ef1965150d5b1de4af88dc51cf407e11b20b848\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1qaeh6oI3hVHuFty7JD5ASOu8S8k=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q18j35pe3yp6HOgMih1wlGP1/mm2c=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"2df82ce2-fc7f-40ce-a39b-6bac545cbba8\",\n   \"name\": \"musl\",\n   \"version\": \"1.2.2-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl:musl:1.2.2-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl@1.2.2-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"musl\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.2.2-r3\",\n    \"license\": \"MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 382765,\n    \"installedSize\": 622592,\n    \"pullDependencies\": \"\",\n    \"pullChecksum\": \"Q1n4yypJ4tpU5g+jxI7oHT0Bm4Xjo=\",\n    \"gitCommitOfApkPort\": \"1e9cba35059e3bb4635f12ee7e10dfe687df31ad\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/ld-musl-x86_64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1cZei2MQS2nixN1UwDj0FT9qWO4U=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libc.musl-x86_64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q17yJ3JFNypA4mxhJJr0ou6CzsJVI=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d8ed04e1-eccd-4441-b937-e960bfffe114\",\n   \"name\": \"musl-utils\",\n   \"version\": \"1.2.2-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\",\n    \"BSD\",\n    \"GPL2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl-utils:musl-utils:1.2.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl-utils:musl_utils:1.2.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl-utils:1.2.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl_utils:1.2.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl-utils:1.2.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl_utils:1.2.2-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl-utils@1.2.2-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"musl-utils\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.2.2-r3\",\n    \"license\": \"MIT BSD GPL2+\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 36662,\n    \"installedSize\": 147456,\n    \"pullDependencies\": \"scanelf so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1WNvvoHVxRySUmjgvqQie71lLRd8=\",\n    \"gitCommitOfApkPort\": \"1e9cba35059e3bb4635f12ee7e10dfe687df31ad\",\n    \"files\": [\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/ldconfig\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/getconf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1ENetcQcXKEGU2b0TD1S+WDuwAOE=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/getent\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1AtbzfYTO6GHhaimM7wXWuLGcECI=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/iconv\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1y+KPYlKOaOdDtMOapc2sTDsPKSU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/ldd\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"96bf3afe-d927-4daa-91c5-7178e9462ac5\",\n   \"name\": \"scanelf\",\n   \"version\": \"1.3.2-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:scanelf:scanelf:1.3.2-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/scanelf@1.3.2-r0?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"scanelf\",\n    \"originPackage\": \"pax-utils\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.3.2-r0\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n    \"description\": \"Scan ELF binaries for stuff\",\n    \"size\": 36511,\n    \"installedSize\": 94208,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1OWKo0fmUbClrhW0CPNjwA8AMLWo=\",\n    \"gitCommitOfApkPort\": \"4c7f72840f5052bc63af1796c3ad0021f97949f2\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/scanelf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1LhDyQrsweSqYTuRcjhG2d0pxhrE=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"562ec670-5625-4c25-b8a7-ebaacf04d06c\",\n   \"name\": \"ssl_client\",\n   \"version\": \"1.33.1-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ssl-client:ssl-client:1.33.1-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl-client:ssl_client:1.33.1-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl-client:1.33.1-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl_client:1.33.1-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl-client:1.33.1-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl_client:1.33.1-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ssl_client@1.33.1-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"ssl_client\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.33.1-r3\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"EXternal ssl_client for busybox wget\",\n    \"size\": 4381,\n    \"installedSize\": 28672,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1 so:libtls.so.2\",\n    \"pullChecksum\": \"Q1d7WkMOIKXIk3qxexUxSo60HOofY=\",\n    \"gitCommitOfApkPort\": \"98710256acf90e670e79f32f1f0350b830979d24\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/ssl_client\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1gPKQTCzC1isM7R89HFwb+A1XmM4=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"52382e1a-320b-4e62-8103-39baa39d85b3\",\n   \"name\": \"zlib\",\n   \"version\": \"1.2.11-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\"\n    }\n   ],\n   \"licenses\": [\n    \"Zlib\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:zlib:zlib:1.2.11-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/zlib@1.2.11-r3?arch=x86_64\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"zlib\",\n    \"originPackage\": \"zlib\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.2.11-r3\",\n    \"license\": \"Zlib\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://zlib.net/\",\n    \"description\": \"A compression/decompression Library\",\n    \"size\": 51398,\n    \"installedSize\": 110592,\n    \"pullDependencies\": \"so:libc.musl-x86_64.so.1\",\n    \"pullChecksum\": \"Q1Sc/5gG4ey/zvnyPPQ/Au7bXqc08=\",\n    \"gitCommitOfApkPort\": \"388a4fb3640f8ccbd18e105df3ad741dca4247e1\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libz.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q1a2H8hP24ryCAGf8fnc1Nha9IIHc=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libz.so.1.2.11\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"sha1\",\n       \"value\": \"Q19Iml1N+v08tnk1ZtqGEVIEtIFJI=\"\n      }\n     }\n    ]\n   }\n  }\n ],\n \"artifactRelationships\": [],\n \"source\": {\n  \"type\": \"image\",\n  \"target\": {\n   \"userInput\": \"alpine:latest\",\n   \"imageID\": \"sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab\",\n   \"manifestDigest\": \"sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [],\n   \"imageSize\": 5590942,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68\",\n     \"size\": 5590942\n    }\n   ],\n   \"manifest\": \"ewogICAic2NoZW1hVmVyc2lvbiI6IDIsCiAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5kaXN0cmlidXRpb24ubWFuaWZlc3QudjIranNvbiIsCiAgICJjb25maWciOiB7CiAgICAgICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRvY2tlci5jb250YWluZXIuaW1hZ2UudjEranNvbiIsCiAgICAgICJzaXplIjogMTQ3MSwKICAgICAgImRpZ2VzdCI6ICJzaGEyNTY6MTQxMTlhMTBhYmY0NjY5ZThjZGJkZmYzMjRhOWY5NjA1ZDk5Njk3MjE1YTBkMjFjMzYwZmU4ZGZhODQ3MWJhYiIKICAgfSwKICAgImxheWVycyI6IFsKICAgICAgewogICAgICAgICAibWVkaWFUeXBlIjogImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLAogICAgICAgICAic2l6ZSI6IDI4MTQ0NDYsCiAgICAgICAgICJkaWdlc3QiOiAic2hhMjU2OmEwZDBhMGQ0NmY4YjUyNDczOTgyYTNjNDY2MzE4ZjQ3OTc2NzU3NzU1MWE1M2ZmYzkwNzRjOWZhNzAzNTk4MmUiCiAgICAgIH0KICAgXQp9\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6ZDNlMGI2MjU4ZWMyZjcyNWMxOTY2OGYxMWFlNTMyM2MzYjAyNDVlMTk3ZWM0Nzg0MjRlYzZhODc5MzU2OTBlYiIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiIzMzAyODljNjQ5ZGI4NmY1ZmIxYWU1YmZlZjE4NTAxMDEyYjU1MGFkYjA2MzhiOTE5M2Q0YTNhNGI2NWEyZjliIiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6IjMzMDI4OWM2NDlkYiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjpkM2UwYjYyNThlYzJmNzI1YzE5NjY4ZjExYWU1MzIzYzNiMDI0NWUxOTdlYzQ3ODQyNGVjNmE4NzkzNTY5MGViIiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMS0wOC0yN1QxNzoxOTo0NS43NTg2MTE1MjNaIiwiZG9ja2VyX3ZlcnNpb24iOiIyMC4xMC43IiwiaGlzdG9yeSI6W3siY3JlYXRlZCI6IjIwMjEtMDgtMjdUMTc6MTk6NDUuNTUzMDkyMzYzWiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSBBREQgZmlsZTphYWQ0MjkwZDI3NTgwY2MxYTA5NGZmYWY5OGMzY2EyZmM1ZDY5OWZlNjk1ZGZiOGU2ZTlmYWMyMGYxMTI5NDUwIGluIC8gIn0seyJjcmVhdGVkIjoiMjAyMS0wOC0yN1QxNzoxOTo0NS43NTg2MTE1MjNaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgIyhub3ApICBDTUQgW1wiL2Jpbi9zaFwiXSIsImVtcHR5X2xheWVyIjp0cnVlfV0sIm9zIjoibGludXgiLCJyb290ZnMiOnsidHlwZSI6ImxheWVycyIsImRpZmZfaWRzIjpbInNoYTI1NjplMmViMDZkOGFmODIxOGNmZWM4MjEwMTQ3MzU3YTY4YjdlMTNmN2M0ODViOTkxYzI4OGMyZDAxZGMyMjhiYjY4Il19fQ==\",\n   \"repoDigests\": [\n    \"index.docker.io/library/alpine@sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a\"\n   ]\n  }\n },\n \"distro\": {\n  \"name\": \"alpine\",\n  \"version\": \"3.14.2\",\n  \"idLike\": \"\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"[not provided]\"\n },\n \"schema\": {\n  \"version\": \"1.1.0\",\n  \"url\": \"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-1.1.0.json\"\n }\n}\n"
  },
  {
    "path": "syft/format/text/encoder.go",
    "content": "package text\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"text/tabwriter\"\n\n\t\"github.com/anchore/syft/syft/sbom\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst ID sbom.FormatID = \"syft-text\"\n\ntype encoder struct {\n}\n\nfunc NewFormatEncoder() sbom.FormatEncoder {\n\treturn encoder{}\n}\n\nfunc (e encoder) ID() sbom.FormatID {\n\treturn ID\n}\n\nfunc (e encoder) Aliases() []string {\n\treturn []string{\n\t\t\"text\",\n\t}\n}\n\nfunc (e encoder) Version() string {\n\treturn sbom.AnyVersion\n}\n\nfunc (e encoder) Encode(writer io.Writer, s sbom.SBOM) error {\n\t// init the tabular writer\n\tw := new(tabwriter.Writer)\n\tw.Init(writer, 0, 8, 0, '\\t', tabwriter.AlignRight)\n\n\tswitch metadata := s.Source.Metadata.(type) {\n\tcase source.DirectoryMetadata:\n\t\tfmt.Fprintf(w, \"[Path: %s]\\n\", metadata.Path)\n\tcase source.FileMetadata:\n\t\tfmt.Fprintf(w, \"[Path: %s]\\n\", metadata.Path)\n\tcase source.ImageMetadata:\n\t\tfmt.Fprintln(w, \"[Image]\")\n\n\t\tfor idx, l := range metadata.Layers {\n\t\t\tfmt.Fprintln(w, \" Layer:\\t\", idx)\n\t\t\tfmt.Fprintln(w, \" Digest:\\t\", l.Digest)\n\t\t\tfmt.Fprintln(w, \" Size:\\t\", l.Size)\n\t\t\tfmt.Fprintln(w, \" MediaType:\\t\", l.MediaType)\n\t\t\tfmt.Fprintln(w)\n\t\t\tw.Flush()\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported source: %T\", s.Source.Metadata)\n\t}\n\n\t// populate artifacts...\n\trows := 0\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\tfmt.Fprintf(w, \"[%s]\\n\", p.Name)\n\t\tfmt.Fprintln(w, \" Version:\\t\", p.Version)\n\t\tfmt.Fprintln(w, \" Type:\\t\", string(p.Type))\n\t\tfmt.Fprintln(w, \" Found by:\\t\", p.FoundBy)\n\t\tfmt.Fprintln(w)\n\t\tw.Flush()\n\t\trows++\n\t}\n\n\tif rows == 0 {\n\t\tfmt.Fprintln(writer, \"No packages discovered\")\n\t\treturn nil\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/format/text/encoder_test.go",
    "content": "package text\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/format/internal/testutil\"\n)\n\nvar updateSnapshot = flag.Bool(\"update-text\", false, \"update the *.golden files for text encoder\")\nvar updateImage = flag.Bool(\"update-image\", false, \"update the golden image used for image encoder testing\")\n\nfunc TestTextDirectoryEncoder(t *testing.T) {\n\tdir := t.TempDir()\n\ttestutil.AssertEncoderAgainstGoldenSnapshot(t,\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.DirectoryInput(t, dir),\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(dir),\n\t\t},\n\t)\n}\n\nfunc TestTextImageEncoder(t *testing.T) {\n\ttestImage := \"image-simple\"\n\ttestutil.AssertEncoderAgainstGoldenImageSnapshot(t,\n\t\ttestutil.ImageSnapshotTestConfig{\n\t\t\tImage:               testImage,\n\t\t\tUpdateImageSnapshot: *updateImage,\n\t\t},\n\t\ttestutil.EncoderSnapshotTestConfig{\n\t\t\tSubject:                     testutil.ImageInput(t, testImage, testutil.FromSnapshot()),\n\t\t\tFormat:                      NewFormatEncoder(),\n\t\t\tUpdateSnapshot:              *updateSnapshot,\n\t\t\tPersistRedactionsInSnapshot: true,\n\t\t\tIsJSON:                      false,\n\t\t\tRedactor:                    redactor(),\n\t\t},\n\t)\n}\n\nfunc redactor(values ...string) testutil.Redactor {\n\treturn testutil.NewRedactions().\n\t\tWithValuesRedacted(values...)\n}\n"
  },
  {
    "path": "syft/format/text/testdata/snapshot/TestTextDirectoryEncoder.golden",
    "content": "[Path: redacted/some/path]\n[package-1]\n Version:\t 1.0.1\n Type:\t\t python\n Found by:\t the-cataloger-1\n\n[package-2]\n Version:\t 2.0.1\n Type:\t\t deb\n Found by:\t the-cataloger-2\n\n"
  },
  {
    "path": "syft/format/text/testdata/snapshot/TestTextImageEncoder.golden",
    "content": "[Image]\n Layer:\t\t 0\n Digest:\t sha256:dfefe618c89b08fef0f9c7f1a2682521dddbe03d6678f4a9fb9b078381d8eb45\n Size:\t\t 22\n MediaType:\t application/vnd.docker.image.rootfs.diff.tar.gzip\n\n Layer:\t\t 1\n Digest:\t sha256:38ddc2847fb6bcafd7401b4bf27c10014b5d60e2400bc188890c7cb7cdd7cd6c\n Size:\t\t 16\n MediaType:\t application/vnd.docker.image.rootfs.diff.tar.gzip\n\n[package-1]\n Version:\t 1.0.1\n Type:\t\t python\n Found by:\t the-cataloger-1\n\n[package-2]\n Version:\t 2.0.1\n Type:\t\t deb\n Found by:\t the-cataloger-2\n\n"
  },
  {
    "path": "syft/get_source.go",
    "content": "package syft\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// GetSource uses all of Syft's known source providers to attempt to resolve the user input to a usable source.Source\nfunc GetSource(ctx context.Context, userInput string, cfg *GetSourceConfig) (source.Source, error) {\n\tif cfg == nil {\n\t\tcfg = DefaultGetSourceConfig()\n\t}\n\n\tproviders, err := cfg.getProviders(userInput)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar errs []error\n\tvar fileNotFoundProviders []string\n\n\t// call each source provider until we find a valid source\n\tfor _, p := range providers {\n\t\tsrc, err := p.Provide(ctx)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\t\tfileNotFoundProviders = append(fileNotFoundProviders, p.Name())\n\t\t\t} else {\n\t\t\t\terrs = append(errs, fmt.Errorf(\"%s: %w\", p.Name(), err))\n\t\t\t}\n\t\t}\n\t\tif err := validateSourcePlatform(src, cfg); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif src != nil {\n\t\t\treturn src, nil\n\t\t}\n\t}\n\n\tif len(errs) == 0 {\n\t\treturn nil, fmt.Errorf(\"no source providers were able to resolve the input %q\", userInput)\n\t}\n\n\tif len(fileNotFoundProviders) > 0 {\n\t\terrs = append(errs, fmt.Errorf(\"additionally, the following providers failed with %w: %s\", os.ErrNotExist, strings.Join(fileNotFoundProviders, \", \")))\n\t}\n\n\treturn nil, sourceError(userInput, errs...)\n}\n\nfunc validateSourcePlatform(src source.Source, cfg *GetSourceConfig) error {\n\tif src == nil {\n\t\treturn nil\n\t}\n\tif cfg == nil || cfg.SourceProviderConfig == nil || cfg.SourceProviderConfig.Platform == nil {\n\t\treturn nil\n\t}\n\n\tmeta := src.Describe().Metadata\n\tswitch meta.(type) {\n\tcase *source.ImageMetadata, source.ImageMetadata:\n\t\treturn nil\n\tcase *source.OCIModelMetadata, source.OCIModelMetadata:\n\t\treturn nil\n\tcase *source.SnapMetadata, source.SnapMetadata:\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"platform is not supported for this source type\")\n\t}\n}\n\nfunc sourceError(userInput string, errs ...error) error {\n\tswitch len(errs) {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn fmt.Errorf(\"an error occurred attempting to resolve '%s': %w\", userInput, errs[0])\n\t}\n\terrorTexts := \"\"\n\tfor _, e := range errs {\n\t\terrorTexts += fmt.Sprintf(\"\\n  - %s\", e)\n\t}\n\treturn fmt.Errorf(\"errors occurred attempting to resolve '%s':%s\", userInput, errorTexts)\n}\n"
  },
  {
    "path": "syft/get_source_config.go",
    "content": "package syft\n\nimport (\n\t\"crypto\"\n\t\"fmt\"\n\n\t\"github.com/anchore/go-collections\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\ntype GetSourceConfig struct {\n\t// SourceProviderConfig may optionally be provided to be used when constructing the default set of source providers, unused if All specified\n\tSourceProviderConfig *sourceproviders.Config\n\n\t// Sources is an explicit list of source names to use, in order, to attempt to locate a source\n\tSources []string\n\n\t// DefaultImagePullSource will cause a particular image pull source to be used as the first pull source, followed by other pull sources\n\tDefaultImagePullSource string\n}\n\nfunc (c *GetSourceConfig) WithAlias(alias source.Alias) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithAlias(alias)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithRegistryOptions(registryOptions *image.RegistryOptions) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithRegistryOptions(registryOptions)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithPlatform(platform *image.Platform) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithPlatform(platform)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithExcludeConfig(excludeConfig source.ExcludeConfig) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithExcludeConfig(excludeConfig)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithDigestAlgorithms(algorithms ...crypto.Hash) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithDigestAlgorithms(algorithms...)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithBasePath(basePath string) *GetSourceConfig {\n\tc.SourceProviderConfig = c.SourceProviderConfig.WithBasePath(basePath)\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithSources(sources ...string) *GetSourceConfig {\n\tc.Sources = sources\n\treturn c\n}\n\nfunc (c *GetSourceConfig) WithDefaultImagePullSource(defaultImagePullSource string) *GetSourceConfig {\n\tc.DefaultImagePullSource = defaultImagePullSource\n\treturn c\n}\n\nfunc (c *GetSourceConfig) getProviders(userInput string) ([]source.Provider, error) {\n\tproviders := collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All(userInput, c.SourceProviderConfig)...)\n\n\t// if the \"default image pull source\" is set, we move this as the first pull source\n\tif c.DefaultImagePullSource != \"\" {\n\t\tbase := providers.Remove(sourceproviders.PullTag)\n\t\tpull := providers.Select(sourceproviders.PullTag)\n\t\tdef := pull.Select(c.DefaultImagePullSource)\n\t\tif len(def) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"invalid DefaultImagePullSource: %s; available values are: %v\", c.DefaultImagePullSource, pull.Tags())\n\t\t}\n\t\tproviders = base.Join(def...).Join(pull...)\n\t}\n\n\t// narrow the sources to those explicitly requested generally by a user\n\tif len(c.Sources) > 0 {\n\t\t// select the explicitly provided sources, in order\n\t\tproviders = providers.Select(c.Sources...)\n\t}\n\n\treturn providers.Values(), nil\n}\n\nfunc DefaultGetSourceConfig() *GetSourceConfig {\n\treturn &GetSourceConfig{\n\t\tSourceProviderConfig: sourceproviders.DefaultConfig(),\n\t}\n}\n"
  },
  {
    "path": "syft/get_source_config_test.go",
    "content": "package syft\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\nfunc TestGetProviders_DefaultImagePullSource(t *testing.T) {\n\tuserInput := \"\"\n\tcfg := &GetSourceConfig{DefaultImagePullSource: stereoscope.RegistryTag}\n\tallSourceProviders := sourceproviders.All(userInput, cfg.SourceProviderConfig)\n\n\tproviders, err := cfg.getProviders(userInput)\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error for DefaultImagePullSource parameter, got: %v\", err)\n\t}\n\n\tif len(providers) != len(allSourceProviders) {\n\t\tt.Errorf(\"Expected %d providers, got %d\", len(allSourceProviders), len(providers))\n\t}\n}\n\nfunc TestGetProviders_Sources(t *testing.T) {\n\tuserInput := \"\"\n\tcfg := &GetSourceConfig{Sources: []string{stereoscope.RegistryTag}}\n\n\tproviders, err := cfg.getProviders(userInput)\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error for Sources parameter, got: %v\", err)\n\t}\n\n\t// Registry tag has two providers: OCIModel and Image\n\tif len(providers) != 2 {\n\t\tt.Errorf(\"Expected 2 providers, got %d\", len(providers))\n\t}\n}\n"
  },
  {
    "path": "syft/get_source_test.go",
    "content": "package syft\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/sourceproviders\"\n)\n\ntype mockSource struct {\n\tsource.Source\n\tdesc source.Description\n}\n\nfunc (s mockSource) Describe() source.Description {\n\treturn s.desc\n}\n\nfunc TestValidateSourcePlatform_NilSource(t *testing.T) {\n\tcfg := &GetSourceConfig{\n\t\tSourceProviderConfig: &sourceproviders.Config{\n\t\t\tPlatform: &image.Platform{\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tOS:           \"linux\",\n\t\t\t},\n\t\t},\n\t}\n\n\terr := validateSourcePlatform(nil, cfg)\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error for nil source, got: %v\", err)\n\t}\n}\n\nfunc TestValidateSourcePlatform_NilPlatformConfig(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tcfg  *GetSourceConfig\n\t}{\n\t\t{\n\t\t\tname: \"nil config\",\n\t\t\tcfg:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"nil SourceProviderConfig\",\n\t\t\tcfg: &GetSourceConfig{\n\t\t\t\tSourceProviderConfig: nil,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nil Platform\",\n\t\t\tcfg: &GetSourceConfig{\n\t\t\t\tSourceProviderConfig: &sourceproviders.Config{\n\t\t\t\t\tPlatform: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsrc := mockSource{\n\t\t\t\tdesc: source.Description{\n\t\t\t\t\tMetadata: &source.ImageMetadata{},\n\t\t\t\t},\n\t\t\t}\n\n\t\t\terr := validateSourcePlatform(src, tt.cfg)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"Expected no error for nil platform, got: %v\", err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestValidateSourcePlatform_SupportedMetadataTypes(t *testing.T) {\n\ttracker := sourcemetadata.NewCompletionTester(t)\n\tcfg := &GetSourceConfig{\n\t\tSourceProviderConfig: &sourceproviders.Config{\n\t\t\tPlatform: &image.Platform{\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tOS:           \"linux\",\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata any\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:     \"image\",\n\t\t\tmetadata: source.ImageMetadata{},\n\t\t},\n\t\t{\n\t\t\tname:     \"snap\",\n\t\t\tmetadata: source.SnapMetadata{},\n\t\t},\n\t\t{\n\t\t\tname:     \"dir\",\n\t\t\tmetadata: source.DirectoryMetadata{},\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"file\",\n\t\t\tmetadata: source.FileMetadata{},\n\t\t\twantErr:  require.Error,\n\t\t},\n\t\t{\n\t\t\tname:     \"oci-model\",\n\t\t\tmetadata: source.OCIModelMetadata{},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\ttracker.Tested(t, tt.metadata)\n\n\t\t\tsrc := mockSource{\n\t\t\t\tdesc: source.Description{\n\t\t\t\t\tMetadata: tt.metadata,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\terr := validateSourcePlatform(src, cfg)\n\t\t\ttt.wantErr(t, err, \"Expected no error for %s, got: %v\", tt.name, err)\n\t\t})\n\t}\n}\n\nfunc TestValidateSourcePlatform_UnsupportedMetadataTypes(t *testing.T) {\n\tcfg := &GetSourceConfig{\n\t\tSourceProviderConfig: &sourceproviders.Config{\n\t\t\tPlatform: &image.Platform{\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tOS:           \"linux\",\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata interface{}\n\t}{\n\t\t{\n\t\t\tname:     \"string metadata\",\n\t\t\tmetadata: \"unsupported\",\n\t\t},\n\t\t{\n\t\t\tname:     \"int metadata\",\n\t\t\tmetadata: 42,\n\t\t},\n\t\t{\n\t\t\tname:     \"nil metadata\",\n\t\t\tmetadata: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"custom struct\",\n\t\t\tmetadata: struct{ Name string }{Name: \"test\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tsrc := mockSource{\n\t\t\t\tdesc: source.Description{\n\t\t\t\t\tMetadata: tt.metadata,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\terr := validateSourcePlatform(src, cfg)\n\t\t\tif err == nil {\n\t\t\t\tt.Errorf(\"Expected error for %s, got nil\", tt.name)\n\t\t\t}\n\n\t\t\texpectedMsg := \"platform is not supported for this source type\"\n\t\t\tif err.Error() != expectedMsg {\n\t\t\t\tt.Errorf(\"Expected error message %q, got %q\", expectedMsg, err.Error())\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestValidateSourcePlatform_ValidCombination(t *testing.T) {\n\tcfg := &GetSourceConfig{\n\t\tSourceProviderConfig: &sourceproviders.Config{\n\t\t\tPlatform: &image.Platform{\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tOS:           \"linux\",\n\t\t\t},\n\t\t},\n\t}\n\n\tsrc := mockSource{\n\t\tdesc: source.Description{\n\t\t\tMetadata: &source.ImageMetadata{},\n\t\t},\n\t}\n\n\terr := validateSourcePlatform(src, cfg)\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error for valid combination, got: %v\", err)\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/chroot_context.go",
    "content": "package fileresolver\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/internal/windows\"\n)\n\n// ChrootContext helps to modify path from a real filesystem to a chroot-like filesystem, taking into account\n// the user given root, the base path (if any) to consider as the root, and the current working directory.\n// Note: this only works on a real filesystem, not on a virtual filesystem (such as a stereoscope filetree).\ntype ChrootContext struct {\n\troot               string\n\trootRelativeToBase string\n\tbase               string\n\tcwd                string\n\tcwdRelativeToRoot  string\n}\n\nfunc NewChrootContextFromCWD(root, base string) (*ChrootContext, error) {\n\tcurrentWD, err := os.Getwd()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not get current working directory: %w\", err)\n\t}\n\n\treturn NewChrootContext(root, base, currentWD)\n}\n\nfunc NewChrootContext(root, base, cwd string) (*ChrootContext, error) {\n\tcleanRoot, err := NormalizeRootDirectory(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcleanBase, err := NormalizeBaseDirectory(base)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// we need to track the relative path from root to base (if set) so that request paths can un-apply the base path\n\t// changes from any incoming requests.\n\tvar rootRelativeToBase string\n\tif cleanBase != cleanRoot && cleanBase != \"\" {\n\t\tabsRoot := cleanRoot\n\t\tif !filepath.IsAbs(cleanRoot) {\n\t\t\tabsRoot = filepath.Join(cwd, cleanRoot)\n\t\t}\n\n\t\trootRelativeToBase, err = filepath.Rel(absRoot, cleanBase) // validate that base is within root\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"base path %q is not within root path %q: %w\", cleanBase, cleanRoot, err)\n\t\t}\n\t}\n\n\tchroot := &ChrootContext{\n\t\troot:               cleanRoot,\n\t\trootRelativeToBase: rootRelativeToBase,\n\t\tbase:               cleanBase,\n\t\tcwd:                cwd,\n\t}\n\n\treturn chroot, chroot.ChangeDirectory(cwd)\n}\n\nfunc NormalizeRootDirectory(root string) (string, error) {\n\tcleanRoot, err := filepath.EvalSymlinks(root)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"could not evaluate root=%q symlinks: %w\", root, err)\n\t}\n\treturn cleanRoot, nil\n}\n\nfunc NormalizeBaseDirectory(base string) (string, error) {\n\tif base == \"\" {\n\t\treturn \"\", nil\n\t}\n\n\tcleanBase, err := filepath.EvalSymlinks(base)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"could not evaluate base=%q symlinks: %w\", base, err)\n\t}\n\n\treturn filepath.Abs(cleanBase)\n}\n\n// Root returns the root path with all symlinks evaluated.\nfunc (r ChrootContext) Root() string {\n\treturn r.root\n}\n\n// Base returns the absolute base path with all symlinks evaluated.\nfunc (r ChrootContext) Base() string {\n\treturn r.base\n}\n\n// ChangeRoot swaps the path for the chroot.\nfunc (r *ChrootContext) ChangeRoot(dir string) error {\n\tnewR, err := NewChrootContext(dir, r.base, r.cwd)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not change root: %w\", err)\n\t}\n\n\t*r = *newR\n\n\treturn nil\n}\n\n// ChangeDirectory changes the current working directory so that any relative paths passed\n// into ToNativePath() and ToChrootPath() honor the new CWD. If the process changes the CWD in-flight, this should be\n// called again to ensure correct functionality of ToNativePath() and ToChrootPath().\nfunc (r *ChrootContext) ChangeDirectory(dir string) error {\n\tvar (\n\t\tcwdRelativeToRoot string\n\t\terr               error\n\t)\n\n\tdir, err = filepath.Abs(dir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not determine absolute path to CWD: %w\", err)\n\t}\n\n\tif path.IsAbs(r.root) {\n\t\tcwdRelativeToRoot, err = filepath.Rel(dir, r.root)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not determine given root path to CWD: %w\", err)\n\t\t}\n\t} else {\n\t\tcwdRelativeToRoot = filepath.Clean(r.root)\n\t}\n\n\tr.cwd = dir\n\tr.cwdRelativeToRoot = cwdRelativeToRoot\n\treturn nil\n}\n\n// ToNativePath takes a path in the context of the chroot-like filesystem and converts it to a path in the underlying fs domain.\nfunc (r ChrootContext) ToNativePath(chrootPath string) (string, error) {\n\tresponsePath := chrootPath\n\n\tif filepath.IsAbs(responsePath) {\n\t\t// don't allow input to potentially hop above root path (and still un-apply any base paths)\n\t\tresponsePath = path.Join(r.root, r.rootRelativeToBase, responsePath)\n\t} else {\n\t\t// ensure we take into account any relative difference between the root path and the CWD for relative requests\n\t\tresponsePath = path.Join(r.cwdRelativeToRoot, responsePath)\n\t}\n\n\tvar err error\n\tresponsePath, err = filepath.Abs(responsePath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn responsePath, nil\n}\n\nfunc (r ChrootContext) ToNativeGlob(chrootPath string) (string, error) {\n\t// split on any *\n\tparts := strings.Split(chrootPath, \"*\")\n\tif len(parts) == 0 || parts[0] == \"\" {\n\t\t// either this is an empty string or a path that starts with * so there is nothing we can do\n\t\treturn chrootPath, nil\n\t}\n\n\tif len(parts) == 1 {\n\t\t// this has no glob, treat it like a path\n\t\treturn r.ToNativePath(chrootPath)\n\t}\n\n\tresponsePath := parts[0]\n\n\tif filepath.IsAbs(responsePath) {\n\t\t// don't allow input to potentially hop above root path\n\t\tresponsePath = path.Join(r.root, responsePath)\n\t} else {\n\t\t// ensure we take into account any relative difference between the root path and the CWD for relative requests\n\t\tresponsePath = path.Join(r.cwdRelativeToRoot, responsePath)\n\t}\n\n\tvar err error\n\tresponsePath, err = filepath.Abs(responsePath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\thasSlash := strings.HasSuffix(parts[0], \"/\")\n\tparts[0] = responsePath\n\tif hasSlash {\n\t\tparts[0] = strings.TrimRight(parts[0], \"/\") + \"/\"\n\t}\n\n\treturn strings.Join(parts, \"*\"), nil\n}\n\n// ToChrootPath takes a path from the underlying fs domain and converts it to a path that is relative to the current root context.\nfunc (r ChrootContext) ToChrootPath(nativePath string) string {\n\tresponsePath := nativePath\n\t// check to see if we need to encode back to Windows from posix\n\tif windows.HostRunningOnWindows() {\n\t\tresponsePath = windows.FromPosix(responsePath)\n\t}\n\n\t// clean references to the request path (either the root, or the base if set)\n\tif filepath.IsAbs(responsePath) {\n\t\tvar prefix string\n\t\tif r.base != \"\" {\n\t\t\tprefix = r.base\n\t\t} else {\n\t\t\t// we need to account for the cwd relative to the running process and the given root for the directory resolver\n\t\t\tprefix = filepath.Clean(filepath.Join(r.cwd, r.cwdRelativeToRoot))\n\t\t\tprefix += string(filepath.Separator)\n\t\t}\n\t\tresponsePath = strings.TrimPrefix(responsePath, prefix)\n\t}\n\n\treturn responsePath\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/chroot_context_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_ChrootContext_RequestResponse(t *testing.T) {\n\t// /\n\t//   somewhere/\n\t//     outside.txt\n\t//   root-link -> ./\n\t//   path/\n\t//     to/\n\t//       abs-inside.txt -> /path/to/the/file.txt               # absolute link to somewhere inside of the root\n\t//       rel-inside.txt -> ./the/file.txt                      # relative link to somewhere inside of the root\n\t//       the/\n\t//\t\t   file.txt\n\t//         abs-outside.txt -> /somewhere/outside.txt           # absolute link to outside of the root\n\t//         rel-outside -> ../../../somewhere/outside.txt       # relative link to outside of the root\n\t//\n\n\ttestDir, err := os.Getwd()\n\trequire.NoError(t, err)\n\trelative := filepath.Join(\"testdata\", \"req-resp\")\n\tabsolute := filepath.Join(testDir, relative)\n\n\tabsPathToTheFile := filepath.Join(absolute, \"path\", \"to\", \"the\", \"file.txt\")\n\n\tabsAbsInsidePath := filepath.Join(absolute, \"path\", \"to\", \"abs-inside.txt\")\n\tabsAbsOutsidePath := filepath.Join(absolute, \"path\", \"to\", \"the\", \"abs-outside.txt\")\n\n\tabsRelOutsidePath := filepath.Join(absolute, \"path\", \"to\", \"the\", \"rel-outside.txt\")\n\n\trelViaLink := filepath.Join(relative, \"root-link\")\n\tabsViaLink := filepath.Join(absolute, \"root-link\")\n\n\tabsViaLinkPathToTheFile := filepath.Join(absViaLink, \"path\", \"to\", \"the\", \"file.txt\")\n\tabsViaLinkAbsOutsidePath := filepath.Join(absViaLink, \"path\", \"to\", \"the\", \"abs-outside.txt\")\n\tabsViaLinkRelOutsidePath := filepath.Join(absViaLink, \"path\", \"to\", \"the\", \"rel-outside.txt\")\n\n\trelViaDoubleLink := filepath.Join(relative, \"root-link\", \"root-link\")\n\tabsViaDoubleLink := filepath.Join(absolute, \"root-link\", \"root-link\")\n\n\tabsViaDoubleLinkPathToTheFile := filepath.Join(absViaDoubleLink, \"path\", \"to\", \"the\", \"file.txt\")\n\tabsViaDoubleLinkRelOutsidePath := filepath.Join(absViaDoubleLink, \"path\", \"to\", \"the\", \"rel-outside.txt\")\n\n\tcleanup := func() {\n\t\t_ = os.Remove(absAbsInsidePath)\n\t\t_ = os.Remove(absAbsOutsidePath)\n\t}\n\n\t// ensure the absolute symlinks are cleaned up from any previous runs\n\tcleanup()\n\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"path\", \"to\", \"the\", \"file.txt\"), absAbsInsidePath))\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"somewhere\", \"outside.txt\"), absAbsOutsidePath))\n\n\tt.Cleanup(cleanup)\n\n\tcases := []struct {\n\t\tname               string\n\t\tcwd                string\n\t\troot               string\n\t\tbase               string\n\t\tinput              string\n\t\texpectedNativePath string\n\t\texpectedChrootPath string\n\t}{\n\t\t{\n\t\t\tname:               \"relative root, relative request, direct\",\n\t\t\troot:               relative,\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, direct\",\n\t\t\troot:               absolute,\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, direct\",\n\t\t\troot:               relative,\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, direct\",\n\t\t\troot:               absolute,\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within root...\n\t\t{\n\t\t\tname:               \"relative root, relative request, direct, cwd within root\",\n\t\t\tcwd:                filepath.Join(relative, \"path/to\"),\n\t\t\troot:               \"../../\",\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, direct, cwd within root\",\n\t\t\tcwd:                filepath.Join(relative, \"path/to\"),\n\t\t\troot:               absolute,\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, direct, cwd within root\",\n\t\t\tcwd:                filepath.Join(relative, \"path/to\"),\n\t\t\troot:               \"../../\",\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"abs root, abs request, direct, cwd within root\",\n\t\t\tcwd:  filepath.Join(relative, \"path/to\"),\n\n\t\t\troot:               absolute,\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root...\n\t\t{\n\t\t\tname:               \"relative root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"./\",\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               absViaLink,\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"./\",\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               absViaLink,\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root, request nested within...\n\t\t{\n\t\t\tname:               \"relative root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"./path\",\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absViaLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absViaLink, \"path\"),\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"./path\",\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absViaLink, \"path\"),\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root...\n\t\t{\n\t\t\tname:               \"relative root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"./\",\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               absViaDoubleLink,\n\t\t\tinput:              \"path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"./\",\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               absViaDoubleLink,\n\t\t\tinput:              \"/path/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested within...\n\t\t{\n\t\t\tname:               \"relative root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"./path\",\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               filepath.Join(absViaDoubleLink, \"path\"),\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"./path\",\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               filepath.Join(absViaDoubleLink, \"path\"),\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested DEEP within...\n\t\t{\n\t\t\tname:               \"relative root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:                filepath.Join(relViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:               \"../\",\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:                filepath.Join(relViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:               filepath.Join(absViaDoubleLink, \"path\"),\n\t\t\tinput:              \"to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:                filepath.Join(relViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:               \"../\",\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:                filepath.Join(relViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:               filepath.Join(absViaDoubleLink, \"path\"),\n\t\t\tinput:              \"/to/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"to/the/file.txt\",\n\t\t},\n\t\t// link to outside of root cases...\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t// link to outside of root cases... cwd within symlink root\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absViaLinkAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absViaLinkAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedNativePath: absAbsOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absViaLinkRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absViaLinkRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absViaDoubleLinkRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relViaDoubleLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedNativePath: absRelOutsidePath,\n\t\t\texpectedChrootPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t// base path within root cases...\n\t\t// note: for absolute input paths, rootRelativeToBase is used to resolve the native path\n\t\t// note: for relative input paths, cwdRelativeToRoot is used (base does not affect relative path resolution)\n\t\t{\n\t\t\tname:               \"relative root, abs request, with base\",\n\t\t\troot:               relative,\n\t\t\tbase:               filepath.Join(relative, \"path\", \"to\"),\n\t\t\tinput:              \"/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"/the/file.txt\", // ToChrootPath trims base prefix without adding separator\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, with base\",\n\t\t\troot:               absolute,\n\t\t\tbase:               filepath.Join(absolute, \"path\", \"to\"),\n\t\t\tinput:              \"/the/file.txt\",\n\t\t\texpectedNativePath: absPathToTheFile,\n\t\t\texpectedChrootPath: \"/the/file.txt\", // ToChrootPath trims base prefix without adding separator\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\n\t\t\t// we need to mimic a shell, otherwise we won't get a path within a symlink\n\t\t\ttargetPath := filepath.Join(testDir, c.cwd)\n\t\t\tt.Setenv(\"PWD\", filepath.Clean(targetPath))\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NoError(t, os.Chdir(targetPath))\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, os.Chdir(testDir))\n\t\t\t})\n\n\t\t\tchroot, err := NewChrootContextFromCWD(c.root, c.base)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, chroot)\n\n\t\t\treq, err := chroot.ToNativePath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, c.expectedNativePath, req, \"native path different\")\n\n\t\t\tresp := chroot.ToChrootPath(req)\n\t\t\tassert.Equal(t, c.expectedChrootPath, resp, \"chroot path different\")\n\t\t})\n\t}\n}\n\nfunc TestNewChrootContext_BaseValidation(t *testing.T) {\n\ttestDir, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\trelative := filepath.Join(\"testdata\", \"req-resp\")\n\tabsolute := filepath.Join(testDir, relative)\n\n\ttests := []struct {\n\t\tname                       string\n\t\troot                       string\n\t\tbase                       string\n\t\tcwd                        string\n\t\texpectedRootRelativeToBase string\n\t\twantErr                    require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:                       \"base within root\",\n\t\t\troot:                       absolute,\n\t\t\tbase:                       filepath.Join(absolute, \"path\", \"to\"),\n\t\t\tcwd:                        testDir,\n\t\t\texpectedRootRelativeToBase: filepath.Join(\"path\", \"to\"),\n\t\t},\n\t\t{\n\t\t\tname:                       \"base equals root\",\n\t\t\troot:                       absolute,\n\t\t\tbase:                       absolute,\n\t\t\tcwd:                        testDir,\n\t\t\texpectedRootRelativeToBase: \"\",\n\t\t},\n\t\t{\n\t\t\tname:                       \"empty base\",\n\t\t\troot:                       absolute,\n\t\t\tbase:                       \"\",\n\t\t\tcwd:                        testDir,\n\t\t\texpectedRootRelativeToBase: \"\",\n\t\t},\n\t\t{\n\t\t\tname:                       \"relative root with base\",\n\t\t\troot:                       relative,\n\t\t\tbase:                       filepath.Join(absolute, \"path\", \"to\"),\n\t\t\tcwd:                        testDir,\n\t\t\texpectedRootRelativeToBase: filepath.Join(\"path\", \"to\"),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tctx, err := NewChrootContext(tt.root, tt.base, tt.cwd)\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.expectedRootRelativeToBase, ctx.rootRelativeToBase)\n\t\t})\n\t}\n}\n\nfunc TestToNativeGlob(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tchrootContext  ChrootContext\n\t\tchrootPath     string\n\t\texpectedResult string\n\t\texpectedError  error\n\t}{\n\t\t{\n\t\t\tname: \"ignore empty path\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"\",\n\t\t\texpectedResult: \"\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore if just a path\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"/some/path/file.txt\",\n\t\t\texpectedResult: \"/root/some/path/file.txt\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore starting with glob\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"*/relative/path/*\",\n\t\t\texpectedResult: \"*/relative/path/*\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"absolute path with glob\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"/some/path/*\",\n\t\t\texpectedResult: \"/root/some/path/*\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"relative path with glob\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"relative/path/*\",\n\t\t\texpectedResult: \"/cwd/relative/path/*\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"relative path with no root\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"relative/path/*\",\n\t\t\texpectedResult: \"/cwd/relative/path/*\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"globs everywhere\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"relative/path/**/file*.txt\",\n\t\t\texpectedResult: \"/cwd/relative/path/**/file*.txt\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t\t{\n\t\t\tname: \"ending with glob\",\n\t\t\tchrootContext: ChrootContext{\n\t\t\t\troot:              \"/root\",\n\t\t\t\tcwdRelativeToRoot: \"/cwd\",\n\t\t\t},\n\t\t\tchrootPath:     \"/var/lib/dpkg/info/name.*\",\n\t\t\texpectedResult: \"/root/var/lib/dpkg/info/name.*\",\n\t\t\texpectedError:  nil,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult, err := tt.chrootContext.ToNativeGlob(tt.chrootPath)\n\n\t\t\tif tt.expectedError != nil {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tassert.Equal(t, tt.expectedError, err)\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\tassert.Equal(t, tt.expectedResult, result)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_all_layers.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*ContainerImageAllLayers)(nil)\n\n// ContainerImageAllLayers implements path and content access for the AllLayers source option for container image data sources.\ntype ContainerImageAllLayers struct {\n\timg            *image.Image\n\tlayers         []int\n\tmarkVisibility bool\n}\n\n// NewFromContainerImageAllLayers returns a new resolver from the perspective of all image layers for the given image.\nfunc NewFromContainerImageAllLayers(img *image.Image) (*ContainerImageAllLayers, error) {\n\tif len(img.Layers) == 0 {\n\t\treturn nil, fmt.Errorf(\"the image does not contain any layers\")\n\t}\n\n\tvar layers = make([]int, 0)\n\tfor idx := range img.Layers {\n\t\tlayers = append(layers, idx)\n\t}\n\treturn &ContainerImageAllLayers{\n\t\timg:    img,\n\t\tlayers: layers,\n\t\t// This is the entrypoint for the user-facing implementation, which should always annotate locations.\n\t\t// We have other resolvers that use this implementation that are already responsible\n\t\t// for marking visibility, so we don't need to do it all of the time (a small performance optimization).\n\t\tmarkVisibility: true,\n\t}, nil\n}\n\n// HasPath indicates if the given path exists in the underlying source.\nfunc (r *ContainerImageAllLayers) HasPath(path string) bool {\n\tp := stereoscopeFile.Path(path)\n\tfor _, layerIdx := range r.layers {\n\t\ttree := r.img.Layers[layerIdx].Tree\n\t\tif tree.HasPath(p) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (r *ContainerImageAllLayers) fileByRef(ref stereoscopeFile.Reference, uniqueFileIDs stereoscopeFile.ReferenceSet, layerIdx int) ([]stereoscopeFile.Reference, error) {\n\tuniqueFiles := make([]stereoscopeFile.Reference, 0)\n\n\t// since there is potentially considerable work for each symlink/hardlink that needs to be resolved, let's check to see if this is a symlink/hardlink first\n\tentry, err := r.img.FileCatalog.Get(ref)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to fetch metadata (ref=%+v): %w\", ref, err)\n\t}\n\n\tif entry.Type == stereoscopeFile.TypeHardLink || entry.Type == stereoscopeFile.TypeSymLink {\n\t\t// a link may resolve in this layer or higher, assuming a squashed tree is used to search\n\t\t// we should search all possible resolutions within the valid source\n\t\tfor _, subLayerIdx := range r.layers[layerIdx:] {\n\t\t\tresolvedRef, err := r.img.ResolveLinkByLayerSquash(ref, subLayerIdx)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to resolve link from layer (layer=%d ref=%+v): %w\", subLayerIdx, ref, err)\n\t\t\t}\n\t\t\tif resolvedRef.HasReference() && !uniqueFileIDs.Contains(*resolvedRef.Reference) {\n\t\t\t\tuniqueFileIDs.Add(*resolvedRef.Reference)\n\t\t\t\tuniqueFiles = append(uniqueFiles, *resolvedRef.Reference)\n\t\t\t}\n\t\t}\n\t} else if !uniqueFileIDs.Contains(ref) {\n\t\tuniqueFileIDs.Add(ref)\n\t\tuniqueFiles = append(uniqueFiles, ref)\n\t}\n\n\treturn uniqueFiles, nil\n}\n\n// FilesByPath returns all file.References that match the given paths from any layer in the image.\nfunc (r *ContainerImageAllLayers) FilesByPath(paths ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, path := range paths {\n\t\tfor idx, layerIdx := range r.layers {\n\t\t\tref, err := r.img.Layers[layerIdx].SearchContext.SearchByPath(path, filetree.FollowBasenameLinks, filetree.DoNotFollowDeadBasenameLinks)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif !ref.HasReference() {\n\t\t\t\t// no file found, keep looking through layers\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// don't consider directories (special case: there is no path information for /)\n\t\t\tif ref.RealPath == \"/\" {\n\t\t\t\tcontinue\n\t\t\t} else if r.img.FileCatalog.Exists(*ref.Reference) {\n\t\t\t\tmetadata, err := r.img.FileCatalog.Get(*ref.Reference)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unable to get file metadata for path=%q: %w\", ref.RealPath, err)\n\t\t\t\t}\n\t\t\t\tif metadata.IsDir() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresults, err := r.fileByRef(*ref.Reference, uniqueFileIDs, idx)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfor _, result := range results {\n\t\t\t\tl := file.NewLocationFromImage(path, result, r.img)\n\t\t\t\tr.annotateLocation(&l)\n\t\t\t\tuniqueLocations = append(uniqueLocations, l)\n\t\t\t}\n\t\t}\n\t}\n\treturn uniqueLocations, nil\n}\n\n// FilesByGlob returns all file.References that match the given path glob pattern from any layer in the image.\n//\n//nolint:gocognit\nfunc (r *ContainerImageAllLayers) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, pattern := range patterns {\n\t\tfor idx, layerIdx := range r.layers {\n\t\t\tresults, err := r.img.Layers[layerIdx].SquashedSearchContext.SearchByGlob(pattern, filetree.FollowBasenameLinks, filetree.DoNotFollowDeadBasenameLinks)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to resolve files by glob (%s): %w\", pattern, err)\n\t\t\t}\n\n\t\t\tfor _, result := range results {\n\t\t\t\tif !result.HasReference() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// don't consider directories (special case: there is no path information for /)\n\t\t\t\tif result.RealPath == \"/\" {\n\t\t\t\t\tcontinue\n\t\t\t\t} else if r.img.FileCatalog.Exists(*result.Reference) {\n\t\t\t\t\tmetadata, err := r.img.FileCatalog.Get(*result.Reference)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"unable to get file metadata for path=%q: %w\", result.RequestPath, err)\n\t\t\t\t\t}\n\t\t\t\t\t// don't consider directories\n\t\t\t\t\tif metadata.IsDir() {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trefResults, err := r.fileByRef(*result.Reference, uniqueFileIDs, idx)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tfor _, refResult := range refResults {\n\t\t\t\t\tl := file.NewLocationFromImage(string(result.RequestPath), refResult, r.img)\n\t\t\t\t\tr.annotateLocation(&l)\n\t\t\t\t\tuniqueLocations = append(uniqueLocations, l)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\n// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n// This is helpful when attempting to find a file that is in the same layer or lower as another file.\nfunc (r *ContainerImageAllLayers) RelativeFileByPath(location file.Location, path string) *file.Location {\n\tlayer := r.img.FileCatalog.Layer(location.Reference())\n\n\texists, relativeRef, err := layer.SquashedTree.File(stereoscopeFile.Path(path), filetree.FollowBasenameLinks)\n\tif err != nil {\n\t\tlog.Errorf(\"failed to find path=%q in squash: %+v\", path, err)\n\t\treturn nil\n\t}\n\tif !exists && !relativeRef.HasReference() {\n\t\treturn nil\n\t}\n\n\trelativeLocation := file.NewLocationFromImage(path, *relativeRef.Reference, r.img)\n\tr.annotateLocation(&relativeLocation)\n\n\treturn &relativeLocation\n}\n\n// FileContentsByLocation fetches file contents for a single file reference, irregardless of the source layer.\n// If the path does not exist an error is returned.\nfunc (r *ContainerImageAllLayers) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tentry, err := r.img.FileCatalog.Get(location.Reference())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get metadata for path=%q from file catalog: %w\", location.RealPath, err)\n\t}\n\n\tswitch entry.Type {\n\tcase stereoscopeFile.TypeSymLink, stereoscopeFile.TypeHardLink:\n\t\t// the location we are searching may be a symlink, we should always work with the resolved file\n\t\tnewLocation := r.RelativeFileByPath(location, location.AccessPath)\n\t\tif newLocation == nil {\n\t\t\t// this is a dead link\n\t\t\treturn nil, fmt.Errorf(\"no contents for location=%q\", location.AccessPath)\n\t\t}\n\t\tlocation = *newLocation\n\tcase stereoscopeFile.TypeDirectory:\n\t\treturn nil, fmt.Errorf(\"cannot read contents of non-file %q\", location.Reference().RealPath)\n\t}\n\n\treturn r.img.OpenReference(location.Reference())\n}\n\nfunc (r *ContainerImageAllLayers) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor idx, layerIdx := range r.layers {\n\t\trefs, err := r.img.Layers[layerIdx].SearchContext.SearchByMIMEType(types...)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tfor _, ref := range refs {\n\t\t\tif !ref.HasReference() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trefResults, err := r.fileByRef(*ref.Reference, uniqueFileIDs, idx)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfor _, refResult := range refResults {\n\t\t\t\tl := file.NewLocationFromImage(string(ref.RequestPath), refResult, r.img)\n\t\t\t\tr.annotateLocation(&l)\n\t\t\t\tuniqueLocations = append(uniqueLocations, l)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\nfunc (r *ContainerImageAllLayers) AllLocations(ctx context.Context) <-chan file.Location {\n\tresults := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(results)\n\t\tfor _, layerIdx := range r.layers {\n\t\t\ttree := r.img.Layers[layerIdx].Tree\n\t\t\tfor _, ref := range tree.AllFiles(stereoscopeFile.AllTypes()...) {\n\t\t\t\tl := file.NewLocationFromImage(string(ref.RealPath), ref, r.img)\n\t\t\t\tr.annotateLocation(&l)\n\t\t\t\tselect {\n\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\treturn\n\t\t\t\tcase results <- l:\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\treturn results\n}\n\nfunc (r *ContainerImageAllLayers) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\treturn fileMetadataByLocation(r.img, location)\n}\n\nfunc (r *ContainerImageAllLayers) annotateLocation(l *file.Location) {\n\tif !r.markVisibility || l == nil {\n\t\treturn\n\t}\n\n\tgivenRef := l.Reference()\n\tannotation := file.VisibleAnnotation\n\n\t// if we find a location for a path that matches the query (e.g. **/node_modules) but is not present in the squashed tree, skip it\n\tref, err := r.img.SquashedSearchContext.SearchByPath(l.RealPath, filetree.DoNotFollowDeadBasenameLinks)\n\tif err != nil || !ref.HasReference() {\n\t\tannotation = file.HiddenAnnotation\n\t} else if ref.ID() != givenRef.ID() {\n\t\t// we may have the path in the squashed tree, but this must not be in the same layer\n\t\tannotation = file.HiddenAnnotation\n\t}\n\n\t// not only should the real path to the file exist, but the way we took to get there should also exist\n\t// (e.g. if we are looking for /etc/passwd, but the real path is /etc/passwd -> /etc/passwd-1, then we should\n\t// make certain that /etc/passwd-1 exists)\n\tif annotation == file.VisibleAnnotation && l.AccessPath != \"\" {\n\t\tref, err := r.img.SquashedSearchContext.SearchByPath(l.AccessPath, filetree.DoNotFollowDeadBasenameLinks)\n\t\tif err != nil || !ref.HasReference() {\n\t\t\tannotation = file.HiddenAnnotation\n\t\t} else if ref.ID() != givenRef.ID() {\n\t\t\t// we may have the path in the squashed tree, but this must not be in the same layer\n\t\t\tannotation = file.HiddenAnnotation\n\t\t}\n\t}\n\n\tl.Annotations[file.VisibleAnnotationKey] = annotation\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_all_layers_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype resolution struct {\n\tlayer uint\n\tpath  string\n}\n\nfunc TestAllLayersResolver_FilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname                 string\n\t\tlinkPath             string\n\t\tresolutions          []resolution\n\t\tforcePositiveHasPath bool\n\t}{\n\t\t{\n\t\t\tname:     \"link with previous data\",\n\t\t\tlinkPath: \"/link-1\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 1,\n\t\t\t\t\tpath:  \"/file-1.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"link with in layer data\",\n\t\t\tlinkPath: \"/link-within\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 5,\n\t\t\t\t\tpath:  \"/file-3.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"link with overridden data\",\n\t\t\tlinkPath: \"/link-2\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 4,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: 7,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"indirect link (with overridden data)\",\n\t\t\tlinkPath: \"/link-indirect\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 4,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: 7,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:                 \"dead link\",\n\t\t\tlinkPath:             \"/link-dead\",\n\t\t\tresolutions:          []resolution{},\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tlinkPath:    \"/bin\",\n\t\t\tresolutions: []resolution{},\n\t\t\t// directories don't resolve BUT do exist\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageAllLayers(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\thasPath := resolver.HasPath(c.linkPath)\n\t\t\tif !c.forcePositiveHasPath {\n\t\t\t\tif len(c.resolutions) > 0 && !hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not\")\n\t\t\t\t} else if len(c.resolutions) == 0 && hasPath {\n\t\t\t\t\tt.Errorf(\"expeced HasPath() to NOT indicate existance, but does\")\n\t\t\t\t}\n\t\t\t} else if !hasPath {\n\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not (force path)\")\n\t\t\t}\n\n\t\t\trefs, err := resolver.FilesByPath(c.linkPath)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif len(refs) != len(c.resolutions) {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tfor idx, actual := range refs {\n\t\t\t\texpected := c.resolutions[idx]\n\n\t\t\t\tif string(actual.Reference().RealPath) != expected.path {\n\t\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), expected.path)\n\t\t\t\t}\n\n\t\t\t\tif expected.path != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t\t}\n\n\t\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\t\t\t\tif layer.Metadata.Index != expected.layer {\n\t\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, expected.layer)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestAllLayersResolver_FilesByGlob(t *testing.T) {\n\tcases := []struct {\n\t\tname        string\n\t\tglob        string\n\t\tresolutions []resolution\n\t}{\n\t\t{\n\t\t\tname: \"link with previous data\",\n\t\t\tglob: \"**/*ink-1\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 1,\n\t\t\t\t\tpath:  \"/file-1.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"link with in layer data\",\n\t\t\tglob: \"**/*nk-within\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 5,\n\t\t\t\t\tpath:  \"/file-3.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"link with overridden data\",\n\t\t\tglob: \"**/*ink-2\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 4,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: 7,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"indirect link (with overridden data)\",\n\t\t\tglob: \"**/*nk-indirect\",\n\t\t\tresolutions: []resolution{\n\t\t\t\t{\n\t\t\t\t\tlayer: 4,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: 7,\n\t\t\t\t\tpath:  \"/file-2.txt\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"dead link\",\n\t\t\tglob:        \"**/*k-dead\",\n\t\t\tresolutions: []resolution{},\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tglob:        \"**/bin\",\n\t\t\tresolutions: []resolution{},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageAllLayers(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByGlob(c.glob)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif len(refs) != len(c.resolutions) {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tfor idx, actual := range refs {\n\t\t\t\texpected := c.resolutions[idx]\n\n\t\t\t\tif string(actual.Reference().RealPath) != expected.path {\n\t\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), expected.path)\n\t\t\t\t}\n\n\t\t\t\tif expected.path != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t\t}\n\n\t\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\n\t\t\t\tif layer.Metadata.Index != expected.layer {\n\t\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, expected.layer)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_imageAllLayersResolver_FilesByMIMEType(t *testing.T) {\n\n\ttests := []struct {\n\t\tfixtureName   string\n\t\tmimeType      string\n\t\texpectedPaths []string\n\t}{\n\t\t{\n\t\t\tfixtureName:   \"image-duplicate-path\",\n\t\t\tmimeType:      \"text/plain\",\n\t\t\texpectedPaths: []string{\"/somefile-1.txt\", \"/somefile-1.txt\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.fixtureName, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", test.fixtureName)\n\n\t\t\tresolver, err := NewFromContainerImageAllLayers(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tlocations, err := resolver.FilesByMIMEType(test.mimeType)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tassert.Len(t, test.expectedPaths, len(locations))\n\t\t\tfor idx, l := range locations {\n\t\t\t\tassert.Equal(t, test.expectedPaths[idx], l.RealPath, \"does not have path %q\", l.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_imageAllLayersResolver_hasFilesystemIDInLocation(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-duplicate-path\")\n\n\tresolver, err := NewFromContainerImageAllLayers(img)\n\tassert.NoError(t, err)\n\n\tlocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByGlob(\"*.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByPath(\"/somefile-1.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n}\n\nfunc TestAllLayersImageResolver_FilesContents(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\tcontents []string\n\t}{\n\t\t{\n\t\t\tname:    \"one degree\",\n\t\t\tfixture: \"link-2\",\n\t\t\tcontents: []string{\n\t\t\t\t\"file 2!\",            // from the first resolved layer's perspective\n\t\t\t\t\"NEW file override!\", // from the second resolved layers perspective\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"two degrees\",\n\t\t\tfixture: \"link-indirect\",\n\t\t\tcontents: []string{\n\t\t\t\t\"file 2!\",\n\t\t\t\t\"NEW file override!\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"dead link\",\n\t\t\tfixture:  \"link-dead\",\n\t\t\tcontents: []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageAllLayers(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(test.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// the given path should have an overridden file\n\t\t\trequire.Len(t, refs, len(test.contents))\n\n\t\t\tfor idx, loc := range refs {\n\t\t\t\treader, err := resolver.FileContentsByLocation(loc)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tactual, err := io.ReadAll(reader)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tassert.Equal(t, test.contents[idx], string(actual))\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc TestAllLayersImageResolver_FilesContents_errorOnDirRequest(t *testing.T) {\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\tresolver, err := NewFromContainerImageAllLayers(img)\n\tassert.NoError(t, err)\n\n\tvar dirLoc *file.Location\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tentry, err := resolver.img.FileCatalog.Get(loc.Reference())\n\t\trequire.NoError(t, err)\n\t\tif entry.Metadata.IsDir() {\n\t\t\tdirLoc = &loc\n\t\t\tbreak\n\t\t}\n\t}\n\n\trequire.NotNil(t, dirLoc)\n\n\treader, err := resolver.FileContentsByLocation(*dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n}\n\nfunc Test_imageAllLayersResolver_resolvesLinks(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trunner   func(file.Resolver) []file.Location\n\t\texpected []file.Location\n\t}{\n\t\t{\n\t\t\tname: \"by mimetype\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links should not show up when searching mimetype\n\t\t\t\tactualLocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/etc/group\", \"/etc/group\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/passwd\", \"/etc/passwd\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/shadow\", \"/etc/shadow\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 1\n\t\t\t\t// note: we're de-duping the redundant access to file-3.txt\n\t\t\t\t// ... (there would usually be two copies)\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),               // copy 2\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"), // copy 1\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"), // copy 2\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"*ink-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"), // copy 1\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"), // copy 2\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-2.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 1\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 2\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-?.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 1\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 2\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"), // when we copy into the link path, the same file-4.txt is copied\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by extension\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 1\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"), // copy 2\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"), // when we copy into the link path, the same file-4.txt is copied\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 1 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links resolve to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-2\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 2 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// multiple links resolves to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-indirect\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageAllLayers(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tactual := test.runner(resolver)\n\n\t\t\tcompareLocations(t, test.expected, actual)\n\t\t})\n\t}\n\n}\n\nfunc TestAllLayersResolver_AllLocations(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-files-deleted\")\n\n\tresolver, err := NewFromContainerImageAllLayers(img)\n\tassert.NoError(t, err)\n\n\tpaths := strset.New()\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tvisibleSet := strset.New()\n\thiddenSet := strset.New()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tpaths.Add(loc.RealPath)\n\t\tswitch loc.Annotations[file.VisibleAnnotationKey] {\n\t\tcase file.VisibleAnnotation:\n\t\t\tvisibleSet.Add(loc.RealPath)\n\t\tcase file.HiddenAnnotation:\n\t\t\thiddenSet.Add(loc.RealPath)\n\t\tcase \"\":\n\t\t\tt.Errorf(\"expected visibility annotation for location: %+v\", loc)\n\t\t}\n\t}\n\tvisible := []string{\n\t\t\"/Dockerfile\",\n\t\t\"/file-3.txt\", // this is a deadlink pointing to /file-1.txt (which has been deleted)\n\t\t\"/target\",\n\t\t\"/target/file-2.txt\",\n\t}\n\thidden := []string{\n\t\t\"/.wh.bin\",\n\t\t\"/.wh.file-1.txt\",\n\t\t\"/.wh.lib\",\n\t\t\"/bin\",\n\t\t\"/bin/arch\",\n\t\t\"/bin/ash\",\n\t\t\"/bin/base64\",\n\t\t\"/bin/bbconfig\",\n\t\t\"/bin/busybox\",\n\t\t\"/bin/cat\",\n\t\t\"/bin/chattr\",\n\t\t\"/bin/chgrp\",\n\t\t\"/bin/chmod\",\n\t\t\"/bin/chown\",\n\t\t\"/bin/cp\",\n\t\t\"/bin/date\",\n\t\t\"/bin/dd\",\n\t\t\"/bin/df\",\n\t\t\"/bin/dmesg\",\n\t\t\"/bin/dnsdomainname\",\n\t\t\"/bin/dumpkmap\",\n\t\t\"/bin/echo\",\n\t\t\"/bin/ed\",\n\t\t\"/bin/egrep\",\n\t\t\"/bin/false\",\n\t\t\"/bin/fatattr\",\n\t\t\"/bin/fdflush\",\n\t\t\"/bin/fgrep\",\n\t\t\"/bin/fsync\",\n\t\t\"/bin/getopt\",\n\t\t\"/bin/grep\",\n\t\t\"/bin/gunzip\",\n\t\t\"/bin/gzip\",\n\t\t\"/bin/hostname\",\n\t\t\"/bin/ionice\",\n\t\t\"/bin/iostat\",\n\t\t\"/bin/ipcalc\",\n\t\t\"/bin/kbd_mode\",\n\t\t\"/bin/kill\",\n\t\t\"/bin/link\",\n\t\t\"/bin/linux32\",\n\t\t\"/bin/linux64\",\n\t\t\"/bin/ln\",\n\t\t\"/bin/login\",\n\t\t\"/bin/ls\",\n\t\t\"/bin/lsattr\",\n\t\t\"/bin/lzop\",\n\t\t\"/bin/makemime\",\n\t\t\"/bin/mkdir\",\n\t\t\"/bin/mknod\",\n\t\t\"/bin/mktemp\",\n\t\t\"/bin/more\",\n\t\t\"/bin/mount\",\n\t\t\"/bin/mountpoint\",\n\t\t\"/bin/mpstat\",\n\t\t\"/bin/mv\",\n\t\t\"/bin/netstat\",\n\t\t\"/bin/nice\",\n\t\t\"/bin/pidof\",\n\t\t\"/bin/ping\",\n\t\t\"/bin/ping6\",\n\t\t\"/bin/pipe_progress\",\n\t\t\"/bin/printenv\",\n\t\t\"/bin/ps\",\n\t\t\"/bin/pwd\",\n\t\t\"/bin/reformime\",\n\t\t\"/bin/rev\",\n\t\t\"/bin/rm\",\n\t\t\"/bin/rmdir\",\n\t\t\"/bin/run-parts\",\n\t\t\"/bin/sed\",\n\t\t\"/bin/setpriv\",\n\t\t\"/bin/setserial\",\n\t\t\"/bin/sh\",\n\t\t\"/bin/sleep\",\n\t\t\"/bin/stat\",\n\t\t\"/bin/stty\",\n\t\t\"/bin/su\",\n\t\t\"/bin/sync\",\n\t\t\"/bin/tar\",\n\t\t\"/bin/touch\",\n\t\t\"/bin/true\",\n\t\t\"/bin/umount\",\n\t\t\"/bin/uname\",\n\t\t\"/bin/usleep\",\n\t\t\"/bin/watch\",\n\t\t\"/bin/zcat\",\n\t\t\"/file-1.txt\",\n\t\t\"/lib\",\n\t\t\"/lib/apk\",\n\t\t\"/lib/apk/db\",\n\t\t\"/lib/apk/db/installed\",\n\t\t\"/lib/apk/db/lock\",\n\t\t\"/lib/apk/db/scripts.tar\",\n\t\t\"/lib/apk/db/triggers\",\n\t\t\"/lib/apk/exec\",\n\t\t\"/lib/firmware\",\n\t\t\"/lib/ld-musl-x86_64.so.1\",\n\t\t\"/lib/libapk.so.3.12.0\",\n\t\t\"/lib/libc.musl-x86_64.so.1\",\n\t\t\"/lib/libcrypto.so.3\",\n\t\t\"/lib/libssl.so.3\",\n\t\t\"/lib/libz.so.1\",\n\t\t\"/lib/libz.so.1.2.13\",\n\t\t\"/lib/mdev\",\n\t\t\"/lib/modules-load.d\",\n\t\t\"/lib/sysctl.d\",\n\t\t\"/lib/sysctl.d/00-alpine.conf\",\n\t}\n\n\tvar expected []string\n\texpected = append(expected, visible...)\n\texpected = append(expected, hidden...)\n\tsort.Strings(expected)\n\n\tcleanPaths := func(s *strset.Set) {\n\t\t// depending on how the image is built (either from linux or mac), sys and proc might accidentally be added to the image.\n\t\t// this isn't important for the test, so we remove them.\n\t\ts.Remove(\"/proc\", \"/sys\", \"/dev\", \"/etc\")\n\n\t\t// Remove cache created by Mac Rosetta when emulating different arches\n\t\ts.Remove(\"/.cache/rosetta\", \"/.cache\")\n\t}\n\n\tcleanPaths(paths)\n\tcleanPaths(visibleSet)\n\tcleanPaths(hiddenSet)\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\tvisibleSetList := visibleSet.List()\n\tsort.Strings(visibleSetList)\n\thiddenSetList := hiddenSet.List()\n\tsort.Strings(hiddenSetList)\n\n\tif d := cmp.Diff(expected, pathsList); d != \"\" {\n\t\tt.Errorf(\"unexpected paths (-want +got):\\n%s\", d)\n\t}\n\n\tif d := cmp.Diff(visible, visibleSetList); d != \"\" {\n\t\tt.Errorf(\"unexpected visible paths (-want +got):\\n%s\", d)\n\t}\n\n\tif d := cmp.Diff(hidden, hiddenSetList); d != \"\" {\n\t\tt.Errorf(\"unexpected hidden paths (-want +got):\\n%s\", d)\n\t}\n\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_deep_squash.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*ContainerImageDeepSquash)(nil)\n\n// ContainerImageDeepSquash implements path and content access for the paths in the squashed tree, but with additional\n// depth from all layers. The goal of this is to allow for producing results where the first layer which the material\n// was added can be annotated in the SBOM (as opposed to the last [visible] layer for the path like with the squashed\n// file resolver).\ntype ContainerImageDeepSquash struct {\n\tsquashed  file.Resolver\n\tallLayers file.Resolver\n}\n\n// NewFromContainerImageDeepSquash returns a new resolver from the perspective of all image layers for the given image.\nfunc NewFromContainerImageDeepSquash(img *image.Image) (*ContainerImageDeepSquash, error) {\n\tsquashed, err := NewFromContainerImageSquash(img)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tallLayers, err := NewFromContainerImageAllLayers(img)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// we will do the work here to mark visibility with results from two resolvers (don't do the work twice!)\n\tallLayers.markVisibility = false\n\n\treturn &ContainerImageDeepSquash{\n\t\tsquashed:  squashed,\n\t\tallLayers: allLayers,\n\t}, nil\n}\n\n// HasPath indicates if the given path exists in the underlying source.\nfunc (i *ContainerImageDeepSquash) HasPath(path string) bool {\n\t// there is no need to merge results from all layers since path-based results should always be adjusted relative to the squashed tree (which is different when considering layers)\n\treturn i.squashed.HasPath(path)\n}\n\n// FilesByPath returns all file.References that match the given paths from any layer in the image.\nfunc (i *ContainerImageDeepSquash) FilesByPath(paths ...string) ([]file.Location, error) {\n\tsquashedLocations, err := i.squashed.FilesByPath(paths...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(squashedLocations) == 0 {\n\t\t// this is meant to return all files in all layers only for paths that are present in the squashed tree. If\n\t\t// there are no results from the squashed tree then there are no paths to raise up.\n\t\treturn nil, nil\n\t}\n\n\tallLayersLocations, err := i.allLayers.FilesByPath(paths...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn i.mergeLocations(squashedLocations, allLayersLocations), nil\n}\n\n// FilesByGlob returns all file.References that match the given path glob pattern from any layer in the image.\nfunc (i *ContainerImageDeepSquash) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tsquashedLocations, err := i.squashed.FilesByGlob(patterns...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(squashedLocations) == 0 {\n\t\t// this is meant to return all files in all layers only for paths that are present in the squashed tree. If\n\t\t// there are no results from the squashed tree then there are no paths to raise up.\n\t\treturn nil, nil\n\t}\n\n\tallLayersLocations, err := i.allLayers.FilesByGlob(patterns...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn i.mergeLocations(squashedLocations, allLayersLocations), nil\n}\n\n// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n// This is helpful when attempting to find a file that is in the same layer or lower as another file.\nfunc (i *ContainerImageDeepSquash) RelativeFileByPath(location file.Location, path string) *file.Location {\n\tif !i.squashed.HasPath(path) {\n\t\treturn nil\n\t}\n\n\tl := i.squashed.RelativeFileByPath(location, path)\n\tif l != nil {\n\t\tloc := l.WithAnnotation(file.VisibleAnnotationKey, file.VisibleAnnotation)\n\t\treturn &loc\n\t}\n\n\tl = i.allLayers.RelativeFileByPath(location, path)\n\tif l != nil {\n\t\tloc := l.WithAnnotation(file.VisibleAnnotationKey, file.HiddenAnnotation)\n\t\treturn &loc\n\t}\n\treturn nil\n}\n\n// FileContentsByLocation fetches file contents for a single file reference.\n// If the path does not exist an error is returned.\nfunc (i *ContainerImageDeepSquash) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\t// regardless of the layer or scope, if the user gives us a specific path+layer location, then we should always\n\t// return the contents for that specific location (thus all-layers scope must always be used)\n\treturn i.allLayers.FileContentsByLocation(location)\n}\n\nfunc (i *ContainerImageDeepSquash) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tsquashedLocations, err := i.squashed.FilesByMIMEType(types...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(squashedLocations) == 0 {\n\t\t// this is meant to return all files in all layers only for paths that are present in the squashed tree. If\n\t\t// there are no results from the squashed tree then there are no paths to raise up.\n\t\treturn nil, nil\n\t}\n\n\tallLayersLocations, err := i.allLayers.FilesByMIMEType(types...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn i.mergeLocations(squashedLocations, allLayersLocations), nil\n}\n\nfunc (i *ContainerImageDeepSquash) AllLocations(ctx context.Context) <-chan file.Location {\n\treturn i.mergeLocationStreams(ctx, i.squashed.AllLocations(ctx), i.allLayers.AllLocations(ctx))\n}\n\nfunc (i *ContainerImageDeepSquash) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\t// regardless of the layer or scope, if the user gives us a specific path+layer location, then we should always\n\t// return the metadata for that specific location (thus all-layers scope must always be used)\n\treturn i.allLayers.FileMetadataByLocation(location)\n}\n\nfunc (i *ContainerImageDeepSquash) mergeLocations(squashedLocations, allLayersLocations []file.Location) []file.Location {\n\tvar result []file.Location\n\n\tif len(squashedLocations) == 0 {\n\t\t// this is meant to return all files in all layers only for paths that are present in the squashed tree. If\n\t\t// there are no results from the squashed tree then there are no paths to raise up.\n\t\treturn nil\n\t}\n\n\t// we are using a location set to deduplicate locations, but we don't use it for the returned\n\t// results in order to preserve the order of the locations from the underlying filetree query\n\tsquashedCoords := file.NewLocationSet()\n\tfor _, l := range squashedLocations {\n\t\tresult = append(result, l.WithAnnotation(file.VisibleAnnotationKey, file.VisibleAnnotation))\n\t\tsquashedCoords.Add(l)\n\t}\n\n\tfor _, l := range allLayersLocations {\n\t\tif squashedCoords.Contains(l) {\n\t\t\t// this path + layer is already in the squashed tree results, skip it (deduplicate location results)\n\t\t\tcontinue\n\t\t}\n\n\t\tif !i.squashed.HasPath(l.RealPath) {\n\t\t\t// if we find a location for a path that matches the query (e.g. **/node_modules) but is not present in the squashed tree, skip it\n\t\t\tcontinue\n\t\t}\n\n\t\t// not only should the real path to the file exist, but the way we took to get there should also exist\n\t\t// (e.g. if we are looking for /etc/passwd, but the real path is /etc/passwd -> /etc/passwd-1, then we should\n\t\t// make certain that /etc/passwd-1 exists)\n\t\tif l.AccessPath != \"\" && !i.squashed.HasPath(l.AccessPath) {\n\t\t\tcontinue\n\t\t}\n\n\t\tresult = append(result, l.WithAnnotation(file.VisibleAnnotationKey, file.HiddenAnnotation))\n\t}\n\n\treturn result\n}\n\nfunc (i *ContainerImageDeepSquash) mergeLocationStreams(ctx context.Context, squashedLocations, allLayersLocations <-chan file.Location) <-chan file.Location {\n\tresult := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(result)\n\n\t\t// we are using a location set to deduplicate locations, but we don't use it for the returned\n\t\t// results in order to preserve the order of the locations from the underlying filetree query\n\t\tsquashedCoords := file.NewLocationSet()\n\t\tvar isDone bool\n\t\tfor l := range squashedLocations {\n\t\t\tif isDone {\n\t\t\t\t// bleed off the rest of the results from the squashed stream and not leak a goroutine\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tisDone = true\n\t\t\tdefault:\n\t\t\t\tresult <- l.WithAnnotation(file.VisibleAnnotationKey, file.VisibleAnnotation)\n\t\t\t\tsquashedCoords.Add(l)\n\t\t\t}\n\t\t}\n\n\t\tfor l := range allLayersLocations {\n\t\t\tif isDone {\n\t\t\t\t// bleed off the rest of the results from the squashed stream and not leak a goroutine\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif squashedCoords.Empty() {\n\t\t\t\t// this is meant to return all files in all layers only for paths that are present in the squashed tree.\n\t\t\t\t// If there are no results from the squashed tree, then there are no paths to raise up.\n\t\t\t\t// That being said, we need to bleed off the rest of the results from the allLayersLocations stream\n\t\t\t\t// and not leak a goroutine.\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif squashedCoords.Contains(l) {\n\t\t\t\t// we've already seen this location from the squashed stream, skip it\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif !i.squashed.HasPath(l.RealPath) {\n\t\t\t\t// if we find a location for a path that matches the query (e.g. **/node_modules) but is not present in the squashed tree, skip it\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// not only should the real path to the file exist, but the way we took to get there should also exist\n\t\t\t// (e.g. if we are looking for /etc/passwd, but the real path is /etc/passwd -> /etc/passwd-1, then we should\n\t\t\t// make certain that /etc/passwd-1 exists)\n\t\t\tif l.AccessPath != \"\" && !i.squashed.HasPath(l.AccessPath) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tisDone = true\n\t\t\tdefault:\n\t\t\t\tresult <- l.WithAnnotation(file.VisibleAnnotationKey, file.HiddenAnnotation)\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn result\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_deep_squash_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/goleak\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype mockSimpleResolver struct {\n\tfile.Resolver // embed to fulfill the interface, panics for stuff not implemented\n\tpaths         *strset.Set\n\tlocations     map[string][]file.Location\n}\n\nfunc newMockSimpleResolver(locations []file.Location) *mockSimpleResolver {\n\tpaths := strset.New()\n\tlocationMap := make(map[string][]file.Location)\n\tfor _, loc := range locations {\n\t\tpaths.Add(loc.RealPath)\n\t\tpaths.Add(loc.AccessPath)\n\t\tlocationMap[loc.RealPath] = append(locationMap[loc.RealPath], loc)\n\t}\n\treturn &mockSimpleResolver{\n\t\tpaths:     paths,\n\t\tlocations: locationMap,\n\t}\n}\n\nfunc (m *mockSimpleResolver) HasPath(p string) bool {\n\treturn m.paths.Has(p)\n}\n\nfunc (m *mockSimpleResolver) FilesByPath(paths ...string) ([]file.Location, error) {\n\tvar results []file.Location\n\tfor _, path := range paths {\n\t\tif locs, exists := m.locations[path]; exists {\n\t\t\tresults = append(results, locs...)\n\t\t}\n\t}\n\treturn results, nil\n}\n\nfunc Test_ContainerImageDeepSquash_FilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname                 string\n\t\tlinkPath             string\n\t\tresolveLayer         uint\n\t\tresolvePath          string\n\t\tforcePositiveHasPath bool\n\t\texpectedRefs         int\n\t}{\n\t\t{\n\t\t\tname:         \"link with previous data\",\n\t\t\tlinkPath:     \"/link-1\",\n\t\t\tresolveLayer: 1,\n\t\t\tresolvePath:  \"/file-1.txt\",\n\t\t\texpectedRefs: 1,\n\t\t},\n\t\t{\n\t\t\tname:         \"link with in layer data\",\n\t\t\tlinkPath:     \"/link-within\",\n\t\t\tresolveLayer: 5,\n\t\t\tresolvePath:  \"/file-3.txt\",\n\t\t\texpectedRefs: 1,\n\t\t},\n\t\t{\n\t\t\tname:         \"link with overridden data\",\n\t\t\tlinkPath:     \"/link-2\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t\t{\n\t\t\tname:         \"indirect link (with overridden data)\",\n\t\t\tlinkPath:     \"/link-indirect\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t\t{\n\t\t\tname:         \"dead link\",\n\t\t\tlinkPath:     \"/link-dead\",\n\t\t\tresolveLayer: 8,\n\t\t\tresolvePath:  \"\",\n\t\t\t// the path should exist, even if the link is dead\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tlinkPath:    \"/bin\",\n\t\t\tresolvePath: \"\",\n\t\t\t// the path should exist, even if we ignore it\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t\t{\n\t\t\tname:         \"parent is a link (with overridden data)\",\n\t\t\tlinkPath:     \"/parent-link/file-4.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t\texpectedRefs: 1,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageDeepSquash(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\thasPath := resolver.HasPath(c.linkPath)\n\t\t\tif !c.forcePositiveHasPath {\n\t\t\t\tif c.resolvePath != \"\" && !hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not\")\n\t\t\t\t} else if c.resolvePath == \"\" && hasPath {\n\t\t\t\t\tt.Errorf(\"expeced HasPath() to NOT indicate existance, but does\")\n\t\t\t\t}\n\t\t\t} else if !hasPath {\n\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not (force path)\")\n\t\t\t}\n\n\t\t\trefs, err := resolver.FilesByPath(c.linkPath)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedRefs := c.expectedRefs\n\t\t\tif c.resolvePath == \"\" {\n\t\t\t\texpectedRefs = 0\n\t\t\t}\n\n\t\t\tif len(refs) != expectedRefs {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tif expectedRefs == 0 {\n\t\t\t\t// nothing else to assert\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tactual := refs[0]\n\n\t\t\tif string(actual.Reference().RealPath) != c.resolvePath {\n\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), c.resolvePath)\n\t\t\t}\n\n\t\t\tif c.resolvePath != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t}\n\n\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\n\t\t\tif layer.Metadata.Index != c.resolveLayer {\n\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, c.resolveLayer)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_ContainerImageDeepSquash_FilesByGlob(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\tglob         string\n\t\tresolveLayer uint\n\t\tresolvePath  string\n\t\texpectedRefs int\n\t}{\n\t\t{\n\t\t\tname:         \"link with previous data\",\n\t\t\tglob:         \"**/link-1\",\n\t\t\tresolveLayer: 1,\n\t\t\tresolvePath:  \"/file-1.txt\",\n\t\t\texpectedRefs: 1,\n\t\t},\n\t\t{\n\t\t\tname:         \"link with in layer data\",\n\t\t\tglob:         \"**/link-within\",\n\t\t\tresolveLayer: 5,\n\t\t\tresolvePath:  \"/file-3.txt\",\n\t\t\texpectedRefs: 1,\n\t\t},\n\t\t{\n\t\t\tname:         \"link with overridden data\",\n\t\t\tglob:         \"**/link-2\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t\t{\n\t\t\tname:         \"indirect link (with overridden data)\",\n\t\t\tglob:         \"**/link-indirect\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t\t{\n\t\t\tname: \"dead link\",\n\t\t\tglob: \"**/link-dead\",\n\t\t\t// dead links are dead! they shouldn't match on globs\n\t\t\tresolvePath: \"\",\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tglob:        \"**/bin\",\n\t\t\tresolvePath: \"\",\n\t\t},\n\t\t{\n\t\t\tname:         \"parent without link\",\n\t\t\tglob:         \"**/parent/*.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t\t{\n\t\t\tname:         \"parent is a link (override)\",\n\t\t\tglob:         \"**/parent-link/file-4.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t\texpectedRefs: 2,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageDeepSquash(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByGlob(c.glob)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedRefs := c.expectedRefs\n\t\t\tif c.resolvePath == \"\" {\n\t\t\t\texpectedRefs = 0\n\t\t\t}\n\n\t\t\tif len(refs) != expectedRefs {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tif expectedRefs == 0 {\n\t\t\t\t// nothing else to assert\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tactual := refs[0]\n\n\t\t\tif string(actual.Reference().RealPath) != c.resolvePath {\n\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), c.resolvePath)\n\t\t\t}\n\n\t\t\tif c.resolvePath != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t}\n\n\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\n\t\t\tif layer.Metadata.Index != c.resolveLayer {\n\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, c.resolveLayer)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_ContainerImageDeepSquash_FilesByMIMEType(t *testing.T) {\n\n\ttests := []struct {\n\t\tfixtureName   string\n\t\tmimeType      string\n\t\texpectedPaths *strset.Set\n\t}{\n\t\t{\n\t\t\tfixtureName:   \"image-simple\",\n\t\t\tmimeType:      \"text/plain\",\n\t\t\texpectedPaths: strset.New(\"/somefile-1.txt\", \"/somefile-2.txt\", \"/really/nested/file-3.txt\"),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixtureName, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", test.fixtureName)\n\n\t\t\tresolver, err := NewFromContainerImageDeepSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tlocations, err := resolver.FilesByMIMEType(test.mimeType)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tassert.Len(t, locations, test.expectedPaths.Size())\n\t\t\tfor _, l := range locations {\n\t\t\t\tassert.True(t, test.expectedPaths.Has(l.RealPath), \"does not have path %q\", l.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_ContainerImageDeepSquash_hasFilesystemIDInLocation(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-duplicate-path\")\n\n\tresolver, err := NewFromContainerImageDeepSquash(img)\n\tassert.NoError(t, err)\n\n\tlocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByGlob(\"*.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByPath(\"/somefile-1.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n}\n\nfunc Test_ContainerImageDeepSquash_FilesContents(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tpath     string\n\t\tcontents []string\n\t}{\n\t\t{\n\t\t\tname: \"one degree\",\n\t\t\tpath: \"link-2\",\n\t\t\tcontents: []string{\n\t\t\t\t\"NEW file override!\",\n\t\t\t\t\"file 2!\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"two degrees\",\n\t\t\tpath: \"link-indirect\",\n\t\t\tcontents: []string{\n\t\t\t\t\"NEW file override!\",\n\t\t\t\t\"file 2!\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"dead link\",\n\t\t\tpath:     \"link-dead\",\n\t\t\tcontents: []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageDeepSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(test.path)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(test.contents))\n\n\t\t\tfor idx, loc := range refs {\n\n\t\t\t\treader, err := resolver.FileContentsByLocation(loc)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tactual, err := io.ReadAll(reader)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tassert.Equal(t, test.contents[idx], string(actual))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_ContainerImageDeepSquash_FilesContents_errorOnDirRequest(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\tresolver, err := NewFromContainerImageDeepSquash(img)\n\tassert.NoError(t, err)\n\n\tvar dirLoc *file.Location\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\t// this is known to be a directory in the test fixture\n\t\tif dirLoc == nil && loc.RealPath == \"/parent\" {\n\t\t\tdirLoc = &loc\n\t\t}\n\t}\n\n\trequire.NotNil(t, dirLoc)\n\n\treader, err := resolver.FileContentsByLocation(*dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n}\n\nfunc Test_ContainerImageDeepSquash_resolvesLinks(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trunner   func(file.Resolver) []file.Location\n\t\texpected []file.Location\n\t}{\n\t\t{\n\t\t\tname: \"by mimetype\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links should not show up when searching mimetype\n\t\t\t\tactualLocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/etc/group\", \"/etc/group\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/passwd\", \"/etc/passwd\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/shadow\", \"/etc/shadow\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"*ink-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\n\t\t\t\t// though this is a link, and it matches to the file, the resolver de-duplicates files\n\t\t\t\t// by the real path, so it is not included in the results\n\t\t\t\t//file.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-2.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// this has two copies in the base image, which overwrites the same location\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-?.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/link-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t// file.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by extension\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 1 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links resolve to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-2\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 2 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// multiple links resolves to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-indirect\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageDeepSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tactual := test.runner(resolver)\n\n\t\t\tcompareLocations(t, test.expected, actual)\n\t\t})\n\t}\n\n}\n\nfunc Test_ContainerImageDeepSquash_AllLocations(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-files-deleted\")\n\n\tresolver, err := NewFromContainerImageDeepSquash(img)\n\tassert.NoError(t, err)\n\n\tpaths := strset.New()\n\tfor loc := range resolver.AllLocations(context.Background()) {\n\t\tpaths.Add(loc.RealPath)\n\t}\n\texpected := []string{\n\t\t\"/Dockerfile\",\n\t\t\"/file-3.txt\",\n\t\t\"/target\",\n\t\t\"/target/file-2.txt\",\n\t}\n\n\t// depending on how the image is built (either from linux or mac), sys and proc might accidentally be added to the image.\n\t// this isn't important for the test, so we remove them.\n\tpaths.Remove(\"/proc\", \"/sys\", \"/dev\", \"/etc\")\n\n\t// remove cache created by Mac Rosetta when emulating different arches\n\tpaths.Remove(\"/.cache/rosetta\", \"/.cache\")\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\tassert.ElementsMatchf(t, expected, pathsList, \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, paths.List()))\n}\n\nfunc TestContainerImageDeepSquash_MergeLocations(t *testing.T) {\n\ttests := []struct {\n\t\tname                string\n\t\tsquashedLocations   file.LocationSet\n\t\tallLayersLocations  file.LocationSet\n\t\texpectedLocations   int\n\t\texpectedVisibleOnly bool\n\t}{\n\t\t{\n\t\t\tname:                \"empty squashed locations returns empty\",\n\t\t\tsquashedLocations:   file.NewLocationSet(),\n\t\t\tallLayersLocations:  file.NewLocationSet(makeLocation(\"/some/path\", 1)),\n\t\t\texpectedLocations:   0,\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"only squashed locations returns all as visible\",\n\t\t\tsquashedLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t\tmakeLocation(\"/path/two\", 1),\n\t\t\t),\n\t\t\tallLayersLocations:  file.NewLocationSet(),\n\t\t\texpectedLocations:   2,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"deduplicates matching locations between squashed and all layers + additional hidden locations\",\n\t\t\tsquashedLocations:   file.NewLocationSet(makeLocation(\"/path/one\", 2)),\n\t\t\tallLayersLocations:  file.NewLocationSet(makeLocation(\"/path/one\", 2), makeLocation(\"/path/one\", 1)),\n\t\t\texpectedLocations:   2,\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname:                \"deduplicates matching locations between squashed and all layers\",\n\t\t\tsquashedLocations:   file.NewLocationSet(makeLocation(\"/path/one\", 1)),\n\t\t\tallLayersLocations:  file.NewLocationSet(makeLocation(\"/path/one\", 1)),\n\t\t\texpectedLocations:   1,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t\t{\n\t\t\tname:              \"all layers locations with paths not in squashed tree are excluded\",\n\t\t\tsquashedLocations: file.NewLocationSet(makeLocation(\"/path/one\", 1)),\n\t\t\tallLayersLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1),             // layer 2 version will be skipped (deduped)\n\t\t\t\tmakeLocation(\"/path/not/in/squashed\", 2), // will be excluded due to path not in squashed\n\t\t\t),\n\t\t\texpectedLocations:   1,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t\t{\n\t\t\tname:              \"includes hidden locations from all layers when path in squashed tree\",\n\t\t\tsquashedLocations: file.NewLocationSet(makeLocation(\"/path/one\", 1), makeLocation(\"/path/two\", 2)),\n\t\t\tallLayersLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1), // will be deduped\n\t\t\t\tmakeLocation(\"/path/one\", 2), // will be included as hidden\n\t\t\t\tmakeLocation(\"/path/two\", 2), // will be deduped\n\t\t\t\tmakeLocation(\"/path/two\", 3), // will be included as hidden\n\t\t\t\tmakeLocation(\"/path/two\", 4), // will be included as hidden\n\t\t\t),\n\t\t\texpectedLocations:   5, // 2 from squashed + 3 from layers for path/two\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"complex scenario with multiple paths and layers\",\n\t\t\tsquashedLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/bin/bash\", 1),\n\t\t\t\tmakeLocation(\"/etc/passwd\", 2),\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 3),\n\t\t\t),\n\t\t\tallLayersLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/bin/bash\", 1),          // will be deduped\n\t\t\t\tmakeLocation(\"/bin/bash\", 0),          // will be included as hidden\n\t\t\t\tmakeLocation(\"/etc/passwd\", 2),        // will be deduped\n\t\t\t\tmakeLocation(\"/etc/passwd\", 0),        // will be included as hidden\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 3),    // will be deduped\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 0),    // will be included as hidden\n\t\t\t\tmakeLocation(\"/tmp/not-in-squash\", 4), // will be excluded - not in squashed\n\t\t\t),\n\t\t\texpectedLocations:   6, // 3 from squashed + 3 hidden from all layers\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"include virtual locations\",\n\t\t\tsquashedLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t\tmakeLocation(\"/path/two\", 2),\n\t\t\t\tmakeLocation(\"/path/to-one\", 2), // a symlink\n\t\t\t),\n\t\t\tallLayersLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1), // will be deduped\n\t\t\t\tmakeVirtualLocation(\"/path/one\", \"/path/to-one\", 2),\n\t\t\t),\n\t\t\texpectedLocations:   4,\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"don't include hidden virtual locations\",\n\t\t\tsquashedLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t),\n\t\t\tallLayersLocations: file.NewLocationSet(\n\t\t\t\tmakeLocation(\"/path/one\", 1),                        // will be deduped\n\t\t\t\tmakeVirtualLocation(\"/path/one\", \"/path/to-one\", 2), // would have been included if /path/to-one was in the squash tree\n\t\t\t),\n\t\t\texpectedLocations:   1,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\n\t\t\tresolver := &ContainerImageDeepSquash{\n\t\t\t\tsquashed:  newMockSimpleResolver(tt.squashedLocations.ToSlice()),\n\t\t\t\tallLayers: newMockSimpleResolver(tt.allLayersLocations.ToSlice()),\n\t\t\t}\n\n\t\t\tsquashedLocations := tt.squashedLocations.ToSlice()\n\t\t\tallLayersLocations := tt.allLayersLocations.ToSlice()\n\n\t\t\tmergedLocations := resolver.mergeLocations(squashedLocations, allLayersLocations)\n\n\t\t\trequire.Len(t, mergedLocations, tt.expectedLocations, \"incorrect number of merged locations (expected %d, found %d)\", tt.expectedLocations, len(mergedLocations))\n\n\t\t\tif tt.expectedLocations > 0 {\n\t\t\t\tonlyVisible := true\n\t\t\t\tfor _, loc := range mergedLocations {\n\t\t\t\t\tif annotation, ok := loc.Annotations[file.VisibleAnnotationKey]; ok {\n\t\t\t\t\t\tif annotation != file.VisibleAnnotation {\n\t\t\t\t\t\t\tonlyVisible = false\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tassert.Equal(t, tt.expectedVisibleOnly, onlyVisible, \"visibility annotation check failed\")\n\n\t\t\t}\n\n\t\t\tvisibleCount := 0\n\t\t\thiddenCount := 0\n\t\t\tfor _, loc := range mergedLocations {\n\t\t\t\tif annotation, ok := loc.Annotations[file.VisibleAnnotationKey]; ok {\n\t\t\t\t\tif annotation == file.VisibleAnnotation {\n\t\t\t\t\t\tvisibleCount++\n\t\t\t\t\t} else if annotation == file.HiddenAnnotation {\n\t\t\t\t\t\thiddenCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// for test cases where we expect some hidden annotations...\n\t\t\tif !tt.expectedVisibleOnly && tt.expectedLocations > 0 {\n\t\t\t\tassert.Greater(t, hiddenCount, 0, \"expected some hidden locations but found none\")\n\t\t\t\tassert.Greater(t, visibleCount, 0, \"expected some visible locations but found none\")\n\t\t\t}\n\n\t\t\t// for test cases where we expect only visible annotations...\n\t\t\tif tt.expectedVisibleOnly && tt.expectedLocations > 0 {\n\t\t\t\tassert.Equal(t, tt.expectedLocations, visibleCount, \"incorrect number of visible locations\")\n\t\t\t\tassert.Equal(t, 0, hiddenCount, \"found hidden locations when expecting only visible\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestContainerImageDeepSquash_MergeLocationStreams(t *testing.T) {\n\ttests := []struct {\n\t\tname                string\n\t\tsquashedLocations   []file.Location\n\t\tallLayersLocations  []file.Location\n\t\texpectedLocations   int\n\t\texpectedVisibleOnly bool\n\t}{\n\t\t{\n\t\t\tname:                \"empty squashed locations returns empty\",\n\t\t\tsquashedLocations:   []file.Location{},\n\t\t\tallLayersLocations:  []file.Location{makeLocation(\"/some/path\", 1)},\n\t\t\texpectedLocations:   0,\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"only squashed locations returns all as visible\",\n\t\t\tsquashedLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t\tmakeLocation(\"/path/two\", 1),\n\t\t\t},\n\t\t\tallLayersLocations:  []file.Location{},\n\t\t\texpectedLocations:   2,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"exact match locations are deduped\",\n\t\t\tsquashedLocations:   []file.Location{makeLocation(\"/path/one\", 1)},\n\t\t\tallLayersLocations:  []file.Location{makeLocation(\"/path/one\", 1)},\n\t\t\texpectedLocations:   1,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"different layers same path not deduped\",\n\t\t\tsquashedLocations:   []file.Location{makeLocation(\"/path/one\", 2)},\n\t\t\tallLayersLocations:  []file.Location{makeLocation(\"/path/one\", 1)},\n\t\t\texpectedLocations:   2, // 1 visible from squashed + 1 hidden from all layers\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname:              \"all layers with path not in squashed are excluded\",\n\t\t\tsquashedLocations: []file.Location{makeLocation(\"/path/one\", 1)},\n\t\t\tallLayersLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 2),\n\t\t\t\tmakeLocation(\"/not/in/squashed\", 3),\n\t\t\t},\n\t\t\texpectedLocations:   2, // 1 from squashed + 1 from all layers (path/one)\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"includes all layer versions for paths in squashed\",\n\t\t\tsquashedLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 3),\n\t\t\t\tmakeLocation(\"/path/two\", 2),\n\t\t\t},\n\t\t\tallLayersLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t\tmakeLocation(\"/path/one\", 2),\n\t\t\t\tmakeLocation(\"/path/two\", 2), // will be deduped\n\t\t\t\tmakeLocation(\"/path/two\", 3),\n\t\t\t\tmakeLocation(\"/path/two\", 4),\n\t\t\t},\n\t\t\texpectedLocations:   6, // 2 from squashed + 4 from all layers\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"complex scenario with multiple paths and layers\",\n\t\t\tsquashedLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/bin/bash\", 5),\n\t\t\t\tmakeLocation(\"/etc/passwd\", 3),\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 2),\n\t\t\t},\n\t\t\tallLayersLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/bin/bash\", 1),\n\t\t\t\tmakeLocation(\"/bin/bash\", 2),\n\t\t\t\tmakeLocation(\"/bin/bash\", 3),\n\t\t\t\tmakeLocation(\"/bin/bash\", 4),\n\t\t\t\tmakeLocation(\"/bin/bash\", 5), // will be deduped\n\t\t\t\tmakeLocation(\"/etc/passwd\", 1),\n\t\t\t\tmakeLocation(\"/etc/passwd\", 2),\n\t\t\t\tmakeLocation(\"/etc/passwd\", 3), // will be deduped\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 1),\n\t\t\t\tmakeLocation(\"/var/log/syslog\", 2),    // will be deduped\n\t\t\t\tmakeLocation(\"/tmp/not-in-squash\", 1), // not included\n\t\t\t},\n\t\t\texpectedLocations:   10, // 3 from squashed + 7 from all layers (3 excluded due to dedup/path)\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"include virtual locations\",\n\t\t\tsquashedLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t\tmakeLocation(\"/path/two\", 2),\n\t\t\t\tmakeLocation(\"/path/to-one\", 2), // a symlink\n\t\t\t},\n\t\t\tallLayersLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1), // will be deduped\n\t\t\t\tmakeVirtualLocation(\"/path/one\", \"/path/to-one\", 2),\n\t\t\t},\n\t\t\texpectedLocations:   4,\n\t\t\texpectedVisibleOnly: false,\n\t\t},\n\t\t{\n\t\t\tname: \"don't include hidden virtual locations\",\n\t\t\tsquashedLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1),\n\t\t\t},\n\t\t\tallLayersLocations: []file.Location{\n\t\t\t\tmakeLocation(\"/path/one\", 1),                        // will be deduped\n\t\t\t\tmakeVirtualLocation(\"/path/one\", \"/path/to-one\", 2), // would have been included if /path/to-one was in the squash tree\n\t\t\t},\n\t\t\texpectedLocations:   1,\n\t\t\texpectedVisibleOnly: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx, cancel := context.WithCancel(context.Background())\n\t\t\tdefer cancel()\n\n\t\t\tresolver := &ContainerImageDeepSquash{\n\t\t\t\tsquashed: newMockSimpleResolver(tt.squashedLocations),\n\t\t\t}\n\n\t\t\tsquashedChan := make(chan file.Location)\n\t\t\tallLayersChan := make(chan file.Location)\n\n\t\t\twg := &sync.WaitGroup{}\n\t\t\twg.Add(2)\n\n\t\t\tgo func() {\n\t\t\t\tdefer wg.Done()\n\t\t\t\tdefer close(squashedChan)\n\t\t\t\tfor _, loc := range tt.squashedLocations {\n\t\t\t\t\tsquashedChan <- loc\n\t\t\t\t}\n\t\t\t}()\n\n\t\t\tgo func() {\n\t\t\t\tdefer wg.Done()\n\t\t\t\tdefer close(allLayersChan)\n\t\t\t\tfor _, loc := range tt.allLayersLocations {\n\t\t\t\t\tallLayersChan <- loc\n\t\t\t\t}\n\t\t\t}()\n\n\t\t\tmergedChan := resolver.mergeLocationStreams(ctx, squashedChan, allLayersChan)\n\n\t\t\tvar mergedLocations []file.Location\n\t\t\tfor loc := range mergedChan {\n\t\t\t\tmergedLocations = append(mergedLocations, loc)\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.expectedLocations, len(mergedLocations), \"incorrect number of merged locations\")\n\n\t\t\tvisibleCount := 0\n\t\t\thiddenCount := 0\n\t\t\tduplicateFound := false\n\n\t\t\t// track seen locations to verify deduplication\n\t\t\tseenLocations := make(map[file.LocationData]int)\n\n\t\t\tfor _, loc := range mergedLocations {\n\t\t\t\t// check for duplicates\n\t\t\t\tseenLocations[loc.LocationData]++\n\t\t\t\tif seenLocations[loc.LocationData] > 1 {\n\t\t\t\t\tduplicateFound = true\n\t\t\t\t}\n\n\t\t\t\t// count annotations\n\t\t\t\tif annotation, ok := loc.Annotations[file.VisibleAnnotationKey]; ok {\n\t\t\t\t\tif annotation == file.VisibleAnnotation {\n\t\t\t\t\t\tvisibleCount++\n\t\t\t\t\t} else if annotation == file.HiddenAnnotation {\n\t\t\t\t\t\thiddenCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tassert.False(t, duplicateFound, \"found duplicate locations when none expected\")\n\n\t\t\t// check visibility annotations\n\t\t\tif tt.expectedVisibleOnly && len(mergedLocations) > 0 {\n\t\t\t\tassert.Equal(t, len(mergedLocations), visibleCount,\n\t\t\t\t\t\"incorrect number of visible locations\")\n\t\t\t\tassert.Equal(t, 0, hiddenCount,\n\t\t\t\t\t\"found hidden locations when expecting only visible\")\n\t\t\t}\n\n\t\t\tif !tt.expectedVisibleOnly && len(mergedLocations) > 0 {\n\t\t\t\tassert.Greater(t, hiddenCount, 0,\n\t\t\t\t\t\"expected some hidden locations but found none\")\n\t\t\t\tassert.Greater(t, visibleCount, 0,\n\t\t\t\t\t\"expected some visible locations but found none\")\n\t\t\t}\n\n\t\t\twg.Wait()\n\n\t\t\tgoleak.VerifyNone(t)\n\t\t})\n\t}\n}\n\nfunc TestContainerImageDeepSquash_MergeLocationStreams_FunCases(t *testing.T) {\n\n\tt.Run(\"concurrent context cancellation\", func(t *testing.T) {\n\t\tupstreamCtx, upstreamCancel := context.WithCancel(context.Background())\n\n\t\tctx, cancel := context.WithCancel(context.Background())\n\n\t\tresolver := &ContainerImageDeepSquash{\n\t\t\tsquashed: newMockSimpleResolver(nil),\n\t\t}\n\n\t\tsquashedChan := make(chan file.Location)\n\t\tallLayersChan := make(chan file.Location)\n\n\t\twg := &sync.WaitGroup{}\n\t\twg.Add(2)\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tdefer close(squashedChan)\n\n\t\t\tcount := 0\n\t\t\tfor {\n\t\t\t\tcount++\n\t\t\t\tloc := makeLocation(fmt.Sprintf(\"/path/%d\", count), 2)\n\t\t\t\tselect {\n\t\t\t\tcase <-upstreamCtx.Done():\n\t\t\t\t\treturn\n\t\t\t\tcase squashedChan <- loc:\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tdefer close(allLayersChan)\n\n\t\t\tcount := 0\n\t\t\tfor {\n\t\t\t\tcount++\n\t\t\t\tloc := makeLocation(fmt.Sprintf(\"/path/%d\", count), 2)\n\t\t\t\tselect {\n\t\t\t\tcase <-upstreamCtx.Done():\n\t\t\t\t\treturn\n\t\t\t\tcase allLayersChan <- loc:\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\n\t\tmergedChan := resolver.mergeLocationStreams(ctx, squashedChan, allLayersChan)\n\n\t\tgo func() {\n\t\t\t<-time.After(5 * time.Millisecond)\n\t\t\tcancel()\n\t\t\ttime.Sleep(10 * time.Millisecond)\n\t\t\tupstreamCancel()\n\t\t}()\n\n\t\tfor range mergedChan {\n\t\t\t// drain\n\t\t}\n\t\twg.Wait()\n\n\t\tgoleak.VerifyNone(t)\n\t})\n\n\tt.Run(\"empty streams\", func(t *testing.T) {\n\t\tctx, cancel := context.WithCancel(context.Background())\n\t\tdefer cancel()\n\n\t\tresolver := &ContainerImageDeepSquash{\n\t\t\tsquashed: newMockSimpleResolver([]file.Location{}),\n\t\t}\n\n\t\tsquashedChan := make(chan file.Location)\n\t\tallLayersChan := make(chan file.Location)\n\t\tclose(squashedChan)\n\t\tclose(allLayersChan)\n\n\t\tmergedChan := resolver.mergeLocationStreams(ctx, squashedChan, allLayersChan)\n\n\t\tvar count int\n\t\t// should return immediately with no results (not block)\n\t\tfor range mergedChan {\n\t\t\tcount++\n\t\t}\n\t\tassert.Equal(t, 0, count, \"expected no results from empty streams\")\n\t})\n\n\tt.Run(\"squashed empty but all layers has data\", func(t *testing.T) {\n\t\tctx, cancel := context.WithCancel(context.Background())\n\t\tdefer cancel()\n\n\t\tresolver := &ContainerImageDeepSquash{\n\t\t\tsquashed: newMockSimpleResolver([]file.Location{}),\n\t\t}\n\n\t\tsquashedChan := make(chan file.Location)\n\t\tallLayersChan := make(chan file.Location)\n\t\tclose(squashedChan)\n\n\t\twg := &sync.WaitGroup{}\n\t\twg.Add(1)\n\n\t\tgo func() {\n\t\t\tdefer close(allLayersChan)\n\t\t\tdefer wg.Done()\n\n\t\t\tallLayersChan <- makeLocation(\"/path/one\", 1)\n\t\t}()\n\n\t\tmergedChan := resolver.mergeLocationStreams(ctx, squashedChan, allLayersChan)\n\n\t\t// should return no results since squashed is empty\n\t\tvar count int\n\t\tfor range mergedChan {\n\t\t\tcount++\n\t\t}\n\n\t\twg.Wait()\n\n\t\tassert.Equal(t, 0, count, \"expected no results when squashed is empty\")\n\t})\n}\n\nfunc makeLocation(path string, layer int) file.Location {\n\treturn file.NewLocationFromCoordinates(file.Coordinates{\n\t\tRealPath:     path,\n\t\tFileSystemID: fmt.Sprintf(\"layer-%d\", layer),\n\t})\n}\n\nfunc makeVirtualLocation(path, access string, layer int) file.Location {\n\treturn file.NewVirtualLocationFromCoordinates(file.Coordinates{\n\t\tRealPath:     path,\n\t\tFileSystemID: fmt.Sprintf(\"layer-%d\", layer),\n\t}, access)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_model.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*ContainerImageModel)(nil)\nvar _ file.OCIMediaTypeResolver = (*ContainerImageModel)(nil)\n\n// LayerInfo holds information about an OCI model layer file stored on disk.\ntype LayerInfo struct {\n\tTempPath  string // Path to the temp file on disk\n\tMediaType string // OCI media type of the layer\n}\n\n// ContainerImageModel is a file.Resolver implementation that provides access to\n// GGUF header data fetched from OCI model artifacts via range-GET requests.\n// This does not fetch the entire model from the registry, only a sliver of it.\ntype ContainerImageModel struct {\n\ttempDir    string                   // temp directory containing all layer files\n\tlayerFiles map[string]LayerInfo     // digest -> layer info (temp path + media type)\n\tlocations  map[string]file.Location // digest -> location\n}\n\n// NewContainerImageModel creates a new resolver with the given temp directory and layer files.\nfunc NewContainerImageModel(tempDir string, layerFiles map[string]LayerInfo) *ContainerImageModel {\n\t// Create locations for all layer files\n\t// Each location has RealPath=\"/\", FileSystemID=digest, AccessPath=\"/\"\n\tlocations := make(map[string]file.Location, len(layerFiles))\n\tfor digest := range layerFiles {\n\t\t// Use NewVirtualLocationFromCoordinates with digest as FileSystemID\n\t\tcoords := file.NewCoordinates(\"/\", digest)\n\t\tlocations[digest] = file.NewVirtualLocationFromCoordinates(coords, \"/\")\n\t}\n\n\treturn &ContainerImageModel{\n\t\ttempDir:    tempDir,\n\t\tlayerFiles: layerFiles,\n\t\tlocations:  locations,\n\t}\n}\n\n// FilesByMediaType returns locations for layers matching the given media type patterns.\n// Patterns support glob-style matching (e.g., \"application/vnd.docker.ai*\").\nfunc (r *ContainerImageModel) FilesByMediaType(types ...string) ([]file.Location, error) {\n\tvar matches []file.Location\n\n\tfor digest, info := range r.layerFiles {\n\t\tfor _, pattern := range types {\n\t\t\tmatched, err := filepath.Match(pattern, info.MediaType)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid media type pattern %q: %w\", pattern, err)\n\t\t\t}\n\t\t\tif matched {\n\t\t\t\tif loc, ok := r.locations[digest]; ok {\n\t\t\t\t\tmatches = append(matches, loc)\n\t\t\t\t}\n\t\t\t\tbreak // Don't add the same location twice\n\t\t\t}\n\t\t}\n\t}\n\n\treturn matches, nil\n}\n\n// FileContentsByLocation returns the contents of the file at the given location.\n// The location's FileSystemID contains the layer digest, which is used to look up the temp file.\n// This method is used as part of the content selection in the generic cataloger when locations\n// are returned by searching for contents by media type.\nfunc (r *ContainerImageModel) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\t// Look up the temp file path using the digest stored in FileSystemID\n\tdigest := location.FileSystemID\n\tinfo, ok := r.layerFiles[digest]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"no file found for digest %q\", digest)\n\t}\n\treturn os.Open(info.TempPath)\n}\n\n// FileMetadataByLocation returns metadata for the file at the given location.\nfunc (r *ContainerImageModel) FileMetadataByLocation(_ file.Location) (m file.Metadata, err error) {\n\treturn m, nil\n}\n\n// HasPath checks if the given path exists in the resolver.\nfunc (r *ContainerImageModel) HasPath(path string) bool {\n\t// The virtual path is \"/\" for all files\n\tif path == \"/\" && len(r.layerFiles) > 0 {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// FilesByPath returns locations for files matching the given paths.\nfunc (r *ContainerImageModel) FilesByPath(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\n// FilesByGlob returns locations for files matching the given glob patterns.\nfunc (r *ContainerImageModel) FilesByGlob(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\n// FilesByMIMEType returns locations for files with the given MIME types.\n// This is not implemented for OCI model artifacts as we don't have MIME type detection.\nfunc (r *ContainerImageModel) FilesByMIMEType(_ ...string) ([]file.Location, error) {\n\t// Not implemented - OCI model artifacts don't have MIME type detection\n\treturn nil, nil\n}\n\n// RelativeFileByPath returns a file at the given path relative to the reference location.\n// This is not applicable for OCI model artifacts.\nfunc (r *ContainerImageModel) RelativeFileByPath(_ file.Location, _ string) *file.Location {\n\t// Not implemented - no layer hierarchy in OCI model artifacts\n\treturn nil\n}\n\n// AllLocations returns all file locations in the resolver.\nfunc (r *ContainerImageModel) AllLocations(ctx context.Context) <-chan file.Location {\n\tch := make(chan file.Location)\n\n\tgo func() {\n\t\tdefer close(ch)\n\n\t\tfor _, loc := range r.locations {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase ch <- loc:\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn ch\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_model_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nconst ggufLayerMediaType = \"application/vnd.docker.ai.gguf.v3\"\n\nfunc TestOCIModelResolver_FilesByMediaType(t *testing.T) {\n\ttempDir := t.TempDir()\n\n\ttests := []struct {\n\t\tname       string\n\t\tlayerFiles map[string]LayerInfo\n\t\tpatterns   []string\n\t\texpected   int\n\t}{\n\t\t{\n\t\t\tname: \"exact match GGUF\",\n\t\t\tlayerFiles: map[string]LayerInfo{\n\t\t\t\t\"sha256:abc123\": {TempPath: filepath.Join(tempDir, \"f1\"), MediaType: ggufLayerMediaType},\n\t\t\t},\n\t\t\tpatterns: []string{ggufLayerMediaType},\n\t\t\texpected: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"glob match docker ai\",\n\t\t\tlayerFiles: map[string]LayerInfo{\n\t\t\t\t\"sha256:abc123\": {TempPath: filepath.Join(tempDir, \"f1\"), MediaType: ggufLayerMediaType},\n\t\t\t},\n\t\t\tpatterns: []string{\"application/vnd.docker.ai*\"},\n\t\t\texpected: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"no match\",\n\t\t\tlayerFiles: map[string]LayerInfo{\n\t\t\t\t\"sha256:abc123\": {TempPath: filepath.Join(tempDir, \"f1\"), MediaType: ggufLayerMediaType},\n\t\t\t},\n\t\t\tpatterns: []string{\"application/json\"},\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple patterns match multiple files\",\n\t\t\tlayerFiles: map[string]LayerInfo{\n\t\t\t\t\"sha256:abc123\": {TempPath: filepath.Join(tempDir, \"f1\"), MediaType: ggufLayerMediaType},\n\t\t\t\t\"sha256:def456\": {TempPath: filepath.Join(tempDir, \"f2\"), MediaType: \"application/octet-stream\"},\n\t\t\t},\n\t\t\tpatterns: []string{ggufLayerMediaType, \"application/octet-stream\"},\n\t\t\texpected: 2,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := NewContainerImageModel(tempDir, test.layerFiles)\n\n\t\t\tlocations, err := resolver.FilesByMediaType(test.patterns...)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, locations, test.expected)\n\t\t})\n\t}\n}\n\nfunc TestOCIModelResolver_FileContentsByLocation(t *testing.T) {\n\ttempDir := t.TempDir()\n\tcontent := []byte(\"test gguf content\")\n\n\ttempFile := filepath.Join(tempDir, \"test.gguf\")\n\trequire.NoError(t, os.WriteFile(tempFile, content, 0600))\n\n\tdigest := \"sha256:abc123\"\n\tlayerFiles := map[string]LayerInfo{\n\t\tdigest: {TempPath: tempFile, MediaType: ggufLayerMediaType},\n\t}\n\n\tresolver := NewContainerImageModel(tempDir, layerFiles)\n\n\ttests := []struct {\n\t\tname      string\n\t\tdigest    string\n\t\twantErr   bool\n\t\twantData  []byte\n\t\terrSubstr string\n\t}{\n\t\t{\n\t\t\tname:     \"valid location returns content\",\n\t\t\tdigest:   digest,\n\t\t\twantErr:  false,\n\t\t\twantData: content,\n\t\t},\n\t\t{\n\t\t\tname:      \"invalid digest returns error\",\n\t\t\tdigest:    \"sha256:invalid\",\n\t\t\twantErr:   true,\n\t\t\terrSubstr: \"no file found for digest\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tloc := file.NewVirtualLocationFromCoordinates(\n\t\t\t\tfile.NewCoordinates(\"/\", test.digest),\n\t\t\t\t\"/\",\n\t\t\t)\n\n\t\t\treader, err := resolver.FileContentsByLocation(loc)\n\n\t\t\tif test.wantErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tassert.Contains(t, err.Error(), test.errSubstr)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\tdefer reader.Close()\n\n\t\t\tdata, err := io.ReadAll(reader)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, test.wantData, data)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_squash.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*ContainerImageSquash)(nil)\n\n// ContainerImageSquash implements path and content access for the Squashed source option for container image data sources.\ntype ContainerImageSquash struct {\n\timg *image.Image\n}\n\n// NewFromContainerImageSquash returns a new resolver from the perspective of the squashed representation for the given image.\nfunc NewFromContainerImageSquash(img *image.Image) (*ContainerImageSquash, error) {\n\tif img.SquashedTree() == nil {\n\t\treturn nil, fmt.Errorf(\"the image does not have have a squashed tree\")\n\t}\n\n\treturn &ContainerImageSquash{\n\t\timg: img,\n\t}, nil\n}\n\n// HasPath indicates if the given path exists in the underlying source.\nfunc (r *ContainerImageSquash) HasPath(path string) bool {\n\treturn r.img.SquashedTree().HasPath(stereoscopeFile.Path(path))\n}\n\n// FilesByPath returns all file.References that match the given paths within the squashed representation of the image.\nfunc (r *ContainerImageSquash) FilesByPath(paths ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, path := range paths {\n\t\tref, err := r.img.SquashedSearchContext.SearchByPath(path, filetree.FollowBasenameLinks)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif !ref.HasReference() {\n\t\t\t// no file found, keep looking through layers\n\t\t\tcontinue\n\t\t}\n\n\t\t// don't consider directories (special case: there is no path information for /)\n\t\tif ref.RealPath == \"/\" {\n\t\t\tcontinue\n\t\t} else if r.img.FileCatalog.Exists(*ref.Reference) {\n\t\t\tmetadata, err := r.img.FileCatalog.Get(*ref.Reference)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to get file metadata for path=%q: %w\", ref.RealPath, err)\n\t\t\t}\n\t\t\t// don't consider directories\n\t\t\tif metadata.IsDir() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// a file may be a symlink, process it as such and resolve it\n\t\tresolvedRef, err := r.img.ResolveLinkByImageSquash(*ref.Reference)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to resolve link from img (ref=%+v): %w\", ref, err)\n\t\t}\n\n\t\tif resolvedRef.HasReference() && !uniqueFileIDs.Contains(*resolvedRef.Reference) {\n\t\t\tuniqueFileIDs.Add(*resolvedRef.Reference)\n\t\t\tuniqueLocations = append(uniqueLocations, file.NewLocationFromImage(path, *resolvedRef.Reference, r.img))\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\n// FilesByGlob returns all file.References that match the given path glob pattern within the squashed representation of the image.\n//\n//nolint:gocognit\nfunc (r *ContainerImageSquash) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, pattern := range patterns {\n\t\tresults, err := r.img.SquashedSearchContext.SearchByGlob(pattern, filetree.FollowBasenameLinks)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to resolve files by glob (%s): %w\", pattern, err)\n\t\t}\n\n\t\tfor _, result := range results {\n\t\t\tif !result.HasReference() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// don't consider directories (special case: there is no path information for /)\n\t\t\tif result.RealPath == \"/\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif r.img.FileCatalog.Exists(*result.Reference) {\n\t\t\t\tmetadata, err := r.img.FileCatalog.Get(*result.Reference)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unable to get file metadata for path=%q: %w\", result.RequestPath, err)\n\t\t\t\t}\n\t\t\t\t// don't consider directories\n\t\t\t\tif metadata.IsDir() {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\t// TODO: alex: can't we just use the result.Reference here instead?\n\t\t\tresolvedLocations, err := r.FilesByPath(string(result.RequestPath))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to find files by path (result=%+v): %w\", result, err)\n\t\t\t}\n\t\t\tfor _, resolvedLocation := range resolvedLocations {\n\t\t\t\tif uniqueFileIDs.Contains(resolvedLocation.Reference()) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tuniqueFileIDs.Add(resolvedLocation.Reference())\n\t\t\t\tuniqueLocations = append(uniqueLocations, resolvedLocation)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\n// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n// This is helpful when attempting to find a file that is in the same layer or lower as another file. For the\n// ContainerImageSquash, this is a simple path lookup.\nfunc (r *ContainerImageSquash) RelativeFileByPath(_ file.Location, path string) *file.Location {\n\tpaths, err := r.FilesByPath(path)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tif len(paths) == 0 {\n\t\treturn nil\n\t}\n\n\treturn &paths[0]\n}\n\n// FileContentsByLocation fetches file contents for a single file reference, regardless of the source layer.\n// If the path does not exist an error is returned.\nfunc (r *ContainerImageSquash) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tentry, err := r.img.FileCatalog.Get(location.Reference())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get metadata for path=%q from file catalog: %w\", location.RealPath, err)\n\t}\n\n\tswitch entry.Type {\n\tcase stereoscopeFile.TypeSymLink, stereoscopeFile.TypeHardLink:\n\t\t// the location we are searching may be a symlink, we should always work with the resolved file\n\t\tlocations, err := r.FilesByPath(location.RealPath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to resolve content location at location=%+v: %w\", location, err)\n\t\t}\n\n\t\tswitch len(locations) {\n\t\tcase 0:\n\t\t\treturn nil, fmt.Errorf(\"link resolution failed while resolving content location: %+v\", location)\n\t\tcase 1:\n\t\t\tlocation = locations[0]\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"link resolution resulted in multiple results while resolving content location: %+v\", location)\n\t\t}\n\tcase stereoscopeFile.TypeDirectory:\n\t\treturn nil, fmt.Errorf(\"unable to get file contents for directory: %+v\", location)\n\t}\n\n\treturn r.img.OpenReference(location.Reference())\n}\n\nfunc (r *ContainerImageSquash) AllLocations(ctx context.Context) <-chan file.Location {\n\tresults := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(results)\n\t\tfor _, ref := range r.img.SquashedTree().AllFiles(stereoscopeFile.AllTypes()...) {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase results <- file.NewLocationFromImage(string(ref.RealPath), ref, r.img):\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}()\n\treturn results\n}\n\nfunc (r *ContainerImageSquash) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\trefs, err := r.img.SquashedSearchContext.SearchByMIMEType(types...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, ref := range refs {\n\t\tif ref.HasReference() {\n\t\t\tif uniqueFileIDs.Contains(*ref.Reference) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlocation := file.NewLocationFromImage(string(ref.RequestPath), *ref.Reference, r.img)\n\n\t\t\tuniqueFileIDs.Add(*ref.Reference)\n\t\t\tuniqueLocations = append(uniqueLocations, location)\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\nfunc (r *ContainerImageSquash) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\treturn fileMetadataByLocation(r.img, location)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/container_image_squash_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestImageSquashResolver_FilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname                 string\n\t\tlinkPath             string\n\t\tresolveLayer         uint\n\t\tresolvePath          string\n\t\tforcePositiveHasPath bool\n\t}{\n\t\t{\n\t\t\tname:         \"link with previous data\",\n\t\t\tlinkPath:     \"/link-1\",\n\t\t\tresolveLayer: 1,\n\t\t\tresolvePath:  \"/file-1.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"link with in layer data\",\n\t\t\tlinkPath:     \"/link-within\",\n\t\t\tresolveLayer: 5,\n\t\t\tresolvePath:  \"/file-3.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"link with overridden data\",\n\t\t\tlinkPath:     \"/link-2\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"indirect link (with overridden data)\",\n\t\t\tlinkPath:     \"/link-indirect\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"dead link\",\n\t\t\tlinkPath:     \"/link-dead\",\n\t\t\tresolveLayer: 8,\n\t\t\tresolvePath:  \"\",\n\t\t\t// the path should exist, even if the link is dead\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tlinkPath:    \"/bin\",\n\t\t\tresolvePath: \"\",\n\t\t\t// the path should exist, even if we ignore it\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t\t{\n\t\t\tname:         \"parent is a link (with overridden data)\",\n\t\t\tlinkPath:     \"/parent-link/file-4.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageSquash(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\thasPath := resolver.HasPath(c.linkPath)\n\t\t\tif !c.forcePositiveHasPath {\n\t\t\t\tif c.resolvePath != \"\" && !hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not\")\n\t\t\t\t} else if c.resolvePath == \"\" && hasPath {\n\t\t\t\t\tt.Errorf(\"expeced HasPath() to NOT indicate existance, but does\")\n\t\t\t\t}\n\t\t\t} else if !hasPath {\n\t\t\t\tt.Errorf(\"expected HasPath() to indicate existance, but did not (force path)\")\n\t\t\t}\n\n\t\t\trefs, err := resolver.FilesByPath(c.linkPath)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedRefs := 1\n\t\t\tif c.resolvePath == \"\" {\n\t\t\t\texpectedRefs = 0\n\t\t\t}\n\n\t\t\tif len(refs) != expectedRefs {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tif expectedRefs == 0 {\n\t\t\t\t// nothing else to assert\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tactual := refs[0]\n\n\t\t\tif string(actual.Reference().RealPath) != c.resolvePath {\n\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), c.resolvePath)\n\t\t\t}\n\n\t\t\tif c.resolvePath != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t}\n\n\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\n\t\t\tif layer.Metadata.Index != c.resolveLayer {\n\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, c.resolveLayer)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestImageSquashResolver_FilesByGlob(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\tglob         string\n\t\tresolveLayer uint\n\t\tresolvePath  string\n\t}{\n\t\t{\n\t\t\tname:         \"link with previous data\",\n\t\t\tglob:         \"**/link-1\",\n\t\t\tresolveLayer: 1,\n\t\t\tresolvePath:  \"/file-1.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"link with in layer data\",\n\t\t\tglob:         \"**/link-within\",\n\t\t\tresolveLayer: 5,\n\t\t\tresolvePath:  \"/file-3.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"link with overridden data\",\n\t\t\tglob:         \"**/link-2\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"indirect link (with overridden data)\",\n\t\t\tglob:         \"**/link-indirect\",\n\t\t\tresolveLayer: 7,\n\t\t\tresolvePath:  \"/file-2.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"dead link\",\n\t\t\tglob: \"**/link-dead\",\n\t\t\t// dead links are dead! they shouldn't match on globs\n\t\t\tresolvePath: \"\",\n\t\t},\n\t\t{\n\t\t\tname:        \"ignore directories\",\n\t\t\tglob:        \"**/bin\",\n\t\t\tresolvePath: \"\",\n\t\t},\n\t\t{\n\t\t\tname:         \"parent without link\",\n\t\t\tglob:         \"**/parent/*.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t},\n\t\t{\n\t\t\tname:         \"parent is a link (override)\",\n\t\t\tglob:         \"**/parent-link/file-4.txt\",\n\t\t\tresolveLayer: 11,\n\t\t\tresolvePath:  \"/parent/file-4.txt\",\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageSquash(img)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByGlob(c.glob)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedRefs := 1\n\t\t\tif c.resolvePath == \"\" {\n\t\t\t\texpectedRefs = 0\n\t\t\t}\n\n\t\t\tif len(refs) != expectedRefs {\n\t\t\t\tt.Fatalf(\"unexpected number of resolutions: %d\", len(refs))\n\t\t\t}\n\n\t\t\tif expectedRefs == 0 {\n\t\t\t\t// nothing else to assert\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tactual := refs[0]\n\n\t\t\tif string(actual.Reference().RealPath) != c.resolvePath {\n\t\t\t\tt.Errorf(\"bad resolve path: '%s'!='%s'\", string(actual.Reference().RealPath), c.resolvePath)\n\t\t\t}\n\n\t\t\tif c.resolvePath != \"\" && string(actual.Reference().RealPath) != actual.RealPath {\n\t\t\t\tt.Errorf(\"we should always prefer real paths over ones with links\")\n\t\t\t}\n\n\t\t\tlayer := img.FileCatalog.Layer(actual.Reference())\n\n\t\t\tif layer.Metadata.Index != c.resolveLayer {\n\t\t\t\tt.Errorf(\"bad resolve layer: '%d'!='%d'\", layer.Metadata.Index, c.resolveLayer)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_imageSquashResolver_FilesByMIMEType(t *testing.T) {\n\n\ttests := []struct {\n\t\tfixtureName   string\n\t\tmimeType      string\n\t\texpectedPaths *strset.Set\n\t}{\n\t\t{\n\t\t\tfixtureName:   \"image-simple\",\n\t\t\tmimeType:      \"text/plain\",\n\t\t\texpectedPaths: strset.New(\"/somefile-1.txt\", \"/somefile-2.txt\", \"/really/nested/file-3.txt\"),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixtureName, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", test.fixtureName)\n\n\t\t\tresolver, err := NewFromContainerImageSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tlocations, err := resolver.FilesByMIMEType(test.mimeType)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tassert.Len(t, locations, test.expectedPaths.Size())\n\t\t\tfor _, l := range locations {\n\t\t\t\tassert.True(t, test.expectedPaths.Has(l.RealPath), \"does not have path %q\", l.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_imageSquashResolver_hasFilesystemIDInLocation(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-duplicate-path\")\n\n\tresolver, err := NewFromContainerImageSquash(img)\n\tassert.NoError(t, err)\n\n\tlocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByGlob(\"*.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n\tlocations, err = resolver.FilesByPath(\"/somefile-1.txt\")\n\tassert.NoError(t, err)\n\tassert.NotEmpty(t, locations)\n\tfor _, location := range locations {\n\t\tassert.NotEmpty(t, location.FileSystemID)\n\t}\n\n}\n\nfunc TestSquashImageResolver_FilesContents(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tpath     string\n\t\tcontents []string\n\t}{\n\t\t{\n\t\t\tname: \"one degree\",\n\t\t\tpath: \"link-2\",\n\t\t\tcontents: []string{\n\t\t\t\t\"NEW file override!\", // always from the squashed perspective\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"two degrees\",\n\t\t\tpath: \"link-indirect\",\n\t\t\tcontents: []string{\n\t\t\t\t\"NEW file override!\", // always from the squashed perspective\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"dead link\",\n\t\t\tpath:     \"link-dead\",\n\t\t\tcontents: []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(test.path)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(test.contents))\n\n\t\t\tfor idx, loc := range refs {\n\n\t\t\t\treader, err := resolver.FileContentsByLocation(loc)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tactual, err := io.ReadAll(reader)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tassert.Equal(t, test.contents[idx], string(actual))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSquashImageResolver_FilesContents_errorOnDirRequest(t *testing.T) {\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\tresolver, err := NewFromContainerImageSquash(img)\n\tassert.NoError(t, err)\n\n\tvar dirLoc *file.Location\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tentry, err := resolver.img.FileCatalog.Get(loc.Reference())\n\t\trequire.NoError(t, err)\n\t\tif entry.Metadata.IsDir() {\n\t\t\tdirLoc = &loc\n\t\t\tbreak\n\t\t}\n\t}\n\n\trequire.NotNil(t, dirLoc)\n\n\treader, err := resolver.FileContentsByLocation(*dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n}\n\nfunc Test_imageSquashResolver_resolvesLinks(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trunner   func(file.Resolver) []file.Location\n\t\texpected []file.Location\n\t}{\n\t\t{\n\t\t\tname: \"by mimetype\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links should not show up when searching mimetype\n\t\t\t\tactualLocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/etc/group\", \"/etc/group\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/passwd\", \"/etc/passwd\"),\n\t\t\t\tfile.NewVirtualLocation(\"/etc/shadow\", \"/etc/shadow\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"*ink-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\n\t\t\t\t// though this is a link, and it matches to the file, the resolver de-duplicates files\n\t\t\t\t// by the real path, so it is not included in the results\n\t\t\t\t//file.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-2.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// this has two copies in the base image, which overwrites the same location\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-?.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/link-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t// file.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by extension\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"/file-1.txt\", \"/file-1.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/file-2.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/file-3.txt\", \"/file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"/parent/file-4.txt\", \"/parent/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 1 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links resolve to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-2\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 2 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// multiple links resolves to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-indirect\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"/file-2.txt\", \"/link-indirect\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-symlinks\")\n\n\t\t\tresolver, err := NewFromContainerImageSquash(img)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tactual := test.runner(resolver)\n\n\t\t\tcompareLocations(t, test.expected, actual)\n\t\t})\n\t}\n\n}\n\nfunc compareLocations(t *testing.T, expected, actual []file.Location) {\n\tt.Helper()\n\tignoreUnexported := cmpopts.IgnoreUnexported(file.LocationData{})\n\tignoreUnexportedCoord := cmpopts.IgnoreUnexported(file.Coordinates{})\n\tignoreMetadata := cmpopts.IgnoreFields(file.LocationMetadata{}, \"Annotations\")\n\tignoreFS := cmpopts.IgnoreFields(file.Coordinates{}, \"FileSystemID\")\n\n\tslices.SortFunc(expected, locationSorter)\n\tslices.SortFunc(actual, locationSorter)\n\n\tif d := cmp.Diff(expected, actual,\n\t\tignoreUnexported,\n\t\tignoreUnexportedCoord,\n\t\tignoreFS,\n\t\tignoreMetadata,\n\t); d != \"\" {\n\n\t\tt.Errorf(\"unexpected locations (-want +got):\\n%s\", d)\n\t}\n\n}\n\n// locationSorter always sorts only by path information since test fixtures here only have filesystem IDs\n// for one side of the comparison (expected) and not the other (actual).\nfunc locationSorter(a, b file.Location) int {\n\tif a.AccessPath != b.AccessPath {\n\t\treturn strings.Compare(a.AccessPath, b.AccessPath)\n\t}\n\n\treturn strings.Compare(a.RealPath, b.RealPath)\n}\n\nfunc TestSquashResolver_AllLocations(t *testing.T) {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", \"image-files-deleted\")\n\n\tresolver, err := NewFromContainerImageSquash(img)\n\tassert.NoError(t, err)\n\n\tpaths := strset.New()\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tpaths.Add(loc.RealPath)\n\t}\n\texpected := []string{\n\t\t\"/Dockerfile\",\n\t\t\"/file-3.txt\",\n\t\t\"/target\",\n\t\t\"/target/file-2.txt\",\n\t}\n\n\t// depending on how the image is built (either from linux or mac), sys and proc might accidentally be added to the image.\n\t// this isn't important for the test, so we remove them.\n\tpaths.Remove(\"/proc\", \"/sys\", \"/dev\", \"/etc\")\n\n\t// Remove cache created by Mac Rosetta when emulating different arches\n\tpaths.Remove(\"/.cache/rosetta\", \"/.cache\")\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\tassert.ElementsMatchf(t, expected, pathsList, \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, paths.List()))\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/deferred.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*Deferred)(nil)\n\nfunc NewDeferred(creator func() (file.Resolver, error)) *Deferred {\n\treturn &Deferred{\n\t\tcreator: creator,\n\t}\n}\n\ntype Deferred struct {\n\tcreator  func() (file.Resolver, error)\n\tresolver file.Resolver\n}\n\nfunc (d *Deferred) getResolver() (file.Resolver, error) {\n\tif d.resolver == nil {\n\t\tresolver, err := d.creator()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\td.resolver = resolver\n\t}\n\treturn d.resolver, nil\n}\n\nfunc (d *Deferred) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.FileContentsByLocation(location)\n}\n\nfunc (d *Deferred) HasPath(s string) bool {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\tlog.Debugf(\"unable to get resolver: %v\", err)\n\t\treturn false\n\t}\n\treturn r.HasPath(s)\n}\n\nfunc (d *Deferred) FilesByPath(paths ...string) ([]file.Location, error) {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.FilesByPath(paths...)\n}\n\nfunc (d *Deferred) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.FilesByGlob(patterns...)\n}\n\nfunc (d *Deferred) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.FilesByMIMEType(types...)\n}\n\nfunc (d *Deferred) RelativeFileByPath(location file.Location, path string) *file.Location {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn r.RelativeFileByPath(location, path)\n}\n\nfunc (d *Deferred) AllLocations(ctx context.Context) <-chan file.Location {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\tlog.Debugf(\"unable to get resolver: %v\", err)\n\t\treturn nil\n\t}\n\treturn r.AllLocations(ctx)\n}\n\nfunc (d *Deferred) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\tr, err := d.getResolver()\n\tif err != nil {\n\t\treturn file.Metadata{}, err\n\t}\n\treturn r.FileMetadataByLocation(location)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/deferred_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_NewDeferredResolver(t *testing.T) {\n\tcreatorCalled := false\n\n\tdeferredResolver := NewDeferred(func() (file.Resolver, error) {\n\t\tcreatorCalled = true\n\t\treturn file.NewMockResolverForPaths(), nil\n\t})\n\n\trequire.False(t, creatorCalled)\n\trequire.Nil(t, deferredResolver.resolver)\n\n\t_, _ = deferredResolver.FilesByGlob(\"**/*\")\n\n\trequire.True(t, creatorCalled)\n\trequire.NotNil(t, deferredResolver.resolver)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/directory.go",
    "content": "package fileresolver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar ErrSkipPath = errors.New(\"skip path\")\n\nvar _ file.Resolver = (*Directory)(nil)\n\n// Directory implements path and content access for the directory data source.\ntype Directory struct {\n\tFiletreeResolver\n\tpath    string\n\tindexer *directoryIndexer\n}\n\nfunc NewFromDirectory(root, base string, pathFilters ...PathIndexVisitor) (*Directory, error) {\n\tresolver, err := newFromDirectoryWithoutIndex(root, base, pathFilters...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn resolver, resolver.buildIndex()\n}\n\nfunc newFromDirectoryWithoutIndex(root, base string, pathFilters ...PathIndexVisitor) (*Directory, error) {\n\tchroot, err := NewChrootContextFromCWD(root, base)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to interpret chroot context: %w\", err)\n\t}\n\n\tcleanRoot := chroot.Root()\n\tcleanBase := chroot.Base()\n\n\treturn &Directory{\n\t\tpath: cleanRoot,\n\t\tFiletreeResolver: FiletreeResolver{\n\t\t\tChroot: *chroot,\n\t\t\tTree:   filetree.New(),\n\t\t\tIndex:  filetree.NewIndex(),\n\t\t\tOpener: nativeOSFileOpener,\n\t\t},\n\t\tindexer: newDirectoryIndexer(cleanRoot, cleanBase, pathFilters...),\n\t}, nil\n}\n\nfunc (r *Directory) buildIndex() error {\n\tif r.indexer == nil {\n\t\treturn fmt.Errorf(\"no directory indexer configured\")\n\t}\n\ttree, index, err := r.indexer.build()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tr.Tree = tree\n\tr.Index = index\n\tr.SearchContext = filetree.NewSearchContext(tree, index)\n\n\treturn nil\n}\n\n// Stringer to represent a directory path data source\nfunc (r *Directory) String() string {\n\treturn fmt.Sprintf(\"dir:%s\", r.path)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/directory_indexer.go",
    "content": "package fileresolver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/internal/windows\"\n)\n\ntype PathIndexVisitor func(string, string, os.FileInfo, error) error\n\ntype directoryIndexer struct {\n\tpath              string\n\tbase              string\n\tpathIndexVisitors []PathIndexVisitor\n\terrPaths          map[string]error\n\ttree              filetree.ReadWriter\n\tindex             filetree.Index\n}\n\nfunc newDirectoryIndexer(path, base string, visitors ...PathIndexVisitor) *directoryIndexer {\n\ti := &directoryIndexer{\n\t\tpath:  path,\n\t\tbase:  base,\n\t\ttree:  filetree.New(),\n\t\tindex: filetree.NewIndex(),\n\t\tpathIndexVisitors: append(\n\t\t\t[]PathIndexVisitor{\n\t\t\t\trequireFileInfo,\n\t\t\t\tdisallowByFileType,\n\t\t\t\tskipPathsByMountTypeAndName(path),\n\t\t\t},\n\t\t\tvisitors...,\n\t\t),\n\t\terrPaths: make(map[string]error),\n\t}\n\n\t// these additional stateful visitors should be the first thing considered when walking / indexing\n\ti.pathIndexVisitors = append(\n\t\t[]PathIndexVisitor{\n\t\t\ti.disallowRevisitingVisitor,\n\t\t\ti.disallowFileAccessErr,\n\t\t},\n\t\ti.pathIndexVisitors...,\n\t)\n\n\treturn i\n}\n\nfunc (r *directoryIndexer) build() (filetree.Reader, filetree.IndexReader, error) {\n\treturn r.tree, r.index, indexAllRoots(r.path, r.indexTree)\n}\n\nfunc indexAllRoots(root string, indexer func(string, *progress.AtomicStage) ([]string, error)) error {\n\t// why account for multiple roots? To cover cases when there is a symlink that references above the root path,\n\t// in which case we need to additionally index where the link resolves to. it's for this reason why the filetree\n\t// must be relative to the root of the filesystem (and not just relative to the given path).\n\tpathsToIndex := []string{root}\n\tfullPathsMap := map[string]struct{}{}\n\n\tprog := bus.StartIndexingFiles(root)\n\tdefer prog.SetCompleted()\nloop:\n\tfor {\n\t\tvar currentPath string\n\t\tswitch len(pathsToIndex) {\n\t\tcase 0:\n\t\t\tbreak loop\n\t\tcase 1:\n\t\t\tcurrentPath, pathsToIndex = pathsToIndex[0], nil\n\t\tdefault:\n\t\t\tcurrentPath, pathsToIndex = pathsToIndex[0], pathsToIndex[1:]\n\t\t}\n\n\t\tadditionalRoots, err := indexer(currentPath, prog.AtomicStage)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to index filesystem path=%q: %w\", currentPath, err)\n\t\t}\n\n\t\tfor _, newRoot := range additionalRoots {\n\t\t\tif _, ok := fullPathsMap[newRoot]; !ok {\n\t\t\t\tfullPathsMap[newRoot] = struct{}{}\n\t\t\t\tpathsToIndex = append(pathsToIndex, newRoot)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (r *directoryIndexer) indexTree(root string, stager *progress.AtomicStage) ([]string, error) {\n\tlog.WithFields(\"path\", root).Trace(\"indexing filetree\")\n\n\tvar roots []string\n\tvar err error\n\n\troot, err = filepath.Abs(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// we want to be able to index single files with the directory resolver. However, we should also allow for attempting\n\t// to index paths that do not exist (that is, a root that does not exist is not an error case that should stop indexing).\n\t// For this reason we look for an opportunity to discover if the given root is a file, and if so add a single root,\n\t// but continue forth with index regardless if the given root path exists or not.\n\tfi, err := os.Stat(root)\n\tif err != nil && fi != nil && !fi.IsDir() {\n\t\t// note: we want to index the path regardless of an error stat-ing the path\n\t\tnewRoot, _ := r.indexPath(root, fi, nil)\n\t\tif newRoot != \"\" {\n\t\t\troots = append(roots, newRoot)\n\t\t}\n\t\treturn roots, nil\n\t}\n\n\tshouldIndexFullTree, err := isRealPath(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !shouldIndexFullTree {\n\t\tnewRoots, err := r.indexBranch(root, stager)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to index branch=%q: %w\", root, err)\n\t\t}\n\n\t\troots = append(roots, newRoots...)\n\n\t\treturn roots, nil\n\t}\n\n\terr = filepath.Walk(root,\n\t\tfunc(path string, info os.FileInfo, err error) error {\n\t\t\tstager.Set(path)\n\n\t\t\tnewRoot, err := r.indexPath(path, info, err)\n\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif newRoot != \"\" {\n\t\t\t\troots = append(roots, newRoot)\n\t\t\t}\n\n\t\t\treturn nil\n\t\t})\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to index root=%q: %w\", root, err)\n\t}\n\n\treturn roots, nil\n}\n\nfunc isRealPath(root string) (bool, error) {\n\trootParent := filepath.Clean(filepath.Dir(root))\n\n\trealRootParent, err := filepath.EvalSymlinks(rootParent)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\trealRootParent = filepath.Clean(realRootParent)\n\n\treturn rootParent == realRootParent, nil\n}\n\nfunc (r *directoryIndexer) indexBranch(root string, stager *progress.AtomicStage) ([]string, error) {\n\trootRealPath, err := filepath.EvalSymlinks(root)\n\tif err != nil {\n\t\tvar pathErr *os.PathError\n\t\tif errors.As(err, &pathErr) {\n\t\t\t// we can't index the path, but we shouldn't consider this to be fatal\n\t\t\t// TODO: known-unknowns\n\t\t\tlog.WithFields(\"root\", root, \"error\", err).Trace(\"unable to evaluate symlink while indexing branch\")\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn nil, err\n\t}\n\n\t// there is a symlink within the path to the root, we need to index the real root parent first\n\t// then capture the symlinks to the root path\n\troots, err := r.indexTree(rootRealPath, stager)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to index real root=%q: %w\", rootRealPath, err)\n\t}\n\n\t// walk down all ancestor paths and shallow-add non-existing elements to the tree\n\tfor idx, p := range allContainedPaths(root) {\n\t\tvar targetPath string\n\t\tif idx != 0 {\n\t\t\tparent := path.Dir(p)\n\t\t\tcleanParent, err := filepath.EvalSymlinks(parent)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to evaluate symlink for contained path parent=%q: %w\", parent, err)\n\t\t\t}\n\t\t\ttargetPath = filepath.Join(cleanParent, filepath.Base(p))\n\t\t} else {\n\t\t\ttargetPath = p\n\t\t}\n\n\t\tstager.Set(targetPath)\n\n\t\tlstat, err := os.Lstat(targetPath)\n\t\tnewRoot, err := r.indexPath(targetPath, lstat, err)\n\t\tif err != nil && !errors.Is(err, ErrSkipPath) && !errors.Is(err, fs.SkipDir) {\n\t\t\treturn nil, fmt.Errorf(\"unable to index ancestor path=%q: %w\", targetPath, err)\n\t\t}\n\t\tif newRoot != \"\" {\n\t\t\troots = append(roots, newRoot)\n\t\t}\n\t}\n\n\treturn roots, nil\n}\n\nfunc allContainedPaths(p string) []string {\n\tvar all []string\n\tvar currentPath string\n\n\tcleanPath := strings.TrimSpace(p)\n\n\tif cleanPath == \"\" {\n\t\treturn nil\n\t}\n\n\t// iterate through all parts of the path, replacing path elements with link resolutions where possible.\n\tfor idx, part := range strings.Split(filepath.Clean(cleanPath), file.DirSeparator) {\n\t\tif idx == 0 && part == \"\" {\n\t\t\tcurrentPath = file.DirSeparator\n\t\t\tcontinue\n\t\t}\n\n\t\t// cumulatively gather where we are currently at and provide a rich object\n\t\tcurrentPath = path.Join(currentPath, part)\n\t\tall = append(all, currentPath)\n\t}\n\treturn all\n}\n\nfunc (r *directoryIndexer) indexPath(givenPath string, info os.FileInfo, err error) (string, error) {\n\t// ignore any path which a filter function returns true\n\tfor _, filterFn := range r.pathIndexVisitors {\n\t\tif filterFn == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif filterErr := filterFn(r.base, givenPath, info, err); filterErr != nil {\n\t\t\tif errors.Is(filterErr, fs.SkipDir) {\n\t\t\t\t// signal to walk() to skip this directory entirely (even if we're processing a file)\n\t\t\t\treturn \"\", filterErr\n\t\t\t}\n\t\t\t// skip this path but don't affect walk() trajectory\n\t\t\treturn \"\", nil\n\t\t}\n\t}\n\n\tif info == nil {\n\t\t// walk may not be able to provide a FileInfo object, don't allow for this to stop indexing; keep track of the paths and continue.\n\t\tr.errPaths[givenPath] = fmt.Errorf(\"no file info observable at path=%q\", givenPath)\n\t\treturn \"\", nil\n\t}\n\n\t// here we check to see if we need to normalize paths to posix on the way in coming from windows\n\tif windows.HostRunningOnWindows() {\n\t\tgivenPath = windows.ToPosix(givenPath)\n\t}\n\n\tnewRoot, err := r.addPathToIndex(givenPath, info)\n\tif r.isFileAccessErr(givenPath, err) {\n\t\treturn \"\", nil\n\t}\n\n\treturn newRoot, nil\n}\n\nfunc (r *directoryIndexer) disallowFileAccessErr(_, path string, _ os.FileInfo, err error) error {\n\tif r.isFileAccessErr(path, err) {\n\t\treturn ErrSkipPath\n\t}\n\treturn nil\n}\n\nfunc (r *directoryIndexer) isFileAccessErr(path string, err error) bool {\n\t// don't allow for errors to stop indexing, keep track of the paths and continue.\n\tif err != nil {\n\t\tlog.Warnf(\"unable to access path=%q: %+v\", path, err)\n\t\tr.errPaths[path] = err\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (r directoryIndexer) addPathToIndex(p string, info os.FileInfo) (string, error) {\n\tswitch t := file.TypeFromMode(info.Mode()); t {\n\tcase file.TypeSymLink:\n\t\treturn r.addSymlinkToIndex(p, info)\n\tcase file.TypeDirectory:\n\t\treturn \"\", r.addDirectoryToIndex(p, info)\n\tcase file.TypeRegular:\n\t\treturn \"\", r.addFileToIndex(p, info)\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unsupported file type: %s\", t)\n\t}\n}\n\nfunc (r directoryIndexer) addDirectoryToIndex(p string, info os.FileInfo) error {\n\tref, err := r.tree.AddDir(file.Path(p))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmetadata := NewMetadataFromPath(p, info)\n\tr.index.Add(*ref, metadata)\n\n\treturn nil\n}\n\nfunc (r directoryIndexer) addFileToIndex(p string, info os.FileInfo) error {\n\tref, err := r.tree.AddFile(file.Path(p))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmetadata := NewMetadataFromPath(p, info)\n\tr.index.Add(*ref, metadata)\n\n\treturn nil\n}\n\nfunc (r directoryIndexer) addSymlinkToIndex(p string, info os.FileInfo) (string, error) {\n\tlinkTarget, err := os.Readlink(p)\n\tif err != nil {\n\t\tisOnWindows := windows.HostRunningOnWindows()\n\t\tif isOnWindows {\n\t\t\tp = windows.FromPosix(p)\n\t\t}\n\n\t\tlinkTarget, err = filepath.EvalSymlinks(p)\n\n\t\tif isOnWindows {\n\t\t\tp = windows.ToPosix(p)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unable to readlink for path=%q: %w\", p, err)\n\t\t}\n\t}\n\n\tif filepath.IsAbs(linkTarget) {\n\t\tlinkTarget = filepath.Clean(linkTarget)\n\t\t// if the link is absolute (e.g, /bin/ls -> /bin/busybox) we need to\n\t\t// resolve relative to the root of the base directory, if it is not already\n\t\t// prefixed with a volume name\n\t\tif filepath.VolumeName(linkTarget) == \"\" {\n\t\t\tlinkTarget = filepath.Join(r.base, filepath.Clean(linkTarget))\n\t\t}\n\t} else {\n\t\t// if the link is not absolute (e.g, /dev/stderr -> fd/2 ) we need to\n\t\t// resolve it relative to the directory in question (e.g. resolve to\n\t\t// /dev/fd/2)\n\t\tif r.base == \"\" {\n\t\t\tlinkTarget = filepath.Join(filepath.Dir(p), linkTarget)\n\t\t} else {\n\t\t\t// if the base is set, then we first need to resolve the link,\n\t\t\t// before finding it's location in the base\n\t\t\tdir, err := filepath.Rel(r.base, filepath.Dir(p))\n\t\t\t// if the relative path to the base contains \"..\",i.e. p is the parent or ancestor of the base\n\t\t\t// For example:\n\t\t\t// dir: \"/root/asymlink\" -> \"/root/realdir\" (linkTarget:\"realdir\")\n\t\t\t// base: \"/root/asymlink\"\n\t\t\t// so the relative path of /root to the \"/root/asymlink\" is \"..\"\n\t\t\t// we cannot directly concatenate \"..\" to \"/root/symlink\",however,\n\t\t\t// the parent directory of linkTarget should be \"/root\"\n\t\t\tfor strings.HasPrefix(dir, \"..\") {\n\t\t\t\tif strings.HasPrefix(dir, \"../\") {\n\t\t\t\t\tdir = strings.TrimPrefix(dir, \"../\")\n\t\t\t\t} else {\n\t\t\t\t\tdir = strings.TrimPrefix(dir, \"..\")\n\t\t\t\t}\n\t\t\t\tlastSlash := strings.LastIndex(r.base, \"/\")\n\t\t\t\tif lastSlash != -1 {\n\t\t\t\t\tr.base = r.base[:lastSlash]\n\t\t\t\t}\n\t\t\t\t// In case of the root directory\n\t\t\t\tif r.base == \"\" {\n\t\t\t\t\tr.base = \"/\"\n\t\t\t\t}\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", fmt.Errorf(\"unable to resolve relative path for path=%q: %w\", p, err)\n\t\t\t}\n\t\t\tlinkTarget = filepath.Join(r.base, filepath.Clean(filepath.Join(\"/\", dir, linkTarget)))\n\t\t}\n\t}\n\n\tref, err := r.tree.AddSymLink(file.Path(p), file.Path(linkTarget))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\ttargetAbsPath := linkTarget\n\tif !filepath.IsAbs(targetAbsPath) {\n\t\ttargetAbsPath = filepath.Clean(filepath.Join(path.Dir(p), linkTarget))\n\t}\n\n\tmetadata := NewMetadataFromPath(p, info)\n\tmetadata.LinkDestination = linkTarget\n\tr.index.Add(*ref, metadata)\n\n\t// if the target path does not exist, then do not report it as a new root, or try to send\n\t// syft parsing there.\n\tif _, err := os.Stat(targetAbsPath); err != nil && errors.Is(err, os.ErrNotExist) {\n\t\tlog.Debugf(\"link %s points to unresolved path %s, ignoring target as new root\", p, targetAbsPath)\n\t\ttargetAbsPath = \"\"\n\t}\n\n\treturn targetAbsPath, nil\n}\n\nfunc (r directoryIndexer) hasBeenIndexed(p string) (bool, *file.Metadata) {\n\tfilePath := file.Path(p)\n\tif !r.tree.HasPath(filePath) {\n\t\treturn false, nil\n\t}\n\n\texists, ref, err := r.tree.File(filePath)\n\tif err != nil || !exists || !ref.HasReference() {\n\t\treturn false, nil\n\t}\n\n\t// cases like \"/\" will be in the tree, but not been indexed yet (a special case). We want to capture\n\t// these cases as new paths to index.\n\tif !ref.HasReference() {\n\t\treturn false, nil\n\t}\n\n\tentry, err := r.index.Get(*ref.Reference)\n\tif err != nil {\n\t\treturn false, nil\n\t}\n\n\treturn true, &entry.Metadata\n}\n\nfunc (r *directoryIndexer) disallowRevisitingVisitor(_, path string, _ os.FileInfo, _ error) error {\n\t// this prevents visiting:\n\t// - link destinations twice, once for the real file and another through the virtual path\n\t// - infinite link cycles\n\tif indexed, metadata := r.hasBeenIndexed(path); indexed {\n\t\tif metadata.IsDir() {\n\t\t\t// signal to walk() that we should skip this directory entirely\n\t\t\treturn fs.SkipDir\n\t\t}\n\t\treturn ErrSkipPath\n\t}\n\treturn nil\n}\n\nfunc disallowByFileType(_, _ string, info os.FileInfo, _ error) error {\n\tif info == nil {\n\t\t// we can't filter out by filetype for non-existent files\n\t\treturn nil\n\t}\n\tswitch file.TypeFromMode(info.Mode()) {\n\tcase file.TypeCharacterDevice, file.TypeSocket, file.TypeBlockDevice, file.TypeFIFO, file.TypeIrregular:\n\t\treturn ErrSkipPath\n\t\t// note: symlinks that point to these files may still get by.\n\t\t// We handle this later in processing to help prevent against infinite links traversal.\n\t}\n\n\treturn nil\n}\n\nfunc requireFileInfo(_, _ string, info os.FileInfo, _ error) error {\n\tif info == nil {\n\t\treturn ErrSkipPath\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/directory_indexer_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n)\n\ntype indexerMock struct {\n\tobservedRoots   []string\n\tadditionalRoots map[string][]string\n}\n\nfunc (m *indexerMock) indexer(s string, _ *progress.AtomicStage) ([]string, error) {\n\tm.observedRoots = append(m.observedRoots, s)\n\treturn m.additionalRoots[s], nil\n}\n\nfunc Test_indexAllRoots(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\troot          string\n\t\tmock          indexerMock\n\t\texpectedRoots []string\n\t}{\n\t\t{\n\t\t\tname: \"no additional roots\",\n\t\t\troot: \"a/place\",\n\t\t\tmock: indexerMock{\n\t\t\t\tadditionalRoots: make(map[string][]string),\n\t\t\t},\n\t\t\texpectedRoots: []string{\n\t\t\t\t\"a/place\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"additional roots from a single call\",\n\t\t\troot: \"a/place\",\n\t\t\tmock: indexerMock{\n\t\t\t\tadditionalRoots: map[string][]string{\n\t\t\t\t\t\"a/place\": {\n\t\t\t\t\t\t\"another/place\",\n\t\t\t\t\t\t\"yet-another/place\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRoots: []string{\n\t\t\t\t\"a/place\",\n\t\t\t\t\"another/place\",\n\t\t\t\t\"yet-another/place\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"additional roots from a multiple calls\",\n\t\t\troot: \"a/place\",\n\t\t\tmock: indexerMock{\n\t\t\t\tadditionalRoots: map[string][]string{\n\t\t\t\t\t\"a/place\": {\n\t\t\t\t\t\t\"another/place\",\n\t\t\t\t\t\t\"yet-another/place\",\n\t\t\t\t\t},\n\t\t\t\t\t\"yet-another/place\": {\n\t\t\t\t\t\t\"a-quiet-place-2\",\n\t\t\t\t\t\t\"a-final/place\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRoots: []string{\n\t\t\t\t\"a/place\",\n\t\t\t\t\"another/place\",\n\t\t\t\t\"yet-another/place\",\n\t\t\t\t\"a-quiet-place-2\",\n\t\t\t\t\"a-final/place\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.NoError(t, indexAllRoots(test.root, test.mock.indexer))\n\t\t})\n\t}\n}\n\nfunc TestDirectoryIndexer_handleFileAccessErr(t *testing.T) {\n\ttests := []struct {\n\t\tname                string\n\t\tinput               error\n\t\texpectedPathTracked bool\n\t}{\n\t\t{\n\t\t\tname:                \"permission error does not propagate\",\n\t\t\tinput:               os.ErrPermission,\n\t\t\texpectedPathTracked: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"file does not exist error does not propagate\",\n\t\t\tinput:               os.ErrNotExist,\n\t\t\texpectedPathTracked: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"non-permission errors are tracked\",\n\t\t\tinput:               os.ErrInvalid,\n\t\t\texpectedPathTracked: true,\n\t\t},\n\t\t{\n\t\t\tname:                \"non-errors ignored\",\n\t\t\tinput:               nil,\n\t\t\texpectedPathTracked: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tr := directoryIndexer{\n\t\t\t\terrPaths: make(map[string]error),\n\t\t\t}\n\t\t\tp := \"a/place\"\n\t\t\tassert.Equal(t, r.isFileAccessErr(p, test.input), test.expectedPathTracked)\n\t\t\t_, exists := r.errPaths[p]\n\t\t\tassert.Equal(t, test.expectedPathTracked, exists)\n\t\t})\n\t}\n}\n\nfunc TestDirectoryIndexer_IncludeRootPathInIndex(t *testing.T) {\n\tfilterFn := func(_, path string, _ os.FileInfo, _ error) error {\n\t\tif path != \"/\" {\n\t\t\treturn fs.SkipDir\n\t\t}\n\t\treturn nil\n\t}\n\n\tindexer := newDirectoryIndexer(\"/\", \"\", filterFn)\n\ttree, index, err := indexer.build()\n\trequire.NoError(t, err)\n\n\texists, ref, err := tree.File(file.Path(\"/\"))\n\trequire.NoError(t, err)\n\trequire.NotNil(t, ref)\n\tassert.True(t, exists)\n\n\t_, err = index.Get(*ref.Reference)\n\trequire.NoError(t, err)\n}\n\nfunc TestDirectoryIndexer_indexPath_skipsNilFileInfo(t *testing.T) {\n\t// TODO: Ideally we can use an OS abstraction, which would obviate the need for real FS setup.\n\ttempFile, err := os.CreateTemp(\"\", \"\")\n\trequire.NoError(t, err)\n\n\tindexer := newDirectoryIndexer(tempFile.Name(), \"\")\n\n\tt.Run(\"filtering path with nil os.FileInfo\", func(t *testing.T) {\n\t\tassert.NotPanics(t, func() {\n\t\t\t_, err := indexer.indexPath(\"/dont-care\", nil, nil)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.False(t, indexer.tree.HasPath(\"/dont-care\"))\n\t\t})\n\t})\n}\n\nfunc TestDirectoryIndexer_index(t *testing.T) {\n\t// note: this test is testing the effects from NewFromDirectory, indexTree, and addPathToIndex\n\tindexer := newDirectoryIndexer(\"testdata/system_paths/target\", \"\")\n\ttree, index, err := indexer.build()\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname string\n\t\tpath string\n\t}{\n\t\t{\n\t\t\tname: \"has dir\",\n\t\t\tpath: \"testdata/system_paths/target/home\",\n\t\t},\n\t\t{\n\t\t\tname: \"has path\",\n\t\t\tpath: \"testdata/system_paths/target/home/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"has symlink\",\n\t\t\tpath: \"testdata/system_paths/target/link/a-symlink\",\n\t\t},\n\t\t{\n\t\t\tname: \"has symlink target\",\n\t\t\tpath: \"testdata/system_paths/outside_root/link_target/place\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tinfo, err := os.Stat(test.path)\n\t\t\tassert.NoError(t, err)\n\n\t\t\t// note: the index uses absolute paths, so assertions MUST keep this in mind\n\t\t\tcwd, err := os.Getwd()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tp := file.Path(path.Join(cwd, test.path))\n\t\t\tassert.Equal(t, true, tree.HasPath(p))\n\t\t\texists, ref, err := tree.File(p)\n\t\t\tassert.Equal(t, true, exists)\n\t\t\tif assert.NoError(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tentry, err := index.Get(*ref.Reference)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, info.Mode(), entry.Mode)\n\t\t})\n\t}\n}\n\nfunc TestDirectoryIndexer_index_for_AncestorSymlinks(t *testing.T) {\n\t// note: this test is testing the effects from NewFromDirectory, indexTree, and addPathToIndex\n\t_, filename, _, ok := runtime.Caller(0)\n\trequire.True(t, ok)\n\tdir := filepath.Dir(filename)\n\n\ttests := []struct {\n\t\tname          string\n\t\tpath          string\n\t\trelative_base string\n\t}{\n\t\t{\n\t\t\tname:          \"the parent directory has symlink target\",\n\t\t\tpath:          \"testdata/system_paths/target/symlinks-to-dev\",\n\t\t\trelative_base: \"testdata/system_paths/target/symlinks-to-dev\",\n\t\t},\n\t\t{\n\t\t\tname:          \"the ancestor directory has symlink target\",\n\t\t\tpath:          \"testdata/system_paths/target/symlinks-to-hierarchical-dev\",\n\t\t\trelative_base: \"testdata/system_paths/target/symlinks-to-hierarchical-dev/module_1/module_1_1\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tindexer := newDirectoryIndexer(\"testdata/system_paths/target\",\n\t\t\t\tfmt.Sprintf(\"%v/%v\", dir, test.relative_base))\n\t\t\ttree, index, err := indexer.build()\n\t\t\trequire.NoError(t, err)\n\t\t\tinfo, err := os.Stat(test.path)\n\t\t\tassert.NoError(t, err)\n\n\t\t\t// note: the index uses absolute paths, so assertions MUST keep this in mind\n\t\t\tcwd, err := os.Getwd()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tp := file.Path(path.Join(cwd, test.path))\n\t\t\tassert.Equal(t, true, tree.HasPath(p))\n\t\t\texists, ref, err := tree.File(p)\n\t\t\tassert.Equal(t, true, exists)\n\t\t\tif assert.NoError(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tentry, err := index.Get(*ref.Reference)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, info.Mode(), entry.Mode)\n\t\t})\n\t}\n}\nfunc TestDirectoryIndexer_index_survive_badSymlink(t *testing.T) {\n\t// testdata/bad-symlinks\n\t// ├── root\n\t// │   ├── place\n\t// │   │   └── fd -> ../somewhere/self/fd\n\t// │   └── somewhere\n\t// ...\n\tindexer := newDirectoryIndexer(\"testdata/bad-symlinks/root/place/fd\", \"testdata/bad-symlinks/root/place/fd\")\n\t_, _, err := indexer.build()\n\trequire.NoError(t, err)\n}\n\nfunc TestDirectoryIndexer_SkipsAlreadyVisitedLinkDestinations(t *testing.T) {\n\tvar observedPaths []string\n\tpathObserver := func(_, p string, _ os.FileInfo, _ error) error {\n\t\tfields := strings.Split(p, \"testdata/symlinks-prune-indexing\")\n\t\tif len(fields) < 2 {\n\t\t\treturn nil\n\t\t}\n\t\tclean := strings.TrimLeft(fields[1], \"/\")\n\t\tif clean != \"\" {\n\t\t\tobservedPaths = append(observedPaths, clean)\n\t\t}\n\t\treturn nil\n\t}\n\tresolver := newDirectoryIndexer(\"./testdata/symlinks-prune-indexing\", \"\")\n\t// we want to cut ahead of any possible filters to see what paths are considered for indexing (closest to walking)\n\tresolver.pathIndexVisitors = append([]PathIndexVisitor{pathObserver}, resolver.pathIndexVisitors...)\n\n\t// note: this test is NOT about the effects left on the tree or the index, but rather the WHICH paths that are\n\t// considered for indexing and HOW traversal prunes paths that have already been visited\n\t_, _, err := resolver.build()\n\trequire.NoError(t, err)\n\n\texpected := []string{\n\t\t\"before-path\",\n\t\t\"c-file.txt\",\n\t\t\"c-path\",\n\t\t\"path\",\n\t\t\"path/1\",\n\t\t\"path/1/2\",\n\t\t\"path/1/2/3\",\n\t\t\"path/1/2/3/4\",\n\t\t\"path/1/2/3/4/dont-index-me-twice.txt\",\n\t\t\"path/5\",\n\t\t\"path/5/6\",\n\t\t\"path/5/6/7\",\n\t\t\"path/5/6/7/8\",\n\t\t\"path/5/6/7/8/dont-index-me-twice-either.txt\",\n\t\t\"path/file.txt\",\n\t\t// everything below is after the original tree is indexed, and we are now indexing additional roots from symlinks\n\t\t\"path\",          // considered from symlink before-path, but pruned\n\t\t\"path/file.txt\", // leaf\n\t\t\"before-path\",   // considered from symlink c-path, but pruned\n\t\t\"path/file.txt\", // leaf\n\t\t\"before-path\",   // considered from symlink c-path, but pruned\n\t}\n\n\tassert.Equal(t, expected, observedPaths, \"visited paths differ \\n %s\", cmp.Diff(expected, observedPaths))\n\n}\n\nfunc TestDirectoryIndexer_IndexesAllTypes(t *testing.T) {\n\tindexer := newDirectoryIndexer(\"./testdata/symlinks-prune-indexing\", \"\")\n\n\ttree, index, err := indexer.build()\n\trequire.NoError(t, err)\n\n\tallRefs := tree.AllFiles(file.AllTypes()...)\n\tvar pathRefs []file.Reference\n\tpaths := strset.New()\n\tfor _, ref := range allRefs {\n\t\tfields := strings.Split(string(ref.RealPath), \"testdata/symlinks-prune-indexing\")\n\t\tif len(fields) != 2 {\n\t\t\tcontinue\n\t\t}\n\t\tclean := strings.TrimLeft(fields[1], \"/\")\n\t\tif clean == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tpaths.Add(clean)\n\t\tpathRefs = append(pathRefs, ref)\n\t}\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\texpected := []string{\n\t\t\"before-path\",                          // link\n\t\t\"c-file.txt\",                           // link\n\t\t\"c-path\",                               // link\n\t\t\"path\",                                 // dir\n\t\t\"path/1\",                               // dir\n\t\t\"path/1/2\",                             // dir\n\t\t\"path/1/2/3\",                           // dir\n\t\t\"path/1/2/3/4\",                         // dir\n\t\t\"path/1/2/3/4/dont-index-me-twice.txt\", // file\n\t\t\"path/5\",                               // dir\n\t\t\"path/5/6\",                             // dir\n\t\t\"path/5/6/7\",                           // dir\n\t\t\"path/5/6/7/8\",                         // dir\n\t\t\"path/5/6/7/8/dont-index-me-twice-either.txt\", // file\n\t\t\"path/file.txt\", // file\n\t}\n\texpectedSet := strset.New(expected...)\n\n\t// make certain all expected paths are in the tree (and no extra ones are their either)\n\n\tassert.True(t, paths.IsEqual(expectedSet), \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, pathsList))\n\n\t// make certain that the paths are also in the file index\n\n\tfor _, ref := range pathRefs {\n\t\t_, err := index.Get(ref)\n\t\trequire.NoError(t, err)\n\t}\n\n}\n\nfunc Test_allContainedPaths(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tpath string\n\t\twant []string\n\t}{\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tpath: \"\",\n\t\t\twant: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"single relative\",\n\t\t\tpath: \"a\",\n\t\t\twant: []string{\"a\"},\n\t\t},\n\t\t{\n\t\t\tname: \"single absolute\",\n\t\t\tpath: \"/a\",\n\t\t\twant: []string{\"/a\"},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple relative\",\n\t\t\tpath: \"a/b/c\",\n\t\t\twant: []string{\"a\", \"a/b\", \"a/b/c\"},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple absolute\",\n\t\t\tpath: \"/a/b/c\",\n\t\t\twant: []string{\"/a\", \"/a/b\", \"/a/b/c\"},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple absolute with extra slashs\",\n\t\t\tpath: \"///a/b//c/\",\n\t\t\twant: []string{\"/a\", \"/a/b\", \"/a/b/c\"},\n\t\t},\n\t\t{\n\t\t\tname: \"relative with single dot\",\n\t\t\tpath: \"a/./b\",\n\t\t\twant: []string{\"a\", \"a/b\"},\n\t\t},\n\t\t{\n\t\t\tname: \"relative with double single dot\",\n\t\t\tpath: \"a/../b\",\n\t\t\twant: []string{\"b\"},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, allContainedPaths(tt.path))\n\t\t})\n\t}\n}\n\nfunc Test_relativePath(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tbasePath  string\n\t\tgivenPath string\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname:      \"root: same relative path\",\n\t\t\tbasePath:  \"a/b/c\",\n\t\t\tgivenPath: \"a/b/c\",\n\t\t\twant:      \"/\",\n\t\t},\n\t\t{\n\t\t\tname:      \"root: same absolute path\",\n\t\t\tbasePath:  \"/a/b/c\",\n\t\t\tgivenPath: \"/a/b/c\",\n\t\t\twant:      \"/\",\n\t\t},\n\t\t{\n\t\t\tname:      \"contained path: relative\",\n\t\t\tbasePath:  \"a/b/c\",\n\t\t\tgivenPath: \"a/b/c/dev\",\n\t\t\twant:      \"/dev\",\n\t\t},\n\t\t{\n\t\t\tname:      \"contained path: absolute\",\n\t\t\tbasePath:  \"/a/b/c\",\n\t\t\tgivenPath: \"/a/b/c/dev\",\n\t\t\twant:      \"/dev\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, relativePath(tt.basePath, tt.givenPath))\n\t\t})\n\t}\n}\n\nfunc relativePath(basePath, givenPath string) string {\n\tvar relPath string\n\tvar relErr error\n\n\tif basePath != \"\" {\n\t\trelPath, relErr = filepath.Rel(basePath, givenPath)\n\t\tcleanPath := filepath.Clean(relPath)\n\t\tif relErr == nil {\n\t\t\tif cleanPath == \".\" {\n\t\t\t\trelPath = string(filepath.Separator)\n\t\t\t} else {\n\t\t\t\trelPath = cleanPath\n\t\t\t}\n\t\t}\n\t\tif !filepath.IsAbs(relPath) {\n\t\t\trelPath = string(filepath.Separator) + relPath\n\t\t}\n\t}\n\n\tif relErr != nil || basePath == \"\" {\n\t\trelPath = givenPath\n\t}\n\n\treturn relPath\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/directory_test.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage fileresolver\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_isUnallowableFileType(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinfo     os.FileInfo\n\t\texpected error\n\t}{\n\t\t{\n\t\t\tname: \"regular file\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: 0,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dir\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeDir,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"symlink\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeSymlink,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"socket\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeSocket,\n\t\t\t},\n\t\t\texpected: ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tname: \"named pipe\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeNamedPipe,\n\t\t\t},\n\t\t\texpected: ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tname: \"char device\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeCharDevice,\n\t\t\t},\n\t\t\texpected: ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tname: \"block device\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeDevice,\n\t\t\t},\n\t\t\texpected: ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tname: \"irregular\",\n\t\t\tinfo: testFileInfo{\n\t\t\t\tmode: os.ModeIrregular,\n\t\t\t},\n\t\t\texpected: ErrSkipPath,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, disallowByFileType(\"\", \"dont/care\", test.info, nil))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/directory_windows_test.go",
    "content": "package fileresolver\n\nimport \"testing\"\n\nfunc Test_windowsToPosix(t *testing.T) {\n\ttype args struct {\n\t\twindowsPath string\n\t}\n\ttests := []struct {\n\t\tname          string\n\t\targs          args\n\t\twantPosixPath string\n\t}{\n\t\t{\n\t\t\tname: \"basic case\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:\\some\\windows\\place`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/some/windows/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"escaped case\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:\\\\some\\\\windows\\\\place`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/some/windows/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"forward slash\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:/foo/bar`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/foo/bar\",\n\t\t},\n\t\t{\n\t\t\tname: \"mix slash\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:\\foo/bar\\`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/foo/bar\",\n\t\t},\n\t\t{\n\t\t\tname: \"case sensitive case\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:\\Foo/bAr\\`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/Foo/bAr\",\n\t\t},\n\t\t{\n\t\t\tname: \"special char case\",\n\t\t\targs: args{\n\t\t\t\twindowsPath: `C:\\ふー\\バー`,\n\t\t\t},\n\t\t\twantPosixPath: \"/c/ふー/バー\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif gotPosixPath := windowsToPosix(tt.args.windowsPath); gotPosixPath != tt.wantPosixPath {\n\t\t\t\tt.Errorf(\"windowsToPosix() = %v, want %v\", gotPosixPath, tt.wantPosixPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_posixToWindows(t *testing.T) {\n\ttype args struct {\n\t\tposixPath string\n\t}\n\ttests := []struct {\n\t\tname            string\n\t\targs            args\n\t\twantWindowsPath string\n\t}{\n\t\t{\n\t\t\tname: \"basic case\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/some/windows/place\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:\\some\\windows\\place`,\n\t\t},\n\t\t{\n\t\t\tname: \"escaped case\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/some/windows/place\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:\\\\some\\\\windows\\\\place`,\n\t\t},\n\t\t{\n\t\t\tname: \"forward slash\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/foo/bar\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:/foo/bar`,\n\t\t},\n\t\t{\n\t\t\tname: \"mix slash\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/foo/bar\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:\\foo/bar\\`,\n\t\t},\n\t\t{\n\t\t\tname: \"case sensitive case\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/Foo/bAr\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:\\Foo/bAr\\`,\n\t\t},\n\t\t{\n\t\t\tname: \"special char case\",\n\t\t\targs: args{\n\t\t\t\tposixPath: \"/c/ふー/バー\",\n\t\t\t},\n\t\t\twantWindowsPath: `C:\\ふー\\バー`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif gotWindowsPath := posixToWindows(tt.args.posixPath); gotWindowsPath != tt.wantWindowsPath {\n\t\t\t\tt.Errorf(\"posixToWindows() = %v, want %v\", gotWindowsPath, tt.wantWindowsPath)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/empty.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.WritableResolver = (*Empty)(nil)\n\ntype Empty struct{}\n\nfunc (e Empty) FileContentsByLocation(_ file.Location) (io.ReadCloser, error) {\n\treturn nil, nil\n}\n\nfunc (e Empty) HasPath(_ string) bool {\n\treturn false\n}\n\nfunc (e Empty) FilesByPath(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\nfunc (e Empty) FilesByGlob(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\nfunc (e Empty) FilesByMIMEType(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\nfunc (e Empty) RelativeFileByPath(_ file.Location, _ string) *file.Location {\n\treturn nil\n}\n\nfunc (e Empty) AllLocations(_ context.Context) <-chan file.Location {\n\treturn nil\n}\n\nfunc (e Empty) FileMetadataByLocation(_ file.Location) (file.Metadata, error) {\n\treturn file.Metadata{}, nil\n}\n\nfunc (e Empty) Write(_ file.Location, _ io.Reader) error {\n\treturn nil\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/excluding_file.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype excludeFn func(string) bool\n\n// excluding decorates a resolver with an exclusion function that is used to\n// filter out entries in the delegate resolver\ntype excluding struct {\n\tdelegate  file.Resolver\n\texcludeFn excludeFn\n}\n\n// NewExcludingDecorator create a new resolver which wraps the provided delegate and excludes\n// entries based on a provided path exclusion function\nfunc NewExcludingDecorator(delegate file.Resolver, excludeFn excludeFn) file.Resolver {\n\treturn &excluding{\n\t\tdelegate,\n\t\texcludeFn,\n\t}\n}\n\nfunc (r *excluding) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tif locationMatches(&location, r.excludeFn) {\n\t\treturn nil, fmt.Errorf(\"no such location: %+v\", location.RealPath)\n\t}\n\treturn r.delegate.FileContentsByLocation(location)\n}\n\nfunc (r *excluding) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\tif locationMatches(&location, r.excludeFn) {\n\t\treturn file.Metadata{}, fmt.Errorf(\"no such location: %+v\", location.RealPath)\n\t}\n\treturn r.delegate.FileMetadataByLocation(location)\n}\n\nfunc (r *excluding) HasPath(path string) bool {\n\tif r.excludeFn(path) {\n\t\treturn false\n\t}\n\treturn r.delegate.HasPath(path)\n}\n\nfunc (r *excluding) FilesByPath(paths ...string) ([]file.Location, error) {\n\tlocations, err := r.delegate.FilesByPath(paths...)\n\treturn filterLocations(locations, err, r.excludeFn)\n}\n\nfunc (r *excluding) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tlocations, err := r.delegate.FilesByGlob(patterns...)\n\treturn filterLocations(locations, err, r.excludeFn)\n}\n\nfunc (r *excluding) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tlocations, err := r.delegate.FilesByMIMEType(types...)\n\treturn filterLocations(locations, err, r.excludeFn)\n}\n\nfunc (r *excluding) RelativeFileByPath(location file.Location, path string) *file.Location {\n\tl := r.delegate.RelativeFileByPath(location, path)\n\tif l != nil && locationMatches(l, r.excludeFn) {\n\t\treturn nil\n\t}\n\treturn l\n}\n\nfunc (r *excluding) AllLocations(ctx context.Context) <-chan file.Location {\n\tc := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(c)\n\t\tfor location := range r.delegate.AllLocations(ctx) {\n\t\t\tif !locationMatches(&location, r.excludeFn) {\n\t\t\t\tselect {\n\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\treturn\n\t\t\t\tcase c <- location:\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\treturn c\n}\n\nfunc locationMatches(location *file.Location, exclusionFn excludeFn) bool {\n\treturn exclusionFn(location.RealPath) || exclusionFn(location.AccessPath)\n}\n\nfunc filterLocations(locations []file.Location, err error, exclusionFn excludeFn) ([]file.Location, error) {\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif exclusionFn != nil {\n\t\tfor i := 0; i < len(locations); i++ {\n\t\t\tlocation := &locations[i]\n\t\t\tif locationMatches(location, exclusionFn) {\n\t\t\t\tlocations = append(locations[:i], locations[i+1:]...)\n\t\t\t\ti--\n\t\t\t}\n\t\t}\n\t}\n\treturn locations, nil\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/excluding_file_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestExcludingResolver(t *testing.T) {\n\n\ttests := []struct {\n\t\tname      string\n\t\tlocations []string\n\t\texcludeFn excludeFn\n\t\texpected  []string\n\t}{\n\t\t{\n\t\t\tname:      \"keeps locations\",\n\t\t\tlocations: []string{\"a\", \"b\", \"c\"},\n\t\t\texcludeFn: func(s string) bool {\n\t\t\t\treturn false\n\t\t\t},\n\t\t\texpected: []string{\"a\", \"b\", \"c\"},\n\t\t},\n\t\t{\n\t\t\tname:      \"removes locations\",\n\t\t\tlocations: []string{\"d\", \"e\", \"f\"},\n\t\t\texcludeFn: func(s string) bool {\n\t\t\t\treturn true\n\t\t\t},\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname:      \"removes first match\",\n\t\t\tlocations: []string{\"g\", \"h\", \"i\"},\n\t\t\texcludeFn: func(s string) bool {\n\t\t\t\treturn s == \"g\"\n\t\t\t},\n\t\t\texpected: []string{\"h\", \"i\"},\n\t\t},\n\t\t{\n\t\t\tname:      \"removes last match\",\n\t\t\tlocations: []string{\"j\", \"k\", \"l\"},\n\t\t\texcludeFn: func(s string) bool {\n\t\t\t\treturn s == \"l\"\n\t\t\t},\n\t\t\texpected: []string{\"j\", \"k\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := &mockResolver{\n\t\t\t\tlocations: test.locations,\n\t\t\t}\n\t\t\ter := NewExcludingDecorator(resolver, test.excludeFn)\n\n\t\t\tlocations, _ := er.FilesByPath()\n\t\t\tassert.ElementsMatch(t, locationPaths(locations), test.expected)\n\n\t\t\tlocations, _ = er.FilesByGlob()\n\t\t\tassert.ElementsMatch(t, locationPaths(locations), test.expected)\n\n\t\t\tlocations, _ = er.FilesByMIMEType()\n\t\t\tassert.ElementsMatch(t, locationPaths(locations), test.expected)\n\n\t\t\tlocations = []file.Location{}\n\n\t\t\tctx, cancel := context.WithCancel(context.Background())\n\t\t\tdefer cancel()\n\t\t\tchannel := er.AllLocations(ctx)\n\t\t\tfor location := range channel {\n\t\t\t\tlocations = append(locations, location)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, locationPaths(locations), test.expected)\n\n\t\t\tdiff := difference(test.locations, test.expected)\n\n\t\t\tfor _, path := range diff {\n\t\t\t\tassert.False(t, er.HasPath(path))\n\t\t\t\tc, err := er.FileContentsByLocation(file.NewLocation(path))\n\t\t\t\tassert.Nil(t, c)\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tm, err := er.FileMetadataByLocation(file.NewLocation(path))\n\t\t\t\tassert.Empty(t, m.LinkDestination)\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tl := er.RelativeFileByPath(file.NewLocation(\"\"), path)\n\t\t\t\tassert.Nil(t, l)\n\t\t\t}\n\n\t\t\tfor _, path := range test.expected {\n\t\t\t\tassert.True(t, er.HasPath(path))\n\t\t\t\tc, err := er.FileContentsByLocation(file.NewLocation(path))\n\t\t\t\tassert.NotNil(t, c)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tm, err := er.FileMetadataByLocation(file.NewLocation(path))\n\t\t\t\tassert.NotEmpty(t, m.LinkDestination)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tl := er.RelativeFileByPath(file.NewLocation(\"\"), path)\n\t\t\t\tassert.NotNil(t, l)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// difference returns the elements in `a` that aren't in `b`.\nfunc difference(a, b []string) []string {\n\tmb := make(map[string]struct{}, len(b))\n\tfor _, x := range b {\n\t\tmb[x] = struct{}{}\n\t}\n\tvar diff []string\n\tfor _, x := range a {\n\t\tif _, found := mb[x]; !found {\n\t\t\tdiff = append(diff, x)\n\t\t}\n\t}\n\treturn diff\n}\n\nfunc locationPaths(locations []file.Location) []string {\n\tpaths := []string{}\n\tfor _, l := range locations {\n\t\tpaths = append(paths, l.RealPath)\n\t}\n\treturn paths\n}\n\ntype mockResolver struct {\n\tlocations []string\n}\n\nfunc (r *mockResolver) getLocations() ([]file.Location, error) {\n\tout := []file.Location{}\n\tfor _, path := range r.locations {\n\t\tout = append(out, file.NewLocation(path))\n\t}\n\treturn out, nil\n}\n\nfunc (r *mockResolver) FileContentsByLocation(_ file.Location) (io.ReadCloser, error) {\n\treturn io.NopCloser(strings.NewReader(\"Hello, world!\")), nil\n}\n\nfunc (r *mockResolver) FileMetadataByLocation(_ file.Location) (file.Metadata, error) {\n\treturn file.Metadata{\n\t\tLinkDestination: \"MOCK\",\n\t}, nil\n}\n\nfunc (r *mockResolver) HasPath(_ string) bool {\n\treturn true\n}\n\nfunc (r *mockResolver) FilesByPath(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) FilesByGlob(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) FilesByMIMEType(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) FilesByExtension(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) FilesByBasename(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) FilesByBasenameGlob(_ ...string) ([]file.Location, error) {\n\treturn r.getLocations()\n}\n\nfunc (r *mockResolver) RelativeFileByPath(_ file.Location, path string) *file.Location {\n\tl := file.NewLocation(path)\n\treturn &l\n}\n\nfunc (r *mockResolver) AllLocations(ctx context.Context) <-chan file.Location {\n\tc := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(c)\n\t\tlocations, _ := r.getLocations()\n\t\tfor _, location := range locations {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase c <- location:\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}()\n\treturn c\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/file.go",
    "content": "package fileresolver\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// Compile time assurance that we meet the Resolver interface.\nvar _ file.Resolver = (*File)(nil)\n\n// File implements path and content access for the file data source.\ntype File struct {\n\tFiletreeResolver\n\tpath    string\n\tindexer *fileIndexer\n}\n\n// NewFromFile single file analyser\n// path is the filepath of the file we're creating content access for\nfunc NewFromFile(path string, pathFilters ...PathIndexVisitor) (*File, error) {\n\tresolver, err := newFromFileWithoutIndex(path, pathFilters...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn resolver, resolver.buildIndex()\n}\n\nfunc newFromFileWithoutIndex(path string, pathFilters ...PathIndexVisitor) (*File, error) {\n\tabsParentDir, err := absoluteSymlinkFreePathToParent(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tchroot, err := NewChrootContextFromCWD(absParentDir, absParentDir)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to interpret chroot context: %w\", err)\n\t}\n\n\tcleanBase := chroot.Base()\n\n\treturn &File{\n\t\tpath: path,\n\t\tFiletreeResolver: FiletreeResolver{\n\t\t\tChroot: *chroot,\n\t\t\tTree:   filetree.New(),\n\t\t\tIndex:  filetree.NewIndex(),\n\t\t\tOpener: nativeOSFileOpener,\n\t\t},\n\t\tindexer: newFileIndexer(path, cleanBase, pathFilters...),\n\t}, nil\n}\n\nfunc (r *File) buildIndex() error {\n\tif r.indexer == nil {\n\t\treturn fmt.Errorf(\"no file indexer configured\")\n\t}\n\ttree, index, err := r.indexer.build()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tr.Tree = tree\n\tr.Index = index\n\tr.SearchContext = filetree.NewSearchContext(tree, index)\n\n\treturn nil\n}\n\n// Stringer to represent a file path data source\nfunc (r *File) String() string {\n\treturn fmt.Sprintf(\"file:%s\", r.path)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/file_indexer.go",
    "content": "package fileresolver\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/internal/windows\"\n)\n\ntype fileIndexer struct {\n\tpath              string\n\tbase              string\n\tpathIndexVisitors []PathIndexVisitor\n\terrPaths          map[string]error\n\ttree              filetree.ReadWriter\n\tindex             filetree.Index\n}\n\nfunc newFileIndexer(path, base string, visitors ...PathIndexVisitor) *fileIndexer {\n\ti := &fileIndexer{\n\t\tpath:  path,\n\t\tbase:  base,\n\t\ttree:  filetree.New(),\n\t\tindex: filetree.NewIndex(),\n\t\tpathIndexVisitors: append(\n\t\t\t[]PathIndexVisitor{\n\t\t\t\trequireFileInfo,\n\t\t\t\tdisallowByFileType,\n\t\t\t\tskipPathsByMountTypeAndName(path),\n\t\t\t},\n\t\t\tvisitors...,\n\t\t),\n\t\terrPaths: make(map[string]error),\n\t}\n\n\treturn i\n}\n\n// Build the indexer\nfunc (r *fileIndexer) build() (filetree.Reader, filetree.IndexReader, error) {\n\treturn r.tree, r.index, index(r.path, r.indexPath)\n}\n\n// Index file at the given path\n// A file indexer simply indexes the file and its directory.\nfunc index(path string, indexer func(string, *progress.AtomicStage) error) error {\n\t// We want to index the file at the provided path and its parent directory.\n\t// We need to probably check that we have file access\n\t// We also need to determine what to do when the file itself is a symlink.\n\tprog := bus.StartIndexingFiles(path)\n\tdefer prog.SetCompleted()\n\n\terr := indexer(path, prog.AtomicStage)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to index filesystem path=%q: %w\", path, err)\n\t}\n\n\treturn nil\n}\n\n// indexPath will index the file at the provided path as well as its parent directory.\n// It expects path to be a file, not a directory.\n// If a directory is provided then an error will be returned. Additionally, any IO or\n// permissions errors on the file at path or its parent directory will return an error.\n// Filter functions provided to the indexer are honoured, so if the path provided (or its parent\n// directory) is filtered by a filter function, an error is returned.\nfunc (r *fileIndexer) indexPath(path string, stager *progress.AtomicStage) error {\n\tlog.WithFields(\"path\", path).Trace(\"indexing file path\")\n\n\tabsPath, err := filepath.Abs(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Protect against callers trying to call file_indexer with directories\n\tfi, err := os.Stat(absPath)\n\t// The directory indexer ignores stat errors, however this file indexer won't ignore them\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to stat path=%q: %w\", path, err)\n\t}\n\tif fi.IsDir() {\n\t\treturn fmt.Errorf(\"unable to index file, given path was a directory=%q\", path)\n\t}\n\n\tabsSymlinkFreeFilePath, err := absoluteSymlinkFreePathToFile(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Now index the file and its parent directory\n\t// We try to index the parent directory first, because if the parent directory\n\t// is ignored by any filter function, then we must ensure we also ignore the file.\n\tabsSymlinkFreeParent, err := absoluteSymlinkFreePathToParent(absSymlinkFreeFilePath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tparentFi, err := os.Stat(absSymlinkFreeParent)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to stat parent of file=%q: %w\", absSymlinkFreeParent, err)\n\t}\n\n\tstager.Set(absSymlinkFreeParent)\n\tindexParentErr := r.filterAndIndex(absSymlinkFreeParent, parentFi)\n\tif indexParentErr != nil {\n\t\treturn indexParentErr\n\t}\n\n\t// We have indexed the parent successfully, now attempt to index the file.\n\tstager.Set(absSymlinkFreeFilePath)\n\tindexFileErr := r.filterAndIndex(absSymlinkFreeFilePath, fi)\n\tif indexFileErr != nil {\n\t\treturn indexFileErr\n\t}\n\n\treturn nil\n}\n\nfunc (r *fileIndexer) filterAndIndex(path string, info os.FileInfo) error {\n\t// check if any of the filters want us to ignore this path\n\tfor _, filterFn := range r.pathIndexVisitors {\n\t\tif filterFn == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif filterErr := filterFn(r.base, path, info, nil); filterErr != nil {\n\t\t\t// A filter function wants us to ignore this path, honour it\n\t\t\treturn filterErr\n\t\t}\n\t}\n\n\t// here we check to see if we need to normalize paths to posix on the way in coming from windows\n\tif windows.HostRunningOnWindows() {\n\t\tpath = windows.ToPosix(path)\n\t}\n\n\terr := r.addPathToIndex(path, info)\n\t// If we hit file access errors, isFileAccessErr will handle logging & adding\n\t// the path to the errPaths map.\n\t// While the directory_indexer does not let these cause the indexer to throw\n\t// we will here, as not having access to the file we index for a file source\n\t// probably makes the file source creation useless? I need to check with Syft maintainers.\n\t// This also poses the question, is errPaths worthwhile for file_indexer?\n\tif r.isFileAccessErr(path, err) {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// Add path to index. File indexer doesn't need to support symlink, as we should have abs symlink free path.\n// If we somehow get a symlink here, report as an error.\nfunc (r *fileIndexer) addPathToIndex(path string, info os.FileInfo) error {\n\tswitch t := file.TypeFromMode(info.Mode()); t {\n\tcase file.TypeDirectory:\n\t\treturn r.addDirectoryToIndex(path, info)\n\tcase file.TypeRegular:\n\t\treturn r.addFileToIndex(path, info)\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported file type: %s\", t)\n\t}\n}\n\nfunc (r *fileIndexer) addDirectoryToIndex(path string, info os.FileInfo) error {\n\tref, err := r.tree.AddDir(file.Path(path))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmetadata := NewMetadataFromPath(path, info)\n\tr.index.Add(*ref, metadata)\n\n\treturn nil\n}\n\nfunc (r *fileIndexer) addFileToIndex(path string, info os.FileInfo) error {\n\tref, err := r.tree.AddFile(file.Path(path))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmetadata := NewMetadataFromPath(path, info)\n\tr.index.Add(*ref, metadata)\n\n\treturn nil\n}\n\n// Get absolute symlink free path to parent of the file\nfunc absoluteSymlinkFreePathToParent(path string) (string, error) {\n\tabsFilePath, err := absoluteSymlinkFreePathToFile(path)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn filepath.Dir(absFilePath), nil\n}\n\n// Get absolute symlink free path to the file\nfunc absoluteSymlinkFreePathToFile(path string) (string, error) {\n\tabsAnalysisPath, err := filepath.Abs(path)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get absolute path for analysis path=%q: %w\", path, err)\n\t}\n\tdereferencedAbsAnalysisPath, err := filepath.EvalSymlinks(absAnalysisPath)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get absolute path for analysis path=%q: %w\", path, err)\n\t}\n\treturn dereferencedAbsAnalysisPath, nil\n}\n\nfunc (r *fileIndexer) isFileAccessErr(path string, err error) bool {\n\t// don't allow for errors to stop indexing, keep track of the paths and continue.\n\tif err != nil {\n\t\tlog.Warnf(\"unable to access path=%q: %+v\", path, err)\n\t\tr.errPaths[path] = err\n\t\treturn true\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/file_indexer_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n)\n\n// - Verify that both the parent and the path are indexed\nfunc Test_index(t *testing.T) {\n\ttestPath := \"testdata/system_paths/target/home/place\"\n\tindexer := newFileIndexer(testPath, \"\", make([]PathIndexVisitor, 0)...)\n\ttree, index, err := indexer.build()\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname string\n\t\tpath string\n\t}{\n\t\t{\n\t\t\tname: \"has path\",\n\t\t\tpath: \"testdata/system_paths/target/home/place\",\n\t\t},\n\t\t{\n\t\t\tname: \"has parent dir\",\n\t\t\tpath: \"testdata/system_paths/target/home\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tinfo, err := os.Stat(test.path)\n\t\t\tassert.NoError(t, err)\n\n\t\t\t// note: the index uses absolute paths, so assertions MUST keep this in mind\n\t\t\tcwd, err := os.Getwd()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tp := file.Path(path.Join(cwd, test.path))\n\t\t\tassert.Equal(t, true, tree.HasPath(p))\n\t\t\texists, ref, err := tree.File(p)\n\t\t\tassert.Equal(t, true, exists)\n\t\t\tif assert.NoError(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tentry, err := index.Get(*ref.Reference)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, info.Mode(), entry.Mode)\n\t\t})\n\t}\n\n}\n\n// - Verify that directories are rejected\nfunc Test_indexRejectsDirectory(t *testing.T) {\n\tdirPath := \"testdata/system_paths/target/home\"\n\tindexer := newFileIndexer(dirPath, \"\", make([]PathIndexVisitor, 0)...)\n\t_, _, err := indexer.build()\n\trequire.Error(t, err)\n}\n\n// - Verify ignores if filterAndIndex sets up a filter for the filepath\nfunc Test_ignoresPathIfFiltered(t *testing.T) {\n\ttestPath := \"testdata/system_paths/target/home/place\"\n\tcwd, cwdErr := os.Getwd()\n\trequire.NoError(t, cwdErr)\n\tignorePath := path.Join(cwd, testPath)\n\tfilterFn := func(_, path string, _ os.FileInfo, _ error) error {\n\t\tif path == ignorePath {\n\t\t\treturn ErrSkipPath\n\t\t}\n\n\t\treturn nil\n\t}\n\tindexer := newFileIndexer(testPath, \"\", filterFn)\n\t_, _, err := indexer.build()\n\trequire.Error(t, err)\n}\n\n// - Verify ignores if filterAndIndex sets up a filter for the directory\nfunc Test_ignoresPathIfParentFiltered(t *testing.T) {\n\ttestPath := \"testdata/system_paths/target/home/place\"\n\tparentPath := \"testdata/system_paths/target/home\"\n\n\tcwd, cwdErr := os.Getwd()\n\trequire.NoError(t, cwdErr)\n\tignorePath := path.Join(cwd, parentPath)\n\tfilterFn := func(_, path string, _ os.FileInfo, _ error) error {\n\t\tif path == ignorePath {\n\t\t\treturn fs.SkipDir\n\t\t}\n\n\t\treturn nil\n\t}\n\tindexer := newFileIndexer(testPath, \"\", filterFn)\n\t_, _, err := indexer.build()\n\trequire.Error(t, err)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/file_metadata_by_location.go",
    "content": "package fileresolver\n\nimport (\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc fileMetadataByLocation(img *image.Image, location file.Location) (file.Metadata, error) {\n\tentry, err := img.FileCatalog.Get(location.Reference())\n\tif err != nil {\n\t\treturn file.Metadata{}, err\n\t}\n\n\treturn entry.Metadata, nil\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/filetree_resolver.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/windows\"\n)\n\n// TODO: consider making a constructor for this\ntype FiletreeResolver struct {\n\tChroot        ChrootContext\n\tTree          filetree.Reader\n\tIndex         filetree.IndexReader\n\tSearchContext filetree.Searcher\n\tOpener        func(stereoscopeFile.Reference) (io.ReadCloser, error)\n}\n\nfunc nativeOSFileOpener(ref stereoscopeFile.Reference) (io.ReadCloser, error) {\n\t// RealPath is posix so for windows file resolver we need to translate\n\t// to its true on disk path.\n\tfilePath := string(ref.RealPath)\n\tif windows.HostRunningOnWindows() {\n\t\tfilePath = windows.FromPosix(filePath)\n\t}\n\n\treturn stereoscopeFile.NewLazyReadCloser(filePath), nil\n}\n\nfunc (r *FiletreeResolver) requestPath(userPath string) (string, error) {\n\treturn r.Chroot.ToNativePath(userPath)\n}\n\n// responsePath takes a path from the underlying fs domain and converts it to a path that is relative to the root of the file resolver.\nfunc (r FiletreeResolver) responsePath(path string) string {\n\treturn r.Chroot.ToChrootPath(path)\n}\n\n// HasPath indicates if the given path exists in the underlying source.\nfunc (r *FiletreeResolver) HasPath(userPath string) bool {\n\trequestPath, err := r.requestPath(userPath)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn r.Tree.HasPath(stereoscopeFile.Path(requestPath))\n}\n\n// FilesByPath returns all file.References that match the given paths from the file index.\nfunc (r FiletreeResolver) FilesByPath(userPaths ...string) ([]file.Location, error) {\n\tvar references = make([]file.Location, 0)\n\n\tfor _, userPath := range userPaths {\n\t\tuserStrPath, err := r.requestPath(userPath)\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"unable to get file by path=%q : %+v\", userPath, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// we should be resolving symlinks and preserving this information as a AccessPath to the real file\n\t\tref, err := r.SearchContext.SearchByPath(userStrPath, filetree.FollowBasenameLinks)\n\t\tif err != nil {\n\t\t\tlog.Tracef(\"unable to evaluate symlink for path=%q : %+v\", userPath, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif !ref.HasReference() {\n\t\t\tcontinue\n\t\t}\n\n\t\tentry, err := r.Index.Get(*ref.Reference)\n\t\tif err != nil {\n\t\t\tlog.Warnf(\"unable to get file by path=%q : %+v\", userPath, err)\n\t\t\tcontinue\n\t\t}\n\n\t\t// don't consider directories\n\t\tif entry.IsDir() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif windows.HostRunningOnWindows() {\n\t\t\tuserStrPath = windows.ToPosix(userStrPath)\n\t\t}\n\n\t\tif ref.HasReference() {\n\t\t\treferences = append(references,\n\t\t\t\tfile.NewVirtualLocationFromDirectory(\n\t\t\t\t\tr.responsePath(string(ref.RealPath)), // the actual path relative to the resolver root\n\t\t\t\t\tr.responsePath(userStrPath),          // the path used to access this file, relative to the resolver root\n\t\t\t\t\t*ref.Reference,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t}\n\n\treturn references, nil\n}\n\nfunc (r FiletreeResolver) requestGlob(pattern string) (string, error) {\n\treturn r.Chroot.ToNativeGlob(pattern)\n}\n\n// FilesByGlob returns all file.References that match the given path glob pattern from any layer in the image.\nfunc (r FiletreeResolver) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\tfor _, pattern := range patterns {\n\t\trequestGlob, err := r.requestGlob(pattern)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\trefVias, err := r.SearchContext.SearchByGlob(requestGlob, filetree.FollowBasenameLinks)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, refVia := range refVias {\n\t\t\tif !refVia.HasReference() || uniqueFileIDs.Contains(*refVia.Reference) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tentry, err := r.Index.Get(*refVia.Reference)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to get file metadata for reference %s: %w\", refVia.RealPath, err)\n\t\t\t}\n\n\t\t\t// don't consider directories\n\t\t\tif entry.IsDir() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tloc := file.NewVirtualLocationFromDirectory(\n\t\t\t\tr.responsePath(string(refVia.RealPath)),    // the actual path relative to the resolver root\n\t\t\t\tr.responsePath(string(refVia.RequestPath)), // the path used to access this file, relative to the resolver root\n\t\t\t\t*refVia.Reference,\n\t\t\t)\n\t\t\tuniqueFileIDs.Add(*refVia.Reference)\n\t\t\tuniqueLocations = append(uniqueLocations, loc)\n\t\t}\n\t}\n\n\treturn uniqueLocations, nil\n}\n\n// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n// This is helpful when attempting to find a file that is in the same layer or lower as another file.\nfunc (r *FiletreeResolver) RelativeFileByPath(_ file.Location, path string) *file.Location {\n\tpaths, err := r.FilesByPath(path)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tif len(paths) == 0 {\n\t\treturn nil\n\t}\n\n\treturn &paths[0]\n}\n\n// FileContentsByLocation fetches file contents for a single file reference relative to a directory.\n// If the path does not exist an error is returned.\nfunc (r FiletreeResolver) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tif location.RealPath == \"\" {\n\t\treturn nil, errors.New(\"empty path given\")\n\t}\n\n\tentry, err := r.Index.Get(location.Reference())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// don't consider directories\n\tif entry.Type == stereoscopeFile.TypeDirectory {\n\t\treturn nil, fmt.Errorf(\"cannot read contents of non-file %q\", location.Reference().RealPath)\n\t}\n\n\treturn r.Opener(location.Reference())\n}\n\nfunc (r *FiletreeResolver) AllLocations(ctx context.Context) <-chan file.Location {\n\tresults := make(chan file.Location)\n\tgo func() {\n\t\tdefer close(results)\n\t\tfor _, ref := range r.Tree.AllFiles(stereoscopeFile.AllTypes()...) {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase results <- file.NewLocationFromDirectory(r.responsePath(string(ref.RealPath)), \"\", ref):\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}()\n\treturn results\n}\n\nfunc (r *FiletreeResolver) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\tentry, err := r.Index.Get(location.Reference())\n\tif err != nil {\n\t\treturn file.Metadata{}, fmt.Errorf(\"location: %+v : %w\", location, os.ErrNotExist)\n\t}\n\n\treturn entry.Metadata, nil\n}\n\nfunc (r *FiletreeResolver) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tuniqueFileIDs := stereoscopeFile.NewFileReferenceSet()\n\tuniqueLocations := make([]file.Location, 0)\n\n\trefVias, err := r.SearchContext.SearchByMIMEType(types...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, refVia := range refVias {\n\t\tif !refVia.HasReference() {\n\t\t\tcontinue\n\t\t}\n\t\tif uniqueFileIDs.Contains(*refVia.Reference) {\n\t\t\tcontinue\n\t\t}\n\t\tlocation := file.NewVirtualLocationFromDirectory(\n\t\t\tr.responsePath(string(refVia.RealPath)),\n\t\t\tr.responsePath(string(refVia.RequestPath)),\n\t\t\t*refVia.Reference,\n\t\t)\n\t\tuniqueFileIDs.Add(*refVia.Reference)\n\t\tuniqueLocations = append(uniqueLocations, location)\n\t}\n\n\treturn uniqueLocations, nil\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/filetree_resolver_test.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/goleak\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// Tests for filetree resolver when directory is used for index\nfunc TestDirectoryResolver_FilesByPath_request_response(t *testing.T) {\n\t// /\n\t//   somewhere/\n\t//     outside.txt\n\t//   root-link -> ./\n\t//   path/\n\t//     to/\n\t//       abs-inside.txt -> /path/to/the/file.txt               # absolute link to somewhere inside of the root\n\t//       rel-inside.txt -> ./the/file.txt                      # relative link to somewhere inside of the root\n\t//       the/\n\t//\t\t   file.txt\n\t//         abs-outside.txt -> /somewhere/outside.txt           # absolute link to outside of the root\n\t//         rel-outside -> ../../../somewhere/outside.txt       # relative link to outside of the root\n\t//\n\n\ttestDir, err := os.Getwd()\n\trequire.NoError(t, err)\n\trelative := filepath.Join(\"testdata\", \"req-resp\")\n\tabsolute := filepath.Join(testDir, relative)\n\n\tabsInsidePath := filepath.Join(absolute, \"path\", \"to\", \"abs-inside.txt\")\n\tabsOutsidePath := filepath.Join(absolute, \"path\", \"to\", \"the\", \"abs-outside.txt\")\n\n\trelativeViaLink := filepath.Join(relative, \"root-link\")\n\tabsoluteViaLink := filepath.Join(absolute, \"root-link\")\n\n\trelativeViaDoubleLink := filepath.Join(relative, \"root-link\", \"root-link\")\n\tabsoluteViaDoubleLink := filepath.Join(absolute, \"root-link\", \"root-link\")\n\n\tcleanup := func() {\n\t\t_ = os.Remove(absInsidePath)\n\t\t_ = os.Remove(absOutsidePath)\n\t}\n\n\t// ensure the absolute symlinks are cleaned up from any previous runs\n\tcleanup()\n\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"path\", \"to\", \"the\", \"file.txt\"), absInsidePath))\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"somewhere\", \"outside.txt\"), absOutsidePath))\n\n\tt.Cleanup(cleanup)\n\n\tcases := []struct {\n\t\tname               string\n\t\tcwd                string\n\t\troot               string\n\t\tbase               string\n\t\tinput              string\n\t\texpectedRealPath   string\n\t\texpectedAccessPath string // note: if empty it will be assumed to match the expectedRealPath\n\t}{\n\t\t{\n\t\t\tname:             \"relative root, relative request, direct\",\n\t\t\troot:             relative,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct\",\n\t\t\troot:             absolute,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"relative root, abs request, direct\",\n\t\t\troot:             relative,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct\",\n\t\t\troot:             absolute,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within root...\n\t\t{\n\t\t\tname:             \"relative root, relative request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             \"../../\",\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             absolute,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"relative root, abs request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             \"../../\",\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"abs root, abs request, direct, cwd within root\",\n\t\t\tcwd:  filepath.Join(relative, \"path/to\"),\n\n\t\t\troot:             absolute,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root...\n\t\t{\n\t\t\tname:  \"relative root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"path/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"path/to/the/file.txt\",\n\t\t\texpectedAccessPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             absoluteViaLink,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"/path/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"path/to/the/file.txt\",\n\t\t\texpectedAccessPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             absoluteViaLink,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root, request nested within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: why not expect \"to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath: \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             filepath.Join(absoluteViaLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: why not expect \"to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath: \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             filepath.Join(absoluteViaLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root...\n\t\t{\n\t\t\tname:  \"relative root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"path/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"path/to/the/file.txt\",\n\t\t\texpectedAccessPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             absoluteViaDoubleLink,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"/path/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"path/to/the/file.txt\",\n\t\t\texpectedAccessPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             absoluteViaDoubleLink,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested DEEP within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:   filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:  \"../\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:              filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:   filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:  \"../\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: why not expect \"path/to/the/file.txt\" here?\n\t\t\t// this is because we don't know that the path used to access this path (which is a link within\n\t\t\t// the root) resides within the root. Without this information it appears as if this file resides\n\t\t\t// outside the root.\n\t\t\texpectedRealPath: filepath.Join(absolute, \"path/to/the/file.txt\"),\n\t\t\t//expectedRealPath:    \"to/the/file.txt\",\n\t\t\texpectedAccessPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:              filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// link to outside of root cases...\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t// link to outside of root cases... cwd within symlink root\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relativeViaDoubleLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relativeViaDoubleLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relativeViaDoubleLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:                relativeViaDoubleLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/rel-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tif c.expectedAccessPath == \"\" {\n\t\t\t\tc.expectedAccessPath = c.expectedRealPath\n\t\t\t}\n\n\t\t\t// we need to mimic a shell, otherwise we won't get a path within a symlink\n\t\t\ttargetPath := filepath.Join(testDir, c.cwd)\n\t\t\tt.Setenv(\"PWD\", filepath.Clean(targetPath))\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NoError(t, os.Chdir(targetPath))\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, os.Chdir(testDir))\n\t\t\t})\n\n\t\t\tresolver, err := NewFromDirectory(c.root, c.base)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, resolver)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tif c.expectedRealPath == \"\" {\n\t\t\t\trequire.Empty(t, refs)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.Len(t, refs, 1)\n\t\t\tassert.Equal(t, c.expectedRealPath, refs[0].RealPath, \"real path different\")\n\t\t\tassert.Equal(t, c.expectedAccessPath, refs[0].AccessPath, \"virtual path different\")\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_FilesByPath_relativeRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\trelativeRoot string\n\t\tinput        string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname:         \"should find a file from an absolute input\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"/image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"should find a file from a relative path\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"should find a file from a relative path (root above cwd)\",\n\t\t\t// TODO: refactor me! this test depends on the structure of the source dir not changing, which isn't great\n\t\t\trelativeRoot: \"../\",\n\t\t\tinput:        \"fileresolver/directory.go\",\n\t\t\texpected: []string{\n\t\t\t\t\"fileresolver/directory.go\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(c.relativeRoot, \"\")\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_FilesByPath_absoluteRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\trelativeRoot string\n\t\tinput        string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname:         \"should find a file from an absolute input\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"/image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"should find a file from a relative path\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"should find a file from a relative path (root above cwd)\",\n\t\t\t// TODO: refactor me! this test depends on the structure of the source dir not changing, which isn't great\n\t\t\trelativeRoot: \"../\",\n\t\t\tinput:        \"fileresolver/directory.go\",\n\t\t\texpected: []string{\n\t\t\t\t\"fileresolver/directory.go\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\t// note: this test is all about asserting correct functionality when the given analysis path\n\t\t\t// is an absolute path\n\t\t\tabsRoot, err := filepath.Abs(c.relativeRoot)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver, err := NewFromDirectory(absRoot, \"\")\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_FilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname                 string\n\t\troot                 string\n\t\tinput                string\n\t\texpected             string\n\t\trefCount             int\n\t\tforcePositiveHasPath bool\n\t}{\n\t\t{\n\t\t\tname:     \"finds a file (relative)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"finds a file with relative indirection\",\n\t\t\troot:     \"./testdata/../testdata\",\n\t\t\tinput:    \"image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"managed non-existing files (relative)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"testdata/image-symlinks/bogus.txt\",\n\t\t\trefCount: 0,\n\t\t},\n\t\t{\n\t\t\tname:     \"finds a file (absolute)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"/image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:                 \"directories ignored\",\n\t\t\troot:                 \"./testdata/\",\n\t\t\tinput:                \"/image-symlinks\",\n\t\t\trefCount:             0,\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(c.root, \"\")\n\t\t\tassert.NoError(t, err)\n\n\t\t\thasPath := resolver.HasPath(c.input)\n\t\t\tif !c.forcePositiveHasPath {\n\t\t\t\tif c.refCount != 0 && !hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to indicate existence, but did not\")\n\t\t\t\t} else if c.refCount == 0 && hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to NOT indicate existence, but does\")\n\t\t\t\t}\n\t\t\t} else if !hasPath {\n\t\t\t\tt.Errorf(\"expected HasPath() to indicate existence, but did not (force path)\")\n\t\t\t}\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, c.refCount)\n\t\t\tfor _, actual := range refs {\n\t\t\t\tassert.Equal(t, c.expected, actual.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_MultipleFilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname     string\n\t\tinput    []string\n\t\trefCount int\n\t}{\n\t\t{\n\t\t\tname:     \"finds multiple files\",\n\t\t\tinput:    []string{\"image-symlinks/file-1.txt\", \"image-symlinks/file-2.txt\"},\n\t\t\trefCount: 2,\n\t\t},\n\t\t{\n\t\t\tname:     \"skips non-existing files\",\n\t\t\tinput:    []string{\"image-symlinks/bogus.txt\", \"image-symlinks/file-1.txt\"},\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"does not return anything for non-existing directories\",\n\t\t\tinput:    []string{\"non-existing/bogus.txt\", \"non-existing/file-1.txt\"},\n\t\t\trefCount: 0,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(\"./testdata\", \"\")\n\t\t\tassert.NoError(t, err)\n\t\t\trefs, err := resolver.FilesByPath(c.input...)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tif len(refs) != c.refCount {\n\t\t\t\tt.Errorf(\"unexpected number of refs: %d != %d\", len(refs), c.refCount)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_FilesByGlobMultiple(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata\", \"\")\n\tassert.NoError(t, err)\n\trefs, err := resolver.FilesByGlob(\"**/image-symlinks/file*\")\n\tassert.NoError(t, err)\n\n\tassert.Len(t, refs, 2)\n}\n\nfunc TestDirectoryResolver_FilesByGlobRecursive(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/image-symlinks\", \"\")\n\tassert.NoError(t, err)\n\trefs, err := resolver.FilesByGlob(\"**/*.txt\")\n\tassert.NoError(t, err)\n\tassert.Len(t, refs, 6)\n}\n\nfunc TestDirectoryResolver_FilesByGlobSingle(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata\", \"\")\n\tassert.NoError(t, err)\n\trefs, err := resolver.FilesByGlob(\"**/image-symlinks/*1.txt\")\n\tassert.NoError(t, err)\n\n\tassert.Len(t, refs, 1)\n\tassert.Equal(t, \"image-symlinks/file-1.txt\", refs[0].RealPath)\n}\n\nfunc TestDirectoryResolver_FilesByPath_ResolvesSymlinks(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tname:    \"one degree\",\n\t\t\tfixture: \"link_to_new_readme\",\n\t\t},\n\t\t{\n\t\t\tname:    \"two degrees\",\n\t\t\tfixture: \"link_to_link_to_new_readme\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(\"./testdata/symlinks-simple\", \"\")\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, 1)\n\n\t\t\treader, err := resolver.FileContentsByLocation(refs[0])\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual, err := io.ReadAll(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpected, err := os.ReadFile(\"testdata/symlinks-simple/readme\")\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, string(expected), string(actual))\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolverDoesNotIgnoreRelativeSystemPaths(t *testing.T) {\n\t// let's make certain that \"dev/place\" is not ignored, since it is not \"/dev/place\"\n\tresolver, err := NewFromDirectory(\"testdata/system_paths/target\", \"\")\n\tassert.NoError(t, err)\n\n\t// all paths should be found (non filtering matches a path)\n\tlocations, err := resolver.FilesByGlob(\"**/place\")\n\tassert.NoError(t, err)\n\t// 4: within target/\n\t// 1: target/link --> relative path to \"place\" // NOTE: this is filtered out since it not unique relative to outside_root/link_target/place\n\t// 1: outside_root/link_target/place\n\tassert.Len(t, locations, 6)\n\n\t// ensure that symlink indexing outside of root worked\n\ttestLocation := \"testdata/system_paths/outside_root/link_target/place\"\n\tok := false\n\tfor _, location := range locations {\n\t\tif strings.HasSuffix(location.RealPath, testLocation) {\n\t\t\tok = true\n\t\t}\n\t}\n\n\tif !ok {\n\t\tt.Fatalf(\"could not find test location=%q\", testLocation)\n\t}\n}\n\nfunc Test_directoryResolver_FilesByMIMEType(t *testing.T) {\n\ttests := []struct {\n\t\tfixturePath   string\n\t\tmimeType      string\n\t\texpectedPaths *strset.Set\n\t}{\n\t\t{\n\t\t\tfixturePath:   \"./testdata/image-simple\",\n\t\t\tmimeType:      \"text/plain\",\n\t\t\texpectedPaths: strset.New(\"file-1.txt\", \"file-2.txt\", \"target/really/nested/file-3.txt\", \"Dockerfile\"),\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.fixturePath, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(test.fixturePath, \"\")\n\t\t\tassert.NoError(t, err)\n\t\t\tlocations, err := resolver.FilesByMIMEType(test.mimeType)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, test.expectedPaths.Size(), len(locations))\n\t\t\tfor _, l := range locations {\n\t\t\t\tassert.True(t, test.expectedPaths.Has(l.RealPath), \"does not have path %q\", l.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_IndexingNestedSymLinks(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-simple\", \"\")\n\trequire.NoError(t, err)\n\n\t// check that we can get the real path\n\tlocations, err := resolver.FilesByPath(\"./readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// check that we can access the same file via 1 symlink\n\tlocations, err = resolver.FilesByPath(\"./link_to_new_readme\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\tassert.Equal(t, \"readme\", locations[0].RealPath)\n\tassert.Equal(t, \"link_to_new_readme\", locations[0].AccessPath)\n\n\t// check that we can access the same file via 2 symlinks\n\tlocations, err = resolver.FilesByPath(\"./link_to_link_to_new_readme\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\tassert.Equal(t, \"readme\", locations[0].RealPath)\n\tassert.Equal(t, \"link_to_link_to_new_readme\", locations[0].AccessPath)\n\n\t// check that we can access the same file via 2 symlinks\n\tlocations, err = resolver.FilesByGlob(\"**/link_*\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1) // you would think this is 2, however, they point to the same file, and glob only returns unique files\n\n\t// returned locations can be in any order\n\texpectedAccessPaths := []string{\n\t\t\"link_to_link_to_new_readme\",\n\t\t//\"link_to_new_readme\", // we filter out this one because the first symlink resolves to the same file\n\t}\n\n\texpectedRealPaths := []string{\n\t\t\"readme\",\n\t}\n\n\tactualRealPaths := strset.New()\n\tactualAccessPaths := strset.New()\n\tfor _, a := range locations {\n\t\tactualAccessPaths.Add(a.AccessPath)\n\t\tactualRealPaths.Add(a.RealPath)\n\t}\n\n\tassert.ElementsMatch(t, expectedAccessPaths, actualAccessPaths.List())\n\tassert.ElementsMatch(t, expectedRealPaths, actualRealPaths.List())\n}\n\nfunc Test_IndexingNestedSymLinks_ignoredIndexes(t *testing.T) {\n\tfilterFn := func(_, path string, _ os.FileInfo, _ error) error {\n\t\tif strings.HasSuffix(path, string(filepath.Separator)+\"readme\") {\n\t\t\treturn ErrSkipPath\n\t\t}\n\t\treturn nil\n\t}\n\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-simple\", \"\", filterFn)\n\trequire.NoError(t, err)\n\n\t// the path to the real file is PRUNED from the index, so we should NOT expect a location returned\n\tlocations, err := resolver.FilesByPath(\"./readme\")\n\trequire.NoError(t, err)\n\tassert.Empty(t, locations)\n\n\t// check that we cannot access the file even via symlink\n\tlocations, err = resolver.FilesByPath(\"./link_to_new_readme\")\n\trequire.NoError(t, err)\n\tassert.Empty(t, locations)\n\n\t// check that we still cannot access the same file via 2 symlinks\n\tlocations, err = resolver.FilesByPath(\"./link_to_link_to_new_readme\")\n\trequire.NoError(t, err)\n\tassert.Empty(t, locations)\n}\n\nfunc Test_IndexingNestedSymLinksOutsideOfRoot(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-multiple-roots/root\", \"\")\n\trequire.NoError(t, err)\n\n\t// check that we can get the real path\n\tlocations, err := resolver.FilesByPath(\"./readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// check that we can access the same file via 2 symlinks (link_to_link_to_readme -> link_to_readme -> readme)\n\tlocations, err = resolver.FilesByPath(\"./link_to_link_to_readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// something looks wrong here\n\tt.Failed()\n}\n\nfunc Test_RootViaSymlink(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/symlinked-root/nested/link-root\", \"\")\n\trequire.NoError(t, err)\n\n\tlocations, err := resolver.FilesByPath(\"./file1.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\tlocations, err = resolver.FilesByPath(\"./nested/file2.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\tlocations, err = resolver.FilesByPath(\"./nested/linked-file1.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n}\n\nfunc Test_directoryResolver_FileContentsByLocation(t *testing.T) {\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tr, err := NewFromDirectory(\".\", \"\")\n\trequire.NoError(t, err)\n\n\texists, existingPath, err := r.Tree.File(stereoscopeFile.Path(filepath.Join(cwd, \"testdata/image-simple/file-1.txt\")))\n\trequire.True(t, exists)\n\trequire.NoError(t, err)\n\trequire.True(t, existingPath.HasReference())\n\n\ttests := []struct {\n\t\tname     string\n\t\tlocation file.Location\n\t\texpects  string\n\t\terr      bool\n\t}{\n\t\t{\n\t\t\tname:     \"use file reference for content requests\",\n\t\t\tlocation: file.NewLocationFromDirectory(\"some/place\", \"\", *existingPath.Reference),\n\t\t\texpects:  \"this file has contents\",\n\t\t},\n\t\t{\n\t\t\tname:     \"error on empty file reference\",\n\t\t\tlocation: file.NewLocationFromDirectory(\"doesn't matter\", \"\", stereoscopeFile.Reference{}),\n\t\t\terr:      true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\tactual, err := r.FileContentsByLocation(test.location)\n\t\t\tif test.err {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\tif test.expects != \"\" {\n\t\t\t\tb, err := io.ReadAll(actual)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tassert.Equal(t, test.expects, string(b))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_SymlinkLoopWithGlobsShouldResolve(t *testing.T) {\n\ttest := func(t *testing.T) {\n\t\tresolver, err := NewFromDirectory(\"./testdata/symlinks-loop\", \"\")\n\t\trequire.NoError(t, err)\n\n\t\tlocations, err := resolver.FilesByGlob(\"**/file.target\")\n\t\trequire.NoError(t, err)\n\n\t\trequire.Len(t, locations, 1)\n\t\tassert.Equal(t, \"devices/loop0/file.target\", locations[0].RealPath)\n\t}\n\n\ttestWithTimeout(t, 5*time.Second, test)\n}\n\nfunc TestDirectoryResolver_FilesByPath_baseRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname     string\n\t\troot     string\n\t\tinput    string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:  \"should find the base file\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./base\",\n\t\t\texpected: []string{\n\t\t\t\t\"/base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow a link with a pivoted root\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./foo\",\n\t\t\texpected: []string{\n\t\t\t\t\"/base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow a relative link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./bar\",\n\t\t\texpected: []string{\n\t\t\t\t\"/base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow an absolute link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./baz\",\n\t\t\texpected: []string{\n\t\t\t\t\"/base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow an absolute link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./sub/link\",\n\t\t\texpected: []string{\n\t\t\t\t\"/sub/item\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow chained pivoted link\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./chain\",\n\t\t\texpected: []string{\n\t\t\t\t\"/base\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(c.root, c.root)\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n\n}\n\nfunc Test_directoryResolver_resolvesLinks(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trunner   func(file.Resolver) []file.Location\n\t\texpected []file.Location\n\t}{\n\t\t{\n\t\t\tname: \"by mimetype\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links should not show up when searching mimetype\n\t\t\t\tactualLocations, err := resolver.FilesByMIMEType(\"text/plain\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewLocation(\"file-1.txt\"),        // note: missing virtual path \"file-1.txt\"\n\t\t\t\tfile.NewLocation(\"file-3.txt\"),        // note: missing virtual path \"file-3.txt\"\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),        // note: missing virtual path \"file-2.txt\"\n\t\t\t\tfile.NewLocation(\"parent/file-4.txt\"), // note: missing virtual path \"file-4.txt\"\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\t// for that reason we need to place **/ in front (which is not the same for other resolvers)\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*ink-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"file-1.txt\", \"link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-2\"),\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t//file.NewVirtualLocation(\"file-2.txt\", \"link-indirect\"),\n\t\t\t\tfile.NewVirtualLocation(\"file-3.txt\", \"link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-2.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// this has two copies in the base image, which overwrites the same location\n\t\t\t\tfile.NewLocation(\"file-2.txt\"), // note: missing virtual path \"file-2.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-?.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewLocation(\"file-1.txt\"),        // note: missing virtual path \"file-1.txt\"\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),        // note: missing virtual path \"file-2.txt\"\n\t\t\t\tfile.NewLocation(\"file-3.txt\"),        // note: missing virtual path \"file-3.txt\"\n\t\t\t\tfile.NewLocation(\"parent/file-4.txt\"), // note: missing virtual path \"parent/file-4.txt\"\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/link-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"file-1.txt\", \"link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-2\"),\n\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t//file.NewVirtualLocation(\"file-2.txt\", \"link-indirect\"),\n\n\t\t\t\tfile.NewVirtualLocation(\"file-3.txt\", \"link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by extension\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewLocation(\"file-1.txt\"),        // note: missing virtual path \"file-1.txt\"\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),        // note: missing virtual path \"file-2.txt\"\n\t\t\t\tfile.NewLocation(\"file-3.txt\"),        // note: missing virtual path \"file-3.txt\"\n\t\t\t\tfile.NewLocation(\"parent/file-4.txt\"), // note: missing virtual path \"parent/file-4.txt\"\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 1 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links resolve to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-2\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 2 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// multiple links resolves to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-indirect\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-indirect\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver, err := NewFromDirectory(\"./testdata/symlinks-from-image-symlinks-fixture\", \"\")\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tactual := test.runner(resolver)\n\n\t\t\tcompareLocations(t, test.expected, actual)\n\t\t})\n\t}\n}\n\nfunc TestDirectoryResolver_DoNotAddVirtualPathsToTree(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-prune-indexing\", \"\")\n\trequire.NoError(t, err)\n\n\tvar allRealPaths []stereoscopeFile.Path\n\tfor l := range resolver.AllLocations(context.Background()) {\n\t\tallRealPaths = append(allRealPaths, stereoscopeFile.Path(l.RealPath))\n\t}\n\tpathSet := stereoscopeFile.NewPathSet(allRealPaths...)\n\n\tassert.False(t,\n\t\tpathSet.Contains(\"before-path/file.txt\"),\n\t\t\"symlink destinations should only be indexed at their real path, not through their virtual (symlinked) path\",\n\t)\n\n\tassert.False(t,\n\t\tpathSet.Contains(\"a-path/file.txt\"),\n\t\t\"symlink destinations should only be indexed at their real path, not through their virtual (symlinked) path\",\n\t)\n\n}\n\nfunc TestDirectoryResolver_FilesContents_errorOnDirRequest(t *testing.T) {\n\tdefer goleak.VerifyNone(t)\n\tresolver, err := NewFromDirectory(\"./testdata/system_paths\", \"\")\n\tassert.NoError(t, err)\n\n\tvar dirLoc *file.Location\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tentry, err := resolver.Index.Get(loc.Reference())\n\t\trequire.NoError(t, err)\n\t\tif entry.Metadata.IsDir() {\n\t\t\tdirLoc = &loc\n\t\t\tbreak\n\t\t}\n\t}\n\n\trequire.NotNil(t, dirLoc)\n\n\treader, err := resolver.FileContentsByLocation(*dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n}\n\nfunc TestDirectoryResolver_AllLocations(t *testing.T) {\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-from-image-symlinks-fixture\", \"\")\n\tassert.NoError(t, err)\n\n\tpaths := strset.New()\n\tfor loc := range resolver.AllLocations(context.Background()) {\n\t\tif strings.HasPrefix(loc.RealPath, \"/\") {\n\t\t\t// ignore outside the fixture root for now\n\t\t\tcontinue\n\t\t}\n\t\tpaths.Add(loc.RealPath)\n\t}\n\texpected := []string{\n\t\t\"file-1.txt\",\n\t\t\"file-2.txt\",\n\t\t\"file-3.txt\",\n\t\t\"link-1\",\n\t\t\"link-2\",\n\t\t\"link-dead\",\n\t\t\"link-indirect\",\n\t\t\"link-within\",\n\t\t\"parent\",\n\t\t\"parent-link\",\n\t\t\"parent/file-4.txt\",\n\t}\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\tassert.ElementsMatchf(t, expected, pathsList, \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, paths.List()))\n}\n\nfunc TestAllLocationsDoesNotLeakGoRoutine(t *testing.T) {\n\tdefer goleak.VerifyNone(t)\n\tresolver, err := NewFromDirectory(\"./testdata/symlinks-from-image-symlinks-fixture\", \"\")\n\trequire.NoError(t, err)\n\tctx, cancel := context.WithCancel(context.Background())\n\tfor range resolver.AllLocations(ctx) {\n\t\tbreak\n\t}\n\tcancel()\n}\n\nvar _ fs.FileInfo = (*testFileInfo)(nil)\n\ntype testFileInfo struct {\n\tmode os.FileMode\n}\n\nfunc (t testFileInfo) Name() string {\n\tpanic(\"implement me\")\n}\n\nfunc (t testFileInfo) Size() int64 {\n\tpanic(\"implement me\")\n}\n\nfunc (t testFileInfo) Mode() fs.FileMode {\n\treturn t.mode\n}\n\nfunc (t testFileInfo) ModTime() time.Time {\n\tpanic(\"implement me\")\n}\n\nfunc (t testFileInfo) IsDir() bool {\n\tpanic(\"implement me\")\n}\n\nfunc (t testFileInfo) Sys() interface{} {\n\tpanic(\"implement me\")\n}\n\n// Tests for filetree resolver when single file is used for index\nfunc TestFileResolver_FilesByPath(t *testing.T) {\n\ttests := []struct {\n\t\tdescription        string\n\t\tfilePath           string // relative to cwd\n\t\tfileByPathInput    string\n\t\texpectedRealPath   string\n\t\texpectedAccessPath string\n\t\tcwd                string\n\t}{\n\t\t{\n\t\t\tdescription:        \"Finds file if searched by filepath\",\n\t\t\tfilePath:           \"./testdata/req-resp/path/to/the/file.txt\",\n\t\t\tfileByPathInput:    \"file.txt\",\n\t\t\texpectedRealPath:   \"/file.txt\",\n\t\t\texpectedAccessPath: \"/file.txt\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.description, func(t *testing.T) {\n\t\t\tparentPath, err := absoluteSymlinkFreePathToParent(tt.filePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, parentPath)\n\n\t\t\tresolver, err := NewFromFile(tt.filePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, resolver)\n\t\t\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\t\t\trefs, err := resolver.FilesByPath(tt.fileByPathInput)\n\t\t\trequire.NoError(t, err)\n\t\t\tif tt.expectedRealPath == \"\" {\n\t\t\t\trequire.Empty(t, refs)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.Len(t, refs, 1)\n\t\t\tassert.Equal(t, tt.expectedRealPath, refs[0].RealPath, \"real path different\")\n\t\t\tassert.Equal(t, tt.expectedAccessPath, refs[0].AccessPath, \"virtual path different\")\n\t\t})\n\t}\n}\n\nfunc TestFileResolver_MultipleFilesByPath(t *testing.T) {\n\ttests := []struct {\n\t\tdescription string\n\t\tinput       []string\n\t\trefCount    int\n\t}{\n\t\t{\n\t\t\tdescription: \"finds file \",\n\t\t\tinput:       []string{\"file.txt\"},\n\t\t\trefCount:    1,\n\t\t},\n\t\t{\n\t\t\tdescription: \"skip non-existing files\",\n\t\t\tinput:       []string{\"file.txt\", \"bogus.txt\"},\n\t\t\trefCount:    1,\n\t\t},\n\t\t{\n\t\t\tdescription: \"does not return anything for non-existing files\",\n\t\t\tinput:       []string{\"non-existing/bogus.txt\", \"another-bogus.txt\"},\n\t\t\trefCount:    0,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.description, func(t *testing.T) {\n\t\t\tfilePath := \"./testdata/req-resp/path/to/the/file.txt\"\n\t\t\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, parentPath)\n\n\t\t\tresolver, err := NewFromFile(filePath)\n\t\t\tassert.NoError(t, err)\n\t\t\trequire.NotNil(t, resolver)\n\t\t\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\t\t\trefs, err := resolver.FilesByPath(tt.input...)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tif len(refs) != tt.refCount {\n\t\t\t\tt.Errorf(\"unexpected number of refs: %d != %d\", len(refs), tt.refCount)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFileResolver_FilesByGlob(t *testing.T) {\n\tfilePath := \"./testdata/req-resp/path/to/the/file.txt\"\n\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, parentPath)\n\n\tresolver, err := NewFromFile(filePath)\n\tassert.NoError(t, err)\n\trequire.NotNil(t, resolver)\n\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\trefs, err := resolver.FilesByGlob(\"**/*.txt\")\n\tassert.NoError(t, err)\n\n\tassert.Len(t, refs, 1)\n}\n\nfunc Test_fileResolver_FilesByMIMEType(t *testing.T) {\n\ttests := []struct {\n\t\tfixturePath   string\n\t\tmimeType      string\n\t\texpectedPaths *strset.Set\n\t}{\n\t\t{\n\t\t\tfixturePath:   \"./testdata/image-simple/file-1.txt\",\n\t\t\tmimeType:      \"text/plain\",\n\t\t\texpectedPaths: strset.New(\"/file-1.txt\"),\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.fixturePath, func(t *testing.T) {\n\t\t\tfilePath := \"./testdata/image-simple/file-1.txt\"\n\t\t\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, parentPath)\n\n\t\t\tresolver, err := NewFromFile(filePath)\n\t\t\tassert.NoError(t, err)\n\t\t\trequire.NotNil(t, resolver)\n\t\t\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\t\t\tlocations, err := resolver.FilesByMIMEType(test.mimeType)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, test.expectedPaths.Size(), len(locations))\n\t\t\tfor _, l := range locations {\n\t\t\t\tassert.True(t, test.expectedPaths.Has(l.RealPath), \"does not have path %q\", l.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_fileResolver_FileContentsByLocation(t *testing.T) {\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tfilePath := \"./testdata/image-simple/file-1.txt\"\n\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, parentPath)\n\n\tresolver, err := NewFromFile(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resolver)\n\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\texists, existingPath, err := resolver.Tree.File(stereoscopeFile.Path(filepath.Join(cwd, \"testdata/image-simple/file-1.txt\")))\n\trequire.True(t, exists)\n\trequire.NoError(t, err)\n\trequire.True(t, existingPath.HasReference())\n\n\ttests := []struct {\n\t\tname     string\n\t\tlocation file.Location\n\t\texpects  string\n\t\terr      bool\n\t}{\n\t\t{\n\t\t\tname:     \"use file reference for content requests\",\n\t\t\tlocation: file.NewLocationFromDirectory(\"some/place\", \"\", *existingPath.Reference),\n\t\t\texpects:  \"this file has contents\",\n\t\t},\n\t\t{\n\t\t\tname:     \"error on empty file reference\",\n\t\t\tlocation: file.NewLocationFromDirectory(\"doesn't matter\", \"\", stereoscopeFile.Reference{}),\n\t\t\terr:      true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\tactual, err := resolver.FileContentsByLocation(test.location)\n\t\t\tif test.err {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\tif test.expects != \"\" {\n\t\t\t\tb, err := io.ReadAll(actual)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tassert.Equal(t, test.expects, string(b))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFileResolver_AllLocations_errorOnDirRequest(t *testing.T) {\n\tfilePath := \"./testdata/system_paths/target/home/place\"\n\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, parentPath)\n\n\tresolver, err := NewFromFile(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resolver)\n\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\tvar dirLoc *file.Location\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tentry, err := resolver.Index.Get(loc.Reference())\n\t\trequire.NoError(t, err)\n\t\tif dirLoc == nil && entry.Metadata.IsDir() {\n\t\t\tdirLoc = &loc\n\t\t}\n\t}\n\n\trequire.NotNil(t, dirLoc)\n\n\treader, err := resolver.FileContentsByLocation(*dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n\n\tgoleak.VerifyNone(t)\n}\n\nfunc TestFileResolver_AllLocations(t *testing.T) {\n\t// Verify both the parent and the file itself are indexed\n\tfilePath := \"./testdata/system_paths/target/home/place\"\n\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, parentPath)\n\n\tresolver, err := NewFromFile(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resolver)\n\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\tpaths := strset.New()\n\tfor loc := range resolver.AllLocations(context.Background()) {\n\t\tpaths.Add(loc.RealPath)\n\t}\n\texpected := []string{\n\t\t\"/place\",\n\t\t\"\", // This is how we see the parent dir, since we're resolving wrt the parent directory.\n\t}\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\tassert.ElementsMatchf(t, expected, pathsList, \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, paths.List()))\n\n\tgoleak.VerifyNone(t)\n}\n\nfunc Test_FileResolver_AllLocationsDoesNotLeakGoRoutine(t *testing.T) {\n\tfilePath := \"./testdata/system_paths/target/home/place\"\n\tparentPath, err := absoluteSymlinkFreePathToParent(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, parentPath)\n\n\tresolver, err := NewFromFile(filePath)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resolver)\n\tassert.Equal(t, resolver.Chroot.Base(), parentPath)\n\n\trequire.NoError(t, err)\n\tctx, cancel := context.WithCancel(context.Background())\n\tfor range resolver.AllLocations(ctx) {\n\t\tbreak\n\t}\n\tcancel()\n\n\tgoleak.VerifyNone(t)\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/get_xid.go",
    "content": "//go:build !windows\n\npackage fileresolver\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\n// getXid is the UID GID system info for unix\nfunc getXid(info os.FileInfo) (uid, gid int) {\n\tuid = -1\n\tgid = -1\n\tif stat, ok := info.Sys().(*syscall.Stat_t); ok {\n\t\tuid = int(stat.Uid)\n\t\tgid = int(stat.Gid)\n\t}\n\n\treturn uid, gid\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/get_xid_win.go",
    "content": "//go:build windows\n\npackage fileresolver\n\nimport (\n\t\"os\"\n)\n\n// getXid is a placeholder for windows file information\nfunc getXid(info os.FileInfo) (uid, gid int) {\n\treturn -1, -1\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/metadata.go",
    "content": "package fileresolver\n\nimport (\n\t\"os\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/internal/windows\"\n)\n\nfunc NewMetadataFromPath(path string, info os.FileInfo) file.Metadata {\n\tvar mimeType string\n\tuid, gid := getXid(info)\n\n\tty := file.TypeFromMode(info.Mode())\n\n\tif ty == file.TypeRegular {\n\t\tusablePath := path\n\t\t// denormalize the path back to windows so we can open the file\n\t\tif windows.HostRunningOnWindows() {\n\t\t\tusablePath = windows.FromPosix(usablePath)\n\t\t}\n\n\t\tf, err := os.Open(usablePath)\n\t\tif err != nil {\n\t\t\t// TODO: it may be that the file is inaccessible, however, this is not an error or a warning. In the future we need to track these as known-unknowns\n\t\t\tf = nil\n\t\t} else {\n\t\t\tdefer internal.CloseAndLogError(f, usablePath)\n\t\t}\n\n\t\tmimeType = file.MIMEType(f)\n\t}\n\n\treturn file.Metadata{\n\t\tFileInfo: info,\n\t\tPath:     path,\n\t\tType:     ty,\n\t\t// unsupported across platforms\n\t\tUserID:   uid,\n\t\tGroupID:  gid,\n\t\tMIMEType: mimeType,\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/metadata_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n)\n\nfunc TestFileMetadataFromPath(t *testing.T) {\n\n\ttests := []struct {\n\t\tpath             string\n\t\texpectedType     file.Type\n\t\texpectedMIMEType string\n\t}{\n\t\t{\n\t\t\tpath:             \"testdata/symlinks-simple/readme\",\n\t\t\texpectedType:     file.TypeRegular,\n\t\t\texpectedMIMEType: \"text/plain\",\n\t\t},\n\t\t{\n\t\t\tpath:             \"testdata/symlinks-simple/link_to_new_readme\",\n\t\t\texpectedType:     file.TypeSymLink,\n\t\t\texpectedMIMEType: \"\",\n\t\t},\n\t\t{\n\t\t\tpath:             \"testdata/symlinks-simple/link_to_link_to_new_readme\",\n\t\t\texpectedType:     file.TypeSymLink,\n\t\t\texpectedMIMEType: \"\",\n\t\t},\n\t\t{\n\t\t\tpath:             \"testdata/symlinks-simple\",\n\t\t\texpectedType:     file.TypeDirectory,\n\t\t\texpectedMIMEType: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\tinfo, err := os.Lstat(test.path)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual := NewMetadataFromPath(test.path, info)\n\t\t\tassert.Equal(t, test.expectedMIMEType, actual.MIMEType, \"unexpected MIME type for %s\", test.path)\n\t\t\tassert.Equal(t, test.expectedType, actual.Type, \"unexpected type for %s\", test.path)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/path_skipper.go",
    "content": "package fileresolver\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/moby/sys/mountinfo\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\ntype pathSkipper struct {\n\t// scanTarget is the root path that is being scanned (without any base-path logic applied).\n\tscanTarget string\n\n\t// ignorableMountTypes is a set of mount types that should be ignored. Optionally a list of paths (the map values)\n\t// can be provided that this mount type should be ignored at.  For example in some containers /dev is mounted\n\t// as a tmpfs and should be ignored, but /tmp should not be ignored. An empty list of paths means that paths\n\t// within the mount type should always be ignored.\n\tignorableMountTypes map[string][]string\n\n\t// current mount paths for the current system\n\tmounts       []*mountinfo.Info\n\tmountsByType map[string][]*mountinfo.Info\n}\n\n// skipPathsByMountTypeAndName accepts the root path and returns a PathIndexVisitor that will skip paths based\n// the filesystem type, the mountpoint, and configured blocklist paths for each filesystem type.\n// This will help syft dodge filesystem topologies that have the potential to make the search space much bigger in\n// areas known to not traditionally contain files of interest (installed software).  It is meant to allow scanning\n// \"/\" on a unix host to succeed, while also not causing any files in a narrow directory scan to be skipped unnecessarily.\nfunc skipPathsByMountTypeAndName(root string) PathIndexVisitor {\n\tinfos, err := mountinfo.GetMounts(nil)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to get system mounts\")\n\t\treturn func(_ string, _ string, _ os.FileInfo, _ error) error {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn newPathSkipperFromMounts(root, infos).pathIndexVisitor\n}\n\nfunc newPathSkipperFromMounts(root string, infos []*mountinfo.Info) pathSkipper {\n\t// we're only interested in ignoring the logical filesystems typically found at these mount points:\n\t// - /proc\n\t//     - procfs\n\t//     - proc\n\t// - /sys\n\t//     - sysfs\n\t// - /dev\n\t//     - devfs - BSD/darwin flavored systems and old linux systems\n\t//     - devtmpfs - driver core maintained /dev tmpfs\n\t//     - udev - userspace implementation that replaced devfs\n\t//     - tmpfs - used for /dev in special instances (within a container)\n\tignorableMountTypes := map[string][]string{\n\t\t\"proc\":     nil,\n\t\t\"procfs\":   nil,\n\t\t\"sysfs\":    nil,\n\t\t\"devfs\":    nil,\n\t\t\"devtmpfs\": nil,\n\t\t\"udev\":     nil,\n\t\t// note: there should be no order required (e.g. search /sys/thing before /sys) since that would imply that\n\t\t// we could not ignore a nested path within a path that would be ignored anyway.\n\t\t\"tmpfs\": {\"/run\", \"/dev\", \"/var/run\", \"/var/lock\", \"/sys\"},\n\t}\n\n\t// The longest path is the most specific path, e.g.\n\t// if / is mounted as tmpfs, but /home/syft/permanent is mounted as ext4,\n\t// then the mount type for /home/syft/permanent/foo is ext4, and the mount info\n\t// stating that /home/syft/permanent is ext4 has the longer mount point.\n\tsort.Slice(infos, func(i, j int) bool {\n\t\treturn len(infos[i].Mountpoint) > len(infos[j].Mountpoint)\n\t})\n\n\tmountsByType := make(map[string][]*mountinfo.Info)\n\n\tfor _, mi := range infos {\n\t\tmountsByType[mi.FSType] = append(mountsByType[mi.FSType], mi)\n\t}\n\n\treturn pathSkipper{\n\t\tscanTarget:          root,\n\t\tignorableMountTypes: ignorableMountTypes,\n\t\tmounts:              infos,\n\t\tmountsByType:        mountsByType,\n\t}\n}\n\nfunc (ps pathSkipper) pathIndexVisitor(_ string, givenPath string, _ os.FileInfo, _ error) error {\n\tfor _, mi := range ps.mounts {\n\t\tconditionalPaths, ignorable := ps.ignorableMountTypes[mi.FSType]\n\n\t\t// Rule 0: Make sure the given path is within the mount point; if not let the scan continue\n\t\tif !containsPath(givenPath, mi.Mountpoint) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Rule 1: ignore any path within a mount point that is of the given filesystem type unconditionally\n\t\tif len(conditionalPaths) == 0 {\n\t\t\tif !ignorable {\n\t\t\t\t// we've matched on the most specific path at this point, which means we should stop searching\n\t\t\t\t// mount points for this path\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tlog.WithFields(\n\t\t\t\t\"path\", givenPath,\n\t\t\t\t\"mountpoint\", mi.Mountpoint,\n\t\t\t\t\"fs\", mi.FSType,\n\t\t\t).Debug(\"ignoring path based on mountpoint filesystem type\")\n\n\t\t\treturn fs.SkipDir\n\t\t}\n\n\t\t// Rule 2: ignore any path within a mount point that is of the given filesystem type, only if\n\t\t// the path is on a known blocklist of paths for that filesystem type.\n\t\t// For example: /dev can be mounted as a tmpfs, which should always be skipped.\n\t\tfor _, conditionalPath := range conditionalPaths {\n\t\t\tif !containsPath(givenPath, conditionalPath) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tlog.WithFields(\n\t\t\t\t\"path\", givenPath,\n\t\t\t\t\"mountpoint\", mi.Mountpoint,\n\t\t\t\t\"fs\", mi.FSType,\n\t\t\t\t\"condition\", conditionalPath,\n\t\t\t).Debug(\"ignoring path based on mountpoint filesystem type\")\n\n\t\t\treturn fs.SkipDir\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc containsPath(p1, p2 string) bool {\n\tp1Clean := simpleClean(p1)\n\tp2Clean := simpleClean(p2)\n\tif p1Clean == p2Clean {\n\t\treturn true\n\t}\n\tif !strings.HasPrefix(p1Clean, p2Clean) {\n\t\treturn false\n\t}\n\t// This is done to avoid allocation of a new string\n\treturn len(p1Clean) > len(p2Clean) && p1Clean[len(p2Clean)] == '/'\n}\n\nfunc simpleClean(p string) string {\n\tp = strings.TrimSpace(p)\n\tif p == \"\" {\n\t\treturn \".\"\n\t}\n\tif p == \"/\" {\n\t\treturn \"\"\n\t}\n\treturn strings.TrimSuffix(p, \"/\")\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/path_skipper_test.go",
    "content": "package fileresolver\n\nimport (\n\t\"io/fs\"\n\t\"testing\"\n\n\t\"github.com/moby/sys/mountinfo\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_newPathSkipper(t *testing.T) {\n\ttype expect struct {\n\t\tpath    string\n\t\twantErr assert.ErrorAssertionFunc\n\t}\n\tunixSubject := []*mountinfo.Info{\n\t\t{\n\t\t\tMountpoint: \"/proc\",\n\t\t\tFSType:     \"procfs\",\n\t\t},\n\t\t{\n\t\t\tMountpoint: \"/sys\",\n\t\t\tFSType:     \"sysfs\",\n\t\t},\n\t\t{\n\t\t\tMountpoint: \"/dev\",\n\t\t\tFSType:     \"devfs\",\n\t\t},\n\t\t{\n\t\t\tMountpoint: \"/\",\n\t\t\tFSType:     \"/dev/disk3s1s1\",\n\t\t},\n\t\t{\n\t\t\tMountpoint: \"/dev/shm\",\n\t\t\tFSType:     \"shm\",\n\t\t},\n\t\t{\n\t\t\tMountpoint: \"/tmp\",\n\t\t\tFSType:     \"tmpfs\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname   string\n\t\troot   string\n\t\tbase   string\n\t\tmounts []*mountinfo.Info\n\t\twant   []expect\n\t}{\n\t\t{\n\t\t\tname: \"happy path\",\n\t\t\troot: \"/somewhere\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/home/somewhere/else\",\n\t\t\t\t\tFSType:     \"/dev/disk3s6\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/somewhere\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// within a known mountpoint with valid type (1)\n\t\t\t\t\tpath: \"/somewhere/dev\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// is a known mountpoint with valid type\n\t\t\t\t\tpath: \"/somewhere\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// within a known mountpoint with valid type (2)\n\t\t\t\t\tpath: \"/home/somewhere/else/too\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// outside of any known mountpoint should not be an error\n\t\t\t\t\tpath: \"/bogus\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignore paths within a scan target\",\n\t\t\troot: \"/somewhere\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/somewhere/doesnt/matter/proc\",\n\t\t\t\t\tFSType:     \"procfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/somewhere\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// within a known mountpoint with valid type (1)\n\t\t\t\t\tpath: \"/somewhere/dev\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// is a known mountpoint with valid type\n\t\t\t\t\tpath: \"/somewhere\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// mountpoint that should be ignored\n\t\t\t\t\tpath:    \"/somewhere/doesnt/matter/proc\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// within a mountpoint that should be ignored\n\t\t\t\t\tpath:    \"/somewhere/doesnt/matter/proc\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"nested mountpoints behave correctly\",\n\t\t\troot: \"/somewhere\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/somewhere/dev\",\n\t\t\t\t\tFSType:     \"devfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/somewhere/dev/includeme\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// is a known mountpoint with valid type\n\t\t\t\t\tpath:    \"/somewhere/dev\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// is a known mountpoint with valid type\n\t\t\t\t\tpath: \"/somewhere/dev/includeme\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// within a known mountpoint with valid type\n\t\t\t\t\tpath: \"/somewhere/dev/includeme/too!\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"keep some tmpfs mounts conditionally\",\n\t\t\troot: \"/\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/run/somewhere\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/run/terrafirma\",\n\t\t\t\t\tFSType:     \"/dev/disk3s8\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/tmp\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/else/othertmp\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/else/othertmp/includeme\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// since /run is explicitly ignored, this should be skipped\n\t\t\t\t\tpath:    \"/run/somewhere/else\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/run/terrafirma\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/run/terrafirma/nested\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/tmp\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/else/othertmp/includeme\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/else/othertmp/includeme/nested\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// no mount path, so we should include it\n\t\t\t\t\tpath: \"/somewhere/dev/includeme\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// keep additional tmpfs mounts that are not explicitly ignored\n\t\t\t\t\tpath: \"/else/othertmp\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ignore known trixy tmpfs paths\",\n\t\t\troot: \"/\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/dev\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/run\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/var/run\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/var/lock\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/sys\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/tmp\",\n\t\t\t\t\tFSType:     \"tmpfs\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/dev\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/run\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/var/run\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/var/lock\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/sys\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t// show that we honor ignoring nested paths\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/sys/nested\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t// show that paths outside of the known mountpoints are not skipped\n\t\t\t\t{\n\t\t\t\t\tpath: \"/stuff\",\n\t\t\t\t},\n\t\t\t\t// show that we allow other tmpfs paths that are not on the blocklist\n\t\t\t\t{\n\t\t\t\t\tpath: \"/tmp/allowed\",\n\t\t\t\t},\n\t\t\t\t// show sibling paths with same prefix (e.g. /sys vs /system) to that of not allowed paths are not skipped\n\t\t\t\t{\n\t\t\t\t\tpath: \"/system\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"test unix paths\",\n\t\t\tmounts: unixSubject,\n\t\t\troot:   \"/\",\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// relative path to proc is allowed\n\t\t\t\t\tpath: \"proc/place\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// relative path within proc is not allowed\n\t\t\t\t\tpath:    \"/proc/place\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// path exactly to proc is not allowed\n\t\t\t\t\tpath:    \"/proc\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// similar to proc\n\t\t\t\t\tpath: \"/pro/c\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// similar to proc\n\t\t\t\t\tpath: \"/pro\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// dev is not allowed\n\t\t\t\t\tpath:    \"/dev\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// sys is not allowed\n\t\t\t\t\tpath:    \"/sys\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"test unix paths with base\",\n\t\t\tmounts: unixSubject,\n\t\t\troot:   \"/\",\n\t\t\tbase:   \"/a/b/c\",\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\t// do not consider base when matching paths (non-matching)\n\t\t\t\t\tpath: \"/a/b/c/dev\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// do not consider base when matching paths (matching)\n\t\t\t\t\tpath:    \"/dev\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"mimic nixos setup\",\n\t\t\troot: \"/\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/\",\n\t\t\t\t\tFSType:     \"tmpfs\", // this is an odd setup, but valid\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tMountpoint: \"/home\",\n\t\t\t\t\tFSType:     \"/dev/disk3s7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\tpath: \"/home/somewhere\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/home\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: \"/somewhere\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// still not allowed...\n\t\t\t\t\tpath:    \"/run\",\n\t\t\t\t\twantErr: assertSkipErr(),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"buildkit github ubuntu 22.04\",\n\t\t\troot: \"/run/src/core/sbom\",\n\t\t\tmounts: []*mountinfo.Info{\n\t\t\t\t{Mountpoint: \"/\", FSType: \"overlay\"},\n\t\t\t\t{Mountpoint: \"/proc\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/dev\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/dev/pts\", FSType: \"devpts\"},\n\t\t\t\t{Mountpoint: \"/dev/shm\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/dev/mqueue\", FSType: \"mqueue\"},\n\t\t\t\t{Mountpoint: \"/sys\", FSType: \"sysfs\"},\n\t\t\t\t{Mountpoint: \"/etc/resolv.conf\", FSType: \"ext4\"},\n\t\t\t\t{Mountpoint: \"/etc/hosts\", FSType: \"ext4\"},\n\t\t\t\t{Mountpoint: \"/sys/fs/cgroup\", FSType: \"cgroup2\"},\n\t\t\t\t{Mountpoint: \"/run/out\", FSType: \"ext4\"},\n\t\t\t\t{Mountpoint: \"/run/src/core/sbom\", FSType: \"overlay\"},\n\t\t\t\t{Mountpoint: \"/tmp\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/dev/otel-grpc.sock\", FSType: \"overlay\"},\n\t\t\t\t{Mountpoint: \"/proc/bus\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/proc/fs\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/proc/irq\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/proc/sys\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/proc/sysrq-trigger\", FSType: \"proc\"},\n\t\t\t\t{Mountpoint: \"/proc/acpi\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/proc/kcore\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/proc/keys\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/proc/latency_stats\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/proc/timer_list\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/sys/firmware\", FSType: \"tmpfs\"},\n\t\t\t\t{Mountpoint: \"/proc/scsi\", FSType: \"tmpfs\"},\n\t\t\t},\n\t\t\twant: []expect{\n\t\t\t\t{\n\t\t\t\t\tpath: \"/run/src/core/sbom\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.base == \"\" {\n\t\t\t\ttt.base = tt.root\n\t\t\t}\n\n\t\t\trequire.NotEmpty(t, tt.want)\n\t\t\tps := newPathSkipperFromMounts(tt.root, tt.mounts)\n\n\t\t\tfor _, exp := range tt.want {\n\t\t\t\tt.Run(exp.path, func(t *testing.T) {\n\n\t\t\t\t\tgot := ps.pathIndexVisitor(tt.base, exp.path, nil, nil)\n\t\t\t\t\tif exp.wantErr == nil {\n\t\t\t\t\t\tassert.NoError(t, got)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\texp.wantErr(t, got)\n\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc assertSkipErr() assert.ErrorAssertionFunc {\n\treturn assertErrorIs(fs.SkipDir)\n}\n\nfunc assertErrorIs(want error) assert.ErrorAssertionFunc {\n\treturn func(t assert.TestingT, got error, msgAndArgs ...interface{}) bool {\n\t\treturn assert.ErrorIs(t, got, want, msgAndArgs...)\n\t}\n}\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/generate-tar-fixture-from-source-dir.sh",
    "content": "#!/usr/bin/env bash\nset -eux\n\n# $1 —— absolute path to destination file, should end with .tar\n# $2 —— absolute path to directory from which to add entries to the archive\n\npushd \"$2\"\n  tar -cvf \"$1\" .\npopd\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-duplicate-path/Dockerfile",
    "content": "# Note: changes to this file will result in updating several test values. Consider making a new image fixture instead of editing this one.\nFROM scratch\nADD file-1.txt /somefile-1.txt\nADD file-2.txt /somefile-1.txt\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-duplicate-path/file-1.txt",
    "content": "this file has contents"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-duplicate-path/file-2.txt",
    "content": "file-2 contents!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-files-deleted/Dockerfile",
    "content": "FROM alpine:3.17.1@sha256:93d5a28ff72d288d69b5997b8ba47396d2cbb62a72b5d87cd3351094b5d578a0 as tools\nFROM scratch\nCOPY --from=tools /bin /bin\nCOPY --from=tools /lib /lib\nADD . .\nRUN rm -rf file-1.txt /bin /lib\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-files-deleted/file-1.txt",
    "content": "this file has contents"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-files-deleted/target/file-2.txt",
    "content": "file-2 contents!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-simple/Dockerfile",
    "content": "# Note: changes to this file will result in updating several test values. Consider making a new image fixture instead of editing this one.\nFROM scratch\nADD file-1.txt /somefile-1.txt\nADD file-2.txt /somefile-2.txt\n# note: adding a directory will behave differently on docker engine v18 vs v19\nADD target /\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-simple/file-1.txt",
    "content": "this file has contents"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-simple/file-2.txt",
    "content": "file-2 contents!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-simple/target/really/nested/file-3.txt",
    "content": "another file!\nwith lines..."
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/Dockerfile",
    "content": "# LAYER 0:\nFROM busybox:1.34.0@sha256:e8e5cca392e3cf056fcdb3093e7ac2bf83fcf28b3bcf5818fe8ae71cf360c231\n\n# LAYER 1:\nADD file-1.txt .\n\n# LAYER 2: link with previous data\nRUN ln -s ./file-1.txt link-1\n\n# LAYER 3: link with future data\nRUN ln -s ./file-2.txt link-2\n\n# LAYER 4:\nADD file-2.txt .\n\n# LAYER 5: link with current data\nRUN echo \"file 3\" > file-3.txt && ln -s ./file-3.txt link-within\n\n# LAYER 6: multiple links (link-indirect > link-2 > file-2.txt)\nRUN ln -s ./link-2 link-indirect\n\n# LAYER 7: override contents / resolution\nADD new-file-2.txt file-2.txt\n\n# LAYER 8: dead link\nRUN ln -s ./i-dont-exist.txt link-dead\n\n# LAYER 9: add the parent dir\nADD parent /parent\n\n# LAYER 10: parent is a symlink\nRUN ln -s /parent parent-link\n\n# LAYER 11: parent is a symlink and the child target is overridden\nCOPY new-file-4.txt /parent-link/file-4.txt\n\n# squash representation\n#  .\n#  ├── file-1.txt\n#  ├── file-2.txt\n#  ├── file-3.txt\n#  ├── link-1  ->  ./file-1.txt\n#  ├── link-2  ->  ./file-2.txt\n#  ├── link-dead  ->  [./i-dont-exist.txt] (dead link)\n#  ├── link-indirect  ->  ./link-2\n#  ├── link-within  ->  ./file-3.txt\n#  ├── parent\n#  │   └── file-4.txt\n#  └── parent-link -> /parent\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/file-1.txt",
    "content": "file 1!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/file-2.txt",
    "content": "file 2!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/nested/nested/file-3.txt",
    "content": "file 3\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/new-file-2.txt",
    "content": "NEW file override!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/new-file-4.txt",
    "content": "override file 4!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/image-symlinks/parent/file-4.txt",
    "content": "the 4th file!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/path-detected/.vimrc",
    "content": "\" A .vimrc file\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/path-detected/empty",
    "content": ""
  },
  {
    "path": "syft/internal/fileresolver/testdata/path-detected-2/.vimrc",
    "content": "Another .vimrc file"
  },
  {
    "path": "syft/internal/fileresolver/testdata/path-detected-2/empty",
    "content": ""
  },
  {
    "path": "syft/internal/fileresolver/testdata/req-resp/.gitignore",
    "content": "path/to/abs-inside.txt\npath/to/the/abs-outside.txt"
  },
  {
    "path": "syft/internal/fileresolver/testdata/req-resp/path/to/the/file.txt",
    "content": "file-1\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/req-resp/somewhere/outside.txt",
    "content": "file-2\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinked-root/real-root/file1.txt",
    "content": "contents!\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinked-root/real-root/nested/file2.txt",
    "content": "more contents!\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-base/base",
    "content": ""
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-base/sub/item",
    "content": ""
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-from-image-symlinks-fixture/file-1.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-from-image-symlinks-fixture/file-2.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-from-image-symlinks-fixture/file-3.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-from-image-symlinks-fixture/parent/file-4.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-loop/README.md",
    "content": "This mimics a partial layout on a Linux system within /sys/devices/virtual to help ensure globbing for files does not end up in an infinite loop.\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-loop/devices/loop0/file.target",
    "content": "contents!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-multiple-roots/root/readme",
    "content": "contents!"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-prune-indexing/path/1/2/3/4/dont-index-me-twice.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-prune-indexing/path/5/6/7/8/dont-index-me-twice-either.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-prune-indexing/path/file.txt",
    "content": "bogus\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/symlinks-simple/readme",
    "content": "this directory exists for unit tests on irregular files. You can't see other files here because they are removed after each test. \nThis readme is a better version of Russell's teapot.\n"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/outside_root/link_target/place",
    "content": "good"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/target/dev/place",
    "content": "bad"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/target/hierarchical-dev/module_1/module_1_1/place",
    "content": "bad"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/target/home/place",
    "content": "good"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/target/proc/place",
    "content": "bad"
  },
  {
    "path": "syft/internal/fileresolver/testdata/system_paths/target/sys/place",
    "content": "bad"
  },
  {
    "path": "syft/internal/fileresolver/unindexed_directory.go",
    "content": "package fileresolver\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*UnindexedDirectory)(nil)\nvar _ file.WritableResolver = (*UnindexedDirectory)(nil)\n\ntype UnindexedDirectory struct {\n\tls   afero.Lstater\n\tlr   afero.LinkReader\n\tbase string\n\tdir  string\n\tfs   afero.Fs\n}\n\nfunc NewFromUnindexedDirectory(dir string) file.WritableResolver {\n\treturn NewFromUnindexedDirectoryFS(afero.NewOsFs(), dir, \"\")\n}\n\nfunc NewFromRootedUnindexedDirectory(dir string, base string) file.WritableResolver {\n\treturn NewFromUnindexedDirectoryFS(afero.NewOsFs(), dir, base)\n}\n\nfunc NewFromUnindexedDirectoryFS(fs afero.Fs, dir string, base string) file.WritableResolver {\n\tls, ok := fs.(afero.Lstater)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"unable to get afero.Lstater interface from: %+v\", fs))\n\t}\n\tlr, ok := fs.(afero.LinkReader)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"unable to get afero.Lstater interface from: %+v\", fs))\n\t}\n\texpanded, err := homedir.Expand(dir)\n\tif err == nil {\n\t\tdir = expanded\n\t}\n\tif base != \"\" {\n\t\texpanded, err = homedir.Expand(base)\n\t\tif err == nil {\n\t\t\tbase = expanded\n\t\t}\n\t}\n\twd, err := os.Getwd()\n\tif err == nil {\n\t\tif !filepath.IsAbs(dir) {\n\t\t\tdir = filepath.Clean(filepath.Join(wd, dir))\n\t\t}\n\t\tif base != \"\" && !filepath.IsAbs(base) {\n\t\t\tbase = filepath.Clean(filepath.Join(wd, base))\n\t\t}\n\t}\n\treturn UnindexedDirectory{\n\t\tbase: base,\n\t\tdir:  dir,\n\t\tfs:   fs,\n\t\tls:   ls,\n\t\tlr:   lr,\n\t}\n}\n\nfunc (u UnindexedDirectory) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tp := u.absPath(u.scrubInputPath(location.RealPath))\n\tf, err := u.fs.Open(p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfi, err := f.Stat()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif fi.IsDir() {\n\t\treturn nil, fmt.Errorf(\"unable to get contents of directory: %s\", location.RealPath)\n\t}\n\treturn f, nil\n}\n\n// - full symlink resolution should be performed on all requests\n// - returns locations for any file or directory\nfunc (u UnindexedDirectory) HasPath(p string) bool {\n\tlocs, err := u.filesByPath(true, true, p)\n\treturn err == nil && len(locs) > 0\n}\n\nfunc (u UnindexedDirectory) canLstat(p string) bool {\n\t_, _, err := u.ls.LstatIfPossible(u.absPath(p))\n\treturn err == nil\n}\n\nfunc (u UnindexedDirectory) isRegularFile(p string) bool {\n\tfi, _, err := u.ls.LstatIfPossible(u.absPath(p))\n\treturn err == nil && !fi.IsDir()\n}\n\nfunc (u UnindexedDirectory) scrubInputPath(p string) string {\n\tif path.IsAbs(p) {\n\t\tp = p[1:]\n\t}\n\treturn path.Clean(p)\n}\n\nfunc (u UnindexedDirectory) scrubResolutionPath(p string) string {\n\tif u.base != \"\" {\n\t\tif path.IsAbs(p) {\n\t\t\tp = p[1:]\n\t\t}\n\t\tfor strings.HasPrefix(p, \"../\") {\n\t\t\tp = p[3:]\n\t\t}\n\t}\n\treturn path.Clean(p)\n}\n\nfunc (u UnindexedDirectory) absPath(p string) string {\n\tif u.base != \"\" {\n\t\tif path.IsAbs(p) {\n\t\t\tp = p[1:]\n\t\t}\n\t\tfor strings.HasPrefix(p, \"../\") {\n\t\t\tp = p[3:]\n\t\t}\n\t\tp = path.Join(u.base, p)\n\t\treturn path.Clean(p)\n\t}\n\tif path.IsAbs(p) {\n\t\treturn p\n\t}\n\treturn path.Clean(path.Join(u.dir, p))\n}\n\n// - full symlink resolution should be performed on all requests\n// - only returns locations to files (NOT directories)\nfunc (u UnindexedDirectory) FilesByPath(paths ...string) (out []file.Location, _ error) {\n\treturn u.filesByPath(true, false, paths...)\n}\n\nfunc (u UnindexedDirectory) filesByPath(resolveLinks bool, includeDirs bool, paths ...string) (out []file.Location, _ error) {\n\t// sort here for stable output\n\tsort.Strings(paths)\nnextPath:\n\tfor _, p := range paths {\n\t\tp = u.scrubInputPath(p)\n\t\tif u.canLstat(p) && (includeDirs || u.isRegularFile(p)) {\n\t\t\tl := u.newLocation(p, resolveLinks)\n\t\t\tif l == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// only include the first entry we find\n\t\t\tfor i := range out {\n\t\t\t\texisting := &out[i]\n\t\t\t\tif existing.RealPath == l.RealPath {\n\t\t\t\t\tif l.AccessPath == \"\" {\n\t\t\t\t\t\texisting.AccessPath = \"\"\n\t\t\t\t\t}\n\t\t\t\t\tcontinue nextPath\n\t\t\t\t}\n\t\t\t}\n\t\t\tout = append(out, *l)\n\t\t}\n\t}\n\treturn\n}\n\n// - full symlink resolution should be performed on all requests\n// - if multiple paths to the same file are found, the best single match should be returned\n// - only returns locations to files (NOT directories)\nfunc (u UnindexedDirectory) FilesByGlob(patterns ...string) (out []file.Location, _ error) {\n\treturn u.filesByGlob(true, false, patterns...)\n}\n\nfunc (u UnindexedDirectory) filesByGlob(resolveLinks bool, includeDirs bool, patterns ...string) (out []file.Location, _ error) {\n\tf := unindexedDirectoryResolverFS{\n\t\tu: u,\n\t}\n\tvar paths []string\n\tfor _, p := range patterns {\n\t\topts := []doublestar.GlobOption{doublestar.WithNoFollow()}\n\t\tif !includeDirs {\n\t\t\topts = append(opts, doublestar.WithFilesOnly())\n\t\t}\n\t\tfound, err := doublestar.Glob(f, p, opts...)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpaths = append(paths, found...)\n\t}\n\treturn u.filesByPath(resolveLinks, includeDirs, paths...)\n}\n\nfunc (u UnindexedDirectory) FilesByMIMEType(_ ...string) ([]file.Location, error) {\n\tpanic(\"FilesByMIMEType unsupported\")\n}\n\n// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.\n// This is helpful when attempting to find a file that is in the same layer or lower as another file.\nfunc (u UnindexedDirectory) RelativeFileByPath(l file.Location, p string) *file.Location {\n\tp = path.Clean(path.Join(l.RealPath, p))\n\tlocs, err := u.filesByPath(true, false, p)\n\tif err != nil || len(locs) == 0 {\n\t\treturn nil\n\t}\n\tl = locs[0]\n\tp = l.RealPath\n\tif u.isRegularFile(p) {\n\t\treturn u.newLocation(p, true)\n\t}\n\treturn nil\n}\n\n// - NO symlink resolution should be performed on results\n// - returns locations for any file or directory\nfunc (u UnindexedDirectory) AllLocations(ctx context.Context) <-chan file.Location {\n\tout := make(chan file.Location)\n\terrWalkCanceled := fmt.Errorf(\"walk canceled\")\n\tgo func() {\n\t\tdefer close(out)\n\t\terr := afero.Walk(u.fs, u.absPath(\".\"), func(p string, _ fs.FileInfo, _ error) error {\n\t\t\tp = strings.TrimPrefix(p, u.dir)\n\t\t\tif p == \"\" {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tp = strings.TrimPrefix(p, \"/\")\n\t\t\tselect {\n\t\t\tcase out <- file.NewLocation(p):\n\t\t\t\treturn nil\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn errWalkCanceled\n\t\t\t}\n\t\t})\n\t\tif err != nil && !errors.Is(err, errWalkCanceled) {\n\t\t\tlog.Debug(err)\n\t\t}\n\t}()\n\treturn out\n}\n\nfunc (u UnindexedDirectory) FileMetadataByLocation(_ file.Location) (file.Metadata, error) {\n\tpanic(\"FileMetadataByLocation unsupported\")\n}\n\nfunc (u UnindexedDirectory) Write(location file.Location, reader io.Reader) error {\n\tfilePath := location.RealPath\n\tif path.IsAbs(filePath) {\n\t\tfilePath = filePath[1:]\n\t}\n\tabsPath := u.absPath(filePath)\n\treturn afero.WriteReader(u.fs, absPath, reader)\n}\n\nfunc (u UnindexedDirectory) newLocation(filePath string, resolveLinks bool) *file.Location {\n\tfilePath = path.Clean(filePath)\n\n\tvirtualPath := filePath\n\trealPath := filePath\n\n\tif resolveLinks {\n\t\tpaths := u.resolveLinks(filePath)\n\t\tif len(paths) > 1 {\n\t\t\trealPath = paths[len(paths)-1]\n\t\t\t// TODO: this is not quite correct, as the equivalent of os.EvalSymlinks needs to be done (in the context of afero)\n\t\t\tif realPath != path.Clean(filePath) {\n\t\t\t\tvirtualPath = paths[0]\n\t\t\t}\n\t\t}\n\t\tif len(paths) == 0 {\n\t\t\t// this file does not exist, don't return a location\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tl := file.NewVirtualLocation(realPath, virtualPath)\n\treturn &l\n}\n\n//nolint:gocognit\nfunc (u UnindexedDirectory) resolveLinks(filePath string) []string {\n\tvar visited []string\n\n\tout := []string{}\n\n\tresolvedPath := \"\"\n\n\tparts := strings.Split(filePath, \"/\")\n\tfor i := 0; i < len(parts); i++ {\n\t\tpart := parts[i]\n\t\tif resolvedPath == \"\" {\n\t\t\tresolvedPath = part\n\t\t} else {\n\t\t\tresolvedPath = path.Clean(path.Join(resolvedPath, part))\n\t\t}\n\t\tresolvedPath = u.scrubResolutionPath(resolvedPath)\n\t\tif resolvedPath == \"..\" {\n\t\t\tresolvedPath = \"\"\n\t\t\tcontinue\n\t\t}\n\n\t\tabsPath := u.absPath(resolvedPath)\n\t\tif slices.Contains(visited, absPath) {\n\t\t\treturn nil // circular links can't resolve\n\t\t}\n\t\tvisited = append(visited, absPath)\n\n\t\tfi, wasLstat, err := u.ls.LstatIfPossible(absPath)\n\t\tif fi == nil || err != nil {\n\t\t\t// this file does not exist\n\t\t\treturn nil\n\t\t}\n\n\t\tfor wasLstat && u.isSymlink(fi) {\n\t\t\tnext, err := u.lr.ReadlinkIfPossible(absPath)\n\t\t\tif err == nil {\n\t\t\t\tif !path.IsAbs(next) {\n\t\t\t\t\tnext = path.Clean(path.Join(path.Dir(resolvedPath), next))\n\t\t\t\t}\n\t\t\t\tnext = u.scrubResolutionPath(next)\n\t\t\t\tabsPath = u.absPath(next)\n\t\t\t\tif slices.Contains(visited, absPath) {\n\t\t\t\t\treturn nil // circular links can't resolve\n\t\t\t\t}\n\t\t\t\tvisited = append(visited, absPath)\n\n\t\t\t\tfi, wasLstat, err = u.ls.LstatIfPossible(absPath)\n\t\t\t\tif fi == nil || err != nil {\n\t\t\t\t\t// this file does not exist\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tif i < len(parts) {\n\t\t\t\t\tout = append(out, path.Join(resolvedPath, path.Join(parts[i+1:]...)))\n\t\t\t\t}\n\t\t\t\tif u.base != \"\" && path.IsAbs(next) {\n\t\t\t\t\tnext = next[1:]\n\t\t\t\t}\n\t\t\t\tresolvedPath = next\n\t\t\t}\n\t\t}\n\t}\n\n\tout = append(out, resolvedPath)\n\n\treturn out\n}\n\nfunc (u UnindexedDirectory) isSymlink(fi os.FileInfo) bool {\n\treturn fi.Mode().Type()&fs.ModeSymlink == fs.ModeSymlink\n}\n\n// ------------------------- fs.FS ------------------------------\n\n// unindexedDirectoryResolverFS wraps the UnindexedDirectory as a fs.FS, fs.ReadDirFS, and fs.StatFS\ntype unindexedDirectoryResolverFS struct {\n\tu UnindexedDirectory\n}\n\n// resolve takes a virtual path and returns the resolved absolute or relative path and file info\nfunc (f unindexedDirectoryResolverFS) resolve(filePath string) (resolved string, fi fs.FileInfo, err error) {\n\tparts := strings.Split(filePath, \"/\")\n\tvar visited []string\n\tfor i, part := range parts {\n\t\tif i > 0 {\n\t\t\tresolved = path.Clean(path.Join(resolved, part))\n\t\t} else {\n\t\t\tresolved = part\n\t\t}\n\t\tabs := f.u.absPath(resolved)\n\t\tfi, _, err = f.u.ls.LstatIfPossible(abs)\n\t\tif err != nil {\n\t\t\treturn resolved, fi, err\n\t\t}\n\t\tfor f.u.isSymlink(fi) {\n\t\t\tif slices.Contains(visited, resolved) {\n\t\t\t\treturn resolved, fi, fmt.Errorf(\"link cycle detected at: %s\", f.u.absPath(resolved))\n\t\t\t}\n\t\t\tvisited = append(visited, resolved)\n\t\t\tlink, err := f.u.lr.ReadlinkIfPossible(abs)\n\t\t\tif err != nil {\n\t\t\t\treturn resolved, fi, err\n\t\t\t}\n\t\t\tif !path.IsAbs(link) {\n\t\t\t\tlink = path.Clean(path.Join(path.Dir(abs), link))\n\t\t\t\tlink = strings.TrimPrefix(link, abs)\n\t\t\t} else if f.u.base != \"\" {\n\t\t\t\tlink = path.Clean(path.Join(f.u.base, link[1:]))\n\t\t\t}\n\t\t\tresolved = link\n\t\t\tabs = f.u.absPath(resolved)\n\t\t\tfi, _, err = f.u.ls.LstatIfPossible(abs)\n\t\t\tif err != nil {\n\t\t\t\treturn resolved, fi, err\n\t\t\t}\n\t\t}\n\t}\n\treturn resolved, fi, err\n}\n\nfunc (f unindexedDirectoryResolverFS) ReadDir(name string) (out []fs.DirEntry, _ error) {\n\tp, _, err := f.resolve(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tentries, err := afero.ReadDir(f.u.fs, f.u.absPath(p))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, e := range entries {\n\t\tisDir := e.IsDir()\n\t\t_, fi, _ := f.resolve(path.Join(name, e.Name()))\n\t\tif fi != nil && fi.IsDir() {\n\t\t\tisDir = true\n\t\t}\n\t\tout = append(out, unindexedDirectoryResolverDirEntry{\n\t\t\tunindexedDirectoryResolverFileInfo: newFsFileInfo(f.u, e.Name(), isDir, e),\n\t\t})\n\t}\n\treturn out, nil\n}\n\nfunc (f unindexedDirectoryResolverFS) Stat(name string) (fs.FileInfo, error) {\n\tfi, err := f.u.fs.Stat(f.u.absPath(name))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newFsFileInfo(f.u, name, fi.IsDir(), fi), nil\n}\n\nfunc (f unindexedDirectoryResolverFS) Open(name string) (fs.File, error) {\n\t_, err := f.u.fs.Open(f.u.absPath(name))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn unindexedDirectoryResolverFile{\n\t\tu:    f.u,\n\t\tpath: name,\n\t}, nil\n}\n\nvar _ fs.FS = (*unindexedDirectoryResolverFS)(nil)\nvar _ fs.StatFS = (*unindexedDirectoryResolverFS)(nil)\nvar _ fs.ReadDirFS = (*unindexedDirectoryResolverFS)(nil)\n\ntype unindexedDirectoryResolverDirEntry struct {\n\tunindexedDirectoryResolverFileInfo\n}\n\nfunc (f unindexedDirectoryResolverDirEntry) Name() string {\n\treturn f.name\n}\n\nfunc (f unindexedDirectoryResolverDirEntry) IsDir() bool {\n\treturn f.isDir\n}\n\nfunc (f unindexedDirectoryResolverDirEntry) Type() fs.FileMode {\n\treturn f.mode\n}\n\nfunc (f unindexedDirectoryResolverDirEntry) Info() (fs.FileInfo, error) {\n\treturn f, nil\n}\n\nvar _ fs.DirEntry = (*unindexedDirectoryResolverDirEntry)(nil)\n\ntype unindexedDirectoryResolverFile struct {\n\tu    UnindexedDirectory\n\tpath string\n}\n\nfunc (f unindexedDirectoryResolverFile) Stat() (fs.FileInfo, error) {\n\tfi, err := f.u.fs.Stat(f.u.absPath(f.path))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newFsFileInfo(f.u, fi.Name(), fi.IsDir(), fi), nil\n}\n\nfunc (f unindexedDirectoryResolverFile) Read(_ []byte) (int, error) {\n\tpanic(\"Read not implemented\")\n}\n\nfunc (f unindexedDirectoryResolverFile) Close() error {\n\tpanic(\"Close not implemented\")\n}\n\nvar _ fs.File = (*unindexedDirectoryResolverFile)(nil)\n\ntype unindexedDirectoryResolverFileInfo struct {\n\tu       UnindexedDirectory\n\tname    string\n\tsize    int64\n\tmode    fs.FileMode\n\tmodTime time.Time\n\tisDir   bool\n\tsys     any\n}\n\nfunc newFsFileInfo(u UnindexedDirectory, name string, isDir bool, fi os.FileInfo) unindexedDirectoryResolverFileInfo {\n\treturn unindexedDirectoryResolverFileInfo{\n\t\tu:       u,\n\t\tname:    name,\n\t\tsize:    fi.Size(),\n\t\tmode:    fi.Mode() & ^fs.ModeSymlink, // pretend nothing is a symlink\n\t\tmodTime: fi.ModTime(),\n\t\tisDir:   isDir,\n\t\t// sys:     fi.Sys(), // what values does this hold?\n\t}\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) Name() string {\n\treturn f.name\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) Size() int64 {\n\treturn f.size\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) Mode() fs.FileMode {\n\treturn f.mode\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) ModTime() time.Time {\n\treturn f.modTime\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) IsDir() bool {\n\treturn f.isDir\n}\n\nfunc (f unindexedDirectoryResolverFileInfo) Sys() any {\n\treturn f.sys\n}\n\nvar _ fs.FileInfo = (*unindexedDirectoryResolverFileInfo)(nil)\n"
  },
  {
    "path": "syft/internal/fileresolver/unindexed_directory_test.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage fileresolver\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/goleak\"\n\n\tstereoscopeFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_UnindexDirectoryResolver_RequestRelativePathWithinSymlink(t *testing.T) {\n\tpwd, err := os.Getwd()\n\n\t// we need to mimic a shell, otherwise we won't get a path within a symlink\n\ttargetPath := filepath.Join(pwd, \"./testdata/symlinked-root/nested/link-root/nested\")\n\tt.Setenv(\"PWD\", targetPath)\n\n\trequire.NoError(t, err)\n\trequire.NoError(t, os.Chdir(targetPath))\n\tt.Cleanup(func() {\n\t\trequire.NoError(t, os.Chdir(pwd))\n\t})\n\n\tresolver := NewFromUnindexedDirectory(\"./\")\n\trequire.NoError(t, err)\n\n\tlocations, err := resolver.FilesByPath(\"file2.txt\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\n\t// TODO: this is technically not correct behavior since this is reporting the symlink path (virtual path) and\n\t// not the real path.\n\trequire.False(t, filepath.IsAbs(locations[0].RealPath), \"should be relative path\")\n}\n\nfunc Test_UnindexDirectoryResolver_FilesByPath_request_response(t *testing.T) {\n\t// /\n\t//   somewhere/\n\t//     outside.txt\n\t//   root-link -> ./\n\t//   path/\n\t//     to/\n\t//       abs-inside.txt -> /path/to/the/file.txt               # absolute link to somewhere inside of the root\n\t//       rel-inside.txt -> ./the/file.txt                      # relative link to somewhere inside of the root\n\t//       the/\n\t//\t\t   file.txt\n\t//         abs-outside.txt -> /somewhere/outside.txt           # absolute link to outside of the root\n\t//         rel-outside -> ../../../somewhere/outside.txt       # relative link to outside of the root\n\t//\n\n\ttestDir, err := os.Getwd()\n\trequire.NoError(t, err)\n\trelative := filepath.Join(\"testdata\", \"req-resp\")\n\tabsolute := filepath.Join(testDir, relative)\n\n\tabsInsidePath := filepath.Join(absolute, \"path\", \"to\", \"abs-inside.txt\")\n\tabsOutsidePath := filepath.Join(absolute, \"path\", \"to\", \"the\", \"abs-outside.txt\")\n\n\trelativeViaLink := filepath.Join(relative, \"root-link\")\n\tabsoluteViaLink := filepath.Join(absolute, \"root-link\")\n\n\trelativeViaDoubleLink := filepath.Join(relative, \"root-link\", \"root-link\")\n\tabsoluteViaDoubleLink := filepath.Join(absolute, \"root-link\", \"root-link\")\n\n\tcleanup := func() {\n\t\t_ = os.Remove(absInsidePath)\n\t\t_ = os.Remove(absOutsidePath)\n\t}\n\n\t// ensure the absolute symlinks are cleaned up from any previous runs\n\tcleanup()\n\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"path\", \"to\", \"the\", \"file.txt\"), absInsidePath))\n\trequire.NoError(t, os.Symlink(filepath.Join(absolute, \"somewhere\", \"outside.txt\"), absOutsidePath))\n\n\tt.Cleanup(cleanup)\n\n\tcases := []struct {\n\t\tname               string\n\t\tcwd                string\n\t\troot               string\n\t\tbase               string\n\t\tinput              string\n\t\texpectedRealPath   string\n\t\texpectedAccessPath string // if empty, the virtual path should be the same as the real path\n\t}{\n\t\t{\n\t\t\tname:             \"relative root, relative request, direct\",\n\t\t\troot:             relative,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct\",\n\t\t\troot:             absolute,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"relative root, abs request, direct\",\n\t\t\troot:             relative,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct\",\n\t\t\troot:             absolute,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within root...\n\t\t{\n\t\t\tname:             \"relative root, relative request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             \"../../\",\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             absolute,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"relative root, abs request, direct, cwd within root\",\n\t\t\tcwd:              filepath.Join(relative, \"path/to\"),\n\t\t\troot:             \"../../\",\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname: \"abs root, abs request, direct, cwd within root\",\n\t\t\tcwd:  filepath.Join(relative, \"path/to\"),\n\n\t\t\troot:             absolute,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root...\n\t\t{\n\t\t\tname:  \"relative root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"path/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             absoluteViaLink,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"/path/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             absoluteViaLink,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within symlink root, request nested within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             filepath.Join(absoluteViaLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd within symlink root\",\n\t\t\tcwd:              relativeViaLink,\n\t\t\troot:             filepath.Join(absoluteViaLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root...\n\t\t{\n\t\t\tname:  \"relative root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"path/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             absoluteViaDoubleLink,\n\t\t\tinput:            \"path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./\",\n\t\t\tinput: \"/path/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             absoluteViaDoubleLink,\n\t\t\tinput:            \"/path/to/the/file.txt\",\n\t\t\texpectedRealPath: \"path/to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"./path\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd within (double) symlink root\",\n\t\t\tcwd:              relativeViaDoubleLink,\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// cwd within DOUBLE symlink root, request nested DEEP within...\n\t\t{\n\t\t\tname:  \"relative root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:   filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:  \"../\",\n\t\t\tinput: \"to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, relative nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:              filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:   filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:  \"../\",\n\t\t\tinput: \"/to/the/file.txt\",\n\t\t\t// note: this is inconsistent with the directory resolver. The real path is essentially the virtual path\n\t\t\t// in this case for the unindexed resolver, which is not correct.\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t{\n\t\t\tname:             \"abs root, abs nested request, direct, cwd deep within (double) symlink root\",\n\t\t\tcwd:              filepath.Join(relativeViaDoubleLink, \"path\", \"to\"),\n\t\t\troot:             filepath.Join(absoluteViaDoubleLink, \"path\"),\n\t\t\tinput:            \"/to/the/file.txt\",\n\t\t\texpectedRealPath: \"to/the/file.txt\",\n\t\t},\n\t\t// link to outside of root cases...\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(relative, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root)\",\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, relative request, relative indirect (outside of root)\",\n\t\t\troot:  filepath.Join(relative, \"path\"),\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, relative request, relative indirect (outside of root)\",\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, relative indirect (outside of root)\",\n\t\t\troot:  filepath.Join(relative, \"path\"),\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, abs request, relative indirect (outside of root)\",\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t// link to outside of root cases... cwd within symlink root\n\t\t{\n\t\t\tname:               \"relative root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, relative request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"relative root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               \"path\",\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:               \"abs root, abs request, abs indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:                relativeViaLink,\n\t\t\troot:               filepath.Join(absolute, \"path\"),\n\t\t\tinput:              \"/to/the/abs-outside.txt\",\n\t\t\texpectedRealPath:   filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\texpectedAccessPath: \"to/the/abs-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"path\",\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, relative request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  \"path\",\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, abs request, relative indirect (outside of root), cwd within symlink root\",\n\t\t\tcwd:   relativeViaLink,\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"path\",\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, relative request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"relative root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  \"path\",\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t\t{\n\t\t\tname:  \"abs root, abs request, relative indirect (outside of root), cwd within DOUBLE symlink root\",\n\t\t\tcwd:   relativeViaDoubleLink,\n\t\t\troot:  filepath.Join(absolute, \"path\"),\n\t\t\tinput: \"/to/the/rel-outside.txt\",\n\t\t\t//expectedRealPath:    filepath.Join(absolute, \"/somewhere/outside.txt\"),\n\t\t\t// TODO: the real path is not correct\n\t\t\texpectedRealPath:   \"../somewhere/outside.txt\",\n\t\t\texpectedAccessPath: \"to/the/rel-outside.txt\",\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tif c.expectedAccessPath == \"\" {\n\t\t\t\tc.expectedAccessPath = c.expectedRealPath\n\t\t\t}\n\n\t\t\t// we need to mimic a shell, otherwise we won't get a path within a symlink\n\t\t\ttargetPath := filepath.Join(testDir, c.cwd)\n\t\t\tt.Setenv(\"PWD\", filepath.Clean(targetPath))\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NoError(t, os.Chdir(targetPath))\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, os.Chdir(testDir))\n\t\t\t})\n\n\t\t\tresolver := NewFromUnindexedDirectory(c.root)\n\t\t\trequire.NotNil(t, resolver)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tif c.expectedRealPath == \"\" {\n\t\t\t\trequire.Empty(t, refs)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.Len(t, refs, 1)\n\t\t\tassert.Equal(t, c.expectedRealPath, refs[0].RealPath, \"real path different\")\n\t\t\tassert.Equal(t, c.expectedAccessPath, refs[0].AccessPath, \"virtual path different\")\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_Basic(t *testing.T) {\n\twd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tr := NewFromUnindexedDirectory(path.Join(wd, \"testdata\"))\n\tlocations, err := r.FilesByGlob(\"image-symlinks/*\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 5)\n}\n\nfunc Test_UnindexedDirectoryResolver_NoGoroutineLeak(t *testing.T) {\n\tdefer goleak.VerifyNone(t)\n\twd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tr := NewFromUnindexedDirectory(path.Join(wd, \"testdata\"))\n\tctx, cancel := context.WithCancel(context.Background())\n\tfor range r.AllLocations(ctx) {\n\t\tbreak\n\t}\n\tcancel()\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByPath_relativeRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\trelativeRoot string\n\t\tinput        string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname:         \"should find a file from an absolute input\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"/image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"should find a file from a relative path\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"should find a file from a relative path (root above cwd)\",\n\t\t\t// TODO: refactor me! this test depends on the structure of the source dir not changing, which isn't great\n\t\t\trelativeRoot: \"../\",\n\t\t\tinput:        \"fileresolver/deferred.go\",\n\t\t\texpected: []string{\n\t\t\t\t\"fileresolver/deferred.go\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver := NewFromUnindexedDirectory(c.relativeRoot)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByPath_absoluteRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname         string\n\t\trelativeRoot string\n\t\tinput        string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname:         \"should find a file from an absolute input\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"/image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"should find a file from a relative path\",\n\t\t\trelativeRoot: \"./testdata/\",\n\t\t\tinput:        \"image-symlinks/file-1.txt\",\n\t\t\texpected: []string{\n\t\t\t\t\"image-symlinks/file-1.txt\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"should find a file from a relative path (root above cwd)\",\n\t\t\t// TODO: refactor me! this test depends on the structure of the source dir not changing, which isn't great\n\t\t\trelativeRoot: \"../\",\n\t\t\tinput:        \"fileresolver/directory.go\",\n\t\t\texpected: []string{\n\t\t\t\t\"fileresolver/directory.go\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\t// note: this test is all about asserting correct functionality when the given analysis path\n\t\t\t// is an absolute path\n\t\t\tabsRoot, err := filepath.Abs(c.relativeRoot)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver := NewFromUnindexedDirectory(absRoot)\n\t\t\tassert.NoError(t, err)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname                 string\n\t\troot                 string\n\t\tinput                string\n\t\texpected             string\n\t\trefCount             int\n\t\tforcePositiveHasPath bool\n\t}{\n\t\t{\n\t\t\tname:     \"finds a file (relative)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"finds a file with relative indirection\",\n\t\t\troot:     \"./testdata/../testdata\",\n\t\t\tinput:    \"image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"managed non-existing files (relative)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"testdata/image-symlinks/bogus.txt\",\n\t\t\trefCount: 0,\n\t\t},\n\t\t{\n\t\t\tname:     \"finds a file (absolute)\",\n\t\t\troot:     \"./testdata/\",\n\t\t\tinput:    \"/image-symlinks/file-1.txt\",\n\t\t\texpected: \"image-symlinks/file-1.txt\",\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:                 \"directories ignored\",\n\t\t\troot:                 \"./testdata/\",\n\t\t\tinput:                \"/image-symlinks\",\n\t\t\trefCount:             0,\n\t\t\tforcePositiveHasPath: true,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver := NewFromUnindexedDirectory(c.root)\n\n\t\t\thasPath := resolver.HasPath(c.input)\n\t\t\tif !c.forcePositiveHasPath {\n\t\t\t\tif c.refCount != 0 && !hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to indicate existence, but did not\")\n\t\t\t\t} else if c.refCount == 0 && hasPath {\n\t\t\t\t\tt.Errorf(\"expected HasPath() to NOT indicate existence, but does\")\n\t\t\t\t}\n\t\t\t} else if !hasPath {\n\t\t\t\tt.Errorf(\"expected HasPath() to indicate existence, but did not (force path)\")\n\t\t\t}\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, c.refCount)\n\t\t\tfor _, actual := range refs {\n\t\t\t\tassert.Equal(t, c.expected, actual.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_MultipleFilesByPath(t *testing.T) {\n\tcases := []struct {\n\t\tname     string\n\t\tinput    []string\n\t\trefCount int\n\t}{\n\t\t{\n\t\t\tname:     \"finds multiple files\",\n\t\t\tinput:    []string{\"image-symlinks/file-1.txt\", \"image-symlinks/file-2.txt\"},\n\t\t\trefCount: 2,\n\t\t},\n\t\t{\n\t\t\tname:     \"skips non-existing files\",\n\t\t\tinput:    []string{\"image-symlinks/bogus.txt\", \"image-symlinks/file-1.txt\"},\n\t\t\trefCount: 1,\n\t\t},\n\t\t{\n\t\t\tname:     \"does not return anything for non-existing directories\",\n\t\t\tinput:    []string{\"non-existing/bogus.txt\", \"non-existing/file-1.txt\"},\n\t\t\trefCount: 0,\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver := NewFromUnindexedDirectory(\"./testdata\")\n\t\t\trefs, err := resolver.FilesByPath(c.input...)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tif len(refs) != c.refCount {\n\t\t\t\tt.Errorf(\"unexpected number of refs: %d != %d\", len(refs), c.refCount)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByGlobMultiple(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata\")\n\trefs, err := resolver.FilesByGlob(\"**/image-symlinks/file*\")\n\tassert.NoError(t, err)\n\n\tassert.Len(t, refs, 2)\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByGlobRecursive(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/image-symlinks\")\n\trefs, err := resolver.FilesByGlob(\"**/*.txt\")\n\tassert.NoError(t, err)\n\tassert.Len(t, refs, 6)\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByGlobSingle(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata\")\n\trefs, err := resolver.FilesByGlob(\"**/image-symlinks/*1.txt\")\n\tassert.NoError(t, err)\n\n\tassert.Len(t, refs, 1)\n\tassert.Equal(t, \"image-symlinks/file-1.txt\", refs[0].RealPath)\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByPath_ResolvesSymlinks(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tname:    \"one degree\",\n\t\t\tfixture: \"link_to_new_readme\",\n\t\t},\n\t\t{\n\t\t\tname:    \"two degrees\",\n\t\t\tfixture: \"link_to_link_to_new_readme\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-simple\")\n\n\t\t\trefs, err := resolver.FilesByPath(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, refs, 1)\n\n\t\t\treader, err := resolver.FileContentsByLocation(refs[0])\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual, err := io.ReadAll(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpected, err := os.ReadFile(\"testdata/symlinks-simple/readme\")\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, string(expected), string(actual))\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolverDoesNotIgnoreRelativeSystemPaths(t *testing.T) {\n\t// let's make certain that \"dev/place\" is not ignored, since it is not \"/dev/place\"\n\tresolver := NewFromUnindexedDirectory(\"testdata/system_paths/target\")\n\n\t// all paths should be found (non filtering matches a path)\n\tlocations, err := resolver.FilesByGlob(\"**/place\")\n\tassert.NoError(t, err)\n\t// 4: within target/\n\t// 1: target/link --> relative path to \"place\" // NOTE: this is filtered out since it not unique relative to outside_root/link_target/place\n\t// 1: outside_root/link_target/place\n\tassert.Len(t, locations, 6)\n\n\t// ensure that symlink indexing outside of root worked\n\ttestLocation := \"../outside_root/link_target/place\"\n\tok := false\n\tfor _, location := range locations {\n\t\tif strings.HasSuffix(location.RealPath, testLocation) {\n\t\t\tok = true\n\t\t}\n\t}\n\n\tif !ok {\n\t\tt.Fatalf(\"could not find test location=%q\", testLocation)\n\t}\n}\n\nfunc Test_UnindexedDirectoryResover_IndexingNestedSymLinks(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-simple\")\n\n\t// check that we can get the real path\n\tlocations, err := resolver.FilesByPath(\"./readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// check that we can access the same file via 1 symlink\n\tlocations, err = resolver.FilesByPath(\"./link_to_new_readme\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\tassert.Equal(t, \"readme\", locations[0].RealPath)\n\tassert.Equal(t, \"link_to_new_readme\", locations[0].AccessPath)\n\n\t// check that we can access the same file via 2 symlinks\n\tlocations, err = resolver.FilesByPath(\"./link_to_link_to_new_readme\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\tassert.Equal(t, \"readme\", locations[0].RealPath)\n\tassert.Equal(t, \"link_to_link_to_new_readme\", locations[0].AccessPath)\n\n\t// check that we can access the same file via 2 symlinks\n\tlocations, err = resolver.FilesByGlob(\"**/link_*\")\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1) // you would think this is 2, however, they point to the same file, and glob only returns unique files\n\n\t// returned locations can be in any order\n\texpectedAccessPaths := []string{\n\t\t\"link_to_link_to_new_readme\",\n\t\t//\"link_to_new_readme\", // we filter out this one because the first symlink resolves to the same file\n\t}\n\n\texpectedRealPaths := []string{\n\t\t\"readme\",\n\t}\n\n\tactualRealPaths := strset.New()\n\tactualAccessPaths := strset.New()\n\tfor _, a := range locations {\n\t\tactualAccessPaths.Add(a.AccessPath)\n\t\tactualRealPaths.Add(a.RealPath)\n\t}\n\n\tassert.ElementsMatch(t, expectedAccessPaths, actualAccessPaths.List())\n\tassert.ElementsMatch(t, expectedRealPaths, actualRealPaths.List())\n}\n\nfunc Test_UnindexedDirectoryResover_IndexingNestedSymLinksOutsideOfRoot(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-multiple-roots/root\")\n\n\t// check that we can get the real path\n\tlocations, err := resolver.FilesByPath(\"./readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// check that we can access the same file via 2 symlinks (link_to_link_to_readme -> link_to_readme -> readme)\n\tlocations, err = resolver.FilesByPath(\"./link_to_link_to_readme\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\t// something looks wrong here\n\tt.Failed()\n}\n\nfunc Test_UnindexedDirectoryResover_RootViaSymlink(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinked-root/nested/link-root\")\n\n\tlocations, err := resolver.FilesByPath(\"./file1.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\tlocations, err = resolver.FilesByPath(\"./nested/file2.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n\n\tlocations, err = resolver.FilesByPath(\"./nested/linked-file1.txt\")\n\trequire.NoError(t, err)\n\tassert.Len(t, locations, 1)\n}\n\nfunc Test_UnindexedDirectoryResolver_FileContentsByLocation(t *testing.T) {\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tr := NewFromUnindexedDirectory(path.Join(cwd, \"testdata/image-simple\"))\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname     string\n\t\tlocation file.Location\n\t\texpects  string\n\t\terr      bool\n\t}{\n\t\t{\n\t\t\tname:     \"use file reference for content requests\",\n\t\t\tlocation: file.NewLocation(\"file-1.txt\"),\n\t\t\texpects:  \"this file has contents\",\n\t\t},\n\t\t{\n\t\t\tname:     \"error on empty file reference\",\n\t\t\tlocation: file.NewLocationFromDirectory(\"doesn't matter\", \"\", stereoscopeFile.Reference{}),\n\t\t\terr:      true,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\tactual, err := r.FileContentsByLocation(test.location)\n\t\t\tif test.err {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\tif test.expects != \"\" {\n\t\t\t\tb, err := io.ReadAll(actual)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tassert.Equal(t, test.expects, string(b))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResover_SymlinkLoopWithGlobsShouldResolve(t *testing.T) {\n\ttest := func(t *testing.T) {\n\t\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-loop\")\n\n\t\tlocations, err := resolver.FilesByGlob(\"**/file.target\")\n\t\trequire.NoError(t, err)\n\n\t\trequire.Len(t, locations, 1)\n\t\tassert.Equal(t, \"devices/loop0/file.target\", locations[0].RealPath)\n\t}\n\n\ttestWithTimeout(t, 5*time.Second, test)\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesByPath_baseRoot(t *testing.T) {\n\tcases := []struct {\n\t\tname     string\n\t\troot     string\n\t\tinput    string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:  \"should find the base file\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./base\",\n\t\t\texpected: []string{\n\t\t\t\t\"base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow a link with a pivoted root\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./foo\",\n\t\t\texpected: []string{\n\t\t\t\t\"base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow a relative link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./bar\",\n\t\t\texpected: []string{\n\t\t\t\t\"base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow an absolute link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./baz\",\n\t\t\texpected: []string{\n\t\t\t\t\"base\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow an absolute link with extra parents\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./sub/link\",\n\t\t\texpected: []string{\n\t\t\t\t\"sub/item\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"should follow chained pivoted link\",\n\t\t\troot:  \"./testdata/symlinks-base/\",\n\t\t\tinput: \"./chain\",\n\t\t\texpected: []string{\n\t\t\t\t\"base\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tresolver := NewFromRootedUnindexedDirectory(c.root, c.root)\n\n\t\t\trefs, err := resolver.FilesByPath(c.input)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, len(c.expected))\n\t\t\ts := strset.New()\n\t\t\tfor _, actual := range refs {\n\t\t\t\ts.Add(actual.RealPath)\n\t\t\t}\n\t\t\tassert.ElementsMatch(t, c.expected, s.List())\n\t\t})\n\t}\n\n}\n\nfunc Test_UnindexedDirectoryResolver_resolvesLinks(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\trunner   func(file.Resolver) []file.Location\n\t\texpected []file.Location\n\t}{\n\t\t{\n\t\t\tname: \"by glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\t// for that reason we need to place **/ in front (which is not the same for other resolvers)\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*ink-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocation(\"file-1.txt\", \"link-1\"),\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-2\"),\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t// file.NewVirtualLocation(\"file-2.txt\", \"link-indirect\"),\n\t\t\t\tfile.NewVirtualLocation(\"file-3.txt\", \"link-within\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-2.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// this has two copies in the base image, which overwrites the same location\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/file-?.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewLocation(\"file-1.txt\"),\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),\n\t\t\t\tfile.NewLocation(\"file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"parent/file-4.txt\", \"parent-link/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by basename glob to links\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/link-*\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewVirtualLocationFromDirectory(\"file-1.txt\", \"link-1\", stereoscopeFile.Reference{RealPath: \"file-1.txt\"}),\n\t\t\t\tfile.NewVirtualLocationFromDirectory(\"file-2.txt\", \"link-2\", stereoscopeFile.Reference{RealPath: \"file-2.txt\"}),\n\t\t\t\t// we already have this real file path via another link, so only one is returned\n\t\t\t\t//file.NewVirtualLocationFromDirectory(\"file-2.txt\", \"link-indirect\", stereoscopeFile.Reference{RealPath: \"file-2.txt\"}),\n\t\t\t\tfile.NewVirtualLocationFromDirectory(\"file-3.txt\", \"link-within\", stereoscopeFile.Reference{RealPath: \"file-3.txt\"}),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by extension\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links are searched, but resolve to the real files\n\t\t\t\tactualLocations, err := resolver.FilesByGlob(\"**/*.txt\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\tfile.NewLocation(\"file-1.txt\"),\n\t\t\t\tfile.NewLocation(\"file-2.txt\"),\n\t\t\t\tfile.NewLocation(\"file-3.txt\"),\n\t\t\t\tfile.NewVirtualLocation(\"parent/file-4.txt\", \"parent-link/file-4.txt\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 1 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// links resolve to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-2\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"by path to degree 2 link\",\n\t\t\trunner: func(resolver file.Resolver) []file.Location {\n\t\t\t\t// multiple links resolves to the final file\n\t\t\t\tactualLocations, err := resolver.FilesByPath(\"/link-indirect\")\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\treturn actualLocations\n\t\t\t},\n\t\t\texpected: []file.Location{\n\t\t\t\t// we have multiple copies across layers\n\t\t\t\tfile.NewVirtualLocation(\"file-2.txt\", \"link-indirect\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-from-image-symlinks-fixture\")\n\n\t\t\tactual := test.runner(resolver)\n\n\t\t\tcompareLocations(t, test.expected, actual)\n\t\t})\n\t}\n}\n\nfunc Test_UnindexedDirectoryResolver_DoNotAddVirtualPathsToTree(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-prune-indexing\")\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tallLocations := resolver.AllLocations(ctx)\n\tvar allRealPaths []stereoscopeFile.Path\n\tfor l := range allLocations {\n\t\tallRealPaths = append(allRealPaths, stereoscopeFile.Path(l.RealPath))\n\t}\n\tpathSet := stereoscopeFile.NewPathSet(allRealPaths...)\n\n\tassert.False(t,\n\t\tpathSet.Contains(\"before-path/file.txt\"),\n\t\t\"symlink destinations should only be indexed at their real path, not through their virtual (symlinked) path\",\n\t)\n\n\tassert.False(t,\n\t\tpathSet.Contains(\"a-path/file.txt\"),\n\t\t\"symlink destinations should only be indexed at their real path, not through their virtual (symlinked) path\",\n\t)\n}\n\nfunc Test_UnindexedDirectoryResolver_FilesContents_errorOnDirRequest(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/system_paths\")\n\n\tdirLoc := file.NewLocation(\"arg/foo\")\n\n\treader, err := resolver.FileContentsByLocation(dirLoc)\n\trequire.Error(t, err)\n\trequire.Nil(t, reader)\n}\n\nfunc Test_UnindexedDirectoryResolver_AllLocations(t *testing.T) {\n\tresolver := NewFromUnindexedDirectory(\"./testdata/symlinks-from-image-symlinks-fixture\")\n\n\tpaths := strset.New()\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tfor loc := range resolver.AllLocations(ctx) {\n\t\tif strings.HasPrefix(loc.RealPath, \"/\") {\n\t\t\t// ignore outside of the fixture root for now\n\t\t\tcontinue\n\t\t}\n\t\tpaths.Add(loc.RealPath)\n\t}\n\texpected := []string{\n\t\t\"file-1.txt\",\n\t\t\"file-2.txt\",\n\t\t\"file-3.txt\",\n\t\t\"link-1\",\n\t\t\"link-2\",\n\t\t\"link-dead\",\n\t\t\"link-indirect\",\n\t\t\"link-within\",\n\t\t\"parent\",\n\t\t\"parent-link\",\n\t\t\"parent/file-4.txt\",\n\t}\n\n\tpathsList := paths.List()\n\tsort.Strings(pathsList)\n\n\tassert.ElementsMatchf(t, expected, pathsList, \"expected all paths to be indexed, but found different paths: \\n%s\", cmp.Diff(expected, paths.List()))\n}\n\nfunc Test_WritableUnindexedDirectoryResolver(t *testing.T) {\n\ttmpdir := t.TempDir()\n\n\tp := \"some/path/file\"\n\tc := \"some contents\"\n\n\tdr := NewFromUnindexedDirectory(tmpdir)\n\n\tlocations, err := dr.FilesByPath(p)\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 0)\n\n\terr = dr.Write(file.NewLocation(p), strings.NewReader(c))\n\trequire.NoError(t, err)\n\n\tlocations, err = dr.FilesByPath(p)\n\trequire.NoError(t, err)\n\trequire.Len(t, locations, 1)\n\n\treader, err := dr.FileContentsByLocation(locations[0])\n\trequire.NoError(t, err)\n\tbytes, err := io.ReadAll(reader)\n\trequire.Equal(t, c, string(bytes))\n}\n\nfunc testWithTimeout(t *testing.T, timeout time.Duration, test func(*testing.T)) {\n\tdone := make(chan bool)\n\tgo func() {\n\t\ttest(t)\n\t\tdone <- true\n\t}()\n\n\tselect {\n\tcase <-time.After(timeout):\n\t\tt.Fatal(\"test timed out\")\n\tcase <-done:\n\t}\n}\n"
  },
  {
    "path": "syft/internal/parsing/basic_parsing.go",
    "content": "package parsing\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"strings\"\n\t\"unicode\"\n)\n\nfunc IsWhitespace(c byte) bool {\n\treturn unicode.IsSpace(rune(c))\n}\n\nfunc IsLiteral(c byte) bool {\n\tr := rune(c)\n\treturn unicode.IsNumber(r) || unicode.IsLetter(r) || r == '.' || r == '_'\n}\n\nfunc SkipWhitespace(data []byte, i *int) {\n\tfor *i < len(data) && IsWhitespace(data[*i]) {\n\t\t*i++\n\t}\n}\n\nfunc PrintError(data []byte, i int) string {\n\tline := 1\n\tchar := 1\n\n\tprev := []string{}\n\tcurr := bytes.Buffer{}\n\n\tfor idx, c := range data {\n\t\tif c == '\\n' {\n\t\t\tprev = append(prev, curr.String())\n\t\t\tcurr.Reset()\n\n\t\t\tif idx >= i {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tline++\n\t\t\tchar = 1\n\t\t\tcontinue\n\t\t}\n\t\tif idx < i {\n\t\t\tchar++\n\t\t}\n\t\tcurr.WriteByte(c)\n\t}\n\n\tl1 := fmt.Sprintf(\"%d\", line-1)\n\tl2 := fmt.Sprintf(\"%d\", line)\n\n\tif len(l1) < len(l2) {\n\t\tl1 = \" \" + l1\n\t}\n\n\tsep := \": \"\n\n\tlines := \"\"\n\tif len(prev) > 1 {\n\t\tlines += fmt.Sprintf(\"%s%s%s\\n\", l1, sep, prev[len(prev)-2])\n\t}\n\tif len(prev) > 0 {\n\t\tlines += fmt.Sprintf(\"%s%s%s\\n\", l2, sep, prev[len(prev)-1])\n\t}\n\n\tpointer := strings.Repeat(\" \", len(l2)+len(sep)+char-1) + \"^\"\n\n\treturn fmt.Sprintf(\"line: %v, char: %v\\n%s%s\", line, char, lines, pointer)\n}\n"
  },
  {
    "path": "syft/internal/testutil/chdir.go",
    "content": "package testutil\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Chdir(t *testing.T, dir string) {\n\tt.Helper()\n\n\twd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to get working directory: %v\", err)\n\t}\n\n\terr = os.Chdir(dir)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to chdir to '%s': %v\", dir, err)\n\t}\n\n\tt.Cleanup(func() {\n\t\trequire.NoError(t, os.Chdir(wd))\n\t})\n}\n"
  },
  {
    "path": "syft/internal/unionreader/union_reader.go",
    "content": "package unionreader\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n\n\t\"github.com/diskfs/go-diskfs/filesystem/squashfs\"\n\n\tmacho \"github.com/anchore/go-macholibre\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// UnionReader is a single interface with all reading functions needed by multi-arch binary catalogers\n// cataloger.\ntype UnionReader interface {\n\tio.Reader\n\tio.ReaderAt\n\tio.Seeker\n\tio.Closer\n}\n\n// GetReaders extracts one or more io.ReaderAt objects representing binaries that can be processed (multiple binaries in the case for multi-architecture binaries).\nfunc GetReaders(f UnionReader) ([]io.ReaderAt, error) {\n\tif macho.IsUniversalMachoBinary(f) {\n\t\tmachoReaders, err := macho.ExtractReaders(f)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"extracting readers: %v\", err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar readers []io.ReaderAt\n\t\tfor _, e := range machoReaders {\n\t\t\treaders = append(readers, e.Reader)\n\t\t}\n\n\t\treturn readers, nil\n\t}\n\n\treturn []io.ReaderAt{f}, nil\n}\n\nfunc GetUnionReader(readerCloser io.ReadCloser) (UnionReader, error) {\n\treader, ok := readerCloser.(UnionReader)\n\tif ok {\n\t\treturn reader, nil\n\t}\n\n\t// file.LocationReadCloser embeds a ReadCloser, which is likely\n\t// to implement UnionReader. Check whether the embedded read closer\n\t// implements UnionReader, and just return that if so.\n\n\tif r, ok := readerCloser.(file.LocationReadCloser); ok {\n\t\treturn GetUnionReader(r.ReadCloser)\n\t}\n\n\tif r, ok := readerCloser.(*squashfs.File); ok {\n\t\t// seeking is implemented, but not io.ReaderAt. Lets wrap it to prevent from degrading performance\n\t\t// by copying all data.\n\t\treturn newReaderAtAdapter(r), nil\n\t}\n\n\tb, err := io.ReadAll(readerCloser) //nolint:gocritic // buffering non-seekable to ReaderAt\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read contents from binary: %w\", err)\n\t}\n\n\tbytesReader := bytes.NewReader(b)\n\n\treader = struct {\n\t\tio.ReadCloser\n\t\tio.ReaderAt\n\t\tio.Seeker\n\t}{\n\t\tReadCloser: io.NopCloser(bytesReader),\n\t\tReaderAt:   bytesReader,\n\t\tSeeker:     bytesReader,\n\t}\n\n\treturn reader, nil\n}\n\ntype readerAtAdapter struct {\n\tio.ReadSeekCloser\n\tmu *sync.Mutex\n}\n\nfunc newReaderAtAdapter(rs io.ReadSeekCloser) UnionReader {\n\treturn &readerAtAdapter{\n\t\tReadSeekCloser: rs,\n\t\tmu:             &sync.Mutex{},\n\t}\n}\n\nfunc (r *readerAtAdapter) Read(p []byte) (n int, err error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\treturn r.ReadSeekCloser.Read(p)\n}\n\nfunc (r *readerAtAdapter) Seek(offset int64, whence int) (int64, error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\treturn r.ReadSeekCloser.Seek(offset, whence)\n}\n\nfunc (r *readerAtAdapter) ReadAt(p []byte, off int64) (n int, err error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\n\tcurrentPos, err := r.ReadSeekCloser.Seek(0, io.SeekCurrent) // save current pos\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t_, err = r.ReadSeekCloser.Seek(off, io.SeekStart) // seek to absolute position `off`\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn, err = r.ReadSeekCloser.Read(p) // read from that absolute position\n\n\t// restore the position for the stateful read/seek operations\n\tif restoreErr := r.restorePosition(currentPos); restoreErr != nil {\n\t\tif err == nil {\n\t\t\terr = restoreErr\n\t\t}\n\t}\n\n\treturn n, err\n}\n\nfunc (r *readerAtAdapter) restorePosition(pos int64) error {\n\t_, err := r.ReadSeekCloser.Seek(pos, io.SeekStart)\n\treturn err\n}\n"
  },
  {
    "path": "syft/internal/unionreader/union_reader_test.go",
    "content": "package unionreader\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_getUnionReader_notUnionReader(t *testing.T) {\n\texpectedContents := \"this is a test\"\n\treader := io.NopCloser(strings.NewReader(expectedContents))\n\n\t// make certain that the test fixture does not implement the union reader\n\t_, ok := reader.(UnionReader)\n\trequire.False(t, ok)\n\n\tactual, err := GetUnionReader(reader)\n\trequire.NoError(t, err)\n\n\t_, ok = actual.(UnionReader)\n\trequire.True(t, ok)\n\n\tb, err := io.ReadAll(actual)\n\trequire.NoError(t, err)\n\n\tassert.Equal(t, expectedContents, string(b))\n}\n\ntype panickingUnionReader struct{}\n\nfunc (p2 *panickingUnionReader) ReadAt(p []byte, off int64) (n int, err error) {\n\tpanic(\"don't call this in your unit test!\")\n}\n\nfunc (p2 *panickingUnionReader) Seek(offset int64, whence int) (int64, error) {\n\tpanic(\"don't call this in your unit test!\")\n}\n\nfunc (p2 *panickingUnionReader) Read(p []byte) (n int, err error) {\n\tpanic(\"don't call this in your unit test!\")\n}\n\nfunc (p2 *panickingUnionReader) Close() error {\n\tpanic(\"don't call this in your unit test!\")\n}\n\nvar _ UnionReader = (*panickingUnionReader)(nil)\n\nfunc Test_getUnionReader_fileLocationReadCloser(t *testing.T) {\n\t// panickingUnionReader is a UnionReader\n\tp := &panickingUnionReader{}\n\tembedsUnionReader := file.NewLocationReadCloser(file.Location{}, p)\n\n\t// embedded union reader is returned without \"ReadAll\" invocation\n\tur, err := GetUnionReader(embedsUnionReader)\n\trequire.NoError(t, err)\n\trequire.Equal(t, p, ur)\n}\n\nfunc TestReaderAtAdapter_ReadAt(t *testing.T) {\n\ttestData := \"Hello, World! This is a test string for ReadAt.\"\n\n\tt.Run(\"basic functionality\", func(t *testing.T) {\n\t\treader := newReadSeekCloser(strings.NewReader(testData))\n\t\tadapter := newReaderAtAdapter(reader)\n\n\t\ttests := []struct {\n\t\t\tname     string\n\t\t\toffset   int64\n\t\t\tlength   int\n\t\t\texpected string\n\t\t}{\n\t\t\t{name: \"read from beginning\", offset: 0, length: 5, expected: \"Hello\"},\n\t\t\t{name: \"read from middle\", offset: 7, length: 5, expected: \"World\"},\n\t\t\t{name: \"read from end\", offset: int64(len(testData) - 4), length: 4, expected: \"dAt.\"},\n\t\t\t{name: \"read single character\", offset: 12, length: 1, expected: \"!\"},\n\t\t}\n\n\t\tfor _, tt := range tests {\n\t\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t\tbuf := make([]byte, tt.length)\n\t\t\t\tn, err := adapter.ReadAt(buf, tt.offset)\n\n\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\tt.Fatalf(\"Unexpected error: %v\", err)\n\t\t\t\t}\n\n\t\t\t\tresult := string(buf[:n])\n\t\t\t\tif result != tt.expected {\n\t\t\t\t\tt.Errorf(\"Expected %q, got %q\", tt.expected, result)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t})\n\n\tt.Run(\"edge cases\", func(t *testing.T) {\n\t\ttests := []struct {\n\t\t\tname        string\n\t\t\tdata        string\n\t\t\toffset      int64\n\t\t\tbufSize     int\n\t\t\texpectedN   int\n\t\t\texpectedErr error\n\t\t\texpectedStr string\n\t\t}{\n\t\t\t{\n\t\t\t\tname:        \"beyond EOF\",\n\t\t\t\tdata:        \"Hello\",\n\t\t\t\toffset:      10,\n\t\t\t\tbufSize:     5,\n\t\t\t\texpectedN:   0,\n\t\t\t\texpectedErr: io.EOF,\n\t\t\t\texpectedStr: \"\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:        \"partial read\",\n\t\t\t\tdata:        \"Hello\",\n\t\t\t\toffset:      2,\n\t\t\t\tbufSize:     10,\n\t\t\t\texpectedN:   3,\n\t\t\t\texpectedErr: nil,\n\t\t\t\texpectedStr: \"llo\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:        \"empty buffer\",\n\t\t\t\tdata:        \"Hello\",\n\t\t\t\toffset:      0,\n\t\t\t\tbufSize:     0,\n\t\t\t\texpectedN:   0,\n\t\t\t\texpectedErr: nil,\n\t\t\t\texpectedStr: \"\",\n\t\t\t},\n\t\t}\n\n\t\tfor _, tt := range tests {\n\t\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t\treader := newReadSeekCloser(strings.NewReader(tt.data))\n\t\t\t\tadapter := newReaderAtAdapter(reader)\n\n\t\t\t\tbuf := make([]byte, tt.bufSize)\n\t\t\t\tn, err := adapter.ReadAt(buf, tt.offset)\n\n\t\t\t\tif err != tt.expectedErr {\n\t\t\t\t\tt.Errorf(\"Expected error %v, got %v\", tt.expectedErr, err)\n\t\t\t\t}\n\n\t\t\t\tif n != tt.expectedN {\n\t\t\t\t\tt.Errorf(\"Expected %d bytes read, got %d\", tt.expectedN, n)\n\t\t\t\t}\n\n\t\t\t\tresult := string(buf[:n])\n\t\t\t\tif result != tt.expectedStr {\n\t\t\t\t\tt.Errorf(\"Expected %q, got %q\", tt.expectedStr, result)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t})\n\n\tt.Run(\"multiple reads from same position\", func(t *testing.T) {\n\t\treader := newReadSeekCloser(strings.NewReader(testData))\n\t\tadapter := newReaderAtAdapter(reader)\n\n\t\t// read the same data multiple times\n\t\tfor i := 0; i < 3; i++ {\n\t\t\tbuf := make([]byte, 5)\n\t\t\tn, err := adapter.ReadAt(buf, 7)\n\n\t\t\tif err != nil && err != io.EOF {\n\t\t\t\tt.Fatalf(\"ReadAt %d failed: %v\", i, err)\n\t\t\t}\n\n\t\t\tresult := string(buf[:n])\n\t\t\tif result != \"World\" {\n\t\t\t\tt.Errorf(\"ReadAt %d: expected 'World', got %q\", i, result)\n\t\t\t}\n\t\t}\n\t})\n\n\tt.Run(\"concurrent access\", func(t *testing.T) {\n\t\ttd := \"0123456789abcdefghijklmnopqrstuvwxyz\"\n\t\treader := newReadSeekCloser(strings.NewReader(td))\n\t\tadapter := newReaderAtAdapter(reader)\n\n\t\tconst numGoroutines = 10\n\t\tconst numReads = 100\n\n\t\tvar wg sync.WaitGroup\n\t\tresults := make(chan bool, numGoroutines*numReads)\n\n\t\tfor i := 0; i < numGoroutines; i++ {\n\t\t\twg.Add(1)\n\t\t\tgo func(goroutineID int) {\n\t\t\t\tdefer wg.Done()\n\n\t\t\t\tfor j := 0; j < numReads; j++ {\n\t\t\t\t\toffset := int64(goroutineID % len(td))\n\t\t\t\t\tbuf := make([]byte, 1)\n\n\t\t\t\t\tn, err := adapter.ReadAt(buf, offset)\n\t\t\t\t\tif err != nil && err != io.EOF {\n\t\t\t\t\t\tresults <- false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif n > 0 {\n\t\t\t\t\t\texpected := td[offset]\n\t\t\t\t\t\tif buf[0] != expected {\n\t\t\t\t\t\t\tresults <- false\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresults <- true\n\t\t\t\t}\n\t\t\t}(i)\n\t\t}\n\n\t\twg.Wait()\n\t\tclose(results)\n\n\t\tsuccessCount := 0\n\t\ttotalCount := 0\n\t\tfor success := range results {\n\t\t\ttotalCount++\n\t\t\tif success {\n\t\t\t\tsuccessCount++\n\t\t\t}\n\t\t}\n\n\t\tif successCount != totalCount {\n\t\t\tt.Errorf(\"Concurrent reads failed: %d/%d successful\", successCount, totalCount)\n\t\t}\n\t})\n}\n\nfunc TestReaderAtAdapter_PositionHandling(t *testing.T) {\n\ttestData := \"Hello, World!\"\n\n\tt.Run(\"preserves position after ReadAt\", func(t *testing.T) {\n\t\treader := newReadSeekCloser(strings.NewReader(testData))\n\t\tadapter := newReaderAtAdapter(reader)\n\n\t\t// move to a specific position\n\t\tinitialPos := int64(7)\n\t\t_, err := adapter.Seek(initialPos, io.SeekStart)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Failed to seek: %v\", err)\n\t\t}\n\n\t\t// read using ReadAt\n\t\tbuf := make([]byte, 5)\n\t\t_, err = adapter.ReadAt(buf, 0)\n\t\tif err != nil && err != io.EOF {\n\t\t\tt.Fatalf(\"ReadAt failed: %v\", err)\n\t\t}\n\n\t\t// verify position is preserved\n\t\tcurrentPos, err := adapter.Seek(0, io.SeekCurrent)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Failed to get current position: %v\", err)\n\t\t}\n\n\t\tif currentPos != initialPos {\n\t\t\tt.Errorf(\"Position not preserved. Expected %d, got %d\", initialPos, currentPos)\n\t\t}\n\t})\n\n\tt.Run(\"does not affect regular reads\", func(t *testing.T) {\n\t\treader := newReadSeekCloser(strings.NewReader(testData))\n\t\tadapter := newReaderAtAdapter(reader)\n\n\t\t// read first few bytes normally\n\t\tnormalBuf := make([]byte, 5)\n\t\tn, err := adapter.Read(normalBuf)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Normal read failed: %v\", err)\n\t\t}\n\t\tif string(normalBuf[:n]) != \"Hello\" {\n\t\t\tt.Errorf(\"Expected 'Hello', got %q\", string(normalBuf[:n]))\n\t\t}\n\n\t\t// use ReadAt to read from a different position\n\t\treadAtBuf := make([]byte, 5)\n\t\tn, err = adapter.ReadAt(readAtBuf, 7)\n\t\tif err != nil && err != io.EOF {\n\t\t\tt.Fatalf(\"ReadAt failed: %v\", err)\n\t\t}\n\t\tif string(readAtBuf[:n]) != \"World\" {\n\t\t\tt.Errorf(\"Expected 'World', got %q\", string(readAtBuf[:n]))\n\t\t}\n\n\t\t// continue normal reading - should pick up where we left off\n\t\tcontinueBuf := make([]byte, 2)\n\t\tn, err = adapter.Read(continueBuf)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Continue read failed: %v\", err)\n\t\t}\n\t\tif string(continueBuf[:n]) != \", \" {\n\t\t\tt.Errorf(\"Expected ', ', got %q\", string(continueBuf[:n]))\n\t\t}\n\t})\n}\n\nfunc TestReaderAtAdapter_Close(t *testing.T) {\n\treader := newReadSeekCloser(bytes.NewReader([]byte(\"test data\")))\n\tadapter := newReaderAtAdapter(reader)\n\n\t// test that adapter can be closed\n\terr := adapter.Close()\n\tif err != nil {\n\t\tt.Errorf(\"Close failed: %v\", err)\n\t}\n\n\tif !reader.closed {\n\t\tt.Error(\"Underlying reader was not closed\")\n\t}\n}\n\ntype readSeekCloser struct {\n\tio.ReadSeeker\n\tclosed bool\n}\n\nfunc newReadSeekCloser(rs io.ReadSeeker) *readSeekCloser {\n\treturn &readSeekCloser{ReadSeeker: rs}\n}\n\nfunc (r *readSeekCloser) Close() error {\n\tr.closed = true\n\treturn nil\n}\n"
  },
  {
    "path": "syft/internal/windows/path.go",
    "content": "package windows\n\nimport (\n\t\"path\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n)\n\nconst windowsGoOS = \"windows\"\nconst windowsUNCPathPrefix = \"\\\\\\\\\"\nconst windowsDriveColon = \":\"\nconst windowsDrivePathTerminator = \":\\\\\"\nconst windowsUNCPathTerminator = \"\\\\\"\n\nfunc HostRunningOnWindows() bool {\n\treturn runtime.GOOS == windowsGoOS\n}\n\nfunc ToPosix(windowsPath string) (posixPath string) {\n\t// volume should be encoded at the start (e.g /c/<path>) where c is the volume\n\tvolumeName := filepath.VolumeName(windowsPath)\n\tpathWithoutVolume := strings.TrimPrefix(windowsPath, volumeName)\n\tvolumeLetter := strings.ToLower(strings.TrimSuffix(volumeName, \":\"))\n\n\t// translate non-escaped backslash to forwardslash\n\ttranslatedPath := strings.ReplaceAll(pathWithoutVolume, \"\\\\\", \"/\")\n\n\t// always have `/` as the root... join all components, e.g.:\n\t// convert: C:\\\\some\\windows\\Place\n\t// into: /c/some/windows/Place\n\treturn path.Clean(\"/\" + strings.Join([]string{volumeLetter, translatedPath}, \"/\"))\n}\n\nfunc FromPosix(posixPath string) (windowsPath string) {\n\t// decode the volume (e.g. /c/<path> --> C:\\\\) - There should always be a volume name.\n\t// The volume may be a UNC path (e.g. /\\\\localhost\\C$\\ --> \\\\localhost\\C$\\)\n\tpathFields := strings.Split(posixPath, \"/\")\n\trootPath := strings.ToUpper(pathFields[1])\n\tvolumeName := AppendRootTerminator(rootPath)\n\n\t// translate non-escaped forward slashes into backslashes\n\tremainingTranslatedPath := strings.Join(pathFields[2:], \"\\\\\")\n\n\t// combine volume name and backslash components\n\treturn filepath.Clean(volumeName + remainingTranslatedPath)\n}\n\nfunc AppendRootTerminator(rootPath string) string {\n\t// UNC paths start with \\\\ => \\\\localhost\\\n\t// Windows drive paths start with a letter and a colon => C:\\\n\t// See https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths\n\t// This function should not be used on file paths since it is meant for root directory paths!\n\tif strings.HasSuffix(rootPath, windowsDrivePathTerminator) {\n\t\treturn rootPath\n\t}\n\tif strings.HasPrefix(rootPath, windowsUNCPathPrefix) || strings.HasSuffix(rootPath, windowsDriveColon) {\n\t\treturn rootPath + windowsUNCPathTerminator\n\t}\n\treturn rootPath + windowsDrivePathTerminator\n}\n"
  },
  {
    "path": "syft/internal/windows/path_test.go",
    "content": "package windows\n\nimport (\n\t\"testing\"\n)\n\nfunc TestAppendRootTerminator(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tpath   string\n\t\texpect string\n\t}{\n\t\t{\n\t\t\tname:   \"NormalUNC\",\n\t\t\tpath:   \"\\\\\\\\localhost\\\\myserver\\\\\",\n\t\t\texpect: \"\\\\\\\\localhost\\\\myserver\\\\\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveUNC\",\n\t\t\tpath:   \"\\\\\\\\localhost\\\\C$\\\\\",\n\t\t\texpect: \"\\\\\\\\localhost\\\\C$\\\\\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveUNCDirectoryPath\",\n\t\t\tpath:   \"\\\\\\\\localhost\\\\C$\\\\Program Files\\\\Microsoft Visual Studio 10.0\\\\Common7\\\\IDE\\\\PrivateAssemblies\\\\\",\n\t\t\texpect: \"\\\\\\\\localhost\\\\C$\\\\Program Files\\\\Microsoft Visual Studio 10.0\\\\Common7\\\\IDE\\\\PrivateAssemblies\\\\\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveC\",\n\t\t\tpath:   \"C\",\n\t\t\texpect: \"C:\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveC2\",\n\t\t\tpath:   \"C:\",\n\t\t\texpect: \"C:\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveC\\\\\",\n\t\t\tpath:   \"C:\\\\\",\n\t\t\texpect: \"C:\\\\\",\n\t\t},\n\t\t{\n\t\t\tname:   \"DriveCDefaultLegacyBehavior\",\n\t\t\tpath:   \"C:\\\\Program Files\\\\Microsoft Visual Studio 10.0\\\\Common7\\\\IDE\\\\PrivateAssemblies\\\\\",\n\t\t\texpect: \"C:\\\\Program Files\\\\Microsoft Visual Studio 10.0\\\\Common7\\\\IDE\\\\PrivateAssemblies\\\\:\\\\\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := AppendRootTerminator(tt.path)\n\t\t\tif got != tt.expect {\n\t\t\t\tt.Errorf(\"FromPosix() got = %v, expects %v\", got, tt.expect)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/lib.go",
    "content": "/*\nPackage syft is a \"one-stop-shop\" for helper utilities for all major functionality provided by child packages of the syft library.\n\nHere is what the main execution path for syft does:\n\n 1. Parse a user image string to get a stereoscope image.Source object\n 2. Invoke all catalogers to catalog the image, adding discovered packages to a single catalog object\n 3. Invoke one or more encoders to output contents of the catalog\n\nA Source object encapsulates the image object to be cataloged and the user options (catalog all layers vs. squashed layer),\nproviding a way to inspect paths and file content within the image. The Source object, not the image object, is used\nthroughout the main execution path. This abstraction allows for decoupling of what is cataloged (a docker image, an OCI\nimage, a filesystem, etc) and how it is cataloged (the individual catalogers).\n\nSimilar to the cataloging process, Linux distribution identification is also performed based on what is discovered within the image.\n*/\npackage syft\n\nimport (\n\t\"github.com/wagoodman/go-partybus\"\n\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/syft/internal/bus\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\n// SetLogger sets the logger object used for all syft logging calls.\nfunc SetLogger(logger logger.Logger) {\n\tlog.Set(logger)\n}\n\n// SetBus sets the event bus for all syft library bus publish events onto (in-library subscriptions are not allowed).\nfunc SetBus(b *partybus.Bus) {\n\tbus.Set(b)\n}\n"
  },
  {
    "path": "syft/lib_test.go",
    "content": "package syft\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_removeRelationshipsByID(t *testing.T) {\n\tp1 := pkg.Package{}\n\tp1.OverrideID(\"1\")\n\n\tp2 := pkg.Package{}\n\tp2.OverrideID(\"2\")\n\n\tp3 := pkg.Package{}\n\tp3.OverrideID(\"3\")\n\n\trel := func(pkgs ...pkg.Package) (out []artifact.Relationship) {\n\t\tfor _, p := range pkgs {\n\t\t\tout = append(out, artifact.Relationship{\n\t\t\t\tFrom: p,\n\t\t\t\tTo:   p,\n\t\t\t\tType: artifact.OwnershipByFileOverlapRelationship,\n\t\t\t})\n\t\t}\n\t\treturn\n\t}\n\n\trelationships := rel(p1, p2, p3)\n\n\tfor _, r := range relationships {\n\t\tif r.From.ID() == \"1\" || r.From.ID() == \"2\" {\n\t\t\trelationships = relationship.RemoveRelationshipsByID(relationships, r.From.ID())\n\t\t}\n\t}\n\n\trequire.Equal(t, rel(p3), relationships)\n}\n"
  },
  {
    "path": "syft/license/license.go",
    "content": "// package license provides common methods for working with SPDX license data\npackage license\n\nimport (\n\t\"fmt\"\n\t\"runtime/debug\"\n\t\"strings\"\n\n\t\"github.com/github/go-spdx/v2/spdxexp\"\n\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n)\n\ntype Type string\n\nconst (\n\tDeclared  Type = \"declared\"\n\tConcluded Type = \"concluded\"\n)\n\n// trimFileSuffix removes common file extensions from the end of a string\nfunc trimFileSuffix(s string) string {\n\tsuffixes := []string{\".txt\", \".pdf\", \".html\", \".htm\", \".md\", \".markdown\", \".rst\", \".doc\", \".docx\", \".rtf\", \".tex\", \".xml\", \".json\"}\n\tlower := strings.ToLower(s)\n\tfor _, suffix := range suffixes {\n\t\tif strings.HasSuffix(lower, suffix) {\n\t\t\treturn s[:len(s)-len(suffix)]\n\t\t}\n\t}\n\treturn s\n}\n\nfunc ParseExpression(expression string) (ex string, err error) {\n\t// https://github.com/anchore/syft/issues/1837\n\t// The current spdx library can panic when parsing some expressions\n\t// This is a temporary fix to recover and patch until we can investigate and contribute\n\t// a fix to the upstream github library\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"recovered from panic while parsing license expression at: \\n%s\", string(debug.Stack()))\n\t\t}\n\t}()\n\n\t// Try with the original expression first\n\tlicenseID, exists := spdxlicense.ID(expression)\n\tif exists {\n\t\treturn licenseID, nil\n\t}\n\n\t// Check if the expression is a URL and try to look it up\n\tif info, found := spdxlicense.LicenseByURL(expression); found {\n\t\treturn info.ID, nil\n\t}\n\n\t// Try with trimmed file suffix\n\ttrimmed := trimFileSuffix(expression)\n\tif trimmed != expression {\n\t\t// Try as a URL with the trimmed version\n\t\tif info, found := spdxlicense.LicenseByURL(trimmed); found {\n\t\t\treturn info.ID, nil\n\t\t}\n\t}\n\n\t// If it doesn't exist initially in the SPDX list it might be a more complex expression\n\t// ignored variable is any invalid expressions\n\t// TODO: contribute to spdxexp to expose deprecated license IDs\n\t// https://github.com/anchore/syft/issues/1814\n\tvalid, _ := spdxexp.ValidateLicenses([]string{expression})\n\tif !valid {\n\t\treturn \"\", fmt.Errorf(\"invalid SPDX expression: %s\", expression)\n\t}\n\n\treturn expression, nil\n}\n"
  },
  {
    "path": "syft/license/license_test.go",
    "content": "package license\n\nimport \"testing\"\n\nfunc TestParseExpression(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\texpression string\n\t\twant       string\n\t\twantErr    bool\n\t}{\n\t\t{\n\t\t\tname:       \"valid single ID expression returns SPDX ID\",\n\t\t\texpression: \"mit\",\n\t\t\twant:       \"MIT\",\n\t\t\twantErr:    false,\n\t\t},\n\t\t{\n\t\t\tname:       \"Valid SPDX expression returns SPDX expression\",\n\t\t\texpression: \"MIT OR Apache-2.0\",\n\t\t\twant:       \"MIT OR Apache-2.0\",\n\t\t},\n\t\t{\n\t\t\tname:       \"accept redundant parentheses\",\n\t\t\texpression: \"(MIT OR Apache-2.0)\",\n\t\t\twant:       \"(MIT OR Apache-2.0)\",\n\t\t},\n\t\t{\n\t\t\tname:       \"Invalid SPDX expression returns error\",\n\t\t\texpression: \"MIT OR Apache-2.0 OR invalid\",\n\t\t\twant:       \"\",\n\t\t\twantErr:    true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, err := ParseExpression(tt.expression)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"ParseExpression() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got != tt.want {\n\t\t\t\tt.Errorf(\"ParseExpression() got = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/linux/identify_release.go",
    "content": "package linux\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/acobaugh/osrelease\"\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// returns a distro or nil\ntype parseFunc func(string) (*Release, error)\n\ntype parseEntry struct {\n\tpath string\n\tfn   parseFunc\n}\n\nvar identityFiles = []parseEntry{\n\t{\n\t\t// most distros provide a link at this location\n\t\tpath: \"/etc/os-release\",\n\t\tfn:   parseOsRelease,\n\t},\n\t{\n\t\t// standard location for rhel & debian distros\n\t\tpath: \"/usr/lib/os-release\",\n\t\tfn:   parseOsRelease,\n\t},\n\t{\n\t\t// check for centos:6\n\t\tpath: \"/etc/system-release-cpe\",\n\t\tfn:   parseSystemReleaseCPE,\n\t},\n\t{\n\t\t// last ditch effort for determining older centos version distro information\n\t\tpath: \"/etc/redhat-release\",\n\t\tfn:   parseRedhatRelease,\n\t},\n\t// /////////////////////////////////////////////////////////////////////////////////////////////////////\n\t// IMPORTANT! checking busybox must be last since other distros contain the busybox binary\n\t{\n\t\t// check for busybox\n\t\tpath: \"/bin/busybox\",\n\t\tfn:   parseBusyBox,\n\t},\n\t// /////////////////////////////////////////////////////////////////////////////////////////////////////\n}\n\n// after a parser function returns a Release, it may have incomplete information; supplementers can be used to\n// fill in missing details based on other files present in the filesystem\nvar supplementers = []func(file.Resolver, *Release){\n\tsupplementDebianVersion,\n}\n\n// IdentifyRelease parses distro-specific files to discover and raise linux distribution release details.\nfunc IdentifyRelease(resolver file.Resolver) *Release {\n\tlogger := log.Nested(\"operation\", \"identify-release\")\n\tfor _, entry := range identityFiles {\n\t\tlocations, err := resolver.FilesByPath(entry.path)\n\t\tif err != nil {\n\t\t\tlogger.WithFields(\"error\", err, \"path\", entry.path).Trace(\"unable to get path\")\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, location := range locations {\n\t\t\trelease := tryParseReleaseInfo(resolver, location, logger, entry)\n\t\t\tif release != nil {\n\t\t\t\tfor _, supplementer := range supplementers {\n\t\t\t\t\tsupplementer(resolver, release)\n\t\t\t\t}\n\t\t\t\treturn release\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc tryParseReleaseInfo(resolver file.Resolver, location file.Location, logger logger.Logger, entry parseEntry) *Release {\n\tcontentReader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\tlogger.WithFields(\"error\", err, \"path\", location.RealPath).Trace(\"unable to get contents\")\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(contentReader, location.AccessPath)\n\n\tcontent, err := io.ReadAll(io.LimitReader(contentReader, 5*1024*1024))\n\tif err != nil {\n\t\tlogger.WithFields(\"error\", err, \"path\", location.RealPath).Trace(\"unable to read contents\")\n\t\treturn nil\n\t}\n\n\trelease, err := entry.fn(string(content))\n\tif err != nil {\n\t\tlogger.WithFields(\"error\", err, \"path\", location.RealPath).Trace(\"unable to parse contents\")\n\t\treturn nil\n\t}\n\n\treturn release\n}\n\nfunc parseOsRelease(contents string) (*Release, error) {\n\tvalues, err := osrelease.ReadString(contents)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read os-release file: %w\", err)\n\t}\n\n\tvar idLike []string\n\tfor _, s := range strings.Split(values[\"ID_LIKE\"], \" \") {\n\t\ts = strings.TrimSpace(s)\n\t\tif s == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tidLike = append(idLike, s)\n\t}\n\n\tr := Release{\n\t\tPrettyName:       values[\"PRETTY_NAME\"],\n\t\tName:             values[\"NAME\"],\n\t\tID:               values[\"ID\"],\n\t\tIDLike:           idLike,\n\t\tVersion:          values[\"VERSION\"],\n\t\tVersionID:        values[\"VERSION_ID\"],\n\t\tVersionCodename:  values[\"VERSION_CODENAME\"],\n\t\tBuildID:          values[\"BUILD_ID\"],\n\t\tImageID:          values[\"IMAGE_ID\"],\n\t\tImageVersion:     values[\"IMAGE_VERSION\"],\n\t\tVariant:          values[\"VARIANT\"],\n\t\tVariantID:        values[\"VARIANT_ID\"],\n\t\tHomeURL:          values[\"HOME_URL\"],\n\t\tSupportURL:       values[\"SUPPORT_URL\"],\n\t\tBugReportURL:     values[\"BUG_REPORT_URL\"],\n\t\tPrivacyPolicyURL: values[\"PRIVACY_POLICY_URL\"],\n\t\tCPEName:          values[\"CPE_NAME\"],\n\t\tSupportEnd:       values[\"SUPPORT_END\"],\n\t}\n\n\t// don't allow for empty contents to result in a Release object being created\n\tif cmp.Equal(r, Release{}) {\n\t\treturn nil, nil\n\t}\n\n\treturn &r, nil\n}\n\nvar busyboxVersionMatcher = regexp.MustCompile(`BusyBox v[\\d.]+`)\n\nfunc parseBusyBox(contents string) (*Release, error) {\n\tmatches := busyboxVersionMatcher.FindAllString(contents, -1)\n\tfor _, match := range matches {\n\t\tparts := strings.Split(match, \" \")\n\t\tversion := strings.ReplaceAll(parts[1], \"v\", \"\")\n\n\t\treturn simpleRelease(match, \"busybox\", version, \"\"), nil\n\t}\n\treturn nil, nil\n}\n\n// example CPE: cpe:/o:centos:linux:6:GA\nvar systemReleaseCpeMatcher = regexp.MustCompile(`cpe:\\/o:(.*?):.*?:(.*?):.*?$`)\n\n// parseSystemReleaseCPE parses the older centos (6) file to determine distro metadata\nfunc parseSystemReleaseCPE(contents string) (*Release, error) {\n\tmatches := systemReleaseCpeMatcher.FindAllStringSubmatch(contents, -1)\n\tfor _, match := range matches {\n\t\tif len(match) < 3 {\n\t\t\tcontinue\n\t\t}\n\t\treturn simpleRelease(match[1], strings.ToLower(match[1]), match[2], match[0]), nil\n\t}\n\treturn nil, nil\n}\n\n// example: \"CentOS release 6.10 (Final)\"\nvar redhatReleaseMatcher = regexp.MustCompile(`(?P<name>.*?)\\srelease\\s(?P<version>(?P<versionid>\\d\\.\\d+).*)`)\n\n// parseRedhatRelease is a fallback parsing method for determining distro information in older redhat versions\nfunc parseRedhatRelease(contents string) (*Release, error) {\n\tcontents = strings.TrimSpace(contents)\n\tmatches := internal.MatchNamedCaptureGroups(redhatReleaseMatcher, contents)\n\tname := matches[\"name\"]\n\tversion := matches[\"version\"]\n\tversionID := matches[\"versionid\"]\n\tif name == \"\" || versionID == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tid := strings.ToLower(name)\n\tswitch {\n\tcase strings.HasPrefix(id, \"red hat enterprise linux\"):\n\t\tid = \"rhel\"\n\tcase strings.HasPrefix(id, \"centos\"):\n\t\t// ignore the parenthetical version information\n\t\tversion = versionID\n\t}\n\n\treturn &Release{\n\t\tPrettyName: contents,\n\t\tName:       name,\n\t\tID:         id,\n\t\tIDLike:     []string{id},\n\t\tVersion:    version,\n\t\tVersionID:  versionID,\n\t}, nil\n}\n\nfunc simpleRelease(prettyName, name, version, cpe string) *Release {\n\treturn &Release{\n\t\tPrettyName: prettyName,\n\t\tName:       name,\n\t\tID:         name,\n\t\tIDLike:     []string{name},\n\t\tVersion:    version,\n\t\tVersionID:  version,\n\t\tCPEName:    cpe,\n\t}\n}\n"
  },
  {
    "path": "syft/linux/identify_release_test.go",
    "content": "package linux\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n)\n\nfunc TestIdentifyRelease(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\trelease *Release\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/os/alpine\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Alpine Linux v3.11\",\n\t\t\t\tName:         \"Alpine Linux\",\n\t\t\t\tID:           \"alpine\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersionID:    \"3.11.6\",\n\t\t\t\tHomeURL:      \"https://alpinelinux.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.alpinelinux.org/\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/amazon\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"Amazon Linux 2\",\n\t\t\t\tName:       \"Amazon Linux\",\n\t\t\t\tID:         \"amzn\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"centos\",\n\t\t\t\t\t\"rhel\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:   \"2\",\n\t\t\t\tVersionID: \"2\",\n\t\t\t\tHomeURL:   \"https://amazonlinux.com/\",\n\t\t\t\tCPEName:   \"cpe:2.3:o:amazon:amazon_linux:2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/busybox\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"BusyBox v1.31.1\",\n\t\t\t\tName:       \"busybox\",\n\t\t\t\tID:         \"busybox\",\n\t\t\t\tIDLike:     []string{\"busybox\"},\n\t\t\t\tVersion:    \"1.31.1\",\n\t\t\t\tVersionID:  \"1.31.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/centos\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"CentOS Linux 8 (Core)\",\n\t\t\t\tName:       \"CentOS Linux\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike: []string{\"rhel\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"8 (Core)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"https://www.centos.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.centos.org/\",\n\t\t\t\tCPEName:      \"cpe:/o:centos:centos:8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/debian/from-os-release\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Debian GNU/Linux 8 (jessie)\",\n\t\t\t\tName:         \"Debian GNU/Linux\",\n\t\t\t\tID:           \"debian\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"8 (jessie)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"http://www.debian.org/\",\n\t\t\t\tSupportURL:   \"http://www.debian.org/support\",\n\t\t\t\tBugReportURL: \"https://bugs.debian.org/\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/debian/from-debian_version\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Distroless\",\n\t\t\t\tName:         \"Debian GNU/Linux\",\n\t\t\t\tID:           \"debian\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"10.8\",\n\t\t\t\tVersionID:    \"10.8\",\n\t\t\t\tHomeURL:      \"https://github.com/GoogleContainerTools/distroless\",\n\t\t\t\tSupportURL:   \"https://github.com/GoogleContainerTools/distroless/blob/master/README.md\",\n\t\t\t\tBugReportURL: \"https://github.com/GoogleContainerTools/distroless/issues/new\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/fedora\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:       \"Fedora Linux 36 (Container Image)\",\n\t\t\t\tName:             \"Fedora Linux\",\n\t\t\t\tID:               \"fedora\",\n\t\t\t\tIDLike:           nil,\n\t\t\t\tVersion:          \"36 (Container Image)\",\n\t\t\t\tVersionID:        \"36\",\n\t\t\t\tVariant:          \"Container Image\",\n\t\t\t\tVariantID:        \"container\",\n\t\t\t\tHomeURL:          \"https://fedoraproject.org/\",\n\t\t\t\tSupportURL:       \"https://ask.fedoraproject.org/\",\n\t\t\t\tBugReportURL:     \"https://bugzilla.redhat.com/\",\n\t\t\t\tPrivacyPolicyURL: \"https://fedoraproject.org/wiki/Legal:PrivacyPolicy\",\n\t\t\t\tCPEName:          \"cpe:/o:fedoraproject:fedora:36\",\n\t\t\t\tSupportEnd:       \"2023-05-16\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/redhat/from-os-release\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Red Hat Enterprise Linux Server 7.3 (Maipo)\",\n\t\t\t\tName:         \"Red Hat Enterprise Linux Server\",\n\t\t\t\tID:           \"rhel\",\n\t\t\t\tIDLike:       []string{\"fedora\"},\n\t\t\t\tVersion:      \"7.3 (Maipo)\",\n\t\t\t\tVersionID:    \"7.3\",\n\t\t\t\tHomeURL:      \"https://www.redhat.com/\",\n\t\t\t\tBugReportURL: \"https://bugzilla.redhat.com/\",\n\t\t\t\tCPEName:      \"cpe:/o:redhat:enterprise_linux:7.3:GA:server\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/redhat/from-redhat-release\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"Red Hat Enterprise Linux release 8.10 (Ootpa)\",\n\t\t\t\tName:       \"Red Hat Enterprise Linux\",\n\t\t\t\tID:         \"rhel\",\n\t\t\t\tIDLike:     []string{\"rhel\"},\n\t\t\t\tVersion:    \"8.10 (Ootpa)\",\n\t\t\t\tVersionID:  \"8.10\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/ubuntu\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:       \"Ubuntu 20.04 LTS\",\n\t\t\t\tName:             \"Ubuntu\",\n\t\t\t\tID:               \"ubuntu\",\n\t\t\t\tIDLike:           []string{\"debian\"},\n\t\t\t\tVersion:          \"20.04 LTS (Focal Fossa)\",\n\t\t\t\tVersionCodename:  \"focal\",\n\t\t\t\tVersionID:        \"20.04\",\n\t\t\t\tHomeURL:          \"https://www.ubuntu.com/\",\n\t\t\t\tSupportURL:       \"https://help.ubuntu.com/\",\n\t\t\t\tBugReportURL:     \"https://bugs.launchpad.net/ubuntu/\",\n\t\t\t\tPrivacyPolicyURL: \"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/oraclelinux\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Oracle Linux Server 8.3\",\n\t\t\t\tName:         \"Oracle Linux Server\",\n\t\t\t\tID:           \"ol\",\n\t\t\t\tIDLike:       []string{\"fedora\"},\n\t\t\t\tVersion:      \"8.3\",\n\t\t\t\tVersionID:    \"8.3\",\n\t\t\t\tVariant:      \"Server\",\n\t\t\t\tVariantID:    \"server\",\n\t\t\t\tHomeURL:      \"https://linux.oracle.com/\",\n\t\t\t\tBugReportURL: \"https://bugzilla.oracle.com/\",\n\t\t\t\tCPEName:      \"cpe:/o:oracle:linux:8:3:server\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/empty\",\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/custom\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"CentOS Linux 8 (Core)\",\n\t\t\t\tName:       \"Scientific Linux\",\n\t\t\t\tID:         \"scientific\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"rhel\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"16 (Core)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"https://www.centos.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.centos.org/\",\n\t\t\t\tCPEName:      \"cpe:/o:centos:centos:8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/opensuse-leap\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"openSUSE Leap 15.2\",\n\t\t\t\tName:       \"openSUSE Leap\",\n\t\t\t\tID:         \"opensuse-leap\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"suse\",\n\t\t\t\t\t\"opensuse\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"15.2\",\n\t\t\t\tVersionID:    \"15.2\",\n\t\t\t\tHomeURL:      \"https://www.opensuse.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.opensuse.org\",\n\t\t\t\tCPEName:      \"cpe:/o:opensuse:leap:15.2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/sles\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"SUSE Linux Enterprise Server 15 SP2\",\n\t\t\t\tName:       \"SLES\",\n\t\t\t\tID:         \"sles\",\n\t\t\t\tIDLike:     []string{\"suse\"},\n\t\t\t\tVersion:    \"15-SP2\",\n\t\t\t\tVersionID:  \"15.2\",\n\t\t\t\tCPEName:    \"cpe:/o:suse:sles:15:sp2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/photon\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"VMware Photon OS/Linux\",\n\t\t\t\tName:         \"VMware Photon OS\",\n\t\t\t\tID:           \"photon\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"2.0\",\n\t\t\t\tVersionID:    \"2.0\",\n\t\t\t\tHomeURL:      \"https://vmware.github.io/photon/\",\n\t\t\t\tBugReportURL: \"https://github.com/vmware/photon/issues\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/arch\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Arch Linux\",\n\t\t\t\tName:         \"Arch Linux\",\n\t\t\t\tID:           \"arch\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tBuildID:      \"rolling\",\n\t\t\t\tHomeURL:      \"https://www.archlinux.org/\",\n\t\t\t\tSupportURL:   \"https://bbs.archlinux.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.archlinux.org/\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/partial-fields/missing-id\",\n\t\t\trelease: &Release{\n\t\t\t\tName:      \"Debian GNU/Linux\",\n\t\t\t\tIDLike:    []string{\"debian\"},\n\t\t\t\tVersionID: \"8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/partial-fields/unknown-id\",\n\t\t\trelease: &Release{\n\t\t\t\tName:      \"Debian GNU/Linux\",\n\t\t\t\tID:        \"my-awesome-distro\",\n\t\t\t\tIDLike:    []string{\"debian\"},\n\t\t\t\tVersionID: \"8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/partial-fields/missing-version\",\n\t\t\trelease: &Release{\n\t\t\t\tName:   \"Debian GNU/Linux\",\n\t\t\t\tIDLike: []string{\"debian\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/centos6\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"centos\",\n\t\t\t\tName:       \"centos\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike:     []string{\"centos\"},\n\t\t\t\tVersion:    \"6\",\n\t\t\t\tVersionID:  \"6\",\n\t\t\t\tCPEName:    \"cpe:/o:centos:linux:6:GA\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/centos5\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"CentOS release 5.7 (Final)\",\n\t\t\t\tName:       \"CentOS\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike:     []string{\"centos\"},\n\t\t\t\tVersion:    \"5.7\",\n\t\t\t\tVersionID:  \"5.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/mariner\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"CBL-Mariner/Linux\",\n\t\t\t\tName:         \"Common Base Linux Mariner\",\n\t\t\t\tID:           \"mariner\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"1.0.20210901\",\n\t\t\t\tVersionID:    \"1.0\",\n\t\t\t\tHomeURL:      \"https://aka.ms/cbl-mariner\",\n\t\t\t\tSupportURL:   \"https://aka.ms/cbl-mariner\",\n\t\t\t\tBugReportURL: \"https://aka.ms/cbl-mariner\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/rockylinux\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"Rocky Linux 8.4 (Green Obsidian)\",\n\t\t\t\tName:       \"Rocky Linux\",\n\t\t\t\tID:         \"rocky\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"rhel\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"8.4 (Green Obsidian)\",\n\t\t\t\tVersionID:    \"8.4\",\n\t\t\t\tHomeURL:      \"https://rockylinux.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.rockylinux.org/\",\n\t\t\t\tCPEName:      \"cpe:/o:rocky:rocky:8.4:GA\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/almalinux\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"AlmaLinux 8.4 (Electric Cheetah)\",\n\t\t\t\tName:       \"AlmaLinux\",\n\t\t\t\tID:         \"almalinux\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"rhel\",\n\t\t\t\t\t\"centos\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"8.4 (Electric Cheetah)\",\n\t\t\t\tVersionID:    \"8.4\",\n\t\t\t\tHomeURL:      \"https://almalinux.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.almalinux.org/\",\n\t\t\t\tCPEName:      \"cpe:/o:almalinux:almalinux:8.4:GA\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/os/wolfi\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"Wolfi\",\n\t\t\t\tName:       \"Wolfi\",\n\t\t\t\tID:         \"wolfi\",\n\t\t\t\tVersionID:  \"20220914\",\n\t\t\t\tHomeURL:    \"https://wolfi.dev\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\ts, err := directorysource.New(directorysource.Config{\n\t\t\t\tPath: test.fixture,\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver, err := s.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Equal(t, test.release, IdentifyRelease(resolver))\n\t\t})\n\t}\n}\n\nfunc TestParseOsRelease(t *testing.T) {\n\n\ttests := []struct {\n\t\tfixture string\n\t\trelease *Release\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/ubuntu-20.04\",\n\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:       \"Ubuntu 20.04 LTS\",\n\t\t\t\tName:             \"Ubuntu\",\n\t\t\t\tID:               \"ubuntu\",\n\t\t\t\tIDLike:           []string{\"debian\"},\n\t\t\t\tVersion:          \"20.04 LTS (Focal Fossa)\",\n\t\t\t\tVersionID:        \"20.04\",\n\t\t\t\tVersionCodename:  \"focal\",\n\t\t\t\tHomeURL:          \"https://www.ubuntu.com/\",\n\t\t\t\tSupportURL:       \"https://help.ubuntu.com/\",\n\t\t\t\tBugReportURL:     \"https://bugs.launchpad.net/ubuntu/\",\n\t\t\t\tPrivacyPolicyURL: \"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\",\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\tfixture: \"testdata/debian-8\",\n\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Debian GNU/Linux 8 (jessie)\",\n\t\t\t\tName:         \"Debian GNU/Linux\",\n\t\t\t\tID:           \"debian\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"8 (jessie)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"http://www.debian.org/\",\n\t\t\t\tSupportURL:   \"http://www.debian.org/support\",\n\t\t\t\tBugReportURL: \"https://bugs.debian.org/\",\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\tfixture: \"testdata/centos-8\",\n\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"CentOS Linux 8 (Core)\",\n\t\t\t\tName:       \"CentOS Linux\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"rhel\",\n\t\t\t\t\t\"fedora\",\n\t\t\t\t},\n\t\t\t\tVersion:      \"8 (Core)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"https://www.centos.org/\",\n\t\t\t\tBugReportURL: \"https://bugs.centos.org/\",\n\t\t\t\tCPEName:      \"cpe:/o:centos:centos:8\",\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\tfixture: \"testdata/rhel-8\",\n\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Red Hat Enterprise Linux 8.1 (Ootpa)\",\n\t\t\t\tName:         \"Red Hat Enterprise Linux\",\n\t\t\t\tID:           \"rhel\",\n\t\t\t\tIDLike:       []string{\"fedora\"},\n\t\t\t\tVersion:      \"8.1 (Ootpa)\",\n\t\t\t\tVersionID:    \"8.1\",\n\t\t\t\tHomeURL:      \"https://www.redhat.com/\",\n\t\t\t\tBugReportURL: \"https://bugzilla.redhat.com/\",\n\t\t\t\tCPEName:      \"cpe:/o:redhat:enterprise_linux:8.1:GA\",\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\tfixture: \"testdata/unprintable\",\n\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName:   \"Debian GNU/Linux 8 (jessie)\",\n\t\t\t\tName:         \"Debian GNU/Linux\",\n\t\t\t\tID:           \"debian\",\n\t\t\t\tIDLike:       nil,\n\t\t\t\tVersion:      \"8 (jessie)\",\n\t\t\t\tVersionID:    \"8\",\n\t\t\t\tHomeURL:      \"http://www.debian.org/\",\n\t\t\t\tSupportURL:   \"http://www.debian.org/support\",\n\t\t\t\tBugReportURL: \"https://bugs.debian.org/\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture,\n\t\t\tfunc(t *testing.T) {\n\t\t\t\trelease,\n\t\t\t\t\terr := parseOsRelease(retrieveFixtureContentsAsString(test.fixture,\n\t\t\t\t\tt))\n\t\t\t\trequire.NoError(t,\n\t\t\t\t\terr)\n\t\t\t\tassert.Equal(t,\n\t\t\t\t\ttest.release,\n\t\t\t\t\trelease)\n\t\t\t})\n\t}\n\n}\n\nfunc TestParseSystemReleaseCPE(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\trelease *Release\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/os/centos6/etc/system-release-cpe\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"centos\",\n\t\t\t\tName:       \"centos\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike:     []string{\"centos\"},\n\t\t\t\tVersion:    \"6\",\n\t\t\t\tVersionID:  \"6\",\n\t\t\t\tCPEName:    \"cpe:/o:centos:linux:6:GA\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/bad-system-release-cpe\",\n\t\t\trelease: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tcontents := retrieveFixtureContentsAsString(test.fixture, t)\n\t\t\trelease, err := parseSystemReleaseCPE(contents)\n\t\t\trequire.NoError(t, err)\n\t\t\tif test.release == nil {\n\t\t\t\tassert.Nil(t, release)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassert.Equal(t, test.release, release)\n\t\t})\n\t}\n}\n\nfunc TestParseRedhatRelease(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\tname    string\n\t\trelease *Release\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/os/centos5/etc/redhat-release\",\n\t\t\tname:    \"Centos 5\",\n\t\t\trelease: &Release{\n\t\t\t\tPrettyName: \"CentOS release 5.7 (Final)\",\n\t\t\t\tName:       \"CentOS\",\n\t\t\t\tID:         \"centos\",\n\t\t\t\tIDLike:     []string{\"centos\"},\n\t\t\t\tVersion:    \"5.7\",\n\t\t\t\tVersionID:  \"5.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/bad-redhat-release\",\n\t\t\tname:    \"Centos 5 Bad Redhat Release\",\n\t\t\trelease: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\trelease, err := parseRedhatRelease(retrieveFixtureContentsAsString(test.fixture, t))\n\t\t\trequire.NoError(t, err)\n\t\t\tif test.release == nil {\n\t\t\t\tassert.Nil(t, release)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassert.Equal(t, test.release, release)\n\t\t})\n\t}\n}\n\nfunc retrieveFixtureContentsAsString(fixturePath string, t *testing.T) string {\n\tfixture, err := os.Open(fixturePath)\n\tif err != nil {\n\t\tt.Fatalf(\"could not open test fixture=%s: %+v\", fixturePath, err)\n\t}\n\tdefer fixture.Close()\n\n\tb, err := io.ReadAll(fixture)\n\tif err != nil {\n\t\tt.Fatalf(\"unable to read fixture file: %+v\", err)\n\t}\n\n\treturn string(b)\n}\n"
  },
  {
    "path": "syft/linux/release.go",
    "content": "package linux\n\n// Release represents Linux Distribution release information as specified from https://www.freedesktop.org/software/systemd/man/os-release.html\ntype Release struct {\n\tPrettyName       string   `cyclonedx:\"prettyName\"` // A pretty operating system name in a format suitable for presentation to the user.\n\tName             string   // identifies the operating system, without a version component, and suitable for presentation to the user.\n\tID               string   `cyclonedx:\"id\"`     // identifies the operating system, excluding any version information and suitable for processing by scripts or usage in generated filenames.\n\tIDLike           []string `cyclonedx:\"idLike\"` // list of operating system identifiers in the same syntax as the ID= setting. It should list identifiers of operating systems that are closely related to the local operating system in regards to packaging and programming interfaces.\n\tVersion          string   // identifies the operating system version, excluding any OS name information, possibly including a release code name, and suitable for presentation to the user.\n\tVersionID        string   `cyclonedx:\"versionID\"` // identifies the operating system version, excluding any OS name information or release code name, and suitable for processing by scripts or usage in generated filenames.\n\tVersionCodename  string   `cyclonedx:\"versionCodename\"`\n\tBuildID          string   `cyclonedx:\"buildID\"` // A string uniquely identifying the system image originally used as the installation base.\n\tImageID          string   `cyclonedx:\"imageID\"`\n\tImageVersion     string   `cyclonedx:\"imageVersion\"`\n\tVariant          string   `cyclonedx:\"variant\"`   // identifies a specific variant or edition of the operating system suitable for presentation to the user.\n\tVariantID        string   `cyclonedx:\"variantID\"` // identifies a specific variant or edition of the operating system. This may be interpreted by other packages in order to determine a divergent default configuration.\n\tHomeURL          string\n\tSupportURL       string\n\tBugReportURL     string\n\tPrivacyPolicyURL string\n\tCPEName          string // A CPE name for the operating system, in URI binding syntax\n\tSupportEnd       string // The date at which support for this version of the OS ends.\n\tExtendedSupport  bool   `cyclonedx:\"extendedSupport\"` // indicates there was some evidence of extended support found\n}\n\nfunc (r *Release) String() string {\n\tif r == nil {\n\t\treturn \"unknown\"\n\t}\n\tif r.PrettyName != \"\" {\n\t\treturn r.PrettyName\n\t}\n\tif r.Name != \"\" {\n\t\treturn r.Name\n\t}\n\tif r.Version != \"\" {\n\t\treturn r.ID + \" \" + r.Version\n\t}\n\tif r.VersionID != \"\" {\n\t\treturn r.ID + \" \" + r.VersionID\n\t}\n\n\treturn r.ID + \" \" + r.BuildID\n}\n"
  },
  {
    "path": "syft/linux/supplement_release.go",
    "content": "package linux\n\nimport (\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc supplementDebianVersion(resolver file.Resolver, release *Release) {\n\t// we're only looking for version information for debian when none is present in /etc/os-release\n\tif release.Version != \"\" || release.VersionID != \"\" || !strings.EqualFold(release.ID, \"debian\") {\n\t\treturn\n\t}\n\t// if we have a debian release with no version, look for a debian_version\n\tlocations, err := resolver.FilesByGlob(\"/etc/debian_version\")\n\tif err != nil {\n\t\tlog.Debugf(\"error reading /etc/debian_version: %v\", err)\n\t\treturn\n\t}\n\tfor _, location := range locations {\n\t\tversion := readDebianVersionFile(resolver, location)\n\t\tif version != \"\" {\n\t\t\trelease.Version = version\n\t\t\trelease.VersionID = version\n\t\t\treturn // keep the first result\n\t\t}\n\t}\n}\n\nfunc readDebianVersionFile(resolver file.Resolver, location file.Location) string {\n\trdr, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\tlog.Debugf(\"error getting contents for %s: %v\", location.RealPath, err)\n\t\treturn \"\"\n\t}\n\tdefer internal.CloseAndLogError(rdr, location.RealPath)\n\tcontents, err := io.ReadAll(io.LimitReader(rdr, 5*1024*1024))\n\tif err != nil {\n\t\tlog.Debugf(\"error reading %s: %v\", location.RealPath, err)\n\t\treturn \"\"\n\t}\n\tversion := strings.TrimSpace(string(contents))\n\tif regexp.MustCompile(`^\\d+(?:\\.\\d+)?$`).MatchString(version) {\n\t\treturn version\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/linux/testdata/bad-redhat-release",
    "content": "CentOS release 5 (Final)"
  },
  {
    "path": "syft/linux/testdata/bad-system-release-cpe",
    "content": "cpe:/o:centos:6:GA"
  },
  {
    "path": "syft/linux/testdata/centos-8",
    "content": "NAME=\"CentOS Linux\"\nVERSION=\"8 (Core)\"\nID=\"centos\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"8\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"CentOS Linux 8 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:8\"\nHOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-8\"\nCENTOS_MANTISBT_PROJECT_VERSION=\"8\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"8\"\n\n"
  },
  {
    "path": "syft/linux/testdata/debian-8",
    "content": "PRETTY_NAME=\"Debian GNU/Linux 8 (jessie)\"\nNAME=\"Debian GNU/Linux\"\nVERSION_ID=\"8\"\nVERSION=\"8 (jessie)\"\nID=debian\nHOME_URL=\"http://www.debian.org/\"\nSUPPORT_URL=\"http://www.debian.org/support\"\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\n"
  },
  {
    "path": "syft/linux/testdata/os/almalinux/etc/os-release",
    "content": "NAME=\"AlmaLinux\"\nVERSION=\"8.4 (Electric Cheetah)\"\nID=\"almalinux\"\nID_LIKE=\"rhel centos fedora\"\nVERSION_ID=\"8.4\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"AlmaLinux 8.4 (Electric Cheetah)\"\nANSI_COLOR=\"0;34\"\nCPE_NAME=\"cpe:/o:almalinux:almalinux:8.4:GA\"\nHOME_URL=\"https://almalinux.org/\"\nDOCUMENTATION_URL=\"https://wiki.almalinux.org/\"\nBUG_REPORT_URL=\"https://bugs.almalinux.org/\"\n\nALMALINUX_MANTISBT_PROJECT=\"AlmaLinux-8\"\nALMALINUX_MANTISBT_PROJECT_VERSION=\"8.4\""
  },
  {
    "path": "syft/linux/testdata/os/alpine/etc/os-release",
    "content": "NAME=\"Alpine Linux\"\nID=alpine\nVERSION_ID=3.11.6\nPRETTY_NAME=\"Alpine Linux v3.11\"\nHOME_URL=\"https://alpinelinux.org/\"\nBUG_REPORT_URL=\"https://bugs.alpinelinux.org/\"\n"
  },
  {
    "path": "syft/linux/testdata/os/amazon/etc/os-release",
    "content": "NAME=\"Amazon Linux\"\nVERSION=\"2\"\nID=\"amzn\"\nID_LIKE=\"centos rhel fedora\"\nVERSION_ID=\"2\"\nPRETTY_NAME=\"Amazon Linux 2\"\nANSI_COLOR=\"0;33\"\nCPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2\"\nHOME_URL=\"https://amazonlinux.com/\"\n"
  },
  {
    "path": "syft/linux/testdata/os/arch/etc/os-release",
    "content": "NAME=\"Arch Linux\"\nPRETTY_NAME=\"Arch Linux\"\nID=arch\nBUILD_ID=rolling\nANSI_COLOR=\"38;2;23;147;209\"\nHOME_URL=\"https://www.archlinux.org/\"\nDOCUMENTATION_URL=\"https://wiki.archlinux.org/\"\nSUPPORT_URL=\"https://bbs.archlinux.org/\"\nBUG_REPORT_URL=\"https://bugs.archlinux.org/\"\nLOGO=archlinux\n"
  },
  {
    "path": "syft/linux/testdata/os/busybox/.gitignore",
    "content": "# override root level ignores for test fixtures\n!bin/\n"
  },
  {
    "path": "syft/linux/testdata/os/busybox/bin/.gitignore",
    "content": "# override root level ignores for test fixtures\n!*\n"
  },
  {
    "path": "syft/linux/testdata/os/busybox/bin/busybox",
    "content": "junk...BusyBox v1.31.1more junk"
  },
  {
    "path": "syft/linux/testdata/os/centos/usr/lib/os-release",
    "content": "NAME=\"CentOS Linux\"\nVERSION=\"8 (Core)\"\nID=\"centos\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"8\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"CentOS Linux 8 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:8\"\nHOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-8\"\nCENTOS_MANTISBT_PROJECT_VERSION=\"8\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"8\"\n"
  },
  {
    "path": "syft/linux/testdata/os/centos5/etc/redhat-release",
    "content": "CentOS release 5.7 (Final)"
  },
  {
    "path": "syft/linux/testdata/os/centos6/etc/system-release-cpe",
    "content": "cpe:/o:centos:linux:6:GA"
  },
  {
    "path": "syft/linux/testdata/os/custom/etc/os-release",
    "content": "NAME=\"Scientific Linux\"\nVERSION=\"16 (Core)\"\nID=\"scientific\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"8\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"CentOS Linux 8 (Core)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:centos:centos:8\"\nHOME_URL=\"https://www.centos.org/\"\nBUG_REPORT_URL=\"https://bugs.centos.org/\"\n\nCENTOS_MANTISBT_PROJECT=\"CentOS-8\"\nCENTOS_MANTISBT_PROJECT_VERSION=\"8\"\nREDHAT_SUPPORT_PRODUCT=\"centos\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"8\"\n\n"
  },
  {
    "path": "syft/linux/testdata/os/debian/from-debian_version/etc/debian_version",
    "content": "10.8\n"
  },
  {
    "path": "syft/linux/testdata/os/debian/from-debian_version/etc/os-release",
    "content": "PRETTY_NAME=\"Distroless\"\nNAME=\"Debian GNU/Linux\"\nID=\"debian\"\nHOME_URL=\"https://github.com/GoogleContainerTools/distroless\"\nSUPPORT_URL=\"https://github.com/GoogleContainerTools/distroless/blob/master/README.md\"\nBUG_REPORT_URL=\"https://github.com/GoogleContainerTools/distroless/issues/new\"\n"
  },
  {
    "path": "syft/linux/testdata/os/debian/from-os-release/usr/lib/os-release",
    "content": "PRETTY_NAME=\"Debian GNU/Linux 8 (jessie)\"\nNAME=\"Debian GNU/Linux\"\nVERSION_ID=\"8\"\nVERSION=\"8 (jessie)\"\nID=debian\nHOME_URL=\"http://www.debian.org/\"\nSUPPORT_URL=\"http://www.debian.org/support\"\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\n"
  },
  {
    "path": "syft/linux/testdata/os/empty/etc/os-release",
    "content": ""
  },
  {
    "path": "syft/linux/testdata/os/fedora/usr/lib/os-release",
    "content": "NAME=\"Fedora Linux\"\nVERSION=\"36 (Container Image)\"\nID=fedora\nVERSION_ID=36\nVERSION_CODENAME=\"\"\nPLATFORM_ID=\"platform:f36\"\nPRETTY_NAME=\"Fedora Linux 36 (Container Image)\"\nANSI_COLOR=\"0;38;2;60;110;180\"\nLOGO=fedora-logo-icon\nCPE_NAME=\"cpe:/o:fedoraproject:fedora:36\"\nHOME_URL=\"https://fedoraproject.org/\"\nDOCUMENTATION_URL=\"https://docs.fedoraproject.org/en-US/fedora/f36/system-administrators-guide/\"\nSUPPORT_URL=\"https://ask.fedoraproject.org/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\nREDHAT_BUGZILLA_PRODUCT=\"Fedora\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=36\nREDHAT_SUPPORT_PRODUCT=\"Fedora\"\nREDHAT_SUPPORT_PRODUCT_VERSION=36\nPRIVACY_POLICY_URL=\"https://fedoraproject.org/wiki/Legal:PrivacyPolicy\"\nSUPPORT_END=2023-05-16\nVARIANT=\"Container Image\"\nVARIANT_ID=container\n"
  },
  {
    "path": "syft/linux/testdata/os/mariner/etc/os-release",
    "content": "NAME=\"Common Base Linux Mariner\"\nVERSION=\"1.0.20210901\"\nID=mariner\nVERSION_ID=1.0\nPRETTY_NAME=\"CBL-Mariner/Linux\"\nANSI_COLOR=\"1;34\"\nHOME_URL=\"https://aka.ms/cbl-mariner\"\nBUG_REPORT_URL=\"https://aka.ms/cbl-mariner\"\nSUPPORT_URL=\"https://aka.ms/cbl-mariner\""
  },
  {
    "path": "syft/linux/testdata/os/opensuse-leap/etc/os-release",
    "content": "NAME=\"openSUSE Leap\"\nVERSION=\"15.2\"\nID=\"opensuse-leap\"\nID_LIKE=\"suse opensuse\"\nVERSION_ID=\"15.2\"\nPRETTY_NAME=\"openSUSE Leap 15.2\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:opensuse:leap:15.2\"\nBUG_REPORT_URL=\"https://bugs.opensuse.org\"\nHOME_URL=\"https://www.opensuse.org/\"\n"
  },
  {
    "path": "syft/linux/testdata/os/oraclelinux/etc/os-release",
    "content": "NAME=\"Oracle Linux Server\"\nVERSION=\"8.3\"\nID=\"ol\"\nID_LIKE=\"fedora\"\nVARIANT=\"Server\"\nVARIANT_ID=\"server\"\nVERSION_ID=\"8.3\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"Oracle Linux Server 8.3\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:oracle:linux:8:3:server\"\nHOME_URL=\"https://linux.oracle.com/\"\nBUG_REPORT_URL=\"https://bugzilla.oracle.com/\"\n\nORACLE_BUGZILLA_PRODUCT=\"Oracle Linux 8\"\nORACLE_BUGZILLA_PRODUCT_VERSION=8.3\nORACLE_SUPPORT_PRODUCT=\"Oracle Linux\"\nORACLE_SUPPORT_PRODUCT_VERSION=8.3"
  },
  {
    "path": "syft/linux/testdata/os/photon/etc/os-release",
    "content": "NAME=\"VMware Photon OS\"\nVERSION=\"2.0\"\nID=photon\nVERSION_ID=2.0\nPRETTY_NAME=\"VMware Photon OS/Linux\"\nANSI_COLOR=\"1;34\"\nHOME_URL=\"https://vmware.github.io/photon/\"\nBUG_REPORT_URL=\"https://github.com/vmware/photon/issues\" \n"
  },
  {
    "path": "syft/linux/testdata/os/redhat/from-os-release/usr/lib/os-release",
    "content": "NAME=\"Red Hat Enterprise Linux Server\"\nVERSION=\"7.3 (Maipo)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"7.3\"\nPRETTY_NAME=\"Red Hat Enterprise Linux Server 7.3 (Maipo)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:redhat:enterprise_linux:7.3:GA:server\"\nHOME_URL=\"https://www.redhat.com/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 7\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=7.3\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"7.3\""
  },
  {
    "path": "syft/linux/testdata/os/redhat/from-redhat-release/etc/redhat-release",
    "content": "Red Hat Enterprise Linux release 8.10 (Ootpa)"
  },
  {
    "path": "syft/linux/testdata/os/rockylinux/etc/os-release",
    "content": "NAME=\"Rocky Linux\"\nVERSION=\"8.4 (Green Obsidian)\"\nID=\"rocky\"\nID_LIKE=\"rhel fedora\"\nVERSION_ID=\"8.4\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"Rocky Linux 8.4 (Green Obsidian)\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:rocky:rocky:8.4:GA\"\nHOME_URL=\"https://rockylinux.org/\"\nBUG_REPORT_URL=\"https://bugs.rockylinux.org/\"\nROCKY_SUPPORT_PRODUCT=\"Rocky Linux\"\nROCKY_SUPPORT_PRODUCT_VERSION=\"8\""
  },
  {
    "path": "syft/linux/testdata/os/sles/etc/os-release",
    "content": "NAME=\"SLES\"\nVERSION=\"15-SP2\"\nVERSION_ID=\"15.2\"\nPRETTY_NAME=\"SUSE Linux Enterprise Server 15 SP2\"\nID=\"sles\"\nID_LIKE=\"suse\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:suse:sles:15:sp2\"\nDOCUMENTATION_URL=\"https://documentation.suse.com/\""
  },
  {
    "path": "syft/linux/testdata/os/ubuntu/etc/os-release",
    "content": "NAME=\"Ubuntu\"\nVERSION=\"20.04 LTS (Focal Fossa)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 20.04 LTS\"\nVERSION_ID=\"20.04\"\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nVERSION_CODENAME=focal\nUBUNTU_CODENAME=focal\n"
  },
  {
    "path": "syft/linux/testdata/os/wolfi/etc/os-release",
    "content": "ID=wolfi\nNAME=\"Wolfi\"\nPRETTY_NAME=\"Wolfi\"\nVERSION_ID=\"20220914\"\nHOME_URL=\"https://wolfi.dev\"\n"
  },
  {
    "path": "syft/linux/testdata/partial-fields/missing-id/usr/lib/os-release",
    "content": "NAME=\"Debian GNU/Linux\"\nVERSION_ID=\"8\"\nID_LIKE=debian\n"
  },
  {
    "path": "syft/linux/testdata/partial-fields/missing-version/usr/lib/os-release",
    "content": "NAME=\"Debian GNU/Linux\"\nID_LIKE=debian\n"
  },
  {
    "path": "syft/linux/testdata/partial-fields/unknown-id/usr/lib/os-release",
    "content": "NAME=\"Debian GNU/Linux\"\nVERSION_ID=\"8\"\nID=my-awesome-distro\nID_LIKE=debian\n"
  },
  {
    "path": "syft/linux/testdata/rhel-8",
    "content": "NAME=\"Red Hat Enterprise Linux\"\nVERSION=\"8.1 (Ootpa)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"8.1\"\nPLATFORM_ID=\"platform:el8\"\nPRETTY_NAME=\"Red Hat Enterprise Linux 8.1 (Ootpa)\"\nANSI_COLOR=\"0;31\"\nCPE_NAME=\"cpe:/o:redhat:enterprise_linux:8.1:GA\"\nHOME_URL=\"https://www.redhat.com/\"\nBUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n\nREDHAT_BUGZILLA_PRODUCT=\"Red Hat Enterprise Linux 8\"\nREDHAT_BUGZILLA_PRODUCT_VERSION=8.1\nREDHAT_SUPPORT_PRODUCT=\"Red Hat Enterprise Linux\"\nREDHAT_SUPPORT_PRODUCT_VERSION=\"8.1\"\n"
  },
  {
    "path": "syft/linux/testdata/ubuntu-20.04",
    "content": "NAME=\"Ubuntu\"\nVERSION=\"20.04 LTS (Focal Fossa)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 20.04 LTS\"\nVERSION_ID=\"20.04\"\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nVERSION_CODENAME=focal\nUBUNTU_CODENAME=focal\n"
  },
  {
    "path": "syft/linux/testdata/unprintable",
    "content": "PRETTY_NAME=\"Debian GNU/Linux 8 (jessie)\"\r\nNAME=\"Debian GNU/Linux\"\r\nVERSION_ID=\"8\"\r\nVERSION=\"8 (jessie)\"\r\nID=debian\r\nHOME_URL=\"http://www.debian.org/\"\r\nSUPPORT_URL=\"http://www.debian.org/support\"\r\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\r\n"
  },
  {
    "path": "syft/pkg/alpm.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\t\"time\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ FileOwner = (*AlpmDBEntry)(nil)\n\nconst AlpmDBGlob = \"**/var/lib/pacman/local/**/desc\"\n\n// AlpmDBEntry is a struct that represents the package data stored in the pacman flat-file stores for arch linux.\ntype AlpmDBEntry struct {\n\t// BasePackage is the base package name this package was built from (source package in Arch build system)\n\tBasePackage string `mapstructure:\"base\" json:\"basepackage\" cyclonedx:\"basepackage\"`\n\n\t// Package is the package name as found in the desc file\n\tPackage string `mapstructure:\"name\" json:\"package\" cyclonedx:\"package\"`\n\n\t// Version is the package version as found in the desc file\n\tVersion string `mapstructure:\"version\" json:\"version\" cyclonedx:\"version\"`\n\n\t// Description is a human-readable package description\n\tDescription string `mapstructure:\"desc\" json:\"description\" cyclonedx:\"description\"`\n\n\t// Architecture is the target CPU architecture as defined in Arch architecture spec (e.g. x86_64, aarch64, or \"any\" for arch-independent packages)\n\tArchitecture string `mapstructure:\"arch\" json:\"architecture\" cyclonedx:\"architecture\"`\n\n\t// Size is the installed size in bytes\n\tSize int `mapstructure:\"size\" json:\"size\" cyclonedx:\"size\"`\n\n\t// Packager is the name and email of the person who packaged this (RFC822 format)\n\tPackager string `mapstructure:\"packager\" json:\"packager\"`\n\n\t// URL is the upstream project URL\n\tURL string `mapstructure:\"url\" json:\"url\"`\n\n\t// Validation is the validation method used for package integrity (e.g. pgp signature, sha256 checksum)\n\tValidation string `mapstructure:\"validation\" json:\"validation\"`\n\n\t// Reason is the installation reason tracked by pacman (0=explicitly installed by user, 1=installed as dependency)\n\tReason int `mapstructure:\"reason\" json:\"reason\"`\n\n\t// Files are the files installed by this package\n\tFiles []AlpmFileRecord `mapstructure:\"files\" json:\"files\"`\n\n\t// Backup is the list of configuration files that pacman backs up before upgrades\n\tBackup []AlpmFileRecord `mapstructure:\"backup\" json:\"backup\"`\n\n\t// Provides are virtual packages provided by this package (allows other packages to depend on capabilities rather than specific packages)\n\tProvides []string `mapstructure:\"provides\" json:\"provides,omitempty\"`\n\n\t// Depends are the runtime dependencies required by this package\n\tDepends []string `mapstructure:\"depends\" json:\"depends,omitempty\"`\n}\n\n// AlpmFileRecord represents a single file entry within an Arch Linux package with its associated metadata tracked by pacman.\ntype AlpmFileRecord struct {\n\t// Path is the file path relative to the filesystem root\n\tPath string `mapstruture:\"path\" json:\"path,omitempty\"`\n\n\t// Type is the file type (e.g. regular file, directory, symlink)\n\tType string `mapstructure:\"type\" json:\"type,omitempty\"`\n\n\t// UID is the file owner user ID as recorded by pacman\n\tUID string `mapstructure:\"uid\" json:\"uid,omitempty\"`\n\n\t// GID is the file owner group ID as recorded by pacman\n\tGID string `mapstructure:\"gid\" json:\"gid,omitempty\"`\n\n\t// Time is the file modification timestamp\n\tTime time.Time `mapstructure:\"time\" json:\"time,omitempty\"`\n\n\t// Size is the file size in bytes\n\tSize string `mapstructure:\"size\" json:\"size,omitempty\"`\n\n\t// Link is the symlink target path if this is a symlink\n\tLink string `mapstructure:\"link\" json:\"link,omitempty\"`\n\n\t// Digests contains file content hashes for integrity verification\n\tDigests []file.Digest `mapstructure:\"digests\" json:\"digest,omitempty\"`\n}\n\nfunc (m AlpmDBEntry) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/apk.go",
    "content": "package pkg\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nconst ApkDBGlob = \"**/lib/apk/db/installed\"\n\nvar _ FileOwner = (*ApkDBEntry)(nil)\n\n// ApkDBEntry represents all captured data for the alpine linux package manager flat-file store.\n// See the following sources for more information:\n// - https://wiki.alpinelinux.org/wiki/Apk_spec\n// - https://git.alpinelinux.org/apk-tools/tree/src/package.c\n// - https://git.alpinelinux.org/apk-tools/tree/src/database.c\ntype ApkDBEntry struct {\n\t// Package is the package name as found in the installed file\n\tPackage string `mapstructure:\"P\" json:\"package\"`\n\n\t// OriginPackage is the original source package name this binary was built from (used to track which aport/source built this)\n\tOriginPackage string `mapstructure:\"o\" json:\"originPackage\" cyclonedx:\"originPackage\"`\n\n\t// Maintainer is the package maintainer name and email\n\tMaintainer string `mapstructure:\"m\" json:\"maintainer\"`\n\n\t// Version is the package version as found in the installed file\n\tVersion string `mapstructure:\"V\" json:\"version\"`\n\n\t// Architecture is the target CPU architecture\n\tArchitecture string `mapstructure:\"A\" json:\"architecture\"`\n\n\t// URL is the upstream project URL\n\tURL string `mapstructure:\"U\" json:\"url\"`\n\n\t// Description is a human-readable package description\n\tDescription string `mapstructure:\"T\" json:\"description\"`\n\n\t// Size is the package archive size in bytes (.apk file size)\n\tSize int `mapstructure:\"S\" json:\"size\" cyclonedx:\"size\"`\n\n\t// InstalledSize is the total size of installed files in bytes\n\tInstalledSize int `mapstructure:\"I\" json:\"installedSize\" cyclonedx:\"installedSize\"`\n\n\t// Dependencies are the runtime dependencies required by this package\n\tDependencies []string `mapstructure:\"D\" json:\"pullDependencies\" cyclonedx:\"pullDependencies\"`\n\n\t// Provides are virtual packages provided by this package (for capability-based dependencies)\n\tProvides []string `mapstructure:\"p\" json:\"provides\" cyclonedx:\"provides\"`\n\n\t// Checksum is the package content checksum for integrity verification\n\tChecksum string `mapstructure:\"C\" json:\"pullChecksum\" cyclonedx:\"pullChecksum\"`\n\n\t// GitCommit is the git commit hash of the APK port definition in Alpine's aports repository\n\tGitCommit string `mapstructure:\"c\" json:\"gitCommitOfApkPort\" cyclonedx:\"gitCommitOfApkPort\"`\n\n\t// Files are the files installed by this package\n\tFiles []ApkFileRecord `json:\"files\"`\n}\n\n// spaceDelimitedStringSlice is an internal helper type for unmarshaling space-delimited strings from JSON into a string slice.\ntype spaceDelimitedStringSlice []string\n\nfunc (m *ApkDBEntry) UnmarshalJSON(data []byte) error {\n\tvar fields []reflect.StructField\n\tt := reflect.TypeOf(ApkDBEntry{})\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tf := t.Field(i)\n\t\tif f.Name == \"Dependencies\" {\n\t\t\tf.Type = reflect.TypeOf(spaceDelimitedStringSlice{})\n\t\t}\n\t\tfields = append(fields, f)\n\t}\n\tapkMetadata := reflect.StructOf(fields)\n\tinst := reflect.New(apkMetadata)\n\tif err := json.Unmarshal(data, inst.Interface()); err != nil {\n\t\treturn err\n\t}\n\n\treturn mapstructure.Decode(inst.Elem().Interface(), m)\n}\n\nfunc (a *spaceDelimitedStringSlice) UnmarshalJSON(data []byte) error {\n\tvar jsonObj interface{}\n\n\tif err := json.Unmarshal(data, &jsonObj); err != nil {\n\t\treturn err\n\t}\n\n\tswitch obj := jsonObj.(type) {\n\tcase string:\n\t\tif obj == \"\" {\n\t\t\t*a = nil\n\t\t} else {\n\t\t\t*a = strings.Split(obj, \" \")\n\t\t}\n\t\treturn nil\n\tcase []interface{}:\n\t\ts := make([]string, 0, len(obj))\n\t\tfor _, v := range obj {\n\t\t\tvalue, ok := v.(string)\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"invalid type for string array element: %T\", v)\n\t\t\t}\n\t\t\ts = append(s, value)\n\t\t}\n\t\t*a = s\n\t\treturn nil\n\tcase nil:\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid type for string array: %T\", obj)\n\t}\n}\n\n// ApkFileRecord represents a single file listing and metadata from a APK DB entry (which may have many of these file records).\ntype ApkFileRecord struct {\n\t// Path is the file path relative to the filesystem root\n\tPath string `json:\"path\"`\n\n\t// OwnerUID is the file owner user ID\n\tOwnerUID string `json:\"ownerUid,omitempty\"`\n\n\t// OwnerGID is the file owner group ID\n\tOwnerGID string `json:\"ownerGid,omitempty\"`\n\n\t// Permissions is the file permission mode string (e.g. \"0755\", \"0644\")\n\tPermissions string `json:\"permissions,omitempty\"`\n\n\t// Digest is the file content hash for integrity verification\n\tDigest *file.Digest `json:\"digest,omitempty\"`\n}\n\nfunc (m ApkDBEntry) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/apk_test.go",
    "content": "package pkg\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestApkMetadata_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tinput   string\n\t\twant    ApkDBEntry\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:  \"empty\",\n\t\t\tinput: \"{}\",\n\t\t\twant:  ApkDBEntry{},\n\t\t},\n\t\t{\n\t\t\tname: \"string array dependencies\",\n\t\t\tinput: `{\n\"package\": \"scanelf\",\n\"originPackage\": \"pax-utils\",\n\"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n\"version\": \"1.3.4-r0\",\n\"license\": \"GPL-2.0-only\",\n\"architecture\": \"x86_64\",\n\"url\": \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n\"description\": \"Scan ELF binaries for stuff\",\n\"size\": 36745,\n\"installedSize\": 94208,\n\"pullChecksum\": \"Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\",\n\"gitCommitOfApkPort\": \"d7ae612a3cc5f827289d915783b4cbf8c7207947\",\n\"files\": [\n {\n  \"path\": \"/usr\"\n }\n],\n\"pullDependencies\": [\"foo\", \"bar\"]\n}`,\n\t\t\twant: ApkDBEntry{\n\t\t\t\tPackage:       \"scanelf\",\n\t\t\t\tOriginPackage: \"pax-utils\",\n\t\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\t\tVersion:       \"1.3.4-r0\",\n\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\tURL:           \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n\t\t\t\tDescription:   \"Scan ELF binaries for stuff\",\n\t\t\t\tSize:          36745,\n\t\t\t\tInstalledSize: 94208,\n\t\t\t\tDependencies:  []string{\"foo\", \"bar\"},\n\t\t\t\tChecksum:      \"Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\",\n\t\t\t\tGitCommit:     \"d7ae612a3cc5f827289d915783b4cbf8c7207947\",\n\t\t\t\tFiles:         []ApkFileRecord{{Path: \"/usr\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single string dependencies\",\n\t\t\tinput: `{\n\"package\": \"scanelf\",\n\"originPackage\": \"pax-utils\",\n\"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n\"version\": \"1.3.4-r0\",\n\"license\": \"GPL-2.0-only\",\n\"architecture\": \"x86_64\",\n\"url\": \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n\"description\": \"Scan ELF binaries for stuff\",\n\"size\": 36745,\n\"installedSize\": 94208,\n\"pullChecksum\": \"Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\",\n\"gitCommitOfApkPort\": \"d7ae612a3cc5f827289d915783b4cbf8c7207947\",\n\"files\": [\n {\n  \"path\": \"/usr\"\n }\n],\n\"pullDependencies\": \"foo bar\"\n}`,\n\t\t\twant: ApkDBEntry{\n\t\t\t\tPackage:       \"scanelf\",\n\t\t\t\tOriginPackage: \"pax-utils\",\n\t\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\t\tVersion:       \"1.3.4-r0\",\n\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\tURL:           \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n\t\t\t\tDescription:   \"Scan ELF binaries for stuff\",\n\t\t\t\tSize:          36745,\n\t\t\t\tInstalledSize: 94208,\n\t\t\t\tDependencies:  []string{\"foo\", \"bar\"},\n\t\t\t\tChecksum:      \"Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\",\n\t\t\t\tGitCommit:     \"d7ae612a3cc5f827289d915783b4cbf8c7207947\",\n\t\t\t\tFiles:         []ApkFileRecord{{Path: \"/usr\"}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"null pullDependencies\",\n\t\t\tinput: `{\n\"pullDependencies\": null\n}`,\n\t\t\twant: ApkDBEntry{\n\t\t\t\tDependencies: nil,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tvar got ApkDBEntry\n\t\t\terr := json.Unmarshal([]byte(tt.input), &got)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestSpaceDelimitedStringSlice_UnmarshalJSON(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tdata    string\n\t\twant    []string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"empty string\",\n\t\t\tdata: `\"\"`,\n\t\t\twant: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"single string with one elements\",\n\t\t\tdata: `\"foo\"`,\n\t\t\twant: []string{\"foo\"},\n\t\t},\n\t\t{\n\t\t\tname: \"single string with multiple elements\",\n\t\t\tdata: `\"foo bar\"`,\n\t\t\twant: []string{\"foo\", \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname: \"string array\",\n\t\t\tdata: `[\"foo\", \"bar\"]`,\n\t\t\twant: []string{\"foo\", \"bar\"},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\telement := spaceDelimitedStringSlice{}\n\t\t\ttt.wantErr(t, element.UnmarshalJSON([]byte(tt.data)))\n\t\t\tassert.Equal(t, tt.want, []string(element))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/binary.go",
    "content": "package pkg\n\nimport \"github.com/anchore/syft/syft/file\"\n\n// BinarySignature represents a set of matched values within a binary file.\ntype BinarySignature struct {\n\tMatches []ClassifierMatch `mapstructure:\"Matches\" json:\"matches\"`\n}\n\n// ClassifierMatch represents a single matched value within a binary file and the \"class\" name the search pattern represents.\ntype ClassifierMatch struct {\n\tClassifier string        `mapstructure:\"Classifier\" json:\"classifier\"`\n\tLocation   file.Location `mapstructure:\"Location\" json:\"location\"`\n}\n\n// ELFBinaryPackageNoteJSONPayload Represents metadata captured from the .note.package section of an ELF-formatted binary\ntype ELFBinaryPackageNoteJSONPayload struct {\n\t// (these are well-known fields as defined by systemd ELF package metadata \"spec\" https://systemd.io/ELF_PACKAGE_METADATA/)\n\n\t// Type is the type of the package (e.g. \"rpm\", \"deb\", \"apk\", etc.)\n\tType string `json:\"type,omitempty\"`\n\n\t// Architecture of the binary package (e.g. \"amd64\", \"arm\", etc.)\n\tArchitecture string `json:\"architecture,omitempty\"`\n\n\t// OSCPE is a CPE name for the OS, typically corresponding to CPE_NAME in os-release (e.g. cpe:/o:fedoraproject:fedora:33)\n\t//\n\t// Deprecated: in Syft 2.0 the struct tag will be corrected to `osCpe` to match the systemd spec casing.\n\tOSCPE string `json:\"osCPE,omitempty\"`\n\n\t// AppCpe is a CPE name for the upstream Application, as found in NVD CPE search (e.g. cpe:2.3:a:gnu:coreutils:5.0)\n\tAppCpe string `json:\"appCpe,omitempty\"`\n\n\t// OS is the OS name, typically corresponding to ID in os-release (e.g. \"fedora\")\n\tOS string `json:\"os,omitempty\"`\n\n\t// osVersion is the version of the OS, typically corresponding to VERSION_ID in os-release (e.g. \"33\")\n\tOSVersion string `json:\"osVersion,omitempty\"`\n\n\t/////////////////////////////////////////////////////////////////////////////////\n\t// (these are additional fields that are not part of the systemd spec)\n\n\t// System is a context-specific name for the system that the binary package is intended to run on or a part of\n\tSystem string `json:\"system,omitempty\"`\n\n\t// Vendor is the individual or organization that produced the source code for the binary\n\tVendor string `json:\"vendor,omitempty\"`\n\n\t// SourceRepo is the URL to the source repository for which the binary was built from\n\tSourceRepo string `json:\"sourceRepo,omitempty\"`\n\n\t// Commit is the commit hash of the source repository for which the binary was built from\n\tCommit string `json:\"commit,omitempty\"`\n}\n\n// PEBinary represents metadata captured from a Portable Executable formatted binary (dll, exe, etc.)\ntype PEBinary struct {\n\t// VersionResources contains key-value pairs extracted from the PE file's version resource section (e.g., FileVersion, ProductName, CompanyName).\n\tVersionResources KeyValues\n}\n"
  },
  {
    "path": "syft/pkg/bitnami.go",
    "content": "package pkg\n\n// BitnamiSBOMEntry represents all captured data from Bitnami packages\n// described in Bitnami' SPDX files.\ntype BitnamiSBOMEntry struct {\n\t// Name is the package name as found in the Bitnami SPDX file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Architecture is the target CPU architecture (amd64 or arm64 in Bitnami images)\n\tArchitecture string `mapstructure:\"arch\" json:\"arch\"`\n\n\t// Distro is the distribution name this package is for (base OS like debian, ubuntu, etc.)\n\tDistro string `mapstructure:\"distro\" json:\"distro\"`\n\n\t// Revision is the Bitnami-specific package revision number (incremented for Bitnami rebuilds of same upstream version)\n\tRevision string `mapstructure:\"revision\" json:\"revision\"`\n\n\t// Version is the package version as found in the Bitnami SPDX file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// Path is the installation path in the filesystem where the package is located\n\tPath string `mapstructure:\"path\" json:\"path\"`\n\n\t// Files are the file paths owned by this package (tracked via SPDX relationships)\n\tFiles []string `mapstructure:\"files\" json:\"files\"`\n}\n\nfunc (b BitnamiSBOMEntry) OwnedFiles() (result []string) {\n\treturn b.Files\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/.gitignore",
    "content": "# these are generated by pkgtest helpers, no need to check them in\n**/test-fixtures/test-observations.json\n**/testdata/test-observations.json"
  },
  {
    "path": "syft/pkg/cataloger/ai/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: ai # MANUAL\n    name: gguf-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/ai/cataloger.go\n      function: NewGGUFCataloger\n    selectors: # AUTO-GENERATED\n      - ai\n      - directory\n      - gguf\n      - image\n      - ml\n      - model\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseGGUFModel\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.gguf'\n        metadata_types: # AUTO-GENERATED\n          - pkg.GGUFFileHeader\n        package_types: # AUTO-GENERATED\n          - model\n        json_schema_types: # AUTO-GENERATED\n          - GgufFileHeader\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - GGUFFileHeader.MetadataKeyValuesHash\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/cataloger.go",
    "content": "/*\nPackage ai provides concrete Cataloger implementations for AI artifacts and machine learning models,\nincluding support for GGUF (GPT-Generated Unified Format) model files.\n*/\npackage ai\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst (\n\tcatalogerName      = \"gguf-cataloger\"\n\tggufLayerMediaType = \"application/vnd.docker.ai*\"\n)\n\n// NewGGUFCataloger returns a new cataloger instance for GGUF model files.\n// It supports both traditional file-based discovery and OCI layer-aware discovery\n// when the source for the SBOM is the oci model source\nfunc NewGGUFCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\tWithParserByGlobs(parseGGUFModel, \"**/*.gguf\").\n\t\tWithParserByMediaType(parseGGUFModel, ggufLayerMediaType).\n\t\tWithProcessors(ggufMergeProcessor)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/cataloger_test.go",
    "content": "package ai\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestGGUFCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain gguf files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"models/model.gguf\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewGGUFCataloger())\n\t\t})\n\t}\n}\n\nfunc TestGGUFCataloger(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tsetup                 func(t *testing.T) string\n\t\texpectedPackages      []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"catalog single GGUF file\",\n\t\t\tsetup: func(t *testing.T) string {\n\t\t\t\tdir := t.TempDir()\n\t\t\t\tdata := newTestGGUFBuilder().\n\t\t\t\t\twithVersion(3).\n\t\t\t\t\twithStringKV(\"general.architecture\", \"llama\").\n\t\t\t\t\twithStringKV(\"general.name\", \"llama3-8b\").\n\t\t\t\t\twithStringKV(\"general.version\", \"3.0\").\n\t\t\t\t\twithStringKV(\"general.license\", \"Apache-2.0\").\n\t\t\t\t\twithStringKV(\"general.quantization\", \"Q4_K_M\").\n\t\t\t\t\twithUint64KV(\"general.parameter_count\", 8030000000).\n\t\t\t\t\twithStringKV(\"general.some_random_kv\", \"foobar\").\n\t\t\t\t\tbuild()\n\n\t\t\t\tpath := filepath.Join(dir, \"llama3-8b.gguf\")\n\t\t\t\tos.WriteFile(path, data, 0644)\n\t\t\t\treturn dir\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"llama3-8b\",\n\t\t\t\t\tVersion: \"3.0\",\n\t\t\t\t\tType:    pkg.ModelPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromFields(\"Apache-2.0\", \"\", nil),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GGUFFileHeader{\n\t\t\t\t\t\tArchitecture:          \"llama\",\n\t\t\t\t\t\tQuantization:          \"Unknown\",\n\t\t\t\t\t\tParameters:            0,\n\t\t\t\t\t\tGGUFVersion:           3,\n\t\t\t\t\t\tTensorCount:           0,\n\t\t\t\t\t\tMetadataKeyValuesHash: \"6e3d368066455ce4\",\n\t\t\t\t\t\tRemainingKeyValues: map[string]interface{}{\n\t\t\t\t\t\t\t\"general.some_random_kv\": \"foobar\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"catalog GGUF file with minimal metadata\",\n\t\t\tsetup: func(t *testing.T) string {\n\t\t\t\tdir := t.TempDir()\n\t\t\t\tdata := newTestGGUFBuilder().\n\t\t\t\t\twithVersion(3).\n\t\t\t\t\twithStringKV(\"general.architecture\", \"gpt2\").\n\t\t\t\t\twithStringKV(\"general.name\", \"gpt2-small\").\n\t\t\t\t\twithStringKV(\"gpt2.context_length\", \"1024\").\n\t\t\t\t\twithUint32KV(\"gpt2.embedding_length\", 768).\n\t\t\t\t\tbuild()\n\n\t\t\t\tpath := filepath.Join(dir, \"gpt2-small.gguf\")\n\t\t\t\tos.WriteFile(path, data, 0644)\n\t\t\t\treturn dir\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"gpt2-small\",\n\t\t\t\t\tVersion:  \"\",\n\t\t\t\t\tType:     pkg.ModelPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t\t\tMetadata: pkg.GGUFFileHeader{\n\t\t\t\t\t\tArchitecture:          \"gpt2\",\n\t\t\t\t\t\tQuantization:          \"Unknown\",\n\t\t\t\t\t\tParameters:            0,\n\t\t\t\t\t\tGGUFVersion:           3,\n\t\t\t\t\t\tTensorCount:           0,\n\t\t\t\t\t\tMetadataKeyValuesHash: \"9dc6f23591062a27\",\n\t\t\t\t\t\tRemainingKeyValues: map[string]interface{}{\n\t\t\t\t\t\t\t\"gpt2.context_length\":   \"1024\",\n\t\t\t\t\t\t\t\"gpt2.embedding_length\": uint32(768),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfixtureDir := tt.setup(t)\n\n\t\t\t// Use pkgtest to catalog and compare\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, fixtureDir).\n\t\t\t\tExpects(tt.expectedPackages, tt.expectedRelationships).\n\t\t\t\tIgnoreLocationLayer().\n\t\t\t\tIgnorePackageFields(\"FoundBy\", \"Locations\").\n\t\t\t\tTestCataloger(t, NewGGUFCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/package.go",
    "content": "package ai\n\nimport (\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newGGUFPackage(metadata *pkg.GGUFFileHeader, modelName, version, license string, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      modelName,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tType:      pkg.ModelPkg,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromValues(license)...),\n\t\tMetadata:  *metadata,\n\t\t// NOTE: PURL is intentionally not set as the package-url spec\n\t\t// has not yet finalized support for ML model packages\n\t}\n\tp.SetID()\n\n\treturn p\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/package_test.go",
    "content": "package ai\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestNewGGUFPackage(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata *pkg.GGUFFileHeader\n\t\tinput    struct {\n\t\t\tmodelName string\n\t\t\tversion   string\n\t\t\tlicense   string\n\t\t\tlocations []file.Location\n\t\t}\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"complete GGUF package with all fields\",\n\t\t\tinput: struct {\n\t\t\t\tmodelName string\n\t\t\t\tversion   string\n\t\t\t\tlicense   string\n\t\t\t\tlocations []file.Location\n\t\t\t}{\n\t\t\t\tmodelName: \"llama3-8b\",\n\t\t\t\tversion:   \"3.0\",\n\t\t\t\tlicense:   \"Apache-2.0\",\n\t\t\t\tlocations: []file.Location{file.NewLocation(\"/models/llama3-8b.gguf\")},\n\t\t\t},\n\t\t\tmetadata: &pkg.GGUFFileHeader{\n\t\t\t\tArchitecture: \"llama\",\n\t\t\t\tQuantization: \"Q4_K_M\",\n\t\t\t\tParameters:   8030000000,\n\t\t\t\tGGUFVersion:  3,\n\t\t\t\tTensorCount:  291,\n\t\t\t\tRemainingKeyValues: map[string]any{\n\t\t\t\t\t\"general.random_kv\": \"foobar\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"llama3-8b\",\n\t\t\t\tVersion: \"3.0\",\n\t\t\t\tType:    pkg.ModelPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromFields(\"Apache-2.0\", \"\", nil),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.GGUFFileHeader{\n\t\t\t\t\tArchitecture: \"llama\",\n\t\t\t\t\tQuantization: \"Q4_K_M\",\n\t\t\t\t\tParameters:   8030000000,\n\t\t\t\t\tGGUFVersion:  3,\n\t\t\t\t\tTensorCount:  291,\n\t\t\t\t\tRemainingKeyValues: map[string]any{\n\t\t\t\t\t\t\"general.random_kv\": \"foobar\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/models/llama3-8b.gguf\")),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"minimal GGUF package\",\n\t\t\tinput: struct {\n\t\t\t\tmodelName string\n\t\t\t\tversion   string\n\t\t\t\tlicense   string\n\t\t\t\tlocations []file.Location\n\t\t\t}{\n\t\t\t\tmodelName: \"gpt2-small\",\n\t\t\t\tversion:   \"1.0\",\n\t\t\t\tlicense:   \"MIT\",\n\t\t\t\tlocations: []file.Location{file.NewLocation(\"/models/simple.gguf\")},\n\t\t\t},\n\t\t\tmetadata: &pkg.GGUFFileHeader{\n\t\t\t\tArchitecture: \"gpt2\",\n\t\t\t\tGGUFVersion:  3,\n\t\t\t\tTensorCount:  50,\n\t\t\t},\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"gpt2-small\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tType:    pkg.ModelPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromFields(\"MIT\", \"\", nil),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.GGUFFileHeader{\n\t\t\t\t\tArchitecture: \"gpt2\",\n\t\t\t\t\tGGUFVersion:  3,\n\t\t\t\t\tTensorCount:  50,\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/models/simple.gguf\")),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := newGGUFPackage(\n\t\t\t\ttt.metadata,\n\t\t\t\ttt.input.modelName,\n\t\t\t\ttt.input.version,\n\t\t\t\ttt.input.license,\n\t\t\t\ttt.input.locations...,\n\t\t\t)\n\n\t\t\t// Verify metadata type\n\t\t\t_, ok := actual.Metadata.(pkg.GGUFFileHeader)\n\t\t\trequire.True(t, ok, \"metadata should be GGUFFileHeader\")\n\n\t\t\t// Use AssertPackagesEqual for comprehensive comparison\n\t\t\tpkgtest.AssertPackagesEqual(t, tt.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/parse_gguf.go",
    "content": "package ai\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\n\tgguf_parser \"github.com/gpustack/gguf-parser-go\"\n)\n\n// GGUF file format constants\nconst (\n\tggufMagicNumber = 0x46554747       // \"GGUF\" in little-endian\n\tmaxHeaderSize   = 50 * 1024 * 1024 // 50MB for large tokenizer vocabularies\n)\n\n// copyHeader copies the GGUF header from the reader to the writer.\n// It validates the magic number first, then copies the rest of the data.\n// The reader should be wrapped with io.LimitedReader to prevent OOM issues.\nfunc copyHeader(w io.Writer, r io.Reader) error {\n\t// Read initial chunk to validate magic number\n\t// GGUF format: magic(4) + version(4) + tensor_count(8) + metadata_kv_count(8) + metadata_kvs + tensors_info\n\tinitialBuf := make([]byte, 24) // Enough for magic, version, tensor count, and kv count\n\tif _, err := io.ReadFull(r, initialBuf); err != nil {\n\t\treturn fmt.Errorf(\"failed to read GGUF header prefix: %w\", err)\n\t}\n\n\t// Verify magic number\n\tmagic := binary.LittleEndian.Uint32(initialBuf[0:4])\n\tif magic != ggufMagicNumber {\n\t\treturn fmt.Errorf(\"invalid GGUF magic number: 0x%08X\", magic)\n\t}\n\n\t// Write the initial buffer to the writer\n\tif _, err := w.Write(initialBuf); err != nil {\n\t\treturn fmt.Errorf(\"failed to write GGUF header prefix: %w\", err)\n\t}\n\n\t// Copy the rest of the header from reader to writer\n\t// The LimitedReader will return EOF once maxHeaderSize is reached\n\tif _, err := io.Copy(w, r); err != nil {\n\t\treturn fmt.Errorf(\"failed to copy GGUF header: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// Helper to convert gguf_parser metadata to simpler types\nfunc convertGGUFMetadataKVs(kvs gguf_parser.GGUFMetadataKVs) map[string]interface{} {\n\tresult := make(map[string]interface{})\n\n\tfor _, kv := range kvs {\n\t\t// Skip standard fields that are extracted separately\n\t\tswitch kv.Key {\n\t\tcase \"general.architecture\", \"general.name\", \"general.license\",\n\t\t\t\"general.version\", \"general.parameter_count\", \"general.quantization\":\n\t\t\tcontinue\n\t\t}\n\t\tresult[kv.Key] = kv.Value\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/parse_gguf_model.go",
    "content": "package ai\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/cespare/xxhash/v2\"\n\tgguf_parser \"github.com/gpustack/gguf-parser-go\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// parseGGUFModel parses a GGUF model file and returns the discovered package.\n// This implementation only reads the header portion of the file, not the entire model.\nfunc parseGGUFModel(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdefer internal.CloseAndLogError(reader, reader.Path())\n\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\ttempFile, cleanup, err := td.NewFile(\"syft-gguf-*.gguf\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create temp file: %w\", err)\n\t}\n\tdefer cleanup()\n\ttempPath := tempFile.Name()\n\n\t// Copy and validate the GGUF file header using LimitedReader to prevent OOM\n\t// We use LimitedReader to cap reads at maxHeaderSize (50MB)\n\tlimitedReader := &io.LimitedReader{R: reader, N: maxHeaderSize}\n\tif err := copyHeader(tempFile, limitedReader); err != nil {\n\t\ttempFile.Close()\n\t\treturn nil, nil, fmt.Errorf(\"failed to copy GGUF header: %w\", err)\n\t}\n\ttempFile.Close()\n\n\t// Parse using gguf-parser-go with options to skip unnecessary data\n\tggufFile, err := gguf_parser.ParseGGUFFile(tempPath,\n\t\tgguf_parser.SkipLargeMetadata(),\n\t)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse GGUF file: %w\", err)\n\t}\n\n\t// Extract metadata\n\tmetadata := ggufFile.Metadata()\n\n\t// Extract version separately (will be set on Package.Version)\n\tmodelVersion := extractVersion(ggufFile.Header.MetadataKV)\n\n\t// Convert to syft metadata structure\n\tsyftMetadata := &pkg.GGUFFileHeader{\n\t\tArchitecture:          metadata.Architecture,\n\t\tQuantization:          metadata.FileTypeDescriptor,\n\t\tParameters:            uint64(metadata.Parameters),\n\t\tGGUFVersion:           uint32(ggufFile.Header.Version),\n\t\tTensorCount:           ggufFile.Header.TensorCount,\n\t\tRemainingKeyValues:    convertGGUFMetadataKVs(ggufFile.Header.MetadataKV),\n\t\tMetadataKeyValuesHash: computeKVMetadataHash(ggufFile.Header.MetadataKV),\n\t}\n\n\t// If model name is not in metadata, use filename\n\tif metadata.Name == \"\" {\n\t\tmetadata.Name = extractModelNameFromPath(reader.Path())\n\t}\n\n\t// Create package from metadata\n\tp := newGGUFPackage(\n\t\tsyftMetadata,\n\t\tmetadata.Name,\n\t\tmodelVersion,\n\t\tmetadata.License,\n\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t)\n\n\treturn []pkg.Package{p}, nil, unknown.IfEmptyf([]pkg.Package{p}, \"unable to parse GGUF file\")\n}\n\n// computeKVMetadataHash computes a stable hash of the KV metadata for use as a global identifier\nfunc computeKVMetadataHash(metadata gguf_parser.GGUFMetadataKVs) string {\n\t// Sort the KV pairs by key for stable hashing\n\tsortedKVs := make([]gguf_parser.GGUFMetadataKV, len(metadata))\n\tcopy(sortedKVs, metadata)\n\tsort.Slice(sortedKVs, func(i, j int) bool {\n\t\treturn sortedKVs[i].Key < sortedKVs[j].Key\n\t})\n\n\t// Marshal sorted KVs to JSON for stable hashing\n\tjsonBytes, err := json.Marshal(sortedKVs)\n\tif err != nil {\n\t\tlog.Debugf(\"failed to marshal metadata for hashing: %v\", err)\n\t\treturn \"\"\n\t}\n\n\t// Compute xxhash\n\thash := xxhash.Sum64(jsonBytes)\n\treturn fmt.Sprintf(\"%016x\", hash) // 16 hex chars (64 bits)\n}\n\n// extractVersion attempts to extract version from metadata KV pairs\nfunc extractVersion(kvs gguf_parser.GGUFMetadataKVs) string {\n\tfor _, kv := range kvs {\n\t\tif kv.Key == \"general.version\" {\n\t\t\tif v, ok := kv.Value.(string); ok && v != \"\" {\n\t\t\t\treturn v\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// extractModelNameFromPath extracts the model name from the file path\nfunc extractModelNameFromPath(path string) string {\n\t// we do not want to return a name from filepath if it's not a distinct gguf file\n\tif !strings.Contains(path, \".gguf\") {\n\t\treturn \"\"\n\t}\n\t// Get the base filename\n\tbase := filepath.Base(path)\n\n\t// Remove .gguf extension\n\tname := strings.TrimSuffix(base, \".gguf\")\n\n\treturn name\n}\n\n// integrity check\nvar _ generic.Parser = parseGGUFModel\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/processor.go",
    "content": "package ai\n\nimport (\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// ggufMergeProcessor consolidates multiple GGUF packages into a single package\n// representing the AI model. When scanning OCI images with multiple layers,\n// each layer may produce a separate package. This processor finds the package\n// with a name and merges metadata from nameless packages into its GGUFFileParts field.\n// Only packages with a non-empty name are returned in the final result.\nfunc ggufMergeProcessor(pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\tif err != nil {\n\t\treturn pkgs, rels, err\n\t}\n\n\tif len(pkgs) == 0 {\n\t\treturn pkgs, rels, err\n\t}\n\n\t// Separate packages with names from those without\n\tvar namedPkgs []pkg.Package\n\tvar namelessHeaders []pkg.GGUFFileHeader\n\n\tfor _, p := range pkgs {\n\t\tif p.Name != \"\" {\n\t\t\tnamedPkgs = append(namedPkgs, p)\n\t\t} else {\n\t\t\tif header, ok := p.Metadata.(pkg.GGUFFileHeader); ok {\n\t\t\t\t// We do not want a kv hash for nameless headers\n\t\t\t\theader.MetadataKeyValuesHash = \"\"\n\t\t\t\tnamelessHeaders = append(namelessHeaders, header)\n\t\t\t}\n\t\t}\n\t}\n\n\t// If there are no named packages, return nothing\n\tif len(namedPkgs) == 0 {\n\t\treturn nil, rels, err\n\t}\n\n\t// merge nameless headers into a single named package;\n\t// if there are multiple named packages, return them without trying to merge headers.\n\t// we cannot determine which nameless headers belong to which package\n\t// this is because the order we receive the gguf headers in is not guaranteed\n\t// to match the layer order in the original oci image\n\tif len(namedPkgs) == 1 && len(namelessHeaders) > 0 {\n\t\twinner := &namedPkgs[0]\n\t\tif header, ok := winner.Metadata.(pkg.GGUFFileHeader); ok {\n\t\t\theader.Parts = namelessHeaders\n\t\t\twinner.Metadata = header\n\t\t}\n\t}\n\n\t// Largest number of key value\n\n\treturn namedPkgs, rels, err\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/processor_test.go",
    "content": "package ai\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_ggufMergeProcessor(t *testing.T) {\n\ttests := []struct {\n\t\tname              string\n\t\tpkgs              []pkg.Package\n\t\twantPkgCount      int\n\t\twantFilePartCount int\n\t}{\n\t\t{\n\t\t\tname: \"single named package merges nameless headers\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{Name: \"model\", Metadata: pkg.GGUFFileHeader{MetadataKeyValuesHash: \"abc\"}},\n\t\t\t\t{Name: \"\", Metadata: pkg.GGUFFileHeader{MetadataKeyValuesHash: \"part1\"}},\n\t\t\t\t{Name: \"\", Metadata: pkg.GGUFFileHeader{MetadataKeyValuesHash: \"part2\"}},\n\t\t\t},\n\t\t\twantPkgCount:      1,\n\t\t\twantFilePartCount: 2,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple named packages returns all without merging\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{Name: \"model1\", Metadata: pkg.GGUFFileHeader{}},\n\t\t\t\t{Name: \"model2\", Metadata: pkg.GGUFFileHeader{}},\n\t\t\t\t{Name: \"\", Metadata: pkg.GGUFFileHeader{}},\n\t\t\t},\n\t\t\twantPkgCount:      2,\n\t\t\twantFilePartCount: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"no named packages returns empty result\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{Name: \"\", Metadata: pkg.GGUFFileHeader{}},\n\t\t\t\t{Name: \"\", Metadata: pkg.GGUFFileHeader{}},\n\t\t\t},\n\t\t\twantPkgCount:      0,\n\t\t\twantFilePartCount: 0,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot, _, err := ggufMergeProcessor(test.pkgs, nil, nil)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, got, test.wantPkgCount)\n\n\t\t\tif test.wantPkgCount == 1 && test.wantFilePartCount > 0 {\n\t\t\t\theader, ok := got[0].Metadata.(pkg.GGUFFileHeader)\n\t\t\t\trequire.True(t, ok)\n\t\t\t\tassert.Len(t, header.Parts, test.wantFilePartCount)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/test_helpers_test.go",
    "content": "package ai\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n)\n\n// GGUF type constants for test builder\n// https://github.com/ggml-org/ggml/blob/master/docs/gguf.md\nconst (\n\tggufMagic       = 0x46554747 // \"GGUF\" in little-endian\n\tggufTypeUint8   = 0\n\tggufTypeInt8    = 1\n\tggufTypeUint16  = 2\n\tggufTypeInt16   = 3\n\tggufTypeUint32  = 4\n\tggufTypeInt32   = 5\n\tggufTypeFloat32 = 6\n\tggufTypeBool    = 7\n\tggufTypeString  = 8\n\tggufTypeArray   = 9\n\tggufTypeUint64  = 10\n\tggufTypeInt64   = 11\n\tggufTypeFloat64 = 12\n)\n\n// testGGUFBuilder helps build GGUF files for testing\ntype testGGUFBuilder struct {\n\tbuf         *bytes.Buffer\n\tversion     uint32\n\ttensorCount uint64\n\tkvPairs     []testKVPair\n}\n\ntype testKVPair struct {\n\tkey       string\n\tvalueType uint32\n\tvalue     interface{}\n}\n\nfunc newTestGGUFBuilder() *testGGUFBuilder {\n\treturn &testGGUFBuilder{\n\t\tbuf:         new(bytes.Buffer),\n\t\tversion:     3,\n\t\ttensorCount: 0,\n\t\tkvPairs:     []testKVPair{},\n\t}\n}\n\nfunc (b *testGGUFBuilder) withVersion(v uint32) *testGGUFBuilder {\n\tb.version = v\n\treturn b\n}\n\nfunc (b *testGGUFBuilder) withTensorCount(count uint64) *testGGUFBuilder {\n\tb.tensorCount = count\n\treturn b\n}\n\nfunc (b *testGGUFBuilder) withStringKV(key, value string) *testGGUFBuilder {\n\tb.kvPairs = append(b.kvPairs, testKVPair{key: key, valueType: ggufTypeString, value: value})\n\treturn b\n}\n\nfunc (b *testGGUFBuilder) withUint64KV(key string, value uint64) *testGGUFBuilder {\n\tb.kvPairs = append(b.kvPairs, testKVPair{key: key, valueType: ggufTypeUint64, value: value})\n\treturn b\n}\n\nfunc (b *testGGUFBuilder) withUint32KV(key string, value uint32) *testGGUFBuilder {\n\tb.kvPairs = append(b.kvPairs, testKVPair{key: key, valueType: ggufTypeUint32, value: value})\n\treturn b\n}\n\nfunc (b *testGGUFBuilder) writeString(s string) {\n\tbinary.Write(b.buf, binary.LittleEndian, uint64(len(s)))\n\tb.buf.WriteString(s)\n}\n\nfunc (b *testGGUFBuilder) build() []byte {\n\t// Write magic number \"GGUF\"\n\tbinary.Write(b.buf, binary.LittleEndian, uint32(ggufMagic))\n\n\t// Write version\n\tbinary.Write(b.buf, binary.LittleEndian, b.version)\n\n\t// Write tensor count\n\tbinary.Write(b.buf, binary.LittleEndian, b.tensorCount)\n\n\t// Write KV count\n\tbinary.Write(b.buf, binary.LittleEndian, uint64(len(b.kvPairs)))\n\n\t// Write KV pairs\n\tfor _, kv := range b.kvPairs {\n\t\t// Write key\n\t\tb.writeString(kv.key)\n\t\t// Write value type\n\t\tbinary.Write(b.buf, binary.LittleEndian, kv.valueType)\n\t\t// Write value based on type\n\t\tswitch kv.valueType {\n\t\tcase ggufTypeString:\n\t\t\tb.writeString(kv.value.(string))\n\t\tcase ggufTypeUint32:\n\t\t\tbinary.Write(b.buf, binary.LittleEndian, kv.value.(uint32))\n\t\tcase ggufTypeUint64:\n\t\t\tbinary.Write(b.buf, binary.LittleEndian, kv.value.(uint64))\n\t\tcase ggufTypeUint8:\n\t\t\tbinary.Write(b.buf, binary.LittleEndian, kv.value.(uint8))\n\t\tcase ggufTypeInt32:\n\t\t\tbinary.Write(b.buf, binary.LittleEndian, kv.value.(int32))\n\t\tcase ggufTypeBool:\n\t\t\tvar v uint8\n\t\t\tif kv.value.(bool) {\n\t\t\t\tv = 1\n\t\t\t}\n\t\t\tbinary.Write(b.buf, binary.LittleEndian, v)\n\t\t}\n\t}\n\n\treturn b.buf.Bytes()\n}\n\n// buildInvalidMagic creates a file with invalid magic number\nfunc (b *testGGUFBuilder) buildInvalidMagic() []byte {\n\tbuf := new(bytes.Buffer)\n\tbinary.Write(buf, binary.LittleEndian, uint32(0x12345678))\n\treturn buf.Bytes()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ai/testdata/glob-paths/models/model.gguf",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/alpine/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: alpine # MANUAL\n    name: apk-db-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/alpine/cataloger.go\n      function: NewDBCataloger\n    selectors: # AUTO-GENERATED\n      - alpine\n      - apk\n      - directory\n      - image\n      - installed\n      - linux\n      - os\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseApkDB\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/lib/apk/db/installed'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ApkDBEntry\n        package_types: # AUTO-GENERATED\n          - apk\n        json_schema_types: # AUTO-GENERATED\n          - ApkDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - ApkDBEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - ApkDBEntry.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - ApkDBEntry.Checksum\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/cataloger.go",
    "content": "/*\nPackage alpine provides a concrete Cataloger implementations for packages relating to the Alpine linux distribution.\n*/\npackage alpine\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// NewDBCataloger returns a new cataloger object initialized for Alpine package DB flat-file stores.\nfunc NewDBCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"apk-db-cataloger\").\n\t\tWithParserByGlobs(parseApkDB, pkg.ApkDBGlob).\n\t\tWithProcessors(dependency.Processor(dbEntryDependencySpecifier))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/cataloger_test.go",
    "content": "package alpine\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestApkDBCataloger(t *testing.T) {\n\tdbLocation := file.NewLocation(\"lib/apk/db/installed\")\n\tctx := context.TODO()\n\tbashPkg := pkg.Package{\n\t\tName:    \"bash\",\n\t\tVersion: \"5.2.21-r0\",\n\t\tType:    pkg.ApkPkg,\n\t\tFoundBy: \"apk-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-3.0-or-later\", dbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(dbLocation),\n\t\tMetadata: pkg.ApkDBEntry{\n\t\t\tPackage:       \"bash\",\n\t\t\tOriginPackage: \"bash\",\n\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\tVersion:       \"5.2.21-r0\",\n\t\t\tArchitecture:  \"x86_64\",\n\t\t\tURL:           \"https://www.gnu.org/software/bash/bash.html\",\n\t\t\tDescription:   \"The GNU Bourne Again shell\",\n\t\t\tSize:          448728,\n\t\t\tInstalledSize: 1396736,\n\t\t\tDependencies: []string{\n\t\t\t\t\"/bin/sh\", \"so:libc.musl-x86_64.so.1\", \"so:libreadline.so.8\",\n\t\t\t},\n\t\t\tProvides: []string{\n\t\t\t\t\"cmd:bash=5.2.21-r0\",\n\t\t\t},\n\t\t\t// note: files not provided and not under test\n\t\t},\n\t}\n\n\tbusyboxBinshPkg := pkg.Package{\n\t\tName:    \"busybox-binsh\",\n\t\tVersion: \"1.36.1-r15\",\n\t\tType:    pkg.ApkPkg,\n\t\tFoundBy: \"apk-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-2.0-only\", dbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(dbLocation),\n\t\tMetadata: pkg.ApkDBEntry{\n\t\t\tPackage:       \"busybox-binsh\",\n\t\t\tOriginPackage: \"busybox\",\n\t\t\tMaintainer:    \"Sören Tempel <soeren+alpine@soeren-tempel.net>\",\n\t\t\tVersion:       \"1.36.1-r15\",\n\t\t\tArchitecture:  \"x86_64\",\n\t\t\tURL:           \"https://busybox.net/\",\n\t\t\tDescription:   \"busybox ash /bin/sh\",\n\t\t\tSize:          1543,\n\t\t\tInstalledSize: 8192,\n\t\t\tDependencies: []string{\n\t\t\t\t\"busybox=1.36.1-r15\",\n\t\t\t},\n\t\t\tProvides: []string{\n\t\t\t\t\"/bin/sh\", \"cmd:sh=1.36.1-r15\",\n\t\t\t},\n\t\t\t// note: files not provided and not under test\n\t\t},\n\t}\n\n\tmuslPkg := pkg.Package{\n\t\tName:    \"musl\",\n\t\tVersion: \"1.2.4_git20230717-r4\",\n\t\tType:    pkg.ApkPkg,\n\t\tFoundBy: \"apk-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", dbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(dbLocation),\n\t\tMetadata: pkg.ApkDBEntry{\n\t\t\tPackage:       \"musl\",\n\t\t\tOriginPackage: \"musl\",\n\t\t\tMaintainer:    \"Timo Teräs <timo.teras@iki.fi>\",\n\t\t\tVersion:       \"1.2.4_git20230717-r4\",\n\t\t\tArchitecture:  \"x86_64\",\n\t\t\tURL:           \"https://musl.libc.org/\",\n\t\t\tDescription:   \"the musl c library (libc) implementation\",\n\t\t\tSize:          407278,\n\t\t\tInstalledSize: 667648,\n\t\t\tDependencies:  []string{},\n\t\t\tProvides: []string{\n\t\t\t\t\"so:libc.musl-x86_64.so.1=1\",\n\t\t\t},\n\t\t\t// note: files not provided and not under test\n\t\t},\n\t}\n\n\treadlinePkg := pkg.Package{\n\t\tName:    \"readline\",\n\t\tVersion: \"8.2.1-r2\",\n\t\tType:    pkg.ApkPkg,\n\t\tFoundBy: \"apk-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-2.0-or-later\", dbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(dbLocation),\n\t\tMetadata: pkg.ApkDBEntry{\n\t\t\tPackage:       \"readline\",\n\t\t\tOriginPackage: \"readline\",\n\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\tVersion:       \"8.2.1-r2\",\n\t\t\tArchitecture:  \"x86_64\",\n\t\t\tURL:           \"https://tiswww.cwru.edu/php/chet/readline/rltop.html\",\n\t\t\tDescription:   \"GNU readline library\",\n\t\t\tSize:          119878,\n\t\t\tInstalledSize: 303104,\n\t\t\tDependencies: []string{\n\t\t\t\t\"so:libc.musl-x86_64.so.1\", \"so:libncursesw.so.6\",\n\t\t\t},\n\t\t\tProvides: []string{\n\t\t\t\t\"so:libreadline.so.8=8.2\",\n\t\t\t},\n\t\t\t// note: files not provided and not under test\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\tbashPkg,\n\t\tbusyboxBinshPkg,\n\t\tmuslPkg,\n\t\treadlinePkg,\n\t}\n\n\t// # apk info --depends bash\n\t//   bash-5.2.21-r0 depends on:\n\t//   /bin/sh\n\t//   so:libc.musl-x86_64.so.1\n\t//   so:libreadline.so.8\n\t//\n\t// # apk info --who-owns /bin/sh\n\t//   /bin/sh is owned by busybox-binsh-1.36.1-r15\n\t//\n\t// # find / | grep musl\n\t//   /lib/ld-musl-x86_64.so.1\n\t//   /lib/libc.musl-x86_64.so.1\n\t//\n\t// # apk info --who-owns '/lib/libc.musl-x86_64.so.1'\n\t//   /lib/libc.musl-x86_64.so.1 is owned by musl-1.2.4_git20230717-r4\n\t//\n\t// # find / | grep libreadline\n\t//   /usr/lib/libreadline.so.8.2\n\t//   /usr/lib/libreadline.so.8\n\t//\n\t// # apk info --who-owns '/usr/lib/libreadline.so.8'\n\t//   /usr/lib/libreadline.so.8 is owned by readline-8.2.1-r2\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: busyboxBinshPkg,\n\t\t\tTo:   bashPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: readlinePkg,\n\t\t\tTo:   bashPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: muslPkg,\n\t\t\tTo:   readlinePkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: muslPkg,\n\t\t\tTo:   bashPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/multiple-1\").\n\t\tWithCompareOptions(cmpopts.IgnoreFields(pkg.ApkDBEntry{}, \"Files\", \"GitCommit\", \"Checksum\")).\n\t\tExpects(expectedPkgs, expectedRelationships).\n\t\tTestCataloger(t, NewDBCataloger())\n\n}\n\nfunc Test_corruptDb(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/corrupt\").\n\t\tWithCompareOptions(cmpopts.IgnoreFields(pkg.ApkDBEntry{}, \"Files\", \"GitCommit\", \"Checksum\")).\n\t\tWithError().\n\t\tTestCataloger(t, NewDBCataloger())\n}\n\nfunc TestCatalogerDependencyTree(t *testing.T) {\n\tassertion := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\texpected := map[string][]string{\n\t\t\t\"alpine-baselayout\": {\"busybox\", \"alpine-baselayout-data\", \"musl\"},\n\t\t\t\"apk-tools\":         {\"ca-certificates-bundle\", \"musl\", \"libcrypto1.1\", \"libssl1.1\", \"zlib\"},\n\t\t\t\"busybox\":           {\"musl\"},\n\t\t\t\"libc-utils\":        {\"musl-utils\"},\n\t\t\t\"libcrypto1.1\":      {\"musl\"},\n\t\t\t\"libssl1.1\":         {\"musl\", \"libcrypto1.1\"},\n\t\t\t\"musl-utils\":        {\"scanelf\", \"musl\"},\n\t\t\t\"scanelf\":           {\"musl\"},\n\t\t\t\"ssl_client\":        {\"musl\", \"libcrypto1.1\", \"libssl1.1\"},\n\t\t\t\"zlib\":              {\"musl\"},\n\t\t}\n\t\tpkgsByID := make(map[artifact.ID]pkg.Package)\n\t\tfor _, p := range pkgs {\n\t\t\tp.SetID()\n\t\t\tpkgsByID[p.ID()] = p\n\t\t}\n\n\t\tactualDependencies := make(map[string][]string)\n\n\t\tfor _, r := range relationships {\n\t\t\tswitch r.Type {\n\t\t\tcase artifact.DependencyOfRelationship:\n\t\t\t\tto := pkgsByID[r.To.ID()]\n\t\t\t\tfrom := pkgsByID[r.From.ID()]\n\t\t\t\tactualDependencies[to.Name] = append(actualDependencies[to.Name], from.Name)\n\t\t\tdefault:\n\t\t\t\tt.Fatalf(\"unexpected relationship type: %+v\", r.Type)\n\t\t\t}\n\t\t}\n\n\t\tif d := cmp.Diff(expected, actualDependencies); d != \"\" {\n\t\t\tt.Fail()\n\t\t\tt.Log(d)\n\t\t}\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/multiple-2\").\n\t\tExpectsAssertion(assertion).\n\t\tTestCataloger(t, NewDBCataloger())\n\n}\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"obtain DB files\",\n\t\t\tfixture:  \"testdata/glob-paths\",\n\t\t\texpected: []string{\"lib/apk/db/installed\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tIgnoreUnfulfilledPathResponses(\"etc/apk/repositories\").\n\t\t\t\tTestCataloger(t, NewDBCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/dependency.go",
    "content": "package alpine\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar _ dependency.Specifier = dbEntryDependencySpecifier\n\nfunc dbEntryDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.ApkDBEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract apk metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\tprovides = append(provides, stripVersionSpecifiers(meta.Provides)...)\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: stripVersionSpecifiers(meta.Dependencies),\n\t\t},\n\t}\n}\n\nfunc stripVersionSpecifiers(given []string) []string {\n\tvar keys []string\n\tfor _, key := range given {\n\t\tkey = stripVersionSpecifier(key)\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tkeys = append(keys, key)\n\t}\n\treturn keys\n}\n\nfunc stripVersionSpecifier(s string) string {\n\t// examples:\n\t// musl>=1                 --> musl\n\t// cmd:scanelf=1.3.4-r0    --> cmd:scanelf\n\n\treturn strings.TrimSpace(internal.SplitAny(s, \"<>=\")[0])\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/dependency_test.go",
    "content": "package alpine\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc Test_dbEntryDependencySpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"keeps given values + package name\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-c\",\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tProvides:     []string{\"a-thing\"},\n\t\t\t\t\tDependencies: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-c\", \"a-thing\"},\n\t\t\t\t\tRequires: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"strip version specifiers\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tProvides:     []string{\"so:libc.musl-x86_64.so.1=1\"},\n\t\t\t\t\tDependencies: []string{\"so:libc.musl-x86_64.so.2=2\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\", \"so:libc.musl-x86_64.so.1\"},\n\t\t\t\t\tRequires: []string{\"so:libc.musl-x86_64.so.2\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty dependency data entries\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tProvides:     []string{\"\"},\n\t\t\t\t\tDependencies: []string{\"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\"},\n\t\t\t\t\tRequires: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, dbEntryDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_stripVersionSpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tversion string\n\t\twant    string\n\t}{\n\t\t{\n\t\t\tname:    \"empty expression\",\n\t\t\tversion: \"\",\n\t\t\twant:    \"\",\n\t\t},\n\t\t{\n\t\t\tname:    \"no expression\",\n\t\t\tversion: \"cmd:foo\",\n\t\t\twant:    \"cmd:foo\",\n\t\t},\n\t\t{\n\t\t\tname:    \"=\",\n\t\t\tversion: \"cmd:scanelf=1.3.4-r0\",\n\t\t\twant:    \"cmd:scanelf\",\n\t\t},\n\t\t{\n\t\t\tname:    \">=\",\n\t\t\tversion: \"cmd:scanelf>=1.3.4-r0\",\n\t\t\twant:    \"cmd:scanelf\",\n\t\t},\n\t\t{\n\t\t\tname:    \"<\",\n\t\t\tversion: \"cmd:scanelf<1.3.4-r0\",\n\t\t\twant:    \"cmd:scanelf\",\n\t\t},\n\t\t{\n\t\t\tname:    \"ignores file paths\",\n\t\t\tversion: \"/bin/sh\",\n\t\t\twant:    \"/bin/sh\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, stripVersionSpecifier(tt.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/package.go",
    "content": "package alpine\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackage(ctx context.Context, d parsedData, release *linux.Release, dbLocation file.Location) pkg.Package {\n\t// check if license is a valid spdx expression before splitting\n\tlicenseStrings := []string{d.License}\n\t_, err := license.ParseExpression(d.License)\n\tif err != nil {\n\t\t// invalid so update to split on space\n\t\tlicenseStrings = strings.Split(d.License, \" \")\n\t}\n\n\tp := pkg.Package{\n\t\tName:      d.Package,\n\t\tVersion:   d.Version,\n\t\tLocations: file.NewLocationSet(dbLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, dbLocation, licenseStrings...)...),\n\t\tPURL:      packageURL(d.ApkDBEntry, release),\n\t\tType:      pkg.ApkPkg,\n\t\tMetadata:  d.ApkDBEntry,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\n// packageURL returns the PURL for the specific Alpine package (see https://github.com/package-url/purl-spec)\nfunc packageURL(m pkg.ApkDBEntry, distro *linux.Release) string {\n\tif distro == nil {\n\t\treturn \"\"\n\t}\n\n\tqualifiers := map[string]string{\n\t\tpkg.PURLQualifierArch: m.Architecture,\n\t}\n\n\tif m.OriginPackage != m.Package {\n\t\tqualifiers[pkg.PURLQualifierUpstream] = m.OriginPackage\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeAlpine,\n\t\tstrings.ToLower(distro.ID),\n\t\tm.Package,\n\t\tm.Version,\n\t\tpkg.PURLQualifiers(\n\t\t\tqualifiers,\n\t\t\tdistro,\n\t\t),\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/package_test.go",
    "content": "package alpine\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_PackageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata parsedData\n\t\tdistro   linux.Release\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"non-alpine distro\",\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"something else\",\n\t\t\t\tVersionID: \"3.4.6\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/something%20else/p@v?arch=a&distro=something%20else-3.4.6\",\n\t\t},\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: \"3.4.6\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/alpine/p@v?arch=a&distro=alpine-3.4.6\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing architecture\",\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"p\",\n\t\t\t\t\tVersion: \"v\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: \"3.4.6\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/alpine/p@v?distro=alpine-3.4.6\",\n\t\t},\n\t\t// verify #351\n\t\t{\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:      \"g++\",\n\t\t\t\t\tVersion:      \"v84\",\n\t\t\t\t\tArchitecture: \"am86\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: \"3.4.6\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/alpine/g%2B%2B@v84?arch=am86&distro=alpine-3.4.6\",\n\t\t},\n\t\t{\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:      \"g plus plus\",\n\t\t\t\t\tVersion:      \"v84\",\n\t\t\t\t\tArchitecture: \"am86\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: \"3.15.0\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/alpine/g%20plus%20plus@v84?arch=am86&distro=alpine-3.15.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"add source information as qualifier\",\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"p\",\n\t\t\t\t\tVersion:       \"v\",\n\t\t\t\t\tArchitecture:  \"a\",\n\t\t\t\t\tOriginPackage: \"origin\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: \"3.4.6\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/alpine/p@v?arch=a&distro=alpine-3.4.6&upstream=origin\",\n\t\t},\n\t\t{\n\t\t\tname: \"wolfi distro\",\n\t\t\tmetadata: parsedData{\n\t\t\t\tLicense: \"\",\n\t\t\t\tApkDBEntry: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:        \"wolfi\",\n\t\t\t\tVersionID: \"20221230\",\n\t\t\t},\n\t\t\texpected: \"pkg:apk/wolfi/p@v?arch=a&distro=wolfi-20221230\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURL(test.metadata.ApkDBEntry, &test.distro)\n\t\t\tif actual != test.expected {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.expected, actual, true)\n\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\n\t\t\tif test.expected == \"\" {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// verify packageurl can parse\n\t\t\tpurl, err := packageurl.FromString(actual)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"cannot re-parse purl: %s\", actual)\n\t\t\t}\n\t\t\tif purl.Name != test.metadata.Package {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Package, purl.Name, true)\n\t\t\t\tt.Errorf(\"invalid purl name: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t\tif purl.Version != test.metadata.Version {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Version, purl.Version, true)\n\t\t\t\tt.Errorf(\"invalid purl version: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t\tif purl.Qualifiers.Map()[\"arch\"] != test.metadata.Architecture {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Architecture, purl.Qualifiers.Map()[\"arch\"], true)\n\t\t\t\tt.Errorf(\"invalid purl architecture: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestApkMetadata_FileOwner(t *testing.T) {\n\ttests := []struct {\n\t\tmetadata pkg.ApkDBEntry\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"/else\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/else\",\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.expected, \",\"), func(t *testing.T) {\n\t\t\tactual := test.metadata.OwnedFiles()\n\t\t\tfor _, d := range deep.Equal(test.expected, actual) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/parse_apk_db.go",
    "content": "package alpine\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// integrity check\nvar _ generic.Parser = parseApkDB\n\nvar (\n\trepoRegex = regexp.MustCompile(`(?m)^https://.*\\.alpinelinux\\.org/alpine/v([^/]+)/([a-zA-Z0-9_]+)$`)\n)\n\ntype parsedData struct {\n\tLicense string `mapstructure:\"L\" json:\"license\"`\n\tpkg.ApkDBEntry\n}\n\n// parseApkDB parses packages from a given APK \"installed\" flat-file DB. For more\n// information on specific fields, see https://wiki.alpinelinux.org/wiki/Apk_spec.\n//\n//nolint:funlen\nfunc parseApkDB(ctx context.Context, resolver file.Resolver, env *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tscanner := bufio.NewScanner(reader)\n\n\tvar errs error\n\tvar apks []parsedData\n\tvar currentEntry parsedData\n\tentryParsingInProgress := false\n\tfileParsingCtx := newApkFileParsingContext()\n\n\t// creating a dedicated append-like function here instead of using `append(...)`\n\t// below since there is nontrivial logic to be performed for each finalized apk\n\t// entry.\n\tappendApk := func(p parsedData) {\n\t\tif files := fileParsingCtx.files; len(files) >= 1 {\n\t\t\t// attached accumulated files to current package\n\t\t\tp.Files = files\n\n\t\t\t// reset file parsing for next use\n\t\t\tfileParsingCtx = newApkFileParsingContext()\n\t\t}\n\n\t\tnilFieldsToEmptySlice(&p)\n\t\tapks = append(apks, p)\n\t}\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\tif line == \"\" {\n\t\t\t// i.e. apk entry separator\n\n\t\t\tif entryParsingInProgress {\n\t\t\t\t// current entry is complete\n\t\t\t\tappendApk(currentEntry)\n\t\t\t}\n\n\t\t\tentryParsingInProgress = false\n\n\t\t\t// zero-out currentEntry for use by any future entry\n\t\t\tcurrentEntry = parsedData{}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tfield := parseApkField(line)\n\t\tif field == nil {\n\t\t\tlog.Debugf(\"unable to parse field data from line %q\", line)\n\t\t\terrs = unknown.Appendf(errs, reader, \"unable to parse field data from line %q\", line)\n\t\t\tcontinue\n\t\t}\n\t\tif len(field.name) == 0 {\n\t\t\tlog.Debugf(\"failed to parse field name from line %q\", line)\n\t\t\terrs = unknown.Appendf(errs, reader, \"failed to parse field name from line %q\", line)\n\t\t\tcontinue\n\t\t}\n\t\tif len(field.value) == 0 {\n\t\t\tlog.Debugf(\"line %q: parsed field %q appears to have an empty value, skipping\", line, field.name)\n\t\t\tcontinue\n\t\t}\n\n\t\tentryParsingInProgress = true\n\n\t\tfield.apply(&currentEntry, fileParsingCtx)\n\t}\n\n\tif entryParsingInProgress {\n\t\t// There was no final empty line, so currentEntry hasn't been added to the\n\t\t// collection yet; but we've now reached the end of scanning, so let's be sure to\n\t\t// add currentEntry to the collection.\n\t\tappendApk(currentEntry)\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse APK installed DB file: %w\", err)\n\t}\n\n\tvar r *linux.Release\n\tif env != nil {\n\t\tr = env.LinuxRelease\n\t}\n\t// this is somewhat ugly, but better than completely failing when we can't find the release,\n\t// e.g. embedded deeper in the tree, like containers or chroots.\n\t// but we now have no way of handling different repository sources. On the other hand,\n\t// we never could before this. At least now, we can handle some.\n\t// This should get fixed with https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10875\n\tif r == nil {\n\t\t// find the repositories file from the relative directory of the DB file\n\t\treleases := findReleases(resolver, reader.RealPath)\n\n\t\tif len(releases) > 0 {\n\t\t\tr = &releases[0]\n\t\t}\n\t}\n\n\tpkgs := make([]pkg.Package, 0, len(apks))\n\tfor _, apk := range apks {\n\t\tpkgs = append(pkgs, newPackage(ctx, apk, r, reader.Location))\n\t}\n\n\treturn pkgs, nil, errs\n}\n\nfunc findReleases(resolver file.Resolver, dbPath string) []linux.Release {\n\tif resolver == nil {\n\t\treturn nil\n\t}\n\n\treposLocation := path.Clean(path.Join(path.Dir(dbPath), \"../../../etc/apk/repositories\"))\n\tlocations, err := resolver.FilesByPath(reposLocation)\n\tif err != nil {\n\t\tlog.Tracef(\"unable to find APK repositories file %q: %+v\", reposLocation, err)\n\t\treturn nil\n\t}\n\n\tif len(locations) == 0 {\n\t\treturn nil\n\t}\n\tlocation := locations[0]\n\n\treposReader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\tlog.Tracef(\"unable to fetch contents for APK repositories file %q: %+v\", reposLocation, err)\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(reposReader, location.RealPath)\n\n\treturn parseReleasesFromAPKRepository(file.LocationReadCloser{\n\t\tLocation:   location,\n\t\tReadCloser: reposReader,\n\t})\n}\n\nfunc parseReleasesFromAPKRepository(reader file.LocationReadCloser) []linux.Release {\n\tvar releases []linux.Release\n\n\treposB, err := io.ReadAll(reader) //nolint:gocritic // regex matching requires full buffer\n\tif err != nil {\n\t\tlog.Tracef(\"unable to read APK repositories file %q: %+v\", reader.RealPath, err)\n\t\treturn nil\n\t}\n\n\tparts := repoRegex.FindAllStringSubmatch(string(reposB), -1)\n\tfor _, part := range parts {\n\t\tif len(part) >= 3 {\n\t\t\treleases = append(releases, linux.Release{\n\t\t\t\tName:      \"Alpine Linux\",\n\t\t\t\tID:        \"alpine\",\n\t\t\t\tVersionID: part[1],\n\t\t\t})\n\t\t}\n\t}\n\n\treturn releases\n}\n\nfunc parseApkField(line string) *apkField {\n\tparts := strings.SplitN(line, \":\", 2)\n\tif len(parts) != 2 {\n\t\treturn nil\n\t}\n\n\tf := apkField{\n\t\tname:  parts[0],\n\t\tvalue: parts[1],\n\t}\n\n\treturn &f\n}\n\ntype apkField struct {\n\tname  string\n\tvalue string\n}\n\n//nolint:funlen\nfunc (f apkField) apply(p *parsedData, ctx *apkFileParsingContext) {\n\tswitch f.name {\n\t// APKINDEX field parsing\n\n\tcase \"P\":\n\t\tp.Package = f.value\n\tcase \"o\":\n\t\tp.OriginPackage = f.value\n\tcase \"m\":\n\t\tp.Maintainer = f.value\n\tcase \"V\":\n\t\tp.Version = f.value\n\tcase \"L\":\n\t\tp.License = f.value\n\tcase \"A\":\n\t\tp.Architecture = f.value\n\tcase \"U\":\n\t\tp.URL = f.value\n\tcase \"T\":\n\t\tp.Description = f.value\n\tcase \"S\":\n\t\ti, err := strconv.Atoi(f.value)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to parse value %q for field %q: %w\", f.value, f.name, err)\n\t\t\treturn\n\t\t}\n\n\t\tp.Size = i\n\tcase \"I\":\n\t\ti, err := strconv.Atoi(f.value)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to parse value %q for field %q: %w\", f.value, f.name, err)\n\t\t\treturn\n\t\t}\n\n\t\tp.InstalledSize = i\n\tcase \"D\":\n\t\tdeps := parseListValue(f.value)\n\t\tp.Dependencies = deps\n\tcase \"p\":\n\t\tprovides := parseListValue(f.value)\n\t\tp.Provides = provides\n\tcase \"C\":\n\t\tp.Checksum = f.value\n\tcase \"c\":\n\t\tp.GitCommit = f.value\n\n\t// File/directory field parsing:\n\n\tcase \"F\":\n\t\tdirectory := path.Join(\"/\", f.value)\n\n\t\tctx.files = append(ctx.files, pkg.ApkFileRecord{Path: directory})\n\t\tctx.indexOfLatestDirectory = len(ctx.files) - 1\n\tcase \"M\":\n\t\ti := ctx.indexOfLatestDirectory\n\t\tlatest := ctx.files[i]\n\n\t\tvar ok bool\n\t\tlatest.OwnerUID, latest.OwnerGID, latest.Permissions, ok = processFileInfo(f.value)\n\t\tif !ok {\n\t\t\tlog.Debugf(\"unexpected value for APK ACL field %q: %q\", f.name, f.value)\n\t\t\treturn\n\t\t}\n\n\t\t// save updated directory\n\t\tctx.files[i] = latest\n\tcase \"R\":\n\t\tvar regularFile string\n\n\t\tdirIndex := ctx.indexOfLatestDirectory\n\t\tif dirIndex < 0 {\n\t\t\tregularFile = path.Join(\"/\", f.value)\n\t\t} else {\n\t\t\tlatestDirPath := ctx.files[dirIndex].Path\n\t\t\tregularFile = path.Join(latestDirPath, f.value)\n\t\t}\n\n\t\tctx.files = append(ctx.files, pkg.ApkFileRecord{Path: regularFile})\n\t\tctx.indexOfLatestRegularFile = len(ctx.files) - 1\n\tcase \"a\":\n\t\ti := ctx.indexOfLatestRegularFile\n\t\tlatest := ctx.files[i]\n\n\t\tvar ok bool\n\t\tlatest.OwnerUID, latest.OwnerGID, latest.Permissions, ok = processFileInfo(f.value)\n\t\tif !ok {\n\t\t\tlog.Debugf(\"unexpected value for APK ACL field %q: %q\", f.name, f.value)\n\t\t\treturn\n\t\t}\n\n\t\t// save updated file\n\t\tctx.files[i] = latest\n\tcase \"Z\":\n\t\ti := ctx.indexOfLatestRegularFile\n\t\tlatest := ctx.files[i]\n\t\tlatest.Digest = processChecksum(f.value)\n\n\t\t// save updated file\n\t\tctx.files[i] = latest\n\t}\n}\n\nfunc processFileInfo(v string) (uid, gid, perms string, ok bool) {\n\tok = false\n\n\tfileInfo := strings.Split(v, \":\")\n\tif len(fileInfo) < 3 {\n\t\treturn\n\t}\n\n\tuid = fileInfo[0]\n\tgid = fileInfo[1]\n\tperms = fileInfo[2]\n\n\t// note: there are more optional fields available that we are not capturing,\n\t// e.g.: \"0:0:755:Q1JaDEHQHBbizhEzoWK1YxuraNU/4=\"\n\n\tok = true\n\treturn\n}\n\n// apkFileParsingContext helps keep track of what file data has been captured so far for the APK currently being parsed.\ntype apkFileParsingContext struct {\n\tfiles                    []pkg.ApkFileRecord\n\tindexOfLatestDirectory   int\n\tindexOfLatestRegularFile int\n}\n\nfunc newApkFileParsingContext() *apkFileParsingContext {\n\treturn &apkFileParsingContext{\n\t\tindexOfLatestDirectory:   -1, // no directories yet\n\t\tindexOfLatestRegularFile: -1, // no regular files yet\n\t}\n}\n\n// parseListValue parses a space-separated list from an apk entry field value.\nfunc parseListValue(value string) []string {\n\titems := strings.Split(value, \" \")\n\tif len(items) >= 1 {\n\t\treturn items\n\t}\n\n\treturn nil\n}\n\nfunc nilFieldsToEmptySlice(p *parsedData) {\n\tif p.Dependencies == nil {\n\t\tp.Dependencies = []string{}\n\t}\n\n\tif p.Provides == nil {\n\t\tp.Provides = []string{}\n\t}\n\n\tif p.Files == nil {\n\t\tp.Files = []pkg.ApkFileRecord{}\n\t}\n}\n\nfunc processChecksum(value string) *file.Digest {\n\t// from: https://wiki.alpinelinux.org/wiki/Apk_spec\n\t// The package checksum field is the SHA1 hash of the second gzip stream (control stream) in the package. The\n\t// binary hash digest is base64 encoded. This is prefixed with Q1 to differentiate it from the MD5 hashes\n\t// used in older index formats. It is not possible to compute this checksum with standard command line tools\n\t// but the apk-tools can compute it in their index operation.\n\n\t// based on https://github.com/alpinelinux/apk-tools/blob/dd1908f2fc20b4cfe2c15c55fafaa5fadfb599dc/src/blob.c#L379-L393\n\t// it seems that the old md5 checksum value was only the hex representation (not base64)\n\talgorithm := \"md5\"\n\tif strings.HasPrefix(value, \"Q1\") {\n\t\talgorithm = \"'Q1'+base64(sha1)\"\n\t}\n\n\treturn &file.Digest{\n\t\tAlgorithm: algorithm,\n\t\tValue:     value,\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/parse_apk_db_test.go",
    "content": "package alpine\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestExtraFileAttributes(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\texpected pkg.ApkDBEntry\n\t}{\n\t\t{\n\t\t\tname: \"test extra file attributes (checksum) are ignored\",\n\t\t\texpected: pkg.ApkDBEntry{\n\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t{\n\t\t\t\t\t\tPath: \"/usr\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPath: \"/usr/lib\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPath: \"/usr/lib/jvm\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPath: \"/usr/lib/jvm/java-1.8-openjdk\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPath: \"/usr/lib/jvm/java-1.8-openjdk/bin\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tPath:        \"/usr/lib/jvm/java-1.8-openjdk/bin/policytool\",\n\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\tValue:     \"Q1M0C9qfC/+kdRiOodeihG2GMRtkE=\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfixturePath := \"testdata/extra-file-attributes\"\n\t\t\tlrc := newLocationReadCloser(t, fixturePath)\n\n\t\t\tpkgs, _, err := parseApkDB(context.Background(), nil, new(generic.Environment), lrc)\n\t\t\tassert.NoError(t, err)\n\t\t\trequire.Len(t, pkgs, 1)\n\t\t\tmetadata := pkgs[0].Metadata.(pkg.ApkDBEntry)\n\n\t\t\tif diff := cmp.Diff(test.expected.Files, metadata.Files); diff != \"\" {\n\t\t\t\tt.Errorf(\"Files mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSinglePackageDetails(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/single\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"musl-utils\",\n\t\t\t\tVersion: \"1.1.24-r2\",\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"BSD\"),\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL2+\"),\n\t\t\t\t),\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"musl-utils\",\n\t\t\t\t\tOriginPackage: \"musl\",\n\t\t\t\t\tVersion:       \"1.1.24-r2\",\n\t\t\t\t\tDescription:   \"the musl c library (libc) implementation\",\n\t\t\t\t\tMaintainer:    \"Timo Teräs <timo.teras@iki.fi>\",\n\t\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\t\tURL:           \"https://musl.libc.org/\",\n\t\t\t\t\tSize:          37944,\n\t\t\t\t\tInstalledSize: 151552,\n\t\t\t\t\tDependencies:  []string{\"scanelf\", \"so:libc.musl-x86_64.so.1\"},\n\t\t\t\t\tProvides:      []string{\"cmd:getconf\", \"cmd:getent\", \"cmd:iconv\", \"cmd:ldconfig\", \"cmd:ldd\"},\n\t\t\t\t\tChecksum:      \"Q1bTtF5526tETKfL+lnigzIDvm+2o=\",\n\t\t\t\t\tGitCommit:     \"4024cc3b29ad4c65544ad068b8f59172b5494306\",\n\t\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/sbin\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/sbin/ldconfig\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/usr/bin/iconv\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/usr/bin/ldd\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/usr/bin/getconf\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/usr/bin/getent\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1eR2Dz/WylabgbWMTkd2+hGmEya4=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/empty-deps-and-provides\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"alpine-baselayout-data\",\n\t\t\t\tVersion: \"3.4.0-r0\",\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\"),\n\t\t\t\t),\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"alpine-baselayout-data\",\n\t\t\t\t\tOriginPackage: \"alpine-baselayout\",\n\t\t\t\t\tVersion:       \"3.4.0-r0\",\n\t\t\t\t\tDescription:   \"Alpine base dir structure and init scripts\",\n\t\t\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\t\tURL:           \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n\t\t\t\t\tSize:          11664,\n\t\t\t\t\tInstalledSize: 77824,\n\t\t\t\t\tDependencies:  []string{},\n\t\t\t\t\tProvides:      []string{},\n\t\t\t\t\tChecksum:      \"Q15ffjKT28lB7iSXjzpI/eDdYRCwM=\",\n\t\t\t\t\tGitCommit:     \"bd965a7ebf7fd8f07d7a0cc0d7375bf3e4eb9b24\",\n\t\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t\t{Path: \"/etc\"},\n\t\t\t\t\t\t{Path: \"/etc/fstab\"},\n\t\t\t\t\t\t{Path: \"/etc/group\"},\n\t\t\t\t\t\t{Path: \"/etc/hostname\"},\n\t\t\t\t\t\t{Path: \"/etc/hosts\"},\n\t\t\t\t\t\t{Path: \"/etc/inittab\"},\n\t\t\t\t\t\t{Path: \"/etc/modules\"},\n\t\t\t\t\t\t{Path: \"/etc/mtab\", OwnerUID: \"0\", OwnerGID: \"0\", Permissions: \"0777\"},\n\t\t\t\t\t\t{Path: \"/etc/nsswitch.conf\"},\n\t\t\t\t\t\t{Path: \"/etc/passwd\"},\n\t\t\t\t\t\t{Path: \"/etc/profile\"},\n\t\t\t\t\t\t{Path: \"/etc/protocols\"},\n\t\t\t\t\t\t{Path: \"/etc/services\"},\n\t\t\t\t\t\t{Path: \"/etc/shadow\", OwnerUID: \"0\", OwnerGID: \"148\", Permissions: \"0640\"},\n\t\t\t\t\t\t{Path: \"/etc/shells\"},\n\t\t\t\t\t\t{Path: \"/etc/sysctl.conf\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/base\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"alpine-baselayout\",\n\t\t\t\tVersion: \"3.2.0-r6\",\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\"),\n\t\t\t\t),\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tPURL: \"\",\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"alpine-baselayout\",\n\t\t\t\t\tOriginPackage: \"alpine-baselayout\",\n\t\t\t\t\tVersion:       \"3.2.0-r6\",\n\t\t\t\t\tDescription:   \"Alpine base dir structure and init scripts\",\n\t\t\t\t\tMaintainer:    \"Natanael Copa <ncopa@alpinelinux.org>\",\n\t\t\t\t\tArchitecture:  \"x86_64\",\n\t\t\t\t\tURL:           \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n\t\t\t\t\tSize:          19917,\n\t\t\t\t\tInstalledSize: 409600,\n\t\t\t\t\tDependencies:  []string{\"/bin/sh\", \"so:libc.musl-x86_64.so.1\"},\n\t\t\t\t\tProvides:      []string{\"cmd:mkmntdirs\"},\n\t\t\t\t\tChecksum:      \"Q1myMNfd7u5v5UTgNHeq1e31qTjZU=\",\n\t\t\t\t\tGitCommit:     \"e1c51734fa96fa4bac92e9f14a474324c67916fc\",\n\t\t\t\t\tFiles: []pkg.ApkFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/pts\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/dev/shm\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/fstab\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q11Q7hNe8QpDS531guqCdrXBzoA/o=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/group\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1oJ16xWudgKOrXIEquEDzlF2Lsm4=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/hostname\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q16nVwYVXP/tChvUPdukVD2ifXOmc=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/hosts\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/inittab\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modules\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1toogjUipHGcMgECgPJX64SwUT1M=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/motd\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/etc/mtab\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"777\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/passwd\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1TchuuLUfur0izvfZQZxgN/LJhB8=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/profile\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1KpFb8kl5LvwXWlY3e58FNsjrI34=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/protocols\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q13FqXUnvuOpMDrH/6rehxuYAEE34=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/services\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1C6HJNgQvLWqt5VY+n7MZJ1rsDuY=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/etc/shadow\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"42\",\n\t\t\t\t\t\t\tPermissions: \"640\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/shells\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/sysctl.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/apk\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/conf.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/crontabs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/etc/crontabs/root\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"600\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/init.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modprobe.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modprobe.d/aliases.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modprobe.d/blacklist.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1xxYGU6S6TLQvb7ervPrWWwAWqMg=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modprobe.d/i386.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1pnay/njn6ol9cCssL7KiZZ8etlc=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modprobe.d/kms.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1ynbLn3GYDpvajba/ldp1niayeog=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/modules-load.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/network\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/network/if-down.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/network/if-post-down.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/network/if-pre-up.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/network/if-up.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/opt\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic/15min\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic/daily\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic/hourly\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic/monthly\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/periodic/weekly\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/profile.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/profile.d/color_prompt\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q10wL23GuSCVfumMRgakabUI6EsSk=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/profile.d/locale\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1R4bIEpnKxxOSrlnZy9AoawqZ5DU=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/sysctl.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/home\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib/firmware\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib/mdev\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib/modules-load.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib/sysctl.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/lib/sysctl.d/00-alpine.conf\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1HpElzW1xEgmKfERtTy7oommnq6c=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/media\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/media/cdrom\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/media/floppy\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/media/usb\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/mnt\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/opt\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/proc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/root\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"700\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/run\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/sbin\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/sbin/mkmntdirs\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"755\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1YeuSmC7iDbEWrusPzA/zUQF6YSg=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/srv\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/sys\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/tmp\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"1777\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/lib/modules-load.d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/local\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/local/bin\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/local/lib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/local/share\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/sbin\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/share\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/share/man\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/share/misc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/var/run\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"777\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/cache\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/cache/misc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/var/empty\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"555\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lib/misc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/local\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lock\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lock/subsys\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/log\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/mail\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/opt\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/spool\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/var/spool/mail\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"777\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/spool/cron\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/var/spool/cron/crontabs\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"777\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\t\t\t\t\tValue:     \"Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:        \"/var/tmp\",\n\t\t\t\t\t\t\tOwnerUID:    \"0\",\n\t\t\t\t\t\t\tOwnerGID:    \"0\",\n\t\t\t\t\t\t\tPermissions: \"1777\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tfixtureLocation := file.NewLocation(test.fixture)\n\t\t\ttest.expected.Locations = file.NewLocationSet(fixtureLocation)\n\t\t\tlicenses := test.expected.Licenses.ToSlice()\n\t\t\tfor i := range licenses {\n\t\t\t\tlicenses[i].Locations.Add(fixtureLocation)\n\t\t\t}\n\t\t\ttest.expected.Licenses = pkg.NewLicenseSet(licenses...)\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parseApkDB, []pkg.Package{test.expected}, nil)\n\t\t})\n\t}\n}\n\nfunc Test_processChecksum(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tvalue string\n\t\twant  file.Digest\n\t}{\n\t\t{\n\t\t\tname:  \"md5\",\n\t\t\tvalue: \"38870ede8700535d7382ff66a46fcc2f\",\n\t\t\twant: file.Digest{\n\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\tValue:     \"38870ede8700535d7382ff66a46fcc2f\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"sha1\",\n\t\t\tvalue: \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\",\n\t\t\twant: file.Digest{\n\t\t\t\tAlgorithm: \"'Q1'+base64(sha1)\",\n\t\t\t\tValue:     \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, &test.want, processChecksum(test.value))\n\t\t})\n\t}\n}\n\nfunc Test_parseApkDB_expectedPkgNames(t *testing.T) {\n\ttests := []struct {\n\t\tfixture      string\n\t\twantPkgNames []string\n\t\twantErr      assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tfixture: \"very-large-entries\",\n\t\t\twantPkgNames: []string{\n\t\t\t\t\"ca-certificates-bundle\",\n\t\t\t\t\"glibc-locale-posix\",\n\t\t\t\t\"wolfi-baselayout\",\n\t\t\t\t\"glibc\",\n\t\t\t\t\"libcrypto3\",\n\t\t\t\t\"libssl3\",\n\t\t\t\t\"zlib\",\n\t\t\t\t\"apk-tools\",\n\t\t\t\t\"ncurses-terminfo-base\",\n\t\t\t\t\"ncurses\",\n\t\t\t\t\"bash\",\n\t\t\t\t\"libcap\",\n\t\t\t\t\"bubblewrap\",\n\t\t\t\t\"busybox\",\n\t\t\t\t\"libbrotlicommon1\",\n\t\t\t\t\"libbrotlidec1\",\n\t\t\t\t\"libnghttp2-14\",\n\t\t\t\t\"libcurl4\",\n\t\t\t\t\"curl\",\n\t\t\t\t\"expat\",\n\t\t\t\t\"libpcre2-8-0\",\n\t\t\t\t\"git\",\n\t\t\t\t\"binutils\",\n\t\t\t\t\"libstdc++-dev\",\n\t\t\t\t\"libgcc\",\n\t\t\t\t\"libstdc++\",\n\t\t\t\t\"gmp\",\n\t\t\t\t\"isl\",\n\t\t\t\t\"mpfr\",\n\t\t\t\t\"mpc\",\n\t\t\t\t\"gcc\",\n\t\t\t\t\"linux-headers\",\n\t\t\t\t\"glibc-dev\",\n\t\t\t\t\"make\",\n\t\t\t\t\"pkgconf\",\n\t\t\t\t\"build-base\",\n\t\t\t\t\"go\",\n\t\t\t\t\"tree\",\n\t\t\t\t\"sdk\",\n\t\t\t},\n\t\t\twantErr: assert.NoError,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tfixturePath := filepath.Join(\"testdata\", test.fixture)\n\t\t\tlrc := newLocationReadCloser(t, fixturePath)\n\n\t\t\tpkgs, _, err := parseApkDB(context.Background(), nil, new(generic.Environment), lrc)\n\t\t\ttest.wantErr(t, err)\n\n\t\t\tnames := toPackageNames(pkgs)\n\t\t\tif diff := cmp.Diff(test.wantPkgNames, names); diff != \"\" {\n\t\t\t\tt.Errorf(\"Packages mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc toPackageNames(pkgs []pkg.Package) []string {\n\tnames := make([]string, 0, len(pkgs))\n\tfor _, p := range pkgs {\n\t\tnames = append(names, p.Name)\n\t}\n\n\treturn names\n}\n\nfunc newLocationReadCloser(t *testing.T, path string) file.LocationReadCloser {\n\tf, err := os.Open(path)\n\trequire.NoError(t, err)\n\tt.Cleanup(func() { f.Close() })\n\n\treturn file.NewLocationReadCloser(file.NewLocation(path), f)\n}\n\nfunc TestParseReleasesFromAPKRepository(t *testing.T) {\n\ttests := []struct {\n\t\trepos string\n\t\twant  []linux.Release\n\t\tdesc  string\n\t}{\n\t\t{\n\t\t\t\"https://foo.alpinelinux.org/alpine/v3.14/main\",\n\t\t\t[]linux.Release{\n\t\t\t\t{Name: \"Alpine Linux\", ID: \"alpine\", VersionID: \"3.14\"},\n\t\t\t},\n\t\t\t\"single repo\",\n\t\t},\n\t\t{\n\t\t\t`https://foo.alpinelinux.org/alpine/v3.14/main\nhttps://foo.alpinelinux.org/alpine/v3.14/community`,\n\t\t\t[]linux.Release{\n\t\t\t\t{Name: \"Alpine Linux\", ID: \"alpine\", VersionID: \"3.14\"},\n\t\t\t\t{Name: \"Alpine Linux\", ID: \"alpine\", VersionID: \"3.14\"},\n\t\t\t},\n\t\t\t\"multiple repos\",\n\t\t},\n\t\t{\n\t\t\t``,\n\t\t\tnil,\n\t\t\t\"empty\",\n\t\t},\n\t\t{\n\t\t\t`https://foo.bar.org/alpine/v3.14/main\nhttps://foo.them.org/alpine/v3.14/community`,\n\t\t\tnil,\n\t\t\t\"invalid repos\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.desc, func(t *testing.T) {\n\t\t\treposReader := io.NopCloser(strings.NewReader(tt.repos))\n\t\t\tgot := parseReleasesFromAPKRepository(file.LocationReadCloser{\n\t\t\t\tLocation:   file.NewLocation(\"test\"),\n\t\t\t\tReadCloser: reposReader,\n\t\t\t})\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/base",
    "content": "C:Q1myMNfd7u5v5UTgNHeq1e31qTjZU=\nP:alpine-baselayout\nV:3.2.0-r6\nA:x86_64\nS:19917\nI:409600\nT:Alpine base dir structure and init scripts\nU:https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\nL:GPL-2.0-only\no:alpine-baselayout\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1590679557\nc:e1c51734fa96fa4bac92e9f14a474324c67916fc\nD:/bin/sh so:libc.musl-x86_64.so.1\np:cmd:mkmntdirs\nF:dev\nF:dev/pts\nF:dev/shm\nF:etc\nR:fstab\nZ:Q11Q7hNe8QpDS531guqCdrXBzoA/o=\nR:group\nZ:Q1oJ16xWudgKOrXIEquEDzlF2Lsm4=\nR:hostname\nZ:Q16nVwYVXP/tChvUPdukVD2ifXOmc=\nR:hosts\nZ:Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\nR:inittab\nZ:Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\nR:modules\nZ:Q1toogjUipHGcMgECgPJX64SwUT1M=\nR:motd\nZ:Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\nR:mtab\na:0:0:777\nZ:Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\nR:passwd\nZ:Q1TchuuLUfur0izvfZQZxgN/LJhB8=\nR:profile\nZ:Q1KpFb8kl5LvwXWlY3e58FNsjrI34=\nR:protocols\nZ:Q13FqXUnvuOpMDrH/6rehxuYAEE34=\nR:services\nZ:Q1C6HJNgQvLWqt5VY+n7MZJ1rsDuY=\nR:shadow\na:0:42:640\nZ:Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\nR:shells\nZ:Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\nR:sysctl.conf\nZ:Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\nF:etc/apk\nF:etc/conf.d\nF:etc/crontabs\nR:root\na:0:0:600\nZ:Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\nF:etc/init.d\nF:etc/modprobe.d\nR:aliases.conf\nZ:Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\nR:blacklist.conf\nZ:Q1xxYGU6S6TLQvb7ervPrWWwAWqMg=\nR:i386.conf\nZ:Q1pnay/njn6ol9cCssL7KiZZ8etlc=\nR:kms.conf\nZ:Q1ynbLn3GYDpvajba/ldp1niayeog=\nF:etc/modules-load.d\nF:etc/network\nF:etc/network/if-down.d\nF:etc/network/if-post-down.d\nF:etc/network/if-pre-up.d\nF:etc/network/if-up.d\nF:etc/opt\nF:etc/periodic\nF:etc/periodic/15min\nF:etc/periodic/daily\nF:etc/periodic/hourly\nF:etc/periodic/monthly\nF:etc/periodic/weekly\nF:etc/profile.d\nR:color_prompt\nZ:Q10wL23GuSCVfumMRgakabUI6EsSk=\nR:locale\nZ:Q1R4bIEpnKxxOSrlnZy9AoawqZ5DU=\nF:etc/sysctl.d\nF:home\nF:lib\nF:lib/firmware\nF:lib/mdev\nF:lib/modules-load.d\nF:lib/sysctl.d\nR:00-alpine.conf\nZ:Q1HpElzW1xEgmKfERtTy7oommnq6c=\nF:media\nF:media/cdrom\nF:media/floppy\nF:media/usb\nF:mnt\nF:opt\nF:proc\nF:root\nM:0:0:700\nF:run\nF:sbin\nR:mkmntdirs\na:0:0:755\nZ:Q1YeuSmC7iDbEWrusPzA/zUQF6YSg=\nF:srv\nF:sys\nF:tmp\nM:0:0:1777\nF:usr\nF:usr/lib\nF:usr/lib/modules-load.d\nF:usr/local\nF:usr/local/bin\nF:usr/local/lib\nF:usr/local/share\nF:usr/sbin\nF:usr/share\nF:usr/share/man\nF:usr/share/misc\nF:var\nR:run\na:0:0:777\nZ:Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\nF:var/cache\nF:var/cache/misc\nF:var/empty\nM:0:0:555\nF:var/lib\nF:var/lib/misc\nF:var/local\nF:var/lock\nF:var/lock/subsys\nF:var/log\nF:var/mail\nF:var/opt\nF:var/spool\nR:mail\na:0:0:777\nZ:Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\nF:var/spool/cron\nR:crontabs\na:0:0:777\nZ:Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\nF:var/tmp\nM:0:0:1777"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/corrupt/lib/apk/db/installed",
    "content": "this is a corrupt db\n\nC:Q1v4QhLje3kWlC8DJj+ZfJTjlJRSU=\nP:alpine-baselayout-data\nV:3.2.0-r22\nA:x86_64\nS:11435\nI:73728\no:alpine-baselayout\nt:1655134784\nc:cb70ca5c6d6db0399d2dd09189c5d57827bce5cd\nr:alpine-baselayout\nF:etc\nR:fstab\nZ:Q11Q7hNe8QpDS531guqCdrXBzoA/o=\nR:group\nZ:Q13K+olJg5ayzHSVNUkggZJXuB+9Y=\nR:hostname\nZ:Q16nVwYVXP/tChvUPdukVD2ifXOmc=\nR:hosts\nZ:Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\nR:inittab\nZ:Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\nR:modules\nZ:Q1toogjUipHGcMgECgPJX64SwUT1M=\nR:mtab\na:0:0:777\nZ:Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\nR:passwd\nZ:Q1TchuuLUfur0izvfZQZxgN/LJhB8=\nR:profile\nZ:Q1F3DgXUP+jNZDknmQPPb5t9FSfDg=\nR:protocols\nZ:Q1omKlp3vgGq2ZqYzyD/KHNdo8rDc=\nR:services\nZ:Q19WLCv5ItKg4MH7RWfNRh1I7byQc=\nR:shadow\na:0:42:640\nZ:Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\nR:shells\nZ:Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\nR:sysctl.conf\nZ:Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/empty-deps-and-provides",
    "content": "P:alpine-baselayout-data\nV:3.4.0-r0\nA:x86_64\nL:GPL-2.0-only\nT:Alpine base dir structure and init scripts\no:alpine-baselayout\nm:Natanael Copa <ncopa@alpinelinux.org>\nU:https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\nD:\np:\nc:bd965a7ebf7fd8f07d7a0cc0d7375bf3e4eb9b24\ni:[]\nt:1667573027\nS:11664\nI:77824\nk:0\nC:Q15ffjKT28lB7iSXjzpI/eDdYRCwM=\nF:etc\nR:fstab\nR:group\nR:hostname\nR:hosts\nR:inittab\nR:modules\nR:mtab\na:0:0:0777\nR:nsswitch.conf\nR:passwd\nR:profile\nR:protocols\nR:services\nR:shadow\na:0:148:0640\nR:shells\nR:sysctl.conf\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/extra-file-attributes",
    "content": "P:openjdk8-jre\nV:8.212.04-r0\nA:x86_64\nS:359029\nI:970752\nT:OpenJDK 8 Java Runtime\nU:https://icedtea.classpath.org/\nL:custom\no:openjdk8\nm:Timo Teras <timo.teras@iki.fi>\nt:1556993127\nc:46badd1aabd3375ae4b41c7194bc448f74b2ea4a\nD:java-cacerts nss so:libX11.so.6 so:libXcomposite.so.1 so:libXext.so.6 so:libXi.so.6 so:libXrender.so.1 so:libXtst.so.6 so:libasound.so.2 so:libc.musl-x86_64.so.1 so:libfreetype.so.6 so:libgcc_s.so.1 so:libgif.so.7 so:libjpeg.so.8 so:libpng16.so.16 so:libstdc++.so.6 so:openjdk8:libawt.so so:openjdk8:libjava.so so:openjdk8:libjli.so so:openjdk8:libjvm.so\np:so:openjdk8:libawt_xawt.so=0 so:openjdk8:libfontmanager.so=0 so:openjdk8:libjawt.so=0 so:openjdk8:libjsoundalsa.so=0 so:openjdk8:libsplashscreen.so=0\nF:usr\nF:usr/lib\nF:usr/lib/jvm\nF:usr/lib/jvm/java-1.8-openjdk\nF:usr/lib/jvm/java-1.8-openjdk/bin\nR:policytool\na:0:0:755:Q1JaDEHQHBbizhEzoWK1YxuraNU/4=\nZ:Q1M0C9qfC/+kdRiOodeihG2GMRtkE=\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/glob-paths/lib/apk/db/installed",
    "content": "bogus db contents"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/multiple-1/lib/apk/db/installed",
    "content": "P:bash\nV:5.2.21-r0\nA:x86_64\nS:448728\nI:1396736\nT:The GNU Bourne Again shell\nU:https://www.gnu.org/software/bash/bash.html\nL:GPL-3.0-or-later\no:bash\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1701073495\nc:6a9559d98850225ba80771901ef1abda91cb29aa\nD:/bin/sh so:libc.musl-x86_64.so.1 so:libreadline.so.8\np:cmd:bash=5.2.21-r0\n\nP:busybox-binsh\nV:1.36.1-r15\nA:x86_64\nS:1543\nI:8192\nT:busybox ash /bin/sh\nU:https://busybox.net/\nL:GPL-2.0-only\no:busybox\nm:Sören Tempel <soeren+alpine@soeren-tempel.net>\nt:1699383189\nc:d1b6f274f29076967826e0ecf6ebcaa5d360272f\nk:100\nD:busybox=1.36.1-r15\np:/bin/sh cmd:sh=1.36.1-r15\nr:busybox-initscripts\nF:bin\nR:sh\na:0:0:777\nZ:Q1pcfTfDNEbNKQc2s1tia7da05M8Q=\n\nP:musl\nV:1.2.4_git20230717-r4\nA:x86_64\nS:407278\nI:667648\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1699271358\nc:ca7f2ab5e88794e4e654b40776f8a92256f50639\np:so:libc.musl-x86_64.so.1=1\nF:lib\nR:ld-musl-x86_64.so.1\na:0:0:755\nZ:Q1+zEJiG53Cxy7DkV5oZQqeWnzybY=\nR:libc.musl-x86_64.so.1\na:0:0:777\nZ:Q17yJ3JFNypA4mxhJJr0ou6CzsJVI=\n\nP:readline\nV:8.2.1-r2\nA:x86_64\nS:119878\nI:303104\nT:GNU readline library\nU:https://tiswww.cwru.edu/php/chet/readline/rltop.html\nL:GPL-2.0-or-later\no:readline\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1684120357\nc:33283848034c9885d984c8e8697c645c57324938\nD:so:libc.musl-x86_64.so.1 so:libncursesw.so.6\np:so:libreadline.so.8=8.2\nF:etc\nR:inputrc\nZ:Q1ilcgkuEseXEH6iMo9UNjLn1pPfg=\nF:usr\nF:usr/lib\nR:libreadline.so.8\na:0:0:777\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/multiple-2/lib/apk/db/installed",
    "content": "C:Q1v4QhLje3kWlC8DJj+ZfJTjlJRSU=\nP:alpine-baselayout-data\nV:3.2.0-r22\nA:x86_64\nS:11435\nI:73728\nT:Alpine base dir structure and init scripts\nU:https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\nL:GPL-2.0-only\no:alpine-baselayout\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1655134784\nc:cb70ca5c6d6db0399d2dd09189c5d57827bce5cd\nr:alpine-baselayout\nF:etc\nR:fstab\nZ:Q11Q7hNe8QpDS531guqCdrXBzoA/o=\nR:group\nZ:Q13K+olJg5ayzHSVNUkggZJXuB+9Y=\nR:hostname\nZ:Q16nVwYVXP/tChvUPdukVD2ifXOmc=\nR:hosts\nZ:Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\nR:inittab\nZ:Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\nR:modules\nZ:Q1toogjUipHGcMgECgPJX64SwUT1M=\nR:mtab\na:0:0:777\nZ:Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\nR:passwd\nZ:Q1TchuuLUfur0izvfZQZxgN/LJhB8=\nR:profile\nZ:Q1F3DgXUP+jNZDknmQPPb5t9FSfDg=\nR:protocols\nZ:Q1omKlp3vgGq2ZqYzyD/KHNdo8rDc=\nR:services\nZ:Q19WLCv5ItKg4MH7RWfNRh1I7byQc=\nR:shadow\na:0:42:640\nZ:Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\nR:shells\nZ:Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\nR:sysctl.conf\nZ:Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\n\nC:Q1aCu0LmUDoAFSOX49uHvkYC1WasQ=\nP:musl\nV:1.2.3-r0\nA:x86_64\nS:383304\nI:622592\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1649396308\nc:ee13d43a53938d8a04ba787b9423f3270a3c14a7\np:so:libc.musl-x86_64.so.1=1\nF:lib\nR:ld-musl-x86_64.so.1\na:0:0:755\nZ:Q1ZZqflKEvStJz4SXV0SDMi3wOtM0=\nR:libc.musl-x86_64.so.1\na:0:0:777\nZ:Q17yJ3JFNypA4mxhJJr0ou6CzsJVI=\n\nC:Q1iZ+C2JJdBlm2KKtAOkSkM7zZegY=\nP:busybox\nV:1.35.0-r17\nA:x86_64\nS:507831\nI:962560\nT:Size optimized toolbox of many common UNIX utilities\nU:https://busybox.net/\nL:GPL-2.0-only\no:busybox\nm:Sören Tempel <soeren+alpine@soeren-tempel.net>\nt:1659366884\nc:2bf6ec48e526113f87216683cd341a78af5f0b3f\nD:so:libc.musl-x86_64.so.1\np:/bin/sh cmd:busybox=1.35.0-r17 cmd:sh=1.35.0-r17\nr:busybox-initscripts\nF:bin\nR:busybox\na:0:0:755\nZ:Q1WUwBY0eOGgzgVxTZxJBZPyQUicI=\nR:sh\na:0:0:777\nZ:Q1pcfTfDNEbNKQc2s1tia7da05M8Q=\nF:etc\nR:securetty\nZ:Q1mB95Hq2NUTZ599RDiSsj9w5FrOU=\nR:udhcpd.conf\nZ:Q1EgLFjj67ou3eMqp4m3r2ZjnQ7QU=\nF:etc/logrotate.d\nR:acpid\nZ:Q1TylyCINVmnS+A/Tead4vZhE7Bks=\nF:etc/network\nF:etc/network/if-down.d\nF:etc/network/if-post-down.d\nF:etc/network/if-post-up.d\nF:etc/network/if-pre-down.d\nF:etc/network/if-pre-up.d\nF:etc/network/if-up.d\nR:dad\na:0:0:775\nZ:Q1ORf+lPRKuYgdkBBcKoevR1t60Q4=\nF:sbin\nF:tmp\nM:0:0:1777\nF:usr\nF:usr/sbin\nF:usr/share\nF:usr/share/udhcpc\nR:default.script\na:0:0:755\nZ:Q1t9vir/ZrX3nbSIYT9BDLWZenkVQ=\nF:var\nF:var/cache\nF:var/cache/misc\nF:var/lib\nF:var/lib/udhcpd\n\nC:Q1l6/nM0K+cyVdqNfgkp1/c6Ylzk0=\nP:alpine-baselayout\nV:3.2.0-r22\nA:x86_64\nS:11126\nI:348160\nT:Alpine base dir structure and init scripts\nU:https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\nL:GPL-2.0-only\no:alpine-baselayout\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1655134784\nc:cb70ca5c6d6db0399d2dd09189c5d57827bce5cd\nD:alpine-baselayout-data=3.2.0-r22 /bin/sh so:libc.musl-x86_64.so.1\np:cmd:mkmntdirs=3.2.0-r22\nF:dev\nF:dev/pts\nF:dev/shm\nF:etc\nR:motd\nZ:Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\nF:etc/apk\nF:etc/conf.d\nF:etc/crontabs\nR:root\na:0:0:600\nZ:Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\nF:etc/init.d\nF:etc/modprobe.d\nR:aliases.conf\nZ:Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\nR:blacklist.conf\nZ:Q14TdgFHkTdt3uQC+NBtrntOnm9n4=\nR:i386.conf\nZ:Q1pnay/njn6ol9cCssL7KiZZ8etlc=\nR:kms.conf\nZ:Q1ynbLn3GYDpvajba/ldp1niayeog=\nF:etc/modules-load.d\nF:etc/network\nF:etc/network/if-down.d\nF:etc/network/if-post-down.d\nF:etc/network/if-pre-up.d\nF:etc/network/if-up.d\nF:etc/opt\nF:etc/periodic\nF:etc/periodic/15min\nF:etc/periodic/daily\nF:etc/periodic/hourly\nF:etc/periodic/monthly\nF:etc/periodic/weekly\nF:etc/profile.d\nR:README\nZ:Q135OWsCzzvnB2fmFx62kbqm1Ax1k=\nR:color_prompt.sh.disabled\nZ:Q11XM9mde1Z29tWMGaOkeovD/m4uU=\nR:locale.sh\nZ:Q1S8j+WW71mWxfVy8ythqU7HUVoBw=\nF:etc/sysctl.d\nF:home\nF:lib\nF:lib/firmware\nF:lib/mdev\nF:lib/modules-load.d\nF:lib/sysctl.d\nR:00-alpine.conf\nZ:Q1HpElzW1xEgmKfERtTy7oommnq6c=\nF:media\nF:media/cdrom\nF:media/floppy\nF:media/usb\nF:mnt\nF:opt\nF:proc\nF:root\nM:0:0:700\nF:run\nF:sbin\nR:mkmntdirs\na:0:0:755\nZ:Q1+f8Hjd+dkHS03O6ZZaIw7mb8nLM=\nF:srv\nF:sys\nF:tmp\nM:0:0:1777\nF:usr\nF:usr/lib\nF:usr/lib/modules-load.d\nF:usr/local\nF:usr/local/bin\nF:usr/local/lib\nF:usr/local/share\nF:usr/sbin\nF:usr/share\nF:usr/share/man\nF:usr/share/misc\nF:var\nR:run\na:0:0:777\nZ:Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\nF:var/cache\nF:var/cache/misc\nF:var/empty\nM:0:0:555\nF:var/lib\nF:var/lib/misc\nF:var/local\nF:var/lock\nF:var/lock/subsys\nF:var/log\nF:var/mail\nF:var/opt\nF:var/spool\nR:mail\na:0:0:777\nZ:Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\nF:var/spool/cron\nR:crontabs\na:0:0:777\nZ:Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\nF:var/tmp\nM:0:0:1777\n\nC:Q1FBfIjtsEmvuqoNXpShXDcm/mjzE=\nP:alpine-keys\nV:2.4-r1\nA:x86_64\nS:13359\nI:159744\nT:Public keys for Alpine Linux packages\nU:https://alpinelinux.org\nL:MIT\no:alpine-keys\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1634579657\nc:aab68f8c9ab434a46710de8e12fb3206e2930a59\nr:alpine-base\nF:etc\nF:etc/apk\nF:etc/apk/keys\nR:alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\nZ:Q1OvCFSO94z97c80mIDCxqGkh2Og4=\nR:alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\nZ:Q1v7YWZYzAWoclaLDI45jEguI7YN0=\nR:alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\nZ:Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\nR:alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\nZ:Q1lZlTESNrelWTNkL/oQzmAU8a99A=\nR:alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\nZ:Q1WNW6Sy87HpJ3IdemQy8pju33Kms=\nF:usr\nF:usr/share\nF:usr/share/apk\nF:usr/share/apk/keys\nR:alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\nZ:Q1OvCFSO94z97c80mIDCxqGkh2Og4=\nR:alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\nZ:Q1v7YWZYzAWoclaLDI45jEguI7YN0=\nR:alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\nZ:Q1BTqS+H/UUyhQuzHwiBl47+BTKuU=\nR:alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\nZ:Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\nR:alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\nZ:Q1Oaxdcsa6AYoPdLi0U4lO3J2we18=\nR:alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\nZ:Q1yPq+su65ksNox3uXB+DR7P18+QU=\nR:alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\nZ:Q1MpZDNX0LeLHvSOwVUyXiXx11NN0=\nR:alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\nZ:Q1glCQ/eJbvA5xqcswdjFrWv5Fnk0=\nR:alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\nZ:Q1XUdDEoNTtjlvrS+iunk6ziFgIpU=\nR:alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\nZ:Q1lZlTESNrelWTNkL/oQzmAU8a99A=\nR:alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\nZ:Q1WNW6Sy87HpJ3IdemQy8pju33Kms=\nR:alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\nZ:Q1I9Dy6hryacL2YWXg+KlE6WvwEd4=\nR:alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\nZ:Q1NSnsgmcMbU4g7j5JaNs0tVHpHVA=\nR:alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\nZ:Q1VaMBBk4Rxv6boPLKF+I085Q8y2E=\nR:alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\nZ:Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ=\nR:alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\nZ:Q1V/a5P9pKRJb6tihE3e8O6xaPgLU=\nR:alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\nZ:Q13wLJrcKQajql5a1p9Q45U+ZXENA=\nF:usr/share/apk/keys/aarch64\nR:alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\na:0:0:777\nZ:Q17j9nWJkQ+wfIuVQzIFrmFZ7fSOc=\nR:alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\na:0:0:777\nZ:Q1snr+Q1UbfHyCr/cmmtVvMIS7SGs=\nF:usr/share/apk/keys/armhf\nR:alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\na:0:0:777\nZ:Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\nR:alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\na:0:0:777\nZ:Q1bC+AdQ0qWBTmefXiI0PvmYOJoVQ=\nF:usr/share/apk/keys/armv7\nR:alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\na:0:0:777\nZ:Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\nR:alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\na:0:0:777\nZ:Q1xbIVu7ScwqGHxXGwI22aSe5OdUY=\nF:usr/share/apk/keys/mips64\nR:alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\na:0:0:777\nZ:Q1hCZdFx+LvzbLtPs753je78gEEBQ=\nF:usr/share/apk/keys/ppc64le\nR:alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\na:0:0:777\nZ:Q1t21dhCLbTJmAHXSCeOMq/2vfSgo=\nR:alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\na:0:0:777\nZ:Q1PS9zNIPJanC8qcsc5qarEWqhV5Q=\nF:usr/share/apk/keys/riscv64\nR:alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\na:0:0:777\nZ:Q1NVPbZavaXpsItFwQYDWbpor7yYE=\nR:alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\na:0:0:777\nZ:Q1U6tfuKRy5J8C6iaKPMZaT/e8tbA=\nF:usr/share/apk/keys/s390x\nR:alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\na:0:0:777\nZ:Q1sjbV2r2w0Ih2vwdzC4Jq6UI7cMQ=\nR:alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\na:0:0:777\nZ:Q1l09xa7RnbOIC1dI9FqbaCfS/GXY=\nF:usr/share/apk/keys/x86\nR:alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\na:0:0:777\nZ:Q1Ii51i7Nrc4uft14HhqugaUqdH64=\nR:alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\na:0:0:777\nZ:Q1Y49eVxhpvftbQ3yAdvlLfcrPLTU=\nR:alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\na:0:0:777\nZ:Q1HjdvcVkpBZzr1aSe3p7oQfAtm/E=\nF:usr/share/apk/keys/x86_64\nR:alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\na:0:0:777\nZ:Q1Ii51i7Nrc4uft14HhqugaUqdH64=\nR:alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\na:0:0:777\nZ:Q1AUFY+fwSBTcrYetjT7NHvafrSQc=\nR:alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\na:0:0:777\nZ:Q1qKA23VzMUDle+Dqnrr5Kz+Xvty4=\n\nC:Q1huqjigIP7ZNHBueDUmNnT6PpToI=\nP:ca-certificates-bundle\nV:20220614-r0\nA:x86_64\nS:125920\nI:233472\nT:Pre generated bundle of Mozilla certificates\nU:https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/\nL:MPL-2.0 AND MIT\no:ca-certificates\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1659254961\nc:bb51fa7743320ac61f76e181cca84daa9977573e\np:ca-certificates-cacert=20220614-r0\nr:libressl2.7-libcrypto\nF:etc\nF:etc/ssl\nR:cert.pem\na:0:0:777\nZ:Q1Nj6gTBdkZpTFW/obJGdpfvK0StA=\nF:etc/ssl/certs\nR:ca-certificates.crt\nZ:Q1D8ljYj7pXsRq4d/eHGNYB0GY1+I=\n\nC:Q1rd80DWg+fcm+GFn06ahfUUPUshw=\nP:libcrypto1.1\nV:1.1.1q-r0\nA:x86_64\nS:1212577\nI:2772992\nT:Crypto library from openssl\nU:https://www.openssl.org/\nL:OpenSSL\no:openssl\nm:Timo Teras <timo.teras@iki.fi>\nt:1657033577\nc:26153b65138c876d57e81750f6de6baab6d5bd5b\nD:so:libc.musl-x86_64.so.1\np:so:libcrypto.so.1.1=1.1\nr:libressl2.7-libcrypto\nF:etc\nF:etc/ssl\nR:ct_log_list.cnf\nZ:Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\nR:ct_log_list.cnf.dist\nZ:Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\nR:openssl.cnf\nZ:Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\nR:openssl.cnf.dist\nZ:Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\nF:etc/ssl/certs\nF:etc/ssl/misc\nR:CA.pl\na:0:0:755\nZ:Q1IACevKhK93GYBHp96Ie26jgZ17s=\nR:tsget\na:0:0:777\nZ:Q13NVgfr7dQUuGYxur0tNalH6EIjU=\nR:tsget.pl\na:0:0:755\nZ:Q15sBrpDGKgjg82+bFLL8ivnu5pbQ=\nF:etc/ssl/private\nF:lib\nR:libcrypto.so.1.1\na:0:0:755\nZ:Q1f/TrTwFtSlD1k639L+FfsTkJWPY=\nF:usr\nF:usr/lib\nR:libcrypto.so.1.1\na:0:0:777\nZ:Q1T2si+c7ts7sgDxQYve4B3i1Dgo0=\nF:usr/lib/engines-1.1\nR:afalg.so\na:0:0:755\nZ:Q1Oljrwcq5h1sKPXcImsYYWLqm9SA=\nR:capi.so\na:0:0:755\nZ:Q1Xtf9a1EQ1VWfygx1oNhMvNoNZzw=\nR:padlock.so\na:0:0:755\nZ:Q1ttkhyM+fT6wkUcV9zgXXTTF7VNo=\n\nC:Q1ciplPwPAKDa19jkbxYjiiv+G5Es=\nP:libssl1.1\nV:1.1.1q-r0\nA:x86_64\nS:213294\nI:540672\nT:SSL shared libraries\nU:https://www.openssl.org/\nL:OpenSSL\no:openssl\nm:Timo Teras <timo.teras@iki.fi>\nt:1657033577\nc:26153b65138c876d57e81750f6de6baab6d5bd5b\nD:so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1\np:so:libssl.so.1.1=1.1\nr:libressl\nF:lib\nR:libssl.so.1.1\na:0:0:755\nZ:Q1/on1tWApiZJE4XvUyE6MTFO2MY0=\nF:usr\nF:usr/lib\nR:libssl.so.1.1\na:0:0:777\nZ:Q18j35pe3yp6HOgMih1wlGP1/mm2c=\n\nC:Q1KWJXawaNPiINHfdzCg/FrEmiAaU=\nP:ssl_client\nV:1.35.0-r17\nA:x86_64\nS:5004\nI:28672\nT:EXternal ssl_client for busybox wget\nU:https://busybox.net/\nL:GPL-2.0-only\no:busybox\nm:Sören Tempel <soeren+alpine@soeren-tempel.net>\nt:1659366884\nc:2bf6ec48e526113f87216683cd341a78af5f0b3f\nD:so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1 so:libssl.so.1.1\np:cmd:ssl_client=1.35.0-r17\ni:busybox=1.35.0-r17 libssl1.1\nr:busybox-initscripts\nF:usr\nF:usr/bin\nR:ssl_client\na:0:0:755\nZ:Q1C6qA8RFt5eagesbaqu4plc6Ctyc=\n\nC:Q1Ekuqm/0CPywDCKEbEwhsPCw+z9E=\nP:zlib\nV:1.2.12-r3\nA:x86_64\nS:53346\nI:110592\nT:A compression/decompression Library\nU:https://zlib.net/\nL:Zlib\no:zlib\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1660030129\nc:57ce38bde7ce42964b664c137935cf2de803ac44\nD:so:libc.musl-x86_64.so.1\np:so:libz.so.1=1.2.12\nF:lib\nR:libz.so.1\na:0:0:777\nZ:Q1+aBjyJ7dmLatVkyqCNnAChlDZh8=\nR:libz.so.1.2.12\na:0:0:755\nZ:Q1x/qx/7zlM20k7fLfVee7A4WLOC8=\n\nC:Q1VFFFWMKjB9aRkehIATc5kwgAhlU=\nP:apk-tools\nV:2.12.9-r3\nA:x86_64\nS:120745\nI:307200\nT:Alpine Package Keeper - package manager for alpine\nU:https://gitlab.alpinelinux.org/alpine/apk-tools\nL:GPL-2.0-only\no:apk-tools\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1652592000\nc:34d90ac8388e88126893f5d27ea35d304e65e5ab\nD:musl>=1.2 ca-certificates-bundle so:libc.musl-x86_64.so.1 so:libcrypto.so.1.1 so:libssl.so.1.1 so:libz.so.1\np:so:libapk.so.3.12.0=3.12.0 cmd:apk=2.12.9-r3\nF:etc\nF:etc/apk\nF:etc/apk/keys\nF:etc/apk/protected_paths.d\nF:lib\nR:libapk.so.3.12.0\na:0:0:755\nZ:Q1kVeagJvcGMIKp8ijGOxaZD08ONs=\nF:sbin\nR:apk\na:0:0:755\nZ:Q1P1oUBG/VMMhnndf2fBXsZXBjHVE=\nF:var\nF:var/cache\nF:var/cache/misc\nF:var/lib\nF:var/lib/apk\n\nC:Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\nP:scanelf\nV:1.3.4-r0\nA:x86_64\nS:36745\nI:94208\nT:Scan ELF binaries for stuff\nU:https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\nL:GPL-2.0-only\no:pax-utils\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1651005390\nc:d7ae612a3cc5f827289d915783b4cbf8c7207947\nD:so:libc.musl-x86_64.so.1\np:cmd:scanelf=1.3.4-r0\nr:pax-utils\nF:usr\nF:usr/bin\nR:scanelf\na:0:0:755\nZ:Q1YPb72qHJJvTH6mJkN9DuExFQQh8=\n\nC:Q1VVfxM3uSO0X38HWpj1LN0E61fxo=\nP:musl-utils\nV:1.2.3-r0\nA:x86_64\nS:36938\nI:135168\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT BSD GPL2+\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1649396308\nc:ee13d43a53938d8a04ba787b9423f3270a3c14a7\nD:scanelf so:libc.musl-x86_64.so.1\np:cmd:getconf=1.2.3-r0 cmd:getent=1.2.3-r0 cmd:iconv=1.2.3-r0 cmd:ldconfig=1.2.3-r0 cmd:ldd=1.2.3-r0\nr:libiconv\nF:sbin\nR:ldconfig\na:0:0:755\nZ:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\nF:usr\nF:usr/bin\nR:getconf\na:0:0:755\nZ:Q1hRQA0bFX/Ywt3mbD6NpV9BIbPrU=\nR:getent\na:0:0:755\nZ:Q1khbUz6GBU8iiQ3oV6Ln2hlXf4/0=\nR:iconv\na:0:0:755\nZ:Q1H1QpYQDkdYIK2LLGv3m6qjpLyAY=\nR:ldd\na:0:0:755\nZ:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\n\nC:Q1O4GFJRvHz95tPjO84qpEvkNVwDw=\nP:libc-utils\nV:0.7.2-r3\nA:x86_64\nS:1480\nI:4096\nT:Meta package to pull in correct libc\nU:https://alpinelinux.org\nL:BSD-2-Clause AND BSD-3-Clause\no:libc-dev\nm:Natanael Copa <ncopa@alpinelinux.org>\nt:1585632275\nc:60424133be2e79bbfeff3d58147a22886f817ce2\nD:musl-utils\n\n"
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/single",
    "content": "C:Q1bTtF5526tETKfL+lnigzIDvm+2o=\nP:musl-utils\nV:1.1.24-r2\nA:x86_64\nS:37944\nI:151552\nT:the musl c library (libc) implementation\nU:https://musl.libc.org/\nL:MIT BSD GPL2+\no:musl\nm:Timo Teräs <timo.teras@iki.fi>\nt:1584790550\nc:4024cc3b29ad4c65544ad068b8f59172b5494306\nD:scanelf so:libc.musl-x86_64.so.1\np:cmd:getconf cmd:getent cmd:iconv cmd:ldconfig cmd:ldd\nr:libiconv\nF:sbin\nR:ldconfig\na:0:0:755\nZ:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\nF:usr\nF:usr/bin\nR:iconv\na:0:0:755\nZ:Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=\nR:ldd\na:0:0:755\nZ:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\nR:getconf\na:0:0:755\nZ:Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=\nR:getent\na:0:0:755\nZ:Q1eR2Dz/WylabgbWMTkd2+hGmEya4="
  },
  {
    "path": "syft/pkg/cataloger/alpine/testdata/very-large-entries",
    "content": "C:Q14H00hU1jLWSRpF3YVM2r0XfpkMw=\nP:ca-certificates-bundle\nV:20220614-r2\nA:x86_64\nS:124673\nI:230631\nT:\nU:\nL:MPL-2.0 AND MIT\nF:etc\nF:etc/ssl\nR:cert.pem\na:0:0:777\nZ:Q1Nj6gTBdkZpTFW/obJGdpfvK0StA=\nF:etc/ssl/certs\nR:ca-certificates.crt\nZ:Q1D8ljYj7pXsRq4d/eHGNYB0GY1+I=\n\nC:Q1vjrZt/52+eb0P8wlhuS6mamVffw=\nP:glibc-locale-posix\nV:2.36-r3\nA:x86_64\nS:69906\nI:383877\nT:POSIX locale data for glibc\nU:\nL:GPL-3.0-or-later\no:glibc\nF:usr\nF:usr/lib\nF:usr/lib/locale\nF:usr/lib/locale/C.utf8\nR:LC_ADDRESS\nZ:Q1EtDgYAVX4Nyzxk5WiUuBIw4uqnI=\nR:LC_COLLATE\nZ:Q18kXjIHmEh50Lc2yapC9CaOJyIbk=\nR:LC_CTYPE\nZ:Q1hunJIRhFRsxgwgwVDeE/PaQmYwQ=\nR:LC_IDENTIFICATION\nZ:Q1Hu7DsssllTDXbvcX4krw/TTZRiQ=\nR:LC_MEASUREMENT\nZ:Q1Cn0NJk+d7ZQFcCDoB7+qE6dXOCE=\nR:LC_MONETARY\nZ:Q1EQ7UfjLWXGGrgkAgL6ohFNAloAk=\nR:LC_NAME\nZ:Q1tdFvEELDwcS++FdmqiwgwbDYz/Y=\nR:LC_NUMERIC\nZ:Q1G9Lz2wQCK4z+XNen+QF28ZHhlCU=\nR:LC_PAPER\nZ:Q1VnqvY5OTE1t24i5yqu4d+Vdk6ZA=\nR:LC_TELEPHONE\nZ:Q1MxbJnhgxhsXK2XpxZ073Qxw9qEU=\nR:LC_TIME\nZ:Q15hmk24d+C1T6FLijmS2itWGzI5s=\nF:usr/lib/locale/C.utf8/LC_MESSAGES\nR:SYS_LC_MESSAGES\nZ:Q1V01+kr7fE3PslQaFmw1V7nurvyA=\n\nC:Q1vE6OrAg0ZlA41kAcHe6pGxsZqpI=\nP:wolfi-baselayout\nV:20221104-r0\nA:x86_64\nS:11340\nI:85348\nT:baselayout data for Wolfi\nU:\nL:MIT\no:wolfi-baselayout\nD:glibc-locale-posix\nF:bin\nF:etc\nR:group\nZ:Q13K+olJg5ayzHSVNUkggZJXuB+9Y=\nR:hosts\nZ:Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\nR:inittab\nZ:Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\nR:mtab\na:0:0:777\nZ:Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\nR:nsswitch.conf\nZ:Q173MmSLMjpUL3AfwRM+tlucga340=\nR:os-release\nZ:Q1NPSMwpsMTUFlhPesIil43FQH33s=\nR:passwd\nZ:Q1TchuuLUfur0izvfZQZxgN/LJhB8=\nR:profile\nZ:Q1Ja6003ivXdHyYFiIaawZsN9kgao=\nR:protocols\nZ:Q1omKlp3vgGq2ZqYzyD/KHNdo8rDc=\nR:services\nZ:Q19WLCv5ItKg4MH7RWfNRh1I7byQc=\nR:shadow\na:0:0:600\nZ:Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\nR:shells\nZ:Q1OL/Cbgzqax8cNYtMjI8GfMtAcqY=\nF:etc/profile.d\nR:locale.sh\nZ:Q1S8j+WW71mWxfVy8ythqU7HUVoBw=\nF:etc/secfixes.d\nR:wolfi\nZ:Q1X/9a6jBiNHCLGVLFZZBGON24xHc=\nF:home\nF:lib\nF:\nR:lib64\na:0:0:777\nZ:Q1nQYrr/8XuouaEhXExRSFE01QnZE=\nF:root\nF:tmp\nF:usr\nR:lib64\na:0:0:777\nZ:Q1nQYrr/8XuouaEhXExRSFE01QnZE=\nF:usr/bin\nF:usr/local\nR:lib64\na:0:0:777\nZ:Q1nQYrr/8XuouaEhXExRSFE01QnZE=\nF:usr/sbin\nF:var\nF:var/spool\nR:mail\na:0:0:777\nZ:Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\nF:var/spool/cron\nR:crontabs\na:0:0:777\nZ:Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\n\nC:Q1MsEnqPL77V2/LtDBEEIcO90B+sQ=\nP:glibc\nV:2.36-r3\nA:x86_64\nS:2608017\nI:5470290\nT:the GNU C library\nU:\nL:GPL-3.0-or-later\no:glibc\nD:!musl so:ld-linux-x86-64.so.2 so:libc.so.6 so:libm.so.6 so:libresolv.so.2 wolfi-baselayout\np:cmd:ldconfig=2.36-r3 so:ld-linux-x86-64.so.2=2 so:libBrokenLocale.so.1=1 so:libanl.so.1=1 so:libc.so.6=6 so:libc_malloc_debug.so.0=0 so:libcrypt.so.1=1 so:libdl.so.2=2 so:libm.so.6=6 so:libmvec.so.1=1 so:libnsl.so.1=1 so:libnss_compat.so.2=2 so:libnss_dns.so.2=2 so:libnss_files.so.2=2 so:libpthread.so.0=0 so:libresolv.so.2=2 so:librt.so.1=1 so:libthread_db.so.1=1 so:libutil.so.1=1\nF:etc\nR:ld.so.conf\nZ:Q11VhjuYYcqng196eHi2SGUlQzFtw=\nR:rpc\nZ:Q1jGjIKDdX2z6RCGWyRQdzh/kWagg=\nF:lib64\nR:ld-linux-x86-64.so.2\na:0:0:755\nZ:Q1LnOyytVpetcSAb6WRsacraVYBkI=\nR:libBrokenLocale.so.1\na:0:0:755\nZ:Q1eC9F3DOPOO0a05e8ZxdrCtu9py4=\nR:libanl.so.1\na:0:0:755\nZ:Q15GzMS2TXC/ZodkMxfsoLX4wLGYQ=\nR:libc.so.6\na:0:0:755\nZ:Q1y4AyYr5oAjX0wAlJ1zD/8fBVO/Y=\nR:libc_malloc_debug.so.0\na:0:0:755\nZ:Q1ifnOx/hBHVa27vQRDucGm7uCBYk=\nR:libcrypt.so.1\na:0:0:755\nZ:Q18H/UXLkzmaq+PExsi4mL/LY8KSk=\nR:libdl.so.2\na:0:0:755\nZ:Q1K3PoI7dkYP2h6nw83Rlt3vHm6Xo=\nR:libm.so.6\na:0:0:755\nZ:Q1ZTl/HxwMKNrfmu98kbJUAEMHOP8=\nR:libmemusage.so\na:0:0:755\nZ:Q1fXgR6QAM5p55IpyX7MafLNsSINI=\nR:libmvec.so.1\na:0:0:755\nZ:Q1GCyhmufuKMbww6+8zb7+8uU3u1o=\nR:libnsl.so.1\na:0:0:755\nZ:Q1nRwKYSi3VGR4DqXtHs106plNR7Y=\nR:libnss_compat.so.2\na:0:0:755\nZ:Q1uo5MQi6n3x1jlUCMX05RXtJ7ZsY=\nR:libnss_dns.so.2\na:0:0:755\nZ:Q1khN2BTrLPyo+R1+UYqDfUG4fbAs=\nR:libnss_files.so.2\na:0:0:755\nZ:Q17gDUlwM9bdsodR6DxOkW+O5atxI=\nR:libpthread.so.0\na:0:0:755\nZ:Q1XPHP5iZpH+fQluYL4aCwlfHOD9A=\nR:libresolv.so.2\na:0:0:755\nZ:Q1YrVQGHbHILR6BAKYdZz9/jPH8Vs=\nR:librt.so.1\na:0:0:755\nZ:Q1xTesC+Lgn6c1P3LIPbjKTf6GvGs=\nR:libthread_db.so.1\na:0:0:755\nZ:Q1cVx8+y+I5DMC0kZqLXZyAJoSPnc=\nR:libutil.so.1\na:0:0:755\nZ:Q1CazBe/HTP4GHtLU0c+NsCyau2fI=\nF:sbin\nR:ldconfig\na:0:0:755\nZ:Q1rfqpiXJAggkCtihwII8mq2up4RU=\nF:usr\nF:usr/bin\nR:ld.so\na:0:0:777\nZ:Q1L8mewoQ5BgYcl1REgG4LhstGVZo=\nF:usr/lib\nF:usr/lib/audit\nF:usr/lib/locale\nF:usr/sbin\nF:usr/share\nF:var\n\nC:Q1BerpZNT6Arh/fbzE7fKn9gCL07Y=\nP:libcrypto3\nV:3.0.7-r0\nA:x86_64\nS:1923985\nI:4514040\nT:OpenSSL libcrypto library\nU:\nL:Apache-2.0\no:openssl\nD:so:libc.so.6\np:so:libcrypto.so.3=3\nF:usr\nF:usr/lib\nR:libcrypto.so.3\na:0:0:755\nZ:Q1MfFt04kQfa0ujLq5b9/golj5osQ=\n\nC:Q1Y/rBTiFEM/tV0SXe2TkswXe6UYw=\nP:libssl3\nV:3.0.7-r0\nA:x86_64\nS:290660\nI:704384\nT:OpenSSL libssl library\nU:\nL:Apache-2.0\no:openssl\nD:so:libc.so.6 so:libcrypto.so.3\np:so:libssl.so.3=3\nF:usr\nF:usr/lib\nR:libssl.so.3\na:0:0:755\nZ:Q1fD0OnuVkQs48h0Av0BO9zDEh9Ow=\n\nC:Q1SZ93Qkrcyv5lFXNe3DoCfpEmaj8=\nP:zlib\nV:1.2.13-r1\nA:x86_64\nS:66486\nI:150299\nT:a library implementing the zlib compression algorithms\nU:\nL:MPL-2.0 AND MIT\no:zlib\nD:so:libc.so.6\np:so:libz.so.1=1\nF:lib\nR:libz.so.1\na:0:0:777\nZ:Q16A/yKXYR0EF3avf+wJzXcNLZHgU=\nR:libz.so.1.2.13\na:0:0:755\nZ:Q1s2EmwP2ofdlZKZDdUkTYf1tlRzk=\nF:usr\nF:usr/share\nF:usr/share/man\nF:usr/share/man/man3\nR:zlib.3\nZ:Q15O7ynZjMFnUfHaxCMXtneVXO7JQ=\n\nC:Q1N2QiJqrU5FIf3fuxLD231UXxS78=\nP:apk-tools\nV:2.12.9-r3\nA:x86_64\nS:148900\nI:393235\nT:apk-tools (Wolfi package manager)\nU:\nL:GPL-2.0-only\nD:ca-certificates-bundle so:libapk.so.3.12.0 so:libc.so.6 so:libcrypto.so.3 so:libssl.so.3 so:libz.so.1\np:cmd:apk=2.12.9-r3 so:libapk.so.3.12.0=3.12.0\nF:etc\nF:etc/apk\nF:etc/apk/keys\nF:etc/apk/protected_paths.d\nF:lib\nR:libapk.so.3.12.0\na:0:0:755\nZ:Q1zaNY4VnfPlJtk7qZ0ljozeh/h8Q=\nF:sbin\nR:apk\na:0:0:755\nZ:Q1c1vGI+JHdz9fOI3I3Cfsa+nAZRM=\nF:usr\nF:usr/share\nF:usr/share/doc\nF:usr/share/doc/apk\nR:README.md\na:0:0:755\nZ:Q1KwwVhxdDuMyj+D/758Dt9RjncQI=\nF:usr/share/man\nF:usr/share/man/man5\nR:apk-cache.5\na:0:0:755\nZ:Q1LnABjN/UqG7VsBbFnuqjBy8ny+M=\nR:apk-keys.5\na:0:0:755\nZ:Q1zj+cS7LWfwVE/z3pCUOb1cqFKlg=\nR:apk-repositories.5\na:0:0:755\nZ:Q1Cbx0X2FQdWjW5W4msfWk4vr6Ec0=\nR:apk-world.5\na:0:0:755\nZ:Q1MSbXWCqugOwsHIZXZ9/pT1UceaM=\nF:usr/share/man/man8\nR:apk-add.8\na:0:0:755\nZ:Q1szS9TilZVRvimd0TRQVHFnOwfBc=\nR:apk-audit.8\na:0:0:755\nZ:Q1ILgqveV+o/nVxnmHOhmB8WVUH2U=\nR:apk-cache.8\na:0:0:755\nZ:Q1dftXjdCy2wNsfMQAnG+KmQYKEVY=\nR:apk-del.8\na:0:0:755\nZ:Q1jR6FKl1P+qTBcMRjDyjl+BeC9LM=\nR:apk-dot.8\na:0:0:755\nZ:Q1yGqHnQPwDaC/nReCwDP6J/VdIz8=\nR:apk-fetch.8\na:0:0:755\nZ:Q1HDOhq0dRSURdiyNeillUtS5ElEw=\nR:apk-fix.8\na:0:0:755\nZ:Q1ecZFYaJ28/SgRPbRXNJX9NXpUhE=\nR:apk-index.8\na:0:0:755\nZ:Q1x+UtvTK+PZgN+HWiff6Rdt9ADPk=\nR:apk-info.8\na:0:0:755\nZ:Q1jGOvgaAlpBrBCI+orNB66y/P+0k=\nR:apk-list.8\na:0:0:755\nZ:Q1cedB/m5ojmAlg91L7MkHAqaIoiA=\nR:apk-manifest.8\na:0:0:755\nZ:Q1cmmlgD4z+qeOJzLwwy3Q099gr14=\nR:apk-policy.8\na:0:0:755\nZ:Q1CNJxD22K1nyNgHFnaykLW3hPo3M=\nR:apk-search.8\na:0:0:755\nZ:Q1cLDjp6p56sXgOQVyz/qfgyVdog8=\nR:apk-stats.8\na:0:0:755\nZ:Q111sLgQUcU1bNLj6tdadekR4+yzQ=\nR:apk-update.8\na:0:0:755\nZ:Q1TlrfSS3xXNlDLpks/VdwXdgslA0=\nR:apk-upgrade.8\na:0:0:755\nZ:Q1enwS16cgzqRjdS0allGEKVoxQ4o=\nR:apk-verify.8\na:0:0:755\nZ:Q1af+bYBNkgX8chKNd73WqC4nLNF8=\nR:apk-version.8\na:0:0:755\nZ:Q177YY/ADJDH06sAxxRputucpQkls=\nR:apk.8\na:0:0:755\nZ:Q1LcbycOQZJEXbe/nttXZUUilOnos=\nF:var\nF:var/cache\nF:var/cache/misc\nF:var/lib\nF:var/lib/apk\n\nC:Q1Bo+/50cANbvJ/z84PyF0L6g99Vo=\nP:ncurses-terminfo-base\nV:6.3-r2\nA:x86_64\nS:90973\nI:572294\nT:descriptions of common terminals\nU:\nL:MIT\nF:etc\nF:etc/terminfo\nF:etc/terminfo/a\nR:alacritty\nZ:Q1SBQVDwdLT0MFLx9Ry7CIxmRv+sg=\nR:ansi\nZ:Q1tSEa5MINaemROxdcNkXFzpeDfOM=\nF:etc/terminfo/d\nR:dumb\nZ:Q130tNj6QTfoVRDdsEyEzHsL/FGPY=\nF:etc/terminfo/g\nR:gnome\nZ:Q17R2bGGSiYsK51TRpQ71eEWnFgAY=\nR:gnome+pcfkeys\nZ:Q1FHQ6xKAYuPPR4uUA6m9UbcQ+zsM=\nR:gnome-2007\nZ:Q1QoE2KYXaa1kJA2AXWkqDgVOMQD0=\nR:gnome-2008\nZ:Q1rT88gFva/Ae9An34pxtG8mweXpM=\nR:gnome-2012\nZ:Q1TH+rOqqCFDbzsa1zQlGoovK0gOE=\nR:gnome-256color\nZ:Q17Ux5y36tPqt+d2Up0dMzbfG/ySY=\nR:gnome-fc5\nZ:Q15LkbGHADcpQWDuVeDNaXYU3T+/A=\nR:gnome-rh62\nZ:Q1NDCMNY7jzwy50XkbNKhj41bqgik=\nR:gnome-rh72\nZ:Q19XsIx7kLO/tsXM02kI6Z/PuOemk=\nR:gnome-rh80\nZ:Q1zqRelvXVrfXvlRtKOO0qgKh2lrg=\nR:gnome-rh90\nZ:Q1WJCtBxYwTNty6SDVtUslksZf1iM=\nF:etc/terminfo/k\nR:konsole\nZ:Q1rwck7y/z7Rb07W2D2iL+zKWE3VI=\nR:konsole+pcfkeys\nZ:Q1XKGA/gQ9L3m4MsjE40iWTB84s3Q=\nR:konsole-16color\nZ:Q1OA0RiC0eUzY4hKem5VjvgR/YFn4=\nR:konsole-256color\nZ:Q1UjNMXNH3cQPXB4sSZVPQDOvCa30=\nR:konsole-base\nZ:Q1qyVCInIUgVN4PyympIIoVXcNWvk=\nR:konsole-direct\nZ:Q1QFNeMvVSrD8VyxNsqXurrnu9X2k=\nR:konsole-linux\nZ:Q1yZUYkFeDfhTBgcocguqvaMS9Xfs=\nR:konsole-solaris\nZ:Q1m3KxSkMrizWJkc7Y/vP1ODX/L7E=\nR:konsole-vt100\nZ:Q14DfLgj5vXdGk6n95WJfazcuSjMQ=\nR:konsole-vt420pc\nZ:Q1zU834xN2O8aJd47ANZ8x17puAVc=\nR:konsole-xf3x\nZ:Q1qnBqAXnD1A/0nJIndYHYgecPvNo=\nR:konsole-xf4x\nZ:Q1vXDIUKaA1wDz19hbpg3hL/AW2+k=\nF:etc/terminfo/l\nR:linux\nZ:Q1zqBnMkPfGLaYLeVvlTza79ph0l0=\nF:etc/terminfo/p\nR:putty\nZ:Q1fwBZxVxhL3jVbCMmx+vX9AyU/RY=\nR:putty+fnkeys\nZ:Q1lR/hBIF2ecKE6oIbPg9UVMLqIpE=\nR:putty+fnkeys+esc\nZ:Q1ySMCGMhzcXzSIx/W4BxRzgx5sLg=\nR:putty+fnkeys+linux\nZ:Q1D1wtKFsmLllOvIIpspL/T5r16P8=\nR:putty+fnkeys+sco\nZ:Q1n25llEnhN1O0W8T5nJuK4OpBpEg=\nR:putty+fnkeys+vt100\nZ:Q1vGLJ5vDSVFN8o/AakEJ0w9a2P6c=\nR:putty+fnkeys+vt400\nZ:Q1PUxtfnr11mD3BXcotnqpps7b+Wc=\nR:putty+fnkeys+xterm\nZ:Q1WIITBgjQs/KPPUMNn7/h1jbFb+M=\nR:putty+keypad\nZ:Q1W+cae7qyvISklVAe5dKkiSc69sE=\nR:putty+screen\nZ:Q1mqeaCtEIlYoH/c7dqOX/6FS5DP8=\nR:putty-256color\nZ:Q13o+liBG2ZnAlqgKIfSCc9TTISwg=\nR:putty-m1\nZ:Q1NW1uDRt+wgo1hwK+zCmk4cDbCMI=\nR:putty-m1b\nZ:Q1qVpU4cQ+C4oXevC/d2X+iECdzv4=\nR:putty-m2\nZ:Q1BOfFWg7FmLCwShKz9AgVhb/lpI4=\nR:putty-noapp\nZ:Q1YAcqj823Lw/2G7Fv8kcsjWALycc=\nR:putty-sco\nZ:Q1fc5RVQT8PtgQ/AYL9MXJTnasMEo=\nR:putty-screen\nZ:Q1hSUXIYbnOZY/GCxOKF7uCfTtLm0=\nR:putty-vt100\nZ:Q19APQYiBausTcpdkKTDe+Yft+2p0=\nF:etc/terminfo/s\nR:screen\nZ:Q1V38tyMOJBsFNgQv0gG9MHao+RT4=\nR:screen+fkeys\nZ:Q1yrMPTmATNbHUIiWT8EfUhlFiFoI=\nR:screen+italics\nZ:Q1HkquOWNOFqlcWgmYHJ2BubeIphA=\nR:screen-16color\nZ:Q1Irp99YcVroDYpriCLlODk3lzFRU=\nR:screen-16color-bce\nZ:Q1N0xcD/zUNRbN6ThP1dmpp1ViyRQ=\nR:screen-16color-bce-s\nZ:Q1UBngEY4n70yAfMVxbYZKwPjDqBY=\nR:screen-16color-s\nZ:Q1vtCMskuMZ5InIV5CMyZvk9V8pYk=\nR:screen-256color\nZ:Q15DQkXMJU03rRyAGPIp6bwzFpm0s=\nR:screen-256color-bce\nZ:Q1uBhUKluuWQnJn0sZhgiI3t1eHCI=\nR:screen-256color-bce-s\nZ:Q1WTdqQSaZ/DedjTq045hcnTe3XIc=\nR:screen-256color-s\nZ:Q1fzr2CizOU2R2psxWA78YIs317sU=\nR:screen-bce\nZ:Q12Ucf0tn8V9tj6h75B4+6Ar9NC5U=\nR:screen-bce.Eterm\nZ:Q1Zcvt47GVmm+539w/RdltFOEm7PY=\nR:screen-bce.gnome\nZ:Q1dHvk7ayBD/8JKojsSHTkqKhxicE=\nR:screen-bce.konsole\nZ:Q1ddEiL4GFoNKvOOsu8x2gfqjpBPM=\nR:screen-bce.linux\nZ:Q1NnZuyP8G1I0BAM1IIsQi3RQ5Ia0=\nR:screen-bce.mrxvt\nZ:Q1RPPkZqeLaPy8nrb/0Jv/wdobRZM=\nR:screen-bce.rxvt\nZ:Q1Opn7gcbko6SnsZnY5dpeRSoICrM=\nR:screen-bce.xterm-new\nZ:Q1SVVbWCij1+ID6V2sH1riYXhtVS0=\nR:screen-s\nZ:Q1/LgVhI3EC6uLkP4EJQabUmB9N5Y=\nR:screen-w\nZ:Q1T++UJ5NJ5/l+ZbDiXIG2qsVqMl0=\nR:screen.Eterm\nZ:Q1BlHkLoFEbnUa2WSl5IVUxfkkJA8=\nR:screen.gnome\nZ:Q1+uX6Ziondck293K5BD8HySwlv/0=\nR:screen.konsole\nZ:Q1XqvwlRxrFmQ4fDOASO9U0g80wMA=\nR:screen.konsole-256color\nZ:Q18hhpBxkbPe4eZGF32I+g+ELDTno=\nR:screen.linux\nZ:Q1QBBqBB3w+XiQam2gm9BlHttBHB4=\nR:screen.linux-m1\nZ:Q1ol3LPhhDRx+h4a4WWLKS+WB+Vn0=\nR:screen.linux-m1b\nZ:Q13aYBwyQg6bif4PC+MYE2Fn5lZ3g=\nR:screen.linux-m2\nZ:Q1g4gpXooZrfyrG96AL/xe6gT00OY=\nR:screen.linux-s\nZ:Q1QBBqBB3w+XiQam2gm9BlHttBHB4=\nR:screen.minitel1\nZ:Q1yabCCabW46CmnytTbE2aXQpPKGo=\nR:screen.minitel1-nb\nZ:Q1r6r/K29FBRi5eGRP8laSDTt6O4M=\nR:screen.minitel12-80\nZ:Q1cS0EINUxdNnfnk8DLzxjp4u+dHI=\nR:screen.minitel1b\nZ:Q1OGDK5C+mmaMBdY+T4Tz0kPrbFR0=\nR:screen.minitel1b-80\nZ:Q1cS0EINUxdNnfnk8DLzxjp4u+dHI=\nR:screen.minitel1b-nb\nZ:Q1ogXu4uAwjgvNRHJ2egfNiIGrw7s=\nR:screen.minitel2-80\nZ:Q1cS0EINUxdNnfnk8DLzxjp4u+dHI=\nR:screen.mlterm\nZ:Q1sKLtivfR801d3B3UTfQEwyYzBSs=\nR:screen.mlterm-256color\nZ:Q1L1aIN6FOc0EKlgj/FlTma6hExyI=\nR:screen.mrxvt\nZ:Q1URMKFVqpoVNtC3Il8p7GtbA2UBs=\nR:screen.putty\nZ:Q1hiY+VN0vokY5RixgImvDhLo6jbY=\nR:screen.putty-256color\nZ:Q1esjonNQbGWNK7BeTS6UIG8hvU1E=\nR:screen.putty-m1\nZ:Q1bG4j3c7KmttGmP8gEMLE47i0GUI=\nR:screen.putty-m1b\nZ:Q1uMWNu9dI35sCyk1Kn0ydCbIEwak=\nR:screen.putty-m2\nZ:Q1ZJC4IRGqI4q5lwm0UIyfJIbcLdk=\nR:screen.rxvt\nZ:Q1w2X4KFU78ZCrguwhmlSaFTF+P1k=\nR:screen.teraterm\nZ:Q1Dbhi+8nItHz3CkxT2T93pn6h/0U=\nR:screen.vte\nZ:Q1oaiCW4Jkamc5jnJ2VkCWuZomd3k=\nR:screen.vte-256color\nZ:Q1PAdDAoixUuzUBXKuAEp0gPPW0Rc=\nR:screen.xterm-256color\nZ:Q1oFC+wePWD3sbCdqYe+/G41GXEsI=\nR:screen.xterm-new\nZ:Q1IpVWCffydBrKBQanWbjPFIx+6Ks=\nR:screen.xterm-r6\nZ:Q1Udlh2qD17VFjgZesyrFj5Xzo4NU=\nR:screen.xterm-xfree86\nZ:Q1IpVWCffydBrKBQanWbjPFIx+6Ks=\nR:screen2\nZ:Q1Iz7gQ5M1Q3bf8fa7dSO79IemiyY=\nR:screen3\nZ:Q1ot2gPB6I0eCg5uEloO0KTO79igk=\nR:screen4\nZ:Q1wHqpfzkXCBca9blWmcjtWVI5mjo=\nR:screen5\nZ:Q11bgs/BGE4SrxTqeGs7HNqmZaLNM=\nR:st-0.6\nZ:Q1Yc/rLOMykAaBQd87OeJ5IPb94pM=\nR:st-0.7\nZ:Q1gpkXYCCU23M0tXFFMnliWbQGwaI=\nR:st-0.8\nZ:Q1d5C3ofNwEoPxIuYeGUlxJ1k5nQc=\nR:st-16color\nZ:Q1rh2yxPaZuRw4Ah2AeRz709X3rt8=\nR:st-256color\nZ:Q1e6UrcVyifSsc983TbZodTEibs+U=\nR:st-direct\nZ:Q1x5IlvQ/Obz9Kz0gkkXXIcz8B3W4=\nR:sun\nZ:Q1+vaxsz1sOmquMfe2V4ELYXHZGo0=\nF:etc/terminfo/t\nR:terminator\nZ:Q1ZaHIEJRXijIBfCEoNHdQZnWFekA=\nR:terminology\nZ:Q1RWaUXQuWsqKBpDKE8tyuoBSqIx4=\nR:terminology-0.6.1\nZ:Q1YVrH2d7Yd3toxUdm0hzJDHFONVM=\nR:terminology-1.0.0\nZ:Q1nXdPeE+uMEEuGQJm7vEJ0y0L+f0=\nR:terminology-1.8.1\nZ:Q1mSsNz02kKW0/iznWnDnh8dhhHQ0=\nR:tmux\nZ:Q1Xc6J+V7Y8SU6EFqIe1S/CYIqkbg=\nR:tmux-256color\nZ:Q1YCuz8ckBlf3OzQod98AbpgBjMlU=\nR:tmux-direct\nZ:Q1FNYfhBOF+1yvMCkoWktXUc5YC1M=\nF:etc/terminfo/v\nR:vt100\nZ:Q1/75+ot2phUvK/NurRLgscS3WLRc=\nR:vt100+\nZ:Q1OdduCifstIj/FKKNqcT/bVGIlWQ=\nR:vt100+4bsd\nZ:Q17hn9TeHTLQ9e2xEGRR0QxxYdNTU=\nR:vt100+enq\nZ:Q1oID7ISM7hBqeZbtxdWF+YwUULxQ=\nR:vt100+fnkeys\nZ:Q1pHx9bii9EBkW34HN6UmsDrKVNKE=\nR:vt100+keypad\nZ:Q1dLvYMnRmvIjZ0I3O1t4VEf+Zkgc=\nR:vt100+pfkeys\nZ:Q18sxt/SZii38EFd2Bx1tPWr2PWsQ=\nR:vt100-am\nZ:Q1/75+ot2phUvK/NurRLgscS3WLRc=\nR:vt100-bm\nZ:Q1r79dx38W4cWpgs6cUU8ZOZPYDrU=\nR:vt100-bm-o\nZ:Q1r79dx38W4cWpgs6cUU8ZOZPYDrU=\nR:vt100-bot-s\nZ:Q1kelbqOjTFArYGyE+HSeYiOscKvU=\nR:vt100-nam\nZ:Q1NcowRCZU39leMUmopnHHkXt7At8=\nR:vt100-nam-w\nZ:Q1eqI0a6InzKRaC+dlzv59Oh3fA+s=\nR:vt100-nav\nZ:Q1N2OJFc44dezWO0nMiUsvhLThvR0=\nR:vt100-nav-w\nZ:Q1+wVHX4xkexSRnR+RLbJ15pSaOkc=\nR:vt100-putty\nZ:Q1LdQ8dVcbZKR2gv7gAXqgbhbxsLg=\nR:vt100-s\nZ:Q1tmuZ4S+BiBF6LapZB1md2NjvV2s=\nR:vt100-s-bot\nZ:Q1kelbqOjTFArYGyE+HSeYiOscKvU=\nR:vt100-s-top\nZ:Q1tmuZ4S+BiBF6LapZB1md2NjvV2s=\nR:vt100-top-s\nZ:Q1tmuZ4S+BiBF6LapZB1md2NjvV2s=\nR:vt100-vb\nZ:Q1CRyQdCTKzOpY2cezR7V6VbNF6ck=\nR:vt100-w\nZ:Q1AvXkPkDbXppspUOuuu7PNctxR5k=\nR:vt100-w-am\nZ:Q1AvXkPkDbXppspUOuuu7PNctxR5k=\nR:vt100-w-nam\nZ:Q1eqI0a6InzKRaC+dlzv59Oh3fA+s=\nR:vt100-w-nav\nZ:Q1+wVHX4xkexSRnR+RLbJ15pSaOkc=\nR:vt100nam\nZ:Q1NcowRCZU39leMUmopnHHkXt7At8=\nR:vt102\nZ:Q1dXAz3PJtAc9CFsOg366R9NB0g40=\nR:vt102+enq\nZ:Q1uXoYe1e0SfnllrkCMQbNGNkNBWQ=\nR:vt102-nsgr\nZ:Q1vi7QU4z9XtEnzNzuERFQxD1ciYQ=\nR:vt102-w\nZ:Q1LLNcZbnYwe5X8KhfUDryLJomr0o=\nR:vt125\nZ:Q1mQyPhnUnsvACgPEFcTRxg0+CZP8=\nR:vt131\nZ:Q1LrVBIfKhr/aRXzT8EWoTlvNPsFM=\nR:vt132\nZ:Q1Q16BSmJRy9bkCZ0oXil+1YJk0MM=\nR:vt200\nZ:Q1FgeVyrW4EGuKf3YUpLoB6Be9IUo=\nR:vt200-8\nZ:Q1WjCGWJZPhmrbQmRW/hAaecfKau0=\nR:vt200-8bit\nZ:Q1WjCGWJZPhmrbQmRW/hAaecfKau0=\nR:vt200-js\nZ:Q1goE5MuEOWFnWGTBn425mqj6VWVs=\nR:vt200-old\nZ:Q15vyQ5SJKH2CZx8hKw/ebUXeV3U0=\nR:vt200-w\nZ:Q1X5DATHf/82SJ4h1BDq2GZQmDItc=\nR:vt220\nZ:Q1FgeVyrW4EGuKf3YUpLoB6Be9IUo=\nR:vt220+cvis\nZ:Q1TcjXtwZJZKzc6koswTROePHuhmU=\nR:vt220+cvis8\nZ:Q1mvGQDRvPkDpG6Zgg9ubtGuQyTN8=\nR:vt220+keypad\nZ:Q178hiXbfTH+SsONSj/DedAF7UV+w=\nR:vt220+pcedit\nZ:Q1zuDsKdPmPsSCJ8HXwKDjLSBWhAk=\nR:vt220+vtedit\nZ:Q1JZ+Ku1vuon6v27HfdeSedCRzddY=\nR:vt220-8\nZ:Q1WjCGWJZPhmrbQmRW/hAaecfKau0=\nR:vt220-8bit\nZ:Q1WjCGWJZPhmrbQmRW/hAaecfKau0=\nR:vt220-base\nZ:Q1Uwt3nFGhmPZopQmu2iVkhb5eCEU=\nR:vt220-js\nZ:Q1goE5MuEOWFnWGTBn425mqj6VWVs=\nR:vt220-nam\nZ:Q1UU2Keht6QPCyFNsf6kpKUyuxiEk=\nR:vt220-old\nZ:Q15vyQ5SJKH2CZx8hKw/ebUXeV3U0=\nR:vt220-w\nZ:Q1X5DATHf/82SJ4h1BDq2GZQmDItc=\nR:vt220d\nZ:Q1F+fq9Y2Okb+rDRB/OJQQj0GLH10=\nR:vt52\nZ:Q1vWEHidCSxgxe7l+rGRDv5zDYHJY=\nR:vte\nZ:Q1+7HHqrjIHjN/poSi5MacjUdN8ow=\nR:vte+pcfkeys\nZ:Q1Ofd29jPU8kbI32Y0I5ML3p9s5gA=\nR:vte-2007\nZ:Q11sj5ki1nLxPDHsU3u0YoTkQZ/kk=\nR:vte-2008\nZ:Q1mIK9sDs59hCdNklYZ1AzeF+YyaU=\nR:vte-2012\nZ:Q1dbYEP/Xx9+gVU2O38IiuFq1WEtQ=\nR:vte-2014\nZ:Q1fJeD5IuDrxG7HHJ5oEQRAiAGdXY=\nR:vte-2017\nZ:Q1FxPPGBfKvUSADo3sWUYzfy4q/sg=\nR:vte-2018\nZ:Q12NkM53EAb+vFemiCG1FLdDDZ8yo=\nR:vte-256color\nZ:Q1hWUJAYosVMMAfVIhRzC6ZvErVEQ=\nR:vte-direct\nZ:Q1RyC20CSUITnZmMY1YnfDXULew+E=\nF:etc/terminfo/x\nR:xterm\nZ:Q15YaWh6B6q3skc8rVBnfDT+eRiI4=\nR:xterm+256color\nZ:Q1L6NVGKSFC4ILqAVFSeCF33qCZgk=\nR:xterm+256color2\nZ:Q1UPjpbDjqMT+mNEr501vCNEDKSKE=\nR:xterm+256setaf\nZ:Q1XxF7QU+1R9xFEO/B1zlVUETC1ck=\nR:xterm+88color\nZ:Q1avpN+BjjJ1Q+TNOfAAy9+Jc/osQ=\nR:xterm+88color2\nZ:Q1JxTBM4pivOEuSNBYA+Mx5gqax2w=\nR:xterm+acs\nZ:Q1zdm3QQHAlZGIqvLCMMpm5ZLlW4A=\nR:xterm+alt+title\nZ:Q1DpieGgO90FjOGmidHTbd6rZPHEk=\nR:xterm+alt1049\nZ:Q1J9Z/VL11lUPcySk2gMMXVfx1oVg=\nR:xterm+alt47\nZ:Q1VZXeQ7DkjzQd3dog/YWRHTCKn0E=\nR:xterm+app\nZ:Q1VZcMaApU6Ebf/3+8DKRzWlJOv4I=\nR:xterm+direct\nZ:Q1aE/W1zAYKztyN6SQvrXsjS7V/ac=\nR:xterm+direct16\nZ:Q1lCnCa02ofSK9jxDg5LKhh5x+ZiM=\nR:xterm+direct2\nZ:Q15p+MnytO14B1iZK0bkF0kRJORvA=\nR:xterm+direct256\nZ:Q1za47yO1Vh/MTvbiHjbjxJusXy5A=\nR:xterm+edit\nZ:Q1ELsbAxzjYThTzk16siQtcYBvnLw=\nR:xterm+focus\nZ:Q1weGkgAbnbmW1zaAiH8opL34lffo=\nR:xterm+indirect\nZ:Q1HFgRKVQUIgLh03MtiCyurwKOeUo=\nR:xterm+kbs\nZ:Q1swbGkXgToG2ZySkNX1kO3+m5rXc=\nR:xterm+keypad\nZ:Q1ZzhUHAPykV+ZI6fdVRuOKznAMuU=\nR:xterm+meta\nZ:Q1FFpDzr+hxdIF958g8+0lW+QXRwg=\nR:xterm+noalt\nZ:Q1S3i6CqQyzSehfRjsevoPuJLtNd4=\nR:xterm+noapp\nZ:Q1JO5gf29DMiHdJr75FG0WcxN0SLQ=\nR:xterm+nofkeys\nZ:Q1L9aVQgDcW8YYGMWbbpvZToKphaY=\nR:xterm+nopcfkeys\nZ:Q1HXbb6TIgEwCnp2AKjEzumgR3LeU=\nR:xterm+osc104\nZ:Q1KBwYpGkMWYHQnl8y8TOvOcq5L5U=\nR:xterm+pc+edit\nZ:Q1dkd6M82njhGj/dxboaEi9GONa50=\nR:xterm+pcc0\nZ:Q1QEfZs1q9mA3hGvdK+AOadvGGCnA=\nR:xterm+pcc1\nZ:Q1fy0NdooPcB+CwE7Ia6nSxIAZ/yY=\nR:xterm+pcc2\nZ:Q1R/lJ7HaQBbKfrZ7NpPI9X6FQ3/0=\nR:xterm+pcc3\nZ:Q1z4A8ZLmD7Zvs9lVL1bHyEmEkk6k=\nR:xterm+pce2\nZ:Q1qhc40ujuMFu3n4Bd7cQj4E++4Dg=\nR:xterm+pcf0\nZ:Q1R0i0Wlk/cbVvoaLdCPC1ra6Ivko=\nR:xterm+pcf2\nZ:Q1yr0EM5hA3LO0CEZXXPUz/1VEkog=\nR:xterm+pcfkeys\nZ:Q1qP1SmnMau4NBYlhpTK3YuCbgl3c=\nR:xterm+r6f2\nZ:Q1pVnUt4oulvY18bHcPDNyTzzlc+I=\nR:xterm+sl\nZ:Q1klLNm+MuBq2ZuLmEfchiiVSA0P4=\nR:xterm+sl-alt\nZ:Q1ecQWZKZKtQANoW1LJmCoUFmTtaA=\nR:xterm+sl-twm\nZ:Q1zbtk/0IuYCvrpnaKZl2b/oe4y0M=\nR:xterm+sm+1002\nZ:Q1GrmWFHfpDWE/jeopTHKgx9E24mg=\nR:xterm+sm+1003\nZ:Q1fy6LOm+QOb7x2+poM3fXLSnMKEo=\nR:xterm+sm+1005\nZ:Q1uhosyVp0xR9XRyBeT37eGtAZUlw=\nR:xterm+sm+1006\nZ:Q1aBUjmCsf/qfSFktLg+CyJX6QvSM=\nR:xterm+titlestack\nZ:Q14vQX2yky/A88RNA+Zpm4Rl3zALA=\nR:xterm+tmux\nZ:Q1G9dzKgmIOHDKOPxAyBzNfiFu7pE=\nR:xterm+tmux2\nZ:Q1os735xnwiCgTejhQuIZ8Pp4W50E=\nR:xterm+vt+edit\nZ:Q1qk/dIMCewQqamYvp2q6ZygHTSo4=\nR:xterm+x10mouse\nZ:Q1HXnQoSEznzop2+N+4HmPMks5k9Q=\nR:xterm+x11hilite\nZ:Q1/bo2EKOyaUUGlqGXlV0wXbhiHP4=\nR:xterm+x11mouse\nZ:Q1tjxy1s6hI7F/PXVK21ofirSjJ8Y=\nR:xterm-1002\nZ:Q1MWZVcAvHiT3RRE04AdSNq4sZIfM=\nR:xterm-1003\nZ:Q1owTzPZdYEJiGMJZyA6p5A9WOoEk=\nR:xterm-1005\nZ:Q1598Ekf3R/zCn5UFe4ZcLntPxaec=\nR:xterm-1006\nZ:Q1TKFFDdL0y5oqgqU6Z+qD2dNf8o4=\nR:xterm-16color\nZ:Q1gMi2cxbruXCAhGAJZBBRjAH2ltY=\nR:xterm-24\nZ:Q1oapNs1D1J8HmeUI56Od2pkTWpQg=\nR:xterm-256color\nZ:Q11LSGvGnfs/OSjZ1M0hOdbSHGPnI=\nR:xterm-88color\nZ:Q1/qYIT4BpCvbN9xAw5wE285y0Cjw=\nR:xterm-8bit\nZ:Q1YUe4PGoGFlIq4IM2Roh7a15VZfA=\nR:xterm-basic\nZ:Q1qEpF6NTzTHgJRHXUoKTUiaShWP0=\nR:xterm-bold\nZ:Q1ToiawtRxEUlSs33c8bb8gjIfWNw=\nR:xterm-color\nZ:Q1TtNrrTCdpZUEqJSq+7C9L6sOaBk=\nR:xterm-direct\nZ:Q1lD5ZawA8x/iOr5V+IFY3MqD5xVQ=\nR:xterm-direct16\nZ:Q1jHiYmOb7ZqcTvYk5CjhOQrxarbw=\nR:xterm-direct2\nZ:Q1nXgjzu67fBjsjtPI19liUZKHJ1c=\nR:xterm-direct256\nZ:Q1zU4r8+4RkbZDqSIuQGSvr2LvxTw=\nR:xterm-hp\nZ:Q1eH0ctDma826ueC5+O7kSHsmAem8=\nR:xterm-mono\nZ:Q1VU8fiqRAdT2qrkmxSaSbPkxM+Eg=\nR:xterm-new\nZ:Q1E79nWRDvNJNZSwMrAtcO5n/oNv8=\nR:xterm-nic\nZ:Q1E39AW6DUtnmTuphMgvmTUZ4vpGQ=\nR:xterm-noapp\nZ:Q1QLgWRshjD5/hcGqWKVXPSFOYhsM=\nR:xterm-old\nZ:Q1NJI1d/SlHb56edHWJ00Q4gfSjrc=\nR:xterm-p370\nZ:Q1ER1zNA00GAmhWawZ/Q/T1bUq6+k=\nR:xterm-p371\nZ:Q1+1mpaqDxa/xFi0iZUr9vqj31RLM=\nR:xterm-pcolor\nZ:Q1lWth9qAu6VW1eV4PNZN++Bu0R04=\nR:xterm-r5\nZ:Q1pCg6fPROnkpKnlrBZjKLqNbd9jI=\nR:xterm-r6\nZ:Q1l7/BAQOpjlTrZGoumznZ4jqYMzY=\nR:xterm-sco\nZ:Q11Ph6IN/0K5lG3p5fi4rsWec8jkw=\nR:xterm-sun\nZ:Q1mNXX19R3wWasxSKZFxkQIG+R6UU=\nR:xterm-utf8\nZ:Q1HyfvyHeY5G/MEelsoGLRQGMEJ9Y=\nR:xterm-vt220\nZ:Q1MdFgpIspsWmDWJD/KtbHGmX24tI=\nR:xterm-vt52\nZ:Q15jfF5YGlr6uQvo/eu7AgDbmh8WQ=\nR:xterm-x10mouse\nZ:Q1SRjp+uq30e7k/qNc1MJkWm85iDY=\nR:xterm-x11hilite\nZ:Q1/5tIXxYKcjTCCz/MEo1VrKXS6GM=\nR:xterm-x11mouse\nZ:Q1eDicPTegMkuMFBCXJXg2JdZdRlc=\nR:xterm-xf86-v32\nZ:Q1GYQOWKQbXyiceAc/5esOg9CwAsQ=\nR:xterm-xf86-v33\nZ:Q1tFhiXSZKlxfoBfF+VBWtlVQiHgU=\nR:xterm-xf86-v333\nZ:Q1k+hEAPX/kAjNZFZdNWMOOhIUSP4=\nR:xterm-xf86-v40\nZ:Q136rNySpLwcE/3cxyecmsXxUjPSc=\nR:xterm-xf86-v43\nZ:Q13XRUCCKzmCYk0/If1Tw3OBwhJA0=\nR:xterm-xf86-v44\nZ:Q14XeUpAb1r9MIKlptAhi6rpUx/gs=\nR:xterm-xfree86\nZ:Q1c14wDqoLedyw9mg+mGFWX9P4hNo=\nR:xterm-xi\nZ:Q1j9uojDkw0IKPhMCe2Zj7xDHAqkk=\nR:xterm.js\nZ:Q1/+qQgarNwdoJbFpN50dwO3RYjr4=\nR:xterm1\nZ:Q1kfVqyBCBpQITwz5/TzVhEsQmFts=\nR:xtermc\nZ:Q1jXCJrLO4N6CH+lZMBg7QG/2hMR0=\nR:xtermm\nZ:Q1l+9FIadsdkXvT2XZ/3/Y3SYJyUw=\nR:xterms\nZ:Q1oapNs1D1J8HmeUI56Od2pkTWpQg=\nR:xterms-sun\nZ:Q1pFQ5MU5qg0XRkkmUuOmOPIbQK0k=\n\nC:Q1RtQmDF4aFXTtJFpc9USV/TAXyGY=\nP:ncurses\nV:6.3-r2\nA:x86_64\nS:366093\nI:897745\nT:console display library\nU:\nL:MIT\nD:ncurses-terminfo-base so:libc.so.6 so:libncursesw.so.6\np:cmd:clear=6.3-r2 cmd:infocmp=6.3-r2 cmd:tabs=6.3-r2 cmd:tic=6.3-r2 cmd:toe=6.3-r2 cmd:tput=6.3-r2 cmd:tset=6.3-r2 so:libformw.so.6=6 so:libmenuw.so.6=6 so:libncursesw.so.6=6 so:libpanelw.so.6=6\nF:usr\nF:usr/bin\nR:captoinfo\na:0:0:777\nZ:Q1i0w1ogKhJvdaOUGgUWoJD1qidP8=\nR:clear\na:0:0:755\nZ:Q1u4T7MdVpoHetHkYtvx6mDa0qmag=\nR:infocmp\na:0:0:755\nZ:Q1iAATlPH64JdhO3up9Qno9qYInws=\nR:infotocap\na:0:0:777\nZ:Q1i0w1ogKhJvdaOUGgUWoJD1qidP8=\nR:reset\na:0:0:777\nZ:Q1bkWplsqMHDuwp4B8A53/+wLAytI=\nR:tabs\na:0:0:755\nZ:Q1w91LYTNo8MSPTkQIU0H5SOzvY64=\nR:tic\na:0:0:755\nZ:Q1uHJrjBmmRZBbC18oTDVlgiXeJe8=\nR:toe\na:0:0:755\nZ:Q1791k9G6H3VkK+sZ6oQ0BuGnqMIQ=\nR:tput\na:0:0:755\nZ:Q1lM66Tn5k53RsvmX1nvhJ2NG+4SA=\nR:tset\na:0:0:755\nZ:Q1EHrLXE6ODpbd3dGokwClQM6yxk0=\nF:usr/lib\nR:libformw.so.6\na:0:0:777\nZ:Q1T6GxaiQLSIPCTXnfxAUF/1uaT4o=\nR:libformw.so.6.3\na:0:0:755\nZ:Q1XoFSFBaST1tvS0mRQuvYYgCk1j0=\nR:libmenuw.so.6\na:0:0:777\nZ:Q1OfnJfEdf+oihviQEJIKDMMgrFG8=\nR:libmenuw.so.6.3\na:0:0:755\nZ:Q1Lz4xX8dsCaiBOvrvXLctS2xtuEE=\nR:libncursesw.so.6\na:0:0:777\nZ:Q1ofkNBWnQReDfOWlrAXf4Pt3CdFQ=\nR:libncursesw.so.6.3\na:0:0:755\nZ:Q1w0Mwme7Y1ViyZjlyNmBQ+XpjwTY=\nR:libpanelw.so.6\na:0:0:777\nZ:Q1Byus6+Ryl8rYmWGjFWw+COC1HHM=\nR:libpanelw.so.6.3\na:0:0:755\nZ:Q1GgNOrEMNgbyTjKkWw+9HZHDwYAE=\nR:terminfo\na:0:0:777\nZ:Q1MXKvsYwUVyDNW8Nh3VPnDvdAiY0=\nF:usr/share\nF:usr/share/tabset\nR:std\nZ:Q1CWmyyV2UMMgbDUsF2BFGpsztXzE=\nR:stdcrt\nZ:Q14fri/Eu6Zy/CZVR4C+IddBBqBks=\nR:vt100\nZ:Q1uE+wEmPNADWI6aFk6AvQuOouVrU=\nR:vt300\nZ:Q1UkaYSZUDZxjQVRas78Wci70Xs84=\n\nC:Q1ebvOiSaam4faSgMl2kF9aUXDpiw=\nP:bash\nV:5.2_rc4-r0\nA:x86_64\nS:723546\nI:1867296\nT:GNU bourne again shell\nU:\nL:GPL-3.0-or-later\nD:so:libc.so.6 so:libncursesw.so.6\np:cmd:bash=5.2_rc4-r0\nF:bin\nR:bash\na:0:0:755\nZ:Q1IcEFzAIyqkTCtDKhmQew6ehuQ20=\nF:usr\nF:usr/lib\nF:usr/lib/bash\nR:accept\na:0:0:755\nZ:Q19fA6VBYbpWUv43c1L1xJw22EHAU=\nR:basename\na:0:0:755\nZ:Q1xmrs7diJVVazA5ILF8Othzb7KIA=\nR:csv\na:0:0:755\nZ:Q1F6QxPOMl0QXBcqzzby2fnZEDVhc=\nR:cut\na:0:0:755\nZ:Q1HBEAMRwfTguXL/FiQvCTnGYK/UY=\nR:dirname\na:0:0:755\nZ:Q1AZYqJshY2lHvDgjq0baxC7tcB6U=\nR:dsv\na:0:0:755\nZ:Q1QVZpskshV67/UEAAh7q/sG+XY60=\nR:fdflags\na:0:0:755\nZ:Q1caQls12k1EY/8mrjHhBOlRuGWdU=\nR:finfo\na:0:0:755\nZ:Q1dM7nVtIRnEx52LDfkPY6Zr5l6Ro=\nR:getconf\na:0:0:755\nZ:Q1F1gkuMQE45b126Ailt/4kfJ1nP8=\nR:head\na:0:0:755\nZ:Q1Ys/JuMuSZfNO8vNL4+7s8tWNd2E=\nR:id\na:0:0:755\nZ:Q1kUi823ApkrYnCofKdaUvxUPPmqY=\nR:ln\na:0:0:755\nZ:Q1kLtkpivxjVeIG+LkS7jfDYeWHII=\nR:logname\na:0:0:755\nZ:Q1enwfFlozQgJjhh8WOFVSjXOL4K4=\nR:mkdir\na:0:0:755\nZ:Q1vY0jHxqUUSsXBQAKsE1FIuWTfMs=\nR:mkfifo\na:0:0:755\nZ:Q1QBHI05yXAIpwOPBx0SroVAlLQYs=\nR:mktemp\na:0:0:755\nZ:Q1ODxvDMQ3/m+jJPECB5YtA1dgy2M=\nR:mypid\na:0:0:755\nZ:Q128831MS1sL77JlWLGoGhvspSV40=\nR:pathchk\na:0:0:755\nZ:Q1i4dmbygh0abyp7NBiV1FKX31wBQ=\nR:print\na:0:0:755\nZ:Q1yWjBFfX3VDOjMNlj9bgqJgN2FgQ=\nR:printenv\na:0:0:755\nZ:Q18rSG2bwvCrzL+bdKiguxKZ4VUHI=\nR:push\na:0:0:755\nZ:Q1h/BoY2csQSX3wrlT3bYk+dmSsm8=\nR:realpath\na:0:0:755\nZ:Q158iqbbsrcYZCieMatqNiBcAKc58=\nR:rm\na:0:0:755\nZ:Q1zKHMpWda3YMyMzMddDuePhC4QMI=\nR:rmdir\na:0:0:755\nZ:Q1xqRFw1oVqbPYZZRbKLEqMySuxm8=\nR:seq\na:0:0:755\nZ:Q1/gX3zxHM1RoZkWnkuh9ObRMqZgE=\nR:setpgid\na:0:0:755\nZ:Q1JTujrdDqZGhFLUvD/LvLXNAv08M=\nR:sleep\na:0:0:755\nZ:Q1mCha6RKZyZ6YWoaTvfKQ9Y0nZbE=\nR:stat\na:0:0:755\nZ:Q1TRbeimCfwH1V5BX+SDXBuI6lasM=\nR:strftime\na:0:0:755\nZ:Q1+yr36fazfcY/wxlwRmBt85j5tMM=\nR:sync\na:0:0:755\nZ:Q1P+r8gdLnkLwBmK6XXolqu+DQL9k=\nR:tee\na:0:0:755\nZ:Q1aUMjQJo7C4SqnUW/eaJDDVw4yMs=\nR:truefalse\na:0:0:755\nZ:Q1NAuvG9PyAfSY6sPG3esHRNivAUg=\nR:tty\na:0:0:755\nZ:Q1u8+fMwxZAOIn6SVx1tO5/kB+0pI=\nR:uname\na:0:0:755\nZ:Q19v2ZMxvKmuOBDlraKEfpDJTMh/M=\nR:unlink\na:0:0:755\nZ:Q1hvPe7V6qRLa00kgiR6JNImL1pnA=\nR:whoami\na:0:0:755\nZ:Q1YKd9J7s5m0av3qWfsvlDCFy0t6o=\nF:usr/share\n\nC:Q1Fhp+RkKEXlRAh8GBMhgFhOuvNgE=\nP:libcap\nV:2.26-r0\nA:x86_64\nS:9824\nI:35286\nT:POSIX 1003.1e capabilities\nU:\nL:BSD-3-Clause OR GPL-2.0-only\no:libcap\nD:so:libc.so.6\np:so:libcap.so.2=2\nF:usr\nF:usr/lib\nR:libcap.so.2\na:0:0:777\nZ:Q1UsE3NGOAurUZJlzqp1tWoZPrK8o=\nR:libcap.so.2.26\na:0:0:755\nZ:Q1/VEfYK9XQFmq1TLxMUpAYPsVj58=\n\nC:Q1uJCiPpHloksfemoLfpIsXovK+Rs=\nP:bubblewrap\nV:0.6.2-r0\nA:x86_64\nS:66924\nI:173560\nT:Unprivileged sandboxing tool\nU:\nL:LGPL-2.0-or-later\no:bubblewrap\nD:so:libc.so.6 so:libcap.so.2\np:cmd:bwrap=0.6.2-r0\nF:usr\nF:usr/bin\nR:bwrap\na:0:0:755\nZ:Q104CCQp+q0+pZ9ZBngmxbYc4jdO4=\n\nC:Q1XWZx9lEcTj8ilqIojIdtdx/f3kk=\nP:busybox\nV:1.35.0-r3\nA:x86_64\nS:522410\nI:906802\nT:swiss-army knife for embedded systems\nU:\nL:MIT\no:busybox\nD:so:libc.so.6 so:libcrypt.so.1 so:libm.so.6 so:libresolv.so.2\np:cmd:busybox=1.35.0-r3\nF:bin\nR:busybox\na:0:0:755\nZ:Q1YaIdG9QyViauK51NYvMmqoEjK3E=\nF:etc\nR:securetty\nZ:Q1mB95Hq2NUTZ599RDiSsj9w5FrOU=\nF:sbin\nF:tmp\nM:0:0:1777\nF:usr\nF:usr/bin\nF:usr/sbin\nF:usr/share\nF:usr/share/man\nF:usr/share/man/man1\nF:var\nF:var/cache\nF:var/cache/misc\n\nC:Q1HwV7DiCXKH1aBVOrk5T92yYzzUA=\nP:libbrotlicommon1\nV:1.0.9-r0\nA:x86_64\nS:65139\nI:149488\nT:\nU:\nL:MIT\nD:so:libc.so.6\np:so:libbrotlicommon.so.1=1\nF:usr\nF:usr/lib\nR:libbrotlicommon.so.1\na:0:0:777\nZ:Q12kSCHgoDeYNEcVUixS4YnpolZsM=\nR:libbrotlicommon.so.1.0.9\na:0:0:755\nZ:Q1QvXtoOurt7jHy9tCTavqKmB5P3g=\n\nC:Q16/JFyTzJSMY3yHAu1TwXYuMew6k=\nP:libbrotlidec1\nV:1.0.9-r0\nA:x86_64\nS:23286\nI:59373\nT:\nU:\nL:MIT\nD:so:libbrotlicommon.so.1 so:libc.so.6 so:libm.so.6\np:so:libbrotlidec.so.1=1\nF:usr\nF:usr/lib\nR:libbrotlidec.so.1\na:0:0:777\nZ:Q1kaVgrxSKF1jE3Is8tWupiTHEsD4=\nR:libbrotlidec.so.1.0.9\na:0:0:755\nZ:Q1TJSpBC1puNuW79gXafixiu4k8uo=\n\nC:Q1CsoNSl7wPWl4jLnewzZq4G4LC4Q=\nP:libnghttp2-14\nV:1.49.0-r0\nA:x86_64\nS:84352\nI:199069\nT:nghttp2 client library\nU:\nL:MIT\nD:so:libc.so.6\np:so:libnghttp2.so.14=14\nF:usr\nF:usr/lib\nR:libnghttp2.so.14\na:0:0:777\nZ:Q1Gbnovg4ergD1NVqFMMdCSX3liZA=\nR:libnghttp2.so.14.23.0\na:0:0:755\nZ:Q19sFH61aVWLzwbWViVzYw8U9JCYI=\n\nC:Q1xw2x+8Fipvyg9I+g4byspKbc6Lo=\nP:libcurl4\nV:7.85.0-r1\nA:x86_64\nS:290386\nI:614984\nT:curl library\nU:\nL:MIT\nD:so:libbrotlidec.so.1 so:libc.so.6 so:libcrypto.so.3 so:libnghttp2.so.14 so:libssl.so.3 so:libz.so.1\np:so:libcurl.so.4=4\nF:usr\nF:usr/lib\nR:libcurl.so.4\na:0:0:777\nZ:Q1DHp/h26nd6KEWd20xlB9ckuXP9M=\nR:libcurl.so.4.8.0\na:0:0:755\nZ:Q18lLbMvM0Avr2cQCkC2NncyhRykg=\n\nC:Q1L5hxLDmJdMs88YKWNrLS43u9+Us=\nP:curl\nV:7.85.0-r1\nA:x86_64\nS:87346\nI:233564\nT:URL retrieval utility and library\nU:\nL:MIT\nD:so:libc.so.6 so:libcrypto.so.3 so:libcurl.so.4 so:libssl.so.3 so:libz.so.1\np:cmd:curl=7.85.0-r1\nF:usr\nF:usr/bin\nR:curl\na:0:0:755\nZ:Q1g24aaMrXY0sD2HmNI1jPJB0yyIc=\nF:usr/lib\nR:libcurl.la\na:0:0:755\nZ:Q19sp8dvtePZdiF1SbkcN6D93trUQ=\nF:usr/share\n\nC:Q1/6eaRMWNAHDFUpRF3p7IqEvu6hQ=\nP:expat\nV:2.5.0-r0\nA:x86_64\nS:106406\nI:300026\nT:XML SAX Parser library written in C\nU:\nL:MIT\no:expat\nD:so:libc.so.6 so:libexpat.so.1 so:libm.so.6\np:cmd:xmlwf=2.5.0-r0 so:libexpat.so.1=1\nF:usr\nF:usr/bin\nR:xmlwf\na:0:0:755\nZ:Q1nrd/PlX8U7Lb5yzljpR1e1SmRG0=\nF:usr/lib\nR:libexpat.la\na:0:0:755\nZ:Q1tV2Dll6RiQbncyL9EJ2NZCah+Q4=\nR:libexpat.so.1\na:0:0:777\nZ:Q1/yuoo6jUHOTS9pzlSUG2TGxzh2w=\nR:libexpat.so.1.8.10\na:0:0:755\nZ:Q1x6OLjHv8+0MN6HKx6EJH8j95dtg=\nF:usr/share\nF:usr/share/doc\nF:usr/share/doc/expat\nR:AUTHORS\nZ:Q1pQKrbr1CBt2DhBESebQoIf5EK28=\nR:changelog\nZ:Q1HIAK2YMzJaIuK9nN4O/WpfG6dwI=\n\nC:Q1akIb/J/lWp3coJjs+cAqujKnoso=\nP:libpcre2-8-0\nV:10.40-r0\nA:x86_64\nS:254706\nI:642600\nT:pcre2 runtime library 8-bit\nU:\nL:BSD-3-Clause\nD:so:libc.so.6\np:so:libpcre2-8.so.0=0\nF:usr\nF:usr/lib\nR:libpcre2-8.la\na:0:0:755\nZ:Q1jseRLaw0MQvvqna/gruzVsW0LRw=\nR:libpcre2-8.so.0\na:0:0:777\nZ:Q1ANijmFywwCeKgv0SUrSXPW7W4Nw=\nR:libpcre2-8.so.0.11.0\na:0:0:755\nZ:Q1OihAVYdWvqf5OGhS7qlKpdwtTz8=\n\nC:Q1vMB/9YjjJm1A4JZP2AqEcHS4Fd0=\nP:git\nV:2.38.1-r0\nA:x86_64\nS:7545973\nI:14699811\nT:distributed version control system\nU:\nL:GPL-2.0-or-later\no:git\nD:so:libc.so.6 so:libcurl.so.4 so:libexpat.so.1 so:libpcre2-8.so.0 so:libz.so.1\np:cmd:git-cvsserver=2.38.1-r0 cmd:git=2.38.1-r0 cmd:scalar=2.38.1-r0\nF:usr\nF:usr/bin\nR:git\na:0:0:755\nZ:Q1KTqWdKyRXPYtuR6eGHQDiCBT/PM=\nR:git-cvsserver\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-receive-pack\na:0:0:777\nZ:Q1RvGgvVWSovkkTKMhsSmQKga1PgM=\nR:git-upload-archive\na:0:0:777\nZ:Q1RvGgvVWSovkkTKMhsSmQKga1PgM=\nR:git-upload-pack\na:0:0:777\nZ:Q1RvGgvVWSovkkTKMhsSmQKga1PgM=\nR:scalar\na:0:0:755\nZ:Q1KxqZ8MY704Fgv3Xle9n2XUqC/70=\nF:usr/libexec\nF:usr/libexec/git-core\nR:git\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-add\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-add--interactive\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-am\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-annotate\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-apply\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-archimport\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-archive\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-bisect\na:0:0:755\nZ:Q13MYqE6pEatcAVRc9fL+RjsHEkco=\nR:git-bisect--helper\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-blame\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-branch\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-bugreport\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-bundle\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-cat-file\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-check-attr\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-check-ignore\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-check-mailmap\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-check-ref-format\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-checkout\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-checkout--worker\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-checkout-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-cherry\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-cherry-pick\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-clean\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-clone\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-column\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-commit\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-commit-graph\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-commit-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-config\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-count-objects\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-credential\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-credential-cache\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-credential-cache--daemon\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-credential-store\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-cvsexportcommit\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-cvsimport\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-cvsserver\na:0:0:777\nZ:Q1mhd+FN033p4dpLOc6k8E03rx3ww=\nR:git-describe\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-diagnose\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-diff\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-diff-files\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-diff-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-diff-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-difftool\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-difftool--helper\na:0:0:755\nZ:Q1I3K+GjX/dxN40/Tm5Rx7GERHRz8=\nR:git-env--helper\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fast-export\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fast-import\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fetch\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fetch-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-filter-branch\na:0:0:755\nZ:Q1qoYtNUwLrAKEr1oIBksZco9ii4g=\nR:git-fmt-merge-msg\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-for-each-ref\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-for-each-repo\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-format-patch\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fsck\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fsck-objects\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-fsmonitor--daemon\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-gc\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-get-tar-commit-id\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-grep\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-hash-object\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-help\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-hook\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-http-fetch\na:0:0:755\nZ:Q1LpXGMw6oO/IRtHDSpfe9qpuU8g8=\nR:git-http-push\na:0:0:755\nZ:Q1eS8KM8DLyY0i1YQkgTbx+C4/6NI=\nR:git-index-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-init\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-init-db\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-instaweb\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-interpret-trailers\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-log\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-ls-files\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-ls-remote\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-ls-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-mailinfo\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-mailsplit\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-maintenance\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-base\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-file\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-octopus\na:0:0:755\nZ:Q1D7/bjLf08RRck/mSVIBckjmztZY=\nR:git-merge-one-file\na:0:0:755\nZ:Q122u2LgGsqtiPEzBR/FtOZ4F5JIY=\nR:git-merge-ours\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-recursive\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-resolve\na:0:0:755\nZ:Q1J+dVf9OjJhm+zzJvaWwgKkOkKds=\nR:git-merge-subtree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-merge-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-mergetool\na:0:0:755\nZ:Q1oh/FmxIEQE+sZNsy9CViIDvrAwM=\nR:git-mergetool--lib\nZ:Q1Z5dKeksB/pGnDhupnjvKiIedPsc=\nR:git-mktag\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-mktree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-multi-pack-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-mv\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-name-rev\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-notes\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-p4\na:0:0:755\nZ:Q12x60NfdVmfrSO1WwErBmAmyo2oE=\nR:git-pack-objects\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-pack-redundant\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-pack-refs\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-patch-id\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-prune\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-prune-packed\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-pull\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-push\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-quiltimport\na:0:0:755\nZ:Q1vgM0gyoMYVwLq7g3Han09Hjcs8Y=\nR:git-range-diff\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-read-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-rebase\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-receive-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-reflog\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-remote\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-remote-ext\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-remote-fd\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-remote-ftp\na:0:0:777\nZ:Q16M24c1bKydVoSqKMbb1/ckz7eVw=\nR:git-remote-ftps\na:0:0:777\nZ:Q16M24c1bKydVoSqKMbb1/ckz7eVw=\nR:git-remote-http\na:0:0:755\nZ:Q1vRGVKDquQaM6C7nY55XzCF2NDzQ=\nR:git-remote-https\na:0:0:777\nZ:Q16M24c1bKydVoSqKMbb1/ckz7eVw=\nR:git-repack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-replace\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-request-pull\na:0:0:755\nZ:Q13yT0PTnk1vNfwmtL8fuua6u36KU=\nR:git-rerere\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-reset\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-restore\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-rev-list\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-rev-parse\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-revert\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-rm\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-send-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-sh-i18n\nZ:Q1anABcRiG0ZNXK5QlBenaL88dqRc=\nR:git-sh-i18n--envsubst\na:0:0:755\nZ:Q1UBkCS0+2OUxW8UpjmTXVl3IV9kI=\nR:git-sh-setup\nZ:Q1R9pvD96aw2nXDN3avd/wUqqqpXk=\nR:git-shortlog\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-show\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-show-branch\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-show-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-show-ref\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-sparse-checkout\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-stage\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-stash\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-status\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-stripspace\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-submodule\na:0:0:755\nZ:Q11njsc41T9pO8GmgsbrTigIVcRkc=\nR:git-submodule--helper\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-svn\na:0:0:755\nZ:Q1C6dUcAKTTQ4hgdDJ/JXaaeUvQ60=\nR:git-switch\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-symbolic-ref\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-tag\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-unpack-file\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-unpack-objects\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-update-index\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-update-ref\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-update-server-info\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-upload-archive\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-upload-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-var\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-verify-commit\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-verify-pack\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-verify-tag\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-version\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-web--browse\na:0:0:755\nZ:Q1qX7DL65PBzXmnuPW/syYuSeRlwI=\nR:git-whatchanged\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-worktree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:git-write-tree\na:0:0:777\nZ:Q1CTNJLhnvt20rU2jaEbTg3Znqj+M=\nR:scalar\na:0:0:777\nZ:Q1DbZK+8l6dMBmjt7l7E3LeU89OTE=\nF:usr/libexec/git-core/mergetools\nR:araxis\nZ:Q1IaIyIwQB64O4m5CX2/Lc7UTb57A=\nR:bc\nZ:Q1WZfgcQCPz4B9FJ0N0zy9zjaf86M=\nR:codecompare\nZ:Q1Ssn2/uHixrRRHDOM+deaC3ifhD4=\nR:deltawalker\nZ:Q1riyNpqQDk4TztauGU6WCSEHArjE=\nR:diffmerge\nZ:Q1AqfzMBNvdWh87euKQyWM1SMDBqs=\nR:diffuse\nZ:Q1p9QgoB0fHx7Q0Ka7g6nPjghjDdA=\nR:ecmerge\nZ:Q1XYLxR6felQFFTj2JyzKMp1+XONw=\nR:emerge\nZ:Q1Us9gbKZwxE3SZXLHxVmdMEn8S58=\nR:examdiff\nZ:Q1oys3yElrRXlTw35DRsjrT9KgzwU=\nR:guiffy\nZ:Q13xDtTh6eN1QJIrbhETfs9nzst28=\nR:gvimdiff\nZ:Q1jZuJYs9GrZlMHK8vb91YyJMJbYs=\nR:kdiff3\nZ:Q1c20YArpWDKBSmTdXj+5YrpB1pP4=\nR:kompare\nZ:Q1m7Ixr9YcRnPLFrm5yoHEQozOVCs=\nR:meld\nZ:Q1xq3TWz/Ky8KdxEi0OxSsbtAMafI=\nR:nvimdiff\nZ:Q1jZuJYs9GrZlMHK8vb91YyJMJbYs=\nR:opendiff\nZ:Q1OJFSinUUtFfRTX4bflmrrJKZSRg=\nR:p4merge\nZ:Q1a7vwg1E7NvSi0N+yM5tr5K92FtM=\nR:smerge\nZ:Q1yKhUBXULp7sWsGJTIyW2IBcBYvE=\nR:tkdiff\nZ:Q1P7H0jJK65N44UyefrC5c7ED8MSs=\nR:tortoisemerge\nZ:Q1iwl7Vi1Z8ahBEb1Mti/iykrJ+I8=\nR:vimdiff\nZ:Q1NOsysL0xXVymjrLXuvuZEBT8vZc=\nR:winmerge\nZ:Q1I2yh3CnvJMg9k5ONgqbi5H7SUVU=\nR:xxdiff\nZ:Q1PILlJyyeW/ah4XBHHq1E0Km7TbQ=\nF:usr/share\nF:usr/share/git-core\nF:usr/share/git-core/templates\nR:description\nZ:Q1ljXxt+EsBFISgZ3ZNNgJ7wfvovQ=\nF:usr/share/git-core/templates/branches\nF:usr/share/git-core/templates/hooks\nR:applypatch-msg.sample\na:0:0:755\nZ:Q1TeiOuVpek/0n54tfs7UjGo2JF90=\nR:commit-msg.sample\na:0:0:755\nZ:Q17h7VqtmKQ18gILbeNcFzt12a/6w=\nR:fsmonitor-watchman.sample\na:0:0:755\nZ:Q1DsDsmsEREUM9F+p54K6M7GUNz6Q=\nR:post-update.sample\na:0:0:755\nZ:Q1thTC9j2n3Knx2y563mHvMESPyWw=\nR:pre-applypatch.sample\na:0:0:755\nZ:Q18ggofBqSUl3p9UYukFqdMd4eLXU=\nR:pre-commit.sample\na:0:0:755\nZ:Q1p50Fc4juLC/mVh12l/H178/5byM=\nR:pre-merge-commit.sample\na:0:0:755\nZ:Q1BMZOWLwlwUlILtRdvXnkDv+4nrc=\nR:pre-push.sample\na:0:0:755\nZ:Q1pZm3c7kwyoPbw6XHwTBZrEpurtw=\nR:pre-rebase.sample\na:0:0:755\nZ:Q1KI79wAJ9tM/Yt8R8Su3boJtt7RI=\nR:pre-receive.sample\na:0:0:755\nZ:Q1cFoX0lnniW8Agv4unywMOxJ75aw=\nR:prepare-commit-msg.sample\na:0:0:755\nZ:Q1JYSAa6FHFSrgBctnWqTwHV0GhFY=\nR:push-to-checkout.sample\na:0:0:755\nZ:Q1UIJAMoyLVfgVfJPEO/XikeXS+8s=\nR:update.sample\na:0:0:755\nZ:Q1cw5r1SJUeLq2FHt6YqbiriHUBQc=\nF:usr/share/git-core/templates/info\nR:exclude\nZ:Q1yHnfAV2XYVBQr6e5ZB4zUqHnAaw=\nF:var\nF:var/git\n\nC:Q1Zdg4pMTrmp4Laa4M6g3P+KjX11w=\nP:binutils\nV:2.39-r3\nA:x86_64\nS:9249742\nI:42671713\nT:GNU binutils\nU:\nL:GPL-3.0-or-later\no:binutils\nD:so:libc.so.6 so:libm.so.6\np:cmd:addr2line=2.39-r3 cmd:ar=2.39-r3 cmd:as=2.39-r3 cmd:c++filt=2.39-r3 cmd:elfedit=2.39-r3 cmd:gprof=2.39-r3 cmd:ld.bfd=2.39-r3 cmd:ld=2.39-r3 cmd:nm=2.39-r3 cmd:objcopy=2.39-r3 cmd:objdump=2.39-r3 cmd:ranlib=2.39-r3 cmd:readelf=2.39-r3 cmd:size=2.39-r3 cmd:strings=2.39-r3 cmd:strip=2.39-r3\nF:usr\nF:usr/bin\nR:addr2line\na:0:0:755\nZ:Q1/ze7YlCgbOhWyvd+Yg/tt6/rWUk=\nR:ar\na:0:0:755\nZ:Q1+SxVFmbWk9ukCs/N+pju8XL/riM=\nR:as\na:0:0:755\nZ:Q1G5BXNpQG0Rgy2nT4GlYIksNTFuM=\nR:c++filt\na:0:0:755\nZ:Q1uVB6Q/uoCF2RXcjQcTNGjD8k/oc=\nR:elfedit\na:0:0:755\nZ:Q1QaVhv1Xe1NW0YTxdCI0Zb+GYh48=\nR:gprof\na:0:0:755\nZ:Q1iO2Cb8dgb3NZfGioTsDnlTUaJMc=\nR:ld\na:0:0:755\nZ:Q1AX+Fd/SBztZj3o8hix/GWyT7qu0=\nR:ld.bfd\na:0:0:755\nZ:Q1AX+Fd/SBztZj3o8hix/GWyT7qu0=\nR:nm\na:0:0:755\nZ:Q1Rv6ux7hdt4mr63BIbxkOP7/8f00=\nR:objcopy\na:0:0:755\nZ:Q1gIz9vfyNrA9J1fTrkxFqc+cR2do=\nR:objdump\na:0:0:755\nZ:Q1VggJFm12GtNKimj7vb+dpzEi9Us=\nR:ranlib\na:0:0:755\nZ:Q1PoFScH25X6Ew0Kj6aNZ7AHfWjkI=\nR:readelf\na:0:0:755\nZ:Q19WN6c+TO+nldPTytzZpuDs9PKNY=\nR:size\na:0:0:755\nZ:Q1OdZhUax6/f472UM2h+lc6uQm1zs=\nR:strings\na:0:0:755\nZ:Q1ezUcsz2zTsLDDEJNrSRtdsvVVW8=\nR:strip\na:0:0:755\nZ:Q1ii9TpY/tav2Vui+1ICeDiSCRKEU=\nF:usr/lib\nR:libbfd.la\na:0:0:755\nZ:Q1xQo3BH7q4K4JvSJS8w1DX3gNFjs=\nR:libctf-nobfd.la\na:0:0:755\nZ:Q17oTzdE506zvtR0IQ0Q3Af2WZCEA=\nR:libctf.la\na:0:0:755\nZ:Q1+O7v++524Obumeo5gUP5MsIJNKE=\nR:libopcodes.la\na:0:0:755\nZ:Q1sueUILCEFKa53fLj8qyAmiE6gu0=\nF:usr/lib/bfd-plugins\nR:libdep.so\na:0:0:755\nZ:Q1cZvQzrlQmP8stqIAoilxcfVne60=\nF:usr/share\nF:usr/share/man\nF:usr/share/man/man1\nR:addr2line.1\nZ:Q1pSkmqWjm7sYX2aouuH5a9DbTweQ=\nR:ar.1\nZ:Q1xl3mMweBcLh80roXHQUEjS1yTRI=\nR:as.1\nZ:Q1sPDe4ofvOHEQX3EJM/1aXlG7+kM=\nR:c++filt.1\nZ:Q1IIIm4vOrxujWhTuAH+o117uqwYQ=\nR:dlltool.1\nZ:Q1Qy9rzn9g3zf6/WsMrntk703fbkE=\nR:elfedit.1\nZ:Q1GxA+OT+0P/yJx18q5nKxlkSPN4Y=\nR:gprof.1\nZ:Q1WT8rXKU1+XWrJcFL0NbtUgAWlvc=\nR:ld.1\nZ:Q12bQ3HoTbbuO6TyYoMZbO6zwXEjc=\nR:nm.1\nZ:Q1peL9TsNyom9T5Yl0sgeN0ZcG2wY=\nR:objcopy.1\nZ:Q1CTfJ6FrGN3XcSzFCGKw/SEEz3Z0=\nR:objdump.1\nZ:Q1noGUtYk4xVIQ3x6NTsowAr76osA=\nR:ranlib.1\nZ:Q1mPeW8p/fA/4w2IxarklRudEO3aY=\nR:readelf.1\nZ:Q1Scj23UM7FJ56oxTnQps/VfhrUNk=\nR:size.1\nZ:Q1Je48LZ/uF/eoQONUY8/UbXqX5mY=\nR:strings.1\nZ:Q1nN/WTSMS3DrWemo/YUCcrvJbOOI=\nR:strip.1\nZ:Q1ESbc8PJaclqVORkdK0guKYZr7Xg=\nR:windmc.1\nZ:Q1+KNyXDeWO8ms3frzIhMtvko3L8Q=\nR:windres.1\nZ:Q1xI+AJcGRv6YkLIdqvm0q6e/kWbs=\nF:usr/x86_64-pc-linux-gnu\nF:usr/x86_64-pc-linux-gnu/bin\nR:ar\na:0:0:755\nZ:Q1+SxVFmbWk9ukCs/N+pju8XL/riM=\nR:as\na:0:0:755\nZ:Q1G5BXNpQG0Rgy2nT4GlYIksNTFuM=\nR:ld\na:0:0:755\nZ:Q1AX+Fd/SBztZj3o8hix/GWyT7qu0=\nR:ld.bfd\na:0:0:755\nZ:Q1AX+Fd/SBztZj3o8hix/GWyT7qu0=\nR:nm\na:0:0:755\nZ:Q1Rv6ux7hdt4mr63BIbxkOP7/8f00=\nR:objcopy\na:0:0:755\nZ:Q1gIz9vfyNrA9J1fTrkxFqc+cR2do=\nR:objdump\na:0:0:755\nZ:Q1VggJFm12GtNKimj7vb+dpzEi9Us=\nR:ranlib\na:0:0:755\nZ:Q1PoFScH25X6Ew0Kj6aNZ7AHfWjkI=\nR:readelf\na:0:0:755\nZ:Q19WN6c+TO+nldPTytzZpuDs9PKNY=\nR:strip\na:0:0:755\nZ:Q1ii9TpY/tav2Vui+1ICeDiSCRKEU=\nF:usr/x86_64-pc-linux-gnu/lib\nF:usr/x86_64-pc-linux-gnu/lib/ldscripts\nR:elf32_x86_64.x\nZ:Q1q6z+tArAzchvVYVehuyOu9pq9wY=\nR:elf32_x86_64.xbn\nZ:Q1agHvwHbdbC3WqpFLY2XxtlDF5OA=\nR:elf32_x86_64.xc\nZ:Q1dbUlV5cdMEov7r7OtMtIfC8KHaQ=\nR:elf32_x86_64.xce\nZ:Q1uN7bMacvQ821hvfr6o6qDyqaxdI=\nR:elf32_x86_64.xd\nZ:Q1G7Mgn2Leee0I2lg5JffjaLIIqq0=\nR:elf32_x86_64.xdc\nZ:Q100RSiBFkt5e0+rFiOX+Bjgvf8uI=\nR:elf32_x86_64.xdce\nZ:Q1X4yGTWhhe7vtA9WxQi/zQfO/irI=\nR:elf32_x86_64.xde\nZ:Q1f7N5bWz1cIhf0ej+GkvlhvY6lGo=\nR:elf32_x86_64.xdw\nZ:Q1fHmV1VV0f5lGFNO4gnchHwSht+o=\nR:elf32_x86_64.xdwe\nZ:Q1LYYXBqlTjLZzl7I4npUMftI2JFM=\nR:elf32_x86_64.xe\nZ:Q1cKKjgCqgN2MFRYg0NaQ56ceAE1M=\nR:elf32_x86_64.xn\nZ:Q1M0J+Dfh2gHhY5ppRWkgkoAmaH/4=\nR:elf32_x86_64.xr\nZ:Q1QAClYjj/ySnDS40sOOcEBOApVWY=\nR:elf32_x86_64.xs\nZ:Q1k+jYneHhIxKJFbBFN9BLmEluppc=\nR:elf32_x86_64.xsc\nZ:Q1G6EgrUwYph05q2p92nyfGQeePQ4=\nR:elf32_x86_64.xsce\nZ:Q10ZQTV7vBDYOOZv6rLnAhRHArdE0=\nR:elf32_x86_64.xse\nZ:Q1+Xige7tbqKX0h7Cj+f9+8tVhg64=\nR:elf32_x86_64.xsw\nZ:Q1AXHzX1LRe4UI4Wgt65lu4yJgdSk=\nR:elf32_x86_64.xswe\nZ:Q1spbVCgDmjIsay7wdrbsYaCI8A3s=\nR:elf32_x86_64.xu\nZ:Q1KekfKS+RJOQsX6EakDPxTA4UJWU=\nR:elf32_x86_64.xw\nZ:Q10VIqxNCAAUr7dD3rtpHlnyPgHhs=\nR:elf32_x86_64.xwe\nZ:Q1gXcyrfpHpGk9mbYMFdwrlXx0/eA=\nR:elf_i386.x\nZ:Q19VZo+u5iiChvtMA9bvzW6xo5zK4=\nR:elf_i386.xbn\nZ:Q1mD5xmkIum07AHd51yVLDWb6g40A=\nR:elf_i386.xc\nZ:Q1bvE3zmHYs6SZH3ppr+NqYc0+pPA=\nR:elf_i386.xce\nZ:Q1sxUTeJHcC+/A/4t14cCZls/7wts=\nR:elf_i386.xd\nZ:Q1pu1RaBiR1caSkcnySgpRZwVQwrY=\nR:elf_i386.xdc\nZ:Q1XesqbHZnpp6HAIAndVwjthIOOP0=\nR:elf_i386.xdce\nZ:Q1O1Kn+K2C+Yu+0QMZerdZknH/PCA=\nR:elf_i386.xde\nZ:Q1vgHYRc2XOsXD3P8ouZlc4PyCWDM=\nR:elf_i386.xdw\nZ:Q1EF1iSKQ97baayjBIdtvWtDWUsaQ=\nR:elf_i386.xdwe\nZ:Q17oQe9h4MlfX5A/mIgfJsC+hZDxg=\nR:elf_i386.xe\nZ:Q10xMhjVS+izWmrpET33ckd5LKiDk=\nR:elf_i386.xn\nZ:Q1A6ycOZ1kCjdXz7aYb3Nru8cSgyw=\nR:elf_i386.xr\nZ:Q1owNQxlC7TU+4kEUH82P0SNAvzS4=\nR:elf_i386.xs\nZ:Q1+1YQ2ze0kBPZ1HFxW2/4sSa4fI0=\nR:elf_i386.xsc\nZ:Q1X871VxoN/qUMCk5RAMKb3l5v14Q=\nR:elf_i386.xsce\nZ:Q1Lr4Zy63dXH+WwycIn9afyIIbiGw=\nR:elf_i386.xse\nZ:Q19iarIG7fYWplAnDxUv0igfmCiaw=\nR:elf_i386.xsw\nZ:Q1xRvWCBxlHGlAvCmyCfnJYVLIQZY=\nR:elf_i386.xswe\nZ:Q1/9DsHUkZJlFiuidCqQZIvP617qg=\nR:elf_i386.xu\nZ:Q1E6xu9P7QwqcR8OXGkIKzxA9JyMo=\nR:elf_i386.xw\nZ:Q1LOeARkGDVdeustnCz/KyhcKNksI=\nR:elf_i386.xwe\nZ:Q1v4IU0Yod6sym2QNKi5WQZRzUh1Q=\nR:elf_iamcu.x\nZ:Q1EZV0By5x7wGIgjrvH5upNZu8rZo=\nR:elf_iamcu.xbn\nZ:Q1GAz4yUvuT2B03E1lrGR8707EgXQ=\nR:elf_iamcu.xc\nZ:Q1HSo/Tjz3lUZvzb1JnghXLN81OoI=\nR:elf_iamcu.xce\nZ:Q1yH+hCA/v0yjDUZz3x+46W51Bskk=\nR:elf_iamcu.xd\nZ:Q15GIQ0OnmiUt/W+7IXaKUL/GQbAc=\nR:elf_iamcu.xdc\nZ:Q1Q3VlavHohO82ohpBU0QSZzx7M24=\nR:elf_iamcu.xdce\nZ:Q1SnWyPaafwfrbIEBgk/2qUquE6SE=\nR:elf_iamcu.xde\nZ:Q1pLOnVjwnBzhtZ1rSQznEv22TBiY=\nR:elf_iamcu.xdw\nZ:Q1em1dI15pBgRGSRepJxno6NS+Zb8=\nR:elf_iamcu.xdwe\nZ:Q1OxjATIFDO61KksRflBf9pDCQemM=\nR:elf_iamcu.xe\nZ:Q1f+nN/Leur6Ap3LkxiKzfY9Trr2Q=\nR:elf_iamcu.xn\nZ:Q1tS2M4XQKf5p5FLz+//4s5JFseVY=\nR:elf_iamcu.xr\nZ:Q17G8yIcsR+ItAYPcivBI40Q/N9I8=\nR:elf_iamcu.xs\nZ:Q1PTnckt3c93Vwm1NOgX2r5kTVhgY=\nR:elf_iamcu.xsc\nZ:Q1jpMsPHk93pn0RyB82gsJESFt3+I=\nR:elf_iamcu.xsce\nZ:Q1faID82nMk7zu+eVze6GUz/b+g40=\nR:elf_iamcu.xse\nZ:Q1Lt3NzYpeA4pgZ7IcMq+PwPVtPHs=\nR:elf_iamcu.xsw\nZ:Q1iS/arIEUpQDt8s6wEgyiGuJi/hA=\nR:elf_iamcu.xswe\nZ:Q1dVtmOySmz+O9lmA1RbkAOGte8qI=\nR:elf_iamcu.xu\nZ:Q1wG6wu4te8mFt31bUSYDLnJy21uA=\nR:elf_iamcu.xw\nZ:Q14xUrDJtBbJh/irw5+ViGcTpVol0=\nR:elf_iamcu.xwe\nZ:Q1/yLTMSPqmNM65f0Fg7rvEUFIwDk=\nR:elf_x86_64.x\nZ:Q1FRdfaR8nfIsESs7riw7t7utNJ2g=\nR:elf_x86_64.xbn\nZ:Q1gFSC22guw7zGat92QPYrzwLT3a8=\nR:elf_x86_64.xc\nZ:Q1tY7ynsVqUaXqRzSOmAG8hwB0TB8=\nR:elf_x86_64.xce\nZ:Q1ci/JSEVdjPsBG1jRf6JA22VEhDA=\nR:elf_x86_64.xd\nZ:Q1bHLSplbHZKqwU2J130z9fiNLrwY=\nR:elf_x86_64.xdc\nZ:Q1ZU80kPS1/NCkog/ujg6fCC0y5nY=\nR:elf_x86_64.xdce\nZ:Q1gNEb/ecQbxVvKGR5884CQL9wcjE=\nR:elf_x86_64.xde\nZ:Q1fMDYwfJxXq3atejEllHWnqnoxw8=\nR:elf_x86_64.xdw\nZ:Q1E4So/rMrIzl8Tp6oKDyH5KXRaN0=\nR:elf_x86_64.xdwe\nZ:Q1FP/MndQ4+P9zxwdyemPu8dTEG8I=\nR:elf_x86_64.xe\nZ:Q1f1/v0x1YV3+0+sas0Hih0AqTK/I=\nR:elf_x86_64.xn\nZ:Q1RlVcVWQo3Mx2IScVmppWv2Hc7WE=\nR:elf_x86_64.xr\nZ:Q1boYYi6P3xZI3gQAzTu4c4Cc8G1w=\nR:elf_x86_64.xs\nZ:Q1S+1LRMi/UmHhaA2QP5eC+BmN+XI=\nR:elf_x86_64.xsc\nZ:Q11hRJbWSjiJ7uXMH37lXfmiD23MQ=\nR:elf_x86_64.xsce\nZ:Q16JqTxldk6afA00UvBjbzcM0CJwU=\nR:elf_x86_64.xse\nZ:Q1QV3LualruSDL2Hcw4MY6j9Ykipk=\nR:elf_x86_64.xsw\nZ:Q1lR7sCymEP4oHdwX809R2k9RkxRw=\nR:elf_x86_64.xswe\nZ:Q1zr3QyGxWQ2vxl84ILB2J12HeL9Y=\nR:elf_x86_64.xu\nZ:Q1PlGIBK59G47RPOBQahNdXtD9lE8=\nR:elf_x86_64.xw\nZ:Q1YPCwxPTFJO7gnT70asV0K933KUc=\nR:elf_x86_64.xwe\nZ:Q11z9FYZFbMlXWF9xEHEefyeADx8E=\n\nC:Q1fWiB2+FykG64ipSGC9ShBlFVWnc=\nP:libstdc++-dev\nV:12.2.0-r6\nA:x86_64\nS:1911045\nI:12271923\nT:\nU:\nL:GPL-3.0-or-later\nF:usr\nF:usr/include\nR:libgccjit++.h\nZ:Q1oJWJsXZvG3l4K7wKVrkhvgqRqEQ=\nF:usr/include/c++\nF:usr/include/c++/12.2.0\nR:algorithm\nZ:Q1mysYhGyjbXJYhADZmnO+00c5ZBc=\nR:any\nZ:Q1JaPtpmv4IiB0WgqjPnT5+f/m1Sk=\nR:array\nZ:Q1AtrQdkM8bREhxdvjwxbb1Pc/Q+I=\nR:atomic\nZ:Q1k1NUaASb8833s6YEY3406E8d8dE=\nR:barrier\nZ:Q1nieY/sHKAuiVVP8Ny65yHnvJyls=\nR:bit\nZ:Q1Pim2uD2Uc7a6Z5A5N3S+FowCUfQ=\nR:bitset\nZ:Q1VfYWnC8CXMPUPCjIeI+op6kbecM=\nR:cassert\nZ:Q1f79P41vXjYjAe0VSLkHaghsH2Mg=\nR:ccomplex\nZ:Q1oKe86zQtkDQdPF+Zb9KST5t5XP8=\nR:cctype\nZ:Q1umPL4nqYgTIfZSRjXIXT/BDIge0=\nR:cerrno\nZ:Q1KvPxPFgabGE2DniRNi1+arO9jiU=\nR:cfenv\nZ:Q1toEXFCixs6KiZ8jE2b5fcOftHYY=\nR:cfloat\nZ:Q1pe8g0Ny7IfslRNBBWsSxNfzSNsQ=\nR:charconv\nZ:Q1HboPDWwWLw01XRvqA4krsgVYl34=\nR:chrono\nZ:Q1/uX6/Vu8ReGhacVwuBEAI0xCbjs=\nR:cinttypes\nZ:Q13l9PC/g4TEfX5cwByf5TvwJbCEY=\nR:ciso646\nZ:Q1tYhvKZ3W4tToxllidRCW+GG7h1Q=\nR:climits\nZ:Q1CP78jD3EOj3BSL/GLFU+ZN4CX4Y=\nR:clocale\nZ:Q11idEoNzMKILfM+yyBJM6g1b6ytY=\nR:cmath\nZ:Q1XMA6+IZg+h+uf3HhcTXFRzy7r1g=\nR:codecvt\nZ:Q1294lBzkHjpY5s1hjFnLvesNEmIc=\nR:compare\nZ:Q1z3o16JJiGP1vpbCdKn4F/9OlmpM=\nR:complex\nZ:Q1Gn9LtbTPjLt21GG7QWZrG/yjWaU=\nR:complex.h\nZ:Q1u0Ju/tqSXf1/oUgAnohHoOGC9Gs=\nR:concepts\nZ:Q1TTBvaMQbebXELGmurCx26AyobF4=\nR:condition_variable\nZ:Q1SIkR65OdLolDEHmQsrEAizX9lzk=\nR:coroutine\nZ:Q1gCJKAdOky8FGLYdfkIV/wCHieRU=\nR:csetjmp\nZ:Q1/AVmt3ArBkJxJoFCUe0/jkPsxi8=\nR:csignal\nZ:Q1Oux/tJ2ppC6RflP2ovOn6ALQLNI=\nR:cstdalign\nZ:Q1pUy8SXhxit/1gYRbNTYbkdlo7po=\nR:cstdarg\nZ:Q1UJIWMan6Kw/EbeGV1O52kpz0HXA=\nR:cstdbool\nZ:Q16izIjSoGWUNVG5HbvkkGbDOH8RU=\nR:cstddef\nZ:Q1WXvT3j7w9GZSa5yBcZyibGwglx4=\nR:cstdint\nZ:Q1mARlUDLsaZJDQJDCYPf6wm++u1Q=\nR:cstdio\nZ:Q1+XZrG5ybdyQxQ+09dB7cTMiiEqA=\nR:cstdlib\nZ:Q1gYJF0jRBhoSrvbQNTij23/M7n88=\nR:cstring\nZ:Q1Zw9nUEpXTFdvZ5YiQNgcCRBzkTc=\nR:ctgmath\nZ:Q1Id8LEqA9P3pbybK4x97QKQ+ol4c=\nR:ctime\nZ:Q13lGJP7bhmduldw2YO9xw/dpeKqs=\nR:cuchar\nZ:Q1BBm42VnUqq4GM8DIR+lvRg0oGDM=\nR:cwchar\nZ:Q1DuVazelE1/X+rZUuk0BFecAFLcY=\nR:cwctype\nZ:Q1NqOXrsI8Nv4wS7OyW/cbM+HFy9g=\nR:cxxabi.h\nZ:Q185js3f0xrBqEPUlswDM0THk4CUw=\nR:deque\nZ:Q10NQrfV/azyACkF7aP6HzI/k9UvE=\nR:exception\nZ:Q1Lm0mN3k9QW71oQ47HgwD1NehZgY=\nR:execution\nZ:Q1JbFVVAW/pN2oPgPXD60KK70pHqE=\nR:expected\nZ:Q1oWNqBfQuVuwqf5GZGgpMuIWYbgA=\nR:fenv.h\nZ:Q1gUKs4QxWmP3FMA+pBb2xsSmEmKM=\nR:filesystem\nZ:Q1dKlHYuC63dj89U3fkbzaYz5FgcU=\nR:forward_list\nZ:Q11T6MUVWyVP/SESzzpwtTfj7mV54=\nR:fstream\nZ:Q1AB/QhtzMgVrOeOjH8u5y6A2PJKg=\nR:functional\nZ:Q1xpPZ2riomhTm5Apdapash3mUEH4=\nR:future\nZ:Q1pYo/DIaqjp8I36Iq8W70nPMYL4o=\nR:initializer_list\nZ:Q1w3av2AVn/8J6ThMvQ92hPV5LE+s=\nR:iomanip\nZ:Q1z6BvbqEmU//dW/6RsuLjungbj8o=\nR:ios\nZ:Q1XDr27l/oDuTFZusWhdWfAnBUzBM=\nR:iosfwd\nZ:Q1hXAWKJZve95Qsl+aay2/6OEszoo=\nR:iostream\nZ:Q1wbZ0VT5f+v+Fzt6x4jedlWSAUug=\nR:istream\nZ:Q1f3A78J29BFx0zxJ8vQCbMkU/5ak=\nR:iterator\nZ:Q1PTVGOI+Szv3DNY3mG0Y5nSR6tw0=\nR:latch\nZ:Q1Q+7+AowJJpu8V6WJhukUHlGWc1E=\nR:limits\nZ:Q1Pfk7fIRp4nJctxvw4oIizu7sOhg=\nR:list\nZ:Q1akLOYbJHI9+pz4OPtxUo54UDE+A=\nR:locale\nZ:Q1M+HJALV86SiC9bRyBRm9H73QXos=\nR:map\nZ:Q1SV5C442X/D2JQAkjHottolC67OE=\nR:math.h\nZ:Q1bWH31Nom9p6qTHJcPSViQkfcYvw=\nR:memory\nZ:Q1UL51bghGeIkzuRUS1XZ5KiUoz1M=\nR:memory_resource\nZ:Q1bX22d/Yo6bNlvsZd938R4wOLeUU=\nR:mutex\nZ:Q1BGE5ZILfEHnyMI0NqhIQynGEJdU=\nR:new\nZ:Q1M3srxIuADTpX0rCcx/iBls5MoKo=\nR:numbers\nZ:Q1tg30MjEgnha6BohxZPRvmjbeH8M=\nR:numeric\nZ:Q1akQkHqfdal7h71b9IM9+9AAuXjQ=\nR:optional\nZ:Q1vYPV0ePqo5IJwDxZJqis5E6A5Ms=\nR:ostream\nZ:Q18fRhBWkV5GVYyp6mMXNTvjtxmPw=\nR:queue\nZ:Q10ZrZ+I//osptiYlIOTYN8oN6PBw=\nR:random\nZ:Q1NSp8nYLj5LmDHbelA1qTHB2Tx00=\nR:ranges\nZ:Q1dFzJ2Sd5M2bcpQ++ibRY1HW6Doc=\nR:ratio\nZ:Q11bQKU5tcOYhXoBfN1PV+0Pbmz8A=\nR:regex\nZ:Q1aYOuf+M9bbqZW4IOaWWiwdUtzBw=\nR:scoped_allocator\nZ:Q1xvOcfcPn+tqywqbT1VPW34xm8o4=\nR:semaphore\nZ:Q1gQja0dlRvmHIJg3WQBGcWsLXOpo=\nR:set\nZ:Q1Q1IfPLvzCNvnmg6JEilj42R+l14=\nR:shared_mutex\nZ:Q1eLWLHK6NaY4DIERqjr4H0FEdyUw=\nR:source_location\nZ:Q15ffLuMR/JWz8/bTYyZRbqm1Li4o=\nR:span\nZ:Q10g2Ci66q98XkeobCi0tks9xYVS0=\nR:spanstream\nZ:Q1QkvFV+awioAfLorp57pzSOtBQNc=\nR:sstream\nZ:Q18JKtp2+rqdJrunN76ypEOzJGNB8=\nR:stack\nZ:Q1uCk5S/e8AAu6D/oT9vqvnjWoA3Y=\nR:stacktrace\nZ:Q1OKoXTuRa/Y43CRGG/87Ayl6VhqI=\nR:stdatomic.h\nZ:Q1T/s0n/B/rRD02T3Sx+5NQaE9avY=\nR:stdexcept\nZ:Q1jr/1lhK502GAF7gpVe1WCDdPp0Q=\nR:stdlib.h\nZ:Q1jlz52jLMw4kt45P6s9ViEe/myUw=\nR:stop_token\nZ:Q1LUyhFTqvsSUy2+l/JopyRKO5hzw=\nR:streambuf\nZ:Q1Y9rg/6F4POkfh+CoNshK3+vsr/4=\nR:string\nZ:Q1SnGtMhgbJqRdEdvl2nQn3G6lka0=\nR:string_view\nZ:Q1NjwLpTGCH8+UhK2HmUtpSD53z8Y=\nR:syncstream\nZ:Q1MnM/SDXlsWY1W30oXwlBznWjsAU=\nR:system_error\nZ:Q1FG+dTAXkXSLxTD/XAR+i02bG7lM=\nR:tgmath.h\nZ:Q1d1I2CCA57NK53zYmKQ7AKzfZy1o=\nR:thread\nZ:Q1wKD3vKWtQfGl3uZsT0RoADHvRV8=\nR:tuple\nZ:Q1Xlza/gW3CTxmM7bVFZlCWthXxkk=\nR:type_traits\nZ:Q11z8CBiu+SzNQunlzVj44TXzxaJM=\nR:typeindex\nZ:Q1ouLxfqrwecpUo4JPwGHBOgazitc=\nR:typeinfo\nZ:Q126/L15tuvIZvyL/agFj7h1aKdS0=\nR:unordered_map\nZ:Q1xPPuDC6obfWwI+P+xf/7zP9ZvWk=\nR:unordered_set\nZ:Q17Bg/aviNXm4NxaiZjxAiGOCdmJo=\nR:utility\nZ:Q1mfkLBaJVOXd9vHDAO/4+P1pkmqY=\nR:valarray\nZ:Q1rppgMMjhDSuehAH3v6/79e6US8Y=\nR:variant\nZ:Q1p5PlGHq+DEnbRyRPz6vEeWnLZhI=\nR:vector\nZ:Q1MIBN1D8/ApYykaBhskketY/DBoQ=\nR:version\nZ:Q1d/4Gst8spL5kwicvDPeDvM1RFa4=\nF:usr/include/c++/12.2.0/backward\nR:auto_ptr.h\nZ:Q1zVaLJV77qG6yCtG5eYO8at4iJhk=\nR:backward_warning.h\nZ:Q18w86k5GK/wS3wmhlZLoIGeXIloU=\nR:binders.h\nZ:Q1LsFPXrJwP2Az+ljJ89pW7I4KOVk=\nR:hash_fun.h\nZ:Q1wYrh8abKfYVGjwyMxowJVw2Xgkw=\nR:hash_map\nZ:Q1tGoxu0TGWLQ4gcjQsMfGradXZC0=\nR:hash_set\nZ:Q1VGkX12jiGXNgJjQdcN7LBG7WbDM=\nR:hashtable.h\nZ:Q15ejpz0sxIIbfB6j3SgFhjag6WdI=\nR:strstream\nZ:Q12dgbbeCFiM5Vxfl3Jz0Z3nXFEQM=\nF:usr/include/c++/12.2.0/bits\nR:algorithmfwd.h\nZ:Q1nOk0LjbfTv8VxwjSV9NOHxBFPVs=\nR:align.h\nZ:Q17EoTtiFh4V9ExcC6erGOrKGvQ2s=\nR:alloc_traits.h\nZ:Q14A3BwxEWSzRDrdmr/P517xCgwr4=\nR:allocated_ptr.h\nZ:Q1plSin9rFAIQGz3iABPIbQ9Sn3yQ=\nR:allocator.h\nZ:Q1n8yMeiEtsI5MDToETabGhvaS33A=\nR:atomic_base.h\nZ:Q1NnTWKBs42HGpLHsrDYjHhvdxN/8=\nR:atomic_futex.h\nZ:Q18oWqvSDCizk4jIQkIEDyROZZepw=\nR:atomic_lockfree_defines.h\nZ:Q1lUM0QMfxB9+eyF+z9pPmohyzKT4=\nR:atomic_timed_wait.h\nZ:Q1sHjzS2hczzZFaBfTGCiTMuNR1Js=\nR:atomic_wait.h\nZ:Q1MIsmW1G116Fd5d9vzTP2IhvuSc8=\nR:basic_ios.h\nZ:Q1bO4utqi+eAHHd+NED+mlUS43G+M=\nR:basic_ios.tcc\nZ:Q1hRQLx4cfhDvF4ayrQ4rrZGlzhe4=\nR:basic_string.h\nZ:Q1xdY+lU4ShvstyOoi7EDQYYW2c+E=\nR:basic_string.tcc\nZ:Q10sqfwXNGloN5sybJDmmdNy0eJQE=\nR:boost_concept_check.h\nZ:Q1X98dcwnZWhMG3kVQBUPk6ob10Es=\nR:c++0x_warning.h\nZ:Q1VQdyFUjmLmb7v7yb6sPwgBf/GXk=\nR:char_traits.h\nZ:Q1HzpQRWkSpq1xcn1va61vCfEpBrY=\nR:charconv.h\nZ:Q1K/Lw3jI0TZlFOSwatsK2FedI0tM=\nR:chrono.h\nZ:Q1Hg59BC7sF+2U6JdJUdxBpx6d4II=\nR:codecvt.h\nZ:Q1/Qkdm/zeYPRgg2ydLqDQhzOYi0k=\nR:concept_check.h\nZ:Q1KOTGB2cAeb8HlzmTpGokSxUbhYs=\nR:cow_string.h\nZ:Q1wsLLh+0GsKWWYFMhlxAGOVh6om8=\nR:cpp_type_traits.h\nZ:Q1312AvHJXFQ36DvYzcgZiI41D0uI=\nR:cxxabi_forced.h\nZ:Q14ibF25AvGlVuktK0mn0V6d0nFU4=\nR:cxxabi_init_exception.h\nZ:Q1z7gJ83BtHBC3dWQLqRqiv1LR+zc=\nR:deque.tcc\nZ:Q1eKGQkqWHSIXfgi6XKwqkarxWaiY=\nR:enable_special_members.h\nZ:Q1bHZkQdsMLIlYqIgPP34AjHjgNtY=\nR:erase_if.h\nZ:Q1WGU2BykGEKl7WXWhmBRLw5Q+GWU=\nR:exception.h\nZ:Q1XjcQKfEnjVe0TTNL+IbOHx3aKxs=\nR:exception_defines.h\nZ:Q1UjssEUr3VdbRl2nx/anWFtHgu14=\nR:exception_ptr.h\nZ:Q1Bhg/aTlfb5xdxXi3AIuSX35JGQw=\nR:forward_list.h\nZ:Q1A8uPDXC+kjapuBsKcGBab9KR+lk=\nR:forward_list.tcc\nZ:Q1FIftz+KqgT/3REClrLB4cPLOJoY=\nR:fs_dir.h\nZ:Q1N09q33gHakROlxzpwrHxB6LS81o=\nR:fs_fwd.h\nZ:Q1e1gQRRNbw/hVkD+VjJJeUF9mxi4=\nR:fs_ops.h\nZ:Q1MjNM9UAuyDyO2LQia65ZoayVWFk=\nR:fs_path.h\nZ:Q1mpDO7vCdJqUFm6JnD6kmjXtQ4Nk=\nR:fstream.tcc\nZ:Q1i2Z7VKpxPvL6800Dyi24TyfDzOs=\nR:functexcept.h\nZ:Q1gbfwT+CFymSB3aP0tLP0oiUzh6M=\nR:functional_hash.h\nZ:Q14eEsNBjfCbYfw1LjPLIfgE3ukHI=\nR:gslice.h\nZ:Q1OWCVO5lQWggK/nrwSwIB7DCVx0o=\nR:gslice_array.h\nZ:Q1bDch9m/RnANFKtxTFEM5cOXbP6w=\nR:hash_bytes.h\nZ:Q1RTdacdm1In0cXYpje7IZlFgvbek=\nR:hashtable.h\nZ:Q1kcvpqOvPJQ9is7BqusMku9u1Pbs=\nR:hashtable_policy.h\nZ:Q1t90ADsJCuWyOYpeywD6bc5dOMUw=\nR:indirect_array.h\nZ:Q1nQqbICu95qOanAkWyLsFzMzrrxY=\nR:invoke.h\nZ:Q1Vq3QP++2nmXXu7jursIVLz6T2pU=\nR:ios_base.h\nZ:Q1PE+yelPBkDmnRDwY7MsSLh1SrjA=\nR:istream.tcc\nZ:Q1Rs5ztRnrYGz9hy//G62REywqTVc=\nR:iterator_concepts.h\nZ:Q1UQf0o3DlByTsDYB1T7jTG/shZNs=\nR:list.tcc\nZ:Q1DZ7T/jNSybT/dzmleE0L890ebwo=\nR:locale_classes.h\nZ:Q16ZvJaEl7f2p/vAuxCISZoeCWevI=\nR:locale_classes.tcc\nZ:Q1O+XnUf+u3koS9V0y+YbIaF9Ts5w=\nR:locale_conv.h\nZ:Q1oiR3iekxdREOLpdHu/oAwHS3MJw=\nR:locale_facets.h\nZ:Q1QTCp9QRP9rMTNtJLfiWNRE4PszM=\nR:locale_facets.tcc\nZ:Q1sWrs6rzawwsR7t/trYlKHYxnQHM=\nR:locale_facets_nonio.h\nZ:Q1g/NgSQFronWav4Iwq4OpD9nx860=\nR:locale_facets_nonio.tcc\nZ:Q1wX9RY4j2FH6OJo14UnzPMkv1KoM=\nR:localefwd.h\nZ:Q1TezJB5xBTs1rTeX44NJZmfKktJY=\nR:mask_array.h\nZ:Q1czo69tzyfpR3mFKPIkogXTUw1e0=\nR:max_size_type.h\nZ:Q1bI88NHH8dg3ovXzyRH1XYolx1tQ=\nR:memoryfwd.h\nZ:Q1Z7V3Jbyu6TkgP0VN/ywsHs1Cyhc=\nR:mofunc_impl.h\nZ:Q1FokFzlClmQ4MLvMVk4U0pPAwFog=\nR:move.h\nZ:Q1q44j2mXve6ZYX/LLqSZNumZpbtg=\nR:move_only_function.h\nZ:Q1OU804it+5p8Gp6xtiymn/LAXFv4=\nR:nested_exception.h\nZ:Q1CJ+C89tKQItqgoXtHXNr+JqzDZk=\nR:new_allocator.h\nZ:Q1NQPQ5nDdMSWaBqWe7DDaqwI7lTQ=\nR:node_handle.h\nZ:Q13CQN6iOAAiSJA4pbdJ23VkxiNLA=\nR:ostream.tcc\nZ:Q1SR4I1RUS8Ar/GltiJVEAf1Lk3PQ=\nR:ostream_insert.h\nZ:Q16LQ7ZuzbHFaOpB0jEKjb9Pd/lfU=\nR:parse_numbers.h\nZ:Q1S9Y6W4lRab49gNHh7YQE79iTMow=\nR:postypes.h\nZ:Q1layv3NlWM0hK4egeX0qZUEkYoFE=\nR:predefined_ops.h\nZ:Q1ZktudxcuyFoICCZxywXVIbBcOwg=\nR:ptr_traits.h\nZ:Q1mnCir2T+C2QL5vjy4cWcfb/yxJU=\nR:quoted_string.h\nZ:Q1KRsjBdFSVRDB7Lj8X3J51zM3yRo=\nR:random.h\nZ:Q1UckOwsFpEoydeQ2Z7GUGVFpboYU=\nR:random.tcc\nZ:Q1JpLlg07vKOkxkJA1QKbXxvodLmU=\nR:range_access.h\nZ:Q1ZGHAijxn8gR+b6EiEPSYDaU3+1w=\nR:ranges_algo.h\nZ:Q17qMAW7NmLci3Yf3ZgoUfJRmSZAE=\nR:ranges_algobase.h\nZ:Q1j23CcqENbnGTcoD/n1abV8CkCkw=\nR:ranges_base.h\nZ:Q1nxqZU5EvfjpOZTy4bkBbe1zG0ks=\nR:ranges_cmp.h\nZ:Q1dhYncbhVCBA2SLoLhZswBueQYAc=\nR:ranges_uninitialized.h\nZ:Q1qxEqrelkKfDkD2dc2vj9erjwrog=\nR:ranges_util.h\nZ:Q1Fh5Vsnlt/TJ7cbGP7AyU9CoOvus=\nR:refwrap.h\nZ:Q1uNF2wSToBipQDmsQaChOsQXP0cQ=\nR:regex.h\nZ:Q10ES6anehK/30zstFdmDu9t4rvnk=\nR:regex.tcc\nZ:Q1DNf9XCH7PBubwtGMb7gfsrvx4xo=\nR:regex_automaton.h\nZ:Q1cy7OTIN5XU7TgZQWLkdk2585m3o=\nR:regex_automaton.tcc\nZ:Q16PdScmoLNbBse9dwsnzUsJz//aI=\nR:regex_compiler.h\nZ:Q1WdbcuRx1ciPaOSzuzy8LKdtHZ4U=\nR:regex_compiler.tcc\nZ:Q1QDSk5kPDxWJ+CITJ5Bg71lUkCig=\nR:regex_constants.h\nZ:Q1cJIhxvehW7vf8+K0QmYnDH+5vxw=\nR:regex_error.h\nZ:Q1OcIsM5SaDY06sMJsz5tNPZpC7Pw=\nR:regex_executor.h\nZ:Q1wPaHdgA/thp90jVkh67DEr3tdt8=\nR:regex_executor.tcc\nZ:Q1xMsnevUM4ixCqaKUT32BJnL2p3U=\nR:regex_scanner.h\nZ:Q1t9/GiFuEY0iLq9pDpHqPb+GSDVs=\nR:regex_scanner.tcc\nZ:Q1vatiGk5oJSAa5a23LNfoExygPiw=\nR:semaphore_base.h\nZ:Q1fb++ZVr/qym8ja53SsYkRXnSS0U=\nR:shared_ptr.h\nZ:Q19oBqYt9MDCt/ABb3wfBP2f7SCxo=\nR:shared_ptr_atomic.h\nZ:Q1UNfDmgWsF/Oh5SC5PmhknErQeEM=\nR:shared_ptr_base.h\nZ:Q15CqrwHnEGwhnhCgH+fy+wjPSjOg=\nR:slice_array.h\nZ:Q1i7J9dU1xS9bQfrpV6cFO5wHp+7Y=\nR:specfun.h\nZ:Q1X/vJbyMZjlE2FGOa2v+LRH5mvK8=\nR:sstream.tcc\nZ:Q1BJlL5PdtlM6lxPem9FjsPFB+1kE=\nR:std_abs.h\nZ:Q14LKrEgCF3YkMHYe8jHOOLhgQN74=\nR:std_function.h\nZ:Q1lpUK4oi7rcRXfrdrr6EnmcnVAAo=\nR:std_mutex.h\nZ:Q1JIoKx3WakN3H9zxQdm/DInrOOiI=\nR:std_thread.h\nZ:Q1etwU1YflWA8w0j9BA21Ie7ar/Fo=\nR:stl_algo.h\nZ:Q1/x4qKRTOtr8KA+7lLloA7B8VKG8=\nR:stl_algobase.h\nZ:Q1k139F9gsyciMgyQeZhHihc/CNLo=\nR:stl_bvector.h\nZ:Q1VcGL4/VucuXWoK747f8W3x5vWYw=\nR:stl_construct.h\nZ:Q10WgWSSSrdaKFJ4zg+n2wxUHhO4g=\nR:stl_deque.h\nZ:Q1f0JIPhX9NliGWnK74ZjXXgRfw5A=\nR:stl_function.h\nZ:Q1IMss6h8VdEHLlN0OE1TosljHAoA=\nR:stl_heap.h\nZ:Q1JITSCLaUjqhA+u0/CZMa05Lnw2s=\nR:stl_iterator.h\nZ:Q1IPSk1Vrxv05JwXOrE+L1gYvmJDc=\nR:stl_iterator_base_funcs.h\nZ:Q1VEuJQGpXfIt++qnI0FoUEBIKMgQ=\nR:stl_iterator_base_types.h\nZ:Q1JJFBeUSyY9OUURo0QMMBaOtsaEA=\nR:stl_list.h\nZ:Q1CDuacetuRPxg0cIT6WVU8Yfg51I=\nR:stl_map.h\nZ:Q1R+cyzAH6l0W2AnVaE+E/f3XOmFQ=\nR:stl_multimap.h\nZ:Q1GXKf4jmEAj+yH6gPGUnMJr9QY70=\nR:stl_multiset.h\nZ:Q1thiBvRyialda7s9EJdcq9+qKUV0=\nR:stl_numeric.h\nZ:Q1NTjwrsTvfgWekC1tQyj+t+GGk7I=\nR:stl_pair.h\nZ:Q1B9j/hJLOLRNCFcseSsyjYidZg3U=\nR:stl_queue.h\nZ:Q1z9nEgRVixEFquFA8vczWcby+lnc=\nR:stl_raw_storage_iter.h\nZ:Q1gMxlMhEPfF8Ysly7VbfoHM8orjo=\nR:stl_relops.h\nZ:Q1Kxk/PGGtzipp3vcC0BUuJtP/4Wg=\nR:stl_set.h\nZ:Q1PnuHwn+L9d9U1tsIaEbdYmT3sQ8=\nR:stl_stack.h\nZ:Q1sPFetnOymj8kPjP5Fzh6BODN/bI=\nR:stl_tempbuf.h\nZ:Q12448m9jLuYWOIZtruGJNHbqXuBg=\nR:stl_tree.h\nZ:Q1s8cm3/XIHAaJTXUkgVDbLvp5N8g=\nR:stl_uninitialized.h\nZ:Q1jneAylAZjTU5LVAve7F8xru+w6Q=\nR:stl_vector.h\nZ:Q1IhrvajhAaxHCA+gn4htP/KVn0Ds=\nR:stream_iterator.h\nZ:Q1Ahmq3D+75P+0w01esntZNTCviB0=\nR:streambuf.tcc\nZ:Q1H8A9ivDD7PWlM/cSnWuAp9rJ4YY=\nR:streambuf_iterator.h\nZ:Q14JsfzcUTMiK2v2vfpEpZeZxl3lE=\nR:string_view.tcc\nZ:Q1oixRwNS+YQc7voJeDY9VNHGsS34=\nR:stringfwd.h\nZ:Q1C0OZcTmjuXokRo61YUgslYTlECc=\nR:this_thread_sleep.h\nZ:Q1O5G38wo94Qs0aY8h6+4W6rkXS7M=\nR:uniform_int_dist.h\nZ:Q1tqCKvNxkrDojlRvH2HlBY/nd578=\nR:unique_lock.h\nZ:Q1/lL82kewdvzZu/8SM8S4LStSjvo=\nR:unique_ptr.h\nZ:Q1ud5Blo/cc4scZTz0M99RolExnzk=\nR:unordered_map.h\nZ:Q1/+mEX2xf5gf7MjRdSy0srIfK3JA=\nR:unordered_set.h\nZ:Q106YY3DeJrvIB6sl5FJXVyuRLoL4=\nR:uses_allocator.h\nZ:Q1pqZI5PTeGLpBSQds7LJ56A4mSoA=\nR:uses_allocator_args.h\nZ:Q1PUGXiFfa2zD2Cu6kObvHqbjj8QM=\nR:utility.h\nZ:Q1SMLy/HKiaJNtKDX4PhxJf7MVuMM=\nR:valarray_after.h\nZ:Q188zpSekkNPJB/T/hI85oAuovlh4=\nR:valarray_array.h\nZ:Q1cKEcAKGbqhLqmGuaPMMkozVZfqc=\nR:valarray_array.tcc\nZ:Q10Kz+tqwlc+f+Xw7akn6V+sU4gMM=\nR:valarray_before.h\nZ:Q1rsrXvvalkJ7K61SIswuNafYDWQg=\nR:vector.tcc\nZ:Q1tuQxsS194pZSane1isI/hTSfSoc=\nF:usr/include/c++/12.2.0/debug\nR:assertions.h\nZ:Q1dh7TWfdDfAGru7eIUN1ylsSK22s=\nR:bitset\nZ:Q1NMBxXKsPr6bE7uoRrtHZGSyxMwo=\nR:debug.h\nZ:Q1dB6TKWm4vaGwYcimcZ7nulLqhNg=\nR:deque\nZ:Q1goUGD87BTfR4s5gu9fdI3BqPegU=\nR:formatter.h\nZ:Q19wSTKjdi40R3EQTQN1hfUkMGspQ=\nR:forward_list\nZ:Q1mtq9VQlG7u7EW6SEpw4er6SXhIQ=\nR:functions.h\nZ:Q15nfnAEMdTG9YuPbXwCBHTJfCiP8=\nR:helper_functions.h\nZ:Q1skkVSTRGcE8h1fc0qeitPRSA+xY=\nR:list\nZ:Q1Bpp2fb5AhQPZVODjpDurBdqjfb4=\nR:macros.h\nZ:Q1rSdtYiATDsYw9pcDRo+wXJLHBX4=\nR:map\nZ:Q108Z+TrOBbae/g/N490hyefb267o=\nR:map.h\nZ:Q1zbdn7NDuDGgmAlnOGWUwuDrDo0U=\nR:multimap.h\nZ:Q1HocNIh6+xPaJt8JpefatieDttTg=\nR:multiset.h\nZ:Q1EaIS7AXQoiYqMK5B0GpoLn38dGY=\nR:safe_base.h\nZ:Q165cy4KEuS2Gg0OFpRbm614VpPQo=\nR:safe_container.h\nZ:Q1f73g7k6/haVEYrSuQi9JeFv4PZ8=\nR:safe_iterator.h\nZ:Q1VJH9+NLuB5zOgjvB5+zPn7A2qpY=\nR:safe_iterator.tcc\nZ:Q18D4syBX98oE0p/Yt5WYqGENdoaA=\nR:safe_local_iterator.h\nZ:Q1T/dwlHSP2K4w5LSqELx5kSfhL30=\nR:safe_local_iterator.tcc\nZ:Q1P/3ffJLbv2dUyPQMF45lRPKN9Ng=\nR:safe_sequence.h\nZ:Q1HIsqKj1swf39ttzrQj9sOFw3Gfc=\nR:safe_sequence.tcc\nZ:Q1qkw9BkZe8xLbWCnh1eqTozGVN/0=\nR:safe_unordered_base.h\nZ:Q1M3LfwUIVl9j6DnWsHgq9aknZXVs=\nR:safe_unordered_container.h\nZ:Q1KPPDUZ1AE9xJv1MtiRYeKe6u1GU=\nR:safe_unordered_container.tcc\nZ:Q1Fw2Buv2r/LD+8hT95EXj8uV/uVk=\nR:set\nZ:Q1M3K+tsN7G1paOQQN/Oj0SgIy66I=\nR:set.h\nZ:Q1yO3TeJPXEWp8t93OC3C4jC/J6U4=\nR:stl_iterator.h\nZ:Q1iTW/a68/E86+MCP5VHS7Xg+9s4A=\nR:string\nZ:Q118oKbmMXNPLzi8BHUD4OC7z6k7U=\nR:unordered_map\nZ:Q1ZqxJaZroyTH11aVVRZNGv6UYHT8=\nR:unordered_set\nZ:Q1oPFrCTlAyGZDgH4806Xn/O3p/fA=\nR:vector\nZ:Q1JUZ1cEe7QuVEfCNiflarxiljLro=\nF:usr/include/c++/12.2.0/decimal\nR:decimal\nZ:Q1c54e+8OWJfQoC4oGp+F1uypENSg=\nR:decimal.h\nZ:Q1VAzBouNnBTUwMofdwAGD6mba0iY=\nF:usr/include/c++/12.2.0/experimental\nR:algorithm\nZ:Q1VHmdjJkJf9ImyeZbLiCAYMngCNc=\nR:any\nZ:Q1qdTh+nhYUNRU7HFZOuj1wxNl1ws=\nR:array\nZ:Q1EB6/vGJIuL7aaOy8km1w5AQYw6U=\nR:buffer\nZ:Q1fgtaa1ii4FbEvAnbL/1BkPVkKK8=\nR:chrono\nZ:Q1i8xVofE3lDEtcTcVaFSWkg0vbuI=\nR:deque\nZ:Q1GTlUARr165KKFfp4GzYNVZ0OdTA=\nR:executor\nZ:Q1C1BNLa//GtgYx/Fx+OXyNzw/ko8=\nR:filesystem\nZ:Q1i0JUWsiLDcx/lkt4EHSD7/urxWw=\nR:forward_list\nZ:Q1pjxspsc1fCUicFJtF1gUocIEB4U=\nR:functional\nZ:Q18PweVH5R5Yb5MUSDYb1Qal2EQsw=\nR:internet\nZ:Q1gm+bEH5iGTjQHSQgGT/q9t9V9e8=\nR:io_context\nZ:Q1k76/PFGHDKWsYN9zn3YDCXnJab0=\nR:iterator\nZ:Q1c7z5e0FtX8LslIYlVPPfDBtLbSs=\nR:list\nZ:Q1PFH87jIxlx1kX5XqOcs9U7U29b4=\nR:map\nZ:Q18BmUvCH77u/l5gx/YrKaUNh1BvA=\nR:memory\nZ:Q1q0LZDz2qVMjHL3z9QvL1ybivAac=\nR:memory_resource\nZ:Q1gXzX1Mffqj4656JOjIt+AmLm3rc=\nR:net\nZ:Q1O1vVJQsmohS4f3XK8KJcIg8pm9o=\nR:netfwd\nZ:Q1+hffvIq0knFFFVg/t71UjFvjYQo=\nR:numeric\nZ:Q1ZCCXIiocYRqhLAYDHZTl1VBf7j8=\nR:optional\nZ:Q1W8GqnkLjDYS1z8OPQK1gRToIpPQ=\nR:propagate_const\nZ:Q1Wl0D64AodhCH8+gcq3uRbYaD09k=\nR:random\nZ:Q1pHC13kxe3t/T7WfOKXIyCiB3Fxc=\nR:ratio\nZ:Q1sIYjwGa58/shfZ4z572olCv9IY8=\nR:regex\nZ:Q1XRKpfOdCJT2EcvaOcHchXKgFCjE=\nR:set\nZ:Q1t014QWOovMpMx3ZFoOqGqDLv/Hg=\nR:simd\nZ:Q1zSJNJCsShJqiCPXhiWkWXWccqIE=\nR:socket\nZ:Q1Z02SIqcpuTAeYaLvq7pwMlWVLCo=\nR:source_location\nZ:Q1+FX0F86CT5FSJ8cSdpy5r+WIC+Q=\nR:string\nZ:Q1lVNVhxqKYeiuYwKesp2BsVOesXE=\nR:string_view\nZ:Q1glcFth+eEmL/hniPkLDPB7xTkRE=\nR:system_error\nZ:Q1VZQtWpzHki26Pg8xRPS0ZLDiEz8=\nR:timer\nZ:Q1L7+SvnbnSHGx42mogQ4q43FOQyY=\nR:tuple\nZ:Q1pMB1kXaS/k+1tdpa5UvwGXPC3aI=\nR:type_traits\nZ:Q1yenRhjDNntyBs4uWDG68zA7QtvQ=\nR:unordered_map\nZ:Q1lLhz275S/D3MQz6p6r1lLI7wUIo=\nR:unordered_set\nZ:Q1IFK0BvRSGs8zzy3t33sREuTHlpA=\nR:utility\nZ:Q1PKMvNEpm/Lsi0qDVg1K/Wnys7Ww=\nR:vector\nZ:Q1p5CzY/ml6fVK44VDUFjxqrlMQ0Y=\nF:usr/include/c++/12.2.0/experimental/bits\nR:fs_dir.h\nZ:Q1qweTlkOByfp9ooCvwdxHcOZRXOQ=\nR:fs_fwd.h\nZ:Q1UI4z+qSiEtUhrbPpMPCh6YwTK/o=\nR:fs_ops.h\nZ:Q193Gu5vUjV/RE3Q4iOrhpR1ZhcDw=\nR:fs_path.h\nZ:Q1Hj9VptFzb47MzCFDtP5Sf2eT+fw=\nR:lfts_config.h\nZ:Q1QDz9q9CJqs0+DGKFGqDdIPjDQ3c=\nR:net.h\nZ:Q134tQD79/Hr4PmElpFXWFM9xV7tc=\nR:numeric_traits.h\nZ:Q1PM2UKkcsDkKDc3O4t5z2R38OH4g=\nR:shared_ptr.h\nZ:Q1W5xNozQmDhfAyuRm656oodE6p/0=\nR:simd.h\nZ:Q1IepkgWOFxGTRdhQrwh5dMyANQuY=\nR:simd_builtin.h\nZ:Q1L8IBiYbk2MOQYi5S7sAYHij7t0E=\nR:simd_converter.h\nZ:Q1iV9j8Z6dxC1exP1Su+AiDOxSg2c=\nR:simd_detail.h\nZ:Q1r0ZYvugpHhUW1JpKJSZ/RGnbfY4=\nR:simd_fixed_size.h\nZ:Q1/imSEqUtPX0GaQaVU6fRZGXkR30=\nR:simd_math.h\nZ:Q1J7W/FrgwR3SHBxZbOuOls4Uorqw=\nR:simd_neon.h\nZ:Q1/9980a655FQkdDZC4RYaAqp0a5s=\nR:simd_ppc.h\nZ:Q15kKrpcWcX5TjvXku/YtY8mysuG0=\nR:simd_scalar.h\nZ:Q1+D1wcvQ06q+Qa27V3lcwJcMtt/E=\nR:simd_x86.h\nZ:Q14a+zqiE6ayU0On8pI+0d0NHHFQk=\nR:simd_x86_conversions.h\nZ:Q1gLVnSsY+4z813n1UWogUVNRS88o=\nR:string_view.tcc\nZ:Q1g8D8i8XSF/7sOufpWzBEzjJqEoc=\nF:usr/include/c++/12.2.0/ext\nR:algorithm\nZ:Q1dRY2b0oRctOarvGqIhGZcvbvytY=\nR:aligned_buffer.h\nZ:Q1lXfakVQ4QQ/067ZnJNAwlglmDF8=\nR:alloc_traits.h\nZ:Q1Gwt5E/fib56zYYYtkQLQ0i7cnjU=\nR:atomicity.h\nZ:Q1CTLD+O6F+jnN2h1DGnwKpl5VPhI=\nR:bitmap_allocator.h\nZ:Q1J5vH41Y3xO3FWw1r6QBIjRflJjY=\nR:cast.h\nZ:Q1rBfbN2cbAv4/Fn0YvXxF/IE62vs=\nR:cmath\nZ:Q1L9ma94/ZQ4wRjeDBYMFWsPViF8g=\nR:codecvt_specializations.h\nZ:Q13WgTG9X+aG4TXJJfiE0CIojJR10=\nR:concurrence.h\nZ:Q13+Lo583UYNS/d6MS4SwSAtIzQ0k=\nR:debug_allocator.h\nZ:Q1CDvaxZLpb6leqnM3IOr3H1Zug5Y=\nR:enc_filebuf.h\nZ:Q1m1qFho+Lv9U3m9svESz0OniBI6Y=\nR:extptr_allocator.h\nZ:Q1HWL80zyezoZ6d+G4H6uMwCzLGHs=\nR:functional\nZ:Q1MTLE6KCxH9auABsULXIbUyKXQbw=\nR:hash_map\nZ:Q1tGoxu0TGWLQ4gcjQsMfGradXZC0=\nR:hash_set\nZ:Q1VGkX12jiGXNgJjQdcN7LBG7WbDM=\nR:iterator\nZ:Q1iQLdfgMMzmvEMNmdgqFccpPDGw0=\nR:malloc_allocator.h\nZ:Q1IQ6lkW3UMWWPPx7r+7cJ2JGcB4U=\nR:memory\nZ:Q1wldv2IGvIoIYiHcD3BHdXEZQb6I=\nR:mt_allocator.h\nZ:Q1MBZKdWObWAX4f/FTPOUbvHYl6X0=\nR:new_allocator.h\nZ:Q1SBAfcM5DS2Hb+ynmStpWZtCGMxY=\nR:numeric\nZ:Q1US6G3f8/XwUHzICMJ2odlxZiLcs=\nR:numeric_traits.h\nZ:Q1hQnefFgKNZs/29MCCqaFkrZPScE=\nR:pod_char_traits.h\nZ:Q1+wWDue58A3pBikV6RKMK0aJSDNs=\nR:pointer.h\nZ:Q1LD5BmlClyvtW/aqkURw0h4ZVXhw=\nR:pool_allocator.h\nZ:Q1lSFE9DLvQiyZaTIyEU1nTiO705Y=\nR:random\nZ:Q1DTMLDyS43g0uw7M7plvdkY0Tf14=\nR:random.tcc\nZ:Q1RBH80KmWkWxDi7igNrOkRMHR0+E=\nR:rb_tree\nZ:Q17gtrxyPIBeXJaIjirkqHh/Z+Iig=\nR:rc_string_base.h\nZ:Q1UnAJOr1B1e9x6a9CQzvwzkgCLYE=\nR:rope\nZ:Q166/HY1Ze1EWpu+dD3CEM9wZJWGs=\nR:ropeimpl.h\nZ:Q1rY4k9pJ+H88guo+omJYUTrBlTpU=\nR:slist\nZ:Q1e3pBg3Z4uOUN1xVlvTQQ63zPKRU=\nR:sso_string_base.h\nZ:Q1KSt/oEwDSUAAbZKVvatPgryq9NI=\nR:stdio_filebuf.h\nZ:Q1YdZ8yuprYoSLK1ewqj55smaSThg=\nR:stdio_sync_filebuf.h\nZ:Q1K7c171nvyrgPWiSKF7GhuPm9NXA=\nR:string_conversions.h\nZ:Q1DuGK49ll30sR/kwgWmPlPiq0av8=\nR:throw_allocator.h\nZ:Q19lae9IuYRg7WVo25qJTpt7PRzh4=\nR:type_traits.h\nZ:Q1L/kaQkJAarmiH9ETl0moOYUaER0=\nR:typelist.h\nZ:Q1CCZtoCGSw3LDlRlbV91dNpZ9+DQ=\nR:vstring.h\nZ:Q1TSFRuSd5KXvlMGLbkHMhUaVqF1Y=\nR:vstring.tcc\nZ:Q1hfzSkXrEqrNM/LM18MRexMa0t+4=\nR:vstring_fwd.h\nZ:Q13pLTRSh10STEgXVWbsEXUe/oz0o=\nR:vstring_util.h\nZ:Q1Jvsqvi/OBi797RZ/dq2YCEA0+0o=\nF:usr/include/c++/12.2.0/ext/pb_ds\nR:assoc_container.hpp\nZ:Q1Xso7qy6AdzGaAVU02FYL2JhDdI0=\nR:exception.hpp\nZ:Q1mnk0jzPCvQtzQ0nopH+sSyrj51U=\nR:hash_policy.hpp\nZ:Q1Uc2fZZE3TkP7s+eoSTEVv7XCYUY=\nR:list_update_policy.hpp\nZ:Q154N4gXunhpo1etOFr8lGMGsfbzs=\nR:priority_queue.hpp\nZ:Q1v2imwtSbeeApkLCy8+6Z15tEyqM=\nR:tag_and_trait.hpp\nZ:Q1yoHVdEawge6w+4Vq/+WjCX2VTKU=\nR:tree_policy.hpp\nZ:Q1Myw04NgEgQHUZw2FmjF/LDxidXI=\nR:trie_policy.hpp\nZ:Q137KyzqX1bF5QqDHY5qzdIudveVA=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail\nR:cond_dealtor.hpp\nZ:Q1XdxjRh31evLljK5a1Z3WU3RQnbU=\nR:container_base_dispatch.hpp\nZ:Q13csDCdD8S+gfBl2RhGSpeN/MmOY=\nR:debug_map_base.hpp\nZ:Q1CXv13eVpSPkdElwZGkNOtkYVbjE=\nR:priority_queue_base_dispatch.hpp\nZ:Q1Og71ato5k+LaZCb2WoN3Xw/z/yE=\nR:standard_policies.hpp\nZ:Q18yy7E6K1GgHJF1OQ9zxy6KtHfn0=\nR:tree_trace_base.hpp\nZ:Q12bzwPMTPDp2+c8OlPC43fg5IIE0=\nR:type_utils.hpp\nZ:Q1QavEUImhnHy/E/Gd6F9LgDLAfws=\nR:types_traits.hpp\nZ:Q1hoVm9pB7yEbEiJNVDPcsp0vpdsA=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/bin_search_tree_\nR:bin_search_tree_.hpp\nZ:Q1SVtpzD9q/wVUx9S3qz1c/3CU8Ns=\nR:constructors_destructor_fn_imps.hpp\nZ:Q1XA0DJcGRvuRbCK7oc+yAOBttOiA=\nR:debug_fn_imps.hpp\nZ:Q1kc/VtqKtcHm3jEqQ9R3PwrFXBlQ=\nR:erase_fn_imps.hpp\nZ:Q1iHi5vItOvS0TQzmN3J4lGbltmpQ=\nR:find_fn_imps.hpp\nZ:Q141+m6SsvAkibqYxgM8jjsGvAs1s=\nR:info_fn_imps.hpp\nZ:Q1SyZUq3DVBi5/kGlOro+iC6NwcWc=\nR:insert_fn_imps.hpp\nZ:Q1ll4w4PhxPDaHpfV7YkKhLb4jxbk=\nR:iterators_fn_imps.hpp\nZ:Q1Cusdve7IJ5v5bDSRCWM+4+K5fIs=\nR:node_iterators.hpp\nZ:Q12q5RqngAoW6ztd9GtxnUY7ec7hg=\nR:point_iterators.hpp\nZ:Q1sdlBJGrrvkoKysc9u5ktll5Z2eA=\nR:policy_access_fn_imps.hpp\nZ:Q1gShxMcGgDZ2Xa3e6bgB+W1ESJPE=\nR:r_erase_fn_imps.hpp\nZ:Q1T1j4G1krdawCSERILYOzLJdiL3Q=\nR:rotate_fn_imps.hpp\nZ:Q1UTpniu4hRn0jhrrgbvkl6XKlHMw=\nR:split_join_fn_imps.hpp\nZ:Q1TU5w+OklHM7MBoOEU0+kZnmHxL8=\nR:traits.hpp\nZ:Q14NHAZ8gaAGNSZSzo2DzaeJGzgIU=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/binary_heap_\nR:binary_heap_.hpp\nZ:Q1IVLSRu0hJHkwGCiH0G5QoHslSFo=\nR:const_iterator.hpp\nZ:Q1mNfKczssJK0MvCViWeL616qg6fg=\nR:constructors_destructor_fn_imps.hpp\nZ:Q1ZQ25NpPNKJSy5tlnxcn54LI3cPE=\nR:debug_fn_imps.hpp\nZ:Q1cP9jHT8d5iNCw+kbe33bR/7hEiI=\nR:entry_cmp.hpp\nZ:Q1ubJ329jyhNGxyn5WYsJo4V+XQJA=\nR:entry_pred.hpp\nZ:Q1lJJbn4VrikQaKfMKOYvGMVig1uE=\nR:erase_fn_imps.hpp\nZ:Q1JpAmI5PPgyR5l+UCRbuyz4N7jWQ=\nR:find_fn_imps.hpp\nZ:Q1bg1yVUMr1WKFwo45w4l0hf2o4nw=\nR:info_fn_imps.hpp\nZ:Q1+HsGeIPcZAUlPaE0AmIs68M0nI8=\nR:insert_fn_imps.hpp\nZ:Q12+qooYFztkhawNUXxx2woTamT+E=\nR:iterators_fn_imps.hpp\nZ:Q11SjHojwBau92HYFnBVgi2MG7cR0=\nR:point_const_iterator.hpp\nZ:Q1hxJEFYBIzBBgIeZAH1n8tNbnOzw=\nR:policy_access_fn_imps.hpp\nZ:Q1zAixmJBTz4BqqtkZvMnGKVjEYeY=\nR:resize_policy.hpp\nZ:Q1pDhKiURlCAP6SAotu6QnM+g23J0=\nR:split_join_fn_imps.hpp\nZ:Q1O2OiJ4wMtyfnZb+Usj9bmCXNZaE=\nR:trace_fn_imps.hpp\nZ:Q1vHsI+CCUg4GA4mEOKM+ZdvCQAbw=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/binomial_heap_\nR:binomial_heap_.hpp\nZ:Q1Eaq9FHz62Rov7yr6103yAri7eik=\nR:constructors_destructor_fn_imps.hpp\nZ:Q12n8QpWv9tLAWjWVsd97tZpj8XNE=\nR:debug_fn_imps.hpp\nZ:Q1NHKgXIppM8dGMqok31iFBzLahXo=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/binomial_heap_base_\nR:binomial_heap_base_.hpp\nZ:Q1TAlz/IsNM7pkuI71hATNzjlMsq8=\nR:constructors_destructor_fn_imps.hpp\nZ:Q1URDqXG8sAWeMzWhLlxk5kC/n8Ao=\nR:debug_fn_imps.hpp\nZ:Q1vB3zGhF8QhQ4uP4v8WdsQMyOtlA=\nR:erase_fn_imps.hpp\nZ:Q1Z5vYuG65efKtKzAQHhDP+FmTVes=\nR:find_fn_imps.hpp\nZ:Q15uh0A4XB+GKUt6CgGaHPqVbEMeg=\nR:insert_fn_imps.hpp\nZ:Q1y1Yaa1xP3te6RCvdVQONKca4Jis=\nR:split_join_fn_imps.hpp\nZ:Q1Fd1FPdtZdcfn4nfJPxDEQpTdu8k=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/branch_policy\nR:branch_policy.hpp\nZ:Q16b+fPlvC6X3ukfHZ/KbdYukCPuw=\nR:null_node_metadata.hpp\nZ:Q1NbBfp0YRPjn9zJPK/ODebTdKM8w=\nR:traits.hpp\nZ:Q13INW5O9EyC6MLvY7WlhZVK2dMGw=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/cc_hash_table_map_\nR:cc_ht_map_.hpp\nZ:Q10+7FDfsh05Es4pRg+1YNyFdqKcw=\nR:cmp_fn_imps.hpp\nZ:Q1QVg07yvcP7Q5wGOPByk8VhgKFl0=\nR:cond_key_dtor_entry_dealtor.hpp\nZ:Q1ovwD2JogIJ6fp5FRDcIj20A5uig=\nR:constructor_destructor_fn_imps.hpp\nZ:Q1uAjeUlnwMQZWpSS7ovddv9MHDUs=\nR:constructor_destructor_no_store_hash_fn_imps.hpp\nZ:Q1FbzsaW4TbHQZUtzCcDhGZSjlaR8=\nR:constructor_destructor_store_hash_fn_imps.hpp\nZ:Q1ZXQTOFIuVr2vyJ0tjKkeIERXpv4=\nR:debug_fn_imps.hpp\nZ:Q1zJuFX2pzxgVm0VER7eavBe3fDwQ=\nR:debug_no_store_hash_fn_imps.hpp\nZ:Q1LcDUhJHPmZYH+3s2lJaiRpP9Jy0=\nR:debug_store_hash_fn_imps.hpp\nZ:Q1klTLZLHK9hN1Gl/zXDcps1h2ndo=\nR:entry_list_fn_imps.hpp\nZ:Q1SCNC1q6StHRJt/V68mCziSFa0AY=\nR:erase_fn_imps.hpp\nZ:Q1V7cvdUn1GqVIol+kAXOk5v7JIu0=\nR:erase_no_store_hash_fn_imps.hpp\nZ:Q1u6mBUTF9zFKcNW0rT+C1Top0xEE=\nR:erase_store_hash_fn_imps.hpp\nZ:Q1v5qA381LanQt3Pf7pgxbUUdvxPE=\nR:find_fn_imps.hpp\nZ:Q1pqHBxZFLJqPBUCaAPLpA+YSPGrU=\nR:find_store_hash_fn_imps.hpp\nZ:Q1D4e3Gj2zf0ZEqIwVQhpvtl72ihI=\nR:info_fn_imps.hpp\nZ:Q1EooglpBi/FaSJbBvgRQws0E4mcc=\nR:insert_fn_imps.hpp\nZ:Q1dmtWKS/T6HhZsbJMYwrBvD7eiHg=\nR:insert_no_store_hash_fn_imps.hpp\nZ:Q1Uqlz7iYDITkMsu1+uDUnzHnnw6U=\nR:insert_store_hash_fn_imps.hpp\nZ:Q1aECz7sdDlcUSzuFfCFyL5tQgxwQ=\nR:iterators_fn_imps.hpp\nZ:Q1S67fsE5fQPYrI3v+Sh4Ia0Gftn8=\nR:policy_access_fn_imps.hpp\nZ:Q1FiT9qyFoquLoUx7PEeVgt/Lwm/k=\nR:resize_fn_imps.hpp\nZ:Q1IPYedm++LlQBxO1pT9MbWd0mrN8=\nR:resize_no_store_hash_fn_imps.hpp\nZ:Q13307g4YltVFbsby4tCE7yTWQkJ4=\nR:resize_store_hash_fn_imps.hpp\nZ:Q1yZBMuPWSeFarBvuM0lfc+mXyyV4=\nR:size_fn_imps.hpp\nZ:Q1WsS4rt5mCt2SOC8ts15Dt851HFA=\nR:trace_fn_imps.hpp\nZ:Q1H4uNyKfycdbLwIgRkCaw8dhtpmQ=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/eq_fn\nR:eq_by_less.hpp\nZ:Q1rpZlxoyvrNYxhQjcG5mflgcBQW4=\nR:hash_eq_fn.hpp\nZ:Q1spd9O+A3Q0ICwQNDOdB0WXfgrJc=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/gp_hash_table_map_\nR:constructor_destructor_fn_imps.hpp\nZ:Q1jQJCMGT/GvVV2K5x5Bl8SuoKuws=\nR:constructor_destructor_no_store_hash_fn_imps.hpp\nZ:Q1RXPDGZNPuKlYnKNGfRZJ7VpvexU=\nR:constructor_destructor_store_hash_fn_imps.hpp\nZ:Q1MJ2AoD0W4Bx2u6+eeFeC5THLiN0=\nR:debug_fn_imps.hpp\nZ:Q1CbN5vwuZ3+fQbhDUTTy3KaD9+qs=\nR:debug_no_store_hash_fn_imps.hpp\nZ:Q1HfUdXWZMxufpJ5ksUAO2ltNdqjo=\nR:debug_store_hash_fn_imps.hpp\nZ:Q1XM4MFsstQXCULkh6ydTbogGpk7w=\nR:erase_fn_imps.hpp\nZ:Q1+G//gMSRBR3ZGW4ET8xl+tU3CLw=\nR:erase_no_store_hash_fn_imps.hpp\nZ:Q1U3yVGYtexGKy01tyGSoME6ETduo=\nR:erase_store_hash_fn_imps.hpp\nZ:Q19hWG8DuhymnD/7ql8YZhB/Lj3BI=\nR:find_fn_imps.hpp\nZ:Q1wTYzSV30bPeS9e7h+I3gxZ8ZfyE=\nR:find_no_store_hash_fn_imps.hpp\nZ:Q1Pq3dGwJ31bzR2YRwCS6VmnJuhWw=\nR:find_store_hash_fn_imps.hpp\nZ:Q1GEjN/7qLXGm2lj80WxTQ3GqC7G8=\nR:gp_ht_map_.hpp\nZ:Q1fCPg9GtoycaxvjLh3GEuF3/LaRw=\nR:info_fn_imps.hpp\nZ:Q1ziFE6/b6hhJ3MPg5fux57eP2KF4=\nR:insert_fn_imps.hpp\nZ:Q1caFLFTTnPTRrkE6OyfcUuB4Vzlg=\nR:insert_no_store_hash_fn_imps.hpp\nZ:Q14PQMddao5KEhyCTk/vgcc7Me0pU=\nR:insert_store_hash_fn_imps.hpp\nZ:Q17qIAu6zYiAVpOpSHXZaP9dDMnFo=\nR:iterator_fn_imps.hpp\nZ:Q1ipo6c0MsbMAH027DYNC6gBEDnxw=\nR:policy_access_fn_imps.hpp\nZ:Q1WDO7mT732HGaqHhIR5egFsW6rvM=\nR:resize_fn_imps.hpp\nZ:Q1hJONzelNGQvsN9FzGFZra0cCK+M=\nR:resize_no_store_hash_fn_imps.hpp\nZ:Q1lNrKmYFlRPQ7nAXz5QxNJ/Shz5o=\nR:resize_store_hash_fn_imps.hpp\nZ:Q1UXZ556c6OTGm/C/SAB40/d6MyQg=\nR:trace_fn_imps.hpp\nZ:Q18SdrWj3TX8LOHhMucgAH6OuJT3U=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/hash_fn\nR:direct_mask_range_hashing_imp.hpp\nZ:Q1mInrCNuw3V2j+Etvqfs8XrevjKw=\nR:direct_mod_range_hashing_imp.hpp\nZ:Q1K1lVhXOwvd2sPSt4RJUZq3vMEew=\nR:linear_probe_fn_imp.hpp\nZ:Q1TUp6VO+EVb0eyTs0gn8LgSiDHuQ=\nR:mask_based_range_hashing.hpp\nZ:Q1TFcmKLSTT9xtOtnkWRuSvPQ8ui8=\nR:mod_based_range_hashing.hpp\nZ:Q1WvHeK7DppiTHANfbCl9H/AnkBsM=\nR:probe_fn_base.hpp\nZ:Q1xWT6QdCO3EVqn7E0p2b9+j4/j6Y=\nR:quadratic_probe_fn_imp.hpp\nZ:Q1rW9hra2bHhlQO6vrHO8I5C5/AGY=\nR:ranged_hash_fn.hpp\nZ:Q1/Qr0onhvKSaM5ORH/Uqw6RlioFk=\nR:ranged_probe_fn.hpp\nZ:Q1EyKvfo7GHfJjge5mHLpm/03Qo40=\nR:sample_probe_fn.hpp\nZ:Q1X4NN3j0cTP4K6Kt37UDmEh9pjfw=\nR:sample_range_hashing.hpp\nZ:Q1HzP52Xdcb01RTTyu0lUPCO0zgSo=\nR:sample_ranged_hash_fn.hpp\nZ:Q1PkiGW/zxaU/WMOR173zARl3DRXc=\nR:sample_ranged_probe_fn.hpp\nZ:Q1AUlwYyL0b6T5fkPOM/Tpw5/mTk4=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/left_child_next_sibling_heap_\nR:const_iterator.hpp\nZ:Q1+aFguutJbAee8Eqm6A+0uk1L9CM=\nR:constructors_destructor_fn_imps.hpp\nZ:Q1sExDX/XSQxmmPjLUG57fm43qDQc=\nR:debug_fn_imps.hpp\nZ:Q14ZU5iHnbruJ9QPpWhKC0wlgZixw=\nR:erase_fn_imps.hpp\nZ:Q1qz+BQKTIj1uNYZ+B+ci7d0OXuWA=\nR:info_fn_imps.hpp\nZ:Q1f/bCrjSdqKG9sb6qFPUJU57jgMw=\nR:insert_fn_imps.hpp\nZ:Q1l398+uOk9dBRAwraCuBzwlotHCo=\nR:iterators_fn_imps.hpp\nZ:Q1ZXT6BOx/TLGYoe+LhCehVCu+EJY=\nR:left_child_next_sibling_heap_.hpp\nZ:Q1fnzu7hS92b2lIDWr6Xdu+AZ3b7w=\nR:node.hpp\nZ:Q1hKEkukaeVCkCEOUv3wgVSgScfTk=\nR:point_const_iterator.hpp\nZ:Q1McCaSFaMkBE9Th5gPdd2ykN6L0Q=\nR:policy_access_fn_imps.hpp\nZ:Q1+HXvubdtbzpl/+7Z4d6xP5uQZBs=\nR:trace_fn_imps.hpp\nZ:Q1v5HJxvDGVIIIiEhZvFxko+uh0tI=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/list_update_map_\nR:constructor_destructor_fn_imps.hpp\nZ:Q16/PZjytcHCM11kcfZEwlpv9A+Cw=\nR:debug_fn_imps.hpp\nZ:Q1uP9I/ahEv/AdoM9uB6x19YXMUPc=\nR:entry_metadata_base.hpp\nZ:Q1Q641FoD5RQzDw6EXp7r8ttKXkew=\nR:erase_fn_imps.hpp\nZ:Q1h6kudTBzOSJesTER2Rue9e0DNEY=\nR:find_fn_imps.hpp\nZ:Q1YXER2vMKREEVuRBccv9Yi3lgLoM=\nR:info_fn_imps.hpp\nZ:Q16wIRp2xxXNPGScU6NFEROtZEBow=\nR:insert_fn_imps.hpp\nZ:Q1V8MuFaGFXwnIIwsDjd+Uq0F90T0=\nR:iterators_fn_imps.hpp\nZ:Q1HMUh7mkecYRjmoxbtFeBZ/ofEeU=\nR:lu_map_.hpp\nZ:Q1+TPHSJhO4xeOKD6lbmhtnnID/S8=\nR:trace_fn_imps.hpp\nZ:Q1YukW9U2HZbLgU2q2qfOJwk6zlCA=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/list_update_policy\nR:lu_counter_metadata.hpp\nZ:Q1vwfrZfSAObJuN1l1mDCMo+MEIJg=\nR:sample_update_policy.hpp\nZ:Q1Pygyr+dEqf7Eb3GXIc6j7rorzJA=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/ov_tree_map_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1zbqaRFRYF6GOekRXzBZ8oVPXDR4=\nR:debug_fn_imps.hpp\nZ:Q1kqDfjzKBWyEQ6h+QFmAZM6ETxeQ=\nR:erase_fn_imps.hpp\nZ:Q1eZUfViUfZFI88MdzAA3VQGmVWJw=\nR:info_fn_imps.hpp\nZ:Q1J7lnjDR8czkoFKf+BP6mBK9++/Y=\nR:insert_fn_imps.hpp\nZ:Q1jIJ2GvMyrAAzzttWiY8UepwdBxw=\nR:iterators_fn_imps.hpp\nZ:Q1JTWoqiS/L1Ly7FSNbxc/y/C728I=\nR:node_iterators.hpp\nZ:Q1EO29cBL6DjSBzlQzJGsYipc1tDg=\nR:ov_tree_map_.hpp\nZ:Q1EipJpxfyGbXEuV51XFrZ7VQmpEI=\nR:policy_access_fn_imps.hpp\nZ:Q15vfcIhlmA60tSq8dfHwgKy/vKXE=\nR:split_join_fn_imps.hpp\nZ:Q1Jeidl2iDdRhArOCHyDspl4vpFt4=\nR:traits.hpp\nZ:Q1oRlZDfRDFiPwWvB0uIdsjQgTDh4=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/pairing_heap_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1RwbXI2vA4TadoH1knh4W0Oohh84=\nR:debug_fn_imps.hpp\nZ:Q1eu4PlKG0RZwhPAE3RerIt/CGM0U=\nR:erase_fn_imps.hpp\nZ:Q14KJVkotOSbXOKKkXrlIkRswCvCY=\nR:find_fn_imps.hpp\nZ:Q1Yo55LpMQZh/KzxPL8O67Bj4Tjcs=\nR:insert_fn_imps.hpp\nZ:Q1yQwEicPrafF9Ry3rY8nqnJeg+o4=\nR:pairing_heap_.hpp\nZ:Q12ygNjabK4xZxVFdq0DuaU/MDwiE=\nR:split_join_fn_imps.hpp\nZ:Q1Gk4B7+Ze6tJHpZQOO4qubIl+63M=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/pat_trie_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1g3L6998+vss/hKfgz4gnlPLmD1A=\nR:debug_fn_imps.hpp\nZ:Q1JdRroEep7sH9rz16HhiYz86FHCg=\nR:erase_fn_imps.hpp\nZ:Q1BMmX6kf2DjMn15PKcxnv1klzxuU=\nR:find_fn_imps.hpp\nZ:Q1E+inHypJmyReA7lZxn/CG70R41U=\nR:info_fn_imps.hpp\nZ:Q1/o9UL95k84aIWYY4/FQjBRZwLBI=\nR:insert_join_fn_imps.hpp\nZ:Q1TETx0kvVtnyvyu741qEWkNfI1w8=\nR:iterators_fn_imps.hpp\nZ:Q1F4ARoNOaduwZp4tgZJo3NRxqYNA=\nR:pat_trie_.hpp\nZ:Q1Vj97G8YKISuPn8E+mhXTpS1uwVo=\nR:pat_trie_base.hpp\nZ:Q1+QM6MlUhZ0p5lTvCBpgKe6L0Nzo=\nR:policy_access_fn_imps.hpp\nZ:Q1ID+EoHHLNgnFeZ4SYv/87tXxe+8=\nR:r_erase_fn_imps.hpp\nZ:Q1TRhaa6H8s4i//x9U89DvJY4yBbY=\nR:rotate_fn_imps.hpp\nZ:Q1lBJ2BtiQAkyYnybAuub9/L9b1PU=\nR:split_fn_imps.hpp\nZ:Q1fW4J7DbKPCGQyLoHadLLxkEzOCU=\nR:synth_access_traits.hpp\nZ:Q1QKFj6qrzRT5V4tSxf12jo3pXWx4=\nR:trace_fn_imps.hpp\nZ:Q1GfBGuD/vjgz4yuyPPpiEwxvZ56I=\nR:traits.hpp\nZ:Q1MNLpM+cInuMOYmL95CFMnHuDsUs=\nR:update_fn_imps.hpp\nZ:Q1jKA+wNsZCJxM7DdoBiyKVQLSEbE=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/rb_tree_map_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1k1MztjYk6eiv6upZCyagiBRATqs=\nR:debug_fn_imps.hpp\nZ:Q15Cdspnacptu3LMAEc5tju/W+Wj0=\nR:erase_fn_imps.hpp\nZ:Q1QO+TmiUAB9GUAwKZjI7jO3y72ic=\nR:find_fn_imps.hpp\nZ:Q16N1vke8PnUJFbOJo2N4RoxhPx0E=\nR:info_fn_imps.hpp\nZ:Q1FMfldJgvr1ufISXwxqwENfu0fVA=\nR:insert_fn_imps.hpp\nZ:Q1VWRsiYlpAihbQml9l2NUw8Hcdgw=\nR:node.hpp\nZ:Q1jtaQoPlKw3Ft0F6gtlm0+Tf9GwY=\nR:rb_tree_.hpp\nZ:Q1M+cBHoqjT6uA8X1w5aoXHB3Ajvs=\nR:split_join_fn_imps.hpp\nZ:Q19VN/gqlKhPHms39Jg5aDPFHzDms=\nR:traits.hpp\nZ:Q1Kr4GBCb1vgVINnzAWLx3OE5iQLc=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/rc_binomial_heap_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1TMBgEDMkBB8JRUKHGxbg2ExeOHk=\nR:debug_fn_imps.hpp\nZ:Q1YwCy5TRUbRcPUBpBJTu9KJKocCs=\nR:erase_fn_imps.hpp\nZ:Q1TMlL01JKdctSn4hdsHWjLJN/KPw=\nR:insert_fn_imps.hpp\nZ:Q1VGClfTeUrgJuh6UuJx8zbvZWnJ8=\nR:rc.hpp\nZ:Q1u7S3cN1pdzc80DL3SmvPoJ/YEmA=\nR:rc_binomial_heap_.hpp\nZ:Q1iAt2hxG3t/XbWLc6gyYcihP6kQQ=\nR:split_join_fn_imps.hpp\nZ:Q1GvIlwNPvCNOxM5oG4MnBKb9sfpo=\nR:trace_fn_imps.hpp\nZ:Q1MHekCYemzrjzB46exDwyRRJ+nsk=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/resize_policy\nR:cc_hash_max_collision_check_resize_trigger_imp.hpp\nZ:Q1PAQ0TajwGmAl8m+L68Cbr5V8+Qc=\nR:hash_exponential_size_policy_imp.hpp\nZ:Q1YMtFUV0LYi4RZJrT+zDYmHNVPH0=\nR:hash_load_check_resize_trigger_imp.hpp\nZ:Q1xh0EeaWy8bDGDiQ7rZEa23AW1B8=\nR:hash_load_check_resize_trigger_size_base.hpp\nZ:Q1P+WIk0Gd1Xtl6que5Yh+INyl0Pg=\nR:hash_prime_size_policy_imp.hpp\nZ:Q1jkNYrNNCT2QYrNLcCuMQcbX61Xw=\nR:hash_standard_resize_policy_imp.hpp\nZ:Q1/2eI4Jhs3EHGPFqZzenIfKjyLL8=\nR:sample_resize_policy.hpp\nZ:Q104frCOmKfLbKBFC9rpYG7NrauHw=\nR:sample_resize_trigger.hpp\nZ:Q1w73LgaqpOO5t+JhwSzqGwJeHzQM=\nR:sample_size_policy.hpp\nZ:Q1uI/Sq/YWmH63Omtqw4w8jtrDFOg=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/splay_tree_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1hQ+OCGW0dxAkuGSyOKf3A42y+M8=\nR:debug_fn_imps.hpp\nZ:Q1kYF5LzyKvmm8wUz/k3zZc6XBRFQ=\nR:erase_fn_imps.hpp\nZ:Q1t0K3ZlXFIlIJhwkaShseoAvw1T8=\nR:find_fn_imps.hpp\nZ:Q1IRaDjPCCLJDy3+Cz5cFcMpe5B3U=\nR:info_fn_imps.hpp\nZ:Q1sJF9/TfUT9CFGEj3sIXRigbnWFo=\nR:insert_fn_imps.hpp\nZ:Q1IG/8BCV+bj1M40I5VxjKZrVGy2A=\nR:node.hpp\nZ:Q1u7ANUvVhAmxRsNH124bOftX0NjQ=\nR:splay_fn_imps.hpp\nZ:Q14ivU4QiIr1g2FrgSdYuBsGz49z4=\nR:splay_tree_.hpp\nZ:Q1lETXiKmWYifn56RrcZndyStMUUA=\nR:split_join_fn_imps.hpp\nZ:Q1nXvTdTHHVgu0+A4h92ZhPq34CE4=\nR:traits.hpp\nZ:Q1eUZIFL5UY9CgKRUJvgV8BluR4c4=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/thin_heap_\nR:constructors_destructor_fn_imps.hpp\nZ:Q1Uexvl1Mx3Js+gY+vvwJFtlbqWZo=\nR:debug_fn_imps.hpp\nZ:Q1yozmSTQEj2x69BI9WuNpzx9ENvc=\nR:erase_fn_imps.hpp\nZ:Q1gkHaBPfbo2xjig+9F6aDik1NFQg=\nR:find_fn_imps.hpp\nZ:Q1su4hysOErJEIHwiWZcvxG6LIps0=\nR:insert_fn_imps.hpp\nZ:Q1eDBXJcPBsx3kxsfQ95cyu3tiMe8=\nR:split_join_fn_imps.hpp\nZ:Q1mlUWS8Km9nqT7TOZPcjigDWWV/Y=\nR:thin_heap_.hpp\nZ:Q1g/tDG3rlGTMQQ+apeeUsLFOkhqs=\nR:trace_fn_imps.hpp\nZ:Q1brL+VJhrEsXFBhrxH/Kg9F7mFNw=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/tree_policy\nR:node_metadata_selector.hpp\nZ:Q1wMAJ5yY4C1zg7YD7u1DPelEzjaw=\nR:order_statistics_imp.hpp\nZ:Q1RG+oZd4yT5piilG5kUQXthneZYY=\nR:sample_tree_node_update.hpp\nZ:Q1zUnaPz+6ExF927EGQMCK8lKctxc=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/trie_policy\nR:node_metadata_selector.hpp\nZ:Q16cStMUzL3CzNrkZrik5Wll7lCC0=\nR:order_statistics_imp.hpp\nZ:Q1HCctTwMUhuSnDAeGxBola1+rBm8=\nR:prefix_search_node_update_imp.hpp\nZ:Q1FtYJ3Gf9cViUUgXBtYJ9iNn06aA=\nR:sample_trie_access_traits.hpp\nZ:Q14FXeX7UrthEH8EWLHJwHjkj+/kg=\nR:sample_trie_node_update.hpp\nZ:Q1NRjTOESYeoPBqfpCqnwQwFlvICE=\nR:trie_policy_base.hpp\nZ:Q1b22COluF4rLKq7Y+OOXxKyYyBDA=\nR:trie_string_access_traits_imp.hpp\nZ:Q1fBxIboKQ93G5qemJifLu4Q/vLZ4=\nF:usr/include/c++/12.2.0/ext/pb_ds/detail/unordered_iterator\nR:const_iterator.hpp\nZ:Q1FUlQHaOJJ5DppVxW5rJp9VI/+dk=\nR:iterator.hpp\nZ:Q1FTKFaR91tKGW7va64lv04EMxl8g=\nR:point_const_iterator.hpp\nZ:Q1YDgCkvSzYPWJKHRF68lrfWiKCgY=\nR:point_iterator.hpp\nZ:Q19ZzZ/PaP32O/BOhiXHgzM0X37wY=\nF:usr/include/c++/12.2.0/parallel\nR:algo.h\nZ:Q1OA0lDuABMFV3ydUPvVqSTEJWwPQ=\nR:algobase.h\nZ:Q1ebiwCbSroQuURlAfrdoSStljlXk=\nR:algorithm\nZ:Q1/p8kJSXcwxY7DN7s2kCa18AQogQ=\nR:algorithmfwd.h\nZ:Q1rNzj5QFheN1ZrB3Lqv3PlsZAQ0s=\nR:balanced_quicksort.h\nZ:Q11//qhCTmlup0yVc2oFw6Er8eX78=\nR:base.h\nZ:Q19bkqAL7L5eMWKL1KSRMgxyAeDpM=\nR:basic_iterator.h\nZ:Q1EOaIpLuixcxBFyYkbDjuwIAiu0c=\nR:checkers.h\nZ:Q1mxy5CG1nYRY//ufilI+9uM3ftKA=\nR:compatibility.h\nZ:Q1C5fHrtmF0B2D8dLsF2js27wOSQU=\nR:compiletime_settings.h\nZ:Q1DJuBtOYXeawLGAHG0cHRYTUjgyA=\nR:equally_split.h\nZ:Q1fqg862MJVIQ9jFe/8yVpLSa5dD0=\nR:features.h\nZ:Q1ETFcFK4SGRgHDHRldpvA+FcgFh0=\nR:find.h\nZ:Q1nrXjFJdjjPBMKQQnbmqIbFmjYAU=\nR:find_selectors.h\nZ:Q1m0Vlc+BfRYELO3K3s1bYiBDxxfg=\nR:for_each.h\nZ:Q1FPYwaefPIQnEjzh+EFfKwFKv4lg=\nR:for_each_selectors.h\nZ:Q1teCTmMCLslnAk/LzfOGuxTjyB04=\nR:iterator.h\nZ:Q1zsOFKLFJAK3VfIusqSACqSvr0WY=\nR:list_partition.h\nZ:Q11BE9P5EBqwZFsakc7ttlwkWst9w=\nR:losertree.h\nZ:Q1FQQt4mWqflNkEkqCktlzkUmzUSI=\nR:merge.h\nZ:Q1x1AmOc4j02trtiVo8j70I62Ly2U=\nR:multiseq_selection.h\nZ:Q1T9vPsAJNwWWNgHYToT7Hv9SAA4k=\nR:multiway_merge.h\nZ:Q1eBMzx+1PXFF64mkIfN9VcVG04JY=\nR:multiway_mergesort.h\nZ:Q1GZTABtWzKXIUVkoZ5F1smai4lyA=\nR:numeric\nZ:Q1T7n/dv/5yw3fO/Gq/fi3v4h1esQ=\nR:numericfwd.h\nZ:Q12jUHfA2V+DGHCFl77Sk8LaPVbtA=\nR:omp_loop.h\nZ:Q1shrlPtkszmIr+9laCTQsJBM+vUg=\nR:omp_loop_static.h\nZ:Q1X77EJVfA/GCqQ/A6I3ngTbhAy3g=\nR:par_loop.h\nZ:Q1mRilcVFi5ZW3WjEhQSuClkRZo/g=\nR:parallel.h\nZ:Q17WzquIGm1fHbEaUl8pWNUSR/u9I=\nR:partial_sum.h\nZ:Q1g+pdK01YxZsfqNqJsOTeM4O4bWA=\nR:partition.h\nZ:Q15zqXlzio0gW3vksraOd+VKges+E=\nR:queue.h\nZ:Q1X4n+ALC/mEDT3NBf+XAz9vYa/0g=\nR:quicksort.h\nZ:Q1jTA6GfcRRNTvMAmWeQmfxUFptMo=\nR:random_number.h\nZ:Q1yc8so6B/Ygw1jz+/aEmL8rWs6KE=\nR:random_shuffle.h\nZ:Q1vsnK/7TxJ+jptQJe/tEsWQOiruk=\nR:search.h\nZ:Q1m1yzA+ZVnRAvw4FBWaGuLO1isp0=\nR:set_operations.h\nZ:Q1gqjiN7/gZ9DIncpkX8IOCWEbEe0=\nR:settings.h\nZ:Q1GFi5G2rBU3HZxRrgGEtbr4EZznU=\nR:sort.h\nZ:Q1fY9hJlpy0ZXzRtOzXTEOj54z1fI=\nR:tags.h\nZ:Q1igx1XzOSWHKp/aW8uliMwMO07jk=\nR:types.h\nZ:Q1eHmA2AuUuoOsrOL4yIcJKqPF+5U=\nR:unique_copy.h\nZ:Q1W///gukrd5UuDLoQVmzC1NYSXQk=\nR:workstealing.h\nZ:Q1dRzXwapayPPhIxAFyYBkvtVejCY=\nF:usr/include/c++/12.2.0/pstl\nR:algorithm_fwd.h\nZ:Q1JwKaol/c9jQehbM4J29YCz8sg3w=\nR:algorithm_impl.h\nZ:Q1lK2aQWaq3vI/IU00NxvCuvDyjbw=\nR:execution_defs.h\nZ:Q1/xe5CL8OpEPMFrXfKBVrllx+I7A=\nR:execution_impl.h\nZ:Q1AhLUgMtvSaPuNvBtkoCwQhxIiEw=\nR:glue_algorithm_defs.h\nZ:Q1HGGFzk12NZChWPAgkItg+woxg78=\nR:glue_algorithm_impl.h\nZ:Q1ClFUUuAPds5FTGfqHrXD6q90lhg=\nR:glue_execution_defs.h\nZ:Q1VexfK1tltvZ+EaAxpYaIc2ModSc=\nR:glue_memory_defs.h\nZ:Q1I7OzAaYNWG5cmMgc78TqK9gDfSQ=\nR:glue_memory_impl.h\nZ:Q1ZZY/DKSA24bNUvQL0Qqy19WmyJI=\nR:glue_numeric_defs.h\nZ:Q1D5OO3FwDvRX7vgowh/9AvuhtSQw=\nR:glue_numeric_impl.h\nZ:Q1+EmEAQ8BjPHAvJ+JzInbvbb3c4U=\nR:memory_impl.h\nZ:Q126Tl4d98REgfSwJooNUtWBCAltc=\nR:numeric_fwd.h\nZ:Q1ERThtEbRrzP6FhWuwzgApDpCaZw=\nR:numeric_impl.h\nZ:Q1wDugfuP7uYdJPYKF9OTNFMcBtDo=\nR:parallel_backend.h\nZ:Q1PZWaV5+H8namhiy+dpwUWUFF164=\nR:parallel_backend_serial.h\nZ:Q1oV5t2TZbitpnpmrqiM5WiLCuhQ0=\nR:parallel_backend_tbb.h\nZ:Q1niqqrus0yiGrvi0aZPP7M6ShKK8=\nR:parallel_backend_utils.h\nZ:Q1cSSRB2mBFhcNEhbaPM1hNoRQOk0=\nR:parallel_impl.h\nZ:Q16Jo4Bx5NMS//EMzFWd2J8SDB4VQ=\nR:pstl_config.h\nZ:Q16K7vBYcMGiDUTRvYK93jXICkcQY=\nR:unseq_backend_simd.h\nZ:Q1hdZR3lXCAnxlgJaQV7SqhwKOoAI=\nR:utils.h\nZ:Q1OvSIZ3sQjETnYQM3ldgNhN+Co5I=\nF:usr/include/c++/12.2.0/tr1\nR:array\nZ:Q108BKWAev9Sqfi0GedcCyiHAaoX8=\nR:bessel_function.tcc\nZ:Q1FBrE4vrpaC3TUNSLgQ9LTuyGx30=\nR:beta_function.tcc\nZ:Q172PqfGqFjWIpAd/yPOgc0VDOtVQ=\nR:ccomplex\nZ:Q1unJinQCQ/Y+szBJJveWfwbzEMSU=\nR:cctype\nZ:Q1W8eNUL9NoZyItIlLrFmK1y7pcTA=\nR:cfenv\nZ:Q1/u20e1qUHAGTV1uMdtrcTRa56XQ=\nR:cfloat\nZ:Q12Enilb+pM9zHEsAKq7xyXNFJnSo=\nR:cinttypes\nZ:Q1aALqA4NJtN9k26UoyIHq3SGCrGI=\nR:climits\nZ:Q1HCAWitvTbTQyzaRcXZzkfDk2Mtw=\nR:cmath\nZ:Q1eigvcAAw8EWqS4kvGF6L2pdKCME=\nR:complex\nZ:Q1sTIdImAzjXTP+v0FoeQ8ZwnF7EM=\nR:complex.h\nZ:Q1sYuIrKYOn/V4g9qqTEhDFRDbpAo=\nR:cstdarg\nZ:Q1W6vmOJao0Qdw/KQxfq9Nt9AIfT4=\nR:cstdbool\nZ:Q1lSZJRGJOhPJRw8s3No3EOgV4ANc=\nR:cstdint\nZ:Q1qiGqItu0EJwId4gxuYBVyI4verE=\nR:cstdio\nZ:Q1Ep2Wnvq26Zxp9h0nF9PliWqw2ZY=\nR:cstdlib\nZ:Q1Wg6443yAklmWba1rrOUr/JHRIFU=\nR:ctgmath\nZ:Q1q6XmfcBRSijEOVpbZX/hHEYEYnw=\nR:ctime\nZ:Q1Gh227UX9DMEUzNoPcgQkTRuqWXY=\nR:ctype.h\nZ:Q14MAqv1ToUuVWjZVUowUFO9ARUuw=\nR:cwchar\nZ:Q1CvKMCaoY9vbH0T0/mUjvB38u6Ec=\nR:cwctype\nZ:Q1C/Vg+1Vj5wKsZ8NsIUx4O/MisQ8=\nR:ell_integral.tcc\nZ:Q1xlxAw/GIdGT+gVImaD6fhmnbKnA=\nR:exp_integral.tcc\nZ:Q1yFRCR9UuagYYVot2pMJBVbGmE/A=\nR:fenv.h\nZ:Q1isYfFM0lFHXkEgeNdVzqvPlf7i4=\nR:float.h\nZ:Q1641AeKG6dNFwJ4pBKMX/gkH1qoU=\nR:functional\nZ:Q1KKe30Jbe/CiG8QlnYg16+4bbQ1U=\nR:functional_hash.h\nZ:Q1FKnSb8yjoAOKf2NntCUkLd/IHlI=\nR:gamma.tcc\nZ:Q1aitFaSn3Tsh6VVyqVjSH8ydGQyE=\nR:hashtable.h\nZ:Q1y3jbKDOOGwxTa+tl6zXBWpHeEdA=\nR:hashtable_policy.h\nZ:Q1GqiSXQmRoTcbyZIZREKBDYCfoPs=\nR:hypergeometric.tcc\nZ:Q1zeDqliR2H2U58l4K20tr2BJpJ44=\nR:inttypes.h\nZ:Q1PcoZI+4uZEiqLr9TEtDOhLcyr5o=\nR:legendre_function.tcc\nZ:Q1F4TlRd0esPkmozPr5AqrqTaDkQI=\nR:limits.h\nZ:Q1J3vL8QtvPajkY9M1gVVB1VVNCr0=\nR:math.h\nZ:Q1tmLRkrkacVVjiqdnc48nbpWuNyY=\nR:memory\nZ:Q1LSFV+v/bb+oJuSi/7FckPbfnABI=\nR:modified_bessel_func.tcc\nZ:Q1E/rg7xagYQ/QZY7XCILLoYUMf6E=\nR:poly_hermite.tcc\nZ:Q1n7Smj+MKy/K+Q12X4XeDX0Z65d8=\nR:poly_laguerre.tcc\nZ:Q1jcqdHe31e2PfnwglSzG8uX8pjc8=\nR:random\nZ:Q1mQdSYraDYVq4oPvvu7CSqEkqm8A=\nR:random.h\nZ:Q1fkYe287p71s86BRMPYRDI8m5nRk=\nR:random.tcc\nZ:Q1QEB6O/ZUKngPp8rKUdF/LvQ1vSs=\nR:regex\nZ:Q1G2E8r2GO4Ofy7Iec3J8FC6xf4Rc=\nR:riemann_zeta.tcc\nZ:Q1fw8AwhvU6Rc5U+CTd6HwIpyV3f0=\nR:shared_ptr.h\nZ:Q1IwPel2FBa3KLRjg79/GmwkNaihU=\nR:special_function_util.h\nZ:Q1FD/q/U85g1fem/ZnWMJ54FcMpzE=\nR:stdarg.h\nZ:Q1SvPoptrRtr98qUCQD7WDqoH5dro=\nR:stdbool.h\nZ:Q1H6TGLjxXvVKPtBo5dMFCVeHJ7FU=\nR:stdint.h\nZ:Q1f//e9Jn+oq0eGGFCBAs9JEVHGOY=\nR:stdio.h\nZ:Q1DI76DaO9dD6o1ynHghMcF7i7z9o=\nR:stdlib.h\nZ:Q17hX5Ip7PbySHlYHvxWKi9mT/ffk=\nR:tgmath.h\nZ:Q1QqRT9jSof84W5lNRGQu5g35SiRA=\nR:tuple\nZ:Q1X8ocFzLsgs7Ne/eYqc2NkfyOUFs=\nR:type_traits\nZ:Q1s3OXkZ7TPocQOQGYTJg1T1kywtA=\nR:unordered_map\nZ:Q1DX741oe6/57ork7Q5BthuYOInzk=\nR:unordered_map.h\nZ:Q1VrUaRdNhAG1jaTTK4/RoYUSancU=\nR:unordered_set\nZ:Q1bulxJf1dpmoltdIl6xVouoXFdQY=\nR:unordered_set.h\nZ:Q1f1ThiB/BeqmTO+7ukZBervZ39WM=\nR:utility\nZ:Q1IM8qiLVYGodmFnJFj5IvX5EbEQY=\nR:wchar.h\nZ:Q1Fc2g3t420ULqP1P4XzbxUtETsCc=\nR:wctype.h\nZ:Q1JWH93E6wzAlRulhUBmuQmFaQON0=\nF:usr/include/c++/12.2.0/tr2\nR:bool_set\nZ:Q1e4hNU85pZ2TxvX+zDg1MjY3jaC8=\nR:bool_set.tcc\nZ:Q1VM3JfcwJez8CfIWRAwy5DTf5t9g=\nR:dynamic_bitset\nZ:Q16kK3Os8LfsEAJbKkVdYudG+WV3I=\nR:dynamic_bitset.tcc\nZ:Q1lAr4hs9X2YHpqC2S4Pq5kSBXP/k=\nR:ratio\nZ:Q1bCCyUrN6LRHabDwC4vS0ArPvvs4=\nR:type_traits\nZ:Q1hMsK2GhBZm2NtqNrUwg6SH5fIiA=\nF:usr/include/c++/12.2.0/x86_64-pc-linux-gnu\nF:usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits\nR:atomic_word.h\nZ:Q14B02qXuEOA2Z1DRbBOSwqzJSzcw=\nR:basic_file.h\nZ:Q1mBKs/JGfwwQVBU2s9USTP7L8i3o=\nR:c++allocator.h\nZ:Q1Huw8+MwDeZ1Nt00ip9eGduAKJRQ=\nR:c++config.h\nZ:Q1r4vsC6xfGyKtubEvCsqEEypKH5Q=\nR:c++io.h\nZ:Q16yPTYfqEYIngFP3EACJHo0S3i1s=\nR:c++locale.h\nZ:Q1pXZYorXT6QpN/oRGDPQ/18CGHX4=\nR:cpu_defines.h\nZ:Q1NqV31V4O+mo+/WAQLyD5yLolpWM=\nR:ctype_base.h\nZ:Q1ObW3ZfEP1N8QWEHgjmTPmo34QPc=\nR:ctype_inline.h\nZ:Q1Jdjcw/AupvI909B9ABm4EouqTXs=\nR:cxxabi_tweaks.h\nZ:Q1dlxLz5Sx9+h+88ljEa/FAP5UnRM=\nR:error_constants.h\nZ:Q1huUodbOENvWKsA9YUvkallqa4X8=\nR:extc++.h\nZ:Q1Wz6vheJgA+duxZwJ8F/fhKxx/OQ=\nR:gthr-default.h\nZ:Q1O1Ryy0mnqWzUWuUfAbMcZsNfTdc=\nR:gthr-posix.h\nZ:Q1O1Ryy0mnqWzUWuUfAbMcZsNfTdc=\nR:gthr-single.h\nZ:Q1s+uhacuxI6fODJD4xW7dv/6UKaM=\nR:gthr.h\nZ:Q10kPRFeVoGrFJaEsPqPAchKA4Q74=\nR:messages_members.h\nZ:Q1zk7TBfQVDy7ZuAQS1Y2Llc9Ea00=\nR:opt_random.h\nZ:Q1+tBuoWKz0NICSx5YH7F1HAA2Fgo=\nR:os_defines.h\nZ:Q1KL/1dBY9KcuFP6IySTbQ572EM1A=\nR:stdc++.h\nZ:Q1GHhcL6N+2+sr74HLbkOUHNVTebs=\nR:stdtr1c++.h\nZ:Q1ZkYM1+a53JejQvVkZNd9f0eHFiQ=\nR:time_members.h\nZ:Q1FSMFMBrlNvSvtmnrpXJnhBWIYGg=\nF:usr/include/c++/12.2.0/x86_64-pc-linux-gnu/ext\nR:opt_random.h\nZ:Q1x9koZutGYOZsrmSNn0NHv89OmvA=\nF:usr/lib64\nR:libstdc++.so\na:0:0:777\nZ:Q1IBWvWeF2/WZ5/hspXpl93XcpiNc=\nF:usr/share\nF:usr/share/gcc-12.2.0\nF:usr/share/gcc-12.2.0/python\nF:usr/share/gcc-12.2.0/python/libstdcxx\nR:__init__.py\nZ:Q1rcg7GeeTSRscbqD9i0bNnzLlkvw=\nF:usr/share/gcc-12.2.0/python/libstdcxx/v6\nR:__init__.py\nZ:Q16aqu10tRCljPtaMy40EMJNewh3s=\nR:printers.py\nZ:Q1uPxIImeD4LnX2ESSqQrYMdGRznE=\nR:xmethods.py\nZ:Q1FBNAyYt2FRv3WnpsjJ1OpF+lP38=\n\nC:Q1+Bl9D7kV4+8Oe4mPm8vWkDqPWSg=\nP:libgcc\nV:12.2.0-r6\nA:x86_64\nS:59219\nI:137560\nT:GCC runtime library\nU:\nL:GPL-3.0-or-later\nD:so:libc.so.6\np:so:libgcc_s.so.1=1\nF:usr\nF:usr/lib64\nR:libgcc_s.so.1\na:0:0:755\nZ:Q14Dq9LvSkM7irsH7IbbLatNWCLdw=\n\nC:Q14eU/I6V9l20HJuz19dgcfYuwOkQ=\nP:libstdc++\nV:12.2.0-r6\nA:x86_64\nS:10754576\nI:33222103\nT:\nU:\nL:GPL-3.0-or-later\nD:so:ld-linux-x86-64.so.2 so:libc.so.6 so:libgcc_s.so.1 so:libm.so.6\np:so:libstdc++.so.6=6\nF:usr\nF:usr/lib64\nR:libstdc++.a\nZ:Q1JkeUNNYzPPmBq6AtgwEcuRp6kYU=\nR:libstdc++.so.6\na:0:0:777\nZ:Q1IBWvWeF2/WZ5/hspXpl93XcpiNc=\nR:libstdc++.so.6.0.30\na:0:0:755\nZ:Q1J9fYQVDFZBX0PNSHskplbacLk2o=\nR:libstdc++.so.6.0.30-gdb.py\nZ:Q143WHzAaCYfFgYY+lM1NMGB0lVj8=\nR:libsupc++.a\nZ:Q1ya1MeEAf5+9NfBDz2yt+cshdwlo=\n\nC:Q1XPqNK45txvK27XUeA5shYLHcdnE=\nP:gmp\nV:6.2.1-r4\nA:x86_64\nS:286517\nI:596132\nT:a library for arbitrary precision arithmetic\nU:\nL:LGPL-3.0-or-later OR GPL-2.0-or-later\no:gmp\nD:so:libc.so.6 so:libgcc_s.so.1 so:libgmp.so.10 so:libm.so.6 so:libstdc++.so.6\np:so:libgmp.so.10=10 so:libgmpxx.so.4=4\nF:usr\nF:usr/lib\nR:libgmp.la\na:0:0:755\nZ:Q19NSsNEOMqAiOP3H9B1IeshPtAXo=\nR:libgmp.so.10\na:0:0:777\nZ:Q1XzoHrtljepZ6XonoNWHaMrhgr/A=\nR:libgmp.so.10.4.1\na:0:0:755\nZ:Q1GZA7/uyCZ1eawyG2uLnscajkA0U=\nR:libgmpxx.la\na:0:0:755\nZ:Q19QDb9XMxA6y0Q+3DmZ3A4Pa4spg=\nR:libgmpxx.so.4\na:0:0:777\nZ:Q1RnzuMk9qC0jtjyOKqR+Hf4pI3eU=\nR:libgmpxx.so.4.6.1\na:0:0:755\nZ:Q1gPqaE7UItWzv+GMwnJjqp0yEDQ4=\nF:usr/share\n\nC:Q1UIBsR8mzMD5nUbXlaHEyE3XytJc=\nP:isl\nV:0.24-r2\nA:x86_64\nS:898528\nI:2147577\nT:an integer set library for the polyhedral model\nU:\nL:MIT\nD:so:libc.so.6 so:libgmp.so.10\np:so:libisl.so.23=23\nF:usr\nF:usr/lib\nR:libisl.la\na:0:0:755\nZ:Q14IVH4P9uJ+MejXWYN1aS68pUYUQ=\nR:libisl.so.23\na:0:0:777\nZ:Q1VjZby99brnodevjh8sA/ihaxeko=\nR:libisl.so.23.1.0\na:0:0:755\nZ:Q1IgtAcymd950U4rSfXoVlkXmmMas=\nR:libisl.so.23.1.0-gdb.py\nZ:Q1Ps22QIhR48jd6ihus1CYss7+3lQ=\n\nC:Q1RP2LRWzIq41VgKK/jDuydPWph6k=\nP:mpfr\nV:4.1.0-r3\nA:x86_64\nS:341489\nI:785983\nT:multiple-precision floating-point library\nU:\nL:LGPL-3.0-or-later\nD:so:ld-linux-x86-64.so.2 so:libc.so.6 so:libgmp.so.10\np:so:libmpfr.so.6=6\nF:usr\nF:usr/lib\nR:libmpfr.la\na:0:0:755\nZ:Q1tAP8pbDQNie0F03NutfK5MEjzZs=\nR:libmpfr.so.6\na:0:0:777\nZ:Q12ChxWxX9X558a7+8lskscrUSAxA=\nR:libmpfr.so.6.1.0\na:0:0:755\nZ:Q1i+z14JAFoY+mo81jX5raDGwFUvw=\nF:usr/share\nF:usr/share/doc\nF:usr/share/doc/mpfr\nR:AUTHORS\nZ:Q1tSXWSfI4lHfQbiCGgNayz1MCBRA=\nR:BUGS\nZ:Q18s5H7E2mERPmSuOwdPLsNZG/tJs=\nR:COPYING\nZ:Q1MaPUYLs8fZiEUYfHFqMNuBxEthU=\nR:COPYING.LESSER\nZ:Q1qKEuaGfX7jnCHZsRqYQGYJm2+2s=\nR:FAQ.html\nZ:Q1YKv1/5Dcuom5BFvCppxldxGOq14=\nR:NEWS\nZ:Q1IxXgr8QyHRbNjUB868gYVA8cpJQ=\nR:TODO\nZ:Q1ZcTW3/dclfdZUA91x9cxfYOIM08=\nF:usr/share/doc/mpfr/examples\nR:ReadMe\nZ:Q12w8v7p7m/CyHPKgxhX00OqxEivI=\n\nC:Q1lnm4pXBdYjvFaMPr+t4VIex/FfU=\nP:mpc\nV:1.2.1-r2\nA:x86_64\nS:75461\nI:220817\nT:multiple-precision C library\nU:\nL:LGPL-3.0-or-later\nD:so:libc.so.6 so:libgmp.so.10 so:libm.so.6 so:libmpfr.so.6\np:so:libmpc.so.3=3\nF:usr\nF:usr/lib\nR:libmpc.la\na:0:0:755\nZ:Q1kCNAzcuQKAA90bteIhsqwVEISlM=\nR:libmpc.so.3\na:0:0:777\nZ:Q18D+5GQJ6/QkMEDbtobcJrzr7ObE=\nR:libmpc.so.3.2.1\na:0:0:755\nZ:Q1ELB4jrchqWp42gJHQbaUNYYNQPo=\nF:usr/share\nF:usr/share/info\nR:mpc.info\nZ:Q1KjgsYe/aL/YIT+Ll1VJynIE8V5s=\n\nC:Q15G7JWUnPXEGygMLUyiggnIduFVQ=\nP:gcc\nV:12.2.0-r6\nA:x86_64\nS:79181818\nI:219184862\nT:the GNU compiler collection\nU:\nL:GPL-3.0-or-later\nD:binutils libstdc++-dev so:ld-linux-x86-64.so.2 so:libc.so.6 so:libgcc_s.so.1 so:libgmp.so.10 so:libisl.so.23 so:libm.so.6 so:libmpc.so.3 so:libmpfr.so.6 so:libstdc++.so.6 so:libz.so.1\np:cmd:c++=12.2.0-r6 cmd:cpp=12.2.0-r6 cmd:g++=12.2.0-r6 cmd:gcc-ar=12.2.0-r6 cmd:gcc-nm=12.2.0-r6 cmd:gcc-ranlib=12.2.0-r6 cmd:gcc=12.2.0-r6 cmd:gcov-dump=12.2.0-r6 cmd:gcov-tool=12.2.0-r6 cmd:gcov=12.2.0-r6 cmd:lto-dump=12.2.0-r6 cmd:x86_64-pc-linux-gnu-c++=12.2.0-r6 cmd:x86_64-pc-linux-gnu-g++=12.2.0-r6 cmd:x86_64-pc-linux-gnu-gcc-12.2.0=12.2.0-r6 cmd:x86_64-pc-linux-gnu-gcc-ar=12.2.0-r6 cmd:x86_64-pc-linux-gnu-gcc-nm=12.2.0-r6 cmd:x86_64-pc-linux-gnu-gcc-ranlib=12.2.0-r6 cmd:x86_64-pc-linux-gnu-gcc=12.2.0-r6 so:libasan.so.8=8 so:libcc1.so.0=0 so:libcc1plugin.so.0=0 so:libcp1plugin.so.0=0 so:libitm.so.1=1 so:liblsan.so.0=0 so:libssp.so.0=0 so:libtsan.so.2=2 so:libubsan.so.1=1\nF:usr\nF:usr/bin\nR:c++\na:0:0:755\nZ:Q1TnMPLPOqC97cVYu94iHeSvxYzQg=\nR:cc\na:0:0:777\nZ:Q1/Oebf+H+46l3+hvU772emgbCnBQ=\nR:cpp\na:0:0:755\nZ:Q1ZBtoMotm+jkDz4vE0miZKXhzZHE=\nR:g++\na:0:0:755\nZ:Q1TnMPLPOqC97cVYu94iHeSvxYzQg=\nR:gcc\na:0:0:755\nZ:Q1l8mBii47/QBC/Lt91Ig4yiS+J6s=\nR:gcc-ar\na:0:0:755\nZ:Q1m1k/KnIujt2R4eFNyBo0s/UGsm0=\nR:gcc-nm\na:0:0:755\nZ:Q1pUYm/Of4lvOjq5A485HW5KBXC9w=\nR:gcc-ranlib\na:0:0:755\nZ:Q12YpRYipTOvnZvTMpHqhY/qUrl2I=\nR:gcov\na:0:0:755\nZ:Q1qRN38/9tbCKen41GFKwyEdQwIGQ=\nR:gcov-dump\na:0:0:755\nZ:Q1FEsnWnSMV/w0Pd8gIWVlJwjMAbc=\nR:gcov-tool\na:0:0:755\nZ:Q1yRlkvpKOtLtvIP2lcaZRaVs2TeE=\nR:lto-dump\na:0:0:755\nZ:Q16xjGHoeYYku1LB6Y5lkhKw2sR8Q=\nR:x86_64-pc-linux-gnu-c++\na:0:0:755\nZ:Q1TnMPLPOqC97cVYu94iHeSvxYzQg=\nR:x86_64-pc-linux-gnu-g++\na:0:0:755\nZ:Q1TnMPLPOqC97cVYu94iHeSvxYzQg=\nR:x86_64-pc-linux-gnu-gcc\na:0:0:755\nZ:Q1l8mBii47/QBC/Lt91Ig4yiS+J6s=\nR:x86_64-pc-linux-gnu-gcc-12.2.0\na:0:0:755\nZ:Q1l8mBii47/QBC/Lt91Ig4yiS+J6s=\nR:x86_64-pc-linux-gnu-gcc-ar\na:0:0:755\nZ:Q1m1k/KnIujt2R4eFNyBo0s/UGsm0=\nR:x86_64-pc-linux-gnu-gcc-nm\na:0:0:755\nZ:Q1pUYm/Of4lvOjq5A485HW5KBXC9w=\nR:x86_64-pc-linux-gnu-gcc-ranlib\na:0:0:755\nZ:Q12YpRYipTOvnZvTMpHqhY/qUrl2I=\nF:usr/include\nF:usr/lib\nF:usr/lib/gcc\nF:usr/lib/gcc/x86_64-pc-linux-gnu\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0\nR:crtbegin.o\nZ:Q1EAfokJbVKvFG/JOOw4GqZnJwNDc=\nR:crtbeginS.o\nZ:Q1OvaKbNxkHzSqifH2CkKS1na/qwA=\nR:crtbeginT.o\nZ:Q1Qmk54IMBvGgjQRI9nr5XLAY3FyY=\nR:crtend.o\nZ:Q1D27DRlmtih0VJ6AtFsyjXU9+em0=\nR:crtendS.o\nZ:Q1D27DRlmtih0VJ6AtFsyjXU9+em0=\nR:crtfastmath.o\nZ:Q1dFyo1+taRKI97RzY74dfgcPORPQ=\nR:crtprec32.o\nZ:Q1002JARtFSnV55oTNMBX7P3d9LeQ=\nR:crtprec64.o\nZ:Q1bUWCGazPq1DcQjX3w919To9FSIA=\nR:crtprec80.o\nZ:Q19AfMBoetcaf9ZB14NkRQvR8Kb2Y=\nR:libcaf_single.a\nZ:Q1+kyjCUnnHN7/+XZq1oCFxIqXgKI=\nR:libcaf_single.la\na:0:0:755\nZ:Q1nY0TBUPkme3ySPq2WL0+KYL2XeQ=\nR:libgcc.a\nZ:Q1Ez1BglXaD+IBZ5613+PdltzGC3Y=\nR:libgcc_eh.a\nZ:Q1XUtX3Mblb744II0NG2tRhxEvd68=\nR:libgcov.a\nZ:Q1OhgulbGB2BDwsI84TV+WpdKEGNE=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include\nR:ISO_Fortran_binding.h\nZ:Q1lqshgdEtqy7yD+b3I1X9MYh5pYY=\nR:acc_prof.h\nZ:Q13eIZHkBxXIUoFKswuvLVNhaM8UE=\nR:adxintrin.h\nZ:Q19PJ7NZkUd5zCu4YOhnPWuIlNF34=\nR:ammintrin.h\nZ:Q1mLMUIefe9M+wEgFekUe6EienZDY=\nR:amxbf16intrin.h\nZ:Q1gUekOUNxPXQvtUCcBtFcS7pwBqg=\nR:amxint8intrin.h\nZ:Q1CuwwXPErZV0n1PT9CDVCdkOOa+M=\nR:amxtileintrin.h\nZ:Q1VQ0R9myTq4uc/9+FwYj+FQw4jHU=\nR:avx2intrin.h\nZ:Q1RtwZstanuP39zTMmCYG0Y1e9Kns=\nR:avx5124fmapsintrin.h\nZ:Q1CZssmm/FUZHjITK20P3T/6eGmuA=\nR:avx5124vnniwintrin.h\nZ:Q1JDQ5HMprzJjRLIFzGiuMu381wCU=\nR:avx512bf16intrin.h\nZ:Q1YGqUe0nVjnuUs1xGdsQiUdAElO8=\nR:avx512bf16vlintrin.h\nZ:Q1wFZCImT7D9H35dY83su+sc+POBc=\nR:avx512bitalgintrin.h\nZ:Q1V63ovtdbw5vFzCY7x2bsVsgO5iI=\nR:avx512bwintrin.h\nZ:Q1JGXHWttRxWgR/hp0d+8JxlgPWys=\nR:avx512cdintrin.h\nZ:Q18u8/yvyoUNzCS7lB7K95j4R6dhs=\nR:avx512dqintrin.h\nZ:Q1NCx7kBZ5bixiytmE0V/LoUAKXUk=\nR:avx512erintrin.h\nZ:Q1HazHON7GRjX95z4VmvNHCKncZm4=\nR:avx512fintrin.h\nZ:Q1KWKlWlu0DMqFHFpcxJ9TZPh5RiI=\nR:avx512fp16intrin.h\nZ:Q1qFXNYLNOA0k7wi9bMIOu0cnWkFs=\nR:avx512fp16vlintrin.h\nZ:Q15KV131w5Cd316HdTpij5E6cfCTI=\nR:avx512ifmaintrin.h\nZ:Q1hNFh4gNkXQXZ0W7EO9l96RVen4s=\nR:avx512ifmavlintrin.h\nZ:Q134C/mK1PqPamdrGND6OFRA1TTSg=\nR:avx512pfintrin.h\nZ:Q1fGpN186rgyyqVvL98/OBVHxtz9o=\nR:avx512vbmi2intrin.h\nZ:Q12Vnlxw5mcGgL1RFqCQBR0FwkVGg=\nR:avx512vbmi2vlintrin.h\nZ:Q1KqjsI3jSqtOCPSjFHU9MLrLZ43Q=\nR:avx512vbmiintrin.h\nZ:Q1ib+I5WqYDgAU8BzxUBeT7tEDomc=\nR:avx512vbmivlintrin.h\nZ:Q1vDuTIBDZZ60Vj8ogdofR05S7o10=\nR:avx512vlbwintrin.h\nZ:Q1j54PwWNbXlxKN68ZTQV105JfoUI=\nR:avx512vldqintrin.h\nZ:Q19H96ZClc/DUcsbhkwyvFTyiVn4s=\nR:avx512vlintrin.h\nZ:Q1gxVh4qVUSNZvqzGRG799xvyGZLs=\nR:avx512vnniintrin.h\nZ:Q1xhz10JfM5f/ZBeP+YXxuyk7+vKg=\nR:avx512vnnivlintrin.h\nZ:Q1QM7OWcQQ3X6HTFPqLqkqJ7bq8YM=\nR:avx512vp2intersectintrin.h\nZ:Q18kfhrUWlktzJx1Q4f+dY5YaeZj0=\nR:avx512vp2intersectvlintrin.h\nZ:Q1eTZ28OboloztzgyrVVCITWULyhU=\nR:avx512vpopcntdqintrin.h\nZ:Q1ZFr0sAsJqE1Pf5Os7zAFwDTIV/4=\nR:avx512vpopcntdqvlintrin.h\nZ:Q1hRJv7Ki06Y1YN8WIlxLd6oIdz3U=\nR:avxintrin.h\nZ:Q1MIR7iihinT62/fsVwzOvMbxv2UY=\nR:avxvnniintrin.h\nZ:Q1t1mjWY1H2Z/s9iWIg9aQbnWiqxg=\nR:bmi2intrin.h\nZ:Q1kprzG1gtDHsOrF/9qbh6w+Y5F8o=\nR:bmiintrin.h\nZ:Q1jRrvc5E04/dJSNQUImdVp4BhELU=\nR:bmmintrin.h\nZ:Q1uYjgJCQ7bRbHkLPxVWfUpY0n8uE=\nR:cet.h\nZ:Q1Dn54fgvv/otch7DFKWdTJumJqjU=\nR:cetintrin.h\nZ:Q1RiXVwYxJZL9yR4KVWtVRVzi7U7M=\nR:cldemoteintrin.h\nZ:Q1Pmq3H91Yyj5ErtgTQBiH2yFUWXo=\nR:clflushoptintrin.h\nZ:Q1x6c5Qu6c+QcDlfQNJeB04aFqhMI=\nR:clwbintrin.h\nZ:Q1nvrcuX4jkwADfYu5HO4zBy812pY=\nR:clzerointrin.h\nZ:Q1mIU/J2fjjzCaroJfLy3cDxdOGHs=\nR:cpuid.h\nZ:Q116RCLGier+0dgXQrfxlMENHfbcM=\nR:cross-stdarg.h\nZ:Q1nbHFmvJvipIbPzFXUFc0IUQnaak=\nR:emmintrin.h\nZ:Q1/oOpGF9IwsBVopjKrCBEKqgeReI=\nR:enqcmdintrin.h\nZ:Q1/SJjiShSiiYS4S/ABZIrt3qq5oM=\nR:f16cintrin.h\nZ:Q1hyU8qgL13xwwVd3eO4V/bEbkvfk=\nR:float.h\nZ:Q1sXk01x2yEpjnQVqPMMFZXxl1WFk=\nR:fma4intrin.h\nZ:Q1rD5wjK8en8AZvhENhgUMaOMJeRU=\nR:fmaintrin.h\nZ:Q1dbu8J39ipV0ggIiAiFcO7COKGWA=\nR:fxsrintrin.h\nZ:Q14LbmUS3LGs8l2LxvtrAw6caap9U=\nR:gcov.h\nZ:Q1YpgUarVnL/WDu2JUGw9dOwtJJeE=\nR:gfniintrin.h\nZ:Q1wkPQZ4R6o6lxCnDAgq/zz0ND7GI=\nR:hresetintrin.h\nZ:Q1kRDjhG/lRsiNyNIma4mp5ip8KT4=\nR:ia32intrin.h\nZ:Q15z6ryIIxr2KhTYn+6ihW6dJQndQ=\nR:immintrin.h\nZ:Q1dJQjRGNbME2Dy30yaTHwr7MwkoA=\nR:iso646.h\nZ:Q1fdKvKzghNHq4Lnkv9s6F2Co2bMg=\nR:keylockerintrin.h\nZ:Q1BQJE5hxSpP5jQknF7kTfWwcWIuU=\nR:lwpintrin.h\nZ:Q1xLu4Vfzbl8qrC0ved2GD8MK/mOk=\nR:lzcntintrin.h\nZ:Q1xBWsYpihpvgrg3DixdSPNYM/GmA=\nR:mm3dnow.h\nZ:Q1QEf18oWSyWdttGy7hoiB7hLVkt8=\nR:mm_malloc.h\nZ:Q1l8YA+Or+8Xhh7cLSh9qrbQSbyMQ=\nR:mmintrin.h\nZ:Q1d4IB+WQk6GqSrFSGaQaXvMsM8G4=\nR:movdirintrin.h\nZ:Q1T3e1woY9sR0qAlvM9BQzHvMtvuc=\nR:mwaitintrin.h\nZ:Q11YEYbApsJ45NWHI2T3iner4XP/U=\nR:mwaitxintrin.h\nZ:Q11fIMQVOAvDzQnHbjUV+iKRsvp8U=\nR:nmmintrin.h\nZ:Q1JjdbBq1Mfuj3OSStNc+GTcaGHd4=\nR:omp.h\nZ:Q1K+JXHJdjtAhk+U/zNPKZwGeoiFA=\nR:openacc.h\nZ:Q1XaNVyHSpc1C1UNnKqUp8p1SATJw=\nR:pconfigintrin.h\nZ:Q1Ts0uI8i+f3UIgLjqUWkNhb1497I=\nR:pkuintrin.h\nZ:Q19/+Bz6oqRXd3hQj54lbo4okaNVI=\nR:pmmintrin.h\nZ:Q1HvQfhEBDQ/J7C2E6iZbzdX1czrU=\nR:popcntintrin.h\nZ:Q1jGCXOrdEH5Au00mbOTmHEF5Kp2M=\nR:prfchwintrin.h\nZ:Q1qM5mhyU9NlzUATu2d8mOq88oqzc=\nR:quadmath.h\nZ:Q118fSwDcHENcGqo0c8TK5HAXDSOE=\nR:quadmath_weak.h\nZ:Q1O69uJ0NIodV1WPgyh8GW2a28LuU=\nR:rdseedintrin.h\nZ:Q1M16xYZBU9BDx4QKjEoPzLr7PjHA=\nR:rtmintrin.h\nZ:Q1cO39RblmL9FyInk5DBfSGftuLrQ=\nR:serializeintrin.h\nZ:Q1dxzsbSp/Bw9QaSYfk4DU9nVxY3k=\nR:sgxintrin.h\nZ:Q1hlNw5j5ufZDkw5Yzw0vYc0tplPA=\nR:shaintrin.h\nZ:Q1VDKk4MIARgKhnwu+4Qk3KBiFlf0=\nR:smmintrin.h\nZ:Q1FoNs047+5ZfbZrfce/a6JHl2/oQ=\nR:stdalign.h\nZ:Q1cgxKuxIqWlF1FFU0OJAbtAc89m8=\nR:stdarg.h\nZ:Q1rjtd2NDKDnbNvehRpVMlrfBJleE=\nR:stdatomic.h\nZ:Q13qxmurLvYa6RTCxuHDvZU2Ku2DQ=\nR:stdbool.h\nZ:Q1lXXDzqiYTnTNh4J5teN03lrUzwY=\nR:stddef.h\nZ:Q1rf1AobZDQder/yU2znu9jldx6hM=\nR:stdfix.h\nZ:Q1yVHYxWXyRSse2wsQh5scvO32vVU=\nR:stdint-gcc.h\nZ:Q13iYxopTAkhPl0DCjgP8b5MjJRlk=\nR:stdint.h\nZ:Q1Cj40H14t4cCMUJGeSXAe7rRkTCk=\nR:stdnoreturn.h\nZ:Q14+1wpe/9cUUjchE4o7MwLeIanYk=\nR:tbmintrin.h\nZ:Q1bhwvnJ5kTIRo4jTWVv3h3CNqWEU=\nR:tmmintrin.h\nZ:Q1O2R4QFcqeWCLriKLOnGyRBWDieg=\nR:tsxldtrkintrin.h\nZ:Q1c+DqYC9PMhsbMJgrGkA2Rbblz7A=\nR:uintrintrin.h\nZ:Q1fSjfKbPS8geZ51llzZ8ymIp6Rpw=\nR:unwind.h\nZ:Q1CDFDhGBdcwp1SdS8cVNZSgHMte8=\nR:vaesintrin.h\nZ:Q1F8LP2zXu1xoZP2PO5fbXI/vBjrY=\nR:varargs.h\nZ:Q1wNssHA/MaHludMF6Ux6tbQdaMUw=\nR:vpclmulqdqintrin.h\nZ:Q1CgnoGUFmTOwoylviWamMkVl55fw=\nR:waitpkgintrin.h\nZ:Q1hCanw9X725Anj50ENuY7ACvy+fY=\nR:wbnoinvdintrin.h\nZ:Q17xwq7Cls/ccNTIqg22SbDjNNizM=\nR:wmmintrin.h\nZ:Q1LdK2EBUD2BOechY7ZEUr05tkyGA=\nR:x86gprintrin.h\nZ:Q1Ex1LJDC0kaMjBH94TQXuTLYmC9E=\nR:x86intrin.h\nZ:Q1MUGL1Q9aln3Mzty/tnYtZQOB6FU=\nR:xmmintrin.h\nZ:Q1A4cwJNZ4tX/qdiIzmt+yqbJbtTk=\nR:xopintrin.h\nZ:Q16Ie6AyQK9SzjtMJV/Rm0iqqZIEg=\nR:xsavecintrin.h\nZ:Q15IyJ+p0ImH6EccVtB5uLFRo24ic=\nR:xsaveintrin.h\nZ:Q1TOp1dDDFyiNDKgAI5KBxdVI0wVQ=\nR:xsaveoptintrin.h\nZ:Q1AHxl7eEpp4mAS9s2N0TBIVVEi6k=\nR:xsavesintrin.h\nZ:Q1B3MlvrijJh1X9j647P5sNDX0ZrM=\nR:xtestintrin.h\nZ:Q1YdbIwbqiV7vucZB8V5BXCaRaX24=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/sanitizer\nR:asan_interface.h\nZ:Q1ji84NZYL07xv3rsJBVEVh01r2mQ=\nR:common_interface_defs.h\nZ:Q1Vn+/zxJEYSLuQZPxL/5v46w3HoE=\nR:hwasan_interface.h\nZ:Q1ihkRc974P71EvT3zAdGMNUk9xTY=\nR:lsan_interface.h\nZ:Q1+gXCwjk5IBUBVv6EKmyS4wkIdMk=\nR:tsan_interface.h\nZ:Q1IWmMJyTxgrdEwErVh2SlDDmtlns=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/ssp\nR:ssp.h\nZ:Q1A8iGAy0gbiI2lFCqCXXyUn7mUhM=\nR:stdio.h\nZ:Q1CfuQ83eESju0TT0AJkNxpqE59kE=\nR:string.h\nZ:Q11KxD8P3zG9nBnBbRjgSNL8YBgko=\nR:unistd.h\nZ:Q1mEB06/BgvWb4FH/OQ/WmJC1TSj4=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed\nR:README\nZ:Q12D4XaPFfOA9qTnxQMTp6G0pcp+E=\nR:limits.h\nZ:Q1dBLGjV5UUaffmyn+8RTV+IlAX5o=\nR:pthread.h\nZ:Q11/iGXe9qe9I89/1DvODaGjgezAE=\nR:syslimits.h\nZ:Q1I4yKG57DCd5brCErrwplWlbaOig=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/install-tools\nR:fixinc_list\nZ:Q1U+sHzW+t4Ram/epzl8aDmSnsCSU=\nR:gsyslimits.h\nZ:Q1I4yKG57DCd5brCErrwplWlbaOig=\nR:macro_list\nZ:Q1pBuhvIoUQMvd0v1alCu5aGrVehk=\nR:mkheaders.conf\nZ:Q1z+Oa7Bug3lBgG9+xnE1kcwllHbg=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/install-tools/include\nR:README\nZ:Q12D4XaPFfOA9qTnxQMTp6G0pcp+E=\nR:limits.h\nZ:Q1dBLGjV5UUaffmyn+8RTV+IlAX5o=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin\nR:gtype.state\nZ:Q1bHluCIscj7fP4a5HdzzZC+RwG7g=\nR:libcc1plugin.la\na:0:0:755\nZ:Q1B8+BMSKzV062SvxsBip9tLC/XIo=\nR:libcc1plugin.so\na:0:0:777\nZ:Q1Iv8aNZcwnLyYRXMQIiPIi9mmDB4=\nR:libcc1plugin.so.0\na:0:0:777\nZ:Q1Iv8aNZcwnLyYRXMQIiPIi9mmDB4=\nR:libcc1plugin.so.0.0.0\na:0:0:755\nZ:Q1yc923tXh23Tp2eLJQ/0FKfOzcxA=\nR:libcp1plugin.la\na:0:0:755\nZ:Q17qZG9YCRI0L2QkunGhMbwt5xPWw=\nR:libcp1plugin.so\na:0:0:777\nZ:Q1JPltlmhkC3l7Q27tPw1Bsom6JR0=\nR:libcp1plugin.so.0\na:0:0:777\nZ:Q1JPltlmhkC3l7Q27tPw1Bsom6JR0=\nR:libcp1plugin.so.0.0.0\na:0:0:755\nZ:Q1iBdwh2l+jxgb29rsfge6hEp+tog=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include\nR:addresses.h\nZ:Q1lir3YATq1jGKXs+EfV15MpysTzo=\nR:alias.h\nZ:Q1OoNoY+89zTT6/IwVdEO24BKxObg=\nR:align.h\nZ:Q1pMhQkJw4qYnr1A3tJiSbisMgYhg=\nR:all-tree.def\nZ:Q1udXENyh+0EnhsX0tDcpLaVvQKPM=\nR:alloc-pool.h\nZ:Q1WnX+BFdjekMaR+5hKIiYkIvhFpI=\nR:ansidecl.h\nZ:Q1snAKaoAZKbO/KvT8ouof+dUx4dk=\nR:array-traits.h\nZ:Q1BpoZVu7FJYNLYR0RPr6yxaSGw4M=\nR:asan.h\nZ:Q1Tse7SkSYZF1WS7qVFUhyG+lzilE=\nR:attr-fnspec.h\nZ:Q1eT2RMHQZoOI2xOgQXBNswCoD2d0=\nR:attribs.h\nZ:Q1UU0T/Y2x2hwvwgEGj4qYdyjc2Wc=\nR:auto-host.h\nZ:Q1rnrUEdv2hGMhRDhbWUjDhf3DX6c=\nR:auto-profile.h\nZ:Q1MmbJjoHszrec36m58lzuc1Rr/GM=\nR:b-header-vars\nZ:Q1LCZLE2gpdlhncofyNCXMFa6rRBs=\nR:backend.h\nZ:Q1p+kToQEW/U56mK15wiK4rcAfIoY=\nR:basic-block.h\nZ:Q1YAdRjjzJxZaZNVVidQTXmtxz0wU=\nR:bb-reorder.h\nZ:Q1QcjBT7u4AvzENn/APn2l52UJFVg=\nR:bitmap.h\nZ:Q1AYd3achSC/0IIEPXjsyrjgqSQR0=\nR:builtin-attrs.def\nZ:Q1+QOnGXZpzEcvhxpfvlzB7AzCmfE=\nR:builtin-types.def\nZ:Q1QSiFz/yRb58xDKNzCTvRX6dzQLM=\nR:builtins.def\nZ:Q1s3B+bBbmkbAPLZzEEGDcHqaBnzA=\nR:builtins.h\nZ:Q1UbTqc9CB5BIv8BxcPdAzJS3CxY8=\nR:bversion.h\nZ:Q1xEKbBoS6Zlr1oWXg5JMbayLD3T0=\nR:c-tree.h\nZ:Q1MpYpVzfRafdwuo0Gr3t7SQ/07eg=\nR:calls.h\nZ:Q1KfZoVRpe4IMxBb19/ZHANKzcoGc=\nR:ccmp.h\nZ:Q1nnBLZznvWAe7npzcM/MvnlUF1e8=\nR:cfg-flags.def\nZ:Q1H7vgOZBHoqPaaApGjvDMUfvqeBg=\nR:cfg.h\nZ:Q1fwLJiUSSSjXXYhYjHjH1fhMRiRk=\nR:cfganal.h\nZ:Q18qKFR+vyrMMRU4OZpnozaFcuZ8I=\nR:cfgbuild.h\nZ:Q1/h0hpip2EzV6QIXBzdZrNBX6Cf4=\nR:cfgcleanup.h\nZ:Q17cUEp+YiJY8wSBcldeSrF0K8GVo=\nR:cfgexpand.h\nZ:Q1n8cxhPyjRZN4AOdKTkelcseavAw=\nR:cfghooks.h\nZ:Q1DesogVcinhahtXKreehVZgfOWoQ=\nR:cfgloop.h\nZ:Q1OTd/K5gKzMZu/glj/Ir7DaqdlcE=\nR:cfgloopmanip.h\nZ:Q1RWpx0prgPChUsxzGWTYlQfmaGNY=\nR:cfgrtl.h\nZ:Q1BMkdY5NIIIfDIZPdinO65QOWtng=\nR:cgraph.h\nZ:Q1Z/dLFbJ/CiGEX/vuf9eSC5PSy+E=\nR:cif-code.def\nZ:Q1Bji46xlKLYfd0NiLDpditvNQzs8=\nR:collect-utils.h\nZ:Q1bkeSbPHwmEpeMheQXAwdxne9S/4=\nR:collect2-aix.h\nZ:Q1UDyn7dHGZHLJQRETbanuYIamA4c=\nR:collect2.h\nZ:Q1kecdMS6G1P4ISvhEX3xqRxKYdlc=\nR:color-macros.h\nZ:Q1T76a1E0METzZa/Y3ZiHzObo0y3M=\nR:conditions.h\nZ:Q1o5PMrZCPdiqSy6wEBSvEmAhMnuk=\nR:config.h\nZ:Q1LTQRlWkKNo2IEC/Vyx3UHhpFI6s=\nR:configargs.h\nZ:Q155xu/BSQTCpPAsUHO1XAeaDA+Ww=\nR:context.h\nZ:Q1cE3HHtV1DFDIPBGNzvqvEXnhFug=\nR:convert.h\nZ:Q1Xmn+P12oU+1+kTO2tj7FvJAeThM=\nR:coretypes.h\nZ:Q16HcB6VaCabSFG/oMkBGAlHMMvwQ=\nR:coroutine-builtins.def\nZ:Q19mY+puIplQ40829puwZzooM4cnQ=\nR:coverage.h\nZ:Q1tOU57t9bySk2cdEBLKTyR11DdVU=\nR:cppbuiltin.h\nZ:Q18GNWvDFVjnYug71aHZSNKnHoA50=\nR:cppdefault.h\nZ:Q1q9b9CWCVd+pTgcDdC4l/joiUfrc=\nR:cpplib.h\nZ:Q11qKpVVQ+QwDC1i0ps6DvDVGVYQo=\nR:cselib.h\nZ:Q1QpSqsn8rNVCEI8r+4xYbCzTrJzs=\nR:ctfc.h\nZ:Q12MS98EcCE/VxDkoIvZ/deVB9uRo=\nR:data-streamer.h\nZ:Q1bp4SyJM9PMVuu7MUhDLFTZRZ2Z4=\nR:dbgcnt.def\nZ:Q1916WZj4OinTN2oYuabx4MFK+3t4=\nR:dbgcnt.h\nZ:Q1tgfzhjXDZTiVs4TCSajewIsoTH8=\nR:dbxout.h\nZ:Q115ay52aOODyC9AT1YWzYwIZLQQE=\nR:dce.h\nZ:Q1LAWLsSc5PgcRURem3P4JbJF0uNM=\nR:ddg.h\nZ:Q1FvvxedtJ2vOD98hg91nbgntCU3U=\nR:debug.h\nZ:Q11Eq05gxrmiOMIVGJopzfB+HjkBI=\nR:defaults.h\nZ:Q1HSgAwLlDyWhI+acCPGa3hHEj7Jk=\nR:df.h\nZ:Q1gjiV4wgwUJtkgwNw03yNuIeJXZQ=\nR:dfp.h\nZ:Q16ZFLFjFA1DGwNmjg5hBpJb/PHdI=\nR:diagnostic-color.h\nZ:Q1D3jQS7m5OWnrIhO3uvC8hDdhdu8=\nR:diagnostic-core.h\nZ:Q1eovZz7XUdCNU/pbUb6xlwJFLZWY=\nR:diagnostic-event-id.h\nZ:Q13WJ/1xj+Skxi4XuDtNoSmjJ/dQc=\nR:diagnostic-metadata.h\nZ:Q1fLnvACanYKNcXHZFTynUS33K9gw=\nR:diagnostic-path.h\nZ:Q18MkFtn+DJpEtHBawZXF/mZtlID8=\nR:diagnostic-spec.h\nZ:Q1smi4UAPI5dL0dTGGMMWMjkiEKGo=\nR:diagnostic-url.h\nZ:Q15DXWyF/Ji9ohd7r94NhwfP4+5LQ=\nR:diagnostic.def\nZ:Q1o5OiUcF3qba9yOWw+RH0kya05V4=\nR:diagnostic.h\nZ:Q18HVEGGA6kLI7DChkahI3ZBaU2ms=\nR:digraph.h\nZ:Q1gxbVcBU3Z8p69jlbzj3DaFnHmfs=\nR:dojump.h\nZ:Q1txsJ3psYoOH3hq17FbSlwY/99ZA=\nR:dominance.h\nZ:Q1iDS3+/2XczqIlarHTF2eDMLah+o=\nR:domwalk.h\nZ:Q1Ok9J766+WJbYlJO7pAbvgS3pz0E=\nR:double-int.h\nZ:Q1wnfSsNXbFmI9v5bmSRNozTplqrU=\nR:dump-context.h\nZ:Q1P0lbt/7QDi8LrNYC1Wtfe6n2FY0=\nR:dumpfile.h\nZ:Q1Mp0WJsgngcUAmQcvYyHmzxvjCZ8=\nR:dwarf2asm.h\nZ:Q1EH8CcWF0+7CPRkvWI87JLrcQb/k=\nR:dwarf2ctf.h\nZ:Q1jwePZCnY7dExMEiqLv6gHKRV+II=\nR:dwarf2out.h\nZ:Q1IwZ7CXUe/DHKaCX0yZj1v3sWnXU=\nR:edit-context.h\nZ:Q13G4y6T/rbvJof4euRlxxDVenXTw=\nR:emit-rtl.h\nZ:Q1o35ZURGtOPICtROz+0tBF0dyI8Q=\nR:errors.h\nZ:Q1f5VN5qti82+Sr/0vSHNdXAudvX0=\nR:escaped_string.h\nZ:Q1l6Q4M6/OD+hNiv+yge5MTEbNAMw=\nR:et-forest.h\nZ:Q13ulEet5doXjk794+z9Mj71kDZks=\nR:except.h\nZ:Q1gTUZ/zCIV0drdd9H2WimcpzSFx8=\nR:explow.h\nZ:Q1Ywm2PG6UJbc+1WcTYoNj/JG+KCI=\nR:expmed.h\nZ:Q1RbPkupq/8uuaUBadpBhlXJGW31Q=\nR:expr.h\nZ:Q1ucENJZXlepe8RtWVyWQw1fYEuYY=\nR:fibonacci_heap.h\nZ:Q1fhbVtzSHDWxRJWbojUxyuI3UoiA=\nR:file-find.h\nZ:Q1IJr1bUjbCqlGYW8sZF2PlaUTHfA=\nR:file-prefix-map.h\nZ:Q1hd1C1cIynKCGJz+mDdl333g9RIU=\nR:filenames.h\nZ:Q1f5odyDSCrSyrvfCE+Pv7FGWF/0I=\nR:fixed-value.h\nZ:Q1bRuEls1aI2vmrioUSxgiuSJf0io=\nR:flag-types.h\nZ:Q1VwCa2SRYnd6NFB5XeFLTwXyY2T0=\nR:flags.h\nZ:Q1GeKf5VLHtiRzA7CU77B5zluRK8o=\nR:fold-const-call.h\nZ:Q1sLLwNjNcx9J7iMDvHK3AVgyHn8A=\nR:fold-const.h\nZ:Q1+2gQIQUoqrjGByk6ypDVU9/C6hM=\nR:function-abi.h\nZ:Q1atUV9yOKxaYaPUcMZCpxzx9+Q+c=\nR:function.h\nZ:Q1RMAnHSw3zjH5lf3TKH4n4j5BQP8=\nR:gcc-plugin.h\nZ:Q1bS0TguO/vN9/UsJvfUUbSeWR5Y4=\nR:gcc-rich-location.h\nZ:Q1Xn2+1TxlySyZnPlWDP+Qx/aM2Ng=\nR:gcc-symtab.h\nZ:Q1CRQIeV4bQO7CzmJVXSGal3QqvfE=\nR:gcc.h\nZ:Q1wvrNvg/UZIWKwAUopRUUQ4K05dw=\nR:gcov-counter.def\nZ:Q1NKQGYaxT2J0cUFIfygCVKDojI+4=\nR:gcov-io.h\nZ:Q15gY0Z3WApj9TSM7QxUA5qNL0Nw8=\nR:gcse-common.h\nZ:Q14wMUFuCjUqfSOGKQEe4+EGzmpIc=\nR:gcse.h\nZ:Q1M4nF5W98Zhdf1bYaXQHIC3xPExQ=\nR:generic-match.h\nZ:Q18E8jRqeTgr81IMirRRJI1EHHjGA=\nR:gengtype.h\nZ:Q1qTlpBUv0hRknhKUsnlisclPgqiQ=\nR:genrtl.h\nZ:Q1TuOiCzdT5gI/Zt5oDPLNX98twTs=\nR:gensupport.h\nZ:Q1gU1jSdjFIg1eUwLqV17YkrR+aOg=\nR:ggc-internal.h\nZ:Q1GDxH5Hsac6iqEnH9WfWT6mIdjUA=\nR:ggc.h\nZ:Q1alzjibzHGQ5vV1GDhto6NA88YbE=\nR:gimple-array-bounds.h\nZ:Q10RFF33gIZuiGfYChK/IxrnuwZU0=\nR:gimple-builder.h\nZ:Q11RtANRaVFvhfLSbOFR3CRfMwN4U=\nR:gimple-expr.h\nZ:Q1+P0pc3+ytn8cJXSbHW7nWK26yaQ=\nR:gimple-fold.h\nZ:Q1ofsikH+CHnvAolztxag9LtZ/7TQ=\nR:gimple-iterator.h\nZ:Q1L/UEmngP6YbYksuul3wsU1QAMVA=\nR:gimple-low.h\nZ:Q19/Bf+3NWNXDIRCJon4LqlpNFCnI=\nR:gimple-match.h\nZ:Q1fLv7kIK5zcJD4yKHDCVbKtn2C3k=\nR:gimple-predicate-analysis.h\nZ:Q1m9z4y9BjAVY5zS9I0WGvDA23STs=\nR:gimple-predict.h\nZ:Q19v5j49Ohq9/0LhqaFF9ceHEL3a0=\nR:gimple-pretty-print.h\nZ:Q1er5eTHu28TRU5Rf/TWEgu5T9VPA=\nR:gimple-range-cache.h\nZ:Q1RZMTWZHhhst9NCqxjqPSbJe4jEI=\nR:gimple-range-edge.h\nZ:Q1UgGjqAivsxHZWawcfYJwxfPk0X0=\nR:gimple-range-fold.h\nZ:Q1xuUlC1ZF1gBRHMyQUYSwDgg3RLE=\nR:gimple-range-gori.h\nZ:Q1rhmRgEViIGOEvO0mizH/HrgV3hU=\nR:gimple-range-path.h\nZ:Q1kUK/UUFoTHz0v2zWhERFOqxj46Y=\nR:gimple-range-trace.h\nZ:Q1xPCVBfgU9nWO++MmrJwEijkl1wU=\nR:gimple-range.h\nZ:Q1n1cPBHasltp07UA3UBWzApLOHrs=\nR:gimple-ssa-evrp-analyze.h\nZ:Q1yOA1QnVZjzaxdGc3e4GQREDf/LM=\nR:gimple-ssa-warn-access.h\nZ:Q1oZPMiT74OEYb2djT1C+PYtx6QgE=\nR:gimple-ssa-warn-restrict.h\nZ:Q1krgKSf5antVFuBc4i66KbVu0AfQ=\nR:gimple-ssa.h\nZ:Q1DVgwkrtmlXJE3NZ2kJL+66NEQgc=\nR:gimple-streamer.h\nZ:Q1i3L+K3tolkRBHkT/7yfIBmZc1O4=\nR:gimple-walk.h\nZ:Q1ps35LwYh4LBBS7aaseDACrI69+A=\nR:gimple.def\nZ:Q13ewkaPFmodP4iay6ucBD7Uegmk4=\nR:gimple.h\nZ:Q1v4nSQ4xAMgA8V/eW33K6RfyLMDg=\nR:gimplify-me.h\nZ:Q1U/zPw+3pnKP6kL9a7PYZnNF9nfs=\nR:gimplify.h\nZ:Q1jfb5akGZLNnmEVjVOVr/u2Ptwbs=\nR:glimits.h\nZ:Q1de6yhOyGrilLJvD6/Ss+HQHbQZw=\nR:gomp-constants.h\nZ:Q1ms1H+sMyn4dRsgJkZNnGiYm3UWE=\nR:graph.h\nZ:Q1e1d4pyelHzV++yQgJ3C3d4T1Wys=\nR:graphds.h\nZ:Q1V8T76QOs7iR7h98Aibs6a+RXz6Y=\nR:graphite.h\nZ:Q1Z97lqw5cm6afYn8atg+imgKmVeM=\nR:graphviz.h\nZ:Q1ix3YH/earZjkURwjfEOMPgWjnOY=\nR:gsstruct.def\nZ:Q1dDWa9fAnRBuz/sSTQfhQlYQIejA=\nR:gstab.h\nZ:Q1cF6x3v/WSmH69bEgTXktKzv3OX8=\nR:gsyms.h\nZ:Q19+ciVsIrmg2mAF4GAYqA74lAiqM=\nR:gsyslimits.h\nZ:Q1I4yKG57DCd5brCErrwplWlbaOig=\nR:gtm-builtins.def\nZ:Q1EvLTFJlnOBLQ+tot5Y296S0hVvI=\nR:gtype-desc.h\nZ:Q1/b6S7anSpu9hbEo/keDdbXL9syk=\nR:hard-reg-set.h\nZ:Q1B0CP4OK2f5BFJomOgK5MadLEG48=\nR:hash-map-traits.h\nZ:Q12+ZFVt3fl66sS2oNM4KHKQhsMEo=\nR:hash-map.h\nZ:Q145fyJ12hjeRvMDY8+PCrHLUr/bU=\nR:hash-set.h\nZ:Q1VsQXYMZ8xn0Ns+j7S+AXGDcdqTo=\nR:hash-table.h\nZ:Q1qks+lis3TS5vxonQVRpmA7xa3Ig=\nR:hash-traits.h\nZ:Q1UHrh3rUyt9DUZLkalGYwGKrQMtg=\nR:hashtab.h\nZ:Q1saj34tXO9OnbIxRe0ZK8nJ4Hl7o=\nR:highlev-plugin-common.h\nZ:Q1xlp/8e1umglCcCVxbwV8VOlNRMo=\nR:hooks.h\nZ:Q1KDlHIIuBZxT2l53sod0VoxZw3/M=\nR:hosthooks-def.h\nZ:Q1T6FiDwnOaE/7t0vvxjQmo6Je7Qk=\nR:hosthooks.h\nZ:Q1qhAjhEd5KVUEidQzx4Eh1g3Ulq4=\nR:hw-doloop.h\nZ:Q1XyH/p2auAh2502PcGnhQ1P4N/jQ=\nR:hwint.h\nZ:Q1UbrD5+OgxNFkTogt1drY6nt8cV4=\nR:ifcvt.h\nZ:Q1MotCjz6JahHRNau3cMpjJS2oQm8=\nR:inchash.h\nZ:Q1/lfDI06GYj6GOfD+rD06MakjEFI=\nR:incpath.h\nZ:Q1ZNeyESpGZ61s+4VGPfpW2v+qsp0=\nR:input.h\nZ:Q1o//5fT0HY1cMQFdXB9Q2433B8PY=\nR:insn-addr.h\nZ:Q16qEWelJxwyzPI5Q3a8NE+Fql8hk=\nR:insn-attr-common.h\nZ:Q1CxFpEJ/nQH8TyMXeTMxvf1HA1C4=\nR:insn-attr.h\nZ:Q11Ctl+SjsR9uW6npa7B7H0L2tG3w=\nR:insn-codes.h\nZ:Q1vts5o4T56xT++prj12Lpbt4cZQ0=\nR:insn-config.h\nZ:Q1/2zT9whiHuSaHEDOi3SKWNpJj+c=\nR:insn-constants.h\nZ:Q1JpmnAQMqzBS0N85OtDSbKgg0IyI=\nR:insn-flags.h\nZ:Q1kgH8UHJtPo7gXK0xutbHwNnn4i0=\nR:insn-modes-inline.h\nZ:Q11srrz5tCWhG0FzvaXakMEVsN5fA=\nR:insn-modes.h\nZ:Q1bICU9Io3Jm6MIhNuybTOtbvcF2o=\nR:insn-notes.def\nZ:Q1HtYkEMEEfv3SWIjmqEULv8vKRFg=\nR:int-vector-builder.h\nZ:Q1fbJ1OFYpaPJFFOvedvnQWha4AaQ=\nR:internal-fn.def\nZ:Q1sr5MTpeANhpeQaxulS0F+gEob1I=\nR:internal-fn.h\nZ:Q1vV04vREP/dqe03pJVO8ssv86BbM=\nR:intl.h\nZ:Q1YurMLdCXV7ZA5L6Rwn7KVWhfkIY=\nR:ipa-fnsummary.h\nZ:Q1SivwSJEQT8bhY8N7SUJ6mwGkUH4=\nR:ipa-icf-gimple.h\nZ:Q1/JUntuFTa7kqPvclGtVzOvJs0RA=\nR:ipa-icf.h\nZ:Q1c27QyYKSvsJIAqbmxggzUsk2EcI=\nR:ipa-inline.h\nZ:Q10cyqYvg0+Mmw9PaIQmOmxJFlT9k=\nR:ipa-modref-tree.h\nZ:Q1XYr66qOes7drXJlYE+21LZt1PA4=\nR:ipa-modref.h\nZ:Q14K0ek6lmniMyAM3dde0turWkBOk=\nR:ipa-param-manipulation.h\nZ:Q1VTSXMx6w3goR1d5iMc+pcqrUgKE=\nR:ipa-predicate.h\nZ:Q1WTDG0duTr2Io96s5U3oAKRvKs9g=\nR:ipa-prop.h\nZ:Q1W39aSBnxldYfzNFBn+lAD0XJNaA=\nR:ipa-ref.h\nZ:Q1CCB3Ta+p2tDpGQckzvIXEVpRDXo=\nR:ipa-reference.h\nZ:Q1EKIOrPI0NDcf6xt8vriYd4u7Dp4=\nR:ipa-utils.h\nZ:Q1yi7Rjd9vOSYoNc/htLwYrFYlJZM=\nR:ira-int.h\nZ:Q11jKjWHfxIMsSmvxVx14FY4M9tZ8=\nR:ira.h\nZ:Q1XM0NeTgxbGSToyeYkFVoaoN6FDU=\nR:is-a.h\nZ:Q1ZMjGSBXZ5+Ggk4Ha7P2HUiEW6oY=\nR:iterator-utils.h\nZ:Q16DJJjEcNFk9TUxsid0ZHpDcIjaM=\nR:json.h\nZ:Q1HJA5JUlX4ERxgJjeDG/jClH8aEo=\nR:langhooks-def.h\nZ:Q1vkTeqVLx8byC25pNldVqVUHpwoI=\nR:langhooks.h\nZ:Q1VJ+17F2mvXQ1uBK9F5EmHZZcjQg=\nR:lcm.h\nZ:Q1KGEU3up23caJyz70JDbqQKcBZ2U=\nR:libfuncs.h\nZ:Q1KU+wPW87sMy2HhFMC7v6oJ4phic=\nR:libiberty.h\nZ:Q1XsDtqaBnHJKIo90/9mLK/3PfgzU=\nR:limitx.h\nZ:Q1ZuuTnTmAoUMDq44ubsEtIS/2arE=\nR:limity.h\nZ:Q1ODb2+f+DLnGaV4tX3YvjJk7yJrk=\nR:line-map.h\nZ:Q1maGK5BD00xE5Ki13Qybvn2UrCqs=\nR:loop-unroll.h\nZ:Q10c/7Gi+rWANkbngq5vlNsVGBSok=\nR:lower-subreg.h\nZ:Q1jEIBSzkwXOIHBHZx9L7G2pGc+x8=\nR:lra-int.h\nZ:Q1lvXwrGKa8BOcIe18wLOKzd2NPp0=\nR:lra.h\nZ:Q17Kz6UiR6ABj1BS4kcJ5P5NJYGvk=\nR:lto-compress.h\nZ:Q1qaTcZaFicnSxh6man8TCg4S/Tbo=\nR:lto-section-names.h\nZ:Q1hUvqfCoJdvRc/QWk5ZHKFRfv2Ec=\nR:lto-streamer.h\nZ:Q112bi+bLib5h9gf0OH01TAzTIQvk=\nR:machmode.def\nZ:Q19I0+OZhsadbMELXZXnEICcLNx2Y=\nR:machmode.h\nZ:Q17jFtzg9IlXgg3wj8/ipUghJAtks=\nR:md5.h\nZ:Q1NObW1SpPV2Wp/84ravAgBqxo9o4=\nR:mem-stats-traits.h\nZ:Q1vpAK4D0+L92HzFE6sa37nt63cC8=\nR:mem-stats.h\nZ:Q1pF7EjcG2ZMISmVIG5XTGwLTwZfg=\nR:memmodel.h\nZ:Q1OT8Jw8dJlbpNwQ2uwK1JnuB+k34=\nR:memory-block.h\nZ:Q1gmTmAe2Gn8K7+fY+eKOfmDWbvjI=\nR:mode-classes.def\nZ:Q1Tjw4fDJFqEKQ8AFrlb8i+Qdv744=\nR:mux-utils.h\nZ:Q1GK+2vYDWe4KPpfpzU5gYivmcFgc=\nR:obstack-utils.h\nZ:Q1oVHro2v+2Qu2ivYkooN9PdmXG3M=\nR:obstack.h\nZ:Q1qL7Sj7I/+ZBOkP6d3A3Qkmg2USI=\nR:omp-builtins.def\nZ:Q1RRyWzfWMISBQ1hekTrEgRVBEab0=\nR:omp-expand.h\nZ:Q1/gHaKJok7t+DKKI+rlyqVe18BCo=\nR:omp-general.h\nZ:Q1otyF3DNQgDDg7df4987gLfD7Q+I=\nR:omp-low.h\nZ:Q1sysjed8uW7fXTUV2PwZhJG0OOLU=\nR:omp-offload.h\nZ:Q1wJAoYgLGv2YG+M3jnh/z5w8MVTg=\nR:omp-simd-clone.h\nZ:Q1CrxT6T5axoQ4/awLeNMCaClJ32I=\nR:opt-problem.h\nZ:Q11eV5pL4Pw3h2iPvCc/CGOyvAjQk=\nR:opt-suggestions.h\nZ:Q1qLmw0zp+WV8iNKL6xo9N0Z/jANU=\nR:optabs-libfuncs.h\nZ:Q1WKFtZsQlIrJitqS4k7/D3W0+p7I=\nR:optabs-query.h\nZ:Q1OFiHztAERHVULik21zL3Qa6So2g=\nR:optabs-tree.h\nZ:Q1FFqHXKb88RMhwZw5a6vRwlJVzAs=\nR:optabs.def\nZ:Q11TIUXChkqXXBTyflLUBOsqwvwZs=\nR:optabs.h\nZ:Q1ISXQMiZa6lNCNGPfGUonbOSDnL8=\nR:optinfo-emit-json.h\nZ:Q17QQoxsJx3SGfUjSih+DL8oX4Czc=\nR:optinfo.h\nZ:Q1TE6T/DzJq2YwaIbYyR0OM3M1Bh4=\nR:options.h\nZ:Q17u09V223RqNqnxS3rOH5ZoggMBI=\nR:opts-diagnostic.h\nZ:Q1JPsmdlUX/WzkLSzuKW1/BFLITOE=\nR:opts.h\nZ:Q1FfeC/x8W5hjVsxWisxbvw3A7q4Q=\nR:ordered-hash-map.h\nZ:Q1lqjvuX3oHSAJy3J3kCKo4fcRQ3Q=\nR:output.h\nZ:Q1qPZf+AjW7HEWyeNMYost0C6JRlY=\nR:pass-instances.def\nZ:Q1+e1c348oVnWyb6wTsDvqDiSNqVw=\nR:pass_manager.h\nZ:Q1bW7Ilue8LdAsaE6vUIlrJo6GOTc=\nR:passes.def\nZ:Q18HRN51dEZ1PrvB04WjQXhzBJE34=\nR:plugin-api.h\nZ:Q1ZMlH2EfPz9H5EUH5nrBn1hHNtOU=\nR:plugin-version.h\nZ:Q1XppO+FzvWiosGp4VIn3K3xxNZ2g=\nR:plugin.def\nZ:Q1eE9EKDC7J1Th+95vIo5o+fLqFU4=\nR:plugin.h\nZ:Q1aRmLprRSNmown5+Ma/KtjFGCaqs=\nR:pointer-query.h\nZ:Q1qftopGxha/stbRkwc/v1rQZndFM=\nR:poly-int-types.h\nZ:Q1fGr6YVm0mnLw7409vh9D+Tv9wGo=\nR:poly-int.h\nZ:Q1nXVNa8pwxmhUqdXbGkt8aOOHW/Q=\nR:predict.def\nZ:Q1f2oScGLIGmz1OM0YGES6M4gV0oA=\nR:predict.h\nZ:Q1GuGkd8b8PYE5jvDUofZ4Caq2dxc=\nR:prefix.h\nZ:Q1hpNM+qk1y27Ex9M1C9/rxTqjovE=\nR:pretty-print.h\nZ:Q1Ks7We8jTLYatRsFxo7//355xPPg=\nR:print-rtl.h\nZ:Q1qaWrwNBBYrGRSxooq4uggX8Qkq4=\nR:print-tree.h\nZ:Q1QHIj0507Bpx6nVaI92supjo3A80=\nR:profile-count.h\nZ:Q1lDQBdeKNuRt9lZJNM3gK5K5mpac=\nR:profile.h\nZ:Q14wglfv3Yfp2ev9SxwrLry6qgDPU=\nR:range-op.h\nZ:Q1MmQlwhcKNGjac8tJa+gSC1d+BZ4=\nR:range.h\nZ:Q1dlN0j4Zf3F39qovV7MRVa+Fp5Kk=\nR:read-md.h\nZ:Q1Us/x3iAAVn3rB2QLGH88DL0D2nE=\nR:read-rtl-function.h\nZ:Q1kGE2RiItkJv5AjBNhEi6mBFmZPw=\nR:real.h\nZ:Q13W7MY5atN5Ess5SU2bX/oAvSEBQ=\nR:realmpfr.h\nZ:Q1uDbeXuZS/54maETyiS/Gi65INEE=\nR:recog.h\nZ:Q1bxpBzVMi1EUuUJqQfCNRA3Y+vCE=\nR:reg-notes.def\nZ:Q16CvLHMwIIAv5rdfDee+E5VWN/cI=\nR:regcprop.h\nZ:Q19XuI0JRc5XOGUNHcCoe3VPNMwkA=\nR:regrename.h\nZ:Q1zWznN4uBWF175Z2rBDTYvUk8JQU=\nR:regs.h\nZ:Q16XHinEw1ktbrSLZIwXimkZHUp+E=\nR:regset.h\nZ:Q1gaet6RmGF6TPamJWkCLtvQcVOeU=\nR:reload.h\nZ:Q17Vq/ZBq76ZPpOz88j6GA8WiIfEE=\nR:resource.h\nZ:Q1fihbbR2uGcpjovkZOLWvD1QJmks=\nR:rtl-error.h\nZ:Q1vff5i7oNj5GRoy5qwgEanrP+9yg=\nR:rtl-iter.h\nZ:Q1i0kVH4b2nAdj+e9cbez5HjzSrYo=\nR:rtl-ssa.h\nZ:Q11tCCCsA9Wn5pGb0oKdjaSblwgf4=\nR:rtl.def\nZ:Q1on5AVY7o9eenbgiLtjDQgRrHbyU=\nR:rtl.h\nZ:Q1oXuG9KxjBU+PQPROoo4yjiZE/5o=\nR:rtlanal.h\nZ:Q1UjAEwmjJdWSGwljbb0lXpPZG5iU=\nR:rtlhash.h\nZ:Q18xUbrQgzenJoBXpY8T1+BhGnwO4=\nR:rtlhooks-def.h\nZ:Q1J10qn5w/cyWp7x0uozw+RYls+WY=\nR:rtx-vector-builder.h\nZ:Q1MaxdM5UoKF7SlHkShU8eKan1JAI=\nR:run-rtl-passes.h\nZ:Q15QAoUQYV3hIhnJNF0gXOBGz1C2o=\nR:safe-ctype.h\nZ:Q1CmA2y8UwP6cCYGw7GPA8E0C38JA=\nR:sanitizer.def\nZ:Q1JeIF076E2MA6iZ1MTnHx+r2FHlY=\nR:sbitmap.h\nZ:Q1kqYG4OJ21p53y0WGbl75xF1AiKg=\nR:sched-int.h\nZ:Q1RSR3vqaS0PzET7+1gq6WWdMP3Lc=\nR:sel-sched-dump.h\nZ:Q1XdocwieGO8UpbmH6f1WVOkwM1uY=\nR:sel-sched-ir.h\nZ:Q1KjAJzYHXgVYmlQVukNrw4blR61U=\nR:sel-sched.h\nZ:Q1qLr+seuTRowM7EwPs3LtWmCNv9Q=\nR:selftest-diagnostic.h\nZ:Q1N8pXF/jBX3riaAjLr3s4c8IM0ls=\nR:selftest-rtl.h\nZ:Q1ftF7AYzvXOHGFgZB68pyeok5t3g=\nR:selftest.h\nZ:Q1F6I2bhu2mjISYKCuv2gXdd27GY4=\nR:sese.h\nZ:Q1mbbwL4IR2TufLoE4IZbfMU3pVgo=\nR:shortest-paths.h\nZ:Q1BJeYUhvc7ZF5+at/ExzUCL+wQHo=\nR:shrink-wrap.h\nZ:Q1hheNN/XwIr19qB2HwzE1xxEPlqM=\nR:signop.h\nZ:Q1gop6+juCUoghLJCziQdyahzJ+iI=\nR:sparseset.h\nZ:Q1+iJK2KoCfcF6j9LhX/kafJkvD7M=\nR:spellcheck-tree.h\nZ:Q1Ei/EbqkzpwnWhnHFsF6cNy/wMAI=\nR:spellcheck.h\nZ:Q1NlfPMFHzvyslK6lNFFR29Th2x/o=\nR:splay-tree-utils.h\nZ:Q1hrgyD16D/7g+oqnmWxdsUi81X7U=\nR:splay-tree.h\nZ:Q1+X2NqcqcWjEuRWjpKh7R/dHB23U=\nR:sreal.h\nZ:Q1Z9AYmmZcdzBccJfLd12+MVIlHQQ=\nR:ssa-iterators.h\nZ:Q1TLIy2hSrcJtVKRIKJcLjYRQkRG4=\nR:ssa.h\nZ:Q1NGCESAqW4bYfWjJz89ohxWchG+4=\nR:stab.def\nZ:Q1/fAtFjjtpAWbHWogPRmns0fuOIE=\nR:statistics.h\nZ:Q14oxHE6WBG/lMhGwkLTRVSvVnp3o=\nR:stmt.h\nZ:Q1u3FGkcG2L/gZBMqHboNLZaBpbz0=\nR:stor-layout.h\nZ:Q1o3ypyrBYCFXRDVsqfou4mEL4BZA=\nR:streamer-hooks.h\nZ:Q12qWvBF+wDukT6IbojRdnenOIPtQ=\nR:stringpool.h\nZ:Q16tACLUnjrJ4UdhKtTqELxCPQEmU=\nR:substring-locations.h\nZ:Q1Hm0WQOcwKMOeYpNDoYaQzy0PONo=\nR:symbol-summary.h\nZ:Q1G1HI8/BgyORu/5ZxmLNZ7AURVzw=\nR:symtab-clones.h\nZ:Q1hHhtJjnKsJBIBPeZbXOr7+lRwls=\nR:symtab-thunks.h\nZ:Q1Xxby2N4ReeMjdVIHJUaD1f0h+uQ=\nR:symtab.h\nZ:Q1LjcNuylJn3Zd6bkAX7Ilj4h5Vd0=\nR:sync-builtins.def\nZ:Q18eba9BcgwG0jQiAGCcGY/k8BAbA=\nR:system.h\nZ:Q1haExkODUnifoyEPlbMAs31V3TY0=\nR:target-def.h\nZ:Q1I+6d17ILMV6OKBwqbovlCrdwEUQ=\nR:target-globals.h\nZ:Q1uY2bM/SCacvt81zHW03DqMzlyjQ=\nR:target-hooks-macros.h\nZ:Q1wUmqE8BQBRFADo6l6WvGpcxBDYI=\nR:target-insns.def\nZ:Q12AXFx7GQLk48dB3YvThRTW7e2ZY=\nR:target.def\nZ:Q1X/R12XT7+KePesAvyGrhM7ZxZr8=\nR:target.h\nZ:Q1IGrh5HAlv43sXbFN5ZMOK1EKhOY=\nR:targhooks.h\nZ:Q1L8I2q8aETmJrNTrC+hTVhAQXWdM=\nR:timevar.def\nZ:Q1jJ5bK6Q9UhbGkWib2/jzvc+CKq4=\nR:timevar.h\nZ:Q1RKeDW5zHpiWApxxHoFT8OGyrl70=\nR:tm-preds.h\nZ:Q1CNXWRY7tOOB2ZIKlldu3iVmzgK0=\nR:tm.h\nZ:Q1cs02bWd9qDsBKv8v6lPz1h7TW+w=\nR:tm_p.h\nZ:Q1QGECxPUYU8XgoyLhMV1ogPT3MWU=\nR:toplev.h\nZ:Q1GT4XByQYOHyFYdAJKp3bVVX4lP0=\nR:tracer.h\nZ:Q1wQLg0JffJWvN2yTMisMEFv9zTpw=\nR:trans-mem.h\nZ:Q1nB0QKre+TYmbkhz/kMF2DJ8cFy8=\nR:tree-affine.h\nZ:Q1Dl6oarkCokH/i/WjgHBRa5ZT2I0=\nR:tree-cfg.h\nZ:Q1GrVH1kGQh0J8nfH1316qC9BtsMc=\nR:tree-cfgcleanup.h\nZ:Q1bNZFIUdWmdkaMTRLez6X0l+Od6s=\nR:tree-check.h\nZ:Q1UaOjJvsd/zdjrQW3dUuXVM9N4Cw=\nR:tree-chrec.h\nZ:Q1rtkOFsyWzFR+29xXeViPQruQIVk=\nR:tree-core.h\nZ:Q1gGF1jvhT3Q8/yh/tsuDtYMEeFfA=\nR:tree-data-ref.h\nZ:Q1eJIwp3I5HwtBq754oMw1724zoHA=\nR:tree-dfa.h\nZ:Q1t3vq4jEgg/9ZKZBr/OvgvopJUu0=\nR:tree-diagnostic.h\nZ:Q1pHBWGvIp2/pEAwAazCuQI61KFoo=\nR:tree-dump.h\nZ:Q10vmIkGxWpaMc08EfvEUhQnbWFlQ=\nR:tree-eh.h\nZ:Q1X/PfWr14IWkp5PscNbCwwPLLk7k=\nR:tree-hash-traits.h\nZ:Q1bjFyrRgbhOZPSi9I4aaIICVQLRo=\nR:tree-hasher.h\nZ:Q185dVVQtsvayKC+9Uq1o537cxRxI=\nR:tree-if-conv.h\nZ:Q1ANjFzi3Ba+dWV/MgCs6pnjnsOvc=\nR:tree-inline.h\nZ:Q1HK2QmjQxSFoZDfzGJm15lk3Uono=\nR:tree-into-ssa.h\nZ:Q1uDy9Sj7BlsIUYzFGW7sFn9XO7QE=\nR:tree-iterator.h\nZ:Q1lBhOl1w4T21FTtO831lw7iaZHiI=\nR:tree-nested.h\nZ:Q1AdcZrI8TXwK/jPUObq7XQ1oeAS8=\nR:tree-object-size.h\nZ:Q1kk29AH1/4FXdKLjLs/K6yI4rZnA=\nR:tree-outof-ssa.h\nZ:Q13NWZI0RNK8v1xhkiyk31+05MKZA=\nR:tree-parloops.h\nZ:Q1ae5YkdRlVc+9rCrOOvivqoZqg1U=\nR:tree-pass.h\nZ:Q1uWNlrl7CZlPWhOwla+UskslVKyM=\nR:tree-phinodes.h\nZ:Q1Q99tjO+1GEX63/2e3ZyAqWHLxhY=\nR:tree-pretty-print.h\nZ:Q1qfSI98ImAzk4OAg479Z9SujqHlc=\nR:tree-scalar-evolution.h\nZ:Q1Rqz+VdSHSKl577ZzOR9cI76h5LQ=\nR:tree-sra.h\nZ:Q1GgglXRItETWsbuFLctU9rwgk2Mg=\nR:tree-ssa-address.h\nZ:Q1b4qXN3tTbfNU23UIDTEYPp5b6bs=\nR:tree-ssa-alias-compare.h\nZ:Q1CQU92Wkkl948Vi3+Agou3xj/3yw=\nR:tree-ssa-alias.h\nZ:Q1GV7uQGiTzhDIX3uyeS08t+x4rJU=\nR:tree-ssa-ccp.h\nZ:Q1JpBYbnECeCvH7QvOptoH+Hl4f8g=\nR:tree-ssa-coalesce.h\nZ:Q15vTny4JRUmdY3OGP+nQ3d9tCsfo=\nR:tree-ssa-dce.h\nZ:Q1/aBmG/BCSZZmzoYknENkJmyzQsg=\nR:tree-ssa-dom.h\nZ:Q1wPBPBZEjvkkD/Z5pL5IOHIXsfXc=\nR:tree-ssa-dse.h\nZ:Q1w5JpBlN21wNzCaJ0fjjMsW6jBE8=\nR:tree-ssa-live.h\nZ:Q1iUvC+sTWAY0vvcndWO95fIKRvS8=\nR:tree-ssa-loop-ivopts.h\nZ:Q1BZnuy+bvBWOjheQLtoDFFU6SUII=\nR:tree-ssa-loop-manip.h\nZ:Q1w4VOp8OKa0ZSqcp3q8Sx6NcmF/E=\nR:tree-ssa-loop-niter.h\nZ:Q1LSCQ3+BHATz/tJbEucG3FqIsAGM=\nR:tree-ssa-loop.h\nZ:Q1Mkcc54zK/aAeZRncBYIanKblXIM=\nR:tree-ssa-math-opts.h\nZ:Q1P9B8xG3GuxAhsQx/qeIVnuCwWgY=\nR:tree-ssa-operands.h\nZ:Q1EVXrRMsGTkdHAEO3QinRCgvmWio=\nR:tree-ssa-propagate.h\nZ:Q12qti0D+fS7HUE+STYNJyWG3tiOA=\nR:tree-ssa-reassoc.h\nZ:Q1yVQYX49iWQdDG3Ti/cEnYCgkVEc=\nR:tree-ssa-sccvn.h\nZ:Q1pyBXp7AJKXj50MMuz4y19phqv/k=\nR:tree-ssa-scopedtables.h\nZ:Q1JP+hD1HaVM7RlWAgqzDj+Fxw/4U=\nR:tree-ssa-strlen.h\nZ:Q1JPjvyn5ZGycQ54j9zqqAGWCLS9M=\nR:tree-ssa-ter.h\nZ:Q1PJ80nbMIE1erJKWK9DIV4KV6bdo=\nR:tree-ssa-threadedge.h\nZ:Q17YVzTLT2eaZAN9o+kXQTVIr2KIM=\nR:tree-ssa-threadupdate.h\nZ:Q1wXkHvyhYIh894gsFVk0J7pBqT90=\nR:tree-ssa.h\nZ:Q1gUC9iOvNRMeKFBwOgPiZqx5qADc=\nR:tree-ssanames.h\nZ:Q1xaAQieh3iXu+Rn7lZhCsTRE4BBU=\nR:tree-stdarg.h\nZ:Q1IiwPrFZqvCUfH6Ltc6wtRWhTJUM=\nR:tree-streamer.h\nZ:Q1afnw7nBsWgYlBx7XXKufzQl5epM=\nR:tree-switch-conversion.h\nZ:Q1wMi5I1b/hTXPYjHhr9Ts2xpT4FY=\nR:tree-vector-builder.h\nZ:Q17xsOXNma1xmDHe06yeg5V1gSpo4=\nR:tree-vectorizer.h\nZ:Q1Ko7MebVw8iMvDBdX2yH5HNkLGHk=\nR:tree-vrp.h\nZ:Q1sVOPTeJE+wzRs+RbjrHIoC/bpYI=\nR:tree.def\nZ:Q1vztIcPaFsMghq0E6UdJBY+U9MqU=\nR:tree.h\nZ:Q1yLt+O2Yos9dsMeua+AZF0qhCz9s=\nR:treestruct.def\nZ:Q1naNoP/+7JDxet0R3867Xaq7DwpI=\nR:tristate.h\nZ:Q1GytyrxkKKPU/S/aTmksuGkw/kCo=\nR:tsan.h\nZ:Q1zkMAtdnbPUUdhpYyFuwLFLX1qv8=\nR:tsystem.h\nZ:Q1ASYXSzxvfLFERmda2gQVgC0tOj8=\nR:typeclass.h\nZ:Q1t9oCO04UPgn02zHDXYGS+mam1JU=\nR:typed-splay-tree.h\nZ:Q1Rmo5jXLNx0P/YerdQh33v1INisA=\nR:ubsan.h\nZ:Q1yaPC5FaKF0vRoIrvX4ESK+27osk=\nR:valtrack.h\nZ:Q1Ih6kTwTe3MHlkUmSdTMnkOr85j0=\nR:value-pointer-equiv.h\nZ:Q1BwYuisrQ7A2kJTLlc+sDdgc+p9U=\nR:value-prof.h\nZ:Q15DBA8cYYBmFjzXJvaD6w4ZvQ0jw=\nR:value-query.h\nZ:Q1H3mbGFivGKwoROSgDEQGAPkJ2Y8=\nR:value-range-equiv.h\nZ:Q1EEpBnjSDIADVmNgBF17qncK0Ty8=\nR:value-range.h\nZ:Q1Sy4v8gUpWx15r9pcG5424JREOAY=\nR:value-relation.h\nZ:Q1z9YVjHmkN+MLjYoOmQgBbHJD03M=\nR:varasm.h\nZ:Q1LOxen/h1gPLenLA74ldl06i3rc0=\nR:vec-perm-indices.h\nZ:Q1vwkJzUeD65X0adn7hS6+t6KxA8A=\nR:vec.h\nZ:Q1+xCOkUZ0+GGTiD3C7lGsojKmAL4=\nR:vector-builder.h\nZ:Q1Bd8MajzIPOwcmWE7+sT2CD43vuU=\nR:version.h\nZ:Q1xYvSXBLtRaIIZbdcmS87CBohBmw=\nR:vmsdbg.h\nZ:Q1rOICRN2enFULDrIPXw/iwwqVdU4=\nR:vr-values.h\nZ:Q1xr7Tt8LjUhfmhlXANSf3M58nE3g=\nR:vtable-verify.h\nZ:Q1nvtIEW9XfH0kQgnwY8jbxTLHkTY=\nR:wide-int-bitmask.h\nZ:Q1p276hS1DAbO+qqmwEQGKXAbcTG4=\nR:wide-int-print.h\nZ:Q1Jsdq6b26L1PBCCh4d1oQWkP0zWw=\nR:wide-int.h\nZ:Q1AME7rF2clJ9FHN4LJGe5qmm9IAU=\nR:xcoff.h\nZ:Q1JovJUh45g0UADIQwEKaHL05wnqQ=\nR:xcoffout.h\nZ:Q153DEb/5NP2uJbjZKVbCGiqzYZ/s=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/ada\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/ada/gcc-interface\nR:ada-tree.def\nZ:Q1m81nhhgDNCMRO53nWlzbinhB3ug=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/c-family\nR:c-common.def\nZ:Q10HC85S7m/N+cCAGJ/H9Q9U2Cy3s=\nR:c-common.h\nZ:Q133fWRayRBNzveJyymSNnh3alpSU=\nR:c-objc.h\nZ:Q1gcxqypHuFVedQmdcT8DIzxHNL90=\nR:c-pragma.h\nZ:Q1HGCH6idGDObL7DVO97XAFm/TPaM=\nR:c-pretty-print.h\nZ:Q1wSHZlfCm2069Ry4j5WkeUIANHD8=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/common\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/common/config\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/common/config/i386\nR:i386-cpuinfo.h\nZ:Q1F0/zNF27M2DXVNSVnX3NQGUS6LU=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/config\nR:dbxelf.h\nZ:Q1dc8M8YgUlt37tEsRriG5+skAbIw=\nR:elfos.h\nZ:Q1MlE4N+X6DH8CCKeARRAhvj21ALA=\nR:glibc-stdint.h\nZ:Q1zFyLFMWSx9AH00jYItM5ANQ+Abg=\nR:gnu-user.h\nZ:Q1eU04QlvKMQ1Xk+zsjz+hxcIHQh8=\nR:initfini-array.h\nZ:Q1HAKsWWODd/tqT+6Ictvx4o23J6M=\nR:linux-android.h\nZ:Q15QSEv9pRbhMkMNTv1yZv/D5tfCw=\nR:linux-protos.h\nZ:Q10z9+oqvxMvpLetJJ1KZkwu0lkQI=\nR:linux.h\nZ:Q14mOJ/V96GwwvmdpgkqDW9sI3C5M=\nR:vxworks-dummy.h\nZ:Q11GqnKTBN1YqgrpjFS3PzF2xi5t0=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/config/i386\nR:att.h\nZ:Q1yw2sNtUJQ1Fm3lO9IvTI7uZTda8=\nR:biarch64.h\nZ:Q1u6P5LsJnCn0B5gvaXaTtEo6NhMQ=\nR:gnu-user-common.h\nZ:Q1n+rNsF/yPsXKHiUr8j1ygVlzmsY=\nR:gnu-user64.h\nZ:Q1ezmNcrGXAOy6tJCIVG6C5U0C/yc=\nR:i386-isa.def\nZ:Q1yYm/o8lDteM/EHf5D29Lvuheeb0=\nR:i386-opts.h\nZ:Q1+F5XuDK0oarDJRUK2/F/jKd4/yA=\nR:i386-protos.h\nZ:Q1Tae0pFrsUfQnpuJBXKrfKr/foZE=\nR:i386.h\nZ:Q14mxdElV4aYPi/gZYr0GXWacmXBE=\nR:linux-common.h\nZ:Q11QpW6d4QMdOFHEgmJa1oJ/2gCZE=\nR:linux64.h\nZ:Q1cDMX0Z9wxIF5YpnLONyKARaCPpc=\nR:stringop.def\nZ:Q1p8uAA2hCYD50RHm3ynksVHmrvgk=\nR:unix.h\nZ:Q1OzwYqvggQstO5J9uBEYrYkSCsTo=\nR:x86-64.h\nZ:Q1KXsLek+W5/sCrv1N5j6xGUQQ4vU=\nR:x86-tune.def\nZ:Q1gYxt0xbDjFCPWwKKEvVSu5OQNsQ=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/cp\nR:cp-tree.def\nZ:Q1wx2h8HU37i0qqjyuoxCIRv3BpW4=\nR:cp-tree.h\nZ:Q1dB5FYBTk2JTAk6tM+E358CsLaSo=\nR:cxx-pretty-print.h\nZ:Q1tJ5qWDyW5l4HvXbwe/xNzUHB67Y=\nR:name-lookup.h\nZ:Q1nwM8oNLnww/b6opodc1cgGbgyrM=\nR:operators.def\nZ:Q11+6SPPUj0nmZLdgn+MKWyI23gyA=\nR:type-utils.h\nZ:Q1v/74A6YSFt7q4iJkUIK7XEpNm4A=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/d\nR:d-tree.def\nZ:Q1aMdqoj2nFVQNt8FUmm7e7m4ffWA=\nF:usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/plugin/include/objc\nR:objc-tree.def\nZ:Q1aX+6XZVVm6BjOMT/9Hxb0KLJOQk=\nF:usr/lib64\nR:libasan.a\nZ:Q1mhyjmimimET2fSAgphOdixkTtms=\nR:libasan.la\na:0:0:755\nZ:Q1MaCNgJCmdjT9/YCiTwAGfdV/IL8=\nR:libasan.so\na:0:0:777\nZ:Q1S27bcfM2g8fjyaT1nG7+w7vxAJo=\nR:libasan.so.8\na:0:0:777\nZ:Q1S27bcfM2g8fjyaT1nG7+w7vxAJo=\nR:libasan.so.8.0.0\na:0:0:755\nZ:Q10zbNec3kvGjGqtdoe27J/YxA5mY=\nR:libasan_preinit.o\nZ:Q17ay1j7vX06f1+S0z/EqTx8NFJ2c=\nR:libatomic.a\nZ:Q15iXF/9bz0bwi2dC2a3cBQgB1kDk=\nR:libatomic.la\na:0:0:755\nZ:Q1S6pGSauRW7ypfYcip7icyH8oBDw=\nR:libatomic.so\na:0:0:777\nZ:Q1EThIBsrguvQ9thViFgg9sXHtM6Y=\nR:libcc1.la\na:0:0:755\nZ:Q1jCI8+cg3BZPycW1tGqJV8P0lHxw=\nR:libcc1.so\na:0:0:777\nZ:Q1AD48+uX+MUQoQOQ5TrUTqTEEI6w=\nR:libcc1.so.0\na:0:0:777\nZ:Q1AD48+uX+MUQoQOQ5TrUTqTEEI6w=\nR:libcc1.so.0.0.0\na:0:0:755\nZ:Q1GOXsOSEMDiaQcQUmf++hi6xjXns=\nR:libgcc_s.so\na:0:0:755\nZ:Q1OX2+dvwkaobegCEl44m+pP7dbbE=\nR:libgomp.a\nZ:Q1V968eEmNShbFvQQfkmBRT/EB9vM=\nR:libgomp.la\na:0:0:755\nZ:Q16kRm6CrumP99s7xbwBx8PK3mDaE=\nR:libgomp.so\na:0:0:777\nZ:Q170K8Ln+DjnoexhNTxy8F8MU2faw=\nR:libgomp.spec\nZ:Q1MwgiO+KEXVfq92D1sdgLSlThnac=\nR:libitm.a\nZ:Q19fdZFTBcJfWSuIpZqdrQvgKzYQA=\nR:libitm.la\na:0:0:755\nZ:Q1NgPO86BBsVqP74rh1cSnEAftXe8=\nR:libitm.so\na:0:0:777\nZ:Q1dL7AawmjrTlQNSmlfwSbtjX4TPE=\nR:libitm.so.1\na:0:0:777\nZ:Q1dL7AawmjrTlQNSmlfwSbtjX4TPE=\nR:libitm.so.1.0.0\na:0:0:755\nZ:Q1RpT4Ce1G59B3IBLFpa8OnpXJG0U=\nR:libitm.spec\nZ:Q1+2isMyBS1KEZe1SufH7GlyekPzQ=\nR:liblsan.a\nZ:Q12UfecBIJ15GBxKsOzxGIAxZUfRg=\nR:liblsan.la\na:0:0:755\nZ:Q1VQ8ysNxRP1hrWT2PRGtXw27d0P4=\nR:liblsan.so\na:0:0:777\nZ:Q1eGSmS46+UPFtrJQ1TW2laO4BQnM=\nR:liblsan.so.0\na:0:0:777\nZ:Q1eGSmS46+UPFtrJQ1TW2laO4BQnM=\nR:liblsan.so.0.0.0\na:0:0:755\nZ:Q1ONOPmDb438oKm1W4NQAi3ZFKqbM=\nR:liblsan_preinit.o\nZ:Q1zvvuGTpcdHTd1KRF3ZfF5A74JKE=\nR:libsanitizer.spec\nZ:Q1eJgFSaEREa3nLBEPql1fQEo5lgM=\nR:libssp.a\nZ:Q1mleU0BL76wQezKemfZ1FcRnf1k8=\nR:libssp.la\na:0:0:755\nZ:Q1lHRm7n7vLeJ2ZUONXLFPt8Rd9ko=\nR:libssp.so\na:0:0:777\nZ:Q1cVZIPdv2lLAckcEVpjuJRYVnRpU=\nR:libssp.so.0\na:0:0:777\nZ:Q1cVZIPdv2lLAckcEVpjuJRYVnRpU=\nR:libssp.so.0.0.0\na:0:0:755\nZ:Q1Derb2WdOnYd0iGTFwApGDgA3cvY=\nR:libssp_nonshared.a\nZ:Q1FkbzJBh918PkBdmyymOpihzjx4Y=\nR:libssp_nonshared.la\na:0:0:755\nZ:Q1qpMiL2gkDSQkRAHAdp3ecOC7A0Y=\nR:libstdc++.la\na:0:0:755\nZ:Q1yqGgJwILXcxACzlJbSmCeDS7fY0=\nR:libstdc++fs.a\nZ:Q1nsKxLaaX4sLEeBfP5hb8CErV9fM=\nR:libstdc++fs.la\na:0:0:755\nZ:Q13KxhMr6CFOJzKUaKe9oD7rfGTTw=\nR:libsupc++.la\na:0:0:755\nZ:Q1Q7uJ7EiX+O8tSU4lwZWNt+cMunY=\nR:libtsan.a\nZ:Q1cGu4n9iyLww5UuDgjRwn7r6VA4E=\nR:libtsan.la\na:0:0:755\nZ:Q1+OrJXGOnLno16Fk3S341pwnYhCY=\nR:libtsan.so\na:0:0:777\nZ:Q1AJjOJCNnOJLmFXwj8yAPYpQ0ZXQ=\nR:libtsan.so.2\na:0:0:777\nZ:Q1AJjOJCNnOJLmFXwj8yAPYpQ0ZXQ=\nR:libtsan.so.2.0.0\na:0:0:755\nZ:Q1C7pUi10fZ9poC8KtzAw1pxUdsAY=\nR:libtsan_preinit.o\nZ:Q1kEReoWJcHTjke5ovzQbvFJgYcjY=\nR:libubsan.a\nZ:Q1yNHtt5JYsCxlWwHYOsufh7nPyHk=\nR:libubsan.la\na:0:0:755\nZ:Q1twoPyUiqqOLVLPcyg2nmYZvr7gQ=\nR:libubsan.so\na:0:0:777\nZ:Q1kUZsfvjuaKZziunW/T0FOqx6j94=\nR:libubsan.so.1\na:0:0:777\nZ:Q1kUZsfvjuaKZziunW/T0FOqx6j94=\nR:libubsan.so.1.0.0\na:0:0:755\nZ:Q1hNp2hMDGWeO/lHs9v2GZGTg+C38=\nF:usr/libexec\nF:usr/libexec/gcc\nF:usr/libexec/gcc/x86_64-pc-linux-gnu\nF:usr/libexec/gcc/x86_64-pc-linux-gnu/12.2.0\nR:cc1\na:0:0:755\nZ:Q1KZQH8QHhfczn/AHxUh+oAw0hzNs=\nR:cc1plus\na:0:0:755\nZ:Q1PlyJIvqBfE07URagJLZ0pknnxKw=\nR:collect2\na:0:0:755\nZ:Q1bqpfbwQsBdownLVrlCmUrKm+lwg=\nR:g++-mapper-server\na:0:0:755\nZ:Q1iOdjjVNQ4ZPOAHPvADuPNkClpXg=\nR:liblto_plugin.la\na:0:0:755\nZ:Q1Ze06aL1b6tFUznP1GfDUp7usU54=\nR:liblto_plugin.so\na:0:0:755\nZ:Q1xrUSMbymBIh6VgaF75w3PMI0wkg=\nR:lto-wrapper\na:0:0:755\nZ:Q1uS5gh2a2ynVAYbMSO7ru1eKBjpI=\nR:lto1\na:0:0:755\nZ:Q1gBKzXxd4YQI+74V5G/pfb9P1+nA=\nF:usr/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/install-tools\nR:fixinc.sh\na:0:0:755\nZ:Q1U9VD7g6ey8kX2qJnMnfc9d2j5eQ=\nR:fixincl\na:0:0:755\nZ:Q1iCRxrkOt3sB5ScfMpVOXPKEw84Y=\nR:mkheaders\na:0:0:755\nZ:Q1TYroyvtBdir+cbLcn8VuiWXetpw=\nR:mkinstalldirs\na:0:0:755\nZ:Q1cp9yeHlpbTyzFFdd+JHguqGtIxg=\nF:usr/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/plugin\nR:gengtype\na:0:0:755\nZ:Q1obxEbVNUi+jFC14OiT9v3od77Vg=\nF:usr/share\nF:usr/share/gcc-12.2.0\nF:usr/share/gcc-12.2.0/python\nF:usr/share/gcc-12.2.0/python/libstdcxx\nF:usr/share/man\nF:usr/share/man/man1\nR:cpp.1\nZ:Q1ecEKIYbTo657lt1Kj7YU+duBc5g=\nR:g++.1\nZ:Q1Akm9MiHl00AiqL2R09oZEOnAIs4=\nR:gcc.1\nZ:Q1Akm9MiHl00AiqL2R09oZEOnAIs4=\nR:gcov-dump.1\nZ:Q1rNPFERYypDbG0+Tcy8c681dqbUY=\nR:gcov-tool.1\nZ:Q1pq2LiqzqVl6mv0IuncDU/yokm7M=\nR:gcov.1\nZ:Q1sngO5gFs/Afq860AotJY2EdG6JU=\nR:gfortran.1\nZ:Q1BYvBsvk6vZhGDYcajX1s39Z3ViE=\nR:lto-dump.1\nZ:Q1IRnz0GZAHFRflwLWXEKdUS/LOhs=\nF:usr/share/man/man7\nR:fsf-funding.7\nZ:Q18qUW2kr+lNFImmfiEPDeAR5UtdA=\nR:gfdl.7\nZ:Q1fMFIoqtCREHJCnwkTzxM2AjUAXA=\nR:gpl.7\nZ:Q1YK0qAy55wUUlO/1uDqfoD+MtMUE=\n\nC:Q1Rf7IX+Ch4lpcvK1KSsVMEoSRxUk=\nP:linux-headers\nV:5.16.9-r2\nA:x86_64\nS:1652468\nI:6031295\nT:the Linux kernel headers (cross compilation)\nU:\nL:GPL-3.0-or-later\nF:usr\nF:usr/include\nF:usr/include/asm\nR:a.out.h\nZ:Q1kldK6ryVCXxS++5pNOYY3bVSluk=\nR:auxvec.h\nZ:Q1XgVsZZeiY1VBUAwVTjbRSniNo3k=\nR:bitsperlong.h\nZ:Q1xDx+FM3gJA/wRwb5YJ7ph0qaUYo=\nR:boot.h\nZ:Q16440SUJlRg5KOPZJ7HqAx3nGtNQ=\nR:bootparam.h\nZ:Q1b27neRcN+RJ4mDdq8KF1mdnGd9U=\nR:bpf_perf_event.h\nZ:Q1rcm4khL6LP33PFRSfEG6Me04scA=\nR:byteorder.h\nZ:Q1kPiyFFGTlJqGsBj/Dt3e0PDcI2g=\nR:debugreg.h\nZ:Q14w4w26MXOFaqadjOLJ3N/EUsX4g=\nR:e820.h\nZ:Q1O2rJT+QvoPgxxDaqtIi4kMEhEf8=\nR:errno.h\nZ:Q1pahuCcqexdUnrqCZORq6FIIwxtQ=\nR:fcntl.h\nZ:Q1UJ6B3As8TUIeh148GFQN/70ltp4=\nR:hw_breakpoint.h\nZ:Q1OLfGy+Y8pgNJzFxzs89iR9FyZS4=\nR:hwcap2.h\nZ:Q1r7THqbOSLdWiVYqtLLGW/OEz0TA=\nR:ioctl.h\nZ:Q1eigAc4dMU9pg2wwyMDFcwRIEL9M=\nR:ioctls.h\nZ:Q1sMs5bOn+GmlcLZ43XtCrD7YRSjU=\nR:ipcbuf.h\nZ:Q1JSMdj+i3SQwvgazOfw3OT1lK6KQ=\nR:ist.h\nZ:Q1mB7+aAYFcyfFfkplEX/DIB8NRVY=\nR:kvm.h\nZ:Q1gP6V1lJYJTzUUSbw0MWEKaLs6u8=\nR:kvm_para.h\nZ:Q156bEiM0YUhuw4+LLZ6ZIoPgjXZA=\nR:kvm_perf.h\nZ:Q1Ls2UFoevQxN5xFYby66lJa6Y0iI=\nR:ldt.h\nZ:Q1D46pWCzORuXsZmMVSo9HP8ewx+g=\nR:mce.h\nZ:Q1l+PvfW3bQY9LmVZ63U+6woxSdW4=\nR:mman.h\nZ:Q15uIFnr77ZUe5EVpGJ1M/oIVA454=\nR:msgbuf.h\nZ:Q1LdRCpPvQSW3I/DQ0Oy08XQSjhU4=\nR:msr.h\nZ:Q1fYxEaOonr2z8c0fP1aBdkftFT2Q=\nR:mtrr.h\nZ:Q1tIGYVKiAWAVZwzp20Wm13m/f9zI=\nR:param.h\nZ:Q16uNaRCf9bf8LpiyJnBDi54KmBSY=\nR:perf_regs.h\nZ:Q1vdaJ73ke7aickqhKu++vqMTMnCc=\nR:poll.h\nZ:Q1WtTcsxzghtzoiaCUcPaYCjgDnOs=\nR:posix_types.h\nZ:Q1iBb6dkgsz0W46Sy1kDB05HXSnko=\nR:posix_types_32.h\nZ:Q1aiMjmTk/37kk7JS3S8d+RdOHawI=\nR:posix_types_64.h\nZ:Q1iBahXBkAS1TXTH+3X5bcGW1sGbU=\nR:posix_types_x32.h\nZ:Q16piMhtrw/nfJvkCrlzkhItLgwfA=\nR:prctl.h\nZ:Q1lc4njcD2+sj9j0oPQ3LWqLlMzFo=\nR:processor-flags.h\nZ:Q11d43Tvj2jDSiuVchsfYBfb/Ua84=\nR:ptrace-abi.h\nZ:Q1kRMuLaekxZswjQ4WJNl1+QEJcMU=\nR:ptrace.h\nZ:Q1CUy8hxEfhjfAk0BPM97gmZbYjXI=\nR:resource.h\nZ:Q1Zwwbtv8KmBdOkpxKm6g8v1INbRU=\nR:sembuf.h\nZ:Q1niNXMYOeoge+Kbz89KqilDjX8QY=\nR:setup.h\nZ:Q1D06dzjg4yibcLL54gBq8ellbLBw=\nR:sgx.h\nZ:Q1qWDVv3+Ku/mtm1zWX+K8gi0lS24=\nR:shmbuf.h\nZ:Q1xmlOTWdhF99YVqIhbQHNIZws+8k=\nR:sigcontext.h\nZ:Q11YlYfSv2hXLnb6bgl+NaU/E/QuY=\nR:sigcontext32.h\nZ:Q1EPb41hwUEouBwlfUaratxWBh0nc=\nR:siginfo.h\nZ:Q1L+SakffOIPYT8GlX5hW+YbEuoe0=\nR:signal.h\nZ:Q1pqPyfWbxeqZdzCtPQbjC5RXTruY=\nR:socket.h\nZ:Q1D1/09E2t7nzyqbmc262at/PUHng=\nR:sockios.h\nZ:Q1EMTfnIw09B7MMihBfzWfY4wx6Nk=\nR:stat.h\nZ:Q1xwQVa2thagDmGmvKpDWPH0eMv2Y=\nR:statfs.h\nZ:Q1EoLXEyDaTKM+iReEFAH8vbR5blY=\nR:svm.h\nZ:Q1OLjDvg1n7dpgXa/uQVJKVHEBMJ0=\nR:swab.h\nZ:Q10I9l8PWboo+GL3U/3r6/hr1T59k=\nR:termbits.h\nZ:Q1lplt6WxMgX/WHe2PnHbqawUk6CM=\nR:termios.h\nZ:Q1v6bAAp5z7HhOmg1WGR5Jb0XVeqo=\nR:types.h\nZ:Q1TvkeZzpHlyAn7aYkBRuVfqxs5AY=\nR:ucontext.h\nZ:Q17L6s/cVAgJA1FHwgwpRSVqrEjGg=\nR:unistd.h\nZ:Q1dHcDkiFfc0BvQdDSKtwSuv+RNJ4=\nR:unistd_32.h\nZ:Q1elBB0A3Tqn8sD0OeZN5+8MXN9Ck=\nR:unistd_64.h\nZ:Q1cf5RVcdzowta61uOqnQu788O9PE=\nR:unistd_x32.h\nZ:Q1plGIvSZKiqNfrpJDKgJUYsnQP+c=\nR:vm86.h\nZ:Q1oOdbXMkgGare770G9NTqAOOyWcQ=\nR:vmx.h\nZ:Q1PCgO7W239zx41XqMn7AP3ErNMVs=\nR:vsyscall.h\nZ:Q19wY+VBjwpkqdEUvDfsi2S+HKSNU=\nF:usr/include/asm-generic\nR:auxvec.h\nZ:Q1Uy+s0wokbjb5wgkB5WwcvL+WZVk=\nR:bitsperlong.h\nZ:Q1RC+1IG+CnxvWryiJTZhhmYtFYYA=\nR:bpf_perf_event.h\nZ:Q1Ei6if13yGzk6bSgJoEcqQTOkg9k=\nR:errno-base.h\nZ:Q1hSV2LBypBdNvUCol9gKTux95BYY=\nR:errno.h\nZ:Q1czhmspmrt696UK5LZFSWNFKk5CA=\nR:fcntl.h\nZ:Q1a3POqnrOAy3f5yTarYXwl0CtBqg=\nR:hugetlb_encode.h\nZ:Q1gBZ1GFZfskKMP5yPblhkc/GLrEU=\nR:int-l64.h\nZ:Q1sfF0DfNMTYt8k6klnEVO4LHJyE4=\nR:int-ll64.h\nZ:Q18owCSZeZfrRKqNZy8Yk6z9277MQ=\nR:ioctl.h\nZ:Q1e7EKCSMKSvzU6VhZGYZ1tFyHD6o=\nR:ioctls.h\nZ:Q1wQjVsejwGNWe9tk0obVswS0M0pA=\nR:ipcbuf.h\nZ:Q1uY1Za0o8wYdbfW64mAviulzcDig=\nR:kvm_para.h\nZ:Q1LAh+8AUrFAdd3Sn25JktiAF/EV8=\nR:mman-common.h\nZ:Q1qEm9JTz8wk29UETtX/87a06LB68=\nR:mman.h\nZ:Q1PNvw9hUUMT4SLBxWCCPifuHGcvI=\nR:msgbuf.h\nZ:Q1KQCCoolI2afYkVJorsivPJO/qDs=\nR:param.h\nZ:Q1wXRtjwuKGg3nJ2srn2x90v25n1w=\nR:poll.h\nZ:Q1P7DJqumMQ1ko2ppAJjWTEUimMzA=\nR:posix_types.h\nZ:Q1TRr6kFhV2s5tF/DTHe2dze8wXFU=\nR:resource.h\nZ:Q1Cy2Ahqy8DBcyv9fG58BiI0tx5Ts=\nR:sembuf.h\nZ:Q18jTU3QgARuJnc1AOFUIbdXYBMrg=\nR:setup.h\nZ:Q1dvQinDj8trhcY7lkKbjYbBGE8Z8=\nR:shmbuf.h\nZ:Q1FH9x9vnpY2aw71lxw8bKuTBzJRs=\nR:siginfo.h\nZ:Q1tqUUBA/IFP7fBJVsly64oznyRuA=\nR:signal-defs.h\nZ:Q1TEJQrIleMbA/tc77gfDIm6QjOus=\nR:signal.h\nZ:Q1rJ1g0MI5MXHhjq/otULlXnU4Zic=\nR:socket.h\nZ:Q1gEy2pESqQS0t8nT0CWoeo2X++wI=\nR:sockios.h\nZ:Q1PZ42NeOiyj7ouBxpQfoTPMGHvIE=\nR:stat.h\nZ:Q14FXJQh6Z8EL7AES2pUSPAW5cg7E=\nR:statfs.h\nZ:Q1jr0TLGjZvivXIYJeHcz0r+qYACk=\nR:swab.h\nZ:Q1XKFCLQoaTN718qx9JsAYF2EqSu0=\nR:termbits.h\nZ:Q1qSC6cP/MkbeRkoNIqwIBwdzVs0c=\nR:termios.h\nZ:Q1ftGMggA0GnPvgUMutL3fpyoA40Y=\nR:types.h\nZ:Q1aFx3XgMCBLQl3b/TvFqSlY/gENA=\nR:ucontext.h\nZ:Q1Tpw6ZTBcKsRV1xw5Nt2sYzdynWI=\nR:unistd.h\nZ:Q1Jn1/yXcta5G/r3IdgqiOJRereps=\nF:usr/include/drm\nR:amdgpu_drm.h\nZ:Q1NiDnUU/4O6NrlK1BfXkriy5k2q8=\nR:armada_drm.h\nZ:Q1KnI3pBBEmPkhnIbwX7H2Bc0qxqc=\nR:drm.h\nZ:Q1Q5BT7KyQcZHbnD6qzUJSrIpyrqo=\nR:drm_fourcc.h\nZ:Q19x1Wdvc2Qsba7Cy998y4bkACk3U=\nR:drm_mode.h\nZ:Q1ZO/uZT/Rsny65VFUGP4Ddv9HPLE=\nR:drm_sarea.h\nZ:Q1+ooXweTis8TqxTnGF9za7LFsAww=\nR:etnaviv_drm.h\nZ:Q1laS+bQNJzpjr6/Dhn6RFQ9mzrqY=\nR:exynos_drm.h\nZ:Q1EJuaUL9SfP9HSDHtvMwZ7BjVB5k=\nR:i810_drm.h\nZ:Q1tDlqDlVXNwGAO9ct9S6BETPZcD0=\nR:i915_drm.h\nZ:Q1UNtk7T21uRLeUsHbsV2vFK3ngr8=\nR:lima_drm.h\nZ:Q1qwDzfQR9ZrW0qpiHAMAM6erjdU8=\nR:mga_drm.h\nZ:Q1Qqz3PuvOZFasVd8Nqormael0FeQ=\nR:msm_drm.h\nZ:Q1SiFnjR+NVN6eNXcMAJ64d4xw+2s=\nR:nouveau_drm.h\nZ:Q15TmsiDlYTlFdQGZU4z+ZxG2goxg=\nR:omap_drm.h\nZ:Q11Dmljd3bVrekpESH7i3+R5rgf8M=\nR:panfrost_drm.h\nZ:Q1O2BjyAP5iiXvJ+Hk3yNx+w4ow9M=\nR:qxl_drm.h\nZ:Q1hEXu7SsaJ9SssqYcx3zw5tOs4uE=\nR:r128_drm.h\nZ:Q1rlsud+1GXj1MqunHZvzWh/Br4+Q=\nR:radeon_drm.h\nZ:Q1vb11mzre0+LAMcKW1Vtsv3rZz5w=\nR:savage_drm.h\nZ:Q1+gGTcgvZ9HQxe3yK6XovKH4jky0=\nR:sis_drm.h\nZ:Q1WRj/2vw1ExmnMlVZgAh7o9mQMiI=\nR:tegra_drm.h\nZ:Q1wgaiYJfwAnXhjBn8tBpeeeQgGNQ=\nR:v3d_drm.h\nZ:Q1SXVH8hvrxQdkprh7sSFYQsJfyIA=\nR:vc4_drm.h\nZ:Q1fh66oaFPsQIAkpwlEHPmhQZaCvk=\nR:vgem_drm.h\nZ:Q1pNkSujoWAAqOL3P57WQpRChPAXs=\nR:via_drm.h\nZ:Q14bJmByWO3uOJTrbsWr6XDEEKfKg=\nR:virtgpu_drm.h\nZ:Q1EcazZQ32oAcDz9y2C0vlhWrkGT0=\nR:vmwgfx_drm.h\nZ:Q1i5E+EvDHMKSbNAgTZrvtht8DVmM=\nF:usr/include/linux\nR:a.out.h\nZ:Q1SKEvszagEFuVE2MMNALJBUVDZ1A=\nR:acct.h\nZ:Q1M90eQsJHqJOURurBgYS7Fk+HC2g=\nR:acrn.h\nZ:Q1ox5Vc8sOxXPyDITW/BkD6Q9VoxE=\nR:adb.h\nZ:Q1GiY0wE8klFk8sK85KAGBlSiQp1M=\nR:adfs_fs.h\nZ:Q1colVQE11f1u8W+SAzoenuUJj3o0=\nR:affs_hardblocks.h\nZ:Q1yCr8wpGxKACQlvzRvPBvkzU2Zgc=\nR:agpgart.h\nZ:Q1xfJWVnjPNwvOINE96SnxjhP+Wl8=\nR:aio_abi.h\nZ:Q1UwVR987RNs7Xkg+JEnX+vRWZxKA=\nR:am437x-vpfe.h\nZ:Q1f9Si+G/KLT+V2Om0yY14oMJ4cck=\nR:amt.h\nZ:Q14KHqDDZcgIV7PXqryI9RICNY8PI=\nR:apm_bios.h\nZ:Q1wzf5bkAgYjd658ccYld1/VvScDQ=\nR:arcfb.h\nZ:Q1ogic0IulSC/NdDe8hnO7WFwOlAE=\nR:arm_sdei.h\nZ:Q1D7qMY7fr6gqYvi2hBW/Wxb2rcXc=\nR:aspeed-lpc-ctrl.h\nZ:Q1NK76sIA406a2bloMVHVzcTeFiiQ=\nR:aspeed-p2a-ctrl.h\nZ:Q1q1qpALlxShWNJkCeymICccvJjcs=\nR:atalk.h\nZ:Q178RhyNnKbECFVkXm/1gtPdVkUFI=\nR:atm.h\nZ:Q1yJ/eVplgWcsjixtRcWqDc8UiQ2M=\nR:atm_eni.h\nZ:Q1DloX3rsBTX9cqf6J0LEHksX91aQ=\nR:atm_he.h\nZ:Q1FvaIxMrvnO8j/HLlcpASUNnb8A8=\nR:atm_idt77105.h\nZ:Q1LtvfQaGK6Emq8G0FJkFhep3XBCE=\nR:atm_nicstar.h\nZ:Q11ulU2GsZ3b76Wycn05Y/MGwiFko=\nR:atm_tcp.h\nZ:Q1Pp5UIWDeYFanQafd7M4mf5LgAUc=\nR:atm_zatm.h\nZ:Q1+xdzxGnhZKWJCfHt7DQcT5tpPTU=\nR:atmapi.h\nZ:Q1Di8TI3PkQHzQPXMkldmt6EaBAeA=\nR:atmarp.h\nZ:Q1XMIgoflxL9IR8Q6s/kFdRtKLDiA=\nR:atmbr2684.h\nZ:Q1a4hQFETNSBG7IeNqdRcB08gK1us=\nR:atmclip.h\nZ:Q15EWNF2BRFTQ16eaa3bKZUsY0svA=\nR:atmdev.h\nZ:Q13fX7oax2aRjWpKFhcvR3yinE6aM=\nR:atmioc.h\nZ:Q1ZovXm9vJjiR3NLStodmAYFowGa4=\nR:atmlec.h\nZ:Q1NEFo4lW1WDKKvJTfj4rmdU+/MQk=\nR:atmmpc.h\nZ:Q1mjZpuC2DlLQU6gjU6sCOgTQHipA=\nR:atmppp.h\nZ:Q1sb8uxeQKFwr+ZNTtKAglz3F4yeA=\nR:atmsap.h\nZ:Q1uA2aL5Hvgld3Q506OChxHTMx7+A=\nR:atmsvc.h\nZ:Q1Dm/ME7B2EKX5ISVfEaVoDTErnes=\nR:audit.h\nZ:Q1P9M3p3FUFQGy3IMzVntAye04Cmg=\nR:auto_dev-ioctl.h\nZ:Q1XSRIrJS0AK6xd4uhRjm3rifx/cI=\nR:auto_fs.h\nZ:Q1r/H11BGrOo8/n0VfhYqL0NSeZpI=\nR:auto_fs4.h\nZ:Q1PBDRWQdE/VM7E7kAaRlKZaiQ7/4=\nR:auxvec.h\nZ:Q1DX3R6dNTOksRITT4VIz21M1EtFU=\nR:ax25.h\nZ:Q1ZEEiX/7Q2KPL6c9ErbL2Okkvtug=\nR:batadv_packet.h\nZ:Q1/rMDHXALYgm+RcNU5+LlnPrCQE8=\nR:batman_adv.h\nZ:Q12mXAiu9J8nemiUGExzBTjs/tOmc=\nR:baycom.h\nZ:Q1SfkEJzL7K40qyQHKL6nAOrn4NVY=\nR:bcm933xx_hcs.h\nZ:Q136hcQZ+PefZi7Mx98a8e2DyZd5k=\nR:bfs_fs.h\nZ:Q1D0r38xq+tAwk/AjkDRHogUQp5yo=\nR:binfmts.h\nZ:Q1b7zcp3s9tqQAJPI7ciFd6mkSHv0=\nR:blkpg.h\nZ:Q1lhLuUafYn2gLb1/Jjg+Ygyj8xYM=\nR:blktrace_api.h\nZ:Q1Wwl1/bWj3b8lpWcMwJ2TwArvN7k=\nR:blkzoned.h\nZ:Q1TRIXSTIslGa1WS2wo9sENwQVO4c=\nR:bpf.h\nZ:Q1ccDul/2ruCxSf6qtderi46Mznus=\nR:bpf_common.h\nZ:Q1vpCHof4Q7dFZ9YvwVK2Bv6SVmbc=\nR:bpf_perf_event.h\nZ:Q1ysbvdVzB0pw6obYGH3YXUffRPqg=\nR:bpfilter.h\nZ:Q1r9BP4bjXOlXmf+jTN4FGMSBHKbU=\nR:bpqether.h\nZ:Q1YagLBtZgSEoMWz3sNxcedZPZr4w=\nR:bsg.h\nZ:Q1ez3pPzjVijcyR+GwchbZVrsB6x0=\nR:bt-bmc.h\nZ:Q1LuDgf524o7RBtVT3z3sh4z70wYA=\nR:btf.h\nZ:Q1yZBRFGHgz4bvbSMAzSnSR8NkQyw=\nR:btrfs.h\nZ:Q1HB1gva7MtqRGdKceD4E7ZP4xyuc=\nR:btrfs_tree.h\nZ:Q1SLp2SVWJwkmvmgGwRQZRQdApUuE=\nR:can.h\nZ:Q1ztEQnPf6tIux9RdBFw9tgAPvuMQ=\nR:capability.h\nZ:Q19GmDdN7YLR9y3V2Z0ijdD5tlnAw=\nR:capi.h\nZ:Q17D5wS7X2A1ZWQrsgJpAn8GAjQsE=\nR:cciss_defs.h\nZ:Q1w10Z/FzAtw2obxNhSZYcW2fJYsY=\nR:cciss_ioctl.h\nZ:Q17eZCbvRd+i1r2ilOHK0CJ+bKyjQ=\nR:ccs.h\nZ:Q15KTquuHqC8TQNBLPjnT95Msxkow=\nR:cdrom.h\nZ:Q1IwSsEdodReBAsOY/5qYNPklTEUA=\nR:cec-funcs.h\nZ:Q1pkh7w5Uo8Z/WhthVwB7pFDYvDdM=\nR:cec.h\nZ:Q13JixfwexB+G/88ZXw5KIyWZ1z2k=\nR:cfm_bridge.h\nZ:Q11rMClD5++o1OhmFjNNIHgqkKKPw=\nR:cgroupstats.h\nZ:Q1DPobcfUeDqDsXjQW/oIftNtqxs8=\nR:chio.h\nZ:Q1u4ZSlvzs7G5qBiNprgb5ujdxz/c=\nR:close_range.h\nZ:Q1SJq6GIppiZacdN0QC0XB2AUPhR4=\nR:cm4000_cs.h\nZ:Q14YNzrMvncU2h5W/i8VNZ1Ytfk24=\nR:cn_proc.h\nZ:Q1b/7j9eRVZs01h3e+jT59D6Jndpw=\nR:coda.h\nZ:Q1SSs31AOm+ISxcbuYa67s7Khi46Q=\nR:coff.h\nZ:Q1+vL8g7/HnTmb/tviHZiqW93PNtM=\nR:connector.h\nZ:Q12W615dlP/0zL0pbEgC9oOvo6VHM=\nR:const.h\nZ:Q18CAJOqyCGd6OKSapoj7j6ek67RA=\nR:coresight-stm.h\nZ:Q1oaQ+3OUMPNNXMMfCqzJGaSm5ySw=\nR:counter.h\nZ:Q19xUsQKnfjRgqbXFfzjlic8DS4xg=\nR:cramfs_fs.h\nZ:Q13ZoLttsMtUKVdGBVRumU2XxJG+M=\nR:cryptouser.h\nZ:Q1HEuhYumNdnareyEqV7hSiz6rEA8=\nR:cuda.h\nZ:Q1tcxMQ/EHnYcCRHjFzcFSDNnhdXo=\nR:cxl_mem.h\nZ:Q1XOilUux5mnjFZ6GiN07jsukn7hw=\nR:cyclades.h\nZ:Q1/MM+o4yMYfjhMnhR/0JZpS3eju8=\nR:cycx_cfm.h\nZ:Q1MAN2DW6jXLXcHsRbHhovVlZFsqc=\nR:dcbnl.h\nZ:Q10m3muy0COZaurrG7gbWUhtH6wtU=\nR:dccp.h\nZ:Q1jeRNnY+nvJdefv4ReSrp56jp1go=\nR:devlink.h\nZ:Q1mAM+ewqg1wMoNT3NcQE2axQ+pZA=\nR:dlm.h\nZ:Q1ft7/bIsSFmyfBMbVNwTmCqygGv4=\nR:dlm_device.h\nZ:Q18QLDYeLcRr5/6JQa557Yx+K1MYo=\nR:dlm_netlink.h\nZ:Q1c8KEukF3hqwxo/pj5KwSnIl85sE=\nR:dlm_plock.h\nZ:Q126Z8950MTSi0Vga3SfRCY4TkULI=\nR:dlmconstants.h\nZ:Q12BbMNBy18Q5MOfu5cZ+UidjkpZo=\nR:dm-ioctl.h\nZ:Q1foQsjk2EEue6RbqeNQEhjXIMrEM=\nR:dm-log-userspace.h\nZ:Q190WsEgzfaSobiOPugee7BmvFTiA=\nR:dma-buf.h\nZ:Q1KHYGMz1q49KqaElGrcZng8RitH4=\nR:dma-heap.h\nZ:Q1ys5tAQhp//vWqy6QMQ4YwefeZco=\nR:dn.h\nZ:Q1yMXM0WZM84+Dqqwso/HWFwsiw2Y=\nR:dns_resolver.h\nZ:Q1YtDqz6I3aASmT0FiMh+03oQOGeM=\nR:dqblk_xfs.h\nZ:Q1TjoE2St9SEWxu3C/+YnqdGEPnFA=\nR:edd.h\nZ:Q1OMuKeFZrZuIRbqNycrSg63nziXM=\nR:efs_fs_sb.h\nZ:Q16+VkZeU9GdtFklC75ijcWoLlXiA=\nR:elf-em.h\nZ:Q1z8Sh4aqA5DjoJaIGZ6ubWVdlFiI=\nR:elf-fdpic.h\nZ:Q1DifSpfjZuJC2B8kqMKeQkG76pVc=\nR:elf.h\nZ:Q1So5kMtXn++GoFZWsYGKkD99kb5Y=\nR:errno.h\nZ:Q1BwR5HcBAyx2sbYQuh37jMe6R4x4=\nR:errqueue.h\nZ:Q1UMLuBz+PENsqzY7Wusaq8dmisJw=\nR:erspan.h\nZ:Q12KiJanOesJDYVjb/pjziwwg2rUU=\nR:ethtool.h\nZ:Q1XOOb2gseBLGtRR2MuwXq0IM4h+c=\nR:ethtool_netlink.h\nZ:Q1WZ9RS7Anvbm0thtKIDMRj08HWh0=\nR:eventpoll.h\nZ:Q1uY3qmmjCu9VvFLC9vnfKMqFb2U0=\nR:f2fs.h\nZ:Q1ZOIZZRPclUpCtKgmA8SL41nkTI8=\nR:fadvise.h\nZ:Q10lh9xvIYKDsSgmggEv4Oiz3QaX0=\nR:falloc.h\nZ:Q1RULaVp3FDbnsb02bAn7RoNQtP60=\nR:fanotify.h\nZ:Q1Ag78qRBmPZxyn69jcFjG2WFOWAg=\nR:fb.h\nZ:Q1nY31owx0mhraL8SkJnfrmUBI7NU=\nR:fcntl.h\nZ:Q1V9zRC2EFkWCpvFUnWMI0bzE14fs=\nR:fd.h\nZ:Q1krqV3spfiPPfLOochVBPlvfrcM4=\nR:fdreg.h\nZ:Q10ol9i1+mKE+RGtgijaS3feG/0kc=\nR:fib_rules.h\nZ:Q1up7N6CBpDLzKnK8jkS+NNl0Ie5E=\nR:fiemap.h\nZ:Q1A5tgnzSlblsIm9pyodtWMxd8PoE=\nR:filter.h\nZ:Q1V2iVLwMVgDr+hlNNviDLzgN/XHk=\nR:firewire-cdev.h\nZ:Q1cr77G2FtQ7JCZ3VRZUm9KIMdcX4=\nR:firewire-constants.h\nZ:Q1jUErJYxRydJ8g7FbCbltV7wgUWk=\nR:fou.h\nZ:Q12N/JplaDO545zelGOuoblhPm/ro=\nR:fpga-dfl.h\nZ:Q18kvbShtSTSJQpcSMbUZB/RsVaMI=\nR:fs.h\nZ:Q1kCqUT6BoydBuE4nD/q2y0LJqCUM=\nR:fscrypt.h\nZ:Q1Tzg9OiL1XWUeIancxgSw0aTbbVg=\nR:fsi.h\nZ:Q1t4BjTShDntt8bda73aj86PhwMqc=\nR:fsl_hypervisor.h\nZ:Q179fXP6E2mgxMwd8BM7zf1NHlfpY=\nR:fsl_mc.h\nZ:Q1g459GR/m6YTKVa29l2voBG4G9CM=\nR:fsmap.h\nZ:Q1yO6C9Gq5E+Wzrz60AmFN3V8Z9z4=\nR:fsverity.h\nZ:Q1L9wgHPaL3tl8tqRCNJwqynFR4Wo=\nR:fuse.h\nZ:Q1zvNkMHKyZgG9jITZi25YV0N5Bh8=\nR:futex.h\nZ:Q1hM6SylPJsAIRPn7K0CWhJF0JKsA=\nR:gameport.h\nZ:Q1+LOp2F+WQ3foWB88IQYCVkte/L0=\nR:gen_stats.h\nZ:Q1sIQSotOPJwgLU/Prz2lVu0WaRvo=\nR:genetlink.h\nZ:Q1HBZYucwFprQIGiKNLWWaHqmwMNo=\nR:gfs2_ondisk.h\nZ:Q1SUudyThleZTw44flutORppIFrXQ=\nR:gpio.h\nZ:Q1kSY/vZW/HifbbSftigM9BL+POis=\nR:gsmmux.h\nZ:Q1uJEBR4h2OfL5jf8aOL6Jc1TmrqQ=\nR:gtp.h\nZ:Q1EfpOftCkZj518tBp+pakssbUf7A=\nR:hash_info.h\nZ:Q1YMwlmEjuQnBRxSkwFnid/AV18Yc=\nR:hdlc.h\nZ:Q1Qp2BDNR55yVJ4W58lZQn/YawID8=\nR:hdlcdrv.h\nZ:Q1/V1Bh0r3TDDiQfLBxRsG21g5kQE=\nR:hdreg.h\nZ:Q1QrPHadLxp1khvijwfnSOVS4885I=\nR:hid.h\nZ:Q1PyRis7h2Q7tJv0O1ncwRn0NNCgs=\nR:hiddev.h\nZ:Q1jkRi5qChcifgR94HnXzUGR8btws=\nR:hidraw.h\nZ:Q1TBCdIsCIBbTeKDOeiEbaCMevZCA=\nR:hpet.h\nZ:Q19sPAapX14dNWHBfC99MPxZ0Y8Ko=\nR:hsr_netlink.h\nZ:Q1mHVjUG02llhjsfz2UzpI4A21g74=\nR:hw_breakpoint.h\nZ:Q1SX4VJLsUCjD6vm+EANePeJPeneU=\nR:hyperv.h\nZ:Q1STbJI0977yjHoexKxqCr92nPOCM=\nR:i2c-dev.h\nZ:Q1dml9R3PmGC6AGn9izh9x4lvsRP0=\nR:i2c.h\nZ:Q1zczgt5voPvJEDrgYPBlv0SjVREo=\nR:i2o-dev.h\nZ:Q1TxL89ojPBVX0GPhPgFxTdrf3MLg=\nR:i8k.h\nZ:Q1Gv9RYFW8xsrqUQw02RP9WpSM17I=\nR:icmp.h\nZ:Q1CpK07aoBC6ySD6WtgiTyzRrMjNE=\nR:icmpv6.h\nZ:Q1uyyAalhMgCuufRc7ZCb9W71IJXs=\nR:idxd.h\nZ:Q1bNkAwCMXz/dvllKRm7J31rsyaTY=\nR:if.h\nZ:Q1nrJ23OAeGwp5p/Eqw2Qv64giui8=\nR:if_addr.h\nZ:Q1uOJfkiSu/bTjeTn7dBOX9Xne+Hw=\nR:if_addrlabel.h\nZ:Q1yhaVEXP2it+bMm7g46WyZ/7fnPc=\nR:if_alg.h\nZ:Q1nztstGpiUbBW5mos8sxqGiEG3gk=\nR:if_arcnet.h\nZ:Q1UxNKfwbkhXC1UI4RwB6X3m15+RU=\nR:if_arp.h\nZ:Q1jJSKCpYVMTCqnVt51YvXoin4hTg=\nR:if_bonding.h\nZ:Q1PKmjPqeGJitLnKidgstUHHGQsVc=\nR:if_bridge.h\nZ:Q1AxSyeHKk/KwnTFGGC/FXbOujCVw=\nR:if_cablemodem.h\nZ:Q1TkKkPC0qeZNLaUJ/TBVk75xO/fs=\nR:if_eql.h\nZ:Q1CRkLZYd2wvIn4DppNqTriUwk9Ho=\nR:if_ether.h\nZ:Q1rANwkbjbOVoZMwmL9YaNY/7t52c=\nR:if_fc.h\nZ:Q1BFECopWazSv29n+1CmBzeSWYtqA=\nR:if_fddi.h\nZ:Q13fBbExCJFY0GV/4huyZAHBYRFYA=\nR:if_hippi.h\nZ:Q1i8bMN5oK/+/al1UQ2xGwXguFAK0=\nR:if_infiniband.h\nZ:Q1eyRteWJ5LaNWjvwNTGZA59gsRN4=\nR:if_link.h\nZ:Q13TKkeTEcgWOWtd6gkJWUZf4PB2I=\nR:if_ltalk.h\nZ:Q1wlsaBkCNAfHBCdsxpE4zKUX7/ik=\nR:if_macsec.h\nZ:Q19G1oihknLf66raJlA9c4SMigHA0=\nR:if_packet.h\nZ:Q1xOt1ew0umcBPek4YjbPGkKCYLF8=\nR:if_phonet.h\nZ:Q1w5CjkvpRVV57K7bwIw4WIESlEks=\nR:if_plip.h\nZ:Q1yaIxQHIoN6SUApJrK4+GYDQ2clI=\nR:if_ppp.h\nZ:Q193yB7l/6MzRlo84i0IdU9juUL08=\nR:if_pppol2tp.h\nZ:Q1Aj0EZg/cLH90w/xfm0jxAzuRgOo=\nR:if_pppox.h\nZ:Q1yuzcUjYPFyiWZOJP6HSI9mnnh6o=\nR:if_slip.h\nZ:Q1vDS4yAWeAsg3Nfa/WAFf/RR082A=\nR:if_team.h\nZ:Q1KAFSPJ1oGB0Rw0LvU/vD2rPlIgI=\nR:if_tun.h\nZ:Q1VuKfRLDlCUGElDOlpUiCleHTcw4=\nR:if_tunnel.h\nZ:Q17IfilxsXO9BI2DXisMSGzlTn3hI=\nR:if_vlan.h\nZ:Q1JnSmi53Z1zsyeQwmtLx2vu9bOU8=\nR:if_x25.h\nZ:Q1UZURte1JTELEHekcOPh2OOSvoSE=\nR:if_xdp.h\nZ:Q1bAhTSColRfPF3l3NIfZWdYnwEx4=\nR:ife.h\nZ:Q1uywFr5CzkQgFJYWnw3LtMjuYAQM=\nR:igmp.h\nZ:Q1EWxrCSgT3BSu5oNztt47Ua2CWE8=\nR:ila.h\nZ:Q19xIdEh8kP0ykLHL9ljv9HYhoviE=\nR:in.h\nZ:Q1Tcez9qz6Qpq/qO+Wg0ZaVJDIAaI=\nR:in6.h\nZ:Q14IbYdQGPkdgWugnuHEpvT+IYtV0=\nR:in_route.h\nZ:Q1ht4O4RSK9PPaALfzsPbH80J9wOE=\nR:inet_diag.h\nZ:Q1ApIJ1bDCswk+u1bQevM3naXvsrM=\nR:inotify.h\nZ:Q1bh9FWi+VQZgQ/SQNk05TH/bvzVo=\nR:input-event-codes.h\nZ:Q1apbUjCV7L4S5tVyVC7fK1wrLGOs=\nR:input.h\nZ:Q1+XDymbu8xtct/hOx12m/AvWqjJ4=\nR:io_uring.h\nZ:Q12wgsxNe6CDVAMEubJcHVBGtaKNM=\nR:ioam6.h\nZ:Q1X6/SIYN6kLg1gQrL8iEsyENUxjY=\nR:ioam6_genl.h\nZ:Q1Rv5B8uRBLozcB0qta0XSL+gyznU=\nR:ioam6_iptunnel.h\nZ:Q1Qw0+BUSvVg4H16dKr7C4RFtzEzU=\nR:ioctl.h\nZ:Q1h7NRZ63W69plxg5LbXuH1SzrDx8=\nR:iommu.h\nZ:Q1TQy72zclaZQ6f12zKOH4q7OnEO8=\nR:ioprio.h\nZ:Q1zbH0vj8E8lxTsO8zHzQEGvg/70A=\nR:ip.h\nZ:Q1obpoFudpOGZBC3+TYHqRj8Sz0uQ=\nR:ip6_tunnel.h\nZ:Q1i1Kthk3HvXkkwFk1tUgEhosdT/8=\nR:ip_vs.h\nZ:Q1E4GnCKTsHHLCbAJhlbRuanvmt5o=\nR:ipc.h\nZ:Q1iGlbYAgZYGb+TDUjd+9a6jsXT9w=\nR:ipmi.h\nZ:Q14tfTGhEQHOILImvb+PfXe3MKCp0=\nR:ipmi_bmc.h\nZ:Q1exHvSjWaeq2N5zNk4Du+HgEPm7A=\nR:ipmi_msgdefs.h\nZ:Q1FI3XvQUKbzszvdr+zbiYA4iABMw=\nR:ipsec.h\nZ:Q1dxsWJCANbffAJD/1UYTDJR/Eb4A=\nR:ipv6.h\nZ:Q1OGAIgrBFWFJV4kLTVswIUsVzF2s=\nR:ipv6_route.h\nZ:Q1OZtqAU20AUqYPESQg9u13M1kUK4=\nR:irqnr.h\nZ:Q11itr+djpW8U/mJFwCG3XTu7dORo=\nR:iso_fs.h\nZ:Q1I2Y9ubaeoVQHH/j3zjeq/1fjVVI=\nR:isst_if.h\nZ:Q1UN7S1J94Kaec/CYudF2s/I2GyQg=\nR:ivtv.h\nZ:Q1tWsM5es3LNiRK3dlWp8ElP7TJ9Q=\nR:ivtvfb.h\nZ:Q18UN17wmKObjYWhOKZktJJq4TYrM=\nR:jffs2.h\nZ:Q1gW8fETIkQPsjvAsOd2A/xp8FI+U=\nR:joystick.h\nZ:Q1LjFWVWm54juP8MDvHw3U7RPdKFw=\nR:kcm.h\nZ:Q1qMXcPo7kvoLk4sMmBbb3z8YlY1k=\nR:kcmp.h\nZ:Q1tAHpl2Li9pXt13gukjkfC/PTe6Y=\nR:kcov.h\nZ:Q1fVDMwne8GITygyDUqZ1JnlsS40Y=\nR:kd.h\nZ:Q1lrUySni1uATSQVibBcUks3vzEK4=\nR:kdev_t.h\nZ:Q1SRxvor20cac+8QSPPAV2ZpbQ5XM=\nR:kernel-page-flags.h\nZ:Q1C35E2NYnS9YCoZcZWNfeQr+kcjI=\nR:kernel.h\nZ:Q1PKOtZpZv5fOpWYhBdESSjO3j36Q=\nR:kernelcapi.h\nZ:Q1cle7hCfj/uvoVKaCT6CZyVL4TJ4=\nR:kexec.h\nZ:Q1h6xU4T8S9aNrcA+tPC0uzzBEPrM=\nR:keyboard.h\nZ:Q1jUdJ1FpOvpLrQ8zgmFHWyP5uFes=\nR:keyctl.h\nZ:Q1BbvPT3EAYCENg/olcevxlFlkbzA=\nR:kfd_ioctl.h\nZ:Q1TFvr8VxqJxoAeU9qt1q5jPMKU8A=\nR:kvm.h\nZ:Q1pBCu9HtEdC5hstmO0HnQg8vaDks=\nR:kvm_para.h\nZ:Q1pcWArRzKUfJ2asFUzoGuzD6wQ1g=\nR:l2tp.h\nZ:Q141Tst2mwI3YrSO/00D+DwImskpA=\nR:landlock.h\nZ:Q1yt1irHH9+3BEBG+ADjukRWDAQrQ=\nR:libc-compat.h\nZ:Q1krY0xmjTiweo9CeiCWU4IoExQm4=\nR:limits.h\nZ:Q1WnKgpMTkLDEWy7LQDZgFJMbNquc=\nR:lirc.h\nZ:Q1sxxQrZh/n74DFLEor5jb59Tshgs=\nR:llc.h\nZ:Q1MWrWGjwVXuvx4Pi1VkvN3kX3hDA=\nR:loop.h\nZ:Q1ak98hPBTFZiXZ9ouLW/dFGHqSsM=\nR:lp.h\nZ:Q16T2yRKdbkq0qCVoyQUKi0dcuFYY=\nR:lwtunnel.h\nZ:Q1dUsTKf8OjdbbYny4+EzEdRD3c4c=\nR:magic.h\nZ:Q1QknjoOmn4W7wjI+hnN9DyEZj08g=\nR:major.h\nZ:Q1QdjyZJc5RA4dmy2a2DiHQqzkF1E=\nR:map_to_14segment.h\nZ:Q1/n0Y760V1jNmYhn2bhNe8AWTqjE=\nR:map_to_7segment.h\nZ:Q1PYfCEdcp+NEdl2YBqidM6FB8RX4=\nR:matroxfb.h\nZ:Q1ZhFD3Xg0wbElJ/QsSC0E2Rmb18c=\nR:max2175.h\nZ:Q1hxM5ZclEzayuCkvroyJbKH+sdlQ=\nR:mctp.h\nZ:Q1uEMoLjhoXc6LAf7Tdlhx7A8/P4M=\nR:mdio.h\nZ:Q1qoRfEozfbhI8+QatBhAnSAWAtak=\nR:media-bus-format.h\nZ:Q1ColIppft1a4fQZl9gRGhPul/wPE=\nR:media.h\nZ:Q1Kx/IeB3tbxfrVfzaAEI1kPq+kxQ=\nR:mei.h\nZ:Q1IcuyXBeMvLAEX1PPEZiVI78kIrg=\nR:membarrier.h\nZ:Q1TGxxo9sfMEB8HUsp6s6B0d3N1AU=\nR:memfd.h\nZ:Q1LUJj9Jz+cbuMw/4TJ6n/kHpE8Pc=\nR:mempolicy.h\nZ:Q1Uo+hpPbIhDjXLK2nBk0XS1hk9a4=\nR:meye.h\nZ:Q1GuzVT6R3BHtFvG33g8lj2wAArXA=\nR:mii.h\nZ:Q1/74/6hvOH37XoNEJ3jmjHjN+NrU=\nR:minix_fs.h\nZ:Q1ccMcglza0XWEzBiMECmMqNvqGd4=\nR:mman.h\nZ:Q1c7rKEgVSxpLX2CdADfokvZH49LY=\nR:mmtimer.h\nZ:Q1sYWM9V09VCw2x0e0t+qGWUTXyFs=\nR:module.h\nZ:Q1B/FueVfP0ZaYNmChD5+aW9ANDKw=\nR:mount.h\nZ:Q1yNLy/W+vCZActmYNbYsjjKR3dio=\nR:mpls.h\nZ:Q1GONhetJLZfZ1CaeCUc6Wi5TM/Og=\nR:mpls_iptunnel.h\nZ:Q1lZR/3kh/cuaD6qWOQ3PJoVMOM5k=\nR:mptcp.h\nZ:Q1j6Oj9XM38k4ONYV4FeBq1Uzn+Pw=\nR:mqueue.h\nZ:Q1wb9NM+EXCR9TSYjpAbkHWU0hEr4=\nR:mroute.h\nZ:Q1+hcrDEYnkezULhfDaBCLJPxfKRk=\nR:mroute6.h\nZ:Q1wCPcWowkvHeeMg3LU+vINZasXVA=\nR:mrp_bridge.h\nZ:Q1+Vm+LGhj/AWlz5Xr2WSpkc698bQ=\nR:msdos_fs.h\nZ:Q1NeW9kOTpY1IYGwU4ULKjaG4OLks=\nR:msg.h\nZ:Q1n2cleJnGtupDEzkX8XenwoLwhhc=\nR:mtio.h\nZ:Q1fsG8fruAnaXgzfUml7K1bKS11GY=\nR:nbd-netlink.h\nZ:Q1r+IPBtuRwroDlWVgfOsLtfWxXKc=\nR:nbd.h\nZ:Q1Du0D6CsnSHjbjr3V09Phlvo0Ibg=\nR:ncsi.h\nZ:Q1FZWNBDZ+ZzS857fgkcM7Yro41h0=\nR:ndctl.h\nZ:Q1v0RUG/2DQVti5LvfdKmFhxeWTQg=\nR:neighbour.h\nZ:Q1hp+krB3fsNMrIF8Lc0jffIiI4aA=\nR:net.h\nZ:Q1lVSa4pReZr8qfdcfHj9mwq3KjO8=\nR:net_dropmon.h\nZ:Q16Po5ZAQCa8he/40le2uM7/kDRKE=\nR:net_namespace.h\nZ:Q1g/kK8vy+jGX3C+XodMmIjLQoVtU=\nR:net_tstamp.h\nZ:Q1n+EYm1zOQmZLKU9wf4G0Q9O6hS0=\nR:netconf.h\nZ:Q1LFqwtr3bysMByGw/8Ho6B2VrMhc=\nR:netdevice.h\nZ:Q14VYpRQWEf2nkDyUc7KxJO505zk4=\nR:netfilter.h\nZ:Q1CwpMB3QLwI2HXT9RrQWvMhQD6tc=\nR:netfilter_arp.h\nZ:Q1NFgC7R2ghIpAMUkASGgalRHcqJc=\nR:netfilter_bridge.h\nZ:Q1IpZBipzerTAlIp6xSiHYtfU6TgE=\nR:netfilter_decnet.h\nZ:Q15Z9W61R8XH6mFxrnqQdgLDzh9wY=\nR:netfilter_ipv4.h\nZ:Q12BpPTCtfeq+cUfl1dQ+A73JjCmU=\nR:netfilter_ipv6.h\nZ:Q12bpb0N39U+vZ5EqSdgviUYUeeB8=\nR:netlink.h\nZ:Q1Dq/7PPfXfmw5WoODrRkA48ocCLU=\nR:netlink_diag.h\nZ:Q17l8HQOcCqimIYGkUVb9rS5qiG3I=\nR:netrom.h\nZ:Q1wahMug2033+74lqklcYUA/+MQoM=\nR:nexthop.h\nZ:Q1k/v9wsnB5YuY4sQZugGcVJv0QqU=\nR:nfc.h\nZ:Q19IUAv6h0r1EcnRRM4TtIGmNg2KQ=\nR:nfs.h\nZ:Q1MPgcl4FWIjet3/yoh642i5oROOk=\nR:nfs2.h\nZ:Q1jjuFnp4FybCjmCN5RotI4WSvdDc=\nR:nfs3.h\nZ:Q17hQVoSw417NBHIt1dU199bBfFeM=\nR:nfs4.h\nZ:Q10Xu76mkt9jPoaP3TgTWnpbI6+Qs=\nR:nfs4_mount.h\nZ:Q1170vjRDu27Q8in63FHdRtsP0dVs=\nR:nfs_fs.h\nZ:Q13vC9dCmuY4s3jM0CbEBswwfPf70=\nR:nfs_idmap.h\nZ:Q1pjMLmyxcCsMulbjpGbTaOwkJAqo=\nR:nfs_mount.h\nZ:Q1ToOzQqmZ1TSi0bukKuyL4lUEiQs=\nR:nfsacl.h\nZ:Q1KDbym7wKYcDkbC2gyt0lMcPz1IM=\nR:nilfs2_api.h\nZ:Q1Zj//DRsTOHFYegi0ztKqk4e6KJQ=\nR:nilfs2_ondisk.h\nZ:Q18SDFoDCmS+KeUI8E7adpqEd0vWI=\nR:nitro_enclaves.h\nZ:Q1d5rlzHpxdK0CNWGl05cbOStKko4=\nR:nl80211-vnd-intel.h\nZ:Q1hHxrHihEv/7h5SVMCIpriwuSTMk=\nR:nl80211.h\nZ:Q1Dy61PYMsuS3gq/34WZDjdxKYExY=\nR:nsfs.h\nZ:Q1lRlnGPzbdLYBmMr3oktLpq4Cw58=\nR:nubus.h\nZ:Q13HjulM8M92Df+oLVq/lbscNWeqc=\nR:nvme_ioctl.h\nZ:Q1WcEjaD3xy/0vSXLPCcftfw6tjz4=\nR:nvram.h\nZ:Q1T2R401NuFe9ORA9AxK5k3YkxkHY=\nR:omap3isp.h\nZ:Q1qg+SVOSEuKTPIzyVJewmBpzvxVM=\nR:omapfb.h\nZ:Q1iGTSagtT9+f66fbsonjMkQJ4fWU=\nR:oom.h\nZ:Q1aFkdkXul6kf4oUKS+bAG0CiPxcI=\nR:openat2.h\nZ:Q1A8LqvVc3oye9iiKwfhYbd4qVpSk=\nR:openvswitch.h\nZ:Q1lAP8khetlXk872CYcr6wuNh7ui4=\nR:packet_diag.h\nZ:Q1C7XvoH5feUjbWVDaRO/VHiLjOgE=\nR:param.h\nZ:Q1Fg6ABo26HFdv6NcUTHD2nv0wdxs=\nR:parport.h\nZ:Q1Gzc0eR6aUk1JTmKCcat2LPGuFC8=\nR:patchkey.h\nZ:Q1SO8VeVdyWszX8i74iJ+8NV+j+yg=\nR:pci.h\nZ:Q1rBz1oKPuZ3RtWDzECQZcJWQKmns=\nR:pci_regs.h\nZ:Q11YvpbkoiQAJE0c5QOc1bKFXhuSk=\nR:pcitest.h\nZ:Q15205KrHQBIpFWl/pBWy3aLNbQig=\nR:perf_event.h\nZ:Q1lk0r3Guy4rxtwuzqu6/6rYZMJK0=\nR:personality.h\nZ:Q1lzgmg0dTm1SUmUNJKQPPf3qW/M8=\nR:pfkeyv2.h\nZ:Q1vyIvrTH1uIk6R5J+Bk0vGO1Ku2I=\nR:pg.h\nZ:Q10HI4gEJ4v3C0bL68Wc7Tq5Pc3Ys=\nR:phantom.h\nZ:Q1Ujk9t3bDxtSSucT3EqOGcH51iqQ=\nR:phonet.h\nZ:Q1lkOc1ar3tcgXgKyA0z8PqA8IaPU=\nR:pidfd.h\nZ:Q1siNGSCqJ7CvMpQ4aTekFVNh7le0=\nR:pkt_cls.h\nZ:Q1G2eQ9BvTYq6+BpYjB68zOI6Kajg=\nR:pkt_sched.h\nZ:Q1j+h6zuIUmx4RAPk3zXMXqdktqZA=\nR:pktcdvd.h\nZ:Q1bCUIbBxCTOJffBDIcySZ5ECNRNg=\nR:pmu.h\nZ:Q1sSpqZ9JSaAPJ9g4CEZB43B4Nn8E=\nR:poll.h\nZ:Q150iBqkA5wjFVZqAtXTBR80PObPU=\nR:posix_acl.h\nZ:Q17IQmCRvAmvJTSdXBjL9iqRiqNXc=\nR:posix_acl_xattr.h\nZ:Q1rdYqo8iCYMsl9WzymfNQaBrHcZM=\nR:posix_types.h\nZ:Q1kKUqx70buSjSFS6JeG/N+A5n/YU=\nR:ppdev.h\nZ:Q1Ky5A1sgKHenGLwBwFs6MFdLPeHQ=\nR:ppp-comp.h\nZ:Q1H9TKj4cHwz5Jby6VksEHGf4cWMo=\nR:ppp-ioctl.h\nZ:Q1qVi8Xp5fqYRWZ+9K/+EUDpK7Kbk=\nR:ppp_defs.h\nZ:Q1nAUWTVAoFDdG9+D4pNJ0ruVJick=\nR:pps.h\nZ:Q1vR2GQo46aYiBDukzif15vjQzSc8=\nR:pr.h\nZ:Q1KVNcpOCI3n7QYa9LNPvzcTTQako=\nR:prctl.h\nZ:Q1fzBdPl9Uc7ExcVnowlaW7G5azq0=\nR:psample.h\nZ:Q1X0Auylt8ohCHtF+OBOc0BlpyfU0=\nR:psci.h\nZ:Q1WSh32+UjCJHimum5HP1kzhfDy3I=\nR:psp-sev.h\nZ:Q1qZvDTpaXSxvyhlnRcTVt5jyieN8=\nR:ptp_clock.h\nZ:Q1sbaJgusP2Ov1paOmhcJkY/lZbDY=\nR:ptrace.h\nZ:Q1MsPWan1pnLir84WV9vOMmE+BBKM=\nR:qemu_fw_cfg.h\nZ:Q1GicaUNuA3FcEwdcPp2sO/rizNO4=\nR:qnx4_fs.h\nZ:Q1xc7BFxfhh0RCz74pBQNKrg2rXyg=\nR:qnxtypes.h\nZ:Q1E7asZAseORPSd73Mzj1yYIDt/QA=\nR:qrtr.h\nZ:Q1XP7y4C/LUh+dX/q/tF0rtdwWqds=\nR:quota.h\nZ:Q1PpfKyMfXb6AHSkvRScgtGdKV2Y4=\nR:radeonfb.h\nZ:Q13eKOMEgCvQioZZrzF42RJo1toq4=\nR:random.h\nZ:Q1hxkXb305tFCIlzZ5a0xBmodg85w=\nR:rds.h\nZ:Q1FZkDQVIIxoxnY2ayvSkzyIdel90=\nR:reboot.h\nZ:Q1eXerZbfe4lRev71Y6Sbw/wGOwdg=\nR:reiserfs_fs.h\nZ:Q1baiya1VKYmsK/uqTmVcTH/uclWU=\nR:reiserfs_xattr.h\nZ:Q1lj2marbSTfpIWmE79/QLxiBlfI8=\nR:remoteproc_cdev.h\nZ:Q1v8838Fb3pvtyJJpqafTxYMbu4No=\nR:resource.h\nZ:Q1qwWhNMAazdKM5qkpKACh3FS5FE4=\nR:rfkill.h\nZ:Q1NWQTOrDCc9DS1MaHtDG6RAr6SAg=\nR:rio_cm_cdev.h\nZ:Q1cG07gbekAb3wGaE2h5Aukbn36AI=\nR:rio_mport_cdev.h\nZ:Q1U1v726d64MlaGujp51gHmuKZYuM=\nR:rkisp1-config.h\nZ:Q1lC/nhkjGkmjnIhL9G5yVWoiJ+OY=\nR:romfs_fs.h\nZ:Q1jURw5fDY501j9Lknt1GoJ3fbDkY=\nR:rose.h\nZ:Q1JrLIrw1Po/o0dB9yoqc/tjH2f5Y=\nR:route.h\nZ:Q1xMkJgm4WwlTejEW2R65x77wj8u0=\nR:rpl.h\nZ:Q1mfaCptjxr630p34yiXfGZ703ONQ=\nR:rpl_iptunnel.h\nZ:Q1VUajAKpQ3e3LvBhlAcbrs3FXaXs=\nR:rpmsg.h\nZ:Q1UZ5uxQ3denXiMHi7xJefTw4frxw=\nR:rpmsg_types.h\nZ:Q1RI54pydqSouLx79TUQxu+zMChAo=\nR:rseq.h\nZ:Q1tLgqsssEQZgiV0PbEbwvWIQNDjg=\nR:rtc.h\nZ:Q1QM0fjwa5wvcXWvyWffln4EIwVOE=\nR:rtnetlink.h\nZ:Q1aUk15o/WcacSkxG4syhl7J1LWmw=\nR:rxrpc.h\nZ:Q1BBT+cvb6+foqRxnKK/4co/h6qc4=\nR:scc.h\nZ:Q1XKt7BWjZmyBVY2PDHHWkKxkzhqQ=\nR:sched.h\nZ:Q1dSniZ1LCyhxoqsyHfk2tHUbQHPA=\nR:scif_ioctl.h\nZ:Q1jI1i6B5krBKLlw3q7vuLeMLyDZ8=\nR:screen_info.h\nZ:Q1A9MUMF3PkSKxS+Gsosd7zi++7iQ=\nR:sctp.h\nZ:Q1QLI86gyMuirb2LPM7i2/e3LPn0w=\nR:seccomp.h\nZ:Q169UgXHyG6tIvFAjPLQqLgNPxPPw=\nR:securebits.h\nZ:Q103teX2PwExXxcqoQX+9XbeS3Trk=\nR:sed-opal.h\nZ:Q17cSOpqny52FDf/y6QSMQAao9Qz4=\nR:seg6.h\nZ:Q1AQ86TJSKNZKoGy+KmyX+GQEe+K4=\nR:seg6_genl.h\nZ:Q1UhoWTUE2L4d93cDBUHMEIWG8SOg=\nR:seg6_hmac.h\nZ:Q14dvCL7OJ9zzWycaLX3APidkDksM=\nR:seg6_iptunnel.h\nZ:Q1F6gN5f2GcEP+UKEl9X8BYGW/a78=\nR:seg6_local.h\nZ:Q10cEGOPWthFnZIE+TBPHTI8DjLSQ=\nR:selinux_netlink.h\nZ:Q1zJCw7aqJ3VBVwS08BSL+bTtR3mM=\nR:sem.h\nZ:Q1kThI5l3/4hJvCBPDyZ/6eQon6D8=\nR:serial.h\nZ:Q1Ufm8YBguqzcJra8AwFoCr3yw9pg=\nR:serial_core.h\nZ:Q1nNgrM4yIJI7GABfU0Na5lbUUKps=\nR:serial_reg.h\nZ:Q17kv6duPXN7Ptpwl8b6csbYVKtLI=\nR:serio.h\nZ:Q1/vdmtLI3MpePLH4SVT4uGokTMwQ=\nR:shm.h\nZ:Q1uyOICEVnxWrS47FPLDBzm3SEs3w=\nR:signal.h\nZ:Q1n5k/XO+5AQHQvrIBorpd4IO4xXw=\nR:signalfd.h\nZ:Q1mb2t1qJY6N2PR+/Lrz1rJm0osUo=\nR:smc.h\nZ:Q1XYmCb8tKMQX9xG8omdtbjm18MIk=\nR:smc_diag.h\nZ:Q1awQsgH5S3l/zWYvSyhhgslL6zGA=\nR:smiapp.h\nZ:Q1Y2fzk+En5gLwUvKtnAo93Bjq+fU=\nR:snmp.h\nZ:Q18ZAS1WwbXxqZcvD47PWXURJk0YA=\nR:sock_diag.h\nZ:Q1a77Xnidub6/A/OQNTogEc+zsIqI=\nR:socket.h\nZ:Q11CTuodTPAZDYpr/gYbk2gbfrLKk=\nR:sockios.h\nZ:Q1ihU05GDrTEebyjK7/r6wXHyiZag=\nR:sonet.h\nZ:Q1eoOAyqgUpAUCEvWCsThoZUuxF5Q=\nR:sonypi.h\nZ:Q1vawSdTWla3t4ljOO1Nw2LBhkTic=\nR:sound.h\nZ:Q1A2CyXIG/97xkoX5xyuY0iQ1khag=\nR:soundcard.h\nZ:Q1o4JGSmC3lQwVLS0SqOaYfi3iz+Q=\nR:stat.h\nZ:Q1Fn/gdLLpNO4Mag9CAfCZaROPDcM=\nR:stddef.h\nZ:Q1CeLZQMxCohvzooQrkBld1f4y7iM=\nR:stm.h\nZ:Q1m7nP4RxTWM30ji6NpCPVD5qLDdI=\nR:string.h\nZ:Q1vGFBWAuWrxTgRNA2rzs5ad5+dOY=\nR:suspend_ioctls.h\nZ:Q13eC1gwRf0A+eJbYI2uKCY2jOqJk=\nR:swab.h\nZ:Q19MBFqOZbXwPchgr9iOAky+L+jpQ=\nR:switchtec_ioctl.h\nZ:Q1fpQHioFel7jXNsa8Y+PdevTBdiQ=\nR:sync_file.h\nZ:Q1grvzEh1Novt9vW+VQLI2MmuqjnM=\nR:synclink.h\nZ:Q13t8UinVYMf5ZYj0PmRSYYWSnsj8=\nR:sysctl.h\nZ:Q1hBWzcbmtMi7HER7zbj3TOoczSXQ=\nR:sysinfo.h\nZ:Q15EszTcIkx+bHjTA9/OgeyNVH+n0=\nR:target_core_user.h\nZ:Q10zQmZ3Lp0P8FA64wYgwAvBOsKBM=\nR:taskstats.h\nZ:Q1y/MTju8FBKOU3UW1SYC+xtLTThI=\nR:tcp.h\nZ:Q1vHVjPC/xH8kmQnTx3q77vdAnYDk=\nR:tcp_metrics.h\nZ:Q1YzIcqFrYuCYYVezVlSesFsDC57w=\nR:tee.h\nZ:Q1N7kC8qzbyYPpBlpZ9K1cKoXrlsw=\nR:termios.h\nZ:Q1epCivqbemA7mfCP29kZpGXLo8ZE=\nR:thermal.h\nZ:Q1UvTUE+8UraKN66LTctz4ooQQUqk=\nR:time.h\nZ:Q18ahVzwDAE8OmOU6zghBb52Xi9Ms=\nR:time_types.h\nZ:Q1mUvcpwCqZc7cKgHyxh5gc/vJ0wo=\nR:timerfd.h\nZ:Q10r4NguNONQXO22D/RClwK6ycGTs=\nR:times.h\nZ:Q1XkWeihGh/MhWV8Pq4CO3Pet1Was=\nR:timex.h\nZ:Q1IMEoQTUEV6SeC6Q0j2vkh/nYpg4=\nR:tiocl.h\nZ:Q18t5qHPLwePpk6zTKvYkm8dkumq4=\nR:tipc.h\nZ:Q1rqrFCr9SFE+evWsuuTJ3RHEHyis=\nR:tipc_config.h\nZ:Q1JF5JaLgCig42XArPCR0WgP3y7n4=\nR:tipc_netlink.h\nZ:Q1xOzN0nKkAdkaAztkZ55gp9SyHzM=\nR:tipc_sockets_diag.h\nZ:Q14xq4esZceyPhs/8XKDUFhwxopqQ=\nR:tls.h\nZ:Q1s2BKnQFojJSgO2+hwF/LAFojNWQ=\nR:toshiba.h\nZ:Q1/5Ld21D+/RPMQrzfDgS+YBL+dyE=\nR:tty.h\nZ:Q1uxwCFsz3usuPAsoJP7prOyFIi2A=\nR:tty_flags.h\nZ:Q1LaZmgMQsIwHSWFXOWmM0vZsM7dE=\nR:types.h\nZ:Q1tu8vyI//gyWoa0lBqEkplgxLf3c=\nR:udf_fs_i.h\nZ:Q16OSLRqLyu+dSbobB+nQRt3RcmJE=\nR:udmabuf.h\nZ:Q1D0BG10bxZ0IrtGUhRerKn5i5+LA=\nR:udp.h\nZ:Q1/V0laS6yhmKlry5ZGLniX8wZu9M=\nR:uhid.h\nZ:Q1p0GYVzaeieeffuNYc/PkpDS8oaw=\nR:uinput.h\nZ:Q1p0+4jPIOU5wpM2rjaSruraSLs9g=\nR:uio.h\nZ:Q1p4/GjOneIMee0Zyvg5xRfOjNiSI=\nR:uleds.h\nZ:Q1KPnexbf4z7XQ9nPAVfunA/a6+R0=\nR:ultrasound.h\nZ:Q1xFqhVbedGPMf6yyN4AK2qhvp6pc=\nR:um_timetravel.h\nZ:Q1fYtV1t6t4yRad/rjLOFzYxiKGDk=\nR:un.h\nZ:Q1FCqzDEzLO4BydGdIUvShY/znedU=\nR:unistd.h\nZ:Q1ipgGnC3cvokzENfQw05hsZmkm0M=\nR:unix_diag.h\nZ:Q19U1Cd2oTSkjsgDoPRayM9nmqw7A=\nR:usbdevice_fs.h\nZ:Q1fQ/hggS5I3eNNkiGR92Kdi1T7Ks=\nR:usbip.h\nZ:Q1sHoW6/bM9vK9C057W68DdARcC28=\nR:userfaultfd.h\nZ:Q1vI0twUp3GXZeoeBtgpxTKIg6/u0=\nR:userio.h\nZ:Q12rOa9C8zktBHirTJF5OF6a0KP0c=\nR:utime.h\nZ:Q1tzRXPs9Q4IlvqQomEsIRbMr92WQ=\nR:utsname.h\nZ:Q1mQDzbsgkZQ5gb/kVVI7kl/YWpE4=\nR:uuid.h\nZ:Q1s76FhUOgr/kOa3RlwcPtJBCXR4Q=\nR:uvcvideo.h\nZ:Q1pTBgg2iTd9P/amLf5VjLU0mVes4=\nR:v4l2-common.h\nZ:Q1/oR1lbsgJQGlZwKnxgLwUU0jwyg=\nR:v4l2-controls.h\nZ:Q1Sm5v4SHzFwebrhi5ICcvkeszk9E=\nR:v4l2-dv-timings.h\nZ:Q1HFHAEk/R8wr22X3x52mylijUx1o=\nR:v4l2-mediabus.h\nZ:Q1a7HKepan1wjAaqevjmAn9XU2LiU=\nR:v4l2-subdev.h\nZ:Q1GmYpv0Bv0fKP+vsYpr/jINi2k4Q=\nR:vbox_err.h\nZ:Q1uhhh2CQWCjkfVvOLLK20LZp1j8k=\nR:vbox_vmmdev_types.h\nZ:Q1hsYQ67MoJDI30+mYfBNrjzLJjPw=\nR:vboxguest.h\nZ:Q1bS9JEdmFiGAu8ref1ktv3zRlrAQ=\nR:vdpa.h\nZ:Q1PCErVXTZBsoG1F/+pUwIhevCfqA=\nR:vduse.h\nZ:Q1VXqsmBSXyfijwuy4NbC/4xPRDIU=\nR:version.h\nZ:Q1o+YqG89DbVtrn6QBup6n++z7XeU=\nR:veth.h\nZ:Q1xxM2I7noFQ0WKjLL/8NnyRMesvw=\nR:vfio.h\nZ:Q1UhrHE9bQKsvVDKVVBFAd37RYJoo=\nR:vfio_ccw.h\nZ:Q1jU/R4TiJzgrKK6wFBZwmCI0+lNI=\nR:vfio_zdev.h\nZ:Q14FBrTXl6PctEFVpQRjrhjXpRxHI=\nR:vhost.h\nZ:Q1XsVLoQ4GET+bgUdRlClV5UyRPtg=\nR:vhost_types.h\nZ:Q1jnrzRAeBAPX3l3eBc/z0ep/GmIY=\nR:videodev2.h\nZ:Q1eCJEbtD8CBwuximIMtQBSVf9YWk=\nR:virtio_9p.h\nZ:Q1huseIjEMB7Enir/lc9d32T5rCRA=\nR:virtio_balloon.h\nZ:Q1rknN7FBJbdGoLmUvTzPBlTcjl44=\nR:virtio_blk.h\nZ:Q1NjOrc0fhXQ5l4majlOUu6zF9EN0=\nR:virtio_bt.h\nZ:Q1RRWFe7FF84OMlSp932T/nmtDoDc=\nR:virtio_config.h\nZ:Q1ogXISPRNRSTs8LQ/lQwSXFXgwkA=\nR:virtio_console.h\nZ:Q1Ao6hrXC8rYi/7JXrz6mxxDS/FY8=\nR:virtio_crypto.h\nZ:Q1yYWvKuRmxv0EgjA1qh61ILDpHcw=\nR:virtio_fs.h\nZ:Q1LFre4Ih+TeyMNoN/nPGUwAMxmqY=\nR:virtio_gpio.h\nZ:Q1QnFVrNb3QLEPi4AU2/mF61BpGQw=\nR:virtio_gpu.h\nZ:Q17UWhXerm3XmS1Ml8pO3NBWjblAU=\nR:virtio_i2c.h\nZ:Q1+2TZc7lD2erwoBNChrJGtVl+bB4=\nR:virtio_ids.h\nZ:Q1KOE0sNzwt6irOgVBkmfNbjar+Qk=\nR:virtio_input.h\nZ:Q1SNmnCpjyILmDqP2jRLU50tumJdw=\nR:virtio_iommu.h\nZ:Q1d34z04JnQghBHVnZYx5o60p6llU=\nR:virtio_mem.h\nZ:Q1d0BTLti+dndJA36ESCSkfQuETs8=\nR:virtio_mmio.h\nZ:Q1n+XJ5C0yB4ZSyLP+G8KMHYnpJow=\nR:virtio_net.h\nZ:Q1d3IyOWCP+nJDiP6zCZfoVtgeOBA=\nR:virtio_pci.h\nZ:Q1jmKyw9L3bEUIuU/OjwYxRecEdlY=\nR:virtio_pcidev.h\nZ:Q1W48Db/EbKyVZ/OiNsy0OI8WCuz0=\nR:virtio_pmem.h\nZ:Q19lZwbkaIWST7bHXnUIYJWdKGquI=\nR:virtio_ring.h\nZ:Q1qhECkXRGuRAWl2fUyBtM4djx8v4=\nR:virtio_rng.h\nZ:Q1aykMqYipm77xFZS1YqD35bj8fgs=\nR:virtio_scmi.h\nZ:Q1OeR4v0s5fn1ASMAt2ovN3dgKBXQ=\nR:virtio_scsi.h\nZ:Q16uMY+i83J7QoLVt2iYqQMGi0+PU=\nR:virtio_snd.h\nZ:Q1xD75OqAsWJOnX1MEJw4HPe8pgAA=\nR:virtio_types.h\nZ:Q1Pn/LmhLIf0GSg54ohnUxX4UX3XU=\nR:virtio_vsock.h\nZ:Q1ITE8qkdU1BXWeggCnDMptbG5Ybo=\nR:vm_sockets.h\nZ:Q1URB9k0lKpajk/28GOsWVIbsRC8c=\nR:vm_sockets_diag.h\nZ:Q1g9hLckPm7IJ+qhWJq1MFp3AdO8o=\nR:vmcore.h\nZ:Q1rx4PgKaPZ8sc+iMlqFMpTchJAZ4=\nR:vsockmon.h\nZ:Q1Ztg18iJkqZ+/xGGF/wlTzDdCEvM=\nR:vt.h\nZ:Q1cR57a3ppR4MCO+3HypGQKfIPuBU=\nR:vtpm_proxy.h\nZ:Q1218BLW0al/RIe0I94m/8lBHvYis=\nR:wait.h\nZ:Q1fKXU01sHohtioCUYJM7nf4eOXhI=\nR:watch_queue.h\nZ:Q14vJqxzJbGWceXcVWwI+LVxz5rFU=\nR:watchdog.h\nZ:Q115WmGFf4nHfOhYKlmg7IiAse3UY=\nR:wireguard.h\nZ:Q1eTpz/57jmzRtnoOuDw8TVkRQLT4=\nR:wireless.h\nZ:Q1DbZ/JXYA1ZcihJ1DfdYsbMtI3r8=\nR:wmi.h\nZ:Q1gsDXLEQuMu8TQZJURO3QPawb2lg=\nR:wwan.h\nZ:Q1/E3B304u+GlybXt4jQIB7Xnvi0w=\nR:x25.h\nZ:Q16Z+zvSPkHdULgrFf7eSwDfxcQpc=\nR:xattr.h\nZ:Q156U1RHz4cTqQUnqkFMV0sm8+bL4=\nR:xdp_diag.h\nZ:Q1InHzvXurth6N8pyCunMkSUNuyEE=\nR:xfrm.h\nZ:Q1H4VAtdwbNoe1TEeAi684ADJxKDY=\nR:xilinx-v4l2-controls.h\nZ:Q1uEKjhs/pFuRjI6nhyBxy5XagmZs=\nR:zorro.h\nZ:Q1vX/fkKFklkFE0TVCawpjuOzdhiQ=\nR:zorro_ids.h\nZ:Q1cNoqbY0a12PJxXWJQqMiB9iOfy4=\nF:usr/include/linux/android\nR:binder.h\nZ:Q1Zy37XYY0KRD+h6ZPus9vPplP1S0=\nR:binderfs.h\nZ:Q18wHqyBYR99kjZjM/3L+KdJl1lVM=\nF:usr/include/linux/byteorder\nR:big_endian.h\nZ:Q1Iowv52WNumKR/IQF91OSz3XjGcg=\nR:little_endian.h\nZ:Q10bSJiv1lAhs4FRbB4lQL+91zovk=\nF:usr/include/linux/caif\nR:caif_socket.h\nZ:Q1BhW3wxK8SK+Q2XIua0GAONg4Moc=\nR:if_caif.h\nZ:Q1EYsDvXzb+AAPydz18QqMHnGxzEM=\nF:usr/include/linux/can\nR:bcm.h\nZ:Q1HcEldlDxdOBdQIqg+vctBT4akM4=\nR:error.h\nZ:Q1xe+/FYeZ9QrJVaoJ6R5eUh+BV40=\nR:gw.h\nZ:Q1wS6rr+91QEg5go0V7AxnBX4TVhQ=\nR:isotp.h\nZ:Q1Bq+tuOM0TqGwDf8hEWl2EnYHgyY=\nR:j1939.h\nZ:Q1SHqXNPBJQm8ZcETQicutu4o/PyI=\nR:netlink.h\nZ:Q1JmYUtyB5vcM37IvcGLt8IFYuepE=\nR:raw.h\nZ:Q1wGlLMcdBdbLsIIJFUzf/OC1jIIs=\nR:vxcan.h\nZ:Q1wybAljMii38k5KMFFVdJpAjLx0Y=\nF:usr/include/linux/cifs\nR:cifs_mount.h\nZ:Q1g3hm/mIW6SPs8U4j62WnusfQEnQ=\nR:cifs_netlink.h\nZ:Q1Yyt+gsR+Y5LZ8T9HEe1EDl2mTik=\nF:usr/include/linux/dvb\nR:audio.h\nZ:Q1ZGWqAvqnTD4NZyCK+U4aZ65v7Cs=\nR:ca.h\nZ:Q1L4hyZsiFUqcpwKPGEeLl9P5/Cro=\nR:dmx.h\nZ:Q1sJbABRrErnqP1F3CXLFGnwvwelw=\nR:frontend.h\nZ:Q1S4kqzSznfAYLUM9n9fr53Jt27bs=\nR:net.h\nZ:Q1/nlsWdtn+nllGwQTPqOrI4aYem8=\nR:osd.h\nZ:Q1aBeK2C/DbT4NHMNfo2KGEwkmu1A=\nR:version.h\nZ:Q1+/sAgRMmxo5IlFBImFwsQjWESKY=\nR:video.h\nZ:Q1mbJ05LG4BYxZya1hYjf+XEDdEPo=\nF:usr/include/linux/genwqe\nR:genwqe_card.h\nZ:Q1KHEEX9ig8vkQhqjLr4nFWF3DQr8=\nF:usr/include/linux/hdlc\nR:ioctl.h\nZ:Q1mjuXG54wiRrgRqgxZHx0uq0VMyU=\nF:usr/include/linux/hsi\nR:cs-protocol.h\nZ:Q1r3J0d3v+0s9sixNrsqNL88TDluA=\nR:hsi_char.h\nZ:Q15ZrirmhBma2WdmCNzpEs+zzvbqk=\nF:usr/include/linux/iio\nR:buffer.h\nZ:Q1sGjSeUeM56DEFIXrJts9rLEdlYg=\nR:events.h\nZ:Q1QLwDMe+5VX4U4Xz1SzzFDmpuMRc=\nR:types.h\nZ:Q1PtdXGs4o0ZIsTA1mO80zyQzbzSY=\nF:usr/include/linux/isdn\nR:capicmd.h\nZ:Q1vN1Xy3R4Zarw84+m0p6Z++BpHcY=\nF:usr/include/linux/misc\nR:bcm_vk.h\nZ:Q13Cd0BFUI7SrPqTKe7wdYl5eGoDs=\nF:usr/include/linux/mmc\nR:ioctl.h\nZ:Q1qOvQ971AGhsVSVo0pSTw6hMM8bY=\nF:usr/include/linux/netfilter\nR:nf_conntrack_common.h\nZ:Q11XBRR2iqRjZNPtztnxdKvphtjCQ=\nR:nf_conntrack_ftp.h\nZ:Q1nTZWez2jyxsK/fsFutbfBbAqo7M=\nR:nf_conntrack_sctp.h\nZ:Q1u11o3mLalM6pmDZnemLHuPgQ44c=\nR:nf_conntrack_tcp.h\nZ:Q1TZDeMPDVVZ1FP9K7G6l+F2HaQMY=\nR:nf_conntrack_tuple_common.h\nZ:Q1Y9l69sYqQ8ePyD9L3QX2QEGiMVA=\nR:nf_log.h\nZ:Q1LmcSiB7fmmMKiALeucpGfgSirvc=\nR:nf_nat.h\nZ:Q12Adi65fZYtG30PsLVeWunNRmVRI=\nR:nf_synproxy.h\nZ:Q1jVSAeSHr1I7xn+JEC4RdOWzNiG0=\nR:nf_tables.h\nZ:Q1VYTnMFjvr+x+p3RrZYLaowfekIE=\nR:nf_tables_compat.h\nZ:Q1o9RfZ3vmvQgiQ3UC5Pkz9XYXwlA=\nR:nfnetlink.h\nZ:Q1u1lP3T+a7gZ/MoDd3RZZtc6FioI=\nR:nfnetlink_acct.h\nZ:Q16oZLPZjJhdd9n/seGHxTpAcYCi0=\nR:nfnetlink_compat.h\nZ:Q11kiL61rumbDqni06ANzJhXHWHBo=\nR:nfnetlink_conntrack.h\nZ:Q14RXwo9G99NQAuShRx2uBDpEQWUY=\nR:nfnetlink_cthelper.h\nZ:Q1iO0t7z3PiEDvXeeU0xtOvfKeMAo=\nR:nfnetlink_cttimeout.h\nZ:Q1/NdbbK/AAJiSbwTHzeKcHigJcpM=\nR:nfnetlink_hook.h\nZ:Q1p87WZ6N0d1W/3Pcy2G2p6x/5mHc=\nR:nfnetlink_log.h\nZ:Q1cipkCTvF3rMzc3q0UvRxM0/y7DY=\nR:nfnetlink_osf.h\nZ:Q1HZ/UD4wg15OwzMCx/5+xHjx12iY=\nR:nfnetlink_queue.h\nZ:Q16jBSWUP7l3wRGRTDiiOl2xaJSmE=\nR:x_tables.h\nZ:Q1PLkoImQy6+DoN+mNSP7OLuZLAY8=\nR:xt_AUDIT.h\nZ:Q1W4F8pkyI7WCyTlu9wbdz9J3DeZw=\nR:xt_CHECKSUM.h\nZ:Q1EAeqiZcJRi53i0ZEd3n5/5Sd6Dg=\nR:xt_CLASSIFY.h\nZ:Q1nKV0PJ59ZVSheEKDyKYCuHC9heE=\nR:xt_CONNMARK.h\nZ:Q1ySjPlkmsBarGd3ts+R0zHr2aAbc=\nR:xt_CONNSECMARK.h\nZ:Q16nGG0haKUwJvft/qrSoMYXXM9Fo=\nR:xt_CT.h\nZ:Q166EZwFTxv6G1mguTaJ/Hji2GhQc=\nR:xt_DSCP.h\nZ:Q1DWoU/XNPtbgBGKtQsAsc10AABWA=\nR:xt_HMARK.h\nZ:Q12qAxDhcAIjnT1fgJDk4yYO76C0c=\nR:xt_IDLETIMER.h\nZ:Q1+8qKtVgszCK224ECdazY9ERBW9o=\nR:xt_LED.h\nZ:Q1FwW0fSLah0FCvR0aau5qNRqr4e4=\nR:xt_LOG.h\nZ:Q1rznJqulGnI4SuF6anIyccNB1ZOU=\nR:xt_MARK.h\nZ:Q1aj64rYEDpO8/jKcNap1G8ds/pS0=\nR:xt_NFLOG.h\nZ:Q1m4Ars2Pxi2XdAs7z6IRDxAXlgo4=\nR:xt_NFQUEUE.h\nZ:Q1xg+aHyBD0VW2XhoYVPXnf81c/pw=\nR:xt_RATEEST.h\nZ:Q1CS2zN6detQNhj5Z1Cvcp9CPoTU8=\nR:xt_SECMARK.h\nZ:Q1IBOKla3bpl1rtBzS83UaXto0M/8=\nR:xt_SYNPROXY.h\nZ:Q1siyscE4esofzFv0RsDG0AOXq3HQ=\nR:xt_TCPMSS.h\nZ:Q1rEj2DvljqNOwqios0xHihvAnECg=\nR:xt_TCPOPTSTRIP.h\nZ:Q1oovMpYmexo8XPSP5m/eS0Lhrk6c=\nR:xt_TEE.h\nZ:Q1HoibNo8FSA8R6E24eol+YGw2af8=\nR:xt_TPROXY.h\nZ:Q1mze5v7bgmX7VRhCU9rDw3RKnjwI=\nR:xt_addrtype.h\nZ:Q1Mo4gF+4z9H6oyTHjp6iBTXiCMUU=\nR:xt_bpf.h\nZ:Q10qxLxaHJiQJ50oVBMeBZgneVrdI=\nR:xt_cgroup.h\nZ:Q19k1Umx6Gpgfzyl4nHagF7Xrzdnw=\nR:xt_cluster.h\nZ:Q1IzkGizuBAuZ6VhJHhwiUxWC2SQ0=\nR:xt_comment.h\nZ:Q1dgbE0qlLFijiVefLdnbdazX2hlM=\nR:xt_connbytes.h\nZ:Q1BVJfSHslkUjn/LhSAu46R43D+ww=\nR:xt_connlabel.h\nZ:Q1Dct8M26lBb/ZCa8So8y8O4QVj5I=\nR:xt_connlimit.h\nZ:Q1fLXL+DfuPUABBg5IDwwTujf7Ums=\nR:xt_connmark.h\nZ:Q1RrAYiLt/vwu4yTzUusjjb432uBo=\nR:xt_conntrack.h\nZ:Q1wdYBPuy4k1jdTGYyDggZfKd2eNE=\nR:xt_cpu.h\nZ:Q1KZ4QF533mF9O7EjeOc8tVrohImA=\nR:xt_dccp.h\nZ:Q135JYFHvvqkGjbkWnopz87qPEa0w=\nR:xt_devgroup.h\nZ:Q1YWpe4Wab7v952xpEFBE6wL73Fbk=\nR:xt_dscp.h\nZ:Q13EkkLI+MPSnp+Dxxwi7hiswMavQ=\nR:xt_ecn.h\nZ:Q1f7kpTWiUQwRbVeiEvyd1zF6M+BE=\nR:xt_esp.h\nZ:Q13RY8S21cDKmpVV146+aW3aVLwBc=\nR:xt_hashlimit.h\nZ:Q1hfS98CEhEQL4M15m9N7dUDbZ15A=\nR:xt_helper.h\nZ:Q1oTP/3QskFV0i/IOCOKhHPJ1ZsAk=\nR:xt_ipcomp.h\nZ:Q1yFJDjWguUrAIABtQ4B1NXfeJbUw=\nR:xt_iprange.h\nZ:Q1zasfKFS7cN3iiI6e5N9nSP6tU0o=\nR:xt_ipvs.h\nZ:Q1FHvzQvyJAMcB8kPpxpF0B+JQ1n0=\nR:xt_l2tp.h\nZ:Q1h3S9YG/Dt4wUOUjXReEZlmtK6XQ=\nR:xt_length.h\nZ:Q1J0kS/eX32pow67ORaNLJw8DNlhU=\nR:xt_limit.h\nZ:Q1PVgg2WoY0EtyaadyRIxxBVYBx2o=\nR:xt_mac.h\nZ:Q14UthnobA8bhYHlL9F2beMxnaf+0=\nR:xt_mark.h\nZ:Q1pSU0QyKNNr0Sp998K20mOjuX+mg=\nR:xt_multiport.h\nZ:Q10l9ndJnNn/Oup0pzoMPcNWSnScQ=\nR:xt_nfacct.h\nZ:Q1rWxmkFPzi84oZOU4qGvzPxhEu4w=\nR:xt_osf.h\nZ:Q13y53auvv4DuEkIu0NYt+XWdKLro=\nR:xt_owner.h\nZ:Q1i734RkZx6kHq1k98e49jJjGqXZA=\nR:xt_physdev.h\nZ:Q1zwSsCe+fhC+dkiPeynXWtwOhzRs=\nR:xt_pkttype.h\nZ:Q1a//UMrG770C50LxKvCQ/M2rYsDs=\nR:xt_policy.h\nZ:Q1la66UJujTspz+TaN/SV44EsBOEg=\nR:xt_quota.h\nZ:Q1wy1p261OcTA0yB4jj2Mm+puJlKE=\nR:xt_rateest.h\nZ:Q1I7Z3RIq7Ul7Y3fsBf29s55MyaV0=\nR:xt_realm.h\nZ:Q1jyxXwcmJWZG9hUdWXu1sYmbn91A=\nR:xt_recent.h\nZ:Q1s9X5GkJzDCl1I5gag4Shx+JGpuk=\nR:xt_rpfilter.h\nZ:Q1PG6v8Dio6utCtlc510NG/JsJoVQ=\nR:xt_sctp.h\nZ:Q1EfzPXd6YR6Y4/AYqfsgW6ka8qCs=\nR:xt_set.h\nZ:Q1Ow86SA017Qe6VlcT6k3B4fH3sbE=\nR:xt_socket.h\nZ:Q1W8vPK3GhaD/0bmZ98UvpNMCM6Sg=\nR:xt_state.h\nZ:Q1ZHo0Rc1CA99qFXkB6w7XCHjqrzo=\nR:xt_statistic.h\nZ:Q1YZ/HpTnrn93mouzFPqOmciSW3Vw=\nR:xt_string.h\nZ:Q1C7kXzg3y5X4KNwzWqplBtqQvkrc=\nR:xt_tcpmss.h\nZ:Q12AtLNDTgfN1FfUTqU4zaQ5kD/MQ=\nR:xt_tcpudp.h\nZ:Q1S5s6EyvXIyfbEgveavNR8yoQyUs=\nR:xt_time.h\nZ:Q1IdC0KxThsezRhlI43bPO2E12y+U=\nR:xt_u32.h\nZ:Q1WX0xS3pDWKobkiLDnWuyB/HTLxQ=\nF:usr/include/linux/netfilter/ipset\nR:ip_set.h\nZ:Q10EFNcB3mlU6zpAgvrynO41vi3/4=\nR:ip_set_bitmap.h\nZ:Q16FwcOpw1y86zXp0C86i3wuP96Lw=\nR:ip_set_hash.h\nZ:Q1K+gvjfoYalE9AOz+10j+hNrE2UY=\nR:ip_set_list.h\nZ:Q1LNCXlnHfb+LDlV4odGTsU0dNn+U=\nF:usr/include/linux/netfilter_arp\nR:arp_tables.h\nZ:Q1DLT6Uymp0L8YVns0b7l7vHD579c=\nR:arpt_mangle.h\nZ:Q1uCFSO6EfXMWIoymavuq9Leo4uQA=\nF:usr/include/linux/netfilter_bridge\nR:ebt_802_3.h\nZ:Q1pnJ3E8uZgScVdvDTLkj0QGLFK7Q=\nR:ebt_among.h\nZ:Q11oMqDaf2amIddWtjFjXn1rdeteg=\nR:ebt_arp.h\nZ:Q1WCEULYC3jQAIeCXci3v4OmqScZs=\nR:ebt_arpreply.h\nZ:Q1fDrDKfdZiVmcAbIZpCdKGqrZPAs=\nR:ebt_ip.h\nZ:Q1GSQex/f2a6t5oBCPYCN0geWFOSs=\nR:ebt_ip6.h\nZ:Q1EiN/nYL1PhED4OEpOvHa651mCDQ=\nR:ebt_limit.h\nZ:Q1HpJwLmp/4k2y9+WnnfMQ4nWzxXw=\nR:ebt_log.h\nZ:Q1eBYXAHEYdwCgLPIBxIOMNSrM8Fo=\nR:ebt_mark_m.h\nZ:Q1db+93onH7ULIy7v0m5zFFI7y+Do=\nR:ebt_mark_t.h\nZ:Q1KnFbqq1z0SCESoq5dROLz/aBfNQ=\nR:ebt_nat.h\nZ:Q1fqy0Mi9H+86cnYKJNRKlTKWaqWc=\nR:ebt_nflog.h\nZ:Q1Cflwd9VmwxHTzcknMuyS8/SmGa4=\nR:ebt_pkttype.h\nZ:Q1H6lV4PXKpZbt60KM3JpayiMFzUw=\nR:ebt_redirect.h\nZ:Q18h1g5P/OnqdPJNk91B5oxfHZkdw=\nR:ebt_stp.h\nZ:Q1eRLCEo2IjzFgdvN8G6dC7k8u3FU=\nR:ebt_vlan.h\nZ:Q1bnsw8T81y5SGdmD3PXMJKDb9FVI=\nR:ebtables.h\nZ:Q15cWBqExZS9fqNxoh5sf2pBfbfpY=\nF:usr/include/linux/netfilter_ipv4\nR:ip_tables.h\nZ:Q1p+5b9Pr55Rsuy0jkvuUV7IvSjIw=\nR:ipt_CLUSTERIP.h\nZ:Q1sDYZGfJEjufeg8qrPKclHhlCx5Y=\nR:ipt_ECN.h\nZ:Q1fSuG+eIJlA3edDxGXOWrzFxr97o=\nR:ipt_LOG.h\nZ:Q1JetrJ4FfWSZoOc4CX91HgjTrXzA=\nR:ipt_REJECT.h\nZ:Q1o8jzxfqqOB3d+KonuCnd25hcdpE=\nR:ipt_TTL.h\nZ:Q1616teRcaGHUZS6JFGNhyrqtON5o=\nR:ipt_ah.h\nZ:Q1id6RmaDy7yhuoytzaJwOw/9Tzwg=\nR:ipt_ecn.h\nZ:Q1K0jMzhK/dXIUr2xM7CUVkL3jdKQ=\nR:ipt_ttl.h\nZ:Q1uskAr0pGT/x450UH2zqnwUI3wIc=\nF:usr/include/linux/netfilter_ipv6\nR:ip6_tables.h\nZ:Q1wp0Hnr+amaboa+1zn6uzvpq3+tg=\nR:ip6t_HL.h\nZ:Q1UVRNV5pfj5APi/0kX/um5ZUfuNo=\nR:ip6t_LOG.h\nZ:Q1xQnUSs0c1Cf0zG5q2Z8aYWsU97s=\nR:ip6t_NPT.h\nZ:Q1+B+h/UtTdGlFI/ZEuRgiDLWJ01w=\nR:ip6t_REJECT.h\nZ:Q1o8pUumIJIAb1fi+12YTuE3K7WnM=\nR:ip6t_ah.h\nZ:Q1lmwnHa+6V/q4yjr9Zeg99Y6ojRI=\nR:ip6t_frag.h\nZ:Q1RUSH4P9kkE2H8vQiUO6kGt04pz4=\nR:ip6t_hl.h\nZ:Q1GBOkDvRwl5TrHUXahyvLwwBf4Cw=\nR:ip6t_ipv6header.h\nZ:Q1G/1AeqkeFmkdG5XqzV9f4LmD1LY=\nR:ip6t_mh.h\nZ:Q1mNtdrQwQ2YdsLqo1I7lt2PRa4fU=\nR:ip6t_opts.h\nZ:Q1r6yqg7HrS3d7NpJNfynTfe3ut/Y=\nR:ip6t_rt.h\nZ:Q1KLplnpxERat4xrAgH6VDPi7/qSs=\nR:ip6t_srh.h\nZ:Q1TpMW7sn9t59YGA+FpCyKnZKCKa8=\nF:usr/include/linux/nfsd\nR:cld.h\nZ:Q1tSpCWTZIxvJE8+Opbsb4ByRnC7Q=\nR:debug.h\nZ:Q1kRkbVKbXHjymqQYTcfmMFMOjP7s=\nR:export.h\nZ:Q1uqkfnp15UW0D4TpugzZwRtNIm1Y=\nR:stats.h\nZ:Q1ATcArqFeVkGz//kNtuFAoZ8s8Iw=\nF:usr/include/linux/raid\nR:md_p.h\nZ:Q1ep6Z9Ft0grUS0MclQ/23EJXNhXE=\nR:md_u.h\nZ:Q1D1g+EGMARe7QS7ABbdin+VK4viw=\nF:usr/include/linux/sched\nR:types.h\nZ:Q18rXEedghTQAI0edq4TzkIkrs6mw=\nF:usr/include/linux/spi\nR:spi.h\nZ:Q1k/x3DTDVsug1RUojTDIClIrHm7w=\nR:spidev.h\nZ:Q1Iy/jhYsgaRx41q2zwYECCrNFKG4=\nF:usr/include/linux/sunrpc\nR:debug.h\nZ:Q1BeldbxEgAjIbMPrx+mj/UafAJEQ=\nF:usr/include/linux/surface_aggregator\nR:cdev.h\nZ:Q14i3AIbjxqmUHFh7zqCBFnbXcq9s=\nR:dtx.h\nZ:Q16klcUsuOYevrfXsKKVF61fspv2A=\nF:usr/include/linux/tc_act\nR:tc_bpf.h\nZ:Q1onFuCcRUuUG9oKCxYMMFY0NjXHg=\nR:tc_connmark.h\nZ:Q1jV0aA2LJ4dJenqwIodvWODIPFBI=\nR:tc_csum.h\nZ:Q12nZFaIw/gTUYwcX9w57Gy/I81bs=\nR:tc_ct.h\nZ:Q1dEa6txQf8CsZ6df6bF2e8VGN3O8=\nR:tc_ctinfo.h\nZ:Q1k50Epk9qON+I7j7/SZS54stAa6c=\nR:tc_defact.h\nZ:Q11+TdnMFg24QzyZdFSXKpXg2FMOo=\nR:tc_gact.h\nZ:Q1YUfUrHr+ULbR7QohkKgiqlMFDSQ=\nR:tc_gate.h\nZ:Q147FGxr5JWatz6DZNL/LkQRlP4yI=\nR:tc_ife.h\nZ:Q1v/h92I5fJwJEVPEc4j4ZCPu2ZwY=\nR:tc_ipt.h\nZ:Q136vTkft20qteEwMftstQOMTBWF4=\nR:tc_mirred.h\nZ:Q1LlKEDq9eq6X1agH0XIWH6hVRVPU=\nR:tc_mpls.h\nZ:Q1QzIKfjdY/rgylnPONAGMkJHAHF8=\nR:tc_nat.h\nZ:Q1DCpii51JezzT7MTY6gXH5ANtJqM=\nR:tc_pedit.h\nZ:Q1zLT+rEXg7l1sUfgnWOjvmLOSBN8=\nR:tc_sample.h\nZ:Q1Dai+hrSi4M9MFCc0o8DZ3W1Yk7E=\nR:tc_skbedit.h\nZ:Q1BdNzODLDC/B4lEeVg/E5k3bcrvg=\nR:tc_skbmod.h\nZ:Q1qo5N5LcQs9hhhcn884CovAD8lmc=\nR:tc_tunnel_key.h\nZ:Q13PjOD1jOyxubJaB2Yg04Uw4hOzU=\nR:tc_vlan.h\nZ:Q11WHi1ic6zvmKxbM1DmVbF6TU2fY=\nF:usr/include/linux/tc_ematch\nR:tc_em_cmp.h\nZ:Q146jrZcpQKvGxNDEI9L6D3gb3quo=\nR:tc_em_ipt.h\nZ:Q1DtByoFJHVEvl/n6UonW7UI4eixk=\nR:tc_em_meta.h\nZ:Q1b1rmohs4NQzGhUeon0h8bKCX6rg=\nR:tc_em_nbyte.h\nZ:Q1pT8hN0guIB5Cjxas9Kd5IjWwLbs=\nR:tc_em_text.h\nZ:Q132OZba90qKiyV0Fo719BG4TCHf4=\nF:usr/include/linux/usb\nR:audio.h\nZ:Q1Ryl13A9R9EPExFE3YBO3yTQWa14=\nR:cdc-wdm.h\nZ:Q1Lbl8jKUXWUmwbaWcTSkCu9p6M7g=\nR:cdc.h\nZ:Q12rruH1ukE1wXOHs8kZe5mlq6/do=\nR:ch11.h\nZ:Q1g434OE/EeGBClNtFDDlUee72Mak=\nR:ch9.h\nZ:Q19XS1jQbE9JYaggfAuCMtg8uy2a0=\nR:charger.h\nZ:Q1w9wYoKBzi56xTHBCTfqrdE8SLww=\nR:functionfs.h\nZ:Q1dEZ9o21w+JeQYsTymT9W2rhlLwY=\nR:g_printer.h\nZ:Q1d4esjBs/Czz3WnEc/TEYcz/phmA=\nR:g_uvc.h\nZ:Q1yuS44YgbBSis0w82+Pxf8lE221Y=\nR:gadgetfs.h\nZ:Q1k+v3bLsNGChdnd+qrvIlseCvVS0=\nR:midi.h\nZ:Q12laO996jANFN8ehHz5wss2qbWDM=\nR:raw_gadget.h\nZ:Q1zKFER4P/7gOAmbzuPZ6YsG/fTKA=\nR:tmc.h\nZ:Q1Mk34ewxfhUygeaxATCSjbu6LaGE=\nR:video.h\nZ:Q1Rpw45akFyUpYw6Eu10gdFGKlUlU=\nF:usr/include/misc\nR:cxl.h\nZ:Q1RitKkFxJ7pq26PiUZ7FPDfpCO6k=\nR:fastrpc.h\nZ:Q1sVNxGd7ELWhrlPvBUHVs0D0TGCw=\nR:habanalabs.h\nZ:Q1sifvcGAh11zsIbTzKArLt7U6WKw=\nR:ocxl.h\nZ:Q1ZB7bFt3p+iQd2kBunOOejKGIMiY=\nR:pvpanic.h\nZ:Q18YNOKZygSrJjzLADr/2oRsoZGa8=\nR:xilinx_sdfec.h\nZ:Q1+avB2f0JZzKkpdCI5HSt1bA2liY=\nF:usr/include/misc/uacce\nR:hisi_qm.h\nZ:Q1CLj21Xek8lfB/DBKg6dap6hCTAo=\nR:uacce.h\nZ:Q11hIdvadXoSl1NqdJgNmOOJrVdc4=\nF:usr/include/mtd\nR:inftl-user.h\nZ:Q1JmxZTOA19WJSTqF2BMvjUb+/YyI=\nR:mtd-abi.h\nZ:Q19/d4kOgeBzVS/J89+dFoinqLXV8=\nR:mtd-user.h\nZ:Q1Y1z5haHhJCth09JPFrH0gnApg0M=\nR:nftl-user.h\nZ:Q12dpGRv0fihXd610rY5NAcoAtNCQ=\nR:ubi-user.h\nZ:Q1AUUNm2T0ANfHdnDaCpuLTESbSEs=\nF:usr/include/rdma\nR:bnxt_re-abi.h\nZ:Q1VMq4tCexBcJKU+MUmnHtOd2w26w=\nR:cxgb4-abi.h\nZ:Q1dB2o+/cmeMrY+j2PRH4Q1ps77mM=\nR:efa-abi.h\nZ:Q1NrfLDjxuNy9wdjIBIbzTDWFjqiY=\nR:hns-abi.h\nZ:Q10z/76yaYI/0A9nkFcKtA06/NRAc=\nR:ib_user_ioctl_cmds.h\nZ:Q14sbyMmbwAUl7kqxjJwraIV9BuMs=\nR:ib_user_ioctl_verbs.h\nZ:Q13Q0L2DxtHqbDHP1KiBYpnc60HR4=\nR:ib_user_mad.h\nZ:Q1FCH3+l+32XS3iPYaij6h8ksIVxA=\nR:ib_user_sa.h\nZ:Q1XqAeRvdCyEoEphuSQk+o0Ar+9ig=\nR:ib_user_verbs.h\nZ:Q1sXIeeonKKoBbiVj6zA9wrY/gyhc=\nR:irdma-abi.h\nZ:Q1gP3HSQH8iFRHjeGwPrePleNLWOs=\nR:mlx4-abi.h\nZ:Q1x7dWbUsUKGfRX4jl52VhhIs7TP0=\nR:mlx5-abi.h\nZ:Q14ClgeVEKIBBnelKLcEuAiKLugWw=\nR:mlx5_user_ioctl_cmds.h\nZ:Q1dF9crWgDgfSz+LBmCRm4JRRfutA=\nR:mlx5_user_ioctl_verbs.h\nZ:Q1ej4bxLeEJ53HPuzkfacIlvQcx3w=\nR:mthca-abi.h\nZ:Q1c4kjQOegwo5Ej1LHF7AiEOuzuXI=\nR:ocrdma-abi.h\nZ:Q1UEhfnvhbOIUfkAv/8ljrTaamHY8=\nR:qedr-abi.h\nZ:Q1LN2VJ9W98XqfojwpOgooE3l6mnU=\nR:rdma_netlink.h\nZ:Q13okC5DJGC9MIblhEjFwGetV6sTA=\nR:rdma_user_cm.h\nZ:Q157GHsKhDp2gctN/iKyIii9CjnQU=\nR:rdma_user_ioctl.h\nZ:Q1V9D6bmxDb1SSUuw17KaBz3KSH/A=\nR:rdma_user_ioctl_cmds.h\nZ:Q1LZXwomonPBQTGojuEnZJwF4xsxY=\nR:rdma_user_rxe.h\nZ:Q1XW2clucmK2QoN0asEm0XYbUzK2s=\nR:rvt-abi.h\nZ:Q16ZmYb0HHEfWBIPBAeVlkxPVb5wI=\nR:siw-abi.h\nZ:Q1WNpoa5c7T0N3JpqDu/z0e7spWsQ=\nR:vmw_pvrdma-abi.h\nZ:Q1CB4Jy6O0sStAf3Rpb2y/hGnddO4=\nF:usr/include/rdma/hfi\nR:hfi1_ioctl.h\nZ:Q1OHJPWX34OrYZdfAWmnhjK1LnTek=\nR:hfi1_user.h\nZ:Q1iye7JiAs0GEz9Qtekw1hgvZF1tY=\nF:usr/include/scsi\nR:cxlflash_ioctl.h\nZ:Q1ilmESVXeCt2d/wTxzZE/NKlGt/M=\nR:scsi_bsg_fc.h\nZ:Q1bdoyFDO/zpuS4bqthavGMInbvj0=\nR:scsi_bsg_ufs.h\nZ:Q1hR4zAsl0bEYUyScMAn47WV7pOKI=\nR:scsi_netlink.h\nZ:Q1LDHLuhlgbg5RqOLl66HlTSd6TMg=\nR:scsi_netlink_fc.h\nZ:Q1GW/4LGyNHUT/UCLPH1xSsNfMdOo=\nF:usr/include/scsi/fc\nR:fc_els.h\nZ:Q1Pac3wo0h6Jjf2WfQELQ/lE4VJwk=\nR:fc_fs.h\nZ:Q1YFwqnZbTogrzSFCVLl3Le5CUYjk=\nR:fc_gs.h\nZ:Q1KtM0oe2VXrh/Xz6o4by5orgv1hw=\nR:fc_ns.h\nZ:Q1HUfqQMZoxGAFZmU8zuOdX/0G0Ks=\nF:usr/include/sound\nR:asequencer.h\nZ:Q1ZjpHQXXdaGjYEdjyT9jyGrsU2gE=\nR:asoc.h\nZ:Q1LKRneI0W/K6tVCzEXoQanxuGFqg=\nR:asound.h\nZ:Q1we/LFgH3O15QN97K11PBdN0cFjg=\nR:asound_fm.h\nZ:Q1ytlxlrWCRoYW5+GdlgKdDBtUV1c=\nR:compress_offload.h\nZ:Q1SbsUA4e2Rryoq/4Wd5w/xTld14g=\nR:compress_params.h\nZ:Q15+grslRSFSnOYF2HQNZICK55TfQ=\nR:emu10k1.h\nZ:Q16vpSLI/JOviDrzHwv5KDKuFIxio=\nR:firewire.h\nZ:Q1rWCwUfs86s2//EpkTnZNgnV6Zsk=\nR:hdsp.h\nZ:Q1Nc+cA9F3N7vPk5Zwk/6AoHhau+M=\nR:hdspm.h\nZ:Q1opEVm7yJeHHayNZ9dNx+K00JFGE=\nR:sb16_csp.h\nZ:Q1+XDj+YcRhw8ljNl2UVLmR6ITY2k=\nR:sfnt_info.h\nZ:Q1WLnYtPHiUpJMlUryrhnzPZFmoms=\nR:skl-tplg-interface.h\nZ:Q1VUsm/p6FYMmEwBa7Of4A2dIfIfI=\nR:snd_ar_tokens.h\nZ:Q12U2Y0sQisOB70Hu7D7Qyi2XwL5I=\nR:snd_sst_tokens.h\nZ:Q1Rob0uByqxJAyeI4lfDofig/uhQM=\nR:tlv.h\nZ:Q1Pe0M55ypz7ekVLq/HbiRtmwmbnI=\nR:usb_stream.h\nZ:Q1FKbES+qbM7D18mxXhSKMS2Ie5C0=\nF:usr/include/sound/sof\nR:abi.h\nZ:Q1T9UMWwk8leAcIlDFXBUkj208xeI=\nR:fw.h\nZ:Q1Y3d/j7KPdVh7cC+h1hxyyG38VTc=\nR:header.h\nZ:Q1hvcIP8YJzH4d83ZnAqCRvSgWhL0=\nR:tokens.h\nZ:Q1gQ7Inonvqa2SA+UexgFCkHZIQmk=\nF:usr/include/video\nR:edid.h\nZ:Q151rgE3XZP+9m4EOSBGdFyQIRSQE=\nR:sisfb.h\nZ:Q1VPTjJTBl59umoET9uUjOnGZ5rGA=\nR:uvesafb.h\nZ:Q1urerzF2IDTihru8HRqXT04lGN80=\nF:usr/include/xen\nR:evtchn.h\nZ:Q1UHnCs5TVw0pSxZ2vLVVby+UGKyY=\nR:gntalloc.h\nZ:Q1XzQdVotwC4S+N8ziPhRHyUwenDY=\nR:gntdev.h\nZ:Q1a8qa0oRWHE82PZZMyp19Lt5j4hM=\nR:privcmd.h\nZ:Q1QIWcQ+3UebLfu1WlGgnzOCdKnbQ=\n\nC:Q14SmscPOhjEy5mqbwFg2EblF5LZM=\nP:glibc-dev\nV:2.36-r3\nA:x86_64\nS:13864472\nI:37017847\nT:GLIBC development headers\nU:\nL:GPL-3.0-or-later\no:glibc\nD:linux-headers\nF:usr\nF:usr/include\nR:a.out.h\nZ:Q1zIPs31oCdG92fnXl7ixpkyUJGmI=\nR:aio.h\nZ:Q14EXUGRYUl5s5M0nsC0CV64908XU=\nR:aliases.h\nZ:Q1ZgzER9vCbUUf4R6pDQAcWVC8IKY=\nR:alloca.h\nZ:Q1g+Pndhtg39ani6fD1Wy/tasN3Q8=\nR:ar.h\nZ:Q1uygtAiRHkpQIq9KktIt+q1oNAZo=\nR:argp.h\nZ:Q1kYygY40nwD7y0vwg7yHfnpD7hTk=\nR:argz.h\nZ:Q1hNH+643/VOuB8SCfUJ41ngyU1Es=\nR:assert.h\nZ:Q1pM3StxDfDViBB3VOW+WmaTfWu3o=\nR:byteswap.h\nZ:Q1+JxCjiI5JbL2lD0B1r3cAfgbcys=\nR:complex.h\nZ:Q17nykFyc1sLADup+iJ5lJd2tAyJA=\nR:cpio.h\nZ:Q1jnINANWMcT2gN9OYx3CIl26Varw=\nR:crypt.h\nZ:Q16wqSbEkXgGyqWBTvpm0X0rwj5Sw=\nR:ctype.h\nZ:Q1DyTMUIeZhxAD8EVJZ3fwLLhBp1o=\nR:dirent.h\nZ:Q1lb6uvIgL2hPfF9XQzHzE8wim1yU=\nR:dlfcn.h\nZ:Q19nz46PHKi7t10pmK1NvbEEa6Nlc=\nR:elf.h\nZ:Q1tlKanlI3K6epvfsDmcP/tA3bUpk=\nR:endian.h\nZ:Q17n0ElEC7EgJauu/iYCoGtO3cHz4=\nR:envz.h\nZ:Q1GOYUYTfAElyEMTaZI9ayUkp/9t4=\nR:err.h\nZ:Q1SZB5lnSw+m6qqnyQpM+vHqmJkbQ=\nR:errno.h\nZ:Q13KdQ4jcIUTruqtqn+MAvIeoETok=\nR:error.h\nZ:Q1F4qKl0F4MGDadBtBr8FTgMdB1ts=\nR:execinfo.h\nZ:Q19GXdd1pToXYePFm9Je3akatNVnE=\nR:fcntl.h\nZ:Q1046N2eXR3KtVTpwl2I49NBQDSmQ=\nR:features-time64.h\nZ:Q1V8PICTw69w5YUfbUmGAOL24k/es=\nR:features.h\nZ:Q1QTM91fBDggNKmgNPWWfsdeGjXR0=\nR:fenv.h\nZ:Q1rLj+iBh+NB0CDZm2sdouc3ntXRQ=\nR:fmtmsg.h\nZ:Q1XGku4+fJfEVlH0SQmS8Nfmw9owk=\nR:fnmatch.h\nZ:Q1aGqgq75KOyAHs/nwuyp8Av+vXf8=\nR:fpu_control.h\nZ:Q1jHxdIAQnHYko1kgTwZlN197S6ME=\nR:fstab.h\nZ:Q1p30o3Wob8QID59y/suPVqDtSF3M=\nR:fts.h\nZ:Q15YXabl3bscxFHR3T1VISmj7YreY=\nR:ftw.h\nZ:Q179yeI+FyelgVSa9XE6PZ1xB+x10=\nR:gconv.h\nZ:Q1NNf1Wju9vm9S4rgGnH96M1L+WnM=\nR:getopt.h\nZ:Q10w26wUyEhtMu9Arj1KUMIx7j6dM=\nR:glob.h\nZ:Q1B5tDQzCMofK/xLDpFwDAGe0GqYs=\nR:gnu-versions.h\nZ:Q1o4/pr8G6p6pRN5G+YkiRxzBPOVU=\nR:grp.h\nZ:Q14rlGyKwqD3r0KfeP+SDdtHKRMW4=\nR:gshadow.h\nZ:Q1X2BTD+m80d/2DWSo8f0Jr53iJY0=\nR:iconv.h\nZ:Q1MiyQUUu2hNaMQ+68ldQGLPrhUjk=\nR:ieee754.h\nZ:Q1ci3cM++Pa+VlXooRpmRqQviNlF0=\nR:ifaddrs.h\nZ:Q1QV3VRrlTqq/xOD51L9QlQ3aEao8=\nR:inttypes.h\nZ:Q1njfEVs3yNzQ/bgB6mCRY7cMLbNc=\nR:langinfo.h\nZ:Q1pwWxzYU4Xq0Abqqd4p0BPjcwEuY=\nR:lastlog.h\nZ:Q1aVyGseBgbsANJdPUvSQH3/FpgqY=\nR:libgen.h\nZ:Q1hqITkHn+PD+cNuT61sOfJmTaBOQ=\nR:libintl.h\nZ:Q18Koi6q2jToURWRuxEuApQzC1wMA=\nR:limits.h\nZ:Q1tWu3KklSBxPsSxSqqYAacU5/Fls=\nR:link.h\nZ:Q1o7XCxtz3TPdOH0XmJ/B2B90V2WA=\nR:locale.h\nZ:Q1XtYJeeRjV76pXLpe7r2C1eUWrdA=\nR:malloc.h\nZ:Q1grJ1T6/1um0FBtlE/oMAtuDZLQA=\nR:math.h\nZ:Q1ZFRAS3Y41BOrZq3pSZQALWrDekY=\nR:mcheck.h\nZ:Q1MrVottqjilAJ5rtEPwCupKVYpgQ=\nR:memory.h\nZ:Q1f1mMXrD4BVSUs/AnLBUZJyId27c=\nR:mntent.h\nZ:Q1KSSMFtskbOx/ywSYUaq6tKpVQ5c=\nR:monetary.h\nZ:Q1PeoKSuHZxeHwpWfYdDOm4eJgXyk=\nR:mqueue.h\nZ:Q1Rn9/vjHnkfBEt5wt3RMPPgOOTec=\nR:netdb.h\nZ:Q13F+iZRkVuv3MFSuryym0LrtMM90=\nR:nl_types.h\nZ:Q1NZgtosfy+6AWQWvUcHPcQk052WY=\nR:nss.h\nZ:Q1V6fW7s/wiRmDubNCLPOZfwnPG8g=\nR:obstack.h\nZ:Q11npNkmN15h0aVrfo6AFQqq43Dpw=\nR:paths.h\nZ:Q1KmzNIsnTvB6qlATm26VzI0Pc7HE=\nR:poll.h\nZ:Q1f6GQ973qkhYTZCzwB9f9u7GgC8M=\nR:printf.h\nZ:Q1bw5GFidpMj1j0BtnrfmNr8D3sek=\nR:proc_service.h\nZ:Q1Kr35msWcugARE2BAlRrL5bE5fxA=\nR:pthread.h\nZ:Q1GSYSvEzeiyvEiy4vBPuLvurIrcQ=\nR:pty.h\nZ:Q1MLzXN8yftfzqFmayaYvQzC+jTcg=\nR:pwd.h\nZ:Q1GnnwvEntK75b4cjE3jAQdk9ode4=\nR:re_comp.h\nZ:Q1yj4VZBK8pPCx7S+M1l8F9ZmIbHc=\nR:regex.h\nZ:Q1LlAkN2l+pee6W7yUGn1hDF4Adaw=\nR:regexp.h\nZ:Q1k+t1+uM3JwATE4uvO2+Qu/PWf6k=\nR:resolv.h\nZ:Q1YXIloZgqLfJhJPitMSL75U1fpAo=\nR:sched.h\nZ:Q1VbO38EZkIKLZPnUXQjil1tz0Twg=\nR:search.h\nZ:Q1Riq43mDaO1bNDfUlBp/4V2Vk7bg=\nR:semaphore.h\nZ:Q1DHLgXbddNOxLJibWC/4Sh6Au2lU=\nR:setjmp.h\nZ:Q1IA36qa0OslXy25VION6Y+oK8GBQ=\nR:sgtty.h\nZ:Q1vVRurvM8lHyxWexD2dzIk7aelK0=\nR:shadow.h\nZ:Q1f9YICwE0O3QnhHadumZgqMUP7uA=\nR:signal.h\nZ:Q1jBsmxyT4KCjYOOUWZ/II17TBZN4=\nR:spawn.h\nZ:Q1VaLW4bB/f94fBQloroutTW+Jj4o=\nR:stab.h\nZ:Q1QCAuABj115rVivEqVnQEaUGNc6c=\nR:stdc-predef.h\nZ:Q1L+8F2AUUygvnfv7JC9oFHPh9dx8=\nR:stdint.h\nZ:Q1VkBu0i9zIezVvWqHF8YLJjxvM8k=\nR:stdio.h\nZ:Q1WyATZTQHkGvsZAa1JMD6V3V+2P4=\nR:stdio_ext.h\nZ:Q1VokrtjVmDvMJBxjD6h5Fz9uinXs=\nR:stdlib.h\nZ:Q1K4RykFFpKnI5kUO+TvCB6lYyi50=\nR:string.h\nZ:Q1aI+DEy8jyZpn2kMgQFvJU0d1zow=\nR:strings.h\nZ:Q1zIPuIHOixPlt3e8i8gTFjWK1f5o=\nR:syscall.h\nZ:Q1rOu4j0xm6oJAgULQequfsNuqlhs=\nR:sysexits.h\nZ:Q1laB4c29BUqUg9Zu5ioOsl1yC1+8=\nR:syslog.h\nZ:Q16gYwsWMWOeiqHRpEg2Ol9+fhDqs=\nR:tar.h\nZ:Q1Y51RVVSSCjRPnhgEiVnTOxm4ZJ8=\nR:termio.h\nZ:Q1870UENQd7/yR4YSAf9Vuql3yhtw=\nR:termios.h\nZ:Q1UJs6kL3wvVHKC5Wb2fwhPYWTYs4=\nR:tgmath.h\nZ:Q1DNz4HFAN3rF+Dl9jKyEncYfIbVU=\nR:thread_db.h\nZ:Q1kIcqTzcRRREOTHwhr6Y4wp1KDes=\nR:threads.h\nZ:Q1D7sfo1XhZR/jd4RTFCgD+3eZ/Gw=\nR:time.h\nZ:Q1iEm6dQ+0ubg3Gpt6kR79/zsfa/s=\nR:ttyent.h\nZ:Q1Wns3IMrT8jnqG93axoZVY5a3CEQ=\nR:uchar.h\nZ:Q1jFWTJdToeMFG8ofA8/NEUBkopx0=\nR:ucontext.h\nZ:Q1Wc7GUbY3xQi9hiQ9U9laLbxGdCY=\nR:ulimit.h\nZ:Q1vOwTe4hk74BwtxPpPvXXqyHweNY=\nR:unistd.h\nZ:Q1lB+ZNDt67eiGqdVVZeP8EPgEtQc=\nR:utime.h\nZ:Q1JUdXvurBIOY7IaDhWu3W7qSAIm8=\nR:utmp.h\nZ:Q1tkPWo6SEhfQEHEmLYlm5uD49uOY=\nR:utmpx.h\nZ:Q1/9PbGVSAYiczFh2jGPIOmleuhkE=\nR:values.h\nZ:Q1mZ6gK81dWKcsxrA6XsfhFG3wjXU=\nR:wait.h\nZ:Q1yJH+MUpZNBaGTGI3xmJi7uYW/To=\nR:wchar.h\nZ:Q14WbExWwrOI4MYFkVval9wgiQAho=\nR:wctype.h\nZ:Q1YXGxAE+L9vLYdWZhvD7DnTVQqc4=\nR:wordexp.h\nZ:Q1xVYYXMkYsTZsGjC4L6fBczXc4Hg=\nF:usr/include/arpa\nR:ftp.h\nZ:Q1R63yoWvTUuO4NP3XSOQ1dm6JGmQ=\nR:inet.h\nZ:Q1+Uj+sph5Ulowhcat2YL4bNowu44=\nR:nameser.h\nZ:Q1VRcmBcaRcsHK5ghi4+pxcBsavug=\nR:nameser_compat.h\nZ:Q1IS8J3oIqOCMm9wGX5HBDCWpf6mE=\nR:telnet.h\nZ:Q1c4haEQSuxsdrMH/R9J/b9FmQAVc=\nR:tftp.h\nZ:Q1V6m+Uprvz3pwnYuSRxXIelFNubQ=\nF:usr/include/bits\nR:a.out.h\nZ:Q1aHtu2lEvpURI2J2rkH+9g9LejWs=\nR:argp-ldbl.h\nZ:Q1orMacNCNvW4AvSQo6ELgJompXBM=\nR:atomic_wide_counter.h\nZ:Q1qxBxtBZMWyMsJfyoW2j6jKYbggY=\nR:byteswap.h\nZ:Q15PO8ooGDItuKBOo7EjV5gSweZZg=\nR:cmathcalls.h\nZ:Q1544CayuLYqiGIsrH3g87Mq9Sur0=\nR:confname.h\nZ:Q14ry9P+1UYJYW8Z5wtgfZq50MMAA=\nR:cpu-set.h\nZ:Q1o+xYBRDTAlItQnUr6oZSgb7Rm9g=\nR:dirent.h\nZ:Q1yB3EyW8Hqa3/FIOh9JpMLTL8WAk=\nR:dirent_ext.h\nZ:Q1gxRynMbP8odxsXDyjlyfLxTEN6I=\nR:dl_find_object.h\nZ:Q1Zwn03SVExJVmFlk9JBngg+sRmRs=\nR:dlfcn.h\nZ:Q1DR61/pwbkTtaEm30q/W3mvzaW3A=\nR:elfclass.h\nZ:Q1lo+PbLYefWYS1USZ8WK1AoeKQuI=\nR:endian.h\nZ:Q1HhzQmXqmqpg0JRFfMnNTnpp4sNw=\nR:endianness.h\nZ:Q1MH1uYoVpQ5ELrbCmu2odUfxcUXQ=\nR:environments.h\nZ:Q1n5AZDzuuqMC6TOjjLA/aX1AVakY=\nR:epoll.h\nZ:Q11BQdy2qaodirS4MnsDVhSadwMC8=\nR:err-ldbl.h\nZ:Q1+5H8B8zJ+qn+lQCd8xnDd+ZsQYI=\nR:errno.h\nZ:Q1YGRu387vQ/dXIYrGBi5rYBMUdTQ=\nR:error-ldbl.h\nZ:Q13EdhoqkPp3AhmVtx6qC3pfYGAaE=\nR:error.h\nZ:Q1yh2BZb+GQfX2ylDXqp4HCNqQlb8=\nR:eventfd.h\nZ:Q11tGSqFcS1PZwAeJGTqDy3uTiQns=\nR:fcntl-linux.h\nZ:Q1ev/JLeIw2tiErqFi77uNk+OsWqU=\nR:fcntl.h\nZ:Q1BPCwv+hMb+XnpH7JYDWkOM5q6oM=\nR:fcntl2.h\nZ:Q1jvQh0uSwbAzz3pbC0U61T/ISuB4=\nR:fenv.h\nZ:Q1AxqsiQ5L9FMDaW+14Oo/FE2uNjY=\nR:floatn-common.h\nZ:Q1PzcQQSOi5hgGITMcHahxJYCOR70=\nR:floatn.h\nZ:Q1gGt1mraJSgmjs6Qi7sXyQUun2rc=\nR:flt-eval-method.h\nZ:Q1K1Iu9PAprJdCLGTdMIXI7XuV6sI=\nR:fp-fast.h\nZ:Q1txVnPAtiruiNWzPubCNKA0Q3H4I=\nR:fp-logb.h\nZ:Q1UJzys2dtF4hJV+vEZvopdXS93YQ=\nR:getopt_core.h\nZ:Q1pyFXU/RlXmEEkRyxep9zUlwqzcE=\nR:getopt_ext.h\nZ:Q192kshMQeO3tukN/tPo/vshdbwSE=\nR:getopt_posix.h\nZ:Q1/hd9vRfkT8F7JQJo5MxGdZgUerw=\nR:hwcap.h\nZ:Q1jtGKF9gx1PECxWsK4bujIHLJ8P0=\nR:in.h\nZ:Q1mLFWFKLTNbgmkbFgc//3jsnk5RI=\nR:indirect-return.h\nZ:Q1uePHQh5WJYqvfk1ODV5bEu8fBRI=\nR:initspin.h\nZ:Q1XnnTP0QRRoZxcFfQYbt9SVNjV3o=\nR:inotify.h\nZ:Q1BSn5GfSL2N9+YWFyakGmr+4dRKY=\nR:ioctl-types.h\nZ:Q1FcrNbzT+cMZg9joHx/kZ2ZJyVv4=\nR:ioctls.h\nZ:Q1BXchxiOpBeUiaaY3E7lTCd1wBbQ=\nR:ipc-perm.h\nZ:Q1ZI1wEVf93HDIZGpenUKfavDaBaE=\nR:ipc.h\nZ:Q13hu6Bj2qvOMBJOFbRm7LX0UBPss=\nR:ipctypes.h\nZ:Q1JiCPgm7KW3MbqGUcflPu3YwZ1zE=\nR:iscanonical.h\nZ:Q1X4dFpSMe9OYr0+9+g436oOpeqVA=\nR:libc-header-start.h\nZ:Q14KQAwZTNOWKjQqZQSkQZIBY7eZw=\nR:libm-simd-decl-stubs.h\nZ:Q1SrshZgpWLvbqtlG+7qgO+hSKsf4=\nR:link.h\nZ:Q1o3gum07CpAdMRt66TyHViMjKChY=\nR:link_lavcurrent.h\nZ:Q1VyGqFuoAzl2Dnq32hIBoqQVjyT8=\nR:local_lim.h\nZ:Q1/YOT+Q6soJR2P7zMBioGzcCBOt0=\nR:locale.h\nZ:Q1y2eYQYJ09wV1k4+vU6V8nSlDi98=\nR:long-double.h\nZ:Q1Tj9ZKOgWrSkHnRx9dfOlEKCTn/s=\nR:math-vector.h\nZ:Q1dzWQwWAN6QaWmjv1yGSE+C+GJ8w=\nR:mathcalls-helper-functions.h\nZ:Q1PZGn51mF1gedxup8Qa68dppwcx0=\nR:mathcalls-narrow.h\nZ:Q1ta6c4JPQimdjjU0Az50LjP8z0Vk=\nR:mathcalls.h\nZ:Q17KnhPOLnyEWsQJsYrtSobhXgTCQ=\nR:mathdef.h\nZ:Q1dNXqPad9ksRDWwWm9LBGUUoyn2w=\nR:mman-linux.h\nZ:Q1DKqqp1n1NQxh/HgXfyJInINXAHk=\nR:mman-map-flags-generic.h\nZ:Q1VaROo5ZCeYWeyUUbfNNmwF2d1L8=\nR:mman-shared.h\nZ:Q1MitOXeA3wTszXtf9BbZ7/Swv5cg=\nR:mman.h\nZ:Q1TXUWOk7WrwMuBPqPe8eOS+M1LNM=\nR:mman_ext.h\nZ:Q1sg6avD86W7gAgStU66rPqIc57Xo=\nR:monetary-ldbl.h\nZ:Q15vM6VLVoSPUPJf80uVQlB2aEGCc=\nR:mqueue.h\nZ:Q1ZrPV+rv3WZfFVubKYB5xgVZHnY4=\nR:mqueue2.h\nZ:Q1XIXP0UkbkO63vCCZEAl3RmSJ7Mc=\nR:msq.h\nZ:Q1R3PQ6jwalNkodzn2Gy1Xf1aAwjM=\nR:netdb.h\nZ:Q1YaRuIdvGPrmbdxLm5uwKV2ZylVs=\nR:param.h\nZ:Q1+X3P5tUBI9t4rQnGxxAnLBivGKw=\nR:poll.h\nZ:Q1MnUcLgrhsMJOYE0uc48ZHdicxtU=\nR:poll2.h\nZ:Q1yv1lkCUcvZwdGgnq34XYtyXyI8I=\nR:posix1_lim.h\nZ:Q164b6R5GVhYuXqzqom+twgavAs1A=\nR:posix2_lim.h\nZ:Q1lY6c1omm9CF7IA8/R+4/7x9Tf9Y=\nR:posix_opt.h\nZ:Q16HfYrAPClzDGECHLqzSmLFXd05k=\nR:printf-ldbl.h\nZ:Q1zLOe50iERiF9trmXeQozU4MYCQU=\nR:procfs-extra.h\nZ:Q1TWhc6aDQ+z0uNklAraqpxJL8DXo=\nR:procfs-id.h\nZ:Q1XZBBxl+q630BA8HJVl/ip/Zq6lY=\nR:procfs-prregset.h\nZ:Q1ipLn3jrRu10MFzOaP6KtcB4LLWI=\nR:procfs.h\nZ:Q1PjX/x/4YyButoerrFDQZn5bb4bc=\nR:pthread_stack_min-dynamic.h\nZ:Q16wXXSXdw5KS4Yqn4WXfYBUdBMFU=\nR:pthread_stack_min.h\nZ:Q1Sy+7F8yAb6NX90oqYPhPQ99GKZs=\nR:pthreadtypes-arch.h\nZ:Q1WTg7ePTO2F8VdfUfWnoNf3bzVQc=\nR:pthreadtypes.h\nZ:Q1BO8oQrTxLoqq87fnr3K/wD1ugFU=\nR:ptrace-shared.h\nZ:Q1PD6P1NzPVfcCXFR8WR2Cckzeahw=\nR:resource.h\nZ:Q1R4MaJVSN6wUIlRUPiFNMGFz8AZc=\nR:rseq.h\nZ:Q1E5X0DLXaKS0ILgXoHurFoEsy0LU=\nR:sched.h\nZ:Q1kqNOf6aP3TBLhC1P25bH99zTQSo=\nR:select.h\nZ:Q13K6AisryWcFfTWzM8YGi0yIRQpg=\nR:select2.h\nZ:Q1OPgddiLT0w+BmgmFeQ20roYRyS4=\nR:sem.h\nZ:Q1eBDRfAQQljhCH3wZiFKojI0a5s0=\nR:semaphore.h\nZ:Q11Ldta128fs9zpR3BdErFqJDpDLY=\nR:setjmp.h\nZ:Q1KLwss/NF+wcnkUKH64ly0OjnLKg=\nR:setjmp2.h\nZ:Q1XV4xRcq/kVu9w3oJCvJkbyZQGMo=\nR:shm.h\nZ:Q1LIte3/+lMrzpPTYKh6rwfMawgFM=\nR:shmlba.h\nZ:Q1kuZWJRMgl/EtipFhT/fBq/oKWzc=\nR:sigaction.h\nZ:Q1u6YGu7lU7M2o/59uSkxjCGIZoTU=\nR:sigcontext.h\nZ:Q1IXQoLsU9KPIVAL38gWUaUFwOEiQ=\nR:sigevent-consts.h\nZ:Q1BkfAXS4xYGb0sN82XIOnuiZNzvE=\nR:siginfo-arch.h\nZ:Q1i40GrsEzcXJK0aUS2lc6hV/AOC0=\nR:siginfo-consts-arch.h\nZ:Q1G1Sa4LqIU4dyj5rXL5kv1HnDMvE=\nR:siginfo-consts.h\nZ:Q1oBFtO3SH6HIl3o63DGnJRNKVVo0=\nR:signal_ext.h\nZ:Q1D02dTdSGns9oW/7dB4yDwSt7EgE=\nR:signalfd.h\nZ:Q1Igr1+oR/chL/KR5cQJCt5whYp0A=\nR:signum-arch.h\nZ:Q1QFwdk0NLeyh23gvJDElarJPENfA=\nR:signum-generic.h\nZ:Q1o4IUPuU5tIZ2ZUiZxjL2Us/rwmU=\nR:sigstack.h\nZ:Q16ldreNXB4hW+xtwDhsZ3KU+7QWQ=\nR:sigstksz.h\nZ:Q1n35jp+1vbJKA/Vu4NlgS9OGz9VY=\nR:sigthread.h\nZ:Q1F+urWRooX9AlM/zlCOgWyq1RVgQ=\nR:sockaddr.h\nZ:Q16MO5owL2l6ktcbPgcAD1/9IZdE8=\nR:socket-constants.h\nZ:Q1dW+ZE0m2zG3NPPtAKbao46OWbpQ=\nR:socket.h\nZ:Q1gREKqhwK7MhUJV7Mskqm7jDbJY4=\nR:socket2.h\nZ:Q1lYaXsfWt22DIi6/Svpw8BhKuahQ=\nR:socket_type.h\nZ:Q1mUash62jSOYBMpGzds33hsufUfo=\nR:ss_flags.h\nZ:Q1ArQsHUBWYNxdwmOzmjN5oO0z8pA=\nR:stab.def\nZ:Q1F3VVbGNAwJCyYh8PdGUw+/WMuMg=\nR:stat.h\nZ:Q1sEotvhX2nDIcbt3MXWIBa21ImNU=\nR:statfs.h\nZ:Q1NkaWrfd9kwoBQMASClLQ1nm/khY=\nR:statvfs.h\nZ:Q11xiGxrTdJs7TAomfAuAsX6WQM88=\nR:statx-generic.h\nZ:Q1Le7uPS+9EfoksUp9xTcdgnGrxOo=\nR:statx.h\nZ:Q13ShSbO9MpzIB1vLem1FPYu+7qz8=\nR:stdint-intn.h\nZ:Q1E7+Nl/DtAn0v7GiYxdj1gRQ81Vo=\nR:stdint-uintn.h\nZ:Q1irwRFrub1OfRR1QwUvWEgXaKC40=\nR:stdio-ldbl.h\nZ:Q1bfDkVS8evq5aVhmRwBkSBf8NmoA=\nR:stdio.h\nZ:Q1Uh180PZXL3ASI4Z4QSDMVdhImbw=\nR:stdio2-decl.h\nZ:Q1yDia3TYd0O2JcyrvUlxuKbo2gao=\nR:stdio2.h\nZ:Q1iR/deNKGdYXvO/JGnU0ECZJJpdU=\nR:stdio_lim.h\nZ:Q1YhDIrkEO4POaYJawrbn6hv69NRc=\nR:stdlib-bsearch.h\nZ:Q1ETytFbUM3EB41DYmS1o4ucMBBFQ=\nR:stdlib-float.h\nZ:Q1LbraT0zcMkyq5GRxEoV/hd4P2Ps=\nR:stdlib-ldbl.h\nZ:Q1C5mr6sZ3ezybTUH4vTlT8Jw4B+c=\nR:stdlib.h\nZ:Q1Td/15Ma74NuHxCmoF09+y7VvI1c=\nR:string_fortified.h\nZ:Q1VL2bJ7JE7qFFb8C368i9GOXsbaU=\nR:strings_fortified.h\nZ:Q1a5yWJCw+9lRvqfeGczKlsEt5ssY=\nR:struct_mutex.h\nZ:Q1ZBEMKMfaooB4FBpRcBywUVO4Ib0=\nR:struct_rwlock.h\nZ:Q1SIXwzXdcmdQB90D1OW1KmZMWP5Y=\nR:struct_stat.h\nZ:Q1DkKOICimVUCW/fSifxde0f4cwE0=\nR:struct_stat_time64_helper.h\nZ:Q1Ln8kddlJQyeI8jNiD8nNLp9iHkI=\nR:syscall.h\nZ:Q1s73/PXKo8tMHG0SzQds0Ix9ULZk=\nR:syslog-ldbl.h\nZ:Q1umLmuH0nIL28eN9cilLQ4cYEu6o=\nR:syslog-path.h\nZ:Q1kHhtZAUjSuliv9NPkNhR0+9MY+Q=\nR:syslog.h\nZ:Q1fveQyOi/7G85X7nJK0zA+BWK+oE=\nR:sysmacros.h\nZ:Q1ZrDGDr+B69LVUZJWoyFvVSmIqVU=\nR:termios-baud.h\nZ:Q1+uXwJRcP9VhBy1dsaDByRLoUBQ4=\nR:termios-c_cc.h\nZ:Q1IzAbFOS1au/r+3PYjkSA8ChDHGo=\nR:termios-c_cflag.h\nZ:Q1+fp0WoLr8tSkvfn4s+UIx6fgmBQ=\nR:termios-c_iflag.h\nZ:Q1RD36gMbhH6DkD6Tih4sn9drAaf4=\nR:termios-c_lflag.h\nZ:Q1I4eDTujE/E08CX3JsDl56KM3KJw=\nR:termios-c_oflag.h\nZ:Q1fSoSucUUJqKZ8mevcZ12ohGXPcc=\nR:termios-misc.h\nZ:Q1wOKLqoMdL5uevVQ6/2rRxgLYmkM=\nR:termios-struct.h\nZ:Q1vfCZQtRrdABCqEAk/BqBC5Vp9rM=\nR:termios-tcflow.h\nZ:Q13UqJYIoHFrPBLGvaN7hPlY+W4dI=\nR:termios.h\nZ:Q1zdA01n8UIZ87gGfJFvDTzU7bx9A=\nR:thread-shared-types.h\nZ:Q1ZF/cXJ29tSffXS+08y/bYy/izt8=\nR:time.h\nZ:Q1n5+3zp38nxg5mGxkmLv0z3pUdT8=\nR:time64.h\nZ:Q1qyAX2iFghJi1juo3sqpqM4ful4w=\nR:timerfd.h\nZ:Q1cW4OU+qghHspkDHuNxPT1TNfRL8=\nR:timesize.h\nZ:Q18d2NYqTXUohlRiaTPt/ILM8jlKc=\nR:timex.h\nZ:Q1ZFkH9jqQSLNFfXw3IA0Q0bcAIM4=\nR:types.h\nZ:Q15Yk6nExSNhXHOlH+uWgCeWCAJ8Y=\nR:typesizes.h\nZ:Q17pS1pg0AfCO92p5cRsi6QPTrQCw=\nR:uintn-identity.h\nZ:Q1JPD56eIgOe1sJbmQpW5k97ci8Os=\nR:uio-ext.h\nZ:Q1cItfnnnMZETuC1VGjBljdqLxoG4=\nR:uio_lim.h\nZ:Q1/x4tXr8FIU98Bq3wuolOufG4I+Q=\nR:unistd.h\nZ:Q1MkIb7jQYsQg7yz6EDGBPcZOrOuc=\nR:unistd_ext.h\nZ:Q1psVb4PbLtaOXTWxBkO9oJlXPqLI=\nR:utmp.h\nZ:Q1w/gH5d7CcEVTaJWoJ4AOIsVGh8g=\nR:utmpx.h\nZ:Q1GwuYiF9uBpj7uaHRWfEjin3yRXQ=\nR:utsname.h\nZ:Q1InL/aylnzdGeAjjfEHf3Al/6yIc=\nR:waitflags.h\nZ:Q14W/fJJjvk+GMBLHOo82rl8j0RE0=\nR:waitstatus.h\nZ:Q1+2suCtB2XKjRK/M9Ml1MZiKQSSA=\nR:wchar-ldbl.h\nZ:Q1ySDlZ98+sigkZMpmT7iey/WMtdE=\nR:wchar.h\nZ:Q1jLrCiU+wb6OML0+HR3uiF3YwtTA=\nR:wchar2.h\nZ:Q1EzxvLRe4pdDMo5IoqqUgSyvC8lE=\nR:wctype-wchar.h\nZ:Q1UiRw+62P+/08rlCYXyZeG3ye2ok=\nR:wordsize.h\nZ:Q1KB3dPJPx6GU+gJpFtgZXTJtpEJI=\nR:xopen_lim.h\nZ:Q1ufrG0dJSQLYn+EapYjLOtcQk0S0=\nF:usr/include/bits/platform\nR:x86.h\nZ:Q1IT8h8Y47KXG4hu6hdLeKjw3I+iU=\nF:usr/include/bits/types\nR:FILE.h\nZ:Q1SXkk4ynVNRdjFxOuUqy3PocNfWU=\nR:__FILE.h\nZ:Q1J0JCND6F0cBuf1zMWr8V4SD26Vc=\nR:__fpos64_t.h\nZ:Q1rDjilLAE9uK/GPHFXgPcgPSNaDA=\nR:__fpos_t.h\nZ:Q1dg73d2msGSH0sfkIy/BoY+JQZ3U=\nR:__locale_t.h\nZ:Q1U9HXjOCsBL+Mje7GIoBgbE7J+a4=\nR:__mbstate_t.h\nZ:Q146Ty7lXmNVINsLRhDSs2HpzkHec=\nR:__sigset_t.h\nZ:Q1fNxYdcdQcTM3AcEX/sRlhZKP+KM=\nR:__sigval_t.h\nZ:Q1bnlUIySMTwPQEWqkqdGo0Kkl/eU=\nR:clock_t.h\nZ:Q1EJucH1Kcc+Yxe4hg+ZQtilNgSdk=\nR:clockid_t.h\nZ:Q1pSPmASzQUFcfGdkpSEhgB84DdQ0=\nR:cookie_io_functions_t.h\nZ:Q1N4ANtlq0jPrmYJkCVphjCz90Guw=\nR:error_t.h\nZ:Q1GQXFeYwxlFj6JfflGKV4kthBejs=\nR:idtype_t.h\nZ:Q1ELuWylDRoR5XQdjSNgVprTFcvZs=\nR:locale_t.h\nZ:Q1Dx9fs3M6/I58wJJyY0xEw45hWWU=\nR:mbstate_t.h\nZ:Q1Q2A0gmW6TsIYOfg2leJWSZMJjFY=\nR:res_state.h\nZ:Q1cXLsTb6u3K2e6fH+CDtZN5YgiLI=\nR:sig_atomic_t.h\nZ:Q1/psDWeaP05Rd6AR5IwyRYSh5st4=\nR:sigevent_t.h\nZ:Q1n+sxewmi88ntSuF7aYmwqNk+UEM=\nR:siginfo_t.h\nZ:Q1YtvP2vsJJU69ss1cu0fa9bVoAM8=\nR:sigset_t.h\nZ:Q1fl09kTfGLUfKGrCJAomF1AfBj70=\nR:sigval_t.h\nZ:Q1x8nLn9TKOKRv/KeRGm8i1+jgtkM=\nR:stack_t.h\nZ:Q1ddOGnURm7pZiBrZmq1bwdisY5V8=\nR:struct_FILE.h\nZ:Q1Hb+LrFicsJ4JqkwdNpE+VJpXvPA=\nR:struct___jmp_buf_tag.h\nZ:Q1BYG4R3zyYf8O6zJe37QsVvH4Ivo=\nR:struct_iovec.h\nZ:Q10M3V6MTHvnx3uN1t9qX8fcz/RXo=\nR:struct_itimerspec.h\nZ:Q10WbThuaIet8OEkJrgB+pyr4zPcg=\nR:struct_msqid64_ds.h\nZ:Q1UjluDGEm6oEc+fQKsBeo3Np94ZA=\nR:struct_msqid64_ds_helper.h\nZ:Q1JRiphByZEQelCmdO/eGkSDbnDRc=\nR:struct_msqid_ds.h\nZ:Q1kqvfwB3cplO2XI2DR1ze8PoD7qY=\nR:struct_osockaddr.h\nZ:Q1D5gEJlgzJV44XHyWJExSCGb+TPM=\nR:struct_rusage.h\nZ:Q1ZtE5Jvo7ZUfH57i9RMWduDybSdA=\nR:struct_sched_param.h\nZ:Q15jWgSYoVbF7qEEuzaFVDO6pTvAs=\nR:struct_semid64_ds.h\nZ:Q1lIdSD9si+k+bm1ZBlqDUf6Oq6Dg=\nR:struct_semid64_ds_helper.h\nZ:Q1Wne60MiEvyaJg9K38EKFe/7Yd7U=\nR:struct_semid_ds.h\nZ:Q1KGNv7SKkPKSzafGtZ1NjlzWeKcI=\nR:struct_shmid64_ds.h\nZ:Q1CJ/VUhbvI8q7/8GzILEGRAyuRFU=\nR:struct_shmid64_ds_helper.h\nZ:Q1wibX6dAGVdMaNePutnTErYc83/E=\nR:struct_shmid_ds.h\nZ:Q1xaTW6WZS0PyqOZH6P/15W9PwNJU=\nR:struct_sigstack.h\nZ:Q1uNe0WNBgWLPm9tMZE4otJqNMBTk=\nR:struct_statx.h\nZ:Q1eiQNQTGWwAfd7tuMgi6j6gOvBNg=\nR:struct_statx_timestamp.h\nZ:Q1KlwhHB12SSg/tHQBnzIv8XUMh08=\nR:struct_timeb.h\nZ:Q1EgdexYqn91qTYZpmaaiQlzpJVyk=\nR:struct_timespec.h\nZ:Q1yIZrhuZRzUyb5farlenwWOK7SbM=\nR:struct_timeval.h\nZ:Q1i58Q4d2b7u0gLSHym+U3xvo/Ul0=\nR:struct_tm.h\nZ:Q1OuVxkjaQHgluw3yamPr6cXEwhOo=\nR:time_t.h\nZ:Q1jQOcj4dUideFC0c9RaqwOzo9xZg=\nR:timer_t.h\nZ:Q1ptouhECd736urQYxcqBSTVCvr3w=\nR:wint_t.h\nZ:Q1KBpCcG918dw8Nw8jy7K05tMHFkg=\nF:usr/include/finclude\nR:math-vector-fortran.h\nZ:Q1zmeYw9VrLhrOgd3CdjcShM+vZn8=\nF:usr/include/gnu\nR:lib-names-64.h\nZ:Q1RGuVZhPkQCnWo3qaeRBxvceIEhk=\nR:lib-names.h\nZ:Q17rbixqyqVJPkLLf5pD1bvz3b1jY=\nR:libc-version.h\nZ:Q1A8ZdQjRX/aojNtR78/lxZOMud64=\nR:stubs-64.h\nZ:Q1RGsxO+mp9cQ6tZ3/LhT3b8kXusE=\nR:stubs.h\nZ:Q1vhaAN7dQOoKxz2lM26yMBju25HY=\nF:usr/include/net\nR:ethernet.h\nZ:Q1y7nknb6zYqVOAqFdn5sJClVXotw=\nR:if.h\nZ:Q1nvpB5z7mXgiybORCm1ca9n6OpWc=\nR:if_arp.h\nZ:Q1iV2Smx6a6OUjHef542z7o0IXOkQ=\nR:if_packet.h\nZ:Q1Mc+78BVyabjzdfkDCl8jixQBtHM=\nR:if_ppp.h\nZ:Q1CV5ckEZPUXSODVBufon2yqAAr7A=\nR:if_shaper.h\nZ:Q1TrQ38Zj/2hs8BVk1cp1FtIYloic=\nR:if_slip.h\nZ:Q1CGsnb0u56baylQs4kxPV7vgoCws=\nR:ppp-comp.h\nZ:Q1wRhlBca+crLBBXWFhHLy3izGRt0=\nR:ppp_defs.h\nZ:Q16yEG0NKUinBRfhJ6hjnDa/ojVlA=\nR:route.h\nZ:Q1KSI/Pvy2fOGtYXRuDp1nk0CF1MM=\nF:usr/include/netash\nR:ash.h\nZ:Q1n1c2SdAkAfmpVZ97QK90TBqbwxU=\nF:usr/include/netatalk\nR:at.h\nZ:Q1j0uNlnpI4Dil1l+XB7sUvTrLsL4=\nF:usr/include/netax25\nR:ax25.h\nZ:Q1BwyZDNsgnnSvCtPMujWsE3jPOe0=\nF:usr/include/neteconet\nR:ec.h\nZ:Q1QNYE6H1TjOAP8CwY+iOoo8HI8AQ=\nF:usr/include/netinet\nR:ether.h\nZ:Q1RENMDVRb7W5FHeCMhPKsT7aLXvw=\nR:icmp6.h\nZ:Q1DAkIYreTFxkbeJiZUok8zS9AMhY=\nR:if_ether.h\nZ:Q1OzofkycXSMPo88YILhww9QodTM4=\nR:if_fddi.h\nZ:Q1Arp0pNFFqKGHjFYaQt0zwlcNIo8=\nR:if_tr.h\nZ:Q1fQdyMaEFcDz6wMOpkt73A1niB78=\nR:igmp.h\nZ:Q1zCGxXFYJOxrCBSZ6nVXpxFbnZgA=\nR:in.h\nZ:Q1kGnMB40CdcSQkjB1qWAruZU1dJw=\nR:in_systm.h\nZ:Q1njFh3b9QOWQfhTe8EfGt2aR8FBE=\nR:ip.h\nZ:Q19jdlxnp9yP6BkHU4h471PAZ5oHw=\nR:ip6.h\nZ:Q1IC0Y13i5RSfKY/Mt88oNJPlFHiQ=\nR:ip_icmp.h\nZ:Q1PEuoQPFrHAUexmw8cS1l7MY1CSs=\nR:tcp.h\nZ:Q1mot0/ZQkAP/BMgT6II6HSiL6UN8=\nR:udp.h\nZ:Q1YHKl+VGFl0VvphRMyXRWwgnzDyI=\nF:usr/include/netipx\nR:ipx.h\nZ:Q1MqW9wGHTh8cf2AszyPfrsynzkX0=\nF:usr/include/netiucv\nR:iucv.h\nZ:Q1N5QVMtqJd5+uLTLiynF6jZKoxLY=\nF:usr/include/netpacket\nR:packet.h\nZ:Q19JtCobF6BiMl7JcEkJDqCmhOME8=\nF:usr/include/netrom\nR:netrom.h\nZ:Q1BAh6PYcWpaxckUYuiBmKPMi2GxE=\nF:usr/include/netrose\nR:rose.h\nZ:Q1d6ORj8liPNi1/ej53cbnlDk7xBs=\nF:usr/include/nfs\nR:nfs.h\nZ:Q1E7QHv3p4Hw8/oX3cvJhYqdAD7LY=\nF:usr/include/protocols\nR:routed.h\nZ:Q1YoIXjEOlXGBy0nW+F5NdAKJ34Jg=\nR:rwhod.h\nZ:Q1c1j0UMWETTyY06xDK4dUACnr4RY=\nR:talkd.h\nZ:Q1+45Bozq/DgiIIKUeGy/N7NAWiEo=\nR:timed.h\nZ:Q1bZZehUz7GFACOwtUFWGN183d2qY=\nF:usr/include/rpc\nR:netdb.h\nZ:Q13PafBThnQBdCzRUzZL4ZXIsTPD0=\nF:usr/include/scsi\nR:scsi.h\nZ:Q1P5NpxkRrSuI06EeDtJi9trKaPcw=\nR:scsi_ioctl.h\nZ:Q1ahTlAXbjix8NRtypFi/C/irPFug=\nR:sg.h\nZ:Q1XdGO1nbpOBKIL310BlYSxTn+CgM=\nF:usr/include/sys\nR:acct.h\nZ:Q1oBW2Rc2WNNneBb3tm6n9Rjgp+10=\nR:auxv.h\nZ:Q1DL98C0UOAZ0rr3gWiCZVxgzx388=\nR:bitypes.h\nZ:Q1tOtSJ/abm7iClxywoOXq8ybj4Rc=\nR:cdefs.h\nZ:Q1wZ8m9k17h8ECeVmYblGqylqBTBQ=\nR:debugreg.h\nZ:Q1kAv91tJzF/0LlMHrVCFqHXua9Qg=\nR:dir.h\nZ:Q1/uyjaoJ+gE1Y7LPUb1IT81QKYSQ=\nR:elf.h\nZ:Q1iU1Q50rOalBKOXVXPR1GvrNM9Ug=\nR:epoll.h\nZ:Q14LoLFRxhcaGMOMBRBNAf2FU2v3g=\nR:errno.h\nZ:Q1wu1Y3kZETgN6egMPU4w+hEyxrKc=\nR:eventfd.h\nZ:Q145R4P9LLLpf0KoSJX8OvVh1QV1E=\nR:fanotify.h\nZ:Q18bdRyuSwLKzZhtquFo8fH4RVuwg=\nR:fcntl.h\nZ:Q1Cb5OYLvoeCWR8NyxUANnj3oMrc8=\nR:file.h\nZ:Q13LImpWYA03xTHR3vwTT6LlWDPpU=\nR:fsuid.h\nZ:Q1fSX/RhtkTj4fvCDGcEvRd2ydksU=\nR:gmon.h\nZ:Q1p+sqRmN1eZskaxYD5hxzz7ubMF4=\nR:gmon_out.h\nZ:Q1OB032efTUP2sPiyWkfpbS8jnSss=\nR:inotify.h\nZ:Q1MEnBNoihgFzHh68e7QuxlxjVr2s=\nR:io.h\nZ:Q1u6MfO8ndxgBKzkINjZQV8IP+EtY=\nR:ioctl.h\nZ:Q1tUpPyMSOsorVnSQf5ft0/g5vE5g=\nR:ipc.h\nZ:Q1ksMfO41m7yQcO3+N0dZ2xg+n0aA=\nR:kd.h\nZ:Q1cKQLD0mvitJHF+O0WvOV3F6qfUM=\nR:klog.h\nZ:Q1sWtKFp3JyWGszaqFw0l7bKWwL00=\nR:mman.h\nZ:Q1S7zpho0gAR7daTL5uF9G2o8NKtI=\nR:mount.h\nZ:Q1Qi3Szn//0lsTnWbc+m4WUCUMbUg=\nR:msg.h\nZ:Q1vvSoaEAtYGELmE1taolRfZ/eSe8=\nR:mtio.h\nZ:Q1Bu7Iqd0tO5O00LrjfEUJIn2MjaY=\nR:param.h\nZ:Q1fK2u1ND8T786H9+d/6QdX7PLyBE=\nR:pci.h\nZ:Q1kzjqJwrlyVrznR8vjaFSmQyo96M=\nR:perm.h\nZ:Q1UxK82dtxZ2Q2MlLTsLJJxCxP3jo=\nR:personality.h\nZ:Q1BXM5HjZuqfDdiMWsGcHoomBvLYM=\nR:pidfd.h\nZ:Q1JEE1gfCHbzhh0rOET5VmqpuQing=\nR:poll.h\nZ:Q1EpljjoIbVclnRgSpD6FyMAju0Bk=\nR:prctl.h\nZ:Q1V4V9i0TxLE8xXrDcab/0pfUj2BE=\nR:procfs.h\nZ:Q1t5RYkZnGLmeqtILnzhgictsjego=\nR:profil.h\nZ:Q1OlQaOdv0l+OrL6hqNs0kFso5ahk=\nR:ptrace.h\nZ:Q1ktqLHMoxlM8rZ7q2DgbmrJUzSXc=\nR:queue.h\nZ:Q1jgm8WyCj8h/k1yozS965FkQk+2E=\nR:quota.h\nZ:Q12RORwtOf6FsIkq66ADXFY4Z+4uU=\nR:random.h\nZ:Q1Sp0dZjy/oXhBzJLqNqGVyBtuTm8=\nR:raw.h\nZ:Q1wP+YmIc8ffnjdxO0KdGASfkAeZU=\nR:reboot.h\nZ:Q1HYlp+ZgI5MMVg7tWveZJIOhQ7bM=\nR:reg.h\nZ:Q1Qc8oce2Q1N7bW3pGuucLbMJM7U0=\nR:resource.h\nZ:Q1/qbkqtt9tHqEA50T8oqLbZTmg4Y=\nR:rseq.h\nZ:Q1BydlVVfBBurFK9apXNhLgcrADEQ=\nR:select.h\nZ:Q1T+R1X8sPX9nJMqKTjb5DB+yEinE=\nR:sem.h\nZ:Q1r7Vobb9XAef1cvg1fIohy5t9n5k=\nR:sendfile.h\nZ:Q1mMsyCTbkt5PLlL6KlAcVDcbSvGU=\nR:shm.h\nZ:Q1jYrcSeomx0d0+whiJX0yRbifLWY=\nR:signal.h\nZ:Q1cRlR4DU3IUe3yAUXF59SdBu1ViI=\nR:signalfd.h\nZ:Q14NNZ6yZWGV2jVk7Ytm15BtiZw0g=\nR:single_threaded.h\nZ:Q1+rFoP8M3LJMZ+oX3h9KUQt6Q5vs=\nR:socket.h\nZ:Q13g9KTuBBgMiILGvrrIK1Zq4K4a4=\nR:socketvar.h\nZ:Q1WwsprqlOdIDjMfMgoEs2yPYYRts=\nR:soundcard.h\nZ:Q1M0dIKKb79ASSI/IvktNx1bke4T0=\nR:stat.h\nZ:Q18oZiu7liBjkB50OfE3F4Vc9QDRs=\nR:statfs.h\nZ:Q1su1gbuL+CE488P96OdowVEWfqac=\nR:statvfs.h\nZ:Q1Vc+KQux4+MXmyO90F5LgDHqM9sg=\nR:swap.h\nZ:Q1vjXBe4zYLTQ/kQ0sFik581ZpRHQ=\nR:syscall.h\nZ:Q1sFr50B3LRoC1k0DHOXwcMmv79Vo=\nR:sysinfo.h\nZ:Q1zo3oV/SUr4S50aFYeRZL8qFiB8M=\nR:syslog.h\nZ:Q1n/2uw/eyE8yEIeGYSSwz1fynCfo=\nR:sysmacros.h\nZ:Q1PTkKTCVi6IK/OYih7Ge2/GLbYNE=\nR:termios.h\nZ:Q14oxICVAf+UqFYH4xgeZ0loVn2l4=\nR:time.h\nZ:Q1aw6F7tlJtqiVDGqkF2uxT+CXXl4=\nR:timeb.h\nZ:Q1obM66I6lYLD4KqqlI4O44XGxVEI=\nR:timerfd.h\nZ:Q1wqzaCDdLWUfaHA9jhtdxKj5fRJY=\nR:times.h\nZ:Q1efX129TRWu0dEpDx3j1kF4W26eI=\nR:timex.h\nZ:Q14orO5zGISVMSg7UhRxObG0+15k0=\nR:ttychars.h\nZ:Q1SmeiipPJzXNfMG33PSbCWdx2jCM=\nR:ttydefaults.h\nZ:Q1bVFnEzx72KNSPXTpPR7QnPDFylo=\nR:types.h\nZ:Q1aAFz61v7EyZl5gLHSi/i9YWPv04=\nR:ucontext.h\nZ:Q1wWydqV7MNevMIjQIWNLaMUn76ZY=\nR:uio.h\nZ:Q1/zNqjHXhEPHcdZdHUuVTRq+R8Lk=\nR:un.h\nZ:Q13v7IFrtSq3FVsgB3tdJcUe/bNbc=\nR:unistd.h\nZ:Q1/DbkoRGatacGnwj5mYdm5tsf7Ng=\nR:user.h\nZ:Q1z+0bXuyxisYfC5I+WkT33DYoXV0=\nR:utsname.h\nZ:Q1/r0ciSlv8wkGnmSXNdI9202HsjM=\nR:vfs.h\nZ:Q1vIVKx5fuaM7+bO18tTfDjDwPdoM=\nR:vlimit.h\nZ:Q1btZxa0/bDgiSuo2gDv5LTrj0ZBY=\nR:vm86.h\nZ:Q1Ez0ZOrBH6GHrD3GaxmUZXAOxCxQ=\nR:vt.h\nZ:Q1iX9ljDYxe8LioLwAMMW1csnLldI=\nR:wait.h\nZ:Q1DVDWucpIDi1EhtmQWb3mPawIXuk=\nR:xattr.h\nZ:Q1KdLzPvMA6Z3obugs3R8NvZXchD8=\nF:usr/include/sys/platform\nR:x86.h\nZ:Q1KlfzxdXjJfHL8bsKziNUfdvSIAU=\nF:usr/lib\nR:Mcrt1.o\nZ:Q1vKsmCrU3RzUeJ1w1ElWHMgo4qEc=\nR:Scrt1.o\nZ:Q1VqvHe01uB+nYO20M9Keiy1UNbew=\nR:crt1.o\nZ:Q1IKhL2M8P6s8STqT7rwZ+A/QhMK0=\nR:crti.o\nZ:Q19M54bskEEjeA/TGE5bW+5xxNymI=\nR:crtn.o\nZ:Q1+7gx3o0uTjESAd/hVWyvJOaPQ88=\nR:gcrt1.o\nZ:Q1qoDEXbX/yzuRIZHoSSSTFQcTX18=\nR:grcrt1.o\nZ:Q1SY12Pjwh7cXiVag78ZMabGN5c1o=\nR:libBrokenLocale.a\nZ:Q1hSzveb1SEzS1hFtwxmqbNQsmce0=\nR:libBrokenLocale.so\na:0:0:777\nZ:Q1iowkh8m45jIdU6CPLss9Ihu8QXI=\nR:libanl.a\nZ:Q1yYoXwIphKzmby8/+1iFFYUK/EK8=\nR:libanl.so\na:0:0:777\nZ:Q1f5Xrv489Y6aGoXJ0qqBonkkpnKc=\nR:libc.a\nZ:Q1AD0w7m7QHPIS0GbMWYr4pxAxBXc=\nR:libc.so\nZ:Q1xTZST2e6c4r/R6nT2Ml8OLYD3CI=\nR:libc_malloc_debug.so\na:0:0:777\nZ:Q10gZ+WYtsx0PgPGfJ5OmpTtkpGrM=\nR:libc_nonshared.a\nZ:Q16YwP2IdoU0+Jtzum5enGBh0cif4=\nR:libcrypt.a\nZ:Q1bH8mzJfiMoSzG2afviBOEKKBP6Q=\nR:libcrypt.so\na:0:0:777\nZ:Q1C0FfPItT42TaT1VQjs2lRr0+Z30=\nR:libdl.a\nZ:Q1yYoXwIphKzmby8/+1iFFYUK/EK8=\nR:libg.a\nZ:Q1IzRav8wl9b9CyA1dpZdIlbsmiw0=\nR:libm-2.36.a\nZ:Q1FNcHE+7ig5X7tkobBro9lVQUokk=\nR:libm.a\nZ:Q1ll6civn1TocNrL3QpcMBbMZ1XBQ=\nR:libm.so\nZ:Q1L8Vv1JABbkx6+WOYyRXdpjdbM3w=\nR:libmcheck.a\nZ:Q17jL5HMXe8Dr8tvNw/yZo7Qr2nMc=\nR:libmvec.a\nZ:Q1KrwqQwiHPLkFt6JIlWMhZjqMfqQ=\nR:libmvec.so\na:0:0:777\nZ:Q1NtTj4O/8giDFUObFeIjdvAPMyx4=\nR:libnss_compat.so\na:0:0:777\nZ:Q1riSDfdiB84d/o2OoeNx1FUb35kE=\nR:libnss_db.so\na:0:0:777\nZ:Q1F8w2xisoB8aGemOyIINbIbbcuYY=\nR:libnss_hesiod.so\na:0:0:777\nZ:Q1OSklH7v/2nLmbdUS+kThCt47wQk=\nR:libpthread.a\nZ:Q1yYoXwIphKzmby8/+1iFFYUK/EK8=\nR:libresolv.a\nZ:Q1CO2jP6xnurG5I4IgRQXg6Y8k+uI=\nR:libresolv.so\na:0:0:777\nZ:Q1MDGlz4N28pvqQ4GXTM5uWDlJgKo=\nR:librt.a\nZ:Q1yYoXwIphKzmby8/+1iFFYUK/EK8=\nR:libthread_db.so\na:0:0:777\nZ:Q1vi9jK8KfLtVObcLdTKGPm0TcPec=\nR:libutil.a\nZ:Q1yYoXwIphKzmby8/+1iFFYUK/EK8=\nR:rcrt1.o\nZ:Q1VqvHe01uB+nYO20M9Keiy1UNbew=\n\nC:Q1uBmdosYHtHIYUvTlrZyEd2dGbfw=\nP:make\nV:4.3-r1\nA:x86_64\nS:718019\nI:2316203\nT:GNU make\nU:\nL:GPL-3.0-or-later\nD:so:libc.so.6\np:cmd:make=4.3-r1\nF:usr\nF:usr/bin\nR:make\na:0:0:755\nZ:Q1Nt0ebSvEGdQ5HeoRm/6+WXLuBSw=\nF:usr/include\nR:gnumake.h\nZ:Q1qS0rOWscRPFcpEkzDTHsdf5pNTc=\nF:usr/share\nF:usr/share/info\nR:make.info\nZ:Q1gFO/iWZTUg0XFemboxmPPOdDWxc=\nR:make.info-1\nZ:Q1hV0adG5ms7Cw1nFaJ760Nu2HP9I=\nR:make.info-2\nZ:Q1nWrAy/A6CRnvvRx+XXN3K3LcsHA=\nF:usr/share/locale\nF:usr/share/locale/be\nF:usr/share/locale/be/LC_MESSAGES\nR:make.mo\nZ:Q1UoygzuJifbOvZrrvifZ/5i+GQ8E=\nF:usr/share/locale/bg\nF:usr/share/locale/bg/LC_MESSAGES\nR:make.mo\nZ:Q1D8zUseN5P/Uq/LEg+n3w0hdkCC8=\nF:usr/share/locale/cs\nF:usr/share/locale/cs/LC_MESSAGES\nR:make.mo\nZ:Q1FRbT92mw5ErKAtPJIW17rV5BJ+E=\nF:usr/share/locale/da\nF:usr/share/locale/da/LC_MESSAGES\nR:make.mo\nZ:Q1nKWBz0htstBYlDRLr48DpXjal2k=\nF:usr/share/locale/de\nF:usr/share/locale/de/LC_MESSAGES\nR:make.mo\nZ:Q1mwDXsMdzMg1DZZoWN3xq+Cg5RbI=\nF:usr/share/locale/es\nF:usr/share/locale/es/LC_MESSAGES\nR:make.mo\nZ:Q1DLm+0rQPJd4hqN8Yu3uIVDqlMjQ=\nF:usr/share/locale/fi\nF:usr/share/locale/fi/LC_MESSAGES\nR:make.mo\nZ:Q104A+dyyhX4YyjUfhPxrH1f3G05I=\nF:usr/share/locale/fr\nF:usr/share/locale/fr/LC_MESSAGES\nR:make.mo\nZ:Q1oL441/vu7QROHOOORI+RH4G8YZg=\nF:usr/share/locale/ga\nF:usr/share/locale/ga/LC_MESSAGES\nR:make.mo\nZ:Q1KejrDImaRkUSBUX5nJTiJamxEqM=\nF:usr/share/locale/gl\nF:usr/share/locale/gl/LC_MESSAGES\nR:make.mo\nZ:Q1SH01dvyalbVMjb6eeWcsDoJyJf4=\nF:usr/share/locale/he\nF:usr/share/locale/he/LC_MESSAGES\nR:make.mo\nZ:Q1opI2LSP/h9IOuo+xPrWtM0RvH0k=\nF:usr/share/locale/hr\nF:usr/share/locale/hr/LC_MESSAGES\nR:make.mo\nZ:Q1Pzq7yS+IAK6RAMtcyv7gNTlslzg=\nF:usr/share/locale/id\nF:usr/share/locale/id/LC_MESSAGES\nR:make.mo\nZ:Q1FsbyJA7hCyJzU6UZo/tnnW7hcF8=\nF:usr/share/locale/it\nF:usr/share/locale/it/LC_MESSAGES\nR:make.mo\nZ:Q1X3FSbDjJ7iqYbDZBD+fN3ep5HSQ=\nF:usr/share/locale/ja\nF:usr/share/locale/ja/LC_MESSAGES\nR:make.mo\nZ:Q1G3qEkpJKi6QyLH2Gc7ARUlIwk5U=\nF:usr/share/locale/ko\nF:usr/share/locale/ko/LC_MESSAGES\nR:make.mo\nZ:Q1HYh4HFaor00R8bM7RqbH2gqisNU=\nF:usr/share/locale/lt\nF:usr/share/locale/lt/LC_MESSAGES\nR:make.mo\nZ:Q1ep6RN5O3B6YvyCLxtFsksFvLD0E=\nF:usr/share/locale/nl\nF:usr/share/locale/nl/LC_MESSAGES\nR:make.mo\nZ:Q1Oji4JEwYMe+0C2HeZ+n4f4qSsjc=\nF:usr/share/locale/pl\nF:usr/share/locale/pl/LC_MESSAGES\nR:make.mo\nZ:Q1SIB0qp9S98FIVlOFB86Q59PHyDI=\nF:usr/share/locale/pt\nF:usr/share/locale/pt/LC_MESSAGES\nR:make.mo\nZ:Q14WLH7KfU40j6b9dyLxqNonDInmc=\nF:usr/share/locale/pt_BR\nF:usr/share/locale/pt_BR/LC_MESSAGES\nR:make.mo\nZ:Q17SABZzS7VpcAFYEKoKr5yC61R7I=\nF:usr/share/locale/ru\nF:usr/share/locale/ru/LC_MESSAGES\nR:make.mo\nZ:Q1Et5wX4ixtCFfrRFdgnEDW6Ry4JE=\nF:usr/share/locale/sr\nF:usr/share/locale/sr/LC_MESSAGES\nR:make.mo\nZ:Q1ZKZ2oonb6FIFOYBo5x+NbtxPY6o=\nF:usr/share/locale/sv\nF:usr/share/locale/sv/LC_MESSAGES\nR:make.mo\nZ:Q1M+dVedZ16yoKlPoQ8htBlA0CakU=\nF:usr/share/locale/tr\nF:usr/share/locale/tr/LC_MESSAGES\nR:make.mo\nZ:Q1AhWvoCT3QhH9X6Kh6MOBH02bPho=\nF:usr/share/locale/uk\nF:usr/share/locale/uk/LC_MESSAGES\nR:make.mo\nZ:Q1FD4/GzlG8hdIUF8tsMkhpDhmx8s=\nF:usr/share/locale/vi\nF:usr/share/locale/vi/LC_MESSAGES\nR:make.mo\nZ:Q1xlucHJlrPMEVOLihJ5BeparXlnM=\nF:usr/share/locale/zh_CN\nF:usr/share/locale/zh_CN/LC_MESSAGES\nR:make.mo\nZ:Q1tWgzIS15p218HChXVmfVZMPBH98=\nF:usr/share/locale/zh_TW\nF:usr/share/locale/zh_TW/LC_MESSAGES\nR:make.mo\nZ:Q16PgvlEiaLJ5L73oCuk9r4PwIecA=\nF:usr/share/man\nF:usr/share/man/man1\nR:make.1\nZ:Q1r3/UMOGlzGR/aO4A+O5CUh3K9UM=\n\nC:Q1CUAw1NmUEt86xKF2BxXM5v/bGGo=\nP:pkgconf\nV:1.9.3-r3\nA:x86_64\nS:58983\nI:184418\nT:An implementation of pkg-config\nU:\nL:ISC\nD:so:libc.so.6 so:libpkgconf.so.4\np:cmd:bomtool=1.9.3-r3 cmd:pkgconf=1.9.3-r3 so:libpkgconf.so.4=4\nF:lib\nR:libpkgconf.la\na:0:0:755\nZ:Q1Kjw6j6Ze/qVlGALX3Eq87uUTX9Q=\nR:libpkgconf.so.4\na:0:0:777\nZ:Q1sTfunnygUT36FjshonXSXrHczc4=\nR:libpkgconf.so.4.0.0\na:0:0:755\nZ:Q1QmTmG7sma08YvZx3mY9o47Q0yQw=\nF:lib/pkgconfig\nR:libpkgconf.pc\nZ:Q1tlK7ytaNhxljVqk1dYqnC3rXTgM=\nF:usr\nF:usr/bin\nR:bomtool\na:0:0:755\nZ:Q17wg2Q+ll0zhYylkcQXl3c41Lldk=\nR:pkg-config\na:0:0:777\nZ:Q18oszBu4K1Rwi+tYKAA91sDfWTzE=\nR:pkgconf\na:0:0:755\nZ:Q1Ef8Gzap0Ybf3ZZf9J3MRLfQ8Vlw=\nF:usr/share\nF:usr/share/doc\nF:usr/share/doc/pkgconf\nR:AUTHORS\nZ:Q15FCxHcER7mw5ipXAGuicI9k+6Oo=\nR:README.md\nZ:Q10HDZDF8opKMGZHouzIAJYZS/V6g=\n\nC:Q1u8LRcrO4WP7iqIf2jl2BW+MRUdI=\nP:build-base\nV:1-r3\nA:x86_64\nS:992\nI:4096\nT:virtual package for builds\nU:\nL:MIT\nD:binutils gcc glibc-dev make pkgconf wolfi-baselayout\n\nC:Q1WVIrOckjyzMnL2X9pZChIn9eAsI=\nP:go\nV:1.19.3-r0\nA:x86_64\nS:113404380\nI:415890922\nT:bootstrap golang compiler built with Google-provided artifact\nU:\nL:BSD-3-Clause\no:go\nD:bash build-base so:libc.so.6\nF:usr\nF:usr/bin\nR:go\na:0:0:777\nZ:Q1dzAR62lisb1s/RkDUUhLl4dlbhc=\nR:gofmt\na:0:0:777\nZ:Q1mWSeOCBlXQujxhIgfE0jxuU6WHQ=\nF:usr/lib\nF:usr/lib/go\nF:usr/lib/go/bin\nR:go\na:0:0:755\nZ:Q1SPvsn3oD1wHRRx3mcZ14VLegsPI=\nR:gofmt\na:0:0:755\nZ:Q1JmyNiD5LBdJ1HPxcuvZx8YMNEj0=\nF:usr/lib/go/lib\nF:usr/lib/go/lib/time\nR:README\nZ:Q10mRUULmUiqMUADAIPOdy5i+DOR8=\nR:update.bash\na:0:0:755\nZ:Q1nghPw/OOJ83SbYBKDD8mN/t/wKI=\nR:zoneinfo.zip\nZ:Q1ZRTwxM3Hm6ixTJBJSFWu/5y3Jv4=\nF:usr/lib/go/pkg\nF:usr/lib/go/pkg/include\nR:asm_amd64.h\nZ:Q1QDSIKHrKLhYiqL70ed7LkTk1tpY=\nR:asm_ppc64x.h\nZ:Q12IRqf2WhdQQu/t+jYH3/HQuuhdM=\nR:funcdata.h\nZ:Q1W1n3AR70W//lKxC3srFNLJP6qcc=\nR:textflag.h\nZ:Q1gki+4JwChxwAebk4uxBHfXzAsAQ=\nF:usr/lib/go/pkg/linux_amd64\nR:bufio.a\nZ:Q1V9QVDopmfsbjhTwwG1bkhKyVgCs=\nR:bytes.a\nZ:Q1A+YRPGwMDFfeHsPqncLT9VMX/IU=\nR:context.a\nZ:Q15jILHOyC25NcYgDTv3YAsxaf0Qo=\nR:crypto.a\nZ:Q1/oszuPMhXflb79kr9GFfmKHnIgM=\nR:embed.a\nZ:Q1kvT01O/mDNqUzT3KkDaYucurhIg=\nR:encoding.a\nZ:Q164OH9bFroZMWqS8trMiCmL3jBJM=\nR:errors.a\nZ:Q1QhC75SYPc72pTe9su2y0Uh8c8Nw=\nR:expvar.a\nZ:Q1HRGmpc61Yk4ZjjmNx9GG3fkF1bE=\nR:flag.a\nZ:Q1dP2NcTYj7Yj2FluVHzcurngNkkE=\nR:fmt.a\nZ:Q1EdcHsL8arzivO+mRo+gO+LWFcTs=\nR:hash.a\nZ:Q1vMZbtn/OItgxR8m6FV2K7fN6+88=\nR:html.a\nZ:Q1lYXRteOAOlhv7gLz/rtmBnss6sI=\nR:image.a\nZ:Q1pl4SWJNcRhucDZggIa54H02rlO8=\nR:io.a\nZ:Q1rMX2YXVlaNd6YBmEO20pPATeZT0=\nR:log.a\nZ:Q1kugYBj5z3waC70hbiQ7Ezent/n4=\nR:math.a\nZ:Q1OlX7R9j2gWS7bURVdLh6xYqxr04=\nR:mime.a\nZ:Q12kI/8IfYEesvjwMCTaulhosX3B0=\nR:net.a\nZ:Q1gtYt3QEUqRMnRiLvEG4gv/TdRWc=\nR:os.a\nZ:Q1DSn4tyfCAZ4AGW4Yni6gNHsxGOg=\nR:path.a\nZ:Q10Ghaz3MIYiTTaFcBFhAzMPPI+q0=\nR:plugin.a\nZ:Q19n51b62AEc0LCyYFaXiKxB4+Sso=\nR:reflect.a\nZ:Q1L/oqaKQKOOAVWTxc9iGblEyOHFw=\nR:regexp.a\nZ:Q1ZJFKJI/ijmaQVbnV0JFEZn8ADgs=\nR:runtime.a\nZ:Q1FSCZRN3GGtCWAr1tcE3PH58RCf8=\nR:sort.a\nZ:Q13ca9qmqWUEEQNRfKL3F+5kKQSlY=\nR:strconv.a\nZ:Q15+5UKJ+J9hKta8s/K9Oqzskl6yw=\nR:strings.a\nZ:Q19X+CLkbrGGJc7VM0qfSbtp6YKHY=\nR:sync.a\nZ:Q13zJUxXSAS8d1tn4WAc5EyLVM34U=\nR:syscall.a\nZ:Q1pqWUXp8ulV8fJU6rM1w0cxLIEu8=\nR:testing.a\nZ:Q1oir4ISgCfs6seXwyJVNomSew+Nk=\nR:time.a\nZ:Q17jJoB5CJEHI3p1sQ4s2VAojb7DU=\nR:unicode.a\nZ:Q1HvZEJuTSKexkeu+Evig10ibiIBk=\nF:usr/lib/go/pkg/linux_amd64/archive\nR:tar.a\nZ:Q1f9M42AFYZ59cHl8x7I2DHgmJkOE=\nR:zip.a\nZ:Q1Up6Li+e43dNtJd+XlDObx6Ubtb8=\nF:usr/lib/go/pkg/linux_amd64/cmd\nF:usr/lib/go/pkg/linux_amd64/cmd/asm\nF:usr/lib/go/pkg/linux_amd64/cmd/asm/internal\nR:arch.a\nZ:Q17IQ9xF7Htb4aW3RPV5GIQf1yAiA=\nR:asm.a\nZ:Q1/rdLMTrPxWW/FjRSwSSuVwb6A1s=\nR:flags.a\nZ:Q19GKNwwFXPy+PKlc+3ExFMtemXxQ=\nR:lex.a\nZ:Q1b82Az24Yx3BY1Ll9Y1lqGDbff2s=\nF:usr/lib/go/pkg/linux_amd64/cmd/compile\nF:usr/lib/go/pkg/linux_amd64/cmd/compile/internal\nR:abi.a\nZ:Q1zrfUNu6bg6/TJaFZjn22OsTMg2o=\nR:abt.a\nZ:Q1WnTpERUEjPWZTrmxMvOBsVkS8uw=\nR:amd64.a\nZ:Q1/a8iulcT0HQhxQhvo8qZaLcVw3Q=\nR:arm.a\nZ:Q1auN58BMdyYd83ga83irEcZ5cl7Q=\nR:arm64.a\nZ:Q1nd3YdpnQoNxypJYmtzNqjgq+N1s=\nR:base.a\nZ:Q11gCKMmT+RPWJWNiYdi+HGxV9ub4=\nR:bitvec.a\nZ:Q1HgxsQimdcusmP+cEhn4azX44sVU=\nR:compare.a\nZ:Q18hVDzFMDFrIzBQedE51JyLPK/VE=\nR:deadcode.a\nZ:Q1g1cmRWCTNEYPgp/9WfnpOxOBmPM=\nR:devirtualize.a\nZ:Q11jJPt5fsSzeHASx5a7OgE65sezg=\nR:dwarfgen.a\nZ:Q1FPiqGwU+g2DDih8ZC1oObhHTW2g=\nR:escape.a\nZ:Q1r+tsawMj71UhjFElMh0qIfWwL4s=\nR:gc.a\nZ:Q1KdWgZqMN8nbzD6MFEHwHg1HArw8=\nR:importer.a\nZ:Q1RZC2FSTou1DKQ0iUmezXOtflZ68=\nR:inline.a\nZ:Q1e5eGRBggImhjmlxFgRopdM8C8KE=\nR:ir.a\nZ:Q141VPo1d/t/YpaOrBpzJq67PXe98=\nR:liveness.a\nZ:Q1MqNvpEFQ1vYjcld/3fw11QJEEXY=\nR:logopt.a\nZ:Q1py2euR5+reJLtOx9lT4MzvU2Vck=\nR:loong64.a\nZ:Q1noUNAO6qkJSZ7tBVTrWlyOMSHyk=\nR:mips.a\nZ:Q1wtYYmXjPfkOUNyjXjdO3LLGUmSk=\nR:mips64.a\nZ:Q1pxJGhtBbRMjdLDyBd/XMbSCMfJA=\nR:noder.a\nZ:Q1sYiTlTpPe37qjJhQFS7PEqsomQ4=\nR:objw.a\nZ:Q15SlU2a7k6NKxnIRtS1cQzI9f0Yk=\nR:pkginit.a\nZ:Q1ByZYtrqamvklPWs1CYEGEzV89DA=\nR:ppc64.a\nZ:Q17qqlONQQEy1z8JEjg2L1CMmN2X8=\nR:reflectdata.a\nZ:Q14iwxUPoNnALhOx/3r3lbr9jWdS4=\nR:riscv64.a\nZ:Q1mXD34LRx2kgC0TVap0/8grHjPKE=\nR:s390x.a\nZ:Q11SvODETicNoecxD9tRjTVmvNYFY=\nR:ssa.a\nZ:Q1etjIjoXpckcGSsoNiJk+UnhEFno=\nR:ssagen.a\nZ:Q1KfrYSI+81NAtjZVK9VxP/HsyIxg=\nR:staticdata.a\nZ:Q15/vqVXocFHJAIupB0QTiI2Eg2l4=\nR:staticinit.a\nZ:Q1lnWHzIhyHqtAdFyPr5jHhJdflrY=\nR:syntax.a\nZ:Q1553AErwITj5vxM47FTlHVTe9f9k=\nR:test.a\nZ:Q1WcMJv3cfeNRGcPp8F4hRm7N2+1s=\nR:typebits.a\nZ:Q1lujbtk+PrIw7zKq4jf32Dx1Svnk=\nR:typecheck.a\nZ:Q1uGCX62fmlaoeGrPXYHpNw00orR0=\nR:types.a\nZ:Q1V39TgUtdA1fM3o/kZVdxqv66P/Q=\nR:types2.a\nZ:Q1T0Cs7k0MYWGZxTLp3a5aRJflzlQ=\nR:walk.a\nZ:Q1XZUBlpjxedDMqbYfnKk8tVt8rv0=\nR:wasm.a\nZ:Q1eYYl8nTWF6fuRI5jISt4MnHcius=\nR:x86.a\nZ:Q1gWV3qM6O9al20pLYuhbBMvs7WSk=\nF:usr/lib/go/pkg/linux_amd64/cmd/go\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal\nR:auth.a\nZ:Q1jPqRRQR30YMyYbISwpMKuDGrEYw=\nR:base.a\nZ:Q1qAH5Ev/Oon/Q+5tMqPw35xkou4I=\nR:bug.a\nZ:Q1yod1MFesx8Vd+qjZcrQONOF4kzE=\nR:cache.a\nZ:Q1YhH2hJNgfRpVJSfI9eqL9H6jhvo=\nR:cfg.a\nZ:Q1dMmSXA1fDgeJg4MQXbi8mL2iHag=\nR:clean.a\nZ:Q1X83bDdoKK3c/k0x5xnZf7IRAHg8=\nR:cmdflag.a\nZ:Q1ec6rrYpMnMnr+QLxvbYVoV0oCvg=\nR:doc.a\nZ:Q1Lo5M/0Fx5YFpkZWETLXXZnbEQzw=\nR:envcmd.a\nZ:Q1Fnm7RiRUPTLBZOT0ATR0LVFZO3o=\nR:fix.a\nZ:Q1o54Ef3SJlocyN/M1IQ00PwNtN7U=\nR:fmtcmd.a\nZ:Q1uEdOBENBqV7ofu2XNUxbxfDHDEY=\nR:fsys.a\nZ:Q1LDJGiiESirFe8vLSHk1UydZ6Sw0=\nR:generate.a\nZ:Q12Xf/vdQBi1XYUj8p4R9IqMV8FPU=\nR:get.a\nZ:Q1w7ilUhl7QseYu7FiOnpEK1gAqeM=\nR:help.a\nZ:Q1GQHWMZNDbKqmX6L3N1UDZW7wKJQ=\nR:imports.a\nZ:Q1uK05kNC2d0uc2epgblHs8/hR8mA=\nR:list.a\nZ:Q1eVk7aPQTUsEY3zomLN7N5nhD4SY=\nR:load.a\nZ:Q1NZ1/2pO/Yq5YYKyGmXX60+BjDjI=\nR:lockedfile.a\nZ:Q1hApo2wkzVdq8nJQjAg+Z9Y/ieM0=\nR:mmap.a\nZ:Q1otLWLT5zDaEbKqDpyUFEczc3kJA=\nR:modcmd.a\nZ:Q1J+33D1YScjQ15beRMzIVd9QvGEY=\nR:modconv.a\nZ:Q1WtIFP4IqeoSzcuX7vWYUefuZka8=\nR:modfetch.a\nZ:Q1x2aezqToFqh11JKrazssFu9i3gY=\nR:modget.a\nZ:Q14FJ8ymQaG3XJyq9pdd9b5ifKpYw=\nR:modindex.a\nZ:Q1JUCREv3w09jpUsLmGDsJFjokgNY=\nR:modinfo.a\nZ:Q1aroEnwx7m8W6yEpjfkV2ZUg1Qq4=\nR:modload.a\nZ:Q1qQFr2uJ/tnbwk8hJuyhxTteRqjo=\nR:mvs.a\nZ:Q1wdJnyT4Hq4S4NSrWrOhp89qjM8A=\nR:par.a\nZ:Q1hHKF4VcygKtEA48zy3XdLIFPM60=\nR:robustio.a\nZ:Q12NH8Rpp3ZVVZ4Lk82vvnQ0JXNfM=\nR:run.a\nZ:Q1mSdNgK33Z1rXLfC9xAl7km7CBiU=\nR:search.a\nZ:Q19pTzQxs07tV02zxxD1mdQUmt6V4=\nR:str.a\nZ:Q1G2inxxgsa5eyTZ+c3Zus6Reo+4M=\nR:test.a\nZ:Q1gFP5bpMcoZq5kvGSgInBbbLbP9k=\nR:tool.a\nZ:Q1wFN/GxtNh4YrzOOP7Gn23FfkfQw=\nR:trace.a\nZ:Q1oOtihPMUO8zoDelStV1GHQE5cbw=\nR:vcs.a\nZ:Q1HGVgTfrAc2bWu7hIduUYAcQ3koU=\nR:version.a\nZ:Q1NxYFq00ip/db6TZhVmEb745cVXA=\nR:vet.a\nZ:Q1JXQZ6/TCLRfnBVpmHqtQmOtBU+g=\nR:web.a\nZ:Q1oj3ex12gEG03ihw0O1rW3DPgQ60=\nR:work.a\nZ:Q1cy3wodLRwC4j+TD/Bs+uuhrpTGc=\nR:workcmd.a\nZ:Q17j41EbEEadYW6bzIvpBS9gouU/Y=\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal/lockedfile\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal/lockedfile/internal\nR:filelock.a\nZ:Q1oz8mmKVGbIuevUwxWl9QwGqVea8=\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal/modfetch\nR:codehost.a\nZ:Q167kizJuhROBIb05Iqvzc71SwyXY=\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal/test\nF:usr/lib/go/pkg/linux_amd64/cmd/go/internal/test/internal\nR:genflags.a\nZ:Q1yb+CRC4C5g7K2LQT4b75ATvo5h0=\nF:usr/lib/go/pkg/linux_amd64/cmd/internal\nR:archive.a\nZ:Q1FgRgnc19twk30pvzgEGwz7QWjsM=\nR:bio.a\nZ:Q1cBcvvtyGdq9iviiGHSWbQK9xQiE=\nR:browser.a\nZ:Q10Ug62tWlp/JWI0vAY2rOxt7cCKE=\nR:buildid.a\nZ:Q122kMKKk+pAKYns3jFN378n24u88=\nR:codesign.a\nZ:Q1nHE2sn2t5v+grydxhY10peTDgGE=\nR:dwarf.a\nZ:Q16hjnVgdgEUYmlujye5vwuInAmn0=\nR:edit.a\nZ:Q1JMLXFs14Hb/l+Nv+DSgWIvGbx08=\nR:gcprog.a\nZ:Q1UjxhHrsrenBXF1fWWqkLTe4IcdU=\nR:goobj.a\nZ:Q1FED8JwrT/UtV7X+PHEyZn0vRs7Q=\nR:notsha256.a\nZ:Q1/g5lOOiZuqSzzWgjE1RgE+U6ufs=\nR:obj.a\nZ:Q1oulCkSIyc1hShfd8ynrRkD7duQs=\nR:objabi.a\nZ:Q1M2mZsSh2zCnTTDNpcCygAIkpcN4=\nR:objfile.a\nZ:Q1K+6veQB8qn83pDt66trEoM9uW6E=\nR:osinfo.a\nZ:Q1Q69t0AjUpalezRo5nSCcNY9V+Rg=\nR:pkgpath.a\nZ:Q1JpRIr2dHwb//IxliXn8lu9S2HLk=\nR:quoted.a\nZ:Q1bCSfO9prn6klbrhFd215lfuxQSY=\nR:src.a\nZ:Q1bWG1R5/K292FaOWfTEYZlD9BF60=\nR:sys.a\nZ:Q14UK3nrfo21AFK1wuZvTvQRjs/3o=\nR:test2json.a\nZ:Q1VzpAwWIDWGh3qdy4o3K/Ct76lFM=\nR:traceviewer.a\nZ:Q1fkbJ7yAQ9d7tDUrfyWAjoVYA9Zg=\nF:usr/lib/go/pkg/linux_amd64/cmd/internal/obj\nR:arm.a\nZ:Q1Lg0iT2cq+ldh8p8z8cibQJ9LdH0=\nR:arm64.a\nZ:Q1QZUe0OO5cYloiyCA3VX/Uod4jLY=\nR:loong64.a\nZ:Q1nwtLtXkVdqhA1whNj9Emc8jk06A=\nR:mips.a\nZ:Q1o3KJde4oGdtnaJy87hoMPqtkp8U=\nR:ppc64.a\nZ:Q1eSMLW5sfmqMKztQ5VeiEmAEgL8M=\nR:riscv.a\nZ:Q1ztu7/fwGp0dIcF1Vd6H2kyR/pUw=\nR:s390x.a\nZ:Q1pf7NdpsfG8Gt4GN0+QAbn58kYpo=\nR:wasm.a\nZ:Q1AdrDRsv0oQea/UkIHOoyIyvT9IA=\nR:x86.a\nZ:Q1n8Z2nYvh2ZwY6yPaH0Fk4igH80c=\nF:usr/lib/go/pkg/linux_amd64/cmd/link\nF:usr/lib/go/pkg/linux_amd64/cmd/link/internal\nR:amd64.a\nZ:Q1ldzzvnTsvmaeMKI1q0WOCL1l9mQ=\nR:arm.a\nZ:Q1AL5J+U69b9SY4XHBfsfQb2JEpr8=\nR:arm64.a\nZ:Q1nKetL1XhoY4IFcqOfPMjWPFh8pk=\nR:benchmark.a\nZ:Q1lijlfJya9/WQbOUFKs/bZNKXNxI=\nR:dwtest.a\nZ:Q1MI7hUBO2pc3+6d0tWkDp2sUSwXE=\nR:ld.a\nZ:Q1lhu68ztIQl3OzNzjOgBnaEGvfKE=\nR:loadelf.a\nZ:Q1G9hmoPJUsnNbmaovKAWgYplIzb8=\nR:loader.a\nZ:Q15fUYBVbUJTyaBX0wMSxWIiBxBws=\nR:loadmacho.a\nZ:Q1X2Zbn9NzzL/UaKbgYgFaH7ovHY4=\nR:loadpe.a\nZ:Q1t+zPZjKDzFetZIKleUV3/GxoF1o=\nR:loadxcoff.a\nZ:Q1r3NsHvkg3+1fh+jkYPPYoFWYIFU=\nR:loong64.a\nZ:Q1Vg5ZkY6caZTfY70iKwwk3ljYYVk=\nR:mips.a\nZ:Q1QQerJjbKtTc6s0t2S1ihKnl3nrI=\nR:mips64.a\nZ:Q1IkMAbJZNnoUdh8twWzeyNQJRjv4=\nR:ppc64.a\nZ:Q1LgRLJ8hgQxQZFlahWNVfLXmnxn8=\nR:riscv64.a\nZ:Q17RsCSPvZksCCBGv8/g+T4X5KKd0=\nR:s390x.a\nZ:Q1VCHoJkconRaytrqaGfajE/OiHyE=\nR:sym.a\nZ:Q1xjXSwC9KBXPt9yI60FrsVcUX1qE=\nR:wasm.a\nZ:Q1RFMseTF7jw8lzsjPXmuswXfG/f8=\nR:x86.a\nZ:Q1rYzkHe7SlanH6ItVOU2EJZnv09c=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com/google\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com/google/pprof\nR:driver.a\nZ:Q1rAfu2js/B0QnAaG1I+YJg/WzdkU=\nR:profile.a\nZ:Q1EOuZ5VuMIJVJnDPNJ4TaWwaFHPo=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com/google/pprof/internal\nR:binutils.a\nZ:Q1TFNb7hEFH+V49LbePf4MSShHRh4=\nR:driver.a\nZ:Q1gjafRYGMvA9yZyWEYvY18RJ2pnA=\nR:elfexec.a\nZ:Q13gf5mJPbly3Nbz9yBM5KxcVu3qs=\nR:graph.a\nZ:Q1PD29GPmHkXOSVFiAysN3lNuSNNw=\nR:measurement.a\nZ:Q1IuQOFpaJ1q5FoqL7JJNZGVcyvE4=\nR:plugin.a\nZ:Q1ZCAQkTAlL+f2dVG/fzh+BdDK6ss=\nR:report.a\nZ:Q147/KYWIdxmVo9G50hxiXHexADlQ=\nR:symbolizer.a\nZ:Q1guJ+XdgV5kGZWqzmBJE2QpVBN3M=\nR:symbolz.a\nZ:Q1DzFWIxkMfTSicuNxfDAkqDiG0zQ=\nR:transport.a\nZ:Q12vImdRcgEh0Q/uQ7+0pfuoyk1Kk=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com/google/pprof/third_party\nR:d3flamegraph.a\nZ:Q1/9rkMqrpJ4/P+DZ7pjy6DH3TawI=\nR:svgpan.a\nZ:Q1/OTOjOSOnEyo5Je0P+AEO9+DSo0=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/github.com/ianlancetaylor\nR:demangle.a\nZ:Q1USaEMfCAneAqZNCSmXUf3gLqtyo=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x\nR:term.a\nZ:Q17hbIpEMjqrrK4XMt3KHiPN6h/Qg=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/arch\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/arch/arm\nR:armasm.a\nZ:Q1yO+Z9DdMCyoFqpp2KLMteAjlDxw=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/arch/arm64\nR:arm64asm.a\nZ:Q1lvuVPeVzoqW3C5eX9Wg/EAjjFpo=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/arch/ppc64\nR:ppc64asm.a\nZ:Q1CK4f1ObVVLBZ3HQxEH2W0jIgLjw=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/arch/x86\nR:x86asm.a\nZ:Q1JLtepPSI+K/SEmH+/1ZuGI8ivsY=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/crypto\nR:ed25519.a\nZ:Q11iMBso8aG+f4HCCe9QFxRea8jBM=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/mod\nR:modfile.a\nZ:Q1dMEthGZ4FJ5gbpfaCVgfGU2CDDw=\nR:module.a\nZ:Q1mF7sPGf6J83aTz5nYumSrttsBbk=\nR:semver.a\nZ:Q1MgjMLLCTS5AHSPcDYC+GEqWJ3fY=\nR:sumdb.a\nZ:Q1wN2/FkjoUXYjqPZxD2RtE+mDpJA=\nR:zip.a\nZ:Q17z6rB0SXcEn9BXzW7MyyIMnLLgQ=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/mod/internal\nR:lazyregexp.a\nZ:Q1Gqv/JZCMDpZjd+9oYq1JKpDTutg=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/mod/sumdb\nR:dirhash.a\nZ:Q16PvZWnNKX+OsTzSUQH0nl/brOQo=\nR:note.a\nZ:Q1rRG1H/fXx6QYHMmZpuNBw8pmD/0=\nR:tlog.a\nZ:Q1Yys8sFfNcfL5ZOE2HCfRiIuCz0o=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/sync\nR:semaphore.a\nZ:Q1sXP5FYSRR/kiF5wIUHu/upN4ljY=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/sys\nR:unix.a\nZ:Q1JQ5u2KT22BI5oHwJH6t+bLnj7pg=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/sys/internal\nR:unsafeheader.a\nZ:Q1/CHfVOpV0UQsjvNNqDZIHBkq/xI=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools\nR:cover.a\nZ:Q1rFK195yfHdcoHHTbMUh/3OYIvUA=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go\nR:analysis.a\nZ:Q1xoR0dDUqE6K2zmG54qQff4PXJt0=\nR:cfg.a\nZ:Q16QaSXy8Y20Wjp5fD5ReWY7a6AXo=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/analysis\nR:unitchecker.a\nZ:Q1FVvunahXiUYuLe8NBUO9d1H4bpI=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/analysis/internal\nR:analysisflags.a\nZ:Q1E++LyXv7BQQu0pQMjDqYk8XYeOY=\nR:facts.a\nZ:Q15K1hr4Eu7+94kcea8U0S/l6HWlI=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/analysis/passes\nR:asmdecl.a\nZ:Q11NnfHf4bbN7ijWKLP0N4pE9KjEM=\nR:assign.a\nZ:Q1gNxseC3qh9/xzaV+Bw4sfr9rUtU=\nR:atomic.a\nZ:Q1wCBsQDwkV+vGM84yn30A9SZorKM=\nR:bools.a\nZ:Q108TBQjtC/JKUi6nFgi2U9Yvhguw=\nR:buildtag.a\nZ:Q1j9hnnwNplbEsbuUxLnBrMyc7lT4=\nR:cgocall.a\nZ:Q1Zyv/KfdB2wzm/rO7h2i6RdUbEfA=\nR:composite.a\nZ:Q1PbNqYRmgG1yfpz2ts6fafZ7fOwc=\nR:copylock.a\nZ:Q1ttBoOReCt/SsbCKfIDi7RWdXTVo=\nR:ctrlflow.a\nZ:Q1zROrDSN1YQUWefr8AUBVkrTQG58=\nR:errorsas.a\nZ:Q11Dz0SUaZQAE+uYOJU9O2Dsgdtyg=\nR:framepointer.a\nZ:Q1EM80+HTgtCJ7edET93IyUi7asEQ=\nR:httpresponse.a\nZ:Q17DhnXYPWp/gyZeINGQeuAn+hVvQ=\nR:ifaceassert.a\nZ:Q1kc/HPOAIXIDkNkf8MaqPwrYKUHI=\nR:inspect.a\nZ:Q1sJxCahNNxUu2oewVjLx6loaBClA=\nR:loopclosure.a\nZ:Q1zdzG5OArObYSGDljkyCxCX9wi9c=\nR:lostcancel.a\nZ:Q1+7eSn7xsQSPgvyUTS9OCfVjQqck=\nR:nilfunc.a\nZ:Q18bTT59wvdOOlSsQZ+R2iD5ULniw=\nR:printf.a\nZ:Q1WLxYHkNKkyvS7gpi+g+zw/ZdMy4=\nR:shift.a\nZ:Q1AHu0qaF6HJO+7Io6L0GXLHbNxfo=\nR:sigchanyzer.a\nZ:Q1fHCe07fg0lpe6HI2H2lAN/cMO7s=\nR:stdmethods.a\nZ:Q1vmyAtEqYAj1qU7MFLftEhtp444w=\nR:stringintconv.a\nZ:Q1unTGXp1l+DpDRdDwK5EtC0dhWmw=\nR:structtag.a\nZ:Q1tLigB6yUCgGM0ExRWSqedH9FrcE=\nR:testinggoroutine.a\nZ:Q1fHSsJBg3gINUCc4MmgrxXJXC+P4=\nR:tests.a\nZ:Q12dduY/SJbW8C+WYmnN+JgXhTfR8=\nR:unmarshal.a\nZ:Q1lq+MtTYXM2/mVM3hk5gDWofQz98=\nR:unreachable.a\nZ:Q1gWUSe2c8iBOaZjag8eDWSo+xZ4c=\nR:unsafeptr.a\nZ:Q12L6ZmDzd1zjBNdFtNGDelxA7VFQ=\nR:unusedresult.a\nZ:Q1EkTYbAcVEQEfo4E6pRN7j3K7WRE=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/analysis/passes/internal\nR:analysisutil.a\nZ:Q1tvd2U6a3M5/RePDB5pNrV77HwkM=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/ast\nR:astutil.a\nZ:Q1d9lfH39V4y99xegD7utSf/X8hgw=\nR:inspector.a\nZ:Q1ak8/kZkqCUxO1WH6GZLZbjtfAdE=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/go/types\nR:objectpath.a\nZ:Q1Gf6YyGofA1EpN6FS0Fd7roF2r+M=\nR:typeutil.a\nZ:Q187sY+slo1AXt588g6CpKaVsxGME=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/internal\nR:analysisinternal.a\nZ:Q1csIFJg36ijk13+wgDfq82RItsh8=\nR:typeparams.a\nZ:Q1d0fdhW9rMs73EtWXa5ndlxWV9Sg=\nF:usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/tools/internal/lsp\nR:fuzzy.a\nZ:Q1JhjJFvsuWWsvxdY+GLRF8wJR8ss=\nF:usr/lib/go/pkg/linux_amd64/compress\nR:bzip2.a\nZ:Q1vwQS9WD6JV4vNcqRTXrHq8tzqZE=\nR:flate.a\nZ:Q1Arx378JqHuKYWYmRO0kt12srsPs=\nR:gzip.a\nZ:Q1gpv9jBFt21gemaHmwiscIH+muik=\nR:lzw.a\nZ:Q1PmMWCqliFU5wCiZ9cRFhM5Ea7Q0=\nR:zlib.a\nZ:Q17d77tL9if2k7g2Y9qxLJbFXx1cY=\nF:usr/lib/go/pkg/linux_amd64/container\nR:heap.a\nZ:Q1hf+uYeqO1uVPbWQowupzXclN2Eg=\nR:list.a\nZ:Q1CYZuerBw0/bujrBNqD+wTfACYnI=\nR:ring.a\nZ:Q1/RpNMWT1LiHTUC07zk9llM2N7tw=\nF:usr/lib/go/pkg/linux_amd64/crypto\nR:aes.a\nZ:Q1DHchxhwlDT1+TH9hcD2ShldCuaw=\nR:cipher.a\nZ:Q1ghDHDo5p3LE6uir23YE3Ridhl2k=\nR:des.a\nZ:Q1d8mQyLfIgibNDf9Uih+/M5NgWTM=\nR:dsa.a\nZ:Q1++wmy/IhtiNWFCcSK5sv0x0sSdY=\nR:ecdsa.a\nZ:Q1esOdKI7sA+DFb/bU25n6TvktmEE=\nR:ed25519.a\nZ:Q1qTSYC4htpzESi5Lapzuc9wjTGlU=\nR:elliptic.a\nZ:Q1w30EuLnX3eNl9EwhxjBPoOzLwPU=\nR:hmac.a\nZ:Q1eQ61JrNe3ACpXsGTF/qZYiFxKJk=\nR:md5.a\nZ:Q1jzOUJp+E4Kwv3J58KiSqASbVp10=\nR:rand.a\nZ:Q1t/RmBWrAGo2LpZpTGf0Pj543VOQ=\nR:rc4.a\nZ:Q1AY+1MIreR59pyHAUCaiBAAp3rxM=\nR:rsa.a\nZ:Q1UwY4phs+M16/sLAhR/9TAooabkQ=\nR:sha1.a\nZ:Q1pwFEX3XBwy7vcTtlcHgYVFOoFpA=\nR:sha256.a\nZ:Q1NL5pkF0Ql6UrJDsW5Q09NpGXR2M=\nR:sha512.a\nZ:Q1ieNMOGblozIq1kINx6SKh/IT8wg=\nR:subtle.a\nZ:Q1bzqqWaMD3C6UC9qGlPcJcBn2zFo=\nR:tls.a\nZ:Q1LOQFUa0zp/hGcA1RocrIFoShFVw=\nR:x509.a\nZ:Q1Srwe4Mog6pbzpfZmW0Cp1WIxoCs=\nF:usr/lib/go/pkg/linux_amd64/crypto/internal\nR:boring.a\nZ:Q1nQyLjhZmFxfh9+uV4OOPVdUmQ04=\nR:edwards25519.a\nZ:Q15KX3vD4qa2S3KfmVGGyiw3Vn648=\nR:nistec.a\nZ:Q1LnNqcZkAsyRkZu6ZN7UqSI2z4xU=\nR:randutil.a\nZ:Q19cPh0WKj1U4/kn41rgg0EYPZ1to=\nR:subtle.a\nZ:Q1SbhzPsNGXQ8uiI7QVDYgPcPei5k=\nF:usr/lib/go/pkg/linux_amd64/crypto/internal/boring\nR:bbig.a\nZ:Q1DT5ZMKACJ3ucQMT0oBvXsFjaO0g=\nR:bcache.a\nZ:Q1Q+KtCET2Vx1YjeCRjOgL0j22wzw=\nR:sig.a\nZ:Q1nSNAjOOwxyYhM7Q9RVwyY4NcG9U=\nF:usr/lib/go/pkg/linux_amd64/crypto/internal/edwards25519\nR:field.a\nZ:Q1j50p8EBKDjge+eGalzL2uGzzFpM=\nF:usr/lib/go/pkg/linux_amd64/crypto/internal/nistec\nR:fiat.a\nZ:Q1DQK3+PF+QNB9wU3HucxbViOgrnM=\nF:usr/lib/go/pkg/linux_amd64/crypto/x509\nR:pkix.a\nZ:Q10XzbKcd+PkutBdQUOeXttvMYi30=\nF:usr/lib/go/pkg/linux_amd64/database\nR:sql.a\nZ:Q1RT8vUQ9LZ7gUHSWXLqoPgM7t54k=\nF:usr/lib/go/pkg/linux_amd64/database/sql\nR:driver.a\nZ:Q10qEX1MIvdALJaXg28D9+e/CbG8I=\nF:usr/lib/go/pkg/linux_amd64/debug\nR:buildinfo.a\nZ:Q1acfCIymgvTuip0ipNUA0yylEZcU=\nR:dwarf.a\nZ:Q1zkpIx/6l5aRHlGwNgHV7xYJwkLs=\nR:elf.a\nZ:Q1s7leRbdwnace4ejPf+earem6RXU=\nR:gosym.a\nZ:Q1dcJ3BVmysvmv//N/oiDObyKuPNQ=\nR:macho.a\nZ:Q1g86yIDyk6x2YbKAu7D62h3LSUiI=\nR:pe.a\nZ:Q1h1bphdvgLQFXwkSyyuWoWUwcczg=\nR:plan9obj.a\nZ:Q15JIF8P1HyetfWJPBH67lvbA1rEc=\nF:usr/lib/go/pkg/linux_amd64/encoding\nR:ascii85.a\nZ:Q1gWMFS1vqY2XH61cZ2IsXXkcf4nU=\nR:asn1.a\nZ:Q1mlyA3/SwMcxmPKO4WFA8E4NwlpA=\nR:base32.a\nZ:Q1MS8BFaiEpaEfHO0H0cLXDlSMJ4s=\nR:base64.a\nZ:Q11ClUoTfi4fqcPWGmFFp50p75Kbk=\nR:binary.a\nZ:Q1l4N5VgcPbV+v8DWgL/kt7o/z+Z8=\nR:csv.a\nZ:Q1di7SH4BCSEr+e8IK3vWisLwCLyc=\nR:gob.a\nZ:Q1SZTl92z2GBgj6nO64dExXA1Sx1c=\nR:hex.a\nZ:Q1iE1UCr/DNZDcPnQFK5dZ53MQZaA=\nR:json.a\nZ:Q1IUx2ccXKj+kIdlXOH3MJOZOOS7Y=\nR:pem.a\nZ:Q1UZfLybhv1wZFS39rZgs6QLEJOMc=\nR:xml.a\nZ:Q1lJ2KZID+pXFBQBXdJxrWVYKYnRA=\nF:usr/lib/go/pkg/linux_amd64/go\nR:ast.a\nZ:Q1LLQCGJ21y/PCZZuyh6fCc4TTkJ0=\nR:build.a\nZ:Q1wMeyNHOGVrG3o8KehkbgdXE9j3g=\nR:constant.a\nZ:Q1iIxv6YJW/xVgNXmKzk/tx9JVcTk=\nR:doc.a\nZ:Q1sWmB7vynVGldV0dKJlepDHBGWG8=\nR:format.a\nZ:Q1Tkndoy2hEChlrT39pJ8FCjnnzsI=\nR:importer.a\nZ:Q1motYrVmovNEt+u5fvPi/2iL8B/E=\nR:parser.a\nZ:Q1jgIkg7HqMg07IFYjUT9aym3+tUk=\nR:printer.a\nZ:Q1NlCtf/ANXeXligxLI+zIHYWe0v4=\nR:scanner.a\nZ:Q1S7vS3+PFNYQnzWdXXKg40gRXMO4=\nR:token.a\nZ:Q1US17m5YQYg6U8S+AefyLcpMv8Zc=\nR:types.a\nZ:Q1Ds4GoRJRYCNWGFVB7Nmyf6YmGa0=\nF:usr/lib/go/pkg/linux_amd64/go/build\nR:constraint.a\nZ:Q14bBnJK+dwwvmEAFpy1r184BLJxk=\nF:usr/lib/go/pkg/linux_amd64/go/doc\nR:comment.a\nZ:Q1G4GTnTkxstJM8WQrJgZ/2S5pyfI=\nF:usr/lib/go/pkg/linux_amd64/go/internal\nR:gccgoimporter.a\nZ:Q1zcSqWpTUTInc2netR4NWGDhcY/E=\nR:gcimporter.a\nZ:Q1EmZVs7N0xl1kDMT7E054zWlIcQ4=\nR:srcimporter.a\nZ:Q1qKnabikzMmnEFrDzasbSzzDbUUw=\nR:typeparams.a\nZ:Q1GXzbiPQmHXWgqZyHyYe59GXc0ok=\nF:usr/lib/go/pkg/linux_amd64/hash\nR:adler32.a\nZ:Q1zM66lL90G3Oy07B1JUTTWBH3q0Q=\nR:crc32.a\nZ:Q1FCnaLzHhF7HosfpY3Dw+ahwrD6o=\nR:crc64.a\nZ:Q13HFJUEu5QnbE8bWuSRSTyMlZugA=\nR:fnv.a\nZ:Q1jYMjjnNjy5FjAFCexocztp+AYJE=\nR:maphash.a\nZ:Q1bvH9FqNv9C7uA7PNrd7rD4dGwKw=\nF:usr/lib/go/pkg/linux_amd64/html\nR:template.a\nZ:Q1HYBSGH54W0B2lK960IoJTg1HeRg=\nF:usr/lib/go/pkg/linux_amd64/image\nR:color.a\nZ:Q1NuGwvewAjkh42Z4XgNZNkTAxj7k=\nR:draw.a\nZ:Q1YKiCvAOW25ZUjDXIRD5UfkhI38Y=\nR:gif.a\nZ:Q1aTDdrmQW1wY8cHv6q6Wq6p6HbFg=\nR:jpeg.a\nZ:Q1PrcQzl3GKiKKvU00xOR/pPe8uKE=\nR:png.a\nZ:Q1M4Pps9vTW1A7w3NEPoMokfWszMs=\nF:usr/lib/go/pkg/linux_amd64/image/color\nR:palette.a\nZ:Q129wI+0Win8M/9EojNy28q3wtNC8=\nF:usr/lib/go/pkg/linux_amd64/image/internal\nR:imageutil.a\nZ:Q1lwjV74cL8VmmIPZ6NmMc9HMaWnQ=\nF:usr/lib/go/pkg/linux_amd64/index\nR:suffixarray.a\nZ:Q1I4oe8YJWnBqS+dLrZbOVGWq1Fnw=\nF:usr/lib/go/pkg/linux_amd64/internal\nR:abi.a\nZ:Q10nnhl/WBswV6pTkWMl8TwcQ0RH4=\nR:buildcfg.a\nZ:Q1Esnfg8UpU7aKQzgX63bYEWQPV5k=\nR:bytealg.a\nZ:Q1mr39L9cH+jIWG4SKNcsCUzHjU3U=\nR:cfg.a\nZ:Q16tVgc0fvGkfNUiSg1vAciskYnkA=\nR:cpu.a\nZ:Q124SKQfy+b2ObuU7U36zEZu9xBG0=\nR:diff.a\nZ:Q1AhzUILlC6fo7on70woOq52gpjZM=\nR:fmtsort.a\nZ:Q1KXSnCuUvwn+u7Icp9chR3g2ZdHk=\nR:fuzz.a\nZ:Q1j+JXDGkEzAwE1OQtcflnyrpo/dM=\nR:goarch.a\nZ:Q1Aqx81XD2+hblm23E1VLDyiCAgDU=\nR:godebug.a\nZ:Q1UNb/vVZ08DaQpsJ/PcxqDjU+N8o=\nR:goexperiment.a\nZ:Q1aIKRWG+M/A3jYE55bG5QGPSiLQc=\nR:goos.a\nZ:Q1Wsxu2Dg1QCM8YV0h2e5KELVXGnc=\nR:goroot.a\nZ:Q1VnWDJhVSxB4zIK23MVGrYgHHf8Y=\nR:goversion.a\nZ:Q1cLGBHVE8dj6E91Q8A+cJd8gUJgQ=\nR:intern.a\nZ:Q1l5nB1MtA+nBd+yrFSIXxeZLsb8M=\nR:itoa.a\nZ:Q1Y70Iji+nPkEJJCn7v8qkA6mO3Zw=\nR:lazyregexp.a\nZ:Q1D5W98UTnyXs59I3r95Ji8wz3z3c=\nR:lazytemplate.a\nZ:Q1146mOBCtFiOecXYXivJUUn068ow=\nR:nettrace.a\nZ:Q1CXtbqupTY/IGK1Q3KoDX5BwBgxU=\nR:obscuretestdata.a\nZ:Q1WrhAQM1TbV8363CVmX/q3/Sch+8=\nR:oserror.a\nZ:Q1N8TkndgetpD+c0ttKLqZF62IMq4=\nR:pkgbits.a\nZ:Q171ztZZ0v8ezLDtJRqTkQZem/NB0=\nR:poll.a\nZ:Q1AhyM2E6rCx27VxCuR3odGVD779c=\nR:profile.a\nZ:Q1USuUYkSBZfEl5md2il11cestM/s=\nR:race.a\nZ:Q1MGK8oeAoLzbjoR1a4AWjpNB6SZE=\nR:reflectlite.a\nZ:Q1Fkrzm61qtODKT0IVv+C2YE3iYFE=\nR:singleflight.a\nZ:Q1OZIikZFCh+6b7NHnGOs8mVQW0Xo=\nR:sysinfo.a\nZ:Q1sw6QNlZcR55BKPA9f6onTBVz76I=\nR:testenv.a\nZ:Q1TE/sUog3O9QXutR5nMcBB68m94I=\nR:testlog.a\nZ:Q1YkRHTj+zLkjUzwVXUnSVJCCZMqo=\nR:trace.a\nZ:Q1WAB8kOLJxWmqk7AcLsFFRlwJMlk=\nR:txtar.a\nZ:Q1Jv+NIibKl/QYIv4g1KblHaomJAk=\nR:unsafeheader.a\nZ:Q1oasSZzM1YXuLspUAeK/QClHpjQ8=\nR:xcoff.a\nZ:Q1CJqLPeDKCDOGEvNZpEKA3fX0+ME=\nF:usr/lib/go/pkg/linux_amd64/internal/syscall\nR:execenv.a\nZ:Q1ZX0KrLcyoJpHV0t4v4+4jYj2xno=\nR:unix.a\nZ:Q1zENhnC1ikHHFnZQkUlqmYx/0alg=\nF:usr/lib/go/pkg/linux_amd64/io\nR:fs.a\nZ:Q1wohVM+uFX95dgx5NP+qfX6rL/s8=\nR:ioutil.a\nZ:Q1mf9joowxvizkfdcexHmdGb1/Eg0=\nF:usr/lib/go/pkg/linux_amd64/log\nR:syslog.a\nZ:Q1mi2yfvXxB3yqgKH9G3Js70aYcoc=\nF:usr/lib/go/pkg/linux_amd64/math\nR:big.a\nZ:Q18QpgnfKdQDh/9f5844/8AcVLlp0=\nR:bits.a\nZ:Q1NlUMdCwZagCw/ZgFndjLc2bBSww=\nR:cmplx.a\nZ:Q1z6p+0KuaNXD/qbZEOUIy2iVkT1g=\nR:rand.a\nZ:Q1Y+WBGa5SJQCQFMEsFqblxNWAdzA=\nF:usr/lib/go/pkg/linux_amd64/mime\nR:multipart.a\nZ:Q1/y5Mpn4rMVBA+vtJeJ4IQLcrkfA=\nR:quotedprintable.a\nZ:Q1fVj3Ph7aZNvyObYbNe4K8MyWQP4=\nF:usr/lib/go/pkg/linux_amd64/net\nR:http.a\nZ:Q1VFCK3ugaZJjwsxQkd1rB9KlL9dc=\nR:mail.a\nZ:Q1SKY9Wr+Sp6vhIjf8fM3yzl6M8mU=\nR:netip.a\nZ:Q1B+1IaTOSljRd/E2FlCW/OKnVEIg=\nR:rpc.a\nZ:Q1T3cek5OfjKL2oqHl05AKUM6DzZk=\nR:smtp.a\nZ:Q1c3Ojg4JkkdznqUgFEXsUtJuP+NY=\nR:textproto.a\nZ:Q1vq61Hu4HMKiNyW4iUqeyp9pCHCk=\nR:url.a\nZ:Q1txlcGXdvyD4H4bmlQiLXiNCs2fw=\nF:usr/lib/go/pkg/linux_amd64/net/http\nR:cgi.a\nZ:Q1O8KeRi0xbrkPoOeUQnC/ZHRvts8=\nR:cookiejar.a\nZ:Q1w0CuhOPrcAUkaCYPLMaZtKHO1CU=\nR:fcgi.a\nZ:Q1uAj6bCbstHld7ToyrIKyNfBZkIo=\nR:httptest.a\nZ:Q1i/IsNFZIwM+VwAGm4h+/JIsKhw4=\nR:httptrace.a\nZ:Q1vV0XtdiNSZ/JO+lFlzGBhukO/OM=\nR:httputil.a\nZ:Q10UmBSOmPywVJr2HVBLzEyLuCx9U=\nR:internal.a\nZ:Q1QsZXOSXgJXUJsbMuAnzRha0gLX0=\nR:pprof.a\nZ:Q1qFfTpta/xXmVkb+/uItCCYBNypA=\nF:usr/lib/go/pkg/linux_amd64/net/http/internal\nR:ascii.a\nZ:Q1Me8Iw2tr/qwz996YuJN4qK+9Ll4=\nR:testcert.a\nZ:Q1PIBI5bHSBIDy+3rIzya33l4PciQ=\nF:usr/lib/go/pkg/linux_amd64/net/internal\nR:socktest.a\nZ:Q1eNoxVENqljIHfBLNZXAX0L1WvbA=\nF:usr/lib/go/pkg/linux_amd64/net/rpc\nR:jsonrpc.a\nZ:Q1LJagjvxTbbfqIOsvZ9kqVEwMOrE=\nF:usr/lib/go/pkg/linux_amd64/os\nR:exec.a\nZ:Q1VYRhfo/CZEOKBBpV9DKJXeRWKpQ=\nR:signal.a\nZ:Q1xFJOwjkPXiRnZBkZrsQEuOsTJ7Q=\nR:user.a\nZ:Q1JyJtSlt2vUWa2QeLzK393LktjA8=\nF:usr/lib/go/pkg/linux_amd64/os/exec\nF:usr/lib/go/pkg/linux_amd64/os/exec/internal\nR:fdtest.a\nZ:Q1zt/aKeECRN14a7fuUHr+SbUwqDQ=\nF:usr/lib/go/pkg/linux_amd64/os/signal\nF:usr/lib/go/pkg/linux_amd64/os/signal/internal\nR:pty.a\nZ:Q1dGgnBKtn8WnohBYrZxztTYH6NQU=\nF:usr/lib/go/pkg/linux_amd64/path\nR:filepath.a\nZ:Q1IaYBER5U13S0hu6cHUxxGxbqwrg=\nF:usr/lib/go/pkg/linux_amd64/reflect\nF:usr/lib/go/pkg/linux_amd64/reflect/internal\nR:example1.a\nZ:Q1DeSeUvM5OxmAX+5JABDChobTRdc=\nR:example2.a\nZ:Q1cr8630Sm/f0EsAW46F34+WDBDvY=\nF:usr/lib/go/pkg/linux_amd64/regexp\nR:syntax.a\nZ:Q1JPQO0ouao/9Ss73Ed4XmZrDx4hM=\nF:usr/lib/go/pkg/linux_amd64/runtime\nR:cgo.a\nZ:Q1guuOYOw5vFV8At+cKvUG+SNpxOQ=\nR:debug.a\nZ:Q1L0+ma0pKMu8FjwkSN6n5yE78oH4=\nR:metrics.a\nZ:Q1UcjTxZDYTEQLzR7UnV5mo/fIUWI=\nR:pprof.a\nZ:Q1y3X/EZgSWzVeaiHKogK1agKCpBk=\nR:race.a\nZ:Q1hsVvE+ELP2+hg6fIKgSwi2Y+7rs=\nR:trace.a\nZ:Q10e0RbxG9yZLaAVqqp1S8hOD4lJE=\nF:usr/lib/go/pkg/linux_amd64/runtime/internal\nR:atomic.a\nZ:Q1vPoH2RAFsrk/O+9rCh1/k+5DdFs=\nR:math.a\nZ:Q1OcCqoYsZI0r9eRTFVLORB8/dkVQ=\nR:sys.a\nZ:Q1NzFyXYeOfyhJhnmpIihcGTa7wSE=\nR:syscall.a\nZ:Q17iOGHmWFrVw14SxmkVfO7y4u8qc=\nF:usr/lib/go/pkg/linux_amd64/sync\nR:atomic.a\nZ:Q1dtoBwdxEoCjkhBpWBxiJmX+ha4Y=\nF:usr/lib/go/pkg/linux_amd64/testing\nR:fstest.a\nZ:Q132VpLbTRY9kraNgdH6sH3zrn0TY=\nR:iotest.a\nZ:Q1Veee3wmlst3XaltTKiP+FffKGxs=\nR:quick.a\nZ:Q1EPGGphlB4pZ/nN9aGFoR13ReWuI=\nF:usr/lib/go/pkg/linux_amd64/testing/internal\nR:testdeps.a\nZ:Q1NdwJdvqGHuN231qNyCWhgtiJXGI=\nF:usr/lib/go/pkg/linux_amd64/text\nR:scanner.a\nZ:Q1JKQNO0ZSED0LygqlX6umGF4PSk8=\nR:tabwriter.a\nZ:Q1KMgohI0K8KCWyLGwrq+Z08TG2Uo=\nR:template.a\nZ:Q1w6huB4HRHJL53S41RNO1WsBAdp0=\nF:usr/lib/go/pkg/linux_amd64/text/template\nR:parse.a\nZ:Q1sL7Ce1G/IRu1afCV6uGODMeljYE=\nF:usr/lib/go/pkg/linux_amd64/time\nR:tzdata.a\nZ:Q1GvHrP6zdvgXrOydidHop0NxHkI0=\nF:usr/lib/go/pkg/linux_amd64/unicode\nR:utf16.a\nZ:Q1HdyRJGdagtFldlAhQXsP1C2rqaQ=\nR:utf8.a\nZ:Q1u8ucq271ud22o1aRZesOxBYyYj0=\nF:usr/lib/go/pkg/linux_amd64/vendor\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/crypto\nR:chacha20.a\nZ:Q1FShEI22M6OuDvH0dVjhjmAtDa0A=\nR:chacha20poly1305.a\nZ:Q17njGMyHDGIGE7rrqbuF8sYHVL7I=\nR:cryptobyte.a\nZ:Q1BhFxVt4kcuildscE1E3xcDrnFfk=\nR:curve25519.a\nZ:Q1AAAT4oIsokudGLanIoe+V1SmxvA=\nR:hkdf.a\nZ:Q1tNJf7a1Jl+IMgbZdm/Z5uff8HDo=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/crypto/cryptobyte\nR:asn1.a\nZ:Q1mFC/I9D4mmhfQNBQUdKk8zazdng=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/crypto/curve25519\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/crypto/curve25519/internal\nR:field.a\nZ:Q10lzN4GHqEPsqIDDLQrgApavOx5E=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/crypto/internal\nR:poly1305.a\nZ:Q1EbCY7zHa0dsJssJi2IdCPlQGVw0=\nR:subtle.a\nZ:Q1rA/Y5olrraGUpdjWRP/1g/ZHo08=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/net\nR:idna.a\nZ:Q11U1kWQ/l4pNcWzjs/zCgGeHZc+Q=\nR:nettest.a\nZ:Q1wYmG6B0rkbB68f1ZlMSnlUNieVo=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/net/dns\nR:dnsmessage.a\nZ:Q15/HeReV2aAEBVrb7Z5w5Y3bzoHQ=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/net/http\nR:httpguts.a\nZ:Q1kZqwASSHCM0ksrsawsF9kiS1PIk=\nR:httpproxy.a\nZ:Q1VqkjEdXJvnpV6o+xukfK+3psiZk=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/net/http2\nR:hpack.a\nZ:Q1BTwlgUQsgSNdB/8xEIAnxJsUuGo=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/sys\nR:cpu.a\nZ:Q16oUZebfjEKIEIZv3N3UGya3NR1w=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/text\nR:transform.a\nZ:Q103SnnfabIqwAl/IUJHEqZzUXGN0=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/text/secure\nR:bidirule.a\nZ:Q1SjTYzQ/1llIzXfJzQmNaaY6ae+Q=\nF:usr/lib/go/pkg/linux_amd64/vendor/golang.org/x/text/unicode\nR:bidi.a\nZ:Q14TT01XdCAyUt69YdJPtHrm2Tgdg=\nR:norm.a\nZ:Q17kC2rL995lprdLze1qunRSFoZRM=\nF:usr/lib/go/pkg/tool\nF:usr/lib/go/pkg/tool/linux_amd64\nR:addr2line\na:0:0:755\nZ:Q1sopdeOSgJFGyej4UANcaLAZALOA=\nR:asm\na:0:0:755\nZ:Q1yCHb/c+seVuGF3H9yWPWKvzHZpM=\nR:buildid\na:0:0:755\nZ:Q1XsEb8UAsWZJGfU49GyO/HnkEYeg=\nR:cgo\na:0:0:755\nZ:Q1+6T2Pfnlcy6jI6Ow1OwDTKFy9bE=\nR:compile\na:0:0:755\nZ:Q1prMgbI6EROO+bnoQ6N+HinD5B/g=\nR:cover\na:0:0:755\nZ:Q1jmJiQCNsuDdF8byyLGk0wC4a8Bg=\nR:dist\na:0:0:755\nZ:Q1WjG0MzCTae5bBdFZZZlB9vF4wkc=\nR:doc\na:0:0:755\nZ:Q1XyoSSmEmV4fR+4jA3d6YI0i2+ww=\nR:fix\na:0:0:755\nZ:Q1BOvclhZ0vdQGBnTJGPDjpSnkbjA=\nR:link\na:0:0:755\nZ:Q1maV3F1N2MHzNej5IwD+D3yaPGAk=\nR:nm\na:0:0:755\nZ:Q1WgrAjXBjqI0ya0Rzm5bNVNhqqFY=\nR:objdump\na:0:0:755\nZ:Q1CeY4eaBnwVXdwkxs2bWT6vtExoA=\nR:pack\na:0:0:755\nZ:Q1ffqlDFQqo6e09Q0HViJcWRQnnYc=\nR:pprof\na:0:0:755\nZ:Q1hZvwtlbyISkYJ3YHJ62nLxB6SkA=\nR:test2json\na:0:0:755\nZ:Q1qt9IKd6BH8D5mtuv1SlHOAXVAA8=\nR:trace\na:0:0:755\nZ:Q1ncNtuKsUdYAKhaRmeuiWgo5UpWI=\nR:vet\na:0:0:755\nZ:Q1jZ2Ph3lhQQPsfS+kqNgxhOXD/0U=\nF:usr/lib/go/src\nR:Make.dist\nZ:Q1t5q+3cy+R7JnUaT3Rb70fKH8CkA=\nR:README.vendor\nZ:Q1hNsYH2N8hbTn74bN2/JBKTHwV5M=\nR:all.bash\na:0:0:755\nZ:Q1s/lNbF3DdUHb6wbecc9GKnSvhEs=\nR:bootstrap.bash\na:0:0:755\nZ:Q1Xhb7zo5MqbdplxkT72lKBNgNgMY=\nR:buildall.bash\na:0:0:755\nZ:Q1d33xSUobeFm+QHGC6/yB2MD5Wlo=\nR:clean.bash\na:0:0:755\nZ:Q17YeAXhwHER0RN0k9sAJVHxcII8c=\nR:cmp.bash\nZ:Q1vu6PHGvJ1q845bYEDzqQQCaHkyQ=\nR:go.mod\nZ:Q1cTOWiZChmnvWIrn8rC8hft1c5zs=\nR:go.sum\nZ:Q1ZNyNEUheSh3qxEPQ9uu+GaDhnOg=\nR:make.bash\na:0:0:755\nZ:Q106Khd/AbWggcnk4obEDKWpOnjd0=\nR:race.bash\na:0:0:755\nZ:Q1/ilkV5jMkhTTJzDABBAsMtUyUYE=\nR:run.bash\na:0:0:755\nZ:Q1gcHNIMcFXpSiWqurZPdG9erU+jM=\nF:usr/lib/go/src/archive\nF:usr/lib/go/src/archive/tar\nR:common.go\nZ:Q12yF0fLvLbvVuMK1VqH7dE0wysCs=\nR:format.go\nZ:Q1/nNQuET1ylDtR8UqamR+ZX01vAU=\nR:reader.go\nZ:Q1s/zD5mNoRPaYDj7c6uu1J1ciXdI=\nR:stat_actime1.go\nZ:Q1N0KH1nZuAvZn1u1FznafeG/1KIg=\nR:stat_actime2.go\nZ:Q11TniYCoI93Q4a5QJcpkSWzUGfTA=\nR:stat_unix.go\nZ:Q1DTPaLi6/Yr/kOU8GHvRB2FLo888=\nR:strconv.go\nZ:Q1+PYIKH5WmENBXnXIH3wpLYLlUG0=\nR:writer.go\nZ:Q1lMoXUuZqt5SGhLcy2lHr0l6/0no=\nF:usr/lib/go/src/archive/zip\nR:reader.go\nZ:Q1ciaBmVxexEOBVuVGmqYtGCDDvh4=\nR:register.go\nZ:Q1CW+SGVSvmMyicMgUQu0wst71rc8=\nR:struct.go\nZ:Q18GcKHdMW1SBrui6eAzB66GrQSE4=\nR:writer.go\nZ:Q1bn+LoWZPd7zBAYaPcfOkzSrfGP8=\nF:usr/lib/go/src/bufio\nR:bufio.go\nZ:Q1f27q5499FmbQC8YUxxQfuUTWxzE=\nR:scan.go\nZ:Q19gj+VeLwE+4QkKRS9DmvMhyiNcM=\nF:usr/lib/go/src/builtin\nR:builtin.go\nZ:Q1P71SSW9E45T3slK39U8PW14yrcE=\nF:usr/lib/go/src/bytes\nR:buffer.go\nZ:Q1DRyeMvv4Zp22ybfTsw6E9TCTipg=\nR:bytes.go\nZ:Q1wXU/mxp+UyGcHyuoo3hlnjAN3o8=\nR:reader.go\nZ:Q1ndbXqBHvwq3RNL0Yb1SpgzBZrjE=\nF:usr/lib/go/src/cmd\nR:README.vendor\nZ:Q1IqxdjEUO1xs+YXBS61qgOf8iON0=\nR:go.mod\nZ:Q1qiYt6fNJ4gYl//mAp4zgIrFKimo=\nR:go.sum\nZ:Q1/1zy4GjK1R59jneG3GdohDAHs6U=\nF:usr/lib/go/src/cmd/addr2line\nR:main.go\nZ:Q1lTNrm0OkSzZ4BKTrVQ+XXiwDVR4=\nF:usr/lib/go/src/cmd/api\nR:goapi.go\nZ:Q1znlxr1U/cDxSu4J0kHZbo7HMG2E=\nR:run.go\nZ:Q1c83EeqLmbg1jl2PkFC0Cm6NaGZo=\nF:usr/lib/go/src/cmd/asm\nR:doc.go\nZ:Q1vrA23x7y4gHWvwmQbF7e0s/41ko=\nR:main.go\nZ:Q1HciBM7X5RxVkL+AMytp927+CKjs=\nF:usr/lib/go/src/cmd/asm/internal\nF:usr/lib/go/src/cmd/asm/internal/arch\nR:arch.go\nZ:Q1CG+x4sYBtMTOIhtrQ++Cw/PU2KU=\nR:arm.go\nZ:Q1fm0Lcx0MPh7hFU675/gubXSMv8Q=\nR:arm64.go\nZ:Q1QuFnEo6AxRUqGI4q4CAZaVbXfmE=\nR:loong64.go\nZ:Q15fMA2Fltc8avJNTBR/QL4hEMtb4=\nR:mips.go\nZ:Q1JhNxmt2KbW0iobEEM8xLRlY2aXc=\nR:ppc64.go\nZ:Q1NfLHCCA1a1+XCaBmdHyqorgaGr8=\nR:riscv64.go\nZ:Q1bT/dZqTkNamzNniSzHNRXtthAVc=\nR:s390x.go\nZ:Q1qxANFEM6ODuyjlnB6LhE6VHCehU=\nF:usr/lib/go/src/cmd/asm/internal/asm\nR:asm.go\nZ:Q1ILhKx/0xWb4V3Qd4LvvK+bT206Q=\nR:parse.go\nZ:Q1K6gklKpZ68SpaPUs54wbqWvHOeE=\nF:usr/lib/go/src/cmd/asm/internal/flags\nR:flags.go\nZ:Q1kXi8Sl+cnpYG6AirosM8VHT4lfI=\nF:usr/lib/go/src/cmd/asm/internal/lex\nR:input.go\nZ:Q1q5+68WgO1uJeDoTVDaxD9csm0PU=\nR:lex.go\nZ:Q1m43lF0WIyStoRu2N21FLa48E+Vo=\nR:slice.go\nZ:Q1Dp146sA6IBoZqjkzsk38k5MnEaA=\nR:stack.go\nZ:Q1BTJhTT934x+wx3KUx7iR3cqy2pY=\nR:tokenizer.go\nZ:Q18jO/J+1bmgPvlG8Qt/TQpJghSNU=\nF:usr/lib/go/src/cmd/buildid\nR:buildid.go\nZ:Q10LXRdAFvqw8tzamVz6qwshcUZBM=\nR:doc.go\nZ:Q158PNlj/qjbe8JA92YkZD5fJlxvg=\nF:usr/lib/go/src/cmd/cgo\nR:ast.go\nZ:Q1adtFJq8oJmZTOw7wha7BuCVKZ9Q=\nR:ast_go1.go\nZ:Q1I14lfh4o4TfGAOQjedYZBeFt+wQ=\nR:ast_go118.go\nZ:Q16VlOw+PFILk2ByM4YBtKfJCrYeQ=\nR:doc.go\nZ:Q1agmIAOjdE5acVJrbONqIdUbpnGg=\nR:gcc.go\nZ:Q14FsFGl6YThWvUSspHXl6rga+CZc=\nR:godefs.go\nZ:Q1MpYBdVuKmoFB3QWfvZDMuNR58RQ=\nR:main.go\nZ:Q16CWX+ows3gGjQGMVg+u0ojr8i58=\nR:out.go\nZ:Q1xGAHZR+g4TtMczXAmnRRB1NYnYY=\nR:util.go\nZ:Q166mmyYA8M0oR4hCq/fFNgWXk3kY=\nR:zdefaultcc.go\nZ:Q1p0U2F149hdvQxUccdh7Fk4yk6AY=\nF:usr/lib/go/src/cmd/compile\nR:README.md\nZ:Q1hgU1XFs1vjdAE5lifempMVcH87w=\nR:abi-internal.md\nZ:Q1QNYNqP5x7bN4xfrz7BKuKgJzX2I=\nR:doc.go\nZ:Q1e4yb7v5e9bU4JmAYdffqZPxhmNw=\nR:main.go\nZ:Q1kD/J5P9rfY2ee4eJWScHvUTA+a8=\nF:usr/lib/go/src/cmd/compile/internal\nF:usr/lib/go/src/cmd/compile/internal/abi\nR:abiutils.go\nZ:Q1QGWme/3osfX83i6fqJTGpoua6M8=\nF:usr/lib/go/src/cmd/compile/internal/abt\nR:avlint32.go\nZ:Q1vJywYtPpJxUWIvsqyp8kGDebXPY=\nF:usr/lib/go/src/cmd/compile/internal/amd64\nR:galign.go\nZ:Q1BSJdQRtn3ETdCHPHcFVfb+EpUkQ=\nR:ggen.go\nZ:Q1f1WGzsZ7PXpmlabngvLmi5skJ1A=\nR:ssa.go\nZ:Q1O/aV2/4UkVOhHdJfVX/6e74yWNo=\nF:usr/lib/go/src/cmd/compile/internal/arm\nR:galign.go\nZ:Q1lCX9bzsCezpmRyhVbTQckPNoppM=\nR:ggen.go\nZ:Q1r1U8iHWegUtHjjEC2PcGQECkOX0=\nR:ssa.go\nZ:Q1st5oPO6l9CagPQJA/BHMoiEwg80=\nF:usr/lib/go/src/cmd/compile/internal/arm64\nR:galign.go\nZ:Q1m7FO9zOrGQ7eT+UPvWfk+E5sCSw=\nR:ggen.go\nZ:Q1dS/V2Cw38wvV7mYZ0jcOH1KOs8c=\nR:ssa.go\nZ:Q1spfHfv4hQ8qsHP010SLRI+PrGeU=\nF:usr/lib/go/src/cmd/compile/internal/base\nR:base.go\nZ:Q1mGJR3Xuc2D5f547H8mUXCdjJhLg=\nR:bootstrap_false.go\nZ:Q1DdJIzvuhcxedbK8RFXy+9+5nyAs=\nR:bootstrap_true.go\nZ:Q1j82fSkPrrIGdI0rGdWKAXAmQ48Y=\nR:debug.go\nZ:Q1oKXLBL8TyTnaQHtru531gKaTig8=\nR:flag.go\nZ:Q1PFfSodYZvDp9e8BmjZ2Br2iTUPM=\nR:link.go\nZ:Q1a5Le5g+E5QMYblj7FhVKwhjtPYY=\nR:mapfile_mmap.go\nZ:Q1q8V/j57rVNGR8Wh2lyHKGunb4sk=\nR:mapfile_read.go\nZ:Q1NCKleVcU8jWrlydKelJlEl+76z8=\nR:print.go\nZ:Q1tc8sdOW1j3i5ZJLwBjmFleMpRl4=\nR:timings.go\nZ:Q1Lw+bEEvO8+OHAU8fbeh8rV/ItMw=\nF:usr/lib/go/src/cmd/compile/internal/bitvec\nR:bv.go\nZ:Q1WIpPEzMDiWQSLPNktfz09WdZkGI=\nF:usr/lib/go/src/cmd/compile/internal/compare\nR:compare.go\nZ:Q1g3OzqFj/8iahWMORgF6EAsDo4Fc=\nF:usr/lib/go/src/cmd/compile/internal/deadcode\nR:deadcode.go\nZ:Q1sD85pH7QR+Q7Zrwn3Ct5P3X/LIY=\nF:usr/lib/go/src/cmd/compile/internal/devirtualize\nR:devirtualize.go\nZ:Q1TQFV+/DhtY3NRs4AI1yNbjWKKsw=\nF:usr/lib/go/src/cmd/compile/internal/dwarfgen\nR:dwarf.go\nZ:Q1Dsyu9eXX00r9i9I6BgdVe7uO+b4=\nR:dwinl.go\nZ:Q18IVKeumN6IO8Yktuhz+8QvIYX9A=\nR:marker.go\nZ:Q1jGh30Mkodg4fF0UMgx8roYgNyjs=\nR:scope.go\nZ:Q1OlgWsQReyYVoAJZ6K1LtWqy6nTU=\nF:usr/lib/go/src/cmd/compile/internal/escape\nR:assign.go\nZ:Q1tPNdHawjvjm+3otSm35yAK1KEzc=\nR:call.go\nZ:Q1fjt1hqh/uuY+EtNNhbXZCjNzrLQ=\nR:desugar.go\nZ:Q18n8WtrIgZH+m4XAoMDTqphOX2ck=\nR:escape.go\nZ:Q1DgikssMI1WdWkuWXtzA547NN9SA=\nR:expr.go\nZ:Q1D37nvI+Qz8tFP+WuXOF6DgUi8tw=\nR:graph.go\nZ:Q1GPaYBlD3Bo9BoWiQcSpSTaKYSqY=\nR:leaks.go\nZ:Q16oq9BXUvO2MYGlJ1ocMx/YnBngg=\nR:solve.go\nZ:Q1jhi8NMW3UCq91JdhM3Vy9im1JYI=\nR:stmt.go\nZ:Q15X3W/ZRg0UJX/faWxilrtqhpQJY=\nR:utils.go\nZ:Q1cJB8CiYA7opiyJkJ2khSXehyTy4=\nF:usr/lib/go/src/cmd/compile/internal/gc\nR:bootstrap.go\nZ:Q1wGvZmv5Fa6ZpsnZqULAyg5VW2b0=\nR:compile.go\nZ:Q1EUTUmgM1sI8t6O1pHBrYF5GwbTM=\nR:export.go\nZ:Q1Wbk/EMtOFvwUFDc4XWI2faV+iFQ=\nR:main.go\nZ:Q19iURKo72gA439vTK7mBLX3zQe/0=\nR:obj.go\nZ:Q1cuK/NxP3LHSmYCcy+ORUcFe4rec=\nR:pprof.go\nZ:Q1lith7+eUc3CMyGWkXIL6lCxYLDw=\nR:trace.go\nZ:Q1NxnNSRD2zQifr3PBoqsbqAeDC+E=\nR:util.go\nZ:Q1oMEZjiR+YJ1q+zxTRakn/XsAYhc=\nF:usr/lib/go/src/cmd/compile/internal/importer\nR:exportdata.go\nZ:Q1w1+hxbMdFKWfTifiEVFzyI0YRyo=\nR:gcimporter.go\nZ:Q1J4jsABffh84FFAIQUDRMNXmiRvg=\nR:iimport.go\nZ:Q1JtcYYSpYTVnIAdO0kJDcsPm42yo=\nR:support.go\nZ:Q1znvVnuIZRX2w6O7y1Jancg0Bp9c=\nR:ureader.go\nZ:Q1h2U5GBm28iZbXrsV7q2O+Flqfz8=\nF:usr/lib/go/src/cmd/compile/internal/inline\nR:inl.go\nZ:Q1LHq3rejn2eCKH1DbxAO6Tug/3vI=\nF:usr/lib/go/src/cmd/compile/internal/ir\nR:bitset.go\nZ:Q10ekPmP1qaOaAHrmmUMRy/W7G9Yg=\nR:cfg.go\nZ:Q1t2TF8ZCyEPFYi5SrY6Jemwdz1Oc=\nR:class_string.go\nZ:Q154MdBkJze+zLTJvlBOXXNjzPdhM=\nR:const.go\nZ:Q18l/kiqBM8mBbCcstsoOhu4KZLNE=\nR:copy.go\nZ:Q1mR76CmfeXZ+P6kLnWp9oKLIHUI4=\nR:dump.go\nZ:Q1uJC+wWD7HdPUXhLTXnOFUJ1pWRg=\nR:expr.go\nZ:Q1X8wEMH7VOXnzBilgsobmnAITSVs=\nR:fmt.go\nZ:Q174Q4NB1/eDNTxNmV13Y3AeetLzs=\nR:func.go\nZ:Q1mHzGT5EHDEoCJTtbVKkbYvlnAwQ=\nR:ir.go\nZ:Q1t40owpLhLYTvVjA4BoNht8O2xaE=\nR:mini.go\nZ:Q1CmTxEBeIEsSSgnHJAFJ6EO4Ffzs=\nR:mknode.go\nZ:Q1XtzPv6pdT98QyOBl7tmoDKw1klg=\nR:name.go\nZ:Q1xMYotBoeUawfJF8LfqrVmPLcYrM=\nR:node.go\nZ:Q19RVgFCNmtEyCAlf0ZR015UUyBzs=\nR:node_gen.go\nZ:Q1QCq5U955w0jCc0QXqYvTGe8Ais8=\nR:op_string.go\nZ:Q1UMirj1ebUP9D6dq3BWHAD+6s+GU=\nR:package.go\nZ:Q1THqIJ7T3CdnJGLkBwfYUBcpqAoY=\nR:scc.go\nZ:Q1jRLD+gXVzJUhhXsLaaCE+SodgvI=\nR:stmt.go\nZ:Q11m+lTWe/j672zOJah+vWsCSXgpQ=\nR:symtab.go\nZ:Q12Z5+iGsLKR39ZqXEs/T0EKOjZ40=\nR:type.go\nZ:Q1n0eVO9fCbBhS1S/4vUbj1ZNOZLU=\nR:val.go\nZ:Q1mxfBrRA1LCHrHiKCvrsfWdO/CN0=\nR:visit.go\nZ:Q1G5r2OpiNYYW/i7rn53Dp3SlZVKQ=\nF:usr/lib/go/src/cmd/compile/internal/liveness\nR:arg.go\nZ:Q18TP76JeYQMl4JD1s6IZth3/LRcM=\nR:bvset.go\nZ:Q1LDdCk/dEzaOX2muqaSfbvfc8YWM=\nR:plive.go\nZ:Q1wenynnvg64DeFBMrpMx6cuE8kSM=\nF:usr/lib/go/src/cmd/compile/internal/logopt\nR:escape.go\nZ:Q1qKK4wy9kXasQPHvx9NsKmNz+8HI=\nR:escape_bootstrap.go\nZ:Q1HWKBMAr1fzPYkIN33v41lsPHTH8=\nR:log_opts.go\nZ:Q1mnqWCVsJey+gspckfOWFI0qk+68=\nF:usr/lib/go/src/cmd/compile/internal/loong64\nR:galign.go\nZ:Q1RyIU+I/0tEsIVcUqFzHzIV7h9gI=\nR:ggen.go\nZ:Q1Ot35cTOKS03GgPWgwmJkLA5tw5A=\nR:ssa.go\nZ:Q1lBCtJ2EIwKU1OkxbLxoPSS+Dptw=\nF:usr/lib/go/src/cmd/compile/internal/mips\nR:galign.go\nZ:Q1//18MIkf9ffw3RPfOjwoVdzt+PU=\nR:ggen.go\nZ:Q1c2Btr3OWrwq6TTfUuC01BPyTRlA=\nR:ssa.go\nZ:Q1hNkIKHIK8cxrxveIXJEkKkGG/JY=\nF:usr/lib/go/src/cmd/compile/internal/mips64\nR:galign.go\nZ:Q1crwS1Vh+wGt37YFtuvjw2rsmNLk=\nR:ggen.go\nZ:Q1Wdgw877mcWP1/I5yYk5JKKGPd/E=\nR:ssa.go\nZ:Q1fVVwqNLBMjTTep3rHqk7nla4pWA=\nF:usr/lib/go/src/cmd/compile/internal/noder\nR:codes.go\nZ:Q1TKTtRrh84ISfaLvqbZe4MxbfVf8=\nR:decl.go\nZ:Q1CtUIYbClSR+rSkWPbDwI2IuIj/E=\nR:export.go\nZ:Q1FhrbmUN9mtD1edQBcvCVK6nvW1k=\nR:expr.go\nZ:Q1tfHZ7Xo8yj+2bq+EGeONI9I+Kuc=\nR:func.go\nZ:Q1goYC2xiNYn6hL4nAgC4HueAARNc=\nR:helpers.go\nZ:Q1j+Gln08oLyn1zSDHfb/0lM9QfxA=\nR:import.go\nZ:Q1Fnzqk7IpXM6SKP8VNSUozmwPPiI=\nR:irgen.go\nZ:Q1nU1d+NJYFlpZnAFhWuAJZEH1qt8=\nR:lex.go\nZ:Q1268OT/v+W38yN0J3VkpDnxwkbIM=\nR:linker.go\nZ:Q1C9cZlfhfyZk9alm6TdW1CMKIENA=\nR:noder.go\nZ:Q1UB5qS3BjChSgVXszdHMyfoO2Iyk=\nR:object.go\nZ:Q1xocN58vA60HKzCtUIcARNYgnwvQ=\nR:posmap.go\nZ:Q1ezHlaEDFfvN3YxSqGaC1XF8DvG0=\nR:quirks.go\nZ:Q1dm0rPEmAVQ/g2N2FpSLn92ZCPiY=\nR:reader.go\nZ:Q1W9bNrqe0s4GiktimICEq/I6M4Pw=\nR:scopes.go\nZ:Q1oxzCbkpGHyrozUug+CJoOMxXcrI=\nR:sizes.go\nZ:Q1iK89arNJ8HOty6QpOIVH2hUf1ZE=\nR:stencil.go\nZ:Q1b2018uSGMpiBmkUv/WPK32xI0RQ=\nR:stmt.go\nZ:Q12yOb5lRn1OF2xPu8SlZeAjbARAg=\nR:transform.go\nZ:Q1mD0Myr0KTzWfad10WTdsMMgScMA=\nR:types.go\nZ:Q1cQNko1fNHnbHAgeqAay/4D9fLO0=\nR:unified.go\nZ:Q1dgGP70DN2XNT0BiARbmpbmIDdww=\nR:validate.go\nZ:Q14Vh06eLbPegUc3jy3oD55fYdzq4=\nR:writer.go\nZ:Q1/5KYB+z1Lbh14giM8eKTDkMGNB8=\nF:usr/lib/go/src/cmd/compile/internal/objw\nR:objw.go\nZ:Q1QCVkAcTE40il9ORZqUFUWBYYNh8=\nR:prog.go\nZ:Q1Pe5VQ2iFr8qB4rzpHzO/DlInQKw=\nF:usr/lib/go/src/cmd/compile/internal/pkginit\nR:init.go\nZ:Q1Tx0+MvNyUUUerFAGveED7UBsSN0=\nR:initAsanGlobals.go\nZ:Q1Dex+w0pYbJqyZC2Bwuy9rvrLzxo=\nR:initorder.go\nZ:Q1wgSvjEx2uWy3tM7V4UcN5xDS77c=\nF:usr/lib/go/src/cmd/compile/internal/ppc64\nR:galign.go\nZ:Q1Jk4u55pGt7itFdtYggETE//3tzc=\nR:ggen.go\nZ:Q1Ovn+5ZuQhuPvC0fQkIkc3RQKq7s=\nR:opt.go\nZ:Q1T1GEXxHS3PF36iS04x7A0lb9h74=\nR:ssa.go\nZ:Q1fD9Zold6AzfOkJozlUDDNyooVeE=\nF:usr/lib/go/src/cmd/compile/internal/reflectdata\nR:alg.go\nZ:Q1G15P9PlF2Nl88+3Ytu4E7khF+0w=\nR:reflect.go\nZ:Q1dGWvxIZkv26O1S8YEo+T2HvW5h8=\nF:usr/lib/go/src/cmd/compile/internal/riscv64\nR:galign.go\nZ:Q1LRybPZb8JPocNLe4cIaY7J2giJE=\nR:ggen.go\nZ:Q1wqOk8XA12OJ3MiVDjumrqcDuV8Y=\nR:gsubr.go\nZ:Q1mBStzZw5/Zw9kwN/Qn0oLenQCZs=\nR:ssa.go\nZ:Q1AH/qg5LtTjGLie9grI5BxW4r5AE=\nF:usr/lib/go/src/cmd/compile/internal/s390x\nR:galign.go\nZ:Q1hWH8YTANW4fehAIqtP0OgYpXdfw=\nR:ggen.go\nZ:Q1JCcuSWEBjah63RqWE4NCA3liSOc=\nR:ssa.go\nZ:Q1J0glQiFd/7BNOejWvDzRPt66olY=\nF:usr/lib/go/src/cmd/compile/internal/ssa\nR:README.md\nZ:Q1ldLToNlKcbXl6/t9cR5HNQ/D7uI=\nR:TODO\nZ:Q1PUOg/hNUOEuJAsNjW/kXIOeC/CE=\nR:addressingmodes.go\nZ:Q14mMub1LIP5VUOAkhReN1LIgNa44=\nR:biasedsparsemap.go\nZ:Q1V/oaPUgpzyh/KmKYF92yJVo0lGo=\nR:block.go\nZ:Q1xDf5aS/1pae2Os1dWF24V7YNaZc=\nR:branchelim.go\nZ:Q1fA6vDMCrdN4rgbV9UumK6INLBYs=\nR:cache.go\nZ:Q1lxJ5rxVHCy1G9ThZTJzbJcEh3RM=\nR:check.go\nZ:Q1aNkNu7jixNBI+EeJ6h1u5YmHTDc=\nR:checkbce.go\nZ:Q1ZOfjWQlxbxgiZqBbw6Xb0BYetwQ=\nR:compile.go\nZ:Q1tttP6iWrTaC2xVJM5xFfoztEQ9k=\nR:config.go\nZ:Q1TMPplNk1dtG5Vlu63C/xfFlXFY0=\nR:copyelim.go\nZ:Q1bJ2Lxor1Nt5trQ9eb+rZWSL4aCg=\nR:critical.go\nZ:Q1tvnuu2qA+mqnTcOusCLevxX7rvI=\nR:cse.go\nZ:Q1KqZjOeXyNSMNnQvlHw90LUX1In8=\nR:deadcode.go\nZ:Q1yFd6U97+m+h+VpEkPDY3lca7x5M=\nR:deadstore.go\nZ:Q1ArUGQ6uwpFfIgPuOdZ3g9hUatPo=\nR:debug.go\nZ:Q1sLEVRpp3JWpUQ2XkKvBIT30oD7I=\nR:decompose.go\nZ:Q12x2KpsJz/nUnBccr4uXU0SPNd5I=\nR:dom.go\nZ:Q1fGkN62IHbcp4huRaOFVWdTX7z1k=\nR:expand_calls.go\nZ:Q1smw/p/JApDp8zVyBwkKdrnI9WAg=\nR:flagalloc.go\nZ:Q1bFISd4yr42NKDMUrSrtM2j5t6zw=\nR:flags_amd64_test.s\nZ:Q11HiLHkyXbomLT1uTCocsoURj81o=\nR:flags_arm64_test.s\nZ:Q1SZXmLiCy7MEJzTEzRGYUcg9x9C4=\nR:func.go\nZ:Q1IIB95QTQ9m5yDGvOuk3EjkbJDfQ=\nR:fuse.go\nZ:Q1EQG6Lmdmus9EhuStUJQuj8EIrH0=\nR:fuse_branchredirect.go\nZ:Q1KnabIME4eubJuXB2MsRR5QwDXu8=\nR:fuse_comparisons.go\nZ:Q1gDIRhzkph4e2G8067qb4/bG74wY=\nR:html.go\nZ:Q1i3Yf38HrmC7BoeG1yC2t5La7lJ4=\nR:id.go\nZ:Q1UkSjkXpei2+5CtAqDcXJGLLoqAw=\nR:layout.go\nZ:Q1XAqo/gbnJKGAF1rRCmFMQKRV/Yg=\nR:lca.go\nZ:Q1iE6irMSgaGz7sjmBcxtfVncpI84=\nR:likelyadjust.go\nZ:Q1l4zsjxaCO7UI+gaMk//T5eHD27A=\nR:location.go\nZ:Q1w4DRrh41NRb4Y0ZQKe5HbasDfNo=\nR:loopbce.go\nZ:Q1kFVi2RHjLPpRM85W/R46L6OqzGs=\nR:loopreschedchecks.go\nZ:Q1nW3sCK1w666mSe0P7M1OcWlJCPY=\nR:looprotate.go\nZ:Q1xCa3J0qMf/wJL2fWAKkJwW9Hx8Y=\nR:lower.go\nZ:Q16DV6SSWs5nvrJ0wIrjU3qE784PM=\nR:magic.go\nZ:Q1v9iG77amSILXdWwa0i4WH1CwLkM=\nR:nilcheck.go\nZ:Q1Z0ind7yC2v/RieZMPmNOlBqrD6E=\nR:numberlines.go\nZ:Q1FkiP9S629iAl1GGqnP22trQr0vY=\nR:op.go\nZ:Q1eeWfWXW3enzZBJfvXu/7ghb4k2Q=\nR:opGen.go\nZ:Q1y175Qds27L0u2fO07f62mgK3Hqs=\nR:opt.go\nZ:Q1SLpaMHJmke90Ic9hqP8YADC8zu4=\nR:phielim.go\nZ:Q1SGCFfyyBoaeYhTYuC3mRhUk7nmg=\nR:phiopt.go\nZ:Q14GoOd6gBUg6Jru7sW1s1oZOAB2U=\nR:poset.go\nZ:Q18lEGsIGcJIS98GsbO5EFUZ/kZIM=\nR:print.go\nZ:Q1hR3OcMzASB630uA0/0kFV1V6Tis=\nR:prove.go\nZ:Q1DSYA2fbQeVh+lE7+YDJvhd6ORTA=\nR:regalloc.go\nZ:Q1yg1fpZj+Q4iW/9jUiEJHP5JjD1o=\nR:rewrite.go\nZ:Q1uZySgvwEF6aIYu0Zqdf4LKAitFE=\nR:rewrite386.go\nZ:Q1b4/T5+lIOSz5cebDk7iHhcSLPJU=\nR:rewrite386splitload.go\nZ:Q1niy/yJF8G9AKQnlGrg7ydAwb2rI=\nR:rewriteAMD64.go\nZ:Q1x5XqXt1eU9tsJxrFXue2wiesdZ8=\nR:rewriteAMD64splitload.go\nZ:Q1XkqiMlIl2V0Lj5xLejk+ZE/denQ=\nR:rewriteARM.go\nZ:Q1e9SxgU4siZa8amaRyRBB/Y+8Vis=\nR:rewriteARM64.go\nZ:Q17kWII0h8nqZF+CjHQMVsxK5hKlo=\nR:rewriteLOONG64.go\nZ:Q165OJqur9BNt4JqT7eiU2HQw9kTY=\nR:rewriteMIPS.go\nZ:Q1xVvSTPiO/TE9gecrUfeCSPPPRr0=\nR:rewriteMIPS64.go\nZ:Q1w1ETMzyI65zm50u4EBWo8bSVZ8U=\nR:rewritePPC64.go\nZ:Q1i66X0FFYHV++djIsY4QZl6vAWpQ=\nR:rewriteRISCV64.go\nZ:Q11golZlrkGOzh8EQ6oHDqcNq9rUQ=\nR:rewriteS390X.go\nZ:Q1J75s9xm5jiu+igB99Rjw9daF82A=\nR:rewriteWasm.go\nZ:Q1sI35AUHcNx1+PcLzdR1uXFGXrHI=\nR:rewritedec.go\nZ:Q1dieIofddleW3zSnguOm4oG1t4so=\nR:rewritedec64.go\nZ:Q18C43FsjK6/BdO4KJCf5hMDffhkI=\nR:rewritegeneric.go\nZ:Q1HoxTRDl7bZhCRxnBP2iG0LfiRFQ=\nR:schedule.go\nZ:Q1epCKmlGpjEmQFUcnjJ4mRyoy+mA=\nR:shortcircuit.go\nZ:Q19HqgmSD1TE8ihlHMRozpuGqUYBM=\nR:softfloat.go\nZ:Q1yLpdYDeL4o5owhF57LKaCFKXZ3s=\nR:sparsemap.go\nZ:Q1ojnrtoMrAycPQtsypEf1Ca6mubU=\nR:sparseset.go\nZ:Q1J2ZKrvbgpUBaoRUvv+8Xhg4lHYo=\nR:sparsetree.go\nZ:Q16Ho5Q29GNRedjh0pb+8x0qcnODs=\nR:stackalloc.go\nZ:Q18hc++anlZSPtt3r4BVl9TLOtiBg=\nR:stackframe.go\nZ:Q1L3Y5sm2CgdXbsoqlSSRz5p8ML1w=\nR:tighten.go\nZ:Q1NePZpiiWgh+IUroKrwLQlIvN6U8=\nR:trim.go\nZ:Q1b2s4ieCHD+ACUtdouvpN2EXKJQ4=\nR:tuple.go\nZ:Q1SXlTl43RIpOfsCxZNVn7UCAwmXM=\nR:value.go\nZ:Q1RVB7KMl7pl9ylptJuArIJv+Le+M=\nR:writebarrier.go\nZ:Q1vOIDuafR/dbskVV21TmbTP8nr+w=\nR:xposmap.go\nZ:Q1/dnae413jbiUYSjV6whq0PMpbSc=\nR:zcse.go\nZ:Q1U+yOAdkioS/RyeBEzoANkmdTEhI=\nF:usr/lib/go/src/cmd/compile/internal/ssa/gen\nR:386.rules\nZ:Q1txtd7shIr8EowI7knQGeJN5FSLs=\nR:386Ops.go\nZ:Q1AEl3YEaSGLWgXc2zr3Ll4vzj2V8=\nR:386splitload.rules\nZ:Q1Tov9HPES+7kZV10G4OuIfZqfCV8=\nR:AMD64.rules\nZ:Q1Y9UoobkYJ0zyFoiYDOHOuG8HbnI=\nR:AMD64Ops.go\nZ:Q1QVPLYXYz0c8DERsvGIs4/hDwhE0=\nR:AMD64splitload.rules\nZ:Q1wvzIIBtoyGx1FkXjwf0j5kENR1Q=\nR:ARM.rules\nZ:Q13zZRxZcex+jo8CDzUwaqWcWv/Zc=\nR:ARM64.rules\nZ:Q1RHYniuhalADJBhlXgAGVGRIBEuk=\nR:ARM64Ops.go\nZ:Q1gcaOw2f3b1MRtEvAnrje3sLsXH4=\nR:ARMOps.go\nZ:Q1XN9lwmEcEoDt8M8n/4Uic0Yptzg=\nR:LOONG64.rules\nZ:Q1pC79hSMHykSXShhPxDYlG96m59I=\nR:LOONG64Ops.go\nZ:Q10RIDQ/3D5cWjkwV0RGz7P9iwVWI=\nR:MIPS.rules\nZ:Q1Wh48/YBI0QnuDMlm1K2pZCbUy+c=\nR:MIPS64.rules\nZ:Q1+aLZ4c1UuEuhs3pnVSd+ka6FQp4=\nR:MIPS64Ops.go\nZ:Q1kpK5Qj+sTiIuhmlaea5iDhz0ios=\nR:MIPSOps.go\nZ:Q1HZ0c02l7NH7eW4djNArIIq6yK9I=\nR:PPC64.rules\nZ:Q1EH3sB14TBd4wncxjPTAF65BXvO8=\nR:PPC64Ops.go\nZ:Q1bfo/rKjn7icA8eNQvorgzIIKZCM=\nR:README\nZ:Q1voxXa4VGm1klXd8RFG9c+myuZb8=\nR:RISCV64.rules\nZ:Q1hFFoHLlMBLV626aibl6PjMQ6+Vk=\nR:RISCV64Ops.go\nZ:Q1BzldFqb9Fe/gqYP7FTwFiNYACho=\nR:S390X.rules\nZ:Q1LARn5mOypz0baw/fK+P5BwpxSSA=\nR:S390XOps.go\nZ:Q1lJ7ghM4IHTzW0BtBEE5na84rIJw=\nR:Wasm.rules\nZ:Q1wN8XfA7eGAstPrsi/PBpuTEWBPY=\nR:WasmOps.go\nZ:Q18/0Su7Mm/NXgOUGunEQMdMzo5A0=\nR:cover.bash\na:0:0:755\nZ:Q1dFeW/mOmVWd7rUeoh+iOjVuPiwE=\nR:dec.rules\nZ:Q1Ff8e8cyh5/2JdOxIExbD2dengSc=\nR:dec64.rules\nZ:Q1vBztnb3Ar34JTq44tYJSE74kC0A=\nR:dec64Ops.go\nZ:Q1D6/rd0ZPjVsiMlb14xXvcTF1k3g=\nR:decOps.go\nZ:Q1bnSbNbZsVudkzV4tn89etrDio1U=\nR:generic.rules\nZ:Q1oHq3d3IjfhoW/vbDtlFaOlOEJBg=\nR:genericOps.go\nZ:Q1BSRd4hYIat08DgIQdQ1WMHPpAm4=\nR:main.go\nZ:Q1g311S5qWPQtlsFh72q+YIBFSlJ4=\nR:rulegen.go\nZ:Q188BmplRkqvgnc4bnP25NexdtO0g=\nF:usr/lib/go/src/cmd/compile/internal/ssagen\nR:abi.go\nZ:Q1e4XHeJSfRtKa9LHyrM3Ain9KrBs=\nR:arch.go\nZ:Q1B/mCmdeV+e0YRjBvrWwEtl/Fobo=\nR:nowb.go\nZ:Q1JTlSDdq4On/W7cAHhfYJEJ26pTc=\nR:pgen.go\nZ:Q1P9/6pyekgHnlDi7brcQfhQu7zzU=\nR:phi.go\nZ:Q1WCUtCK4Xb9I20n2BZJPGQ9NspUM=\nR:ssa.go\nZ:Q1NeWYapaW4EGmjWeYSymSjF+pqUA=\nF:usr/lib/go/src/cmd/compile/internal/staticdata\nR:data.go\nZ:Q1q4CiOrJ/V4h2mP1lHmO59mxGuSo=\nR:embed.go\nZ:Q14DRLBsvBAypv4SWmOHF7hlPepWo=\nF:usr/lib/go/src/cmd/compile/internal/staticinit\nR:sched.go\nZ:Q1cUs5WtC7bIebizMy3hT+GOyk4I8=\nF:usr/lib/go/src/cmd/compile/internal/syntax\nR:branches.go\nZ:Q1PN1An5U0UbgruMcWVOmCL5CRgKI=\nR:dumper.go\nZ:Q1yt146FCaO6atPa7oVAplezQZ6eo=\nR:nodes.go\nZ:Q1vf88UcxbBXb/VBG1AMoC45SfNQs=\nR:operator_string.go\nZ:Q1Otf7dMP71zRNg1BS0twq9utGbBM=\nR:parser.go\nZ:Q1Su/jc8zN1606ArVwDIY90UpJjOE=\nR:pos.go\nZ:Q1n5M6Js/YjkAuBLK7fd3T8Qj7iyo=\nR:positions.go\nZ:Q1T5dXCr41DIko8e/F8t63612R1ok=\nR:printer.go\nZ:Q1UvWzyMSP4QhJdmMXNRHJ9SUdLTU=\nR:scanner.go\nZ:Q1IVIXYn5Gvkf3FHefT/0vFvwvTRQ=\nR:source.go\nZ:Q1IxLZuEhbiaRQWpEhV9s+pxQpcQA=\nR:syntax.go\nZ:Q1ljQJGsrnu9wz6nNqVdWrIGIzg7M=\nR:testing.go\nZ:Q1oYg9FiNlijDbd3P0lcpnMYktUV8=\nR:token_string.go\nZ:Q1Dq5gwCs64w5AOV+wVRM4JAf4IKw=\nR:tokens.go\nZ:Q1HXsqS7LNFKEvDd+ikwq8ZzPr0zo=\nR:walk.go\nZ:Q1f9Kq2VrzH2W+vvMTnGx0eREAjMA=\nF:usr/lib/go/src/cmd/compile/internal/test\nR:README\nZ:Q12CRo4wm/GbXMtpMB2vA0Tlit1xs=\nR:test.go\nZ:Q13pJ578ULs+ec1Z6+tlaxrrsWbHY=\nF:usr/lib/go/src/cmd/compile/internal/typebits\nR:typebits.go\nZ:Q1GhJz5d8sfQZC0NVdlLDdVMGH2Gg=\nF:usr/lib/go/src/cmd/compile/internal/typecheck\nR:bexport.go\nZ:Q1u4d4/hbCabNz9QCP6o8rv0yxCnw=\nR:builtin.go\nZ:Q139jYBefH4eZaYyO67Q5OBK59JM4=\nR:const.go\nZ:Q1omPtBV3Tdg6hZGsc+qx59YIU1zw=\nR:crawler.go\nZ:Q1wfBc4o9o09rK8Y5OdeCDn1HF47A=\nR:dcl.go\nZ:Q1OwYejsDAaSJBXVkMx4SVeMGLWMk=\nR:export.go\nZ:Q1ympodSK1ztmLNT1MtHRMxwO48nc=\nR:expr.go\nZ:Q14YhyfEzgPCCSpLofyexUpqTsiE0=\nR:func.go\nZ:Q1oBPx6NagEWCmrhJJsuruChX0vek=\nR:iexport.go\nZ:Q1cY35jP0J+BKaLP+e1zu4fyj16A4=\nR:iimport.go\nZ:Q1PEDR3f9UCZHSNLCXqpY88zFYxuw=\nR:mkbuiltin.go\nZ:Q1FagFiOAqutafZvhsisE/uOQe05w=\nR:stmt.go\nZ:Q11DoHLAFHTemt4NFsl86fixsfkIw=\nR:subr.go\nZ:Q1wuxqNq//Ciwe5meD//S/EqB/+Z0=\nR:syms.go\nZ:Q1rXulGjSv55+PtoXcExkUTXFH3jc=\nR:target.go\nZ:Q1XXM7Ut4Ky2/911yWkIcK9xh6Fpw=\nR:type.go\nZ:Q1eMwpRWP0kWD0KmQfYe6mU7UbY4U=\nR:typecheck.go\nZ:Q1S/OHyyyz7r92AyP/kDyg3Jx1dYk=\nR:universe.go\nZ:Q1noL8vwg/GBl35tQu4VFUGMMvdaM=\nF:usr/lib/go/src/cmd/compile/internal/typecheck/builtin\nR:runtime.go\nZ:Q1a1dansfYu4fBcKQco42Ea3vMl+c=\nF:usr/lib/go/src/cmd/compile/internal/types\nR:alg.go\nZ:Q1DlqeEKzNIgRUdnlHuKhICFDWxB0=\nR:algkind_string.go\nZ:Q1Kx7sgtyocR4tWUVmyUksNwX03AE=\nR:fmt.go\nZ:Q1mOq00TaHGAzfAkBsdd1aMVz2rFQ=\nR:goversion.go\nZ:Q1KLkLr3HrJZeoxLnMRxWAvsFbcCE=\nR:identity.go\nZ:Q1Jv3RctNZMy+LSRvZ4Z2x44cj8oM=\nR:kind_string.go\nZ:Q1wSi0U5YtVGjQLbmkEeMyhbyPYzE=\nR:pkg.go\nZ:Q1EgaUN7nAvKR7f2Dm510VXS3LDZM=\nR:scope.go\nZ:Q1CXqZSuYoAUCjhpX3JuHpnWgFwEY=\nR:size.go\nZ:Q1L0tZlhu7+ASaCxeoZatVyGt0RXw=\nR:sort.go\nZ:Q1vVl6GbLxdZR/6Ud6wR9z3/FaD48=\nR:structuraltype.go\nZ:Q1ydWpjNqsG7kXVrtKGNbTTVV+EW4=\nR:sym.go\nZ:Q1aMMqmPGiuKUCu/UHAXLtwFEe+FU=\nR:type.go\nZ:Q1l91+ebJ+Thu65vDf3R2dEgMGvoY=\nR:universe.go\nZ:Q1rwjFPk3HaqD/DQFemQEswFJ1g/E=\nR:utils.go\nZ:Q1rtfWIJ3GU6cO7wei71ix6u6/Sd8=\nF:usr/lib/go/src/cmd/compile/internal/types2\nR:api.go\nZ:Q1ZcUsq5nNFm3B/q1uUDOZn3Xvvq8=\nR:array.go\nZ:Q1KLXXii10l+opNzLbk92wQ1bU70s=\nR:assignments.go\nZ:Q1Dt1S0FIprI01oL2UvwVy8Dzz9no=\nR:basic.go\nZ:Q1GTI/rgsp58vxgxbX7XRr6D8++Bw=\nR:builtins.go\nZ:Q1HmAhVfF6cht1HTgjt6z0RVRk0q8=\nR:call.go\nZ:Q1rufrkGvjBQvMB+FSJOpjhHUv8Ww=\nR:chan.go\nZ:Q1wi1MEn1nvuWQLgt0405iBVLkL/s=\nR:check.go\nZ:Q17uPLugUzkDb5QNky+rUWBxvCn8c=\nR:compilersupport.go\nZ:Q1EFU3z1HKEWfq4v9gDdx6bcgNtto=\nR:context.go\nZ:Q1yLpFV1eVWk2hGXrkSA5ecpAI17k=\nR:conversions.go\nZ:Q1PQ6JSFmsDQ4G0kosmU57OuZSwYY=\nR:decl.go\nZ:Q1gWRpg0HLKmvY+as4oszU++Omwog=\nR:errors.go\nZ:Q1BAbK/DYgIQ1aiGbtaOSVEQp3nDQ=\nR:expr.go\nZ:Q1Q88I54tLxELULxU7Do8q7aYSM+I=\nR:gccgosizes.go\nZ:Q1MC4QjzY7vAHA1FORFoeK6Lbqqqc=\nR:index.go\nZ:Q1tRDUSgx7fbarRTtwwdMzkjgONsQ=\nR:infer.go\nZ:Q1mMDiMbe2UT2D2SnOra7onNAckAs=\nR:initorder.go\nZ:Q10M+qrLXCx9wTeUSFoQCV/oXLPpY=\nR:instantiate.go\nZ:Q1bXTxSUCYDY03Boa+12tAvRg6m3s=\nR:interface.go\nZ:Q1ax7fZuVHNGQoCAyQ3HVsnmVXpeE=\nR:labels.go\nZ:Q1Cz/1VZQyAi/7QFc86xmmKh2DTXA=\nR:lookup.go\nZ:Q1jjf0sKxN6H1pTciOaM15/Mz/54k=\nR:map.go\nZ:Q1UFomtBE9j0gDRsdgIURSMVNG8ak=\nR:mono.go\nZ:Q1PrIxNeXackQ0O9Q+PLkNlwLLuU0=\nR:named.go\nZ:Q1DlRtxTeDl7lf2CyaKZ/lJwF66No=\nR:object.go\nZ:Q1vKOSNhy0KlgOwtk0sHCByEar198=\nR:objset.go\nZ:Q1MJjN2YOCVDCE+py7xgCXHJ0PBx4=\nR:operand.go\nZ:Q1L9/zCUI64UJBHRnzal5Il6d+dQc=\nR:package.go\nZ:Q1TgWXZ1flmMUMC07Z+ip0VHM8zDk=\nR:pointer.go\nZ:Q1lhinXwfsG2ho48TGqM1P0UyGaVI=\nR:predicates.go\nZ:Q1yw8zWo2dnCioGTR26Pr02OMgelo=\nR:resolver.go\nZ:Q1H0ClJfs1jIVVFtpywKDUcMHvLn0=\nR:return.go\nZ:Q1bRlo2ZBQmcvchfXMmQAypoQOAuk=\nR:scope.go\nZ:Q19lMsAu1cG2awqJKd15W4abv2b0k=\nR:selection.go\nZ:Q18ghL0aQqRE8lZH69bz6NZXrWOaY=\nR:signature.go\nZ:Q1xuUFsCgDwD9Ya8kAdV3KAi7Rhis=\nR:sizes.go\nZ:Q1IHxR09btsc4o63jmJl22aKd44go=\nR:slice.go\nZ:Q1PS6vVnXGEzHoYcqQ8rJ7w9kkUjE=\nR:stmt.go\nZ:Q1HEzU4Xs3Nu6+xhXWlMyv7u4CPDY=\nR:struct.go\nZ:Q1u2hzGm/yclEnqhRTODUcdz2yQj4=\nR:subst.go\nZ:Q1iYKy4PY2G7x/Sz38GfncApR3SYY=\nR:termlist.go\nZ:Q1z1v4d9bCTP1zx2y1ajxSfH//jPc=\nR:tuple.go\nZ:Q1lgpV0UzOePxOMlj99YlyDYnI8Lk=\nR:type.go\nZ:Q1NiUsPifX7qzVDr/RrE2LXtBk2Uc=\nR:typelists.go\nZ:Q1ROIFt4omiaaqPXc0rGqgCQqa1vg=\nR:typeparam.go\nZ:Q1/vGmZKEgGteWbwYBWRVa/hGBFoM=\nR:typeset.go\nZ:Q12jL6IGF4zHj1ZPOYhgmlLrfRZU8=\nR:typestring.go\nZ:Q1268+snc42ety2y8Sde9WBlUIKZw=\nR:typeterm.go\nZ:Q1SBCbBm540iCLqsTYOUigyABIGpE=\nR:typexpr.go\nZ:Q1ifyu9Fd80h72ESvvaMyREAK3R+Q=\nR:unify.go\nZ:Q191I2aztw5DCIlw6enAWCzpc0VEY=\nR:union.go\nZ:Q1VVkXEdq/2EepEY/wZWRx3adYVnk=\nR:universe.go\nZ:Q14dg5QzaTZt4MM2fxjEDls6QuyPU=\nR:validtype.go\nZ:Q11pGhyEP9Dd0tYv4NNJfZbhpCR00=\nR:version.go\nZ:Q1xTgs7suH0aAdX5ZgheVWmjmeHkw=\nF:usr/lib/go/src/cmd/compile/internal/walk\nR:assign.go\nZ:Q11N7D4v8BlixKitGYH9YQSG0bD14=\nR:builtin.go\nZ:Q1vc6zkeZOrEAle2yzANZsvX7rrDM=\nR:closure.go\nZ:Q1ugjCUkJ75jHsr1QmGYsoQ0eT4+o=\nR:compare.go\nZ:Q1uwjCmh0aRxBqMyCfhJXTOJ/hyBE=\nR:complit.go\nZ:Q1rFb+uGRqXDkMIH+vG+b4F2P++W4=\nR:convert.go\nZ:Q18ufMXRoIlvW0SwrBtKoNmyBV2ns=\nR:expr.go\nZ:Q1m8lyQoss5eN+2m6cDq/NR8uJGcc=\nR:order.go\nZ:Q1yOkc6oCmkYrTD/dd4s4veDERK8o=\nR:race.go\nZ:Q1r6tCOf9vugYNxYF5tiTGoxLS3CU=\nR:range.go\nZ:Q1TFgukW6Ok0FdqWzK+8BWo1zh1ww=\nR:select.go\nZ:Q1DTv2rlZsbRyY35iUpnjCnZ78UeE=\nR:stmt.go\nZ:Q1JbzlRiZ/Nmhqx2SEulw1I1nHGjU=\nR:switch.go\nZ:Q12BV+WJMsHgCMe/HZuTf83MMq0QM=\nR:temp.go\nZ:Q1iLtA4L4qqXL0bIojrjVFM/S/y5I=\nR:walk.go\nZ:Q1COn0nf+Kwgpk1EdxNP/lyXQ5UTw=\nF:usr/lib/go/src/cmd/compile/internal/wasm\nR:ssa.go\nZ:Q1ggVJjiyTbvQa6s5AHTpxfhG7KNc=\nF:usr/lib/go/src/cmd/compile/internal/x86\nR:galign.go\nZ:Q1A7cQY8todytP0MeEmCnEo5QsDWU=\nR:ggen.go\nZ:Q1+O2fA0vKD52bCjgKEbdLX8Wq7dM=\nR:ssa.go\nZ:Q1CCxKnZrzmV4i2bWzPftwE2k4SbQ=\nF:usr/lib/go/src/cmd/cover\nR:cover.go\nZ:Q1VPkd2VoifEBDBn+pG4fBYyTWung=\nR:doc.go\nZ:Q1Qjp2/HlqqoFHlAUcpcETiWENvCs=\nR:func.go\nZ:Q1dDXvRpxqziPcqfMMXoaBMTTEDFI=\nR:html.go\nZ:Q1k8kmekArkGZ1kNeLH5CmdwOZs8A=\nF:usr/lib/go/src/cmd/dist\nR:README\nZ:Q1Wc76ai6DphxvymYh9sG1r3uCx4E=\nR:build.go\nZ:Q1AVgMmC3ScUIsFyXMHhq2idvbWOQ=\nR:buildgo.go\nZ:Q1GZu1ixmZs41VobeTyoib18Xf/bE=\nR:buildruntime.go\nZ:Q1p8m9pqzy3GdLgVcGVBROgMN0oew=\nR:buildtag.go\nZ:Q1+F4a2ysFuJJoWnr4GelOIqZ1y9Y=\nR:buildtool.go\nZ:Q1IzLuoUGsHNUj2KBNtbzFpLSBMfQ=\nR:doc.go\nZ:Q1cWyE0h9zh7i4OZltyDOBTpWCHPw=\nR:exec.go\nZ:Q1AKeheF/qhJb4eS2E4T02acMAGKE=\nR:imports.go\nZ:Q1H9gqgSMDos+5dXaed74GrwNKXPA=\nR:main.go\nZ:Q1mdV2RFHS6lAepMdkfVWUs036+d4=\nR:quoted.go\nZ:Q1RvxxIbsi60x8gYFSs+nrK1z3ANo=\nR:sys_default.go\nZ:Q1XxfMl6aI+7o02EVZHhfuvRCwc1E=\nR:sys_windows.go\nZ:Q1whKSJES5TvWjBrTBLRF++jU7CGo=\nR:test.go\nZ:Q1Nk2v0Rpc3GaR9Lkb5fO2BKEd114=\nR:test_linux.go\nZ:Q1RNJnB+47a/loeTAb6kKGVCgWyWM=\nR:util.go\nZ:Q1WM2CkVhgsSr6oAzHsPbv2QhXklc=\nR:util_gc.go\nZ:Q1wZevzNzr/ZWPGUQ/P7+sj7yCUJc=\nR:util_gccgo.go\nZ:Q1UcFdku91wcDkikCyWNpn3JSrn1Q=\nR:vfp_arm.s\nZ:Q1t1HqngqcF4eCQ4MpwSJNzTJIDWc=\nR:vfp_default.s\nZ:Q1XAkV+3ktGNM4ohpg1mTFB2PHrbA=\nF:usr/lib/go/src/cmd/doc\nR:dirs.go\nZ:Q1LZ/tm/76tg8iG+jKQhfBACf+Qww=\nR:main.go\nZ:Q1L3PZDg3LF+I7MrbUCc9uuNHQsu0=\nR:pkg.go\nZ:Q1BfS1S4IrWvd09vR/cUEn3T4IPsA=\nF:usr/lib/go/src/cmd/fix\nR:buildtag.go\nZ:Q1ly8fp7271LThxdH2uwS8WN2oWrw=\nR:cftype.go\nZ:Q1yhlh6efgebqCCGEn0Wd2ph1bUBs=\nR:context.go\nZ:Q1i6jnP654q3NlrYS7sal/e2CJHM0=\nR:doc.go\nZ:Q1YzsSjh+Ra+fPUvePuQufcC/bbf8=\nR:egltype.go\nZ:Q1QAmJzuHc4QAvo3gzUT7pAq4tIf8=\nR:fix.go\nZ:Q1/PEaNBczZzMn0tCG/qc7cs9/+oA=\nR:gotypes.go\nZ:Q10UGudQ/3VGTa3t0krEgnfQ6ANDo=\nR:jnitype.go\nZ:Q1SPIgT/P7VHu5EUbOvbGuJFSsngg=\nR:main.go\nZ:Q1vi50AsHFhsl2/YJ7gBdrAHpHva8=\nR:netipv6zone.go\nZ:Q1d80nUIfAsZRBuago8r7zgznO4Dk=\nR:printerconfig.go\nZ:Q1k7vHe/KJKV3QrEAOi35wwwo/pIA=\nR:typecheck.go\nZ:Q1VNJ1OnFnjXw2L8qYlSG1Nm1kAUk=\nF:usr/lib/go/src/cmd/go\nR:alldocs.go\nZ:Q13w2MIVrKNAH0mX39lpKNfRHYW+o=\nR:go11.go\nZ:Q1oJGlQDC8suU2dE7HlCYT8TB2DvI=\nR:main.go\nZ:Q1XUCtVBve28aUxv4rwEznXEb98m4=\nR:mkalldocs.sh\na:0:0:755\nZ:Q1M2iWUO+icGZjeAWKJLhuTSbNA6A=\nF:usr/lib/go/src/cmd/go/internal\nF:usr/lib/go/src/cmd/go/internal/auth\nR:auth.go\nZ:Q1SxE3RBUT3qZRdQGmvmyh9d5KMLs=\nR:netrc.go\nZ:Q1Tubl5c+VZYZ1ZJvoG1YFWeoQlhE=\nF:usr/lib/go/src/cmd/go/internal/base\nR:base.go\nZ:Q1PF0pVa8gFIIL7XLmBY+cdxr/g70=\nR:env.go\nZ:Q1wwyibiMMAydhxlCvwXNZScDJSV8=\nR:flag.go\nZ:Q1S5tUhatmfD36cgBki/LkcodIsco=\nR:goflags.go\nZ:Q1aQbyXt5K7r73eFfluOmKX0T4inI=\nR:path.go\nZ:Q1ohsMo5Xmvgm85aLBGRf4JWgCA7M=\nR:signal.go\nZ:Q1bqkKxtMqh5rdbQDsI32a1azZ0uc=\nR:signal_notunix.go\nZ:Q1zkYzvx9REookFISokm+SdNq1lYk=\nR:signal_unix.go\nZ:Q1qdIA8Iff0yhTnMNpOZsG5SmF+mQ=\nR:tool.go\nZ:Q1aBiCjp31NJU9BEy2Ip/nlhSSVd0=\nF:usr/lib/go/src/cmd/go/internal/bug\nR:bug.go\nZ:Q1rjvnwdeiDqlEgCSt0GqmqrsmXEQ=\nF:usr/lib/go/src/cmd/go/internal/cache\nR:cache.go\nZ:Q1VOfvmDJrx8LaGCXz6/wLf2qUlyk=\nR:default.go\nZ:Q1hnDvJ4+Ew8ZdzFHBJ2ZfKNPcXAQ=\nR:hash.go\nZ:Q15/o/jpTyXCJIh5ZIZo67RtAlhYo=\nF:usr/lib/go/src/cmd/go/internal/cfg\nR:cfg.go\nZ:Q1/v0IgRQDf6d21YVveAho1xGYQUs=\nR:zdefaultcc.go\nZ:Q1BeNZanEs4dH7UEZfxH8MUqHvl/s=\nR:zosarch.go\nZ:Q1DPtIyCsQiasbVYINBIdVhz6CajM=\nF:usr/lib/go/src/cmd/go/internal/clean\nR:clean.go\nZ:Q1yj0wJhgB9byvE8GtrwjdyKPJolg=\nF:usr/lib/go/src/cmd/go/internal/cmdflag\nR:flag.go\nZ:Q1K80aeK4HE1C1F/oIPL8l3PSKKGw=\nF:usr/lib/go/src/cmd/go/internal/doc\nR:doc.go\nZ:Q1KwTl/K+XbcGlc2AgD/KgY/wFYrQ=\nF:usr/lib/go/src/cmd/go/internal/envcmd\nR:env.go\nZ:Q13y7HpPogA9UY1uxnaIk1wtQExv0=\nF:usr/lib/go/src/cmd/go/internal/fix\nR:fix.go\nZ:Q1os0PcAwSgafLxufqZ2tukpeylqg=\nF:usr/lib/go/src/cmd/go/internal/fmtcmd\nR:fmt.go\nZ:Q1oVtxeYte4QyZXK824Cu/LlZcrsM=\nF:usr/lib/go/src/cmd/go/internal/fsys\nR:fsys.go\nZ:Q1HGbZ4jaCQbsN1x+0NaszGv09eTA=\nF:usr/lib/go/src/cmd/go/internal/generate\nR:generate.go\nZ:Q1FLytFQL9Dx8HJ7hk2RlSHCokkfw=\nF:usr/lib/go/src/cmd/go/internal/get\nR:get.go\nZ:Q1BNSiY+m7rUY418ihldOIISnytV4=\nF:usr/lib/go/src/cmd/go/internal/help\nR:help.go\nZ:Q1fMQ7CIW3Xxt7CiVpJpPTmugkNnI=\nR:helpdoc.go\nZ:Q19y9KPmbFq03j9aGX9sMLnT5g/Pc=\nF:usr/lib/go/src/cmd/go/internal/imports\nR:build.go\nZ:Q1sUbwPuwD9tF2+U5bPXMWdygYS7A=\nR:read.go\nZ:Q1VSXNzVv+++7lhZqPv0y1YzdY5xc=\nR:scan.go\nZ:Q1nyOhdmdMA198BqO7qHLyddWfrGU=\nR:tags.go\nZ:Q1T6AN8mB92TMLDn6wME/OdaNvpZM=\nF:usr/lib/go/src/cmd/go/internal/list\nR:context.go\nZ:Q1sXzK/Km8q0P7OzwV5qFtn6lEHyo=\nR:list.go\nZ:Q10/ctnCbRCMZuJS2NupO1Gk0DkFs=\nF:usr/lib/go/src/cmd/go/internal/load\nR:flag.go\nZ:Q1ZVo0qBAfCZj1lDGcBD2tiKAiErg=\nR:path.go\nZ:Q1b+waDclMgQzqcj7VjL9fjhoXrAQ=\nR:pkg.go\nZ:Q1pVCPziT1UAU4EzvhTAppeRDPWYM=\nR:search.go\nZ:Q1QfsGBLg5x9juekSqcKSc386Kxis=\nR:test.go\nZ:Q1Y+MqRl14yA7q/eKGwiJH3IJtbGc=\nF:usr/lib/go/src/cmd/go/internal/lockedfile\nR:lockedfile.go\nZ:Q1GSUczcIX+hIxaN5qZF6fPxle8wE=\nR:lockedfile_filelock.go\nZ:Q18CTW/PsxD8hl+PgfDy2d/rB3KfY=\nR:lockedfile_plan9.go\nZ:Q18IsRSK6/lVNy6aNlQgOvaAW6FVw=\nR:mutex.go\nZ:Q13vbCjW6cXP+HzI+tNRcVpuvWZvY=\nF:usr/lib/go/src/cmd/go/internal/lockedfile/internal\nF:usr/lib/go/src/cmd/go/internal/lockedfile/internal/filelock\nR:filelock.go\nZ:Q12UL2wGeyT3UkH6ZzqUEohYK/AIM=\nR:filelock_fcntl.go\nZ:Q1KEO8HG7iQAry3XINMnoG2K6gGUo=\nR:filelock_other.go\nZ:Q1LUKwyRArsfbnXMl7B9cqz1Yw+zY=\nR:filelock_plan9.go\nZ:Q11edP3paCnXphCGuIvd4bztfcEIU=\nR:filelock_unix.go\nZ:Q17oibAobWFhpvrGyK/1STQkkO0fs=\nR:filelock_windows.go\nZ:Q13wrmUgYCTqEZY4arU9CVYkyBijo=\nF:usr/lib/go/src/cmd/go/internal/mmap\nR:mmap.go\nZ:Q13BWt/yan5zyAKF5K5g6Cpx11yEk=\nR:mmap_other.go\nZ:Q1KYd+l+QBPZMw21D50QM7bI+Rz5A=\nR:mmap_unix.go\nZ:Q12ui+xB/AUhsKUCDzbwPOQ1PmnSk=\nR:mmap_windows.go\nZ:Q1hzB0uOju4JnXtT13cmBahXS7aHI=\nF:usr/lib/go/src/cmd/go/internal/modcmd\nR:download.go\nZ:Q1rakCA1MZejH5M0twNCPEqyfNN9k=\nR:edit.go\nZ:Q1B5zOYuUDwkbWsTPiN1tLXfVdnXI=\nR:graph.go\nZ:Q1O8NlAAGt6ITd816tbyUI9G+lYtg=\nR:init.go\nZ:Q1KE4sAflnZ4J3+B1WydLNP5BYy3o=\nR:mod.go\nZ:Q1AcP4WW0zkwlgqGd38GWzzuU8hy4=\nR:tidy.go\nZ:Q1282dIS9jRGEQwoNAqFgm83P6H8k=\nR:vendor.go\nZ:Q1BS9yFwAmSO69QZVFFsw5ENInH0k=\nR:verify.go\nZ:Q1sGfasiH00bMVt7a85yzJ3rX35nY=\nR:why.go\nZ:Q1y8jaNRrpR6gvE/PZHw+uawTDYpk=\nF:usr/lib/go/src/cmd/go/internal/modconv\nR:convert.go\nZ:Q18kGyfULglCDdQdU+C007X5bLKDE=\nR:dep.go\nZ:Q1ypR9Z7FDB1dTRfs4GLhZKWO2EuE=\nR:glide.go\nZ:Q1VME//fU++YFhrmhEDt5ADfN1ekA=\nR:glock.go\nZ:Q1gLEnHzvKR2Vf/EHLCStaFptvYYc=\nR:godeps.go\nZ:Q1r8ELH3AhfHtBTW5Scdqrr5oLP1k=\nR:modconv.go\nZ:Q1tIHM2ENxpldKdHjjBibgAjpb2Nk=\nR:tsv.go\nZ:Q1N9KsAtSIiYJG4Ax2JbFzNK5H24c=\nR:vconf.go\nZ:Q1FzEab9vUzpPKnZcZHyYJt2UX8Yc=\nR:vjson.go\nZ:Q1fgnk0YwPeC3/DCL/GmKW18ZQDK0=\nR:vmanifest.go\nZ:Q1HqdzihMr+6jmXhPyMG8ZhG9H5MQ=\nR:vyml.go\nZ:Q17+eqc5E+PLbRHH1kxf30gtbjLxQ=\nF:usr/lib/go/src/cmd/go/internal/modfetch\nR:bootstrap.go\nZ:Q1hDvPIxWtQMk5Ystadbkorza017Q=\nR:cache.go\nZ:Q1SDZw8K6mcHbWKiVg97umL6FD/A4=\nR:coderepo.go\nZ:Q1xy+COLbsX+eqikkoc2fpYpL7K7A=\nR:fetch.go\nZ:Q1we8u32XbAnNqJDJNgR6FUSLSI/Y=\nR:key.go\nZ:Q1SL2vVEkTsBBpsZUvEkCLMAwQBLg=\nR:proxy.go\nZ:Q13GnDStLPHn1l764ezFkavqtxrYw=\nR:repo.go\nZ:Q1S8dJFTdqhS80bHrctS8alfbitAg=\nR:sumdb.go\nZ:Q1UoKkvxeyTAsRMVmgjzPJv4PDeh8=\nF:usr/lib/go/src/cmd/go/internal/modfetch/codehost\nR:codehost.go\nZ:Q1bPoluXOgnqeBH08TgsWt/IwBg4o=\nR:git.go\nZ:Q11JGo96x6GOb/G+ywESiBXmGso/Y=\nR:shell.go\nZ:Q1dDnyAiy/ojSjrUNjW7W3c5ODeoc=\nR:svn.go\nZ:Q1wEVAga4zCjuyiLajEnadViGB/I0=\nR:vcs.go\nZ:Q1QVbX9sYhY1/MbtqIrqB07hNqiD4=\nF:usr/lib/go/src/cmd/go/internal/modfetch/zip_sum_test\nF:usr/lib/go/src/cmd/go/internal/modget\nR:get.go\nZ:Q1bh6kL+KVHak8NRNnPMaoor4uc70=\nR:query.go\nZ:Q14D9k4Ax/oyI2waKrCCsvYapCExk=\nF:usr/lib/go/src/cmd/go/internal/modindex\nR:build.go\nZ:Q1w95PPIDfCQiT4ZbLjq25SHv8sDU=\nR:build_read.go\nZ:Q1WB8jZWDAhkTDft+CIAFJth25kwA=\nR:index_format.txt\nZ:Q1PqHoFes/Xhyc3Rm2eZxS6WWVfJw=\nR:read.go\nZ:Q13AX6zUMaeNbBKyqsvyPfdMTC5TY=\nR:scan.go\nZ:Q1KWfMoeYFKB98SgXl1Xqjze/pqEU=\nR:syslist.go\nZ:Q1sa24J4i02IRrqH/pwBhOdbZEpO8=\nR:write.go\nZ:Q1LZEo8x0FH+RymieAShQ5trJqpFw=\nF:usr/lib/go/src/cmd/go/internal/modinfo\nR:info.go\nZ:Q1EF9K3a6MPzrQKRtecoFJ9bQQCWI=\nF:usr/lib/go/src/cmd/go/internal/modload\nR:build.go\nZ:Q107n06WyfxYrYSG1oz+nG4LWgxa8=\nR:buildlist.go\nZ:Q1fftBAGXAvpFGGLsZDU2BIG8n2NY=\nR:edit.go\nZ:Q1EUtNJUQIB8cBxY8+EvDzEU5NLOU=\nR:help.go\nZ:Q18BeDaXq0fJ+8MWPP8FN8Qq8bACg=\nR:import.go\nZ:Q1JhJyDEsLBiypjKWlq+K3xjVxzZE=\nR:init.go\nZ:Q11PVVNvEMBt13w1bHPZqkRQx41Hc=\nR:list.go\nZ:Q1oPWj7wh/UG6dHWiK7k1MC/01OAQ=\nR:load.go\nZ:Q1qSS6yiW46igt/TawjG8nQorcpQw=\nR:modfile.go\nZ:Q11IZ1FcvRBDpqI9zKBRJ7PKv0how=\nR:mvs.go\nZ:Q1+dm8MUmLxllyWnR8yKKB4+aI52E=\nR:query.go\nZ:Q1NJ5o+guqvkHLRVUIQNHCBr4dAXM=\nR:search.go\nZ:Q1lrerMwHAGQtHBDm82m0HnFtjl30=\nR:stat_openfile.go\nZ:Q1esWelfFk3dM/T1itWnXuLPpKCNQ=\nR:stat_unix.go\nZ:Q1u9uMuXEFaqbxaMDeKMtAMOQwqk4=\nR:stat_windows.go\nZ:Q1i+iPc5GKg2yf4JzV+hIdSpV1Qqo=\nR:vendor.go\nZ:Q1IzPJfuDonSa/iv/KSMZZDT753ow=\nF:usr/lib/go/src/cmd/go/internal/mvs\nR:errors.go\nZ:Q1/RVy/2OtIJJ6pKe6dYU3IGrV7Xk=\nR:graph.go\nZ:Q1ocjih342tBQ64SgvKNFupnY3gLY=\nR:mvs.go\nZ:Q1VcwZuUHuNlt9oGPUeLhJSvhYo4w=\nF:usr/lib/go/src/cmd/go/internal/par\nR:queue.go\nZ:Q1fo9+7aXBUFBxQRTkLs0nYQjQ59M=\nR:work.go\nZ:Q1m3LAVj0QcV8t9wt/oqidJHhdZPk=\nF:usr/lib/go/src/cmd/go/internal/robustio\nR:robustio.go\nZ:Q15mLTnEo0nNLwYbU2iY79vSwQ6qA=\nR:robustio_darwin.go\nZ:Q1D8JslZWcfR5Tr/pWabqxPszGRzw=\nR:robustio_flaky.go\nZ:Q1iKRNRU08+l0jc0s+u9AaUlXLRYg=\nR:robustio_other.go\nZ:Q1Xb98S0I7c/koWq48tAQ1dt/x9uc=\nR:robustio_windows.go\nZ:Q1cprZgc+epp9DNjmV1Qw6J1TiFP8=\nF:usr/lib/go/src/cmd/go/internal/run\nR:run.go\nZ:Q1eTzt2K4i6ZspZNw2rMUoMtWY2r4=\nF:usr/lib/go/src/cmd/go/internal/search\nR:search.go\nZ:Q1+UxQYopr0HlAZuCzHA2KgcSuGTg=\nF:usr/lib/go/src/cmd/go/internal/str\nR:path.go\nZ:Q1jv/cgL3xYThG9tZ4F808UoE7vyI=\nR:str.go\nZ:Q1mrHmNp8023pHRKpq0GOTSVM5+5E=\nF:usr/lib/go/src/cmd/go/internal/test\nR:cover.go\nZ:Q1WezBRwrGBB5W19vGiaAtRcnqbZk=\nR:flagdefs.go\nZ:Q1SrNkln4+AMAHMFd8EIqkDH9GJU0=\nR:genflags.go\nZ:Q1uQgggjgbA0qOspdGf0AuHt0MjNM=\nR:test.go\nZ:Q1un36ry0AUzjjM765/HZeRYDTFPo=\nR:testflag.go\nZ:Q1DjbhT3DTzb62JfA70/h6rXquLzQ=\nF:usr/lib/go/src/cmd/go/internal/test/internal\nF:usr/lib/go/src/cmd/go/internal/test/internal/genflags\nR:vetflag.go\nZ:Q12sOpFd92eHlMzvj8U36b9WXzvbA=\nF:usr/lib/go/src/cmd/go/internal/tool\nR:tool.go\nZ:Q1mPIEfRMCP4Czn2KspORHVuJoNSo=\nF:usr/lib/go/src/cmd/go/internal/trace\nR:trace.go\nZ:Q11KOeY8lZMlDAmDwFiNjxbUj0IQo=\nF:usr/lib/go/src/cmd/go/internal/vcs\nR:discovery.go\nZ:Q1Da4HCNGFbZLlPeWrk2AvvsPsFa4=\nR:vcs.go\nZ:Q17wbtFPydr2bEjq3o5YhFFfts6AM=\nF:usr/lib/go/src/cmd/go/internal/version\nR:version.go\nZ:Q1ppjYOcnZ3Gv8CRVZvzqiAWjMG6o=\nF:usr/lib/go/src/cmd/go/internal/vet\nR:vet.go\nZ:Q1ztPfI9sEJypai9z2L/D7BQWwK+4=\nR:vetflag.go\nZ:Q1yyiJWbSdf2lzacOZ+u2EBou7w9M=\nF:usr/lib/go/src/cmd/go/internal/web\nR:api.go\nZ:Q11kDnaxgtTwYPRinuhkRAC0501tc=\nR:bootstrap.go\nZ:Q1ml0/2QzFoNN0/P2rWusD48TA3G8=\nR:http.go\nZ:Q1TW1MfKETcpnujER82YTEbNh8Dt0=\nR:url.go\nZ:Q1Lu/ipnkkjD0jVlW2Pl2adF0d+RI=\nR:url_other.go\nZ:Q15iyCh3YRkVgXw2GTPnP4CAnIgz4=\nR:url_windows.go\nZ:Q1dU9demEnr0bR2nPsHJV6LGNw78E=\nF:usr/lib/go/src/cmd/go/internal/work\nR:action.go\nZ:Q1o9xMZcmIlzVpop1SDM5x1xU9PCs=\nR:build.go\nZ:Q1QeOcJ2I5bNVuIswmR7GdFVvtWfU=\nR:buildid.go\nZ:Q1eEm/Cjh84DBBR4A7+NdRLE8AioU=\nR:exec.go\nZ:Q1lvD9IJBd9LTHfkb7idi9T1T9wl0=\nR:gc.go\nZ:Q10x+NPpXMEJGCfHtT39+OHBxB08U=\nR:gccgo.go\nZ:Q18KspJn183OSLyMGnFuUaWxhGylo=\nR:init.go\nZ:Q1FbOA8TplPHT1QrgLhj4YIIyyX3g=\nR:security.go\nZ:Q1lHxTZtGYpYJQ+S55mwW64MNUg4c=\nF:usr/lib/go/src/cmd/go/internal/workcmd\nR:edit.go\nZ:Q1+p1cDdqmInYQYqN2nidj9eLiE7s=\nR:init.go\nZ:Q1FzXc+uP+F8DF6WUlHzoTr6ChXu8=\nR:sync.go\nZ:Q1z9D9wYC2esogy+tuwH9BGUMo6G4=\nR:use.go\nZ:Q1mokfYXdEjtL81J6YUQ1tToKSpd4=\nR:work.go\nZ:Q1H5Lw9GdmyXfd5TsGdEDtX1T03h4=\nF:usr/lib/go/src/cmd/gofmt\nR:doc.go\nZ:Q1k75gpWMeYkI4OnIZ8j/bhuUc78c=\nR:gofmt.go\nZ:Q13Bw2E0nbjcFnuYQW5X3qvcJ8aRM=\nR:internal.go\nZ:Q1A4ghAyQnW8WvAoV3Yrmr733RjL0=\nR:rewrite.go\nZ:Q12meIHHm/ZUOGqBgu0eVROaPGUKo=\nR:simplify.go\nZ:Q1LqtV+BxHnx8FiSSBjI1se+jucl4=\nF:usr/lib/go/src/cmd/internal\nF:usr/lib/go/src/cmd/internal/archive\nR:archive.go\nZ:Q1Q2krJbnsjNYOzp9DwUS5EKovE0k=\nF:usr/lib/go/src/cmd/internal/bio\nR:buf.go\nZ:Q19Jizx4NcJO0terY0PB+M81BS3nc=\nR:buf_mmap.go\nZ:Q1XBZ+HJhpiBBusiLbOdtV/7tn+Qg=\nR:buf_nommap.go\nZ:Q1TV9mGA0bDB0maCsIGh017wDJp6M=\nR:must.go\nZ:Q1DK0A7EyktXxl4EZLEj18ApSO+K4=\nF:usr/lib/go/src/cmd/internal/browser\nR:browser.go\nZ:Q1Pdv7SnSRxZRkQ4jhB+IJzHJH+2Y=\nF:usr/lib/go/src/cmd/internal/buildid\nR:buildid.go\nZ:Q1YiObIAwnGJcm+P1uNzjvoaJrdCk=\nR:note.go\nZ:Q1mLQuBlAOhPirMiZuLJOeYG/dm8E=\nR:rewrite.go\nZ:Q1mOgcczGoX9m4YUsyThzpDCdv1KM=\nF:usr/lib/go/src/cmd/internal/codesign\nR:codesign.go\nZ:Q1e7UAzo6f2ZgNhEMmenCI12onVLY=\nF:usr/lib/go/src/cmd/internal/dwarf\nR:dwarf.go\nZ:Q1Q3U9YAIzOGYjRczmPTV4ku33my0=\nR:dwarf_defs.go\nZ:Q1hgrasgB0zUH2eyTiY5svVHmFM7U=\nF:usr/lib/go/src/cmd/internal/edit\nR:edit.go\nZ:Q13ISxt6g9/+xPqr0HxhoYprcrO6Y=\nF:usr/lib/go/src/cmd/internal/gcprog\nR:gcprog.go\nZ:Q1p7cOcuqp09dHl5pmlpF89NFYUCA=\nF:usr/lib/go/src/cmd/internal/goobj\nR:builtin.go\nZ:Q1V6uls9SVdG4XyGuS7PpoKSQ6Iqo=\nR:builtinlist.go\nZ:Q14Om84/yLOvzHiSzDe5RetKhM9G0=\nR:funcinfo.go\nZ:Q1SVpw+8NCqblBb+xCD+KJywPlrOo=\nR:mkbuiltin.go\nZ:Q1Cdb0XIicODJEoD8UihwghO07cY4=\nR:objfile.go\nZ:Q1CdhrZ+vOaUdbcC5qyEzof4LfM2U=\nF:usr/lib/go/src/cmd/internal/metadata\nR:main.go\nZ:Q16HFOtosiQncBOMp1njsxk6eVUGE=\nF:usr/lib/go/src/cmd/internal/moddeps\nF:usr/lib/go/src/cmd/internal/notsha256\nR:sha256.go\nZ:Q1iZ/KmplP4tNnJiqWI18GsXPfU5A=\nR:sha256block.go\nZ:Q1v3O5D3XIoMHXQ19SOcNlFSmtI1A=\nR:sha256block_386.s\nZ:Q1Iq+/tZlJbKI8GmxW8EhSQ/k3XjI=\nR:sha256block_amd64.go\nZ:Q1TXi38EEXH6kF+Wz+lm21zIXCDd0=\nR:sha256block_amd64.s\nZ:Q1AlBMfoQJgKtJTiKbBb+otMIe37g=\nR:sha256block_decl.go\nZ:Q1gThssI47JNgQjANxO/7sHFcwXwQ=\nR:sha256block_generic.go\nZ:Q1svhvn6nee8LIcbEexSEav6U+02s=\nR:sha256block_ppc64x.s\nZ:Q1iTK7kFVkC1o5cp0WpG4LAqo5nXk=\nF:usr/lib/go/src/cmd/internal/obj\nR:abi_string.go\nZ:Q1zqVgXQWNoW9iESE3UffOnMeah+w=\nR:addrtype_string.go\nZ:Q1pWZdX0t1KoykuIJs8ztisb61vyQ=\nR:data.go\nZ:Q1J7mccj0EgecThWDn9u/ZA6T1Wss=\nR:dwarf.go\nZ:Q1wMdnmytnaY+VuC78Z+Wy6r4I7h8=\nR:go.go\nZ:Q1xstn4Ql0aX8oWACtmFWjumU1EFE=\nR:inl.go\nZ:Q1HErpFqNtxir8t02ZXKx4m9b3DTc=\nR:ld.go\nZ:Q1YGqfoA/H3sIVGMfvW64p24u22g4=\nR:line.go\nZ:Q1Gj0zwRa2LOIm4cBwu+lil3sJVfE=\nR:link.go\nZ:Q13I7wduiMud9hFarpALAb8oI3v0I=\nR:objfile.go\nZ:Q1sl7hZll5knq1b4vUM64OikBlOLo=\nR:pass.go\nZ:Q1o/icnHH6aYl9marD/agb3PFHr50=\nR:pcln.go\nZ:Q1HlHUnKabUqAMpxQ0mIbNq3MGA/M=\nR:plist.go\nZ:Q1fF1ulxh0Hc8cCPWQFp0njbeDyjA=\nR:stringer.go\nZ:Q12zd59ZxMB6srm8mHq+hZi2v4SoU=\nR:sym.go\nZ:Q12YjbAAYkEMNeXtdnTOQcVcLRnPQ=\nR:textflag.go\nZ:Q1DJy7DBl+MykE/glzmmqzDDVEfY8=\nR:util.go\nZ:Q1EtKZ3NCuIMeTaAz1Vn/hWnPOvPw=\nF:usr/lib/go/src/cmd/internal/obj/arm\nR:a.out.go\nZ:Q1PfnlZduTJpkIyaJGj0fRLaNcVhc=\nR:anames.go\nZ:Q1sEM06K8DAfaTGBX2ULdJKlqUrJM=\nR:anames5.go\nZ:Q1u90/ARiFjExw20lEdopuT6BRJqE=\nR:asm5.go\nZ:Q1eT3tTUO9v6DOk1xxuencGCqgk8A=\nR:list5.go\nZ:Q14cN51UYpywdglRYOQA82fba4qZ4=\nR:obj5.go\nZ:Q1CsmrNiWnIS4qv094NwIKaKEh+9E=\nF:usr/lib/go/src/cmd/internal/obj/arm64\nR:a.out.go\nZ:Q1tH9+iBAjir3KlS83fpxBwR5MBUI=\nR:anames.go\nZ:Q12yJ+wYLjVhI8Pxb55OzZ2UywHbI=\nR:anames7.go\nZ:Q1Kws9hU/JrQ/kBVH5MoASAHwu78c=\nR:asm7.go\nZ:Q1OMqUYCawtHWnVln481TyU6RqCPA=\nR:asm_arm64_test.s\nZ:Q1QWrMpdboN3iwpFhGknXJirekfmI=\nR:doc.go\nZ:Q1mhFfRvHIP6mRq8lKIsiK9207fpY=\nR:list7.go\nZ:Q1yNV70Pr+6PuKPrqyi+9RktZClJM=\nR:obj7.go\nZ:Q1/zqo536LEf5HWb8bsoTZZE44JjM=\nR:specialoperand_string.go\nZ:Q1lbFYJxo/zT2mhLJl40pWxT9AXEY=\nR:sysRegEnc.go\nZ:Q1TMQ0fmj7LolH5K2465qodqGITVE=\nF:usr/lib/go/src/cmd/internal/obj/loong64\nR:a.out.go\nZ:Q1ETJlFj+Tef18TI7n4W+DCEqfsug=\nR:anames.go\nZ:Q1fTy7Lz/22Ve6Eml35pFxfqI0RN0=\nR:asm.go\nZ:Q13fKwkJvh1lpvMpyRlZzSfKO1ysM=\nR:cnames.go\nZ:Q1zCdwMwQtuJ762l4GvPQcPStN4GU=\nR:list.go\nZ:Q1ksjDpMXg8nzMZ8Rqpx4Yv45pECE=\nR:obj.go\nZ:Q1SGxdV12qROFn9nEOWS/stlTIwhM=\nF:usr/lib/go/src/cmd/internal/obj/mips\nR:a.out.go\nZ:Q1dFhTNhfRlNXZsvQJmC/NsMvtIGM=\nR:anames.go\nZ:Q1E6malrH6dT4qyfVnpMS9Olc+Udo=\nR:anames0.go\nZ:Q1MtI8lxv9NKMRkW3QgoY/GYh5a6Y=\nR:asm0.go\nZ:Q1nF545jOeBiZB1Y271sOKycpxCY4=\nR:list0.go\nZ:Q10gNNUADAlIDU6nDB2vH7BEXCgzo=\nR:obj0.go\nZ:Q1N2nxCsVVLcm+DC54rEbDJdJWCNI=\nF:usr/lib/go/src/cmd/internal/obj/ppc64\nR:a.out.go\nZ:Q1fjWyb1fdXOK0VtVkEeD/2ulmFd4=\nR:anames.go\nZ:Q1XgfCxUPMyizWeFUJg39qBIvLyfY=\nR:anames9.go\nZ:Q1rbcxX7S0vp1bupjjYinbX6br8wE=\nR:asm9.go\nZ:Q1xQCC1oK7qK0q8NbAovQ9J+soaiM=\nR:doc.go\nZ:Q14BXHxdha3cSMgTbjaHGTapsXjBE=\nR:list9.go\nZ:Q1pdO/Ow5ZuAhoOsYGdx58CodlcVM=\nR:obj9.go\nZ:Q1e6ndaJYVvHJzM0yAn5K7E+qrVao=\nF:usr/lib/go/src/cmd/internal/obj/riscv\nR:anames.go\nZ:Q1UwXNHHamjiLSlqyzwJ4MJSaDvQQ=\nR:cpu.go\nZ:Q1WU9ssB9WtwhaHvRubrMkdi3tyaw=\nR:inst.go\nZ:Q1wkXwmYC3lfMt90nr2VCLF2atmnY=\nR:list.go\nZ:Q1TVCkwt3hQlqwZe3K6dkrwECe5mI=\nR:obj.go\nZ:Q1yQSz1Jw3b8sl1IXxYZSqm9LmZ2g=\nF:usr/lib/go/src/cmd/internal/obj/s390x\nR:a.out.go\nZ:Q1Ib00m8VQqY+b8VSRv9NsGUnsiqk=\nR:anames.go\nZ:Q1c1mjSCy1Qq2E7btUjTcECTeeo1s=\nR:anamesz.go\nZ:Q1MO4g0/mLwz1QR6nndYCbckpAZwE=\nR:asmz.go\nZ:Q1Ryic4K8CH81UAhnfHWfPpfvTiuk=\nR:condition_code.go\nZ:Q1laQIKs8NX+D4Ez92u3FEHAx47SQ=\nR:listz.go\nZ:Q1ux3JYW8Vn7mo2b89iBW91i4AIqU=\nR:objz.go\nZ:Q1QdVq8wK0lQm2Nmg2m0mXtufrdKc=\nR:rotate.go\nZ:Q1IVojcQV5hsN0PUc/+it0U8O7FzQ=\nR:vector.go\nZ:Q1r6cB9vUbNTsbs1FxZ5m+oeUg09c=\nF:usr/lib/go/src/cmd/internal/obj/wasm\nR:a.out.go\nZ:Q13Lz1pDY67cxI49YEVZn0+sRLETQ=\nR:anames.go\nZ:Q14n2WC47UAMgYgqT/Fv8Wu7kslrw=\nR:wasmobj.go\nZ:Q1+xIclA/yov/44EdN3ydEMVdP3zE=\nF:usr/lib/go/src/cmd/internal/obj/x86\nR:a.out.go\nZ:Q1cZsLKu32XCvztAsBEEol5ZBxNBE=\nR:aenum.go\nZ:Q1fxG3QGAMNvn9n7ROj7pZzDKHomo=\nR:anames.go\nZ:Q1rr8kr/01iFDTF1nmTLFKRHz9jAo=\nR:asm6.go\nZ:Q1L1a2h18keh11cduzv7ADrQtfJjk=\nR:avx_optabs.go\nZ:Q1Ud2HIAO0asNmb6vaQLjZCcTK2JY=\nR:evex.go\nZ:Q1TUWbvkWL+qshqthAlRyCJQgGut0=\nR:list6.go\nZ:Q1EVREjWBlpkQHlSWaKge/lNpK3Gc=\nR:obj6.go\nZ:Q1uaJfriAL5qyLzRI1rAzFxkjtJmA=\nR:ytab.go\nZ:Q1TbglStxqHIv+hRDMmgF6sFW2VfQ=\nF:usr/lib/go/src/cmd/internal/objabi\nR:autotype.go\nZ:Q1E+5j7TR8924K4kLas1SVRcIlQdM=\nR:flag.go\nZ:Q1+vlNxavHqB1a1ini+csNXzlQJRg=\nR:funcdata.go\nZ:Q1itixQakihRmvf3RnTWmZggGjszw=\nR:funcid.go\nZ:Q1fcF/ivQDjgqH8e3RnZLW7XMIMsg=\nR:head.go\nZ:Q1sdESMHxlWSAwSWHTJv+TqyoFRVg=\nR:line.go\nZ:Q1rWIPhssrzXoqQisHO6k4ynTxbLA=\nR:path.go\nZ:Q1MRctAzEPM8DGCXtAIhpxwKYLJGA=\nR:reloctype.go\nZ:Q1Z4uXZJLjPJsA9r0U2wzKKed82e4=\nR:reloctype_string.go\nZ:Q1iitQ9bI+2giP3hczxoKSOQ4ZkQE=\nR:stack.go\nZ:Q1TCCBM+cqkhWB4iIG7ZxTnnVw2AE=\nR:symkind.go\nZ:Q1hPwELNusb9BfHwQIA2DXqdt4+jM=\nR:symkind_string.go\nZ:Q19yMhd7KLwUkuJEcbKadEAefThAg=\nR:typekind.go\nZ:Q16w4ahzigU926dfajDoTPyjEUNiM=\nR:util.go\nZ:Q1/hHzB3sqmcVu5hzMKDzAReE0wiA=\nR:zbootstrap.go\nZ:Q18WPbsavTB1QBwYbK5eTnGZX7OYo=\nF:usr/lib/go/src/cmd/internal/objfile\nR:disasm.go\nZ:Q1xtUcdtZ+zogM1Jx40uMDK7ZrG30=\nR:elf.go\nZ:Q13CDjb62vUnPG+8Cu7pBxfU2e8vQ=\nR:goobj.go\nZ:Q1ClNIQJLLGArhlRWYJJPHofuP/1I=\nR:macho.go\nZ:Q1wd26NKTw1HZo4O7UMLKoJVsDdxo=\nR:objfile.go\nZ:Q1tMpDudlsXDgp7SdsAlscn1mnpL0=\nR:pe.go\nZ:Q1nRlq5fAFe9iLv+j7St7w9Mj1RAg=\nR:plan9obj.go\nZ:Q1G0fDo2cXP57YN+nh79LDzMhl/zk=\nR:xcoff.go\nZ:Q1Paqzv4Z+CjTD9OlrCLVFnboDJpY=\nF:usr/lib/go/src/cmd/internal/osinfo\nR:doc.go\nZ:Q1zGR1B+oWf5JoQIP6F6885WfmhHg=\nR:os_js.go\nZ:Q120/n00hKpdA1biyiT3WFV0xL028=\nR:os_plan9.go\nZ:Q1TL0gs90SCQKlQJdZY6r85tPi9ew=\nR:os_unix.go\nZ:Q1C/DYidp6wumYTvBLUj9WC9mUZj0=\nR:os_windows.go\nZ:Q1Ej49m2hOxYdH/3njfsQAhkeZFJM=\nF:usr/lib/go/src/cmd/internal/pkgpath\nR:pkgpath.go\nZ:Q1vBcNgtOcm3hehqh03qhOv6G/jw0=\nF:usr/lib/go/src/cmd/internal/quoted\nR:quoted.go\nZ:Q1kQGo04YZxMdFldZ2C/HtcRQodMA=\nF:usr/lib/go/src/cmd/internal/src\nR:pos.go\nZ:Q1nK52/vnswT6+IzCKn8I6yFEQcHw=\nR:xpos.go\nZ:Q16e4Jjtj1+3rPDzk1DQAARj3OcSs=\nF:usr/lib/go/src/cmd/internal/sys\nR:arch.go\nZ:Q17e4u4x/dZ1v45bNPRWCJEVvEv6c=\nR:args.go\nZ:Q1EIR2/kU8BM9buN0PBGhH/DDvl54=\nR:supported.go\nZ:Q1m7MvfS3eWlCs8wNQ1QMm15HmlBI=\nF:usr/lib/go/src/cmd/internal/test2json\nR:test2json.go\nZ:Q15MsvwKhAjtPfrpmhIodN/Eji/bo=\nF:usr/lib/go/src/cmd/internal/traceviewer\nR:format.go\nZ:Q1F1F83BQ0VGMX/IKuDhf4HdEenJs=\nF:usr/lib/go/src/cmd/link\nR:doc.go\nZ:Q1Vbm1a64/6JPTl3PZqY/sNMMpdQc=\nR:main.go\nZ:Q1sviOV+Pd0Le92vLv74oomf9Kah8=\nF:usr/lib/go/src/cmd/link/internal\nF:usr/lib/go/src/cmd/link/internal/amd64\nR:asm.go\nZ:Q14wpqdGiQyMyIvWfSzRBnapKNSR0=\nR:l.go\nZ:Q1DMsNB2cdD3iEJz8MKTdFQtrxgss=\nR:obj.go\nZ:Q1gWBL9ev+81ka/LvslCQK11ZAX7c=\nF:usr/lib/go/src/cmd/link/internal/arm\nR:asm.go\nZ:Q1JQHCS5Cl0QI9b7TWCtEJnah9LA0=\nR:l.go\nZ:Q105erNNCWIv0XD0NLqHUm7rxhAYc=\nR:obj.go\nZ:Q1LE6UnTw7Lu+mfJ4fsfh51uGwYBo=\nF:usr/lib/go/src/cmd/link/internal/arm64\nR:asm.go\nZ:Q1fcmUwIgNTt4b94pwo9kAvVZdYqU=\nR:l.go\nZ:Q14+lVF7re5dgGyBV79dcBz+LrvKA=\nR:obj.go\nZ:Q1hXQ9bRnMTMFrsr0KCBoqWsyzUGQ=\nF:usr/lib/go/src/cmd/link/internal/benchmark\nR:bench.go\nZ:Q1keS6pDNZOeebRSyFqImwxJh59QQ=\nF:usr/lib/go/src/cmd/link/internal/dwtest\nR:dwtest.go\nZ:Q1dH3/3jU5mNPshG6/C8KHJdiR6iU=\nF:usr/lib/go/src/cmd/link/internal/ld\nR:ar.go\nZ:Q1bnIEo5RtgThfzHLgu9LXGfV8C2I=\nR:asmb.go\nZ:Q1lppI5jAn//L2QabaxlzwDqPzNsQ=\nR:config.go\nZ:Q1/jYYVm12Gl/blIT6/QAludlNzcg=\nR:data.go\nZ:Q1TlYLW/xUZH5K4Wut3FEz+7bhZcg=\nR:deadcode.go\nZ:Q1LAm+aFsVfiaKfeqRmOoCUp5A+38=\nR:decodesym.go\nZ:Q1YdEIQDu94nGxyFx3F11V4ejWrVc=\nR:dwarf.go\nZ:Q1+J8H0mC/OK/FeAE2472Qgg8x120=\nR:elf.go\nZ:Q1U0Gimx2u0yZqTzK72hHR/38gnOA=\nR:errors.go\nZ:Q1ghmQZFFjOP7adWtiiXChDz+waBU=\nR:execarchive.go\nZ:Q1hSh5ZhYDzBDpQlwT2nBeNt6i0ls=\nR:execarchive_noexec.go\nZ:Q1BsmOT+0XBRDVe0h2cPS5gkzJn1Y=\nR:go.go\nZ:Q1hIdZTHkGuHek5Xk8ZFZqnGqudaE=\nR:heap.go\nZ:Q1XozNWxYwnKnmvViLg17DNybF/sc=\nR:ld.go\nZ:Q1HRSmPy4/Rdx39AQUpRhAbvJTmKk=\nR:lib.go\nZ:Q1YbEovq1hAzcxxGTISu0yHR5O4+c=\nR:link.go\nZ:Q1ZCBMrY51d8wXINvyDjU4q+aCWig=\nR:macho.go\nZ:Q1exWh+wJ91cM+STmx1O7wWh53wj8=\nR:macho_combine_dwarf.go\nZ:Q1nOOqr9dl9UI5JDk84fKce//NwHs=\nR:main.go\nZ:Q1T0LIgyeD1L34q8aQFyzcyEqy0C4=\nR:outbuf.go\nZ:Q1cEzDIw6qNqEfEVOvWHEBaHXY3uo=\nR:outbuf_darwin.go\nZ:Q1tFqxHCnzoUXquo9SYk9CLvzb72o=\nR:outbuf_linux.go\nZ:Q1KVW5Omt2SzdJXGUD3T5nHXYIes8=\nR:outbuf_mmap.go\nZ:Q1rgSDnJcplomUznxnnrZR2hIbupM=\nR:outbuf_nofallocate.go\nZ:Q12ltEb2muJ6p2u8O606Df6eOc+XU=\nR:outbuf_nommap.go\nZ:Q1q8C/4lw4QrLH3kvlkHYZeCAxpd0=\nR:outbuf_notdarwin.go\nZ:Q1NmdiQ1Bnfv+/ZzNPPSadE/HjYzI=\nR:outbuf_windows.go\nZ:Q1zNGKBIdOZaUrXuNH/DqBf7Fq7Ms=\nR:pcln.go\nZ:Q1zUL6EQKV3Ggun7uy+e6xqM4LZvQ=\nR:pe.go\nZ:Q10QYmPU4+M7s/6mE1EsI6p0qf/TI=\nR:stackcheck.go\nZ:Q1l5flqTtUBI203aLRleVPrwjTgOU=\nR:sym.go\nZ:Q1DAz6uwit2JA9jl62B3dFn0saR5Q=\nR:symtab.go\nZ:Q1DZMybxaXzosjUtCEqA36vGyH5XU=\nR:target.go\nZ:Q1gJd6/trF1Qni8hcY4dBaFl6DxMo=\nR:typelink.go\nZ:Q1zO3G3RZtHuq4oBqF5z3xZigjLcQ=\nR:util.go\nZ:Q1W27uVDFsA03xlFlz4kleKQYfVlw=\nR:xcoff.go\nZ:Q1HBrHDHqRz9fgRpx9we5Q2SMMYtc=\nF:usr/lib/go/src/cmd/link/internal/loadelf\nR:ldelf.go\nZ:Q1PBl7GnJG8BYVUc5+zJubha4J6II=\nF:usr/lib/go/src/cmd/link/internal/loader\nR:loader.go\nZ:Q1NFSQNvk667n8Ri2FpW0wSwhrSQ4=\nR:symbolbuilder.go\nZ:Q1jv9Hj2MOVvVRfYUfsWBrFNQYPMo=\nF:usr/lib/go/src/cmd/link/internal/loadmacho\nR:ldmacho.go\nZ:Q13YLycLJNeZ/NPxn5y76faxDZ7eo=\nF:usr/lib/go/src/cmd/link/internal/loadpe\nR:ldpe.go\nZ:Q12xw26/9arXlNfKGQ4+wA3Au8q4A=\nF:usr/lib/go/src/cmd/link/internal/loadxcoff\nR:ldxcoff.go\nZ:Q1MIZ0IF6692PTd6ovKjmLhOnw5No=\nF:usr/lib/go/src/cmd/link/internal/loong64\nR:asm.go\nZ:Q1I2UYgUwAPMYmzL+EFGzIlnpfpno=\nR:l.go\nZ:Q1rM76sFVZkkj3eCngT8D9sHTBraE=\nR:obj.go\nZ:Q1LTXB3gixUjpEGXtSNkJqfQ4S4UQ=\nF:usr/lib/go/src/cmd/link/internal/mips\nR:asm.go\nZ:Q139LqEc2BpemLnOgr7nYkwwnQHZo=\nR:l.go\nZ:Q1h2UYfi3hwWDt+9hKTDg2YM4+ui8=\nR:obj.go\nZ:Q13KLtGRLMzW2OJp1xTF/CRqtw+Vg=\nF:usr/lib/go/src/cmd/link/internal/mips64\nR:asm.go\nZ:Q1MZiOWt/qbL6T8u3YmzowGDQY5r4=\nR:l.go\nZ:Q1UH8s/GSizbFYoqs5UbrKYDX0cgs=\nR:obj.go\nZ:Q1v0OdWFaaugcSXljRL9KJBC+eA6o=\nF:usr/lib/go/src/cmd/link/internal/ppc64\nR:asm.go\nZ:Q1Wjcz2i92TWNOdWeOeZV3SyydBUQ=\nR:l.go\nZ:Q1EhDsjQHN91yGRJPCzzNKj7r19sA=\nR:obj.go\nZ:Q1elFlYDQ/6irlisW5sIwV4DsJauc=\nF:usr/lib/go/src/cmd/link/internal/riscv64\nR:asm.go\nZ:Q1MpxAZS/xeTtZQWVplNmKFDMTGYA=\nR:l.go\nZ:Q1CL47fwM1KW/bhvdzpCPGEOjbCkw=\nR:obj.go\nZ:Q1fy9YRE411sSWW75Ccs2ha3MK7Lc=\nF:usr/lib/go/src/cmd/link/internal/s390x\nR:asm.go\nZ:Q1uuKvRtCnlNqZfm+Isp8TUB9L1kQ=\nR:l.go\nZ:Q1FbC3Oq8S6fYn9UNgyfe8ufwml+k=\nR:obj.go\nZ:Q1qUcSndcrjag+JPjWUBnU16nDJ3w=\nF:usr/lib/go/src/cmd/link/internal/sym\nR:compilation_unit.go\nZ:Q1MOxmWAfByZKhtRPrYEcwzfST22Q=\nR:library.go\nZ:Q1T25UR093jbgmmxvgNZeAjiJWAok=\nR:reloc.go\nZ:Q1cnFcZQ8MSqIMJsnqMCDWqq3hWVk=\nR:segment.go\nZ:Q1zBsTT9qiutzJX5UyKKmP24OjYn4=\nR:symbol.go\nZ:Q1ljc34GUmMTYTqS/irZdzbal7CPw=\nR:symkind.go\nZ:Q16aQEgOCxagB10jeDL1fFS9Fxuzc=\nR:symkind_string.go\nZ:Q1M73mjwy0Lvx2pj7R5H8zg2uoC98=\nF:usr/lib/go/src/cmd/link/internal/wasm\nR:asm.go\nZ:Q1wu5tXPBvDA7YLe3Ok38Vq8zbN4Y=\nR:obj.go\nZ:Q1FamzzU/DEA2KFFKb1KREcWtLrnE=\nF:usr/lib/go/src/cmd/link/internal/x86\nR:asm.go\nZ:Q1xqyjHS4dfg6w/3/H7tnQf8GwXcc=\nR:l.go\nZ:Q1Q5svnVFA6txC40LeP/vBoXaMzOc=\nR:obj.go\nZ:Q1WvxPDQXNytODYEtUsR4IsSj8Pps=\nF:usr/lib/go/src/cmd/nm\nR:doc.go\nZ:Q1u+4wR9N9iqJMgQng9AISDbursi0=\nR:nm.go\nZ:Q1Okfpbtelng05QoEaK6AReq1hVjo=\nF:usr/lib/go/src/cmd/objdump\nR:main.go\nZ:Q1wwAhMTOzy6Dk3OBesgBXaS8jrQg=\nF:usr/lib/go/src/cmd/pack\nR:doc.go\nZ:Q1bfOzcauHlq31r/4aqTvDWk3itUQ=\nR:pack.go\nZ:Q11fqYeiD16KTzIelsaYd8mREWkh8=\nF:usr/lib/go/src/cmd/pprof\nR:README\nZ:Q115EFhAg4QxZ4mQ4/9CcBwSK+CnM=\nR:doc.go\nZ:Q1o3XomLm7i0OQAY4XFaLf6ummFro=\nR:pprof.go\nZ:Q1RFUUUFCx+wDjX8HY9dwvvjQWH/w=\nR:readlineui.go\nZ:Q17Ip9yr36/bFUBDyU30RuUkciMiA=\nF:usr/lib/go/src/cmd/test2json\nR:main.go\nZ:Q1+a4xnpB86KozoLbKmjNxH67xHFE=\nF:usr/lib/go/src/cmd/trace\nR:annotations.go\nZ:Q123VrMpVHfvgqlCIy7zsN5LQs6qU=\nR:doc.go\nZ:Q1SeUAeXxj/P9TavoJerOyHGn9XoE=\nR:goroutines.go\nZ:Q1nKbfJWjMpYPmjjATS29MG/SHsZ4=\nR:main.go\nZ:Q1mKxS/6/LpBUJmqpBAOl016RZR6E=\nR:mmu.go\nZ:Q1wJyo/QBbjWb4qyUv/nUSLmVarH8=\nR:pprof.go\nZ:Q18P2UBy9Y0b3nTdLdxeCzgJHelmM=\nR:trace.go\nZ:Q1TjWfAjq4ulPiBJ5mqQ+301FaxTE=\nF:usr/lib/go/src/cmd/trace/static\nR:README.md\nZ:Q16VQKsdX6YqOldinl8ME8t/CTJPc=\nR:trace_viewer_full.html\nZ:Q1jAs3GZoMcG1aEK6vKCkw70JcCpI=\nR:webcomponents.min.js\nZ:Q1QkBL3WLrt7a7Y9FdjhvM8HDecAs=\nF:usr/lib/go/src/cmd/vendor\nR:modules.txt\nZ:Q1RiPrAzZdZH4KdaWdrt1UPGs1VmY=\nF:usr/lib/go/src/cmd/vendor/github.com\nF:usr/lib/go/src/cmd/vendor/github.com/google\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof\nR:AUTHORS\nZ:Q1W6b0EIaIiOmvUmdrriJCCqlQC2U=\nR:CONTRIBUTORS\nZ:Q1ZAoMumBH0KXFm+4Y7zbby0eGebI=\nR:LICENSE\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/driver\nR:driver.go\nZ:Q1lXBFoK+VFIlnSLynupJP2iCBEPc=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/binutils\nR:addr2liner.go\nZ:Q1LikzCEWdwlFFWG/sCZV9rLGGeM4=\nR:addr2liner_llvm.go\nZ:Q1ZCVfHAd1EMxvffbmXmIJuqiAMtY=\nR:addr2liner_nm.go\nZ:Q1kUwZfWueKWwDOQQeBFoypQQ7B3U=\nR:binutils.go\nZ:Q1wcu3THUhdrrvICchMRTdYnv1iKk=\nR:disasm.go\nZ:Q1xE4jVmVCXgi7UdOkbBvJGP4E4o4=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/driver\nR:cli.go\nZ:Q1NLME2ftyY3hzok1tTBdpEIwS2F8=\nR:commands.go\nZ:Q11lTlfhNz+P7bjVpfgfTPk+KSnig=\nR:config.go\nZ:Q1vTCI5n3MSP0fKoyLo6ZAVXmJTsU=\nR:driver.go\nZ:Q1VDr84T41OlRlYvTls951g/KQ7uo=\nR:driver_focus.go\nZ:Q1IwQgeTmp5Ic6iyKMmrLpS5tCe64=\nR:fetch.go\nZ:Q1F1voqcKShgW7Hh8TkoY3ErwE8yU=\nR:flags.go\nZ:Q1HAK42WB3gB5r/YySsnVEXwYOK/Y=\nR:flamegraph.go\nZ:Q1qMoWnuYXiOEyhRbLEWWJjHgIBlY=\nR:interactive.go\nZ:Q1ZLW9ZCCAEEEsOQQqu755BI8JQ8o=\nR:options.go\nZ:Q1iS7Zdx5mrYbMqCrdbo3vHXZyzC8=\nR:settings.go\nZ:Q1v46Pa8jq9iOcVrDjk3O4VgbXO3E=\nR:svg.go\nZ:Q1ZFvFmcw9w3r90mOSSW3Y9Zqctqk=\nR:tagroot.go\nZ:Q1HogtzwVH2ZkJD5chN4MAZPqH+a4=\nR:tempfile.go\nZ:Q1rpau8g4rt9+taflBkqlrNBthdgo=\nR:webhtml.go\nZ:Q1QBNtF0LeoEQxQosr9wUEdtW1EDc=\nR:webui.go\nZ:Q1sw3mvZv3FnvZ13REUvfslzcYyKU=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/driver/html\nR:common.css\nZ:Q1hu3DHRKF2RuTX9rrKeYswlbbLp8=\nR:common.js\nZ:Q1IGtuFeKvzsa5xIpFTQwFr/UQyqo=\nR:flamegraph.html\nZ:Q1noNZZtsU4KJ5BI0uFaChQr7/glI=\nR:graph.html\nZ:Q1qNAbYp2Gmlcr83MdO+u8Hjik13g=\nR:header.html\nZ:Q1v6MxwiKMO9LLYnmCLfW2WEk8Y/0=\nR:plaintext.html\nZ:Q1IVXeMsCjYH8PhBNsh64bJZG+ogY=\nR:source.html\nZ:Q1YoAdWpfg61hGVgMitIehZ/uLevs=\nR:top.html\nZ:Q19ffoQjTY+RiJhv9nOSaRn9d6ZeI=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/elfexec\nR:elfexec.go\nZ:Q1P/VK5Mrdm5ylHlze7zKGvOIJ8no=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/graph\nR:dotgraph.go\nZ:Q1RUZmt5UEmcPJIXUxz0XdTMMhCM8=\nR:graph.go\nZ:Q1aFSkg4xxiQavs6Vn6x45oNAnx84=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/measurement\nR:measurement.go\nZ:Q1rWitfhnba55m4MVK3SfY6qd0Z94=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/plugin\nR:plugin.go\nZ:Q1W0+az03eYDUnk5PS9BrCvkK2ANQ=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/report\nR:report.go\nZ:Q13AvVCNUScIKPfarajaOQ8EPQnqI=\nR:source.go\nZ:Q1BNvNBp+nYpzsI/z/oULLl0zy0yE=\nR:source_html.go\nZ:Q19bjvFplOjp7L4DsUwN/SYNPZLsM=\nR:synth.go\nZ:Q18vDJy49CwKXUIIOgBBTPS9G5QOI=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/symbolizer\nR:symbolizer.go\nZ:Q1TC+Az2JoaHWg0+Jz7PTZH2ibtnc=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/symbolz\nR:symbolz.go\nZ:Q17CJFf5/ELfE0Dxl5S/KCCyWJZgw=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/internal/transport\nR:transport.go\nZ:Q1aABYRUPNNUAA/AJg0Xc0xfGCL7w=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/profile\nR:encode.go\nZ:Q1/xRM1UG2/VsoTLHkODWKR/Hb1VM=\nR:filter.go\nZ:Q12XSrVFt29hv16xo8NXxncjNqhDQ=\nR:index.go\nZ:Q1Oc0ZdQS/d5RwErQGjViwG/eHLhM=\nR:legacy_java_profile.go\nZ:Q1foHR0q+DxEq7GXf5X/X68I8q1BY=\nR:legacy_profile.go\nZ:Q13/mug3M6fNsPIYb1D9dCmYeqQBY=\nR:merge.go\nZ:Q1cQCUAXql1XinqyqIjre6YWUHh+0=\nR:profile.go\nZ:Q1kWa14iAhhNWSL9NtzbL7xoGf6ig=\nR:proto.go\nZ:Q1JXK52UYFP+Y3JUYIZqBMgodkYPI=\nR:prune.go\nZ:Q1yo2D0xPq7bNyNSBwyG0AckAgi14=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/third_party\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/third_party/d3flamegraph\nR:D3_FLAME_GRAPH_LICENSE\nZ:Q1khcM3ANLL/gZMj/2cNO3JmyL/80=\nR:D3_LICENSE\nZ:Q1k5Rs+RLjb80kb/6JSXmZQpi9F6Q=\nR:README.md\nZ:Q1I0ZFxkOA3p9m8n1qCBNhXsD2QVM=\nR:d3_flame_graph.go\nZ:Q1m0ij0nob2uK+BYXXVuiGNxYweeA=\nR:index.js\nZ:Q1zwSmMS8JXhcFDHKdW3jkCBIwiGc=\nR:package-lock.json\nZ:Q1c6bWM5UhEgnphsvKjuggAkdJNPo=\nR:package.json\nZ:Q1PlSqNecIn9dKGmOG5B6DPjXbJ7I=\nR:update.sh\nZ:Q1arDdImOpg4Tx1kMH9zYoZpddx/w=\nR:webpack.config.js\nZ:Q18aaPSoxN+jerVnTrTfV2Pi7wuII=\nF:usr/lib/go/src/cmd/vendor/github.com/google/pprof/third_party/svgpan\nR:LICENSE\nZ:Q1rNfimAH8/aLV8ymw/KkiqcjOGyo=\nR:svgpan.go\nZ:Q1VwZpIk0LaTdCsYDRVa8QsnsvnIo=\nF:usr/lib/go/src/cmd/vendor/github.com/ianlancetaylor\nF:usr/lib/go/src/cmd/vendor/github.com/ianlancetaylor/demangle\nR:.gitignore\nZ:Q1zapMZioMh/2GBc25iNI38010Scw=\nR:LICENSE\nZ:Q1fg7IEFS9u+BZSkh+WH4rChZc0h4=\nR:README.md\nZ:Q1wFrgVyyA9IZSCV1IhGf9obC2NW8=\nR:ast.go\nZ:Q14BPhAvrxlMTwmCN1SOSlZngykNA=\nR:demangle.go\nZ:Q11mcA0UHYTVIqqLnO//ciT6IQ1J0=\nR:rust.go\nZ:Q1atO1jEisZtjZkybSJHNzqzvewIA=\nF:usr/lib/go/src/cmd/vendor/golang.org\nF:usr/lib/go/src/cmd/vendor/golang.org/x\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch\nR:AUTHORS\nZ:Q1XSIpEwJVjMHf5HKcabrGJyUtPBA=\nR:CONTRIBUTORS\nZ:Q1OQl1c8MR3vVEXk3MrzGJmHRlvIM=\nR:LICENSE\nZ:Q1fg7IEFS9u+BZSkh+WH4rChZc0h4=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/arm\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/arm/armasm\nR:Makefile\nZ:Q1G9cL+JfH4cfbtQlLlDYea2wz+n8=\nR:decode.go\nZ:Q1ylQ4CbZWuVjWCxRoYixySvSow64=\nR:gnu.go\nZ:Q1hfwBR8+JNFlQ89SLozrhOwOIXac=\nR:inst.go\nZ:Q1B3jdYYYaC5UmxNiMMTHZNz/cHJE=\nR:plan9x.go\nZ:Q12r8OX+ncF54ld/agpzAT2z9R1M4=\nR:tables.go\nZ:Q1mOv0WuacbHncFl7N3M8Ei82cCrA=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/arm64\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/arm64/arm64asm\nR:arg.go\nZ:Q1dNtmL6X+4lOYQkX9MMV5klWAXRA=\nR:condition.go\nZ:Q1gDxQ9fupYfvhGQC+oYv6NC/tWHY=\nR:condition_util.go\nZ:Q1SGIfaUTU/NwVNUbISxwVXjyEU3s=\nR:decode.go\nZ:Q1rczialvAunpU44SH09d49XF+muQ=\nR:gnu.go\nZ:Q1gWdHmRlfF7mLgRQzohhvdp6L9P8=\nR:inst.go\nZ:Q1wJdT6nJ0joaIBDxG10SRee8gI50=\nR:inst.json\nZ:Q1PFrxdbUzDamMtP3+OLPoBaSAKDc=\nR:plan9x.go\nZ:Q1NnU6I7en61feEOlbXK1FHpOIEgw=\nR:tables.go\nZ:Q1Mol88J5fAXil+W+NSlrcuZ/aKas=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/ppc64\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/ppc64/ppc64asm\nR:decode.go\nZ:Q15avm3ztf7du3QAuSFxEcWc9l9VM=\nR:doc.go\nZ:Q149/dbUbl7ZufPZ9gvI5cOBf2IIs=\nR:field.go\nZ:Q1TSoYUu8YBtoSBFwe93KcEYiJX5c=\nR:gnu.go\nZ:Q19Z02PeQpxqbVyw3XlJihp0xkCxE=\nR:inst.go\nZ:Q12aKr+S/ZhXBHbAeiIze6q9Q4azg=\nR:plan9.go\nZ:Q1KEZTGbioHYtwiUtTfk5e0ZOrNrQ=\nR:tables.go\nZ:Q1wIKyQ+qVujhTt/EwuHxwcpybSdM=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/x86\nF:usr/lib/go/src/cmd/vendor/golang.org/x/arch/x86/x86asm\nR:Makefile\nZ:Q1BfzI13IRAOVoOT8/ftPvjoFV8Gw=\nR:decode.go\nZ:Q1QyxH0BASjCaDUAKj9YIxshM6lX8=\nR:gnu.go\nZ:Q1CISaLFuLNo2YtRtMMPfMUXSQGY8=\nR:inst.go\nZ:Q1IPsowJwmDAWkXQI1nDDN9JyXH0E=\nR:intel.go\nZ:Q1QE3SrqvrRLk9s0vIsEgttv1J3DM=\nR:plan9x.go\nZ:Q1HAiy56htpDuvo1vf62HTX2X61B0=\nR:tables.go\nZ:Q14ruAgDXBEez8YifltmySa82mMJs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/crypto\nR:AUTHORS\nZ:Q1XSIpEwJVjMHf5HKcabrGJyUtPBA=\nR:CONTRIBUTORS\nZ:Q1OQl1c8MR3vVEXk3MrzGJmHRlvIM=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/crypto/ed25519\nR:ed25519.go\nZ:Q1Jp9q7PeAuiZjlqYqmwqZMvqIUWs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/internal\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/internal/lazyregexp\nR:lazyre.go\nZ:Q1PRSKUzhIQvRNyQjp0uRW0/JqXwI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/modfile\nR:print.go\nZ:Q1/Hyw3vkozTYpBSlI7SvWcr77Dqc=\nR:read.go\nZ:Q14lJT+GuLF00w2mn4MboutrycUeI=\nR:rule.go\nZ:Q1SKEnRVH/S4U6ro/0gw/HWK53LHk=\nR:work.go\nZ:Q1Aws24eLUMHw22GUX18zG3W8SOOg=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/module\nR:module.go\nZ:Q1ICKqej32Z1zqQFED+q9dZ48y2jM=\nR:pseudo.go\nZ:Q1ZtCISQHyG+K8k3TTR++Q7ffKwiI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/semver\nR:semver.go\nZ:Q1f/+TrS19R12VSjEUcI1EebqEuDY=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/sumdb\nR:cache.go\nZ:Q1rVesCBnK70Xw0OTi3/MR9Z29YXs=\nR:client.go\nZ:Q1A5KZJOj+sbH99auVqjtA1PT0qEM=\nR:server.go\nZ:Q1nBpXVTUsBz6fQ410YAF+3V0qdRU=\nR:test.go\nZ:Q14d0YEP2l6Eca2my3krKadp1iGOs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/sumdb/dirhash\nR:hash.go\nZ:Q1en2mu7XhbTdvVT2gFfp+wY5aTm4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/sumdb/note\nR:note.go\nZ:Q1s/pPjuXr8tsbcloTtMXyqIgzUj4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/sumdb/tlog\nR:note.go\nZ:Q1Cs/RO2ehhZPlZEAWTxG5tVzoBo4=\nR:tile.go\nZ:Q1wRchdIb79u8oQlYcnefpD+0K8fA=\nR:tlog.go\nZ:Q1dX9Mktt8yt12Slb2U8/dZawmzuU=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/mod/zip\nR:zip.go\nZ:Q1fq3MXTSNubguT1HaNhzua79NvRw=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sync\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sync/semaphore\nR:semaphore.go\nZ:Q1r2Gy6925ZCGEu1wIuJ0OsfnVBqc=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys/internal\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys/internal/unsafeheader\nR:unsafeheader.go\nZ:Q1BX5iQnjfif0m1Y+1EEZTAzVBoo4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys/plan9\nR:asm.s\nZ:Q1Z0HluSSwlBM1wFtllmtS8Qq5G7A=\nR:asm_plan9_386.s\nZ:Q1T2auD+mcFXAGnFPcsXfkXbWnCh8=\nR:asm_plan9_amd64.s\nZ:Q1xWYdj+1s9aQHXnqE4b6y1wvaRCI=\nR:asm_plan9_arm.s\nZ:Q1ABJD5ec2hvBMP0Xq8xAD1g0jWHU=\nR:const_plan9.go\nZ:Q1WHf5znGMnc7JG/okShdfIOA1AFc=\nR:dir_plan9.go\nZ:Q1GJfQL0kwcZFw1ioJYqls4UZGYX0=\nR:env_plan9.go\nZ:Q1VTrcfCX7jdEacdvoU/81xmvVTOc=\nR:errors_plan9.go\nZ:Q1puh11scra3vr4xK2+S97WMy4TY0=\nR:mkall.sh\nZ:Q19pp0hAci/oEoNgBSKmXCEk4IXqs=\nR:mkerrors.sh\nZ:Q1gs1oQGdlvT7JrZuHYwIr5l8Xe7M=\nR:mksysnum_plan9.sh\nZ:Q1T6/okY4iEwXqcqQU2ttLmXg48Hg=\nR:pwd_go15_plan9.go\nZ:Q11lU5W3v61fRmGeeahp9yoULcQ0g=\nR:pwd_plan9.go\nZ:Q1bmeULQmUp6HWKTxoTfddsuubfgA=\nR:race.go\nZ:Q104sq3sgOBq8am46vdzwvy2+VxgE=\nR:race0.go\nZ:Q11NTSdY6YIuVtZ1t/Y+5TbBvFT38=\nR:str.go\nZ:Q1o5B5SQIycL4oxB3L9IqWDix8EiE=\nR:syscall.go\nZ:Q1/dehQQ6F16njw2rt1ymJuMRJK3M=\nR:syscall_plan9.go\nZ:Q1Urf+IdgHsQ+HpeRMqp52A7/yd6w=\nR:zsyscall_plan9_386.go\nZ:Q1GMmMwSktUxolffgRspBQzEPMuFo=\nR:zsyscall_plan9_amd64.go\nZ:Q1u0llMICplCxMQZcOtSPeAcLYMwM=\nR:zsyscall_plan9_arm.go\nZ:Q18vjsdbGWCVkhq5GjUV7rVol9QfY=\nR:zsysnum_plan9.go\nZ:Q14zOUdgZI15FTJfq8h/chYJWzjbs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys/unix\nR:.gitignore\nZ:Q1RmYl1sv/DhjIwCRGkU6TgeZ/k0U=\nR:README.md\nZ:Q1K18QjAeFexEYp9bSZjCcj1VtJTw=\nR:affinity_linux.go\nZ:Q1cRb//LEfLtL3pUAE5dIhk0tleXQ=\nR:aliases.go\nZ:Q1RmlXgzsJ4nn1LQxSp5elx2cNVy4=\nR:asm_aix_ppc64.s\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:asm_bsd_386.s\nZ:Q1ntVe4ypT/odMI0njxRy1TCwzKxI=\nR:asm_bsd_amd64.s\nZ:Q1ki8PYduShuFOlh7MFE3jnmBiPz4=\nR:asm_bsd_arm.s\nZ:Q1ASSugWLVMunER5kjGYUOWEJEVAE=\nR:asm_bsd_arm64.s\nZ:Q1E+ecHieVb700ylzq9XbC7sdX7xI=\nR:asm_linux_386.s\nZ:Q1xSkKkOpcrF+Hr+JUbvZF00CTXBk=\nR:asm_linux_amd64.s\nZ:Q1HOCcl5QEx6wd/yLa/SHBpz+HdaE=\nR:asm_linux_arm.s\nZ:Q1aFoSp4sIxSv8cgQOamN0uJdz61k=\nR:asm_linux_arm64.s\nZ:Q1vRvCogh7k1JGO6VFOI+GFl4yWXk=\nR:asm_linux_loong64.s\nZ:Q14ToPVd/DX6SvsbW5QoXg1yq5mYY=\nR:asm_linux_mips64x.s\nZ:Q1mILMdF2rnygQtbVY7ndZasSpaEE=\nR:asm_linux_mipsx.s\nZ:Q1/tqZIAbNr+H29NDfaA/0/oKmfI4=\nR:asm_linux_ppc64x.s\nZ:Q1LYjcqwOVPn7KpTjQ3+a1u4KSeiI=\nR:asm_linux_riscv64.s\nZ:Q1S3iEt/R3hxEYpqatSzrv/fdb6Ms=\nR:asm_linux_s390x.s\nZ:Q1/ZTbXVTnLNz5NQQmUpDONBQ4cPw=\nR:asm_openbsd_mips64.s\nZ:Q12/p1/qZyRMTU64SrMyMmaW1g0k8=\nR:asm_solaris_amd64.s\nZ:Q1QaZPXmYE4ECc6+AMXH7Iv784gnw=\nR:asm_zos_s390x.s\nZ:Q1P4DvJfOPn31vKPG2f8HUTA6QzqU=\nR:bluetooth_linux.go\nZ:Q15q3sGgTn/RWwwa+2yKizM6K/GgE=\nR:cap_freebsd.go\nZ:Q1z/fE2ekanafRbrfm2ahX2XE4hio=\nR:constants.go\nZ:Q1PAsnmUAkVjlx50t1lOPG9EY8fFM=\nR:dev_aix_ppc.go\nZ:Q1KFh4Gg/n3/D2TeScyBnkhc1HYpU=\nR:dev_aix_ppc64.go\nZ:Q163nbAXs6OexnrzLfhn+1NpEPsQI=\nR:dev_darwin.go\nZ:Q1zUqZmoNX2c8Lu49MZl++Y3mrD6c=\nR:dev_dragonfly.go\nZ:Q1l4gEUFS8DsNA0mm+BHwUZ+T0hhY=\nR:dev_freebsd.go\nZ:Q16mNqKKlc0be/T+M4wSDx8+9Rspk=\nR:dev_linux.go\nZ:Q1S2BMmqSjM0svxNSXckfwCNYrRrg=\nR:dev_netbsd.go\nZ:Q1+8mrG/Z7p6VHusLxVC8wlpEGp20=\nR:dev_openbsd.go\nZ:Q1cMPD4nILdLEHLX6WUBt/J51+7+g=\nR:dev_zos.go\nZ:Q1hShSpEln+Y+qTrEtsTQMj9q9vj4=\nR:dirent.go\nZ:Q1MZrqhTVjE+6yFnLGTYtOyf1Y3ic=\nR:endian_big.go\nZ:Q1oBkG9NebaxAxx9NlNSUnwyJoNKE=\nR:endian_little.go\nZ:Q13W1nBXXQCXAvDie5TJ1NC4pzeuw=\nR:env_unix.go\nZ:Q1hxD1zeslbXT4dpkb40HVXkkDgR0=\nR:epoll_zos.go\nZ:Q1lzO/+ABNcObza+Q6+wMY/81ce4Y=\nR:errors_freebsd_386.go\nZ:Q1fBDvbIsW9wscWKJ296vZmiQuHBY=\nR:errors_freebsd_amd64.go\nZ:Q1p0aWwRQP7ht+w/IMTuiAZT5QQd4=\nR:errors_freebsd_arm.go\nZ:Q1UEMWPCNuQE1gYiXWcIehahymLoA=\nR:errors_freebsd_arm64.go\nZ:Q1CxkRf2+4Mf4zuHKzH8W5va46PvA=\nR:fcntl.go\nZ:Q1saiCVFAswOZfvDmRDLftIsvhvxc=\nR:fcntl_darwin.go\nZ:Q1x9BVg8x/wLKJUrLQWQLlmA2ulkI=\nR:fcntl_linux_32bit.go\nZ:Q1eP6qF088S77Lr4srMH4qK2g3EgE=\nR:fdset.go\nZ:Q1UYIVTl2wV6JMpHGPNwyy/Fc/HCU=\nR:fstatfs_zos.go\nZ:Q10UQQb/xhc3J3KVe/UE2rAI17MW0=\nR:gccgo.go\nZ:Q1HcLTnYlvTqS6DMy1EwibFoecr1w=\nR:gccgo_c.c\nZ:Q1YAAQ9wRY2S7gLjgvaIDvuMkz5zY=\nR:gccgo_linux_amd64.go\nZ:Q1baJ33mTL3XzhOJ1U+5VzxtbSqvQ=\nR:ifreq_linux.go\nZ:Q1To+wEeaHX1pg8gFZJzO4Y++yE4M=\nR:ioctl.go\nZ:Q1JXpN3DWp2AnScdEyVznUna8HwWw=\nR:ioctl_linux.go\nZ:Q1ou1mbo0ksZ6vHA+gucKVEIM44wc=\nR:ioctl_zos.go\nZ:Q1+VLOYMa1AGfYwGNuAnN3Lgz3jOI=\nR:mkall.sh\nZ:Q1fsCbwpuAEZzsOx3Rn4heQ8LNA/o=\nR:mkerrors.sh\nZ:Q1mmt96tE5fA7/jP102+ltmZ6+WXs=\nR:pagesize_unix.go\nZ:Q18Tkk+8oy7/GFOQoN8TKGD6keLMY=\nR:pledge_openbsd.go\nZ:Q15O7GCqxUwjpSo2D6+L9XfpPbrpQ=\nR:ptrace_darwin.go\nZ:Q1QcefnK6qyEyloVY5nmoI2nV6qxs=\nR:ptrace_ios.go\nZ:Q17FZBSvv2ajI4CtvN1LWgVI6fNuA=\nR:race.go\nZ:Q1fuXGhh3PV+bAD1n/f59oFvpLWqs=\nR:race0.go\nZ:Q10EjozZhHoMvPjI6fO2/jf3E1sC4=\nR:readdirent_getdents.go\nZ:Q1UnfOzetNQa7nxnbz63jaSHgEktg=\nR:readdirent_getdirentries.go\nZ:Q1ktbwBrx+6qdVszMz7dn9MFCsyPo=\nR:sockcmsg_dragonfly.go\nZ:Q11OYqwTN6CBuFknzioaR3Qsi2itk=\nR:sockcmsg_linux.go\nZ:Q1G1T6VraeT7Sth2NITi4EO4TjA1w=\nR:sockcmsg_unix.go\nZ:Q138Wka1okrMyuC9KvKsckeCAmpI8=\nR:sockcmsg_unix_other.go\nZ:Q1n/orR94+W+J0RO2cOP1uaCafCRo=\nR:str.go\nZ:Q1eEu7S5OfGsETFtyicaJDHJPmjKw=\nR:syscall.go\nZ:Q1MPSSVzIZiLdl8V8hqdwPhcczBVQ=\nR:syscall_aix.go\nZ:Q1bONVm76ftFhD5OSZEbLdd9kC2Zo=\nR:syscall_aix_ppc.go\nZ:Q1weiuoqBV5xyLenZ9Ec1xO51To5g=\nR:syscall_aix_ppc64.go\nZ:Q10ileJSgMVKWqTueccbKl//ue/Qg=\nR:syscall_bsd.go\nZ:Q1c5xEtIgfJ0qZRV6ta9Aop2gCoE4=\nR:syscall_darwin.1_12.go\nZ:Q1WCK6jBUdzB5Y1aOgc4HOTSbOJ0Q=\nR:syscall_darwin.1_13.go\nZ:Q1sQtG/rOxe8Olfj62QvKrvabi0sw=\nR:syscall_darwin.go\nZ:Q1uJgxfDfcnGO7SbpRMoQaNFvyokA=\nR:syscall_darwin_amd64.go\nZ:Q1dzVFWGYjPXw78xftjL4D6HJysqA=\nR:syscall_darwin_arm64.go\nZ:Q1bvaQ0+ASERfp3t5o4nkZIiV3GOY=\nR:syscall_darwin_libSystem.go\nZ:Q1hT9YHvpKnRvVSqoGtDWQOV15VlU=\nR:syscall_dragonfly.go\nZ:Q183Ah1KFe8hCZsVqLW0AocPWI6UI=\nR:syscall_dragonfly_amd64.go\nZ:Q1mWk6E+dLsvIqQkCUV45wQSmaZmw=\nR:syscall_freebsd.go\nZ:Q18tV5OhjOx03dx/zCP2aBUe1yZn4=\nR:syscall_freebsd_386.go\nZ:Q1DhCB3C/601J0H0DNNMwNjxy2/Bw=\nR:syscall_freebsd_amd64.go\nZ:Q1ijoHmXD8gOGRBI2+de8JMtyitaY=\nR:syscall_freebsd_arm.go\nZ:Q1EHxluXLxo+OhIDmdnQ5VKiqR08I=\nR:syscall_freebsd_arm64.go\nZ:Q1lKDVGdtfzP6ePGvtq2IpS83SK3o=\nR:syscall_illumos.go\nZ:Q1PuYrMpB7hr7OSJ3OVlldMn7CSac=\nR:syscall_linux.go\nZ:Q1OMQ/zaB1cHzdutFKqbRLuIx/u8E=\nR:syscall_linux_386.go\nZ:Q1rcu1q5HtXKj5VOPwwWKERfyN1Qs=\nR:syscall_linux_alarm.go\nZ:Q1nRhxEOT/mHmGuEK7SMT49HdKWpc=\nR:syscall_linux_amd64.go\nZ:Q1g8O5CCq75qSJXfMQw3S+HWOgSbY=\nR:syscall_linux_amd64_gc.go\nZ:Q1aSGCe2hQPXT+NPhk2fRy1GrDAJ4=\nR:syscall_linux_arm.go\nZ:Q1EVpCX450/+picatI3/COXBn0cFQ=\nR:syscall_linux_arm64.go\nZ:Q1Zulm05LZ2ECwp72kutNDI/sssSc=\nR:syscall_linux_gc.go\nZ:Q1n+Tf1gDjY7R3oo3oNhzSVZZNiHU=\nR:syscall_linux_gc_386.go\nZ:Q17GoTKW7jK0VX0/oW9MtUolVJw9o=\nR:syscall_linux_gc_arm.go\nZ:Q1f3IlNtVRmQw/5Io81SFgubZ2vZw=\nR:syscall_linux_gccgo_386.go\nZ:Q128r2W0Dvik+lpV3zMRd/aNu7D/s=\nR:syscall_linux_gccgo_arm.go\nZ:Q1omh7kWTFH9XmqSosKF4l3qVatCU=\nR:syscall_linux_loong64.go\nZ:Q1Rv5Tges+6AnwhBgIPExbuGbcKoc=\nR:syscall_linux_mips64x.go\nZ:Q1hS4QQsT/3asRVi+CjVuDNaIcjMQ=\nR:syscall_linux_mipsx.go\nZ:Q1DZqBDNkRryw47bC9U75hv4D8uyE=\nR:syscall_linux_ppc.go\nZ:Q1lOdk5pkjbuH58cwPHTPoaPysppo=\nR:syscall_linux_ppc64x.go\nZ:Q15OB7VpGwCnu+Zzbz7AF1REt1ZnE=\nR:syscall_linux_riscv64.go\nZ:Q12kanuBUQDW7D415D4ZKXzpJmYO8=\nR:syscall_linux_s390x.go\nZ:Q1hDBUx6xx07riB5eweo1SUXmqs6c=\nR:syscall_linux_sparc64.go\nZ:Q1OsheptMngm+31DaDj7Vb7RnTzHU=\nR:syscall_netbsd.go\nZ:Q1ZyD5JMCOq2sySEioqy5urq1K5Us=\nR:syscall_netbsd_386.go\nZ:Q1Z4rA9JRqBHKhNau2IBKCw6tI7kI=\nR:syscall_netbsd_amd64.go\nZ:Q1PkfxrcCRJztpQBUPet+VqCKTaYY=\nR:syscall_netbsd_arm.go\nZ:Q10K49RLHJDBsLpuVSAv74BwJ+DXs=\nR:syscall_netbsd_arm64.go\nZ:Q1utIHcaZdyMgfUOyHMlo+XBvDHCw=\nR:syscall_openbsd.go\nZ:Q1bkS8C8UmGxoCerolL2fuXdj6ES4=\nR:syscall_openbsd_386.go\nZ:Q11L3leU5OqzN3DB7lB+xghJYhmHE=\nR:syscall_openbsd_amd64.go\nZ:Q1/Ht6D8fprnpAr/yKrE4muCRGiBw=\nR:syscall_openbsd_arm.go\nZ:Q10asHLgYMYZAGiAE8vJTo0b7VlX8=\nR:syscall_openbsd_arm64.go\nZ:Q1ty7QkRIWQRgv0y1CZ9sft0kUnLs=\nR:syscall_openbsd_mips64.go\nZ:Q1jD8tPZNT9N11vq08ILjdPfA3Swo=\nR:syscall_solaris.go\nZ:Q19Me5xGvVh2sYznJElvImN8OCpAQ=\nR:syscall_solaris_amd64.go\nZ:Q125WLOkAfQZLuvpoMfceUmf4ddsM=\nR:syscall_unix.go\nZ:Q17pFj+ZleUemhFkG9mutpF+PElb8=\nR:syscall_unix_gc.go\nZ:Q1Jq5JkP9o8AzmLFXPDpLC3Hskdmc=\nR:syscall_unix_gc_ppc64x.go\nZ:Q1WMpIeiQvvJ9et9EwDXtr5daqBZQ=\nR:syscall_zos_s390x.go\nZ:Q16+PrGo5PRQajfhSOmKJ1JpwEJto=\nR:sysvshm_linux.go\nZ:Q1gUa50ccbN7EsE9ieUN1YAhnKX7c=\nR:sysvshm_unix.go\nZ:Q13mE328F7Aunwy4GnTfbvvK2iYzI=\nR:sysvshm_unix_other.go\nZ:Q1sj5qlNv09XHTkOMDEUYZcoehCeY=\nR:timestruct.go\nZ:Q1juC4Mir/lPOrzND1nXIviKEUjyQ=\nR:unveil_openbsd.go\nZ:Q1ORoOnVgyeTgEWOhGzcDnMVkoFOA=\nR:xattr_bsd.go\nZ:Q1Ov3isJbdJH3QOCwjJpnGC6vmayE=\nR:zerrors_aix_ppc.go\nZ:Q1dg+T7g+xE4QH72NEnd0S2JgonHA=\nR:zerrors_aix_ppc64.go\nZ:Q1+EbqsHVLcooW6l+jMHVk9370dhA=\nR:zerrors_darwin_amd64.go\nZ:Q1ELC/tEDqs1XeoAcIJuDJhy6FIwI=\nR:zerrors_darwin_arm64.go\nZ:Q1+ah8MuWyYs/bMmS0AXUcC3huZas=\nR:zerrors_dragonfly_amd64.go\nZ:Q1cFF9V0e6+01O2kYeuzUoyEJeAiw=\nR:zerrors_freebsd_386.go\nZ:Q1Hy2faNFtcxeGMaIunkCRfCRpTss=\nR:zerrors_freebsd_amd64.go\nZ:Q1Av9RaQjh2Z6O8xNQXJbgGMTC41s=\nR:zerrors_freebsd_arm.go\nZ:Q13Wu2i+ulxnAV8eS964b75Q7AKRg=\nR:zerrors_freebsd_arm64.go\nZ:Q1Y67EUxph+WKBf3jsXnxXMnZzf7I=\nR:zerrors_linux.go\nZ:Q1ZUJn9AYAZQPVaZRDDyCXm5nwFKw=\nR:zerrors_linux_386.go\nZ:Q1t7EvAnMr1w6PB3FbyFXcFPPxPrw=\nR:zerrors_linux_amd64.go\nZ:Q1b/YMY9nLWKsU9ftV/AF8TSaVsIw=\nR:zerrors_linux_arm.go\nZ:Q1GartDYVn4AzWjMdNNHrzJjI2y6s=\nR:zerrors_linux_arm64.go\nZ:Q1xUbHBDQrrV96mE0fXbFTaI8gSXc=\nR:zerrors_linux_loong64.go\nZ:Q1Z9BLhIX8iDbmgrLPIkTNrHXiE7U=\nR:zerrors_linux_mips.go\nZ:Q1EZ6VbUalYBl/veTS93wxmAlPvVI=\nR:zerrors_linux_mips64.go\nZ:Q1K09CaFUK2jL4A6+OErBT5QDLNJU=\nR:zerrors_linux_mips64le.go\nZ:Q1pUer0q5e+oJHWyI3XVC4cmvNPFQ=\nR:zerrors_linux_mipsle.go\nZ:Q1QpJjSwNow7sty+7bQzqW3lOsnAk=\nR:zerrors_linux_ppc.go\nZ:Q1aBu8NAzASKUZb1uCNDMsy2Ailq0=\nR:zerrors_linux_ppc64.go\nZ:Q1yczBIXuE+1k/ETE+tfl8AVkNZ9M=\nR:zerrors_linux_ppc64le.go\nZ:Q1lwzlhEjRegISzUTXrQIejmVZZtc=\nR:zerrors_linux_riscv64.go\nZ:Q1I6faunntNn2itf+yRPAuvdRKYMo=\nR:zerrors_linux_s390x.go\nZ:Q11klHbYeUOH5zYI0s04FgV3LOqYM=\nR:zerrors_linux_sparc64.go\nZ:Q1emL6YzttEtopkrZ885thZiWJsag=\nR:zerrors_netbsd_386.go\nZ:Q1B5sPBNBmlv1xXYrrUxICCgFbwO0=\nR:zerrors_netbsd_amd64.go\nZ:Q1Lafvpq+O9sV4kFbObek/cCFOkJI=\nR:zerrors_netbsd_arm.go\nZ:Q1h/1JAbNQft+FnRVmGf9XEFLki6M=\nR:zerrors_netbsd_arm64.go\nZ:Q1iUtaU1N47dCYeSNPupSeaRXYT7s=\nR:zerrors_openbsd_386.go\nZ:Q1PQ9QTXzna2g7f4p6oM7ObawUqzQ=\nR:zerrors_openbsd_amd64.go\nZ:Q1xlImVmLLTyNcrLSx0rwrnfOaktQ=\nR:zerrors_openbsd_arm.go\nZ:Q1O4kjFc3mtrwr9gTgEJhVFtF6Adg=\nR:zerrors_openbsd_arm64.go\nZ:Q1YcMyIvl4rYStjP+IJmuRdE6EhwM=\nR:zerrors_openbsd_mips64.go\nZ:Q1iqar06/jbWiYAKeDoruLwO2PPeA=\nR:zerrors_solaris_amd64.go\nZ:Q10gfaFsZfG/lbI0R7C+PxMZ8Id7U=\nR:zerrors_zos_s390x.go\nZ:Q1oL0uJS64eZq1nQrltg5YKo4ZIH4=\nR:zptrace_armnn_linux.go\nZ:Q1rMg0kC0pi5+dfXL6xW+jrWcD+H8=\nR:zptrace_linux_arm64.go\nZ:Q11CbuLNUAR/NR9k/ZzwvIbBZHsaI=\nR:zptrace_mipsnn_linux.go\nZ:Q1FlXe2JJ0mWU3Rfv8AmhZzC1h52o=\nR:zptrace_mipsnnle_linux.go\nZ:Q1qoqreFtx/TOVpBugHucphnhTapk=\nR:zptrace_x86_linux.go\nZ:Q1Z7aU3zWWYsBxdwAxNCaTHzQzkOw=\nR:zsyscall_aix_ppc.go\nZ:Q17IyZPebHLxmIk2K1Gx6E1rmEgdc=\nR:zsyscall_aix_ppc64.go\nZ:Q1VpwCkRL4iEmZt8CQbAXdB2tJE58=\nR:zsyscall_aix_ppc64_gc.go\nZ:Q1HD2RxGmNgegqzAx+PBeL4XWgVpw=\nR:zsyscall_aix_ppc64_gccgo.go\nZ:Q13d82hJdOzvy9bWWHuGNdgjUa4s8=\nR:zsyscall_darwin_amd64.1_13.go\nZ:Q1u2B85KLxkAksV11o5yYEj37OqlU=\nR:zsyscall_darwin_amd64.1_13.s\nZ:Q1gUj3tu4wi0+6jN2ftebsJpRTvFE=\nR:zsyscall_darwin_amd64.go\nZ:Q1GbXP4O8GSUkl6gA6n1hFoIs4r8w=\nR:zsyscall_darwin_amd64.s\nZ:Q14e4Q1pt0ofiBvKDxIgztN28vlek=\nR:zsyscall_darwin_arm64.1_13.go\nZ:Q1CrF7kVRBwmgBOtpRiT/NWt3f3+A=\nR:zsyscall_darwin_arm64.1_13.s\nZ:Q1VSM0DxagYPAs4nsvHldVks+hFBw=\nR:zsyscall_darwin_arm64.go\nZ:Q15DU8a2MQFwcPdE081lw9XXlTdWk=\nR:zsyscall_darwin_arm64.s\nZ:Q1J67zeno+WUs4Cv2NvO0HZPmnbbc=\nR:zsyscall_dragonfly_amd64.go\nZ:Q15mczAfRjDNhhGA+AeFxPKyaetFw=\nR:zsyscall_freebsd_386.go\nZ:Q1qjZFn1VYNofZhailE0gP2oHfObs=\nR:zsyscall_freebsd_amd64.go\nZ:Q1iN1CvxlTJf5sO14I8SvsQdw/YUc=\nR:zsyscall_freebsd_arm.go\nZ:Q1UEHtDlhVfB0lGaTi5zAu9vMq1PE=\nR:zsyscall_freebsd_arm64.go\nZ:Q1oaj4LyrV2gQVysNTgMMJ0z6pOj0=\nR:zsyscall_illumos_amd64.go\nZ:Q1WJijI00LZ2sSeGPdj6DZNfEeMU0=\nR:zsyscall_linux.go\nZ:Q1JtJGyALjrw4gxXDs2KbuRlFesjE=\nR:zsyscall_linux_386.go\nZ:Q1H4eMGmjqUKw2qqZeVPmhzSY3+TQ=\nR:zsyscall_linux_amd64.go\nZ:Q1yGBRIgqB+6GOS5ibWvC5fYBySkU=\nR:zsyscall_linux_arm.go\nZ:Q1EmS57VdrZRQ3u8GtyBDiwZNHjvs=\nR:zsyscall_linux_arm64.go\nZ:Q1Gffe+QfJxs4Pv53O3dfXDBTQPsQ=\nR:zsyscall_linux_loong64.go\nZ:Q1wzOIGwt1gtjXDMlzkSMgywOCW+0=\nR:zsyscall_linux_mips.go\nZ:Q1L5TVb6W/8Z7gxc1o4Z0qQuv0rA4=\nR:zsyscall_linux_mips64.go\nZ:Q1qOqZkYvMWVHjas4JnIZ/6ywsytE=\nR:zsyscall_linux_mips64le.go\nZ:Q1NW2XyOH8qbb3E51OXGzw3e/qRaU=\nR:zsyscall_linux_mipsle.go\nZ:Q1mw7njCCM+shUaPm5ae4+85v6jAA=\nR:zsyscall_linux_ppc.go\nZ:Q1wzEegd0PVv8iRs1AhMAkj5ldrX0=\nR:zsyscall_linux_ppc64.go\nZ:Q1+gW3MFeX02E2D5mBHoI+ksFGY5s=\nR:zsyscall_linux_ppc64le.go\nZ:Q1D/SSXguvR+wL3tAf54UlnNSx9FM=\nR:zsyscall_linux_riscv64.go\nZ:Q1hw1eQIdujIYUdU2kzDXow9vOLhw=\nR:zsyscall_linux_s390x.go\nZ:Q1Lj3dkBIvAXtS39eK9Fg0KS6u848=\nR:zsyscall_linux_sparc64.go\nZ:Q1GawQnXEbmJgw49Qi8rnO8KA7tjE=\nR:zsyscall_netbsd_386.go\nZ:Q15woiyUytGl2dN9AgPQFuEhUHlnI=\nR:zsyscall_netbsd_amd64.go\nZ:Q1ZQs9YPxX+ZMXCMjTaG8HJg4+C00=\nR:zsyscall_netbsd_arm.go\nZ:Q1DYK1rj8HmoGjJPJiua+87Yd2gfk=\nR:zsyscall_netbsd_arm64.go\nZ:Q1Bt0iJhBtrc7dqkClQ57kgi/zXss=\nR:zsyscall_openbsd_386.go\nZ:Q1d5+yKJNm4Qsxc0Vp90KbBp51InM=\nR:zsyscall_openbsd_amd64.go\nZ:Q1bdDDhvROj4mkI85GarvIH/zZ054=\nR:zsyscall_openbsd_arm.go\nZ:Q18QtrToFmhtuYnHqoW3w9I/w3Y04=\nR:zsyscall_openbsd_arm64.go\nZ:Q1wTlh0eL78BYCjBxCSI6vB0BK2a8=\nR:zsyscall_openbsd_mips64.go\nZ:Q1BwGW8+kvgd4e1Jxr+Tv5slC7aE4=\nR:zsyscall_solaris_amd64.go\nZ:Q1BWKXeAJpabcMavT23Imngda9in4=\nR:zsyscall_zos_s390x.go\nZ:Q1D5ksRN4Dj/sZgzCF/E6EzTybR8I=\nR:zsysctl_openbsd_386.go\nZ:Q1EOMofj5hXJWMdDy18i4/xkMgmHw=\nR:zsysctl_openbsd_amd64.go\nZ:Q1L9ZMve8M+rCeI7QHw6oO7VpPmeo=\nR:zsysctl_openbsd_arm.go\nZ:Q19W4pcfzddcJFAu5fUlNFCdfxqFY=\nR:zsysctl_openbsd_arm64.go\nZ:Q1ICVglFLQ0tC2kWjfvNOiW+o4vJg=\nR:zsysctl_openbsd_mips64.go\nZ:Q1cxs3KduW00NdvZpfW+CuWa3N+r4=\nR:zsysnum_darwin_amd64.go\nZ:Q1rPSjDLDDeF729V54QQTiIWJLYvc=\nR:zsysnum_darwin_arm64.go\nZ:Q14hQk6vhH1Cl8fOWyKMOkkSfpPkg=\nR:zsysnum_dragonfly_amd64.go\nZ:Q1BF3JwZAur0zQxeCH/mQrq0npTUg=\nR:zsysnum_freebsd_386.go\nZ:Q1LISgNpt44Cx0se/nHE1H4AicOx0=\nR:zsysnum_freebsd_amd64.go\nZ:Q1+/FHeXI3Vlj3fRI8+wHaDYuTLsQ=\nR:zsysnum_freebsd_arm.go\nZ:Q1cuRfflmmUIIRm7g5r1BuzDdjTEA=\nR:zsysnum_freebsd_arm64.go\nZ:Q1GaKr0M9u84whVqG42wxEaa/iGEs=\nR:zsysnum_linux_386.go\nZ:Q1lLrhu7BpAovr1rZYaKNWRb2Oc2c=\nR:zsysnum_linux_amd64.go\nZ:Q1rdOl9WrcepvvSnXjhXMcz+p8E8c=\nR:zsysnum_linux_arm.go\nZ:Q1D/6yWbLUltah5y92Vp5YytcBgSk=\nR:zsysnum_linux_arm64.go\nZ:Q1XxIoD59oBcxDWgn7lgj2gmy1Lsw=\nR:zsysnum_linux_loong64.go\nZ:Q1+57p7RT3U533Ady+e5q1ZHeuPu4=\nR:zsysnum_linux_mips.go\nZ:Q1/VvMNpQo6ZLuxyJEW8DrFajsNzk=\nR:zsysnum_linux_mips64.go\nZ:Q1w1kInu/VIhTky1l4Habo0zGoV/Q=\nR:zsysnum_linux_mips64le.go\nZ:Q1QaBQtyBhkwIPzxCYP1Rs78KjkYE=\nR:zsysnum_linux_mipsle.go\nZ:Q1Vh4pKf1oNBB92g9nVT+FaZ/POpM=\nR:zsysnum_linux_ppc.go\nZ:Q19dCjyAmqcbKPSB5cxNz4bwZgdng=\nR:zsysnum_linux_ppc64.go\nZ:Q1rmk9mKN4GTgVvH89znPAe3WaMik=\nR:zsysnum_linux_ppc64le.go\nZ:Q1G6gmtkBlLixeh73sY0RH+vT0SoM=\nR:zsysnum_linux_riscv64.go\nZ:Q1oiHN65nVvRdzTetNwjyk9Uyn3Mw=\nR:zsysnum_linux_s390x.go\nZ:Q1a5dDfpVuDawKsqR3TZdGM+9zI2o=\nR:zsysnum_linux_sparc64.go\nZ:Q1vP0CJHhOFQ0iPogewbG0/vTcbbs=\nR:zsysnum_netbsd_386.go\nZ:Q1KSqUpNtKzvSAm4gQssjUlzZXbUE=\nR:zsysnum_netbsd_amd64.go\nZ:Q1pAT5v9S+MGT9BDwux+fgC4zquYw=\nR:zsysnum_netbsd_arm.go\nZ:Q1SF2aK2Qed1TL9XTzMaD/3NFPDRw=\nR:zsysnum_netbsd_arm64.go\nZ:Q14qQReIRSjpbaF+2GsydKMvITA5Q=\nR:zsysnum_openbsd_386.go\nZ:Q1+dwtbYo2oEhb6m1VHPqPiCMgYEo=\nR:zsysnum_openbsd_amd64.go\nZ:Q1HGgxrgxQq5MKbo3Sr4feG4hHNG0=\nR:zsysnum_openbsd_arm.go\nZ:Q1wV3wvOLlYiJTsLJ1t4aSgIXhss0=\nR:zsysnum_openbsd_arm64.go\nZ:Q1oouhE8TcM1vBTb6EPdwiKd0wpZI=\nR:zsysnum_openbsd_mips64.go\nZ:Q1CGGtHlAzjW5ZHxkJVMrDbydwUXo=\nR:zsysnum_zos_s390x.go\nZ:Q1JhTRuUxXceWxLTacLPVvMfnZB5s=\nR:ztypes_aix_ppc.go\nZ:Q1oUZ7ljuMm1xx7GYeEsiHOugTRDU=\nR:ztypes_aix_ppc64.go\nZ:Q1ZguARE7Td16OMx2lsY72D9XWX0g=\nR:ztypes_darwin_amd64.go\nZ:Q18UTx5+hDj2Ygvlcoq616NlqjWcM=\nR:ztypes_darwin_arm64.go\nZ:Q18tn3pj2IWj1KXY23Vb/9bJx82FM=\nR:ztypes_dragonfly_amd64.go\nZ:Q1kY33AmHpyyMSkk8ghF6aQ+Evydo=\nR:ztypes_freebsd_386.go\nZ:Q1+TUwaruDvaQZwz6vlmQn3bA8EXs=\nR:ztypes_freebsd_amd64.go\nZ:Q1/URoUWp+kJpOR3TVNtBUmBroE6c=\nR:ztypes_freebsd_arm.go\nZ:Q1EC+OBTebkMo495yevT5QUkR2oU4=\nR:ztypes_freebsd_arm64.go\nZ:Q1LplftDEq+XXA246CnlGsXYz7KqA=\nR:ztypes_illumos_amd64.go\nZ:Q10aBEiikT6fOFLZhMOZ6ecBIA0A8=\nR:ztypes_linux.go\nZ:Q1y+2a8ZJgfdV2oiV3rk/SID6ujIw=\nR:ztypes_linux_386.go\nZ:Q1zh/vgipLW9icg2SphUcz/cQTQJ8=\nR:ztypes_linux_amd64.go\nZ:Q11wmzWU9wSIZiM1e/qFLeM9Ezzow=\nR:ztypes_linux_arm.go\nZ:Q1Oa7M1r12j2BhhQBE0Dibv5hOyGM=\nR:ztypes_linux_arm64.go\nZ:Q14Yzw0wl5Uvzz/GTinQTnNHZYdR0=\nR:ztypes_linux_loong64.go\nZ:Q12foS1oVHxszIxxATTV7Gs3XPkzE=\nR:ztypes_linux_mips.go\nZ:Q1jA0JPRxtLXN3alSo+0ARuouCkWA=\nR:ztypes_linux_mips64.go\nZ:Q10vrwdq6KI8rB9DKe5ZOQZlVI5Ow=\nR:ztypes_linux_mips64le.go\nZ:Q1mJKgLck6w3fqzPngEPtcW6253rQ=\nR:ztypes_linux_mipsle.go\nZ:Q1MT2JfoVvWYA7IuGrI0zl9s+Fa98=\nR:ztypes_linux_ppc.go\nZ:Q150Yw1cjOJ1VyNbduVZsl2zHECHo=\nR:ztypes_linux_ppc64.go\nZ:Q1TvuNRjZK8aZ71zXEi1ZTeojW5TU=\nR:ztypes_linux_ppc64le.go\nZ:Q1jdhNw+W/Sm7dikj1hZzf/FMgHps=\nR:ztypes_linux_riscv64.go\nZ:Q1p3m9z7gGZNaXl8qZTj2XbzsDFDU=\nR:ztypes_linux_s390x.go\nZ:Q1sV3bBr04bJo4V4iXxr9co+0t1MI=\nR:ztypes_linux_sparc64.go\nZ:Q1Oi9oyCz2a0AilG6C8J8ONs0cvS4=\nR:ztypes_netbsd_386.go\nZ:Q1Usnw5E6vV+NZu1q7IUxylOST874=\nR:ztypes_netbsd_amd64.go\nZ:Q1pkb9fgQqaC/18m448S6onAtmnn8=\nR:ztypes_netbsd_arm.go\nZ:Q1dqq5T5HO0vCYbPXX8RUURYRQniI=\nR:ztypes_netbsd_arm64.go\nZ:Q1usX37BwYL26bt9Wg8hdtRowpfpk=\nR:ztypes_openbsd_386.go\nZ:Q1nO1kUVrdAZg7kBU2kDEszUs3BIk=\nR:ztypes_openbsd_amd64.go\nZ:Q1FFOCnJUVCltuG6KtlAOyyfgM5WY=\nR:ztypes_openbsd_arm.go\nZ:Q1W1cEayx07X+Ist6tCzB4i9WN3R4=\nR:ztypes_openbsd_arm64.go\nZ:Q1YaHJPi39oTdLNUv25H8mBHoTWcI=\nR:ztypes_openbsd_mips64.go\nZ:Q1WqFyCy5t8rrqDo8VkC/lqaWX+co=\nR:ztypes_solaris_amd64.go\nZ:Q1dRPLd3ID8nO5z76b0C480UGgDno=\nR:ztypes_zos_s390x.go\nZ:Q1FCw/wupEd9SehlQsRVwfSfA5fnw=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/sys/windows\nR:aliases.go\nZ:Q1l6MvHf50/4InuSpW1HW6kg0Z3ng=\nR:dll_windows.go\nZ:Q1zKJWnXCu85yzpWmZ3cfV3gjJn6Q=\nR:empty.s\nZ:Q1ZnvcVY/4xiAB04oQmSHw+MWWO74=\nR:env_windows.go\nZ:Q1+FAvIzrBgVeSOZR0BwrLUvmcEIY=\nR:eventlog.go\nZ:Q1GtlAYS844H62VwjmDB/i+p7W4r8=\nR:exec_windows.go\nZ:Q1ZZyEcctHtBl7EMwx+GOyXcde+Ss=\nR:memory_windows.go\nZ:Q1cK5XcHlGEqd6HGk3Jy3QWNubIn0=\nR:mkerrors.bash\nZ:Q1DIkPPvQ3qnvdG/q2H9YUcnd5Yrw=\nR:mkknownfolderids.bash\nZ:Q1R776nMpxo1Gj0vENkweTEDrxCJo=\nR:mksyscall.go\nZ:Q1rcxjy4evVcRr9MN4IwOdFxmkYbc=\nR:race.go\nZ:Q1iEXUZHW5suMetRdUTeeQ579Im6U=\nR:race0.go\nZ:Q1SuZEHA3wVMM7uFt6BWgTto18yrU=\nR:security_windows.go\nZ:Q1MQ+c23l2t9yAO6wixkRWMTYc58s=\nR:service.go\nZ:Q1LOoup2E/IToBgfqEB3h9r638QDA=\nR:setupapi_windows.go\nZ:Q1fKFtFDmAq1Xdo1ptmvRPSeivO94=\nR:str.go\nZ:Q1OhfbvwQtbNCJTlvcHlsH6GoavRE=\nR:syscall.go\nZ:Q1+CKUH2RmRXdh1Q+r814n3Floa1A=\nR:syscall_windows.go\nZ:Q1OSXh7jH/8/pt+6b8XDcIgFqMOX4=\nR:types_windows.go\nZ:Q1QX3e55w3yx2Rq9wJoHGObRY7zlI=\nR:types_windows_386.go\nZ:Q1D5KYd9IGj0tbQbqp6cXpU1DAjI8=\nR:types_windows_amd64.go\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:types_windows_arm.go\nZ:Q1PBB9xb+Ydw4jLmiVcIL07ay75PE=\nR:types_windows_arm64.go\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:zerrors_windows.go\nZ:Q1RkB1t4C72LpQPzt/1HmOy3vqTsI=\nR:zknownfolderids_windows.go\nZ:Q1qsGjPpNqbzcDkBf/CfOuz3UEG8o=\nR:zsyscall_windows.go\nZ:Q1JIkio6Jg6lpj3lH8TxSfni5pbO0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/term\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTING.md\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\nZ:Q169ZL1R0q3pqVa/VMpzQ+jEicVdM=\nR:codereview.cfg\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:term.go\nZ:Q13yrRyxEP6EOoUPiy+mFSq2b4qG4=\nR:term_plan9.go\nZ:Q11wHQP9et+vxD+ny65AUeLtEo96A=\nR:term_unix.go\nZ:Q1IOE2TJIMd/ObPyHTualan3rxN+c=\nR:term_unix_bsd.go\nZ:Q1SQQLMJyteCTuK8HNG/8VZUQj8Gs=\nR:term_unix_other.go\nZ:Q1yWi1/Z2J3ymREq0lbObIn/rkGdY=\nR:term_unsupported.go\nZ:Q1ZUcUa5odJc0kMKsF2RjnRtNWpMc=\nR:term_windows.go\nZ:Q1n0UYuTTMlx4KE9DrySAPVelw+pg=\nR:terminal.go\nZ:Q1XG0DMR303x0WJVqUoc1ZOsVBoHs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/cover\nR:profile.go\nZ:Q1E9snWfCISCvO9hY3jRJcnVZf/mQ=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis\nR:analysis.go\nZ:Q1p0aOTODJ7JQExEjDxMSwwSIUp5k=\nR:diagnostic.go\nZ:Q1WOL9c+7FKE+VHqIKtqxr47PxJmw=\nR:doc.go\nZ:Q1n1glEkNwuah++Vhu4RvKlq6R734=\nR:validate.go\nZ:Q1ysTYUH6K/x8PfvDaoOlCuF96iDo=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/internal\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/internal/analysisflags\nR:flags.go\nZ:Q1EkJ9ak4tBzlBWkWQoe4/3gdK3CA=\nR:help.go\nZ:Q12XwmcDJiVcjJwdNcTfiVWnKt7O0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/internal/facts\nR:facts.go\nZ:Q1Tae761kIzrgSMY9867vVmaI2YO0=\nR:imports.go\nZ:Q1xQ64mE9SNL4og1PunqENKuKDJRI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/asmdecl\nR:arches_go118.go\nZ:Q1JpsI6kXbslqONKYzCKBRbMNlP3w=\nR:arches_go119.go\nZ:Q1gCsfWQc3anN0SZGFXwNFWZbcc/8=\nR:asmdecl.go\nZ:Q14I+KpZfx+6ofQUBO55Pd0J4hBkw=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/assign\nR:assign.go\nZ:Q1byyBrv0x2/ezIqQiXhz8Js8NRFE=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/atomic\nR:atomic.go\nZ:Q1SIeFyhEchOoeiH/NL0FtK1DBAAE=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/bools\nR:bools.go\nZ:Q1c/++fUHToRYdE6YTagbJnXf5u2w=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/buildtag\nR:buildtag.go\nZ:Q1DfjWTgQLDBXf5Xb/wRkPtDIcYHU=\nR:buildtag_old.go\nZ:Q1FurGvfjzXY5qSlGudyWB/PEEutc=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/cgocall\nR:cgocall.go\nZ:Q12ITGdlEz0Iu0v/xFL7xmxC4SfJI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/composite\nR:composite.go\nZ:Q1MthD/57qljb8brayDb5FrzPA/kE=\nR:whitelist.go\nZ:Q1jYbzZXFUtzpFTBVN9LI6VstZxWI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/copylock\nR:copylock.go\nZ:Q1RKvKPI33zPP6ralxC3qNPrFhwhI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/ctrlflow\nR:ctrlflow.go\nZ:Q1kmgf6h2y+b3nptdvPOTuw4TAGR0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/errorsas\nR:errorsas.go\nZ:Q1AhkJ6dtYvLmXDPnwKbZSOJoo8D8=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/framepointer\nR:framepointer.go\nZ:Q1ClWfSS84SyxRZf+4xwoy2mD0q+U=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/httpresponse\nR:httpresponse.go\nZ:Q1s1a8xEgtgrAa2B9PVP5U97iINic=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/ifaceassert\nR:ifaceassert.go\nZ:Q1l0YOIRBupgQinPe6YAt+mHpqJos=\nR:parameterized.go\nZ:Q1mt7chvvWw/4Q2mDnWl/NfvxWoRg=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/inspect\nR:inspect.go\nZ:Q1yUkc1p6qm46OwitLGA1lmnkJR+s=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/internal\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/internal/analysisutil\nR:util.go\nZ:Q1+BaiYB+aAivXhwL8X8yOTqWmQh8=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/loopclosure\nR:loopclosure.go\nZ:Q1y68cdhAU7kkLA3OqDU6U2Vg501Q=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/lostcancel\nR:lostcancel.go\nZ:Q10nWHMIhADUOYOwlGXqQW34UfVF0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/nilfunc\nR:nilfunc.go\nZ:Q1PU+kpTlOlqfjhUnslhDC6cORq1c=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/printf\nR:printf.go\nZ:Q1iAwabN9Jpa6rup3se+ffTbJInYw=\nR:types.go\nZ:Q1sIWJ1Pi7CXWpyC7rsICIv4iPCh4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/shift\nR:dead.go\nZ:Q1rpMFsZTiF+7XpJmEQQnQszp/ke4=\nR:shift.go\nZ:Q1/uD4TPA8AaVCNzfiw4Ii7kd9dPI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/sigchanyzer\nR:sigchanyzer.go\nZ:Q10x4RiXqaGM2WQzilxGrn1RQOKf4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/stdmethods\nR:stdmethods.go\nZ:Q1NQHcaROySxrPuHkSKGYQQpMalK8=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/stringintconv\nR:string.go\nZ:Q13X0RRUykvJf17v7JcT3viD/Gd2w=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/structtag\nR:structtag.go\nZ:Q1BwRP+0a3laS79ZOb0l9VRwcLyl4=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/testinggoroutine\nR:testinggoroutine.go\nZ:Q10jheLU2tqIMVRsafy9HSqexkzFg=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/tests\nR:tests.go\nZ:Q1cxNTG62qOF9FGsS0ll00t67WQHc=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/unmarshal\nR:unmarshal.go\nZ:Q1dKDpbFrZrA4wi30hVg4HGVkv4tw=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/unreachable\nR:unreachable.go\nZ:Q1udOW7yGdqoS/b9ZBsDkg/QprsR0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/unsafeptr\nR:unsafeptr.go\nZ:Q1psGpcPgaTwLbcTG8Fc/x3WznzU8=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/passes/unusedresult\nR:unusedresult.go\nZ:Q1s3QJwBAUzvbd8Z00yGG8H9egUgs=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/analysis/unitchecker\nR:unitchecker.go\nZ:Q1EBWtEFfm1j30bQpzlXvH+ZIUua8=\nR:unitchecker112.go\nZ:Q1oUHoTWCEHn8IO27qcwMjvY48inE=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/ast\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/ast/astutil\nR:enclosing.go\nZ:Q1c+IvTmNNYSAsBBKFAXg2T+J+hmc=\nR:imports.go\nZ:Q1dP9DwtXiQnncR+0Yj+nbmUIpbpE=\nR:rewrite.go\nZ:Q1XeB7QwlQJWZZRYF95/ZhWyOBSgw=\nR:util.go\nZ:Q1//hO3cE6Puz9mGnBqv3KPlXMY7Q=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/ast/inspector\nR:inspector.go\nZ:Q1NpFbLoPtpPR8kb3c6HqRo8kaDso=\nR:typeof.go\nZ:Q1usFh5ZAlgUlJHOXfUmlYs+HKz04=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/cfg\nR:builder.go\nZ:Q1gJP3tsyqmxqZpoTqe/3XRhU5id0=\nR:cfg.go\nZ:Q1N6K15UOVRo7nbme9fP9CqJFpQuQ=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/types\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/types/objectpath\nR:objectpath.go\nZ:Q1n01WOsh/DxcXo02n3tTDkR3pSX0=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/go/types/typeutil\nR:callee.go\nZ:Q1JIRk600gNk4ITdod93j+wiTf5WY=\nR:imports.go\nZ:Q1hp7bzsC06FzCbamuh4gB0uDyNlw=\nR:map.go\nZ:Q1aFIvNy55HC9h0MJmxola8Y2/mak=\nR:methodsetcache.go\nZ:Q1XFxuywxLnaMEUCjcNGffKCvG3+I=\nR:ui.go\nZ:Q1eDyXT7bfOYoU9NWuENTAssurbiE=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/internal\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/internal/analysisinternal\nR:analysis.go\nZ:Q1OxQ4wfcTJohY7fhtp0uaaLrRFfY=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/internal/lsp\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/internal/lsp/fuzzy\nR:input.go\nZ:Q1KLmay+BcVbBzmxwS/O9H7ASdyKQ=\nR:matcher.go\nZ:Q1Hvz2BT2/hhoqoFgh1m+Z1NkcpQs=\nR:symbol.go\nZ:Q1FjoWUza2H8Ym1jklXCapDS2J7eI=\nF:usr/lib/go/src/cmd/vendor/golang.org/x/tools/internal/typeparams\nR:common.go\nZ:Q1TlbCtp9Rmfb+nqTpZuIGHnRINEo=\nR:enabled_go117.go\nZ:Q1qeLtpHSTRJHhNr/C7jmLDqsf63E=\nR:enabled_go118.go\nZ:Q1vf7XYCUePsFzpWK9RAfTwbxDsB0=\nR:normalize.go\nZ:Q1GApHr+k4LlrRi0nsnCMMuR2WCPE=\nR:termlist.go\nZ:Q1OHtrmXsMMDqAlFxj10HtGSh+snI=\nR:typeparams_go117.go\nZ:Q1omAA5ZgQkzIuKPJoQvliy3pjVTQ=\nR:typeparams_go118.go\nZ:Q1SxLowyv/LE5hca5scOxEmIq0eC0=\nR:typeterm.go\nZ:Q1lM2e/qDPwY7jlho7PGwK0ZJOTIs=\nF:usr/lib/go/src/cmd/vet\nR:README\nZ:Q1kb65+hNThw+NwuFAvn4PUxAZcpQ=\nR:doc.go\nZ:Q1OAftgFegYimRYgUKJg2bEeMo4pY=\nR:main.go\nZ:Q1BDpqoxwNtbV+708Hbxg8j7SRlLA=\nF:usr/lib/go/src/compress\nF:usr/lib/go/src/compress/bzip2\nR:bit_reader.go\nZ:Q1e/yE7BGJ9iQDVv9Jg/Jp1M2c9bo=\nR:bzip2.go\nZ:Q1Mvt6SLAF44zMmSieVlpTe2dZ6uM=\nR:huffman.go\nZ:Q1h2mZWHFS5rWDdPx/QUEBK6z1RB0=\nR:move_to_front.go\nZ:Q1Is9DX7ur+PwaggTTHMTloSIfbY8=\nF:usr/lib/go/src/compress/flate\nR:deflate.go\nZ:Q1w40Y74dP79Y6sJom1x7G2WLA13M=\nR:deflatefast.go\nZ:Q1h6leBWARNJ6B+jpG5T+lVq6Z5vo=\nR:dict_decoder.go\nZ:Q17eDND3R4eofyGXsuYyb/7gJCSqE=\nR:huffman_bit_writer.go\nZ:Q1Z/cv0/cplqhDQceM36tgU7CzxVQ=\nR:huffman_code.go\nZ:Q1KW8pBnA3ZF37kTKRb1On1bLoy2U=\nR:inflate.go\nZ:Q1H/vrwnI7kL44ECETcjzUS2RwOyM=\nR:token.go\nZ:Q18Eiw5Ob6X8917WwI5ESdQs2PwvU=\nF:usr/lib/go/src/compress/gzip\nR:gunzip.go\nZ:Q1cfjy1UqWAFCqos+ulvvlEOCkCUY=\nR:gzip.go\nZ:Q1pm4gQCtE39d0gV4JlreaooRKDPU=\nF:usr/lib/go/src/compress/lzw\nR:reader.go\nZ:Q1Btqo7ziDxQdGlFKEdiB+nTaNS2E=\nR:writer.go\nZ:Q1w/5RPnnTcJxVdGODgQ0SzQ8idZ0=\nF:usr/lib/go/src/compress/zlib\nR:reader.go\nZ:Q1esMO/eWxQ/96mfPQaCgTkrA4qWM=\nR:writer.go\nZ:Q1VSOgXpMcposOQ6lM/DN0J8sYBfM=\nF:usr/lib/go/src/container\nF:usr/lib/go/src/container/heap\nR:heap.go\nZ:Q1AlKmLiIG/o48ZOo5tt6KElifpWE=\nF:usr/lib/go/src/container/list\nR:list.go\nZ:Q1+E2hy6fKD08DtHQ1Pwfr/gpLMHs=\nF:usr/lib/go/src/container/ring\nR:ring.go\nZ:Q1tHBXFO/j8bL8F7x+zyOwKVWpX/0=\nF:usr/lib/go/src/context\nR:context.go\nZ:Q1OL0ZhxmfmaphHdcaPE7u9xy6Yhs=\nF:usr/lib/go/src/crypto\nR:crypto.go\nZ:Q1dzYPwogySQYsEG4tFBVPqUullf4=\nF:usr/lib/go/src/crypto/aes\nR:aes_gcm.go\nZ:Q1NiPFiRUBq0/ml/LIXRek9BSAwLo=\nR:asm_amd64.s\nZ:Q1WzjTp+1ddknDkaqz4hzhRgobHUo=\nR:asm_arm64.s\nZ:Q1FweOGPHdwBTq903S4QyCvZ3Gues=\nR:asm_ppc64x.s\nZ:Q1pcvRLoyyqo+BWS3Y2io1O4zAQYM=\nR:asm_s390x.s\nZ:Q1CaAVDGyOH3UtHkjO3M3AaOfMhFU=\nR:block.go\nZ:Q1BnkmILOHTnri4sZHBDBpGfiDsJ8=\nR:cbc_ppc64x.go\nZ:Q1mXMr2cZNIsDR/cx6hl679xw5Jc4=\nR:cbc_s390x.go\nZ:Q15Ie6Us/zsZWPs24F7xpB064W+bc=\nR:cipher.go\nZ:Q1k1QVfTeIBds9e6eJnb1xWBYYj0o=\nR:cipher_asm.go\nZ:Q1jNhBeVC0Vq54wjrwohslbkhgcB8=\nR:cipher_generic.go\nZ:Q1a53gO+T2vw/k2hJP8Rlb1gbQ5Rc=\nR:cipher_s390x.go\nZ:Q10NvjUU1c2lTivg3iDp2KMOJEf3I=\nR:const.go\nZ:Q1zPs+0u90lN657t6BNhdPZrsRf/0=\nR:ctr_s390x.go\nZ:Q11N9Pea8IvUllZ+wfI+t7VYUcUEU=\nR:gcm_amd64.s\nZ:Q1JVOzp2aH0kt9G6rgARdm8wPDg04=\nR:gcm_arm64.s\nZ:Q175g2Al8AIvZpPkzjlltfSCqoi4I=\nR:gcm_ppc64x.go\nZ:Q1hCDv1J0Ufd0nDAu6w/5Y/ZPkXKI=\nR:gcm_ppc64x.s\nZ:Q1LUqPJh1HSy8DRtVAouocFsIriMk=\nR:gcm_s390x.go\nZ:Q1Fjn9uJXdX6Txu7jEukYkBAYAosw=\nR:modes.go\nZ:Q1axUCZJHkxzU8g/kh2BVgCwT+QAg=\nF:usr/lib/go/src/crypto/boring\nR:boring.go\nZ:Q1hAe6C4fV7fGKbeNcFc2dV3xBzWI=\nF:usr/lib/go/src/crypto/cipher\nR:cbc.go\nZ:Q1cBG674EUeKQA0s61ZmRhOzKAT50=\nR:cfb.go\nZ:Q1R62vBxhJXwrZvKNr+hD9pFb670U=\nR:cipher.go\nZ:Q10E1il093Hz/h1iajxfionkbKqXI=\nR:ctr.go\nZ:Q1Se8TPCxxzE4nFFJqR8Ic0i5exbI=\nR:gcm.go\nZ:Q1WnGKwXgfqfYAfJDnXCAmlKwh7Ag=\nR:io.go\nZ:Q1H4Z23EdWw3/J04slMrjR2SbdbTw=\nR:ofb.go\nZ:Q1/plHv+MLeuX9boX+AHxto1wypf8=\nR:xor_amd64.go\nZ:Q10hBACvJJmfyZ/TRKKtNzCjzN8A4=\nR:xor_amd64.s\nZ:Q1ykgMCfbWhUwaJaoaq9Xoq0AhpOs=\nR:xor_arm64.go\nZ:Q1Uc06BthvNxw9qqQBsvaFkrvv4W8=\nR:xor_arm64.s\nZ:Q1kgie2Qz/MvVXTV8/SO955vUD2Kg=\nR:xor_generic.go\nZ:Q1dzui/QLmFy/p7MsdFwHyx3QAT0w=\nR:xor_ppc64x.go\nZ:Q1I/x+e6hOiCrVPvg16D2guPI4Nlo=\nR:xor_ppc64x.s\nZ:Q19yo+Kxttd3s3ShyCcjHVN+qTNPY=\nF:usr/lib/go/src/crypto/des\nR:block.go\nZ:Q1q3MUEJ9GIsFpFd0jbg6krmZugsQ=\nR:cipher.go\nZ:Q1bQV0PIR+DNxXR1i9pjyDKH+q/aY=\nR:const.go\nZ:Q1F8BYkeodUYr1Ipc+ewsofVyCvD8=\nF:usr/lib/go/src/crypto/dsa\nR:dsa.go\nZ:Q1BnVyVQuxp/z2zDqcYFT5Hh2/QtE=\nF:usr/lib/go/src/crypto/ecdsa\nR:boring.go\nZ:Q1rLJ1Sebz46RozNELT+GRfJXFT40=\nR:ecdsa.go\nZ:Q117hlszv36QLcodvHpfGHantLMt4=\nR:ecdsa_noasm.go\nZ:Q1/ILofUpwrcS7N/Q20/hJoveEmKk=\nR:ecdsa_s390x.go\nZ:Q1dFzIe+b011z1aQAcu4h5QPSkSxo=\nR:ecdsa_s390x.s\nZ:Q1dsxhPDE37IfeDBnvKETzTCXU7MA=\nR:notboring.go\nZ:Q1mzUKsQUFKWEMJIyQ2eSHQt1QQWk=\nF:usr/lib/go/src/crypto/ed25519\nR:ed25519.go\nZ:Q1KNLZyEe25CQsVyPt3v1tsdmT3DM=\nF:usr/lib/go/src/crypto/elliptic\nR:elliptic.go\nZ:Q1TIDBppHrAPY7r6JnH2uD5iECqw4=\nR:nistec.go\nZ:Q1SLDr6cR8ZIb1aqWfxMEBOrnqMXU=\nR:nistec_p256.go\nZ:Q191tw+h/jaCXxkt/UYae17wteiVg=\nR:params.go\nZ:Q12KKoSH0Kd58bhRSE6OtpbdoYRA8=\nF:usr/lib/go/src/crypto/hmac\nR:hmac.go\nZ:Q1d5rzEZOHHuPTnnYvV7gnqTwrVgs=\nF:usr/lib/go/src/crypto/internal\nF:usr/lib/go/src/crypto/internal/boring\nR:Dockerfile\nZ:Q1dofLiQKzPGQuABwNuieiJGrl6mg=\nR:LICENSE\nZ:Q1rbvb2fkxgcHntlSfVwI/qm1QDSY=\nR:aes.go\nZ:Q1W3am1FHaJEIkIp3eppFb+28Dp74=\nR:boring.go\nZ:Q1sdY5D+Q4+SvgdTH8UrRwwbJQFik=\nR:build.sh\na:0:0:755\nZ:Q1adWzOMUd1Se94dQUSrHUl41ckwM=\nR:doc.go\nZ:Q1DVGLMv2olnEXg+4h9wCZgLS7FMk=\nR:ecdsa.go\nZ:Q1ogVDZYoJxId9XdQTxfXQs8M0BFY=\nR:goboringcrypto.h\nZ:Q1reAIkiPAvri7bSUdFnXTt9c00e8=\nR:hmac.go\nZ:Q1zKx1TfSeF8Fic37cnA/+BT3e+D0=\nR:notboring.go\nZ:Q1RUqrtLmQvbNBOl/3dmiqMoROQQA=\nR:rand.go\nZ:Q1hATF37kf5Pm4irS7jE6MK1VfG44=\nR:rsa.go\nZ:Q1jbz6i28M2ZaQU+ZHPbFJDTghwC8=\nR:sha.go\nZ:Q1k0IXcc8GsswvFfXV2IMapX5dxYs=\nF:usr/lib/go/src/crypto/internal/boring/bbig\nR:big.go\nZ:Q1sEpaICVXQzPnrN6zj9yLTAxv6HM=\nF:usr/lib/go/src/crypto/internal/boring/bcache\nR:cache.go\nZ:Q1Q0ZU9BcOBpKrbKGGAFDYvOWIQnY=\nR:stub.s\nZ:Q1vNm+6SicZSXbDqHzlCM7j1BEe/0=\nF:usr/lib/go/src/crypto/internal/boring/fipstls\nR:stub.s\nZ:Q15qzgrFvj+2QODQpPWHpvyY73yn4=\nR:tls.go\nZ:Q1GS/t1tFrfU91f0MnoW7Ow2lL1Tg=\nF:usr/lib/go/src/crypto/internal/boring/sig\nR:sig.go\nZ:Q1YxC16KoUXzmbH+4+EGyGrrlK820=\nR:sig_amd64.s\nZ:Q1cncQBYSbWjKlpcvm+AfuAh8w6eg=\nR:sig_other.s\nZ:Q15R6ma1frmXusDGHeWs7kyTjngyw=\nF:usr/lib/go/src/crypto/internal/boring/syso\nR:goboringcrypto_linux_amd64.syso\nZ:Q1VpNLGQkYaESPwwEn6cX3xP46mqw=\nR:syso.go\nZ:Q1KMD6UAz5Nx8IZBXyuGoZ2It7UMM=\nF:usr/lib/go/src/crypto/internal/edwards25519\nR:doc.go\nZ:Q1RcoBnX4SBhiAUb/gY40Ai4zbpfw=\nR:edwards25519.go\nZ:Q1iZsshxCtTltzvWJL1TtaHiH+/Cs=\nR:scalar.go\nZ:Q1BBFgPaUiYqXc869XniNSgXLn2HU=\nR:scalarmult.go\nZ:Q1ad68BlnHAnlIadV/9JTfJN1MKyc=\nR:tables.go\nZ:Q11ccMwQMhTlSz3RiDExNr1XdvO6I=\nF:usr/lib/go/src/crypto/internal/edwards25519/field\nR:fe.go\nZ:Q16yyRgv1Biy2Gf9ZZDeysSsl6120=\nR:fe_amd64.go\nZ:Q1aX1oqEm7CnJ45veWnh29iLEix9Q=\nR:fe_amd64.s\nZ:Q1ijcAlmxskGNbdbWV8qLEH8+bOsw=\nR:fe_amd64_noasm.go\nZ:Q1bID3u2YHI52udlXZKmTU60JpcOY=\nR:fe_arm64.go\nZ:Q1I5NfnnG3pUE1CtO6KOCGNuYCLA8=\nR:fe_arm64.s\nZ:Q1RreUMIcI1YSzo0ueX/zj30MToy8=\nR:fe_arm64_noasm.go\nZ:Q1Al6QwIsxEcKrMEL0zr8Lxm9VTJo=\nR:fe_generic.go\nZ:Q106hwaFCqqOoT2VYCjFztKKZnOX0=\nF:usr/lib/go/src/crypto/internal/edwards25519/field/_asm\nR:fe_amd64_asm.go\nZ:Q1Ob+xormeaszmq5qoVF5zQftH+zw=\nR:go.mod\nZ:Q1INFWyLsVr4VVs3nhZLX2A7WnnZg=\nR:go.sum\nZ:Q1JmR6eH8SRci03SJ74ej6DrjMVU4=\nF:usr/lib/go/src/crypto/internal/nistec\nR:generate.go\nZ:Q19olmsHU51Rk0J1VphgjAiDQMHy8=\nR:nistec.go\nZ:Q1suQt/LTGAbtwPkwFhi8GSyjEE3c=\nR:p224.go\nZ:Q1JeDQh0iz+URnHNwhvwEwNRTbj2M=\nR:p224_sqrt.go\nZ:Q177tRiVWHoaXS3hTWIb4WOh+4cuc=\nR:p256.go\nZ:Q1wfMPD++cRyTa37AS1HTYVt7UCH4=\nR:p256_asm.go\nZ:Q1rynXcnldzYfIR+1jSGO6Z1ID9Dc=\nR:p256_asm_amd64.s\nZ:Q1+SNsQs446vn+Dnks4rhtF9SHCcA=\nR:p256_asm_arm64.s\nZ:Q1ucq0YyZiXeOuDsd6efKTZjR82W4=\nR:p256_asm_ordinv.go\nZ:Q12v3mceuLFKmP2Skfq5QL6/0OhYs=\nR:p256_asm_ppc64le.s\nZ:Q1+QaG2LZLZVXsyQQApbXNjO10/xY=\nR:p256_asm_s390x.s\nZ:Q1jTTiAuQ8H+I91PL7JQe+/NeqKHM=\nR:p256_asm_table.bin\nZ:Q1XqORtRLQIddLgPwWN0gz0BbeZI0=\nR:p384.go\nZ:Q1aQF2wSRrpTB4Ga3Z4FMl2+UFZdg=\nR:p521.go\nZ:Q1vC11wjgQUbPGMjckAuSF1aRLTK0=\nF:usr/lib/go/src/crypto/internal/nistec/fiat\nR:Dockerfile\nZ:Q1oecDp2krVV7o5BT+SEBU2BlFU/0=\nR:README\nZ:Q1bzPTR96m8Fw38G4del6FaJu5ELI=\nR:generate.go\nZ:Q1VGShTcFHb2FRW5yhxxTfRkIXpJ0=\nR:p224.go\nZ:Q1FMbVaACg65Em30XuD9QXrkfpGtA=\nR:p224_fiat64.go\nZ:Q1MfbkwMaqIWtnZqtEZWJ4uaWVaOE=\nR:p224_invert.go\nZ:Q1hkaFTFnBcsLRROdA2igZCr9kmcc=\nR:p256.go\nZ:Q1znHtQXJKvNqcdKBVXmf0CVjJw5Q=\nR:p256_fiat64.go\nZ:Q1/fxsmW4evgwImaG9UskZwLyhWcc=\nR:p256_invert.go\nZ:Q1ywwUzaATsC3DlmxJXmkdVoyfCxE=\nR:p384.go\nZ:Q10Vi2WtwccI9Y7YhV0B7YiI8zO9Q=\nR:p384_fiat64.go\nZ:Q11tEb1wCmIcNjHJDG//b3LQhdwjo=\nR:p384_invert.go\nZ:Q1cqg42mrDvjPOev/Jn8pEKOnB2aI=\nR:p521.go\nZ:Q1EAftHt/l0YM4NHvHUemjLlsp6XU=\nR:p521_fiat64.go\nZ:Q1kyjpvsz3NRP+CL7Xt5jtHuNzHKI=\nR:p521_invert.go\nZ:Q1c006ETgWMFDKfQwDgvwfUdqL1+0=\nF:usr/lib/go/src/crypto/internal/randutil\nR:randutil.go\nZ:Q10951+0OU1o9/ZTJU1JuR1f6RsSc=\nF:usr/lib/go/src/crypto/internal/subtle\nR:aliasing.go\nZ:Q1uztHAlpQV2Lr/YsspXRKCraTaB8=\nR:aliasing_appengine.go\nZ:Q16c1A9qDknV9hpA+mXXvm3GW8xbc=\nF:usr/lib/go/src/crypto/md5\nR:gen.go\nZ:Q1kdym3ix3XiDBXsl9ugIem05sAdA=\nR:md5.go\nZ:Q1eEc/yMYQFacZTJET1UTiQ1XYiRE=\nR:md5block.go\nZ:Q1YoM/wGoMzDmgmW/ALPoOeXxxzLw=\nR:md5block_386.s\nZ:Q1rcLshFeO9lJsH61Xyz6Nrq7R5Ww=\nR:md5block_amd64.s\nZ:Q1gycIdRyXXwGlb2domp/2oFOnvgE=\nR:md5block_arm.s\nZ:Q1vV/c6Itq5iEebOOLcnV0KeCjWxk=\nR:md5block_arm64.s\nZ:Q1Hz27GXl408QbJ+nNahTlAulkAfk=\nR:md5block_decl.go\nZ:Q1KlWcD48JXiYPlu5B1Mmbm7Nbegg=\nR:md5block_generic.go\nZ:Q1BuSNGkWlJpwMpC4U06mvTlV5GoQ=\nR:md5block_ppc64x.s\nZ:Q1Biq0SkN0TJhWYLDDytiGp5gu3do=\nR:md5block_s390x.s\nZ:Q10o8E0cMhPVTV5gkVMu87+upqEYc=\nF:usr/lib/go/src/crypto/rand\nR:rand.go\nZ:Q1o7xHJo6Rw8D/fpWxeCee97NAbSA=\nR:rand_getentropy.go\nZ:Q1gmKpbtRnk3e7D0H3A2Wy6LTR2C0=\nR:rand_getrandom.go\nZ:Q1JDiVpM+oqfsRCQ+Z1EoIMQD04i4=\nR:rand_js.go\nZ:Q1axtQC/7ZHfqXIvk7I7VD6yly0GU=\nR:rand_plan9.go\nZ:Q122phdrAkd6+A70mUG0pTIVpHNLo=\nR:rand_unix.go\nZ:Q1rPUtcmjBaqf8/8DV80w/zPMqTzA=\nR:rand_windows.go\nZ:Q1Vre2mdIzAWBpFZrYwuftaJYwTeM=\nR:util.go\nZ:Q1rhNMeFkjsKBYGrMu34np2vl+ArA=\nF:usr/lib/go/src/crypto/rc4\nR:rc4.go\nZ:Q1Ja3iXNScwT/nmn5mcmEOGNHJ1uU=\nF:usr/lib/go/src/crypto/rsa\nR:boring.go\nZ:Q1nKg1MVurwrd4NiGj+nnFNIvA5Wk=\nR:notboring.go\nZ:Q1Ya/6knEbKO/mSgsRrHXAY45tN8k=\nR:pkcs1v15.go\nZ:Q1BrPXdYEAdf9kKDClkFpcuTmzVvc=\nR:pss.go\nZ:Q1tBN6w+DLo8cEmgWjsF6Qoe7MVW4=\nR:rsa.go\nZ:Q1HFdraLlsLO5t9b9o8w0GIq3N7q4=\nF:usr/lib/go/src/crypto/sha1\nR:boring.go\nZ:Q1eTr6EqlhuN9Fw4pqF5RwJKa3LsI=\nR:notboring.go\nZ:Q1HBtUNMLjsROfmgDLYvPvJzyTy2I=\nR:sha1.go\nZ:Q1/b55fbqKG4ANjvIGe9yGho87k9Q=\nR:sha1block.go\nZ:Q1+ZeEyuPMu6jArsC8ZGtl7AMmEBE=\nR:sha1block_386.s\nZ:Q11cd3qvn0oZUjxVH7/1OFCH4TQKM=\nR:sha1block_amd64.go\nZ:Q1YBVejsTNAg9sv26qAcHMFVp7iNU=\nR:sha1block_amd64.s\nZ:Q1xMwUO0U3qnxzFM58l0f2OA9SiPo=\nR:sha1block_arm.s\nZ:Q1QZi9nls7tGxUorwp3mSzreNWnew=\nR:sha1block_arm64.go\nZ:Q1n5R67jjbmUTnW5PXiO8P0nU0ZMM=\nR:sha1block_arm64.s\nZ:Q1JC/ZFM2zZ/7okwBst+AIJTLMEuc=\nR:sha1block_decl.go\nZ:Q1CcXUskmFjLcmgZDbyuOTupgHCAI=\nR:sha1block_generic.go\nZ:Q1KJr20tVIJvyxjuv+Vs/GQLb2X1c=\nR:sha1block_s390x.go\nZ:Q1hWF1ACSsKMjKud5YJDft6OE2SYc=\nR:sha1block_s390x.s\nZ:Q1WjN7NYboEvAcA8yatQnzxgnM4IE=\nF:usr/lib/go/src/crypto/sha256\nR:sha256.go\nZ:Q1VQxTl5Za6IRn3oPSFDW4dzSim4o=\nR:sha256block.go\nZ:Q1xXzsILZasrZFVsSYr9PrDDZC+b8=\nR:sha256block_386.s\nZ:Q13NCI2WHXqwkyi0kGU8CPr1Ecqwk=\nR:sha256block_amd64.go\nZ:Q1oB8Pw6CoJy4RDMB5U9IB6fZTmkY=\nR:sha256block_amd64.s\nZ:Q1bNNDlDua8+rLh8FXxFbQL8Smj/Y=\nR:sha256block_arm64.go\nZ:Q1YKHHjAozPYWtThn45HkTlIrtAAE=\nR:sha256block_arm64.s\nZ:Q1Dx1O94rKkSBTnKYkOfK/++XMIMo=\nR:sha256block_decl.go\nZ:Q1G+UiXEnkgfuAKBEpZ5M2mcd46ZQ=\nR:sha256block_generic.go\nZ:Q1KYb1tIkXJn8s0CZBa1nM8ue+M/4=\nR:sha256block_ppc64x.s\nZ:Q1VrX878NzHTFqoU6nGhByuLMM4Sc=\nR:sha256block_s390x.go\nZ:Q1xX/fMtyWUJUys9FdlogExhV86J8=\nR:sha256block_s390x.s\nZ:Q1lpE9hRlurR8vCVgka9HMUrcKemE=\nF:usr/lib/go/src/crypto/sha512\nR:sha512.go\nZ:Q1RV2sZdI5x+kw0e+x/BV6ojY+64A=\nR:sha512block.go\nZ:Q1je4PWC9zLX7FMj1A7Ulk+RvDn0o=\nR:sha512block_amd64.go\nZ:Q1g97+aG78w6QIP9vt3Xr/YqZRJlk=\nR:sha512block_amd64.s\nZ:Q1AU1ISg7HM8if4ITDd3iHyouCth4=\nR:sha512block_decl.go\nZ:Q1DqlGcXq7vOuqrx/1qJfQjIBqAIo=\nR:sha512block_generic.go\nZ:Q1rtiafIWP0z8gvJua8m0HPtXEVc0=\nR:sha512block_ppc64x.s\nZ:Q1m/8s+lC3j0W9CKRaRnC5xWrsZhQ=\nR:sha512block_s390x.go\nZ:Q1aN5dvDOBuL9Hu1Az+i0bJPJEBZw=\nR:sha512block_s390x.s\nZ:Q1SvEEW6ReJKNfFlrvsTtA5VWITXs=\nF:usr/lib/go/src/crypto/subtle\nR:constant_time.go\nZ:Q1e+THuXbQouc5E7PXdb1rBIh1D7g=\nF:usr/lib/go/src/crypto/tls\nR:alert.go\nZ:Q14ruS2uJ6+MjuRcMfYeMQ51nibxQ=\nR:auth.go\nZ:Q1yuuCOMbj5k9ObUONu+FnBIiu8ic=\nR:boring.go\nZ:Q1tF7QGLU0/BGv/2A+iTylNMIfgec=\nR:cipher_suites.go\nZ:Q1yb0D43Xj0i6rKuZaISyuXlswCJA=\nR:common.go\nZ:Q11ZFyBuRqoBx93HsmpuqjwvJnyzU=\nR:common_string.go\nZ:Q1yhZdngCwvfmqK9s0PsZ0Ge1hJ/Q=\nR:conn.go\nZ:Q12v3eC9su+D3FaeuS7qPmApYzp/U=\nR:generate_cert.go\nZ:Q1TvWrzdxUlhgP7QTVpqCVwZpYpkE=\nR:handshake_client.go\nZ:Q1QcV3jcVM/WZE+VtE5ruEVIfS+wE=\nR:handshake_client_tls13.go\nZ:Q1+h4mcwEac6XaQ7gw0ECWXu8QKlE=\nR:handshake_messages.go\nZ:Q1N9/7p49zh4MxJOoo206GJdC7XWg=\nR:handshake_server.go\nZ:Q1YJdSSUBqNbzKw2N9v7v9HNq3Tf4=\nR:handshake_server_tls13.go\nZ:Q1U+WHtaw5NGUuMN174Vav78N3//0=\nR:key_agreement.go\nZ:Q16EIAGM+lMeEvj2rQfaP7RkDHkz4=\nR:key_schedule.go\nZ:Q1bqaU24ozn6jwgRhQHBY+JVve9fU=\nR:notboring.go\nZ:Q1StsSrR2wJGlUEqENPxhYT5PIK7A=\nR:prf.go\nZ:Q1D2hZhf5qkHrP1kWrHSFQijsnPCs=\nR:ticket.go\nZ:Q1maTURdr3v06+eDXmp3D6++amNKg=\nR:tls.go\nZ:Q1fmET3TaJLYoEYHxu6z7D3tTWiOk=\nF:usr/lib/go/src/crypto/tls/fipsonly\nR:fipsonly.go\nZ:Q1YXxAK6W9C2MqhCkLsmQtxSxLjE8=\nF:usr/lib/go/src/crypto/x509\nR:boring.go\nZ:Q1S2yAY8D+1sGN4ZCkvYhhM3ApC2o=\nR:cert_pool.go\nZ:Q1MzxSKrjijWflyRECAXGYDXtkHWk=\nR:notboring.go\nZ:Q11U4dwKP8MuvdXaewIn2ca4fXszM=\nR:parser.go\nZ:Q1EnE45mZuO9NbtBQ4JiEJqLVulq4=\nR:pem_decrypt.go\nZ:Q1I9WTH03wslC6qpdiz+IXwK1yMtw=\nR:pkcs1.go\nZ:Q14FvU4FtBJgZjSjizysyBUXBTd+g=\nR:pkcs8.go\nZ:Q1jY9XzLrym4Up+z0joQO5FZsEcpU=\nR:root.go\nZ:Q11wlqndztAx738HvfhbdZLoDsegU=\nR:root_aix.go\nZ:Q1Ai6vA9t00DcNltWEmRE2HR6gkZY=\nR:root_bsd.go\nZ:Q1L5suOxhErD8xV4lsElmflpFHpTk=\nR:root_darwin.go\nZ:Q1JT88k8XrnWD/b0BfCR285DymTA8=\nR:root_js.go\nZ:Q1f+4D+2gUDV7AODzhrPNWAuuZAn8=\nR:root_linux.go\nZ:Q1r30dmbBoAi8BmfsKT+htYeUYsMc=\nR:root_plan9.go\nZ:Q1VwUY95i82bWPH893sLevcPADf14=\nR:root_solaris.go\nZ:Q1jMusSyKEmckLxXQIM8ti5xuGF9c=\nR:root_unix.go\nZ:Q137wguOwlWITR8a1WKHGxYcluOOk=\nR:root_windows.go\nZ:Q1v7X+zc7GYeGWl7cf9VH5Kj/S8HI=\nR:sec1.go\nZ:Q10OWukWZIDJ4Z0lNa8Jq7FBAb2ss=\nR:test-file.crt\nZ:Q1IeAM+Xta2eSKkfxXO7y9yefbzrU=\nR:verify.go\nZ:Q1GKMgnn66Yt1WL9yxllm7VFE0X3I=\nR:x509.go\nZ:Q1C4Yn1XpJ1xia1wWCWGKxCWrzNBo=\nR:x509_test_import.go\nZ:Q1KoUBBaNJf9QEb3P5xKyX+kCT1Iw=\nF:usr/lib/go/src/crypto/x509/internal\nF:usr/lib/go/src/crypto/x509/internal/macos\nR:corefoundation.go\nZ:Q1jZOGyacmnlZcMHTaorXdicAU+JU=\nR:corefoundation.s\nZ:Q131WlPMA/edn8GHbuf6i2AePicWU=\nR:security.go\nZ:Q1pZr50AR1yTxcCASECEFdu89ienA=\nR:security.s\nZ:Q1/S9F4eMPMNM734XBrchq4esq4lM=\nF:usr/lib/go/src/crypto/x509/pkix\nR:pkix.go\nZ:Q1fV6PBQa7AIHB1RhdgWK4z6gXS6M=\nF:usr/lib/go/src/database\nF:usr/lib/go/src/database/sql\nR:convert.go\nZ:Q15JGXlIi0yjR+VzrkIerH1qedThY=\nR:ctxutil.go\nZ:Q1g+MmG+8kuF2wRIfDaMWHweVKrbM=\nR:doc.txt\nZ:Q1jfEceymnY66z7pwM/89C0nBGsMs=\nR:sql.go\nZ:Q1HYkjxWNqXUuVyplAF6cMHdWP9QI=\nF:usr/lib/go/src/database/sql/driver\nR:driver.go\nZ:Q1QjWpaJSXbkTT5lzocu4IV4o/Nls=\nR:types.go\nZ:Q1YFkwA2Fj0zy1NgINIXNDXFMZJ1U=\nF:usr/lib/go/src/debug\nF:usr/lib/go/src/debug/buildinfo\nR:buildinfo.go\nZ:Q1FWoGbDgFgI5ecjYRFWgADtk5LTw=\nF:usr/lib/go/src/debug/dwarf\nR:attr_string.go\nZ:Q1O9VSIQjGMOejPcXOY7+Nm/vV0JA=\nR:buf.go\nZ:Q15ZH8Yo/7ZpiRs2BR2V0mpRKk0ZY=\nR:class_string.go\nZ:Q17n9Iq8L5W4KilINkdKpKoAV5vHQ=\nR:const.go\nZ:Q1J4+qKKXoWQYmzkj/DObtDB2Ai2k=\nR:entry.go\nZ:Q1DCHcaTP0Ah944XF3uBk2kPk/Dw0=\nR:line.go\nZ:Q1Jlnl3ms9svxWJROp6T9oGfXOyL4=\nR:open.go\nZ:Q1WFSo2wfUY04PvmeUXEJQKxOK3BE=\nR:tag_string.go\nZ:Q1SRkqwbGE+9eyujGCVgoBQSMj8ao=\nR:type.go\nZ:Q1CQl3LIVSNl6rSt1XRjWLqiryL60=\nR:typeunit.go\nZ:Q1OO1A741u5H+P22cUf7YZHVAxEDE=\nR:unit.go\nZ:Q1kFoi5BZbPEXpohypa5DNIfQ2IIA=\nF:usr/lib/go/src/debug/elf\nR:elf.go\nZ:Q1m14q6Bv0ERc6UNbk0QeJOu9nIys=\nR:file.go\nZ:Q1A2d4NJ8UwqII2D9Oni44yy5M8hY=\nR:reader.go\nZ:Q1Ar5JBixWoIMxyxgFAGEheGTlg6Q=\nF:usr/lib/go/src/debug/gosym\nR:pclntab.go\nZ:Q1jG1H0cxeUXDdjQutFb4pl9UWgOw=\nR:symtab.go\nZ:Q1CEP/xf1pYjy+hJTzer78W/SLLkU=\nF:usr/lib/go/src/debug/macho\nR:fat.go\nZ:Q1ijczuXDvPBraVDzEjUnYAitKBFk=\nR:file.go\nZ:Q1ya4TWUopkZRfIhrwJsqP3Tedh80=\nR:macho.go\nZ:Q1OMsEGDwSsAi5KYY6qBcbrhKYJds=\nR:reloctype.go\nZ:Q1VnEvhDG+lRGejkx+rlRVVDWX5nM=\nR:reloctype_string.go\nZ:Q15pBBud8qOpNyW4ZT9g5GABXUpnM=\nF:usr/lib/go/src/debug/pe\nR:file.go\nZ:Q1ymzfJ52R6yf6YB8lNJB2A3sdMNc=\nR:pe.go\nZ:Q16v9RKu0ZcC7QYhBgJnQ6WKZWpwo=\nR:section.go\nZ:Q1YJbMRONvw5Tu24gBfDgsqqVPel4=\nR:string.go\nZ:Q1UVAQPiQflw7YIhfwK3pe2+xYo9I=\nR:symbol.go\nZ:Q1F0Je5kJ5D4HGi/yVpX1QYmsi+aA=\nF:usr/lib/go/src/debug/plan9obj\nR:file.go\nZ:Q1y0BrmrAObsvExpSvFqMX50XY44E=\nR:plan9obj.go\nZ:Q1bDZopMtAAjDWzVgLErvECpXGML4=\nF:usr/lib/go/src/embed\nR:embed.go\nZ:Q1wsb6f+4t9L2gk1YW5o5W/05dR8A=\nF:usr/lib/go/src/embed/internal\nF:usr/lib/go/src/embed/internal/embedtest\nR:concurrency.txt\nZ:Q1sKFt2DruEZ89A1wpWTS3wvh0DXg=\nF:usr/lib/go/src/encoding\nR:encoding.go\nZ:Q1e0OStLW5O7X4j0kku/Q/FdF0sqY=\nF:usr/lib/go/src/encoding/ascii85\nR:ascii85.go\nZ:Q1SW5cQZMKYFHVN/pL0JYLgvdu9GE=\nF:usr/lib/go/src/encoding/asn1\nR:asn1.go\nZ:Q1zSRFasdUBUh/AUGZTs9iFHCR7QA=\nR:common.go\nZ:Q1E8f42Sw0gGWv5ZCeLIE72jkyzek=\nR:marshal.go\nZ:Q1FQavpt03cUze9TVRzrl8eJ25BuY=\nF:usr/lib/go/src/encoding/base32\nR:base32.go\nZ:Q1NTnmAqC4t3ed4XGEO40t8jFjPxI=\nF:usr/lib/go/src/encoding/base64\nR:base64.go\nZ:Q1Tk2frFJxUZ2auwNbbW8DzrAtDuk=\nF:usr/lib/go/src/encoding/binary\nR:binary.go\nZ:Q126sbbOISbsyFnLUNOZBLdwfBos0=\nR:varint.go\nZ:Q1ydjol/EvR0SEbc6/VLSG7l21YCs=\nF:usr/lib/go/src/encoding/csv\nR:fuzz.go\nZ:Q1KDwX0IXcDm6CMLHP6tBmng8DCjs=\nR:reader.go\nZ:Q1cMX4+faBAT7jlB/g0BVNwc5CDo4=\nR:writer.go\nZ:Q1rr5AHEt6DObGo7+N0P/oHQOmujs=\nF:usr/lib/go/src/encoding/gob\nR:debug.go\nZ:Q1xkYdqOX+lmC1Y/zq8tUWPlesRek=\nR:dec_helpers.go\nZ:Q1WF807RB+9IY0nd17tDXd3NMoRQA=\nR:decgen.go\nZ:Q1nPpBenpm2fjksTgL1G2tQyQ5WU4=\nR:decode.go\nZ:Q1tSmnZPIawTsNWHP5uSPOvucpi0Q=\nR:decoder.go\nZ:Q151pCMFUZdIk15IRiSRH9BLJjF1w=\nR:doc.go\nZ:Q17LN7dyCoY6ayP4OaPMpaKjGnaXc=\nR:dump.go\nZ:Q1w8JPdmfffUMsjFmDPSdcHV20Lk0=\nR:enc_helpers.go\nZ:Q1/oRgBQmX8RR1mOu9rZuGOeOQXnQ=\nR:encgen.go\nZ:Q1iCieNQET4EZi1CRMUYF5wOq0MiA=\nR:encode.go\nZ:Q1epTNtSKGWLj4QtD6nWg1cj2h2no=\nR:encoder.go\nZ:Q1EJEq8mXWaBbPbk+jcFmVi55TMDg=\nR:error.go\nZ:Q1E8Iu2vIp+KIh8/yuyLbfBmQdkyI=\nR:type.go\nZ:Q16kfCjq9oGhu88do7ho1eZRJb948=\nF:usr/lib/go/src/encoding/hex\nR:hex.go\nZ:Q1XHrbiSm7vS68vvojowcOIMCryR0=\nF:usr/lib/go/src/encoding/json\nR:decode.go\nZ:Q1S5Zg2F5T/n62oKHchHUnZLGMPqw=\nR:encode.go\nZ:Q1lo8ifN0JeyYBwwgThQC5tWwW+Gk=\nR:fold.go\nZ:Q1vM498F7QTl+BGXeLUOI/drKFvZU=\nR:fuzz.go\nZ:Q1I5KQM1qfYQO+37gzhi0AyoYCP6c=\nR:indent.go\nZ:Q1T/L1Vv4WvMGAvbQvehalaYOyFE8=\nR:scanner.go\nZ:Q1/vFcY51nl/G23qD9IqHukH9YwxA=\nR:stream.go\nZ:Q1F5hnxdhiP1edsQMqaK2aOOPXO+0=\nR:tables.go\nZ:Q1ISieo09AzRhagb3vF+V0jvc3/DU=\nR:tags.go\nZ:Q1IuUQY8jwqpjZdORGJmwYDS1OFWc=\nF:usr/lib/go/src/encoding/pem\nR:pem.go\nZ:Q1SFWxEkNxt89bMI28Yd5LY78fqeA=\nF:usr/lib/go/src/encoding/xml\nR:marshal.go\nZ:Q19CnBDVHEpBBUAztUYdGMW02B0NA=\nR:read.go\nZ:Q1OPsPdVQAUQ67GRzr93muvOGIY+k=\nR:typeinfo.go\nZ:Q1N55Vm5UXEe0Pp4Kme5k+SPz8amM=\nR:xml.go\nZ:Q1RGMJ33qNdPPnXpKGoxV9JZvYe4c=\nF:usr/lib/go/src/errors\nR:errors.go\nZ:Q1UiMctxuOChwPihwZ7Oa738z3kz0=\nR:wrap.go\nZ:Q1qaqAB9mLjnFFh60LqfFx8lra3bM=\nF:usr/lib/go/src/expvar\nR:expvar.go\nZ:Q1fDorV+B61m88/dIwOrRbLAJE63Q=\nF:usr/lib/go/src/flag\nR:flag.go\nZ:Q1yLsDYWPaqW4CC1uDlYd/G4Ev6gk=\nF:usr/lib/go/src/fmt\nR:doc.go\nZ:Q1JgorKLTz6aJvM531F44Ro6qz8m4=\nR:errors.go\nZ:Q1B6o/VJ581AQqZLR54rpIi7KvJ6U=\nR:format.go\nZ:Q1iLoUPGjiShPvtigUQM8yA+GBKbs=\nR:print.go\nZ:Q1RB2ReeGI9Xl3RC810jV5aVKu39I=\nR:scan.go\nZ:Q13Gj92fUH6wq7N5wD6TMJlKsJCcA=\nF:usr/lib/go/src/go\nF:usr/lib/go/src/go/ast\nR:ast.go\nZ:Q15Uw279zKehj7gt4hrU2r1otnfV4=\nR:commentmap.go\nZ:Q1szpamVxshO1D9XVoSr3/YHWMHQI=\nR:filter.go\nZ:Q1o/dDd90LR3BXl/UJA58hBnjbDfk=\nR:import.go\nZ:Q1OxQESX6FuNCvkXCAxsJ0cgTgmfo=\nR:print.go\nZ:Q1I6r2j32Uw1O8r8rMArNx/mYo6WM=\nR:resolve.go\nZ:Q1QLeTgt4PPetuekCNEUreLmYxWRM=\nR:scope.go\nZ:Q1UNOeugQA47u55/GT7mLtIIzcEPE=\nR:walk.go\nZ:Q1YGyYtaO8vFPQ00Y/72OxMAg5VRY=\nF:usr/lib/go/src/go/build\nR:build.go\nZ:Q1ixqrgjDvNFIiTyG5/u8oXbRFnzM=\nR:doc.go\nZ:Q1LA9Womv0hEZmezJzAqL2SX0bYuw=\nR:gc.go\nZ:Q1kFoYdo2W7sTEyeYg6LZWX9RdvnY=\nR:gccgo.go\nZ:Q1sOeJZk6V8+NjkAM09rNBqwUWX+Q=\nR:read.go\nZ:Q1cHIeCyPfKcvkFLwntMiEEbXi45Q=\nR:syslist.go\nZ:Q1ra77kd2seb5S18xxLEh/YJ36Uy4=\nR:zcgo.go\nZ:Q19aZUhCAMj/FYyBJGswW/bFpAjro=\nF:usr/lib/go/src/go/build/constraint\nR:expr.go\nZ:Q1iKIlZp3A8bb7Vi3wP9En+WiA3GM=\nF:usr/lib/go/src/go/constant\nR:kind_string.go\nZ:Q1/1FIXtz02Pz98w2244TV7P5e3Hk=\nR:value.go\nZ:Q15tWIMi/UIRXPbgZvA8zBbvmLY/Q=\nF:usr/lib/go/src/go/doc\nR:Makefile\nZ:Q1w1TTBPK/xvwbo90skzsbjHj8PQU=\nR:comment.go\nZ:Q1bsMfWIeBtyLNeJjXCLJN2wKlcZU=\nR:doc.go\nZ:Q15MYMwAcYYqeDgoPt3uIMMjRdf58=\nR:example.go\nZ:Q1OH8KiszRtnlzX4OoUEH6XHH0CGE=\nR:exports.go\nZ:Q1ScW8InoE/xMCHJTtjxT83u57Mmc=\nR:filter.go\nZ:Q1l5P0BMK5lFpKYOfbnAG7P3I+p8M=\nR:headscan.go\nZ:Q1ya+7X9eThiIibH5d3vyiF8ZC8iM=\nR:reader.go\nZ:Q1EnVDRpzrL07uJg1vzBZQ1w/8R+Q=\nR:synopsis.go\nZ:Q13wd8pRtCTmtOQatnYX54fKKQ6io=\nF:usr/lib/go/src/go/doc/comment\nR:doc.go\nZ:Q1ZXQZG5Dx6DBIRrvmDXbsTGPTA24=\nR:html.go\nZ:Q13c/FVvancbF5xtipKiEuj5YMOCw=\nR:markdown.go\nZ:Q1ilMFzlsWRRKlyTDoA8K+REvAKWI=\nR:mkstd.sh\na:0:0:755\nZ:Q1BVnS/oD45Fr/DNf7l5fwXtg+8KM=\nR:parse.go\nZ:Q1EcB2ytCgs+oXhz+T5cX4DnjpQOY=\nR:print.go\nZ:Q1mvP47cY1V6y5FcxMTuKfU6xzk8M=\nR:std.go\nZ:Q1mgiaDuTAjdX/+QFRewK3FdCg8e4=\nR:text.go\nZ:Q1uRDJW2wLGNNWD6YUs8970ndt7oE=\nF:usr/lib/go/src/go/format\nR:format.go\nZ:Q1C4Af4xIN2dpawxO2srrp+wpyFMc=\nR:internal.go\nZ:Q1NvN+AtkjcRvJPkQ45jGUV4xZwTU=\nF:usr/lib/go/src/go/importer\nR:importer.go\nZ:Q13Om0G1K3AxsyiH4iYkvRuCwPdIk=\nF:usr/lib/go/src/go/internal\nF:usr/lib/go/src/go/internal/gccgoimporter\nR:ar.go\nZ:Q1jBD91ax61elJprg3A1I2R1LBPas=\nR:gccgoinstallation.go\nZ:Q1nOv73Y7TypBEiu/GIxG7zP2pmpA=\nR:importer.go\nZ:Q1SGFyXURzUSBTY2/baT5R5VicjOI=\nR:parser.go\nZ:Q1nSsTLDRiaVWzCsuP04i/9jx3Rbk=\nF:usr/lib/go/src/go/internal/gcimporter\nR:exportdata.go\nZ:Q184x9a0SiqGuldSfNEMxGHFEJYz0=\nR:gcimporter.go\nZ:Q1KDV9JQGUe/3hYc9bP53c6N6WRas=\nR:iimport.go\nZ:Q16NLEEfJFeukpUmMa/UMhGrVFarc=\nR:support.go\nZ:Q1y1HNosdnC07ob3jUm4CBDVWXZUk=\nR:ureader.go\nZ:Q1RRxelQ0Kt+ypOjCYKUNnjhuNONk=\nF:usr/lib/go/src/go/internal/srcimporter\nR:srcimporter.go\nZ:Q1LqW1iebB0Y/LhBD5HUKF174CCHY=\nF:usr/lib/go/src/go/internal/typeparams\nR:common.go\nZ:Q1qXPusAaEdS/stP8DvqFH8MU4DFM=\nR:typeparams.go\nZ:Q1Ux1HkHg2hG6WTFtqqHuUbzS31ZA=\nF:usr/lib/go/src/go/parser\nR:interface.go\nZ:Q1Cf6Rl0z2F3pG2bi15Kc7ddqiptY=\nR:parser.go\nZ:Q1aiPu5TAIALdBUsEj3PjwPJ8q6Y0=\nR:resolver.go\nZ:Q1HXEg1KonjY44lMYIpxbAXfrm2wU=\nF:usr/lib/go/src/go/printer\nR:comment.go\nZ:Q1KKikpKNn0SLLOtDkwmWqlW0kd48=\nR:gobuild.go\nZ:Q1BR7U00QUdUgtkWoB7wQnEb5ck2U=\nR:nodes.go\nZ:Q1Y/hS2MXtowao2cNQSJq+pjcvTSk=\nR:printer.go\nZ:Q1b8nQUJDgGHQ6RUTthr5HCX59DAw=\nF:usr/lib/go/src/go/scanner\nR:errors.go\nZ:Q1KVZEjFh2/3POmiCBE2L6MsrvVYQ=\nR:scanner.go\nZ:Q12K7hzsA4Us2rHtGqADqJSVxHkZs=\nF:usr/lib/go/src/go/token\nR:position.go\nZ:Q1PSGsBq1uJAOouyD1zEUJ4S+hFzk=\nR:serialize.go\nZ:Q1ABvm43RzMGhsd/qgR/xjUu5WsSs=\nR:token.go\nZ:Q10IsKqEyPioaErvHMKujQBzV8/Hw=\nF:usr/lib/go/src/go/types\nR:api.go\nZ:Q1+++YFEf+/U7K9OZVwwDexo6Y0vY=\nR:array.go\nZ:Q1ePmqkgWDk2jE93iziXPh1WeLxB4=\nR:assignments.go\nZ:Q1qjKNG+zTBzE9S7c/MVal9OVyNQk=\nR:basic.go\nZ:Q1/t0NIvwFLPdY7xcIt7sZ8nkncHk=\nR:builtins.go\nZ:Q1xo0F1aghLw3AaP10WUs9HO3PLlI=\nR:call.go\nZ:Q1NQ2KosMb4CKEWSvWgxe1E19JVMk=\nR:chan.go\nZ:Q1161SN9FomLVclV3m1TEnygHOchs=\nR:check.go\nZ:Q1doTu16ruxKzlQa44cvDZ7z+QJnU=\nR:context.go\nZ:Q1xaObwetHp9LEWT2jAQ3XXARpEl8=\nR:conversions.go\nZ:Q1m91FcpfyRLtxGz6BRePuGgudgrU=\nR:decl.go\nZ:Q1+Wb+6A7dBS+NUkxFYksXjRre/R4=\nR:errorcodes.go\nZ:Q1dNYcVWac0+4jGUvkTRZyL2AJ2QA=\nR:errors.go\nZ:Q1druWbmcEb8IRdcHPqB0CyjlCSV8=\nR:eval.go\nZ:Q1ebhKRQqUiPNwLSh4qUfD28xQwaE=\nR:expr.go\nZ:Q1754zUBygz/abYBCVTpoNhfY6IoA=\nR:exprstring.go\nZ:Q1Wm0Dli/YhwSrObJ9CJFzU71DKQI=\nR:gccgosizes.go\nZ:Q19t0d99EaZ3BcjlFnXWDZHfpzQKg=\nR:gotype.go\nZ:Q19ksWjoPx9HKl022E12Us4rGFLk0=\nR:index.go\nZ:Q1Q1lg2fZdFQW5Adg/+1fwuq4aqtM=\nR:infer.go\nZ:Q1gLNjWxzE8EQZoVZk1RCWgZHrUYI=\nR:initorder.go\nZ:Q12L3nQsBHAPdBf4cqQJXrD2r9zz0=\nR:instantiate.go\nZ:Q1QqvThnXOnWfCyBMKWTXqwjyysZw=\nR:interface.go\nZ:Q1N+sJveFZLjZwOhjX7dskqSHt6YU=\nR:labels.go\nZ:Q1i+o1nI7qFU9bxoIF3mAQ3nUwLJQ=\nR:lookup.go\nZ:Q18yN0xa8eMpLIIf+yjdw2eN9Kzh8=\nR:map.go\nZ:Q1dPOnliadi45iK51odQqt5fnS+iQ=\nR:methodset.go\nZ:Q1wU73A6RWnuG+NemP1I2Jzy8B/+w=\nR:mono.go\nZ:Q1JhK/CEMDwN/5ZFpZxrkK9zgGrs0=\nR:named.go\nZ:Q1Xn5U7ULQPNt5Wey5/lIkacEBdlI=\nR:object.go\nZ:Q1EgyPBZ5ufAQHCz2FvuXx+UddRt4=\nR:objset.go\nZ:Q13oODYt5G1kCEEaO4NbSSROplpvM=\nR:operand.go\nZ:Q1R+PtoSOT6B1aRXInefPDDgISiVY=\nR:package.go\nZ:Q1U6fJhtuq6J+nkx279TnZZ+Dqz1A=\nR:pointer.go\nZ:Q12ZZf/4HhujY45nG1+s9RJFIFblI=\nR:predicates.go\nZ:Q19liioyjn2CjT44dLheoNX/kJXAY=\nR:resolver.go\nZ:Q1awu7yw79v44/EosLw2n4leRts50=\nR:return.go\nZ:Q1Zk4P1uCWw0lvrG0C+FZCvDRrPbI=\nR:scope.go\nZ:Q1o0ir32ocuDl2bHrMCvBq9286a94=\nR:selection.go\nZ:Q1k9sYPET1j2JlZLJdmlegCWGhTtc=\nR:signature.go\nZ:Q1TNXF9BmCMbzEDkFQyNI4ZkRzQ8Q=\nR:sizes.go\nZ:Q1vNP6elovHhaN5UGJQLxB9ezxp50=\nR:slice.go\nZ:Q1+DQh5dd/MAJ6IQz6PPWlXlC5U1g=\nR:stmt.go\nZ:Q1Pom0MhVSVvk2GjLgBDayVXA3XzY=\nR:struct.go\nZ:Q1T5fy7UCJAZiJBi/rW80s2jQBvxs=\nR:subst.go\nZ:Q1T1AbSdvWCa/SpgbkoVd9Eidpvvk=\nR:termlist.go\nZ:Q14fJ6/4EzEmxO+vwbZpYFwF7ccAg=\nR:tuple.go\nZ:Q1XfQhKDB9YYIjlYUs51V8Wy0cclY=\nR:type.go\nZ:Q1d5iqSTO2RHd9vEhtaWZD6dO4Eek=\nR:typelists.go\nZ:Q1VEsxj5lprQpJOvbVAtc8M06NrcU=\nR:typeparam.go\nZ:Q1CRT1er0QEHqnmnB3W5KjWLDg+Ws=\nR:typeset.go\nZ:Q1Sr3KPjaPORXR4H5wRUaWJvu3Wwo=\nR:typestring.go\nZ:Q1wF+U41HmT2VaoAWrAhaVVDPxa6I=\nR:typeterm.go\nZ:Q1xHoIxCTaEWW5DaEdK4L0RVPHT+4=\nR:typexpr.go\nZ:Q13XosB/L/DdmbliIAJ730scnNAAE=\nR:unify.go\nZ:Q1Wkm4nt5MYGA4lrKU35uTrEtVubI=\nR:union.go\nZ:Q1y2VY3FSy4qp01v1+nFlPEjtik4g=\nR:universe.go\nZ:Q18FWpFJodv3NwvUnXyuhUXHfH4yA=\nR:validtype.go\nZ:Q1Es3FU2aJncivqt4b9D6VFudNwc8=\nR:version.go\nZ:Q1V/tM56b7DOA4QJ5gnUPx7rUwr4U=\nF:usr/lib/go/src/hash\nR:hash.go\nZ:Q1cysyvT0qoEAZeaLed0U4PUHlyvo=\nR:test_cases.txt\nZ:Q1H9VSWK5a+tPT8aqX+uwkUVLo6NA=\nR:test_gen.awk\nZ:Q1b8jVwbGE1ps0P7gWMCjYA8k3z00=\nF:usr/lib/go/src/hash/adler32\nR:adler32.go\nZ:Q1e4gzI+YUduNrdQm6bzc9JT8+N18=\nF:usr/lib/go/src/hash/crc32\nR:crc32.go\nZ:Q1Mv58e3R6SrIltIf0go+kMoP563w=\nR:crc32_amd64.go\nZ:Q1R4AtuZMEkZfKkinlRwUeMMXQm8M=\nR:crc32_amd64.s\nZ:Q1TnrJnOX8Q0YFf12Rtdvm875kNBw=\nR:crc32_arm64.go\nZ:Q1b9AkUmwkwuZWCMdfD3YKl20zUIw=\nR:crc32_arm64.s\nZ:Q1RXATmmrjxKSHliiFpROlGmorcrs=\nR:crc32_generic.go\nZ:Q15eVQc1V1jSoXMlmqtADfVPx657s=\nR:crc32_otherarch.go\nZ:Q1+XE+tH1OXuXOG3LeRgqAu5m9sZk=\nR:crc32_ppc64le.go\nZ:Q1e0D7KLGeSZvBEPEnVPqdPGT33II=\nR:crc32_ppc64le.s\nZ:Q11q2jBzRHnlmge5xJN+6Gh6mtktI=\nR:crc32_s390x.go\nZ:Q1FyisxZTHrlQA4vIlGTc9qIz3gHs=\nR:crc32_s390x.s\nZ:Q1DS6hUQvzgxnFHG70Wduc9FqHAH0=\nR:crc32_table_ppc64le.s\nZ:Q1AhqcmsH8BaIi0ZV6YUjqIqmI+eI=\nR:gen_const_ppc64le.go\nZ:Q14r+GwOYKImzLKNfg615XuLd1lcE=\nF:usr/lib/go/src/hash/crc64\nR:crc64.go\nZ:Q1adu/1QJqnbchMAY23pBMir8T3bE=\nF:usr/lib/go/src/hash/fnv\nR:fnv.go\nZ:Q1Ps3bPtjTn6zQfk3l5frcHbShuM0=\nF:usr/lib/go/src/hash/maphash\nR:maphash.go\nZ:Q1n4bYVThRvQcRNLB6C1TpKHyP3Fg=\nF:usr/lib/go/src/html\nR:entity.go\nZ:Q1tIJ7uD9RMknbubMdTMU95W+6+CA=\nR:escape.go\nZ:Q1qpFpspYmdZRvDF0XxnLaMkVZ0n8=\nR:fuzz.go\nZ:Q1nU6Skz/7U38Bef985D6uoMye8c4=\nF:usr/lib/go/src/html/template\nR:attr.go\nZ:Q1XJzhPE5wl1trlFcfz4ojrfMhR6A=\nR:attr_string.go\nZ:Q1z4I62f1KyQc3jTkswLnDDR/PqSM=\nR:content.go\nZ:Q1yxJmQF715s9i86o6SCSBK4pOJso=\nR:context.go\nZ:Q1uaezG/jlf2IZ2Qm+Pw1mHD/DAWU=\nR:css.go\nZ:Q1Ea08/esgBiwZmhxdrHJ/EMkfhws=\nR:delim_string.go\nZ:Q1U1uWC6pA2EUNe+azxS/YeK5MyIk=\nR:doc.go\nZ:Q1muWmR6jek70L9ULCu0ggaB1Fpxw=\nR:element_string.go\nZ:Q13Kjpnps2CxVP0ae0+Hgt7KBcayI=\nR:error.go\nZ:Q1YTy/boxmudEq6XfH8ANBW8A6VnQ=\nR:escape.go\nZ:Q1wKfvFOuwJOFlS39lINeMdpVSFlg=\nR:html.go\nZ:Q1czi1gpE+rHLY+53ODJtXpa8LZ/0=\nR:js.go\nZ:Q1+eJmsXue2VKlJnZOoMOM7ei6ikY=\nR:jsctx_string.go\nZ:Q13gwfC3MzdXnusxx8pAZJjrJoAqA=\nR:state_string.go\nZ:Q1Ei/PRkk8SM0aQJHhKodJkN/aAp4=\nR:template.go\nZ:Q12cn39Nr4yhjV29/QeNcH0pcaTtA=\nR:transition.go\nZ:Q1Cz/D1dM6UfG/meNN94gYxcelsRU=\nR:url.go\nZ:Q1rTUP7jFc+FznG+n5h44+iRIPr9c=\nR:urlpart_string.go\nZ:Q1vJqq5fDuGt/zUWqILQMlUP8r83w=\nF:usr/lib/go/src/image\nR:format.go\nZ:Q1iOl7Lh4VnD9VHG65n0b9iFxlt68=\nR:geom.go\nZ:Q1q0TbEGby3myvrZBNm9GCKuYeLUI=\nR:image.go\nZ:Q1xR4Hpa+JqmiUiZgOtPiKjtT/9RI=\nR:names.go\nZ:Q1C3oaLzkSbN0Tbr70E7F/dvUgVBg=\nR:ycbcr.go\nZ:Q12Zt4QM7KnoJTkEVTdO4ZEBNPNFk=\nF:usr/lib/go/src/image/color\nR:color.go\nZ:Q1yB3Xa6+Z9CAfaNUlfSWVPZhlp2w=\nR:ycbcr.go\nZ:Q1hLbOkG6dQPeawph44ZegqkSlXQQ=\nF:usr/lib/go/src/image/color/palette\nR:gen.go\nZ:Q1qQVVfCGCBL3BdmW/E+q7bKDmsyY=\nR:generate.go\nZ:Q1Vwp3qWpZWefuF/c08DJr4EsL/Vc=\nR:palette.go\nZ:Q1b3F9oIoDcBIedwufbVOfFPqQ6B0=\nF:usr/lib/go/src/image/draw\nR:draw.go\nZ:Q1BwZ5yN0N+gXnhK0/JBmzad9hqwo=\nF:usr/lib/go/src/image/gif\nR:reader.go\nZ:Q1X9dZbBnAZTMTUG0ja7eJg5hPiU8=\nR:writer.go\nZ:Q1DPz5Wpnzln392NID3sYZkxIeKmI=\nF:usr/lib/go/src/image/internal\nF:usr/lib/go/src/image/internal/imageutil\nR:gen.go\nZ:Q17Y/Gga4gLCIu/iGrrLQwbaL31gM=\nR:imageutil.go\nZ:Q1b9kzGNd2os4v78FbhLW8BY7geF8=\nR:impl.go\nZ:Q1aOnC85ZgKI/jEbp31WhiRVfrRaQ=\nF:usr/lib/go/src/image/jpeg\nR:fdct.go\nZ:Q1T5Edl5AUNqdCl7umzsSzoOWPTko=\nR:huffman.go\nZ:Q1zNXN4dtxL4ilofp5ypy/lnyU5Pw=\nR:idct.go\nZ:Q1xsvwYacWF4TzU7I4wHR2dXUSM70=\nR:reader.go\nZ:Q1ckFPbomQ545KFMcVbiKQduWBt+U=\nR:scan.go\nZ:Q17UZJci+wZKhT1WHHqHKWawFZM0c=\nR:writer.go\nZ:Q1n22hKlVPUR2DhHcqDBu7AkHzpVE=\nF:usr/lib/go/src/image/png\nR:fuzz.go\nZ:Q1asnm4zyMbUbxmrTCzmdYI/VXVlo=\nR:paeth.go\nZ:Q1QPND3fk86kUuDbIKe7LMLCOkflg=\nR:reader.go\nZ:Q1sBkglLMCQhHqECE2pSrslPU92Os=\nR:writer.go\nZ:Q1YIlSv5dYCh7tSGUM04mc/Y/KESo=\nF:usr/lib/go/src/index\nF:usr/lib/go/src/index/suffixarray\nR:gen.go\nZ:Q1WZgehYhVNVdFBCoisBZqtr0v5gg=\nR:sais.go\nZ:Q13lRiXtKSX0jXpPZFALtS3jDyGG4=\nR:sais2.go\nZ:Q1EsR/bzhMhBQM6dhoMImC7S1WUpk=\nR:suffixarray.go\nZ:Q1v/i/yF89Hef87vKLIyi9NnNvzZ8=\nF:usr/lib/go/src/internal\nF:usr/lib/go/src/internal/abi\nR:abi.go\nZ:Q1F6mwNYF2FZgNQb4VT+yA7ZKqdUI=\nR:abi_amd64.go\nZ:Q1vNi0Pez/ScvsP1vD4p+E06PZjP8=\nR:abi_arm64.go\nZ:Q1TayHAA41bH2UxsChfR9+R54hgsw=\nR:abi_generic.go\nZ:Q1zonUjyw50Wz0oyu7fO4cptxUcyI=\nR:abi_ppc64x.go\nZ:Q1xv1flZ6P6GHIyCMTfneMtd5quF4=\nR:abi_riscv64.go\nZ:Q1NqwjjkkXfjeA3jMa3E0WcFXLJx0=\nR:abi_test.s\nZ:Q1n1RGjkSbTPIn60UbMr4q5FwrFmA=\nF:usr/lib/go/src/internal/buildcfg\nR:cfg.go\nZ:Q1c9Ffp1fYJ/oWU3O52I489ThOcDU=\nR:exp.go\nZ:Q1T/dptei8Tam/Ow+Z+M5CkSDCsC8=\nR:zbootstrap.go\nZ:Q1EwoLoIr4HTBs0Q024+1Mtcxtr2M=\nF:usr/lib/go/src/internal/bytealg\nR:bytealg.go\nZ:Q1kxb4e54+wBXBYar+vNo8XbPsSpo=\nR:compare_386.s\nZ:Q1JGzNRq7Ov3UwNg/6hjGyypSbibA=\nR:compare_amd64.s\nZ:Q122FjC0zHvWu462Bv3XCDsIWdIUQ=\nR:compare_arm.s\nZ:Q11fAlIy3hjN7Y8rnrkYVbpvo1bV0=\nR:compare_arm64.s\nZ:Q1V4WPXCl6ZQPiiwACeo2mOSggbz0=\nR:compare_generic.go\nZ:Q159MscH9YlddfpUKvTaM1qL65WVk=\nR:compare_loong64.s\nZ:Q1ua0e5+wBwiBzBEG3efblmmXKOwE=\nR:compare_mips64x.s\nZ:Q143TjGkL4DgjygiB/KEX5cEVBTWo=\nR:compare_mipsx.s\nZ:Q1llZSPyPMsGYCsMFQlRn2sUREK3U=\nR:compare_native.go\nZ:Q1Jn+1yG6nrS7Vl3IVr0M4nPOjtuQ=\nR:compare_ppc64x.s\nZ:Q1DQLRgKsNqCEeCHNs22oM1P1Vd8w=\nR:compare_riscv64.s\nZ:Q1QHIdKwrwLFnXj4FApl9lSkKA6Js=\nR:compare_s390x.s\nZ:Q1g6ZaA7GJnHgXHJvgpGpNmC2tP5g=\nR:compare_wasm.s\nZ:Q1ysOfb/R7XFtU66paa+82wLaPFzY=\nR:count_amd64.s\nZ:Q1k85JdEFLKHItsDmLcuoQgZ0Gf28=\nR:count_arm.s\nZ:Q1WUo+tWrgcnajtO3yiwDhgabdjpE=\nR:count_arm64.s\nZ:Q1wYEeGKh518JoNY9iSvpP6XjoiUE=\nR:count_generic.go\nZ:Q1Klt/9cf1LBb7NNTvOV+JW0wYpV0=\nR:count_native.go\nZ:Q1Qa/w0lHmQGdaJnrzlBXlehPNTVU=\nR:count_ppc64x.s\nZ:Q1Kt0yokt/6nGZF3RZUJ2UOIBKwew=\nR:count_riscv64.s\nZ:Q1KC41/XwCO8DfN/aH+jvRmNiy5wU=\nR:count_s390x.s\nZ:Q1Tvne0R3qgR3KBgJhyCj5Os6DS70=\nR:equal_386.s\nZ:Q1np68da+MeKx4r8gpTIrLEhJi2xs=\nR:equal_amd64.s\nZ:Q1sSMU87/Lc2zi3pFtq0ooX8zSd90=\nR:equal_arm.s\nZ:Q1ZY6kcy4Wkrzyge94WJAAK77UAuk=\nR:equal_arm64.s\nZ:Q14zrVZh/K9jDV0rnG9OOpjC80Igk=\nR:equal_generic.go\nZ:Q1WFkiFvkcSOWb7URbe962XfLwfNU=\nR:equal_loong64.s\nZ:Q13ajPHaVA2IQBSvI+DUNlA4uVaa0=\nR:equal_mips64x.s\nZ:Q1gx4u3qZZSmumgOuzJ7yOxMtnMUo=\nR:equal_mipsx.s\nZ:Q1AIPAPZxCLC0uGZ1yU7V1jZNOqQM=\nR:equal_native.go\nZ:Q1hXF6xW1vs7RyMLYzMl+WdlHbk6k=\nR:equal_ppc64x.s\nZ:Q1EWYjxIV6bx2RT3MPLbKNzn8ZFTc=\nR:equal_riscv64.s\nZ:Q1khCJ9OFpi+c63eOVDPwoxubie1k=\nR:equal_s390x.s\nZ:Q1h+AxjrXavZcgW5ophhlzNn++XoU=\nR:equal_wasm.s\nZ:Q1QNMPpZFudKZDPfrLVboGgTQXvJ4=\nR:index_amd64.go\nZ:Q1lJAjCcfk+zT1vsbMbAL8x2WqSBw=\nR:index_amd64.s\nZ:Q1YRHIxY6MgO27RGhCbYPncBDIdR0=\nR:index_arm64.go\nZ:Q1Q0p0WCkjgBF9dGoaKv/RG7Lu4LY=\nR:index_arm64.s\nZ:Q16OGtHWe2tIAbysWSB9Ncq7YesxA=\nR:index_generic.go\nZ:Q1S9lEy3ZrByY/2F5sVLnWe3ikdbk=\nR:index_native.go\nZ:Q1t3QM2uptnZbynetx4SncXmKqYOU=\nR:index_ppc64x.go\nZ:Q1YMnnFbp4r1dvGXELf5wHQDASdXM=\nR:index_ppc64x.s\nZ:Q1qo9J+p/FLdxknANqqi/clcLVT2Y=\nR:index_s390x.go\nZ:Q1C0coN51jtLuQWoWr3mBH3fOfg0s=\nR:index_s390x.s\nZ:Q1FZc/mmDHGGNembd+efDfd0UX8E8=\nR:indexbyte_386.s\nZ:Q1B0CzcFtdRJQ23IjRQBocyIswSIU=\nR:indexbyte_amd64.s\nZ:Q1ZinsQUDxCay13XQzDhaqMlqJvB8=\nR:indexbyte_arm.s\nZ:Q1YWI8N4V+hYzxzIhIKS2zDILgjmk=\nR:indexbyte_arm64.s\nZ:Q1NMOlh8tvQ/Qf4d447JRAfT1iEO8=\nR:indexbyte_generic.go\nZ:Q1mKfx/G+sAYqBPekINtu5oSYhX5M=\nR:indexbyte_loong64.s\nZ:Q1m7jDgc505bdVpfjupsA7MQ2QtvY=\nR:indexbyte_mips64x.s\nZ:Q1SG2FZh3RpQPp55DeuWwRsLizMNk=\nR:indexbyte_mipsx.s\nZ:Q1BMuEaOG7MdmmE/OwZRyIoUN70q4=\nR:indexbyte_native.go\nZ:Q1Ke2XVIJ5wOB+M/AnCaOrgoVrdUo=\nR:indexbyte_ppc64x.s\nZ:Q1pzfuQyShEviH5MOHJyZRrZHDRZs=\nR:indexbyte_riscv64.s\nZ:Q1gpB9nx8yP/yJxnYCuA9JX8Z+zUk=\nR:indexbyte_s390x.s\nZ:Q1gTjK4Y2CT9Yi0uFb2gEwpJb+yWg=\nR:indexbyte_wasm.s\nZ:Q1+YW0cQHF7dDXlDf8Ue1s+bOWV9s=\nF:usr/lib/go/src/internal/cfg\nR:cfg.go\nZ:Q1Q+phluOPl523sXvtQDHT0xgofcQ=\nF:usr/lib/go/src/internal/cpu\nR:cpu.go\nZ:Q1jC2oFNjM6MmLkW5FoGa+f69+HUM=\nR:cpu.s\nZ:Q1jP/CowN6feQASw+lWMswsAwpcKg=\nR:cpu_arm.go\nZ:Q1ljKmjB+plnkJLJkJyJqWD2nXIbE=\nR:cpu_arm64.go\nZ:Q1BcgGyhkZQymnpJl7rXda5GqT6Wo=\nR:cpu_arm64.s\nZ:Q1XylUF+XcpK8v83Eaznf7pLuGeKo=\nR:cpu_arm64_android.go\nZ:Q1yHkoXrebem2HaW9qbSkXktBD/Cc=\nR:cpu_arm64_darwin.go\nZ:Q10PKphFT9rwZX2bzXlO+LBB4hMFs=\nR:cpu_arm64_freebsd.go\nZ:Q1wK8/2WkECuN+EOSf4Pmor/aa/L4=\nR:cpu_arm64_hwcap.go\nZ:Q19QP7jQQVQvMLJyo6nq7f/krln9M=\nR:cpu_arm64_linux.go\nZ:Q1f/xIIvnCVx6JdclA3Qu3Q1bv7V0=\nR:cpu_arm64_other.go\nZ:Q18SMbTsmhkHEdG9f9lPXHmZLs6x0=\nR:cpu_loong64.go\nZ:Q1xDYH7AAb/lZx0AapkDnpMtLPDFw=\nR:cpu_mips.go\nZ:Q144V4r7ruTIBiMvzH34OQKKLzCMQ=\nR:cpu_mips64x.go\nZ:Q1sMkYK+U7MTzNqyC7Vk7xtDlBNKE=\nR:cpu_mipsle.go\nZ:Q144V4r7ruTIBiMvzH34OQKKLzCMQ=\nR:cpu_no_name.go\nZ:Q12i6qRi3HNdy7J/UFLvf1jitPEII=\nR:cpu_ppc64x.go\nZ:Q1pkT6C1mMhJeOU7ylsNusNRThlPQ=\nR:cpu_ppc64x_aix.go\nZ:Q1ohWSxFqcIwaJyv5uCoAdvHvC7TM=\nR:cpu_ppc64x_linux.go\nZ:Q1XqhEGU3n5gOU5jOToYx/j9PunhA=\nR:cpu_riscv64.go\nZ:Q1xAbEqK/+rM/ExSRQZBtWGJNySRg=\nR:cpu_s390x.go\nZ:Q14rvryoA/o69TCBfSbZdw61dL9Xg=\nR:cpu_s390x.s\nZ:Q1oaalVEFWEXRE4jvat0xEiwjH86k=\nR:cpu_wasm.go\nZ:Q1bNuBuBf0gucdCbMoVldt4DapW+s=\nR:cpu_x86.go\nZ:Q12VZi3GgY/eGNaNE5fajNsrz2owY=\nR:cpu_x86.s\nZ:Q1iBebrULLUFEE/FIbSqPDlwIUU7k=\nF:usr/lib/go/src/internal/diff\nR:diff.go\nZ:Q1/CWjv9opV62Qfu8iDoUS1gX5f60=\nF:usr/lib/go/src/internal/fmtsort\nR:sort.go\nZ:Q1lTqEz2MlnHjM/0NZD4MzRb/JEls=\nF:usr/lib/go/src/internal/fuzz\nR:counters_supported.go\nZ:Q1bPtrw+idUva0Iy3cG+mUab9vQ+I=\nR:counters_unsupported.go\nZ:Q1PouPTn6+PAMnhZI5ArLyNvIy/yQ=\nR:coverage.go\nZ:Q1yoxWYyVxq2LAELn4iwUv2qr0bvA=\nR:encoding.go\nZ:Q1aMAnbLv0yZbbTEb/0/rzB7Y2GIE=\nR:fuzz.go\nZ:Q1eTfFl1JLhRHa7Q039QwHs+FBFBo=\nR:mem.go\nZ:Q14g1Onftpe2/DoJbsuHShMJucIvc=\nR:minimize.go\nZ:Q13hgdqFounNmyAo2N+OG4izmbhlE=\nR:mutator.go\nZ:Q1JHrkBLRvmI7Hj97JMvQDVcigr+k=\nR:mutators_byteslice.go\nZ:Q1NEE1jXzOKYV4RssXaLIo8pe4zwE=\nR:pcg.go\nZ:Q12Xrg258027vUdgX0IAINFbvoh+o=\nR:queue.go\nZ:Q13zNcWIFxz6JO3ODomp2l8cuZcFY=\nR:sys_posix.go\nZ:Q1PB+ixrWhUttPYYwZwPPQ6L+2QEY=\nR:sys_unimplemented.go\nZ:Q1I9wypPxTM3HsVZXF1yxUcK90M6Q=\nR:sys_windows.go\nZ:Q1BSHC9ONLDwKvfZdhx+tzNFn+n9c=\nR:trace.go\nZ:Q1a/SGVOiI5tGgsWBzAkOrKNypYm8=\nR:worker.go\nZ:Q16Wy1X6353MoakH99q1W4E6GNp3k=\nF:usr/lib/go/src/internal/goarch\nR:gengoarch.go\nZ:Q1MGNzPl9BSIybNHQ1GwHNH5QJoPA=\nR:goarch.go\nZ:Q1vFldfPeAdwN1FW9dbuLtomjruWA=\nR:goarch_386.go\nZ:Q1b8Laa3SuOKxxmKkoFgjMUscQCMw=\nR:goarch_amd64.go\nZ:Q193pIvsuG9oYTGNGJlni4nzfkn+c=\nR:goarch_arm.go\nZ:Q1jrJ5DNfku0UHFzv6/plFMupX6r8=\nR:goarch_arm64.go\nZ:Q1fARE9z0phzbm/iY7oIC0ipfMA3k=\nR:goarch_loong64.go\nZ:Q1bmHjFPxYYY/iPS6JOVkCVMLGUGQ=\nR:goarch_mips.go\nZ:Q1SPj8cjvdFNlvA3DrCBKdQ8h3ASQ=\nR:goarch_mips64.go\nZ:Q1ANQ3uavx0mtNg45WdQqgYARoaVo=\nR:goarch_mips64le.go\nZ:Q1ANQ3uavx0mtNg45WdQqgYARoaVo=\nR:goarch_mipsle.go\nZ:Q1Qf5XkTmH6tzg3kvP5u/WtTlspUY=\nR:goarch_ppc64.go\nZ:Q13VjiZR5M2Hvhu+GQWc5cDBBNnRg=\nR:goarch_ppc64le.go\nZ:Q13VjiZR5M2Hvhu+GQWc5cDBBNnRg=\nR:goarch_riscv64.go\nZ:Q1jqnqumoccKri/HXXUZ8dkH8VhKc=\nR:goarch_s390x.go\nZ:Q1Cov4shZ/dTT9XXw2gDqiBL0rv0A=\nR:goarch_wasm.go\nZ:Q1noJGFGB7nT/3xjHUcvxYP/KefE8=\nR:zgoarch_386.go\nZ:Q1GVSHC2G1aAWibwanPt66U+mO1i0=\nR:zgoarch_amd64.go\nZ:Q1o0uMNaLfuYzxc4zmGVgQXrPV/3c=\nR:zgoarch_arm.go\nZ:Q123bV7KEBK81ZgZaBK1s110Zta80=\nR:zgoarch_arm64.go\nZ:Q1BlqLD5PCel+8TU5SDaRXMTsvaGg=\nR:zgoarch_arm64be.go\nZ:Q1CHAI6frEKiYxcsLglGOpwPcnrUw=\nR:zgoarch_armbe.go\nZ:Q1TA2kRMCb6X7SINNISzWzAEVxOBI=\nR:zgoarch_loong64.go\nZ:Q1xdznX5CGoBu0MJjCW7ngyfWcdmM=\nR:zgoarch_mips.go\nZ:Q1XcrQwy4HWDvtx9c0GLIxqxWjxtU=\nR:zgoarch_mips64.go\nZ:Q1Cklvy3ytpEIDCYcii5IP7zv1610=\nR:zgoarch_mips64le.go\nZ:Q1Yjr5SbuEHYAFAQxohDCqeo81Vek=\nR:zgoarch_mips64p32.go\nZ:Q1A/MXdRtLl81ywyG2LViX5arAfMc=\nR:zgoarch_mips64p32le.go\nZ:Q1hY5dtBCqTxeGFW62Pul6rSZoVNk=\nR:zgoarch_mipsle.go\nZ:Q1j9uIfpFkkk/Tl/9IyIw52TEZASU=\nR:zgoarch_ppc.go\nZ:Q1jKbg9arChSdNSAmlPnGO9WI4tog=\nR:zgoarch_ppc64.go\nZ:Q17XEl1TiSe0AYLVSbHIndMliy6gI=\nR:zgoarch_ppc64le.go\nZ:Q12xX+HcrUbp2OPfmWvv7PiYrgrFI=\nR:zgoarch_riscv.go\nZ:Q1NScaDBCulPJ1Xat5ojykaDo5m14=\nR:zgoarch_riscv64.go\nZ:Q1X/SKjwS4WJfc3bAl9oxVvwQSZEM=\nR:zgoarch_s390.go\nZ:Q1in8xxBQ62Vw9aoRffyvPoVMiwRI=\nR:zgoarch_s390x.go\nZ:Q11bP1SbjyY7J5LQclQxklQD3YdAc=\nR:zgoarch_sparc.go\nZ:Q1IVTHG3PxZMQSPN93k2PmI1jhzq4=\nR:zgoarch_sparc64.go\nZ:Q1i8VQRIv0dGA7puKZX8rUksW6yAM=\nR:zgoarch_wasm.go\nZ:Q1iAKx48YQztcTLSHk1ocaaMm2Y8Y=\nF:usr/lib/go/src/internal/godebug\nR:godebug.go\nZ:Q1qIXrY8JNjEiq4qri+4+NsKeghFU=\nF:usr/lib/go/src/internal/goexperiment\nR:exp_boringcrypto_off.go\nZ:Q10SdaNbpTJZSKRmXJuIDQExonfBA=\nR:exp_boringcrypto_on.go\nZ:Q1T+0jqWoJLI+4vTGSlwndZAD9DPo=\nR:exp_fieldtrack_off.go\nZ:Q13mJASA8YvIHdSJ1/ojTQSWscNnw=\nR:exp_fieldtrack_on.go\nZ:Q1znUQ1rIyPetvk6ISa5m8PcXfQl8=\nR:exp_heapminimum512kib_off.go\nZ:Q1LMR2eackk4v09Vmo16YS+DPFEqk=\nR:exp_heapminimum512kib_on.go\nZ:Q1VUgY8HS2j9Edr4lmd5GFP1JhMuA=\nR:exp_preemptibleloops_off.go\nZ:Q1O6oAcSMF6WpgCS7GJPc/n7qTMRs=\nR:exp_preemptibleloops_on.go\nZ:Q10d0bgFG98vEZ+0xB2xgUXTTotV4=\nR:exp_regabiargs_off.go\nZ:Q1Qylggq66GIpxYRgJuuI1paj+M2U=\nR:exp_regabiargs_on.go\nZ:Q1I5N1L+IJ9yaF4WEht77V58HwGQc=\nR:exp_regabiwrappers_off.go\nZ:Q1lAxEXjodnj5S70CzEt9rbXX6KwE=\nR:exp_regabiwrappers_on.go\nZ:Q1IgkJMtsBeLKk73pVfhft87huvfI=\nR:exp_staticlockranking_off.go\nZ:Q1bvDs5UKh5Z1ME2mUUntZxAg665k=\nR:exp_staticlockranking_on.go\nZ:Q1L6ATPu+3xXeghvVlhtswkVEcwaQ=\nR:exp_unified_off.go\nZ:Q1Gdv3czrXG6xIoY77ET3Z6eF9/JI=\nR:exp_unified_on.go\nZ:Q1/s27d9HYIXMWhHGkwlyjG0BI5eM=\nR:flags.go\nZ:Q1lNxFs4PPQLI3fQ4133XxZnhIB6Q=\nR:mkconsts.go\nZ:Q1F8o7ltHtSl+8wNVLYZnl9MUz9zY=\nF:usr/lib/go/src/internal/goos\nR:gengoos.go\nZ:Q1LW3APAB+MOk0NgrGTw/ZFIGbi3o=\nR:goos.go\nZ:Q1pFlXb5FhaJT0y075IB8u43IaU/U=\nR:zgoos_aix.go\nZ:Q1o06N20J6QEiomnaRRjYjYunMXWs=\nR:zgoos_android.go\nZ:Q1+TlXWN7ltPpaUfX4XEqsfAHYLWA=\nR:zgoos_darwin.go\nZ:Q1Kbrs35Y74r5V6pqCDL83GJCj0e4=\nR:zgoos_dragonfly.go\nZ:Q1mxhANdI8dg3ituDnXEtQMB5WC2s=\nR:zgoos_freebsd.go\nZ:Q1av5ZUutRqpLG7r337D78uul/CaI=\nR:zgoos_hurd.go\nZ:Q1IupN8WigRi74zKRrJzXvMs9TAJE=\nR:zgoos_illumos.go\nZ:Q15F2nixb49cHQic5LtF+Av7QPg8c=\nR:zgoos_ios.go\nZ:Q1yW0c12fQJy48MJ+ZvBk17RC3Fzk=\nR:zgoos_js.go\nZ:Q1QTmWmFMLZaHdlQM+DqfTdJVkBvE=\nR:zgoos_linux.go\nZ:Q1Qsrp1ABQo0yO15C0o+BSYeNvb+c=\nR:zgoos_netbsd.go\nZ:Q141RSDguBBdzbQp1/zLUOYkv2+YY=\nR:zgoos_openbsd.go\nZ:Q17G4sVmqgB5dgYsFBjs/cb03urrA=\nR:zgoos_plan9.go\nZ:Q1y+vxdt70N1jbwhOdvBpQvkw7jGM=\nR:zgoos_solaris.go\nZ:Q1//e6r63VFkiA/O2AuvHSaJVvsvA=\nR:zgoos_windows.go\nZ:Q1nLHzc/JuUxrpQID7+oPQei3RzJs=\nR:zgoos_zos.go\nZ:Q1oPxMxkPOup6ACipecociLUHZEEY=\nF:usr/lib/go/src/internal/goroot\nR:gc.go\nZ:Q1Yz+zrjz3aeScVDr0F45VOFh53SE=\nR:gccgo.go\nZ:Q1M3vTjsRfjG+dM6mODgUFJeVws/c=\nF:usr/lib/go/src/internal/goversion\nR:goversion.go\nZ:Q1xd5Xvy4gkI4kYd340pF1kFJzpjY=\nF:usr/lib/go/src/internal/intern\nR:intern.go\nZ:Q1YGKo5Ko4urhc3TytuyJxu9yrozs=\nF:usr/lib/go/src/internal/itoa\nR:itoa.go\nZ:Q1JI7L8spPpgsNUYLf2NxltgAZhx0=\nF:usr/lib/go/src/internal/lazyregexp\nR:lazyre.go\nZ:Q1PRSKUzhIQvRNyQjp0uRW0/JqXwI=\nF:usr/lib/go/src/internal/lazytemplate\nR:lazytemplate.go\nZ:Q1HFrwxCYH3xtZalCpPZhEkFG8p2s=\nF:usr/lib/go/src/internal/nettrace\nR:nettrace.go\nZ:Q189qb/zWIJ2JYCc8EFJMKDrIqXpE=\nF:usr/lib/go/src/internal/obscuretestdata\nR:obscuretestdata.go\nZ:Q1mNQIFHLU9Xnh4LTmtjMaxGnaWlE=\nF:usr/lib/go/src/internal/oserror\nR:errors.go\nZ:Q19zdxpcqNez5tCLVEwaD3Y7v43YU=\nF:usr/lib/go/src/internal/pkgbits\nR:codes.go\nZ:Q1qtCka+/2qcxNQfePAr3lGzxnitI=\nR:decoder.go\nZ:Q1CAGbykbOMoHNTbZ06nUEEJAkqIg=\nR:doc.go\nZ:Q1F5kM2MLgjy7ewt/UadFcZnbHcnY=\nR:encoder.go\nZ:Q1KJoAXZhOx1r5uOoB8fG45dBe4gQ=\nR:frames_go1.go\nZ:Q1lmLrgKUU+PZiQYbqT6a4/87kxT0=\nR:frames_go17.go\nZ:Q1NGDZeA1zxrNltg8v4lGEtcUqGkU=\nR:reloc.go\nZ:Q18b47hlCk7QHv1X9XSxRDdr5pxl8=\nR:support.go\nZ:Q1F+xL5rK0UjyTzqIh7i+hvQEV+J4=\nR:sync.go\nZ:Q1+kiUQqEaaML5zVn3/P1YoCc11UM=\nR:syncmarker_string.go\nZ:Q1NrJhAH2dzKXTtQX7UARf3fknT9Y=\nF:usr/lib/go/src/internal/poll\nR:copy_file_range_linux.go\nZ:Q1Y1GYosm2RkM4u579li/18Zcup4U=\nR:errno_unix.go\nZ:Q1fVfeIPBCfCm3cQbrteSzZLxTUbw=\nR:errno_windows.go\nZ:Q12dY0UmDBZzyz8Uys7BzkflWtQVk=\nR:fcntl_js.go\nZ:Q1Ub3iozEzJqUF9igDXoFincErDB0=\nR:fcntl_libc.go\nZ:Q1uPOvJCqIWJQJHW8ERVTaOl4M71g=\nR:fcntl_syscall.go\nZ:Q1KOC9/t7x5Vt4oL+SwBmNovBK04g=\nR:fd.go\nZ:Q1jF2p/IkYtJJITxGlzB+HkP7Iznc=\nR:fd_fsync_darwin.go\nZ:Q1zelTR+TwdlXJZytPJ3jHKa8NNZs=\nR:fd_fsync_posix.go\nZ:Q1MtZU1ix4EOcxCuvyr7q/37LAKGs=\nR:fd_fsync_windows.go\nZ:Q1eBBPKHYDOQ7HboMcj1oiPl06GWM=\nR:fd_io_plan9.go\nZ:Q1dOwcpfuTrTbMi6CdUQZMVVuOrrs=\nR:fd_mutex.go\nZ:Q1EpBHi0dQ8nvL21Wiu8cwUR5Xiqo=\nR:fd_opendir_darwin.go\nZ:Q1QqGdHC6U1HThJPaqQRoqTKttvpU=\nR:fd_plan9.go\nZ:Q1p+BEXNZQrDm4VPwn+AxruSlftpU=\nR:fd_poll_js.go\nZ:Q1vGuoe27Rb2+Kuu0ipIkGhrSCiDo=\nR:fd_poll_runtime.go\nZ:Q1QIuOgW65JpfxgnQ1Bgaxywo9PCs=\nR:fd_posix.go\nZ:Q1AAFHv3nZhpUrWxQ8j3DdAK26l48=\nR:fd_unix.go\nZ:Q1G61W6+IPb9hXfM9PjAcmpupgyAs=\nR:fd_windows.go\nZ:Q1si7f50o4NuGGSQg6jFzvo/42CF4=\nR:fd_writev_darwin.go\nZ:Q1MZ3qWQcT8UEfivgMPPOTbjP/XpE=\nR:fd_writev_illumos.go\nZ:Q1NjNmJo0LMDvWXt89dPzYaLez0QE=\nR:fd_writev_unix.go\nZ:Q17dLCYHD9HuHkTWIqAKpx8k6dl9s=\nR:hook_cloexec.go\nZ:Q1DT6xRQbh/dcT4hC/uqm66opK9Gs=\nR:hook_unix.go\nZ:Q1Em/KB6tnsS3bZI826MBgiyOE2xk=\nR:hook_windows.go\nZ:Q1Z0fSfiHfau8+bzmw9iq58UtyZw4=\nR:iovec_illumos.go\nZ:Q1+ylryk/K6yWAVo6B9Zvbs/eH/vk=\nR:iovec_unix.go\nZ:Q10CtETPBDgMFJTlRF9LulNt1asl4=\nR:sendfile_bsd.go\nZ:Q1p5AB5Q6Iozj1Zu+wWwaT9YIR5OU=\nR:sendfile_linux.go\nZ:Q1GfaOOZQm7NKV4+c5xzbj8pmtMu0=\nR:sendfile_solaris.go\nZ:Q1EliROvNjMVoktVnvo0jG4ox+rzw=\nR:sendfile_windows.go\nZ:Q1KjaRqOtYO+eWZWYV8jfxOz1g+Kw=\nR:sock_cloexec.go\nZ:Q19y2kHsadlFtz7cPErMkYuKzyzN4=\nR:sockopt.go\nZ:Q1etFfrb2tA3U1wGrrG53X9Y8LmKw=\nR:sockopt_linux.go\nZ:Q1iJGvbQTqLAWqgv3gLLXclDTWlqo=\nR:sockopt_unix.go\nZ:Q1VsqPzJ2G3Iqf8GKj+S3xYPQC4dc=\nR:sockopt_windows.go\nZ:Q1nzSRt0LEQQVcwYWm3k/zA5X59cM=\nR:sockoptip.go\nZ:Q1xQ4x9c3OYUgAVqqM132NviHSfT0=\nR:splice_linux.go\nZ:Q1/tCAHXLLrqnXor7jZY/kYvxMBTc=\nR:strconv.go\nZ:Q1/M9dHMLmk3/f4diZw4uMizB+OTY=\nR:sys_cloexec.go\nZ:Q1rmSmPtAV1Q6ZsYRjCTiuN8YTsTU=\nR:writev.go\nZ:Q1d+AM0vyrcR5eyUIZAIHRgZzthw0=\nF:usr/lib/go/src/internal/profile\nR:encode.go\nZ:Q1eEHv2FfINUCDZpHLfwcY6ToUY14=\nR:filter.go\nZ:Q1UC9DFVQz7BJTiH/AQgWB1kOTQS8=\nR:legacy_profile.go\nZ:Q1TZ6+HysPKmbRaAw1Y8LFiyM2pW8=\nR:merge.go\nZ:Q1AeAzhmdYE+q3U5ElnLGWh6Tv6qI=\nR:profile.go\nZ:Q1Nzmwzu9i1KL+MBeMZyHVD8BCWPU=\nR:proto.go\nZ:Q1GbBMglaSiz7bq4gbf8sXR9d3ft8=\nR:prune.go\nZ:Q1NB5uPhIyt00xQhvSnM45dt+PyZU=\nF:usr/lib/go/src/internal/race\nR:doc.go\nZ:Q1kMrcITryWC7dfmyyNDHS4c3kTSI=\nR:norace.go\nZ:Q11/eEOnDD60uNx3e73ralp+WcYQ8=\nR:race.go\nZ:Q1TJMj4ZMk9oK3BiM73q5Q9B9mQjo=\nF:usr/lib/go/src/internal/reflectlite\nR:asm.s\nZ:Q1ifjdh4cL5CoeARc8lrjL2P3yOIE=\nR:swapper.go\nZ:Q1rScoIIRZKAkXw5QRRftZ4fum554=\nR:type.go\nZ:Q1nydWACGwLyP59GDIuuXgV1xk4zE=\nR:value.go\nZ:Q1t3ZahHCpSqPPWWEfMDfGlLQwD3M=\nF:usr/lib/go/src/internal/singleflight\nR:singleflight.go\nZ:Q1by+KX2mlWUTekYlxpjyYYUic4DY=\nF:usr/lib/go/src/internal/syscall\nF:usr/lib/go/src/internal/syscall/execenv\nR:execenv_default.go\nZ:Q1Fzqd/07qA/9GQmto47H+T0Falpk=\nR:execenv_windows.go\nZ:Q1ZQav7QxGAmkBXLU92a8ENLAHna8=\nF:usr/lib/go/src/internal/syscall/unix\nR:asm_aix_ppc64.s\nZ:Q1TaMjdl/7jSzUGlHZP1Oxh/TzBqM=\nR:asm_darwin.s\nZ:Q1EmiuR+sHjg2H4oORTW/FzrLLmbA=\nR:asm_solaris.s\nZ:Q1h58qE5yUWdpkdEB/faNLWOHAO3k=\nR:at.go\nZ:Q180QWCuKkkjIfIh7TcUngJzYlgQc=\nR:at_aix.go\nZ:Q1KNVTLbdYdPb7uEHcxZGpaGcjNec=\nR:at_darwin.go\nZ:Q1jFxKBmLTmJjf6VoW2rmZkMhIkMc=\nR:at_freebsd.go\nZ:Q1DSNCBGPLOZwqkId27UVnwr4dMp4=\nR:at_fstatat.go\nZ:Q1TqcaBx3PfK6Qd+aJfiYx0fQZCLU=\nR:at_libc.go\nZ:Q1wu44w7Curg6k8surVnz0t91uO8M=\nR:at_solaris.go\nZ:Q1YtkahddRmk+S/yb/iE20uKUrf18=\nR:at_statx.go\nZ:Q19tobB7IN+Cic5NBhvKokLfHtYw8=\nR:at_sysnum_darwin.go\nZ:Q1JQokx+oOZBMo32VWogVPd1LG4Kg=\nR:at_sysnum_dragonfly.go\nZ:Q1ngNAU4q/dOHIWZwp8MejfzlcSNI=\nR:at_sysnum_fstatat64_linux.go\nZ:Q1jp82jejz2o4r6EflFcXCrWmwAeY=\nR:at_sysnum_fstatat_linux.go\nZ:Q1adgyN/EqQQlAVlIa/jV8+Q6ixfM=\nR:at_sysnum_linux.go\nZ:Q1cWb5SG2RpmP+lq5rmCJof9ZkHMM=\nR:at_sysnum_netbsd.go\nZ:Q1M1cghAfhxunWXaaOP6Tl7fCkLKk=\nR:at_sysnum_newfstatat_linux.go\nZ:Q1sYHjASjGLQCz3hkFhdj49ZX2fro=\nR:at_sysnum_openbsd.go\nZ:Q1exJed6QshWpJOMd4OYpmNuVUx6c=\nR:copy_file_range_linux.go\nZ:Q1jj/QMLhqfi68n1RnVWIgn64LSuY=\nR:fcntl_linux_32bit.go\nZ:Q1g9RHzPExJlLLtn8K4MRGcVfbBw8=\nR:getentropy_darwin.go\nZ:Q1f10i5VQUqmoSmjRg/GhIrgerPJM=\nR:getentropy_openbsd.go\nZ:Q1dAUDUG0o8bpZIlFpaz7srY+tRS4=\nR:getrandom.go\nZ:Q1r3Ppo+Uemm9ULkGPUj74eMpjhHI=\nR:getrandom_dragonfly.go\nZ:Q1nlgYQpJCXCDQGk9j/eQWJpdEwGg=\nR:getrandom_freebsd.go\nZ:Q15cnfKvpfjDaAcgGZHTol2amQiiI=\nR:getrandom_linux.go\nZ:Q1Hp6xMcsItfs4ZRA1OrI2DUeGSZ8=\nR:getrandom_solaris.go\nZ:Q1uWmA1rSbHjzhsjrt2H/oe7sCJm0=\nR:ioctl_aix.go\nZ:Q15kUGgfmdRPq9YV5rHi2layNB5bY=\nR:net.go\nZ:Q1Ge78Rxa98nHidcSc3o3e6Fj3oe8=\nR:net_js.go\nZ:Q14qdGIC7n1VcPNLvGmRqVKTdGXVw=\nR:nonblocking.go\nZ:Q1uDdtMpf70ANHxm5x9otu5asAFPg=\nR:nonblocking_js.go\nZ:Q1W3+NUTyA8nByBxL7b+cnsWcHtOU=\nR:nonblocking_libc.go\nZ:Q1gdAZdvP6qH8qK4SQBoDfgseT7+Q=\nR:sysnum_linux_386.go\nZ:Q1nIl5+AtwukEAd2A+qZxA9jwZ/2A=\nR:sysnum_linux_amd64.go\nZ:Q1n/klSsvMnj5taAAoZQOZ1f9ZrKw=\nR:sysnum_linux_arm.go\nZ:Q1IZhatlek67kpKD3cLbHNjn6QaQs=\nR:sysnum_linux_generic.go\nZ:Q10breakBMpJTJomZO1IMSJsbCJeE=\nR:sysnum_linux_mips64x.go\nZ:Q1+/O9HaSQQA1KKAnEYUHk5cdGMPo=\nR:sysnum_linux_mipsx.go\nZ:Q1dutIomPji8tQqJLwi7y/qe0+nLs=\nR:sysnum_linux_ppc64x.go\nZ:Q1EwNseBqTAAD4l8g/QtZ44DuF+e0=\nR:sysnum_linux_s390x.go\nZ:Q1N1rKxLRhcdWpD8FbhVQFivLhi2Y=\nR:writev_illumos.go\nZ:Q1fZUb+iIVLjI2+DA2yA+1A7uS6Q8=\nF:usr/lib/go/src/internal/syscall/windows\nR:memory_windows.go\nZ:Q17DbmtVASE1YZpFMuaLBlhCzbMLY=\nR:mksyscall.go\nZ:Q14KgQ4UJNbrdplnbMwSefp/pW1cA=\nR:net_windows.go\nZ:Q1/y1P+Tw49pVRrGSA+PzYb5jC0Xc=\nR:psapi_windows.go\nZ:Q1i7t9Hcz8Tahl8IOQ+npH/4iiMpw=\nR:reparse_windows.go\nZ:Q1ckCcPsmmz6CNDdnipwbBSKxSRmw=\nR:security_windows.go\nZ:Q1318cefXJujcAB4c2jOIci1wZdZ8=\nR:symlink_windows.go\nZ:Q1hQ8ccC7y2s84mwXmJnPYI+7Arbo=\nR:syscall_windows.go\nZ:Q1aqFuL6HquMQ5CaV8hdFvkyjRJ58=\nR:zsyscall_windows.go\nZ:Q1/DnjaeMS8VYvxrV9g5H9AcncuIQ=\nF:usr/lib/go/src/internal/syscall/windows/registry\nR:key.go\nZ:Q1/UBm89en8pNtMLnb7nB9lxrTMAU=\nR:mksyscall.go\nZ:Q1XDXLjvdvb/Gv32ua0pb3rRacD7A=\nR:syscall.go\nZ:Q1pYtG/o1fOI7OVAokxCADVqzVkpg=\nR:value.go\nZ:Q1Ch5cWpqN1yNujIwxSE9LWHppt8E=\nR:zsyscall_windows.go\nZ:Q1vqfNUzm5aLiEAV/6YCGaNEV9/Us=\nF:usr/lib/go/src/internal/syscall/windows/sysdll\nR:sysdll.go\nZ:Q1SeZSRtHpQW2QcPmLggxksPUuSPA=\nF:usr/lib/go/src/internal/sysinfo\nR:sysinfo.go\nZ:Q1GtkUBeq2lGBOCH+BfiUp2Xm8fp8=\nF:usr/lib/go/src/internal/testenv\nR:testenv.go\nZ:Q1bq1OmazoCe6jGdh09c/4TOPmSuI=\nR:testenv_cgo.go\nZ:Q1m02zaYM86TmKKigeBz+RieTVrcM=\nR:testenv_notunix.go\nZ:Q1hSkLJbNW44pS4cWTa4tEwGcc6WQ=\nR:testenv_notwin.go\nZ:Q19CXuWInkJ7DWKwJqb9hogVvaTj0=\nR:testenv_unix.go\nZ:Q1by+RPYkZwdldN9HYIH/A21UpXvM=\nR:testenv_windows.go\nZ:Q18ODAl2uLeZFelA1TnkTFuvuLadI=\nF:usr/lib/go/src/internal/testlog\nR:exit.go\nZ:Q1Em8ma3Jk6RO0pcpEV+pzFRUwWDQ=\nR:log.go\nZ:Q10FlPRRWkqq6SbYpIh9n2nrweJxI=\nF:usr/lib/go/src/internal/trace\nR:gc.go\nZ:Q1mWCFB5O99h2BSOxrvLVU/+vKXIg=\nR:goroutines.go\nZ:Q12gLP9MlxXE71B1bxVVHdVwKaLP8=\nR:mkcanned.bash\na:0:0:755\nZ:Q11GhyGitGuMhHpgyH2QCvl2/7ZAM=\nR:mud.go\nZ:Q1GqB/eVOABe5VupARKuvXHAgxO2w=\nR:order.go\nZ:Q1mPHAMmZK4QIKsB1Dl8vVb4cwM0g=\nR:parser.go\nZ:Q1rSUHLFfnV3vE1LIdbyY1Rs5LIyQ=\nR:writer.go\nZ:Q1/6YJWFT7/KvrjDq0yqAsmhGzndk=\nF:usr/lib/go/src/internal/txtar\nR:archive.go\nZ:Q1xKnuZiTzEW9Jo1wojt+kkzZNjPQ=\nF:usr/lib/go/src/internal/unsafeheader\nR:unsafeheader.go\nZ:Q1q1y6F2bAooizkmUdGSS6nlwsk+g=\nF:usr/lib/go/src/internal/xcoff\nR:ar.go\nZ:Q1E5TMr2OkAWqMyNUvMoM+ZyPWGHo=\nR:file.go\nZ:Q1RGbu0sfPSitu5Ae3lW8GITCQirA=\nR:xcoff.go\nZ:Q1FAPPhpCx6qsrS1H74jEj0X8PT40=\nF:usr/lib/go/src/io\nR:io.go\nZ:Q1OueYw8cg6641Qc1GnOlAj2iGC5c=\nR:multi.go\nZ:Q1WOxSluibqfDSDnZ82jQE7fqgbRE=\nR:pipe.go\nZ:Q1fxSEOpkATUg1T559JwWZ+MVPiRY=\nF:usr/lib/go/src/io/fs\nR:fs.go\nZ:Q1CN8aM8ROWxaEffMm46Uf11BBdv8=\nR:glob.go\nZ:Q1zrIsxqLLZXpsX5oyRl//amXvOp4=\nR:readdir.go\nZ:Q1NfNgWILd+X2GC56Wjw3YSBYaOjs=\nR:readfile.go\nZ:Q1d7tr0MUqlk1MfxoHOR0bXCOW0SA=\nR:stat.go\nZ:Q1H2rXVOLjwfTxiMeXx7pLKii9Meg=\nR:sub.go\nZ:Q1gWe/m3yYwTKmCpC4An2njIivkI4=\nR:walk.go\nZ:Q10qazcWGyKDFT6eAcSQlvvoFFSxI=\nF:usr/lib/go/src/io/ioutil\nR:ioutil.go\nZ:Q1wb7PeMiCOqGtOPx04bNOQ3cICzI=\nR:tempfile.go\nZ:Q17LLqFBQ8gh1ixkL0/75XkWGgwZ0=\nF:usr/lib/go/src/log\nR:log.go\nZ:Q16/eFqq2DXILWgM8u/ENPqU/0tGw=\nF:usr/lib/go/src/log/syslog\nR:doc.go\nZ:Q18MLlikTZzHS4hN7q2hSNEhfSt9E=\nR:syslog.go\nZ:Q1CS+XKpex8fhYdiwXzar4l7D5AhA=\nR:syslog_unix.go\nZ:Q1wEBxgNxKv7PLrYB3+TSXLdae9jI=\nF:usr/lib/go/src/math\nR:abs.go\nZ:Q17iQX9fZYd5WtG0KnqesS99fHj8U=\nR:acos_s390x.s\nZ:Q1W00y/z8cRSGcY/pfgo5ZUVkrATA=\nR:acosh.go\nZ:Q1jDc/kxRZFFrnvTwfX9rJ8gS6DMM=\nR:acosh_s390x.s\nZ:Q1ulAqV4vHlUsLjhr/dVTmsG07vZo=\nR:arith_s390x.go\nZ:Q1iyc/M/HPy7xMACCTh3w49FreXZk=\nR:asin.go\nZ:Q1ZXWgoSI4JjbOQtS5Ory56016DRk=\nR:asin_s390x.s\nZ:Q1sfb8j9vcJc1zn2/6GrYj7bCTMok=\nR:asinh.go\nZ:Q1/bTFU5TIKHUEt4Q5BRhHHkeZIX8=\nR:asinh_s390x.s\nZ:Q1qdCTBR4M1M8vmshnnWYPbRSX3sc=\nR:atan.go\nZ:Q1JD0tv9Cbzrg5S5+0pQKK4Lgh83o=\nR:atan2.go\nZ:Q1lyCgdF1xWOV/XvGy/h0LCCDld+E=\nR:atan2_s390x.s\nZ:Q1CAZabMjhmGYHGUc4VB2O3/XjGnE=\nR:atan_s390x.s\nZ:Q1RrHPRbdgpMNvpc7cXYvBr9IPitc=\nR:atanh.go\nZ:Q1Wfg+twBa1mOORc9TIDAmNRX/w0w=\nR:atanh_s390x.s\nZ:Q1RcHVpb0iJNo6dNuAkOPyy7I5d8E=\nR:bits.go\nZ:Q1WFqXgs83xhdNqQQRaofNT8J1Zsg=\nR:cbrt.go\nZ:Q14iolLRNd72s6G8oEQe/fhKj+SfA=\nR:cbrt_s390x.s\nZ:Q1Ro5WQz1F/6KoYnNF8zfv9IcgXtI=\nR:const.go\nZ:Q10YlJN0eZd/euZkURtaOLWCF0eZY=\nR:copysign.go\nZ:Q1pjuofHELJEBf6IlFKQL6851yDQ0=\nR:cosh_s390x.s\nZ:Q1HUqXk1ot7dAwNRzXlCHyDwB+r20=\nR:dim.go\nZ:Q17A8gpZzTpwKDy+RS43VC3WvaI0M=\nR:dim_amd64.s\nZ:Q1/h3Sbt78Y9oCCmO8WZcTv2cTojU=\nR:dim_arm64.s\nZ:Q1PZ4Rx6lT8YXKwvYKPn0nfSn2IwI=\nR:dim_asm.go\nZ:Q1SBaShZJU6Vp0ekgRD0MD2Dt3Iho=\nR:dim_noasm.go\nZ:Q1vJVs+RQVtCQV29mgclLQP5qAEn0=\nR:dim_riscv64.s\nZ:Q1rQe3xdn0qCoZKC7BOHgcTjCO4vs=\nR:dim_s390x.s\nZ:Q1YQDlGq9k5C5D2R6kI1TY1/SNCxc=\nR:erf.go\nZ:Q1dBH2ropoFE+2g0J0AWmc1pk79pg=\nR:erf_s390x.s\nZ:Q1056uIY1IRHKTF6dQi+WVJukji2Q=\nR:erfc_s390x.s\nZ:Q1S45miEmtpX6tBS4qMyKm7YlgD1M=\nR:erfinv.go\nZ:Q19dJWFrliG72fRXXf4AfjAj1aCTo=\nR:exp.go\nZ:Q1/GhoVQUc0ue82Xn9/8XNT1Upvck=\nR:exp2_asm.go\nZ:Q1RvHtyxqpVM6ATEAt/odxtZqGy5E=\nR:exp2_noasm.go\nZ:Q1m5wtL2BKCq/U0X4FCiyfGP/W9xM=\nR:exp_amd64.go\nZ:Q1HKs7TjbI/IKr8bGXEKA6h3LwYoQ=\nR:exp_amd64.s\nZ:Q1ZiB9I+uDLLxCgeIn+kahb299hNA=\nR:exp_arm64.s\nZ:Q1RCTigbYzmN2s9Mqm2XYAVNUxfh8=\nR:exp_asm.go\nZ:Q1BVIR6cs9qrM7G99uiPVbAZ6l+4Y=\nR:exp_noasm.go\nZ:Q15Rw7Sv/cgdfBsqHveoYsW6CCjNQ=\nR:exp_s390x.s\nZ:Q1GIz0TdCFyzskcT6FvyQmrJuUd+4=\nR:expm1.go\nZ:Q1zjvF0TmbUG4yAJAOpstEkIob7wg=\nR:expm1_s390x.s\nZ:Q1rZKAToLHYwQE3vUja636kJBZUFg=\nR:floor.go\nZ:Q1MBBJTqTST9uHPDePdCwN1K++2Fo=\nR:floor_386.s\nZ:Q1KandNr6WudhdGA1ZMrDyVEAdXVA=\nR:floor_amd64.s\nZ:Q1EBj52YDSlGqS10AtM9QuJ9+UJt8=\nR:floor_arm64.s\nZ:Q1tJiO9IV4QFPApT+pBhyea9D/aNM=\nR:floor_asm.go\nZ:Q1KO6yfCiBV3ANXNKBgsjEuzN369w=\nR:floor_noasm.go\nZ:Q1FNh0Q72rgn86mLozWYpq0gpmz7w=\nR:floor_ppc64x.s\nZ:Q1RigCn9FM/5DAffP/BLMpFA+z9/4=\nR:floor_s390x.s\nZ:Q1Rq2hHvtQls8vyKnMJEF0L1KSprI=\nR:floor_wasm.s\nZ:Q1NKilZzPz2FyPuSkzxL5za3n/KsE=\nR:fma.go\nZ:Q1hXH2LQHEeOXuWqyocuLPHX66cSs=\nR:frexp.go\nZ:Q1Tq6qkIJkxzt6eZyk2xuEpEMPvg4=\nR:gamma.go\nZ:Q17Glir6HbxqMcec27YaFwg5fvCcI=\nR:hypot.go\nZ:Q1yrrs3GKNj5LnE4pEX+mE8+ETc/Q=\nR:hypot_386.s\nZ:Q1Eo8lB9dxze88kCimvsIfKdFFpHY=\nR:hypot_amd64.s\nZ:Q1eeExcxI3n+GNbrYudRqtGZl66p4=\nR:hypot_asm.go\nZ:Q1dBfCWH3Ea/rScyanL7fo07ktrIY=\nR:hypot_noasm.go\nZ:Q1HEenewcXWfcJ1YRHXd5SzHUuPBI=\nR:j0.go\nZ:Q1DSeJhZpzAnTMAgTfhpSwuMC1Kkg=\nR:j1.go\nZ:Q1KoZmXLqCJ61TD/Teo5LBrR7d2UY=\nR:jn.go\nZ:Q1Zmo9agu1WrZNh+oxxy4QwYSAPd0=\nR:ldexp.go\nZ:Q1u9siKMRZy65ubfXxHMfr4DGMHmo=\nR:lgamma.go\nZ:Q1N2m0sSW13gC1nj0JsrnT1C0eNic=\nR:log.go\nZ:Q1nyrOy8IO5OMR6HZ/YUyKfAz61YE=\nR:log10.go\nZ:Q1osA4wWb56vRGdepNoLkiUM7Vzug=\nR:log10_s390x.s\nZ:Q1r86ZRZGmEBzho0mea7miDCTeRXg=\nR:log1p.go\nZ:Q1yO6Tf4uP/6kDJRYtvgBaDAsVkDw=\nR:log1p_s390x.s\nZ:Q1RgX+Dqmo8fi41vvODRsUeTHS9l4=\nR:log_amd64.s\nZ:Q1kkc32JkIHQflt6mkVFFP3+MGhaM=\nR:log_asm.go\nZ:Q1ZlukRc1uz21UGk8bqV2Ypx3/nCk=\nR:log_s390x.s\nZ:Q12Vy95eX0wsGlxc0vtHT7XyKboos=\nR:log_stub.go\nZ:Q1EWOVbNI+GwuvwsMxwSvEopwUwN0=\nR:logb.go\nZ:Q1jaPTAtmACJd6oj7UNLKk7VirKys=\nR:mod.go\nZ:Q1AeaU+qeVRb5dclx3gWkkQ/H+vCo=\nR:modf.go\nZ:Q1vcBferbtqSBJ44Ut98TCmAhlRHU=\nR:modf_arm64.s\nZ:Q1Ps2vDFH1R5b49yzOQbqEGmtV6OI=\nR:modf_asm.go\nZ:Q1u1df2ZMRoCtR9E6q/+kpsuIvv4A=\nR:modf_noasm.go\nZ:Q12uCeCqKbeFR1k7PuIhwYEBELCRk=\nR:modf_ppc64x.s\nZ:Q17RVTcHC5xrrJYl+dILbaGS5VUfY=\nR:nextafter.go\nZ:Q1Xn/5PwEeU29mjN9HHyKKeZV+Z2Y=\nR:pow.go\nZ:Q1eNT404YVpE6YWgESXiLvwCrvuuY=\nR:pow10.go\nZ:Q1lgajFmGlbWqhrmbZ34aJbjPH/tU=\nR:pow_s390x.s\nZ:Q1T9qPBojaUd3NnnMr7iQ3kITLcv0=\nR:remainder.go\nZ:Q1PL0irmb15tA0H7FUE0HYzSDcsaM=\nR:signbit.go\nZ:Q1kFp/n75vBr8dpuItW93K69lxwPY=\nR:sin.go\nZ:Q1YmfRlcToB47W8zLVEk+e+hNg1Bc=\nR:sin_s390x.s\nZ:Q1LM0gFpoXwqxYdZ/XZhE2WyRdyYs=\nR:sincos.go\nZ:Q1ZnIsmII+srYyIBo12agX5La+gqQ=\nR:sinh.go\nZ:Q1yvDBKtOHT1H7k0v1MVtRCsMYqe8=\nR:sinh_s390x.s\nZ:Q1JTS7SHYfd4tcLszfANC/KvWvVlU=\nR:sqrt.go\nZ:Q1OWRwOM4VCof7HcIi/He/oCldR9A=\nR:sqrt_386.s\nZ:Q1p8KAxmwUjTZEEHjRHANzl+ewDsQ=\nR:sqrt_amd64.s\nZ:Q1ng0UhVO42lqwVl/ump0ylGoJzLo=\nR:sqrt_arm.s\nZ:Q1l32SevrmOd78Nhqmcz+MvQqQnkU=\nR:sqrt_arm64.s\nZ:Q11mlpJSyS/oYxHFj3sma7wTjkhXg=\nR:sqrt_asm.go\nZ:Q1d2k4sJDhl4GnEaxzMv3fgLiY3k4=\nR:sqrt_mipsx.s\nZ:Q1R1uWru18bqn9yz0NX98hed7vPgA=\nR:sqrt_noasm.go\nZ:Q10VSKFBFTx1TDw67rlxT6RSgo6oQ=\nR:sqrt_ppc64x.s\nZ:Q1coe53/gQmZ6aRb9eGynvGG+jF7Q=\nR:sqrt_riscv64.s\nZ:Q1mQ7y6AEDlmWBDfOpXIcH2x3c3VE=\nR:sqrt_s390x.s\nZ:Q1a/6dwB64ZjRzAN7kWjlOiONPVKg=\nR:sqrt_wasm.s\nZ:Q1cBdEYwqUv2yLtBMAmb8GPn2LMUg=\nR:stubs.go\nZ:Q1MOU9Ytn18pcIHlENkb46Pkd8/3Y=\nR:stubs_s390x.s\nZ:Q1E0T9CHiGlV/7sSNrqGJTOOVyPDY=\nR:tan.go\nZ:Q1I6TfGE4dp8bsLhLQCQrZS2Fu8Ok=\nR:tan_s390x.s\nZ:Q1IJ66Z/ZRAe3DlzxgsGIa6gz4kYg=\nR:tanh.go\nZ:Q1gK1BVh/bC6wSTl21LNPJXBDOKa4=\nR:tanh_s390x.s\nZ:Q1ybuug8xk1N62uod3Z2PzJ9HkOzE=\nR:trig_reduce.go\nZ:Q1ydUDNai7dE6UjkPSyHTmvR2P8lo=\nR:unsafe.go\nZ:Q1U0vdyaGC9r5lUdmZIajuRaym6Vk=\nF:usr/lib/go/src/math/big\nR:accuracy_string.go\nZ:Q1S0VJgSkhcl4mQKt8GBW9kQrm/ko=\nR:arith.go\nZ:Q16rA+r0vTOEdzCnHt2JDcetK6gkc=\nR:arith_386.s\nZ:Q1NOWuP81QULIhWuwQYaAkWwtCnok=\nR:arith_amd64.go\nZ:Q1dfV4oCd3P65sHFg2DGB8wHT/NhE=\nR:arith_amd64.s\nZ:Q1AOhsFEuIAovs0xDs4hVfrlbQmrc=\nR:arith_arm.s\nZ:Q10pFFvRDylql9+JAQECdQAXxN1Bk=\nR:arith_arm64.s\nZ:Q1zoWzDTZA9IIUYBfhEuQzalEhJhU=\nR:arith_decl.go\nZ:Q1JNMQI7f9fe3AARu1UtvJLALWiDI=\nR:arith_decl_pure.go\nZ:Q1nC2wcoPaPsqt01sn/d1A/eC2PY8=\nR:arith_decl_s390x.go\nZ:Q1tBfFGxP2ttULuTd3+x4TKvC1nhU=\nR:arith_loong64.s\nZ:Q123EaFOE+wL6FMWtCRpFWsMFRbYw=\nR:arith_mips64x.s\nZ:Q1DqsS05/vI8m/VxNyZurhqX329rA=\nR:arith_mipsx.s\nZ:Q1uJcHkzcXpnVivAJqb9oSyKQZTKc=\nR:arith_ppc64x.s\nZ:Q1AXcQnLF6pSwXszRbDhMyHEJ3ftE=\nR:arith_riscv64.s\nZ:Q1VjKFYzLYkV28Cj2+W9tVUYY07QM=\nR:arith_s390x.s\nZ:Q16akQ86KM5irbaB9NDpNPXQUgTaA=\nR:arith_wasm.s\nZ:Q1+WBnMYb9aEuI3TIIaNrObGFbrXQ=\nR:decimal.go\nZ:Q15LzrWVHkqY3gsHdwdZd3v2bnOXs=\nR:doc.go\nZ:Q1NrH7ccVxshBuTHyQNuOMfI6NJfI=\nR:float.go\nZ:Q1LOFnaEpFOTM93YikS1EW76ly0t4=\nR:floatconv.go\nZ:Q110gF+7X7kTqedwjyVkFcVoKbCP8=\nR:floatmarsh.go\nZ:Q1EWaumeaPd4fFknOEqjQc5nuZjZ0=\nR:ftoa.go\nZ:Q1ToYXKSVDjSEc/44qdbUtUyCrbKs=\nR:int.go\nZ:Q1WkfdoORlTsxf06bDZzz208PyVHs=\nR:intconv.go\nZ:Q1h2qwSrAnGetpDwsmJGXzT8gm0Fk=\nR:intmarsh.go\nZ:Q1buMAKjzkElbcZmThdBKYbGplhts=\nR:nat.go\nZ:Q1ZYkWXVKin+upDn0IHxJpzzbxFCw=\nR:natconv.go\nZ:Q1360/ChTSabqeJakjiiSXvEO/exw=\nR:natdiv.go\nZ:Q1Kikpm1gJu8ujrUAs4QsOwUdbsIY=\nR:prime.go\nZ:Q12Bhqx8HkMr4/umKlXHbbVCLTk3g=\nR:rat.go\nZ:Q14vXlce3U7FZ6G1rCjQT0SWa7xgQ=\nR:ratconv.go\nZ:Q1ybRbggFzv75OxxL71lMJp2Ailts=\nR:ratmarsh.go\nZ:Q1KsKYMcuujXjLebZziiAMyaXWMZg=\nR:roundingmode_string.go\nZ:Q1WjIdNUQT+LKActsknnQyqBnHMXs=\nR:sqrt.go\nZ:Q1sSDkyjXghlbX7Xg28WNurtlVyBs=\nF:usr/lib/go/src/math/bits\nR:bits.go\nZ:Q1cFIZLvSvcRlfVasKTE2M7y+CH9E=\nR:bits_errors.go\nZ:Q1v3/pPbR2CP1PKQe7Pu+F6jk4QVU=\nR:bits_errors_bootstrap.go\nZ:Q1DE1BsXRwbU1CEqrGmHnfbhCxdzo=\nR:bits_tables.go\nZ:Q1VRNY0cmERY01CKVDItKVL1FjoNw=\nR:make_examples.go\nZ:Q1PZo8yEGAJGro3tQXQU8rePTsr/M=\nR:make_tables.go\nZ:Q1RIsN8w5PC1w1uI8iLds2sKQGIr4=\nF:usr/lib/go/src/math/cmplx\nR:abs.go\nZ:Q1pi5FtY0WP11uTppsUaIWSzt7rWQ=\nR:asin.go\nZ:Q1o5Y5DJc1VGHckZax4/hbOJsR6cY=\nR:conj.go\nZ:Q10cnRzOvXF1vrtYTZ86259DOscUE=\nR:exp.go\nZ:Q1ebpi1GYiGcaAZAjwq5HUZs99meE=\nR:isinf.go\nZ:Q1n2OojBtdJvcC5XsrvlpevDPNDQs=\nR:isnan.go\nZ:Q1wYE2KW5HqzsqzYKF2FF2iM7hF5A=\nR:log.go\nZ:Q16QtBx7RjTlRpFSoVi57G24NjTUk=\nR:phase.go\nZ:Q1AUrwWxtJ2amLJ6Oic63Wl9HtOrs=\nR:polar.go\nZ:Q1ZtZPlw64BOUGcxIu6nnnvfLCdyM=\nR:pow.go\nZ:Q1rlMnfjXbjFb7Vpy+pwdjMfYvMlI=\nR:rect.go\nZ:Q1pn6Rdtj6xmzGxhWqlbnXdW0SPN4=\nR:sin.go\nZ:Q1MgtcOZougYi1pmfrD7upOPE0/6g=\nR:sqrt.go\nZ:Q1K7qu/+yjyvQyR6MAjtM07PPxwus=\nR:tan.go\nZ:Q1lCxsFbtNvsKCRKrmKQ1imBOpA0w=\nF:usr/lib/go/src/math/rand\nR:exp.go\nZ:Q1Ai4V4GYf55iquQO2y3vJZDE9DB4=\nR:gen_cooked.go\nZ:Q1KD97VaICMKAWRGR4WaP0RLkIWmI=\nR:normal.go\nZ:Q1RtxkccrF9UAr6xTXYjBIIcRJDMU=\nR:rand.go\nZ:Q1C6Tc23RHQE87GKgTsDINKo+TII4=\nR:rng.go\nZ:Q1O/h2Z598K6vmA4rNVfFPWFr747A=\nR:zipf.go\nZ:Q1TSBzGJY1n43q03yoUCN7FiA6jLg=\nF:usr/lib/go/src/mime\nR:encodedword.go\nZ:Q18SBF/Am83XlWSzQVCoBjGJdDdIw=\nR:grammar.go\nZ:Q1Nx34owiETwT7cUOiNXqysAHyQ2k=\nR:mediatype.go\nZ:Q1uN6voLdOE1/Ig2DcmASzdZ0RXMQ=\nR:type.go\nZ:Q14vwx5SgDKLc+tHST3lD2ik9FWrQ=\nR:type_dragonfly.go\nZ:Q1+awkET+MLe1MJzSbzB9YIr05Ukk=\nR:type_freebsd.go\nZ:Q1+awkET+MLe1MJzSbzB9YIr05Ukk=\nR:type_openbsd.go\nZ:Q1udns4QlAKjXkeB/fNmfmAXkRE4k=\nR:type_plan9.go\nZ:Q16XpvGLuB6/kZ2MEO5h5ZjGCL6V8=\nR:type_unix.go\nZ:Q129GitNDKsSUgYSPrROiipyF43WA=\nR:type_windows.go\nZ:Q1oCVR41T0LATd5uzwl9zWOb2FtOY=\nF:usr/lib/go/src/mime/multipart\nR:formdata.go\nZ:Q1zRVVu5mjrm+85Scq2c8MAbXYw3s=\nR:multipart.go\nZ:Q1c9tX4+uL905bDV6IFSKmZmUsBBk=\nR:writer.go\nZ:Q1uBbLdOOIopxqRb26xQKlF/P3Zu8=\nF:usr/lib/go/src/mime/quotedprintable\nR:reader.go\nZ:Q1oJ+kn3uRbS2zo8EOYmZM+/YgIrc=\nR:writer.go\nZ:Q156nQF1G4R9xVWGOGqViqY+YCwl4=\nF:usr/lib/go/src/net\nR:addrselect.go\nZ:Q1r392fnQRhgQGcClaIpfSr9xgsNU=\nR:cgo_aix.go\nZ:Q1+FBTTdr0B45ZIrutZlUvUthf9zE=\nR:cgo_android.go\nZ:Q1LAtVEb7YTqA/hEnKlr6lHEmehAY=\nR:cgo_bsd.go\nZ:Q1b0E+8ULzONrKupfA4Yn6ju0iHLY=\nR:cgo_linux.go\nZ:Q1WlcXm6yRRdkPiBsGqoO2ARbvE8M=\nR:cgo_netbsd.go\nZ:Q13IoV/oqUHKuwI8ttC9jE+7KGrj0=\nR:cgo_openbsd.go\nZ:Q13IoV/oqUHKuwI8ttC9jE+7KGrj0=\nR:cgo_resnew.go\nZ:Q1T7Fa1nIucBFUG1Ae9KMeBm6qFnc=\nR:cgo_resold.go\nZ:Q1NYVqRi/OYbcEqV8a8qrXfBCDC70=\nR:cgo_socknew.go\nZ:Q1X+M0obOG15ZENg32m1b0xfH/uBE=\nR:cgo_sockold.go\nZ:Q1ob3kGL1OvF+6C2kh1chL9IXnRO8=\nR:cgo_solaris.go\nZ:Q1nMHI9HiCCp6xXGFbGY6y1/Jmj38=\nR:cgo_stub.go\nZ:Q1frqhYVtBdYCoFdtnLtgCdrguhgY=\nR:cgo_unix.go\nZ:Q164/xjQYaz7VHQndMIXNTuALiBeY=\nR:cgo_windows.go\nZ:Q1gKpoKDYAqzjzkVZ1sAGm5XixUgU=\nR:conf.go\nZ:Q1tnLjOwLUeQ6JFYs0ZWW/yR2Ohhs=\nR:conf_netcgo.go\nZ:Q1iDmlt9DmpHgajVBsksoiqmgSecA=\nR:dial.go\nZ:Q1tYEBonzopbZEHF471wkX+N1wSIc=\nR:dnsclient.go\nZ:Q1sR0ELV1NptCYQRZCTYp8Ik3wyWs=\nR:dnsclient_unix.go\nZ:Q1zQQTVs1THbQ73/yvGeQsZJqG/ok=\nR:dnsconfig.go\nZ:Q1SkfQzHUi+2WW0VZ/UdOl2oMXoV0=\nR:dnsconfig_unix.go\nZ:Q1raXkd4CXyE9mCamoaqDLkh13Ugs=\nR:dnsconfig_windows.go\nZ:Q1MpoxHrnUgnn0Ai7peqL1/reV6c8=\nR:error_plan9.go\nZ:Q1Y8RL2XjPDs22IXftUjP69UClN60=\nR:error_posix.go\nZ:Q1Z9BDWqXeHR+nNDbYsgE/CqaBlQM=\nR:error_unix.go\nZ:Q1R7/pin4AdFS6qhimEV/ri+KBs+k=\nR:error_windows.go\nZ:Q1pEvI+w6//4ex9q1GzwsnoZRACns=\nR:fd_plan9.go\nZ:Q1ELuKTQfTpKDX3ehu0A0csbMIc9o=\nR:fd_posix.go\nZ:Q1C4tzRSfND9+JFCS70RNmDFxpV28=\nR:fd_unix.go\nZ:Q1Oci8RdnNh47U+Z1EpPCxiaNVUDs=\nR:fd_windows.go\nZ:Q1dXfU4QKBHsuxj1xGaYmCfMvpXGM=\nR:file.go\nZ:Q1mcTF7xcv5SiMs3u7wzNJA5lLAZ0=\nR:file_plan9.go\nZ:Q1cWaxyECNj82xwNKAtaFV21qCxn4=\nR:file_stub.go\nZ:Q1XeLCxq/jnZlnVjS5rGypsGwg8iw=\nR:file_unix.go\nZ:Q1jRD4+GeUx34cs3KyvHDIQuevEYQ=\nR:file_windows.go\nZ:Q1P8BjFi3SeR5ZPWY895gJPWrf17A=\nR:hook.go\nZ:Q1yxq/My0fJ0DPIfwHuKm84v41stA=\nR:hook_plan9.go\nZ:Q1G7o/GPFOfH0bmd2oWRbi3j5eiig=\nR:hook_unix.go\nZ:Q1hMkQ3uCfY/Sh+ZU3g0GnUBuUA3A=\nR:hook_windows.go\nZ:Q1HmG85P+bjVErizgGjHOKSVLBHoE=\nR:hosts.go\nZ:Q1wbiR0JE5eUTFqMpuAFrkPe4Ysyk=\nR:interface.go\nZ:Q1Vl02CQTVJey6ZoAkDK6tOA7d2dM=\nR:interface_aix.go\nZ:Q1KoMcp9uNH8JbFuvj2EuS1EQiEu4=\nR:interface_bsd.go\nZ:Q176g6CYWZ70CD1SqQOMjIfh7L8Eg=\nR:interface_bsdvar.go\nZ:Q1DHvF6PDEBRWWIQk1KS2RKLamtuk=\nR:interface_darwin.go\nZ:Q1SDm7HDszhZFLvJIrqJkD5JsgZ6s=\nR:interface_freebsd.go\nZ:Q15zizfuIKzFntP3B4FYxtvRMqXd4=\nR:interface_linux.go\nZ:Q1ZrtPNNodhX4Qy9tup1vrrjlC+9M=\nR:interface_plan9.go\nZ:Q1gXF5UuYIKFZhuwKdJXiGXVbthlY=\nR:interface_solaris.go\nZ:Q1p6OrfB5NZQWS6Dhl4qLZsGm4umo=\nR:interface_stub.go\nZ:Q1dFetGoMr0+RXEA0AkX/ZoA3Y7+g=\nR:interface_windows.go\nZ:Q1MVeiXKxIXpEo4vt9YK7Kk6J49bY=\nR:ip.go\nZ:Q1mfYrL4VCxm+bpm8VBeG+kwt3Vr8=\nR:iprawsock.go\nZ:Q1o/5G5fDkdu+wFSRJEG4X+YFPk0I=\nR:iprawsock_plan9.go\nZ:Q1ejbQVNQHa27pgxVUJpJHPyk0dvs=\nR:iprawsock_posix.go\nZ:Q1gNdHaXIRV48iDInkKCb/02c5diE=\nR:ipsock.go\nZ:Q1Uxv9hYrsUDg2f1DoarbwS6ajVZs=\nR:ipsock_plan9.go\nZ:Q17z5gXrkchDIT5ovE3MnfdBfm4io=\nR:ipsock_posix.go\nZ:Q1UJZybjyAC1b3UdCCiFGSN1hMzcQ=\nR:lookup.go\nZ:Q14En86laaQj8q4VcT7VjobNJxbLc=\nR:lookup_fake.go\nZ:Q1M0dRtnay5T2qIdIFAEIYcP7lTF4=\nR:lookup_plan9.go\nZ:Q1a4WNRFcpMwLS5PX9L0PvcZO+R90=\nR:lookup_unix.go\nZ:Q1+8Usa7D5aDKPCxrkWOkG2P13nxE=\nR:lookup_windows.go\nZ:Q1yfPUHsyYeUabI9UKr17Cu9WFixA=\nR:mac.go\nZ:Q1INzyeDz5OnpOEYNhQUUD+jwPdkw=\nR:net.go\nZ:Q1mSJozJCFawFDz2NZg6mAM0nicfo=\nR:net_fake.go\nZ:Q1OGtnvDjYmW/LHyGWgxlMmT/tCOw=\nR:netgo.go\nZ:Q1tL8fKK5U00ZDokDIwY0ddXmJSUk=\nR:nss.go\nZ:Q1I7VLnimw2k5pW90AvqegYGGuHj8=\nR:parse.go\nZ:Q1sD9JTynvZhtlubY7e/X3CiA/Ukg=\nR:pipe.go\nZ:Q1IYiHsl5+s5iYNeHR9wZCD6oR53M=\nR:port.go\nZ:Q1NV2moyAQN+AM9hdpIeQpSK0GLFk=\nR:port_unix.go\nZ:Q1YqhM9csiM/2xY3p7c1w8+i8yMYQ=\nR:rawconn.go\nZ:Q1pozTk7xknVv56ewp9n2oYbGq1KU=\nR:sendfile_linux.go\nZ:Q1xoufgquBz6VQtxVO9zZ9um4PvyA=\nR:sendfile_stub.go\nZ:Q1UZckyEyVylsxl4hX+ZuBSdj7dR4=\nR:sendfile_unix_alt.go\nZ:Q184Ww4NABGnLKKQH0pyNy2PmX7J8=\nR:sendfile_windows.go\nZ:Q1B/ehvssND6Ue4Y06QjHZs4RcO0s=\nR:sock_bsd.go\nZ:Q1KwejF8Oem1USOTdwiDdHpdwc8JM=\nR:sock_cloexec.go\nZ:Q1D/FI/2cDtleFzoBAEA9P4dS8Eaw=\nR:sock_linux.go\nZ:Q1DKhsMxWn0VqYEwduzo5NMsWA+XA=\nR:sock_plan9.go\nZ:Q1eyfg0qpTz/Ch2TTC/ey5x3PDJ68=\nR:sock_posix.go\nZ:Q1BLW+rjYEv6rak/oASbMx+4cBbu4=\nR:sock_stub.go\nZ:Q1pIkBFTAv7PrptiHv7rQSVSZml1g=\nR:sock_windows.go\nZ:Q1X8Hsuwq779oVA8zWdm/MbYb7P+o=\nR:sockaddr_posix.go\nZ:Q1WwfowBkKfyeORiUQQitUflTceBM=\nR:sockopt_aix.go\nZ:Q18MFupK6PPkbNmaLPBf28UWgaXeE=\nR:sockopt_bsd.go\nZ:Q1GlAw7ysbEZKxjD7ZkUkaDOKSgKA=\nR:sockopt_linux.go\nZ:Q1npkFKxsIKF9x03vtY0aGBp0hRvY=\nR:sockopt_plan9.go\nZ:Q1OfnUbiaphyRpY56HEwbW8UOrcG0=\nR:sockopt_posix.go\nZ:Q1CLmG7skL6L8nFFTdeO1pM1A7XwU=\nR:sockopt_solaris.go\nZ:Q1npkFKxsIKF9x03vtY0aGBp0hRvY=\nR:sockopt_stub.go\nZ:Q1JrrXDv3aG2HjAI2Ds7oTn5pru7c=\nR:sockopt_windows.go\nZ:Q1j4XjOKiJyHTlmEnMRAs4pDmZ2AQ=\nR:sockoptip_bsdvar.go\nZ:Q1AawLTEiJLJFU06cxvOD6E4ikJJ0=\nR:sockoptip_linux.go\nZ:Q1+awrz3cOK1NQ6bheJpFns5lbXc0=\nR:sockoptip_posix.go\nZ:Q1nKlVhevQmDSHHI7/xuZDq9viWNY=\nR:sockoptip_stub.go\nZ:Q1PJGHviP96n9/aPlCsjiNbtEJi+g=\nR:sockoptip_windows.go\nZ:Q17okfvD2bhZs9cWGfoVm3BtAebCc=\nR:splice_linux.go\nZ:Q11cVfVIiHn+OJ1by+QpA/RIC4miQ=\nR:splice_stub.go\nZ:Q1LTeW0XgQO+s6N6gGV0v8+6rFyWE=\nR:sys_cloexec.go\nZ:Q1KjMD+fcTlFfKX6nWDA2ypaGdBbU=\nR:tcpsock.go\nZ:Q1dSdv2ohptmhzlCZ7Hsrt9swqtEE=\nR:tcpsock_plan9.go\nZ:Q1STOu5vIl1HTBrTScqxjng8KF27E=\nR:tcpsock_posix.go\nZ:Q1c8s+yAplRMlGM4bh9oxRXkOkyao=\nR:tcpsockopt_darwin.go\nZ:Q1Q4tQG1r4VFMZmIAynQ+G3w1+l+Y=\nR:tcpsockopt_dragonfly.go\nZ:Q1x7Cyig3QxaV2KZ+gng5JCs4C/es=\nR:tcpsockopt_openbsd.go\nZ:Q1ZBtJZuyyjDLmSEQmSOw9y96I9rg=\nR:tcpsockopt_plan9.go\nZ:Q1z1tR6R4o+msPNAOKr8aE6lwYWrQ=\nR:tcpsockopt_posix.go\nZ:Q1wc3GrnlS029UyhRmXW/llS2LuAc=\nR:tcpsockopt_solaris.go\nZ:Q1mNQksDm97lDCSJn5v7mU5CD+Aak=\nR:tcpsockopt_stub.go\nZ:Q1NhPenzkHvCQEs0+lrczYXhU6/6w=\nR:tcpsockopt_unix.go\nZ:Q17MrHV8RJ30/ggVWdPQmkWRZ0SIY=\nR:tcpsockopt_windows.go\nZ:Q1dG8OynszKV28Nq15jd4gXQUQ27o=\nR:udpsock.go\nZ:Q1aZwLk7tkrsiCcUyOzshGPR55dg0=\nR:udpsock_plan9.go\nZ:Q16Jav24x+6RE5iKoQm5/byZRoRhQ=\nR:udpsock_posix.go\nZ:Q1BOSRY2rAxlXAyMMgB0+fNuWR9Ls=\nR:unixsock.go\nZ:Q14aW4IglX2thZRobpDzgXMZVYmiI=\nR:unixsock_plan9.go\nZ:Q1TLgNkgwbuQr3JOfOkdJ1S/JO18M=\nR:unixsock_posix.go\nZ:Q1/crCod/BzVvenij3BFNWS/BNJlI=\nR:unixsock_readmsg_cloexec.go\nZ:Q1h1dql5/DET3nM0oSMEx+KCYPB9I=\nR:unixsock_readmsg_cmsg_cloexec.go\nZ:Q1hO8+SEQ5zo3eufJtMmK4TiBtN04=\nR:unixsock_readmsg_other.go\nZ:Q1PdDPEYpICeb34k7FnCplQIx7knA=\nR:writev_unix.go\nZ:Q1kKS3g38MiMX7KA48x5oEczzwgLk=\nF:usr/lib/go/src/net/http\nR:client.go\nZ:Q1it4IxmC4J389e3EkgWnFXvE6C6U=\nR:clone.go\nZ:Q1nebkxUScBibcKdJjQvFaq7RVfCU=\nR:cookie.go\nZ:Q1dEVaSrBErsrQJGCLhL8A7O3KBDs=\nR:doc.go\nZ:Q1COiBCdbHfN6jIfNXItC9opz3018=\nR:filetransport.go\nZ:Q1urnaEZAAeoP6D+Ho6R8tvsfJOzM=\nR:fs.go\nZ:Q1CTfgyVRMdxJhDJHtlLK0wv1u6so=\nR:h2_bundle.go\nZ:Q1K4Dx5v4Va9VvjUmeNwJSG4YfQbE=\nR:header.go\nZ:Q1G8zPlvNlly84emDQX4OxyIZunx0=\nR:http.go\nZ:Q1A+GGGYvo/fRF5KLukBKGhdmBUdk=\nR:jar.go\nZ:Q1lzkeseOgdc/sWu35xZa8UjY7m5w=\nR:method.go\nZ:Q1yi1pOPSPsThV+az2LSfJ6Yxy4mI=\nR:omithttp2.go\nZ:Q1EkrUOcZNuifqF+zJIdJZtIhtbCA=\nR:request.go\nZ:Q1FYmhJ7NFOaFn2O1givAtnSPILlc=\nR:response.go\nZ:Q16Hs/sU3WpiwgRyMrUd8cHP2tn0o=\nR:roundtrip.go\nZ:Q1Dv9W+AzIw1CJmwKvfBb9laDOspM=\nR:roundtrip_js.go\nZ:Q1ILXgUyaAsCfsCAAhIBrmRNhbpTE=\nR:server.go\nZ:Q1cjQlDqPdx/y2+2BL6Wmpsi/zu9g=\nR:sniff.go\nZ:Q1gVTyCwR/NpZsu2vWpaZweyYGjLk=\nR:socks_bundle.go\nZ:Q1HilQh77HMd61EtDyb/i/jGqMQz0=\nR:status.go\nZ:Q1xHv854V6u1uJSKFeCalfrhJaSb0=\nR:transfer.go\nZ:Q1I9iigdAXkeVOxla4cTPjsZJrbQE=\nR:transport.go\nZ:Q1Fdo5dzdCzqdRABbkjFPffey6Gtg=\nR:transport_default_js.go\nZ:Q1AB3zWy1NeXpGJLAtMjOy3Y4Bl8w=\nR:transport_default_other.go\nZ:Q1BPYW1YJzd/FYQ4AQVAgm9y56xak=\nR:triv.go\nZ:Q1Fa9Oszo6K0Qklt5V+pXjkt44rig=\nF:usr/lib/go/src/net/http/cgi\nR:child.go\nZ:Q1W4p5rneJO2OC7oq2SnmqxmO3PoQ=\nR:host.go\nZ:Q1qqYZ1lha4U2zyjMoyRgzL5c5ua4=\nF:usr/lib/go/src/net/http/cookiejar\nR:jar.go\nZ:Q1GqZ2S02/mkf68LGC3da8WW7m3lg=\nR:punycode.go\nZ:Q1n5ifZEv+cj0qFDpf3UHMdUag8hU=\nF:usr/lib/go/src/net/http/fcgi\nR:child.go\nZ:Q1pmsb0etyod/5loLsr3oPqXOxRLw=\nR:fcgi.go\nZ:Q1F4Pdx16bWr2++qCqvlYIkWRgW+o=\nF:usr/lib/go/src/net/http/httptest\nR:httptest.go\nZ:Q1JcLNo9TsTS4PejvWdJwdiU9ir8Q=\nR:recorder.go\nZ:Q1xBhIFh2ubJsbBgAt5NFmGAIxreE=\nR:server.go\nZ:Q1Ue8Ar/Lq0Ws/LeifmiSyOEm2KTw=\nF:usr/lib/go/src/net/http/httptrace\nR:trace.go\nZ:Q1P0MuYFaInkZuzJScSTSk4wPoHkQ=\nF:usr/lib/go/src/net/http/httputil\nR:dump.go\nZ:Q1QTJ7F5CiM3d4WciMu9N4gTu0o2o=\nR:httputil.go\nZ:Q1ub0nQzPV9oAA3k3FRB0YjgOSmI4=\nR:persist.go\nZ:Q1DJEvFpNixrLdCtVAPONRvsLJlf0=\nR:reverseproxy.go\nZ:Q1a1tL1luou2lY3U3xhp6tyG+pSLI=\nF:usr/lib/go/src/net/http/internal\nR:chunked.go\nZ:Q1jfIUw+o4/apg5eF/EI/n6BwbpK4=\nF:usr/lib/go/src/net/http/internal/ascii\nR:print.go\nZ:Q1BbxpUBsaw7UzUMdsmTNA643xFo4=\nF:usr/lib/go/src/net/http/internal/testcert\nR:testcert.go\nZ:Q1WVCI955conXupGeYW8NbaZCXytI=\nF:usr/lib/go/src/net/http/pprof\nR:pprof.go\nZ:Q1mHuwqxXQx6zYz4gBP3x2Ftuxp6Y=\nF:usr/lib/go/src/net/internal\nF:usr/lib/go/src/net/internal/socktest\nR:switch.go\nZ:Q1ZLCopYdKkXSZSulb0VgXdKI1CEY=\nR:switch_posix.go\nZ:Q1HWWsCDNQbFB99fzVocmSN+OAsNs=\nR:switch_stub.go\nZ:Q1ocDcnGaxhdVjBe7jI6OTyXLlydQ=\nR:switch_unix.go\nZ:Q1GuH9tdyyP/xQmbQvhSBsE4Hn0mY=\nR:switch_windows.go\nZ:Q1y78IcxxMQ6GBftzKiV2L2qvZsMI=\nR:sys_cloexec.go\nZ:Q1BA1Xm8IKJ3Lj/FUYlxTXfyoPCIU=\nR:sys_unix.go\nZ:Q1zF3IXp0xYPm2UoKF91frYibVaGs=\nR:sys_windows.go\nZ:Q1l2EK6rlX/3v+/8nag7zht9cjTjs=\nF:usr/lib/go/src/net/mail\nR:message.go\nZ:Q1L5hFqtDUoBow9s5MI/v+rRiLMvg=\nF:usr/lib/go/src/net/netip\nR:leaf_alts.go\nZ:Q1QmRkT0MGNjN86batpIY025aKRks=\nR:netip.go\nZ:Q1V5n6ZUQplqSxTuqaeSZGh4e84Jg=\nR:uint128.go\nZ:Q1W1DbD6BeHmsee4c+KxHmZZdlBzg=\nF:usr/lib/go/src/net/rpc\nR:client.go\nZ:Q1rEA09APiDny5rKGhMgKzzkXnyuQ=\nR:debug.go\nZ:Q1m/+u8od+HsS8Dd2Ck/V+ebw2aVo=\nR:server.go\nZ:Q1jHRIq1G/z3Zd7vsVcLxsoBGJ8Kk=\nF:usr/lib/go/src/net/rpc/jsonrpc\nR:client.go\nZ:Q1vFrDZn88ime9t83q5hZkHdp6LhQ=\nR:server.go\nZ:Q1n67EDQHyyngqx7QCxVSN6asDwpY=\nF:usr/lib/go/src/net/smtp\nR:auth.go\nZ:Q1GeXqsIpsh0NM6+xpMYwX1PfuO7o=\nR:smtp.go\nZ:Q1lE2WDVrBp6F9dH/OFUNK9SjsfTU=\nF:usr/lib/go/src/net/textproto\nR:header.go\nZ:Q1jCtENC37XHwt7FF2N7ZdAZgaJu8=\nR:pipeline.go\nZ:Q1xJuT++4J3dcF898JLx7y4z2xHzw=\nR:reader.go\nZ:Q1qS/hbO8Q9pMVEh9DWgGL0xRkwRU=\nR:textproto.go\nZ:Q1htoAqYIeOG7HPX+ncWQMnAOqfqE=\nR:writer.go\nZ:Q1mPondWFzvun+cSO5tTG2UUfHb5o=\nF:usr/lib/go/src/net/url\nR:url.go\nZ:Q1umwoLhBmcguLfpqhX+K7xTvA2Ho=\nF:usr/lib/go/src/os\nR:dir.go\nZ:Q1WTECqyapE1Azmf42ERKFTklTDRY=\nR:dir_darwin.go\nZ:Q1dE1veqWtlwxksvblM8JKEiMAKcQ=\nR:dir_plan9.go\nZ:Q1Cl8DgdC6h0a+b1IW34Qm/Dd8n/M=\nR:dir_unix.go\nZ:Q1gooTVZFLPhFm0fsfcmPExMB+odw=\nR:dir_windows.go\nZ:Q1E4BPEmeKprYnvb+xMLTKxelnPYw=\nR:dirent_aix.go\nZ:Q1zEnrT/QalKZ0io8nAJzvOlYh+qU=\nR:dirent_dragonfly.go\nZ:Q1uk65naEI2efTP9KaJdkBTxqOWDA=\nR:dirent_freebsd.go\nZ:Q1gaFub2p0YhCiChSXfyduElAsx+8=\nR:dirent_js.go\nZ:Q1wH5F+Wv3RfTUi2Oz10uPj1UwB08=\nR:dirent_linux.go\nZ:Q1wug7Ew0c3Dsi9hd7lgzmPojzrck=\nR:dirent_netbsd.go\nZ:Q1gaFub2p0YhCiChSXfyduElAsx+8=\nR:dirent_openbsd.go\nZ:Q1gaFub2p0YhCiChSXfyduElAsx+8=\nR:dirent_solaris.go\nZ:Q1zEnrT/QalKZ0io8nAJzvOlYh+qU=\nR:endian_big.go\nZ:Q1CUmN0eteSwBFpiXUXTjqbiWkESM=\nR:endian_little.go\nZ:Q10AXpTmKphSB2W/nkpJQPsoRQ2Z0=\nR:env.go\nZ:Q1CJzCVtN9duAudduDT10uTu9Utj4=\nR:error.go\nZ:Q1O7BuN5raZakVWSWPA5k1YMJP0WE=\nR:error_errno.go\nZ:Q1Ono1q/oJqwfSlRwGAm4p/CYc4XQ=\nR:error_plan9.go\nZ:Q1hEe3/mj+HOeQ4KCdZ5yJDsHEzm4=\nR:error_posix.go\nZ:Q1TJTPhgBxNfwaoEGS4dw6i0pePqE=\nR:exec.go\nZ:Q18na+wPS+skubjAWl0w2svU9bpRk=\nR:exec_plan9.go\nZ:Q1f4imMqgq8zf3ZHTDi5UfKiisyBs=\nR:exec_posix.go\nZ:Q1/4/yXtLE1Wazm7V6P1BZPZNLhZQ=\nR:exec_unix.go\nZ:Q1pT64PJWNFUBeWsmDYCYAGwLR/aw=\nR:exec_windows.go\nZ:Q1cOcQOH/tIwLaRoNmv8SAqQk6GHI=\nR:executable.go\nZ:Q1tcQldOBkI0g1Isx+4z6eek09Sxc=\nR:executable_darwin.go\nZ:Q1urVI5/IZzNFz09xsOxGRxhfsQA0=\nR:executable_dragonfly.go\nZ:Q1KcySpZrYuHD+qcAsKPFoWyxYtSM=\nR:executable_freebsd.go\nZ:Q1ZpI2NfkSxrVBB1uxxgNiUTdpaIE=\nR:executable_path.go\nZ:Q1+YC/9fnSQpymvLv34nFrP5fk2zA=\nR:executable_plan9.go\nZ:Q1raic2dSSH+kcum0jQvJO9UDFZ90=\nR:executable_procfs.go\nZ:Q12N6oKO8U5VCxM5eRw22ykF6yWhM=\nR:executable_solaris.go\nZ:Q1AYu5ErrB73qzQ+AfV2SOQReg8ko=\nR:executable_sysctl.go\nZ:Q1WO9XML8NC96hFyizVrt706WSR2o=\nR:executable_windows.go\nZ:Q197/FPkmDcoiK6hsCGBKYqqWdB5k=\nR:file.go\nZ:Q160Y2sfJd7MFSwDieNSok+nernCk=\nR:file_plan9.go\nZ:Q1QNJUm8fXeuMhqeQd5pWzy+YgF2o=\nR:file_posix.go\nZ:Q1v2mz9D4QdwTGpQrrmYPrs6negpA=\nR:file_unix.go\nZ:Q17Vpn2Z6e72ysBOabEd8F3X8Bk70=\nR:file_windows.go\nZ:Q1SsWpG2BwyxOcll57RKcSuSfGZmg=\nR:getwd.go\nZ:Q1Xf4tJv/+trUgpq0i8W7dW2hGJKc=\nR:path.go\nZ:Q1vpazHGBWf60IOIxp25GYmvRv0+A=\nR:path_plan9.go\nZ:Q1f/8gWotPL6ZeTYf6OlaMqAunMIY=\nR:path_unix.go\nZ:Q1l6CaEy6rIjj7l7yRhrg3FXKtzuc=\nR:path_windows.go\nZ:Q1CaE4OLeNLHr89ZjcXyLaWEZ6l6Y=\nR:pipe2_unix.go\nZ:Q1zJ4gS6NAP1pIXM8LGSFY4xhvB5I=\nR:pipe_unix.go\nZ:Q15NSLBWZi4Kq1TAda0ck29x07WaQ=\nR:proc.go\nZ:Q1+3sHA6k/BuaZT3tHat7l/7MfjV0=\nR:rawconn.go\nZ:Q1IVrJSOQ8av40/rQ6xCkHyASigfU=\nR:readfrom_linux.go\nZ:Q1S2HKc6RsOftb9mtt9rCi+pTA5Ek=\nR:readfrom_stub.go\nZ:Q18foJBGbGczWwrTR3GPCuNrx4FNo=\nR:removeall_at.go\nZ:Q1o9bNtHKMEkagdJMu7AxJ4VtvqfM=\nR:removeall_noat.go\nZ:Q1pl9PtNGxteDAF7cxJPV1ZtYkczI=\nR:rlimit.go\nZ:Q1pdwLQgoeH8xPLSbE7AKqklElNYM=\nR:rlimit_darwin.go\nZ:Q1NNLZUaojU41l7qYxzTHVstp6B2w=\nR:rlimit_stub.go\nZ:Q1ncqzcoVWWOmcN4qPzkruY1Ht6FE=\nR:stat.go\nZ:Q1m9CFYFU+RJCKrzppQW5+qvBGoT8=\nR:stat_aix.go\nZ:Q1ABDWNQP+fDCiPPgnJ3KwgSIxofQ=\nR:stat_darwin.go\nZ:Q1T3GAhipF0lWKJ/wpe+e1OPpc2uI=\nR:stat_dragonfly.go\nZ:Q1uZn/BCFGQ8ab7xUXGAQx13BxVM0=\nR:stat_freebsd.go\nZ:Q1DpEF6NZcQhKOUYRDZeagmiM7PAE=\nR:stat_js.go\nZ:Q1gjPpiwfvwpBikeeUTC472hywZjY=\nR:stat_linux.go\nZ:Q1uZn/BCFGQ8ab7xUXGAQx13BxVM0=\nR:stat_netbsd.go\nZ:Q1DpEF6NZcQhKOUYRDZeagmiM7PAE=\nR:stat_openbsd.go\nZ:Q1uZn/BCFGQ8ab7xUXGAQx13BxVM0=\nR:stat_plan9.go\nZ:Q1Cus96Ow7qmJ+vU3CBZdNpcMj4i4=\nR:stat_solaris.go\nZ:Q1iqdQMWdjCXoGRFf/+8/y41xmoRY=\nR:stat_unix.go\nZ:Q1IDIdSuqRPS0Ok3C+4XVZlSZogcU=\nR:stat_windows.go\nZ:Q1Nk2BCGnLiqRIaHsw9aggZD1BTnc=\nR:sticky_bsd.go\nZ:Q1it+7xe714Bls+wklBkca8DA45xk=\nR:sticky_notbsd.go\nZ:Q1RdqkItyqEvX0nnQCmej2UEW0ajg=\nR:str.go\nZ:Q1oZV1ym7tDxejslmIY24x3a8K3HQ=\nR:sys.go\nZ:Q1Qq4O0SjRTU9HaNFmvMwiFh6j0KA=\nR:sys_aix.go\nZ:Q16EOmrqLpEKKFEtnN8aBBEW9emWI=\nR:sys_bsd.go\nZ:Q1g9RvV2yBSmgN778jYXBapYixXkk=\nR:sys_js.go\nZ:Q1nAl5TBQnHFhehSvR6GP6PTFL9Yk=\nR:sys_linux.go\nZ:Q1FREl/UDe0CliVYZMm99VqrdyKow=\nR:sys_plan9.go\nZ:Q16We0LFlvDuvtfHMsyULVX5cNO6E=\nR:sys_solaris.go\nZ:Q1J+4KdT4CUZHYBr68HZ9rjvos9VI=\nR:sys_unix.go\nZ:Q1lO5VVjJB7VjTnr8l9JpbTDk7Ybk=\nR:sys_windows.go\nZ:Q1PkFWM8gnfou4nNVov6P4RdfcDu4=\nR:tempfile.go\nZ:Q1SQigacuYbMPJM3+oud4FZe/vppI=\nR:types.go\nZ:Q1l4PLRNkVU+6Vt+5CnzeQjxjJWjw=\nR:types_plan9.go\nZ:Q1hNeUg5qft7A02Rr+JTTP7ne7M3U=\nR:types_unix.go\nZ:Q1GHN/DI8+9/rjGJaG+X82+Bg6Amc=\nR:types_windows.go\nZ:Q1LnjwoY8q+JEtSgO6KTH81NTxed8=\nR:wait_unimp.go\nZ:Q1RYZZ6KEMoun6OuUsNuBhn+ZKT9U=\nR:wait_wait6.go\nZ:Q19fbB6zPBE17Hlf35450STl5ss28=\nR:wait_waitid.go\nZ:Q1El395ihM89FeAbEmSDRtSZouFlM=\nF:usr/lib/go/src/os/exec\nR:exec.go\nZ:Q1TvXyETG/QUm9aaJVCGA+yPndR8E=\nR:exec_plan9.go\nZ:Q1JRCAABH0eYAj8I4sxXmIM3BgEWM=\nR:exec_unix.go\nZ:Q1ycDa6Kdl4tGShM2omiUtEGShjpA=\nR:exec_windows.go\nZ:Q15Fq53YltG7hdZu8zkCqAqGOqZCI=\nR:lp_js.go\nZ:Q1eDDtu/b6HBc9tmrribRl1X1CPlo=\nR:lp_plan9.go\nZ:Q1UnguFEL40DKco1Zaq4g/Fn+/dEM=\nR:lp_unix.go\nZ:Q1mevX6zn6fz7qVmqa7y7dLSdAr2o=\nR:lp_windows.go\nZ:Q1HPYo+OQs1ZHgM4wB/s0rwtg5imM=\nR:read3.go\nZ:Q16xEMHXk1qFM81Resa4DiZjJ//hY=\nF:usr/lib/go/src/os/exec/internal\nF:usr/lib/go/src/os/exec/internal/fdtest\nR:exists_js.go\nZ:Q1VozprkpNBCNTFx/c4SF1KSjaMs0=\nR:exists_plan9.go\nZ:Q1qiXeAT/PBROZkjT46VjMSK8FbUM=\nR:exists_unix.go\nZ:Q1tUp1agT1Nw49Z9zC51TZ9pSl6Po=\nR:exists_windows.go\nZ:Q1CfcV9HMXYwnK4t86u5E1K557bgo=\nF:usr/lib/go/src/os/signal\nR:doc.go\nZ:Q1ezuA+6MlH89UPi9+wvr2mTIsECs=\nR:sig.s\nZ:Q1zETAlC0ttSn+v9ZaEkefixaZfjU=\nR:signal.go\nZ:Q1eC03koImSe6v20f5HisPXlFRI1Q=\nR:signal_plan9.go\nZ:Q1XquVAC+AuaJBVOdsQ9oDPNKo2YI=\nR:signal_unix.go\nZ:Q1wJisVi8moK3j4eah+vUMtxrKzUU=\nF:usr/lib/go/src/os/signal/internal\nF:usr/lib/go/src/os/signal/internal/pty\nR:pty.go\nZ:Q13eR4fddS5ilf1iS5rWeu1D/jSfk=\nF:usr/lib/go/src/os/user\nR:cgo_listgroups_unix.go\nZ:Q1FLd3H+/QhgalrS1VPGBGaSDdBa0=\nR:cgo_lookup_unix.go\nZ:Q1WNNQdwkRlhfn3kmU1rpC19G/fBc=\nR:getgrouplist_darwin.go\nZ:Q1ttLtI2/LQJ8vaTSwOwr2m6IiVMM=\nR:getgrouplist_unix.go\nZ:Q1P9kghC1WdVjapwT3PWLGhWoiKlQ=\nR:listgroups_stub.go\nZ:Q147cR3fJOQd7e6OMf9pHTe7D4ll4=\nR:listgroups_unix.go\nZ:Q1y+VgcZ5MpMYdrmNETexXJMs1Um4=\nR:lookup.go\nZ:Q1MGf92rkr3CzpgwhNbpQqCmUn01I=\nR:lookup_android.go\nZ:Q1sD5vT15L3AhdyFAGGYwVkTBEXf4=\nR:lookup_plan9.go\nZ:Q1ARLe6uZlqvGSqwPYTj2BiTDDIEc=\nR:lookup_stubs.go\nZ:Q1kkj8caF0zfHjmMe1tzERammv2Rw=\nR:lookup_unix.go\nZ:Q17mB9856A0GwxtSlQIZzxzlrMRCM=\nR:lookup_windows.go\nZ:Q1/h6197vOmmkHxwRsEdmTwj6oblY=\nR:user.go\nZ:Q1o2ZOgUTb0+U2uFKT1skbvDmtPDY=\nF:usr/lib/go/src/path\nR:match.go\nZ:Q1f8YTpDyOXzbuEZ7Yxk0w+3jnpRc=\nR:path.go\nZ:Q1nOPMYoLfOCOPSzE2qwgxO3x/tYI=\nF:usr/lib/go/src/path/filepath\nR:match.go\nZ:Q1VoZLEF2AWkeEPFFWZMAdfUsLlmo=\nR:path.go\nZ:Q1s1wbZnLDKpM4lG8QUb2Hh0rHWEU=\nR:path_plan9.go\nZ:Q1fEoBArafoPeQRonq6sB/dUyYsNE=\nR:path_unix.go\nZ:Q1GrN4cPTP2zZCxirRSYH72Dq5sP0=\nR:path_windows.go\nZ:Q1jCwPmkenlpAUGbWZpTMhSZSb03A=\nR:symlink.go\nZ:Q1WJBCIY0DhcOuW5123vWngVOX+l4=\nR:symlink_plan9.go\nZ:Q1TzaYzBTN6H55kk70dRQiI3NQUWA=\nR:symlink_unix.go\nZ:Q1MQR9SwpluiTiyrksNYMFtyxl1jQ=\nR:symlink_windows.go\nZ:Q1FrsLj1/m/fU0O8BLKbHibRLDFvU=\nF:usr/lib/go/src/plugin\nR:plugin.go\nZ:Q1c2XhnzenhRxhJtIiV1zyWz2OtJY=\nR:plugin_dlopen.go\nZ:Q15Mif0M/d3GnH9ZB2ujSdaoydJls=\nR:plugin_stubs.go\nZ:Q1idfyB4g2auelU3P/cXyjygMLHAw=\nF:usr/lib/go/src/reflect\nR:abi.go\nZ:Q1tQmcJxBLsYpVPoaXF7dB8PPAHTY=\nR:asm_386.s\nZ:Q17EsGAF6HWhjyd71PQxINviDB8sM=\nR:asm_amd64.s\nZ:Q1jqbY0JKsfDBPzIrB50SAqAKGe0E=\nR:asm_arm.s\nZ:Q12F5WSn6TkAxvx2VRhZG+wIwXXyA=\nR:asm_arm64.s\nZ:Q1Y3zgwOC4+XKjYTdCFHO13zirDKo=\nR:asm_loong64.s\nZ:Q1AmCWDBJZMoyB9VeN94swKlXB9Bc=\nR:asm_mips64x.s\nZ:Q139OWwP8P0uNRz8PvVWTb0NYR90w=\nR:asm_mipsx.s\nZ:Q1hqmK991ZDhfTeYNhKmcqcxQxZLs=\nR:asm_ppc64x.s\nZ:Q1Ebk2eA4jrFErclV5/vyjFGZORPk=\nR:asm_riscv64.s\nZ:Q1ghYOViMrHRhkRl8IRjLomC0dnB0=\nR:asm_s390x.s\nZ:Q17sI7DIuMwZNE/0UzRLhDgQagrNg=\nR:asm_wasm.s\nZ:Q1qtlRBJQLTYzWCTzR9v4xU2FFd1w=\nR:deepequal.go\nZ:Q17ytDeWIE2ike/PgezGnRn9UY4pk=\nR:float32reg_generic.go\nZ:Q1EhLHUCOxCXhbteNk6szwRuTIhgg=\nR:float32reg_ppc64x.s\nZ:Q1oehDJkyatbHhxMrdOs/Px+ZByIQ=\nR:float32reg_riscv64.s\nZ:Q1YtINplAI4A94KoBRMNt1XqgF3bo=\nR:makefunc.go\nZ:Q1lzFE82euAcXldSrIO1FZ6UtVNnQ=\nR:stubs_ppc64x.go\nZ:Q1IwJSL7rAzeVgiKNMgD8EVaJ3NtQ=\nR:stubs_riscv64.go\nZ:Q1H8ZMQnFxqAwm2RlzV3nkzxZ/Qw0=\nR:swapper.go\nZ:Q1ut+YiKNSie9aX6U3KxR8nW6lxlw=\nR:type.go\nZ:Q1VUTBHiDq04zZ7FX9NCzAdfzAl64=\nR:value.go\nZ:Q19EEWMrZdb7ytvZJO5YAo6f35xvM=\nR:visiblefields.go\nZ:Q1+Z04tWLkAVcTHoEC1BhrSP6yNvM=\nF:usr/lib/go/src/reflect/internal\nF:usr/lib/go/src/reflect/internal/example1\nR:example.go\nZ:Q1jZ0HZUmRccqiwF0MuaxlOU2A3Zc=\nF:usr/lib/go/src/reflect/internal/example2\nR:example.go\nZ:Q1D4jVEEc56uQF8WGv69ajfrNxpmI=\nF:usr/lib/go/src/regexp\nR:backtrack.go\nZ:Q1rodL3hHWjRZvA51f/7TVhW+I9Pg=\nR:exec.go\nZ:Q1Exl3ZZu4WoIVaA4LSnJJkp1uHjY=\nR:onepass.go\nZ:Q1tr0HHY/3lOcgnoeci73MutrfANE=\nR:regexp.go\nZ:Q1OZMgyv57uyssIzYyz1CAcBSOtew=\nF:usr/lib/go/src/regexp/syntax\nR:compile.go\nZ:Q1yis0lFURJY17Vo0dhZZxwnYpJcA=\nR:doc.go\nZ:Q1/RO4bA2/VxtzY9au3/13GrLym/M=\nR:make_perl_groups.pl\na:0:0:755\nZ:Q1SbtWYc9y2vR6hsO4JdJh7QXoHXI=\nR:op_string.go\nZ:Q1XuocYLoDjei2wRnjV4Q7gb8EEAA=\nR:parse.go\nZ:Q1jNbkKh6QD8bgfp2tMXyuzEgRODw=\nR:perl_groups.go\nZ:Q1m2HnKD16COJ3R2XW2pQaQsPwsuE=\nR:prog.go\nZ:Q1yxdvkUwx9+wAqdLWCtWzo+5/TLg=\nR:regexp.go\nZ:Q1iJV/9FtBqh7t0INrwSvidVFFk/M=\nR:simplify.go\nZ:Q1Efzgj4ZphmGQgRoaJNPXgoSmogM=\nF:usr/lib/go/src/runtime\nR:HACKING.md\nZ:Q1T0/LajHum95E3ASAgdUd9cSEDLw=\nR:Makefile\nZ:Q11WmmOzmPB61XO+QOvjNsZWno3vc=\nR:alg.go\nZ:Q1LS3MUGWCQ5UfC/1elzYGr4mxmAY=\nR:asan.go\nZ:Q1aU2UVCfaNr6xZbCrs6oYe0oqbPg=\nR:asan0.go\nZ:Q1YeV74JHGquqW5KDfgfyw13r4wTw=\nR:asan_amd64.s\nZ:Q11jPTdQYvH8aTqFQOGSDWAS15QO8=\nR:asan_arm64.s\nZ:Q1j9ciAM4vGsovsPrRnBzaYIAAG0Q=\nR:asan_riscv64.s\nZ:Q1hf9eHil+jozE28O9jiQupLIgAnM=\nR:asm.s\nZ:Q1vnglVUTEFpG2majkon8sKWS28yA=\nR:asm_386.s\nZ:Q1S9XFavTNsBdCOhXeJyIhTil55Q8=\nR:asm_amd64.h\nZ:Q1QDSIKHrKLhYiqL70ed7LkTk1tpY=\nR:asm_amd64.s\nZ:Q1UZN42YbTEaQPkvr7dJs/J7i6Ci8=\nR:asm_arm.s\nZ:Q1S5bjkUZzuPO/B6p0qNPo0nrdbSo=\nR:asm_arm64.s\nZ:Q10oRI0LwqW/kyYu/y2Xin5f0ASp4=\nR:asm_loong64.s\nZ:Q1BEySlo0XfGDg4t873+dNPFAbbcg=\nR:asm_mips64x.s\nZ:Q1mZQ1WfDbwW2PiP7dxQ5GitDS3GY=\nR:asm_mipsx.s\nZ:Q1LFhhP+wMIBIR7OLgAa01s0McOlA=\nR:asm_ppc64x.h\nZ:Q12IRqf2WhdQQu/t+jYH3/HQuuhdM=\nR:asm_ppc64x.s\nZ:Q1GY5IAnSzTqe752Ii39QnEWwJeeA=\nR:asm_riscv64.s\nZ:Q1PTIqog+c+ZSRwBXGTT4SokmtLWA=\nR:asm_s390x.s\nZ:Q1rO6HrHbIT4o4uwgCsvshbGAIGYc=\nR:asm_wasm.s\nZ:Q1SBe/mmp9FWYHvT5Pb6KZidKG0/A=\nR:atomic_arm64.s\nZ:Q1PL3KRpoaHpqF+ayaLN/F7iiYi3Q=\nR:atomic_loong64.s\nZ:Q1l8SpL7w2pEvuAUhcwOFgeBjz3/8=\nR:atomic_mips64x.s\nZ:Q1TWXlP84czrYTvkzoAN/3akRmQGg=\nR:atomic_mipsx.s\nZ:Q1rQyr0FBJA9x1AmT7T+eDluW1h2w=\nR:atomic_pointer.go\nZ:Q1MOJTSb6/4tAhlRtud9NVm+iVmbE=\nR:atomic_ppc64x.s\nZ:Q1KcHvUzJH4RWQ9da7f36582UuYnw=\nR:atomic_riscv64.s\nZ:Q1X6j74kCh9AMkZrfoX2Soey0hsRg=\nR:auxv_none.go\nZ:Q1w+XC/kdoIOj47lvWtFpHeQOMtm8=\nR:cgo.go\nZ:Q1OsP6N2Nvyc+RADAQKjtNyHble4w=\nR:cgo_mmap.go\nZ:Q17O9pT8XPky6KlAg7OqXNk3gmkmY=\nR:cgo_ppc64x.go\nZ:Q1Layr1YH8/HEckDWJhxiEl8lX9ag=\nR:cgo_sigaction.go\nZ:Q1TnkNHOlhGVbkJJoe9kE/TREfnaI=\nR:cgocall.go\nZ:Q10tf2i4UpklHsni9wkyX59JI8HZg=\nR:cgocallback.go\nZ:Q1ZR83vyTNxoLdw9ieXPxDXnVBzyg=\nR:cgocheck.go\nZ:Q1L9grr1yUg9Y8z17k3bojNNJfeTs=\nR:chan.go\nZ:Q1eAbwy0ZqhHekiHFofbHtP/Q63aE=\nR:checkptr.go\nZ:Q14RDb+wdVcogiRwp/firTH+MKA6Q=\nR:compiler.go\nZ:Q1T2gcl5SaT63EvlK9RGgtQ2+HsgI=\nR:complex.go\nZ:Q1VaN3mHMI0Se8D8A90Katxiydtew=\nR:cpuflags.go\nZ:Q1B7gXWnUgPeDrxlqHgGItlXD4uhI=\nR:cpuflags_amd64.go\nZ:Q1mocoMNXbqdIR0Kl40Hn10ABFOOU=\nR:cpuflags_arm64.go\nZ:Q1hl2+QMLrhSiW04Fjeb6QZUJN7M0=\nR:cpuprof.go\nZ:Q190FHvSmS1nXR3ZgjGDqkilF6h6s=\nR:cputicks.go\nZ:Q1Wn+hM0zq39+vcctc5/QODAGMnHA=\nR:debug.go\nZ:Q1OUiMTkVO0L0MoIT0YnGTZMnaA68=\nR:debugcall.go\nZ:Q16pAMtZmIHAcnw9zkUS3WqDGyf5k=\nR:debuglog.go\nZ:Q1lRmUnm39JgAykKekGM6JzDCwGI0=\nR:debuglog_off.go\nZ:Q1Vmqmv2O8cozWJw7b4/pztAKodbU=\nR:debuglog_on.go\nZ:Q19qzq6mcWHMpjGQuQfbL6yixEahY=\nR:defs1_linux.go\nZ:Q1MJAUieVsWEaFZAS8ADUP+L/ncbE=\nR:defs1_netbsd_386.go\nZ:Q1RzEMOKgxgqID/BwYlWgo7Mruc2w=\nR:defs1_netbsd_amd64.go\nZ:Q1Z17RAl/JbzR/tN2ZpikB+uL2jW4=\nR:defs1_netbsd_arm.go\nZ:Q1wAWp1ShVpSxW5Qy74X2i95s1Gkc=\nR:defs1_netbsd_arm64.go\nZ:Q1FvzWTpsGrmv4FWkWCHAxMKOfcwM=\nR:defs1_solaris_amd64.go\nZ:Q1nIuB5BLdW7ktWRaa5zew2cwaZs0=\nR:defs2_linux.go\nZ:Q1TGuqm8CUI3tH+Mf0auzA3dS8ZiE=\nR:defs3_linux.go\nZ:Q1SVamqLznQezR37aQxnQP82/EthE=\nR:defs_aix.go\nZ:Q15nLdhXWdBOCZPYTq/U6NtBukuzY=\nR:defs_aix_ppc64.go\nZ:Q11moHrXIXAfEoE66sJH56xkYxDi8=\nR:defs_arm_linux.go\nZ:Q1kDFfsBu1JKhm7/pLh+wzTyt/hPU=\nR:defs_darwin.go\nZ:Q1hq6gTwf3QO/hIwLtGtBNEPJbJ5g=\nR:defs_darwin_amd64.go\nZ:Q18P7S5UY43tnLLp5/hrTo4cMpc3M=\nR:defs_darwin_arm64.go\nZ:Q19HsfW4l08LPZrlNVjB3NY1LDqRU=\nR:defs_dragonfly.go\nZ:Q1hf5kXsLvMyjbf1iLGgjxsWIPyQo=\nR:defs_dragonfly_amd64.go\nZ:Q1cxh3sMtScwS9bOPwEWFwOAEGvRU=\nR:defs_freebsd.go\nZ:Q1gE8C3mGApyyEEGTNPSkogu51Gbo=\nR:defs_freebsd_386.go\nZ:Q1PsiV0/DZT2LFrr6lJF0ltaHHjW0=\nR:defs_freebsd_amd64.go\nZ:Q1n29Ve0PSqklk9S9t2mxyXVQUCrI=\nR:defs_freebsd_arm.go\nZ:Q1HNhyGo+Ib3nSAuN+wZGSBrqjIKc=\nR:defs_freebsd_arm64.go\nZ:Q1kI5Gdiw/mHh/92zGBWPRtT2Hmpo=\nR:defs_illumos_amd64.go\nZ:Q1KsWeQbpGcRWC8RTjs9VmWEzijpQ=\nR:defs_linux.go\nZ:Q1sAzBIK4jzlUdZquv5DkMRYQzcgw=\nR:defs_linux_386.go\nZ:Q1sE4Ae+VqYy2bK+agJDQU0fwlkTQ=\nR:defs_linux_amd64.go\nZ:Q1Lz8FzizCuuvt1FH5u6sy1VeNCH8=\nR:defs_linux_arm.go\nZ:Q1jXKxN44BqK0WQRwT7dHfyrBAueQ=\nR:defs_linux_arm64.go\nZ:Q11b8NyfwEIw8H34GjaxFIxzbpOW0=\nR:defs_linux_loong64.go\nZ:Q1g7fxWmJhbN96rk2yLUuwJ66jY0g=\nR:defs_linux_mips64x.go\nZ:Q1Bek2f+zlsaSTE066UJ25nBcpp/A=\nR:defs_linux_mipsx.go\nZ:Q1LlstK7qDw/xlbsEQ03k1ei+3eCE=\nR:defs_linux_ppc64.go\nZ:Q184qmKY+YApI9VJJ+uj5e4q606hk=\nR:defs_linux_ppc64le.go\nZ:Q184qmKY+YApI9VJJ+uj5e4q606hk=\nR:defs_linux_riscv64.go\nZ:Q1NtVXLvKOjJwxHQIZE3Sd8rXkeKY=\nR:defs_linux_s390x.go\nZ:Q1igvFBftnQfSgaIfFpR7XlRhvmdA=\nR:defs_netbsd.go\nZ:Q1ppIvZ+oLGgTEep56njbvGLIBWlc=\nR:defs_netbsd_386.go\nZ:Q1hpGezp1jipgAAO4mxMNpkIWxncI=\nR:defs_netbsd_amd64.go\nZ:Q1z+X02oJt8tCHwUWvTRGbgCw0Gms=\nR:defs_netbsd_arm.go\nZ:Q1Q4mPhnrvL8qodyfk4+aCNyTgfec=\nR:defs_openbsd.go\nZ:Q1upnpwYVPy7FxXwKq0cVcIrQnmjQ=\nR:defs_openbsd_386.go\nZ:Q1hSWQnwglJWD/LgJ3g+ZqdbRyi+M=\nR:defs_openbsd_amd64.go\nZ:Q1oqOJIRKUkSeezPYbyv5ClUEaIjA=\nR:defs_openbsd_arm.go\nZ:Q1lvIzvHg5WDzMVRcnX7AgOLqsn4Q=\nR:defs_openbsd_arm64.go\nZ:Q1UFhWtbBP29BUG1DnpF3nkqWuG6g=\nR:defs_openbsd_mips64.go\nZ:Q1KP+Tg6E/B3KMLZFSXWWy2QejWDs=\nR:defs_plan9_386.go\nZ:Q1WThqv7nje1TM+RWin1yEDfhpy4A=\nR:defs_plan9_amd64.go\nZ:Q1T1Lv7/pypWqytA/NZMfk3x8jiBI=\nR:defs_plan9_arm.go\nZ:Q1AG8wiTUdGZ/yU12+oaPsHqE7t5A=\nR:defs_solaris.go\nZ:Q1GjPmDY/8hHlIJjQbJm4xhumPGEY=\nR:defs_solaris_amd64.go\nZ:Q1hpao59bKmT2CrMxgO3IbFkWUkDk=\nR:defs_windows.go\nZ:Q1fDvea1mrvzmxLo2IUl5RnS0ebcI=\nR:defs_windows_386.go\nZ:Q1k1SGkSNjS+Wuh4RbqNTh+GoyvSY=\nR:defs_windows_amd64.go\nZ:Q1I+MeO5jrM+aPreDsBYOzs9yd7Qk=\nR:defs_windows_arm.go\nZ:Q1U3j7i65aoRPC7hdv1fhTMSyuguE=\nR:defs_windows_arm64.go\nZ:Q1E4FZUmJLZomfZx5LF698hggqXRc=\nR:duff_386.s\nZ:Q16w1L3soRuqPsfh1mW5B4ZI5VBZc=\nR:duff_amd64.s\nZ:Q12+BMaF34B9YOku8e2qCjme7pduo=\nR:duff_arm.s\nZ:Q19wWM90v967QkiQpT6qKNw0QbheI=\nR:duff_arm64.s\nZ:Q1oxZtj/6MkFi72GgpT+Dto51MLW8=\nR:duff_loong64.s\nZ:Q1btbGkpkA4rQItbEZ08Sk0Vdk8RQ=\nR:duff_mips64x.s\nZ:Q1EPx3ypTK5/nfqtCvZ4YyDH650Q4=\nR:duff_ppc64x.s\nZ:Q1ioMuROVMrrc9vxwGfNWOclNT4+k=\nR:duff_riscv64.s\nZ:Q17rq2ff0eHNGOHboYYbo3SePuHYk=\nR:duff_s390x.s\nZ:Q1PcwH8ZxayUZQQgiM9fyNQNUomVY=\nR:env_plan9.go\nZ:Q1xe9WcUPO8sAqZddg3lBlkx8lt7Y=\nR:env_posix.go\nZ:Q1NdrRjp26fHkc/UF++txJ0ptDzm8=\nR:error.go\nZ:Q1DZgUyYvEj+VLqWBsVvVrenxuYXQ=\nR:extern.go\nZ:Q1yxC7V6Pt+jfDObLYnmF90fDUcyQ=\nR:fastlog2.go\nZ:Q16RdDx1WUBagMypXkVJ7+s4QIn0I=\nR:fastlog2table.go\nZ:Q1JfDATan9ZjmFfuAkjDJJADCv8oY=\nR:float.go\nZ:Q1jZj79Xv4XMcxojEvgTaCGmUuBtY=\nR:funcdata.h\nZ:Q1W1n3AR70W//lKxC3srFNLJP6qcc=\nR:go_tls.h\nZ:Q13rRQtMwXAkqB3SkTLibbfEQ5F30=\nR:hash32.go\nZ:Q1ebIxkc/awu9zM8Z4B7Bu/ECfzDY=\nR:hash64.go\nZ:Q1p7TAEY1mNZKjyIe3eKnQN6oXQkg=\nR:heapdump.go\nZ:Q14xgtYcbw4f8GNyyPdx7vN93Grgg=\nR:histogram.go\nZ:Q134DC5vL0mZE9VFuWj6pUIwcA/qQ=\nR:iface.go\nZ:Q1372ATI56U/NcSKInfL1TQpcuuSQ=\nR:lfstack.go\nZ:Q1kpPbQJal2R25lMQcBz/Po0+gRIA=\nR:lfstack_32bit.go\nZ:Q14uW118UBnXK49UNN/qS7b0Nsv3g=\nR:lfstack_64bit.go\nZ:Q1qHwJSM/R3Xso5QqE2FmP08JBvJc=\nR:libfuzzer.go\nZ:Q1IZXo92G62tqTAoZ2JAHylJJkaDI=\nR:libfuzzer_amd64.s\nZ:Q17+DsPaB3jaz11XjFiRtOP2Au7SI=\nR:libfuzzer_arm64.s\nZ:Q1uiKG/GBlVTHu701el3BwABhzbsI=\nR:lock_futex.go\nZ:Q1Ku+ZeiCNvciWtRr2+ZYtnlTPZEE=\nR:lock_js.go\nZ:Q1tn3j99GjfX2D9YJkx8ShGhzWd6w=\nR:lock_sema.go\nZ:Q1aRmk98eeMOeXt5IZou2En2t08Ao=\nR:lockrank.go\nZ:Q1DYUXC0PSKsFpKLHd75Nmqpe7+gI=\nR:lockrank_off.go\nZ:Q1NJqi/5Ttoob/ixQCJieLKsWX90Y=\nR:lockrank_on.go\nZ:Q1iSoT9sKxR/duDMoEHwmPaqhc2/g=\nR:malloc.go\nZ:Q1ouvJcyBKRc1BD8PDV2R28XJNmE0=\nR:map.go\nZ:Q1XYiowRcSWuWVAoxBAoTKATx5FMM=\nR:map_fast32.go\nZ:Q1mRkmoUPa46JWK8iPHTh0fci1omE=\nR:map_fast64.go\nZ:Q10Zio5b5nHr1wcBYCS0nFPUYZ/Fo=\nR:map_faststr.go\nZ:Q1oyeKMUN64BRMx4dZP8JoZBjYo6w=\nR:mbarrier.go\nZ:Q1DH6suKahHC41uepGSwnkVE0fgp0=\nR:mbitmap.go\nZ:Q1bnpL9LRy93Y8ZkDfdyGx+MlNduI=\nR:mcache.go\nZ:Q1Ey6xk15vCn5lnYc/rE2CJx/iods=\nR:mcentral.go\nZ:Q1dzAMOmtk3bMTyd0X8HVwMTloMPY=\nR:mcheckmark.go\nZ:Q1ESPkm+kyLMgZ76FSui61ogWG9go=\nR:mem.go\nZ:Q14Km7b53eTO4frnqwpG6wtHWmwe4=\nR:mem_aix.go\nZ:Q1iy9PEVIsLQ4RKeerdZs1LAkUusM=\nR:mem_bsd.go\nZ:Q1VfL4vlfJAVpjwon/4MbYV17JeT0=\nR:mem_darwin.go\nZ:Q1xLfnjdUD3+NjmRfEzkuD2JOe3QY=\nR:mem_js.go\nZ:Q1erxF6OBiYkpU2VsYKybf3FFPyqw=\nR:mem_linux.go\nZ:Q1yawhHGzOCP/5mPOkgOCKK3ZD1Hs=\nR:mem_plan9.go\nZ:Q1v6NdJaTB2ErYJ6QGMClpYLlI5UE=\nR:mem_windows.go\nZ:Q1rYYh0dw4Q3dKb95UtMxmLwZRDdo=\nR:memclr_386.s\nZ:Q1PGnJjHE+uv2P2m8zk7IAgnt0ago=\nR:memclr_amd64.s\nZ:Q1LxQbmTkse1W8wjBekArmRDuQVCU=\nR:memclr_arm.s\nZ:Q1DFLbvTDQHZKoC1bK8/JxgAmAiTo=\nR:memclr_arm64.s\nZ:Q13zeWvOm1JaJGVqM6Z9vqHwuUEvI=\nR:memclr_loong64.s\nZ:Q1ODG77VbLrHAwxVU1BQT8RCMFPSc=\nR:memclr_mips64x.s\nZ:Q1G4DZuOlu3jlnHOSq0OJoAzS249A=\nR:memclr_mipsx.s\nZ:Q1VwaEYsPPFpg0Q8I73zx+3euv/Q0=\nR:memclr_plan9_386.s\nZ:Q1fPMaZkofWSi7wiaLlKUOy4LGWwQ=\nR:memclr_plan9_amd64.s\nZ:Q1BprmQUsPQFBZcWx02w5WhxScAIk=\nR:memclr_ppc64x.s\nZ:Q16h2zeDKJal4sXZBJY6AEkSmB7Ec=\nR:memclr_riscv64.s\nZ:Q1gP3I8cDcUrTtzjVSxfq/2buAJFc=\nR:memclr_s390x.s\nZ:Q1iee6kYXeelYH1BHiMyAWzJuzehU=\nR:memclr_wasm.s\nZ:Q1Gl4qE5e4HbfhEc/UPLrDXP1pgQ4=\nR:memmove_386.s\nZ:Q133efB3dWA0Or9lCnql5Vgo4sRMM=\nR:memmove_amd64.s\nZ:Q1VeTMnsPZrDMEJA6nSGnH0YbCdJo=\nR:memmove_arm.s\nZ:Q1+PqgvkQk3DiccM3CgKpy1iKlj5U=\nR:memmove_arm64.s\nZ:Q1eqB5Uf5QjIPwIVzaVh83OODRLcQ=\nR:memmove_loong64.s\nZ:Q1/Mob13AwvoZT+IsgOi4gfzUrQXk=\nR:memmove_mips64x.s\nZ:Q1vWgQDGGMAWI/Kh7CK/2zCd4eLK0=\nR:memmove_mipsx.s\nZ:Q1voEc6Ur8qY7htgq86i2m3Ancl8g=\nR:memmove_plan9_386.s\nZ:Q1At5POoZMDtj3ww0hkQnaJ2DfJMw=\nR:memmove_plan9_amd64.s\nZ:Q1JERTFuW0dA9aOP95GlKQb+MuP5Q=\nR:memmove_ppc64x.s\nZ:Q1zuDZjoEwH1VVzfpRDUMatVkW1lo=\nR:memmove_riscv64.s\nZ:Q14+2gHGZfyfAdUkoTolR0k/9Ormo=\nR:memmove_s390x.s\nZ:Q1wwuWA/9CYh4M50E/NZrRy3dZLZ0=\nR:memmove_wasm.s\nZ:Q16fWs2g91CQnxu6LPUXztui5+fe0=\nR:metrics.go\nZ:Q1Kv3FAfj7h6Y2qg7GNFmOkmNdwOs=\nR:mfinal.go\nZ:Q1UP0r8wybKw17VoK8NVUt3Xy3GBQ=\nR:mfixalloc.go\nZ:Q11MAeY5XTvM2GpoIfF/8N501LzEg=\nR:mgc.go\nZ:Q1dmHJev009LdeZMzgE3KU2KnAXfw=\nR:mgclimit.go\nZ:Q1/lJCoxUPHzFUw3SYmlUfIZ98e8M=\nR:mgcmark.go\nZ:Q1hjJrciWfsI8XRhO19txIJQqdtsE=\nR:mgcpacer.go\nZ:Q1RInFoxKxixNm5ArE9WwDPAyrYLY=\nR:mgcscavenge.go\nZ:Q1pCnHmPE3tWaApiPqm63EZosDh9c=\nR:mgcstack.go\nZ:Q1JWPjCR3bzDSWvcI+BEDlJWD3oAU=\nR:mgcsweep.go\nZ:Q1VZCZI+Needn7sAw/YgZyX5ULTU0=\nR:mgcwork.go\nZ:Q1bj8fV9/aeKAUgY+SQVBAwpj2crk=\nR:mheap.go\nZ:Q16BhkRuC4XAaDUZGc2KiVLLlFars=\nR:mkduff.go\nZ:Q1dy5Q37IG7dJUV8MvBjXqUZdMojQ=\nR:mkfastlog2table.go\nZ:Q1Im5U0EAGnRBVep/shAUEREQX8ss=\nR:mkpreempt.go\nZ:Q1oVWW35Sl3PKl7q5cRc9hVsGUH60=\nR:mksizeclasses.go\nZ:Q1xAaXTLRqM0ZGMYoAPmQ/GNuIbVk=\nR:mmap.go\nZ:Q1HNG2efccg8UefL/+7d9iAKVaTvI=\nR:mpagealloc.go\nZ:Q1OBb82RHuCBfS2yjJ8NLc2MwvGdE=\nR:mpagealloc_32bit.go\nZ:Q1CmdRLxsrb2gXTkBhc3oKk0ZxXPw=\nR:mpagealloc_64bit.go\nZ:Q1yw6xewoaeCTv90AnpzvdbLSpB+8=\nR:mpagecache.go\nZ:Q1bltDsHoHl4hYYUEfdFykd1ODnM0=\nR:mpallocbits.go\nZ:Q1d3AoxbwYfbHyzHxzusnUGMUKanI=\nR:mprof.go\nZ:Q1uj+uv6n5ax8HLyauUky7yHb63K0=\nR:mranges.go\nZ:Q1P2Z730oKel8uECTF2Qmyx77xSbA=\nR:msan.go\nZ:Q10XNQq+iE40hKTxAyQnmx7aaNs8s=\nR:msan0.go\nZ:Q1v8q2lLWldbvR6nLJTKzCnKJpntA=\nR:msan_amd64.s\nZ:Q1y87k5Zhbbu9BnivcjJoJgvnNZPk=\nR:msan_arm64.s\nZ:Q1D9yz0cHMLPuamXapbIs5xcQ6vM0=\nR:msize.go\nZ:Q1um9zt9kRmB3ij9cdFfyWs3xwLgk=\nR:mspanset.go\nZ:Q1sVOPYma1zRiVjITqNxAI1TveR3A=\nR:mstats.go\nZ:Q1+BbJ5lBgHw/lOjoKv9pIXj8OSOo=\nR:mwbbuf.go\nZ:Q1eZXYPs7e8iwnNvCLlwF790R0QN8=\nR:nbpipe_pipe.go\nZ:Q1jlQkeUN2aizXc/CEQjWbHCU+jkg=\nR:nbpipe_pipe2.go\nZ:Q1P96K26VMgUmo9vHZ12IEK2Por78=\nR:net_plan9.go\nZ:Q1ilD6PMIgUGpFpbM8q+2wknj6x9Q=\nR:netpoll.go\nZ:Q15j5dzEjVEClQeLiVO7mTOzb3Ens=\nR:netpoll_aix.go\nZ:Q1mp776+wlektv34yjgJ26vattOEw=\nR:netpoll_epoll.go\nZ:Q1qoG6lwC9axBbuBc7Ytw9yVAc9WQ=\nR:netpoll_fake.go\nZ:Q110ApR1Ipipg7/EwvtUCk/5yiBHk=\nR:netpoll_kqueue.go\nZ:Q1w1uhHHvKEBypIzKJMCSK99tfLHg=\nR:netpoll_solaris.go\nZ:Q1szr4WLMl50xdHrnOTH+t0UlXEOw=\nR:netpoll_stub.go\nZ:Q1B1Vvm+ivsn0ZjioZ0c7p7iSELDc=\nR:netpoll_windows.go\nZ:Q1FNjwjeW8K6vDGv7VlnMB4yEI8qQ=\nR:os2_aix.go\nZ:Q1imdrf5of/VFnAh7v8hEFvYLDSEQ=\nR:os2_freebsd.go\nZ:Q1QfwdaPh/jTW6fMJ5WSdFxaCoRtM=\nR:os2_openbsd.go\nZ:Q1C2v0GYpqwTYk2LM8Gx8eHxFl9v8=\nR:os2_plan9.go\nZ:Q1hW/lDSOx0JhbzyhNMvENjniP6mE=\nR:os2_solaris.go\nZ:Q1m5TcgCc6pPQMTpRGgvrfVrbACUI=\nR:os3_plan9.go\nZ:Q1/q+hOG0CW21BiNGEsvj6i51niq8=\nR:os3_solaris.go\nZ:Q1WVERnxQZA9thX+QGmtm/GiRm4NU=\nR:os_aix.go\nZ:Q1+uPV4Hc1lJ+LxbWYQF1cTo90U5o=\nR:os_android.go\nZ:Q1ToKo4vuBq+dUexvt4LTUPYFLESg=\nR:os_darwin.go\nZ:Q1JJkEs7z8NWjYT+UyLGLZVSkGyuA=\nR:os_darwin_arm64.go\nZ:Q1Yn7I1R14kSGX04kjHMIoRkDxEHk=\nR:os_dragonfly.go\nZ:Q18Q0dQNF2lT3Bg5VS8ha1UnKwTB4=\nR:os_freebsd.go\nZ:Q1h5BJckZkkN4oQ20OjDB3Vha9LOE=\nR:os_freebsd2.go\nZ:Q1xJbPo9Nl6CX0RoSptsL0p2msG4Q=\nR:os_freebsd_amd64.go\nZ:Q1l6QxBRdFBXGF6hkX8nmsWyu/T/k=\nR:os_freebsd_arm.go\nZ:Q1j1LOYe2I28PV16ZZQ5HGEMt9Fok=\nR:os_freebsd_arm64.go\nZ:Q1NpgYz/9Sg3fH6cucrlr/BJAm+js=\nR:os_freebsd_noauxv.go\nZ:Q1v1vZQap9jLP+4gIt+tIfXsudIrY=\nR:os_illumos.go\nZ:Q14W6xfNkQIBxF/vDvD1yx1LfLVEw=\nR:os_js.go\nZ:Q1PqrgP9cZC6zXV8ekbB5mMiPkY7g=\nR:os_linux.go\nZ:Q1raywnCyKI0rvZvYFTWNhAGH3FgY=\nR:os_linux_arm.go\nZ:Q11210S9syiLsw9g09TiH7vq2n31Y=\nR:os_linux_arm64.go\nZ:Q18HD+9uSMDHC8nkz/7lagIuaEXlY=\nR:os_linux_be64.go\nZ:Q1XgyEKj6fVbfV5B3z9xw5sFNZFPI=\nR:os_linux_generic.go\nZ:Q1A40vtupRsxx46RVscMY/JqQbwtE=\nR:os_linux_loong64.go\nZ:Q10kftwqY+EPqL35/rrkOz9LfiMtQ=\nR:os_linux_mips64x.go\nZ:Q1SVKpWlwnJ3oapv50+v1nnicmQ5A=\nR:os_linux_mipsx.go\nZ:Q1RuFtue/riAcmV0xkrq1dQllOtxQ=\nR:os_linux_noauxv.go\nZ:Q1eOKZLofBzrqkcLJCtpu48jA8SS8=\nR:os_linux_novdso.go\nZ:Q1dUq/ib4SCle5tjXUzU8Vc2n/MvE=\nR:os_linux_ppc64x.go\nZ:Q12YEAWNQEnRhOFtSXiuIkf1BzHk0=\nR:os_linux_riscv64.go\nZ:Q1KOi/MRY2ndESTPADXy5HrFQdcBA=\nR:os_linux_s390x.go\nZ:Q1MvRsQEZWTINIZMD6sISClQ8KrGw=\nR:os_linux_x86.go\nZ:Q1sgmmwyROpcHKbvs3Z8Q2n+Dk/Fw=\nR:os_netbsd.go\nZ:Q18OvrqvKxw5dkHfj7+WocZqTnYqo=\nR:os_netbsd_386.go\nZ:Q10+ZjA0rZ5wjeuVU36XDUPqmLuxA=\nR:os_netbsd_amd64.go\nZ:Q14D4L+tH0IFK2Vma2nVUsj/G5hBg=\nR:os_netbsd_arm.go\nZ:Q1qM2mpTOJ8skJZUJAQj1z0qSmwpI=\nR:os_netbsd_arm64.go\nZ:Q1V+LkJgtHB3MhSDDSZNb7Cg63vlI=\nR:os_nonopenbsd.go\nZ:Q1BptZUQXkXO8GtCqOvADTjU+Be1I=\nR:os_only_solaris.go\nZ:Q1SrhWAUycZ+Y7rvFBntt48IPD82w=\nR:os_openbsd.go\nZ:Q1zGcVyen5ODr2ESfrpFcCiO3Vr+s=\nR:os_openbsd_arm.go\nZ:Q1bor9Q0brI/donao5RcUg5eL60zM=\nR:os_openbsd_arm64.go\nZ:Q11SypxN7ImJPmAYPKlT6qitz+n5w=\nR:os_openbsd_libc.go\nZ:Q12QdGs2hxIV4AYeriIEGVKlfueRs=\nR:os_openbsd_mips64.go\nZ:Q1qnA5EvD29ItDOwxZga5Svia6RBY=\nR:os_openbsd_syscall.go\nZ:Q1bVL9sHx2CZiaGAzgNgdlruy5eLc=\nR:os_openbsd_syscall1.go\nZ:Q1+H5WTZDldtLLRGuqavfDG/oTfr4=\nR:os_openbsd_syscall2.go\nZ:Q1znL4pJE8RPsxXfNNCrEJna1/rJY=\nR:os_plan9.go\nZ:Q1NcJwowTkrkwbXr8/ZQSrDSGIwB0=\nR:os_plan9_arm.go\nZ:Q19t5rv+AAk3SpZKIU7MlK+8101QQ=\nR:os_solaris.go\nZ:Q11lo/ResdaFMYYFy45PeDtDbonbk=\nR:os_windows.go\nZ:Q1dJqnw5g591lNG49z7mXW7aNzyI8=\nR:os_windows_arm.go\nZ:Q1nLfRzTI9/58lBpIIOEgz5KIuFFU=\nR:os_windows_arm64.go\nZ:Q1VhYulO9YyMLsLG14//ob38CcLvc=\nR:panic.go\nZ:Q1njc0igjZowaooEx4hiV9CmN6EEo=\nR:panic32.go\nZ:Q1K2Ctt6UQJ9L3aUZrc4aRXEU/4KM=\nR:plugin.go\nZ:Q1RBR88nfA3Euc5HqOVMYySPyvj00=\nR:preempt.go\nZ:Q1Ags8gbGfSUHVLHJdV5jefklqZzw=\nR:preempt_386.s\nZ:Q1CNYRXjPucXlxgwfJrtYFeYvqsIU=\nR:preempt_amd64.s\nZ:Q1+KPyb8DiTn8bYcUrNagt1AcUgX8=\nR:preempt_arm.s\nZ:Q1loROaLmX1RWIjphkjd5deUCnYYQ=\nR:preempt_arm64.s\nZ:Q1IO4LJpdJ8CCtDRqbpYDVSnWKnLI=\nR:preempt_loong64.s\nZ:Q1W+r9MtUQ0xqin4EMWyXGQ5rxxGk=\nR:preempt_mips64x.s\nZ:Q1O9SZj93QibT7cR4Jw4kJ0t/0Ujs=\nR:preempt_mipsx.s\nZ:Q15FfeBm4HL1OztMyCxLOGzhf+1dA=\nR:preempt_nonwindows.go\nZ:Q1XHdJDeU/QG7zTQ2gTdKGT4qeosM=\nR:preempt_ppc64x.s\nZ:Q1xY4npaf9Wo9lC56P4bMYD+Pqnec=\nR:preempt_riscv64.s\nZ:Q1BoBHOum4q2Pct3Sw/xJO/Vcj1lg=\nR:preempt_s390x.s\nZ:Q1x/Az9rN2c1Q5dwT8E3MIzrR/V/8=\nR:preempt_wasm.s\nZ:Q1etrtSvyeUmx+k69ICLujWXxCUdo=\nR:print.go\nZ:Q1QCCoaebKIsZUkQtnLai2CNx84Hg=\nR:proc.go\nZ:Q1XBJ1manq0tZSFQpiga1AAhraI5k=\nR:profbuf.go\nZ:Q1S4SUlIKb9wlOfWgZkCAyCbGBQ7c=\nR:proflabel.go\nZ:Q1erBdZWRWgHT7rwvX5cdqZgjYkV0=\nR:race.go\nZ:Q1a5m5SpYET1TDzeitWRl0+cKin4o=\nR:race0.go\nZ:Q1l9hQ+URfJdR2R57EMQOLCsIfL+k=\nR:race_amd64.s\nZ:Q15dxavSm/GFPtGSsFrTma325ZH5o=\nR:race_arm64.s\nZ:Q1w+OihMk93fCVEudthJVKmzPfnK0=\nR:race_ppc64le.s\nZ:Q1yiUpyT5R3NtwYJ/8SvPtavNJ1iI=\nR:race_s390x.s\nZ:Q1/SfPXL1HbGgcaU4hZczLBhZrNIk=\nR:rdebug.go\nZ:Q1SF64+1HE7BTpFcSsKJA4yPf+s+A=\nR:relax_stub.go\nZ:Q10IGCeoFHL5wThN8nrOoW2D/bwag=\nR:rt0_aix_ppc64.s\nZ:Q1+BlZzeWaS0+SwuGZhKaHWBTQg6I=\nR:rt0_android_386.s\nZ:Q1wttW0qVTZSw4owNNiAYriSRUCCs=\nR:rt0_android_amd64.s\nZ:Q1JvV+9GeJ+xzxhru2kjp+nabzd/w=\nR:rt0_android_arm.s\nZ:Q1Lvq2eERbKkgCGToIViegcX3sDZ0=\nR:rt0_android_arm64.s\nZ:Q1LRAOXghDfeC+m8KJ/bSSXhIUvvc=\nR:rt0_darwin_amd64.s\nZ:Q1Hcne8FOnGAGBdmcLNqJhcgk5fp8=\nR:rt0_darwin_arm64.s\nZ:Q1i+jOv1QcWHCmQfsWfqoUqNHeYJw=\nR:rt0_dragonfly_amd64.s\nZ:Q1a4Jp1T2PoIoxCcyxeJeBIBcyuVw=\nR:rt0_freebsd_386.s\nZ:Q17ghraSPKBk4RVg0VEG71OgPLRAw=\nR:rt0_freebsd_amd64.s\nZ:Q1NLIfJ2dnu4fDJgffYYzN/UI2ycU=\nR:rt0_freebsd_arm.s\nZ:Q1oOxqYM6jGrO5ZvLYRcS42qQtpeY=\nR:rt0_freebsd_arm64.s\nZ:Q1/hGjulEGHGL8uRbEHh1giCzd6HE=\nR:rt0_illumos_amd64.s\nZ:Q1fqHhs0kzpH2DLqGNAvdg+BkFlhk=\nR:rt0_ios_amd64.s\nZ:Q1j+my1matXdK8YaBP7utIF69tOao=\nR:rt0_ios_arm64.s\nZ:Q1dq/9ZgIWVB9XuyObKtH0JyN+AkU=\nR:rt0_js_wasm.s\nZ:Q1QPUczgwCERDBq/HaGvGLb3UrtOs=\nR:rt0_linux_386.s\nZ:Q1+CA/lV/l3A3molhdFNb1+x0pOdE=\nR:rt0_linux_amd64.s\nZ:Q1WPSELvgum4s0I03ZR5JX45TOxfg=\nR:rt0_linux_arm.s\nZ:Q1NWB1Nn0I5fZkVaHEOcriAWVDYCc=\nR:rt0_linux_arm64.s\nZ:Q1s2YWHNzIkf6RIw+X+GoU5ypnQ0c=\nR:rt0_linux_loong64.s\nZ:Q17RGfP9ALS2P2AXlTVX1Jxc5AoM0=\nR:rt0_linux_mips64x.s\nZ:Q1mTflKWioZZjNF7ZcLiYekd5KltM=\nR:rt0_linux_mipsx.s\nZ:Q1ecjnjRcjbB5ulhLGcGPpd19EZaA=\nR:rt0_linux_ppc64.s\nZ:Q15dpqEI31jGmqFCLwHVQ0RwkJMZ4=\nR:rt0_linux_ppc64le.s\nZ:Q1xb8AQqFojC66zrwr7hZ1OtA8kgM=\nR:rt0_linux_riscv64.s\nZ:Q1XaWtmRc6GWtgDJUCNdVPYIAUMmE=\nR:rt0_linux_s390x.s\nZ:Q1ZXxRB72ITmRe6yR8gttM/lcFG0o=\nR:rt0_netbsd_386.s\nZ:Q1jb8CVzVF/QZ/ZAtnlLdAfu6x+O8=\nR:rt0_netbsd_amd64.s\nZ:Q1NmK8svFVwKuxu2M/OVsyKGJcEHg=\nR:rt0_netbsd_arm.s\nZ:Q1lzbX1n/o/m34pQqjHRlNHC14Vg8=\nR:rt0_netbsd_arm64.s\nZ:Q1+s9G1rxk4uVrOAsp/rG2GEnsizg=\nR:rt0_openbsd_386.s\nZ:Q1y2vgFHrjupWxe3cDbrbyDIrRcGA=\nR:rt0_openbsd_amd64.s\nZ:Q1HF5iicj95IHC4mePEvewIQ8HajI=\nR:rt0_openbsd_arm.s\nZ:Q10yX0XdHyVSBDSNlUqcAFOu/NrxE=\nR:rt0_openbsd_arm64.s\nZ:Q1pqYLvnFDTOOtBHjYOB77oHxbzkM=\nR:rt0_openbsd_mips64.s\nZ:Q1lC3a7ezX4vWis7Wi2zhYtAfmVms=\nR:rt0_plan9_386.s\nZ:Q1zwsVlYNg7zBhU3vcV5A6xYxlp8A=\nR:rt0_plan9_amd64.s\nZ:Q1co2Nt5InVYGE8GhwleOhdpmvfdg=\nR:rt0_plan9_arm.s\nZ:Q1+OJU3EYtbcHE28iCp9zAO1YLKHw=\nR:rt0_solaris_amd64.s\nZ:Q11kaRnysJIzurJPxVnDB1aDRclGg=\nR:rt0_windows_386.s\nZ:Q1TbW6b86u1GX1Ks1O4ih6B0zNBZo=\nR:rt0_windows_amd64.s\nZ:Q1OGcYTKyRZqtnIJyMf6BNsJD1vmA=\nR:rt0_windows_arm.s\nZ:Q14co6PlVu/oQsC2f6B3MgmSSfIIo=\nR:rt0_windows_arm64.s\nZ:Q18RLpFjhS59krr3QEI/oLz5a8Jps=\nR:runtime-gdb.py\nZ:Q13E1+KO5U0AX8ykdrUtBriLPFIwM=\nR:runtime.go\nZ:Q11yG9MP2VjxUrlJOXtbDxAc2jL2Y=\nR:runtime1.go\nZ:Q133n3giQ6HnRd0myAas5eQ7Nnzj0=\nR:runtime2.go\nZ:Q1N0A/Vzs0tx7DO8l6WpC0teT8dEc=\nR:runtime_boring.go\nZ:Q10JKTJb4GO75bJrUrlYnJpUx73mk=\nR:rwmutex.go\nZ:Q1FxCshnmdlJvYSaTxA9W5AqV7hCU=\nR:select.go\nZ:Q16lTUznFmpbuNqI/8+Qd5el77XjA=\nR:sema.go\nZ:Q1JyiH3ypVhuixLYksGgCpxxe5fDs=\nR:sigaction.go\nZ:Q1giSP9athDn1ndRAbgcqO4i4sms8=\nR:signal_386.go\nZ:Q1bbcBiBFVaHQTTyErdaM9WPtiJ2s=\nR:signal_aix_ppc64.go\nZ:Q1l9YXjkWNN/KBeJQMw58ey4xw6Us=\nR:signal_amd64.go\nZ:Q1xaDgSif7UMmaIwjGd9j8c5fem2k=\nR:signal_arm.go\nZ:Q1rsNvleuuttdB2tZx35poLcmVbOM=\nR:signal_arm64.go\nZ:Q1PxHh/El4xOgiHkygiKTLJMiOJ4E=\nR:signal_darwin.go\nZ:Q174+xkKybUilCyZCXJqY3ducF5NQ=\nR:signal_darwin_amd64.go\nZ:Q15j0miyjO8tPielMFIt0bHMGCnOQ=\nR:signal_darwin_arm64.go\nZ:Q1GrMT+VobW91Reb8+CCzxAqgitDQ=\nR:signal_dragonfly.go\nZ:Q1Ul3Id1bo7YK/d8hFmqF2p1l9o50=\nR:signal_dragonfly_amd64.go\nZ:Q12lA6W1AMVhq0XLlV+ATOYZiX2wg=\nR:signal_freebsd.go\nZ:Q1RHrvCY/5pqstzkpTIBH0E57DONI=\nR:signal_freebsd_386.go\nZ:Q1IM+PGcCyuHsaD0jq1bjeqc9CsSs=\nR:signal_freebsd_amd64.go\nZ:Q1YfCHSwUHsuFpH8t7+LQ/Q+GpoJo=\nR:signal_freebsd_arm.go\nZ:Q1sm3kJnnWVpI+FrVoSGKzvwqN8Gg=\nR:signal_freebsd_arm64.go\nZ:Q1wkn7JP9waraIh3w11xvqVhsw0rg=\nR:signal_linux_386.go\nZ:Q10usuduqnSs7TZQ/MRH2rvTESTaA=\nR:signal_linux_amd64.go\nZ:Q1jSnFj0OSQgxrOcId3a48Rz80txQ=\nR:signal_linux_arm.go\nZ:Q1snzuGV5PAG/6y/55QNaAeQfjzxA=\nR:signal_linux_arm64.go\nZ:Q1SLtd97xZM9K5PWdYIBqfQwymDbM=\nR:signal_linux_loong64.go\nZ:Q1BkhuB8dreGuOA5FPprPn6C27i/k=\nR:signal_linux_mips64x.go\nZ:Q1yC4uK2uH0dhp/MT6+hIA1YtoZiM=\nR:signal_linux_mipsx.go\nZ:Q1yNk4V7+qBUYtO1xawPM4cgF87cM=\nR:signal_linux_ppc64x.go\nZ:Q1Ql5gx/BI/OI+GjY0lWXs/Gn84do=\nR:signal_linux_riscv64.go\nZ:Q1dyHAWivtaR7n9R4mfX9Za782EwU=\nR:signal_linux_s390x.go\nZ:Q1oWpIjzjTqdWK3f16Ss8okWOG8LY=\nR:signal_loong64.go\nZ:Q1eom7yWf1Ftt8jaQPom5lxyTjrfo=\nR:signal_mips64x.go\nZ:Q1klKWstg76GNXN/2+2fA1xWD96YY=\nR:signal_mipsx.go\nZ:Q1GO26TBc2SGtb6Mr1UCl/ZSSvj1U=\nR:signal_netbsd.go\nZ:Q1nqSZ0IndyBBXbprlw/njnQICDqI=\nR:signal_netbsd_386.go\nZ:Q1uqhGjaMlovEQQbcuqDN+V76KXeo=\nR:signal_netbsd_amd64.go\nZ:Q1tLtoeDcG7+npWreHXGjIOr7htrM=\nR:signal_netbsd_arm.go\nZ:Q1j7BslkUvGFz7NbwBfVcapMxXIwU=\nR:signal_netbsd_arm64.go\nZ:Q1hQ8nOGLE2B2/110IO2ufU+/CUmU=\nR:signal_openbsd.go\nZ:Q1FXKp5LXLRuYmUpHq6JmoCR7RYNw=\nR:signal_openbsd_386.go\nZ:Q1QNTNWdIZoT6hknMavdZaiyXjNh4=\nR:signal_openbsd_amd64.go\nZ:Q177rbUfFTRhyB5xW+mkTdprKCaHY=\nR:signal_openbsd_arm.go\nZ:Q1mhTcuh+6Z01MaBX0aTvfPNhBhgs=\nR:signal_openbsd_arm64.go\nZ:Q1ji/7QIALdk7vjQSgKtwO1J+04P4=\nR:signal_openbsd_mips64.go\nZ:Q1HGVandAiJZjLIEdHiq1pAXjlBgA=\nR:signal_plan9.go\nZ:Q1tr99+Y1TYQLRD7SPP4MxEgJT+dw=\nR:signal_ppc64x.go\nZ:Q1HhsJYJHfZqK+TxFH9UquG802CT8=\nR:signal_riscv64.go\nZ:Q1lk36dxJ+5dtlRTvpZFzNBWkRp7w=\nR:signal_solaris.go\nZ:Q1LBSv04AzCB96ZTZOtbMsZjSsWEU=\nR:signal_solaris_amd64.go\nZ:Q1cvFZ+pR9Sy0AbyGGAcb/GRyJ6fI=\nR:signal_unix.go\nZ:Q16Eip3Sbat6tSCORW3RX5wHoisqo=\nR:signal_windows.go\nZ:Q1uXCAEfixSVdH1pWAYHlU7kbkFcc=\nR:sigqueue.go\nZ:Q1TUV3U2Y6yKbO9F1L9xv6bW7fPlw=\nR:sigqueue_note.go\nZ:Q1y/hirEoHlfnoevMixzbR4ckCRy0=\nR:sigqueue_plan9.go\nZ:Q11mYXZyV3Dwp8/PM+8U/gEtq3BWs=\nR:sigtab_aix.go\nZ:Q1Eqzr2dwo04uZtwiZTdF5+h6RPcI=\nR:sigtab_linux_generic.go\nZ:Q1kP7l3klLbkz2wnsdgftDL7Uo+xM=\nR:sigtab_linux_mipsx.go\nZ:Q1MYRHmvWxyij04PszE9AW/EwEDNA=\nR:sizeclasses.go\nZ:Q1eyp9mM28wQEWuhghAySh/vxaF9Y=\nR:slice.go\nZ:Q1+CQ+Su3cKwAUbxjea2ujh8PRt5I=\nR:softfloat64.go\nZ:Q1ld6Asa+V0JL39IvSjB7ndI13xHM=\nR:stack.go\nZ:Q1poZ5EjOwzJVuWqGTJehjbKljde4=\nR:string.go\nZ:Q1n4zHKgYe+DAaXsj9cjL1xPjqirg=\nR:stubs.go\nZ:Q1PFhexiOhZA88qzcyXm5UDK8Xyi8=\nR:stubs2.go\nZ:Q1YLf6aEC8SBWsSmt3UmyD0DE2wzQ=\nR:stubs3.go\nZ:Q1ponodZePKBZDziH7ggprt9j5BAA=\nR:stubs_386.go\nZ:Q1p8mEnwa+WOvfHPF8FC1Z/Dqn/UE=\nR:stubs_amd64.go\nZ:Q1MoUAzIaSZTTh8Z1tB1+J0QSkP+4=\nR:stubs_arm.go\nZ:Q1gORoUBoyKbHP5nGTbLBuXS7AScY=\nR:stubs_arm64.go\nZ:Q1zhPbrpMOYgPEtTAzTHJER6A/1xI=\nR:stubs_linux.go\nZ:Q1rWvUCXJFv2WqxLW91Qnw2v6NHRs=\nR:stubs_loong64.go\nZ:Q1Ura1TRM5d5or9PXpFtyzN0zTWQs=\nR:stubs_mips64x.go\nZ:Q1Esb1JwezWfelHPBwGGrbTvTEQCA=\nR:stubs_mipsx.go\nZ:Q1XndacEGeSqKEj9CzBh162/V+q2A=\nR:stubs_nonlinux.go\nZ:Q1fiMvl0G6gnRoEOFMI1wi+rnVWhU=\nR:stubs_ppc64.go\nZ:Q1Ff7cXfqtCQDBvnxnymEGEdrWkwk=\nR:stubs_ppc64x.go\nZ:Q1lg66tQw2IW6nm47UNf5VrNlN8dk=\nR:stubs_riscv64.go\nZ:Q1UW7tLmuDsLy3uoc74HxLjcXKr3Y=\nR:stubs_s390x.go\nZ:Q1xoxUJoPlnBvnJxFreh/7G+Z0WnU=\nR:symtab.go\nZ:Q1KnlDy9iMKV4YTmkkn0C5M/U7WS0=\nR:sys_aix_ppc64.s\nZ:Q1AFCfJTDGNrMcQtQIjisNir5/m/c=\nR:sys_arm.go\nZ:Q1jRMGe6v7f1uUm58sxTsyIH8lPQ8=\nR:sys_arm64.go\nZ:Q1yhOWipYsCZi9vs4t3wgmPLUVUFc=\nR:sys_darwin.go\nZ:Q1t5YXddYBTZX2dDJOmqoOVcnGXNg=\nR:sys_darwin_amd64.s\nZ:Q1Rq120+MwTorO5ComL7Ze0PXLI6M=\nR:sys_darwin_arm64.go\nZ:Q18xOLPgIlWnaUri1fgB4gtHVVHYQ=\nR:sys_darwin_arm64.s\nZ:Q18CbRAfbvjCjmdy0/jbAi4bkorwE=\nR:sys_dragonfly_amd64.s\nZ:Q1bsT134sgijko02+MdQEKv5P34eQ=\nR:sys_freebsd_386.s\nZ:Q12R7FAsf9biOTkGlDQOhiPahxvMU=\nR:sys_freebsd_amd64.s\nZ:Q1UH/ihFwBs5JK8IIP+8ZlUVlRbmo=\nR:sys_freebsd_arm.s\nZ:Q1qDh1iS0CtFlQPgeUifywlImEKF8=\nR:sys_freebsd_arm64.s\nZ:Q1ZK0VOqfAVnFtODi+CyqkpnHaiu4=\nR:sys_libc.go\nZ:Q1ix+HZWjQCoV7008di6PfDlvBBwE=\nR:sys_linux_386.s\nZ:Q1DgZ3m2x0brdrNXZRd9og9nA0rf8=\nR:sys_linux_amd64.s\nZ:Q1zB/hrmo5ea1B0fXfz+bAr4cwgu0=\nR:sys_linux_arm.s\nZ:Q15FLCIzaSUjTCBOORTehpi+2yR9A=\nR:sys_linux_arm64.s\nZ:Q1V+lIqhcbA8WBK54OQ8Wx14KPnBI=\nR:sys_linux_loong64.s\nZ:Q1suep7WAW0T6Zjm8QJDf0TgsAl8o=\nR:sys_linux_mips64x.s\nZ:Q1NnYmfCP8DKn9aK+KKq8BzzCuZ1M=\nR:sys_linux_mipsx.s\nZ:Q1HWQJM+UfMk6mOitaN80KPJECpvE=\nR:sys_linux_ppc64x.s\nZ:Q1P7jxL/7UfmpV6GhlmS8W9SVb0E0=\nR:sys_linux_riscv64.s\nZ:Q13Kr1htyx6ss6KhpNuebOcOKMYrc=\nR:sys_linux_s390x.s\nZ:Q1KSvvFmtVbBkHoAQQ2+gW6/nzgw8=\nR:sys_loong64.go\nZ:Q1p2TZkeygVssSkYbFEMOaVuklNEw=\nR:sys_mips64x.go\nZ:Q1+R77IkH4jpUG3OAzL+8vqtehBSE=\nR:sys_mipsx.go\nZ:Q1L1srMaxqIVCEb9+kk0avSXBeVnU=\nR:sys_netbsd_386.s\nZ:Q1VC8RsQ0HRrgrBXWj1XNriO1+eLs=\nR:sys_netbsd_amd64.s\nZ:Q1pVbZvqsXNEd+pd2p+k52LJzwaEQ=\nR:sys_netbsd_arm.s\nZ:Q1zzXULOwYnjO+Wvvdk8hiZ57wNu0=\nR:sys_netbsd_arm64.s\nZ:Q1edPn+J2FFcwpBHTbwbknY1McGi0=\nR:sys_nonppc64x.go\nZ:Q1hzGSKuwhMXPeYIewubJ3wjmFkmQ=\nR:sys_openbsd.go\nZ:Q13AXAH0CpW1jsFxRE/xrSTAgMst8=\nR:sys_openbsd1.go\nZ:Q1AzC9HvRf2Crzq1SeeougiY5Ydfs=\nR:sys_openbsd2.go\nZ:Q1iHjlQKEpQ/7WguWVTRBNkpAs0rI=\nR:sys_openbsd3.go\nZ:Q1DC8hlVRtc68NdGZiSERqUgADr+4=\nR:sys_openbsd_386.s\nZ:Q1/asx4tS3xQS5W5s88otvhe48bxc=\nR:sys_openbsd_amd64.s\nZ:Q17w0JtWudI0TOJ522Q3jYfJaig14=\nR:sys_openbsd_arm.s\nZ:Q1s1KOaaQDHur51mHLZpYAZdDrmv4=\nR:sys_openbsd_arm64.s\nZ:Q1fHzhdBj4gWDTXWKqVvevyu5d0ZQ=\nR:sys_openbsd_mips64.s\nZ:Q1Yi1hxjtxK6+4Q5hOKR2O33uDylw=\nR:sys_plan9_386.s\nZ:Q14TFhpXyGs+/DIaGPRZQ9dUH3sZQ=\nR:sys_plan9_amd64.s\nZ:Q1Tqd0fF733Yrl9WB75Hq95w51h9c=\nR:sys_plan9_arm.s\nZ:Q1NEMlCPyZvNiBjePgyvWu8+oMPUE=\nR:sys_ppc64x.go\nZ:Q1tphWGrN95JUVhDw3iH4en5POE4E=\nR:sys_riscv64.go\nZ:Q13ZYsTjFGQUjI03tEv5hBvoMF0QI=\nR:sys_s390x.go\nZ:Q13ZYsTjFGQUjI03tEv5hBvoMF0QI=\nR:sys_solaris_amd64.s\nZ:Q1ECM/uHynU0gMABTDAUQIyEdR224=\nR:sys_wasm.go\nZ:Q1Mv+I/61Vs0yhPflBTZv+T8F8Kdo=\nR:sys_wasm.s\nZ:Q1ZRnYN/BD661iAeYW6N6CZsDPdmQ=\nR:sys_windows_386.s\nZ:Q1WbsIkiaXmT19wihFsKA5lXBgjaM=\nR:sys_windows_amd64.s\nZ:Q1g/8QKLXLkSrhw+UlHJnjiNpPftU=\nR:sys_windows_arm.s\nZ:Q1c/Q9cd6SvpDN8CXjtegtP3fJ/WE=\nR:sys_windows_arm64.s\nZ:Q1wkpLAULCcUYm4/j6p9X0Oikjc1M=\nR:sys_x86.go\nZ:Q1NJK3a7HkatfJCo/gegAEAFwhics=\nR:syscall2_solaris.go\nZ:Q19nLEsMBT0ZGFHtRNlphOo+oJ7uQ=\nR:syscall_aix.go\nZ:Q148476J3R5fo53/ckg+mEL/UJYY4=\nR:syscall_solaris.go\nZ:Q1HosYqjkDM73l2c/6uedh79xxriA=\nR:syscall_windows.go\nZ:Q1DmBQ/kCdXwwP7mK4MF+BQq/Mk40=\nR:textflag.h\nZ:Q1gki+4JwChxwAebk4uxBHfXzAsAQ=\nR:time.go\nZ:Q1HCqIaa+CjwwobLa9T2S7+ejDshs=\nR:time_fake.go\nZ:Q1DXf8sdco7vfXxzyWxOKdslTLBWA=\nR:time_linux_amd64.s\nZ:Q19SPt9kL0NfWFVOdodT/bnXCT2fk=\nR:time_nofake.go\nZ:Q1M69nnHi2Y7QrPFys1ONzsGd3stQ=\nR:time_windows.h\nZ:Q1CBwdhzAAzENaVOgcqYAYFINght0=\nR:time_windows_386.s\nZ:Q1+zWM3Gv2PPHRmjn0VePtDjyQkKk=\nR:time_windows_amd64.s\nZ:Q1kJIJqh3iugOrmKg/HArhpRjQ5C8=\nR:time_windows_arm.s\nZ:Q1euYH+VWcF1qkv81PhspY0t0j/y8=\nR:time_windows_arm64.s\nZ:Q1lt1yyB3swzQHYtVvHvsH0caFolE=\nR:timeasm.go\nZ:Q1XpcQkK1PjOkdb9FMzVzuOVIcGsU=\nR:timestub.go\nZ:Q1E25ehXIb+Vd0SeDlD3JCbpcdN5U=\nR:timestub2.go\nZ:Q1U6fNPRBwpWdIHwWppWVRyVbO5a4=\nR:tls_arm.s\nZ:Q1qR26s82Sf8MP9h4uHtz7Yr19LWk=\nR:tls_arm64.h\nZ:Q12u9liXT6CQxN7K6qMMAQ06kvWN0=\nR:tls_arm64.s\nZ:Q1tLH7Pkdtx6uB2AMyqTBTzmTzpfI=\nR:tls_loong64.s\nZ:Q1IeAGbga6GlHXG26j8ivaJPRH5E8=\nR:tls_mips64x.s\nZ:Q1Ux+cQLq4G5YJ8/mkN/j3pb1CA/8=\nR:tls_mipsx.s\nZ:Q1zFukkl6sL+DrNFearRVV2I8zCcg=\nR:tls_ppc64x.s\nZ:Q11sd6u0o36NUM+qgI2tn+zYv+gxg=\nR:tls_riscv64.s\nZ:Q1j4aseMCzD4CNc5wvUK4qR8l6yeo=\nR:tls_s390x.s\nZ:Q1OCACCCLXuM+WGXac3nD7LAATCxM=\nR:tls_stub.go\nZ:Q1rrQ73dZQIO87P1cc3EiHZuhCtSk=\nR:tls_windows_amd64.go\nZ:Q1Kj9JCPUL4LJrcKSaC8kqkKSM72Y=\nR:trace.go\nZ:Q1/8LbOg0Qj7sc+t8b8n7q806bYlc=\nR:traceback.go\nZ:Q1GQgAlL/HaL1UUfOVj2QwWk0zjDw=\nR:type.go\nZ:Q1vBWkaJN0KlGmI3Jw8eSVzsvsmu0=\nR:typekind.go\nZ:Q11a8c5I0Eqa/wInLKsd7BmiLXNVQ=\nR:utf8.go\nZ:Q1MyN8KJLl8WvcKOHaTwz4Fz0Nzcc=\nR:vdso_elf32.go\nZ:Q1E3bM/hL2CZMs2e6DG+DVPhIPxII=\nR:vdso_elf64.go\nZ:Q1x97XH7zj6Nchl/kAFRsrIHAUvxE=\nR:vdso_freebsd.go\nZ:Q1ymEe0oFmaHMWJyuhT9CtXcQN2DI=\nR:vdso_freebsd_arm.go\nZ:Q1FaWZPpmQ4dpxMGs1TmofNHNs084=\nR:vdso_freebsd_arm64.go\nZ:Q1yJdQglcte1Uzmu8ulcUn/+8FVzU=\nR:vdso_freebsd_x86.go\nZ:Q1PJbK2zrOqCPtVVKUrtRRIQq4R3M=\nR:vdso_in_none.go\nZ:Q1yYaJGhTCH0+nDp31BtOoxFvHvlg=\nR:vdso_linux.go\nZ:Q1/Ir3yDTmsVIeq3gcRMDdwlET2Ow=\nR:vdso_linux_386.go\nZ:Q1fG2I4xnssXIYA4iaWNhZd6biGpM=\nR:vdso_linux_amd64.go\nZ:Q1idplRUU9rl3u1Y0U+lJOIUjemFE=\nR:vdso_linux_arm.go\nZ:Q1J5HKWRAvwDcwh7ABGtuOFU4fOjY=\nR:vdso_linux_arm64.go\nZ:Q19z0PDu94pXLG3bhLmDK9GA3N1JA=\nR:vdso_linux_loong64.go\nZ:Q1/+pHXMCSuUG2JxI8p41y+I8yroY=\nR:vdso_linux_mips64x.go\nZ:Q1/3Go9zBgWPNgBi/bSb2GBDwjA1E=\nR:vdso_linux_ppc64x.go\nZ:Q1eqTsWht8mRHgBtjtBenbVEia6bI=\nR:vdso_linux_riscv64.go\nZ:Q1c9R5G+/qwN//hQ8ruOEvi/Oajr4=\nR:vdso_linux_s390x.go\nZ:Q1oR5wX/zQm0Hsqf+prxVQ1qxO3zA=\nR:vlop_386.s\nZ:Q1ConzWFhC3sllqn6PISCgZIts8ns=\nR:vlop_arm.s\nZ:Q1RQ/n87/VtQGqfV6vICxa32EpPvs=\nR:vlrt.go\nZ:Q1Erh/HwQluYPY5feJu1h0Y3WOG2o=\nR:wincallback.go\nZ:Q1PRlN2hHZxFD93AOaRjBx1OHlVkw=\nR:write_err.go\nZ:Q1mdA2Jgy/01wWdGode2C4WBk46Ow=\nR:write_err_android.go\nZ:Q11j8+vYrN7mMAvqO/4mLK7sAep+A=\nR:zcallback_windows.go\nZ:Q1ow3yF7GIOmWf0Tj3yHXV79ZABh4=\nR:zcallback_windows.s\nZ:Q1+55S3me+65mC/cHiY9KpLvFMTAI=\nR:zcallback_windows_arm.s\nZ:Q16tEs5etia5bJSHti9mIJ6wLpZ9Q=\nR:zcallback_windows_arm64.s\nZ:Q1VoopvwT5V4nYH5Lkr8lzg1jILj8=\nF:usr/lib/go/src/runtime/asan\nR:asan.go\nZ:Q1bgnsYsBVnBSY+iOjFM97MMuycQ0=\nF:usr/lib/go/src/runtime/cgo\nR:abi_amd64.h\nZ:Q1EOzkBzhp0lN+J749zacwerEg7HM=\nR:abi_arm64.h\nZ:Q1+FH4fbDk38yJgUISsw23lw2nTW0=\nR:asm_386.s\nZ:Q1N/gZXjdma2UK06bOXJz9QGA465M=\nR:asm_amd64.s\nZ:Q1r/szPB0W1Ui1ePxG9O3M5tTlxuU=\nR:asm_arm.s\nZ:Q1eBMlpkQ6lg37chKBk7Rn8r6Afko=\nR:asm_arm64.s\nZ:Q1BWdw92S3Vf+Ullxks9b+1FXEWVI=\nR:asm_loong64.s\nZ:Q1+x4Bx1sCEv7Co2izbfJJhzTTYQ4=\nR:asm_mips64x.s\nZ:Q1fnm0pmGrT1nXLesSzelnS512FJg=\nR:asm_mipsx.s\nZ:Q1vtEZEagZIPwloteQi8bSfiW4aMs=\nR:asm_ppc64x.s\nZ:Q1VYrWsttOB0I6wWRzBmjDgqxqKPU=\nR:asm_riscv64.s\nZ:Q15HOMBAsHx4eMHhejAVsxza1RTAI=\nR:asm_s390x.s\nZ:Q1Ms83/9ZkPBbs+s6BuwdGBFUzG8Q=\nR:asm_wasm.s\nZ:Q19ldMX/NLee5U4Esg9MFIye5VcUg=\nR:callbacks.go\nZ:Q1yjrEUVo86/DGNUWSclTk6BiF7Po=\nR:callbacks_aix.go\nZ:Q1g3dGMQH5voqEFcCneqGGp/ww5Bo=\nR:callbacks_traceback.go\nZ:Q1Rwitud5ow1b7K+9FQiE6AcFkoLc=\nR:cgo.go\nZ:Q1ttme6kWu0aK45TVpnVvfTVhVXec=\nR:dragonfly.go\nZ:Q1bbMqq4QYHZ6k3cdtLDt6iWWk4Rk=\nR:freebsd.go\nZ:Q1SWcIV23pLx+D4C2c2okYbCx4r6Y=\nR:gcc_386.S\nZ:Q1FDsMWiiEF7CgqjvdSRlQyV+DTH8=\nR:gcc_aix_ppc64.S\nZ:Q1GUbup9BPjZo/BK5wDfZF2VSgfmw=\nR:gcc_aix_ppc64.c\nZ:Q1q7LiSXl9jWL+Eap8LawnWpw5Ve4=\nR:gcc_amd64.S\nZ:Q11T7gsfNp25w7/Yybxlsa2w9PoTs=\nR:gcc_android.c\nZ:Q11rAjiCPRnVBg23hdr3p6gHPGwmM=\nR:gcc_arm.S\nZ:Q1RHQdgh3Dk2WCIYcj7QIS88nx5RQ=\nR:gcc_arm64.S\nZ:Q1FJjPDzXd5c1ZmxAjYAwFsfLRv9w=\nR:gcc_context.c\nZ:Q18E41AtRApgF0BA84rqoAHJ5a0fM=\nR:gcc_darwin_amd64.c\nZ:Q1lPYhVrPOV+lnZJfrlEnakJWiaDY=\nR:gcc_darwin_arm64.c\nZ:Q1SN76Cqa1RTZqZ3opSWBg4cZnn98=\nR:gcc_dragonfly_amd64.c\nZ:Q1lK8nBRShgaiCiepugsHL0zY1H8s=\nR:gcc_fatalf.c\nZ:Q1FrrslTsI+HpA5Ae1sk1ZykT+/8M=\nR:gcc_freebsd_386.c\nZ:Q1qJzsRmCCJDO4qvQ11ZzpmKnWklY=\nR:gcc_freebsd_amd64.c\nZ:Q1AtK3ZAFbfnXUqdlA7y4VFirX+xg=\nR:gcc_freebsd_arm.c\nZ:Q1PkuA88gi6qA5nFmaM1/7oXYUIuE=\nR:gcc_freebsd_arm64.c\nZ:Q1WcSZO81bi2LbSPNoQdDww0IP9E8=\nR:gcc_freebsd_sigaction.c\nZ:Q11noYx0PB3Tbf6QRhFg3sEV5xERA=\nR:gcc_libinit.c\nZ:Q1x2WP9bKl42dBNa4hm6FWMrwz6bA=\nR:gcc_libinit_windows.c\nZ:Q1fzQpwN4x5/CwdDjjt+rCY2eRjec=\nR:gcc_linux_386.c\nZ:Q1ib3W9oIz7qcnbOxXaWdJyR7NtnU=\nR:gcc_linux_amd64.c\nZ:Q1elCbrrSoPX2npuJGdj+7j5hg2+Y=\nR:gcc_linux_arm.c\nZ:Q1JXQDf1Z2UyUrwRfqSkwxFYtxEJI=\nR:gcc_linux_arm64.c\nZ:Q1KhXD9IgTbGa4g1+DITOjrTGvAok=\nR:gcc_linux_loong64.c\nZ:Q1pU4NVdKxFeCtlNtJDqi3SmAp7PE=\nR:gcc_linux_mips64x.c\nZ:Q1npeiREKg1lFDFsqTq0odcWKNVC8=\nR:gcc_linux_mipsx.c\nZ:Q1aIDuic45GP90tVp7gLPCOfv50Ck=\nR:gcc_linux_ppc64x.S\nZ:Q1jFiwFUJhbM4gAq49dE7sXkQEGZ4=\nR:gcc_linux_riscv64.c\nZ:Q14QbqwvdXVWV6LFr7UftqNpycupI=\nR:gcc_linux_s390x.c\nZ:Q1P3r53oCRK6/pOHFApGVKXps7++A=\nR:gcc_loong64.S\nZ:Q1NpdAsXJvaI4lSSait8kX/nh2fro=\nR:gcc_mips64x.S\nZ:Q1tXI26PB96vZF4w0sG3gBXEGQQ7o=\nR:gcc_mipsx.S\nZ:Q1+wkx/rstZ3TIYhvn8/1xB2dutls=\nR:gcc_mmap.c\nZ:Q1GlyRitilk1pEIIEJjCjJ5TujrCg=\nR:gcc_netbsd_386.c\nZ:Q1iFOLW/ruvM1dcRx4fDdOgOZOt7E=\nR:gcc_netbsd_amd64.c\nZ:Q1olf1cvEO84CFrb/jn62ZynWjX+U=\nR:gcc_netbsd_arm.c\nZ:Q1D5gwER5cvez6QeJItsBDbLLnppw=\nR:gcc_netbsd_arm64.c\nZ:Q1U5pEBl9m+KMkY4sziGFWcSVPPE4=\nR:gcc_openbsd_386.c\nZ:Q13z3lP5GitC4oYWnl+TfM8lNOcMc=\nR:gcc_openbsd_amd64.c\nZ:Q1+Zhp69Lex0S86+PQ48um+3z/ANU=\nR:gcc_openbsd_arm.c\nZ:Q1kHzF9ZlZJh0pxCGpNP+K390hTUg=\nR:gcc_openbsd_arm64.c\nZ:Q1toBsMVUpfflKKj7nqPl643d0Gis=\nR:gcc_openbsd_mips64.c\nZ:Q1tBErtgTL4x5pvdbWsFZ0NDCxiv0=\nR:gcc_ppc64x.c\nZ:Q1KeH/v762drHpku/s4r+OPTRe+n0=\nR:gcc_riscv64.S\nZ:Q1sW/6WaOV3Vq2Iq+G432lFhe2fys=\nR:gcc_s390x.S\nZ:Q1u86yMhSjfZhb4gWoJE9au8FlvfY=\nR:gcc_setenv.c\nZ:Q1JoBRfhXrjGYbIDTFfn5yMhnaLnM=\nR:gcc_sigaction.c\nZ:Q1++5jg0TdMonjH5DydaeDFrY+S90=\nR:gcc_signal2_ios_arm64.c\nZ:Q1ywrbvZbUjsOwmi7Z8HAIpRDKlzw=\nR:gcc_signal_ios_arm64.c\nZ:Q18di72dPl34NNSrOq+31O3HWTovc=\nR:gcc_signal_ios_nolldb.c\nZ:Q1cbs+MyjzKKRBk2Q/WJmeetdnxFU=\nR:gcc_solaris_amd64.c\nZ:Q1zocRXicX6InUkpm7ZeGtA6aWCqc=\nR:gcc_traceback.c\nZ:Q1jVyYD+ai6lFUctyIweEe1a0XS6A=\nR:gcc_util.c\nZ:Q192mjzHiTAQ5S50yamFHTVXV7rZk=\nR:gcc_windows_386.c\nZ:Q1Kta8t9TOOC0i2sU4105mPvS8lF8=\nR:gcc_windows_amd64.c\nZ:Q12Q0LVEyl7+vhX4FSDUmznzxrfoc=\nR:gcc_windows_arm64.c\nZ:Q1uUEaOdMbwptc4f+oaK5J32QdQ8o=\nR:handle.go\nZ:Q16+nCyyC5tCJ24TyxZHhJBCpA5MU=\nR:iscgo.go\nZ:Q1a73aKltMx4kTgVBcJPo6ZlF9AcU=\nR:libcgo.h\nZ:Q1r03XwtmV8mFs7YE1bdPx6YQFIBM=\nR:libcgo_unix.h\nZ:Q1dIbc+bGlfkQsvRLWsMJXVsYh39Y=\nR:libcgo_windows.h\nZ:Q1iOx9ZTiDJn1ErJ6XtrmfeFoDec8=\nR:linux.go\nZ:Q1Dbi4TzAgSLsRHJJuXZWaLhTlwW8=\nR:linux_syscall.c\nZ:Q18o46VibseNYNfeeCAhEY2+m78mw=\nR:mmap.go\nZ:Q1HLXjs03XLgWtxhN6NrcLOpEdhi8=\nR:netbsd.go\nZ:Q1+fGA9K3W3X1NAqwraYHFGTdUAiY=\nR:openbsd.go\nZ:Q1bdXhfrFZhWn6Iam3wLEn/K3b4TA=\nR:setenv.go\nZ:Q1OA1hbctVDRXVTWXYPqnp6NwtkXw=\nR:sigaction.go\nZ:Q1Hj4LVcAfxhQgshQe9tXOVpsZHM8=\nR:signal_ios_arm64.go\nZ:Q1NPxO/dIEDNt61go3mJpIZ+Wv93U=\nR:signal_ios_arm64.s\nZ:Q13W7/JboxVZsCEh46oNDfKkjpr0A=\nF:usr/lib/go/src/runtime/debug\nR:debug.s\nZ:Q1cF6Ml8suMj4iaCsNfrZ1w2OPHSA=\nR:garbage.go\nZ:Q1TdrfJDoZb77l17LUw3FJaGOMtn8=\nR:mod.go\nZ:Q1HGcgnHaFzDYkM+fFEtTIq9kh+3U=\nR:stack.go\nZ:Q1+aQpW99xS6i2qLXLKfSU8O+jf9o=\nR:stubs.go\nZ:Q10imPsP4L7hq4Qn5av54I5GILnmQ=\nF:usr/lib/go/src/runtime/internal\nF:usr/lib/go/src/runtime/internal/atomic\nR:atomic_386.go\nZ:Q1ADWUVt6domiyVIAJF8cTNDsMpDU=\nR:atomic_386.s\nZ:Q1aZvn6thpI+1KvKxRy9KG1fL6mYE=\nR:atomic_amd64.go\nZ:Q1TTuZyGmvEP3AB2L2KAoCLcWI1ew=\nR:atomic_amd64.s\nZ:Q1sGnQLjyLnBi2Y+PainUbYwq05BA=\nR:atomic_arm.go\nZ:Q1QOJiMnbVcbh/mu8rLHO5iCoaxvA=\nR:atomic_arm.s\nZ:Q1pG2Sj5CZ2HXX3RqnyOJQB+PxNUM=\nR:atomic_arm64.go\nZ:Q1Z5WBl/Oq5DQPuWrKCRkbrIHHTXA=\nR:atomic_arm64.s\nZ:Q1DMawddIJwy+9KgbCGP/w0MxwB48=\nR:atomic_loong64.go\nZ:Q1qKEIjsolW26fjrPw0uUQsLrOIXY=\nR:atomic_loong64.s\nZ:Q1Wz3T1SI40Ns/igqi/K8WI2ejSww=\nR:atomic_mips64x.go\nZ:Q1V9cJ98/EorFZsn7XxSCC6KbHvSc=\nR:atomic_mips64x.s\nZ:Q1gI0+aJKvhQuDMoEMoiYRYnx/T6U=\nR:atomic_mipsx.go\nZ:Q1JWsYfmq0rPuExMQhGvvCsr97egQ=\nR:atomic_mipsx.s\nZ:Q1YRR64uS7TQu0ig7g2qD+ul9CoFs=\nR:atomic_ppc64x.go\nZ:Q1l9CaACXw7WxIpJBkixc6Ddkozt4=\nR:atomic_ppc64x.s\nZ:Q1bkIak3BbMwIuAV42fShDPMmr+UM=\nR:atomic_riscv64.go\nZ:Q1JyugZLHPbcw3Dv1sB9ZA7fvGMFQ=\nR:atomic_riscv64.s\nZ:Q1/n9OhTPaOU1q0uNWbLk7Ykf80i8=\nR:atomic_s390x.go\nZ:Q1nT9JVViLuolNbDBe/r4BmguiRY8=\nR:atomic_s390x.s\nZ:Q1lxrRKRdccJ47OndLILrCdyzPXNU=\nR:atomic_wasm.go\nZ:Q1VmTj6XUPB8DZsrb+Gr4EyCBzWCk=\nR:atomic_wasm.s\nZ:Q1fN2VCXUT0U+vzWG3RSyjwYwBZp0=\nR:doc.go\nZ:Q1GcQ3O0Va5hMuskj/JdfhBI7wnt4=\nR:stubs.go\nZ:Q1F1OfLLBxeVB8yRV3KFFalsmpe98=\nR:sys_linux_arm.s\nZ:Q1kh4sJ0264Id1F34FDqlBccO3g2c=\nR:sys_nonlinux_arm.s\nZ:Q159iZngn13/SlE7LgAEiZCw4fyug=\nR:types.go\nZ:Q1IKHbT5v/56TwW4lQyPK2VSQJ/Xk=\nR:types_64bit.go\nZ:Q1GZdpzFs96YSnBCeyQ5P/nf9NGjE=\nR:unaligned.go\nZ:Q155yFaK7yul3M75AexQaIT4mG+oc=\nF:usr/lib/go/src/runtime/internal/math\nR:math.go\nZ:Q1VulYaFZ8cnsZvQMkIgxdH25NjzA=\nF:usr/lib/go/src/runtime/internal/sys\nR:consts.go\nZ:Q1q+G6RrQBb/XXzeWCwtPbqDxBKWw=\nR:intrinsics.go\nZ:Q1JCOum4EgEf2PxiMikA8BLagb5vE=\nR:intrinsics_386.s\nZ:Q1Mq+iWHYBbH7CpXjKFiGd1e6c0qo=\nR:intrinsics_common.go\nZ:Q17Oq6OVp2ZdslJe8rPaCCjjbPiXY=\nR:intrinsics_stubs.go\nZ:Q1Uv6Ti/EXZWyE6sH/i2rw6tcaEW0=\nR:sys.go\nZ:Q1EnH+yp6qd5bJQb5MMEmGSQ0bE8U=\nR:zversion.go\nZ:Q1XwMsFTAymZKuXOWRJpAv8tgYRq0=\nF:usr/lib/go/src/runtime/internal/syscall\nR:asm_linux_386.s\nZ:Q1Z2l0VHcf8jhIqGOoFA1Lv3i1US4=\nR:asm_linux_amd64.s\nZ:Q1CUWylfhIwsdLi8PDNH2k4VyxsRA=\nR:asm_linux_arm.s\nZ:Q1YtJ+kYhbJCf3aRqF//0UUWLXlps=\nR:asm_linux_arm64.s\nZ:Q1X9FcuzLbvc5v96cdf5uYYISSJV0=\nR:asm_linux_loong64.s\nZ:Q1mh5vsGA+SHP6gmDwYnLSHAQtCs8=\nR:asm_linux_mips64x.s\nZ:Q1dJ+Zm5n3oe173/WXL8zOWsYaVTE=\nR:asm_linux_mipsx.s\nZ:Q13BfWrIM1qeVLPRUEyTNlvW3gb14=\nR:asm_linux_ppc64x.s\nZ:Q1bpAeu4SJ1eGlEBgxS4mdp2NIqiQ=\nR:asm_linux_riscv64.s\nZ:Q1D5JNPWJxrzp2s8wJ+RvGksBkWoY=\nR:asm_linux_s390x.s\nZ:Q1ytI8dO90jaG3pK4MBBmO128Pzos=\nR:syscall_linux.go\nZ:Q1TRinaGVrH0YF7VwB5yExz27LC6U=\nF:usr/lib/go/src/runtime/metrics\nR:description.go\nZ:Q1B5Ua6tZLaQM7SrOzFKdn8vIXnFk=\nR:doc.go\nZ:Q1LuFlUC8NPOBUP5/a5vJBt9Zi9f8=\nR:histogram.go\nZ:Q1XQMKPZNKL7TM7YbmDzCVFMt2Dx4=\nR:sample.go\nZ:Q1KOCiGiYmGMmP6lqPWcBayGFLTQo=\nR:value.go\nZ:Q1rXyvT6Nkyl3FjGb4Tg0MEvNOv3A=\nF:usr/lib/go/src/runtime/msan\nR:msan.go\nZ:Q1dLt+OuITk1IokqGPzNK40sMtYRQ=\nF:usr/lib/go/src/runtime/pprof\nR:elf.go\nZ:Q1+gJ6Ksdqk0IsF1OSdTd6HNj8vZo=\nR:label.go\nZ:Q1DynbDglLwjvIdPVKoPccHVKcgJQ=\nR:map.go\nZ:Q1wUIxelrab5gvBONvdKUlqF6ljfU=\nR:pprof.go\nZ:Q18cGm0s15C0dIAaCyU/KeCRi2fVk=\nR:pprof_norusage.go\nZ:Q1KiHwg9La9RjZdQ4V33Scg/uHT4o=\nR:pprof_rusage.go\nZ:Q1LMQ/GFCNxT+/sa4UfcR4Z5h8hU4=\nR:proto.go\nZ:Q1QPXL9x/J/cpHw/H5LAh8MSU50OQ=\nR:protobuf.go\nZ:Q1pRzIG93SFnJ33htNW23Y74eVvUU=\nR:protomem.go\nZ:Q11ZpcEdK7ULhgjEJjBXhYAPunKZQ=\nR:runtime.go\nZ:Q1L63lEnzpm4FsA9FpoaBHj9iQGSo=\nF:usr/lib/go/src/runtime/race\nR:README\nZ:Q1X4fefODyeozXtR4YtATpNTFr6uo=\nR:doc.go\nZ:Q1259tY99QdNI2kDG9C1AF0ZfcWus=\nR:race.go\nZ:Q1uH9OO/vOnsF4S3WJbj3u52y/NmY=\nR:race_darwin_amd64.syso\nZ:Q1oWEq8+1UKqmb6dnvtP71n6wPm6c=\nR:race_darwin_arm64.syso\nZ:Q1y42+BIgfOXzBavWOE9ronIhalpk=\nR:race_freebsd_amd64.syso\nZ:Q1F4tw+0nWMi/lZdxNlSkPUwEegPE=\nR:race_linux_amd64.syso\nZ:Q1EDwZsnbtG0WrYsWhAqPP3RLSRrk=\nR:race_linux_arm64.syso\nZ:Q1QgzLImF0Mmyf3htudzaGJ+iCS70=\nR:race_linux_ppc64le.syso\nZ:Q1Eq0U8mFnbsYAhfrembHipdcuRXc=\nR:race_linux_s390x.syso\nZ:Q16eXiCYIvCi4osW6ZSDgUnbB/jy8=\nR:race_netbsd_amd64.syso\nZ:Q1VEAWLHkl6Tz1qmfQWjsBt82FSEE=\nR:race_openbsd_amd64.syso\nZ:Q1WZr1X1HwECgP/ipU6FKk/fNJFq8=\nR:race_windows_amd64.syso\nZ:Q1K9PoJ5IlAz02+pzQN3vZSeBEBxI=\nF:usr/lib/go/src/runtime/trace\nR:annotation.go\nZ:Q1YryUhZnfB8EbUrPVrdINkkExB48=\nR:trace.go\nZ:Q1L8lPMkzgfZUNqXY9inLya86KmK4=\nF:usr/lib/go/src/sort\nR:gen_sort_variants.go\nZ:Q1YEldxNCa70Cgzz4zmByprJrCRTM=\nR:search.go\nZ:Q1t0CsgfEpjgsP3GFo8BDFOAIKkMo=\nR:slice.go\nZ:Q1eu8LjuP9MhOf0PsRanCzumJsqys=\nR:slice_go113.go\nZ:Q1K3nmLShlX42nq5skzYSIUBOjxZQ=\nR:slice_go14.go\nZ:Q1hccwvdMFLHkfoSxxZV7cho08gis=\nR:slice_go18.go\nZ:Q1QmXRLz6qGx4eutFz/l0m1fe0axg=\nR:sort.go\nZ:Q1s5W1bF8dB05WhbAqkwP8dcenPpc=\nR:zsortfunc.go\nZ:Q19hu0nDgWeI4Eq81YukURXNLX6bw=\nR:zsortinterface.go\nZ:Q1TU6XHJatNxrlcQydeRS0D1HIFA4=\nF:usr/lib/go/src/strconv\nR:atob.go\nZ:Q1XFFGFytlLFUDbd4LCj/v359HiUw=\nR:atoc.go\nZ:Q1ESJJSF/JS9EeSFmGtt33vaGYtVQ=\nR:atof.go\nZ:Q1Iue/H0ISQSoWTMvNWu/HLN4lrtM=\nR:atoi.go\nZ:Q1nJRhLlOcZyzbcv0toI17duhEnpo=\nR:bytealg.go\nZ:Q1lYbxuY2Ao34eBo4XcoYzNIxurbk=\nR:bytealg_bootstrap.go\nZ:Q1VLCEpvmL+mSQV5r3iD4PPcCiFDM=\nR:ctoa.go\nZ:Q1tuRrxGvxihRD8WhVfiU/Y9ZUDVM=\nR:decimal.go\nZ:Q1jeUoXRYNatzj4608cGox1TBlLaY=\nR:doc.go\nZ:Q15smqgIEDoTrqfhNS2e3ih5UQEIM=\nR:eisel_lemire.go\nZ:Q1V3KT0oRbdQEh/3zYiIAdznsD4Q4=\nR:ftoa.go\nZ:Q1k5C0jmzc1G6Clf+SbJgDE8xiWLk=\nR:ftoaryu.go\nZ:Q1oXqgVrUZ/Kfw2x3F2I1b08PU/xE=\nR:isprint.go\nZ:Q1E45qNu9hoh0DFuw38Op0AEvZXjI=\nR:itoa.go\nZ:Q1jF1YzKvqYfdvBNHlD9r18B1VcH0=\nR:makeisprint.go\nZ:Q1/RjoAfPJwI/9d2rckV9QI5yyoAA=\nR:quote.go\nZ:Q1YDbNDhs6Mv9PPHRwGm1SNtAtoyM=\nF:usr/lib/go/src/strings\nR:builder.go\nZ:Q1yQeLENlQXaYk7bbpTqM6Zn/cBAs=\nR:clone.go\nZ:Q1SZlppxhnjPR48nWAgIUjcfk/yYs=\nR:compare.go\nZ:Q1wmU/XZ49n9p12ZM+03a4DT4aJug=\nR:reader.go\nZ:Q13Leu6YagxXeKTYblnqqcZXIIZbA=\nR:replace.go\nZ:Q1+J/eRwaHqMc4cFstniUouOguNgs=\nR:search.go\nZ:Q1Ec1UIYAoyPzzWPM2rhoJv8Tnab0=\nR:strings.go\nZ:Q1cE/zVgSUmdyLpocdooCINpcczNM=\nF:usr/lib/go/src/sync\nR:cond.go\nZ:Q1ydT61JvL3FDq/rHi+ZDTqhll31g=\nR:map.go\nZ:Q1Zyfu+oqsbE32DI5alTcCSV5SSj8=\nR:mutex.go\nZ:Q1R/yOXLlOEIFt9nhJiYy4KAHi6uc=\nR:once.go\nZ:Q1ySdxYoBeIupW2M22SmaVAzI2iOo=\nR:pool.go\nZ:Q1wELafJds9kd50KCPbKMtGkg0Ypg=\nR:poolqueue.go\nZ:Q1AmlQWT5eJBQrivwd4oO+Ai60Fwo=\nR:runtime.go\nZ:Q1S2H9HVR5WhleaSkVcMbcRw/BnCQ=\nR:runtime2.go\nZ:Q1gflqRuVSETf9duOGFy8aZ9xRuNY=\nR:runtime2_lockrank.go\nZ:Q1Y8x1hzvYk1BBMgB0OzZWh0nqjcg=\nR:rwmutex.go\nZ:Q1uMDPnj0JpyVICUYK8uPjLA5gLPw=\nR:waitgroup.go\nZ:Q1xzlgUWIG1Nt8+lZDYKh5H/g4yQ0=\nF:usr/lib/go/src/sync/atomic\nR:asm.s\nZ:Q1dZzoKaX91BXFXz2gIg8Fs47TkLg=\nR:doc.go\nZ:Q1cRlvdrCnyIXex7ywSv20BPDtxa0=\nR:race.s\nZ:Q1tOMHFmTiMELAWadouUTPdAs8N3A=\nR:type.go\nZ:Q1KuVrob8jzvVTbKeJRtWs8frfr4U=\nR:value.go\nZ:Q1l7AN4vz0uC3ovmV8lUu9gssozto=\nF:usr/lib/go/src/syscall\nR:asan.go\nZ:Q1pjjOd8CWkqikLLryrgDXKgy3bsQ=\nR:asan0.go\nZ:Q1SMzMJgj58k8Zw74YV0CmBbvw74s=\nR:asm9_unix2_amd64.s\nZ:Q1COWyDllD8lcU/oBWrZRElG4kArk=\nR:asm_aix_ppc64.s\nZ:Q1YvEFq8LApNX4I0geIve/W6L2sgw=\nR:asm_darwin_amd64.s\nZ:Q1DJVwn4P1VkRIF8y+taVYPpKZ844=\nR:asm_darwin_arm64.s\nZ:Q18k6lareFV6hYI8+wle1mHvY47cU=\nR:asm_freebsd_arm.s\nZ:Q1gJii5WfXFi74SWVdalmXikjrjjY=\nR:asm_freebsd_arm64.s\nZ:Q1krW6EAdqYVUsyQOKUl3R/ZR0QUk=\nR:asm_linux_386.s\nZ:Q1/79yKDk6LcvughkRK/MX4MrIe3M=\nR:asm_linux_amd64.s\nZ:Q1qn8H8SFxZ0I2ybe1/F2ihRhEvoM=\nR:asm_linux_arm.s\nZ:Q1mRwNTour785QsTA7YyNwaFxlATg=\nR:asm_linux_arm64.s\nZ:Q19YOfxIGUmzZauhCBSyYm+ASyMEs=\nR:asm_linux_loong64.s\nZ:Q1RR04YZLpzt5cHgkuWi9ktEfSvM8=\nR:asm_linux_mips64x.s\nZ:Q1LHBdITAj8E4l9fOa/d8NK2Jed4s=\nR:asm_linux_mipsx.s\nZ:Q1AYtZ2ZPmgX2BFrp0WbUpbHiwmvU=\nR:asm_linux_ppc64x.s\nZ:Q1n+jWSXLQID12N6JuzhSetmNBCow=\nR:asm_linux_riscv64.s\nZ:Q1zpsHbvYzRdA6OFobabsuoUij7W8=\nR:asm_linux_s390x.s\nZ:Q1vVJpbJ1w154p/Zm6oTtRa1dyZwU=\nR:asm_netbsd_amd64.s\nZ:Q166Qpu3L440bjtXi6ubtsda0V+5c=\nR:asm_netbsd_arm.s\nZ:Q1WWlYrttmNrug9gsC7vPNfayp6cI=\nR:asm_netbsd_arm64.s\nZ:Q1oGnCwx/9Z3OIwddYzwBqFYaI0AE=\nR:asm_openbsd_386.s\nZ:Q1JYQ/hS0g9v2Nlc61hJwN+o9FNzo=\nR:asm_openbsd_amd64.s\nZ:Q170yHd7ZgPjWevbGNoH8PMS1ZwD0=\nR:asm_openbsd_arm.s\nZ:Q1ke+U3MBNEjT8YepTgIiIsgNnw6M=\nR:asm_openbsd_arm64.s\nZ:Q1wBbP3jwjH1H70a1zLwVyEgibgPM=\nR:asm_openbsd_mips64.s\nZ:Q1QWAvmi7zJasC65+p1A+aNtE4QPs=\nR:asm_plan9_386.s\nZ:Q19Wk3kubqRMfExhnzoCOAyYMcUwc=\nR:asm_plan9_amd64.s\nZ:Q1LrIxdUW4M1WtffrbHYkrADcL3zA=\nR:asm_plan9_arm.s\nZ:Q1a1Jl08IZZyHvZa8JVjzxyYYiong=\nR:asm_solaris_amd64.s\nZ:Q1xr5gyhmNkRKl2+C9kcX3bWv+lHk=\nR:asm_unix_386.s\nZ:Q1NFys6NpxsD6vtrNbjFoGjShxqEg=\nR:asm_unix_amd64.s\nZ:Q14hhGHhzYj20oOArPJgqg3AMaa0E=\nR:bpf_bsd.go\nZ:Q1z1LjunT6HJo+TQeVdMxLiG3kPJk=\nR:bpf_darwin.go\nZ:Q1zQQk/B05a6hyVPmZ4Up1Um0qDng=\nR:const_plan9.go\nZ:Q1SjqenT7PLO5qncj7SJYkzz7QK0s=\nR:dir_plan9.go\nZ:Q1JriUpxyWC2Dv5xOYuGbUvqi7+Ek=\nR:dirent.go\nZ:Q1+0oAsm2r1G6UAHqz8LO932KjgHI=\nR:dll_windows.go\nZ:Q1aou4+buHdPjxEGGf0tcx68+yjkg=\nR:endian_big.go\nZ:Q1Kerl4yzfs1OoFJzNS5zyr1ECf1M=\nR:endian_little.go\nZ:Q1vfmyXfiJSYZiB7CDCRF0gmxuCPo=\nR:env_unix.go\nZ:Q1tXzqUmdirjcNGCuP0AOCdwTrP5U=\nR:env_windows.go\nZ:Q1FWsMCspVBHG3VROKnoqr3jeEfSc=\nR:errors_plan9.go\nZ:Q1a+Rxn52H1HtRURhG/T99uhtCT7U=\nR:exec_bsd.go\nZ:Q18rWuOW6LysGutcr9+zVLZZds9F0=\nR:exec_freebsd.go\nZ:Q1wn+/yRM0TfDgyM1M8UhT5RmD2M4=\nR:exec_libc.go\nZ:Q1hjLbzcS0rxqeAQ4k6r2oBWeCgh8=\nR:exec_libc2.go\nZ:Q19JVAz1IO8PO1xLPL3NHxrRzzMBY=\nR:exec_linux.go\nZ:Q1gh/ynILhjvWdcfUQcMxh1PGWOcM=\nR:exec_plan9.go\nZ:Q12QeUtdND+dEtWzUpcVQGvB1XjAM=\nR:exec_unix.go\nZ:Q1CrXy7XA3isdAqi15UIX0kL83Ykk=\nR:exec_windows.go\nZ:Q1DMaeweIrjU4NtuwvfREaqD3PXiY=\nR:flock.go\nZ:Q1O0s0pE6uZcKPntIYTZxA5PEw9Fk=\nR:flock_aix.go\nZ:Q1vZaaLSy4cd9rfGbtClWcHynlvSo=\nR:flock_darwin.go\nZ:Q1AqamFMq6pu7DzetMqf6FL0OdAmQ=\nR:flock_linux_32bit.go\nZ:Q1zVOXHLv5PiErWLsiLllzzBTXBcI=\nR:forkpipe.go\nZ:Q1PjA6F4F7SWU6kiy+5NXHRVzdQUg=\nR:forkpipe2.go\nZ:Q10Dk41n2Cj+n4gsUMQqN+v87BgdA=\nR:fs_js.go\nZ:Q1MnRt2bAcAwc1cBydgPSvY43MNgY=\nR:lsf_linux.go\nZ:Q1AbZFezAfebqItuHXndq7PX4pCI8=\nR:mkall.sh\na:0:0:755\nZ:Q1zmZopkjvyPtW4IZ1jxiv/a2QgGQ=\nR:mkasm.go\nZ:Q1tCREnkRcLkMncyV32yTD+iERqfQ=\nR:mkerrors.sh\na:0:0:755\nZ:Q12OtJPcTJLjpQoDH7jCMizDY8ClY=\nR:mkpost.go\nZ:Q115XtQ5MyiISRGzw4kqBVS1dCrOg=\nR:mksyscall.pl\na:0:0:755\nZ:Q1BZbSRZKJJn4AJ7dSew44FHZG8/0=\nR:mksyscall_libc.pl\na:0:0:755\nZ:Q1Rjscv6UrCGmFeyC1IEHBoCGleoM=\nR:mksyscall_windows.go\nZ:Q1fU/71uX96ppOIxesCJqBNa/zZZk=\nR:mksysctl_openbsd.pl\na:0:0:755\nZ:Q1M1sqxQvlGu7yDdJkevC4wbk79qY=\nR:mksysnum_dragonfly.pl\na:0:0:755\nZ:Q1B3Nbe9B0dTsWsQhU6CxzCElEUP4=\nR:mksysnum_freebsd.pl\na:0:0:755\nZ:Q1qu741JEDyFljLqDHDpMLPaS43XQ=\nR:mksysnum_linux.pl\na:0:0:755\nZ:Q1AIrXJ2ZITXGVJJGhV8Uku1jk6Gk=\nR:mksysnum_netbsd.pl\na:0:0:755\nZ:Q108xeu/mHT0U1tNzuPQDm7nR+Kb0=\nR:mksysnum_openbsd.pl\na:0:0:755\nZ:Q1Z5PdUYcFA4/mouiGILGJ+/Ak4ak=\nR:mksysnum_plan9.sh\na:0:0:755\nZ:Q1OJq96yO4MQIEr1/xeolURYlXd9E=\nR:msan.go\nZ:Q1zYvCt03HUxQIqN25imS2u+gfM2Q=\nR:msan0.go\nZ:Q1YN6RobMzLP7O0tB112B80KndGAQ=\nR:net.go\nZ:Q1Nk+QQVarVRHPBstHMzhSci7II6A=\nR:net_js.go\nZ:Q1mgHAz3HAAM+LUXY3vVg9C+KJMEA=\nR:netlink_linux.go\nZ:Q1LvYpKCpos5Jjdvpz5dpX/rPG8VQ=\nR:ptrace_darwin.go\nZ:Q15ZxsCpoQ7f4ASwU/sOLVaXpelmk=\nR:ptrace_ios.go\nZ:Q15UDgOS0Ak5/4H5SWAW24JzamGrc=\nR:pwd_plan9.go\nZ:Q1Wbke6DyZ5TVLDXuXxDPu2ai/vDA=\nR:route_bsd.go\nZ:Q1n5jX0lf7gwBuZvO3vfrzPMI/3L0=\nR:route_darwin.go\nZ:Q10vUo8dtkDTsK0n16SKQjnWcRChI=\nR:route_dragonfly.go\nZ:Q13mz/VtjphvSwXliTK4fqY/FO5Ck=\nR:route_freebsd.go\nZ:Q13+vmTBmnWA6FuPuO4+tANIhvVAo=\nR:route_freebsd_32bit.go\nZ:Q1lOv0Tk3V+P2ezeWDaToCWYbLoNQ=\nR:route_freebsd_64bit.go\nZ:Q1BAC4pbbm0qwlZKfrRzteRzmY+pk=\nR:route_netbsd.go\nZ:Q179JMDwELZB1SzNS4yUQRNrCUkOM=\nR:route_openbsd.go\nZ:Q1p6CMmh/Pd1Mu9cRExCRoDFmM/TQ=\nR:security_windows.go\nZ:Q1zBDzPO7kgoUBznsmWDJnN3Be+x4=\nR:setuidgid_32_linux.go\nZ:Q1dsecEngwbAU8xYehTmDn7jQ0Zx8=\nR:setuidgid_linux.go\nZ:Q1o7vxmb+QTTYH8/FLzwjfksNQ3qI=\nR:sock_cloexec_linux.go\nZ:Q1TjTlrtk5lqZrFNYRt+/xPxpkSf8=\nR:sockcmsg_dragonfly.go\nZ:Q1rf3UCsJrb0tYyk5QuDLJzCziC1A=\nR:sockcmsg_linux.go\nZ:Q1XzPAk+tIap3Pa0pWr6ABig/SR5o=\nR:sockcmsg_unix.go\nZ:Q1cryNgmOpT9kOwnesTlIQz9SzHbA=\nR:sockcmsg_unix_other.go\nZ:Q1oF7Z6q8cbTP1p9lkxJoHzk/nnyU=\nR:syscall.go\nZ:Q1X8FHUi/id+pXMK3TNeMWZ6vcP6k=\nR:syscall_aix.go\nZ:Q1rXqV+5/hbgqUY2qmZpxTnvFQY40=\nR:syscall_aix_ppc64.go\nZ:Q1vjwysLNiWBrfXB75X41l5kTGDOM=\nR:syscall_bsd.go\nZ:Q1j/9159zUm4OcfCQzd0BZO/LToeg=\nR:syscall_darwin.go\nZ:Q1sQDUri8pVdRSWJSH8zUEJgapXEQ=\nR:syscall_darwin_amd64.go\nZ:Q16kCTzKMHCOPVg+SYejlqi3BCR4c=\nR:syscall_darwin_arm64.go\nZ:Q1ndJsuoYhiKkCOUWpspuCtSbYU9k=\nR:syscall_dragonfly.go\nZ:Q1U3R3d/qfIYtdr5p2f19gYCtzaEg=\nR:syscall_dragonfly_amd64.go\nZ:Q1xEiMpAYphfOMW3xWw3DONRFdEeE=\nR:syscall_freebsd.go\nZ:Q1BKyAW36M8EJCl/NmEWC+gUiVEzI=\nR:syscall_freebsd_386.go\nZ:Q1zqHkgHDaqR/V8MdvflTP7KGadi8=\nR:syscall_freebsd_amd64.go\nZ:Q1xEiMpAYphfOMW3xWw3DONRFdEeE=\nR:syscall_freebsd_arm.go\nZ:Q1v5m7kjOhjM7bqVAkTZ1g+Rq59uI=\nR:syscall_freebsd_arm64.go\nZ:Q1LyuuKG+uUhbMEL+hkcNiF1I9GcU=\nR:syscall_illumos.go\nZ:Q16pfqN+ptD8cxaT/wX5i3Osqz9XU=\nR:syscall_js.go\nZ:Q1SG01/K35Fh8IERbX7ZfYxX9BhfA=\nR:syscall_linux.go\nZ:Q1j2hKq9bkoqN+F5IlMWdUBdyumM0=\nR:syscall_linux_386.go\nZ:Q1rgohMH1Ggk6ohpCuuKpQ/hE8RAo=\nR:syscall_linux_amd64.go\nZ:Q17cexxUTcvltK/Y6icPXsClzNEW8=\nR:syscall_linux_arm.go\nZ:Q1mLdWPc1cl/njTTS7tv67vxiJKhQ=\nR:syscall_linux_arm64.go\nZ:Q1KHm7If+rwlY07v6RFc0iGv2/j9c=\nR:syscall_linux_loong64.go\nZ:Q1ebYk9/ZeNIdZkjB/zmS59iBH+gQ=\nR:syscall_linux_mips64x.go\nZ:Q12K8TfIfyFJLsTofo78dqKroks2Q=\nR:syscall_linux_mipsx.go\nZ:Q1DT7oYP5OFMLchuJBuMYNPfhaX3M=\nR:syscall_linux_ppc64x.go\nZ:Q1NGshCQc4frIKwSI4UKvN7L9/Tuc=\nR:syscall_linux_riscv64.go\nZ:Q19pAxonsM4MEkr1OS5e79a2TtFn8=\nR:syscall_linux_s390x.go\nZ:Q1uiADzLkQNZoqTWb/VWfUyxouDSs=\nR:syscall_netbsd.go\nZ:Q12OiTX5610p9oGd+olBNaTXWnVaU=\nR:syscall_netbsd_386.go\nZ:Q1E+VLS+XXPcjS1u5afD5Y/UgXppM=\nR:syscall_netbsd_amd64.go\nZ:Q1y7OCKDR9CZjDEaMN9alfbsXsF6Q=\nR:syscall_netbsd_arm.go\nZ:Q1VG1ZeFiE2uWo0IkxgFkvymCFUHs=\nR:syscall_netbsd_arm64.go\nZ:Q1lrPPs5kZf8qikItQq4NjUn+Dk5c=\nR:syscall_openbsd.go\nZ:Q1dup8jMTbxNv8hsrmodd/QaZ8Qqk=\nR:syscall_openbsd1.go\nZ:Q1IPWFwGqu9xIPC7+TgZlyWufZDkI=\nR:syscall_openbsd_386.go\nZ:Q1CCJOnaSUQ0qmUEHy0kQbgf/39+E=\nR:syscall_openbsd_amd64.go\nZ:Q1AJip2rlk4A8dkGQxcJuRUAcClBs=\nR:syscall_openbsd_arm.go\nZ:Q1CCJOnaSUQ0qmUEHy0kQbgf/39+E=\nR:syscall_openbsd_arm64.go\nZ:Q1wVVIrNusyvTn9gegInBGAcBtRh8=\nR:syscall_openbsd_libc.go\nZ:Q1Avdafqm/OSEDL2KzF3QEWQL/L4E=\nR:syscall_openbsd_mips64.go\nZ:Q1JuI/RmXIaeboH2kKLGka0OZ8Jl4=\nR:syscall_plan9.go\nZ:Q1DK9wppGaa3Ha2SHfQdJVg7L9Q10=\nR:syscall_solaris.go\nZ:Q1mBqSxyNgc0p/uTX9JqNg6O5IIx4=\nR:syscall_solaris_amd64.go\nZ:Q1dUw7H3Xf7AftdtfFVsfKfah+wV0=\nR:syscall_unix.go\nZ:Q1dTBCWiVWZW/AkYJHmO6Ms6yJNnQ=\nR:syscall_windows.go\nZ:Q16vS8Qqw54gmqUEoQ1uVJWavqSP4=\nR:tables_js.go\nZ:Q1gllGKjJXzbYoXvfVnH/FyKHC26I=\nR:time_fake.go\nZ:Q1MEy/oFHuGokZVFketPkLJX0mv/g=\nR:time_nofake.go\nZ:Q1INdgkyWXnxmHoq83UU0W44teJNA=\nR:timestruct.go\nZ:Q10853hFPOA+DVDdK4oyYLEElv8UQ=\nR:types_aix.go\nZ:Q1uWjb4x5KKpDs/EMZMpfbRr6foVA=\nR:types_darwin.go\nZ:Q1D+f8/sQEeofxVmHdLNc4V3Ww+uM=\nR:types_dragonfly.go\nZ:Q1b9Ozoa6mJwgeLxZOalN/Rmzf9jg=\nR:types_freebsd.go\nZ:Q1Sg0TuBtM5JIYwkzjUFFmGnqANPs=\nR:types_illumos_amd64.go\nZ:Q1qovscv1oDcYewVQ3sH9dNHml3Ho=\nR:types_linux.go\nZ:Q1kvTnaLLk6kMDFeC0/OKQWZF7EIA=\nR:types_netbsd.go\nZ:Q1tXe6yo3XYoEMvUfyfCYORU597BY=\nR:types_openbsd.go\nZ:Q1w8vYSQIeJ7LeYRL1jDaTYcCZc54=\nR:types_solaris.go\nZ:Q1kiFl7ZeG0dxUx4HdpClmqvJoXPw=\nR:types_windows.go\nZ:Q1XgJhATdjjxlH4Ehu3JUo5tswZD8=\nR:types_windows_386.go\nZ:Q1N2+PpfLTxpCKjn32pTWBB/3GWFs=\nR:types_windows_amd64.go\nZ:Q1IPVTw/8krvucXMrPVKocdUn+TCA=\nR:types_windows_arm.go\nZ:Q1S/qrSwMzJrrfG5GYz8ycfb8bBIY=\nR:types_windows_arm64.go\nZ:Q1IPVTw/8krvucXMrPVKocdUn+TCA=\nR:zerrors_aix_ppc64.go\nZ:Q1ZpTk4jkGs9HxCrIdj25CHCdc+OU=\nR:zerrors_darwin_amd64.go\nZ:Q1z4PPPhPeaZX7+qAF9kOfAJ4caM4=\nR:zerrors_darwin_arm64.go\nZ:Q1ikmiO+7gMh+q67Zo+/hl1jIR4mQ=\nR:zerrors_dragonfly_amd64.go\nZ:Q14ChWb4A6w8Tk4J3SbTjCoK5tpnE=\nR:zerrors_freebsd_386.go\nZ:Q11IZBTzN1tsFE2NBa9Wohql+P/jA=\nR:zerrors_freebsd_amd64.go\nZ:Q1kKWibIxECAGyDmgvQcy8BiqVDes=\nR:zerrors_freebsd_arm.go\nZ:Q1hyCoxLBiDXoxF8mG5pKP7umxJCE=\nR:zerrors_freebsd_arm64.go\nZ:Q1c5qaOEO3Va8KUIegQ71ZOIXh+rU=\nR:zerrors_linux_386.go\nZ:Q1WJzOs7sBjrU+zX7vMuq7KWev8G8=\nR:zerrors_linux_amd64.go\nZ:Q1kO4y5dXMPgMbYWca9ieNvPVRF+Q=\nR:zerrors_linux_arm.go\nZ:Q1b+nMttGxgxzKWZ2HlplK+gtOzrc=\nR:zerrors_linux_arm64.go\nZ:Q1BpaB6FO7PXjgMixK3HMwrYxy0FE=\nR:zerrors_linux_loong64.go\nZ:Q1w8Shn+NFn+kl6uB+cGwdzJq8fVA=\nR:zerrors_linux_mips.go\nZ:Q1TgboINxywt5Pwz99q9VhzSTBvaU=\nR:zerrors_linux_mips64.go\nZ:Q1bI0VEIR8zoxqVi1OEMrIFTDEmrI=\nR:zerrors_linux_mips64le.go\nZ:Q1bI0VEIR8zoxqVi1OEMrIFTDEmrI=\nR:zerrors_linux_mipsle.go\nZ:Q1TgboINxywt5Pwz99q9VhzSTBvaU=\nR:zerrors_linux_ppc64.go\nZ:Q1bmiWSlmVvuQh4aBp+zThqqQdPSQ=\nR:zerrors_linux_ppc64le.go\nZ:Q1Oq65q6iZrT0sWwYO2vFeMN0QZwM=\nR:zerrors_linux_riscv64.go\nZ:Q1qIHDQtCDQr9jcw7XOhzGu5ZoYy0=\nR:zerrors_linux_s390x.go\nZ:Q1uzfz8CNDhvoMWPdSnwyCAHAEU80=\nR:zerrors_netbsd_386.go\nZ:Q1Ynmdju12HeXnxAPKkSiFnyFW0Ig=\nR:zerrors_netbsd_amd64.go\nZ:Q18krVGig32MjACuexcOpTCVbBNrk=\nR:zerrors_netbsd_arm.go\nZ:Q1y5waSv5uPjpL/UNMwC4jkLWRvkw=\nR:zerrors_netbsd_arm64.go\nZ:Q1IUV0PJzlKNEpIE2k1ObZDTM6C/c=\nR:zerrors_openbsd_386.go\nZ:Q1tbYQ6fqB4ERSocsbWFfBuIISdzY=\nR:zerrors_openbsd_amd64.go\nZ:Q1IMAshBnQmXsRVWtsjYRVjdcBbaI=\nR:zerrors_openbsd_arm.go\nZ:Q1JAfhZFlIFsSSmal/W//2/u6dckc=\nR:zerrors_openbsd_arm64.go\nZ:Q1DKuYbu7+j7IvH2SCNOEDldj7xko=\nR:zerrors_openbsd_mips64.go\nZ:Q1Ao/6+z3xUNLskntIJyYKKzdMuAI=\nR:zerrors_solaris_amd64.go\nZ:Q1I5cSPMi6tNEtDBNMXpnDwE17DAg=\nR:zerrors_windows.go\nZ:Q12ZPHZPW6D5z6MinKz3h6jfxy0oI=\nR:zsyscall_aix_ppc64.go\nZ:Q1fdNH3eMhK1DFvk+8e68BZoKBZ2M=\nR:zsyscall_darwin_amd64.go\nZ:Q1Jq5WZpeUfn3iYcHMSkFKdtYWYt8=\nR:zsyscall_darwin_amd64.s\nZ:Q1pvQmNrH19E+xHmFm6DZ7GHB4dsw=\nR:zsyscall_darwin_arm64.go\nZ:Q1Xlb/vzqdhzif9GagAifdN468O3w=\nR:zsyscall_darwin_arm64.s\nZ:Q1IKOp4kiQKpqiG8ITLuvSva96vuA=\nR:zsyscall_dragonfly_amd64.go\nZ:Q1TFWYYjoJne74fHv+ONTXXLdeGvI=\nR:zsyscall_freebsd_386.go\nZ:Q1Uh4b1D58qK78ToqWhk9ESnpgR20=\nR:zsyscall_freebsd_amd64.go\nZ:Q12VxUGsdDA6sOeXe7XLxgz3vBuwI=\nR:zsyscall_freebsd_arm.go\nZ:Q1sFx6z3uHgfNCuwoT+DLik6O5n6Q=\nR:zsyscall_freebsd_arm64.go\nZ:Q1LT8IyUFMuQnXK0CH5E1p+hvFewg=\nR:zsyscall_linux_386.go\nZ:Q1vpFR0xzR5emj0aj4mPp8Re1aMO0=\nR:zsyscall_linux_amd64.go\nZ:Q1WOx7Z0c9U9SXR/ILXpx+cd3X9+g=\nR:zsyscall_linux_arm.go\nZ:Q12vzoZxZcv0AJiFXVwTyMr6RFo5g=\nR:zsyscall_linux_arm64.go\nZ:Q1n/AUkmTeu3bXAM7b6R828qmiwR8=\nR:zsyscall_linux_loong64.go\nZ:Q1fGyaMqC+YseZgSUrnSxSePdS07Y=\nR:zsyscall_linux_mips.go\nZ:Q13GgECH1We6IU4/xWZHjUwXbzczc=\nR:zsyscall_linux_mips64.go\nZ:Q1Qk3EA5tS4Fga4N+4xhQHBOsfDOg=\nR:zsyscall_linux_mips64le.go\nZ:Q1nbZAdekPLD5gf7Y4yX/n3tROtlQ=\nR:zsyscall_linux_mipsle.go\nZ:Q1IOFq1VCUgXeHWMcYS8z72IY7vBA=\nR:zsyscall_linux_ppc64.go\nZ:Q1fD+fG0OgcZBUtG7AO5LIj5BUKTA=\nR:zsyscall_linux_ppc64le.go\nZ:Q1TIlkFLSJ6z6UXRFp08xUhxM4gfs=\nR:zsyscall_linux_riscv64.go\nZ:Q1IGNRsb7GZqmtEPgHOcMMESYpxqA=\nR:zsyscall_linux_s390x.go\nZ:Q1oWB0TQlv1WIBfxN0+FNLFyjdsT4=\nR:zsyscall_netbsd_386.go\nZ:Q1+K5snlPpy29Bv4fY0vzwCAbKH7c=\nR:zsyscall_netbsd_amd64.go\nZ:Q1p1jqRHNdTLAlL6sXf3fvkeBttsE=\nR:zsyscall_netbsd_arm.go\nZ:Q1jbBZjBxNcjiBHrxiQb16nQHW0Z0=\nR:zsyscall_netbsd_arm64.go\nZ:Q1MP662/V075Jr4gYVm3PuecJ4+7g=\nR:zsyscall_openbsd_386.go\nZ:Q1XgG0Vm2TACyyOmWA3adn4P+CNmM=\nR:zsyscall_openbsd_386.s\nZ:Q1X5YBUySOWAOAYxyz6X6e7QanleY=\nR:zsyscall_openbsd_amd64.go\nZ:Q1qUo6D3ZSLTRZVnizl2C6gLxVd10=\nR:zsyscall_openbsd_amd64.s\nZ:Q1edTh0qHe1M40a5JJH6+1q09CkFc=\nR:zsyscall_openbsd_arm.go\nZ:Q1uNEGdVMqj4C6sBS2mcc15fh7sbM=\nR:zsyscall_openbsd_arm.s\nZ:Q1WdjP1wI8Z0HUXcMpyT36qTPaX1Q=\nR:zsyscall_openbsd_arm64.go\nZ:Q1XMLFfeQ2ENolS4szlZEAStr74bk=\nR:zsyscall_openbsd_arm64.s\nZ:Q1OvWKZapZSX56Qto9X/BN1y/KiIM=\nR:zsyscall_openbsd_mips64.go\nZ:Q1u5I682NBqKNLFFckv/dfNXuO3bw=\nR:zsyscall_plan9_386.go\nZ:Q1sp2JWdXlKL2p/UKXWvn1wtKOo3s=\nR:zsyscall_plan9_amd64.go\nZ:Q19XodcKOIfvN53VJ1C+ybpcf5T7c=\nR:zsyscall_plan9_arm.go\nZ:Q1ZSUifbm6HTmrBYelfGUATle0yRw=\nR:zsyscall_solaris_amd64.go\nZ:Q1U+hgUpnz0GFtV1tdtTZbDikgVuI=\nR:zsyscall_windows.go\nZ:Q1zO8kFj+bY6cWTt1MySuVtgZcVj4=\nR:zsysctl_openbsd.go\nZ:Q1brtklkkdbKAWlAHZFc9PSl6o9Ys=\nR:zsysnum_darwin_amd64.go\nZ:Q1VF++JsityZmNvOSlSphUQRAb3Fc=\nR:zsysnum_darwin_arm64.go\nZ:Q1EnU0nn6KUavzgtkrMDuyHTpTA3Q=\nR:zsysnum_dragonfly_amd64.go\nZ:Q1+YsCfI1SGTu3YZx+FgxQiwG4WY0=\nR:zsysnum_freebsd_386.go\nZ:Q1hEjucsWgzPg9uVpu3Du/n1UvqYw=\nR:zsysnum_freebsd_amd64.go\nZ:Q1JujZa7vp1g0ivZZjK1eJrr75i5k=\nR:zsysnum_freebsd_arm.go\nZ:Q1o5IvwpZHnVgF7ASXFRoIr6Zn3To=\nR:zsysnum_freebsd_arm64.go\nZ:Q1WCh7Yi1FkuvBIOG33IsvfBvgKSg=\nR:zsysnum_linux_386.go\nZ:Q1Se8DRJvfGy6HzjG4BM+bznZJPvs=\nR:zsysnum_linux_amd64.go\nZ:Q1xBK65yZ8X1COz5C3eZ+fIybgl48=\nR:zsysnum_linux_arm.go\nZ:Q1nY1+wNRSB0lz9k5MS9BvNAJvrTQ=\nR:zsysnum_linux_arm64.go\nZ:Q1ZlQKsRPPXQbG03YCLm8bxy6we8k=\nR:zsysnum_linux_loong64.go\nZ:Q15pbcwhcU6vkEeDBFl7NGKw48nZc=\nR:zsysnum_linux_mips.go\nZ:Q13iUXZQNHLWOyNmQidy7+aTHf79Q=\nR:zsysnum_linux_mips64.go\nZ:Q138S7O0CKK53hclErZrQG2AAkgXQ=\nR:zsysnum_linux_mips64le.go\nZ:Q138S7O0CKK53hclErZrQG2AAkgXQ=\nR:zsysnum_linux_mipsle.go\nZ:Q13iUXZQNHLWOyNmQidy7+aTHf79Q=\nR:zsysnum_linux_ppc64.go\nZ:Q1TuUwodP04zEivDvtZ4+if+9hjw0=\nR:zsysnum_linux_ppc64le.go\nZ:Q14qhcDv8ZVExX/NgzNCEUBcVg+C4=\nR:zsysnum_linux_riscv64.go\nZ:Q1PR03Efwjk7jf76Q05f09ma+COnU=\nR:zsysnum_linux_s390x.go\nZ:Q1yhq/ZMI15dPl1ZYfLycfVcSrV4k=\nR:zsysnum_netbsd_386.go\nZ:Q1fenySTB5Wl7b+ekUk319MIyfq54=\nR:zsysnum_netbsd_amd64.go\nZ:Q1cZCnk9tvHkN49h2JWNP7kajfuAk=\nR:zsysnum_netbsd_arm.go\nZ:Q1zxHIpqFh66cj87wMgH89e0RIvzU=\nR:zsysnum_netbsd_arm64.go\nZ:Q1tnx6ov/aB7xQNzu54T1gi9GqsSo=\nR:zsysnum_openbsd_386.go\nZ:Q15y0HOBvGuZfxlJ6mTBAUkWUUBZ8=\nR:zsysnum_openbsd_amd64.go\nZ:Q1Ydp6QE5UfwCYyD3kGUv7qVXo7AQ=\nR:zsysnum_openbsd_arm.go\nZ:Q1b24QTFbMfHFU8H3G7SMbuh4h5Zw=\nR:zsysnum_openbsd_arm64.go\nZ:Q1CgVQdX33wHSW718t0BQckAoxNfE=\nR:zsysnum_openbsd_mips64.go\nZ:Q1O1z+h/Ucn0cPPpSIGQyb8L7W5p8=\nR:zsysnum_plan9.go\nZ:Q1dr2U7YF1RDSQeTHcOkPWF2w0/uo=\nR:zsysnum_solaris_amd64.go\nZ:Q1mALxmYJVyDAXcp0PX25W//LCdQg=\nR:ztypes_aix_ppc64.go\nZ:Q1O2+TsNZSZUY5FZKCsdpdYzZjrG8=\nR:ztypes_darwin_amd64.go\nZ:Q1zLQdn2HG7U90502efrE/XYZaSjU=\nR:ztypes_darwin_arm64.go\nZ:Q1BhlSCMMa5rbTIhN4iTjfG3/lARE=\nR:ztypes_dragonfly_amd64.go\nZ:Q1ktcaGpuQpJVbO1bkAxRl3TP2dmY=\nR:ztypes_freebsd_386.go\nZ:Q1h3ioI9aaRRCZghLj7NQ+KUh4kYY=\nR:ztypes_freebsd_amd64.go\nZ:Q1jLCSo+uRafaG9J7r8aifQKggAis=\nR:ztypes_freebsd_arm.go\nZ:Q1kJNtNAL7jC6xhhpl3qN0sw3teC8=\nR:ztypes_freebsd_arm64.go\nZ:Q1ApleeOOo/dlwg4fE7N+74vzKHtE=\nR:ztypes_linux_386.go\nZ:Q1T2qUo65xYcuYXmXNqlgU4aFtIvI=\nR:ztypes_linux_amd64.go\nZ:Q1zzR4ADGX29HnBBWy+oLHILaoel4=\nR:ztypes_linux_arm.go\nZ:Q13uP8e4LdFWMEf/zcdmzl86fLrx4=\nR:ztypes_linux_arm64.go\nZ:Q1UG+abeDcTk6COFsbpECjdsatyEw=\nR:ztypes_linux_loong64.go\nZ:Q1dOG+IJQEpIF7IWbynCYxby2o5CY=\nR:ztypes_linux_mips.go\nZ:Q1+oq4wDF7vRvqPF4VBzyINgqKMW8=\nR:ztypes_linux_mips64.go\nZ:Q1ZdczyiQTIIyDMU4CoO3wPc/2koM=\nR:ztypes_linux_mips64le.go\nZ:Q1ZdczyiQTIIyDMU4CoO3wPc/2koM=\nR:ztypes_linux_mipsle.go\nZ:Q1+oq4wDF7vRvqPF4VBzyINgqKMW8=\nR:ztypes_linux_ppc64.go\nZ:Q1xiy7hrg9e6XtcXOQeAJf6l7ro0M=\nR:ztypes_linux_ppc64le.go\nZ:Q1/r4i0NAqj4O9HtrP372t9E3u/tY=\nR:ztypes_linux_riscv64.go\nZ:Q17zIyF6feuEgx3d7OggXeo3S8660=\nR:ztypes_linux_s390x.go\nZ:Q1NmacGoQO0yiYBdqEUc77H6biIrs=\nR:ztypes_netbsd_386.go\nZ:Q1szSk08Mx0Vv2v1kx0dn5o6FKvR8=\nR:ztypes_netbsd_amd64.go\nZ:Q1USjrU2v4ynVMRRZxwhBAimKfers=\nR:ztypes_netbsd_arm.go\nZ:Q1yTPeUp1R7AZDobup0fuN0JutOfA=\nR:ztypes_netbsd_arm64.go\nZ:Q1DRd9WjBbTHcxSxXoO6Fh2xJC6bA=\nR:ztypes_openbsd_386.go\nZ:Q1ueCVgp0YO4VPhZk+bA+156Dv3xw=\nR:ztypes_openbsd_amd64.go\nZ:Q19nEBDxRPD4GFOstrchE5+HufGFs=\nR:ztypes_openbsd_arm.go\nZ:Q1n7TO8/I5Q6Ccb/UINFDHiWxlEE0=\nR:ztypes_openbsd_arm64.go\nZ:Q1j056k57PgpZX6lpARwbr9T9ThLQ=\nR:ztypes_openbsd_mips64.go\nZ:Q1j056k57PgpZX6lpARwbr9T9ThLQ=\nR:ztypes_solaris_amd64.go\nZ:Q1OWimTfTp99KSYm7XRPDiUF5eCEI=\nF:usr/lib/go/src/syscall/js\nR:func.go\nZ:Q1ja8Jl7oaJtOXstcjrZwMFYRnh7E=\nR:js.go\nZ:Q1zmkuAuBIbo0BK8/WCcM2UFElKc0=\nR:js_js.s\nZ:Q1qLfa5cy9MAJjJ6btrd+6eBBsRY8=\nF:usr/lib/go/src/testing\nR:allocs.go\nZ:Q1NDArFNV0nfwfe6kUz87pK6rjYQo=\nR:benchmark.go\nZ:Q10KGKjAt0uUzdgzu27GsTvWnPglA=\nR:cover.go\nZ:Q16AXFWXpR4yliGuznZeuppIzthDs=\nR:example.go\nZ:Q1YRkCwhQGRQ+sx5N0eLpdXvXm5Og=\nR:fuzz.go\nZ:Q1J7WbTgDc0Uw5sqP36oWd8bUjVvc=\nR:match.go\nZ:Q1e7vKcrAlRrpVogvnbGsBOxHB+Q4=\nR:run_example.go\nZ:Q1h4+cZrf0/+15p/ln35lREZfpEBI=\nR:run_example_js.go\nZ:Q1ZH1UJiPpizdfLvfiUTzFTmo+l9g=\nR:testing.go\nZ:Q1tvWraybvDB/By954bM9Bvh5WImE=\nR:testing_other.go\nZ:Q1RKzErwsEVSH7LJ8KJZtwHwo1a68=\nR:testing_windows.go\nZ:Q1PtSxhHuIMStzhHvaOvRPvLHGQfw=\nF:usr/lib/go/src/testing/fstest\nR:mapfs.go\nZ:Q1I+yYQrrMOyI+1mCLkmTqv4sr//8=\nR:testfs.go\nZ:Q1+3c1Aw/2SSGzDamO1BgyJpVazMQ=\nF:usr/lib/go/src/testing/internal\nF:usr/lib/go/src/testing/internal/testdeps\nR:deps.go\nZ:Q15R/64lk2X6BykLnwJAGrN4GXBP0=\nF:usr/lib/go/src/testing/iotest\nR:logger.go\nZ:Q1vvEw4K02yRRp1/1FobxHVdp8AEY=\nR:reader.go\nZ:Q1uGwNJA4GKj/K7ZoNd4wddwU6KI8=\nR:writer.go\nZ:Q110MM7/eg3psZHtend3y8bYciYgM=\nF:usr/lib/go/src/testing/quick\nR:quick.go\nZ:Q1hGq81BgSzUlYlmJWNALiG+7XXas=\nF:usr/lib/go/src/text\nF:usr/lib/go/src/text/scanner\nR:scanner.go\nZ:Q12u0EgX5C8AwHSO5CPANxqrcCgEk=\nF:usr/lib/go/src/text/tabwriter\nR:tabwriter.go\nZ:Q1pPm+EFxk5Kf6iotmmyrQZHk9Tjg=\nF:usr/lib/go/src/text/template\nR:doc.go\nZ:Q1L/qojZXU5MkYYnL0rYGOaQN6TIU=\nR:exec.go\nZ:Q1jKVM7Sj+Pqj1RAN7BUqGINJAArE=\nR:funcs.go\nZ:Q1U9JCuVywvdZoKZTHZ/43/x7Awgk=\nR:helper.go\nZ:Q1zOoRiflPqRMkACxsigvLVR8MNy4=\nR:option.go\nZ:Q1VspzXif4e/rFcGYfLahRstjaYvY=\nR:template.go\nZ:Q1wu0hQGQdcpw4BwsbdbUYQEfnuPI=\nF:usr/lib/go/src/text/template/parse\nR:lex.go\nZ:Q1tGaqO6hVTC6AaXA4rU074goMi8g=\nR:node.go\nZ:Q1Brr8bPWdkU7E6tmZunWmkwPVIAc=\nR:parse.go\nZ:Q1z5zh/fwcSp0agMXYmIEpReykrnE=\nF:usr/lib/go/src/time\nR:embed.go\nZ:Q11AHfIQ9vzKbxjvfCDO/rISntEFQ=\nR:format.go\nZ:Q1pGZDC+ddHMcQHKgm+CAka0GT8OA=\nR:genzabbrs.go\nZ:Q1hIVrTWQAriho5H6GpwYnXvVLrW0=\nR:sleep.go\nZ:Q17L3E17jCIPKGV+eHpVbd/EaXUsM=\nR:sys_plan9.go\nZ:Q1TCLOuGdzdC2QeujedShus/HwvXw=\nR:sys_unix.go\nZ:Q1VWA6eKMMKFtqH8/HlAIc1GfdmS4=\nR:sys_windows.go\nZ:Q1ZXC21nBVZBDk8yPt4Je77RSic1Q=\nR:tick.go\nZ:Q17LJ0ewQBAt/Pyf6ikGl7hrBJgzw=\nR:time.go\nZ:Q1x6tVAcQzd95B+nQo5TVElxthHBk=\nR:zoneinfo.go\nZ:Q18dWxAaMUdL1j+fxH36LbR/UnZ/4=\nR:zoneinfo_abbrs_windows.go\nZ:Q1atDc1WT7RJNt+DuoGViCqC+V0eU=\nR:zoneinfo_android.go\nZ:Q1UDkF4EPlOldOVmjQqXBqMppYk6A=\nR:zoneinfo_goroot.go\nZ:Q1xsOtQ04UnGNytcsFZaHjI4OrRj0=\nR:zoneinfo_ios.go\nZ:Q1vv2ZTgnAQ3CrYJvFHwurc5MbUWA=\nR:zoneinfo_js.go\nZ:Q1xcqcZZfpV+Y2WCWZcydsvYrMtLk=\nR:zoneinfo_plan9.go\nZ:Q1+WpLSvhJPJRYJLS2dlr9M6KLIwk=\nR:zoneinfo_read.go\nZ:Q1vQoWA31+Maay7i++dLvvfGrTR3I=\nR:zoneinfo_unix.go\nZ:Q1/Em0ntn1CqnrAdDay1Oi8Le8kQU=\nR:zoneinfo_windows.go\nZ:Q1mtTMnTD71kHXQTktsY6Ndj5Nk5A=\nF:usr/lib/go/src/time/tzdata\nR:generate_zipdata.go\nZ:Q1AT93CLXKCQ+D6hfCKQhJUYhF9tU=\nR:tzdata.go\nZ:Q1BqveZQkmL/vmMn3x5NMJwO6jU+w=\nR:zipdata.go\nZ:Q1wgS/YDjqkDXgZ3AsIpGm2E+SH1U=\nF:usr/lib/go/src/unicode\nR:casetables.go\nZ:Q1HSECiYsWR5CuzrnfvXCIHjqIq4Q=\nR:digit.go\nZ:Q1qpWIzDSIYXE8hX170R5mknsjUaU=\nR:graphic.go\nZ:Q1fXRpH2osaDhSphEuiY1dQYso5T8=\nR:letter.go\nZ:Q1JFsgrP9b4KlttzhRjPV/yAhAhh4=\nR:tables.go\nZ:Q1SGm99XBbRfM0sB+MvkB925944uE=\nF:usr/lib/go/src/unicode/utf16\nR:utf16.go\nZ:Q1xyKSnJZeOXcZdwLZvvffpB+2KbY=\nF:usr/lib/go/src/unicode/utf8\nR:utf8.go\nZ:Q192u7+OcC8prNyeMtmdIqVmhcCg8=\nF:usr/lib/go/src/unsafe\nR:unsafe.go\nZ:Q1kbpUldyTWAU9bErKxY17/R2Fn7Y=\nF:usr/lib/go/src/vendor\nR:modules.txt\nZ:Q1iPhTiwvrkbpW4H57g99RJZZyFNw=\nF:usr/lib/go/src/vendor/golang.org\nF:usr/lib/go/src/vendor/golang.org/x\nF:usr/lib/go/src/vendor/golang.org/x/crypto\nR:AUTHORS\nZ:Q1XSIpEwJVjMHf5HKcabrGJyUtPBA=\nR:CONTRIBUTORS\nZ:Q1OQl1c8MR3vVEXk3MrzGJmHRlvIM=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/chacha20\nR:chacha_arm64.go\nZ:Q1/0iFGJSbrFtFWZXz6hkVnPu78zA=\nR:chacha_arm64.s\nZ:Q1guP3lb5kHoEgb9Uy9RMCCGaIoAI=\nR:chacha_generic.go\nZ:Q1qCpF7oXorZedcug+QRDjP6NAFFg=\nR:chacha_noasm.go\nZ:Q1tnY3Tq0sPLE21Bu10Zl4okGxXYs=\nR:chacha_ppc64le.go\nZ:Q17AGVEDEWXlYkTNjJ/oO2tx6mF0U=\nR:chacha_ppc64le.s\nZ:Q1dSVb5mwwMTx42AInrRFrxCDrxRE=\nR:chacha_s390x.go\nZ:Q1dYJOnSJGncIzC1IwK8LrmDdft0A=\nR:chacha_s390x.s\nZ:Q1qHVdxb42uGukCsdThXDUyLGjObQ=\nR:xor.go\nZ:Q1Vhu+ktb8xSzP5aI0lkm1zyyjQAw=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/chacha20poly1305\nR:chacha20poly1305.go\nZ:Q19doD6XOfNgTT85k/zKrYjuzgQOM=\nR:chacha20poly1305_amd64.go\nZ:Q1PCvdg6J5PV5vStD5PMlK0zOX36Y=\nR:chacha20poly1305_amd64.s\nZ:Q1GRWvBTkXjYRIMiwCdrSCYpss8nw=\nR:chacha20poly1305_generic.go\nZ:Q1koEgimz3daZYK89JDL2zzGyv6/4=\nR:chacha20poly1305_noasm.go\nZ:Q1Fg9uUXEov3AX60QI7/iEHsTUvF0=\nR:xchacha20poly1305.go\nZ:Q1uiHKhJZX7/jx1a8mY+YRNR3OEHw=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/cryptobyte\nR:asn1.go\nZ:Q1vwMiRm2cfw0ZAVNyaQVOyqHuBxQ=\nR:builder.go\nZ:Q1x+0WHdXon0/nA1PaYk66B0qxPGs=\nR:string.go\nZ:Q13hizdBrJuznGe4paI0Gm/pmlR3k=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/cryptobyte/asn1\nR:asn1.go\nZ:Q1qaVvSECzheb+itmLDxXge8I+mQc=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/curve25519\nR:curve25519.go\nZ:Q1RWkv0Nm3eXWTp4/R6MDG7t3Np8M=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/curve25519/internal\nF:usr/lib/go/src/vendor/golang.org/x/crypto/curve25519/internal/field\nR:README\nZ:Q1aCO1gb9WZXnT9TKcnoaiorIoHpI=\nR:fe.go\nZ:Q165vtHnYAK1fMjsEZuJqFh1O+hTw=\nR:fe_amd64.go\nZ:Q1pRDEoKGVFgxUWzcqcNBtkFRcs7M=\nR:fe_amd64.s\nZ:Q1zapCqkJZO2mAVH0A7f78Jg5qFQM=\nR:fe_amd64_noasm.go\nZ:Q1sicvktDWAbxPt4HXiyAxCbBVoXs=\nR:fe_arm64.go\nZ:Q1v5BClXOoWFztd/ZZfvpyh5PRlKI=\nR:fe_arm64.s\nZ:Q1lcsg2p2+VXkdW7Hp7K5sKau4AMo=\nR:fe_arm64_noasm.go\nZ:Q17hwmr/QV2BSgBziXkgXgsG7zvzE=\nR:fe_generic.go\nZ:Q1x3HhQLbEzBVNEFwI/cCDFIV0ypw=\nR:sync.checkpoint\nZ:Q11aCrxXbVYJ6qvy9gbBmnGnShrTI=\nR:sync.sh\nZ:Q1EQvQsEhEuNSso3QKDgdKBK1qPj8=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/hkdf\nR:hkdf.go\nZ:Q1/xSEcNRUAV9cdqQv+C1JVXn6wPg=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/internal\nF:usr/lib/go/src/vendor/golang.org/x/crypto/internal/poly1305\nR:bits_compat.go\nZ:Q1oq4tqv1YwoiQ5z8OYPA5+cQQr4I=\nR:bits_go1.13.go\nZ:Q1m1zlHEPV3NjwCCRPVD95RXuQZtQ=\nR:mac_noasm.go\nZ:Q1p/CDCd5QP0UW03EfNebXduTv/dU=\nR:poly1305.go\nZ:Q1x3NwjsvPXztvia57ejxfas7CsfE=\nR:sum_amd64.go\nZ:Q1J/eWYa/ytHj1k/OilDxFsxoiQ50=\nR:sum_amd64.s\nZ:Q1KLHHrrF6M1EuUdWqDD4SaW9+hgQ=\nR:sum_generic.go\nZ:Q17ZTUX+DU4KQ0O0sxXa1qPibsVQI=\nR:sum_ppc64le.go\nZ:Q1CarOkqPcqduZbSYdwT1BxrQAaBY=\nR:sum_ppc64le.s\nZ:Q1QbPl1S0w8YRgYg4/e2f5vg3E4I8=\nR:sum_s390x.go\nZ:Q1Vnf9hiU7L4VvfTop7/QRp8e0NTU=\nR:sum_s390x.s\nZ:Q1wnS5XQQ5/glnhIt5cwVFyTY5fXM=\nF:usr/lib/go/src/vendor/golang.org/x/crypto/internal/subtle\nR:aliasing.go\nZ:Q1NXEpKrVplkSKgnonH/rMLDbnp5o=\nR:aliasing_purego.go\nZ:Q18jyfm44LKFS/O/XhXaDexdk+DLY=\nF:usr/lib/go/src/vendor/golang.org/x/net\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/vendor/golang.org/x/net/dns\nF:usr/lib/go/src/vendor/golang.org/x/net/dns/dnsmessage\nR:message.go\nZ:Q1BUsNeSsfBnOAQVBVr2S8jg1rcHI=\nF:usr/lib/go/src/vendor/golang.org/x/net/http\nF:usr/lib/go/src/vendor/golang.org/x/net/http/httpguts\nR:guts.go\nZ:Q17tC86+KxpKy2r4jv32Das0rdv7U=\nR:httplex.go\nZ:Q1N7Kc0nEr1x+XgLInDgjR886DE9g=\nF:usr/lib/go/src/vendor/golang.org/x/net/http/httpproxy\nR:proxy.go\nZ:Q1R8gRQ6AC5jmndrOOjUFFYiAuGbY=\nF:usr/lib/go/src/vendor/golang.org/x/net/http2\nF:usr/lib/go/src/vendor/golang.org/x/net/http2/hpack\nR:encode.go\nZ:Q18VsmivsaksxpKMrIs5we9bwz73Q=\nR:hpack.go\nZ:Q1sCGKET6XVyzNGWHPgINvoPrs8v0=\nR:huffman.go\nZ:Q16bnSbKBXiZyY3uFEZvsCjUcrDNU=\nR:tables.go\nZ:Q1GvXOmj9V7len4VDi9FMqsoCbf1U=\nF:usr/lib/go/src/vendor/golang.org/x/net/idna\nR:go118.go\nZ:Q1gCbFJhH4lIqaNuFGmmGiVxeXJtQ=\nR:idna10.0.0.go\nZ:Q1frOU2ZLE6+yBBAscGkbIJgf0miw=\nR:idna9.0.0.go\nZ:Q17xF/eeHM9EMfVmFJRAsLpzj0DIU=\nR:pre_go118.go\nZ:Q1flKEnYplggvshGlFNJsD3ElUvQs=\nR:punycode.go\nZ:Q1ZYJUOmJHKmnCM1SSbdTvWq+8pwk=\nR:tables10.0.0.go\nZ:Q1s1vMsXtEtb2MVc8hifo2Ntm311I=\nR:tables11.0.0.go\nZ:Q1Kr1WuZG+eTt/M4LgfMAbvSCp/3I=\nR:tables12.0.0.go\nZ:Q11zWdlAW8C1CAptKx3J+fplKrxF8=\nR:tables13.0.0.go\nZ:Q1xU70D0iFIQ0O3l17O4j7pW6cvfE=\nR:tables9.0.0.go\nZ:Q1jghDY4V0V8ltNP363cKnCSg0D1s=\nR:trie.go\nZ:Q1wSI4f29vgwoAprG6JSs6hkvNkXY=\nR:trieval.go\nZ:Q1q6ExY0eZifxeEgiZHdWKmq0I9c0=\nF:usr/lib/go/src/vendor/golang.org/x/net/lif\nR:address.go\nZ:Q1d+7392U0eUZuoy3q58KjaQcwFpw=\nR:binary.go\nZ:Q1l5DqVXN06wWI1qpvTLDOmRGVYNg=\nR:lif.go\nZ:Q1dt4J65OK5VM1fM1fFAHsqQkrm9c=\nR:link.go\nZ:Q1CHq6mzRmQ9ekw3oQLctJar93B84=\nR:sys.go\nZ:Q11LlXNWoesVPSOpuJWboNEPvie3k=\nR:sys_solaris_amd64.s\nZ:Q1YwGpfOtii62TzBqcAlqgFfnV9Vw=\nR:syscall.go\nZ:Q1ZI2gWECigpP4aKn0dw3k2mvnZ7Y=\nR:zsys_solaris_amd64.go\nZ:Q1o89HmJv4if8/0l5w5bjE6TRo/00=\nF:usr/lib/go/src/vendor/golang.org/x/net/nettest\nR:conntest.go\nZ:Q1OO1/ElUHinPYCdWw+EAc046iO9o=\nR:nettest.go\nZ:Q1+Ans5cVn7MjeBWzAnfp9z3pm+2g=\nR:nettest_stub.go\nZ:Q1CRmsF1OtVlMvwGZZjmPoVBRJ9kA=\nR:nettest_unix.go\nZ:Q1CKlEKBCwEhsaCBl3GxCO5zl1pnI=\nR:nettest_windows.go\nZ:Q1fxy5OBB4L9ix04LtTeYpQzTZWOs=\nF:usr/lib/go/src/vendor/golang.org/x/net/route\nR:address.go\nZ:Q1kh67s0W3Bjwq8v3aIGnlqGxF89k=\nR:binary.go\nZ:Q1wEHIWdkS3SvRjiVtQnRKdgi9mFU=\nR:empty.s\nZ:Q11uDDnjDYUS9L9lvi1R9byj/L5bM=\nR:interface.go\nZ:Q16oVVGwLGmIDCT1FDpcRtC42vXDA=\nR:interface_announce.go\nZ:Q1400ovWecFJSCZvFc0+mkdZu+nEA=\nR:interface_classic.go\nZ:Q1rOzy/YzBNX/Cuc2fmqyHh6ys7mI=\nR:interface_freebsd.go\nZ:Q1NnamefkhCjJy6GvsmkdfCea5jDk=\nR:interface_multicast.go\nZ:Q1t1aEnZAdh6mB/307onPjH8GkTRA=\nR:interface_openbsd.go\nZ:Q1qOHEZ7G+Q9+ZzgU6B6fmXF7iBDs=\nR:message.go\nZ:Q15pVaitJurzP4xom3srr9Vr0NBq4=\nR:route.go\nZ:Q1PAlq8DbU8qM7w/E6KlOVXlz8TOI=\nR:route_classic.go\nZ:Q13B2qshlZVAheuxK58rG/2QmAcdw=\nR:route_openbsd.go\nZ:Q1Sw4ZPPAuBHCuP5ixbJj49loZLN4=\nR:sys.go\nZ:Q1tQoz0Kv4aixDFhZ0nvLHIU+yAy0=\nR:sys_darwin.go\nZ:Q1GEjOc/e0zce67trM4RIn15c7j+E=\nR:sys_dragonfly.go\nZ:Q1zrBYJU73tHA0oVqKiZ8Nk59AHTk=\nR:sys_freebsd.go\nZ:Q1AOmLmbT5b4y3dK4S00vLgqFX6NU=\nR:sys_netbsd.go\nZ:Q12escy6KDK3UcVRT8UCUP+Fant0c=\nR:sys_openbsd.go\nZ:Q1U85uoKSWAvU3RWHNhOtTQsYHKuE=\nR:syscall.go\nZ:Q1ihqWoPoceK/O3hWv9g97xfYCMhU=\nR:zsys_darwin.go\nZ:Q1s/wuniYP4F7dtcW7qUPqdXQw6Ew=\nR:zsys_dragonfly.go\nZ:Q17sdPWcCfw1IpGsoCdSb5aa60UsA=\nR:zsys_freebsd_386.go\nZ:Q19Rt8VprFSTEJGf9B2i6+qr358qQ=\nR:zsys_freebsd_amd64.go\nZ:Q12J/73d48xmup9+82X2gTP3nNGTg=\nR:zsys_freebsd_arm.go\nZ:Q1LDBynT1VUxulORS978OIksuLoI0=\nR:zsys_freebsd_arm64.go\nZ:Q12J/73d48xmup9+82X2gTP3nNGTg=\nR:zsys_netbsd.go\nZ:Q16uzx1A58lkt1Nk/UadfhOX4R55g=\nR:zsys_openbsd.go\nZ:Q1Jp8Y1VZIHepqjENE9u+J7o1ttss=\nF:usr/lib/go/src/vendor/golang.org/x/sys\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/vendor/golang.org/x/sys/cpu\nR:asm_aix_ppc64.s\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:byteorder.go\nZ:Q1u4urq4ci617mu/pQbqqklThaov0=\nR:cpu.go\nZ:Q1Y/Su0IRIqTcIXJMRUETmRXbr6Rw=\nR:cpu_aix.go\nZ:Q1uhLCQtu3FBtMkad1UJ0mnFNnY+s=\nR:cpu_arm.go\nZ:Q1irn3/2mwv6EGwymKpMDdPA6YQCQ=\nR:cpu_arm64.go\nZ:Q1bMFjnpLSyyCc7mDHa65/nHvaFdQ=\nR:cpu_arm64.s\nZ:Q15cwMG8RWu2skOjBCjC+HBJ3N/PA=\nR:cpu_gc_arm64.go\nZ:Q1S5JnOwwaruSJ0LSCIc6DW1INFxA=\nR:cpu_gc_s390x.go\nZ:Q1wdthVgAljHMwiznxXU3zFaa0fws=\nR:cpu_gc_x86.go\nZ:Q1B7CG0XuhYEICx7vo/4W0NlzxthE=\nR:cpu_gccgo_arm64.go\nZ:Q1yBXhRlWbveB0KoBaSoEqQrEy6oI=\nR:cpu_gccgo_s390x.go\nZ:Q1+vNMmGhtD1uki8QtbYB0JM0c8hI=\nR:cpu_gccgo_x86.c\nZ:Q1laIv9Fh3ZtQQTfuNSrCUPurHKYk=\nR:cpu_gccgo_x86.go\nZ:Q1NDpSfvdzZ/FbekK0MMH5G1vs3W4=\nR:cpu_linux.go\nZ:Q1F42gPFumxKVdrlWMglL+12OXJOo=\nR:cpu_linux_arm.go\nZ:Q1zVieehRzOZz+QkJIg8sALTGwh8o=\nR:cpu_linux_arm64.go\nZ:Q1awXsREQO7Dw/d3hXWaH38sqJSUk=\nR:cpu_linux_mips64x.go\nZ:Q1hZndP5n4qTaEwPr2Aydd2B6ElW0=\nR:cpu_linux_noinit.go\nZ:Q1xQ6SRMj425JVZ62L0xqJhOKdZMM=\nR:cpu_linux_ppc64x.go\nZ:Q1dOcSWDNJx726siUakA7xAbLjDNA=\nR:cpu_linux_s390x.go\nZ:Q1TWiA2yUyCHZmqCg8FA41YR8fQJ0=\nR:cpu_loong64.go\nZ:Q1TjXoX2Ox/CF18ro5b2f8U9nsUa8=\nR:cpu_mips64x.go\nZ:Q1uVhLvIiMZs3KVZUWQbZEhMLBtxM=\nR:cpu_mipsx.go\nZ:Q1hBKN6JlpiZXxz7hB4w+O/8caGe8=\nR:cpu_netbsd_arm64.go\nZ:Q1wzFxhSkZwmN8k5NhtMht2zA2R1k=\nR:cpu_other_arm.go\nZ:Q1h5g0zpXRUCuz0fc0o63WFoU4rXM=\nR:cpu_other_arm64.go\nZ:Q1x5hS4HZzG8j6eOTCkdqd0FNz5Ho=\nR:cpu_other_mips64x.go\nZ:Q1XwSKl7YWCsI5hamU30/1DstAW3k=\nR:cpu_ppc64x.go\nZ:Q1ZGHmURO/VBD2Oxfqyr1Hjcve4C4=\nR:cpu_riscv64.go\nZ:Q1A/PpmbzuyIH6ExyEon1qhZylI/w=\nR:cpu_s390x.go\nZ:Q1v3PQKQICufbOkRMM8V9X6cI5Q4M=\nR:cpu_s390x.s\nZ:Q1L7kn4bRae73MTwt6lEtKSnreOWo=\nR:cpu_wasm.go\nZ:Q1mfZjjCtyLtwAu78KULyGOKDAzzY=\nR:cpu_x86.go\nZ:Q1uBsNLXf4KWoflYPY839k6r7MA8k=\nR:cpu_x86.s\nZ:Q17hFdUKkSBexknaZIZasd9hPe1lg=\nR:cpu_zos.go\nZ:Q1JU2quB8SdGMAs4NdOGiaahPk/zE=\nR:cpu_zos_s390x.go\nZ:Q1jvwZJzHb2X7ohYbe6gurdQMUt+A=\nR:hwcap_linux.go\nZ:Q1J9RAmzqNnDDFdPxdjH4hcoTkZrQ=\nR:syscall_aix_gccgo.go\nZ:Q16RAjpXZsfKFrE6/ShLkyutgPyzY=\nR:syscall_aix_ppc64_gc.go\nZ:Q1EF+8Q7xnnkSWsicmFgjhHc3QWJw=\nF:usr/lib/go/src/vendor/golang.org/x/text\nR:AUTHORS\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTORS\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nF:usr/lib/go/src/vendor/golang.org/x/text/secure\nF:usr/lib/go/src/vendor/golang.org/x/text/secure/bidirule\nR:bidirule.go\nZ:Q1BhxORRAY9bGbuR0zSj5z7VELayc=\nR:bidirule10.0.0.go\nZ:Q15W0OM4KghM9NTptvVpYDBaS9Fgg=\nR:bidirule9.0.0.go\nZ:Q1CI8tU8OFN0GNR0JX4U2Ht2/ciro=\nF:usr/lib/go/src/vendor/golang.org/x/text/transform\nR:transform.go\nZ:Q1tksUO9DeSoZrGLxM/Sm1D/yGr3Q=\nF:usr/lib/go/src/vendor/golang.org/x/text/unicode\nF:usr/lib/go/src/vendor/golang.org/x/text/unicode/bidi\nR:bidi.go\nZ:Q1bz9qd1P1IKX2gnZ2JofWYlPzYY8=\nR:bracket.go\nZ:Q1AsaBZfD9dbyulqSkUVInHphYQc4=\nR:core.go\nZ:Q1AAjviqAzh+bgdpGo8WQTUM4ld5w=\nR:prop.go\nZ:Q11ttZbxGQO3APKYCPjpo0scBV0GE=\nR:tables10.0.0.go\nZ:Q15dQ5AaKnyUS8pEAjlh9OeDCs4Jw=\nR:tables11.0.0.go\nZ:Q1r0N8Jz01lfUZg/6kLYp4DwWMuaI=\nR:tables12.0.0.go\nZ:Q17fTuCHuui9rYDmfUYo7zTkssWko=\nR:tables13.0.0.go\nZ:Q11Ck5eOljLtRgBj9Zo7wb8UiGhyM=\nR:tables9.0.0.go\nZ:Q1Nj0OPZXam3uXJwfH7nKNkJjpa5c=\nR:trieval.go\nZ:Q1slOIilUawdnTLvWWQEQkG+lxwwo=\nF:usr/lib/go/src/vendor/golang.org/x/text/unicode/norm\nR:composition.go\nZ:Q1uqYOSffk1BtdVQLEjzYetzT+OQc=\nR:forminfo.go\nZ:Q1yAvN89tCcQjJHjDAWJavnWIV9tw=\nR:input.go\nZ:Q1wPMQdYPQYMKk8IvN9zJk+IYhheo=\nR:iter.go\nZ:Q1LUSPoPuEQRvG4ZkxzNlI5J5B8b8=\nR:normalize.go\nZ:Q16ZADZXi8LgpWE7WKg0Y8FbWic84=\nR:readwriter.go\nZ:Q1IvyVznElXWlZKTpO9w+rFjFDNkc=\nR:tables10.0.0.go\nZ:Q1N8LgRKI2Ai/OKu8fNWeW8TuX4zM=\nR:tables11.0.0.go\nZ:Q1nPSMbO3Wa/OyZ5TmEfR38HnUHpY=\nR:tables12.0.0.go\nZ:Q1DzokSKe1dyyxVJZ6O1VHwd9idd8=\nR:tables13.0.0.go\nZ:Q1hFyhrfJXdlgUjA4kByK34TBuTgY=\nR:tables9.0.0.go\nZ:Q13i4zkBx815rebdxgKjfSPtgngb8=\nR:transform.go\nZ:Q1jSRTpGGs6qjsaih+R47+gGuCEek=\nR:trie.go\nZ:Q1TAa6hMso6TBp9zdYpkrVvkScC9E=\nF:usr/share\n\nC:Q1RDpj3iQUs6EUpFIW+UA98eNqwwo=\nP:tree\nV:2.0.4-r0\nA:x86_64\nS:41107\nI:106568\nT:A recursive directory indented listing of files\nU:\nL:GPL-2.0-or-later\no:tree\nD:so:libc.so.6\np:cmd:tree=2.0.4-r0\nF:usr\nF:usr/bin\nR:tree\na:0:0:755\nZ:Q1hZcVSPdxC61qYZpQJQa1kmBabns=\nF:usr/share\n\nC:Q1U41bcvZ8+bk9iRiwmn1CDiPDP/o=\nP:sdk\nV:0.0.1-r0\nA:x86_64\nS:411332102\nI:1392737106\nT:Development tools for melange and apko\nU:\nL:Apache-2.0\no:sdk\nD:apk-tools bash bubblewrap busybox ca-certificates-bundle curl git go make tree\np:cmd:apko=0.0.1-r0 cmd:melange=0.0.1-r0 cmd:sdk=0.0.1-r0\ns:local\nF:root\nF:root/.cache\nF:root/.cache/go-build\nR:README\nZ:Q1g4e+/DQOIdXgdVlUrbCj2hv3WGQ=\nR:trim.txt\nZ:Q13Xczbg/wtcObdojpN7BvYD9qrZM=\nF:root/.cache/go-build/00\nR:00221dbbdab70ca3ed3e58a8b4132d22b25905d1df4a6266e61480ec6047fc68-a\nZ:Q1iZZNdeobkrDJYbFJoSxI1c6GzZo=\nR:003101cbbd76896602afc1ba7c80cf79ee7537143c1253b7cba45f5d25b4df62-a\nZ:Q1KS2mpCVKAb5Z3oAvWUshT6Ukuns=\nR:0059c79660503910b7f91eefbedf302a59113340dac7dbc7a337a48a8059e579-d\nZ:Q1NftwhRcOJ8cALB+Yvnc/f4YcCao=\nR:007775b2deba47a7cd09785a280a6678000f1d067707cf5e430e1ae389b1a5b4-a\nZ:Q1/7aRFUv/CiYwOdebfr0d95d3aow=\nR:00bf011631229bfe982c538ecdc218d6ec2da8a2b190881c0a0b6744c191920b-a\nZ:Q1IzGEQt7udIV6yfAr6PWkg7965K0=\nR:00d321b489347c0c1110751bd84f300cdf0d0b14c9fcc4e9599740c5a0283a2d-a\nZ:Q16r46ESsDruD+Dz4GANLgGyINJ64=\nR:00d32fab7420ea474c9dd57fd48f0f9ce174cc8bcc9d5b047b8f3fdea2b2f28a-a\nZ:Q1xu8Aqzln4GbHevUgeixh+NQmuzg=\nR:00d5fc3dc353038c40b44835674ddfa120beed636fa59771da7b664148fc933a-d\nZ:Q1Psi1C8NHOS8D9aTmiwG3pB0wWMk=\nR:00dedcbaf5dd36c49447863279d4bf0649eb1838d56074e8076fc688dff92fca-d\nZ:Q1/9HD1IDcEYjiKy7wPbqGsAKsmHw=\nR:00f04fa1a97cca388111b3c281d53300b3b29b9f0424e5ec373fc686546fd0d5-a\nZ:Q1c0iKBrngiYGldF6dFWHGDOefbcA=\nR:00f9bc25e67aaf412865cd285866fd16d32ea447608ee4fa37ae2c9f16b962e5-a\nZ:Q1wphLjmjTkP2ozAFvs6+CXur1Uec=\nR:00fa8f50d6f57377fd7a963ac6ded389850aaeab9e9ba8c26deab15f6e57b43e-a\nZ:Q1gym8HuzUIsQZb7YvNWd8a1N0f/g=\nF:root/.cache/go-build/01\nR:0105973b588044211af05cac9cc30d47cee84c535b57d80b50c54f64cc9acdc0-a\nZ:Q1hkLxzLd2MTvpy3QvxHOaeYBTNBc=\nR:0113d59fde624ed0798225704506c1de5f51f6bae72ee2d3382eed31c64a3c66-d\nZ:Q1cqCydqJNri5Kyv9aq6kOj+8J01Q=\nR:01372c4e6b30e1e06b8d54f708feae1659bf77c8a480eda1258e5b9ec229a15d-d\nZ:Q1/hYtj1CNXP1LOEHrGBc5FSkmRz0=\nR:0142224225f24084e1f12179f894894cf0853785dacf8bbbca29d0a760fbc6e5-a\nZ:Q1sfmKeB0cf+muekfAW+nwRHI4+5k=\nR:01789f7d3598e1611588c21763fd580f12de81c9345d141afc7c4b482ffe64f8-a\nZ:Q1ILZXkgVk/W2l80vhyzH9zF4KSCo=\nR:0187ddcd59d7cd9d4abd4da296714febf8075c5f0de5c2069bc863749f5df536-a\nZ:Q1n83eVTvHO41d+Y5v4W6cxHcPi5M=\nR:018ea8527e125a1564b2f7b66a9a88648495e884b965cb165d80d267b7bdcd3d-d\nZ:Q14WUX3mHrvzP0i7RtleA7nti4aws=\nR:019a60e8cc4a1783f90a2113424bab2c6f7ad68effef94a2ed7e7d9326d595d5-d\nZ:Q19t30LHhqN8qAmEZKj+tGytLcdKY=\nR:01e50808f371a4324554eeb6d426cee05e7a11488fde4ee72d2ba3ba9410fb01-a\nZ:Q1wxRMKlp/vTebJGodzGwqgPTYcIQ=\nR:01ee2f66ab0186161e5719bcc150c1be00784ac7fba26baf6954f61c06be28aa-d\nZ:Q11JzxZXptI+lynXQMh0WOpE0MceA=\nF:root/.cache/go-build/02\nR:020182d8b28c1998b1982b8e9de20141bda2122541eff95784565fb52fa22dcc-a\nZ:Q1xy9t7pPwdQASjbIlTqNYrlXd3lI=\nR:0207672b48b26ace12ecc99c51478f6f53ebc7516517d07444ed98fc0520b746-d\nZ:Q1wwbIYC/Y5y1GgHC+iT9etga8tjw=\nR:02361286d618d0f516f662d58982b0ca384111e746d89dcfe681365f9eed87a0-a\nZ:Q1rJbasjT+6ORGW5+/FFbM7uKCWns=\nR:024354b3881e69e7fa0430cb14bb9a7dbd162403296b1bc4557f20b8e7c714b6-a\nZ:Q1ytc9183PcedabpeyfYBR3v+RCq8=\nR:025ce7bb277441bf56c40ce6d82c069701f0df84f368ea872705b0c10823ca28-a\nZ:Q1VuoioTYu9uLEeL3IW8KFc3J9mHw=\nR:025fed4ea84b43dc8271bbffbd68ebb3f854525fdf77c5adae4277e8b8b85a26-a\nZ:Q100+qWNih4BmoH+sSmLBabFg4X60=\nR:02ba5546b4abfd843cf2a1708df6804e0dda90b6908f7b49202302c1b867b7a3-a\nZ:Q1sP0Q1LWMeq+u0dfD32Dv1KzSHE8=\nR:02df633a166b2150d1c5599ac3c82e00f1c41fdb577db59e9fa9b44d9f5effe8-a\nZ:Q1TXMBKQOLE9yPd/W8+r6jpjkAkRg=\nR:02e04ed2af35d685e68b3c6b0ec84929f6211757c839b82791560a766a536edf-a\nZ:Q1A0tqDuHA1SUO/U7iHNfZjTB7Dok=\nR:02e74a209dfac4a6a88f43fa7b7820ee25dbeab726de61e1dd8ea764e03f1d74-d\nZ:Q1Ul3p8RDicUpYqXk9nfw4FvvHvN0=\nR:02ebd821357f67d8ff6040788d52e27772e060c8e81a0ecb6d8dea9a2b272bef-a\nZ:Q1exsDvJ/vtVia/GrXmPYJJ4QWkYE=\nR:02fb55ae9d0e692844d5b9f8b2dabe4a19fdfaeda1a940a0590f18b9ed1754d7-d\nZ:Q1FUFprdaZhNgvqTsEqG4imbCwFo4=\nF:root/.cache/go-build/03\nR:031b0e1571f49096e50abc0dc9de703c633947585edc60f60dad5e26d259b10d-a\nZ:Q1Y+I0xhE28jW+riHgE6tStLef6os=\nR:032fca6c13ca20f7fe8a4b814f250e422c45d0f0abb13e227e1e7606b13773c4-a\nZ:Q1B5O7jE9j09LAtkERG7xU0mewUCY=\nR:034c5b7693e458716702c3a855fb7680fe6ea4f2920c084c26e5cc05b7bb4271-d\nZ:Q1ugkYGjisCZbcYmxc7Ijm5tiR4d8=\nR:0356d08a4a7b5a9593a02c78c3fefbcbd15dbb0f16593edc0c2ac677384c8ba7-d\nZ:Q1A6QCxdilQKuOda5KzQeLQIGcuBM=\nR:03733072518afea8a23c08c1130d4e5112910cf60f6f17cedf18f4ddaabad16e-a\nZ:Q1IalRP1nMMRXdicrnHR+mhrIUipo=\nR:0374cc4f8b6ff3d6a899d243b738a2c57f5a3a404ff54ca81e5aa915a60286ac-a\nZ:Q13BU3baera9jjcHL9Tzb97tf0mR0=\nR:039890ba3a3d887bd84dfda60d825ccc59e25d0797c9874a0c63002c3549787e-a\nZ:Q1yzeRjCMpgqI+HaG817DQliurX/s=\nR:039e3151ca3c4a9887f8a4e08d66830d0e8fe3349aecdc8376cc232e042919fa-d\nZ:Q1LTJPrQMlyGVWgrdQB76PimNDTIs=\nR:03b1b0542c9183e2254f885eb4511dd53a3a96e769f57db333af6aa150cca9d4-a\nZ:Q1efkrjmY6jc1pbQzXd3nNn/3hHew=\nR:03dcf2f7b3e2762289cff7ef0bf6cc4cee34eb511abe1f7c72380ddfd544bff8-d\nZ:Q1jw4f3fZgxORxUGuOO+8zNkH8hZQ=\nR:03ee9a10e679c5ccb9455abca9051bee0fdbc8d8ff26c986bae68b3011672813-a\nZ:Q1TNPOOqc5e9EFPJxJdg/2hK4tSzg=\nR:03f9f55dbfbce8316ad5bf47606dd80b809fd92d1dc3eff795834bb0abc78739-d\nZ:Q1BMLSoe2K5FaqhoJLJBlJXZiy+DY=\nF:root/.cache/go-build/04\nR:041e60f7cf3e5c0bb61722f86fbe5f913b3e6b29ed7186a62a1ffc0dce5d4bfd-d\nZ:Q1INKUMqNWctcI4Y0grb+hxX7BIe4=\nR:042b6fa5a7a3ada13ee83d1cb8e92f973f3c4e73d13d820e5de37184612c78db-a\nZ:Q1ChsSOBAP337mD7zFMOX75g2Mz9o=\nR:043c93b7c5959b2694ed2d13ce2d392753d4fd9ace65b474c869d9307b1db69c-a\nZ:Q1+5wGoKiTr8g4SpsidkB598TO/SU=\nR:0448847f261ad0ee1054c90874f0c05c3c05811aaabe76e1ac3c8b361c563a99-a\nZ:Q1T7xSo0tTM4Ind0zoAkJv/VzfU9E=\nR:0486a8d52a385e265dca76c08d4cdd8f6af0bca92ec0562277824b4e32bdc7b8-d\nZ:Q1YPCmu0Tlw7IdZ7kvk0PHiJg81IU=\nR:0494b711d49e8624981650bffbd6220b2b80a4ade1e60d28ef76cf4a35373202-a\nZ:Q1/j+HVpMrjn9uYQj4ycUeVjyPCIY=\nR:04b4509d27fd9c93eb33d9e8d80ff91f4a3bd31a7c7e2b9a77367d5c2f33aca8-d\nZ:Q1wKkrqKx5eiDNa4xogVgVRjlaY/4=\nR:04b524fddf8d43845a74fb38bcb381881509c0c899f92bed5644e7d7fee427e0-d\nZ:Q19miKInR23WFHOAemQKlW3YkzxqM=\nR:04baf9ce4bfc70e44089bbc778961199c64d494d95de3b55eba51fdbbaa0d443-d\nZ:Q1A58/9q0W/TOmMwg2eHAt+cNRZEY=\nR:04c28932117db29d1b83477afac08cfac2008fa5c36cc4bc4b16544a14c8bcc4-d\nZ:Q11mPeRnm4ZU+QT9xCp4qkxxnDKfY=\nR:04c444d4f5b9553694c3f3194fa550bf82dacdff1c5e33b8529d9a10003b79f4-d\nZ:Q1+z0z50Ier3i9dLbtvn9FF7ZN8cA=\nR:04dea457d5294050288de4ff48c6c150f358d64d842494ffc4f9c81e8f5950fd-d\nZ:Q1ysIJnSIHfN1tqqkBl5EiAgUsThY=\nF:root/.cache/go-build/05\nR:05150dd84d8b719b773bcb23f68cfb161a83fb40345271e2e15937352f337114-d\nZ:Q1GXM0P7XxWbX+AAxFusXdq2B5Kto=\nR:051b9d2264cd56dcbd0ffc4e57a3e0d764b2ce52888aaf582ec2730a719b9ed2-d\nZ:Q16TFuN9B2iUycmvTQPGBsG8x1iw8=\nR:053682f2eea7c094c7d6d6c7bda054a41efe71302f8d669060364947d8fe8457-a\nZ:Q1L4dR4+5qWVj7xx/pod7J0fPFJxk=\nR:05599407e3ecb09ed7a2bec495379ea301d7eab135123c00823c4cd6606f02e5-d\nZ:Q1rXs50faWsX9Cej/v5WoQETsGqrU=\nR:055d52cbb63e08e80460966afd126328672a1206444a73ecc166f00d5646e87e-d\nZ:Q1CgwPkioZuO/3REAOpGBe8DGTHgY=\nR:056309dbb5d0e5d3e0233649806d62a4c0489e46f1c59b06d62a5ed2fd62efe0-d\nZ:Q11DOs3hECezFep+dX4OOKDzbjLM0=\nR:0564c3dbd11017af1cfea7cc9430f92691afd49de50bf53cb82ab50d7a27d2af-d\nZ:Q1FP/8yYcGsOVZsVjI0I9I3ZmGi2g=\nR:0572c040f160ae6854628c76fb6efebdca00dedc9a2fe407fae7bdfeeccaa4a6-d\nZ:Q1Nd0DhkP6Vt1EvT9/Roo53yu6i48=\nR:059004f622b0a20d5b9a353e2a91991cf34a3e73a7800de48025b65ea39ff5a9-d\nZ:Q1eUctCYQm9ix23gxK5i73FQ4Qek0=\nR:05a984e3d107f540ac7542604100517e7b5c41e138fc522abcd0847245c38caf-a\nZ:Q1vi61i7nNa83udnqJSETxbanrk7g=\nR:05ab8e0dc2df9a87bbc1f419495f7071e75632dd020ba27b7f17c0bd4b144201-a\nZ:Q1++3ZXB+gv7vs70+qIcU/3Qq5FDo=\nR:05c10af0323d7208a486b0306b446e20bfcab7af9e003c0d64142aa42c7821f1-d\nZ:Q1rubbL8pZCG0wBbu9SUDZ7BSAvpw=\nR:05c1408e1a68e74db62b9968d246ed7a59a15799f118749d6f007d1a01e03d46-a\nZ:Q1qH5bDVxp7Q7hmaKxnCSzvrqKTi8=\nR:05d67375d3f2304f389d6b45e0a0fa5456fbb7131e0d41be280219a94d5e0f44-d\nZ:Q1riC4fTYuXru55PVgkVwinMCF/H0=\nR:05f5e6492430b00f807e4629c6e4a53f3948fc9382f19898d1cc361b3b99ff9b-d\nZ:Q1ko5abS5Q7HuWGovcw4KDgZ1sxv4=\nF:root/.cache/go-build/06\nR:060dffafde3ce6baf2125369d5518403b6fb2e280a6e892ff1a99d7a58f77577-a\nZ:Q1BzrpGZIfdHlUFvlXxQX6Qp3Q/iA=\nR:06295d7d3523b918582a6402f61bf282a093fb22043b1e34549b9961d9a313c9-a\nZ:Q1OXlrpqQGRLXLRmfwtNi688hQYaM=\nR:0660a43515681f652b1cab3b3ed986c7655e89eb521f55aef6df150f3210e06f-a\nZ:Q15IGtRihVpAW8N4U6HL6k4JTsyV8=\nR:066a473abd196be57494fe4ffc565b7b521434a9d58fb69ea116113c50111e43-a\nZ:Q198xivpYa+ZpBJpE6KFshuk39+k4=\nR:068ac6c304a8102fcb140c7a3bbba06c0fc29caba90f9cde68a63c397c05628f-d\nZ:Q1afBGDpHhm9RdBM1sagr3NFvnkF4=\nR:068cd85fb0c36f210e05d1a12a57bf73cb2493e4f26fb378e11a515ee80ee973-a\nZ:Q1BjoORoIYZB+INTdrx1qTTv+2Wpg=\nR:06a45522df397b46b35bf32c99a6897f0e05a1628f940c5c48517ecab0a791ff-d\nZ:Q1V/zqqMeyaLIRUmBV6X2ZC75mQgM=\nR:06b509ba44db6dc87057e19fe0683d12a365ac1959ffbb6af768542983497653-d\nZ:Q1phm8xaYhRA7D58G+vCrctQpLvJ8=\nR:06b69d68422dc09ad74fe8c858ed0d2546409c23cace8ff6d4f36644e42e3a8e-a\nZ:Q1llr5m0XR2BxDOREvCSxnSSsp0v0=\nR:06c64ca6b03e416eb7b8b7d6b2a45ee9aa639a841ea6239b8a2e7e33d268a2bc-d\nZ:Q1gWC3dFqbgc+zFBm+m1juf8sEPGw=\nR:06c679936b3cfb05174c56b9bc1b4c08ab663330f421b3224d087f7012743d17-a\nZ:Q12zZlwaeWV8bcx/X/dWAqimp7Bh4=\nR:06e54168faa2748d13d54d1b7629e073288403a51882660985b7f7b930cfa089-d\nZ:Q1h3TZl8nV/hrEpPSKZcvJWWG5lSI=\nR:06eacbcffe550a6ccb473cae9c2bddd57903df9d3bc82f1f8a985693bdc66ce0-a\nZ:Q1FOZ6yNH28iCkhiXlP0jun7h5Njs=\nR:06f18aed5fab173d5a943a44a2090710f22967b75138e7a6d4bc2d6d56d1af9d-a\nZ:Q1zhOiiPTSaby0pUIP1BT9PDr02sM=\nF:root/.cache/go-build/07\nR:071ff35efe2dedccd8a85ebb1cf6605baf4464eebe0d0497305f1b7cba3f42ce-a\nZ:Q1BfPo3X7CjoEB1IgwJ/zPMqvRqJQ=\nR:073595021914bae020e4be5aafb6f64db7d1bab182ba821dae1247c7797e2e61-a\nZ:Q1KVtFNTlsbQCK6Xhe96TxXLqhB14=\nR:07369c815fe8c98940bdf12f72613f9d8316acd0442010ffe9e4e30250abd93f-d\nZ:Q1qeiGi2mAhRqnwH/o7xIV2ojjVbM=\nR:073e86dda8d02d636206fdc136bdfe861355d27c7a2d28b5d0d757034516c8fa-a\nZ:Q1FHg4+bbqRKwGCSF5v01eTBT2yGo=\nR:077c4c84129ee8b3bb95bdcaecd24bff550d8c7ecae971d146bf9590de7b41a9-d\nZ:Q1/sBZFGtPt3FAiyL7rBrhm9XaTfI=\nR:077d41e61283f1c550f53d12b6585f0866c49d853d6088b556b0ca0ed737c7a2-a\nZ:Q1l/++U4mH7BsP3QJy9AQDzzpbt6M=\nR:07924803284034cc9aead29ef30ff59dd3b39a3b021d37d642e6c3cbe82c3b6e-a\nZ:Q1wSoPCi4ETB9DLHzmPK6TfAOSK7k=\nR:079d9f18df0dc4eb2003c77c68fdf117876bd980d720a9042172b0a300c7f6a8-a\nZ:Q1t30Js72QH4k4ILGR3VPeqI29I3U=\nR:07be347e63aa73e8cd922d414d3d2b05dabfc46ec3e617392e3d3a584862eaeb-d\nZ:Q1TLM1vIp9CCfHRWdPmwKWHLmCtZM=\nR:07d3def403bcbda5521a42b55f32c9994fc548e2bb4c9d31ca97cc5cdeca9ee6-a\nZ:Q1qKfc1h7nNkwpl77yuAZ2MG368jA=\nR:07ee4f31ae6ff60f5f51958329fee96caa312fb09adc2f4f67638af6d7d3afaa-d\nZ:Q1N6LGmfR7JDtuLUcOuPBq3iMyxT4=\nR:07fdffdd44554cd7d857c2daaa35c54db6b6d05d58b782941bb2f7724d5affec-a\nZ:Q1q3h25hX3tAVpdAy2d2RRpYF/R9M=\nF:root/.cache/go-build/08\nR:080232ad2ea2c88d13167214f6fb2324ec0825e5d802abe5f850c36a63d57874-a\nZ:Q1A+jlpJV3Pe1DzuguNV0EMLxB3EM=\nR:080f28d813b66a71a9e67d3a83c64baecfdc7e19a1531fabd376f26493b7b5b0-a\nZ:Q1QxAA23cI7HX0XW1AaxI4Qirqyvg=\nR:080ffbab56c2b2bdf43d2ce3be597516fbf00ebd1c315b2f120fcc7051ae1203-a\nZ:Q1E13HgTuVlygZqW4Ek99mPo9jS4M=\nR:08136d30a890423498eb4798aaf204d144f78895f55c1c6dd10de0fe467eb1fa-d\nZ:Q1M+XJAxzZsvtDJroGu4aIIQa30JI=\nR:083e9d7ea48e80a1823411882c77151dd7403125e0761ec6043d64cb8db61707-a\nZ:Q1BUVgfaanDZu2w2MriUv8T0KtBCg=\nR:0843f810be64408d1857e7f581f3c4c7d80a8df5afc53e9e3bb6d5a4591b23d9-d\nZ:Q1deOylBG6+MWabFJpdwal6pWp8s8=\nR:08488fd9e874775d8a2af90e6903516a84e1a4685a715c8a79087cb7beaa4d58-d\nZ:Q1WvabOypuwa9VhoWjLYXfOBg5OMc=\nR:0858311eaf94d031f8e58be0a7bcc5e951702e542c8cd3cb32a26600d660476c-d\nZ:Q13Oe+2uPxOh3upOgJ8TLPd616+oA=\nR:086a94d77224e785a2d11067780c37a6145292d7a259d370461ead32db4d50b0-a\nZ:Q17Z8HrCUz+WywDRtQNZAp1/2hkCE=\nR:086bbc94245848516927cb61bfc4c2d4537687e815860711362b35911f29236a-a\nZ:Q1A2HCVGUdSWbkJdo5D7SaCB/BBqM=\nR:0878602deb5e3a6d17b3d9f7e74303618d38689753c4e1f07248110513b81b43-a\nZ:Q12sXmtDVV1jYoTfKlD/D8rJqDkwY=\nR:0881837772483585be1e9a6741d0b7cde2b1a11dc95b240b29fb213137fa829e-d\nZ:Q1km+TzlKokL6RBOEpLRXQhyEHQJg=\nR:08981fd4c9f35356a9bae8d97f41138e1418ce31dae76b0eaf80b9e3c21f5f89-d\nZ:Q1RLMfpy6tgHWWriFA0EcCobW1ay8=\nR:089bbc4a7d12a47b0e475e116c5c2ae6a261920846035179f8a72c25a4ca6653-a\nZ:Q1MuEQRg0E0HNEXlg6a0l5XE4dq7A=\nR:08a9cc1b9b0b3348b5698eef952561fd709b1bbfc789a6ca802da3c77ecdaced-a\nZ:Q1wVJMFeOPymHtGs6ANMnCNMtljbc=\nR:08b30b811c3f73359091264ec8a3c75a9e7e954110027aa2f4e2c57c66c36b72-d\nZ:Q1HK0Izx9BvKoDTi5giPowCu1gQLc=\nR:08b84c2e9b6c99e95c40b89a8a5dfeb646dfa9b4425a3248f1d886031d3743b8-a\nZ:Q1B1VhPZvm9OHHDzQ7TB+uvusKwTY=\nR:08dc2bf6cb1c6ec595030d59cd08974b87f073dda02a2dca7a5264b201012ce7-d\nZ:Q1lj/rLCyLBhUudeiDnrZvnneW9m4=\nR:08fc9c8a6fe55066e829467a1122108dd45c35d8bd02341544736a2d5dbc8103-d\nZ:Q1vzgmzu1FCxDALfkJgJTzuZTyGjE=\nF:root/.cache/go-build/09\nR:090924eb34b08ae9798abc41a5ef37be1ce216018580461566dc99fc2f9c0de1-a\nZ:Q18uANrfDRiQn7tpU3OoFhkuXTKGE=\nR:093747c89fa2dd419ee6fb4c7bf350527c7c476916568ba654b0c87cabd7f4dd-a\nZ:Q1d+NpSuqjL/7jjVlIbV+dWhZqUzQ=\nR:093b8e6133228af7df92c659af67530d7294f2afbe6cde583b3ceaf4a500b3e2-a\nZ:Q1lzdmOiOJofHhtgdABgRhZDVD7rk=\nR:09505f33911b21eac0f2cf7ab15af25bd397cb018a5a02c5e08710c7f833490d-a\nZ:Q1j1p16AU1FqxFdCuXBZRwgQ9Lwl4=\nR:097d24b987825cb8d002ca39116e6d2dbe0e6ab1f601f2b7e318d9e758692de5-a\nZ:Q1Z4RKu5UCAITBamtJxUFmTiW207c=\nR:09828e9161a68a31ede1ff128159de284e6c9ea29d56cce2fae472a97eaf214c-a\nZ:Q1arcvq7pvS/mloeKGObc5JbzhEW4=\nR:0999a0608c26fc4bc7d7dfc75a30369b7295075148f196dbc5b13cb12e211af3-a\nZ:Q1TL/tnJ79lKFvO+Mf6+bLp8ifA+M=\nR:09a6398a116d9a241a57f584a9af46f4f6a646b9eeb533b4ca524b6cbc8430bc-d\nZ:Q1Y+9uCHPZSRz0GnpPs7Ks6ZTMgCk=\nR:09b077214c44747f973723f7df56ce7e120902db2cd2803d5abd38b38cfea25a-a\nZ:Q1hcdEOB488aqblmx3ujf4nnibkoQ=\nR:09b39039bff8313be54f1950bda08c9fa9b37f2e20066ea1d57e7aa27385d3da-d\nZ:Q1gZBmb++P/1+yU6He3VOp+XbOqEs=\nR:09d5a88f85708c81bafef4b92d7633f13e0e18ca0f72034b9156a33222be822e-d\nZ:Q1I+EF+fIDtj3222nqoMjWtlpTWvc=\nR:09e241a0f05c2381bc87ff140f7e892d8eab215c7fa2bd641346447ac7583ba1-a\nZ:Q1PEZniyb42tWw/0uiw4o/JzA3efg=\nR:09f2db54002046add93112230daca2f8e7245363c0cc70e52b96d79421c5071a-a\nZ:Q1MKkLP3Uesnlgj6GlrLplcaJpf3Q=\nF:root/.cache/go-build/0a\nR:0a0b41917aa4e9d1639b0c5808c73f4a2cddcead91ef04d7914ae4de8c5ffde3-a\nZ:Q14rVENBnBOXDwRG4erDISntCCIPY=\nR:0a2695e3a6f8cbcd92a27ec27be57733c5174182deea244b83f75c966eae0a4e-d\nZ:Q1FAKL7gEubG3EvYrX5al6Lvdwb54=\nR:0a3b64d889e2ebcf4a09de4ecf497f52cb5691592934abe24097b00bae22e221-d\nZ:Q1dLLLt93+XVNIz63QGc+eW8u4xd4=\nR:0a552e889460b471ed11260aed11a1aa494fa5469cc7a11fdb3ae584370ad8d6-d\nZ:Q1hJtH+uSwW0Re3Yn/dXhbjU8JpO0=\nR:0a5b27222712ce7000cc3358c523c0a21d2e8000c4f59026ced320adb592a6d3-a\nZ:Q1pop7fKBQSdW3WuDqEMbOBrb8Phk=\nR:0a5d88c2e29b33fcbe5b3fcdcebf1bf68bf538206d8c2dbb4e410ab6c4f96542-d\nZ:Q1QiZev8Yo7tuItNOUwbInuAVVMow=\nR:0a752420f3cf64db333281255d2764656817a3e96bd9aee8154cc3370a81e455-d\nZ:Q1maAJEf7vi9YNlXm+DuGNUtUO+lo=\nR:0a8f2fbe964c718fcb5c35608256e4b938181f1a28840762cc320f812bd17d6b-a\nZ:Q1XZV9rIJ46SD6mgFdRaAnbQLwl0E=\nR:0a915a582bace2d18c374861d81d7b0aaee094fc6804682aafc2a65fbf483382-a\nZ:Q13Bc5SyR2i/gzjEbnQCxmvIJWJmQ=\nR:0a944748058148475dce288797effc91f7bf0d0cc761e050e6b9a4fb2fc304cf-a\nZ:Q1PFYjyjJ5ekm5+h+R1FxzaP6X4s4=\nR:0a980068b44fdfd9f94c70f572f506be3db578ed25ce150dc90baa09cc86a8b2-a\nZ:Q1FwUNSgz30FLVXgRD9hM4AXQTVZ0=\nR:0aa9ea82c2278675c4a86c577eaef976affa9c6997735f69ed49b5e1b1baa079-a\nZ:Q1/OjfFBX9NNAhZTbOD0crMWwE86U=\nR:0abf1448c84342d3262082353dea5f49ef5d0e6e92a013aa936e8f9931708c00-d\nZ:Q1lqg0tAlrze++/PYrQC1Q0emiItk=\nR:0ac01b31d66015ddd9643ccb236af2072399eb8287820dfd95ae42656e2011da-a\nZ:Q1FxgyWE7DqrSCEMUiMerFOPwcubI=\nR:0ad3b3620589408a00651c64be6aa0324df97e9c7c04286fed5df02644aa3a39-d\nZ:Q1tPzJf79TVxFDAVMifuBgChbkDnc=\nR:0af01f6a8802def01f264670bef49781c09d5959eaaf5c93136d6b2809d084fa-d\nZ:Q11azo2By1o3oFs8J7MmswA460/FI=\nF:root/.cache/go-build/0b\nR:0b050fde891d494034ed8f0e1eed40431fc4f31a41fa86c71370b17255dbf677-d\nZ:Q19N3KiktOLY1m0L3hDsYb9G7369w=\nR:0b07dba124a6e89e85088a8445e867e56994043c189cbd4b601764e4f0ecc402-d\nZ:Q1DzM6C/x1WOpwwEaRZUNRq6e0oGw=\nR:0b2d5ae5f40fa8d24eb7bd35fc8d566133569caa9898d880d13f9bb96987e9f0-d\nZ:Q1ViTHPar++S87CosBHTFh5gSR9eQ=\nR:0b327c35cf82a1b9de2ca203f1f30b1a7f65a65919d0ffd5f5fdbec97534df7e-d\nZ:Q17O1ltIqT001K29pmejwjlueebcI=\nR:0b3aff19bf672b00ee4bcd900e875d442b2f062a7e88b47febc7cc41a8c4af31-d\nZ:Q11/atHIsjSEsW+njkPsY9YuOPnkg=\nR:0b57c77ea25a788f7bafbec33dd5568dbd7a88fdb27e81acc11f0de39f0d35a9-a\nZ:Q137c59veAhfaY6DrI4/uqP3wiJMg=\nR:0b6aad9f2148d91925d0c19a53aa22d9a62a78c9cf181671b482b68fefaf5bba-a\nZ:Q1bsrTrjevARn/s51HAMbOKso+RaU=\nR:0b86134121fa878898aee99825300c81c2c9665ac3087e58bdb13fa1d5060183-d\nZ:Q1mk5MiR8tGgpH+I4JBpv0+nB6fmc=\nR:0bc280fe1d86c8dfa1074fce375385cf6e1c94ee39bebaa5592ac0c7b79c0308-a\nZ:Q1vj2uHcopAQP2rxJvWbXWWPJPhZs=\nR:0bda77c00b4ea04fd14ea02d7c00ea24179c4f1633c53f3760ac97e323e8683d-a\nZ:Q1Kz3eYsmzeE7HfwBIeNRkoKGlmfA=\nR:0be9d0011dc9138b8433756697fc60063965af05f23ef170528c824c2fea7dff-a\nZ:Q1mgPAz/smzmx++3WnPGRtLItYTqA=\nF:root/.cache/go-build/0c\nR:0c0d2406829b5192ef4513ac501de781ccf483eb95fb76bfc7b5674a7c1170eb-d\nZ:Q1d13yY4MkxhYGkSEqY0vIp9IBC68=\nR:0c1df1292cb63a54fe1e334977a454d16fd2ed00b34cef6d4283186a31039919-a\nZ:Q1T3Zqtxt61wl1aOjkW7GreGNoxMs=\nR:0c273b0c04621acdc8f2daca3f652048f5d4b86ea4ba6ee8ce9e27033f797fce-a\nZ:Q18gYNJNQXwi+oVEVQAMBtMAdvkd0=\nR:0c5175960f79cd32dcb82fa56852163471d533968848f8a32cccbc6177c5569d-a\nZ:Q1iNqrTGli18SAZq+OG+8G6t1Wb+E=\nR:0c5c98997010ce3ae39aaaf9619d856c0cfa15692b3297e78cba5bf025189451-a\nZ:Q13mKzk4G9wHkeJdtsO+oGSeoEdqY=\nR:0c62aa1b6e264bbc1029e03042b00b5d4da09b9e0cd960d3615905663ace4644-a\nZ:Q10ZEMcSh3yNRjHpMlQvkhJF4+L3g=\nR:0c7782cc447aa9be8b6394c27aae2f5d921ccaf0f5d14287d2c1bfbc632448cf-d\nZ:Q1D85r7he1vxncrEfdj2zRgRV+2bw=\nR:0c9bbcf8c93f3a0a85155c4530d797572daa5335c9f77da506e0b1a23c27d313-a\nZ:Q1KfEyEHVs5rK9j7OOU8hZjSpWJYk=\nR:0ccc9aaaf59735ff9ef61aacbd40a580969faf3f99fc157827d0c2c69a9251f0-d\nZ:Q1MZljwcdcoy45zhTZqXUTYBjF0bc=\nR:0ce3acb1e2f636109c9b46214793465fd1242f1c6e268c3c77619e370406b826-a\nZ:Q1wK2b2YixlksQRP22MoZIkGn7k0Y=\nF:root/.cache/go-build/0d\nR:0d3df9e9b066650791518dc613a1b850edcedf734595dd4c9c4f190575168b17-d\nZ:Q1EfQ6TXx4LzI4aB2rk5Qn4Ur2Zaw=\nR:0d5d72cc3ff1fa96e7d8a531a48a7812920f36c7f59bc166e5c22d45acbb685b-d\nZ:Q1EvSHmFbl645VAcKMfoWwjslIk2I=\nR:0d6aec5d086e1e9ac2ecc82fbad2ab5feb6bfe46bc74c698e2ce477f89cf9635-a\nZ:Q1j4eZWBJpp/A5w1zP9istIP92EyM=\nR:0d71a657e38cf6f11fdd3bb7b9228e6875e14d4f985cc5646f3294bf943219ff-d\nZ:Q1YATtz6T2/QFNZ0EQrjqVb32uExw=\nR:0d783d54e60f0aae51803b71190c64acb2ee2f7fa70b2b3091a17202dfc387d5-a\nZ:Q1MFcGfFNaE0WboSB9LJSjvdByEdE=\nR:0d793eb2ae406ffcb4af05759b4e045629351fc725d9c0607b67a65e30d83ac9-a\nZ:Q1judzS5LQxUr42otoK6Ap4dWU98w=\nR:0d7a0c1709ed93e6eb9fe2f55d1090519d3dfc51c25140b985eb27e26ab182ac-d\nZ:Q1W/G14D4IRdbZvsQrK5Y8kHOLsgU=\nR:0d90bfc24b5162e13fb8b5a07e0902abc5a8e4900b40d7ad0a71b070f7427c4f-a\nZ:Q1TacpF9cJz9E2qfWJID4mmvVhx8I=\nR:0d98f06607a472fce1ff296a94c623fb1a8df2b2767c4ed753afa97a1a4371e1-a\nZ:Q1WQ0ALHPm9SrqXk+ZC1nV8tMgmb4=\nR:0dbb3261032b5d76e0ffc170cd46737a9e214d29267706bcdac619ff241c2931-a\nZ:Q1oVotKlcViVtsuCKLwrSJPdB02fE=\nR:0dcad7a320289fce88764a5a081a3f18ee4f32304cfa90a0a8915915fdf4fb94-a\nZ:Q1XUfLbX2XUjrjGNjk67/gIMfZZBs=\nR:0dd349ff7c23f4bba6a0f230de12653abb236ce06a007ef90c2d53305aac65d4-a\nZ:Q10xbJUqm27CsrXLH65r8b2G6BnKQ=\nR:0ddf61aa75fa793501198fd04562677264b29e9aa40773dfe35aa07b67204c81-a\nZ:Q145rfP0sC7K1wiE/OE7J1rSCHhYI=\nR:0de2197b3434fede75694742a8ce6957f81c6f324f9d43097cd83bac6b3da422-a\nZ:Q1QA60SbEOh9PGkpPiGbuUanMki/M=\nR:0dfecab60379f90f4fce3603c32541dbf670b086ddbe28432c394348f0d13463-d\nZ:Q1BYmBsqgHX3+WfdLOTVthgz6ntAs=\nF:root/.cache/go-build/0e\nR:0e28d2cd280a7a509bef5a19b54dd4f2aee3802f843fe46f8d8e52f9deaf7051-a\nZ:Q1ATQTPBop+r8Fmhx7jwgqQ5/nVto=\nR:0e36942aa175b10d4aaffee18991b67c7b18176d34d54f89c86b623c4fe0f1f3-a\nZ:Q197NwKYkdzAgYzvNrG6YrEsrZYPc=\nR:0e37080e3159192d83d6263375cdc78285e731fb8150b0a9c57f1b7ed933424b-a\nZ:Q1JOylx+XycuRzFkv1w3dSaignfxM=\nR:0e3b07c8d9827e1ba5b6dd8a21c3dceb9f0e0d3a3c3fef29528d13e93661bf6b-a\nZ:Q1Tqneyl9JlCwxqJ3z3YL79xMT+7A=\nR:0e3b294964343b9723b2dddcd4c91eaa015b01601e44b05f65902bcfd3cbf623-d\nZ:Q1Wv77gJuaW1fK7H5X2hMJZBkVcgw=\nR:0e44f320d4793e1bc7e7473c8b6923edf8d39edcedae243c3a79f705ce142ba3-a\nZ:Q1/d7hHOR01RE0+ZcQYgusbJeKBTk=\nR:0e469285411dbfec79fa6ca0fa584f2fb38172059503ca39a61b0dfe3ad90ee4-a\nZ:Q1AwdQZPyMS6CZUm54LhOjbmdqNQ4=\nR:0e61c5bc30a37872ed8146bcd6a3b0ac6e6d22b7fa1ae59cef8030a6474d4dea-a\nZ:Q1hS0rDwpM/qvHFRr7JQIGTqA9Flo=\nR:0e72444c30308740c86139378133c5cd6529aeca7ea130ac1a633229588f3c48-a\nZ:Q1QxemDxqEK62WzQy0c0bN/Tg67H4=\nR:0e7563ee417fcdfc8598a4301e42d0f9754b40988d17bf3771b42d6c10ae2876-a\nZ:Q1IflBOm2SQrZcd7W7v1tJOFRbtm8=\nR:0e83595b66938b3726be8d2560e8b2dd8acd9c088d9cfcb061bc6a6c5cf57ff9-d\nZ:Q1rzZy6O/oYkYzSCtW+y4brRoVo9E=\nR:0e88a3ca369187c61801db5c1c32213f3691bf953b6d0ce00b6ce439a2093e31-d\nZ:Q17VvzDIyF9FEEhI8duprSrA6RVRw=\nR:0eb8dd8eb1e93fa8bb711d49be0baeee7d28d9a250621cadb5e68425996a71a9-d\nZ:Q1bHCZorQ3bSMNLd5qakJ1r5ilevs=\nR:0ee244378e1a6b579bcf05722a3abd1569535983be4f9784c8f42a58099cec89-a\nZ:Q1GDon24/g/Pav2NTLnFfcgr9ngJQ=\nR:0ef8dcc1c1adf620d38312de9646f341b538f7539e06d6fc1a9f9990709ba7e8-a\nZ:Q1kC3QuKOavS/q/vQmi/LjT8GDeTc=\nF:root/.cache/go-build/0f\nR:0f163d25d6b6c2cf749fcc318be57b6c48f55414f7f08c299b68f996b2ab35b2-d\nZ:Q1eS5eXv+s2FfzlfURp1JO1HyrWhY=\nR:0f21f84e150db7f1409cd174f36b2e3d621e992852a67ce6173d828f59759872-d\nZ:Q1n/NFmXVOmapvuv6DLimNxmReYQY=\nR:0f22a31e3b5d909dad56022c76ee967e9c421ca1d5d6453675200c49993d71f3-a\nZ:Q1FGwjDb2x/fED99WtQgxnrUNHrC8=\nR:0f2528bd7ff6153df1e9381c50a67cc64cc7549b4513839dcab988c61cfef56a-a\nZ:Q1730xNhpKlYvCRIucV8JtYkhwog0=\nR:0f28bf56b735324201773c913369de47daea343d156044aff944d2ac5767963e-a\nZ:Q1fM3KOiwzVc+YGnZ0eLnV2aSO4MY=\nR:0f38a81db9f8122dfff29e6dd920f77d77a1640937de8e9dde03cef08bd303e9-d\nZ:Q1WwK7M25llfPX5dJbGGCMzJAyxMA=\nR:0f39e494944221841bfebf8186c9de6c610b49d4e3d5f5f6bcd90a3d4137d478-a\nZ:Q1wN7xJYU0enl1b5mkxwJh8On8Qe0=\nR:0f4de03972d7fcef6314eee2d4f89edf981f94b4f2b4276246f6d56ba4cd2026-a\nZ:Q1Oe4+u16UnE3O7QQz9dGri3dLgPk=\nR:0f50f619c9b455a3d14e59ffd8b8c8d6d3055c2cdb033a2bff610ec5511265d6-a\nZ:Q1DHrV5p6yEqn2LwopLFgSCph359g=\nR:0f5192c369b1cf8b08c20e9fdbfab2ea11d7c89bfcac604240df9ab918a283dd-d\nZ:Q1qrHWKdiXa9jaE9c4ilkyDDOCrgQ=\nR:0f57dbda1867ab405271f7a2b18db01bffe943f8f007122f0f9f13f5e7615bb6-d\nZ:Q1GYBma/0JLYCn++ZKRJQ45kOVntE=\nR:0f5bb2b19bd61b18dd41c32cfad4cbbb7ca3991977c5108d288795d1a605025a-d\nZ:Q18/VdETRFqC/FB+y+M7TMKHRp/RQ=\nR:0f62adc63b760027a568f3f8f2d3231342a85c212aac69b811dc2dfe13b3098f-d\nZ:Q1eQhBS4qegrMrVWzihzPG75ZHgBw=\nR:0f637297d08110af882b7e5cc9643be7ec521f60a6e286607d08a2c62449f88f-d\nZ:Q1rZKSwI10CFISMblVdTgMpHoJUzk=\nR:0f64bb7c1e25bff509c4fb14402f5f60cead70150572b8d5840274aa1dca369d-a\nZ:Q1gu3UyZ5XHO28beRiqRKIXzoPDes=\nR:0f847986fd2786ee1cbaf31853b4286a4b88c41f2370d13529dc32d32b0a619a-a\nZ:Q1EOdEEaBzfXApon6nLApxFxmGr9A=\nR:0f8ed649c17a93b56a755b95b053c210c093b9227032258d8f1eb7e0fe366215-a\nZ:Q1zPYSmm0SHqLQkdoRrRZsCmZSVcs=\nR:0f933e01488e772ff623901a3813eaa4611b815e596cd5ab3a02babb0bf464dd-a\nZ:Q1b1EDjbipLTuHt1RAbStaV4oGK10=\nR:0f990bfefdc3dcdd16719eb8b9558de18b3b1025951d75ed3840a7a076d5210c-d\nZ:Q1wsl5Nmmtbmqc0aNRcRrzcI+3F7U=\nR:0fd1ece03228a998639f4eeaf835ddac184f091831038e53ce2cbf8f73567dd6-a\nZ:Q1BCgBZKKBlgN2EfI1XwJq4I+rg24=\nR:0feb6c1b3f739dd578cd663e9849a0fb8a198931d642ccf7d88e05303b926516-a\nZ:Q17VmesO5dBXBC+XkJqSNdNdZfGro=\nR:0ff56e47c62c1a366473a0974eaa7382786f0a3c7027a65a41504df4ab04b911-a\nZ:Q1Y68Q8fJ3Zn90QvNzqrhI5zLyAb8=\nR:0ff62c3e5641df2b8efd65ea5be4294e5a7877282bed173a4895d9626765f3cc-d\nZ:Q1sRMTCd4wOta/DPhAmn3wnMlde5E=\nF:root/.cache/go-build/10\nR:1000d3368e211c19bcb9d5b052423b7c5d0a39f2c5615a0138f9f536c270dba5-a\nZ:Q1dXI5PZ2wbXFtcnpaOLOJxXir5+8=\nR:1001fa24c9afe96896e517ed50521002c24b523a909792138cfb99349876fc02-d\nZ:Q1uZLIZGW4kOidd9CLv7YnkT48eCg=\nR:102e54be40929138ce51ea033f0a2ccf82541f9dd6e1e1dd0d7fc8f422771610-a\nZ:Q1Ru4vMYw4ZUDnh/JLgJIlcZjITL8=\nR:1038f37963b5be44f18b0fb7e76c387f53e5436f32daaa12aa2da30a221db846-d\nZ:Q1SNZmBxBYTguttyYt8k3vqnjuj/I=\nR:1045cee552b3ce19d30300479fc96aa7ed145058d51784d9e904b839f25d4023-d\nZ:Q16M97eaIi00vlMTyjfN6+1z7RIz0=\nR:1046cfd3f9bb2b3e9820c05db36f98f6ec796f985ac551481bf9edef90ce1d43-a\nZ:Q1djyEzT9W6vb7+GxVdvSDQmJN5hw=\nR:106270a6c9a6f1640f80c6a3710267d1ad4d3930776ebca3f84f7ae1cc6cb1d5-a\nZ:Q1buJ+rKcbWCtodn7tGKeGLKa25LI=\nR:1093a873b9f6490a990b179bd27b38697a9d83140005b1f7bf40d2f2b48c4a86-d\nZ:Q1ze8EO5gvvjp+XXEUqrsD1XUV32g=\nR:1095e6ed68f8ce6ed4cf67737752642bb48886ac6085500126a1ca8f22a323f6-d\nZ:Q1HWjZTAlInFSQdL60UlYHDLj4PuE=\nR:109dca150bf52528e7a0ec4cbecbcc56836d53c76b933178b3b022933b0e3fdc-a\nZ:Q1LEee+NNiJAec1GfCUe4zPa/9tkU=\nR:10c41976c525341fa3b15b4d2c6fc4cec93ee448df86c5b93b7f5a12a9cc0a17-d\nZ:Q14ENiLT31St73L7wU15eTYwFryRs=\nR:10e1ab6d8dd6a9dc5c0abfbe2448b4f0fd04fc7ec79d03aad998db82c6426e79-d\nZ:Q1gkgqDlqWZErM6dxm3jNLltmXaJM=\nR:10ee989b8e511b3a556b968914cb61406e18c9b678d834177d144e8476c7267d-a\nZ:Q12oqlwZuOOUjMLSwyizKgcYzjQ1Q=\nF:root/.cache/go-build/11\nR:111fed0d78cf4dfb5380ed932f78ebc9a805a710f5dc8858e860e8d26234d4e1-d\nZ:Q1YUL5olR+/qiemYTvcgR+NItyQDU=\nR:112998345fb80149ffb0d701e7ad4a8b5e91fcfa71246c8d3d602536f254d6ed-a\nZ:Q1lAR3u8KG+uITtscblmYf/d40rdU=\nR:1134728bbc15cfcd9eaa7cf5f142e14ac586549e7c80a5520fcd321a71c6e3f2-d\nZ:Q1+P3wDq3xWTH/mNFHEL5cLR8umr4=\nR:11828ea61b2bee7689edd169e52a06f3d067721d7c91267f282f2ae778123c78-a\nZ:Q10gyanjhAB71egWr4owOg9KKFhSw=\nR:1193cff0702ddfd8c0e3d2ddf859585e7cbbe93389519ee2b97e41c944805369-d\nZ:Q1sMD5GjLxnSEqFzXkrfEiNuc5LhQ=\nR:119ae4de6ba361b9db385a3b513eeee45ad2eb13dd1f37adbc4b507567c67751-d\nZ:Q1uXcLdSNSCM3fJ5gXvXqoR41cEQU=\nR:11d69a58f34e53ff142f3b9da721dcd9c8e22efca8823755163da702cbe565e5-a\nZ:Q1sMXUlWqXs07NDTDmmasX8OWx5Kg=\nR:11e5ac50e95523f0690cac13f47ccac0a967d01edd9f4a5810ec626a68e1518f-a\nZ:Q1iYx7/sES3Gnm1MYaKLoAMAKmWFE=\nF:root/.cache/go-build/12\nR:12080f152766aa241c1e73d4d42adb9bf18f2c404672700129ff81253e37f30c-a\nZ:Q1j8YfEW9E68mdx29hBhVnaZmHQkI=\nR:1209ec0651acd8a38a2feb85c35c5c20794650e218a74b2cee20bc42c9398b5a-a\nZ:Q1/nLSHUWBVs1SPsI6FJUwZH3Dvk8=\nR:121a9680be1797eea76368a21a31fd0f2960711ff1fe2a52d69e63ea68a7dfaa-a\nZ:Q1GEXU3t/tQl6EX/8Z2Qd8AULkuHk=\nR:122528417179f186ba3f9ab53c7c6facb43b92c45a370d04cd4781c208ed1de2-a\nZ:Q1rQakaQnV2NWs4MFVW+8OxquwMEs=\nR:12327b160a46fb0170ebe305b11d3de5202bce902215b9a356c7108e7afb3d6a-d\nZ:Q1cj3O7WNC3q1bRxWC7NC+Z3Klqoo=\nR:123c10127c15b35726b565b10f41d1e0a0415f7a8c8ea204c036f371e1f8ec83-d\nZ:Q1IM/ixiBq0YBxn4KjnvKrJYq+aBA=\nR:125a62a6049746a19d77b854bcfa7393a46742fd65e45b7f6c87d3f0f51727c0-d\nZ:Q1Ai6cJgP2y4+S9eOXwnWa+U/Yl3I=\nR:125be04fee2d57bba45aabf980ee1e9cfd992434b1c7b82f62b552f42cc32ee0-a\nZ:Q14uZg3kC1p6BS7bh3Adx3xn8Xyf8=\nR:12804658a8648fb8b10bce556b82aaeb5545efa8dc3b0bd813adb0b5062eed71-a\nZ:Q1Zzzcf6zRNkkWiS+hsPohsy9zSn8=\nR:129137538ce789836b64ee2ef262ec215684b96ec6694ed15b89250a43958865-a\nZ:Q1WUa/S256RQCDWiSTJ6e8pnC8d6k=\nR:129fb158928c8e1e0393d0b4c475cb521a8597b8c6023c8deb3b1ac68f211f0d-a\nZ:Q1pNYS7HBT5Op/x1lImu0rPVtCcf4=\nR:12c1465011ccf5642ccc914de49600e4915331b5ec8ca75dddff3de4f7389cf1-d\nZ:Q1qD5GQuLOj83JNIfSf0g+JAQYaA8=\nR:12ce2e97dd5a9b7a4101d8d02e4575d38f0f74ef128b2a2428fe94012fcbd404-a\nZ:Q1Be6TITpfFPF8xk/MaHoBJUUYb4A=\nR:12f10b1ce9ad1da4054dd162f73e935e105bb2d19720f829e8339049027ab460-a\nZ:Q16z3AIniYqN/NeYMcw+n9lJnLRr4=\nR:12f1358fb6883fc239e2c1ef10539433fb1cc0287cb0ada5cda16b37a1700597-d\nZ:Q1/2aJBSyAQNk434I2ElDTcJQqYwE=\nR:12fc0028eac470a3937261570d50af43a5f15f928311fc078f159186d1f95bf0-d\nZ:Q1EEE1aqUNxlWpyCP10kDpPHzROeQ=\nF:root/.cache/go-build/13\nR:13091852e68fe8a0179b730dd85b5a22fb5bf060026094b234bcb0013a0ec277-a\nZ:Q1ovIMfHlTKjEEViHSF3yj3cDf26o=\nR:1312b8d04095adf094f459a2fc2acc695f616128f721100aaa5b51d83e061a04-d\nZ:Q11GZzD3MxnMnegCQe1AqQnW4Do6M=\nR:1313f1b711f869a304d8406b1b8e808a89cfe154b0ba56c2ee5504e3889c913d-a\nZ:Q17NmKA7DaeYhc/tKc1sCl1sz+wAY=\nR:131e1e7d0ca57cc3616e54807b134aac4bd6aa37d330065391925a668df0ad8b-a\nZ:Q17hQRxElhiZkEJUGegP8U5wAKiKY=\nR:131e41a298a62702183a346ccf26a4d9c36fac9486c9dde7be3f47fe004d87e4-a\nZ:Q1icftgvIVlE6TnZPBvSsmur18nto=\nR:133380aee93d7626835249b9d24e0137875d9a943390438e22f77c9c646261c5-a\nZ:Q1Imks38BANTsK3vI4cPg9rlHlP44=\nR:1352b4507ed4fc25effa26e80d8eb568b6c24835811186364a50f591a8ba6641-d\nZ:Q1xb7pg/I7f4TmtEVsMeAuL5qgnT8=\nR:1362010d4e227cb7be8c0793f1b343aefb2b899f75ace475c498e9cb00ec9a03-d\nZ:Q1tRAvL9Wy9L7j02uSLI0DG8AZJrY=\nR:1387d353d16741d2c53b1d368174d8ee8234257a8f35a930b265f08c2da2f709-a\nZ:Q1g/wjKGGn6kauCu40ileQDUYerC8=\nR:13aafe0a7ce53f36d18094e75db666accbe529c10f50ad2d8e1ae61bf09ece2e-a\nZ:Q1n16MlrPWawqb4NWfw0oUfo7klfo=\nR:13ab4cd68d007645c9b5795704a27f4411695e29b116d5ad5f1e2569b461e03f-a\nZ:Q1NBz93A7K8iTsZfc9n8F6qvbdJt4=\nR:13b6cdc5dabbcaf0e10e5cfd99d6628dd7c175eb01cd081b0e01e94cbec46fd5-d\nZ:Q1IuujWy9teRS2jl9T0oq9Kc0FsyE=\nR:13d6e1074d403f270e378c3ac781a83de84dd391ac98117fa5260e35a8b04449-a\nZ:Q1ZIMKstjHMtNbP7Fz+BWtvn8tajg=\nR:13ee4276681e207eff585d6ff9aa34b2e46b6e7e9b74018aecd2c2828125b280-d\nZ:Q1XbDF1vazDE1q6L9s8WAllkZYqRE=\nR:13f190dca7d0e7df655630461a8fd902feed1f85498ceb4e763b5a59cccedb2f-d\nZ:Q1Bj/MnrL0BxZmLRk32CtjD+R5/mo=\nR:13fe0948ed2290e7973eecccca0f0e691831e3b1bea2044d1b663b5a7f99e59d-a\nZ:Q1RsYohhEwBX1VNcUDtZymhF2rvNw=\nF:root/.cache/go-build/14\nR:14095c34dec297f677499fc173812f01b053a494b2769c8e437fc22ffb5a81d5-d\nZ:Q1xbNudqcwQuZC1SratAYNKq6fm08=\nR:14159030818ff8aae081ca25c893a6965e1c6eb2cc58f6368364034ef886b2d8-d\nZ:Q1mA4WkYkB36IbYq78yq1n1D461Z4=\nR:142965f298cfe5806687bdbc8d822a272762cda0580b1dcb38828c26f40ec36c-a\nZ:Q1M8G8eqo+dWJWRLqwetpV8ETZUx4=\nR:143133e1faece30a29bb21a73bbaf6888aa3bcc487eb5d2f77d1cdf0f947abf8-d\nZ:Q1DZ7BiO+Gqrht554kZkdXsT9ARPQ=\nR:1441228f00ae89d7a91c80c5ae5d33331216eb493f0d679a6a5b13818cc0f570-d\nZ:Q1tSIq6MEwVeuxuiwSfxwRBO5veOY=\nR:1442c6080d98f27e0f18484c96c82f1251db5f9d9b3b74b3ae67c0713d6910d7-a\nZ:Q19blskjgK9HOBotjg4jECdnigBsU=\nR:14434a90b2d4857c6284b7ccc29c88fae04b30f70fbdc3ad5fc2bf3a432e693a-a\nZ:Q1yYTtXrYxj96QNcz9kOL1c2WNn+c=\nR:1448d0d55bec40ab3d902bc6b67e96ba13d754bba3918ea8d16e83601a41ba13-a\nZ:Q1y/CUyw4ZM0u/ePrzgEvivCWNtyw=\nR:14567dc191ec47f19f34ababd69e1f14b798c62fd463b5860d0204c6e7cd34c6-a\nZ:Q1JJRkR4AWlL6UQYmE5lDkJyxfn+M=\nR:146220944066733a301415e1ed1f653eadddd7d1e48dffcdb44e422a610ca80d-d\nZ:Q1NC2Y7s9ZxFgFPNQZdTc4AUYITFU=\nR:1498d55c58b9d28dbbf757895b5cc90ad84b09ed04ed7e081a23eb8446482e85-a\nZ:Q1DyPxtsCUJ0OXcXEORO6/g6bUV88=\nR:149f921c9aca0c34c162ea1a99379c9cb2b4c4e3d590c622e6400e6b4fb24979-a\nZ:Q1rLFQ/cof0nKEebW3lGsw5JdUGt0=\nR:14a2ff32dac6b1e0bc53b6c24962276b60a69044b2b37714743046dd09768964-a\nZ:Q1hD9FwNOI17pUrxJuHOtmzna8HYQ=\nR:14b9efb35e2d8e3a38e94eb5d7760aba58598e7a0923181dcd533ffa45f65876-a\nZ:Q1pe/M7GZ8plO2kaGmzbdCkt25Pqo=\nR:14d7d3f781f78035d5ff8a16299f71aba081f1598fae32e31b8157b969a927fe-d\nZ:Q1b7UuvV+6sGxVeZ0wpKYlI5et7mA=\nR:14d8aeebb047d730bc4ead903db4a9e7b2ce586a1638711f84f67ac86c3703f6-a\nZ:Q1igUBRxSwm+M3UWsNySylGJv7O2E=\nR:14e4842953e8b2a13a1df582cf19bf3eadcdffac1df333912f06d50e5b0bdf4e-a\nZ:Q1MGfpneHZUirHAIXtX4lxi3YJunU=\nF:root/.cache/go-build/15\nR:1510e363be076c135f331871c33834e6f761fa44458b8ef7f19a5a9552de7b73-d\nZ:Q1OwQRY+sZSSr1f9E4zuge6sRYOy0=\nR:1515f09667d053cf83bdf93f2c9809371cc2fe21cb733103dcd7cd1a1d97a210-d\nZ:Q1w48eBjF0nc+ZCXETiYo/yuHHRek=\nR:1520b608c365a1e4092184201fcc132121396dcd272a5f9919247295f5da9a30-d\nZ:Q1EzG6ETSyzomnGuSCYCCidCmwloY=\nR:1522b21a974e2b9004b784d2055c89a60e204365a5c9b377676fb849afa7193e-a\nZ:Q1VWZMMqE9ASxmBdB91wbWb152LSI=\nR:153a4127819241555abb5070c79f112952cab14ca5af3f0f0b85778136bed244-a\nZ:Q1vnGHF7oGvL5AK0Yjol8cXUPsaCA=\nR:153fe25041c47c6945d278e27d1a8a8153232cf7498f5089d6da71a9e3cc0602-d\nZ:Q1Ci5IvaTj6MChk1DOgkVYywqOcKc=\nR:155a50e12953f5e4336c63cc6b4d86b69f26ae07370583a4301f680f6821cd65-a\nZ:Q1Hrm9uoVXEnErS4pOTrdEZ6xj3xc=\nR:156f0494cc15ea07a858488e7418d9af8cfee0f72fa4bb2ca83205197e4e0314-d\nZ:Q1FEhPxlzy26P69KlnDQlnSiw2fBY=\nR:1571249c382087cddb8189e787560408147dc6c2fca149a292a5508c27dc3755-d\nZ:Q1mlHk0xtvpmPscKvugaRjIg9bATM=\nR:1573eb299ccf4fcfeb5c2bbeb2b3e5cf913c231576d2bc94d3b6b2232426d2e9-a\nZ:Q1UiU4v+Y5e2mN3STJ/+7Mt4WqqTQ=\nR:15814fdaa10d10bc1c0b956b265e9770779cd7b375c21001a0c4ae3d4738a036-a\nZ:Q1rJu6LR0fPpzBg7GmfDl1y9pyh/A=\nR:1584dc5dd3f54fa6c9b73afaec5f0efe8a76fb29c6bb37eb588719365bc16b4f-d\nZ:Q17nvTn9IgdL6i+6Eth7ao2TWtMBU=\nR:15862527eee2423042195708505b4af9933dc36d7834a3f0ad34fef44f5afa80-a\nZ:Q1ceLUp6NsQSwwbOPTyX61NXc1wAU=\nR:1586531577314f96be5727c44e14d4746a5e4ba6885780accfc7d663f65731ec-a\nZ:Q1JXOSr7VSYXvCjNYiX1DQJBkpi/A=\nR:15a0c371bbf77a45361fa4e2f0c1fae6f7f359b0248124fc7b58360b2c7f042f-a\nZ:Q1XPvQ6OYUfV4zF57J5mtuQ99SxNQ=\nR:15a8385ca8b3d66b5b9c0a153202556ef0b4b4088cff927274c7a5762d72e6e4-d\nZ:Q1hogmr/IX2b1ddmOxOTAtuETuCYo=\nR:15ed3afe606ac15e37829c0a2e3434afbd558c824f0009c25da877ee3f0f5834-a\nZ:Q1zDpgrxvcQHK92S114DUQxj8KfZ8=\nR:15f5d66cee78d67dc4e72a3e16d60737da63dd8af89b57699aaae024295d12d0-d\nZ:Q1y41miqdj7brN4Kzgp1v2wSjNOB4=\nF:root/.cache/go-build/16\nR:1619ad23b157e90eb2a35d02d332e55d11b6273c3679dfa65d83e84125068a62-a\nZ:Q1fodBtxFGJ+J0yb9fEowVCkzhEZM=\nR:1638b908e528ae337a7831db1ddc2d438df4c35615db7117054203f65b936dc9-d\nZ:Q13GZg6y5E1JaB/bpK1dH8c/VrDog=\nR:165a2bb48309f753aca05def099f5bae7f5430c5426dc6c67a11e578e368b0d5-a\nZ:Q1fPmRLZE5grhurGOJToj3anv2+ug=\nR:1665d4e0d4cdd00760bf971047f1d0e77b78643ae62fe5b6313bb8f0297035b2-d\nZ:Q1f/wyFIonWOQC7+jHzDqg3whaaz8=\nR:16707a40f8473d23f1def221cc62ed50079f812d454832e12bef31ee8b95c18c-a\nZ:Q11OHQ90TCx4JSMZEKsrCcFMAzn8c=\nR:16811a214e7816ff1e01b0a6b5147c82e6448d1976d0c451360d923ff4d5f2b9-a\nZ:Q1yT9GrLxIhci6fjVdlVYKsR6XjFM=\nR:168ba5a7bc7c20977fc24c06eeae829a4e2d5d51e8c56935ab0fcc57e5b415a1-a\nZ:Q1o5dJYmr2PVhw/k84958nG6rUFcI=\nR:16946691ef730945f8369506c9b1be6711c33b0fd8a1272b23b21cf68831a4d8-d\nZ:Q1+rMmqzrdzqojy2i0QpSVLrOAxPs=\nR:1699a35e984b99ac8822dc78886fdbf2d223f23ac8ae160a502208d9958689d3-d\nZ:Q1OGVMu52H0l7uggdZGe7Mttr4wJo=\nR:16a53c17849938fc7b8aefce9c5ac38a15dfe6f8d884698e5b4ba8c05a6d3a85-d\nZ:Q1qvfI+okf1/3nbSCxiKlOK+Tmvig=\nR:16a94a072879006f633c966608816941ead0ebc249bddf25bba805b800d31227-d\nZ:Q1GRfkis1kPNgXj0jarl0ZJBVuq8c=\nR:16acc44e85de848d4537bb6e9c398b1ecd1e3b43dd80cdc3431c367ef80b2f51-d\nZ:Q1F3//q3vzMA03H6rqc1/+4AdmWS0=\nR:16b4b5e641c8f91b4e931baa9f73731941515418586ee1b332ab653b2cc3b192-d\nZ:Q1s4tl1JQdTTEVdXv/865chCsUgZY=\nR:16b65d4db477fc1a8655adc53f4b8e46659dd6faf292e50d3219c576ae90833f-d\nZ:Q1u2b5Vsw9b6o7yqS+IOYAVUroJWQ=\nR:16b85737b4dacb987c4cfc2f42c3df43ce383664729ebce98f63d480120ecad5-d\nZ:Q1rP5vfrhalh9gKDNkF9mQqOZ5vO8=\nR:16be4c9c202beda44786e3ae829ee5a284400b92184c08f3f93777c6a2d2b534-a\nZ:Q1xBN8TrvZGtUdPJmozG8OLl2Ftmc=\nR:16dc124188472375a81b1742aa5a54990f1ece14d09bc64a5bab3fbbd93f62e3-a\nZ:Q1K6UcY4cXpLslkFrFHQnIwLlRzhQ=\nR:16e10f25bdb68556f7c17666ba880666dbebf28d6756b321baed250e354f0428-a\nZ:Q1ss5x5Z5hoEdD/qTRuTgGO5Kjj9A=\nR:16e434ecaa756d09d1f2d4d8d517985700f2d9805d089fa61bee5858c0e2fc53-d\nZ:Q18iTFeqKdbqeP8z/5XKDeH9cePEc=\nR:16f0345c58a26103f3f14907f2cd8634747111ca7a983030a4e235a4b8f58dea-d\nZ:Q1cdUKmopI0VbgngcAcSfYPB9bLaY=\nF:root/.cache/go-build/17\nR:1722c2bc0acedf96dfd05e3de5849d4c6d872a7b51c10ed6ee583bde35156593-a\nZ:Q1lJnBQy+La8kPi1AfIhATphmxGuU=\nR:1722e39b2eec812fae3b211d6e60f4a433f0d07a5be681d4de36532e00aac03c-d\nZ:Q1GP72ja54DCVK2V+7cIFUnPrWh0Y=\nR:172f047ef53a5ec84ed3166d2d11e37c9a837f5859cab4691e520db568b6514f-a\nZ:Q1rRg0+k3Yl5ThvIw65iuFYYk+lTc=\nR:1744780af38355d590841ec32c2f401b2db64f54a9f063aafbc76150265ba895-d\nZ:Q1DxRVpdCfsnYrOcptM6Vq1jWuEWE=\nR:1754e39077a2019434da1616f02a85f08068d4005465a0ce51b0a2df83c7fb06-a\nZ:Q1k9xWzqJxEqRhJ+APn2vtSWekY9s=\nR:17582104e0905609a01bfd16497caad8848ee95326137454d863fa2564055c5f-d\nZ:Q1Ljbvl2qc3sQLOxwMVpXOUQY3+wU=\nR:176722d1aac6c1aa4e465e3d0e8b2db139b4657215e8cd50d524e4c1b2cbb131-d\nZ:Q1+ivv7RML/FZCjz9IhAVIIc/3Cmc=\nR:177594022b7fd0d1d63c914db88e3a7ec6090838a34f475c504308153d173153-a\nZ:Q1bhWAp6cHggCMUAyHNofwm1hbiBo=\nR:1780274dd7f68751e66bac16584ce8b8e9c79369d6fe55e3037f32ae00dcf27b-d\nZ:Q1NLCTdSSIgnOnJ1SZJF0vY+c2flI=\nR:17830588cdeb26f546afa8cecf22ea25d77bdbb9db76c7f58052fdacf124bba9-d\nZ:Q1hgJGClQAPs5XztMo+heL5nEa4p8=\nR:178de2dab33920cde72caef42a5b5c3c5209259268c7e330cbf3aafae0db633e-a\nZ:Q1opdPC/qcgnEVkCEr72u8HmFH+50=\nR:179cfdee877368dccda7148e50fc727284154de4b96de75f7697ab931c6a9a53-d\nZ:Q17YRPVh2O95r6aePgrdIA2jxJ8I4=\nR:17a678fa7e0d1624a6c02dd3ded8901328144219dbbc15abaf150fec4c173d6b-d\nZ:Q1dU5u2qV6OPRYpLVQ73+JqBYJXT8=\nR:17aece15e729c6ffd2c885fd10935c64a242b29b2e4ba8cad904874b1a65651d-a\nZ:Q10hD23gvuZmC5z8i/bkF3sMZOwKE=\nR:17b7d9e8aefebb768b93fadad387f30212ec0881c489f3cd62c9f9bba876f15f-a\nZ:Q15iSFKYch+KqlMmwz7Oi2SpSs5Y0=\nR:17c2afdcd361a98dfa5660a270f24eee51fd2e2b61095c5a5cdf225f3458a968-a\nZ:Q1wP4gGCDOvZvmPxzphruR0FzMxMk=\nR:17c74cd2682576c1c0bf5523f87f064195feb888be96a847a5c2758a03ce172f-d\nZ:Q1/L9o1CJaNlSXTYkv6VJsDbDQ/gQ=\nR:17c9e83372e7c897551a26f20b2683f8b8db9279360cf66c19478e3ec9003c72-a\nZ:Q1YQzKr2pJXjC93pcnHWORV3WTw1A=\nR:17d41d7cd88baffd5e2bde696adb7c412694286ab3740233a27bef53657cfc28-a\nZ:Q1tCmjLr6gSMyBQ/t5VemWZWudtXg=\nR:17d44c183807d889a96da73877937c94c75c475b3e3c500f07cfffe35f46402a-d\nZ:Q16tXnznnq8M7AdfDMyXv2JmYA4RI=\nR:17e3dd6555c146a0be11e75484b7bd36f65a36f8887a40f5c7fd0e119428caf8-a\nZ:Q1Y3b2ek1prRGHcg1AohVZ2s302zs=\nR:17ee1ed37a881b33d7d050eeb7efdc19a1fad8c70700ba1b961208b746731b66-d\nZ:Q1j1tX/hv0pcdguY7pfwiP2BTe8H0=\nR:17f2f4016a51a6021808f3c65223d7645a2d90ad19850e25e417a1da609f5686-a\nZ:Q1zQ5zmOO6DWehUg8IY2LpuE84PpQ=\nF:root/.cache/go-build/18\nR:181830334cca63dbd3fda810780094bb791f17711605d2b7e287a211b0725c94-a\nZ:Q1Wm48Bm6rRdcYedzKHgQfgbI9Vmo=\nR:1823f3db8656b32b9666cf6d4de9e5643ff32f0fcfe2306581bbfab3dd246e26-d\nZ:Q17f8eNyGNBKwk9ZImDMbrbplmfTU=\nR:1845d5bace9bd0d4170d7623d84284ce56cc7045bd474525bce3fed63705c2bd-d\nZ:Q1dEWTdS7adhRTbO79a6dBFDLUydE=\nR:184a0124ec695bc4789f2ba335d93e0ca70cf85256dca2b1a4a9ee695f1f614b-a\nZ:Q1Gz5Q8gx5QXIOGQ++BexreM4DLbI=\nR:185127ead6174814cd2ed3a5d3ed26b9d8b6f106b22c6ef67f9443fa3aca96c8-a\nZ:Q1/TdMNbN2YmazyniYY7Je27yQElA=\nR:186f4dba74461df1ab38e7a73619d9f2d308fe35a191168aef747a86ac8a151a-a\nZ:Q1eLjAhi0w9bS53n5ohti2zh6u25E=\nR:187815e82e0b8ae829db362bb7acfc602c7cad2f9ef44928665e90188286039d-d\nZ:Q1t56AvodY8Ocw5vSITDP7nzkplrk=\nR:1880633ebd8c46f40a2f34264e34c39af0334198003af83deb51d9c818cdfdf4-a\nZ:Q1+KwJlp1ujPyex/y4r9unfQbyDII=\nR:188bb47a26263acaf16e3423809d33236034ea9a7fb8852b25301adfc7ca2c1e-a\nZ:Q1O2FunshnaOR73lxnzXpDT0PfBNQ=\nR:18b66de83fc694f043a8224fa04bb0ce39e3bc76b323cedeef68f6a8de5b0b5d-a\nZ:Q18mvP5xPCgG6oXUjZesKcjAwMZIE=\nR:18e874c38464492d22af83839de13a1ae0ad06a82ae879adaddd7aca40479db0-d\nZ:Q1ZB7s7dG6i/gGslOUYWv3ZlOZSME=\nR:18ec6fd9f36953074d40c61ab9059b623fee66bd5816a735c423e6279a6b9d03-d\nZ:Q1JrfX3R0apFeC/owwA8CiOcNei6Y=\nR:18f45fa9a65b8137cc9b08e9a2f0f3349e98c7a6627e97cc6535b5c6aada5f4b-a\nZ:Q1UBtFYYfAvJM2zNHWqxvc5GV8JO0=\nF:root/.cache/go-build/19\nR:190aaa6ef5f6b9350ad6ff11bc40e0d3b58a43dfa1e86aa3caeecfa8e7adf797-a\nZ:Q1SyaK0tHj7VRFvu7WeKG7jqv0TEA=\nR:192d48df3f4edca929a70e7a51148d76201a8ffb7322d3352b0a8a31df165ac9-d\nZ:Q1Dzzwodr9f4Qo6lU7ZixuKBnJZ6E=\nR:1938c1eb3b59aea9670da7c82b43a2cb0d21bfc68e0d949eb6d76d42d9bc6936-d\nZ:Q1d/Gq+WnlMMFKoMracPZ8gQTIs6M=\nR:193abc73d2a6618717862ae5601520c8206429290e4ad5398904d9975bf3e024-d\nZ:Q15sCZGa0w2srOVWsVd9WO0otUeYo=\nR:193ce75f08e8a90ff3a789af8c3dc1159219e354b6887533ce1f17ab8056efb3-d\nZ:Q1Jewyte1LLYfrLI2YyOyXaknIpVk=\nR:194865593da4a89bd508dd6ec3a5ff4874181c265c4fe7ce706bc4bf779bc781-a\nZ:Q1UpFD9MyXnUDqwZEic38RQhkKtak=\nR:199adb54404e189f735d9dd4afe62ef90146abfd06720a65bd6ceafe801291fe-d\nZ:Q1usm4imPHnLXhiad9oV7WEih3x6w=\nR:19a1c6b9f386f11529918f3d45fcb1c349b38c49a36ef52e494a5ed85d8a2b2c-a\nZ:Q1vMxtFLqJ7kboY3RpAZROU3Na2RE=\nR:19a73deb20a11d856e6ba8c352a98e3d3953729a919a757ce3957dad3ea0ec73-a\nZ:Q1Y3JDZI4odNeXIKP2WD+Yww+2Ig4=\nR:19c48827f7b8486d9f70d0593c0723612ab3d2dfd19d0e956b76c7f64b7871f7-a\nZ:Q15VHmw7q61qpdS6mdrmy99WKDNVs=\nR:19c6f4c576ab1bae615a2ae7d76b9d9851b26f15cf9a539aecaed69ed177e557-a\nZ:Q1duECBv4zLZqjrdWer1k1+OOI9hE=\nR:19ce32df2d363c663c92eb7a161b087f6e9a26b1ea7555415fc42bda1ca358a3-a\nZ:Q19u3sz1jQC6atNQPY5F5ILmF82N0=\nR:19f715db4f6f6a5654a114ae0ed8dc3732ee333d08fca51b0799711c7f0ddc33-a\nZ:Q1wvQXQP7R2Vg5yEjXnFmXj3h4LcI=\nF:root/.cache/go-build/1a\nR:1a17066810c20e47815bd63b878739eef8aa9c942d42bfea690b48e19f56422c-a\nZ:Q1DHo9MwTBtwZPfhNvQVQz8oA9rb8=\nR:1a5a54254d773bc91c1b97bfc6064596ab09f775a622b3b1eacab628d0bb00a6-d\nZ:Q168aiS1lf9We0ObSImZ2tPtaCZE0=\nR:1a6528b3fb7b4e40bd12b8ef518035b712f7fcfd0547779e3d7efba381c5190a-a\nZ:Q17MO1cSqxigk9Z2QP3/wp2mjCf48=\nR:1a6bb3ec7a5438f28bdc97890a0063606ef45e312bc33481c78cf44810dbc625-d\nZ:Q1XVhLc6IawPcy39v37Tzzge3I/g8=\nR:1a7558b23eb7e9128383a703c0c4c5e3a8b43d512be85bcc560e7117a9c52856-a\nZ:Q1WbQPea43bfdj5KteJDZhlIgoCyY=\nR:1a767989be48343a5f641536cdd4d60d08f06fc057076e669fba45c449116bb6-a\nZ:Q1gmjMKq5DMS7W5XhkPBzWgRQjGxM=\nR:1a8835aaf325dfc8f51ce53e0d380e53684e5e687988b0fd36d1d75322d93aa3-a\nZ:Q1iZyGhC25gsicn22d/U1oG4RXwTY=\nR:1a98ba2a51cc391be12f0357ed3c9731634800adba9e1efc03fc29cb61fb5880-d\nZ:Q1+XdlhOIBEErduo9nEVcq6O7g+JY=\nR:1a9f623943bd2eefa966655e1bce7585ec0d25cbb4ccd6154d0f1ca5b93dfffd-d\nZ:Q1+L+TOu3ir4fjc1oKoBQA4p7coLA=\nR:1aaa59a413a0888cc6017d9e38a7e49a9a5aa03531e88dace199ae3fab9848c8-a\nZ:Q1e37/Kbhl4i5Tq+j69rLUhQc8/wE=\nR:1ab0f322bcdc96fe99b8e3e3a5ee3c80f8f4a403023896671f909af6f4c7a621-a\nZ:Q1zUHgM5f5WitrBhjTLL9CSvFgQtQ=\nR:1abf202305e052dcc116ea08d06e90cada1ce7c4c83724ee6b5e01187d367eea-d\nZ:Q1FPUOAOD8jL5/tg+4vNFgZyGBwwo=\nR:1ac0c0115a6d570bd4edbfd83d695554e8475fbe95ac06badb598904b2ddc1d8-a\nZ:Q1I00GvkdltYWlSngsBoD6UqWfyUs=\nR:1ac4bc9d3b7ab4ca659852e75383db036ebeecf0e731b71187ecbca39f38cac3-a\nZ:Q1mBFTd8VCMiV3uBGFnZO+gV08wfU=\nR:1ac7c644fb317b709235c049609726dda4ffe2cfe0bf646cc1566acfa2bd5fe0-a\nZ:Q1VgJn6y7cgaR2EByoIRDSK8fpbts=\nR:1ac7ddc9632a656e1ee0fa350f56ea5ff051881e33c3271fa2589f26c61eb9bc-d\nZ:Q1oBiy1AyBSkTtajFZKarKOqxdhbQ=\nR:1ad3ec384ab87070e5ee3b7ab59ef2414ae965a4df3c58492fac0b2f31b26db0-a\nZ:Q1z/2rD1NfHO4lm4PRYXMOcJ0kL1A=\nR:1ad749ce60c25a3c83679a297e587e8f8364a9a2f4f08dccecedf8cb736ca347-a\nZ:Q1ksmuV9/Zwkz4Dm3NcfFnACEa/MQ=\nR:1ad9dc6bc8185c0963166276a93d80ee2a8d0a1835193b43c107d9a8c118432e-a\nZ:Q1rvtMXahmj8H9etHVcqKyTeDQow4=\nR:1aed13623635af178a38e647db9ca0229db0bbf5c8b43c88968e856151687731-a\nZ:Q1EOrREUdJxY2yPT0NG1eRNbQTf0w=\nF:root/.cache/go-build/1b\nR:1b0d3a6bbd751f0869cef315120434fad574e6592addd43d1d6b7ddc751eb0d6-a\nZ:Q1CyKq81/lbrmSpLD5EQTKmfa9eBg=\nR:1b0dd28ecb55af051826c0bb693cfe69f3bdf8aed43b122a4ec3882cdea5cf1d-a\nZ:Q13iEIY5fEoHYjm4pqBmg7qRVYUxg=\nR:1b120724fdd81adce8c065545c1fddedf44501530e779cfe5bc58950a2150ba1-a\nZ:Q11BQa0sLkAJ/oLioUBuJHOMl0Y60=\nR:1b225d50577c96ffc6b96120b0538aec3d3dd3f058c309c5e52e60bae14f9e9a-d\nZ:Q1jVSuWv3Apyt2JUEAOHUW9Ebhl2c=\nR:1b307b24f2dfc2f8238aa444a5ce6107f98020ca647248cff13fd0b235f0ffbf-a\nZ:Q1wmbUIwdaOJahhUwB8YLsjcah2h0=\nR:1b42b7fed587dd129609e943607db5be454942b1d179a4d21c2cea4401d66440-a\nZ:Q1JQS6v9fGqsQvFk7KeELDt51Lgoc=\nR:1b45973a59cf0e57cd4c9389fc0886e1751145ddc000e0b7b95078bf6b322ec6-a\nZ:Q1lzGff9ACDNHpmiocODBlVe2mVSk=\nR:1b47a2ed230770b13d04a3256ea50a3fe6c554b68fe8a8c40735d6d3e7e3de02-d\nZ:Q1fqPpOFtf5jxSKUJ/pBLAwywaE/c=\nR:1b543b30e26b58daae5697104f608dc9ae07b5f7c4948f4b4b54a1988e8658d7-a\nZ:Q1rpFn2SUGodQVY/FFt0dKRsm3eBg=\nR:1b67c663ef3886d277f1e773042642b041154aef7504fab14a2fc111bc6b7ea0-a\nZ:Q1XP2yY7t4UxUeLe3g4GMMk53XqG0=\nR:1b79a9766158b311cb256ca54ebbae6682da58dee5506afaed5f605e2811a0d8-d\nZ:Q1OWB0n3/nGaAAFwE1pTezbIi/NLs=\nR:1b7b781d6c06b1ade777886906bdef99490c6b521ce58ee8ce926a31c3b168cb-a\nZ:Q18+ejpEUFU49CtQS5sX+IV10YZuE=\nR:1b8f3e9c77a10a95089d4fa139a80ca7b35641d9671ac95794545a88da45c379-d\nZ:Q1Lf3/4vd5+v2mabW7koKSPooT9/8=\nR:1b8fd9090fcee4ab3f4e73dbea6abd6df1b4b2d531fb2eb960aa4d4b37fb4c87-a\nZ:Q1I8bUkYV0ZmeU2Sjz/+gJs7BeEvY=\nR:1b980826c50081e643b30fe8133c0be661bc534e92fee72f630b5b7b3262a524-d\nZ:Q1xpIFk1GFULVo0AgZHQvHQ2PIlbY=\nR:1b98d93fefd2ec1e1915b9bf73caf9e11fbef07d305175dd6f0c5a0d374dace1-a\nZ:Q1QoeTbkJUv/R+tLs6oYcHOpP6yDs=\nR:1b9c8e31c1ab74266f22421ee38b12aa606ae9012bce0356fe11d622d30ddc2a-a\nZ:Q1s2wyB4nKY2vH0H6iiLPIAoqkMVM=\nR:1b9f438d904af7619656da64e07c8574805f7a7049780068972958dc2dde765a-d\nZ:Q1InMWmM+46I6zLvI4uGwh9ZfAMss=\nR:1ba25b631ae9a04aa738727574d4c41fa607099de183f8cf9438cf4f3ff006a0-d\nZ:Q1G2eTpSbxM+19mngEzqPxuaxgmUE=\nR:1ba42390705fbfbafdcbcf22dc0d5c5fbb12e6d4426f5760762d0bba77a775f3-a\nZ:Q1JaRJrzrfVcbPnIYHmHPb+hzaPWA=\nR:1ba447de2fed1319d16ec5cd62369acafdd72fc1c6008f7b66f9ff6df2931423-d\nZ:Q1EiMGwgXglcFpr0UPziQRq9yv7eQ=\nR:1ba54785b46c8074f02a77a551969b142aca96f302dbfabac18609e9c230b3ca-a\nZ:Q1ND5iyXRszkntmObFOzZfBq9+0+c=\nR:1bb483f0b851e45471accefcbf0f0e5e2d73dda60c8d894b74ad2136032b82d6-d\nZ:Q1vYm/c/9VApxFU6WmRfAPKRfbI6I=\nR:1bbcb1e8c79c0ce192109e63f81974d0412eb997525be3c8d478efa0951d8465-a\nZ:Q1q/3JCRHNnYcLrf9RU55iI7xaW7Y=\nR:1be8c60f1670a9885c7cd4848504cca374182beac13b32ac91538593b58c804e-a\nZ:Q1aAvZtgcMGvo7IzrDMvjDuoyNMxU=\nR:1bf1a339567d6496ec2101880507506b0e8f85c30f85befb784550321596a845-a\nZ:Q1aTabYvJK1IuhkS7LjWe75h1jp/8=\nF:root/.cache/go-build/1c\nR:1c113718b6da517ce6714a93fac5bec1ed692d8d6e9dad1d8cfaa761c2d00886-a\nZ:Q1J848KnL6nfQ+/a0r0xX22nztMms=\nR:1c160d153f507e22d455b3580e7b54b03a0bf2af3873b08cf828ac72cbac4ac5-a\nZ:Q1rtw3lZaHDplYVXHho66GAjdfR8A=\nR:1c2242dad4bcf548a54e20e28205d8d94df978fcaa97ff205a6b0ae9e147eb74-a\nZ:Q1MpuXtHxj4LxGaq/ERfixeomUTmM=\nR:1c57a0e64279cb2dbf452c33b3800059a9776a47c7ef9cf7132d88e506822d90-d\nZ:Q1Io/u7pcbO2OZN82AJUyJ8R08iwQ=\nR:1c6cedc34ebfe6078f7aad753c1d01f8b5f927271726bf8974311d474d2a4147-a\nZ:Q1Ft/Xfl2fJqzEymUjXv0Gddu2YAQ=\nR:1c8148d377f45bf19992605234e3b72cd13f88d833757c3e1ac1399f72329f7f-a\nZ:Q13URIBwYkNRKewUfb1mikVi6alcQ=\nR:1c82fe5b9a8dc7fc349e598db2b885041800cac14d917d05b26e6ebb76bb0bda-a\nZ:Q1NXFDP09AyvQoV6tPHQmeVndLFiQ=\nR:1ca30abd6a0e05be027b621b54d3751855528c7cff5abe6ed3881928ef80c18d-d\nZ:Q1wfVKIK/zXPsSXJWI9IhXYbrLbAI=\nR:1cc6eeff67517ff1b2fccd4bf7910a2b2570696beb6817ad0de3fc9f9ba48b1f-d\nZ:Q17yUJN7yFbTQeGR8L+LBWh/nLeiw=\nR:1cea28be8544a735fb755eed24c0700e50f357ed5dcb94c01f42a57937de9ce9-a\nZ:Q1VAyw8Xm2BaZV1kZDMXm860e1ED0=\nF:root/.cache/go-build/1d\nR:1d1a59c38343bfc4877794faec1529e5fd02af5d48dde823c41cda5653c60807-a\nZ:Q1VI5Y0BQKelW2MaE0mNsc4sOM7RI=\nR:1d23b8da64287aeea6cbd7121abcb222c8efee579c6e7afbb7d377b95725e561-a\nZ:Q1cCqchDaN7y33o/JojVLBRigQP3Y=\nR:1d406cd040c763ba29e51de934d38eca332458c80afc5cc44aca8cafd3b7dacd-d\nZ:Q1DjqgY4GTXAJk2G7DjQiHiqR8pO0=\nR:1d67e3a34d0f430c5f30c82bab4b325b30f109b5872cadf5ca7a187867ce425a-d\nZ:Q1VuG7YiUSOfY9wcDr5m8xyNT8edU=\nR:1d67feecd45f40e002bdf0799b5864dea9f42a804eac8c23670f10a5576ec23f-a\nZ:Q1wouxVLHq/Rwf2UMy1aCMiOWdVqA=\nR:1d69a636553418cbb2e0653a4c430a022af958badc0a16843fa78c4e239948e3-d\nZ:Q1QHTW4Z7YRfC9t36zlBgKvvuVnXY=\nR:1d8cf03f53d051e629eff6f459447bb8f64fe164752c6e4e1003e6e62359a916-d\nZ:Q1rXDrNbT1ISc0Wa0O7KaKk7/LBWE=\nR:1d8e61db55cfd9e8913250b98068270dc4310521041d0e6c25b9077ef3597ddd-d\nZ:Q1phNv9gbuoHWGUyOQlZl6PqllI3A=\nR:1d9ec027ad04b701e49272b98f7b906eb5eb57488b73855af505a2454ef5f5a2-a\nZ:Q1a018CPNiBpQQisXAeC9CMpYLCTQ=\nR:1db8897e7687a8dd3d6d34a38287710fc0ab75731a73cd46b26b45c9a3ffb02e-a\nZ:Q1mNz/VHu+krLTZHzyZXovQZcMlRU=\nR:1dc1799c5fef6e656b8ec0137db8508e98928b3e245d2c5233fff6a481df313a-a\nZ:Q1vEc75zcFuxirVCNGd6awTZUa+u8=\nR:1dcec51e1dee4a7f44e0c36d59aa2c496762c787055f92c431273077ce0043ea-d\nZ:Q1fzfXwJKqrxlIIzYeqFn2E70c5JI=\nR:1dda8671ee51cdcc8816ddb633bf4369ccde4553b3b04c572875cd14e058623a-a\nZ:Q1LJNQ5yvFGA7/AhcHW7ItVrsKApU=\nR:1ddf24f6b726b6465a76c3d3e5e30469b045e26c569e8979923f36fed5e864a7-d\nZ:Q1NXyDzNqHNGNyhnledvF+CwrS0dQ=\nR:1de61c1ff85d3a7a131163372914de76815871c6ade38c6d43a746ff76c8faed-a\nZ:Q19vI/9P1qASpWi2yCJq3gZ5s6Ywk=\nR:1deb5eed1d403dcd2df6e757843fc1050a31114f8bde546855cea46ff7797962-a\nZ:Q1Tq2VHGf8cmfwE7kodUaD05AyVBk=\nR:1df2a495ac6a97dc6af0d3219de06881f9bd266b2aec98df96ec97a75ea065e4-a\nZ:Q18IwB/7iFtI4+ZfDnQHNQKVW23tE=\nR:1df9d12db8aad75da83c653bf2a5219919a8b6adf32f3c2ae807521d739c4a44-a\nZ:Q1QkEj94xku9j9jn4+30Qm9ds64Cs=\nF:root/.cache/go-build/1e\nR:1e02b34061e3dcb4c8bca2a1e872a3226f32e03c84a11b98060a9609ea37289a-a\nZ:Q1wQQQF/DelEWaP9z+CqlNupnBuao=\nR:1e0897602354b55bea033092fed66591acea89a17b53176dfd34adaaecee09e8-a\nZ:Q1oNXERc7V2LEETj7twidKTD5sSjQ=\nR:1e12f884f11770f9977f8456f562a49830e2b67aa658f0071a0fe9dfb10b7669-d\nZ:Q19BPPArs9TfkwkNK/XILElCRl+h8=\nR:1e300cedc94d07309afb454e9048ee2a3f1bc8ab1367719023655cb2b29f34df-d\nZ:Q1M/Q3m3RlawpqGHoNXmtzNJ8WG68=\nR:1e3840a4d04002e29e472c23f4d5cc27ba59305d3eda709824486c4e053421b5-a\nZ:Q1wrKYwh+eIkoOx//9jFbC82D9co4=\nR:1e40080c20d2684af4d3face834c7d6926204fbbc2e76c2da2ae7e820ade7d76-a\nZ:Q1ZAhQhkaxmUypjufTTYLAwTUe6pc=\nR:1e5c6e334c3838c6cf90d543da390239a7d21748841801ac0e1e60fbfd0a3590-d\nZ:Q1ZsRSLVMOpXcCNXbbBSP7LESkTR4=\nR:1e5e795f41c65c8f6e8d4c2008636dfc4e3f202666a5ba4fddeaaa5d88123ab8-d\nZ:Q1dB8yhVnmm+uTDQ5DBeeg2KqA/JY=\nR:1e625fa6c6789ded5f5477531898fe26b7332272f312f75d079fcecee7bbaf82-a\nZ:Q1cMeD7JrrY3jUYSdKT5FOIU8bikw=\nR:1e6c5e428bdd8c8f77dd8c0d928a767f597beb162790e5d9fb7cbc641b2f79af-a\nZ:Q1kIeFXuw2DAkfbcScJ4Ug9i/DhZ0=\nR:1e85181d9d602954cd52d356decb52626ced7f87f1a6003d00414b5464b4490f-a\nZ:Q18ne5GUJMeW6DA7OOJ75nJ4vaJUk=\nR:1e9795b11b7c70409bc94a7af167478fd67280596ea000ccc4750c9afeef9456-d\nZ:Q1jJ/uI6M6pa9GnKXQcb7k1HjgYGM=\nR:1ea22500c664b0c2d52a708802c8ccf21d3474d5842d555ec4b6c7e603e9ce42-a\nZ:Q1RZCaYVC0P1F6nc+/b1wOYliHwbs=\nR:1ed01815a3ae1c2d7d0441cc066144ea7a6881d05671196afedd27a7c386478e-a\nZ:Q108BK9ddz0KkPhX8AAXReppUdw/k=\nR:1ed8c291e9b5f4e199aff71cd866ede4e8267bdd75ec244d1b9d1aebd10048cd-d\nZ:Q1pd/oup/+ZmW/ZGXtmSlgDCXhNDQ=\nR:1ef2d935193cdb78b2f919ca4011b7f1f5a378c2bfab31fd89271fb9b2a335f2-a\nZ:Q1Y1LGDASBDjefWUhvph1ufZQ2QVw=\nR:1efefd47d32ab5bc06f2b902db6595cfe68b3de8bbe57340ecec140db9b4cd0f-a\nZ:Q1JKkO6tm16lTYGGj0uobrphMmx8g=\nF:root/.cache/go-build/1f\nR:1f0523276f37eb820d60891fd39a5a3c38839de09808b560cc3840b69bac48ed-d\nZ:Q1SkM8RAKfgoJwkoJJW38JF0oYQF4=\nR:1f1690525f1470c2ba2b9ac8ea34c3c7eab353a98f872665066c3eb75400e1a3-a\nZ:Q1E0EffjB1E4N7DTEekNwhstD/13M=\nR:1f47ce74885fda80d1c519b2eecde86fe76151760d673b291b2224dd7dcaceb3-a\nZ:Q1Lm7FNSOCvn6pWnfpKakPRMaSetI=\nR:1f62daf70235f1895343d4c1e8cb8760b9788d9631a211f83d55d50187a6f01c-a\nZ:Q1aRlPEA/I4+BRI0QX4ZW5vhPyXdU=\nR:1f8ea87fa5856527a4be318f9cbef9d0e0af8e91f7fceb1d05500eaefc7c4546-d\nZ:Q1GrpncZxGGaWtz+vtTQveMVkJrbQ=\nR:1f9070bfe6d3e505dd4d8eec5f9b746fa7427de67ad214b1940ff37c650c823d-a\nZ:Q1vqh6U6i6fFO1O/4Wl5wU0hYYJxw=\nR:1f9881b79dc278b216733507feb49779287c0a3e23620555fad73ce03c2bd2f5-d\nZ:Q1I73VNB8yWKxVJAJgYX8cm9PW3vE=\nR:1faf6cc096af709684ef8809f82343417f0d873ecbec39690b8c6cc248c32e9a-a\nZ:Q15OTrtvacb2jTUSfHJtxS0Uc5juo=\nR:1fb05ba1ae0a7f135daf4f66a6f1171361da5ca63ccc4f24da2962a34d5f4c05-a\nZ:Q1YPZrA6Y9IQTdoA03mptpqDUx4FY=\nR:1fb4fc07e3f9c4c06e5dcf53d91f2f5be6ffd6922a526864b7638aa53c0d0ec0-a\nZ:Q1YssDbfm3XdlWP4JmvOTXl42vxc4=\nR:1fd4bd2487348b768fd896c32b2e82a127d14250fefbdd0784b5aaa484e70df2-a\nZ:Q1a6ekiRhtmMgzIRCmv4zTfPYyZXo=\nR:1fe399c6a6372389b6427d3e382df05fa75d0013830cb53c4f30878741bbeb4b-a\nZ:Q1fIGoazittZAeBPJOAF7Sl4toqXI=\nR:1fe69ea56c810567b2197222d0e04858b7c56c837df6502053b7f012a2471fa9-d\nZ:Q1L91UbnSNDcun886ITrJmYZRHUg8=\nR:1fea0eba90234618f259bda047719760c3f9ed341929633b491e732cf461233d-d\nZ:Q1c4RAzuRPflO9fb0OS6d0/LYnxzI=\nF:root/.cache/go-build/20\nR:200e0195fbc0664795728a3bf1dbccbabc0fdda44687787cf2093e8762069025-a\nZ:Q14/oZyILWXLN0BETcZyOb0qkxk94=\nR:2016679172a742b3d0a6288c25c042a4b1d2d4ec500d015e9babe76d2f0f5389-a\nZ:Q14PKndmFIeepmuE1eyeWVVoD4i0Q=\nR:201ac58e94ba0f59f6703d78470f736324469d16eb124e6aa62971d5e6993320-d\nZ:Q1tW+tycMvkwQ9kex7q//BTlq4gng=\nR:2024290637b19d423c0dbfa86b2a6ecbda2a9aa1c56b6c39bac133926247ac1f-a\nZ:Q1aAAsmVPcj7D+1FtslH/cOxHhSOA=\nR:202a068594f04daddeed340f27929d23ebbf7753b082ac76f73d5c74164cc913-a\nZ:Q13YA36Gf50xPYuub95jbj3eSMfBw=\nR:20301539b35e5d31010b5e823b883b4c16e1da15fa4efc7ef8164915f901e985-d\nZ:Q1cS+06xbxzaq8IS309arMSKGTmT0=\nR:2041a8662a94a7edfa83347b01b424d4a7327ee8668c1ce66ed63b77bee1a893-a\nZ:Q12ZTXnQrSzvPkoIJ0FD90w4J6+Fk=\nR:204e4d855d8916c43a5766cde0a3fb4ddcae149de9cfe39271a35240d005c69a-d\nZ:Q11L8uym8Yy1+jUdfFMzpTXOP1La4=\nR:205ce34c5aaa588048de7c00cfe32980ae4e8d35eb817a96638d0c8f70ecae29-d\nZ:Q1nx+FjiELw74TYUcgf3tvlIONcaY=\nR:205d6bf87aac1e16950f65c5cb8ff30a3198edf983a791181b012c53c910845d-a\nZ:Q1YrVr5r8l8A8wzW+0MUjyQ2dqOa0=\nR:205ef348577cc01a0b0ed49f7db0c6f1413ea32c98b1b96e63340295dafac2b7-a\nZ:Q1BNA80fKpeBXr/jhCULqzD+Szz0o=\nR:207b1844a29af3b01e687d7297cbbf1746fbd5d7b28b0cdcdfc837306f585966-d\nZ:Q1dZWVZlzgdE4yoe7IgNnYBVUaWI0=\nR:2084d99e69b6c6815fe3a351b3e602cbd0958219e23ee45406ca56d5d10324dd-d\nZ:Q1nja6WVjd+jUQe+sSKukML+9NVYc=\nR:20b4f43a536faedcbeb8e8ab428b58cb53ea61effee240c7cc1f4394609b4c1f-d\nZ:Q1s+GKrzJsBaOsW+bFTa9kWuEksAU=\nR:20b954c188fd7fd24f8ddb1c175643ea145f224bc389cb174d9dbb7c43f21162-a\nZ:Q1y9aDy3BZZJbtD5Vunk0zYzOKf+4=\nR:20bc4abd8eada6ba2265206c7873b93c513c563f12c851810b9f08ceb3732cf9-d\nZ:Q140BoHKQNxw3lI/9tFJA29lCWxXI=\nR:20cb2ba095c33a4a0b0d7c7d658c26fca8266fbae7bac0cb3e9f6f72c48cec23-a\nZ:Q1/xzZ3Ef7fDSZkiR+2gTNNErhu84=\nR:20dff561b5a4b67eff802fda17d2d0de9192b7cb1f19f12c4eb15d4ee86869fd-a\nZ:Q1RPaLXBaiL0Qpyn+krqNLUscTNVo=\nR:20e0ee9854a2a54dc611eec3009991c330aac7be8f5c6538e50f0a20e8b4375e-a\nZ:Q1yQMIHWkybJ3eGZlaZEnnGCHl+Ls=\nR:20e90fd9b90f4e6fde12e358be277c3d0ec6ca8f24dc567eff6717bdd03c34a4-a\nZ:Q1lxappfOSkwlD/fgRLDN4SjKsWyk=\nF:root/.cache/go-build/21\nR:210f8a9fc63011a3da9422354100f9bd0cab494967391564cc847021bbcfbfdb-a\nZ:Q1CzuAPO7JmvIWZ9J513FDSpF1Bq4=\nR:211460f5c137b10a99bb6c83d148d1fc8ee423a2344052d08ba7f1d6dcef12f0-a\nZ:Q1h46X6ZGAMXFGem6/6wcuKrEzLyQ=\nR:212cd7a69fad984c8673b053023b3835576be7f58e6186594626d60486335b9c-d\nZ:Q1+YlecBitV1+Ea1Pwr4qiGb28EaA=\nR:21364273898ed872c9f1f95b163333ed032c401517d780980fa4106238486e70-a\nZ:Q1Ons/3efTr8eeBgc+S9EMenC+2Hk=\nR:215408e1c5ae1537fd86954081d3ad0a2d5a9792a055508e007f044b5f2f3644-a\nZ:Q1Qom7wXJEIG1N/3gHKSH6yEjUqVM=\nR:21549b3d47fc550f0d7b64043a7d93cfb40a166cfa2ee9502fd86c57ccfa9412-a\nZ:Q1wV10UTD0twkQzXVnrLxFi3jScIQ=\nR:215ce3bd6a1644d80eeb6b371b8812d91e8ff1eb34a7dc98df63af0ad879081d-a\nZ:Q1AFMnqWVIv09K2qoPwOwUIUmnxmE=\nR:2160606a3dcd3fcb6af332f6fd0385a8756d7823c28df07cf7e14c2b926ce3c7-a\nZ:Q1vSaHbRT9udr3b9M5I7RIkRiuh8I=\nR:216da6e3fa63976b95c7f18da8beab37b162984b1edcfe613483edfeb9bf3a9d-d\nZ:Q1bkXG5LCOuhKfTWqlRUM9HmEq/Uo=\nR:21936661748f67214437bbe722d38c6019e01a719a3075c8ba58db9a57e91013-a\nZ:Q1wPzik2s2NgddJS4OltM9lJCngHU=\nR:21a73a3b7eca95b68609652a77e3585936c95e37975f8a801586f0878db9bf6d-d\nZ:Q145BiDNl7MFcsnwgKw4n4xxruy3w=\nR:21b0f059f2f2cc75bd965d7050c3ad3f8e1eab9a4bb9f731b12a896cd0087221-a\nZ:Q1OHKSDiwo9ftiVKS9wqIwpShYyD4=\nR:21bbbf9aeca00cf1ff8a548ce80604f616fd02fc176b67dfb16d3057dff98232-a\nZ:Q1ZguS2/sp1zj1XJv7DmO2Q3tzN+c=\nR:21c2975b99d6ae75d6961a2b1cc87c29765c0bdff07ebea0effd714d40de54c2-a\nZ:Q1XPcx8gCQJe/uoFeH+aAxJfjA83M=\nR:21c362ac4341444a265b803dc48cbc4f852c1b63b5fb2f60a2f1cd07ff8721ec-d\nZ:Q1OyeJW0OxouY554DqL/SS9xCdc54=\nR:21d24258527405fac853c015493325811533539fc37f35547b3af219cdad69c5-a\nZ:Q19X3o4cPbI1JOpaF7d9zLqRTVuqI=\nR:21db38ce2e1134d702cc53b361c8732a9fba1e6c9d6f23290bc55c786190caaa-d\nZ:Q1W4X2EHWYyUDL9066lzlRkBj0004=\nR:21f819b425bd524f2ff9f7d0c3a133a13f9c2254902b967846e9d5e0808a9bf3-d\nZ:Q1+YCizhWaUtj+sCtcFVCekVgHQtM=\nF:root/.cache/go-build/22\nR:2210b31e41197adc700d3ee72449deb50ca419a2800b367c4569b1949f607539-a\nZ:Q1mk4oSJ5FY7U5dC5SknmbN/mmdeU=\nR:2220def7086346a09105d4ddfb13e0900c5a568d1ed60573e6c90c7e29b22b19-a\nZ:Q16Tbxfz0czini2UszLeWAZRhYLZc=\nR:2240a33163a3620620c1cdb604e0138ac68017a1288b23bb33807cb50d4d4208-a\nZ:Q1aJtsGIs0nsgKI0DoPiMb4OSaXSw=\nR:22472c639da19c0537c0bc91db0cbfba6655e0907cf50d1a25b30b45103ae508-d\nZ:Q1EKirx9YPSuodF1roGM1tteks4yE=\nR:22850f10e34b7bb1da85a72b3236f4409bed1a2a7a8fced26898427889bba473-a\nZ:Q1k5AoOxOAieMhrjI3uyxst1xd2FI=\nR:228739ef4eeba0a7607663c0f3f6551b51f693bd4d371b3ca0b02fcaaa690c0e-d\nZ:Q1aO85NyCp/n+WVpzLwzam4h2n1mk=\nR:228a533382a7653d09e9a4ad03ad5ad21f7b7ce2f887493bbfb84d28c834c1e2-d\nZ:Q1pDhmDGV9pMAuV8oD+Tvq4puM918=\nR:22b3ccd9420547505cb311a334fa9a2d9058a16c087eefa9e9f2789f4bb11f31-d\nZ:Q1U1gLWICTMl627MpOJtDFevHxW0A=\nR:22b9acd290e043b14c9e99d08c76621b18f6ef26322cd66202facab4087e35ef-a\nZ:Q1tnKcagjSE1mkzrorGHrrmY5Ytgk=\nR:22c0a18b7dd3c675af59c144f348c650256fa4dd3dbca2262416b404f42036d8-d\nZ:Q1GwMnStG7fv7fqoWPEeOB8NWtjmg=\nR:22e9c935db51d7211f3ae6845f212d1a3a3ed7cc665a333e6313885584b1b5dd-d\nZ:Q16FY88YE2F7L5GKGLWBcBS8ooeNQ=\nR:22fc508fd8ae3edd479f2b0a9ec84932b2ba178a458e5c2a8400859b32621877-a\nZ:Q1uR7o1xmeJWNvoujzystIonWdWKg=\nF:root/.cache/go-build/23\nR:2302ba97f96c9108769c65efa33e4a4341a5aaf6f3525839a8c8aab6a0748277-a\nZ:Q10AxDjK9KApZP29yPsWJPspTmFSU=\nR:230c679fa549aff1a0efd58df89526153c17ff432736c51f62bcb1bb9b634b1e-a\nZ:Q1d9hpqERj1Mk64DWI+/u4rDwQVn8=\nR:2326ed0ee95aae2e7bbf165c0305ceb6893ea8a7be99fec18fffe06b97879f18-d\nZ:Q1XCV5AgDlIeb9Mtk4Ucwio7MqE3c=\nR:2334be7caf56053aec933bf9eb73d041bbede8c703e099cb6617e1da72ea190d-a\nZ:Q1iun8nk37pgL2DrntojZKmimiONs=\nR:233b50b9a43df90a13aea457a63669e8a6ff90a39ebadbf22aea03dbac4ea796-a\nZ:Q1pL9RseqGJ78PPx4nW7Z7JTGc2hw=\nR:234d15240bbcecaf07ad47f6412ea64cd4880e41c6d021d2a9dd2e09b95ed41e-d\nZ:Q1NGTkCUyY8Lur13ymRciEGJRlyqw=\nR:2353d09ea88cd9065fcb1153a76c31147adf6aadf1626f75ea71ef815b88a8c6-d\nZ:Q1XQC95qRfWH9xBVE+qxkS6CWUKrU=\nR:23543fc634dc57a70142e4f985840db4a7a418ea8e8752046b774df406e172fd-d\nZ:Q1OAS4zNIzaBC22gh8FiAsxnzs2tE=\nR:236f7483d66e0dca7c1c25709ffcc75b3b94713d8653a54d2444d6d59063020c-a\nZ:Q1zTAXQ8y4yEeL5O1h4YwhTkSFIl4=\nR:2375c1353bfdeb0ea61c0b79b883823a0728ec09730a31433009b1480d5f378f-d\nZ:Q13j1Q34k8HsUDOcwJ30d/AmN65Is=\nR:2385521c48b2c52b338ace2220ef1e412bc2a4ce10a2143164a9bedbc37906d5-a\nZ:Q1tQOleAr8bdPzy/sRnM9UbvboDH8=\nR:238cd0f30fc49a82509fa31d9f82421955158c4386e93d516b1f91a9892ab513-a\nZ:Q1JNNqBDkm25CzaqRt9Fe3Cn7lsAc=\nR:238df717e00771f1f34e062441dc84decf02faf863db1b98d97708dc97d62930-d\nZ:Q1u7t1xrWE3DHQJ2qILj3u187/LDo=\nR:238e8437f5a2a4b0936abbb91e2034d40760eb46a2467dd1902bb0a416d740d4-a\nZ:Q15/L6ofI73lnOqtIGOsqC/I2xQ8A=\nR:23949dba6199153320140a131d6ceb33012d52fb76e0ca44f3269d8e6714cc85-a\nZ:Q1s5+t6xzAIadz7RWSOc3X81bummU=\nR:2396e152d8ba7834aa354de303ab6ff4f0b69d74c3013fe43da909aae9ce7062-d\nZ:Q1cMornve/hzPDxm0hYpxeqRsr29c=\nR:23c24d2d42e50a5ee1ea220fc540a79472777d97a7c1d9f96d13171cda1f0a03-a\nZ:Q1Nk/cxGENpVFV8DUpM07fmxYogdE=\nR:23c922dcc6080654e21a5e219c1d9c9edb37c13b449b1e26afc1b16dc6afec40-a\nZ:Q107LtUleGa5JVmrfhavAaZf/mQNI=\nR:23ce62adde9d44c064b70c3f070857e6d4ca92c593c60fd6a559f066f3ad3cec-d\nZ:Q12toaMEuaTtc9WRvIWOfucMHq+rU=\nR:23e1f986a5e7c7ea1b8599544938be8119bfec1687f8593f60945ac145581620-d\nZ:Q1cC5uCMU5n3ymdfQgxChKVXNFRtI=\nR:23f7d0c34951e71fe90dded0dc4b17aa8cc382ce77e571bd915080c50f33aa27-a\nZ:Q1IJTZlXl0GuMMhmiyvZ12uiXbY6I=\nF:root/.cache/go-build/24\nR:2400dbeeb68cedcca02d1e9007ca7852924078a8e0898b0c603288ea579fe6bf-a\nZ:Q16/kvbKCUSZGyOdUNccOHpT4LLps=\nR:24038e75ad59e2a73fcc1281e0a2f7602e8ac686218f50c75e69acec52f7cd38-a\nZ:Q1+WaH7jcLL+KU0keMG5GdmnE0Wjg=\nR:241ada2a410bd191f22c8275edc95aa9f27679b9f168837d2b577e6b24fd995d-d\nZ:Q1xG94cCZon53Zs+JtGgYBJHtDFSk=\nR:242298ee4d6aad2b699dcbb00e03876e2db5cb950d5db190a0453ac2c6115a75-a\nZ:Q1t7A2NsjP+XIwwSNIEXNvJkiak4s=\nR:2434744135de4e922aee1d809a9fe2824663ec817a6fec1f1e6e0da4835c9255-d\nZ:Q11esYaVAuEZtvaCsc9M/yBKRB/kM=\nR:243c1a2596774696b345b975d4468c44302e60ecc0a93bae6ca8b4bdc155d183-d\nZ:Q1xswq9C38heNeA2O5hrbEiY/zSyI=\nR:243d3eab54a633784fb5bf286f07ecb776a04d3961c2bc866112f098d5c2d657-a\nZ:Q1YLAdOxC4orKgGFvTRhDhTYmLYIc=\nR:244ba29d7d1d56f6204641ece490615a63f603346d572ca42f0538f339c8e6d6-a\nZ:Q1OQBMJONyEjxTaLU19MXAlIhBCFg=\nR:244e03ed26ac4bf2e64cdb51936e592d4a8c09fd82403d0b87a2d08a5571f0e8-a\nZ:Q1zq9YawE/F3Mk/6P+/DaEzKp2gQ4=\nR:2468b59c537e97fd3bedb62a7afa9cd4c7f739d777b97ed26f43b1bcc7871498-a\nZ:Q190CP0Z6UEFWqH7HpR7Sv872cfzg=\nR:24690fca4dc1afa3d09bdffb62f909f7060c78a560eea87383511f2a36644e97-d\nZ:Q1yxk4qHSxl/r5d+0B9mpdXyNEz1Q=\nR:2489ec57710492a3279fd089f19c9c4d27312f0bd35d9630aeb9c3f7f893dc00-a\nZ:Q1XwReTvuaVaRq8Rcs1UpmI9Sw+ik=\nR:2497d7c778e52c572ea21ffb4034d1dbf9bf25308e709b61a4d82ee4938224b9-a\nZ:Q1aRWmppB/lvNisLXKv6eY/9uLj/M=\nR:24be7e5d5768ebbad2f5e68e4e4251b242e2c605a9ef41e1cfbf6d9dac8124de-d\nZ:Q1UajeU+HQ2FWTfyNt12TrhbRbPZo=\nR:24d0e744895297a395adee95c6111a9a075d4be1720eef442d3efe2ce535e716-d\nZ:Q1/bhmXn5+SVAvOJnEaLKaHeTPVZI=\nR:24d6548b60bda32843b98ceb2fff0e7634c920b1c268e650ed5cdedfed6cd9d2-a\nZ:Q1cJhZLpb1I+YVL+wGENe4Tiuy1a8=\nR:24e9c246b65b98765aeeecf31627ad5dbdb94ff8c8cb1a9915deae500c027e31-a\nZ:Q1fAFxzsBpzu1ufYXgmcpyoZ/N7Cg=\nR:24f43f3855f50ff13ab18d0a84dfcdcffb942c1d78770469a837fbb97ba63ea9-d\nZ:Q1z1RhPf1LV72zpQkkxDkOgS0I0No=\nR:24fb27aae8da0dfbfa5b05ca6686b0576e07bfcb5986eddc420d22617244181f-d\nZ:Q1ELFzJsOrOJW+mV76undyJ7iT4cE=\nF:root/.cache/go-build/25\nR:2504518e081d30234c80774dd646295f2b345480d4fa83eee76de9654b405a9c-a\nZ:Q102UOoCvrvHtXl9bRWqVRcSgTMk4=\nR:250b8e535343ea169bb79e4530e43df0740983be8f4a638d4cc224002d52e611-a\nZ:Q1l49t9YVwI4tbiPcBI22/OZKnYlI=\nR:253b0c21313868da3555089e20a5d7d1330d57c8671b173bc52613df3a8ee56f-a\nZ:Q1q21O2myDDjcPIQZk3fhSqsWKYlM=\nR:25539f16133a58db663b1efefda53e55160aad8199ca4832f4c035d707518ec0-a\nZ:Q16jktf6e1jW1/lRJDmjcXkT7XuuY=\nR:25785f0640f7f8021d05bc6bcfb85bd2fb5031b86c7e377eb47c13c598affc1e-a\nZ:Q1YXk+vI0bkg727vVF1vf5lVCkplw=\nR:25ba574ee4e8faf20c7ef0db4f1732f934026b8c909c4bafd3a629120db6977f-d\nZ:Q16q2509goXHOOZa2HOwkcVPY8zHk=\nR:25c90d4e7ac380aa0430b0bb402b591e9f72fc23741aecc554d87ce170c58fca-d\nZ:Q1BeB/HFlZco68vINfzlX7MBWv4rw=\nR:25e80f409b8b4671b18bce63a0fd56c26e56b3ed15da704ae15410e81b42e4d9-a\nZ:Q1TSykKlv+iiVG5RAVRroKM7Y8Q5k=\nR:25e97635b07b4f68166ca9651e435b70587558d1b145f44a63bf5eb80cb2832f-d\nZ:Q1f1451eVNZEKQfe31w4xDFaiTshQ=\nF:root/.cache/go-build/26\nR:2607d12368b626e1f2c9c972e344fadd4c361799174e2f9cd7043ded4093df44-a\nZ:Q1/0lACu01G29wTbJpf2rH83dELaU=\nR:260be28d7ae40474a49a410400c7d8eee2e2117c9774e67a46bfc92b5981759d-a\nZ:Q1q1nvFTTz2g2Le1yiWzaVKiBHs3E=\nR:2627614d4f09dd8a0d7664ab73d228ab4ce9b91a81331677bd868033a8e9d46c-a\nZ:Q1aE4uq2ydHwnIF4se9pgdGLuaAYA=\nR:262cec54851c84c2e0d46286da23c89968d606dafb5ddcd826e032333de421fe-a\nZ:Q1UQqhLTJo3dnZ9SfhjYWPxgGsZF8=\nR:26325c6ea0c594c4661c3499a0bb3e3532d987d62e2df2a6033d39e93e6bdd1a-d\nZ:Q1orkgUYL1xDOoHf69CeDFCDaYmYM=\nR:263d55fec373c7770aaa8a611b669bf6152450037c39379d58df7cc08757b158-a\nZ:Q1NqZ9OjCg0QcLzI7UQN2LtJQusv8=\nR:2640d55d1157808cc81d26ad79ee19e95cdb9b81e838f81eb3f7c20b893b0800-d\nZ:Q1ehNsBoeAsI9mpQY2uSUeDz8PwfY=\nR:264c33bec18f8bc323f62d54f400746cad66ab3df4d7ec4b86571316a91e36d0-a\nZ:Q1riM0MnZ97alsO9dMQpeL3kHVSV0=\nR:2658a145646dffc7045d61a71e366bfbf04e7c61a96774c8a8b1b05a5f398f3e-d\nZ:Q1045KLVRltRckEqxAHbX+JelRITM=\nR:265be83340c4505f7c0d1f2c429174d8ab8563b33acfb951e4eb9ed668b8b158-a\nZ:Q18D7Vl9tm5S43NscnUcbl3t8eKFs=\nR:265ce5fb96f1320d884311afc44fa2681ee171b963c7bc7cf99ae0f7075318e0-a\nZ:Q1B7aFXnR2wanSXi+Vuk52P1S88AM=\nR:266ac77c6100762f9657579d700a103100339b7b7bacee5908bde5be2dee1ebb-a\nZ:Q1saqCsFLwrcfYEWWqUAw6p7PxGQg=\nR:266eb03303fcdd704ef35853750f1650ea18a64112bd2d4eb6671f4920b3d63f-d\nZ:Q1jdgqLNkiB8LuabaElO6U1iI3xP8=\nR:2676240d5457f3f06be5e7e76dcdbd2ef53f42c17f7de47ed1d8f7b5b4a696e2-d\nZ:Q1qBqnVk2Whpfaj8+609yzaO3kPvc=\nR:267818af8b1bd60b1e4bf3fa04748098954261fa8124beb5c79de7086b54fe9c-a\nZ:Q1nf7pI2WjOYhRbu5quWkdbWSuKxY=\nR:26b6d08b2d999c529482c176bc8f324bc1f5bc71740e7b67bbcdae3800c4edd4-a\nZ:Q1yWswgnkoWyF59q9QyYOJV8SFpIE=\nR:26c4160645d12d46db6c85a2b538c5108f04e3fd8786f752cba46f9c02361894-a\nZ:Q1iw5HocBw/qS7v1cOOY23H/ABjdE=\nR:26d191eb506e96ffb741066fcfab905ee5c38f303940c1c835aab9b5217a693a-a\nZ:Q19l/8+tqAeRIzDhkoHVBMgPuva58=\nR:26e38e0b4d90116a0ac8230673706b19c85f91e0ded7e3c43db19a2f9a07eb75-a\nZ:Q1AncmaYLJYaIMzQDTBlDCsw7ORdc=\nF:root/.cache/go-build/27\nR:2736a73e7a2174bbd0f4e70d757c4ab4760e9dad9b7fcba9b5e5548280883b09-d\nZ:Q11xRPRr/UvMF6RTj4QnbHYnOJcJM=\nR:273bb94c7a162c95bb48aac69c0e7616078377af03336df90895e26f39d5b06a-a\nZ:Q1MnKOgc0FZizwgfC/WoczGv0N7VM=\nR:27749184393b3babdff8f802f1544ea336e4fc2996fa745e46140fe7b4568d55-d\nZ:Q19C2yA0UVXvSqvRPcSnoEkK7GMUY=\nR:277742bb61b33d05e2dde7eec62e3528b4e571dc009f79a6f7ef34721def0486-a\nZ:Q1RUjufMhV2l7gvnMBIHVECD7pdAY=\nR:2786a5ff74cc201f93ebde940f39d5508ebe354919816351fd24295ed01ec793-d\nZ:Q180ZoSJyyHT287RrJmzx5d80kfTI=\nR:27907d24596f8cd7ee379ce08d191e0218c7a4cdf0d84d0ca7d5eec71e532962-a\nZ:Q14rVbSoJLHufI4VU3zgfpV7I6pl4=\nR:27abfd538821e886746c5ee6c17b0496012353f988dd34fddcd60d0c519401f5-a\nZ:Q1HBSB+saGn0o7jU36BXrElkiMh4I=\nR:27cb61bb45159906610d306b3742819de796a6cbc5d24fc978e2db359c10fef6-d\nZ:Q1JEewkwQvSzVyl3jbEU0gziutw00=\nR:27eea8af90defa3848765dafdc40d98bedae7bb13a723328a3b78ab9eaa095c8-a\nZ:Q1oxHwnPe3k4RbnQlUu0M3CvAXAYM=\nF:root/.cache/go-build/28\nR:28043708092f509fa9134f4cdbca19d5cd6c87acefc6e7450a17482f328cf926-d\nZ:Q1usODYrhlQMNCFSM4bN/lMrC/3M0=\nR:280b21db7730d618a34700d3fc5024a0e89621c2b41081fdfc282c3d253ebfe3-a\nZ:Q1m4g90HIX2Y62q8fOG5liyjOndoQ=\nR:280b5380a20c4d22ea7239f11ca5f870fb15b2963ea373e346778dc897c31996-a\nZ:Q1NxqXwLkO2XgPNBuS1v34kfEo+so=\nR:280f941e0f024b0e003656e6fcc6fa014c6cbad7470215cb1d1eae0b7440eaeb-d\nZ:Q1ouoDptCjtahBm4PIenTJdYl9eoc=\nR:281aec788a4269567a8eb068271e300778561affe1bfcb34633429016d799515-a\nZ:Q1HWVaJa6yBgb9vZ22dZN/2tgPsqI=\nR:283b328ec194e174b9a0dcd9e2f08540d6b272082a135532d93f579eee1f69d2-a\nZ:Q1KBr4VROATOaA2fRhs5LeknJOUYA=\nR:284be13c83cb46c7cfe6241c0e4f612a11943a7b285cfb08e35756fba3e52a3d-d\nZ:Q1a5DeZe0fYUMVjXgu6Kx+Gk3A8dM=\nR:285a978d88032ef0dc8b9b30cae432127273a838c411ca473e46c94c8b9cb392-d\nZ:Q1t6V/ojF5Q9NPU5Zqfb4V4H7Ra9g=\nR:285f230e48d71d561c841527733421e01d60868d59fbd0042af5fd7cc7ac9a6b-d\nZ:Q1d8l3BM5f6WBFAyPF7YHmndmPHsI=\nR:288583384a9e00a314bea3de905d58b7e852b75758f2602dbe26e1faaf594117-a\nZ:Q16KrCD2kctC+NLpY+npIPuZce2yI=\nR:2895fd9a04f36b1739f9107adc42d774b76b0f14ae3ecfdc8071f0095863dbe6-d\nZ:Q1k7yOyifmerA3rPP7twfgn1sCujY=\nR:28c356b673e31a377d8214724fe4999f3950aed57234142807e150654159f011-a\nZ:Q18zFTAmSoME/tFJvn36y+B6ZzJ0s=\nR:28c37de0fff9206c792f089b524365c388484cb787bfc84e962c927dd2c0fd63-a\nZ:Q1XZneA3scsqp3ezr9U/X4js8XEcI=\nR:28c93538c91398da097767388409758de04f5633e1f4c0832bd6e972c48909e0-a\nZ:Q17/YfTOC1hgHElA6LCT7LOVYZQ9g=\nR:28cb49ce9ff0c8a41bcb82b99cdf2e3b1e4c729661552bb180981a89563015b1-d\nZ:Q1c80OWeUdyspofe1wDl1ZfvQjC4Y=\nR:28dd5688b33c379b57bbe50345075a0acf730926b25ec61abdf593c794b89b6b-a\nZ:Q1EqMI4cu17sXGxeool9BttgaKYjo=\nR:28f60f6ed3d9ba97ab15a6c84ddc11b8932923c1e3de924f22d773fc51430bd5-d\nZ:Q1gRuggWDDiCjdmvqj064Bi2NDkag=\nR:28fd57b50e098fcde96c6eb056a8e6a9b931d72758bf33652719217783b4c8d5-a\nZ:Q1xb36ty6pJKWpKHVUUo3i4u8CJ88=\nF:root/.cache/go-build/29\nR:29060dde28dbfb069fc45390ba6acc9eee4a209e30381ab38f8280e033dc1834-d\nZ:Q1ZfmvSDILGrgfAdgqUz63+JZW0FI=\nR:291567aba3c283b0678904b08178482ae71ffd30781518a82c4df6054d6224d4-d\nZ:Q1Bb1AmLfN3RspNwBLKsZs65mjSCo=\nR:2938784a73ff6d9f42eef464432d36300c9c90244d91bbabb62a9bf3921634db-d\nZ:Q1PzF7AKibjQSz+w8/7A5qQNUuGzA=\nR:293942354dd763898d5aea7f15b9694fba888c74b724e309fd6e083b8b7dfc0c-d\nZ:Q1a6w2ID9hlmkaM30imqpke7sP10o=\nR:294cabcc74b2c3d26052d71af9882447b02f548ef7cf0c2e2b813a7dd98cbe1f-a\nZ:Q1rRo7/ggBe2QVsVy+ntWyiRIX7Vk=\nR:29532ca908647935af31c64ab959f0af96daa685cbe164e89058dc79ebec4d05-a\nZ:Q1PztgBrEWipu4X6IT9yVPsW2Vg1s=\nR:295941e32f7f879471f2915eb59f85a83168cd406ff3b48efa0c8091b5f86858-d\nZ:Q1ycBDzACBtoKe6T+/G0REb2b1IAs=\nR:2968c45b08f705ef7aad69bb7779dfdcca162b559e3d8626bee30c6b433a2de3-a\nZ:Q12zTd9iOTNeyduGgwA+so+7jZVus=\nR:2987edc8e78f8415cd011993c96c862c99695a218a15b72ddefd1915d785b4cd-a\nZ:Q1Cc1eOqcVgVbjAsWRiOcNOgj4G1Q=\nR:298b898d751a106cfdc69cc25129dc8b6dfd59ca8e0b64dadb898402a8370e32-a\nZ:Q1fCzEF5n1GY0zKHEjh9diO2H6xwM=\nR:29b2b2212617c1d508dea42d15bcacec8ea93574a6b420ccec8d59370e989bc7-a\nZ:Q1Q4Sgw6KvC0vvRV1ZrrZfTgpHxuo=\nR:29b92e1c48fdb241869b6b34eca08135742fd6282e589a5ac6d3ba19ce91800a-d\nZ:Q1YF5+UNk9rytNDMBRRsnjRzvOSAk=\nR:29d5aa12c9bca0af07969d2b42257ea9938299a669e42559e33072048af99d5e-a\nZ:Q1UtwirkEclPCsR/iHWasZToEanf8=\nR:29fcb6d0621b1313c0799c84c251e354b0ee9df1e8c437c85513a4395e1e913b-a\nZ:Q1ceHXHTsKnWShJ3rV2N5beUqPloc=\nF:root/.cache/go-build/2a\nR:2a0f851412bcc460ae57df61e15faf30773dd82229e590785b9079d7d3e02121-a\nZ:Q1Nn+tPEMzUH1CpBUl6lymBMds+L4=\nR:2a1bb0e7feabddb710d4927cadea87ce6780ce8bfe8104601d8f434967f3efa1-a\nZ:Q1zIZB4UR4I47j9XRQwEViz+TEDGk=\nR:2a220125dd3df99167950508a840a62665c6a7eb3bdd436d45ba523ed7719c2a-a\nZ:Q1WmXEWZdLgeW5wcxbSK8yJW6iJ9o=\nR:2a2c922b7e07b35415d6621c479b551265b0c1ac80cd700791ee8b16565477db-a\nZ:Q1q6eeG+2nzzRH65lxijxrodlxSS8=\nR:2a4f08ab764e204968ebf10d0e0a46609411086dcd10f3b9b9a9d3a58a682bd8-a\nZ:Q1RvHNMthofMRYJBCvml3DSs47cqU=\nR:2a5578ac8f207aba3a9c9d9cf16141059edca7f14e95a482c1070aa14da8181e-a\nZ:Q15Mr7lOMWXAVW5Seqxe6IIST72ts=\nR:2a6b91034a8cb74d06f67b6fd9e73d34e2fb0c42e3dd851f321823cf3196d25c-a\nZ:Q1s2cHBtX6oeUkfGiKkdmIW4dw4oQ=\nR:2a7a47a0ad4662c80f956b72cd1bc78e08fdd30513f5378f9b9d32a6346c3337-a\nZ:Q1+MmAGwNI75dN18FWAcg88yxLF1I=\nR:2a9e40af03d7d2e750bb72fbd92afe82cfbb1439c969fd87959c3390f08b4838-d\nZ:Q1OrAr9TqBeCpTF8poNYd7dRFZZTA=\nR:2ab16025626601678e35bd69c65ceb4d5a8aa140e013f2187caec2e8aef6e1c0-a\nZ:Q1VNiy2eAS8DzmH/GsCOsk22cMcVU=\nR:2ab508a61210d66fbab51ba0cbad55daa9bfc75d4f899dc5b8d6edfa6fe5abfd-a\nZ:Q1NzqnuJTt3yi6zVqdpUA/X+i8oTw=\nR:2ab72f64fdf88d753c2ed0bf90b56657343731689929b9b7905a784b139d822e-d\nZ:Q1CLbhLdS1xMBjRGI3uQUFkA4HZVA=\nR:2abf37099ccdefa6163b01a692c388f441268acf0b4e49ada62a9eb6675cd05f-a\nZ:Q1CaSikb4WE3ugh8RDhDL/3+AdfUk=\nR:2ac96de679942bc37c6b0a7f6b12695060bdd58e8d822d0fb74ba25811a268e8-d\nZ:Q1mWo3hqEHGGUan2HmoXXWr3qVkU8=\nR:2ad40fc4b28a6ad8c227ec9a4d065595481dab5d587108d79b7a24794f789cb1-a\nZ:Q1DT25rt+QHW2mSSsFIS2Vl0U8Hpg=\nR:2ada9524c076eeb4d4531991a43c9d7504e05dad27c6f139c6ccccecf2313dd1-d\nZ:Q1wmbFJoDIF18+otJSSz+hKC9FqDg=\nR:2af3bcabceb1cb5f6095f0e64fa4dff1f927e22a5cc1d7375c99abe06591107c-a\nZ:Q1gQz7UCIrrzlMsS42zIVwmwEfQY0=\nF:root/.cache/go-build/2b\nR:2b01999ce3337c2a791494927649827a4a4515175f67c3913b12d6e3004d0140-a\nZ:Q1Iphw46Om6OPT3RYaDHFWCTiAPm0=\nR:2b06e00ca8caf280e3505dcedee7849952a0c3a215dc19573c79ae18d71a1a6e-a\nZ:Q1zfijt0sO4pNi1PTan5OzDZyu7CQ=\nR:2b0f3ed06e558e23adc686d2abc6eefe33fa8f1c047ab5337c54afc58827d233-d\nZ:Q1lAzh37riDH0+PYbMublYmdMPkps=\nR:2b21aae3246de277f9b5986fb3c073e3e4a9da6176edb17170e84e104a1bafe0-d\nZ:Q186C2hCXdzlgcot2aE82Hn/bAOzM=\nR:2b27cdcd94a9abda799155704a89f706741962c53aea13ee7032f7ca9863e7d5-d\nZ:Q1uHS/BRf8CEbNPKKr5Cy0tm11DHE=\nR:2b449dade4d7ab0833e2e6cf487ac110ecb98554490e5927d10258c05f944800-a\nZ:Q1dWfqvHdBbEvoEozQ/pq8psMdkB8=\nR:2b4aaadd44035a42a646abf5cf1fedb38cd23d64706dc61139ee2072f610b8ab-d\nZ:Q1AIwqJrt4GdP7VEqaS57O8MOhdVA=\nR:2b5d08e712b7aef4492a9a7d4bf501c6c9817ece0a249f71052d5a0973fa37ea-d\nZ:Q1p5t5md9LK+QSo/IKYt4NOvRXOeQ=\nR:2b71d4180ab4535e8ad20a081e7953a794e21ab44666180a93d0dfea44ff4598-a\nZ:Q1TUjeZ3as8VKGdWVzQyjJBARTkFk=\nR:2b76831fcd160c08828d639fbb6bc01189ec518d5f639d2535e8fedcd4c3c607-a\nZ:Q1S0hWCU76h/0HQIa6y81F6yxILhY=\nR:2b951355a7cf55244101a18d11a69568084fd1ae06b49e97293caeea37161659-a\nZ:Q1aDFkCiajuRRleZxrjFFNDFEbO+4=\nR:2b98a508ea513c70cc44e8aa6a87f100b2293c17dd482b6bd3e2f7ce481f9065-a\nZ:Q1Am43CAUNGuGyh1GzF/FL+mNnsq8=\nR:2b9d790e519b56e1c55cdcb5fe1fa6877e665d471ec89704d23b70ab4fb4618b-d\nZ:Q139M3yk6nm+FhoLANT0y60IOxQEg=\nR:2bafee42e5f8cfcf5300a1402fbc76e96fa4748a8226611b337950609eebf4bc-a\nZ:Q1uoe/1V47/BTFFWNIbSkIiP6Gh4w=\nR:2bc174c112a01f3d4f847bd29e83ebf6bf8f35a9ac9e99039510f4b4079e88c5-a\nZ:Q1TMqKG87AmT0+PsvTJsVFpwY/67k=\nR:2bda187102d6cdcfbbbf56bd82b2e8d282f34efc75a602852621e1c7ae01463b-d\nZ:Q18LeFOrGBgXuM+D1O07qyWrukWi0=\nR:2be265d4c942ad2737eee03e07f341b57c5099568f2b39a2b7b5832f84765d10-d\nZ:Q1gInXlL1KYhXjL8NPsOS+YxMDCJk=\nR:2be2673690f1ea793a94f8952885837accbf3bd38b96e20a9e61e18c05291a49-a\nZ:Q1+LqL1QUnmJ0GjT/R4q48+6r3RQc=\nR:2be6c4218020a336e1f78c113684747b2947dc8a2e77e2fddf6d5fa021df4f9b-d\nZ:Q1vkKlbHBPGpyJLT2Wyipn37tOyu4=\nR:2beaff4a1e62b2182907b5a3110956394cf46f0be4e5daaa8ff3926c4cfc490a-d\nZ:Q1of0kB0nZuBcGo4teGALWM3uQXWE=\nF:root/.cache/go-build/2c\nR:2c074a3f7e60b92f0254d7d9aad7fa6dae2f868dba2ece71a2743aedbb204bbb-d\nZ:Q196TkRS0t1F8w8LLg9le8jWBkl0A=\nR:2c261e0a89cb3759b7dee6c6b9f16d7cb7067e9da27920a9109b5c01942900e5-d\nZ:Q1FZ9wbXre+qEkllT0v+oIEWnpRdc=\nR:2c337994a1afb54ba80e756f86d55a1e028f596879fed584b29d45427d433815-a\nZ:Q1ZpHwpUWLen8CAR1G7vaALEu4KSE=\nR:2c392be46b12b4c7ee679bceb7e2d2b17dc721e4edf2566f90468068ff37622d-d\nZ:Q1wvj072Y10/m+kPzKg4xwza75nWc=\nR:2c4111c3dc300dd86f4781b3e37abfac57196f96da554a0d6fee7d2af9d6a64d-d\nZ:Q1n3sAzbrl+TQbEuRfzr++T1JXEnI=\nR:2c51f62a9ef0726de3e4432b4e654d58e02c3a1d368d3e024a5f59cc04e2bf85-d\nZ:Q12McO3iAwaGejeCWotZEyyDU22FY=\nR:2c6beb386d3cbddb87a2301a91e051b7fa4f753fcb8d3e3bf39222035585051a-d\nZ:Q1PQp1nbqR2uvPaKWhbNWx/iHBGgA=\nR:2c71757fd615523270fb64a1adc417316c7778b8835983ad3eefd5fe32267d1f-a\nZ:Q1oa0MthJ6bGILRJvSecN6lPp6cSU=\nR:2c7d2c328fa4ac92d2d01aa990c9aec468e80f3362f32b692bc5ebed8b0a323c-a\nZ:Q1mRfsnt72NnX3Gh6tKxbyre7YVEo=\nR:2c8194ca4243e5ed442fd993127a56af1ebaf1555a1ab1c2e4ed4bb1768685e1-d\nZ:Q1G1RrdFiTA+rGv9YBqE3BvF9u4JU=\nR:2c98bdddbb17118af05642d40f2d6a43b6935ed1727cc2628def2ba52c19e90a-d\nZ:Q1V4j7loHB1/grzR3wQmnANmZVG5w=\nR:2c9a2243bcf8974253ec614a15f8d29172304138e40826abb3816dd6e3e02755-a\nZ:Q1Aq/5DNv0uTNpltFv/NggJwY9pSQ=\nR:2cac13465afad6cd25309c467576e57ce14b3e754799d935b982a57db840525b-a\nZ:Q151/9ObinfdJiIveBE0uV3sSqnKQ=\nR:2cebd9aabbb1ea2730916cb3d9fb8f87e6e168edde03382f2110a624231d6512-a\nZ:Q1rEaIYyUE4oKFZTG3TUUP++YCR0E=\nF:root/.cache/go-build/2d\nR:2d08f98726b715a7024fcc4df09c45acd374b87ec11d6e65415c7d425f6bb237-a\nZ:Q1U87e3gC0WLjT6ULDtUj9AnqpjWc=\nR:2d1c53662e11e83e639dad1c99ebf218a07fb6094f60fcc235efbe6d82a34574-a\nZ:Q1Mvg8smtFVCTqmUObTewCHw4NZVQ=\nR:2d58f0d95a428e437ae18e41e7fa354e3b3b48ee3d6bc05a8560a2c7fa9d92e6-a\nZ:Q1UmVAI7cGFy5YDDjFEuWBoC4rjlA=\nR:2d59cf38e974a0c7e9e3eeb07d3a53d94b4978d0c2faf37ddc1bdeafe20481ef-d\nZ:Q1rdeAQvOCEX/2yGo2fkn0hYFb4pQ=\nR:2d64a86a38e6db529cd29748441c185d1c84fd2e39ea427b3dd041c167ef666f-a\nZ:Q1B3g3u934Q9Hx96IczGrlrm9/Q54=\nR:2d689645f4dfc1e6277655f33b08ed41b34426c6ef61affa80bcd8506819ffb1-a\nZ:Q13NZUMwTNZqSFViTv/ejeCn6dN2M=\nR:2d726410704da6c0fd03e1ac60e45a8c3742580075bf3269ba81d56710ad9d9a-a\nZ:Q1HgW1MEg36Vvc6q6qNLkAMaNFGew=\nR:2d74001ceaea5d0ecd7e5897beac5f1b9ce80f2feb6fac7bc204e9cc1d64aad6-a\nZ:Q1X6jIM20DgaZTl/ZGIy9iOZD6pBo=\nR:2d767070323493c957f5de2a60b566bcd2dee63e87b69f5a1c7a501ff4ded775-a\nZ:Q1D5YAH1ql5Xu9X90didN7R9mPfbA=\nR:2d96556e355f2d41279ea448b5f8f846599cb42a79147a66803d80b4944c6f95-a\nZ:Q1a5PNx69v5q/XAsp6wbpGmHwUP4I=\nR:2d9eb3499fbf0149812d2c5d41b68f10b4784edab04744ae380dc90cd96e63b0-a\nZ:Q1fskRdJRj+zVefJSUznkNjL9j+/c=\nR:2da10e2fd9bef01a48dc05f09c16fd9156a0f02e011a37c303931c970580db6d-a\nZ:Q1a+118rn/DmMbs7CUtIHjDwNM6z4=\nR:2db32ce6bb1591982a3b11b16140f04104315abe4598570d433de974d54bcd7f-a\nZ:Q1Jb3vLwzGq21zmVlNaDYb7gteD6A=\nR:2dc49bd41486418c20e1916a77e6ec0c770865bb075b34dd8e9800b0b6955e80-d\nZ:Q1+2Gt+GqPzA4RpEyhDlx0tXqGY1E=\nF:root/.cache/go-build/2e\nR:2e00b0c02b88a05f37b9acc49771877a8ab32fb8f84690e2b26df8246e5b9a08-a\nZ:Q1OlhVw2hxTP00Nu/hYP2NfOUDHl0=\nR:2e06ce131895693abc68f594bf992d6a11abf055e329dc5620d475ecf47fe1a7-a\nZ:Q1IQFJm5+LgpCB9iF6qMxCvOlDZf8=\nR:2e1200969734ff3490d1522af7a4f172ab0d33afdcb22fe847ae3609235bce64-a\nZ:Q19Z5bdPGPPIrclkaWwDD5gCF7nuA=\nR:2e16cd116f976209e941357f8e3f4a29404f078af8df9d889a8a9ef780723a26-a\nZ:Q1+YQQr8DDM4MhcMiZY5ikXbZsHv8=\nR:2e2355d7a330bf987861d7f65af7262ff31a3d2066d5e692f0c617d59041d8ac-d\nZ:Q1ILC8/v9mb2mTBjJ9lSUJcIyIkxI=\nR:2e266f0b7e8db089c628b5761b5412a4b34fc9b9ea9c506b5346eec53e1a6f9f-a\nZ:Q1zzt7rU5WRXb/CC5S4t9tGezizS8=\nR:2e329a6dfa5172ef50ec7d060d9c64f20bae4fd87f1e5b724210b9a21ab65c51-a\nZ:Q1v8ZkVOF4sMLCp31Igrd8mvfgd/4=\nR:2e3726e91e5e0e626764524c85334605abbedd67ca3eecc62ae121e4cc15b6a1-a\nZ:Q1xIcmk2oDRBXbTkRNqakkF4Gxpvo=\nR:2e3c16d2e806133d185e402911e037d714be641f7227610770ab59fc7e1ba8e9-a\nZ:Q1c8+MQMBqm+9wp/EdmWZRey9Wd+0=\nR:2e4fa52c98a751697a7be17f94cd6a22ddd7f608dd98d3b1fc5d9eeff8ab9140-a\nZ:Q1yBsF16q/lFFYdrJFGSOsoykxgPg=\nR:2e574adbd3f3c091eead269e778b051c2d983eb56834dcfd0c72e0b05d8553f8-d\nZ:Q1iRZS47hUDJLlhDmUp8KeK9AAqwQ=\nR:2e6ff2d16d040443c6495c02b8e9e7ff1b0b0e68eb3f6402a60890ecf76f2244-d\nZ:Q1+2Mndx+2evSIN0z/Wd2WXQqpn9A=\nR:2e7e1dc39de702ce9a2cc34c6c702e54c3188d793bfb1ec8dc38653dd07d9e5d-d\nZ:Q1tDk64dKXM7tC2z4XDmk6wSe69Gs=\nR:2e81d4d03163628d971b9094dc4c4c283f2a2fe54beb2cb1c7664bf99a09637a-a\nZ:Q1rNyZ5j3VPVeRwBdv9PQMhDVb5IA=\nR:2e96cff0cef5d430cbe61ae7724a87745321636fa36890a03334a9f2b1276e6f-a\nZ:Q11/Jo2IA6qv6oPv2Qa37TUaw/qSw=\nR:2ec8090f371bad16e1cb04950d5aa1deaa919bddbcf063959186e6d0ca0df162-d\nZ:Q1Ic3o2owsSTwaZYjidaqcvX9RErM=\nR:2ee33cc10bbb22e11bad5d8cf2c7aa8469d7ce8e19f2942363520ed22c9c71b5-d\nZ:Q1lAeSeUklTAe1zkOVdk9GfQl23z8=\nR:2efcbfe6e989e75432d9ec1a31d363ddde749e62b4c406d0c7b2f2d8803d19c8-a\nZ:Q10SGfC3Djn7xV+aLWvt828Hu+k9Y=\nF:root/.cache/go-build/2f\nR:2f0a2b62849828862e852d919edf5007eaedde6991ac4fe159c1cf9069a88a20-d\nZ:Q1p0kqBPwTtUEvTedMbpidQLfV2tg=\nR:2f1d1babb76eb4911e3bb9879715be6742e0ad1870a73245b7731c73995cc795-d\nZ:Q19avIxSWzPtbGhqlnW1zsIeFsP8s=\nR:2f2e0ca3fa4d64b9b3d430e33240c815b6341da67982466ecdb3ef08df9b2fff-a\nZ:Q1NS8KijfHgVwQlOM2+f3MxyRXAE4=\nR:2f32e91769d0d055ff8de7fa91e4d9b5869c280f9ef9faddcba3c37e12f1bed2-a\nZ:Q1yb0fjI+A/Ub2s42ZmGEBORLF5OU=\nR:2f34c19aa751ace2d32420a842c7f07909a0faf68c8c865291ccb7202e1ebf49-d\nZ:Q1QUSJIf+rkzJ95PX1b6rGyiq2I/U=\nR:2f52bbcad7f48f13b96bbb5c5b5b3b997123b92dbcb4337b47f141bf63ce56f9-d\nZ:Q11u5hO5bYhzTimgmes8UwkkN1vyY=\nR:2f5dc9f131c1a06e2ed9615db4a6d978673d33a0a13a01b91fa9d413388a898a-a\nZ:Q1ddObO7M4mtlDfa8QgwgXkUfy6NM=\nR:2f62d507e56560c1de6edcec94a79c5278df410fed1a99ec31c46c3e1f2bd0b4-d\nZ:Q1W7kqpWOC/Ppm7yBa7cedhT4Q4l4=\nR:2f73fd8aaa1aa341874da11335e0385079fb4439aee1dd2ef8ff786b28c45ee9-a\nZ:Q1QGtCn7j5d2UM7xcMvLGW8uPCrmA=\nR:2f7a018f6d1e0863d7e8d87d00f8c86afc4fce4ed6055ad6b136e9010d4e353d-a\nZ:Q1JH5NKfRt/b8ZXcN7HxrDzI74e6M=\nR:2fa5b39aad0e7aec1d95ca3eb3f288521c1f73ea81c49c79d3e3eb0679e30be5-d\nZ:Q10GYDVsiqNDIdp0LzT+hlzoMoo5U=\nR:2faa6bd043172080fc956ace0afe522de09a3801e0f266a25426ecf04114ee82-a\nZ:Q1dTYljlxuKqLDRfbCaPOZeef0ADI=\nR:2fb02b2dcfbac608ae64a757e90422eef71f9dbcf85d3b9a662bfc40f4156673-a\nZ:Q1HMOUsoLeB1Q4xnW0HyhEf32mQVU=\nR:2fca96ed83effef478aeb6364f61cfdb630162c8642f260e3a182178f39a9202-a\nZ:Q13OkSjNyZZ76WqW0pHz31eOaokTY=\nR:2fce764b5779047cb8b646cc2895ce5e0fad3044147665494e972544cc82f235-a\nZ:Q1CrDH1Hn+Eg4MgVSrrze6C0opTyw=\nR:2fef57a3d05dd0ed1de4fd80c99566f9672eeb00e5e3300591ddbef30e672c32-a\nZ:Q1Vtoe4+vAwBo+sDLRWclDLrVghrM=\nF:root/.cache/go-build/30\nR:30079df0721f00c789030a179fa5e6764ec67fea783ecae8c650ddfd0609af73-a\nZ:Q1TPrbrnqyEHEUhzC5y7VUjGxNQDI=\nR:300a2c1fdffc58bfa7709c5e490f1d9dd50d5962d059e2736e84f3e390de072c-a\nZ:Q1YoAivIBRT0R8sHQF0JAVqvzBais=\nR:3010ea3b23d826d82d43ad929409287307b56b0d934a11499f2cd7a9e0b40f31-a\nZ:Q1AL5o2kIpG1WiZk46giiTtoENpOc=\nR:30333f6de800eb6fb5396383117ef1cbbb3e80dec5cea29810c4b033b61e83b5-a\nZ:Q1dcOIUJwONSCpChmQ8CgZk+noc1w=\nR:30365d35f79a7cc7d9aeae2d65cce2c9adc5731507487f90b261f6a82816febc-a\nZ:Q1MfL/yB/Xd18KesD8GD2K3/DJNbY=\nR:3040581b4732c42d334e5bb4835e4a5cfa47f2673b364c25ae96fb08d83c436d-d\nZ:Q1QT9SKX+5MGldsX+CsraY/6UHxqg=\nR:30483e4e50c0057b4d28b492f5c622dfa7ce2390233b9e610263ad0fa7f1d621-a\nZ:Q1jz1fQX21ewOdypML0MzqDg2QLOM=\nR:306c4dc976944babd705d0bc5cfaf25c460520e302db86cd1efe770c2e8ac83d-a\nZ:Q1hsSG791S5bDUnnHGMHQ9WeA7ItE=\nR:30810db80bf333dfe69136f5df0812ae0ed577df59dda868f5da503f2d170a8f-a\nZ:Q1hBkGQ1xilokGJ5YmJDqHc9kX2zM=\nR:3092affd4a0eff28571bbe9ab31bdf4589a341d0809dd27dd43b4b59df8d2edd-a\nZ:Q1HHVdSDabijo2hk2YFIHtEkVDaVw=\nR:30954cacd205d4f4d68ea3fad52802441e099f6109a32cd690b928953050f8c7-d\nZ:Q1mdYPfdIHXPjB1Af6cd0E/O7d8P4=\nR:309d9760f670d0ebffdca2860946495494d53406ada0df3002c202d032cfadef-a\nZ:Q1ftMxKXMY3W2RYiu8QDYZitZHbGs=\nR:30a01d2b4b6f9f9ce4758799025b8dc151a5f1f88158a446ddb9620ee8178bc8-a\nZ:Q1fu5iGkGMFeq1HjbKkTwnjJ2s6LM=\nR:30aba8eeb932a2cecafb4046e98b1d1a68f74ce147cfb38eba34aecca02f2d88-a\nZ:Q1B8bw9zPpIeUp7Tc64mZskdMZk3o=\nR:30b196c539f077f04c8fa463ac846581b8276bc9754a55c837f720d75570784a-a\nZ:Q10RWj3Md0U4Sl6AS0UnS1E1spFMo=\nR:30b9b513db2c24714cfa83795984c53d1ac64086afd378cd25ef754bf507d3d1-d\nZ:Q17kKC55d4z+1xB+Oxv9tTRM13kIU=\nR:30d8db6f165c2b691077c1cc39a4b0178ab2aa541d886d5ead599e60ac7606dc-a\nZ:Q1qSI4PAH+e9hLdrJ/PG8R9rZH+kE=\nR:30dba7fe3c2a5fb303c72baebc990556b5bd82f69a09f57ff17a5d08868b0ab1-a\nZ:Q151+zeRHbNACbFjX34Y242VQKGX4=\nR:30dec2380b0ed9bc8349ec6f07c17a4e0df8af611e8487aeb09705c780ea901e-d\nZ:Q1EzsjKQZbLU5zEL+lSdkscS6jdb4=\nR:30e3b6184a64345f4403bee84ea3a5061669a196809833eba252ce04ed41cd58-d\nZ:Q1Ao0ZPHeaV+j/R8BhD+Mj8JTI6uk=\nR:30f825448a83028e4eea5e92d97407d26883c19ecb567a4299054bf3bf8d52f1-d\nZ:Q140O+xT9XBFUBn81MRcgabrVRZy4=\nF:root/.cache/go-build/31\nR:31068f222124eed3c621209b415f05458f506137e334d6fae708eea0865c79a5-a\nZ:Q1sH9dpVPMCR20anGwIFfClHgTC8I=\nR:311b63e3ad42df4e427e6eb45e76bbe0a1c21545a8ce6504fcdae94a8b712446-d\nZ:Q1kzJktawBjRcLmhp703Bf5aGUkBI=\nR:312773df7c5a32eacf4a69dd7466fb99a631698430d94ad48faab149ecc130dd-a\nZ:Q1JhlFW1zA5hvrmiyvtfCQcg+Kisc=\nR:3128d164561e8ee80caec55c5dc030bcec863d60b216352b993fc82d841825fe-a\nZ:Q1IRcXotrnfcjOzAH2cmbe79UzaYs=\nR:31304c5198a97c84a002b977ed3d396cea543d2095776ea250d6cacb3aa0e2d0-a\nZ:Q1H9Q8o082sQ0FvDkohc7lTxTkKLU=\nR:313087aadd89e596804ac10514390ae1a5c735bfff3518e19ce24fa277997ea6-d\nZ:Q1FM6QfIkawJmH93w6a9eF6rmDFS8=\nR:313883baff385eb2813a1e9a53a8dbfaadb942b1ae9ee3ee1cd915a00486e7c7-d\nZ:Q14elbzgmdx70SJzitK05GzWeyNDU=\nR:3155256bd38fb1df07c90364f641b60010ffab921892ca32e9cef247caea53d7-a\nZ:Q1JKbpmoE+xIFF/52PMTUzUhrMDsg=\nR:315a58c1a524e2ff3a894264b37df904c9cbefbfe81a21deafeef85297803c71-a\nZ:Q1Kt8N4bp6vMpwuVAEmdiDyN8Cjhs=\nR:3166f89019e113f88647a3f7c9f3fcff8c29d2c03cd9de85701424dd184e048c-a\nZ:Q1tWTQ4uug7Xd//dkTrlYoZNYAISE=\nR:316e578a0c413fe8f48b3f3a2e740b9ad36434e509f01cff7db34ec124398fdf-a\nZ:Q1oGqXLJQzlXd3tCmXgvslzEut2dQ=\nR:31793375459a7150c3fdab8cfbf7c6bb6bb0a32e14a5d99dfe3409aab6c1447c-d\nZ:Q1Z5es4uFdbe1y6mT7MhR0maKfmlE=\nR:3180be6c3b7b566573914d01aa89db5564d06846f346b66f9091ea04b24a7aea-d\nZ:Q1qP0by6Whu/enmgYgXfn9jAr0iWI=\nR:3185a2341e699721b82e6794154c714cc3a1c3675f64fa5c6db823167080f4c2-d\nZ:Q1C6SinZvVLoumMMTq3S4Mxmzv2+w=\nR:3193b02aa1da2bd2a7fe111822051cbdd7629c748808627ab68a95632b1ee4b2-a\nZ:Q1i/egq9Vzn87EexvR/PNjI9ipNPo=\nR:3194a0be8ee49475d0b775949be20e556a5cbd04c6b48bb3ab4550da6c3fce05-a\nZ:Q14Dl3Abu20oyH0Ym4/+zo8NThni8=\nR:3196324329906cef579c735228198a0bcbdcdb2c2975b4f40c180c9d944499fa-d\nZ:Q1YOnhrSmGF3Nrnoyquim9N6qot9o=\nR:319b0649f6468d1c8b0e9d3e0bccc7d44d98bfb81fcbc2e6d1cdcf038202b13b-a\nZ:Q1lUoCjf0Mlfe4ZNE1r9ytGuze4+w=\nR:31a52eb83767a6299083380e02ec959707072690872a72f030c11e590d3db432-a\nZ:Q1ESM0dk8XMAAqTMp+iu0OM/zr5y8=\nR:31bdb2bf1ce82cd3db8d86241b009367ffb78ddff4fe0f7bd45792332487276a-d\nZ:Q1ieketp0KjYPbO0h+g6l276BCTZA=\nR:31c306b754489db70cc25af75e7a3c1234f25fa4dee80b1dc8bf0f947b5a7c01-a\nZ:Q18p6jNDQjdX7Kj8DZuVGWECQ/pHE=\nR:31c92a678ef88a7491079a7932b6e7004e9d2a76e849c9044c86729adedfcfd0-a\nZ:Q1hTYn9AsRvQ13YgxK7u12t+gSjko=\nR:31db362de3b757593147ee4635cb69cfa1e7d7c7e25bb51457a78ded47759b68-a\nZ:Q1svIxX0zv1lpbGKmhfYysbX2hlGI=\nR:31e3e64f2f599b124dfa4f6d7543f8d7b874f086b13ef78a67610928b25e9881-a\nZ:Q1y7mTn5HS8w9WdMBYiuYpxHRQ4t0=\nR:31ef542f510e8b9dbf0a4286e9444141d6103e3dfc37d1c8f146569fde7ae066-d\nZ:Q1OsqzH56sp7TmuDfoSeRBIxqOYhw=\nF:root/.cache/go-build/32\nR:3208c406d38d2085b4fd1042c3bf8904d000441ca75069f61e5b39ce5e2171c6-a\nZ:Q1O0hAJXBAkrOu3MlSeT1p/rPPe0s=\nR:320995d8ec6c8d41922ab8f2d71308e1662321e950133ae1c738669b41d45808-d\nZ:Q14Z0PzUJARVPmovC0EZFHrevgvUM=\nR:3210019ba8efb929c73cef1e0a445c3a1cff7ebd57927dca1139eaf9f3673fd3-d\nZ:Q1meWzv+HzgjRijTBvFQsZNp39Wt8=\nR:322c0775dc243ab05e82111c9cad009aff9e8b9f019c30bde1c9b51179f26754-a\nZ:Q15WtRPIH+9KKKRtKYtJBLOyszzsE=\nR:323e69f6f1c22bbc2c0877a47e6d5e3e7466ac981c5219b8046086e320dd15cf-d\nZ:Q1P1xUuZ8Ltu9GYkjkr+jGpn5ueQw=\nR:327b7a3479a769215c1f17d3130eebaba7c6fe4ecd0f16bb42a8f54816533815-d\nZ:Q1TzoP+S6XXMXtjKQLmXbHYGIra20=\nR:329e74f41aa9d493509edc81a9ac7df989c02b07d1e56a09e987cfca75798a07-a\nZ:Q1m8uqxIJ4b4AITLzSyTeUpAHhscA=\nR:32ab264c0baeefbd49739c7a7f4a2139f102f89f7d9050a94a53711d3f24f8ce-a\nZ:Q1iHJbkSOk2ZaGRUz+i1+5Et9GSJA=\nR:32cbc2a4dc1b14a31e8e545d8d7d0661c86f7f37c2262d3bcdd6ef99801b50b2-a\nZ:Q1ZA4YTfVE20Zg1eIsBLw9lanpIhc=\nR:32daed4f918a720a1f54a4f05839ddcbc9918d6fb278c44f6f2a1ab95ce19ff8-a\nZ:Q1AHAqtVB/qQ3gwgwguxKLQZ3fVJc=\nR:32ec4ca98080fc54aeecc40a0f72614681e5b340a1c56b1172725e5ea252706c-a\nZ:Q1KblU73oYogRjXBjLs7t6V28tPjk=\nR:32f1f299faa6edf98a2ad0c413293256b68893dfdc318e3f68036f48d7544ca3-d\nZ:Q1bPLZBGa6//VzBio6o45SxrchqWc=\nF:root/.cache/go-build/33\nR:330dcc36081137dbda7a805d4162d79b17f5ba4699e53a3015a8679ad393181f-a\nZ:Q1G2IowusSceWsLvljTdFpsIJVoNM=\nR:332dd9e4a7254e92fc2a81bae333da94f09b85c96ecaabf0411c80fc75ddb267-d\nZ:Q1S6anNU/Fd84J0fXRsJfMtIP/PD0=\nR:3367d98b51f183599179cee7d07c6f2a8ea3dddae839ccade458890a22dc4a78-d\nZ:Q1nhwfyObAdPscPELX5EhI+9HdH8o=\nR:337812d1c914d090e217558257402b11e38e77b4ba639abb6d6d811f3ddcf074-a\nZ:Q1e6xBYXqMWsgF83t3hYUFtxJ9neQ=\nR:338bed166aebe44d11023af43b982af3060d984b379f673d8130408cfe8acb14-d\nZ:Q1w3OV9oSLEF93didBRwiRb1LHYCQ=\nR:339f0fc34e304018d08cde775d64094020c66eea83896dd3f499771f1861e6b6-a\nZ:Q1ABm86wuBe2Y/j8vNJSiRmxiwLrU=\nR:33b7001a4ba53e295bd5cb2ff32ee5d2335519748cbcb4f5298e8ea9962c11f7-d\nZ:Q1TXhfSPsY3/gPT6tIXVFROpSDRG8=\nR:33cddfdd063986ec016617202e4ce81599e1b4e20fb38cbc33e87a0c222ced21-a\nZ:Q1A5MZgt4wnUiUlwrq3BMunwbflBg=\nR:33d50733504efc5574120a14524b920b77196dd39c56e4916ab93efd8734aeae-d\nZ:Q1m00IFSaAoowbM7Bi8KKWb1CUr4w=\nR:33ddf8c53f326d60324ffc8b6edddc71c21dac550e8f3376a1e3020fbb6551e6-a\nZ:Q1Qvd6XKu3+E8nSaa9XlvlXHMBDPM=\nR:33e63113c2688cb06fe59622347f699660fb2634637f6b69483eaf599e8bf188-a\nZ:Q1VwZstKF815kIpH8ZIKAZdyovcB8=\nF:root/.cache/go-build/34\nR:340df1fc205fc2142307196513a8f2dfdf80044dd3e113b16a540a70aea09cea-a\nZ:Q115zfgADy0ookM9VfaSr7F3MHL7U=\nR:3413acee9b5a68e52c1b68bfa828d5c740beccfeafced3a7bbfed86f6d93e4cb-a\nZ:Q1vi9E09FoP0M6ZnecclIRWCAnsfk=\nR:341b4c64542eaec82059d5d7e1adb3fa68500485f687d0800f7033406c4a00a2-a\nZ:Q14bHnQHmH/ckMdhTD7wF8hdufo5I=\nR:3425e21ff74bf4f98ddf4917507426e52c0ff3dfa5864a8452d43bcfa978567a-a\nZ:Q1VmBi08Bg0Me1SDoaV0R2A2ln92E=\nR:343567cd8d88fc6c2ca37283d662df5b362657326dcae9c8674f1adf2d2933c8-a\nZ:Q1eKvCVcH3YKHHKJulpIRsEj7gY5o=\nR:34462d559c8926abb5427f1fc15d25dbc2a553e78478afe2bc8b7142972c99dd-d\nZ:Q1mBgga/bD7o8kRw4XcijyTLfKpwg=\nR:3460ba677447ea27e840be98ab47362fe4e54d251b8dd2908a6267ca684b13f6-d\nZ:Q1UmX2QL0gk8M1VXZjkErBAv/dCEw=\nR:346a917ee3eeb561969a33fc034f308354428b8375138eb801d391f50d34384b-d\nZ:Q1FpPhK3PLf6c0xTkxoofypq2U1Fo=\nR:346b1cc8ee4db29d5ef2ff89cf4a7e08acc6ffb3e10cec89a2c14b21aecef9a0-a\nZ:Q1HXUmUuDVOeoXR24JHNWVGxrJtHo=\nR:346f75b82341c552d2be661ad40919b21062222b879f7fd216207df33f5510be-a\nZ:Q1h7v+83y4dxw/z3QN0RfHHRyl2Qc=\nR:347f80e1af77976c290394d12ae3108a1fc65bcb84e36e09a78070e5a2ba61e1-a\nZ:Q1+jgIk6C4zEaJpGqkJ0QpZ7vkPu0=\nR:3491a9f6205287b715f4bad54bef4934d9837813a80d7815041e590027ab86e5-d\nZ:Q12anMaxcu024jy5YMERc/9KLsA0c=\nR:349264f936629675b8e877b3062ac930826024d2dcfb5cb4cd6b5cf70d1a6405-a\nZ:Q1NhYscHRtCqIduDaXfBs4mSQ6+Xs=\nR:3493dc67052bdee0c76c9f42b43bebe5648a44cb591bebea06374eac39cfcff1-a\nZ:Q1QG2ec9C3XpCr2Giv7OljgKA7zHo=\nR:349cdcda26ffe455e2c8f00d0ffae461a0265348e0dd263332b4b08bce7a1b3e-a\nZ:Q1EHmmyNrXCSbZSGmx3ryeuB0jwoU=\nR:34ad3e5f669bf3e81c53d6c2b794aa9feacbf1f024f7b454dbef953a72c6b754-d\nZ:Q1lD5pIaqBCMIWJ8CkX0S1Rfs9ge4=\nR:34b5514b284db2536155220fbda27fee27df0d664076e2a47bb604cbcfbbe1bd-a\nZ:Q1rgl2Xny9nlg2qhNnnYy/QbIIaP8=\nR:34b5aaa051ce1fc0903ef06773bf391da823822d7ed2a5f3ccae22904ec7ef1b-d\nZ:Q10/AcAYqsajTydSZHxjjEIslreLo=\nR:34c53358492ea9a7a0441505b779e1e65c9b65147d2d9a0f7edb1552b3fdb0c1-a\nZ:Q1OoBbTf0sFamBBhbCvTwNIlM3CfE=\nR:34d92f2c151e219ed388a18175a9021de25947230c4d9871a0e51a2a67f8afed-d\nZ:Q1sH1KCqOwnJJEPZZuIHXkIjNxEw0=\nR:34db334914bf2609258641776b8e0d87b3083bf8a8e23e38129a900a1a97d776-a\nZ:Q1YJO9jPUK7i953BDMXKRi43mv1Jw=\nF:root/.cache/go-build/35\nR:350d23c767bf2aa19078b9f1f354f11b2f1a7b911a28f7b18ecc1bde0060fef2-a\nZ:Q1zSLjwB0lwtkjW60JyuliSrsDIqo=\nR:35213234e0170714ce296b3bc6cfa54eef535a4e9118e629f293bf7f3c412fa6-d\nZ:Q1TadwkPeLUl4j/E8vXIkykZ5PJWo=\nR:3527d8c62bbae4894d17ac0bc60273223216f61f86508803bb88ebe294569d4e-d\nZ:Q1JxG5RoKK51D2qU4feE3tD/9QCp0=\nR:35310ab6581a49b329d66b9ba097929a864bdd7928259a851697a09c7938b1de-a\nZ:Q17y/uVcLDjVgo5DwXogca8dvr0ck=\nR:353b4c2f77afd0ee9f31b9e01d7170138f49bb01122f66764627abd0017d478c-a\nZ:Q1euebLGcXiTKISzAaGudWzJVReVI=\nR:354981b15aed9a503aecafc27cbd2526e946d29137f2ff17d319621ccbc1602e-a\nZ:Q1/0BGdxx9eQZASHC1pPTNhHQdVQ4=\nR:3557d9f40682ab0a42217250ac431a9a1546773a14a371c003e6e0f2c0fd4c03-d\nZ:Q1dkvMXawr/Uir3saUncXYo7APkac=\nR:35612642adfb87f5fc81dcc4f8c86ac5c0833eab4ba482e19ceeccdfa101c4a3-a\nZ:Q1BwID/FCuyB2q0N7VAU4vlB/Fzew=\nR:3564401d60b7401dd4046956ea936cbc709f40b8ee78a130895dade5a861c1e3-d\nZ:Q1iQzxcXoi8nEBmYBxzasGbIVFSNw=\nR:3579def1fd9da8c4118313a0959376b25844010389354e07b758a1e93b0da356-d\nZ:Q16/SSc+bes0aUTMPNhQEcRhO0n90=\nR:3585e72c628a5f7314faa766a255f4ff0342ea6c7c25e700e9243361597874f3-a\nZ:Q1XT3NHbR2tIVYphA7SFoSY2qR3uU=\nR:359c375785e432b5d9b108cb23e4652ed42d118f1cdf179162a140c23398f838-a\nZ:Q1mBl8GZcHnWIGBUTOWJO628G6VMg=\nR:35a053750acf88bed079d7b7b00ca688dcf488f3a513494c3b8d564eb0da9fed-d\nZ:Q1YFeflmX3aAfhTs1dFTGmglJXFf0=\nR:35a128e2df850226ac8267feceae8b64dbb4ae18bbcd8c735c6b405b371292ef-a\nZ:Q1mfg0ZvIT2Ov6cASInaatjqWDljQ=\nR:35a1306a3f3867fd85a3377d266db19f556001b7a25d1fa0c5a029e42ebba635-a\nZ:Q1TYERa308icvsz0hlaXN0h1JyXgI=\nR:35afe0cf21b18f4a0cfd06ad0a655f285477fe6b3197b7ed784f3fb730cfd0c6-d\nZ:Q1HlSAupZhjIg0vGzsfZ4JM/WTr9U=\nR:35bbcc27ed328afd9144f6b079e33b1bd10ee74a2e8790cc780dd8a078f82ba9-a\nZ:Q16G2IB6MADt6RPZUCrVj/RlT7dko=\nR:35ed1c8859d867eb4cdd54773eed3ba36b2500294b3e9b8be806fc16fcd3cb98-d\nZ:Q1SY+h5kL4SHxGejAysl70AS7pb74=\nF:root/.cache/go-build/36\nR:361d03ce0fa5ba2c337d8e8d021168fa2dbb8802f8ee8e27dfc34b3332269795-a\nZ:Q1zZQFreDhBcgv+NF3X1RtEOMS1G4=\nR:366c0dafa2d7419230865a2dfca3ccef9b2167f244f1c760493bd7161fa29f28-a\nZ:Q1p3iJ3w2xtvga429XOsJo2snI+60=\nR:3677b26153f538e965856c39dc511ec3d498c5b44c8186037f73f80864b28630-d\nZ:Q1lmrjWHx6V9Aqho2YlOG2Y1O9I1g=\nR:3694d85073a8341da7a24485fb640def53c278080db4f2a41a34f423a5061cc3-a\nZ:Q1YCuViVUPAXxjL+gd+Yr1Pv42n2Q=\nR:36d3e7daf4a150685283ba50773d07f4c357bf49c6d1c3365d1d86c0f170e28d-a\nZ:Q1SwJVaXImLpTu/udNH9QccZlfgfk=\nR:36ef82fbb01ea128334ec6fc2515fe7403af701142b340c0577ab39efa7a7ffc-d\nZ:Q1aipI20SjRtTu/Snzpt3wR7wp1Uc=\nR:36f185b0e318c348d156d84c0e39d9698f3919e0994c8605cbce03b18da55e34-a\nZ:Q1AU8IWxEYIceKo8Nw1RX0R3M2c20=\nF:root/.cache/go-build/37\nR:3700d86c0949ccd9bd5f13a5f3eeeecd7dc1ef4dc1d942c75828509acb6b7195-a\nZ:Q1jrdBu/Q0B5e8HY7642hTLcANccc=\nR:37062ce43993ebfcd7a0821d60d072c67b18dce43c3c174eddb67d153669bb64-d\nZ:Q1igTv8uABNez+xDKL4mnEcm99CUw=\nR:37244f55d943145aaac3a9b4989b9e1366f9d07901914ceaad23dddffdd0221b-a\nZ:Q19pL8F/OQjGxSerjOMSiVQ/7yHTw=\nR:37370e90335a57d1670e82bfcf1be9374a9fa8ca10481479e18318cd74fe750d-a\nZ:Q1VUTurtq0DefqsUApZp8ohlopx+k=\nR:375d27cd59583b62c53128690b1a78df491fc61eba98b258f7f886ca72999889-a\nZ:Q1O5PjtmVBYVVo2Iai9V4ECjYFYJ4=\nR:376614ed15d1d1ef1e4953e462a27379f86075cdc608606b1e2964ca9416575b-a\nZ:Q1a3DbfHBa08z1pUkie1p+xOaA4xw=\nR:378c721700ea7c8b04e0e7959189db839ba883e8f510682204011947d36acb79-a\nZ:Q1clm2vwRbj15QCn+WMBt3c9P/knQ=\nR:378e1b0d9c10627584374997544e126814dec7d44fa8f9f8376a2a82021336ba-a\nZ:Q1htvByZnyJQdeERf4OLrtMHrGjj4=\nR:379b1ce83773cbfb54730125a49d478763a793df54145259f59c9e2d9f5f86ba-a\nZ:Q1C7WiV2bttaVqjPQJr2rZtD5KaBo=\nR:37aadeabac3d2215bb84742f62aac9e9a15bc134597fb1301742faae7c87ab81-a\nZ:Q1ssFcDj0glW2alDpekbZpw6lg76c=\nR:37bd54bd7c3aafe5bba81b24b025cefa4610776ab44aa2006ee49e5d6fc6ca49-a\nZ:Q1GlFDOu21FRTkKFq7OuC4+8qh20Y=\nR:37c12ed7a96f2a1f677a5f60dd3f9cf57e95ffebf7ddba2d1a99f414c5be494e-a\nZ:Q1RfCE3hM9KjGKMQdQCFabPpYikbw=\nR:37d56952f62abe779fdaa70dcf43cbf899b64bcd81f9177df0fa53e214c3a203-a\nZ:Q1BOa19uQSv43jS4btb6uLS9RXKXk=\nR:37d89dd7ec4a3fe144c979289859fea947895e55d14121a98a82783896113026-a\nZ:Q1R9287lf7JY/VNxrvNgIi91PBTAc=\nR:37eb24ad2cd6691f28f124fa441268e059774f12afc0e47c5f26ca8b8b0844c0-d\nZ:Q19o4UbmIHzPZMdCM+Ym6lSfzMM+w=\nF:root/.cache/go-build/38\nR:38067c2fa8045a396fbade92dba314bd12437f7cc41457387608896b6a28223e-a\nZ:Q13GmwcKzoCbitpMrHx+Otn17U+qw=\nR:380a513471ebc94109b0eaadca5e636bdbfe50a9c974da601af3523516717e00-a\nZ:Q1DfCT3mU5jl8Df1v2MBuGElgIw+s=\nR:38203312f6b12ff201c54838d9df4e05f1a1740a4992966934638f89a3b9b5de-d\nZ:Q1RDb+mBNAlETI0T8fIZxQ+1upqOw=\nR:382382c637ae6147df9808a6c0b4717901bdb5df26c15743581ff81963386be1-a\nZ:Q1BqgEP0m+dRUFg6/NXPXF0IjY1oo=\nR:3828827ef109f68ebc3095e178da4af9c4114a9572c988c13cec1d510c0c7c4f-a\nZ:Q1S6gYy2c2d894PS1iKuNYP4WcJmY=\nR:383abf5e26005257cb39c37ef3eb0d4f85a30998578ad17304b323e260b65c65-d\nZ:Q19rSkONhYPZDpSmi3CYnLBoMl0Q4=\nR:38496a20c539c8dc7abc30de0a811182facc227c6cda855d8f5c51ac91cb0ea4-a\nZ:Q1ucssnAOKgCKM3bx8NcENrmMapnE=\nR:384a09814bcf0621ae4989f6d6d98c4cdc02f62d46249fed3e5f5ad6f588fadb-d\nZ:Q18kZ4yA7VWDgmMOypYI/DFeBzGXw=\nR:3852b5855200efbe8bb13c975d62590519b64d1f7cd81c358b245ecaf71e54af-a\nZ:Q18LnYcbvWXPxsySAXiuXVkL+xMq8=\nR:3852fa0b1c29904dfefd6b7b0bfdafcdd36cbda0e0660fea47ab154ff87aef27-a\nZ:Q15kF9M+7NVSuwe2vFrGriDC+Rj3A=\nR:385f204299a1d066a50435a5e6ba8a0570dcc4bc770bb2878a3e7332d6713a6b-a\nZ:Q1ZMOyviGov+O0G12PwIWV868AizY=\nR:3864011dba8de2aa9a16c1425ea485464e4e8c13f7c4688659e2f73cd23d4122-d\nZ:Q1SnuJsQARF+N5owhcTZlIJdqimgo=\nR:3871b72bee3b173dc3178486d0f29e9f950378e032ae2ca820d29a4ff79476be-a\nZ:Q1lApuhyg/27zwZVpPVRjx1S8JvrE=\nR:387511001f65b82cb78ca3ecf0a4543b8d76ad13d6f2ff15e3fd9b874172f55a-d\nZ:Q1aSDKUnco9aiV6bWtZQKiuVlx2ko=\nR:387f0ae1269b243678a9805d7f461beefd570c08d651b189edb2b9ea8adfdc77-a\nZ:Q1fMkquut7A8C/E8GPZZttIJ8NMh4=\nR:388867e2543d15824187be35984db2bf800b2972c63b3e387bda017a3759cba2-a\nZ:Q1al1NQF8oOPJrpPKlDfbVIuxapwA=\nR:3888c23b9ac4292a57baf46aeadc5b502cfe3d9a2d15909d8909c71718da7ad4-a\nZ:Q1X1lsaHA3JBuOhuMGHpv65etoJAg=\nR:38a6bc2c3924862051232be1af7d62d643c94a2c1d740f81e4e89e5697760bc8-a\nZ:Q1FY0S3U3mXuPvJQ8kemJmV+rZynM=\nR:38a8ae421aea05b6413603a244653d9478a74dc33bca488384c6fd172b174e1b-a\nZ:Q15lm5uJfk+dk7UhS1o9wVQU04uRI=\nR:38aec166ef29be97ebe505d89855fb3d30bac479377de8dd393cc478133955e1-d\nZ:Q1oNC78E+GXzDWhkY/4Uaf8iPImUc=\nR:38c6055b9c4ac7d0ee759a31de99cbd99318c3af1ea1a8476ab28ea5ec0c0087-a\nZ:Q18TI4axUs2EBrtfubDJUJfh+DdBQ=\nR:38e1de2e4c5f54956462d3e72bdb6da5ae64be6716b168db83483ef1d716f9bf-d\nZ:Q1I5bZ4up1PBtr1pMg5JVbopoPN4g=\nR:38fe21cd9a63d44cb5c4e2d83e2092fa23ba2043c619bba2758ac357e8ee48b5-a\nZ:Q1IqZC40qRShv5myVKLtchW3+4X7g=\nF:root/.cache/go-build/39\nR:392a1905365f542f30d15a238626ea86561d2cfcd3d2fbe8844f7ffbde013bf8-a\nZ:Q15cgIMXI0mDm7MREddW4aoqpXyis=\nR:396d55df2df32f7170985977c2819305f4827175eb770c310639d7aaf4ee0e0c-a\nZ:Q1VJseVYR2E3yblCXqubNiHEwpz5A=\nR:3973b6dba9e71bf60119781900f774f137d0a313ebdc825f973d466c23a24d04-a\nZ:Q1WLf4VCTkFtGHcadHajKeS2VRXxg=\nR:397a7c084c31b3a159557b2d546b26ff319e8065fbfa6097e3f1a365f04702be-d\nZ:Q1AAk0joL6UdlQeQLNxhA10IXqQYA=\nR:3991d7e515c4204460c5b906644c3cdac2fbe79a20229186275d13b1e53b0f18-a\nZ:Q1nf/nm96CVwrgKevrfvDyi326Xl4=\nR:399928654b3bba5d10a265eeb9ee40b9721f9615435fdc2da4cd3ead7f933951-a\nZ:Q1goOYfHmDMZj7rFkOsycUWEOb3YI=\nR:39aca1827f6df8b721160a0a959a48f6f7121bfa8182348a5b9c439769be1308-a\nZ:Q1zmiM+Y/VeMo6CLWqKBugU5f/Q68=\nR:39c5c1946977943ce9ae0fabc1fb37380052bbef94551dedb29e738df4bf3e89-a\nZ:Q1loe1hYo9g3lai1V4I+J5B3e4IDA=\nR:39e34e783ee73fee2322fc3f3caaaec539385eeaa2e31942cd8e29eaf85c6f52-a\nZ:Q1CN6wSKDdyQA6i7NrGWC3b560Rw4=\nR:39f55ed0b877f72c9fff8c210ac0e1494c368c1fcec7ea821678a8579b0a1411-a\nZ:Q1JN8UUHxmAC1cyRaejisoRVputi4=\nF:root/.cache/go-build/3a\nR:3a01dbf6197854886b37ef940af741f3c061a398fcd39ef08b160416c61c7877-a\nZ:Q14rTXIE5U2yjhKtNf25UgGs/TSzQ=\nR:3a245bc62cddfdbb34089b813633f4731e4a7e5dbdb9e91501f8ed9fcc7f581d-a\nZ:Q1b5yqmScBcXK4mtoMM9xipx57Fos=\nR:3a3922cf06d4b1c9d3436ae40e90e3acef6faa1024d86704d85f9b942cc4bad5-a\nZ:Q1LUEniy+F9Z9Pcuymp6RNZgbLDak=\nR:3a411ee1e0b0c7f07adcac5e90f60841fc3500aa6c57ff3573510fd67a5b0a04-a\nZ:Q1hr6tGNl+GjepG8PBoH94Mztwcnc=\nR:3a4ceedb1858a0603e7f63629fe41613da211dcfdb7ac82a07b376ee8409b439-d\nZ:Q1f+puSa++PyUNNPLEDHj4X2FSUQ8=\nR:3a540c9ad6df3e6d29826079ac3038ddbac55bd3eb6b8c6c9d46bf69fa1bbb9a-d\nZ:Q1V8v2sKYOWlZlAuwyuPLB6i1k6TE=\nR:3a55b1f33dfc3f26db46191031e41025913f833485a7a4d3c835108e1f0df854-d\nZ:Q1LD8JrGwCKGOcust44uKp5OW/JG0=\nR:3a65a42dab5faacb13b5f0ff7546fd2cc1b8fc4958221f17180a40eb2aafce1a-d\nZ:Q1uvo3tMLu/aeo3IaGssCl19i41s0=\nR:3a65e338f0ad7afeaa56813b108106c0071be93a3b877d34d830613a9cb28d16-d\nZ:Q10id8YfW15tLIsZxVAuGfvBzHVIY=\nR:3a6606265f28cb912ceff41a9906a58763280c66191076a123e23f99bd732ef9-a\nZ:Q1vBAjLAKdmrLp706yBlL0fYp1WuQ=\nR:3a75be9716735bb6f44849ed493bc4eaa089018731cf4100153309ce352809fa-a\nZ:Q19WVWYhawu1Jx+reNOygbPrH6znw=\nR:3aa394966439e4079cfbd268ca94852cb0baa0ae7a47407dcf7c6f9a1e630dc5-a\nZ:Q19lvjQjaOlqU7QXTKvjRcOhX4p9c=\nR:3ab5a24716a3548783de3476a9ecc0a7ccd64aa50e7f4e5d11acb74ca4053955-a\nZ:Q11drZ3xVGlCIvaYQe0h7b4XkqLQ4=\nR:3ac030a2794ebb6e519dee37dbd9acdf0b85a98f7f9cfd20d21765e861b0af04-a\nZ:Q1DdO2TSeTFMR3JgDT6dgkYhLvcOo=\nR:3ac788c5386c06ef6c887885584b7e4149ace8343ba2959be6ee937a61eb461d-a\nZ:Q1dSdyrTtpj/6oJMS23oldCsMFDPY=\nR:3ad580518dedc0df3301ab524f12aa00c6c33d3898f2da3cf75381b61203fa24-a\nZ:Q1ZW64h21ReOfCIBvqz/Mv3MRavfA=\nR:3adfa9273ba3ed9dd14d327929776ee183c9d89e08b555386322d92e04772170-d\nZ:Q1OBPlSRxjQt8CmGfFF/gtseSdfAc=\nR:3ae2e0fe5320ca39bc7b494ab9944e7017cf87c975b20774f088cada654b7654-d\nZ:Q1SEEaMsowVnf+qnn/g5UrjxgqXdM=\nR:3ae62523024f45c5acd83a91d08de8bcbe3ee2e9bec3ec19b563cfb96d7870da-a\nZ:Q1/Qn2MhmXQSm+Y/wFZ1mSemdMKyo=\nR:3aff66f028df386ac121c32324626cf1faf977159d9bf0436f3236b7ba9c3283-d\nZ:Q1Di5rLlwCQCERaSSH/76MDdtkCyk=\nF:root/.cache/go-build/3b\nR:3b30213b6e9113c73be3de54a19dec085a1d145413c445be3ad2eaf429156ade-d\nZ:Q1OJaF+EzSt+RRVbPhP7X01PFll8I=\nR:3b34ed15be0715db75b09ad1fa7cfc35ba9658b780aacc3c2c0456bcfcd026c1-a\nZ:Q1fFSjVO0gHVNMAUwxuRkHdM03aZg=\nR:3b42bff66c471a66a4d945f54a000597be8f7a0ec920934a6eeda8ea9132d80e-a\nZ:Q1Jq1oT7ndFhbI+cyvmckeWqCUG7s=\nR:3b5300068e1bcbf174e389ea5aaa3e57cf71fe8fe2eba05c7c0a721fc3f317fd-a\nZ:Q1al9hNB4aOoQJp1aZ18HtNG9DUPQ=\nR:3b5ab28ff8de7b5aaf33ad9fec1e99e3ffd315db5eb42017ed74f50e3662a812-a\nZ:Q13ODA1p/ZLyYtULt9i5XJaD6pAYY=\nR:3b5b24c05d42ebbf1505a299faa5a0f013d9dfb06766ca0b0083622c5fc21068-d\nZ:Q1ke8iA7ZI7BefXSdHqJ38pXj542M=\nR:3b5c19184091c6563123b5800ad8fcb37942c773ee872fbf7b92ca296023fad7-d\nZ:Q1uj6tpNj9nvPpiFm7MtQ6368fp8c=\nR:3b61028b3e6a0ca35c82d6fac4a15324625549d299aad6e1e6a6f492bc5f4bc5-d\nZ:Q1LK8CpIKlJh6QD67wV2ATsZ21ZEA=\nR:3b6329bffc6dad3e32cd83a59b1a489bf2f85e67fbb9431f0db03d9d5eacb41f-a\nZ:Q15FGGnwPRNw11Ozxk8RRc4sGYDwk=\nR:3b7614cadfde819cc6c26c848c3de75f9525e95617dbbd6fff62b49367f1fcdd-d\nZ:Q10zqmss91zTClJYKf77RZzawJDH0=\nR:3b8a53913a505bac7c44354e1deddab50ad73ebfa6da9c129c535edb19febbca-d\nZ:Q19yPgOHVvAomb1mJYuQVC4GW4K9A=\nR:3ba2b62d495e1a9628b2fc7e493881956df87141efeba3f5ca7f4c70ce2314a8-d\nZ:Q1uP8rU1zFTv+KgVcQ/6f6DqrWGgg=\nR:3baa2e9b7e2a63ca55e514b49a44494e686f0995d6ff3885820b6309a7dedbed-a\nZ:Q15ZX5swnKW37fmeuptwp2K+ThTiM=\nR:3bbca48b685baed60f1c07185003efb7946c431611c6f4cece33b4f8d319c64f-a\nZ:Q1tks/s1udWA7ZCwos36aHRHenWWo=\nR:3bc0344893b97522dde3ab52e7fc960ec4c6273070b067575d1d117d9e763056-d\nZ:Q1b0ljxwNvtxKF+3JbY4In//KCZPg=\nR:3bc047044068003937ccad88a8310f628c2ee2765fe3f1eb0877be2eb373fedb-a\nZ:Q1nvcgIUs+TbJymNmXUTKOxSDN0SU=\nR:3bc13f1626b273ccce1efd610e67f95e726f77b32aa0574eb94c0e1e76be7ba4-a\nZ:Q1r2dX3vQOQHjYOdUAP4VMGPkCfH8=\nR:3bc44281a90858fc711fcb40772ef930f5b307a0f2bea12f6ef6a20251f58d00-a\nZ:Q1D4XhVP2Pbt8uUl1CO1E+Xjl24eM=\nR:3bed8b9b753d1f523ce6127faed3b09bfa7adeb6756d60e2590ef58317a68a27-a\nZ:Q18NsFs3qUOGmRLE2XrVSrUbEchl4=\nR:3bf4e6148fafec1af7113c71e3f7e27d6f873446e7d3a6d2a65674edb816d2cd-d\nZ:Q1EWIatngQCKFsfSz5HRgw1+04Rks=\nF:root/.cache/go-build/3c\nR:3c088ef3f4f18640b347ef7ee78c697fd4395543ffb29e609d217e76309e5ca5-d\nZ:Q1yvkC/wpI/KcAn+BaIsXPomnMS54=\nR:3c10ba3ad9fbdee44ee9398a32d8c8884155e3505bf2d121e22239c970ee6dcb-d\nZ:Q1QlJCVGkNzgOYXowLVUkHNFMiIBY=\nR:3c1dbe2955301b25afa5214c0f043c1fd20e85959ebaca7c2538c5e8cdc5c504-d\nZ:Q14UN10B2yxFaLcbz4RbfCWyUfX6M=\nR:3c37945ca158edc90ad97bbaa0d8bac263fc56e89ceab23486fc483e8871b2df-a\nZ:Q1zPGj2uTayEfa/mqXLrGArlkXCuY=\nR:3c38945a8021be99712634e6d43200b9f4142ed6308fe0c09f6eb9139de4268b-a\nZ:Q1e3TWCZekg7Zgyi0TQUVyPLgI8IQ=\nR:3c3b03bfc830fae31e983f80a91ff876d985cd8899801293a5500652e092e7a5-d\nZ:Q1tDQzaIn6bBGR8brNiZ2JyJC4GkI=\nR:3c4d85ef6d1a1e45746ac9f8250fdcdd84c1e4dfd804e77da1364161acb813a2-d\nZ:Q187HhusRKHzX9TFVfM+okc2DtAa4=\nR:3c501123331ca05d6cb2c01dd377f6e173c8fb8b3b6ffdb08a2e9dd7a6499ad4-d\nZ:Q17VjvHmqkJoUD3/RI+k1K8a4wnvA=\nR:3c5992ebcfdab3b688c29e5f629f328f3f70c234663b98b20ce1c07a85a5f001-d\nZ:Q1GEHkfA9Q0ioIKKdn+Hma1Ghb1oc=\nR:3c5dfbeb00af4363886e2e0728eb35dd5a9dba2375d8587d0ba98364df244414-d\nZ:Q17j5uZaoUpBD9yNF0qwfTo9ThIkM=\nR:3c64883b9c4c17bf49f4e16e27fd15acf445ab1167290dea8808177e1d869345-a\nZ:Q1CyCFOqDUJHOZpqFQVi9YMWPbt9M=\nR:3c6731f3cbe67084c580a66e41d2e72dd1a378dbf37efde61e20921f573eab01-a\nZ:Q1dsZ1Patk8oXOEW99jMXi76JElE8=\nR:3c6ef763a1951472c2721567b0c2acf6de7f5114588bceb5eaf54e0444acf90f-a\nZ:Q1lCctkNVFJUZhc8j89NVfPmvXtfs=\nR:3c7249e4dcae30135fb0fec3df2859996f355d288648959decb438424a9b76c1-a\nZ:Q1ljs+0IODypbpb4Z96Z+f3Vw4YQQ=\nR:3c74509af0be422b41e4e36cd8448fd82de27122a93c6a931022d82e018973e1-d\nZ:Q1zADLekntzMDQLSY6sX6RBwhyNDw=\nR:3c75a32f9b9d864ca39b4f12c8f28ca111a570199efb23f1118585b6c57e3281-d\nZ:Q1aJ0Xo0Ykus5KsgReQ/O37lLVTZI=\nR:3c95822f81cea48263ffd56dc808735e39e6c2c4736030ffb648b1aafa73f435-a\nZ:Q19lSMKtRVUYn8NAc+vwchaRpddIk=\nR:3c9e1de54727b973ba053af2cbcc9404981e0ccbcce79ac2e7b9d6c369287ea1-a\nZ:Q1ZOKTVQFurs4/uYYZfhVNXGFjpZ4=\nR:3ca50f9118e898fd2dedb020df9e18b3afc7bbd6b65e3e126c5f4b3b52c82e01-a\nZ:Q1Bs5yhdJHKLrXP0mnlG4huJ/XGxM=\nR:3caa18fc5d73b044974b35400f483f8af7ca3553e7e806c8edf95d6347120b0c-a\nZ:Q1bL0C+Xe+r3k8W/1tdHZZbHvIzN0=\nR:3cca351a0bb7a61af443f267d93542464113c9fa7ea82f1ded521f64c63a5958-a\nZ:Q1+KX+Aeur34OYRD0phYVqqlqhp9s=\nR:3ce12128281fe8449628ed9c59ceac09e1c61fb49beff1ba6b78227c331f9983-a\nZ:Q1TSroLz8UtGImGpjZpwLA74El2SU=\nF:root/.cache/go-build/3d\nR:3d371286fead48d840405ce6fdd8417510bc57289d933272f63741d30a0c51a9-a\nZ:Q1ZCT1wrh1S29W/y291CHIYra5T08=\nR:3d5bf5fa19ac132093a05fa716d61e2fc65ffa3fa361bb7fe151aa79c241711d-a\nZ:Q1u0tgUsfoUYhlnBqIHeiEFY3YC78=\nR:3d5d0862d9e443664369f1f8c860959a1e053bae90c7dd3183336e2b58ad1323-a\nZ:Q13+Mao0VECbCxfUQJH40wfqSuCEI=\nR:3d761f6ec436e6807c140e3e76636fa5522dc85ba353acdaa59d36151faf685d-d\nZ:Q1XuiDGqZdNugGxIuRnyr82VUqVZk=\nR:3da2f52eb4cd03716a934da8cef8507c91e1341a1c1b4bfd3ab0e3162e8ebb5c-a\nZ:Q1rqujYqyT64wTHvDhxUpdHGxV54E=\nR:3da83eb2e3a6fa93402bb57a12669ccba9e0576af60969e9b53e2a7295f0fb98-a\nZ:Q1PRR/K70aMCz7w/HeVRVX6cNfDsE=\nR:3db2625fd67c5cf188d2268da9f5a291332a7ee2c45d52f7ad7ed3a3f5546bb0-a\nZ:Q1f7uVdq9LW0umm08MoIYpug/jBOk=\nR:3dd84c5b9ad844080939ab57fa8b23d84826b61e083c63351189ba5331d0ac75-d\nZ:Q1Rbyv06xYped1P4MfnWWjsr0hYnw=\nF:root/.cache/go-build/3e\nR:3e01b6e8360184c938fdcd07b61ab920b040a28ac2c1a4a35f2b72961a327a64-a\nZ:Q1HmRzT55DNmAzrhdNYDryXmNW6UM=\nR:3e04c7a242e7ab70da38b3aaadd7797e75bb5ad50b7e8f6e3ae116798324617e-a\nZ:Q19PaIit8lR1D+Y16Tho3gkjCQMZs=\nR:3e15ef7e50eadbbb011d9d2eeb2d795cea674cd5b34d13007d078ffbbc68771a-a\nZ:Q1rEY+09ec+vivUc6GRvk1SPHpDjU=\nR:3e2cf84ae9e15ac56c7222ca4de8c769077d6443c07a61facd8d0c206c99a07a-a\nZ:Q188hpE7V/f1wrFzs8zdA05gL7DYA=\nR:3e39b51fa6fac1318acd8fe0f001540a1503f027c144f4be4ca5a429548d9319-a\nZ:Q1pI+r1w/FN8nuF1hFNm/j1k5dxNM=\nR:3e666b8cb09f407f69b26923858c4e2b5892f275443366a1fa303bfba37d8bea-d\nZ:Q1VMrJw0oXj3Pddw05TiMleM2CAzY=\nR:3e67aa5117e123f2a0c49ece23a5a2997d446fc845b9d998d4612e8c4bc9dc58-a\nZ:Q1cPDCIUYU4UohQ5+D/j94e7JmDYg=\nR:3e6ab4a62d834373a93c95627702236dd0a8579f8e1454c53ca6f3a314b71e05-a\nZ:Q1O8doEFKhuMFI6V8cm4ijYlOYJvI=\nR:3e85e231eec6016ccdf4058616d6a2b4ed56e50904c4567e5581d548e258a17a-a\nZ:Q1KJhe9Km6w08Azu+WAq/vaQYUzCo=\nR:3e92ac1e8e259cf12be35dc167992be114123b855b57560dbb2213a4a3ac52d8-a\nZ:Q1o0wx1xIEx420N34Thju5xTZWz4M=\nR:3ea5d1d873861d0554ded05705a3e4df79f336ed9669fd3699d9f99f3cfd9840-a\nZ:Q1Pj/BwQpbCWkcaSwUesdHgYDdvHM=\nR:3ea8d025ea7ea290c13f55bc62e530d6e998652ca373139e1dcf73b6d9e06912-a\nZ:Q16WoINMHABSQli7SRv4/VJC3zPKY=\nR:3ebff84e490270b6f03596ae69a273e4864cbd8269c3009ed139a7af5e109e67-a\nZ:Q1k2vAJZDvv5GpianWXa0gmc/T9ik=\nR:3ec1a9cf17ac8c73f019438929453f8d00ebc62e898090e664e73d1d514ea21e-a\nZ:Q1HjhHbeufCNkt/GvjJ54zMo9COo8=\nR:3ed77c42834991b4aac66f0976d3c79172c6ed419ccac831feda1b9b0733a006-d\nZ:Q1qceB6ZRGtDQzCoa+F/bxvucFALk=\nR:3ed9915b979732dc513b00edc54370ee6c8257c394c1bfcb57024bd98ca4fe17-d\nZ:Q1WCE9IFDYfmIuIUsNvMKe3OgGteo=\nR:3ee9f6a70cc4c3bf8da84c388f0fd1d3badb079a0118adaa4e5e4edd1384e8b6-a\nZ:Q105P4r3qvc1SM3Oyg2i3ganpKlY8=\nR:3ef297f296b1e692a6285b6e51a7164ae73ec1f5c0e41deb60dfb2cb91e75b53-d\nZ:Q1+99BDIWFA45UzUja+nt2jFaNKeI=\nR:3ef8f24ee7b91b437593ad99f7054f5f77a96d94ed4115cc855f1b2bf47c776b-a\nZ:Q17ogAua5rx8OgiYDVLL+pxc4/IJk=\nF:root/.cache/go-build/3f\nR:3f014b68c572cf7384ba5e6c7061df1ac82b183843ba1366e6967532cd232221-d\nZ:Q1XN7C4+2G4UTpR8UBb1yrrVw32ew=\nR:3f0d6fa36cc2015708a45ca19e68f8ba67fd7de9d7461a7e24b15c8788e8ef5d-a\nZ:Q1MIIy7LcWu5KfAoFoAkjMSMky7zM=\nR:3f24ed091d4b87775d6c55bf4b4f98ff75617145c3865d37e27709cd866f0870-d\nZ:Q1B5Doq8MoCo3TQc9JCSNfwwkKe4s=\nR:3f2f3a4dc651f7363fb56105a3dfabd8c3432590df61b4d3b8a9d502496250b0-a\nZ:Q1/sG31i8R3lnChZ6f8WbSgZZRlUU=\nR:3f3ac4de0240035365fe7368da2dfa82880d9e1194c5e8fb372d8bde6e9cb4a0-d\nZ:Q1xdodSYRlWWm0iz2wKk7Fou9U6Vk=\nR:3f5f91241436dc810c671ec0f0b6fa30c965761fc33fc3b7aa03a25870c2c7fe-a\nZ:Q1bYXW2tbd+5kspduUDEKKAMCgNKk=\nR:3f7938863c78a6ee6b62ada661d366961dfccadeca62a2263fe5688a32bb5333-a\nZ:Q1dNgjtiXfAHpn5Do8YVJQqVv6iD8=\nR:3f8a1e38ee99688cb855d5b33fe874ee33e960c65fd63053a7974f488b212ba8-d\nZ:Q15e56pNIN1E4oY3jVeck0gQ0J774=\nR:3f8f3fcf92bb39eeea4fc18bb8106439a44b446ef511cf39baaa6a1e8cebcf4f-a\nZ:Q1DQB0tUXy00UetWN3Qov8llqziIo=\nR:3fa0262148206e2cfc7bd42ea4c0a707ad908f26657df9474928ebfbd13c7f56-d\nZ:Q132dqYH3JdMXDHO2faVshyqqtQfs=\nR:3fa0c69a6e6d635ca836214cf3c3d7095a4b28b6ad6a95c39e214dd83e27ab41-d\nZ:Q1UkoouIxcHxncZcTf0pVqt75LA34=\nR:3fd29958ef3cda69f54965624e5794758f2ae9566744d96660ee2de66b803bde-d\nZ:Q1Oi65YugkR6L56cFD7Oip1J/KiEE=\nR:3fd829469633fde14a301b7eb511eac82e0859d674f888ff63790c8f03106dd5-a\nZ:Q14j+Ty5tLUPLpB9vJkBBIDARVHNg=\nR:3fe2c017f10dcd012ea56c9e64aba7c3a2b8a23c9ad40c838ff4d88cdd99eeec-d\nZ:Q1GY2voX4Pl+WozvBPFS4j2dKC/Zw=\nR:3fe6fdae3349aa8bdb20323249cb645b3778a33fd1e0a8dfbf1c4347b07b2915-d\nZ:Q1oXbnNLtktvtYJgd5d/zqtFXTWjs=\nF:root/.cache/go-build/40\nR:401b914c2943ec12971b1d18cfea63d23960c730f8743c7074b32416318feb63-d\nZ:Q14fmuPhLKJcJdBk9jsrgk6uARiL4=\nR:4024b421de11ca60f81c20e95e36440aa42ab4cf2942a1c1aeceb52584dc2b3d-d\nZ:Q1U4RkfJi3d/dCCjO/0RxVMHkiCDw=\nR:4042597b84f2f4ba409514c2820c759e292041e2065bc6ee6d3dacfe3189de05-d\nZ:Q1RwXy+FJm3Ge2Oa98r8YAD5poj2U=\nR:406d22711c21e11a93c62ec9bb9708f8c413a1cb4ffd7e6367a223790c937804-d\nZ:Q17xhZts2r8kf1VVJNF2iy4djP32s=\nR:4075bea1c3cb8ccaa670622e70d4f908057c0e1ed27cac211d34662ec37e6acc-d\nZ:Q1R0pcecnlC1ehOxyNla4XoSLdwSc=\nR:4078fb3eac3fad18c06f03d021a5c29881f8cd26f32ca7351a80d0b975f4d3ba-a\nZ:Q1q1/ZZukFqyF3WMltaNkGeOQT9cg=\nR:407d6a450a33ab456d3c8708ecf640222532e48bd7a3505b2de4f63cc9e6025c-d\nZ:Q16xJV4JRw+2S62WlL0OaTg+GmV/U=\nR:40a9730b645e2601a44fa63e52a0d37785d50622be29b3260c0db057f816e61f-a\nZ:Q1DXbeoicE3rr2nX9cVorlsLoUZG0=\nR:40bcec25fa469086f7da12ca21100a25f659c2105f0bca734111142f117454eb-d\nZ:Q1XJte1Bp6AWf9VAnU5MLbRnJoJw0=\nR:40e0f34537ebd7fc722cddf4b8d36d5c50a6cb1bb8bfe52681958ae09b3826c0-d\nZ:Q1iiW2W9UC5h8LclXJg4jDVmRZXWk=\nR:40ee5016ed45ec043bfad25aad5dc73e6012cb94336821741943dff4791faaae-d\nZ:Q1bxZWzQ1RmzuYVgi1xFhAvqFnrM4=\nR:40f496fc99703c92cd83b406d404cc9e7c1e16fcb11db9af699c8647a8232091-a\nZ:Q1249fnBq7xfatxuJfYRVhb/t8O3A=\nR:40f55d32266393b8bfd61c7aad15245387071d450122c13921c5969ed7a7ccd6-a\nZ:Q1YrpF/Sl3G1z4G7nF7qnGK+uLabY=\nR:40fadf5ab5e22871e3ec19e779905cf435018b62ff4b7f84b3f6c63ca073e131-a\nZ:Q1qHro0Kng7+XavMTJgHV35rum2Go=\nF:root/.cache/go-build/41\nR:411153dfeeca38528914cdec465fdb6b3b08ce3be6a9c2cf922d5b606e3925f7-d\nZ:Q17HDJkROag8caRvaulhOwXvRUFc8=\nR:41201f88a34481e80bd39f557ef0076c9489f85073bc56a90a5a728dab1e6ff9-d\nZ:Q1ALcrlNwLX7fB8j+YLdq0CyQymlo=\nR:414857a288b72d00f05027c9a79edd2a1ac6ff6d9858ef54d33a69e9bcaf5053-a\nZ:Q1Jft6NuoGVevqp2jIv68loPixes8=\nR:4154326e8d16d2204bd30f58c030b9594c86ee1cd9c112a47e0104013d4a9c45-a\nZ:Q1f12SxDRyPoJ6Y+jn4v296ULC7Pc=\nR:416692bcd699f9633b49ced2410aeac630e5686c58eacaacd1c64d6a8fa82036-a\nZ:Q1TGxhZ4z85O1BQV4kyRc4Fqfi7UM=\nR:4171aff98fa2b202ec7bd68862849cfc6a282ab9e8a22091b494742a6526039c-a\nZ:Q1Z2g1EfOfjXkAQCE9lNW55it3eZg=\nR:4176d3cf665ec3cbef6a6636e158c0524f99ae53d7abeb3ff32dfbf34a22e256-d\nZ:Q11K/+4vx4ERw3448BvIVq16LvfJk=\nR:417f134e95d471b07553fda25b80a27c2597139f25e48c9d5398ab6a949cfc33-d\nZ:Q1j8/3ON9Aalqop1lLrfVPScWihtQ=\nR:41b33979633739567c759e66a2d0d992311ae72a70ee80d4f95f294d638286c6-d\nZ:Q11BSuO7bVL3OoACddh2zQCjm/MaI=\nR:41c9480f249415f054e568682dce7f84ed754c7ae03cb964fe16ee56cf468338-a\nZ:Q1zaDp9It6TpUVM2dobbgm/+r/Lwc=\nR:41cca95f7e168391342f13493cb5ac3ac2b7bcfab92484abfb685da582a7e4c3-a\nZ:Q1BMTHZCErRZ3BbJqhTebzMTl+DdI=\nR:41d5659fce7022be96552347b8b94af83b01804e4674d5659dfe55675074a758-a\nZ:Q1byeHAyLOM1sVeJvqy3PiGERl8MM=\nR:41d8b56c0b23b97692acb5208a1a4cfe46d7bcc70c006af06b4a436506751ab6-a\nZ:Q1rnSlj77ztPBIHtV0Brl4vPVu2cs=\nR:41e5d794897f0a0aa98ee6b5e9455391c1863bd0bda9b53c7bc484aa07177727-a\nZ:Q1PKYqgJKsZpRHBXTFm6xhekrafRc=\nR:41e829e1c9d9c9b95a77f7c2fe2d44fe67c7514e6e03ee533d4db6f072ecaa06-a\nZ:Q1UprQEqVVnI5h3okOeW7ZIDNimuc=\nF:root/.cache/go-build/42\nR:42169a576e1a63f5ad63c915ddc6cc9a8de52774125ddbcd6f4a3ab9c8c78e2c-d\nZ:Q17KvnGb0wL8ECoIqxjLB7WOW18NY=\nR:421b902bed9f919052a5ed8e04d87e20ab689d11f1a6dd73887b9f78ffc36905-a\nZ:Q155kNK3yRIzN9uaxQ3/9OiqPZLwU=\nR:4225e55b2db6172324febb83371d333503d59b02ce4406d3a3777f742dd13b27-d\nZ:Q16xGtT/foO7nOEF5XKWHHmXbOAfA=\nR:422ff9b126cbc832c90bec1a837fbf180620b671a6bb8b62beaf0357c9deb783-a\nZ:Q1KjbTd1C/EGv+lHNw7IcmZVdC+KQ=\nR:42349c9699d427893fe2e0c4781400d94c90d8354f98f1ac4fefc1a03a8bbf34-d\nZ:Q102mG3LE6WA7VxxxfvHu2gyuEZ9Y=\nR:4240f74030d998d7a2a1e6080eeb33458b3ae007301daae9df3461aad4caea76-a\nZ:Q1uzABlylXQM/yWktQMTSaQtfp6K4=\nR:4241227e2c94c7d604e39e41f3176d4007408f948814778fde62571099b2b124-d\nZ:Q14gzloYkslsAxAIpaUa7CDGo+JCM=\nR:424a7a104ff60b3c3fe0f3e81d7cadb2ce91b0e62474156bc52ef7e5cad400d5-a\nZ:Q1U1TvgK4X8lgPVXwHh0tEnpi1aSY=\nR:424dc42344abc1b6ecb9eaab1532af760c81476edf09342f76669a87e3f63d3c-a\nZ:Q1yy1KG5aRw23jTFjxA6fUiXWWx+A=\nR:4250807b890efbcfb85d314afde5e1daf811def0a902c3fdca09250e6177d2cc-d\nZ:Q1uLBpecNrL19D+F81aiD1rNKL/fY=\nR:426618661ee2823874d6b5514bba38b174148f82e683777cb0c3063db9bc86f8-a\nZ:Q1y4l0uk00SKQeDpuP3rSaWQSFk7U=\nR:426a24335b68230c89795b5164444e235b8827e1a4c0acfc25638526ae109c8e-d\nZ:Q1rYNIBCN8ya+VxryZ+6hV18VQuwU=\nR:427121fd061e01e99dd985f99d30811b42a64d2cbec87b191f1645cd2d8fcbdf-a\nZ:Q1MWUYnI2vq/4Cy7dTvOyOgSGsJ9U=\nR:4280d75a68999b8f8fc84a11a5bd3265a547d36b25f3e8082137f6e9b07140b2-d\nZ:Q1JM8UbZvokDQroTnY/ltKQ3JWxQs=\nR:4284d521c884bc095cde03d18678403a6058478bb39a255d5fc070cbf132c8a8-a\nZ:Q1/L5FWchR6FkHruhkyluWp0zMzoI=\nR:428d1db01d86e7f2b20d555c3da68fa3d1dbcec046ea08a3ce2f56d6d07b56e2-a\nZ:Q1q7lZo7MkvRrwsQp6sxr20idHReQ=\nR:4298ed0c194610a854aa109ed4de142f821ea5d38e4884736c302beb5f9f61c9-d\nZ:Q1XRpL4Fqi3I1NZCafDmUvQeZ8v/g=\nR:42a49d0ce223f0c2367e8858bfe8e06516e63f7519eb06ad682a2c4de29ce6a0-a\nZ:Q1JOV3knXtza+BN05IJ4lkIdmSLuw=\nR:42a8e36e411f41ffd3de74cc444b17ca687cb5db1eaa7b06531a024a50946295-a\nZ:Q16KEU9V263Gri2un08v6DrWUO/k0=\nR:42bb1c42284dc8c02a9e1af4926917420e754b3f4d22ff521ab0c0f5f501fdea-a\nZ:Q11Q9HD6rcQqe4PGdG8smshviBqJM=\nR:42ca97de655a9b449e743f8c9ea478631c6ab0800f9f41e33555f68c82319b51-a\nZ:Q1Wjm5XdrRcsajpwOANT02JoU9E2c=\nR:42e4be9f76e366207c0f9bcbaad4de38bb3e9e55d5996e8b34f4d125db0a6a32-a\nZ:Q1dXYKPpQmhPuUSnTruwXzUQJqfvI=\nR:42eefb6177a6396bbb1aa0ceb5de920bfd9307271834c8ff74c08d97e70d2eca-d\nZ:Q1BGgjH3IM06Q6qHNmYXdztLrh1aA=\nR:42f526c4c133e9d5bfb9cc8336a4a347d67b1bbb91d0d997635c553571643d42-d\nZ:Q1GHpZ0Yg4UbK/r7FapDwOVM6cjdg=\nR:42fb25d8f319ec3e6fd9bb3c1c590a66317ff17fd17f28e8881f3befa91e5b97-a\nZ:Q1nyPHGwafZ1ZeRJOFUsYqConRO8c=\nR:42fb2d9e37a305e0b111c0cd83685348de1a28db6a814dc8b547dd79b45751ed-d\nZ:Q1HrkPQR7x9CIGAFcNxOwUYTcyUpc=\nF:root/.cache/go-build/43\nR:43366cb9e23f1d12cdf63cbfc95a19d721696dc27ef71f91fcbc0d0209eff273-a\nZ:Q1NVCPM9jIGZXbL9FzfO0tNIEVEOY=\nR:433bc237afeeb32c68cebbeb02dca65af30481992083f6263358e7c163049b13-a\nZ:Q10JRAO/hF+cA+RntGTadTW70oLyQ=\nR:433c3665d49db0c2ccbdf562b574c2ef7d4bdfb1ef0b8794c109ca72800db99c-a\nZ:Q1y1DlC0EwL9iERrhAtSuO0a1i52A=\nR:433e7cea8213facc3feb6a8fe7fd02a71fc4ba9566c54ebd5f1c2a17293e590f-a\nZ:Q1vANqaGbcmcXnM3x51FcEco8Zmao=\nR:434a2bffc2b3b89f07efc120cf3496b1582cae73bfd3f6cad32d2755fa041017-a\nZ:Q1fiKpIpRyWe9PscoS+Ne+UJSS+Xo=\nR:4367547f9e10ca417d5c7c2a2bbca2a36f6159f7ea21cb612e42e2cda8212cb3-d\nZ:Q1HG7Oq8qEip+yf+JypVvm6kpahJw=\nR:4374447552fceb027ce71453bd782e1d30b67e664b5ba31849e65c3b00722d53-d\nZ:Q1J0O2tyk3NMpfBho09XF+/3G9Juk=\nR:437d70d5102c22ef98bfe0e78e6d2b674cc9f63ccdb33c3502eced1fdb3ed05d-a\nZ:Q1j3EEaadi6n8/BO3bQuhvK4cESkU=\nR:4380d3912717452444760eb21025aa8fd351b0e345665bfc7253157752c705b2-a\nZ:Q1cBKCCsQQwRKj9kYcq4eIf8F2OGo=\nR:438f8c8f272341e5d276cb57659f6bc4fd26b8cd22584fefd856aa15d56a6416-d\nZ:Q1cRPpOEw0PONjnAR2hvxV58R5OXE=\nR:439d6680a09008de97b1f4402af5f91ae91745a79f36763524bb31fb9b136cdd-d\nZ:Q1n+khKn8y+eWoOj/DA30oaDRafOw=\nR:43b1d8aa58ed293f1ce36fb783a96c877cd8e8e1f0d39bea73f6eacdb94a7b16-d\nZ:Q1PjqFRW4AVR7ErsnyFX1rqvuew0s=\nR:43c4af69dd2bd389aaaaeac1f3b9e24a849a2d0ab7c7f16dfbfad17ddf53d486-d\nZ:Q1r6c18NYNgpMdeTJeh3j4UgqM2yk=\nR:43cb4f4e8f7ff60980f7d10e4b06d7a6c90292986e0539212b62a9d15bae59b9-d\nZ:Q1kaisqA3Jz2jWwbhAAgJ+BsY2xfo=\nR:43d8cf5dc5b9b15ae54bd12f34def2abe0cdfaf25a11cacf6664243fffae1e38-a\nZ:Q1Mcrg6p8TxA6J+9W0HcignfxGCbY=\nF:root/.cache/go-build/44\nR:4401ecbe6b519f79b98270a510a307481f4d2abba383acdc4fcebe4ca0e5fa3a-a\nZ:Q1Y+n2lfFuSXdVfC8g0KeqYCZdYQ8=\nR:441435749e5fa2867aa02d359450c540e375a19fe6f2b09bd5e61a4e5fc0203f-a\nZ:Q1qd2ToftzpLBAyA1oQbM4249bCgU=\nR:44363c051e58e56d5c1b78827d73aa6ae93ea7fb14d0bfaf9e19eb1b1bc0c4ca-d\nZ:Q15H0Ak5Jor54ajLPTWS94lz4rxRk=\nR:444dc61afc70e044b4b807f27f495b0a966e5fa361a53138e7b117647fb1b588-a\nZ:Q1dUJWpkQ5etupfad75QQh8b6HUMo=\nR:446dbe5b9684c596914b926a425a0d5ce4ad4380f6fd198ff7a3194557c5be42-d\nZ:Q17aPcFkPEUyw0NfOmReewhrVZmwc=\nR:4472961017132b62a0cb24a9e00f1d547c68989a7b1503cc11f2e36709543878-a\nZ:Q1stZ4BmwaKRWIkbk6vbQdfuTpQMQ=\nR:447a67f61ab6da3ce964f1b13ea1ec5b0fbe635370b1733d280fb718b48d70b2-a\nZ:Q1imbyS4tNC82N7aREbvIwPUsFw5o=\nR:4482e0761a58ec081755c6a5a2ea2f9460156bd85e2c11f71c8d898b3405ef13-a\nZ:Q16nl8ptgvfP61ztLvVy6eMskWg28=\nR:44987665631b9bdccd92e173b22bdcf3345e9dfd0ef3453a79819320231d14e5-d\nZ:Q1HWwFTvbkkLZES+UIbJD+JLtylRQ=\nR:4498b4e4ccb6dc8ca85ec9c32de9291b5a495963cc713b425ebd49f61055c930-a\nZ:Q1PuktX74s8gX+nGXcqflrDTrLiBA=\nR:44a80de6835d70a5eccd8ffa3945f67e1bbddacfbe55ab1f520ddf94e22773e5-d\nZ:Q1TsSxCesaDQzRelYH4LAqObY+wVg=\nR:44ab9e5184fc32ec887976d3ef3f4bb2154b174dddc841f1ef554a731cdc14b1-a\nZ:Q1mf6tJJLjxjUDRxggm3merc7nsvM=\nR:44ae6ebf8bd32a51dc0cb48315c9f2e0858cce8736b883ec738804193274bc08-d\nZ:Q1ap3VJ+Zlp72WbS+xwQjQ4PNzikM=\nR:44af6d20ce31b963af34f346c0bae3bb54aacccf22ed9b69c279ff133ccfc1c7-d\nZ:Q1p/onpT87VGMmjuEkCSNSm4saP6E=\nR:44d2e00ae42efde32e36ae86b1755ccd128e910d28b6d3f467e88b8525762db0-d\nZ:Q16n7o8ufFiWkB7SDoKURUFOHOfRo=\nF:root/.cache/go-build/45\nR:4504fa758284356615e7c79423a7b997fa50e51a02feb77fc29b24cc28e450af-d\nZ:Q18FVCOV1YGKU7lF2dcNrRwYrJslI=\nR:4510f87591e4173281a13e6d03303d9c8ec58289f79d230fbe02c39a305c93b7-a\nZ:Q1BWjkF46MYZoUYyrP9buRfHt4oPE=\nR:4537ddf7a5dbaf3030a7a51221a8bf6a83d96385623a6454964f33c44ebd5eb9-a\nZ:Q1EnQTtoI+WrVvKmuzuTtRW8RdNUs=\nR:453c103c2968e578555909e11ae7e01c6daa2893533fe9d9085fb8b6398e702d-a\nZ:Q1hPhG/XcXCyDA2gZENz+C3AGKYT8=\nR:4544ccc38410420906669bde5fe25cad0372ebf03e68772d416a80a558bfc51e-a\nZ:Q1K0R/3hl5Ey1LXYUe8Pam4hPkdXs=\nR:4559b63da45f8ad0aee93af63a93ab0f67bb5a2a898dd7a5265ab49047cecfc0-a\nZ:Q1o8uQ1KfFeY6/X3y9OYktYsmpLTQ=\nR:455b7c727a0fab6b25307116e1eaea3cf9423df9bfc9c43d3aeeb8977e240373-a\nZ:Q1On0WXr8XD/v6VFyjux5xmxArUQ8=\nR:456aba51721af03b772ea1c291428bfa6cba3867dacd9f96bda6204d8f2a120a-d\nZ:Q1qk/Z+qKjkUQdO/MHdAOoL9Hl5K0=\nR:457b37f0950500275326bddfffff90bb50adc041865f75835b758a40c759ea6e-a\nZ:Q1DUtSBDXWkuBTWJ/5zMKHZssylm8=\nR:458c0d1e08778fef8fd3fefff5eefa606ba1ad51300088dc77d802a6e44b244b-d\nZ:Q152VIb8RBQykXiSCIilIuG52/p70=\nR:45b4fd3d00eae37b30e9a69fadde877f24cef153938b6a2c9bdc0c4a9c72c707-a\nZ:Q1Gd1JgcwJCXF/8kdb8LOC7DJid7Y=\nR:45b52b2834d65c060dda33d70957faa11c40dd72a2089a95ccfba1868b14a080-a\nZ:Q179hPuzc2JKxotILcP7HHuSulJuY=\nR:45b9946ef37c2a0572f39c3c7d1b75d72a8707e8abb05f3576cf971146bc37b8-d\nZ:Q1Mg3TdckUDMip3b/uZC6MnbMQH60=\nR:45bf88267e177a8fa4a541df16bd66a6ab9455aff3cc3029cd1d9ff3b5696ac6-a\nZ:Q18FTNgiFeOvLVWi9OTF2/hVCw8Qc=\nR:45c3993a1dde4fb2d85273866f5029359a4cd196606417fa26dd2537238bb9cd-a\nZ:Q1b7LTlBG3KSoo2HLRvD5FG9phS/0=\nR:45f2893a8f968cbb86118b3e372c960d476f0c8acede71d711b0753eb08fe410-d\nZ:Q1aX48/VZzKSiIVr0sKeuyxCQ7Md8=\nF:root/.cache/go-build/46\nR:460f22bfa32568cdf800f46021d651a6c5bcf5514959e9703d66d67fbafca7ad-a\nZ:Q1lS6KUSbKB8VCcGmGPmhiVa0OXb8=\nR:4614b7f2c968dd01b5585b3384f4fd1f590f79fccf2dd6ab3e726b430f95f1e9-a\nZ:Q17oSLoGMo+L8DxRc3R7cs7fjwUpQ=\nR:461d3c463e723c1179770a16c9f166799bae38126b1667585916cc30f375534a-a\nZ:Q1YTVanl5diHwqLo03aLFmRKPkQPM=\nR:461fa7e4ab313f1775022afcc2ffddafaa2e457f73f7699356bfebbc15c57fc3-d\nZ:Q1LNEmEK8RZWvv2K86q8OBf89TWgE=\nR:463a0608c1131704986006d33611840ee7dc4beb057813d2258ba0252659d1d5-a\nZ:Q1xBKJV8CPMDef7AJg7oAlyqbU6Tw=\nR:465bd1f8c107ef1bd11db06093f1471027283e677aa1b188e8acb68a3701dd0c-a\nZ:Q1WMo00GUpenD8OeP5uzAlAJSt3d4=\nR:467123dbfc5766cbebd4ad9a7603153b1bded126629a4c204704a5d09640d789-d\nZ:Q1PTkL4VhECyDOfqZ1rDD0LG1nHOA=\nR:469d2cf13c33ddfae914bf2cc5cc561589da9076fe27ef8459d502de33a1da9b-d\nZ:Q1qzGOh8Sr/WcdblTBQtWFtsa7Cl8=\nR:46b3fc133153d15880725be58f3379b9496541c74257a2fae0bdd9009320c6a5-a\nZ:Q1ik3Fjw+XwjQrF2VcoIp2AHw9Ba8=\nR:46ba083c1ec3c964ec4516a12434b28290045f7d659aa8f3678ca9e58cb7eaef-d\nZ:Q1TJis9krAayLw+MMBSy66ix+3YPc=\nR:46c5be625467791670a9b8d0f5b433cdc180c9eb8e3e28533332dc21a5d40e25-a\nZ:Q1CzXy3oZUeJRN2ddQ+RThZYyhovs=\nR:46ce692a0d34c442ac169d73386f15fc7ed41b2b9da36472f9b9fab9663fef85-a\nZ:Q1fjooxwWauKdpULrgM9C5cCZQTLY=\nR:46d170eecff187d5e06da3b17f8045ac3e7a140693a9b957beca9633638a72aa-d\nZ:Q1n7xOoOn1kKEYTHMR9QIE52i5jA0=\nR:46ded9c3901fff7a867be8d44fd7ec3254d6bc679867b6c532d079c2855d1caf-a\nZ:Q1EVt5jimDLiSdy1KZU6OXHko3VFw=\nR:46e142df2aa4327b53fdc52ae2f0c3e28d002a763a01fca339e6d9c113241ad9-a\nZ:Q1wZW8nJ+fSLWb9YiNhWKOLZNNI04=\nR:46ebcfceaa7da968ebb929707203d16a0fb2b2692325ff59b416364eacef8ce2-d\nZ:Q1CeotSTsNQM5fBJJrBOxdEhFjNlY=\nR:46f1dd2727fa02daba1c286c1ba205384358ce6e60b4c960be6f92a7b159a5f5-d\nZ:Q1cWq86mTM0Ql/WjUxndJNfmAbhFw=\nR:46fecfa07d787c3b61ff2c3a6900f6895f5224cdb97aa986f1c77d159bc10ee9-a\nZ:Q178L9etnhxAaD6phCUWPTnK9AOBM=\nR:46ffd9440ea99ee921494186af2a3592d338d90ce33fec03c38ccfaf7b5cb1a8-a\nZ:Q186xOxjI3J8G/LAiVTNYdtmLw7N0=\nF:root/.cache/go-build/47\nR:4701b3c3e4e953ce702a3796c3908ba0e37400eca78650e708570e36140299c3-a\nZ:Q1BzRN0LySO6ZyTNqIXhUa6mB/MrY=\nR:4702fc71125af72acc3fd87911bfb842db371dd58f8c719a06f71b31c253a72c-d\nZ:Q1mxvy02/7JPWgrCXciBYcpEWrMvI=\nR:4707f2c8b46c369440d6df5119a27d92caa47a89ae11010be656fbe085cd1249-a\nZ:Q1tvBqy2z4vpEK0M3XTFVCbfJ5bWM=\nR:471e796f25d7fc07570aee60288b4271d00a874af73f107af631be9074770ee5-a\nZ:Q1uShsWuaOz+gYmLoPIWNx+eEDYq0=\nR:4728bc59e9627a5f34978298fcff135d95232a47ea731938bea1182f412159e4-d\nZ:Q1yHZQ5E52GU16XG9utP7WT/Dl4XI=\nR:472e60cbe5e4cc6e62660e78e400a41994a0f13b0917898ef5f2890243a493cd-a\nZ:Q14IsV6yujAtANymaLVyTDtHgIhAY=\nR:473ca3e90c270f92a1bdc452016ce333a6c1b001e2c2071ed5ca28940119587a-a\nZ:Q1leifFfAUR4GNdc1nMzn86BgWuEI=\nR:4744c90e86c79cc931e558dc467c8db6e51c96a9e78157c29ca51f72e1a82657-d\nZ:Q1qWX6lucrWyDznZQNW9DloWYCfRU=\nR:4746becd1a68dc234b9a04bad13a0e936dcf7e51991a855d0814c697a8d4d5d3-a\nZ:Q1v5CbAQ7XtxvwoQ+/60uAKpFXEw4=\nR:47480e4e64a955326f6ff313639d081caea53d0bd78ef5cccc674216208550f8-a\nZ:Q1yjbpXsQ45KVqAqVstum9MavHay8=\nR:475295e515973bc111a0f24bd8bd5086a0c3af71672165013666ae82c9a276bf-d\nZ:Q13SHmZFeoE0yRsriVBToNxFOW0nU=\nR:47ca5f743267f9ce20acca61d1cef5a2decb9ca3b17d19f59f01a590b70e8b5c-d\nZ:Q1VO7bGEzFvGqmg1K8yRC6AViCcHQ=\nR:47cefc2d642335c7d59153c27c82722111e514d478c508d8317c66d6858d6efc-d\nZ:Q1em0z0IfhY3jbyu82wLoqNqakpes=\nR:47f9dd79a2ac26b67e563eaa618fdc3c5875d3613ec460729500edf3da2ea689-a\nZ:Q1siDDx1WQpaBYAEIMh+n42sjfuoY=\nF:root/.cache/go-build/48\nR:482420b723753d22762acfa146eafa81883644c5056ac6930ca4e75b25e3109f-a\nZ:Q1Sf7zoQjUO0sln3vf+nQzLIUWh5s=\nR:483dfab8f6ca369285cfcb9fd6d5d0e10027f38f5548843ab7290cb5cc58f3cc-d\nZ:Q1PA7QmcTeSFNo7XOTt10Ex8WHKL4=\nR:483f7f49d6bf8b4ebbf969554a8086b11e9c32c3831b7b43ce6706582b6b2922-a\nZ:Q1V3DyvrdqhaOX5Gc68gBc2FSorpE=\nR:4843c9d6813f636fdad03c7494ef7c9ad439e26b27d8644aebaa77513559f8f8-d\nZ:Q1UZ0E1CbpEGwYmsYdXtA6QIZ1+p0=\nR:4849091fa50b5edbc859b3cbf7766fd040330728a0c2b0c9159cc8098c71d57d-a\nZ:Q1bx/FQUuzTnxF11wj2fXzRAMOHyw=\nR:485f9c3c00469ad190eb18699926492e17c2bbdd16711169dca8dd12cd79022c-d\nZ:Q1ts3s16WvGAUQmMrmsk8eETrByyc=\nR:488f59492c5d2acb89df6f7dd4adeb489e794f4c7f4b7099b1ce8bfd4bb76555-d\nZ:Q1dorx794ohZNBj6msE2E6SACanzo=\nR:48cae2e1676bd22f8ebe938268c3004a98ee8c1f0deaab06e8dab1c728e0ee1c-d\nZ:Q1HbEQuT0m8JXGBWhWLiOl4tux/IE=\nR:48da88d752ad198d508d03b1b24d7d4e7a299ee21ae7cdec6cf5e5e38389599b-d\nZ:Q1gaVRqc46N9jWooARfvZM2mes4fg=\nR:48dcffd6203ee541a43fb13c5d947b744abd96043f264561e19caefe279967a8-d\nZ:Q1CUl/Ai+dQYCtDRiw/zpHqdvR3es=\nR:48fe99268f5fbf70bbc624285b5c5ef78430c1213c75b97632589571dcfd5217-d\nZ:Q1b6sMYhaWV5BxZEgxVjklw95c36U=\nF:root/.cache/go-build/49\nR:49116e94a2374a0ada83f94a076930daae851875ca649961dcd4374289e0e3e8-d\nZ:Q1oAGC5XzabxiVhOKDkCwFTBsSah4=\nR:4912025d7508cb0aee8b251099d1f5e297374f460614720fb3c7e543ae747c05-d\nZ:Q1zmjG4X4u1jgFEirex5Wwz19RjUY=\nR:49209f6b3f2e1536c084e7f951482f83d8c89b3ac84748183b0125085186322c-a\nZ:Q1VNHvNr5qqvu3RTHJtrn6tb7il6c=\nR:49210db5ce623047ae44c7046f05d10680aef4383cbf0f7bc407ad8eafeb9857-d\nZ:Q18ApoynbOvtnu6tp9XKb8tIIIsi0=\nR:493a84811e06173819bdca002130cf73a88c472210bef9b5244f72100e4b8743-d\nZ:Q1y3oh0C3Be0VI40b7j2+YYHtJNrY=\nR:4959b9dfd68758fa9d4f28d46e8b4c8c3f8c633dd6b80527b8772cfe9588e389-a\nZ:Q1ExtBJqEqvHYSrAJ8kbysbo0HxYw=\nR:49716be3c168c140cc72d4c23c19f6f8de8c5359c1a6454ba57455f12ca7d33d-a\nZ:Q1HJI3x6wUOOkg1IJmoRjUL+/PRtg=\nR:4981856b602096c6f191f304c2ae579883567cc650895b356abb63f65b702c65-a\nZ:Q1hCyvUCjZi17dSPH+KUfzDI/0lY8=\nR:49849bf16c7f3574788c2886e2cee500dd7a34a07fe3fea4ca376881ed00fc52-a\nZ:Q1rdzfZqyD693q/5CBxel9uMvYmyY=\nR:4990c11108d87e6da09fd897929ef4c25f28dda6f3ec21daff5a60292cce8388-d\nZ:Q1SW71ewNWc/bphmcFM3nfVtFFYvg=\nR:49967d34da83946e4514ced9abae86dd85cb287a8113320158f667ff1d03b24c-a\nZ:Q1TfaQIvvJnXFmLDAhSYgxXKuTYP8=\nR:4999c7781314d68783926356c3ac6b692083a0cec95b3a430ff23f66af5f0959-d\nZ:Q1E9Fcw+a/ocaGijoW1j4fU76aNa8=\nR:499fc3f0ce8ca51951c43b117798b7c01b0647a2d492ba5bbbdc1d5080933451-a\nZ:Q1q+PgWa7PIF8A4DjHSP/SYWttO5E=\nR:49b40e8d70b9ad56e61791df050bdf92f24e5d96c90d881fb804655f9154eca3-a\nZ:Q1/AWbLX7d4ZKFGYIQRmAcowsNc2I=\nR:49b5d1d51ea957ad0356813b911423a7b80773511d584ef165c960ce47247923-a\nZ:Q1/YKfm2q/58Yd4BPGmfOKqPkNFE0=\nR:49b78af0681f5f8d05203e7e649fb2ba6bf4c306601cd50635223cfc4279a3f7-d\nZ:Q16//eixrvb58qGFar/IXI0dl8RA4=\nR:49cd7e97fafea3b61521c998faa7f32a0b71570992751f1a585874d57f17f742-a\nZ:Q1O93o5eqW62XFkiooC8TXe0TMWoA=\nR:49cddd6e5b1066feb09096e40b07d201514a4cf4b72241402cfad66cfa29c12b-a\nZ:Q1gN89vY0xjPTt4lA17n/QOpqTYro=\nR:49cdf90f12e54160fdbab23511f50f4f382a32bfbacb16572a2180bd2f2767db-d\nZ:Q1fhWbbLwe7U1XbF9pU2eNmWFB35A=\nR:49e1a4325fe2c758e6c4c12a6dea96e289cb04833b7c5f36c3d204005ca1a6b5-d\nZ:Q1aEABPJmMDiunf1ReT3wFbT8jWZ8=\nR:49f33b5cf762eaf3b17047b315fae1009990570fe2646eb239bf044de2f2e6a5-d\nZ:Q1zRJOcPsR/7CTI5vAu81VClg2gk0=\nR:49f6f1c2b3ca75ed58f292bdfbf26bb4da7655cf8a90eae5bec8d320c807c53d-a\nZ:Q1hqoIFZcUXDthgAHJpuvF59uaBlk=\nF:root/.cache/go-build/4a\nR:4a2d6d737684c0dea843383d08eac8b8bfd7ba8c58d9f67136735e0e60c5e795-a\nZ:Q10P4WLDRy2lhZsnznO6tSpF1+ruY=\nR:4a3051c172c295919ad98da394ad54f58c14dbda281cd45e44409439448794ba-d\nZ:Q1fTw+3NcanqH7xGb8AC5ZwQoEWbI=\nR:4a3a8b8aeb425bf565f8d06d351515096cfa9910e5e7ac15ef1bc13e89bca1c6-a\nZ:Q1d5kdZsnBiXJnla29nulykh+acJI=\nR:4a3d139232dd4180a62b65a6d46e9cf2c23fe004f14952784cbbe69e2d6c03d4-d\nZ:Q1VWZQSruVDZ71Bcy10PJpCEf4Ius=\nR:4a4ab9588c709a4e07c7a19fad3a2e8a77e228903e5cad9037dcab4ef5eb5a9e-a\nZ:Q1qXClMbsDQSkwFg65kvDiUr3vDZE=\nR:4a4fef1daac706ff5eed0cda3df682430719f5b3690e8ed37956d0a53f037703-a\nZ:Q1Xl6kFAznj1TcczNTdk2j4BTgALo=\nR:4a679dedc2c11e6907454f4dd008c56f424ebfecb18099c0c35acd333fbf08df-a\nZ:Q1z3yHt7zEUDsrPQhr8Ru5bUyI+tg=\nR:4a71818cd578ac1ccf7ddcb850e1553c1b94f3049645f829a75a223e67af0f04-a\nZ:Q16+btVcYJaAs9/mAwEIE+pipn2TY=\nR:4a73ed2d9e7d9f2a89bc3b42d4444c2b5726fcf0a9c243a5a48c7f1311a0392f-d\nZ:Q16r2B0C8eGEZdQDeVZeXKAchzQdU=\nR:4a84919f02f67776f872d8c57d5a1d2279aebc5b60c8b8f16941542af05d7c03-a\nZ:Q1mQQ2n7tTU5dQU/RaIn7TBpoXbqg=\nR:4a97b13511efc4372ec8bc7ceb515b4a7e60404124b1d34429a7c1febd7afc5e-a\nZ:Q1rAJeIxxFiklekgMVaP84GuQi/TA=\nR:4a9aa69b5b7f9e6745d291717b5c04b67f12abdd4d8f3916580317c7d99b3a3a-a\nZ:Q1SA9RhY6Zt5iSrl1TlHorAvaK3+A=\nR:4ab1544bc009650931509b7a1a1a9fa273fdfd83edf9a07beb2989b950560fb4-a\nZ:Q12uh2pCVxHYCagoIkN4yMSgs5KhM=\nR:4ab414e3f70b5227c4882f0f3e0870cc31c280262d38f328f9688f63fb556a46-d\nZ:Q16WgD66nKzJGeaRaej22nWQgc4VQ=\nR:4ac23e6dcf1a70bf8d90bea1b37c3ac94db518bace5edb57fb4b94ca5b73227f-d\nZ:Q1nYd7kHqEv+3Jghc6a7BviJ58IVk=\nR:4ac87f2a63bd21c3296337806f3616eed03a7a2f7fe7f08c55434f82fe5df81f-a\nZ:Q1OuF0p0p1dWGnNjKFa6rBUCxZzBk=\nR:4aebf80a724440cdaf86ae37e183c4cf2a343c232030b9f7830a643d296ac2fc-d\nZ:Q1i3BO3eEaAOGhmOSkbe1fZVvX9mc=\nR:4afa1ad6ed5e9992a812b9c3725c9bb897f7f376f9c78d9da6619a02506e1d7c-d\nZ:Q1D/nu+GYVKBXAGIVF+yLTgUt/9CU=\nF:root/.cache/go-build/4b\nR:4b03a62aa24f93ce7219746bddd81912cf1b8aac9b957e45cf169755bd2f8107-a\nZ:Q1MkXmL+BS6O/mr5ku/Ba+29RRA3c=\nR:4b116232d06f6be1ad647fecea575c070cb14ba75c7576e0b5205f2c3ad161d2-d\nZ:Q1UGQ/Px6EyM5jirMaB7km9YcgkRo=\nR:4b1fc8f04ceacff5865fd59dc0b5f77095c8c1fb1bbb0e1efcf1e79e614aafb4-a\nZ:Q1vEBRGG/cotSp4GWs7Ox6Q6LM61g=\nR:4b28fb859ac00eeffbdeb837b3c4f22793a85d40b6a6136770bdc143307386fd-d\nZ:Q12Bt0xCBf4R2WzQXtSx4+5duN3gw=\nR:4b29727fc637c85baddf6295bc8ffd6e852d8e778db3eb677a1c739d935e6f8a-a\nZ:Q1OHKaeTfd3ozYPCYM8ChcDLg9Caw=\nR:4b310fd991220cfd7fa772d5a828d39b32fbedc5db72dd7cb22724c6731f990a-d\nZ:Q1B9Qiy68IKngZ1giPiMc7OKDU5qk=\nR:4b368f0451180bdc43a56a3653a478cf59f14dbf4501f01f3b8af8c5cadc1314-a\nZ:Q1TBqsdh2JN8VvfMhytHdFVf22W8k=\nR:4b3b75118879f256073e84e631a0f3b4cc00f824ded5ae337a3f9421ac278679-a\nZ:Q1igqWOy1WWc3Fz3SU5yyN18cu8gw=\nR:4b75f2a15b3316eb65378a3e3a852597b9d857804afcf25043116b123ce3af03-a\nZ:Q1GA6QajApUspS9CNLIEjscVg8HBU=\nR:4b7df0e996d9c7746970d60749d9e67e2812da01108b2b63d38e871670fb6465-a\nZ:Q14z+zZ2vvdfdFe8C/2+ka6MgbDPk=\nR:4b9492eecc2e45595f403cc9c2c948499a4b07d6d528284e6bbc5486cfe640c0-a\nZ:Q1v1+xC0lLHdK9PK7YggeeELJeqYA=\nR:4bb03ef5983003a093f7b40914d8c3f4dbc2164a6853f4babf659d47e8e66ea2-d\nZ:Q1Sp9TOZp0Q9qI6U+zI0jfriNUj1c=\nR:4bcc775b58ff2d5043c152338db7154fb21155226fd76e69a3d4e91c449fde75-a\nZ:Q1HbX5362jfzYOgJ4TAuGsJ//2cXQ=\nR:4bd036659f3841b8e4c30225273125a4c083f5381e2a2ab66a654415d16ddd75-d\nZ:Q1Cy14/d/7BJy7/sNPpNK8C4heR5I=\nR:4bd6e975d1d15a0ddb6e6007242fd7436a1c97ff28c73092fd4a2b64b02435af-d\nZ:Q1EJJHdGjw3wOJqSidVAYSiDV0Ru4=\nR:4be09edbb859e51410de2c5fc93e0f29d8adb97ddf4be5442b73840ddcedeefc-d\nZ:Q1I9kiW3rTY2PYq+to0HJEy3rlJ6c=\nR:4bfcd15cddb03e2015858483ec2a9a4ea94adfab4379ee034e6bcf925aead7a9-a\nZ:Q11wRBe8lpLitGBEDdeBQk16VzE6U=\nF:root/.cache/go-build/4c\nR:4c10d2e87dbdbf14d4c32490c1c095a72a6ac1e9e2cf407cb9f2395415dc14d0-a\nZ:Q1SklrNzd10V+P01l8n2grorikp/s=\nR:4c1b13bc6690f32c7ea9a85e19a23dd5c309d4fe2da44f779daa831ac649be95-d\nZ:Q1wFZ7NaappIklvLYK2T+hlUBEsjo=\nR:4c2a2d490e367bbed4448fae501e4610d2fb2203bbcd483beb15336678b627bf-d\nZ:Q1ZJKh+XlYPc3iWmLHXJufR/guKqI=\nR:4c36c0fdc4bceaf51e76bf3df76be7ec411449353ffcd9a96857902101b2dbbf-a\nZ:Q1LIcQ+X0PQv9zzpntgVhMwl6hcGE=\nR:4c3dbbac608d974b553c92cd3862c8f5973e7909bb14f269e7e835c1de0782ba-a\nZ:Q1fsKNKn1Gb/MdO8zPB/f6iWruC3s=\nR:4c50c5fdb54dcda3e33fd48415b8075627600d02f23da4509d0ccdb2ae68a4ee-a\nZ:Q10fenHwx6KkRTpBHx+lYUxf6NTzg=\nR:4c537ea1b041fda9c16dccce0393e9589fc2ecae04d6975514558cbea1515ca3-a\nZ:Q1v2wTJEm/o7zkME+LEP1l3HDRQyI=\nR:4c5e6fcc61ac0ccba41a4100f9e811fc8b4382f00a0ba7ff7662d30f2f58aa24-d\nZ:Q1IaiVvB6swfEs1A6Uo8m5mIOGHs8=\nR:4c8188ad379372dc465a3f85970fa4eabd0979d2e7cc0a36f3a93a996c0afb5d-a\nZ:Q1IIHo15LzX12WufrgrAwB8FJhCcM=\nR:4c81d01b597d7896db164ea1e013621737e3a5c0e06cbac7fec0a4c87f5c0441-d\nZ:Q1ffX9fUM6dVsauXslT27TqZ+U2ds=\nR:4c853359b7f652e81ea2603d8b5b911bcf6eb65416413165a7b0ba61cf66f441-a\nZ:Q1NiAkC+y+dTHGYuheZfcYC2pe+Xk=\nR:4c8a9f25b08315a3e6ffdc14724d8f1dc869ecccfd4f82f311e308e9bcc49d3b-a\nZ:Q1cUyonYQOP0DfCHhgVUlrX9+2Qb8=\nR:4ca134b3594cd539409186ba23a044ff38432e676b98ab416ef1086e399c8ad9-a\nZ:Q1W0E70uMslEfYbjis7VWI/9zkvik=\nR:4cffcbd4a7f1255ca3696f5e24e0b1045d14c25f1f90cbbb077b5d6f2d11e68c-d\nZ:Q1dLD1LoYY+g8qR7CzhzClURPfP7w=\nF:root/.cache/go-build/4d\nR:4d07c1bb446cee91f3291e5f990723a08097c2c28c0536e65fc852ce326bec2b-a\nZ:Q1+SU2HDywjPeZI/jNJORF0iUQNOQ=\nR:4d1d83ba96f4a7d07660d38c9359ef6e5051b6b214e2afd94af6a25ad6e22e79-d\nZ:Q10DiTjxWSIsGkQlQ/byRZ5Kbt9K4=\nR:4d24af5d607cd31fee319a7fc24273ed4608e97b320968aef44aea2dcb9bb093-a\nZ:Q13+PIaQx8nga0zqDX72yhs01lkGg=\nR:4d513952c2ae96d28ec793495d602b608eaad968091f0161b596cb3ac74d9cda-d\nZ:Q1hKQbaK6A1jJ/FP4cOfz2Bo6Hg6g=\nR:4d707958499f38d8310e958b9e1186c5aa76df7ee699722b7dfb8f7077e0a88f-d\nZ:Q1dYbqJPHBVVb9SmXsxM/ZE4vRwXo=\nR:4d737cbe459c232c8395a02b9e5d3829397e8ff627884fe555f5f411247a920b-a\nZ:Q1ec4grxIUgd3/vYnAGZmueqgXZ6M=\nR:4d9e7c45fdaba3f958534f51b7cdfe75c6c53c1ba251869bb1a634f044929c44-a\nZ:Q1oPI4RKy8PkBCK1r3TlIW1s0PTFg=\nR:4db54ecb49d591213b1a9d85623d29289e25d24091bc0a4382be1e8a5706cb97-a\nZ:Q1lynDmks17BoKsF8dPIry61VGy8M=\nR:4db5a29c9c21de96dcb4d1bf6c4faa1f940ee1c53d1ce6d9609bfacc93fede5b-a\nZ:Q1RRS+gLvZ4qBreM8j34n+gje+2vw=\nR:4dcfeadfe8d4f412d9d0d7970a0856e706e06dad9d6b71bb526c1df86a7f0986-a\nZ:Q1sh+H5S3sWJMGLuXPaW3yg8b89qE=\nR:4dd4fd63c6bc717a7f37e106e28493f67e53822f5b6408ba1bac51fec92f9942-a\nZ:Q1b1WeZwVcMwEbP+4DPuOHWQbqEWE=\nR:4df627fc58c5c6a40bcef471ec891eda2d8baeb5cf4f5770f01f666f7e608d5d-d\nZ:Q12ZlIimfTD9s4bh2wq3Px6tv4t/M=\nR:4dffcfd68e0e948e19db0be6462bf2d60e302998e2228755a347f5d477d432c2-a\nZ:Q1z5/8NGOL2wiRcXujUSMAn1ZZcT4=\nF:root/.cache/go-build/4e\nR:4e08af4335887a8da499d5bee0efd4061142467f5e1e72684c1ee4c790d2592a-d\nZ:Q1w3gtFqoJqFpdRkaBYLt4IYaMAVU=\nR:4e11e51f752038c743ce14f3e9fd85cb90ed620385fead10b76ce3b556a0c629-a\nZ:Q12Q5ja26j6rxM4hQM5D7ajX8NaUs=\nR:4e52a7baaf51475ff3a46567557497e8e8a0422897a3a5daba5b0cc99796d341-a\nZ:Q19dK+QRO611H6AgSpGnD4x7ykoLQ=\nR:4e7695d21337363459e34e043ea5d00d0d540f059cebddff2466dafd801fbafc-d\nZ:Q10RTPDsKcANOx9dI852yQ6fGVM9A=\nR:4e7f05591934a64a48c733f29b1ff793e5450969801ea45562e60e1101d18405-d\nZ:Q1EeLRB0R0GX7tAntnD20//l74bwo=\nR:4e8b6f17b136e1a2fa447a7641d1eb502909e4a0af6437ab6de130cfcffe3ed2-a\nZ:Q1MQpEQDuJx7lad+nalAs4Jma3gr8=\nR:4e8d553699bcfe7aef7c3e017120b36a577d7a714d7368b9e5de6dcf7fd68b67-a\nZ:Q1Usto/Z76anDqpq1aEz8GXJPIht0=\nR:4eb1ce53d4583fe0c797fb6fe00afab13ac5c4e774158ee7776050e325045c15-a\nZ:Q1VjsXGHwdwqw/NhBy0ZlcC3VvkvU=\nR:4ebc84c44c032a9c358642f2834f1d41b14159f684997379241b911216b1ba77-a\nZ:Q1OxHgjmO2H9DlmSh3bRtmJ0e/Poc=\nR:4ebf17468524c7755a6d75e6559266ee70f3f4a78f161e03890ca00cc2aa1fc8-a\nZ:Q1Hz5oj2g47aGsMNVJEZOj5j+fkX4=\nR:4ec0688fa80c62be1b4cc93b40a523a0a81fcfeaa89d539e200afc7e920b20ba-d\nZ:Q1ImrM7CtTmovBvYUhmusFKZJYMAY=\nR:4ee1252dad4e5cb5c7915956ffaf273fe4cdd417fbda62fa0b10840b9dbe5d10-a\nZ:Q1n1lDxMOf/MzEYvICnJmFGUCRcVE=\nR:4ee604a49a4cc091d966a5c98b7aed6d7e476e92282a98838e3314ae84dfbef7-d\nZ:Q1F7xYq4oQIw4R9mcGi81OYeQj0Fk=\nR:4efaedc2809e6b0b206e7269739362353581620d868fb55cc8e0244cefc8204f-a\nZ:Q1C5PHh4Q/f1qDtihlsEUO7RZgE84=\nF:root/.cache/go-build/4f\nR:4f0632d1f366a58d3868a6df4823d4385c652de65263ae0e5b74b6f265d419d4-a\nZ:Q14Vj5l2n6udZXBPh+roTkH2LuU/g=\nR:4f1a355d67e92e24a92d6d07788f42ab5d1c2e3205a14968030675a76ffaef44-d\nZ:Q1yLjJoo7a1+VXOctk2Wr292hyMHo=\nR:4f1d26802f5fdab86696b3bb6b426f46b1d39b8d2690a55367365ca31bfef49d-a\nZ:Q11XrZ4INIx/nknhMi1skzMM3FUhk=\nR:4f2616fd8f8a9e7a4423fbc5eb68bc0fae901af7a7513245be62be7307c7f0a9-a\nZ:Q10zqwlVEfWO56ECfar9WBO74R7pU=\nR:4f7267809709c18380d29ae596af2f5647b891af3813ae590632562f3253a5f1-d\nZ:Q1tHwg9ifhzP8cWWe2VVoNQrx56yA=\nR:4f7788a17e81d2ace4ee057abf2ca8df07d6ab7671cfcf2a4b176dccd8c572ef-d\nZ:Q1oNN192lalK7IVOKLMvxRy4inoC8=\nR:4f7a654a48c033a5ab6a34c8c30724f73f4f77dc836cf89934ad50b27486dafe-a\nZ:Q17/Nng/NyGMu1Qxk+kFVrAV5ETec=\nR:4fa60792603f4bff9c7cde1e1acd59069f3449ad29f6be423a5023de6571c6aa-d\nZ:Q1+PDcWZ803ShNmqbgC/kOpmmB6lU=\nR:4fdf5ac2ae0ced14d32b4288f1f4a32fd9ad54b8b6d87799342f6a4b85f9efe0-a\nZ:Q16COm/LjZyWlX+fRMOC3QBVsikNE=\nR:4ffcd7bf2d3a0f97013f1f31199363de4bd854e35c57e25a459086d08dd5f283-a\nZ:Q1PtxCyaS85/oNi3vSUJwGeTWxjpI=\nF:root/.cache/go-build/50\nR:50262fa397b8afb3194f6e0393d19626ec4a707d9af3cab37856b53bd13c3fee-d\nZ:Q1MtBtJPhGodkccKgTJNPKKix8cIQ=\nR:502d95fda0331e54796e794fcecc2cfa6fc299e1afba9b47778465d5355d4869-a\nZ:Q1C19GWVzgm3viSv7ihmxVTtdrG8Y=\nR:5033e983713a7010a2e38a0a9c23de06defab8adb019908a8cccb636640a0acf-a\nZ:Q1mHO6KcipYcbeOMfLxT11rSgTOpw=\nR:50506d81ff39d56ca26201f8928443f37fdc0a9aba9bf65f916f5540440ad15b-a\nZ:Q1k2zNhugB9M+VVz72y+lozD8iXrU=\nR:5058c9a2bc418d405ed15cd08c5018bd2fca9f838d971fe13865b6348c6805d2-a\nZ:Q12gTs0zdzl2yo4aqLmaE0BoAp9G4=\nR:505ba1ca2e53751ae659bf647f2e54a7c09c647a1d23eb1c29fc0d57612332a3-a\nZ:Q1iQnvEJwBARSUXgCZzJ2gy9UdwPo=\nR:506c1bdcb20a33e38560b639eeaa80a7b36c3aa3bc550e78c163e3fad4fcbfe7-d\nZ:Q1DaWBglYx8xvBx723FmlGGCBXnJ4=\nR:506d4c24044a62c8cbb94dbf226e1cc293d5b96223443f81041860417038537b-d\nZ:Q128WdILOnJTVKeGBJwA98uzRXoO8=\nR:5075c307adda75dac87a3c29ec5aaa7a3271382ce0d56991f0776dcbb9586cba-d\nZ:Q1F3gWn2MsEALDWZZguyvrnovWzcA=\nR:507a1730c88b6972eb6b172c269e35173f6ba07c69d86b04c6d1ffe97450541e-a\nZ:Q1elnpS+5jzWqJxXRFvG9BpeOj3ms=\nR:50852b0f22189a3a140a391c1361d2090f1b3963c2be95778270f4f556577efc-a\nZ:Q1kbTjUrhKp/tZ273y2uLZb4/6+GU=\nR:5085aacbb3cfad96373f5f02ac1b1c12ffcc789352a936f11e68d70906acbb5b-d\nZ:Q1rPoJu1IAIZ9FbCJqFnv8aWKK4Oo=\nR:509f2a6081ca538aad917a2eb78a6cddf9d43d8cb1667f95e84abc503a63a82a-a\nZ:Q1eKB7LRDEf+o1++q5+hhYGzdcfro=\nR:50aa337211b84322514a4a4d59d8952092d88f18a188a25314383378b4be5e93-a\nZ:Q19idHIfqEuSKPcJKrUkLOCDKeAZ8=\nR:50ae4ec1f065511e70c268104319ccd7c05d409a47a53d07ac1b8ac31911619f-a\nZ:Q1n7Vel1aV9EdfDNIR+042QeZYyxg=\nR:50aedd3e9fd410f3116fd63c70fd2d517edd007f423a8495114572ee5c29631e-d\nZ:Q1VAGAMV0UQ14fy2xt0AJzLIkEiww=\nF:root/.cache/go-build/51\nR:510b824d3cb3e598469b90ca13704506cad53a5a736a1fe03d782f95ac0ed69e-a\nZ:Q1SKrXEQPK4CyRoTuhBE9aGGthZSg=\nR:511def21df9835fdc233ebcd134397c8808de4ba15f43f9569efabc8e466f111-d\nZ:Q1Mmu2FISLblzi3F9GSpIwxIYbUZw=\nR:51332d88a7cc0d153ff02afa7a6a787a5f6239c8689dce5ff4e89c0d0c7fc63e-d\nZ:Q1NQ2hRtuRpZkc5lMmLpV2bz/+Lac=\nR:51680282546d029a003394b7e521039ce609bd4b5f566d0c9d6433dd5882e2bb-a\nZ:Q1hek2zLwYGhHxC1CDB1jSMYpWKhM=\nR:5183ec9c48be2eeee6b8de7cc065a6a030b0e55929e53088e365a32cc87014d1-d\nZ:Q1stKcjBgxoRJNu02c0rBhmwcl74E=\nR:518450efcefe2055825df1aa6b9a4a58159f242bfd005fc5e700ffe51e10c839-d\nZ:Q19eNHVu0ujO+SLBv2p4L91Auu+bE=\nR:519861751ab2eedb6e25d82316555ecfcad99183a95e84715534fe65aae8c493-d\nZ:Q19erWlbd7YoatBfL86c6VLTef4B4=\nR:519df1467bfcf17fb90a58b5184f0a0e26849672e0cd1086a12c5db3b7f63a80-a\nZ:Q1V08C+L02byNyBtoLTJKx1IbZsXs=\nR:51a0d28be58261353783afcc6512b52d4425269881700f714cdf2802f587f75e-d\nZ:Q1i3T48gJ1vXE7I/eTF55Hln6eUvI=\nR:51ca176e5005065d06e50dca8de10cb1128a43c073be02754950128a7d9a2c47-d\nZ:Q1sGSeueJp1s5sxANFCKwPz2+zqcI=\nR:51ef5b8e856c918f2c846393f505c911d140312bac3d1b1e072b006bac8dc5db-a\nZ:Q1BcNoqle7ji9F9E9er0H57sy2feo=\nR:51f6ca12d0b440e668e3505867a80e6a1b517086aff3493cd85634375284cdb0-d\nZ:Q1sjyjtIAa/EwuZrGVBnrR8bTCmZ8=\nR:51f8ff2052dd3578b05549671c701fe4c7cae0c11ec30a5d710e2675a79f1342-d\nZ:Q1s9Z653p+bd1kcoYPxp/VMmeZPqo=\nR:51ff5d9421f655a023cb59260dcd3e4d70db1f4b7b2cd978d21c8f9f139a09e8-a\nZ:Q1PExnJzBmXgJ+XdS1sXDV2huMNxc=\nF:root/.cache/go-build/52\nR:521da67d5343fef7467e56a6fad9489e0a81a3f11445129f8c68a632e8c2fa2c-d\nZ:Q1e/et/0iM7GG9H/XSIV2crKhBzIQ=\nR:523b4cb89de25d9e1c572f2f4824ff92f39f5e6cf2e69ce62b5f20d235b8091f-a\nZ:Q1BHJd0ALkYOTA+NYRDmUPHRIOjYc=\nR:525af2839ba66241801eeae406b786fb9b48f260a404e932063b29177382bdb0-a\nZ:Q18JUFOCvsbXrDE8/VtQJ4B3GpZPg=\nR:52715dfd70a2f2ce197f9750bfaef427777b83f4fd70cf0d5520fa29d5e10520-d\nZ:Q1iiE+42gXpJHse+J4WnXH55NlSik=\nR:52729c2bbef5a2600bd38d0390fc1d47d5248d1218f3dae76936651ee10cd9af-d\nZ:Q1BP5Y63Quj6fUMGZDt9324/nr20A=\nR:5294583fdc46a679e67f9ed0ae8ad53f146a510fae7faeef9d663c2d0fe810d4-a\nZ:Q1feno2hYs0ls+XDL/0fOhyR6DKjw=\nR:5298664301413cb44e6000cc8d0abe5084c2668ac64be3f678e93b22076d7458-d\nZ:Q1fJJN/vPuR6Yju6pLYEoT7ce9oCY=\nR:529d648f45fd71cd596ed021af9e203ea43c4f872b7ef0a06512ae26b4db50c3-d\nZ:Q1wubUc93L5gr+tiBhWlR9oWWKd68=\nR:52ad56609497b5c7f268aa88a2536537b0a1babc041d0771a12727f6e767d104-a\nZ:Q1T2I85gTz7kP2hYd+AaSSn2Ad6VA=\nR:52af145f17904eaafe4f67e029601ff7babb8bda3d10eaceeb1d7351ab70c3b3-d\nZ:Q1hlYtcUkcIu2WFScTsFR9kMJCV4Q=\nR:52b33be046267b91286adc96d3657428d0ddec8bfbc97623347c88f83b8d3091-a\nZ:Q1Cm1SqtX08cDLaMiYyZU6EepN/f8=\nR:52b88e084776df86a574a1b4e9f421bf11afa1840f6b8517a5d056138dc09e32-a\nZ:Q1V7PDFW2zDyBJLUMs/If/AxniTHA=\nR:52cb0cf1242343c66490851f07f649aa1333e2cbc6d65d13edaae8f80c97c6d6-a\nZ:Q1Zbewo3yqzqRARb6P6PgJE0o/P0U=\nR:52cb0ee9f1cb913dc6196ba899d85b44d59201710e642695ab8ec7ffbb30ed54-a\nZ:Q1m/twvTqjVR500/nP6kd2SPhzAi4=\nF:root/.cache/go-build/53\nR:532fd59f2c8dd8ad838326a4a56e7dd47c7635a90e86807d39700f224b217794-a\nZ:Q1CnmWtEGGQFQnyi0WOwixCofQsZk=\nR:53427d7e855024fa4538e1ccd8178ce8eab123e3de37e3ebbec4b9b6da295045-a\nZ:Q1wD73IIaWxWu5wLFeheUpn8wGaFY=\nR:5353c5c1ecd92da38f8f9c90740272ff139dba7f1e41f23350b1dd2a58641712-d\nZ:Q1rb7lwiAanan+vE7wjxUn13elvWU=\nR:535b49e35e2a8a0bcc172990e6776d7b19353dadc556f9de1d3d88b35fc2a5b5-a\nZ:Q1IBwdMV/FueRxoiej5L1jX46vDJ4=\nR:5364911044f7a5780d9cb6c34f09a65ebd4bbc1103da90c845969b4cbe8bece3-a\nZ:Q1X+CkBkOedxz0wG7kRD5JqxRrNDA=\nR:536b1c269383676f7b9a873cf812e4fd92cc867efe246bd022bd45b3fd8ccb83-d\nZ:Q1C11HEBQVSjbTvx6+nH1nB7dLWyo=\nR:536eb95349cce1a49d59305ddbf382f3b911713729f979316d4de61fc134a0e3-d\nZ:Q1eyAkyQZH+q5o5dt7MXI/GwLi86A=\nR:53782f57a45f2bd5ce7b15198c0048c307980e00fc8fc8f7924b96cc0731c0ff-a\nZ:Q17/m76L7Khs0trm/S5UbotyY+vCU=\nR:539820d64d5dd27a55fa7a0ab5c59b84edea76ef202abe9d35d26a6fcb865199-a\nZ:Q1ocbcPObwPQa8jDo/56ppLjb/2a0=\nR:53ac185632a9ef4277596b7f00add4b28d36c827cf0cfc5d459467d91f299369-d\nZ:Q1lNiRRG9lUVXd8OOiv8wKkeDq03o=\nR:53ae5eafbed664684d8505c2fafecd767b73f5fde37c7c7741887d8f7fffcd19-d\nZ:Q1jDKojM0YdXn8jHFcpydeUkFpUvI=\nR:53bc888a1ea22702c8e589fe1a99c766b00e5ccd3c20bec754c99457fc26e785-a\nZ:Q1lzczoDMrGoqB6B/eQJbHGvL0e8I=\nR:53c1b6345c843f8b0da8788a728f67ceedfea296866158a9813856ef3b4c484d-a\nZ:Q1j22umtBO11eKS6mg/677px7bwSg=\nF:root/.cache/go-build/54\nR:5413521107f53275307c3801fd732375e9ed193a7e104fda636dbc0a4b8bb9a6-d\nZ:Q101R67ZWGOBMjSaOAzg8YCOspSyI=\nR:541948635d17a0696fb7a64e42a423f45f7537ab62dce17b67ec3462251e4f86-a\nZ:Q1lYuG7NqVb1WXFwkiDGlrs7NH/J4=\nR:54217e931620ae884165ba8912a50c537da5c8ff1b7715053bfbbb3966bfd749-d\nZ:Q1pNJjLokzcl4A3HQHPrBpaaShUpg=\nR:5456cd26a78ee4923975717660c1df80e3f9609fea69deafd9450fc618eaa0a9-a\nZ:Q1rtaxbBQ9LHQNc3JDptZZXZ2X+kY=\nR:545d7cb7be71c28b6037af9d112d74613729acce4424c22b9893a5d2bf28a857-a\nZ:Q1HgtHUa++yGYD3A/t0zqvp+q2wpI=\nR:546a7488bdf7a9d6c2a0ca67d63ed3d98886fc56a777546f2434a41a64494a5c-a\nZ:Q1p7vVlS7myW/pjHjZHo80DdXf8Kc=\nR:546efc6a947119382a091b208f8a5fb700add84c30402aa2d384123d308e5c3f-a\nZ:Q1a7Dy6b3H+rF20tBWe4R28Fx3Cvo=\nR:54728e04a8de61fc9ee409ab1092c0b30134b72803440c259531d61b39298328-d\nZ:Q1WhaGtUn/pwx4fAia8LOgoGsL5hk=\nR:548367a597984385b33ef7ec2423c518ab0a04af6a0868d42a3d3ef01dcdaab7-a\nZ:Q1jnXUhszmujf5j5JHhKk6zZxaaRc=\nR:5485079654d058cf6f778d22a21ebd6fc409a4db2d8e81e76a8776e9f63e4931-d\nZ:Q1fPatP2r0szEZh1qWaG+4ri2FQAI=\nR:54ac2f8e8a4c9943fdb4ce0a7e2299a8d00281bda304ba6b72d6dbfd6d778a2d-d\nZ:Q1/HW1K+rbs+lAabbQI4BzgMK5BBE=\nR:54bfb2d50ac1d0369c91a74f2d16c657403af62072ee191f900a0dda49e34257-d\nZ:Q1AC6o1NQGEDF/18J51VYI/TPw/3o=\nR:54c880273f5e317f332c2aa3c0dd4171546a1b14458c17df19d58f4b7f9610f2-d\nZ:Q1v1xyuZBf6F0GHKU4U109vQCMbGI=\nR:54d248e76cfb431ae017348e122552cd99f79611abbdb26f7861048d0109c503-a\nZ:Q1fRUuhTRNnCVcT0pLd1JeOxmEaG4=\nR:54daa2447e852f2b4fa2319893fd4098a7d15885eccc59caf393a1008de26633-d\nZ:Q14AnEBOJ7M4qFzHz+M+SfYzsXO84=\nF:root/.cache/go-build/55\nR:5520eded84dc4586494f542671479f74c3afb7659662812d8fc046ca70e2c175-a\nZ:Q1RUKvryLBWGx4bh2JkTavLu+uumo=\nR:55265fe9aa38577072b2af9a33ec994772d4de062da052328a241d12e585bc68-a\nZ:Q1CK51YOLfBiy99KUQhSHEoV3vThk=\nR:553be68edcb76416ef2229fe2eaf4cdfef9236d9facf6b605bd69e2347357554-a\nZ:Q1y9i8pn2JqBQvSaQjklyxczPnEf4=\nR:555489c792920bd61f3154deac187fd3fea29f9dd6d72fc93654cf1db50654b6-a\nZ:Q1As/lxzg3+IHUPKTQkum3aqZAZ78=\nR:55592d1dca93ccc41a4c1839a950f0d9b2b94d6431eba8c12a2ec6da1dcc3655-a\nZ:Q1OnJKdCgRox6inuDXD36I6mJUjNo=\nR:557cbb29f7ac37287d458046f4b800927495ff5ead4b032f3b724e64b2375460-a\nZ:Q10hE5ophHQrdSP3EcznJ0xp5Q1YQ=\nR:557f5eb2989a32c0647dfb4df7ae2a40dc2aeaf173400da114093751433b5dba-a\nZ:Q1zDAliLHGes8bag28wJA1S5m1iPs=\nR:558cdf75c53dbf68ac043ba9b8faa0423d4b2bea339075c0d3c58ab7a6bff35d-a\nZ:Q1sBO3qPBOnO7Ip1tEIGUTa/HX5Zc=\nR:55b31bc50aa987314f17e3265e3bfb232d1268b2928bd098e6a0087c7180f874-d\nZ:Q1J8pS6HuSYNlIlgqU70Jq/07e7Do=\nR:55b8416d9b78c67418a15e012cf3b5f29dd877bbc3e8f955690527cda826d779-a\nZ:Q1i2FQZW46JRpaQhZgTN2Ed7AQiaE=\nR:55dc06f043d1ff33936f8eb24b2aec33c5295ea640e1ea4bcfc82ddbe3cc52e2-d\nZ:Q167TiNUyeYlODxWjFXMO/QR9hM10=\nR:55f25642a53ca9a44f786dfd812fdbd6b10a1fc7715ebe24e4df316a7fbdd6a6-a\nZ:Q1G+WMtYIIthC1DwierrqlUvIWbU0=\nF:root/.cache/go-build/56\nR:5609262ef6a93ab67ed8fe2721aae8c4d6667c52b455ce294b54b236b41a6a87-a\nZ:Q1h0g9QkqQagWpGC1RWHQjFgDwiso=\nR:56190732426275dd118cfc39635098a00ce437a428fd062dda979630a8090f0f-a\nZ:Q1Qg1rEyFhtBCHLCoExk+hC6RY1uQ=\nR:561ce262b92c7f637cbcdc35baa5a3cff604d6fdf38c4e9ac3c62160bd5245c9-d\nZ:Q1pXrjE8p7LLQQX/5GOfEQfZe+Czo=\nR:56311fddb7420d6da9a0e9aa5ab26f13df026dd18bdaa6d48e95db8f0b1a058a-a\nZ:Q1MBSL12KoqccCS8giJ61qe7VPCmE=\nR:56498540fa901b258ddde80a81b652bba50fc4921d49185bd4dccf69ffb0bbe8-a\nZ:Q1fLrFxUVMRnyaY3VMSICcVQRwIvk=\nR:5665a22b799408de06de358762dbb593538b6348bfeb4543d5ad7e96bb9c300e-a\nZ:Q1wKtvmT3vHYlfYQinLPKy7X0wmT4=\nR:568782f566ac9cc3927fabae719b2a3514a1896bd4d1bcbb08899f10ffa47f21-a\nZ:Q1/ROi9ZkVktqzdsPjEMNWrpmplIg=\nR:568892e8a7df9e615a98ee74b89a40ec89e7406eeab83d3d4240271efbc57cd0-d\nZ:Q1jy6pg27NpU3lj5bsznIOwvb0/JM=\nR:569a276db095d7e0f820f758cae2a90a369a4d956978fa1a5817e819dd86c3dd-a\nZ:Q1YOC08AYQyNMjMuwQBRVQA1wwxIQ=\nR:56a371a5c9b83da5c11ee13e9a0245f2c495778211d8cd2bf1ae7976d213b930-d\nZ:Q1gCVPhS3jQhG2qfLw78JUy3PrZvk=\nR:56b724b297f87e527dd5d50f9dc0271de7196ba4e270c43e2f4606c6108a9086-a\nZ:Q1Tq6ciTKdgWEbW6qpL961ZtOTONk=\nR:56c3c667d85d29828b5f080eede2f9887fd46f66986e5b132e96eca67e5f95bc-d\nZ:Q1BFS6ycP6G9P8S2lRzZWmN9M99kw=\nR:56d4cb9a394d1be0074a0ee3cc92b61497876c0e01eee8a9bff1e1747d5e7b8d-a\nZ:Q1UiTng0gnfjky+cIrrjv+EUHuGxI=\nF:root/.cache/go-build/57\nR:57137d2994030a9b13e73ae6c3198608d5eb3775c446170d46525ccfc7e5b6b4-a\nZ:Q1M0+IfTREEMtcn9F7JIGXuFwVjUA=\nR:571d7d3af681ec207cab115766dedd90afe429a29bdaeba29bc65d8f81dc7987-a\nZ:Q1e8bAMBq3eFNA9HGpVmoz/Jo2bd8=\nR:571e65c141f622c574993544b0e487cd879ed094958fb8bde80da0311403004b-a\nZ:Q15EFkj0M+JzkhFMyu6PwNn/L4xSI=\nR:5737ec7fe62425314070b60289191164b2ed4a6a3a760261c5f07ba61baf63f3-a\nZ:Q1b+Wa0R0qWZPpf6vQggXP/rR1HZs=\nR:57465f464df46a3c2e561cc5a810efd15728278387b47f66ae000865881d4a9f-d\nZ:Q1OXuv/iY+B7rnCHGn8q9fbNTD83M=\nR:574aa694848438f010fc1c535392e6f8db6d6e463dd413a554027327caf57dc7-d\nZ:Q1cW5dTNgQ8zb1zfr3hbkFI0uPz4Q=\nR:575cb782a9688ea71010bcb00301b6a39bf5b903ce834e09d2a1be599439f7e8-d\nZ:Q1DOAKzLosJZUorLQmzFwacJAu5ZA=\nR:576a5bf3f5eef36026c44900d801a587f807a4fb35b8d23e63f1bdf7cd7f1635-d\nZ:Q17hm9Wrx3aupeWBs+8Hh4Z4p1Fu8=\nR:576c164fc75730435bd16463da133f2dcc4f14f0fd832008712272dd25aaf504-d\nZ:Q1+uNx20sAoh6ktaLgTWFoBkMEmHs=\nR:576dc7fe6bebb0d58d76cf8b059f335b0627329f21a15a1548e9e55f07019d7d-a\nZ:Q1lO6rbYUL30lkME6lJAH1KNWgIVM=\nR:576fadb23dfd42df3ceeba28e9dc2ff97df42e340387fa41586af5667712fe37-d\nZ:Q1hNDJ/0zWXO33sujKAn7mj8K8lnk=\nR:5784c9da01dd4d6205f3bffefbb50526acedbdc6bd70841fb01c2c5f0821e048-d\nZ:Q1JtM4nS/CNPmled8J0Ew8Il6iF7I=\nR:57864abeb7954c6d1214c950b58c6bbb508a6ef8a445b80a8a3d7e840802cdac-d\nZ:Q1QWz3lSu+VgGTw8+U4gi+MGZFcRY=\nR:5787c4d5d6699d2237eea4ffad1ddf8c9bd70bdb1e53289a3d84504e11e4b7d9-d\nZ:Q1zaLpIZqyJ7cYr4VcMiGteIVp0/4=\nR:57a346cc3e27fdb91a7382a58c404a65f041981a9dfd7337d1999549ba2e0436-d\nZ:Q1m4TQiNNi5BiFumwUso4HVDe0jcg=\nR:57d11c7681336b9723e95bc5e2bf6edefc6c17ea2a45cb91573ddcd651a0a966-a\nZ:Q1n3tObFbJ7feA+eqwHVmCO4Ouc1s=\nF:root/.cache/go-build/58\nR:58082f94301e569a26dde909d648cef1318bf470faed016b1eee4cc60246b3c9-a\nZ:Q1aUurmO280QW6Khcg0yt53IHvdI4=\nR:580d688d98b147b46252b93ce32121d361950dd13ea164e48323e7354af98947-a\nZ:Q193PiZ1zUCVjpyhWdDRxe+Qb4ApI=\nR:580df49a57362dae73f278c4683159c90e538847a58b605a73954235cb36af11-a\nZ:Q1z240yBG8FytTPwVKDKAWly+kCZE=\nR:587f8807679d4309310cea1f735086c2334902436a15a2331618179d69b1ed70-d\nZ:Q1/hlZDtETStcXwgegJ7Zpli6UKBo=\nR:5889f3a31fa47fe5f239382010734be3eda58ef61c809782a755cf9a12bc1c93-d\nZ:Q1nhucnuvDOJgJV6N39AMJtf7BeFE=\nR:589231be0191e5c2c9b60f3d650bce6132c946ab76d8f194df51519c9e43c079-d\nZ:Q1REKtVZs13wxMoC4CmsTSIiabAmw=\nR:58c0b1b55d134677321517dc2ad928e3aef944fa42c698ba2e7fce80d0ee5a1f-d\nZ:Q1DzIf4knBDITJegIYpxBbF0R7hbA=\nR:58d9e24f7499b824230998313f0a65d71a7cba853df9ca26c7bcbd9a5ece191a-a\nZ:Q1p8UT+85X+D/awoLvW+dHEYjFpvU=\nR:58df27bc9a4df23c055235661affc39488cb94475e8b6e3d3aa768e11aab7d8e-a\nZ:Q1NRvIKahCJpBwhcbVQgIvNoBOKxc=\nR:58e8c89bb6536d017b8019c48c2f21f6674923939cea25a77bb29cf33b8534e1-d\nZ:Q1k9AnhBE5AUL6DtnSlOe6cCvwMCQ=\nR:58fa61a53ba5b5f21fdbe64202c756ef03c0cbd6578202125961eb1cf73585aa-d\nZ:Q1Dhg4DRDmhA4rAGQXdBPqFYuEFzw=\nR:58fe95177ade00a8062849eee7f0718667dd7de5386f902a36da27cbddad6444-a\nZ:Q1EK7agcr4k/Yz9cL/oukve99Kx0E=\nF:root/.cache/go-build/59\nR:590ff132cd74399fc93ff0c8e8ef2e9da23932546fa8626b2879925671ee1595-d\nZ:Q1BOXyZ4I+KVd7dyRyF6WrIohrQBw=\nR:5922363d1325ba9cdab28f37776659f6f1c20275ce8ed1e8e119955b33698dd6-a\nZ:Q1h98mVyQ/4ffKPVRafQyDJt0lfK8=\nR:592936f305ecb46702ede93e74764732dd643196034e9ab0924bb8fdcc4f6924-d\nZ:Q1iPcQF4oqleamzgoL5/Xpc/ZdaZ0=\nR:59731fb2b7b066926ea83eebcab4b0894d162b86835235704f1288e1752c8708-d\nZ:Q1eeI+wNJazD99TWTQD9a7Z6RUtpw=\nR:5973b2269810c06bdb51d1bd9b8384bec814a3a2d1302bccdc5d63b4203da83c-d\nZ:Q1gTDmXN0ZGU7QfUtM5hBAYTE2JVo=\nR:5980c7c4b19cc3bfd6380ada0b6b237b6134d0c200372c4da998c110cb15722f-d\nZ:Q1m/+SilPbk6gfEX1S19XOEVMQUUI=\nR:599a9d2308ab377627e12ab184bc57112e38f3aeac139d1736fd5430a6901431-d\nZ:Q14eaAo+nojlje6pEYmoR5T3K0d/U=\nR:59d1b71c71733cac52d166bbf81365d2c5c058f8957cf456a714f40e1e7bf181-d\nZ:Q1GigGyEWrhaoztS0dRi20yFzd8oE=\nR:59eaf0794e545c22005bff46674c5b576b44aeb3acfcd8af0475cc6910251328-a\nZ:Q11cb8BQayJDgtdbvS85dvY2LGqNk=\nF:root/.cache/go-build/5a\nR:5a459643295b7ddb8bfcea50b4ffd920e4f58cf654839d8fbf8ad1aed9ad0da5-a\nZ:Q1vUDXfGx6M7xNo9B4kyJHMRNnVK4=\nR:5a45c331631209931a2becab770ee5fd53643ee804fd75c6d974a9a3ac8ffe7a-a\nZ:Q1D6136pJWhrBe9jSpErzrdgSO4XQ=\nR:5a494f3fefd5a45753bdf5294ebefa3f1e43db43a78159ba8e2ab6d981b5fc3f-a\nZ:Q1/x+KIMbzwk1t5xzrwkuLsXRS6dc=\nR:5a4d0e452c5416a5e8ed067f74a4a90b3a2cf9c39921216fad17f10f4b45f9b4-a\nZ:Q1xS5S82WHlQ1m9ATrjnlDsWi4R8Y=\nR:5a4f1465490bd21fe5601e1be2e38538f1d90c3b81decfb5a00c25dcb28d1c0e-a\nZ:Q1ggHleXh3yGq1OwLl9tuNKhgow08=\nR:5a6b3515d26b5fe4f8f8c5f1fdba512a074009705a0586352468064151e98690-a\nZ:Q1w1Hyai8g08nMEMHI4KFojhWMQS8=\nR:5a7317da73fa06a0a224364dd7639f20f89db2e810d3ac7d9fbaf70cf9c26fd7-a\nZ:Q1AqL5kofX5z9BfHEva8DbMWYJiwc=\nR:5a7917e716e388111710d2b48070eced056f75a408b3205f67d11d6f0b364bf0-d\nZ:Q1macT5hFT/rDrIpeTkp06RguGiZE=\nR:5a8514e2a572951757f5967556059a5c154ede93b29e94235ba59cebe5793626-d\nZ:Q1lrOoNRU5kJg+9/rFUbJU98vGNlU=\nR:5a87166333701e17a67225442c70c7f3c058ca395e186e359fb2bdf0ee46e2ce-a\nZ:Q1Ef+k3kB3OukFyiiQFDiO0u+Ips0=\nR:5a8dc32a2c3c6840fe49ceba4fcc32a6b497963277b67fd3d5be7b4cd9a64e82-d\nZ:Q1A5wZyf/aDvF2bX1Ja2KscTCtOsU=\nR:5ac69fef1f22381547a0d2a47a0467ef0de388d44359d8021ea68cff9a4e14fe-a\nZ:Q15X+9WOJgeV/g2tHKxz1eW8nlZP0=\nR:5acf4ec024159d8b606285b71965a477fb5becd59bbdad822d753f382c9329df-d\nZ:Q13KFueK6HqRcw2Ev9EuNnBgoQoJE=\nR:5ae725bc2a0786bc12dee0b6d2b000dd56a6884f17011110bb6983025ba094d9-a\nZ:Q15ojxCZzmRwCGsyaL9gTQuj+syrg=\nR:5ae95c08ca10388c1d9d104fdbd5c1115b02934196a48f60210ca4f53aa91696-d\nZ:Q17/IrnUuufMNGlXd1y6Bhdod2fo8=\nR:5aeb346c1757f3bbf79032e3fdc84723fbf408197c71fb5b3e57f893b39402f3-a\nZ:Q1JcCoHQgSibEXtcu5suBWhnoBQ/Y=\nR:5af0f0978218933730b25549ece5da3d56ee85608aaa1b59cc034809e6b2d18a-a\nZ:Q1Ega5SAFlj5pVqkh1R3F1r/+6N2c=\nR:5afd5535c4cf01dc7b42de0c453e02fe866ef3b2cbc829140bbcd9a3f7c3d8ac-d\nZ:Q1XIzmNSCkw8jMi+hMWwHamORyEpw=\nR:5aff69a879aabbc5cba67f24a22971c318ef43c3a80fb2909f41eeb09e33acc2-a\nZ:Q1LGpHByqJ/IO4TYCVVo/RXfnBuyU=\nF:root/.cache/go-build/5b\nR:5b040582f516a27efc5568d68e6869dcf8bf62632f367f8a4e2574b6cec60a02-a\nZ:Q1mYfxGDla773xSAeF6k5AAp9bS9k=\nR:5b0a344ef498b0864a3e2881715e0b8363c666af53c5753eb2a686bdb295db93-a\nZ:Q1fV6JCoWDV9LSNV4SPgD0ZSmPvBA=\nR:5b1417e94ffa13640b6636be48dde327170a63988df8304a511f4e8e6a3ff4ff-a\nZ:Q11pw0v8sZ4a6xaVhdOx9ItG8j9Aw=\nR:5b1d7a14acc5c6720444564c01691d6c15b67829db3b392880164ba66273c016-a\nZ:Q1qUhoXWaY3IE8n4cdEGVQ/XovaoQ=\nR:5b4946aa2447e038fb788db6720e847da32298594202d222d1c169d94c1adaf3-a\nZ:Q1OI1TMLjbPP62DU3D9tw0QsN2S3I=\nR:5b5758547104b8d22fe95acbc60c3a08c84134bc47a6254ac126920f93b312bb-a\nZ:Q13E0HfuSCADVCwm6naU5mprQKllI=\nR:5b5839bcafb6a5a86ce6fe91d03a5ee3b06578cda349651f061ce39519348614-a\nZ:Q1dgPVESLO3QE+GWwmkPhugkF+FEU=\nR:5b5b64dcf10d0b1ae2c5e97f45a9afd2e9b976568698295a13fa2d47d91d58d7-a\nZ:Q1pF57djXQHHe4mCT06JO1EieG8OM=\nR:5b75b98426b086a804d87ff898ac402f035d794d092add22c2592eb51ec7319c-a\nZ:Q1H+LqNRIW0hCjUTROhjmTjIWJDtM=\nR:5b76b1868a2a2167703468dcac55f5f20c493948ea4045054232aa4fe20b4226-a\nZ:Q1q6/eBBxl11ePDBMnrz7DE+0MScE=\nR:5b7c68d5e3b611bf91bc2fade828dc47713de37308a6be61890b4347a3899a11-a\nZ:Q1m3IHHGgaVbbUX1sq6etNEqg9q0Y=\nR:5b8e63e00dda74460e0e34eae8d18ca4309b8d99554c48c4bcf24c536d83f2dd-a\nZ:Q1CYEzmZmjMJapMofClpxZQbHWPfg=\nR:5bb736a84c2eccc98ab1380f5cc66b081e3d7fc5f41fa07e82c18173c53c8722-a\nZ:Q1SUfnJts5yh04iLdqWToZ9/IDwDY=\nR:5bb793fa9e372b144ef9f5df5e683add42934832dbb6cf4566c3dae33aa28faf-d\nZ:Q17k7l4p9FPgIPEqvlidmRVnQivlg=\nR:5bb8a772f9a4de429012f887ae3a2dcf5d2848fa8afbc8f89a32d8fc406d860e-d\nZ:Q1Qqbxtn3PyXChnkpAKi1JlMrY6NU=\nR:5bcd2a31245cab7195cfb7c90d87ed7dac2b41f2831fa0ddde01db3b2a9ec158-d\nZ:Q15Yat9rdpFyh/JRBlBSCcJyUj37M=\nR:5bdca694aeb94534ea44c4aaea29493d7dcbf40707c31225f0f5cd643d6855ab-a\nZ:Q1AFRGhcTADeyRzBE6DEYjY2KOQIg=\nF:root/.cache/go-build/5c\nR:5c06b19f925cd5944b980124b5c03cea1620a3dbe31e7f7e7d3af17899f5fa55-d\nZ:Q1njTsrqYL4KpVf+EJvCQ60tF1mY8=\nR:5c2726a29b702153438666a412328b3b3372fac1c7ebc8453e50efe0ce6c2775-d\nZ:Q1oEcZG/I4Gu6f5usjFkFH5cipGmg=\nR:5c2cedf464dbd720a31ed61e5515b926f2f86cb6bf858a840c2cc8071057e618-a\nZ:Q1M292iKsoCfl0FobKZIeF9oat7LU=\nR:5c458882223c7309df6de94c725a9fdde2d6f109cdeb4bd9c3136b541738aa81-d\nZ:Q1eI0MYq6xyzS3AM0IXSufon3WPXg=\nR:5c53921b8a3050cc63c1af65b9902dab3b892c04675999708493a13cffe83861-d\nZ:Q13OoT9QRZjlsMc/DZERMyJRQLE74=\nR:5c5c86fe238fc4e4d6ec2e37b09614841c503ee186e4243da2558361841267ea-d\nZ:Q16CjAvt2QrVQXjH15Qo/rBZL0VG8=\nR:5c5cdb86e0c988a5e57c9feed7b0b51eb78186be1f6f243285c199a32a9979db-a\nZ:Q10A0OGySG1YhJioECuzZThuPrNRg=\nR:5c67b475b22c085605d121acb8f42d673471e714e135abb695d56213bec6b54f-a\nZ:Q1SQC6VVuQP8Fi+OdHBVc2B8VoNhM=\nR:5c783f3647705f36e145accb3ee4caf639cd7fad1733b51a9a3655c79003d493-d\nZ:Q1bz2ZDBNnmr89/joKs+FWm/Dl/QM=\nR:5c8235134a86a021dc0011bf452106618802b5139cbecf3ddbd04570b297cde1-a\nZ:Q1OXd/He3rwQbVOy4suXKGm1hRBbU=\nR:5c873d5693fac6fe3f6f181e76b570437929924832fd29a15434a266707608b6-d\nZ:Q1zMMJtWOMVPZOEK0J0S0dPPTWTEI=\nR:5ca324fb2e4403034cdbfec91f56e79782629bf3d7f42d13cfeb95fcd0bc1ba8-a\nZ:Q1Onb7ELt968E4rp1HVH8cMAjEVjc=\nR:5ca3e41982bd34a14fa4b5b161e6d515e9b7328f7df39356f77f22276fc497e1-d\nZ:Q1ymrlCsDrFwioPCDFWfSF/3vIyfs=\nR:5ca90fa58c4288f5ca9b02b319272f9539b01cdcc12b601ff876006fc362012d-a\nZ:Q1uCkVSQ96M0ka3eZFMmuzw4en+hk=\nR:5cba5496fc90a3fab16a16b75d84e3f33f779af2b577a979616a556bf2c1aa49-a\nZ:Q1tLrQo1nURv8MUrJlOqdPaTqVatQ=\nR:5cc19548d40594f2d66d1e640f315bdffdd8232698c5588374677d6c0dac500b-a\nZ:Q1f4LSkzO+eP9v3e6uDVyeJEeoe3Y=\nR:5cc8feb41c4bfb874d6bb8e83a67db09a5bc16da58a1a69c2a75fd23ce3e6363-d\nZ:Q1Gwc9nHApPyfN52Tu7xFKpSoDYbI=\nR:5cd4404bec0e6973de56bec56f953650ccb76b91ab45af2a99b3f7bf3918e8a8-a\nZ:Q10Ih+fXi8vdTmz5IHWAtRXMTpxsM=\nR:5cdd54e83c31722df458afae48101a55b35af46393808558169c22161067c124-a\nZ:Q1HbW5nbUe1+8hCKFvs3JnYVIOgnY=\nR:5ce799f105a15b98285477bd3f48d24104e2b5ed510c9e30ac8e3438c57b18c6-a\nZ:Q19U4Xli5AZffH00g9cQbQ2Gppw/E=\nF:root/.cache/go-build/5d\nR:5d0544bae3a1010d131cf160497da49e8b1a00e676253a3b0e3acbf5d7371eb7-a\nZ:Q1fArImugK8jMQckwyz5zz9rLywOQ=\nR:5d07b2cb916fda58cdba5b350380feca773c56ce8c644d85c86c1039da058382-d\nZ:Q19b6xvjvaUbHkPIvtnK93XDMwFS0=\nR:5d33521267ae26b254d0995c39d5576514d0206813630d4086acfb715d32e7cf-a\nZ:Q1cceARMN1F/I7rEInLNlqz08CQew=\nR:5d54b405ccf6561475ca193f1c4e426559a17780b9b4b27dd01a7d5e47497d00-d\nZ:Q1sQDiiNh60/ZD0uKGV8CiVpDB8vs=\nR:5d60d0b9929f71fceb70e1bd8d1b98d4917444963b7e4e3cf995e3de6a6859c3-a\nZ:Q1nNNSjb0+iv9m6wmkyfJOz3nAAUA=\nR:5d72897e3eac5c6a745e9596d15f9559a814854db9069ec803862d4a58110237-a\nZ:Q1BqEsBAvv3F6TzMJhhAbLFvD96KQ=\nR:5d846d97a330909a834d7f0d3ed49e892d2502b322f8e34ec89460a342447a3b-d\nZ:Q1c4jJf2EB6+I7EH9ENCZZeHkTAmc=\nR:5d8ce1b3cd3a731ac356a6bc4053d1eb134f6689aa46e07e95661d91cf2124a6-d\nZ:Q1vAWgzHE+Gwd0FSqPtNMq3CudtLc=\nR:5d9d15236d15ebcf233d874bab66cb4e69e63fb0f2da3a7dd3644ae9fb985790-a\nZ:Q19GVgKGx630U08LzpzLSvkAtDt6A=\nR:5dbf69463f9f47250bbe072350c67f8e01a0711b411e6e2bf9e378c28cb60e7d-a\nZ:Q1uAXOlzrIy2NF7A9Phl7jwqacJQU=\nR:5dc0070c37cbd7505a3d7e6e5766c6a8983b6d8dd93cf094d66ee79b1afc26d3-a\nZ:Q1kTX7N0sbN/5fnMfWfDuWksIu2TU=\nR:5df59bb34d6bff880e7f46ef1d7e8451b1098094f5ca722bcc2524ba6bd6056e-a\nZ:Q1i3c7Phgq+8mY6NzHqcz7ykZ4bn0=\nR:5dff5fd02ca09726e13d995a4a3515b692e2747681b4326ed33f5f902c622acc-d\nZ:Q1u4LPo6DJPgSbSY2K05aFsfCopXs=\nF:root/.cache/go-build/5e\nR:5e02944b15906927d0a035bc43dbd46fe6eb66ad29b2c54558191ea7c5006286-d\nZ:Q1tlSBmCSk28eVT8Nel5FXMdyQ9/I=\nR:5e064b50a0d23423f543de53bf910aebfb69b59e1cdb7e2f8053645ccdb7a43c-a\nZ:Q1l6mG3BBnwKsicM+VYV8BiowxjTk=\nR:5e1fe67f314eed52588b196d02b00218849c133d1e96499e40cdcc16cdd5f40b-a\nZ:Q12Q1eLo6i1IuYZocuzpEB36egdNI=\nR:5e235a562c3155795f02231747d1bcb99afeee41c1064b68187c733d785b3a08-d\nZ:Q13+ihrrBdprwuol3gOglPj0GFswU=\nR:5e23bd6996e5ca85765d225112d2fefc1d10844d4e026821419168ab2a5080c5-a\nZ:Q1DpcQ0hTrMJVVloXk26NBLTSXWic=\nR:5e24297e4ae9b726edae46265e6fd6a032d0b69fa534f5eab93d5ab0ffca7f3a-a\nZ:Q1EcIWvTNfKoXKLII9n49ZNOehvFs=\nR:5e27b3a933a3ffed13fb733dbdbd84b9f4bf535865cfaa674f62baa99e5fb3ef-d\nZ:Q1wP6cKzBSJHWOc90SeDUc97Ha9F0=\nR:5e4147842ce3cf2f349709632342603c30f4787aab851e33be68c2df56d0f116-a\nZ:Q1iOh3o6vroVvmjQgM8p+YHC2oLYk=\nR:5e41e2afe9aef8928b610a090be86b629875ea4371ad13938bd733652d9a8035-a\nZ:Q1JHuTwluXzjGO+a7+H3puVyQl6G4=\nR:5e951c5332bfd0155747cdbf2aa74ab56004961d0385f8affbe7dee73bb33f3e-d\nZ:Q17X0OJAWqsy8+Vh5OyygGlTLySzg=\nR:5ea4ba458938470b3e2cb68366c224641d8a2f0123776151ec2beaaee8195a30-a\nZ:Q13O/1IMBLXl6001rPt+7NI8xCH5g=\nR:5eadaf794d216840deb83f07eb39f68ab634457be749ddc6cdd6c856f382a965-a\nZ:Q1vWhUiq6L7oOPcaxUKVS26mS2xls=\nR:5ec6de73de50fd6e4a89cb8c1499237311d33bc6d3fca57c1024069e9f6408e7-a\nZ:Q150wGDSCYXWDl94fwGJ3VSvP14gQ=\nR:5ee0e753c984b8e34dcaa892c200ac812bace6cf85c51154d8562804dd878125-a\nZ:Q1GiEM5LQfk0T2JBfsPcyEmOH2ZoA=\nR:5ee7d22968b74598358c5f66395010d915372be6c55a1673c54865014d319e11-d\nZ:Q1TUzwqzbpO3V4D5gzt1oJ+7K20FE=\nR:5eea38566a50b9679c2eda4e04b4ebeaf371794e7874e94431ad02799b7e8e2b-a\nZ:Q1TAHCXYtixX8EuUBQnSTSOngq75c=\nR:5eee4b00ee8672010a7c5aad6d8b1604fb6f68786426a02176dfcda07893f309-d\nZ:Q1ibyvzP8O1oDV8S96uUnYdw4Ll1s=\nR:5ef26100374e1a4b5e7aef3993c3156d08a59cd1f4b77ae9e1d8759e395a4f20-d\nZ:Q1H4YFldIeFB8dLe4ynlEjnKU/BPY=\nR:5ef51910cb433acdbdd20844dff741f6b5d176b17ae3d7204f8fc2fae9704b3b-d\nZ:Q1w9pOurwbjcNIf0IByyn2aRQtFIk=\nR:5ef942954a31c0a7a1a0e64d70d910ff2e5f29c9639cd6e2a49c74105c08638f-a\nZ:Q1sAuRSGYoPUfJ5Plzt+OD6/imc4I=\nR:5efbdf638579e3fd76e5a5b97c918700564f3b4a3720d32963bf36754ceae19b-d\nZ:Q1T/qsk5rbljqKFV2LzYkCSqKE6NM=\nR:5eff0273d697079a3803330b0db211ef566930f4c8683b94a26d46696ff55396-d\nZ:Q1gcmpG0npX4WBW4rtI1L1ROcPR70=\nF:root/.cache/go-build/5f\nR:5f0cc71a5a8ab21bd47a8d78d2a35ac2739a6180bf0fca9ec41b793ff5e1a859-d\nZ:Q1fLALFGvu5udOaK7L9y2BacI0WxQ=\nR:5f17d30735582543cf2c5b818449c2e52d956e5da37015f5e7c0f179be04c7f2-a\nZ:Q1Rel5EHh/FaRJD9xP1wCwYq51nPw=\nR:5f1b44d9bf5d2895076328d7cefee52a364a3532d4ec6830e2ea87550fb640a0-a\nZ:Q1cpYQ9VX8uLrcNq9PV4WLK1f4CNc=\nR:5f53c5df2328e46571b51fd25af624db0a285e3e4950e4ebeff6cab649640c5d-a\nZ:Q1p++DX8s+e2yWvf+VLHbt5+h7X1M=\nR:5f5b75abd76fff5531a6087abb9712459b66f01ccb87fbf8272ce1b5ac7d827a-a\nZ:Q1JxI6rEeBPxUoQU7ME7kcSVKJPu4=\nR:5f8099133a94720a113971fb6cbed3c82bb961eca30583c3e47e09a706f08d1a-d\nZ:Q1hNOaHu07aLLQRmLeVA6RVHB6mX8=\nR:5f894b1bd5b8b8b9da69169dfce886d42f453ec2989d4803530ae3f1f7fb65c5-a\nZ:Q1xUzVo220deWOAYn0VNQrskJYtOc=\nR:5f8dc6d3ea1c398d25732032b85b1fa0b2bb03e73e7a34e3cf9c3f6e10a4c33e-a\nZ:Q1/Uxj5jqrdxh/+vnSqDP6ziCesxw=\nR:5f8fdf7a497ae60c9c1ecbedf9f58c3e566c9c3f932b382b75cedee17e90d66a-a\nZ:Q1d3mmENreHAfpIkM+0RAVmpQp5zQ=\nR:5fa87eb20656804d8774d1d2d5bcf712f83ba30ad8cc3fa309f7ad53418c44ff-a\nZ:Q1HGw1r9d53bW+JSx9eDifXpvUOCs=\nR:5fc0c57782cfc620caca877da08d2b4cb54c2117b2121e3dd63448740c359577-d\nZ:Q1uK1QtvO6icQF/ME+EvLUoJpvdNg=\nR:5fc1afc2a8a05e529fce8eddceffe532dce0c752a0c4605630dd0fde221bf246-a\nZ:Q1h8vwafEmJMzAVDrY63ZsmhAAols=\nR:5ffd34980662dbc89bdb2fe2dba864b3ce75b13c900d3f190be763b72fb88237-d\nZ:Q1s3KBPZx2XzU172tcZmn+1qLAcDs=\nR:5fff8ad91b5a4e228405b81a86b15648d76b7ab108acd136c579cefb6b7064dc-a\nZ:Q1jKGyTHeRMYN2ZN8G7sR/O5oEKJo=\nF:root/.cache/go-build/60\nR:600179bf432a76b51e9893140c0db458518e0f6e48ed24ec146ecc8d5acf8377-d\nZ:Q10mznGbbbKSJzeHidqcTZTqx+TYo=\nR:6025ebf44d0b977c5aff2161e1e2a4e0c1df73307e56e3692435e10976e85031-a\nZ:Q1UsuQvSZfprvq6nAziTlIGg3pHdk=\nR:6032fc451d2c0af4489012a4c6d8fe2812c72948706e0718af5bd9842f29bc4b-d\nZ:Q1WnvI/uSEAe8f7FGOzMem1yjt33o=\nR:6043692230947a5b55adfca966999ee7bf9d9f8691321f0537cf95a6acc4b289-a\nZ:Q1djzMKVx+HQHBfWg70g5iu9ISbeA=\nR:605dee1f5ff8882117b62c54393a52cd07b4014294ea56d5abbb534b9191c4b3-d\nZ:Q1q8+lihu88255oW9Z427eCYOHWlM=\nR:606ddacf2972b7a5eae92355188195aec024215e696a9a7192f8fae403950d43-a\nZ:Q1UdpvGxVfpBe0ACLII5uQgHdpLIE=\nR:60983e861dffa97c7b372058ce48f032c4db09d8937294d2827ce989017bf00f-d\nZ:Q1t/yaG75zWH6vgY5aX1RMhL+FEnI=\nR:60ad5746c0608af91631356b0be03632321710ac96e73601647507618b14571c-a\nZ:Q1XDOu75YTonQ+QIP6NpBrVi3i7ho=\nR:60b7a11227b46287e9f538be478ef833f55ef771a0e549bf567c80b6cfc678e4-a\nZ:Q10748lfg28zB2xA+z4VajUCV/R7I=\nR:60c43c25282ad716de976de14f24d7690c02e206d37ed4eae35000df54f15367-a\nZ:Q1GVUE2hCY7UlYA/eGGHHJ63ZwVCA=\nR:60caa0511eb8958f3d4a2475f684c57a294e4cd20f62a4330932a866d588b60a-d\nZ:Q1HBsJFOGX1fibptai2jDFbUG1fFc=\nR:60ce76b7034b77791e12455da201d3c73cbb126832d6337861822ae3f8e3193f-d\nZ:Q11fkkZ3/h9WpoGu1bKn9OPdE31fI=\nR:60ed316e1d1423b1f0ababace33365f9290a5a930efa0e6379d1e6a41123d025-a\nZ:Q1boYMpZbskvG/KFWKq+BsoRxoqCo=\nF:root/.cache/go-build/61\nR:6108a65a8a22a4978cd3c1f7d61f73a2944db05d66c5410e550498023ca203fd-d\nZ:Q1jDffDNsDdiagxKQvRLuwcKRX8rs=\nR:610c5a688146b7dc87b32348dac0b51c3036471df90cf1a90e024dd75530b6bc-a\nZ:Q1RP3TRW3eUxiX/6As7FZEgxkSum0=\nR:61129f88274782cce93e29c157248273e96292bc53404fa4de4518754ea3310a-a\nZ:Q1dsnaS34m1wcfz6tYOqX14Nbykd4=\nR:611333b6e0e9f3f6dd155b886debd7decd0cee8d533ce45e057452e54b50aaaa-d\nZ:Q1g4ehjC5u7l+uv9EHxfJib00gjTE=\nR:61357193c1309069c3d0649c4a1d2d85c911ac1be775b066cb3a6132e8b1659b-a\nZ:Q1UGl6wZwaTuIq89Ex8p7BK5J7ZYk=\nR:613c0d77600b00317ba0792649c47b938953a8cde2dab9cbe550d14e77524a34-a\nZ:Q1aP+6xejqWkwM1wl3WEF/fpgWLnc=\nR:614a572c96bf0d22b769df34a13c12dd862636949500a55e047055cb790b2270-a\nZ:Q124A1fQu+K5Ou2q944SYJ9BRguEg=\nR:614fa322c267b05eeb72650db311a4114c0221a1039cc1b6a44365eefd07f862-d\nZ:Q1qKlP9i6qhe0F6/CltZP94fLOzH0=\nR:616032b28bcda2edf5dbfd34829fdf16ed131aec8f2a3272657196e25374b008-d\nZ:Q19dxT0MkoVRTwR9jR/eKDkv6wfBk=\nR:617cf85dc48ec8b252232ffd2ab298cdd2d9f615c0eb02d051316a602bc36ef8-a\nZ:Q1gmzJUEtnCk2BaGdUlCVDnGZVoyc=\nR:618786f88b0787a1b2d1ded98fdc3945f88f77f73e21687c003cb79294219422-d\nZ:Q1Jv26mqBjSbZVSnR2VKcZ17ladzg=\nR:61a804fd2f56978155f1be13b47419f8125dd47b68da5e2305099995338f9329-a\nZ:Q1F0xq0gDx70OYlEWV1fcuhOfJIgM=\nR:61b81ab4c8e68b650fcab0a8a398f1832897fb237580f1068baa8de8a331730e-d\nZ:Q1AnToI02o2CkkbJOBCuse9Jm6Wq8=\nR:61b8923891467ad567848bc9324dbe2244acf0c49dfd445e33d8a02ef873f65f-a\nZ:Q14etJAq/VQu/YxnXx8PmCF18x1sc=\nR:61c1e2a8855d4a69aaa9c1654d6648dcd54f7781aef3a7ad8f099ea8fc85cd82-d\nZ:Q1jGdB+p0iaRc0DsLVWzaLyWOq9bk=\nR:61d216ad2daa062cc9acfaa60181cd2c714a78c022f5f6351ea3002ce474bf0b-a\nZ:Q1goZxRYR3hTEcE5uO7I4VjGPwUbk=\nR:61d27d943ec52b8e4df7a61e6437afb513fd421953f62790ae0acaab1bc5c26a-a\nZ:Q1a0ttd93a/wVkTW3qICz1GCLhdII=\nR:61df178d8ac52ea71986d83c6fdc2bf3a591ec2a55a5884b4bc25202e5ee5caf-d\nZ:Q13s4gMcqyUf6LVteV55o35bdIN90=\nR:61e6de45b53ddb8372e371502fd7d2a0cf127ad8d3b5420fa1327a106c5e32c5-d\nZ:Q1qbPaLkRrSpC70Y/qQR/j5RTjp3g=\nR:61e7ea7855fe8720ebc79443d0849ea3f6a76995f6cc342a7d0c5bed2f79cd18-a\nZ:Q19O5Mkj1cMsw6hEhwzb5HSqEshTQ=\nR:61ebe66193755ca273d662a27b271b4a1cccd8c23b5705f15ec859eeb6e0a5ea-d\nZ:Q1wAwnVLYLtxjBel2xqDNVwtjzYYA=\nF:root/.cache/go-build/62\nR:6204f42af147a2e0940d83a2870210f121f1ee73a17911996fed2a53e832f598-a\nZ:Q1MZjP/z0F4Rj7mqpCx+LBHnE2+Fk=\nR:62068a4aa1ba23bc439e7ec9f7beeed0e9ab658054a672d8b628bcca05cdd7ef-d\nZ:Q1PLad7nek6RMsZ5UgBfsYyuHmlJ0=\nR:6232015cd730338aa1523f9b6720ce9da1aaf3846394b8c4062e1ef13401ac4a-a\nZ:Q1fxFE26BpVtwB7BoK98CZdWJZ4Ts=\nR:626f3088517c787c83c1dafdfdec48fd6d5fb15f8e5494d4a4fac268c68580cb-d\nZ:Q1Gse7yG720IATN2otlfduJ3xgg24=\nR:627a745d8a9d465bb1152a75ff313cd7054b35d1a3a36c5eb136f18eeb09fde0-a\nZ:Q1bEqJ1Q3lgFVGdaBoJDiUXCXEgV4=\nR:62896c801cdbc1aca4a1042aa1f0f4c954519f44c73db56d152dcf14a50fffa8-a\nZ:Q1Zc3WiPAMXLeilU/Xn8SMzWkGu3Q=\nR:629061142922b73778ba0db47d3d9fe4f04e8137483cf0fddfb0d1bc08cd18ce-a\nZ:Q113wzkQRK98sdXsphBkLKHbj7NVk=\nR:62930c5fe220dce5f6aaafb36bf8a73e081ffafdc57e335b78ae068a055bea70-a\nZ:Q1G72OCSLeW2XBYfxNBCCcfs7Jg8M=\nR:629a797db40d9c2d5dbe28e0105b8381425426f089915b13eaab910815eef244-d\nZ:Q1UvW+BT32pOO9tqqzPCzDUDGzoag=\nR:62b0a0ea7e448381bc0d1d9ebc16ef0a90175a3c69b12460a56d35596021f08b-d\nZ:Q1ngc5bSszpu/U899eWqP3ozCBQWE=\nR:62c46cf0e0a0df515bd3813d0d4c80ed18253f32b3c5aaacbf02e5bf6e0b50aa-d\nZ:Q1PSTfUJU0btO+G4/t6slYRZhxbsg=\nR:62ee0160106d56bb58e00075c303a3ced7e255be26c59ef23a61543a8d7a5711-d\nZ:Q1wSFjPWVzStD6uBLSB41NOS+f1Dc=\nR:62f2f780307e59afdf77a71b2e0d337389241801f61161520b437f32e66d3347-d\nZ:Q1DHtiNryGdkttIIXFh99CfPbTxKw=\nF:root/.cache/go-build/63\nR:630a568273e4241c2830984ababe72300966e59b103ff875c709922554d93676-a\nZ:Q1RtIRiHMvO3MNZzrKUGmxkKy15dY=\nR:630eab4f53de521f898f3a6ba14878e4452f9a652cad41d59ed02603e92449e9-d\nZ:Q1SLreoBIpjdNwXZV1Uiv+y1e3flk=\nR:6318942f71ec2a5cbf662d1343fad2df6d295768663660ba4a793741d41c8dd1-d\nZ:Q1Gnb/OEpYCbZ21IQSZWhS9k8+Xbo=\nR:631b91f6bb09f46e43e79dc5000cf9386c13469b6dd810d3e3f7b49309e266c7-d\nZ:Q1Xy00hfz1oUP5VqzqTwtkwcIEDZ8=\nR:631bd104fc6fd0ab2e2bd04119ef724016f0fd69b50aa3cbe8d45658bfbfadff-a\nZ:Q1O27P21bdAHiyFAawDmdgTx1DlsY=\nR:6320871aa670595284e21054bfd40e6cca41e9ee787863ac094d9f99a9522932-a\nZ:Q1aloLfY9xFNuIVYL+DusFOMONmhk=\nR:633325251dff384c68f1c45a7604d68d39b9d7890903da9dd1557cf366a866c8-d\nZ:Q1DP87b4m+Cv0+3B7J6GTpLosIeII=\nR:634036992ebc5177fe7a0f8cd36ad13b14cd4a7972608e1e2a9457978227dfde-d\nZ:Q1IVsfEQFJBkMRF4NpERE3nBF4MaQ=\nR:635226fed60e071cbcde8966a31ebffe92c2f5740c076975244e76c549ba3db8-d\nZ:Q1hqOKW6oij2m47PsuuSdD6CIzpEI=\nR:63852b5e8af458198e10478609cc462fe3543e5b42bd235ec7c0fdcbaddb4f67-a\nZ:Q1ME9hkxSU9a6GkY4+D0P/mSBA3I8=\nR:639b175994ef42b559ba1f0429f1b12ebc2f8a062b06e2fca1b94e206d421425-d\nZ:Q1pGIPPePKlEKwchrSpI1Rfvf0698=\nR:63aec74d5da7745f050822c621f2c20280225b1be4da85323085a15bbc7b5010-d\nZ:Q1nzPgHS0g8vFTmen/hZHDCsBiRiA=\nR:63b166a968be01c3216f8fa22eed3ef0f78c155ebd4e65fcde0468c226f3146f-a\nZ:Q11+AwzTOnfljrr4rmcWH/ah23kLI=\nR:63b73531121efb82ac439fb62ee53c4d630039f97b3971b3d995148ac06b110a-d\nZ:Q1cRUZcJ3pHIFkce/ibmP3uPzcDvU=\nR:63b84a2d88f415b7433938f6e54b20842f373481e7b8597fae722edcd47e6cb7-a\nZ:Q1eUaAJBlUk08DewzTXp9fof5e7yI=\nR:63bd49c4e81b2cac07d6673fd0524c5fb30fcb23e36fd7d42aab0b0afd36224a-d\nZ:Q14E5tmpRXnb8+Pb0nX+YQBI9igW0=\nR:63d225cf2df72df51800d9db292536f1267a10253a4a336d993e99da8282bc80-a\nZ:Q1zZA24R0MP09vCoYrGrDotZtiq0o=\nR:63d463c9ec75f215e06c65695fd1dd4d3a4c53ce71a55815c4b6739b14cd1b3e-a\nZ:Q1f4T1RX71JENYAbZuwQ1VIt83yWU=\nR:63f2a50782441b439360b341792a8f22e54ed6ce518923f941381ced5cb4a62b-d\nZ:Q1t3dBTQCgYodP2fU6F6vjYwYV0Jg=\nF:root/.cache/go-build/64\nR:640f9c84929d8f478b500d9c0d2857d80218e70d01a776f2615f2ef9f0c8929a-a\nZ:Q1vLEA/X39DXtkBmQHG6GwR96lXRA=\nR:64319c33b64aa3bbbb3c6af1d88fc2fae67f17f1158e979dcce01b2a50fefbc6-a\nZ:Q1oVQ1DeYtA6O8NBBTwiSqYpS9L7k=\nR:64487932d21e55e3df0caf85425f5a736176aefd052e43242883efe355a9e0fe-a\nZ:Q1BgJOQ5cJO6SSICJI/V7u8bqo4jg=\nR:644a8a00fe291e5abd9082ebc802fc857ec6fb939428fe12b2bd7346a3f18738-a\nZ:Q1k0YKSk4GpEqrB49M21CDbcubrbw=\nR:6463596ba230ac005cd83fa103ea260af3604e6087620a293da6c06871bb7d32-a\nZ:Q16XJAS3G7h5bROegx898OvjVnldY=\nR:6475a2d3c459b42d03e6eb8d57b5d01d9bf859966a7b10054d05cc7804160bf4-d\nZ:Q1NnqMU2rNh0YWXq9hIVDqonJz5vM=\nR:648a30e7e81f1fd510dc648b600f6be48adcb0384f14952bf37ea72c8da73571-d\nZ:Q1ZMFEvgWniUZvDV0OOImiTVJc2v4=\nR:64966a0af6c868d06865b88decc3cd9f0300dd97463f187bb96b84f3ce540ded-a\nZ:Q1OuMCOBV12C3Irsb5pxdsn0NDTYQ=\nR:64cc487a562508a6f35ec95536046cbc7f080dfd7d1b4f9bf9ed0e4429c6fb8b-a\nZ:Q1kbb8KQies8PYJFAr1PgjzvQzzds=\nR:64d966da6f2a7e63f4760a89d6cd1dd82d121f098b9d98f5702a4fd0d0ce47c8-a\nZ:Q1vwzRV2IfQuCRZ0UG7mH0rdOJt6A=\nR:64dc0be68286587f44b68a4fd71e0bb2c7c27dea4d361c4647aa0b03b784d114-a\nZ:Q1jvQHXsTMg7AALMmCqVzhmv7pDrU=\nR:64de7f5a651cb0d4d2d71b1e81081ee2176b8010f796f3bc0aa6f6adf7508f4d-a\nZ:Q1vvcR2ofkr188KWXKjr6u13Wtyfo=\nF:root/.cache/go-build/65\nR:650198b2e9a64e2b341841bd084c362df66ffb58d2bc250a16f6949841d4b566-a\nZ:Q191SQ4eaQTeQe5It99NV4gWdR2Sk=\nR:6502aed55dcf0f3db2e47ef2e2d93ad8f28113fad0e15347b0a098c2e40ed223-d\nZ:Q1p2c2V0I/9Q9VwJFeeu1kiPw1xno=\nR:651da49acaf539a851a5efc2956c443bb660d71b952851eb9d5f6cc23d1b8c30-a\nZ:Q1OBhdG1k+HPWez6wEdEqNmySXnoQ=\nR:65417d7d1e686670c245d0c973860bcd4169be2f54a5eca8baacfcec7290c581-a\nZ:Q10/ivYJvlcPliV0ljUCqZfxw61is=\nR:656085096164884af56d644cfd552c240d72777a3de224ad6f17ccbf568ac090-d\nZ:Q1DlxAtp3PhXd49+IBuCwflt2NmQc=\nR:65869cb57a80fabbd7cb9e325b5d3d8ff700c318e525ae78795073ac356764a5-a\nZ:Q12nUDhN7iS+6FSBaX3gd0Opceqx8=\nR:658873f85b99f9955af04d898b7c593463e8ad76cc9d72cb76c48eb800ff3456-a\nZ:Q1QlBVboAlNCbCNVjPB+QdC3cy6Ks=\nR:659191a2e399c79046be99ed4945bb49d9ad725faabab03b993b54db136a8644-d\nZ:Q1eGt9QHKJUszTsMPxNTSWwulGFWQ=\nR:6596ef63be6a5e263d2deb15c921af82b0d596e4875bd41a59343ae278970fd0-a\nZ:Q1mefz2uDLtIa9LqiQQdN+ZRPV2aQ=\nR:6597adf46a8354126573979982e296e5dd8b1652395ddcea97bf74e4951c236e-d\nZ:Q1vLHZOHxzeRtFUmmO9jwCX/uieLA=\nR:65a92e96e0287326bb5c9b2e301c71dc709118ae4ff6250842a24900923e1253-a\nZ:Q1zDIlfVSOLki1pszj/yXpvDezUi8=\nR:65ac1c6837205c10d039aedbdd5893d87371fcd389b1fcc2a4470fcde5c9ebd4-a\nZ:Q1GMV5Q1bK74BDhyzINfZ5xINolMw=\nR:65b1d53fb18b4647b4b4b4f0de12a34e3885606950344b62dc48d8360d8460da-a\nZ:Q1NNa9l4o7CRWJ+EOpBsWs4ZkbqAY=\nR:65b734728aa8a12b79b8977bc8ebc94a0456e9073fa7d26884405eaeb795634c-a\nZ:Q1w38ScLYPPuCVyH58un0+VJYwt5E=\nR:65ec7b092f2fbac1adeae0bac199237c86860f82917d6e679f31f5a55864810d-d\nZ:Q1Aj7600h6Zns/Mg3oQReXYnS57VE=\nR:65f3d16dbb2382c7149efe270fd5672a8cc0a9d09fba470e87fcc7568d7b30df-a\nZ:Q1n51kET6LtMNVQSU9mcDJrRso8vQ=\nR:65f4ae875b4d76062c6d2778c7cec5a7b54d4b9218160add70154073dde136e3-d\nZ:Q1nTC6oZ2pmLANkQKJB89BZ7VHZWo=\nR:65f72bdebd7d470f85ee401c2564665c53f1ca245d3d156d64749b24c8bf8f94-d\nZ:Q1GjzDaZWOREMgWEP5GN+1s1PXsso=\nF:root/.cache/go-build/66\nR:660531271232f58afdc5e775f45956327af52ef3144660362c3349db7f1a4ee3-a\nZ:Q1+2kDD+6KCxr/vMZfhtsUY4OVnlA=\nR:66090f8301456f4d04bc4522a9bd7f202d07f7c2e2cf996ea4cb2ba92ce756b3-a\nZ:Q11goyk6cAoHkB954O76ZABkmm0R8=\nR:660f918ec300f2d0b0120a97bb348e44b1e36795562445dbc627bd3c03a8bbd1-a\nZ:Q10WVNT/tvfq0jw4h9ifVlrL5G1kw=\nR:6624f87de8dbe65a3d30918a51935f718ecb1586ddb6d9f3ce26e3be91db549f-d\nZ:Q10lzf+aBCA+E9Sg2QUvLYaDuuxrQ=\nR:6634315b1cf7ef632371e05e345f0592ba29bb2f52fc291e4d8e50a0827fb9cc-a\nZ:Q197geiyL/EinVOQYTwD+Wt6Mt98o=\nR:663f6875fa3f3ccccc4b2971c7ff44c5fd40f6db252f22990a575a2305f5ea19-a\nZ:Q1+JvYuw78YT/cB3/+sXoyshU4f0U=\nR:665214f76860ec71c09675bd84d04c53833670adf65281471b8fe2cec100d39e-a\nZ:Q1ZQyiBBu9zi9Xr79rrocyMF4ufu0=\nR:6656710cc910303bd1613f04d8bd452bc83fff0075d5da1ee913510c07d3916d-d\nZ:Q1zQacacOxm1rdiXpouIRnuI1S6pc=\nR:665923761eb052f5cdc29c2c960288fb1c66cea11853f29f64b1140a3a470379-a\nZ:Q1DheaG3VwoCBZr9l27hQUjxztSKY=\nR:665a759dd09464e5cccfe29762ee31042972f8b28bf6bf36f227ae46fc6fd887-d\nZ:Q1IUpQc4ZsVOnzZFthIk+aYZYykG8=\nR:666dead69e5110c0695c21445a04d095427ec6e561450a279375c3689ebaeac4-d\nZ:Q1W5ZsqJB1SWCDD8CYm8F1Epb+ImI=\nR:6673f85d4ca930185ebdd741a615fbf0fc26494c8657c9574baa94a74d257549-d\nZ:Q1zjvypReYHzyrBMycflhatmeWXmM=\nR:66965265f6cc6f33d43fabb090f7279d908a2ecf14b34f55049de190b6d552a3-d\nZ:Q1nyr9iJrn3rdR9u0AUEV5wk+sjw4=\nR:669655a8616e52c8b40334fc8ead2e5d037178bf94223b0cf58aef249fe9f833-a\nZ:Q1n4j41KqK6jpl6sdz6Lpia15tdpU=\nR:669975a8b4ea0787723fd9c75154f78793e34bf1cc4ae2a92a12232423a221e6-a\nZ:Q1c+seTOuqUiU7xMtI/wRoUJlMiP8=\nR:66a42fa30e2513aabf4c5ce8f04c0058214c4c95f1c7307201be12dc04cbd2e8-a\nZ:Q1FAodJFmUmLj6BD/wiH9/9mzJFJQ=\nR:66a7ef3b9716e1a40a0c7330d2e7907dcb973ce5e21521c0bdaa605c31439ce5-a\nZ:Q1ePD6j7PWknyxsI/PdYs5YqnLY5M=\nR:66b10b7924bcb0a5e7b476d89e0639bee25a83bab95c5c8e24d50dac227d9241-d\nZ:Q15wHJk0l0s3k+GAU2umD/2Gm7i68=\nR:66b5dccd91e96d9cf6429e38f83db23da8bb21933b425bd987c93f638d189d4d-d\nZ:Q1CVv6HOmrYGsVpxb5YGjmtwvuZPE=\nR:66d1f2d6303761033bf5d2285f1717633b5e17f91f7ae0be4b9a36db92d5c596-d\nZ:Q1ppfeT1xbk7ERbv718SshLgPpLNc=\nR:66dc85a6ede7d6cdd683a4209b3748e5f5c3581498a5f2775fa00b9132fea58a-d\nZ:Q18++afYbTi0/NghQaVhJRUU5GsK8=\nR:66e96757b8aa26ef5b541f226ab733d64232d6ee136c797e52085908c83983e5-a\nZ:Q1BRlqIbXkYurdGKCX9rhx03eiDOY=\nR:66f7bd247c4f4f9d27ba3fcf11ad5589b6a643aa86d6ea4105373b3d3290f66d-a\nZ:Q16RLecQDhO2gDLgm9HOm3oKf4zdY=\nF:root/.cache/go-build/67\nR:6709ce95ef4b6d21975c4c74101aebfbbf59a5e560952c9c546fbafd7370d477-a\nZ:Q1D1BYprkZEGmfyx9q2Jdogt0moGY=\nR:6728aef662260755b96b55fac768a9f1758c364cac5378df083e5b58d89366f9-d\nZ:Q1u+X/nrvmkPEQRNDrFsDPuQE2EMA=\nR:672d2bda2495ed02f4931340ed56ba4f9ef6d7164379d1ecdf5ac81deecef14e-d\nZ:Q1u2rluzrE2Ef9k8FYoUKrW0X/+S4=\nR:675a5c2b173e39e2ba24445a6e6c059dfc3759a00792a70aeb9e372f0a289580-a\nZ:Q151XtAuDdXOKapiXtBgWz3I31vaE=\nR:6762392cb3f845f87ad1a2198da166c9058ef5ae3717c985efb445b19dfbf7da-d\nZ:Q12If7nZmcOftdgo65d+Takx735x0=\nR:67746ad597832bc4b47103cbe0d0fd90e2091657ee4948607b31bc9c4f1cbfd1-d\nZ:Q1/BIMMN27foWMomcmMiLR1XYn03A=\nR:67848f98452a6570897b98bdfe9bfa635d4bdc138bb61bddec39c1fe8691bce9-d\nZ:Q1WAtJonl8+0+qzvDN0m8RUEY4K/U=\nR:6790f71c27e6ee10a6f10572f054261dd9d8448138ccfecba006ae0a4212d307-a\nZ:Q1iOH69au93V240nEUEI50G7sIKTI=\nR:679a9b9a8f39f1f1b43a89fb67fd84f5a3a438635fcddbe0cded0d9d97575e1d-d\nZ:Q1uEwBt5bLk2CMPIfNNz91S9nBlgA=\nR:67a84b0be4a0c2245a2cc08d7db430786f805bc1004747c7c2b2a615c07d04c5-d\nZ:Q1UAPiL+RxrWvC1TPeDFZ8d69gb1M=\nR:67b3866c4b6f7b9372a358265e40bb26630e0841becc1f77c482b5ba40d64a28-a\nZ:Q1pjtq8zAHqnbCIh+hs8oDR41pWmI=\nR:67b3980c936e6ff33ea5d949bb22d097de87bcac523da7607d53812e7c3db49d-a\nZ:Q1b6BIwi1IO7W0n1AtLJlq0Rag3QU=\nR:67c01b2272a0c0f7f6e47a86b619f581f0ce498586cf677683b4d7f2e018c73a-d\nZ:Q1QvXwXZv8YR68o5FZ5q/3Vsbf7pI=\nR:67ee2501a5f0dc42440d0516e1d3e6cb54b147ff52415150f98fa5d5c61c3715-a\nZ:Q1A0e3d5liFdjnmGmy2jQuR9Pqm10=\nR:67ef915e6bc45653a6deb565924a35db9be94b4da076fd4136d9a8a6e754d338-a\nZ:Q1kOTo6xPRfwGfeNQC/gv5P0cwnkg=\nR:67fc2255cbf4015c36145e3a4f172fac67a524ca5f351bc960e9a923596a4f97-d\nZ:Q1NCwzE1gJfbJkkSykIpFFPXv9SRo=\nF:root/.cache/go-build/68\nR:68114bbc58e91b6fdb47f0f0193e9eeb43b5c6070d6046e1585577e8db0ab367-d\nZ:Q1juVrKxffoFyaIvGjr6PHNjCNKOA=\nR:6843226b65187e44118c35cf5e74539215b7d6b5278ac98635c923dd668d2bef-a\nZ:Q1C8ZUg8astFUaSlRQTicwEdm2dYw=\nR:6845dbc33b36aaf116763cccbdd4e222edc3357b5994699585968ec8695a14ce-d\nZ:Q1fcQHS5wh4ZaJbau3WcOQ36SaMTU=\nR:6849e6e87363f52f2e3211d5944a55041300c1d09d96ff8dbb1ac5f2e682dfe7-d\nZ:Q1izmqDOPe98cgJ6EKyaHn++Jst1M=\nR:687cd78ab41c39d82ecf0a7ea184846b79a6aec87119290e1b03484d52b04fda-a\nZ:Q19I2cCN4h3cgGUXKHRlqa/cPL0Fc=\nR:689274875707d2da84f4d7f0b40a7500f79285a476ea9de0dffd9e91f65d20ac-a\nZ:Q1KHaZ2aZtEiplojb0JZHp4CuRJOg=\nR:6898869ec619757d2dcc4fd54489d7939fb6676432de2aa9ebdfb660ad10aa8b-d\nZ:Q17LcpAESUKZzoE2y/3FoPP9u0iXM=\nR:68b968015368c25437656c4d5f3b465238ff257909f7fdad0af8f745002c3e4d-a\nZ:Q1nD6bnkiDwrRkz+B1OfAhRp894Uo=\nR:68e0bd49bce0446bf7e2f279e14c145b53ef0c42d161fb665748d3d4cd43e5b7-a\nZ:Q1UmIiHyPvxE8/d7UPPIZcajWAsXQ=\nR:68eff09eae9400ef8037fd33885b9749751489a109c3c2f8c1e071a341cabe47-d\nZ:Q1IfLzA63A0FoVDMnwkYQxTNiNUFk=\nR:68f5125fb68ae9708133a95fed50d8384a74274e26233498ae5eb6027d3c60c3-a\nZ:Q1JI1ohVDtQASLExLIozU3OfBRB80=\nR:68f63971332779470bd74ed77fc909e89b71dbe720b50cc8cb90809934252241-a\nZ:Q1KRrRxBZ/46PEuyZKblN8hNfQC+c=\nR:68fd5694b5ca095befe8c0a0b60dff18dc61894e65c955e7130562bf191b527e-d\nZ:Q17wFySfvcP48Tmu0tJ5ZULEcO7C0=\nF:root/.cache/go-build/69\nR:691adb3433b6c43171640bd63406b820f7b66fdf319c707fcba91e57d1d09c11-a\nZ:Q1c59FrH5nS7zJpZoR0Y+Ls/c31+E=\nR:691fe7493bc517a4f1dd215f6a7a553731f4acc7a00fbfe1831d12a2a55db4db-a\nZ:Q1LK8QgGnG43DVHImfT2XwTxRA9yA=\nR:6924899bc89ac6c832ecb074669a51c8409a6a0e09cb68573f91d398107443a2-a\nZ:Q1RL0ebtVbFbwlUeppsDM1SynBxoE=\nR:69282cfb3f55a1ed1fb8f8179f21b4c0ebe45d7fd355410a23c1080c59ec9c28-a\nZ:Q1OUeLLVxQx+pGsIzrfcqoe9kRx1g=\nR:6929abd0ae38b8491e3abfe57e5c60d2dab0044ea268aa758d8b86672100e454-d\nZ:Q1HMJfOnbWIBVAddysdLMj+LJmrfA=\nR:696b5cd0cf16855b8bfc740887451547d4a0f956b68c6606801d55f5fb3489af-d\nZ:Q1pZbD+7icJkTCZqExApHoUuTjVtc=\nR:699ba9cd23758c13da5c22d590012d84bdc9bb1a2ba610e560e70dfb49241352-a\nZ:Q1wzJP3sqI5t8BofVFDfkQtFzWdro=\nR:69a574f13f8fcb9c7685d590aa5f54e4132cc6be6650b1e9b5e5367d9318e144-d\nZ:Q1X73oHWnaJYn5ftnhLMNOTB9womI=\nR:69b01a236bbc48dd465202af803bc78fa0615341fd9f5ea7e66b92698c765cca-d\nZ:Q1vMamJCQj3pTvyE78v6JHj9XgI2A=\nR:69c4935956260939ed1382b0aa48ed1531071cd79305b2621d97ab402e2f43b7-a\nZ:Q1OI7EXLd3taPBSYCrbKbdfw5rvuk=\nR:69d08c638bb19c11f5659fdbc316938be7986cf922e771404f544ef65053f15c-a\nZ:Q1bsTiR8D3WVllHxjoLbNYxSCUHxE=\nR:69d819f2e88b108d0945ba938418ebc6b2269ae446265deb6c84fce853cc2c68-a\nZ:Q1+g7USae4V9uXjg4FjeeLmoZSWVk=\nF:root/.cache/go-build/6a\nR:6a2aceab1e946b3364eb36a107c89dbae830f3a4fbfa379575006842f8ae4111-a\nZ:Q1wnmPAPBx7p1WvFOPUG/fHRa1cn8=\nR:6a32a0c786d8e35ff366078bbd89cdbc08320f6090499fb0de209c2a79671dc8-d\nZ:Q143LOcbEDv49giglr3cQNa1MUeQ8=\nR:6a4e31d809edf0e0359ce78206a4f5c1003c4c205760d6bcc88dfbc71a0d0685-a\nZ:Q1wNt28S+lIgPZcPf1bjMZWOYV3p8=\nR:6a65ed6d270c28b434b308c3f79e08b31b1222b7a5c7be94d679bed3eec1977c-a\nZ:Q1T9fmaf7KvAXqqYDj/UM0NMCSlUY=\nR:6a74c3c217a18d6be1084911fd68f3de6b69f222f74f55e611a6e63d3343f9bf-d\nZ:Q1FC1OlbYJAjmF1eGMfw7r83I7Jw0=\nR:6aa3cb016c651ecd01a27b776e79e6779f991ccd353ae6851035d9c6c3ed90de-a\nZ:Q1/fwZxw4ETPOIV9X1KmnaZYSJnH4=\nR:6abb26723d540883544f04378828fc970e9c326cb8775d0ccdff7b1f79537f81-a\nZ:Q1bqsedfWuOLttVywLl7JSnBeHQrQ=\nR:6add78939d7845c643803da89d3a6c08cf6fb931d3155fa83db8af767d261b78-a\nZ:Q1Ugxy0pNDbSMx4saqmE3VMDPi7b0=\nF:root/.cache/go-build/6b\nR:6b01a5ce54404dfbbdf2573748f9377bd9d2cb3be363ffc5bad3767d1d5bf398-a\nZ:Q1k2cGyi5f4D9SMijZYnzyQPrX2ME=\nR:6b0e7e56116de27d2e23d9c4f22cfa5fd5a4400e9aad209d24804e5da6aa2e97-a\nZ:Q1gjJ23XGs/k6bmx39wPgXA6ExGyk=\nR:6b259306340bbd4ad38482ecc5ceb9f29edf6b319d2f78164adf5a4b47041f2e-a\nZ:Q1LGyNBXbDG7/CnRFsCiDl44Al5iI=\nR:6b28850afe0bc773387d78ab07c7153f420230e532229b009b6d11f36d716779-a\nZ:Q1meCQCfLE9sNbT569rRyb2ikkv+g=\nR:6b2e808771a868a1294ddaecd81baa5f5129086638c37fee7e3289674fc13990-a\nZ:Q1T7unIJTZmcNr7zsyNSoDAqrR89c=\nR:6b3ef19e94141d19b3b2edc64f2b47c0fdbc1d590eee63dab812b82cc5467ed2-d\nZ:Q1+HaAkpQ9vzMYPnwwLJD7hAOXx/U=\nR:6b4601a23aadae7382539c4ab6483b9c6449e9d73b37860d84c43380357778a5-a\nZ:Q1/wWbb8CDRei/k1aQjPfE0yWrJPw=\nR:6b47053c125173788efb890117a892ac54914f7ce4296bdcdf3ffc693f854a3f-d\nZ:Q1akURh2L06bzTT9mt1oocCJhiM7Q=\nR:6b54689b8f7f4543e63d4ed710ca3d0cf1a89229bf2471c5d6ff1ad1f04fa30b-a\nZ:Q1rc+IGR44CPXpN1CKEUhq95W1TEs=\nR:6b71910336ddcf0122df893d6eaca089ce0722bc4b3656b6ea504be571e5cb64-a\nZ:Q1SPzyZK7v/PFFT0FjBdpUzc9QrW4=\nR:6b9e2e57ef927fd9339563254b00e7069019cafe3fa6560fe17fee2c29abac3e-a\nZ:Q1JqVHKgXBn3uojzuSpGybA3x4cuc=\nR:6bb2c3a3723d47e57d22b02f587ecdf3d31fcd849fb244a1a0134ac342eb3248-a\nZ:Q1ACknWLnLX3eDLZNB9wkGwBV6Dp0=\nR:6bbba6f1931179339af0a4396ffd1441fdf5d20c0c3da77d914dfeaa01b3847c-a\nZ:Q1emH8u7GYKlEOovVn0wmeiV1S/qE=\nF:root/.cache/go-build/6c\nR:6c253ee09baf43a4273693b77f1f9f269f02cf9f8f262cb5a2189e355e11e882-a\nZ:Q1Jvd7uUyNcMsEcQr/IQTQaEdRiKg=\nR:6c26153c323d326c8f69a70f9a76f9d7d63e75ec19056d6d585bfe046a3f05bd-d\nZ:Q1AuLU/hyVhw3v6dE+t0fe7FNLFB0=\nR:6c2cf547b5fde8ae32759e85e97cdb9c6b8317a557d00151860bedccf4880130-a\nZ:Q1ehIe3vZwQmQVjJH++CqOpwem/dw=\nR:6c2ecbf4c0d83e58f10ea17369e257d80f8346f995ebf43dcb123e7c9e764749-a\nZ:Q1r4y8fywKfY1KOU3EHDrhezv0m2M=\nR:6c5728e6de2810e0ea5ad69dd5584fce3dc605a9907fa380c6b26f6821adcdf0-a\nZ:Q1fQ3fdEHcEDKsbwanLaJMAGgvcdg=\nR:6c6f98e9e8b9dace8bd164078b5b07541b97207535e4dfee6f091765744c4b08-d\nZ:Q13lg9VESjtJMuULAtkFrn80sXRt4=\nR:6c972460ed9984ed93791990128b3af6971201d908c1b03da75fb16716d9de7b-d\nZ:Q1XrYxqcxSOYExifTDpI6V37fe+9Y=\nR:6c9f76dc0dc0a0860d830c444459f719c0885474e70eb5913d2dcede6806c8b4-d\nZ:Q1EDNZdas46uBlANGj9fbaDwZpEhg=\nR:6ca7b7101e191dc50e58c1471465c036ad9d46c8f0e47635c43e3b20133365b2-a\nZ:Q136tBt/g7NbvrJgZ0Mn3gNqlaSdE=\nR:6ca86afa28ae53b29c27f7d4f3df5ac3166d93a097e94496d5bc7c540917289e-d\nZ:Q1f1guzXQeu97o/dnTFSVOamm7UkU=\nR:6cbd18162006831af9c41e790c4bd759b76919fcd01d189308ca06b3374b2d5b-d\nZ:Q1QJ/9jXNjo5F+I+BbB8LCmUIoPcc=\nR:6cc10abd71ff8705a8a8b1c98ed3f571adbbaaf9e16c341c191832d32a2410ba-a\nZ:Q1Kmo2rIefzL2Qg4gCDwT92nMDzgM=\nR:6ccf71afbb564a7ae125801e5feef637a19fae621c05e83579567fe95e2d6c6e-a\nZ:Q1pHaAP8HsJh802FOVR+mpkux0NA0=\nR:6ce1b5be5fc35b869f0e00815b6751be5cd8ee6fdf5ea7bbdde82321b620490b-d\nZ:Q114P3lCvPRQDI+7xGTbhnSjKvbSU=\nR:6cfca0a059f50c4dbcead9dcc11832dcf4838b631cbf7d5828adff8032412d4a-d\nZ:Q1xpBOQQeJ4dR1gFvRD0StfcprBeM=\nF:root/.cache/go-build/6d\nR:6d23203ceea14f4cf467dbf2ffbc443cf70ed8c529d5bbb494a3ea1f093e5507-a\nZ:Q10iTG6C+FG/Q68rhMVub5yeYrNI0=\nR:6d2732c8b0869a3c935f4e8faee31cfcbe8e4f11db4772ccfe4a4f142518f3b2-d\nZ:Q1xaxFgSuII+1wWB6hsu706itj9Vo=\nR:6d2d3e4c4e4610edf058e9569a234dd90db9e453b1337771be2f372305e4a711-a\nZ:Q1JOq6swFnEqa4nd3TqSfJK1eMi04=\nR:6d4ee7ae89d1d92ae8ba665c46037b2cd3411f85c45a55c7113c64768230823d-a\nZ:Q1h/BKi9bdN02NS9xxriQrCaGJ4wk=\nR:6d5fa732b659c078b20ceffaee72c1f474c1baf9a17c44cecec0785d6140bc92-a\nZ:Q1recYobZ4sxi9fETXlznGe4ZFdAI=\nR:6d60fc235977818aa69c6e5ef2670cf844df304fb58b2a60c68356325fc8a57d-d\nZ:Q1e2NVoILFrXdF8hkaqn+x2Ti/eWc=\nR:6d792e1577dbd230726bf3178fc0252e76351e3d91425d286a6087f9c9d57372-a\nZ:Q1BjlNCsT+bIVGsRFBQxNSAyFr0/g=\nR:6d869a9f0c375c959466465ff051b0d507db4d47f98b9259784b9f6a56997f8c-a\nZ:Q1IRlhmkmG6sO4l6cgpT9032lP7H4=\nR:6d89703554b727f91169646b442045d9b47c77ba7d607fd14100a9936650ab59-a\nZ:Q1ECeQhWc0xCxWtWwrQfZyO9POz8I=\nR:6d92681ae7c27deb600e80fb6a433f98378fed754676c09c8af8bc82baab6c2d-a\nZ:Q1ch7kz2zeRIyTAEQwMkYApshj/nU=\nR:6d9ef7d848d900afbf95f2ee7a16eeb454cf7cbc2ffe41e69a9c172e791e90ee-d\nZ:Q1H0eBCORGWFqKje7769Dcu08hfOQ=\nR:6db18ffb9146ed02d09cf19f0cb99209cc3e3e98e5ce70ded85eb6b14f4c6514-d\nZ:Q1tBA0aaV9jLToNN+W1rm33iKwFDE=\nR:6dd116fbd80c4ad6a461967ab87ef6d1ad8dbbbb3d650a864d739bf1e99d7f4b-a\nZ:Q1HH8cxab30AyTG9rE2/XHnhEVDho=\nR:6ddcebc382d1972a6892ebad70ffe94567e031bc490af4a450478781097781b5-a\nZ:Q1gaJ9gOWu/vqSwbZhtJ0lyhOtXJg=\nR:6df44c1afee7922c8296aa374a2eb943da1b8de8a1e766bc8f98e7d66a780cab-a\nZ:Q1IP3GiSNFzes7g129vRUdwr4ZGtk=\nR:6dfc0a77804d5d72b58b2d7ea1de6b6c1345dad9c9aa5556fd9b3db8588bd8a6-a\nZ:Q1vUg7j/yD4WzJ+5AP/KmwLX462mY=\nR:6dfc1b336c6149ad80473784709516103b6d50b1936f57e9f7aafad2f533f0a4-d\nZ:Q1ygFFyu0/X14exAlQQSbiEoZ/+P8=\nF:root/.cache/go-build/6e\nR:6e0a23cac84a4edf208f910459618f9f514f57268d26114ffc556d91f27158b9-a\nZ:Q1QpuQG7cbhn5gxqOVJMU0nQLFfT0=\nR:6e1f63efa4d2901ee5ace58338e109629644752168ed4fe2d28f2767625a623d-d\nZ:Q1M2itk7wjucQtO5GtBohUH0Y60cM=\nR:6e31fdfbe6f132140c45a3b3b7df9e2d37bc5c038811755401cdd0a44d6241f0-a\nZ:Q1v8PuSQ+Ua/V236FWEy3iaNgVEKI=\nR:6e62830b228b7f4c7223d80bc674dd9082bbf3f79e75d551cee8c3cdf736f7a8-a\nZ:Q1DlvskI4E8XT+cHdcvz5YJfPXfWk=\nR:6e67766f277f9ca97d176c2f581bede6e204bb35fbb72b697f0ab5b4fbbb5c99-a\nZ:Q1NvFIg50yIv97cPBdkxfVx5TiJXk=\nR:6e6e2a79b1880a1942f1e51b1cf19539b7ddf2646406f2d01549166c75f62fbf-a\nZ:Q1CDhSqQk0awx836zyYCeIjmHzyR8=\nR:6e8a52f49c6fab48f2ccd6ae181052d23346611bed4d3014a9aeadf556cdf430-a\nZ:Q1Oj45/A2jFOFecp8apB9dB4vfbow=\nR:6e96a84e6dfae64bf4f729581a77464b3fa7bf016789b64d54a47c1c4113ed8f-a\nZ:Q1IE8nIVLi9sT+gXCAghwYYAu1zEA=\nR:6eab649d07b1902b200182c05bb9a32d52e280c4d959da6a1c20124e42af2103-a\nZ:Q16MHoEQshQw4iCKJfcQHcqb68hZk=\nR:6eb1f24d3e365b1a543bcc01c6102c35b9f9200abe748571cfcc9d5acd133747-a\nZ:Q1tHG10MOa6IIfJ1j0UkJYJLPUL6Y=\nR:6ef4b37b361783af8bbf00795dbcc18b902c400b0ed8b530fd3c4e0b674426db-a\nZ:Q1g26BXdpMjmFeRDTAUwFkTzLqFlA=\nR:6efba1c438d7df0687592a0a9ac93162416b49261bdd946ccf892d03a2bcf127-a\nZ:Q1ZY4LBCjoPMZMNoR3tHyhhk61HPw=\nF:root/.cache/go-build/6f\nR:6f0793fc1b5d1d104a23235fa93b34f927c9bfd1b207f00e4173f6793af35d39-a\nZ:Q1JWrG4Nc0nQ3FIlwQqexQPCmO598=\nR:6f0c2577d012ec93b5977883e5487c12a44f474312055351e0c354c00711c4a4-a\nZ:Q17lq04WpaSObhxiabvpZpIsbTNBY=\nR:6f294e04fff8cbb8b3d552f8b1ff2ebeda7a53ef702cc9854f234018a6d1acb3-a\nZ:Q1MHRFumSEjYlWrxs/3q3YVIxq14w=\nR:6f373bd1d537bdd8f574b27bb13267d44b62ce1992d011b8a6c072b118bd9189-a\nZ:Q1OfEfHV+AIqW42OoRNqPIT6UwZpE=\nR:6f3bf699200645551e922dd879a9860c1675c8b48b83288b22e3571233aad844-d\nZ:Q1PbA+GrP9GKQRI79g1/gNR/rlkdo=\nR:6f4de588a81b381e806478873a1784d2b6feb96a1a70e40631a4891dbb0111eb-a\nZ:Q16jnzZXtnWkq/ngtYOXQMSYBbxLI=\nR:6f71639a741db122d78ddb30155127fc119000310ed7766b3d83c6a30c0c75b0-a\nZ:Q1NUWvx8WWRPDy1BhCbUUUSIJrWps=\nR:6f765f83f6f4638fff7a3e1c875dab18aba3042b32407296ca592263b1c0a523-a\nZ:Q15gPWQOtVw+veEKzQbZRlkjFoRYk=\nR:6f838cb75565453dd88581f532ded7a8361307eeb94e3258ed16ef904292cc35-a\nZ:Q1Nla/LzIFfIV2DAgZO1rB6o3puGk=\nR:6f83c8615645104529a585890344ff735a6ce5fb0104fbb77180d3b818434246-a\nZ:Q1kbal1xd2hccZGZ6UtYcTP1BFLlk=\nR:6f8ec2e4f67a737e4440269806ad64b9104957ffd7f0477e36ce36074fe329ab-a\nZ:Q14TtuM7OSgL0sWkRlRKzpU8s30+E=\nR:6f926c8db1d7abb4139000e0ee8d467b15e392d103c2582ca94f0ac85567731a-a\nZ:Q1RT7XjEo+kc/31TCLnQxn1EtDKTY=\nR:6fa8819ea608829a07de34c11128b22ba49212b8976ae992b2aace1020c0a67a-d\nZ:Q1t4sQVTi1ZbCJM88DtfKkQDCi32s=\nR:6fad60d7bd008884441f2841bacdb4e4947296ecda8fb07f9f04bf8ab7f77f93-a\nZ:Q1BVENy+5ftCVLWPCHTv80nlm9NlI=\nR:6fbdcf2d76f7496ee1a03bfccdaf73bc659798533920bddd26db8c1b830196b0-a\nZ:Q1deZ4juAhCj5CoVtZgDBY9NOMxEI=\nR:6fd0318da612c688699b1734dd686e649797e4046fea5f7e653ad4060c23acb0-a\nZ:Q1iiR1B2WGIrihNA1T1G6QxTuncbI=\nR:6fd57cfeb3dc553fe7580ef0e63b6415648262645ddc7d08d44a2bb4203cee6f-d\nZ:Q15MJJ1VJu7FbPNeny6hRUK7ghTI0=\nF:root/.cache/go-build/70\nR:700677c5647e6ee5cd43ea76f463d0dab07dddd48c155153e86a0c6c74d50354-d\nZ:Q1ON6TjP83iphcb+5N9aju5gr6u5E=\nR:700db6cc875892f2304143b1431636fd6932f90b58bd14c2f59685aaa24027d7-d\nZ:Q1t/4z0RCwArC9Prj720NHxE6Q6DM=\nR:700de36920ce26158c1511d3c21e73f73333844b9b392029eea97da777991266-a\nZ:Q1Lmad/kGl76GcI/ToVnWoaT9rlgs=\nR:701095c254839f09f5c9b671ce4a7f89700c0d9b0d128fff8e9580f02f7b94fd-d\nZ:Q1UQL+byLyUQYEbAJ+yVMbosqAm28=\nR:7039deb027e716e7d2f2b3cf5194d9cb731d89adfffd41ca2d7090640230109f-a\nZ:Q1k4/1lRh1E7SOCmmuZo70DVkrmBw=\nR:704cd4b6348a76be744fa2e9d4f017a48bfc0111fe9bf62fba2f23b1ab5566ed-d\nZ:Q1WwC+Pz1mzKeK1JDsy2qKTvfsm4Q=\nR:7050ca961b7d4ec6a22861062a71ca8022c16a709150c36c42dee368aba7d878-a\nZ:Q1Da4kGUqm+UPzQTb/bYbeGKu5Aw4=\nR:70567ce30cb8079b10fc9f884f1bcd4b2ad62a1bac5c1d48b23dd77e226ec8a8-a\nZ:Q1U8ztmjWu9Wzo75fdCfXn459idyY=\nR:7099511af95a24105c522cf17bc64b236db779c58563b4eda96f517863702589-d\nZ:Q1Hm0F0+k8pPqmX2lTZTh0+A2C5Lc=\nR:70a6bf5d19c6eed6127cf410d9ffd19d0ef5bd48415fe21b6fda20d48520782a-a\nZ:Q1GppD6JLxsaVOf8jMzq4Jdba5Q2w=\nR:70a6ccc67266cbb008170a1d30ea3c50cf76704fdf5272d361e14ac0d6991ab0-a\nZ:Q1yhzVdk60BVT8nIQ1AvmOseOmIYE=\nR:70b21dc5dc9e25af2dc9b444dc186c5a82299c589aadc415c1c0d2fd69e19899-a\nZ:Q1452cfsZgyitUHiINKU1w8jPNPw0=\nR:70c46f855da7ab8c5a590a94fd9f49bee4c4b0d03d59f69d1aa5f5eeff2a2a6e-d\nZ:Q1+dbFHsYGp6wuXSBtFUvxM8AMf04=\nR:70e302c9563cb40216930d6a772d9ab314f7d17159796df8ef6379d0c3849924-a\nZ:Q1s/KuFZGnqCT0J35izMYESW3SiSU=\nR:70eb119a5eff30c51acc69cc34dd112d03110eafbed99846851f966ad762f950-a\nZ:Q1eoJtVciOqoj5duP7oxf0yivh3qc=\nR:70f8c5a11dd116d193ceef9f15a6941458c065ba722b0887cb402ae506af8fa5-d\nZ:Q1ECWFF+1MPP8sFd6j6FVqIzFBZGs=\nR:70fcd494405c6890f328dc6e28749e6c4fc84259d251b6e302c20d1b60c36fab-a\nZ:Q1+UH1Wx3iNZDqR3guj37QC+g42XY=\nF:root/.cache/go-build/71\nR:7133bed95ed2747e1244f704b22620cfdcad21e50ddcb7c722675c2587cca4ab-a\nZ:Q1snj3yycwmy2rwzTX+/SUlm6CUVA=\nR:71440a4e4a03e6d48ca5995680612262da889448a3106236e55110d7d084f0a4-a\nZ:Q1YIA88efj3otHMX1xuVHp+zTBRdU=\nR:71471099661ead811cecb1de086c5f22863b06341489101cd01f87c9120ddc2e-a\nZ:Q1ZPZZO59WUICaxNL4aRq6bBAaIRo=\nR:71586a943d1f267f6084cd50a25bb40ac8c7a5e3671a8b809929f0c648fd8445-a\nZ:Q1qGoiMsP+7MG4xlBcx0jXUix/Azw=\nR:7176ce0d921de0f573b00f9f3778b97be6657eac568254a697e897bd2128ccf4-d\nZ:Q1jwotFUrFU1WgjJplWbMttq8awxc=\nR:71acc2e574642aedb89135e5f2e0c1d0bf599dd5dc7de8329efe51edb0762e2f-a\nZ:Q1/z0SbItpGmdDVCCCdQJqgcpLJvE=\nR:71afe103cee8112d8ccff2f832b436b25a2b87fe8dedd9ab93428ec2f18c7934-d\nZ:Q1urjtrbYZ+NOAp9z8h344uX8BUc0=\nR:71b735af9a2f76d7c420ee6e61c23690cdb05f6fd1108475eef58d9fdf97e1d6-d\nZ:Q1e6CM2C+Nl6w+O8RQna5xr+a0Gmg=\nR:71b85165070caeec420aef18df5d0423b0b0fbe676d52a8dcf5e9564694ad886-d\nZ:Q19H+3SJndEqUi7f4K8QKNS0EgSZ0=\nR:71c813b22c419079646ae2eb91e02b2ae90d8ff0ec9e5766fa3d68db6fdbe58c-d\nZ:Q143Y0pq7HsIsYXBP98hkSeLpozKI=\nR:71f06e89ed6062247eb131b13afe789fdc7a44317c100989a22f64f41041ae0d-d\nZ:Q1hsYJVJqRQ07RKfYKFuQDlQihia4=\nR:71ff39fe80500bbbcf269747407bfabff30ff4e7c33b456b0a0ec306a41c338a-d\nZ:Q1ccS7YI1TCpXIJfiffoCKPChIqb8=\nF:root/.cache/go-build/72\nR:720a2197ad18c509d5a0c7cf80b17421f886638445865e29b784b4958fc43703-a\nZ:Q1a/65tqXk4oSCNeoV+BQmsfOUWEg=\nR:7212ca41fc13b1dd1db1bca962a1f7bf93c6170afc5776422b035c215ab1a5a6-a\nZ:Q1Qo3iJGMh0FMvkC6SYpyRAB8ejb4=\nR:7218132cbcb91d5a2a5fb6d732e6bd12a7171693b70067d762cd903b61fc0770-d\nZ:Q1aZi2aTNPjt+g5v9VDsBVu952pkk=\nR:721c06308b68667cf36f170ac13783dd9eb761bb407fc2aad0464d850c6615c8-a\nZ:Q14tJi8MCX7v2XbgWlyxbD1FfSHrU=\nR:721c9239aea896875245d4ac7f91ef99c7a4514ad8a14e4e7518af28fb7cd764-a\nZ:Q1OQCI21XoEV0DsOj8vyWlwaaiPW4=\nR:723024a3677634bc7ec9f1fd91d9b67a5f5c7ddb9d534c7838a5abdbff45d27f-a\nZ:Q18gjxOQpnMvX2CbEIKqR5x21L6pU=\nR:724f9bf88e2ae2b4193c5ac363386e550342fe7366053e990c1f6725163c273e-a\nZ:Q14Ns++UWGrdvq0ipB5jPpwfoCR2M=\nR:725715e5975ae5c11fc32b9953db7a912cc55388393b6620c0f969aab341b72f-a\nZ:Q17pwVjzZWcmx1AEpeni35msiNHPQ=\nR:725eaeac45290d7b17ffa428a5465a1a80d4369f56d87a7c300317f9d806be8a-a\nZ:Q1tp3K6ODGtzds0C9H5ppGFZgitOw=\nR:7268825a631adbbde072cfbf30e0e8fc35078e90f1a38c9d4e53c206e2039f41-d\nZ:Q10Zp2iLlZegwrmqD+b3L7lIfPTiQ=\nR:7273444e3da91ed287f4384ed3d6788722119bee2b496bcac31d130cb51c16ce-a\nZ:Q1WM9qOWWsQh2tqDEfDt11uy9WJl8=\nR:728f06fc4aa0ef33895bfb373b645728e18a7af2c7c2364bff5e7a12b22bd734-a\nZ:Q1IOSaPKXlNk7q4XdyHrPis6F9G6o=\nR:72dca904884b335a96c19a19c74db314063209df1a8ec25e4bedc23ec93bca04-d\nZ:Q1Zh+A52bDRSRQEYxfx8Bv1JCjfkM=\nF:root/.cache/go-build/73\nR:730dcf8b59b4f4450c5769c28b52f87a8b2b33deee1b55edab141a997958989c-a\nZ:Q1nKkz3vR7PzIzi8Wd4QnLCgs4vpQ=\nR:731bdac7accd7a7c9855d415c4dfdc1f3e443b26ba1b7a16513d4c908f0fe11e-a\nZ:Q1UIGPoCNH+bolTg22Gr1/FJwz+H4=\nR:7325ad3dbce69a61d47b35c6d81faa1ceb21c35c48ac6b3dcb056eb9886b79ba-d\nZ:Q1aFppBeQ4SaopOW7YY0SvoYOj+k0=\nR:732a60d6ffba00dff9ef9a25f2d36d6cded2e9583f34ac10e7a87cdd61c2c782-a\nZ:Q1hAnJZTc4icHRm1TRM0TkauVFbdY=\nR:7340bf41d350ad543868bffcfd5f48abdf537b6d48c325a394c5c0450af438ec-a\nZ:Q1JVr2Vtg4w04ADvVxw41ZsDm8Q3E=\nR:734496605e6a29a854addb0da966ac8b78278bedf75e44ab5c42e12b93bf7db4-d\nZ:Q1X9mcQPbnyJPMLx5TQlDMg5AT5cs=\nR:73470394f753eed8d2e4c069d930a3bf23239ecf6893e47f1e9f4f9937b5c9c6-d\nZ:Q1/rTdu0RBbOcHp3KOKGjdsk7JsTU=\nR:7349766498fe21aa891d74d363a639455c544ac05b2a2f2545d0488cd5fc3d88-a\nZ:Q1dXukkcDNXNdNNRjs9VpswAffGig=\nR:734c52d33f4e16560cacf5cd0e8b04bc0f30338e72699fc72d4fdf8551a2efe5-a\nZ:Q1BLhR5lRlmF9Z7W8uBZHlkx/F+XU=\nR:734f2da21991480147b1dbdd89c41152e1619e544dedc110269886f34a4f0983-d\nZ:Q1S5dU+Tv10RZC48QS99pheVdFifg=\nR:7359736cf74d2db7c7ef821a6ddf69e5590680416f1a3467ef23dce4736960b2-a\nZ:Q1+6dzyOLtpSsNt4Lw5MOxzYRgDK0=\nR:736b8765ac9a493b39fc09a27137d2b662ad5578b7758f1396122c74022af3a9-d\nZ:Q1BVUNspKBEiGsgJ/FFvpGvzPiyeI=\nR:7377d33ad1e991028b0596125af08b4a27bc751ab8c46901725c8b27837ffbfa-a\nZ:Q16S8ZlzNw6oXS7Pk+B1FhsyJld/Y=\nR:737802c136163f53e2d12c17d6fd5d4f03922763f552a2de21f4f2a62d73af2c-d\nZ:Q1FpIXfesCXknoMuH3mF1fkq97Eks=\nR:737f62744ae43b97c51e300dbddb8b161521c5046fbf0608fe28853602446b59-a\nZ:Q1bIQCvHJOfpolYWUHsOeXWtx0pwU=\nR:73827b26a122183dbe4964fb88d6ace7fc5106fef693f84248d096576b0baa4a-a\nZ:Q1kIcheV+jJwmJtSh7UeLMVj26eEA=\nR:739718815bebd501e4a4b615e9a1265fe6bf3978fc5dc5cdf375e170bb8e965d-a\nZ:Q1Lv4pgHeMLnpARFu75drotvag4to=\nR:73bed10ae4bbe99b77cc0741bc337d07b3bc2ac31366b78a757311ec1c22d60c-a\nZ:Q1nv0TPiZ1RkYt8vb1/MuA403r/14=\nR:73d064e164df22bdf85f5e2d8643819464ce9abcc13b90cc4f71a8b7be065c11-d\nZ:Q1ayG+f/wUOxB25vATb66Su2/5o5c=\nR:73da4db3a27e0f68902f139a590f8484b0a39682f98c26cb13b262f49474eeb8-d\nZ:Q13NWi6NsdEQMUztieJ5ZTYWHSC9U=\nR:73e6aecc4796199a15c4f532a0b0873c4adaba2795ab1c825252538ed5395af2-d\nZ:Q1p4LDykkOnzC3fnRD1RtQCh1JNB4=\nF:root/.cache/go-build/74\nR:740e8887024c341b89d09541ca802db534e71121b84512f0e95a9e1ce6e745f9-a\nZ:Q10AWiAirGxSnljSyzLhRAiDMyIO8=\nR:74155160e2258d83565b2453f6d824468a11693f17b98c3c26bcabe5d8a80079-d\nZ:Q1xpY5whEfCfpRB5wBsGQR4/kL0io=\nR:743413e867f814cb80f85f8a05abac44ac397187d4279fca9d2e8e6e9becddbb-a\nZ:Q1rSakUvt6zCVJGlpzpArxx5T8jvY=\nR:7437a71c97814cf07ed51c530f982ac8f4b6ab1cc2b6bef91e9f3d6a79cc0a40-d\nZ:Q1AcnrTfJAFQlnhub0ZzloezddUQk=\nR:74469d9ac977c3e7737d465ba96764a127c689ae689d841072291d5eca1d978c-d\nZ:Q1yiLIQu5fL2x4zIsKGcD9Vw8C3hI=\nR:744982881da4181f634f2e96782147ad77a1877c954b5193840c03d7aa9af8f0-a\nZ:Q1kHh0CsD76dNqtVbSecEvxYh/lTU=\nR:74697a6f4c0349f38badc82138dc905f2c1ecef210e0f25a19a13aec01f60802-d\nZ:Q1luEXiQhB2KX4jNVDVECWY6oBtSc=\nR:747f8ca4544702fd8b145d002a61813fe54fae77b697dfe3af2b466222727bea-a\nZ:Q10RejiP0Ui3FikZYP6TtLtWqUW2k=\nR:74879bf5f88ed62feeb7a7e653b3bea57e97377179efd7d01ed16110922bdc40-a\nZ:Q1c43xW55J8Teq259q6YSna5xXFVU=\nR:748e56a167127f8eace64128a93f3b1abb0c969591da565d3a9b8eb401fff9c8-a\nZ:Q1upSHzzyEgX+20TFeVVQ/0AJdsio=\nR:7494042fe1ea50be77fcf2afe17e95768ca37e594eda290aae2cce7d7a10fbb1-d\nZ:Q1GJSQXWO/wHtul2TS3ODxytQZ440=\nR:74941af38e695d4a16cef630eea99e37eefaec5e3f864818b548fe92cd0187aa-d\nZ:Q1K0ewSD74T32ZsmzIkYJXKtMOE+I=\nR:749adc5af9ec4bcd69959a20874f3fb2e524a275b20df88223cb2c2cf94a7d8a-a\nZ:Q1c0KRKvzIrH6o7Cirabl35gLMAOc=\nR:74b54903076eb0f8c7d1561e72e1853bfd2ffcb9e96fedeb84859a208bf2bcaa-a\nZ:Q1Gf+RQtorElCHjvlAPaAFsG7r4TE=\nR:74c2ec281809819a146dc4316c8c6e2d56a664612f0214ca890b157bb0e9a6bf-a\nZ:Q19dEZfEaLa0xDPqaVdGpCGN1d4GI=\nR:74c3baa5bb33e13a9f2d1fc57708d61ebad52180ef55c1193a9694d78f3dbb40-a\nZ:Q1iFmWszhB7nkrwANnx5pM6X0OpA8=\nR:74cf07a4e3e4b04d22a2dcfbdb62e014216e44b75e30eb3290b87811a28eca7b-a\nZ:Q127piDYDG0/7NStYAU4UHB1u0HzU=\nR:74d65cf4fa2ececd2cb3a54f921c6079a00c43503bad4b4eb0637c5b4eb7878e-a\nZ:Q164WBNmTL/g9+7lqav7FeyQLAx8w=\nR:74dbb2df78307120420e89dc54f1dd9f11741b2a5b3438edf9a916f93b35f8de-a\nZ:Q1KZqBaJOet/3/0174uJOWiBTxrDw=\nR:74f856b57a4f1880225199f791eca2328ae9d351c79365b541ca9e13b17aef04-a\nZ:Q1MX7hCQ1sPvpZtjl3xQLsm5/D5yY=\nR:74fc106dc96ced7a38b2999f6b93acf0ec764257c2a941691c74d4b1c57c76db-a\nZ:Q1sAa3H8N0e0ZNz8VH7waNuR/NYOg=\nF:root/.cache/go-build/75\nR:75000a622ae544621b14344f53d0cede24db658f7cd75f4601bb2c1b1124097b-a\nZ:Q1Lg1fo4u+qPMv9eCltUNyZAMfUVI=\nR:754c38d77b683620906fd247164fa6484ad317f464f0d84843b4bd3b6b0bd032-d\nZ:Q1r/H7h+dQH7glA74VezN7hIbMxN4=\nR:754f9e8dc0cba7797b8627d7b3f1b2b8c263a886ba28b45f562fe1c9e4fe2e00-a\nZ:Q1oWiGQX/LAy0eUZCpeuPoFRE7rlI=\nR:7559a402ab051facec1cb54d53a0438071c71d8765b09b60063bc7b717518dfa-a\nZ:Q1Q/I9gu0IpXrrbrMtXyffRC2yGSo=\nR:755f9e4df39a7dc3e14f969bd6ba6182c5a49e805ba05a44e797c1b3d6f9de06-a\nZ:Q1W59rYLTqOj0sZ+OisQ+f7ySp6R4=\nR:756831679ac8686aa9c66689dfb34d05592c9fb507946e362350f3ce43943b48-d\nZ:Q18v5H+CgZhrtPmf8bJSwGm2FTKqM=\nR:7577e9afcd5b2b78cdab84821ffd75d9f214f4401f1a4f03d37863e222612734-a\nZ:Q1UdMW8tR9JC2NCVqTFXWVQZpHRdQ=\nR:7579e7ae8dc3f07774d6ea929949edf2c4110f45b68e6875308f0e9f7dd004c5-d\nZ:Q1lZ3Iehj3eBpFu/osacJc95z6W84=\nR:757a4d8536884103ec62374b142564ffd0e16437194147421b376edd364e6cb0-a\nZ:Q1PZFDFDxoWW1eqzr2UY8l+LPLl1I=\nR:7589cf335179e251db0d5f1537cde75b6f47db31e6c4a86222b4390984e18b4e-d\nZ:Q16M5iOe4S2aTx0bU+atB7FV5LXM8=\nR:75932aee70c6ddd6bbbe063c5ce24c80510230597a5697f400a5f8fdbb2940cc-a\nZ:Q1s0OG/FIIOA2zcIcbCwB9wATLd4c=\nR:75af13595c0c9469ec93a011a443cb7bd85f7994446d4848ec26b3c0f74b8f82-a\nZ:Q1Z9NAVYXHH+SCEbAGFw9yWLcAvps=\nR:75f56b6ba11acaf16175f334b01cb09373246e2cd3f504ef1bd4a45ee1e3f96c-d\nZ:Q1hwz7eb8HrBMOINATDW3t4lj+898=\nR:75f5af9ff497b1d5276496841014ed4fd5c344841c0a95906c06dc6a25b1e0ed-a\nZ:Q11KoLoPviENt0xDWuRfPY9aNX9FE=\nR:75f65b99e5e68978741d78f78d21776c0833e5c085546750a0d7ab7bd491c596-a\nZ:Q1chPcACfNtcgHqGZDogM4zM2DG4Q=\nR:75fd6d3d27782d970ff54f33633b67817dd1aea61ea285fb97bb24dbfb32d962-d\nZ:Q1WBexp2zkmdaVsV0drrtv+YRqiKo=\nF:root/.cache/go-build/76\nR:761608315df07fa107e605a36fd4ac5286c9683f721897a6972078a53d891d34-a\nZ:Q1cMK29APb85Dwe7utO0UpslRJl0E=\nR:76183397495a0292b00087647cd8f601347f5b1c01c165e7da19c2e0b3ff8879-a\nZ:Q1MK8hLRKdLknU9Wcs6MO1swzvMXc=\nR:76183908e498d365e0071e52e7e1d4538da4376ef6a58d625c9d0f9432ea0320-a\nZ:Q1V1WYsWTuoB+Fmyg1HN0lEUN35uM=\nR:762232c8ba2aca15f472ad2a311c691226b93908ae0bc12d1389a9e5b0232fc0-d\nZ:Q1ERXar3Gkc6lJQYc5S/KBbMSD7qM=\nR:76366dc29ab6db41e1b9c8bf118ca5df3d29d2b33840de5d12797a23fc68d7db-a\nZ:Q1HfktwRqf3uUM/XMqI7fKXvFglbk=\nR:763ff56bee166c2d7127bb0f48a7473d14ebf8250018beabe9bbfc19fe52462d-a\nZ:Q1OraKEvnUAjjJC7KkgeDS6wNOwIY=\nR:7642c0a21fc936e1334cc552121831ed3a57afea442d095e28f44bf9a19ab390-a\nZ:Q15wesL6V2SB6KCmYyUVxXDUhIpyA=\nR:764a16821ab3b6ed9067e7c9ab20d76ba6b37cd49e0622b551407c42472481fb-a\nZ:Q1OEXlW+p8sQPe6flHv4yN3eOehbM=\nR:765c204584b841db465e433f8c0a0a4f5e239dce94dccb954790a2299e18d62d-d\nZ:Q1cR18fvpj/8CQmEMXzmn/Pgyynv8=\nR:765c4de506fed464b3c4667ea8547bd61ebb51b4b18a456de70666a0c209a9da-a\nZ:Q1RoxCFMSSbHl9UsN+1faE1TVw6AA=\nR:766c8f07eeca53ce42d77bf27816efe6fa7d5f512c665de9cdd36e1ca8419591-a\nZ:Q17zA5OrJyqTxiUsC5X+wH/4dPFu8=\nR:7676725ad4ab193b3c96c7d30d8bb666c3d5d56a4a1e7b1953f69bcafbf7586f-d\nZ:Q1KIrVsZnBeyVajy7xtMCpZKr7aWk=\nR:7689c858cfd1f01b01f15ec847b88566c3998310e82cfae7255a67b28ff44fe1-a\nZ:Q1ZUYzwxToJluZ89zNmdd7dN2q0sI=\nR:76a190657ccd0db4615b611531fbb450d13fbb39c0fbe2bc7fbedf902686667d-d\nZ:Q1biUKSaz05CrWmcEcHjy51kmqo1g=\nR:76c176c6ad364eef29405b67bba5d4f4dfc29724d494fd7640518519f86cd48d-a\nZ:Q1HeZDy3m0Z87hBh4AIIjfWncbGUQ=\nR:76cee8cc2247740f4d877ee41fcb96661bfe37c557fe61f022ae05bed78baf04-a\nZ:Q14J57bkrLWTnEDXV05dPY6nMtx7A=\nR:76d9747da0f7a914ce4457071e225cc2c87721e2ba21a1a2c58030538d7c679e-d\nZ:Q1BtheHgsdWtqlVGjJ3ZkiTpYnLGA=\nF:root/.cache/go-build/77\nR:7701d984061d8af3a1ecc83233db88a7bfd32e04fe57151b10155e5fcbd12122-d\nZ:Q1t9WZkbCPwz2XCjvmSit3QQHd5CY=\nR:771df7733fdc36bcd2214f4b00423ab526598ba1de6fc72c756ba86296ddb751-d\nZ:Q1egMx1q4XUfuIE6QaPMkZp65IH6M=\nR:7738c4bd7181a7b06ffc34061871009c06f9da20b75795c80f9fd750bc09124f-a\nZ:Q1SbjXig2RoVVMZVcsL7f86DdtARk=\nR:773fa2ebcb56e7e0d489b997df67890f4b91754b4724fa6739dd3cea1e825ec5-a\nZ:Q1l0SMagy+n8GgdiwoHpDfe1Ywzvs=\nR:7744e1669cbdc5a03fe6f296c1df6314791fa4b3d084df182f82b40f6efd694d-d\nZ:Q1vQLxaeGiEOANElLK8aux5Uzr/OE=\nR:77556659cea54d659bb06f8a610b4cecf4158c98d730cac267e5c9085915136b-a\nZ:Q1N5sUbG2XuEOA/fxk/LnTQ02lbMs=\nR:7760281c640a0b87b12ae320e75deeb3e4894f9d7010364f796382567542f05a-d\nZ:Q1teSTkni/rug1SDT3Tb3D69z7cHs=\nR:776385947734767268dcfe9e4e312469a03ca3e67ff81c59a0c064cc2ed09448-a\nZ:Q1KoWf4Ujk5EJwcice7SokDy0TwNs=\nR:7776590ad2a0c4277dc5e02b7250161565ef477a3b97c55546cbf16e7fc799f5-a\nZ:Q1U/HGTaj+QjReCsmnsHWBz9R7Amw=\nR:778ed40f49183ba8bef34d5ab3b67bb59703fd908ea4f7525d40d40e17aae5fb-a\nZ:Q1J8WfqI53DxpqbYJhvul6MjlwB+8=\nR:779a49946e46d8bda3a1bda2934517ccdc036805894c92b8cc336e73c4709a15-a\nZ:Q10e80RH3MNpiM2kNiK5oNf9ngfhg=\nR:77a3b0a1f5a2832c609e4f93368984c67aa69f9f7cfe81fb3dd54d7c1e7c40d6-d\nZ:Q13kctpevjpB2n68fAKmcn62TNZIM=\nR:77b83b4e9d634df1099c3514efe7ef6c2ad7c0e065935f06dbf9b67b2584d8eb-a\nZ:Q1h9OJbrKDFxMxDaUyJ/Ay/rD/4cA=\nR:77da2d0d01d2d4ef761842e7bb656a4d71f54ddf07e717b310e888b673dd482f-a\nZ:Q1pHnekIP1HeVKeehF78TSqWVKFf8=\nR:77e769382d63f1100be2da21ce2b6263205a627ba779db180642d5c5e8afc07e-a\nZ:Q1SOlscFE7maC4kQJGQX3hH69TJDo=\nR:77f96b25900b30e388ccb5f3eb50145483b3aaa4392a7b21ece810f040decf83-a\nZ:Q1n1nDlwDRHnxXVWCLr6pm0RI/KUI=\nF:root/.cache/go-build/78\nR:7814f6d0be865a26fa211da08c051216e474a838a9672befbfe4373c7384f7b1-a\nZ:Q1vNgKJ/3R10/kpOSzoIFH9wrdtoQ=\nR:784b450f5388e4756144a0102c83e0e1b1181461efc7a61ef56f5828e981f52f-d\nZ:Q1qtUKB3QBc3u2WMqrbK7/TFfVI7o=\nR:7853f4ad9d9c9f22b84d6d420e0f45920aeee3fb9dc42cedaa3a0ab826df3a8a-a\nZ:Q12yvwrzUy3ndRK75GQC4bsDZ/JKM=\nR:7866b3b8a950babfb8284d185d3508495737ed5dbbbe9741830d4e040f1a1aaf-a\nZ:Q1dMV+kDJ/YRjiIJpuEk5vG1MXG90=\nR:786f16f1341d8f5111e306897fb6b5ebe6df945e82687442ce09c766e13298aa-a\nZ:Q1vKI9CMSDcW78vNHKnWsGF42sURc=\nR:78713af665d20b27f46d0504394f49e14d2af26c2824ab60c88d6ea6578de10d-d\nZ:Q1nvVwJrPYKMlJxeYF6htjVz8U11c=\nR:787d559b036b2c86f2f71736b33532ff0257dfe75312d5ce4a0ea0b336529897-d\nZ:Q1zqPpPdPxB3QppymkBgKK/lwd3M0=\nR:787eb2184188fe3368060a9ee5aa765151723f5133500e3a6418f9b0a25ba44d-a\nZ:Q1tfUwvgwh/GEJL/nq0eV0L/1kvPw=\nR:7883bf304b91720b47fa50642e2d09ff815885d757207f1efc03a2e86907c5e5-a\nZ:Q1NfopzNUtrcUgL+zhA+3y9AwkCZs=\nR:7887efadba177209c9345a272d161205dfe7b5bbf188661020fa38f40d1fd9a5-d\nZ:Q1SaPtu3kj5ocVft1N7V94RAYq2Uc=\nR:78895e5986ab5c48d0372f5f077b49436c117dbcd762d6fdc6bcf97f5bf6b2aa-a\nZ:Q1aCxwMd3lpB6P6byvYngQJEXTgS0=\nR:7895046c29624485dd32cb2c283f75e513c87d1df02a7a24f80a53af354121fa-d\nZ:Q1jgAZXBnrHUO6iBh8E5X3bOEsb3o=\nR:78afb0cf9c0f5a9eeaeab7a3132155a044686c2e886039ea31bdcc0ada8f62b3-d\nZ:Q1nKeYlBGezvYUGqw+1Yx9cMQqkFg=\nR:78b8af0a8fe030cee935ee8d223ad81a705142ddbbe839bd60c685dfb04bf983-d\nZ:Q1X7FtpP1LqgCeFjjQaZynTXCr9Cc=\nR:78bd26aef9719b84a46e1216df7a7ed4070b6dc9fbb3c5c3be70eb4388a6bb48-a\nZ:Q16H7dYNdCUAajwjHZJqUoHCRILDE=\nR:78d03df944142685148b2f640612bf275bd328f213636c0bd00482ce4809aa35-a\nZ:Q1AIXD3D3EpxT9zmyO+c1fUWWI5do=\nR:78e14371e8921ed99a26a7572acca5888ce19df3ce7ae059d2f1a766e5eb6f33-d\nZ:Q1Btc0e46tyOdi5vO5gHkabd72faA=\nR:78f6c22b7501504789d48ec960bc1f93311c4a3bc8c5474d3d65f7d1527f6780-d\nZ:Q1Au96muCzcUkD6leWL5YKH6lXK84=\nF:root/.cache/go-build/79\nR:79094f5f6a49c6a996c99d0723dc05e796e4bc85917f608a603a31ba861b3a97-d\nZ:Q1kwLzqVowdk1ENhdT5/qNGCiHTGI=\nR:790b5b01f55c3e2d8389e1ebc2cabb95b728a33f61c68d3f91049e4ad8b0eec2-d\nZ:Q1KWT+9FyMZHPwrdVRH2WMtkjF8YU=\nR:791f87d2425878cc2ffb00479922ca5af64a0da9c5b95d912629eefe98b48d43-d\nZ:Q1MhMloTq/zUVfIC3RTe0G9pUMYJQ=\nR:79452fc8ac19d96080dd7cabd812ea02bdfea2f87128c2e6b59cd55327e75a55-d\nZ:Q12q1bKmG2RkzFVpJXgq30fuNEtHU=\nR:7948eb32b53546117a3b9bcfc331a6a86654e6b979fd072d6399889e63eca779-a\nZ:Q1g3LRj5c/Or2xFrwQRDdVvg1LyDk=\nR:796c628786bad1f9424022f9a70e4728caf3d3960eda29249b01f3976feece33-a\nZ:Q1M+SMx+YVPNCVffKA1Lk/7rCl1io=\nR:79707b8386c7c079c97d2fcba737f7bbf1195360fcd7816a2058510ad2b412c0-d\nZ:Q1n2+t/fRJ8Hx1YvhZWbLmsikL6i0=\nR:79769ea5fe3d4c170141e8a4803dfe61d93c5501e34bb15485c4ba2b33d2d52b-a\nZ:Q1ywa8ETaFhq4QAuY4I9mD8M1SmkU=\nR:7981fe3c57dfaf82b12ccb6c2ffc8d727012d752bac83a7519daf1dd5f936fa1-a\nZ:Q1SmD2LmHpISrOYpkEFIPkKd3FBs8=\nR:798bddb7e16730af935424e591dae611d69b3f1d2db738539272071c47fde915-a\nZ:Q1JG4RqTDqyQqGfnMhw96VEvutbvE=\nR:798f782d4319a5b02f5c24398ab6b4995e0354d6d82fcb886d61fe69c57486a2-a\nZ:Q17p5WktCDqKw9P395LSQk1ORiYws=\nR:79a0eea67027783ac9ebd08162fa7edcc36ff7eb6faf8b42ade44804eeb34fe1-d\nZ:Q1Cz5FDfS3psLlAJYSUQQ5ndnT9Ns=\nR:79b9c7730786e86f1b469432ca0f9c39aaa742cf736346aa2254c5e9af2c9eaa-d\nZ:Q16Pl4oFxkYWruNOX9uMLbuE+CzlM=\nR:79baf957e0e584f13470ab48544dc63dc6b598face2bc5c468a0f7f97ce5d357-d\nZ:Q12VaB1xfJsbRQEpdfCYyWeq59yC0=\nR:79c4fda81829ea6691949ac3627cb8622a9af1e3fb880d92d2f91be98e4115bb-a\nZ:Q1Xhj6H5qqlmWDOY2/gMPP8Z9zeeg=\nR:79cb79b678d59cc055699f95e5a0303cd00fab69fe33f42117ae87999fa1a70a-a\nZ:Q1z8QFjioaYviq2Yzfl4HRfq6ZZHQ=\nR:79d46c3436fd7afc010c8f48279052b38ae1396c7ebe0e470091c45358360f0f-a\nZ:Q10OD4f6lrst0CPdkS3Tz1uWCKae4=\nR:79d7c2545e005f97c2d4413f4a8fd5e29321c7e2f15bc5f0a09bf59cb649bc85-a\nZ:Q1yCQ6SL8p4Ply25SGdiRZLdrULXE=\nR:79e6bd331075cea317910d8c502670d8dcc7adbf018d1d8b6e7fc11f0edbd643-d\nZ:Q18nrRMn3MkTgFMsKX9IiaevfR2Do=\nR:79e989609ec9f09f0e89b7213f98c9427d415ccfe3b4a2a3f385bc2ab1d9b066-a\nZ:Q1RBZHiEcwqqb+NTqW+JuYItX2vJQ=\nR:79ea62069067923a391049f6d78d86a61bf8957dba4ccff63abf2387980e7125-a\nZ:Q1XtOQdRu8r972jqf7FSuM5AwkCls=\nR:79fa249aee41674df956b58f7961f09d90d84bfe998c0d9c9292769d57f92de9-d\nZ:Q1sVUUovyiL8rQjLQVnTnuHIRfTaM=\nR:79fadf916bc4260fc99c11e9f4c9b8289c38b5588d84b3ea8ca432192a939f3d-a\nZ:Q1GCsy/RJdG5G9CdNz3DrgKpLn4ao=\nF:root/.cache/go-build/7a\nR:7a102845f3dccd4c65a0145b776819faa17fdb783377d2522270d4e876232160-d\nZ:Q1aJAqpIDhbH+xXfVkCX3ekNIwNQo=\nR:7a15fe78a7486df580635c18c3fd74778a1592f610e6f79fb2a73a2ef9cde6a7-d\nZ:Q1sp+sJLKx3m7dshbmzlg5LeQTiyE=\nR:7a21b6b42e4e4728f7ddf8702b59897629dd751db3407aa1a06e58f40fe9cae0-a\nZ:Q1hYoR53JL7gzW1ukimYctHlDNiLE=\nR:7a25a23a34c7cc0acef041325ab49ae6cfcd90e81bfa35a2fa6287b5581060b7-d\nZ:Q18LiJ2HcIntT0IaLH+Fyuq37GNRA=\nR:7a335f37c668898f8e59988e8981e4ab7a2a5fce5e8215d7c1a31827cb114c43-a\nZ:Q1ErMyO4kaF1tikL1+7YeOtaaC/2E=\nR:7a43df8858f14b35a662a923ab037423da44aaa8f2de5b480a21e1215276c725-a\nZ:Q1A36FSKde9WEPCIgrPV3tKhxMtdo=\nR:7a4c147c38b00b3ee9b20a12de654e4d4a9a29f3ba476550ca9b75afaeda0abc-d\nZ:Q1O03w14bUxmbso5flKBZ6qUZ+1V0=\nR:7a4f0ed162af729df5cee6039e9d3799e2484596a26c5ca2e092cccde6252902-a\nZ:Q1nUwGIEM0PPgVSmIOiLfJtAVU1to=\nR:7a4f2c7982b414341b5d928bcce5aed31c411ffd61a14125304d47770a8cf442-a\nZ:Q1wluIwG63wjfd31x1+/z9nL9yrmg=\nR:7a7ef0624e29efbf425eae97efb518ddf0ea9bc7fc6deac7d3d8efab1163aaba-a\nZ:Q1bKFZXa7LGoCzu3V6qHYk0i27EiI=\nR:7a88c5e644a828911731bf02676a59ba0df24f017cf22dc16c35a5ec2035eafc-a\nZ:Q1c9rWp0nwROdJCQN8dlQczlcLnX8=\nR:7a8c583a182bc5eb3aeee7b776e69fa61a1ec676b740babeb5c0db2eaf5373ad-a\nZ:Q1uOCbhP6MrqawpB4n/uHPhCMy2FI=\nR:7a9af4e58b6563d839f465aa8ffe736fbba7cb2c2afcc0df7bac77cc4f447159-a\nZ:Q1DAxDoQM1/3b+Xt3PEaMlU6JV/qQ=\nR:7aa070c70153c5e41925cd012a708e29aaa42a7a261d75624e897437bac95b26-a\nZ:Q1ctVGoHVQzT9IT7adRbs4Pf3TiPk=\nR:7abd9cca9490c55a43566fefced85476fe8408d82a1a8f66dbd8070eff08a460-d\nZ:Q1umXXBVfmzdsQeP+M5gXkA8VtvPc=\nR:7ac41ba8f819501200555f456f5f0584a92f151db98a2fbd4abbde977daf84b1-d\nZ:Q13Oe6ZFHJQ6dDtznvZE6AM2zbqm4=\nR:7adc285ab6812b1bd033552dd0b64feaa5adc6569b81abdd701de2d08d425d36-a\nZ:Q1gqlSmAW74XF7LZhRL6/n67xy78A=\nR:7ae45896bd41b79ca60617e6ad9b8a5657e67ed298b5b6c25770087650568d4a-d\nZ:Q1m4bA2Jiuzec6CFlN16NjAjEGEz8=\nR:7ae9a97294be74b17a4aba9ec1a2fac995ee45e05490033ff1167a8bb0301b1e-a\nZ:Q1LEpikP67L+C6/SElSn3B2fz3Fgg=\nR:7aeaed28b17f77c5daa56f09db94507603066d5c813522fbce3799aa3bbedec6-d\nZ:Q1rv3oNAEDyxkBOU5FnLdhvc3L2mE=\nR:7afad7bc541dc1e835812e992f85d463646822cba23cf891c85eef039ecc667b-a\nZ:Q1QUQNKj9e3lFrhWqqtZf6OqnKMSg=\nF:root/.cache/go-build/7b\nR:7b6d033e0e9172b268f05705e774c91830fc778931c3b570b6e71303beb6a7f6-d\nZ:Q1A+WAld1VS5MiiyciTjfcAWf78Ho=\nR:7b884befaa5dfd5992658a0cd0d72e863021f9c8bbf7d6af821dfe25f2fedef0-a\nZ:Q1fpzskxEdz9xC5Iol4972oAyPEqQ=\nR:7b9a3f7ac62a76142f467902747640c4a3eae70a89da5fef71acb9c4451b17aa-a\nZ:Q1AM3bpJGSODSJlq/9KgHWIztA5uo=\nR:7bb2dda920066a36f0fce772e2a2bd7296584f55ead27335eaece044de35453e-a\nZ:Q1w6x+QgRPawxphiWwYY3CS0CLeSQ=\nR:7bc0f75d11388b99918e279cc0f0f42e811cd7b1a77270bc4b30be565416ea3f-a\nZ:Q1r8Ox1FIMtFn96F5P8z3RVqipRW4=\nR:7bc188aa9d6185a6c2ef646a5d40955fb29eaa7cc1f9019ae0f91bcce658636d-a\nZ:Q1m5glzwIryyvXjNWCrraSWiK0e9I=\nR:7bc4968d890341c95d7ae61c8097a5694707a0a5061a0d3eab44fd9f431bb639-a\nZ:Q1cb1SjwgHbg1w2mQhFkmfjz/BX4Y=\nR:7bd21a38639abaf789005ef37bb5d0386b748588025c7f8f613012c5f70e3f29-a\nZ:Q1+quwFfNZBa/xmI3NPt5KpIEMZ3w=\nR:7bdb3047f76cf0b9f5aa8336ed760fb19a005dc8d5cb3a44889fd0c8cf8020e4-a\nZ:Q1Jf/H3c7SOrGC4GclfP94mdWd3fQ=\nR:7bdc205229c775db7784f7a6582d1610471e12afe4201e34d35858e5ea4177e0-d\nZ:Q1iOKpgr1LDPHDGSXTMgdJnEbT7Fo=\nR:7becfe23f2ae63b1a5f36a46e35611a79f567dd987b4f1ff9a3d026eaba15416-a\nZ:Q1uozkJB4J2mDCuvMdne4NEKYamdI=\nR:7bf27fe95835f951d887a716f7eba914c4b457884805dcd0e502270dbfbb28cd-d\nZ:Q1QJxN84IGXhCbYcezuSfFidYbp28=\nR:7bfda590e722f4e3f13bc333afabce1cb272e9f3b74e1d7927a4803f55458835-d\nZ:Q1CFaUoB0sSBcrgYvMCggMxFrmwpo=\nF:root/.cache/go-build/7c\nR:7c0268302a278beaa92bf02d898a6e27cdcdbb121b290254b179d7c1ff37e2b2-d\nZ:Q1GQAFye7d62sVsmXlT59uIpT5gLI=\nR:7c1aaa95aedf071cb447c658aa953a85efcee065d8ef9e1780b7b45670e9405b-d\nZ:Q1jTTlK2LWs4mxbEODlqW4BQjULrU=\nR:7c1db748c01116716f3d02da332173cbc0ab2f9330a59c9f21cd5c319801ee6c-d\nZ:Q19NrY4LT3WPe7Kf5I8l/EHBZxZ7Q=\nR:7c4f44b60862403ce5f8b0fdfeadc4268a888fffa7f2bd0bd2cb8efbd7d266ab-a\nZ:Q1u+ALyCiIVo5BoiMACypf5eIWrRQ=\nR:7c58269c7d57d0baabe23c78e513d4a3827685b0075d8eac2bbb05ab1624d5a1-d\nZ:Q1t4zVCHW+BzNKn+9P9BPlQcGsN0M=\nR:7c605aa65d16690e0750b04ed57b21ad4b5325ef5709677787459bdf7d432a1b-a\nZ:Q1G8sJ4ycEbhVoaVH01G+1Kcz80lU=\nR:7c67cbda4591c3bd049fe8db2109c9fc73cab1231421495a5542158122a6c9e2-d\nZ:Q10yszKAjifxET53H36Ri4mBxu0FM=\nR:7c6c6f2cf703fc06c167335c81a55e0c93c359d4113301308a9685a9e669a639-a\nZ:Q1lTM0IRQIordVotWGThwzgAIU8k4=\nR:7c785533bdd7f93a4f4dfc4875cb78047bb8cf1e4b2a80dedc6b5f2410b44245-a\nZ:Q1O25eQ5902chnN0pJB7jxRH1Aq+E=\nR:7c85b1e177179949c8c7abf5d2162f59a7542cf341fd2bfe7c5acea197c7308c-a\nZ:Q12qg68ENYk8sikcgMdROjDLRCAJo=\nR:7c9513263c589d4c86be3be35d25637bdc49e7a226d7ff22610b3f223139235e-a\nZ:Q1R+sRyY2gZdZ6IhwNN5MdJk0NH5M=\nR:7c98258b5ee508667d6330930ed310910dea80b5e3424a424896dbf490619cf8-a\nZ:Q1+096T/EWIKUL8o8vLSZdp4jRuEo=\nR:7c9a5d8468629efc0a42e0a4a85f66dfde1205e598412cb8829642ed61f61fad-a\nZ:Q1NHelrNsyKmn80M5tTLg33ji1OaU=\nR:7ca1a23176411e6c08832c1f86439051bc7725c2482e1fcddfe7e65479ebce4b-d\nZ:Q1G888Oo4MgUfZRuYtlEnK4HnnU/U=\nR:7cacb3a387b783e2091f3a9e7f499caa80ac162d17d21403e0b454bf30b705b4-d\nZ:Q1zRMe4uJ3otwE2/PqPF0Z8PXD9yQ=\nR:7cc3273ea31ae5f6cc473deab6cf7f86c91fbb8725c8318ee0e8318478b81a80-a\nZ:Q13Yvv5q21zS7cEMEmZGaHaMxgV+Y=\nR:7cc85a2fa63e3d1c2548e8d0858ad67051d2518b596211f19561647e435fe5e8-a\nZ:Q1OhEs43q2lInX/kytZGmgZlogTjQ=\nR:7cd717a3708003eaa9637c65b2b54bdd212357b0eb98dd89e1754c4dcf7353bd-a\nZ:Q1UdJJPVSs1qJhvX6r/9gn5RI07ZI=\nR:7cec0e6e14475a3c5beed6217789e111650064e375695904e19ac3941fec7ab1-a\nZ:Q1a+y9+OcMA4ougRrW3Z7v7m1kzBs=\nR:7cfba2b7cd1f20e7ffcd778db31aa6e68d9bd66f35153ceba90c28a6e867ce59-a\nZ:Q1UPp5nfoScw//4cXkTubgjyH34/c=\nF:root/.cache/go-build/7d\nR:7d0261f5bbf264dcaa4d826b815c4f69cd272dfc331a53f04836955acfa06263-d\nZ:Q1YeMbhvtYAYng/nOc8BlGZjDhhrY=\nR:7d06033ecff0d8ba707f1f0424637c5f1412136329f00c50b405e5d654e331f0-d\nZ:Q1d0lm9zf/ZZJDTO4fEP/8pgCGuh4=\nR:7d11c40853ee2fab0561d2aef2ed1318d47316c25b93a40d085e7c23b05cea74-d\nZ:Q178Wm8+OTYX2NUZquf4bqH2o6u1E=\nR:7d19af0c83d7668d589db6a433466ad609046997ac364b83cbae1cacd9748eb4-a\nZ:Q1KanV8sCT985Z0R0ENpeVkGZGA9A=\nR:7d376f8981933e8bc508bf635901d6a291594b57f3456a0cba049955bd43476f-d\nZ:Q1BWZdzqR6qA7QKQVIhuzDisGtsWU=\nR:7d4e545b024238d41aa95e6b242b5054b9bda920e8ec7ca59b833c7ec740d424-a\nZ:Q1hCQxo2HrmkkRgQIj1RvUQkafSmU=\nR:7d4fba43fa1a0e332db228d930831d0c964ac07f5bef3ecab1be19a0e950960b-a\nZ:Q1nvXHV5D1MyIRQrdv3Z3EQggj2YA=\nR:7d5cdba90e039178ae01043e9a7cd6eb1b07cd34ce6b868d91f1bf6ae2b63edb-a\nZ:Q1SSb47P1AFE7VJcIbna+XTsvEG6Q=\nR:7d6242421e23980c4738b9189bb6720202f36cfd2fbaa2cafc9958e9439c1ecc-a\nZ:Q1Ic+GzO8oSNOE1VfaAiX5ofhjV/A=\nR:7d6d6562bbd297fd538f33dbe486d896fbbb4cda82c8c08e7a6461c5ff6862ef-a\nZ:Q1ioUSLoDCNX1co1bqrOAGv4bm4g4=\nR:7d745c87605c92572891920b615e55a0677f609408283306fa68a3d8a3f34f6e-a\nZ:Q1bROKR1UGFZgIhjrW1Z7E6NAU54w=\nR:7d7da0644b1a9ed2b1e66bb2655983d0efac57da8d86f83c0e46c8231cfe59f9-a\nZ:Q1rSjovshrRLqeKKziuiSmBZfSUa0=\nR:7d91573edae93388d2c6ae2c5a0607baea90a4c47da126024f762fc75c499160-a\nZ:Q19W3qThUh3i9Gccvzx1bDuwGx7Y8=\nR:7db843bbab5357fb1191112f6625cae1917b6214ef48d1fc58f91785574d8dba-d\nZ:Q1L4x4a6LNITSq4utGb2UAGhPA4I8=\nR:7dbb972df3c45ec2f76eb2c5fb749086bcd0f17b7c308c5be4f9e8aae2d7a3e5-d\nZ:Q1SwP1cLubgo/J4oyfDVZLYpjkbxk=\nR:7dccb503be0817d946768d21b4644039f5212b87a15253b9308a70d948189c98-a\nZ:Q1IUz0dj6/IQXfedQ1ZYzzvdieQ44=\nR:7dd55efda3242f2d78ce6a613b302ca69584852b41c4da898f65d982d38f530b-d\nZ:Q1AJLkgwRoO026LWn27l4YqE+fvok=\nR:7dec8cfc1a886a51a1434278463ede2020081149197a1049c61fe38f33fccace-d\nZ:Q1yGfO4zm2U8lKuxVxFJvmLTiTz1g=\nR:7deea77f862d01eff3c74a2a21ee18dd83ca2948e4bf451c85ec3be0409aaa45-a\nZ:Q15am1jZvuzn9OUeYmT7fp5d8/gbw=\nF:root/.cache/go-build/7e\nR:7e0723ba543165bb35b60c67d3ddaff71e33b46466b09833f2bd4e2fbccc8e1f-d\nZ:Q1niLcTfgS3j3/FiH77R06g0ELulw=\nR:7e0c27a443d1f844f136210442b3c940b24dffe31b12c13bcc6e517aa039455e-d\nZ:Q1iFW0LIaiV1TAnlqgc2MF4Of1qv8=\nR:7e0c3070c32f859b0553d01c86b02e7de92bdcfa8e11eb9b830a8d4d11e8d05e-a\nZ:Q1lY/gJpffZhdnFUmvVQDOgcZKFhg=\nR:7e1f4a09290edfad4c394919836ed77c2c84a0a608d651e4d5f509625fdcf3f2-a\nZ:Q1j3C1l+KGpVk/S6K2oWTWQtwK2Sc=\nR:7e30717c47e219cdefef2a31de270aa83e7178861f449292d4bb2b8c9afda946-d\nZ:Q1/ym49GAeva/wqCnsuztAISzlcek=\nR:7e30aea6f1155e32035b702a30f1bb75aaf11b61204443fd5d553a9ff4a9416d-d\nZ:Q194ybt6ows6luicszSL25mX3V1XA=\nR:7e3b7b18c1db19bfc4e8923b09633d85d6018f52ab2ecbf04a581ea2fefa2c3d-d\nZ:Q1BlG1IF6NA1NywOyeHaFT40a3UXs=\nR:7e52f38d404afc9c0bbaa2d19eb041fa72a43fad301a7b00dd9d898a6571fbdc-a\nZ:Q18tsCP4Srdp0QVOQh3o/+/n1RU40=\nR:7e600657430579d49dce93a7f7946ad3609b444fc1ca86d3dc6728bd47ce5568-d\nZ:Q1Kl+3dQs2Y8RJMyYee5JQsoZ7hbE=\nR:7e63b8bd11dfa9ffef13cfc45980179ac79c21d99f59a7dcb9150ae00da57fd8-a\nZ:Q1GKjR3Zaf65M9bHMC7yMlinJno9s=\nR:7e6a82ed494a271ff41603d8d67ece1968de9d7b8e9c7f9207c81d407901c41c-a\nZ:Q1HzyE8wN1sC5OvV8+sfELOTwGpDU=\nR:7e7b47af566113bdd02bf397453bbdbe2f99fb95d98862d8ae6ea72902bc26d2-a\nZ:Q1txbeevdkOH0NRl96sHfdXMd5Ruw=\nR:7e7f2f600b4ac2c90181394b303c559dd60f5f0f80a3971d5837c53d2938d459-d\nZ:Q1UUDSkGUOCUaGxWTgw6A7/eNOlhI=\nR:7ea00f36249d679e0c5ef292c160d2bea4cb2fbcfdc2df32e2278c603a168a2c-d\nZ:Q1xA1eLNNqIXkEf9J08vy1WdEVWak=\nR:7ebbec32dd670d4f073beb7ea667beaf7ad236afe7510ea0af4835e63596820b-a\nZ:Q12P8VmXSFpKdxSmVVJQi0G/zp64k=\nR:7ec4de4167d6bbf8ccf7cd8ead0431c4f638197a81a9041f3194bc4ef91791e4-a\nZ:Q1IzZNus+uEyDpaBnjQ9t3apEWU6Y=\nR:7ecd1f3d4146fc529b279fd5d891fe6eed79cf036702c87d90c634c291496068-d\nZ:Q1qf3epE1nOnyNiBjQCrbpR46S4qk=\nR:7edf56989f08fc078a195a6408833f67369d7e7944ebd46c0af004f55c88ef9f-d\nZ:Q18xgc2ShwIKUcN7+iLotE8SCB5gM=\nR:7ee808b49deb5b9f07fa65741ebb508cfbf0cf3f5cb8077b54fa9c760e0e4213-a\nZ:Q1IhkeV8sItYJmSW0HIEy2quWvpTE=\nR:7ef418c8386978a002cee79ca297e6df7143b1f798d9c87758e6aea10b3202e8-d\nZ:Q1iNSwMds7l0VMv8dS1F0ibvCiDMQ=\nR:7ef767f39e87c7ae5839decbab18bb0de06cb544d06564d3d84d8f06be2eba09-d\nZ:Q1ML1xta+ys/bPEATOWgNsV/5rGJk=\nR:7efdde8cb246f8e10ea03e3a8d70c3eca0ab41a224cae2bda89e63f9c7b915b8-d\nZ:Q1sAQubbAWb8PmF432NLojNRkGpt0=\nF:root/.cache/go-build/7f\nR:7f01ba920a146b980c9dc4810781b6d28cce24f425c175839384fb9e72ef25f2-d\nZ:Q104+fvKCSRQ3HySWzdKidb7yCDvA=\nR:7f03a2cb8ed157641a27ea515a34f2a67ada20c545464437cd885002c975f34a-a\nZ:Q1gxpkDnpve96cuv9e9OqB2B/Ni1A=\nR:7f03db43eaa5e6813bea8c3c3c39c2f5aaef251b49190addd18fd8027a2c3ab7-a\nZ:Q1/Ip8Q+Id0uJpFjMV2usmyY3SdMo=\nR:7f07abfa9425b0073015eca0f36b351fdb1f35040e58f91d92fceed903ce5fe4-d\nZ:Q1aj16LZVrs3beN/8hO/ESWBkAzmc=\nR:7f2b7a57b692cb1c543aa07568c9d0e3ad40d0a7324158fdbed7c05840d4220c-d\nZ:Q1Tsiur8IA/ntwPD69oUqi/CkoD0Q=\nR:7f389f61977b1becb9e352c44d54dc187c694bbd451d9020260c8038b87a3665-a\nZ:Q1rHpsCfyKcObWUsD9Wp4tRE1YTa8=\nR:7f76dda97ffeb1c760e740246d08c52cf9e77029709d64286aafee0dd5fdde62-d\nZ:Q1KMMY40PdW7V4reXzystpZHcbf58=\nR:7f985c73ea72a5cb59f922457921b4258ba3c80b04e57c1ccc439dc2eceaec61-a\nZ:Q1JqwUQdhw8HPQVl5EUhR8Tjz/3ec=\nR:7fca762a6203f87976a7897131d6f05c2603267cf5810ccd9ca9b95b229cba72-a\nZ:Q1KJpEZftEc7IVbjco7RdcV2KES1Q=\nR:7fd1e745d39590973df8e1be754797f95b4bca54e9af515b8f2d996611127355-d\nZ:Q1dzph/WinFdX60JNLZi6a3Cru5NE=\nR:7fd80a6c23a8800a53440e7e72f831181b08684f9ba731229a9e84d247e29353-a\nZ:Q1dApSP3S0P9Szny358lO/NHpJ+jQ=\nR:7fea7791c4660d2e83261e98d7206584518fee385463da07b876144381c510e8-d\nZ:Q1zMxh2C7agj1gU1RaYPYsYO55fJc=\nR:7ff1300e304a8b9019dc7ed8b4548f605f43ee5b8da9d0b440868430b2c5d1ea-a\nZ:Q1DLkThvVoQiRpxSYqknnmVp7Ca+c=\nR:7ff982a23dd9a2f9fd3339a901c4cd65bdc6f866835574cbd34e1ec07640b11a-a\nZ:Q1LGDC4q4hGGCmuZVs7mGzvlqIVFw=\nR:7ffbe8f1a50862a6be2f379a972f84d70da8b322c9ef0f4960dfec886736a2f3-d\nZ:Q1R0L3VYzu3Z40A3UyUs7SGKt3Oj8=\nF:root/.cache/go-build/80\nR:80033e0ba619ee7c3d27550d249e1602a33aa9e40917167d66388710e95c9a2c-a\nZ:Q1aFwSJoi3Agel9sN6SPmOR0KvHqU=\nR:8011e9c53622e4ccba7d311ba870ce1ae1444a4269e0abb0ba08e9582806ae4f-d\nZ:Q1rPkIwFtrqYIDAvCsU37tqMPY5bo=\nR:80139782495ab1f977fae5377f8f20906d8f0a1c2285dfd24887d6df6b5d2264-a\nZ:Q17OIX0NwgE/+AJeq3tco3L9VsRw0=\nR:802140ec26d0cfc3fa18ea5adbfe7523d3018e0363cf4d174ce7a4035e9f9d9b-d\nZ:Q1oHK2twCUnRBfADpKRghS9EvVZIc=\nR:80239d72518b5b63e6faccd208edebf99ecf5c2790aab1d4f56c9fc8bb5a8aed-a\nZ:Q19gqt0X/GhP7iZw+gWWRV/XA+lxw=\nR:8028aef77aa2d23d38751b2774daf5ce2bb7ce1e3601923a0946a1d8519b1459-a\nZ:Q1FO/wuFUbf5P0IKQVRYse/yTXSdM=\nR:802d8ee16a43acbecd99903cbde9412afe2e79ce7744560a35885455018b5fa7-a\nZ:Q1P1zp+gJATvNmOOwaLxZuyeem3DU=\nR:805c6e3f0cf3f7e83dd916f95a49eb4431a3999f8b62e8a4d974c666e58a110e-a\nZ:Q1rtO0SdFOrxCVeApES2K3i+5kEY8=\nR:8073c28303b5f1bae550687d562d3e627c584c58ff671bddabd743b491e497bc-a\nZ:Q1IcM1GQw3qA7rWcyAy5VBnVKL87Y=\nR:808393030b962f539e73758f25aa1fbe0f06404f118a81617c2307bd55278595-d\nZ:Q1ciRx691kx8midfcacu8bmNbhkcw=\nR:80a83400be0e269ce336464ff12771b505f9f90f7207adcc2450089463397a45-a\nZ:Q1yquG3WpAkszS/Xn1gOtZxvw2Bx4=\nR:80cb8158f655f33ebfe81a7915cd40e591873a7efad630685e3b1f5439268c19-d\nZ:Q1hwqDdk4raiwfpvtG8LcX1Wzo33s=\nR:80d27390051e8ea09ba1047c9182f5bf46fc72000a3dc37892c429f0c7eb64e6-a\nZ:Q1f9jx25N8B1rViGtOWRVQ3oPDxsU=\nR:80febede06d22180e2b5802496d401723b554153aa821493c6932e1a6c6f05f8-d\nZ:Q1YMoNLGGY47dngH55qhNwZRKbfDE=\nF:root/.cache/go-build/81\nR:811ca9edb8ed9d4845eec36709f91978f6cc7a2f40eed4688897d22aead43338-a\nZ:Q1I0VUwaPKKibJVz6M7Ck/e4q4t/w=\nR:8121c030bd589c7b12870459e18be5ce3ca6132d121670c66e7a90fee3109f46-a\nZ:Q1zfGtpctSQG/A7mci9n8sRP5bqQQ=\nR:8122e9d3b264422ca4b28cd555c021a56997e302a819deea3e0c3421244fda52-a\nZ:Q1ydbbiwi+Jw57XZUqjaA42Kgat0w=\nR:813b1337920a7b904661e2602c0e9d9dccee23446294692674f16ea5fdd9a0ed-d\nZ:Q1BHJxHrHCnZc7aOyXCcLgE4YWzoA=\nR:813c057e7003984af2c8b3ba9674e62416458c74116c58fecb15c63d5e8f83d6-a\nZ:Q1pYbUcj+LbkLJ/LckZEv4mKoahrI=\nR:814bd866551243874cd4cfdb6a3f2dd0a5f215b5837e24902425882bb0759e07-a\nZ:Q1taFJQ2nMdh4EpewAlLpO6Wa2FZw=\nR:8155677ef431d6eaf42c5ee1c1aa518672be143216d2b71fc34407fee1712f77-a\nZ:Q1kZHguWdqaSCF0iF6ReXebvc4TI4=\nR:817635e40b879942c602f8e79f9a470d55ddbc40d21c848e5590a6c772ab165e-a\nZ:Q1viAq7z9izkmbsOWHltd6ULDRZcc=\nR:8177465e4e5616c144661ec166778b33619eeec4212c19da5d4044986ebda976-a\nZ:Q10mSIPvu33fqjhLZPjjgNs5tWiFQ=\nR:81911c475d3fc17df2f429c17ec4055a3127c12a11530affeac1288cb9f9df3b-d\nZ:Q19ZDC3gSJZtuANjX1MoCRm4RpX/k=\nR:81961041145246a9c9c8cdec421bf45afb5e694f9989b2395f304cc64b40c43f-a\nZ:Q1w+k7jMzINZ3CtLg6PkTI0tL+0sA=\nR:81ad7a3d4a2dda3728f23e3b9393b93149469bee401475fc85e570c635431ceb-a\nZ:Q1ZXKAGKL1ny0voeWbhdbdNLQDXdw=\nR:81b4d4b93cc15c530805b2800e6db7064cfadea2ccb3b05e79c77d5f887b161a-a\nZ:Q1ktZlvoNzNbgbF67Hx7QFhGvdXQU=\nR:81b8f6fea375066a6e08201cfcf640a375943a1ae2f72316a999870e465f8885-a\nZ:Q1cXvQglUy5dcfGAxIziITaKWn/sU=\nR:81bd5296807da68d2a20c3c88bdf81f113619895e01a08eb3093416a705642da-a\nZ:Q1DWCDOKv/sHUwmGrS40okHC2RqcU=\nR:81cf7a1adcd41d275ebbe476337de161c07ff168708c966fce40c609115f5e01-a\nZ:Q1fnZEKG7PZ6FgLYfuR08EGc7L70Q=\nR:81fac2be34239eea7d082f5f5a2cc1da53470928464b5c20c2aad9ec483d17b8-d\nZ:Q1lCbP5FZmPMOBIySl5eXtqeTuox4=\nR:81fc25780fcdc073f80e690f59a3f27f6336fcbcc88ea927f22e3138080969a7-a\nZ:Q17O5AgDLVg2ezjujZjWs2lxrMt/4=\nF:root/.cache/go-build/82\nR:82057e3ab2f3536dcfe21626e602aca0e386295139dc37ff85b30f32e94112a4-d\nZ:Q1ry5X/yIX4FJC4dcqw4EOZx4NsEU=\nR:820e1b61777bd3a3a31149aaff4d38c0828b096ad5be38dc72c362dd20492755-d\nZ:Q1yRcK4+5bne6mp76p7nKfcQ/P9c8=\nR:821b99a7276a1538b9cf0c3ed8f7ee460a4d2c25609b59245e53997511b58ce9-d\nZ:Q1VoNlh1ruipq4F6i4yqcul4roTqw=\nR:821f80a25900bb5f49458ed2a521443cb3731ef18bb1b716e4fdbb3c9648b87a-a\nZ:Q1EF/mp2fydViF+2y8WhqTXbZvVus=\nR:824b1270c82266009f4ab25290ea70bd9e05ac9ee36422bdca38c72068714d49-d\nZ:Q1sxNPERo9I2+0wpcE2OXxG4Jf2n8=\nR:826911dae5b473a364db1e5d3752a6feb02e69f65249ee6b1aab4087775c7ed9-d\nZ:Q12enHrTzNjEYTGfTzsVV5nNFQc7k=\nR:8275e6d3adfd15934547ceebb7e48bc827d70cd4366b9a5b7e08c3375c563da4-d\nZ:Q1jESHL9dFi9Cv0qzLGi3txfdT/ro=\nR:8278d03dc6fd59881503adb1fe20a8af0ca283d30bed05a71e22fdfd0b38c88a-a\nZ:Q1PgqHzETKIfVK127MaFfFDSJOtmQ=\nR:827ec0a25bf8e509df8e226bc9820fbdf4362d2e6b110f0e3febc40ee3a91fda-a\nZ:Q1hnK941o7j7BBTKooZd1Lh+4uKtg=\nR:828819f7c3450a3af8cdef2b76be88734b00089e7df4abe66e0d825b57e9c94f-d\nZ:Q1JE+keSATUqGpTcuXW/KSwsITEi4=\nR:82945460c0a6968222adede8b1af3d2497e6c3196c66e4925eba51d6e74264ee-a\nZ:Q1oqX6aVjRzQdyboHSmt0RdDUvhdE=\nR:8298de3fda274d68e81c1dd886e6623747b1ef54892a695480f780d33d1ee164-a\nZ:Q1d0ydk5aPgyuZbMQOq1nzaQGkCzo=\nR:82a40f2e8ef440dc98204721c16b7fd23124fb971a883c4d3814c89cdc66c746-a\nZ:Q1RTqmw1BrdZV+Fzgy+SrNZNzbSW4=\nR:82b14bcdf9185e5eccdbcd4d994666776646d9c55d310d2457a4cee20f0bf035-d\nZ:Q1V0MCo4xKVWVd2yykxUCu5Ig9q2s=\nR:82b9d15c255d221da4ca3ab51490bdef2ad20bdda2a7608d388b6ba738ac2371-a\nZ:Q1nBj9GzcqT3g+y2IvefocqbE0qwA=\nR:82bb8fbb475ab497eb7712edbfc1b51fbb7577b172525a4c707832d9c8bffce0-a\nZ:Q1j0y+AEszMTczjgaOlOA52QgyGRc=\nR:82c25c032274b110e1015d3aa1c249ffb80f42f140a9afbe00dec11c0f8eb4ad-a\nZ:Q1C6OM+OZlmr3LZWGQD8QiRiLjLKo=\nR:82d13a003c3bf220a92e45ad990198d367dac6eb9c1c314b983885da58b76447-a\nZ:Q1J2LHGiLHr7gvQ3r6J7wqY7hE14k=\nR:82d57ca7b333aab26cc241ef8a658eec5b92496c267df70da36879b77dfdc2a4-a\nZ:Q11AWOfUBAenGwjWmX+IgT4EJGFMQ=\nR:82d89efc62b10d33d0c43f84fb9568ed429d63c813a81020ebd6453b7fb98d02-a\nZ:Q1NeLTOWzSKOC/gFfdloV43HztEWo=\nR:82f3e3953d2fad9e5ede5d2e5b4b9e81f8f20cb48539f6ebe4f32f3285139a7f-a\nZ:Q13gNsNa9XL3s0fvYKdqedNSU2/DU=\nR:82f5f21d6bf3784d14b677524db35e698c0763dbbc97edce4512a6c1d9f39020-d\nZ:Q1Rpubz1I9yHSUOpsYg2/Ae8851Kw=\nF:root/.cache/go-build/83\nR:83008d0eacede590b21249ce9acf200250a844eae7fc9071a39ae0a0e7194265-a\nZ:Q1d1aEjLehP/Nh0Y/Dp/ruQUmg0qU=\nR:830d1f3687520e015799d183210e1a6d6ac94884fe2158ddce656288be6b5aef-a\nZ:Q1S4BAnvN+AmDtRGlfYNk3YC8Eap4=\nR:8354cfcda740d73e70e29ff761002c003ae45a1782164278fca1191741930011-d\nZ:Q1GGgs3WSYPLhAFLuuf+t2jhp0G9s=\nR:83558a7132420d25c25f0323cfa45c58624364e234843531ed7c36c19795ef55-a\nZ:Q1fbHaKmbIiNfpSGktwE29tvBEGmI=\nR:8355cc4cf59beea5bae1a7cd21f1f6ac76c73e76ee55386792a32061811ae6b9-d\nZ:Q1oIeBUay01KMOOof3sSblhk30HYA=\nR:836b33240e5b17e3540742952674ef89e056dbe7cdbda6c2d80f1cbdf6204b53-a\nZ:Q1dI9t7uyNvcdC+9oUrBVZnOiFKnM=\nR:8373a29aefbc6d52e512327bd7e4d6329297b315fc57eb327133db4a7ee75e61-a\nZ:Q19VS06POy3FeeG3KMbQB8TwoeHq8=\nR:8382fd35f5333347d6ccb544800bdc1fb76c08454f267f4be37f6114b325f906-a\nZ:Q1Tbl3CfRmV7EFIlB8u+jy5WwhGkY=\nR:83a330daf4ca069a9ee3d9acb97a896ef1b627aa3186f4645bc123c496915dc9-a\nZ:Q1pfksGjdrRDiL43i8YYdsjoT2YQ0=\nR:83a60aa0a6b383b89577337b87fd6bb7b722103a26dfa0130d351897b87e0994-d\nZ:Q1yn7MJPJo9mXsYWFs+BG3L3xvNdU=\nR:83e07e6fa171ed99908a42f782f987ab14c7964b6c7ff0841fe137c5fbb97bbd-a\nZ:Q1CctqYSXdF6+4hqs0N1pwk+giZvc=\nR:83e9a15cd54087812ec39d9e33d3ec50f8079f474ed0a389c067509b0951d558-d\nZ:Q1rJl86tz/1hsd/PeeETaV8B68c60=\nR:83ea81108e5471566d7744f62ba464fe945aefb7d5796695b552c06de7ad500f-d\nZ:Q10iYoXKm+H9DlOiretziNU2PCR44=\nF:root/.cache/go-build/84\nR:841a2d8b2d95b1066dcba8b116fdcdd647b21630115c3c110aceee3ef16d0ba5-d\nZ:Q1hQJjsPzYHJpfgsKnxGOt10+BxNY=\nR:8433d6db08030036729933353344eff13cbc12c112af746c74d85dd51abcaefd-a\nZ:Q1uX/EWCNQHwZbea4jlb6uRcaixoU=\nR:845b37661b6857dde3cf07d3853b9feecad6900552024379e83d1c7c2b601887-a\nZ:Q1UHn2SrQVMFQHGFuTOn7c3/zuI+s=\nR:847da8c983a2a812168e9fe804009f0684f96517836a7a0c658c63ee239495b5-d\nZ:Q14AE+FqHZmsP5LxU2D3GpueVeinU=\nR:84a58b25d01daec99bf296807a3999fd8c51d771fa66c90c65c076b1a3712451-a\nZ:Q1Bht91Tu7Qp0mMYAOPneNQPCu+oE=\nR:84a71440e1d65d5068e8058b15995c59122b85134a1212546a7998aaf726639b-d\nZ:Q1F/CQlzlUn/x083VvDCClz0AsQb4=\nR:84c03eaf739402caf220ebba67de2a0f4eebc0184c432fc5321a45735f333658-d\nZ:Q1wT7uEdDjVH5D5BnRAkCAZtKfI9Q=\nR:84d71141a26f28263fdf202773ed7a37bf727f1584830b5ee2b3c2f0162b9b94-d\nZ:Q12YsLqBagu4y/yK2vsjvj2xvA/jA=\nR:84f3a78e18e487937e5b9c0aceb48053b5339a1ad580a257ea02b810c4785d15-d\nZ:Q1zKw+kkgowt4oy8ED43xjchie5Ng=\nR:84fc876f82dcd45f3efadb72b587f71adc1dae3a9a6c8f99cf4fb26d54fba8c2-d\nZ:Q11ZkmmlaS//i4ziHZWC+rPRUVmXk=\nF:root/.cache/go-build/85\nR:8508834333df38350ec91aebbdb5a985fc31b6f621d853df20e0f19d891b7fc6-d\nZ:Q1CvT4A50Qumi5czC+VE4iWm9/rzE=\nR:8508eeeb5f6fae5ed41e7951c86d0fc981d9fe8dc0b3193ce83cee3b2c2c1082-a\nZ:Q1lOlaTKBnBaX/KM26CIt40dmUT/4=\nR:850fbae6e5e8bc2bbddeebfd8f190be09815894024b49ae1be0ffe4f12bf22c9-d\nZ:Q1vHyNRnnxLH7NYTSBSWIeOPZuoJY=\nR:85108181e43092264dd19ef30345f42d2b175da512896f41e235b1aa402ae4b7-d\nZ:Q1ovWC9bvtlcQSCq6H+I648lo1tRA=\nR:8514c6d3504f33de4f5639d7ac6d9560b5a1baca5e5617964b5cf81310bde3de-d\nZ:Q1/mrP6R3r/+fqcyWksLMC2W2SLsM=\nR:85189493b7b78f406d25f6f64afba6bd5dffd91b346cf063065821f471a59e6b-d\nZ:Q14knVd19/F8zD7WWkiUbNe7wBK1E=\nR:8529e268e244993c290644829113b93b89fc15e40c9014eaa2f738e9e4dd88a8-d\nZ:Q1VkSqQg/AyEWJHWksJYCFG30zsjc=\nR:853ddb26abab3204c9059ac48129de3836005edeed2905c6a984c69406e120fd-d\nZ:Q1pqi73rEqAytcxkXbg57cPUbabl8=\nR:853ea124ca19b77f911807aede03cdb30db4431db3c95f7a595693f5892667fe-a\nZ:Q1pGh7miIGr1YSF4DzwLI8obepPv4=\nR:854ec8b953eb1798940ff4c16625d71cdfe351e01e06ba2d19e39dd4db2e0b7a-a\nZ:Q1+04jJjPSjXG92Rty+oe8HTlFqM4=\nR:856029cd634e22d6251f35d124c387deb068569b54dd5b9af2784e1edcdc4370-d\nZ:Q1zc/Ml3RXpeMckrd88N+Y4FCLKvo=\nR:85c41b4dc71a43060ed07893c6f9f2c962ec3a8311cf9886b39444b5f063c3e4-a\nZ:Q1rFeI8uIFejWM2kqoEcQdkc8yoCs=\nR:85c9659d6f56839a247ac7a3904f92901a0526a60444c51c3986b6bfb8c7ba6d-d\nZ:Q1xFLdnwxfh4eJELReNn472GZvSLU=\nR:85ce7f84648f50f0d38be15277be667efceca91a764341ba71b3d57ef6178953-a\nZ:Q1TXVYZlNRXjF/mrItojw1R5JO6Tg=\nR:85d31ec7b34a37c334b13ac1083958ee8d06fbcd91b317dab9c6c2d09078e02d-a\nZ:Q1g+Lw2fn6D7CX2e67UsBNP+Zh3MY=\nR:85e801e79ebda48fa923c35b186fada4c8ab0d0da39d2134acfde1ee71a71f71-a\nZ:Q1+kb8R7/ufIJSNOd7o7LVQyKqxlw=\nR:85f97c4b78edac309ea9687c62ac01da5b61625b1970f5b3594b0f69dbb75ecd-a\nZ:Q1E7e43oqYRQVKleKWuwNyFflA85E=\nF:root/.cache/go-build/86\nR:8605131df4a537ea033c4c965fcb70a8bc55564842fa680f1a4a5a16bd416561-a\nZ:Q1jKLaj91J9Pv+hllFeH/FZqNK8ic=\nR:8622a7d5e175037d215784bdfa08fa823d14ad5ec79f9120af0611e294154bf0-a\nZ:Q11a8/HNq7eGlo2szefjdjACKstrU=\nR:864563dd0f779154837e0394ef8559b5ccc8544cba5e48306cc55c192be0eded-d\nZ:Q1uxq9oKYABxN1oyi3Acq5x4Jy0B8=\nR:865a238d4ad844dba70f84a13d04c36531f3f590f0b8a3296d91d8fb045e6cda-d\nZ:Q1aS7uN2iat0S+ICRG+jfBHMEWAfY=\nR:866c23f4aeef0c2743a9f58f8b0bf3589e72814ea9fcd33ec55d6fc21da4e3de-a\nZ:Q1QyVQ/WVBGGkMnPRz7a+h8NCfIkE=\nR:867c1e946a63ca49b0d21905f1ca86e3284c4073c5f9688f3373229f6b03977c-a\nZ:Q1NQNUyjr356iOu8fb+sQXXulq3zM=\nR:8682aef39d57a1df5a0b8dd4dd8014bef9d56853328c0289c28880a0a54ff85f-a\nZ:Q1cZq0DuxrxBZ0wRXdnukP9AL4lWk=\nR:86b206491023f8793f79515d2f56b6dd0fac15402c2fc201209cdac492c798a5-d\nZ:Q1FTlbXuGSTsxFx7br80YDINomTP4=\nR:86b3ad49ed1843d0e56bff7810d22c4a1bda5930b21646975dbed9cca93e163d-a\nZ:Q1DJX4JupF0eOOUNDFfrUXe2m7FLM=\nR:86bf2a1f0fc4c66181c87b28a277e7a71c5925b07ab09c89cfb4e9eb8edbc5af-d\nZ:Q1rhsaMBLDoTAx8hjNwVH/9n8oqjU=\nR:86e6c119794ab74d6d85d5bebece991c81b73e36559630727286f8ec6de178df-d\nZ:Q1UBCUsLgvONbUZOlc3grVJezXFqI=\nR:86fba764f5b0866eebb9f8f6b4edac631d954cc3e9e50e11853b67e87c9ee308-a\nZ:Q1CZ9JsBUAkrvygAaoUziMDJjylMs=\nF:root/.cache/go-build/87\nR:870a5c2648152f3b9e423a7e1470a6d41092e1e987361c97a111c3f9a1135c84-a\nZ:Q1UbI6nTr414Wv7CP9ZzoZGfgSOls=\nR:87182bb96c320d78dc38c6ba8d41f6aa77f5748c9c422d547eb539a3d7d77382-d\nZ:Q1/VbbQCJTKe4nykmV2mO9gYfN7z8=\nR:8726ac21f6a1af6b1645104f5736508d160da428569b9c86907cd7941dd7ae13-a\nZ:Q1M/ZBSq7CjsDnpdcs39cO0cvfMC4=\nR:8726f815141c2788122eb17d3d9e016babdcb4af891c2e9eae4b3c587ac217bb-a\nZ:Q1NkQVUT7sTI/2y1SuiqRVx0GBDWI=\nR:8738668d0af68893ba3aaed5d016f8e9276b3003554c15cdb955891e19155e68-d\nZ:Q1erUZ4KnPgNSJv1w2iQBLrjzbTG4=\nR:874c0f3e35d5f1a6ecc026cb84c9f7fafd78f0720dc3c95461fd66f99197f66e-a\nZ:Q11nxntaQPwcwTSh1xHSDgtWOsXzk=\nR:874d3a1dd71dd560be77693a80b945858fa18ab1eff1d4a98bd1cd95bd6dd254-a\nZ:Q1w4oSzoacjqilQPdgIsl5nvk7DZg=\nR:87517d69fadf06a3ff1f873b5e96f30fec0abca3c909d41cc3f7d0dd5436e627-a\nZ:Q14S1l8X3dJzyBt672PNgIiXMrwrs=\nR:875aff13245586a3d0da5e1aab426e57a32b6d495fa2991acd91dfa033e0e2ce-a\nZ:Q1JoV/tBUqSUxt3F+K6GHSiNXaClE=\nR:875bd89252983c4887a8a96952cc2d93a752d972963aeffa2943dc4266fd9048-a\nZ:Q1r4V7Hr7QMlBrM4MR+C2LcP2e9v8=\nR:8764cd36cabd9960fc3c3cfa807653d59fa6c485b7d24581df35a3568676a590-a\nZ:Q1MUHsRC13xD/ziepOSDKInWwsrow=\nR:8767e77d9f331bc13a6b1d80b00ea4f7a4c3db4baf6e58ac86e2423032b0ad19-d\nZ:Q17aSovNmSzAaY6LEKhbqp12JPVhk=\nR:8783212286f92bafd9bd7c751de5f6af362a1538de0ad81922fd19ecd937fd5a-a\nZ:Q1nF7mkFodnM/woxePrhEmZ1CR+6g=\nR:87ce0cf40414e2fe8e61e69d5a0b0dd2574ce3d032b1ddcc954eafe9beae6f5f-a\nZ:Q1S7DI9sqfO2TTsxXtlb9fHByp/H8=\nR:87d1630952a7a2918d45760606901432c03ed66a1e0659ff5c79ffc6befa8344-a\nZ:Q1/70uH2bDMNlKiVAZsmipikhTaRw=\nR:87d413cab97f91a61c12aa0544768a713f2daadce51191fb52ac38b40d4f40c3-d\nZ:Q1R0pff5TPvjSuAkdTbGVvY1IiuAA=\nR:87d7673908c51534e143ddb3c1e7580e54643aff7e0e8703b18f0d82f75f5544-d\nZ:Q10f68MfPCGaaWNIShhvtpGdd8I40=\nR:87d873cd0ae37b2d098e9f5657ed99c264fe9ed32da784d98973844aaf474a7d-a\nZ:Q12EHkpFRUTWHuKimqjE8EmKfMpEs=\nR:87dbe21464b62416624015530e696683d7c2323d08eb712549e221bfed85f18d-a\nZ:Q1R+WBEUADReIECqBCS5/M0++qwwo=\nR:87e0c3a43a86d5e44daa80a974478c855de8f6c4b49761577710431d64956570-a\nZ:Q1bl17iA1eeXwb/WXDZkEmKtdr7t8=\nR:87e324f9eebdc841f179aec680d198225e2b2d10fae61f23cb544d05060c9b2e-d\nZ:Q1Lst3U3M2r1mbkvd7UgdjggiGadI=\nR:87fa7640ed2d326f4a67cb1313a0d49b122bff6ed8848368a5646e96c950ef87-a\nZ:Q17oNSsWHhJDTtod9AwHOH0ajjOg8=\nF:root/.cache/go-build/88\nR:88093e39301c0f1b6a9abfae26798b1a22bffd0b4c8ead28614883c7cb68c478-d\nZ:Q1tEuB1RWSqP0/5AYiGWJ+B0CNu6w=\nR:880fc18c270f515509023fba3b00b748ab3a133be3d7b2e202c643d0e65bf135-d\nZ:Q1Hnkpuji7LiopC4b2eCkAq0XV/Sk=\nR:88139a89d17a3b97410b1d59191540564c1d884dc265ee0f061374d7debafb0e-a\nZ:Q1pazmvyLFxdNJFOoygXDAsEyA52M=\nR:8843e23575e97691be535bc24638d823c12b9094b07f22cea94f49e7bbb63210-d\nZ:Q1lyJhu+mFKRw77DDOkBL24X55YN4=\nR:8849f245958eb9b5d89c949510940d3d0bb496c75174c74e30b3786581751c1b-a\nZ:Q1m2jS5aqbtRoI5AxfqzrYN3XJL5Y=\nR:885add4005a67678f3b1adbcd78e0df0b9ec8ab3c3b7bdbf9966d80e8a9736ad-a\nZ:Q1WbQpFLmPeS9/456BWve3bCE4Vl8=\nR:888112c7a65059a55598179b44a0530275c18b43db5882f7a2fa382d6fe506fd-a\nZ:Q18YHtupar/QesB0I2eaOqezyDPHM=\nR:888358108979f8233ba1af5f36c6289f735cc5363900b0a7ee54d891f39104c2-a\nZ:Q19QOqTuGUuSHlsd8zc7pPs99k53s=\nR:8887f608133e0868865a3e14ee4515e11ec7a20868a1052dde1f5abe8e54496f-a\nZ:Q1zZdWa8ONV6gTPxUZaPfY+GB0g+U=\nR:8889e1d7740c700b3a4b3c19bedddd2a778c30b105d837312562908c49c799c5-a\nZ:Q1bLnwjlDV2AQjjLFPUspaBDJlxeg=\nR:888d1897baf08feec9faa9869b120a07d5b0b3a9205f0fe714ee2a55a1665c3b-d\nZ:Q1m0owCgzBvPCHRXEXyDMGdOxnAlU=\nR:889470e397b253d24c265ac91fb49e640518ac2c87f5c829ffd586eadd874276-d\nZ:Q1ha2NEsTh8plNTggoHOmlosLigzU=\nR:88c55687f2e0b8a2b61b33d6e1cf63495c64597c5df502c1bbf39daac4ce9620-a\nZ:Q1yfjb4TZ/Ec9GEUeZYFs512Ze0/U=\nR:88cc153d869fb6c761eb8b40dabc446bc2822fb75b11e8f51920ba39b4b4a268-a\nZ:Q1MbfzuG/OsTinzw4PeugbufVMNjU=\nR:88de97a1043a3a1c11819e4bbf7e1aed5685426bc56fb7ad10595944c3bbbe37-d\nZ:Q1CWl9efAEZVj3zbIM+nCEle6Dtco=\nR:88f7f63e5226c67d6146591bc0ba9ce606a57034dcf4631e2c9ecc9abf7955c3-d\nZ:Q1vyoEgVLn6LJmEfsk1KUapR3FY5E=\nR:88f92c3b6ad9d3e909b23b469ef430c0e3f1db22a0246ea45c190e9709e94f2b-a\nZ:Q1ItP2R5h/Xw3XDfCd4B1mI+fOJ7o=\nF:root/.cache/go-build/89\nR:891ff1f02a36110be85cbe83c993587c4d0f58be17d48c570c0d694e734277ad-d\nZ:Q1GGiQydx8kBGVcM1lB7UsZl77t5w=\nR:892aa8310ba7a993342328441388cf61800cbb06a6b903f21d3c4f293458f779-a\nZ:Q1C1AiUhHNyzoRs1bbOWd1xpCoJHo=\nR:892c72b99cf206b4d16e8a5e2e4f07b1ac629cf615cbae247577d4fe2cf97287-a\nZ:Q1LqCX0kCmP9DGvr6Qhl3AxnpZVbE=\nR:892e6541a00473f84b3202c9c89bc643ce92957755435e80d555855f381027af-a\nZ:Q1QIAMP305a58bvZMDjNBURH2yVvA=\nR:89554abe2258efce9df5bff768919763f820d3229fd82d8f401c694229d6ef08-d\nZ:Q1scu8yX2cc1WAVLoPjYsAApZ8fuE=\nR:89c9b3013fbde84b1dbfd6cf49713ef6bf9f7f3fda1fcdffa58a8ae9187e6ce0-d\nZ:Q1mVXL7rC1J01Zv+A/y5lyD0CAVTQ=\nF:root/.cache/go-build/8a\nR:8a0aa4b4d5ae4cc9340213f79251834d869485f95666e0f8a456f1559363cd11-a\nZ:Q1MYxdZ38UpyBpM20EncO3XafxmW0=\nR:8a0dcfda44cc476a502e19577afe8d30aaa0ccc30d302280a04fbcc8f8cf557f-d\nZ:Q1HzlPfeGYcqIY3QFD7+0Jucpx7m4=\nR:8a165b9935c47a11a204eb990a9e710c9b2c98c50c0d51ac2b886add1616ef1d-d\nZ:Q1qaE4d4T4s0Uk9ROqezV82hhdtQ0=\nR:8a3d003a4cb07f452ed2b0c1e949d189c1d271576483be001b88de98f24dc04d-d\nZ:Q1sTSdKpj00oiaJKNX7sD2OxQlh2U=\nR:8a4bfebf3884198df554c62f8a71e2128ea24809d941be43c4aad866d9bce281-a\nZ:Q1HybuLNszhkbCpjOyhHopYUGwCQY=\nR:8a533781b9fc52f0ba4b6f173ef63b367e757c0ab18c480a9a840a8c59899e5d-a\nZ:Q1uQq/igiZl6ZJMX2h8oU0rfrOuR4=\nR:8a54a6a9babd2216193fafe7a246bef08103a8f4d6bd8d0a9454120ec8c651bc-d\nZ:Q1i+8/cro9Agve23GF7E73IAPlmXo=\nR:8a9123a4e21d478a89d0cca22da74a493bc7378900866605a31fb7bbcfac5b60-a\nZ:Q1vT3wifhmHi7iVxLwuWYnkcFRdU8=\nR:8aa1ba63816ced6a6b1eccb153b144d89894aa19fb437a2a1df458db72d13639-d\nZ:Q15qhhtFAgsP4RIJDDSPI+ZBbG3t4=\nR:8ac25aeff0ff6f66b4f4e339c49fdd2616fc8203181d1f1dfd106186a1425c9f-a\nZ:Q1zsH2J7EPoIoXhyTxOZwy++41TtI=\nR:8ac6caa6626185a19c0c1eabb6b8ed34d975889bf43e697fcb0099f38d041944-d\nZ:Q1+Z+maEHxtuQsZ9DZ3CQ2Cd0b4sk=\nR:8afccee3433cd12c86e8a4469002188177a96b863af91f3088244f51e46a6257-a\nZ:Q1+HB4LmOTK1KwkXF09fUrgjNa6po=\nF:root/.cache/go-build/8b\nR:8b053212a117caeec1e6df439f283996d3d3eb56ede01fa577a4b783e48e95b6-a\nZ:Q1qy0zmpB9hYojyUv6eYTzjVKnAB0=\nR:8b0947439a4eb81726e8325f760ef093bbe3e3a556495913ed38660c64d0cdd4-d\nZ:Q14QqjeqhK0/78GsHGBxfN+HxzOg4=\nR:8b191ffa79a1886166003bbddc91e6cd34c5f10ebc964dee374097c64ab94086-d\nZ:Q12fhKpVT9lUGMPTaR22yy28Yrgb0=\nR:8b1b85052bced204efd229870c266796cb8916798e99e1add7d8b2bf55ad1efb-d\nZ:Q1sEhTudOqX0e3nksJuHlo4t209Ug=\nR:8b1c7cb326c8cc0a26e86f976cf3490c902d6b3f9e8a1f4f2d784e9b489b51f4-a\nZ:Q1GCE+rSpGgGGwagWqKF/0W43lC5k=\nR:8b24c4ec46a355dafb6833a40ceca48c8295f0ad30b2ad4378416deab3014c9f-d\nZ:Q1ollpfZ27ZQ8VjOyHF87PkkCLMss=\nR:8b2cd5ea40c8714756de4e1352236ff1816c659e02cd08c12bd2493962a38269-a\nZ:Q14wkKzcx1SXU4yTq3IH4xr/e5K3w=\nR:8b51009fe3b079af434f1cb5c43024ded352e53193ed014d04d0dd05fe1b506a-a\nZ:Q1vGROwzGpJpCadfcHByqyXiFwmRo=\nR:8b675321a40640ffe23834d276d7637933323f4ce97cd64176e615d9d4dfa86d-a\nZ:Q1mdKm+dmbyWnxWU2+BBtdSHHP70Q=\nR:8b7d10ef589e4a0111fe4fa3b535c559bfcc435cff4c2bd35e7bbdb019618ad4-a\nZ:Q1zgzI5g2T1xZSTWCqDN9zMM9+Xxs=\nR:8b94d501b34771686d8f86f0e24a07a633378606c99cc092a4f15bbf8fbf1066-d\nZ:Q1Tx0yi1NtwzrDra2E5DSO6rQLxCs=\nR:8ba3ebac08a54486320a3d366e805d9ae8942974ce187271be1e8f0f61616049-d\nZ:Q19QHFswxSxJc8ajolgSzsGwmagpY=\nR:8bba0b3ea6f9e8064c4cc24135b5c26a0a25bc366ad43471a8fdf2fb0593f258-a\nZ:Q1kd2iOrcJAPdsghVppBVMgQO/dRw=\nR:8bbe02694eb0eb0ab3e3f174ba6edcc3c0c1d34911ac0775b41571bb4ffb36a4-a\nZ:Q1sw3i3I5Bw3r2y02L3vcu7XEt2bM=\nR:8bdaf00a7bcb943bff4c88a53cfbc48295c3349fd6a1259c7fd0805ca9d111b1-a\nZ:Q1gcZBgfHdJEb/EVuYes14XQcxqLs=\nR:8bde6d1fb7843da0a8682edb75f0f6f46b52f72d80cc065a9cc5a6f63dc07ab8-a\nZ:Q1riwonGWdWSJws5viadOikhpmVQc=\nR:8bf26b784352f00c3a147e90d1a8ebdfba83656e5e489953dc5bb19e9672ce34-d\nZ:Q1j/byNdML8lqBnHbi3jy0D90u4nI=\nR:8bf63887ee9b93dab56351f786fee5fd4e6bb7c392c760677f2554cd8e9cf2f1-d\nZ:Q1ewAAl5TPUt9zP4picGcAO54nXqQ=\nR:8bf64f6169af6fdd932c5ff2e7002b3873871e82017389012ed40cf34755f71b-a\nZ:Q1x+okCep3h4og3NWfAjD0OC1m1Uk=\nF:root/.cache/go-build/8c\nR:8c08c20bb81c9ec297dc46bb75f64ef751c0145c18d12bc7d02d00ed619b371c-a\nZ:Q181M56tlh7FzAM1Ng5lIU3VdxruQ=\nR:8c0c68931a29c66c90b172b449403ed772231516ffe54b1104160aa0b4da391a-d\nZ:Q15o38WwkcWXZvGp2hS2sot160z30=\nR:8c1f8d2cb076e2a799e867ac9aba21788c797b40471fca3005e554c36db75cb8-d\nZ:Q1VNdZ0g58r5KHQs3/syqYVM9vzMQ=\nR:8c62fda53cb19170485267eb7ea5253669e97db746bc102a19fe315674eb9397-d\nZ:Q1YpU+PHkSqa3HMARkpeLO789Fepo=\nR:8c63ecaa473ac081096d1ce3addf858c0b843f3ca7d3808ce2d7916168e34d82-a\nZ:Q1jDUdScgdjR4cqMLJRSoamFNm/Ew=\nR:8c6624c4071c3e301b7ffa3db42c0df811aa3de83e6820ce41d70eeb9759cf94-a\nZ:Q1Fy0gfECuAQim+/+QRlKWpOqDgBs=\nR:8c832e28a5916ad450c00278c9b9c0abbec529d994c51563ee56d270ef66fad8-d\nZ:Q1i4MQj7hS5XA0HSkPmb/8TCZFFXQ=\nR:8cafdd3fde205584c3a4982d87462600bc38ff2e342634806bcd6761e95fe11a-d\nZ:Q1ms9uD4Nd7fCT+7yjgN4Tn0k46Nk=\nR:8cb9581e62afdb1fd6bdfddd4ec58462f195bacf845606d3d494dd1351965bcb-a\nZ:Q12re9auJHC+L44nDwJRDxHpp9mqk=\nR:8cbb12ccd7c7f1070acf6f7869036d812cd267b4d8132a9540b955f97acd09d8-d\nZ:Q1otd+DfKAQKMZJg3yhjjvZHkaxBs=\nR:8cbe2a44709fe8d3e5251453074d9277b2689817133542d0416eef360957b06f-d\nZ:Q1h017JYAVLn5bbiNT0oNz9ORWGco=\nR:8ccdea05cfedd6998c46c565871a3343232184579c20710ce1b069bad6f6ca9e-a\nZ:Q1KSIh4bFFBixbIOOvjvclYvjHBmg=\nR:8ccdf822209c7b7e2d0a268b926ab402d58c8297e290f3ca3f214f6675d2af37-a\nZ:Q13BUdRRb8gr4KRd1IbFcmSkPqsek=\nR:8cdad9b8ce41f3ef1257c5535261b03ab4ced732d830b5b82855a12f2bf4155d-a\nZ:Q1cHTqF9B95rg7hJwtG7zG/XXQ4BY=\nR:8cfc92cda7d78cb0cebe96b9d4e9caaa4014e88e37a211cdee18a53e1309a755-a\nZ:Q1TgcF+ZhZK5KUMfYsgZo1Ysc9fu8=\nF:root/.cache/go-build/8d\nR:8d13d55c8824c3bb3860c1fc08aa14104c142445ba9562246f42bb88e7068f4a-d\nZ:Q1pyoPIreu2ouHHTWvzQHSOVXoz4I=\nR:8d1b1c34c3a8f8c0c434862bcd6e7b5cc03e0fe2e66d0cc69b595e6f5c66a3e5-a\nZ:Q1eIR/517L3+/NVD0ZjFQTJLiisGo=\nR:8d3968f657f1eeb9364f303d60cdbeb4346129de7b7b9ac80f601931951f8f12-a\nZ:Q1Fbc2KdzF5EErHZYiJpmNNEidlrQ=\nR:8d526fcabd0c0b8f5467b7d86bf1a1a2a619c922fc5bf107d79461f369a398e7-a\nZ:Q1CnelyFTWg87MIDlsae/lfhjQYpQ=\nR:8d5e2f35a1444151e120f8fe93ecb29493785b16e7f5fb299d968d465be2ec30-a\nZ:Q1HAxH+77FkcnGBPqo0C8D0a6MP/o=\nR:8d5f5ed39b666198164e6b871c9f7866038fc36e249bda70e44b6498240c4cfd-a\nZ:Q1yOJn6aTQLXdVrtB+fKwGZacjHdM=\nR:8d6348c82c6851212d31f83a761e0a591e2ecce92c7b1425ee80f2795a5c16ae-d\nZ:Q1s78EkObByvqpuS019ZQ/dsT/37w=\nR:8d65333b64555fe6d2a82a35411f186c34d6624ed40bb7a9029d734ea051f97c-d\nZ:Q1IrweNFtQoi8tA9YIVPDCVZHSZpc=\nR:8d77c3348c4ace6b58302630b6d3513597bb09c33a4cb1ee8af28ed9f134bf8f-a\nZ:Q1K3KbPwxWPqw69EqQUHxqaLoOYqE=\nR:8d83ff9289fafae2021f9b42d60664ba2617297765380c5a85079d7d86cd3580-a\nZ:Q1v5fxcDUqi4QINntDsOiqI9o8A4o=\nR:8d8b24f2d33e95e0360b70e6b5d6e81f622d6cf4d42dc29bf8409d5b67ebe321-a\nZ:Q1LK0XpoGWNRXVlKgg+cMYIVyF/1U=\nR:8d962fb5c4326e0610c8ebf8ca689282cab501af281de8eed1429d7512b13ca3-d\nZ:Q1oVVvxx/tjGVEuz/A5NWm6qqoCpE=\nR:8db2e0fcc30b90086843340ea11cf5d7de1234f403a4147ff3cd628abc14cd67-a\nZ:Q1rSOhqy5j1f3l/HTpXnouF0cBQpg=\nR:8de897ce3dc9ee7d118be4534ddb1002aac9602ec17da026aaead2f145b6362b-d\nZ:Q1W2boipr+cBC25Wm2Zm2MHg7zLZo=\nR:8deebbeaa86fa20fd86ee7ebb36278b59a078675d558c5690d34312bf248740d-a\nZ:Q1dWTtelXTjGr7+uETqIeNRVyy18s=\nF:root/.cache/go-build/8e\nR:8e05587de41292aa5b18967eafaedb7379b0fb2158cc3f769e6b5e0ca06cf3ae-a\nZ:Q1AAdVNlVrOt0pyyim87kjnKXPe/E=\nR:8e116489ca81947a917ec392feee39837c9de685ca7d78da78a66d9a94ac67ea-a\nZ:Q1v//DeUV/UBwegTEmb5H2lmeYylo=\nR:8e12dcb289106808552a6fc109c83a4462d882d3afbce881caf939fb5157c451-d\nZ:Q1WnkUIntMz/wHXeLJF2Pnev2u0wE=\nR:8e35dde6042a5888c91ec65794ffd70e38c444fb6496e1359bca22f00352bc82-d\nZ:Q1UIVNwq4zLl92goSL5e63yI/D3+Q=\nR:8e3cc86ade1d05b829f993d92d439984368bd1d2f8ef79428a7a107c32d2ed80-d\nZ:Q16pQ4jz2+F+XRpaLGW7MWOVlNh4M=\nR:8e618cf69abd48e5f161bd0d3166a1be932e74db9067188198e1c60c5f50ecda-a\nZ:Q1OzRDK7asgoV4ErGFevkIsTmDB+4=\nR:8e65d2bcfb586593f4ef0e096f431e8d04011c2f9165b912af923c77ac3d1940-a\nZ:Q1FC78R/V7soLxCwg6ZZsw0qgfAgg=\nR:8ea915e92d1e754bd377fb9ac88e01828668e243b61b768a129eb167a7c9cd3b-d\nZ:Q1ENhQxmoBDgoAtI1h0otqF29grzk=\nR:8eab5998617c64319aee05212285b9481a73bfdc5f0f68721eafec8168b046a1-d\nZ:Q14G3YmmdR4NbLysDrPb/e2azrvPg=\nR:8eb35231df329363b77d8ae747d84cb5f732a792d172d43f96afc30dbbbaaf6c-d\nZ:Q1JkimHyg1XtOVEn1mWDcKHayW7uY=\nR:8ec49ffbd374aa87701a2c0e9c67d99dd84d20371c939dc21bfb0faef2ebaec9-a\nZ:Q1n6L9PLia4HDiJ1t+LU2BFTrD4OY=\nR:8ee58eeb69f9405a34cae8c361a7cb2d5854e6b84b84d348ff7eb481421bf134-a\nZ:Q1wa+BlawG61VdSdA1sPKZy2A+3ls=\nR:8eeb8783a86f29aaa9814d97919448f386d4f8c9e2ec7fa7348624941c043175-d\nZ:Q1hxz3KNLgoQrWmQbw2zCtplXpBXE=\nR:8eefc24eee010a4dcdf9a1f654e0f1da3c8dd09aea2177b0299ce3cb3ee0aff6-a\nZ:Q1kwrh8lMSSiZ530oLCKDw8vSSdvM=\nR:8ef19c0621e441bcb9144919fbba178a266cd342e3c44b598bc47b617ec2af99-a\nZ:Q1IHY0CAff6Da7vxerO3RY3qlBgFo=\nR:8ef4da25466c8a922bd1e66a0c0c399d2cf26ced01b6be7d78819b3d914ae246-d\nZ:Q1PHiB9E6Q/jU1GSqxNItQ/+ybzB4=\nR:8ef55c291b221010bf32d6ee4734ebe0ff3b03e0eddbdd976efed36a715332c2-d\nZ:Q1kVntW4U5+v8WGeqeT9ps1wrvf/c=\nR:8ef672711110a0be4ce91df3648751d1fdb57b61cb7996dbca9faa026a933696-a\nZ:Q1he2t/JuDr5QdmG85K4NolHGsnSQ=\nR:8efe9007031ce2b7f0cc49c88d0f451aaf3bafcdd9a295b1005a154ac6ac43b7-a\nZ:Q16MJpbndvz1m29Yc7igvVyTIhFLo=\nF:root/.cache/go-build/8f\nR:8f13f9a50a28f39327219ced21b53d5b4ee70ae732d366b2ddee3e32039980fd-a\nZ:Q1hO8Eboi8d2PnledKT+17z65qxLE=\nR:8f3e06c9c79e00e348dd3d9425c8667b07227cdf2608cebaa1ccded43252f305-d\nZ:Q1rVNdTr+0jH5DzArJpR2NsNYS/oU=\nR:8f45caa5af0013b2d4d71d2eec5244f2d333941cfb7b559f8db55797a375770a-a\nZ:Q1ka/VtpuM2E//gLMMbDoCL4e0L2Y=\nR:8f4f25f2b9ef0cf47ddd55173d1d902d88cdc7fdbe694b8723243751e86ce20d-a\nZ:Q17nUt8x0Kr2DIcShNvW+jOfBSF2U=\nR:8f6fc95353e517de02889a5a08216a1d8f55457e3358831f92d7578b96a3fd81-a\nZ:Q18ssVf9XTIJM0+kNS0+D4djptfAM=\nR:8fda997c212c765af3c183b29495556d0513ac1c622380e518ad5af8cc43e2c5-a\nZ:Q1MPQTmG7FBHfiX422PZF68J/wJeU=\nR:8ff8345e98a19105e86541aca782763e0477dd32feecdeacf445199ae3258025-a\nZ:Q1sskhleX4xl0IR5I2OmC71NmopYw=\nR:8fff6912085c53ab7a0361665065f243a46b57cafce49aa926e92edfd245cce4-d\nZ:Q1sl+EBT1OmrcbWVryg63g1mGR4yc=\nF:root/.cache/go-build/90\nR:901579ecab0e4659c08b0291699eb9711ba3829da7f37a7088c2bc31db197617-d\nZ:Q1vqf4cF6R0qHubuAXX07qoHFJePs=\nR:901a115bbb89bb5c3042c15bebc8ae38a3ab053486a8bface4a3aff532db432a-d\nZ:Q1psiVarWR+lrGejl0LpdK69BZg50=\nR:902dfdeb686cb97f373e9987687db08b5289ea6d3ca79ab0fd1c19675bdf32b6-d\nZ:Q1tqkYWnFZ79IdFURvBUDq3SqoNuM=\nR:90350a4439c94918be5b3107aaf071d74590f372dd8a43886179d0ddb81a5e1f-a\nZ:Q1gxZK8CIP5o6AVdH0JqedFLTyymc=\nR:90883b0be21f7f22f372fdd87dcd230cce3c10557f9207cd3a1ddfbdb715c429-a\nZ:Q1b7ol6Y7ZhtH8qWOXsc7IWXdYGoY=\nR:90a85196d8d60dffbcf5acd8b23b021b2dbdda1b7b73c433457a472aa941b49f-a\nZ:Q1lQjMTcNcpwW8JjDoVzV5bkidXYw=\nR:90acd3b185bdc9ab1d67f59dcc030a1e8a529e7c430b265d5197674ea6571354-d\nZ:Q166JNaBCCVBWzEr075PS0dJMqK8g=\nR:90b761b3203c35cf1a307b7c6b8cb27d1caa89b3882d2c82002e9fc63588bf78-a\nZ:Q1Oj7x8gatVj7rsaT82OBq+36bc0c=\nR:90d2ced8f57c0aa14b1a6040a053257f5bae3c57a980e25b2f4586e09f31b78f-a\nZ:Q1o9Hpq3qIb+KfA25Gl+dIr2KSd0M=\nR:90f106d701642dbcbf45f3a2f592128df0e3e0bc10557bf6b29072085584e588-a\nZ:Q14oHrl9ejesgIuxG6mWtI82RWTf8=\nF:root/.cache/go-build/91\nR:9119bcb5afb699bc64430915fa0eb55419ebd86d467e86a60ccf5e895b61d6ee-d\nZ:Q1YiKIDKe1PSTCUMaWk0Dccpt/wcE=\nR:911a50d76413dec82b0d6a5a8aa4db5ea86f41f2338586b0486fbc50b9e6b84d-a\nZ:Q1OX6PbwTybZq2uGi44aBywNZk6ow=\nR:913925b9335993287f722f72d8c3f90484703817c261e27a1ef96ef13086beb8-a\nZ:Q1VCtpFejv77umn+op7f/uKUAnFfg=\nR:91498f8f768acc65f16c34ae06dc44cf77adeaecd5856a49e996514396296d88-d\nZ:Q1FrhuUkF6dwaHyZly6qWHsGS7Frs=\nR:9154e65234ffaeb9046f8a4bf26c4ba1662851e51fc1074c22472f22d2069d1c-a\nZ:Q1dtpdcEA+79HjwRZwYESYhC7ed5U=\nR:917313132daffd2ca3c637044c4ef4df2225794268da3d9ba0ca0c1f873abe70-a\nZ:Q104hG3u6pQyY4797TCdYSAejLhAI=\nR:9179603e2aff8fe9b66765773fb6c8d4e9c229507d3c85c2d740a586a6248389-a\nZ:Q1Mq/iqqAeqxrWE6YuKLNfBjQ70Q4=\nR:918e0e36c00269bba6b3856f742193ef215eda3d7fad160523185a4466a4dc58-a\nZ:Q1TQfl3+YNdobJsuJJEP831aqQ0Ds=\nR:9199e7957fb3f3e11a59e2a6a47dc7595e151c6024fe01ba4296ff635db3ecb3-d\nZ:Q1eUtiyZktwKcp3ZIJWbBvUoZMVKY=\nR:91b6531e3b35cbcc783db711967e5b9da66fa5ca5023e0bb5fd03d7381887db5-d\nZ:Q1K5SgZQse3E/KF+7SL3nXXCH7gJs=\nR:91b8347674112bf7dfde04d8649a991a4b248356a1427fd7d6d5ae7c802e97fd-a\nZ:Q1naz1C0TL9BLyF4N6PJrIQzr4//U=\nR:91bc4f7c2ec985e9d0af44f29ccc42eb54683e782543876d612b0b7670857d43-a\nZ:Q1y0T3pgrsam8Ka1lx6aAEAgvlCmM=\nR:91c5661fb3fe0cceb3c05af2aa1069998994da34826fc8ea3f038ee999e45c5c-a\nZ:Q1rMYiiB1+FuoLKOyDb5xA/F0ay0U=\nR:91d334cb4a95df545da78dad905bc03c38241fc00353719e3b525b768626a728-d\nZ:Q1mEtMvCsMlubiMjJZ7gvqunZGwYA=\nF:root/.cache/go-build/92\nR:9200f3574e68ca183e277533e25534558609f88121d35bb7c071b19485e618ba-a\nZ:Q1mPoIhX3OsdCp637Ox/svlEMNfRw=\nR:9212bc5df78f370c3286556e34982cccacc5ed259eff9e8f946e23641986c0b2-a\nZ:Q1ro0Tk8kv583EM9JKX0Umg0hAYH8=\nR:92200004cb60e2654bb4a48921e869d118ffae703baa0a04f4d2e5820664989f-d\nZ:Q1WhIusWcMRRfEwosQZi1W2NRxYzo=\nR:92308939e558f08e3451a18a23df54660d9b660b3d76f607bba8cbbdff5bc2ac-d\nZ:Q1WO5G/W0r6v0RwthoyXDcDvBPx90=\nR:923d8ad9c6c6bfca27f00a671ee3bcdac259b992c027c4a7d1523ab77accc163-a\nZ:Q1rKCCZPCJsU6vEaCL00MyABs8AI0=\nR:925904c79f8330cbc5dc63c39fc6d79b88331f4c98fee061d8e8e100c40836ae-d\nZ:Q1CAhKNl0Q5G1f4MELg/GDUPVizos=\nR:92baee7cd7662262221142c733bbf1a5d556a0a40e668852ba22aca842a99d4e-d\nZ:Q1g7k96uww54yql1ROAk7Vh+YY3CI=\nR:92d2cc121803ef78f4ca765b4085144e5a09527daa655a280db0df507d18c846-d\nZ:Q1yyLfMN5CXARt79ipnk5tQeJakJ4=\nR:92db72f288224edd0f9d498d238240a84fd5a41d95918cdff233094c05bfd256-d\nZ:Q1gG2D2dCos91weHnzxnnEFd3LQyQ=\nR:92f03e84e2305fc4819cee318264a8419f9b986e8139ca9ffc69adbd51b7c54c-a\nZ:Q1P5VllBRoMYCdUrA+gVH9Cl+0REY=\nF:root/.cache/go-build/93\nR:932974da6d85a40993eb38ac4facc4b464ace7e01a918df4e4ab71cbfca89daf-a\nZ:Q19iKFjehaXH8h5JQzkfo/KhNI7MM=\nR:9331899b1a94229e2970508eee39cfccc64d6583db6da929f5220de685d3d1e0-d\nZ:Q1Ipn/j97+Ktoh1bMuEDrhhFaEJf0=\nR:93593e72187f187755b2ac0477d7be8cecf13e0644b698e21f036122ea1a4066-a\nZ:Q1wQnTNniWs1mV+aI6f5vEP6MKiKM=\nR:93622021baa33fb830311d983266dc18d805af3232eaf0e66d3992fb27649e9a-d\nZ:Q1RHLskhdyE3un96aMDUNACFwfYDI=\nR:9364398b1784dce9c896e49373185cf8833773534b1121f8b7b4bfeb86d889ec-a\nZ:Q1IlhKoVNPww+e8ky5QqkXWk/Ndjg=\nR:93661c682eace40d3c291f875fb595425b9ce14caab41a0e96a2b078fde92161-a\nZ:Q1UR88uXm58LTPTAnHMc/lsdXX83o=\nR:939005eed55047864d9aba1c327cddc32c59ecfd4f39ca4ee738f6bd1535cf11-d\nZ:Q1URe7V7pSZ9WKpdclaLT8tmYTuMo=\nR:93a210a4a1688f49eac54f63b711284ef02a81f1dd4d892df87bfe8e87cabca3-d\nZ:Q1l/X7kbIWOMfKGOdu7/bq89skWhE=\nR:93a4c657a59f832165fd5fbc44fb20a8939f09b3df11ed961073d831d383e23b-a\nZ:Q10Yy+wYQ55uVpHjPxdOdA2/gIB5c=\nR:93a66a421113e40af6c5ed168a89c386dfc84829d7529ab92fb437d75a169b6e-a\nZ:Q1uKP4uaDPLkDK+ubw7mZc8zstNTU=\nR:93b6598aa1fbd6cc3e566f91e1a70fdc35b5de3bfb4b026cb8d639a58ca32393-d\nZ:Q1BesIcwjVufgsnqwW/NyB8hZ91I0=\nR:93b6887d5afdec93f5651a3640156085dabfc1de8af37fa855274259681e8cd5-a\nZ:Q13RAuzVc7qbwy7rpAuisCwF5BNQQ=\nR:93bcb4d4a51f3d164f018b094fb735b96023728764a2c10c8951dc2c94f10dbd-a\nZ:Q1WslLfErajSsrstIhi8dyjPCcQ5A=\nR:93d42c80c273b5e38cf5db5bf0e0458f6206379465faedc4f29b39d2f7a8dd44-d\nZ:Q1UjF/torQmCXbt9LGe4Hy65Chc6k=\nR:93dfd33936d20fd8328c1405b09a92c98799f620be5a3d200d25d05ebcc0b849-a\nZ:Q17uxV4RPoSSkIKAc1pGUBghW0ipM=\nR:93e2435fcbb1f3daca775bbc0c774d3d35e2ca6bd06b387819c0881225f9ce14-a\nZ:Q18i35UkfAnN47s3ckBsJ/ETcpiCI=\nF:root/.cache/go-build/94\nR:941315c1fd3f0b5ff2db7f13db04e17efc50cc55df06bb745950ef2d4a0006a2-a\nZ:Q1MS3UEb+gUxcHUew/98tch25uaHQ=\nR:9413b7a4d5dcb508cc90f17cc7e1a79fb35b506f5231d0ea489cb201952be9f4-a\nZ:Q12qSeOF5Rc57zKAgtxqO6bvBppXI=\nR:941a16380720c53433ad3e3bc25034b1ec9ad0c0ef272641c86dc2978860f232-a\nZ:Q1XIkWPU+EDIlXE+44yI7bUD9G5dM=\nR:942d94ab69ce940d3149a828bc5694b9d5f530b702237b10250c14627ec5eb7e-a\nZ:Q1thVgRZviRq5EnK/Kx/THfcJo4Cs=\nR:9447e4a524368a46816d8ce2ed11822eddf0b0951932a8b8f4f84c104fc99207-a\nZ:Q1hXuMEBXW7J4j/y5JOg8QX5Lkblk=\nR:946c3fc076862afc9185caf996ee9847ebf679d435e38a29faf5dddd7f06479d-d\nZ:Q1wFd1caWdewiu3SNdbdaGdDsxH+8=\nR:9478d93a7a533b7f6b6f7c386e2b5dde0517010ed879f3ac68ee47d5cffa1e65-a\nZ:Q1QDjMilZsiJ3jIZ7CpxIEIhVYQzM=\nR:949389bbe168a7ccd05b7f23e183bae5b66ba67ea1584ca3d636e4e51988f065-d\nZ:Q1K/SqL43wVO3c9os5JzXlbWzpuNk=\nR:94a2360523a0396697019ee092019644ba2f7272d806631189c5989e2dd35023-a\nZ:Q1T+lWP0q7A67BwqP5sST/ALUtu+E=\nR:94a3630d143d3d2615728504e46542aa7c914fc8f0998952760a67ccd4639dc3-a\nZ:Q1Bw68UcsbZTakATyqyntb/+/Y0Ak=\nR:94c3c533a6a0d2ad79b00051ee24eceb35fc29e8229848ed0046e1d7b2449373-a\nZ:Q1wvko/zMmPirIYQC2ri2pGq2fQ0A=\nR:94cb57c7890fd996ffdc8ba893ef7410250d1ad8fbc9aa8b816839f09ae029dc-a\nZ:Q1MruNlFJq+dc3dU+/9FN8Xel3MTk=\nR:94db78858df64ff65d709e8b45eff7a51c6c72ad4c05c351e3d92e5084ee3902-d\nZ:Q11twH2YbHxiK/T7ybRpnHGgktk4c=\nR:94dbfb440820c95901a71d3c6419650819f946e687a950cb2894700fca539d43-a\nZ:Q1k6skmIR7OmDMaU6GmBLnf7Mr09A=\nR:94dd93efc0500a34d1b04315adb7276cc9d703d9f19a2a4e63615a042b34563a-a\nZ:Q1PAj0ypI5Q3k093Pvjl4JMGUKMnQ=\nR:94ef01c2276d6b92121449520d1bcb6de28a68759a3bfa64ee4c106c96be06c5-a\nZ:Q1mllpVwTUIHc4hqlM1YsGrGeb62M=\nF:root/.cache/go-build/95\nR:9504483a356988f1a1155422cc2d38b005585ac842f8bc06fe4322eb9e63a184-a\nZ:Q16nzindx9yL1vOoZv+kJQFSge/XI=\nR:9506072a03f2ec1d871580c7fa18853e9c70983fbc2dc5d3df148fe789a2b21e-a\nZ:Q1VS7yvqmJOQ2qeBoi6XvCDCngXoA=\nR:950ee624fe3a010a729c1df474128809ae9534c4565b5df4cb5914ec09c76aa8-a\nZ:Q1bG6q7Fn3pSrchbyhzrGI7QTooYg=\nR:95189e4eb7daf69519a9492d28b1f5ed6889062b9032d34882c70301ae30fc6b-d\nZ:Q1AaC7y4EQYLa0UuBosUtuduky8K8=\nR:9529619e17ac360a791b6c434e4f452e0cdb4397c2763f12232338cadbe03a14-d\nZ:Q1oGNoVTi1T+Nu8klasdZMVEpKUb4=\nR:9562b82d1d33154a74e9a504eaebcb5fc85e4dd5dd110b18a22d3037e7b7cd89-d\nZ:Q14iKOBpHF29QDsoXuqaRhXneclWc=\nR:956a216c8738f5c60a636e81a559e92473bd16c2d413122fe5685477d5b34a96-a\nZ:Q1IlxbmFSs0A4l1H+Ylf8xi6TKStk=\nR:9571097cc444e109023b2cc9f2ff2bc88f8b2211b5c5c520f1085160acabbafd-a\nZ:Q1UDhER2Ac8l+++yN2i0z+Nmp/z30=\nR:95773686050210b57456a97890143c958ac186e614f5bcbdd9554b046298350f-d\nZ:Q10BfmLVZoOlRhWSuLR5HYNnKxfYM=\nR:958ce79f0eafc363c9c07c41f78e6ff220c279630f75661e96f7d061bba982bc-a\nZ:Q1989f8hAPcMsZQobJ+VLCC7bN0/s=\nR:9596e982b1148c769f1493c643275682c9f9da7788bfeee2ad8b481ba6849d62-a\nZ:Q1NoNDaJrDHCaTvtJROUH1trWCJVY=\nR:95a264c1983dbffb0719d3ecd2552ce5b61cf80b202ce82541e247f5b085fb0a-a\nZ:Q1Q1DRd/5+A+1zkWU/j3D+Fbx0yWs=\nR:95b57488071197608ee89f34d8987efa752482c2a0c8ec13f258ef3b7299802c-d\nZ:Q1NTJew7PtRteJPzQOOK6u2pnLCmY=\nR:95c6bd30cf6355b34d5c365251689a044d0611d458f1d6616eb234b67c56d4f5-a\nZ:Q14WJlOhhf+VkGqtY11Bk5uFD66c8=\nR:95d49a012efaaddda40a5a003dd7691941aba50033bf7d6c5ff6a3315b890308-d\nZ:Q1GcNqYID8RFIm8cBKFcNIhDCbo6s=\nR:95e54dc0c64150c9fd79b18a001880b1debab5dbc980d68ed0e9dcf3207d6ddf-a\nZ:Q1w9JpJlwikJowbjqQ+HKoAEXqRvM=\nR:95f4d180201242a2502e0d8b15c1155960c594969f9abb208ca1bd11a8ee90d9-a\nZ:Q1TAFO4JuLbEqG6+IqdrSjiH/2Mvc=\nF:root/.cache/go-build/96\nR:96057229f72fbf53a21ab08bc87e86e8ed33108c49f68f337f0d9fe1a0fe443b-a\nZ:Q15vj65CxSg7UC2N670d0at5LTMyE=\nR:9622b2ca2dceb20af8485d8bef394aa82bf6d6f14cf4132fc7bbfae57ed5dc67-a\nZ:Q1XQB8DQUnV+MhkFVN3NJ/1Uq5N5Q=\nR:962689c89d0b3f19ab76495d8e606e60a4b7f4cc6246a078f8f0230fb2622e8f-a\nZ:Q1Wu+sg+Ii77ZJgUlneO9FuZRsY3I=\nR:962f0311cf61569ea86150dbf9cde384c3c1469e34b303a52824abbe80e62532-a\nZ:Q1HjzuHfsJ0NUjOxzbJGnn4+tlspo=\nR:9631772fb03cf9c1beb70b7520a74440a4b6cae16bdee04c67c9e0df805f525b-d\nZ:Q1p07GuF3PwDy6N1rh96t5YVlavBw=\nR:96612eea427437e387d391d2ad139d86b31610ba6f094050b60bafab91727509-a\nZ:Q1s30xniTtmgJfb8Qu1+Q72iByxZE=\nR:9669bc3739cfe3f4f5b75ba2443f00c6b0293fc60bcbe6285e0fb15716e0266f-d\nZ:Q1mxJlqn8+O93CajMTxfnaR3Yvz8g=\nR:966a9684b16480c12f37a289f4ad767e25b916bd4c343db7c94278683f9db91e-a\nZ:Q19Me+z10VXqOO7hM5HwiVH2ABfU4=\nR:966af1b783244120dcabdc29926987d6a2d92b9f75da534ee3810e5ac7849fa7-d\nZ:Q11GHih78CQc7yPG/QR7bASE7TfL4=\nR:96c0d7678088e4f84000b4ef3c0b8d861dd5019118d0d8f4796f2c9a0643cbae-a\nZ:Q1u+A09EWjvdIe9yXVEnzXe1kUyGY=\nR:96cbee386ac6f9de91ca978b98c2f7f9fb98cb99a45073862687d3c88612b47b-d\nZ:Q16Lhh6rFdFBi4KjicHC/hgoKZ1fQ=\nR:96cfa7a1bdb15f87e2761fdc979a82343eeb767411c518152b13c2c89149b74d-d\nZ:Q1HeuruOJWmgH2+aTUcJRfm2SpARc=\nR:96d57e9b54989548f9d0068c804bbfedd8ddff8f8b31964d9e83dc61d41762cc-d\nZ:Q10EnP97M4p1oXzqoCi6DaHCBS7z0=\nF:root/.cache/go-build/97\nR:970262da0bb8298444a17bd311ef36c6e857d02ccb557130667e0208b7585526-a\nZ:Q1+G8MZSaPzn4WjTluiCSqQIWvjqc=\nR:9706f1b90c30e8bf299dffccee3b3f5bdb80036b642a813a01a01eb398d5c8a9-a\nZ:Q1LtGJ9DLvyR64iBCbZfy8WvqHsdY=\nR:970ef2b87b63645e018037a6c4ca2989e21e7d41d58a1c320f81a4a8ea643bd2-a\nZ:Q1muSV+1wDeYNi+aC0tYpPFet9hl0=\nR:97327d745a23a1028b2a1bd03c1989d55264cb71c6a28a45185a0a1fe12d3a63-d\nZ:Q1a3zwwOV+5qOW9vbZZf3QcORje+c=\nR:973ddce92473066f9f13f2b7d3197181efe34fdc68143e9a6c881f755a0d2c41-a\nZ:Q19qBPUhAlhw/FcnLeWQrW9AxgoPE=\nR:9754c6835292b2fd6874e56d4cba73027848f03954eeb4b44469757ab028cb90-a\nZ:Q1XxxLow6LXP0UEEfkecj0/IrjuaY=\nR:9771221a81819556d12ef4ea68ef8f6ba30b7ed42646ef29816880e46bfaa0d8-d\nZ:Q1GSB9KCI0OtQCqj104779cNcic3c=\nR:978c1d1a2753efdab596ec5d946f47e07dc81e9c1be4a82edcb949f46eb4dcab-a\nZ:Q1Gc1T33Va71/TNOBulSTFq0pZs6k=\nR:9794bcbac041643060ed2c46b116e7e7c78432aebd83be4d84e71c4a5e40ee4b-a\nZ:Q1rX4BF/jqSV0tQOZ8unxmWxaB9G4=\nR:97a2cb5e8a836f4925c217d1df63ead983d59cd125c1be736900fa06a335c00f-a\nZ:Q1F/xB+5iDIikB8XJMBef6n1Dh4pA=\nR:97a446d274074df9c86d6eb8bcbf9822e22c9072aff28692497832fc2768c321-a\nZ:Q12S0PN/QeQFTex0U5/W2xu7JcM7I=\nR:97a5165db99e84ab8cf4ffc8323f6ee33c3e400cd0b40a2b7cbb6b2f0807116f-d\nZ:Q1XpqXCS/pEkUWQI1FKB0a+3m4cOA=\nR:97bdb3cac0f7682b92f5e19d4e6c4bd2cae983b2eb9d34609508438ca0a4b99d-d\nZ:Q17zku3LGC2yeYw+cgmu6izM9OG2Q=\nR:97cadc7ce049529c173b20f78bbcb1d9af1395f0ffd437eeec0116d9d8baaf24-d\nZ:Q1Mc4xteT70NGpkPqONgY84UQqRUs=\nR:97df1a8e5418a6b2c908cbf6e318ce49e55cd6a03561f6d0efdd57a6fdcecbd4-d\nZ:Q1WBxG1bFQJ50P/8PL+we2PqoQoR4=\nR:97e4dc2cdf206b57e705367fa53798bc0fd6c18cb638e28b7cd5c4a69ab4d9b0-a\nZ:Q1Cl2PDMPaMMBXtGjgXJoaD+PwydM=\nR:97f6b7ab2c0f3f8a1572fad344b5b3f82f273aed97c5fd690e5b3bb0cb1f0766-d\nZ:Q1vJPiIp2+edvGBMwwrPDsC1Vn/8w=\nR:97f915b0222b4eceb748f169c7ce832581ab8201e10c7557046dd936e729620b-a\nZ:Q1JuA/Eg9iRQm1zs1zY2iCMr7QN9Q=\nF:root/.cache/go-build/98\nR:981aa5a3ce683fa34a40545ee8a93d759ea38eee25cdb17150e81ae87cad0610-d\nZ:Q1kYuGEG67orKAoU4RQyxU9CvMbX4=\nR:982080e76fff906627562b27a29371f108d02d9b4403b5b6ae02fcd0ec410dd9-d\nZ:Q1zyERGOgDLnVKNBEQl4Idp9uyxAg=\nR:982d29d201dca0dd8222836fd67ebc04ebabdea608d36693a6a47412faff58c3-d\nZ:Q1+5s+cbYJgvaUfxTaL0YE3UqtXUY=\nR:988c6a6ada53899f25b4257c3e07c14c0f7bc323f29ea1809dece3c861078f68-a\nZ:Q1ImZNaOHfnAPhKqREtWfrUYs1ur4=\nR:9897ee0f1b741bb34f56810b213472159862414d2fe12183a4a49481396fa46d-a\nZ:Q1j+7tAqBMh0JESZydCv1nu9nQfyI=\nR:989b685a05e0cf764ef87da439b87a22e9eb765e83073aadb9f1e5735bdd0dba-a\nZ:Q1psnXhyx9cMyLdO+nTAjMGO2xwKs=\nR:989c44b2b8dd4802dda69482c81186e540af4f41d21c88e4212dbfc16f171047-a\nZ:Q1cNbvcJ2uwLjTVQZ+70ghr1gjQHY=\nR:98bcf59a5d4a3f2bcce2f1457e10f19c3470b3a43bb34f57a5a8cd663ea61494-a\nZ:Q1/b2UHwFD0k3gpljOMLaHwV/ul0Y=\nR:98dadb359234147fd1c6c9dc94b17b442df8b190025afbee9c5d47fa12b6fc0b-d\nZ:Q1nnkx/CvEACyDfZ2o6meMwfFzfO4=\nR:98fc8a29eccb3feeaae7433c9dd5e39b3bc5d9007b6447205e48ad83b0c209a5-a\nZ:Q1KPhxg1qBsaAikbhACcPWMW2qAd0=\nR:98fe3768b79d4f6b058d32451fd18a4ceb05c40d546a4d6e6a47dabe2b45e9bd-a\nZ:Q19mEaR3lnIB9TL9nGAHoVnClsE7s=\nF:root/.cache/go-build/99\nR:99027cbc5714cd1eef3d9ef61508cea8ecaffb441d47f4e7298c3004a05bdb55-a\nZ:Q10apaqGLwe+f5Bue2I2yXVdvZ2ZI=\nR:9903ec1d621cbef6168a4ecde9ea6c7e6c33dfe3a3dbc0a0c73ed2e09747b42d-a\nZ:Q1JF84nghz3OPIW9lGNEDjqg0nM88=\nR:99075b3d3f975bc07ae02dac4e4603089af6f347d67b4194f15ae45785700cff-d\nZ:Q1RnDbsuSJR/QXdrY8tz1a5phyN3U=\nR:990ae9d402633cc6b7f64f0cdade6e2eeb3815e78312b83f08bb54f7681afb31-a\nZ:Q1PFuzlgjqYAy0w3Qn09pBX9+sYxc=\nR:990b1b1c3e7445876bea69f866f018a851a6c94f5c87392d13109d3cfc2e304b-a\nZ:Q1yCKY4KwS/4OQNxuz5q9cFLaRyHU=\nR:992113bf38f2e3d7a397c39d9c5e8af9a4772ce1da9f482f71d98155a5f96e12-d\nZ:Q1ekNE6XNvoz6WGptjfswjQHh10AM=\nR:994c77630291dd95415166cd6309f1b1fb148939c958c20ea9973edb4853b12a-d\nZ:Q10BWk2Jnn7mMDI+Efgk7vQsSep9g=\nR:997f26c7bee4f2c497d41e8013f04d1dc31eee7cc446a239b6f15c9db13f4f8e-d\nZ:Q1ZEaK0tsTpQBLh7ITwwvk+saZXJQ=\nR:998e87ce1e2ff179858a6567f4c52e6091649a8d5c79fc90c81785ed677f8d8c-a\nZ:Q1OISuB1M+5GfYdBXZ02hELn1EWNQ=\nR:99a55a2fd6ae75ffd5a7da4ccb2ffb7d9db9c840570ce932ece9b0544319ac47-a\nZ:Q1eo3GpScwxP0jvw7HSVsMdKSBE60=\nR:99edcb2c4e59ad7c5b4f15344886ae31a55fff23097a7659ff8ae3222f75497d-a\nZ:Q1mb3cIvGYZFgZ+TA7KUS6GDzGFL8=\nR:99ee781946480e05cedaf9d0417032fef5a15a2419caca5b9b50b2a3c12353c6-a\nZ:Q1EGuoWMDS0fTc3tgeEwn21M0OX4s=\nR:99f8c9707c86ef191f138fe74b3d10b4e7f85de42fef23c86b5a5b39255f551c-a\nZ:Q1qebEACVjsycvJ3TUt61aKqdXsys=\nF:root/.cache/go-build/9a\nR:9a06e0bfbcd20e17c36e5a84dff14f9dcfce2c1edbfe1d640840b6b3e4bdefc5-a\nZ:Q1POTBvwHA+zHR8ZqFsNo0s0v0Jdw=\nR:9a0af3265b3cff6810ceafe962488fe8818e2bf2e87fc6d34bcb4ac824b0b68c-a\nZ:Q1ZJpJApwm27kq0Aw0iwGWiFYP71I=\nR:9a6ecb8aac038785563e0afa6c95b1e359cfd49c6f712ed9b41e2fd6e983e58e-d\nZ:Q1AQlKyNfAe0uJXCcdxf6TEXwvMJc=\nR:9a7c66e308293d123226cb9c98e0f52c8988cb2e5c16aa00709e5808cd65277f-a\nZ:Q1peOR+V8+zqle3RUYuzA8t2F0OqY=\nR:9ab75c92d3e063cfdd27956f4ab19d43fa2f8ff183a8e81bbb0b5ff42adb06a6-d\nZ:Q1mKEWfH4V04txdKSbhdMNVcLDItk=\nR:9accf4815c64fb69ef78a969f12119b8559a231f29d7a2065006a00f1796f039-a\nZ:Q13v/6n9fr5+eoHDd4l9ij/1powAc=\nR:9ad9433043cd3c4d91d83adf2c32951dc119bf8d15314685e2776dbe63fccc5f-a\nZ:Q1p62t5fM/34kNc75ijOj7GHR7KgM=\nR:9ae1cbd6f216b8dd06c744eba39048d2b79a20a29368cebec4e54b31bd9c2f9d-a\nZ:Q1UPF6bhlrirOqpghIdW7hF5LrLoM=\nR:9ae673e7390d27dc9b16e2244aa1d64bbfb2ac13380e339af46a340d9d755985-a\nZ:Q1NuNceYi/by9ywf6DK56l34h+q/M=\nR:9aecbb8536a6624cdff7e637f004ded930979d36d2f518a6e545ccf4873b7f8d-a\nZ:Q1VjLPfG4PmwyLOFdajiod8awl2cw=\nR:9af2624a66d4a731d07f8c006a7ae66f68462ac4cd2decb2be88d658db52020a-d\nZ:Q1qdxv9b3KCv4qYpKefhtl+23VFmk=\nR:9af5604d3cb21f8122607255de1429a941cd296f24c05ab857e47b5a5dc9ea60-d\nZ:Q1thacohwGtfMS2+WWnWsIMbm6GB4=\nR:9afa93e2920ab5f8994693c88df4d6ab37ebc33ee4a7f749b30ffd21eaabd984-a\nZ:Q1Ut6z0bqaDuJXPBTl7Jh4FvcIVa0=\nF:root/.cache/go-build/9b\nR:9b0acc692c71bbf629d3825d99ba3f252d3077543a31010f5e09c8ede533e289-a\nZ:Q1E0J/ps3clG/RrwHagnHu+zxLiqI=\nR:9b0bf8ec8b19768d332d4557cf4e49ad18727705aa032290f82cf456b5e309de-a\nZ:Q1UdgYnqMlwU0PgFLD9VMCifkm+Pg=\nR:9b16a314da0471693b4c313626cbc0b710bc0b6980b34309fecd6284e0f6360a-d\nZ:Q1XWQZqPnoK2MOwIOOc+jZAqUiy+0=\nR:9b16e66e09d847d53cd70ff7738618b7bac6df7875b86f5408895e246154d6be-a\nZ:Q1Y+ys1uXHb7AF51qUgnmdrDU7d90=\nR:9b1e7ce53e21525e0d687879be07ada35c76a46534f9bca44c917fd72ce6a8ad-a\nZ:Q1gPycCiyHeP/DBs5YykIU8xTGgxg=\nR:9b2bdcad0198ce27eab85a428a609684e8723a0222b97f03befbbfdc8068cf62-a\nZ:Q1Oze5AKQGIx2SUwlqLBJ4asuK918=\nR:9b3336ead4ac70929ae7794968496cfe7b0ab2f3e9825552900b98a9b92cccaf-a\nZ:Q1W6CULJItI3qr5/XR0wy/iwj5dTE=\nR:9b33c163215e2006226fded83c4246afa2d4cd104ae34cbba4d6a28a57949bf7-a\nZ:Q1etJhCiZxI0UIoYU5FhUCWNbL3A0=\nR:9b3f2bb54fbf0a1242b4aa048917c72b7eeb8f97bfb3f038b30ecc0e3a438c92-a\nZ:Q1nINb3C1Hdtex7h48hE8npWuv1Ns=\nR:9b54345515e28e51d049ce292f878c2d0969c1d4af1352b83b3d8f9337240fc8-a\nZ:Q1HcG6KlcML/KFEO9puJa28aFUItg=\nR:9b659a53bc2c8d390ea8b678a6119da2fdc7da2cd6eafb9852a97505b70497c2-d\nZ:Q1u7Z41WyMxLXjw/3P0QX4CGrmqhA=\nR:9b7c3a211f04c4ad21c9e4353e6303c23a131473881e5f651630353ee33ea02d-a\nZ:Q186MqGi2eVvGXmqLyawo8fz8rjGE=\nR:9b8460a23de4ec4af2000d9e1f78af85e630a1e3c24dd270cbcf4f2a20d86117-d\nZ:Q1YmQYzdaZLb0TOYWr2g7oFbxCCTw=\nR:9b8f6f85d1098e2bf519c458499266bfe15c45ede89f732ed1a368ae7e0f01e5-a\nZ:Q1OJOXJSfPUzWvA/Ng8mC0BYZ9qmE=\nR:9b9b69ca0537ba1889185a6e2dc1c8cfdd716022fe19398ab3399e3006947efd-d\nZ:Q1ncC4XPB1l1D8tdMY8tDidzIbGbA=\nR:9ba2f1087f5ed31a8b9238cc46a49cd3169f4910bb493521b54860e43140dc46-a\nZ:Q1oIl0qB6VsYZ085E1CXreJRfJGq4=\nR:9bb66289e6902c4562b0a34ed2d17403c381f6a6ebb32874421281dfe03fa48d-d\nZ:Q1UfsvwqY20ioBAE4SKYh6kamneVM=\nR:9bcbef2e2f417215a6aba2fc4aeb31e50ceacbb4099fd0c019659cdc0092e3fb-a\nZ:Q1MjBRQUAOWD+LHcQao39NCLhnil4=\nR:9bf5f50ddddd6fbb74d946b87de4e261800bdaab402fdbbf80655ae929a93763-a\nZ:Q1rRTL55VleVyCyYf1TL+nfq8VHPU=\nF:root/.cache/go-build/9c\nR:9c04f93a740a0a9d3e25b8db86609b3e1e3a85d01f2bbd0987208df325c66383-a\nZ:Q1G4h8Q9hfWFUtdx/R4RqkEcNmUws=\nR:9c0e0ea839a619f14d79897e124a37ce4ed3774be7c3b638cb180ba75117c18c-d\nZ:Q1Sxy0gtIUBxJDnyqYqb0mAF/qqHA=\nR:9c1a48083b805161858187d22f946bfb0d4d4abe6f34f229f3e3192dc34be1fa-d\nZ:Q125ElS7/oPwOxv7pX2vplHvTYkJI=\nR:9c1d6a14e15f1bee44116be54bb74ff8eaae9e9154fe8f113471c385b18760a2-a\nZ:Q151Yx1DfjQnqhoOKXm/tXQDzxZNg=\nR:9c1e1a8f1f9fe97da2e3974f69c0eb9412d65dc3d14b273a54312a9b94a22307-a\nZ:Q1BdHhFUzLSBF+NKtdJEfpNgS39B0=\nR:9c20147bd1a0f36d4ada28a10b041dfa21660176148fa49c8c8e17e7b2cb8d83-a\nZ:Q163prxZRp5tTEiKya8088w/DLi0w=\nR:9c49e15c5d3bdded8b8023e72878f4d2b114383404f7e6f6e5ea506e8d115151-d\nZ:Q1buQgETLwsyc593TGphF0CEGMR3c=\nR:9c4e4d0c190b84cad58838815d67ddf63e0107ee36b286f0c449218c8ef70b99-d\nZ:Q1YKvduqFk5BOza+hyGvu0L1k3ErM=\nR:9c53f43f997da1f6540fb4893418131cfcc6b17adcb7edf177fd17437798cfd4-a\nZ:Q1H3YzqqUaH0DwmiDWLTcjnL2wx5U=\nR:9c7dec46449f45c4dbe7a9a31502a4ad3a920b81dc50e24340fc40ae06d8863f-d\nZ:Q1urRHzBGbTNvqqbk9N6Muu8VchXU=\nR:9c8f00d7af55e9e49207989972909b1aa37e44ecec1415dbc511c27f24526587-a\nZ:Q18naziCvx4Yvl9iyvjbd289PRBYo=\nR:9c906edeece38b8680787e64dafd21d75e0d406dc1e1add0d841797ea6d83d61-a\nZ:Q1TtuUwoz/yZf6gCdQ0/nEHRChL2w=\nR:9c9e3f62e3a7102f9d8530fc5c155dc44f5fb89e356b04a2e9e109304993dfd7-d\nZ:Q153UehQbbFLJEQLj+xSCfhgP/xgE=\nR:9ca28097878d776f396621370a5342f075bd9963b4f6bb0b3dba541620001651-a\nZ:Q1+4/NLXrH4NysXta2hUEEpM0aIKw=\nR:9ca9f3d1ed726d97a496312865e89815edcacca895d032ec7ae245ed461de2e6-a\nZ:Q1QpzO9OoscFMMot4Io01SsrLwo9M=\nR:9cbbcff04c3ef89fa88aa9fe77724cf1f0381da207afc99f7f13469a6fd9727c-d\nZ:Q1+gk8+pv+T2bZ+P79jBCPlebM0Nk=\nR:9cbf1914a5a93974206ae085984bdde33eb06a46554e84519a0db4df84809452-d\nZ:Q1kRwW4PpT+XFZByNNhhcZCOWNlPo=\nR:9cc4183c530bd4b90c23902150ee4487f85bd4fcd820b7c680c96686f24a913a-a\nZ:Q1dFSfnJxxpvbi7ypSPfjCANn3JXg=\nR:9cd01285bc96a4e1bfae487bd9b10770619c2c3574d9f4c099abfcb0d2f3dcb4-d\nZ:Q1AcSF5pVunPcUhQSfgfw/6nZXIi0=\nR:9cdc0d008bd715290f8bf63e2c20f00d857325f36b57949340d0ffbd6c8d50db-a\nZ:Q1d5k0fN78h69yHUlpQzRwonbZLbk=\nR:9ce706d584d6d3fedb38ca975ae7cd7b2fd7d85f815fd27cc6acee87471fe0ab-d\nZ:Q1fQGOTBT1Bk7KZY+yQw4XW95v9n8=\nF:root/.cache/go-build/9d\nR:9d0a109a36fde3fda5a6930a6dbac6fa9edb9f5fe650e61218a19f166d768561-d\nZ:Q1wd1PuCPdHC1APrQtXsRyEknObQU=\nR:9d2cf5759c6410d06ca8d969f89cbc012e94cf0a4bc991f7e553a8d045ae4279-a\nZ:Q1cLp35Pncmm0zaEImAogXRmtnOlM=\nR:9d50560c796af6adab764c87a6c0109bab3661f85b2f4485feb6d78b4a54d039-a\nZ:Q1RxEWdToOXDt0Vbla+1z496amr7Y=\nR:9d5fc5b42159b90d719ed3b7c0a478643dd1e66d9c68c051f53278e22bc084b0-a\nZ:Q1jwrZb0wrlmgGOXRBPP4Rv+fFAH0=\nR:9d6504372a285549fba095c225038b4dd0518324d7eac37cfa5c2987c79ffea7-d\nZ:Q1AxfjI1/PJNmXf62im/v15/tDb54=\nR:9d6e27b35d5802babc2f6743244e2b1bdb97f376689bdb5683bd415692b03711-d\nZ:Q1wPQNlj6FDQaTvCnT4cvRRIYshoo=\nR:9d84347e66a6dd922499642930dab9488e46cbc5a90a913e32d646f82fcae939-a\nZ:Q1NyG+vbI5YtiOaYuXsBVgk+/FvyM=\nR:9d93cabb83c291a4c951d0d3674593e2d7fa16723d3378559089663a48f17602-a\nZ:Q1agt1gFVxmThmQFybWPSixitySUg=\nR:9d9daa97c02a286bcb8e1a8a6f82504d54abb6ea163df92c7bb2fe2bd10e5a9f-a\nZ:Q1e0swna67/+RIOI/scODrnkkFkNA=\nR:9da76c9a6b6cfa6200a9f94fd15470ac48d1ed3c946ffed58700d9a8ed59833e-a\nZ:Q1UgAuymsF/DCKCCKAT070Fa1vZYQ=\nR:9dbe13b66ef6d7e46e8f42b8b47618353335977f17d40ee915932341521ee958-a\nZ:Q1CWTjIvNC8TZUWc2jch7NPpEe3DE=\nR:9dcab200a578b52173eda5294f6c1410d7da74446efbee69f74dfd49dafe20a5-a\nZ:Q1htyV01SgROmgbHhzlplFJYphdo4=\nR:9dd730abb30257df664277da59a0699cea2392db2c03c845c3ddd66ee0e7e6f1-d\nZ:Q15+/UE+E7qyZjG421DrJnhbkurGw=\nR:9de7ad555e107ea8f1e8e5abc6fa9b8716d91e7fa954e0eba26f6956755e3a71-d\nZ:Q1EjWTVqdkHTK/+viSMXp5ZknNts0=\nR:9def32674c7a0c1846b500d87048178110f5fadffad7239f0db00193d831e3c7-a\nZ:Q1LR/a9UIpKM0Tnr4OIBxK7n8hAk8=\nR:9df85f8733aac70c095752583ea0f95e724936450c2f0f54413f627b3a9c7df8-a\nZ:Q1m3qKG7PUeV3XJKXLttMxQ++BIq8=\nR:9df9940b20fe51d0c1f0d62a79d0ceef596ac11a73b31727ef5b907bbe3a6046-a\nZ:Q1wHQEJatNbpWxmKXtvczUhKlVlJs=\nF:root/.cache/go-build/9e\nR:9e047bade3ffe630a76d344164b8996deecf20c384446fd44baf4d1afdac9939-a\nZ:Q1FUAFwba52QyvXByvqDDcdJWrTW0=\nR:9e14399bf06da03dba976621f2a5d6331d13903b0c1564a8c69f04a33feb59f5-d\nZ:Q1Int3eMrot4SPibjE3s/w3z40LO4=\nR:9e1e0f6aceada31455f61b71841d0605b445885ce2455aeeaf19ae8d60ad3549-a\nZ:Q1w8an+w7byuuftrZRRnaZhBP2stU=\nR:9e2ad2f4a754d87b6abef24c7c6756396f9ea3e215306c41071b97faa6386947-a\nZ:Q13ZrCAFaDqV8PUiBST4Yq+4mlg7I=\nR:9e2ecde125197ca846b2f5e9f57bb9f0d7bdf8092cc8b55ff3f946fe972acd7d-d\nZ:Q1yNvVnYr5anH8jQnqKYX/u0TEFMs=\nR:9e2fe82ebc8edc6702b53145f174980af4fc0ce9886d87eb4d4d909d9098d429-a\nZ:Q14B0Bg8DcV9f5ryhDkfJR1Qyvwt4=\nR:9e3d5fc73a2f94761bd804a85996601d4dfe98d04f0964cd98c798aea8c64902-a\nZ:Q12G2he1N1GPsx9Hun4eCqC+79Kq8=\nR:9e53768eba9571b576a27c691b8d727d4b340c5af404ec5e412d0b6672c165e2-a\nZ:Q1pxlGMOu9W/SC95N4PrZ0ZhwA6VE=\nR:9e59162717f7f335e8c2409ef4de3903c0c0a6c895b6e719e9265f0e3949832b-a\nZ:Q1vN739Y/gGEA8CKHrLcmUaX6rHx0=\nR:9e77cc6675ce9bdca61eea2a14c7dfac4265b53dcfce50f69c6d7991d01b527a-a\nZ:Q1UqFqN50WlJnS4x7v225+Y4og7Eo=\nR:9e8a39ab156bc48f46395357f371017b83c774bb876b761d1eba0b3b2af00b97-a\nZ:Q12XWFA+UphHIATZP55ul7133Qb8w=\nR:9e8ecd2eacac80e01458d81fc76bcb82501f1cb9610399f1b7d07113d881b0ab-a\nZ:Q1E3NdqWNe5Kh1wr9z8zvqJTkGwLA=\nR:9e8fd202792565dea0475a161993bd408e5c3379fe8f871adbce4ae8c440a901-a\nZ:Q1MNYBg2JL9pIHeXiYbwnmQbWWkdM=\nR:9ea483b3a6989fc054daa1efa7fc374836d43396b714224897e7fb233cd381b9-a\nZ:Q1tpviPR0CBzaOxybMYHjBT+nYpjM=\nR:9ebd8a824076ae6ab418db307a3f3809e4012b1f854d6d9ed0ae03b5d97e650a-d\nZ:Q1y/m1O9pI2C1BCmKy/q+1nf4otvM=\nR:9ec76841ca4bcc7a3b431ccba1f6cb4bf8c197891d01b238ee7857799703128d-d\nZ:Q1Qbbp7iqX+QTqrzNUMLB/ogl6WGc=\nR:9ed018693e1a850c55002d70a94332f017a76deb171325cfdf2a4c1beb23de3f-a\nZ:Q1l+xWbIkBy7rHh8I8EZjA95oDDZ4=\nR:9ed4028abbbe4872ff76c360c64886be3eb488a1e90c88d36e0010eedc795402-a\nZ:Q1vDjKrUjrDj5w2fRsGCQa4T2JdFg=\nR:9ede28788e814bf46d9d9f5bce7c826476f362cb3aaba02a12c61cbb496f51c3-a\nZ:Q1HZjm0hckdDtJHOMt2uewdhXDwas=\nR:9efb62d83476b22cb02074565b26f8ab43b6af9ec0922b61dba52f934644ee95-d\nZ:Q1s8DXsGQLdvWSX31oq6mn6cm5qTk=\nF:root/.cache/go-build/9f\nR:9f0553387e354038cea2c1256215e0be042f1f832766ed509276aa92369831be-a\nZ:Q1Zm4F8ZRyPbxqpxhAVl3xzbZGPh4=\nR:9f08eb1e87a15542863748c45605c87361c7294d4194a1c03e6a0f229da5dcc6-d\nZ:Q1tpncA+RpJFasOSm9TUYWrzQOTh0=\nR:9f259de495282aae5d1d0c7e78702757dce1cc2fc6c50ebb3fa549bf301ee1ab-d\nZ:Q1K2ej+h93bGaMnRM7C7Mg1FQ58qo=\nR:9f25d842b09f72bb88699174cbe59b23879652a03ee4fc5d232e66cccb0c3772-d\nZ:Q1pSQqKBniBRuyJDZROVLYyCdqVkA=\nR:9f312d95e780b84be09f44d2084ba340b989ad4b0c4087f73028c309a0920c4d-a\nZ:Q1RkJr6weWYcivz70XzRD+QlbP75s=\nR:9f410f4e1d1f8ca11e8a0bec1e4558ba4e56a72953048209359d548a0d13d9cc-a\nZ:Q1h5s2a3hrt4vMVSUKOTJQtPLhPHA=\nR:9f4e241032ccf0b31149a2f4bd6ce989ff1f04a0910c24b50b3c83e3c688e446-a\nZ:Q1gKpoWFksHD5nLFcbKv6GvoGTuLY=\nR:9f508b92a22cf4b8810794fcdf6581b2dd6b0eaca19ad4e0da7a62df879a35a1-a\nZ:Q1ZlHUsboPlpNTAVUjAVrrTWW4PyM=\nR:9f58999748a04c417dfa10f830139e46a8df09a94bd8ed9f64078030f835f117-d\nZ:Q1SUvBPsSvEbB/IVT+TVgs7HXtutA=\nR:9f670d115dbbced7c9f176acd07d88b363729cda4ad1ad24af7474611af3339f-a\nZ:Q11uSUnN/xlycbeDkTP/MrsIOunRw=\nR:9f6c1513dcc89c65e5c6adef50afbc45a09c836c5451a5d0712d027a43735c62-d\nZ:Q1Xjr4Uv5xF7DpzOKp3Deb/PC5LYo=\nR:9f729d5c0cf0d42bb1f3ede3f3a2af69909a32166263b0a62b1f1685ad75edcd-a\nZ:Q1uSdnBLwkrDm47/UpZ6nolhhLQgw=\nR:9f78377397e5e3bb10dc033acfcc4b2d610afe80a3b3205f1fb4d4900b778959-d\nZ:Q1d32yJhtkOuUP64HzcoPjwjLH6+8=\nR:9f82e0ad48baac260ff6786706eb805b2ec90c505d43af674c11372419293389-d\nZ:Q1KPGiR3xhRgs0UcVVolxZFhAzhXU=\nR:9f8bb5b60dc2d303b6d9c8544d7f7f019910679068e153c51fca307129980078-d\nZ:Q1TTjMiy0+2YjNpb5kWlNYVIcgfss=\nR:9f9016b341b9580208ac60c6b8069beaca65589fcfe24b913255228ee37119e7-a\nZ:Q1s4Uw+y6NUaI77nqSnH13ZLdOidg=\nR:9fa0e572afb93ecb580c37ea0d53498ec958a0f4a02fdbd7e12724411b1cc237-a\nZ:Q1ejdNLZr6Zstk6P88TfXVqYhuXa8=\nR:9fbc8cc5fc529858f7b163be3e047ec722e461464744372f5d919d5b99ad786b-a\nZ:Q1nTf3FzUs9/1CsT2Lx7oK5RQ3hig=\nR:9fd4033ec307de0c18c5d28b30598a7cb2f01268bdb36c416ec51e784ea53da2-d\nZ:Q1Cnrpr0xhZUQ/AfdY9DVL7Wwt0hM=\nR:9fd6c1b376a220781d9e144cc3813662d92f75fae46c5984702f81088faba358-a\nZ:Q1KIRn+vCl9V8oul3rR0CESJkNNpw=\nR:9fee5d07f91d754ec6746e82ae6b4866f0ef09943f742936c7f56c82cdd634ed-a\nZ:Q1FIyurN77IXNHmWF1w68sA+smm1s=\nF:root/.cache/go-build/a0\nR:a007fae515a1180aa6eabd5b633d43d484def363195118328f6ef36739c7cff9-a\nZ:Q1lgbG/jmtDepV87gB8OHGFxNqIdk=\nR:a00bccaaac82c2ac6e75c3653f59d18f92d2dfb7bc46001b3a2ec1dc7573c9de-d\nZ:Q1mMH4yhzEhI/x2w57Z4JS4U8pK9Y=\nR:a0220a241772fd35c06cea05ba0ebea204c9bec9383323dd7dad9ee4bdf3d5e2-d\nZ:Q1mi8qx8yokoPv3lGI4cw+xkw5uno=\nR:a025a5af79961f66b732355da55863b56254d825f6d6d0ffbcbe28c22fff2fbb-d\nZ:Q1IQUrsMxgESA6wiALaWR5BKmcfr8=\nR:a02d10852611255346558251deccd4b2d43c72f03a8b15c2ce97f3d37d0b1867-a\nZ:Q1dVHwq4dgGR+JoCIXgktsdTnPok8=\nR:a03d6880bedbcb3d663c634346ef8cd19f2599ea0717347a90aa314886cd75fc-d\nZ:Q1hNbWiDWDOI2AFhc5eih8rqtmaBw=\nR:a048af90923b482e78c82c770fa5cd0fd09a5fbf437230c6161f72341c0ffc7b-d\nZ:Q1U0ze5f/jKNMbDghrjy36vfh1kH0=\nR:a048b20a6f4b05be447ae47c8c67bc11d1f0465a4f6b23098aba68997bc3acdf-d\nZ:Q1FboJB2Nj2hKyJifP/w9e7jluAzw=\nR:a04d0fbc1e4acf388015ddd3f6fbd5c25116e702dd074371889206da5561a7ad-d\nZ:Q1nkZCZqIhZ6OvN1K12ppmQPNiU2g=\nR:a04f1a59274eb7b8a202bc025af5f5473e5bd21c2a82e86cfb163efd682ca43e-a\nZ:Q1Cmel4fwGkA6UJ7Ht5LHdHOa7Mr0=\nR:a056e526be2693a8d61b7eee38f052cbac5a546e3caeda0107bf888767ca22a1-d\nZ:Q1MmRmq7QWnLV37I9mzYtNHIZUr10=\nR:a06003949968fa1b02c29b8003d84041a9ae5b9340d43bec2c4a2141eb562adf-a\nZ:Q1QL7h7nMkNfIgpHWVEQOKxDwCjmI=\nR:a06adfa75c2c6443cf81685c3b3428c54259a9c6923c634a7969a1770deebbda-a\nZ:Q1wSJ+0B8itUa10qlUANkx544Bnbo=\nR:a07238456b5f83901f7c833aabc33626b17ebad2b4c58f180c4d10e90bca2301-a\nZ:Q1ECCnM1G8SGF/eWTMmdvBIWKoU+4=\nR:a086811cf2c1531e2c8665012aa287da5e516caafe08f130c2d28cb8da53a918-d\nZ:Q1PwCTI8hpls4rRkLafUO722Kx0eA=\nR:a08d6861746bc3658fe50aa4eeec75c4b2724f0d3ddc5e7487c4b07c6e5beedc-d\nZ:Q1ZuWPYcIG6cKP/lwq/O3el9bG62A=\nR:a094cf3504ebad7e8afe65c32700149d361d074879796e500667d8320f9d0aed-d\nZ:Q1SkJAfE1ngbpU5E9/4ufKtVP/gdY=\nR:a09a9e98420720bdfdfbe84603d896c2469a4274abe361d4d07fb438a298ed2e-d\nZ:Q1W+KQdL3XBusmk6fXPv9QURDlpnQ=\nR:a09d24191367e4a8b1d48e772b8eaeaeef7e7df4150c2378f5a82b56926cca80-d\nZ:Q18ZgzA/JOCRb1hgFEYvzMf+TYiec=\nR:a0a1949e92ec5062d616576be2751e5ffe1a5ecad9eddc01774c994c366b53f6-a\nZ:Q1DWLZjzasD58LRJbFmYe2A8hCeuI=\nR:a0d0597f4ef2ae7a7136643a8f94f03f38c8137acbda81303c1cb7816613805a-d\nZ:Q1DSUOWNNK+Ol3njEUobiqqmRePzY=\nR:a0d78418793d8f822767302645b4c7d983e5519b9567d2a3d94bdba3fcd6eaac-a\nZ:Q1vXzCvnD2bq3kpr3iubNp1cTs+B0=\nF:root/.cache/go-build/a1\nR:a10a3038d218adad39d7ee6aacd227cec66e06ba3e560e58d10f08c0c456b125-a\nZ:Q1MY9OFj3hh6oQXUYfniNOQ8K2Id4=\nR:a1144e609899f929e7cdf550a0a42a990e7f29610e450c001cbc566a8c90dbfd-a\nZ:Q1Lxum7c2yTzMXif4dfyu//jU4yL4=\nR:a18721c303d655f3444f829326986042fea2bf5bfdb5b586aac240ca9d24da18-a\nZ:Q1PJjB88MypcWwAEK6J7DqV3GoGSo=\nR:a1ae7a67c6830981ced27b68132025d94bf38bd8e3ffe18d14fcbf88f1031388-d\nZ:Q1BiGWOPOwKuZ3IEZIQVSHW003alE=\nR:a1b930dfb43118a1bab32960b67436a9981caebeda7ae96a9c86b2edc853137b-d\nZ:Q1hd8mLf4SkCiC+1gvac/FM58XXIw=\nR:a1bac563ece4680fc223c567529962e388ff7b5e1a16218a69586b74ad159717-d\nZ:Q14rWZJdz6kb/+tmmPjZTR9vFpF68=\nR:a1c703ac9f7eaf0dbcae30b039232e58ae2d6e79144d6e648a4539a0361c052a-a\nZ:Q10TDe7/Nzq5kUQiDpxabwn97Scus=\nR:a1cb6dc40aa4ebe1b12679b4b9639e3ee9923fafba805829281fdebde18abe86-a\nZ:Q1OUTFDAk9m11hXwEcwwj9EudUupQ=\nR:a1d4fe9cff321145d877f44c6b40264e54851ed91f442bd8800ab6d9489a68a8-a\nZ:Q1PTdFAjiQnzVUzMzzv/F0ylLgk1c=\nR:a1d58e4eafb2dd5755c6de8c95f58700fdd3ca47275cc507ecd81dc844447eb8-a\nZ:Q1Sn5LrpEAaMLPPs0c9Z0YhAhGOdM=\nR:a1e388a1336da80c2bfa253f61ef6eb8aa4d957329d7312c14c8c34c48d3291a-a\nZ:Q1DaCrnTy+eGK7Rzhx+FS9xjQ974o=\nF:root/.cache/go-build/a2\nR:a20b9e0fbd511b9c1ce3cfe15d1e7327bc37f4582806fedd85b858225c6f1ebd-d\nZ:Q1j+WvqUhTqHvPQ07637zTw+G8X6s=\nR:a216ecba785c3e362a6fc4ed31b6cd3da1bc3d07dd7aea6844d9b2bfd9ed732c-d\nZ:Q1n14bHRYG0tM6FBnHbNpXoooxkRM=\nR:a239bfda170ef5dfa107f25d7a621a62f68832af3fb883cdd7f0d07db1ca0cab-d\nZ:Q1iJHhBSBDGRglc4seTXw1+QR0z2A=\nR:a24057ef3a3022d7832063171f55444434b8d5b5ee5678ab90bacd00fe0b9700-d\nZ:Q1gDj3XCNFcEvsNK+qEh47HITOb/E=\nR:a25f10e9acc33b9a4a143d70b66bff8b69bb108c3a9354b0de8cf48c04ac6ffd-a\nZ:Q1/NoktRsMFHTXhpHZjp/eIe5FeGc=\nR:a27aa9df950a9e8b223a0a2d800cc34d3bdd15a63246b64a2302fd465d0a74bf-a\nZ:Q1G1WNWmk59pzHO6E0Cu4eqLA9fBc=\nR:a289902280789fc23e7af27545a9946a24d4b7f233df462d77e2c5cf065743de-a\nZ:Q1xYkLP4rlfkoRn0Ct7FuNBYEkPMA=\nR:a28a0c61045d450fa9c5b7af7e6757b7d1694d4517a7514c452394353f27deb1-a\nZ:Q11oqMBdDqF2wqnD3gc9HdHrIINt8=\nR:a29cc3c24220afce06de94e4912dd8e85485dc690a0d3c0272185a2188432e2e-a\nZ:Q1L9Vp8i4YNM7pDPJD+Xzh+Go4NjA=\nR:a2ae0107afded10dd520f1489bceed8f6306376a4962221368a828adc38210eb-a\nZ:Q1ftMRo5upwmwrTJiUxsmG6Zb7it0=\nR:a2b86027baaea9b7c2241d350ae0ada7ef7362235e4ee1f61d1f22ba531fc1ae-d\nZ:Q1FwejNQZLFjZWzcLucxoXKdQyAi4=\nR:a2c2e05e37040c27251c32062ef948e815c290828593450f63b7590b59c83dd7-a\nZ:Q1mj9Hd/2D+1rg0kxXhnXLKHoKJsA=\nR:a2ceb689f515f1ae1cee8cde49228de1acf9e1e2aa143259d7af1951121bb1dd-a\nZ:Q1mCYztcSXOGnCenMNN6z/e+D+P0M=\nR:a2d92add878640dc1072e697770bb8dd4f77e33b03b30e65e914d135dbd119c1-d\nZ:Q11XfQ0JIUI0wr3N2TQIlRxT2A1Y8=\nR:a2dabb28c926d7f16d30f60fe7352a198d899e591397203a21b2859b5b33c94c-a\nZ:Q1MwLs7O4pxKqLrS1Fgjt+PsedQ/M=\nR:a2e1b74db994f9babb75262e00adf508dfc96176bd27cd4038e82bd0e9be887f-a\nZ:Q1iIlpJ/bMCTyHlINCyTu97SwJmVs=\nR:a2eafbff04e2b6084179091a4baeee7126d2b966e11e90d349ccb2a4c7bc7d9a-a\nZ:Q1cWpCBo61NIIyDaFcZNKYSrtGLD4=\nR:a2f3d39cc5589f67df622f03ab760f38c7b1b0a84456adf8043bee126fc52d1f-d\nZ:Q1lQno6K3DvAEuOFyD3DUfU2Uvemg=\nR:a2f4888eeffd4bfed5a0fbb34c48b943d659760fe48b051c61a688d343c08d8a-d\nZ:Q1Gg1plc0Ar05GX9DUXCtx8FyFQ9w=\nF:root/.cache/go-build/a3\nR:a338127d87bfb7ddd3871a3bd3a03221d0711b136bf325ce7924de5467d89b76-d\nZ:Q1q3uE5yPV/ft1UFnICrMQPjbdcSA=\nR:a33bec4abc9f4a1ecb9e48b8684be7c10230ad1fbf9d9171c73cceea77e9b4cd-a\nZ:Q1Iee/qSVdq9YVviATzSejROOaohs=\nR:a350d4d707a5e2912f7b1a3ac6484824fc6870d0ed9246ac4ce891fd92ddc407-d\nZ:Q1B8rdiUX5/uPGSMHlN6fnclZMA7Y=\nR:a352763a3879d6e07580c4e6f53e672fb8ccb6238960e90021fcae33782cd77e-a\nZ:Q1fMu4yr3LG3Ep519imNISzm8w3+M=\nR:a3582d4630c250601bd361bfd2615c24a246f3efc1ca45519b5905894d09d819-a\nZ:Q14BtfP2DDvJscfhKHJHgJ+r8m+II=\nR:a35b7414aa0ddd5f035878de0bb4bdda5562a48f4b6f6562527ec8b0d13b8a61-d\nZ:Q180dORWp4SFQttLCTg0W98BkY2lE=\nR:a3758e70e2102799b7d49b5b102305a9071e15fe1b8ed7d1c46e7a7bf1c7a44c-a\nZ:Q1XY6mYSKA2lNJgbmdde1kc+pbzA0=\nR:a3807b777bd8bec9b435bfe4b89b4a2517f3558b9c983cd195e962f82f8d2a96-a\nZ:Q1wkdqlMUf9UHJx45C1obgwuTg0bc=\nR:a38c71cf63f4815229f772d8c7597dcffc77cb6f25073090c747a85d8717eeea-d\nZ:Q1nkXtkZSFZbsF6Dl99UzLQXMgZXQ=\nR:a3a30c96b6522c55c961ed79df40c4c9455747cc9ceaaa374f76e9ef78de8631-a\nZ:Q11RufBe1bahSb5f6dccevNxmNRjA=\nR:a3aa095063a5088ca8978bf814edcf74b5740fb51fbd20c864c875ac71cf22f3-d\nZ:Q12d2ckKqgLq7UFvY3FdDRfpKzR1M=\nR:a3f8568bb5618945dcbd6106331feba46cb1d64cf4cdae25c2ac952cce2836d6-a\nZ:Q1kyZaxb1Na4LIKQrfs/qCEz/nFhs=\nF:root/.cache/go-build/a4\nR:a40d428ea12b16fac9928abd211cea6115b5cf6c61aa27210c5b04bacb049d7e-a\nZ:Q1DzI+ZwfnQvbHtSeyP0lsL4bqm94=\nR:a41025ca1a3ebe4014e4d043d588ce0c0ab6c4715c69359e7025095deb76f06a-a\nZ:Q1HEp+fsNJFbWJ0gg8M3rjwS62k8g=\nR:a4182f76b867fa9d1dc99c37bc3b15ef5ae71ccb9ba8aec50ca29097b559f87c-a\nZ:Q1Uzd6afDWoa/DcmPPy/RnRCn1wU4=\nR:a41ae21474ffd473d7bb7fc256da11a6a6c081bdbd6fd65e9e4075cc5d40e54d-a\nZ:Q1PKJjk1nGW1OXMy6aK6WmhzomtvQ=\nR:a41b31319f1deb4fab67d172086c68447ca6a4eb8b042f5cf322d574f171a8c4-d\nZ:Q1jn296CeUaTywOwRPk/QmtIBaZHA=\nR:a43dc3284e651c0fbe64c3d7e2e41c48a9790e3f5dce726089cd9f2a32094954-a\nZ:Q1IXoXk+yu2Y5zbOm+hbKCLNlETl0=\nR:a44b0cafd24da5d481e17f51ad536b9c83f5b5f25219f9cfd7c3416aa1180d38-a\nZ:Q1uWEQlXOAVvaEvO4Kz09U28z88S8=\nR:a455aad6e85f412b39ff090b5de6211e9e71530a02f9d0d37890e80d47d79be0-a\nZ:Q1y2dCh+J17GxdTZARZ1pKmJmKLmc=\nR:a46863f49efeedcc5c76aed67602b0b6427eb46a8690bd89caad57df3ad89018-d\nZ:Q1t1FEJUH+Lby2tnxGjxFRmP0JMAc=\nR:a468839dad236b17e1ba1565bdd70d681b016e8aebec0941f834258c5f896d22-a\nZ:Q1XlsVWX74KG3uIuQ15snGcb1023M=\nR:a46ff383d4133b42189679f7cf6d4cd5ac9502079ead02ba261f38e12a735841-d\nZ:Q1/KPfNwPQxUF45F8Hq8iDBa3c5uo=\nR:a4790939251ea008f1a073c68afb8e3eb93ac0ed040d64a1a05aae819250a5c9-a\nZ:Q1VYBuw9+kr9IeeZqaENnVYHQEUIg=\nR:a481e58f6b5e3c02c8e1d7415dc9f04ec9c88e0f89545308d73cb4f6f8813082-a\nZ:Q18VlWyWiDNArVwfv2SoU3n2VRAl0=\nR:a486eb78c28493bca0ff1cc10aeff86010706dee99c8b443be1ec839fae12d71-a\nZ:Q1kEzblSkqlTLyJodftY+rCPh2mew=\nR:a48d9059a8c2c39880fcf8df27d9c2442280f24c7c8d75b8d866e9eb4f09fb34-a\nZ:Q1CkyPDw3ghDGef/jh6vtz3/zO6p8=\nR:a4923e8d9efd57e8edbcfd421a854d3cd5589e874c003a68f02c608b48970932-d\nZ:Q1Gb/kRcsHIq76u+UgV/jvSPL0WA8=\nR:a4a45de0b70c1c392e6ee444348bd4dda0fffffbf78eed22919a1487b07f8b0e-d\nZ:Q1jF4Men7XosV7WUVy44v+MsQae4Y=\nR:a4a7fbb7ff90b284664782f5236754885143c278c809838ce751ed23cab19c92-a\nZ:Q1PPnnL8c3/YgAWaGlM4i9L3jwahM=\nR:a4a9b20f3556389e5e05f73e061e71cd3e084e93db20ce68da392b7e30090aac-d\nZ:Q1ebvz7QKBVsKjkU7blVIcHzs8yq4=\nR:a4d211991bef91e3037290ea72364300f08dcb2a19c9a04eea10495ba525cc8b-d\nZ:Q1tKdcARMZ/LHkgLKm41fv/W4yUdg=\nR:a4daf091c2114d8565a27b90b395b0b27e9388d245a38d865c803efe95c73e0a-a\nZ:Q15NMipQE8u+KfDgMZAGyumqi7Kd0=\nF:root/.cache/go-build/a5\nR:a5158b58096c25df0eb518e300720f120774ec92db65fa371085e4bffa6c52b2-a\nZ:Q1EpJ5QGviMxdHtr/OyS/qvVrXcvM=\nR:a520aecf31ff91075dd3c2d6913997e12c2693c5a83ce5de1b7a7e7d11926f15-a\nZ:Q1KOwxVjEbIRv1QrDkylp/4yfZf9E=\nR:a54217af726be365b20109f09854792a7f998c21b56bdd27fdb081177bd6f818-d\nZ:Q15l9soMjsT2p5oX3RWzeib8YGEJ0=\nR:a545d8266cd232f610d39b69013e0659c8e492e67ed17b1015bc1ce40c408703-a\nZ:Q1a50KcL2eFWpv3bv0OCxmMS7jhzI=\nR:a56c39f3b830f161f4fc0a514f02bee147fc9ba24c0d6832e055d4f206c9cd78-a\nZ:Q1EgFm4GaFGs4jbEDvlvx8ROQBKzU=\nR:a56fd265c8b6c5c614411f1bab4f372504df3eaa81a1ca8934d515ed0a195010-a\nZ:Q1lXrhGZdR2Da8eWKNwAyRI0V0YBA=\nR:a589b485c00a9a54ab9baacf7ba729e6f66feacf6d15606fb188cb6aef044d2d-a\nZ:Q1Dt71LEQ/xpWcQ51B7vTOnq6VQGA=\nR:a59bf2c3835bf30debf908d409a1443f4fec38a531b56b707f623e4b58e9842b-d\nZ:Q19Br1UzMIFj1gGDOdog3uD82NNnE=\nR:a59dc671d34299c4c95bef2946f2a6aa6bae49997ac0077cf30d4c9cc081eb73-a\nZ:Q1LRLwO+bLTRJpS8WWVgWg/JvhAXU=\nR:a5a6aa675d654b8546b6dc1bc2f64530e6d4b9cdd056104fe43ab4d830203ecb-d\nZ:Q1gBGyIPeUxWbUyY3NjBMAXjWU0ik=\nR:a5b013cf040c09eb9d2316af82966398bb26ebbc898005b5714ee51e63a6cd86-a\nZ:Q1QsXyVX6Bss9tf6cXMIQ8e29ch4M=\nR:a5d02fecbf05537a2fc6c8b342f4a85e61e265bfb5330fb98dd63b10f542423c-d\nZ:Q1TMKqPi/74YJUHahKwx5xPQjfqaY=\nR:a5d7af479e38ad14cbf78eb6964b649f691428712c097ed6b63c3f82f593aec0-a\nZ:Q1FbqUgSFThSyxTr3UbGm0GaG8O4g=\nF:root/.cache/go-build/a6\nR:a6042deec6ded55758957da1d80e5fcf60cae3aeef1c1c429368862af27b8e0d-a\nZ:Q12KyJiS2+4cTo3X07m1H53sOcuJU=\nR:a60a4b11e954af432d369d2d9eaca980951d3a3d6ec43a5cd1cdb66b83342c8e-d\nZ:Q16WYjhI/LUrlEp9iw6fkenzdkaLA=\nR:a610f8b8c17ca3e7cebd0e996bc57bb72329791ea4528bde28df61a552c876d0-d\nZ:Q1t6fF7UqAW2QT+D6nMIp1pYhL1dU=\nR:a61df5240b2327d0c3aa9352ecb178925704cf656f52351e9b1eec115df504b2-d\nZ:Q1Iy6wOdgiQ57aOb9eRs2ot5aD7l4=\nR:a622c1c8e44e8390af25d85c2018ef5ae2f97c425364a3ac1c2e0eb415b6ea1e-a\nZ:Q1gRyZlK6EguUzCdsXP03fR1fPsAk=\nR:a63508e7a03bc2fc2577fe86fbc8f6c7cbbdc921b7f4d2b188a4d3fd3db9ef22-a\nZ:Q1Er/C75a8b5kgutC4A7KO37mRQ5w=\nR:a6373bc1aeecf7b51d6b820ff8e8f78b569bf2caf5ebccbc888c3a06e051e466-d\nZ:Q1idM3JMXdSo8oCZABVjZjINhxttY=\nR:a63cedc02a62cfbd807739651a840ba733d2597a29063e92c74e209b59b775cf-a\nZ:Q1b9yfmsTInvZa7bM7UL8/3Jfyebs=\nR:a6437abeb35727ac4995691d1a592015d2a4080a643f40020cfa49cbe6690c7f-d\nZ:Q14sblUo1xw9fZO21p6N95mQzH26c=\nR:a646bbe3facc1ed33c3c1252617d5626846eeca89fa9c93fe6e3c16ff1eaa535-d\nZ:Q1+luzZYbJKX/EJa4Np8/5nNU4Fak=\nR:a68520b9bb45e60e62b574ee0b4f85897ee85623b45e19d99e6814d876d7d7c2-a\nZ:Q1HJLcN59SD0/wIRxY3SIYbujJEZk=\nR:a68bac643013e7c815bbb2a97f30a7c8f5983c0bf0c2b4597c1c91a01869bf1e-d\nZ:Q1l5cEZdC/avCY8vLqxUDwHfbLEeY=\nR:a69bd86d90c683c374dd6d0f7f02f9f5b253caa0e36994012b7a1d7f5b8a1f57-d\nZ:Q1EXwnMW7m7XtH0NQALoVBxDVCM1k=\nR:a6abe92fc4b051c751591789cdbb19f4cd688deac3587e4c6656005a2c7160f2-a\nZ:Q1idGRC+Mqf7yb6iGYWYTlPamU0Dw=\nR:a6b41acc0c4e9c2b462fb952eab0566b5b5ac8025a15c39b0dc75247cb976181-d\nZ:Q1fWwMTbN+QogztVZ6Tv2JT6VKPM8=\nR:a6bbaf5d27fa500ae2ca4d1462e4d411a393057c7a4ef6647c78f559c1fd1841-a\nZ:Q1iyw5ZrNPx1odEJkAJvp+nm9R9bA=\nR:a6ce13f9c2c5377c4d385ac4d4a52ecf50b702ffe3968d17df64dcece7904b19-a\nZ:Q1GKIxsZZtERTs4GFL+/afDtDZeHc=\nR:a6e6cdea66160feadeba4d592a4ad5a572e5fc0b0183bf4506ea280d24607498-d\nZ:Q1bl79K9zxXVco2mSZF28UOnCL9HE=\nR:a6ec23ca75e171c33cc193968859a45b6afe5d175b666ec8a371e7351d48dc6a-a\nZ:Q1jeiwV3KEXOOGE0vnZ2bSIdGsJgE=\nR:a6eccb328f98fba09b9b6aaef5631484f15b78b62fb34224298afab424c13696-a\nZ:Q1g7eKfca2nz9NMyWKoJaLc8D67VQ=\nF:root/.cache/go-build/a7\nR:a7141c45ce23b532a047def91e2931b534742751b50b553af0e81df1092b7f33-a\nZ:Q1TDULgs6P/dvn1LLimkPb7847T+g=\nR:a7192ab42ac85c0cfe93a3b5db25ee319b1fc752b2fc47652c7272500c0e1556-a\nZ:Q1vNyjeoslTjLVpQbIPF72LERA6n0=\nR:a7215bb4b40244b6fe3d6715e670a9576eccc5da3d0ca6e1c4a2c282d494d05c-a\nZ:Q1DAMWqwAyTEBSAu3OV5Kl9W/4VxE=\nR:a75a6155595b3a633c92630bd7b74a077343e8ca0716499b9889d45b8b6806ef-a\nZ:Q1nKLgwRV12nG8sJh/A+e5AhbGg8E=\nR:a75bc1175c311e1e92eb49e37770833415fe7d1c80d9044214c41f52a9aad0ab-a\nZ:Q1POjKUMXiYMp3GxSanV0b+MDVx0w=\nR:a774404b0b8efd2cfefc20ab7bd369c58dcfcab6337c4bc8dff077e85f3b4c2d-d\nZ:Q1skDbPy7oI61/A+vJ9wPgk4m9XJA=\nR:a77b8394b421ad95edf9ae2cf728f54a11350783cc24d9775da690ba8109e993-d\nZ:Q1fh/gyoKXqTIr/zi7IjHDp08hJuU=\nR:a77cd28af5e50a71b25db6ddad8bfbe5f4b95574fba11a053300b545b0e4a7e3-a\nZ:Q142LE7XxYr8GYRSGZPV5Bl5j5ack=\nR:a78a81dab0394fdde7577ca514ba10b6bc53cbdc25aed6cfc8ff465cd3e6f371-a\nZ:Q1ZGPDxyzrk83jRovPgqpzqzJ1Dnc=\nR:a7b8d8be667bc3729c95ffbe4ae6ce9b7714d7e8d0d09a3d1f3a69bb1bc1ef3d-d\nZ:Q1qz5yPIydTXSAsdwdxeU5t0sacEo=\nR:a7bf40c67e060747e73802edf347a7739529dcb5505b60ca51dbff85f10b4d27-a\nZ:Q1Hf2citzm2Tc1acQEiuYdEdTgFfA=\nR:a7c57be5e91bb6df20499afe1a7080d6148974c356b338da40478b44d29e2ba4-a\nZ:Q1wI/TqVxwniIBf5LJlEnRdaE0J5M=\nR:a7cd7a3790e8d240e71eb49420ec14c511066d39adaac784ee874f406f6b4c0c-d\nZ:Q1AUQQmnhB2SfXnKlBh6LiNwQ7C3c=\nF:root/.cache/go-build/a8\nR:a85640871b31e67c4df9648a485b93e1a0faee1add6cd4ad650152e32c6866e3-d\nZ:Q19cA2Jd6/YGiP59dVtrFNGyz9WVU=\nR:a863bdf1c396a033652b04503d94eaeef8b65c969af16fda297ca5a4ba4374cb-d\nZ:Q1mcWRgjQESvmQRz2m6LO4jamGsiE=\nR:a86dad1557a982e07f3e8fe8e4c0a2a8b41ee5aad89245e43657c23392435bdd-d\nZ:Q1vGugukc4MfyiRB+xaTLTjiKyAXc=\nR:a88db89137838009a7d1ad47b86d908298e93937e0e6f1a13b6365501feec991-a\nZ:Q10r8sfWKVy+EFUK04RRHjPb/Chr8=\nR:a8a087f1e85cd10fa41bcfd43e75ac1338524d63236e16cf7d967277243408c8-a\nZ:Q1qDMMIS2HQ2jv+ck9G+sfE21PMtg=\nR:a8ab20e808750aff79ba09cd76d869e026e0d4cee684e76157e723b82dd04783-a\nZ:Q1i+INSbnard3bBkMM1TviF9tP1Bk=\nR:a8bffb690f028646dde2124e8049bdef31c91672aa4be63e31a60b3657cd2ff5-a\nZ:Q1xQbbuhZKQ5FFV2CDEPleaHqexfw=\nR:a8c795d35752e5b59f29857459e4afadae47bd95aa77eea438b1eaf444b582ff-a\nZ:Q1a0w4bhgS89a8A5ndM0Qyl2nCgiY=\nR:a8dc29f1ee8d714b4b480822b3c4555921f8eb6ef5adda4fd3d49f38516b9721-a\nZ:Q1luihIp4XHg5armlGKTP2eJTEUqU=\nR:a8e595d067f0f376d448bbd87f657314cfe070454f823fd531396125280ff51f-a\nZ:Q1Gs+7n9pr3ygYsyjb/7yO3UeYgDE=\nF:root/.cache/go-build/a9\nR:a906520dfba5837c2afa9e2847311c124bdcdb2edc8e758e554cd2f348212e32-a\nZ:Q1yA6g7bjrxlwtr5pmTPj2KsqjbvI=\nR:a90e97b6a85cd79419843d2a56c53b4d6967283307b001a3385d78aa4cafc5f0-d\nZ:Q1vywE4q2BlBbZv60MN6f+SSSDKBs=\nR:a91819c78fee93a7d3927d5aeb41b1732da914272f4781edccbc34775de4b562-a\nZ:Q1EhMNGU0cNQ456VT8N30iTK3euVc=\nR:a91bcaa72c2dec9aa83f599f5ff09ec4432a26b12e13c9d0f941f9cbdc5ded84-a\nZ:Q1hjIxBIAr2ONt5RYMO5Lq8d6vLd8=\nR:a93a93e8375369cec17054dbdb0fffff22aab46fef70e02a74f384d649b8e0fd-a\nZ:Q1y2nqN39IcGTXaZo5yhlygnVPUxI=\nR:a93f0afb82591ec9de105a0d7a647751ced42285e73303be5f0ab991f18fc9f4-d\nZ:Q17zB6hmQQQtLCJ7CSvbh9Tai5mZg=\nR:a94d3a8d8fa49b2d1c8a1e689a704f702943fd1f04051376c810a0a96e514e91-a\nZ:Q18W6e6Hp/kia07lKnGLHZbVdX2zE=\nR:a951bcca7a8c19b40057d06e47038751fac1a06397800920df210ce5a184300d-a\nZ:Q1aZQE/ZbVvLpVSPzPRWSBeNAkBro=\nR:a9822dfa769e1d8cddfc6e50566095bb697bddcdd6a67a0f1a729c55aff39514-d\nZ:Q1d0rlnCTW3TpMEY+1MYyZePelhpc=\nR:a982bc17edbfbdb64bb233bea90c6540aa345019c6f400ddc16c5f6be12be543-d\nZ:Q1K8aQDLuGUz8d8XHlu/bhJngnXjo=\nR:a98a6e9edd93711f7cbf913c9d3623629d49ac77fa239a69a69cdf2d8943b516-a\nZ:Q1bd08hR9epG7zJF1/bckG9Dy1C7w=\nR:a99b4c1472148b4a536571be5a974d3bfb6adc31a1361fcc5ff7a0ecec808ec2-a\nZ:Q15ZKJZv26C4S8p6QgQO+XrwxlxvI=\nR:a9cad666f00b0dafc3ed06bc8ca02c9b78eef6472346a6411c0cafe7601430b8-d\nZ:Q1xHc++hagVVJJQgXWk+Ddy4KG79M=\nR:a9d32a2d6808e64b5938fdad32309a26ff27ba493777c95d1a9cb457ffd1ac1e-a\nZ:Q1HcLDb4mnGGOVlbFnBCZLbNiCXW0=\nR:a9d3ef851a3a14b77d3a0d554da64945679e4ee76959b8c5ae0b5d32391eb29a-d\nZ:Q1TK9pFWXmKF6hZeevQL9KvWy55Pk=\nR:a9d5d8bc35563a17e14793121746b6747d09e2aa8417dc177152dfd8d133051f-d\nZ:Q1MFlQ8y1OcL92QjTi0/+pBoeH520=\nR:a9d7ade4b306fa9cf9eccdf184b3409af0a6fc1b28ed8d377233c5d497401dd6-d\nZ:Q1QNVxKDFVks/RiVSkL10g6JzAz0Q=\nR:a9e499655387d3640de940de968ff82f09b6b47da3774bde064f506b01911760-a\nZ:Q1RIl+7hW4340wsnaa3dn4Y4mlijA=\nR:a9eaed7b61b69835b6dd05c352502c80b3a6510464cc080db7789a8f38daab57-a\nZ:Q1CRQV6/DWgUbNgCTooignAgbHSwY=\nR:a9f608b7cd85faa3f6b59eef279bfc6b85c336f95dae8953d8be2d924eaf545a-a\nZ:Q1xPayMtNlEIAWEttL3dDJ5hXbpHE=\nF:root/.cache/go-build/aa\nR:aa041c5b53a532a03481520c69a03fa5e0f4aa1ac7a863070bdd9739ab285f1c-a\nZ:Q1GjjdhUI+agjbvxdxSq95ZmOa/SU=\nR:aa0cb6f420d7182b834c07e7e081f185ca0608bb56fd0aee0c133d0c7d0c26b1-a\nZ:Q1lgB6PNAHzSPtOP/zkKUOsFZtbro=\nR:aa135937eae569eecfb86aa0f9c83f16dfdd1b69d1ce1986bcb7cef8528c9032-a\nZ:Q1+kuqq8Dz/96lDTgZBaSOPbJzhAU=\nR:aa1b1a116b30cf6aef0348e7c528ca6964502cccc51ed8bd725a568fc6a6980a-a\nZ:Q1H+S8iUM8r74SMf8xhmklCrj167A=\nR:aa1eae85fc4d8588b74b1a5551208b628a65345a4c99242d525a000c7be826d3-a\nZ:Q1K15C1ReaLe+7gubqKp3fl36yk6s=\nR:aa37b894da917d3b0bf64e7ad3620bbb227c6a58ea3dfb3c355c048e17b51d1d-d\nZ:Q1cOgPXlZrHFfPBipfIOobLm9IyWo=\nR:aa4317fdad3fed6412b196b804ca2b6993460958c7bd770eb7fea1e89c860351-a\nZ:Q15YWN4G+SvDlGAb7G147GACNAqjU=\nR:aa5c38da96cd709ac292e2da9b82d8519830a0c58699dded64e89078d65dce32-a\nZ:Q1Nnk/axvYEI0ujMljF3i7a+XmRIk=\nR:aa896b02961c6921e0588e5ca205b672347542ada1b69dc6b696bc1640bf7b6a-d\nZ:Q12fA1qQHSCEyvQaMpYKMKhKZ4lOY=\nR:aa9c710d64498c11a17582f8400711e6b3803ec9f29b32450c823fe391de5832-a\nZ:Q1fw+0b8L03MZ70TA8QAfCD6/etT0=\nR:aab76710ed2e1ffbe2950cec48319a2d4e774982346b9a2edd426c43d2ea2bde-d\nZ:Q13pUHYUdFR5QOpUQc21292j+X5M0=\nR:aadccdbc7ede08c1caaedd0bd79c09a340808db88ccffe2256f9ad3041793b85-a\nZ:Q1UmiGMzBZwXJJRiHLucfbwWiGqbU=\nF:root/.cache/go-build/ab\nR:ab37a23ac774907e00902245db4fa55b7a111794a9fd42a074dbe98422b552fe-a\nZ:Q1ytlUNzTSt/4GluVw6CaZNu5ndl4=\nR:ab4a9b09c145188888f3d8cae95bd88eeab03d9ff827e5550454124700a82813-a\nZ:Q1XaLy9Ohav5kJ5sreym7nqj30rIU=\nR:ab62c19fba656a71323db6e4b59f24027f55825c369757cc83ef69c6cd02a7a3-d\nZ:Q1ZkDM/NHEJKAuu16xZcZOqHTjMvQ=\nR:ab658e41d808d7febc02c8ffc71485bc95dc1f48596a0f527d4b38acf670835c-d\nZ:Q15YNWComC/QAE/lyfvhsiaoAxLDw=\nR:ab6b091229459de48c84337a6f04aa0d485af1af08a2b458b552897335944426-a\nZ:Q16UrjPkaD6ICSeSQxbfiIvQfBzHc=\nR:abaebf63901df9f5fe6cdbcd006348769b2899aaf4eb28f4cbaf821dd8be828f-a\nZ:Q1+Re0kNd6KBWUuvNg0KSP0d5AN7w=\nR:abb128177be20849aec4d90b2283f2c9f5b1de37ed0554eb931e9096a85a7615-d\nZ:Q1IjJh5CH7gZjHgliJcpbOuzc/7bs=\nR:abbb74bcd466571c7642c3cc1c76770840bebc68b767d7c1890f3c5520ce1037-d\nZ:Q1/4T+9Ai3SSxXCG01tZXoxbiJFfc=\nR:abc348d600e1512f6485dce295df1aacf8b73edc4963a230d3173caf35ecdbff-d\nZ:Q1ZLSYHlRwg1618AbCsaVuB1DSYLo=\nR:abd687f912dafc76ebf0f262ce4716a0b7d4604583ce501a70692b99996d94be-d\nZ:Q1nyWChNIRnGpLezfoTZZL/xKanFk=\nR:abda6f32dba859ee56b7732608fb164135f16afc74518db91c8263660d1e4eab-d\nZ:Q1sIuhKD/FkHM8hR2su/XYg5CGXSw=\nR:abe6c87e3d8b7454685864694ca4ec040c61aad16cf665a270fb85f3a100adc1-d\nZ:Q1W7kMoXbS6bHn11W2VkYHQ1TwpZY=\nR:abebde6c1ec3e862c62484a7fa910da0445e4f3ddcaaa853c4c91f33b15fc2b7-a\nZ:Q1FSU3cEr6ptQWadBhznKikb7eoSI=\nF:root/.cache/go-build/ac\nR:ac22857ce0d3835eeb7d5b49fc09df7ad5a3bbd462e4f8474eae80a1143e9682-a\nZ:Q1TmHMD6I0UQYVUgEbltnBh77nbUM=\nR:ac4682b5f8ded114e81e7f3d71f463bb57a07b494118a8a8cc020dd2cdb7954a-a\nZ:Q1FASQ77MOmPU8Fn3rLY7Bfj28vPM=\nR:ac4dc35ba8a19d1ec8d291141d7ec9acca743e83e5132b8798ae5e3f4625f391-a\nZ:Q1cTJFt27ymWAnG8WWhEKHC0H2eTM=\nR:ac53400e32f99cf8b285be5007945c12a72ba5d973899a9ef8764d4051d65621-a\nZ:Q1REgmISTstrWIsAVSHOF4hITi34M=\nR:ac63f01abe03283f2e30a572e6a407c1897152d8dc0c3bfa38c5e846333319a9-a\nZ:Q16OPsiHyHve/fZawSXdpICy2rmqk=\nR:ac701655fb118813f7e82dd5157a744d644e82a6d22573215cc2abeb48fe3160-a\nZ:Q1uG0eJA5EMxvs1xYiE7oMr+RYQ2A=\nR:ac71b0ed24ef8e466f16d4548be385136972ed57c4149b611c8e2b5fb45a692b-d\nZ:Q183KanWnLi52kKM2OH+40MoTZwD8=\nR:ac78f37bb3d0fd50d8f3a975091f368602b1be91b6cf229cb4e9d211628cf7f0-d\nZ:Q1Ddd4D6tV2WtnmsET94BDmhzl1so=\nR:ac89e7e9d141792edb73c62ff8e3ab1c4de2bdac8789e884b4fe254beb96aece-a\nZ:Q14DB1pe5EZRatpMtWqEuy3q4J4Lg=\nR:aca54b0b6b44d0a3be92d69e664449e935f4720709d570a01f3fee7d1a4f58e3-a\nZ:Q1xdSrxEQAAJ4kCkbWIr/NXYhQJ3c=\nF:root/.cache/go-build/ad\nR:ad02d55a247830c50b254045591737264cf8d01ba009a2aa8abd2b598e747cef-a\nZ:Q1OMPjmbbgvAZbRcQfrdNvPxTbfEI=\nR:ad0b3825ca724b656ff6fd34710cd074d533f0135c373b111e2f80ef17de6af2-a\nZ:Q1oHbw0xk8v8HpEWjKuB75zwtl9fQ=\nR:ad0ecbc329977eb5fa93fd24bace5f860efd56df73011b2f7515926d4ee0f77c-d\nZ:Q1d0EBny0SNeBYqriiLf06jtWW4B8=\nR:ad1c85cc891f3a70c8360e873c13e70a5d209a5deaa4c38ffcef71da45036d75-d\nZ:Q1jVoJ1IL6bJoR92FwXkm8yr4jr2Y=\nR:ad38f6e2b28ea68354a7072d13501c3861b275a006433ac3ae5602997803feab-d\nZ:Q11jlRZt0E4+v6L5am0ifLgP+4rJ8=\nR:ad4f1d6bea8e9e0ff120be35942654539fded41f30283f3a3b01a44c827bddc1-a\nZ:Q1ZFtGL27PJwpphlleMCvhKWaLxlQ=\nR:ad5e6aab187050e7f787ee266aa7b5331df68c60b3b9ccb120f8eb922078105d-a\nZ:Q1XNWDq24vCb/Qj7z0uncmRaYbLL4=\nR:ad633e96ec4d99c4b3dfaf0c0be8c263645cf76dd6d75afb86618a0ccbbe92c2-d\nZ:Q1KK/IA3BPASQwk6SJm5X3ZZu42q8=\nR:ad7f5934a320f6c2c16b0c9d7dee9827ca230458d4a4ace4d680de332478aa48-d\nZ:Q1bhj2cxhOvNFP3Qri6Zm3xRvGiy8=\nR:ad9293ccaa497644edddb1d3893d2fb8d0839e5596e84f319530130dfce01c0e-d\nZ:Q1RGDVIiGM1NgitNPLfJXLyTfsdfA=\nR:ad9e08763270b8e4bac777cd069ef9e35a6483f8a42fe8569f40333de0ed987c-a\nZ:Q1qyQjnmIqrjR5zP+EvqsNnh/0ICA=\nR:ada2334148e29c380bc995aa70b269791740de1a4b75396f3d3d71dc6a468b10-d\nZ:Q16HyQe/0wisp5KiilniZM/h4UTwo=\nR:ada3f67c03f6789909af293d5dcae2d984b5b4a1de43d62021efca664bddb66e-a\nZ:Q1cCO/1/OBE5H8SF/Kk3K+VWoZ/to=\nR:adaae29197f1a0e8fec2137d9f1d7ef5643ed8003bcf50bc309a74965dce74e7-d\nZ:Q1oqPKJJF3xeRZX6htjo5mRsZAqTc=\nR:adbc6469128bfc9f3440eb86505241f44ada985e1ad44ae88ed056aba33b9c6f-a\nZ:Q1tH62pIfHz7ihEXq9MqULBi2ftvY=\nR:adc39f20e7cd769d8923919d92a4b2f41f3c7638e6a536ecde6400bc74097838-d\nZ:Q1B2ztDWcO46ooC9IlxrrFT6wjFfs=\nR:adc8de75471d2ddce7a778206f5131cf065914f86b31606a83f13a469338daae-a\nZ:Q1k+GMN0MSn4tTX3yJ97bZa55CtUU=\nR:adcf910cf9b7ac5b3cbe7fd2cdb1b49f0a5ad12ce9dbf9e1ee51d532808b8a72-a\nZ:Q1dsfDGKsV/zsS16VxDfoqUl5NycY=\nR:adda9cbe2246c1b631f426fbb0371ab82ce80d03e79560e4884c6e445a6a5df4-a\nZ:Q1Pg4KA9U4G2MaOX60r7w170A4Ql0=\nR:addf10a2adad1042e1690b181eee6fc32c94ac8d4e0e0b84ce7f1e0e568895fd-d\nZ:Q1LawJbtSseFNAPSkme4/WKM5eMeM=\nR:ade99f225f5bcf693676eff8bb6bb174b605b618ae9b3488471006925ffed42f-a\nZ:Q12k+OULloMSgZZ4mwLmaZH23PW2k=\nR:adea2eab8ad51085fd4d04c15ce428da9c593d268634a499e0f230712e48fc45-a\nZ:Q1hT6t6gS09aTBW3KeUmUAXnjcQO4=\nR:adf5f266ed0288274dbc9fcd86b9d1eb7cc14aaaae9d53f87944421a4cd5e577-d\nZ:Q1/xXMRmCp0jMIlSxthr0XptQUhEY=\nR:adfde4c86a5e8840c064552f4d7c6747fe8eeb0883a23604f94f3f06bac28034-a\nZ:Q1NIjAkP1tX/dI1K2/M3Q3AXwt1vA=\nF:root/.cache/go-build/ae\nR:ae3dd4da4111b58ae170bac670facf56ca52465fbd6ce4317e5f5ec6aeb5a808-a\nZ:Q1wSU52CY4D17LLOEAD2Rg9p+JOtU=\nR:ae66425bff2819799b70f2be29be6608e0d34580cd3625d10e2e8d7bc2f2164a-a\nZ:Q1Xs9uN8DySTFHJPEyIegUr6JKXpQ=\nR:ae775e3055227f7f35b74908f308bbd0b238d272e3a9ce00d1dfd9f9a360eabf-d\nZ:Q1M9g/4Hur2ek7m5nNEj4z6Tjw4jE=\nR:ae87eaf02b3f2cc9602c91030ea7bf8158e684fb15de0108622b6ffa79a9a712-a\nZ:Q1OIhN/U2b5uVZsrsH/ebSJVoEI0w=\nR:ae91300b41e5e6336587d2e15ea32b96847ee82bea2f8569811e87bc6a74b1d8-a\nZ:Q1JaarJMbtHglg5YOdTzLwwdjN40w=\nR:aea29f390efbaebbd79a5897396f8fa9070523535effb3d299582e26818bac17-a\nZ:Q1DNhtNE9ZBsaHRgp+5quwLO3c2Nc=\nR:aea73401f7700b43049ac433a7d3c8ea2f7a1eed4d72dcc06e78adabfd4b95e5-a\nZ:Q1z9QPkGrKFuB8EL+I4jrtlKyWcYI=\nR:aea8cdc3594860391ab5b19c800af1da9bd4e5c6b8621d8a23bb579e8359f935-d\nZ:Q1K/DMlSPc8M7yHFyuBr8JYNDf7b8=\nR:aedccb5fc19fc5cb6f020c2004e86595d6a2f9a3bac34ad15fd1d629179f9c2a-d\nZ:Q1YxIYYax55UFssNzkatGYgTnh3ps=\nR:aee12cb25e896e9084097023d9f2d1e536b6841e89a5dd0146201510211fca7c-a\nZ:Q1rHkvnQgs5uomko6uVoItIgllACA=\nR:aef8bd2704bb6f79a50535d6260beee6392d053a3aa68e402669a059ee816818-d\nZ:Q14RxPL1lgQnS0jr7GyKBBP11SlLI=\nR:aefb870d6598f6fb16a027465045a136ecaaa5b3a83ee7fc50a73e3b0bf5ff8f-a\nZ:Q138xhIRKjm723KfJXXdQCPkdC4pQ=\nF:root/.cache/go-build/af\nR:af07e1b7828304b651ad7544799c89e56cae876fb3737e8d0f3949de32c7d2fe-a\nZ:Q1L0LD89Cj35cwitJkYtVUqcbkRSo=\nR:af15caff80dfbde177f21ef3e2114334f16cbf2ed357cfa6b5540eda2202791b-a\nZ:Q1hOFH42JrOSzycpf+QTXvRirChT0=\nR:af2561e8e7d9d0edb239dee37f6f713384b28f3da13de114a830d838ecad0f7a-a\nZ:Q1uxpfBxdZEnugbGMU7umzJs/mhx0=\nR:af3404421d7dc4d152b29782ddbc448de7637e06849bd5cce7980c095f505042-a\nZ:Q1pvnTySt3HB6CKOec/UJgzdMK4UI=\nR:af4e6a232f8bcd57dfcf94ab45e229007198dd7ccb6ca86b44bf2bcab5a4d819-a\nZ:Q1xdKXfXwMsNX6ZmtXtvMqRypsO8A=\nR:af52acc50b05b4537a78b73ab9983c4cf26c62db3e6b06ef9cc712077b7843a5-a\nZ:Q1TLPOJx7iaaKG/9aHymMDExxD6S4=\nR:af6b0001b67252f35baffcfe5745e2c36ca9627606fab73ea5141905e1ba4cb6-d\nZ:Q1JnwKSLbJIT6jPWb1DLJssdZKVBw=\nR:af847b5a1682826d9fcce9e95b135cd326b06d811f07c5dc407a67b5eac54272-a\nZ:Q1TdnENCftm99pAUlPo8IxYDoZ1Nw=\nR:af89f9b7a7207aea8e1bddfba0f436806c062807e8320d8da30d982e616dd243-d\nZ:Q1yuGriFWpAlwFeAowQFGHwaDf5WQ=\nR:afa4954892d522e831c1610958012df556f0a19443bc288f78b815694bddcab2-a\nZ:Q19s8HOeUlFkDbcoK2NK7+1kqNtq8=\nR:afb6add5fb81333c88a20e981763e9d86bcac1d8fcf92d4e0e5c7aefe8dc43e6-d\nZ:Q1H+QQNqtgaEjgfP2OY5U7eiqrokA=\nR:afc64fadb8a868e3ed57db735719863accee23aed60e174b38ef3d0355a3243a-a\nZ:Q1XvCvf5h2IBB4fgo4zx93zyqeuDw=\nR:afcfd5eb31f24c39017b2e46dd7d2723a49326ed32001b6927dcf930feb44cfd-d\nZ:Q1MNpHlM07hH7ZKBn53z3eqgP2E+Q=\nR:afe1e2c1ed05305e9424bf18ee79935454d1d08b6ad515a20da8162cbb9e55e9-d\nZ:Q16ACaaeWVvi5HOI2CRbwDnWyfIm8=\nR:afe685683a36c66bc24798290c6343110916b07a50512216c9da10f89fa35777-a\nZ:Q1E0cyDmDCtc+9HXHIzWisuPOeP80=\nR:afeed80d98c49b7c43a05b3acd425026b771ae46673303aa29c01c88c1b9d053-a\nZ:Q1BwR5m2kL9g72oQc4vIIUFllDdiI=\nR:aff9eb1c83f62a489398e3b7b9cf0b9d1c34264e18e02a3905d94fe0056577a9-a\nZ:Q1f+U1I2R7M4DXI6cg2WOPnhiYiD0=\nR:affadb5e2b4332af6f57d46a2f58dd4d166102fc397db78cf8568f7f1788e8fd-a\nZ:Q1H/qwvVGoj7ISHcTokYHxRHzm9+E=\nF:root/.cache/go-build/b0\nR:b0044df5b274598603f3aa429ff33016d67c2c99d3aa7a9589d28cd0e2098be7-d\nZ:Q1Av7eFpqQl2kf4/vgf6bz1oJ6U8k=\nR:b00660a18b1b4775b25ea1132ee229ec955121f3c4f0539d257a95178829a990-a\nZ:Q1ti2suOmHzpfiXgWwvn47eTurX1A=\nR:b0172bad55eaa04c126c5e6f4577dddb3305fe54970b47e6a515b64f954fb5f5-d\nZ:Q1J2sOGXEb/zAAFEhCyho0Zk6N3rk=\nR:b02a0df74f740ce8b4f8bfbc10000d4cb93f6b484a037d23931443c85f39a2a6-d\nZ:Q1xoM7gc4MBK3Z2jc1Q8hf7OajFEQ=\nR:b040676c3bf44fbcddb2a7d2e404ac875001dbd4761f32f208db2ebc0cdb0afb-a\nZ:Q1U9yA6nBxW7r5s2LK8q3eLH3Wz9c=\nR:b04fd22920d151d753ae73068a28c48c389980519dc340bd7b41ef9a9c9bda80-a\nZ:Q1LV0cV37fULQJ2JUiOIJipZPgB+I=\nR:b05032f49f7ae5856af2670c7de1a7dba773f43876b185729231fa6261fed9bf-a\nZ:Q1TvXiHgVtm7uzaMGIsSxozYkPTWw=\nR:b055aef42fb09628ead0cd2ed9ca5c571a347f978431a0592e431baa4ce068c1-a\nZ:Q1J/wlzAb83RgZCMmWWnjl7vPLmhE=\nR:b05abfcdb9e8dce5b88fdd1288af6db864991e391ad3441dd8a9caadaf9e29a4-a\nZ:Q193TJKb/w0vclnd18pTeN5rc+EVo=\nR:b0768e74b948c515ab04c5f37ed9662cb41a5c359929612fbef8623c0e2c94ef-d\nZ:Q1xsvsjC/l20nz9IR7WgzLvK+2bkE=\nR:b0807d5638207fa98566ee6e3905af41c6292267fdfed4394dcd9ad54e8bd3a8-d\nZ:Q1jcU4Jos4wk6TqmdGUEbTDrFUX3M=\nR:b0932f5223804df95d4207583e4a55230eeea9be7a18e0591ea3ef52b71d0370-a\nZ:Q1JlPqefnlfjRgiP9s5BBU9J/Q+GE=\nR:b0ae6ead875cc1261461b823ebf4352bf0bcf46ce2d155a4b7a09049b6c85b75-a\nZ:Q1aAc5Bh42ag8O3mdV/60NtBpHRk0=\nR:b0b6b73398f32f629ca19f90c6ecb9b036e60460231d61714344c8c01f465148-a\nZ:Q1WeQTO3EBd/5R+YsKPCO+L9gNtBw=\nR:b0b718036825760189605e4df8b9dff5ca7e8bfc780b82fde4f996053a0e0505-d\nZ:Q1+Ubya8vrqV1nNGU2+n5jRkq//04=\nR:b0c29743aef5211ebd32bebc64bf49cc2885c87593e9c1683c9a42d3c40e894f-d\nZ:Q160z7kXxsxqJi30b3GSWwKpiLjU4=\nR:b0cbe1ef8991424dc11617b52f7e240edcc7d1c906a4ac091fcf5530534e9fe7-d\nZ:Q1xjiOvJd7gSIsZ4Rbpqzgwf3Fqt4=\nR:b0e18958f08cfc4cbb9e6ca6f59a794f9eafc7794b0ee3472da959d6ae6c23fd-a\nZ:Q1+9O4fUUvI3YJRecL8VuJARLmIyI=\nR:b0f8382b6951d10aacc2957513058402d58aeaad38818046508f88bc95df0e45-a\nZ:Q1EUSoYDWdbrcnq3iyB8QjK9LS0A8=\nF:root/.cache/go-build/b1\nR:b129a24c26b21f551bc8b97e25d6f43d7156af0df6c57260288bddfdc7e64ab8-d\nZ:Q1s3uXxppmOUFgTSjue/TtRcnFBrc=\nR:b12a717c70d9864ff90e1faf75c23f8fa77660b9b10a77f0565f37782a410f10-d\nZ:Q1MKn+K7oEQOLhiLEm82tushCMNWk=\nR:b1437705b6792cb4e09d47a28c00f4630c646bdd8b043e75e9fb47294dc032f1-d\nZ:Q1Oh39hoHEJkmwdIOdwOGFh6jhYiA=\nR:b147d17ce88fded868d23e2b32fdd7516664c433cd2719d31b98b2ebe40f4b5b-a\nZ:Q1RsIET16IExSOPtbQO2BoOHrEQIo=\nR:b14add38afe5443728734f344d79f2020ee346d9aff00bebc7ccc13be406f47e-d\nZ:Q1sJwemZvUHW2F+AGD+lxP67TjQ00=\nR:b152305213d38c677088c54cca58c43136b6db32d1ed6f79986078eb64806dca-d\nZ:Q1QbT+ZNfLvukh8uQazGf18ZX1ECw=\nR:b1577ce4580414dc50efe50749c4a8714aee832b9561d1385ee0155114153be9-a\nZ:Q1fyg30u2rTAi2EKySAKlYPk3ToC4=\nR:b15cf2b301a85081c7aa6ea304b594c8422ae59ade3fae18fc2283ac2018ecb8-a\nZ:Q1Y8MmO1773cebZo+VcSDJqkGMDJM=\nR:b185dd6c9f7434bdc0e625d0e9ad8ab8483670295492fd730eb487d137482260-a\nZ:Q17byj3ds4QHYaMETqIkXTSI83jR8=\nR:b18f85279142fcc3f6a828319f05c30d283f4fa88dd6b296fac036fe5fb75179-d\nZ:Q17FisUO1c8mt5gvhWPGOIxqnKVeY=\nR:b198c57fc35b1bb841034a322fb908796fce14c199b7034e871db883ee570f3d-d\nZ:Q1w2/QIMTALRYtxHwuXiEGkh5Z+QI=\nR:b1ac90d1494e2424612281d0e51fb370c4fefc0768f85cf84ff25ebc996a1ef0-a\nZ:Q1m15ILX+XnTsKLtmIqvvjCKKFijY=\nR:b1d5c633f61b5f309ec5ee394995da995efeb185d3c59cd7f79de5d4ff08e2d3-a\nZ:Q1jO5PLLqryIPJlq5c9uuyaNFY7kM=\nR:b1df6e91f8f596f9991090270d10e23fd6905a9a42b711daa404b7f954a5a6b1-d\nZ:Q1qt9fav3EC6a+35rwRnZLXOqD/H8=\nR:b1edd2599b2116f3c2a85576acfcfd6b172dd7557f6014b36b2198d2c8036720-d\nZ:Q18F7EwinSxO/kLCA4BEK9APe/K+g=\nR:b1fdf6ce95bfd9c3e1c804c61695152db24ac3f62779dd0b2e5ffe2207e8335e-a\nZ:Q10fxv+54nGIAVTQ7T4B8G5PG/+oY=\nF:root/.cache/go-build/b2\nR:b226642899d62c708efa23711bdeb2883f1e7fe472e63ce2069fa7605faa4716-a\nZ:Q12Ck6H4J+PAHcb8hXwOcqyyzpqFg=\nR:b23ec46cc3b06f4a603065c1c540ab5d4f2da16bf08fdc4462907f797adcfa9e-a\nZ:Q1hBXCZffuDV39dkqAufP8AmNXdnE=\nR:b2537ad68314e1aec378ab0ed013189e7929be72f59c3fb2fb1362b23021ace4-d\nZ:Q1N2g5lGHUznwGIe3I3Acce6KfQpE=\nR:b26201d57f810591d5e264e612e697979cd26047ea03c373655aa95d6fe0e511-d\nZ:Q1IdnRK8fxR94/kkOwAzuGHdoZqmA=\nR:b27d4be61596823ed89db826966abf73a99e31d236fd50dd3de34e8e1495fe11-a\nZ:Q1IBNSKjV2mFeY/uQN3IdLz1iFqxA=\nR:b2810aaa472f86307c6d88ef917d9ef2732084937f6c4d43855d72af437b211d-d\nZ:Q1/HTp5IbjSMzi8ehtWtWINmtIKYg=\nR:b2d9642f0cf9cf70c7d799017838618ce992ccfd831794c6fad23bf331032423-a\nZ:Q1fuc7JGlBuCDbsG1qdWZgH1mnRiA=\nR:b2f7a9a5b58783adb8b8a509f9748ee7a61af57be4e0ec264be5cccf4405a664-d\nZ:Q1rGVII6tiGH3+Ax4cN/cGCHMeKtE=\nF:root/.cache/go-build/b3\nR:b3012dd8963f03851c31c3caa3736672c6d2c91c18a3013bda961d8124518017-a\nZ:Q1LY8XKkszPqMGr+8m5mdxytgyCZY=\nR:b3162b62c634b45c68fe42729279dfdbd171f5c94acc5756f607eae4cc372602-d\nZ:Q1iIfx1kCy09HF31x8dDAPP0EdPDM=\nR:b31de0814bb574381337103c8e4aea010334ec990879f5633ff1f58511f2cd11-a\nZ:Q1CkTRQ3cQHHlukclmlPF2LadwySM=\nR:b3205e3acacc8edd275549a7b74e5fa14193fa1de7b37c9a7d0380538ef07036-a\nZ:Q1wmyvbW7AbC5Y/KZ1z2MkdspHSas=\nR:b326fe5c83c8e73245f0281d66a12307c2719d157a436199beb0ba7293d4a15c-d\nZ:Q1UsFHc6MSFfyYgSkxCSV4udh51sg=\nR:b35be10253658800726979ce8323dbe9b715251510bec1891437a07c04848cfb-a\nZ:Q1sO27JGH2G/qkmv4/74FMK0JgBUI=\nR:b36e67b63225ca649777cefffad2b4a52ad5d654958ce58eecdfc2d0d98abadb-d\nZ:Q1upDXQ295/9SkyxI5lhP/YRYAlrQ=\nR:b37291dd11b7950aeae0a43bdcc0db5400d859964ca46eaa47976763400fb689-a\nZ:Q1QjsgLnpkIXrPIbc2ueAAwR6pnXM=\nR:b37592f01777c627766b34df26283c85f00fce462a30a10bc215668b525641c8-a\nZ:Q1QmuxK7/BgGsaquTJfxhRMA+pP9c=\nR:b378dbf06ae7a715039342671c9553cabf2feed10b636a5886aefc44e082f590-a\nZ:Q1gGDtmUaVi/YuVyVtBB36+2/O2dw=\nR:b39b38e14940d3c722e11eddb25e2d9a32126a0279af239d992252733b05ec05-a\nZ:Q1urxer/Ra6n77BOBWB0eB7GsCvdk=\nR:b3a98bdcd8134774015a63b695c9ec57d9944d6a10de4bf495446ce822ee8878-a\nZ:Q1F5SxdAGnLmzVAZd6kO4SwtB2PK8=\nR:b3bb83df71861d83917bc06f56b6c79b7df2be886287d5e6a8db771a50352480-a\nZ:Q1lOl22/BEFzUYByTur1MQrhMR3EI=\nR:b3e61b5a45785a74ec8872fe7e2b362f628ced017486522de2b94295d4005dc6-d\nZ:Q1x0zy5CkqtNUnQWOJjtqm5giqsAc=\nR:b3e64026890ab3e6ff9cbe3787cd239da5deb39686a4ad35b3f2108ae8abd94c-d\nZ:Q1Vn1EF1hfWotSTse7CqLz95jUX1A=\nR:b3e6841a482d5684127b834ff9263c47c0fdce408816e0fa541fec2149a924be-d\nZ:Q1xfeJSI1I5yne7rsE8RoTeMPQNIU=\nR:b3e8340a5b7691f1cfb52d4e41e46a34df3f4d149419c9687b8e0ba23d4d5ffd-a\nZ:Q1OWaPJ1s1gfkWXMmz4ZQdekDegwk=\nR:b3e86f8ab94501569e8199d2b32914c2e2e8a930fba8799a5b42bf0f45063573-a\nZ:Q1npS1Ps9UaGQl6yrlGjc3eBCmGvY=\nF:root/.cache/go-build/b4\nR:b40ad58280c964e7c82a10bd4c68dd680b77d33ad86f0262abc102969c65e613-d\nZ:Q1XIv3/P3qFmiMuRQtmMbHf5LKA2s=\nR:b431b908b7a416a4a5b694a25645dcb3ac9046f115c5e9f5b88e5fca5264b4b9-d\nZ:Q14ncrICe6zYSnUwSKRfkNb5a5OGY=\nR:b43619ed479994ff39b46b148c3ad6f10e8fd9c1c7fe54141286127a72610a4a-d\nZ:Q1WDWMH0jPOcOPt21h56qpjUBp+iE=\nR:b43e3dc296c3af233ffaaab5e8df588d6904e3f21721d6ebfb178f88db554dd4-a\nZ:Q1k9ZoLfGOgRWRFDb47N9bfO2aMRY=\nR:b44e03d0f622aa22c64fcb3b27e69f9bddd166f5309877687b0bbf2e591bab98-a\nZ:Q1TPzMMAqKYmsntRDoTxzD+nHs6Eg=\nR:b4515084c78269406f782f03580c1f147772cd33d92f0f084d01e74a57648dc6-a\nZ:Q16caW9fKKgnT312jqD93f2jG6jqg=\nR:b45fadef40fc3e2f0c0d60dba1a67656b954b0900ca139be442178b6b7bd7899-d\nZ:Q1iCAX4Kk1NBuu6OZzFscqMC2h+FA=\nR:b47b0bd9c413bc50a0cee90c44330c01cba4617bf07c7ab688d27a3e745da4f5-d\nZ:Q1eNJKe4v/GyGUQZDvMCCcGOYiy5Y=\nR:b48741b8a15ceff088cd60a5c707ef3e374bb7f012069cc28576ed274969a53e-d\nZ:Q1hig63h5MrNQJijzcPuorbnYedik=\nR:b49e2f6edb9c1f524d280ff26f43acae357140fb67639fcf00ee2d5d225860f2-d\nZ:Q1zcMR/XwrajjbT+qY+oKR3t81eqw=\nR:b4c598dcb1628ae10607f0e884030309ce63222cf8e466d2fd6934b606d1ed37-a\nZ:Q1rhl5dd/h7lmdU6vj0L6Q5iS/wWk=\nR:b4f07cd8a0757cae0bc39355ea08c3674801eadcc225b1afdeed0f4dd7e92f82-d\nZ:Q1lARN0F/7YIaWsvVeYvLcIXxmSM8=\nR:b4f7aaba0512808ebbf88e88571a1b617334b626a7067a184f17eccab5950036-a\nZ:Q1J1JgwLJdb1HsLGLGHO/MIyDiXxY=\nF:root/.cache/go-build/b5\nR:b50ea35f82b6347d3bb93313b616dbaabeccecf17b3a534915c1a2c8b7b5246f-a\nZ:Q1Zo+DKu327PCWUAoZPsEtVeYJnj4=\nR:b519e018a67ac1ee5c1af57f252d3c233bfca1cefd4bc7e8958ff04bf836d250-a\nZ:Q14J05DtlCNiCBPQLoxHFMF1B4XpQ=\nR:b51d11d50b089d55a16d73cb3b733e125ddca56b6b4e81faac56aa107ac31fd8-d\nZ:Q1uV0Y2HArGN3x2ILpNggJhfhUzeY=\nR:b52fe22e146119ba61bb010d3605bc48cc368e8d14c387e873bf7de659cdb7f4-d\nZ:Q1GodbbDR4CfE0BoNpOE7IKZkzM9o=\nR:b536d399ec89b1dac8bc807542c8452aee4d7342cfc41bbd95804b57f997ec70-a\nZ:Q1Jn/+oGIBrD3wzN7Wi3GkM4kFxdA=\nR:b53711975376f56418f44b0be97a6f66ebfa7664874e47dbbc0894b64f9e89fc-a\nZ:Q1PP5GfYOdsjap6DkYUPKYWhAJALA=\nR:b55c7e148785c9412e2ef774895985d100933dc2e5aced062889c5a6607cc50c-a\nZ:Q12p2QMeV9YafoxNHlCpOYxj3XOhc=\nR:b562356d04e0938cac8080413364af5db3c63bb3f83d540d192483566b167cef-a\nZ:Q1+kk2RTi0mcEUJQWR/maaWn96YNg=\nR:b57600f82b1959ac1e8519c4207988776fb0bca71ec042add01d916a02a9abe1-a\nZ:Q1IVNU9C2lCVdtNz/CBNfpdweloXo=\nR:b57aa616226c2c8a651965e17ce488f023097bb9b57dbe2794d7476b1afe0244-d\nZ:Q1iq8gV0NjGCupnmM7MxVIf1YpogU=\nR:b58f3d681df188326bc5875dfafdbc95621f6e5cb712f28beab61005402b0d9c-d\nZ:Q1I6Du5C+9uFQw+kYYj9S9qfm3BG4=\nR:b58f643e4738c4092340424e241a206fcc7d193cc6825dde7880f07fa15e4a5f-d\nZ:Q1lKRiObfvbdkDeAUiSpRkFB9Kz70=\nR:b592592b409282a99dfb97a76058ea2c8337af0cdf1ed1e776cfaec176c35ea9-a\nZ:Q1jfA9+xMFvD2RPmeT3HCR/VwcHZA=\nR:b5b3a3a470f7e9c90d51bd4cb3411ae60b189445b6318be9bd3213d10c672571-a\nZ:Q1o2nM7j8CDrOAc492i/h8o40GB6w=\nR:b5c6b841207fb80b7e02959cdcda079a0f2f367475ebcfc738e8af6fb7218b1e-a\nZ:Q12xsrmfK2sb5ls4aGBWCGb/Lq8CU=\nR:b5deaf1f455a9e6ce6bf497e72a586b939ce9d52ebdbc6db04602d5eedc99d00-a\nZ:Q1ecOYji6qF6CKmw3OxztEhNQiuZ0=\nR:b5e9bc0fadc4e0aa6a0c43ef1a314b9b70febcf35e5053423ce78bcbcc7e19e7-a\nZ:Q1Gh8M0um/qJVY+x6bqn2ikV430vI=\nR:b5ecc1cd7d64436964ff951432beb6e7a91e544a3aeaf9cccd246b092a43dc04-a\nZ:Q1F92piJxuyTr89LG/OLDEsuXkiGo=\nR:b5fce35291ba967417e05dbf0688bdd92073fb154cc5494e4b7215dac96aaf36-d\nZ:Q1nte6NO8y1KA8ibhboOkZNXbvTco=\nF:root/.cache/go-build/b6\nR:b621d0ec71cf8ad6cedbf5c7f282f6fb3745137d4027055ea7eea3a25da1610e-a\nZ:Q1NfahhPN2FCw0/k33s/cI+sjMkmw=\nR:b6262ba6856833b28709242fb87cbbd2f21b985ded0dc999066400bbd9059533-d\nZ:Q1KcYT2fUJ8A+EWh7ktfvmqBekhVk=\nR:b639f6d30467d33613b41faea08a050a6800e4b5fb0045539c549495e8b08952-d\nZ:Q15RTzXUbb04xSmzlpDWh0Fo7fxME=\nR:b6416ac1871fdeaf17352639352e566cf690b47712efd60a94d3f7562dab0b0c-d\nZ:Q1QlWwKhk6moHPtwKtBu1YPxsPB4o=\nR:b64962404629ae4f61b1ba941dc7dc1cee7fb85a14b742cc4150c8953731401e-d\nZ:Q1mfGDrN0sqnzFbIUeqSrtTEzzI/g=\nR:b65407b3c4abe24b6a2d843307b721c35e54e8abc289e72ef14395207d316348-a\nZ:Q1qULMDLW5cqnH4BWv+muvSWqUIU4=\nR:b65cea3968ebcd7d89801d156e92c052c7d82f36bfcdffbd11a3b09f694d597a-a\nZ:Q1hEMIWKzcw14ocmFf1gkDhD4rppM=\nR:b65f47ac3ab09b65e0de5702c8fa4cf468a6e991adfa97b9b21f4e7df4b039a7-d\nZ:Q1hi93bVcvwZbwR54TxRVmuKHuzLo=\nR:b67c16c68fee9823326e9e44b0ed38366bd47a9f72d596638a940ad3ce986cb4-d\nZ:Q12eoO3lCBWIOGWaHylTuvBOLvP9s=\nR:b6831dd2a7a4fe250c597f537838d22a1b5341650da9364343bdff6d6066aa26-a\nZ:Q1OIGBE4wLWM6GTGIJSfB7Weqx+8Y=\nR:b6a21a95a0c266a6d8e84e89cfe48ae6b3559096f4a52cf8d59b0d1d90710ec9-a\nZ:Q19ojwdFo/ffD18Vcb6JVmcnGFT5Q=\nR:b6a2439adee9cd5553f5d62ba607cdbbbfea45b5394bdb89b20678baea16186e-d\nZ:Q1NQZzSqjVdvhTBFs5zf5e2nOF7ho=\nR:b6a3e505bfda8a038cfd40b51d909c9aa94add1c120c51d28fdf6f77e4f72711-a\nZ:Q1zfniguv1f7Bofa8bX1Qfhl9eKmM=\nR:b6c8e25b80916a74ca9138d7d14891217263d7fbf1b1c288fe1d04fb44d8619a-d\nZ:Q1w+I+9yjmjjoGpu37RdLpDzkKtEA=\nR:b6e0b05edbfdaf9599daaef1aef5edeba4459f203ff630f4a8150ec9b186f8e0-d\nZ:Q1mkCv1wfldUwCK1OX+mFyRLBZKQI=\nF:root/.cache/go-build/b7\nR:b706dd02f76797eb17e312ee59131cd3cab72e3f7dcf968eb8ad1da153df5743-d\nZ:Q1Pa4gwLlw6yxOcDE+6x8tUWdu6OM=\nR:b70b67174f8ce2be5774ec1d9dfbb89abafd1f89e5172de36529ce3d40f61eab-d\nZ:Q1N7fYSbKczNNWn5MP+dFQfdYtC/w=\nR:b7129df5d5c158698178791377d662b1e11a81cf11f53cd61f42cfad1a0e7766-a\nZ:Q1ZCV9GfZJYY4gw4RR9asdlOTU0as=\nR:b7185acf616f0f0170dfc7212b96c966c4fe96f02129a69d6fa7baedf4b0cac7-d\nZ:Q11EhWHmZ6oMvdiJ6qEt4Eg7ViKQQ=\nR:b7262269e51b8337dca9a46594299d45b26ce2a64b9a93c150bd2c59060e0454-a\nZ:Q1dCZWi9xPgBEk9FnTMnV8SzwfpJ8=\nR:b7561fb3fe2efdbcec0d7db1bc4a558a9e98a2f44391d8ca9a5944980b223d67-d\nZ:Q1aFRbbzZfS96ZtmIvirKUv8g6wQw=\nR:b7616623a2e7897eeab73bc9b8e2f68f9c6fda566f8612c11122b13907cc6d60-d\nZ:Q1s76c//8njmDQI+sZrlq4SIeF3ew=\nR:b7a88be337e74e2d2a920b60352d45e9d339445d18d71e7e3cfe6cbbf050171f-d\nZ:Q1vSaSOlD7Q6ObEwvXcxh6kpxENog=\nR:b7ac67597606deba73069535a0a89a3716102b0525c44b14c7d93cf1153dd782-d\nZ:Q1JSEjj5n7FY3aQV2wl8jGuCSoZhc=\nR:b7ac76325d3db9fa68944d386b9687ef2311c828b770e564865f72e42fcea163-d\nZ:Q1Fx8W7hIJW/Z/XSwnJYWoUOR3vxo=\nR:b7e4a112ba1b813e0c34a5aa7c022aee2ccd68706a0a95ee5949e88c844e04c1-d\nZ:Q1bPHWRdPboQWIdS7wGhL8WsaeQXM=\nR:b7fc805441ec2a031878fd436664edd97756e4ff813962fb8e3199ce9b11787e-a\nZ:Q18E37ufLT+7LmRstRMekSi7WVlhw=\nF:root/.cache/go-build/b8\nR:b80dc28732b44b02dffec5dbbc9319f11ad223bed849f6e68905d9a76c75a819-d\nZ:Q1PR3x02h5Vlko4fM9DTJCW5sRmnU=\nR:b816f0fb19b2f39cd7c68a330527c1aa876ef641da6c043d581934558f6efde4-a\nZ:Q1shkciJO8KqsjjAQXM6oL/5+tVuA=\nR:b8489ca5ce0cf1b2a2c648d2249bb6dc0cbfc035874390af527e4c52fcf15e72-a\nZ:Q1R45KznNs8isFfjRuhyJRPgbPKcA=\nR:b849d701e13ddf1613e8dd0191301bd4e2222a0d2a1610ac475d6d7bdc5fbbde-d\nZ:Q1Bf9ZwoD45afRdKAWsPMW1vRcDDg=\nR:b85d8f6fdfa696ef01032f668169a25811af2e13a651ec87dbe7c8ebea78ebeb-a\nZ:Q1ddL3nWmqTMqG2WD0JkY5OTuxhA4=\nR:b86e865f3c07c7ac7d37b88cddcef9241bb043a3b3dd07f16617e347ff13d5d9-d\nZ:Q1a5pmuFOhM5hHgHOzU1xidj1jtKE=\nR:b881ea09151a09f5333665d65f9671d4a1d1954df02f3829a8bd530944385e07-a\nZ:Q1EPTnB4YbQjpp8YGiXAWV28YwXc0=\nR:b8934e11e633b3fd4619d5685b4526baeb37080d62720680cd4d939af418ebeb-d\nZ:Q1Pk+pMrxwikh22LQeoTKwAYrIgzo=\nR:b89b8da7b24f07b9fb36ee0b328a8afdb6ed058bfc06e466595e0cd178102fda-a\nZ:Q1AhagMsOw/mBAebp4pXm8dfykMJI=\nR:b8a31561294fb6f7e8ef024f3339e7191ee53f76dac0ee86cf3ebbe24f9d8467-a\nZ:Q1wezwr7jN48+4cBFK/W778Cq5Xx8=\nR:b8bcb4822f737e8becf2206f37e0c09dba7a3ca42a6fad2be3b21fe981426d6c-d\nZ:Q1YEmALnAQhx1uOh4yMC4/DqF3hmo=\nR:b8cbda93637f46d40c90cbe07be5dc30e259db2ffa5f359d2034650278b960fa-a\nZ:Q1qGJe0a61t1oDYIU3+1jwqeI9x+k=\nR:b8dc0e507cb6822fff0580940b02975df2807d55d9caf0bc3e3b1912c034bac1-a\nZ:Q1fvbdATeu2xDhe9Rwzsy8uEoWYmI=\nR:b8f4aec8df2b89176cea60862ba62327ca06150fa982ac707583b87321f6ecac-d\nZ:Q103I3G2WHmBZzqDeylg9E4w5NFT4=\nF:root/.cache/go-build/b9\nR:b91893734eaf290d5fc768ca647049d4114118fc1090ea34fabf630a8d1ec6cf-d\nZ:Q1aal2QvTAO3cR/VnslSxUEXeuqTI=\nR:b92086bc9f38aee583065d6ef9432d78f879ff40ca1d380c38ab757ec3bd6d8a-d\nZ:Q1mSkeQ4rC2zRRffN6AleIBinqwVQ=\nR:b92a1dbe66ed9dc596dca7eef6e209c5ea3baa9e31119940baaacb00dbb487cb-a\nZ:Q1WxBf1qcL/b1dzJS9CUPP3SIYiBo=\nR:b9343eb2fa6648ac124e5d485bd293e270fe23ee56c70ed5170d1b16125a375a-d\nZ:Q1gfSN6fJbNVCVwNIKvaxBDEN4t1w=\nR:b939fb15a064d843b26b76f25d2d4c6a9f16fdef4915bb9d05f4a2c657eaa135-d\nZ:Q1QKkrW1p5auPv7XEtRSS51PKyEac=\nR:b93c7c8446fcae6cec014b406dab273ce713164f2707e1b54283337a063aca1d-a\nZ:Q1RmM2kqDBeCxkVsIsnM1SIvanrV8=\nR:b964c8641a5d635fd66b1fca3cca4d1386282d471e75a66215e0ca2906dff25b-d\nZ:Q1akwN3rO7ZZ/6OR6AItvDe5SMDRA=\nR:b968eaf098c25c84a5bfbb0a0eb518ade81e61d199211cea676b04cd5bb79979-a\nZ:Q1MJCF63I+No7FJHmUhggV8ce4VCU=\nR:b97c549831a0ba626c534292943bded9604d5e211a9677e1739ba0cfe41380f0-a\nZ:Q1GxM7K4Tbi/G65+w9GqgqLhzYhYY=\nR:b9821bde91a98e952f1428bd2860202e7c43d41ddd60d9bf4cdeb9e9c63e6fef-a\nZ:Q1xqBPbQgwZeY6Uv8/ccWsmApUUNM=\nR:b99d43fd7395c916d65bdfad579cd0e90ff1dd0b397843d40b9ef3ee94106431-d\nZ:Q1Qd32mOp7KCmWxKlBmonUUEJbcQI=\nR:b9ccbc1d9c1c630e98898f2a795a303f51b2973c7a482ca0f22c1ce1a8fbf2fe-d\nZ:Q122ywWRpk+efmJP5bGG7xOA5peH0=\nR:b9e07f865675b9ab978bac6a3f61aa3114df6e032bfccd4abd849259ec5d3dba-d\nZ:Q1ebTsTE7peLBKOKe6I0woBb1hb24=\nF:root/.cache/go-build/ba\nR:ba07c9393c75d2c25a05894788f4d5ac7d3f8db257412b6efc7eb37503e2cd9c-a\nZ:Q19o4Uyh6YLl1oCgnjfNKe1zoBESQ=\nR:ba0ad43203c08923537da56535ced613266820ce3ddb25321c3b0955808f5e78-d\nZ:Q1w4Y2Iy1k65K6mhvIxTCyhLHMUu4=\nR:ba18ac6788ea9258fb0d6fbfbfd18f774f86d523130df9903996e870b1b3e8f0-d\nZ:Q1ku+lIQyH84O5kI0QevaL0HRGhvA=\nR:ba2f10476fa6ab02f45994367cc05280e0c5595624e18459c5db213a6efd03b9-a\nZ:Q1AUghjShlim4ySy3BVnQLT/5+OgQ=\nR:ba5a59a7b10bc66635861fca1b978c3a34a90018da9849f3324524199ba0eb35-d\nZ:Q1BAjKL/Qvss/Z1jNGoTH1oyzMErU=\nR:ba5c009cdcddb9cd53fdcef2ce7f49b7367184e1eb2ae863ca3b53b0e692506e-a\nZ:Q1bx3KQ2GRZskm52dzFktP+jCsP/U=\nR:ba8680ff480a3bafcc2ca5317bdaf165b02fec667c4963d1ba67533117150611-d\nZ:Q1XBbjiOE7V3NIOgzOB6vrTt0InUA=\nR:ba95b7580c05e2dc646e3159facca554c32fd5a324395f6a752176404ae57543-a\nZ:Q1SQODZ8BkLbyrJby6ChjDgCYlqG4=\nR:baa2511977a2696f885eeb72e598de549cb7c79e803f7626b9d0bedb2a77882c-a\nZ:Q1RLGjECYL+l0wFY0BotniI9j8pH4=\nR:bab4087b54c9171f5436a0715c1aebcf4a7e1fc265f10bd4d5ad209d98f4c0f4-d\nZ:Q1EKKTT0XJPkrdXIDu1NjZZhN76d8=\nR:bac9f13aa2892dd9d1448ebeb7aadf55352213295f4676f9be0eb127ae0ffbd5-a\nZ:Q1kYQtj0rT/LHLsZg9VMrzyi50I/U=\nR:baced37d121989aef601de072c14e5817b6607074de673b8e758174b7f408a12-a\nZ:Q1SwtvVdc+NRGUxof4rQreYE6watM=\nR:bad21410e8975f6c8189f13f425bfc9a03834650325fc862e75e22744540e90f-a\nZ:Q1G6NQD5KewtRiD4eg4fyHzjd+ZtY=\nR:bad32d445d5cbca018dacfa3c333a54caa29eee42548413266169afe5010f629-a\nZ:Q1RrOBWwAKSRap+fQRIVxFWKpQoZg=\nR:bad3e698a4701f6482aee5ac8ce02b72d958475227ac5c5eceb9ff76f63c7351-d\nZ:Q1gLrzrhaHAa70sDK/7dxnrr2kjfA=\nR:baf21feccfce95e24d76a190795286c295570a471f1c983bc04ae8f933c05273-a\nZ:Q1kGL0TsWb6GAaWeT51eY2db3xMXk=\nR:baf5f844ab82c0e397e24683f1a3c61e8c882163f182f2a8a2c82a2c66b2c377-a\nZ:Q1j0YrH9wASXAqee/8/cTdvHlUl3c=\nR:baf796672778b4a2a2efc50240cd6f4115d384e163796313094ccab5b1acb3ed-a\nZ:Q1rqiSjQx76BesPiZfUO31C1q3Xkc=\nR:bafe86fd1ee2702b9c20fcd1702e61fdcba43ccdb7509ce71551f096cd9027e5-d\nZ:Q1bfy2NEfY6V5FK24BrOIuJWPwf8o=\nF:root/.cache/go-build/bb\nR:bb1532f559134bf30204b89025dad259d49ae586af23bcab447ab616e1dc6096-d\nZ:Q14N/XSWm/HQR2YRR9eLa/zeqKspk=\nR:bb2cc44e9266d1b31d4f68146b721a3021bb1fc3bc93fb8070f8f58360c88d43-d\nZ:Q1k1zT9VmxHXC+g+/nqjgt4PoekBk=\nR:bb4fbec3a73964bdddc66ce9018ef4f8f4e1156edea50fdc4be6255bd0b334d1-a\nZ:Q1pE1xdWiUuqNAwWdRyWwMwOPsW5E=\nR:bb551cab758f8e8de340ba0d988945135caecff05109f907833aca8d446b2b6f-a\nZ:Q1MUasAPuFsXxwHCA7mgunjikxWYY=\nR:bb61e2c893b676bea423e095cb15744be7242ae2543566dfe2a3ea3c909b6de2-a\nZ:Q1T1RjUCMYdyd4KiiFeKVWftl6pr8=\nR:bb73a40d6d95e3817bac4be93ee56267a6274240e5d3e80a49acdbae7f403134-d\nZ:Q1iS6Dc44GgIyBeSfiAIlI5bgTDv8=\nR:bb7ed8ea87e4185c9053b27f4ff981cc60d7428c7c0e63b8217bb0d5b6835271-a\nZ:Q1M6Z2CH9XpHqSDxnDODcuucWaz7I=\nR:bb87ae582e012e93074dc57db5eeb32dfe29b41848a6c86fe228545b614cc359-d\nZ:Q1DUoCOcIdmY/xi3WuOzDPwpL8CCI=\nR:bb93c9ac42a7ee9742e2456cbd49c6eb552cee54aac00e7d961384071062d40c-d\nZ:Q1hGX9k8RddFJYGOXyT6A4pOvcLUo=\nR:bbbd642ec3cafa001dd3c063e78abc43d0ef48ec83d187367995c540a96a3d28-d\nZ:Q1lzvCvzR3isxKF7SffPOyCaXzDGM=\nR:bbc7fb2baf2fcbd1cdbacb2d38f326a6f1e7388b1b3bc1893790e0dba62fa66a-d\nZ:Q1m/N8jkgyY5JStPA4S0nbKBq9R44=\nR:bbd09d085321dc70a2b708779f068d3dc0768958dc190f753a276d8e2da6806a-a\nZ:Q1twgoCMlA13/JLsq+OF6CKlgKY94=\nF:root/.cache/go-build/bc\nR:bc0c9ebd3292db988067dc430cf71e161a0f1e75eba4141554e20f5b55f50640-a\nZ:Q1Hr9+YieCK9nD8CqwiCiWlvSE6aA=\nR:bc0ccb80246428b1f56b5bea24b69618da86248ffd450a6a9167d2a114edfae7-d\nZ:Q1AqS3LmvURR+17PpIVq9QuXvFpzU=\nR:bc3b25761ee846a37c398e06a04f71d92541b2155feffcc4949c695085a98c53-a\nZ:Q1a4B8TK1cV/L4TeclA58JOMABhg0=\nR:bc3f03ce9af780ed2d1a2f6ca19520d311ef2f6e1c88347f5d990d49e78e276d-d\nZ:Q1XNhjYe1Q6PMOHPU9yBXggGstMig=\nR:bc4aac52745e72e3d2299a6f07656e24951d49d7b87712d81156862ccde19545-a\nZ:Q1XqkFrH0s7r/hr/nodHfw/MZUjCU=\nR:bc4cfed15411fa299aa453e36d0264a8ad8a89f0fdaf847184888f999b653c11-a\nZ:Q1UIpuGTEe5AZay3j666YL9A1kHHg=\nR:bc56b58fa0aa8568559d1a74a10804c4d26f58f7c7c9a54c30756f87b55b9da2-d\nZ:Q1hY6q4cQHvLMrTyFzeE8qhMLExHs=\nR:bc608a67ad0b59a78256edc7a114669dd5dd9b5e5315e034c3fd3f4d79947ddc-d\nZ:Q1ybY24wW0RvxTN3Cg3wvw/E0tggo=\nR:bc6498520b1234fbfae5ca2c96c645ff79721ab7b761f6825eb2edfbd6bd2905-d\nZ:Q1Lj7UC2DKymebx1/P9uVbBBpne1Y=\nR:bc89afdf6956704c1b6d9c645e2423439a1840bb892c5e8940d625057bc9cc66-a\nZ:Q1ycWntaDJI1A9TXz7xE5V5rHIqbg=\nR:bc9a77dadee3c41b710cb2d605f63f1546c335525471428320e8c03c2e264c53-d\nZ:Q1cItW2TaxCnI4ORGET3VI3M2/P3c=\nR:bca0c0e2b140acb61f682002851e976aeeb18bd09e84bc7e9711be4fe0bc69f3-a\nZ:Q1qIOOqbt0DB8c98J/+FeN1GebK6I=\nR:bca7b556e43f6c1358226df618fdae3a474739df494480bb7b84b2e928465264-d\nZ:Q120Bv9Ty9TZ5HCWwEr56s6L0/A1c=\nR:bcb118bddae039c57bf2a7b4f2a8b8eea27b726972b7172df39426132d4d2cf1-a\nZ:Q1C3wYeZ+YiXHbd7a3uGkvC82cMFk=\nR:bceb068224415626d9d128b60f153e3ea6c0a1848f7288162eb62cfac896aa5d-a\nZ:Q1QziG8WCVRlwjGIhSBP6oZ8UxbzY=\nR:bcedf81f4257a7c0d135c55f3ffce664ef5ae6f30ffea783bef2e78d3d4c7f2d-a\nZ:Q1rpkQjj1uSKjcJfHQlEdbrTPG/T8=\nR:bcf213dfe141539c287bfa196942d4f0886f693b8ec3abd3f6996ead95c5ed53-d\nZ:Q1ynPBIrt2+sPQtrpV3GQx0ul//xo=\nR:bcfa194c46bd019099da1ccbb0d30ea8514233d2474a6dbb283ab41cb2506117-d\nZ:Q1lpbAu0YKjh6aVVihXznCaJgwCdg=\nF:root/.cache/go-build/bd\nR:bd0984425bdd4178f14012796dd94caf8ecb0ba84c6dd3c8bb4d04dc1a6f7022-a\nZ:Q12iEk8ogxNjMQSr0KtvRKL9Ce5ok=\nR:bd0cb11adcd8558af1c8964dc68c441d362f5fc933d2b062505464559a90b4b4-a\nZ:Q1qQZweX4PCvxY99hgFveiTq0WxZA=\nR:bd2835e0aee224302ba6794a9b72ad12bcaa5a01fee7d60e0f181289ce2e0700-d\nZ:Q1r7MifsCQPNbC2dPAWW2sIDRwgJs=\nR:bd61af6917fd6300fb62c0ff22b7e4de28ff1a979e3206b33f0de8d94c87eaa4-a\nZ:Q1TPVGMon2pzKM1cXz2MUxTVqh+ss=\nR:bd653a8578286b2388e16e57149bd6c4589061faa484ec28ec51df1391135181-a\nZ:Q1C+qzVkNaH0FByJx7ph0Yo8BgWSA=\nR:bd73d1a257e0c2a56982e2132190470835ba3c79d8fe3c06b676814d01475737-a\nZ:Q1zegHQeHaP5lMeT4tUGDA6ZrbEgA=\nR:bd8806571e0dc068548259e1781129e8705c3e0102cc8712cb0cc6b820150144-a\nZ:Q1Un43FIkkQhuVkmLROqLs0X9xli4=\nR:bdbaaf54751c5f90f3f26fab7ef10f4ac8d11d874901cbc2fefc76f7362f7a16-a\nZ:Q1XjRlgTAKdovDhRHy9bMVdNx+0yY=\nR:bdd02539ff83453d1cdbdb37d7446a629fec684cdac19622c553addb613077fb-a\nZ:Q1XQVRMx9+O7bvxppPQd0R0ikSZXo=\nR:bdda4fe085103b201205d838ff6255a78a6be457e1a654923c81e0d06cd34221-d\nZ:Q1D8cNzDKRfmJcGi3HiOFEbrUthCM=\nR:bde1cc0e60fa0c2bd0012d9d795ffe1d6cb42cfec8b7c7d570d0beb54716798d-d\nZ:Q1/YMUJszP1WhQWDfZzDjbPeWOF+c=\nR:bde54ff0a6aef61cc3776499047cfc636913ccc886101456b51e5db5989bbe5a-d\nZ:Q1y+XpFOxsr/XJbEPFrvwbXgmEfxw=\nR:bdedea86b4f39bdc862449404a263e911b771bd385a39d5ffff495fa262bee4e-d\nZ:Q1dF777EUSqh2NrGf3JBmIvxclYuY=\nR:bdfad0495358ada6702709718f351bb6ff819ec8637b53c4149c7dafb55ec3a8-a\nZ:Q13ZummryvQqTzBpa3Ey2nm1x6fQs=\nF:root/.cache/go-build/be\nR:be01e4a43526d7cbe5e52b5dbd5725d16efad6d029d2d38543d65c4f08903006-a\nZ:Q1oWti0tBKo7+IzNQ4wFGyNoLEmso=\nR:be11319fdd6121341e5c59d45b029b7d04a5eb1968a462940aa8f37aadbfe320-d\nZ:Q1h3k0BCMpwLn0kR5FZcIw1R8NCjU=\nR:be309a55c27c2a68192a76c00f69c773523a0d697b46c1e06186af3efd91fd5e-d\nZ:Q1ua94mPnSBUeF1DtytZEfVezpUIg=\nR:be3d427f3baa68fbbb7b577c6c2eefc5ce7bd31af18f7d80b0ece672a3076247-d\nZ:Q1LP6qw9B9mKqbmTT9UuiTDQlwspQ=\nR:be52e8e300700d391b78b5b999a5c7a01eb6f729981734d3fabaa1c55e86d481-a\nZ:Q1I06s06g2JwWuNtA2gjQ9MGpQ53U=\nR:be6cb56fb502e176509b12b9efb2bc0f9b99b764fe5676455cb57cf8dc13f5ea-a\nZ:Q1eo/E1V9ZYiJPxnkFE6/NUjU2ZOo=\nR:be6cf89d1dd8b2f7c6c5b2dee1de35710d22b22c71ace764d30155aeced153f2-a\nZ:Q1LIbZKuuiAW5kR38eBIsr/BPmutM=\nR:be73e5cddb60345a4198824f316c15075601c526a99a1d5acb6f1bdad0c5dd70-d\nZ:Q1dqSX/20wr18DJmVpY6JXCGlxYKY=\nR:be758708b800d9e82bb8f45430854a80cec38f0b68824ce85098b7aec67d2883-d\nZ:Q1hAAUccHlciDf0O5i0BhqQEwXJ6o=\nR:be764fbe6911a3d1ebcc85f961a1c6b341008d1ca92e593ad9f48db1974933b5-d\nZ:Q1iwAUW5IebFiwLNUctXDtbd+GZHg=\nR:be785b9fb03581ccc3289960b52d0955f85fd2d7196ef82be5f9f13b6da79780-a\nZ:Q1wnDvuMKiSxyRsMrV4TkZg6I6O1E=\nR:be80ce7b060af24b742092b14898158d6663136335c584992d6e0c52e895545d-d\nZ:Q1lbC1caVn7wQFaHXQUjWqvGRl+qM=\nR:be963a438b75076dd959ed247b7f58542a4e200ee1437de380d700cb69f039de-a\nZ:Q1vTjzV1fp9F2mdExHxY6HOmtEXFw=\nR:be99e422a170d80ad99e2f8c0180876397d665bb09b67cde65afa660544d265d-a\nZ:Q1uwXTlcL8TccyBBIPerJY7F7nUAc=\nR:beb231b753c6378612a1a7f268c110b2829d10964415c740db0670b1860e08d5-d\nZ:Q12OWutUg8c+N4VuK4KDHmPqSp7VU=\nR:bebd54a2c592fae4f483c6852715ca585c33d31d0f5b3d23d527e5baa152dbf9-a\nZ:Q1GM55TKv4iufCb4mA+/lT9SxDLYE=\nR:becbc606c0d1dd8035d694cb245dd6711de82793ff5215e6518e585d9bc178df-d\nZ:Q1UgoXwpkyyblicTuReoou7SIaDaM=\nR:becfabe85d7b27c8c6390a275e1eaad8964d4b7d2915bc24443a35648c857911-d\nZ:Q13rxwF19GfBudpOvTaCbl1ydMwBY=\nR:beef32386f7973c3eb2ab5cf8f1ac6cc55625b591614c9ea482ab472d8a2a42d-d\nZ:Q1Mf8wuxVSx32KifNceVMC7BJthm8=\nR:bef2ddaeac81270eef52238189d32decf8dfca635afe4879503c28ff275279bc-d\nZ:Q1ydGWDbUaZRMI36xnCJNC+obA2aE=\nF:root/.cache/go-build/bf\nR:bf0296a6d82f0383a0644d60d1bc22ccd33420f4d72fcf808a3b10392527e53c-a\nZ:Q1WSNgZRJYz48JT60dK+vZ3XRx1Ag=\nR:bf0588588b57041ba45e57b243f612e7079056749450ed6735423818c024f69f-a\nZ:Q1YHoqR69e7dNMe5KlaeqPZHlbOZY=\nR:bf07b2b7783347eb2074fca6e7c2807f1d4ee242d7030bfedad99d69ed3e2eef-a\nZ:Q1h3ZsM4XwcWSb9ir6L37nIIod6ms=\nR:bf13eb78ac43c5906da859fbac9040337c59089c1c28b30afa18db04149bcde4-d\nZ:Q1bBspgI6HQdrPzBgfTnCf/w2gQt4=\nR:bf23eb047af390bbfdc2711c82317842ab0409d3ffe6b7c137e2e37cbe953ea1-a\nZ:Q1mxR5grIuSVslLomepHz7S6MJyXE=\nR:bf3163dc14e385c92af37fdad060da2b6bb1d37e4233195c99e6e005f159fa6a-a\nZ:Q1YH2olZ4Cs3XIeYGtxxHZvaBBp5s=\nR:bf3501acc455b9b343727fa56c8c2af0a342e527eea8c0cab9939383fb7b26c1-a\nZ:Q14Pwk/phmGiUmtfRTKc0KidC8wn0=\nR:bf3aa26a9ce7c576b3ae6a0dadba34f2a429dfa5df0e52c363f8366102291d7b-a\nZ:Q1wM8rOllkfs+j3gvYb+05/h4NDKU=\nR:bf5a79a08deec3dc5389de074c3d6c233dc36e805f171c1e279125ed69719463-d\nZ:Q1QaDVKU2L7MjSYzsK5OT4ILW7o2A=\nR:bf66bae1e3d63762d869ed04b622dec68d94f6f7b08d6d3cb785ece827d5e80c-d\nZ:Q122wSpMyMS4IxZ8+cDD7PxcQ0qNE=\nR:bf92a0c4e40bd13798540c81209c66eb01151c0f8841fe07c4b4952e22ce4d57-a\nZ:Q1bwcDtQ0bBJ8ETf4MAHaSKQ/gXeo=\nR:bf94d1cf284f976ac7227a201493acc790bf5796050ec0e4423ffc404446a3c3-d\nZ:Q1iCmD8NLwdUGdpy5CoIV3DDzCyic=\nR:bf99abe1b1bc14dd0e996a09c999343c080e49af842bb0190facb047119c228c-a\nZ:Q1nKAelQO8GguU7/wH0eA5BmES99o=\nR:bfa1144533fa868b986728b6987e3c374a9456fd0498ac96bfa0963be12a1849-d\nZ:Q1/bSucc54lm0YI6fKoGKrhOb69HM=\nR:bfbd7a390bcf324a7895fd7bb8adb666a0d004843368b3b67e68184ba93a73ad-a\nZ:Q1KgwhY3K14HaKOsggrJtzV/w5/24=\nR:bfbf41950e1664a7d85bf9f3fb62ec8f907ab4d8fa61e03f9d00aa7dbb177c9a-d\nZ:Q1lK96ip+wGVYrehXsvCIR257idx8=\nR:bfccf009fb438e7e6089a07b48b00b4498cac7a4a6011b015bc47eead5cc3a09-d\nZ:Q1rVjIs8bMtqZbcmT75S2MIy3m5P8=\nR:bfe79090afd33b071f8cf166f644b6c7829ffeaa3229284393b1964f14a9ff52-a\nZ:Q1gLFnQsDdxKRJsYJZb/pG4kYzxiE=\nR:bff1ec8a44b80f4a001004e0146a090ef21e68bc79c9b844b638b04f8ab7e3c2-a\nZ:Q1zF0lP/ol63+H8NZdkFCMWBi3DFE=\nF:root/.cache/go-build/c0\nR:c026b26b25e07ff7d73e965bff31f0888f438b67a4882a10cf10850f08bf5161-d\nZ:Q1hxmNORs31CdrGp2p8VhGThtmnYw=\nR:c055d7a9bb179542f8d8f74195b6a62c2a31c8103ead29747e66e2a4239482ca-d\nZ:Q1vixkkIo0Bti96JU8YaqfUfdSwN8=\nR:c0920f42f32d5037074bb919c45df0316482bcb765de08818ccb67d3934c2a60-a\nZ:Q16z7RxLTj1lBOnzLKPQFO9PCchEQ=\nR:c0c90d996a0e72bfc9d739db31340a24e891632ca043a20adc7e3304f1e697df-a\nZ:Q19kkXvkRD/BcHzGEa+PX0K54wjJA=\nR:c0cda5bc82db8e36666faa6a33f1e347652a856c3b99613eb8fe552e495d1cdf-d\nZ:Q1BJL4mJKvGuxbvvdrlprKhPq4bdg=\nR:c0dd3a69db5680073da72ae2b2ed836fc8ed84227bc721041b3be456db932695-d\nZ:Q15DIeicJd/sbXLvDuhjDchEx7GYs=\nR:c0e545073b8b27d64e7278ed776d8a864d006f76f500c6a0618444522cef7135-a\nZ:Q1gKibDAjhyktDKmChsT7LbJ/gHPY=\nR:c0ebae16400866935b447e4281795e4cbf7c807eee4924b4e52f5abed911c3b8-a\nZ:Q1w9vWKgYw5a2RD8jwHLiR6gG/uDw=\nR:c0fc5ff2b1e7d4ebbbaeeab1114805879d89adb12a59fc2ddad20607693ac0ad-d\nZ:Q1OFke5wf4ybs5hXzpa1qkOF5xSfE=\nF:root/.cache/go-build/c1\nR:c114f7c0e2ea8dc2714dd1857c68478ed9ca587ab8be08572b5ddba11eb3c51e-a\nZ:Q1fBsJc26H3Vx5m/lmVBKr49j9vOQ=\nR:c117b74c163f13d42d5234e693b7a0a0856ff4fd4ca5a6260f3fc8a3c142c851-d\nZ:Q1fgoY087BIpzOLnOsDSKzgDBnM3U=\nR:c1219feb4133c3fa43e4a127aac492db924c66b1df0426d7e25e5615b6cf2e6c-a\nZ:Q1isynY04oI7AB54/I1MRPiCzIHhQ=\nR:c1406c532c4666d4f94f7e8b8e0e806777c87629981523ac77a1ff5b7d19b150-a\nZ:Q1uUwzU92G0dmjos0ZvftoGOK8A9U=\nR:c153b0b89ba09ee1d45555955e163be075a2ecf696ceef16cc0fc222a4babd5c-d\nZ:Q1J8wOkM092IghWZ/dDjJb6jDeEfI=\nR:c16486b9734f1e838d897d046a08fad88a04cc696daeae411add0b6121c09863-a\nZ:Q1MoB13Un5HX23ZOwpVKmRdFoUYPc=\nR:c168d546a968a3c12bd1ae914180123fda4b1deb9b6c9261f4f97079feb00903-a\nZ:Q1SJqXVTLWnAJRRuFRPcDuGEQ2sqk=\nR:c19b471fe1354e79afbf1769738cedbe106ac3aec365ecd0135b6e1f52576703-a\nZ:Q1NSQPv6Jfj0xorZzl6Y+WIGEIeZU=\nR:c1cc7b9d24855e56a4c477e2c26adc5d70d667592015a6b9a21be02c38f107fb-d\nZ:Q1G461Lp3xpshLqiiVmR/5UIwj9mI=\nR:c1cc7bd368cc9638c54b19a23a9afe6432e409af0e931c9e8a68e1226a142685-d\nZ:Q1roAMN66MNvxXgJZZjwP2Wan69KI=\nR:c1cde6e5c7210124e6a8ead201f37d7d0f1e28c197791a3765c7a798bfecf8e3-a\nZ:Q1tqTdjPZ0Rhmjs7sveq1yBLeh1XI=\nR:c1d92865fca1b49f37a3af88e6a2ffe5c264614805f0c4915e8cf925d77554e7-a\nZ:Q1tz1tnYksoz0LsveJa51ITo6o1PE=\nR:c1eb3a2cfcbb59c3d72fb80010f1fa45dbe6fca1aa8782e29e0df409421fc070-d\nZ:Q1oVPPf3i9g59cjCch+TdqthyjgiU=\nR:c1ed6b05e7344bf3463613621df013447a2d8123ebf4cee6799b4e099c63f5a6-a\nZ:Q1jHMc5e/AXpHfYhDJOZ3ASft1r1A=\nR:c1f79e87be9cd19d1eb2858d30bc6a2e2dba55be26cfbc2322ed99641f1b8804-d\nZ:Q1aAxqsUQI61uxPrt6wbAh45R9WuI=\nF:root/.cache/go-build/c2\nR:c214b83093a69d031c75aeb056dbdf75972cc64aae253afa4a2b579889d46d3b-a\nZ:Q1pFfp2iBGgZtyEiNzKzJxDoiq61Q=\nR:c21f397b70a0b1a124b5a082279af1402c5c0f46c321838b94136e6a23d8ec8b-a\nZ:Q1U1K88Ukc0gbV91LnKywt9JAdFlk=\nR:c2294be135132a47a6699960c83a23c7608510c1913eadd45829f5d9555b0449-a\nZ:Q1KhN4s5JU/SCmIffr7RbFZI6Aln4=\nR:c244ff1da130083915372f33af3abf283ade9cdff4a4df4199355cec3587342a-a\nZ:Q1AO80BqHdOQDuln/HyYS406S9+cE=\nR:c247ef3c7150d6cbcb2f90e247296609868ad7aa2fe3d88277794e96665eacb3-a\nZ:Q1IvHpRp5So/JbgSuqCaf9lOtWG7A=\nR:c24b967f9cbc5167c9862dfe23564c42bb6aaf61a53275c2edd05e984bd17992-a\nZ:Q156oDlsNU6mKa20a78xFFjy+3T5E=\nR:c26145fc1bbd3233d7232a0b9896f400cfa2903f8c7f367988c9226485bffe87-a\nZ:Q1f8mEaODH0hk7sMN3aziiyHzvrMs=\nR:c28540b09b2eee84b74d01ec14f6d384f5c66c4bd3b36f82ee408a5d1a102e08-d\nZ:Q1V8yEYuN/hX9C+LcW443EYTXTULY=\nR:c29bedd9113b031958656bd4d768191388bc593494c93375275866929ef0e364-a\nZ:Q1ns+XKZn3bF9VilUZW/NunI3D5fU=\nR:c2a6c033252510b4156097b6c407506fa09335e7fe2c8af9eaebc5e16f08586b-d\nZ:Q1FJsPVjJEKj2MKLiYG8x5ZPcZkOQ=\nR:c2b287c3350120605568022ee31f6648181d91fb7541cc99cfc1f6479fd5498a-a\nZ:Q1rQWn2fvKd/i+hBvC0RVIMsWGHl4=\nR:c2b378784515b91f2f22c7b0792897a6be999f0ebcda1a15bddad936b585cba3-a\nZ:Q14m/ZR5XqVL6DYmBgXZTGdFQWGOI=\nR:c2c042d2353ed479fabaeb014a0285e4e60f4898a1333b5e5aa1ba1a7a048f99-d\nZ:Q1DTid7h+LKw3SiScnklbEDHmPqRs=\nR:c2c043222e5d4acfa6123e731e3638706876a18b986b0a1581dd79b267b7ffd0-a\nZ:Q1UL27OKcrRqb46s/wPHxFGsGPKwY=\nR:c2c2f5778bcfba98256c7db3b4294f5e545ba474ebfc16f639c04a16c8c39e46-a\nZ:Q13NHHrhXuYXPRKIK7lDhLHiScZLI=\nR:c2ff832f12d8f1d926ff5371c0b774e5f594d2abac30645a4922e6e95e925d63-a\nZ:Q1xbUMh5ef995GND5nr57mvHCVRtI=\nF:root/.cache/go-build/c3\nR:c306fe9dea9ba4a1418102fd00107b6fd4e2368bf8f592e769cc41adf873205d-a\nZ:Q1a/2yRe9CLFtr35iydknX5T2YQOM=\nR:c310e82452b7d8ff96b53281ada29f423cf2a1ce471496800b652142eb236877-d\nZ:Q1H4ks5Skuya5VJ18tRtSeQSqIGSQ=\nR:c32808c5ccf8dc090ba82c856e4f088fa0f88a34bc53bf12f16b473f349ac0ae-a\nZ:Q17Dc1gEMrhi4FIHZFC9DCVvVaIFg=\nR:c33179961a9dc341396edd29e85de3e28e59efd03502f529244f5ccc78da6898-d\nZ:Q1GK/6WzfSEcKkxPkRTxZFajFGUFE=\nR:c357856a6d8d5238fb8ab098122681ab37686f877badb0999eef637d1f41ae6e-a\nZ:Q1UKXCOTWYSY0jhEmaJDstge9sBvk=\nR:c3725f459aeb58a4ed3197061d74319a4d7f3b2147fcbabcd6cdafd7d3a5858e-a\nZ:Q1JAtKWZ0u7NPxuUsPahVEqeiDRxM=\nR:c3758150ad768cd59879afb00abdaffdedc9954982161c94c803e7af18919976-a\nZ:Q1EATVjKNrF9i/O1oFjzjEXJBB3rk=\nR:c3a7ff953f580d4f4cdf12180dc48b47024677c9dee8fa8dabb77dfbcd79b3a2-a\nZ:Q1kWXRvAIg2RhXdfCNlKZqe0iWo3A=\nR:c3bbed777f304598ca812b34a411f567112f73247eb67779e7e4429e598c9add-a\nZ:Q14AC48z3EOwPlyEGsCTtbwgFmhFA=\nR:c3e47d142871ad9682b476701220f7fc96735ad52434e6c4ecdecbca213c1968-a\nZ:Q1WoezJ2yNYez1qkE4jPbwuW0ykpc=\nF:root/.cache/go-build/c4\nR:c4177a02e33c6d5a060bbf7b2a2ae831457a71fdfb8a58ba993d44adefa2dc77-d\nZ:Q1WXxVNzPz+rCcV94QQbOHYISOxZI=\nR:c4375fe8ce2f43a904955790cf52e465276178f6dd3613683fe2efcb4635e700-d\nZ:Q1/039Kt8IpPI04RfHgc6gFgCpi+8=\nR:c43b060005034d4031dc8c3006b15d2cb43997fa1346a26aa322a5d307066303-d\nZ:Q1LLg7fPmftVUPvlPDSIWn2Fd+TN8=\nR:c44257aa0e6a9894379556e3e8ec0bec8eb04d739ac45e6cf7eaa9a94364a76e-d\nZ:Q1cKkc6QKrO6dMNkTecfxZjJaefAc=\nR:c448aacad96e89863e6a55979c5d2aebf64e8e6cf442c71a81ef6ac4508613ae-d\nZ:Q1048D2G7ljL1ZMcuN4StzYZ/0t6c=\nR:c467a73a94a9a07ad5342d8161f2e6553e839a8271fcd99735b8d4ec81daa7bd-a\nZ:Q1AnN9Kd8N3Tr59qloqAsrT2Xed7c=\nR:c47b3ed02584017c35c38f71120f5b1e9975d184601ffee4a08e01d3752258c2-d\nZ:Q1is2mhdEsINrEylkhvzMlfn08WFw=\nR:c48a924beffe0c24f55e2e73860fd116f107655111a3733d7c768fb994bc9afc-a\nZ:Q1V9EI+n3xJAfFVRB2k6e5P7uCr8s=\nR:c4cf3ac7e688ecc64d1007417fc8ac8bc7371340846216a0162f6ab64e5c1c8c-a\nZ:Q1lC2NwlR204VTvoN2LK0yjKg4Cgc=\nR:c4cf441dd2d7d1f08c86ad4a2fb4ce560b78a676903b84d88caaa2270c183579-d\nZ:Q1N/hbC38sUDV5NWKqJsoNxHGwZlY=\nR:c4d6a2c22d89510f8d7dcf9385fee31c2065e633f6154bdea3e7ee46e32bc8f5-a\nZ:Q14izIlCDAva5FuKXzfc5PlQtBl9k=\nR:c4e2991e449908ccb6ff8fb1c8464b02388899f7c152962c8906281656804821-d\nZ:Q1OtaOUfd2XiGYgx+gJVK79XozhWw=\nR:c4e4326c32a2a245a8452647199649e1b0d0191b17785ccc533119ccee91778c-a\nZ:Q1e8B8MXGH4EJbCxjcyXQ9nIecvWE=\nF:root/.cache/go-build/c5\nR:c524a42639d63463b6fc7354086c733456af069cc3dd36c34e59c7b4e7a065ef-a\nZ:Q1sSE1tyA+PEi3BxCiMIioBstgDe8=\nR:c52a5797c6e97ec210807e6c975b7e80e4d4f31d8ac6f5f49ed9c1c651ee64ff-a\nZ:Q12hLSnxL/9oJc4k8ftM8PV/JmvYM=\nR:c52ebe3a83960b619c13530b78e74a859446b2422e268f9b87d4ea23de85484b-d\nZ:Q1RIGqSgcvyE/Cn/CHhAE/7+M+7nI=\nR:c55a8a1c832ba84663aadb43b86cad4aa636e6edf859d401c308a43c3bc1a52c-a\nZ:Q1Sp7wKrUzbOA6ATg3yaBM9viI11o=\nR:c57be060ec648dd4a30517536339520007a04ce752b67b40b55f54a1a7df76b5-d\nZ:Q1mVRzYFgcD2eK+z2b1GBxmF5rB14=\nR:c5ab848aed3fc527b57c31c2361bcc9223258a20dc53824c20343797f62946bc-d\nZ:Q10K6qLlbWo+Uq6Z5cR0drZUBQE84=\nR:c5b12b8be946280b23ac8b8d80b64d64202dcea0c13ccd75ec304aafd193b7db-d\nZ:Q13Qw9JDRtdFq60GlkrhYC80+ETb0=\nR:c5be2c8389d9753dbe561549e2bd024b0ce88b8572f7014c2d5a41e2f7f7d097-a\nZ:Q101u6rjSKuK2/Devd2ULWKycsf2s=\nR:c5c5b3907463958770846ba8dce2c486aa0d845d51f84e806457a4b945b6be19-a\nZ:Q1H/OvxYTDqsiJ97EPd5IknipNbEs=\nR:c5d509dc5a3eaf73436e3d451464485f6e1b169d17bf3e58956dc4ea48c2267a-a\nZ:Q1488cQv5OAc4TF5FMVFMjS7gQZAw=\nR:c5e1588a8dd57136725ed9ebc080c684a71a74855288346d606e9b4d17154889-d\nZ:Q1kwcgh3UnH0vNQtLzEeWCFji/yBs=\nR:c5ffcfc63d21e2993c8a9735bff493dae2c4f257f4cc2a4de9d0cd7241490c33-a\nZ:Q1U1afwBKOr8D6p3K2M10YIdBT+fc=\nF:root/.cache/go-build/c6\nR:c61236d9ae7d1c04d35747ee89884fe00b7169917e2ceb4b5d46229394f7a5e3-d\nZ:Q1CSynxnMzk+dCtnRtG8sN6PtoUXA=\nR:c626209faba0bf6c87c3740b301e712443127045152940f5c0824c2dd2e27ba5-a\nZ:Q1DUYZSDgt/GMqrYjl4qSIBRmuyTM=\nR:c638bdc37beb0745f0ae633c708ddd66a068ea29a07c84a328e1f17d4fb1b95e-d\nZ:Q1ZJfB3oLaXNzgqU9vSAkc/RoPjf4=\nR:c646c23e1c601f21253f92d13604bdc7b26c61e35d814e98d42494e8b4b112fd-a\nZ:Q1+SHk64v3SsUwAkmQDeqfTRZdgUA=\nR:c6477b391245c3f00fe8172b50424336908cc4a3ffec13d8a6a018fe63c045cb-d\nZ:Q1SinIdOn1y/IwyQlRECLeGzDlb9I=\nR:c64a613f4b2ad5917e24d24dbd4e41681dfc0026472284d78a183c43ba8d377d-d\nZ:Q1myLbe8vZYADZV5TFcZiTk4n3NZc=\nR:c64bc4ae3b7003bc90afa70a40b897c30c951312407edc57d36608b9f69a5c3f-d\nZ:Q1QtQImx5sIkxZ1z4Gi7dWSsZBwXA=\nR:c6568e0b08eef2cca2623f4da525903b24681271911477abf62dd19044d85c0e-d\nZ:Q1FdFZugpmWthhaDCC6g6N/a+dxSI=\nR:c66fe2f671dd252c32b23e77e9cf01553b4064052dac3680956c2eb092a6a4dc-a\nZ:Q1CrYZitIw4sQDivXDosplO6EvHZA=\nR:c67ed22521bc57d3193a56b8ef248c29f8659d54a49065ee96afad51e062b5b0-a\nZ:Q1Lvb4mURWvNONrYTwCQogjV5cBpw=\nR:c67fd38047e413e420bdf2a5f65501f32d6098fd0d6b16e3608920788193bc5a-d\nZ:Q1ouIRr8KczQWhtNfeJWbOMyWYJpM=\nR:c6821dfee0b69426070f7e2d8c9b2acec90fdfe9eb08478a4dbdcc0db5ba72a8-d\nZ:Q1acpNpxVGHjzzlWk6DA7oICkmWAo=\nR:c6a041838e3694a56b9ee6f6c129605c05e56a59507943b0f4365049a55fc1a6-d\nZ:Q10sSDkYaSCqWAKFleUq0Z7yUo6hk=\nR:c6b60981bf3d60a22706d32395e74e4ec7a5e315c93824ecf660baddcca0d6b4-a\nZ:Q1Nzo38r/0zGxYvF75Ly1G0/Aybys=\nR:c6b8ce068c44dd9ab09cc2ea1fd2e1ad974a9928e26fa9adc61c124e7ddc005a-a\nZ:Q1MO71Q9xeoeQzQpzjfBwMkaDuj2A=\nR:c6c0115cafdb1dce8957f92ef514dca7f327c6d706d1006c0237d1889a629a5a-d\nZ:Q1qqXxYVYHliyM3UZmqULBr67wBxQ=\nR:c6c7fa51d2d44e934db93afafdcaabdd9d1e8af5cfebb72268d4abeb1a8191ac-d\nZ:Q1fx+4MfeP2WvauDVjFDsnIs94oyE=\nR:c6cce3dc620e1290d4cf2db3071b1387a4eaf29b1a97cc3be320f6a0d0b0cf6e-d\nZ:Q1wMMTQRXroSzzv+Vlp95Rdhm3rk0=\nR:c6e1c9f5160bd192e2ef7beea722137c108d5d8bd3e6be7f3a6c18065916e4f0-a\nZ:Q1mIw8PKVvAjZF9YWYDyQ9U2p3f8A=\nR:c6f3ad299ab61d7c6176060317ce323d6ae38fbdff44c6228bb48d662839a71d-a\nZ:Q1W5hvxpUiR6Y0xzePF5RqqVWEwco=\nF:root/.cache/go-build/c7\nR:c70dccfb74cb436563f0463d82c7f338d7a774f803b93024a2ae6ecf9c59a811-a\nZ:Q1Eg8R0anQZGIohEvtNWRPayEX44Y=\nR:c72310bb527477ea9faee1bf800ca450383da638de2d29077d0f75b7a91c81dc-a\nZ:Q1IOQopCgcB86P8b5JS1tFjj0T1Xs=\nR:c7272186072533422eab53263f0f9860205e06d91ec93ea8bb39c241ff6e5b14-a\nZ:Q16O5UFQkfjySZnBGkdY3HEyzyfAM=\nR:c73f36503d632b8b067c13e2b02a1a515a16d30d355eca5dbf0159c1892ce868-a\nZ:Q1BVlY5qLBAoVZW2YdtBUSol77jNQ=\nR:c73f71b01123e965647ec41436a386ee5c9a29af66612701a47d0beea69295f9-a\nZ:Q1eZYmNNyqRVw7N/kA0HmeBn1KjDc=\nR:c74da6cbac78b271f7e9bd668177de9ee76138a653164c2bc17486985ac75853-d\nZ:Q1SnREFwnIJWxMtM2VcKsBPkmoF/Y=\nR:c75556926a742385ba2bcac0c9f411ede56164c5c253a7f17f8203f9f96e71ff-d\nZ:Q13v+tXV7kV+DhWc67YfdD2KlwNDU=\nR:c75c39cb2680d1c9c2bbc329efa3c373f311ee7f6acd0a4e6c0cd8d8a7a4c1b9-a\nZ:Q1mCpcZzEKACtfdbCICb5tk4XMY0w=\nR:c7a51bd15eb64c1013663a547e459caa1553955d4ef6faafd0a33c36622642ea-d\nZ:Q1BoM7t/I5WU8pwWQzP/VVipecXs8=\nR:c7aa0dedacc3dfcd1195bd120083d67c5aa82bc5b9c3188082f752a101b3a6fa-d\nZ:Q1HpepnBCDR7SdjQUc0JSBokdAkKE=\nR:c7aac2d070b48d5dd348ccbf815a0faa0bbf2e17c278760030ef0c12c3315e63-d\nZ:Q1PKET5PNHhdHWjuFlg5UXS2twTI0=\nR:c7c6ee319cc292dcce91c758a85001186da4e799ca0d6c4d310b6d22d10db737-d\nZ:Q1C8Xg1E2XJMiWfGlziMc8evrWCMU=\nR:c7d8be34503d25a98def7df40884ecfbb783978465a6d2df8cdff51f7a32f309-a\nZ:Q1JNQdEYfFa8UsTZHNkjvw7Ag/jQ4=\nR:c7e4c842ac5cc2a6ad97dfd06694224722d022a899252ecfdbdb47ca03203922-a\nZ:Q135KPt+3lc9oNF1iqXxlvNOv8ers=\nR:c7e9ef12ddceb54bfa9bbfa1e4bd5ac9869531c33177220244ed2d32c75d17f0-a\nZ:Q1GUUs8XlWqpzNKxnfzSj5KsmBSzA=\nF:root/.cache/go-build/c8\nR:c80a230e007de46344e20f8c16f9d42a549c2d0c00aa8574c9492daae841fb64-d\nZ:Q1fv3hzalbb5GddD5bx5onaCy5Pj4=\nR:c813353822cd5c140b41d0270f929d7eda4066b992d5cac6421dc1a65bb0d836-d\nZ:Q1vt2v6pKGehQLDOT9fjlMP1QRczw=\nR:c81c5d8401e3349fd1ea4673ee41818c295d4d6576caa165e9afd05482a6e0aa-d\nZ:Q1qth9zV9QmPREpt+AjPXBCCqhOMc=\nR:c81c822e12f3703644532d80d78d56197e8922d94368d8110fa149c2c0f6dfcf-d\nZ:Q1guI3IKP6x4ZfgkSRNhjjO98p9lY=\nR:c84dc30e4fc09d23a0ea24a79dd7a3ffb76f6de9d50f92689879bde72a9eb10e-d\nZ:Q1bZbV/Me4zIl4z8WGuk64jGcdGh0=\nR:c86c7f3b8b66da9f7140ca42bba0e3b0f6f08068e9e8391eac8da3e10dfb6cbf-a\nZ:Q14/BbOk0N/nC77JjoU71pG2B7y+I=\nR:c86c9434872fab3510c5556b0c41447bb6c4179cee5d5471ccc244f26060f448-a\nZ:Q1Arl0WkCkHqk/CZP08lN62iotKzk=\nR:c871718e3540136233b2838bd5b90de7b7317e6f1d198bc13f25da8b7ae0a116-a\nZ:Q1seyGawrmYd0Ickdh2WYAZc7ESeE=\nR:c890a41525bc436728dd956b55f7a7646a3fb4836ba239749832e9b36617c1db-d\nZ:Q1Tab/Qy88XpskgIMeGhdUDmxtxvM=\nR:c89cb8d01c4fa5f99a025a625ce8ebb558bcb45747d969b8f0d6c65f979e0727-d\nZ:Q1bbIm0eaDejuBCVlUb8/Ke3kYiHU=\nR:c8a4351512e464c81c221e0e7bcb42038daa8086f7e40d18cdfc2a57c3ae424d-d\nZ:Q13FEn0wvpmUSERryY19pIdu01Fm4=\nR:c8d342f93a2ce25063116ee8463c8b9005c4453a6e6fb3847075efecfbe62ea6-d\nZ:Q1ZijTXZraPOor7jX3h8SWONmvjc8=\nR:c8e3059afdb33229cc2c74162ca1f08dbed74c3372413bdff112e31f3e096e92-a\nZ:Q1u+u3HLqymFLy7LRlKWuqBxEjBxQ=\nR:c8f6bc2e389868d8af11d8276c9205f1ff382303ff21575f3d182d19edfe9a5d-d\nZ:Q1//+aGEFKpGHv2i7vM1ps2rC6wUk=\nF:root/.cache/go-build/c9\nR:c91364d134c6deab6927930f526857743f033cb2aba08269998e7ffda7a1c820-a\nZ:Q1QLWl7+Auz3wZhPRDyjfx1FlKTUY=\nR:c92cee0203ea1f8e8682152c1bd5c8b2509ca992f28ce210b3cbed2df08adc8f-a\nZ:Q1cN7uBUOKgvV7c0hvljC/vd/Zegg=\nR:c93b5395091c4baee09374b03dad5cca556c8e98e2a9278b7566349e7ff71e7e-a\nZ:Q1bLo0WAOZVVQvFIEiMofyWbe0TtA=\nR:c9450a2672e7b33ff79c73952bdd855a68fa6566d056493d6f64754729e79cf2-d\nZ:Q1H1s8bI+YUMOTRfZT0kbKqAy4g+I=\nR:c95c11d1889974c38af1835ba13ae245ada6b9f700d24d9b0fbefd171ec852d7-a\nZ:Q13uEawqkXyDy43P11xVbbxPRKO0U=\nR:c9885281a055daac868e6d285d2c064fe80fc60dbda1d69b64bbe25b977e8a10-a\nZ:Q1HrwmbRg1vEDIJ6GF3qBBbgFyN4U=\nR:c9de2f1e05d96d581677d0e23146b60b658bef408145680e5ae1ca55e4064407-d\nZ:Q1XWr1b2hrkgxHGaS0D15sgr7UkFg=\nR:c9df52ede1cd12da70db9973efc659303d30ba5a09e487f783db00d7aa202288-a\nZ:Q1uWHSiDO6yYD3TT+tSilz43+CiE4=\nR:c9ee7def1c69e680293e3035756281c29a0339a6b0513cd66220f2b0d7b955f2-d\nZ:Q1cu2V8JLiscTNrrX8lgRKwXTOCos=\nR:c9eed8a53ba13d7e1d4c496e6c9c66f5f896b430a0f50409ea2fe75e747b2962-d\nZ:Q1tptbnrei0qWUIRGuJZX6LJfsZ5Q=\nF:root/.cache/go-build/ca\nR:ca094b91a7932425fed3d1afd2fca4fa002f66fd02dbe43f8819420d97ec36f2-a\nZ:Q1men6Pk81QvQghaM3mbcqDiQYfFA=\nR:ca509fc19b602e46e18d1d0a2d1dc8f049df3fbf76f010432e455d6a9d72d824-d\nZ:Q1srJ4ZZff1TM1X3qmJlgu050wmgY=\nR:ca5586a101ea3320447419a11938d9004e0c927cdbf10b188d745e141bec2355-a\nZ:Q19g6R4m7lpXLHrzUQV2x2S1pqark=\nR:ca55b90a8011b18815ecbe007d85a9f9cc8594a3323826d0c24e3c4e664f5c3c-a\nZ:Q1e5Rk+iB8UI9cPjFZBSsBDcNqUXY=\nR:ca6a52c20e2c5d8aa909a107ef2b7b9a84ac5f77fbc59a5386eb28c9fa550578-d\nZ:Q1zbLBSXIdsab17/qxV6YJhhqhaAc=\nR:ca6b9dff3a806b59cdd63f2ed8da987ddfff2caddbeb045a8d1c05fd2c117340-a\nZ:Q1KCWAYas02jrSJrJAZjhPCQPHkMA=\nR:ca7697df32686b2a25b1a6a3c2cc8fddac1cd3928af0784882552e0452014e55-a\nZ:Q1WAy9TUjdumyFqmCS+OpAdHwd7Qk=\nR:ca7d8c11f177eed00d19f41c54d2f5f3326183700d43263431677e51b4e002b4-a\nZ:Q1n3ic8WE4gonOBUlc+u4vFz4fu+g=\nR:ca95dc5767f8807eb1ca156f115b05888785076d768298ff2dd009fe30d202ce-d\nZ:Q124SHCWCEAi2ROgLY9hzewv+1OXc=\nR:ca9a6876c8ac6e1675c74e80cbe3cba718b5ee62971d3bc12abc7944e14f0c47-a\nZ:Q1+e3yhxdNQOjPAZ5PYGH7/A4uHCA=\nR:ca9d5d1a82c4049f0e7313be642fa485ffd6440234a7e7a137ffe96e36d5d2ff-a\nZ:Q15J0EaH0/7yoBH+8BIQVmW1CWIE8=\nR:ca9ea5bdc06097a6d4204c64dca43ae1caf086a0913efde275f4fe04b9e2160e-d\nZ:Q1SX62V8JVNQ7ND6MwDprMvmPJNUw=\nR:caa53bd401211af847a704541252ac98700695548e26e4d04c101e5c47dcf088-a\nZ:Q12KEqu6Ejwig6PhmljOW3cUHlxjA=\nR:caa855ef48f30bea0e59a0ffdaa63cb538bf491de3b150a861cda1110c89cda7-a\nZ:Q1+ILW3RiMO0iYlxiikddUYLjCt/Y=\nR:cab7e31d862dca53a5ea16172c69b03742dbbbbf70c9866f054e142427021e3c-a\nZ:Q1Nb3MB5Xmb7e+sGURBq9ARyYt8TI=\nR:cadf230ba4270433aef1fb0a8510fd771d1d5684638cd709dcb69b0c6be51f92-a\nZ:Q1NpSFSnq0uKj0K6Mjr4Y6kaFzmFk=\nR:cae14aa141456d220ebe69bc864ba0c53d63923657a21e17fa2dba3726665bda-a\nZ:Q1B86bPUq4RUTsA3GmsxrPxXi3C8o=\nR:cae16ea75d26c135561681e12c68b31b36d85a4640fcf3fada50d6444763209c-d\nZ:Q1hM5junfsyRenup51jBDg7do3fUA=\nR:caeeb56da341ec7ceaff6722926e85e50b6814894805fe59838138615ad1681f-a\nZ:Q1iV2ApPo+Go8IxWRKRo8ATwZrceo=\nR:caf7d2b304976e23c4529791d72d4252a222ab06442cdce83c3538aee9d57fd3-a\nZ:Q1zBWq8m8JDlQEnfXWxVoZhzy/wDI=\nF:root/.cache/go-build/cb\nR:cb061f04d121a1b48996bd256000635e863b57c0c8c5632bfc713d0b3a2f419e-d\nZ:Q1eT+59GOy/6whRHSmxBvUkjQ18FI=\nR:cb1dfd0a8c37ed6df5683c69e95a5828119804cbf8f5a354b059cb832fd0efbc-d\nZ:Q1sBvV8SqQNiKZiI/yGIQxRq6/+OU=\nR:cb30551e13418b7fe611213a7fb6a9872eb6dbc2e01ffab66373b0e8a6c51261-d\nZ:Q1u1k6HbKKTJhHeLreZp+xXnTfbFI=\nR:cb4633c98615ca977944a2f0719d03d365974b0f9f87d972530516b7456913ce-a\nZ:Q1BL3qUPK9lzeh3MN0KO/0d7k+64w=\nR:cb4659cb6f81c8b45e31981c5c1862bc3cfb3bcead18d31a05df5899b2f0b302-a\nZ:Q1QcJ2ZqIl/S99qERSLYBMcRa42eA=\nR:cb49bd16fe3fd82ce65f858d47da2539d6188976d4abd3395e7a560fc84c099f-d\nZ:Q1E6qjJz2lPO4tMo2aFAR3Kf6J3yI=\nR:cb4f54acc82c695a0d3f94e28d4aea7700157e5e51e78bc7a2155f0cad6b1c22-d\nZ:Q1PGU/bpQSfzVIK2huZhVhdY/GRjo=\nR:cb5113487ab169673ea1efea941d56b48d8e6e495bffa791c5489cfaeffb184e-a\nZ:Q1rb2fGo3soAC2SJN1kO1Eo1l4j+4=\nR:cb5139c0563e9c50aa9f4bdce231d2271b379637eff0748269331b0e33872fbc-d\nZ:Q1icvtYtQ+uuc/MJLtP13ljMygz4s=\nR:cb592829be4e9b214837e183be71d7b700bc92415bd725cdeae25c0c817f3bf3-a\nZ:Q1UEYS0EMWguAwP7aVWCoALlerd6U=\nR:cb6d4d3485ab5da3311f1af70ef620eb359a851fbb8f8aa0e75682daeef208df-a\nZ:Q1/cGiXdNKSkLavDjH9qsjRy+pW04=\nR:cb783e55ebb0622f54f60ce4581e0588519dc8521c53ef44868c7d9e5607dd73-d\nZ:Q1CulygmbogRUT0Jnw7zM8FzkaCjI=\nR:cb821d961a6e1b99e3b7525468480354dfd5f64f454906d4bc68222909cd38ac-a\nZ:Q1zgddwWNNKUCdVw/cU1GGKG3NIKI=\nR:cb83a06506740a559e3b211f843f7a1f4199c798acd8e1fc09c779dba6c35b0d-a\nZ:Q1r9OLp/4W5FKh3xOTMCVtIK8ZGR4=\nR:cb882528b964dd00476979bcc6a7cbc5235f70d47d19f561a1d8dd0f83afff24-a\nZ:Q15eGKc+UErpA8d5zPm2m+rZm7yAE=\nR:cb946119951667ac1f5f2baa8ccb2474f1de3a55e7a2df99946f61a3fa83c1e7-d\nZ:Q188TWSLU3iPdgeQyLURrcqD9Iui0=\nR:cb9a87ea7801464585c44f20d21d8db714bcbfe0b270780657f28a37d36c827d-a\nZ:Q15b8YDEiq/llodggbb2f7m7Q/pVU=\nR:cbca29c58c22ac30475292285182dbfb19a297963ce3d4bcd31e3bf817a79ab4-a\nZ:Q17oDmzc3q7Dm2PA4pH+5l0wJZECc=\nR:cbda783ea72f8b389864ec73ae64cad3fa856539b5a6eb9426cb39deecf7aae4-d\nZ:Q1OYR84YMAfGkgvLMpz8bmONRjbYE=\nR:cbe888b0af2a558533aca4d27287a709c51c0d7b056d6522a15cd1f5e7bba3e8-a\nZ:Q16Uw3tt7NqlFaml6QHwkK/aucYPY=\nR:cbebaf123cdd3d0c84d3bc98cdf4d96e285df20161f2c64aabf3c6d87250b2ce-d\nZ:Q1jZUVPwP2ZMvNdYtzACvKOsPwbTo=\nF:root/.cache/go-build/cc\nR:cc138f5607a37955682099e53393b9b212c991ecd0eccdd83c91168f13072831-a\nZ:Q1eRdwRHnUODUMFmnlXAYkwhvVJYM=\nR:cc3a3ee7f187cd1e77515f19ab2ded49dbc1f322758fc28374422c086bf2e0db-a\nZ:Q1LgbrDngiApOt0U926lkevRFU2g8=\nR:cc407fe902adbeb40d5c1289ca82ebc6c9217f38b497b3a0c448428a03a6c4ff-a\nZ:Q1J/sri4IsRlsFFc/AxQkFNbuxgSc=\nR:cc42d0ce3e9227061795eeaca0d063004fbd945a1cd9646c14ec56744fff9865-d\nZ:Q1PF6vnTMnbHdB9Xiyd61cEPWsBBA=\nR:cc45b298059cdee6ed6a58b7e8c32cb75a360f463a056d52139a42306ac59db4-d\nZ:Q1Xf6OvG2LHHnnfNYEAWDuqaArVBc=\nR:cc691e52147fe3fd15c2b68591cb2a70673b4acf14365274e227dc834fc65900-d\nZ:Q1jVfmbjnyjTHnUjgs2ruei7Krw7w=\nR:cc6dddea3486f88a8bcad09255a25e3f86858336b1774e44324dfa8118c53b54-a\nZ:Q1tNGGI8aH0EM//FZjv4r2q9qYcQw=\nR:cc761bbd22c22f0f2c61f4e6b4188833b50732261f6b4148db850ba5dd29ecac-a\nZ:Q121kr/YMAwguzA5E1py6cQaMFkLU=\nR:cc770d73573aa7971863ce65294da31859fd998285264dd248569bf5e0a7340b-a\nZ:Q1Z2Xsx5H3cuiubUXrX+T3zbDYWms=\nR:cc7a47f0a74c82d17fc09701b9e26434f2bc7999668239b8891f504567eb5b5d-a\nZ:Q1FGkkM9laylTh9KNc8sBV1Xh4fQo=\nR:cc84e3f31c531f66d06dd6d2a7822cdf453f2e2a105bc6630193c400e7101ab4-a\nZ:Q1oCXtwBOY4aH0wlw2L/WkcIPM2qg=\nR:cc8e3430b016689d7eb6e40f0b224dbf5b04740469f28e5b82e4e8b351102a63-a\nZ:Q1wljnqKdNsA8wq5cZEhc8Nst/Z3U=\nR:cc90a08548672633f2b0bf5175470b9d9a1e87a0132f2d0b305102de8984d129-a\nZ:Q1BEPoVBsVn/2AaEzfIpJfYx6wtSU=\nR:cc990b8858015c005c9b938af861fd7381f11219909ae2881da6da7660f80c8d-a\nZ:Q19YCCKhooLfeeZY/a2SHIU7m4FKo=\nR:cc9e660e3df63f9ee348882e81cba14e6ba54fdde6ee74541476fe15aba68118-d\nZ:Q1B9cTEUWZRaZre2qLznyMXuNPLs4=\nR:cc9f854377ac3b058a7375863e595fceb999f11b50ec39a44ff154a8139c37f0-a\nZ:Q1G4DvQxXYssIovA1LgUcgWcWBnZA=\nR:ccba5958228e5851ebdb29c8b577748a200168ec644f6fc0c6061087bd4600c7-a\nZ:Q1yiBOo97ktebYiziaByXGgF/Bfyw=\nR:ccc83258b3a442b4574a51ca86ece7091c712e85f932021ef9ab28d94a6d75b1-a\nZ:Q1jM+kOj95nOc1ipfgVXRgXjnaKN8=\nR:cce4383b4e1ce128c6744e17ee977ff91c29bafb772d5dc17116d5aa732bb501-a\nZ:Q1qkS5iEz3cUvj5hQyOqoxDsmOQoI=\nR:ccf908f0979e4189dec5a85835edeb8e111bf0947c93c1eddcbdcc590f88a257-d\nZ:Q1XnqbFVEEhq11zm2zlqu9pS1Bm10=\nF:root/.cache/go-build/cd\nR:cd08424fcd71917417233fa20c77cc0704b1acc2b1d3893d5bca2fe76ea1f8b2-a\nZ:Q1wSDi+nL/DsRCxu4fAqd2EG0Jz8s=\nR:cd14172b965edc0cdf1cba41d86b48ae594ae3e5c8865bb0af0f78c0642b7f4e-d\nZ:Q1MZAVMyIfWa8fzruht9pvFUpYzFc=\nR:cd3e764af2b020aff61137efffbf7b017a13285d2f2227566b010ed26ff9973c-d\nZ:Q1KLLnjmD1BQlclsk99Kj40NXtu2k=\nR:cd42d8838e2f7534eb4b10fdd797c4ca033e32a7bc1b3337630c707ae3390c7b-a\nZ:Q16xFcgWXh4wNiHVFwJKtmP19hZHE=\nR:cd435f99fdb4abd4946e2054a2f6ec9fbcd5db58234c0020bb8076fd346f5db0-d\nZ:Q1uZpOihhcuOp1rq5RmIwjP8E7I7Q=\nR:cd4f17704a0d85746fa9ba47dac5680cb6a023fadf67b4f77762fd93e3831cf5-a\nZ:Q10kPwIyDnyOCwfDZ5D9MVwvxfoqk=\nR:cd7cce9f433e6d282e12fde9fb85944b1ca56e66762a11becdf068d6b32f25b3-a\nZ:Q1k/PSuUvWdwub7aakheX/bqCJTO0=\nR:cd83e2740daa20efb0da440ccf181e4122a5dab356c3bd1a2e6f38183710e314-d\nZ:Q14iw4+1rkYAgd50IqYG0BkFXMwhY=\nR:cdaf036d83235b14f6f977278da3816985c9c2586b074c61ae26af3ee2c7d4ac-a\nZ:Q19NniMvjUZtWjn1vvWLGzuOZGQ+Y=\nR:cdafa38f954d0c13d7b5bbec1e249337b7a2156ecaa57bad63fd3538139fb3d9-a\nZ:Q1PSohRL5/Avk5hhzOr7+9sqrX6VM=\nR:cdbc1fbadda03ce855ae7755c3536032fd6033e38c5b433d0eb534a09d8833c3-d\nZ:Q1CDHwe1S/X/rlPMv5SSEUaNqKsmI=\nR:cdc7002e8095a85b04051ab7b5c9be7e419bcd73432fe46890c1406f88797f7c-a\nZ:Q1sGFTQVZu+xv4c1+b95yyUI0RdEI=\nR:cdca95eeb31ee468dcb168956335314787189676d15ea34cc24bffe945664cbc-a\nZ:Q1xZM8Uz7OEPGGSWcK0oSWMxPg8FI=\nR:cdce86e7a008cf574eeb56d47b941bd4177941b8406ad933316c5ceff7c6d13d-a\nZ:Q1/G7WWWdPCNKi1h1mUx/xQN8jVhQ=\nR:cdd7833c60e6445168c47df84711222c582ead35bda9c8b2c23e1ccf104590c3-d\nZ:Q1BRrznKedTrZjhfeOZEISN35oo80=\nR:cddf124b3f34a4dea49e970bc11b8a44d1f142a816897fc229129ab5774a8d1d-a\nZ:Q1DGD1ySzKSd7ejEYGbp8rA6c11uY=\nR:cde073d55a9e1cd6e0a2a925d09321348871cfbe7f2ce2c4fee869f73a7fc898-a\nZ:Q1lnWNDc3US9c2XMIv+Sh3Bh7TdDw=\nR:cdf65a639908b1bc03d61b2f72a991dba5ae1c849df22882bb20914692ac1d75-d\nZ:Q1QPxbSpWXVhSwF8/MgqUczbmokUY=\nF:root/.cache/go-build/ce\nR:ce0b38d6adcd9f10b4ff28a445312f9ea0a1be0c31a606414ffbf77ee0ed7bc9-a\nZ:Q1m1XsL6VosGDGtFZBZmG6pXzGOiM=\nR:ce165c446bb00fa5b12df432b161b83528c9a5a64bc15c20807699391144e974-d\nZ:Q1Rj0WLS1tpSQjVpss5LgxVI6mJcs=\nR:ce18660ada16d3cb82e5a5a4f4e10748509fad7b907c8d2b688f0dd6fc7b6c1d-a\nZ:Q1YDtysFqQIqx+3c+p1UFhbJB+4uM=\nR:ce1e01b5cec4d1661f55551be2520b54e443391110cf65d95dcd820528d851d7-d\nZ:Q1gYF/C5p+ptbAhYF9Tbtq8ExAbP4=\nR:ce31602742e322effa1120c2da4174c2fac7da7c51686fea709edb7e4d4a5c9e-a\nZ:Q18KK7ZaNF5thmNCETKvAcL1JirVA=\nR:ce32680eb8d9d89f6a093609df5995eb8fc4633cb1f5055b96c4c71b901cbafb-d\nZ:Q1XtuavnVgIzHWiwhfFb+6hmWPVZQ=\nR:ce372f9cb03fbbe0aa478b5a4c9a90f02fdc3d88f458819c96bc2f576264b0f5-d\nZ:Q1uCv2Qk3ZdHW4gBNw5/pmOV6rtis=\nR:ce47f8857fc2ffba1a65669e185026d2118b674d15ac7d6fe73269733483fa0f-a\nZ:Q1dQ8M0pQ5Lhjsi56YC6D2hEIrLyk=\nR:ce5b745428d6c84b6f6e27dddc73842b9290347ecbb4818616ced49f554be581-d\nZ:Q12k52RWqMoery0glaqM/lilZ0yqU=\nR:ce82e209c10f1c8594a82ed321884c667789bd627456d29b903b266e0ae3bdf3-a\nZ:Q1j+a2xpSu8wOB5FYHzbJbR7LX/mM=\nR:ce8fdb4e0eb5e0d393f1a4996a901c95fc87e321d61b3f948573bf1970ef5e0e-a\nZ:Q1dKZvS6Xc87df+FwBCBtb0WqnZR0=\nR:ceb025a5af0c396b7546eeb611843b93270d13de38d2dc3f02ab5fad954c54de-d\nZ:Q1UxxBsI7bT38d6P1o0c2LLER2xCg=\nR:ceb99b0381f0be75325d56074b44da4e0b8b522c8f2ceef1aeb262fbf7858ccd-a\nZ:Q1IBKhCsGgoCcXgUYxL45GY/gYOfc=\nR:cec8649385a886470e44df630123f80acf8af8fbe043d65be127f8db2756fd98-a\nZ:Q1iAg5RXcnE2YeTBYaJLySHj5tX/8=\nR:ced5dfe790a4eaf49cd24cd5ebf71c5b63c452c918cee11b44bdae3549fffc14-d\nZ:Q1mYBDS7pAXPTU0PyKQJ9b0m9fHA0=\nR:cee06ea59a680803f6c9843b9bc0a7713e3b7207cdc2fcf2132cf183c50f6ae3-d\nZ:Q1U752ZmU0FgGW9wo9RmIcVoEcEAE=\nR:cee953d1a8a7b1b335457b5c59ad7ef241940aafa9be8bc95c263880621b028c-d\nZ:Q1jHRQsQLLWnCVg3P2YS0ojqSxNjw=\nR:ceebfca0a71b45501ecd66a75aa944798abdea25bd9620c511337682e5ba36ce-a\nZ:Q1IT2NUQJAQ2JJjX0DtSTBl7qzu5s=\nR:cefd563d4fb37c60286ef66e4cbec02279e4a028d323c254aabdf30fc25931e9-a\nZ:Q1VrJg5nNgJMGAD5vYscijr++afSQ=\nF:root/.cache/go-build/cf\nR:cf00e29cf2b12202a18844e2e49a616b87a5f5adf74d6b43961c8c03ef5d9f70-a\nZ:Q13XNo1s7ASYMqZRJSeXfyBbcOQe8=\nR:cf2488c25a366a9f48b0bb58e0812e2bdeeb6d7ed332fa92c530dc9ad308c6aa-a\nZ:Q1oR+HrRErXYTHOxGY+H2cdH0rwMo=\nR:cf31b3843062a128190c324e5a0f8418c4db6a4b6ad26993d6330cb4c9fd65d2-a\nZ:Q189sXjPdwpL8PaINlv40KaRFaawc=\nR:cf43179c7335e643886d64de84a560c9f46d806fc580c705160dfb210288e838-d\nZ:Q1yQVdvnUSord6z4AQb9weyj1t+jg=\nR:cf4f6cd0d6224e6152587c3916648134cfe0a3d75a7d87d3457e4e545aa6d8b4-a\nZ:Q1wGqe40PcJe77pwLA66t1LFT1dK4=\nR:cf53863ba2aa5d0b0e67ae77b67ac6cadfe551a868d3d3612a0c8ad8a682324c-d\nZ:Q1Aga13xb2g9WTl28+N6pUD4ew4Cc=\nR:cf68e9f4d0e53ce1548d62c4d21cb7a9c4ab7caf7a7bcc42039e48b19db4f142-a\nZ:Q1XKOb0B2ex2RLb8bAO0oetFYiTl4=\nR:cf6d1abdb96614aa253bf9f82d23786282f75272ec4d842473003aff05d73a0d-a\nZ:Q11eLE2CpOMZnxMYiONZNVTeE1+Go=\nR:cf79fd5841c46944fd84c0a840be73182482c669eceef06ca47122ec36c475a0-a\nZ:Q1ht11rnJpHMt9dmpBU6yZYyQRANU=\nR:cf87a34da8579bcaeeedc6d0a8db4c2c8aa09a3a01a5b8d1f011c8e4343236d7-d\nZ:Q1hSj+QPCL4MLQt4/0L5MK221zo/0=\nR:cfb0a856ad6ec6fb8bd10cb3d969fd416caa2c12e2c53b91a1846e4e782d3a03-a\nZ:Q1CIbri1xdlkhxwqxcw5ZL0N5VA4U=\nR:cfe6f1d24d813899de83a090bfb5824b991eb65dbca5c23e3d86eedee38539d4-d\nZ:Q1vekgWbU2l1QmpiNNUMYUKOOmfOo=\nR:cfe978000737913b8b619607aae1608fed9a21d3a5fdc384a1b5b362084e2fc1-d\nZ:Q1f8yWlMhK84XgMHc6Qiap/2u1G2g=\nR:cffb26c15c205ac6abc570df9e5140f8e026c92264f1a9a07bc7385a6a152074-d\nZ:Q1tFby9qCAlxHXmpNVVJGZt67LhCI=\nF:root/.cache/go-build/d0\nR:d01c4320784061f204ec2cc015c815becedd9b4ae0f790d7d1691de4d230e2f2-a\nZ:Q1/RgHKNbTzv2iJkPJ2oz36BWvL/Q=\nR:d0325f9eb8368050782206cd990faca427bd8ed8fa77689c3f77c46e1ae6b8ad-a\nZ:Q1pItBRxJuI98B48Dxo6HPC7+9J7g=\nR:d04f8b06e3e4961cf4041b59af25d468dc9f5a53193688e52379d476d3298b02-a\nZ:Q1Y37I3krhlHpQqMLXwiYH3Cc83VE=\nR:d07c3de642aa5019b227a4577c047702f2e9c91a690e0feba0703c72af9daa2f-a\nZ:Q1ZdO/tfeOQIrSauDt+ntGyoMxv24=\nR:d08a3649f00aee28a223f774b9b1ffa685c7e1ad794a65627603ec97c31aa87e-a\nZ:Q10TGBwqbB5yoGLtLRr9gKDSlpmy4=\nR:d08a4ab2d7058f08ef34f8da4b4c248bafedede99cb5cbd088a40cbfa2e79eda-a\nZ:Q1Sy2rbADY8pjbf5HIHhDMsErrsrg=\nR:d0a31980cc3c392277bc2575a5103e408cca92ace1abdc803a780b5795164582-a\nZ:Q1bhN54bTACwb6iXwLxGJKtZxC1vw=\nR:d0e1c0df5a64ab5dab8b608054475cfb503e7b0492167798e602eaab0c412785-a\nZ:Q1ASRmGLKBkW+ynJBFJYl/3GM/tcg=\nR:d0f2256557398b89927694b22054d0253b39e95df935a2209629acf37c422b42-a\nZ:Q1F8VJwf+Yl38P0i1hpGaiGpcn2ZA=\nR:d0f2770baf7dd1db4a3b9c1a4bede9ad80ecf93339c27d8146dc4362a7ebb1fc-a\nZ:Q1d2esbsk4TW0xffYtkAOpJfG2PSw=\nF:root/.cache/go-build/d1\nR:d1088073c0741ffde728037990a1ad757be0d7385bbf66573bafc56b59656389-a\nZ:Q1/PzJ3gGxuHFJQ8xGZ2VS8ONc5+o=\nR:d12faf90cece38ba1e8e746fe814ad7e117bb7e051858765626546b4e7f6c5c5-a\nZ:Q1GJOAoTQdlK5s7rvLbGKQI+RgRN8=\nR:d15819ae63d19e17b93c5ad02e197587b3c065e4afbbafaebc93bfdcdf9f10fa-d\nZ:Q1jUZ25XMvUJs1zFBIHdOjO2n3I0w=\nR:d17740d945d30b04aae34dac94c61e68a7830071ca34fafbc8f8d18658c2f95e-a\nZ:Q1T62IltaC12L27vV/3Tey1koF3ws=\nR:d17cc198b16600ec5fca673e5ed82ce81a532197e2e71d9bb0c34f4310097364-d\nZ:Q1PUk5ZMRt6Fp4A6U+SsC/kqEpMwE=\nR:d17da5f0b5926b73c8dd840a4ce26d775dcc51099e00450c8f565008936958f3-a\nZ:Q1WMwgpYtJggjJxjaa/5RzjdOl5yo=\nR:d19acdb67a0edb7edbbe90c25bca6706ded40680b64293bb75bd8a94d816b1e4-a\nZ:Q1Gop7Bom2BLNsgc6PbNA2oDPMFS0=\nR:d1a3b53e168ea588276e10a9af3c11e2238365e98a229cc209b402107f93ca6a-a\nZ:Q1c2gyHuVBlWLrn0go6alwxRZ8smU=\nR:d1c4ceef32bf0d884154d6e82891aa41b4fc3544eccbc6f61892735644cd1ffd-d\nZ:Q1pK/9hTWwMMq5TQiuoaMvVIPfyy8=\nF:root/.cache/go-build/d2\nR:d2100ca37fbef926e12beb0f49fc74a37ef9b4d30199a82a2723332ec846b9b8-a\nZ:Q1Y1Kp+OIpvKyNVxK/4+LxsqEnq+s=\nR:d22389e10f8e614cfe8b342a032a01fecd176862490a85c240d0ad0eb70de690-d\nZ:Q1Gh2B9Q2PVAaIqZ5iKtEnz2qf9yE=\nR:d2327f99efbde1db3556b40d312ffbaa36b9fb1e4fc1da3a95d09b51c22cd674-d\nZ:Q1tA30/id/Sgs7+YQ9iYkOy3vbfoQ=\nR:d2907eec2308cfb3abb65a72b576127ac80dcbd70eb4dfd811739cba9ed0674b-a\nZ:Q1/oyKZzKB+lYaJNpZl2YcXH4g6GU=\nR:d2b66a262c7c04297660601ed97b10b7cf76463f4ce66d5697573f4500fa0327-a\nZ:Q1y9rbegGT0DRRRW8R3aHxyPhJ9TQ=\nR:d2e195a08138893d0d29ff0a7f12446756806f502d29014c77cd3da80c67c918-a\nZ:Q12Wyz3Lp5nkSRyh1Gm3LbCOuyfH4=\nR:d2e88e92be39c7ea996083577f8eec92f8e71782359f0df27b3b6be0309f083a-d\nZ:Q1UXQvSwAhcc1nLPCuLix/XsGi5O8=\nR:d2eb282d932b369efde6c4edaad12cd9c676c75fe29daa973ee82ed157813136-d\nZ:Q1vo+up3LcsLYzDZsj4iCEVTIVbx4=\nF:root/.cache/go-build/d3\nR:d30c403394471e8c6923eec7de8aa45e5a8364c6f8cee24a7cfb98c1b298c968-a\nZ:Q1UfBeAa9YY0waZnBA3eMLBdeBf+s=\nR:d30d44caed042aee05dde2acae5db11269b7b358fa5fce32921849def108d074-a\nZ:Q1cguG2cIuedoI6cSZUvv0RQskOR8=\nR:d3147e8a7732ea716f50bd044b3589a05b3a93cb9e7c6415a58d7dff40e554b8-a\nZ:Q1wfmI7llzRYZePZR6Fua2PX5zeAs=\nR:d31d0e4f61798191e58f9887b7a05d840fac0ddbb0816ac06513a1de650b75a4-d\nZ:Q11rWD3mu0FWZ53BOZ2mC/HB3BapQ=\nR:d326be7f9aae3b35e49775caaf4de8cf10b0c34e74932422d87763fbcdb274ef-a\nZ:Q1ku4731mvkGYVZN8BknuJZ6i2ASI=\nR:d343396fb3c17a587c0011fa97fe58b465d028d1e3f22dd28f991c3687193269-a\nZ:Q1FqpjqvKUWb0UeULmHLt9sazkH3o=\nR:d350d1a2836236045dcafead9ef780f83e94004524e15bd36aa099533a29a9a6-d\nZ:Q1kHZ6+I8u1QMrV7k81VXeksw7Uds=\nR:d352c84206e44df6ab37a56c85c8a38a42980aa861435a759bc76ef7392363e1-a\nZ:Q1yEWn/e2USks7HaLXIOtrg0rB/Og=\nR:d3743f39bc2fd73714785b6a9880c6b2ef4e7a41b6f723700d813206dd68e96f-d\nZ:Q1eGAF0UR2J03CwsrRi8YSF26hcNk=\nR:d385fc1af8d583ba7e8d48ad30c2439a2738e982c1ae5931b6afa4fb4f88ded2-a\nZ:Q1LGpZblH/PAh/q/tHFh92phyRy2k=\nR:d38c4ac69fef234467c8209ca16c5770e0c0c29cb109a8d285458c2c988fe631-a\nZ:Q1q6Ujk+Si1AY3t89dOJw2ns7hEsA=\nR:d398c91b59413368dd89559171a5d395b3645ec29987ec6f1978289fe15923a2-d\nZ:Q1+eiY8SyuxOupIZRA4EvV7jeFMlg=\nR:d3ae57cefb1d626dc11d9e2b7b239264005807f0f33cafe4f182b42ccb1b50ee-a\nZ:Q1S9UdZSiylDekidNwrOA3QbzGSVs=\nR:d3b26deef80c66463fc88cf6c40be79d631c4e935b3b2249c20fd24e13714d0b-a\nZ:Q1kVYu9r6PvOeP46lxcBYF/5fCCSs=\nR:d3bd7a61183f84a924f8a0ff68940bb3f5ba95ff6595121945637272ebed6b3d-a\nZ:Q13Xf3yS/Cc5t5ySPYBP1CHBY6wKk=\nR:d3dda8a2478e55b018fe56f114d4f0aceb3612f1f7d754bc883a5d6a13a1c8cc-a\nZ:Q17sn7nf8UpGjhWZUBBSp1euufLL4=\nR:d3eb5deac40395fc8f71c2efc75794b7137fc622b769d72c004730964ea54dfc-a\nZ:Q1SKDhK93ATXL3h43XpRHL02T+ud0=\nR:d3f21047470b949bde25adaa11dec4f8bb3dad35cf0efe10be000340862891cb-d\nZ:Q1QtEJxVMdJGg9nhvIbwwXXuAdPj0=\nR:d3f3a64b7cdf1fff69b71797b6c2b4e7719cf6576e0b176a182d715cea2334a8-a\nZ:Q1Y6C8jWuYMTVYnfD12jrtwL+krMs=\nF:root/.cache/go-build/d4\nR:d42cf118831c439590bed38b93994d1fd529802f0de34f16d4559784c261aebd-d\nZ:Q1nZ1xe24iB+Y39P3wvymjocWj+g4=\nR:d42e461883381910fa16c15c19e7cfa6146cf1305bc87b2fb5f8162ad06e16ed-a\nZ:Q1yEB5h0hLQXHkIDFx2bJ4LVpOXvs=\nR:d4346558aeaa635655671dabf6672174eb20afcfaf81dc5be2d9373d93aad9fb-a\nZ:Q1C7mJtmf/BUG3f31RPq7IAx14sqk=\nR:d43b192313cdf2fb9dfa41c9f80a697cc93575f325047372f00d0343e052631e-d\nZ:Q15oW7FUHqTGdWiHX/p6mUBmP8oN0=\nR:d4451ee14fe1575b4e1b84429737d84b5bace8fab6d19eff3b14774e980162fa-a\nZ:Q1VCDLYJWGM2UfHp5k2cdd7AhnwFc=\nR:d45b247ad51893920682337e5d332897906a26f5ad477901177f2667d038cb98-d\nZ:Q1IaHRHkgnXqNUxxZ/wAK8sYBSQqg=\nR:d46fc330d4c6739f16b13289075eaa8a868643ee431b692ed069bbba1b32d1f4-d\nZ:Q1DDU0X46vnQGpOWPouKhaOcFoeXU=\nR:d4708632d68e8cc8e0918a60cbd1f02b05e4aad90d29c5257c1da0480f0cad99-d\nZ:Q1OBCo3+V6vJ0jdVSqR+2XzwsO3dg=\nR:d47b8fba7fe6416cf1bc1bfc3875bf6e6f581a376e31b7600172ab40582b99c6-d\nZ:Q1Om/n9jzEProwPZ2oapytq9wRy7I=\nR:d49f193a63b964113ec912b9efd852521b5fddab69eae9f59a90978fa38a7ab6-a\nZ:Q1mfe4Uu2/ieR5oezTTz+q5HAUVFU=\nR:d4a7a7b7e272fe0a2365dcef497c1d929e4c7fbc419cbca996f8d44a6f221143-a\nZ:Q1CVQHYSsGrr0N4SGOq6Im+aYAXQI=\nR:d4afb72c445a309df830cbc490eb627832c3351c48415a33aeeebe1a9fef08ca-a\nZ:Q1u1PU+mXI79YCTYAxwEhFawhNaz8=\nR:d4d53c3de397d826a46bc8a7dfb9fcc30aae2ab5d9023a5096cce46ee1126c7c-d\nZ:Q1SooZ6L/82XiQirgiIJRSVA4zY6o=\nR:d4f30fcd1af033ffc2ab9460c50f027285fb05281fd76342976b0088441d0517-a\nZ:Q1uKouhwOpGsgKIdDhmgrLSy9pmDE=\nF:root/.cache/go-build/d5\nR:d51ca4d9cba610de3dfa35c88768ff26370088d8ba236fb7d0eb1cf5d4227d9f-a\nZ:Q1JiRHwTkJ4nYmu0Zco2SAs+lkCzM=\nR:d52f9d2d57add11e61f0950e5d1bb1907ffb460073c910976fc2dc4fe6d01acb-a\nZ:Q1TY5l3u704dTwphaQPSNvbuASbyY=\nR:d54106553c64f98cac85c904d4feae84e6cd0d57b93bd248bcfa344c24df18f6-d\nZ:Q1JvZme0DDbYEuuKgCy3bYXpAOSrQ=\nR:d550c211df4219fb791aebf5af6369419e2ebd834b8800cde0681d94f4594802-d\nZ:Q1+h4TPhTyeSMXzAklVht0JiDUJbU=\nR:d552cd5044e53c5c6327c99fbc5138e1c83208e11b1f865dbf671ba6a26fdb62-a\nZ:Q1KukSX0a3qwh4aWA6rxZnShS6E2k=\nR:d5557286d57cf5943c195fcfed7355aad4eb10ebe40d64f5cd8b91ea55140585-d\nZ:Q1Jm+iIXCJKHY4WDGFaBdpc9/+kxo=\nR:d560e1f85a64a6526f1693155780a33d12bdd302d8d2043d15cc1308bae0e7f7-a\nZ:Q1tmLSop1Hi/4C8C5WAXxmgchJtvs=\nR:d571cfa97e8b2df76e534a593147fb33aa6ce1a780d1451db5d5b92ab307b933-a\nZ:Q1cSZKCUs2UFzmo5vKWon/ocO/364=\nR:d57ddb06008f7ab365aeb0f1320e98b54ef9faa29198b8e93d8f7c3aaac04bb2-a\nZ:Q1g7gdrxryurdDdijmci+ecBTY1JQ=\nR:d58a54efe0ac72acc6d0c9a9547fb0c2ae32089dd837011515944abe5bdf50d8-a\nZ:Q1G3qJJtQucrs81Lcz00IptuyU04Q=\nR:d592d391c953b9097036578525b137d80cbd7a8c6d4afdd070e931e23a78bb96-a\nZ:Q1YFFUdrH8Yr+3T/nnLGa31gkS5IA=\nR:d5a4f15672aa498ef19049df9cddf260467fa5c6ad41f1a1ff8319b402fbabd7-a\nZ:Q1zlmMyQa7xqiOmBWGwNU2TOps0Yk=\nR:d5a7915cc9f9d2a4833d5abb04bfbe21f4e8a6cb57230987be67cc53db913617-d\nZ:Q1YqJaycseDPd8Yk7wC3ZOn6p1ED4=\nR:d5b873b9240879edbe0606af0313c6891c1e5db7660decd3b227f3f5b0dd7ab3-a\nZ:Q1nmLW1pf1DtSUXV2eyERAa9cdY6o=\nR:d5c72bea6c5032f3235668bdec908c12c938b9f241c0fdaac94e8b6d1c60f1e8-a\nZ:Q162YhBWwcWvnhuz7dIo1jEyavW2w=\nR:d5d1a18a36e481aede7adc3fbd6ea9ea9df99bd97da41afa127eb309070a5514-a\nZ:Q1+bkgakBwOxk/iznwU6F6if7zrFo=\nR:d5d98a024ada48ba92ef127b4ebc8aa42e5aa97ab05159537987a25fc73977d1-a\nZ:Q1zq0FwhRjE8E9fwWthkECaSd4B9I=\nF:root/.cache/go-build/d6\nR:d61786cdd85eb780b76fb049c707ce2b480b864101c64bb2cb786a3e058188a9-a\nZ:Q1qbIbGmHBfLtaQfIJcROKywlNePc=\nR:d625867e0a765ef5a940e7f32f1f020d994f67ded8e876006144fd7c0a950228-d\nZ:Q1YzULOsxKB5uBGbAy2oFR6hXDpFQ=\nR:d62745c3df6528d700d6a2eb2b23fcd7c306bebf74966d359b8ce43f34890281-a\nZ:Q1LNerSwjza4IXyv4dfWZd1FpZ0IY=\nR:d62a7039f06f7157ea8b4010a62efd8253ec9d2218af3327a23722cedaa815af-d\nZ:Q1/CCLevH8QHkNnVqAPw5i9KrzsZk=\nR:d62ee341b969b58dd8a36f62fb8e1768062c466d66f1cf440364793b638a1189-d\nZ:Q1Xoe/oBhtXYV1dJmNdYzC5uhu1nc=\nR:d64409ce2534ee3b86f62c863a13954a69e7eeee4586eeb8a43f6ded153a41e1-d\nZ:Q13mRQaAR29yakNFEurr0zDmEsUF4=\nR:d644b0c77e8499e5d92b2c536a135a4eddf165ef51de2a5dd12d691e0c3789ca-a\nZ:Q1VZX+o8HbH4Om5bLAgj/4SuCTt9w=\nR:d645bcecbac784f767aada80f967f1198bfbfbe5a669d2ff1c9f0951983fc445-d\nZ:Q1wS51fEXmrwzBg/ZIDG65VaUCnIM=\nR:d651e4f3dc261fbde88ed159e36f64cdfa2f747a708b2bf02558de51a3f107b3-d\nZ:Q1rHND9ioKdsBH5lTc32MQ8J1t+0U=\nR:d65ca5a503cb137f4dd28364877cf86c735553c8b8c7e482aa7c714ea899f0da-d\nZ:Q1PI9SX9+WLg0a078BdwSG7lQ1lbs=\nR:d6640e7405553f703707ad3fb9f7de50d15794cbd3c68ad1863f3e5bdd224b02-d\nZ:Q1gHzMB75KgYBWfRK9jVX3+qWju+M=\nR:d672f17a137faf75604793a503f72ef2d6eb6a65114c516946446663320922bc-d\nZ:Q1CpNujuroX3HT9scFoSEDOUhhSnM=\nR:d67486cc52014a4a56fe299f8fa8d986c09009395e97cfcaaea3e9b4ee091773-d\nZ:Q1HAQl510tLvjAaZCY5xzE0nsVr5Q=\nR:d68343b2e1ec9cdfe9d419a5f0f6492c996824219d99c751e53d2b8b64028211-a\nZ:Q1YQg9KmSQNJIcmA+15gSxEr0Ubg4=\nR:d697f084662ef32de944a0a4eba9168c8523638b894b68c577b430a74f375874-a\nZ:Q1txDomvoV+/gO04XlMN+0IYeB+HU=\nR:d6a09900498e862cc97f0d5d85055864501c577948f08d2eef817b92f96bf555-a\nZ:Q1vjmBObETuo4qG78xtHE6VKEKSTU=\nR:d6b31ae4c3903be1a66942f64c33b6bcad6a2b5a7bfe48ec05e78604928a91da-d\nZ:Q1Vt6wRBoK/M4b/qR1vA/WWQpsN0Q=\nR:d6b68cc094c85268cf027532967ff52132ea7afc50504c7da604080f44660185-d\nZ:Q1t39SXgeeiBHbRfROKJ9/rcbLKPU=\nR:d6c695174d7df9812d0db3d6d8003cc320b96e17b17f2c92d1b21a3af0ee4e61-a\nZ:Q170UqrbfgduzgT6/nHeIyd55slcI=\nR:d6d527ce024ef8009c59679629859db4d8d0b7e32126b7687d8e13de3079264a-a\nZ:Q1p68UCkj5QhfdBdF0GzPtwuWRe84=\nR:d6feeb5b867a6da2b2f24a057ef89100462c6470333cebbe63f311a31fe7ddb2-a\nZ:Q1AU3aTaJu83GcFzy7x4f1WXYnH+E=\nF:root/.cache/go-build/d7\nR:d719a9dfd4d6c70ba135a10d2e5520b989e040a030790549932b23dc4900fd5f-a\nZ:Q1DTZvFaN0FKYvV+TWHWqGsM0aO8k=\nR:d71c62d023f6381933e71e7f2beb2497b773d756fce79ec675f3e06391bed48f-a\nZ:Q17xgoJP4ewPzC3hAEvS/mwZ5A510=\nR:d7459c37a081ad817a61a3bd2fb960cfe35acfde42cc682c1e2e48ca87075bc8-a\nZ:Q1rQ1sdqrjmJLgxkmROaxXnO5L3xs=\nR:d763c5e6a7170027603248e1888f8a80d6dd94c74f253b2d954daea4c9cb0df7-a\nZ:Q170YQ4Q6u8v5jSTZohehN1S233U0=\nR:d7710e0a373d1babfce45a20ed4d71743aed948d5000c296f58c1cbb513f09d4-a\nZ:Q1xBbP9E6ss+ICdqSXm2Xud/Y3CnM=\nR:d77519b23a6e4f04057ebdc66320c83e8d142aa34a3ab92454265aeb5607cc6f-d\nZ:Q1XKiG2xr5y/xv0KJJIWOhvHEW2Eg=\nR:d7c685223ad39a91bf0e75ca97c29040f7c0a943216e74a1b56822c1566fdf9e-a\nZ:Q1Qw3i89dZPrlwvm7tzEAbJQyPQ9E=\nR:d7c77616ce47fc13ab2539d4e569f1b5d256a9edbed9ca3c250a1f9e981a4bb3-a\nZ:Q1fa2RQlJSC4jvEDNscPwsW7a72ls=\nR:d7d2e7eb3d6b301de2614e4ab7865842d0765ceb1a9cf3f38787436fda361ec7-a\nZ:Q1I6n2tofAu+oa16pp1UAut8dYNzU=\nR:d7db4f2a6b3ed7905eeba7fbeea9abce7ecc34fe43932d53e388d15c06ed2604-d\nZ:Q1TBpZD57sY6n2janZIMLmnHA1igU=\nR:d7f9230bd60cf10c20beba927fa654e962c02d74b281b48a78f05d406a41f9e2-a\nZ:Q1WFE37xG13xJM97iszsKQnCB1Ilo=\nF:root/.cache/go-build/d8\nR:d83537b605867c21f49fd2ca9a739551392cb8502a298224708179d732d7dbae-a\nZ:Q1sKgA0/L7Fqr+d08+mEBKLTf+8AE=\nR:d84a4fd76ec5f444077f50128672b030fa18a3952a94f7a6bb6283ed4f771a0e-a\nZ:Q11wp6E0ADGZGKbjdxOEdMq4wLah0=\nR:d856568a6b7d77d2d0e1a4497541ec8a3855be063c29afee73cddc18399c1cce-a\nZ:Q14ckFlNiy5HXX9GMSEvmkZBM+2MQ=\nR:d86f84213deeecf6f726d14c1e30dfde203b8a26dfe3c7b0dfb6e21deb36fd0b-a\nZ:Q1JLalNfihdSctzRX+IsbfLXaQiv8=\nR:d87cd3b80b0d631f8fc2b3ab0d0b8cebe725cdc0cab9a6d2651e598240dc5e36-a\nZ:Q13ADJVLPBMM7TwKZwxKSRu2T5bCs=\nR:d8924cf1553038b8a047b9c9f03b25152a04fe413892b3bab290859bc6c90c58-d\nZ:Q1DegWFmEX6AbGeBBuJO5IPGpdNzE=\nR:d89eba172bcca0f2930862ffccc565aad69d0ddad9d510afc871d7e84961b8c4-a\nZ:Q14tW/RxdPSVs0s2iIbkg1N5gAV8I=\nR:d8a51e70129cbb7f47aa1ca1864854fc011fa21188b8516d250c1523c259249e-d\nZ:Q1MM3vaZoRZVRJQBYvVASfFGq1DJc=\nR:d8a524735e4b02776cd548a67ec53f7fb0f41fd5d5ac5e9c13c7e23dc205bc15-d\nZ:Q1d/f9tt55QdhzKzMT3eM5XVCnRRc=\nR:d8a57c8d4dd6636e6b56f07cb27aa51ce7d513006eaac6751b6f9e636555670f-a\nZ:Q1gi6HHdhF4XIc6BX13n8Se5zYSjk=\nR:d8a59856e606a63bfc84a253c3ed2da6f22a23f5fa22e48b8a8923a929bf885e-a\nZ:Q1Q/hXHUJywcAK033Q1+mL+bIBucU=\nR:d8c81ed1d4f37f760d237184285815f765e0ec2cde8c2d68be89a78ec0e6fb78-a\nZ:Q1LbSv27bqgRRzvagIunPmj02oVzQ=\nR:d8cfb60e2daefb11bd10860284085ddf8cf05ef3323347b1329ab6785ea61f6e-a\nZ:Q1qTkXzMwvkOHFDKLbGxIy5kL6p8I=\nR:d8dd688966327c24bc3c5ad5c1230f7f00f34e8393584890eac6e930048e2c81-a\nZ:Q1/PNRcfYEFTB/Gw4GAIMcOi5J2LI=\nR:d8e417ad194e69ab3a8b5943b7b6d7cc4b65603f575662b72c8d7df382c5d939-d\nZ:Q1VmcKkC8+1mPJw1tGjOKKp8fbmr8=\nR:d8e5753cfa6ddc0efa205a71e55d81c110675315833ff5747cc55e345cba6e18-a\nZ:Q1EE2yYtEfBDfvmr6zWOJEyg+RNVA=\nR:d8e8ffb7437e4f00a3bff527749da5a40308bd19435f3e83ccf6ebb4e6f3b1d3-d\nZ:Q1WEjIDPdmquJatElAQTbgy8th208=\nR:d8f7f08135fe3aa16bcaf684ea090163ab240129cc4ab74e3d4e5b347903e7e3-a\nZ:Q1VmzC5xkQGPHylN8Hvc6FzAbUj3E=\nF:root/.cache/go-build/d9\nR:d9363066bcc5feced5ed8fa65cc7f05ac180a55b14f31c70e1ffd09fdfe21955-a\nZ:Q1W+X4zeVVtdoZ9uQA3C/RSdj627c=\nR:d93de5d3d7db1aa4bcafa2b9ea5fa6dc7b7642e205af5d1c3fa6284c81cc4dce-a\nZ:Q14ZftiNr7ZB8zU6NtdSfEXgwKkH8=\nR:d9488dd1961f65fee5be130428252b4ef517173ec7290cedb823b741fe73207f-d\nZ:Q1qhZGWU0CfTQB8I0w5dBT2ptgZNg=\nR:d951cb4ac6d71ba0d7f9b4ab84e79869ae80d296e2879679d242dfe513991004-d\nZ:Q1kn/6bp7Q1Q2n6gZZ3eyNRskGE6E=\nR:d952e045f0d03058b76ec3a0d841dd5ab3d3fca55a4764a116247f5c85e7e290-d\nZ:Q1/MqUhIAim+uzEb1xefUwC1/+8fI=\nR:d983834bdc7201dd3c0782694fe5bd8e127af6fd9abb985f8060e9575bb47c32-a\nZ:Q1RQxZShJ/EEH7ODuRHPPov23Ho9g=\nR:d9849b8566d807a4a12a6dc493d521d483f10f03b444d991220ac55823144779-a\nZ:Q1IqAiNk1tz5wky7V6NkeUl4CJLwc=\nR:d99a4e71aa5783bdf0420d1120566f9e4a24e9975a6623caf1667a4223db15cd-d\nZ:Q1uF3GS7sxHIcYjn3y1ReWgrrIExE=\nR:d99d2e6fa6ecc177e309eb1010c38e6246e3254463f501e069040743bf5719cd-a\nZ:Q120aNKt7S8fu8pxcCz/tR7uMzKYQ=\nR:d9db7c578781d53ec232d6231df0c424d2bdbd8648922c7babd839a72fbb7aa3-d\nZ:Q19yvz4BPMBojZtfXydthzqSgNcOU=\nR:d9e39ed82f97df04ae9a98e51975fbb59d168bf0a1466630ef0d9f88ee45c4db-a\nZ:Q1Y8T7MiMsLIXBDUtepkoepuCv/fo=\nR:d9f5577c3b52d6962ddf7ccd4d985b08e9f44f0ce3e3afb1803a93fe8faa9848-a\nZ:Q1GdgVCjOMUaoRQ4jtfpHNwuwXYkY=\nR:d9f6048938741148de83ef2f0ede5a3697dd1bd5de421078b5f4c5562dda3a6a-d\nZ:Q19YvY32hnyrkvyuQO9l+Uigq8vtQ=\nF:root/.cache/go-build/da\nR:da4fa2b39ddaf40e0b8ee98869636418149b6482991a4c1ebe552f20b1cd5c35-a\nZ:Q1065q916Z12hex1PvRSyh3KMVvO8=\nR:daa1d0fc4bd9dec83bc73b34642127bf51e837c9f174d909e40d9597297699d1-d\nZ:Q1a7I54c7tiRj/HtLGaejwLqPMWN4=\nR:daa6d647f924746ea4e14674a465a671ff5b72caa7977bdaa99d9456328bb3df-a\nZ:Q1EL3vezIGaLPJcydqATlj9kbon6A=\nR:dac398de08b51d9b636c243087536bc521a318098d173c94afdb70a69adf698a-d\nZ:Q1pfvxsPLj4C6qrB3tZGg5OZGArIk=\nR:dac7bef46fdcdc3fa3b937a1eb6dbca32951da8f85d9f876228bdcbc6106c607-d\nZ:Q17dH/yA7YjezDPRJTsAOOYnzVD1s=\nR:dac99fe19b4d21adf1002350792962830e790ccca40e32126b724a48c470d02b-a\nZ:Q1B9s7dCVxc/p9v8WKQUhMSLamfig=\nR:dad73951c09940f89d627b9fb383101806f083fe3392594a33cd9a0a354e1d06-d\nZ:Q1pubEc+uWg/o60MU6MqkCtBRV1NQ=\nR:dad9df47bd2b5475f6849cf6a66aa489baea9312759d99dfffab1ef624f1333a-a\nZ:Q1NJznZ/ZVJR71ZYW0f0RfJUugzoU=\nR:daffee58c959291119911d37931f2215610ac71590ef05e7566dd7e2c7578352-a\nZ:Q1DIgHv2+HaQDLIezljLeLqT5aZPo=\nF:root/.cache/go-build/db\nR:db0220fd4fa209f82a4daa27ef716121f3bb8f1d0819d3e1703be625f1bfd620-a\nZ:Q1yPPdwr4DrxV54cGL4Ko/1CYBg1w=\nR:db0b8356d6a9e19f8d0e02461794335187581fa2a6dbf5de99f0b5bf8327fa6b-a\nZ:Q1+2t+WhdEPYyLf6SA61ypXJ4qqCE=\nR:db11d3920cc1eb1e893182f2522a3820dddc8c6647848407526ddf93d9be38f0-a\nZ:Q1jIi1pdJE2hoEzAXiScJ2NnrRUSQ=\nR:db2f015a8ce17c1cae7a0b2d65d0ee334991f3c07654b8db7a96befef1122132-a\nZ:Q1ht89tBQgV/BCeZ6mpqyeczOqEOM=\nR:db594008a2a55891dd1f69d04c713fcf1478b7ad903c3c1f175cab5aad6470bc-a\nZ:Q1TrRFt1M5b2hC3qUak/zA9p6n/V4=\nR:db5bc27fece5c6a4427e3314547babde9ede2f757c5caa567bb446f44375be2b-a\nZ:Q1gpd8TfWaBRIBwM98lPWT5KJlbKI=\nR:db5beea82bbc5b44b9a0aab3e1f9cb10691231b28bc7cb5dece7a0d5be359c25-d\nZ:Q1MQglqe4RFi8XpXzmAgN7vsYRLZY=\nR:db76d4ae760b5522db8f4200b07fb4aab5bebdfe02e578927712a718e5ccce81-a\nZ:Q1RegLLDgatxOg61h2Wf5lalctaEU=\nR:db792d2f4efb068784ea39167022a98453b1399aa83f08a7ab0e1090cb2abbe7-a\nZ:Q1rze+WhpA74BOyM8pu+5hjes5tRU=\nR:db7bf710a76c191df85bb19f9ecc01192845f7366b3b30d3d037e1e5b124622f-a\nZ:Q1P39JJLN08qyw4JLvcSWh1ieRxqc=\nR:db8978ff48a98ea452a157579f3f0abd4136f77d2bf0e9210882fe520587ac63-a\nZ:Q1pMozu0sPR0OYGH0UZBNmS4NXVHQ=\nR:db971d8706fced19bf5c20cdcd07f538e435c194633fb339ae82880dcc40aac5-d\nZ:Q1dS8GJTmLS1pEE6WbV3a/DVd1zVc=\nR:dbbd59d2d7ebb16b666ff0587040256635380c6cb0ea3c8e3ded4f1e68c1a6b0-d\nZ:Q1KFmmc0u4m6C9mwGA49WrRYkg4UM=\nR:dbca41c25611a3fd4e03fd170da021d1241f9572af5ccff3e54f41b4e3d7b80e-a\nZ:Q1bCGsPwQBA2fcAzVR5YqBC2xBk1g=\nR:dbe9d850d4b7ae3b8bd802b341e7f719bb5865713e8704e5faf0ca6c47122fe3-a\nZ:Q1JpbCz5GRCJyOq+KDCVrjPqe8k/0=\nR:dbf1eb07a0c743348c79b3e51ea342d6ec72e14d0e5c151ea967d2b3bd73edfe-d\nZ:Q1YlVNE6meYSe8mB85KtUFF+i7gdk=\nR:dbf8f86e35074a616a4c3998adf012cc5bbc3e73e679700ad701973f25f2962b-d\nZ:Q1zbpKsuer0/RcSgD+S7h3SqWPz0s=\nR:dbfaa035f977a752319f48358f11a713d971c9cee58cec9652562d0471b0016c-a\nZ:Q1StodhU8meAn4lAksMB9LX/Ha3dE=\nF:root/.cache/go-build/dc\nR:dc07d9796d194552db832c2e8e33f04ca1e11c36df2f9b6172b74d39c31b76d7-d\nZ:Q1040WEIn1qV5sH8TE/K19+Z6gwzo=\nR:dc07f6aa18630362e375af1f1b75156b63d7ca76daa5ae709271d7b1c0dc272c-a\nZ:Q1LpshLcsC73IpFnibLxCUWXLezWI=\nR:dc089e28d772a63a24c3c5bf0422b682d803c856ea8c49804c074dd31cecb6c5-a\nZ:Q1UckkkT49BPztmwcbOzhw13Qb6a4=\nR:dc0cdd65706bc97fde606c39c17fba7b35d101eec7ce3a342b0a8c196f7410ae-a\nZ:Q1U8Me0PfDB7zp5pU5vPFFNNq/eyE=\nR:dc3438b3f5b674252df1d40db26545846e7479b940b598c12b3a599ba776d5a8-a\nZ:Q14sFYrsBULnmGCSd4Z5ESutgGffU=\nR:dc35855547d6da9b41d1be726d04d5d3ee53360fe50c83ec867b544604f585a6-d\nZ:Q1rse/FxEm53IzB6hlVoOc1jPljdc=\nR:dc5d30d359d23813646cc2715a7ab69c4af367aada297bd19398804a5c08e839-a\nZ:Q1YInqf408AAfN5l9SmNRaCiE4uGo=\nR:dc5e6991e3e8dc4ad5a05480a66da7b5a3ecde87389f2bb046680321ad7bbd10-a\nZ:Q15M+v3b8/9aGQhjPjVawapeJO7pk=\nR:dc63ef9131100ca43f42cad3afc39c8898261b796398c0fbc2391c71ae66ba41-a\nZ:Q108lS4pcDnMcovBsOCq/8LzH/tJ0=\nR:dc65e2a61e66971d8802ed516b3c9b0b2a75e26f8e8474d1f10143df75b1e38d-a\nZ:Q1ifZigg3+WdjWsk5d9JlwsDs0w8U=\nR:dc6800515a36288d4ec0349e969f27b47e440b680347e92f3666625a2aa63d51-d\nZ:Q1WDg/UgjkHOrZ6rA/yJvxn/4t6gA=\nR:dc87424c47977b16a02a38d6c9496962b8c43a1c52dcf07ee9cc110a8b1200e6-d\nZ:Q1A5BqO6DXQaD25mT4/quIsfGwyOY=\nR:dc87c2ddb1d938de6c4298f36d7198889a1f6e8fba9d95730ead9e8beb547a26-d\nZ:Q1CNEoaEuO0ZvRpy7DzuJTdLwE6BI=\nR:dc88b36188924847d3d1671b7df88a4b26537a9a36344cf15bb4b9e511162bc3-d\nZ:Q1BbArNDFmtBdOzHeVcLBl3uiyN04=\nR:dc8a5513c62832f804affa15ab784604caf8586774de27015523aaab2999cfb6-a\nZ:Q1oNL8Ij23MUwWdYl1XLxPM7HttHM=\nR:dc8f2380c752422e61d6ffc25525a23d972955cbe9584b819f4edd389a02517a-a\nZ:Q1vPoohoms1uHpkK4iGYKmwAw48Zk=\nR:dc9c05030884e7d31491f6058762b85568cd955e448fd07ea61bdcdf3dd65ccb-a\nZ:Q1kDqtA1XXQ2y5yH3UNxcOdYwCUzw=\nR:dca84019db60970cab6d849f1fd6866b344de14a17bdefc7b87bbcb11f133738-d\nZ:Q14mf1c9HY1ORHKqxCWTivubvXhnc=\nR:dcdbdb7453fcb6c92ab1e99a615cd8fe621ad5345b309f33058dc32991de0305-a\nZ:Q1BBFsFLw5KwC1byMK72Gb4jmBBgc=\nR:dcdbeef24e6e9066a55c8f8a9920fd0881889d4fa1d240a9b6e84d08237c5fe2-d\nZ:Q114PqGLgLokZDvlW15ObBuZf+4E8=\nR:dcef5271c178d18ad550fbda754bbba8c36d01b4765dbad29f8ea00e2929b918-d\nZ:Q1H0n8jOVa+5uxeaNsiyPJo0AD488=\nR:dcf621ad42f8f8ab875daccc47df39f4287eadd42037b3eb8a479674aaf9b291-a\nZ:Q1/uczCwm8mNJTscTf4oKfhwYLths=\nR:dcf7f1cc6bf5a90ce3f436f5fd3776c1a06fb78262991f18ac6d31d5dbdc10a5-d\nZ:Q1AKG55B6zmVMCsDPmzt9EW7soZ6k=\nR:dcfa3bc0bba3f5ba3fcbeb1455a792524591c5cd1627de143e84039e2a427246-a\nZ:Q1B3M4ankqRhuqpXCjdoq+9K2DvpY=\nF:root/.cache/go-build/dd\nR:dd01b2974d6865e11601c80fe437e9d2d3301efd019c50c2d97a661e69c794c3-d\nZ:Q1GpJl3xrOqqrM3EXDPjHvcABcFjk=\nR:dd20335d8ea9f809cf81431e281c125db5b24d3c610a4453fecd1786c3eacb35-a\nZ:Q1tqzBqX7PDDcvkAcUleLr+oCkboU=\nR:dd2cb001f27476f5335ca14be3f7256cae70068340e7535e25888dc64be2d80a-d\nZ:Q1VXYd1Nyodg+UlRI7vYwdsoXqPiQ=\nR:dd3208d916166f097d9ce34b70c8931abaf410cd64353cb2bdef028ea953aac9-d\nZ:Q1Rs5H4K0SeckBBcX7aEj64NC2++A=\nR:dd5c95d6755ef4104802cbdc77c458df84449fc2fa7cc72a7b1b6f21ecd46d81-a\nZ:Q1eYtNBHMakHsyzQ2cr7Z2lkA1a4c=\nR:dd79775ff4a2e4a57d3911d5c2dd24a9964eda174f983047b183407899d5c2e9-d\nZ:Q11ZjgR7Okn5llcoqP3gjGXkcHMMw=\nR:dd9633c3e93924808a17181ceda8c1a67b0d183887c684ab7b8f0490d0330b1c-d\nZ:Q1U9TFHP1Mj0H4C6UfvtPvUe/66W4=\nR:dd9660af7bf0f8f233728ca568282bd5348747d30ef1081cedb47776f53c710f-d\nZ:Q1cRcoWuG84d14AEmrZ9fWL0DGcwE=\nR:ddcf9bb4e90b1346dce28069ab207aa1e7db06b07149526ef27565b79525b5c9-a\nZ:Q1PkBIBoq3pZZo4b3o731jNfwxPO8=\nR:dde2143eb91ac628f57b372f642bb0c42770e0e4b175b790583e02588596ebf4-d\nZ:Q14ypbrSfMmTKznRzM6yudujUqt7I=\nR:ddf370b7b78c5439c3c007e86546851555eaf739cc0160b4bc6686ac93d3e26a-d\nZ:Q1LcxF700Ljn/xO5qEWhaUiAWcW3g=\nR:ddf4f57a9a0f7d77bfcf391b550e2bfcfa71a9f46b056f6e7a220a6edb4285a9-d\nZ:Q1jBkrn2+blF4Vkpb21qC9qTeIRBI=\nF:root/.cache/go-build/de\nR:de649eab700d0451d280f6ea7c7f988c08869eb4fd14df14ea99610651885ab4-a\nZ:Q1v1jRIlE5hh5bvscrsFYPaf2sDl0=\nR:de71912e053890eb5d08d368138bde1063cb97d80e1b65ee959622a46d6fd464-a\nZ:Q1GgC0sYPSFSo+8mVXynsRRj9HUsc=\nR:de84fedd0dd9c8740a90b11ef149c52ac9bd0ec111ac2dc8f588899cbeafb8f0-a\nZ:Q1UZecOSiOVVKsKg5mTQWBelu/3LA=\nR:debb851d1cfbd0a38b04926eb8b42744999e4f8af9e0b927d66a2a588272ab55-a\nZ:Q1x10SnxSKGbhhezByZjLt2cQp/Jk=\nR:dec7c228584fbcecfa292a7f21210fab744776691875cbfb2bd1e238500cfd52-a\nZ:Q1za4VBh9HdGCGtzRXV+siNr2svZQ=\nR:dec853aec27d43ab7057e3950f91a92f0dece381e5baa97850890f7effd7960e-a\nZ:Q1Ql0AxRfyUoSfplHz4b7piC7B8gw=\nR:ded4bd395c63cdb43c5bb285ea54b312739a1378e44809335ea521ccd1e7be11-d\nZ:Q1xJ1N1Iyx+eJN2aQZ4PNmuIa2gyA=\nR:ded9d1c24aa24af9d2963749f12fb22ecd94425d7fcb2504fb1ac1de4c1212c2-d\nZ:Q1gFnHSOB8sIeeLwhdI/QiyLOt46s=\nR:dee0c39fb7dd02a362d1c723ca7377dfcf539b233724e7ebb80909c12b9fd954-d\nZ:Q1VA5agcimtzP1nNxMAFxX4kKS4EU=\nR:def43dddfc6e88c8591e7f57898a1e34a3ee7eeae9e5f3281f01d182ddb627df-d\nZ:Q1AEsozEH6z21qdNKjWiYJKX4NL84=\nR:def9199caac8f1e602b50e35cdb895c6f15389b2cf634d74c7c1fa1a2bd6c2ce-d\nZ:Q1ozqkWLNCtoSPcYTHEGYYJJgHkdI=\nF:root/.cache/go-build/df\nR:df01d12867629a4706989e0d94076223ad79e4549136a2b91e058448aa0d2efe-d\nZ:Q1axBRHiXfdYl8ok88srOK3dJ0LUs=\nR:df3b9cd2edbdc3ddf972db198e6a598f7a36f661de20f94e88691c0da1e03bc9-d\nZ:Q1eLZXoGtlq1MuCABggr44S8wZNdI=\nR:df4bfeb82faa5f61b8be4e54ddbd25cf0f7cf500963f7837a71feedd238852e9-d\nZ:Q1fsmuLe2po9kI5HvVG5zWwlTlmdA=\nR:df4ec37164791ff72d19cc8a11b64d7222ed28143bac440f938616037c102f47-a\nZ:Q1eLs75Usp3Fpv+8NlHRyq9t5+WH4=\nR:df906e8d85c3e8539d0148663758fe33cffd327e7bb0396467fbf0264de556e9-a\nZ:Q1+E/+cTJupilR39+L0n8TC+Cq3n0=\nR:dfcfa9bc8a050acde108ece2a8a7164ed871efec9890e60f5446938e7b0945d3-d\nZ:Q1mksew+tsr/+7nKwAXOffyF5SdeU=\nR:dfe3b92fe651a0452e4b4678c6ec80f9f4c2ab27a1d67fe8755735a10d52572e-a\nZ:Q14yFWOuxDYn2RkCXiTzfJ7x6CMZ0=\nF:root/.cache/go-build/e0\nR:e0495bea37e1fce07aa628a31d4a049d62137c58be806461b256082b5de8b952-a\nZ:Q1+PG8ReBXIveTcbQvrO8nPkti+rM=\nR:e06a443d362c56efbccd5c76537ac7dd7f67e2235d3b842ef77f8c4825c27981-a\nZ:Q1XYmHSjlTkDs61dibpuPhlqrbjdc=\nR:e06fcf1a72330f430c62ac00c13688e60942ddf52fb61af2454dda182c802eae-d\nZ:Q1ViEjOV5c1OoDvfbGb+UQGuaccqE=\nR:e0a75f5c75f2de5f483f30c72bf4a79d4868a2669669b0b59774201fc4c2c775-a\nZ:Q19N1KU2nZk2mOoW5Uph7H42BPiXE=\nR:e0c30734aafe104a641a887d1f7e25976a1072a98857688b5b16fe805c8e1aa5-d\nZ:Q11f9uX4NwJTDjkRy7mfqVjL2rDus=\nR:e0d956ad7c00e650af8d2de1759ee4177af050effe26d816dbb0ad23ee14a68e-a\nZ:Q1Jm/5N2uQ9iK71sDHQOqhXKKUm/U=\nR:e0e1efd3cbb9ae2a0637af368aca8ba159de1b86c9dac59633f9a55e4016f8da-d\nZ:Q1uVQN9SrlHaA+aVGJDYnOvrGy+ck=\nR:e0ed15931bc10d640087442e4cf611cf1784be2a58009e23801c12d3d46e4702-a\nZ:Q1cR0/oFf/nk2NovYnbaV2SdKdcsA=\nR:e0feeb426d4d6464285b591b6fbfdd9350cafe0b10eed2a3a4a76b5e2eca5370-d\nZ:Q1WI/1+xZQG3IdX7wox06g91c5njk=\nF:root/.cache/go-build/e1\nR:e1007a895a1d5a27460f2488ebec9f985c74b0f9555223c959701870875fcf33-d\nZ:Q1sT6sPxnVWNI8KDTnBy75F0oF6iE=\nR:e10fcea14cd7f6cd8f0a0711346aedfec89badb9893d34ca653bfd32d16335a8-a\nZ:Q1HWsHtME8yXAzjkzRYD7pwA/9fzQ=\nR:e11a400f617ab9cc30932711642afcb70cc0a13cead1df54b789003b9acb8cc8-a\nZ:Q1Mrz/G0CQ6YIfBRqAbcAGMSt0n/Y=\nR:e1237a0bd5221b9e17bc06fd2d0b60d1e93f7acb01eaf471dece627b27759135-a\nZ:Q1SDtbPAPJeVdXSc39R6qo5ZBgC8E=\nR:e12de4f5c8c3c2d442312403d55ba6d1e1f37a8be744cb31eff2a2db6498610a-a\nZ:Q1Y6cI9Law1nCTCRZMj7SLorwLFM0=\nR:e15a1b68ae986bf77b83cd691beaed462632a15c47f750289a45a5fe720b8e6f-a\nZ:Q1ee7q+EJBdyqwLaKxCfIABzI7Pkw=\nR:e171ad3b27fad13f49bc4ee36158ca2bde38ab7f7b6cce3136039518c4560266-d\nZ:Q1zPaVYRyymmkg6LskChf5HYFuyi8=\nR:e1c0aa1c4b5ea77cc74ebd6289c212f6af2c7343bae4194a56312cf6f900e642-d\nZ:Q1Utj56z4v7NJtaLSqrGMCII3zdr8=\nR:e1cb6d0fec6ad9864e684988c4d5cd8648f7753ed7ad15eff83f8b35cd6dc07c-a\nZ:Q1W7XjLXTdgq8WgJf6K4unIYA4uT0=\nR:e1d96fd2bd8110a1e97504a1c19304915008897cabfbaa85369ed92a9ad17798-d\nZ:Q1hJxoXujeaap5UqD36GNZ/aS+/bA=\nR:e1f34544ef75a2655c6fd6ace3b09e5cfea81742fc736823ae2cc3abf912fb46-d\nZ:Q1jP4SG6Y7rst1mgmiC5dQ9Cb5BF4=\nR:e1ff3e16ac78ad9d4b9c6c92722efb94669c7e84538f59d2e543235a236c4cc9-a\nZ:Q1t2N8Z3L1UWo+4WTMZylFBPEgYWM=\nF:root/.cache/go-build/e2\nR:e250b1cf020e369ad703e6f3a4e2f2b9ca61c50c3dc9ad1b9d47f1f474f3c05a-a\nZ:Q1genrmN/JPliY8F+PHctw1lixnmI=\nR:e285362c3c1d2eccb958c60d341b30cf5928903cb7f70eb8f3f5aed900f5c542-d\nZ:Q1PsjX6yow1wZXVoUAEd8kU0IF8ac=\nR:e28985088be5a54a0a04f427b4fa1ee8771e4903abc4ebf092da6cfc28c921a8-d\nZ:Q1OGdFMkTYm65AIkFiMTdvLwIG1BE=\nR:e29a38674a471e097ec48c36086414f8db5f1a8cc335497e3de44db0bb5368df-a\nZ:Q1b2jEVmGc6CjIiYeYaqvmM7rUM4I=\nR:e2a240710d5983b5f84ccf1f05a8c67aeb79acf6fd7e66d76bdd9b453a0dd8c6-a\nZ:Q15d0arzVFTD3CFS24msOyMVZxW+s=\nR:e2b4a77e09f6cc81bf0a0212d97ee7d2de2b248f36ca7070fe66cda8d93c397a-d\nZ:Q1vS21ArYZbhgvsevhbep5PbO5tXc=\nR:e2cdd3eb7d2fe743a60f75b4c7d4a5bff810defa1d9f9b284730e431603fd43e-a\nZ:Q1uBrgLJ0SMlW/i3I2tXbsjG2HVqI=\nR:e2cede1aee1a1b3288c7da337b7948b166497ea79ba829f1bc9127fd75b08b0e-a\nZ:Q19ocUZKGr1cFHBab16wOEraMWlSo=\nR:e2d551d66fb9f15d51865b2d46ff620a58c7eb413dd52500494ef9c50576b7e2-d\nZ:Q1OqIdBVtW8gVOnynZmT8qSlsb9eY=\nR:e2de34b4565c8f05269081211d2ef01343bbfc00fc0c64a4380ba7200975cc22-a\nZ:Q1XVjCNWfx/VPCYTp7G1kFYFX0fu8=\nF:root/.cache/go-build/e3\nR:e30778b862818afab8081ff70d8014219d96b198bf90820d21551556300a3b64-a\nZ:Q14Sg1/BzoZAhpwaiFWJ5HICLm4yM=\nR:e31c2c86540cb4e4b63fb34295d85f2356fddb823292b60a5b0e0c030999bfbf-d\nZ:Q1w6/FdjNkKSBmtdsVsfh7fURNyl8=\nR:e3243f41276ee33e101fcaf4cbd7f8b64986f93171bade92f01cedc4323acb57-a\nZ:Q1ueLsl6ELwp5JgdVjeBuRRuwfhoQ=\nR:e33b7d94a019196e4b19384ff0a5be71e36e1deae2e6389dfd3a95dfbefbaa26-a\nZ:Q1iBd0MgbOKRbEhe2ZeC4egLtFjls=\nR:e33f04101dc3e05c1fe7f6b65ae3aea51b91cace5cbe722b9adbe7f3d1634965-a\nZ:Q16deAOWc5TCgirm/EMtDRIxJ34ec=\nR:e3552db9c33b968001b6a06945704bde520c3a5af017dd32bc9a3fb0b47bc21e-d\nZ:Q1X+yC282MKCkh8Uzr6g8cuTn4cjA=\nR:e35b54665330a664151aa26471f1485185a930883a8d09f3761582588ffd940b-d\nZ:Q1v24It73xTmsJotNhrNXxgjEMz8c=\nR:e360ec1f51c4bf78e557020b4e111ede09cd0bab615936a81dc266a2af91cee8-d\nZ:Q1UV/8ubCmnAhlhsLbBTJXOuciYtI=\nR:e36465d7b32e890d52c5833abcb4e5a1a53fdbd35b3e87a659de0c188250a15b-d\nZ:Q18hGzEPdCtk1irDHrsY4YawRkJcg=\nR:e36dc7d9f9467e1769b20cd72547848f03b37cb6e84c743a1c80b00917989942-d\nZ:Q1/FGMDPEf8lDcCon0JdKUfFGX15s=\nR:e3a348dc0dd402618061800a702cbb7a0079349ee89d69624333dddd53e2ecf1-a\nZ:Q1iq2o+hVIvWqHZWHlXy8QOS0K2Pk=\nR:e3a58a51de5f96ee6487fecbd99bc29f0b7ef133273415cfa246a397e7bd8efb-a\nZ:Q1JsyEjDhVeQn38cAb6bFIM+PGQwg=\nR:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855-d\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:e3b7077388e0adb3d2f5259dcd2d165ecbe02407c8068ac055dc68672d97379a-a\nZ:Q165e3zNAURQqQcGluHeUTghTvWQ0=\nR:e3c579f5924d1699833cef689730494a16b0296146018aec40d99fe1e5492aa6-d\nZ:Q1miU0RUnsrKpsVj8H51JQnIYPsW0=\nR:e3d1342f32d71e0e6aaf563f73edc28d07102b07b3404abe5c9a9acf854fdd4d-a\nZ:Q1HI3EaiHyeSI4m7mGXl3QrPJ25ZE=\nR:e3ddda0d27ec7ad6e17ccfca87aca60745277c4793daf85f325491c8d2d9102e-a\nZ:Q1wen+XTaODersDeyhbg13o19fvfQ=\nR:e3f5ae18eabe138d8859a9661e6b2d08de5452a038508cca2f7575fb338cd034-a\nZ:Q1cMn7UQN7IEGsqctQBdUifgdcsVE=\nR:e3f9c217acb825bc9547752a8a6cd668e9053c7ba32606930ae09942bcac8c1e-a\nZ:Q1gz/KRkm6A8DLOiBUglfTuPEmho8=\nR:e3fe9186f4640cc8a74199a4dc52d058e7d9676e34b124d5fd9b5ca43ecabaf6-a\nZ:Q1oQD9Vgn1XrZbXL182vwXLFT5Hhk=\nR:e3feb9da9acb6c4548cc06a8999cfc1bf9ef97d4ee89c4623cd48f094ad42977-d\nZ:Q1yq2D3JcfTDRv8+21n480nx+GU0M=\nF:root/.cache/go-build/e4\nR:e4175209a3fe4d7b5577c6898cf4b411886af6685d3dbd015f1f552be6450424-a\nZ:Q1ao2RHe0EN06oU7rx5WoPBUeYLjs=\nR:e42eaec7b17954422d54d6e6ba14a2565dc6f1a35a822d1897d17baba8d555cd-a\nZ:Q14qGfstQq/zaoKxjUPRodrKeJKi0=\nR:e4506467bae341fafc185dae6dda376dfd114ed236d10fb756d115640992a641-a\nZ:Q1PLK3rUg79u9IpTQYO1OZt6UBzmQ=\nR:e4575c2fae8977c3ec9527ae1639f862cd5f3f1047180386d9705aa032f0cd99-d\nZ:Q1x8Z0f04h+cuHmRI5Lm45SBth3XE=\nR:e469d7205d542ebf0f831e526fe91a998d2978a212df1faef6d58b6db8035399-a\nZ:Q18BA8DRYuwOPDx9E0DFRLIoMHLsg=\nR:e4721f75c7aeea6f04d6032543cd36378067950dfff8201a49fcd69a95b620ec-a\nZ:Q1jA11XY9IJePttRbTnyhMUDoUvLU=\nR:e4989cf4a5e93a5223203587d5f7dbc789a3681c00a10d53411f5fef94939f2f-d\nZ:Q1fWCXSBZauj86eNzNbD14aduuvBQ=\nR:e4ad907d723ecc0deba310ad9673bb1214125e54312d5fb90f34736c302ba94a-a\nZ:Q1hnTHpKneW6j/7cRfRL3HCwsjq5k=\nR:e4c8d10958767dbab17533804d52a63bd5e43744dfaf8861ad6b0939633fbec1-a\nZ:Q1C7BCO8BI8kPXbI8X1eLH8/plaJ8=\nR:e4cff6dc0968f7c3567b261a3e8caec07985d0239636d220f8ca375135924e62-a\nZ:Q1/6xXr6KP6bdDgm0sJfU1AkonVdA=\nR:e4ddcd71e5b1eab24d52145ab61e3f9213ba6a7423b376f018ca0e3e89e085bc-d\nZ:Q1wx9jDjzXoYuwZjhf672WhD9T94A=\nR:e4e1fe7e10043e726bfbbd2f0f51680cfc2008402deca94a9d83a63184642ca8-a\nZ:Q1MGNxFM+D0rBCIr+Jk2uC/GWeGU4=\nR:e4eaa2ba998b043e4aaeda31bb1e043449b2ae12bb49882d089b9862c8a1ee03-a\nZ:Q1ZOn/fXWr09b02Ntp2tvlbv/X7YI=\nR:e4fddef6b1200b4e97193221c5a3dacba357513e32e734c67b6c2842703ab46c-d\nZ:Q1qO37M2nnSMluv3lDgYB4RRWSC9E=\nF:root/.cache/go-build/e5\nR:e5003851669a5a4711f4ee52261cec0a9e7ba6aac51730ed4b0dbfcd872d5df9-d\nZ:Q1TudIJ3As89kSeHqzoAT1qUst24A=\nR:e50620e03ba30d928fbf9865132908883fcd6df8b5ee54e0fd769b182d5e4744-d\nZ:Q1XqQdg2vwcSiyFAMYlHGq2H6frec=\nR:e5074c2c4ae07743175874aa431ec8e65d0dddbc22669270e1daad23e4828b7d-a\nZ:Q1bIhK3ToLD2uxSKf648s2p1IeBg0=\nR:e50c6e16921dfdfc84ef41ba4432ffe5e884f2c300f7f9107d372df5727e3568-d\nZ:Q1OrTtQK9AvYsm55CZDdg3lzV9czI=\nR:e530d2d9463dd6da114d3ee61a8fb97d94f2bb26c4efdd3fcf4d011d35389532-d\nZ:Q1kRlK1WlibgPc9J1H1xOAjjU0OFQ=\nR:e543a0c8ea439280f6244f4c90c336fba0bfc060be0725f851ab45daa71695cf-a\nZ:Q1FPw4sLjoUBgZjWQA2/vozEccamQ=\nR:e55b3107a9da1ae307c0bfced4865c50534ba003f16c4333795da2873759cfa5-d\nZ:Q12Vdii0meASqeu7RmApD1TXcjmMo=\nR:e56715cb7023906843591012a2f04ddeac4660d5baf86f6e49d07f6f5b73aa31-d\nZ:Q1Nh5k6PmyAVsif5B+Zo0glrFINj0=\nR:e5bdfc786a1fc811088f4d554c021c12dae42df80a1c912b9192df18dfb85824-d\nZ:Q1uBGlg60zodAjOXk0DeiOXO45eoE=\nR:e5cf21ebcf7c37f4d3e8ada9b1902718947422de6d8db209257aa64d4bad6da1-a\nZ:Q1vGo2JVKDDSwIMbIBwAtdCyZnX4E=\nR:e5df537011c29283e60adbb9d83b2d6104df73bdb1c23f3e455ffbb6272c1026-a\nZ:Q1LkjLZhkuSrEL7md0TQfYdqWZgEc=\nF:root/.cache/go-build/e6\nR:e60248a4b9b45b49338b531816e0dbe6b3a2d0e4403ec154c6a49319c5ec1802-d\nZ:Q1sJAcgYG6x26iBCMV9CIzFeaVDcM=\nR:e605f37385aba718ae160f6f3687bdbd3d63333592f0402ad15d383f34ed1baf-a\nZ:Q1WC/ls5YcjX+qIWECQC+35fg9cgo=\nR:e61514f6f417f5123bb70d8c6571e6c86b7fa9c89bb8b424190824f86a4c2e94-d\nZ:Q1/LxeKjNNVFj5SarP902ddJ+Jy9g=\nR:e62328336d3115114dc1c85f4f7a7f0b0934d773cd920243940f58ffcbbdae46-d\nZ:Q14pYdVCFrQrCnG9/lwemH8FHVT68=\nR:e62b85c6379d0bd417c64f43b809316e61806c4814993485bf16b67b3ea49ff5-a\nZ:Q1ibEeyh80r3b33OwaExuipSWVc20=\nR:e63c4bb9ec6b09826a0330ff2971101a6a4cef29c8b16eaeac10ccfaa1740a68-a\nZ:Q1npZrtE8c8JvLfCelnsPVidkPbVM=\nR:e65a16ab759d2456d1799bfff123e8ba620d035b19c94783de5015ebc6a22825-a\nZ:Q12BTMKfLLOibNWXH3fdFzdvPmYbg=\nR:e65f6ad30ae2daebff1c3e59ba53f4da232791efa1ad5c141641c40c3a2db42e-d\nZ:Q1G725G9wOOepJk/VSDOugx2p/45I=\nR:e67a184f92f3cbcec953768ea4be5160813f7a51e906b166b56d1e1ebf95a40a-a\nZ:Q1hcLmvgv5r1B0fBbP+k1HgOfsYDE=\nR:e686ed160e384e4bebf99408815e17f01364c9db67afce095c1429e3e21ad41d-d\nZ:Q1Ou4CF1KHSkGV1+Ev0Gw5rXIeVDU=\nR:e68d104b7096e1f862e66e83a1fab3b4a2caef3f51ff916e9f2fa88e97c8e709-a\nZ:Q1sDAYDuoEG0wU0S1p2X7CzwtekAs=\nR:e6aa7d0d6ffe87a71c7701c69fdccf213e2741da099cabf4173881701089a668-d\nZ:Q1q3lp3KLeDr56Ic91xc4VVkbKfSw=\nR:e6ac65d1bc7e5f9313eb536f4c735a1861ff06c78280e17eb97e2bebf491fa51-d\nZ:Q1KAIfGBnTU7us9oZlREFzLtx9tJk=\nR:e6bdf265792ad8cbb5eb56e740c09b40b672784419855618cdb321c865d9c1b4-a\nZ:Q1Z1YAoHg8EOc1ia9ULMcuVIAl/2E=\nR:e6ccf871fde015ba39ea64d930c61c1d14dfd01b5103a32ec67580122eb1b30f-a\nZ:Q1+Gjmj7tNXfkRCaDZBymSb5Ogz2w=\nR:e6d8fb9691bf5dc90170808c94d616d1d071ec5adff8a28cbe8e3df9d407a120-d\nZ:Q1bqUhKSU0uuG6l3WIG5pCj1HLHQk=\nR:e6f375de11dd6278d9b75c322cdd559a42e6af20d8c2eadd329125c1bb3a6f26-d\nZ:Q17D/uVUnLPlXeayfH2Tfu51BDBFs=\nF:root/.cache/go-build/e7\nR:e7078c235a40b1a2f16a989c01fe676726bc836b63dd542d28164b8e8dd4a222-d\nZ:Q1RUvSo+tXwEhpua7vG5pkf+pSCa4=\nR:e71f6e4464a96ead0313d41c47b62258511053681bd00b72a91c596dfd8307f8-d\nZ:Q1MGI9oj6sICsnmSo9yxS+qvv5nHk=\nR:e7263471d16995f3f208d58074aabd04a6af9fd8923782a498b147e98945313b-d\nZ:Q1903+SsRXJPqj4d5D3cBaJFwm+Mo=\nR:e77e8606ccc9e0db09383a01f11245b7a5f2424b7c01208018a47425aab6ec10-a\nZ:Q17Iduo5Vvz/1ilcgpGlMKUWQY7Kw=\nR:e79482ce319aaab8d9a5789b54043424b7c88a68d86d1208345ec5daea197010-a\nZ:Q1u0qsJjM3T9saoa7zjy1Ziyn19/A=\nR:e79aed3d238a3fa0ef76b0b3fbb22e9d864e6b7f7e2be52efb6f58a29ef43064-d\nZ:Q1nU/8nB7MS/RBtuBPvBPulyFTbpA=\nR:e7c4517d1a4bb0aae274678a6281834cbdf5b3b25ff558bb75e439eb46cc522a-a\nZ:Q1MURHtUZd4ifQ0r/qUBzwEu9xSis=\nR:e7e52c7db904b925a0f54a83f0539aad6104726253f5b72578e8ac22e504f960-d\nZ:Q1047taO4Fzy2vfHxnt1aX36ombbg=\nR:e7ef3ee409c84bb06414f346ee55e3ed989aa03d5a77173e5fbcd02299e872f5-a\nZ:Q1lNnDGIAYz2ux8z/h61GxCRC81rU=\nR:e7fb1f118841a366c51e4bfd3979d42a852cd78b165a26d28843758fc7d349e9-d\nZ:Q1W3t3uAFOj4regCpAa3eTU5dVPDk=\nF:root/.cache/go-build/e8\nR:e81751b1cc7cb779eb8dab7b5cf6bd77079016d37a62659e2d471ad4fd7a8131-a\nZ:Q1QD8CEZdsz8nHVepO9zb9BXi9u0E=\nR:e8218f6ff47501045e311c576a1d96467c991f7ef6191561c80679ddd64a39b9-a\nZ:Q1QkMKJ3vcL5wH0dsudKrs4f/7X2E=\nR:e84ff83c4fffb4f5861c6bf48caf0b875b013157c8819ff4c666c8a5aaf3186d-a\nZ:Q1LAimOnW+a2oJhynsHrkk10kO9zs=\nR:e85c89bd8f3a0ccd0e69e8b973372352b622168525cc63e0f2c5b553ea3a233c-d\nZ:Q1GWVCHU7lFqa36/6MtTy8T12/P/A=\nR:e8652851ee11be7e60e6dee9eb2e8e35b68ca2772f78e23088085aa7ac8c1be6-a\nZ:Q1AOTFFOMza7OEsMXujun9AVZYB/g=\nR:e8657db30d3104b792d9c75a624f01d9187e8f49d5d3db4ab516cd5adfe9405e-a\nZ:Q13KYn6y+o1LGNFLzyYPARe4nMme0=\nR:e86e0a63b6bb55eabda7f99f05003778f01c010200f3982f3234803011dabb6b-a\nZ:Q1ihVpUEaYCZES0qNlrsgrKuxo+bg=\nR:e87729a63dd926a93d532de7dff55eadcc37ae036debe4cb1c861a9c35c826df-a\nZ:Q1FOXlvj8FPZfrc8vy7TGCuok2r1g=\nR:e878b00ba9db3de95b4eb6c03f0d66ee3720e678cf68c1d58034f04955420b36-d\nZ:Q1ra6wdD2tTIvjjMKTQNT2sDWEm7o=\nR:e8856a257620e70396c8e2f09d9cb733c594bc7ebb03c65a79d1b07732b15354-a\nZ:Q1OsxxOoyNfR7zqbeIzE2loiVwlJg=\nR:e89204e01374ca3f2e8a961c5c3cceffc862f779f3380d3aee1c5481bb1d8204-a\nZ:Q1V7A0LeFeTaS6rA8co9nKcfBC4kE=\nR:e8933f5ba593820b4f1b99a5f857f830408ab9c9e935fdfdaa6a906d32a47aa8-d\nZ:Q1DJtNd9WoZQ1lCEyEIr96s+M6BzE=\nR:e8bffeaa1961d4745d4bbabc5fb31abb6bef7f412c9bed4edd821872a5d7f3e2-a\nZ:Q1z2nS2wdUcNdjE69NFtJUPl9ld3s=\nR:e8f7b64952e5bec7b0a608b5c1d8302ac28c47ee00682ff1c0b644eb821af54e-d\nZ:Q128sKM6vvcxYk05nfaFk+6zzhvO0=\nF:root/.cache/go-build/e9\nR:e923abceddcee8b0d91711f88cb2fcbe3dee4a53181182dd3028e5e33a19b531-a\nZ:Q1F4zzZ+3xQGEh0BBueNVOtICJr/U=\nR:e93d2044c2af80b432ea214baa5f119b7abbd84cdba7ad29e5305736512a3c91-a\nZ:Q1LZuGlXHGsAra1TbLxa7eqIVVXL4=\nR:e9467c08747e2c6da748f0e72c15c88633329a4c1377db98578a836ef4970d84-a\nZ:Q1GOi+W9kugd7rAK89tJREa/KXsBw=\nR:e94d714950718a5d5c35d4b2e7bd82571b105aeeaa438b8ef5c1285cf5e8a545-a\nZ:Q16tISGf7oUslHBbrl6yZffwDuKao=\nR:e9799d826ec8d6815fe1e1e87484df914f0901850bc36f4626259e87bc5fa8d4-a\nZ:Q1BGmek1atKWyzx9vK2PhZh8xFf7w=\nR:e981588bb85ff988c909cc564036bf96b0a15edd15642d94060314fe05897290-d\nZ:Q1yy0PyPnnaT60PNkCgYRy7VAg3Ug=\nR:e98f106832e6827c44e83580b8fb32ca73ba113810211d5f391ad70c096587de-d\nZ:Q1D6JqsH/Owx2hjjgSBTMLxA9B7xg=\nR:e9979e32227536119a6060d733c38e9e790683323772840e176ae497f24b266e-a\nZ:Q13XNbU7xsLJdJgZAzSLXrO0qoNSY=\nR:e9b1b92ea3909496f97daaf4af5521f2aa58726e4df7ea57795df63b009dc194-d\nZ:Q1MBGjOXt9zHWVGpdpOM0ld8UMRzY=\nR:e9c1447d3baa98e3f3025a9e96575bdc846cc15678dfc66fa6536e29b28330f6-d\nZ:Q1v94wqlIGdG7ZNRzZqKfkGfliV08=\nR:e9d0cfa2a11225de430269f0defefd25d9005d4e2b25bf2138fdd8ae4c1ecdbb-a\nZ:Q1BeBvNQQBmrV7y1u1+DOOMc0y7Rs=\nR:e9d81e4badf73e31b78df8920b43979dd3e9d2a21593f53c3e00e7c06c190ba4-a\nZ:Q1s0QUVZG1Qd4QwzG0z1XDnM+OjCs=\nR:e9eafe0bb4fbe1e68056f3a13f737c9af0e4ad85724dca260c1c31c761f0602d-d\nZ:Q1XixXIKMG82gzyywlW4vULbynGxA=\nF:root/.cache/go-build/ea\nR:ea363e3d4abfdcb13d8380863ad51368af0e04f90f4d62c7be42442d7b83d997-a\nZ:Q1nxQAQsYeq51MoyqnE6Wc7rNBFy0=\nR:ea3a809cc996bbfa8ce35d18110d0c0f7ba153c97b6ed0fb63c3ec359ad04247-d\nZ:Q1vsNs5ll39KONISe+KYbK+LzMMlA=\nR:ea6422b25e45fccd3bdb6a3b4d13f40c58a1ccab6fb83c329ff11511cd1df3af-a\nZ:Q1xnm9/G+KCi4n9F31yeHBacuMMGs=\nR:ea6a7100a44030645ba6924ab219daf48b2311ae7ac5939fae8084deeaa9543f-d\nZ:Q1FjTMnZVlRQYD7TK3rnF9c/ifCZU=\nR:ea97181e95c55af6346a94feacc58b1d2288de419a69dd8008b2de7ac9a3b6ff-d\nZ:Q1Ku1jHUPpu9Qg8FRDsi6pPZg6DIc=\nR:ea9d010767e1caa37a9488585cdfc7381289e48f53adc5a97e7d40e8a38b85f1-d\nZ:Q1D6W31YX4Ro9/Cf0FjZUdq4iDa0U=\nR:eaa4a8494d0f2e1999bb10ec73db9c16c6dfee52e16e52b18cf75309815f9b81-a\nZ:Q1ezFFIelcFYelE33h9Ya2ZUbT12Y=\nR:eaa6a84d8be66a575c9404c11168fdda930ae000e6a331b736fc65bb12650c8a-a\nZ:Q135pvUsQIejgnYYzGrMl4r+BX09Y=\nR:eac03d0166703fabc77e40d528c5bcd8c8b4abc92d35a3bb6bd360d8dba09a25-d\nZ:Q13G8j178tqEpOV3Dgd5GaVkDkpCQ=\nR:eac339972087d1f88c1ead0be9685df5a5ce29e2a6421d906cf21c18576e9ca8-a\nZ:Q1KBAPfY8V+HpFcLJiYXQx7vN41mg=\nR:ead87fbe4ee2fbc0399f257319fb004dfaf9e438f2f0443aefb61df0f2e96e3e-a\nZ:Q14OPguuNqz7lN8DYBVllbDet9cOY=\nR:eae88234d9b1b6133b3d4928fa24f5306985ba7b8a40fd2f4bd370d842859339-a\nZ:Q1YHSujOIQeldqkS/FDkSQMTrKrV4=\nR:eaed0de85f7c3e224699316e6bb6e256f93b83299b9ded882a6cc7dab5249356-d\nZ:Q1VdBuJzIDZr1c2zhfZfTrH7laKN8=\nF:root/.cache/go-build/eb\nR:eb132bb7bc51b446e188c522bc83d2d54b4e7d0339913cc32bdd0282538a4563-d\nZ:Q1gWbMqEqPbXYftcVFRgd9gpfhhzM=\nR:eb16058e0f031457cac4f9aa3e49431afb86e1fa5e656c29890f40badde140c7-d\nZ:Q1TTxBPzv5BQrJopo+iq4Zr+ygoYM=\nR:eb21af55813349a86a83c0ba39566a34280f2d22c9d2e1292c2984431d13dc42-a\nZ:Q1lDYKAjZCDZiMovE5AGGm1ei6S4Q=\nR:eb4340155729c182cd351da10c8a0b5056e4494c6877f85229c4061f6c9ee60f-a\nZ:Q1sMnY4yhklam9wqeYdIIbVwbYHzk=\nR:eb67ba79a3371e03e0bc5c4301feeaccd97055ffb27fefaa6feb7ab6cfad7cbc-a\nZ:Q13gWU09OZ6GTnVXseou2/R9QtLH4=\nR:eb761feae24d3837438511cfdb95d112dce0299954e11875e1793e7d6ffd8fd4-a\nZ:Q1DDw0mCNGFDRZjldEvJsD2n4IlzM=\nR:eb84f4a5df7fecbdbb324b0391289e098625658c8e2148d2fc0093093538c2ad-a\nZ:Q1BRiSdcOBHw4ljn/TXvDM/964YTU=\nR:eb9b9ab7cffda26eddfd3db3a088eb99df18f886d48ce6e53c027b082b312f84-a\nZ:Q125KYJ25eBr7WOdr/ANw468D4SHw=\nR:eba782a9b572823c94cc091318ecbbca7343447dc3c7d0826442e304ebd937c4-a\nZ:Q19IOxEy9t54Oh4ouzL8OuO9vCnWw=\nR:ebacdd570690ec7a49db7fb96c50288b2a63e7676bddaee84e2d49fa1a501fa4-a\nZ:Q1ZQIHeyHcsprUC34AisCGirhtLMY=\nR:ebae46b562d7a61be5a43a2c198ca04faaaac52b4bc0239f52a599c68f697301-a\nZ:Q18gviyqaERcFdhZ5d3VP9l62NgRQ=\nR:ebaf7e215d7a8e6cc233c1cf4854a494a0f56865e4c84b001147009c243d78e7-d\nZ:Q1W2yGzncIBBYFMoUS9gTdzF+InoY=\nR:ebf40352d327d87fdb6c4151cc4caed1f52538db23cb6e41aa9574190ba6785f-a\nZ:Q11nS7ro5EL1ubidgg6i/1vpZvjnI=\nR:ebf79c8c5abd9762125f42c4d602a37854600dc9b07ea10966b2e31a98db9e8f-d\nZ:Q1DuZVn8II6yCPjWiPoGoCZbY3lP4=\nR:ebfa5176a8a6394765c2195045e71607237c690f4b67c82c2ff9cf81ffb1a990-a\nZ:Q1EfLPvWwo8fiptkcmLrXALiOvJ4o=\nF:root/.cache/go-build/ec\nR:ec03ecc3714fe96db79acf418c9494cb8a93493762666beb509067bda157ca0e-a\nZ:Q1hbfd7RGERFDPbp5EAA58XnoJEYM=\nR:ec071d2ffb5b8a2c464ea29592ced3dd273a3da755c3696140d77b583f5ade04-d\nZ:Q18llOWLCHgk1NeBuI/Bxf2ZmhX/s=\nR:ec0a3b77636fb77a770742a2799eb13558afe368d5b996483bc76afa1df8aa31-d\nZ:Q1pU45k69SuKl6TeK6M4o3hvacHeg=\nR:ec1045bc3baf83d9ccbc8444107e93a289a178f2591bc81baff9c86a0384ae66-d\nZ:Q1WsO6uA3/CC3R76H+khSw4MygJJk=\nR:ec1eb9a81c88ecd09eb075875f1f2ef7fd697bc5cc0cafcf96b4f0fc09de0343-d\nZ:Q16ZqvNYK2rkOEN2GtKZ9MqMMbWWc=\nR:ec34be7f908a9fc08f96e840b8e87df24f054571f87a81daf5db08a8e1baff6b-d\nZ:Q16nVbrun2mkH6qu4juX9DgP2KnlA=\nR:ec35e9ce0f5aecd55ad86130636a4bf5026c1a565bc9766234a0f5a1a63c00d9-d\nZ:Q18jb/G7zswhkBf+SxOovLa5F4kUg=\nR:ec3b56699d2d67bac840133179c6df30cb84c5e3a53d85eb0b1d4bf9df4e2cd4-a\nZ:Q1KXCQPqpvUE/svsDN4ocdkxf3GGY=\nR:ec419be1c4c0e1951c11153bfa5813f5ec59913dc23549254d9010befc938220-d\nZ:Q1Lt6Db2jzUHsWtLZN/2rIN4d6bR8=\nR:ec4f8804f0b947120cfe85932d9d0d7a627a4ab400d868aa2c724b74de672430-d\nZ:Q1R0kE8/waeo9LuiCXvpvp5yXDihU=\nR:ec71183049f7da8bf8d3af2fbc8fb841fb06d36e80b3e5c9bb5d18e1d29a96ef-d\nZ:Q1Ja8wPmgMJqHaJo1Fnu72T3iUQD8=\nR:ec735b428f9a8ca6c8abf1bb610aec84fef92052af37096d3505f4b1e791f96b-d\nZ:Q1dr+5WdAx3sO5mvAu5vUBfgvdR2c=\nR:ec74d10d89834ad9e929710e614980264fb1f9d4052cbe64a340f62ca3a5a191-a\nZ:Q12kyNJwQUCeatp638h/i3j/WKAjk=\nR:ec8257199ccb077d0f55e8ab01138e69fcdd43a9d411a5820b2a8a895d0834b3-d\nZ:Q1Uev/Y5zvhuFEHHgwLEV9mEGdRsM=\nR:ec9d8cb4bf47ae474c757c4a3763c0f6f3e1aeffc7d76caaebe263af75de3555-d\nZ:Q1rdGvQdP3w+3z4K7H47PlOQS0C3w=\nR:ecbd14064db38fbb44007d6aefceea2cf41dd43d875d776910a09e29eb92b448-a\nZ:Q1JNe/iUL05oIkEmm51jSPEd2z2pc=\nR:ecc0cee84ea8cf6ad13ed4efcedc74f566bbef2d6cb65b8a8521c09e751acb24-a\nZ:Q1Rr3tO8DW0eydo/2kVkOQtHMTTGE=\nR:ece23f811345183c6b4f4e38207a29c19b71180859597fcc3b0df160a4c2a618-d\nZ:Q1S0tnshOsIOwciS3bdo6oOzKxFNI=\nR:ecf2f921a3d23b44a84b95325562f796d1ec9d140bc66845fe8f10255413df9b-a\nZ:Q1WfLbYPSMJJspgJm6oFrSwuhhG2E=\nR:ecfc1c55e6ff2eee542dace11b91307d6ceaacc3f53091aea3af5fa6d8d0a2a7-a\nZ:Q1kzn4dKmDX2fI7yVBmK0Pr59IqQk=\nF:root/.cache/go-build/ed\nR:ed0d0d9ed96aeaa442114749d2dc925e310fabe2e43c5c670df1c009cf2e1f4d-a\nZ:Q13Dcit4hkAdHMcSfzP/SQjgwYdsU=\nR:ed25fd2a398631507a69911e7f18e6ee1bd72ea265b4baedf0a2a324897a2f8a-d\nZ:Q1TBmfGeXdU4iKODHgvROy7AUb5zc=\nR:ed352e436714d930fbce33d62cf2e782ee9bf900eb15421ff2c3a0fcf3f61fbb-a\nZ:Q1Jcozaqic2N3RWZ4SIOGcP9v4k08=\nR:ed398cd0b2d0cd0398bdce5f33fd73d8dcd7fa269842e030a0d05819ec9f45ab-a\nZ:Q1y8+n22RH1FebQ5rWSUgfXkIVGO0=\nR:ed3bd3e387fdf83e5a7227b3044a58884e16aa475e5b472d300c4206a1880026-d\nZ:Q1ioh5DLcIoVGUuDXHJvGTv4h7zbE=\nR:ed651070820c77de4ea06cf49496cbe34f121d3c2c7008cc6d7e2448bc44b319-a\nZ:Q1Bpw9WUWxXdazaMs1n3h3M6Hkjmk=\nR:ed6d306d9819c47ee90f951b8f9266eee6704d9d08740b0f6cf5312a81c055ce-a\nZ:Q1sgfZjMQ99KC/6S08t0+gzw64nWY=\nR:ed6f6e8e55929ad69658025fea687308f0e482789d392828d5f0292726325bad-a\nZ:Q1xlMtSN17WA9g9xtxgL38OXTaoCU=\nR:ed80c367d052ba0c5419fbc7ee5487c5acce8a4e33a2d7391f7e07ff3b313609-a\nZ:Q1NrkUumFkZHWuvZmaI70cKn/5pYk=\nR:ed8347e9ac827368f5d49b00628482b4a72c0c6464cc770923cf6e9e0c50fa04-d\nZ:Q1TbOb8m+pMs9Ognv/o6SsuzB0+Vg=\nR:ed8a4bb044eff5e29bfc8c389baf8522ca507290435ef1daa5e5ec634bbbc0e5-a\nZ:Q1zkvEQ8wl6By187ntpBu0pIuByfg=\nR:edd2d251c4d8d2eb13aa19d680150fc521fc3e10de53d13a73e45ca63baf5710-d\nZ:Q1cw+wM5Q9thxr5m2ny4ifqbZYn9A=\nR:edd822723f506c9caeeeabe5b99a0b82e8d5d351b3295d398ca84e2e7e54ea33-a\nZ:Q1rK4q8ROfRkX89Pz6mRmaXZJJzCQ=\nR:edfe5f9067545fcf8a44c1664645e16acdfc9bd904f035cd768bacb18e3391e7-a\nZ:Q1XHjB2ZRkbcYUNSlI/zajGaHLU1Q=\nF:root/.cache/go-build/ee\nR:ee0c2323cfaa487d6a0a3d65e3f449cb5f89ae5e54e0617d22958ca190ddc931-a\nZ:Q1Z/o4FneRKOkQhtBOlf2BIA7dKvk=\nR:ee22457d7110b77140f37f3ee3552c3c8e279598610fc364642e9c6a3132137b-d\nZ:Q1b6LEiMvFkFqPzm8pJVGCjiY4nMc=\nR:ee2e660d5a3089e68f79280d5b366e4e3f5606c58542695e10e626ac36843910-d\nZ:Q1mb44L5F3MSFaqU+7Hp+lOq0dWmY=\nR:ee3997ef7646e9a0d468192007c670d80c285ab102fea91b24663183a40b3843-a\nZ:Q1b/F+P0NzQIc+UOFOsiYPMS+WgSQ=\nR:ee45d01cf2f0eb88326436b015d288bd355bc263ee2c7e39e87203066471a009-a\nZ:Q1m3ieQS8IKI8j33ofjNqkkLXK37c=\nR:ee582b3b07de7601f03e8f175b9990496d7bbbe69aad0d5c31db16092f0a0b10-a\nZ:Q1ijJ8hoo+EGOa2lGFjwRPmJ2isYU=\nR:ee592d0197176381c861ade47bcee76b464403ec9fccfed98f8bea13681ed67d-a\nZ:Q1d+3WRzilg0ioG9jE9wFuGkXwf5g=\nR:ee6d0f3ab4944f0edc22fb6b981b1b3b4e2c31010104d974e9b3d95bcfb32f9b-a\nZ:Q1xmKDrJcz+RKySuGT6IQZJo1SERM=\nR:ee6f7890e9f830bfb73488a6fddd912f17540e2205a17744a7bd8c268a2f7293-d\nZ:Q1AznHvt+d2nXH7K823KQGhG+01+o=\nR:ee7107e9a63839084478465145d04943686f7aa653e2dd6529c384823c5dfd0c-a\nZ:Q1k8SK3HIrU64eEMWvHSmQrcf0lcw=\nR:ee718bdc774060499a4cd292c1b72a0170ab9da3391684580fe2a571a1087c84-d\nZ:Q1Z04uVwzLtP2f3C56J23cIMC4tvA=\nR:ee732d1b20668b7b8a91b0e56f6e84ef1c2329ed2aac6bdbec21e9f46bfc59bc-a\nZ:Q1rq4S5nhmWJXezJQN3bfEeHAHAb8=\nR:ee880cfa6256a6aab5ec647b57f182cd7d4cd8af5df879add36024017baaec14-d\nZ:Q1axuQuOp0/GoIbc+vdG9ihYqR7wg=\nR:ee90cc02b5dd81cbfeb59127356bd5d358b63c1f497b5d16d45e090938de9f5d-a\nZ:Q1HiLf953zS8oZ9f/aWCgTazpEdjI=\nR:ee94d4c74885d811740148e8a3319ff00a684e990d6eecb29b54f4d1e5b8cf47-a\nZ:Q1pif6oglX2ssAXxK+NN+wpTLiQqc=\nR:ee9e406f3b6a9dcb99c7f5966791747a1d60713643f78421e4331fb5f94e6ff4-d\nZ:Q1zh0q8MAeer+9tirjlwz4J5aBuvA=\nR:eed95f70f01b2276844c3d7ae7163b25421b82ad64da7834b504b2b317258fc7-d\nZ:Q1yGQ3wu7WXiHJaNrolPbYsQ338uQ=\nR:eee071d0fb0827ed2a1757923b8669446240d42f29aaea24eb21cee5ebecb4ea-a\nZ:Q1EFVY0EGBOqn6xX+6Bf7ui22YEcI=\nR:eeeea8fb57f5cc9eeaedceddc3c977d6adf42df8d7736894b833304a6d725797-a\nZ:Q1wrTAn+oPyw9rIdcakk4viq+E6E0=\nF:root/.cache/go-build/ef\nR:ef0d268600f138938b93aa6c9a0f885bf5b795683caff9505c2b6a02f8372a86-d\nZ:Q1B9GmT0ujGlPXaE+nzbcvA3T224o=\nR:ef173d47ef412d446af64a8c5e4661e74c6a0d47993c9373b12a4267c4884424-d\nZ:Q1r70ohE0jqZT9bUVhkjJRGB+t6bI=\nR:ef1adb9d41612e3d28ef548d90887be78ebad56feec3505cf01601478167299a-d\nZ:Q1L3PBRT9ifmiTEridvV3ltO/CaMM=\nR:ef2268285a3844a3ce62706cc510526ee2e06fab04251de1ac8885cd8f7fa123-d\nZ:Q1C1mI5FJuXfudV99cDzyc0ztwY3I=\nR:ef2bec881e1fb9ffe3ec3704dc4e57c2194d4bdf2412a0343572fc90e8654e94-a\nZ:Q1i22PXlPSnd6bry4BIs2mFNF21eQ=\nR:ef327fa28e399d6a794c8d91faac68551de36adff549efee7a09d557bbf492e4-d\nZ:Q14m3VUxu75cORDeklFvyl+JCaEik=\nR:ef333ce8d2c859eb1bba134378797ce7bbf82d68c6007c8ef369008bd3ea5298-a\nZ:Q1AYMf2eFZwgkYq8XgylsrMH2+PN4=\nR:ef37f1e796aa0add27eeec60027a4d3c0efd1a82199f2e89f538a5bc1e044e12-d\nZ:Q1eQMtJNgsTv7qCLazqZvsVcy+3T8=\nR:ef403b9f46b67a34890676f43e6c1925e84060b772acdcc4a0c2151b4e887bc6-d\nZ:Q1cX40hbY+My8qGMklv1p0MeX1ie0=\nR:ef44d6fef7c7e3f0e1f9bf18aae793c696b87e5884541c205a7f90f42e432231-a\nZ:Q1S6M7i3AWSRl+9c+gLN0KcyQPgSM=\nR:ef4611028286707e2aca252e35c364ac3b287df52ba2e5f8cff31b34c33f973a-d\nZ:Q1s2yddc/JMdMC3cG0cNMs5IBSfK0=\nR:ef5a13065326434f2fb12ac9e781ff5a0a13f3cc77d243590742e65b5defd829-a\nZ:Q1+iSLY/awSeFW5Um5P8YtRqiN+Yw=\nR:ef5ab5b845253ed819876ee10ebf5ee790126e5f69c190630c68e9810b006164-d\nZ:Q1WS02Dti0tqoDWPIFlZivtM8gWOA=\nR:ef6df35abf21588b2f6f8430c049533090298c4c66c20df3ad274db11266ca4c-a\nZ:Q1tenOVFLmBCrM4C8dBpo3OHNZdGo=\nR:ef762e3e78109b091af5a3bd3fd8826e6774861c3f34585a2f7ab59766db8d68-d\nZ:Q1Pwc6WjSjznx4lqp/r39Od8CbYlA=\nR:ef772d50331d74d4b4c597b8297396f7188e6bd070057c33ea5940019b20d787-a\nZ:Q1K2L3fQVj3A9vw7X5qk0qGb/NExQ=\nR:ef8e47d20d102a3b602a78dd520d6ed9ebcc4c2d47c772e10e8e562c88733a00-a\nZ:Q1NSQ9EAxnOGIPayAzL/4yRWBYcEE=\nR:ef98922608f4aec671e5273243e7e06737a0aeed26130a718eaddf99ed522e75-a\nZ:Q1MK0aQVKA4p+CTJPBDvrX55XjBLI=\nR:ef99ec0d4505560219fe1c832e1abd96f72fdf4eadd6b7af4e39fbaa20adc992-a\nZ:Q1PmRHQKcoz3xNcfUBU2dKxLhQ9S4=\nR:efa1751c253f4d778c3437c28569a6bedf65528cb091c7cd335867641fd82fa7-a\nZ:Q14ZPnTzBrLwBaUwzrUhCv1AwPcsA=\nR:efd54c64afa968ca7ecaf0c66336eb6ea38ca572216f7e5d8709b6a780f3a1f2-a\nZ:Q1uzsTGzd8PgIL0jcpWbZChfnTr08=\nR:efd857da97a5add9e242d74c280e55b4f05ae8e1e658d96c4f99907279b98452-a\nZ:Q1WBjZPF2K8pddM0Hjy0pgdzYK74g=\nR:efe4a247741620adbea31e6676dbc8d5ecd90353d6ddc29ff7e69b291bc45ac7-a\nZ:Q194vUo9zo/8yhd5dM2RkEZ6yjYWE=\nR:efe6185b7152fc8d76e8e7253a06029f4a64c4ba9111e0957cfe83494236a496-d\nZ:Q1UYkc4n5T9S0bz8bBn2P6670/LWU=\nR:efe856584d6d098ace258716c1f17555fc6d94112bae880c1e92d31875bd9da2-d\nZ:Q1z39S7BFiEnpf9PuSvpNME8cO7GI=\nR:effb884f80d749d4f7fc66052abbfad2f5ed37d09e3ad20b568b0ab3379c69e8-a\nZ:Q1tPR6w1bn8Q9Wjck6/ZOuz4smfT0=\nF:root/.cache/go-build/f0\nR:f0007c26b429435e1457993c7a556e577198061cec85c4e94d1749764e1d70e9-a\nZ:Q1iMKlN4kbnDI5FHhiLHHZQTWnwl0=\nR:f01b8757189bb560deaed3a002766c279a1e0177c1d5c193772377a71521e881-d\nZ:Q1CLhJOd9OiOPjCUH9uLynaafrwMY=\nR:f01da7cccb7580c7af9b8035d5675bd5c2ba7a3b5a119857bb6c6f8ce78e5c8d-d\nZ:Q1/1Ns1A6Y5pLDPzRBpAMXlo8lpkU=\nR:f0333a5456028140ebe79cf2597738198b0ffff22dc5d7d970fce0db6032eeac-d\nZ:Q1DZxLBs+a1U4e/nSKJ1gdTS+9n3c=\nR:f04ef8156d0d0c8bce81a0fbb15d77638ddcb7acc0890d095bb749065d67982c-a\nZ:Q1pk8eXDwr3dEH8c8aLPgjlH8mV0M=\nR:f0573374fa9cad61bc803c83359ea5f8b6c23f5cad7910dcf25e865516e7d5d9-d\nZ:Q117ExXvKYU60EPRW0CWYElVVyonM=\nR:f06598b4128aa4c90eae114cd999eb0d122547da30cd1da0ff643f2a9cee5f68-d\nZ:Q1WIdgthXE40ZukULcC67IXlluRBk=\nR:f095d44873f30e2a0dc156d13ccd4236b4fe60af1a0e62a10da91b09fe526347-a\nZ:Q1WMZ+fMsxu+Rxf8ek0qN5p6YQRyU=\nR:f0b24d28365dc7ed54c556f0ac21d0a259a85ff50acd9626e90ae7124efad5a6-a\nZ:Q14PiknAqexjWj/Er02ES4ciKs7WM=\nR:f0d21b1bf3721a1831cbc88e9ff4505698666f22f4282b7e6693ffb11d36d326-a\nZ:Q1hBIt/+eKExlDLUv8kRq37WFiTeI=\nR:f0e8cf2e829a16a40023093d488a9057ff0ef1c6702a04df23eee16523500adb-d\nZ:Q14/NbrzPnflCjzaoIMsSKdTsKVhc=\nR:f0ee9d7b8fbb0afac809cb6c46cee7fd3a68befdf643ccdd00533820a8926177-d\nZ:Q15VQigmQWRQ+AcNX5Ns3Dxrl/hMs=\nR:f0f206573d5b54e272c8f974001a0c7104da518872db8f85b70e722773cecbe5-d\nZ:Q1Elr/KIO0B54deYYecK2bvYey/wk=\nF:root/.cache/go-build/f1\nR:f1046d1ac70c4bdf3f7ae23b2f6630e7f85df05135c321a13a0cb2fabdbf6a71-d\nZ:Q1vC5XifPZ59f7VGWomas4bH/sfqA=\nR:f112a2eecd5f3069a5bfc1d3deb4927672d8a8641c325f9053bd54fed7a395bf-d\nZ:Q1DOTbUVCFRkw6fElNtwUFTJg3zck=\nR:f179d5dc001c8d8d0c6ceabe836dd425437f360823a68388204b4378c1cb213c-a\nZ:Q1us7eOCmRxTJ8Egnx9RE3ttKjiA8=\nR:f1877651c1c389342923db35b07dd40d97ecf55d316ac13ce20ced9b3ffb2ddc-d\nZ:Q1Ua0M5zUhRQwHKzhklzFdJXrLVSc=\nR:f194004bb98d0bf92a3b3bf8bb5f08981a0bd9e0a4227ceb02520d09d3c4940f-a\nZ:Q1eOj0YIz5slDi6iOFOpuX2ks4Fq4=\nR:f19d9cc63b2a94d01a50c49cb92e6b90f44eb0d1dcfb82936e3da78c9a801187-a\nZ:Q1HEmH9YmS1O9BDyjNRVR6OytvzXE=\nR:f1b1850b6a5512073f533a0e511257d4ed7b95c0f9085612640747c6a5be62ea-a\nZ:Q1vEbNNDGa0E9301h/1CA5cdkByt0=\nR:f1c086b929ec3274523848eeae1facc6e73ee24dbee52092b1747bf70fb0c93e-d\nZ:Q1EucmIuYoV7/Eg4BkyZXI3lQPexk=\nR:f1c8994baf693dd3a863589b56f2d75459f504dbadccfd2a79790242b0c0622b-a\nZ:Q1Js8uaLjjQyx8CXH5EBdw2D/TrPE=\nR:f1cd35f952f91ac3c3cc7172ab3ff8bf1c9ba8f25d360ca72a1b6578a0c655bd-a\nZ:Q1LyVKzeLVUyzFEmFb+Nt6iGd8jjw=\nR:f1ce74a158f8ed7b8b9040f1a47342f047d32e310aa23437fb1aca75a6a0462c-d\nZ:Q1HcBrOrAb1STZ7wr/WbrSH7aSRwI=\nR:f1d37e8e4b40bfecf5023743a77c8e724874fd726dac5d6b8e54dafd416a3c8c-a\nZ:Q1RbFCLFX8YD/jaVg72jp+Med3pJ0=\nR:f1e0e986f5924be7966db8b489f46851761d607f158a82584b4f7cbf255a8aa6-d\nZ:Q1aaWP0urputXhx0ELDnkeYCWsTGI=\nR:f1e56ce980a345e7b163b5934d0a67654ebefe06413bf573e8b59a5a15c9e558-a\nZ:Q1OLBCPxP2XQMHxx1s0e/ga9t4ki4=\nR:f1e5bc883fa68fc3c16e50d227f3cd42555d61f446749229e772735af867d129-a\nZ:Q1YSgPSrO3Zr8Kfj8KLRJYZds8O10=\nR:f1ecb8b65cc6eeaed95fa8c0ea194c95e8745c9cb6449577b6f71ef69f6ee53a-a\nZ:Q1SXPppFDswCcNw2qmg/OctewZuFM=\nR:f1f4df5cbc664d2582eca8a80fa1f898a85b38d7599f7b4cfbeaa553d4868d3c-d\nZ:Q1nijX98zMQJjhcP92W+rLU2DSxww=\nF:root/.cache/go-build/f2\nR:f20eada9c19982c5ec0f16b267f82c9680d8e5ceb69333e6c5ef64f396031c82-d\nZ:Q1MaSqfBMipnbJ5+4NyCIKdOw7Zzk=\nR:f2346f92c845f1404d2183e144f7071a8946b1cd0612f5d306e348a6830c0cc1-d\nZ:Q14brKeBZWsSDKp9ghaJAt9y7eejU=\nR:f249355198cc15333d58b9c0eb8d296e4c472578b7499e945a88a734fc56f082-a\nZ:Q19h9jqJoH7jTsxFzBXtv4WsIyIfg=\nR:f2694ad801801d797375ccb478f6462bc5aa93daedd83b338d6b9ddc890a9a93-d\nZ:Q1f3XVnJJkH/So9LAzSKn1d5Eb+eA=\nR:f28820d29b50e506dbe495a03ed51af686d68a21ae3f292836cfe4d096146d82-a\nZ:Q1o0V2NCBnK692HPyWHcraQI4fz18=\nR:f295e821f749d790e67d1f3faa729d0328deed1d3cca40b7061fe1171b11582a-d\nZ:Q1SjTgEEJoFuGI6VEroJFH2V2BrvE=\nR:f29e63e136f5e6abf91d2561e9f2cbdba538f330a5b2fc0e7ee15c38b12fa638-a\nZ:Q1OqQcsBnaLhTvvsRPq4K+nJAewVc=\nR:f2a409fe35c110b0793c2fddf179adb108ca74a1e7cbac0cc2f2b06a195e3aa2-d\nZ:Q1wXkH8Cvx5QdKA+/rkQPTDFyJ5r8=\nR:f2b5f888998dd3868142f12a823588b3329a6198ea7ab0bc265ae36deca9f048-a\nZ:Q1QXhO+OTkODqmcGMO/EjPQk+CRRI=\nR:f2c27535b3ce1f3787dbbb9290705f9d2836869bb8961c5305a1196771d26b87-a\nZ:Q15Btg0E1IVMBLawWBL4V+7AOwpko=\nR:f2dc8cdb3e7025ca9c606a67cea6599e22b1fe7d06996e9b581581a2dbf9cfb2-a\nZ:Q1Kr2vRdVtQ6QJyPrvh4H6QptYbeo=\nR:f2dea5382bd0e57576605c55b83665c034618b595795464efd0041a664ece1cb-a\nZ:Q1QCoQDMVp2plBz+1/bUYu4aw5yHA=\nR:f2f7ac0cd42848af68c11d466a3fac7a356c6e307243b30922764dfb17b7cf48-a\nZ:Q17dixh1t0dDkaEAYuvSc8hdN3lnY=\nR:f2fd8eb31bf528d47e37024d0af90e42d08ae574a1f71d77d779a1de32da37b0-a\nZ:Q1xsH/53tvPbz2lYo7WjkN/SbW0z0=\nF:root/.cache/go-build/f3\nR:f302f7224e83fa5e48816311b188486a25f900a2441316317c74a59bde729da7-a\nZ:Q1udYrsbRzQInSpYN6p0MtfuYsv34=\nR:f325b73d331447bdd7eaaf8c8d12618c0e8af30fd9c02ef04800f6a6fbf3cab1-a\nZ:Q1XcHyu50PAWPU9kvUqK3j5KhwusU=\nR:f3270329d550b83edd689713bcb69a47b432977da0f3aa87519bab1b6c66d3cd-a\nZ:Q1/rhjMdV+rfu2+L5o7AQJZM8K/SA=\nR:f33ec26e40f6cce29a4e1e0b4f3848d112d20c0e9cc5e90470f1fb07a2fa4312-d\nZ:Q1RLRZSe6S2jLU00+4fAWuaSWi+5I=\nR:f37023d80fe3e0b4144198ea49db730a87194d9bc50f663670cad1dce65a86d4-a\nZ:Q1a7lQ+VoHaysPtJw7k/6olB2+3NU=\nR:f374a6bd813c13dcbbbbf3c5239b2b76c1a140c08746153fef865d205e49a066-d\nZ:Q1Nwc6UhCCgACmwggEapMOLdrMyC4=\nR:f39618f560e8eeb42801a7009c52a2c8faa814d6271f11a8854a2ab642104b09-d\nZ:Q1zOtBx34YEbTmE6/SwZGUiQlNsaw=\nR:f39cb72988388bfbe4f387316e6474eca27e21a411bb2ea880ef01191cb67190-d\nZ:Q160OcghTggMo0s+17vmPFiJvygHY=\nR:f3a269cc93baeaebaf125a71aa8ad0e43bf1d296702cca21b5624374b88b847a-a\nZ:Q1zWufAbzXbiz99d80gLwy09cI+n4=\nR:f3b5cf7ecdef5ad5f0996722a56bbdd0319c054154b94529bb2554fbeda37e17-a\nZ:Q1uzNKRYprDNaNeI85n7Cz0bLUDMU=\nR:f3b817911072c393a0a6fe619cb6ba01f5e1f2b914a0457787efe31afc43a71f-d\nZ:Q1tx04OY0vo+4lcuoRiJFX1ydpZiw=\nR:f3c705173a2c8cec60f39431e7ad9fb7f38e8fc563d63291f4d1cf971d90ed23-a\nZ:Q1saoIxISnAjIooY6Qfmpuh3Z3qIM=\nR:f3da168142cc1abc38c42b3f003b98a9d129d147d945330eb81c82120ba36a2e-a\nZ:Q1VhNNZpmmUnyR8U7/KTLW5HKmhY8=\nR:f3df0131a94d9c526c03103d5095041563eb84470abca8ab9d8e7ef52080bd7f-a\nZ:Q17xY9gdfNcs19KTecDoktJuSqlP4=\nR:f3e3176d1cb754c668e787c884f6244d76e4e564595fc3402f42959c2bb520e5-d\nZ:Q1C34VULhUUjIYwsq9v97w8dmkNDE=\nF:root/.cache/go-build/f4\nR:f412f44545a85cc45fa3a6ccbf6a4f433f8c5638f5ae8c314415bdbfe9fdc385-a\nZ:Q1ksqj5i79MpbefCg5jEYPDpdt6E0=\nR:f41a0d792399339b1f9a045b520236167d79e1dfc175a9a008fc3cabcc4f6097-d\nZ:Q1eZIzOnpi9BJ/1jE4jReRGMEoh3g=\nR:f44fd4db8803390cc6ca31b622245be02248076305384d8653060277bdad909c-a\nZ:Q18mLAQ7XgD7kTnKsQLz5G9nSXTYQ=\nR:f452505ae034807ba5d0a3a9df4cd0864fc4f85c46c1066ddb1511909ea3f69a-a\nZ:Q1sRz1/YSLHO9rqM+JFY6cWLRwK5c=\nR:f45e36a8d2b5b99fab917df54bc00d32cd10898d6f13249ec0c817a7194cbf5a-a\nZ:Q12FTjUy14EqToip+8QBn7s7nGA8E=\nR:f45eeb0e7b51ca865a9d07e7f067161997ebbcc34ceacf607459cc469cc52c47-a\nZ:Q1UbCmYK75XSxVzY6VRpid/QEXJZU=\nR:f4609617f2a33c483c32c93db039bfd6bc8aa31f7d63a307a072ada377e54380-a\nZ:Q15qkH5RX5tR8apIiJX13O2gw47Gg=\nR:f474e4a263d4b79affa0396f58ed80821fbaf68e0f073bca788f7ae5eac9e0e8-a\nZ:Q1+smYmVWbUXo1Ruhe3o4Jk5FB8E8=\nR:f47ac6e2ff7038ff91e4d75bb264025f28aab8345bd22c6b98f4a3617ebf27a5-a\nZ:Q1SxlAq5FAP9xfWl20ORR+BlwSY3A=\nR:f47c906132f630bc527df5bd05c14eb8cccf60f97faed09f18a38e1afdc57d19-a\nZ:Q1E5mHmqCZFchqKWKWIy5BhKWGOW8=\nR:f49b1b9a7c670d5fb102a556e1148d96876665983ff93650c0410636df3107ed-d\nZ:Q1HOE2vhO37yqkNhqTlsjdzgIAylY=\nR:f4a24cfc67a218f436bf213be2e470f4cce66000682ca80ef1cdb7230848210c-a\nZ:Q1fZGCkIStKxagLp/T7ShsPjIzn8E=\nR:f4bbba924e4ecd746fb331e104238975561a239cbfe87ab599af4496eb5edc8c-d\nZ:Q1wE+cr3G4OZfOt9zOcGIdzoXvgGk=\nR:f4e4b1f96df53a5c18ec88674f4c92f0f1fe19b4ecb80dcd0ebbc645dd8b3826-d\nZ:Q1hemmMZaisplc+u/Q4r3Q5Ka1Zvc=\nR:f4fdf08ce0a2c4e92948eb98ec532adce8fb25cfb03c976bbeed68344e630d18-a\nZ:Q1GWxk5Nvqhyk/JrLngbXmEr+OQCU=\nF:root/.cache/go-build/f5\nR:f504f44126571f50821cb8d5c9efd2beb6034061b3f5b52179b6b63e53b2f62a-a\nZ:Q14x6spBesINac6VIekmARlvv2pJU=\nR:f545eea03c3b3918eb9ea8da640e4096bb88e737da8fe79b982282e391034a00-d\nZ:Q1A7rXXZrQIL85W62LzBnBseSOW8I=\nR:f54d7609d11959775e39971b8adf1173ef0867b298310a66d4e04e1c68e0639d-d\nZ:Q1+5JoPIVBQI4HMTVxgLdWTzU5CkM=\nR:f54e7bec82e6eccaeb1cb9259ee679d5d617a1211cb29cd7817f6d4a939554a0-a\nZ:Q18tmJlhxjnT5ZmIvr7Z1S6U/keDc=\nR:f55d94edbfd9ee3e7b6391e4eb06af3a30556756b2a2070baf93500784ae4cc7-a\nZ:Q18NrgekxEXhTKkyWa977dNqXUPx8=\nR:f56ca9a59d50dbfa14ea5efda72d652a13382fdcd46d6f23b7ae73dcba4e041b-a\nZ:Q1KwITj2u+sFpGOG0NLRokR+Abavk=\nR:f57da505e850def9e15e0364d92ad4549e6578c1c06aa985021dfd507c7d742a-a\nZ:Q1IJTCC+PqWYNZoYnQ7/Q5bewlgoo=\nR:f583bad06f76ca1c901fb4d2fe5e34089f30f651f961163a6b5eafd5aef69d58-a\nZ:Q1ZaWv5XtG6aINnBX+C9ExUnZDW8s=\nR:f5af47691b4c804b373b947595ee26ab1bac9fe817cd4070f2411b2f1d9a4b78-d\nZ:Q138QHau53DaFjI3n0gjGz9EM4jqk=\nR:f5b2fefd4e8b47c2eb842f4b97822229e3aaea4bae726e9c55e8b7ad0d14b562-a\nZ:Q18CKpi52Buf2x2ziwsAxwfLutHX0=\nR:f5bd832fea0c565637319daa7b7b1127087b31ebf77982418386cae0fd480779-d\nZ:Q1viLCB8SA87WNo0lgaxvw7wA8+4c=\nR:f5f73b7637391a3136d606eda2e5c13b8ebfaab2ccb6eb48c14fbd1e9b60c948-d\nZ:Q1sKfhi+GPpCEALJv4Ym704VXa84o=\nR:f5f8e6ba734b39e6e3994bd38ae138ee5f1c934fb31aa3d67b6ebab51e064550-d\nZ:Q14R5AMDsJhjNxVh6K+z2/AOZ17Ig=\nF:root/.cache/go-build/f6\nR:f63f0aead665ba3b664073b4dcb8200c40d4aa11dec408891a5101e4b13058f5-a\nZ:Q1GaEmJRNjW0QuZqcFETGfwb0Q3QM=\nR:f65c49fa33fd5573b3dfec61a3818596bda4ac8abc4ccdd4b3b39f7df368d45c-d\nZ:Q1c+yHbXue/50zDZCSNWsjf9Dnd3g=\nR:f660b7cb1902afcc0ba0141f5d6337384d4ceb691516ffd234fc812a2e8b3f61-a\nZ:Q1L7PqZtrGAQtc0XkMZQEIg7cNAZE=\nR:f66741f62c959ebfb3c1e124ad7fd9867d3719d06064acd4294b4b0014a9b54e-a\nZ:Q1NRMsmZQBotP6t3PL7lmRmRmKsaU=\nR:f66c407cec093707ca50888babb9e919f35304189d0ffb821ecebae6a2e295bb-a\nZ:Q1JtMVNeKdH2P02Y7IvRCE3Ix6qTs=\nR:f67749a82254fcd4dcb7c91fa5522c961bfa18883d4755c6d961f17ded9e8e40-a\nZ:Q12jcw40nwWLm/r4+YrbGTQQ7QzTs=\nR:f68227a73b25459bffd28d38a1beb0082320a6d8c5706f895f0dcb0eadf2ad1e-d\nZ:Q1DafZlyWTWLycG/4wEca24VucztI=\nR:f6b0432760329b1d6345b29c69897ea26458734104d22c7dad8d738454d24c58-d\nZ:Q1PEkYYk6RHXvhuC+aF4gqJMiYaU8=\nR:f6d91d76db966cea547adb9cb5a26b4203179ecf21b2a1ccba376c9d1db2778e-d\nZ:Q1iBvxPrsTafBBN5K0x5x+Xh7ocWs=\nR:f6f6b9dfa72cc828cb0a099e96f159581ff30b8fe67824fab0159355e12f82d8-a\nZ:Q1WpfLztVzrGQfHOSzuOHcbaHwrHk=\nF:root/.cache/go-build/f7\nR:f715529dc7a8c83af0c46b811dd4f65499ac57dab9fdf27eb9c6581c5d0560d7-a\nZ:Q15Nn9V64W2tXfL3hoPyySNLvNxgI=\nR:f721891579f6db9a17efe93a04421bc50ccee5b103ea96e936bf1cfb625d654e-a\nZ:Q1PasfxveHxqVvGM8d4Y5f9GQWkFg=\nR:f7341fd8206b645f69b2f9b0ce3acf325d41bd8c6210e604d9b2b113013b9a64-a\nZ:Q1Z0Dj5te1XSJle/+j+M60gq/fy2I=\nR:f7396764d1d10e9a1eed393495cc07a857865ba428e7b3c5ef04a2795cd6a1ab-a\nZ:Q1xqGhAbRS0bk1VgrIS3StauFInIs=\nR:f75a03f88727dfdb93324bebd4e89a834336b09f36c3f962c499b8b67c3b1dd5-a\nZ:Q1CfSuQ9gzKwWk8dhjADCD3bXxTIY=\nR:f76d11bd617d44ccb601af78970408ee078fbdcb3861b8e9848fc08e7079b6fb-a\nZ:Q13pM8gSFgDkTpHBT5WZnaQFTvmmU=\nR:f76f5688ab873fe1caf7de538e3f603a766a6aadb2d931d06ae47725a5a3ed79-a\nZ:Q1MqVTsFaTTOjkrF3YPIzDmZ0+tMg=\nR:f77af6dcf334fae46f3b1e66cb71ca6dd7eaeab1d933e5e205aef7beacb63f3d-a\nZ:Q1DzLGepAhzT1z1L844lZ0uH62Jb0=\nR:f78de10f0487eae2bcc51e7141d9d7af7c36981a126bfd4472501a2854dc5e32-a\nZ:Q1+qq8O2fzOjZkQYYIfrSlRQ629Zc=\nR:f79640c4b044985f88b2ff2f9d1748e66bba4b1b268ec168cf73844d9a4da38c-a\nZ:Q1TFKpZzv44X7YdcD7Zwmd5usaAMo=\nR:f796b06dec19371ccd4e7081b254480a10e12e57c8c44ec127df92e6c9eb7f65-d\nZ:Q1AukABCYHq81DuPjJK/iczXHYWEk=\nR:f7b9d0928959d96155111836564e224dca2dad742ee144066b327e9c60ec38d3-a\nZ:Q1ejXY9+BT5J2BNRV7WFckuvbpb3w=\nR:f7d94c7c5140857beaa48d33a521602391c929fb497571b2c4fb7824bbde5d6a-a\nZ:Q1fqIz4MpmBE9dF2m+/0Dpeyi1TjU=\nR:f7fa56a266862bfe84f6f49cbcd1129d2718e2dfa8d004a66821f9e4e75bad69-d\nZ:Q19hlYrjavxEYAi7BjP0SPeRZACUA=\nF:root/.cache/go-build/f8\nR:f8174e821daf20eee081d7ab1842205c681b804ef0fd0fd270d9f78e3f47e5b1-a\nZ:Q18VN8Y4vZKlelE7qg+ppI+jC/Kpk=\nR:f81d531c50174f31273b58b6242781a4937faa7e228b81bd2aec03c105296091-a\nZ:Q18pXPzu+bsgVaIEUgbtZkNrQmh08=\nR:f83b899b56f4ced27f6533d8f1e2c1cb8b486609f1737e7cf2813601479b999a-d\nZ:Q1vDmEKMvkpwfCRdvpKbmeaNcGFv4=\nR:f8471d0f2e6b1c507b98e734e5998698ac31ff4a1638a480d8fccea2d52871c9-a\nZ:Q1jhLlu1rzOm3nTpQPRylYc48Ogrc=\nR:f850c9815accc0bb5be99901739d9b5f47ab435991b7509c19457fbfd2fbf28e-a\nZ:Q1cmUxGqFnZbX04grBGqHLwV6J1MM=\nR:f8623ccb456c3860026930a36d61139cdc4540eee8323f77601568cfd7c96c6d-d\nZ:Q1QgyAxiKOol6JbWNIJ2UBAm7M7l8=\nR:f868a5f0cfefc242896638f7cf7f563d297f49ae31da1ee945123631810952aa-a\nZ:Q1JpcNRPSVSIr1mzpuVE9xpQ/0J44=\nR:f8796f3d82ed99d443956d9604d2485037f47230634d8915522f57d6b51ddb89-d\nZ:Q1zSS6SQdxgMpMpnxcJkVQLugG19M=\nR:f892e1047c9789e0a0d610996f103a35a3f0ac691bfd5a01f889569a54092445-a\nZ:Q1JWRrgaResWgeTiSrwn9UBU8KxhA=\nR:f89c2261bbb3697921669229fa4fe9502d7658cbca1883cff3115db37b034e33-d\nZ:Q1Z0xC3UoSk9OgOvMSLcvW+FKJYdk=\nR:f8a08b2027afd63ad5d606f8a9011081d43b3e59cf25bef87bcf10af32ce7c21-a\nZ:Q1tYdmMPmujZL5iI+9G/6FxOc4l08=\nR:f8a19330c7df19350d89cf2adde3d6bd2d52269865759e62f6a927b75c1fbd8f-a\nZ:Q1CHESO5rZd5pYc32oZcnZGF9mYgY=\nR:f8ad352350cd0ce1480b7f83278cc515fc0156cccc628deeec9e57d368fa24b1-d\nZ:Q1eSEw0na5+4+TJ5dYTo0xDP1VmY0=\nF:root/.cache/go-build/f9\nR:f912f60bd4d2f8c98b7bbf1721b88008b90856a3ac264b41e93d77bfaf328d50-a\nZ:Q163+kdgILwK7ppe0OERcsLfwrN+I=\nR:f92bb099217ae409507ef8810206be2b0b138aeb1571eb7d8573a33d2abd9659-a\nZ:Q1FZPHHimvcx/3L72kBBMB9BQ3tps=\nR:f9405c832009b136c76db3c84af095c50e8b5cce47db552605597273dbca5a55-d\nZ:Q1u9xIIHBCW8SgqpBb7xKGNbBPnvc=\nR:f966c9f55828780f0d6ac0fe29645ae0fbbb955fe7072e1b0d0d40d268753bf1-a\nZ:Q1tbM0gi3ZNHLevM1OP53e7bxZZMM=\nR:f968d0e360a475e3bbdf836c52cfa52651604791d31e278078c5fd4e7b221bed-d\nZ:Q1l9fOkmyHPbjfpvyfZ3+PJbF8x4Q=\nR:f96f940102b01c99ad27c58326219c960fe7f3b3c67ee6269dd68e08a8fdef3b-a\nZ:Q1c6fD/YkyjJmU40HwzpGBYdTELII=\nR:f990aebcc61c4d8880beff17b54ae3723109e2dcde5f10e70141d2b1e56889f7-a\nZ:Q105M0w/hBbe+bqXlyD3zopKB5iQs=\nR:f9945905c0028098a9b6a9be03aab370a2183c263cfcbaefc4e3d7793c3acafa-a\nZ:Q1w2hZIUE2UqbibG3zug4ssYye6eg=\nR:f9c7dd28b91a21db86eef3a9074516ea9581911b28911c5bc93561a85780f87a-a\nZ:Q1HT5nKZtiBbTMi+gt51682oypJBQ=\nR:f9dc1592f946724f1a8e7028fc227a217676523c21270c3266ee2c9d95d746a5-d\nZ:Q1Yq2Nne/q28Ok8xcAxeoNdp4KRfk=\nR:f9e760a255b2ca8a336640f5acff8b26c3d9efb155b514f411abfe8ed6eaee60-a\nZ:Q1lsLKOqYEWXqBKLk3vNIzjLm1mX8=\nR:f9f4cce68ebb19ddc618120da7b1cda1a2de950c01fc817109c86c7ccc4cd117-a\nZ:Q1hjd7+3vE6i85rIbE4ooLoqfTUjE=\nR:f9f7d973cb1e6cfcdc4c3a5fbf0dbe70d98ce4bff6f35cd23a51e65e346cc36f-a\nZ:Q1HKLDwFSYyfbzNVw+NwUqE91wXaE=\nF:root/.cache/go-build/fa\nR:fa026091aeeb1fdd73cc3305b184b7ca541a7b38452cf9d7bbb8adc2cf128b95-a\nZ:Q1P/aB2PjpMWgEnJ39wreyR8uROVQ=\nR:fa079af3e83b7a967f8e5069dc92e3b4b671517c4dbb30ae99ab560e804fa5b5-d\nZ:Q1kdFtoRKWL/+Nkqo+PUATn2Ji6pI=\nR:fa21e4bcc0150a1df51f1c0342c16a12a1bbf3fc6266258794e8c4bed7366bd7-d\nZ:Q17RAcigmqZS/jswN3tWXkHFb99j4=\nR:fa25da72efcfff3b6787e59540d2dea4d682e7ea96db327db70abbbfa77f68fa-a\nZ:Q1v71WUEzYwbaJgLncmrXiTFZKDFU=\nR:fa4d5b2c92cc076ef5eda60d0608d1b76f20082a2aafa7a7aa32e2cd545374e5-a\nZ:Q1v7B91DA2CMN89OLgWSrv1P3N2n8=\nR:fa5adf965a0cbe1681a6ed5f4988059f856319f84650d9c4c62184af6febb1d4-a\nZ:Q140nUEtRrphD51SO/c3GPqCNr5+Q=\nR:fa72090957637a999124add613f2753da973c54393a9e289a4256cce600fa8f7-a\nZ:Q190UDjO6GKHdyelqcyHRtr0L9XgQ=\nR:fa85b4b0c6835604ad4024ceafeb85b72ff2678b95c67ebe5ae1a7db02ba0f48-a\nZ:Q1g8K/nP/HOCWRpgoRNkN9E8ul7eI=\nR:fa92af4d4ffa8644f490180cecdd132a650dc29e35d1530900fe762df1e05cb5-a\nZ:Q1/Dri7hAmLWh8DmQdraxpFmtiNCg=\nR:faa1dab50f8023c9a7d9fc1cc8e37826a8ffefe5c039e4f86f2607ef986b4de1-d\nZ:Q1l4CR+eoQwPaxmgC4guqv6xQWh3o=\nR:fae508bd0f79ea89ff1299c40ed3fc1327d8805424f1c41c1269445532d297fa-d\nZ:Q1QVfze0CfmOHLMbUycMWz25MEOFQ=\nR:fae81596449b8d7e8fa63dd5d2f5600b26df34bbacd6743799df59af6bedae54-a\nZ:Q1boknPVucwBI0BRglmgDCMmQNy00=\nR:fae87a1457365e67774084ccef448739dceec0b181d4752272cdfc975f621d5c-a\nZ:Q1CHfQGnJvYZgMSwizrrNuYx5i7ps=\nF:root/.cache/go-build/fb\nR:fb004d934d507e5a6421f28746ba8f948bbc94957ee38746f5f9cba3dc7cb947-a\nZ:Q1eY0MLuHHdrY7tsNLYoe3TkgjoIg=\nR:fb0408c5e8cf61ab7a0170afc7fec6d483172808d4e147408263d65a7218ff26-d\nZ:Q1JbffesWMlhtmdloyutpUTPb4vXs=\nR:fb0ccfca967ed3b8814660741dda9479e5ce3dfbccf2ca21d689d33aa627268c-d\nZ:Q1fuUVGNQyBgbLaaJc5WpPvyhVfUE=\nR:fb12e080b5cf4a031ffaa51afbf7bdebfcaba0b9dc8f919bf3da60b8d8d5bfde-d\nZ:Q1Vb/9FrLnoZw95EAVpwZ4nIiG/CE=\nR:fb1f1c1255691e1df235487eff05b9d29042376a022905a87b48295537d98e22-d\nZ:Q1LaPm60s6NmMLwfVZjS2CWUh9hUw=\nR:fb1f67c8523a6f2b08217af3dc486430818911c7effa3b16e4da698d00bc975a-d\nZ:Q1Mlpn/be5yK2wkP6jcOz1WvLpTs4=\nR:fb2909bf03cf087f0735ee6650f88827741468df2c3433e8f2d1bd2ff74ecd43-d\nZ:Q1T3rENPlWF7ANUVlPSHWbjgAXDcY=\nR:fb30a48ba6a19f5d4cb063f7c7c2bc0f58b543b7090e87f3c2759c6cdeeb0a1f-a\nZ:Q1M5gXiHEZ60l1pgk5n6FIG3u94KM=\nR:fb3aeb5dc69f76cbd971eed72602720859235f91d0194a7e72b33b9b225bdb53-a\nZ:Q13pd939sqQ7Pe/24JPFXpr0W60kA=\nR:fb46f043db0dc3182f5248a1f59d0b8dfa43195ec415e4923fd10d6e9b68e4a3-d\nZ:Q1KKHXz8/wEDQ0IQHVjGKxMwK+GaU=\nR:fb4e0ae1cba90f1011d783c7365058296a5001fa716aae7bf0a734c6fd11be68-a\nZ:Q1f2dzsV6QkReSv6BKn8QyZc/UaTo=\nR:fb59883458ab84a130d6b3dd8bb9a4aa9bbb4c1ef082b46a3a13f3ab9e0c67fc-a\nZ:Q15rp5hSPMPNo1SzzHr5j9HH8VyDc=\nR:fb8aa6875d5f2cdc4e2e9e23b3f80531dd321368af734fdc4e1517560494a01b-a\nZ:Q12tcxWsBcVUYjtoY7Tjp8jCLam8E=\nR:fb8e833cd761b3d29673969cab6f7f9039d279213bd8de37a2200ef6e62df2f1-d\nZ:Q17DPgIQ5rmHKG6LyA3t1WsvB+rXw=\nR:fbb522b89c07e496a2517564bbc99c8813a9b81d47fb742500141e16b87ffff4-a\nZ:Q1vWxBBETDIkpH5TakxA5E6VIyBKM=\nR:fbd3f0a0b1bcb06b94a210547b346183455be303d482240b6e3b775ad91141c1-d\nZ:Q1ktRy8ThAx0Sx2k360RLMmeBa1yI=\nR:fbf683cd1314637c28aaf4fb65205d990c459938c32673d6492b0a046c5a2483-d\nZ:Q1TkhEdJVvXb9N3jbhH0XnxsuljHM=\nF:root/.cache/go-build/fc\nR:fc060905bd8e0db47a7c5ec74e5a032deaf3051f3909edee4ba18ba0a3b3913a-a\nZ:Q1s7f82Kiv5cqnf2DrFSpkM0ZOJzA=\nR:fc0f44270236ad4f8b3b89947e00a3642d3fa0371ef473200661a15d0e80fbec-d\nZ:Q182NfoWqu5/oWl94fxfXWCmk0Jsg=\nR:fc118917a2ce7b94662b2b4e12adc4d090aadcc297ce09b4c1e1812fbba756fb-d\nZ:Q161sZivTXPpHv/BJiZ7MVwJpvDUo=\nR:fc40abd0343f9a80c5b3dab549574858d22f9d70262ed2d3a847fdb54e3e303e-d\nZ:Q1APsfmQEOw+hIGms0NWncVwWhXnA=\nR:fc583f2a158a30cadec647585a33d21cc38a8fdbf76415311e372b0ed513c197-a\nZ:Q1UslXn+dR0WB7VSwWU+XSwMF3jQg=\nR:fc5c0235e4bcdd41a9d42d2e5ce0583d4d7531f37fcb306c46b82e364ded38a7-a\nZ:Q1IjDb7FKNxA/gHz9P9PAPSjzN9Y8=\nR:fc5fdfef38969a378c1bdfe971a3cd3eaea43cad5801dc226e01365107a48225-d\nZ:Q1WzVVnVg8sXzCZn6muLQ6kskZoyc=\nR:fc6e88e530188f43adab6b90fc5402fc5e21a02575f4531d3c0b673e395e97a2-d\nZ:Q1yqnM8eAops7jHroRaEJtxuleHXc=\nR:fc711fa0ec43789507f524046ff5d9a251a2eff8d01ba334cb516520e9a469ed-a\nZ:Q1PHADc8/x/Kry8C0pSPlSxE114tY=\nR:fc7956d81ca53a5fc0ccca8fa9141adf03d54afe0eecc0933268b33ceefa20cc-a\nZ:Q1dcyU7xg5VwOObYdCnOUMkInk9sM=\nR:fc92ce46f7a5ae5905cb56b3fdc4d94f9f3cbe9fab13d547ca3dd833c0e2a430-a\nZ:Q1uGHBtNawAY28S0Q9JAkSNo1NorM=\nR:fc98070e77eea3f285d1d23527f43ec254ba1df26f94909b1482998ab6ab5ea1-d\nZ:Q1e6A/N5E0/eP/gFV3SY8MQOWpd1Q=\nR:fcad49706e7a0a2f9211c8fcc845bedff0832636a33b86387ccaf9e7317d5c58-d\nZ:Q1jiM8FHvd5I++m/z64RJXAVMUQ5k=\nR:fcbaba0904dba9760e64620f493128f06cf242a652961ef0c36016c7d2e4ab2a-a\nZ:Q1bWW98JEKxEdM4rIM0FdMo1Qj2AY=\nR:fcc0b6fd36b8a4f52a2d3af26b3021d6388e7554eb6dc966cf4dd13fec03d209-d\nZ:Q1OGkY7DwT2yjr8PMzvn0qn0u3unQ=\nR:fcc27471fffa27e4e2f20cb3f8101a82c64b94597b88590af5add60b09ac6dd3-a\nZ:Q1IIN+xRlQP1Z1Z6sfKzy1caebAPY=\nR:fcc31f3e4ba0e2aad7980f4966dac1ad56fe6d30c942819fce99e5f7a9bcde06-d\nZ:Q1TMpZ2su8mgxxVtSu+JLDqYAmJOQ=\nR:fccbb8d21281145fa9e1526d5235a3c0a484ec68893791a85c52c383eb36f49c-a\nZ:Q1gzWtORgtUbERDobfi80xcbtlS44=\nR:fcd47b850c2a4f4c22dadb28f8aba8688eee170b9457819d8b5e47880bc8e98b-a\nZ:Q1f6QmwhV4PPLgr1l6cz/CwqAflx8=\nR:fcea3428f878ff38f56ed7853c4b297d035f887251ad7b462cdd164d457160c2-a\nZ:Q1De4T20NduPuisuddwcclt41jK8s=\nR:fcef9cb3a7c5d843935ebb6901c202dea00ce508e762e1d994788d735d066331-a\nZ:Q1q8MXqHm2bQTAjzkktwjhCQzgOb8=\nF:root/.cache/go-build/fd\nR:fd070ee0f0fff8eabee9bd35406056dcdbdfedf617fd822061359a0363407552-a\nZ:Q1pSsOOJO60NiFl8jDJpBHvdiVCPE=\nR:fd0aca100cd53ea37310adcc3cd4ed51f2adc33c8473a5e60945a9403bc6ef1e-d\nZ:Q1YgggslvgVBeggMh222zvayUjRn0=\nR:fd0d68e80076e04b5d0b4d9be94cceca1aebec6bf84004577ff9af09627e5956-a\nZ:Q19HON5I4qSZIFWtSsL2GQidQBF0E=\nR:fd116917488a14f1a67035428c5372b203f7cb4814649c0a3f52427f8832b2ed-a\nZ:Q1zzvRrfDiLo8pmei673lUiHMNJKk=\nR:fd17fdda69bcef3fed4611ee186f13d70f85dac1dd5c7830b90aec2849f89a80-d\nZ:Q1m51fUu7Di4UxVtTVShMdJdisYyI=\nR:fd5721f1726ea03b5261c0c0f736a9d4d952d9f1b8911192eec55d4510fccac2-d\nZ:Q1W1ThL7JccRWsH5EDzTELygv/QUs=\nR:fd57da8b7865bb9dcb48a70058453a2c09634d9ec40f598728b0939866488ac7-a\nZ:Q16nHmU2qC838nnfyNfDQ3ps6HB8g=\nR:fd5ae89d9cc86f39d0c8fca076554479965324123ba9dd555f812cd6fb972b83-a\nZ:Q1UjwaebRIqtUFR+AqVCq6vf+z+m8=\nR:fd6516b905475910d02ed3c7445fb4332546a0315ffe6650c4b7da7ccb122fb4-d\nZ:Q1PQl8ne/tx/XPt/hNpeCGw5BreBw=\nR:fd7529f1594ba488e28221b8d8b032a3a4e4c5629874b550a1736f63879384b2-a\nZ:Q1Gn/fmuO3dO5/IrZg7WpOwi05JwI=\nR:fd936df0424d6a674d6461ff1778d54834b348fc83f45a732eed3fa39ec89244-d\nZ:Q1gpSbpZ8hY87TTRSzYg+/ggl+r8k=\nR:fda2b37068e446d77e11787a97e0185f32e185fd343f90c849e0f3db23ecbcdd-a\nZ:Q1l+s7MMzPd9jx7FyppQI2f45cUYM=\nR:fdf711500a2c6678e4529f9dccca22fe03404b0ccb44e9a415e6b93584bb402a-d\nZ:Q1+6V7tuJxHOUMLpfTW+LNSo5to3k=\nF:root/.cache/go-build/fe\nR:fe212e1134ed998bd98283eaf2a623bea33151b7daf262ed06f297a2b59a29b4-a\nZ:Q1K7VkDHvc7O/fCjIw3apCtWu5t2I=\nR:fe2507733ae0bf7d96ff93022c32473eb7d811be7d6e8c486dc7a5e370c3c695-a\nZ:Q1wYzyoqTFe7dBfrox5VbscQFt8Yw=\nR:fe2b763b52d35b694f5201a4bdb3a918676eb85c23d5fb934438b1185154ffec-d\nZ:Q1F8JZcGQ00vzxXQ4sm40/Jdpuss8=\nR:fe2cbe986505909363054e5ae1c8370b0904f7ae5a1c559d09507af4e20eb000-d\nZ:Q1bF8jTyZa5f+dbKZQOiAn3qCyGL4=\nR:fe315d9ff92c880d80f997a0774f4544b5a1bcabdf7a2d5f4a3078c84b7e6097-d\nZ:Q1dMiTLm7Nz0ek2PmQllrOjDwI3U0=\nR:fe5225da6b089bcaf77b887a8dda8df1d7eb247f09357e0a53c759e0356dcc0e-a\nZ:Q12SMXuG1cmgTdV25++dSaN+bIP9c=\nR:fe524d6a44a0e341a65ff8d7769938a579d15eb35c3e601b5f1a573165308be3-a\nZ:Q1MxO5cWx96D2BptE8sGNh/4t+eg4=\nR:fe8095dbc422e2b47222e2f33c38c2f0cff9c7dadc7e5dfd27db67ab5e9893f8-a\nZ:Q16fMmdbOczy2E/Sw4mDa0n26wb1Y=\nR:fe80bf1e01f1a5a197d45ae1ae3f112eb632a55bcb33fd4871268243b207a559-d\nZ:Q1eXlCrPp5C3CGVm2ri12d9Nz7tQo=\nR:fe97ed37c9f431cb57e89bfe6ef22e6ab703b8c97fcf1cfdc3065fca2178a75e-a\nZ:Q1PsMM/NhbAVapGDOY9KcC69HoaZE=\nR:fe9ae8661f6d70e75d1393b0326eb31a8a7f86f25be7282031549c91bfb8cbe7-d\nZ:Q1YVv+GWWYGzT1NecdirVgGSR1nHE=\nR:feceea01d8fb9a44c87a2525b19bdac5e0c81c5d9ddbc29759ef6b0af61d953f-a\nZ:Q1YtOWMHNS+PvSm6CbTdghaxaT4T8=\nR:fed4f1931809d98fb9b4d4d3f57ff517158d551fc178c3177146d21c84ca9b62-d\nZ:Q1gJa33D/51orEw6FgfCbHzZ/pcfw=\nR:fef04f75f0b0e2df45ea1ef1f5645d5fd3296b50f92bbe8d35828b42c141f453-d\nZ:Q17qsGB62q28vuhk5/zcONWBtE3wY=\nR:fef7e14d52039a2d2af5eba649b372166933ca5fed89d39ae3e6b6525f27c53e-a\nZ:Q1uWW+RDeYQgaQrk9kLDBr3LKEaQg=\nF:root/.cache/go-build/ff\nR:ff13c53a4551f9f1b5469b39cd56a42050e0a7fa4673fb77539ba288bf14579e-a\nZ:Q1YGzl4joNKbarQa0pMEMwiLxph5I=\nR:ff30a122b0280ada813f62bba910e6f3195a857410e78a35d197de710740918d-a\nZ:Q1lw+GQoA5v9xaE88MYccpVMbg2AY=\nR:ff3f75a43d4b1df01f11b964aa07246eac59791ac4a763b78f2d4edd0d1556a7-a\nZ:Q1e39+rdaSHUR9y1SGi2JQJH7ceGM=\nR:ff469effd80cc1d18fcc1ee2a6558f8b309120213f9113c5e8bb86c3c7b1b04c-a\nZ:Q1Sd6Rbn+9vNkmaNLs5nErDdzNbSs=\nR:ff559fea37f411fa3ab59dba3c8d9e1be1673edcc1a08567bc386a12fa4d8fbf-d\nZ:Q1QhI3N3mWds1q2R31aelE7ouf+54=\nR:ff6535b151f7aa7e294ec3ed00535ec061537fd0db1210bbda90ee1460d033c3-d\nZ:Q1M1E3gpJ+NeB7alGvF9wr20j4fRw=\nR:ff6a7b01234bb8ece765493e1252271610ea6cddedfd8911f188b580b7dab394-a\nZ:Q1Ge8DCeMUsIm8vPEAgo9prJ084f0=\nR:ff73c7c8939b208b7b40b3c9d00aeb03a22ab18a1393e4a4d807a0288ec239cf-d\nZ:Q147iKXk80vD8304KiBv9NSvOdC3g=\nR:ff809139c6d737c1610315a740134d41e4d4607c78af9c84d194fa7ed6551fac-a\nZ:Q1P6t+kGS5gV8MamW52V/pGp4XWbM=\nR:ff87aab55e13e890c5fdf326582f53d58c0fa143757b322e6270c562aae700f7-d\nZ:Q1F6TwDl9LiWyZyHSRE4pdeTeU21U=\nR:ff9442211171ac15c01b8977097f8d0745519e1cac13ea349df91d21450b4501-d\nZ:Q14/i6mUvC/S01YKXf6lui4ByaU5w=\nR:ffab74fad769e2b3149dc4e88fdf7767811cdb18260dd16be0476ceb7d5150e1-a\nZ:Q13+v/WaktTVNR4YyAdBE5gRzn3Kk=\nR:ffbcf29ce0ed05cccdcf0a5541ec3018b65ff979c5d7edc000dbef771fd55516-d\nZ:Q1CFl5EN6gAgo30KGe0fYAvjug0Yc=\nR:ffd03ceacf9264ff5b63b81e62808367b42fa7e925bf6c04fa793aaa53cc4339-d\nZ:Q1x6eldBADelnJb05AFvnkhEzr6qY=\nR:ffd2204a9989515228b65cf0282be5aad7c568a867a955d9b8b6aec041b873e3-d\nZ:Q1XjQQPC7J170jkyvRqWAYJIJLx1g=\nR:ffd329d82f99079700ef2a309af3369751b0fe320bfa9ee2006ebcfdb66209ee-a\nZ:Q1zboB+swIqAPVnHskx4VHKeQGyoQ=\nR:ffdf03adab69789078ca4b681ae2410806f5d6c1bc07a6d2c16896cf093af221-a\nZ:Q1uRYJWzuOQJAZPRmg4MTyWaHBo6E=\nR:ffe0ee3fd77f0959c915f016ece0097f44610aa28c3ba826d344c03ee9d28c5c-a\nZ:Q1XHGgZtBsDHz9B5+abqfpfGQg2mQ=\nR:ffe64ad203650b1971491ef4358ea9a482f8b8a5ac5d15b7dbdaa6e6748072d2-a\nZ:Q17LkwXsxlQU9CodmZsj9YrhO3yL8=\nR:fff049a33aa39d3ab04875a8271b0dec7454905716894d91c155c8db11fc00fd-d\nZ:Q1ANblP2WJCUOL9X5TwahhPyb1h/o=\nR:ffff21c3ce83ec4d3503e92456f29c0f9de60d57f45fe711674d3c9535e38e0d-d\nZ:Q1S/BFSWXhI5vZhyRhNVV815I5H5Q=\nF:root/go\nF:root/go/bin\nR:goimports\na:0:0:755\nZ:Q16jmBWoCC4RqBRCgjxhWCwedYdR8=\nF:root/go/pkg\nF:root/go/pkg/mod\nF:root/go/pkg/mod/cache\nF:root/go/pkg/mod/cache/download\nF:root/go/pkg/mod/cache/download/chainguard.dev\nF:root/go/pkg/mod/cache/download/chainguard.dev/apko\nF:root/go/pkg/mod/cache/download/chainguard.dev/apko/@v\nR:list\nZ:Q1eIiq3zCtJnPyWkHkoQBj6D1zoWY=\nR:v0.5.1-0.20221108210157-867765719b6f.info\nZ:Q1V+7btsKEKx1sZzQ75cRY1jq3TjI=\nR:v0.5.1-0.20221108210157-867765719b6f.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.5.1-0.20221108210157-867765719b6f.mod\nZ:Q1SyYCJeG1/9waIhZpYT2T0SvWMAM=\nR:v0.5.1-0.20221108210157-867765719b6f.zip\nZ:Q1kZuazzBO3TSrcVRb/8SQlOt8oqE=\nR:v0.5.1-0.20221108210157-867765719b6f.ziphash\nZ:Q1DiNrh2m46/82h8lL7TbeET0Fm1E=\nF:root/go/pkg/mod/cache/download/cloud.google.com\nF:root/go/pkg/mod/cache/download/cloud.google.com/go\nF:root/go/pkg/mod/cache/download/cloud.google.com/go/compute\nF:root/go/pkg/mod/cache/download/cloud.google.com/go/compute/@v\nR:list\nZ:Q1LGsD3VL61ktVk/EnEi+HYgM6/YM=\nR:v1.10.0.info\nZ:Q1mOIvtmVSQ7vBiNn1sF7zMsQzq5I=\nR:v1.10.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.10.0.mod\nZ:Q1mDeNsK7ykEgGpSl423fHCqYCgHI=\nR:v1.10.0.zip\nZ:Q1pQ8YxQ4eEPpJ9uJABK5TU4/anWo=\nR:v1.10.0.ziphash\nZ:Q1peBVAXSebI5E4AT9PNmTgiAkw5k=\nF:root/go/pkg/mod/cache/download/github.com\nF:root/go/pkg/mod/cache/download/github.com/!azure\nF:root/go/pkg/mod/cache/download/github.com/!azure/azure-sdk-for-go\nF:root/go/pkg/mod/cache/download/github.com/!azure/azure-sdk-for-go/@v\nR:list\nZ:Q1yGqOsgVcjrMTkAe4MVucjYfBVYI=\nR:v66.0.0+incompatible.info\nZ:Q1OZJUlT4M3D8RMV8FvbE2m00cQXE=\nR:v66.0.0+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v66.0.0+incompatible.mod\nZ:Q1+RCWJ/vhL2T464gzvVsimmbOCyM=\nR:v66.0.0+incompatible.zip\nZ:Q1EyPNA3nGPkqA2WRwf+J0Cmr6VDs=\nR:v66.0.0+incompatible.ziphash\nZ:Q1UEYwfPbDrfehXH0UtBsEpXwWUZw=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/@v\nR:v14.2.0+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v14.2.0+incompatible.zip\nZ:Q1DRYr+74pGJlNw/lRZwQlUTi53LQ=\nR:v14.2.0+incompatible.ziphash\nZ:Q1V7w2jP5m3aC9Iwjg7kS8of3rGjc=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/@v\nR:list\nZ:Q1PNblToo5SrKC3Lg88t7UnjOIGOw=\nR:v0.11.28.info\nZ:Q1a5D5KgT1DSpl1WimRJlOFDCgRVk=\nR:v0.11.28.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.11.28.mod\nZ:Q1wkxhdhXCKHqCr3pfNox7olTE1W4=\nR:v0.11.28.zip\nZ:Q12yTllVr3cdY5S9KUva4ARSKVwZE=\nR:v0.11.28.ziphash\nZ:Q1h+2vbSQa1cNA5p3wnrp3ravu20w=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/adal\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/adal/@v\nR:list\nZ:Q1/qZoQBSoW4MBZ99OcsrGmE3gyUc=\nR:v0.9.21.info\nZ:Q1qELFxHX/m39qTrj1Qf+ru4wb1jg=\nR:v0.9.21.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.9.21.mod\nZ:Q1a1tozxAR/zpj6eIHDkaf9sTjIg8=\nR:v0.9.21.zip\nZ:Q1wRB6dSYtjjCYZhlpYToiJNN0Qk4=\nR:v0.9.21.ziphash\nZ:Q1hn4njlz1uD+1hr9JYuP+EZwzP84=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/azure\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/azure/auth\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/azure/auth/@v\nR:list\nZ:Q156Lb0kN8bQW9rBx9AUmKM8GQ2qo=\nR:v0.5.11.info\nZ:Q14pK8PDWWiZ6Zi70Eqyok0NbhcyM=\nR:v0.5.11.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.5.11.mod\nZ:Q1LjdjfursU6RQ3u9W2kkF+GK7pf8=\nR:v0.5.11.zip\nZ:Q1GLWJxhmbKYTLjcJB8CBBSFulzu0=\nR:v0.5.11.ziphash\nZ:Q1+H4Co7ye3dHTa564eRQUYSclsd8=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/azure/cli\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/azure/cli/@v\nR:list\nZ:Q16mOUOau8Iyo0zv9sSoKks1hbexQ=\nR:v0.4.6.info\nZ:Q1s+7hcbAgPls/4AVMpZRtuEKss/w=\nR:v0.4.6.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.4.6.mod\nZ:Q1EPYgb14i8/4aYT5foCdgJgat7TI=\nR:v0.4.6.zip\nZ:Q1XR77Ojmsv6wO/MW3P4QrjxFFT8c=\nR:v0.4.6.ziphash\nZ:Q1k7PPtoxbMwrz9TRVHr3gI5qb9vA=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/date\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/autorest/date/@v\nR:list\nZ:Q1FqaHrzImyywbPhoNmKW+K84MQEk=\nR:v0.3.0.info\nZ:Q1MB59UFST5ajObcQ4FQff/+Rikkg=\nR:v0.3.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.0.mod\nZ:Q1cAbH5VPGGbcT8/1CgI8P6lpumRw=\nR:v0.3.0.zip\nZ:Q1Ez1+N9LZQRGVuumB/ZEINQ/pYqQ=\nR:v0.3.0.ziphash\nZ:Q1/pIqNYMAeH1n/cpLEAwOPCcpX9Q=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/logger\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/logger/@v\nR:list\nZ:Q1F487MNL2GrrXGU3SVMQvbwKoo/k=\nR:v0.2.1.info\nZ:Q1tkVvUT7+3/k4lDnFS67IKmd/5Mg=\nR:v0.2.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.2.1.mod\nZ:Q1QJnjQKkfj95ey+NlwpZHUsIX4B8=\nR:v0.2.1.zip\nZ:Q1OELbKfPEYiAkGJj/VqsxWKFCAg0=\nR:v0.2.1.ziphash\nZ:Q1uMOq35A6kmGsIQnRxyeiFg9htXs=\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/tracing\nF:root/go/pkg/mod/cache/download/github.com/!azure/go-autorest/tracing/@v\nR:list\nZ:Q1oCXjRzPCI8t9oTP20ildAa5ulIQ=\nR:v0.6.0.info\nZ:Q1ixIDpNyGgITP9YtTrIEMna2sXv4=\nR:v0.6.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.6.0.mod\nZ:Q16jDAI4um1xiiXl5xrOwScyU3Fc4=\nR:v0.6.0.zip\nZ:Q1tXT1lMJwI1Rg0fLe7FqQRHDNduc=\nR:v0.6.0.ziphash\nZ:Q16BiOljeDnVQPy2B7fz7ZJwmQ2f0=\nF:root/go/pkg/mod/cache/download/github.com/!make!now!just\nF:root/go/pkg/mod/cache/download/github.com/!make!now!just/heredoc\nF:root/go/pkg/mod/cache/download/github.com/!make!now!just/heredoc/@v\nR:list\nZ:Q16EnhDULC4hOAS1FTqd6Eq6RY/Ms=\nR:v1.0.0.info\nZ:Q1hRofu+CN6/ZHaK25VQU6wN4Rd9Y=\nR:v1.0.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.0.0.mod\nZ:Q1blPXbKSC4fFoGqsd8vBmMT41vEk=\nR:v1.0.0.zip\nZ:Q1jiW9lu2iZTRkYYXXOuj2AbnSscc=\nR:v1.0.0.ziphash\nZ:Q1N6lRxo5QdbWQb8ht1Du008lo2UY=\nF:root/go/pkg/mod/cache/download/github.com/!masterminds\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/goutils\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/goutils/@v\nR:list\nZ:Q1cPNQhJAztpBlKT/69oGSHJD4vsQ=\nR:v1.1.1.info\nZ:Q1bk/VjNg5Pw0KNkh0qwKybJCXJKk=\nR:v1.1.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.1.mod\nZ:Q17C+sEUnQ8ynyYSntWwT+UX3mPF0=\nR:v1.1.1.zip\nZ:Q1g3JSE5v0BeZ11SHelMVXwWkwjis=\nR:v1.1.1.ziphash\nZ:Q1GTU83jxdAMHwj2/cyFMaQOpO83o=\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/semver\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/semver/v3\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/semver/v3/@v\nR:list\nZ:Q1qpzUcXFPgee7N6QBCy5n/c4SUvY=\nR:v3.1.1.info\nZ:Q1mlQv4WNxNfpmu/Va5Z1hbifEQWg=\nR:v3.1.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v3.1.1.mod\nZ:Q11W+IGZ91WF193OnNUvRQRBmDRNA=\nR:v3.1.1.zip\nZ:Q1qL7SslySzqdNOeKgorvVF9AEdg8=\nR:v3.1.1.ziphash\nZ:Q1AdF0P7ps0qvBpIYEnISKBxcji98=\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/sprig\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/sprig/v3\nF:root/go/pkg/mod/cache/download/github.com/!masterminds/sprig/v3/@v\nR:list\nZ:Q1if9t/5MADdTTDJY0zTgrVbNupsU=\nR:v3.2.2.info\nZ:Q18DL1xMQ05khbMhkMd4aObiFG6gI=\nR:v3.2.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v3.2.2.mod\nZ:Q1d2YdyDhL6y4JfP4c9VsTnRCdVb0=\nR:v3.2.2.zip\nZ:Q1fj1HGUnjIV14Nkur4hjt9+IS/7k=\nR:v3.2.2.ziphash\nZ:Q1pXcSdif/Lu6IMEtQDh3pFrRsDng=\nF:root/go/pkg/mod/cache/download/github.com/!proton!mail\nF:root/go/pkg/mod/cache/download/github.com/!proton!mail/go-crypto\nF:root/go/pkg/mod/cache/download/github.com/!proton!mail/go-crypto/@v\nR:list\nZ:Q16sKJM+GoPzEP7XNKLZIm/8h4FpU=\nR:v0.0.0-20220824120805-4b6e5c587895.info\nZ:Q14ga8LL/FOg/3nZzYN4NgqEWSB7k=\nR:v0.0.0-20220824120805-4b6e5c587895.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20220824120805-4b6e5c587895.mod\nZ:Q1WL1tfQ0/tkplUO0MFvyXL4YAiWw=\nR:v0.0.0-20220824120805-4b6e5c587895.zip\nZ:Q1Vj5rqHQ2YktwzuxFhIN5/JR1jxo=\nR:v0.0.0-20220824120805-4b6e5c587895.ziphash\nZ:Q1ml9aWWJsvYxCqVLogjQnhayF4pI=\nF:root/go/pkg/mod/cache/download/github.com/antonfisher\nF:root/go/pkg/mod/cache/download/github.com/antonfisher/nested-logrus-formatter\nF:root/go/pkg/mod/cache/download/github.com/antonfisher/nested-logrus-formatter/@v\nR:list\nZ:Q1hsgPaYl5F5h1UhE5Xnq4XLkaXE4=\nR:v1.3.1.info\nZ:Q15KA71Vt110ARpbfL9RZDC3B2T3M=\nR:v1.3.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.3.1.mod\nZ:Q129i7yznBRPz9WLVqbLyCHHY1CDs=\nR:v1.3.1.zip\nZ:Q19AijcXMdtY0xcSZHfweZoR4zCyY=\nR:v1.3.1.ziphash\nZ:Q1+Bx+QjADkPI0o4NbRweo19qCmNg=\nF:root/go/pkg/mod/cache/download/github.com/asaskevich\nF:root/go/pkg/mod/cache/download/github.com/asaskevich/govalidator\nF:root/go/pkg/mod/cache/download/github.com/asaskevich/govalidator/@v\nR:list\nZ:Q1z9U5LtW4NWF3FFrPKXjFQtagQi4=\nR:v0.0.0-20210307081110-f21760c49a8d.info\nZ:Q1Sf2Lt0zUN0wEYO1XdH7CKdYHDX0=\nR:v0.0.0-20210307081110-f21760c49a8d.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20210307081110-f21760c49a8d.mod\nZ:Q1HBvJu9XyNVTJKwTuFVKLtOwfQJU=\nR:v0.0.0-20210307081110-f21760c49a8d.zip\nZ:Q1SwBDPQpv7+NUOM8QksiU0wNAFFE=\nR:v0.0.0-20210307081110-f21760c49a8d.ziphash\nZ:Q12O47/PFFTAUCj2O9SY+Vy4IIbQ4=\nF:root/go/pkg/mod/cache/download/github.com/avast\nF:root/go/pkg/mod/cache/download/github.com/avast/retry-go\nF:root/go/pkg/mod/cache/download/github.com/avast/retry-go/@v\nR:list\nZ:Q1rRqQT3vBckQkYxoRVXfXYu5vNP4=\nR:v3.0.0+incompatible.info\nZ:Q17ZUWlLUiGzsKxTG2cK4AzwspDdU=\nR:v3.0.0+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v3.0.0+incompatible.mod\nZ:Q1+OerRvwwnqmTvwcjIywcwmKGYBk=\nR:v3.0.0+incompatible.zip\nZ:Q1CUbO4ehJYmGMKh9jeT6bI/+LWt8=\nR:v3.0.0+incompatible.ziphash\nZ:Q1piNnAtqEtSS00R2+XwQRJcyCoHQ=\nF:root/go/pkg/mod/cache/download/github.com/aws\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/@v\nR:list\nZ:Q1Pqof0vdgOypBmUGQVj4cR+9ymHQ=\nR:v1.16.16.info\nZ:Q1bvz+VcVZsFLM2pxdea6Bp+eT++Q=\nR:v1.16.16.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.16.16.mod\nZ:Q1yx74ZCvoYEP1IMFb0Mji3Ep8Edo=\nR:v1.16.16.zip\nZ:Q1qCdQs8rGEZfdO+i8+hNbfQ0g4uc=\nR:v1.16.16.ziphash\nZ:Q1lu804YZWEsdN4N0UbeSYx+UTfaE=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/config\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/config/@v\nR:list\nZ:Q1vqNHThmPinSPHdPIQduoAuPdRo4=\nR:v1.17.8.info\nZ:Q1yI6E2wowau+78FJB1ttriTD17UE=\nR:v1.17.8.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.17.8.mod\nZ:Q1EoZt+kFs2kzcmM6dopWbv/RkaV8=\nR:v1.17.8.zip\nZ:Q1UXr/qOMUD/k8Zb47YEJjwqhLtNw=\nR:v1.17.8.ziphash\nZ:Q1aNg/iJzRBVsm0clrPSI0iUdsVLI=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/credentials\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/credentials/@v\nR:list\nZ:Q1jIinCeW/PZAB+oYIsRVdzEDVOBc=\nR:v1.12.21.info\nZ:Q1HZP0z2NLIDAD8dZcDKYaqkImgvE=\nR:v1.12.21.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.12.21.mod\nZ:Q1XELlnXfE/s/ABXCq/BuKeimizxg=\nR:v1.12.21.zip\nZ:Q1mAW5WI92SyfZOeR4++WZOK58+qg=\nR:v1.12.21.ziphash\nZ:Q1ZNg7lGQoY0okLBR700Ujod8KgFc=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/feature\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/feature/ec2\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/feature/ec2/imds\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/@v\nR:list\nZ:Q1xDnGTRlLazIsSTJiAOgY8JotmSo=\nR:v1.12.17.info\nZ:Q1dluC4v1CBKwBq2kWbid2nNQQ244=\nR:v1.12.17.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.12.17.mod\nZ:Q1wgbEnDEANZTP3ZGqaqO+QhPa4/A=\nR:v1.12.17.zip\nZ:Q1dBaLsDnzCp4iURwTftaTJ6vykKg=\nR:v1.12.17.ziphash\nZ:Q10+Dc/in7T4qnleuVTIkmalCS1Tw=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/configsources\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/configsources/@v\nR:list\nZ:Q1soNOyOwUw3Hbx+SFnLew/frmXS8=\nR:v1.1.23.info\nZ:Q1Jn984Yg0/z87spR6yzJpgT3tq0I=\nR:v1.1.23.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.23.mod\nZ:Q1M3QqX4f0tnXRaEJKnBZn8q1JKk8=\nR:v1.1.23.zip\nZ:Q1MRVp5WR7eoD0voklT96JLLMUo/g=\nR:v1.1.23.ziphash\nZ:Q1Ga5TT45PskUi3zUZPiHrnqpOxdU=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/endpoints\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/@v\nR:list\nZ:Q1Cg1i65g0JPb6Fwhi2Rs4Shu6Ye8=\nR:v2.4.17.info\nZ:Q10xe4VhpMzWetQ7NdvppL3CWHqjY=\nR:v2.4.17.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v2.4.17.mod\nZ:Q1xu6C1XAVqt35qJoIP/Z8/jM8p3o=\nR:v2.4.17.zip\nZ:Q1q0xcbDauSEEQdJSRUZglOMfbuTA=\nR:v2.4.17.ziphash\nZ:Q1y8KNXbKoUacXBd7INyXp/3RnW0A=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/ini\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/internal/ini/@v\nR:list\nZ:Q1OcTtb64jo2dg4G0O68RTUcOHBYY=\nR:v1.3.24.info\nZ:Q1KOMgFsflM4hzjb20PRUj17LUwsg=\nR:v1.3.24.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.3.24.mod\nZ:Q1s8NOqdnTeQseSZhriDne5FoBCO0=\nR:v1.3.24.zip\nZ:Q1ZhENJVp9mnsEVD/UjyzxeHUEwlY=\nR:v1.3.24.ziphash\nZ:Q1BvnkA/xb749pSvvYAbD9OEWPrbQ=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ecr\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ecr/@v\nR:list\nZ:Q1oyiY8ehyGmxjF/CwyUcW4w2sJKQ=\nR:v1.17.18.info\nZ:Q1pTK/0oOwfsrqh8y2tuRlUB8yucY=\nR:v1.17.18.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.17.18.mod\nZ:Q1IiglETSZL//yznsOP6BZv7+Totc=\nR:v1.17.18.zip\nZ:Q1fl07fru6mmQByAkN/eHHLa2KArE=\nR:v1.17.18.ziphash\nZ:Q1xsUk3Rh12crLyP1puWIhVMMoTOM=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ecrpublic\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ecrpublic/@v\nR:list\nZ:Q1PjJVV0v9vmv7CzcQCidYvT5ahYA=\nR:v1.13.17.info\nZ:Q1hdhvubyWQ4etaESKe7HCla2xAGU=\nR:v1.13.17.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.13.17.mod\nZ:Q1VKpWpCmRBh0HFA9C8zzZAWYxU2E=\nR:v1.13.17.zip\nZ:Q1hPobb+SqvXYrCWyyfIWaar8/ir8=\nR:v1.13.17.ziphash\nZ:Q1Ph8o3J4/gd+slxrzvFX0bfjVV8w=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/internal\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/@v\nR:list\nZ:Q15kZU/80KseWPKVtfdCLS7CzpDNs=\nR:v1.9.17.info\nZ:Q1ZO9dHHxZKzdlKdFdvb5NMVIA7mA=\nR:v1.9.17.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.9.17.mod\nZ:Q1RHVvhuzaBEFnWT6lFgFHFflaNZo=\nR:v1.9.17.zip\nZ:Q19cYnj5FlKnqstnQdwQCHiMjKd5A=\nR:v1.9.17.ziphash\nZ:Q1TOunlIwC+SlIZbl8IIMXnsCSFEo=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/sso\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/sso/@v\nR:list\nZ:Q1H3YgA8bJ3TSo3pl50H71jGHJAlM=\nR:v1.11.23.info\nZ:Q1X2m/Ux2J8uSsaBD4ci+NjHF+boU=\nR:v1.11.23.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.11.23.mod\nZ:Q1VAf/f2w60ZdFL+tt48VXq8fu98I=\nR:v1.11.23.zip\nZ:Q1GX8wyPWBMNCES0MYxtAhtBsO3U8=\nR:v1.11.23.ziphash\nZ:Q1pIrmm8svwBm5JYTkgUzyGRNLj6M=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ssooidc\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/ssooidc/@v\nR:list\nZ:Q1OjwOr1de5o56fuURzmwnEWeP3JA=\nR:v1.13.6.info\nZ:Q1u3Utk6YCRxNXvz2t6ZObsYQULu8=\nR:v1.13.6.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.13.6.mod\nZ:Q1QWhlt+8ir5Kms4j2IF300vZRzO4=\nR:v1.13.6.zip\nZ:Q1wB7n+E/pRRVsccxnc0/9I/DF5XI=\nR:v1.13.6.ziphash\nZ:Q1A5X2avDx8htDjnCEIpRgBbrdbJg=\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/sts\nF:root/go/pkg/mod/cache/download/github.com/aws/aws-sdk-go-v2/service/sts/@v\nR:list\nZ:Q19R40fqrUNYtSbI4kqqEGPN02Hh8=\nR:v1.16.19.info\nZ:Q1jSs7LnPw7CXwSo2/Zh/X74aDh7w=\nR:v1.16.19.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.16.19.mod\nZ:Q1cZyHf9KGzQbMHBoQbSpNsO9T5d0=\nR:v1.16.19.zip\nZ:Q1vDlp5qTHtyOk+Ko1VPCFuNzilqs=\nR:v1.16.19.ziphash\nZ:Q1K6Ag6okpNvlhRONPQ0DJfqDveMA=\nF:root/go/pkg/mod/cache/download/github.com/aws/smithy-go\nF:root/go/pkg/mod/cache/download/github.com/aws/smithy-go/@v\nR:list\nZ:Q148Zo9gfWrtlzG5Na9QgwStsy35o=\nR:v1.13.3.info\nZ:Q1bElAoIyv96QYHW6vWTntoPbeXIk=\nR:v1.13.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.13.3.mod\nZ:Q1+3Rlzx3hP4l8XYiYdxdcA0K9n48=\nR:v1.13.3.zip\nZ:Q1h0vPyMrIn1L8YPeZBzGVeyJK33w=\nR:v1.13.3.ziphash\nZ:Q1BTWeY53dbLiT35NkJoVNwmt43zU=\nF:root/go/pkg/mod/cache/download/github.com/awslabs\nF:root/go/pkg/mod/cache/download/github.com/awslabs/amazon-ecr-credential-helper\nF:root/go/pkg/mod/cache/download/github.com/awslabs/amazon-ecr-credential-helper/ecr-login\nF:root/go/pkg/mod/cache/download/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/@v\nR:list\nZ:Q1uQM/asnannvGsMSeE7dbama3zvQ=\nR:v0.0.0-20220920003936-cd2dbcbbab49.info\nZ:Q1GLAOBtUyv496mYV0LiWpNXmL6SY=\nR:v0.0.0-20220920003936-cd2dbcbbab49.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20220920003936-cd2dbcbbab49.mod\nZ:Q1TMGQMk8ZyH3oL9XAOLTTkQUkvxM=\nR:v0.0.0-20220920003936-cd2dbcbbab49.zip\nZ:Q1QmMhurz9z2klibF6Njutmcpg2gs=\nR:v0.0.0-20220920003936-cd2dbcbbab49.ziphash\nZ:Q1ThaPKgK84LUhjSLn+wBHkk1/2Fs=\nF:root/go/pkg/mod/cache/download/github.com/chrismellard\nF:root/go/pkg/mod/cache/download/github.com/chrismellard/docker-credential-acr-env\nF:root/go/pkg/mod/cache/download/github.com/chrismellard/docker-credential-acr-env/@v\nR:list\nZ:Q1YKcLUt5at9y1pa9egGE/Eobx5S0=\nR:v0.0.0-20220327082430-c57b701bfc08.info\nZ:Q1EXAvfzkYIN8wzMxhkgPxc0qdfeg=\nR:v0.0.0-20220327082430-c57b701bfc08.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20220327082430-c57b701bfc08.mod\nZ:Q1YXtxV/ta5tOdElQL3R3u1DZ15aw=\nR:v0.0.0-20220327082430-c57b701bfc08.zip\nZ:Q1CktuGQY/1C85GKMEZNfpOdaJkC0=\nR:v0.0.0-20220327082430-c57b701bfc08.ziphash\nZ:Q1PgWBXoD+c5CCtW8Hy89j6pWp6pc=\nF:root/go/pkg/mod/cache/download/github.com/cloudflare\nF:root/go/pkg/mod/cache/download/github.com/cloudflare/circl\nF:root/go/pkg/mod/cache/download/github.com/cloudflare/circl/@v\nR:list\nZ:Q1/r/yfn2xiVy2Unb7yhAxpgtUgFE=\nR:v1.2.0.info\nZ:Q1uWaMvt/II7O5lOb7QxWDCUV3p2A=\nR:v1.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.2.0.mod\nZ:Q1oZ5ZmRwzF0Ulnuf1/MLvNkbehOk=\nR:v1.2.0.zip\nZ:Q1IL4xEdt0J5Ne8buGERNSz4GGNXs=\nR:v1.2.0.ziphash\nZ:Q1mKmz2Iz07VD19CoRPkMDd4lQ0Ko=\nF:root/go/pkg/mod/cache/download/github.com/common-nighthawk\nF:root/go/pkg/mod/cache/download/github.com/common-nighthawk/go-figure\nF:root/go/pkg/mod/cache/download/github.com/common-nighthawk/go-figure/@v\nR:list\nZ:Q14Q4D/vqJzSZBeUMAjPYH9nXDMBM=\nR:v0.0.0-20210622060536-734e95fb86be.info\nZ:Q1W4ekmr6VlSWlL6VU1qIfzQ4aV4k=\nR:v0.0.0-20210622060536-734e95fb86be.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20210622060536-734e95fb86be.mod\nZ:Q1kQdRsT7EY6oIhDHecjx7JnBsNRc=\nR:v0.0.0-20210622060536-734e95fb86be.zip\nZ:Q1oz+sMS7RGZjiMhlJlyCJWoiEg+0=\nR:v0.0.0-20210622060536-734e95fb86be.ziphash\nZ:Q1m+fbWnhKw4+bghoUOqboHkq6cAI=\nF:root/go/pkg/mod/cache/download/github.com/containerd\nF:root/go/pkg/mod/cache/download/github.com/containerd/stargz-snapshotter\nF:root/go/pkg/mod/cache/download/github.com/containerd/stargz-snapshotter/estargz\nF:root/go/pkg/mod/cache/download/github.com/containerd/stargz-snapshotter/estargz/@v\nR:list\nZ:Q1kTsOIjhTahZuqHt8rhhWKJmlO8I=\nR:v0.12.1.info\nZ:Q1NODl60jvs5HN22Jf8/1PYiVG7uw=\nR:v0.12.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.12.1.mod\nZ:Q1wW354w/An4RGaRV5IgdmTZsEBvM=\nR:v0.12.1.zip\nZ:Q1QwXr+KVYeT4cVr9BjZcbbiWt26Y=\nR:v0.12.1.ziphash\nZ:Q1FXsiXg/Bu6KsMC1f4uR2H8c34V4=\nF:root/go/pkg/mod/cache/download/github.com/dimchansky\nF:root/go/pkg/mod/cache/download/github.com/dimchansky/utfbom\nF:root/go/pkg/mod/cache/download/github.com/dimchansky/utfbom/@v\nR:list\nZ:Q1cPNQhJAztpBlKT/69oGSHJD4vsQ=\nR:v1.1.1.info\nZ:Q1eyMM9jbC0jwx9W6aO18KzNo2IZU=\nR:v1.1.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.1.mod\nZ:Q14JzGs8MiYRoL6hAfZgjL61OLS+k=\nR:v1.1.1.zip\nZ:Q10hiAkVgwoyfB4jVcAusLqWqLwVk=\nR:v1.1.1.ziphash\nZ:Q1uiVVwIi0m9exCsonX7qcOrVvghg=\nF:root/go/pkg/mod/cache/download/github.com/docker\nF:root/go/pkg/mod/cache/download/github.com/docker/cli\nF:root/go/pkg/mod/cache/download/github.com/docker/cli/@v\nR:list\nZ:Q1UZO6bULEyoDjDbrMWhg4a4BNj5E=\nR:v20.10.20+incompatible.info\nZ:Q1NV/BfYMi5zQtetUcHZBcSHcs95g=\nR:v20.10.20+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v20.10.20+incompatible.mod\nZ:Q1nT1EA3mVZQ3NMHC/L6mk7TBef20=\nR:v20.10.20+incompatible.zip\nZ:Q1IvbzoRcXPDZadVb2GDAEbDDe3iQ=\nR:v20.10.20+incompatible.ziphash\nZ:Q1flv8Wx6Rrc+7FJXu8Kjv8ks4vHQ=\nF:root/go/pkg/mod/cache/download/github.com/docker/distribution\nF:root/go/pkg/mod/cache/download/github.com/docker/distribution/@v\nR:list\nZ:Q1t5XJPzEgsKKIu598vZyFTeey/0s=\nR:v2.8.1+incompatible.info\nZ:Q1oVzYhVflabPDFf0Yplwj+wu6Sxk=\nR:v2.8.1+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v2.8.1+incompatible.mod\nZ:Q1Jl5qT+YEK0HEIFK1L2Y2h6EOofY=\nR:v2.8.1+incompatible.zip\nZ:Q1Br6IcKncSbKbJEf3FMCZrpdH3rE=\nR:v2.8.1+incompatible.ziphash\nZ:Q1eRjy5L9ulOXQx1Y2YDH7qfHfk/I=\nF:root/go/pkg/mod/cache/download/github.com/docker/docker\nF:root/go/pkg/mod/cache/download/github.com/docker/docker/@v\nR:list\nZ:Q1UZO6bULEyoDjDbrMWhg4a4BNj5E=\nR:v20.10.20+incompatible.info\nZ:Q12wX7t4qjDY/eicqL0T2PwU1lLcA=\nR:v20.10.20+incompatible.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v20.10.20+incompatible.mod\nZ:Q1jV5jIFzJzohteLhyx0bdqGDf5kE=\nR:v20.10.20+incompatible.zip\nZ:Q19qLmR6nL5r5RMtUWwgDb7qxR9Ek=\nR:v20.10.20+incompatible.ziphash\nZ:Q1tcb/rJlD7y37QYWtrKgYfTSDIpI=\nF:root/go/pkg/mod/cache/download/github.com/docker/docker-credential-helpers\nF:root/go/pkg/mod/cache/download/github.com/docker/docker-credential-helpers/@v\nR:list\nZ:Q1Vjni+YZqldBOYmwLq/9yfASgaU4=\nR:v0.7.0.info\nZ:Q1OLKYaDBGelpqU/Y20PzzD9cVOMk=\nR:v0.7.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.7.0.mod\nZ:Q1zJH3QfSiljoukvohCyqzTI+7mJA=\nR:v0.7.0.zip\nZ:Q1NQgGAG9Fopzuz5FCZ0VyGVum9Ik=\nR:v0.7.0.ziphash\nZ:Q1Mb9ve1EvIngzgEUoJO/cpIsaxho=\nF:root/go/pkg/mod/cache/download/github.com/dominodatalab\nF:root/go/pkg/mod/cache/download/github.com/dominodatalab/os-release\nF:root/go/pkg/mod/cache/download/github.com/dominodatalab/os-release/@v\nR:list\nZ:Q1qc6rSYPodaDnva4vp8e7X8hyk3A=\nR:v0.0.0-20190522011736-bcdb4a3e3c2f.info\nZ:Q1z5L/4z0lAqLgPhi5RobzdqnDok4=\nR:v0.0.0-20190522011736-bcdb4a3e3c2f.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20190522011736-bcdb4a3e3c2f.mod\nZ:Q1eKQtuTCQd8XTP9LIwDp9q2Ty6Ng=\nR:v0.0.0-20190522011736-bcdb4a3e3c2f.zip\nZ:Q1ZSPVX2V8Dlj2fLCE8n2pKD7xXik=\nR:v0.0.0-20190522011736-bcdb4a3e3c2f.ziphash\nZ:Q1QT2KD8ex2MRnPUJepgJvKD5+/t8=\nF:root/go/pkg/mod/cache/download/github.com/emirpasic\nF:root/go/pkg/mod/cache/download/github.com/emirpasic/gods\nF:root/go/pkg/mod/cache/download/github.com/emirpasic/gods/@v\nR:list\nZ:Q17hj6l1iPHgbG8Pko7z9W2qbeixs=\nR:v1.18.1.info\nZ:Q1Mrhi1onKDTMTxCY2ivhzWgEzhCI=\nR:v1.18.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.18.1.mod\nZ:Q1T/jbHaNcEk6MIKwD+lEyN5kKrHI=\nR:v1.18.1.zip\nZ:Q1O1YS/BO6sMPUp+HtefdK6RY3apA=\nR:v1.18.1.ziphash\nZ:Q1gV8Xnr9tHuHk6gxjpnQA5h+HhjE=\nF:root/go/pkg/mod/cache/download/github.com/go-git\nF:root/go/pkg/mod/cache/download/github.com/go-git/gcfg\nF:root/go/pkg/mod/cache/download/github.com/go-git/gcfg/@v\nR:list\nZ:Q1sg30HMYuwP0yQWYQLTlExNnr0iM=\nR:v1.5.0.info\nZ:Q1OEhddkCf3sTB78t+Tg5hxKpfA4w=\nR:v1.5.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.5.0.mod\nZ:Q1Vc+JTw71NmAKpflMx5hMEEkS2lk=\nR:v1.5.0.zip\nZ:Q1Hj+PLVonqcpO1DR76MOEIoLVO0U=\nR:v1.5.0.ziphash\nZ:Q1YKCkhAljTp3LI2ykIXHTGTxokvY=\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-billy\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-billy/v5\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-billy/v5/@v\nR:list\nZ:Q1+HEiAOyqXHp4VWTiyWohpK7JEO0=\nR:v5.3.1.info\nZ:Q1Ol4DaWY9/2Qaa1fzB2K0G9U95F8=\nR:v5.3.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v5.3.1.mod\nZ:Q1ayOSWniWMaL73iRVD1WySedLuwg=\nR:v5.3.1.zip\nZ:Q1q8cu/XhS2lwDXd63/9Nzpkh8Djo=\nR:v5.3.1.ziphash\nZ:Q1UKc6gxivZxkhmlAXnHvxAoJXmc8=\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-git\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-git/v5\nF:root/go/pkg/mod/cache/download/github.com/go-git/go-git/v5/@v\nR:list\nZ:Q1xLfyYxgIsWfIXtzW7gaZa1IaF18=\nR:v5.4.2.info\nZ:Q1REAZBFd7Tla6cBHw6Yjj96xLafs=\nR:v5.4.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v5.4.2.mod\nZ:Q1UWP6WytmOrVyTFKdihTEzxkarLw=\nR:v5.4.2.zip\nZ:Q1DKsXhWQkRLr9MMDHQIO0kHSeH4Y=\nR:v5.4.2.ziphash\nZ:Q1cLKJdwcfnLDTUQAa7CsM8ml7Tag=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/analysis\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/analysis/@v\nR:list\nZ:Q1JSTWvz71YXakaOswf0+/JbNb0RY=\nR:v0.21.4.info\nZ:Q1iUWyUUQwe2j+md0szT79wIZ9xTE=\nR:v0.21.4.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.21.4.mod\nZ:Q1mKp6vlD0hH2qnnbdAOLlHsAIGwg=\nR:v0.21.4.zip\nZ:Q1sDwIJxkO5J8OlQJVk9BaxOzK1bU=\nR:v0.21.4.ziphash\nZ:Q1JIKOVycT05hQNDH+pZDiSVHneM0=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/errors\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/errors/@v\nR:list\nZ:Q1/YYvX23MjiLQZJqH137aH1Be8uU=\nR:v0.20.3.info\nZ:Q1qy+6v7wzBcGA1XlxEF/mVmvjqZU=\nR:v0.20.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.20.3.mod\nZ:Q1DTCHJ/rnTlSUhuM7TiMar+Ik7V4=\nR:v0.20.3.zip\nZ:Q1mGQCFbo5eVaKLermXfAv2f0Rbbg=\nR:v0.20.3.ziphash\nZ:Q1NGf+UkL89kLcMmWfWVXu4/nNwhc=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/jsonpointer\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/jsonpointer/@v\nR:list\nZ:Q1jks8AHwPvaIrozvW3n19/oY7URo=\nR:v0.19.5.info\nZ:Q1RoCmWyuGauKVtncAGOk+80+9XdI=\nR:v0.19.5.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.19.5.mod\nZ:Q1FCeUoQlbEe+tU/912jpqXNK/CBY=\nR:v0.19.5.zip\nZ:Q18iEPR1Wg2keWbypTdhpjcKkjGjU=\nR:v0.19.5.ziphash\nZ:Q1Lfugc6Ooei7FQymYWxY3DI2rsco=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/jsonreference\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/jsonreference/@v\nR:list\nZ:Q1qZ0jtIHuBA2fE1q1rppWuoYp880=\nR:v0.20.0.info\nZ:Q1BJIUtskmLsCr2ktTgWGWwOt/0Oc=\nR:v0.20.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.20.0.mod\nZ:Q1TLbFKrfPowrYmrsHJp1ahumLk3c=\nR:v0.20.0.zip\nZ:Q1yY3yqJ8OdPbA1VS8w8YAcN7SxFA=\nR:v0.20.0.ziphash\nZ:Q1SB7j3utEFJPZUxjrDjvzEJ01hf4=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/loads\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/loads/@v\nR:list\nZ:Q1SWUiDrHu6cYU1cCnHiJwyKkhZH0=\nR:v0.21.2.info\nZ:Q1jwwo6K2NEnFZWmqG3cP0YLqXo5c=\nR:v0.21.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.21.2.mod\nZ:Q1nXbhbi2+kC5kmbxQKXgLyM2v4hQ=\nR:v0.21.2.zip\nZ:Q1oibTLCMY46hLrgemTqxrNfUMq9c=\nR:v0.21.2.ziphash\nZ:Q1XM5F3MhMuQvS+GzKciE4Si5TzZ4=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/runtime\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/runtime/@v\nR:list\nZ:Q1KY478cKCeEOZVp8+mThOQpDstR8=\nR:v0.24.2.info\nZ:Q1GQE+jXOh/NqHSb4h7PD0MT22YxM=\nR:v0.24.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.24.2.mod\nZ:Q1D7eOZclAgFbavZ3g3ga2tMk6uSc=\nR:v0.24.2.zip\nZ:Q1/c6vfkVsPuhXA/2W+qqNyLMzDyo=\nR:v0.24.2.ziphash\nZ:Q13YLtIMNoM6doWnnTCBZweq3vtmM=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/spec\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/spec/@v\nR:list\nZ:Q1cylapbpYgf2Zvxj3dEw5GqemmIU=\nR:v0.20.7.info\nZ:Q16SqRxxjYwkS9fbv0qcC6Q0g1UwI=\nR:v0.20.7.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.20.7.mod\nZ:Q1jhHw5dIdsDhNzxsoZj+nJS+PQDs=\nR:v0.20.7.zip\nZ:Q169XZNp0R9cvhuo+xhlS/IGxOWA8=\nR:v0.20.7.ziphash\nZ:Q1LXyoQzMo9NPpMaSbrTlyuSa8zlA=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/strfmt\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/strfmt/@v\nR:list\nZ:Q1qkv8s6Zi+JUmjb/2Rt1LP0As+1I=\nR:v0.21.3.info\nZ:Q18NNTAv3WVKlJ1lui4Lo8O2Lym2E=\nR:v0.21.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.21.3.mod\nZ:Q1E32atQ6IQDni7Lj3UL9P2BCsFZE=\nR:v0.21.3.zip\nZ:Q1acbtZd5STjUsJkmPQlmOUkjRu+o=\nR:v0.21.3.ziphash\nZ:Q125w6pw65EGwcm2gUOKyTOX4S4zI=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/swag\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/swag/@v\nR:list\nZ:Q1Bsp4WL+WMgTMf52bEMls9zl4e+Y=\nR:v0.22.3.info\nZ:Q1tQMe0Sk8espKA9KirOPifLO7bKg=\nR:v0.22.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.22.3.mod\nZ:Q1qsDPun1RhWYqikzYjAYJ6VANXd0=\nR:v0.22.3.zip\nZ:Q1B0O7G1mkEWZUYI/D8G3+zESrtl0=\nR:v0.22.3.ziphash\nZ:Q1f9P3jhlFRBTnGBp4Ld0tB8e9zJo=\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/validate\nF:root/go/pkg/mod/cache/download/github.com/go-openapi/validate/@v\nR:list\nZ:Q1IZwG72q78MhF5QoCzS2rLIgq6do=\nR:v0.22.0.info\nZ:Q1jSyYW9ozTQiW/rM0AYaz+LfsRDA=\nR:v0.22.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.22.0.mod\nZ:Q1WRdkguyek0K1LVWheJUAKYui5ro=\nR:v0.22.0.zip\nZ:Q1kaxf4vYiHyxUZEjQwpSCE3gCHrA=\nR:v0.22.0.ziphash\nZ:Q1KVGh30C34hHG7ZmD/j+DRCCM+Oo=\nF:root/go/pkg/mod/cache/download/github.com/golang\nF:root/go/pkg/mod/cache/download/github.com/golang/protobuf\nF:root/go/pkg/mod/cache/download/github.com/golang/protobuf/@v\nR:list\nZ:Q1DRhqs/IsiiK+Gp+Wp5MubUfTwaA=\nR:v1.5.2.info\nZ:Q17cOJ4pEB0eDYKywkCFmuTUY5hmA=\nR:v1.5.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.5.2.mod\nZ:Q1eQmZ2njEgoKA7bJweWg0SSHZYf0=\nR:v1.5.2.zip\nZ:Q1QUFvO3coq3AghlZ4hVZPyDZp8nU=\nR:v1.5.2.ziphash\nZ:Q1nVdQ2kLrHbi22oyZXXBTeeYRDPI=\nF:root/go/pkg/mod/cache/download/github.com/golang-jwt\nF:root/go/pkg/mod/cache/download/github.com/golang-jwt/jwt\nF:root/go/pkg/mod/cache/download/github.com/golang-jwt/jwt/v4\nF:root/go/pkg/mod/cache/download/github.com/golang-jwt/jwt/v4/@v\nR:list\nZ:Q1XDeodZtQRbxr2prOyemo+xftZkg=\nR:v4.4.2.info\nZ:Q1Zf46iBDS9hgYvZRUVlUi9C1WVgs=\nR:v4.4.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v4.4.2.mod\nZ:Q11Bx2i5oCZ0ybn4yqtKQ8Z7ciSss=\nR:v4.4.2.zip\nZ:Q1ZNctnPW2V3pDKM0AJXwXdy7qvpk=\nR:v4.4.2.ziphash\nZ:Q1LhJbhVCIf3uxdjX/AcQ2mTOb0OE=\nF:root/go/pkg/mod/cache/download/github.com/google\nF:root/go/pkg/mod/cache/download/github.com/google/go-cmp\nF:root/go/pkg/mod/cache/download/github.com/google/go-cmp/@v\nR:list\nZ:Q1sTDq0efBrz6gulNSDJr862QpstI=\nR:v0.5.9.info\nZ:Q1co2A5Bd8zhCL8XxIxXEV1TtZq2w=\nR:v0.5.9.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.5.9.mod\nZ:Q1RYgISnWu0U5gd/chShvyZmNQutg=\nR:v0.5.9.zip\nZ:Q181B14KUVmkwjTJzDujMLQvci4Oc=\nR:v0.5.9.ziphash\nZ:Q1WHNLuK9xzvuMIxUG9d+Z4JaVSRk=\nF:root/go/pkg/mod/cache/download/github.com/google/go-containerregistry\nF:root/go/pkg/mod/cache/download/github.com/google/go-containerregistry/@v\nR:list\nZ:Q1G1p3MoqM91ZZOooDuiJSsoHpRfY=\nR:v0.12.0.info\nZ:Q18cZo3WeaoG5W0eD18PBv8DXZChg=\nR:v0.12.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.12.0.mod\nZ:Q1j8HZECW6sEoIBMMpmD9pNE8kUXg=\nR:v0.12.0.zip\nZ:Q1i5ElytwrzhVR3BQl8FW64AIeX2w=\nR:v0.12.0.ziphash\nZ:Q1AUD8vDmcVW+zY0982XRute4uVL0=\nF:root/go/pkg/mod/cache/download/github.com/google/shlex\nF:root/go/pkg/mod/cache/download/github.com/google/shlex/@v\nR:list\nZ:Q1lJjcL8/Ay0U5iNTe+tYi744zpUs=\nR:v0.0.0-20191202100458-e7afc7fbc510.info\nZ:Q1jU1TSlXGn9B5D7HVxmJl6Lh9Vtc=\nR:v0.0.0-20191202100458-e7afc7fbc510.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20191202100458-e7afc7fbc510.mod\nZ:Q1N9I3zzJu7wW438RImXX7WNF4N8Q=\nR:v0.0.0-20191202100458-e7afc7fbc510.zip\nZ:Q1LIDo/QlJCdyvCWmiSnq/8mmN1U4=\nR:v0.0.0-20191202100458-e7afc7fbc510.ziphash\nZ:Q1SbUgVtLgzBbm4Hvf7SHOotb8iP8=\nF:root/go/pkg/mod/cache/download/github.com/google/uuid\nF:root/go/pkg/mod/cache/download/github.com/google/uuid/@v\nR:list\nZ:Q1P5CGdu4vlZDFGBg8GQbzq9uD/tc=\nR:v1.3.0.info\nZ:Q1effk5Q+Tp2cug894JG636HW+drg=\nR:v1.3.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.3.0.mod\nZ:Q1qs3+U+GEZk0Yc+/ivlu+efL09gI=\nR:v1.3.0.zip\nZ:Q1v0cil9PzUwpJOdtzS3u1p5iEOh0=\nR:v1.3.0.ziphash\nZ:Q14kJXCFCJD8X6QZlB4/3U7hRzfGg=\nF:root/go/pkg/mod/cache/download/github.com/hashicorp\nF:root/go/pkg/mod/cache/download/github.com/hashicorp/errwrap\nF:root/go/pkg/mod/cache/download/github.com/hashicorp/errwrap/@v\nR:list\nZ:Q1fdMUUoZaz8lzDSJKI0MaUbY3Tg8=\nR:v1.1.0.info\nZ:Q14EkWK3JcDd1e7l80XzAWNGnUueU=\nR:v1.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.0.mod\nZ:Q1DS2ze3xKPR+pxiSE6FUgy+w8OVg=\nR:v1.1.0.zip\nZ:Q1Wpohb3dcKRRuCLOOBOeZECcrAaI=\nR:v1.1.0.ziphash\nZ:Q1bZKEp+xImnH3l/EofoOcTY+sB4A=\nF:root/go/pkg/mod/cache/download/github.com/hashicorp/go-multierror\nF:root/go/pkg/mod/cache/download/github.com/hashicorp/go-multierror/@v\nR:list\nZ:Q1cPNQhJAztpBlKT/69oGSHJD4vsQ=\nR:v1.1.1.info\nZ:Q1ShRUH8X19A3j16E1iVjbF8tyIC4=\nR:v1.1.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.1.mod\nZ:Q1mdQsMF0SH6lrhdlq/aT5wO/17+c=\nR:v1.1.1.zip\nZ:Q11vazG85PTho39/GZwTuHvTa6Yyk=\nR:v1.1.1.ziphash\nZ:Q1Otk4gV5fyEoduOQegMSMHQTqJ10=\nF:root/go/pkg/mod/cache/download/github.com/huandu\nF:root/go/pkg/mod/cache/download/github.com/huandu/xstrings\nF:root/go/pkg/mod/cache/download/github.com/huandu/xstrings/@v\nR:list\nZ:Q1hsgPaYl5F5h1UhE5Xnq4XLkaXE4=\nR:v1.3.1.info\nZ:Q1QUKRz76x0SKvCdp9UXgk1G6fkvE=\nR:v1.3.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.3.1.mod\nZ:Q1LurDZNf3U8L2d4vB+2V+ozr1H20=\nR:v1.3.1.zip\nZ:Q1GX1P3AnmvqCCCy3irl0FA/ns4gA=\nR:v1.3.1.ziphash\nZ:Q1ZVtH/z+d+j6ay77P4n/74SPY3b8=\nF:root/go/pkg/mod/cache/download/github.com/imdario\nF:root/go/pkg/mod/cache/download/github.com/imdario/mergo\nF:root/go/pkg/mod/cache/download/github.com/imdario/mergo/@v\nR:list\nZ:Q1HZnqCPzc5lTqPkHU2as/rCf20DY=\nR:v0.3.13.info\nZ:Q1vbtgMKm2MV4oa20Qdyl8TUwFyJQ=\nR:v0.3.13.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.13.mod\nZ:Q10NIScUEcTor/eSPOq6JaN6nMKGQ=\nR:v0.3.13.zip\nZ:Q1ytWNJIKBAFl0YKtzmQa3MsIVnqU=\nR:v0.3.13.ziphash\nZ:Q1gnNOduyhsU7BIKLo0o3oaGIqPb8=\nF:root/go/pkg/mod/cache/download/github.com/jbenet\nF:root/go/pkg/mod/cache/download/github.com/jbenet/go-context\nF:root/go/pkg/mod/cache/download/github.com/jbenet/go-context/@v\nR:list\nZ:Q1FU3O+SzidtCLarzbpIA0ZDePhxw=\nR:v0.0.0-20150711004518-d14ea06fba99.info\nZ:Q1F7PtHIQUjfIu4/96B8SAFHpTx4g=\nR:v0.0.0-20150711004518-d14ea06fba99.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20150711004518-d14ea06fba99.mod\nZ:Q1D3QlNtWqd4A5KdzLs9KBWCYBZ5s=\nR:v0.0.0-20150711004518-d14ea06fba99.zip\nZ:Q1J4gPkBqYRBMT2wZgtqI0jjda8aw=\nR:v0.0.0-20150711004518-d14ea06fba99.ziphash\nZ:Q1t0XBgxlTGY2WiDPqLORArKxpcfM=\nF:root/go/pkg/mod/cache/download/github.com/jinzhu\nF:root/go/pkg/mod/cache/download/github.com/jinzhu/copier\nF:root/go/pkg/mod/cache/download/github.com/jinzhu/copier/@v\nR:list\nZ:Q1g9ffO2D8iVIHDdgytutz82Y6hFA=\nR:v0.3.5.info\nZ:Q1YO/RL6Xd4vtFNcqpCCTHImL8oNQ=\nR:v0.3.5.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.5.mod\nZ:Q1XZavAYL0am+nu5lc9tCYYYFqhV0=\nR:v0.3.5.zip\nZ:Q1Au8R2T+ODuwn86OXynB+zTOeFio=\nR:v0.3.5.ziphash\nZ:Q1h0M+kzJ7r1C5MiYzeexKvF3hTow=\nF:root/go/pkg/mod/cache/download/github.com/jmespath\nF:root/go/pkg/mod/cache/download/github.com/jmespath/go-jmespath\nF:root/go/pkg/mod/cache/download/github.com/jmespath/go-jmespath/@v\nR:list\nZ:Q1bLUhYIzcnrQP5JSL0KZHfc9Px9k=\nR:v0.4.0.info\nZ:Q1VxcQj/2bkwm1uFBvSxS7u72keG8=\nR:v0.4.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.4.0.mod\nZ:Q1BKsY5Xk4ZmpuwcWyj7+wcTHWiiw=\nR:v0.4.0.zip\nZ:Q1oW6l5Tln5RZgqa4zGP9BGxQlYl4=\nR:v0.4.0.ziphash\nZ:Q1LUUSOrGE/Ju7/7Aog87kZdYFEOA=\nF:root/go/pkg/mod/cache/download/github.com/josharian\nF:root/go/pkg/mod/cache/download/github.com/josharian/intern\nF:root/go/pkg/mod/cache/download/github.com/josharian/intern/@v\nR:list\nZ:Q16EnhDULC4hOAS1FTqd6Eq6RY/Ms=\nR:v1.0.0.info\nZ:Q1FjWWe3VJKKWnIYkyBPqgMCbrCJQ=\nR:v1.0.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.0.0.mod\nZ:Q1GDuJinTYtW2HhhiH7O7Eu+hvsC0=\nR:v1.0.0.zip\nZ:Q1qdAYWmCxEw9cTu/uZcFXjY7LTmY=\nR:v1.0.0.ziphash\nZ:Q1kgxwjQ1noQ0sQ3x4xKF4WclveDY=\nF:root/go/pkg/mod/cache/download/github.com/kevinburke\nF:root/go/pkg/mod/cache/download/github.com/kevinburke/ssh_config\nF:root/go/pkg/mod/cache/download/github.com/kevinburke/ssh_config/@v\nR:list\nZ:Q1/r/yfn2xiVy2Unb7yhAxpgtUgFE=\nR:v1.2.0.info\nZ:Q12SwioPSKjKvkU9PFte/UBLGuYX4=\nR:v1.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.2.0.mod\nZ:Q1PlglJ4DoZZMYpYbetPQZjRY6SEY=\nR:v1.2.0.zip\nZ:Q1CRk29EIIhQvIUAzK0ZZLpEJhCL4=\nR:v1.2.0.ziphash\nZ:Q1QtY0vK0o9se+URHIniCxUR9cDhM=\nF:root/go/pkg/mod/cache/download/github.com/klauspost\nF:root/go/pkg/mod/cache/download/github.com/klauspost/compress\nF:root/go/pkg/mod/cache/download/github.com/klauspost/compress/@v\nR:list\nZ:Q1nbxLjUdob0hsRehdW66ye5YagL0=\nR:v1.15.11.info\nZ:Q1hF/5qWViBL5MDdGRlXmgsIptuDs=\nR:v1.15.11.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.15.11.mod\nZ:Q1pvHqd9UDRBMim7aTgw4nfVHJ5LI=\nR:v1.15.11.zip\nZ:Q1pQPkgLsfXDHai9S11I76VLrz9rQ=\nR:v1.15.11.ziphash\nZ:Q1cyFsfSFKvLcHRCjgsig7XvtwOc8=\nF:root/go/pkg/mod/cache/download/github.com/letsencrypt\nF:root/go/pkg/mod/cache/download/github.com/letsencrypt/boulder\nF:root/go/pkg/mod/cache/download/github.com/letsencrypt/boulder/@v\nR:list\nZ:Q1g1HtJg87BHsFZTry+uKuLu6AHLI=\nR:v0.0.0-20220929215747-76583552c2be.info\nZ:Q1+rqBYf3235rhnujkXWkLJN7NlWA=\nR:v0.0.0-20220929215747-76583552c2be.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20220929215747-76583552c2be.mod\nZ:Q1ymB1pwLgXjqLd2nxxuDNd1Xvzns=\nR:v0.0.0-20220929215747-76583552c2be.zip\nZ:Q1O+GVV403fWhdR2clTmi0wuqdYQ4=\nR:v0.0.0-20220929215747-76583552c2be.ziphash\nZ:Q1lLbwUmcOwOOX/A+YqtpGsrJ/rmM=\nF:root/go/pkg/mod/cache/download/github.com/mailru\nF:root/go/pkg/mod/cache/download/github.com/mailru/easyjson\nF:root/go/pkg/mod/cache/download/github.com/mailru/easyjson/@v\nR:list\nZ:Q1s97iXKHEV5KAwgS/HzlUH+9/29k=\nR:v0.7.7.info\nZ:Q1reMtgwbyJJOiyP9ZVs3mJaeyyog=\nR:v0.7.7.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.7.7.mod\nZ:Q1WEgoUMG3YYDGBAQpJretDF3CMV4=\nR:v0.7.7.zip\nZ:Q10GXOauSky4ZLdOyOCNbUqbMPC+E=\nR:v0.7.7.ziphash\nZ:Q1zgx1rr+fQmirjQ6DmjHnssTI3RY=\nF:root/go/pkg/mod/cache/download/github.com/mitchellh\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/copystructure\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/copystructure/@v\nR:list\nZ:Q1/r/yfn2xiVy2Unb7yhAxpgtUgFE=\nR:v1.2.0.info\nZ:Q1m1MUYwlCu4pGYin+2ohhbxgpgQw=\nR:v1.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.2.0.mod\nZ:Q13WrCoeMOVSRKTS7X2frgalNjIV0=\nR:v1.2.0.zip\nZ:Q1OqNYr1jBwMdJROn8ParaHIfDy0Q=\nR:v1.2.0.ziphash\nZ:Q1Kq5NpVIVUh8qePrbmj1IF928m2U=\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/go-homedir\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/go-homedir/@v\nR:list\nZ:Q1fdMUUoZaz8lzDSJKI0MaUbY3Tg8=\nR:v1.1.0.info\nZ:Q15c1WR5TCEvy/uKLJdEUaO7vEphk=\nR:v1.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.0.mod\nZ:Q12mfbMTz+6PFWuauH5hLWiVhcMHs=\nR:v1.1.0.zip\nZ:Q10+d8RunU/LdjwcmVHwZb3skmTA0=\nR:v1.1.0.ziphash\nZ:Q1IV+vozY4sdpzruqL7AjdZUAsbJU=\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/mapstructure\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/mapstructure/@v\nR:list\nZ:Q1sg30HMYuwP0yQWYQLTlExNnr0iM=\nR:v1.5.0.info\nZ:Q1bHfEsxOsTPX92Uv4unIiLerrHnM=\nR:v1.5.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.5.0.mod\nZ:Q1BhvdcO27GqoeOFUyY1XTbZbT8/8=\nR:v1.5.0.zip\nZ:Q1h0AcM+ihfOJplbG3hb1bLvtBB2U=\nR:v1.5.0.ziphash\nZ:Q1xfnHAmIgJGI9tkk9QSGlSDUM71E=\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/reflectwalk\nF:root/go/pkg/mod/cache/download/github.com/mitchellh/reflectwalk/@v\nR:list\nZ:Q1fZCcQ4X8Q5ZkXYmKfrK74v77dxY=\nR:v1.0.2.info\nZ:Q1kDJFNAn7/HxMehheKmuPjLz2l9M=\nR:v1.0.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.0.2.mod\nZ:Q1PDzOxkzuNg7/Yi/Fl8fwtSyFgNU=\nR:v1.0.2.zip\nZ:Q19mTsN2arh4VGyppYsLuB+VI9bME=\nR:v1.0.2.ziphash\nZ:Q1DvKQc4i+apiCl5ImJjW4ynS9S8I=\nF:root/go/pkg/mod/cache/download/github.com/oklog\nF:root/go/pkg/mod/cache/download/github.com/oklog/ulid\nF:root/go/pkg/mod/cache/download/github.com/oklog/ulid/@v\nR:list\nZ:Q1hsgPaYl5F5h1UhE5Xnq4XLkaXE4=\nR:v1.3.1.info\nZ:Q1RS7sDbpnq5A/VvzAItbieaBudK0=\nR:v1.3.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.3.1.mod\nZ:Q1RUX12wm35gVGMHLASWCB7jD3O5w=\nR:v1.3.1.zip\nZ:Q1Ri770VPfeywySgM2cn6MiBJAXhQ=\nR:v1.3.1.ziphash\nZ:Q1y2vjBKUNt7g/ahzRwUjlnGePtwE=\nF:root/go/pkg/mod/cache/download/github.com/opencontainers\nF:root/go/pkg/mod/cache/download/github.com/opencontainers/go-digest\nF:root/go/pkg/mod/cache/download/github.com/opencontainers/go-digest/@v\nR:list\nZ:Q16EnhDULC4hOAS1FTqd6Eq6RY/Ms=\nR:v1.0.0.info\nZ:Q1zbu64Nv+Wi4ls+juFLIbdyziuqU=\nR:v1.0.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.0.0.mod\nZ:Q1eBBMTpf3Yl+msgHvoclKhxCmqig=\nR:v1.0.0.zip\nZ:Q1y63nX8LGTkjtuHpad9T/gbUxTwY=\nR:v1.0.0.ziphash\nZ:Q1Ro6W7Ct7v8vpnmStKYOPGskdSP8=\nF:root/go/pkg/mod/cache/download/github.com/opencontainers/image-spec\nF:root/go/pkg/mod/cache/download/github.com/opencontainers/image-spec/@v\nR:list\nZ:Q1ZA2GMnOGiTLaPKaG6rW6OAQ3VZ4=\nR:v1.1.0-rc2.info\nZ:Q14aarj/yLl1oZtSq8WBkgW3l5Kjs=\nR:v1.1.0-rc2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.1.0-rc2.mod\nZ:Q1H9KGK5LGaAM3k8eQ9B6ssOqL6wU=\nR:v1.1.0-rc2.zip\nZ:Q1F+cALEHqLhMgi0C2QEX4oqjkjGU=\nR:v1.1.0-rc2.ziphash\nZ:Q1IpKqPpf8xOsAdEe9Ny0mQOHy+LE=\nF:root/go/pkg/mod/cache/download/github.com/package-url\nF:root/go/pkg/mod/cache/download/github.com/package-url/packageurl-go\nF:root/go/pkg/mod/cache/download/github.com/package-url/packageurl-go/@v\nR:list\nZ:Q1U1pR2kNt92b0470xEJL2YIEZrzo=\nR:v0.1.1-0.20220203205134-d70459300c8a.info\nZ:Q1W8SNz/jSWNT+WsaTI8taKz5+H2o=\nR:v0.1.1-0.20220203205134-d70459300c8a.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.1-0.20220203205134-d70459300c8a.mod\nZ:Q1FRZkmqV++FE34M/F6lTfLVIjniY=\nR:v0.1.1-0.20220203205134-d70459300c8a.zip\nZ:Q1tLRy1PCNhYbFr0TlpMFLMRpJ8GU=\nR:v0.1.1-0.20220203205134-d70459300c8a.ziphash\nZ:Q17n4VoVRAXEbgUrlXbt2o7bAe/sM=\nF:root/go/pkg/mod/cache/download/github.com/pkg\nF:root/go/pkg/mod/cache/download/github.com/pkg/errors\nF:root/go/pkg/mod/cache/download/github.com/pkg/errors/@v\nR:list\nZ:Q1gM2B7syoQVd3JM7v1GwR0n4ISc4=\nR:v0.9.1.info\nZ:Q1jaTlXeU/mWzp9omaEYVM2HYg9XU=\nR:v0.9.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.9.1.mod\nZ:Q12kKm+aAVTJJFTFIQ1Yr+UMUkWPQ=\nR:v0.9.1.zip\nZ:Q1asN88eq2P0ZKjsLSC8ciQnFSjX0=\nR:v0.9.1.ziphash\nZ:Q1zwgLzJ1+N4JXeO0aIUH9zlydcFY=\nF:root/go/pkg/mod/cache/download/github.com/psanford\nF:root/go/pkg/mod/cache/download/github.com/psanford/memfs\nF:root/go/pkg/mod/cache/download/github.com/psanford/memfs/@v\nR:list\nZ:Q1x8aP6z8DlJIb3XTumxLmxWceyAU=\nR:v0.0.0-20210214183328-a001468d78ef.info\nZ:Q1iteV4CcejthLGiR1kLsT7kDlTH0=\nR:v0.0.0-20210214183328-a001468d78ef.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20210214183328-a001468d78ef.mod\nZ:Q11p19oC4hNgri2+WyCVojPFxltOg=\nR:v0.0.0-20210214183328-a001468d78ef.zip\nZ:Q1eGoImSmI2atUF2ucCzF0di7xbl8=\nR:v0.0.0-20210214183328-a001468d78ef.ziphash\nZ:Q11SQNoBFyJv5Ndhkj7TkMRhZQLQI=\nF:root/go/pkg/mod/cache/download/github.com/sergi\nF:root/go/pkg/mod/cache/download/github.com/sergi/go-diff\nF:root/go/pkg/mod/cache/download/github.com/sergi/go-diff/@v\nR:list\nZ:Q1/r/yfn2xiVy2Unb7yhAxpgtUgFE=\nR:v1.2.0.info\nZ:Q1/2EurQGFUkThcjfOCr06Tns6m2I=\nR:v1.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.2.0.mod\nZ:Q1LtV2g8LsN0rY95ymd0ViuT2KibY=\nR:v1.2.0.zip\nZ:Q1elVVqGml4TarE1+ttkUqvhw6hHM=\nR:v1.2.0.ziphash\nZ:Q1InVyfDE96r1Z9iCqAfPR7cW3Hsc=\nF:root/go/pkg/mod/cache/download/github.com/shopspring\nF:root/go/pkg/mod/cache/download/github.com/shopspring/decimal\nF:root/go/pkg/mod/cache/download/github.com/shopspring/decimal/@v\nR:list\nZ:Q1/r/yfn2xiVy2Unb7yhAxpgtUgFE=\nR:v1.2.0.info\nZ:Q1qAKRMOAXaH0l3e9E6DCC3zPqqSY=\nR:v1.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.2.0.mod\nZ:Q1VKyRkZ85QbHnziLbZAGmAK9teGs=\nR:v1.2.0.zip\nZ:Q1hkcKkhPBjucfaWI7ZDAa2cN1PIA=\nR:v1.2.0.ziphash\nZ:Q1j7QU55ehRocNoUhvF1tVLagTiSU=\nF:root/go/pkg/mod/cache/download/github.com/sigstore\nF:root/go/pkg/mod/cache/download/github.com/sigstore/cosign\nF:root/go/pkg/mod/cache/download/github.com/sigstore/cosign/@v\nR:list\nZ:Q1AhZOBNX424bnIVv3DDaOH68YY6w=\nR:v1.13.1.info\nZ:Q1GMp4rooQsLm6WXX12xuzL3Nj2z0=\nR:v1.13.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.13.1.mod\nZ:Q1w3YY7TjnGWlbw10zZ3+8sQNXSag=\nR:v1.13.1.zip\nZ:Q1jMmVFTlkNv3+W7eY92+W5Jw/MVw=\nR:v1.13.1.ziphash\nZ:Q1ny4d29zazgpipKElG17juYt/QbE=\nF:root/go/pkg/mod/cache/download/github.com/sigstore/rekor\nF:root/go/pkg/mod/cache/download/github.com/sigstore/rekor/@v\nR:list\nZ:Q1kTsOIjhTahZuqHt8rhhWKJmlO8I=\nR:v0.12.1.info\nZ:Q17cPlT1jxbdvqWOH9A8xit9Bd3uc=\nR:v0.12.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.12.1.mod\nZ:Q1k9OnVsJSfrtPZWhFU5kO1kCo4jo=\nR:v0.12.1.zip\nZ:Q1a6vuiSHWmYa3lxje6ysrp7cSzGw=\nR:v0.12.1.ziphash\nZ:Q1p2TG5XabqS/0hc0WkfLni/Tw6ag=\nF:root/go/pkg/mod/cache/download/github.com/sigstore/sigstore\nF:root/go/pkg/mod/cache/download/github.com/sigstore/sigstore/@v\nR:list\nZ:Q1ObwH/Bi2aLtRDrvTkogD8YeBtNk=\nR:v1.4.4.info\nZ:Q1aORjR/8MQ7czqTUtX2i5bLSCooo=\nR:v1.4.4.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.4.4.mod\nZ:Q1RVSYJfpSNLPu5+mCdhOryug5yKI=\nR:v1.4.4.zip\nZ:Q1yQsL2bXjUcompIrMWQNNoqf05jA=\nR:v1.4.4.ziphash\nZ:Q1qrt3zmDmgULo6iZzAq4QBb1NhAQ=\nF:root/go/pkg/mod/cache/download/github.com/sirupsen\nF:root/go/pkg/mod/cache/download/github.com/sirupsen/logrus\nF:root/go/pkg/mod/cache/download/github.com/sirupsen/logrus/@v\nR:list\nZ:Q1+U05qa61s7iMZotXxrktMyw33SI=\nR:v1.9.0.info\nZ:Q1nU6Qy/6Bp7ALjuFEpBdi24UJ7jA=\nR:v1.9.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.9.0.mod\nZ:Q1cyso0PjpqNjcp3mlBl9BaNsyNAk=\nR:v1.9.0.zip\nZ:Q1ZopKCB7TcgVK9EhWQVmNLR+/P2M=\nR:v1.9.0.ziphash\nZ:Q1jvp9La3KXahcWsc6oIQRPTEVig8=\nF:root/go/pkg/mod/cache/download/github.com/spf13\nF:root/go/pkg/mod/cache/download/github.com/spf13/afero\nF:root/go/pkg/mod/cache/download/github.com/spf13/afero/@v\nR:list\nZ:Q1VbcdQTNmuXcpWOW2KawzoEgt3Rs=\nR:v1.8.2.info\nZ:Q1tH4oyqrphRAQD79FeCG1sBBtdNU=\nR:v1.8.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.8.2.mod\nZ:Q1FeN87Gygxp26NT2+n5A4YcOAmpU=\nR:v1.8.2.zip\nZ:Q1kHLspuVlWCxrjg777BJsIIEhIvI=\nR:v1.8.2.ziphash\nZ:Q13PRNZwg2gNIFaqO+fGOsdI3+Fl4=\nF:root/go/pkg/mod/cache/download/github.com/spf13/cast\nF:root/go/pkg/mod/cache/download/github.com/spf13/cast/@v\nR:list\nZ:Q1sg30HMYuwP0yQWYQLTlExNnr0iM=\nR:v1.5.0.info\nZ:Q1f2T5kWSO57GVxUAdlPtmcWGzouQ=\nR:v1.5.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.5.0.mod\nZ:Q1/2rS4Zt/bZlFpxNTK1/FJIOfjqw=\nR:v1.5.0.zip\nZ:Q1/4j66iz9xUCnRYtcH1Ts0r8/leg=\nR:v1.5.0.ziphash\nZ:Q13qDMorln6fQO0LLjwIn83nXX8jw=\nF:root/go/pkg/mod/cache/download/github.com/spf13/cobra\nF:root/go/pkg/mod/cache/download/github.com/spf13/cobra/@v\nR:list\nZ:Q199lYsicS8+/y4V7ViFT5JrOqPo4=\nR:v1.6.1.info\nZ:Q1z7PMXkJqYB+U24EWPPh7l7HxRHU=\nR:v1.6.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.6.1.mod\nZ:Q1yy5kGrfcCE4Zqp+8OZL4KP2+204=\nR:v1.6.1.zip\nZ:Q1henQGRib552/CeJPnG5KKPwox9w=\nR:v1.6.1.ziphash\nZ:Q1UAZRZlfPU+ACzk2nFmZzC8pJsL0=\nF:root/go/pkg/mod/cache/download/github.com/spf13/pflag\nF:root/go/pkg/mod/cache/download/github.com/spf13/pflag/@v\nR:list\nZ:Q1wV+phCSD9JmWwmoNzhCkTrWLP1A=\nR:v1.0.5.info\nZ:Q1cA0ZbIN7zsnQulyB8keIqwNuS1Y=\nR:v1.0.5.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.0.5.mod\nZ:Q1GN6t6pmLq2qo18nYfNXFRkEJy4U=\nR:v1.0.5.zip\nZ:Q1R9fP0kXB2U6TqNNTBf63PM5DTF8=\nR:v1.0.5.ziphash\nZ:Q1GLIhIpJaavQsovTx88D+GElIGSc=\nF:root/go/pkg/mod/cache/download/github.com/theupdateframework\nF:root/go/pkg/mod/cache/download/github.com/theupdateframework/go-tuf\nF:root/go/pkg/mod/cache/download/github.com/theupdateframework/go-tuf/@v\nR:list\nZ:Q1hZaVZC7KXtjkn9LQhXYCiV6Cl6Q=\nR:v0.5.2-0.20220930112810-3890c1e7ace4.info\nZ:Q1nted3iqahx4iQoakyrhLWbQKDeE=\nR:v0.5.2-0.20220930112810-3890c1e7ace4.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.5.2-0.20220930112810-3890c1e7ace4.mod\nZ:Q19M0FbXJpeW4k7yoM5064ZnBvsZE=\nR:v0.5.2-0.20220930112810-3890c1e7ace4.zip\nZ:Q1ZcbWy+hFMJCy7DFgdKS095F8iCg=\nR:v0.5.2-0.20220930112810-3890c1e7ace4.ziphash\nZ:Q1VfTakrVnOYXJS0HoG8ypM0557k8=\nF:root/go/pkg/mod/cache/download/github.com/titanous\nF:root/go/pkg/mod/cache/download/github.com/titanous/rocacheck\nF:root/go/pkg/mod/cache/download/github.com/titanous/rocacheck/@v\nR:list\nZ:Q1GXK3cE0fTzQqc9Ei0z0+lFch9YE=\nR:v0.0.0-20171023193734-afe73141d399.info\nZ:Q1I7l8ZBa0r5u/4JmNb2o+d5LvwUg=\nR:v0.0.0-20171023193734-afe73141d399.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20171023193734-afe73141d399.mod\nZ:Q18z6fuopt9jI6PRIpKTbmFcuXt2Q=\nR:v0.0.0-20171023193734-afe73141d399.zip\nZ:Q1Xw4IPffzd+JAqeyas2QI2P8H158=\nR:v0.0.0-20171023193734-afe73141d399.ziphash\nZ:Q1ktikYi6k0rj1gPbCkp82ZDnMp28=\nF:root/go/pkg/mod/cache/download/github.com/vbatts\nF:root/go/pkg/mod/cache/download/github.com/vbatts/tar-split\nF:root/go/pkg/mod/cache/download/github.com/vbatts/tar-split/@v\nR:list\nZ:Q1oyaQzFXuXYVGUZ27hke6OMBINPQ=\nR:v0.11.2.info\nZ:Q1dfh9qu3P6ueHaJkq+2kSJ8gzlYE=\nR:v0.11.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.11.2.mod\nZ:Q1uNaKMrGc0Ll+mLqwUJhVjMs7eJQ=\nR:v0.11.2.zip\nZ:Q1KkObPWX4g2YJQ4+risKE6KwUDA0=\nR:v0.11.2.ziphash\nZ:Q17xdiNZNv2B5GD/XddbudSfgpbVY=\nF:root/go/pkg/mod/cache/download/github.com/xanzy\nF:root/go/pkg/mod/cache/download/github.com/xanzy/ssh-agent\nF:root/go/pkg/mod/cache/download/github.com/xanzy/ssh-agent/@v\nR:list\nZ:Q11FafJz8q1CbOghI8L3HdWjr21WQ=\nR:v0.3.2.info\nZ:Q1BIViS5eYw6yfHVuSeDQC9Lzq7gI=\nR:v0.3.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.2.mod\nZ:Q1H3LtTWLgfe5ms2/lEJgWtLT8EfM=\nR:v0.3.2.zip\nZ:Q1uFc+X5rLOFNRyamyM3paHRJxY8w=\nR:v0.3.2.ziphash\nZ:Q1GMjXDtkl9VetzQ2IgLitOpU700U=\nF:root/go/pkg/mod/cache/download/github.com/zealic\nF:root/go/pkg/mod/cache/download/github.com/zealic/xignore\nF:root/go/pkg/mod/cache/download/github.com/zealic/xignore/@v\nR:list\nZ:Q1B4PbqTte5hOsEiWjVJmXvkI3RCs=\nR:v0.3.3.info\nZ:Q1qPksBFAV3e1h2CY7GFfaOXmv93c=\nR:v0.3.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.3.mod\nZ:Q1NrhgMPdLuPfpBsExdV56Ax0XwJ8=\nR:v0.3.3.zip\nZ:Q1QVyN3tyRyRnOo1zqBFHaxTN+MfM=\nR:v0.3.3.ziphash\nZ:Q19G7C0irN+EgMrUZliX+bFH/NFjs=\nF:root/go/pkg/mod/cache/download/gitlab.alpinelinux.org\nF:root/go/pkg/mod/cache/download/gitlab.alpinelinux.org/alpine\nF:root/go/pkg/mod/cache/download/gitlab.alpinelinux.org/alpine/go\nF:root/go/pkg/mod/cache/download/gitlab.alpinelinux.org/alpine/go/@v\nR:list\nZ:Q1oCXjRzPCI8t9oTP20ildAa5ulIQ=\nR:v0.6.0.info\nZ:Q1kqA5DS5nj73+PRIlaGoEDKd7pkw=\nR:v0.6.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.6.0.mod\nZ:Q1dMCODyETPEIjANXMZ9SF9BIB74Y=\nR:v0.6.0.zip\nZ:Q1bcTmGEIQxuPNnq2xdOc0n8KnyyE=\nR:v0.6.0.ziphash\nZ:Q1DIB8R9F9IB/AjX3bdrI050Bs0PQ=\nF:root/go/pkg/mod/cache/download/go.lsp.dev\nF:root/go/pkg/mod/cache/download/go.lsp.dev/uri\nF:root/go/pkg/mod/cache/download/go.lsp.dev/uri/@v\nR:list\nZ:Q1FqaHrzImyywbPhoNmKW+K84MQEk=\nR:v0.3.0.info\nZ:Q1UvjZyFHpCxQUyI2udHJwCXydPDk=\nR:v0.3.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.0.mod\nZ:Q1yoThAIcGBgFC0Q+zz8HT8rFJmv0=\nR:v0.3.0.zip\nZ:Q1skk5rm3J671RM/2mOn1pHJcnJdw=\nR:v0.3.0.ziphash\nZ:Q1AeuH6pQa7RMoE1rmMBaWCfeIC5g=\nF:root/go/pkg/mod/cache/download/go.mongodb.org\nF:root/go/pkg/mod/cache/download/go.mongodb.org/mongo-driver\nF:root/go/pkg/mod/cache/download/go.mongodb.org/mongo-driver/@v\nR:list\nZ:Q1oyFSShMzLT51AiZT06JVhI7s3MQ=\nR:v1.10.2.info\nZ:Q1I1jCZi9oZeSLmUrm3KdnElgaSQk=\nR:v1.10.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.10.2.mod\nZ:Q11ycTHIh4Xz/hq5piXDshlEKYhRk=\nR:v1.10.2.zip\nZ:Q1NrcbcqOjB5eKZyj92tyhqf4e1C8=\nR:v1.10.2.ziphash\nZ:Q1sPDEVhePno0wz/B90e9rI8StVlU=\nF:root/go/pkg/mod/cache/download/golang.org\nF:root/go/pkg/mod/cache/download/golang.org/x\nF:root/go/pkg/mod/cache/download/golang.org/x/build\nF:root/go/pkg/mod/cache/download/golang.org/x/build/@v\nR:list\nZ:Q1OXTE1ZBgI6w3e+J1LAwm5lpzIK0=\nR:v0.0.0-20220928220451-9294235e16f5.info\nZ:Q1Aj7bF9vsKWZ3y/JTG/23XoyJbBQ=\nR:v0.0.0-20220928220451-9294235e16f5.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20220928220451-9294235e16f5.mod\nZ:Q1Vjy5rgsNbfjnm41FRhntJTxPrf0=\nR:v0.0.0-20220928220451-9294235e16f5.zip\nZ:Q1jDYsuYw7bfz/EVFCK0lpqohZcbo=\nR:v0.0.0-20220928220451-9294235e16f5.ziphash\nZ:Q1daCSYN6EgXmgr64QsjoEHMCBLIQ=\nF:root/go/pkg/mod/cache/download/golang.org/x/crypto\nF:root/go/pkg/mod/cache/download/golang.org/x/crypto/@v\nR:list\nZ:Q18zJlE9wNe5jsTHx3cTyItiYCdbM=\nR:v0.1.0.info\nZ:Q1r6JCNWYh6p+frM0E1Iy9+j9qTDo=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q1O0CeWnej3aFHEb/S7lEXqMC6Nkg=\nR:v0.1.0.zip\nZ:Q1TI81ET4ZQQKaLX2/4Me/QRPNf3g=\nR:v0.1.0.ziphash\nZ:Q1BshmUOzvYxWq/yGF0JD49Dl0rW8=\nF:root/go/pkg/mod/cache/download/golang.org/x/mod\nF:root/go/pkg/mod/cache/download/golang.org/x/mod/@v\nR:list\nZ:Q1Vjni+YZqldBOYmwLq/9yfASgaU4=\nR:v0.7.0.info\nZ:Q1HLY3SL8UI3CymVEuLqWzpDADo+0=\nR:v0.7.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.7.0.mod\nZ:Q1c2mE8Og628WD7AFMP6CYgAcMcz4=\nR:v0.7.0.zip\nZ:Q17CteuSbcs0goCA3LnH5bWsJ6EaQ=\nR:v0.7.0.ziphash\nZ:Q1NcKgQeGW8A5KbXM6/YNYTGFf3Mo=\nF:root/go/pkg/mod/cache/download/golang.org/x/net\nF:root/go/pkg/mod/cache/download/golang.org/x/net/@v\nR:list\nZ:Q18zJlE9wNe5jsTHx3cTyItiYCdbM=\nR:v0.1.0.info\nZ:Q1EReJqaXvU4GiOMv7CaW0eZsw83Y=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q1eFriyaxf9zZ/yywKGI5/Q9+s8Zc=\nR:v0.1.0.zip\nZ:Q14/fB9Q42Jwdq7tWPBBgji+TNMSg=\nR:v0.1.0.ziphash\nZ:Q1uaaNUxr/ygmCcvkzfIwxb2aIKyg=\nF:root/go/pkg/mod/cache/download/golang.org/x/oauth2\nF:root/go/pkg/mod/cache/download/golang.org/x/oauth2/@v\nR:list\nZ:Q18zJlE9wNe5jsTHx3cTyItiYCdbM=\nR:v0.1.0.info\nZ:Q183dPPFZW1HV4YNnKoCTbttJxSa8=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q19hWzHI/4pBx8X8gXwOYFrBNC9O4=\nR:v0.1.0.zip\nZ:Q1ervd2y8jVUTh9xn357ZdL9wMcAM=\nR:v0.1.0.ziphash\nZ:Q1xqUfWp89g3CUY58fwe+Amsf8XpI=\nF:root/go/pkg/mod/cache/download/golang.org/x/sync\nF:root/go/pkg/mod/cache/download/golang.org/x/sync/@v\nR:list\nZ:Q18zJlE9wNe5jsTHx3cTyItiYCdbM=\nR:v0.1.0.info\nZ:Q19c06n2jdb3cvMrd9NoeYdNySmcM=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q1SNtBaIG8NbrsQDf3BLSOoEyqayA=\nR:v0.1.0.zip\nZ:Q1LgLJUQzWOajEg++rUTsjztwg9Q4=\nR:v0.1.0.ziphash\nZ:Q1GD+Brh6/4vUHjtFKxpc/RlIizd0=\nF:root/go/pkg/mod/cache/download/golang.org/x/sys\nF:root/go/pkg/mod/cache/download/golang.org/x/sys/@v\nR:list\nZ:Q1Ar76+/EkSn9FW7h157uY4O7C6Kk=\nR:v0.1.0.info\nZ:Q1W9aTQEuWN1tCH8LWVC2NI1BK6pU=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q1fzR5w/LlSA7rqBaxRu8GNGvGaa8=\nR:v0.1.0.zip\nZ:Q12BuWlIA44Har5zeS6C5YFewTCSc=\nR:v0.1.0.ziphash\nZ:Q1hpmANk+e6KSWqgTs7MWc9FCJwB4=\nR:v0.2.0.info\nZ:Q1Wp1DhgyaMBZMxWapsaRflhbpAmQ=\nR:v0.2.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.2.0.mod\nZ:Q1fzR5w/LlSA7rqBaxRu8GNGvGaa8=\nR:v0.2.0.zip\nZ:Q1jdTqQLrq1P7AxpvEJ/DZ0jKjhoc=\nR:v0.2.0.ziphash\nZ:Q1EXv7xRWP424ZgnuVwxYIVRVz4Lw=\nF:root/go/pkg/mod/cache/download/golang.org/x/term\nF:root/go/pkg/mod/cache/download/golang.org/x/term/@v\nR:list\nZ:Q18zJlE9wNe5jsTHx3cTyItiYCdbM=\nR:v0.1.0.info\nZ:Q1aHYrK5on3sxO9c6xHCfD7/+mR+0=\nR:v0.1.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.0.mod\nZ:Q199TTBq2dTz/c6glI3iGdcGRs020=\nR:v0.1.0.zip\nZ:Q1KMip+sCvlvpwgNOE8wmw1z/53XQ=\nR:v0.1.0.ziphash\nZ:Q1vULcvWtfI1+YbSQdfIv013YdccA=\nF:root/go/pkg/mod/cache/download/golang.org/x/text\nF:root/go/pkg/mod/cache/download/golang.org/x/text/@v\nR:list\nZ:Q1bLUhYIzcnrQP5JSL0KZHfc9Px9k=\nR:v0.4.0.info\nZ:Q1KFvGObLsdfOAMzS4JmEPhVFe1Jc=\nR:v0.4.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.4.0.mod\nZ:Q1ajn3qJnq5fsD+bHElH1vZLBlMx0=\nR:v0.4.0.zip\nZ:Q11VWr1k2/tINIgoQMMyYKU5S1JjY=\nR:v0.4.0.ziphash\nZ:Q18j/gGvevlBnW2LWmpxrYSQNTBdY=\nF:root/go/pkg/mod/cache/download/golang.org/x/tools\nF:root/go/pkg/mod/cache/download/golang.org/x/tools/@v\nR:list\nZ:Q1FqaHrzImyywbPhoNmKW+K84MQEk=\nR:v0.3.0.info\nZ:Q1/2A+iIlKBAA/hfW+EZmBrgs4uTs=\nR:v0.3.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.3.0.mod\nZ:Q1aHYZWq334/7U0MfG9A4zwvfCdkA=\nR:v0.3.0.zip\nZ:Q12O7u1Ar0iW2A6+/wTJYf2PFf/5s=\nR:v0.3.0.ziphash\nZ:Q1V2Gz5hy252i9Sn8OwWdZ5nv5n9E=\nF:root/go/pkg/mod/cache/download/google.golang.org\nF:root/go/pkg/mod/cache/download/google.golang.org/genproto\nF:root/go/pkg/mod/cache/download/google.golang.org/genproto/@v\nR:list\nZ:Q1uAkFHZ6Q8mfrhyCVRm/5NJ+Hu/o=\nR:v0.0.0-20221010155953-15ba04fc1c0e.info\nZ:Q1kKwjGXQ2EWflDDd5CVcKu8KA7bc=\nR:v0.0.0-20221010155953-15ba04fc1c0e.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.0.0-20221010155953-15ba04fc1c0e.mod\nZ:Q1T2doBKNuMOZ4n45IfbjBdGiELDA=\nR:v0.0.0-20221010155953-15ba04fc1c0e.zip\nZ:Q1U2o/3vb+aedAnzgG2OcHjwOWSF8=\nR:v0.0.0-20221010155953-15ba04fc1c0e.ziphash\nZ:Q1AEsgbnT+tha5THYMg/UzfBtEc0s=\nF:root/go/pkg/mod/cache/download/google.golang.org/grpc\nF:root/go/pkg/mod/cache/download/google.golang.org/grpc/@v\nR:list\nZ:Q1Na/gou/Rr0nlkfB7dTRNc92+zD8=\nR:v1.50.0.info\nZ:Q1DJCHherZaUmYreToIl+0JOEsjq8=\nR:v1.50.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.50.0.mod\nZ:Q1/mwj55DaJ4Rz8JdfmiCXhEPxvNw=\nR:v1.50.0.zip\nZ:Q17gIRIlUpPZUBNTBC4B6MLppcHbI=\nR:v1.50.0.ziphash\nZ:Q1tP0jWK9bgLGEcqI/3/978bb5n6g=\nF:root/go/pkg/mod/cache/download/google.golang.org/protobuf\nF:root/go/pkg/mod/cache/download/google.golang.org/protobuf/@v\nR:list\nZ:Q1fiXpPq4T+mcJxZ615jQQQkMjFYo=\nR:v1.28.1.info\nZ:Q1mbVJh1fqp4BjuGVoBSnqNCNfeiM=\nR:v1.28.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.28.1.mod\nZ:Q1pqd+nRU4hDRJJYibGQjiua7zY6k=\nR:v1.28.1.zip\nZ:Q19GsVA4dyjgjRhaHEyoqtjzvjlv0=\nR:v1.28.1.ziphash\nZ:Q1NBk0mkc7jhESb9MYL5DjNskxQds=\nF:root/go/pkg/mod/cache/download/gopkg.in\nF:root/go/pkg/mod/cache/download/gopkg.in/ini.v1\nF:root/go/pkg/mod/cache/download/gopkg.in/ini.v1/@v\nR:list\nZ:Q1ANVUF2Pp+aHVhNuGxOJc4+IME6g=\nR:v1.67.0.info\nZ:Q1acJgWsxhH+I1rtkJDcmiD5XeRso=\nR:v1.67.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v1.67.0.mod\nZ:Q1uSiIzx2tIf9auqx0Uv+oHaW51lM=\nR:v1.67.0.zip\nZ:Q1qXsrZecORmV4zmNB3bhsaFYO6L4=\nR:v1.67.0.ziphash\nZ:Q1NvxIWVPy/NDKgWjMWUwOVCaRpmI=\nF:root/go/pkg/mod/cache/download/gopkg.in/square\nF:root/go/pkg/mod/cache/download/gopkg.in/square/go-jose.v2\nF:root/go/pkg/mod/cache/download/gopkg.in/square/go-jose.v2/@v\nR:list\nZ:Q1dm6rANYRtw7e7uJbkMO8/KHWSsQ=\nR:v2.6.0.info\nZ:Q1KA9GMjXVje+7zl5PBiN2PA2U8JU=\nR:v2.6.0.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v2.6.0.mod\nZ:Q1TQCaMZ90vVZ4TPXFC7pD7cZasp0=\nR:v2.6.0.zip\nZ:Q1OYGiPOKA9ltdjAd2bxgyyeFhpW0=\nR:v2.6.0.ziphash\nZ:Q1GWk/QiGUDFLUwxK2oKnxsj1IIAU=\nF:root/go/pkg/mod/cache/download/gopkg.in/warnings.v0\nF:root/go/pkg/mod/cache/download/gopkg.in/warnings.v0/@v\nR:list\nZ:Q1iVngAfG51MzQ5baQ85DTlHvcWl4=\nR:v0.1.2.info\nZ:Q1B1Wc8XQcaf0Fq1wLYYNLVJokyd4=\nR:v0.1.2.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.1.2.mod\nZ:Q14i8Xavkg4rqNtf34TX6pD5y/gMo=\nR:v0.1.2.zip\nZ:Q1KRFpmFuTsrkUgFwaUwu9TR51iSA=\nR:v0.1.2.ziphash\nZ:Q1IP1Y2V5+XANhPGeYqfdQUNg1wsk=\nF:root/go/pkg/mod/cache/download/gopkg.in/yaml.v3\nF:root/go/pkg/mod/cache/download/gopkg.in/yaml.v3/@v\nR:list\nZ:Q19AaIsI4505bDLrJ4PIxuMVY3ZOk=\nR:v3.0.1.info\nZ:Q11tJiqtQUvobN87AFZNCHgU9udzg=\nR:v3.0.1.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v3.0.1.mod\nZ:Q1tdOkOz4p45tq7WW9BBxjJBlipRs=\nR:v3.0.1.zip\nZ:Q1ZYJSRkR4gtbyvds/iaxLmrwmEu8=\nR:v3.0.1.ziphash\nZ:Q1W7pjdYbjpwdAa617slgxl7WbGYo=\nF:root/go/pkg/mod/cache/download/sigs.k8s.io\nF:root/go/pkg/mod/cache/download/sigs.k8s.io/release-utils\nF:root/go/pkg/mod/cache/download/sigs.k8s.io/release-utils/@v\nR:list\nZ:Q1rUBT8lMW7v304YKZTpTbPm3f5Ak=\nR:v0.7.3.info\nZ:Q13eOFd8j4nRbCXkCJECTUAWbm2hw=\nR:v0.7.3.lock\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:v0.7.3.mod\nZ:Q1a1LE13XrDakjraMHJ2MU4JYXzxo=\nR:v0.7.3.zip\nZ:Q1lr0NbBt0ibksLzvdNXha3wvqwjo=\nR:v0.7.3.ziphash\nZ:Q1zVVMQSjprSpLALx+7ytDFEE6b30=\nF:root/go/pkg/mod/cache/download/sumdb\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/lookup\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/golang.org/x\nR:mod@v0.7.0\nZ:Q1gnlDlnL0TStNNj9gbStsMP2SW5Y=\nR:sys@v0.2.0\nZ:Q12zJXeFkRtgUeEVtPA314VthnJDw=\nR:tools@v0.3.0\nZ:Q1zuG8DMZgqrbHkXC3dbUTlq9/Hbw=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x053\nR:981\nZ:Q1tWxTKqYT0rvnNo1FtuJuAFv2de8=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x054\nR:086\nZ:Q1cGcdimZMrH7qzFA5t/kibCNKGQg=\nR:090\nZ:Q1jp3StU8o6mDziYQDEFuN5hgHuWY=\nR:513\nZ:Q1oW1iJsHesszt7Ox5qp4vMUSvBO8=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x054/517.p\nR:26\nZ:Q1yqaaGx8WV43So33vIjNZLoDAX4s=\nR:99\nZ:Q1xFD6yZulVdWh1lV6n3UKoagwRIQ=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1\nR:210\nZ:Q1fnsGhgkvog738ys3LFHMuiCBdZE=\nR:211\nZ:Q1akK1k/PMq5jy/QbrKKcUh5AJZMg=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/212.p\nR:245\nZ:Q1sRbm9SEo9wOTk6zXGoEzx4DVcuk=\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2\nF:root/go/pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/000.p\nR:212\nZ:Q17JZlDN6Pf10bei+bDIrO6h2W0bY=\nF:root/go/pkg/mod/chainguard.dev\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6apcYVmu3M65Z9iYtMu7zqALcI=\nR:.gitignore\na:0:0:444\nZ:Q1MY+aSEKtV7wfaJ34xoO+5XMWJC8=\nR:.golangci.yml\na:0:0:444\nZ:Q1n3x0DaIoiIuqOI8AqM+rLKhqwjA=\nR:.goreleaser.yaml\na:0:0:444\nZ:Q1fh/KuLF9borkHqleKDsZRemT/fk=\nR:.ko.yaml\na:0:0:444\nZ:Q1au86LTqtVuqnDJLvXidtekQi+6k=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1ejR4AmNImF6zJ/RJWgUUU83N3XU=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1PPiY3jBPu0pPq/RhNebEGo9F6Y0=\nR:LICENSE\na:0:0:444\nZ:Q1ffBZWXCZu33PJdKprt+vRGX3LY0=\nR:Makefile\na:0:0:444\nZ:Q1lTuvEG7oNjl0aSMVfchJXZyA0LE=\nR:NEWS.md\na:0:0:444\nZ:Q1Krg2R/0FCPwh/cbRNwaLcoN9c4w=\nR:README.md\na:0:0:444\nZ:Q1jNCB23uJFVzrrzQpeIy7yTkmHSw=\nR:go.mod\na:0:0:444\nZ:Q1SyYCJeG1/9waIhZpYT2T0SvWMAM=\nR:go.sum\na:0:0:444\nZ:Q1a1osnh+NkmA25EM0PesqAf12LuU=\nR:header.tmpl\na:0:0:444\nZ:Q1s0l7yWnKcZ0KUZb8IkVzHRjx4MA=\nR:main.go\na:0:0:444\nZ:Q1WXxhmV6xX+TJcStWNW/OuaSQyi8=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q1lYxNvvkh/iqxH5aqWXO1oMqgkDU=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/.github/workflows\nM:0:0:555\nR:add-issues.yml\na:0:0:444\nZ:Q12OkjWg3rJI/mltP4tZf/wIv3iOE=\nR:build.yaml\na:0:0:444\nZ:Q1epXT3m6Uw5y+PKuYUPaUSQ8bJ9c=\nR:codeql.yaml\na:0:0:444\nZ:Q1wxD2DSs7ceZvOSLSVTpnbUT/L9w=\nR:go-tests.yaml\na:0:0:444\nZ:Q1hX10/rt+ILu9u7aZEEs16g+y1LE=\nR:mink-e2e.yaml\na:0:0:444\nZ:Q1ul2SJKBj7EAtOHvSZH5BanlQPO0=\nR:release.yaml\na:0:0:444\nZ:Q1DdwXd3h9WdA+Ro8teybj9vy0MiE=\nR:sync-issues-to-project-board.yaml\na:0:0:444\nZ:Q1tiMA5ikYR8ls2ZbextSz2aMSn8A=\nR:verify.yaml\na:0:0:444\nZ:Q1umV9UyYOyR99PZmWy+mxLPqwV64=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/config\nM:0:0:555\nR:task.yaml\na:0:0:444\nZ:Q1H/1R7vnOmDPCeQiMxXOefuHj7Us=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/docs\nM:0:0:555\nR:apko_file.md\na:0:0:444\nZ:Q1fg9IjRxGfs8zwkJbeLtRrLmjFHU=\nR:faq.md\na:0:0:444\nZ:Q1sdOr1+pKauzvdwIxVOFJ1mneLDs=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/examples\nM:0:0:555\nR:alpine-386_amd64.yaml\na:0:0:444\nZ:Q1uLfB0KiKcR7CU8nK4Wc2pR3QA/w=\nR:alpine-amd64.yaml\na:0:0:444\nZ:Q16liwvZeqmVv6NJDNFLh4lkYwxd0=\nR:alpine-base-rootless.yaml\na:0:0:444\nZ:Q183TzhETRDgJX9PGj20iqZnmtDhM=\nR:alpine-base.yaml\na:0:0:444\nZ:Q1cDa6OHms/ugwvToDFD7RNH/3WSM=\nR:alpine-slim.yaml\na:0:0:444\nZ:Q1uGJMRqG/bLpMUY8E1gkCGFN/jRc=\nR:apko-devenv.yaml\na:0:0:444\nZ:Q1ONRmVZzB04O/HVig4RFHtiAajws=\nR:include.yaml\na:0:0:444\nZ:Q1hwOWnqAEPhV/6+tCmiAJqSNtYhc=\nR:nginx-rootless.yaml\na:0:0:444\nZ:Q15VpKIiSH117nML1mTC/CjB5XBWI=\nR:nginx.yaml\na:0:0:444\nZ:Q1poAt9dxgW84+/ok4yz+Irf03rms=\nR:overlay.yaml\na:0:0:444\nZ:Q1b6Yc//oLHuk33Cq1pq5zT4j/hn0=\nR:remote-include.yaml\na:0:0:444\nZ:Q1TZQ/toAnZ+kJ0EpvTsAH2A4SzKw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/hack\nM:0:0:555\nR:make-devenv.sh\na:0:0:444\nZ:Q1wmfjan3kPNv5QuLA7ZF+Wlxj/N4=\nR:run-devenv.sh\na:0:0:444\nZ:Q1LaKzTaqICnhhzP6m1QWhlOlVFuQ=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/internal\nM:0:0:555\nR:tools.go\na:0:0:444\nZ:Q1kOY+0uShBq1Wna/SOEfOiDHYCOc=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/internal/cli\nM:0:0:555\nR:build-minirootfs.go\na:0:0:444\nZ:Q1lKa/OOHF+zE7wvOT2+FHJnQBZRI=\nR:build.go\na:0:0:444\nZ:Q1A8knZ7IRp64lklu/oKK0QJ0y0ow=\nR:commands.go\na:0:0:444\nZ:Q1cCdHojj4/9khwD4guIR4qbgixYM=\nR:publish.go\na:0:0:444\nZ:Q1NsBPrZV4B/M1u/z4hsbmxozgixA=\nR:show-config.go\na:0:0:444\nZ:Q1awcn4Cq372L2FQvkWeTh0+m44nw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/mac\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1g/aWo0fBRQyDj4ot9857yqzIQlw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/mac/lima\nM:0:0:555\nR:apko-playground.yaml\na:0:0:444\nZ:Q1dra6EFA1nOp3S6R/jY77ZxI82Tw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg\nM:0:0:555\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/apk\nM:0:0:555\nR:apk.go\na:0:0:444\nZ:Q1gfu4qKlmdNT6E/GQJdcS+64z2BQ=\nR:apk_implementation.go\na:0:0:444\nZ:Q1pdNIAoyWZBr89ajzgENT7OORJdM=\nR:apk_test.go\na:0:0:444\nZ:Q1HxgXR0mLslJMnDaES9WZF7mD8No=\nR:apk_unit_test.go\na:0:0:444\nZ:Q1AOqHcXi/2TCEiqyYrl3LWij5dco=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/apk/apkfakes\nM:0:0:555\nR:fake_apk_implementation.go\na:0:0:444\nZ:Q1+CtCxNbM8Q+fe+LaXXnw3oVapkI=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/build\nM:0:0:555\nR:accounts.go\na:0:0:444\nZ:Q1yjyhULEnHckD4Awa4C2FsizZK0c=\nR:build.go\na:0:0:444\nZ:Q1B3rmFOL3GuN47NlEsUjm2y6pLOw=\nR:build_implementation.go\na:0:0:444\nZ:Q14+kbKfdv7afyaMU7FKNysh+Kc5I=\nR:build_test.go\na:0:0:444\nZ:Q1SxP51MuRViAqZQnFopYxbFh7Yuo=\nR:errors.go\na:0:0:444\nZ:Q11nesaLIhD7oxqM3pApuq08Iwa08=\nR:image_builder.go\na:0:0:444\nZ:Q1gTlgXVLNVzB7CFixoZQ8CCUUyAo=\nR:options.go\na:0:0:444\nZ:Q1diQdOXzTZ37hZ/+oLAMN52UWmss=\nR:os-release.go\na:0:0:444\nZ:Q1EYyHmVxv3pO3tnpBTrdwRcdblvo=\nR:paths.go\na:0:0:444\nZ:Q1MtRB+WMt5+JX2n0/dNlohCRzUD4=\nR:validate.go\na:0:0:444\nZ:Q1e7JaMYJfn91n2akXnV5qdxjPqqo=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/build/buildfakes\nM:0:0:555\nR:fake_build_implementation.go\na:0:0:444\nZ:Q1ewh/p8Z5dPTSXDe0TlcguioTIWI=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/build/oci\nM:0:0:555\nR:oci.go\na:0:0:444\nZ:Q1xPvMkXS+UhEmdNDEDSnIsvBPrCU=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/build/types\nM:0:0:555\nR:image_configuration.go\na:0:0:444\nZ:Q1KPvgIcUdHDIo4egwtpTxW3APIHU=\nR:types.go\na:0:0:444\nZ:Q1zeXp/wTy1ERfOYV2/fUQqCXMjVg=\nR:types_test.go\na:0:0:444\nZ:Q1G1snDHYPvnPa947iDHyh5hXGFcE=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/exec\nM:0:0:555\nR:cmd.go\na:0:0:444\nZ:Q1HpXMGw0UvD0+S1Bp+rtTqJv1xG8=\nR:exec.go\na:0:0:444\nZ:Q19G5nC5qtp0SbaXgVLg7EIGZEqbo=\nR:exec_test.go\na:0:0:444\nZ:Q1S+Ii+SVWKi0qtCb0y8EUTRHLjjI=\nR:exec_unit_test.go\na:0:0:444\nZ:Q12sUrev1KT0/a8T+wYb5gfzIJKak=\nR:implementation.go\na:0:0:444\nZ:Q1TF+dvKz5iHuna8RRw8w1/2Cfr7k=\nR:implementation_test.go\na:0:0:444\nZ:Q1xA0r3EISKtFbVMvAHxfOdCgVPsY=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/exec/execfakes\nM:0:0:555\nR:fake_executor_implementation.go\na:0:0:444\nZ:Q1nMzSi56vDmkA0OLz7hO5AFf1r10=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/fetch\nM:0:0:555\nR:fetch.go\na:0:0:444\nZ:Q1qFQ0EtFOFuMkYFHeud55lGsZ35M=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/fs\nM:0:0:555\nR:fs.go\na:0:0:444\nZ:Q1t0jPkPdJI+JZYK68fzfUxAzuT4k=\nR:readlinkfs.go\na:0:0:444\nZ:Q1l9Hm+3btOZ2MXycq3Dj60ffW7Y0=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/options\nM:0:0:555\nR:options.go\na:0:0:444\nZ:Q1pRngyjm6MHIi3G1hG+OfsuDnzWE=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/passwd\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1DqEADhX3k/G6g0RWNwB1j30s1O8=\nR:group.go\na:0:0:444\nZ:Q1dz9ly0XG9WEQFWRoV5YKz0pqJCo=\nR:group_test.go\na:0:0:444\nZ:Q18ei3Rk1SrJyY/nB9rWSBy+c1xs4=\nR:passwd.go\na:0:0:444\nZ:Q1kWmU1IhipAKr91juhQWF/nNMZrM=\nR:passwd_test.go\na:0:0:444\nZ:Q1CpJtQeFWnBKKb2RwuoV3+N5WU/o=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/passwd/testdata\nM:0:0:555\nR:group\na:0:0:444\nZ:Q1xnhN7neyGzijF5W/NH9ntjr32HE=\nR:passwd\na:0:0:444\nZ:Q1SKKJyH2C5shMTLmehLetrGGGrLY=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/s6\nM:0:0:555\nR:s6.go\na:0:0:444\nZ:Q1nfD6+uyluKhzsLSNcLBz78PQTnI=\nR:supervision_tree.go\na:0:0:444\nZ:Q1OQdodMa3dOIjI9Dna+jA+DWZj0U=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom\nM:0:0:555\nR:sbom.go\na:0:0:444\nZ:Q1h/TfVIAJXaRw4MzqQ6G9qgxvAQw=\nR:sbom_test.go\na:0:0:444\nZ:Q1N/sFKHf4CtZjAXOn0cCFsALh6g4=\nR:sbom_unit_test.go\na:0:0:444\nZ:Q1tpLlwMmtUXA3XDxIH3cj0r8evgM=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/generator\nM:0:0:555\nR:generator.go\na:0:0:444\nZ:Q1w9Vtv+i6OWlWvNqMdolp8675zPI=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/generator/cyclonedx\nM:0:0:555\nR:cyclonedx.go\na:0:0:444\nZ:Q1AhCziUPqwl8p7uQs7ibqOEuI7Dw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/generator/generatorfakes\nM:0:0:555\nR:fake_generator.go\na:0:0:444\nZ:Q12A8UcsjDqOe52pxDLBz/fA0QEL4=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/generator/idb\nM:0:0:555\nR:idb.go\na:0:0:444\nZ:Q1LtiOQT58Qxol373VEhFE07Lq4bk=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/generator/spdx\nM:0:0:555\nR:spdx.go\na:0:0:444\nZ:Q1bsVu3gmlUkWlM37HCahx95zR6Jc=\nR:spdx_test.go\na:0:0:444\nZ:Q1960veGCdl/WI6vMBlRED/n8ndWw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/options\nM:0:0:555\nR:options.go\na:0:0:444\nZ:Q1C2O4mcW+U1djBJkRYf6W7fefQJE=\nR:options_test.go\na:0:0:444\nZ:Q11d6ZjEMwHuhPu1nIkjWWWfVB3wo=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/sbom/sbomfakes\nM:0:0:555\nR:fake_sbom_implementation.go\na:0:0:444\nZ:Q1xLk7H6163oFtQuMUDaVFttbZbRc=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/tarball\nM:0:0:555\nR:append.go\na:0:0:444\nZ:Q1ITaP6IJVSUqwESIMwz5cXEkMzbE=\nR:append_test.go\na:0:0:444\nZ:Q1rNUsMfH1+l/B/VQGzkpgHPgy5ow=\nR:tarball.go\na:0:0:444\nZ:Q1YgfDiB035o4sCFN2Wul++8VFu1E=\nR:write.go\na:0:0:444\nZ:Q1h1VHStBKHrn2N+fSt2quzpnIQMI=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/tarball/testdata\nM:0:0:555\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/tarball/testdata/bar\nM:0:0:555\nR:bar.txt\na:0:0:444\nZ:Q14kLtO//M3ycbf7rzTtctCJU3tC8=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/tarball/testdata/foo\nM:0:0:555\nR:foo.txt\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/vcs\nM:0:0:555\nR:vcs.go\na:0:0:444\nZ:Q1ZTlpRXFW3UYYUyseyGE/X+8hk04=\nR:vcs_unit_test.go\na:0:0:444\nZ:Q1i9uunQ5XuK/CrSd53WU3KgFIQZw=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/vfs\nM:0:0:555\nR:dirfs.go\na:0:0:444\nZ:Q1MwSFDBVaOWL5mEVh0pMP6qjvSn8=\nR:dirfs_unit_test.go\na:0:0:444\nZ:Q1yahgEz5P/MS6icz3tAzOKj1waRY=\nR:vfs.go\na:0:0:444\nZ:Q1wbxR06w+lW20hL71/RZR1J+RJcg=\nR:vfs_unit_test.go\na:0:0:444\nZ:Q1CspsH5aJOdWSm6xXCFcvYCASHbI=\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/vfs/testdata\nM:0:0:555\nF:root/go/pkg/mod/chainguard.dev/apko@v0.5.1-0.20221108210157-867765719b6f/pkg/vfs/testdata/etc\nM:0:0:555\nR:motd\na:0:0:444\nZ:Q1M6tWOb/Y57lesdjQuHeB1P/qTV0=\nF:root/go/pkg/mod/cloud.google.com\nF:root/go/pkg/mod/cloud.google.com/go\nF:root/go/pkg/mod/cloud.google.com/go/compute@v1.10.0\nM:0:0:555\nR:CHANGES.md\na:0:0:444\nZ:Q1i5caBcPcPhHwACZtJhZSeQ53PmE=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1miopdYHBWIXrMpcUsqRi0NLQBDc=\nR:go.mod\na:0:0:444\nZ:Q1mDeNsK7ykEgGpSl423fHCqYCgHI=\nR:go.sum\na:0:0:444\nZ:Q1W3KrqGS/+cUQlycLoigMKa6NHjA=\nF:root/go/pkg/mod/cloud.google.com/go/compute@v1.10.0/apiv1\nM:0:0:555\nR:accelerator_types_client.go\na:0:0:444\nZ:Q1J8y5QkjeXtEvQdGElRNiS7dqOIg=\nR:accelerator_types_client_example_test.go\na:0:0:444\nZ:Q1Hd7DPZ5/sKHfNFvPR1bozACl8v8=\nR:addresses_client.go\na:0:0:444\nZ:Q1gYV+VBXQTxDS5CrUIzt7MPXJpWw=\nR:addresses_client_example_test.go\na:0:0:444\nZ:Q1xerjvgH4fGOsBpqnQb20I1twcfc=\nR:autoscalers_client.go\na:0:0:444\nZ:Q12HohvgNI4iDDC8cd7MPdGojabw0=\nR:autoscalers_client_example_test.go\na:0:0:444\nZ:Q1pLi+QZz425ubblGNmU+RVrmdYGE=\nR:backend_buckets_client.go\na:0:0:444\nZ:Q1JsmaYiUIFahhdecEbPjjSmNQYs0=\nR:backend_buckets_client_example_test.go\na:0:0:444\nZ:Q1mntF68x2esg2D1pHyayS8Ni/dmQ=\nR:backend_services_client.go\na:0:0:444\nZ:Q1/l49Pkk30Cl+fMaldOKOYETCyaY=\nR:backend_services_client_example_test.go\na:0:0:444\nZ:Q1+1LzuIk2p6ALIy+5J6hYHaqeaPc=\nR:disk_types_client.go\na:0:0:444\nZ:Q1uGPG9f+tjc0FzdNQZiuFeABu5WQ=\nR:disk_types_client_example_test.go\na:0:0:444\nZ:Q1GZVGVO9NuNJxJ51r+NRzbxj++AA=\nR:disks_client.go\na:0:0:444\nZ:Q1h+4vy/SG2IRym2P7BYsrqW9wBsE=\nR:disks_client_example_test.go\na:0:0:444\nZ:Q1ug/3wwGQwKhEH2hLzY0HtYKhlBg=\nR:doc.go\na:0:0:444\nZ:Q1DVu3HFp0vn2Je4B21xTsuonlslA=\nR:external_vpn_gateways_client.go\na:0:0:444\nZ:Q1V+1Zu+Qyxdn20gzVvtjH5jOqWDo=\nR:external_vpn_gateways_client_example_test.go\na:0:0:444\nZ:Q1gVK/hn+MmEov6M6e0je0NLoFl18=\nR:firewall_policies_client.go\na:0:0:444\nZ:Q1jd1yDGVDWsJJpa/WesV5xkcSqzc=\nR:firewall_policies_client_example_test.go\na:0:0:444\nZ:Q1WNk1CFlq2B961zUVP9cybWCRMgA=\nR:firewalls_client.go\na:0:0:444\nZ:Q1wbmY7J97+VHLAO35ANoAqDL/T9U=\nR:firewalls_client_example_test.go\na:0:0:444\nZ:Q1Ddlr30PvUrrqjbdG3nNwPhJvl6s=\nR:forwarding_rules_client.go\na:0:0:444\nZ:Q1KqcTjQPS/+8uj57xdEl0EkjBOFA=\nR:forwarding_rules_client_example_test.go\na:0:0:444\nZ:Q1YrUq1z2dNigTqzqoSGck2Pj4R1Q=\nR:gapic_metadata.json\na:0:0:444\nZ:Q1haAjzh+ULdAC42YiLitjZSEMkLM=\nR:global_addresses_client.go\na:0:0:444\nZ:Q1YwAywyH+3zn+RdVI54gpcF7YM0Q=\nR:global_addresses_client_example_test.go\na:0:0:444\nZ:Q1n/hvzbP2QJlV155QMbJbqHKUuns=\nR:global_forwarding_rules_client.go\na:0:0:444\nZ:Q1l/rxE4ugI/Hu00gQTJ+J4KptkHs=\nR:global_forwarding_rules_client_example_test.go\na:0:0:444\nZ:Q1CG8xlH5uL/gSv7PmfPR67gU8U4w=\nR:global_network_endpoint_groups_client.go\na:0:0:444\nZ:Q158QuylsZCoEiKzKPB0u0l9ILrT4=\nR:global_network_endpoint_groups_client_example_test.go\na:0:0:444\nZ:Q1+aenKzbSGDEF2XDbclaFRg0AHaI=\nR:global_operations_client.go\na:0:0:444\nZ:Q1pvBYPBqnPavkQjiWxavB8TSTstA=\nR:global_operations_client_example_test.go\na:0:0:444\nZ:Q1qmJ2Uqn4ICnV7Im21aAcZRq3LJ4=\nR:global_organization_operations_client.go\na:0:0:444\nZ:Q1P2eitov0GsK3N0BxnAMAGxU2oeM=\nR:global_organization_operations_client_example_test.go\na:0:0:444\nZ:Q1gsE+sqJMTm9EUCS6Zus8uGDQH14=\nR:global_public_delegated_prefixes_client.go\na:0:0:444\nZ:Q1yyu4UzSfSoP3BAaiqodgS6dV3TQ=\nR:global_public_delegated_prefixes_client_example_test.go\na:0:0:444\nZ:Q12B036HpNMH+Yc578Zk8UE+u7Mqo=\nR:health_checks_client.go\na:0:0:444\nZ:Q1Gb0Tz7cWuJMVaggROVGPO6Vljlw=\nR:health_checks_client_example_test.go\na:0:0:444\nZ:Q1WMdSdVlFevMBeN4RJuvdXqhya9Q=\nR:image_family_views_client.go\na:0:0:444\nZ:Q1+7YECgnP4/haoJl4HFL1hWvUEEY=\nR:image_family_views_client_example_test.go\na:0:0:444\nZ:Q1kj4S2fU1eTPMjfQy+q5dM42jBSU=\nR:images_client.go\na:0:0:444\nZ:Q1nTJgF7QPVdLZs7NsK6kJhKosdf8=\nR:images_client_example_test.go\na:0:0:444\nZ:Q1+z5VM3AoYR2tw5vhzFTJuCuU8uQ=\nR:instance_group_managers_client.go\na:0:0:444\nZ:Q1w6Kx2ExfhZgyR79BzLCc0C+oJyw=\nR:instance_group_managers_client_example_test.go\na:0:0:444\nZ:Q1pBuCedqjoCGPnV5G8ZOGvlyYg2o=\nR:instance_groups_client.go\na:0:0:444\nZ:Q1CC2FXfIABGRJ8/AZrnOi1ijSR10=\nR:instance_groups_client_example_test.go\na:0:0:444\nZ:Q1lAL4NP1zT9gNtUr0ApTQmkZhBGk=\nR:instance_templates_client.go\na:0:0:444\nZ:Q1Io2HLOevQ9L/d5Np55gNOTdlQ38=\nR:instance_templates_client_example_test.go\na:0:0:444\nZ:Q1DJJitfrR4nqeUL2UninkwA9nhsU=\nR:instances_client.go\na:0:0:444\nZ:Q1oUB3BqQ5Z4HGA1sp6ykgEMMmxjo=\nR:instances_client_example_test.go\na:0:0:444\nZ:Q1TGwIILJzR6L0IvnYwp9n4rv8Vps=\nR:interconnect_attachments_client.go\na:0:0:444\nZ:Q1KZEZkDPa/nAEsVmyq3nRmB1354A=\nR:interconnect_attachments_client_example_test.go\na:0:0:444\nZ:Q1MLooZxKaSPqgv/dfZNWQq+C34jc=\nR:interconnect_locations_client.go\na:0:0:444\nZ:Q1gFiSKU7DQs7+tqurAI7Yi/OT2Q0=\nR:interconnect_locations_client_example_test.go\na:0:0:444\nZ:Q1t0YTTbxtHBTOk0h0yUYCsJS498E=\nR:interconnects_client.go\na:0:0:444\nZ:Q1T93TARROKJi42o4vy8WyTySJ1zw=\nR:interconnects_client_example_test.go\na:0:0:444\nZ:Q1VWSdo2+yiph8dw5VIlk6ODtrc+Q=\nR:license_codes_client.go\na:0:0:444\nZ:Q1mzIYbJPgjv6bOSGt+cxeJ2tfDus=\nR:license_codes_client_example_test.go\na:0:0:444\nZ:Q1DpRThtIZwL3xfthFt4npCIyePIk=\nR:licenses_client.go\na:0:0:444\nZ:Q1hV81SwVE65MxmQ5+XXvHda+1TNE=\nR:licenses_client_example_test.go\na:0:0:444\nZ:Q1jvINHKe+boxy6izkhXg7oxqDYXc=\nR:machine_images_client.go\na:0:0:444\nZ:Q1jT3mzDkkzH/oVtA8yhG3t0FspDA=\nR:machine_images_client_example_test.go\na:0:0:444\nZ:Q1GjnmyirH+pnVAqaLF7xu2Kf8MY0=\nR:machine_types_client.go\na:0:0:444\nZ:Q1RJ4mLl5D5QBjrpFdSEmz/exZXuA=\nR:machine_types_client_example_test.go\na:0:0:444\nZ:Q1tFJpJJenD9DEw+9EcvMZMSjZ0Xs=\nR:network_edge_security_services_client.go\na:0:0:444\nZ:Q12mOm/rHpauJnZBs2tQpd9gSyQYU=\nR:network_edge_security_services_client_example_test.go\na:0:0:444\nZ:Q1q6xGI0LUflbNJxhk6G7f6ZAQBSE=\nR:network_endpoint_groups_client.go\na:0:0:444\nZ:Q16poIbPnA7it9CxgRmmeK5dNvgr0=\nR:network_endpoint_groups_client_example_test.go\na:0:0:444\nZ:Q1JXmvmEJ7ZNIg3z5RwjSx6r0SFpw=\nR:network_firewall_policies_client.go\na:0:0:444\nZ:Q1Dp2x5UkC/xH6e4bSOt+GAmX5xjk=\nR:network_firewall_policies_client_example_test.go\na:0:0:444\nZ:Q10zbjsO/+VEAJN8/TzXxc95RTPKA=\nR:networks_client.go\na:0:0:444\nZ:Q1oWNndy6e9EfoCQrP0OUNfR/bFGg=\nR:networks_client_example_test.go\na:0:0:444\nZ:Q1HYa9B/8iBmfmvTVrY3JLmzw//g8=\nR:node_groups_client.go\na:0:0:444\nZ:Q16qrNLmgGy39m9yNEhHeLS6sP9U0=\nR:node_groups_client_example_test.go\na:0:0:444\nZ:Q1b7a8G/ZOqbd1EyDvLpwFqXmXgKY=\nR:node_templates_client.go\na:0:0:444\nZ:Q1xRryVzX0YCPJVP1My2RhD8/C4qQ=\nR:node_templates_client_example_test.go\na:0:0:444\nZ:Q1QmG7pjrxKP6+UaoU6imodkJwbr8=\nR:node_types_client.go\na:0:0:444\nZ:Q1we1JtxsZPMQxtHMqsTdrJhl6aBk=\nR:node_types_client_example_test.go\na:0:0:444\nZ:Q1vsmedUN0SHNgmYxCvxY2YTU6lVw=\nR:operations.go\na:0:0:444\nZ:Q1/GODSWE6eLXckuS+yc6KrmmGqis=\nR:packet_mirrorings_client.go\na:0:0:444\nZ:Q1JScOwNFMcLJxoQdJLtyErVx6vk8=\nR:packet_mirrorings_client_example_test.go\na:0:0:444\nZ:Q1Rf/H9ym4CuoadU0Du3AOj2fRD3g=\nR:projects_client.go\na:0:0:444\nZ:Q1+HaALNU//Vv6IyoI9VA57UlOJYQ=\nR:projects_client_example_test.go\na:0:0:444\nZ:Q1mgprq15NxLp6rqAoPVsHTGXucDg=\nR:public_advertised_prefixes_client.go\na:0:0:444\nZ:Q1AU5rPBxOZ/xotpQq5H5c5vkhk1c=\nR:public_advertised_prefixes_client_example_test.go\na:0:0:444\nZ:Q1nG1dtdQqi8i0IpMPL12tm2vr7N4=\nR:public_delegated_prefixes_client.go\na:0:0:444\nZ:Q1vM7kyZ1nVUv0sPv2aRvhlk6sQkM=\nR:public_delegated_prefixes_client_example_test.go\na:0:0:444\nZ:Q1rPqn6s2RUUenN+p8Kg93bq5aMtw=\nR:region_autoscalers_client.go\na:0:0:444\nZ:Q15y7EhD9KoMETDaD4Iw933ohnS4Y=\nR:region_autoscalers_client_example_test.go\na:0:0:444\nZ:Q1Z/QEwJwzDaKQse8AA5V28Lb81nc=\nR:region_backend_services_client.go\na:0:0:444\nZ:Q1zEfKdTZhl/SKMcQzEYJJJPwZBHU=\nR:region_backend_services_client_example_test.go\na:0:0:444\nZ:Q1szNJozTYqMC+GWKEmgGiKVER7Tw=\nR:region_commitments_client.go\na:0:0:444\nZ:Q1y1HNY7xfvvhvmhPqMx34vBnqTQs=\nR:region_commitments_client_example_test.go\na:0:0:444\nZ:Q1y59p2tcZGH9X48AmFXD4Cg1Xkbs=\nR:region_disk_types_client.go\na:0:0:444\nZ:Q11H004Oh5UzW/CdFWvfMqkQuW/yU=\nR:region_disk_types_client_example_test.go\na:0:0:444\nZ:Q1fwPXSjNuK+LQ7AmqHEHyust8AgY=\nR:region_disks_client.go\na:0:0:444\nZ:Q1K+g8ivY/moU8IvrssBN+cdVubOg=\nR:region_disks_client_example_test.go\na:0:0:444\nZ:Q1bwC9nSx39MEGzC9Umds9rXNAQ0g=\nR:region_health_check_services_client.go\na:0:0:444\nZ:Q1MI0A0z//EJYS/m5uwcupivHxeAE=\nR:region_health_check_services_client_example_test.go\na:0:0:444\nZ:Q1KcX2XOjgqb8EY9y4l0tR5YoeI6E=\nR:region_health_checks_client.go\na:0:0:444\nZ:Q1LLnQg7WCQd7ia9faVmB0BbQtiMM=\nR:region_health_checks_client_example_test.go\na:0:0:444\nZ:Q14ivX56iiN8F8zhtWyDVvHyMVtxI=\nR:region_instance_group_managers_client.go\na:0:0:444\nZ:Q1Rgo0F13LSdof17rT09uPaT4CriM=\nR:region_instance_group_managers_client_example_test.go\na:0:0:444\nZ:Q17QSnFYN4wnDGQ68nVE5UohgHEcE=\nR:region_instance_groups_client.go\na:0:0:444\nZ:Q1OJSMxgwArY1FxgSkdqnac7VADVE=\nR:region_instance_groups_client_example_test.go\na:0:0:444\nZ:Q19ETuyEn0FL/H6eU1ZoNGJSJqfdw=\nR:region_instances_client.go\na:0:0:444\nZ:Q1FtLvq2JXohlDng2NxX0d++6PJaY=\nR:region_instances_client_example_test.go\na:0:0:444\nZ:Q16ul5KwbnVqTgH33sUNnhw8uicgg=\nR:region_network_endpoint_groups_client.go\na:0:0:444\nZ:Q1zgxNCpOXsLdAqGUVlY1spTuHAxY=\nR:region_network_endpoint_groups_client_example_test.go\na:0:0:444\nZ:Q19NlYfL3KikHawC4gml1+s+CaJ7U=\nR:region_network_firewall_policies_client.go\na:0:0:444\nZ:Q1Mq6Rq3KCj4mFO6OcC0OcWx4qSzo=\nR:region_network_firewall_policies_client_example_test.go\na:0:0:444\nZ:Q1wpaLeEjfNVCq7kB+HaRNF+aJm0Q=\nR:region_notification_endpoints_client.go\na:0:0:444\nZ:Q1n6HgHPpdddSnnD4kvn7OoNTRtBw=\nR:region_notification_endpoints_client_example_test.go\na:0:0:444\nZ:Q1zDwIF7tJbvxyafVV7Z5TCvUgsx8=\nR:region_operations_client.go\na:0:0:444\nZ:Q1PM+IruGxCdYyJ4NbACI2D3IIRY8=\nR:region_operations_client_example_test.go\na:0:0:444\nZ:Q1L/ZeyrE9GSLtjp6ZrQUi570jw+A=\nR:region_security_policies_client.go\na:0:0:444\nZ:Q1WiTuVL+XdYtawE+9zJQtGAbH8MM=\nR:region_security_policies_client_example_test.go\na:0:0:444\nZ:Q1zhInmtkQOZdoOusme32PVmdm3vI=\nR:region_ssl_certificates_client.go\na:0:0:444\nZ:Q10/66LP2nEYD52yahu/B7yKoCoe0=\nR:region_ssl_certificates_client_example_test.go\na:0:0:444\nZ:Q1VGx5I0gMBFgvh0tvkenlFWxB0zc=\nR:region_ssl_policies_client.go\na:0:0:444\nZ:Q1H7K1X+4v27QgPwloqb0zOWu2dV0=\nR:region_ssl_policies_client_example_test.go\na:0:0:444\nZ:Q1QoOBNTQG5+UAv8gZWnT+OU3Y6e0=\nR:region_target_http_proxies_client.go\na:0:0:444\nZ:Q1rv04EMlK+ca5La4P4YdnpWifePI=\nR:region_target_http_proxies_client_example_test.go\na:0:0:444\nZ:Q1pbKqmdz2RiMimR3Ht3v+HF4UdMQ=\nR:region_target_https_proxies_client.go\na:0:0:444\nZ:Q1RPOluzZXn//Z9KQHUaojr1qW77M=\nR:region_target_https_proxies_client_example_test.go\na:0:0:444\nZ:Q1mJmKfllYh1Nyt2M4e/4EbYrk7gM=\nR:region_target_tcp_proxies_client.go\na:0:0:444\nZ:Q19BGpDYU0ywMg5/cdF33a9i8GSTE=\nR:region_target_tcp_proxies_client_example_test.go\na:0:0:444\nZ:Q1uthujDux0NllDtIP17/sviyUBMQ=\nR:region_url_maps_client.go\na:0:0:444\nZ:Q1rWhwBwfNZDJsVYoqsNS9EbHb17k=\nR:region_url_maps_client_example_test.go\na:0:0:444\nZ:Q15Kclo5V8LjePePvEim6kTNr+S6o=\nR:regions_client.go\na:0:0:444\nZ:Q11NfMCt+t6eYKE9/VkPGsjRQwCTM=\nR:regions_client_example_test.go\na:0:0:444\nZ:Q1vsD9z/aSXY7fwOA7GdGrMAi/5kY=\nR:reservations_client.go\na:0:0:444\nZ:Q1eGr70qjOSiFPP5rLfgx2gu3rCmQ=\nR:reservations_client_example_test.go\na:0:0:444\nZ:Q1pYd4CbsVM/dAS8Gop1t0K3bgOwk=\nR:resource_policies_client.go\na:0:0:444\nZ:Q1hweKPHotiCpMkOySyq0lQ/LFsrc=\nR:resource_policies_client_example_test.go\na:0:0:444\nZ:Q13jr/j21yf1jDvdBzr/e3x+E9MJ0=\nR:routers_client.go\na:0:0:444\nZ:Q17NqoCuMLVTt1uSSRq76iZO/yIIY=\nR:routers_client_example_test.go\na:0:0:444\nZ:Q1gtkt0V9N+TqRRL3tFmcsIB1YfpI=\nR:routes_client.go\na:0:0:444\nZ:Q1BjmNX0ssR2q8Jck5HIZz+a01+rI=\nR:routes_client_example_test.go\na:0:0:444\nZ:Q1Rqr07FswjIbTcqAfx7tz+W8wgLw=\nR:security_policies_client.go\na:0:0:444\nZ:Q1dQCzRUUvkUbmC7zIDCWWIgBDKns=\nR:security_policies_client_example_test.go\na:0:0:444\nZ:Q1FNfpKZaewxu0H1ro/7O7ymwffeM=\nR:service_attachments_client.go\na:0:0:444\nZ:Q1F8o6T1+2XSNyA/h0eOyGHOm8dqU=\nR:service_attachments_client_example_test.go\na:0:0:444\nZ:Q1HeyPXuKTEjm6S/wbnRVlLo8I9LI=\nR:smoke_test.go\na:0:0:444\nZ:Q1iTqShN5tOhqSvrWt/jL2KBdyCuU=\nR:snapshots_client.go\na:0:0:444\nZ:Q1c7blHan4bUIBuf2J83OX+Z+Dhhw=\nR:snapshots_client_example_test.go\na:0:0:444\nZ:Q1JFkOuNKGYIwDw6BwMQHP+3lg04g=\nR:ssl_certificates_client.go\na:0:0:444\nZ:Q1lIv3tGgfSnx24GB2LkVRJjtk9/0=\nR:ssl_certificates_client_example_test.go\na:0:0:444\nZ:Q1sN1FYEctExdAEZY1DY2+igAO/QY=\nR:ssl_policies_client.go\na:0:0:444\nZ:Q1X9P68nIOxfG22TSl3qDI0NRZJLs=\nR:ssl_policies_client_example_test.go\na:0:0:444\nZ:Q1KW/Pos0NiYBrvYrO2/c8USMXjEo=\nR:subnetworks_client.go\na:0:0:444\nZ:Q19tI0WTJWtXdtRQU6g6dVS0cE1a8=\nR:subnetworks_client_example_test.go\na:0:0:444\nZ:Q1F8AE/HTnPS8R04k5kWhXSDFQgZg=\nR:target_grpc_proxies_client.go\na:0:0:444\nZ:Q1XwEHobyTvAiI+vhnNoamaNy/74E=\nR:target_grpc_proxies_client_example_test.go\na:0:0:444\nZ:Q1W2GRbq4sPykdKuXa99d5ZtcLZ/0=\nR:target_http_proxies_client.go\na:0:0:444\nZ:Q1iLQrxLrMvM+dW3uw3+c21FeXD7U=\nR:target_http_proxies_client_example_test.go\na:0:0:444\nZ:Q179E9iihw/Ek9DwXS24JGSsr/sSg=\nR:target_https_proxies_client.go\na:0:0:444\nZ:Q1yMkGYFp22NxpusYbB5Ra1gNlw7I=\nR:target_https_proxies_client_example_test.go\na:0:0:444\nZ:Q1wwIWYk3qAKKGu+AFb5MpvfxVu9c=\nR:target_instances_client.go\na:0:0:444\nZ:Q1qlKO9S2+IESCcvuBepUwM/0+AQA=\nR:target_instances_client_example_test.go\na:0:0:444\nZ:Q13o05Mp1P2B+/sQ37bJIxAyN8SfY=\nR:target_pools_client.go\na:0:0:444\nZ:Q10JuoG3TEA1pkjX/EyQurD5HbhWU=\nR:target_pools_client_example_test.go\na:0:0:444\nZ:Q1GywfyFX62oPcldIJ2jmFQpVNQMI=\nR:target_ssl_proxies_client.go\na:0:0:444\nZ:Q1ukCaam8Phojf2ZMBBxQEJ8KXLn4=\nR:target_ssl_proxies_client_example_test.go\na:0:0:444\nZ:Q10Mc5hiLawKPWPqkYKeJ9YgU3zxE=\nR:target_tcp_proxies_client.go\na:0:0:444\nZ:Q1bwASRnv9iUO0jKgBbUj9cGouazw=\nR:target_tcp_proxies_client_example_test.go\na:0:0:444\nZ:Q1O/L6isGxC52b0BICBR3GFVrCYg4=\nR:target_vpn_gateways_client.go\na:0:0:444\nZ:Q17FHA7R+doNrZYXks1rsKZkZVwno=\nR:target_vpn_gateways_client_example_test.go\na:0:0:444\nZ:Q1dZwHQI6uF9LhunuYikunDvXnmTg=\nR:url_maps_client.go\na:0:0:444\nZ:Q1XOrTHFueEB9Sie47y1dXWX0/+yw=\nR:url_maps_client_example_test.go\na:0:0:444\nZ:Q1iHvT5M77GGw8OA1SRGw0XprtluU=\nR:version.go\na:0:0:444\nZ:Q1SkiA432s7aRZp0cQKeWDZC7KuWU=\nR:vpn_gateways_client.go\na:0:0:444\nZ:Q1G/Pp6A4WmDDWJK8pTI1GHay3TOA=\nR:vpn_gateways_client_example_test.go\na:0:0:444\nZ:Q1hbmUc09mPydxEOF0YBfPG4BaGOQ=\nR:vpn_tunnels_client.go\na:0:0:444\nZ:Q1Q4/ZG1wTWMAAUQEok8qqMAt+YjI=\nR:vpn_tunnels_client_example_test.go\na:0:0:444\nZ:Q1X2m8FSyn83dXzYBjq0k9Vw39WhY=\nR:zone_operations_client.go\na:0:0:444\nZ:Q1bhjp/KbvBtn4itTgkl9wq4aGoIM=\nR:zone_operations_client_example_test.go\na:0:0:444\nZ:Q1WNF0b5w1/snI/wkZIJmAWq+E23Q=\nR:zones_client.go\na:0:0:444\nZ:Q10AsZQdX7a3l4mSk8nM1P/VRpH/8=\nR:zones_client_example_test.go\na:0:0:444\nZ:Q1kb+osGVsI5KjFEvPGyq35tYdis4=\nF:root/go/pkg/mod/cloud.google.com/go/compute@v1.10.0/internal\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1sMNRHFKbpqe+ymn4K4zLVHmb3Cs=\nF:root/go/pkg/mod/cloud.google.com/go/compute@v1.10.0/metadata\nM:0:0:555\nR:examples_test.go\na:0:0:444\nZ:Q1L6Jfsh0KkVpCghgENJmsCSa+HrI=\nR:metadata.go\na:0:0:444\nZ:Q1MmU662GaO0KGhUtyMXtBYIeqmRw=\nR:metadata_go113_test.go\na:0:0:444\nZ:Q1UwX8z4jitLGhOkEY/nuRN1ymDMQ=\nR:metadata_test.go\na:0:0:444\nZ:Q1uT2t3jcy+51YaoVGmdVtBGebSvk=\nR:retry.go\na:0:0:444\nZ:Q1LHFRUKmYcU6h+i4oQ8XEKQmhpoQ=\nR:retry_linux.go\na:0:0:444\nZ:Q1+hkKb+ZAZaVgAM/tWsRU6cQt3vQ=\nR:retry_linux_test.go\na:0:0:444\nZ:Q1hLByAs8MHHaQaaOLqW5e8Bnq6HE=\nR:retry_test.go\na:0:0:444\nZ:Q1HlsJeKr+GKSJSth1qnm6fWpBB6c=\nF:root/go/pkg/mod/github.com\nF:root/go/pkg/mod/github.com/!azure\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1qXhNKGGZ2R65ohIQ6KfQhum85dQ=\nR:.gitignore\na:0:0:444\nZ:Q1cHQChC+7iVES04lAEzk0ZtE62tA=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1y2RayKxgWYXiLLlto50S5/VajZ4=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q18ef2uimoV/02pfYD+oc3U6upkX4=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1BWyyRxxI66SyueSMddIdTaLFl6g=\nR:Gopkg.lock\na:0:0:444\nZ:Q1dofzdIf+MvGxGg/QU9D3wBaMU+E=\nR:Gopkg.toml\na:0:0:444\nZ:Q1o4CC1Lc52GEJD8hgm6ojJz9xvjk=\nR:LICENSE.txt\na:0:0:444\nZ:Q1ZGqa0HUHK7QRMqSgos7ru0V92gw=\nR:NOTICE.txt\na:0:0:444\nZ:Q1ixf8sUZQcPV5qhm7Ae/xrtIajBc=\nR:README.md\na:0:0:444\nZ:Q1WKLen/EFYXxVO9q3sFgu9t7JqZc=\nR:SECURITY.md\na:0:0:444\nZ:Q11Ebdf3ID+EmBDWiMZBsSWczhC3E=\nR:SUPPORT.md\na:0:0:444\nZ:Q1BVpTB8X8yGZWZv4rkbJYAMdcO1U=\nR:azure-pipelines.yml\na:0:0:444\nZ:Q1LxDjg+tZIAB3POeYb1ZTxcz0coU=\nR:doc.go\na:0:0:444\nZ:Q1x9CGuUmPRQYL0X2F1GCUDpfe5to=\nR:swagger_to_sdk_config.json\na:0:0:444\nZ:Q1BaVCACKvdQ9MjbpszMTmMaEf39Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1OqrjLKB7LpUyLCrWoWcqqOSNdZ4=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1zJlDXvMALBQINQFJZvYyDUpyWw0=\nR:fabricbot.json\na:0:0:444\nZ:Q1Bvum8JbNALH8DRw090DeR8i4xLI=\nR:sla.yml\na:0:0:444\nZ:Q16emvP8GA7FXZnBGejhrHrOQKv2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:bug_report.md\na:0:0:444\nZ:Q1ZP4MrrpUejzmua0T1ZvDYvmIflU=\nR:feature_request.md\na:0:0:444\nZ:Q15XJUcBje7BI0vH5xVC9IrctbNdI=\nR:service_package_request.md\na:0:0:444\nZ:Q11FUsds7G9IN2BuGUTXUjWUhR9qo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/.vscode\nM:0:0:555\nR:cspell.json\na:0:0:444\nZ:Q1G4+GTWcTAJiO3XuHTAATG8I0KgQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/documentation\nM:0:0:555\nR:MIGRATION_GUIDE.md\na:0:0:444\nZ:Q1Td8/XDRL87iJJMjX9iyIHAVZUDA=\nR:README.md\na:0:0:444\nZ:Q18HtQouMe2OdKvQCMes0ehM6NJJQ=\nR:code-generation.md\na:0:0:444\nZ:Q1ch8/1bN1KIoXwjHEtPY45ZZaa9s=\nR:developer_setup.md\na:0:0:444\nZ:Q1V7T3cUMc+S2iwrNtHX7ICXsAutU=\nR:eng_sys.md\na:0:0:444\nZ:Q1fIbA5ZzF/fo9gjy5RokyvvdjIuU=\nR:new-version-guideline.md\na:0:0:444\nZ:Q1mqn4dusSLFVt2O2QQNK0jxXSqaQ=\nR:new-version-quickstart.md\na:0:0:444\nZ:Q1bzQqf5BeAXADDJX/sSnTh9dlGI8=\nR:previous-versions-quickstart.md\na:0:0:444\nZ:Q1LTkjOkxVjXHYRn07xxSG+lXgC2E=\nR:release.md\na:0:0:444\nZ:Q1QNDK9qz+ENNGvqrvEUJ1vf2WHOo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng\nM:0:0:555\nR:.golangci.yml\na:0:0:444\nZ:Q12XG16htUC7XwiPzHm/1RQoe9RsE=\nR:CHECKENFORCER\na:0:0:444\nZ:Q1FJ292NjjXIvtScXeHPmPX0Fexgk=\nR:codegen_to_sdk_config.json\na:0:0:444\nZ:Q1e6pXKRDmEHeiPBfi9l+rEHV51R8=\nR:config.json\na:0:0:444\nZ:Q1XPr06WR1vykyA21Ch8zoY3wGLx0=\nR:generate_options.json\na:0:0:444\nZ:Q1OzkUpHT74Q8bhE/gw5+3Ybtb+/s=\nR:initScript.sh\na:0:0:444\nZ:Q1yhfcYMCyafYr2f58EevU/Lw97Rw=\nR:swagger_to_sdk_config.json\na:0:0:444\nZ:Q1Zgqw9ktOAITqD090C4RCPCCfKo8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common\nM:0:0:555\nR:InterdependencyGraph.html\na:0:0:444\nZ:Q13D2kGqzTkoBg9Xei+rwJeJU/l/4=\nR:README.md\na:0:0:444\nZ:Q13rJ5skv8ED9ODjO+8YfZx4JdM2g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/TestResources\nM:0:0:555\nR:New-TestResources.cmd\na:0:0:444\nZ:Q1V9KPKmvaRUI0Ifja2ZJXaNS0/PA=\nR:New-TestResources.ps1\na:0:0:444\nZ:Q1ClBcv4wIMUolysw/5jtDeTL+uN8=\nR:New-TestResources.ps1.md\na:0:0:444\nZ:Q1lBQhSVPrPbh98mJesROlWwXdkOk=\nR:README.md\na:0:0:444\nZ:Q18vlGu2iF9/JUHIDP4l4J4lvPNZw=\nR:Remove-TestResources.cmd\na:0:0:444\nZ:Q1V9KPKmvaRUI0Ifja2ZJXaNS0/PA=\nR:Remove-TestResources.ps1\na:0:0:444\nZ:Q1IQUFuXwmYXPPv2EoriCvpfVm1ws=\nR:Remove-TestResources.ps1.md\na:0:0:444\nZ:Q1cwlvSRXA/7bFbNGJnDFFwbx4mlg=\nR:SubConfig-Helpers.ps1\na:0:0:444\nZ:Q1xUTEgrLbdtrPrqaRoeswofIpBng=\nR:Update-TestResources.cmd\na:0:0:444\nZ:Q1V9KPKmvaRUI0Ifja2ZJXaNS0/PA=\nR:Update-TestResources.ps1\na:0:0:444\nZ:Q1gkOrv5Eoj2rhhZXj/sWIyM7P+yQ=\nR:Update-TestResources.ps1.md\na:0:0:444\nZ:Q17b27/9L0icVGoWYokE3BCLiiJrw=\nR:build-test-resource-config.yml\na:0:0:444\nZ:Q1TXtwUGC7x5mO2IGxJhwat0tAky0=\nR:deploy-test-resources.yml\na:0:0:444\nZ:Q1J6pc92l1ZuaBk7nPCz3ZI90BUVs=\nR:remove-test-resources.yml\na:0:0:444\nZ:Q1jh/uIrD0BbTRFY/tlgLk9znPOgw=\nR:setup-environments.yml\na:0:0:444\nZ:Q1z50bP2hzT45amIQ6r3RgqPPACaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/TestResources/clouds\nM:0:0:555\nR:AzureChinaCloud.json\na:0:0:444\nZ:Q1Cr+FW1tgpEPBEZ7X0rUWToYz0Tc=\nR:AzureCloud.json\na:0:0:444\nZ:Q1aSqaID9+nXpl8LbJia82OE2t1Ks=\nR:AzureUSGovernment.json\na:0:0:444\nZ:Q1Y2RGjm/3mrzRGXtyFmtDFXmAEj0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration\nM:0:0:555\nR:Generate-DocIndex.ps1\na:0:0:444\nZ:Q1X3jzvq6lYJSLt68iYlmRj1JX8SQ=\nR:docfx.json\na:0:0:444\nZ:Q110Nx7aqDlSbZz3tj5XhjHHKfYAM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration/assets\nM:0:0:555\nR:logo.svg\na:0:0:444\nZ:Q1YwtL2GJruW2FNnhOYEkOimqJfpA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration/templates\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration/templates/matthews\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration/templates/matthews/partials\nM:0:0:555\nR:affix.tmpl.partial\na:0:0:444\nZ:Q1yD1uifabG8J2sIIG/7aPHj3o4+c=\nR:class.header.tmpl.partial\na:0:0:444\nZ:Q1cA24g0v1E01nveqHT5XQuiolmwU=\nR:class.tmpl.partial\na:0:0:444\nZ:Q1x5VcRCq8JEpQBlCoxPc8rsLsKAg=\nR:enum.tmpl.partial\na:0:0:444\nZ:Q1xWIl0H0fbSHZt2OP8tQJVFKMo28=\nR:head.tmpl.partial\na:0:0:444\nZ:Q17PxXqxM0T7TCxKCg4IVioTTCvxo=\nR:namespace.tmpl.partial\na:0:0:444\nZ:Q1qBFutSRjMZQIvQwpR98FEZODdJM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/docgeneration/templates/matthews/styles\nM:0:0:555\nR:main.css\na:0:0:444\nZ:Q1uYKbiwDxQfP+OqHjmPXnU5GdjEQ=\nR:main.js\na:0:0:444\nZ:Q1yAIltRQDEwFE6IK7TqlqttJ3CYI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/pipelines\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/pipelines/templates\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/pipelines/templates/jobs\nM:0:0:555\nR:archetype-sdk-tests-generate.yml\na:0:0:444\nZ:Q1X2GNx0kE6uQiA8oe/S+LMJ6FYmo=\nR:docindex.yml\na:0:0:444\nZ:Q1B8H8OgCqlSAniYVpe08PwnFAa1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/pipelines/templates/steps\nM:0:0:555\nR:bypass-local-dns.yml\na:0:0:444\nZ:Q1Hyi9JZDvByMxx9DH4RL5IDPOzBE=\nR:cache-ps-modules.yml\na:0:0:444\nZ:Q1h5h4RgxWBEsu5Vqn7Ot0sprTXRQ=\nR:check-spelling.yml\na:0:0:444\nZ:Q1zpN93mFs4acNckrTa/cKGJFUkto=\nR:cosmos-emulator.yml\na:0:0:444\nZ:Q19sdmtbok9d7OOkIeqtAAzZOI45M=\nR:create-apireview.yml\na:0:0:444\nZ:Q1unGUZFQknizwpKsEdBenUoaVZuw=\nR:create-pull-request.yml\na:0:0:444\nZ:Q1k7Y9R/k1o6Z8g7BaNzBLs/LDifU=\nR:create-tags-and-git-release.yml\na:0:0:444\nZ:Q1Bjaff5/mK6VsQY90udJThGPSG6Q=\nR:credscan.yml\na:0:0:444\nZ:Q1489gYp9TumaRFtK7jN8dRnFNMsY=\nR:daily-dev-build-variable.yml\na:0:0:444\nZ:Q1brPg8Jl12t9U8PKrgcVmetijfXM=\nR:detect-api-changes.yml\na:0:0:444\nZ:Q1l8huOCB5Gb2tuaRV4WGya5XhvBk=\nR:devops-variables-clear.yml\na:0:0:444\nZ:Q1FX0yY5Iv81V9WEgkGqY0dlNkKSM=\nR:devops-variables-set.yml\na:0:0:444\nZ:Q14tySf72D8vDCVgwgjuPItg6kPs8=\nR:docker-pull-image.yml\na:0:0:444\nZ:Q1zKwayn0/1+we6slDMeoznXcv0uE=\nR:docs-metadata-release.yml\na:0:0:444\nZ:Q1DeuqNMe0JWCViZbYkX//55ObyOg=\nR:enable-long-path-support.yml\na:0:0:444\nZ:Q1z4wV72eQg8zr90xFy7lo4m/jg/c=\nR:eng-common-workflow-enforcer.yml\na:0:0:444\nZ:Q1D0trV+Mf07Hfn1I5ojGDJ+nR1PM=\nR:git-push-changes.yml\na:0:0:444\nZ:Q1TbAlqcOIyjhyBecEzYyR7j0I9vM=\nR:install-pipeline-generation.yml\na:0:0:444\nZ:Q11avoGfM3h7rwWiCk0ob98tha2cU=\nR:mashup-doc-index.yml\na:0:0:444\nZ:Q1xGgpDOiezWBXcsK8uqBnd0uAssE=\nR:policheck.yml\na:0:0:444\nZ:Q1u2kA12yHzr8jvvbOmaB8Oe+fPog=\nR:prepare-pipelines.yml\na:0:0:444\nZ:Q1bMWijYAx6QJ+axABn/S5FXMvrnw=\nR:publish-artifact.yml\na:0:0:444\nZ:Q1dHeWQJ3jJ1fPMPAS2GD0lkdpm1U=\nR:publish-blobs.yml\na:0:0:444\nZ:Q1G7QvJMZeT79C/ZRBEZTyO83jBD8=\nR:replace-relative-links.yml\na:0:0:444\nZ:Q1m7zCuS78G5NDBsb1K6a3CPT/h0g=\nR:retain-run.yml\na:0:0:444\nZ:Q19QEBAb7jdJoh3wXLukfCW9qxHUk=\nR:set-daily-docs-branch-name.yml\na:0:0:444\nZ:Q1+jC8Wxr3ELS992Lq1BHcOdZ6+B4=\nR:set-default-branch.yml\na:0:0:444\nZ:Q1iBKhx7NUzJ6DwXw5aUknBbZ/NGU=\nR:set-test-pipeline-version.yml\na:0:0:444\nZ:Q1eCV3b8p8ExqdR9xeBTSWWIdAgo8=\nR:sparse-checkout.yml\na:0:0:444\nZ:Q1b1+k8z05WK5tLp025xXE6LZmnLM=\nR:update-docsms-metadata.yml\na:0:0:444\nZ:Q1mFv4hQFHG02Amdt0cr1XBfkPkRQ=\nR:verify-agent-os.yml\na:0:0:444\nZ:Q1h9ijzjH92uRz+F3exvPkAveUR/0=\nR:verify-changelog.yml\na:0:0:444\nZ:Q1CL6t2KDWgp06I3SI9r7SzXGYSnE=\nR:verify-links.yml\na:0:0:444\nZ:Q1qG2TqzXcGWIwYH6OHkI6WQhA6Hk=\nR:verify-path-length.yml\na:0:0:444\nZ:Q1ZEH+djr9GC3raxbGJ0JB7zY3G3U=\nR:verify-readme.yml\na:0:0:444\nZ:Q1txtPIdhPH9UQsYfrtqgM8CKL8Lc=\nR:verify-samples.yml\na:0:0:444\nZ:Q1BII8rjv+fqmFNG01sVG0MSeGVhc=\nR:write-filesystemmetrics.yml\na:0:0:444\nZ:Q1MBiXpy64Ei1Kt4jj4QsauEVSORQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts\nM:0:0:555\nR:Add-IssueComment.ps1\na:0:0:444\nZ:Q1QgHuRWkwkQGG5gYHqazNSSIUGFk=\nR:Add-IssueLabels.ps1\na:0:0:444\nZ:Q1GJovVLO7lly3qnuBcUowXzfh2NQ=\nR:Add-RetentionLease.ps1\na:0:0:444\nZ:Q16FyR8bWAm9e/Ao16gUkjDuG5Cik=\nR:ChangeLog-Operations.ps1\na:0:0:444\nZ:Q1nQbsQBsnIzIzy+VTQiD53eGIKqw=\nR:Cosmos-Emulator.ps1\na:0:0:444\nZ:Q1AmZCApqiDmSrIvLhqtfJYdgQWW4=\nR:Create-APIReview.ps1\na:0:0:444\nZ:Q1JTiq0uz/8tliijEo9I5+jXV1pJ8=\nR:Delete-RemoteBranches.ps1\na:0:0:444\nZ:Q1P4l9+Grtipm6U7ItsS7Jc9/iNtk=\nR:Delete-RemoteTag.ps1\na:0:0:444\nZ:Q1uQ4nSyvELPJYoywUQzRUqhdbXR0=\nR:Detect-Api-Changes.ps1\na:0:0:444\nZ:Q12wQr50RruQo4JrpMsGkQ87ZXsBI=\nR:Get-AADIdentityFromGithubUser.ps1\na:0:0:444\nZ:Q17hhDs3rj8o6gzhK8uSqXSQsueZQ=\nR:Get-PullRequestCreator.ps1\na:0:0:444\nZ:Q1Tz5hWWiTfoldo3PJzbURLgo2MZ0=\nR:Import-AzModules.ps1\na:0:0:444\nZ:Q1x4uFEahOumVDbN0vh0KaucRHgSE=\nR:Invoke-DevOpsAPI.ps1\na:0:0:444\nZ:Q15MqndY3GNGRdljBIKoFlw61YuR0=\nR:Invoke-GitHubAPI.ps1\na:0:0:444\nZ:Q19W0fWJLVwsWF7/n1o+Kn2xJJ/w8=\nR:New-ReleaseAsset.ps1\na:0:0:444\nZ:Q1NvTDq0rQGV88Petmut0ex71s6Zg=\nR:Package-Properties.ps1\na:0:0:444\nZ:Q1y0xq6BA8Tlwrxk+zSOqiCiR/iVM=\nR:Prepare-Release.ps1\na:0:0:444\nZ:Q1Nh1ZcafksCSG4Bx3xZM8OF1foyg=\nR:Queue-Pipeline.ps1\na:0:0:444\nZ:Q1O5vAvSGh9hVPS1Yrv/0HHg6KRrA=\nR:Save-Package-Properties.ps1\na:0:0:444\nZ:Q1ahZt6hipKG1W96GKTU84opFaWN4=\nR:SemVer.ps1\na:0:0:444\nZ:Q1TKZD5gPt5Z4Bh8IH4uYlsmpCtak=\nR:SetTestPipelineVersion.ps1\na:0:0:444\nZ:Q1cHg0UpJ//5iLe2kqJly1mvm53+A=\nR:Submit-PullRequest.ps1\na:0:0:444\nZ:Q19xNw7uEpjOWnt+arIjoR/oCt+aQ=\nR:Test-SampleMetadata.ps1\na:0:0:444\nZ:Q12YVryQNW/MNbM6rd4lm9E5KFoAM=\nR:Update-ChangeLog.ps1\na:0:0:444\nZ:Q1NV5mWvKFXQ+CJcGV6UBTYwEoExA=\nR:Update-DevOps-Release-WorkItem.ps1\na:0:0:444\nZ:Q14hBtfUNKJgKZ7sawyyj7QheVqf4=\nR:Update-DocsMsMetadata.ps1\na:0:0:444\nZ:Q1829pV/nQUfWBeCWClBp3eDw85GM=\nR:Update-DocsMsPackages.ps1\na:0:0:444\nZ:Q15PvPrxTP9XgKdoA7aUiXagy7Ol4=\nR:Update-DocsMsToc.ps1\na:0:0:444\nZ:Q1iKOQObvXzBEFFWBScKHvhoyxahk=\nR:Verify-AgentOS.ps1\na:0:0:444\nZ:Q1F7rQ+U7ZDceaHq/KvNOkdy01Pt8=\nR:Verify-ChangeLog.ps1\na:0:0:444\nZ:Q17/ck/CtIf2urLMUKJzMG2zgScm8=\nR:Verify-Links.ps1\na:0:0:444\nZ:Q1j0aX5r86WN9sm3HsChEBf43qg6o=\nR:Verify-Readme.ps1\na:0:0:444\nZ:Q1h9Xfowq8bHVbTtt2Vu5C48Xvo44=\nR:Verify-Resource-Ref.ps1\na:0:0:444\nZ:Q1sCF8PCikVKgbr3cKiMbvydaGYAk=\nR:Write-FileSystemMetrics.ps1\na:0:0:444\nZ:Q1DuJmDXIsBQRtlEjVUDVtU58j2MU=\nR:artifact-metadata-parsing.ps1\na:0:0:444\nZ:Q1tI0XzflDmreWc8GRLP9XpDD9P+I=\nR:check-spelling-in-changed-files.ps1\na:0:0:444\nZ:Q1SX1QQjvz+qNh2ogwDxElILaaI4U=\nR:common.ps1\na:0:0:444\nZ:Q1ZaFWtfPtD2dAuE7lQEfgoSBWR+U=\nR:copy-docs-to-blobstorage.ps1\na:0:0:444\nZ:Q14HuAZQFwxutXrdIxLPY8aNI9yGo=\nR:copy-from-blobstorage.ps1\na:0:0:444\nZ:Q1iYJxFYHsA/wXJ3s7L09X8u936nM=\nR:create-tags-and-git-release.ps1\na:0:0:444\nZ:Q1/tlvf4KAIwiAvkn/utDTWi5Rabw=\nR:get-changedfiles.ps1\na:0:0:444\nZ:Q15q3etypKPttl8cz63A1/q/fDlto=\nR:get-codeowners.ps1\na:0:0:444\nZ:Q1XUSUnXsPXrUFaG1ZkwyLQjMY7pE=\nR:get-markdown-files-from-changed-files.ps1\na:0:0:444\nZ:Q1/nuHGRh+6fHTOP9xCgMnkz+/OTo=\nR:git-branch-push.ps1\na:0:0:444\nZ:Q1Z1Wga95NvaD52QbhCUYGnkBChXo=\nR:logging.ps1\na:0:0:444\nZ:Q1zKgcPZPXIIytIDV3IU1gba5P76o=\nR:trust-proxy-certificate.ps1\na:0:0:444\nZ:Q1PSgg5bSLnaYGUZgPrVOhsrZ+Qqs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts/Helpers\nM:0:0:555\nR:ApiView-Helpers.ps1\na:0:0:444\nZ:Q1wvN+hZYJ+bnspuWEDQouUvpiYVg=\nR:DevOps-WorkItem-Helpers.ps1\na:0:0:444\nZ:Q1HlgzEMXduVK81xjBFkdw4L4pusE=\nR:Metadata-Helpers.ps1\na:0:0:444\nZ:Q11515d88Ra6LJWBlwLZu2OQcHgzM=\nR:PSModule-Helpers.ps1\na:0:0:444\nZ:Q1JPPUqqvvMzBEFg6GaWicrPPe+Io=\nR:Resource-Helpers.ps1\na:0:0:444\nZ:Q1E0uiBGRWEK3Q+D9WifhBht4R3VI=\nR:git-helpers.ps1\na:0:0:444\nZ:Q12OV8PZvs3j/afWsm8dMLh2MOdik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts/job-matrix\nM:0:0:555\nR:Create-JobMatrix.ps1\na:0:0:444\nZ:Q162xID1hyfzYXlDg50SYB7//ZDHM=\nR:README.md\na:0:0:444\nZ:Q17G2j6kIWWI4IB4JknrMUCdUCMxE=\nR:job-matrix-functions.ps1\na:0:0:444\nZ:Q1JJ9yeX5/ue2indRhw/CccQMsAas=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts/job-matrix/samples\nM:0:0:555\nR:matrix-job-sample.yml\na:0:0:444\nZ:Q1R5QUCjmnDJ/BghFb7rSIdboIcdQ=\nR:matrix-test.yml\na:0:0:444\nZ:Q1T3o+gHmqx7gBIZ4HbQL3jiTNTlc=\nR:matrix.json\na:0:0:444\nZ:Q1JQ6NAsqRoMOb/7MdrB8PKRd0UwI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts/job-matrix/tests\nM:0:0:555\nR:job-matrix-functions.filter.tests.ps1\na:0:0:444\nZ:Q1BkpJZ7kgoSbJpW8HR9JuZCN0/NU=\nR:job-matrix-functions.modification.tests.ps1\na:0:0:444\nZ:Q1xSqIL4NDFzWbpqIWcVV/+nwxtBE=\nR:job-matrix-functions.tests.ps1\na:0:0:444\nZ:Q16LQSxLuHNP0CZCJ5ausvmCHxmuQ=\nR:test-import-matrix.json\na:0:0:444\nZ:Q16jsGt678TDK2tzuSUCyvlIRAgu0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/scripts/stress-testing\nM:0:0:555\nR:deploy-stress-tests.ps1\na:0:0:444\nZ:Q1H+CShEBv9s0IQNuFESLguV9LTho=\nR:find-all-stress-packages.ps1\na:0:0:444\nZ:Q1OKbDnGjPrJlgC3G9NE/H/NX/c8M=\nR:stress-test-deployment-lib.ps1\na:0:0:444\nZ:Q1qkcIoXgpGfmzbHd6/HWkTJcHzmc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/spelling\nM:0:0:555\nR:Invoke-Cspell.ps1\na:0:0:444\nZ:Q1ql9SHA4b+5R3Q/NYqTkZ1tKj6SY=\nR:package-lock.json\na:0:0:444\nZ:Q1dbg7TK05iBH2teLF2rhabs5u1/o=\nR:package.json\na:0:0:444\nZ:Q12nB0yGp8Gu3GDhO3JGvuhh2cB4I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/common/testproxy\nM:0:0:555\nR:apply-dev-cert.sh\na:0:0:444\nZ:Q1WpqAPakNhqkvEpLfkOe1q/m387U=\nR:docker-start-proxy.ps1\na:0:0:444\nZ:Q1c8m4gZpS9enJDVTpLFuB9YFlfUY=\nR:dotnet-devcert.crt\na:0:0:444\nZ:Q1AVAhjw8w/msqrk5GS0VwInaDhSw=\nR:dotnet-devcert.pfx\na:0:0:444\nZ:Q1DArP03jlsXrGp+c3YMRX502wKtM=\nR:localhost.conf\na:0:0:444\nZ:Q1K5yWUqb2AC7ExoWNJ42A04sPq7c=\nR:target_version.txt\na:0:0:444\nZ:Q1QoSb+VPT+nl6KEW5dxiYi421Rjo=\nR:test-proxy-docker.yml\na:0:0:444\nZ:Q1Ksi+EViz019xJLHE7zGF3R8ooro=\nR:test-proxy-tool.yml\na:0:0:444\nZ:Q1o93bgt3XbKDpPVmY7jxx6X+kONs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines\nM:0:0:555\nR:prepare-pipelines.yml\na:0:0:444\nZ:Q1N2d2JqEIuHNxXVeSdufjZPrL5oA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines/templates\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines/templates/jobs\nM:0:0:555\nR:archetype-go-release.yml\na:0:0:444\nZ:Q1mZ0KxM2FnO3E2GDZOhF8I1DFI8U=\nR:archetype-sdk-client-samples.yml\na:0:0:444\nZ:Q16A61uIaRcyEDVzeoz6hmfSTq6v4=\nR:archetype-sdk-client.yml\na:0:0:444\nZ:Q1YglkYmntptBpbOLb87XTd4z9KUc=\nR:live.tests.yml\na:0:0:444\nZ:Q1KE6jYG59x9yXgag6vcpyn6LS9aU=\nR:mgmt-mock-test.yml\na:0:0:444\nZ:Q18uVoPpelmyd6cKg6ucZBZnXSwd8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines/templates/stages\nM:0:0:555\nR:platform-matrix.json\na:0:0:444\nZ:Q1dOZWBI+2eOiWmVxNhpAfFUsZZfk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines/templates/steps\nM:0:0:555\nR:analyze.yml\na:0:0:444\nZ:Q1H4QH/IYYI3PwL4NWzfWw4nCKXuA=\nR:build-test.yml\na:0:0:444\nZ:Q1D5fIo6lDGi3TSaQ+1DB3xStYRp0=\nR:create-go-workspace.yml\na:0:0:444\nZ:Q17JpkViZB0Nzb2Y1a6LQ+G68Qqdg=\nR:install-go-prerelease.yml\na:0:0:444\nZ:Q1/M0CX86AvwrqxhF9Y8SciqsTmys=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/pipelines/templates/variables\nM:0:0:555\nR:globals.yml\na:0:0:444\nZ:Q1U4kvfy+ZKwa7UlcRSiM0ujpH0Ks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/scripts\nM:0:0:555\nR:Build_Perf.ps1\na:0:0:444\nZ:Q1maebufJ5kGkCKjdMF+jxosQkhYQ=\nR:Create-ApiReview.ps1\na:0:0:444\nZ:Q1T3cLx1yCoZx9WxLBKhfYe0ty9eE=\nR:Invoke-DependencyCheck.ps1\na:0:0:444\nZ:Q1jDosrTKl9vXTezoABgJBz9EQIg4=\nR:Invoke-MgmtMockTest.ps1\na:0:0:444\nZ:Q1rldFV0/54AicH3DiWZOaZ3Gj0Ao=\nR:Invoke-MgmtTestgen.ps1\na:0:0:444\nZ:Q1YW+gvEiTMEZ1ej5p+xqc28jeJqk=\nR:Language-Settings.ps1\na:0:0:444\nZ:Q1kfvpHCrPDlWRA9fR9pqfTKk0Rdg=\nR:MgmtTestLib.ps1\na:0:0:444\nZ:Q1r4Yvzr0Yxzd5E+NL8uNuaCBUGUw=\nR:Smoke_Tests_Nightly.ps1\na:0:0:444\nZ:Q1BtHMQ1ykl+pD81h4PSzVAg7l7h4=\nR:Smoke_Tests_Release.ps1\na:0:0:444\nZ:Q1FcG/6Uog1Z2Ggw8ec2LhlctprYo=\nR:Update-ModuleVersion.ps1\na:0:0:444\nZ:Q1b2xO3ZpT7d6So6lkBg/m2SEt4FA=\nR:Verify-NeedToRelease.ps1\na:0:0:444\nZ:Q1JbNUg+yXhvcHPAfTncjvSX2Pzoc=\nR:automation_init.sh\na:0:0:444\nZ:Q15KCanXpuwD+Ax50+7ksjxxjUytc=\nR:build.ps1\na:0:0:444\nZ:Q1/mtkxs8UAWR2IPwVi+mMotOkWfc=\nR:create_go_workspace.ps1\na:0:0:444\nZ:Q1mgJS4jkJ4pLIP65RVcW/3ootD0I=\nR:get_module_dirs.ps1\na:0:0:444\nZ:Q1dMhAkKMZhGBclHTAaKqN4+9jsr8=\nR:run_tests.ps1\na:0:0:444\nZ:Q1FvlGehLWwbVpdYMgwjFhHhmB1kI=\nR:validate_go_mod.ps1\na:0:0:444\nZ:Q1/1Ompx9ddH8oJEhJBt9uR/3KDxE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/eng/scripts/automation\nM:0:0:555\nR:Invoke-MockTest.ps1\na:0:0:444\nZ:Q1qiDqHXq1+s70z8N18vuLgaTA9BA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1XS0T9oTQ7zEvgCE8mf+jZiHwboM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09\nM:0:0:555\nR:definition.json\na:0:0:444\nZ:Q1ZbeIfb73jbRiP44mt2XHM35bBKQ=\nR:generate.go\na:0:0:444\nZ:Q1f7+bfVMW2oon+P55YbNAxPdu26A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T+0DFxGpqLhsLNpqKNySji51nJk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qtVgDmbGDnGSfA16T/90LEn/0W8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Bdl8FAYTa8Zj6p9OXT0pFE8umQo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jKpWpw40me4JGAO3irZfbmrbaL0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14fgw+CnsP2D2zFt5Wc0SXkgW4t4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IdC1WN6DEqq+Zy5OGD6NJgyp0Hk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xYtcEoqp4ug0ek0Fpd/znYBweNY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/features\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EH+QF7IH3FdFiwk7k2nhWO1LFi8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/features/featuresapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gbN0qs/bEteHtjgES4WrqEYsGG0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/links\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OkAuZ4AggwvCGJMRgyMsvbwD1Z4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/links/linksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZpIudH08cunCzFxU2Iqj1xAK/h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lNpmOjh7x/YfKzv1GHh0fnhaRfc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17VnLF6AStQauTMc/0fP5XXXvp/I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1i2msfwBW9rc5bP6yL86XgFVj8/s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bw1huu9uPcLONenjlPQYXMzB1Gc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Q4VxwrGIlIgp5swLK4CxKdHqC4A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OYZdtN2TKuQvUgqw5dBpZppbja8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1npzqZYWquOKJ4JfggtwZ/NYdomg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+Lk50TMPB22WX6NzoNWlxO48u8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1edEA+WQCWMfRImRXk/ywSVZP+xw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2017-03-09/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1O4/rHJ2a76JSJsvQq7f9T7PH2cw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01\nM:0:0:555\nR:definition.json\na:0:0:444\nZ:Q1XEWc4o3009oot0jzJyLExMyEcdo=\nR:generate.go\na:0:0:444\nZ:Q1SWO3UBuZm9wx9eyGQfhvGMsMM/k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1U7cM9Z67griS+GppumIMr3G0QVQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oVRAm9EkR6uXvbyV21tXBIHPKTU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11/p/9BuG6p9ETbwUL+/wCTsJrYs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1m8lKxyE9mhFpV25sE48rLO8GQuY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MnhhPpW1Vvtv8WRQ06m0fFs2u1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10gxvpR68sJswglbHiD103B4q5Iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JcMiLoiAQEggT/TM5vDdYjq2ARc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1w0jZN2H0ek7QGKKlkIyfaCgZj80=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14fgw+CnsP2D2zFt5Wc0SXkgW4t4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GWGy62zOJgEGcfKsAfNFcT8HW3Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VTnwcozvUf+6/p8Q/dnsrUZhuj8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/links\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j8RlMw0Lbxuskdk1kEXzp0nB85Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/links/linksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZpIudH08cunCzFxU2Iqj1xAK/h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1szNRiYlQMi3EctFRUMqmvkoaoWE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A3dWPJwNNWmWO9wWEcc7L/1xd7M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ysaj0hiQSqyQ+iJadvNt4DnFuug=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XRQrlKBj8Cmvy1C7OgC9T0BBl9E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1981V2WuBrCQlJjxW71xQbXJL8lw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A7azLsqTO0CoXdDzlv5c5+/6/ZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kjhM/hB21qJSrNg8byhJNhW9DWs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+Lk50TMPB22WX6NzoNWlxO48u8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PpAxfcQpWy4YRJWHu4B8FLNTIBQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1O4/rHJ2a76JSJsvQq7f9T7PH2cw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GvWLpxzVLGjBH/J0r1cT4PRfCKc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2018-03-01/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bqi0X6isCXfN8G+bnsLkSGPXRKY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01\nM:0:0:555\nR:definition.json\na:0:0:444\nZ:Q1CfLKq90KW44mUZ2cBufzSoSBUa8=\nR:generate.go\na:0:0:444\nZ:Q1slRJRFBMUu09fL9DpCDsKAsINK4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WosCFNKXUowd0jV7Mjr9lAhKE7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oVRAm9EkR6uXvbyV21tXBIHPKTU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dw/hkT0/IOhs9Wbyfbsx213NJcQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ic0JEld1iNTODFe7nD+3S9ALDEg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OSsOjrm+yNQPmKOD3enK8VXpDd4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10gxvpR68sJswglbHiD103B4q5Iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FEE6TRpBOTIANT6K3WlrZ53+MDk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16BIdXeVz3KsESnyNA4+HxL4emcY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14fgw+CnsP2D2zFt5Wc0SXkgW4t4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PFp/GgZypa32YcCdPn+wtfaWqMc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VTnwcozvUf+6/p8Q/dnsrUZhuj8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FfQgW4V/9RH2OPHfDk0aZi52scM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q158AuxygYnPhK0NG9vxTVg3mKzyw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/links\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CR71Jku+hmafIrjnBsCVG0/wCCA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/links/linksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZpIudH08cunCzFxU2Iqj1xAK/h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1anE5lLWDEd6Uj3l2mlQDb1j/Qeo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A3dWPJwNNWmWO9wWEcc7L/1xd7M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lDdr9RgvqfFBU8ctAWUCcuZzEEw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XRQrlKBj8Cmvy1C7OgC9T0BBl9E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OmaYEP57Uu78mO5nPxxYqz340wM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ra8DK6HbbnyzCjyT9JqQOwdSVMk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Gn10DvRi2vBhO4IAflooIXQUus0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+Lk50TMPB22WX6NzoNWlxO48u8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1q7CaR7D8wkC6bShZIzAJvwmO0/k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/5gP6TAJnsgdx4UycEv+I/8S2j0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yKD9eMnziPyK+g+yLROmukLt07s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2019-03-01/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11xHWVXsk0Vh7u219B5g5WtjDuLc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01\nM:0:0:555\nR:definition.json\na:0:0:444\nZ:Q11yMT5W/skQpFpwezASlLQtJlMLk=\nR:generate.go\na:0:0:444\nZ:Q1lxDwHOwuAaLp+lzAR7GIvX2Ttw4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZwJCiEIStvaI4xAxwyfOesKjxdQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oVRAm9EkR6uXvbyV21tXBIHPKTU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/commerce\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/commerce/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/commerce/mgmt/commerce\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pk9NrHtFTMgnJ4Kj6SF0DhbVWwg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/commerce/mgmt/commerce/commerceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hBsH6ar8Ah11ET3uqnUEWhUvlt0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/compute/mgmt/compute\nM:0:0:555\nR:availabilitysets.go\na:0:0:444\nZ:Q1RwNgQHraWcu+8YCNvlUJqzg5tOw=\nR:client.go\na:0:0:444\nZ:Q1dURl/D/rVzDtm8CmSRY6IttsX9o=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1mAKsBVKVzL+kI71MoEO/eil4lx8=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1FAvp+h4iMloEGKDPfb/sbxQhyto=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1xnu/3XI2/XTk8+Jzy3kEHk1r2Io=\nR:disks.go\na:0:0:444\nZ:Q1rH3fCIQBLDE8JYKnZ0qzHiX7LKU=\nR:enums.go\na:0:0:444\nZ:Q158ovBoqc5sH6GyaMPJqZI67kHWA=\nR:images.go\na:0:0:444\nZ:Q1MfMsjC0a/a4ADeLUPOtTNRntsdA=\nR:loganalytics.go\na:0:0:444\nZ:Q1FKUYSTCsgsL2aO5/R3GVvcPVdRE=\nR:models.go\na:0:0:444\nZ:Q18PcJdOMSHDGtHTsQb8rMOG8LtQ0=\nR:operations.go\na:0:0:444\nZ:Q1oa5o3gi8n8gcEv6XPyIXu0vhquE=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qvTKnHwvp+cFQY/DYYFVdpDWsc8=\nR:snapshots.go\na:0:0:444\nZ:Q1FCy1gsX5U3pPoJZl0UQK2b6Ypp4=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1o1aVpe/muOlT8TT+JZNYg7iKvck=\nR:usage.go\na:0:0:444\nZ:Q13rDdqSJ+ENPd2X0P82MzMdXU8ds=\nR:version.go\na:0:0:444\nZ:Q1vEsho6fQe+0b4MiyFSQqq2GQ2Fg=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q14CelNL4+sG0PE8ui264HTMF/cEU=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1NpF7aaX26em22cJELvem1Pptye0=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Em6hWjR6A2MW8/xK0Q0TeXJIf5k=\nR:virtualmachines.go\na:0:0:444\nZ:Q1YgH9WVyUoOfR2lKWAfMd//wZTcY=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1FRMLDQ2aJgQB5CUqPEvxLxtviN4=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1K+mOVMznQYcX3bQMXpxQ5aTsweU=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q16/TbPBn/smgoYHE7qF4DOChCC/0=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q15lsouhNUSIJOcTfzRFivRw+xrf0=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1EGrfEgIQFLGeKvdu4g5WOvAWaGQ=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ntp/HqoLlJ0gfgq5WcMUIrocqks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/compute/mgmt/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18mDvjZssHucXItsFk9Xzu3z+UcE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/databoxedge\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/databoxedge/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/databoxedge/mgmt/databoxedge\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uT8mF9Lbj8l5JFfR6QjRBWvMB54=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/databoxedge/mgmt/databoxedge/databoxedgeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Rt3I6ik+RMqp1Q/lI8a5b6qiy5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wyiNaq5GNneJ5tpus91/ybM/kqc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10gxvpR68sJswglbHiD103B4q5Iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/iothub/mgmt/devices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1J7M68rBteob/g++O6oGRVvCGE5w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/iothub/mgmt/devices/devicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nxRG7+y7r2WwElj6PZI1jIh9GHs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W5QfgrZiQAeYOhaewaHcgMuyWpA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DBcVIO46HnVKuMnYZURLOlXzdso=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CJfFSb59ksyTVkiPeolzqUnm+b4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/monitor/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zeDGGgi6LVTFYigrvfPISv6fUhQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/monitor/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LL1zHig78iQPZFktTLvWj4vgTUI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16UY2hYVyu5vsBNgaVBwUDZi1tJY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pQQAF2PRK2ZxPaZsXvzmcixYqS4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1l2+RfDi5WWwSNGXo+KExbC1ieA0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A3dWPJwNNWmWO9wWEcc7L/1xd7M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19SpAXLQqTPNeVJ+sKg77WzTbHkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XRQrlKBj8Cmvy1C7OgC9T0BBl9E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rFeBPdr0PviKePMirz2prwIL1M0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ra8DK6HbbnyzCjyT9JqQOwdSVMk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12JZ2dhEWuJxX4TuXB7sU3q4l8OQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19UZSwnwHGFXHqvYN09rWVW4xvKY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sEIQ2f/NRlpEO6LSKILu6lJhRks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/5gP6TAJnsgdx4UycEv+I/8S2j0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XDYSh7If2y/XE2Q/oeQOoKDEK3E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/2020-09-01/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11xHWVXsk0Vh7u219B5g5WtjDuLc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1YQx5kwOcvB+N/aQxb27vGvKgdGc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/aad\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/aad/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/aad/mgmt/aad\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zPnLEVnNACw4BaxUuqrqlp0vKQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/aad/mgmt/aad/aadapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nHsn1eHt+Y2CErfixJ9Qw7iMpZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/adhybridhealthservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/adhybridhealthservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/adhybridhealthservice/mgmt/adhybridhealthservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HsyfTWAPuTAhsohEtAaREUyOXak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/adhybridhealthservice/mgmt/adhybridhealthservice/adhybridhealthserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1F/YCAP4ra/xSWWRE8gXy1r9ZGto=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/advisor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/advisor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/advisor/mgmt/advisor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GCH3zja4bAkut5uyOJoz6dcU9r4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/advisor/mgmt/advisor/advisorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MCC1yAsi7i8PeaP+z5YKBASR8FE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/alertsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/alertsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/alertsmanagement/mgmt/alertsmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WkYyfFSWZebyE+3YMoix4sP3jok=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/alertsmanagement/mgmt/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18eSC+GuqaO2FeL5lwTWCQIhg7j0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/analysisservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/analysisservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/analysisservices/mgmt/analysisservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GQgOyl86CDFue7+/hkV6oLFvdNE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/analysisservices/mgmt/analysisservices/analysisservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GAaTkNL3NlB16S+FAdqH07H1VyA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/apimanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/apimanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/apimanagement/mgmt/apimanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MrSemNemO9GjD11BI9rATVxYRAc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/apimanagement/mgmt/apimanagement/apimanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IY8mOrN6QcpGJvTjzm5EuLvvSwE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appconfiguration/mgmt/appconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wkymsh2Qp3LxVlYYTth8YI0cA6U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appconfiguration/mgmt/appconfiguration/appconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1V1x+iRS3FQVYRJUJ3jIkjQLigMM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appinsights/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13YYwbbGomYSFdmUVtwY45v2vpzE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appinsights/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QyEhBuZXdhqW1rYVtbdOlaSBfL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appplatform/mgmt/appplatform\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/R689KmY2BngtE7+9lXehtAhpi8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/appplatform/mgmt/appplatform/appplatformapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15CA/MoKiiszbCyN5bmuBmN2/3dE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation/attestation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16JDMjwL5/AGDAyW73drX8mXnw98=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation/attestation/attestationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MHGdGS83Zs71JjLcxnqFtuXCR0A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation/mgmt/attestation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MUTlu1Rvcbpxr6sd4Vn8FchjzVw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/attestation/mgmt/attestation/attestationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16JgQamfSdTEYoQV72m4P+pBqhuk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CWCcQzGvF9JIuOfflLfxbSqXNGs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o7e7UTxwXxWipiDaXAJ2blQZ11o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/automation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/automation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/automation/mgmt/automation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qvNxJ1fE+81iLwiOAYLJuR+NiAc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/automation/mgmt/automation/automationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Nfrgm+O6qDbkd5tmm/9ewHTKFtc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/avs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/avs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/avs/mgmt/avs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SP2SfxXmUiQLIGsOI3UOBZSnuHE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/avs/mgmt/avs/avsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ta9GoMcp36ZkP3GCCfYufdW3WfM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azureadexternalidentities\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azureadexternalidentities/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azureadexternalidentities/mgmt/azureadexternalidentities\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qdSDMI/W8i61ImsENxUOPHovy6U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azureadexternalidentities/mgmt/azureadexternalidentities/azureadexternalidentitiesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ih6da6TW6YfPgfxQ7aO8DdfZnjc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestack\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestack/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestack/mgmt/azurestack\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1chM4MRxNCDO6l7b9HZ6usAHf7VY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestack/mgmt/azurestack/azurestackapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VfE9W5V+PdfP8xdPFOCpe5Ewuc4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestackhci\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestackhci/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestackhci/mgmt/azurestackhci\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1z04uuc5fQZONlYMxGfbRVlKbmOg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/azurestackhci/mgmt/azurestackhci/azurestackhciapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17bwvyLfIkXu96X7U7pT8I9/oLCA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch/batch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DghRZFBNO/tV6q+Z/VBdGJOPPFw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch/batch/batchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1heEVgP1hsqvvNpn8ZLebeM28hnk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch/mgmt/batch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W6AasJme+s4jpALZCcin7MdVVPE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batch/mgmt/batch/batchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WFvk7tcrOAOj6eVrBFSsJIHENg8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batchai\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batchai/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batchai/mgmt/batchai\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1t/R1CO/o2Q8PjXnrzT4IlU1/f9Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/batchai/mgmt/batchai/batchaiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jz9eZxPyuGqOOADL8RerkXfsG+M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/botservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/botservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/botservice/mgmt/botservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+UboPNmGxMh+bmR5hqb7HNuJFME=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/botservice/mgmt/botservice/botserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11Vy8G/hupLR3tLVfDm7MVArt3HE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cdn\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cdn/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cdn/mgmt/cdn\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IoMkKkGMk06k1Paj4Xu+uEe1Iis=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cdn/mgmt/cdn/cdnapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NfyxI/TYHSsyb+jmp89hEbnkAy4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/changeanalysis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/changeanalysis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/changeanalysis/mgmt/changeanalysis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QfziNvarnNsgE/4aoex7d88bNWI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/changeanalysis/mgmt/changeanalysis/changeanalysisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1muuHh4cEU1IETb8JBln5rZ6eHBg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/autosuggest\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1g6mJvZrJAZMbTJPZAX32m+xEUi0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/autosuggest/autosuggestapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1umDDcxyCx9nilhh+HPZpEeS0aAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/computervision\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xwRocIxj6vsHdAqzNeM87O9nax8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/computervision/computervisionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mPYmnh1sK3ms6p58JZbIfWwqyO4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/contentmoderator\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GLxkPhm7SuRxp52yxv0HcZk9nXs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/contentmoderator/contentmoderatorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o5Lf8YFQyjGYsPRAZv0wBIjxWew=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customimagesearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vw739AXwz7kUI2UK9ItDCvSlln4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customimagesearch/customimagesearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/3Y85kb3BXnxc3aaNj/WFTWdZzo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customsearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vawe4d4Y2aVhnCeZ1vLUWJvksJA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customsearch/customsearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zc0k9e3d8HTzkd/w/LbdYDMQScQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customvision/prediction\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DBePO1p7DB2d03BQZAUzY9HDBEM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customvision/prediction/predictionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NsO7q1cLFNNwI/INnsaIuzgM64c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customvision/training\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kdWlgsV2zm8fUZz7O6fIG0DnIh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/customvision/training/trainingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rKLjBF1XDn3qeP+LjD5ri8yTzQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/entitysearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19U47MywIXe4cm7OEZQW1lTRDWKI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/entitysearch/entitysearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zPAnFmyZ6e5U3EF0nXyUlahn71c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/face\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10D5IlNP2GLIzX4V3h98zaM65FY0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/face/faceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14lz1ipVVDlt/CzZsaVGRLKhHElw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/imagesearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uZ0xa8MefmgW5kDM3icWPVv+MxA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/imagesearch/imagesearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1H5jCOiNaOs4gAwORzj0bI8lxuOQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/localsearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VdBII74486gBbJinmLhSR/98A4Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/localsearch/localsearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1M1Ai5mbsMB0Y3COc4ZYuv1mbN7k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/luis/authoring\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pSVfJxfs2yJLcHeXiLHOIg3jk/s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/luis/authoring/authoringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1adEakBPvNvv5wzDpUFB2nQS29Po=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/luis/runtime\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cJ9YmQF9opdr77vOVCz6GJl1zrs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/luis/runtime/runtimeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PqX7amzIuwFVM315uox5HgWw/Zs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/mgmt/cognitiveservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XsWUA0XJBKKdIDLqml3wXQ1dnzI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/mgmt/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Py9zbGQSnTQpcFVg9nUPK9uTSgA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/newssearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pE2aFk/3Om43qZL7waeb6dhrY0o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/newssearch/newssearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T8ruOa68gvqPuX7K5ODStbLdpaA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/qnamaker\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1y42K/xIISExgYX86+vCSCkBhpkQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/qnamaker/qnamakerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Pur93nWjvmicHtFEtl4X1LAbnyo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/qnamakerruntime\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/l8PBAd0PR6aLMe9jR7SHFMa4aE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/qnamakerruntime/qnamakerruntimeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Cns7hbGWzMSnliR4bEuhFgAGNnM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/spellcheck\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LT2zi5EF2dYcTUwA2gviUfpQMKg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/spellcheck/spellcheckapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16M+cry/Yi7YYksz7tHWhVWWtSfg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/textanalytics\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Qgjr22idOBwgfIO4fHmdeh4Jxpg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/textanalytics/textanalyticsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11pxbACIGwhZhVoQVXVbWD5fcVaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/translatortext\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NuTZpx6YYaqcLhKYHLOo72X9uoA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/translatortext/translatortextapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12wVRmbvpXqApojkZPruTfIQgX5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/videosearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15KurIvYcaEXa58cMQ3nVMR1clqY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/videosearch/videosearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D/NTc4krXZf2HEMF263Kh6CYnSs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/websearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+Q5jISWg0RnbbtetWcFvZ0DTxe0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cognitiveservices/websearch/websearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ku5Ci+nW3Zdp+HztQRxdqD6xlNg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/communication\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/communication/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/communication/mgmt/communication\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1aiNanwk1+qg3S+DgomRom/mfPdk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/communication/mgmt/communication/communicationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dPE7F1ZJ+PzPvAgzueJH1Oce7yc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BaRZ+CDUuKm80NUP3Rue72F+A68=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1AVAIi8oYxOpiW85jP+FYe96BXeE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute/mgmt/skus\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kY5b/xBX0OEbPJxRJ9u60cmU5Kw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/compute/mgmt/skus/skusapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ni3IOASqMe6tRc2LRJR9T5Nl6kk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/confluent\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/confluent/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/confluent/mgmt/confluent\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XASAb1pbt0obhXdmaXxoGUJSU/A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/confluent/mgmt/confluent/confluentapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16weSX0h6Ez4kmkqjmG/Jbn1zTSQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/consumption\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/consumption/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/consumption/mgmt/consumption\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1U7jBjATxoiVfZVg3OGYXXWXE3Qo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/consumption/mgmt/consumption/consumptionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BUmrBcz/mrfVAlRPOwlEcDKikwU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerinstance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerinstance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerinstance/mgmt/containerinstance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18pb/n41QUw/1xJ0j3jhL7BuO7tk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerinstance/mgmt/containerinstance/containerinstanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nGkQQGM62ojxOxZshKPnzz2tRcY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerregistry\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerregistry/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerregistry/mgmt/containerregistry\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19832Yi5AZK5IFU9LENJ9ivZA6Uo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerregistry/mgmt/containerregistry/containerregistryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VddmszCaKEDQvc6jlHgoQGgMe/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerservice/mgmt/containerservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1AmXvPzPXfh9d2gBHOGA4sCfFtAE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/containerservice/mgmt/containerservice/containerserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MxANYsEJnZ5FsvtnwSSi/Toh0Xo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cosmos-db\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cosmos-db/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cosmos-db/mgmt/documentdb\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vvbccT+4BJ2YOlW/IMr1Ettp0QE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/cosmos-db/mgmt/documentdb/documentdbapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S4gaKk3FJAKyW7xmRcOZy/VEb10=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/costmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/costmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/costmanagement/mgmt/costmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+A+v5wV1z/MelHDouq60jSgG0VM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/costmanagement/mgmt/costmanagement/costmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q120z/Q9LogTK6JlgGXUVSm4ox718=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/customerinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/customerinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/customerinsights/mgmt/customerinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1R9CYcix1KIx1ws7rJSyRYOJKo2I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/customerinsights/mgmt/customerinsights/customerinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LMwSBmTl+Ki+nUxVYaAD/yZ4x7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databox\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databox/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databox/mgmt/databox\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QSRz65Wi4FpjUiwWTFs0RXe39FI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databox/mgmt/databox/databoxapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1C8dMfwzNaz8ypm3GiF4Ot8a605E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databoxedge\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databoxedge/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databoxedge/mgmt/databoxedge\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12zseSp4hbuPHGLq4zVuL7x+cAnc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databoxedge/mgmt/databoxedge/databoxedgeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Fs+DX6KUgqbyUnoy7kRmcGcvTao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databricks\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databricks/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databricks/mgmt/databricks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JRErkTh7AosO9riTMEbz3jGQjgU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/databricks/mgmt/databricks/databricksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xEvkQWL3r6NZx7GLuKIpSMFDJPA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datacatalog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datacatalog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datacatalog/mgmt/datacatalog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RRLIBqB/YV7FvvmlWEmdfXYcFBk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datacatalog/mgmt/datacatalog/datacatalogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E48lHqclk2VaFpp5T+I+5XJP/cg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datadog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datadog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datadog/mgmt/datadog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j3tRsPiE8WyP4e+Dpi86zvbhjd8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datadog/mgmt/datadog/datadogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11PT+2vhJvQt1aIulAiQsfCwkwZ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datafactory\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datafactory/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datafactory/mgmt/datafactory\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MZ77jxoiHE1vwJ1GnSwlCjCd39Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datafactory/mgmt/datafactory/datafactoryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BrBg/NmZHca0uGGPqUMla2snYqk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics/job\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jLs4Q4rhmdrokbmJs/n+mhhtO+Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics/job/jobapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ag7VjqomTOnG4NQmcggb/ylEWas=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1fbhhxg6UM2PvKRqnUwAdwyBDpi0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/analytics/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11JOjtA07TpSHvBfj0tDrpD5o2mI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store/filesystem\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BFoEnR4c6uLKfvRTV2zr3jSVeqE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store/filesystem/filesystemapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ov6XK9To2fCBTXRmmuOzmp4r3Yk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DRoRPTDsiDL6T2ILTqqwxkp824o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datalake/store/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14kuTmLD+HJhusci6icY9Qgq1CcQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datamigration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datamigration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datamigration/mgmt/datamigration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q147GmoiRJSoMksFOL8/zxF3QfhXc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datamigration/mgmt/datamigration/datamigrationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pMAT8lx+eQ42iK8JZWyJNnB8zPQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dataprotection\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dataprotection/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dataprotection/mgmt/dataprotection\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WNhpqccLIiif0Th7LnItQ4YYYOM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dataprotection/mgmt/dataprotection/dataprotectionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CE5eN5LaQwL6Si5rCcgOPF3ooTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datashare\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datashare/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datashare/mgmt/datashare\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PqPCpTdcXKoxGRdIDygBEcf9Awg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/datashare/mgmt/datashare/datashareapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zY9VjfnBAFkWwlWqawjBMff1BY0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/delegatednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/delegatednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/delegatednetwork/mgmt/delegatednetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HRpyO+QKtdDBuzFyLkE7sbVNRmY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/delegatednetwork/mgmt/delegatednetwork/delegatednetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1udhmcxipjCEKekzjU282UX8abZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devspaces\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devspaces/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devspaces/mgmt/devspaces\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q182keY9IA5xk2OAyy2rfCwcUeWvU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devspaces/mgmt/devspaces/devspacesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12ev4eQQw/wUs+r1HMQ8f5SW+zgA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devtestlabs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devtestlabs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devtestlabs/mgmt/dtl\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nPiDApwJM+2dt6l0CIxZ37NWu2I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/devtestlabs/mgmt/dtl/dtlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RE9fp2g3pIudUF9EAPRGCQxMtU8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/digitaltwins\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/digitaltwins/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/digitaltwins/mgmt/digitaltwins\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kPeGwsg06IAwmojRujPyp7ekkGY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/digitaltwins/mgmt/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18OTZovSVU3XJTIXwVoVmn1x8f0Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Cv6I61vD/hMxgRfORRhK06fBIh0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lVwbV+LiOKjAoPP2GVX1XXQ/3zY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/domainservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/domainservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/domainservices/mgmt/aad\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16LDIswVxsjUXigV2mQy8JnqWMuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/domainservices/mgmt/aad/aadapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hWV5mOZa4jhtQs3pF0jN8YPvXbE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/edgeorder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/edgeorder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/edgeorder/mgmt/edgeorder\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1AgJW5r8R2IY3W+rEOWy6i4NKZSc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/edgeorder/mgmt/edgeorder/edgeorderapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ay8t0oB9gMFp3F5XYXJr8fT4jRU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/elastic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/elastic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/elastic/mgmt/elastic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bpuFhp6FvJP9H7tNPZDSU9M+mJ0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/elastic/mgmt/elastic/elasticapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QUhJUQwIqSaKyoBtrVjsYcBpu3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid/eventgrid\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HW+GnZpsBQOW7zN1uXlaEMoEhWA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid/eventgrid/eventgridapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tiCyFc5EZRIqKgtyV5TMQqLrqV8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid/mgmt/eventgrid\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S4G95uyUp/vcnDWFHzlxDzYTcnk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventgrid/mgmt/eventgrid/eventgridapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T0+IZzl9+G7MswpYmBKt1aTRlGA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventhub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventhub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventhub/mgmt/eventhub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YISmzmKGmTqwzUTc6WcM7BcbIyk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/eventhub/mgmt/eventhub/eventhubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q129f6Bs/VG0UvBAqoekGReGfc+No=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/extendedlocation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/extendedlocation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/extendedlocation/mgmt/extendedlocation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RlG0z485bmeZB3gyeeRxjccw/bg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/extendedlocation/mgmt/extendedlocation/extendedlocationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BedfxuGkfSk7etHjBzWiIN9uXmw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/frontdoor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/frontdoor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/frontdoor/mgmt/frontdoor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14s6CwBZMLjX6OKnrLaxE62Fk6rA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/frontdoor/mgmt/frontdoor/frontdoorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NelV7Op6HWFGSeYaAOkHMkvkDCQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/graphrbac\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/graphrbac/graphrbac\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1fThWNGNt2E6BmTetUvA6P70uq44=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/graphrbac/graphrbac/graphrbacapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11Klq50fVfxPeEOen7wMZlLYIMrs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/guestconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/guestconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/guestconfiguration/mgmt/guestconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mefTXlebGQ8uJ/CBzWgglKoOGj4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/guestconfiguration/mgmt/guestconfiguration/guestconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IXITUGMOIW3mrlK2wJ/DIRT9Q3Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hardwaresecuritymodules\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hardwaresecuritymodules/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hardwaresecuritymodules/mgmt/hardwaresecuritymodules\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17C4VOOfKHrfOSrtU9YTNG41YNyw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hardwaresecuritymodules/mgmt/hardwaresecuritymodules/hardwaresecuritymodulesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xLLWxM0yrpTnZdUdp8/e9K0VfDo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hdinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hdinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hdinsight/mgmt/hdinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W3MEKbeo69fY9PrIjtEMKJGoJ0g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hdinsight/mgmt/hdinsight/hdinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14lqINvflJCo45sgkaLZOr8u2B2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthbot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthbot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthbot/mgmt/healthbot\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HEDkQlQKxCLNF9Hw3hrqsCASWPg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthbot/mgmt/healthbot/healthbotapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Wqkq+VQj2a/HpuqSZdr7IKIuwl4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthcareapis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthcareapis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthcareapis/mgmt/healthcareapis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j5CjYZ+omwdxnRxZGuM3kIXGkd4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/healthcareapis/mgmt/healthcareapis/healthcareapisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zrW+cMxiYIEQxlS7o91enb4GfwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridcompute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridcompute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridcompute/mgmt/hybridcompute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZGNVAQ+/+fgg+1hWv/FYCCOX4ME=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridcompute/mgmt/hybridcompute/hybridcomputeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ywby9meohYngwKO6+lFr0ZkE31U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybriddatamanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybriddatamanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybriddatamanager/mgmt/hybriddata\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pmKyt9zUXXw+TTIyfk45AQaaN/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybriddatamanager/mgmt/hybriddata/hybriddataapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uGmmsLxhEiNHtmXR/Kdxi9o6W7o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridkubernetes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridkubernetes/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridkubernetes/mgmt/hybridkubernetes\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HdCScdvQI727+v3aHm2J99UKkd4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/hybridkubernetes/mgmt/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FJC6LRhdkMoI1g+LWYZNWEUNBu4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iotcentral\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iotcentral/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iotcentral/mgmt/iotcentral\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q185gM9sDO+Mjt1Bwsh2xt7fK/K20=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iotcentral/mgmt/iotcentral/iotcentralapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19pxIJ9JQ6NfMaJtqpm+G4iXcrCE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iothub/mgmt/devices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qzIcg220D3pEE8xEOF7/T/srosQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/iothub/mgmt/devices/devicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZDRI4GkH3p/jSdGwGCLNI+St0xs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qJ+nlL+Ar/r+ZY1VbgqPHve3zVA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OngW11XM04DkfIri3TSk0sCmM9s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q194ttPX/Y/zduK1sTSl6rS3NU2CQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kubernetesconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kubernetesconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kubernetesconfiguration/mgmt/kubernetesconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1frF8lge6az2mVuKgFcaYnCtIgHo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kubernetesconfiguration/mgmt/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+C6mBBFOhGhAzaKELzYSMvwnVgk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kusto\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kusto/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kusto/mgmt/kusto\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oQZULfMc9MH7Exr5NlU5k/oIOIs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/kusto/mgmt/kusto/kustoapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xiIDdoIPqiysgEsO4BB56/48H1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/labservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/labservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/labservices/mgmt/labservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oE3aNG/1SfU6ZIkLphUHObULhX0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/labservices/mgmt/labservices/labservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YSyxAqlI7sOgjRg9wbddRb/1j60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logic/mgmt/logic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W0+8XgY0zxuNT5rGjMZYWQt2jTg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logic/mgmt/logic/logicapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KDQA088XcO2kAU2k1NgiWQXTNwU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logz\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logz/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logz/mgmt/logz\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lmLHrhdVKSzhEEckklrEo/vYPVg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/logz/mgmt/logz/logzapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Btrzp8HLfB8r5xn13nS5+CqHo5A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning/mgmt/webservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12i1B5IIfr0QqLSwJX7+07hWj3+g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning/mgmt/webservices/webservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PU/ywCt+u2fm8ZBeQep7jT2Pn0w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning/mgmt/workspaces\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13/3g/66VTRJqDRkUcJwoDvZAdQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearning/mgmt/workspaces/workspacesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qcsFoKOmrv1NaUQsy6A/mkCRGTY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearningservices/mgmt/machinelearningservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LX6qPaYpiOyoBB/zYbohMXZXf0o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/machinelearningservices/mgmt/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11xWZr2Zqn6ddrHlTjrLeWBsSB/g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maintenance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maintenance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maintenance/mgmt/maintenance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VkFbxgzu9ckJtwQNEK4j6nao0x8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maintenance/mgmt/maintenance/maintenanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jcxnZsA98kLKU2LFBrWNNSGOSLI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/managedservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/managedservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/managedservices/mgmt/managedservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/jafwS0pkEXSi132VOzMnY3YkiY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/managedservices/mgmt/managedservices/managedservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ADAmjhlaQsqzeB69wJUsR0QbOvU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maps\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maps/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maps/mgmt/maps\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sUVBPTwgKhSMV4KCyuksAyHJXaI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/maps/mgmt/maps/mapsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1p3upPOxsxgJToJa69QBR/BGNdhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mariadb\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mariadb/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mariadb/mgmt/mariadb\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sCGaioc1pGGlnT0eT/jT3stXfQU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mariadb/mgmt/mariadb/mariadbapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17nwFOgDPnDU6TU89cI9IEY5rZtk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/marketplaceordering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/marketplaceordering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/marketplaceordering/mgmt/marketplaceordering\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o9y0nnp6R5vfcuU6iI5x0XTUt44=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/marketplaceordering/mgmt/marketplaceordering/marketplaceorderingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1n2Q2irJWe6wO1ZtaT5HYw3MNrAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mediaservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mediaservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mediaservices/mgmt/media\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KZ9P1gn5dZNVDU30H7VvXQDJSOo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mediaservices/mgmt/media/mediaapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18xzlFCFRAIk8fFQjhjZ1g4iOIiU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/migrate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/migrate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/migrate/mgmt/migrate\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dcbAwUrGtL8RWLPTMqZTx9nuO8o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/migrate/mgmt/migrate/migrateapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13PPi3l51nq2cn4uQ221rMsmZXEk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mixedreality\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mixedreality/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mixedreality/mgmt/mixedreality\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14kXCjQCtZIGNifU3H2IP35w1P1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mixedreality/mgmt/mixedreality/mixedrealityapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17cWoEvf0+YRcBVPXKx8evhFx11U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/activitylogs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Bhk7kL+ie4hWyL8z35zg/xQGXl0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/activitylogs/activitylogsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E41ZgHnXVuxG1BiN3oMiEIQoirg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1X2C1Lxtg7wdqmZD4c6p5uCwAyjk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SBKcrKM+pGVqETCWYpzPRJs44iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/scheduledqueryrules\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15NfDrPTFtxQuUdvNutuek0Q2opo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/monitor/mgmt/scheduledqueryrules/scheduledqueryrulesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18sPxIwsRe/oJ6QxFgPRrsKi5bKM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/msi\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/msi/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/msi/mgmt/msi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17jNliBUJC5GG3AgR/uXhpRhi5bI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/msi/mgmt/msi/msiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kqG6mKx9qYZsjFKzIJp4106lZz0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql/mgmt/mysql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A+ibPPbY2XXWLGsE/WZW6Cuds9U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql/mgmt/mysql/mysqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17ePq9Fg8KMUu9JrZey4fFETZkNw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql/mgmt/mysqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q114zFha1q0MvXlwim5IK2ctMimGs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/mysql/mgmt/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1k21mMecyIvBaUUej3A6ftlN0Fjw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/netapp\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/netapp/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/netapp/mgmt/netapp\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LcKjv9E8wySpboVJxjvZkAeuiSQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/netapp/mgmt/netapp/netappapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KxBA1Om2xJ3KI7lhjA/K70UDJr0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DV+IUnpvnE7E+IRktdOO9vV8eWU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16LgPpVK6A2ERAZJ4Rt2gwPRCie4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/notificationhubs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/notificationhubs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/notificationhubs/mgmt/notificationhubs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1csRv85LZhUsc+3L6uwfvLn8ozk4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/notificationhubs/mgmt/notificationhubs/notificationhubsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cwm3QS2dcP7V6U/SZEODorrPxuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights/mgmt/operationalinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JTMBlZsbsg+W84RJlAGKD0Z7RYA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights/mgmt/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RD455WdrE2JwYAKMjx5EvResRMA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights/operationalinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PSzWyqQ1iKZevrM1438c8yqxuGI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/operationalinsights/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+c+tnj/1PFZsbdJrzyeQpEuHWw8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/peering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/peering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/peering/mgmt/peering\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ngNgBECsskr4V+PBNF78J5gJ/xY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/peering/mgmt/peering/peeringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cyX8WMXcRpwr65B00RdtRxVyVoA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/personalizer\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/personalizer/personalizer\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1iBscLZ48xH1Lq7cLtwpLlhDwY6I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/personalizer/personalizer/personalizerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NYPTUXfya6WT2r4AjSBgXxcaY88=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/policyinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/policyinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/policyinsights/mgmt/policyinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NN9aRXKlLE58lLWiP6ktWm4cNIs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/policyinsights/mgmt/policyinsights/policyinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Uz2X74Wll1C8a17R9Pge8xrsArk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql/mgmt/postgresql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uqyzQaboOBdF8R+DN0jMbP2j8L4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql/mgmt/postgresql/postgresqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Dqg8DnUZ3VQXDihT8/uajqmrPLE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql/mgmt/postgresqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S/j3s3vNTfKPj6+27REtJZW1OS8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/postgresql/mgmt/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19udDXpZ70EgQvzN8JFcrmuOo+Yo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbidedicated\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbidedicated/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbidedicated/mgmt/powerbidedicated\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SOGd6mceEGeVzRpVcOf+gwU8OrM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbidedicated/mgmt/powerbidedicated/powerbidedicatedapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yqmx4RIhPCi/neBAvfWm97wHVEE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbiembedded\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbiembedded/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbiembedded/mgmt/powerbiembedded\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FPpv+nAAhEGUeSoWMjdIeeJRgbs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/powerbiembedded/mgmt/powerbiembedded/powerbiembeddedapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Qcr/0FSAvzLE2G9QhLTrLJP+cwM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/privatedns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/privatedns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/privatedns/mgmt/privatedns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yQ7S34QYiIJuzh5sbj9Tci01qFg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/privatedns/mgmt/privatedns/privatednsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GdJg4nWq2Z17Qso5FKVoNlesy+U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/provisioningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/provisioningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/provisioningservices/mgmt/iothub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Gb7QABWLyKSHWdCVm7jbZ9GECa4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/provisioningservices/mgmt/iothub/iothubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pzu4FIeznbgml6+L+9k0RhFne9I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/purview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/purview/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/purview/mgmt/purview\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GwkPywLSzoHxh0JwwfaerWnuq0o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/purview/mgmt/purview/purviewapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VeyYCthYMViS/QIMVYvYlgIiCdk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/backup\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12fS0u5WMPEnrZSvEfPNMPn3y7/M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/backup/backupapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18cmCFuHug2TNw5FTr/YcV8+SBfs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/recoveryservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JWzjUTkqC+RnOiShJeiTm5bz8t8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/recoveryservices/recoveryservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nS3zWm7jSiJ5DCA+v2A1hY1DKPM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/siterecovery\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uOl6XDAQCvu6/+mrg2++aKiRXT4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/recoveryservices/mgmt/siterecovery/siterecoveryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16DFX6PT2KA4cliKnun89nN7K+RU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redhatopenshift\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redhatopenshift/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redhatopenshift/mgmt/redhatopenshift\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sDl2OhxLKGpMVkzpetg5qhDteGA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redhatopenshift/mgmt/redhatopenshift/redhatopenshiftapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+ObrDDlyAz2IoU+gBbkg2to02ZQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redis/mgmt/redis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10F9kZUm88JVRXzM1a1o3oSggy3E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redis/mgmt/redis/redisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1k0ZlxQDJXIILT0ibtcGDqkcdQhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redisenterprise\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redisenterprise/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redisenterprise/mgmt/redisenterprise\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cw/85TsBT+ee3qtYJRtGzqI0chM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/redisenterprise/mgmt/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gFVso3X8t3TZeR71xAiVOYLQxno=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/relay\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/relay/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/relay/mgmt/relay\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Cx7+he2TaTx4GUIHbCvC6I60J+Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/relay/mgmt/relay/relayapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZO6cvNZzauTZrmmQ0n4FJ6cB1gI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/reservations\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/reservations/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/reservations/mgmt/reservations\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11eCbzkzJLCySPI5/HnHTNMxAhKU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/reservations/mgmt/reservations/reservationsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11ojj2u6czDpAMDqsttNf3yZt36U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcegraph\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcegraph/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcegraph/mgmt/resourcegraph\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ftiiYVHHDpBQC3THr/a8W3Cy/fs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcegraph/mgmt/resourcegraph/resourcegraphapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BY9OQvMStA7WDHnLogmBr5XmGMU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcehealth\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcehealth/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcehealth/mgmt/resourcehealth\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1322Vam9icFQftAxUC77Qk71Of88=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcehealth/mgmt/resourcehealth/resourcehealthapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1z+9kVNHxSQ201LljmdS5gyCGr8M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcemover\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcemover/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcemover/mgmt/resourcemover\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kpyUjuSmhwcqkTedODzqTbgmJt0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resourcemover/mgmt/resourcemover/resourcemoverapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MLrr48V3dKwAsb5KgKs6FEW1tfU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/features\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1r5uWJpROkAe6GKli9y/s4nL0wzc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/features/featuresapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1fcfTT9fexKFTUxFYf8lli2rkKAs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/links\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DrTp2KLSx+7e+12FX++JBMUeyLw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/links/linksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZpIudH08cunCzFxU2Iqj1xAK/h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E75D4W6qUKMII6aJvROSaWnFA/c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A3dWPJwNNWmWO9wWEcc7L/1xd7M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/managedapplications\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JWpu6S97U5pc49jwQeFcTwGFnI0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/managedapplications/managedapplicationsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RxSY4o0CHSS4edE2Lv2QAiTAAH8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/managementgroups\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1it7E33/xQpCZKfdO59KF9WdzI+o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/managementgroups/managementgroupsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12sRbNPJeVxik5wQVCILFnpFlyWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SOuZ2PW/EVbl+tn1Vzqoqm6NsGI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16LOC+ONsG0rst8IwtGsXyBQXMgQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T0kpgG0bWDMy35Pdbt1PzoPfbRY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ih77FPdRUVbvkxdBqBIVggCM2AE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pGySnG0BIlf3vQoNlFEMmQNqs8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S404ch/qn+x8rE5UzbkQfONNqZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/scheduler\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/scheduler/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/scheduler/mgmt/scheduler\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yH0lJzePnzBbYokR/okRwRJv1nU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/scheduler/mgmt/scheduler/schedulerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/oaOt5KzgJmeqHUdAgoBYd3JBrk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/search\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/search/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/search/mgmt/search\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KbxAUXAjy0FBe3FfhiiAJx2GTtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/search/mgmt/search/searchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19c1QtVu/Xce6JKQPrbn2E6o3o1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/securityinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/securityinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/securityinsight/mgmt/securityinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1msAKnVED0GOgy7GWiFJ1Um1zrqk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/securityinsight/mgmt/securityinsight/securityinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1daqoHn75HIuOzTkNVdO/1Ci+xVA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/serialconsole\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/serialconsole/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/serialconsole/mgmt/serialconsole\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BNp6VnGzIige1aQvIG2ByS85b/8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/serialconsole/mgmt/serialconsole/serialconsoleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1f1sCFGrA1dhnDKgafu98L5fsdqU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicebus\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicebus/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicebus/mgmt/servicebus\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1aeqNNVZWGKYJ45FMHFbbjivwKps=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicebus/mgmt/servicebus/servicebusapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eCKMcQkaPMHy6jD6oHl5X5o0q+A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric/mgmt/servicefabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zVRxPwfJvC06fEMGUYXzXe/AmKI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric/mgmt/servicefabric/servicefabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17jHGH+ypYZ1aWIqA18OEejazLOw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric/servicefabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Oo6fSUmnfUw7vv26L15TxA9lNu8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/servicefabric/servicefabric/servicefabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IjMHQ80ak/QAgBhrPhLb6LVNxS4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/signalr\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/signalr/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/signalr/mgmt/signalr\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17/qnmjWCWNP77G4HnyVhpzmg1QU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/signalr/mgmt/signalr/signalrapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MpOKEpzrUqmrc26FwLxtJqVBPUk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/sql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/sql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/sql/mgmt/sql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1twORwKiFbTzsl3wwI+WBVK+WVrs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/sql/mgmt/sql/sqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GTOhJfuQE9M/jyFRYybsQWRqzTQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/datalake/storagedatalake\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Kf0BwRQVFDvyu914nWOwtyC+2h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/datalake/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+ZIFq/TRuxI/1oD0dINGwNu10ss=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cqdFVKMeiEFTM/uhIJuUg0HMWXc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1C6N0xKBZLTktgft58UbR+ODU+tA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagecache\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagecache/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagecache/mgmt/storagecache\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/MRZjD2G++F3OAgsYtrl8hCxHvc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagecache/mgmt/storagecache/storagecacheapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cnvtLYVBJOwGqnBlCmr6nhac1RA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storageimportexport\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storageimportexport/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storageimportexport/mgmt/storageimportexport\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LykuKh0Eh2rTTvatmsiyhFg8sOQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storageimportexport/mgmt/storageimportexport/storageimportexportapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oEAB3zV+P3XqDg5+yCWMvSyi9KA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagepool\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagepool/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagepool/mgmt/storagepool\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wYFMyY6DJSesbz3SqXBB69O3BhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagepool/mgmt/storagepool/storagepoolapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1M5m9kj0VgskA1CnAfhG5CdaJFH0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagesync\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagesync/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagesync/mgmt/storagesync\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11nWIt/Yv2Ug/lQ6e4+e6BKHBjT8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storagesync/mgmt/storagesync/storagesyncapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VWofpS7Cksi5V47M5HVy79a1q4o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple1200series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple1200series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple1200series/mgmt/storsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1aagf6kZ113hbVoTn5gO3J9UZO38=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple1200series/mgmt/storsimple/storsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IwysIXKHJUTAQ0JKOHFEdaNCke0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple8000series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple8000series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple8000series/mgmt/storsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11QVelbk8KhJMn+WvjFaQJRS3AWM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/storsimple8000series/mgmt/storsimple/storsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1L1L9kALm+uhhY2F3gcgqzgRSOj0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/streamanalytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/streamanalytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/streamanalytics/mgmt/streamanalytics\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16fvUz5NLBIzOFY7FWQV2CjIaveI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/streamanalytics/mgmt/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1H7ANw47ixe2aqvcLOw3wrlhZnoo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/subscription\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/subscription/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/subscription/mgmt/subscription\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Tups7QT8CYI2e5dDVyGoCHsIwZQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/subscription/mgmt/subscription/subscriptionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1i5/qxRJgqY9eV4dSb2E7YXS2a5Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/support\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/support/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/support/mgmt/support\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xmErxw0NvM9NfM1CLFzjaXEzX04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/support/mgmt/support/supportapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kbI7mgikO/g0wY++Aw01F+oybh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/synapse\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/synapse/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/synapse/mgmt/synapse\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q126Qn7WJot2tli4owL8HXXK0AtbU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/synapse/mgmt/synapse/synapseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Bq/LXw6y65CrO94Wd6vyNxqYiuA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/timeseriesinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/timeseriesinsights/mgmt/timeseriesinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kT20Zoe7UaGl+oI4a6kkrvm0t90=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/timeseriesinsights/mgmt/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1r29FR2wsDG4v2gAWuq/GFseAUwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/trafficmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/trafficmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/trafficmanager/mgmt/trafficmanager\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hO2p16eExeojCrC4rVf5GjYB/sE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/trafficmanager/mgmt/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vlyeQf2A5BX+3DvnZJFwkLMIcA0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/virtualmachineimagebuilder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/virtualmachineimagebuilder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1z95Tcc25Jqv4MRYg0TRYrsIFJEs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kW2R4VGVkPnGS2gitwIzTSEQDSI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/vmwarecloudsimple\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/vmwarecloudsimple/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/vmwarecloudsimple/mgmt/vmwarecloudsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19ecJhW6i6HLG4QoZC83gn+twAHk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/vmwarecloudsimple/mgmt/vmwarecloudsimple/vmwarecloudsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NbIpGY3CPocOrKofD1149ajKw8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1m/yY0HlNs6FO2APb0BgM0qpeX98=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LhMlaHDjCXtDR+j34+knBuhgEc8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/webpubsub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/webpubsub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/webpubsub/mgmt/webpubsub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DpP1gMh5ae5g3PhZ3q0pSFycUyo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/webpubsub/mgmt/webpubsub/webpubsubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ONUhdonRdVjs4NSeJJQ6MxNZ6Kc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/windowsiot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/windowsiot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/windowsiot/mgmt/windowsiot\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xit32chPjJ3PEv0Ke6K8zNowBTg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/latest/windowsiot/mgmt/windowsiot/windowsiotapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HYf9GjXylbUp0I3OneOJltvuz/w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1J3IY4YKEAb9ok2zYBh2yT13dbzg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/aad\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/aad/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/aad/mgmt/aad\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Tkt5Kt0pU5Ev+EogSupObKRwsQI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/aad/mgmt/aad/aadapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nHsn1eHt+Y2CErfixJ9Qw7iMpZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/adhybridhealthservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/adhybridhealthservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/adhybridhealthservice/mgmt/adhybridhealthservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DrDKBzFiELfqfAbPFos2hvxTNIE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/adhybridhealthservice/mgmt/adhybridhealthservice/adhybridhealthserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1F/YCAP4ra/xSWWRE8gXy1r9ZGto=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/advisor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/advisor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/advisor/mgmt/advisor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xie9Z6r1BdKs8X9qynf0PkA2H1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/advisor/mgmt/advisor/advisorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MCC1yAsi7i8PeaP+z5YKBASR8FE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/alertsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/alertsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/alertsmanagement/mgmt/alertsmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1l8bAnBtt06n6HRBy6hMeCnjRS7s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/alertsmanagement/mgmt/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18eSC+GuqaO2FeL5lwTWCQIhg7j0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/analysisservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/analysisservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/analysisservices/mgmt/analysisservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1u8gqceVtPA3DuCT8frSYfn1Hv1Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/analysisservices/mgmt/analysisservices/analysisservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GAaTkNL3NlB16S+FAdqH07H1VyA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/apimanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/apimanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/apimanagement/mgmt/apimanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nu3gt4obEP66oNiECxtaGEEQ6zo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/apimanagement/mgmt/apimanagement/apimanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IY8mOrN6QcpGJvTjzm5EuLvvSwE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appconfiguration/mgmt/appconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CHjfqMtNDr4am8IxY2appaUGN94=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appconfiguration/mgmt/appconfiguration/appconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1V1x+iRS3FQVYRJUJ3jIkjQLigMM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appinsights/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ap1LmESffF8ndMYP8CvLQ4mNVho=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appinsights/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QyEhBuZXdhqW1rYVtbdOlaSBfL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appplatform/mgmt/appplatform\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YRH74E+6WfMcha0vvLebRAsiq5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/appplatform/mgmt/appplatform/appplatformapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15CA/MoKiiszbCyN5bmuBmN2/3dE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation/attestation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1TeV5Jty8ltBAtk7ReO9YnLuI8F0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation/attestation/attestationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MHGdGS83Zs71JjLcxnqFtuXCR0A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation/mgmt/attestation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RqsLnSSp4Q3Qproy+2cRSiFFV/I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/attestation/mgmt/attestation/attestationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16JgQamfSdTEYoQV72m4P+pBqhuk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/BSRG9mbDRwDkB1mQICP0EQOCJs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o7e7UTxwXxWipiDaXAJ2blQZ11o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/automation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/automation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/automation/mgmt/automation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ek6ZO4uS+6AUb51+jvgaIs84Ssc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/automation/mgmt/automation/automationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Nfrgm+O6qDbkd5tmm/9ewHTKFtc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/avs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/avs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/avs/mgmt/avs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wnZ7YHsOyQSMC66JuVLpt1xlyIU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/avs/mgmt/avs/avsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ta9GoMcp36ZkP3GCCfYufdW3WfM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azureadexternalidentities\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azureadexternalidentities/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azureadexternalidentities/mgmt/azureadexternalidentities\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1s1CFJ8Nc3WcBrSEhFBMulLQSUC0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azureadexternalidentities/mgmt/azureadexternalidentities/azureadexternalidentitiesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ih6da6TW6YfPgfxQ7aO8DdfZnjc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestack\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestack/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestack/mgmt/azurestack\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EjurZZvmbQttPPSYDun/mH7MfjU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestack/mgmt/azurestack/azurestackapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VfE9W5V+PdfP8xdPFOCpe5Ewuc4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestackhci\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestackhci/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestackhci/mgmt/azurestackhci\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Cvrr7uuiw28WIv1CGODmb/exlWM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/azurestackhci/mgmt/azurestackhci/azurestackhciapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17bwvyLfIkXu96X7U7pT8I9/oLCA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch/batch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ry7HUTO3bec4FPKW9rsEW0XijuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch/batch/batchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1heEVgP1hsqvvNpn8ZLebeM28hnk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch/mgmt/batch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gxZ0MxEHQOGOTlzQMMDh+Gbg3/c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batch/mgmt/batch/batchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WFvk7tcrOAOj6eVrBFSsJIHENg8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batchai\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batchai/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batchai/mgmt/batchai\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1U3oVUUpk/bP21oMoO+olUOKVzgw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/batchai/mgmt/batchai/batchaiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jz9eZxPyuGqOOADL8RerkXfsG+M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/botservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/botservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/botservice/mgmt/botservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CUdY6NSUAiBAsqwLTLFBGclcSN8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/botservice/mgmt/botservice/botserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11Vy8G/hupLR3tLVfDm7MVArt3HE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cdn\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cdn/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cdn/mgmt/cdn\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Wxs6BiXu7TogI+2/Ov/iJJtIygo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cdn/mgmt/cdn/cdnapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NfyxI/TYHSsyb+jmp89hEbnkAy4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/changeanalysis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/changeanalysis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/changeanalysis/mgmt/changeanalysis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11Gn3VA2zgwsXl20d5DPmfot7FvI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/changeanalysis/mgmt/changeanalysis/changeanalysisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1muuHh4cEU1IETb8JBln5rZ6eHBg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/autosuggest\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FnBiRNcBa8cq8CKroY/4JUIjd3k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/autosuggest/autosuggestapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1umDDcxyCx9nilhh+HPZpEeS0aAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/computervision\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1I647Rb1hKC+cAczVUXmECtutRsM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/computervision/computervisionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mPYmnh1sK3ms6p58JZbIfWwqyO4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/contentmoderator\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19vrjdBXbpORje7Zvp2P4UxEjfOI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/contentmoderator/contentmoderatorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o5Lf8YFQyjGYsPRAZv0wBIjxWew=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customimagesearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OLGX0pVYB+iYlozb60a7GLZYvag=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customimagesearch/customimagesearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/3Y85kb3BXnxc3aaNj/WFTWdZzo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customsearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ADOcgrs2B9lXd/JkHsD9wiaHhIw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customsearch/customsearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zc0k9e3d8HTzkd/w/LbdYDMQScQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customvision/prediction\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Am9W5Zp9gre25wxrC7sfoW4AdfM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customvision/prediction/predictionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NsO7q1cLFNNwI/INnsaIuzgM64c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customvision/training\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1UpO+8h2rDRpu3rtjItu4yVfvHEA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/customvision/training/trainingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rKLjBF1XDn3qeP+LjD5ri8yTzQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/entitysearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EqWOuDg5/6knHAcXofkxSs65AsA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/entitysearch/entitysearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zPAnFmyZ6e5U3EF0nXyUlahn71c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/face\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1V9f8XyI6E7ju5gndmnJOKdJUZh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/face/faceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14lz1ipVVDlt/CzZsaVGRLKhHElw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/imagesearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11rA0RV54s5yeuLfxGyvlenr/vQ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/imagesearch/imagesearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1H5jCOiNaOs4gAwORzj0bI8lxuOQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/localsearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1d+jD2GiEaLcjJdToLthpDXD5BRU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/localsearch/localsearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1M1Ai5mbsMB0Y3COc4ZYuv1mbN7k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/luis/authoring\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jSfIpwrlWC1GVgFNKBofZtk7nAY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/luis/authoring/authoringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1adEakBPvNvv5wzDpUFB2nQS29Po=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/luis/runtime\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vauR0nUyfOUfI0eCWjbs9fMSj/A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/luis/runtime/runtimeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PqX7amzIuwFVM315uox5HgWw/Zs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/mgmt/cognitiveservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WeIirbysYNMvFj31PkLs6afKL28=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/mgmt/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Py9zbGQSnTQpcFVg9nUPK9uTSgA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/newssearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1smyI1cvvErP32Mu+8bQVJLVALEQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/newssearch/newssearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T8ruOa68gvqPuX7K5ODStbLdpaA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/qnamaker\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BoS3KzTjvdmltzBnqw6NMnhuVUg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/qnamaker/qnamakerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Pur93nWjvmicHtFEtl4X1LAbnyo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/qnamakerruntime\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16JSRWpyi/cyMF7Hki3UwSBbJNPM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/qnamakerruntime/qnamakerruntimeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Cns7hbGWzMSnliR4bEuhFgAGNnM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/spellcheck\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1g5kkwHTa2UItrfb9PJJJCzqqwIQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/spellcheck/spellcheckapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16M+cry/Yi7YYksz7tHWhVWWtSfg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/textanalytics\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12fqdfjgXyO8d1tc8AXRYDDcgeIg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/textanalytics/textanalyticsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11pxbACIGwhZhVoQVXVbWD5fcVaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/translatortext\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oEC1MWH6Y03ZRwkvB32ceLmKnOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/translatortext/translatortextapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12wVRmbvpXqApojkZPruTfIQgX5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/videosearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QSykIZdt49GMiXpDYVBRAVN3LlE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/videosearch/videosearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D/NTc4krXZf2HEMF263Kh6CYnSs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/websearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+4g0m9o7NFYPChb85HhdkFvesxc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cognitiveservices/websearch/websearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ku5Ci+nW3Zdp+HztQRxdqD6xlNg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/communication\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/communication/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/communication/mgmt/communication\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PKcmC4W/1EVQbRod4JokK7k1Llw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/communication/mgmt/communication/communicationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dPE7F1ZJ+PzPvAgzueJH1Oce7yc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FnucSPwTl4bf5X8Gk5ek7sU+xc8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1AVAIi8oYxOpiW85jP+FYe96BXeE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute/mgmt/skus\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T5wZynmmns8fO1SLhnYHFZn/fQY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/compute/mgmt/skus/skusapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ni3IOASqMe6tRc2LRJR9T5Nl6kk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/confluent\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/confluent/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/confluent/mgmt/confluent\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Efvrqgw0RvbfRdmvL3D8386AQS4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/confluent/mgmt/confluent/confluentapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16weSX0h6Ez4kmkqjmG/Jbn1zTSQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/consumption\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/consumption/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/consumption/mgmt/consumption\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+GMLOHT0CUpm5Lg6mY92UVoyxFg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/consumption/mgmt/consumption/consumptionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BUmrBcz/mrfVAlRPOwlEcDKikwU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerinstance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerinstance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerinstance/mgmt/containerinstance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BSzbK2+bAuj0P9pd+jRGQleaxSI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerinstance/mgmt/containerinstance/containerinstanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nGkQQGM62ojxOxZshKPnzz2tRcY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerregistry\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerregistry/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerregistry/mgmt/containerregistry\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bgKnnGq31cRjWb8+tFduIIaFmOw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerregistry/mgmt/containerregistry/containerregistryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VddmszCaKEDQvc6jlHgoQGgMe/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerservice/mgmt/containerservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DgQbwetLIDOj9SkqinZtUca1sWI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/containerservice/mgmt/containerservice/containerserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MxANYsEJnZ5FsvtnwSSi/Toh0Xo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cosmos-db\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cosmos-db/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cosmos-db/mgmt/documentdb\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wQFs+y+qN4SHg74/I1kIFeL0ORM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/cosmos-db/mgmt/documentdb/documentdbapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S4gaKk3FJAKyW7xmRcOZy/VEb10=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/costmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/costmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/costmanagement/mgmt/costmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bbaiQkx8Wm03VNgaWCa3QBT4WJc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/costmanagement/mgmt/costmanagement/costmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q120z/Q9LogTK6JlgGXUVSm4ox718=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/customerinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/customerinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/customerinsights/mgmt/customerinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vo+0JOiT6NJ8C6c8pCm54wo1pTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/customerinsights/mgmt/customerinsights/customerinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LMwSBmTl+Ki+nUxVYaAD/yZ4x7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databox\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databox/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databox/mgmt/databox\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16xNdMOENveQtKG8T+jPDSehgM1A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databox/mgmt/databox/databoxapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1C8dMfwzNaz8ypm3GiF4Ot8a605E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databoxedge\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databoxedge/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databoxedge/mgmt/databoxedge\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rGhIAR3wU0MWYQReNCUJhUWG5ro=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databoxedge/mgmt/databoxedge/databoxedgeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Fs+DX6KUgqbyUnoy7kRmcGcvTao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databricks\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databricks/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databricks/mgmt/databricks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1O0KQuurBfYqEt0tf8T28pZQbk5s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/databricks/mgmt/databricks/databricksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xEvkQWL3r6NZx7GLuKIpSMFDJPA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datacatalog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datacatalog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datacatalog/mgmt/datacatalog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JKng91LtSXG6wDBNJPUM7Hk3mAU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datacatalog/mgmt/datacatalog/datacatalogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E48lHqclk2VaFpp5T+I+5XJP/cg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datadog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datadog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datadog/mgmt/datadog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ga20hJmzCzq/u6PGBb8ghlbQgT0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datadog/mgmt/datadog/datadogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11PT+2vhJvQt1aIulAiQsfCwkwZ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datafactory\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datafactory/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datafactory/mgmt/datafactory\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1AFmPwKIrEaRyjYTjyQ05B958tKA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datafactory/mgmt/datafactory/datafactoryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BrBg/NmZHca0uGGPqUMla2snYqk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/catalog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rVVXnT3hm2/hNh16lqcDHMyGm5U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/catalog/catalogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mPOyCymo9pPuYGbCiiwWFc5jmTs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/job\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12kaQTA98FP0wntqd4XRp0Rwbeq0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/job/jobapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ag7VjqomTOnG4NQmcggb/ylEWas=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1imq9KCNzGLi2CXozd/yFl1ycpFM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/analytics/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11JOjtA07TpSHvBfj0tDrpD5o2mI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store/filesystem\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JGX4c7/GxCs4Wm7CDVMLwjj/NgY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store/filesystem/filesystemapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ov6XK9To2fCBTXRmmuOzmp4r3Yk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pgBPakJDstqlBEf5arACRV9mbfs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datalake/store/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14kuTmLD+HJhusci6icY9Qgq1CcQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datamigration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datamigration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datamigration/mgmt/datamigration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15rg1rq0TqFr57C3DuH8FltvdGDw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datamigration/mgmt/datamigration/datamigrationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pMAT8lx+eQ42iK8JZWyJNnB8zPQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dataprotection\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dataprotection/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dataprotection/mgmt/dataprotection\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MGgD75D1O1hoyZCUeH+6tBxnc6k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dataprotection/mgmt/dataprotection/dataprotectionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CE5eN5LaQwL6Si5rCcgOPF3ooTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datashare\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datashare/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datashare/mgmt/datashare\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1I8SCGxjXkjovmQu0AxLyHYyg+og=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/datashare/mgmt/datashare/datashareapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zY9VjfnBAFkWwlWqawjBMff1BY0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/delegatednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/delegatednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/delegatednetwork/mgmt/delegatednetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vv/QbSRD1kabBgGqtOfF1X9sSB4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/delegatednetwork/mgmt/delegatednetwork/delegatednetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1udhmcxipjCEKekzjU282UX8abZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devspaces\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devspaces/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devspaces/mgmt/devspaces\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VLLSMukYHXo7GZeU1xw0dUj5jsw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devspaces/mgmt/devspaces/devspacesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12ev4eQQw/wUs+r1HMQ8f5SW+zgA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devtestlabs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devtestlabs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devtestlabs/mgmt/dtl\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dH4oyVDXGGaLl4EZmD3OQoF0/zA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/devtestlabs/mgmt/dtl/dtlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RE9fp2g3pIudUF9EAPRGCQxMtU8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/digitaltwins\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/digitaltwins/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/digitaltwins/mgmt/digitaltwins\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ka7WzgfSqcu1ChWUNT2MzbmfKDQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/digitaltwins/mgmt/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18OTZovSVU3XJTIXwVoVmn1x8f0Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+i6EZ7v1v3tqXIEuMGEoHs1kKwI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lVwbV+LiOKjAoPP2GVX1XXQ/3zY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/domainservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/domainservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/domainservices/mgmt/aad\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VXYMru0MZsJkcva6b8HXVZplNcE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/domainservices/mgmt/aad/aadapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hWV5mOZa4jhtQs3pF0jN8YPvXbE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/edgeorder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/edgeorder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/edgeorder/mgmt/edgeorder\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ALm8e1s0Dzqze/2E+UFfy8cRhSM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/edgeorder/mgmt/edgeorder/edgeorderapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ay8t0oB9gMFp3F5XYXJr8fT4jRU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/elastic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/elastic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/elastic/mgmt/elastic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j46aryABQRNvlBPi9Z+rHq+VNjQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/elastic/mgmt/elastic/elasticapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QUhJUQwIqSaKyoBtrVjsYcBpu3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid/eventgrid\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15UKPVve0LVKGfe6Ar8Lk9CQbPLE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid/eventgrid/eventgridapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tiCyFc5EZRIqKgtyV5TMQqLrqV8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid/mgmt/eventgrid\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kIYLeF/fQhQKT5lCHIbaSf+F4ZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventgrid/mgmt/eventgrid/eventgridapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T0+IZzl9+G7MswpYmBKt1aTRlGA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventhub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventhub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventhub/mgmt/eventhub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Jr8QR6dtwhVmS1AHyH7girlLT8E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/eventhub/mgmt/eventhub/eventhubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q129f6Bs/VG0UvBAqoekGReGfc+No=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/extendedlocation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/extendedlocation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/extendedlocation/mgmt/extendedlocation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/xpSNI6sFWNysRQN6ExBo/1YMKM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/extendedlocation/mgmt/extendedlocation/extendedlocationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BedfxuGkfSk7etHjBzWiIN9uXmw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/frontdoor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/frontdoor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/frontdoor/mgmt/frontdoor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18+Z+QKvIrBTPcnAVUTNv+mSBCbU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/frontdoor/mgmt/frontdoor/frontdoorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NelV7Op6HWFGSeYaAOkHMkvkDCQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/graphrbac\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/graphrbac/graphrbac\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QUYUtge84v7itLr6IXkmTJGQ+nQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/graphrbac/graphrbac/graphrbacapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11Klq50fVfxPeEOen7wMZlLYIMrs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/guestconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/guestconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/guestconfiguration/mgmt/guestconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lzYpWmBGZSWV08fCYozU3k9ekjs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/guestconfiguration/mgmt/guestconfiguration/guestconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IXITUGMOIW3mrlK2wJ/DIRT9Q3Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hardwaresecuritymodules\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hardwaresecuritymodules/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hardwaresecuritymodules/mgmt/hardwaresecuritymodules\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GAasQbqgaigRFwRn4X2jkZtNpQo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hardwaresecuritymodules/mgmt/hardwaresecuritymodules/hardwaresecuritymodulesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xLLWxM0yrpTnZdUdp8/e9K0VfDo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hdinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hdinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hdinsight/mgmt/hdinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1m4jVWEoGLcRhy9UhinatNlNN2cg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hdinsight/mgmt/hdinsight/hdinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14lqINvflJCo45sgkaLZOr8u2B2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthbot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthbot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthbot/mgmt/healthbot\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1UdL7ocrrLE5OYidlly+rxTQiBiI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthbot/mgmt/healthbot/healthbotapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Wqkq+VQj2a/HpuqSZdr7IKIuwl4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthcareapis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthcareapis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthcareapis/mgmt/healthcareapis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VVXFefLh+CXiZvz4lz5i4bdKIbk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/healthcareapis/mgmt/healthcareapis/healthcareapisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zrW+cMxiYIEQxlS7o91enb4GfwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridcompute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridcompute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridcompute/mgmt/hybridcompute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JYihm8xUVGn6ibOv395LXlhph6U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridcompute/mgmt/hybridcompute/hybridcomputeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ywby9meohYngwKO6+lFr0ZkE31U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybriddatamanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybriddatamanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybriddatamanager/mgmt/hybriddata\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hADc4y4CU/Y4CUZgKfnosTcN0vA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybriddatamanager/mgmt/hybriddata/hybriddataapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uGmmsLxhEiNHtmXR/Kdxi9o6W7o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridkubernetes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridkubernetes/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridkubernetes/mgmt/hybridkubernetes\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1flLQDDY3Qne/+BGX//Vq/aI0Xho=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/hybridkubernetes/mgmt/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FJC6LRhdkMoI1g+LWYZNWEUNBu4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iotcentral\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iotcentral/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iotcentral/mgmt/iotcentral\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11e4h0xSYnIcHPqI2V6j5HxfSppU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iotcentral/mgmt/iotcentral/iotcentralapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19pxIJ9JQ6NfMaJtqpm+G4iXcrCE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iothub/mgmt/devices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q194CajZjRvCoqYqY9ohtqEFzKmnU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/iothub/mgmt/devices/devicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZDRI4GkH3p/jSdGwGCLNI+St0xs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/W62MoKoPf5P7s05wuLmeroBuqU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mp2TRL1QaP8ewPq7H0ljoiP2IOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Rq81oevKJmE+doPtJnvF/6tLrJ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q194ttPX/Y/zduK1sTSl6rS3NU2CQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kubernetesconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kubernetesconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kubernetesconfiguration/mgmt/kubernetesconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nENoXKXEQyBwmRCaH106gWap2ps=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kubernetesconfiguration/mgmt/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+C6mBBFOhGhAzaKELzYSMvwnVgk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kusto\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kusto/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kusto/mgmt/kusto\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PKzHFgeqX5tivZ+SSYcT+ytf/JY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/kusto/mgmt/kusto/kustoapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xiIDdoIPqiysgEsO4BB56/48H1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/labservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/labservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/labservices/mgmt/labservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16PvKkMQgGQmZrgo4JgYBTbN+5R0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/labservices/mgmt/labservices/labservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YSyxAqlI7sOgjRg9wbddRb/1j60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logic/mgmt/logic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tytE2QGv/uIH7ogMJpT7jGRw+v8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logic/mgmt/logic/logicapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KDQA088XcO2kAU2k1NgiWQXTNwU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logz\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logz/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logz/mgmt/logz\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1fepVC6dYwxs+AsK/s8kyEGRU5u8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/logz/mgmt/logz/logzapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Btrzp8HLfB8r5xn13nS5+CqHo5A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning/mgmt/webservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18w+AeJAty4GyfbfTR0i2Th54Hg0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning/mgmt/webservices/webservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PU/ywCt+u2fm8ZBeQep7jT2Pn0w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning/mgmt/workspaces\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cwXr35fDtv+n8EW1NGg/3CxLnkE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearning/mgmt/workspaces/workspacesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qcsFoKOmrv1NaUQsy6A/mkCRGTY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearningservices/mgmt/machinelearningservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qUsq5lLhCiu6+GZNrrvYxVSwH3s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/machinelearningservices/mgmt/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11xWZr2Zqn6ddrHlTjrLeWBsSB/g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maintenance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maintenance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maintenance/mgmt/maintenance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1M3woNqQD3TRX05f7dDtDl6b5urg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maintenance/mgmt/maintenance/maintenanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jcxnZsA98kLKU2LFBrWNNSGOSLI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/managedservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/managedservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/managedservices/mgmt/managedservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S5dYVEqoLPLL+y2vt5cWWrgVD4I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/managedservices/mgmt/managedservices/managedservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ADAmjhlaQsqzeB69wJUsR0QbOvU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maps\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maps/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maps/mgmt/maps\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1x3gr6gpD5Da2oEADzI5B05XTW7A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/maps/mgmt/maps/mapsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1p3upPOxsxgJToJa69QBR/BGNdhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mariadb\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mariadb/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mariadb/mgmt/mariadb\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GmDxs3+Zwsy7GbCtMvcR3XITl6c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mariadb/mgmt/mariadb/mariadbapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17nwFOgDPnDU6TU89cI9IEY5rZtk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/marketplaceordering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/marketplaceordering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/marketplaceordering/mgmt/marketplaceordering\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NeGobiYTBAZFlD48NWfxgRkB35o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/marketplaceordering/mgmt/marketplaceordering/marketplaceorderingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1n2Q2irJWe6wO1ZtaT5HYw3MNrAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mediaservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mediaservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mediaservices/mgmt/media\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1k6PfIMeuDsi2czIE6lCSCAM3Mk4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mediaservices/mgmt/media/mediaapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18xzlFCFRAIk8fFQjhjZ1g4iOIiU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/migrate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/migrate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/migrate/mgmt/migrate\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WJz9PmA5SDxf9ciRli6pCopv5qA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/migrate/mgmt/migrate/migrateapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13PPi3l51nq2cn4uQ221rMsmZXEk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mixedreality\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mixedreality/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mixedreality/mgmt/mixedreality\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11smbFxxm1VTz+BtrYqxNsh8HEa0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mixedreality/mgmt/mixedreality/mixedrealityapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17cWoEvf0+YRcBVPXKx8evhFx11U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/activitylogs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10nnrjCypiXas9ySII0bU7KeHItQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/activitylogs/activitylogsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E41ZgHnXVuxG1BiN3oMiEIQoirg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KqRWJfgwAeDUHByaMEi9OhO8psA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SBKcrKM+pGVqETCWYpzPRJs44iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/scheduledqueryrules\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14F1E0JM7Xc6D5jWh/Plu6oycEg4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/monitor/mgmt/scheduledqueryrules/scheduledqueryrulesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18sPxIwsRe/oJ6QxFgPRrsKi5bKM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/msi\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/msi/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/msi/mgmt/msi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NxK9S4RxoWgNtk4BU0RhJ6J+Uts=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/msi/mgmt/msi/msiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kqG6mKx9qYZsjFKzIJp4106lZz0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql/mgmt/mysql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1w5/S+xI+7HBPnAMXBzn3HxR/faw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql/mgmt/mysql/mysqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17ePq9Fg8KMUu9JrZey4fFETZkNw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql/mgmt/mysqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12lcc9v7QKcCYUFwqXr46zGn3gDM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/mysql/mgmt/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1k21mMecyIvBaUUej3A6ftlN0Fjw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/netapp\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/netapp/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/netapp/mgmt/netapp\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KNdULAqRwJp7lbwqrFpIeIkIlbM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/netapp/mgmt/netapp/netappapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KxBA1Om2xJ3KI7lhjA/K70UDJr0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/network/mgmt/network\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dztAt/2T/g31myyyORDPvMKo200=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/network/mgmt/network/networkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16LgPpVK6A2ERAZJ4Rt2gwPRCie4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/notificationhubs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/notificationhubs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/notificationhubs/mgmt/notificationhubs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ANA7Vhn+tW2qJP2lYjE8z+b34kk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/notificationhubs/mgmt/notificationhubs/notificationhubsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cwm3QS2dcP7V6U/SZEODorrPxuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights/mgmt/operationalinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14E57+b8yf7IHZm9tspGlSPyB4i4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights/mgmt/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RD455WdrE2JwYAKMjx5EvResRMA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights/operationalinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RcYj1cxY8SBloDjUJHr4KnU7uJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/operationalinsights/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+c+tnj/1PFZsbdJrzyeQpEuHWw8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/peering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/peering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/peering/mgmt/peering\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VGSOLo+QIwpOqGKfISazhnbKRrw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/peering/mgmt/peering/peeringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cyX8WMXcRpwr65B00RdtRxVyVoA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/personalizer\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/personalizer/personalizer\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KpUE9ysCIDkFTSNZedLNhNNFaK0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/personalizer/personalizer/personalizerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NYPTUXfya6WT2r4AjSBgXxcaY88=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/policyinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/policyinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/policyinsights/mgmt/policyinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1v/Q0lxkBfhjnqoY8T+c/WLlivJ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/policyinsights/mgmt/policyinsights/policyinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Uz2X74Wll1C8a17R9Pge8xrsArk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql/mgmt/postgresql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1a00gmDR7QlYCAtMFNpmo3BQgpcE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql/mgmt/postgresql/postgresqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Dqg8DnUZ3VQXDihT8/uajqmrPLE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql/mgmt/postgresqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jrU0tYGZpm45TP7Z7+uO4LOOnSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/postgresql/mgmt/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19udDXpZ70EgQvzN8JFcrmuOo+Yo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbidedicated\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbidedicated/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbidedicated/mgmt/powerbidedicated\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12OiTZzc/n7buOh9X5dIU4TfWZ60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbidedicated/mgmt/powerbidedicated/powerbidedicatedapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yqmx4RIhPCi/neBAvfWm97wHVEE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbiembedded\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbiembedded/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbiembedded/mgmt/powerbiembedded\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WHOKFBl00DBermgFx17Su5CjnlQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/powerbiembedded/mgmt/powerbiembedded/powerbiembeddedapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Qcr/0FSAvzLE2G9QhLTrLJP+cwM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/aad\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/aad/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/aad/mgmt/aad\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dYY60140M16SFRu0ofNbwwldCuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/aad/mgmt/aad/aadapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12p7PP29v3+iNGvXcL11YKNPrlug=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/addons\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/addons/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/addons/mgmt/addons\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xl0NaHkz/G4PhsqavsDJSq3FbXo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/addons/mgmt/addons/addonsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ETXILXfl/p6+5YELWmO/vDxcUEA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/alertsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/alertsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/alertsmanagement/mgmt/alertsmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lGWdA2OiQhVb6ZFnt6K7rAW/dyE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/alertsmanagement/mgmt/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1o52jia/c8aNGmCFBXURJ6o4oNJU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/ctrl\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/ctrl/apimanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WW0/igA9ZmfUAGZtjOeTmDdhPyM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/ctrl/apimanagement/apimanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mKdve7IGK/jlujOeXl/+5r18mk8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/mgmt/apimanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1q5aG+KYicGpaO6I62oKKTXHH2lI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/apimanagement/mgmt/apimanagement/apimanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tAVJStiJlSSE/lGsEbaEICaUzJM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appconfiguration/mgmt/appconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15mNl5SObPme2IQq9hdMjAi0PrZ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appconfiguration/mgmt/appconfiguration/appconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Vhx4fFIg9CQ2aoztmccfEvTtnYU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LNHsbq5fZZjvkwHdgdGK8E32zik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hc2zFyb11ChaUhPFqz8ILjXCIZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EY5v9ONl+hE8qVhHUmKPNrIb4ek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appinsights/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T7JfIAyqO+lTjOveCyrvNKjiqLg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appplatform/mgmt/appplatform\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tnXmxlBLzZPiUv30ZvbI57xqJjc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/appplatform/mgmt/appplatform/appplatformapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jzSkQr1zFJBnoNnSdyTOrey81nc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/authorization/mgmt/authorization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ztmkVGkQIkWe3S+05YKMr6byFQo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/authorization/mgmt/authorization/authorizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zn5kIbF8R9RGOo2l0M6uoGs5vEQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automanage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automanage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automanage/mgmt/automanage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MAcxymOFnMKS+fAtu+69vvI9Pd0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automanage/mgmt/automanage/automanageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PqPFpItLT0lJ6+tE1CFQwkjYOY0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automation/mgmt/automation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lxJHxebhhtN12koRBbR0TlKKpuQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/automation/mgmt/automation/automationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OdPxZ0Yq6NNpqDhuw4AWtyJjemg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azureadb2c\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azureadb2c/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azureadb2c/mgmt/azureadb2c\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZrgHsiTHsl7UyrIh+ssv3o1J38M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azureadb2c/mgmt/azureadb2c/azureadb2capi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FQCm6HKD/otM/HcSHS/Jm3ExOlU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azuredata\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azuredata/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azuredata/mgmt/azuredata\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XT1HB8so0aqiR5p9hzv2Gc+nwdM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azuredata/mgmt/azuredata/azuredataapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q185UkQI8mZbfYQ5wP7w5ISlhnEOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azurestackhci\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azurestackhci/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azurestackhci/mgmt/azurestackhci\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/N/uzk8GjBckaENpXEGV6/dJb84=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/azurestackhci/mgmt/azurestackhci/azurestackhciapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xR7UA7+dnzIWTfprXjqSGH11wJo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/baremetalinfrastructure\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/baremetalinfrastructure/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/baremetalinfrastructure/mgmt/baremetalinfrastructure\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mfq65IOhHe+3Amm5o1jxTMMG6bQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/baremetalinfrastructure/mgmt/baremetalinfrastructure/baremetalinfrastructureapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vmQP+JCZ86G0cB6AwfldVwUEJ2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/batchai\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/batchai/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/batchai/mgmt/batchai\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hqC48L9m73j3Mol324RYPc4KCAs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/batchai/mgmt/batchai/batchaiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qMeXhaWX5UfM4KZHYWFp0rhbKko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/billing\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/billing/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/billing/mgmt/billing\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZkkYbnhyXGBny4a1IdVQ6al9DPg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/billing/mgmt/billing/billingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13Tn9eTWTpY3DREUTMp0SWhZnvV8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blockchain\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blockchain/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blockchain/mgmt/blockchain\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1N2E40O/5j3Ld3Z8xtr8Yah6wX6Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blockchain/mgmt/blockchain/blockchainapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1by1pTPa9+KIs3cR9UYjYKvl8Fw0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blueprint\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blueprint/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blueprint/mgmt/blueprint\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12FhldL5RrDwWuUCkT4BSmTxwrcc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/blueprint/mgmt/blueprint/blueprintapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RYEikXhspOqEmI6Fx16/ckjoLV8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/botservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/botservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/botservice/mgmt/botservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sS2x9VffcSKqqQ6diPpUYScMq9s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/botservice/mgmt/botservice/botserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WTTewHjzySoJrAlJzLLl8D7RDKI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/anomalydetector\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1TOQuAbRMGAA9lseYeo4RT9x18r0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/anomalydetector/anomalydetectorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1O0kMJKXe5d63xiMgoyg443p728Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/customvision/training\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q140t8HAiT7mJaWaodX6aWG6rl9Qw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/customvision/training/trainingapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1b02am4jdiNhyofl8YPMD7tXaNJ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/formrecognizer\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qnfLYHBCMzccGxpaWz/Ad/YKGTc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/formrecognizer/formrecognizerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1X3RLRVAS58w2NZMAcWmTziAbmtI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/inkrecognizer\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mzEhiZIf706RY4rBoOAMFcIyDrI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/inkrecognizer/inkrecognizerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1THhgn2913E896Ev5qWso7JQxhPs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/luis/authoring\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12QRGjHa883weLzLqPsNpapkgwSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/luis/authoring/authoringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/n679O6SlYHhwIRW9CEmYjeAXL4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/translatortext\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1brAqJUdvJceRAcCxBZemLQjyaVs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/translatortext/translatortextapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14AOem/z3NsaVp5DimPADmq30riQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/visualsearch\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QpIKRPvl5F6sBSWnLVudmGVW2io=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cognitiveservices/visualsearch/visualsearchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xrUSlaqpkhpMvvLngMvXqMOzHv0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/commerce\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/commerce/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/commerce/mgmt/commerce\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17xdAVV24tBaFdDW5mykA80VtQwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/commerce/mgmt/commerce/commerceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hBsH6ar8Ah11ET3uqnUEWhUvlt0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/communication\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/communication/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/communication/mgmt/communication\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1u/BxVd2qnAp22fJsTivfUUonw0c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/communication/mgmt/communication/communicationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vEfohOQBdLnzmTqNbMGheHaR5Gs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/compute/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jJQxya3WFeYmCYCt+Ttk+hraQqA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/compute/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VoPWaelvqb27CeVIIzlmOrwDcYc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confidentialledger\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confidentialledger/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confidentialledger/mgmt/confidentialledger\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11B4l5J7pGZFU7PAe+NxkElwJGeU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confidentialledger/mgmt/confidentialledger/confidentialledgerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OQxmcQYD6Nr1wDBIdeKxjIaTulk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confluent\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confluent/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confluent/mgmt/confluent\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JQph0qL0zYw4A6HXrVLA2FEW+fU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/confluent/mgmt/confluent/confluentapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1uzkGcUtwP1plHK203fmkuxtwtYk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerinstance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerinstance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerinstance/mgmt/containerinstance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Vy0CFI1eJuVIvfmcsVUKhZJUmvI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerinstance/mgmt/containerinstance/containerinstanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SmroKvJh9ZcKfUXyVRB95M0IHJ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/mgmt/containerregistry\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1q8AYOR653di2pQTD1ThDpLfdmuQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/mgmt/containerregistry/containerregistryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Tx2mTorC0thWJ2G3nzwqasCLEMc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/runtime\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/runtime/containerregistry\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1I3RDOlrBsiXsr2vGFkGtIQTF9w0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerregistry/runtime/containerregistry/containerregistryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1joOS+ia7pRw3nNRbREx1NuUKA30=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerservice/mgmt/containerservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GcyBTAcvPBMyxofeqYLpU1fOO/g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/containerservice/mgmt/containerservice/containerserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EzLTHADogE9OiP1MFUCnwW5qE4o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cosmos-db\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cosmos-db/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cosmos-db/mgmt/documentdb\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HBDzUnWfPUSMp/0xjs3+pB1CfPM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/cosmos-db/mgmt/documentdb/documentdbapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lbTGU3r0yvEKqtHCOIgf0ALgmQY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/costmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/costmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/costmanagement/mgmt/costmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1J/CLeJnfFQwr8h5ITmJMrBOH5T4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/costmanagement/mgmt/costmanagement/costmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Uw0lprS0/9wc3u5eTO2CLI2rJRM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customerlockbox\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customerlockbox/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customerlockbox/mgmt/customerlockbox\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1F4dLBbvfrUJgD97rjly/9bohwGk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customerlockbox/mgmt/customerlockbox/customerlockboxapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1unT0NANC7S2zDPwzApSIySi0X5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customproviders\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customproviders/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customproviders/mgmt/customproviders\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xOlWa+5yPOGOzobOeZemUXHGI1A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/customproviders/mgmt/customproviders/customprovidersapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZrkrFCUj7PhzvxN34uyYtsUGcTs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/databricks\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/databricks/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/databricks/mgmt/databricks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EgiCj43KKrORurrNLmMFnGQ1Yos=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/databricks/mgmt/databricks/databricksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BLw+jfsEl8icQMLV+awCRm4nVz4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datadog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datadog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datadog/mgmt/datadog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jWHcF4ZCitcm527eDbyd1WTJJhQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datadog/mgmt/datadog/datadogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15whPK5qTTPKj4pzGg+6Y0YSYOig=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datafactory\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datafactory/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datafactory/mgmt/datafactory\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hi0ntJLD236E1ZPzs8y7OsQQgNw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datafactory/mgmt/datafactory/datafactoryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15W2VR0M+nNvoppaPo+kbChgFjCE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/catalog\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sUzjFbNdQ6OEOeocuSwic1QqpVE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/catalog/catalogapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MtMTutSqF3eSLA/CuMp0mQ+xU/4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/job\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EDTNrpb1uG5rXeHNh5WEfVr2VME=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/job/jobapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1liOwFxH/VDvpsXlXSfcPhebEF1w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18tzundum2vgnvZs0v4sLdn5hw5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/analytics/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hSZBl+Jrx2jyBn7BMMUY6FVjOvw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store/filesystem\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ysjSpklGcltMq87b+flj0RLr5Qk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store/filesystem/filesystemapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hMWW14PotwuuAaVjzklTDWld75o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store/mgmt/account\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17HjE58nyiJBpHP4lQIKq6NRvaq4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datalake/store/mgmt/account/accountapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FKbIEOqtCMKNThJ+T6VrPpwLx5w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datamigration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datamigration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datamigration/mgmt/datamigration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eOzd+K54dHz/QRXfMSC8Wa6hClI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/datamigration/mgmt/datamigration/datamigrationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HRbn8wa/+wNIPBunpA8Z89EiD3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/delegatednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/delegatednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/delegatednetwork/mgmt/delegatednetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FoAZI3PelvyhiQcUJfdSyQpdBBE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/delegatednetwork/mgmt/delegatednetwork/delegatednetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oASl7rpHEgWWW+oNF8c13KD/Ooo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deploymentmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deploymentmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deploymentmanager/mgmt/deploymentmanager\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kFYMUl0h2o7/Q57KZje4cf/lSAA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deploymentmanager/mgmt/deploymentmanager/deploymentmanagerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KGMyHg1A96iVna9sxHL3sjxBOMM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/desktopvirtualization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/desktopvirtualization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/desktopvirtualization/mgmt/desktopvirtualization\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tiBeyU55ND9JJFnx8arE58Nb4g4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/desktopvirtualization/mgmt/desktopvirtualization/desktopvirtualizationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1V496ymrPaxcLRdpSk+dmCNxCHLQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deviceupdate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deviceupdate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deviceupdate/mgmt/deviceupdate\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11PyXdMxW/Wpt+eG9eTQaqtSzso4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/deviceupdate/mgmt/deviceupdate/deviceupdateapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1iJtRHm69s4GJS/yoP4IWMpFx0Ys=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devops\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devops/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devops/mgmt/devops\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WsRLM9KuPcU2UNPHLI3CvgEmy2M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devops/mgmt/devops/devopsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sI+a9CyuISGzTf4TfJFl4SnS9Ko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devtestlabs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devtestlabs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devtestlabs/mgmt/dtl\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WtzzctqixGngYL/ocl6zhPZWF9A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/devtestlabs/mgmt/dtl/dtlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1OhgTHpKfy4U2po4xW/6+XNcqwWs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins/digitaltwins\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zdKAkYp3CjBY2swyq+tVnKERzuE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1h9WT+OH9q+EWR9ygmsWTszZH7ac=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins/mgmt/digitaltwins\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HkqrY5rI/6knYwt7UHNahoucjUs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/digitaltwins/mgmt/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ihPHsHHxVhFVCJ+bsD/zpLJr5Mc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/dns/mgmt/dns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qv3HuroG4wD5xQIzGrwSMPOkhjw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/dns/mgmt/dns/dnsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19tAsYU8NoSwXRYH8eOR0UFAuOvA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/elastic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/elastic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/elastic/mgmt/elastic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1swN363V+WgMuhLbxaFzLL8kSSYM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/elastic/mgmt/elastic/elasticapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nUqSc8SRJh6JPMprXY1Ty6mCLGg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/engagementfabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/engagementfabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/engagementfabric/mgmt/engagementfabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xHD0YxOyqLfTRtjgMc60LMbveMM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/engagementfabric/mgmt/engagementfabric/engagementfabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GhmcJdRC5YVmQPcEbzf/jNoNTd4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/enterpriseknowledgegraphservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/enterpriseknowledgegraphservice/enterpriseknowledgegraphservice\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZtURXrjbIkGJ7qY/i+e9ubmEMW4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/enterpriseknowledgegraphservice/enterpriseknowledgegraphservice/enterpriseknowledgegraphserviceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1l39na0NVLiw1ZLhtSPXefkO6rvg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventgrid\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventgrid/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventgrid/mgmt/eventgrid\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16+DWwLy4N0cvPIIJgd0nNeD8VIY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventgrid/mgmt/eventgrid/eventgridapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E4Qfit5XcgrluGXNK0kGzO7Igds=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventhub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventhub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventhub/mgmt/eventhub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Zgs/1Uhxd7oZLo0haMgZJqlyWio=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/eventhub/mgmt/eventhub/eventhubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ohd8EQolQpJK3utN/449N2HX9Es=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/extendedlocation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/extendedlocation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/extendedlocation/mgmt/extendedlocation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rrJaSwN8AjRwEGzWB3BlkQsNx3s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/extendedlocation/mgmt/extendedlocation/extendedlocationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18C2SR7KaDD4KUCg+6bvGDRBTbd8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/frontdoor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/frontdoor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/frontdoor/mgmt/frontdoor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1F2IzPJ1Cs6KDPup+nOZuW26bkdQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/frontdoor/mgmt/frontdoor/frontdoorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bm1PAlrbo/RQsPKT45qGTqrII7c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hanaonazure\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hanaonazure/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hanaonazure/mgmt/hanaonazure\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yuhI0xRvtcU6Iq7ouBvM34cHAC0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hanaonazure/mgmt/hanaonazure/hanaonazureapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1miivgNtnDYVD7biyhC873JT0QY0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hardwaresecuritymodules\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hardwaresecuritymodules/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hardwaresecuritymodules/mgmt/hardwaresecuritymodules\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10xnCn29XQVq4xQ33j5n45quqWS8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hardwaresecuritymodules/mgmt/hardwaresecuritymodules/hardwaresecuritymodulesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1P2lFn6fwWk5KLMt0ZRkOkiU+ZqI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight/hdinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WT7EhbKbWlZatAVm07d8zDjh4sQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight/hdinsight/hdinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jyTiH/yznp9gVFznX+eT3imxZeo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight/mgmt/hdinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+XRtYDDdhkaF4SM4mXaMlF8tujM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hdinsight/mgmt/hdinsight/hdinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZDSZLB+oHB58FTE08aDIpAanT4Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/healthcareapis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/healthcareapis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/healthcareapis/mgmt/healthcareapis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10pQHyZNWpj3MBe1m2ZPCDDaxdXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/healthcareapis/mgmt/healthcareapis/healthcareapisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ouJ2XnO+yeREEu1/JKdQw4veszk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridkubernetes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridkubernetes/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridkubernetes/mgmt/hybridkubernetes\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14jfkSLjKxuTXOZLy1EaOQ7tw7G0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridkubernetes/mgmt/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VKdfpuSG//rilRoKgQ7tnFEiWTE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridnetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridnetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridnetwork/mgmt/hybridnetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16FO8iMvQKFAcon9a7JNNK6uRAjo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/hybridnetwork/mgmt/hybridnetwork/hybridnetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1TSSlfQLwhe4NnLfbBo48Yu621dI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotcentral\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotcentral/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotcentral/mgmt/iotcentral\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zzOqKKgMCGg8qeGfsbiE9XA8sRI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotcentral/mgmt/iotcentral/iotcentralapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1L9bf7gMNIGE9ZHeJVaJUIl1XcNM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iothub/mgmt/devices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xxtEnl2TXQAFCW97fe7+XulQfG8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iothub/mgmt/devices/devicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Me2KgRJQdAH06e0yARj5Idi0HcI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotspaces\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotspaces/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotspaces/mgmt/iotspaces\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DStEBxat9RWbCLLxixSSgsHu8Hk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/iotspaces/mgmt/iotspaces/iotspacesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+RIr1VUQKPpR+a59K4wcraYfdmk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qN/xmPC05Zs6QRhRhGhtI78e78c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/+k7Y00wygaUrtIDoL4UpUb8eQY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault/mgmt/keyvault\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PgfqaFeqtpS/9nI6iksF0COb1/o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/keyvault/mgmt/keyvault/keyvaultapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GJo+Mm5DHRl7/qMYWgxiZdKfK8k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kubernetesconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kubernetesconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kubernetesconfiguration/mgmt/kubernetesconfiguration\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EWSxzWAcWEsSFmgprlt5jwwIInM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kubernetesconfiguration/mgmt/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13PrehFEOkbPIJgwxfdaZehAVn1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kusto\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kusto/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kusto/mgmt/kusto\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CScYH0IjGD99sntxfx8xFdVSNwQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/kusto/mgmt/kusto/kustoapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nR5iWyMr7uu3HKol7Pv1SrwVUaE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/labservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/labservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/labservices/mgmt/labservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yFezbt/pJLa/hqNW+IefusvSxnw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/labservices/mgmt/labservices/labservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16//hCB6pTojy+wetRx7y703Nryw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/logic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/logic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/logic/mgmt/logic\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19QIsMQj1DXkjo4MenfmFIENY2Ps=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/logic/mgmt/logic/logicapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XgNCLcQW63yaosRdMhKcjIVDtKw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/commitmentplans\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ximyqpG8c1Y6c5vgby/hDcILaGU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/commitmentplans/commitmentplansapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Hw/OVF10vP0iA+CvKreZEVvqF3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/compute\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LNQ7W0SxkoddeFusOy85JOxnuhQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/compute/computeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12MSM6NFFZfukJbaKdmtSH0TxV60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/experimentation\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1iVarhjWgf6wQF4vCmwMGhlPOpgI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/experimentation/experimentationapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1v8/N5DNNf5yPECmjjzvYj6XA/+M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/webservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1x8a/0CC4ztR2XPbcfM3GKxhs8OQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearning/mgmt/webservices/webservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mX7G5gDp5/8LNRg+Ld3Hrn4Z9xg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearningservices/mgmt/machinelearningservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10ceOOo3bvIJ7QvDsMdImKOsFyKE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/machinelearningservices/mgmt/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j8yu7qcTduGSETz6TmljY3JsLQY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/maintenance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/maintenance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/maintenance/mgmt/maintenance\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12WPQEq9c8WCRqtOIYM5uSKHyaAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/maintenance/mgmt/maintenance/maintenanceapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hNVIlxu1gMPsTiIPmefck1YvWM4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managednetwork/mgmt/managednetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D7Unmpz4I59ZpB8PoPrLNo+6yNs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managednetwork/mgmt/managednetwork/managednetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tQGLiLKjMIz9DEIqI+rbPKBqfok=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managedservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managedservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managedservices/mgmt/managedservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CgDMqb/FG7qJkiGddRpjOZ94bZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managedservices/mgmt/managedservices/managedservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18QbmW0uMCTuLLW1/KFt/z3O8UMU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managementpartner\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managementpartner/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managementpartner/mgmt/managementpartner\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ik5A9FL3cOy1CAlrWy9U22PuNcg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/managementpartner/mgmt/managementpartner/managementpartnerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+X6XwYlQfTzaTPVwiSpSh5i6fFg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mediaservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mediaservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mediaservices/mgmt/media\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1C9sd2QHcIRZUszz2oVChTHKnO+s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mediaservices/mgmt/media/mediaapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EpB4w8qft7S1ePaBawRElSwShN0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/migrate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/migrate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/migrate/mgmt/migrate\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QtLwUzGbCeALAaEo0M1E3HATaCs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/migrate/mgmt/migrate/migrateapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1etwc0C0ZjfHH7yh3g0cMcfSWtOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mixedreality\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mixedreality/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mixedreality/mgmt/mixedreality\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GbKnjTtCFKmZzvK+4HZyHHFD/Js=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mixedreality/mgmt/mixedreality/mixedrealityapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1n19JVjI0KGuOuRlODSmq6B0AqA8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/mgmt/datacollection\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FwxycDdyqlpC3WTeuDcIA5DB25U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/mgmt/datacollection/datacollectionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mdlx27YpRgBMqNwtQdHllkwy+tY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/mgmt/insights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XQhtBY2kScXxACqoMRMmVQUkJeA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/mgmt/insights/insightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JRhF0zVYpd22WvOsfts4rVGpOx8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/monitor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZLWStzvsVv5ilREj1FZm1m/x+kk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/monitor/monitor/monitorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1byzPab7+G/BOtSWy2fA+Z501Wxs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/msi\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/msi/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/msi/mgmt/msi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1P+nIA3jkP5v84W+zQmYOIHPJado=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/msi/mgmt/msi/msiapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZC9ajrOi9BQUq7jEnin3RYgMwCY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql/mgmt/mysql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oyMZZ2gLSalykF5AzsSws0yeI/s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql/mgmt/mysql/mysqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q134bPbtHu8eOOxbehpK9Vf0f42Zg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql/mgmt/mysqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Zno7BujBx7BdTm4DBsPoX60hh+w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/mysql/mgmt/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pX5EIHKAAjREXJi2S37DU/1EjSc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/netapp\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/netapp/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/netapp/mgmt/netapp\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W8e3eHPqSKH4N+XIM3Ct3tR+rFA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/netapp/mgmt/netapp/netappapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KL+7PyEDDBxT9g2AKxC2M/+coJo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights/mgmt/operationalinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zwnHwU9jK39F8jWCRb4OLF9vllI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights/mgmt/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Jo13T2NtFZT8PWOuLNbJbYSiV18=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights/mgmt/servicemap\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Y96Z+bFC+rQKoM6wtFISehe2Eq0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationalinsights/mgmt/servicemap/servicemapapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1B5n4RrlI23VbKaqXcPeSO9V1Dtg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationsmanagement/mgmt/operationsmanagement\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LH8FiFYg/2wZQ/6NjKXRwVoZ7I8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/operationsmanagement/mgmt/operationsmanagement/operationsmanagementapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17J4I6rQ/AOUjXGOU/Ar9XLZTXi4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/peering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/peering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/peering/mgmt/peering\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tijNrz1u1mGCISaosVlu1/MP5gM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/peering/mgmt/peering/peeringapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1bt5FhSSGivskE6wobA9pbttZ+ck=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/policyinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/policyinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/policyinsights/mgmt/policyinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MOtMaov5nDswMNtyC6I8cr0s/ug=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/policyinsights/mgmt/policyinsights/policyinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D5nv6FdRz+YFIxZVm5Tbv5m7nAg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/portal\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/portal/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/portal/mgmt/portal\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gI0Aut6adZpVXyc+wrMTNLASt28=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/portal/mgmt/portal/portalapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1a+6chF6d+V2evUaxxgyraxqoXdM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql/mgmt/postgresql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1c8GsID6yX6G5aW3nFTovgKBSGJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql/mgmt/postgresql/postgresqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/IG//HSejt25tx4ENXZIvKnRx3M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql/mgmt/postgresqlflexibleservers\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10nxkWZAkt8wg+icpXAS7X1lS6aY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/postgresql/mgmt/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1P1dlSGZ2Y8jz7pbmoO78fAgoIZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/powerplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/powerplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/powerplatform/mgmt/powerplatform\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1du+61KRmu8zIy7krUYIV72UMpwc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/powerplatform/mgmt/powerplatform/powerplatformapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VDicOgPWLqha4F3swGegs8M8J60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/provisioningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/provisioningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/provisioningservices/mgmt/iothub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LPjMOdAQxvxbXGT/Mv+GL09riLU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/provisioningservices/mgmt/iothub/iothubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YpjS29rRHBkMzvRkwGWUnHP9lOc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/purview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/purview/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/purview/mgmt/purview\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q155LJHdLtdzjiEo2/5JKU/KJ8jWk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/purview/mgmt/purview/purviewapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+avNnZ4XiBenme10HnHKtPpwVOA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/qnamaker\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/qnamaker/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/qnamaker/cognitiveservices/qnamaker\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PNmk7xjrZ3lwCtbRvOSglhOMWtc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/qnamaker/cognitiveservices/qnamaker/qnamakerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ry+hnNw6LP6lKYoLjyMzkm+Kuj4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quantum\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quantum/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quantum/mgmt/quantum\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1br6sJXtIBmrUOOiwthnXyUwfn+0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quantum/mgmt/quantum/quantumapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D0jIVV/T3/QwGV9d0SJfTVl0kkA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quota\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quota/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quota/mgmt/quota\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wejfmLARBX9BkX0t+I50e5+dZZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/quota/mgmt/quota/quotaapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kF9QSD4nwLeErHnrd0393Bhc3XA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redis/mgmt/redis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11zHibi4etsdEyCSfWMJtQ0pqCqA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redis/mgmt/redis/redisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16YBZpfzxRD+qIbuEZO7u0cTCeCw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redisenterprise\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redisenterprise/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redisenterprise/mgmt/redisenterprise\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eycXTkyl9eJbKeptM2VASczxKm0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/redisenterprise/mgmt/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Hy+zcOu8hMj5wZLjzOYaDdhmVIs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/reservations\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/reservations/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/reservations/mgmt/reservations\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zNOP2/Sq7/r0zBaahUOHu6mPen0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/reservations/mgmt/reservations/reservationsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zwY0HhXrvYpSdZ7sKmbaNREMAGE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourceconnector\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourceconnector/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourceconnector/mgmt/resourceconnector\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15/aijdBKckzsOd31hojc2jaCh6Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourceconnector/mgmt/resourceconnector/resourceconnectorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CBBXQplZLtmbOyiUOkf5DuH8Hlo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcegraph\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcegraph/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcegraph/mgmt/resourcegraph\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MGIH0ggS+OXlg43YiCP9mhLE3DU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcegraph/mgmt/resourcegraph/resourcegraphapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rReZz1ByY7xz8U3IskdbX5yZ15o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcemover\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcemover/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcemover/mgmt/resourcemover\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BuKhDE/xPcA8YlV7b1O2ueOvXyo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resourcemover/mgmt/resourcemover/resourcemoverapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13B+NGo6zY0RX+er/sLeDsl8i+1w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1D8Vc/0iodInkphSWM8/YDnLCmTw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MzyDGEPt46bOaZquRVlOiUqmyKE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources/mgmt/templatespecs\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xgx4SQ2sw5l0XwkAQoFwzgb7H7Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/resources/mgmt/templatespecs/templatespecsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NVi2goRxtlkgrmPe4AlnQHGoJUQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/scheduler\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/scheduler/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/scheduler/mgmt/scheduler\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mwbTRJphlfMQ+mwECjbTxcUbhb8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/scheduler/mgmt/scheduler/schedulerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Mir5KZ+2hdjtt6x8g0qLEn2glAs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/security\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/security/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/security/mgmt/security\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1hBczzBAxk98c4OdPJgnrKFK28VM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/security/mgmt/security/securityapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Z66fQs4R/k+6W4LzjVQMfRcwmyE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/securityinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/securityinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/securityinsight/mgmt/securityinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q15Wve24Yv8J+eJpg+R2ycM242ZIY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/securityinsight/mgmt/securityinsight/securityinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18Gb8ia4nym23MlX3gfcvJgaIgkA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicebus\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicebus/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicebus/mgmt/servicebus\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vOoDF+9/TDME5PQOAz5hH5veSoU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicebus/mgmt/servicebus/servicebusapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10yPKw4kms0VqesIN6yrV4X3ZmRw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabric/mgmt/servicefabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W/EdLQakVKxYlGCWoXOMXyFxfKg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabric/mgmt/servicefabric/servicefabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lnx16F8OejT1BdVmkaADUn9FYb8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabricmesh\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabricmesh/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabricmesh/mgmt/servicefabricmesh\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17Mf59+B4Vpq4bOPTP2LUdunNIUQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/servicefabricmesh/mgmt/servicefabricmesh/servicefabricmeshapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1E53KLH2pT6fuPJkmjF8hqIeIXUA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/signalr\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/signalr/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/signalr/mgmt/signalr\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1srbq6tcsAJ4t04S1YG+pw0H7d/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/signalr/mgmt/signalr/signalrapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zILQpyLSPceCVVkzjL1qjk0Zi1o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/softwareplan\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/softwareplan/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/softwareplan/mgmt/softwareplan\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q112edCPUptyOSA3RNwcsSeD3xaQM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/softwareplan/mgmt/softwareplan/softwareplanapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lWMK2VVQOJ6ReQ0nD5e17kTrGFs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sql/mgmt/sql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gPbkaTz/AAUpMIdKPepzYkEQfIU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sql/mgmt/sql/sqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DPxmfRvBJO6xXOquxI93W6CFGZs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sqlvirtualmachine\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sqlvirtualmachine/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sqlvirtualmachine/mgmt/sqlvirtualmachine\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1veoB5Oxa91Rclw3OGAbtNkmvV1Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/sqlvirtualmachine/mgmt/sqlvirtualmachine/sqlvirtualmachineapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1G9DJmCyS7cuUiMOGumP2y1EQpNg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/datalake/storagedatalake\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1EITK+8dd0vnZgEmViD4c3SOceAY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/datalake/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1JP7CNMSXRYoj2vyo9FG1Xw43hZ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1TTaZhot8KJ9txeGIxwSGMKiQ0bA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tXxdmQ/MU1DEkwFLFUYXhsi6ENI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/tables\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/tables/storagetables\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WRJ/tXHEpXcgEoPCGnmfnTm7Zjo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storage/tables/storagetables/storagetablesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1zb3hfyVbjKTTamZTP2xMB/8aFvY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storagepool\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storagepool/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storagepool/mgmt/storagepool\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13b4WnNcYd2WZNas1MAIn4h/E3Mg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/storagepool/mgmt/storagepool/storagepoolapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VIQkc8ZeqMxzTyYf/LvyEC5LDX0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/streamanalytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/streamanalytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/streamanalytics/mgmt/streamanalytics\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1O6chOt0FEWBUn7Zzjb0vcF393bc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/streamanalytics/mgmt/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+mgZb4+llD9cxgcj8+ExOJGJMts=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/subscription\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/subscription/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/subscription/mgmt/subscription\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1mAeHuKiEdzRNA3FR1JezPhzp4i8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/subscription/mgmt/subscription/subscriptionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LL0XJprBEUvpJailanv3SmbR/VE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/accesscontrol\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1DbUhyh3FiF3bsxLxiouAcN2wQ3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/accesscontrol/accesscontrolapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1CeIzaFDXJbeFHA9kPvOA7OEetHA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/artifacts\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14YVLNUpnFnpo854xXf4+QqCKW7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/artifacts/artifactsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18yityXCPQaQRgWEJlZR7rcR/4ZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/managedvirtualnetwork\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VIXPocthBE/HKIN/yhdxEE4ktkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/managedvirtualnetwork/managedvirtualnetworkapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dYT2z7GiOrt3ggXIN7H8Sxpyqfo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/mgmt/synapse\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ljDv0IsC02DanK2s80Dp3L+hfVc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/synapse/mgmt/synapse/synapseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1wyCigG9pl8Fc2CHj2d2RAm+KHkE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/timeseriesinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/timeseriesinsights/mgmt/timeseriesinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tRH1ahqUXFEHpqLwddwiTqDBoQw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/timeseriesinsights/mgmt/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dcbeGU8+vS6S8/zqnXadpkSAoqI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/trafficmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/trafficmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/trafficmanager/mgmt/trafficmanager\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q14TDQV2Nche0Opcfuep8CUf5SuaE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/trafficmanager/mgmt/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1J2uajszR6xeBPEeGuVXauHvGsU4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/videoanalyzer\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/videoanalyzer/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/videoanalyzer/mgmt/videoanalyzer\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lK38NO9E/I6Jvf3p4WiyLWvDzcU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/videoanalyzer/mgmt/videoanalyzer/videoanalyzerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pAAcL78lns9v7QyQ5O8b0LonXok=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/virtualmachineimagebuilder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/virtualmachineimagebuilder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lQy5Hbmusu2zdbE8kUubDvKvht0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yXqjB52HdgjK0vvamkva3/v4gIw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/visualstudio\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/visualstudio/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/visualstudio/mgmt/visualstudio\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qP1ed034mfFl2bF8G6XWeZIgRbg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/visualstudio/mgmt/visualstudio/visualstudioapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q13SACsawMHUMMkAghkDd6b8r2zGc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1jjMUEdgOgpf37SJq2UBzTKUZ2RQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1YMSWb2ZGx22hQd04FAkJblZH5IQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/webpubsub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/webpubsub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/webpubsub/mgmt/webpubsub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dDl2xDvSUiUN5XifLLHo/1UiJTk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/webpubsub/mgmt/webpubsub/webpubsubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1WjCk+IwIIDYQjf3LvJAFEZj2G+w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/windowsesu\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/windowsesu/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/windowsesu/mgmt/windowsesu\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NSIJRpnl/xEjQageK7ytNGV3u8s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/windowsesu/mgmt/windowsesu/windowsesuapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ItmjxzB/c9/6DoR7yD3HtzjvsNg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/workloadmonitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/workloadmonitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/workloadmonitor/mgmt/workloadmonitor\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xHr39014vGKbHFsC5M9tlzaSgZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/preview/workloadmonitor/mgmt/workloadmonitor/workloadmonitorapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1rtn9kznPGmFpAupPeymkVIaMN7o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/privatedns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/privatedns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/privatedns/mgmt/privatedns\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VuCyI7GqqL/dutzBucd1IurTocQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/privatedns/mgmt/privatedns/privatednsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GdJg4nWq2Z17Qso5FKVoNlesy+U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/provisioningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/provisioningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/provisioningservices/mgmt/iothub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1T2KVnn+nwYnPtIjZscb7f3sbjgI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/provisioningservices/mgmt/iothub/iothubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pzu4FIeznbgml6+L+9k0RhFne9I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/purview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/purview/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/purview/mgmt/purview\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1XQDWq4MzH5ZcogvGdI6t6xGcYkY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/purview/mgmt/purview/purviewapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VeyYCthYMViS/QIMVYvYlgIiCdk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/backup\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1QAeNGXT08jYB94mYyFOiRbDQjQs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/backup/backupapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18cmCFuHug2TNw5FTr/YcV8+SBfs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/recoveryservices\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gbg010E4OZllekeL+wCWuR22MgA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/recoveryservices/recoveryservicesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1nS3zWm7jSiJ5DCA+v2A1hY1DKPM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/siterecovery\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tQL0Ym9k2eXtU6980Dq+8l1eDyc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/recoveryservices/mgmt/siterecovery/siterecoveryapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16DFX6PT2KA4cliKnun89nN7K+RU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redhatopenshift\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redhatopenshift/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redhatopenshift/mgmt/redhatopenshift\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1duvBUB5zzRTYezrCoA9N1vI94Ow=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redhatopenshift/mgmt/redhatopenshift/redhatopenshiftapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+ObrDDlyAz2IoU+gBbkg2to02ZQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redis/mgmt/redis\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RDtJwgpR9cBz0+QodrPMGwBE/QQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redis/mgmt/redis/redisapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1k0ZlxQDJXIILT0ibtcGDqkcdQhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redisenterprise\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redisenterprise/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redisenterprise/mgmt/redisenterprise\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yMpx6a88gnvUAU0Mm4T+/NTB8qE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/redisenterprise/mgmt/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gFVso3X8t3TZeR71xAiVOYLQxno=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/relay\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/relay/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/relay/mgmt/relay\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ggd+awV1b7fjFaRAslpRd7RyudU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/relay/mgmt/relay/relayapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZO6cvNZzauTZrmmQ0n4FJ6cB1gI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/reservations\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/reservations/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/reservations/mgmt/reservations\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19m/YO/tGXb3QkGzONn1zUGYcdZ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/reservations/mgmt/reservations/reservationsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q11ojj2u6czDpAMDqsttNf3yZt36U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcegraph\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcegraph/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcegraph/mgmt/resourcegraph\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1z4eW06K7dGcQYL+QSjYiHZ22M1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcegraph/mgmt/resourcegraph/resourcegraphapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1BY9OQvMStA7WDHnLogmBr5XmGMU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcehealth\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcehealth/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcehealth/mgmt/resourcehealth\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KU8hqoyDojfNZ4h1BL2AX0rI2sI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcehealth/mgmt/resourcehealth/resourcehealthapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1z+9kVNHxSQ201LljmdS5gyCGr8M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcemover\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcemover/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcemover/mgmt/resourcemover\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VFLe5pCBOSbLqe4HjxOmtYtUiQc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resourcemover/mgmt/resourcemover/resourcemoverapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MLrr48V3dKwAsb5KgKs6FEW1tfU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/features\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vMV6ksYVjJ6Ewk5Uhf4q2B/lpmA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/features/featuresapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1fcfTT9fexKFTUxFYf8lli2rkKAs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/links\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1gI0cwmU0PX+NnKgOM+PeCoYzmr0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/links/linksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ZpIudH08cunCzFxU2Iqj1xAK/h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/locks\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1pIm2y+a/EderWXcAjgYA9fZnlTc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/locks/locksapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1A3dWPJwNNWmWO9wWEcc7L/1xd7M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/managedapplications\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1sA9lWs337R7NGDBwE0+okWm9j+U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/managedapplications/managedapplicationsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1RxSY4o0CHSS4edE2Lv2QAiTAAH8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/managementgroups\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1yq7uKl0zBxJepwEkDVbcUfURN60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/managementgroups/managementgroupsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q12sRbNPJeVxik5wQVCILFnpFlyWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/policy\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1dBVChNRUQPlk+/Mh9i+dwSxxvm0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/policy/policyapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q16LOC+ONsG0rst8IwtGsXyBQXMgQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/resources\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kLfkQQ/V7IjiOvlimZHID1lQKu0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/resources/resourcesapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Ih77FPdRUVbvkxdBqBIVggCM2AE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/subscriptions\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eMBK5Nwa48b//UxiLU2y+LoCvq0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/resources/mgmt/subscriptions/subscriptionsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1S404ch/qn+x8rE5UzbkQfONNqZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/scheduler\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/scheduler/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/scheduler/mgmt/scheduler\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Eie3CmIwWuJSY9g2rsIlwHY8JqU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/scheduler/mgmt/scheduler/schedulerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1/oaOt5KzgJmeqHUdAgoBYd3JBrk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/search\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/search/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/search/mgmt/search\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10I/v0JhbpjnNNaxWW89Xwbne95Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/search/mgmt/search/searchapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19c1QtVu/Xce6JKQPrbn2E6o3o1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/securityinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/securityinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/securityinsight/mgmt/securityinsight\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1SCzSngZux9v6yHUD5fWf6cU6npE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/securityinsight/mgmt/securityinsight/securityinsightapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1daqoHn75HIuOzTkNVdO/1Ci+xVA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/serialconsole\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/serialconsole/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/serialconsole/mgmt/serialconsole\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1UflbGsOflys6DiYVbHLYglidyqE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/serialconsole/mgmt/serialconsole/serialconsoleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1f1sCFGrA1dhnDKgafu98L5fsdqU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicebus\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicebus/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicebus/mgmt/servicebus\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lVqovB30t7XGgvr8CPWl1mhYUz8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicebus/mgmt/servicebus/servicebusapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eCKMcQkaPMHy6jD6oHl5X5o0q+A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric/mgmt/servicefabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1PdcNuzc1VddUgIdfMQoqLAamjdU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric/mgmt/servicefabric/servicefabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q17jHGH+ypYZ1aWIqA18OEejazLOw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric/servicefabric\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lyupzxGmU5FFp3AUinTb0srFy2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/servicefabric/servicefabric/servicefabricapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IjMHQ80ak/QAgBhrPhLb6LVNxS4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/signalr\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/signalr/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/signalr/mgmt/signalr\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1j5B0vg4nWQCRysjLPKXjLyLC76E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/signalr/mgmt/signalr/signalrapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1MpOKEpzrUqmrc26FwLxtJqVBPUk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/sql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/sql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/sql/mgmt/sql\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1KsWnbPQbHX3Di2GfOchv2m9VN8o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/sql/mgmt/sql/sqlapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1GTOhJfuQE9M/jyFRYybsQWRqzTQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/datalake/storagedatalake\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vPluDHnNAzWAxu9PR4/Dwbqv0iQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/datalake/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1+ZIFq/TRuxI/1oD0dINGwNu10ss=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/mgmt/storage\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1W4CMFdobbX2hxs499E290cjeMDE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storage/mgmt/storage/storageapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1C6N0xKBZLTktgft58UbR+ODU+tA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagecache\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagecache/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagecache/mgmt/storagecache\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18Ih0fi7b/LTyy4Jahb1brPduIjw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagecache/mgmt/storagecache/storagecacheapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cnvtLYVBJOwGqnBlCmr6nhac1RA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storageimportexport\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storageimportexport/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storageimportexport/mgmt/storageimportexport\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1xeAeiCKFLq315SNGk7C08cNP6Wc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storageimportexport/mgmt/storageimportexport/storageimportexportapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1oEAB3zV+P3XqDg5+yCWMvSyi9KA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagepool\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagepool/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagepool/mgmt/storagepool\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1lzsZhhHy65m8LrVXiwejKUNtBHU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagepool/mgmt/storagepool/storagepoolapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1M5m9kj0VgskA1CnAfhG5CdaJFH0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagesync\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagesync/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagesync/mgmt/storagesync\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1eMqYQiHzsLGxAqNf3vemvXgLnyg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storagesync/mgmt/storagesync/storagesyncapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VWofpS7Cksi5V47M5HVy79a1q4o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple1200series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple1200series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple1200series/mgmt/storsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1UMuZFxZE4rchmRqcT4y9CBjiAlc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple1200series/mgmt/storsimple/storsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1IwysIXKHJUTAQ0JKOHFEdaNCke0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple8000series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple8000series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple8000series/mgmt/storsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q10LiHhb8eY4I92AxTeNYqg2v3zeo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/storsimple8000series/mgmt/storsimple/storsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1L1L9kALm+uhhY2F3gcgqzgRSOj0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/streamanalytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/streamanalytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/streamanalytics/mgmt/streamanalytics\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q19miy5RND831UaadgZMdSRvLzXHU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/streamanalytics/mgmt/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1H7ANw47ixe2aqvcLOw3wrlhZnoo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/subscription\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/subscription/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/subscription/mgmt/subscription\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Lvot1/PuZp07j8Bkbw0FZ+Up0D0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/subscription/mgmt/subscription/subscriptionapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1i5/qxRJgqY9eV4dSb2E7YXS2a5Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/support\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/support/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/support/mgmt/support\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1as0UvBbLglcKZJCKrPuAyybjsfE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/support/mgmt/support/supportapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kbI7mgikO/g0wY++Aw01F+oybh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/synapse\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/synapse/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/synapse/mgmt/synapse\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LRP0yhAbsy7ES2AVeIByLmNfY6s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/synapse/mgmt/synapse/synapseapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1Bq/LXw6y65CrO94Wd6vyNxqYiuA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/timeseriesinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/timeseriesinsights/mgmt/timeseriesinsights\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1tr7Q5xH+yTFlxNJkn/hqv/wGjQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/timeseriesinsights/mgmt/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1r29FR2wsDG4v2gAWuq/GFseAUwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/trafficmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/trafficmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/trafficmanager/mgmt/trafficmanager\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1qQ1tCpsR4jUyN2EFDMLh15aJelQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/trafficmanager/mgmt/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1vlyeQf2A5BX+3DvnZJFwkLMIcA0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/virtualmachineimagebuilder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/virtualmachineimagebuilder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1VHtxiITyi55b9ThhHd1lkoEK7K4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/virtualmachineimagebuilder/mgmt/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1kW2R4VGVkPnGS2gitwIzTSEQDSI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/vmwarecloudsimple\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/vmwarecloudsimple/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/vmwarecloudsimple/mgmt/vmwarecloudsimple\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1UYzkzQFJDWln5Uerfcwx0i8k7Ek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/vmwarecloudsimple/mgmt/vmwarecloudsimple/vmwarecloudsimpleapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1NbIpGY3CPocOrKofD1149ajKw8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/web/mgmt/web\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1FbNRPRQ1JfHtFmgYFXfAzW4IrJ0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/web/mgmt/web/webapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1LhMlaHDjCXtDR+j34+knBuhgEc8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/webpubsub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/webpubsub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/webpubsub/mgmt/webpubsub\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1cuZ6EcWKGgzOdW+Evs4l3h2eYwo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/webpubsub/mgmt/webpubsub/webpubsubapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1ONUhdonRdVjs4NSeJJQ6MxNZ6Kc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/windowsiot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/windowsiot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/windowsiot/mgmt/windowsiot\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q18ZGThCcPC3Oxbykgy4MDn82LnkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/profiles/preview/windowsiot/mgmt/windowsiot/windowsiotapi\nM:0:0:555\nR:models.go\na:0:0:444\nZ:Q1HYf9GjXylbUp0I3OneOJltvuz/w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2017-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2017-04-01/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AiCJN3Go7SyZpxRMMxAKVoo+rls=\nR:client.go\na:0:0:444\nZ:Q1AqSXGKtOAug9C5gNH0qlBrc0gV0=\nR:diagnosticsettings.go\na:0:0:444\nZ:Q1wJyok5tJInp7zEeQ06SVVWeVZBU=\nR:diagnosticsettingscategory.go\na:0:0:444\nZ:Q125S2fDiw4SgRGXlQjrC0vDbEAHU=\nR:enums.go\na:0:0:444\nZ:Q1nzhTvE26uf3Cszf6w52a9Q4cbd8=\nR:models.go\na:0:0:444\nZ:Q1l+JL3skwMsa1+z+cl9jt8/Uce2c=\nR:operations.go\na:0:0:444\nZ:Q1pB35PblNiqvwmu2lc+v0UJzV1sY=\nR:version.go\na:0:0:444\nZ:Q1j4vVIiyIUDdfQqjIp9utIkPnPm0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2017-04-01/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JUJyoNfR5umXtiPqVqvhKvgAx94=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2020-03-01/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pQT0YUOp1RNLlS59jjpzE2LIq6Q=\nR:client.go\na:0:0:444\nZ:Q1WKd90edh85nh5HCQcxN1BingCyU=\nR:enums.go\na:0:0:444\nZ:Q112rxXj51lw66yZWHZI4DfLL3omo=\nR:models.go\na:0:0:444\nZ:Q1YNMsmTBUAk7kuImU2RKaGzzp0VU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1Sf0Y5AM4uH3XzxVWtXrt9XgJAZA=\nR:privatelinkforazuread.go\na:0:0:444\nZ:Q1BuWtfIAsfOVUzkgbTQNqxyo38cY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q17PUy7T/JwYQnCjKgkaESjBYcvdU=\nR:version.go\na:0:0:444\nZ:Q1LBTRJ9GMKv7XM9/SQj6FDLcLGcE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/aad/mgmt/2020-03-01/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13zP4WOh3fqqvwDpSltFsdXf/6Fg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/adhybridhealthservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/adhybridhealthservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/adhybridhealthservice/mgmt/2014-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/adhybridhealthservice/mgmt/2014-01-01/adhybridhealthservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FRUvvUW8CYm2KujQVfoeYnVFPME=\nR:addomainservicemembers.go\na:0:0:444\nZ:Q17Pulb5oj7YLfQYNax7cMv1cPhXY=\nR:addsservice.go\na:0:0:444\nZ:Q1qmOm8jrAQl8er3V/G1clIGdobv8=\nR:addsservicemembers.go\na:0:0:444\nZ:Q1Y70PSZYQW6q6ftZ9IcsIyPuSqJ4=\nR:addsservices.go\na:0:0:444\nZ:Q15oL19deLZUO38WmHUumnrbBMfdw=\nR:addsservicesreplicationstatus.go\na:0:0:444\nZ:Q1BqJYtg3qQi1KSX5E6I3OF2s51qg=\nR:addsservicesservicemembers.go\na:0:0:444\nZ:Q132lAvbm1bjKUc092k+TEFH9tF1E=\nR:addsservicesuserpreference.go\na:0:0:444\nZ:Q1ZB/zQRf5uW7aVnzhi29EWDCj56U=\nR:alerts.go\na:0:0:444\nZ:Q16o8xcZFDyiUP4H9z6wDcFbLXBbA=\nR:client.go\na:0:0:444\nZ:Q15VTnsOMxZr7NcQ1pA+O+53/Ql6c=\nR:configuration.go\na:0:0:444\nZ:Q1Vv5ZMd6BU72bqI9bJ3Hf6AgFXOo=\nR:dimensions.go\na:0:0:444\nZ:Q1MUH91eHFM2kHcKF/jZ7Cpg69dGE=\nR:enums.go\na:0:0:444\nZ:Q1oBjXVJfy8uF3x7+wjwvxrXpHqV4=\nR:list.go\na:0:0:444\nZ:Q1XNuzUTy0jEIhwpXV9jphnZADGog=\nR:models.go\na:0:0:444\nZ:Q1Exkwey9/E5iMf2N+P3BoQYn60uM=\nR:operations.go\na:0:0:444\nZ:Q1bjh+u52L/7bHrdqhRpSysdT2m7M=\nR:reports.go\na:0:0:444\nZ:Q1SEz6WO2UQ2mKEL8QLuo5LIJ0ECU=\nR:service.go\na:0:0:444\nZ:Q1MZErnmtduXx1m3RjD0qSPQJiUJE=\nR:servicemembers.go\na:0:0:444\nZ:Q1g+a3r4dq875EiwyTcU/5PuSQm5I=\nR:services.go\na:0:0:444\nZ:Q1fWRzbaT6oA4TI3nZAVAeKQDyFf4=\nR:update.go\na:0:0:444\nZ:Q1HRgDqJG55RfFl/65PqAy+BTSSjg=\nR:version.go\na:0:0:444\nZ:Q1yFxInqQLyron8WgY2Zc+fPlCb5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/adhybridhealthservice/mgmt/2014-01-01/adhybridhealthservice/adhybridhealthserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rApiKgYxAkaGr2nlJC6RSxN3Kgg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-03-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-03-31/advisor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13MDoYgcAE/UAd6SvQdbUvnT8XP0=\nR:client.go\na:0:0:444\nZ:Q1LaYIEbBoE9iu9Ldxe8S+67reQ64=\nR:enums.go\na:0:0:444\nZ:Q1l8Kr4m/jWRFJpLjnXn1SXo03Yg8=\nR:models.go\na:0:0:444\nZ:Q1c8UkT/M2h4hpRMFwcUuGvlHkjKo=\nR:operations.go\na:0:0:444\nZ:Q1OLZCdhHgeJ6prSXuI4+eRabf4aY=\nR:recommendations.go\na:0:0:444\nZ:Q1k46JoPw/SGUn/HHmf3ZotBTGog8=\nR:suppressions.go\na:0:0:444\nZ:Q1uB9tx2o6I44nX9GLN93y+T4vRis=\nR:version.go\na:0:0:444\nZ:Q1GnVd/g9Ah73ZLV4sqFdrPyx9z7E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-03-31/advisor/advisorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DnAAPCawz+36PaDdVL295vXx9Pg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-04-19\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-04-19/advisor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nWvdrVeSkyjnU2vDfCEFaz25FRM=\nR:client.go\na:0:0:444\nZ:Q1kYrFywThd4E5zji7qp/vSLoneLY=\nR:configurations.go\na:0:0:444\nZ:Q1iOcBXaifayFiOUyIc5y3mJFZqIc=\nR:enums.go\na:0:0:444\nZ:Q1TOjRIKDndwHAPAXsqLOivpbi0Ko=\nR:models.go\na:0:0:444\nZ:Q1hG3jaUC/afzYgPVtOnKTk3pzayc=\nR:operations.go\na:0:0:444\nZ:Q13CApRbg2GugkI295NXxlF/tGGgI=\nR:recommendationmetadata.go\na:0:0:444\nZ:Q1UJTtdp9jVDqWiAjl+um18FUwnOo=\nR:recommendations.go\na:0:0:444\nZ:Q1JRrDS3yjodd8bNkB1hjsYnKAIus=\nR:suppressions.go\na:0:0:444\nZ:Q1QBPeKzLC3cQtil+CHy60YIKMl6w=\nR:version.go\na:0:0:444\nZ:Q1SIK5Emu66Leh5tySYJ19XnDv+qY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2017-04-19/advisor/advisorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NvsvRPiiFdOfB1EEZ3L172OcHnE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2020-01-01/advisor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hqtzJAxrCKosfxZK0cJfznm8eF4=\nR:client.go\na:0:0:444\nZ:Q1wzCHmIoHRY9rTP9TeJ0/8Gj6o+8=\nR:configurations.go\na:0:0:444\nZ:Q1fw9/gdGV+Qia5PYazqnWZZzGAo0=\nR:enums.go\na:0:0:444\nZ:Q1hbiFfAYU4UY6hNA6fv1txPJctyg=\nR:models.go\na:0:0:444\nZ:Q1b/DL9o1W+TEOZeK0XSwCQhn3Hqs=\nR:operations.go\na:0:0:444\nZ:Q1RTiwGIwMl+SseWdLWOSeY0bkvsg=\nR:recommendationmetadata.go\na:0:0:444\nZ:Q1sjrCtI++fCtQbE2GNNLHhtTVzOk=\nR:recommendations.go\na:0:0:444\nZ:Q1N52DZWCEpUZYtgxDB/oaPP2muZA=\nR:suppressions.go\na:0:0:444\nZ:Q1NRmQBlmhStn0J1zuV+sdew2o01I=\nR:version.go\na:0:0:444\nZ:Q1Lq5nGwFw54fn+xcFCMYRJfLUE0U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/advisor/mgmt/2020-01-01/advisor/advisorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rgGPXzlscO6qTuJuoD0DpGbr9oE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2018-05-05\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2018-05-05/alertsmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wKa8LQiKD/biptt/z/Au6fiE0Ns=\nR:alerts.go\na:0:0:444\nZ:Q1m92xq0RJssVsVuQkWSC7NbBbNQ0=\nR:client.go\na:0:0:444\nZ:Q14CGjRK44dj987YNSw0A+8d/duc4=\nR:enums.go\na:0:0:444\nZ:Q1roj5prydAcDnMTfm4USdiR6pssY=\nR:models.go\na:0:0:444\nZ:Q1vFeOx0xO2lqOnkxNwXgtgzv2R3o=\nR:operations.go\na:0:0:444\nZ:Q1ZHae4EzXK4B1Ddx1WF8WH2b0P4E=\nR:smartgroups.go\na:0:0:444\nZ:Q1hi5xQy3BAKmyPAwF0jTRweytyMM=\nR:version.go\na:0:0:444\nZ:Q1VXmYmQi24uiyXNar0naPFBdDcG8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2018-05-05/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1h4CTEQesrNcKUevi2Ssqx1NMMZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2019-03-01/alertsmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NzeWdRLXmfg36gKeqhiShHr3DBQ=\nR:alerts.go\na:0:0:444\nZ:Q1WAs6gAPxwYM9ZS7+6uCcNNhD3Do=\nR:client.go\na:0:0:444\nZ:Q1Un07L/G6tNW8OGpLFvWNkVCgfUw=\nR:enums.go\na:0:0:444\nZ:Q1IjoXAx44vwbD6MezQQiKGpFV5I0=\nR:models.go\na:0:0:444\nZ:Q1/9/EFHRGmoHM8RbkmHbLkhyPsI0=\nR:operations.go\na:0:0:444\nZ:Q1elDSnnHvxA0bOq3+MlXuvGcLyiY=\nR:smartdetectoralertrules.go\na:0:0:444\nZ:Q1DJT1vBpPGxMJFzhQxao2IK8gSJg=\nR:version.go\na:0:0:444\nZ:Q1997+TeqDsF9HEnrypQDXBcAehDw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/alertsmanagement/mgmt/2019-03-01/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16Z7qa6KAMbh2e3BSnfGRD0d0vt8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2016-05-16\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2016-05-16/analysisservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1e8hzrobbXTxTrlMLcRfHJ2LPqYU=\nR:client.go\na:0:0:444\nZ:Q169yHJ/hZCmL6gifsB2mbNb1DJbY=\nR:enums.go\na:0:0:444\nZ:Q1ziYo8CDQfBzyLqOTFLfhhJr0ydI=\nR:models.go\na:0:0:444\nZ:Q1BhTBhDfLh+suewVYWTJTbU6IMY8=\nR:servers.go\na:0:0:444\nZ:Q1SSXsNIzxeHAUPz7OmkK1SUxIBfA=\nR:version.go\na:0:0:444\nZ:Q17NAmXq3ckGIAxczggVV8xB94deI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2016-05-16/analysisservices/analysisservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qos37ND8Ox9ENGWbht7boVHeyo8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-07-14\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-07-14/analysisservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MJhExsuotXYEE27v3Nlhq67wiNs=\nR:client.go\na:0:0:444\nZ:Q1blT4gt1ZPj2HRAKf72ympsSDzQQ=\nR:enums.go\na:0:0:444\nZ:Q1EoJb6M6K2MRb2Uam91W8x/fYCp0=\nR:models.go\na:0:0:444\nZ:Q1DEd114U6363jD/ZVwS+vEmthoF8=\nR:servers.go\na:0:0:444\nZ:Q1wG6vANNBdKFLLBVy9qrhJDGE7UA=\nR:version.go\na:0:0:444\nZ:Q1KfCVnpdaTlLk8OBnLK1MSgT8xVY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-07-14/analysisservices/analysisservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xMxXeDhfQZhwCBm4laeHyiyu398=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-08-01/analysisservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RFJDy2D01Ozv0wA5AAoUEQXm5WY=\nR:client.go\na:0:0:444\nZ:Q1YSmF/hmugSA0D3QUmHrgRLNek9Y=\nR:enums.go\na:0:0:444\nZ:Q1Gw8yoNwTdYjc+j3L7faXGerKSOY=\nR:models.go\na:0:0:444\nZ:Q1JMUi5+xRhdOXjEzC9AvRwyKYRbs=\nR:operations.go\na:0:0:444\nZ:Q10O3XyoSOuLE4o0UcXIwDM2eYvzo=\nR:servers.go\na:0:0:444\nZ:Q1sbHPIz98C4sFPczi7cMhSPniy58=\nR:version.go\na:0:0:444\nZ:Q1JO2BZJLFa6ig8Lzm7wa6FNwn3OQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/analysisservices/mgmt/2017-08-01/analysisservices/analysisservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HlcPy8KVkqwS+aliu4cS174kwwg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-07-07\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-07-07/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1iQdObWrTt1MpJP+LNWtyVpmUgPg=\nR:apioperations.go\na:0:0:444\nZ:Q1l+liFZjmffK0mrSMvGHOmGk9sxk=\nR:apiproducts.go\na:0:0:444\nZ:Q1v3IBna9bnrH1BNDoc7iLWYyJ+H8=\nR:apis.go\na:0:0:444\nZ:Q12jwZ4bw61dkoJBkre4mYfYudS+4=\nR:authorizationservers.go\na:0:0:444\nZ:Q1QsoT9pFZGMVM0jTxFhU8/da5+Uw=\nR:backends.go\na:0:0:444\nZ:Q15mgfiT2zqUI8NoqQp5s31SMo8tA=\nR:certificates.go\na:0:0:444\nZ:Q1dHNlp6DQclpGNLgW0RSfDXTbP3c=\nR:client.go\na:0:0:444\nZ:Q1GJEXZRoCFonXLVRwYhwfrxEZHKY=\nR:enums.go\na:0:0:444\nZ:Q1VWKQ1mhPCBRXxua4P1wY8mWLJDU=\nR:groups.go\na:0:0:444\nZ:Q1ObU9xipKFi0pdGZ3o1wOqAfLLhQ=\nR:groupusers.go\na:0:0:444\nZ:Q1SnQOSbpB2MzSbOuCKCHBG4m932A=\nR:identityproviders.go\na:0:0:444\nZ:Q14mzFciBRHjFi7c/qRf7J5gSwRY8=\nR:loggers.go\na:0:0:444\nZ:Q1rqtu2M63r2AWy5Z0PIgUJTVCAQs=\nR:models.go\na:0:0:444\nZ:Q1C+C7he3v8o9qNp7d/O29TeJ+njw=\nR:openidconnectproviders.go\na:0:0:444\nZ:Q1YJmWP9dGl6ea5Y4wG+yhjoTFLEE=\nR:policysnippets.go\na:0:0:444\nZ:Q1zC5INDCypldQcAOVdeKxoORt2fo=\nR:productapis.go\na:0:0:444\nZ:Q1XmWsVH4MZW6hSOHGdYnc67buSkY=\nR:productgroups.go\na:0:0:444\nZ:Q1urYO1eoSxsqguoCajtunZLg/jv8=\nR:products.go\na:0:0:444\nZ:Q1Z8Jpv+fLNQUqdqv2SuLwPHgTIlE=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1og2+Uds385jHvuDBjJWiwGbG8Ms=\nR:property.go\na:0:0:444\nZ:Q12j1pERAxQ/mZrOsDNFHFNc2c5jQ=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1t5rzbwzCsVUCmSDXYEqsXeQrIaQ=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1G1FpoFme23fAuKNESnNy/huGu1M=\nR:regions.go\na:0:0:444\nZ:Q1+P54co5+oCk9byuUbiPuValZ7AQ=\nR:reports.go\na:0:0:444\nZ:Q1uhfsepPNkujaORVacYGuTcXlfdQ=\nR:services.go\na:0:0:444\nZ:Q1POyPaZPDzDW8ICb0q0IX2KZftc8=\nR:subscriptions.go\na:0:0:444\nZ:Q1X2UlY30Q2N573hMjduA0rTD6O18=\nR:tenantaccess.go\na:0:0:444\nZ:Q1S9LiTwf4b5vNyKMnTBIylZ/T/xw=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1ZDYTpz2KIm6AMxO8Avmt0p3Cyng=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1DxxIS9J5wUwrvfp/gn47QGO+4xw=\nR:tenantconfigurationsyncstate.go\na:0:0:444\nZ:Q16j5WwmsiXdlsKdGVjM0R+0G3OF0=\nR:usergroups.go\na:0:0:444\nZ:Q1504+Cc0/UurFDag1xVtN+ZWp22U=\nR:useridentities.go\na:0:0:444\nZ:Q1FyuqUtkJy6j/lBYFgstOUYcLhWY=\nR:users.go\na:0:0:444\nZ:Q1toS/lqLfm3zv1Kvn3xAM+pxGqBk=\nR:usersubscriptions.go\na:0:0:444\nZ:Q1yn4codkVj87wX7AKWWbjzjx3sYM=\nR:version.go\na:0:0:444\nZ:Q1S6dPS31bsa6Uumv0FNMF3WmNm5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-07-07/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Yl1PGImlU+iXQw/kb0wKWPpbQSs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-10-10\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-10-10/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17ROVjlqaQbiNzUbfIFZ/Jc7xoTo=\nR:apiexport.go\na:0:0:444\nZ:Q1fDqhImjRx+DdBjg/GEmH7MfNiQE=\nR:apioperations.go\na:0:0:444\nZ:Q1JQMB9HZmu9mgtYTdLK4IGmaz2v4=\nR:apioperationspolicy.go\na:0:0:444\nZ:Q12pXycmSrWfJvz0w1IdRIYAof4Cc=\nR:apipolicy.go\na:0:0:444\nZ:Q1j9sEZAH6ScTOpXCOBoLPwMOlFlQ=\nR:apiproducts.go\na:0:0:444\nZ:Q11+uCmFrCjZrQ5kov4sBh5ePLsEk=\nR:apis.go\na:0:0:444\nZ:Q1n4OjhU3wac1uLGPEvEQiMzbgcMU=\nR:authorizationservers.go\na:0:0:444\nZ:Q1WtEyVOmJCsosXFhirbrIVig2kQg=\nR:backends.go\na:0:0:444\nZ:Q1OUVknJ2+8btEobFGO/UKETd+47A=\nR:certificates.go\na:0:0:444\nZ:Q1CsXFVkBrXilTLRWUIZ9TeQvLYcI=\nR:client.go\na:0:0:444\nZ:Q1EmZMPVS3Zq7eYRKWx/x7+6wPr+s=\nR:enums.go\na:0:0:444\nZ:Q1Jrayq/UZHgnvE9SgPUfVHCu68is=\nR:groups.go\na:0:0:444\nZ:Q1Bodj7ksUyYGX9LsbUq38msydi/s=\nR:groupusers.go\na:0:0:444\nZ:Q1wv+9CS+pIEL8UbwVHSPJ1ZVEbMk=\nR:identityproviders.go\na:0:0:444\nZ:Q1regolZ6w7FY93SMmcr4AYay+BK4=\nR:loggers.go\na:0:0:444\nZ:Q1gVOzSydjjhzOC2HdhD3Ux43qmgM=\nR:models.go\na:0:0:444\nZ:Q13KMcKqZWdAKu2YWtU88g77NkUMQ=\nR:networkstatus.go\na:0:0:444\nZ:Q1b7Bl9YOEMWc/39YS0ni1tYGtuZE=\nR:openidconnectproviders.go\na:0:0:444\nZ:Q1CEI2hF+yr3MT1kiwZCcab+QSTLw=\nR:operations.go\na:0:0:444\nZ:Q1Mkz3OG+Xjpy9Zi7nbd1DiKGhaJs=\nR:policysnippets.go\na:0:0:444\nZ:Q1t0NXRdWdYvo19m3389gfla5kRSc=\nR:productapis.go\na:0:0:444\nZ:Q1dOzi7esFVpVvo62Tf4SVHCA24Ps=\nR:productgroups.go\na:0:0:444\nZ:Q1aQBL8MixCKa3lDQ/P/xPqh1Pufo=\nR:productpolicy.go\na:0:0:444\nZ:Q1Rbj6wBeack3WRqx7KCUsQdB56xM=\nR:products.go\na:0:0:444\nZ:Q1yCndJPplmvgbAuTI0kmVBn1ZtVU=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1wWgrWSh1NpdiBsOHF33/08XHzKY=\nR:properties.go\na:0:0:444\nZ:Q1RHdspvtEpIOwe+pEOkGQrBOghrU=\nR:property.go\na:0:0:444\nZ:Q1qIHr6h84v4e35vO0EBO4BxV9LsA=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q17XbHlvhfwIb2m9BKa+yZlzRnSa8=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1W2OGu4RZtBz4SSRt+PpToFNd4hM=\nR:regions.go\na:0:0:444\nZ:Q14wN8SPP+bXU2kVfLe7nlo/AyWHU=\nR:reports.go\na:0:0:444\nZ:Q18mNl7C7TdNEdAY5Uh8BADusapfA=\nR:services.go\na:0:0:444\nZ:Q1BC1VanGw0wjLSTzNMA1pZb3cf5c=\nR:subscriptions.go\na:0:0:444\nZ:Q1JeyH+KTNMTKYXK3anZIJsnjjYHQ=\nR:tenantaccess.go\na:0:0:444\nZ:Q1ula2Ae4gUD9rXXUA9YvPGf9SQb8=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1BI0dKmqqBkQ2ooUt9BNH0RT85Gk=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1tvUt37pXrJQW5leXUddjwh6T638=\nR:tenantconfigurationsyncstate.go\na:0:0:444\nZ:Q1l32YTL1YE980IX7KjWausXmIzjY=\nR:tenantpolicy.go\na:0:0:444\nZ:Q10CYFbh7Z8KeoYgmfWde42o+IYrI=\nR:usergroups.go\na:0:0:444\nZ:Q1O+Psjl0/nZeecwT2RGD6ZXX4fk0=\nR:useridentities.go\na:0:0:444\nZ:Q1V5YocYYFAWLonbnnyhYbfJCvZhA=\nR:users.go\na:0:0:444\nZ:Q1f2KICg/HoJoYWR7eaBv3AOKdRsQ=\nR:usersubscriptions.go\na:0:0:444\nZ:Q1CBoGvXgu8qQcg2LmgUbC499ArTk=\nR:version.go\na:0:0:444\nZ:Q16LxPbd5Ey5wgLwozv4YtXDaeBQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2016-10-10/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zkfHeJx/ZGrAAfOr0lWJqn2b4Cc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2017-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2017-03-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1oiDirRwHqR1uH5LX2buNX2Bg9uU=\nR:api.go\na:0:0:444\nZ:Q1ZXbi8JLCa0vboNa8kG757zOW1fo=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1wnXXiMRLNvgWaiViBNm8w51Aopg=\nR:apidiagnosticlogger.go\na:0:0:444\nZ:Q1pmMESc95A3F01nGCVXyyETBJzmo=\nR:apiexport.go\na:0:0:444\nZ:Q1ULjlNRtraD8T8ncOuoodARZmJMA=\nR:apiissuattachment.go\na:0:0:444\nZ:Q1mP+8IWUXWlE+x1r4JaVn+szvHm0=\nR:apiissucomment.go\na:0:0:444\nZ:Q1MTGyKqTDm+MiK8Qmwo3/Qb2DghQ=\nR:apiissue.go\na:0:0:444\nZ:Q1BJeREoWYC+ChBWxLov3NCV5qIAc=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1AdEccmpiS3EtbmjNzz3f97h4+ms=\nR:apiissueattachments.go\na:0:0:444\nZ:Q1l2uzX1NCy3pPiv4wXBpDUfu0SWo=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1A2UyVa40rEijSGBeXjT52AkYi70=\nR:apiissuecomments.go\na:0:0:444\nZ:Q1OU+wxzZHhtpEoQwjfe7XLeZdOk8=\nR:apiissues.go\na:0:0:444\nZ:Q1oJ6Ux6EPauY5bofMkiYs4bOHJU0=\nR:apioperation.go\na:0:0:444\nZ:Q1qSulSHMP7UjsQlAjR1KP6nFZikY=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1aPzq9kn6W+uG/N5MRIaHzSUcqMs=\nR:apipolicy.go\na:0:0:444\nZ:Q14wgAt3WI3dyKfP1K0GyYzKlOo78=\nR:apiproduct.go\na:0:0:444\nZ:Q1LZyO8VND2V030YRkMCxhdBRMyE8=\nR:apirelease.go\na:0:0:444\nZ:Q1k7b9k2zPAa7irnn9xk/QF3K4Jjs=\nR:apirevisions.go\na:0:0:444\nZ:Q1MbeUrWc2XDEOpkaiibpdWFAQDpE=\nR:apischema.go\na:0:0:444\nZ:Q1G0MJ96TutAN8wnQtx/mdjv1ZG/k=\nR:apiversionset.go\na:0:0:444\nZ:Q1ICKHn6utrkfP1jVLh2BKpz26kMo=\nR:authorizationserver.go\na:0:0:444\nZ:Q10M4oZvVvuqGvdHPE7Z475VQJ8UU=\nR:backend.go\na:0:0:444\nZ:Q1aBWACSf54h5vCbJkF7Alhtm68fY=\nR:certificate.go\na:0:0:444\nZ:Q1JISPPqWuDGCTRgWMB564AsFGIMs=\nR:client.go\na:0:0:444\nZ:Q1qcUiVlIvedAFCLit21dU/poUhvw=\nR:delegationsettings.go\na:0:0:444\nZ:Q1aJtw43X7c91snKkn9r8w4JH8nvY=\nR:diagnostic.go\na:0:0:444\nZ:Q1ClbSO5STOAKTDAsf535FqXYi4nk=\nR:diagnosticlogger.go\na:0:0:444\nZ:Q1ZbvMAKJkyvMxAC6xW/OVHoc2hGg=\nR:emailtemplate.go\na:0:0:444\nZ:Q1i1pzF9rdWvSzGe5RCmVZWVx98xM=\nR:enums.go\na:0:0:444\nZ:Q1b8Ke84uRHeq4ah3BsjoX6l/PYXQ=\nR:group.go\na:0:0:444\nZ:Q1wv2QcgU93NEXNmlYKAgaETUQDa4=\nR:groupuser.go\na:0:0:444\nZ:Q1v+aOnEfTLArUGKoL1WDksyTNAyQ=\nR:identityprovider.go\na:0:0:444\nZ:Q1YaWlBYlzZMqCTjM/C06bqv8vVxc=\nR:logger.go\na:0:0:444\nZ:Q1Y/wIMMXql+Boew0BFLZl+TxF9OE=\nR:models.go\na:0:0:444\nZ:Q1B87e3v1bYWh1q3FR7aeBX20Qy1M=\nR:networkstatus.go\na:0:0:444\nZ:Q1i9xblD/mrBX2LKFxKo9FGJFYgaA=\nR:notification.go\na:0:0:444\nZ:Q1h3kLhwdyu+sfM+InvhY109Ee9Jk=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1OylAkU35RrbiXb88YBU46HgH9Zo=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q13JrkaeNJNgcvl8YbSK6I92ddnJ0=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1jVkBKSGndeBNMmvao/LYHihFTfA=\nR:operation.go\na:0:0:444\nZ:Q1DHV5nbmsF7wkIxqwq/T9dvwM2CU=\nR:operations.go\na:0:0:444\nZ:Q15eDtLTD/ATy1uSl8MgwrxL+WNzw=\nR:policy.go\na:0:0:444\nZ:Q1Bbtx27MB2Ce+wMHSJZkKJ1WXxdY=\nR:policysnippets.go\na:0:0:444\nZ:Q17LXuG3ElfE+HYB2S2HtKU5Q0RVU=\nR:product.go\na:0:0:444\nZ:Q1msSgiNt9clTzB0hbw1ivKyBKszU=\nR:productapi.go\na:0:0:444\nZ:Q1cd1k2ilg+XEQQ0FognkWcZgG33w=\nR:productgroup.go\na:0:0:444\nZ:Q1MbCwMSwhDqSaPilYPCWbLF8y05o=\nR:productpolicy.go\na:0:0:444\nZ:Q1nd/24ShmQ/bc1g0c+Y+Z2razQdA=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1VvKW49V/7g6BOULj3Hopx2XNOg0=\nR:property.go\na:0:0:444\nZ:Q1UitpMK5OKFJGVwJEh10IE4bcK5I=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1/Uq8qVSge2RmbAjxMq8cZOPfqug=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1F73js9XrbR3ILzA0IIJgApJQYLc=\nR:regions.go\na:0:0:444\nZ:Q1QuuxH+TRPxEup8+Dh6NHYVUd8sc=\nR:reports.go\na:0:0:444\nZ:Q1DYCxm8VE1qOUZgqkjQDsxRYWc0Q=\nR:service.go\na:0:0:444\nZ:Q1YsSemVX1bQeF+pwlhRomXprp7x0=\nR:signinsettings.go\na:0:0:444\nZ:Q1WSDSsy6LoYCUFfoLOAG+1+uNUlA=\nR:signupsettings.go\na:0:0:444\nZ:Q1VJu4PFEnHwc9r6Z0SIScEDKwXsE=\nR:subscription.go\na:0:0:444\nZ:Q15GCXoF7lW3qZ/ZVm9QhSByhjydI=\nR:tag.go\na:0:0:444\nZ:Q1GwMUcttd3wDfONqqE7ryf4xFAZk=\nR:tagdescription.go\na:0:0:444\nZ:Q17z7sy6kkNifBdQsvrW1XEbSXJAg=\nR:tagresource.go\na:0:0:444\nZ:Q1MjDWxEzqDhzhBDB3GD/tW5ATjww=\nR:tenantaccess.go\na:0:0:444\nZ:Q1D3kbeMVL4DJRfxvEVM3eqk10eXc=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1+IHrPjWejWEHuxGcuavRcUY9d7c=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1vagJhnx8g5IRw4aLVBU2SV74JsQ=\nR:user.go\na:0:0:444\nZ:Q1bWea65j7Hza1hSlqzxLn250ZiEc=\nR:usergroup.go\na:0:0:444\nZ:Q1lU0kmjQmZ9JCEIMT+QWlbn5Yzk4=\nR:useridentities.go\na:0:0:444\nZ:Q1iXsGk17Jvx1naNrIECWifqIOewE=\nR:usersubscription.go\na:0:0:444\nZ:Q1wRTHn2SA45CKtCpCmCzMi3Gr9/c=\nR:version.go\na:0:0:444\nZ:Q14uPMKGQUCzGew4KmPt+dxRL9IMw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2017-03-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vwd8tvCycdhy/q+cnjmjtgi7HLc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2018-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2018-01-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14uAfDWHsjQPZoejUSTflGovDzZ4=\nR:api.go\na:0:0:444\nZ:Q1EjvDEbVuxyaGEKdUNfvxPtjOkps=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1dIuo/RnAYSsGhDHBAneqL4TPMLs=\nR:apidiagnosticlogger.go\na:0:0:444\nZ:Q1ykiOfrNAyjlHdbE3QxTaoXT5F50=\nR:apiexport.go\na:0:0:444\nZ:Q1qZL5+oPI2a/hC8qaqoPFAMKXk6I=\nR:apiissue.go\na:0:0:444\nZ:Q167/OmCSTHMzdATl6mqBVyKtnt60=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1HcU79vgNpQWoik5KQfDNAw3fL3Y=\nR:apiissuecomment.go\na:0:0:444\nZ:Q18vn9eISXaeYMOVAyRApOiysgiUs=\nR:apioperation.go\na:0:0:444\nZ:Q1dcHDHYMjk/P61dxNRnB4kCKldmI=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1K/V8hkpQu9sDim94Qwrz/r9ZtC8=\nR:apipolicy.go\na:0:0:444\nZ:Q1dReP7vjJDuWLj243BfGxzoT3jIQ=\nR:apiproduct.go\na:0:0:444\nZ:Q1Sb4K0vvYM+KbhvIuo9l6BWG0G5w=\nR:apirelease.go\na:0:0:444\nZ:Q1gOm5jyTudebR/sJjpBUXSNJBv5o=\nR:apirevisions.go\na:0:0:444\nZ:Q1hwEMKam6cNBr0THyZBZSOXVgYi0=\nR:apischema.go\na:0:0:444\nZ:Q1TGxhLVRExDlQLqdlPbDFSv1hNvo=\nR:apiversionset.go\na:0:0:444\nZ:Q1r33dfmYctkbL8Q+Y2M0DWtjHx+0=\nR:authorizationserver.go\na:0:0:444\nZ:Q1HIafXqu75vAr88CPRn5QOfNSw4o=\nR:backend.go\na:0:0:444\nZ:Q1xh6V4wpC8KMrh6avPPf4nvkNSqM=\nR:certificate.go\na:0:0:444\nZ:Q1kQpMCz+sAE1AmXG/Grn3+AKV7jg=\nR:client.go\na:0:0:444\nZ:Q1XYq/aunaG9Xs5hO3670YjFFKVhY=\nR:delegationsettings.go\na:0:0:444\nZ:Q1dKXDiQDKkZvlllVdfcrtEEvjsno=\nR:diagnostic.go\na:0:0:444\nZ:Q12y81wGcTNhcoRIk6kTQnI9mRqtA=\nR:diagnosticlogger.go\na:0:0:444\nZ:Q113Nt1p1HFNy0M//rMob4x+gcC3c=\nR:emailtemplate.go\na:0:0:444\nZ:Q15myrSmzFPGAOInBZ4f/kZecCFZ8=\nR:enums.go\na:0:0:444\nZ:Q1JgryoccOYni8SJDdoGPKFRYwmUc=\nR:group.go\na:0:0:444\nZ:Q1CfoUE95K0BGADz7OrmfPJo71KPg=\nR:groupuser.go\na:0:0:444\nZ:Q18GVJfSaMXSG84Nx4T+22R4cGr5U=\nR:identityprovider.go\na:0:0:444\nZ:Q1S/8phWXVEW3YB7vWxLt0AJWfDj4=\nR:logger.go\na:0:0:444\nZ:Q1HjxBaBOKKJa/dH8jlrfOpTsxit0=\nR:models.go\na:0:0:444\nZ:Q1jvQZjyXRtQRfNDw66UrWGbLTYTE=\nR:networkstatus.go\na:0:0:444\nZ:Q1elsobPz80sRLTv00IGZeVvcc/gg=\nR:notification.go\na:0:0:444\nZ:Q17gbN1isgjAONvm/YsOHf+1tedX4=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1j4oK8TBwLIrejlzUf3HCwXDddHI=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q16VwuoaMN+sG6NZiMdekBvdQd9ss=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1gvo/AjQ343YMXMD1kedvq7ZpE+k=\nR:operation.go\na:0:0:444\nZ:Q1RwxZ+XfYy01alX1s6n1U09qwJz8=\nR:operations.go\na:0:0:444\nZ:Q1eC/XkrTAcKyw6mRw8C3yhIF+ats=\nR:policy.go\na:0:0:444\nZ:Q17s/1QydYQvo/O1dmTXsM9bxFGlk=\nR:policysnippets.go\na:0:0:444\nZ:Q1uJAAz2CQfD1M36c4IZZdV7kfMFs=\nR:product.go\na:0:0:444\nZ:Q1NrY5Oh8ciOUKSUK9ipGWxnt41Rg=\nR:productapi.go\na:0:0:444\nZ:Q1V8w/x7rNLtM8QsTzboWCSHlgxwg=\nR:productgroup.go\na:0:0:444\nZ:Q1SygJIydCJ+FPJY59Irn01vnLpas=\nR:productpolicy.go\na:0:0:444\nZ:Q1AFEaDELgmbG+s3kXcYTlWH1as5k=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1k5chCEwWq4K/FOtb1uW4YyBbDCU=\nR:property.go\na:0:0:444\nZ:Q1IfVIxQ1DqPgctLpVxTwMSLBbbEI=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q13d58utmGeTS8FOE8MCkT+YPWUHM=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1YAL4eADR1iEBfz/qzhtJM84f8YY=\nR:regions.go\na:0:0:444\nZ:Q1caN5WYstMKGl5CGjRz7nNsOZ0uo=\nR:reports.go\na:0:0:444\nZ:Q1tliYU88o+98iTOgk1ccBOOBzA5Y=\nR:service.go\na:0:0:444\nZ:Q1vpK8Pfcy+D0Hio10jHlhsS/DYNc=\nR:serviceskus.go\na:0:0:444\nZ:Q18TvCH29RUEQW1eAXgveUfo46C/Y=\nR:signinsettings.go\na:0:0:444\nZ:Q17ARv4PGDX7cGjNnvgn9+UPY/D8A=\nR:signupsettings.go\na:0:0:444\nZ:Q1vGVALRK+9Wv9RIb3jgGw4A+Klpk=\nR:subscription.go\na:0:0:444\nZ:Q1PMu4Vu6YdIRbKqgwWUDWlHkxRhU=\nR:tag.go\na:0:0:444\nZ:Q1hPSK3KoBibySPObF7WshkBziI1c=\nR:tagdescription.go\na:0:0:444\nZ:Q1XzSSWLbRMzQjQP9u5Gc1YheD9Ds=\nR:tagresource.go\na:0:0:444\nZ:Q1A5uOVk07q7lTHg5OwJIgPQRWPqI=\nR:tenantaccess.go\na:0:0:444\nZ:Q1FppdZosiekiOaSyYHTA8FgvClMw=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1sdkh9yVIOWAZnB7gKUyQh2e9bjU=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q12IPKW5new7Zjereb8g9ENs65XHE=\nR:user.go\na:0:0:444\nZ:Q1n6dZN35LLydvx5/yP5iC6yVQAq0=\nR:usergroup.go\na:0:0:444\nZ:Q1URypTf8CtNlAvaW44eV1rJ0vH/c=\nR:useridentities.go\na:0:0:444\nZ:Q1fiOlFoLVLOrTtdcI43qmzHaExSQ=\nR:usersubscription.go\na:0:0:444\nZ:Q12HsOzr6XuFuY2MpfraQcCegdS4A=\nR:version.go\na:0:0:444\nZ:Q1IAG3i22TATNDF0DA0W+MKmtGIXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2018-01-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tBodC3qRiEUMcGtXF/3TSagvzuQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-01-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xOgbqJ3yLZ04NVSTJJ+/hBCpUEo=\nR:api.go\na:0:0:444\nZ:Q1s6RMT7csWElELEmDYWz5O6z3Jnk=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1BNahDF5sC2bc1146RPLb6EkKmZw=\nR:apiexport.go\na:0:0:444\nZ:Q1UZWuvyXFVZ37D/jiKgs4FKETu3g=\nR:apiissue.go\na:0:0:444\nZ:Q10sg+zFTNphV3IpyBxvpfXRKWRCw=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1MHeEMXIMX1sM5r2r7CqZvJ9LAJw=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1vFAQHwetAdA1h2IUj8/thjrFj6c=\nR:apioperation.go\na:0:0:444\nZ:Q1uGn3P0YElk86kDNevtywngMaZNI=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1EWDTmD27s15B+z+bDjEmfb+WXVc=\nR:apipolicy.go\na:0:0:444\nZ:Q1ncpkZvE66mYofc9HDG3MtqCpHZ0=\nR:apiproduct.go\na:0:0:444\nZ:Q1jASJ0aJlQfz1xY3B6ITQfAfcCh4=\nR:apirelease.go\na:0:0:444\nZ:Q1Jmt256avazxz1EZe+mWIiNrd4es=\nR:apirevision.go\na:0:0:444\nZ:Q1sgW5TnkslOiEBDs4cRMx9n92GIw=\nR:apischema.go\na:0:0:444\nZ:Q1SmcEenzV4McWsA28Eh/eqFhu008=\nR:apitagdescription.go\na:0:0:444\nZ:Q1AC3TrWpColGcZCLQw8wT2nXxkXE=\nR:apiversionset.go\na:0:0:444\nZ:Q1wTr+ZgB9M+P4LASEFGB6z7us6Dc=\nR:authorizationserver.go\na:0:0:444\nZ:Q18npQF60E7nMKYSBiGYCL9waUosE=\nR:backend.go\na:0:0:444\nZ:Q1bnQUpiWEMNrd8oZs3NSSpPrCTuA=\nR:cache.go\na:0:0:444\nZ:Q1hY12aYcZxsp9nGgHT45NIqNrwA8=\nR:certificate.go\na:0:0:444\nZ:Q1unxLId53AclDKBdiSd1r3KyUMaY=\nR:client.go\na:0:0:444\nZ:Q1glZp8tQ6ZGZJlRnUGpc73QFAquc=\nR:delegationsettings.go\na:0:0:444\nZ:Q18EWmyveHysH+mau4J4w2/lVZJt8=\nR:diagnostic.go\na:0:0:444\nZ:Q1jnISGYofl72mBcrEcnoqFcY+n48=\nR:emailtemplate.go\na:0:0:444\nZ:Q1BDLLLzH0F6Q5MIgfkWw3KmXkiZY=\nR:enums.go\na:0:0:444\nZ:Q1oJJd3JW0hEF8vNq7Zvjgtmo5HuE=\nR:group.go\na:0:0:444\nZ:Q1Phxj/O2COTztcOSKUQZdRlPELSs=\nR:groupuser.go\na:0:0:444\nZ:Q1Q/ayTCaNt/cRI9r+4rrbBp2aAL0=\nR:identityprovider.go\na:0:0:444\nZ:Q1/xmt80n5ayPIBtksTae5bo++Aas=\nR:issue.go\na:0:0:444\nZ:Q1ulIt3xegEk2TvfrPYjdW+TWFeQI=\nR:logger.go\na:0:0:444\nZ:Q1ceh9rAUsrOHfjR9CztUWKi8gPq4=\nR:models.go\na:0:0:444\nZ:Q1sEgoHeNJs/E4cd5x7KJ1wTBwEsY=\nR:networkstatus.go\na:0:0:444\nZ:Q1a0bH/QLPyrXGWfnf4y/BK3KMJT4=\nR:notification.go\na:0:0:444\nZ:Q1QKFIkNqyobwszmoiIkopwi1nsho=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1WZm4Qpz+BYZy0BT4QfHgDd6zZxY=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q1EjaW9Ri5tJsKeYFtXjHk0b0bcqw=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1D7lYyIHhrxkM0izoW57wZsDbTd4=\nR:operation.go\na:0:0:444\nZ:Q1t+tHTbZEjQdHKP3o3bRJJsr7tCw=\nR:operations.go\na:0:0:444\nZ:Q1dqvgB5QLISzOb57zZkGr7t76jZE=\nR:policy.go\na:0:0:444\nZ:Q1w2SXqgRBOeWZoNj1DFSka446LeU=\nR:policysnippet.go\na:0:0:444\nZ:Q1+JFP+BqyRGKuL/LfYu0Eb5efQDs=\nR:product.go\na:0:0:444\nZ:Q1WIOYDorVIt4Db1hpPxEpQwRiEs8=\nR:productapi.go\na:0:0:444\nZ:Q1cKsNKGU9PEmeR3S6xe5A+RF7YbI=\nR:productgroup.go\na:0:0:444\nZ:Q1NuPsXk1yPTLAVXBuBxS+HrvIX34=\nR:productpolicy.go\na:0:0:444\nZ:Q1DDSQkR8nfvUXYbOkisDTAh07Z3w=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1WwNUpP/qbIJ3CPi8G9uodRcFoi4=\nR:property.go\na:0:0:444\nZ:Q1psb5p6aZ/IGSiwzC1B+TOQAAxX4=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1zkaCzDZJqPDWtjRDwMvLHxd1DqQ=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1SRDVnlX1btZJ4cJD8wmAnU+D1AY=\nR:region.go\na:0:0:444\nZ:Q1Ogaz/Bm7W100OOxaArsoK74HwFk=\nR:reports.go\na:0:0:444\nZ:Q1uSOcQXsT34HYdCbMiHYhBHEUmkM=\nR:service.go\na:0:0:444\nZ:Q1/ReGeZxFemSgyOC1eTdSDrStuXY=\nR:serviceskus.go\na:0:0:444\nZ:Q1Q0LwuKd7In6MvIIkQ5KR1FbtbgA=\nR:signinsettings.go\na:0:0:444\nZ:Q1aAEmtPd2x0+lmHREHjde7+AbZuU=\nR:signupsettings.go\na:0:0:444\nZ:Q18HnfY5+M/IUN8bZA3dsT3if+t9k=\nR:subscription.go\na:0:0:444\nZ:Q1Wl7L8/knkkPqcdEwp8cJ8favbp8=\nR:tag.go\na:0:0:444\nZ:Q1s3tuF7+1jsCwdttpC93gWrCDD9s=\nR:tagresource.go\na:0:0:444\nZ:Q1dBqDC10BTbYoRZw8mM22Qz0Wado=\nR:tenantaccess.go\na:0:0:444\nZ:Q1jviFWS/MsVYnXznyCag+ucaOS/0=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1nnrxE4YX2fAEja9u3yYGU0GTrKI=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1BKQg+nx1bKHRC6n5wlvtI0m3OwU=\nR:user.go\na:0:0:444\nZ:Q1U0C4pfUgesyrQSgP3uMVUkf+q2w=\nR:userconfirmationpassword.go\na:0:0:444\nZ:Q1VT6jA4II/3PHeHxIbnuVGb99DWs=\nR:usergroup.go\na:0:0:444\nZ:Q1fPCOUtzD6ZphYI3WcdtIiBzcRFQ=\nR:useridentities.go\na:0:0:444\nZ:Q1iDG6o91jjCIruu7CuM993oxVLWA=\nR:usersubscription.go\na:0:0:444\nZ:Q1lY7hUgVsHB2xnF59BeW/AfCoV28=\nR:version.go\na:0:0:444\nZ:Q1/8j+PUYI1rtXMT7XFkeoaiQuzus=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-01-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KYBPx7dgKnKSoVUeo8oU0VPAwFk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-12-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/7+vOrwY+rcTko7Aa+23SGS8CXM=\nR:api.go\na:0:0:444\nZ:Q1LJk55jJwBSBh3Ita5pkaT/1aRGU=\nR:apidiagnostic.go\na:0:0:444\nZ:Q168ZkWgWb2f50u4cBNUEu5ajr5O0=\nR:apiexport.go\na:0:0:444\nZ:Q1cV8tI3QWrm+5NBlPge/uGB+u1lU=\nR:apiissue.go\na:0:0:444\nZ:Q1ihpj8PdOidckQaIx6/vvhu4bL6k=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1VD3ZrpnBO66mBAInPLHwUn+LYvE=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1cuescqc9tTxpaBGwptC9D0jT+9I=\nR:apioperation.go\na:0:0:444\nZ:Q1sF8ITmn/XwQTFYR0ElWLZZo8Y5A=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1EPKnYNIe8odxduWFPjp8Pqujl2o=\nR:apipolicy.go\na:0:0:444\nZ:Q1rIe40XiZ9QltPNORPGOP/KOBHEA=\nR:apiproduct.go\na:0:0:444\nZ:Q1sty/BViUSA8HHcz7Z+RAYuQ80Jg=\nR:apirelease.go\na:0:0:444\nZ:Q1k3U/sp+1m87TFKzX0Ow4Q7ByjB0=\nR:apirevision.go\na:0:0:444\nZ:Q1OZ3gPcquPR2vdB4P4Pe6dxdQLhw=\nR:apischema.go\na:0:0:444\nZ:Q1/ynCBS1yKFWnqo8APj+UFTx6ht4=\nR:apitagdescription.go\na:0:0:444\nZ:Q15JkzPXpnrcLIZKWnymjLGeOxuLI=\nR:apiversionset.go\na:0:0:444\nZ:Q1obARmjl1JaOmrAhfG1UbLST5s3s=\nR:authorizationserver.go\na:0:0:444\nZ:Q10wfP0N2rskgNT8e0redbOm1IQrw=\nR:backend.go\na:0:0:444\nZ:Q16SzBXl9+uznUcqs417APmwaKv6Q=\nR:cache.go\na:0:0:444\nZ:Q139Gy3OUEXnmVO/nIoVZR8UZcm50=\nR:certificate.go\na:0:0:444\nZ:Q1UFpD+StOvCMSSdxRa1/TnFB9Z00=\nR:client.go\na:0:0:444\nZ:Q1LSPdECxafxixNlMBgeyhyR28ppo=\nR:contentitem.go\na:0:0:444\nZ:Q1VHlCYRRSeLPgMJvEUf6T6KEpSu0=\nR:contenttype.go\na:0:0:444\nZ:Q1Xd058sg/qiDCw0lg3/Jehqa/WH8=\nR:contenttypes.go\na:0:0:444\nZ:Q1kzAmGubfuklI6tJXr/8UiOqd58g=\nR:delegationsettings.go\na:0:0:444\nZ:Q1KuODsQGcSHw+PAqKAc5ce5nJhwU=\nR:diagnostic.go\na:0:0:444\nZ:Q19wsJzspl26k2UumwGHVKGYPtCh4=\nR:emailtemplate.go\na:0:0:444\nZ:Q135CTrehOHNQpNEHvAgEDqgs62j4=\nR:enums.go\na:0:0:444\nZ:Q12569BumXmuAW3H8MYGCsupFKOAo=\nR:gateway.go\na:0:0:444\nZ:Q1TfkqTYgb4Oi6msQSeCb5NaIu71w=\nR:gatewayapi.go\na:0:0:444\nZ:Q1sCYFFstmd3PTZQi5hQuUcpIQ63c=\nR:gatewayhostnameconfiguration.go\na:0:0:444\nZ:Q1kp5fzJNTCj7UAfvwgJYa5xwKxDg=\nR:group.go\na:0:0:444\nZ:Q1I84iU56N6oE5pIWLCOhTLflGGA8=\nR:groupuser.go\na:0:0:444\nZ:Q1YpNpPyUgo9D/r2g9HjCOJo3MVIo=\nR:identityprovider.go\na:0:0:444\nZ:Q1dnkEAUuFLqhsiGLjFbCK3hik1RE=\nR:issue.go\na:0:0:444\nZ:Q1r/LqVTSqVg3Ucac+ctt6veZTtSc=\nR:logger.go\na:0:0:444\nZ:Q16udBvWEz+pYNN30T1CSh0YcOfDM=\nR:models.go\na:0:0:444\nZ:Q1oWNHEjfl9cYy2PzytCYObW7qPik=\nR:namedvalue.go\na:0:0:444\nZ:Q1ff3CubF+DeORi43KsfkFaeXGzr8=\nR:networkstatus.go\na:0:0:444\nZ:Q1Kb9ECkR5QbyfAPVvucAgQtOKoGM=\nR:notification.go\na:0:0:444\nZ:Q1xfv5LdQ8wbVGEXU4SgbvuuiBGOs=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1oVeU8s/omiVz6TeLKQZwkPsbtWQ=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q1yUImY/uBaGG7MYa/GAJnzJWXmVo=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1ZbpeXYHoY1C3fKk9BBqfc7eHP0Y=\nR:operation.go\na:0:0:444\nZ:Q1sny5TTFZYXk/SZnn1jkSA/uvyUo=\nR:operations.go\na:0:0:444\nZ:Q1rSZbplQZRNOvYK03T8jmAFLm0TU=\nR:policy.go\na:0:0:444\nZ:Q1YuqcXBPHsCCGSLgWdapuzYTrnUE=\nR:policydescription.go\na:0:0:444\nZ:Q1Su9MAaQCE96Pv8gBGPMf4xOswis=\nR:product.go\na:0:0:444\nZ:Q12R12zMsLlBkI9iXKAIPubUno7ds=\nR:productapi.go\na:0:0:444\nZ:Q12D/P1Rh5kqiXv+V+/qY0oYmXYsE=\nR:productgroup.go\na:0:0:444\nZ:Q13a4Ydib/3KB1Q4DSPZuciKpwNzU=\nR:productpolicy.go\na:0:0:444\nZ:Q1O4POuS2rt72XCk1zq6A6w8rbE9I=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1rjOTwjMaebEEa4E4UI1e8/MF+sw=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1/XyrXCjfdAVEG7FKrA1JmaqrHyI=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1KWzbHfDXuR40+IWFC+N0YIJdqSE=\nR:region.go\na:0:0:444\nZ:Q1BDlhTSsLels5d3PLG4wDHGj9bIM=\nR:reports.go\na:0:0:444\nZ:Q1NLTBhZZ9+S9pFfXMmGUGucVUSos=\nR:service.go\na:0:0:444\nZ:Q15HmFBO6/oEYioEfbIx57eh1babc=\nR:serviceskus.go\na:0:0:444\nZ:Q1/ZU2/Is2Eud4eDFfiXkbnIsUTbM=\nR:signinsettings.go\na:0:0:444\nZ:Q1GrEYNlmccVXUqKXIZhBTrQe2XKk=\nR:signupsettings.go\na:0:0:444\nZ:Q1ejPTOH2dalcUbs2oxl3wo2Rc1pA=\nR:subscription.go\na:0:0:444\nZ:Q1BoHH0tpbprZ9zQQxkBcNmu1JN6c=\nR:tag.go\na:0:0:444\nZ:Q1M2ql0CL/qJ/kMbBHNVYjWAIFBsg=\nR:tagresource.go\na:0:0:444\nZ:Q1lk9ggFtEVyogHXCdjGbCuv/Pz/E=\nR:tenantaccess.go\na:0:0:444\nZ:Q1MnBqgyBWT/BRMoB0I1u968C5TMk=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1NzNYyJ8marCtcRhzz8VpyqLdzXo=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q16u9xHV/F+qXcmiVMYRxWGt0+krc=\nR:user.go\na:0:0:444\nZ:Q1YnQmNb7rSPxAtn61Jvj2xtgRbI4=\nR:userconfirmationpassword.go\na:0:0:444\nZ:Q1G9ohLQgAt7TB3qVjc1ZDL1Z/8/w=\nR:usergroup.go\na:0:0:444\nZ:Q1u1GXuwqZcRuYi0vulCtOArFLl70=\nR:useridentities.go\na:0:0:444\nZ:Q1B2XFf38hwBN+Ce6q4kixRbCF3OQ=\nR:usersubscription.go\na:0:0:444\nZ:Q1EOejZpSgh5pYBsYakSKNatZfkcU=\nR:version.go\na:0:0:444\nZ:Q1/7Upu3+UFPVa1s8/zKErpxOH7+w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2019-12-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YEJqMS/fX0jbceE+yM5k7XRZt5I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2020-12-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IcVWBhlfI+/1qgz2l/RaV1DZ/i0=\nR:api.go\na:0:0:444\nZ:Q1O1LgzGhAQmBrjdJo4+982MOteUg=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1Xh+jYw/7EFvHjISIhBnR/zPCA0M=\nR:apiexport.go\na:0:0:444\nZ:Q1DVhVz+Sga53Q9o/3+AnDbWQ+0CI=\nR:apiissue.go\na:0:0:444\nZ:Q1zYZvwibsuvIPh55B90/MCZAeRjg=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1wX1z78CSQmsW1QXVREKUC0PtSbo=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1rT3r6VKADftLpUweFdc8NYuqkO0=\nR:apioperation.go\na:0:0:444\nZ:Q1FuZXwvx3Tbf0PpIQh3qjw+xzAVY=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1uaTWkT+sAGc8k//gT0dYZiVsLPI=\nR:apipolicy.go\na:0:0:444\nZ:Q1RK7j4oOFw5220DBRliNHXuoqW4k=\nR:apiproduct.go\na:0:0:444\nZ:Q1kZbC5RkTTvO2RlQ3B4k+iGsDf7w=\nR:apirelease.go\na:0:0:444\nZ:Q1sgVEHcPwJuRbbMwA/wjJj+4j3/k=\nR:apirevision.go\na:0:0:444\nZ:Q1fW8CxmOzWsHURoFtcLcE+CO03T0=\nR:apischema.go\na:0:0:444\nZ:Q1GcpluLgVaNrb2o/NypRXx9kvbVE=\nR:apitagdescription.go\na:0:0:444\nZ:Q1qioZTwfnAOqEfYaeib4z+1ebhRo=\nR:apiversionset.go\na:0:0:444\nZ:Q1v4HRRk5NQbZ2KWMoW3ZmppRRsjo=\nR:authorizationserver.go\na:0:0:444\nZ:Q1nJ56V2sLR0FDQVzjdArDqgB41Es=\nR:backend.go\na:0:0:444\nZ:Q1+UjpDErf0teoKu8AAa5y7pHlKQc=\nR:cache.go\na:0:0:444\nZ:Q1Xo4tsv3JsMLGWABsH4IcqQo51ko=\nR:certificate.go\na:0:0:444\nZ:Q1ngzuWma4DMsCXlLsJX9YN7lNPUo=\nR:client.go\na:0:0:444\nZ:Q1D1nwODC6fkMQ2A7/H97YEqIzTvc=\nR:contentitem.go\na:0:0:444\nZ:Q1bm/4SZPM8L8D2ZN4QR9c4yaxNuI=\nR:contenttype.go\na:0:0:444\nZ:Q122qo1MXIHNGu+fQUwthwD0gvLD0=\nR:delegationsettings.go\na:0:0:444\nZ:Q1KYGKwpTm3U40Ztpn2YBaQwraYcg=\nR:deletedservices.go\na:0:0:444\nZ:Q1krjjgQ5vQfbgdexkQaBPvjv3GWU=\nR:diagnostic.go\na:0:0:444\nZ:Q1I50KlopLugkZw3M/8xjaAbLXZqY=\nR:emailtemplate.go\na:0:0:444\nZ:Q1hFZLWP9/huPoavo4UB3b0Xdgoz4=\nR:enums.go\na:0:0:444\nZ:Q1cearyy9tn9UCT5DyfhKbNUrBfY4=\nR:gateway.go\na:0:0:444\nZ:Q1jbFRlU/I2zMc/pfHSEyErZHRUMU=\nR:gatewayapi.go\na:0:0:444\nZ:Q1jiGOJQX4rYjBmMGLETfsBxX7/CE=\nR:gatewaycertificateauthority.go\na:0:0:444\nZ:Q1GCQmnsqLAZKczePxg5myhy9M9jg=\nR:gatewayhostnameconfiguration.go\na:0:0:444\nZ:Q1mEwfqCFmU1oCdjaYLGnWaLK4MBI=\nR:group.go\na:0:0:444\nZ:Q1NprD57kWI/nF45hhQMuEPK1rZ1A=\nR:groupuser.go\na:0:0:444\nZ:Q1+EqPaAWDXjqc7aA4CUG/QF571mk=\nR:identityprovider.go\na:0:0:444\nZ:Q1+V++R29fKLqTcVubdMt//e7h5x8=\nR:issue.go\na:0:0:444\nZ:Q1IM35GWUpmmMiSxJ8xStno3KJes0=\nR:logger.go\na:0:0:444\nZ:Q18wpK3hVvUty9nbxS+P8W7bImYns=\nR:models.go\na:0:0:444\nZ:Q1/1JrGYtxcHXVV7hJO48d2tk9iqc=\nR:namedvalue.go\na:0:0:444\nZ:Q1wm4vM0Yehsq9VhcB7cEboEpMc1c=\nR:networkstatus.go\na:0:0:444\nZ:Q1Fn9tdni7quIuCESIBRo7qB91UFQ=\nR:notification.go\na:0:0:444\nZ:Q11zX+WHuU4LyuQCRCXq6pMBIgc2o=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1XucTctTyLdgGBzKXtfYF8feNnIs=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q1dR3qQec6GZ753w6oA8atDdBYL8U=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1OKuuMMSE2CXR7l9GeVQi9rrmWkU=\nR:operation.go\na:0:0:444\nZ:Q11JcUD9poQ4SOLlx8GNU1JqKLcFk=\nR:operations.go\na:0:0:444\nZ:Q1FmaCmQq9oL10ChyoTV+gTQrkomc=\nR:policy.go\na:0:0:444\nZ:Q1ztcoFtu/BYrQEw1AVhOacGvBDS0=\nR:policydescription.go\na:0:0:444\nZ:Q19KUi2WDOyz4QVOxpX9WomYly5as=\nR:portalrevision.go\na:0:0:444\nZ:Q1V6MtkcY2fpIudPJIP2plXzTE3k0=\nR:portalsettings.go\na:0:0:444\nZ:Q1ZQDypEBowlc1+4p0ok/75Qm337E=\nR:product.go\na:0:0:444\nZ:Q1UO9ElzafMXUB4DVWgpu5VyQS2Y4=\nR:productapi.go\na:0:0:444\nZ:Q17qw6Ta7l+8sn0pfwq1xjlxjpgB0=\nR:productgroup.go\na:0:0:444\nZ:Q1aNZv6HVfA0Wpu2wLiPhrmaogCFM=\nR:productpolicy.go\na:0:0:444\nZ:Q1cGGNc0CoRu3sy4TDc28GHtAfu9U=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1MFeLmlevEONzBZUvrt1Fm83nMG0=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1NrAXBmIDqYhJGz+gQi9VkohLp0o=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1evNdCX7aglBcWjcGCYf8wRCHbCU=\nR:region.go\na:0:0:444\nZ:Q1pOA/eNKyPUvCuJ3hIkJyiuvk8ds=\nR:reports.go\na:0:0:444\nZ:Q1GwPcYN0WMQ2DZKiKA0S8kscGwfc=\nR:service.go\na:0:0:444\nZ:Q1E81e3cdpKwP6vMnPWiKnmr22woI=\nR:serviceskus.go\na:0:0:444\nZ:Q1hGn8gdJUCOxa5mh9a1KNulyrqLw=\nR:signinsettings.go\na:0:0:444\nZ:Q1t3mckMaxZJHQe3m3aYoQRr2m994=\nR:signupsettings.go\na:0:0:444\nZ:Q1TDhOeQKvqXvR2KvFQ0ncgbA9Tts=\nR:skus.go\na:0:0:444\nZ:Q1Tf7upGdwPJ+SHiutshZj4quY1Hk=\nR:subscription.go\na:0:0:444\nZ:Q1UswlJB7pkOuJinr5q74Elws/zvo=\nR:tag.go\na:0:0:444\nZ:Q1QQ65OoRlHa+vFFg1iiD7cILspVc=\nR:tagresource.go\na:0:0:444\nZ:Q19AXHZBEi260u3P3eYKFEjDvMWHA=\nR:tenantaccess.go\na:0:0:444\nZ:Q11NtwsyQqhB6zcQ4Cu14r7MaMkr4=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1MQEbmuGraA1hAg2Jq1gl1fTWwsE=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1zrgpE7AuNtQkdJKGCOPy9BqmoaY=\nR:tenantsettings.go\na:0:0:444\nZ:Q18zClvbWlwS/A7FI6RReXl2TGEcU=\nR:user.go\na:0:0:444\nZ:Q1iGUtrEbk0MVWhwAPeBMOEFAN1ec=\nR:userconfirmationpassword.go\na:0:0:444\nZ:Q1rGsJ+tpV99jPosRAPNLrwx0lTLE=\nR:usergroup.go\na:0:0:444\nZ:Q1xzNdI3cB2nHkAR8qQJzgUd2zpTI=\nR:useridentities.go\na:0:0:444\nZ:Q1doCLyVABOR9TB2f2TIxBlNJZl6w=\nR:usersubscription.go\na:0:0:444\nZ:Q1RCn3Pzk3J+9uOX/+MWwa644TLd8=\nR:version.go\na:0:0:444\nZ:Q1ZVrRDhxJ2PQS5mKBoDpQ7tiwSag=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2020-12-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XsbmbblntZFILBePSKFPngm/waA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2021-08-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kFgK8g4hqP+NH+va9saUvwd462Q=\nR:api.go\na:0:0:444\nZ:Q1W8+dqOJLkUM5oT1W24pynx478Is=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1xs0LTvJN14Qv9Xv+SGCV8/c2eIU=\nR:apiexport.go\na:0:0:444\nZ:Q19QL3OEFZtpz5UNWvs/ThO2rkkFQ=\nR:apiissue.go\na:0:0:444\nZ:Q1xrWfgNbQoTInViTAnuZjU99oYDE=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1sbnDpL0mG5LN7TMWmmLJuDzP620=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1Fmtin1UILJUIum6O2mcgFSs5HMQ=\nR:apioperation.go\na:0:0:444\nZ:Q14HYxolSFd9+oOvhTVG2hpzVKvks=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1OVyK1SI6MolScz2uSTj8fWdlvI8=\nR:apipolicy.go\na:0:0:444\nZ:Q1+ogHlTMmGiyP8tytqHsP721ZsRI=\nR:apiproduct.go\na:0:0:444\nZ:Q16r0SxNRykOrla/yTZyUqF86MYP4=\nR:apirelease.go\na:0:0:444\nZ:Q1pJyNqKvfmrp3HgSETcthN/bKy1U=\nR:apirevision.go\na:0:0:444\nZ:Q1Bb/I1Wa2/jnGjXmcuTyQOBa/doE=\nR:apischema.go\na:0:0:444\nZ:Q1L7qUqhx/VVHEtKjKu2CHullzRPU=\nR:apitagdescription.go\na:0:0:444\nZ:Q1kpNxUHWpRszUh9MmV0+0bfY7yek=\nR:apiversionset.go\na:0:0:444\nZ:Q14kC8FL4st4IJoxoajzp1SIrS1XE=\nR:authorizationserver.go\na:0:0:444\nZ:Q1PboD7K+SHQi/EJbvGzT3O50aGps=\nR:backend.go\na:0:0:444\nZ:Q1ceE7B4ts5zKdjbeugfRv/Tmcf9s=\nR:cache.go\na:0:0:444\nZ:Q1G2xpGOymtk+e47VMo2HeRGFJr9U=\nR:certificate.go\na:0:0:444\nZ:Q1Hn2TdaN0V6g4DM+b7Atbj1HF7J8=\nR:client.go\na:0:0:444\nZ:Q1phkbueQIsmv6IeBsmovabtDf8Mg=\nR:contentitem.go\na:0:0:444\nZ:Q1NG1VpSKGtG6l9VAn7VguptORdQc=\nR:contenttype.go\na:0:0:444\nZ:Q1HaxgQl773JgS0solLrQ8ntn5b1Y=\nR:delegationsettings.go\na:0:0:444\nZ:Q1hJWF3cgg+Cgxp1vtTbo72kz+nb4=\nR:deletedservices.go\na:0:0:444\nZ:Q1O7RukBlF7qM80XdUtw5eWZsmMCY=\nR:diagnostic.go\na:0:0:444\nZ:Q1zL980QyHyfyiPHC9I4RruaAwwDY=\nR:emailtemplate.go\na:0:0:444\nZ:Q14T9CvdTvMCjleAfAFGvOnEHd920=\nR:enums.go\na:0:0:444\nZ:Q1KkvicMywLemL+WgM/wQFeEPY1ZY=\nR:gateway.go\na:0:0:444\nZ:Q1PTAxh3jX+37MesK1PubjPIcAjF8=\nR:gatewayapi.go\na:0:0:444\nZ:Q1TlyTwP/0uIxiQjv29Wbgtq0YkYg=\nR:gatewaycertificateauthority.go\na:0:0:444\nZ:Q1rAOvkKLoz9OIbGE1+41avHH1VWQ=\nR:gatewayhostnameconfiguration.go\na:0:0:444\nZ:Q1u/njubBuFx0UsKy0DIUlXZUSVuE=\nR:group.go\na:0:0:444\nZ:Q1tHz84AoF5FF0hkxuhrwZY8JjfJ8=\nR:groupuser.go\na:0:0:444\nZ:Q17QR5Dg8bscRsHUHUElecAyKJLHA=\nR:identityprovider.go\na:0:0:444\nZ:Q1+GNv+zY14blxEkqGy4hWT6ivQsc=\nR:issue.go\na:0:0:444\nZ:Q1vflYqYlpU33RqZlHqXbXZQE4YF4=\nR:logger.go\na:0:0:444\nZ:Q1rU9/fZxxOJaBcAZICG0OudGld60=\nR:models.go\na:0:0:444\nZ:Q11cJA/Dq+dScVHitY8sge462DtLA=\nR:namedvalue.go\na:0:0:444\nZ:Q1+ZOnm/1U9K4mBHk6GjzeSDSrbUU=\nR:networkstatus.go\na:0:0:444\nZ:Q1i0FD7jWi4duLjMSm8Ceyquq5myw=\nR:notification.go\na:0:0:444\nZ:Q1pzhmUFM2diAoGoOLT7xlMF5O3hQ=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1J4OrpfJLx5zZJ5rTjrl6h3odXOA=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q1MhiwUXxP/unGTjFOvcS6eq5s5iM=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1DDbhZaKG40vxIZJtRbm/vfqzq3I=\nR:operation.go\na:0:0:444\nZ:Q1Gi4heWO0XyodcId0r4HokXYelLM=\nR:operations.go\na:0:0:444\nZ:Q1FPTNgihJEpu+X3g0SKTVg93LOpk=\nR:outboundnetworkdependenciesendpoints.go\na:0:0:444\nZ:Q1rLbKuZSP6tDr9C0Qe1dOLrH/rag=\nR:policy.go\na:0:0:444\nZ:Q1ngbhaqB9wMPY3kavDeU9maCzZDc=\nR:policydescription.go\na:0:0:444\nZ:Q1maBr4QZQNPo9LH89adlXuGpDTac=\nR:portalrevision.go\na:0:0:444\nZ:Q1YekjdS9iKmkbzjVr3HAJhGS6eBc=\nR:portalsettings.go\na:0:0:444\nZ:Q114oQRuRUIiZzD+lnrKFetHN88Fk=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1EMcCFHPllp1h2eUTy5h0HPFqa9o=\nR:product.go\na:0:0:444\nZ:Q15m01+JcIVdHPDqQlOb0mPckADUs=\nR:productapi.go\na:0:0:444\nZ:Q1IVTLgsg6NrXL5MyMlJ5J+b8RzNU=\nR:productgroup.go\na:0:0:444\nZ:Q1lcRdush3N/50vx8gKLhiglhPjRs=\nR:productpolicy.go\na:0:0:444\nZ:Q1V1tAK03rlpUu8ch0Zd5nyie1+lI=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1w1S0mxiTS1+KY4e4KDOO3tNHA18=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1/HZtpx6HtJLgw3IIXs1OOI//LOQ=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1DBBVGHaEPT+eny+22EVTGRUbcjw=\nR:region.go\na:0:0:444\nZ:Q1EX1WsYpB/V6woybzSabndvSOt28=\nR:reports.go\na:0:0:444\nZ:Q16Ff2I/MhMTbexFQ3X/OVBGQ7Jjk=\nR:service.go\na:0:0:444\nZ:Q10zDjoXJBj9klYUoT3QBc1bd0NuY=\nR:serviceskus.go\na:0:0:444\nZ:Q1Zn/YP0J5CSKAL+faj5CHZoBBNhM=\nR:signinsettings.go\na:0:0:444\nZ:Q1LPrCS+KmKOj0vLJ1SYykIQCJfb8=\nR:signupsettings.go\na:0:0:444\nZ:Q1cgameqtn3BN1ZJN0YtjqmCPEuEA=\nR:skus.go\na:0:0:444\nZ:Q1ec9Y3LBI5SKQ3nmkSnzINtuSihA=\nR:subscription.go\na:0:0:444\nZ:Q1/zbXXtBImukr2BxII+eET0Na8qI=\nR:tag.go\na:0:0:444\nZ:Q1pVOKfrhPwtLbUa04XykTJtO3VRQ=\nR:tagresource.go\na:0:0:444\nZ:Q1/AKaP2xKuJxuqrmQnzSuPTfNd7k=\nR:tenantaccess.go\na:0:0:444\nZ:Q1qsKID91+r2I3kgDrESG2dDVJGkk=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1fs75vkgbdSjtaprrvbyDMLO2W9Q=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1oXTdlq9FEEK5VZyOBph4aETqZEU=\nR:tenantsettings.go\na:0:0:444\nZ:Q14xcqaemxMCjRaUfL2GI17VJcsDo=\nR:user.go\na:0:0:444\nZ:Q1gs67gdUyGVA/ev6JJjLIBsOgGJs=\nR:userconfirmationpassword.go\na:0:0:444\nZ:Q1aYhB3M473Ei81RsbFIu89Dia/G8=\nR:usergroup.go\na:0:0:444\nZ:Q1qarhhIta49JOa0cbho2PTNnB9QI=\nR:useridentities.go\na:0:0:444\nZ:Q1Xut+wsSJz0VB0IOTQW3tUcqDtqM=\nR:usersubscription.go\na:0:0:444\nZ:Q1gyoN4GBXdgm1kH/pTWTPbcdfeJw=\nR:version.go\na:0:0:444\nZ:Q12a5CaKpa8zzXbL9IVyOdv/VfyKk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/apimanagement/mgmt/2021-08-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rqtVc6Ol0muJnikcOFc10tum94Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2019-10-01/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18aCy0Ee8H7UZRAXHDfKoQy2qgH0=\nR:client.go\na:0:0:444\nZ:Q1niJxB/B/KCkbdVvRx/N5Mkqaic0=\nR:configurationstores.go\na:0:0:444\nZ:Q1aGnVNy5eIUfvNtpV3caYCVQgiAs=\nR:enums.go\na:0:0:444\nZ:Q1dOT8Xy1d5m4aZ4MhjjvCnnNAZJ4=\nR:models.go\na:0:0:444\nZ:Q11PpjGLi8jFW4u6ZYa3RC5OQLHtQ=\nR:operations.go\na:0:0:444\nZ:Q1U7qwL4DEhoI4JFMDUMJF+rgGP04=\nR:version.go\na:0:0:444\nZ:Q1BV+LUDXIH+X4UiiphUhecbwyHko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2019-10-01/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aL5AcLK4cYhmoBv1bTQhjiJ2Zi4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2020-06-01/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KhfrLRHfY3kPgZ55rQObG8thHRE=\nR:client.go\na:0:0:444\nZ:Q181ddtk63o8gN4+WRN+7CmFwxncE=\nR:configurationstores.go\na:0:0:444\nZ:Q1+/WJishLdTKtY2E/pcSxa+lw6tA=\nR:enums.go\na:0:0:444\nZ:Q1JbLsecJNNKFGyoeRywQinZzz8IY=\nR:models.go\na:0:0:444\nZ:Q1JLe664ukJiE+6GbMUtSRzXX9nGU=\nR:operations.go\na:0:0:444\nZ:Q1L2JQmw4LM+Q+I32buHcm6R7tRqE=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1p3J1mw2ga9kVH+RgsHzQPBkp6AY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1y+cLlLxtDzVCxzs6WAu3L4jB1V4=\nR:version.go\na:0:0:444\nZ:Q1tQ5OuwHzJItTfDQnmiE4OilttV4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appconfiguration/mgmt/2020-06-01/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1k2mfGFDg89ax375qZRf69MzVHZ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2015-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2015-05-01/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YThNrXINcOzlJzCskjFa6ECWx0Y=\nR:analyticsitems.go\na:0:0:444\nZ:Q1oNf+vUEfLLZ87zrkNoX7QM9ALAk=\nR:annotations.go\na:0:0:444\nZ:Q1TYFNC1mmYHRJoiOlPpGXPtLTbbE=\nR:apikeys.go\na:0:0:444\nZ:Q1SEUPGZ410n2r0IjAq0ajKoKQvOY=\nR:client.go\na:0:0:444\nZ:Q1JheQwaZSYp8m4evVaRRui3A6/4I=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1GH3s5BWw84/ZYKT8BbXaqCLF2/0=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q10RY/NuJhiyIu1nf83VUZFYU4RSc=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q19+kS0Se3Jeg5MWSP1LtlX65gNdc=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1zFSizjWtTwtoG7h07WTVqCKwjZ8=\nR:components.go\na:0:0:444\nZ:Q1nv4txCJNRXdNzwZEV1JItf1rQE0=\nR:enums.go\na:0:0:444\nZ:Q1gcvXN/v10mAiwzd21mfOKh2PybY=\nR:exportconfigurations.go\na:0:0:444\nZ:Q10SYsBoXogI34QL0cWneKCa4Jg7A=\nR:favorites.go\na:0:0:444\nZ:Q1S8ILGeYzBzLWT3BLhyEqxY1loUg=\nR:models.go\na:0:0:444\nZ:Q1Ba2WBdec/qUWMxDiJVRcAEEVhsY=\nR:myworkbooks.go\na:0:0:444\nZ:Q1kOch44qrHguVwvkF2g/WV/xxvEU=\nR:operations.go\na:0:0:444\nZ:Q111r5dOjyCG3MWmZ5MYXpA9hMX94=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1mzahHP6KrOPLjUUmmVytwpDy0To=\nR:version.go\na:0:0:444\nZ:Q1gE3Y3eWRk8zWJyOvOU7lRrNGI3s=\nR:webtestlocations.go\na:0:0:444\nZ:Q1LjHdvG+zF8LEINSdv2DVzgBgW0o=\nR:webtests.go\na:0:0:444\nZ:Q1kJ+nlMVUygOcFBIokJiqBQ/mKgE=\nR:workbooks.go\na:0:0:444\nZ:Q1gFzk2AH3Kydol1pB3pQk5uvY3Ao=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1DwKLsCS7ASPd9aR6EEpDphuv9Zc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2015-05-01/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Ko/gTY76YL3OE17jiXM9EiPSqTE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2020-02-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2020-02-02/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1K3oUJTZ9IHKhTm/HocpOAbnUbnw=\nR:analyticsitems.go\na:0:0:444\nZ:Q1ij6Lxp1sEYh8PkVd3Ki4Mhzxbmo=\nR:annotations.go\na:0:0:444\nZ:Q1yihyf+QqY+ma4ZuNaTG+ovd6vwE=\nR:apikeys.go\na:0:0:444\nZ:Q10t2X2Es2o0+rwQrgXtXiiBdUy1w=\nR:client.go\na:0:0:444\nZ:Q1S/289qTdz0XH23lRh94Mh6ZDD8s=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1eT1O/6Yv3BjUQtR62/qD73pDh7s=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q1PAX6HVkwRDsRL2Z0pnVywSTGPSI=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q1vBJRzxEEtkIAkg+5oKQIYzo9l3Y=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1hC6f2pFhYsnx+aCxtKetCiDyveE=\nR:components.go\na:0:0:444\nZ:Q1sB2iWn/cvKtWyfC8r4VF0bMVJ9Y=\nR:enums.go\na:0:0:444\nZ:Q1tlzLk9PloJQid/AGLLZWdsISfZg=\nR:exportconfigurations.go\na:0:0:444\nZ:Q1wzD98eiEdklAkvFCuQMuvC2GKnE=\nR:favorites.go\na:0:0:444\nZ:Q1nYEIykRPZNI/8uSkEAlWlJkZ6e0=\nR:models.go\na:0:0:444\nZ:Q1YVUegVddxO0xxafKRVIlpotO26A=\nR:myworkbooks.go\na:0:0:444\nZ:Q18PcXamjZS8j47nQzL+1kgo/ZZ0Y=\nR:operations.go\na:0:0:444\nZ:Q111r5dOjyCG3MWmZ5MYXpA9hMX94=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1hvGkf5qcw+/Q94tM2t0IWHChgUk=\nR:version.go\na:0:0:444\nZ:Q131GzO0vQpdMdSag66NvYikgFPdM=\nR:webtestlocations.go\na:0:0:444\nZ:Q1CQPzZfjvhJboRZAbUT5C2LWkB/g=\nR:webtests.go\na:0:0:444\nZ:Q1oqBSUrWi027ljtLZbWT7uxTfVaE=\nR:workbooks.go\na:0:0:444\nZ:Q1NTNV6TEE/oUbI1e6C+tx2jlKxHs=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1Ga7LRHSRFTe6PoeJNcob74hgnek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appinsights/mgmt/2020-02-02/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rYsa24/RykeERrOIeLzqMjFq1KY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appplatform/mgmt/2020-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appplatform/mgmt/2020-07-01/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rOuNgCY042dF2VzVG/ECVeqyxVE=\nR:apps.go\na:0:0:444\nZ:Q13HSV8DsdFUFsagn4VH6lqpFJgFg=\nR:bindings.go\na:0:0:444\nZ:Q1PdUD6IeBmp12bJ0oxwnIrO34pJc=\nR:certificates.go\na:0:0:444\nZ:Q1RHVJnpDUIVOIRtLg1bWMJtxrezA=\nR:client.go\na:0:0:444\nZ:Q1hkV/ZCqhiEnTPCjIWDC1QfugxFQ=\nR:configservers.go\na:0:0:444\nZ:Q14yO5gOtaoEv35HPmjGH7Efm9cQQ=\nR:customdomains.go\na:0:0:444\nZ:Q1HUmFdP0LACCRguRT09C49xFFbb4=\nR:deployments.go\na:0:0:444\nZ:Q1gLAox5tJf0sTvzLWDVKPVmjE2OQ=\nR:enums.go\na:0:0:444\nZ:Q1HhcKqqj87R2qWcpgFVPEInTywTc=\nR:models.go\na:0:0:444\nZ:Q1pMBLG4EUv+9UsBRFF1LU77aaKqk=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1w+XAzb/PVIK+q+4FU7+PVvNTjfs=\nR:operations.go\na:0:0:444\nZ:Q1UQgLXkoi//eAbwway4yj4dh8uMg=\nR:runtimeversions.go\na:0:0:444\nZ:Q1S4re78EGyzgTGLh1OPf1LfPEzq8=\nR:services.go\na:0:0:444\nZ:Q1mMruI+6gPZ3XxRhfalhZ+nVOd7s=\nR:skus.go\na:0:0:444\nZ:Q1jFzCHuPkdttPxVm7dUlbgg6OW0E=\nR:version.go\na:0:0:444\nZ:Q1/8QNEjRa7Pk7INqHKWnFo6eN4tA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/appplatform/mgmt/2020-07-01/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18TnI3dyZCGEz/77uZozLrjKifno=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2018-09-01/attestation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1dAN8QC8xLEbBuhhqjUAIRk4zkdE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1TwsccL+lYi+JzbnsI0/pPUdbAb0=\nR:enums.go\na:0:0:444\nZ:Q1yJXDh0qrewQN1eCcvAsw/RWXAVk=\nR:metadataconfiguration.go\na:0:0:444\nZ:Q1eVDo2f19LF9X9lTCwSFdrW6Jyio=\nR:models.go\na:0:0:444\nZ:Q1rnBJhKzXldMIJ+XE2FwK3b3D9VQ=\nR:policy.go\na:0:0:444\nZ:Q19mdS9/2bnO4L0xzjhwun/6UYCfY=\nR:policycertificates.go\na:0:0:444\nZ:Q1I2ak84IdeqpLUJTIu+Wok5IYI8g=\nR:signingcertificates.go\na:0:0:444\nZ:Q1AMDCrrrTPI/Jn2ygzS34Nydyn2E=\nR:version.go\na:0:0:444\nZ:Q1g1byD2w9M1TV+FHJ432pu9Tllzs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2018-09-01/attestation/attestationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wbBPtpQqaMgJ869HGQ5OcUVGgKw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2020-10-01/attestation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:attestation.go\na:0:0:444\nZ:Q1ZCIey5yO8MIbJ1F0CGoWH8WzMb0=\nR:client.go\na:0:0:444\nZ:Q1zyw9k63eKnDg1oLQ/6ILVP9urJY=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1twX2RH4CA2Li3em9I99DGDb3Ut8=\nR:enums.go\na:0:0:444\nZ:Q1sqnHX5oe1HaOGwobZ46xwh9QmUk=\nR:metadataconfiguration.go\na:0:0:444\nZ:Q1Yzu4kmlRx0NC62RbACT6foDodSg=\nR:models.go\na:0:0:444\nZ:Q1pRQH60z0r63Qi4FWh9txLePJ5Tg=\nR:policy.go\na:0:0:444\nZ:Q1C76jKapnaJ2zN1ru3RuMtzBGnaU=\nR:policycertificates.go\na:0:0:444\nZ:Q12PtwCoHfROjd+Aj3v+cqNMTpb2A=\nR:signingcertificates.go\na:0:0:444\nZ:Q1MUKPYAJE4FRBAuX9OWkgf3kWEEo=\nR:version.go\na:0:0:444\nZ:Q1MfksjuPS3WnZuIaJMpWeoGlk/Ik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/2020-10-01/attestation/attestationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1quokJa81a1rJJJkLzgbUi3fzP1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2018-09-01/attestation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aEl7imEp0VZl+C8fbizHomfKyJE=\nR:client.go\na:0:0:444\nZ:Q1trHddbxAgEnhRs788bLdzp5LOJk=\nR:enums.go\na:0:0:444\nZ:Q1AV68UXBgHcX+G7Rnpw/+76u1YbY=\nR:models.go\na:0:0:444\nZ:Q1Ghf3nnwRpHoWSbcymIXPHmdPMv8=\nR:operations.go\na:0:0:444\nZ:Q1CFNeEnzteO+cLHS/p7UGmAtWI/w=\nR:providers.go\na:0:0:444\nZ:Q1WMxLgxDYhHLP4k8k3CoffYJ7e80=\nR:version.go\na:0:0:444\nZ:Q1g1byD2w9M1TV+FHJ432pu9Tllzs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2018-09-01/attestation/attestationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1AdCzRtKn2cWWHX+oioPc/MozgKA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2020-10-01/attestation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MGoN+j50CMk33rURcZ/9kFzfpvw=\nR:client.go\na:0:0:444\nZ:Q1xm5Xp9ouWGE9qLYaZjAKzx4k8QY=\nR:enums.go\na:0:0:444\nZ:Q1nIRy3lydFw9WvEdJ7a/ZD7XCMxA=\nR:models.go\na:0:0:444\nZ:Q1PeJYmHXTM9rosUPbKaDY4pSiFhw=\nR:operations.go\na:0:0:444\nZ:Q1q87BUh+aoJsDalEtdAZmx0f6Gu0=\nR:providers.go\na:0:0:444\nZ:Q1fsKxvSquj8J7qaMtotwlmcAsgbc=\nR:version.go\na:0:0:444\nZ:Q1MfksjuPS3WnZuIaJMpWeoGlk/Ik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/attestation/mgmt/2020-10-01/attestation/attestationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DwGuLii6Rk5Swl+39twvhSONN5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2015-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2015-07-01/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1E/v5TEp5ht/TL4RJqPuZTqTV8PE=\nR:classicadministrators.go\na:0:0:444\nZ:Q1CMwZ8Qw1LALQUGX3wMTaFi8hnYc=\nR:client.go\na:0:0:444\nZ:Q1cUi9J+MsvfipDMnGYbcEnp+JIjI=\nR:globaladministrator.go\na:0:0:444\nZ:Q17IULsszJfITyMqNV3Z78YVwovmw=\nR:models.go\na:0:0:444\nZ:Q1gHeBOov2Q0CkocQvEbLDYw06QNQ=\nR:permissions.go\na:0:0:444\nZ:Q1XQllMOSqQLioyNp3OIScVi/6k8s=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1eFmzzSf0t6qjgg/xwLUcWw31YjU=\nR:roleassignments.go\na:0:0:444\nZ:Q1hdNhBHmG9kxZenVL+X+sojFcets=\nR:roledefinitions.go\na:0:0:444\nZ:Q1o19vLkB/AKJ9q+ryx0y+F/BS6xU=\nR:version.go\na:0:0:444\nZ:Q14BmXTucZ9c6a96O/eLSNS2V5LRo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2015-07-01/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EXR5wEPhmHFvEX4XL9JDOSklHNo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2020-10-01/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1z8tE54oN53svjfS5crl8ekoxRGY=\nR:classicadministrators.go\na:0:0:444\nZ:Q1fhBEFJbluFuc9CElo5Ry+n7zHtY=\nR:client.go\na:0:0:444\nZ:Q12b2fv+ek0398/uQ4vR1JcgIHTls=\nR:eligiblechildresources.go\na:0:0:444\nZ:Q1D3cCrRNk5DADAIxx6AiiY4puTbI=\nR:enums.go\na:0:0:444\nZ:Q1fmremHDiqHSbCsh+aGRdieOznzg=\nR:globaladministrator.go\na:0:0:444\nZ:Q1XbH+hk+kwQSx6nC+bcqFzMOksHM=\nR:models.go\na:0:0:444\nZ:Q1R56CvtUH4TYX6zJU7mITbDEtRSY=\nR:permissions.go\na:0:0:444\nZ:Q1bUwEhlr5SxltoSV86hPPXSxwEuE=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1mHtY7z+HXpg0V6pvz+Z24GbnbRM=\nR:roleassignments.go\na:0:0:444\nZ:Q1mdp7jzCdV3oeW2ssJegrwSCXZdg=\nR:roleassignmentscheduleinstances.go\na:0:0:444\nZ:Q1G5EW0j/6VrozndgP7mEepVlykwY=\nR:roleassignmentschedulerequests.go\na:0:0:444\nZ:Q1lHa02IF2rGay0D+QwibmJv4rJHQ=\nR:roleassignmentschedules.go\na:0:0:444\nZ:Q1m9bN/dHGaFADzeKszmqGkp04XW0=\nR:roledefinitions.go\na:0:0:444\nZ:Q1eYu4HbiOTzQ4zj2RTwfzwoW4qY4=\nR:roleeligibilityscheduleinstances.go\na:0:0:444\nZ:Q1e9rmGBuGdcLeQ4dVJUry+AulmLE=\nR:roleeligibilityschedulerequests.go\na:0:0:444\nZ:Q1csnESjEgCeS383OQXAC/jtxMCH8=\nR:roleeligibilityschedules.go\na:0:0:444\nZ:Q1qAKBRL2UdYdtVNyOCMeQ/H99QCg=\nR:rolemanagementpolicies.go\na:0:0:444\nZ:Q1/EaTeSTxpOz4fJWSdWRy4MTGFY4=\nR:rolemanagementpolicyassignments.go\na:0:0:444\nZ:Q1SdGG8k5gpGXB8tW9Y6HKDbeulNI=\nR:version.go\na:0:0:444\nZ:Q1FQgFyriIBGqL0Di5G08jpGfRULQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/authorization/mgmt/2020-10-01/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZC/EmMPOqf4xfwNmQlTtn8ajN+w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2015-10-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2015-10-31/automation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1X/w/B5DY735DcLNFZojKGqzCIU0=\nR:account.go\na:0:0:444\nZ:Q1sMVYh85N4b+/k6i6rkMZno7wjQo=\nR:activity.go\na:0:0:444\nZ:Q1qCFq7LZyigv/vQfDQNQimTDEA5I=\nR:agentregistrationinformation.go\na:0:0:444\nZ:Q13DR2pZrlzBvHThqvG0Z4r63AppQ=\nR:certificate.go\na:0:0:444\nZ:Q175I1T1SvMEzaQryzWScEfG1Nrh8=\nR:client.go\na:0:0:444\nZ:Q1tBA+d1FIi904SFAmeDNpYVKIXR0=\nR:connection.go\na:0:0:444\nZ:Q1CveIO+7PnCbx5AC/P0kzuEqadSA=\nR:connectiontype.go\na:0:0:444\nZ:Q1yAms4QM5BNlgDa/3mT+c9Xrbadk=\nR:credential.go\na:0:0:444\nZ:Q1gVbLTQTaUuo5N6tg7WDfZnx6/WU=\nR:dsccompilationjob.go\na:0:0:444\nZ:Q1ZQQBZ0T7M6Bzyvk+wTZCWv1cCqQ=\nR:dsccompilationjobstream.go\na:0:0:444\nZ:Q1EJbeQ3+rvZuPGhp2rErhmr+Fxnw=\nR:dscconfiguration.go\na:0:0:444\nZ:Q1/I2ZiywIc1qrgb2M9PaLI4dAmSE=\nR:dscnode.go\na:0:0:444\nZ:Q1Afs/AnqCsTRFCOfGQHb1xavFz8A=\nR:dscnodeconfiguration.go\na:0:0:444\nZ:Q10JUxl9DYeMyJl1M9pp95rTA7RFE=\nR:enums.go\na:0:0:444\nZ:Q1upE3Sq6trBDXd/n3gqEoePe5b4g=\nR:fields.go\na:0:0:444\nZ:Q1vWA5HTrbb33IUtV7xL0T/xQ1EiA=\nR:hybridrunbookworkergroup.go\na:0:0:444\nZ:Q1a9TjQMz6ythVhqrTatVglVfNRHs=\nR:job.go\na:0:0:444\nZ:Q1Pm/FR9dvaYAZLdDo+7GiDCEX8mY=\nR:jobschedule.go\na:0:0:444\nZ:Q1r4sNj29xYwWFMEWK0dpfATFoZug=\nR:jobstream.go\na:0:0:444\nZ:Q1X6K9IOBumZLsXuXghVa6JrenlQ8=\nR:keys.go\na:0:0:444\nZ:Q18V3vFyM0UkKGS2lsV1njvwdir5s=\nR:linkedworkspace.go\na:0:0:444\nZ:Q1aBVSwKlBvA8cqdomm5tnSTNNKXM=\nR:models.go\na:0:0:444\nZ:Q1Bq24QYMhlFL+fWEbjqr3Zgd28v8=\nR:module.go\na:0:0:444\nZ:Q19/x/tc6Vq6wHp2ATexvArrmLMpQ=\nR:nodereports.go\na:0:0:444\nZ:Q1Z7adngGO+CBcK9yQpQ7XSe5qp00=\nR:objectdatatypes.go\na:0:0:444\nZ:Q1JEtCOp1Zdk9RuOKwqbbwtb6Xe/g=\nR:operations.go\na:0:0:444\nZ:Q1adojUiC+QCEHzckzMG7cNo16fw4=\nR:runbook.go\na:0:0:444\nZ:Q1xzXozcJzK9JlNrB4QAUlq1l6keQ=\nR:runbookdraft.go\na:0:0:444\nZ:Q1i3YzTIpfpz/jqmYvRQNGa2q104Y=\nR:schedule.go\na:0:0:444\nZ:Q1t4Rj0l9qd4NoL+SLfxHEcs3MW1A=\nR:statistics.go\na:0:0:444\nZ:Q12lfC3cGFG8CyBaSPsE5OM85buKQ=\nR:testjob.go\na:0:0:444\nZ:Q1fQiRxknl5SNVBO3jY98IgAmn08s=\nR:testjobstreams.go\na:0:0:444\nZ:Q1s3csZ4rhDKP65ezWhQ1N30fFLHg=\nR:usages.go\na:0:0:444\nZ:Q1UUZFecZa7TNbJgi/E6lY3hz0Svg=\nR:variable.go\na:0:0:444\nZ:Q1POKdkbhAlfXKsHOEXU+JgOgER5w=\nR:version.go\na:0:0:444\nZ:Q1dJe0dKAJ3T2NLar0Q9K55ICa6Nk=\nR:webhook.go\na:0:0:444\nZ:Q1yMc/OaTpxhKp7K5oWLHWXOiVIuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2015-10-31/automation/automationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qzCbpUOmCYYNqWmGmoKGVDIypCc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2019-06-01/automation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1W3pMmSOl+7U6wJr5oDRkHl9Lae8=\nR:account.go\na:0:0:444\nZ:Q1NBE99Hf90iKLjR0ySzMCAac9pdc=\nR:activity.go\na:0:0:444\nZ:Q1aFsElmTrAcrKlJTNJlyL2vpiVso=\nR:agentregistrationinformation.go\na:0:0:444\nZ:Q1btkMSqBIXz2YYkTOM0ylM2Qa4LU=\nR:certificate.go\na:0:0:444\nZ:Q1FJ49AUSfUloGJJCgmMGAUXpew9c=\nR:client.go\na:0:0:444\nZ:Q1x0uEMzPB7RkAvZdI8/u7xW6ZFnQ=\nR:connection.go\na:0:0:444\nZ:Q1lvyikzOR7fuBvnzg90CXq5JvxIA=\nR:connectiontype.go\na:0:0:444\nZ:Q1iiD77h4vvyKAxIiL2GrfssBU0y0=\nR:credential.go\na:0:0:444\nZ:Q1y4zoj+uMfdjQc9ij3KAVp7Z+Sgc=\nR:dsccompilationjob.go\na:0:0:444\nZ:Q1+xOM4EWF4h5dkrjgP6JXaML2ZmA=\nR:dsccompilationjobstream.go\na:0:0:444\nZ:Q1EWtBkRq4qzmExTQQ0nY4A8As4PQ=\nR:dscconfiguration.go\na:0:0:444\nZ:Q1MBxLxazcsAsuvogjQ9GKoEnjyAk=\nR:dscnode.go\na:0:0:444\nZ:Q1A/mByZZCK68bt4NkYbouJfZmjec=\nR:dscnodeconfiguration.go\na:0:0:444\nZ:Q1CHUR3gKUXdC/w9R3PGggj+zlEJs=\nR:enums.go\na:0:0:444\nZ:Q1ZxtvlCdn/8g4ToIXQaB0VoOhySQ=\nR:fields.go\na:0:0:444\nZ:Q1O2EhgBx7HnN5T3+uE7WiMf/Z06Q=\nR:hybridrunbookworkergroup.go\na:0:0:444\nZ:Q1WGFCNvmZEoWIPxYu2J91waSGXjM=\nR:job.go\na:0:0:444\nZ:Q12d3gewSfmG/NOzx0OKd3LToVcoM=\nR:jobschedule.go\na:0:0:444\nZ:Q1pxO9a4d9kzOEccmfpQGjA1PCXkc=\nR:jobstream.go\na:0:0:444\nZ:Q17euHuqxsqs+5dxcuI1Gf43Dnd8g=\nR:keys.go\na:0:0:444\nZ:Q1S+Z3YApGFEXDGU1lDqGPt2AWHvQ=\nR:linkedworkspace.go\na:0:0:444\nZ:Q1gZ/98pB7UXSNFgsrzRDExKc8YXE=\nR:models.go\na:0:0:444\nZ:Q15IMGxUgj5pHPoqDzuezgmzx0j84=\nR:module.go\na:0:0:444\nZ:Q1FvSIBiYrdXZK3uq/RF2H934vmes=\nR:nodecountinformation.go\na:0:0:444\nZ:Q1XoMZAclWx5Q7miyh5TJOAeYWVcQ=\nR:nodereports.go\na:0:0:444\nZ:Q1b4CvlzTBxyj2ORBh6KnzxxSf/aE=\nR:objectdatatypes.go\na:0:0:444\nZ:Q1C/HNooeNIxYg+BWxp8WYS7gDeyg=\nR:operations.go\na:0:0:444\nZ:Q1V/TE1V+uWCGSAe8ciyA1flBU3Lk=\nR:python2package.go\na:0:0:444\nZ:Q1RoH1cZQ/zoT+hO8VheLPbfTcLQ4=\nR:runbook.go\na:0:0:444\nZ:Q1iUA8KlOJLSxPeAfsEB7X2owKgJU=\nR:runbookdraft.go\na:0:0:444\nZ:Q1A0zqYfun+sFuYY4PSB//aLeiLY4=\nR:schedule.go\na:0:0:444\nZ:Q1365/hi7ubARi94ViUkO4rpdKF9k=\nR:softwareupdateconfigurationmachineruns.go\na:0:0:444\nZ:Q1OQnk62qtcu97q9lfI6w6Gw2bgTc=\nR:softwareupdateconfigurationruns.go\na:0:0:444\nZ:Q1GdgXSa+0eGnwdwu1AiRKNTelIlo=\nR:softwareupdateconfigurations.go\na:0:0:444\nZ:Q1p6jgyFei0zOraoBxDxCLPkVydL0=\nR:sourcecontrol.go\na:0:0:444\nZ:Q1Qq+cHRuz3z5NuiCuVL0d5AtvnpU=\nR:sourcecontrolsyncjob.go\na:0:0:444\nZ:Q1bLd4tox67xB0xsUzx9C5Ewg2E3w=\nR:sourcecontrolsyncjobstreams.go\na:0:0:444\nZ:Q1LGjUcO6ZGR+/iKSxGFmY3kFV7Xc=\nR:statistics.go\na:0:0:444\nZ:Q1u0YL7s+iaAMBPfsNBXmxf7pmE0I=\nR:testjob.go\na:0:0:444\nZ:Q1/NtHpref3MaRemtK7YXOyCUJJLc=\nR:testjobstreams.go\na:0:0:444\nZ:Q1dLkgIzjAEGXDCb+CccwO0UtGcio=\nR:usages.go\na:0:0:444\nZ:Q1bvWuxdako/5+i0Wki96qCyROO3Q=\nR:variable.go\na:0:0:444\nZ:Q1llcgKxjzxI/QZ5gD8o3R4x8shQk=\nR:version.go\na:0:0:444\nZ:Q1irjImHxtkzaFcq4izWm1E6yl6Jg=\nR:watcher.go\na:0:0:444\nZ:Q1zDUv34KmWEkGNOrZwu3RdhQqed0=\nR:webhook.go\na:0:0:444\nZ:Q1yMc/OaTpxhKp7K5oWLHWXOiVIuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/automation/mgmt/2019-06-01/automation/automationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ukW1LQl0prMlgssqY2rhLxOTWLQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2020-03-20\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2020-03-20/avs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SYjI2UIsb2uU8QEXyqNJs15WAeg=\nR:authorizations.go\na:0:0:444\nZ:Q1mAsJAmqURNaiGvLdqcEOoXIT+8g=\nR:client.go\na:0:0:444\nZ:Q1JRnle63ss6tOqz2G6QnskUmsR5c=\nR:clusters.go\na:0:0:444\nZ:Q10RTOXNloyd2+8KQmAbsqr4ZVbkc=\nR:enums.go\na:0:0:444\nZ:Q10N7uSJfkImUKoxVQ0GxNxCmBkEY=\nR:hcxenterprisesites.go\na:0:0:444\nZ:Q1k6uJdjIsi82Pch54zGqgJ/PWY+A=\nR:locations.go\na:0:0:444\nZ:Q1AZTLEBYLHZsk6uJjNk+DVfwqY30=\nR:models.go\na:0:0:444\nZ:Q1SosCR0LU0HvTTKoU5xrk+Zsuejc=\nR:operations.go\na:0:0:444\nZ:Q1RMA8ZmpWZfEP0mA41sEq68Zbp0g=\nR:privateclouds.go\na:0:0:444\nZ:Q1uIOnYTcKrFaCDqrpffBIHa+JnmY=\nR:version.go\na:0:0:444\nZ:Q1oc5azbSmm0E8qcGbJh7ZN/HlNyo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2020-03-20/avs/avsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jNyd3tdFQjtDJshibhR41DpBUuM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-06-01/avs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YbIablGLxwFUS+K0voWocWUsbc0=\nR:addons.go\na:0:0:444\nZ:Q1TlIKlcPZ+BSb6P8FYLN5vyKowPk=\nR:authorizations.go\na:0:0:444\nZ:Q1W4VoXY7zOvbDjkXAEDdA/qgTvUM=\nR:client.go\na:0:0:444\nZ:Q1kd8H4RNTkZq7yckMWuIo318j6k8=\nR:cloudlinks.go\na:0:0:444\nZ:Q1JDS6WlsMgvFUlKkfzmJIDcbs/Bk=\nR:clusters.go\na:0:0:444\nZ:Q1O1NcDgREf6sKqRRFXQK0pmHmkfI=\nR:datastores.go\na:0:0:444\nZ:Q1R8Mv9kSck8dBmigDFlhuy2bVELQ=\nR:enums.go\na:0:0:444\nZ:Q1jxDkhuet+JSc3a2JPiSinsX7smo=\nR:globalreachconnections.go\na:0:0:444\nZ:Q1bXrGJLGN7ryEtSljy+G5IADiZK0=\nR:hcxenterprisesites.go\na:0:0:444\nZ:Q1UVMqDaxV3G/Dyfk9QnYPj3wkcUc=\nR:locations.go\na:0:0:444\nZ:Q1RP4zuUngdCzU3mi+aeWi1uGTa/E=\nR:models.go\na:0:0:444\nZ:Q1gYZOoLPE5h7CRkkQTOBql+FPqO0=\nR:operations.go\na:0:0:444\nZ:Q1/JteUqhu6qUt10+tLZEe0rBAfWA=\nR:privateclouds.go\na:0:0:444\nZ:Q10y9pQtthmEvv2HvglmldqSJWZxg=\nR:scriptcmdlets.go\na:0:0:444\nZ:Q17EE1R/IXKP0l06xf+/XdySkAtGA=\nR:scriptexecutions.go\na:0:0:444\nZ:Q1550xfC92d1XY11NweY6cd+EBYtc=\nR:scriptpackages.go\na:0:0:444\nZ:Q19f1kqTppXoDxjhb8OmnsycLApIQ=\nR:version.go\na:0:0:444\nZ:Q12Ou9zSRx4T3UIKauaavHm09bvpc=\nR:workloadnetworks.go\na:0:0:444\nZ:Q1JSEvQI8rE+a8NTtEXBBluayL+w4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-06-01/avs/avsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sP3prYIQJuJ7ukbB+pGnvM1xhbU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-12-01/avs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+/DCMH22LcKaJ9Kxv0q+ydVcSHQ=\nR:addons.go\na:0:0:444\nZ:Q1fLJ5+SYr1RahyjVlh6GaXRJl9NQ=\nR:authorizations.go\na:0:0:444\nZ:Q15zqM8G+eXT2KEVVAh3//pglzGho=\nR:client.go\na:0:0:444\nZ:Q1crPygNnzFJhV0qEboxuHlxTd0h0=\nR:cloudlinks.go\na:0:0:444\nZ:Q1Cs1gXS7ak7o5V84t7Txh+RrUDuY=\nR:clusters.go\na:0:0:444\nZ:Q10UmknPLnlnYylZM1dSp8CEtQWr0=\nR:datastores.go\na:0:0:444\nZ:Q14BG7yTsoFEBLSlSBTTdPWqW5L+o=\nR:enums.go\na:0:0:444\nZ:Q16q2hmyzMI8oi2RMj3IK4K3EwBTw=\nR:globalreachconnections.go\na:0:0:444\nZ:Q1dksGsex2qvAy381l4LH3TvMD98Y=\nR:hcxenterprisesites.go\na:0:0:444\nZ:Q1+PmLFL0s3kssiQyujU41BsSKGYI=\nR:locations.go\na:0:0:444\nZ:Q1qeL0ppY39N5I11wr5MHFN0w4a2Q=\nR:models.go\na:0:0:444\nZ:Q1mGTFuyrc7r6BHxi23rCm8kavL9s=\nR:operations.go\na:0:0:444\nZ:Q1TGdFlzOtU8zuMd+NVT2DiNRP/aE=\nR:placementpolicies.go\na:0:0:444\nZ:Q15k89nPmYUILwCklC6/powpJAH5Y=\nR:privateclouds.go\na:0:0:444\nZ:Q1vVZkZ4eLsJ0NfojF4klRA5XlQH4=\nR:scriptcmdlets.go\na:0:0:444\nZ:Q1cyMR/QzN8blLuUugzi7BBOFOMUM=\nR:scriptexecutions.go\na:0:0:444\nZ:Q1AAVgRGdnim2tgxdqU3TQ7d+TxW8=\nR:scriptpackages.go\na:0:0:444\nZ:Q1Di4bV5GB/Gf3VFLunUV2upy3HBQ=\nR:version.go\na:0:0:444\nZ:Q1PT5uB7khlUWQEYuxSPJEJXMI6yo=\nR:virtualmachines.go\na:0:0:444\nZ:Q1MAaeoXd+bjSl+Zgiz4LH8IU3+tM=\nR:workloadnetworks.go\na:0:0:444\nZ:Q1OcK9LWWrz5HNN1lOll0K7DNN/KU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/avs/mgmt/2021-12-01/avs/avsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gwP/NrLW7YJ+7yMGsiRJvN/J9EI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azureadexternalidentities\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azureadexternalidentities/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azureadexternalidentities/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azureadexternalidentities/mgmt/2021-04-01/azureadexternalidentities\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dBpDuQJge5XllDsET5DVBkpnwzY=\nR:b2ctenants.go\na:0:0:444\nZ:Q1zVbZ03jNPFq8rqyjf440U9nmtFk=\nR:client.go\na:0:0:444\nZ:Q1TeGDpRu4X4e+K2Pkn+QySfstb4I=\nR:enums.go\na:0:0:444\nZ:Q1du376UFVPnllzD2EOFVhCyonhLg=\nR:guestusages.go\na:0:0:444\nZ:Q1aTMB8JrAEBgHPNpE2zPYTIogKEA=\nR:models.go\na:0:0:444\nZ:Q1fbUWcvEb+d8FkGjsBAirQub52Po=\nR:operations.go\na:0:0:444\nZ:Q1EDb9NZ21JFZyqwooTylKkdX32Vk=\nR:version.go\na:0:0:444\nZ:Q1h/ZabhrKZY3dDT8WDjkzlysubjc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azureadexternalidentities/mgmt/2021-04-01/azureadexternalidentities/azureadexternalidentitiesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Z87fZHmbxRlJeOcn2mfwMHruJkk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestack\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestack/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestack/mgmt/2017-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestack/mgmt/2017-06-01/azurestack\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1npdsBkPOD5pjD6VDb7jZ8luphTQ=\nR:client.go\na:0:0:444\nZ:Q1ymL+McUI9OQo2wcKdZQjbBZcs+k=\nR:cloudmanifestfile.go\na:0:0:444\nZ:Q1e8U3KUZrw+ebG68oc8ZWjZmbvTs=\nR:customersubscriptions.go\na:0:0:444\nZ:Q1ABYEV12x7fIP6jehD3wXb1wLhYE=\nR:enums.go\na:0:0:444\nZ:Q11Hv5j5SnUiqayP5p74s33IfMLs0=\nR:models.go\na:0:0:444\nZ:Q1pq9H81ZBJ+cfS8LrtlUabboaUto=\nR:operations.go\na:0:0:444\nZ:Q1/LvLpxJw95Lgva6axbYcMGY4HoM=\nR:products.go\na:0:0:444\nZ:Q1dOohaG8VwPX1YfyXOVqeAcV0Y9s=\nR:registrations.go\na:0:0:444\nZ:Q11XsmIlI9h96OoIr2/pKgT5XSnyQ=\nR:version.go\na:0:0:444\nZ:Q1eoIdveNkKJ+kXi4AdHL9GAZM3xg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestack/mgmt/2017-06-01/azurestack/azurestackapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1M0Cv2NSgjHiiFlmWf09dTzqTk98=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2020-10-01/azurestackhci\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BBOLwm92tpMqqCsEvzj7AgCc1jE=\nR:client.go\na:0:0:444\nZ:Q1QyYtywixNS5oxoeB8sruLMIhZ+w=\nR:clusters.go\na:0:0:444\nZ:Q1iWjinLjfeBy7DBEJoS3147SLb/4=\nR:enums.go\na:0:0:444\nZ:Q1wpwGDB91+DJ2RJ/Zgde5eCjf2Og=\nR:models.go\na:0:0:444\nZ:Q11NWxG/+TIDBkoCPrW5tL2VjCKhM=\nR:operations.go\na:0:0:444\nZ:Q1JZRAdwkP9Fb+eMxemksER4Sr8hk=\nR:version.go\na:0:0:444\nZ:Q1kSfBbIcvJci4jDH/2CUXD4KCjUA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2020-10-01/azurestackhci/azurestackhciapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cNSlvrtpsx37V1QGwKAA7orsL04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2022-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2022-05-01/azurestackhci\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WCzGm9dDC0idmJUjtUh7MHukXLk=\nR:arcsettings.go\na:0:0:444\nZ:Q1wTXH6r/HGT8nuXPYNmVoLkeq7xs=\nR:client.go\na:0:0:444\nZ:Q13zJbd3OW1djccOspbOdXhNtp+2c=\nR:clusters.go\na:0:0:444\nZ:Q11sZj3FbJHIFMk1WqrBCJRKKF4YQ=\nR:enums.go\na:0:0:444\nZ:Q1iqfVU3FRcs3oRbIonpm/UuKhIQQ=\nR:extensions.go\na:0:0:444\nZ:Q1oO8G9jZ44oAxJ3TTvSxE2l6+TH4=\nR:models.go\na:0:0:444\nZ:Q17c0qg3AvY0uefmEhBVGLSSI9ZFw=\nR:operations.go\na:0:0:444\nZ:Q1FQwhOpGA7g49LBLHP0/8CUg9AoM=\nR:version.go\na:0:0:444\nZ:Q1OVJEReaYW1V0dd5G4szArTfqPBs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/azurestackhci/mgmt/2022-05-01/azurestackhci/azurestackhciapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uvX69qAbOZRTA3K2na3p9xn2Czg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2017-05-01.5.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2017-05-01.5.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1QqCm0SgnzrpQNmrg9mTJj374r2o=\nR:application.go\na:0:0:444\nZ:Q1TaG778xs23oqGRR0wGYWCXN20Go=\nR:certificate.go\na:0:0:444\nZ:Q1NFEjpGEuuzXzGuCt7PM4HmBbC2k=\nR:client.go\na:0:0:444\nZ:Q1lJgZpz4BRm6itiKJmBlPQYvYy2c=\nR:computenode.go\na:0:0:444\nZ:Q1CFk4O5mzPRJdZ0kNfBiWdPwZsbU=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1F01o5hOoztg66fwXOWGNfQhu5sw=\nR:enums.go\na:0:0:444\nZ:Q1G1AhikgJGC58BON5YLOXc1fUAQ0=\nR:file.go\na:0:0:444\nZ:Q1yUDcXXNB7E2aLcNFLMK1MKtWNIA=\nR:job.go\na:0:0:444\nZ:Q1H7mkCCoKKmsrtozLC0agq68HOqs=\nR:jobschedule.go\na:0:0:444\nZ:Q1N0RaXHa+VTwAx4jkUJomGIaWsww=\nR:models.go\na:0:0:444\nZ:Q1amEeRhVFv8efSRck6eEz3F4MRQU=\nR:pool.go\na:0:0:444\nZ:Q1VmuU3G8nLTBlseRj0Io703w9sgU=\nR:task.go\na:0:0:444\nZ:Q1efzkPoyOGJn41i6JXt5vy9tVetI=\nR:version.go\na:0:0:444\nZ:Q1dLjPH0ovi2ZF7QmfHY8aIztj7TM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2017-05-01.5.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lgM1NrCPn3j8wzDB0Dje6yRjm9A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-03-01.6.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-03-01.6.1/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1xJEfc7/lsjBuxpCjENQC67V9JK0=\nR:application.go\na:0:0:444\nZ:Q1R09MjKjlyc2ScBTYI7a5UpNU/OU=\nR:certificate.go\na:0:0:444\nZ:Q1UkrflQ8S9undNTDgvuwRXTCVINg=\nR:client.go\na:0:0:444\nZ:Q1iGDt5EPMSGwxp1wyiL6NlBnhPVw=\nR:computenode.go\na:0:0:444\nZ:Q1p8xhOYRyGhOdbYatOr3gpUuazzs=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1h4sTJKnbKdPZu74X/eFggXKoS6M=\nR:enums.go\na:0:0:444\nZ:Q1eGBqftvAUu/hKrwOLJalQCkTONg=\nR:file.go\na:0:0:444\nZ:Q1auu4NtDLXFPeMasnYT8d84xUG/o=\nR:job.go\na:0:0:444\nZ:Q10VGkqP6kPCg2UvW5o1PVhhQjjSY=\nR:jobschedule.go\na:0:0:444\nZ:Q14mMDf7/JzIXKz3fCZdgAGyXbTRo=\nR:models.go\na:0:0:444\nZ:Q1eIXzqBhPeoJN0N6GBuPdoqHaWB4=\nR:pool.go\na:0:0:444\nZ:Q11MdHBpNPMnqKrMFIp8beMdkb3gA=\nR:task.go\na:0:0:444\nZ:Q1zWzrBh00Zdv52VPnmOsPXo76Vmo=\nR:version.go\na:0:0:444\nZ:Q1u+sZPFSmMaJNOgmzkhS/HWEVF9s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-03-01.6.1/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jHC37FwXWewFBv/edveGdmIQ3Ms=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-08-01.7.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-08-01.7.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1F4yAqetpKTCFXpluRxVYqzGE12s=\nR:application.go\na:0:0:444\nZ:Q1X3PvwNWWVmom8QKBHZnaKff76gI=\nR:certificate.go\na:0:0:444\nZ:Q1rUtq5i5kMG0cAWG/HrwKqGwzZ2A=\nR:client.go\na:0:0:444\nZ:Q12TehfbAgke2jU4zg2BdhRlupKwY=\nR:computenode.go\na:0:0:444\nZ:Q1KeYqm56GuX7a2e/SDqaapa6/cnk=\nR:dataplane_meta.json\na:0:0:444\nZ:Q14H6p4JKT1Hqz9rnxY92Bph03H9M=\nR:enums.go\na:0:0:444\nZ:Q1tap8fDnsovG7ffTZ9HHZez2eV/I=\nR:file.go\na:0:0:444\nZ:Q1pNnvHv4I+Qzh3z9pmBzTF+qcvRg=\nR:job.go\na:0:0:444\nZ:Q1e1ZkDx6npCO+cur21++FRL058Sw=\nR:jobschedule.go\na:0:0:444\nZ:Q18StLB2arZbEsi3UL3SZTSN0HEzE=\nR:models.go\na:0:0:444\nZ:Q1pUnpXYcjYC1nPDZjEeoE8QAMAQc=\nR:pool.go\na:0:0:444\nZ:Q1Mc4impRcvWMsvR7ErM+kBeaCuEM=\nR:task.go\na:0:0:444\nZ:Q1b4nDHH9Tz93khh994ZDi2Dty8+4=\nR:version.go\na:0:0:444\nZ:Q1c+8gXj1tQJGM4a5mM7We9kesRm4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-08-01.7.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UYBR6TnicsEtEW4kNfnvJ6WtEZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-12-01.8.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-12-01.8.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1bnKR+j++r4X7XG7nUcig6JII7q8=\nR:application.go\na:0:0:444\nZ:Q1tv7XLC+VsHWI9qTyL/4wc9qm9tU=\nR:certificate.go\na:0:0:444\nZ:Q1XPUzekUvqBt5cTW2faoB92wJowA=\nR:client.go\na:0:0:444\nZ:Q14yqEaOhZt/gxM8yjEG/TMignxNw=\nR:computenode.go\na:0:0:444\nZ:Q1xAXfQEKa/Qt1USoaDm+5TJ5zUYw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1aGyp7j0ZuDx/SC6v6iCMbsnFDF4=\nR:enums.go\na:0:0:444\nZ:Q1hSw03j4FhMkC58lvmDMFC1fgWqg=\nR:file.go\na:0:0:444\nZ:Q17LVF1ShowT3uZpQ1DbytHJOeahc=\nR:job.go\na:0:0:444\nZ:Q1mZrwOMlglo4SrLIbFOwhV6VNpEk=\nR:jobschedule.go\na:0:0:444\nZ:Q1VNu8tQlhorjP3t3z54Em4yJg+g8=\nR:models.go\na:0:0:444\nZ:Q1DfQmw73xT/N11OXJD9dJLmEfbF4=\nR:pool.go\na:0:0:444\nZ:Q15ymQCfMWBjSnK7LzYDyDxMOtuK8=\nR:task.go\na:0:0:444\nZ:Q1bZe5wlUzbMpvcjEqRY1yaAx1s7o=\nR:version.go\na:0:0:444\nZ:Q1uQwsMPAyZBYYyFMXEh0rJs1cQno=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2018-12-01.8.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1TsTrq7prHHDxTwLIPtzPOncoTW4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-06-01.9.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-06-01.9.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1bi5duEegbNLgf9XREsx0wurdmFs=\nR:application.go\na:0:0:444\nZ:Q1O8vrQ9II02Spu1c/kGxarW+AZrg=\nR:certificate.go\na:0:0:444\nZ:Q1VFP8Y0UE1l3UNBcZm6z79c0ppXo=\nR:client.go\na:0:0:444\nZ:Q1ADDAjxRwbQMQfXGkePAfyE7yJGs=\nR:computenode.go\na:0:0:444\nZ:Q1ZKhCAMtYVqUWUTpqQuJSxVgJQXk=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1Ak6r2rHMwF/b8S+yYrT1+MUv2Ro=\nR:enums.go\na:0:0:444\nZ:Q1Yh++E69cyJjSfn01kW5T1bJwswo=\nR:file.go\na:0:0:444\nZ:Q1Yp2ivYP+AuRjNro+ZEnZanVyRwQ=\nR:job.go\na:0:0:444\nZ:Q1nitI+yAnZR4mR+jHAA7Tt3OGt4s=\nR:jobschedule.go\na:0:0:444\nZ:Q1/ifHnn8E7c2mhC6iQHB+W5D1yOA=\nR:models.go\na:0:0:444\nZ:Q10ppCmA9gZ8ySiG3aSKiVGc1ovxA=\nR:pool.go\na:0:0:444\nZ:Q1Eg5BYEFaF4Y31oac2HPJivrP2Jk=\nR:task.go\na:0:0:444\nZ:Q1pNCGbXzfhzIpvUCRvF7YzfqgdKY=\nR:version.go\na:0:0:444\nZ:Q1wrNr88MYpkRHVLThTf/yCa/PM6Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-06-01.9.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VNuj7lmlLLhwEZAnJkpucPNgTrA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-08-01.10.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-08-01.10.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1Dsds+5B7SwqW4W/cVgZvb5yWYw4=\nR:application.go\na:0:0:444\nZ:Q1J1+pf1UYHr6p1JtYpUEVXAjvWj8=\nR:certificate.go\na:0:0:444\nZ:Q1AlCYBwLe9guZqE5J8c+7k7jjsTE=\nR:client.go\na:0:0:444\nZ:Q1C4IMUz0ev4ZKFNCWKadwG6w3cww=\nR:computenode.go\na:0:0:444\nZ:Q1qS/3PIsRuMBT6kamO8wiRd7KCyE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q16D11Eg/Zq8qb+NXg5Lda8q+XvsY=\nR:enums.go\na:0:0:444\nZ:Q1w7PvhijULoY+4VuwMOJ1hq/+YnE=\nR:file.go\na:0:0:444\nZ:Q1Y/E2Ax0Ym0AZC5/qSt1O0cvSlgM=\nR:job.go\na:0:0:444\nZ:Q1fZ+vDdMmQXEUHAEdZqtfpAK3ouc=\nR:jobschedule.go\na:0:0:444\nZ:Q1YEwYp8doFBw2VU4KRMffdfu/omI=\nR:models.go\na:0:0:444\nZ:Q1AXivai9QNXmFvEdgGEi13t+gUHA=\nR:pool.go\na:0:0:444\nZ:Q18x1VeZc6HcN1dZoJgaRjV4+sZIA=\nR:task.go\na:0:0:444\nZ:Q1pGNtafuwdC02xjwhEQpfcCeO+s8=\nR:version.go\na:0:0:444\nZ:Q1b3avxzUAjfPRMbmxqtltGErsJOM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2019-08-01.10.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WvoKsoLhRFtZBy2j6fmTb4idN7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-03-01.11.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-03-01.11.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1sIdUJmuhOyHEqtX8bgSVJKA8/rQ=\nR:application.go\na:0:0:444\nZ:Q1wi0v1k7zLwkdFAQCiI/64UeREOY=\nR:certificate.go\na:0:0:444\nZ:Q1/l2QldhS3IRUAASyILW4M16KZeQ=\nR:client.go\na:0:0:444\nZ:Q1WGjlzIR5i1wDhnZhwHdWDhhGudQ=\nR:computenode.go\na:0:0:444\nZ:Q1GFFxsFALjym5iMs2BPLB1tPrEU8=\nR:dataplane_meta.json\na:0:0:444\nZ:Q18/YqaqwPAZj1GVrUKtN74hacCJ8=\nR:enums.go\na:0:0:444\nZ:Q1zDNXtsWZYQV90sfgBDFeWV6m+8U=\nR:file.go\na:0:0:444\nZ:Q1uwcTeqCKfMt13POarTk12AoKDLU=\nR:job.go\na:0:0:444\nZ:Q1JkkGKBB8xMe0XT55+IYQ5G22pF4=\nR:jobschedule.go\na:0:0:444\nZ:Q1WnbNcWxzZLssq/9dOSrlV9nca7E=\nR:models.go\na:0:0:444\nZ:Q1OZqHC93CbBkw0Kqto67r08+ABWY=\nR:pool.go\na:0:0:444\nZ:Q1Yk49q8cA5qcra/tGYjV+ey+A3Wg=\nR:task.go\na:0:0:444\nZ:Q1OuvuPQf7sxWIlKwn9QMcH1Hup3E=\nR:version.go\na:0:0:444\nZ:Q1OsXXcuWg5A6SJk9wrKQw0BzQHTA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-03-01.11.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1g4ljvNPvb2ERWh+hx0/oAoAElfA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-09-01.12.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-09-01.12.0/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:account.go\na:0:0:444\nZ:Q1RDZ7XuwCVVDV05/e/CAgjMIty7U=\nR:application.go\na:0:0:444\nZ:Q1YuPb1knSipzMdPUg+XZZaDLB058=\nR:certificate.go\na:0:0:444\nZ:Q1ZoaZuMyI4Do17rIUYiDgIv/oWpQ=\nR:client.go\na:0:0:444\nZ:Q1D5A7fKfmAmQAcmcfWlEZh2ajAQg=\nR:computenode.go\na:0:0:444\nZ:Q1hRrP8BA/O3ewexq4E9oe9+fOIKM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1zEGw7rvMH3xA7k9qN1zHX1GWAus=\nR:enums.go\na:0:0:444\nZ:Q1CW9hAXoUrehP69UB3h5SZUidMZ4=\nR:file.go\na:0:0:444\nZ:Q1H+eBegDLL5A4IHHDBTMKogdE4m0=\nR:job.go\na:0:0:444\nZ:Q18qq2r1RB55kiKSqsy0BOm0+y9+c=\nR:jobschedule.go\na:0:0:444\nZ:Q1fMdWH7MnNJiYQZoM/e3ZGcjsnSQ=\nR:models.go\na:0:0:444\nZ:Q1ez2unkJrg0lo5VeocrKwLDI0ck0=\nR:pool.go\na:0:0:444\nZ:Q1+uqEc4+7sJnUYcI+S6FNpqa/C4Q=\nR:task.go\na:0:0:444\nZ:Q1Z880qGpMkr2AqQqRooDmM7vSSqA=\nR:version.go\na:0:0:444\nZ:Q1jTAnl3QPmeOad2SHmBsMEkxd3Ms=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/2020-09-01.12.0/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1TJMAHTShrwvhW4NFD0dTyAwALDQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2015-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2015-12-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EY11TFSOvjYTZYiZoQCsgt3Ma8g=\nR:account.go\na:0:0:444\nZ:Q14uKMvUQiWS9l5rpbQgGBdD+HBeg=\nR:application.go\na:0:0:444\nZ:Q1iB3/ct6WhCRrwLPMm2ephog8fwE=\nR:applicationpackage.go\na:0:0:444\nZ:Q15utYEVEVbfmC35+JlM11HTsuplE=\nR:client.go\na:0:0:444\nZ:Q1oYyEQr88bMDRXYmV6LcxNyUpHz0=\nR:enums.go\na:0:0:444\nZ:Q1BbLMnt3D5F54DnjheblRgwrMEFA=\nR:location.go\na:0:0:444\nZ:Q13JjXwr2gp1rxn0F8rhBfpLsD/1k=\nR:models.go\na:0:0:444\nZ:Q1fGuGjtfXmRGnNessMMzjIArrMow=\nR:version.go\na:0:0:444\nZ:Q1GHTwo46ZjfDkahj9TjPA61SbqZY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2015-12-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1+vXS56TNZyEbPMUcJ3m/OA6frvA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-01-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1HkIw1VXF7aJe5U5tPS2WKQCijyY=\nR:account.go\na:0:0:444\nZ:Q1x1NFCrLibTcqwxITHYgBRg6mwdI=\nR:application.go\na:0:0:444\nZ:Q1N6ZGJnxl+Lq/BvaVHEszDLWGEDE=\nR:applicationpackage.go\na:0:0:444\nZ:Q13TZym/Yt9ej2EROmu0lrM3K9lGo=\nR:client.go\na:0:0:444\nZ:Q167QD51c/JpEVAs9SjatXxq8mIT0=\nR:enums.go\na:0:0:444\nZ:Q1sX2QXmor5UmOimTVF7C1Zlv5RtI=\nR:location.go\na:0:0:444\nZ:Q1oPaNOyQDza1z8yETBjTEa0RYyG8=\nR:models.go\na:0:0:444\nZ:Q1Llbo44/HJxWnEfDHS+GZTC26Spk=\nR:version.go\na:0:0:444\nZ:Q1sQ0DuON69PQTuoZK5D5yPP8GSVo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-01-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1a9E+2F7tBkLCgLHA3plPoVpWWkU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-05-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xgUtnyrVvgAZVzW6c9GBMXgdT4A=\nR:account.go\na:0:0:444\nZ:Q1Bib8INpExzczwRx3sxlSztTwWQA=\nR:application.go\na:0:0:444\nZ:Q1uLyo3CkV8RGr22rbLUdIYcLkxZI=\nR:applicationpackage.go\na:0:0:444\nZ:Q1PmN/DpOMWXxUtvlgJiZ8ffqBtqM=\nR:client.go\na:0:0:444\nZ:Q17kGkZd4u9z2Et7t21KElAputGAg=\nR:enums.go\na:0:0:444\nZ:Q1fVKIKzbGCj1XBFey+8SLshxK5TU=\nR:location.go\na:0:0:444\nZ:Q1f03UJmO3F9Jp+Vjcvg0kdnMG96E=\nR:models.go\na:0:0:444\nZ:Q1zde3Ue2JLLP4QrnJv2mvhljEBoE=\nR:operations.go\na:0:0:444\nZ:Q1C79RxB1X2mBeqSJvteVfn5D7Ycc=\nR:version.go\na:0:0:444\nZ:Q1PbBqUtqq4hlTDymmw7pItUg90Mg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-05-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Ge8V4tvVeeUPNqQwKdHKc48mxkE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-09-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yXDsMHEpdsw7jPxWPKoV9jl24SA=\nR:account.go\na:0:0:444\nZ:Q1IAxkOjOiwLj84F3adCDqUv/Q+Zc=\nR:application.go\na:0:0:444\nZ:Q1PpjuSF3vSstDfKdf5vL7xk8ml5M=\nR:applicationpackage.go\na:0:0:444\nZ:Q1k3IUMd7Wj9Da2Hxh05sKmikcYf0=\nR:certificate.go\na:0:0:444\nZ:Q1vNaD/lI2bdYBYFYOKjmu0mynk18=\nR:client.go\na:0:0:444\nZ:Q1PP7jUFtoJpyUdEcc3P9vAXbJGIc=\nR:enums.go\na:0:0:444\nZ:Q1jSNPjl+qvaA157xPgyd9RFpGJx0=\nR:location.go\na:0:0:444\nZ:Q17N02ZI2HLQAR0a20ZrzM8kQakQQ=\nR:models.go\na:0:0:444\nZ:Q138A+MGlPW2bX/1uKy61OSVA3vaQ=\nR:operations.go\na:0:0:444\nZ:Q1+A2t0pehktIL1eOAsSot/9n4/NM=\nR:pool.go\na:0:0:444\nZ:Q175l6xYJy962snLMcWqev8QWSsBY=\nR:version.go\na:0:0:444\nZ:Q188wj5Pjw9keQLkDE60Z3FPvjPeI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2017-09-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Qc7P4nPreBn++qfoeEJ4HV8bVog=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2018-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2018-12-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FbYmUVoFIxpLPefoNhPJYt+Xzu8=\nR:account.go\na:0:0:444\nZ:Q1gFpKwrH2LZUg8hdhhkbaDlGfHcE=\nR:application.go\na:0:0:444\nZ:Q1B7DHUUQ/BkeF3p1v7KxVnf24Z3A=\nR:applicationpackage.go\na:0:0:444\nZ:Q1zghalJ8rPqhnF4MzZC+G8XqMr14=\nR:certificate.go\na:0:0:444\nZ:Q1UptSsFdGsxGhICvmP4z+Q32LUAM=\nR:client.go\na:0:0:444\nZ:Q15k8Q6w5sZB5AGgiWQ4MNpq4XfIg=\nR:enums.go\na:0:0:444\nZ:Q1cYZypfsPz9umEMzgrdprnE7ZY/M=\nR:location.go\na:0:0:444\nZ:Q1NMGnM5JSUbBRRyJ8E49mZgTZE2c=\nR:models.go\na:0:0:444\nZ:Q1Jml4lbTJHfr2GFGyJcBS0dty/fU=\nR:operations.go\na:0:0:444\nZ:Q1MMngpBp+Q1tfd6Owsqjumo+/8Qk=\nR:pool.go\na:0:0:444\nZ:Q197HTpNeTBn9jjxG1k49tIOcHhU0=\nR:version.go\na:0:0:444\nZ:Q1dn/br+PMZSWwfCwtyE5aL84JBRc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2018-12-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mMSza0w+tkhej06jnRYFm8WUonE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-04-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FK9hBRevuvB4IsbaLqsnB2JMIYA=\nR:account.go\na:0:0:444\nZ:Q1MlcB1gLALhhk3f2zFiDvk06eGbs=\nR:application.go\na:0:0:444\nZ:Q1nlJ9e1H0YZOY+ID4xeBt+wGPTl4=\nR:applicationpackage.go\na:0:0:444\nZ:Q1ThnA+8C4KUJCOEax4cZUnx+st08=\nR:certificate.go\na:0:0:444\nZ:Q1aVvsGPhmJVwuYSlq/clpp4rYQBE=\nR:client.go\na:0:0:444\nZ:Q1q7rKePFWSLCoMKu6eAPyPzzCPjo=\nR:enums.go\na:0:0:444\nZ:Q1cYZypfsPz9umEMzgrdprnE7ZY/M=\nR:location.go\na:0:0:444\nZ:Q1anZmjfAcpPbDKGLyisTbOIt+jyM=\nR:models.go\na:0:0:444\nZ:Q1OKToVhGk807xFi2Sit+z9OyCGyY=\nR:operations.go\na:0:0:444\nZ:Q1ow/a62QuTMO3zP4HMCTafLQAmRk=\nR:pool.go\na:0:0:444\nZ:Q1LwHDbz8V9GYn85qSCzDzF4aEB7M=\nR:version.go\na:0:0:444\nZ:Q1kegZDR6zLTO7r+PLFol5oood0Yo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-04-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1azNDqoFzmJ8fqisddLG7F9Ypgkc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-08-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kYehV2b+mSZMBwA55iFkJliPQE4=\nR:account.go\na:0:0:444\nZ:Q1+4H/iE/ucb3blpAd/0PhL1dVdFQ=\nR:application.go\na:0:0:444\nZ:Q1IeoxpfnLgWSegjUNjMK+T0TEEyA=\nR:applicationpackage.go\na:0:0:444\nZ:Q1Orvkvf+M4RNfXFLdkppz2r1TVcA=\nR:certificate.go\na:0:0:444\nZ:Q1AS0jul5w37Be2qJxELwsq8/VD6M=\nR:client.go\na:0:0:444\nZ:Q11yiMYb9BJBMgZmWAdJzfl/WpZ88=\nR:enums.go\na:0:0:444\nZ:Q10/V/p9eEEIdkclvMOqugAOApqww=\nR:location.go\na:0:0:444\nZ:Q1CrdsjiK/XMN8l1Wu8D2720k+bqw=\nR:models.go\na:0:0:444\nZ:Q1hKY3FSgA2nPuxyH4zAcBNEWE/gw=\nR:operations.go\na:0:0:444\nZ:Q1j8EIPBa4MOEkfrjPk3PGPH2H9BI=\nR:pool.go\na:0:0:444\nZ:Q1HO0zhSOw9Fwm6eiAI5CoD29y76o=\nR:version.go\na:0:0:444\nZ:Q18hQRFS7Nel4ZOOwhCoJC86tSfYI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2019-08-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12tc6Ci4PbBVkF6rkCd/epU4M/oQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-03-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aqMy4P2NdPM5An8Vi7A9QYjY5p0=\nR:account.go\na:0:0:444\nZ:Q1ulZiYLJuB7QSf9l7S/ujYQkskbg=\nR:application.go\na:0:0:444\nZ:Q1Ls/8jzmDJsiSQqkIxA39p3C0YIA=\nR:applicationpackage.go\na:0:0:444\nZ:Q1wUTdKtWzCRRNo5rJw8M1xoIdOGs=\nR:certificate.go\na:0:0:444\nZ:Q1BOMG7Rty8MXCIZHvjPcwTmYc5rY=\nR:client.go\na:0:0:444\nZ:Q1mJRk7nzaXq1/ptkW2jIC6TGjSvs=\nR:enums.go\na:0:0:444\nZ:Q1v7s/2Z86+r2B6EZEQHTV5H4NjpM=\nR:location.go\na:0:0:444\nZ:Q1ztUdll+JIybxeSdWM8nzoC8v9NQ=\nR:models.go\na:0:0:444\nZ:Q1ccn6u0q6fo0xqTnTPE6clgbMMpc=\nR:operations.go\na:0:0:444\nZ:Q1khso2DBj8CdHXtlMGZiZqUEYzlU=\nR:pool.go\na:0:0:444\nZ:Q1AS82umjpi249rrBHirbJfQAG7/Q=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1TiuQ8338NLWFcO3lOs9OK3Pv+c8=\nR:privatelinkresource.go\na:0:0:444\nZ:Q1DgLMOqcKmTFv71dU9ZGFbgZqKUY=\nR:version.go\na:0:0:444\nZ:Q1dB25YcUceU2Uhqqw5/OdaGoGlVM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-03-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1TAM1vPRRmk7hUGI1xEkXmIu400w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-05-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TudMKJ+Ksi9L81Tr/Ntq2uFlO98=\nR:account.go\na:0:0:444\nZ:Q1W4K+ellX4YDlr1BIaT+n6gV2gTE=\nR:application.go\na:0:0:444\nZ:Q1ir9uDhGAHSZoGEmClSp/3pkgNVE=\nR:applicationpackage.go\na:0:0:444\nZ:Q18UGALvjgVOwMMC9Fq/B9vomEAVk=\nR:certificate.go\na:0:0:444\nZ:Q1oH7RXP51bSI3zMMQX3ZOK3db128=\nR:client.go\na:0:0:444\nZ:Q1u1LJFWr2EvIwch7POeTQ5xXqCxU=\nR:enums.go\na:0:0:444\nZ:Q1Lg67bKXxrNmqT/6LOSUYD2Hmi70=\nR:location.go\na:0:0:444\nZ:Q1P5H6Fyb/tfJNKjE6CTQjP/wCfVo=\nR:models.go\na:0:0:444\nZ:Q19i8Wq+rVDC8NAy+fgJ07uTUQgZg=\nR:operations.go\na:0:0:444\nZ:Q1Gz//pPEyGEPmY2ZNuo58q+q3ni0=\nR:pool.go\na:0:0:444\nZ:Q1BODSPZguIYUWtMcyY3NaD0z9J2w=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1tXJ10y8/oUSil2oVe2WH+1O6jpw=\nR:privatelinkresource.go\na:0:0:444\nZ:Q1uAm98DV+fTTNdaRjpciQnc9XcEA=\nR:version.go\na:0:0:444\nZ:Q1SFvuW4a3ZX+You4cBCAPihNN5VU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-05-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sqhIru2XsmosQIp2MXhthLRQew4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-09-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+wKj2SveVBehooHgHFeaxD2oC90=\nR:account.go\na:0:0:444\nZ:Q1urSNDYHbHO+E1u7n8h75rf4oq/Y=\nR:application.go\na:0:0:444\nZ:Q16WYe1eN/GHksUFEP8edvAzJxmOg=\nR:applicationpackage.go\na:0:0:444\nZ:Q1DiHO1xX91aknwIZ2QutZXMrnQgM=\nR:certificate.go\na:0:0:444\nZ:Q10xrKU1yYxhmoMg35KclPtQmhYQI=\nR:client.go\na:0:0:444\nZ:Q16TQgxPehqvjx7emQzBVB0FqaU1k=\nR:enums.go\na:0:0:444\nZ:Q1UjsG3Khhk8orHC928usVeg924GQ=\nR:location.go\na:0:0:444\nZ:Q1GWvCgK//bNe7fkGfcIHXeAJ7NU8=\nR:models.go\na:0:0:444\nZ:Q18hRQdvN7esuw7YjVUrir/imZrAY=\nR:operations.go\na:0:0:444\nZ:Q1xvPxT3I307lw+d6xB55tZCbWM2s=\nR:pool.go\na:0:0:444\nZ:Q1es4eC9McgrPLzjzEH7FWyBMUlzI=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1N8Tm5qGIfQTf56tlXvqg6z1jM4Y=\nR:privatelinkresource.go\na:0:0:444\nZ:Q11UxRmjnQa3nKsWh4Bz5f9eConY8=\nR:version.go\na:0:0:444\nZ:Q1XxwHPuvkx1+qO3c5ibvxioannps=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2020-09-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nGiBWsb0yfl3vd7Oy8wi2po/wf4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2021-06-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WzS9FvGvpXOpQDoW3HVpAJ1yeY0=\nR:account.go\na:0:0:444\nZ:Q1zPoXpQFnjb820kv+WUYDa/Wzaio=\nR:application.go\na:0:0:444\nZ:Q1qZp16y21bKi34xCsNDaYS4QmrVg=\nR:applicationpackage.go\na:0:0:444\nZ:Q14T0WdDBmxs1XRn1ki3zgt3xBt5k=\nR:certificate.go\na:0:0:444\nZ:Q1qDC7hbF1MjSUdNhejTEXykaavXE=\nR:client.go\na:0:0:444\nZ:Q1EsdvkVcnNwAPvXBMwkruxfrT/J0=\nR:enums.go\na:0:0:444\nZ:Q1iii/xl86vLMC7kKFGt8bv8S9kqU=\nR:location.go\na:0:0:444\nZ:Q1ckYvZBgh8pOblJveCXkun4aP8aw=\nR:models.go\na:0:0:444\nZ:Q1I0OpssjsCA8sCjB5S6f8kD/2faI=\nR:operations.go\na:0:0:444\nZ:Q1rhYRYJRo8YWBm2nqdRnZgdBqyvc=\nR:pool.go\na:0:0:444\nZ:Q1/YuTxekD3JS/PTrtJa1oMgn0T2o=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1CjbudBkfd25shwbJyO/2NsHcYEE=\nR:privatelinkresource.go\na:0:0:444\nZ:Q1Hawu0bTyF1O2Vn7pDlxld5JE9+s=\nR:version.go\na:0:0:444\nZ:Q1jzTxyAVwZgNDDVhCLU5h0xiTQpc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2021-06-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1l7gJtM/3hxYDSV5Z243gWBc3BkU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2022-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2022-01-01/batch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TUZ7nPxMzfPbgIlRnw79lP0wwLs=\nR:account.go\na:0:0:444\nZ:Q19cb8pHaI8+3TC2SBwECQ447Iirw=\nR:application.go\na:0:0:444\nZ:Q1oHGolVnxsZmN93P21ly+rRrR/ug=\nR:applicationpackage.go\na:0:0:444\nZ:Q15WUbCQNCoYCXs9ol9zB7O2iqVZI=\nR:certificate.go\na:0:0:444\nZ:Q1zrjuBOK9D54VZeV+dxoX865+V4s=\nR:client.go\na:0:0:444\nZ:Q1RuQsgU1vQEeGBqZKx424MDuvuHg=\nR:enums.go\na:0:0:444\nZ:Q1tL4QZwM9msFntJi61t/5aJawS8U=\nR:location.go\na:0:0:444\nZ:Q1C3EHhAU5Ztf+J0eQw+69ipAer3M=\nR:models.go\na:0:0:444\nZ:Q1wMhYpdgWjgctnaKYcXWrW+5euT0=\nR:operations.go\na:0:0:444\nZ:Q1wXLJnJsb8Vkd9WQ5I/tv7t50rPY=\nR:pool.go\na:0:0:444\nZ:Q1Q7MZ7x2a/MSZqai4yRq8umKIg/4=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1ke6XgsME1yvr4+e9CZhpv7m0PyE=\nR:privatelinkresource.go\na:0:0:444\nZ:Q1GTZufiBFiCDfU9HQ3GkVNMigcFw=\nR:version.go\na:0:0:444\nZ:Q1w78z9gm6RSZ7BUl7AqqXP1GHQls=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batch/mgmt/2022-01-01/batch/batchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1hwqBDNlOlrxubOPnf8yAvRexmiY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-03-01/batchai\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OOIQPUnVr+tNiVxcsfNqIo/Hs7Q=\nR:client.go\na:0:0:444\nZ:Q1Gn7T+9Ae+j4f1we4LfMsQHpZkCo=\nR:clusters.go\na:0:0:444\nZ:Q1kNH17XC+d8ODLU+IFE8mY7AlMUY=\nR:enums.go\na:0:0:444\nZ:Q1SUW9CMC3eXkHOYDq3bHLDOPajrY=\nR:fileservers.go\na:0:0:444\nZ:Q1npgGIJfaqNeCv9kQ2hXgiqvCQWs=\nR:jobs.go\na:0:0:444\nZ:Q1AG3YgGGAGvyAu7JcwTd58L3L+ds=\nR:models.go\na:0:0:444\nZ:Q1q87a4wFLKtt49neLctgZKpMSEjU=\nR:operations.go\na:0:0:444\nZ:Q1s8yHyvCF0CzWu0eyRd4TN67PD7E=\nR:usage.go\na:0:0:444\nZ:Q1Mwz8RsTmq9vluVXLtHaSI1BRBL8=\nR:version.go\na:0:0:444\nZ:Q1hDgVbvR0javeNjKnRkQ6K2kgBHQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-03-01/batchai/batchaiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yN4zVZmFx243fRHJjX8sRtw1Rkw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-05-01/batchai\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Yq5tRPV84A+KxxVJZ8eBR0mGvX8=\nR:client.go\na:0:0:444\nZ:Q1K7gCacnBHtRuJ0u6bEeFqfUn5TQ=\nR:clusters.go\na:0:0:444\nZ:Q1Ttq8DXP7rwS+N+e7wEzHEl+LRUE=\nR:enums.go\na:0:0:444\nZ:Q1usqLaa80LKeZpiEyZBuDQGOn1cA=\nR:experiments.go\na:0:0:444\nZ:Q1m/nwHOHiYVaIqZHO6H1Uzp5MIBk=\nR:fileservers.go\na:0:0:444\nZ:Q1zUSRflJag0AlflVXarJYi4n+dUI=\nR:jobs.go\na:0:0:444\nZ:Q15TKsnUzDDLTqhdcThvxeJH4RBFY=\nR:models.go\na:0:0:444\nZ:Q1IWEQadrPBQkrSna1Vf0QnozRxVg=\nR:operations.go\na:0:0:444\nZ:Q1Aha1ZDdR0mdk8oK64SmgzCIDXf8=\nR:usages.go\na:0:0:444\nZ:Q1oHL2EE5KiwjECKhrCWU0ogH35cw=\nR:version.go\na:0:0:444\nZ:Q1VIyWmuAiXooj2BW1OTDFSza+LWs=\nR:workspaces.go\na:0:0:444\nZ:Q1+wr9Cx5zq4EfBG55HiPfQGG+VF8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/batchai/mgmt/2018-05-01/batchai/batchaiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BtvDegYZEyPH7mcoBwXwImTAAFA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/botservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/botservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/botservice/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/botservice/mgmt/2021-03-01/botservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19PlRd6ejoJZCSjLIDL1bHgReFx0=\nR:botconnection.go\na:0:0:444\nZ:Q11YumgiJC+tlri/r9+Sld65D7JXo=\nR:bots.go\na:0:0:444\nZ:Q1LawkgF3oVyL2oMA+OvaPSKcvow8=\nR:channels.go\na:0:0:444\nZ:Q1rZKDlfoDZ5h5TSpFThq9KZdVQQQ=\nR:client.go\na:0:0:444\nZ:Q149yoe/3xwXZTogho2DKQBtpmnfU=\nR:directline.go\na:0:0:444\nZ:Q10OZ0jbGRWHXQFYxO5I+G0CHOv9w=\nR:enums.go\na:0:0:444\nZ:Q1fI9cBk7KdOO2T5guX66cKOJdjZ4=\nR:hostsettings.go\na:0:0:444\nZ:Q1ZNLG+76rQF0NvkF9Gs7qhT/TRRg=\nR:models.go\na:0:0:444\nZ:Q1JB4ortu2x2l474zZh4vsch0RWMQ=\nR:operations.go\na:0:0:444\nZ:Q110HHR3MslctQrhqdI//RaX5n11o=\nR:version.go\na:0:0:444\nZ:Q1jr40feVdjky0G6Q8ZE4+BYOld+E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/botservice/mgmt/2021-03-01/botservice/botserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JL7nlVBxLR1EX6nrP0fbabgCP6c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2015-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2015-06-01/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1L8Cm5fgEoOT6b3kWKSfhT4m+uGM=\nR:client.go\na:0:0:444\nZ:Q1GwBu0F0CO3EyQtc7gVyQRALc1sQ=\nR:customdomains.go\na:0:0:444\nZ:Q1A1xSRIkOU8Ui8UemmUtF0uTrAbI=\nR:endpoints.go\na:0:0:444\nZ:Q1PpeXRPqtVHLaxb17mtpaKer0hWc=\nR:enums.go\na:0:0:444\nZ:Q1eJEqku5lcdGEafjXKzcf5JXDOSM=\nR:models.go\na:0:0:444\nZ:Q1aAAjy1rs3xXVjjZCNPeXe8X4164=\nR:nameavailability.go\na:0:0:444\nZ:Q1b/1gikqjkcjuyChUxgc20kpYPIU=\nR:operations.go\na:0:0:444\nZ:Q1syZZCKIqGi3narbqarROrJs5ZeA=\nR:origins.go\na:0:0:444\nZ:Q10WZ0I3HaZb0FBAiDJZRbgJF0Z1c=\nR:profiles.go\na:0:0:444\nZ:Q1S85Lm9JxD+ray6AJAvCwcsEWtlU=\nR:version.go\na:0:0:444\nZ:Q1egulT5iYAyv5LEpZ0Y2Z+26QJb0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2015-06-01/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ULvTg/WPwTM2tI+IS4JVN7TwhIU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-04-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-04-02/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yfooXH3Ox1eFJywZnOdAhECGUZs=\nR:client.go\na:0:0:444\nZ:Q1DCPU7SRfn2VQQHLiX+A9P2GVzJc=\nR:customdomains.go\na:0:0:444\nZ:Q12N4RtLZETIcZLulsOimFXDuy+PI=\nR:endpoints.go\na:0:0:444\nZ:Q1P2jnnC6F+OmkTB+/pr27QCVVv5U=\nR:enums.go\na:0:0:444\nZ:Q1FFdxnuR+3fZHbPsZGR872bl7jHY=\nR:models.go\na:0:0:444\nZ:Q1rFl+fjOXzIfjBfmbKbqbHUBNpsA=\nR:nameavailability.go\na:0:0:444\nZ:Q1Ka9nv4G8xGuvR5ndcA6NKWg/OKw=\nR:operations.go\na:0:0:444\nZ:Q1uYHzFHW+2g5thUAJw3hBEnyggVg=\nR:origins.go\na:0:0:444\nZ:Q1SkkMRoM7dUF/LgYIEBPR6M+VGEg=\nR:profiles.go\na:0:0:444\nZ:Q1rjWCv0YyFqSkzU25mUYWNQ+OLMY=\nR:version.go\na:0:0:444\nZ:Q1T8rkDvyK3hUWGYKGPcb+jDOrrhI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-04-02/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DYPtEU+SfUZwPYWaDCtqi+wp9UU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-10-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-10-02/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nf0ae8yBbFIWiezq+/rO2k9BRRE=\nR:client.go\na:0:0:444\nZ:Q132gJzf1MUL/8rPV9B6qxjZHIJC4=\nR:customdomains.go\na:0:0:444\nZ:Q1bs1jK7D0KMT0Gej84jgazm9uxsQ=\nR:edgenodes.go\na:0:0:444\nZ:Q1TfTY9N9Qjv2fhfpiJ4AHODBgRQ4=\nR:endpoints.go\na:0:0:444\nZ:Q10U1LSq4897QGunWfMcOzfkAH2FI=\nR:enums.go\na:0:0:444\nZ:Q1cp2BpOJnLZz+aaLp9Vz8hE1X15Y=\nR:models.go\na:0:0:444\nZ:Q15nZrSpceAgjSQ8anrKNVYM4kq/Y=\nR:origins.go\na:0:0:444\nZ:Q1ilGm0YWbyeeofpcx+YVLyeywU+U=\nR:profiles.go\na:0:0:444\nZ:Q16hyKUJtlVsHx/Yf6VyEBCrK+6FE=\nR:version.go\na:0:0:444\nZ:Q1kFia1S6IFJwpm1gqVX7aX9KW7ks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2016-10-02/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1v0rE/ZPsyg0XpGYzNsbHzpiKwLQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-04-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-04-02/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1j8lkLuSTKZ7Aw2ShV9XKUUto6nU=\nR:client.go\na:0:0:444\nZ:Q121d7dOkVfE35gdSgvzJpwb8eFto=\nR:customdomains.go\na:0:0:444\nZ:Q1jkAQYGc7nVmWq8dYOv8r/VyIWQI=\nR:edgenodes.go\na:0:0:444\nZ:Q1qzBbcGypKBwln1G5QiTADdO5EaM=\nR:endpoints.go\na:0:0:444\nZ:Q1jrI3xI1KsRarf+tWbeR6IrnaniM=\nR:enums.go\na:0:0:444\nZ:Q1QaRmmu3mnE0SqNb4KX2/XigULeo=\nR:models.go\na:0:0:444\nZ:Q1QuN2Sf9IJ48dMvtTzkvTWkajVkM=\nR:operations.go\na:0:0:444\nZ:Q1tOXUBfS9PqaobUqTlS4oaqxhrRg=\nR:origins.go\na:0:0:444\nZ:Q1Mzr1Q7Vu1pBO7R//TauUDJHAHNI=\nR:profiles.go\na:0:0:444\nZ:Q1+03ypDzEmtatoLpUXB4IBppx/bw=\nR:resourceusage.go\na:0:0:444\nZ:Q1Vk31qwtvbKFvffSGpfk1tlIsH+w=\nR:version.go\na:0:0:444\nZ:Q1b9ZyYwsRppvaqA6EABuv8jQngqo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-04-02/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DAbIsFogJLhrUqfKNmQpP2vPX04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-10-12\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-10-12/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1cQynJ4lnYyyAJFnL3MIv7lTOTUY=\nR:client.go\na:0:0:444\nZ:Q1rVOPdOPxgU3jTrsDeLLoWEBGuuw=\nR:customdomains.go\na:0:0:444\nZ:Q1is1pRq+uhlGNnEi+3vfzk5pWJMk=\nR:edgenodes.go\na:0:0:444\nZ:Q1tyWdMSKvRmDIg3iYYgHL58/7qBU=\nR:endpoints.go\na:0:0:444\nZ:Q1KTEpzGX5JR7WUeEr7ggKji/cVlc=\nR:enums.go\na:0:0:444\nZ:Q1qecx86aIiofLJdUl2mPC/+d8GZA=\nR:models.go\na:0:0:444\nZ:Q1M4b1J3AEl8rWrxODjc8khjItMdw=\nR:operations.go\na:0:0:444\nZ:Q14nVLlVkeA/BfHii+13UH1fox4l0=\nR:origins.go\na:0:0:444\nZ:Q1Dj50rLsSpijyNXhzhjwwqRkoQ5c=\nR:profiles.go\na:0:0:444\nZ:Q1T+ghvs868xnPyccbfplM3q4M12c=\nR:resourceusage.go\na:0:0:444\nZ:Q1VxO0NtKvZnEUSdDmjYL2UTgpqdU=\nR:version.go\na:0:0:444\nZ:Q1UmF6jD6nLrjrOAgVJILyYhzU/Ak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2017-10-12/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VlrxlHOqbAn6CT+3XD1NjmVUY+8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-04-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-04-15/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xHSaTGRSYJNgDhA/P7R2x+7k6fs=\nR:client.go\na:0:0:444\nZ:Q1SUvOFdAVLpR5F6pNI3FYouXesk4=\nR:customdomains.go\na:0:0:444\nZ:Q1bLX7TXYBFlrGMJzvgztSz6PMifY=\nR:edgenodes.go\na:0:0:444\nZ:Q1HbDEIOnEa5mN/BoSDUI5bFTIBVE=\nR:endpoints.go\na:0:0:444\nZ:Q1hJEJ7QcMm7lYvHWS+wY71zbsrtw=\nR:enums.go\na:0:0:444\nZ:Q18L0cJmrAZuO9nR+UJJmo5TwLJxs=\nR:models.go\na:0:0:444\nZ:Q10MRS5bX2DNlKBlDA3aEYI2jfwf8=\nR:operations.go\na:0:0:444\nZ:Q1KjYmBqT/TmK5Klh3HmCFIRrILdU=\nR:origins.go\na:0:0:444\nZ:Q1w08JhW5XDZ9hb1SZ1pbXWH14B7M=\nR:profiles.go\na:0:0:444\nZ:Q1ecJCuBBjjIRncaa6M64gyZO2rxc=\nR:resourceusage.go\na:0:0:444\nZ:Q15H+yGeJaduzIK4nss8zCeAp9BlI=\nR:version.go\na:0:0:444\nZ:Q16WdA9fzDZdMEYZXul82sLYJf1VU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-04-15/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z5Omjw974OsDC3Hms28q5pyPmzg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-06-15/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1F/l0LLoi0Pv+xavsRC9vht1r4ew=\nR:client.go\na:0:0:444\nZ:Q1Glryf05GvNasPktynnMJOZMRuec=\nR:customdomains.go\na:0:0:444\nZ:Q1QvPBU+Z+4LnB2gijTCaiEJQqRsk=\nR:edgenodes.go\na:0:0:444\nZ:Q1+gYl5bVQ6NHQj4T0zLKwkw/1NQY=\nR:endpoints.go\na:0:0:444\nZ:Q1l1AQuFe8uoflH57TrGviMkXfyKE=\nR:enums.go\na:0:0:444\nZ:Q1xSiBqe+qFuhy/d91tKp8Sk65Lgg=\nR:managedrulesets.go\na:0:0:444\nZ:Q1+tCYMQO6OMxtlE8Ge5vSdOAr7fw=\nR:models.go\na:0:0:444\nZ:Q19k7iVZjWStguO5VgcH/uBdVunME=\nR:operations.go\na:0:0:444\nZ:Q1SrjX8MGVLEGPQhBvyMhpoovu5ko=\nR:origins.go\na:0:0:444\nZ:Q1505ct2wLdgDX3Csd4nOi4EAO7e8=\nR:policies.go\na:0:0:444\nZ:Q1w+XsCUMhoYVzlf+tiiDVhyFzeQo=\nR:profiles.go\na:0:0:444\nZ:Q1LMflsBmFBvIPwAszd+BRCVZ3PI0=\nR:resourceusage.go\na:0:0:444\nZ:Q1WFHwE9ccZJc7AfsW0JLI7tO689c=\nR:version.go\na:0:0:444\nZ:Q1vFyNtTudU7x5JaCIQjZLUhu88EE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2019-06-15/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZsKSfE8c70Smc26ya/iqYtY9SXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-04-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-04-15/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zIl9HdGvo8kVOGVm2q7IR0GNFaw=\nR:client.go\na:0:0:444\nZ:Q1o9WNL2c1If3ayZE/7Y4rPjsVxls=\nR:customdomains.go\na:0:0:444\nZ:Q10T9NV3edhQnwjnWWfKVKzAHgH0M=\nR:edgenodes.go\na:0:0:444\nZ:Q1kq36XLcdDI76VI/FtKBk6qSJwvQ=\nR:endpoints.go\na:0:0:444\nZ:Q1Rx2k0AF/+q92lzpp4Ei2lxxgvZ4=\nR:enums.go\na:0:0:444\nZ:Q18Tu8SoJgM/YqyOs7r8k55hhZq4Y=\nR:managedrulesets.go\na:0:0:444\nZ:Q1TuY1xNorh1WvRhnybvK9GsaE2JM=\nR:models.go\na:0:0:444\nZ:Q1J41ebXJUT2QkKtTA8y01WTXdN2I=\nR:operations.go\na:0:0:444\nZ:Q1DxO19spgjdqGBM70dmzwpY8QImU=\nR:origingroups.go\na:0:0:444\nZ:Q1URfEkPavg8JblvspjSlvuUUS3jM=\nR:origins.go\na:0:0:444\nZ:Q1BXz9pYWD34ejcVWHQhqYS+CwMCk=\nR:policies.go\na:0:0:444\nZ:Q1lFDxzL6PwwaVPU26xXIrZVPfL1c=\nR:profiles.go\na:0:0:444\nZ:Q1rJaJ2tRwmGfP5q9xEdFkyy5q070=\nR:resourceusage.go\na:0:0:444\nZ:Q1c1aaD84HJIj/JaHXvZV+F2zQrn8=\nR:version.go\na:0:0:444\nZ:Q1CY0nDVTvONLw1gtyMlOrZcqIfLg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-04-15/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dPabCKdifoM4s/55eTQIPBl3CQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-09-01/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1Tcf+0BcUYwMuueH0jwi4q5B/6jU=\nR:_meta.json\na:0:0:444\nZ:Q1jCAECuyUcip/gobYSVFys09r+6k=\nR:afdcustomdomains.go\na:0:0:444\nZ:Q1j0f3KbDAuwZ3lk+uXCF1BxFDrn4=\nR:afdendpoints.go\na:0:0:444\nZ:Q1O+gaVHysjb/fm2GaBNnzHBljJxE=\nR:afdorigingroups.go\na:0:0:444\nZ:Q1Fg1Ymi2s10ksn0h9GfeP6TQPUCA=\nR:afdorigins.go\na:0:0:444\nZ:Q1/Z3WiCpI9gUi+zD3xW+BhkoE4mg=\nR:afdprofiles.go\na:0:0:444\nZ:Q14Ix2Zk4YS4vXPTasb4XhZJcHoMo=\nR:client.go\na:0:0:444\nZ:Q1juNPcukbz3EBTOrbJtFkQvndkxk=\nR:customdomains.go\na:0:0:444\nZ:Q1js8Q6MYbWuhq1Dctknvn6tCGctg=\nR:edgenodes.go\na:0:0:444\nZ:Q1OZM86v97i3+w2Gw7Nm3/2skoNKg=\nR:endpoints.go\na:0:0:444\nZ:Q1YP0QSBwrpPnub0+Wrq8coTMWudo=\nR:enums.go\na:0:0:444\nZ:Q1euCiyd6kfqhS3oSqYtXNU5uPKHg=\nR:loganalytics.go\na:0:0:444\nZ:Q1ixJbEym9HI5AyvBsNqWMAvKmbX8=\nR:managedrulesets.go\na:0:0:444\nZ:Q1PtXMQ+sYORPfqW74/35/rgkIIho=\nR:models.go\na:0:0:444\nZ:Q1ly1kS40lMVjnOGGWCp2qIYzrldI=\nR:operations.go\na:0:0:444\nZ:Q13ICGVfc04Pr3ZAAEqncsFr3muHg=\nR:origingroups.go\na:0:0:444\nZ:Q1YwpM4NBdoeXuz5l7hCljbyCOHg4=\nR:origins.go\na:0:0:444\nZ:Q1ncqKSGxG+Dj0QZsvQk9AHmUMXgE=\nR:policies.go\na:0:0:444\nZ:Q1p0FdJg1BJRBsxHDCpy4lBAq3fW4=\nR:profiles.go\na:0:0:444\nZ:Q1U8JwhYwsPG631pf128d8v3RXWGs=\nR:resourceusage.go\na:0:0:444\nZ:Q1H1k1+xpmxTkWcpvV3z24XiqrRt8=\nR:routes.go\na:0:0:444\nZ:Q1QtlMrB0WaM5wtMkFlq2dyJZLEiU=\nR:rules.go\na:0:0:444\nZ:Q1mk7hipK3NRG1izGF3BNT4E2I3IQ=\nR:rulesets.go\na:0:0:444\nZ:Q1vfso4dz3+2ywGNN3CcZq6eA7II8=\nR:secrets.go\na:0:0:444\nZ:Q1e8xatWPdk+UM/gAyly5TcMTnM4c=\nR:securitypolicies.go\na:0:0:444\nZ:Q1qByT2ySXdqeTjqIn+dRiaA/17D8=\nR:validate.go\na:0:0:444\nZ:Q1ChkM7W6ktCJLqfsAQIPxrpEjazE=\nR:version.go\na:0:0:444\nZ:Q1yRgri0Q2vEzx24KF6iR9yKituvQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2020-09-01/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yPKjZtRQYiuSlL+rW6KENozZfM0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2021-06-01/cdn\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19XVrv5DZRWZF7xea0f8iPYR2jKs=\nR:afdcustomdomains.go\na:0:0:444\nZ:Q1fz3bhu0jBV8o6tbXWROn58V7JE4=\nR:afdendpoints.go\na:0:0:444\nZ:Q1TXeelJJ4GA0ZaWbqdGmzHL293OY=\nR:afdorigingroups.go\na:0:0:444\nZ:Q1UqHIb4D624Gofr1zk/HLno4fKGI=\nR:afdorigins.go\na:0:0:444\nZ:Q12kNfAN4wi6ykA7Ucxw8W3Gqz/bI=\nR:afdprofiles.go\na:0:0:444\nZ:Q1nvobOwKK8D3vx92Krw2C6jXtiyU=\nR:client.go\na:0:0:444\nZ:Q1vIHNt86eayozuZ2qbsJaGblNYeQ=\nR:customdomains.go\na:0:0:444\nZ:Q1RVhPEhQKqleoiBsr4wh/2TP4fJk=\nR:edgenodes.go\na:0:0:444\nZ:Q1rkCv8B+P9OhFv+1WCT4rxGzDuhI=\nR:endpoints.go\na:0:0:444\nZ:Q1J6fDoF4hXfl4J+yWkX1Ois+yH5M=\nR:enums.go\na:0:0:444\nZ:Q1wCY/tu66J5xSHqSg20eAHbdok3k=\nR:loganalytics.go\na:0:0:444\nZ:Q1b/6MnDhWgMvpjWpc9kUehWBSkSI=\nR:managedrulesets.go\na:0:0:444\nZ:Q1nMGfY6KQoilAAzHJkCQ2zAmWAd8=\nR:models.go\na:0:0:444\nZ:Q14/ANit4kccFcACWjKht1O9/UHew=\nR:operations.go\na:0:0:444\nZ:Q1OmM+0rxv5v9XMYVDz3anGsebhgM=\nR:origingroups.go\na:0:0:444\nZ:Q1mYD4TmgeXXqsh3yoi8F5hf8+lyA=\nR:origins.go\na:0:0:444\nZ:Q1Oaq2w01OXfOig9Rj4mauW4gSuug=\nR:policies.go\na:0:0:444\nZ:Q1+WQ+bVeIAe+msz86Fz1TJc9+mis=\nR:profiles.go\na:0:0:444\nZ:Q1CSKH2x1+EzOOhhd/e1zm6faTTiA=\nR:resourceusage.go\na:0:0:444\nZ:Q1aDNrK33KWodhGhtZz4PqCiI3AW8=\nR:routes.go\na:0:0:444\nZ:Q11rAhOjOBz3xiygyQUZkOW2HCmk8=\nR:rules.go\na:0:0:444\nZ:Q1AsF3mWrLTfkcnNfUIE19FD04zXg=\nR:rulesets.go\na:0:0:444\nZ:Q1h8gmvSmxbzzKYKqdu3MkS+aqn2A=\nR:secrets.go\na:0:0:444\nZ:Q1EGLR6/FzLmNj2Dhdo8PrkhIEYos=\nR:securitypolicies.go\na:0:0:444\nZ:Q1k16c5RThB89SMhE1yp78T8Na65k=\nR:validate.go\na:0:0:444\nZ:Q1lgmcWKHKfrEpuJ85Qyj5RwIz4Z0=\nR:version.go\na:0:0:444\nZ:Q1mzk+U5M8FxYXANKkzpAiM3Uwiuk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cdn/mgmt/2021-06-01/cdn/cdnapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1X+BW4mWoEenoXux6alCmPj3OJLw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/changeanalysis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/changeanalysis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/changeanalysis/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/changeanalysis/mgmt/2021-04-01/changeanalysis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1r0bSEsxGll5sY8+asSEhdX96/Jo=\nR:changes.go\na:0:0:444\nZ:Q1Hwgdd+S3IwSDX3r4qGo+tL65Tn0=\nR:client.go\na:0:0:444\nZ:Q17oJoWKumHfT6NjD9Kmp/6q/ejbI=\nR:enums.go\na:0:0:444\nZ:Q16NxisXL0RsdTn7jwf/plcXODjBo=\nR:models.go\na:0:0:444\nZ:Q1n6jtyDr9s/eysArwqR4lDyE6+9M=\nR:operations.go\na:0:0:444\nZ:Q14aDaxWrcxRQtT/i5Y5gzNOIsma0=\nR:resourcechanges.go\na:0:0:444\nZ:Q1dGFQhpa1/SfrcII2piz8tQKKL4I=\nR:version.go\na:0:0:444\nZ:Q1ZRdeaQP17P2QoDxZv8aeUG5ICnY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/changeanalysis/mgmt/2021-04-01/changeanalysis/changeanalysisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pVP+7oI0aBKp4vSDF2Hpe3pW+dw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1iznj/P9AsC8yJvwb48pmZl4fxIE=\nR:client.go\na:0:0:444\nZ:Q1j8dnNBSs4w0L/6mN8dWbSXBRFrs=\nR:errors.go\na:0:0:444\nZ:Q1G0EA/VU4MCyRW64paNTnaS9q2Ck=\nR:errors_test.go\na:0:0:444\nZ:Q1re5oAg5mQCeeeDvU0aN3/uQPMWY=\nR:http.go\na:0:0:444\nZ:Q1Paewm6DfttOElZszsM9VBv3QJ90=\nR:operations.go\na:0:0:444\nZ:Q1YDc73xlNuibyXWB40sAS4HbcPdU=\nR:publishSettings.go\na:0:0:444\nZ:Q1J6dszWGH3AmAkcwECpf4piXLbUc=\nR:util.go\na:0:0:444\nZ:Q1pxvNTYDE65irM/8gCasDPyEP0tw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/affinitygroup\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q15S+JRyNBMgM36X2q7Gj+MVqo3sQ=\nR:entities.go\na:0:0:444\nZ:Q1X8r/NDQJiGXeoz5fa+TO7b9mW98=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/hostedservice\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1cj8R9VGl13T03Vsptp51xaVikJE=\nR:entities.go\na:0:0:444\nZ:Q1l4Kjdm7nzWt7OotrlOC1grryFQE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/location\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1sOO+vlULnacrRrYedf1zBAqe8zc=\nR:entities.go\na:0:0:444\nZ:Q1qRI5hKXdh+kdr6xA0VFzoxT1jvc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/networksecuritygroup\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1Nl3PvdbER9wc+YeI7NGfx3yOFPg=\nR:entities.go\na:0:0:444\nZ:Q1QHdq2H42HGzZGbdw/yDUQCON4NA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/osimage\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1aEpeHyxR5p+r0oXC7+PTm+IgzCQ=\nR:entities.go\na:0:0:444\nZ:Q1OZYR6nt98w0iYSubtkn3Ie+KgLM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/sql\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1eWQiLNnk7OblsKuQuF7PsSVIgmo=\nR:entities.go\na:0:0:444\nZ:Q1G7VEYf3eVNvrS2DvAdc5XPNtuZ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/storageservice\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1qDNbNj1hcwXtrex1RpVToEbyY14=\nR:entities.go\na:0:0:444\nZ:Q18uw8xplndQxrgUnINPKh2QEk/Aw=\nR:entities_test.go\na:0:0:444\nZ:Q1neVJ8ZM/Uns66CBY+CMcKwFuiJA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/testutils\nM:0:0:555\nR:managementclient.go\na:0:0:444\nZ:Q1Cfp1uKh/ZpzHIw9RM+hyzoDcgro=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/virtualmachine\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q12DMsL6zZGnpArapdQ+mlUVRciEQ=\nR:entities.go\na:0:0:444\nZ:Q1g7DiKDwgwbwjCzXXYd1OoXh3t88=\nR:entities_test.go\na:0:0:444\nZ:Q1sviuIGsq3WKkJDIUssGv1kcAdSQ=\nR:resourceextensions.go\na:0:0:444\nZ:Q1urhwZ6q6X773Bghh6Z4WM6FUGu8=\nR:resourceextensions_test.go\na:0:0:444\nZ:Q1CJjjc7prLxfv+ppYPQC8hihRY7o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/virtualmachinedisk\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1EkU48ddqQc0fjqGbJca1AUCYpcU=\nR:entities.go\na:0:0:444\nZ:Q1jJl0Tmk2Kk+oDf6oj3WKoPuuF6c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/virtualmachineimage\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1dbL/kjXOzrhS6jExQahTnxRo6io=\nR:entities.go\na:0:0:444\nZ:Q1+gMxWUfD36zIxK6qVEcE5ZmJMYw=\nR:entities_test.go\na:0:0:444\nZ:Q1jQyXDPTrN3rXyJNEtCyTQl05/Oo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/virtualnetwork\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1FyAdtjd3sBV6RANBdY2wLKJPjAw=\nR:entities.go\na:0:0:444\nZ:Q12Lld4jfGM+bvGx8hHuolPgQYOak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/classic/management/vmutils\nM:0:0:555\nR:configurationset.go\na:0:0:444\nZ:Q1npxtS6upQyarVZGsXx3VIIDf4FY=\nR:datadisks.go\na:0:0:444\nZ:Q1SRj48VfM5RYWJ2DRfLcMQtJAhqI=\nR:deployment.go\na:0:0:444\nZ:Q1w9Dpw+0b992nS9lf7QMObC6dqeg=\nR:extensions.go\na:0:0:444\nZ:Q1UjJtbDasTDcymg9M9RjfbjFV5qc=\nR:extensions_test.go\na:0:0:444\nZ:Q1oBuYF1slUfcP0alBbasCdcyVanQ=\nR:integration_test.go\na:0:0:444\nZ:Q1EYfYpodEURI7IcoCm8mDbbrif2o=\nR:network.go\na:0:0:444\nZ:Q1LjKUGDNlSYwvLF2U2o+6ytnFiSc=\nR:rolesize.go\na:0:0:444\nZ:Q1kAvdqJu8X73KNz09yEhPPAFTwjU=\nR:rolestate.go\na:0:0:444\nZ:Q1hd96QHY7m4lEUxWCDpCEKPZR9/w=\nR:vmutils.go\na:0:0:444\nZ:Q1EAO7updtsop4Zxl+JNSMV4w8W2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2017-04-18\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2017-04-18/cognitiveservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1h2bdb6S1RZKudttWPDKOpq/cA68=\nR:_meta.json\na:0:0:444\nZ:Q1wNtT67c4OpvVdx3tTKQH6zEmorM=\nR:accounts.go\na:0:0:444\nZ:Q1F0MK0sSozQAzZB4MeGrIInslz+M=\nR:client.go\na:0:0:444\nZ:Q1JzIKAWftmbA2YfqpKDAOLD6nYXU=\nR:enums.go\na:0:0:444\nZ:Q1QtbWHclKD64UeiPmbYwZbn+s6SE=\nR:models.go\na:0:0:444\nZ:Q1IK9z+Zrbabf5eFavpPNrAAapT0I=\nR:operations.go\na:0:0:444\nZ:Q12JXP0HFLHA21a+mz9sAiT7JzYOg=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ywYFTXN5S+fSlvpeqcDnHqKYE0g=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1iMDHFngQTx9PThrYuC1otwUd1vI=\nR:resourceskus.go\na:0:0:444\nZ:Q1Kb/X0L/2XRO8orkM5ZpQ2jOBouI=\nR:version.go\na:0:0:444\nZ:Q1BwplLGboS0NQru6ybUnD9JSCxis=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2017-04-18/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sJKPZASmao1B5cflYU8LYh9oxOQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-04-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-04-30/cognitiveservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IESONWh/+HNOjBqsWGzaug6fu6Q=\nR:accounts.go\na:0:0:444\nZ:Q1jrEjivLICfFa7frskdVHdcRY9Xw=\nR:client.go\na:0:0:444\nZ:Q1zDxuWzstBl5waI5bCccpJDUeNQQ=\nR:deletedaccounts.go\na:0:0:444\nZ:Q1zA50PxPHke084hMg21MF5UKp9FY=\nR:enums.go\na:0:0:444\nZ:Q1Gox3THQAnY+8CAzSZBBX4qeVeCM=\nR:models.go\na:0:0:444\nZ:Q1gHH0YLu0g03duxnHSUgk8rpk1/o=\nR:operations.go\na:0:0:444\nZ:Q18KB8Fx7zRntzD1MnqJ2RuKdH7/E=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1eMdHax6t7lHuM4EdYijYwdwtnVI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1A2iXyJfV+7xNVteMK8DRZRA6eQM=\nR:resourceskus.go\na:0:0:444\nZ:Q1F7CXq22Wsk29U3lJsEQyhxktgzM=\nR:version.go\na:0:0:444\nZ:Q1AHytvhHT1KGxakPddju2XKgEX1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-04-30/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15NdhO7bNO8lKdMtW76VJ9FfDPAg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-10-01/cognitiveservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18UkSR5IDF2VsIRX+xh2r07Dl4vE=\nR:accounts.go\na:0:0:444\nZ:Q1AAsgQVuguSGnUC4UEt/lWcUU2rA=\nR:client.go\na:0:0:444\nZ:Q1r0cMqSsjiiZAXA2foOKLLidBW4s=\nR:commitmentplans.go\na:0:0:444\nZ:Q13J6uv1iVhhaqC6WgsuX49VLb4Pk=\nR:commitmenttiers.go\na:0:0:444\nZ:Q1GCZo71IBjKDa6sHRMVkpZ80+QXc=\nR:deletedaccounts.go\na:0:0:444\nZ:Q1dSv+LXp91xOL7dPL8dI+njUUm+E=\nR:deployments.go\na:0:0:444\nZ:Q12Jbd+i3dlInsmMOvsT05h17qis8=\nR:enums.go\na:0:0:444\nZ:Q1J/Pz1wSmtvOC1/07jjt/dy9mfYY=\nR:models.go\na:0:0:444\nZ:Q1ZJheVavNtAkK6NW2siNHt3o8qe8=\nR:operations.go\na:0:0:444\nZ:Q1u8ZY8makod9rW2M94cjjpSZSN2Y=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1N1aRhXZZYIHRpEGg/Kn4vxTgLPc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1GUbW4CId4Qso2559tLrxgWSlWo8=\nR:resourceskus.go\na:0:0:444\nZ:Q11mlPzhyeOkVmCHM4HbcgHVlMfr8=\nR:version.go\na:0:0:444\nZ:Q1+0ewXB4PwkvYb+AXiazJn0/ZSeU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2021-10-01/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1PrBueVqJ6/w8jZ2tQ00OPB73c4g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2022-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2022-03-01/cognitiveservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hNuAa5Q1eXoSYhDsC+ZWPVqCMPY=\nR:accounts.go\na:0:0:444\nZ:Q1jjWlRH3bvPm9F5QGJ0WbAeeydIU=\nR:client.go\na:0:0:444\nZ:Q1z5Tg7AaQvHaO4R9hpNMMsDsEHB0=\nR:commitmentplans.go\na:0:0:444\nZ:Q1LzQbpT8D1nFzIorkuPUXjTa41u0=\nR:commitmenttiers.go\na:0:0:444\nZ:Q1u9/OIFSdD1X97zHAr/XJ7MBPvQo=\nR:deletedaccounts.go\na:0:0:444\nZ:Q1GApGAb8csb2uR85qemKgOM33uqw=\nR:deployments.go\na:0:0:444\nZ:Q1CSXiQ/IQ7G6MnHZJmDAuR1q5K4M=\nR:enums.go\na:0:0:444\nZ:Q1J/Pz1wSmtvOC1/07jjt/dy9mfYY=\nR:models.go\na:0:0:444\nZ:Q14oWWvmN8X3ljc88f7S8+vzaEppw=\nR:operations.go\na:0:0:444\nZ:Q1EqEkObKwLIBSUjsokKVwhVi0KR0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1qMUpksED4HqhU3VCGe7W+sFpKa4=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1DNUF1dBPwYYWXswZy8p42hZnpbs=\nR:resourceskus.go\na:0:0:444\nZ:Q1XHK3RnP5/cR1KQAH3pHRJfkbK5g=\nR:version.go\na:0:0:444\nZ:Q1GP3zd3QMzAS+RXizBxszxnljzb0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/mgmt/2022-03-01/cognitiveservices/cognitiveservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cbUxnDvKQvB110j18BFxb0/K/OI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/autosuggest\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1cnWc2Fkxhr0oqHYA6Ux586ofL/s=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1h4tfH+9PiC4lQMeL79ES3M1nkfg=\nR:enums.go\na:0:0:444\nZ:Q16mnCh4lnIv9GGj4e4r0j0i1zHMY=\nR:models.go\na:0:0:444\nZ:Q1iTQZ6ZNJI1mhHwJEiRYoKHYeEvI=\nR:version.go\na:0:0:444\nZ:Q1nRXlvrgGY8FkCoYnyUm0j0YVxRw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/autosuggest/autosuggestapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ynwYnwoFO64SDAqT5hQgsGH3BoY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/contentmoderator\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1F1s5FhqjBfeSn+Sz5jaJfxhghd4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q15fnp+3WBleqZGAOktPa1Rlvf56M=\nR:enums.go\na:0:0:444\nZ:Q1uTw9oLtf2hTs1MH9ZiYQtweghpE=\nR:imagemoderation.go\na:0:0:444\nZ:Q1zSrj96U3ngvlQXc0S3spIwIWo5c=\nR:listmanagementimage.go\na:0:0:444\nZ:Q1aS1zxt0BvRdiv7SxJJ5dn1HoFNQ=\nR:listmanagementimagelists.go\na:0:0:444\nZ:Q1vMthOaapK4Toxty333ORr8tEBA0=\nR:listmanagementterm.go\na:0:0:444\nZ:Q1r7iAL/i6eTdlgOwpO9Miyt5juqc=\nR:listmanagementtermlists.go\na:0:0:444\nZ:Q1W6Pk80zeINVfI+Z7aKnmvtCjMWA=\nR:models.go\na:0:0:444\nZ:Q15yn0psFSdFl4UF/mqTI2sqtc42U=\nR:reviews.go\na:0:0:444\nZ:Q16luyotOFCPgKLsijlpqkD4+zo6c=\nR:textmoderation.go\na:0:0:444\nZ:Q1gFMd+d/EqzOzURx0CoVxNbi97/o=\nR:version.go\na:0:0:444\nZ:Q1xuDHQs5NpEcd6sJXiHcG1tdJIXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/contentmoderator/contentmoderatorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WPZvAL83cIFlRuLpHL9hvGTvHTI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/customimagesearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q13R85C64gDYE6kECMmUdI/KV9T/0=\nR:custominstance.go\na:0:0:444\nZ:Q1dQSoP0Wz4fjSaJaSeyifO2QkvKM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1VgKACEML7RJuBI9XCwo8Qbn23Os=\nR:enums.go\na:0:0:444\nZ:Q1cN2Vy78bE3Uhll/zBK0bA2xkNcQ=\nR:models.go\na:0:0:444\nZ:Q1nzLbAgRsPj3bJZ1K57924gvX7JQ=\nR:version.go\na:0:0:444\nZ:Q1PoV3ZwSs+eGY4OUaZv2/fjNGbhg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/customimagesearch/customimagesearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Qdq/My07eShX/SN0oB4yP5dCpQY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/customsearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1DXZdF2FMbtIGSXHKcyiKmRl9Kl0=\nR:client.go\na:0:0:444\nZ:Q1gAFI1eyTQz7WzKTMO/Mqd+d1Opk=\nR:custominstance.go\na:0:0:444\nZ:Q1osgZtlLmlUw7nEqXkC6C48K9Y5g=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1Tg30ObQEe6Ibvlaoz4SpnnplZVY=\nR:enums.go\na:0:0:444\nZ:Q1gBth68bFEqHjEm0SuGoslJiu6wk=\nR:models.go\na:0:0:444\nZ:Q1IpSVXaTidZncIpzEGuSsLeHVYRM=\nR:version.go\na:0:0:444\nZ:Q1b1CJajGbE4BsvtqKDMu1irn+oFY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/customsearch/customsearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HlF9EHHWeUX7XRikEc1R4iLuqNI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/entitysearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1TltI7MdjVNqIDQEtsoj7DYVDjGw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1jx7HnukvzVSwxPx8X9xnGso59+8=\nR:entities.go\na:0:0:444\nZ:Q1FDfwueeP7DyYLKFDKVQQs4WQB1c=\nR:enums.go\na:0:0:444\nZ:Q1nf5wYBqG0Hr9EK4gHu1k+Yu20Xk=\nR:models.go\na:0:0:444\nZ:Q18+D0FAtd2yJmHY0sXcDYjUU3vPc=\nR:version.go\na:0:0:444\nZ:Q1xodIAAwc2hBJ9vSHlNiFmQ49B44=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/entitysearch/entitysearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MzTUF5Wb5DFJlcISvRig0JOmmRY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/face\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1zIBO+ttS5Ngvy3ytJPeJmzc7E4w=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1kDDQGMBq1GHMgzOTp6PX2FtGfjA=\nR:enums.go\na:0:0:444\nZ:Q1/QghxAk2NF3EHADNTib3yVWjb3s=\nR:face.go\na:0:0:444\nZ:Q1cg2yc9Y/6J2u/s3MBLjmFt9Epnk=\nR:largefacelist.go\na:0:0:444\nZ:Q1/21zd4ozIvGWEEQgvvaGo3qoVt8=\nR:largepersongroup.go\na:0:0:444\nZ:Q1MQAt+VDP0CW42sLnNM8J3lmFoqs=\nR:largepersongroupperson.go\na:0:0:444\nZ:Q1mltOgJvbXdI4kfi+XGrzvdSKNmc=\nR:list.go\na:0:0:444\nZ:Q1Vq8B9i+uSIlK7MXhMqnOIMnMVH0=\nR:models.go\na:0:0:444\nZ:Q1Y2PgHznUa4B1TS5GovU/UgAcJ2Q=\nR:persongroup.go\na:0:0:444\nZ:Q1Ky/bpwE2V/WKCq2+OSXBByxWFWo=\nR:persongroupperson.go\na:0:0:444\nZ:Q1W8WSVXAKp1dyllUtEoqkBNGoKBI=\nR:snapshot.go\na:0:0:444\nZ:Q1Kx3Sn4n74tVBxYabBmTVMSmLUOM=\nR:version.go\na:0:0:444\nZ:Q1IdD9Ml99ClPLQuZceO7YXAzoo5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/face/faceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1RV4FeAjD5D6wOSQVVbkWXUvr4Ok=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/imagesearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1KUsg5P7WruTlWRaJ1CHnTme6VAA=\nR:client.go\na:0:0:444\nZ:Q1/D/hpoOjF53ijagGEPtoEoj7duc=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1L/4j16D6AIetOfMJcXI44rVOpno=\nR:enums.go\na:0:0:444\nZ:Q1VhjncujenpbgbSyQwIEioF2rkg8=\nR:images.go\na:0:0:444\nZ:Q1SzxdrvkT1LZ5wDgHG9OEarwjBfM=\nR:models.go\na:0:0:444\nZ:Q1cef9vRp6a/u6Dksm0xPgELgXP54=\nR:version.go\na:0:0:444\nZ:Q1PowrG5vAL5N4kptd1ZR5jt2sEL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/imagesearch/imagesearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ruW9X52+HM1k/WYJiu6ww0yPuLU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/localsearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1BRemQYm7ftGiwAvWSaRkrhmboSQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1YAbuGBACiTjFYAiaLfVqOCDBtvc=\nR:enums.go\na:0:0:444\nZ:Q1xMcO4oeTzqLEuGJnqz5PqtskWu8=\nR:local.go\na:0:0:444\nZ:Q1owhdvco/aqq8HzQK7whgT4NTSaU=\nR:models.go\na:0:0:444\nZ:Q1b5QnYO//qGDy3b1yobpP9zxaAiA=\nR:version.go\na:0:0:444\nZ:Q1aYa6nPEh2b+ddNH1ljYueouYyFU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/localsearch/localsearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1v/ypZ6WYOq3COCVb8vwxsS13CaU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/newssearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1ouXVjzPCPpH93iVMCJIHZ9ZCQlo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1xp97kmNTFm4S3aDlZuIy9skWd/Q=\nR:enums.go\na:0:0:444\nZ:Q1tzNy137oUrsWN07nh5wfWCpWzDE=\nR:models.go\na:0:0:444\nZ:Q1Oqp/I8cRu7lWxpKN1W+R6mryZEo=\nR:news.go\na:0:0:444\nZ:Q1lMBfBX266qmi+K89b39rf7gH0Jg=\nR:version.go\na:0:0:444\nZ:Q1/a+ZKUXTLIrHKVT3NzfAfH5q6Rc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/newssearch/newssearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1v9dfTZYi+wTbm7GnqfIgT51SIDI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/spellcheck\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1ipcbZ0npRBLeOzk7OdEhjBe0Xvg=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1nxK64S0bLotxjTVP8eId0AnXep8=\nR:enums.go\na:0:0:444\nZ:Q1YIy7OOqGcdhLmjAV1hMhGJKzq14=\nR:models.go\na:0:0:444\nZ:Q1EYpyhQexujJD2urwU52J02/hor8=\nR:version.go\na:0:0:444\nZ:Q1fHcJqtWgnlcKN2B0E0UgH2nYir4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/spellcheck/spellcheckapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZlMOWVyeHYukpeqBhSJMmLyyoDo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/videosearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1sPqa1vkysXQLnsalq7X27K/hx88=\nR:client.go\na:0:0:444\nZ:Q1VDd5BIg/i9o+ewULKppdtGu5g18=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1evWQuV1Yh740sxtxwhXIo+A4h3o=\nR:enums.go\na:0:0:444\nZ:Q1/YPcIOVAsZmZdkg8LJYj4S9WOxA=\nR:models.go\na:0:0:444\nZ:Q1UpvRE3kknALna/Fcht/vyk0eQDY=\nR:version.go\na:0:0:444\nZ:Q1PzwxoFXlWBRTU43FLTEhB/YBe9g=\nR:videos.go\na:0:0:444\nZ:Q1ZZlnUKeTgdauKfGviC8ehI8/ui0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/videosearch/videosearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FKrC+BbhTTW5mggbZp5yzSlLZxQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/websearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1JNdqqWEcPi/O/P8q15V5BmJePqU=\nR:client.go\na:0:0:444\nZ:Q1aQAIZPUESseiq6xi0MuZ6G7vaxI=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1tFVxoj+u8IhG1OdI2NHH5no09HQ=\nR:enums.go\na:0:0:444\nZ:Q1fOW0P/jVZ4J6YilxyuY0sOVAJkI=\nR:models.go\na:0:0:444\nZ:Q1nl7AwvzWZWHKVdaqZOlDTPBqeBE=\nR:version.go\na:0:0:444\nZ:Q1fLwyP5XQQElsOJn48aJ5gsV8hfA=\nR:web.go\na:0:0:444\nZ:Q1NiAZs4hcCtleYM/Yq/kiKDCCW04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.0/websearch/websearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rdMVhVuGatEfAFCrHSq+eSfSDvY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.1/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.1/customvision/prediction\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q12kfGqrcaisETbgX7BI1MIDcTG2M=\nR:client.go\na:0:0:444\nZ:Q1IvuqrGDTs+5C0Ya5dxpTdjDo9VQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1oKsvz96ayM+caznKlS199sR7bVw=\nR:models.go\na:0:0:444\nZ:Q1nhV6Yfj187GcYWbKwEa/76mIfQQ=\nR:version.go\na:0:0:444\nZ:Q1ZHCpnonY7bgIyoQq+S4si14ljeY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.1/customvision/prediction/predictionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Jieoc4637uOpMdpa51L3zbD4wCw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.2\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.2/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.2/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q10ZnxnMtcLilAToy5py9ZrDo7y9E=\nR:client.go\na:0:0:444\nZ:Q11WjCPZ5jzhkN1ZMhRjx7bmhjqD4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q13dKrX74YR3ISjhawuT8yvA1japw=\nR:enums.go\na:0:0:444\nZ:Q1lsMCGBCA707QRG2Z2z81aNd1Pyw=\nR:models.go\na:0:0:444\nZ:Q19aEcfjGO3vZPwzp1sFQEZ3XZyxw=\nR:version.go\na:0:0:444\nZ:Q1G+4/pLQC3IvoeOylujb+zWVpvDM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v1.2/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VZgNVednLiuDhZ+b+kI4PN9fD24=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/computervision\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1/jHsfNGy1/ZB13lkI0zWJOukNFA=\nR:client.go\na:0:0:444\nZ:Q1GlcBxCNoJwP1RcCi4ZTTP+/aq4k=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1dGJU5gJwiBDPL+tfLB/gsnVVJqA=\nR:enums.go\na:0:0:444\nZ:Q12JNiK3ekUkJAoDV017Xz2Qj3UIA=\nR:models.go\na:0:0:444\nZ:Q1Czx+/X+ElFkNWEgmQ8CUAXbWaM4=\nR:version.go\na:0:0:444\nZ:Q1puIMmikxoQ5cxlRia2fUfF6L83E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/computervision/computervisionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tR6NMW7OzcXlI6j82h7bPqKwqYE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/luis/authoring\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:apps.go\na:0:0:444\nZ:Q1AaJReBxAaoVqxrc2ix4HYnByiUs=\nR:azureaccounts.go\na:0:0:444\nZ:Q157+zeuoEF+42gK4uId150uprEZU=\nR:client.go\na:0:0:444\nZ:Q1T2xb37LgHc2o4+YgSkBBu3xvweM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1jZlyOyx9dFLC1Zp33+IUSZgz6Lc=\nR:enums.go\na:0:0:444\nZ:Q1aylca2HM6ySxSKCX46JrEcECkrc=\nR:examples.go\na:0:0:444\nZ:Q1BB89H7tGYJ1zChTj+895sF2uKEI=\nR:features.go\na:0:0:444\nZ:Q1nVoY5DN4c5xQ2sWSjWF2ylL9dU0=\nR:model.go\na:0:0:444\nZ:Q1eYBjHRzns9PF3ZthDgzWwRUYlaw=\nR:models.go\na:0:0:444\nZ:Q1bqysl9ZD2OX8fh2cyWdQmhu6C5M=\nR:pattern.go\na:0:0:444\nZ:Q1VJeaQr9gEd99g4YZDWh07+emxd4=\nR:permissions.go\na:0:0:444\nZ:Q1vX0QIDgZqCk0QCRUWaQkPHv1Apw=\nR:settings.go\na:0:0:444\nZ:Q1KO+/lyAUqRY/wU22b1uFY3icc6g=\nR:train.go\na:0:0:444\nZ:Q1Cv7gMrNPFsm7uPGIn5dCU88C3SM=\nR:version.go\na:0:0:444\nZ:Q1lR4eTLwiauU4zNc33DwusvRDyO8=\nR:versions.go\na:0:0:444\nZ:Q1D70wFCgrTTO/tvNDoQ1RCxS/GpE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/luis/authoring/authoringapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rtYbjZDJ2cI9gHTogYAIwuTU+V4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/luis/runtime\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1ayxEXm4WQwNp+ISvFWf/vxt1Q8k=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1yOFC4G2n9fFpUW84hGAIEiufXfg=\nR:models.go\na:0:0:444\nZ:Q1+a69/+93+dWX8ctX7HfDCitqcYE=\nR:prediction.go\na:0:0:444\nZ:Q1FSLeYBCWd6XfP0lHRjh6eYeXBDM=\nR:version.go\na:0:0:444\nZ:Q1tQhoUq5/Z0fMtrdc0I2TO0z/ItM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/luis/runtime/runtimeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1T+mrQQYZUUPdxpB4N0hQpv8Zh2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/textanalytics\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1QzXTk8YpmYJtJsXfhYYKZkpTzTg=\nR:client.go\na:0:0:444\nZ:Q1cldu175jChPBsVOw4mMghL1Absw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q14ANlWIFbdUziENEfK3Q/9tyAuvE=\nR:models.go\na:0:0:444\nZ:Q12UWFRgV2Ys8kjm/Ruana1MdKQAI=\nR:version.go\na:0:0:444\nZ:Q19LAQxg1zwSsZz3sUIo0pRHy9vDM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.0/textanalytics/textanalyticsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1il1rIaorah/VYpyUGvJ29HR4qPw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/computervision\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1/jHsfNGy1/ZB13lkI0zWJOukNFA=\nR:client.go\na:0:0:444\nZ:Q17QoNMFC1N0i0mbS4FmzNtkFpjU4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1A/wwsBitxy2ceBGKCKJMGJtskyY=\nR:enums.go\na:0:0:444\nZ:Q1l2kh8sK9G0Tzt4lF7Djr/m54UTo=\nR:models.go\na:0:0:444\nZ:Q10MIdbEpyDRV6/HULkjvZrgdkzJs=\nR:version.go\na:0:0:444\nZ:Q16+ZCwz+BukWCaHfj8Xc5zYrA0Ac=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/computervision/computervisionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1PURPOMyom6x2M2f6F+ueazFhLh8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q10ZnxnMtcLilAToy5py9ZrDo7y9E=\nR:client.go\na:0:0:444\nZ:Q1dDV7wPJe8HwQJCJAvlP1GZ3t710=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1cFTRdTwnx4ZOpB1lEHpU8FHuqvk=\nR:enums.go\na:0:0:444\nZ:Q1QdPf61fsgokNtRm47NcaZXrEJQ8=\nR:models.go\na:0:0:444\nZ:Q11LIWrbrs1jbsAEYp2N9VdvkBBNQ=\nR:version.go\na:0:0:444\nZ:Q1+JnA9jM0ubKn1QDjc1/W/i/hfZg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1bS44Sp2OdRSIPz+TFpj2upfxlGo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/textanalytics\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q11u8Kz4LeN4NGvVORCX0OMYfvKWU=\nR:client.go\na:0:0:444\nZ:Q1Arj50yNNZd8jkzaCfpqNWVNzri4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1q6cFrbkyYpxrN+Eopet7bNvuxCE=\nR:models.go\na:0:0:444\nZ:Q1dSA1gIFBHwMwnUH0n/YIuqENpNQ=\nR:version.go\na:0:0:444\nZ:Q197GhKVR4QIcPwJyRYmTPxzWlvWg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.1/textanalytics/textanalyticsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Gr+h7GCqnPVknp5kMcNuj7w9dNQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.2\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.2/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.2/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q10ZnxnMtcLilAToy5py9ZrDo7y9E=\nR:client.go\na:0:0:444\nZ:Q1UOFY2Y6yceGc1OUAIwHU/6WqV00=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1KWUFHieVcH41C0HD+G9f+2deHoM=\nR:enums.go\na:0:0:444\nZ:Q11ll9QwHrKmo5zu1cGHuOAnw3PP8=\nR:models.go\na:0:0:444\nZ:Q1PXIAVRRUU7SHkXV+ZkNv4WsWe54=\nR:version.go\na:0:0:444\nZ:Q1ZVh8EuvLAM6S5GvHpYzsK1KY/Sg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v2.2/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xY0GUWU8eo5Gt3qaeBzsh38pUG4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/computervision\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1/jHsfNGy1/ZB13lkI0zWJOukNFA=\nR:client.go\na:0:0:444\nZ:Q1gSKACSONHJaVCd7pbuPOnBQGK30=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1KTOtyX2ieHXoh7ye/KYwUYQntt4=\nR:enums.go\na:0:0:444\nZ:Q1OiaWijXDsCZkGUlBWx4bfqcP+2c=\nR:models.go\na:0:0:444\nZ:Q1C4sYuboYk5k6sgIpiqOLMz2ei/s=\nR:version.go\na:0:0:444\nZ:Q1PyutJDzjflbZDGze0SAfieA1dig=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/computervision/computervisionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UkU6G9ElZo0l+adyU5BCB0gk6DU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/customvision/prediction\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q12kfGqrcaisETbgX7BI1MIDcTG2M=\nR:client.go\na:0:0:444\nZ:Q1imlC2SpZeIRu6U8oJjyTC7XcnrE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1VedboI5hYkgNGROjIeZ1D8XBJNY=\nR:enums.go\na:0:0:444\nZ:Q1Yxi8HX1LHINHtyZVBvgVxMgKxkg=\nR:models.go\na:0:0:444\nZ:Q1UD4ZYNCvD6g824cPDeFjbj9OmrM=\nR:version.go\na:0:0:444\nZ:Q1iPqt6SHmGkKY+zwz0ZbO2CVH+eM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/customvision/prediction/predictionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qzuG7CQEfexNKQwafBcfTj0DTGE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q10ZnxnMtcLilAToy5py9ZrDo7y9E=\nR:client.go\na:0:0:444\nZ:Q15ipvOYToOfZLYIWw0LUWJD0cYFw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1Z8RRag5CXkdsdWjb4q0lTGxhpRk=\nR:enums.go\na:0:0:444\nZ:Q1nhgP+I+hVwZ2yZ2p/Y4iN0jpHmo=\nR:models.go\na:0:0:444\nZ:Q16H+oN9givqxFcgjVIkRvH399rE8=\nR:version.go\na:0:0:444\nZ:Q1VTxtkJjNoGGbgHao/sD5+Ke2H38=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1TsNYgTrYLjkECO3LLLE3zIoo/sI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/luis/runtime\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1AXZEFUvoPIwGHPGtgFR7ZHHxOwE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1CJu4aKE93sSi7g/md0WVjit5PEs=\nR:models.go\na:0:0:444\nZ:Q1ttKdSoeWO9MvU3LWjycoy+7Y2Sg=\nR:prediction.go\na:0:0:444\nZ:Q1spKelvOtNHWKSH9B0W50vvHy3iM=\nR:version.go\na:0:0:444\nZ:Q1SWgBSoisDBlYnCYnXh+gseClHaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/luis/runtime/runtimeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13eamOPwVgqwrBp5v1hRpwE/ZkQE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/translatortext\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1fEC6fHYrmXCmcFgEvzvuILo9QeM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q153+aZ7/nbqQ2au/sY96gycrJ93w=\nR:models.go\na:0:0:444\nZ:Q1AnddHhqV5NSTcNyE03aEmGUPOAA=\nR:translator.go\na:0:0:444\nZ:Q1Yk/AspsrNOXHEKBshJkaoeE+nYo=\nR:version.go\na:0:0:444\nZ:Q1Hgm3ydBdLSjhDuDs68fprD5GNrA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.0/translatortext/translatortextapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1d9zJLUtLRNKf/4OVBVtgWJ/L7v0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/computervision\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1/jHsfNGy1/ZB13lkI0zWJOukNFA=\nR:client.go\na:0:0:444\nZ:Q1f2i2e5Zo7TV/z0N6FpIOi/V5pBs=\nR:dataplane_meta.json\na:0:0:444\nZ:Q18gfa26R//0MI+hQWzjpB3m/cAo8=\nR:enums.go\na:0:0:444\nZ:Q1OiaWijXDsCZkGUlBWx4bfqcP+2c=\nR:models.go\na:0:0:444\nZ:Q1V9AuC/Sr9SZp5q02Pe3vlvGWXHE=\nR:version.go\na:0:0:444\nZ:Q1GPPqpID7w6bwldVOxxFoGoCf9B0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/computervision/computervisionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nSCfvJB1S79vxv8ChQuXQfyTvLk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/customvision/prediction\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q12kfGqrcaisETbgX7BI1MIDcTG2M=\nR:client.go\na:0:0:444\nZ:Q1P/NoNVT2+jQ/QOnXv6Eysn8oqF4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q10qvgLZL/rsK+GMs3j4+6rRMHXR0=\nR:enums.go\na:0:0:444\nZ:Q1K18OfOX91yAhy0OaWl0BkW2Vyjo=\nR:models.go\na:0:0:444\nZ:Q13hOIZ6Y4m4Xqbi+XiL4vSXdrAQA=\nR:version.go\na:0:0:444\nZ:Q1dg0U4/Qjl+kE/e0Wc2R3MZwov4I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/customvision/prediction/predictionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17pBhEFANypCEPmFYSeoHxLpfSiw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1w+SAeaMU6k3jXuAQQnA39rLbfQc=\nR:client.go\na:0:0:444\nZ:Q1uFvWzX+YRPefWEp8jhh0LcukP50=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1KYENM9gBXuGv+cz77xesaNxBUFY=\nR:enums.go\na:0:0:444\nZ:Q1Zw8uqzypOxB4z3x0gOlsC4WQiV0=\nR:models.go\na:0:0:444\nZ:Q1+jt1SHtMi+RG2RRP61Ffbx2H818=\nR:version.go\na:0:0:444\nZ:Q1C5JQub3/iYod5sS0aRI4yBQZch0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.1/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Ye7n2VSCnD28wa2h5oloygZYYTg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.2\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.2/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.2/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1wCL7Lxm+dFr260ClYQIu3kvQG+Y=\nR:client.go\na:0:0:444\nZ:Q1r3WzReV+ZLFx0nMkfREGB1+eS4g=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1rYSJLZnKRb8tTfVev2KjMvEBWHg=\nR:enums.go\na:0:0:444\nZ:Q1U7KxuiveIOTeQEcze7CeBNVa88Q=\nR:models.go\na:0:0:444\nZ:Q12cDfjk7kDE1DQfSpH7sgf5FTkyQ=\nR:version.go\na:0:0:444\nZ:Q1+J8UjovghiwmrshwsR9yrZwHZBo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.2/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jEniAXNLwbB8kSGpZIF8qfQAdEs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.3\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.3/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.3/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1s4/C2BghAHQ/CEHePnUp/E9ZjOY=\nR:client.go\na:0:0:444\nZ:Q1OAYDZEpg6TimYoJBdy+FG19TfnU=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1SjKuswjpbVByw0iOgbnkIFBjVTc=\nR:enums.go\na:0:0:444\nZ:Q1j+k4D5mdLGvPHBkJ8cS1yjm3/Q8=\nR:models.go\na:0:0:444\nZ:Q1ufTH2ZVVAazdFW/VZsxFyw1o/Hk=\nR:version.go\na:0:0:444\nZ:Q1Adqtv5xgQdwm410M/k5e8R/wzwk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v3.3/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wjxF/Xjl/NJbcL3/TeDBLlTNShs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v4.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v4.0/qnamaker\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:alterations.go\na:0:0:444\nZ:Q1G8AqHo1s3X6kjwXqXg3zEc3iIdw=\nR:client.go\na:0:0:444\nZ:Q1xLnuW5Qj2WgTRwgTCzy2S+Gzay4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1h9fHVrLEmaRzyOZ2IjfBxH5/zLc=\nR:endpointkeys.go\na:0:0:444\nZ:Q1tLO8RC8exKiH9WhNNHqTjL1j1Zc=\nR:endpointsettings.go\na:0:0:444\nZ:Q1FUC5qGUczX6lukdmnXiEfOqH/1I=\nR:enums.go\na:0:0:444\nZ:Q1JOh0mOsOTDCzShunlO0conKxu98=\nR:knowledgebase.go\na:0:0:444\nZ:Q15zmb5YhlWj322vSjwj+bneOccsk=\nR:models.go\na:0:0:444\nZ:Q100PuCWtJiYLiqLebNKXePYVPOW8=\nR:operations.go\na:0:0:444\nZ:Q1yPINQq9CTYg7swwF4fF2moLXzCo=\nR:version.go\na:0:0:444\nZ:Q1G2xrCo2e5S6REBrFFn54N7RcYc0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v4.0/qnamaker/qnamakerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wb5D58sPvcxhAL7ocitPu7vOMFA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v4.0/qnamakerruntime\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1avFOLEg/apLx8dq9bMaPAlNU3KQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1wudfob244gxxtPyfpW9xBNbk2KM=\nR:enums.go\na:0:0:444\nZ:Q1phtgGjgF+4qReUBiDcDLtBN3TYs=\nR:models.go\na:0:0:444\nZ:Q1wHqWUaYVQ4tmYsrVA85hguIaUEQ=\nR:runtime.go\na:0:0:444\nZ:Q1zs8+d7wpzSsqzO7rTTpQsJbv/3s=\nR:version.go\na:0:0:444\nZ:Q1q2cY1lrQvEU3cdL4TEG+fs6g8ak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cognitiveservices/v4.0/qnamakerruntime/qnamakerruntimeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YZAZ7+d+/SCtZXBzkhbXK8w8eCk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/communication\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/communication/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/communication/mgmt/2020-08-20\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/communication/mgmt/2020-08-20/communication\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qYsXCmSzpVzx7BlhVRyyKEFAdng=\nR:client.go\na:0:0:444\nZ:Q1ueytOa6GZd1POsweiSE8KYbhw44=\nR:enums.go\na:0:0:444\nZ:Q1dxQTHoZ7lviupJRUPyGVcWitFoM=\nR:models.go\na:0:0:444\nZ:Q1SFPQGpViWN4esxXom+XdSvOk5ds=\nR:operations.go\na:0:0:444\nZ:Q1oKMtPAFLtnphfCA8bKi5cXZkVYE=\nR:operationstatuses.go\na:0:0:444\nZ:Q1NBOzym77XgBB6cCJ/8j0xAx34/A=\nR:service.go\na:0:0:444\nZ:Q1eim9r7yBQZLbQp/EW1fhVa7gLR8=\nR:version.go\na:0:0:444\nZ:Q1S1kx1wOItCUv/YDb2jOQy6GUU5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/communication/mgmt/2020-08-20/communication/communicationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11AniVPvv75UFqZtMHVbBI3MATZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2015-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2015-06-15/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1c5wVNsGReqHhXMdSBZZEY6vbIh8=\nR:availabilitysets.go\na:0:0:444\nZ:Q1LoCv3g/fAz1cJ/Eh5uf8MLdsYCs=\nR:client.go\na:0:0:444\nZ:Q17+h7nWoY9+H12F8dH2j4X2Y3U80=\nR:enums.go\na:0:0:444\nZ:Q179Ur2VeK76LU+lgk/eaaM/uIiaY=\nR:models.go\na:0:0:444\nZ:Q1Q6gaGcDBAGkosMoYaijzLXpgQDI=\nR:usage.go\na:0:0:444\nZ:Q1PZBloJbzSUKyVn37Cr1cElrrqP4=\nR:version.go\na:0:0:444\nZ:Q1467AjkG/qabRVJHAh75fbhS2+E0=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1Nd3W0sudbL+F7PogkCijmP9TSlY=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q19b42lSp4iOvx/tu/WJg/ERB4Scs=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1q2X/YzJH+vphT5876gzTizUzuFI=\nR:virtualmachines.go\na:0:0:444\nZ:Q1eV9sajiFGCXp4RKvpVA50Pcn3i4=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1NSdx2nlZJgohn1m9ga8mpuaneQs=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1uBS79TEh393oTW4n6p+n2pHz/Mw=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1i2+aTn25RBIwEXWiwqdbqIlo+3o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2015-06-15/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16HltYq5Y9o4zsUaN/BfIM/rEh8k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2016-03-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2016-03-30/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uDRbLmJks5cwE0fKoclgybSgUc0=\nR:availabilitysets.go\na:0:0:444\nZ:Q1wYCdPSiI37clrCin4RzSKLtKrNs=\nR:client.go\na:0:0:444\nZ:Q1C5d4HVPLc45LHhgNYWTcpukhTyk=\nR:enums.go\na:0:0:444\nZ:Q1406crk6N6r0OWwM/jejoUbDicCU=\nR:models.go\na:0:0:444\nZ:Q1E2CTX3Hu1NlzPGR9XTCeYJKRVWs=\nR:usage.go\na:0:0:444\nZ:Q1Emxy2jmBg1m2yzO5oYHexheTi0g=\nR:version.go\na:0:0:444\nZ:Q1A/tIPhA09H4rC82c7ihMiBaxx60=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1pwRA6LKRna9pLPJmUJNfBIFDdzs=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1u9hm5Ki05kXr1iPfum4U73cm4vI=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1LvPxUupy/eG40i6mzJkj3MwkvTU=\nR:virtualmachines.go\na:0:0:444\nZ:Q1gSir4QRzG8yzDphZgFRv2A0dc/g=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1dM3XZDatRHwq6+7fBBcjYKcuPNE=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q15uPo6PHE75OnZOwh3Xi0Ct8fpVg=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ngAlag4ra9Yz/6XGmPShFb7rEyE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2016-03-30/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Tc7CqIGidbl5ia2REEIpQ19L5SA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-03-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-03-30/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15bZOhXvs8zrLakd9CUYx1xpxtW0=\nR:availabilitysets.go\na:0:0:444\nZ:Q1/QW6nS2tAeEeiWUbvyNjx7viMJ8=\nR:client.go\na:0:0:444\nZ:Q1cJFWyB7L7cjq+/t4s9r+wNQwnd4=\nR:disks.go\na:0:0:444\nZ:Q1SWKA0zfYvEuzmaqS4QisuB+mV6c=\nR:enums.go\na:0:0:444\nZ:Q1hQGfwsfbWgsd0E61ZI2OSnjhm2U=\nR:images.go\na:0:0:444\nZ:Q1CRPDjHeJhCQ1I5sLXcDv/ZxCoX4=\nR:models.go\na:0:0:444\nZ:Q1O4GqDaTT7pAnmHhpz8RoQEmxiog=\nR:resourceskus.go\na:0:0:444\nZ:Q13SX7Aj5PEyPeQHujUxx6iihH2Hw=\nR:snapshots.go\na:0:0:444\nZ:Q10iY6Eql1wzuw+/QaW9PkMMn9D/Q=\nR:usage.go\na:0:0:444\nZ:Q1ZX5eahIJ4UqbxtY4pQa2mLmM0Tw=\nR:version.go\na:0:0:444\nZ:Q1B3D9bGGByT+GFmTGhXd9iwSxl5U=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1mBW2DTMJbcSIrXeWDQUKmL1TKNw=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1Tt0youxdDr1b730KmytkrYPUeNk=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1mwpz3/7QN7BINGKAxC+GgDKxMOg=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1g7CSH4Qj6XKYajHkGnRI7MBp4vM=\nR:virtualmachines.go\na:0:0:444\nZ:Q1RJfpwW94v/QVOum3y6s+uPP8ARQ=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1OtMAt8TyA+oz86AnRyQJOCmYbvs=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1bJwPXOsQ4/937Vi9lcJ8u2ZAq9Y=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1fRMxn/ffbm/YIXiwv49t1FY2T6w=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1e/xu/QU9rodgap5MG6jr+6pgnaU=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1OENIdYVt0+mJz69BiLjyvK9s4DY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-03-30/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17ooQsXXyRqP4O6X0+5TTUW3Uw94=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-09-01/skus\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1H3BnxgnepYbDk2CE6/TV/kchWwc=\nR:client.go\na:0:0:444\nZ:Q1SIH1k5qGvdkFSqL9UOn4RUwNAls=\nR:enums.go\na:0:0:444\nZ:Q1TgvddjE6iqP6tY6/lrT3Iv+3d+g=\nR:models.go\na:0:0:444\nZ:Q1p5seDK665aJ4hNjbs0UY8XbSJzs=\nR:resourceskus.go\na:0:0:444\nZ:Q1rvOX69gPC+Gcg4/pq428lBCXcGA=\nR:version.go\na:0:0:444\nZ:Q1LV5T+sq4z+DuHXShyyQlg4fSgeI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-09-01/skus/skusapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xo5pta4U/5bRCraAnKvlCoTEeEc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-12-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QYOxHn8geVMh5UCCRmwXKwfZiTg=\nR:availabilitysets.go\na:0:0:444\nZ:Q1QqNzzZedQ1WhA++Ezr2gA/++xS8=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:disks.go\na:0:0:444\nZ:Q1SWKA0zfYvEuzmaqS4QisuB+mV6c=\nR:enums.go\na:0:0:444\nZ:Q1dRyUbRQ5ZhuulrT+d3ziQACq9KA=\nR:images.go\na:0:0:444\nZ:Q1Wn9w36CAM4LbwxEn3zWSuVR9nMI=\nR:loganalytics.go\na:0:0:444\nZ:Q1RwshFW9kymWlJJ+aNWAFWPiVFbA=\nR:models.go\na:0:0:444\nZ:Q16VqZyq4g0JwynRUWDQOJygVh2HI=\nR:operations.go\na:0:0:444\nZ:Q1SdsVr+LIW1woQUfmm6ogh/TmnZ0=\nR:resourceskus.go\na:0:0:444\nZ:Q1QrRFb4cWNFTtlQMGu5za9wGkgfw=\nR:snapshots.go\na:0:0:444\nZ:Q10iY6Eql1wzuw+/QaW9PkMMn9D/Q=\nR:usage.go\na:0:0:444\nZ:Q1dEYPZmR6B2pfZ+NzJTOh7MLA4bU=\nR:version.go\na:0:0:444\nZ:Q1kvzTwCTpoAtQnCCCPtJX/IB9CW8=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1XmpLBWoZOgHZgDYGzeyE6FV4ZcA=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1Y8Q6sY5eVUU2KZ4o7Aeu/f7svWQ=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1BfjocFBVpK0fTDO0gBoAry3EaPY=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1XmmaeZLMVVv6FagOU0gezbvVIMg=\nR:virtualmachines.go\na:0:0:444\nZ:Q1l1WrD05pYAWmpuP7YHJ07wIWNy0=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1est3gB8M5gA1yYubZxUpnzhaNaM=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1IV/LnWsijWduZOPhJlREyvZnz1k=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q13kE4DM2AcAr4Z6kcJp76jalQjD0=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1SoB2Pe+v9vvYG+yg48eJCiOnt50=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1tMRKgCMQdJtk0cgdcarYGNpjgiM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2017-12-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OL4386kHBa5yoH3jsaMICMblc7w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-04-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IFOI/Yp3DcM9SnbsgnZkzNQJnH0=\nR:availabilitysets.go\na:0:0:444\nZ:Q1vda2CmlIL9trAKiYzUXPdA5dAiA=\nR:client.go\na:0:0:444\nZ:Q1fWxqCPsrrV/tFwApHEByH92ymUw=\nR:disks.go\na:0:0:444\nZ:Q1rJ6QocWHD6PurHiiU8xgbTOQH4I=\nR:enums.go\na:0:0:444\nZ:Q1riUO6TjeVZuoZ2pe2Upnkrk5bx0=\nR:images.go\na:0:0:444\nZ:Q1g4A/nOMMogq0mLFCeqVgLfqN6xc=\nR:loganalytics.go\na:0:0:444\nZ:Q1uQCi4ciI2Qj1oxSROyOXPy8GKtE=\nR:models.go\na:0:0:444\nZ:Q1kDKdIWSDQI/kAp1JtUy2uA/5qjg=\nR:operations.go\na:0:0:444\nZ:Q1cWIBg4DRZdFmzkBXKYoNLSkS2ew=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1PWJrXEEyScSPff9L9Ax/Lp89AQ0=\nR:snapshots.go\na:0:0:444\nZ:Q16wayQJFYtMUaVdMuXo/f+YQZ4ps=\nR:usage.go\na:0:0:444\nZ:Q1lCU4PlfdY847lFnsjfSoViUMyks=\nR:version.go\na:0:0:444\nZ:Q1aHntYAo14VQZLHJw2eST2OIjxNo=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1/juHYJ0Z78ixPjTZaQni1SqoMB8=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1mYSGf4h7gQyYP59q4oOHDurdruQ=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q10sOzypBllJmf3gV2Vj8IrFuZbcY=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1dnqZKKUNnDF4c9KvGwvVmlTrLzI=\nR:virtualmachines.go\na:0:0:444\nZ:Q1L6AFV8ESP6ZIMKvqmdQYqoNOPxM=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1Zdu6Un4CRr7wlJEzi5d6YsxUjHY=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1eo5OT6BWwhE/jxhCfsEMRFE7UCg=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q18UaM7wE9UQhXLJ/nrI0wAg1WJr0=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1dSi1X9DcUYDojt8TtX3VjQHty30=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1p5yM7Oij5NOzebrr3tiwUes85wc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-04-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19s2t7DeCEOvLE5MYOCLcruleK0U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-06-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17c83QVYFgN2Qm9wPKm7fCd8iFGY=\nR:availabilitysets.go\na:0:0:444\nZ:Q1TwLvh9LS5ur1oZMDJtbaeAMkT9o=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:disks.go\na:0:0:444\nZ:Q1a5g2ZBvif53ryr/hi2EoO982Ufo=\nR:enums.go\na:0:0:444\nZ:Q1/TUEdIAWmMZ1XkGxkoM/lgyGOc4=\nR:galleries.go\na:0:0:444\nZ:Q1v9uLnmnB5cymk/LkVa82lr7g2+A=\nR:galleryimages.go\na:0:0:444\nZ:Q1hOPMujcHK26vvtfZm4UMfbB6iTY=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1LY6l+dwVTJzKZHNjy0bWrYJFqjA=\nR:images.go\na:0:0:444\nZ:Q1622yr7/jLVci9RMYzVKM+UoEAkE=\nR:loganalytics.go\na:0:0:444\nZ:Q15bY8W8ccmVNqaumdpN/O3fDDSuE=\nR:models.go\na:0:0:444\nZ:Q11t99dyV6cZeHhqlu999y/txMOlI=\nR:operations.go\na:0:0:444\nZ:Q1Ba5q7pVO6g8hioMvRDUQunY7WQk=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1znqNIir+PnxEzKPsYGBMCbIfXug=\nR:resourceskus.go\na:0:0:444\nZ:Q1QrRFb4cWNFTtlQMGu5za9wGkgfw=\nR:snapshots.go\na:0:0:444\nZ:Q1upWkUSyZODbnZvduP800rtgg0t4=\nR:usage.go\na:0:0:444\nZ:Q1Kn6ji3bqEEm4sNCPYj8mnePH8W4=\nR:version.go\na:0:0:444\nZ:Q1tSbNAVLizT4BLfboGTMOOZB0ZUs=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1ES/hbo8JRUuYiU8qBrbkO/edzFg=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1JlaztxbzUpE5PH9JDKKF3WFCMbQ=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1SjXGV10PkFK0j/GYRT0rGUqNb7s=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1/w3LfOFXEblbEbmHj3S3O6WYRYU=\nR:virtualmachines.go\na:0:0:444\nZ:Q1biywpY2UCdbEJyZFyBxVKLxmLSg=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q10FG2jMcvCFWkYRpUZmDOiz8DSds=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1de2BYlH4VSP9Fy+H7RFlyW4CRWU=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1o65Gru2ttQsWQAcqr/fnnAHVEt8=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1iFjTV/wABxuwEkb744sI32JDsf4=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1kD3MeelYCGhmEA4dODfD2h2iFgk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-06-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ec3bbC2DAnzHGpw287fK7imhDNI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-10-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1k2hHnDuZKsfFBLgrgLpJ60QZNUs=\nR:availabilitysets.go\na:0:0:444\nZ:Q1riSnfA2HK7OVZnkcF0c6VrHO30g=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:disks.go\na:0:0:444\nZ:Q1a5g2ZBvif53ryr/hi2EoO982Ufo=\nR:enums.go\na:0:0:444\nZ:Q1/TUEdIAWmMZ1XkGxkoM/lgyGOc4=\nR:galleries.go\na:0:0:444\nZ:Q1v9uLnmnB5cymk/LkVa82lr7g2+A=\nR:galleryimages.go\na:0:0:444\nZ:Q1hOPMujcHK26vvtfZm4UMfbB6iTY=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1LY6l+dwVTJzKZHNjy0bWrYJFqjA=\nR:images.go\na:0:0:444\nZ:Q121IIIgC/DzYOMnqgJW0kK4Lmo/4=\nR:loganalytics.go\na:0:0:444\nZ:Q1KlDhMA3o4IekDnn9MMei1O0T1oU=\nR:models.go\na:0:0:444\nZ:Q1Cgo3BoS9cJR6tfLQY2/GvmzCbwU=\nR:operations.go\na:0:0:444\nZ:Q1kUQC6cySA5zVDwvsZkrp3E0v2KU=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q10DYD74cbYYmpd7hTZzeY3q1XFfc=\nR:resourceskus.go\na:0:0:444\nZ:Q1QrRFb4cWNFTtlQMGu5za9wGkgfw=\nR:snapshots.go\na:0:0:444\nZ:Q1upWkUSyZODbnZvduP800rtgg0t4=\nR:usage.go\na:0:0:444\nZ:Q1NgXhjJNxmi5D19hMOoYeTekkpdE=\nR:version.go\na:0:0:444\nZ:Q1lL106LFaI/Xr8rtcI3n1NePuaks=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1tTHB7XcX2VPbSNcqeI+kgNbV1bQ=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1blLWZOOOwTlgj1uZMSnO+T2eG5s=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1mWdZJ8OuNClctTpTRJsd6FUC1lY=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1KrVcyQnTNgiQV0ky1Snqju/0U/Q=\nR:virtualmachines.go\na:0:0:444\nZ:Q1ZoRFV/W9kwGBvhYOP2AVOnAX4uw=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1jtInNzUfoTAanVEp87d991Fol1M=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1Cohsa0HyX/pMqycuHXu9qzYYjhE=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q158MA2sUPOnRf+6T94c0/8MvZ1KY=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1YZvHr61aHdUM+kIUtMDJZtJqepE=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q11P41p7Yza35VmhyMoNDiuF108aY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2018-10-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SRx2d/VYNJXM+LAXwOCcKmh/gjA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-03-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zS/BRRcWdPfF8MnPSynv7wW/x6o=\nR:availabilitysets.go\na:0:0:444\nZ:Q1fsj2b5ouGj6Oj27QiRh7gZLgis4=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1fdVwg9TB56QUWGVpjnkyWHGJZ+A=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1l/mARA9rF5wbHpajzG3P6AxKsZo=\nR:disks.go\na:0:0:444\nZ:Q1XFhseW5+and/xzLsL0uL/+Xk0tI=\nR:enums.go\na:0:0:444\nZ:Q1VQVEC83RV5TSFolLYz2BiVdacKQ=\nR:galleries.go\na:0:0:444\nZ:Q1fjvbc12ylbK3Ua5i8sRoLh609YQ=\nR:galleryapplications.go\na:0:0:444\nZ:Q1zNHb2t2swiSJlpFHKPr7lp6K1kU=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q12a2cGbgTuQ81oX8fQ+295eOF54Q=\nR:galleryimages.go\na:0:0:444\nZ:Q1XmFO5ZnrhYEUgkKPWzvLXeuUIZA=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1Pe2d/1/q3AqGXx/OwCwhQHDdCIA=\nR:images.go\na:0:0:444\nZ:Q1YP7DIaxNDT7TxPjNG8H1AmH25bM=\nR:loganalytics.go\na:0:0:444\nZ:Q1jEo2Z0TECe7aKhPtUBMaUNhpPHI=\nR:models.go\na:0:0:444\nZ:Q1PwvCDCzJFF4z9jgVMZxcLSNkULE=\nR:operations.go\na:0:0:444\nZ:Q1spi9xmvdfaGCsxb3vi5CsWRdT4k=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1K01x1/qobXAoVrIFRmFgC2B5ERQ=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1J9SSZXX6HQSX8ZLQLvXlfgLaIMA=\nR:usage.go\na:0:0:444\nZ:Q1gYqsRStEGpLPVvyDn/yCSaP5GF0=\nR:version.go\na:0:0:444\nZ:Q1WvbcxoYLGRk6TR77W3g3xSzL7Is=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1NorzkUfBAsikXdsdR0PsddF8uLU=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1+oQRacPSNAONY833+KurB2/Y/XM=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1AiOyv9W7e4/1HCeg1KfDnzm2FXY=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q18pHuIBNb3agkA2+ow4J7EPI9+7M=\nR:virtualmachines.go\na:0:0:444\nZ:Q1O62sZNK4La58iFOCoQ793AzJpX4=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1Hx4sVwpt4vcx4KaXKSAaWL1HQrc=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1LSchGQaN5/U3CQdhl4RK/Xwa3r8=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1ivK3nO/kpwRsHShY5f4MIP+V29c=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1lJ0/spccsnyLws83sIm96ZxdxUY=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ET7HCu8nCS5MMSkfxJ1vXTO37ck=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-03-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YJxrn3MCo+sPqD7eQulDY580sAU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-07-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1S79NdN7eUEr3VlL+TrEpDCCXLr4=\nR:availabilitysets.go\na:0:0:444\nZ:Q1jndMH9LJcomfG+uuzdPa3t7utKc=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1o2UJ6gK9RHWTk33dj5vCU5QjZjM=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q15u4hRFM6MM97xfhwPCX7FhtmBmw=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1EE/XTx9ZTIOYDgNNumMMqS0ykvc=\nR:disks.go\na:0:0:444\nZ:Q1SZSKN5iZovLUoN1CnTO4kNKxzn4=\nR:enums.go\na:0:0:444\nZ:Q1uiszO3vy+p6kk3tzT0huOD7I1O8=\nR:galleries.go\na:0:0:444\nZ:Q1YO2GhAVuTSM10lMuf4/5e0Esso8=\nR:galleryapplications.go\na:0:0:444\nZ:Q1DVvNfP5tjqLWQUjR4kr0Yf+3Vps=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1RqInrcnkbpdbowuLQUi1cwtW6p4=\nR:galleryimages.go\na:0:0:444\nZ:Q1XjSO9qfg9Cvmb2n0d7/kXFzaYeI=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1FUrwsbOcPQnjFfBGLF0fufIJX+Y=\nR:images.go\na:0:0:444\nZ:Q1ukahZEt/n6r8OgjMfcamvjsp25E=\nR:loganalytics.go\na:0:0:444\nZ:Q1Kso1Y3XAPeB/wIvoysuzzckmxWM=\nR:models.go\na:0:0:444\nZ:Q1LmtKFixcqtN04iwSo8tij1HIfk0=\nR:operations.go\na:0:0:444\nZ:Q17m1mErqUHg4reSQ6VKejFfEmpR0=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1nBVFXLwEpK6WerXZll83XS55ONA=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q15xRks7lRVuhdyuQNPLF3kSUsUYY=\nR:usage.go\na:0:0:444\nZ:Q1jlnzRkB38ndJzWTNoEm+W/y8cI8=\nR:version.go\na:0:0:444\nZ:Q1IoJNAvCxAx54AQy5Rrf3AMR4C/s=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1XP/M/MBlm4UbJIfCU9GOqNQ/n/k=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1WXxDy3+xvnwp3d8TC5VAcwwH8ys=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1fNc7U32m2lfGvk8e9YB7kUaUYLw=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1wHMYHiC1CiNTpBe4jt7Dq+4gdCg=\nR:virtualmachines.go\na:0:0:444\nZ:Q1gPlEO402Y+qDfEjDEBpOm/UFyVo=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1wieCYAYZP/7ohs2Rq0ageA78FkI=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1mOTZWlkh/Z/OJVVnCyDCdJ3RrF4=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1Szzcvo9ZmKpHsnC+4oq2UGpFdyc=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1joBKFfpaHAKzlVtYHytK4PllRAc=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1TpUDn6h+41jfEMmhijVNfW3tl7s=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1+5nt9kpD36bQfDNlhY/Xboarp1U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-07-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1owvptfB1/GHl5oLHuP91AgQCNh0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-12-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1jHQSe3CoSVihW4X9kMTF+yxlwKU=\nR:availabilitysets.go\na:0:0:444\nZ:Q1tBjUdLKM5hJChdWiefcKlRYrfTI=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1/eOU4QcJnr9b75RQizy34IZujHQ=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1gt1LpLVFFCxFxkGG6IQtilYFCpU=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1ohCllvyqQgvOYa/46ymPXXlEAOA=\nR:disks.go\na:0:0:444\nZ:Q1yX7h+QOeg085Szk5KOPOisaBxPc=\nR:enums.go\na:0:0:444\nZ:Q1ZNegbFgHktsqSfKJw+JC+Wjewag=\nR:galleries.go\na:0:0:444\nZ:Q1FzdVwUdGaYd2XcGAw8gDOwCpw58=\nR:galleryapplications.go\na:0:0:444\nZ:Q1Di2oZNdtLijFX502JYURFEpI1ro=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1OoacRWZny8YFGSQOvxFPuyxjSnY=\nR:galleryimages.go\na:0:0:444\nZ:Q1sLz7MpiktpaNPqgmQ5SnVkMsPA4=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1fl6mTcUKQvJdDxh1KU/usXxnlnE=\nR:images.go\na:0:0:444\nZ:Q1RtYWv0RO26nba17v155RzYUti8w=\nR:loganalytics.go\na:0:0:444\nZ:Q10dTTWp1o5Sn3nUySbB7qeWjMZY4=\nR:models.go\na:0:0:444\nZ:Q1brllTclTVgGNvDVzKZ1HZ5AvJc4=\nR:operations.go\na:0:0:444\nZ:Q1Wc0VLLJW8cUmFFUq6lyo1PoeycU=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1S+Ogp9ptjVKHpNq4I5dWJ7N466s=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1UJXSM+Tlk0EvP8+87sjJeG4GWaY=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1GusdQ7kM2DdwmBI2bzx92jKVxIg=\nR:usage.go\na:0:0:444\nZ:Q1Jjfjz0kE/QSd4Wi1PpbCkNj8X3k=\nR:version.go\na:0:0:444\nZ:Q1pp9VwRLgf/xiU3kkzubavCARIbg=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1FWHXPyfEc41vNccXsaia5ttignY=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1/InEai9EHkBnn36nT1XIBl8vBcA=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1uyTmLsxJNq3EGfdjKkPyjVFZXyw=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1IFsoc9IEIbLPBk7RsV8WCcmgv0A=\nR:virtualmachines.go\na:0:0:444\nZ:Q1Fh28q0AH362d+PT/KEfH2OoXBOU=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1TFfBx87Uw3VvnO8kaTyCTCTxiV0=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1Fiy0fMRzhi33eXlh6tEjiOImH+Q=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1+WdeV+ewU5PWFDGYfuCQ8CzRXKw=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1GMDjwa/KLZvHKO01MWo6z5QvPTU=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1tOYSxcpL+g/AbzwX4Q1Lz0niNyM=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1x3Bjrx849htoffe16tTfl2MKoXI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2019-12-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10PYit6QNbchePrTrLUKSb1sgUJI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rgt10U7miMJVhhgzHa+66Yfdlxo=\nR:availabilitysets.go\na:0:0:444\nZ:Q1RwNgQHraWcu+8YCNvlUJqzg5tOw=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1mAKsBVKVzL+kI71MoEO/eil4lx8=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1hf9jqAw0X0rN3JfTlW7oMATsRvo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1Qw+uq6PhJCbS5BByZwYIE+c95SA=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1dH3BgEx/iqCoZ5d2E/WtSg94Qd8=\nR:disks.go\na:0:0:444\nZ:Q1D/YT4vmHwc0i1W70IFnvDg9F9Nc=\nR:enums.go\na:0:0:444\nZ:Q1KoYbZjqzRjYg2AH0oXdFJyQNnTg=\nR:galleries.go\na:0:0:444\nZ:Q1FzdVwUdGaYd2XcGAw8gDOwCpw58=\nR:galleryapplications.go\na:0:0:444\nZ:Q1Di2oZNdtLijFX502JYURFEpI1ro=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1OoacRWZny8YFGSQOvxFPuyxjSnY=\nR:galleryimages.go\na:0:0:444\nZ:Q1sLz7MpiktpaNPqgmQ5SnVkMsPA4=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1fl6mTcUKQvJdDxh1KU/usXxnlnE=\nR:images.go\na:0:0:444\nZ:Q1mKmEIC4g7nLKbp6BdJZbss+/21E=\nR:loganalytics.go\na:0:0:444\nZ:Q19byNBGUOmzDiQ1pDqiTukfASomE=\nR:models.go\na:0:0:444\nZ:Q1Rl0ojaFVURyKPWj0VrVS1GMiCmU=\nR:operations.go\na:0:0:444\nZ:Q1oa5o3gi8n8gcEv6XPyIXu0vhquE=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qvTKnHwvp+cFQY/DYYFVdpDWsc8=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1Zq7/5X5zPau3DWapL1hPKIKWjpE=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1o1aVpe/muOlT8TT+JZNYg7iKvck=\nR:usage.go\na:0:0:444\nZ:Q13rDdqSJ+ENPd2X0P82MzMdXU8ds=\nR:version.go\na:0:0:444\nZ:Q1nv7lbVdy9FDzM9hAtnlAsiuZ5iY=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q14CelNL4+sG0PE8ui264HTMF/cEU=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1C8WjBkcpNFgBsr8jk9NVBuSzqck=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Em6hWjR6A2MW8/xK0Q0TeXJIf5k=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1IRS+WPq44kS1UlvY28I4Av9bbq8=\nR:virtualmachines.go\na:0:0:444\nZ:Q1TuRqxloSFIdkFXGy1+MZcmo67sc=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1pIKuQu7DvVuf66PifLi3CT98Y/g=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1ZXEr177N9qM8GyOow9vmsth3Xeo=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1h4ntIyUOPqHkJcKMJMwf2gP0QLA=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Eh2uysu6iQcDlHFmZ2zDeAMCSDs=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1tRxmesHoQHyjsJP/o8vUOUWgz9Y=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1OPlUjpNrdtbl/sKkxm7PdUdF/L0=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ntp/HqoLlJ0gfgq5WcMUIrocqks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZKK5VLZ4fqXCn6Mg/HdGCHif9uo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-30/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SyYUuyrPErjMc/MO/9Kb9XL6vKc=\nR:availabilitysets.go\na:0:0:444\nZ:Q1RwNgQHraWcu+8YCNvlUJqzg5tOw=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1mAKsBVKVzL+kI71MoEO/eil4lx8=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1hf9jqAw0X0rN3JfTlW7oMATsRvo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1RzBNPx1lBewsyteyZ9QRlluqWRM=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1UgFFN9iCNCWUAxpz8WzvTIc9GGM=\nR:disks.go\na:0:0:444\nZ:Q1gx028J67HAq+iSrXySg3K+zfRpc=\nR:enums.go\na:0:0:444\nZ:Q1f5pGnCZJxba1+1Hk9c0aIbz2mCs=\nR:galleries.go\na:0:0:444\nZ:Q1FzdVwUdGaYd2XcGAw8gDOwCpw58=\nR:galleryapplications.go\na:0:0:444\nZ:Q1Di2oZNdtLijFX502JYURFEpI1ro=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1OoacRWZny8YFGSQOvxFPuyxjSnY=\nR:galleryimages.go\na:0:0:444\nZ:Q1sLz7MpiktpaNPqgmQ5SnVkMsPA4=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1fl6mTcUKQvJdDxh1KU/usXxnlnE=\nR:images.go\na:0:0:444\nZ:Q1mKmEIC4g7nLKbp6BdJZbss+/21E=\nR:loganalytics.go\na:0:0:444\nZ:Q19byNBGUOmzDiQ1pDqiTukfASomE=\nR:models.go\na:0:0:444\nZ:Q1AWvojOHIP6vSdBEATudkHui8fRc=\nR:operations.go\na:0:0:444\nZ:Q1oa5o3gi8n8gcEv6XPyIXu0vhquE=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qvTKnHwvp+cFQY/DYYFVdpDWsc8=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1wZw6Ye92NfJjCpp8/Q3WWDVJKcQ=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1o1aVpe/muOlT8TT+JZNYg7iKvck=\nR:usage.go\na:0:0:444\nZ:Q13rDdqSJ+ENPd2X0P82MzMdXU8ds=\nR:version.go\na:0:0:444\nZ:Q1I8tdyCUO1fsRZpexV5K4OPaqejw=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q14CelNL4+sG0PE8ui264HTMF/cEU=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1C8WjBkcpNFgBsr8jk9NVBuSzqck=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Em6hWjR6A2MW8/xK0Q0TeXJIf5k=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1IRS+WPq44kS1UlvY28I4Av9bbq8=\nR:virtualmachines.go\na:0:0:444\nZ:Q1TuRqxloSFIdkFXGy1+MZcmo67sc=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1pIKuQu7DvVuf66PifLi3CT98Y/g=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1ZXEr177N9qM8GyOow9vmsth3Xeo=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1h4ntIyUOPqHkJcKMJMwf2gP0QLA=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Eh2uysu6iQcDlHFmZ2zDeAMCSDs=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1tRxmesHoQHyjsJP/o8vUOUWgz9Y=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1OPlUjpNrdtbl/sKkxm7PdUdF/L0=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ntp/HqoLlJ0gfgq5WcMUIrocqks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-06-30/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kTS3S9H/TbO0vZLN2eOA717O8xI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-12-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1KHA3g+ULyOqQnlnxG4uSJLV8cn4=\nR:_meta.json\na:0:0:444\nZ:Q1SYU419yq5TcSeC4FDBtAdoWUQdQ=\nR:availabilitysets.go\na:0:0:444\nZ:Q145k5/Qhrwg5GfBGkRntMmj6BRbk=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1K+dcjO4cVG1gZ3fVME+uCwGIgGE=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1p1+/hi1t0TAyQ0o27CgqtqPDdbQ=\nR:diskaccesses.go\na:0:0:444\nZ:Q1tywZcOMJKoX+EH2kkTEGqMaIhXQ=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1Ob4R2/UHSy4mFtwOCekwMk0r6MI=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1nF3C/w1DNRldnMxJtRmz/2Gepx4=\nR:disks.go\na:0:0:444\nZ:Q1V67zS40dXS4JnUjMG5e01Fdv6QQ=\nR:enums.go\na:0:0:444\nZ:Q1FC/G6icz539bcyeSh7ldwnJm6HA=\nR:galleries.go\na:0:0:444\nZ:Q1FzdVwUdGaYd2XcGAw8gDOwCpw58=\nR:galleryapplications.go\na:0:0:444\nZ:Q1Di2oZNdtLijFX502JYURFEpI1ro=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1CL8sekg0xX0o5wgbb8KLv40R65k=\nR:galleryimages.go\na:0:0:444\nZ:Q1sLz7MpiktpaNPqgmQ5SnVkMsPA4=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1fl6mTcUKQvJdDxh1KU/usXxnlnE=\nR:images.go\na:0:0:444\nZ:Q1ZfmXyej6lrS/AjFcTHhLGi5Yqu4=\nR:loganalytics.go\na:0:0:444\nZ:Q1s3yAvabPc+AVK/tIgF4HXGsZQUk=\nR:models.go\na:0:0:444\nZ:Q1q2Lq2d7EDzNO1vPkgXSceFgZhtA=\nR:operations.go\na:0:0:444\nZ:Q1sFBu88EjmY5yH83QBZ4DSXUfd3s=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1s8N0XoygsvvqntC4ebt1XaLwfiY=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1wQPJAfBN5UjBXs/u66u9rKCAqvE=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1XgovfEUp9HdIHU9c15AHft/gZ10=\nR:usage.go\na:0:0:444\nZ:Q1IQsNqJcCVa/xh16V3dYFNWKYh1s=\nR:version.go\na:0:0:444\nZ:Q1qYRXl3AgtEZ1cVfCkjDmG6wZTkI=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q18MOwN2hjxhpmBC9S9gd9r6jEDoI=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1U5dzCZa8f8YUj544WPPu9vKJnUM=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1VVouHdo/nsxfjzEc6liyBryMhKM=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1mqVmsmKQT2BT7IpIy6upP3DVKk8=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1JgG71rq8mBnB0SJDLUnqglrCmrM=\nR:virtualmachines.go\na:0:0:444\nZ:Q1BujlWel/U+ag06j6g2Dw8CXPIRQ=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1mek4Q3c3gfFboG3bf1JOzT/W/BY=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q13+lzjdt/siWInpKFTfdFbLEa/f0=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1m9iGs3NFTYcwtC7lvtCSJH+6ad8=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1VPmPQIaRcCRRF31CdLl416k7VRg=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1vxqRjLI/1sZiKxWPBska5OVyUpE=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q17O7+eOKVAMe0sdWZi1cjSrKXsQM=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1llotLD4cYtIgT1ORs/OLzNUun5s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2020-12-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SJV3MXfnuc/U+JJiRyyj0FGKE/s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-03-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1t8bjSYvKN3M/Ed2C/98LBBl+eGI=\nR:availabilitysets.go\na:0:0:444\nZ:Q1V74fs64lq1GUQbXns3LLHwNrNok=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1ixmGpJEgYvBQIY9PZeHmYVJ5NdI=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1FURwQ3zBHbVPC4g1RXvjd8Y5xIs=\nR:diskaccesses.go\na:0:0:444\nZ:Q1tywZcOMJKoX+EH2kkTEGqMaIhXQ=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1Ob4R2/UHSy4mFtwOCekwMk0r6MI=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1QydZewWgMcUGGdsURT5ugbcCXWE=\nR:disks.go\na:0:0:444\nZ:Q1V67zS40dXS4JnUjMG5e01Fdv6QQ=\nR:enums.go\na:0:0:444\nZ:Q1jMDDFIPb/QQAn3vbdySGMFnkx6M=\nR:galleries.go\na:0:0:444\nZ:Q1beNzoDgW8ym/ddoT5bs2H4nSGHo=\nR:galleryapplications.go\na:0:0:444\nZ:Q1fhYCpdlbzOhi/sIeDLEolfIx7uA=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1weCezqn4Ci6Sm49chPfk+lmojbQ=\nR:galleryimages.go\na:0:0:444\nZ:Q1Z/LbxHBem3f1zkTjwW7PW/fr9As=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1XYw0hCmYakpPNJrhZjOP7b2vAYA=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1cCT8gMmSHAXCFqBLW2/beCWvlJ4=\nR:images.go\na:0:0:444\nZ:Q1KV0AO3c+gLcRoSKgH8sqXjueGoQ=\nR:loganalytics.go\na:0:0:444\nZ:Q1c4FX5gO42UlJNNcRAx28OYFD8FU=\nR:models.go\na:0:0:444\nZ:Q1SGdlr4GFh10S0HcWFZ2ukt9XDgA=\nR:operations.go\na:0:0:444\nZ:Q1dmIxFa06T4qJ9X2unKfKOYVcOC8=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1Jdz1/WQFnObMsADGte6mwLqnCOE=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:restorepointcollections.go\na:0:0:444\nZ:Q12ZEu3R9iprlRBWOiYnXN4tIaHk0=\nR:restorepoints.go\na:0:0:444\nZ:Q1sw/jFkk+C1DYArJnOgxhq9o+TSM=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1sbAoNvdyh6nSYW7WLEejyBrL0Sw=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1N4MOsnrOsu6coXgQJ1X+ZWEm8dI=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q12Opv+3dnsAJbsdPAnsIZyKTYato=\nR:snapshots.go\na:0:0:444\nZ:Q1wQPJAfBN5UjBXs/u66u9rKCAqvE=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1sq745Vb10cYKSJmJmPyo2T+hofs=\nR:usage.go\na:0:0:444\nZ:Q1jAM+VFx37Hr3p0z4gg0ZYxE3bNY=\nR:version.go\na:0:0:444\nZ:Q1Z2aoj/7lmnFG6h2+60IirCZldDg=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1xIKONvROaBhmVq6P/9H8C5wRniI=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1JppH8YbJYcZVJyq3uGMrMkxnVZ0=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1qc0yMtGmCso79cLTwGCUphQNco0=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1oyD0c5AhnVfiwxCSs5v/FTCQ3lM=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1rijItEMI44o1CdeBPB8KZIv2oPM=\nR:virtualmachines.go\na:0:0:444\nZ:Q1EAcmSFkFvY4QEb8JQVri3dAIWPc=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1t/7MdmFRZ77T3ARiwVx/g7eciv4=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1MrmnFlIVXIed9NpFIaK3pG2a9pk=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1VJy/261jS6iY+hNqSz6dXJAxACY=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Ql/mxi/Byds6gmwisfYZYSfrDbk=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1Ih+GY/85oYl4MczDVm1SCKndYPM=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1vWr7jcoszC/OETl9SAnDnFq/BCs=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1zjrQYRm9vQTm1ZzEhlQQtid1770=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-03-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1i2n9YZtYDto/RIGWIJtXiZhRJRE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-04-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1PvvexXQX2Jq7/GaCFAFzC4pTWBg=\nR:availabilitysets.go\na:0:0:444\nZ:Q1quI7mqWL11lmYX639NgKtIEYAuI=\nR:capacityreservationgroups.go\na:0:0:444\nZ:Q1GMAHplVBP3CaVvWCnLI6xD6Q1Ks=\nR:capacityreservations.go\na:0:0:444\nZ:Q1kPbjzsLzXTKbF1WNY28AZS2dLHA=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q17li1UNfgD3ZgrtSoG+pw3svngAM=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1cyOo/YS3fhsQKmuOHaQtlpQTefo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1tywZcOMJKoX+EH2kkTEGqMaIhXQ=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1Ob4R2/UHSy4mFtwOCekwMk0r6MI=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1nF3C/w1DNRldnMxJtRmz/2Gepx4=\nR:disks.go\na:0:0:444\nZ:Q1V67zS40dXS4JnUjMG5e01Fdv6QQ=\nR:enums.go\na:0:0:444\nZ:Q1/L2kDSpUfUQ7Sacm2FivbSa6J9A=\nR:galleries.go\na:0:0:444\nZ:Q1beNzoDgW8ym/ddoT5bs2H4nSGHo=\nR:galleryapplications.go\na:0:0:444\nZ:Q1fhYCpdlbzOhi/sIeDLEolfIx7uA=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1weCezqn4Ci6Sm49chPfk+lmojbQ=\nR:galleryimages.go\na:0:0:444\nZ:Q1Z/LbxHBem3f1zkTjwW7PW/fr9As=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1XYw0hCmYakpPNJrhZjOP7b2vAYA=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1cCT8gMmSHAXCFqBLW2/beCWvlJ4=\nR:images.go\na:0:0:444\nZ:Q1/+RtPTn1jZl7FWicDH/9FhrGSJ8=\nR:loganalytics.go\na:0:0:444\nZ:Q180seEuhLsSOMTh/t4+J4xi0cyi4=\nR:models.go\na:0:0:444\nZ:Q13FW4eQVtijZNjqktyw4vEdY3/Xo=\nR:operations.go\na:0:0:444\nZ:Q1UV3Tu9P1BMqGxqku+Ny/08T/gVg=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1m5eFF2kVyt0/Y1oNqhZUSiz+oiA=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:restorepointcollections.go\na:0:0:444\nZ:Q1kKZ0PPT8NrspNiB5jJac+nga7j4=\nR:restorepoints.go\na:0:0:444\nZ:Q1pCzvMBxelEuJWAAeOvqB9rRTmfk=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1sbAoNvdyh6nSYW7WLEejyBrL0Sw=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1N4MOsnrOsu6coXgQJ1X+ZWEm8dI=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q12Opv+3dnsAJbsdPAnsIZyKTYato=\nR:snapshots.go\na:0:0:444\nZ:Q1wQPJAfBN5UjBXs/u66u9rKCAqvE=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1dlXGMakPNXMLJ8SALB7NERpaFzE=\nR:usage.go\na:0:0:444\nZ:Q1TzWsmTAozpBeiba1hcBaPyE0Tuk=\nR:version.go\na:0:0:444\nZ:Q1vNbYoUlO5qiF/h7dFhqOLTGvluY=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1u2cfcLJd9ppmCGuJFAwJiHrwEXE=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1N5Rg9UjRqrEj7IncLFw4FOrzxO8=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1XY++YVbcD8V6cVZpbODoTu04A9E=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1Y1VSi6KyDK+T2EkerX7SVERr6jE=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1+v0PF3f15WQjt/t5Dq7kTlUFWvI=\nR:virtualmachines.go\na:0:0:444\nZ:Q1gBBeGEw1D2GMgLsAS1ouJRq5jxQ=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1KtKYr5cs3gIoIQaC0BgITvnyLek=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1Puo2I1lkjF/zZPOTPqtZ0DEBU2E=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1Fez9sATFZr2IEir/4mQ15TyvaYQ=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Nb5Ea+9+9Xa/f1rXqao0WqWHkbY=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q14qbMvVh5T91OYyEkt3Y4ISGvTBg=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1GlDCv/61t0PaKq55ntdMhUEFHkE=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1F9fH8eaov3go1A3WRtYEnUnryqU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-04-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BvK+2vzM0jJxD6md7QyVDpwfr2A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-07-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FralOcf62ZfpXli+x+9uXxCI2eo=\nR:availabilitysets.go\na:0:0:444\nZ:Q17PpOJbl67Ast2fB0c5RZ5xbwJ2c=\nR:capacityreservationgroups.go\na:0:0:444\nZ:Q1/Kvknb84ie8+s6YX9du7r98w904=\nR:capacityreservations.go\na:0:0:444\nZ:Q13jdnkeCUBJ6/U+3+b1ViGAfGqS4=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:communitygalleries.go\na:0:0:444\nZ:Q1A54s5obdoSB23J5mLdaIfWrpllU=\nR:communitygalleryimages.go\na:0:0:444\nZ:Q1HFs6Iqe7dQ2xzABFOFbHgvRHiHA=\nR:communitygalleryimageversions.go\na:0:0:444\nZ:Q1hpxBTRKCKxm2RqDxyLOcIhBQpLs=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1RrE2ExXYDeG+bXxtaw0Fx1OSWG0=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1fQM/vEiBHcBBBgCTUIM1dnyxJQw=\nR:diskaccesses.go\na:0:0:444\nZ:Q1b4rr5HL4/J5VU0VicYWLDtGv17M=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1jT6dC5lZRnNBP6b/CWORmPZ/MIE=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1FHx87GVFVCCuX4Jn7E8F0/J5bJY=\nR:disks.go\na:0:0:444\nZ:Q11uycenipgod9XLQY+75gS3ExwGM=\nR:enums.go\na:0:0:444\nZ:Q1H2BD2dKUi6EcdrogcTAtUFSwjX8=\nR:galleries.go\na:0:0:444\nZ:Q1UTH+OtlBYFTKIVJrKkKZr/9ldGs=\nR:galleryapplications.go\na:0:0:444\nZ:Q1SQWMpkwD34Ejb+R7onstHKOlnoY=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1y66pkAxha7z8BTXf1Bf6OdMRM8g=\nR:galleryimages.go\na:0:0:444\nZ:Q176I/rfoOykqt1oHliNN9JbkXJRc=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1heQPQiiIuC4vs6Z3WyEgrs9qhCg=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1Qu4eNhOVMk8G55eOalaODt6W8IY=\nR:images.go\na:0:0:444\nZ:Q1177I94VCrbkauViKSH/LqFhXZJo=\nR:loganalytics.go\na:0:0:444\nZ:Q1ja6qRycqiIxpYtFIFlGprxXr3ZI=\nR:models.go\na:0:0:444\nZ:Q1uiJ1WGqarvLIWGrM5Grst02WYyY=\nR:operations.go\na:0:0:444\nZ:Q1EYDqzYsJ8WjGRDPyKi2oQpIa4Gg=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qx7pTQjOT5rZMT67IFxVoBVXChU=\nR:resourceskus.go\na:0:0:444\nZ:Q1ldFgqe140/pyiBcw6++crEecvls=\nR:restorepointcollections.go\na:0:0:444\nZ:Q1hw9upGZvxYWlmIkxevA9PYYFExY=\nR:restorepoints.go\na:0:0:444\nZ:Q1gkESVdg7uV1g2uMZD5MqfrOXOkY=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1HVYca2c2sHpWiDKBiMvB6woI24s=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1aG752OF/Qz7b8idR3kfk+RbDOb4=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q1wjGyB24WKJtRRkwpQtPiMRvG0vc=\nR:snapshots.go\na:0:0:444\nZ:Q1nN3geSNZESp7VVlcMKs1I2dHE6o=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1rZe/YYg6d5qa9KUNPEnfTyrjipg=\nR:usage.go\na:0:0:444\nZ:Q1TWR0gh/AI9kLipPnrnfAzySKAqk=\nR:version.go\na:0:0:444\nZ:Q1D39oRYBM21/pntBpQBQJzmLGfZM=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1M7Slo0ltD9Wr+8iqDUO5ao5liIg=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q17EPuaXnQCOr1Xg2VZBHFosr8n5Q=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1H8+eBaeH4PTAs9mGlbVrayHDKLo=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1kLO775W3Q791Uz98CLIC/rNvzvU=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1L0DOkzOPDvUci9sQl7gCOEKavM8=\nR:virtualmachines.go\na:0:0:444\nZ:Q1THAcCmzsJSQj1UIEGKesFkLBpOk=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1p0Hq9lm+qsSbZyW2dHTXmWCfKKA=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1+HL2NPZm5YH1vKxdDPW6mXK3Emk=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1pQ6sgmvgvTf5V3SRgnI/eXHjRms=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1o/g6m3Lk0S8VE7AYYF/6JEKlSO4=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1TH1zmBub0aLP6P35JMfwrgFi8Dw=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1ZoJsnBPf6yXJG0lUTJDj5vpP14I=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q11DKxy+D9fPPN3FN0/5NKQrELMq8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-07-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1eWNVsyETqigX2AJYQMHMKVu1ZBk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-08-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1S/FwAARgp+J6560KtNSNfLf4iG8=\nR:availabilitysets.go\na:0:0:444\nZ:Q17PpOJbl67Ast2fB0c5RZ5xbwJ2c=\nR:capacityreservationgroups.go\na:0:0:444\nZ:Q1/Kvknb84ie8+s6YX9du7r98w904=\nR:capacityreservations.go\na:0:0:444\nZ:Q13jdnkeCUBJ6/U+3+b1ViGAfGqS4=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:communitygalleries.go\na:0:0:444\nZ:Q1A54s5obdoSB23J5mLdaIfWrpllU=\nR:communitygalleryimages.go\na:0:0:444\nZ:Q1HFs6Iqe7dQ2xzABFOFbHgvRHiHA=\nR:communitygalleryimageversions.go\na:0:0:444\nZ:Q1hpxBTRKCKxm2RqDxyLOcIhBQpLs=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1RrE2ExXYDeG+bXxtaw0Fx1OSWG0=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1fQM/vEiBHcBBBgCTUIM1dnyxJQw=\nR:diskaccesses.go\na:0:0:444\nZ:Q1tsrIu1mob1JMJmpUk7iLLN8NFYs=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1j9awiSYSghpfZsLy9v9bB66xurY=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1Yg+pxC7Y5sj94I3o/2nYlvJaCQk=\nR:disks.go\na:0:0:444\nZ:Q1UNd+/ti29E87YR8uhHQIL6HJdiQ=\nR:enums.go\na:0:0:444\nZ:Q1a/QJR3Atnk2O8UtfOLCHoYRdjlw=\nR:galleries.go\na:0:0:444\nZ:Q1UTH+OtlBYFTKIVJrKkKZr/9ldGs=\nR:galleryapplications.go\na:0:0:444\nZ:Q1SQWMpkwD34Ejb+R7onstHKOlnoY=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1y66pkAxha7z8BTXf1Bf6OdMRM8g=\nR:galleryimages.go\na:0:0:444\nZ:Q176I/rfoOykqt1oHliNN9JbkXJRc=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1heQPQiiIuC4vs6Z3WyEgrs9qhCg=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1Qu4eNhOVMk8G55eOalaODt6W8IY=\nR:images.go\na:0:0:444\nZ:Q1177I94VCrbkauViKSH/LqFhXZJo=\nR:loganalytics.go\na:0:0:444\nZ:Q1ja6qRycqiIxpYtFIFlGprxXr3ZI=\nR:models.go\na:0:0:444\nZ:Q1p5/AXlZj54qbTRgNA7PFhR1GdUs=\nR:operations.go\na:0:0:444\nZ:Q1EYDqzYsJ8WjGRDPyKi2oQpIa4Gg=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qx7pTQjOT5rZMT67IFxVoBVXChU=\nR:resourceskus.go\na:0:0:444\nZ:Q1ldFgqe140/pyiBcw6++crEecvls=\nR:restorepointcollections.go\na:0:0:444\nZ:Q1hw9upGZvxYWlmIkxevA9PYYFExY=\nR:restorepoints.go\na:0:0:444\nZ:Q1gkESVdg7uV1g2uMZD5MqfrOXOkY=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1HVYca2c2sHpWiDKBiMvB6woI24s=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1aG752OF/Qz7b8idR3kfk+RbDOb4=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q1wjGyB24WKJtRRkwpQtPiMRvG0vc=\nR:snapshots.go\na:0:0:444\nZ:Q1Cq11/CTtaLByO95X5njSguqcZJY=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1rZe/YYg6d5qa9KUNPEnfTyrjipg=\nR:usage.go\na:0:0:444\nZ:Q1TWR0gh/AI9kLipPnrnfAzySKAqk=\nR:version.go\na:0:0:444\nZ:Q1SIdwMlHWa1t90+s6VANu94ekqh4=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1M7Slo0ltD9Wr+8iqDUO5ao5liIg=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q17EPuaXnQCOr1Xg2VZBHFosr8n5Q=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1H8+eBaeH4PTAs9mGlbVrayHDKLo=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1kLO775W3Q791Uz98CLIC/rNvzvU=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1L0DOkzOPDvUci9sQl7gCOEKavM8=\nR:virtualmachines.go\na:0:0:444\nZ:Q1c6hFtAHhwgTKdveDWaouynZVnbs=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1p0Hq9lm+qsSbZyW2dHTXmWCfKKA=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1+HL2NPZm5YH1vKxdDPW6mXK3Emk=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1pQ6sgmvgvTf5V3SRgnI/eXHjRms=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1o/g6m3Lk0S8VE7AYYF/6JEKlSO4=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1TH1zmBub0aLP6P35JMfwrgFi8Dw=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1ZoJsnBPf6yXJG0lUTJDj5vpP14I=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q11DKxy+D9fPPN3FN0/5NKQrELMq8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-08-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pwxJOmOJzaymvEWBFuRanxv7xJU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-11-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1tXRHgCnYP7tL9U4VKEGuRo3CRpM=\nR:_meta.json\na:0:0:444\nZ:Q1HOP7I9hWNdFgfYcs9eEHUSNBBuY=\nR:availabilitysets.go\na:0:0:444\nZ:Q1sGIkpLiIxPmNSGKsAwnXsG9LUTY=\nR:capacityreservationgroups.go\na:0:0:444\nZ:Q1Ya7cCil+gQQei+r+08RQ9uT8Fco=\nR:capacityreservations.go\na:0:0:444\nZ:Q1uni37mLfYYmTBRFPZ72oJWpq0+c=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:communitygalleries.go\na:0:0:444\nZ:Q1A54s5obdoSB23J5mLdaIfWrpllU=\nR:communitygalleryimages.go\na:0:0:444\nZ:Q1HFs6Iqe7dQ2xzABFOFbHgvRHiHA=\nR:communitygalleryimageversions.go\na:0:0:444\nZ:Q1hpxBTRKCKxm2RqDxyLOcIhBQpLs=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1rPdEz6CpJSvbcbFJe/vVs4mkojk=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1BI04A7DaEA5vLEFXLuept8QluUo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1tsrIu1mob1JMJmpUk7iLLN8NFYs=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1j9awiSYSghpfZsLy9v9bB66xurY=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1Yg+pxC7Y5sj94I3o/2nYlvJaCQk=\nR:disks.go\na:0:0:444\nZ:Q1UNd+/ti29E87YR8uhHQIL6HJdiQ=\nR:enums.go\na:0:0:444\nZ:Q1l7tYH+gipAKHCoYSONJQDN2ExGM=\nR:galleries.go\na:0:0:444\nZ:Q1XnqzuUqieC2kW28xA9sGAjk8J2E=\nR:galleryapplications.go\na:0:0:444\nZ:Q11aZckd02DOTizT9ef8Ff+tNMknM=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1h52iKHqi296FHJHorizIc1ynVws=\nR:galleryimages.go\na:0:0:444\nZ:Q19zpcVGzmWHTY9wZ7JLuewrWnuXo=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1H2Ntj0bQcVUkthAWlYKkI9tAUiw=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1Q7V9siPDRjpELPR1id1HwJNM62w=\nR:images.go\na:0:0:444\nZ:Q1pC9vXQqmI/mbbSbwAow9ZicolqQ=\nR:loganalytics.go\na:0:0:444\nZ:Q143GetAEFEbAQgP2ssA37O2Sh3n4=\nR:models.go\na:0:0:444\nZ:Q1J0E6+ZYmn811kwXakFX+IW6xD08=\nR:operations.go\na:0:0:444\nZ:Q17Kk/ZuoqYAl07QrZkfZKEGlk2TY=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1lHT+I1Nu+YCpA+X2gzjAKUmrsVs=\nR:resourceskus.go\na:0:0:444\nZ:Q1ldFgqe140/pyiBcw6++crEecvls=\nR:restorepointcollections.go\na:0:0:444\nZ:Q1JXDCSB2UTJZgCY2d+8+FEdpAowA=\nR:restorepoints.go\na:0:0:444\nZ:Q1k+ApB2eCxBmfxQNhVtH9W508j5U=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1HVYca2c2sHpWiDKBiMvB6woI24s=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1aG752OF/Qz7b8idR3kfk+RbDOb4=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q1wjGyB24WKJtRRkwpQtPiMRvG0vc=\nR:snapshots.go\na:0:0:444\nZ:Q1Cq11/CTtaLByO95X5njSguqcZJY=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1bhpKTBjd10pS6kxF/hO2V4h8I58=\nR:usage.go\na:0:0:444\nZ:Q1c3M2O9qZnBBIWvHOFgANwWwmPlo=\nR:version.go\na:0:0:444\nZ:Q1jvU4Mu7uuuqf8vQt1KBUPWh1F4E=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1jM5O5SEJR2+wjRjw67fXU3paR10=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1tBxOddo+u4eAith34vLO4ceEd3c=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Av+7fp+Gz33AaeI3gc2JZKgGUNQ=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1NH2c4YvGjl79a1Dt+TOiJVxrczk=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1VyLFAz2H6k1eaIP6FHkEJhME+c0=\nR:virtualmachines.go\na:0:0:444\nZ:Q1zgsjL2rY0PaELR3mIKZKlxZ3hyc=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1vCexg5AyN5ogpe0vvZ8gDYAtalw=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1wor6pKbjBocoVEuiwIZA0yiM+sU=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1QKRVfYVKHU6SxkJEPkluRvIXy1k=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Q1Qihh1R0xdQOj5shmawXoi/3Ko=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1Xw01qKb30nPd5tuhkJiC2cJ7cHE=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1Udq/FKY7mCyp/5P+TMO493lPoBI=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1UXr8DWvytq4dR3+7llYoPJxCO/I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-11-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1f9cKuUXilLwoxOjDOSDW4j/ccgk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-12-01/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16KnA4xeygJrb8VbknRnxEcyY+rw=\nR:availabilitysets.go\na:0:0:444\nZ:Q1sGIkpLiIxPmNSGKsAwnXsG9LUTY=\nR:capacityreservationgroups.go\na:0:0:444\nZ:Q1Ya7cCil+gQQei+r+08RQ9uT8Fco=\nR:capacityreservations.go\na:0:0:444\nZ:Q1uni37mLfYYmTBRFPZ72oJWpq0+c=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceoperatingsystems.go\na:0:0:444\nZ:Q1a1313Kx8YqWfRnjJUWewyk53fbA=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1NHOYTXKPrUOi8xwf94LfnBkFeww=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1sFxAXvXIztCsrlMSWvbpGR9mJ1M=\nR:cloudservices.go\na:0:0:444\nZ:Q1aMs8rOJWsdydCfzmM7r7Qxpc9M0=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q1NAEVDQfXu97Rz5WAXxaS/nT3m2Y=\nR:communitygalleries.go\na:0:0:444\nZ:Q1A54s5obdoSB23J5mLdaIfWrpllU=\nR:communitygalleryimages.go\na:0:0:444\nZ:Q1HFs6Iqe7dQ2xzABFOFbHgvRHiHA=\nR:communitygalleryimageversions.go\na:0:0:444\nZ:Q1hpxBTRKCKxm2RqDxyLOcIhBQpLs=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1rPdEz6CpJSvbcbFJe/vVs4mkojk=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1BI04A7DaEA5vLEFXLuept8QluUo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1CAaoFqvDgbMqOc7uzhI116t3st8=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1Bm+7KucjXf2mvAhw5ng8lGg30Ig=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1k+Pta9zpHbe/j0dXOrhwT2eiSXQ=\nR:disks.go\na:0:0:444\nZ:Q1jaQnCwMak4DqIimeE6YiAHeHfPU=\nR:enums.go\na:0:0:444\nZ:Q1YjucViQRGJPpiNr+6zHFFvQFC3Q=\nR:galleries.go\na:0:0:444\nZ:Q1XnqzuUqieC2kW28xA9sGAjk8J2E=\nR:galleryapplications.go\na:0:0:444\nZ:Q11aZckd02DOTizT9ef8Ff+tNMknM=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1h52iKHqi296FHJHorizIc1ynVws=\nR:galleryimages.go\na:0:0:444\nZ:Q19zpcVGzmWHTY9wZ7JLuewrWnuXo=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1H2Ntj0bQcVUkthAWlYKkI9tAUiw=\nR:gallerysharingprofile.go\na:0:0:444\nZ:Q1Q7V9siPDRjpELPR1id1HwJNM62w=\nR:images.go\na:0:0:444\nZ:Q1pC9vXQqmI/mbbSbwAow9ZicolqQ=\nR:loganalytics.go\na:0:0:444\nZ:Q143GetAEFEbAQgP2ssA37O2Sh3n4=\nR:models.go\na:0:0:444\nZ:Q1jW9n3SWYQG0sJ02RsuVW2x7mcJM=\nR:operations.go\na:0:0:444\nZ:Q17Kk/ZuoqYAl07QrZkfZKEGlk2TY=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1lHT+I1Nu+YCpA+X2gzjAKUmrsVs=\nR:resourceskus.go\na:0:0:444\nZ:Q1ldFgqe140/pyiBcw6++crEecvls=\nR:restorepointcollections.go\na:0:0:444\nZ:Q1JXDCSB2UTJZgCY2d+8+FEdpAowA=\nR:restorepoints.go\na:0:0:444\nZ:Q1k+ApB2eCxBmfxQNhVtH9W508j5U=\nR:sharedgalleries.go\na:0:0:444\nZ:Q1HVYca2c2sHpWiDKBiMvB6woI24s=\nR:sharedgalleryimages.go\na:0:0:444\nZ:Q1aG752OF/Qz7b8idR3kfk+RbDOb4=\nR:sharedgalleryimageversions.go\na:0:0:444\nZ:Q1wjGyB24WKJtRRkwpQtPiMRvG0vc=\nR:snapshots.go\na:0:0:444\nZ:Q1za0xrg8BJX8UfDxMSBfTqtst8Po=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1bhpKTBjd10pS6kxF/hO2V4h8I58=\nR:usage.go\na:0:0:444\nZ:Q1c3M2O9qZnBBIWvHOFgANwWwmPlo=\nR:version.go\na:0:0:444\nZ:Q1oAtF2i5E/GDO/lOI5qLS246qKvA=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1jM5O5SEJR2+wjRjw67fXU3paR10=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1tBxOddo+u4eAith34vLO4ceEd3c=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Av+7fp+Gz33AaeI3gc2JZKgGUNQ=\nR:virtualmachineimagesedgezone.go\na:0:0:444\nZ:Q1NH2c4YvGjl79a1Dt+TOiJVxrczk=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1VyLFAz2H6k1eaIP6FHkEJhME+c0=\nR:virtualmachines.go\na:0:0:444\nZ:Q1zgsjL2rY0PaELR3mIKZKlxZ3hyc=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1vCexg5AyN5ogpe0vvZ8gDYAtalw=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1wor6pKbjBocoVEuiwIZA0yiM+sU=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1QKRVfYVKHU6SxkJEPkluRvIXy1k=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Q1Qihh1R0xdQOj5shmawXoi/3Ko=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1Xw01qKb30nPd5tuhkJiC2cJ7cHE=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1Udq/FKY7mCyp/5P+TMO493lPoBI=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1UXr8DWvytq4dR3+7llYoPJxCO/I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/compute/mgmt/2021-12-01/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1di2FG8egWW4SMUBQfhZ0iVJ2fA8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/confluent\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/confluent/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/confluent/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/confluent/mgmt/2020-03-01/confluent\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yIBkqsXopo4fcRd3/KwKEemp2uI=\nR:client.go\na:0:0:444\nZ:Q1kk9bQpzoEW7+zr/QcPWhq0G0oTU=\nR:enums.go\na:0:0:444\nZ:Q1I4stV+vDE5mwKGaUdTlPzUXpYqM=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1IcurgNYpfGb8n5O9ZDb/qILj16Y=\nR:models.go\na:0:0:444\nZ:Q1vZLOTnflNCZTPlbuLQDmqFwoJr8=\nR:organization.go\na:0:0:444\nZ:Q1m3GhSDLEVw0eUKYbktXKIMhN34s=\nR:organizationoperations.go\na:0:0:444\nZ:Q1CEKd2UPGrO1otCyPK4/Q4mBAYyw=\nR:version.go\na:0:0:444\nZ:Q1EveZD96rO/LsGkeO1Mmkj135QDo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/confluent/mgmt/2020-03-01/confluent/confluentapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11ugLitM0Gd+S/IpAPjL1QAsTQNU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2017-11-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2017-11-30/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1LjEq9jLa2SUHLrrRGP4gZMxzRgk=\nR:client.go\na:0:0:444\nZ:Q1040Ze7fMo+INYwCIhK/76zLSqOM=\nR:enums.go\na:0:0:444\nZ:Q1JNAeqRX3YhVQ7Eq5xjUHD+7m4b8=\nR:models.go\na:0:0:444\nZ:Q1AIHfM+8gmqqbptOnn7QX/OhJC98=\nR:operations.go\na:0:0:444\nZ:Q1aWnfffXCqX6qhn6fiLoMgDDwTQU=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1BJ7G6TYoTx60d6aDtMhHr9w80lI=\nR:reservationssummaries.go\na:0:0:444\nZ:Q19Xuw5OUSF7EIM6oWH4XKvj8Cbvg=\nR:usagedetails.go\na:0:0:444\nZ:Q1mYSWtx9S+n5wS5ljOQFL7ZOmjYg=\nR:version.go\na:0:0:444\nZ:Q15152nqtNtJA8wXfIpXnm8HMys8Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2017-11-30/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Dggf0jKppGKK4yxRYUWOgtOxZkw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-01-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-01-31/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vvitXPuPEfHY76mRWVNfc9A5Wd4=\nR:budgets.go\na:0:0:444\nZ:Q1DmB/7nGUBnCRn64bTWrsJCxNcO4=\nR:client.go\na:0:0:444\nZ:Q1MPb0FSmeB1/6D7GZnFDRU5iWJIs=\nR:enums.go\na:0:0:444\nZ:Q1GI99EBeWZQbVxlJU/ObWe4DMKcQ=\nR:marketplaces.go\na:0:0:444\nZ:Q1ZOnxm43Z6BSvUtvcHPe2Q1eAY38=\nR:models.go\na:0:0:444\nZ:Q1szbebJhRgIihcijGcdqmg877Ph8=\nR:operations.go\na:0:0:444\nZ:Q1l2nLDDwVrvyAxG+jiNWMmnddmt4=\nR:pricesheet.go\na:0:0:444\nZ:Q1uiuQG14z7vRuC+tUjur5uJgR5qI=\nR:reservationsdetails.go\na:0:0:444\nZ:Q12MmRCfApWB80z/H/zzwA0aYtKkQ=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1Cc03w1EXuY0JGKxSU0X0RjpS//o=\nR:usagedetails.go\na:0:0:444\nZ:Q1EDM54vhgctf2YyTVb34+yZZH8SE=\nR:version.go\na:0:0:444\nZ:Q1veC8ipSrqn3kSeQ23kxAU3xtiiw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-01-31/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1u31huKdZxREelJAQYYm+OIJJi/s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-03-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-03-31/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12OMsWdQGo15mNNBrcAMX1nCzLMw=\nR:budgets.go\na:0:0:444\nZ:Q1y5qmaWOtLHlMG4sIMXaDiJeFStc=\nR:client.go\na:0:0:444\nZ:Q1F/hV7YIfJxZcrfyYmZBnEJiIjhE=\nR:costtags.go\na:0:0:444\nZ:Q1hPrqj1Xi5PAxmQ21N5XHf3L0ju4=\nR:enums.go\na:0:0:444\nZ:Q1jGwl4ysgDsl1xnloDaHj208ouTA=\nR:getbalancesbybillingaccount.go\na:0:0:444\nZ:Q1jVcaLzJjWVIHaafdjOppuq5BEq8=\nR:marketplaces.go\na:0:0:444\nZ:Q1dk88LDh++mRLHfXwvu3rdLg8NtU=\nR:marketplacesbybillingaccount.go\na:0:0:444\nZ:Q1JtlmO2PcPMXBcFDNfu7HY3INFsQ=\nR:marketplacesbydepartment.go\na:0:0:444\nZ:Q1og6rhUbpXLOrKf6vWVqu4BOFkQ0=\nR:marketplacesbyenrollmentaccounts.go\na:0:0:444\nZ:Q1eRxfd/M/UrLzWzJ6IBRoziP64Nc=\nR:models.go\na:0:0:444\nZ:Q1J5K2JWTjBOwMlfn6CSaNMYlyVps=\nR:operations.go\na:0:0:444\nZ:Q1ZIUn8XVVIwNvuXpAbHzBat9DlOY=\nR:pricesheet.go\na:0:0:444\nZ:Q1W187SuEazuH5mLRwJWEpNBGwBbk=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q1c7Q/u2kXOpYPmOq18zI08EKmNVM=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1aceP8TkR/SOy5hK6n1vfMJInDOQ=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1xSNQNTgF0y+Gp+2qA2465u/erTA=\nR:tags.go\na:0:0:444\nZ:Q1JGaBYKJWKQF6KC85OuyeK4l7MfA=\nR:usagedetails.go\na:0:0:444\nZ:Q1RyceH70MMhgKR1IELOi8q9TNyXE=\nR:usagedetailsbybillingaccount.go\na:0:0:444\nZ:Q1xd1M0zozHHQ7vhTAl7lHjLI1twA=\nR:usagedetailsbydepartment.go\na:0:0:444\nZ:Q12Ku7gt3rTzWOviTfgbX5Ep47QMk=\nR:usagedetailsbyenrollmentaccount.go\na:0:0:444\nZ:Q1v352LB1vyFgnBRRb9B+kiAoiGS0=\nR:version.go\na:0:0:444\nZ:Q1I+g21nejsrKeBDCgaY0vXwwWWtQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-03-31/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1T9iNqiXhP/uEQWJ4Xa8C7kvhrK0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-05-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-05-31/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XX21M7CXZu6eiuG4TBgUvAvEb7w=\nR:client.go\na:0:0:444\nZ:Q1aJz/VskJ8VECUST7si8N7ki//Wk=\nR:enums.go\na:0:0:444\nZ:Q1LhLwxqwMVkUZNZU2AckBDH8Vdq4=\nR:forecasts.go\na:0:0:444\nZ:Q1K/BuriNWAiw/bqHqCODvhpj2p6E=\nR:models.go\na:0:0:444\nZ:Q1mNZuV0SLJObqLTXd0BamhiUaubs=\nR:operations.go\na:0:0:444\nZ:Q1VAUjw/3gpdHC5l7g7p+BHdORvg0=\nR:pricesheet.go\na:0:0:444\nZ:Q1L3+xNa675DR1GFEQPjqElKhQcs0=\nR:usagedetails.go\na:0:0:444\nZ:Q1V9r7HB7o35Ne0hJ/MUrqaQfg9ik=\nR:version.go\na:0:0:444\nZ:Q16ANG1DAaqx7oHN/2QL46sInuiuQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-05-31/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ceWJY1/SdGY8Sm5he7qZu9yZ5ww=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-06-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-06-30/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1HjhKkPCPzFWXamh4ou9lCTtLRnE=\nR:aggregatedcost.go\na:0:0:444\nZ:Q1feKmaYq57312/yYvKtda+S98Ni4=\nR:balances.go\na:0:0:444\nZ:Q1xPPD+qSJcmhUseyd3EfzIYHEGAE=\nR:budgets.go\na:0:0:444\nZ:Q1I+JOT3/1EiwyqhMlBFWW+GfFEnI=\nR:client.go\na:0:0:444\nZ:Q10YGNyF0by4bKaKFg60o6fIryfy4=\nR:costtags.go\na:0:0:444\nZ:Q1VZH32rGC7XdOUBC251XEaGDduOg=\nR:enums.go\na:0:0:444\nZ:Q1CBo51FDfuU1afwPuWR0Tnl0/j7w=\nR:forecasts.go\na:0:0:444\nZ:Q12uO3GRL7ewhSHdoRBy9OlcToz3U=\nR:marketplaces.go\na:0:0:444\nZ:Q1U/LmLUPV1ifUGikCvhFnFwXenfo=\nR:models.go\na:0:0:444\nZ:Q1hE1uon1LRw+S4djc1ErgZBDyArM=\nR:operations.go\na:0:0:444\nZ:Q14fwgeCMHZZRwpCmrU8NS/t3SMro=\nR:pricesheet.go\na:0:0:444\nZ:Q1XFmI70mU+IODPfBKijFgQ5SWTPc=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q1alLa9RamN/tn2E1MqAT14MPtEEU=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1uDjpn6cFxhGV2WGtf/R9UddtT+s=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1d64Lhg9K41Mz8iCcnaLqBmRzc3M=\nR:tags.go\na:0:0:444\nZ:Q16UhOXsmIG5p3E5hI9TqgtpUIJsQ=\nR:usagedetails.go\na:0:0:444\nZ:Q1avawxrCLpWzSsa2VhOSq2HkSeRA=\nR:version.go\na:0:0:444\nZ:Q12Qh9dG3flrDvgSyM7cVv6lT4P1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-06-30/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19cFfg8vf12v/6yGyWZbtup+x0V8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-08-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-08-31/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ka05wkGh32IJbwCGEqQUO+7fvcI=\nR:aggregatedcost.go\na:0:0:444\nZ:Q1HfRmY2b7kX5VaLnbnzhHcX1qI8o=\nR:balances.go\na:0:0:444\nZ:Q1Oafl3JXmPkAv++YUbZ06wPH/Xhc=\nR:budgets.go\na:0:0:444\nZ:Q1iTQ9QwPz9ZHfBmrZWvCblo2Onto=\nR:charges.go\na:0:0:444\nZ:Q14g+2pAKC/htplu9ys0zZb7XLFvQ=\nR:client.go\na:0:0:444\nZ:Q1j2wUb6mseiliI6lgYJ9S5X6tfDU=\nR:enums.go\na:0:0:444\nZ:Q1CBo51FDfuU1afwPuWR0Tnl0/j7w=\nR:forecasts.go\na:0:0:444\nZ:Q1fsggCUfGD4ree6svDUX72tOh/us=\nR:marketplaces.go\na:0:0:444\nZ:Q1yUpQYSolvU//4OSwrM2k8K5zmUM=\nR:models.go\na:0:0:444\nZ:Q1jqgN5/i8fUHmvbm9Trww4CybKow=\nR:operations.go\na:0:0:444\nZ:Q1DBJVl2Oh7DNP6X5G1vpORS+pQJY=\nR:pricesheet.go\na:0:0:444\nZ:Q1ikSMcufiLU9hFFqPI+0fY7Qg7/E=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q18h8PNLRd3csb3KAgBNpgUwQKRY0=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1mov+xd9qFPHCT0LzR3tSY7uNIo4=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1VZk3hyaBa2capvMPHeWWg1w8aTo=\nR:tags.go\na:0:0:444\nZ:Q1LPnr5J4nu6CqvKdBuZ9ScO08Wrc=\nR:usagedetails.go\na:0:0:444\nZ:Q1txO0VLVrTadCUfTGyjxjr5t9L9Q=\nR:version.go\na:0:0:444\nZ:Q1UWdcACpPlWBM1aVRJTOukhtT9N8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-08-31/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qFaQw6oXm/OXG19H3Tympw90v8I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-10-01/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/Jin/GOUhLlNvXH7E0A4G+zoWXo=\nR:aggregatedcost.go\na:0:0:444\nZ:Q1WVqOATnRWIUIzm0yVjvrAuXT9EU=\nR:balances.go\na:0:0:444\nZ:Q1agX5uby6O8CgiLz/ewJAmtF782Q=\nR:budgets.go\na:0:0:444\nZ:Q1HpMAtzhNpZR0D3xWao83ObONmII=\nR:charges.go\na:0:0:444\nZ:Q1yfLmUP/EiA0i1u9MwtYF+2saZsQ=\nR:client.go\na:0:0:444\nZ:Q1UPFkOqAPu46Hpi1I0adYS2vqftY=\nR:enums.go\na:0:0:444\nZ:Q1CBo51FDfuU1afwPuWR0Tnl0/j7w=\nR:forecasts.go\na:0:0:444\nZ:Q1O33VKysVtR1bCNaNg2exjRwJ6go=\nR:marketplaces.go\na:0:0:444\nZ:Q1cvMWTN/3K0f0yqSbrcDhbrD8wW8=\nR:models.go\na:0:0:444\nZ:Q1gSrU7mDIIWiZEKO15QkjzTnlrLs=\nR:operations.go\na:0:0:444\nZ:Q1vf78xnbYAAQo7vU6Z2+KxThAqM4=\nR:pricesheet.go\na:0:0:444\nZ:Q1geu8NATH4UOT1xDT5y1SMIbDkYs=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q1pRlR+9mZlqcZTeWfSbhBVBt4oS8=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1b1p6BxO5fQ1J9vrhMc16JnlU2ls=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1C0joKu2MYSRW5ysDXAAtuiJHGPk=\nR:tags.go\na:0:0:444\nZ:Q1kh/s9CSKelsmG2td/11OjZ/npmE=\nR:tenants.go\na:0:0:444\nZ:Q1zlQVo/qTpYYI7EqV+b5aWT6BQuM=\nR:usagedetails.go\na:0:0:444\nZ:Q11Aa+zIAO37DXphR1ZexXrkBwIXI=\nR:version.go\na:0:0:444\nZ:Q1btzyLbK6HhX3KW5Gea89QQhRwhQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2018-10-01/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Fn92wl/VtvEqRrp0VeGw+VnBo8k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-01-01/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13Ut35i7UGuXRax4Cyj+7SVtWSXI=\nR:aggregatedcost.go\na:0:0:444\nZ:Q1ma60xrI+do5BtARWWavIUeBNruw=\nR:balances.go\na:0:0:444\nZ:Q1oJhuvRiS3lHkQ7eTRhHUlV1uIY0=\nR:budgets.go\na:0:0:444\nZ:Q18mti2PHUSoKEMObAhDVqli0mG7w=\nR:charges.go\na:0:0:444\nZ:Q1M6Vj6sAIlGiAk37tqBCJ39iYusE=\nR:client.go\na:0:0:444\nZ:Q1Jc6NIIj0KSGZk1t4zw4kJZa6b1k=\nR:enums.go\na:0:0:444\nZ:Q1+KWzCGkGdTbcxJoRWrzjq62CiI8=\nR:forecasts.go\na:0:0:444\nZ:Q1m2RiIXN1YbwLPYx2CCc+tlq9hF0=\nR:marketplaces.go\na:0:0:444\nZ:Q1C+GREQsmHlPUjE8QgyQyoALixYQ=\nR:models.go\na:0:0:444\nZ:Q1Pf2qcYiBrBMK9bFrzYd63XhmmyQ=\nR:operations.go\na:0:0:444\nZ:Q1zm9Se4o+aTJNXXadJGPB3RYNhlQ=\nR:pricesheet.go\na:0:0:444\nZ:Q1eacU3KhH/7TrsVYMUeWJr6NGIEM=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q1a8xG+ONQKogIgjpNl0GmaKKaGdY=\nR:reservationsdetails.go\na:0:0:444\nZ:Q1tm1kXtX+JU9p3NcPA45Pn1P3o3M=\nR:reservationssummaries.go\na:0:0:444\nZ:Q1mXclzmkwLJCmOvZh6MyJNVYF1io=\nR:tags.go\na:0:0:444\nZ:Q1b7S9NeDWYmhtqaui/amwDeKcgQo=\nR:usagedetails.go\na:0:0:444\nZ:Q1dtalS2R5FYtp5dQWqHgGM5ZNb4k=\nR:version.go\na:0:0:444\nZ:Q1gDsO7ZmLmrRGR6JZGjAL8WzdKhc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-01-01/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1e9tC0l9oeT9R41oFODcVwTbBjCM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-10-01/consumption\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1a3kCXKr+dky4cVRlcVA3/Lm7b5Q=\nR:aggregatedcost.go\na:0:0:444\nZ:Q1Cq61Ijmb3TpxXfrPikaUMQ0P3ck=\nR:balances.go\na:0:0:444\nZ:Q1K7fI+rohZLR5z7OZ3skraZl3Chg=\nR:budgets.go\na:0:0:444\nZ:Q1BizWFVYgbUz+ToVyM+Xyw5qwZIY=\nR:charges.go\na:0:0:444\nZ:Q1dYG66mZaNKJ/7cWlTlopwktoDXM=\nR:client.go\na:0:0:444\nZ:Q1oNdj0GhPeoLxDpcgtknAzcA0t+U=\nR:credits.go\na:0:0:444\nZ:Q10n7Zv4APK6xEb/pCwucjKZvwFo0=\nR:enums.go\na:0:0:444\nZ:Q1Dr659fFUyakph5GOYzqXWEvs7pk=\nR:events.go\na:0:0:444\nZ:Q1sCn3JK4k+DG3vkZfeIEsTfqfvJk=\nR:forecasts.go\na:0:0:444\nZ:Q1BveUrOsOU/Oy29iIIeq7RY4Wddo=\nR:lots.go\na:0:0:444\nZ:Q1iBou2SJctXAOthMDczYen/twQB8=\nR:marketplaces.go\na:0:0:444\nZ:Q1+IfXPYQDLf63VENkUDKXCBluyis=\nR:models.go\na:0:0:444\nZ:Q1MMVrbWVZ1O6F2Gg/OzY2SImAi9g=\nR:operations.go\na:0:0:444\nZ:Q1eBnhOBWiBKN92HmisNYy300Pxcs=\nR:pricesheet.go\na:0:0:444\nZ:Q1msYCfcIwpKxQVTYnAmAHDR4qrE4=\nR:reservationrecommendationdetails.go\na:0:0:444\nZ:Q1m+XEGoHuqeMuMA9AnkkTEfX+1VQ=\nR:reservationrecommendations.go\na:0:0:444\nZ:Q141Uq8/bAhOJ+Jp3Ia/4WN2YsAKQ=\nR:reservationsdetails.go\na:0:0:444\nZ:Q17URFLYIwrPIRoy/mjwjRg8Ov5V8=\nR:reservationssummaries.go\na:0:0:444\nZ:Q18jsGfIOrH2dsUuGgauN16iOYmO4=\nR:reservationtransactions.go\na:0:0:444\nZ:Q1xOzV8XukaWHZzOJ4LaOOa56qJyY=\nR:tags.go\na:0:0:444\nZ:Q1TgV2EmGcLlb0KWal8Nt03KZc744=\nR:usagedetails.go\na:0:0:444\nZ:Q10LN4w9qHaiK/IcEIDFNnW+lDvMA=\nR:version.go\na:0:0:444\nZ:Q1PlGtKh6gvxP/dIRCJwSqalH6zgs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/consumption/mgmt/2019-10-01/consumption/consumptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12xDhWRVeV1hh7CKIKlDgoAR2rsk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-04-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GXbk9oxB0RfM8Rxrzosu0ZipB1s=\nR:client.go\na:0:0:444\nZ:Q1gN2Xkc4hu+EMtf0LDMuyrIAB+VE=\nR:containergroups.go\na:0:0:444\nZ:Q1qSa/+GOjjiNBaAjAcYmjT3QsRKk=\nR:containergroupusage.go\na:0:0:444\nZ:Q1AUpV/O9T6AWGGFDvuvfPH+rOMxA=\nR:containerlogs.go\na:0:0:444\nZ:Q1olq0074zCjpCgCJKOaHoWcR2pK8=\nR:enums.go\na:0:0:444\nZ:Q1afJzXjkT9OS+rq8h5m4jz6jLGI0=\nR:models.go\na:0:0:444\nZ:Q1YGdjL5kjeCpvdQ9L2tX3f3MCM9w=\nR:operations.go\na:0:0:444\nZ:Q1rL2amdL43jc/VWFlmGTbfzb5f00=\nR:startcontainer.go\na:0:0:444\nZ:Q1MSBIir7zsUpOoTpHvgI6y8cpGBI=\nR:version.go\na:0:0:444\nZ:Q1uT3xXJ5LZo4K1BpWuqM0j6BpkeI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-04-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DOTX2sjM2ZnMD1YF1DW/WKLuvqI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-06-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mxb8Y2LYbCWJmm5LiCZXShPsWAY=\nR:client.go\na:0:0:444\nZ:Q1raGnWuQIkAhd6u48tRWcd99b9JY=\nR:container.go\na:0:0:444\nZ:Q1C3ZmUdJvLgekb0VkKfHWisQHMVk=\nR:containergroups.go\na:0:0:444\nZ:Q1Ox3sAO6mXgPYT7Rs/TUaw+ARRj4=\nR:containergroupusage.go\na:0:0:444\nZ:Q1mbedtgBD/tU+oJsrqLuUZd6IsJg=\nR:enums.go\na:0:0:444\nZ:Q1B1wl93Cwk7KTxS54z1BjD1X+xto=\nR:models.go\na:0:0:444\nZ:Q10WSwxMcwh9jAB8HrdepNPESYvFg=\nR:operations.go\na:0:0:444\nZ:Q1vZ/r2DPPcFPuySHE1MEQUylgisE=\nR:version.go\na:0:0:444\nZ:Q15NAIJjpRUVkC+MLOsc/1crYEyso=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-06-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1oRDrpHSRCSGEKblS3O8i920PV3k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-09-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fCy+wWl3BdzOzoDrwbcXfTRqdY8=\nR:client.go\na:0:0:444\nZ:Q1rDqZyFXApAmsL02UiN1m+QgAlco=\nR:container.go\na:0:0:444\nZ:Q1ORn3LJDkRVTdMWT9YHebiwt6cOw=\nR:containergroups.go\na:0:0:444\nZ:Q13If+42FP8lzDBRHPxkFLqtgXncg=\nR:containergroupusage.go\na:0:0:444\nZ:Q1mSChQYiaZOsepC3iU1/+yt6wYa8=\nR:enums.go\na:0:0:444\nZ:Q14t59p2O9KVhOPpirBWbogbm9u/c=\nR:models.go\na:0:0:444\nZ:Q1IA/LqCd0EZnvWliw6yuFs5q3GbA=\nR:operations.go\na:0:0:444\nZ:Q1wO2wZxY7GenKIy+o0R27BGJfzGI=\nR:version.go\na:0:0:444\nZ:Q1e5amkBr19vsY58Xm87Bf6v/IT38=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-09-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Nygmpy/SpYCPs3xQYdpyAPNsuyg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-10-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gyj6Ul1ukNIGPStQORqJ7wirOn0=\nR:client.go\na:0:0:444\nZ:Q1D1RZtifqXeToP+SMg+/nvxPNn5k=\nR:container.go\na:0:0:444\nZ:Q1/REOPvBw8FmnSn2oTErGgzUOC/U=\nR:containergroups.go\na:0:0:444\nZ:Q12WmVbsgWdREkNrqbiF38nZxjYw0=\nR:containergroupusage.go\na:0:0:444\nZ:Q12cpwERSe/wS5Z86O6PDr/V+9QLc=\nR:enums.go\na:0:0:444\nZ:Q1z2LXIkbrm0wGV9/45GbF+CZ6Wjw=\nR:models.go\na:0:0:444\nZ:Q1pfUT0lFMoOTvL53ly+BBh06Eoic=\nR:operations.go\na:0:0:444\nZ:Q1aqn5K0ZfKXj+3qRXSBb/U7uhGjo=\nR:serviceassociationlink.go\na:0:0:444\nZ:Q15u1Hvyb+dNDUjQSCiv3O1Vb7xpQ=\nR:version.go\na:0:0:444\nZ:Q1B1vXs1bAXIOIofVddZKJA8RS4qo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2018-10-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZsQ1NCFNfullUHRJ/JbQr1sPqFM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2019-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2019-12-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fo436E8Pu7Lg6QvCAKFFsUiz+mA=\nR:client.go\na:0:0:444\nZ:Q1lsAQbcw6BZHzPePUhO5kEWPQe78=\nR:containergroups.go\na:0:0:444\nZ:Q1gPZtNcljrPd+sXJrfTZHq3cScYY=\nR:containers.go\na:0:0:444\nZ:Q1GsaCj9KggqelwC1zk1aJy2XmLwg=\nR:enums.go\na:0:0:444\nZ:Q1Y16qfTUjzLvQenaSyBFtpWazrgk=\nR:location.go\na:0:0:444\nZ:Q1qnvXDsqYIhZLsxrDo3v+P3QB7LQ=\nR:models.go\na:0:0:444\nZ:Q1F1kY6acmHDK+E9Eh4WougSXTXJM=\nR:operations.go\na:0:0:444\nZ:Q14z+gmfti0rKw6s8usmynVsEyz9E=\nR:version.go\na:0:0:444\nZ:Q1qqNEScBcbg7LjAvBeyRjCP9EZx8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2019-12-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kk37ogw53gvw3pMdMLkv/7ruGvs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2020-11-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TrHJ+WCLSHeoWu4HthKjFw5x5E8=\nR:client.go\na:0:0:444\nZ:Q1orqVercw6ZKHgjoYvKt00gTw8n0=\nR:containergroups.go\na:0:0:444\nZ:Q15g36eOFzSBuH9IUiIzTgcjeV6L8=\nR:containers.go\na:0:0:444\nZ:Q1d8yClGY2rIuinCD33JfRHnQBqd0=\nR:enums.go\na:0:0:444\nZ:Q1Y16qfTUjzLvQenaSyBFtpWazrgk=\nR:location.go\na:0:0:444\nZ:Q1p3aWlSbMUN0Jchv61vULohgQ0cU=\nR:models.go\na:0:0:444\nZ:Q1+YuBm0UXJAxOx6AKSxdUU+G4a3k=\nR:operations.go\na:0:0:444\nZ:Q1smL/2QaO2TrEBi6ZiZP2W4kcvkI=\nR:version.go\na:0:0:444\nZ:Q1GQgKLXSX/ARYEaEVBEaReTNEtj8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2020-11-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1q0GNj1Tx2CS45MR88cXSkyDf3fk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-03-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FCaueLhIL/9IUHN8mg+0jMKZo6A=\nR:client.go\na:0:0:444\nZ:Q1ID6zl7W26y5TiHjAwvrSqAcxVD4=\nR:containergroups.go\na:0:0:444\nZ:Q1dowAMYJpBvSB80uw1th/VFlGh8I=\nR:containers.go\na:0:0:444\nZ:Q1qmXRmR20GkFImqWMunI8IOYs+qg=\nR:enums.go\na:0:0:444\nZ:Q1RtiLBh8eddLNLpw76RpbREu46bw=\nR:location.go\na:0:0:444\nZ:Q1vOC4SjWu/HODW3kDPrfwFkIWxe4=\nR:models.go\na:0:0:444\nZ:Q1oX+tO8SITYaztBl6hSdnuaJWtjw=\nR:operations.go\na:0:0:444\nZ:Q1YhMwRQn3Mrt/7QOxVVU84V1tpUM=\nR:version.go\na:0:0:444\nZ:Q1YAIk2UuusyFgkmOfF2gsQMIbJqE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-03-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1X/7t838Z4exW9AOjAhsRULaM9+Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-07-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nYqASNx+2P36WieacO/Mdzfv0bg=\nR:client.go\na:0:0:444\nZ:Q1f9h3L2PLC5CAe3OyP+Ho2adslK8=\nR:containergroups.go\na:0:0:444\nZ:Q1IcepEQpk9lenBIcoHBXLg3nt1RU=\nR:containers.go\na:0:0:444\nZ:Q1k7uiwOCnH3a5PrujP/t2FtqJTc8=\nR:enums.go\na:0:0:444\nZ:Q1RtiLBh8eddLNLpw76RpbREu46bw=\nR:location.go\na:0:0:444\nZ:Q1g95Fz80XKcHp6y0pbHLVL1JO5ZU=\nR:models.go\na:0:0:444\nZ:Q1qXuFAS7iIsjt08cBkGOXRvVGIDg=\nR:operations.go\na:0:0:444\nZ:Q1yfJkSiiOVoXuSi3QlX4Kbkf4Pls=\nR:version.go\na:0:0:444\nZ:Q13np8uHSoBFanf2FYp8U5mCoSBGo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-07-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1oIDpFB8SSUKrqmR7tSqkJXTL/dw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-09-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lLm+ZdSfPZfTVn7FG9eVSl2Qhhk=\nR:client.go\na:0:0:444\nZ:Q1WPPDM19SF3VVocHlRyIr5U/dF28=\nR:containergroups.go\na:0:0:444\nZ:Q1HI5JZ8Hc5LS4JPgfvUk9j/pMux4=\nR:containers.go\na:0:0:444\nZ:Q16l78iyRXyWkZaqtxvVJTJuSG/xs=\nR:enums.go\na:0:0:444\nZ:Q1RtiLBh8eddLNLpw76RpbREu46bw=\nR:location.go\na:0:0:444\nZ:Q1aIOFqeQtx7Ae9JpurFvbVaVelPw=\nR:models.go\na:0:0:444\nZ:Q1KO2wufCbCMPs/6yd7e3azom0WdM=\nR:operations.go\na:0:0:444\nZ:Q1ZF4oDXPeAiZ5UoYF0ujmL28SWMU=\nR:version.go\na:0:0:444\nZ:Q1PFDQodn6JLEtDq0klx/o0CrgRks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-09-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1shDMbRaD8bhrGPG9GvZ6ficCtlE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-10-01/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nJyci8NTCUui1aqu0cs6MS4xMYg=\nR:client.go\na:0:0:444\nZ:Q15kCOgJvlHEOSnFWBSRUikLmPb9I=\nR:containergroups.go\na:0:0:444\nZ:Q1EfZVQ4hc1Y+AwuRBsFz0ZPmRXz8=\nR:containers.go\na:0:0:444\nZ:Q1X+2hi+nRPN2GLSQnPgHkzg2DUD0=\nR:enums.go\na:0:0:444\nZ:Q1n/RxrXiPsrRDCDAwz1R5N2u6CDs=\nR:location.go\na:0:0:444\nZ:Q1iu6CYvf8AE4aCidaIZyRPoJ3Mxw=\nR:models.go\na:0:0:444\nZ:Q1B7A/+qn246D7BiFGoLkJ6krA+tU=\nR:operations.go\na:0:0:444\nZ:Q1d0bZ0dQ2xxh1AzYTDex46Xxt5u8=\nR:version.go\na:0:0:444\nZ:Q1V/Ox/KTgjUPjeaErFJZd17PENbo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerinstance/mgmt/2021-10-01/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IWwHGtoSopHlSSa2cqDQmYpfEwo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-03-01/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1udr7EDcOcWN73s2EUH6M1nPVGKM=\nR:client.go\na:0:0:444\nZ:Q175RZ1y87bid+Pnh1zBB3i0TDNlg=\nR:enums.go\na:0:0:444\nZ:Q1Q1zBcgD113/h7vB9+fGA7glqYr0=\nR:models.go\na:0:0:444\nZ:Q1kPNQ8LgichJt1ZazoHMQ1tnHLt8=\nR:operations.go\na:0:0:444\nZ:Q1BgsUaNN5cbq/MI2V+LXVLzaoeYA=\nR:registries.go\na:0:0:444\nZ:Q1xxQ3D3vqeBRjMzgWsglSBkUajj8=\nR:version.go\na:0:0:444\nZ:Q1gYUBzhbKoxXfQVxeHs6xxfOQARM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-03-01/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16msltjI3SLwu6Jm+xEskXqim9Vc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-10-01/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11Q6Nzcz+6UZFn8OoZip3QtP4dZc=\nR:client.go\na:0:0:444\nZ:Q1W0GQbOK/q1DrrPBV1r26PY9fazk=\nR:enums.go\na:0:0:444\nZ:Q1T3ZNhRNYHASCERwNeftBhwLCcJM=\nR:models.go\na:0:0:444\nZ:Q1v5aH/samRLaJnS2htnL9HnW8rL0=\nR:operations.go\na:0:0:444\nZ:Q1sY3RpWGE3pxzfHyH6klj0nCFfKA=\nR:registries.go\na:0:0:444\nZ:Q14A02VcwVwHDEZPrQZX7npokcNs0=\nR:replications.go\na:0:0:444\nZ:Q12qirBa+h0B81/DfxtRb/cKOQKiE=\nR:version.go\na:0:0:444\nZ:Q1ws3agd3pzLAXhiL0uRrOMOBm8B4=\nR:webhooks.go\na:0:0:444\nZ:Q1D1LptmkrrKvWRXAzPjj/9cl0LtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2017-10-01/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1b3q+rc9VhcmASveZtE/uoHBYSwY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2018-09-01/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BKSjgskOGT6kM4zn/M/IC9rly7w=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:enums.go\na:0:0:444\nZ:Q1d+7yLNEpRA708t53kW739nDZh+k=\nR:models.go\na:0:0:444\nZ:Q1z6DYjVjWxZXjKvkwLUaXOrgEGLM=\nR:operations.go\na:0:0:444\nZ:Q1sY3RpWGE3pxzfHyH6klj0nCFfKA=\nR:registries.go\na:0:0:444\nZ:Q1pOy9XKT2c4HsA6cYhEDE3q3ygsM=\nR:replications.go\na:0:0:444\nZ:Q12qirBa+h0B81/DfxtRb/cKOQKiE=\nR:runs.go\na:0:0:444\nZ:Q1J9mlPZvZUKjmuV40tf/5aR+Ir8M=\nR:tasks.go\na:0:0:444\nZ:Q14atKAA3r8RLtqsKEiB/SQGfprsM=\nR:version.go\na:0:0:444\nZ:Q1sdW25vDMFNYcu85ynj+Ezdxumys=\nR:webhooks.go\na:0:0:444\nZ:Q1D1LptmkrrKvWRXAzPjj/9cl0LtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2018-09-01/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vJD7knUDAteuoVjPZI1TCRsZxlY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-04-01/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dljUwXBDcXI93lJIf4WLPev9lLE=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:enums.go\na:0:0:444\nZ:Q1tblNvTFAIEZWuxz9xhGJuaGdfKM=\nR:models.go\na:0:0:444\nZ:Q1HA9AM4eMs5R/VcCvmjoPRQicFu8=\nR:operations.go\na:0:0:444\nZ:Q1sY3RpWGE3pxzfHyH6klj0nCFfKA=\nR:registries.go\na:0:0:444\nZ:Q1IjHzzPDDKCFxMCpa78ZRfAmSHUw=\nR:replications.go\na:0:0:444\nZ:Q12qirBa+h0B81/DfxtRb/cKOQKiE=\nR:runs.go\na:0:0:444\nZ:Q18Exq+WD0yfUgdrhOBE7envEsCbM=\nR:tasks.go\na:0:0:444\nZ:Q1zbvmj5CQzbQMnbSOfdPzqyHj77w=\nR:version.go\na:0:0:444\nZ:Q1EICHljLXfr8270HqPBzVLtUxEkA=\nR:webhooks.go\na:0:0:444\nZ:Q1D1LptmkrrKvWRXAzPjj/9cl0LtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-04-01/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yevha+hi9Wc0DS8eoD61dG8qIJ8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-05-01/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WlOrDqsm3L/+pd7ujh/2/2rDQTE=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:enums.go\na:0:0:444\nZ:Q1tblNvTFAIEZWuxz9xhGJuaGdfKM=\nR:models.go\na:0:0:444\nZ:Q12JryeV/x/TH/snR0EmRqL21L1Pg=\nR:operations.go\na:0:0:444\nZ:Q1ABzOpbwAq0JVBij6A33qnaMl/xg=\nR:registries.go\na:0:0:444\nZ:Q1yTEEJwyRi4mojEc8AOmvnFWpT4I=\nR:replications.go\na:0:0:444\nZ:Q1JyyaW55wkN8BdWiNBrqQUTGA4nY=\nR:runs.go\na:0:0:444\nZ:Q18Exq+WD0yfUgdrhOBE7envEsCbM=\nR:tasks.go\na:0:0:444\nZ:Q1zbvmj5CQzbQMnbSOfdPzqyHj77w=\nR:version.go\na:0:0:444\nZ:Q1Bx7WFC/i32bTymeKsfHsGyGqoqg=\nR:webhooks.go\na:0:0:444\nZ:Q1tPtEjo1EdU8yVMwozvhQ30k2cPY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerregistry/mgmt/2019-05-01/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19gjSc1ahHvtBS5xSUDGzSKAMwco=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-03-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-03-30/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16NuzRIPoU7gocplBPZrUEGtYsss=\nR:client.go\na:0:0:444\nZ:Q1lNvdJd5CzIvgtBKkZNlrpl8eFCU=\nR:containerservices.go\na:0:0:444\nZ:Q1E7Mrl4DmfRi6FhCP6+/dPx9kNcs=\nR:enums.go\na:0:0:444\nZ:Q1BskKoG0vtDXOTsH4Tb12AUWyJFk=\nR:models.go\na:0:0:444\nZ:Q1KAUZhZ2UIIjUrQtDzu+Ozbfgn/M=\nR:version.go\na:0:0:444\nZ:Q13jefhk0tn4cikXSFNHi6dwd4YC0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-03-30/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1T2Jc6Rymnw1eleNQT07TNSFGHO0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-09-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-09-30/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+Pbuje5wQNWI/mq1Z7dngkMCkgY=\nR:client.go\na:0:0:444\nZ:Q1O0gV4ePCcUcFdQTDz+rirNK9ljg=\nR:containerservices.go\na:0:0:444\nZ:Q1DJ26gSJQqBlCGF6T3bR4/f6Ff34=\nR:enums.go\na:0:0:444\nZ:Q1aQI9cA7bzhuUVDO5Ksf1nzx+qgI=\nR:models.go\na:0:0:444\nZ:Q1oX7kkiEouZ3XK6IGEJiWsOU2vnE=\nR:version.go\na:0:0:444\nZ:Q1IyQxvqVnlSe3FsjZXGR4KKiAkjQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2016-09-30/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VmGgwEjKukcPDwINUoniWDS4nWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-01-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-01-31/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YwuNgnq3nqI+j2amwuHqUu+MBFs=\nR:client.go\na:0:0:444\nZ:Q169ZYCi1GmUUjcMHwU638kbOaaFI=\nR:containerservices.go\na:0:0:444\nZ:Q1zOjXozRG9N/+h/UaZZqcG+XHyQw=\nR:enums.go\na:0:0:444\nZ:Q1Mv4K8SDhjJMkM/Jj8mc+R308Sjs=\nR:models.go\na:0:0:444\nZ:Q1dEJHIaTHi7IrRRWxqHYdBzYNIzE=\nR:version.go\na:0:0:444\nZ:Q1mhuhu3VIb0OhBpcBE/TEFhsm3lY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-01-31/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uLaCzSuQ7ROuBw0RL8FJB7TgNGc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-07-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QFZDdLYra/LxCPhCUq3j0mKCUUs=\nR:client.go\na:0:0:444\nZ:Q1FGzteqf2OoPUHT6bOc+/9SKgZg8=\nR:containerservices.go\na:0:0:444\nZ:Q1OZiLsUGwu9hYzZqAjFGG5x+q36Y=\nR:enums.go\na:0:0:444\nZ:Q1dXwweeecuZaiE0WSirYtHSPCXOM=\nR:models.go\na:0:0:444\nZ:Q1imNqN2cUtNTf5qYitpIKe7XbxYs=\nR:version.go\na:0:0:444\nZ:Q1AQQmr1Qnfn5onJ4b1abHOppii/U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-07-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19/avSEGw+Kr3AmO+cr2DGXHFiaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-08-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-08-31/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12NPAOnwySSpNqU+cS3ETdndr0pY=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1OZiLsUGwu9hYzZqAjFGG5x+q36Y=\nR:enums.go\na:0:0:444\nZ:Q1dXwweeecuZaiE0WSirYtHSPCXOM=\nR:managedclusters.go\na:0:0:444\nZ:Q1DSQ9uDEREerBy8DAsmDSzbMLRHY=\nR:models.go\na:0:0:444\nZ:Q1obcwZ2lGBe0BQDg5vSBOPZWzayw=\nR:version.go\na:0:0:444\nZ:Q1CocEQ6pxanHnepFvOhCyiJdoGNQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-08-31/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z/oZl17ZFe6j+oW+mFVUXcvJm28=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-09-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-09-30/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QUyATNujM2eWJyxwykmbJgHXw74=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1tzplJbp7edrLOQsSdiVGCo9XRW8=\nR:enums.go\na:0:0:444\nZ:Q1dXwweeecuZaiE0WSirYtHSPCXOM=\nR:managedclusters.go\na:0:0:444\nZ:Q1DSQ9uDEREerBy8DAsmDSzbMLRHY=\nR:models.go\na:0:0:444\nZ:Q17m8jMi2DJCiNzVkNqvbOngvb7Ik=\nR:version.go\na:0:0:444\nZ:Q16sCn7qeXqQbGU5gZdKsVETHCm04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2017-09-30/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BcoJlwgK4TBbYJm/IJOcVPzC70E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2018-03-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2018-03-31/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1A8u+Ymg5tpws5jLEgMAYDJ5PNp8=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1tzplJbp7edrLOQsSdiVGCo9XRW8=\nR:enums.go\na:0:0:444\nZ:Q13Yxy8PW4qItoMvTAMpeCUCMIE/s=\nR:managedclusters.go\na:0:0:444\nZ:Q1e51nWgcEf1TSpY52pUvF3mqG12U=\nR:models.go\na:0:0:444\nZ:Q1qz1H6jdxnsOvcIhp+G1g6G7EVYc=\nR:operations.go\na:0:0:444\nZ:Q1tlVomDZ+F1iyElBGFYbDqCAy1gU=\nR:version.go\na:0:0:444\nZ:Q1dzxGmjsq9NZJOU82exmQIlIbvcg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2018-03-31/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1RLIGZx7VyegKpnWLw5LjQRHxrtw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-04-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-04-30/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bFNbIjJuRMWUVd6PiLvB7dXOdQQ=\nR:agentpools.go\na:0:0:444\nZ:Q1vYNTfU53uINZs8d3kGBG0ChCw8A=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1mjQp8vMfh9sshUw8TKQxGP/nOx4=\nR:enums.go\na:0:0:444\nZ:Q1fWUPfcIDKCdsxg0KC3iIjNnmu0w=\nR:managedclusters.go\na:0:0:444\nZ:Q1p5JP39D4dsrzf280xj96WyF0eCQ=\nR:models.go\na:0:0:444\nZ:Q12kH9i1vHagj6XJUR8JSbFF/isrY=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1PA0DZiAaRV10w+3EPp3WlD/ZOaY=\nR:version.go\na:0:0:444\nZ:Q1lOievwZbYfQ8PT1ybhQvHkfB7xw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-04-30/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IE//F1uWfczztTeAbRnF9jDIJmE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-06-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GsAu5noba2r0wiQwqZJP2iA524I=\nR:agentpools.go\na:0:0:444\nZ:Q1X3LOpGCnXhHEnRgmiF+MX7AmiQ0=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q12eBneeYFzW8x2iU3SHns+ZgPBOw=\nR:enums.go\na:0:0:444\nZ:Q1wcfkj8mL1aLgRCo+oygBUf1wLWY=\nR:managedclusters.go\na:0:0:444\nZ:Q1/WgdWehXTSUHIGPvVfIsBC8VzuU=\nR:models.go\na:0:0:444\nZ:Q1jVscvJR6sXYPFgYsjnBIqtx9Z64=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1zy4fWYgvQCmvX8sK5EP66gbJja0=\nR:version.go\na:0:0:444\nZ:Q1v1pdxdqcy1aCg9rjaiWcuKGKPh0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-06-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HFPlvuJDvieKh575XHVDsbQ3a9Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-08-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13rF24Ctr7o2beJUsMdEVkKv6Ct0=\nR:agentpools.go\na:0:0:444\nZ:Q15c9Y4V8SDXMoYfla6+SUmF1dtWE=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1wcfkj8mL1aLgRCo+oygBUf1wLWY=\nR:managedclusters.go\na:0:0:444\nZ:Q1d5mAO/6VSDv6RpJxQfaO9u6AFG0=\nR:models.go\na:0:0:444\nZ:Q13aB5medExwxR84MixTcs5mPpajk=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q14gb2FPHpcq/LlWlNcTb/uBrb0Bo=\nR:version.go\na:0:0:444\nZ:Q1a4gNtgTQuKCE1gKCk8lfV65wkFQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-08-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lenjEdsgZWTgNqYWUyVLvA6uwQs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-10-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WOjVN0ugEllb993wEM3qK0mRSlY=\nR:agentpools.go\na:0:0:444\nZ:Q1p58kY9oyPcWibmATN+mLqODYdUg=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1wcfkj8mL1aLgRCo+oygBUf1wLWY=\nR:managedclusters.go\na:0:0:444\nZ:Q1g7NnDG7R9zHGuN+i/m0Gbj0Sp8c=\nR:models.go\na:0:0:444\nZ:Q1tfILT0EEME6kK3S4FRme4rm6qTE=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1WZIVuvsNkle2yVmsI6gR22ipttw=\nR:version.go\na:0:0:444\nZ:Q1fXCTNTn+w1zT02aDAvSrkSqSeOw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-10-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18oUonZf6OrS9IeLexpWj5DgxVZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-11-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1sYhOWNP7E1mXAmf2k/yc+7m6BMY=\nR:agentpools.go\na:0:0:444\nZ:Q1wwVtWELYsogcrPV0nF4H8QnFkTQ=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1+CCpzN7tSVZhWjgh2vp1c8qoGf0=\nR:managedclusters.go\na:0:0:444\nZ:Q1kYX9+OhPIMbo/+olYj8dogyn2qc=\nR:models.go\na:0:0:444\nZ:Q1DYd7ZTOYrvr2nW4aApu1G6Titvs=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1pO2eFsCbSwwD4vEHP9o0D2Rqsc0=\nR:version.go\na:0:0:444\nZ:Q1a22QmBpkHRnaKNyd1gdz5xY3CMU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2019-11-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FH+xRtB6P00LLIzdB6La9PJtL4s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-01-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hXx8+iDB9X9+VOaNBMD7xNPuuX4=\nR:agentpools.go\na:0:0:444\nZ:Q1kuQFcXdC4UXWmoWqU7iNnZhC7PY=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1+CCpzN7tSVZhWjgh2vp1c8qoGf0=\nR:managedclusters.go\na:0:0:444\nZ:Q1c9fa6GTTydtjGg7IAx62UgI/X18=\nR:models.go\na:0:0:444\nZ:Q1TwZUuP4x8D9ZXHX961mGvjRVs3I=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1xswt5qrsTkgpvdsP2aUVE/dSU3M=\nR:version.go\na:0:0:444\nZ:Q1qg+CQxoom8HBlujaogFG+6KoRLM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-01-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HtqQQUxDYWO2wly5W47YDtbJAZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-02-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qarYz82jvgTyEnxPOeGU79w8xgQ=\nR:agentpools.go\na:0:0:444\nZ:Q1cOYngP9IlGlOcIJIgGai1v1WHb0=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1fNoVRHHtYTj7ZiVYLR6AUgr90k8=\nR:managedclusters.go\na:0:0:444\nZ:Q1gBa0f6k5oEFouFPTVCJzsTHhDDo=\nR:models.go\na:0:0:444\nZ:Q1CvAYf7tyKmDlLfcfGb8hsrZM+pU=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1dJnOhojffQlEVpdA9OG4H8uVonQ=\nR:version.go\na:0:0:444\nZ:Q1KN7NwovyM/gdN09IcwSLN6kcXU4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-02-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SL9xbE9Gk8iYyqOLOEwf1cecvO4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-03-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Iu7DfQP0OihFfkuAlPmyO6IFQVQ=\nR:agentpools.go\na:0:0:444\nZ:Q1FdJJwNUppHxllqdA6SZPZXti3RU=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1bmXXAvcuq0K2b3zW0oe2auquZTM=\nR:managedclusters.go\na:0:0:444\nZ:Q1wYXNjpXb7qsGU1tJHa30tYfrx3o=\nR:models.go\na:0:0:444\nZ:Q1VdVBTobQZUEiVereA7cMQnpF8rQ=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1KYBa45IG9Xu4IlBqP4ZlhOxNBcY=\nR:version.go\na:0:0:444\nZ:Q1Qqf/eoWvXgEFuuXFqbWlnhU63r0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-03-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1R09OElTPkB0wwokVNCTZwRbLGbg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-04-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dvXUhNMTIP/hmquGI0HgfUjoCaw=\nR:agentpools.go\na:0:0:444\nZ:Q1l+aFdCvKCCiO7/83hwgmHc9sfds=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1onyhX4SYIcTr+GIZS/h0N8eBHMU=\nR:managedclusters.go\na:0:0:444\nZ:Q1wFpXZIGRYZCRBhfzeARTM+/AIAM=\nR:models.go\na:0:0:444\nZ:Q1Nqz7y2RnB7/rJpOJxdTze21MJRk=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1d8ogn65JpHo21+VYyXQwiIFIyRc=\nR:version.go\na:0:0:444\nZ:Q1c6LXN5ZJWRbiDa4Nm0bJ0VehMuY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-04-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/z/arD8qPpL2IcYEW1JHw+dqbxM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-06-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ec1N2Efxobw2ZqpqE8zpoAXzSdQ=\nR:agentpools.go\na:0:0:444\nZ:Q1P2ypMVBLn6BkIUH5pHuYcB5sheQ=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1lMebO0TEgtFF2lNm7H04JRYa108=\nR:managedclusters.go\na:0:0:444\nZ:Q1Kh+gYBLwBTOQuqQTnSURXhV/ogM=\nR:models.go\na:0:0:444\nZ:Q1LyVXTJK/IzZMR4uMy7a3Z88YRHo=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1/YmWIGaFuRmVf85Av43JogFjcis=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1q2VgHj61r684ayZGwn6UM9wmDoE=\nR:version.go\na:0:0:444\nZ:Q12Y3AYuWQ6bWQrep4WcT+SjUdPaE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-06-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LHat+RQBBqbAx27CNj+GO01tdxY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-07-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RT5pQCrCBGhxxD9KF0TlwuTuNlk=\nR:agentpools.go\na:0:0:444\nZ:Q1k0l7Xwsiz0mFTAx5b8L/du3XM/Q=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1zRs3Vte1gexllrIFuVHc9srFZtw=\nR:managedclusters.go\na:0:0:444\nZ:Q1Dz5E0BUII16YqnNCPJ99mj2lcXY=\nR:models.go\na:0:0:444\nZ:Q1TP49OaWz0O50kv58R0F+vPFzRRA=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q14xOH73exdRReb1qlNF80MdGVbtI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1YRCfSI8UJNXrzuYO+VNo83zVlfI=\nR:version.go\na:0:0:444\nZ:Q1mAmUgjjoBGFkSeWYPSDtM3bgPdQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-07-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16cr0wC9X9xWjHhbu4w9GOL7GVsI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-09-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1e2qRjkGzoTWlgF7EYjPYjLOac5w=\nR:agentpools.go\na:0:0:444\nZ:Q1xF6NvQ55oCiuoYuTABUcRrXD6us=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q105aqrxbMlT6rARPDm5wGTcuZ8l0=\nR:managedclusters.go\na:0:0:444\nZ:Q14LwT5fbIt8dy7uBW+UfMJt35w9I=\nR:models.go\na:0:0:444\nZ:Q1fP/1b1uvy5/befLawEv1AiC4HTE=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1yD6n7Fz4/KY39la8rnUq67SM5+E=\nR:operations.go\na:0:0:444\nZ:Q1tjAvO+x+Jhqf1MFyCsJP1Nf0SAA=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1Kk+TqlWBCbSa6JRuMXbSz/15Zio=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1FqGz2bCaCoRJAs8TaphVx0txWzg=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1mqRcM3V7d6P1kCxmxH6uvqYDFDk=\nR:version.go\na:0:0:444\nZ:Q1+WeTDm8kc9tXQ3MfEFTRfHokwuI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-09-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13yJ2981NC+3Euz5+2c3wSJPyBhA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-11-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KwTf+L4NSxC+WVYgY2cNa+qWXcw=\nR:agentpools.go\na:0:0:444\nZ:Q1aX+eVjFhHvbocprC7dxvPftVLJw=\nR:client.go\na:0:0:444\nZ:Q1EYyQS2dggQotwHtpDZ6WJVu/5p8=\nR:enums.go\na:0:0:444\nZ:Q1Wm8SsL/yAL/dtjfQXPsc9+9owJM=\nR:managedclusters.go\na:0:0:444\nZ:Q1BDNGi1UwGw1eF9TEXoTGUUk1I1I=\nR:models.go\na:0:0:444\nZ:Q1e5YXao3NfUDhu1OcV42fUtWDJK0=\nR:operations.go\na:0:0:444\nZ:Q1t9qCKz3c14jBYEqM4zJF/N0IyVs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1GTm0XLnNfzlvhp+6RNJpFTz0WEU=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1KTX1UeHZffo5RVuRDANVwDR7Yn4=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1xHLRya65t8Pg50HAWwIARPWbiH4=\nR:version.go\na:0:0:444\nZ:Q16VzgVfB6BjTi9tKTmO0OLESyapw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-11-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iT+K5bKrkJr6DuyuAITSJQhMZ1o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-12-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wlkwTfJEimcAxvZ32xF2e61CPtE=\nR:agentpools.go\na:0:0:444\nZ:Q1T8JNEDr/9PeNTugDgQ+70OtvLo8=\nR:client.go\na:0:0:444\nZ:Q1/3QiBsejsvSc/uGQu/XLJCTS6ls=\nR:enums.go\na:0:0:444\nZ:Q1wYxY0SQDBWGm2yJECVQtIfA33SI=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1NrjXf3ezKck253tMrbxcyNyvInU=\nR:managedclusters.go\na:0:0:444\nZ:Q14SUPEyFcQ6cIPZSqaU1pY+G8YSg=\nR:models.go\na:0:0:444\nZ:Q1IpWq2d66TI+FBNRdF11aW0JDCl8=\nR:operations.go\na:0:0:444\nZ:Q1F8VF4JHW6Yno2aAstI6czNAbMOE=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1JjXDGpWEThYdnA78KSpGFcPOBfI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q19b9L8lpu07xXJv04LmKHTran06Y=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1AchWmjJhGwmwjdERCf94m0/qXyk=\nR:version.go\na:0:0:444\nZ:Q1PczzbD+Jln+FEp25wm83eI0EvsA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2020-12-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1v3ET6cvyRCghmgFwiF+UZI7yiT4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-02-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1j1nwwYlzJQVJvlv2hzZbEXTpqSM=\nR:agentpools.go\na:0:0:444\nZ:Q1htcQ8ATUzGqx2PLjMaXkILxhvhY=\nR:client.go\na:0:0:444\nZ:Q1Xc4b+7jMqyJf8hup5ss8kUMpZ0k=\nR:enums.go\na:0:0:444\nZ:Q133ooBA+yo055eJR+goMy4NWeSto=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1qP2cj4SAZFQho6YjEKU6dX5wt9g=\nR:managedclusters.go\na:0:0:444\nZ:Q1uH9wu1B6FuQLaGn/ps5ehZdgUEg=\nR:models.go\na:0:0:444\nZ:Q1CAk6dCfo3JlzCdUqF1/ZraSxddI=\nR:operations.go\na:0:0:444\nZ:Q1YOIgQkQCa3fu4alEa5FEHzcJXGQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1XIYudXsuA9Isf+yzd5kZAahta5w=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1dW1RvqS+mJGy7QGVoF18GYiDr64=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1WVTYDVPaAkqnFmWOLXblKtTiw/o=\nR:version.go\na:0:0:444\nZ:Q1CqwtdcswZA/8f/mk0KNHOCoxZwE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-02-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sFxHE43OIL1F4f920eMXQH4KmX8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-03-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1eksDbIW+7D1eYIXX94GGijNrXBA=\nR:agentpools.go\na:0:0:444\nZ:Q1TbrYfWmfkuR4Ee4VPgJ0zlWx7ws=\nR:client.go\na:0:0:444\nZ:Q1BUFx454ACwqX3Qa60GtMkwxr8X0=\nR:enums.go\na:0:0:444\nZ:Q1ukV3coMpfImm82OzJX0VGeO4XUY=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1Y0xiBNk5hJJil35vAdlE5CrcP1s=\nR:managedclusters.go\na:0:0:444\nZ:Q1HE26kxSqFvsQ0fCoIO96e8Ycop4=\nR:models.go\na:0:0:444\nZ:Q12RJH2EhXbupZ4oZuOY6XRpdvDz4=\nR:operations.go\na:0:0:444\nZ:Q14ZidD2BBekZk1eyxFj99GWFmC4k=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1MpqEpVvsMDJsO1EBYD6GuTsmL5w=\nR:privatelinkresources.go\na:0:0:444\nZ:Q17Cdf11h5bjJV+BnjBfr1i5fCfUE=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1tOjcPWEZYidDqXeyJtckGOgeqLU=\nR:version.go\na:0:0:444\nZ:Q1efSQ38QOOOF0SvUcN+yrWxDsVgQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-03-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ewRnyosXfkXJflDOChw4Qpj5a/U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-05-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TZS2uCHDVzYdR9eqW89N3TpUANY=\nR:agentpools.go\na:0:0:444\nZ:Q1RuGGAZD4yaBw7p4lt0d6cuYKQ0w=\nR:client.go\na:0:0:444\nZ:Q1f7u3PoMbp2OkF7nJiuW8xpFW2Kw=\nR:enums.go\na:0:0:444\nZ:Q1ukV3coMpfImm82OzJX0VGeO4XUY=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1nFVbdn67vJ2opZWuPTX2A7zf6s4=\nR:managedclusters.go\na:0:0:444\nZ:Q1HxQW4O79eucJSIjAWV2P/1WOIOs=\nR:models.go\na:0:0:444\nZ:Q1YlNinMFXQUY07pNCjVaHfTOcQ4U=\nR:operations.go\na:0:0:444\nZ:Q1GC0mMFoffIaELlW/4t5blnzOIqs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1/27YEc4gOK3+FumDAZHcQ7jLGvE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1KUrud+XPDDYzUMmaKnkSAj16L/k=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1nqKebzw8Ozl1Neb/EEWX9/2DULY=\nR:version.go\na:0:0:444\nZ:Q1eoJYzkLu8fX3DMxd/gNFQepPqfE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-05-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ApGSyZqlEY2R8kSZenVp4meoMBM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-07-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1v5BMLhoIAdCGdo/ZZlGKSvDCOu0=\nR:agentpools.go\na:0:0:444\nZ:Q15i8XyU6UIcN4qpxSwurdiUeZH4Q=\nR:client.go\na:0:0:444\nZ:Q1WB1KNgNzV7SWnA/h8NGT/RAVobs=\nR:enums.go\na:0:0:444\nZ:Q1MbH1FJKnXTKmmt4rx8rR6WycEwU=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1zhBqbNY5IvaEHDn0neMA8BvcR4o=\nR:managedclusters.go\na:0:0:444\nZ:Q1j4epK+k4d6uuJqYYpVh68TsJ+Uc=\nR:models.go\na:0:0:444\nZ:Q1V0rPUqjCD4Uiv3UgXUc0EMgu1+4=\nR:operations.go\na:0:0:444\nZ:Q1UWEZmUPw80O63M59RAjMKM7GfQ4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1JAt1LDrRCPUMNaDNaBPn5lqyVXo=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1hvCGb2ESjfx16LIJdIWoB/YHwEE=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1L2XkkTjVWmX9seKVkiUCSKVOSbg=\nR:version.go\na:0:0:444\nZ:Q11/sDfyErU5D2v+uU6PQhWJmMlsU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-07-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FGdJfuD7G1ITZzahyxJtSk7ug/E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-08-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14Rp36XjBiAFPlyIVlCfVSMEUKaQ=\nR:agentpools.go\na:0:0:444\nZ:Q1HjRtQXkj7FpLme82E3KlUOIYilU=\nR:client.go\na:0:0:444\nZ:Q18XvI8a58Kz8XO6OctmmkwSgVMJM=\nR:enums.go\na:0:0:444\nZ:Q13lrCiS2OFSDFNzMpsvp4mhVwsUs=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1tV5vBYZi9nDTiHpf/RtQuEPAL1c=\nR:managedclusters.go\na:0:0:444\nZ:Q12of1855zZZu65ENzOpldm+V3NTE=\nR:models.go\na:0:0:444\nZ:Q1Gte7Jpuopc577Do/zI8K+mmhl0Q=\nR:operations.go\na:0:0:444\nZ:Q1pK5SM3TW4brX0NP5gyBhfoiQ8Tc=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1DZl6+1SzsSgfLso2ffiZI4Aw8c4=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1+uqkkkyHJS7wCJpVsquYhd+fyfA=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q11qSVpw0NZQc+Wk4fevYfFbBUES8=\nR:snapshots.go\na:0:0:444\nZ:Q1++qPuYbBi5fSpsMHpbHp375boEc=\nR:version.go\na:0:0:444\nZ:Q1jOh7dgJ/ao8WxNpkG8uJQeg16fA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-08-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1374fr8kT2TFz5KseQ6HLQP3DvxU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-09-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1k2W8clK6zQyyyulvdRTWMXg17Ao=\nR:agentpools.go\na:0:0:444\nZ:Q1WKEyG1F6LyXhthHhi9OnhLw+Lkw=\nR:client.go\na:0:0:444\nZ:Q1Ewk07EFNAYZp/jTSnrkpDg1P0yU=\nR:enums.go\na:0:0:444\nZ:Q13lrCiS2OFSDFNzMpsvp4mhVwsUs=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1f41GtddBl91+rZE6OEpoi+/BJ6I=\nR:managedclusters.go\na:0:0:444\nZ:Q1KkI4YRal//jWsPLLLYTqYXdSGMw=\nR:models.go\na:0:0:444\nZ:Q16jfqF7YrNR1zw+a4WYb9vNDzqJI=\nR:operations.go\na:0:0:444\nZ:Q18KdRzaYlD+BEev8GOVqMMug9luU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1XSQmSM9LZjGmttITFd3mIyq641E=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1G7jDczXT0GUVI6iPqhktyYL5iEk=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1lUoSYALT31G7IB8FRq/90Hha1uM=\nR:snapshots.go\na:0:0:444\nZ:Q1kDv3wZDsADRGUxRkH9l0QeLtBWw=\nR:version.go\na:0:0:444\nZ:Q194Phvdt0SXwnNSZ3Cntq4Yqi74A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-09-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ik1+Zd8qfln0n0jFypWivtzJYYk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-10-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EvdlRyqHzC5Ap+8j+GLpIh8o49g=\nR:agentpools.go\na:0:0:444\nZ:Q15XgUTejNKYWjF5ux3B701ldcUk0=\nR:client.go\na:0:0:444\nZ:Q100CVUTpabkc3jiiHqbG8jY3TjvU=\nR:enums.go\na:0:0:444\nZ:Q1JQETzbjbdQwDIVYGa2aBr9pZKMw=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1+PzwvyRmaEarBVTgdLxl+4ed1Fg=\nR:managedclusters.go\na:0:0:444\nZ:Q1tZ5kIlDqzXcSsPLulMwJ3oFNyAM=\nR:models.go\na:0:0:444\nZ:Q1hblYhT454O2u97m/DcHK/UDhnd0=\nR:operations.go\na:0:0:444\nZ:Q1Umw4lP1bJf1/AD923h7r6d1o/5U=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1DvKJKl4kf86HspKBShd+mDUpy/0=\nR:privatelinkresources.go\na:0:0:444\nZ:Q15caxuMwix5JHS6bLlXIRn3lFEXs=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1Z6dFAg1CZCXBlbqiGE7wQ4YA8vk=\nR:snapshots.go\na:0:0:444\nZ:Q1MRKqYIkOFS2C9SZur/b+kBabz8s=\nR:version.go\na:0:0:444\nZ:Q1BKw9zvNvUlZNk25lO1eGQ6PmcKg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2021-10-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ORpnnVRnP91Nw3FoOdcQNHpMEkw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-01-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KpgcOhAcRqeVpD/iSyyMuLI12gU=\nR:agentpools.go\na:0:0:444\nZ:Q1PAIS2hV/OauP7PvFcxG7XAEMcZ8=\nR:client.go\na:0:0:444\nZ:Q1z/j2H4Z2/tknQtrsE2B6TpWNi3w=\nR:enums.go\na:0:0:444\nZ:Q1LmENRQ+XqDHIObSxKM+XpMuHTZQ=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q13GVB0/slB0Y/2ZMTqVw25N9VPwQ=\nR:managedclusters.go\na:0:0:444\nZ:Q143R1QPAroqv6jsRpNfB8xFKqPkM=\nR:models.go\na:0:0:444\nZ:Q1ic4KFaSByttCLRR0OOXp1tY2JmM=\nR:operations.go\na:0:0:444\nZ:Q1+cbRk12i5zM2zbfAzhYU/6QVIuw=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1RQrOAToP5X1iKI+I3pejgqj8rPc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1dhe96pQdthG6pLuJQQifUKTHXNc=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1PTMjJFKef2Sr4Z46iJqAdDgwH8U=\nR:snapshots.go\na:0:0:444\nZ:Q1qpNc3lb4z9L5KyG/BQtJnPj3J0o=\nR:version.go\na:0:0:444\nZ:Q1loko5TjP7ozaGFvNoFvixP6dydc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-01-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XQf9n/TrqNlozKbtPQhjkvrC7/w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-02-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1f7JnlFF+wzVT6oE+yikXCt9zGw0=\nR:agentpools.go\na:0:0:444\nZ:Q1+FM9oGi2jdos2Qf4wsRsd6rlS7A=\nR:client.go\na:0:0:444\nZ:Q13zSslF7rt/GQ+I4l6cH/N/6W7G4=\nR:enums.go\na:0:0:444\nZ:Q1LmENRQ+XqDHIObSxKM+XpMuHTZQ=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1r0VodNl4YDgvYewdsRQDfoYWaZ4=\nR:managedclusters.go\na:0:0:444\nZ:Q1M8gIFhjfFKc1qpuYQis5BcvatG8=\nR:models.go\na:0:0:444\nZ:Q1jedwQ6BHHRyrBLtpOJ6PWFGz/ng=\nR:operations.go\na:0:0:444\nZ:Q1R8JXvg+Ihnb+kXOPKUcgEwtJMNQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1KMFxATNERahlcDfhTMf4Cdyy53I=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1RT2eOUuiTEy291UxNqlOOj9piSM=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q10grfII5xs7N6cfFPZJe92GdhTe4=\nR:snapshots.go\na:0:0:444\nZ:Q1lHnKYP7rJJEeZ9Ar7+QzBOr0870=\nR:version.go\na:0:0:444\nZ:Q1SJqvCr8HQpeNSYbLC5y2J4ZHNtI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-02-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VcQfaJ0iirOhKBW5kb4EaiDdOQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-03-01/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1cR+6UojjhNF6+zVhfmqjG3V+fqY=\nR:agentpools.go\na:0:0:444\nZ:Q1IkjLYEOvkWw9xd7ZCRJtJVNCg6s=\nR:client.go\na:0:0:444\nZ:Q1NXN0/TNrfxEhEmisvVDlsXU140Q=\nR:enums.go\na:0:0:444\nZ:Q1LmENRQ+XqDHIObSxKM+XpMuHTZQ=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1MsfQaufFcae4xdEAAZ5NiK06ssg=\nR:managedclusters.go\na:0:0:444\nZ:Q1VMqo4tm/zbTNffq+1AUh0Z4RGmI=\nR:models.go\na:0:0:444\nZ:Q19oTbmS1bYWfm3rRnAXUnwiwggiU=\nR:operations.go\na:0:0:444\nZ:Q1NbDTyRSOq+453RCmluExUkpEP28=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q15/H9q0pqqFNfzSFCCIuTP0Z8ivs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1NRiQ0D86Wng9WHMysUO7va7JX6E=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1XeqLSSSliPGVJa0MPxKdY/g63T0=\nR:snapshots.go\na:0:0:444\nZ:Q1NccGv87gRE6NVj940/HjhAPdALw=\nR:version.go\na:0:0:444\nZ:Q1IROlSC1HK6S95mQ9ePNuJkxeq3M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/containerservice/mgmt/2022-03-01/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1+Mdwrz4r/XjdPiHtng6YdVNoJHw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2015-04-08\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2015-04-08/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13EUtfET90ino05Y7214kf7ixF68=\nR:client.go\na:0:0:444\nZ:Q1gof95w75/UC1Q2iG4w+naGhdH4E=\nR:collection.go\na:0:0:444\nZ:Q1wVxSrlpW0nohrfjcy7jU5flmemI=\nR:collectionpartition.go\na:0:0:444\nZ:Q1P9fcFd1y5FGDvAKox4iJmjCQ94U=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1O19G2ziKDTBjxhNZTE10jrL0KUM=\nR:collectionregion.go\na:0:0:444\nZ:Q1Kga/O6zjZfebd7Wyi0ook/CPZjM=\nR:database.go\na:0:0:444\nZ:Q1w9XY2IdT5Fcu0YpezAJaO8+jahg=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1OBBtjxgYl9zc4Azm31H210WKbJU=\nR:databaseaccounts.go\na:0:0:444\nZ:Q19cKue8ao8T19mFh3cMfyAQGzaNg=\nR:enums.go\na:0:0:444\nZ:Q1tYfLinCob3VHj8IFji0onOX5hO0=\nR:models.go\na:0:0:444\nZ:Q1JhMQgE53J56eH3F7Qthq/qQzJwQ=\nR:operations.go\na:0:0:444\nZ:Q1sebeGSvPu7lEYEO0GK/Cn/4vHRE=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1dKqO8V62YS34Zp9cSIcOSFmpSIU=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1gGayfURx3zwXmc7iijqTtI2P81A=\nR:percentile.go\na:0:0:444\nZ:Q1e33iZAvo1tDG3JHK7qClZ0rx1Zk=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q12coCSHFGpZUs8ES9EUbSRLAmPXY=\nR:percentiletarget.go\na:0:0:444\nZ:Q1Mfeq9CwzThugdyZnErJ+CvjXAiE=\nR:version.go\na:0:0:444\nZ:Q1MA35Odw0/VBNPTd9KF6yqzTZe8g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2015-04-08/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15rnkns49HfVx8UNvX4O5Hnsq4wk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2019-08-01/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1c6I/0ANu0R9FbXjDX4OebXU7OrY=\nR:cassandraresources.go\na:0:0:444\nZ:Q1R5jxvLOSkJOpIewH0JbjdAk913Q=\nR:client.go\na:0:0:444\nZ:Q1Injp0c+ZyGq9e6G69dWGE5ornuw=\nR:collection.go\na:0:0:444\nZ:Q116sh4u592wdRGB8fC2G5l1buzWY=\nR:collectionpartition.go\na:0:0:444\nZ:Q1OVd7UjjmpuLUT+ZaStatNyBNOLY=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1NemLTmrcWyQim81g2ZXNUzyXnKs=\nR:collectionregion.go\na:0:0:444\nZ:Q1UVrMIYGKviwvL8kZDrRWClWv4x4=\nR:database.go\na:0:0:444\nZ:Q1/Hg9FHnWTaSQxj+DeHkKdmiH9PE=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1EGIr8GfbsAdP4WMER4cOi7leM8g=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1c/M4xp0U6qsRDXXw8KguZwKUVow=\nR:enums.go\na:0:0:444\nZ:Q1RCBJ4Uto0S0KGGlGlxb2PUywmG4=\nR:gremlinresources.go\na:0:0:444\nZ:Q1cGg0FdVk0sLwOcsRVtY5ng/yaAU=\nR:models.go\na:0:0:444\nZ:Q1vcRtiNT+REU40kwndVCWI2irrFs=\nR:mongodbresources.go\na:0:0:444\nZ:Q1lLR9clnieT7lkPebX7QsFEbR27Q=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1yAqTyyjZ6Pq8PqNWq5RO4lW+cow=\nR:operations.go\na:0:0:444\nZ:Q1ZtqclVkK6lVShJsuR8vwJKjzwus=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1Bvh5gPhg1HesWmb/IMbs9yqOseg=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1nX+FETfCZglFJMiP1BRKqHUU+JU=\nR:percentile.go\na:0:0:444\nZ:Q1q6OPo9L+wspHP9a16Il+JvpbJgE=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q11yHCSCfHwak/7JcneKNdZqIJRD8=\nR:percentiletarget.go\na:0:0:444\nZ:Q1tLrvwCabsMfMAn7bM7qsx2NHZLA=\nR:sqlresources.go\na:0:0:444\nZ:Q12Uye5Oz1rxEDS8cVHEa5qPP0uQo=\nR:tableresources.go\na:0:0:444\nZ:Q1Ek6dp9Ebhvs4Su5nRlpz5g0/Sh0=\nR:version.go\na:0:0:444\nZ:Q1QI7DrF2tCAxSTD/D/loPmhcVf8k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2019-08-01/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Gps6gI97YwR2HndA3dBmzThxKvQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-01-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-01-15/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ycifPiTiSlZzDD6Z+t6DNXxq900=\nR:cassandraresources.go\na:0:0:444\nZ:Q1o6GqLItTl1GBMJ4dWY9FHGWNUVw=\nR:client.go\na:0:0:444\nZ:Q1cF03GtMtjlljmi0EMwGgu9La92U=\nR:collection.go\na:0:0:444\nZ:Q1mF132Vwko0yW0bUJVfT9WzZYjSY=\nR:collectionpartition.go\na:0:0:444\nZ:Q1byuxD1CI0RQbTbQZzY4ELg3sdkM=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1uhViCs0ULxWXvvMHJYyQQB9LE9g=\nR:collectionregion.go\na:0:0:444\nZ:Q1Ti5cmqgpxIkdfWpjzNfaToDlZ3M=\nR:database.go\na:0:0:444\nZ:Q1Y8+4LHaVZL6pceNa5QCvuULzH08=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q190ZsRT4SB5s4a3j0U2j54frD54o=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1dgbsZ4CTiWVGfTHJ5BlUBgK5JQ0=\nR:enums.go\na:0:0:444\nZ:Q1FPsWpDxMOWgu0vlO7/a6+ztPGk4=\nR:gremlinresources.go\na:0:0:444\nZ:Q1O7wsVMqzvLcMgljGfEw0haIsedg=\nR:models.go\na:0:0:444\nZ:Q1g9M0KBnLLdPE9xGPxB13hgjsvEU=\nR:mongodbresources.go\na:0:0:444\nZ:Q1BSm93cHlpCUQig2nMw9io8m6n5w=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1ss+ZD9CYSMCpPSRzja14NbmXcwQ=\nR:operations.go\na:0:0:444\nZ:Q1Y+J+Ks2RjErfmhnh12IUgwAw2wM=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1cwNAZ1USJ8bcxLVcX+9oOIWPSeY=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q176f1C3XyxQPyRvUqewfuJ1TJvVQ=\nR:percentile.go\na:0:0:444\nZ:Q14SvpEgsJWik8chI2ZPbRdYBHFy8=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1dEVo4b7RhzTlEzOASqb7hRXUQ2A=\nR:percentiletarget.go\na:0:0:444\nZ:Q1zOWjRLHSqN6Wo0OAAzCBVuRvUNU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1gBmBWq27d4ROew50zGakEcNqFKQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1h3ZphbpEeVcJFey0cKPvTH5TyVc=\nR:sqlresources.go\na:0:0:444\nZ:Q13jGFyUVkbZfeFXUnGbrgl7x8kW8=\nR:tableresources.go\na:0:0:444\nZ:Q1opn/J72p7Q2jgTV2zgj4G++ORQI=\nR:version.go\na:0:0:444\nZ:Q1MrecUBWsBXRgJqa+YSTgQDnGydk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-01-15/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Oh6b+MyyuWB70hctFVnWEyZ7V9A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-03-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-03-15/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+OhkoX38WtAVCbuCAemDXbrSizo=\nR:cassandraresources.go\na:0:0:444\nZ:Q1GvvEd156ADxm8GFADddFFQQgQBw=\nR:client.go\na:0:0:444\nZ:Q19D7oqY93+qFrCVFtMolLK2sNHhY=\nR:collection.go\na:0:0:444\nZ:Q1C8zhE0AG8EhSUQUUGbs4egdqWG4=\nR:collectionpartition.go\na:0:0:444\nZ:Q1gk43P7fl24kOIDcggUEhhz+D0AY=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q13hg02e/lZzrzGtUPKrK2yLTU4xQ=\nR:collectionregion.go\na:0:0:444\nZ:Q1Hs4Trii98rMKj/LrHVYco/o4MjU=\nR:database.go\na:0:0:444\nZ:Q1c5Dkc2lzoMFJbBO8oMHrud+5T1E=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1Ife7PzSmKz9DPGergJbWdkzoiXE=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1wmpOjOUwM0oz+LJm8pnA8IOnDQ8=\nR:enums.go\na:0:0:444\nZ:Q1FPsWpDxMOWgu0vlO7/a6+ztPGk4=\nR:gremlinresources.go\na:0:0:444\nZ:Q1EGBviQ0gadB1y+lbvYULmDDd5nU=\nR:models.go\na:0:0:444\nZ:Q1eVyhp7/Fwudd7inFUa4thkQ/k6Q=\nR:mongodbresources.go\na:0:0:444\nZ:Q1ZVmN5JitsqLUVG67G65RVitsb/o=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1IrIC2Dq55J/qIiaPSiOpP0EuyYw=\nR:operations.go\na:0:0:444\nZ:Q1BWaGfOGDmjbfX3NABH1Ooyx9nfM=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q13PjuujXvntQyy8UhIR3GFIEdUt0=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1g4JNNlvDtwNm4QwbKlLdYsYcf54=\nR:percentile.go\na:0:0:444\nZ:Q1EESqVzxBIwhcCC+pdlxf8uFExQQ=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1wYEHK6E8aq5oW8dwEQbjp4JtQtU=\nR:percentiletarget.go\na:0:0:444\nZ:Q1GowsJrkliOMLgZf6WyoCk/zN5W4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1MyJd459CHO14WJrtKAeQa80NZSY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q13Eju686p+b8LdhrswROpgtkboE4=\nR:sqlresources.go\na:0:0:444\nZ:Q1Klv05EZDwn3rzjP1acwiH05grk8=\nR:tableresources.go\na:0:0:444\nZ:Q16aAEgJ9cZdh0o5L88yjUHlaWvJQ=\nR:version.go\na:0:0:444\nZ:Q17B4tDlTKcLrMbbs8mV5w1DZyK3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-03-15/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lXGcIpAgkiXZ7UCqrvjzEQNYfkk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-05-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-05-15/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13xBx0508+1Y3Gu31QEjRwn4VZN8=\nR:cassandraresources.go\na:0:0:444\nZ:Q1qvTbWZ1UI+J6cVZwWWRW5SS8i1k=\nR:client.go\na:0:0:444\nZ:Q1wPJ9cNtxSKnEHCKp3uVOVRuIl+E=\nR:collection.go\na:0:0:444\nZ:Q1k5/yrAkx8miuLdbcYyEcrB7YMXM=\nR:collectionpartition.go\na:0:0:444\nZ:Q12yooirQfzaEKiRURyoVNTIDRBT0=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1+muoLnNxG/J9IhMmZ9sRiTLjPnI=\nR:collectionregion.go\na:0:0:444\nZ:Q1VT887qRgaiGnkgTxz8UnYoIGCK8=\nR:database.go\na:0:0:444\nZ:Q1HC4pB+zbqiP2y4fkyasKJKAiwlY=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1nkixMgLxp5VQEVysxhDiUzkkPMQ=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1fHShniQUNqduD+XVrvSaSanJIKw=\nR:enums.go\na:0:0:444\nZ:Q1e9inYec9bG0SVMI62sryaBbEsuY=\nR:gremlinresources.go\na:0:0:444\nZ:Q1aliYOZ/RoyYvV/U5hyIfFXAQZMs=\nR:models.go\na:0:0:444\nZ:Q1gXxdhi3DE5u0KZ1YvOxJemy6wek=\nR:mongodbresources.go\na:0:0:444\nZ:Q1E/u2sy1uxAH5pVsUD1pcrAqRkbM=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1qe5ZMC47COl48N7FUDJnHUfrySA=\nR:operations.go\na:0:0:444\nZ:Q1rtj+Ch3dWB/sczGG4B6qCJ5dR8c=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1THPNmMQlS3DJ7Eue9dgZjJJcMYE=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q11JkCrPXKz0MvzhOn96TRyq9YiAU=\nR:percentile.go\na:0:0:444\nZ:Q1Kvrx0AVmHjsDCxj5AgJv7PHjktA=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1puw0kWrnIZa2xJSogAC7ox18b6U=\nR:percentiletarget.go\na:0:0:444\nZ:Q1HUQO7JZOEOzhCkZYgw+4+nXYld4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1laT0Bs4vHq7u22xZtPVlNfPXACs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ZbopniNZ9taQk0FGgx41yxcSTxQ=\nR:sqlresources.go\na:0:0:444\nZ:Q1N/+NqosPahnJVqdtKwos20Dsgo4=\nR:tableresources.go\na:0:0:444\nZ:Q1/gEFSzBhiy9cFG/VEK7xR63/5Q4=\nR:version.go\na:0:0:444\nZ:Q1eJGsex07uQSY3BQCV05kNn4vz0c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-05-15/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1A6XENLU7/zwgbhdAM8Zvxg02i1E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-06-15/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AZ5RiZ5e/tMKPQc6ie2BJ2RelsE=\nR:cassandraresources.go\na:0:0:444\nZ:Q1QOrC6OF4jieHv/Pl/LzP37P/B50=\nR:client.go\na:0:0:444\nZ:Q1eedT0KTN4xDxZjbAFJ8ySxrmZIQ=\nR:collection.go\na:0:0:444\nZ:Q14jWOn9X/ffQtDXsAzF0TGB13dIM=\nR:collectionpartition.go\na:0:0:444\nZ:Q1dMLNx4tJzvjI2Z7gd8W8XpEh7JA=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1nA1ZQLsW+X3crylLTQIgJ8dg5Gk=\nR:collectionregion.go\na:0:0:444\nZ:Q1LHtFehUg/1SCvfKAGeHaBBO561Y=\nR:database.go\na:0:0:444\nZ:Q1ogQuAY0fVn1mELrV89xxlRbhpPs=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1QDB2EJANxcCuEUaQdgPmCsZlaZ4=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1d+jIHfzh0VHzBLQyNu1keVUdLqM=\nR:enums.go\na:0:0:444\nZ:Q1WzdEptC1Am1qX3N6o7jLAYwVNf4=\nR:gremlinresources.go\na:0:0:444\nZ:Q12XnVOFKtD/ycha3Ggsr66OeFRwY=\nR:models.go\na:0:0:444\nZ:Q1xWagGmtv5fu62lmbUTwQ+5s7r84=\nR:mongodbresources.go\na:0:0:444\nZ:Q1rKAC823jWcBlK8hSQMC5NN0IPW4=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1nChm8fGi/MmH7i5Pd+ihT9AWYx8=\nR:operations.go\na:0:0:444\nZ:Q1GPWqaOQKLJYNo4rkoafteXVr7aU=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1QFzb+upNnRJ98wgbYUJnypN0QE4=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1ljcgugPSbDFnxSPsvz6e6iepwuI=\nR:percentile.go\na:0:0:444\nZ:Q1tB56BJtfIGklVRECN3EkMEfEBdo=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1KkqD4xuAFEQ9fpUm9jHUML5DYpo=\nR:percentiletarget.go\na:0:0:444\nZ:Q1zp/picFpg1t0tg2UhehtWdVPba8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1jMWfzrgJQDiRyLZ7F/m38e0tRFY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1mTpYEzl22VycDpcIdlUAiHkeme0=\nR:restorabledatabaseaccounts.go\na:0:0:444\nZ:Q1BeE6mQDLH+eE+QzSWffkgDSqMmU=\nR:restorablemongodbcollections.go\na:0:0:444\nZ:Q1u0H7lxF1FxW3UBbox/4I9GaPRXs=\nR:restorablemongodbdatabases.go\na:0:0:444\nZ:Q10cvKdF2BA0ak5n73JeWb4Bj07as=\nR:restorablemongodbresources.go\na:0:0:444\nZ:Q1JQwLnvTWhzclC5m4VvOvhu8iuX4=\nR:restorablesqlcontainers.go\na:0:0:444\nZ:Q1K4w+jILMG1T7FMABkljj1R/naiQ=\nR:restorablesqldatabases.go\na:0:0:444\nZ:Q1DQ8YbCsRpbpjayJ14PwpBYGfpr8=\nR:restorablesqlresources.go\na:0:0:444\nZ:Q15+m2AAcmgCel6SgI29YXLmdqw34=\nR:sqlresources.go\na:0:0:444\nZ:Q1U+MTK30Urku0NbGHC/e8tSDRWuQ=\nR:tableresources.go\na:0:0:444\nZ:Q1XFVH0Bbu/cFhpOFlCdXW6J0lifc=\nR:version.go\na:0:0:444\nZ:Q1SbyyVGITwcd58QkxdHlqHKa39Mk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-06-15/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Uj/CuYv7Kw2DwvI1ua1JQj94L1w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-10-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-10-15/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1JDQWl/N+RJgPzfM/8e67zWsjTP0=\nR:_meta.json\na:0:0:444\nZ:Q1ha9udom5oqBokpYz08ES1c02szw=\nR:cassandraclusters.go\na:0:0:444\nZ:Q1x/jZo2CbpCk/uFCv533rLOE/jdo=\nR:cassandradatacenters.go\na:0:0:444\nZ:Q1LBcyyLEIBFwLNcjsjGqJL9YkiLg=\nR:cassandraresources.go\na:0:0:444\nZ:Q1hBr/TSFWN1IDNKJPZL1Cldwwrn8=\nR:client.go\na:0:0:444\nZ:Q1dGRLt7bgbj0/F21XRVEu6fQCpiY=\nR:collection.go\na:0:0:444\nZ:Q14aGGV7LXK7V4D8piPnODhOL71vQ=\nR:collectionpartition.go\na:0:0:444\nZ:Q1ptkBByHc9Bs4ZH30S+viiVw2RAo=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1U7BlJvpvBFHDATKl5jIvYcPuuJ4=\nR:collectionregion.go\na:0:0:444\nZ:Q1WuLOMTnDoYegRpHrQxO0Ldihd2o=\nR:database.go\na:0:0:444\nZ:Q1VnUmRwV0po7dZPH9H8n2If0qbm0=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1ZeBbH3LQolOsOlLdNyGxzxDrxVw=\nR:databaseaccounts.go\na:0:0:444\nZ:Q15lcwdNOBIGelJ9YLw+kQrgWW9rI=\nR:enums.go\na:0:0:444\nZ:Q1ihwyaQqc8UBovSp9RWlJkAe7CcY=\nR:gremlinresources.go\na:0:0:444\nZ:Q1pEb9Mnrj5loMvbQzjvlCx1xss6o=\nR:locations.go\na:0:0:444\nZ:Q1Em3V4ruJBzJeFNi2iV7vMojO1Og=\nR:models.go\na:0:0:444\nZ:Q1SEPk33dEQlMaM/OP72/DjG62AI0=\nR:mongodbresources.go\na:0:0:444\nZ:Q12RxQ4F/o7ln5HVjeToCZuGEQ8X4=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q1kQ+6Td+8MP5egNsGnpYV55AIKGY=\nR:operations.go\na:0:0:444\nZ:Q1qgXIeYajlr8xtsLRsE3QFcZxo6k=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1LKjJ/DwRWdJxatev8+vJ6zirEDU=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1cR5jcRSQW7Dz8p5HUq5DspfEyqM=\nR:percentile.go\na:0:0:444\nZ:Q1kCSlPtfLRQqBfafUUwY9VcoXJvI=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1c+Ks0tjdhn4Z4/ySUD7CdLePez4=\nR:percentiletarget.go\na:0:0:444\nZ:Q1ufhkXHH2xCa53PIsiNud+KGs1kE=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1xVUhhjGSvtPrVU47F80DjTiUKnA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1fgPlxj8h420zi2obOOTuW5mi3XE=\nR:restorabledatabaseaccounts.go\na:0:0:444\nZ:Q19j2jfA9st39LT7P8kvH4C2lKrWQ=\nR:restorablemongodbcollections.go\na:0:0:444\nZ:Q1TwnEeXIU7CYSogtBf4EXwGJUas8=\nR:restorablemongodbdatabases.go\na:0:0:444\nZ:Q1W+T1MGUW0N0Y3xUUn7TEhAT5ZgQ=\nR:restorablemongodbresources.go\na:0:0:444\nZ:Q1EsylqyFw8qwSLrLygz/YX9bd6IM=\nR:restorablesqlcontainers.go\na:0:0:444\nZ:Q1JbAKFDylsFn5LRejFmrgEU4J9ts=\nR:restorablesqldatabases.go\na:0:0:444\nZ:Q1/+4eImhoDYMTH3wPSaVoyovCONk=\nR:restorablesqlresources.go\na:0:0:444\nZ:Q1dybQWrWNAwOCj2PdRJFbrwyhz7c=\nR:sqlresources.go\na:0:0:444\nZ:Q19xN56CZHfWBljGtCfVY3wt+Rtb0=\nR:tableresources.go\na:0:0:444\nZ:Q1uaJ48CrlvsPJ0+3UYbmsaNemquM=\nR:version.go\na:0:0:444\nZ:Q1ZlMeaeamuSfprdHUDnUXOLQUxtQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mgmt/2021-10-15/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12EEm6NAtdzHbBx0vfGWXQpakS0k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/cosmos-db/mongodb\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1BZOBpjax33TenHOIKDkTX7Emb6Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2018-05-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2018-05-31/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12AIHn8NjL7Fc1+c60M8RJZpM+/8=\nR:billingaccountdimensions.go\na:0:0:444\nZ:Q1TWC6Su4cYg738XImCKNVVSv7QOc=\nR:client.go\na:0:0:444\nZ:Q1MPoXD5C8cH5fk+uQ2+z0zil/hEQ=\nR:enums.go\na:0:0:444\nZ:Q1BH5JHRyGEfMxuPaTPPzW3Ayffzk=\nR:models.go\na:0:0:444\nZ:Q1nUNd5lsRpCdfIFR+JW4w5Jzx8UI=\nR:operations.go\na:0:0:444\nZ:Q1pFsnE+yIrRWv07sDyP2upfcPXNA=\nR:reportconfig.go\na:0:0:444\nZ:Q13b/pSJ4UblIS5eikTcnKRwJII00=\nR:resourcegroupdimensions.go\na:0:0:444\nZ:Q1LhgZxKGFu2kTP/kKiFYRVqi2CXw=\nR:subscriptiondimensions.go\na:0:0:444\nZ:Q1QKOwhEy8yg9w7zmas+jv2HBzs20=\nR:version.go\na:0:0:444\nZ:Q1SWzHNXtqHN31W9hS4PXQxwSg+zM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2018-05-31/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gelcp4Z0yMLp+UEaWU8lJrqWVsg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-01-01/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gNXVWnEbdJugghIgeq+Gh7CQAzU=\nR:client.go\na:0:0:444\nZ:Q1KTEo1Jf0U996cih/6d9ZWH7L4F8=\nR:dimensions.go\na:0:0:444\nZ:Q19dJh17pRzj2ZDw4dZVcFn7uajIk=\nR:enums.go\na:0:0:444\nZ:Q1GkqxArs56xnpy1+7O5VteeUY4ew=\nR:exports.go\na:0:0:444\nZ:Q1qIRJ03HXTyrg3OJFnmg46u8NFYo=\nR:models.go\na:0:0:444\nZ:Q1dromtxqTMnkoxPeJvbP2qsAzR9c=\nR:operations.go\na:0:0:444\nZ:Q15V1j5TslxXvKo1lPwfx/8Q6ydWs=\nR:query.go\na:0:0:444\nZ:Q1r9idIQQLGL5PSg8N3emo3kZ/Di4=\nR:version.go\na:0:0:444\nZ:Q1Lg5RvLRg77LDZoLE3f95UeEg+fQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1hhFU00LZ+6dANsoZcgOGjOpCiJ0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-10-01/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19Jof9f4SjIK+CiYbZN2WNvWjxAQ=\nR:client.go\na:0:0:444\nZ:Q1sqsCKNHhCO/35Ju10zW21e4hdS8=\nR:dimensions.go\na:0:0:444\nZ:Q1hUBUkVFn2ImYUZVXuFLL5wfepc0=\nR:enums.go\na:0:0:444\nZ:Q15LqpsADJHHQgJ0WSIKUU7j08Nm0=\nR:exports.go\na:0:0:444\nZ:Q1Tbp3wgRgvW7jAKbEGm3P7Dmu6qw=\nR:models.go\na:0:0:444\nZ:Q1Zw4lIAgb0uKJYjeIkqqYMgdzii0=\nR:operations.go\na:0:0:444\nZ:Q1rzbnYUem4IniTZS9bGI673hOPrc=\nR:query.go\na:0:0:444\nZ:Q1clNSPvWbx4Wm8tdLNUbD5nDy68s=\nR:version.go\na:0:0:444\nZ:Q1zmFA7M50vINgeA4x4739p8vAE3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-10-01/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1t2YklapEEnbuJdRQzRAsYWYRrh0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-11-01/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1e6AEjitok6Ab/zGwbV8DvoEjsSo=\nR:alerts.go\na:0:0:444\nZ:Q13X2eQeJxBtNZtyTPH85G4+JFTeg=\nR:client.go\na:0:0:444\nZ:Q1yc8Rig1sqs2tLtFFXCojmRIV6W8=\nR:dimensions.go\na:0:0:444\nZ:Q1EddPB/7D6PiAD7dFnuciub56O3A=\nR:enums.go\na:0:0:444\nZ:Q1uMUzJLPkNdTMIjXTemYV1U0syPk=\nR:exports.go\na:0:0:444\nZ:Q1YrRFGNftnqMuuCKTFuwGbBle5Cc=\nR:forecast.go\na:0:0:444\nZ:Q1xs8Fo+LwYZJOcysCflAZsVt2LEE=\nR:generatereservationdetailsreport.go\na:0:0:444\nZ:Q1dL/mKiYvXtH+oeopEgj2ueE8QyA=\nR:models.go\na:0:0:444\nZ:Q1jgPukStolUVpt0q80JNV/HBjibA=\nR:operations.go\na:0:0:444\nZ:Q1fbbR77i+R7OWX9NoTm30+vD/3ao=\nR:query.go\na:0:0:444\nZ:Q1i3AtNnFiTigxNBLsEqCYC2Xg4h0=\nR:settings.go\na:0:0:444\nZ:Q1A+0gXmS87RgtkIOwOG7rhP2uCVY=\nR:version.go\na:0:0:444\nZ:Q1z2PAKqfNZNrPcPBWIAAsqqB1KZE=\nR:views.go\na:0:0:444\nZ:Q13WdIOZBezHpB9C/c9V4siUpU/U0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2019-11-01/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cDLiQvP1Js6vkMQOc5LMdZWhBa4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2020-06-01/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EDi4EZSPkMHlzxPxSV1VckG8Jw8=\nR:alerts.go\na:0:0:444\nZ:Q17rK2h1a3xcUkRaYqfmZmOvRT4Js=\nR:client.go\na:0:0:444\nZ:Q1ctnWjeuoAsP1cSBTIwy8uEw04M0=\nR:dimensions.go\na:0:0:444\nZ:Q1SvE/m0vM+oSNywfmlUFtesx8Szc=\nR:enums.go\na:0:0:444\nZ:Q1ftTZ20zvM8ThkSVheWoLko7slDw=\nR:exports.go\na:0:0:444\nZ:Q1CCX6bkA30IsW50ve9PaHUv2D1VY=\nR:forecast.go\na:0:0:444\nZ:Q1oqG1kBo3/nuj0LqqNkzuUXTHUIE=\nR:models.go\na:0:0:444\nZ:Q1IB+oD5zEg2l2D7t/mr8UxCxwl9k=\nR:operations.go\na:0:0:444\nZ:Q1G0aJ7JZglQBfb07zKGuNt3LdN80=\nR:query.go\na:0:0:444\nZ:Q1aYmpFwaQv+3ORiaAoF6jZ8ki2nw=\nR:version.go\na:0:0:444\nZ:Q1vfOJdY83kXw1lgjz7uGuC2c3lyg=\nR:views.go\na:0:0:444\nZ:Q19ABjJiUkpbu03he5T6WETVkIwpI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/costmanagement/mgmt/2020-06-01/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1H6tVAM1NjGOpLCp+3Rl3Ez5mVH0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-01-01/customerinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fdahYX3dZtMLKDLV1O6fvKY6eEs=\nR:authorizationpolicies.go\na:0:0:444\nZ:Q13FBbhcI68kwVQWb800yVyT4PweY=\nR:client.go\na:0:0:444\nZ:Q1+mdj3Yc35b13S6BYy5doaQs6v5E=\nR:connectormappings.go\na:0:0:444\nZ:Q1qn8z4t9cyp5dp3KQ9jkO7zVz6zE=\nR:connectors.go\na:0:0:444\nZ:Q1e/aLn/WKLpzhNSpJRsNQ/L6XPyE=\nR:enums.go\na:0:0:444\nZ:Q1Dcvh30Ha61rfACBKY4rrXAQ8Nb0=\nR:hubs.go\na:0:0:444\nZ:Q1oWqJdZSi0SHrB1OCF5Mc+yia0aE=\nR:images.go\na:0:0:444\nZ:Q1UZzZ8pwjuP0LWyyuYZVA8o9B8B8=\nR:interactions.go\na:0:0:444\nZ:Q10r7ug9WhvAJ5QUohtp6aJ+708NE=\nR:kpi.go\na:0:0:444\nZ:Q1Ctqaw5ujH7X40yuMb+adwRkxKyI=\nR:links.go\na:0:0:444\nZ:Q1U3F8PD7cu7zSVQTM8Ccx6TgrG9o=\nR:models.go\na:0:0:444\nZ:Q14FoVb0W5jWDDEyGxPlRrWKc3VoQ=\nR:operations.go\na:0:0:444\nZ:Q19l/UxEi11glHeuK3WiqIMo+bIzE=\nR:profiles.go\na:0:0:444\nZ:Q18q+t7KuF9Mxcphxu8oKw+bWUgmc=\nR:relationshiplinks.go\na:0:0:444\nZ:Q1vbK8KxNsbytEhOB5Ae5jBFKFU0k=\nR:relationships.go\na:0:0:444\nZ:Q16ThjYrRBfhktMgr/CCwHaNoOGpw=\nR:roleassignments.go\na:0:0:444\nZ:Q1v1YeEB94UWyTlCUI7K03Kfoz8B4=\nR:roles.go\na:0:0:444\nZ:Q1dysxED9RsuQg/khRTxJA207e8ok=\nR:version.go\na:0:0:444\nZ:Q1pjOFYTv1djkWoNERTqZrHnYXPiI=\nR:views.go\na:0:0:444\nZ:Q1zRId1RVkbS62HsWG6RD0hyCuj+4=\nR:widgettypes.go\na:0:0:444\nZ:Q1hL6at0EIathLJaGzcM7Yzj5VyB8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-01-01/customerinsights/customerinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1e8ZWiYtyzC+QI+/k63TYqq2IkdQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-04-26\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-04-26/customerinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KzyinrJhUtoT40n2ig54LyzZQhI=\nR:authorizationpolicies.go\na:0:0:444\nZ:Q1DwbKNL8cyHBfwncSwgBl1vTqeDM=\nR:client.go\na:0:0:444\nZ:Q1ILVcQtEIxHvkhVGFN6SRKtn8Mcg=\nR:connectormappings.go\na:0:0:444\nZ:Q1YgA1iS4RtrZZ0e7VnYx8sdEPcRI=\nR:connectors.go\na:0:0:444\nZ:Q1A51b1l2K7ssWQo0QlSqi3tNOX+Y=\nR:enums.go\na:0:0:444\nZ:Q1NTmNRShhpYUXp0PGE6Fl9JUHgS4=\nR:hubs.go\na:0:0:444\nZ:Q1xgmWAI7fIisk7AeEWd6otimaaKM=\nR:images.go\na:0:0:444\nZ:Q1Y4egcURnqultXZY3mpkDSabvmko=\nR:interactions.go\na:0:0:444\nZ:Q1lSRYnWgn+cxJPpVjI5KrzTXQ7v8=\nR:kpi.go\na:0:0:444\nZ:Q1lgInx6FIf7QCExviZGX6MTHp9vI=\nR:links.go\na:0:0:444\nZ:Q1rx2ODoZN/etSJ4V/4zbONhQMnmo=\nR:models.go\na:0:0:444\nZ:Q1y4uO6Vizg06VaJGKqfctuB2e3x8=\nR:operations.go\na:0:0:444\nZ:Q1QChacFtnK0DdKdFxm4PksGScX34=\nR:predictions.go\na:0:0:444\nZ:Q119Z3EisxJ7yrPKYedISagEkf348=\nR:profiles.go\na:0:0:444\nZ:Q1Xerk+zRRTcJNpCMUNvgxtXCOXQw=\nR:relationshiplinks.go\na:0:0:444\nZ:Q1vAUPvFG39YJJZKlt2Y+GG/OwGVc=\nR:relationships.go\na:0:0:444\nZ:Q1pjqsWpc4y9lPZDXSJxsFmC69j8M=\nR:roleassignments.go\na:0:0:444\nZ:Q1zvO45XGEgFAyLysrR48dpRa9/lw=\nR:roles.go\na:0:0:444\nZ:Q1przbU51CcsLCyWX7DNmCE6SBOcA=\nR:version.go\na:0:0:444\nZ:Q13tYxxqpm2V7GpnxwK1z7zoNcWbk=\nR:views.go\na:0:0:444\nZ:Q1mRgLrSHAyrhZ7guKRF9frHxx4AM=\nR:widgettypes.go\na:0:0:444\nZ:Q1GkKfwbGvKffyCyn0XVnkeo5edtE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/customerinsights/mgmt/2017-04-26/customerinsights/customerinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1d1IZJGuZcssUCGS1+agzDrP/wAU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2018-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2018-01-01/databox\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13VZ4yzNHm1qH69erxKDt/ApReTI=\nR:client.go\na:0:0:444\nZ:Q1YWEGAn1SWRBzQy8iHFrvtWzlhMY=\nR:enums.go\na:0:0:444\nZ:Q1GO01aJk4Y6Z3sk69eXMpU4aT33k=\nR:jobs.go\na:0:0:444\nZ:Q1LssCwTR/u8hs7zGDOX/tjOzUG0g=\nR:models.go\na:0:0:444\nZ:Q159t+VCIkGuFtug698Y81tyPqnGE=\nR:operations.go\na:0:0:444\nZ:Q1STITeMsR31bazdG43Z7x2w/76Ec=\nR:service.go\na:0:0:444\nZ:Q13rQAClHKe6Dey+GEZu7+UZi6u8Q=\nR:version.go\na:0:0:444\nZ:Q1nGPcLScW4bWQdBMPfI4iCwkoo64=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2018-01-01/databox/databoxapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cel3NysG0yEbxlVUMIwwWiyUdK8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2019-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2019-09-01/databox\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IJHPZweOIeTJVgRViSadibaYQVk=\nR:client.go\na:0:0:444\nZ:Q1u+Gwa9JwMFMlNI4VhVRyE8mE1VM=\nR:enums.go\na:0:0:444\nZ:Q1+rTJjGkWeSEkUXJuIzXSNx0MUAE=\nR:jobs.go\na:0:0:444\nZ:Q1b6C0YRgxLk8U5VVkv07eJTGeWw8=\nR:models.go\na:0:0:444\nZ:Q11zEkHq2c29DilqXekQighhck0ns=\nR:operations.go\na:0:0:444\nZ:Q1BrpYwjUuxBhUFLDEHuAiHXRrerw=\nR:service.go\na:0:0:444\nZ:Q1nwfxQro/KV1BMKLQKvZx8j3+a3g=\nR:version.go\na:0:0:444\nZ:Q11mzGw2hHD4zz3+JpfTWjY+YlheA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2019-09-01/databox/databoxapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pJscz/4pEPnQnZ+N+Dj3QzpTNM8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-04-01/databox\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1U9d4W/P5/BHJYW74DjMNy3qCO1w=\nR:client.go\na:0:0:444\nZ:Q1vii/u1E+bqZXLU4EH8JzVitKi0E=\nR:enums.go\na:0:0:444\nZ:Q1x3vvLqarvotEr5Vr6TXYTw9fW18=\nR:jobs.go\na:0:0:444\nZ:Q1dCaKbFn2eL5zGdPlCQhwhD0ujc0=\nR:models.go\na:0:0:444\nZ:Q1qsXU9LHsVu3nEKZaCATOgVWzT/I=\nR:operations.go\na:0:0:444\nZ:Q1mztplptxQU77pOcnbk7JqZ0QC0c=\nR:service.go\na:0:0:444\nZ:Q1xxvD4kiEKtj+pe9A6B7ZSTuPtFg=\nR:version.go\na:0:0:444\nZ:Q1VCLH2mWVL5sI3G615uaa+hc6sK4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-04-01/databox/databoxapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18FUr5AnRF9fQNDzygZ1D0cvTeB4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-11-01/databox\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1f2Pa2ZhpHUfwAN4P1VZBeFUTLrI=\nR:client.go\na:0:0:444\nZ:Q1DqplRBIg3gmZWS5sFuev+r+YC58=\nR:enums.go\na:0:0:444\nZ:Q19PlqX4/czSpceXmwSTxChf75Vq8=\nR:jobs.go\na:0:0:444\nZ:Q1MWJe0Qp1C/rRrsmIYkjOwCUcbxw=\nR:models.go\na:0:0:444\nZ:Q1O/16ZMjfXxfloxOilXWlxxcj8kI=\nR:operations.go\na:0:0:444\nZ:Q1VwHisvcHt6ons+2N75VHwtLPpOs=\nR:service.go\na:0:0:444\nZ:Q1O0mJM5QH5FCuKpqgH7iE4lrZ2mo=\nR:version.go\na:0:0:444\nZ:Q1JwX4UsuUS7gAOG1EIHV2Na4aTMU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databox/mgmt/2020-11-01/databox/databoxapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wtguUy7gCaSi3VvnADeUia2O8E0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-03-01/databoxedge\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1i7NZFYnHLOVfSTFvPnFKUYP1zmo=\nR:alerts.go\na:0:0:444\nZ:Q1Wr2D/Ta3dKQSmHBVZNvCz+ncCaQ=\nR:bandwidthschedules.go\na:0:0:444\nZ:Q1S9VitRSmbJNqG2uf3L2pqKC2J7I=\nR:client.go\na:0:0:444\nZ:Q1BoiVh6QUbiX30H/Mr1zyiIg/z4o=\nR:devices.go\na:0:0:444\nZ:Q1sZtxWYTyIjiGJIa4MQW9Xq/Mho8=\nR:enums.go\na:0:0:444\nZ:Q1RBVmhelJz5RYPbeHb6MLh3cBS2g=\nR:jobs.go\na:0:0:444\nZ:Q1bF7ZMizRxVqSrGYs1fAIVTZJzSI=\nR:models.go\na:0:0:444\nZ:Q1teXOTHULoqHKQ9NVEh91mSZ4ZNY=\nR:operations.go\na:0:0:444\nZ:Q1L94X/5pBd/sUoYrv9NuogQ/gbf8=\nR:operationsstatus.go\na:0:0:444\nZ:Q1gJK3VjXZHJBPKz44/vuBZFelNlI=\nR:orders.go\na:0:0:444\nZ:Q1vG2au2BBl6fTJQrMcQn4NGOUoFM=\nR:roles.go\na:0:0:444\nZ:Q1WBk/FD7MdkUG41YMTP+c77eortA=\nR:shares.go\na:0:0:444\nZ:Q1dHDsdWrVclAhYXsvbFE4BiOIWQs=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q1FwvRnSQW7m4Y5mfPXetRXqECIOM=\nR:triggers.go\na:0:0:444\nZ:Q1W4hS+y8NILgDqGySbE8L/N93lc8=\nR:users.go\na:0:0:444\nZ:Q1ak4eZGa+LHL/yI4Q3NEG0PgawcQ=\nR:version.go\na:0:0:444\nZ:Q1WJFZr1prmL+aVLai1jlrlnpf9F0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-03-01/databoxedge/databoxedgeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1a/vfrsw2C2ayScKrzDuqDcQtkv4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-07-01/databoxedge\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1INo1woZ9d9jtjnzHbErQhgtdCGw=\nR:alerts.go\na:0:0:444\nZ:Q1KjxUJCkmLBRblYBiBTPJ9nE3bqQ=\nR:bandwidthschedules.go\na:0:0:444\nZ:Q14BzY1fnLDbtjgA0hMGEjzAQ2vE4=\nR:client.go\na:0:0:444\nZ:Q1yZHUukIrS6yXM38e/IohX5KbW/8=\nR:devices.go\na:0:0:444\nZ:Q1sssEpS+euzBBEpw164FS7W4kfhQ=\nR:enums.go\na:0:0:444\nZ:Q1C2kvtbiHO04MnLi7nSmkh3u8+ok=\nR:jobs.go\na:0:0:444\nZ:Q13gNb/szkNoGCuFVD5OR6YGANcAQ=\nR:models.go\na:0:0:444\nZ:Q1FknIWzm5s+9ogKXycyopKBoOtq8=\nR:nodes.go\na:0:0:444\nZ:Q17eWhn9hOCFFdYFGZLy5T1BKTlXI=\nR:operations.go\na:0:0:444\nZ:Q1xVhuL6XemrBJC/R0010lvL3EygU=\nR:operationsstatus.go\na:0:0:444\nZ:Q10oaOdtPzs9+jnpQFuv1RCWr6pRw=\nR:orders.go\na:0:0:444\nZ:Q1f7UU3ZgpWt1rEtPOFx/dsqpGDWE=\nR:roles.go\na:0:0:444\nZ:Q1deTOzjG+ZJsEeHt0/YlNJCc3E0s=\nR:shares.go\na:0:0:444\nZ:Q1feI9tdW1ABcF06y2redT9Xa7ELw=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q15kh7QYi2HBcLYxHA6sp1vH3Ba8Y=\nR:triggers.go\na:0:0:444\nZ:Q1trFDJm31SEXJq6yZYZzsOK6r3KU=\nR:users.go\na:0:0:444\nZ:Q18c/GZEe8FcBWP4TWfT9bzYowK1I=\nR:version.go\na:0:0:444\nZ:Q1A9ZNv0S5+ZqgUVD4GWlwF5At2oU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-07-01/databoxedge/databoxedgeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wBlJymZRdFlraTHSKmEzMhks64g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-08-01/databoxedge\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ueRNM+8f0DNjPnbZ6oQDDMtR+BM=\nR:alerts.go\na:0:0:444\nZ:Q1Eireqbu0rQsYX3Bw2OkiMFo0C5o=\nR:bandwidthschedules.go\na:0:0:444\nZ:Q1oJV2TnwQIj0kydqrYu0hVC6fuuc=\nR:client.go\na:0:0:444\nZ:Q1p6Tcs15BXgB3sn8wWsxm0N364bk=\nR:containers.go\na:0:0:444\nZ:Q1EtSh2vYYzvIkeHALhOKXqE9m1nM=\nR:devices.go\na:0:0:444\nZ:Q1Pr3i1U+jgPeweTSsSEtYuY2/2w4=\nR:enums.go\na:0:0:444\nZ:Q1BAGhiPFccX395CqX3M7/3o3wlJk=\nR:jobs.go\na:0:0:444\nZ:Q1cBluHW27D8dNysv3uP0rbCtz1kg=\nR:models.go\na:0:0:444\nZ:Q1+HSejMoPLBkAXYkKwrXgn+O1XoM=\nR:nodes.go\na:0:0:444\nZ:Q1mdWXf9W91t7EqqxpB3eTwH/hnLw=\nR:operations.go\na:0:0:444\nZ:Q19ePRDJY4BS9FQWZOTuWym0A1IOE=\nR:operationsstatus.go\na:0:0:444\nZ:Q1goMmNPYbVq/k9f9MuUidXojte0I=\nR:orders.go\na:0:0:444\nZ:Q11pu7q/h2AJz/unG/ZZ6eL7QDnBw=\nR:roles.go\na:0:0:444\nZ:Q1f5YOzedqHwOxsyvHxBU9Ve5F8i4=\nR:shares.go\na:0:0:444\nZ:Q1ymD/rOhYmHOnZW+gXdg9m4xN5wU=\nR:skus.go\na:0:0:444\nZ:Q17X4BLhNTnRkDOVmRf+K0Q62rr8k=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q1aGlT2wJc7IT/TgOlugxng2MQK5M=\nR:storageaccounts.go\na:0:0:444\nZ:Q1Y5jQy1JX3tSXDoJGxURYTTRv6vo=\nR:triggers.go\na:0:0:444\nZ:Q1ooRBP0AEBb0KLc22X/Hlpg4N2Wo=\nR:users.go\na:0:0:444\nZ:Q1funUgcb+/Uc5o8ZxYc/8JA1iwfo=\nR:version.go\na:0:0:444\nZ:Q1PTXU4dACLIRqWcjeZoKwvQbWYKY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2019-08-01/databoxedge/databoxedgeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q131apzNpdP/n5Gx5jDu3+4bAXbag=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2020-12-01/databoxedge\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fe5UOjmNhqVZ8FpNdsag+zKFoGI=\nR:addons.go\na:0:0:444\nZ:Q19fH16jh73+KqkBllU2iPRulszbI=\nR:alerts.go\na:0:0:444\nZ:Q1/Fnm5SMgfbrLUwCj1eoJNwwqMNQ=\nR:availableskus.go\na:0:0:444\nZ:Q1Jy/WxITFix05/P8Z9352cS6Gri4=\nR:bandwidthschedules.go\na:0:0:444\nZ:Q1qleLhYCv7MCYcAro2abH2iVlgYc=\nR:client.go\na:0:0:444\nZ:Q1y3N1tlAkVeGSrqfJaRIGap1woN4=\nR:containers.go\na:0:0:444\nZ:Q1P05ygFXmkaNU8puVH0c6qLvz+Js=\nR:devices.go\na:0:0:444\nZ:Q1zMUahFFrdLQwrqBEgFJzN0RYtWs=\nR:enums.go\na:0:0:444\nZ:Q1koNJmaqY6YW1IrIKj/lQ4SwuFM0=\nR:jobs.go\na:0:0:444\nZ:Q1MmUQGVPUzA754ZEEceRYRU5BJXE=\nR:models.go\na:0:0:444\nZ:Q19X3vIP6Ve1RhDk79B4rRce2I1Tg=\nR:monitoringconfig.go\na:0:0:444\nZ:Q1RBrrWTxL8WSQ+gUBzoVLc3ftLdk=\nR:nodes.go\na:0:0:444\nZ:Q1ioTVuDeTa1D3IakCH/3zaK1u0Gg=\nR:operations.go\na:0:0:444\nZ:Q1FNsAbqMoMJKfG+jq2/kScd0a8uA=\nR:operationsstatus.go\na:0:0:444\nZ:Q1dhT54Li/PkNElN5dmMlhg9LCGXY=\nR:orders.go\na:0:0:444\nZ:Q1EWjpmE7kJcPfm3d4GTpFnattjJ8=\nR:roles.go\na:0:0:444\nZ:Q1q0vPFD1WK+QOqaY8/FYXORtthcY=\nR:shares.go\na:0:0:444\nZ:Q1BzjypaeZHUSeyH80c6BKDDTvDfY=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q1bNTwro2l2AkOQ87LI0kJ2Vw6BwY=\nR:storageaccounts.go\na:0:0:444\nZ:Q118SZ4u8InA3EYu7s+UtwsWZ5if0=\nR:triggers.go\na:0:0:444\nZ:Q1N9A7ZZz6J7dUooMXL8yptxgR7yk=\nR:users.go\na:0:0:444\nZ:Q1+b9Z1poPyrmw2tUp8tqOeSSiDsA=\nR:version.go\na:0:0:444\nZ:Q1VE1idzoFI1eq0Lkw6Wq+BszQyYg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databoxedge/mgmt/2020-12-01/databoxedge/databoxedgeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18UXS777phLDLy93NCQDkfs5WGcw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databricks\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databricks/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databricks/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databricks/mgmt/2018-04-01/databricks\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Jg+w7NbLyUx4K38iv/nZdN+pC2c=\nR:client.go\na:0:0:444\nZ:Q1vGyOJBiZF6LighBdbeRc4NYURQo=\nR:enums.go\na:0:0:444\nZ:Q1mruleMuGPh/6/gGJxBEIfwHi0c4=\nR:models.go\na:0:0:444\nZ:Q18e5K5kl2v8gwTH2JN/mRqgHFwkI=\nR:operations.go\na:0:0:444\nZ:Q1DxhuxDTEeByuBvEUOAeELO7txd8=\nR:version.go\na:0:0:444\nZ:Q1IIZ4EO3jTYbMF/fPkB+WMtJWAA8=\nR:vnetpeering.go\na:0:0:444\nZ:Q12DTeXe2FCKKmCy4dCB5mIhlvtzE=\nR:workspaces.go\na:0:0:444\nZ:Q1n789VfDOH01dX8hhb0IR3m8ZXZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/databricks/mgmt/2018-04-01/databricks/databricksapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mDiEe68Q/ciIBltOoVxjrTuuLu8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datacatalog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datacatalog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datacatalog/mgmt/2016-03-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datacatalog/mgmt/2016-03-30/datacatalog\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ce7Rllv5BJ4ziod2bXnOHCS7m+4=\nR:adccatalogs.go\na:0:0:444\nZ:Q1k7KYhp/4VR/iYLDw2xgvkmMHp7Y=\nR:adcoperations.go\na:0:0:444\nZ:Q1rTBLyFpKX9kUApYqTIeeFfsDp6I=\nR:client.go\na:0:0:444\nZ:Q1v6PxHImSALqlOTjGJ5Ff6kzefjE=\nR:enums.go\na:0:0:444\nZ:Q1S5iHpJ/nO6+eT5vpUnZMKYfTcJE=\nR:models.go\na:0:0:444\nZ:Q11/UbusFH3U0kHx53b/JYC857i3M=\nR:version.go\na:0:0:444\nZ:Q1NLQ0iWbF1V0mTl0h+x0slzgbn60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datacatalog/mgmt/2016-03-30/datacatalog/datacatalogapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LFKEjZkAMFTb2Hb2rOOKZiisG7I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datadog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datadog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datadog/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datadog/mgmt/2021-03-01/datadog\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SbQEiaHGYz++pC19E96ooM6HrN0=\nR:client.go\na:0:0:444\nZ:Q1E2WVhN6cNftchjadmjpb8DG8qIA=\nR:enums.go\na:0:0:444\nZ:Q1MfaMH0q6d8r4ouA+JLa6cWeVsvk=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1vzHWx+wHTXRMPEcRMg1sPDGbxko=\nR:models.go\na:0:0:444\nZ:Q10UtNWwXMTRj3PYyYd/zw4DF9ECE=\nR:monitors.go\na:0:0:444\nZ:Q1Y/86DOZw5oRjfHpc9Uw7ZJlS2nw=\nR:operations.go\na:0:0:444\nZ:Q1GdncPQ1wo6Cgdu0LhKtZwuHfYVc=\nR:singlesignonconfigurations.go\na:0:0:444\nZ:Q1G7Cfl//I/ml+86/dlnZmkANz06o=\nR:tagrules.go\na:0:0:444\nZ:Q1NI8zD5Tx0Rj9uv7lUNP1Qsivvf0=\nR:version.go\na:0:0:444\nZ:Q1mEY/3t5ZgLwqe4+Fgi0/bhBh3m4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datadog/mgmt/2021-03-01/datadog/datadogapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mg00oi75NTR08Uf2DRIyM1Svti4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datafactory\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datafactory/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datafactory/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datafactory/mgmt/2018-06-01/datafactory\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1iLC+MThiShdOFKp+n4wynVk2rHM=\nR:_meta.json\na:0:0:444\nZ:Q150lxIPUoLKmLGQNr5AVd5J1x868=\nR:activityruns.go\na:0:0:444\nZ:Q1Vkgo2wLfXWaojVvJ3M31FUPAJ+g=\nR:client.go\na:0:0:444\nZ:Q1fjyA1HtgRw2YGWtDsWZ++h2SnTE=\nR:dataflowdebugsession.go\na:0:0:444\nZ:Q14butHmRZPDlw7lmeGLxDuvDL/8Q=\nR:dataflows.go\na:0:0:444\nZ:Q1ZFeZ4T6eQuriCfdHniIJwM8JPl4=\nR:datasets.go\na:0:0:444\nZ:Q1QYFED57jLhM6oMcCpgaAAmcMGuk=\nR:enums.go\na:0:0:444\nZ:Q195jpJ6jdhAfhiRv2Ce++GIhW4oE=\nR:exposurecontrol.go\na:0:0:444\nZ:Q1Q5QB8IxotJ045OJKDM7QEH3W0io=\nR:factories.go\na:0:0:444\nZ:Q10Ir3NhrGtesPrcgFpksjRM3rZ2I=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1YZtcHzeCyYkq8OE6vcUA/sv371c=\nR:integrationruntimeobjectmetadata.go\na:0:0:444\nZ:Q1aw+q1vtEHuHIQCfasL4cfLyJuYY=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1yqOxJeKfbinQBycpJDBvlUiqGrU=\nR:linkedservices.go\na:0:0:444\nZ:Q1QmHLzZUAt/MsHxx7CpICn72Kvo8=\nR:managedprivateendpoints.go\na:0:0:444\nZ:Q1PqHMuZMKySj20FqBGUrQax9O0V0=\nR:managedvirtualnetworks.go\na:0:0:444\nZ:Q1ISNomMiowb7lsx1l1emXkAs2mOs=\nR:models.go\na:0:0:444\nZ:Q1Ck6j0Z45ETLO8aUl43AdSc/gy5g=\nR:operations.go\na:0:0:444\nZ:Q14dbusJqHIShrGK9D92EgUacZud8=\nR:pipelineruns.go\na:0:0:444\nZ:Q1dgs8i6zcDfGPkqSqZ0Vio2b/FBg=\nR:pipelines.go\na:0:0:444\nZ:Q1lcev79pzPtB9dJ5ULmMoqQ9Uy7w=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1VFREkilIDwdHF3QZu7WRxtnJ/FA=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1sDBVaM54VtDYx5hRYbtIipl/MGY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1LdPhIin3GNAIpxo38/VCQtrpHxY=\nR:triggerruns.go\na:0:0:444\nZ:Q1vBok8tkV9ZEcQ7TrImzmtNcXqWk=\nR:triggers.go\na:0:0:444\nZ:Q1+WxWgj01vywl3br3em3dvhvb/4s=\nR:version.go\na:0:0:444\nZ:Q1ZvcyC6wJreXwRvwqzexVCUPIfqs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datafactory/mgmt/2018-06-01/datafactory/datafactoryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1+vC/GpfCFYVJr06Bt+ikwVe7gXI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01/job\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1FmN9fEUEUpAtcoHzAOyIG2K/xcA=\nR:client.go\na:0:0:444\nZ:Q1ow14Dy2MLkT6UGSyB6ezPs+lzSQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1kQN1XDC2z4fVQFFzX5MaPaOThzo=\nR:enums.go\na:0:0:444\nZ:Q15pBKkB3DolF1vju66q43qivPrzo=\nR:job.go\na:0:0:444\nZ:Q15ZV6qKH8K8Fp2Z9brqF80M1DyQw=\nR:models.go\na:0:0:444\nZ:Q1tZc0bU1O8d9m01BlSRy9tg3NWaQ=\nR:pipeline.go\na:0:0:444\nZ:Q131kN5p81qGu+roeByFoB4EeSUSU=\nR:recurrence.go\na:0:0:444\nZ:Q1vhbSdfWDVjoWyDGoSodV6lmCqRo=\nR:version.go\na:0:0:444\nZ:Q1wb9hn/CSjwNWCQV2EM1CHz9931U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01/job/jobapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11x7Xfm6eVavZrLUOsIjalcuFX/8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01-preview/catalog\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1ZNv+VZ1vduFL36zb2qp4bHXGMGs=\nR:catalog.go\na:0:0:444\nZ:Q1sE67lzG3w3rkjS8fnZsNLOtIIXo=\nR:client.go\na:0:0:444\nZ:Q1ikEwdalBwn30ekbcltSzsI1O6BA=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1YXX88f23N5bG/7Kf8vnFLk6nM/0=\nR:enums.go\na:0:0:444\nZ:Q1g7ETuWEhwMykFSIQMX88w9t74z4=\nR:models.go\na:0:0:444\nZ:Q1jAtrLudrq6fExPOuZvatlIlwQgk=\nR:version.go\na:0:0:444\nZ:Q1r7hB+cBA+dAMlpySH1MdhAz2vnc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/2016-11-01-preview/catalog/catalogapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LUIIGHxoNtmLNk+yellvOXkITiU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/mgmt/2016-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/mgmt/2016-11-01/account\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13i3klQ79hxFa8y+5Wrz45HFRtZg=\nR:accounts.go\na:0:0:444\nZ:Q151sIK6BjgE87hcw8FExznlIFa/A=\nR:client.go\na:0:0:444\nZ:Q1y7Yv3AGOt1hBeXobnxvPEbsFGrA=\nR:computepolicies.go\na:0:0:444\nZ:Q1IUHp9GXQinyvNbSz3emieN7unTY=\nR:datalakestoreaccounts.go\na:0:0:444\nZ:Q1sQ0L6Zj0HvBqoWaA9ZjLV5nRaHs=\nR:enums.go\na:0:0:444\nZ:Q1ELMlmWC0xVw22Jlfo9iiAxuB4uw=\nR:firewallrules.go\na:0:0:444\nZ:Q1VAVTwvxB4TC5f1OF/af40MclOTY=\nR:locations.go\na:0:0:444\nZ:Q1rN/VEujCgDVWU7tCMCAWxm5eTC8=\nR:models.go\na:0:0:444\nZ:Q1OaFUDrNIH1IJy/mA5kQCq0dwK30=\nR:operations.go\na:0:0:444\nZ:Q1c+R6/MXo2eZvVv1IwLfXiCux1bA=\nR:storageaccounts.go\na:0:0:444\nZ:Q1RSGgoEeNna811hXWL2VenkIhk5U=\nR:version.go\na:0:0:444\nZ:Q1hYHNYpBmFuVCHHvrt9QFv5iJMjU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/analytics/mgmt/2016-11-01/account/accountapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QjLebRjauS+Jv9am4tIduF7MFso=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/2016-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/2016-11-01/filesystem\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1+b+OaIwHc38tOVdc9kTiyQMfMaI=\nR:client.go\na:0:0:444\nZ:Q1nXYWbCPJ9abWK+KJUETC1xeTErU=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1+VZX9q+wOwqEizrXxtCUP81jzCg=\nR:enums.go\na:0:0:444\nZ:Q1841dobcM8GRJFCGaDaFqsWmXZPI=\nR:filesystem.go\na:0:0:444\nZ:Q1OySaHi/wfnybpwL3U+j0dqWsZhg=\nR:models.go\na:0:0:444\nZ:Q1Dyz8va6U0Al1WWYDBtGLPF4r3+U=\nR:version.go\na:0:0:444\nZ:Q1ZwAHU3IOBTwosSWECLjsGqFhNR0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/2016-11-01/filesystem/filesystemapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1+Rs4AR0muJPDMNF4wIDPk6aa/II=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/mgmt/2016-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/mgmt/2016-11-01/account\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ABi7HIJc51of4ZcxSLH9CQPLXvE=\nR:accounts.go\na:0:0:444\nZ:Q1ubha22t29ej6Qg1CADK26vlhMVg=\nR:client.go\na:0:0:444\nZ:Q1zDSW3d568lwqIfYqObeZlNz5swU=\nR:enums.go\na:0:0:444\nZ:Q1FkKbpOsJdFISsnTjGXmgMu2CeRg=\nR:firewallrules.go\na:0:0:444\nZ:Q1q+SAIxVF1LylrDPmGk6FXmIQ4us=\nR:locations.go\na:0:0:444\nZ:Q1iDs91icTFyplJxyiqyZsG+2XgcM=\nR:models.go\na:0:0:444\nZ:Q1dhAZvCP256IwLhIObw31XT5YcAw=\nR:operations.go\na:0:0:444\nZ:Q1WgWaWhW8Pcp7JWcWT2a2Kwbljaw=\nR:trustedidproviders.go\na:0:0:444\nZ:Q1KIkkvfpaF2DBDTmGzCpam2sfwn4=\nR:version.go\na:0:0:444\nZ:Q1hYHNYpBmFuVCHHvrt9QFv5iJMjU=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1Hl1RcgHJh3xbxmLpwDqAlf2xrVA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datalake/store/mgmt/2016-11-01/account/accountapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12kuwGY+AJ2U7y9IjD1NKcImegVc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datamigration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datamigration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datamigration/mgmt/2018-04-19\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datamigration/mgmt/2018-04-19/datamigration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bkvB9QnRlOQiXrtYXtbNc7BXh2Y=\nR:client.go\na:0:0:444\nZ:Q1Dq67OJCca60+eP7Cd+UrzvYtsc4=\nR:enums.go\na:0:0:444\nZ:Q17XtYLaNRC8+MryK3sFrHf4kG6O4=\nR:models.go\na:0:0:444\nZ:Q1OhxbXW4OWF+S+lc/lCFKCOesho0=\nR:operations.go\na:0:0:444\nZ:Q10E7FgLLalm56sSF4WgimmIECbn4=\nR:projects.go\na:0:0:444\nZ:Q1anBHrEjzxiPox0qRjBeFBDzhz5g=\nR:resourceskus.go\na:0:0:444\nZ:Q13IGBReBRJvtViPXtcp6ngt6040g=\nR:services.go\na:0:0:444\nZ:Q1nPStu/OPrYSw4MzUV+byfvv7d3A=\nR:tasks.go\na:0:0:444\nZ:Q1I07pMMh2IAHh34KJtKLoz54/has=\nR:usages.go\na:0:0:444\nZ:Q12uCYl6z6pZyet9tbhv0rQty+Khs=\nR:version.go\na:0:0:444\nZ:Q1UyeVqV3Ijua4uL6YJ8Dk+x/TGhQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datamigration/mgmt/2018-04-19/datamigration/datamigrationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1x0q6c9e7SHrLTeA7QS/fo3r4Sz8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-01-01/dataprotection\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/ICvDms1TGH1AP3YxM6Stp8Dx9Q=\nR:backupinstances.go\na:0:0:444\nZ:Q1iqE3jlbLVjBqKIF813wGCnZI5d4=\nR:backuppolicies.go\na:0:0:444\nZ:Q1/iiMH2aKnYEwymbEw37xVOxI4Yk=\nR:backupvaults.go\na:0:0:444\nZ:Q1Gctt6vrBuFtTnKD7r2UAzK2w0aQ=\nR:client.go\na:0:0:444\nZ:Q1IkSUBjgD6mHJIYK8SrJh0r1pVDM=\nR:enums.go\na:0:0:444\nZ:Q1FBMG7rniTyEocysz/9SFCs/BrZ4=\nR:exportjobs.go\na:0:0:444\nZ:Q1W/xoWl7q39YbNymPUbItPCMbjig=\nR:exportjobsoperationresult.go\na:0:0:444\nZ:Q1XlrFyc7VOGeY15TF4XtRF7lj7wc=\nR:findrestorabletimeranges.go\na:0:0:444\nZ:Q1UhETAciln27cIQPeQw9E4WFG8LY=\nR:job.go\na:0:0:444\nZ:Q1WjZqcQbXy8rgfL7Ydw8UIW+vZtQ=\nR:jobs.go\na:0:0:444\nZ:Q1RQhWQJxvOoqy23RZtgBqXL5j46E=\nR:models.go\na:0:0:444\nZ:Q13sqC0rEbIf+s+pZVym8vwWyQbO4=\nR:operationresult.go\na:0:0:444\nZ:Q1y8n+WdEGt2b1zknLHNmxHI13hkQ=\nR:operations.go\na:0:0:444\nZ:Q1rI2ftOJS1+yDoiLxMh3rccSYluQ=\nR:recoverypoint.go\na:0:0:444\nZ:Q1Znj9U+OOQqQu1Y9C5hVYdw06ix8=\nR:recoverypoints.go\na:0:0:444\nZ:Q1cQlDfVsY0Z4sGt+hMXVrVPj1w3s=\nR:version.go\na:0:0:444\nZ:Q1LKEotI1B3pKWjvsv+bTeaPWdHXs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-01-01/dataprotection/dataprotectionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1onxWPJOmWOz9yVJcLYT8kmNtS38=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-07-01/dataprotection\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1D/L8q2cm8tmaRyPmbCZwWcwHFm4=\nR:backupinstances.go\na:0:0:444\nZ:Q1OklAEfaZuHZfRy+EH3qCbxaBYb4=\nR:backuppolicies.go\na:0:0:444\nZ:Q1RhNEQT0kTgC8Xww1J9WCQwZtzw4=\nR:backupvaultoperationresults.go\na:0:0:444\nZ:Q16Tyb+wd2wL6PhvCIF0OJaYUoBII=\nR:backupvaults.go\na:0:0:444\nZ:Q1YClYRAHyR1MWROquB2X72Ix4uvc=\nR:client.go\na:0:0:444\nZ:Q1pDaeQXOHWBmsBSloXGOBL9Ji3p8=\nR:dataprotection.go\na:0:0:444\nZ:Q1/Dpm5Q0uwHKPxObCG3rLoM0vLqM=\nR:enums.go\na:0:0:444\nZ:Q18++CRXgbiXs+8O45VUV9QkxfLc0=\nR:exportjobs.go\na:0:0:444\nZ:Q1dma0zaP5p7TEN1myj8XAaQRr2sM=\nR:exportjobsoperationresult.go\na:0:0:444\nZ:Q15eo42PRVVE0CnTYgChIqFYbx7EM=\nR:jobs.go\na:0:0:444\nZ:Q1N+k5SZPbmydXn2WHPb3FbVpfKhE=\nR:models.go\na:0:0:444\nZ:Q1BtNsttPw30rHMjQkD0YDlyzAA80=\nR:operationresult.go\na:0:0:444\nZ:Q1KFgDMoBBc/a74+8ak8LFHm6AQCw=\nR:operations.go\na:0:0:444\nZ:Q1M4jC8MESnItaCmUvqipd8Nkdgx8=\nR:operationstatus.go\na:0:0:444\nZ:Q1jaI08kw/uoS1aCQn5KqUKTY1EgQ=\nR:recoverypoints.go\na:0:0:444\nZ:Q1SQ4AV1SadbMaZJkOAIqtcbqr6cQ=\nR:resourceguards.go\na:0:0:444\nZ:Q1HYxEe+ky6xR2sQ5XdLG8b0Lk/Tc=\nR:restorabletimeranges.go\na:0:0:444\nZ:Q1UlRkWXEmIHjagb87VCBz6mF0220=\nR:version.go\na:0:0:444\nZ:Q1DpYy2PZNAs/HwoFcAmJ5eLBx4Tc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dataprotection/mgmt/2021-07-01/dataprotection/dataprotectionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1V333aH96MWje2IMhyIQPTUGI4Qs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datashare\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datashare/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datashare/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datashare/mgmt/2019-11-01/datashare\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Dg/lJXDAX8546Z7mM+5VS4soLw8=\nR:accounts.go\na:0:0:444\nZ:Q13YcYbQjmt3dtkmtW7k2c9W8jtjQ=\nR:client.go\na:0:0:444\nZ:Q1nS3/5rFVLq1/xUWW/PL8VQyZAV8=\nR:consumerinvitations.go\na:0:0:444\nZ:Q1sS/eFx8ixstULAGtehR7DmKVQkM=\nR:consumersourcedatasets.go\na:0:0:444\nZ:Q1gmxIW46S54pnyx5TDTdf5i69cdQ=\nR:datasetmappings.go\na:0:0:444\nZ:Q1Q23WPIPFj12dSmtqxHycIsPZpPY=\nR:datasets.go\na:0:0:444\nZ:Q1pDkIl91rT3Pv2AOlrfx73O/IdNw=\nR:enums.go\na:0:0:444\nZ:Q18DAUamMcOoY/dPbgB1kb9UnVytE=\nR:invitations.go\na:0:0:444\nZ:Q1oVpEFVfvQO8LV8OBZIZcQenADp8=\nR:models.go\na:0:0:444\nZ:Q1ywQEtcskazjvCqiWs+5XgxNHpxY=\nR:operations.go\na:0:0:444\nZ:Q1T2Sf8if/IlnMxwy1+wjpeeTuHBA=\nR:providersharesubscriptions.go\na:0:0:444\nZ:Q1PZC79RZbb6ybS9smKTmckgMbyZA=\nR:shares.go\na:0:0:444\nZ:Q1AvmKl3iyR+9+ZUsXVOzIURbwai8=\nR:sharesubscriptions.go\na:0:0:444\nZ:Q1LSKra0X6qbN/+1e2djsl4tqnfno=\nR:synchronizationsettings.go\na:0:0:444\nZ:Q1/5MSXBZCDJUDUbKEwBbFcmgu/c8=\nR:triggers.go\na:0:0:444\nZ:Q1TQyDqjByygPX421Crm5g+tt5kZY=\nR:version.go\na:0:0:444\nZ:Q1/P4RRWHuKCkxNjXpQXXCmWKwsL4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/datashare/mgmt/2019-11-01/datashare/datashareapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xaqUiv45hN0el9NtN9FzscbFxyQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/delegatednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/delegatednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/delegatednetwork/mgmt/2021-03-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/delegatednetwork/mgmt/2021-03-15/delegatednetwork\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mpA/oyqTE4urIipVxq052NJ9b+w=\nR:client.go\na:0:0:444\nZ:Q11T+1vQuPbmlhbkm4F6YuZ7O8UOM=\nR:controller.go\na:0:0:444\nZ:Q1gY6oG/ejnS2BG6AozYTXJkof32w=\nR:delegatednetwork.go\na:0:0:444\nZ:Q1zsvA5AzUlWmTvUYRioFbLdTx4Ko=\nR:delegatedsubnetservice.go\na:0:0:444\nZ:Q1rLAcskXxcAnbaR5tuTHucq2YoT0=\nR:enums.go\na:0:0:444\nZ:Q1OzRvh6X+iXxy8pcTPtcMH/fJbF8=\nR:models.go\na:0:0:444\nZ:Q19kSyoh6MuZdxXv2FQYxbxadLQFQ=\nR:operations.go\na:0:0:444\nZ:Q1uBoSwag+bEhy4VcufLk80wMe/cM=\nR:orchestratorinstanceservice.go\na:0:0:444\nZ:Q1bIFoGIywu3thSF1MLlsLGUVvCzA=\nR:version.go\na:0:0:444\nZ:Q1zExeuZwtMC5uIrvscgsZ/DNQ7xk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/delegatednetwork/mgmt/2021-03-15/delegatednetwork/delegatednetworkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DOPudge5LEBvF6xIGQnwi0XQiPQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devspaces\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devspaces/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devspaces/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devspaces/mgmt/2019-04-01/devspaces\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1oS8u0f0YSMinmIr7uSNbwkKZbXs=\nR:client.go\na:0:0:444\nZ:Q1nRVyBk+L/h9pL8iUaSQgYaKj30I=\nR:containerhostmappings.go\na:0:0:444\nZ:Q1cjNFQCRZBOk35Q8G0I9jWjznDA8=\nR:controllers.go\na:0:0:444\nZ:Q1NCB77o4LEDffuf2CSHnget9xf3I=\nR:enums.go\na:0:0:444\nZ:Q1sby7/fqiCueDWelyXYs3QNB4MqY=\nR:models.go\na:0:0:444\nZ:Q18S/A2PHgBT1rA2ll8NVbIiQLlC4=\nR:operations.go\na:0:0:444\nZ:Q1Kig1bCIbQhLVlt0VFuGwrG/seAs=\nR:version.go\na:0:0:444\nZ:Q1qxUXuEKQKkH6Iw3hnlnTkyERwsA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devspaces/mgmt/2019-04-01/devspaces/devspacesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Qp0gB6AF/FFCBjgsesZUTtAaIv4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2016-05-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2016-05-15/dtl\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xpj2v7kPUPguSLdtOFH7Go3XSo8=\nR:armtemplates.go\na:0:0:444\nZ:Q1y7oPVUUVE2KyxGLbdkj2QEFegss=\nR:artifacts.go\na:0:0:444\nZ:Q1rdwbAYLvKQTx8Q/nM35GoS6Cous=\nR:artifactsources.go\na:0:0:444\nZ:Q1n3lKdaexObWY1UYdsx5HWz33h0U=\nR:client.go\na:0:0:444\nZ:Q19E3JtEct+LMpYJO7Xut0sOaGdW0=\nR:costs.go\na:0:0:444\nZ:Q1ZaIaOn03IpQ2OYIsRkhh7aldgzo=\nR:customimages.go\na:0:0:444\nZ:Q1pzx25OShk1Q83wEPntgtNzf1F9k=\nR:disks.go\na:0:0:444\nZ:Q1tvKqV7CEds8U7oNCtsKv8ED8AUY=\nR:enums.go\na:0:0:444\nZ:Q15YpJw9HynHbD0mhF82a/mUTGxhU=\nR:environments.go\na:0:0:444\nZ:Q1B7wLhl6d72bYVpvP2+pP+sAden4=\nR:formulas.go\na:0:0:444\nZ:Q1tGlmKDcmPK9wN1Pru2V3PhMwZ+E=\nR:galleryimages.go\na:0:0:444\nZ:Q1CsJubsvac6zJVsKJEOG6Y8C0B74=\nR:globalschedules.go\na:0:0:444\nZ:Q1zGiUTOl9I39uVuWNITDjPQ/rqUI=\nR:labs.go\na:0:0:444\nZ:Q1XFLHopkNtGLjnxWk/+dh/Zc6+kw=\nR:models.go\na:0:0:444\nZ:Q1VIiV3UPmr8E/DIVwMQXIP3LsoRo=\nR:notificationchannels.go\na:0:0:444\nZ:Q1areXgPMJjeBJimvTbmL9noWagaQ=\nR:operations.go\na:0:0:444\nZ:Q1cW4Rlu/1wkWkoHzDPgFacZdjAwU=\nR:policies.go\na:0:0:444\nZ:Q1iLPeWXQcUsvQLC0zGQ6nDlalkdg=\nR:policysets.go\na:0:0:444\nZ:Q15e7N8AA/0T2lTvxxfY7cZGRHEjQ=\nR:provideroperations.go\na:0:0:444\nZ:Q1qtmc2EAYPUvOUmifOEjo+NsFCPE=\nR:schedules.go\na:0:0:444\nZ:Q1GYHr6IieHeXjmDdy2iOmTIkO4wQ=\nR:secrets.go\na:0:0:444\nZ:Q1u2Mz2qDXzdyGbWH8QX6QUd+tPhc=\nR:servicerunners.go\na:0:0:444\nZ:Q1GF/A4xOY77SWZUHCxhEAFx5id6c=\nR:users.go\na:0:0:444\nZ:Q1Rxa/yLcCT7kjgGGvY0Tu2hM0gAE=\nR:version.go\na:0:0:444\nZ:Q1D0vjuatN9h+VWoemstu94S/rln4=\nR:virtualmachines.go\na:0:0:444\nZ:Q1Sz/TUhsCYPVbbDTC3qvh8HSfG2g=\nR:virtualmachineschedules.go\na:0:0:444\nZ:Q1KyvDYKSRDAmi3gmfk0fnhte1+DU=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1nq1Bq0n1RNAsyBID6bT1mJ8Lpvg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2016-05-15/dtl/dtlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1leS6RZIunho+vRGCZ6b0yUVmCcw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2018-09-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2018-09-15/dtl\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FUBwHRl11sKpLV4x1wFgvS2R6Ds=\nR:armtemplates.go\na:0:0:444\nZ:Q1dVqCBpmA9zJpllpyhvQGdP5zn2c=\nR:artifacts.go\na:0:0:444\nZ:Q1lQwxMMFv8kqIECFYH9BRR4P7NVY=\nR:artifactsources.go\na:0:0:444\nZ:Q1Ll9Ru6HqgwwMZJ9qsevZ0RsllXk=\nR:client.go\na:0:0:444\nZ:Q1hmeYR/GWA4+mlb2WKEDe1I1KtHg=\nR:costs.go\na:0:0:444\nZ:Q1WlEiXgnAjfn2G6TK3ogVo5wdKZ4=\nR:customimages.go\na:0:0:444\nZ:Q1UpztK/80ePYsHpOZcUB9mYAkG+c=\nR:disks.go\na:0:0:444\nZ:Q1IvXEeGvyaAuvkfC45Vptoh3sqEE=\nR:enums.go\na:0:0:444\nZ:Q1jU6VqaYQONYnVXz1jbDN9+emJD0=\nR:environments.go\na:0:0:444\nZ:Q1GQlrdvBxQfg6lqf2oFeLl7cQ5Kw=\nR:formulas.go\na:0:0:444\nZ:Q1KaCM4SX0SY5kj+Qjy8wu3mgcrCc=\nR:galleryimages.go\na:0:0:444\nZ:Q17Appu6e+X4oxAgJ5hrQvEZjtZr4=\nR:globalschedules.go\na:0:0:444\nZ:Q1Nt/rCMvKHz0Jc/t2oK3H7v6bHSg=\nR:labs.go\na:0:0:444\nZ:Q191DMEp1bCRGlVtGsdUQvN/VpOS4=\nR:models.go\na:0:0:444\nZ:Q12ugv4Sw86Ag4haCBQQmCsooovkk=\nR:notificationchannels.go\na:0:0:444\nZ:Q1VZmIT9JS/YdDMKqySPC67omOwn8=\nR:operations.go\na:0:0:444\nZ:Q1gr7Q5MUpIWc78EeLZ8dO6WwJ0zg=\nR:policies.go\na:0:0:444\nZ:Q1b7Ksgz0pziwVg9QAF6+L691Vw/c=\nR:policysets.go\na:0:0:444\nZ:Q1f7AvuApLVm6KlNg5ZmLM3pwyStA=\nR:provideroperations.go\na:0:0:444\nZ:Q1RJoo4YVKPFbVnjWg7tcMM3Kjdhg=\nR:schedules.go\na:0:0:444\nZ:Q1yWjrVlY9WXxLA+Ij8oXP8mpVcC4=\nR:secrets.go\na:0:0:444\nZ:Q1UG+9Y34L+nuz6L34w73YwRquDqc=\nR:servicefabrics.go\na:0:0:444\nZ:Q11lRQmKG47NKhjuqAGkhFpP2SSzA=\nR:servicefabricschedules.go\na:0:0:444\nZ:Q1UtLivwar/LkROz9yGeSl2eeNcHw=\nR:servicerunners.go\na:0:0:444\nZ:Q1m1y2b/57tVowA+NOJaeqdEoc8CY=\nR:users.go\na:0:0:444\nZ:Q10hhR6Mh6FAC7tZgqp9sqXB+2fgg=\nR:version.go\na:0:0:444\nZ:Q1ioT/cGYiXuQ2Y8r9+79AYphpC3g=\nR:virtualmachines.go\na:0:0:444\nZ:Q1UxFvB0leJKSHNZmVm9mgGMJqV7Q=\nR:virtualmachineschedules.go\na:0:0:444\nZ:Q1wwS2Evv8avDNGlQ7ahcrlOubDs8=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1M9Pk+WQfigJ/InaKZDHmyk1t9ls=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/devtestlabs/mgmt/2018-09-15/dtl/dtlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zJtSL5bIIf04F+VgQdHdijMUvvA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-10-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-10-31/digitaltwins\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OqiyMdN5ghRMae3aK0LQS4sJxx4=\nR:client.go\na:0:0:444\nZ:Q1eVYXtzOEnPYkzG4LrqsrR4d/s4Y=\nR:digitaltwins.go\na:0:0:444\nZ:Q1AidiRD2aSGxonBgnepAgkWP+e6E=\nR:endpoint.go\na:0:0:444\nZ:Q1m9aGl2mp1wrNpk8hxdLwwlE3p6w=\nR:enums.go\na:0:0:444\nZ:Q1zdAVc84FuzQrPOXQduI9q7ENx0E=\nR:models.go\na:0:0:444\nZ:Q1hbookXXz3wwXWDv8yDQIntzQx5U=\nR:operations.go\na:0:0:444\nZ:Q1yboOoUs91uRhLQTSA/FJKsQ+r1A=\nR:version.go\na:0:0:444\nZ:Q1qXlbsZyB+l+TX0ygNOSesyWXsE4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-10-31/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sD4S57ASmG/D5Qhj35xAMIW3xy0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-12-01/digitaltwins\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1g7wK4CDDOBLQ9cuVzD8VKLRQxJA=\nR:client.go\na:0:0:444\nZ:Q1q4xmSeUQWGDOpwEOi2VTDyU10VI=\nR:digitaltwins.go\na:0:0:444\nZ:Q1Dsms04qY1Ahg3by+WrEmMHuucvE=\nR:endpoint.go\na:0:0:444\nZ:Q1+oR2gy1GvHTLCPNSdLSwig+pnXg=\nR:enums.go\na:0:0:444\nZ:Q16m9H97zbZ5S9wS6ByCmLFmO6mr0=\nR:models.go\na:0:0:444\nZ:Q1Pdb6+8LlZuqC/rggqpNe2RIzBKg=\nR:operations.go\na:0:0:444\nZ:Q1pvkLAVgXOCmZOZll2WVotmindhI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1dMpCATVczn1psgByP8unSEKupj0=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1gd7gl/kEhw37Nd07oEpx4IcJqEk=\nR:version.go\na:0:0:444\nZ:Q1c64EKlfYqTiB59rO6s3pcKIkMyM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/digitaltwins/mgmt/2020-12-01/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pvAXM+yVETq+c/a3CoOqAj4Fp1I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2016-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2016-04-01/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GKR3/r+TIw2rPOGSXh4JFQ3Gfyw=\nR:client.go\na:0:0:444\nZ:Q1QfgiF7lK85XY6GC5JxLGrMt/e7U=\nR:enums.go\na:0:0:444\nZ:Q1bTC/1zHo7ygE8HKe5fIHwRyxT/8=\nR:models.go\na:0:0:444\nZ:Q1vPImH05W8pC9hr03Gz8P8wIOw3g=\nR:recordsets.go\na:0:0:444\nZ:Q1EjcgY/jFWM64pMsdYz4+I1M5NFE=\nR:version.go\na:0:0:444\nZ:Q1jAsKPmg2xnfljuB7SZYdAPrwFLo=\nR:zones.go\na:0:0:444\nZ:Q1rC5REVtNSR8f/eF33uaSOrhw63o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2016-04-01/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Alm88BRmtcaHD9PCaJW8dBgwIpQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-09-01/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bpvnqJcg9sCx4GLD5cqEF1pbKGg=\nR:client.go\na:0:0:444\nZ:Q1ucOfZrdILwb603UqhPvb3bOEIfI=\nR:enums.go\na:0:0:444\nZ:Q1f6YKjztXsQSWptN78mslZx6g+Nk=\nR:models.go\na:0:0:444\nZ:Q1bs08UmZpR7kfUjE0r/6stOsgkPI=\nR:recordsets.go\na:0:0:444\nZ:Q1Jk7CTFFxY9dCueu3to+SzoT2dz8=\nR:version.go\na:0:0:444\nZ:Q1hYXWfrcB+7/ZH+2DtSNLpkApbLk=\nR:zones.go\na:0:0:444\nZ:Q1LZ8dqMKRf+YIL+eCPVZuMz8jJrI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-09-01/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gBrtQ1WPir8PqOLewKickW4u5X0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-10-01/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19Ikd+JoDzqt9yikzKlM6hQl3ZXk=\nR:client.go\na:0:0:444\nZ:Q1yz2vff8bFw1pyP5FyrEJsT+Jax8=\nR:enums.go\na:0:0:444\nZ:Q1f6YKjztXsQSWptN78mslZx6g+Nk=\nR:models.go\na:0:0:444\nZ:Q1MWVjAEDVZBkkWNVxV7oDmrMnKFM=\nR:recordsets.go\na:0:0:444\nZ:Q1jkS0Y/ppspB2EE/kEZ+j1d0JktE=\nR:version.go\na:0:0:444\nZ:Q16SjSGjfLEIlndXCw0HL5fPi7zKI=\nR:zones.go\na:0:0:444\nZ:Q1ABfH1Lc04z9/NRjU9mLp5foA6ic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2017-10-01/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VMyZQKofK4/B2gA+XI7lQrHqB1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2018-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2018-05-01/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ElLjS22brmVabdC0A84wPnIil88=\nR:client.go\na:0:0:444\nZ:Q1vTHDB8PClaLziNEEpG/Eg4WVD/0=\nR:enums.go\na:0:0:444\nZ:Q1JvCxNu2DWNndypjYlmYl8q3nWrI=\nR:models.go\na:0:0:444\nZ:Q1Pj8ChuCBCX3fI2gCY5iebvpraDs=\nR:recordsets.go\na:0:0:444\nZ:Q1SuATQb8EVtD0cgordo74l2x8KZo=\nR:resourcereference.go\na:0:0:444\nZ:Q1C1NQnpfGUxZbFrFBxRX3yJCaG3M=\nR:version.go\na:0:0:444\nZ:Q14iy21BpeESSOe90+eZSch0OKYec=\nR:zones.go\na:0:0:444\nZ:Q1xXuWMAubbYUtkFbQl0BgurPf4uc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/dns/mgmt/2018-05-01/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19FvkTsPm+vxrDox7lxfL1kbcu/k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-01-01/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aRjzjQqXAsf9vFRz46DVIshLNOQ=\nR:client.go\na:0:0:444\nZ:Q1UzV6IuZsuNgQXWOGWbmjcilnkMo=\nR:domainserviceoperations.go\na:0:0:444\nZ:Q1y4qDjPUDibIxdXwTZorl+K43OIM=\nR:domainservices.go\na:0:0:444\nZ:Q1IR3xYZ4I3pFets0xbcLB1lzoWUg=\nR:enums.go\na:0:0:444\nZ:Q1lQv7Hu/0UXeR2XHTIfD4W9QJLO0=\nR:models.go\na:0:0:444\nZ:Q1+1W8u7a/ylQxtAc1g5sOAoU2yuc=\nR:version.go\na:0:0:444\nZ:Q1z2m73IE0HoOnbnov45VE1TZ+k1U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-01-01/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JL7sPzsOuraktRXvwMM5sWx/T+0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-06-01/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BIg/on3oKoAhtyeYwUepbPTGTDU=\nR:client.go\na:0:0:444\nZ:Q1epKPzP1+5pv+/Aa1Ecku22qz9X0=\nR:domainserviceoperations.go\na:0:0:444\nZ:Q1WRknC3kFKCv1K5j2jedSGyTRGcE=\nR:domainservices.go\na:0:0:444\nZ:Q1tYtSLvPsUB+ygD1fcjQmw+S4HMA=\nR:enums.go\na:0:0:444\nZ:Q1YBDEoENN8cVF6Ks/c+7l3faybOM=\nR:models.go\na:0:0:444\nZ:Q1g2/Mywd90RYtSbRMMmhgWhdakLU=\nR:oucontainer.go\na:0:0:444\nZ:Q1rvSMp2g/3NKdBRoGywpd65EJwVQ=\nR:oucontaineroperations.go\na:0:0:444\nZ:Q1NZSLsrz5j/f14rndodSHjc73rco=\nR:version.go\na:0:0:444\nZ:Q1pTffHDmgeclw72mQfhEGLt1I+GI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2017-06-01/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1t2rsQ7TXMDs/K5DFGu+IIHCHsIw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2020-01-01/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JE56w1OCkX12f+w11FAKWqbkfHA=\nR:client.go\na:0:0:444\nZ:Q107XyzWrjES+RCg6zMMJRxyDgzGw=\nR:domainserviceoperations.go\na:0:0:444\nZ:Q1HO8H+eAqIYebF/zM1UtrOW9bRyw=\nR:domainservices.go\na:0:0:444\nZ:Q1Mh0gkVPzFIuFua9aW9bLRDlcoqc=\nR:enums.go\na:0:0:444\nZ:Q1YBDEoENN8cVF6Ks/c+7l3faybOM=\nR:models.go\na:0:0:444\nZ:Q1CMUtoCmxIasBoquqe3QuzbRysDw=\nR:oucontainer.go\na:0:0:444\nZ:Q1PdrsWL/F37LnuYYY8v5tMp55pTs=\nR:oucontaineroperations.go\na:0:0:444\nZ:Q13uhl1KbCfYbFMsD2hmVk/sOjoTw=\nR:version.go\na:0:0:444\nZ:Q15uPeMtgqWwCUS/qEW7JLdidfp8g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/domainservices/mgmt/2020-01-01/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14RQgTAgZICX7owCOTsF7sQN9gg8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/edgeorder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/edgeorder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/edgeorder/mgmt/2021-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/edgeorder/mgmt/2021-12-01/edgeorder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FXttz+CrqUAV3/3+IbNCi+LZov8=\nR:client.go\na:0:0:444\nZ:Q1SLFSpjPHBtj6LMGWGJG7QkyqXJw=\nR:enums.go\na:0:0:444\nZ:Q1F2J6ibDHtLv4ftm7d9tRhMslHCA=\nR:models.go\na:0:0:444\nZ:Q1xENIVvGxwuXSDrkHxq4dc92VpmA=\nR:version.go\na:0:0:444\nZ:Q1aIqNuKz02xYDo30fYSoEvmSrJJM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/edgeorder/mgmt/2021-12-01/edgeorder/edgeorderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WFl8rZeWg5t1kGAPfFnYbkj01bk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/elastic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/elastic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/elastic/mgmt/2020-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/elastic/mgmt/2020-07-01/elastic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DMuc+uNo27UST4Pcz4RZKDWPHoQ=\nR:client.go\na:0:0:444\nZ:Q1xlfQRnwwh8qUDbRF//D8sOQhuHw=\nR:deploymentinfo.go\na:0:0:444\nZ:Q1g+HQ+onP7WKZHQyKKFp59ZQf4n4=\nR:enums.go\na:0:0:444\nZ:Q13cKy+O0xdG+YDot0fIiUVCMWXIA=\nR:models.go\na:0:0:444\nZ:Q1xyLaOTrNXtAO5C7GpmeotGV2cLg=\nR:monitoredresources.go\na:0:0:444\nZ:Q1WJNEOXcxJjENd2fLtuLRhysNI6o=\nR:monitors.go\na:0:0:444\nZ:Q17L5xdyV+D18K6TefKVJdTftoBX0=\nR:operations.go\na:0:0:444\nZ:Q1ukasChtP5FOBH8yiYOC/9pa55ac=\nR:tagrules.go\na:0:0:444\nZ:Q1yBWnRT6fZCQipF6iEdLJ4xSOTyY=\nR:version.go\na:0:0:444\nZ:Q1yz0xz89PZiHJCaE10rlwHex43UY=\nR:vmcollection.go\na:0:0:444\nZ:Q1Ww3eGOFvDG3lf+inZDj+nicGuIM=\nR:vmhost.go\na:0:0:444\nZ:Q1ZUnJpy4yEKmrT1oSSP0zmrQgzBM=\nR:vmingestion.go\na:0:0:444\nZ:Q1fJg3VxVBNGt6xcpC/73GTXIWvc0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/elastic/mgmt/2020-07-01/elastic/elasticapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KsFLpN86zTm+uhnWRYVFADlSe0E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/2018-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/2018-01-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1NjHSM84NnbNyNEr0zbteU8E8DNs=\nR:client.go\na:0:0:444\nZ:Q1lvRS+G7KL01MCenb1HH3LhGMXr4=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1BvPS4zkib1ckSaWWA74XQ9XA520=\nR:enums.go\na:0:0:444\nZ:Q1+qycd+wh6BX0Sepr7JOKp7NYzQU=\nR:models.go\na:0:0:444\nZ:Q1KH3PfT0ISi6Dx6rqeJWKU3MigJE=\nR:version.go\na:0:0:444\nZ:Q1CJtQfuDoYZ9d+kp94psCYXjIi8c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/2018-01-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OM9NF6Rza6iWMDQBHLsBKgA9Wic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2018-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2018-01-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14jsgjseLqJp4yRgm9OhimRWX9+k=\nR:client.go\na:0:0:444\nZ:Q1o/bCxp/L5dv56LEJn9aG90kWH40=\nR:enums.go\na:0:0:444\nZ:Q1UyjKHK/L2u8vb4a7IkXy6NaW44Y=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1kcYfXp8CozYApSIAW9FEBK5tr28=\nR:models.go\na:0:0:444\nZ:Q1JssuHe1dC5IaBPGW9RkABjD/79c=\nR:operations.go\na:0:0:444\nZ:Q1365mVuv5Lo5dd2MDATZs5PKNI30=\nR:topics.go\na:0:0:444\nZ:Q1alQ7khylWEhRYHluE7ZDv2tzqFg=\nR:topictypes.go\na:0:0:444\nZ:Q1YvnNFPkkxbHi8WfKUXn3e/8t4V0=\nR:version.go\na:0:0:444\nZ:Q1CJtQfuDoYZ9d+kp94psCYXjIi8c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2018-01-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1p+3s7Yj+RAiQdLbYVQS6cOTXVEM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-01-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Lo0HBvbe7wSjb/fxLRALm5dGWmk=\nR:client.go\na:0:0:444\nZ:Q17cfsd48ou7N5qTJNpDb/V+ehebU=\nR:enums.go\na:0:0:444\nZ:Q1HGs9UMSdy4obnC/P0c/F7nkiwwM=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1B/j/wACZuxTkzW96JqIuowHCc3M=\nR:models.go\na:0:0:444\nZ:Q1l6EZbLjC8uAMdJsCROm9ZQxJ008=\nR:operations.go\na:0:0:444\nZ:Q1fSEINLXMLveUELIRKYfBGZ9gTUk=\nR:topics.go\na:0:0:444\nZ:Q1OrDp2G3PRRrzhJq0Aa8znOm9V7M=\nR:topictypes.go\na:0:0:444\nZ:Q1VEM27gVW92qPdC0BthGrWkRu3FI=\nR:version.go\na:0:0:444\nZ:Q1fSc/M7Fej+DnB8Xa1/g1dFB/b8g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-01-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SfU4QzDdWVMNTAN1zyL3Q8+80K0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-06-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pd1icyE9CG1I0icbfommp8FkBi0=\nR:client.go\na:0:0:444\nZ:Q19ONvbOxV+QWqlpw/gTakT8rwBGo=\nR:domains.go\na:0:0:444\nZ:Q1QTBzkRGkvpJArD8t9IaMZW7jS5U=\nR:domaintopics.go\na:0:0:444\nZ:Q1e9oIHXmt4+KeI29LTK5mYt+9Cic=\nR:enums.go\na:0:0:444\nZ:Q194C4F7D1BsSgxomxcANISM6zpKg=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1CxmIAuucjM8KIhNaUpsjbhHGF68=\nR:models.go\na:0:0:444\nZ:Q1bJZMFNUTDU4h8RFEtpWIfiopysg=\nR:operations.go\na:0:0:444\nZ:Q1EX8q9CbxL5p1wY8qaekpNA/GXAY=\nR:topics.go\na:0:0:444\nZ:Q1krnbx0q2Z+5vnSt4LdgQSSUzIFw=\nR:topictypes.go\na:0:0:444\nZ:Q1gZkaPh8hxxYnrbqKc32uj9qzBcg=\nR:version.go\na:0:0:444\nZ:Q1J2mecS3E71FE2FAO5gHjbLKo2rg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2019-06-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17kB5mYf/QNVBJ6+xciYcJHS4MrU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2020-06-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1LFsZnSP733xuwpEV7I4Z2DXv0f4=\nR:client.go\na:0:0:444\nZ:Q1dTgpzWK74p5rfjtp8pRNYNV/nsw=\nR:domains.go\na:0:0:444\nZ:Q1l7+Qh0YwVFrbrvuLB+5jHsVFGTY=\nR:domaintopics.go\na:0:0:444\nZ:Q1tJbsdhppYMGFsXlTyy0JJSysb8c=\nR:enums.go\na:0:0:444\nZ:Q1/iFWsWHSXfE5V8pUMTKahur0JJo=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1WaTd/HWE3Wz4v2TQPAz7HYs63CQ=\nR:models.go\na:0:0:444\nZ:Q14n6Lh+9KzYLzrWc0F3kqtApHxew=\nR:operations.go\na:0:0:444\nZ:Q1dPop+nFUH6ZCDosUtCJILoy+6ls=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ncYybQNPlofR11NqF84bcakBIto=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1BgeNeNI1WXl4LENSShkyipXDocM=\nR:topics.go\na:0:0:444\nZ:Q13ibvjX0/bHY2XptDsq2SbQg2Nos=\nR:topictypes.go\na:0:0:444\nZ:Q1lQjzcrcQJSLeMXCegnEpxq4D2wM=\nR:version.go\na:0:0:444\nZ:Q1TsOU/5fP1bKftIi9fSFtwzfX8Ek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2020-06-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ejOPorRKo/jVei8uuLa1kFrETHw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2021-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2021-12-01/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1Nk+mu1P2Jc42DrszmaBSCtxITZQ=\nR:_meta.json\na:0:0:444\nZ:Q1w3amRFsJh8MMuvPOZmi55KhIHNI=\nR:client.go\na:0:0:444\nZ:Q1+CIq/WtK2429UvGsqlwNFC9WLHs=\nR:domains.go\na:0:0:444\nZ:Q1wsXYLEpLsIRk47upnAy8jgxm4X4=\nR:domaintopics.go\na:0:0:444\nZ:Q1Ba1YomviMYF1jSWW9BUy/Opmv6o=\nR:enums.go\na:0:0:444\nZ:Q1N5icivrsjDXv5guCPpd/4sj0YOc=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1MEEEBqG58r6vdA2Aq/dMe9C1G3w=\nR:extensiontopics.go\na:0:0:444\nZ:Q1XkkRwBnJ9/F8EIBrOYE5z++hADQ=\nR:models.go\na:0:0:444\nZ:Q1Y+xu+UZyzvQ1bYefLefRaYGDVHA=\nR:operations.go\na:0:0:444\nZ:Q1gqWU7loI7luVDYEfqGuRM5spLfk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q15f3PDHPt7i6nPqA/vzdclkAOaXE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1kgSpiXbY2eiyG5WXQQZYws6aRmY=\nR:systemtopiceventsubscriptions.go\na:0:0:444\nZ:Q1fCYm9W1BjHwnostyrv7wqZdBOTA=\nR:systemtopics.go\na:0:0:444\nZ:Q1C0UOM1TZ/ylh+Rh7ht2z/o9f2FQ=\nR:topics.go\na:0:0:444\nZ:Q10NpSXAWI/HwiKEJqMnL8HCw7X7s=\nR:topictypes.go\na:0:0:444\nZ:Q1g887mmPEUEMd3aK9MtK1iwaHqu8=\nR:version.go\na:0:0:444\nZ:Q1Mr1t0MGqQk/eOz/+QcdLeiQOpu4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventgrid/mgmt/2021-12-01/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uIKVo2bRxDxQnOH3l/kMFhns06o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2015-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2015-08-01/eventhub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MeT1ol7yWMUHVJpxjrB7yAPMmXw=\nR:client.go\na:0:0:444\nZ:Q12CSJSorWY/rp1UyAxVZ2wWp1KKM=\nR:consumergroups.go\na:0:0:444\nZ:Q1TDJymyb2xMCx7cyPCNUXuMtAkkw=\nR:enums.go\na:0:0:444\nZ:Q1AUageZSzFu1f0iS3LY7wO+L6fnQ=\nR:eventhubs.go\na:0:0:444\nZ:Q194dh8ODbISZxRrkZ6ewxeQxegLc=\nR:models.go\na:0:0:444\nZ:Q1pNlNoI2q9Tv1IPJRBYtvzF5vMY8=\nR:namespaces.go\na:0:0:444\nZ:Q183i9thajh6oO7lna0LGMa7zwA/k=\nR:operations.go\na:0:0:444\nZ:Q1rKqyxODaK5jhcQLYSA9KxwuXAuI=\nR:version.go\na:0:0:444\nZ:Q1Q8hG0NVsgFKmy7JUbIuVyNuFUIY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2015-08-01/eventhub/eventhubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KB5jyw2CPs3GuYx2mehpwFUHkTc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2017-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2017-04-01/eventhub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qD9j3YyGbQqp7tuLtfPhRABHzQU=\nR:client.go\na:0:0:444\nZ:Q1d+Jbkk98yAv9PWNSgi9VPpIGzWU=\nR:consumergroups.go\na:0:0:444\nZ:Q1beQ5+tzVob4LPKkqHdj3dIpTIzY=\nR:disasterrecoveryconfigs.go\na:0:0:444\nZ:Q1mCR2BmUyhgUtHbzU2ydH0SKtKD0=\nR:enums.go\na:0:0:444\nZ:Q1M9YT3ulbrsxOEC8Z+ZejmaB0NsQ=\nR:eventhubs.go\na:0:0:444\nZ:Q1V/mUcleFs8Km09jaRM26GcOX4Gs=\nR:models.go\na:0:0:444\nZ:Q1UiD8tf0+pLyU6bgDyzm28P84Dwc=\nR:namespaces.go\na:0:0:444\nZ:Q1adqxiGJ7HSWR7r9d36+YrzJXN8M=\nR:operations.go\na:0:0:444\nZ:Q1WWnZ6LyQkWCXYA2+u92iLS96U6w=\nR:regions.go\na:0:0:444\nZ:Q1MsrnKNpjMih8hYz/lFM8WkEIpFk=\nR:version.go\na:0:0:444\nZ:Q1B1283Di7CfbZgTcnsBsIiHclK7I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/eventhub/mgmt/2017-04-01/eventhub/eventhubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QuGMWiNwWE6cTK6OKT+0KZ9w2K4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/extendedlocation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/extendedlocation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/extendedlocation/mgmt/2021-08-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/extendedlocation/mgmt/2021-08-15/extendedlocation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1meo2VYiE+KPK6/M7hsvHpNwJrwE=\nR:client.go\na:0:0:444\nZ:Q1hgRCi+ibNoCVWixZECapuPsrhaU=\nR:customlocations.go\na:0:0:444\nZ:Q1gDtUhfbRw0+eV17Nu8/+9JjIXBQ=\nR:enums.go\na:0:0:444\nZ:Q1HD2C2jEd4vdnUjwBrq967MEF6JM=\nR:models.go\na:0:0:444\nZ:Q1B4GqH0+h/5wo9yKS8aoQzsuft1Q=\nR:version.go\na:0:0:444\nZ:Q17KGr7lX+zGAOkLpKZ8dpjTc7LPc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/extendedlocation/mgmt/2021-08-15/extendedlocation/extendedlocationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1eCfnez4yHhdk/Jyq5L5SSPgNmfQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-04-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OcQnDpKOzf9mf5gMIBfiRIyfPF4=\nR:client.go\na:0:0:444\nZ:Q1Xz2AcKDd0gMd1XsbduhZUsjq1hg=\nR:endpoints.go\na:0:0:444\nZ:Q1if4shG90XE5Qs4BhFuSUIxAbWno=\nR:enums.go\na:0:0:444\nZ:Q1HCrOCeUQKrbgkQdDQ0w0PypxYu4=\nR:frontdoors.go\na:0:0:444\nZ:Q1PGf6l2A1jJBmApeWiDb6js39iI0=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1m7MdZ0IJb7D3xfPiqLlJtMh1FSM=\nR:managedrulesets.go\na:0:0:444\nZ:Q1wgNlxyqghlto4OhlL/3ZuSDZEdo=\nR:models.go\na:0:0:444\nZ:Q1atGTItjzPC7Qzhf5C818D93RRYg=\nR:policies.go\na:0:0:444\nZ:Q1MGujpNNq8rESbaodUKl4xYOwdws=\nR:version.go\na:0:0:444\nZ:Q1xkFJ8Cmqd4VWTglD4uXy/9e6Lrg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-04-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iNIjg1hgpcMnIJ3m+lDnEJhsX5M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-05-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fmERMTQThp5y1BAujQc+KfyaVL0=\nR:client.go\na:0:0:444\nZ:Q1vWHYRBBWA/oAu0F7vpilrBDoh+o=\nR:endpoints.go\na:0:0:444\nZ:Q1u/yyFE+ZE2VabG8W3/52lrtYvII=\nR:enums.go\na:0:0:444\nZ:Q1ux1VTqMJeaA6TSCxS/2bwM14wb0=\nR:frontdoors.go\na:0:0:444\nZ:Q1fiNSK0E7suA+M9arrZfsa8AEQGQ=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1v640LompoEW3Q9UxkAG4PT7HUWU=\nR:managedrulesets.go\na:0:0:444\nZ:Q1wgNlxyqghlto4OhlL/3ZuSDZEdo=\nR:models.go\na:0:0:444\nZ:Q1CvPUkVgpBSfT2X6Ff1PjTpZcS+o=\nR:policies.go\na:0:0:444\nZ:Q1MGujpNNq8rESbaodUKl4xYOwdws=\nR:version.go\na:0:0:444\nZ:Q1j9ZiyzlEaVq329nFh7CGhdTS20Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-05-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mhvzPNNvqyh4nwa64MIWILSkzvI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-10-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hJpdt7VA353uRQpZe3K62j5rVaE=\nR:client.go\na:0:0:444\nZ:Q1vWHYRBBWA/oAu0F7vpilrBDoh+o=\nR:endpoints.go\na:0:0:444\nZ:Q1u/yyFE+ZE2VabG8W3/52lrtYvII=\nR:enums.go\na:0:0:444\nZ:Q1judaPSl1XbFJNjOBEugeSAeL8pc=\nR:frontdoors.go\na:0:0:444\nZ:Q1fiNSK0E7suA+M9arrZfsa8AEQGQ=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1v640LompoEW3Q9UxkAG4PT7HUWU=\nR:managedrulesets.go\na:0:0:444\nZ:Q1gyO0Z66pFbA/ft4469yqsE3MI+I=\nR:models.go\na:0:0:444\nZ:Q1d+Bfx/LyhVQIftkwogrufvsNLnk=\nR:policies.go\na:0:0:444\nZ:Q1wm+GNUOfOEUfBaPs3BKBiqQ1iW4=\nR:version.go\na:0:0:444\nZ:Q1/6FRG+v5lI9csKR0cxVG76bj+KU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-10-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15/e6/gZJXXbVopvUc2XjIsLsG1k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-11-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19WUdKBkyCryQ61VruYoqiOq1jHA=\nR:client.go\na:0:0:444\nZ:Q1vWHYRBBWA/oAu0F7vpilrBDoh+o=\nR:endpoints.go\na:0:0:444\nZ:Q1u/yyFE+ZE2VabG8W3/52lrtYvII=\nR:enums.go\na:0:0:444\nZ:Q1mBnYclnwb71pTJShoXl5ejAuMJs=\nR:experiments.go\na:0:0:444\nZ:Q1BewZwu3CiTuxiTULqfqPdEqo4zA=\nR:frontdoors.go\na:0:0:444\nZ:Q1fiNSK0E7suA+M9arrZfsa8AEQGQ=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1v640LompoEW3Q9UxkAG4PT7HUWU=\nR:managedrulesets.go\na:0:0:444\nZ:Q1gyO0Z66pFbA/ft4469yqsE3MI+I=\nR:models.go\na:0:0:444\nZ:Q1zJSQ6jmGZcd2z9Gk8tZKYpnZUnY=\nR:networkexperimentprofiles.go\na:0:0:444\nZ:Q1ZA8pZt3335Ywi9NOlPPAl5TEOt8=\nR:policies.go\na:0:0:444\nZ:Q1wm+GNUOfOEUfBaPs3BKBiqQ1iW4=\nR:preconfiguredendpoints.go\na:0:0:444\nZ:Q1BUI7SB8AolfL1b0qmn7Zwqh4Mu4=\nR:reports.go\na:0:0:444\nZ:Q1UiP0/mHATmMAPus1Mrco4/uWXwg=\nR:version.go\na:0:0:444\nZ:Q1XxX9D01FxQ0jCz62NzDcPDEW71o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2019-11-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WGx/RmT/yFsuK/E7rf9H9n+QJaY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-01-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1CdlTiUlaTcK9EBDlAHAoyQ9VFt4=\nR:client.go\na:0:0:444\nZ:Q1+YIZtZs2twXtV3SawQ9F49cpZU0=\nR:endpoints.go\na:0:0:444\nZ:Q1Us/2aSN6TFp48xjyae6BgWTqJks=\nR:enums.go\na:0:0:444\nZ:Q1i586Y+gHQ2s0YrpjQxo3gA8vPEo=\nR:experiments.go\na:0:0:444\nZ:Q1BewZwu3CiTuxiTULqfqPdEqo4zA=\nR:frontdoors.go\na:0:0:444\nZ:Q1XLiwnYffYtl9lcpaVxAUnMCafYk=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1lihtc6HdVBhc8SAhw/N8QDxg7m0=\nR:managedrulesets.go\na:0:0:444\nZ:Q1gyO0Z66pFbA/ft4469yqsE3MI+I=\nR:models.go\na:0:0:444\nZ:Q13Ejz9CS/cjZ6osoQbObLd8BRIUU=\nR:networkexperimentprofiles.go\na:0:0:444\nZ:Q1ZA8pZt3335Ywi9NOlPPAl5TEOt8=\nR:policies.go\na:0:0:444\nZ:Q1wm+GNUOfOEUfBaPs3BKBiqQ1iW4=\nR:preconfiguredendpoints.go\na:0:0:444\nZ:Q1BUI7SB8AolfL1b0qmn7Zwqh4Mu4=\nR:reports.go\na:0:0:444\nZ:Q1UiP0/mHATmMAPus1Mrco4/uWXwg=\nR:rulesengines.go\na:0:0:444\nZ:Q1vi2TXlalUei8xW3oGNaOOwHg7OU=\nR:version.go\na:0:0:444\nZ:Q1rfr0G4S3sOcvze7ZR9s+5Z8pwWM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-01-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13Wd+1NlGJfa+H5iPcK6A6GE+FP0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-04-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bCY78O+hbt1+BZ5+9BoHe88uYxk=\nR:client.go\na:0:0:444\nZ:Q14acfMn9K5ir8jXnZw6pGA7QO948=\nR:endpoints.go\na:0:0:444\nZ:Q1FH62Rr2U0rPyd4JSJR9cKlvvi5Y=\nR:enums.go\na:0:0:444\nZ:Q1i586Y+gHQ2s0YrpjQxo3gA8vPEo=\nR:experiments.go\na:0:0:444\nZ:Q1BewZwu3CiTuxiTULqfqPdEqo4zA=\nR:frontdoors.go\na:0:0:444\nZ:Q1hW5juwMrpnjwIBlOZSRFGtkxizI=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1cU0MwrQE7Lmff/+69jl0C66GWpU=\nR:managedrulesets.go\na:0:0:444\nZ:Q1s4ShJdfzNGITxuHCoADJl+p3jDM=\nR:models.go\na:0:0:444\nZ:Q1qqzZVWJGX7oP3Vo2jrpaM2KrcMU=\nR:networkexperimentprofiles.go\na:0:0:444\nZ:Q1ZA8pZt3335Ywi9NOlPPAl5TEOt8=\nR:policies.go\na:0:0:444\nZ:Q1KehsbeMxgPVxm5yqoy4s1xzAe08=\nR:preconfiguredendpoints.go\na:0:0:444\nZ:Q1BUI7SB8AolfL1b0qmn7Zwqh4Mu4=\nR:reports.go\na:0:0:444\nZ:Q1UiP0/mHATmMAPus1Mrco4/uWXwg=\nR:rulesengines.go\na:0:0:444\nZ:Q11w49g+QWlNvY6OP4RlooapVlnfw=\nR:version.go\na:0:0:444\nZ:Q1A3iUy9xgLQ5AgIJKXcULCnhAgaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-04-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KxNElY20eKzJnPCeCdJwTDPpUIw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-05-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1LPnEg37M1GRTMO+kgjN5G22kp+8=\nR:client.go\na:0:0:444\nZ:Q1sfQxssQWU+TWNSKIydcOO5wOikw=\nR:endpoints.go\na:0:0:444\nZ:Q1mi8t6SEQdsAWyWyy4fnkkeELjHY=\nR:enums.go\na:0:0:444\nZ:Q1i586Y+gHQ2s0YrpjQxo3gA8vPEo=\nR:experiments.go\na:0:0:444\nZ:Q1BewZwu3CiTuxiTULqfqPdEqo4zA=\nR:frontdoors.go\na:0:0:444\nZ:Q10ceCMWhc9RVwimnaHI8YTUHGtiw=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1e46DnyXtAma433XKHEUS9N8xHyw=\nR:managedrulesets.go\na:0:0:444\nZ:Q1s4ShJdfzNGITxuHCoADJl+p3jDM=\nR:models.go\na:0:0:444\nZ:Q1uciUwKM/S2jlr26CioYxppzQcog=\nR:nameavailability.go\na:0:0:444\nZ:Q1klrAsraNeP90VxhgGvo6X6B9IIk=\nR:nameavailabilitywithsubscription.go\na:0:0:444\nZ:Q1kvA4jNWNNW7QgMXz3RckavXWhpA=\nR:networkexperimentprofiles.go\na:0:0:444\nZ:Q1ZA8pZt3335Ywi9NOlPPAl5TEOt8=\nR:policies.go\na:0:0:444\nZ:Q1KehsbeMxgPVxm5yqoy4s1xzAe08=\nR:preconfiguredendpoints.go\na:0:0:444\nZ:Q1BUI7SB8AolfL1b0qmn7Zwqh4Mu4=\nR:reports.go\na:0:0:444\nZ:Q1UiP0/mHATmMAPus1Mrco4/uWXwg=\nR:rulesengines.go\na:0:0:444\nZ:Q1OUak2+zHwPJP2k9cq34wbPAq8/c=\nR:version.go\na:0:0:444\nZ:Q1EFydMyA2ZwasdmUC59Q0WzX+Mic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-05-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1icaTg+RUCB7eySf61CJ2fSx0s4c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-11-01/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Z+2hOnN5mC5li/rw8U81TYVKQOQ=\nR:client.go\na:0:0:444\nZ:Q1sfQxssQWU+TWNSKIydcOO5wOikw=\nR:endpoints.go\na:0:0:444\nZ:Q1mi8t6SEQdsAWyWyy4fnkkeELjHY=\nR:enums.go\na:0:0:444\nZ:Q1u8CD+6N3vPyxIhQtSU4bDvQ8zn8=\nR:experiments.go\na:0:0:444\nZ:Q1BewZwu3CiTuxiTULqfqPdEqo4zA=\nR:frontdoors.go\na:0:0:444\nZ:Q10ceCMWhc9RVwimnaHI8YTUHGtiw=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1e46DnyXtAma433XKHEUS9N8xHyw=\nR:managedrulesets.go\na:0:0:444\nZ:Q1PDvsGf7RF0x/GzmIj7QtXKLY/hg=\nR:models.go\na:0:0:444\nZ:Q1vpxmwNXD+4vkAdZqHA63Epjbh6I=\nR:nameavailability.go\na:0:0:444\nZ:Q1klrAsraNeP90VxhgGvo6X6B9IIk=\nR:nameavailabilitywithsubscription.go\na:0:0:444\nZ:Q1kvA4jNWNNW7QgMXz3RckavXWhpA=\nR:networkexperimentprofiles.go\na:0:0:444\nZ:Q1ZA8pZt3335Ywi9NOlPPAl5TEOt8=\nR:policies.go\na:0:0:444\nZ:Q14J9JAUQR9VoQ3CYtzgL29u8+xkk=\nR:preconfiguredendpoints.go\na:0:0:444\nZ:Q1BUI7SB8AolfL1b0qmn7Zwqh4Mu4=\nR:reports.go\na:0:0:444\nZ:Q1UiP0/mHATmMAPus1Mrco4/uWXwg=\nR:rulesengines.go\na:0:0:444\nZ:Q1OUak2+zHwPJP2k9cq34wbPAq8/c=\nR:version.go\na:0:0:444\nZ:Q1BgrZbKtKc2dIC194JCwMderNH50=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/frontdoor/mgmt/2020-11-01/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XQsu4jea5YiWLR6IguDU5lbj/6g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/graphrbac\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/graphrbac/1.6\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/graphrbac/1.6/graphrbac\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:applications.go\na:0:0:444\nZ:Q1QXD5usbuBUjZ+MifJH7SS0wncNw=\nR:client.go\na:0:0:444\nZ:Q1VbnOGY9yQ8YqlISU4LuSQ6rx3ks=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1WTJmTCuhOIv4PpqqSPbvDn+1Mjg=\nR:deletedapplications.go\na:0:0:444\nZ:Q1njcPymSU3pXB/bedLUYzYWVQmdo=\nR:domains.go\na:0:0:444\nZ:Q1BgdHavgkYDGLj880i8cTBSOOEpE=\nR:enums.go\na:0:0:444\nZ:Q1HJvkQ7zVWlZIF6b3xBgngatYN58=\nR:groups.go\na:0:0:444\nZ:Q1P1uS822FyYmsk9ekeuqTJxalFkg=\nR:models.go\na:0:0:444\nZ:Q1xabp20Io80FFvlgiokcf5+Tp2Pg=\nR:oauth2permissiongrant.go\na:0:0:444\nZ:Q1s+hw0hJMzscc1W7QRyHFzOK9Uyc=\nR:objects.go\na:0:0:444\nZ:Q1SlQMbp03Phs91nOswOnlT/VtvGE=\nR:serviceprincipals.go\na:0:0:444\nZ:Q1XgROeIdgYz4abE7sfiPiV2Dlvog=\nR:signedinuser.go\na:0:0:444\nZ:Q1rEz5W/BlApOjE/Mr0itDgU96mCY=\nR:users.go\na:0:0:444\nZ:Q1JKo/mj4AW18idxxrHGG9/0XQEM4=\nR:version.go\na:0:0:444\nZ:Q1kfRvZhgHNG4hhwWu7gGGbHA2yA4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/graphrbac/1.6/graphrbac/graphrbacapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CHaUzGS+UkSh/UTkQWpFU/mRdZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2020-06-25\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2020-06-25/guestconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uaSilVsPbJO+JlKJEhKelzYwhEI=\nR:assignmentreports.go\na:0:0:444\nZ:Q1Ga4Wx0GZUtHf+Mqgyb23mHnq/DA=\nR:assignments.go\na:0:0:444\nZ:Q1h/eohUHJdsiN0oZ4Gxfdiu3GOq8=\nR:client.go\na:0:0:444\nZ:Q10skKMLL4tu8aebpz2T824IodsJM=\nR:enums.go\na:0:0:444\nZ:Q1quWp6javwvUgH9mxxTcDJAGabkA=\nR:hcrpassignmentreports.go\na:0:0:444\nZ:Q1529XfEn8jQRpcU6xyR5NB9GM9mg=\nR:hcrpassignments.go\na:0:0:444\nZ:Q1+QGp3ifWZc/1w55uCs5m3KmTyew=\nR:models.go\na:0:0:444\nZ:Q13bw4VvAqU2PcAHPYcB6ijwUytEc=\nR:operations.go\na:0:0:444\nZ:Q1QlNJN/Uu8LZftiJJska/cM0C/mU=\nR:version.go\na:0:0:444\nZ:Q1zi/94S2XIinI0yQYMCIucqZ/IaE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2020-06-25/guestconfiguration/guestconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1c5vZepEy85JMfJDuDSmF/qF3R6g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2021-01-25\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2021-01-25/guestconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dyc3AJXT0Ut091sE+rr2MAK57zE=\nR:assignmentreports.go\na:0:0:444\nZ:Q1DxugKC3XUQSPcO+k85o3mDzH1Y4=\nR:assignmentreportsvmss.go\na:0:0:444\nZ:Q1mc87La3STIzy3ZtRru1cypnjUbY=\nR:assignments.go\na:0:0:444\nZ:Q1aCJLZMWUhxwor3jeRco1ZSTb5pg=\nR:assignmentsvmss.go\na:0:0:444\nZ:Q1QbMUoLiSi01qy1+PHVxnfuLjqz0=\nR:client.go\na:0:0:444\nZ:Q17okAYwUP8X3MnbFBzReGD85rX3U=\nR:enums.go\na:0:0:444\nZ:Q1rY9kyjdXqhMYKkMXJcjB2Uyb3QM=\nR:hcrpassignmentreports.go\na:0:0:444\nZ:Q1lcmVYejDfVijheRjbwVpCh0+1ho=\nR:hcrpassignments.go\na:0:0:444\nZ:Q1vpuaoQzGCg3355pDI113au/fd8w=\nR:models.go\na:0:0:444\nZ:Q1jxc1wIlqcDlPDqH6mzxEdTAU4nQ=\nR:operations.go\na:0:0:444\nZ:Q1iZRWuzQocxLFulX822C68dqJBh4=\nR:version.go\na:0:0:444\nZ:Q1QztKNWJkoqXbGUKRuFdASnzqPdg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/guestconfiguration/mgmt/2021-01-25/guestconfiguration/guestconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lFi/KmAyM8uAA3vubp87BKWZCLA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hardwaresecuritymodules\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hardwaresecuritymodules/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hardwaresecuritymodules/mgmt/2021-11-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hardwaresecuritymodules/mgmt/2021-11-30/hardwaresecuritymodules\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Xekz35woZdRRXGuNW5QgqhYwI5E=\nR:client.go\na:0:0:444\nZ:Q1KcbS7ZkvAan9S5deGxyEYFWhnao=\nR:dedicatedhsm.go\na:0:0:444\nZ:Q1Inr5yrbOHE+wpedgIdBvzVmk4A0=\nR:enums.go\na:0:0:444\nZ:Q16/gHHwKdXAK3Hkx0to1o+r7J7Rc=\nR:models.go\na:0:0:444\nZ:Q1ZGlpeJzo4Wi+UMLlmmKC3zkwxH4=\nR:operations.go\na:0:0:444\nZ:Q1v9AQkpc5SvW/wxujqa1jgrTWSrY=\nR:version.go\na:0:0:444\nZ:Q1ZEVlBXCDPfvJCTWXU/MTA21vB3I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hardwaresecuritymodules/mgmt/2021-11-30/hardwaresecuritymodules/hardwaresecuritymodulesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jfKExycn6BYGdMp4qmc7l6Z+SGg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2018-06-01/hdinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14Tk0AUPL+BHIp+Zk3zXqbHds3XQ=\nR:applications.go\na:0:0:444\nZ:Q1JRu27RlJcmqbgO+juIRwSNsU3vM=\nR:client.go\na:0:0:444\nZ:Q10aHizc0IxJkKIFAiH+uql+DSkBo=\nR:clusters.go\na:0:0:444\nZ:Q1vdpy6DyB2flbK+iCPrj0ACbPs+4=\nR:configurations.go\na:0:0:444\nZ:Q1R1xsvxS/RNiQuVu8P/ZHqByrN0o=\nR:enums.go\na:0:0:444\nZ:Q1WqO8gKOiRt3u5Tbv/409ZqhZC/I=\nR:extensions.go\na:0:0:444\nZ:Q1kMZMBu68ITS8BGWhtwhl3isF3+4=\nR:locations.go\na:0:0:444\nZ:Q1f6nBaMmriD0mdWdOpvM7HRX43ik=\nR:models.go\na:0:0:444\nZ:Q17X0kUY5Sa1Q72tlgqnkmHQwTFhE=\nR:operations.go\na:0:0:444\nZ:Q1ffn+9CYWJ3utS1mkCr0FzlFpDWc=\nR:scriptactions.go\na:0:0:444\nZ:Q1EfRE9onyDYSSO3XeaXrc5WZEFpA=\nR:scriptexecutionhistory.go\na:0:0:444\nZ:Q1J1MGvCOGpCUavKs10EgZuoNH3g0=\nR:version.go\na:0:0:444\nZ:Q1w4d2iHu5Vgi8ULj+60fhSIS1ab4=\nR:virtualmachines.go\na:0:0:444\nZ:Q1l/UP+prMd7/eaItvAHbK4MC9rL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2018-06-01/hdinsight/hdinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Wk+/ATL+mlQI/19FaeO3iYCLY/4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2021-06-01/hdinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MtzhRNpWMcibk3LIgY1R00Tkdfs=\nR:applications.go\na:0:0:444\nZ:Q1f1iG0zM9Mh2dQgGrwu0VfyEdsqM=\nR:client.go\na:0:0:444\nZ:Q1/6ackSaeSIF3fHlRPsnSh2l+uR4=\nR:clusters.go\na:0:0:444\nZ:Q1AoTPlPTVmZ+auUecgnM5AEW09jo=\nR:configurations.go\na:0:0:444\nZ:Q1SH0slRwc/4vaXrYXm6lUneb4nE0=\nR:enums.go\na:0:0:444\nZ:Q101LO311lIPwTcuBx4UFwICoaxNs=\nR:extensions.go\na:0:0:444\nZ:Q1jkfARtJzPgN5FiCT1G4gTpk9mys=\nR:locations.go\na:0:0:444\nZ:Q1xUSNQoHSxExxT5sKvG7AKrUIoDs=\nR:models.go\na:0:0:444\nZ:Q1NvBu8GZKyOUUZW/BJTSrnCaVhyc=\nR:operations.go\na:0:0:444\nZ:Q1S/+R7ByPX1eSnZgdLirhg8nmorc=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1R8OKxS/5uY/RgbPjlObEeg7dXYc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1RBvj4MZobc2LPhmsX52rLZh0A9A=\nR:scriptactions.go\na:0:0:444\nZ:Q1XU1CnyZCzThikP1VU8VaSE1yG7g=\nR:scriptexecutionhistory.go\na:0:0:444\nZ:Q1XQZ0pWKhyWTjFdqcejxNg8njEnY=\nR:version.go\na:0:0:444\nZ:Q1kI/KUkYhmnCaHYCrbglihT4Js4A=\nR:virtualmachines.go\na:0:0:444\nZ:Q1UIvbl9sYoEBmtut0HaRCw4K6/EI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hdinsight/mgmt/2021-06-01/hdinsight/hdinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fXQlaz988EpWVjvPFbrBRgyRfi4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthbot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthbot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthbot/mgmt/2020-12-08\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthbot/mgmt/2020-12-08/healthbot\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1oG+Z5PgqPA39mrdVDtXKSh2UdDI=\nR:bots.go\na:0:0:444\nZ:Q1D8hyrnVo7Tr0T6jLwhCXcxhXiEE=\nR:client.go\na:0:0:444\nZ:Q1J1BxRu7D+YDJFOuKdAZTehbrrsQ=\nR:enums.go\na:0:0:444\nZ:Q1bYLvNfesBrcuaCoPaame1ic3syw=\nR:models.go\na:0:0:444\nZ:Q1Y+K0v/B7L2NJT2h5KVTWWupgf9A=\nR:operations.go\na:0:0:444\nZ:Q1XKGeFkQsqX8Da+YiKb65gSBgf+g=\nR:version.go\na:0:0:444\nZ:Q1/CeBCiM+R/j0BTcMVnH5EkV9Uuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthbot/mgmt/2020-12-08/healthbot/healthbotapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1eZ1EsY+gS6vEXuNVFhbhDQk1zrY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2019-09-16\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2019-09-16/healthcareapis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10N+XR8sIXE5NogawRZMgfwpA25g=\nR:client.go\na:0:0:444\nZ:Q1AS668mS0k4pEEpean9BOsI/f/KI=\nR:enums.go\na:0:0:444\nZ:Q1hQwK8aodJDPtwzxvwc+kwjhf0NQ=\nR:models.go\na:0:0:444\nZ:Q1urxj7YVW5E6I2DkOXbG2x8DOYQU=\nR:operationresults.go\na:0:0:444\nZ:Q1iF6EyCx/IUxQairBcjMT3Ap0e1s=\nR:operations.go\na:0:0:444\nZ:Q14AJ2QQRocptuzbbPXzljoPA7UjQ=\nR:services.go\na:0:0:444\nZ:Q1V8qmmKsFTtvKJ4WHUgxa2oAXHes=\nR:version.go\na:0:0:444\nZ:Q1LCfMQikKgz129W2/6ba1F5LCb1A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2019-09-16/healthcareapis/healthcareapisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10iQBeBpoDYxZFU0CCTMy7pXWlAc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-15/healthcareapis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18/C2QxMhG/2t9YCweEX60tNm8IY=\nR:client.go\na:0:0:444\nZ:Q1GsNa7JHy+FwEuwYviviHOfGl0gs=\nR:enums.go\na:0:0:444\nZ:Q1hQwK8aodJDPtwzxvwc+kwjhf0NQ=\nR:models.go\na:0:0:444\nZ:Q1MBO0sRz57I9nJCPva4pDGq8rmdE=\nR:operationresults.go\na:0:0:444\nZ:Q1HVEhBSs/te20VU9e8ThAbzzy1iU=\nR:operations.go\na:0:0:444\nZ:Q1G4PKAkft+uHZcYEMEQDs970Jjq0=\nR:services.go\na:0:0:444\nZ:Q1ZYUl/k2uZEXnaf2N+JWriaK9sqM=\nR:version.go\na:0:0:444\nZ:Q1olPN/9U41kAAguGUtGPH/9HZhPk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-15/healthcareapis/healthcareapisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1V2OCNd8eB/yaBsjzarHHSwRcZgE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-30/healthcareapis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JscWkBfKwN8vU7PC5xxZhcjkWCw=\nR:client.go\na:0:0:444\nZ:Q1xx0Uhj0dxV3yl5jkyTCTarxEdrQ=\nR:enums.go\na:0:0:444\nZ:Q1MoDjBZ6OmxD1HHhRc927c+7d3F4=\nR:models.go\na:0:0:444\nZ:Q1OZDrUAO8mS3JPAIwZ2aS6qUnEcE=\nR:operationresults.go\na:0:0:444\nZ:Q1/pdp/LYUySxSEvo8sgNegdQzYEg=\nR:operations.go\na:0:0:444\nZ:Q1HWwJCIxSbELL/I77v4B9NdHVBsM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1fhnFloINxRJJ1dD2VUzzvhAR0+Q=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1h2ELFrudkMtTsMSUwq5JPlxNh0g=\nR:services.go\na:0:0:444\nZ:Q1etYUma8y3Cl8U35bVehFOEWjaHE=\nR:version.go\na:0:0:444\nZ:Q1k5TKYLRIeb7yie/Aw/ggHi/VlpU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2020-03-30/healthcareapis/healthcareapisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1bqBj/azxj5gRDzwHAgYqQWfbS14=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2021-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2021-11-01/healthcareapis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13MO1Z0CbX2S+L4riijTIWHp4CeA=\nR:client.go\na:0:0:444\nZ:Q1FVnsDm4y9iCXy+gI0ZEoZbX1pes=\nR:dicomservices.go\na:0:0:444\nZ:Q1vQo56C5d6A62HkUey9HSiC3O26E=\nR:enums.go\na:0:0:444\nZ:Q1zVpzU7BwX7IaUECKa/NFM2f/w3w=\nR:fhirdestinations.go\na:0:0:444\nZ:Q1Ychb4ZsDgwVDTsuwLgJkotABffc=\nR:fhirservices.go\na:0:0:444\nZ:Q1piDcSAGHdLoUAPP87os+HneHGkA=\nR:iotconnectorfhirdestination.go\na:0:0:444\nZ:Q1voMbbYM+JKqgfFjTqrw4clxE70g=\nR:iotconnectors.go\na:0:0:444\nZ:Q1p7ZWQJ9WezGRuhxjPRybu0SoiL4=\nR:models.go\na:0:0:444\nZ:Q1LHMj6uA/mYujBkTJMsJHta7S8a4=\nR:operationresults.go\na:0:0:444\nZ:Q1qupjjP40intJTUYJtDbXOnR3EuE=\nR:operations.go\na:0:0:444\nZ:Q1hpg+AlQNloCCG8gujz05Bg1Fj9o=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1xEXgfwhm4kybW9XcS7IF1ADxwNA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1FqsDEjt+3h9MYwlJVMHEmOnWMxw=\nR:services.go\na:0:0:444\nZ:Q1Na5cYBA3wdgGyBqGv6q8MyB0MSU=\nR:version.go\na:0:0:444\nZ:Q1DxOy0Wr6r2DTIzgnOuSgZ8VJTtY=\nR:workspaceprivateendpointconnections.go\na:0:0:444\nZ:Q1avi9zCpu4+X83lXvrbKbnstLHFM=\nR:workspaceprivatelinkresources.go\na:0:0:444\nZ:Q1shhZB++UNJw7qiXcOCyu1uwFX6w=\nR:workspaces.go\na:0:0:444\nZ:Q1rnkyE815R3SB5D2KxFGBEGvbV18=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/healthcareapis/mgmt/2021-11-01/healthcareapis/healthcareapisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1O+Ic6jNC6TEAeK/l+ZC6JOUFP1U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2019-12-12\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2019-12-12/hybridcompute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DmXyy/D2jgvxgeqb5/SoZRcDRvg=\nR:client.go\na:0:0:444\nZ:Q1pwbuEpMhVtuOx2vLkrUnNXjMYyY=\nR:enums.go\na:0:0:444\nZ:Q1X7kZYrCxJUECWIYiZHJehfay7/Y=\nR:machineextensions.go\na:0:0:444\nZ:Q1hlRN56ORlghvGTrTk9FLE2dbtUE=\nR:machines.go\na:0:0:444\nZ:Q1VdKWh0iSMwlscuDwTg9Q0UgWr/s=\nR:models.go\na:0:0:444\nZ:Q1vWrxf6mPT3qzcfFRsAFZpdVtdzk=\nR:operations.go\na:0:0:444\nZ:Q1KfAKAVVK7qzT/KIbJc7pEZ1IhCI=\nR:version.go\na:0:0:444\nZ:Q1TCSg1Wwv7UlRNITRMuSvLxHLum4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2019-12-12/hybridcompute/hybridcomputeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1s9YTPSw9/KbogeR/l1nVFoF6DZw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2020-08-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2020-08-02/hybridcompute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/OS72+C1tqp+DXuxrWKDp+aKOEI=\nR:client.go\na:0:0:444\nZ:Q1prcy8F6mR70ZCJCYlgni57pq+fk=\nR:enums.go\na:0:0:444\nZ:Q1v9PQpJcoiTKWegjXRX9jnR2EImo=\nR:machineextensions.go\na:0:0:444\nZ:Q1IVLKMPCF+VsMJNsWDSALRSpubDo=\nR:machines.go\na:0:0:444\nZ:Q1h+HtgdfgSKm//OxVlqn7YXvF6u8=\nR:models.go\na:0:0:444\nZ:Q1TLaZDmgxVV2MR41HUrGmUxfu/t4=\nR:operations.go\na:0:0:444\nZ:Q1XJ7w2CqP+tpHV4XvjdtH5E2LRno=\nR:version.go\na:0:0:444\nZ:Q1892kSvoZrGTnLvc1lhYdaitWcRQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridcompute/mgmt/2020-08-02/hybridcompute/hybridcomputeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VHxmi/StIZGctnxj5XWks6c6ouY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2016-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2016-06-01/hybriddata\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/g3adV6DPx/exhiDycGDnt85yZQ=\nR:client.go\na:0:0:444\nZ:Q1CHtn/r7MC7W2O8XGMqKA8Fq33jk=\nR:datamanagers.go\na:0:0:444\nZ:Q1vwM2bxNv0N2EqPVLstQOunDIps8=\nR:dataservices.go\na:0:0:444\nZ:Q1q6UL9oJb97hA0Jn0YPTrOmlwN7o=\nR:datastores.go\na:0:0:444\nZ:Q1/aNLP8mn+m5H7+HOlsWRCRBTEao=\nR:datastoretypes.go\na:0:0:444\nZ:Q1XGLzIG3RImcTlr8I29BkUSJAEro=\nR:enums.go\na:0:0:444\nZ:Q1lyHEX7PIDnWLWpRnl4X6FVm6hk4=\nR:jobdefinitions.go\na:0:0:444\nZ:Q1yCK9vxBLBztvDZIi1T7NYPfXHOQ=\nR:jobs.go\na:0:0:444\nZ:Q13ZnCV0fWCh+wOK0CIf1O0BoqXmE=\nR:models.go\na:0:0:444\nZ:Q1UoCbt60RKvjAvROXI5uIg2jPoF8=\nR:operations.go\na:0:0:444\nZ:Q16ZwGq/r76E3sM0G5YIr4hN2kVDk=\nR:publickeys.go\na:0:0:444\nZ:Q1e54DmWE50S0pxAMSC3TSVT+VIgM=\nR:version.go\na:0:0:444\nZ:Q1NMHK1b1o750EhAK/eSmT1ZzA0Yw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2016-06-01/hybriddata/hybriddataapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lYvKQIRzWojnWB9D2jbLhuIc1EA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2019-06-01/hybriddata\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Vn06tRvURb80tANcSHVpzqzm8Z0=\nR:client.go\na:0:0:444\nZ:Q1GDxyOMXuWxcb5Lsg5wXGuu/rYY8=\nR:datamanagers.go\na:0:0:444\nZ:Q18sfPpvd4oOYV+S8A/xhhdHTpuKc=\nR:dataservices.go\na:0:0:444\nZ:Q1VIrh/A4+I+Y++aLL6uXvu4vZiLY=\nR:datastores.go\na:0:0:444\nZ:Q1v527IBDMBbch7ZvNnkD/zIOR4ME=\nR:datastoretypes.go\na:0:0:444\nZ:Q1B/jDknPn8JfBg55Wx4UrRlxdqqs=\nR:enums.go\na:0:0:444\nZ:Q11gsgzWmPiIZDnJz3Ycrc/Uq1lcc=\nR:jobdefinitions.go\na:0:0:444\nZ:Q1Pk1RP7aMiohvGQY0m8dUJbYGuKk=\nR:jobs.go\na:0:0:444\nZ:Q1IMOdJumP7TKV5F5/kGdjmBcPSC4=\nR:models.go\na:0:0:444\nZ:Q12Rw67oF9LhExD3ShuKA7D5QXhAM=\nR:operations.go\na:0:0:444\nZ:Q1QAp7NuweKrUo52Uyz0fFi25KogU=\nR:publickeys.go\na:0:0:444\nZ:Q1z+/LrcQ+IClI+TtwvYY6TAFP43M=\nR:version.go\na:0:0:444\nZ:Q1TouLMB0iIKljxVK3A4mCrUBs7PY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybriddatamanager/mgmt/2019-06-01/hybriddata/hybriddataapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OQIYh+DgZjRwH4eaY/Rc1flyJCs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-03-01/hybridkubernetes\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pZx/JXhyNRKCk/tL3BY0AcFFS2Q=\nR:client.go\na:0:0:444\nZ:Q1dj95bmCjdHX0zXE3YvzQtpsijFo=\nR:connectedcluster.go\na:0:0:444\nZ:Q1/LmNxqq6qNbQSOPSdTIDhcCfLLk=\nR:enums.go\na:0:0:444\nZ:Q1uJ6dzOMNsQlt38q8P7F6CFgYMuI=\nR:models.go\na:0:0:444\nZ:Q1MSohuMNJzF/hiBsUlxK6izS4zYM=\nR:operations.go\na:0:0:444\nZ:Q1IB3M5a28XPmciazOKDCSVKcXtSA=\nR:version.go\na:0:0:444\nZ:Q1hugr02xKMyjYaJHFDKtCBTALd2w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-03-01/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DYOyFzSDftNifRQtnz+0rVpXFXo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-10-01/hybridkubernetes\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Bw6EHRWXUqfIcwDCcFIxZgmRCjc=\nR:client.go\na:0:0:444\nZ:Q1aIEjOGAmmIQTWDDI/49JF90qbuU=\nR:connectedcluster.go\na:0:0:444\nZ:Q17JloDxmVDJo4mAWEk1A8CDtA80M=\nR:enums.go\na:0:0:444\nZ:Q1kVnW6tjJNnKPfoJy1I4s+++8xYY=\nR:models.go\na:0:0:444\nZ:Q1vbxvzzpm/954UDbsw+QuBp+8Spk=\nR:operations.go\na:0:0:444\nZ:Q1XNILSzoenoLHojV9LkidgXM5Kv4=\nR:version.go\na:0:0:444\nZ:Q1Jh7rT28gSpR+6/ScFZm8zISblAg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/hybridkubernetes/mgmt/2021-10-01/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HQsqiu+Bf4hI75isgLnC+XwnKE4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2018-09-01/iotcentral\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19OovG86ssgLYrEOFMnhpelumFg4=\nR:apps.go\na:0:0:444\nZ:Q1ovLj18hMuuMdS4BFmS4aEj6tuv0=\nR:client.go\na:0:0:444\nZ:Q1G39Djpc3RL8604fRPbU6kt1jO+c=\nR:enums.go\na:0:0:444\nZ:Q1olgPCFQRSyvU3NBN8ssvDaLfDJQ=\nR:models.go\na:0:0:444\nZ:Q1Y6MH8lsGRnqN3iAN/Wpw9eN1C+0=\nR:operations.go\na:0:0:444\nZ:Q1e0xz2Qk4Y4XwGkRQ06bma4YXb1U=\nR:version.go\na:0:0:444\nZ:Q1B0atK5zaRmCLjPgYxKXkeXjDiCo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2018-09-01/iotcentral/iotcentralapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zZQ8SZ1WvyLyyzXb4oXRUQvtePo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2021-06-01/iotcentral\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q184KbmBUQp+JpTWiKxCpCN8nuxxU=\nR:apps.go\na:0:0:444\nZ:Q1Mz27v8CAwZATaAaq2K3POoVPjrE=\nR:client.go\na:0:0:444\nZ:Q1L8jRMD3P9mo49CPwbO1+o17FbaM=\nR:enums.go\na:0:0:444\nZ:Q1xuJWLUgYtNtT89DzVfcMjGpXtNQ=\nR:models.go\na:0:0:444\nZ:Q1qeyyUknbqhgvMakw4miJ4tzZR8U=\nR:operations.go\na:0:0:444\nZ:Q1fHAY3vXfqquRhlp060w8XUf+om0=\nR:version.go\na:0:0:444\nZ:Q1+tKdPeRTum7fxB55Xc9d6Ds8bUM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iotcentral/mgmt/2021-06-01/iotcentral/iotcentralapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dz5FvruayLKDwWQXG6IpN08d7Qo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2016-02-03\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2016-02-03/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WP1kVu5195gR8bjkLPaVPDk7NPw=\nR:client.go\na:0:0:444\nZ:Q1j0icSkrPOQHu2KzT6ppXIf1IFm8=\nR:enums.go\na:0:0:444\nZ:Q19acWDnNjuLzd8rVYUqBdMzdVxGk=\nR:iothubresource.go\na:0:0:444\nZ:Q1EgtX7hOoCM3i6YU3r3wH6lK3HJ4=\nR:models.go\na:0:0:444\nZ:Q1BESHwjRZvKVRaN/0dz9zm5yiwzI=\nR:version.go\na:0:0:444\nZ:Q1dcB3Ca4RnENa9NoXMfN4syVY5eY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2016-02-03/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Qg+RvpGzjt3q01dKt8yqRAVg56U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-01-19\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-01-19/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fDjRNAVbc8veTG46Rkz7dvajy+c=\nR:client.go\na:0:0:444\nZ:Q1pX84Jof3m2fggnPTCd0gMrogya8=\nR:enums.go\na:0:0:444\nZ:Q1D1L3JlCgzx+MK/3+dvpuW7ZGYeg=\nR:iothubresource.go\na:0:0:444\nZ:Q1FoWKA2IgikMyjbZB5Usg01AQk1c=\nR:models.go\na:0:0:444\nZ:Q1QhFGv+G8K6HNiqtluNSXvl34Ajw=\nR:version.go\na:0:0:444\nZ:Q1ojxTzN70qgXYHriGra+Nwi0NaHk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-01-19/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1830r8zLSNhJDFQ49y3ckNO2khvo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-07-01/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ceg1kTZ6M4JzQr+z6qT4g8EdH4Q=\nR:certificates.go\na:0:0:444\nZ:Q1BFmHrQ2BVxF0Kdyrhb7tUnz7Svo=\nR:client.go\na:0:0:444\nZ:Q1leLo7tOvUG1jWKGOd9wDeez+oSQ=\nR:enums.go\na:0:0:444\nZ:Q1D1L3JlCgzx+MK/3+dvpuW7ZGYeg=\nR:iothubresource.go\na:0:0:444\nZ:Q1NoI6bpdHJQlku6VlxJX+CLsqb7U=\nR:models.go\na:0:0:444\nZ:Q1GN30b6Spds/HG8ZDLbeMUBKds0s=\nR:operations.go\na:0:0:444\nZ:Q1YX/bBN9xVa5OMBSeyq/rrDeNo/o=\nR:version.go\na:0:0:444\nZ:Q1zy4nSMb6aHR2N8Qa2i/UhjBhjc8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2017-07-01/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1D8v8U3VW29GgCAGCNI2wnRfRYJU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-01-22\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-01-22/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18avmaIA2mzrzdiCXwNq2FUZ+EpY=\nR:certificates.go\na:0:0:444\nZ:Q1JFna10TrLRjHsPHy1zGzAIiS7Bk=\nR:client.go\na:0:0:444\nZ:Q11uj/urs++Gl+OoXRt1rvDg2W6eI=\nR:enums.go\na:0:0:444\nZ:Q1D1L3JlCgzx+MK/3+dvpuW7ZGYeg=\nR:iothubresource.go\na:0:0:444\nZ:Q1u7ilqdxvFSsoMhP4q0Uq7WnaPms=\nR:models.go\na:0:0:444\nZ:Q1XsuAOpqOazUokfNcR+KSSZaHfRg=\nR:operations.go\na:0:0:444\nZ:Q1qwOEPS3RatNlI8xDENj5iLkOZfo=\nR:version.go\na:0:0:444\nZ:Q1nQlep8tD/OM+GR1sM2RuYQYMsjU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-01-22/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kAj34zMzJemQtZTw0pLyuJWobGw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-04-01/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1tWgzljvjjetuOSns+w62BWtrPHc=\nR:certificates.go\na:0:0:444\nZ:Q1kgzXsSh2QF+CmS8ta/lAq1QgX4E=\nR:client.go\na:0:0:444\nZ:Q1xAVH0H2tRT1ljlLiBgDEW3P4AO4=\nR:enums.go\na:0:0:444\nZ:Q1xSCMhsfJBoRpcGsURtTdCGD+yUs=\nR:iothubresource.go\na:0:0:444\nZ:Q1bGngbXKfNe4xle+s/iNvK39L1WY=\nR:models.go\na:0:0:444\nZ:Q1e2gqA1q9oC0BSx09EAW+uMrUqcM=\nR:operations.go\na:0:0:444\nZ:Q1wzbBz8jiw2WGlVmd3TA/tiT2XHY=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1vKEKp5SFfDissUB0+aO0x1JLKeE=\nR:version.go\na:0:0:444\nZ:Q1mwsjwLXvd5CrwQtMKFSEHDkw/XI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2018-04-01/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gNIgG8CSHHvKpWm8ALzMhRgzJSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2020-03-01/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XeJjXuwuUJKEYLDhtYtpv3qZD2I=\nR:certificates.go\na:0:0:444\nZ:Q1ksXUlcBtdo6dHUP7ZmM4/qVcxhI=\nR:client.go\na:0:0:444\nZ:Q1mXKa2OiUbfKomT7PqPNCRz4PLfM=\nR:enums.go\na:0:0:444\nZ:Q1iY2NSXcJJBywDdScfctXW69pf4c=\nR:iothub.go\na:0:0:444\nZ:Q1q1hl8h4+TyGdZ3yv3TZui1XAxhQ=\nR:iothubresource.go\na:0:0:444\nZ:Q1fwrXuz+NTte8fb60saehQbJjipM=\nR:models.go\na:0:0:444\nZ:Q1/TFroDyrX8OPDA0B+ZMpHlqEUbE=\nR:operations.go\na:0:0:444\nZ:Q1/NxHoV8FtyTrMV3Jby01O8USLRg=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1HYgk2xzsMFqK6UzmTHD5PzP3TlE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1AESba/HFDgyMZufCNHOossUQARU=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1WNiSv14iEQOK8jbB6AbmfD5eJ2E=\nR:version.go\na:0:0:444\nZ:Q1GyyoFS3vDSWAIevH/em8cmPfSd8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2020-03-01/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15EZUUkbSUiWzL17sBtpNYRSI4bM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-03-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-03-31/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FWNNNOWx1aJSKzNxmZHCgC2QIIM=\nR:certificates.go\na:0:0:444\nZ:Q1xMqbXr/TuoYTqlgBOtRlif8jO+s=\nR:client.go\na:0:0:444\nZ:Q1+cEym5E5u85NdLu7e3v8sZLQIm8=\nR:enums.go\na:0:0:444\nZ:Q17uSVbfaYIIhj3/xHrKOrCsFBbL0=\nR:iothub.go\na:0:0:444\nZ:Q1r38qQShAYBnp8cZXnWjxKcrf8Gk=\nR:iothubresource.go\na:0:0:444\nZ:Q1pi81JXOKYcwRjbzJyt5Wl9kqY6w=\nR:models.go\na:0:0:444\nZ:Q1l3thKiJK/3otS1ctAdBgE6pI/7U=\nR:operations.go\na:0:0:444\nZ:Q1cG3wkYSiclRl4e2czOmQs1T6Oao=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1uEvABfhmdDYpNVLRK1xOlxUKkWo=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1tkjqxG25q0vAh7P+IE/7pLAy3ck=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q11oDyWlTvBrHAZQlhzWQHX2cLOwQ=\nR:version.go\na:0:0:444\nZ:Q1ys2q2Yn/adf1tiOgXSrwSFni8JM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-03-31/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mqbx+X3tDkf9zeL4pSohaNlmQgE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-07-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-07-02/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gpkdpWwbJq0ndEpYDIL2Yyb4V0M=\nR:certificates.go\na:0:0:444\nZ:Q1FyDdpONXShcW1fMrKXc7otOWY/Y=\nR:client.go\na:0:0:444\nZ:Q1QxwbLIm33sG4iYKbUgTbH/TalnA=\nR:enums.go\na:0:0:444\nZ:Q12kR3M8b+vTlctjC8afsQMp9qxRc=\nR:iothub.go\na:0:0:444\nZ:Q1vSot3HH/zv5KEfYdyg1WYLpKbTo=\nR:iothubresource.go\na:0:0:444\nZ:Q12lIbQCuJFkQx1l6cveZVpGyIf20=\nR:models.go\na:0:0:444\nZ:Q19Xnuhx8VCqaplkKVJd0Jz38g/LA=\nR:operations.go\na:0:0:444\nZ:Q1f+SYImXTI8COFBUXagrKqq2HvAk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1QbXBalIFSfohpqzY8Ql+zq1fayc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1QSoKwD7DiwyJWj9ADb0xKUBEYb4=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1IUL5a4SWJr8Pgdm/oD1wfCqv9Cs=\nR:version.go\na:0:0:444\nZ:Q1XKSycuWKB5YBpKQR6eyakJyRDWk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/iothub/mgmt/2021-07-02/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1u0iyMiFetlz4ucAZYVtlnqazFEM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2015-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2015-06-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1n71t+CuecFO+wx2EHkdrN87i4yE=\nR:client.go\na:0:0:444\nZ:Q1tUFdUqsJ6h3IUPANILaWAu01QtE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1siWdD5jrvaUFZO3/KD2McI7WDbI=\nR:enums.go\na:0:0:444\nZ:Q1HVDSODGqsfy9sZdbhBbGmHvSBv0=\nR:models.go\na:0:0:444\nZ:Q1q7yJu2xaenQt2GX8JYo5Sm1+1Rg=\nR:version.go\na:0:0:444\nZ:Q1R7Elnd0Ke9en+iws/dezDpdvThE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2015-06-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yoYHIfZn12d/YYHI83tMlFRqcRE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2016-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2016-10-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1WrXv1MBcXAVvZXU0Ebn1ZVvhAmI=\nR:client.go\na:0:0:444\nZ:Q104a44Bo8e+Fvxzfb2my8NsbsG1k=\nR:dataplane_meta.json\na:0:0:444\nZ:Q10/fb4aUETc6UjtU5w7V1Yq8i+/s=\nR:enums.go\na:0:0:444\nZ:Q1JALmHehigs1rat0GKm1JVXC9UqE=\nR:models.go\na:0:0:444\nZ:Q1Oz2afdfiYSeIMI83TgbJ1AdUkag=\nR:version.go\na:0:0:444\nZ:Q1VxnwdlZH8kMmJHUW1TmyCfQa9BQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/2016-10-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zPWJ5yNo4OLrLMkPSsYZD+PeqAc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/auth\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q1MLCaJw2Lzpi9FfHXJvL3MXGmYXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2015-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2015-06-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1308ywiLnY0KQ9fo//PXX+/qs1Hs=\nR:client.go\na:0:0:444\nZ:Q1MrNZuN+BNtw9JFBgXta12Ocyj+M=\nR:enums.go\na:0:0:444\nZ:Q18lpSX/kWjkE2uKhRhWgWXbO3vXs=\nR:models.go\na:0:0:444\nZ:Q10vWuRhn7DdWk5W2AigVYXZnfsno=\nR:vaults.go\na:0:0:444\nZ:Q1mYqghm9SC2H9l7mDbXU70s7PsCg=\nR:version.go\na:0:0:444\nZ:Q1R7Elnd0Ke9en+iws/dezDpdvThE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2015-06-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nMAXZqZkKfBPvTnpZCfN2SdcbpI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2016-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2016-10-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RJQ+qM1Js3unp5mpATsCIaajljc=\nR:client.go\na:0:0:444\nZ:Q1LBrrSvBYCsDLNseF+hdlmsZgJQo=\nR:enums.go\na:0:0:444\nZ:Q1qNkhmwpdXB1tqeEmeNH3UE72UNQ=\nR:models.go\na:0:0:444\nZ:Q1bwTTzm+k8Rs+C7OWTLpTv/Xe7uE=\nR:operations.go\na:0:0:444\nZ:Q1Mr5nIwyVJN/H0sQDhHc93YJp688=\nR:vaults.go\na:0:0:444\nZ:Q1rEtyd/VBF1Zg1GQpVS41lrJY2OM=\nR:version.go\na:0:0:444\nZ:Q1VxnwdlZH8kMmJHUW1TmyCfQa9BQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2016-10-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BkZ3vKL6LyS3k5eQyZi7SFDldIc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2018-02-14\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2018-02-14/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BbSI09gX0WgIvNF2ZqjSswpCpfQ=\nR:client.go\na:0:0:444\nZ:Q1f23BCjSMBIFMo/8MoDfVuGoWcrc=\nR:enums.go\na:0:0:444\nZ:Q1UkvdgfE9Y41kWCsLHfFMS7OZEoI=\nR:models.go\na:0:0:444\nZ:Q11ayBetkCHnyWbrymHfvbIXJ+KIA=\nR:operations.go\na:0:0:444\nZ:Q1u7kvgsT4DPjYXb6rULYysHJh0g8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1hiOiSYxuqZdF0NPwVdpfe5pLRaU=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1xdmTqqBMlFXdascU/ODlLqg5tH0=\nR:vaults.go\na:0:0:444\nZ:Q1YCbgiJNZmkGVqgsUntr9XBp2+NA=\nR:version.go\na:0:0:444\nZ:Q1ulP5RdaynkRfmRh76jOfFkDGvDM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2018-02-14/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XTI9U7DKRpAnFt6cwFz3v7Ss4mY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2019-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2019-09-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zE0thsScIG/GpVjsWpXzFetksUI=\nR:client.go\na:0:0:444\nZ:Q1xfr2n9rLxbmfWCviVhnIzLEISSc=\nR:enums.go\na:0:0:444\nZ:Q1TkUOQQTfaqyB8c9xjAZWLf+CuDI=\nR:keys.go\na:0:0:444\nZ:Q1GT4qmCHFuGA1p6s3J30C84oWB1Y=\nR:models.go\na:0:0:444\nZ:Q17n6FU/JmxQuby9tBbN7wrp0MaVI=\nR:operations.go\na:0:0:444\nZ:Q1dEqCwz5MkIAX6d0nxCYLLvzJWM4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1XLM3iMFTK+UWeS3dCYZVf1gnsvg=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Qa7RuojFbQcvRLk2dvLq9HTPAmg=\nR:vaults.go\na:0:0:444\nZ:Q1H5SR6llM7hnjxVTMRqjKpTNvjz0=\nR:version.go\na:0:0:444\nZ:Q1NhTD3sBTHeMRspT4d/N5K/6Jk90=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2019-09-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1r+U8boBNNrFH2fXvsCTbTeIUP+I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2021-10-01/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TJc9zZ30mMurhdTWBQ4JihdJdow=\nR:client.go\na:0:0:444\nZ:Q1WPsWCmt3CeUUrVH7sfHiMmU0lvg=\nR:enums.go\na:0:0:444\nZ:Q13Kws5KA3O3NdbYFpdUMd6hYMcw0=\nR:keys.go\na:0:0:444\nZ:Q16pxbmtQvDUNSLrv3nP5akodEdko=\nR:managedhsms.go\na:0:0:444\nZ:Q17t9Sk+GOdIH3JgsGb48iXA/rL+A=\nR:mhsmprivateendpointconnections.go\na:0:0:444\nZ:Q1lT8kBwZQ3DKbZroqtDqv7PhTcAI=\nR:mhsmprivatelinkresources.go\na:0:0:444\nZ:Q1o34wdzn6PGqz4pjFyuF/nwjJo4w=\nR:models.go\na:0:0:444\nZ:Q1gD6ppqpz1eeYkBhqcVQrh7HmHJk=\nR:operations.go\na:0:0:444\nZ:Q14IG7lrEHvFZmxJAX0B5dAs24/5o=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1QV+A9PY26xOSCbMPpFU6bKynp1I=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1oORZta7kAQCX7S0jbWEWGVaEYP4=\nR:secrets.go\na:0:0:444\nZ:Q1ahgORQ2h7PDGq7QJzRJ/Ih9u6dA=\nR:vaults.go\na:0:0:444\nZ:Q1TqR5/zYp5IgFAZs/juElnWMm+D8=\nR:version.go\na:0:0:444\nZ:Q1YrzVCPv9mrAxRGW+ktosO5gHXiU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/mgmt/2021-10-01/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QSU3fCE9D6ZQ5vj2IfvfvKHtJHs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.0/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1q/jKgz5AVLN/+AJ52OoDGmo+RQU=\nR:client.go\na:0:0:444\nZ:Q1XKGoLRsZ2ZO/GQbIxkCnfk4n7LU=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1VW/isC19IKL9rMP6APu4k7+tIcE=\nR:enums.go\na:0:0:444\nZ:Q1BR6FNlAmo2iPJwog8NasSbHpCx4=\nR:models.go\na:0:0:444\nZ:Q13N/hwg7Rrr+LksB2JE+gD9XgPZw=\nR:version.go\na:0:0:444\nZ:Q1jjClfDqrtuZVscfrB44BkVyG88o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.0/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1afTOslm/aPcLTyuI1AwR2JFF3MQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.1/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1q/jKgz5AVLN/+AJ52OoDGmo+RQU=\nR:client.go\na:0:0:444\nZ:Q18g01CddY2qt4fUb/nRlcT5LFsY8=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1hzPP3nym1D9K+iqpfOv/vB//Im0=\nR:enums.go\na:0:0:444\nZ:Q1acEhC3ZweqlZQHt7T187CbpmCK4=\nR:models.go\na:0:0:444\nZ:Q1+vTUGGW/ykqWqdYOqO9OOmEjeUs=\nR:version.go\na:0:0:444\nZ:Q1fZyjDt0H16vMjT6zRfPOYKU70Qs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/keyvault/v7.1/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1APgBwz6ht/NRqFNdZqAUSSWN0/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-03-01/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rJ1JBXrPQGywoOzgcQI2f6JrhLY=\nR:client.go\na:0:0:444\nZ:Q1+jRpjPQxytVht8P9stjFCx37f3M=\nR:enums.go\na:0:0:444\nZ:Q18V6UiO38XlCpMOV7LgfMP0uFsEg=\nR:models.go\na:0:0:444\nZ:Q1tja+7tb1A+7w9h+iGgf8bH4zkqk=\nR:operations.go\na:0:0:444\nZ:Q14/Xi6mwnJ1dNTGogTG96belkTik=\nR:sourcecontrolconfigurations.go\na:0:0:444\nZ:Q1jJnbLH5T/6sYIOcDiwJsZpxqa7M=\nR:version.go\na:0:0:444\nZ:Q1muzJvruSzpwq7qiwty27AS4dLdA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-03-01/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ew+H7DZW+jSZLTXe1hUgTy0ERtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-09-01/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pWeoobmfjZ/+OIXt4NM8lTLRKGQ=\nR:client.go\na:0:0:444\nZ:Q1ychGvVLw3f55Qbq3OoiA+zxV1Vc=\nR:enums.go\na:0:0:444\nZ:Q1wTX0lrD9Pfvio+3P/5bveNMs1No=\nR:extensions.go\na:0:0:444\nZ:Q1BbMqyKtiSEf+2bvcgpEYiBSl4Hc=\nR:models.go\na:0:0:444\nZ:Q1gGeTbS9x4QYdpG2TfJL6YLtq5bk=\nR:operations.go\na:0:0:444\nZ:Q1Ogn8365KyQ7AChO8/zKQ1/XTXKQ=\nR:operationstatus.go\na:0:0:444\nZ:Q1bZsm6kBDyMW3cjBOhbj9cUjtHFQ=\nR:version.go\na:0:0:444\nZ:Q1mTsStqYvSUPzZeT6msx6Dxoz6AY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2021-09-01/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fbXBfxI35tgNRsVJvzKbRO7gDT8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2022-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2022-03-01/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1v0v39XZnqFIea4ZHdashtgRd0ak=\nR:client.go\na:0:0:444\nZ:Q1SY295HoAC97narjGqUx0Rs2SVG0=\nR:enums.go\na:0:0:444\nZ:Q1r8N656wRqoE2ZJD4Etfhq3KcNnI=\nR:extensions.go\na:0:0:444\nZ:Q1PkyFmUXdyM1J7+vQXxsxYMyFmtg=\nR:fluxconfigoperationstatus.go\na:0:0:444\nZ:Q1dT2DOMtGDm8YiTWsWddkJD4GwvI=\nR:fluxconfigurations.go\na:0:0:444\nZ:Q1RBUbhoBdBpF2XtFvRbdqESI7RRM=\nR:models.go\na:0:0:444\nZ:Q16dUTHuc7jf9zQDBoQX6o4KW/icY=\nR:operations.go\na:0:0:444\nZ:Q1TP7qwP+zNJeFSyd54fWzjcBAtVs=\nR:operationstatus.go\na:0:0:444\nZ:Q1T6xns+svOk+E2Xd7j97Kl2E5fbI=\nR:sourcecontrolconfigurations.go\na:0:0:444\nZ:Q1+/4adrfdAeVK6YMF98qQ4g+msIM=\nR:version.go\na:0:0:444\nZ:Q17/VICL50sNUMlBlcbvp384GxKWk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kubernetesconfiguration/mgmt/2022-03-01/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15J3wQ91CphnFA0E88CUtXBxR36U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-01-21\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-01-21/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UeOy4HPz6IvdZiuYKWnTPWC3WM0=\nR:client.go\na:0:0:444\nZ:Q1+qsFpKZkFkwGVomXdhfuHQlc8DU=\nR:clusters.go\na:0:0:444\nZ:Q18QcVbbJ8MlBqH//mhIs/e1gp/dk=\nR:databases.go\na:0:0:444\nZ:Q1PiNQsMtiEbVxK3aFBDPv1trU+UQ=\nR:dataconnections.go\na:0:0:444\nZ:Q12fL6lzyfMUvOPwKVu+7bNp4c6/s=\nR:enums.go\na:0:0:444\nZ:Q13+4OFpBKQFp262lQG691NQVOYTY=\nR:models.go\na:0:0:444\nZ:Q1Im1utZdTBGyT3wT/TejZ1DY/H2c=\nR:operations.go\na:0:0:444\nZ:Q1vkooYHLIemN5/Mov4VuPhRZGT0U=\nR:version.go\na:0:0:444\nZ:Q1wbQPqaxBXAE28IhW6ExwMdQtfLo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-01-21/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OCtHJBrRKn5cGruiP8n737wybiY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-05-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-05-15/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rZ0tE7XN2zgX7nT7X7zIclQN4kM=\nR:client.go\na:0:0:444\nZ:Q1gTAVOiuF8Qa6AB+XguQoIZPCv9k=\nR:clusters.go\na:0:0:444\nZ:Q1/hMF8y87j6qrMM7avHVlLL0aWwA=\nR:databases.go\na:0:0:444\nZ:Q1gnty0T4W4xtAw+Qs4wCKtVI52zw=\nR:dataconnections.go\na:0:0:444\nZ:Q1g/9+7hG1FBzAo7bck0g0jMKKP5o=\nR:enums.go\na:0:0:444\nZ:Q1fsai8YM7QY93uwGVfM2TaZ8s8qo=\nR:models.go\na:0:0:444\nZ:Q1184kJKIYlgqxygMn74PcEJ1wNhY=\nR:operations.go\na:0:0:444\nZ:Q1tDyErT76OgQfgx/HNb5Eh7o2BEU=\nR:version.go\na:0:0:444\nZ:Q1taqgUItc1cWZw1RuubXDshi/3wM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-05-15/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xBSsktkcke77pQFemSCCqo+htKY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-09-07\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-09-07/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1q7S0kQPw0qpE42g2R5p3dCsOIlU=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1jTEGGaenOLcvOIYo5TqufKfQ/aQ=\nR:client.go\na:0:0:444\nZ:Q1lkBD/HRUE3h6dKyZGgtc3IbYo4U=\nR:clusters.go\na:0:0:444\nZ:Q1Nn+k8SHOlvbdJ6DSbMdftH9NT5Y=\nR:databases.go\na:0:0:444\nZ:Q13KR/wtMpHl8FvMNudJEAqKfOGKU=\nR:dataconnections.go\na:0:0:444\nZ:Q1nxeeGT+Zu654qD95JK9QytRMYRU=\nR:enums.go\na:0:0:444\nZ:Q1JrQBfSttGAw9MWC3iuo5AAJwn0Y=\nR:models.go\na:0:0:444\nZ:Q1Bk7x6HUEWwtlxNwsqwZhwhKssOc=\nR:operations.go\na:0:0:444\nZ:Q1lrPSEi9LKBX0tFPZmJ62g82/K48=\nR:version.go\na:0:0:444\nZ:Q15AgIFJ01k6GaTwNoLwI35YyOw0A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-09-07/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EGdMW9FUrefv5aYtXYVhaSHq3Ko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-11-09\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-11-09/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/2mlXPF+HAHeIYl0jepVOQJAa10=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1zrBQBaehLmPbdkoqSauP+g/3VnY=\nR:client.go\na:0:0:444\nZ:Q1G+xjwfgPw4EJqo6XGuj6EJMScaI=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1MxONL9155B3/CLHbedJDOYGglGc=\nR:clusters.go\na:0:0:444\nZ:Q16JuzENoHKHoHHsFLVPHPBNGwXeo=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1/NnTL/m7RbgXpnNCQd84unJ3ss8=\nR:databases.go\na:0:0:444\nZ:Q1227rGlr5FrbtoRZBB0wuzu74Abg=\nR:dataconnections.go\na:0:0:444\nZ:Q1XHfprILgK57/ymPebsKbKEAt0PQ=\nR:enums.go\na:0:0:444\nZ:Q1uLUrfVNwmtyGEmyaOMXaCrvqxlw=\nR:models.go\na:0:0:444\nZ:Q1FhvsdaeL1FZq9YXvZ3/Wk529/lQ=\nR:operations.go\na:0:0:444\nZ:Q1MIEhrrE6o6ynkanlXyVLe8AWH2o=\nR:version.go\na:0:0:444\nZ:Q1yZylVZlyvCzMUwxh0chShytbR9Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2019-11-09/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BPud5bbvRwoHFBhh9mTv06zfXlQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-02-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-02-15/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KJTYtkzdX5dV9OvsfuYg9r5VvB8=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1Sb8rsBKRAKkMu+QxFDmHgoXA4lY=\nR:client.go\na:0:0:444\nZ:Q1PyIm+eA8N9PSg3Zi+bO2/jXvbec=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1t1jswIzwzNhcjS3qnWcGrVok23A=\nR:clusters.go\na:0:0:444\nZ:Q1uzZ9gJ8Qa9j6n5CSk9OEidDK54A=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1aX1y1a7ON6LKsEoM03dgWVff4wg=\nR:databases.go\na:0:0:444\nZ:Q168vOgSUEWPI9cHMl9IurSCVSZkQ=\nR:dataconnections.go\na:0:0:444\nZ:Q1G0Gl9sqmdsv3VczeACK+da0bs4A=\nR:enums.go\na:0:0:444\nZ:Q12yAtqdbZa5EH9/clfPDFTqYvGYA=\nR:models.go\na:0:0:444\nZ:Q1nQk27yZyV+zodMEY1X2f/nnIj2U=\nR:operations.go\na:0:0:444\nZ:Q1CI/pfmCya+FS380E5xuJpuvU60U=\nR:version.go\na:0:0:444\nZ:Q1523UANuWAdPp4pry8gnBpp5sYlo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-02-15/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cl/hPyhhtc3EAFVPvSlQA3RDZMI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-06-14\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-06-14/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1q78GnluSAq5FTzQTtjqCk8U1gvk=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1N2PpN0sc9VDK1EmMoeA6BM6g63A=\nR:client.go\na:0:0:444\nZ:Q1QW83ict689PhO1Q0MTi8X2pdNH8=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q194xao/LOCWh01uEbP/fkFpC/C6k=\nR:clusters.go\na:0:0:444\nZ:Q1qfA/3ii6smhD+MZg+xM0l0vix+Q=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1l+NaiAP1RP3Uu7Pihu+4UE5Vemc=\nR:databases.go\na:0:0:444\nZ:Q1mL9+BqWRpV8XguyEGwLdEP2Tk9s=\nR:dataconnections.go\na:0:0:444\nZ:Q1Dg1711s3tox1RI9hotBACKwFA3s=\nR:enums.go\na:0:0:444\nZ:Q1Qgw0nOYvfeAQqrI8LY8iMzpSBJ4=\nR:models.go\na:0:0:444\nZ:Q1RFVRnt4LcAz+Z84vY2Q+a0OtsDw=\nR:operations.go\na:0:0:444\nZ:Q1SEOnSy1RoKasiJWeOS55H29+jgM=\nR:version.go\na:0:0:444\nZ:Q1GXtFMciNiqR/7pIsxhec4s9WWLg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-06-14/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fA7ASyT6ei9I6hqPjEsLgr6nyZU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-09-18\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-09-18/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15Af3VOIBIa8t0Y4j8BfAAK0khNo=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1TvHlMcLMvPh4tShwAwPsF+9KhR4=\nR:client.go\na:0:0:444\nZ:Q1vjpKn20Z7H1IcNVGyqijfcopUrQ=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1IUhJTHD67pGly4NSdlVdNePOunY=\nR:clusters.go\na:0:0:444\nZ:Q1M3+NSmXM6VnAwS78tZgtWel4rEw=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1H2dZ/aXB0R7Zl9PcMIkjdhzVK1A=\nR:databases.go\na:0:0:444\nZ:Q1dJZVUOILTFW+CIkyDICsg8qkXeo=\nR:dataconnections.go\na:0:0:444\nZ:Q1qJMjN6nQDB3tRFQA2TSb/peiwrk=\nR:enums.go\na:0:0:444\nZ:Q1l+RVC4ZJLJlJYCO9E2FrIO/ZFtc=\nR:models.go\na:0:0:444\nZ:Q1Xj9vQAfOmoEKUljPUgba6Jj1KKY=\nR:operations.go\na:0:0:444\nZ:Q1mtanNLPeErdkba0YLCMbWhxlt7U=\nR:version.go\na:0:0:444\nZ:Q1x0nFH4wRnqJpzo8Wz+bi9Rqnea0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2020-09-18/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1abHA4qzEih++9IzUH8+pQLzN0DM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-01-01/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bm8CF7fSEbdOi8AROfrYgTfHkG0=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1X4Rj48j54qMO83cSlpI6mkctk8g=\nR:client.go\na:0:0:444\nZ:Q1oEB9FEm6PQtbU3K8KiZfMI0AaxI=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1c1iKVHqkWINovudm2JxJwZt/Sh8=\nR:clusters.go\na:0:0:444\nZ:Q176IqkaXNhWaxRV0HoTAVkSWsFUM=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q10JpEOoAFJ3bgrMhKD68QwZUF4YY=\nR:databases.go\na:0:0:444\nZ:Q1eZaB2T+txuEyIszC3ZQhsLn29s8=\nR:dataconnections.go\na:0:0:444\nZ:Q1VA+lCpxzeIMsk0mBpsdlF8qmr+k=\nR:enums.go\na:0:0:444\nZ:Q1vopbUBEu1a8cSWDEk8V2VQGMmI4=\nR:models.go\na:0:0:444\nZ:Q1iReHXki6SthBG5Ds8xodEKTBxVE=\nR:operations.go\na:0:0:444\nZ:Q1JxoY3f71JNzgvhaSQd8EDRNfJE0=\nR:operationsresults.go\na:0:0:444\nZ:Q12d6NNzpaFkFUKmUh8r4u+ngDh3o=\nR:scripts.go\na:0:0:444\nZ:Q1yhlVwVdEspDWVhireRpH7HIXbNc=\nR:version.go\na:0:0:444\nZ:Q1WAzH7Vz61GG/1HfAiISqi5t2Wqo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-01-01/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14ayW5T7Ib61mLeaXBGdpwI63pG0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-08-27\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-08-27/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Km6yA+HkXLg63lBvYf2gxreHLUA=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1GVL6v9m208+pimhPXhsq0Zd8Lzc=\nR:client.go\na:0:0:444\nZ:Q1wGQEDOWutV6C91FcNBYUhnDEYZo=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1XY6bKsk33yqcz1OhiiHH7teUv5c=\nR:clusters.go\na:0:0:444\nZ:Q19XgGHtqwDjGq37amVZhS0oWrpHM=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1GeKtm0F9XUooDDypY3ftVnRWVs0=\nR:databases.go\na:0:0:444\nZ:Q1clLuzDc91Hpv7XKKRo1qfJ4WimA=\nR:dataconnections.go\na:0:0:444\nZ:Q1J/kskJRDUE75fe5AEEdQLc8UXFc=\nR:enums.go\na:0:0:444\nZ:Q1tdc9m1e7MHNE7zAmzVEZSkIagtQ=\nR:managedprivateendpoints.go\na:0:0:444\nZ:Q1e5K4Ndbg2uBcT+pyG/Nwz/TVmuc=\nR:models.go\na:0:0:444\nZ:Q1nWb8Zlu0IWDWvCer+qHYeIBsjYE=\nR:operations.go\na:0:0:444\nZ:Q1pzbTL1tCkCfFp441kgrnfRAw3lU=\nR:operationsresults.go\na:0:0:444\nZ:Q1QfBeTAjKmUN9lfwVVQNdy8P2BsM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q15nodcuPowd+CwsSbu6Iu1quJ+4E=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1A8DdxbMN666VrfLiv4KBVQjx62o=\nR:scripts.go\na:0:0:444\nZ:Q1Z5cm6h3W+OvaCMFOBnkxP0ofXNY=\nR:version.go\na:0:0:444\nZ:Q1arYtyTSlV1QLUYDGbM9ETZCbY1c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2021-08-27/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GSaMaKPMoDBA+kwVGgYg4nhZlC8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2022-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2022-02-01/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bczxSS7d4EEtDJhU5gtLNz0lj+A=\nR:attacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1vrT6vZ+boumkJBbNxEpZSKt3pBI=\nR:client.go\na:0:0:444\nZ:Q1GH3unraKx03H6eZbr3bho0/G4lw=\nR:clusterprincipalassignments.go\na:0:0:444\nZ:Q1eNTg7vo7EYQz45h/qcH0GQjHzzU=\nR:clusters.go\na:0:0:444\nZ:Q1gKwr0ue6oMDMODMxChPTvRhohPI=\nR:databaseprincipalassignments.go\na:0:0:444\nZ:Q1yzM2n/8MrBJRTLHmc09T777bw84=\nR:databases.go\na:0:0:444\nZ:Q1Yg6bv5ul5Gs/EMeDwAxWz9aZosU=\nR:dataconnections.go\na:0:0:444\nZ:Q1g7yamMuXNTddJDyt2Hump7qcx78=\nR:enums.go\na:0:0:444\nZ:Q1ru6Wt5cXcYs+k6EfYhIzlZcSOP4=\nR:managedprivateendpoints.go\na:0:0:444\nZ:Q14a8BwncmqoTvt6DQ8sQtiQW4NTY=\nR:models.go\na:0:0:444\nZ:Q1vZzMAUPL0qD4qk/LJVzz0j45iew=\nR:operations.go\na:0:0:444\nZ:Q1f8VjO8Yb1UvpkaMSCW+zawq34E8=\nR:operationsresults.go\na:0:0:444\nZ:Q1sZwqTUX2LvbKCCODhvtWpuGEpyQ=\nR:operationsresultslocation.go\na:0:0:444\nZ:Q1yp/m+cA1c7SBVQq+8jzm38U4TJ0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1KCiz84tOJTE68Mb3iE1Dfzj3ceI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1qX4LvDTpnFGTtNfaE0Oyn62eWL4=\nR:scripts.go\na:0:0:444\nZ:Q1YCfywYL9OLK2uPmAyxA+C0rJymY=\nR:version.go\na:0:0:444\nZ:Q1rVeOKpLVeSOjjUicPFTsxOSkt0w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/kusto/mgmt/2022-02-01/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NhkwdST6hAMFYY9VeWO313R9MCs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/labservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/labservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/labservices/mgmt/2018-10-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/labservices/mgmt/2018-10-15/labservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EVdT3WRE4W9/VtFcX1imXpF7F1g=\nR:client.go\na:0:0:444\nZ:Q1Ocv22ROso3ums0M18bWQ/gYMCbM=\nR:enums.go\na:0:0:444\nZ:Q1vtPOfiVNzl0p7RgWKtlDp+HEZOU=\nR:environments.go\na:0:0:444\nZ:Q1or94kvfsYJEJSAStILj+1xCdMHk=\nR:environmentsettings.go\na:0:0:444\nZ:Q1RZXMU1US+2QsFaCd+/VPKkEs2sQ=\nR:galleryimages.go\na:0:0:444\nZ:Q18vGoTBRqdEOKqhUJDRbw8/9vBF0=\nR:globalusers.go\na:0:0:444\nZ:Q1pbkpj+eW2wHP8vsit6kvlUwtEJE=\nR:labaccounts.go\na:0:0:444\nZ:Q1mCFFpQ5VIyaBRWuYy3LrkeIBnlY=\nR:labs.go\na:0:0:444\nZ:Q1wM7RnFwBgzOg1y/rJuZsJ+uTqy0=\nR:models.go\na:0:0:444\nZ:Q1CdgwwitBaEfm6AxeeVBauOGsjio=\nR:operations.go\na:0:0:444\nZ:Q13lRMtFVi0Z3/GCP1+NFu98Ro1Xo=\nR:provideroperations.go\na:0:0:444\nZ:Q1VI558CRSsJZZbYmV6DbSvP8tdBU=\nR:users.go\na:0:0:444\nZ:Q1bW07SB6+q/1FiZ7l5xXzZNRLdrc=\nR:version.go\na:0:0:444\nZ:Q1CNwFq+wvz7X8/kAHbPG4X4N7aUA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/labservices/mgmt/2018-10-15/labservices/labservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xfC+R9/TNpwSuZvuNwWnncn/QUs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2016-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2016-06-01/logic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NPP7BUim8FQeeyxq615UaHlQnr8=\nR:agreements.go\na:0:0:444\nZ:Q1poZChSB4mht5Rh5Kmpkl3qDb6Rs=\nR:certificates.go\na:0:0:444\nZ:Q1LuGgdffTRLvXBRjVcQ34Hbj6V/g=\nR:client.go\na:0:0:444\nZ:Q1uZdtWbXwwL+UG9IbxVqxMSrZNRk=\nR:enums.go\na:0:0:444\nZ:Q1J32sXsOMg/lhGHo59FvVRVofzOo=\nR:integrationaccountassemblies.go\na:0:0:444\nZ:Q1ro1Mx+Z7/30hZcqqTDu3e7Vj7+4=\nR:integrationaccountbatchconfigurations.go\na:0:0:444\nZ:Q1p4VYD0xuX1xgcmQL7DkQTwKJPcc=\nR:integrationaccounts.go\na:0:0:444\nZ:Q1gR4wVsWqQStZ4Vmz4zdUvfJeFo8=\nR:maps.go\na:0:0:444\nZ:Q1j2g6J44xzxYJo5p+tCSNv/UVwX8=\nR:models.go\na:0:0:444\nZ:Q1Zti/cTfCqL1yy3JnTjgoqulXYPQ=\nR:partners.go\na:0:0:444\nZ:Q1zdB4lzZHHcK+Rlyfmhk82jn46eI=\nR:rosettanetprocessconfigurations.go\na:0:0:444\nZ:Q11QXFrsnobpAvFUkpBNoy0Ti/hDE=\nR:schemas.go\na:0:0:444\nZ:Q1MB6qRuRLGk2nItoxUI9LouutEMg=\nR:sessions.go\na:0:0:444\nZ:Q1EISbKUDNaEfRBa9zoHOscjMu02w=\nR:version.go\na:0:0:444\nZ:Q1C+J5S0hHfaAbmvAWH7QtNxG3Eow=\nR:workflowrunactionrepetitions.go\na:0:0:444\nZ:Q1hY1RYv06Hu7fZf/sKlMV0tqU5BQ=\nR:workflowrunactionrepetitionsrequesthistories.go\na:0:0:444\nZ:Q1HiR6Cr7S7/2OMEmgxzh1UNtix8k=\nR:workflowrunactionrequesthistories.go\na:0:0:444\nZ:Q1OI7eEFTZFlNFXj1PWKyW2EItqgs=\nR:workflowrunactions.go\na:0:0:444\nZ:Q1mt8n2PF+npB01ElHheSj30nQaRo=\nR:workflowrunactionscopedrepetitions.go\na:0:0:444\nZ:Q1ClhCXPgTYu569JFjEVIN0MTuQk8=\nR:workflowrunoperations.go\na:0:0:444\nZ:Q1ONBlhpsLiuiZEwefsjGxB99GcAU=\nR:workflowruns.go\na:0:0:444\nZ:Q1zy6XHMoRADzyUwnd4l7NaDR2Lp8=\nR:workflows.go\na:0:0:444\nZ:Q1A0K2mKe8/9X6JWX5zRJu0F2YTCw=\nR:workflowtriggerhistories.go\na:0:0:444\nZ:Q18ka9RAxOeMklrBnIMnGpnGhf1mI=\nR:workflowtriggers.go\na:0:0:444\nZ:Q1KIZPqw3jVAHYRVItkz+Xqn+I8ZI=\nR:workflowversions.go\na:0:0:444\nZ:Q1tG3etv0MSSLQXVs/rQwzNrhWl2Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2016-06-01/logic/logicapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qJUreAoy1bggFQfOnaDY8kDE6gQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2019-05-01/logic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1/MN9mtT8fjy2toGhc2q6Trm+zxM=\nR:_meta.json\na:0:0:444\nZ:Q11W1TLnS1kw2B40+n8oqj/hE7Ky8=\nR:client.go\na:0:0:444\nZ:Q1WaxUCCsMvzXzOY32eyDczNSloi4=\nR:enums.go\na:0:0:444\nZ:Q1o2aPXT8PmvesqT/WeltdYaktPsQ=\nR:integrationaccountagreements.go\na:0:0:444\nZ:Q131ujwmWRXhOkmoEh/NWyW1maaso=\nR:integrationaccountassemblies.go\na:0:0:444\nZ:Q1gIBQQMUHDmzq4gUYsBMUSw6QsOw=\nR:integrationaccountbatchconfigurations.go\na:0:0:444\nZ:Q1DQGp7iffup5NgKH/yMVjCf2+7XQ=\nR:integrationaccountcertificates.go\na:0:0:444\nZ:Q1pRBYOKe9xP98PEGtwdQYhsS754s=\nR:integrationaccountmaps.go\na:0:0:444\nZ:Q1l5v3qmowhBUklK8dekGO5qzz7v4=\nR:integrationaccountpartners.go\na:0:0:444\nZ:Q1/F30k2dobr6henSvsC0ybTPn3jc=\nR:integrationaccounts.go\na:0:0:444\nZ:Q15siMSXb8xk2TiZNaJrvfNIx2Ciw=\nR:integrationaccountschemas.go\na:0:0:444\nZ:Q1fN1MZv1453gMwYFB4rApeMSGqgE=\nR:integrationaccountsessions.go\na:0:0:444\nZ:Q1GKUaHSoZ8KGdjt+DbmmrA19nRtY=\nR:integrationserviceenvironmentmanagedapioperations.go\na:0:0:444\nZ:Q1S2+GlFqNBYqvcWBfqydfk7DJ2zQ=\nR:integrationserviceenvironmentmanagedapis.go\na:0:0:444\nZ:Q1792AF12C9FFoUmvOtBN/a91jyRQ=\nR:integrationserviceenvironmentnetworkhealth.go\na:0:0:444\nZ:Q15UDyUvGP0lNvlv1Z6m/6VWzDCLk=\nR:integrationserviceenvironments.go\na:0:0:444\nZ:Q11eJwuWbZfLUF/FkAXEsNOp3j1JA=\nR:integrationserviceenvironmentskus.go\na:0:0:444\nZ:Q1BDJb6bsMOkrmS70M811kgoDKP10=\nR:models.go\na:0:0:444\nZ:Q1KIyNi7X7EgnsfCFbFL3RNdYfnS0=\nR:operations.go\na:0:0:444\nZ:Q1Tp1qxQDc86at0tVUB6joo6DkcSk=\nR:version.go\na:0:0:444\nZ:Q1N68vz1sNRXbWC3Hmxu8cGSn9FKQ=\nR:workflowrunactionrepetitions.go\na:0:0:444\nZ:Q1SdACkxTDQnKf8TkC8xLXOSo1SMY=\nR:workflowrunactionrepetitionsrequesthistories.go\na:0:0:444\nZ:Q13Kihpp9hO4PXFw25G7gIOskkJ8U=\nR:workflowrunactionrequesthistories.go\na:0:0:444\nZ:Q1bwX6tnzmAsn6QXa/97snPf3xQ0w=\nR:workflowrunactions.go\na:0:0:444\nZ:Q1ytYfjwjFwLI8h1ELTTLUQR8faeg=\nR:workflowrunactionscoperepetitions.go\na:0:0:444\nZ:Q1vLKLbMP9tt6NDBFYJ+oigeMouqM=\nR:workflowrunoperations.go\na:0:0:444\nZ:Q1Df0KSKZzr11QSsXzT3oV6hq4MOY=\nR:workflowruns.go\na:0:0:444\nZ:Q1whfA9DHAzdE5IjDNjvRACW4wg3A=\nR:workflows.go\na:0:0:444\nZ:Q1sEaIKgbEJQt/zwRVPe5/goSH++Q=\nR:workflowtriggerhistories.go\na:0:0:444\nZ:Q1R8vJ1MNzMJPtp8DT2KCUmLQNtf8=\nR:workflowtriggers.go\na:0:0:444\nZ:Q1Gy56h4tO7PXIAHZ66eqXs/OT5ys=\nR:workflowversions.go\na:0:0:444\nZ:Q1C0TMJxJzIVapi7i4pNyxbVAs55g=\nR:workflowversiontriggers.go\na:0:0:444\nZ:Q19Br6rJdBW85dBjj+r/3vMM0sWjI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logic/mgmt/2019-05-01/logic/logicapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UKlxoRfZ2B8QRU27NQ9DVp4pqBQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logz\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logz/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logz/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logz/mgmt/2020-10-01/logz\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rsJEAHKkyJsH1S1bLHEnTj3KWqQ=\nR:client.go\na:0:0:444\nZ:Q1EuNw/YMkJxQxYU28Q7/33SNe7eY=\nR:enums.go\na:0:0:444\nZ:Q1o/FE5eBawC1R3R1S2AK/aQjBtK0=\nR:models.go\na:0:0:444\nZ:Q1x8aYLB86aGmFChUY8IHhwbzhCWA=\nR:monitor.go\na:0:0:444\nZ:Q1BXb3xtnlurKB+P7sV8iN3UJc4PQ=\nR:monitors.go\na:0:0:444\nZ:Q1GKb7QZlcYIryPw1cl349i42TD/E=\nR:operations.go\na:0:0:444\nZ:Q1l06UCsskWwwEcZH7GIWZpTOUbsc=\nR:singlesignon.go\na:0:0:444\nZ:Q1oJG5KXcJJUAAQsfg8cWbryhXRuM=\nR:subaccount.go\na:0:0:444\nZ:Q1Ta2Z3vBE+jxbLs9HgmgmGiEdJTo=\nR:subaccounttagrules.go\na:0:0:444\nZ:Q1u8uevCbR1fWIq/LNsLn7bLVN+XI=\nR:tagrules.go\na:0:0:444\nZ:Q1YY8f7IMLv5mumul7JRiZgx+PUGM=\nR:version.go\na:0:0:444\nZ:Q1McWdtrDUW4hofeWjQrCjddTSxEY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/logz/mgmt/2020-10-01/logz/logzapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q132QG9ZWJbKPrKlAERpQFGRH+leA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2016-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2016-04-01/workspaces\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bRRFLsqcriwMXtS3ZTimirRXqmg=\nR:client.go\na:0:0:444\nZ:Q1hJFu7P+d6syI3vIaMOpIqgDowak=\nR:enums.go\na:0:0:444\nZ:Q1YWl5l3UmtkjHQOHe7oadHehzCJw=\nR:models.go\na:0:0:444\nZ:Q1DDaS3XR4NaIyimTFr3IlZBLBwPc=\nR:operations.go\na:0:0:444\nZ:Q1fwidYSo1hvIj27wKO5gLutKwWPQ=\nR:version.go\na:0:0:444\nZ:Q1egxiQttVjQstB/s0VnaQVcgnYqk=\nR:workspaces.go\na:0:0:444\nZ:Q1kZC3fExu3NTl7c4XuFnscaqXj4k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2016-04-01/workspaces/workspacesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lvaOnpRJXQ30a9adqxCjo70mZu8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2017-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2017-01-01/webservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ppwFiukWxndYjvUZVN5KXCMKbms=\nR:client.go\na:0:0:444\nZ:Q1YQbDUa15+9JJja8GMHtiDoj7xog=\nR:enums.go\na:0:0:444\nZ:Q1vP3/5k44lwaP7jHLBL5yV0vtkZ8=\nR:models.go\na:0:0:444\nZ:Q1xPAObj6LVKcrWjIgPJUbT/rmCaU=\nR:operations.go\na:0:0:444\nZ:Q1eT67DwctJkW6u0ZhenFmB5+lm64=\nR:version.go\na:0:0:444\nZ:Q1vaUSvjk9c+ZfDmHk51D7ViLZQG8=\nR:webservices.go\na:0:0:444\nZ:Q17D7DGEgEUzrN6DpGaP9Ay27eI+8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2017-01-01/webservices/webservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ITQk6w1mCCoUgYap/wRXeHs1LYo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2019-10-01/workspaces\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KafrgDmxjei5q4xF1gyFrpEoAFM=\nR:client.go\na:0:0:444\nZ:Q12GXIu5Bg4MWwih+HcqDL9+XaN2o=\nR:enums.go\na:0:0:444\nZ:Q1YWl5l3UmtkjHQOHe7oadHehzCJw=\nR:models.go\na:0:0:444\nZ:Q1UFCOTfmcjsJclqFL1ObSJTqHhY0=\nR:operations.go\na:0:0:444\nZ:Q1I1Fs2emptHvxCl2P7KrPjqFBJtE=\nR:version.go\na:0:0:444\nZ:Q1f01zEwyFn2E9JN+I/8Eo3XI0O4c=\nR:workspaces.go\na:0:0:444\nZ:Q1RSzn3O6EqZ+G498SFF3ClwckDpM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearning/mgmt/2019-10-01/workspaces/workspacesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tFgY3cEln/hCKoln32lhw2j6qn8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2018-11-19\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2018-11-19/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SlsMeyexibgdFBMRB2a7mHoypWU=\nR:client.go\na:0:0:444\nZ:Q1gmEu2WHmcGX/7d7nP10R7Idd7BE=\nR:enums.go\na:0:0:444\nZ:Q1NPh2P4MG1A2v90W0PMfzoP02T/o=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1ZXDaNzlfbBPGVLCxX2HlUp5+4k0=\nR:models.go\na:0:0:444\nZ:Q1yRpiNRwWDLHa2cyS8cYY8N23QWc=\nR:operations.go\na:0:0:444\nZ:Q1lOvMWDVSQtZGCK5uPd7DQD1LMkU=\nR:usages.go\na:0:0:444\nZ:Q1z43QNroQUpHadsQ6Fg19Apu4lj4=\nR:version.go\na:0:0:444\nZ:Q1CscweRVRRaAA5VCST1tMF/GFnf4=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1j/De5v3YCHAw3+ReZf9ufEQN4xU=\nR:workspaces.go\na:0:0:444\nZ:Q1iXnjkc+U+PYSbl6u+f8Jb1Ozunw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2018-11-19/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Q+Y3Cf23tMdAO6oetgHQtOvwt90=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-05-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lqsJAADXqvtgB7ecoq12WzGjLGY=\nR:client.go\na:0:0:444\nZ:Q1LvbJw/Zvftd8E4A2Hx3PXuryZKg=\nR:enums.go\na:0:0:444\nZ:Q1NPh2P4MG1A2v90W0PMfzoP02T/o=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1qyjdyHbG2gpooKaXMMCAHDt5Xcw=\nR:models.go\na:0:0:444\nZ:Q1byrokYLaNo7KFNXzjJF1J7sNPTY=\nR:operations.go\na:0:0:444\nZ:Q1fTx8WfieysawN38w2DdVD+9vBm0=\nR:usages.go\na:0:0:444\nZ:Q1ombR4N+0lXaQErf788ssNmOFJRM=\nR:version.go\na:0:0:444\nZ:Q1oP5P8qIUwpcCL4y4QIJExT2q1P8=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1zp1p8VpQCQFjMGHLhfs2p/55vpM=\nR:workspaces.go\na:0:0:444\nZ:Q1z3yyn34ETMsmX6/PyGYSOPStiaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-05-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NWWFnS6Nvlv+JqbPfJpiuKh5Mn4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-06-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DpAMLKOYWj7mzt4bR2SSBN5ZDlQ=\nR:client.go\na:0:0:444\nZ:Q1tgwyDEGnFPRvYKW+5P5a6q7sKH4=\nR:enums.go\na:0:0:444\nZ:Q1cXPQdyyA/dAWd2WK1cZCretvfXE=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1PyZLeQWEIRZ0JYCQmtR9jTxDYxw=\nR:models.go\na:0:0:444\nZ:Q1UtZt66D/3FMJn3DW8fjZ41YvmFU=\nR:operations.go\na:0:0:444\nZ:Q15U7X5XJcUf8jkzJkrRU2ODNinR8=\nR:quotas.go\na:0:0:444\nZ:Q1c1rZ13P/kzCZuC+ixj+G2x2oWxE=\nR:usages.go\na:0:0:444\nZ:Q1budlq1xRCvqgQ9+kkfu2kbzs9WM=\nR:version.go\na:0:0:444\nZ:Q1iV97Ab+EuMa8uk0b40F9OlmrsS0=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1zlmEalfN+j04NjMprmnbIB89q08=\nR:workspaces.go\na:0:0:444\nZ:Q1b7Jfnn3102hvCBQl20gLoUbQitw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-06-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1INMvp3B3GJUja1qsmGj1023RDL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-11-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NMypJ3EdqWYRPzlJVTLc1LRXJRc=\nR:client.go\na:0:0:444\nZ:Q1Nby5kPizGcVtNG6XzztTCFc/5Ew=\nR:enums.go\na:0:0:444\nZ:Q1fLkVpbJkqwgoa6kCPUg6nLSQFSg=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1jQ5UNyrsYQi3LTE40RzpGSpvV3o=\nR:models.go\na:0:0:444\nZ:Q13dyTNlJo/leUfl8Mghs3OzcEdH4=\nR:operations.go\na:0:0:444\nZ:Q11AIdf3+G6ce/bFOJ5fPXJ8VWjAE=\nR:quotas.go\na:0:0:444\nZ:Q1hje4ImEIDWWe0mPj0hXxsyiXPSE=\nR:usages.go\na:0:0:444\nZ:Q19j/NUmU20B31PTCHfxY7ag7G9BI=\nR:version.go\na:0:0:444\nZ:Q18yqiXSFcGURmTHkimcr2e2/Vp7I=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1E9NEW7aFb9CRm9Zrb+7MxXLSfQc=\nR:workspacefeatures.go\na:0:0:444\nZ:Q14ge0vrCcQdHYDqptfnbZ6Mja0bI=\nR:workspaces.go\na:0:0:444\nZ:Q1gQspF3WCqMALV6o1Hy9v00T/K4M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2019-11-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UkWC6dujvOugBUJeg/1yBZh/SVQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-01-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RVZlaTzXrhs0rCkMPsKFrB9LM9Y=\nR:client.go\na:0:0:444\nZ:Q1hzbrJggfOrKhdolD6fKkwTdp8QU=\nR:enums.go\na:0:0:444\nZ:Q1VeFqMM4TiHifbiJ1E/oSF3a1ii4=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1Mt+PvI8YImF6Wa4BMxOVP6qTS7I=\nR:models.go\na:0:0:444\nZ:Q1OqnZlEm07siJRcArbZD2diaqUSs=\nR:operations.go\na:0:0:444\nZ:Q1Arlyn+PSl17IUis0TAKHuy2SYIk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q12b0Ts+c99VYrTj12aPEwVnCZSoQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1C/IRFHDVVsL0XPXRmmkR4H/slMc=\nR:quotas.go\na:0:0:444\nZ:Q1YfKH1Q3Fdlx68E52zZpgGPu9JXk=\nR:usages.go\na:0:0:444\nZ:Q1okJ+iMo4+Mwn0uRSzO0XDx1Z4qU=\nR:version.go\na:0:0:444\nZ:Q1Ranepb7i8BuNCe5u+yTEkhOiLWg=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1VTFmmx+8eVKJGI+pWIT3posjrig=\nR:workspacefeatures.go\na:0:0:444\nZ:Q1rxqvOCODhI+p+kUB2MM7xXPabmw=\nR:workspaces.go\na:0:0:444\nZ:Q11TeWi7CgmIExZ3b8FWfzQVEPtlA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-01-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1PRPRQ+r/5X2Slmyfj35XlNqnZYk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-03-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nKdDV+uyVT7BY6wAUxDxBNpTLOY=\nR:client.go\na:0:0:444\nZ:Q1sxWknfLNvTW1e0T5S8PEhMsL0gE=\nR:enums.go\na:0:0:444\nZ:Q1lw0+PrvK/7Ar/kfp826Lf9xaS2I=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q15CXvJZfXg++/KZb8E3AqT+G2+Ec=\nR:models.go\na:0:0:444\nZ:Q1KfPxEAeE2kA/RtZTNZsh7bPfHkM=\nR:notebooks.go\na:0:0:444\nZ:Q1zet1h9EtkzsAeejQe3Jbopxobzs=\nR:operations.go\na:0:0:444\nZ:Q1nwRBkjZZHnAUas1uye/W6xnW9kI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1KD3akF6JG2BYvvVqSFCQyoGzrjw=\nR:privatelinkresources.go\na:0:0:444\nZ:Q11kZIFYRBZKvmoAtfub/J+SHE5tc=\nR:quotas.go\na:0:0:444\nZ:Q1xOWa4r3YXLiZAgh9JKc+v6u/ihk=\nR:usages.go\na:0:0:444\nZ:Q1jKc2GKCWAM3u6qJmwNBde+FXNyU=\nR:version.go\na:0:0:444\nZ:Q1wMOfiDAuzPy7QZRZpAi5NQcOYwQ=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1aQh6Bnqi/pFarbBdw6h+mWV336g=\nR:workspacefeatures.go\na:0:0:444\nZ:Q16KnM80ULhml+Kykti8hay7GQBq0=\nR:workspaces.go\na:0:0:444\nZ:Q1btAPX79R1sqhiGuefYiltqhQwIU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-03-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iNzSRjN1U3FdIC6qSO7Vb8LL2jY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-04-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kGwFh+RmZ3bfvZrWQmZP+ABtMi8=\nR:client.go\na:0:0:444\nZ:Q1EdYSNHN9/r0vlZiMyn+tHe3VBic=\nR:enums.go\na:0:0:444\nZ:Q1GYe8TwGbSGm5BuNN8tp8FveWgGk=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1b5r331PLZJoNZKIFyxiSpAx2j8s=\nR:models.go\na:0:0:444\nZ:Q1S+Y/pmxRAYYZh5wuvhOUibX9MPw=\nR:notebooks.go\na:0:0:444\nZ:Q1lIEM+A4SJMbY0hWcAItH/qIetyw=\nR:operations.go\na:0:0:444\nZ:Q1gYCXvvCW6qT9k6it8RQfGJcFZvk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q17Hkkl8p+cAoYNhsQNts9pPMaWyQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Z6T/rfwI9zTTOYHvu1GfwXXHw1A=\nR:quotas.go\na:0:0:444\nZ:Q1vhjLGZE3GYK97PxDcMekVdMDGEs=\nR:usages.go\na:0:0:444\nZ:Q1CqIUgo/B8s1Cw6tCG/As5n5DJaA=\nR:version.go\na:0:0:444\nZ:Q1pGRsIS334YW3JGHLEVcQ7SpbdRM=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1Sn3jMojv77ZS1+3xgIR2CW0VtI8=\nR:workspacefeatures.go\na:0:0:444\nZ:Q1aJQbrqmhSX3+pV+2Oov6GyoXboo=\nR:workspaces.go\na:0:0:444\nZ:Q1OIeyfxPRc7N/VLYh/xf3NWQpl/k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2020-04-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uANuXKXssnDBPrkndA+ZbH8lX3Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-04-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XJU5CjFB2G6mErrMdG0DmQlrMQA=\nR:client.go\na:0:0:444\nZ:Q1KNMEuhcyGn+6mcE3ttrB04XM8d4=\nR:enums.go\na:0:0:444\nZ:Q1WYC53qtR1MduJYDgRkjjt3pxTXQ=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1vj82TVTAwXWy5CFUZengFAACR7k=\nR:machinelearningservice.go\na:0:0:444\nZ:Q1UJ0mhq12qZHeCdpmEbO+9UYIND0=\nR:models.go\na:0:0:444\nZ:Q1HYhvJw6s8yEzNAmGKA3siPIbls4=\nR:notebooks.go\na:0:0:444\nZ:Q1lDExTYSjllrLgrCil7BA7RZA2j4=\nR:operations.go\na:0:0:444\nZ:Q10ttKtJ/AdBts6jOujItPxwxlUqQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1JstbT+GhT8D7tOssexqMdYk/s+U=\nR:privatelinkresources.go\na:0:0:444\nZ:Q15nXrDmy8knWpZuiAr1WNlzYmP50=\nR:quotas.go\na:0:0:444\nZ:Q1Nvwr2W68d4kRr67G8f9NIaYzwY4=\nR:storageaccount.go\na:0:0:444\nZ:Q1vVXB4gvoqBsdl9pYRG85FWxqmsY=\nR:usages.go\na:0:0:444\nZ:Q1altjk+pwe2lVGruDbzIwdnOMdEQ=\nR:version.go\na:0:0:444\nZ:Q1tvSoNiSir2DT1rVaFN7qSlAxfQc=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1pmh2rYaAy/YNclFxUXRlVofYpvw=\nR:workspace.go\na:0:0:444\nZ:Q19Kqm6/Qg1d5doFMNd9rOznkwFb0=\nR:workspaceconnections.go\na:0:0:444\nZ:Q1uo+fNBDnc0j9tUIYCKq01Zy6QP8=\nR:workspacefeatures.go\na:0:0:444\nZ:Q1fBHTAmGr7bXvBgMRVrj4hbBX4jE=\nR:workspaces.go\na:0:0:444\nZ:Q1KWfGQNF/1RQRvUze1jrzt9DSqx8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-04-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kdjhrEIf+GLTiR6UGx6225C5Kz4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-07-01/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rPs/FYB/3QQu9nDf9mt8d85HjGU=\nR:client.go\na:0:0:444\nZ:Q10VsifwDR4qot9hRc0CZYeHqAq8E=\nR:compute.go\na:0:0:444\nZ:Q1vj2IjJxqSZrDEzQ8f9DoSt+XkIc=\nR:enums.go\na:0:0:444\nZ:Q1zXipmy8jjFw3Zz7lMTX5Wm56RP0=\nR:models.go\na:0:0:444\nZ:Q1Jv2SmWacBuWD3fc0y126k3z0Gyo=\nR:operations.go\na:0:0:444\nZ:Q122LQmQHj+qH8/VuSBPyj8d4jUt8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1fUQ41ax1V2XVpibEy0VGAAEbywc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1wOwXPJhXVx+f9EJMFBHPzPQg9yI=\nR:quotas.go\na:0:0:444\nZ:Q1UxAQlMaSuR4ApM/b2K3549NS5pY=\nR:usages.go\na:0:0:444\nZ:Q1shDH2Hn2Nz9ZT1QaCJjpaRS9kzE=\nR:version.go\na:0:0:444\nZ:Q139Geye9yT4TJVvIJ3F/iuBFr4Js=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q19xjMUe97Gy++4cC/XFt1ruh+3DQ=\nR:workspaceconnections.go\na:0:0:444\nZ:Q1VjRNdVtgy214xetffcRjWiPZXeg=\nR:workspacefeatures.go\na:0:0:444\nZ:Q1m16+BUul/FqMU7KowQ6NCBwDY6g=\nR:workspaces.go\na:0:0:444\nZ:Q12s0iyrWDe9oWlpYgdF7OEdw6COI=\nR:workspaceskus.go\na:0:0:444\nZ:Q18iBYx9zOjDGSJss+oyAOZ4E907o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/machinelearningservices/mgmt/2021-07-01/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VhuMGauuSagAKjLGzCAWGPMqMZQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2020-04-01/maintenance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Zo5PJpQTeDPgWfIS8s/C86mzQjs=\nR:applyupdates.go\na:0:0:444\nZ:Q1NQKtoWMAk7jkfi4bHQnZgW3aTeY=\nR:client.go\na:0:0:444\nZ:Q1vykFYW5tgxUuw0QaRy34SBSTcd0=\nR:configurationassignments.go\na:0:0:444\nZ:Q1L4EGzx7YVzMdEmD3H4zgNTOFl60=\nR:configurations.go\na:0:0:444\nZ:Q1xE6y/2zV9irNpYXgnp4+O2Vsn2o=\nR:enums.go\na:0:0:444\nZ:Q11+ruWQOpY6OKO476iAXv/dIrCH0=\nR:models.go\na:0:0:444\nZ:Q1QrtyI80v0LLAfkahoyCm8yBDbr8=\nR:operations.go\na:0:0:444\nZ:Q18ra/337p73XGcYPgZELtEpM3w2M=\nR:updates.go\na:0:0:444\nZ:Q1bZQh8jB5VkBuCGzj/IRPbzhr5IE=\nR:version.go\na:0:0:444\nZ:Q1rOt8nz88F8H7okz9baowJqPNFF4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2020-04-01/maintenance/maintenanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GS7RArABzSo2bQvwg56/iwyyTWY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2021-05-01/maintenance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1grMCVuGZPBo0bLo2gnVGZLUv64Q=\nR:applyupdateforresourcegroup.go\na:0:0:444\nZ:Q1EY8Ib2gjfgD2Svl2PRT1KXrWVWQ=\nR:applyupdates.go\na:0:0:444\nZ:Q17VjUEhojmaTtU2gL4kguywySfH8=\nR:client.go\na:0:0:444\nZ:Q1FPG2xZLvzAm5mHX3FWXRHbE4BZc=\nR:configurationassignments.go\na:0:0:444\nZ:Q1GsaTLX8QLFbzp8b1iDn4eaU0mGE=\nR:configurations.go\na:0:0:444\nZ:Q1KxiA8ptli48B2l3TTpk6V5F5ceo=\nR:configurationsforresourcegroup.go\na:0:0:444\nZ:Q1LCT7eIs83md6RzTF6wWnriHPKCU=\nR:enums.go\na:0:0:444\nZ:Q1Wj+wYQgFVZNJhFV2NoZyPiXJ90E=\nR:models.go\na:0:0:444\nZ:Q1cVX6sA2p0KTl4rfrW7eAHFj2CbA=\nR:operations.go\na:0:0:444\nZ:Q1ZNDF6D2QGl0fuO672uUcVULU/t0=\nR:publicmaintenanceconfigurations.go\na:0:0:444\nZ:Q1OH9X+JR0RXKVbrKvNFtt4SBI5aI=\nR:updates.go\na:0:0:444\nZ:Q1YHfrOn/NktLzzdx/gEYF0ckuPCc=\nR:version.go\na:0:0:444\nZ:Q17t85L8Vs6HtEyOa/gqGM22AQ2/A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maintenance/mgmt/2021-05-01/maintenance/maintenanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iS/Ms6406TJ344J55PPCk3bGy54=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/managedservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/managedservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/managedservices/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/managedservices/mgmt/2019-06-01/managedservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q135YWRdE5rjpjYYgP9jQAQyS9ZLU=\nR:client.go\na:0:0:444\nZ:Q1C8bHaXQsIJASOKPLCmDnkM8Wk1Y=\nR:enums.go\na:0:0:444\nZ:Q1uFVrB2PRj6Qa1W+6TtKkxMRK5g8=\nR:models.go\na:0:0:444\nZ:Q18+kGPLb5SPPl8aAiNBZyH4toig0=\nR:operations.go\na:0:0:444\nZ:Q1wLU1IZO8fzLXjsqIxhEIuFxETuI=\nR:registrationassignments.go\na:0:0:444\nZ:Q1RPhEYGJtMprf3GH1uOMm7qCfVxE=\nR:registrationdefinitions.go\na:0:0:444\nZ:Q1nMByJ3L+Tm/OO/HZ+aSw3+Tviw8=\nR:version.go\na:0:0:444\nZ:Q1HbLR86W5LqEHQaY/YpvAkFlF5WM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/managedservices/mgmt/2019-06-01/managedservices/managedservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1b7XYmWEr6ZFl8LbI8zdU4EGDB1k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2018-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2018-05-01/maps\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mnprJ668vrCiS5mlY+ujEqae9NA=\nR:accounts.go\na:0:0:444\nZ:Q19vUpw6AW19XUWU44Ckke2RPcWCc=\nR:client.go\na:0:0:444\nZ:Q1T3qQsV0rzebZ44yPJP8Y/wEKfhc=\nR:enums.go\na:0:0:444\nZ:Q17/US5etmkkSVEAp+iDf3f/Pqz0g=\nR:models.go\na:0:0:444\nZ:Q1DloJjq8SN5goH73selY9A2Wp8DQ=\nR:version.go\na:0:0:444\nZ:Q1DRjmL6YQEckWoRd0bAsIq4FXcrA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2018-05-01/maps/mapsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MTeJ3TEiLIhnD8P0Zr3ZvVtHDAQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2021-02-01/maps\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1q1pYZ4tYoKhJISIVfnlsQO6FQ2Q=\nR:accounts.go\na:0:0:444\nZ:Q1VCj/8MH9ilXzZku1wZgWtJhsVwY=\nR:client.go\na:0:0:444\nZ:Q1zmNpUuXreBS8iyzW51ZPevcb2sw=\nR:creators.go\na:0:0:444\nZ:Q1OSHIwPmzznM6ZCrX6I5KTaib4/Y=\nR:enums.go\na:0:0:444\nZ:Q1psHj+RoZD1DeNQyktLXw3yGBoIM=\nR:maps.go\na:0:0:444\nZ:Q1utHdLVMPD6yHAi+zAMrNug2Dx8Y=\nR:models.go\na:0:0:444\nZ:Q1VoiAZfTWf4WgNDiVstTLzrkWMrw=\nR:version.go\na:0:0:444\nZ:Q1N8kohocDxk0L3W+POBet5kXIZA4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/maps/mgmt/2021-02-01/maps/mapsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rdN3t7u8P16tIFBr3GPVBiHt2I4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2018-06-01/mariadb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1D2GEGTOivMA+2oQVI2nf2sEfOTM=\nR:advisors.go\na:0:0:444\nZ:Q1iuazIf5g4hcLkAq9jeYhahgqADg=\nR:checknameavailability.go\na:0:0:444\nZ:Q1FTlXF0FBnsRsV8spEiTrXCB0r2w=\nR:client.go\na:0:0:444\nZ:Q1z4RpV3f+rFoi4DkkSxeY02Sn2fs=\nR:configurations.go\na:0:0:444\nZ:Q1pVGHKLnb1o/xV8uYJGeh6hSHmX8=\nR:databases.go\na:0:0:444\nZ:Q1EyzEOLjLYoqgePqlTimFi5OyoOY=\nR:enums.go\na:0:0:444\nZ:Q1wA1Qagd1a+kEciLhlw6DrKj6OUU=\nR:firewallrules.go\na:0:0:444\nZ:Q1pnAEb/GHMvLUBx9cr1EANGz2eqc=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1dMdzkAVkTTiU2ISQXPe/x8Rj2VU=\nR:locationbasedrecommendedactionsessionsoperationstatus.go\na:0:0:444\nZ:Q1MqZAS6y/ULfagmJbz1c+db0Q8os=\nR:locationbasedrecommendedactionsessionsresult.go\na:0:0:444\nZ:Q13dsZecoMUdoWsCJzGDPFr9E11Uc=\nR:logfiles.go\na:0:0:444\nZ:Q1wtLs1vybRM872Au433U7PDIKL2U=\nR:models.go\na:0:0:444\nZ:Q15qFLKcOHeltGw0Js+Th3iadA94c=\nR:operations.go\na:0:0:444\nZ:Q1RsswoGnwps6My2aFWu35T6LE/jk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1+y96Qwn3JmWv2fs4Hj5v3lZbcvI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1bt5PpyZuT84/6D5gq5YhI44jsZk=\nR:querytexts.go\na:0:0:444\nZ:Q1yR9dehlVIUHQ9PyMr26tXBGEy2o=\nR:recommendedactions.go\na:0:0:444\nZ:Q1/KEP7X2dPcgttuvNcym2Eg64bWQ=\nR:replicas.go\na:0:0:444\nZ:Q1SEzZYFJpkGSDoGwl9i21ajpv+hU=\nR:servers.go\na:0:0:444\nZ:Q1KZwaS7RJVC6888CXb9eldz78ajw=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1SNFPfDsXtd3MXs6ZCCu7twY08yI=\nR:topquerystatistics.go\na:0:0:444\nZ:Q1oxF4R5Hw0eS+qMsBtF1b5UvtLuY=\nR:version.go\na:0:0:444\nZ:Q16DyLiP0FGqdWM/CMGfmfNDg1sXE=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1fM1qZrpzFGM3PPs672vYyAuAFzg=\nR:waitstatistics.go\na:0:0:444\nZ:Q1dIQagSqiGX/2s29fU3/xKnmRw20=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2018-06-01/mariadb/mariadbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dQl+sd4seG/rSjVaMtCD/IM3WbM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2020-01-01/mariadb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11lFetDb2sBVBuWyX9kMzz+yOsQg=\nR:advisors.go\na:0:0:444\nZ:Q1iuazIf5g4hcLkAq9jeYhahgqADg=\nR:checknameavailability.go\na:0:0:444\nZ:Q1FTlXF0FBnsRsV8spEiTrXCB0r2w=\nR:client.go\na:0:0:444\nZ:Q1UtuHS33C8w/vPfskgVpKMZMXVqI=\nR:configurations.go\na:0:0:444\nZ:Q1pVGHKLnb1o/xV8uYJGeh6hSHmX8=\nR:databases.go\na:0:0:444\nZ:Q1EyzEOLjLYoqgePqlTimFi5OyoOY=\nR:enums.go\na:0:0:444\nZ:Q1wA1Qagd1a+kEciLhlw6DrKj6OUU=\nR:firewallrules.go\na:0:0:444\nZ:Q1pnAEb/GHMvLUBx9cr1EANGz2eqc=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1dMdzkAVkTTiU2ISQXPe/x8Rj2VU=\nR:locationbasedrecommendedactionsessionsoperationstatus.go\na:0:0:444\nZ:Q1MqZAS6y/ULfagmJbz1c+db0Q8os=\nR:locationbasedrecommendedactionsessionsresult.go\na:0:0:444\nZ:Q13dsZecoMUdoWsCJzGDPFr9E11Uc=\nR:logfiles.go\na:0:0:444\nZ:Q1wtLs1vybRM872Au433U7PDIKL2U=\nR:models.go\na:0:0:444\nZ:Q1n0e5kvnypoHTO3TtOokpJdsSLLw=\nR:operations.go\na:0:0:444\nZ:Q1RsswoGnwps6My2aFWu35T6LE/jk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1+y96Qwn3JmWv2fs4Hj5v3lZbcvI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1bt5PpyZuT84/6D5gq5YhI44jsZk=\nR:querytexts.go\na:0:0:444\nZ:Q1yR9dehlVIUHQ9PyMr26tXBGEy2o=\nR:recommendedactions.go\na:0:0:444\nZ:Q1/KEP7X2dPcgttuvNcym2Eg64bWQ=\nR:replicas.go\na:0:0:444\nZ:Q1SEzZYFJpkGSDoGwl9i21ajpv+hU=\nR:servers.go\na:0:0:444\nZ:Q18ydbEdMKCtz+C4oAgfYyTptN54E=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1SNFPfDsXtd3MXs6ZCCu7twY08yI=\nR:topquerystatistics.go\na:0:0:444\nZ:Q1oxF4R5Hw0eS+qMsBtF1b5UvtLuY=\nR:version.go\na:0:0:444\nZ:Q111bt+mx2TKxlX1Qu6XDXx4GhWe0=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1fM1qZrpzFGM3PPs672vYyAuAFzg=\nR:waitstatistics.go\na:0:0:444\nZ:Q1dIQagSqiGX/2s29fU3/xKnmRw20=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mariadb/mgmt/2020-01-01/mariadb/mariadbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NqsZJKNknan519s7SAKc27d93cA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/marketplaceordering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/marketplaceordering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/marketplaceordering/mgmt/2015-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/marketplaceordering/mgmt/2015-06-01/marketplaceordering\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zt01vPSm2ZJXqlhWaEEQb7CN+Zk=\nR:client.go\na:0:0:444\nZ:Q1yb5Xq+8HwlNX9h4koDJWZMjJP3U=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1heSL/YvbRjmf3gNiLMOiKlP+LMY=\nR:models.go\na:0:0:444\nZ:Q1nAP9ddHUtB7qd7vTla8lFVAyW+g=\nR:operations.go\na:0:0:444\nZ:Q1S4bK9YJ6s/jry4y+BRo9CF3YS3Q=\nR:version.go\na:0:0:444\nZ:Q1P7f+rUhr27ZTp4LoRDUhHEbdnzQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/marketplaceordering/mgmt/2015-06-01/marketplaceordering/marketplaceorderingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q148uydmSGoBJaoe2LhlMCoesiNR4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2015-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2015-10-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1coV0MgeVw6yZ/RY7iRoQnObWtr8=\nR:client.go\na:0:0:444\nZ:Q1zPfH4j/ZU/Bzdbtgh7/i98xU2As=\nR:enums.go\na:0:0:444\nZ:Q13NnRqUdgQL9DeqQy6kWv9MWu+CU=\nR:models.go\na:0:0:444\nZ:Q1Xgo2aGsa2MHwauQUHIsnGLeS7tY=\nR:operations.go\na:0:0:444\nZ:Q1O6wnNKE7BddFnBnCMe5E8uVchPE=\nR:service.go\na:0:0:444\nZ:Q1nM81xMRJGSHvxMF0OtJ6XQ089C0=\nR:version.go\na:0:0:444\nZ:Q17xCtZSj32zAyEmaYs5/Mz25najg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2015-10-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CrudVRx/rkdZBcYSZXC8uwBHv/c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2018-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2018-07-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xwszqBWRPfWi7qnOsV38qyBEMqY=\nR:accountfilters.go\na:0:0:444\nZ:Q13OBHRtbYXSxdsSxrxxix1TnftZs=\nR:assetfilters.go\na:0:0:444\nZ:Q1QNwaNog83kW+OHSEXaWkwc0cqms=\nR:assets.go\na:0:0:444\nZ:Q1aJOC4tFFpIJYz6oIRMsogrGIXiY=\nR:client.go\na:0:0:444\nZ:Q1UOK3lGl2nZJK66tO6I6MFFbYaXE=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1g1YFNaF2vqZNZlEX2EyI6sxGFQY=\nR:enums.go\na:0:0:444\nZ:Q1YMbwbggRL0+cFA/IlIuaNlwN8hU=\nR:jobs.go\na:0:0:444\nZ:Q1ke/dfWBJBbIU4fEP3xC8npVlqZY=\nR:liveevents.go\na:0:0:444\nZ:Q16OpJXO/KHY1ao0oSFZ0dmcbEcSs=\nR:liveoutputs.go\na:0:0:444\nZ:Q1MuZIFM36Vy2x36CVBKbr6F4jNXM=\nR:locations.go\na:0:0:444\nZ:Q13ihuuQBlnHBDF+l5BPjNrvc4Kcw=\nR:mediaservices.go\na:0:0:444\nZ:Q1wgvqEuD+3lJvzHOvNnYWOZkOTG8=\nR:models.go\na:0:0:444\nZ:Q1X8KQxMkFa5YeVC6wNQ1TZEqWo4I=\nR:operations.go\na:0:0:444\nZ:Q1dlH8fI80a84piGua01oFB8uVvmQ=\nR:streamingendpoints.go\na:0:0:444\nZ:Q10t20caoPGl+3sL8p+tyKIMZx05o=\nR:streaminglocators.go\na:0:0:444\nZ:Q1xmTZuBPqKidfVUy/E2DvFn0KgGc=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1bGVwFnbyST1AXNB3NRDLYaQ8ZPo=\nR:transforms.go\na:0:0:444\nZ:Q1jXsHpH9Th1DRybktwjCaLRVug8I=\nR:version.go\na:0:0:444\nZ:Q1vI9m6fO74/9NHvutifuUZLa9xcs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2018-07-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Yx66HgNDeXrNmErXYyygnX+2n4k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2020-05-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15yKJMx52kJKpfr2qLgLbCYeCB7E=\nR:accountfilters.go\na:0:0:444\nZ:Q1sY6Hx+MQqLMWRExDMcs6uzwldHM=\nR:assetfilters.go\na:0:0:444\nZ:Q1ft9KYhmlrC2J5ZOjC74NBBUWnpg=\nR:assets.go\na:0:0:444\nZ:Q1Y3KsgsqZ50rR/6Sw6VksBXfTuWU=\nR:client.go\na:0:0:444\nZ:Q19SbIZRa9wp92lLXDueW9y7hopfY=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1VYeNVp6khNJXsJoZm8Yfuo3finU=\nR:enums.go\na:0:0:444\nZ:Q1jNTN3vgGNl8qa3s1LHzU7oztbcE=\nR:jobs.go\na:0:0:444\nZ:Q1FvQJ//6OCI9sbpcfl0Xy5pnOAJY=\nR:liveevents.go\na:0:0:444\nZ:Q1TZQMDHZFGcIFwT5qYKUZXLK9FfU=\nR:liveoutputs.go\na:0:0:444\nZ:Q10sb+jmLfL26RKG/16Lpt04iZZsc=\nR:locations.go\na:0:0:444\nZ:Q13mASQsUg7p9TULaHknHsDmRo+pQ=\nR:mediaservices.go\na:0:0:444\nZ:Q1LaRu7kNt4OG7gapkOkHUx3bMQUs=\nR:models.go\na:0:0:444\nZ:Q1O0tbzlP5qtxKaDILLfWRFhCck1A=\nR:operations.go\na:0:0:444\nZ:Q1Qe2wY0na7+o4pCk8rPbdEZH2qe8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1B8sFxBYoSrAp2pU43kDJ2aemwQ0=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1PzMRKsvOailTHearYn3VBzfKO4M=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1oY/0dpsgr5Z7X5SzYiQS3iRVMbM=\nR:streaminglocators.go\na:0:0:444\nZ:Q1gLPG8KKzWnjBeKQYYb1tq+MUOfw=\nR:streamingpolicies.go\na:0:0:444\nZ:Q18N7f0F4ekvzuwMHVEnTTfomYekQ=\nR:transforms.go\na:0:0:444\nZ:Q1XAJyS45j0yY6toMGPw1kyO/QSf8=\nR:version.go\na:0:0:444\nZ:Q1JrqvZzM8nvl50ZvhTs3o3/2X5x4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2020-05-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UUQQVKLhpvacu5FkBlbyZdpMZ/k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-05-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+Wa9sN6WdkWxk4eJMrgiudWzNV4=\nR:accountfilters.go\na:0:0:444\nZ:Q1sY6Hx+MQqLMWRExDMcs6uzwldHM=\nR:assetfilters.go\na:0:0:444\nZ:Q1ft9KYhmlrC2J5ZOjC74NBBUWnpg=\nR:assets.go\na:0:0:444\nZ:Q1Y3KsgsqZ50rR/6Sw6VksBXfTuWU=\nR:client.go\na:0:0:444\nZ:Q1XqFle4ujiepls2W6hnCNbpQqtgk=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1VYeNVp6khNJXsJoZm8Yfuo3finU=\nR:enums.go\na:0:0:444\nZ:Q1mdSyHn63pTgRbncYfoTwhUYCJsM=\nR:jobs.go\na:0:0:444\nZ:Q1FvQJ//6OCI9sbpcfl0Xy5pnOAJY=\nR:liveevents.go\na:0:0:444\nZ:Q1TZQMDHZFGcIFwT5qYKUZXLK9FfU=\nR:liveoutputs.go\na:0:0:444\nZ:Q10sb+jmLfL26RKG/16Lpt04iZZsc=\nR:locations.go\na:0:0:444\nZ:Q1NHdKuY/vCmoYv1Q3dDojp78VplI=\nR:mediaservices.go\na:0:0:444\nZ:Q11zVfUmDgZBgeGEALHinEhH8rkpI=\nR:models.go\na:0:0:444\nZ:Q1L6VSFuRhTWVAFrKECT13v/SJFTs=\nR:operations.go\na:0:0:444\nZ:Q1TvA7z8OKh/NMnZYH0dIJ52sc9M8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1BB7QNReSeqI1iJvM0jzjvt/IKTg=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1D1ElHWvato2f9vjwTxlJpNyWN6w=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1oY/0dpsgr5Z7X5SzYiQS3iRVMbM=\nR:streaminglocators.go\na:0:0:444\nZ:Q1gLPG8KKzWnjBeKQYYb1tq+MUOfw=\nR:streamingpolicies.go\na:0:0:444\nZ:Q18N7f0F4ekvzuwMHVEnTTfomYekQ=\nR:transforms.go\na:0:0:444\nZ:Q1XAJyS45j0yY6toMGPw1kyO/QSf8=\nR:version.go\na:0:0:444\nZ:Q1UoDC9uVPM9MJEGqI72e2y3IuEFU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-05-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1B01c9POUD34gTyiZkMGxCFa++TI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-06-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1tMH4RSy0LczTLfDD/eogQUhIt1E=\nR:accountfilters.go\na:0:0:444\nZ:Q1KeIlX0dIZCArvmSGha2kJUu39U8=\nR:assetfilters.go\na:0:0:444\nZ:Q18Yu1ecPpuTmIANpobp6IrkHMxU0=\nR:assets.go\na:0:0:444\nZ:Q1YaZL7p9HuBKCAlwiLXilyKJpYFQ=\nR:client.go\na:0:0:444\nZ:Q1iRQhaksifI0ASDwdxact4nMrSwM=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q11Yl9EA6B2E0NkxEr9aUHf4PZux8=\nR:enums.go\na:0:0:444\nZ:Q1qfxJcRrCIyt3PVQiC42NxKU/ack=\nR:jobs.go\na:0:0:444\nZ:Q13zdNpaLSj7rS3U0B0F2DdpbtOiY=\nR:liveevents.go\na:0:0:444\nZ:Q1vSZQffV/ApCBqXpLe4cUOHTF2eo=\nR:liveoutputs.go\na:0:0:444\nZ:Q1dRz3DQl22Lkg5oF5CioU17J9jDY=\nR:locations.go\na:0:0:444\nZ:Q1PVEpZyczZOfB9Z5jxj0g9zYhYbk=\nR:mediaservices.go\na:0:0:444\nZ:Q1nDAGoND8aYIaS3/TIoXZxKmBF3M=\nR:models.go\na:0:0:444\nZ:Q1wnZEQB3hiB0p3T5ZifKm1JQTUGI=\nR:operations.go\na:0:0:444\nZ:Q1HX21C9X3W5MB5a1uMoNpbSseCUs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1gK10HVMUVOcWVYKvtFhevaIEZMk=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1i3/Aw4PD5r3yfW7QWya26ERa8nc=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1fOhG6pWnSBxtQ0BLUMesSOGXv74=\nR:streaminglocators.go\na:0:0:444\nZ:Q1evC0gsPh1RM3USsLn3krEMibwso=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1NiS8Rq4qJmZj5U9RVOBr9uDGZEY=\nR:transforms.go\na:0:0:444\nZ:Q1NrS7Cy9prZYzFUv97/Ro7/mEnPQ=\nR:version.go\na:0:0:444\nZ:Q1ukzOiiqSCokzXWoLr4k2IBz4N/8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-06-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BkOgDyDWWKlk6FB4pYSX7kHuyM4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-11-01/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pLQu+yI6hj+/Z6KBewuNEGe0kR8=\nR:accountfilters.go\na:0:0:444\nZ:Q1bSfZPI6ILCrD9fM7bEmZWptoc/U=\nR:assetfilters.go\na:0:0:444\nZ:Q17HPvYwjjuUECN7izGweaiHj2FWE=\nR:assets.go\na:0:0:444\nZ:Q1ENeuCp+RF1vgCDQsFpBUubboIJA=\nR:client.go\na:0:0:444\nZ:Q1XqFle4ujiepls2W6hnCNbpQqtgk=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1enwOo7iMOhRkNKPK3sMkzn9rHuQ=\nR:enums.go\na:0:0:444\nZ:Q13hHeEc4TCk2onXJoL7LBo4JjDZk=\nR:jobs.go\na:0:0:444\nZ:Q1Ty8zLgKW3s/0DwaO/amTxWHqXiI=\nR:liveevents.go\na:0:0:444\nZ:Q1ad6j24XTwbC1FqmCzkODyyDvF/8=\nR:liveoutputs.go\na:0:0:444\nZ:Q1InkeSJ59qc8Q3q/qSHbn/CM+ECk=\nR:locations.go\na:0:0:444\nZ:Q1PVEpZyczZOfB9Z5jxj0g9zYhYbk=\nR:mediaservices.go\na:0:0:444\nZ:Q1nDAGoND8aYIaS3/TIoXZxKmBF3M=\nR:models.go\na:0:0:444\nZ:Q1uxtqHMGE8qylmZJwnimp/Nu7KyM=\nR:operationresults.go\na:0:0:444\nZ:Q19e+w/RPJRr/FcIwQUP9bnWaK6iU=\nR:operations.go\na:0:0:444\nZ:Q1HX21C9X3W5MB5a1uMoNpbSseCUs=\nR:operationstatuses.go\na:0:0:444\nZ:Q1xAxQ9Crvw+MJ/dA6/kqg6yLd4rs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1gK10HVMUVOcWVYKvtFhevaIEZMk=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1i3/Aw4PD5r3yfW7QWya26ERa8nc=\nR:streamingendpoints.go\na:0:0:444\nZ:Q10hQ4oTsoAfln+kQZRPpcXzgUylY=\nR:streaminglocators.go\na:0:0:444\nZ:Q1XzyD4SFQ4syTNV9IURhgchXfkVo=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1BGcjs3G128Rdemm/uNFCAuZoERY=\nR:tracks.go\na:0:0:444\nZ:Q1/8NjRkAJzebk+iWeasF75LrcXwU=\nR:transforms.go\na:0:0:444\nZ:Q19rz9vUS+8YJ7QWzS8Ej6Q1MU10A=\nR:version.go\na:0:0:444\nZ:Q1V8wlANR4qEV9nkmkQLSVmg84Y2s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mediaservices/mgmt/2021-11-01/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1c23lzaZbk2aHOqEGyv1HsjLNkbQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2018-02-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2018-02-02/migrate\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1q5+qYTPziKVOSuPWA/oLfP/vYG4=\nR:assessedmachines.go\na:0:0:444\nZ:Q15Y9Mzu9rAXXeF/zO3J5GhiEh1X4=\nR:assessmentoptions.go\na:0:0:444\nZ:Q1L34l7xwEdZ8iBT+/WH+svEveAok=\nR:assessments.go\na:0:0:444\nZ:Q1drbZ6jTau3oKJUdWxxniokEizj8=\nR:client.go\na:0:0:444\nZ:Q1bsOLX7C5zHSV7a+oO4UUgfWd0nU=\nR:enums.go\na:0:0:444\nZ:Q1Zs4OHPH1lWFIp5VNFRw9+MEBqSc=\nR:groups.go\na:0:0:444\nZ:Q1W7BCHaZ66q71NNt/nvq2Ur5c7i0=\nR:location.go\na:0:0:444\nZ:Q1hldHsxQ1xjfwDeNBXA66g5LiJX0=\nR:machines.go\na:0:0:444\nZ:Q1SRDSkKDkKSgHX01Ore6F1yGTsfg=\nR:models.go\na:0:0:444\nZ:Q1jHMCdX0Om/mSTN99qM+NQi2o+Xo=\nR:operations.go\na:0:0:444\nZ:Q113NI1d8BDdwzP6cqZ+sRnts7in4=\nR:projects.go\na:0:0:444\nZ:Q1pIOu1v2CDth+9SRmEMrjtuA1X+I=\nR:version.go\na:0:0:444\nZ:Q1jm+NfkVS80ekUCRlq+de4qQA9Sk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2018-02-02/migrate/migrateapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1p9Wtyz4M3vqLsW0dCjnw5uBB9l8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2020-01-01/migrate\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1g5EgI/gPMtMJ0cci42Xzrj7/G/E=\nR:client.go\na:0:0:444\nZ:Q1dfIyKV2yxYUyjAd0o2q88VowIoY=\nR:enums.go\na:0:0:444\nZ:Q1kDD5uw9BdSVIM7UW2ZrmSQIzZPs=\nR:hypervcluster.go\na:0:0:444\nZ:Q1h27BgMlZu8X2QrM+hE1x4hMIkXA=\nR:hypervhost.go\na:0:0:444\nZ:Q19Q3k6peXTHcaft2gfJ47gFMMRbU=\nR:hypervjobs.go\na:0:0:444\nZ:Q1EmE2+ybbtLVxzrkGt/nRhcDreho=\nR:hypervmachines.go\na:0:0:444\nZ:Q1MIEZvjteKQPe3HkVuHmmV5xFdoA=\nR:hypervoperationsstatus.go\na:0:0:444\nZ:Q1ELgTdPzCHJOAYDbhTF991rALJao=\nR:hypervrunasaccounts.go\na:0:0:444\nZ:Q1dLwzA2Fd6/F0XsFTc0A9OLPKAmo=\nR:hypervsites.go\na:0:0:444\nZ:Q1/ZbHVdDswMygvxsjVXjeV+avCe8=\nR:jobs.go\na:0:0:444\nZ:Q1PNbZuodIZnBbS7HhGnsFDTyZrJs=\nR:machines.go\na:0:0:444\nZ:Q17mpnchTb27kd5oG+afqjaafu2yg=\nR:models.go\na:0:0:444\nZ:Q1Of0TzCWtVPGs5YmADyNLWMm3E0I=\nR:operations.go\na:0:0:444\nZ:Q1L+kRNi3TKSubBnKDqTvbgWxD2Tk=\nR:runasaccounts.go\na:0:0:444\nZ:Q1NhJ/1qKYIVpLJSGE4trmUackMS8=\nR:sites.go\na:0:0:444\nZ:Q1m5hVNgMNKc3LcVqL5D+GiS8OybM=\nR:vcenter.go\na:0:0:444\nZ:Q1HWYtoTlZvuRe6JylNmFXqy5rYHA=\nR:version.go\na:0:0:444\nZ:Q1ydKRFxHtqPUFBhytS5kagOsVkE0=\nR:vmwareoperationsstatus.go\na:0:0:444\nZ:Q1IGiyiF4N2NlCGU107Dj0YLO+BYE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/migrate/mgmt/2020-01-01/migrate/migrateapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q161BTAKnTfyV3HPO/5l1rpkGMFkU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mixedreality\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mixedreality/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mixedreality/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mixedreality/mgmt/2021-01-01/mixedreality\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17kJqZmsqqQtTaSSvKVsziE800xk=\nR:client.go\na:0:0:444\nZ:Q1HrbitVUqQHwB/ttNzpLAv4+Ssvo=\nR:enums.go\na:0:0:444\nZ:Q1/SV47vwnIIzLMfK6P/1IPh5/u1w=\nR:models.go\na:0:0:444\nZ:Q1hqOYIzS6RvZWweAkMajfyC9MXd0=\nR:operations.go\na:0:0:444\nZ:Q1dO0190Q2pTyd7f57InDt9UZxyRM=\nR:remoterenderingaccounts.go\na:0:0:444\nZ:Q1KC+IDX0J/sSGNVhV5XIhURdjQg8=\nR:spatialanchorsaccounts.go\na:0:0:444\nZ:Q12x3pCdlG/0qDQnpCTDFxF/R7UBM=\nR:version.go\na:0:0:444\nZ:Q1HHcTo3hRtZkfh+2oqv+D7aEJvYI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mixedreality/mgmt/2021-01-01/mixedreality/mixedrealityapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fzXNsYOOL4irz139JdJAAbNdZMs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2020-10-01/activitylogs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1T3SP2m3NjByNDBBBelhXxAeRErw=\nR:activitylogs.go\na:0:0:444\nZ:Q1bUm/Mfw+NGtzvClYrv04eM1SCMI=\nR:alerts.go\na:0:0:444\nZ:Q1WkcPP6DURoNBAoKhkWsLr3LTMd0=\nR:client.go\na:0:0:444\nZ:Q1yPZBfCPTSLup5sxBTahqPIx0oxU=\nR:enums.go\na:0:0:444\nZ:Q10KBYegKYAsyObQpana2yUMuSfIA=\nR:models.go\na:0:0:444\nZ:Q1MOnwyYbOG5+C3gh1i7WRUwDaKI0=\nR:tenantactivitylogs.go\na:0:0:444\nZ:Q1gw7rU8+xrRzjlkgDbiSBATe0J44=\nR:version.go\na:0:0:444\nZ:Q1/61WBaAqz87UicQvHuVeBoJzb5Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2020-10-01/activitylogs/activitylogsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1d2b0Vz6MJ9lLo4gHRthW6vUwMT0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2020-10-01/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1g5gNfVzMvz5/mRtKsUJlEWJWPWs=\nR:activitylogalerts.go\na:0:0:444\nZ:Q1dystHhctoYopKUlOwXPTG66oxOo=\nR:client.go\na:0:0:444\nZ:Q17/5pSIBO4SCqquVZY8TeJKpjK5o=\nR:models.go\na:0:0:444\nZ:Q1UEH55BqixegMwPztzFOrA4HRU/g=\nR:version.go\na:0:0:444\nZ:Q1h+1pQiy2kTj8uCne7FT7UzwyO3w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2020-10-01/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wek2PJ+nt45EHVXlgxgQjWMvPdc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2021-08-01/scheduledqueryrules\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q191qugABvj+f7+Bobhu15OLjcdMc=\nR:client.go\na:0:0:444\nZ:Q10KvNSgzPw18cgObgDKV60UoakSc=\nR:enums.go\na:0:0:444\nZ:Q1e/gfuHKZRNITYUwQcyTMCRZNh2E=\nR:models.go\na:0:0:444\nZ:Q17b5QHpcvPhlCv1DkY1YWh4XCb1s=\nR:scheduledqueryrules.go\na:0:0:444\nZ:Q1KT2k9K1b9ZQcZlHdMCe3B7ys1lQ=\nR:version.go\na:0:0:444\nZ:Q1FKrHqO0Lr9TXXU5WaUlO6UuzAvY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/monitor/mgmt/2021-08-01/scheduledqueryrules/scheduledqueryrulesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VRBDNv2XdNq5IZK/MafnpDioOMQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/msi\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/msi/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/msi/mgmt/2018-11-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/msi/mgmt/2018-11-30/msi\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OG/o7qi6VCn4OVFDnj/juA2zK74=\nR:client.go\na:0:0:444\nZ:Q1T4W2thPOwG5vDc5UOfxoS9Q29ZQ=\nR:models.go\na:0:0:444\nZ:Q1da4ShgHgTYLy2HpMBbu2ipSc2wk=\nR:operations.go\na:0:0:444\nZ:Q1w9DNv9A7rWJmLQxWKJGzYFAZSj8=\nR:systemassignedidentities.go\na:0:0:444\nZ:Q1deUZ6rGKHZVtIMyG59GF3D9jjLE=\nR:userassignedidentities.go\na:0:0:444\nZ:Q15XPNX/+rdUx8kxik6pUht6sHwFg=\nR:version.go\na:0:0:444\nZ:Q1rQ/eG1FpSG6GvypKg4gKDMZPTSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/msi/mgmt/2018-11-30/msi/msiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13bWJQ7jaIzWK1yBajE/ar3aUFnE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2017-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2017-12-01/mysql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1viERZuPyLSTxISOTWv6TE+m9Z2Y=\nR:checknameavailability.go\na:0:0:444\nZ:Q1BW1uWr0ZFYcqO7uQlV7t59k89CQ=\nR:client.go\na:0:0:444\nZ:Q1ESivRjW34TLnZ6axiywqlHtNmz4=\nR:configurations.go\na:0:0:444\nZ:Q1Futix54xnuxzBWWwavglON16lZk=\nR:databases.go\na:0:0:444\nZ:Q1gPoMVESKX91bvFc33xpLpZZ+zOY=\nR:enums.go\na:0:0:444\nZ:Q1ObzKZ4U6EeUECkInTePsgog9oVU=\nR:firewallrules.go\na:0:0:444\nZ:Q1ZrUL1aEV4JiGkqOcW1U+tB135xk=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1biOrRwibGi2joyGtQaHIns14530=\nR:logfiles.go\na:0:0:444\nZ:Q1PIEx5LVyxgUZ5fHe4WPTKFB0EwA=\nR:models.go\na:0:0:444\nZ:Q1i4+cIlZer7GeytRkM7tkylGx8Ck=\nR:operations.go\na:0:0:444\nZ:Q1Te0gleNkv15lwH3Aqp9EuQcKHnI=\nR:replicas.go\na:0:0:444\nZ:Q19ESWK6Y9kn8iXqUJVEtrhd9EAQw=\nR:serveradministrators.go\na:0:0:444\nZ:Q1jkRk+yokmlfFZGPbnAKhnYmNyAo=\nR:servers.go\na:0:0:444\nZ:Q1xkDgOLDvbOVH2kCUuNXhqqOjWLk=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1ODDgQ9HdPxD/VFNjheKWnERUD9o=\nR:version.go\na:0:0:444\nZ:Q1sb1II3yrbDxdNsM7cMGo4iiqLyE=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1d33q/kb4My6ZTdixibNIlD7yTvg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2017-12-01/mysql/mysqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yTdTBQWOHjjfBemvD4j8wjaXt60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2020-01-01/mysql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TTyI7VBq6VWl311/RgCYbMI7PXA=\nR:advisors.go\na:0:0:444\nZ:Q1PlzJoW77EoepU6mxdDFABGTrJck=\nR:checknameavailability.go\na:0:0:444\nZ:Q1h8g3hoocr0+yt7C8TBz/NOaBqx4=\nR:client.go\na:0:0:444\nZ:Q1WBXZTCuQL9XL/sBlvCSlLeMEsa8=\nR:configurations.go\na:0:0:444\nZ:Q1iWWxOT51OaeZlzSp8OfRvUtCsVE=\nR:databases.go\na:0:0:444\nZ:Q1vwUHxtarYSswT8+jkNcyMb/XRcg=\nR:enums.go\na:0:0:444\nZ:Q19W0ubt+APSP9Y/Qu3dp07kpKBC8=\nR:firewallrules.go\na:0:0:444\nZ:Q1JNXRhllpk4kcAe4uAYQ/CpbUzfY=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1xpWABfv8E0nPuNLwHDwfu54TEsM=\nR:locationbasedrecommendedactionsessionsoperationstatus.go\na:0:0:444\nZ:Q10WRIY6r3qmts86WF0snruR3FRB8=\nR:locationbasedrecommendedactionsessionsresult.go\na:0:0:444\nZ:Q1rzZi3d/is9/5424xuN/0NLc+PK0=\nR:logfiles.go\na:0:0:444\nZ:Q1jvU6+35FV7RujyNZmmIO4fWDSGU=\nR:models.go\na:0:0:444\nZ:Q1m540OPy52AETlWNyuxWz7EumJsI=\nR:operations.go\na:0:0:444\nZ:Q1eoa+tGp145gF3Qyi8wvvn5mHlRo=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1jXPe4Min41RiBNglAz0hcLUckL4=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1w7pZuqX9r3qTYZ8zmyA2aeGPVcw=\nR:querytexts.go\na:0:0:444\nZ:Q1R3j4frJ/Cn/IrpDXlIRzkRUwXQ0=\nR:recommendedactions.go\na:0:0:444\nZ:Q1sDSgTsa+CGydy8PBC9dWYsYhy9E=\nR:recoverableservers.go\na:0:0:444\nZ:Q1XFbsKicmRnnHZwVYfBijS0Cjahk=\nR:replicas.go\na:0:0:444\nZ:Q11ep7lLrIWLlYpWNdMojHDh+WQFo=\nR:serveradministrators.go\na:0:0:444\nZ:Q1FXvWLzJycS/k85mpqi9Yta2Imfk=\nR:serverbasedperformancetier.go\na:0:0:444\nZ:Q1PcWz4urQENOsgF0l+K1IDZX8U3U=\nR:serverkeys.go\na:0:0:444\nZ:Q1WKx0KJT8mRpGZkPvy5kMGQgn0DQ=\nR:serverparameters.go\na:0:0:444\nZ:Q1129EIm9kjvDglCuXyBh/I6SOfNw=\nR:servers.go\na:0:0:444\nZ:Q1WUOk0Mj1k6fcVF9BHgy84aVQjjo=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1RvWmCve/rsMxkxZC1X//0Z6fEHs=\nR:topquerystatistics.go\na:0:0:444\nZ:Q1pSorkR1I8KCHuswk0q0xym4SG/s=\nR:version.go\na:0:0:444\nZ:Q1HdNjaeRnfOQN0SZKoZ89lZG33+I=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q12XfnpKRtkf4nj/DTkG6nEqMbe/0=\nR:waitstatistics.go\na:0:0:444\nZ:Q1FyoGjNZS4XoW8WQuljB6XaZdSDk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2020-01-01/mysql/mysqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WK1PTMomwHyH21LW3U3wXxifHPk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2021-05-01/mysqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16tI5U0mLzJsBu4XWamTRotD3F0o=\nR:backups.go\na:0:0:444\nZ:Q1/uzI3nLn9DMc/CX1yS0GkgT1OlI=\nR:checknameavailability.go\na:0:0:444\nZ:Q19sxAceSHGvVfaCY2x9JrWjjFHq0=\nR:checkvirtualnetworksubnetusage.go\na:0:0:444\nZ:Q1J2VJuaG9UacWTDkKWedEV/XbWI8=\nR:client.go\na:0:0:444\nZ:Q1DM3IGxtnSlHWzj1K3VUf+/UIfzM=\nR:configurations.go\na:0:0:444\nZ:Q1napEje9Aw+/i4WEPOlNyL5P8TSo=\nR:databases.go\na:0:0:444\nZ:Q1GW1mMRmBLQE8m9xTbPAurQ3CbU4=\nR:enums.go\na:0:0:444\nZ:Q1qcF296FgTUfbW+T79Ty6PCf+Wek=\nR:firewallrules.go\na:0:0:444\nZ:Q1cWq+2kI/684CR9jzIJOumFb6qRI=\nR:getprivatednszonesuffix.go\na:0:0:444\nZ:Q13BrBVhaWO4aWG61ILPQNWr+/+nI=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q117frlxhiXJWiY/HLCdDsW26hxUQ=\nR:models.go\na:0:0:444\nZ:Q1IUJ0hRqc0l/DWoHV4sHNkh8Tes0=\nR:operations.go\na:0:0:444\nZ:Q1rsDVJiDtXq2RJETaahZ0GQoV2U4=\nR:replicas.go\na:0:0:444\nZ:Q13XpIBBjVccx4uDPkJTJ/vpurte8=\nR:servers.go\na:0:0:444\nZ:Q17niMXWm2th+ehJWvU6c5WO/rBy8=\nR:version.go\na:0:0:444\nZ:Q1acGewh2UjGHaUqCqDv52oSuIdOM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/mysql/mgmt/2021-05-01/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ECiyaULW58NIfrdNxZ/0zMMMLJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-05-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SonZ518yZtSUWBhdL8gruXie89A=\nR:accounts.go\na:0:0:444\nZ:Q11oKlO5w4ispBYjbISYRbB8fJ1O0=\nR:client.go\na:0:0:444\nZ:Q19o3ODxNqghA81imL0tP3qJj/VMI=\nR:enums.go\na:0:0:444\nZ:Q1put2ot3StTulxxRXh7o5GwQNskA=\nR:models.go\na:0:0:444\nZ:Q1fRwxlfIdXGOC7/gV3x8Nok7atL0=\nR:mounttargets.go\na:0:0:444\nZ:Q1/2LTII0/R7EWCOfbSg1ONMcKtoo=\nR:operations.go\na:0:0:444\nZ:Q11qoA1MOhaYcKeGIk3QbSWz7CJjA=\nR:pools.go\na:0:0:444\nZ:Q1Kbb+AlYqyP5fmRKjJT5PRtiErMs=\nR:snapshots.go\na:0:0:444\nZ:Q1fBaHUUDWxgAQtmYIaD269nm/Eeg=\nR:version.go\na:0:0:444\nZ:Q1T/49CUqCvHP6jx6m9wmxsh9W0eU=\nR:volumes.go\na:0:0:444\nZ:Q1uDMG+5e5Bwba5x4W2FicKR5qT5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-05-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1heCA5jwRq+66D9UCCAmEX5O0DHw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-06-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yQnq+BIh+fHR+nLFpr22ieZvX6w=\nR:accounts.go\na:0:0:444\nZ:Q1G0JBzH96H4jFustmpE4610iYtdE=\nR:client.go\na:0:0:444\nZ:Q1oPiscQqICqGDk2gQet937luMh4M=\nR:enums.go\na:0:0:444\nZ:Q1put2ot3StTulxxRXh7o5GwQNskA=\nR:models.go\na:0:0:444\nZ:Q1Epmk7ELi0ianjk2OF0Ppq/as4Ok=\nR:mounttargets.go\na:0:0:444\nZ:Q1H0E7iCz0Bd0chk68hdEYXW+YY3o=\nR:operations.go\na:0:0:444\nZ:Q1ij5KGW36oQAJX9pYYefZbezgohg=\nR:pools.go\na:0:0:444\nZ:Q1XgCdCK6qq+oQZgAxnnKfkDH0Mxs=\nR:snapshots.go\na:0:0:444\nZ:Q15cCx9pm78HKp2KoUB82KV0r2RXw=\nR:version.go\na:0:0:444\nZ:Q180p9yKhw6h+q7RHCf09v9cJRkVo=\nR:volumes.go\na:0:0:444\nZ:Q1MgE41WdJiOKDaD53UIqX9mVZ9PM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-06-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Lzn+evZfj53OLrpEhYy+QBSNrRw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-07-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11WD+kNoBfuun5GYAhyrs3gASgtI=\nR:accounts.go\na:0:0:444\nZ:Q1xEG4oVfQHgLAo7dcR9XpADEv4EU=\nR:client.go\na:0:0:444\nZ:Q1rKsDjDHPTD+VPFEivLd78zI/UxM=\nR:enums.go\na:0:0:444\nZ:Q1put2ot3StTulxxRXh7o5GwQNskA=\nR:models.go\na:0:0:444\nZ:Q17bi4pv0im13ga1dokDANvwqjmCE=\nR:mounttargets.go\na:0:0:444\nZ:Q1r1/+kFAYj7vd8LIsqwX68gGKAD8=\nR:operations.go\na:0:0:444\nZ:Q1eav7JGr3NhEMsE8zcRyIE1VSYBw=\nR:pools.go\na:0:0:444\nZ:Q1nqL1rIEHqhkaDV2Q9mDR98789UA=\nR:snapshots.go\na:0:0:444\nZ:Q1QiDONQWCs90c0b75PkYE24XyS84=\nR:version.go\na:0:0:444\nZ:Q1IQublp7REu1Sd9FV9rDxlHMHZ2A=\nR:volumes.go\na:0:0:444\nZ:Q1jikqQCmlCHUgv8absOS8g/nBdm8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-07-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wAMZjoTxMjOJ4bSFNqhNZox0P1s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-08-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q195g7eaSLlK0rIatLXNOsgzMZ0Uc=\nR:accounts.go\na:0:0:444\nZ:Q1wHRDM0b4WgJEQ6RnzciY8qrPK6I=\nR:client.go\na:0:0:444\nZ:Q1ySbhn3TeM07J7v0K/Wpgq3f/I6U=\nR:enums.go\na:0:0:444\nZ:Q1put2ot3StTulxxRXh7o5GwQNskA=\nR:models.go\na:0:0:444\nZ:Q1BvqQ66wSHkDhNDEsqhAmA5eYPcw=\nR:mounttargets.go\na:0:0:444\nZ:Q1suqNI3W7dV7NWpGiAJDDVDmWfoA=\nR:operations.go\na:0:0:444\nZ:Q1DluuQSgXn5UEtmx1Tkj1JTgssmw=\nR:pools.go\na:0:0:444\nZ:Q1bnjF+ELyGDo2/ElpiHyppwC9apQ=\nR:resource.go\na:0:0:444\nZ:Q1BGGNyVDb/gqQRQY/RfvozwQc/f4=\nR:snapshots.go\na:0:0:444\nZ:Q1bNNoIlUqWLIGvcNc71a/F3WTIRI=\nR:version.go\na:0:0:444\nZ:Q1yX1Wf851AqMcbXNHit43tcK6Lcc=\nR:volumes.go\na:0:0:444\nZ:Q1qQ1kopZbSPrD4rHK36Wj6joBXkk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-08-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BeSeWdf9Xphd0TBBp2QdZDsv3d8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-10-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17j7GRamDzlxe0Su85llIGBhQhfw=\nR:accounts.go\na:0:0:444\nZ:Q1KLzbkcXOxQlQzKwoREIxY8SRKZE=\nR:client.go\na:0:0:444\nZ:Q1eRRi+nn0qIDxITTLsBeK/VzK2CQ=\nR:enums.go\na:0:0:444\nZ:Q1FmRxUaCFOwOfzk+w33Uc36smyw8=\nR:models.go\na:0:0:444\nZ:Q1yn3n46xqEpR1XQ3cDE/tkAf1zXI=\nR:mounttargets.go\na:0:0:444\nZ:Q1vWvA0y8zrKUqp61zLxwkvEu2Vk0=\nR:operations.go\na:0:0:444\nZ:Q12L60m7quyeOmNgyJV4UrQujDey4=\nR:pools.go\na:0:0:444\nZ:Q1YDsPveUpQHNQbyM2ZMfbU+Madxg=\nR:resource.go\na:0:0:444\nZ:Q1+jS20NSy/0X40n6gfr5WcvuGQFA=\nR:snapshots.go\na:0:0:444\nZ:Q1lIZe6tvkjWaxdTTu91qOoKW+34E=\nR:version.go\na:0:0:444\nZ:Q1gAQODYAP/q4Zcz0dfKfgCh/RnCs=\nR:volumes.go\na:0:0:444\nZ:Q1CcFq0ujzx5X6nQvFHYwGjPTWrwc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-10-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QUnUlKmT9cNSgf9frec9uEoorgs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-11-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1sYivpPdxzYANUV5R7tsqZmqJdBI=\nR:accounts.go\na:0:0:444\nZ:Q14rhSWRMB9WboA5ldUAEmMOKScP8=\nR:client.go\na:0:0:444\nZ:Q1JARL/bhLvemEhlAaJ8xnTVPQbRw=\nR:enums.go\na:0:0:444\nZ:Q1FmRxUaCFOwOfzk+w33Uc36smyw8=\nR:models.go\na:0:0:444\nZ:Q1Z+i4U4Xk7Fi2j6JHy/FLhVOvxrA=\nR:operations.go\na:0:0:444\nZ:Q1SsP6kiIwgnVfyAXp7Cl8s2/xcAY=\nR:pools.go\na:0:0:444\nZ:Q1Hb3sBr6/L3OXzsCx39zmQs6Fq1w=\nR:resource.go\na:0:0:444\nZ:Q1kJYfYjYVD6hDqmLI63Tq7/MfePQ=\nR:snapshots.go\na:0:0:444\nZ:Q1Q/oA99tnBgJA6bv/+34nQ4SUc50=\nR:version.go\na:0:0:444\nZ:Q1c5jRQjtc/VYuI0VltQ3q7Valnig=\nR:volumes.go\na:0:0:444\nZ:Q1/VRZh9hxoJXdQyfaamSl9m3tUDk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2019-11-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10Xf2BusBf1FYoADYAmfgkSxP1Gk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-02-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1p85OrVXKhtnXP9V33sV0U2pXMgk=\nR:accounts.go\na:0:0:444\nZ:Q1KGxzl0JqzIVYrQjKkVdlVJ8fMmY=\nR:client.go\na:0:0:444\nZ:Q1D5qH3bQo59KMq7NA5W79gYyoeMg=\nR:enums.go\na:0:0:444\nZ:Q1bQcZBHA1Oa9z1IFh3xhaetulNWU=\nR:models.go\na:0:0:444\nZ:Q13XjyqqlxrvAIy61eI7sHVl7I+Rs=\nR:operations.go\na:0:0:444\nZ:Q1jMDWys314r34liDO2/i5iW476O0=\nR:pools.go\na:0:0:444\nZ:Q1qFB8t6u0ACxtilaI8Q1xvHRz9ho=\nR:resource.go\na:0:0:444\nZ:Q17+kUU8mIrDqNQvmDuTdmJ7DU65k=\nR:snapshots.go\na:0:0:444\nZ:Q1ZH5jy3h2rwtza2ytDqPa5fDZyTM=\nR:version.go\na:0:0:444\nZ:Q1i9pQokiTNZw0Ij7v6uS0UYKrQPg=\nR:volumes.go\na:0:0:444\nZ:Q17M+BcqlQaZQFgzpTpO8SvGqB7eQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-02-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1c/6Bv0zNLHPxhoIFtyDDB7Mn30A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-03-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BG/Xo+vIMohr+rPcr+CGVZdh6TU=\nR:accounts.go\na:0:0:444\nZ:Q1Jc1tOKYmrTF82UD0PoGnCkqv5g8=\nR:client.go\na:0:0:444\nZ:Q159rrLNsxzgVpbsLJukKo/ibHgLs=\nR:enums.go\na:0:0:444\nZ:Q1L/FH7qkWv2RPwemSuxUqurA8H8w=\nR:models.go\na:0:0:444\nZ:Q1Ld3poodTQWwBk94JUmOgN/e9miM=\nR:operations.go\na:0:0:444\nZ:Q1WTIy/b0jwAAsZGuCGwvw1D7IBdg=\nR:pools.go\na:0:0:444\nZ:Q1Ygk+N4RHQQFUqYnDddJQh5ASlPA=\nR:resource.go\na:0:0:444\nZ:Q127PFyeS7rvkA8ic+RoluzdOtois=\nR:snapshots.go\na:0:0:444\nZ:Q1ZHffqgOa3t28Qv6nc9deEDIZyDs=\nR:version.go\na:0:0:444\nZ:Q1hEPQxnlrV9NloTbYhKCtIrUzY5Q=\nR:volumes.go\na:0:0:444\nZ:Q1mbSOkeA4b3uzylas14Hk3Dcqfos=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-03-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GHe5RbA4hLfriW7hHEKHBkEMDCc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-05-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MeA5o5NgApwUI4b/4NUlxeMGOIY=\nR:accountbackups.go\na:0:0:444\nZ:Q1caOH0DKC8ITQ5/M7D7+rz5H7p2o=\nR:accounts.go\na:0:0:444\nZ:Q1LgggTi2lDfPCf97SmJungaJn/+U=\nR:backuppolicies.go\na:0:0:444\nZ:Q1Uj+hE25aXXFFP8I1rGk421B65+c=\nR:backups.go\na:0:0:444\nZ:Q1qWBlMGlaNeQVR/OtLM0YQrzitEE=\nR:client.go\na:0:0:444\nZ:Q1OyiPfmPNF9kqY1TrBcenMv5/YAY=\nR:enums.go\na:0:0:444\nZ:Q1kKnduOYapHgjdx3ZTFKWYpviNtM=\nR:models.go\na:0:0:444\nZ:Q1zCEqKzomR+4qkNuUGimRXSqoL9U=\nR:operations.go\na:0:0:444\nZ:Q1LRCvBMsK1EJjmBQxb3pzu85V0W8=\nR:pools.go\na:0:0:444\nZ:Q1c7nlmZFJFa7JDoy5CJ2Qu/4bz7w=\nR:resource.go\na:0:0:444\nZ:Q1/KIO8fogBIDjEMLRvSskI4jU0tw=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1pvQKvWtBQL4IO6BJTsjRoYEgd+A=\nR:snapshots.go\na:0:0:444\nZ:Q1PDqM/r9sTsdAKTrfiruzkMGRboo=\nR:vaults.go\na:0:0:444\nZ:Q1KuCjJVaH4Ao5g1rbeiTJqHYU6Z4=\nR:version.go\na:0:0:444\nZ:Q1B+3rx9w9n5aEI2Hz2YLSdIvtG1c=\nR:volumes.go\na:0:0:444\nZ:Q1aBhW3t+3wSS4ovIJlzkBq4e/he4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-05-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mvfiYX3BMgxMRSs35naw455oxdM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-06-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XN6qkYemenkUnVKSUFIpLSYSEOE=\nR:accountbackups.go\na:0:0:444\nZ:Q1GTYBXUqlpAdw6Uy/8E2Fm4Gb5ss=\nR:accounts.go\na:0:0:444\nZ:Q1B4jOWMstnAdLj23d1/ZvJLobzuQ=\nR:backuppolicies.go\na:0:0:444\nZ:Q13H7Q7aYgBM0jR7coVGRIETGX6jU=\nR:backups.go\na:0:0:444\nZ:Q1Md9L7Y0ROlugLqFSAe6c6Bg8euw=\nR:client.go\na:0:0:444\nZ:Q1xKaHgN3YDyhHv2/Xm0eLMMzIdPI=\nR:enums.go\na:0:0:444\nZ:Q1AeB+00rvNF2Asv90Eg/6PtLRUlo=\nR:models.go\na:0:0:444\nZ:Q1K/yNyPLFzYDujqsONtYHHIuAEaI=\nR:operations.go\na:0:0:444\nZ:Q1ZS3EeD5URprZh44PPLYJE/47hoc=\nR:pools.go\na:0:0:444\nZ:Q1YsUIxw4SEHsEH7T/TAsxvN5mZIQ=\nR:resource.go\na:0:0:444\nZ:Q1AHlHz0EAO7vX4HCCdrauSNdGfgA=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q10xpB0d4JN6H/KrJ6fKnOMFvIfc8=\nR:snapshots.go\na:0:0:444\nZ:Q1JXrEjnZRTqCJ4aFnOX0OrSzUksg=\nR:vaults.go\na:0:0:444\nZ:Q1rrcEf+B4W2VUHYUhzgoi/gJ/ccQ=\nR:version.go\na:0:0:444\nZ:Q15iczCtbqaUR0sLZK3jI6m+T22Yk=\nR:volumes.go\na:0:0:444\nZ:Q1y0IHqHgWUp9252w4u5cMOz1F0as=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-06-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nkbv+9KEFFAvAwuAuDAsQEMMjYY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-07-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11wsHjBn0OaHI8RBUW7QasecG0/I=\nR:accountbackups.go\na:0:0:444\nZ:Q1SLvPKk1U1eyF4wRowjC9BdDyCB8=\nR:accounts.go\na:0:0:444\nZ:Q1xprVsOsfWZfgpsUw5/f2xMkeHjY=\nR:backuppolicies.go\na:0:0:444\nZ:Q1oUlFPIcJnG/jGg5vaKUzX3MRmwE=\nR:backups.go\na:0:0:444\nZ:Q1ZJm4piGj46c8cfn+Hy1DTMxdkL0=\nR:client.go\na:0:0:444\nZ:Q1b6nInYtVxGd8UtxQrvz5qtu5P/s=\nR:enums.go\na:0:0:444\nZ:Q1AeB+00rvNF2Asv90Eg/6PtLRUlo=\nR:models.go\na:0:0:444\nZ:Q19My3hiGPJa17EowS/54stWGoC8Q=\nR:operations.go\na:0:0:444\nZ:Q1hl7aF8ftJ3IHDvx3fWDifq3J09k=\nR:pools.go\na:0:0:444\nZ:Q1DtXFAmQ2FUNGye0PlyShEctMT0A=\nR:resource.go\na:0:0:444\nZ:Q1eRSr/TuLD3djV6pLiKRnQtW18Tk=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1W3n0JFbDygnXBrjq1nlRYp5FNnI=\nR:snapshots.go\na:0:0:444\nZ:Q1U2/HP50Dl1r3zFB39qZhZ2Yq/zw=\nR:vaults.go\na:0:0:444\nZ:Q1qUDuFre6jr+4GBDdyqnE8NnAgf4=\nR:version.go\na:0:0:444\nZ:Q1uJhFWZ2le6jCr5xdKJsy6DtuvyI=\nR:volumes.go\na:0:0:444\nZ:Q1Dp5OjlRYuO3oXV2Xx9J3xj1c5iY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-07-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lME8lJ4XwBNUowuclsdcNdTkiXc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-08-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YtoS1+k7ufLXGMZ7S0o58NAbJBE=\nR:accountbackups.go\na:0:0:444\nZ:Q1Q7HsVMB/2g9JUSXCYo01kJHEays=\nR:accounts.go\na:0:0:444\nZ:Q1ODOuH9mn/6YDkRoUBTFsfkA71ME=\nR:backuppolicies.go\na:0:0:444\nZ:Q1Hnrk4cI2Tt2pIuaNvLsz4H0UhQA=\nR:backups.go\na:0:0:444\nZ:Q13+rSkjzBTMiiZnVg8zc4hAeZYL8=\nR:client.go\na:0:0:444\nZ:Q1s1o6ixQE53F4LyuqpsuyP/TnM9Q=\nR:enums.go\na:0:0:444\nZ:Q1AeB+00rvNF2Asv90Eg/6PtLRUlo=\nR:models.go\na:0:0:444\nZ:Q1VqL4t+fsURhC/JhoK5urZ12Ky+Q=\nR:operations.go\na:0:0:444\nZ:Q1hlN9w7k58si4BDqk5f/a/R5wRLw=\nR:pools.go\na:0:0:444\nZ:Q1y6dMTlHXLPKj13C6WBWBm1m0es0=\nR:resource.go\na:0:0:444\nZ:Q1ht31QU/n+mc92fg7x9I6P1EkC00=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q123UI62X/x9whcaQbmk/46WmbLWQ=\nR:snapshots.go\na:0:0:444\nZ:Q1rhEByyfvn5DMKWMUopyCGcOybGc=\nR:vaults.go\na:0:0:444\nZ:Q1ShVpPOpiZcQ6ZIMMyFk/yccTWf8=\nR:version.go\na:0:0:444\nZ:Q1xyLvyx5wANq4/gdxqP7ufUBurE8=\nR:volumes.go\na:0:0:444\nZ:Q1SfZf/RtmhgjLqKEhhiNZzn8aCtU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-08-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WjyYIoRD838mDwtJBkA5orHWFgM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-09-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1g5mv5ZxqN5KCPWhtwzyJM5+xIYQ=\nR:accountbackups.go\na:0:0:444\nZ:Q1eqYAHt9FixxQYkvZNsEsuLUmtAI=\nR:accounts.go\na:0:0:444\nZ:Q1rQNKdtYn6lE8M6jGql7F8qYoA9c=\nR:backuppolicies.go\na:0:0:444\nZ:Q1dhBx9Yp8O0ybF3tGm1+QmfGwgKI=\nR:backups.go\na:0:0:444\nZ:Q1BehAredruHukaMRd1f0R/C4gDdI=\nR:client.go\na:0:0:444\nZ:Q12bN5qwdWUcol+DrW4N8FM7BIgxw=\nR:enums.go\na:0:0:444\nZ:Q1AeB+00rvNF2Asv90Eg/6PtLRUlo=\nR:models.go\na:0:0:444\nZ:Q1JLoYhMNto+dxvkoODnvBOwwrmKA=\nR:operations.go\na:0:0:444\nZ:Q1mEvOddaZLbn2krfr3Gm0MEUiB00=\nR:pools.go\na:0:0:444\nZ:Q1jmuZYJdFhVDh6WuwIH8S2unS2qM=\nR:resource.go\na:0:0:444\nZ:Q131+u24KjN9+n61mdTZhJsJkRrS8=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q14Nmd/r3J3S7WOv+MccMNJxVvEOc=\nR:snapshots.go\na:0:0:444\nZ:Q1Bg0Bvm5yhuh0xKrPWw4GGG1fSok=\nR:vaults.go\na:0:0:444\nZ:Q1PtleXV7UNbt8tVI7ewItyr9wptk=\nR:version.go\na:0:0:444\nZ:Q13bDUSBsZKO3jnzQV9MzfPSXLAs8=\nR:volumes.go\na:0:0:444\nZ:Q1TcdKDmwMScdyHit1ZuwlsW2RKeE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-09-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ktR5msY2UVn/heDQbzSC2wTATrE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-11-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uuwwvFxxEAuNEnAMdZRH1xGpa00=\nR:accountbackups.go\na:0:0:444\nZ:Q1aee3RuvLLHq5jgwKRHGj5VG4Xe4=\nR:accounts.go\na:0:0:444\nZ:Q1/QzQvDaBZWHf0anc+DwIY9exETs=\nR:backuppolicies.go\na:0:0:444\nZ:Q1UcRdNejt2sTNF7Vno2cLPnu7wIY=\nR:backups.go\na:0:0:444\nZ:Q1bA4lYRH7gpNExEfDGk0Y9Iex8rE=\nR:client.go\na:0:0:444\nZ:Q1OzQiEimDjMOf6K7cG59PL65tya4=\nR:enums.go\na:0:0:444\nZ:Q15elTevDlB/NZY0KlQzNQ/1cUBfA=\nR:models.go\na:0:0:444\nZ:Q13WA2ODeEijPA5Hls9rTuNZ78c5E=\nR:operations.go\na:0:0:444\nZ:Q1km7oFGaJeAi2GwX8X27u+L8057c=\nR:pools.go\na:0:0:444\nZ:Q1Iz4V19EeMM1vWCuVZo+Bv2LEfIw=\nR:resource.go\na:0:0:444\nZ:Q1pQJugyGoDl2qg3xQcgyLJD4JAho=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q11Rd671Gzr7/GO61ugTaQeHwnDgE=\nR:snapshots.go\na:0:0:444\nZ:Q1W+PRKXjwSknHcb0YuworcZEuTT8=\nR:vaults.go\na:0:0:444\nZ:Q16ZEpo3CFHR1gcKHdMtcu9T6yf4k=\nR:version.go\na:0:0:444\nZ:Q1TglvSSiHdXiwAGfcAsw4uqbcJ9Q=\nR:volumes.go\na:0:0:444\nZ:Q1nsxgZgSFRqtMOk0NS2QmXgC1ljc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-11-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fSV/ulPgA8MRLfnCfwKgXHE/szI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-12-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mSTpahYQsS3cPyR8QFBTzVU4ejY=\nR:accountbackups.go\na:0:0:444\nZ:Q1P6MO6uWOLFWkrENMK8ZBNxOXjYA=\nR:accounts.go\na:0:0:444\nZ:Q1c4MigcDP107LQaW0s/ibJyUWA3Q=\nR:backuppolicies.go\na:0:0:444\nZ:Q1pXTz2vNtLNnRkD+JgL5aULwTFwQ=\nR:backups.go\na:0:0:444\nZ:Q1cLuWmR1I3TLZf4S4VdbRrLGdOc4=\nR:client.go\na:0:0:444\nZ:Q1y3lccSR5hOaulPA3G8SEHC+gC8U=\nR:enums.go\na:0:0:444\nZ:Q1rfwZVecZYRJ5X/dr/CUX0A0CzIY=\nR:models.go\na:0:0:444\nZ:Q1rW7ilg7KUv4PWKG9cQW22Z7MH3M=\nR:operations.go\na:0:0:444\nZ:Q1a/qklpW3We2QXql8JY/bxQnLRx8=\nR:pools.go\na:0:0:444\nZ:Q1xreZlx82VL1oyHls0dAPEGvHuvc=\nR:resource.go\na:0:0:444\nZ:Q13UY2Gf8UaVQxReffuBxLv5G801A=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1qaYq/7WLnw0nvDpzb5NvMBvacpw=\nR:snapshots.go\na:0:0:444\nZ:Q13ZfnQX9ScrIlVr5l/g40o1vCUhE=\nR:vaults.go\na:0:0:444\nZ:Q1Q4RnU60lZgCO/1icEHoNGeOuqZU=\nR:version.go\na:0:0:444\nZ:Q1dwBOLnyX34IZthTZP+1C/Xhp1/o=\nR:volumebackupstatus.go\na:0:0:444\nZ:Q1AquHbZtlVlFbUR1Bkw6LSF7/IwQ=\nR:volumes.go\na:0:0:444\nZ:Q1sUJBhbGQZWQrbBFM5KgBLEb3fP8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2020-12-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CmiWWeSpilwJskctiKrHlyju1/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-02-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EL6Owg49jLvzVJwHdbpZAZ/iXq8=\nR:accountbackups.go\na:0:0:444\nZ:Q18G6+KJVQZr6qg5kIoTeXKAtzND4=\nR:accounts.go\na:0:0:444\nZ:Q1xysZaHqpBWz1jvVVO805f6iUchs=\nR:backuppolicies.go\na:0:0:444\nZ:Q1/bzgvlcKAhq+0mujAswu+JbRpAc=\nR:backups.go\na:0:0:444\nZ:Q16E1fui3kp+G5nox+R3X2etSNVuE=\nR:client.go\na:0:0:444\nZ:Q1OjPbWZONL/9Q+zLgwGmM9L2BsKU=\nR:enums.go\na:0:0:444\nZ:Q17zTR4zhzBVDOiFYbo12h3FanzVY=\nR:models.go\na:0:0:444\nZ:Q1tgq37c7R6FnHiqAsz5ZrF37130Y=\nR:operations.go\na:0:0:444\nZ:Q1KCJ9k/b9HtJyKH92wZpDL4hJX30=\nR:pools.go\na:0:0:444\nZ:Q1GmhJIPKMM/vjMwm6NqsdTuZ3fYg=\nR:resource.go\na:0:0:444\nZ:Q1VF3I0c6nfoMwK2FFPfPatdiDxEg=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1m4AhLFzXD9iW//dstK0H1WVhFIs=\nR:snapshots.go\na:0:0:444\nZ:Q1pqYDI1ercHKEOBqRr3WEKMFYwQY=\nR:vaults.go\na:0:0:444\nZ:Q1gDOAe/z1wqYNcmGCUubLKzas76M=\nR:version.go\na:0:0:444\nZ:Q1levyiWVTXwEjj9xvuGNs2nuuNBA=\nR:volumes.go\na:0:0:444\nZ:Q1HESK29eUpqee/+GUvsNex7g+Jxs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-02-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FyQ0mmrElXQ9RwCkc4LQhXY5ddU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-04-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/Bf1YbicfvYhoGGD8JBXNKCnyYE=\nR:accountbackups.go\na:0:0:444\nZ:Q1OEH5rSq5SqpgDI/slQ+IOWJTl2I=\nR:accounts.go\na:0:0:444\nZ:Q1DmGGl1ZNde00aLhZhF0Yfo3CaSU=\nR:backuppolicies.go\na:0:0:444\nZ:Q10UWHmzJH0nC+BRubg1OYbyM3z/c=\nR:backups.go\na:0:0:444\nZ:Q1nudYH69n4mPcDxLD/2dKGoWup8o=\nR:client.go\na:0:0:444\nZ:Q11XEt6VdZDWM9I0jPhrvRkkK2yKo=\nR:enums.go\na:0:0:444\nZ:Q190HjsHkrSGsCMYIGgQEwGbGr53s=\nR:models.go\na:0:0:444\nZ:Q1fW7AVEUuNYCrdz+Ovrg52DINnzY=\nR:operations.go\na:0:0:444\nZ:Q1xrMJdFmGbm+gU3f55i6Lr8UhRHM=\nR:pools.go\na:0:0:444\nZ:Q1cvYjpcdvMJqheYFhRNKOmQw2KOI=\nR:resource.go\na:0:0:444\nZ:Q1Hl52grdDJDnf9Hp8FU5QWhUw3Bo=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1sLHgL6Tu7ISx8yDoSj21IE9Pu8c=\nR:snapshots.go\na:0:0:444\nZ:Q1OzHK8SnZlF73R8CQaNK72zUD3AQ=\nR:vaults.go\na:0:0:444\nZ:Q1nMLfgUuKBrCrGqyjHWMxBlfwE8s=\nR:version.go\na:0:0:444\nZ:Q1CB5wH8SetkWvhhhL/9zqnVVEOZo=\nR:volumes.go\na:0:0:444\nZ:Q1mfQ11cZ/SbSoEShkuPHSHdd0sjs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-04-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1F7rHv2MlcG2rhD21edVgAxw47Dk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-06-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1tzciJ50zMI5VL/aE1cz/ct9IADc=\nR:_meta.json\na:0:0:444\nZ:Q1+C6aOFeqN1MtMJ0bbXN/+uYR7jA=\nR:accountbackups.go\na:0:0:444\nZ:Q1/ErPlFYvalX3B9i7TVe8Ebw2EGU=\nR:accounts.go\na:0:0:444\nZ:Q1oFaRwHa5b0JTsD6BPi7jczu3q1o=\nR:backuppolicies.go\na:0:0:444\nZ:Q1qc87LvBMjNE1ocwxUaNjm8YUhY0=\nR:backups.go\na:0:0:444\nZ:Q1Gk/oaWuzo//Q84yWwYP/pQOQQYM=\nR:client.go\na:0:0:444\nZ:Q1tYXnIlclWMAPfNWcvhFc1tT4I+0=\nR:enums.go\na:0:0:444\nZ:Q1JJiD8dcjxtYwDaCZOrHLYCQpVPI=\nR:models.go\na:0:0:444\nZ:Q1lhSIHABfU5RxNU+ScwSqpYMx3pw=\nR:operations.go\na:0:0:444\nZ:Q1IefGNNFlN9sATtExxxxgDk4JDDA=\nR:pools.go\na:0:0:444\nZ:Q1Zo/c6n+gTFmlZJ354ggJxWZoAjg=\nR:resource.go\na:0:0:444\nZ:Q1Ebl5WlI9F9C/YA2/lU/owS7htsE=\nR:resourcequotalimits.go\na:0:0:444\nZ:Q1U0qd0TP7wN+zWORezRTl6tbJw1U=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1Ql8ROOJbREXCwP2PJTEIqB673fY=\nR:snapshots.go\na:0:0:444\nZ:Q1a9cU7NDqdPDzVav6ucBrFProRvY=\nR:vaults.go\na:0:0:444\nZ:Q1gyTxS0IA1b/uKJh5RO6BzXAa8kc=\nR:version.go\na:0:0:444\nZ:Q1E9/QaICF030usWwxK+dqH1iXLik=\nR:volumes.go\na:0:0:444\nZ:Q1a6jwgg94mmnH1VOdDgVxc20L6Bw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-06-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16IXJmtSw2iAVhR45SGnWxZ0SwHc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-08-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zLhoIyI7hvlqhWBBpL+JtReJllQ=\nR:accountbackups.go\na:0:0:444\nZ:Q17Hcw1gFG9YFiXPwFGBWYIfJGalU=\nR:accounts.go\na:0:0:444\nZ:Q1mGO+T+y8r4D6sgUpg8QLotbZNis=\nR:backuppolicies.go\na:0:0:444\nZ:Q13qapKy1tHyzligq6iduq0NuCfdM=\nR:backups.go\na:0:0:444\nZ:Q1EmCxOIDfLQsgi2u7w/AEQGqYxnQ=\nR:client.go\na:0:0:444\nZ:Q1K9HIvkqIwWdkhy0XJbR8SuKpi5s=\nR:enums.go\na:0:0:444\nZ:Q1vzs7NbzAs+AgCZegbWeRfgUiVdo=\nR:models.go\na:0:0:444\nZ:Q1SjXgpDNTPkLD7f7AQRX284LjASk=\nR:operations.go\na:0:0:444\nZ:Q1QC95G3JBalxQ+Q0xXLhPMcrEAjI=\nR:pools.go\na:0:0:444\nZ:Q1GAEl9bMWK1EiAEyyf0AcLMvOJe0=\nR:resource.go\na:0:0:444\nZ:Q1iBUYjnsXhXpPOt2mXoncoziEEN4=\nR:resourcequotalimits.go\na:0:0:444\nZ:Q1YbgRz3s2T8bm/2NPbqk5mM0sInU=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1t8yMMQdnLWSc0KveQrj8Gpjqzpc=\nR:snapshots.go\na:0:0:444\nZ:Q1zDIj5IW9vDVAlYGLZPQ+il2Rzsg=\nR:vaults.go\na:0:0:444\nZ:Q1OHF4OhI3C8YMmxTFpUnIvaHekZY=\nR:version.go\na:0:0:444\nZ:Q12ywhxw5Tq30Hl1jHL++553WYqGo=\nR:volumegroups.go\na:0:0:444\nZ:Q1nOFPIrWjnYV1Xopt4PqcHarY3QY=\nR:volumes.go\na:0:0:444\nZ:Q1n+/AZVxlD6/cRi0C0XgE7EDrNo0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-08-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q115cqa3grBFAKZhF4vjC8wc0F4g8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-10-01/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UDKuIVk5pRjdk8ZtnF24J2cDpTY=\nR:accountbackups.go\na:0:0:444\nZ:Q1SgcD7oY+iu2Iwi77iLksUe2KFSY=\nR:accounts.go\na:0:0:444\nZ:Q19WcWSwEgfWpEcqYVScna2mY8hhg=\nR:backuppolicies.go\na:0:0:444\nZ:Q16+hHBu3L985WUb5LKRDgi3q5NjU=\nR:backups.go\na:0:0:444\nZ:Q1kqMZzXbE0g13dtk2yUQqTpV6Rk0=\nR:client.go\na:0:0:444\nZ:Q1gEXP16IxsDvInGPCeNLWci2DtQc=\nR:enums.go\na:0:0:444\nZ:Q1elnie8dGlxTHKcG+VIqsF50gyM4=\nR:models.go\na:0:0:444\nZ:Q1mb0TsbQrycZl75KVGXrXK43FX8s=\nR:operations.go\na:0:0:444\nZ:Q1cA8R/qiBK0eBAK9fifZ+7A9NFzo=\nR:pools.go\na:0:0:444\nZ:Q1s7nCMODDlRTMQxciULMvJLbsGnY=\nR:resource.go\na:0:0:444\nZ:Q1HQOv+WjWixmgsvyuZtLvS2hH/Xs=\nR:resourcequotalimits.go\na:0:0:444\nZ:Q1HuPgk2ccNpurXWtm9dUDPjsj6Mo=\nR:snapshotpolicies.go\na:0:0:444\nZ:Q1LylHROP9HKsTA+0q85qX57SoPn8=\nR:snapshots.go\na:0:0:444\nZ:Q1EVi233ZLimrb8sStOwGPhTUfJvw=\nR:subvolumes.go\na:0:0:444\nZ:Q1l9MY5JcFvrN6XYFnUSJFtL2xQZg=\nR:vaults.go\na:0:0:444\nZ:Q1HtuhJBoef4M1ayIazEnrGf7QDPY=\nR:version.go\na:0:0:444\nZ:Q1OAqcZf+9Ueg3t5P88AVVvQD3PzU=\nR:volumegroups.go\na:0:0:444\nZ:Q1h28zRwNXjmIZ+zgjICYPnQ3iKoM=\nR:volumes.go\na:0:0:444\nZ:Q1z2G0rjAe1quJy1x291m9Xnuh2c4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/netapp/mgmt/2021-10-01/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JmaOBCg5JODTaaBIU9JX7N9kJM4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2015-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2015-06-15/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1otSDTx/AhND0jaARhiOT4lr8A2E=\nR:applicationgateways.go\na:0:0:444\nZ:Q1o6An2T5rQTFtLgTfr54PyMpuDJE=\nR:client.go\na:0:0:444\nZ:Q1Bv7RcpvRG0FVyFHDrLHcidftg5A=\nR:enums.go\na:0:0:444\nZ:Q15ghMJsC8iPmW+5beqfg5NUeR9Ds=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1La/XkCcsLbJHQsoj/VIJh0l6Izo=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1yJ7zcZmbYKCG9KijE56t8eYFMew=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1sw5eE7BsHXnxz945laRNUP22IC0=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1bLwd4lVZgFx40zCAQJEnYMzFJQM=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1f0+BGvooMHzQk+IHAOIWTTdCwWQ=\nR:loadbalancers.go\na:0:0:444\nZ:Q1ZsVx9sI5b3nxUVCo9NQ3k31SXZM=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1+WWdk5euebqj/cjjBm/lDtdZlOI=\nR:models.go\na:0:0:444\nZ:Q1wy6VNukTSgjEcATSwZy1gytyRc0=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1i8OoPUDRg0WuKL1RKaxKYGGubf8=\nR:routes.go\na:0:0:444\nZ:Q160DvD5qYhYahF/6uXSwwvq+yjpg=\nR:routetables.go\na:0:0:444\nZ:Q1ldxknS0hug4dy6lpLWLfglJos78=\nR:securitygroups.go\na:0:0:444\nZ:Q1WpNJTfCPLAzA75s/Q+2MRnS33g8=\nR:securityrules.go\na:0:0:444\nZ:Q1XSQmNoh7huEKvYbpICmhXrD5gU4=\nR:subnets.go\na:0:0:444\nZ:Q1vpAY61dmYCskvMMipylzvJgRGDc=\nR:usages.go\na:0:0:444\nZ:Q16PF9oRSRzSOYLk8ARaqWPWBIdKw=\nR:version.go\na:0:0:444\nZ:Q1X0YSMSoiC/Qc05eEHgQt2Vp648g=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1iTppTDwyRf0awjqt+oFVLPBYgF4=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1nVu7blKeibTb4gJcMhWCOE/G7vY=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1eGzaBYPg5yJHqFgaQP4TM7hoOOE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2015-06-15/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1luc8WeSiBORLFHXJ3CT4pxsVKnQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-10-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rPX8Rb3jJf1zUuXXBVPKoDv4ZJM=\nR:applicationgateways.go\na:0:0:444\nZ:Q1H2DwtAP0LcpbGbptskpo23sjK+8=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1Y8mlSgQByYnGGfDMxR8CQWKj2sM=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1AFGzvDIsQPUefU45XmRdlmCYgc0=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1d6VLX1E+sVEoWjn8YPanvlffMU0=\nR:client.go\na:0:0:444\nZ:Q1I1YTedW7c/YHBQqWJ2e91eBqct4=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1sK7u7eusI1VWYdfym/UBHViTCy8=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1u3J15bup9ahIWB+D2S6TZBDm+jE=\nR:enums.go\na:0:0:444\nZ:Q1ab6SWXNvvU/H5+uUltKwMWIYhg0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1iBVs/x9JZFrqqy/X7o3B39CmuZc=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1e4A2MJw20/yfpwqePbI6Xu5vKP8=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1eAtDdCeoS4u+/OexMuyQU6WSG8s=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1/3ia37Fk0R8+tIEVexHNKEI6rPQ=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1sJXCNbD+FeQb9+wiOvbLs4zQKLY=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1UhIP+VzvdXjX86cG55q+00ODxCk=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1HERCfRDmLmDEoyU1G5mRUFyb2h4=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1j7oViRMtT8z+XrchEPhXuFrxRwQ=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1EYfxcPFjUtnDBUXO9aw5hKgL+9w=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1+qLl27756z5YXBq9b7tNB3ED9Eo=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q17W+SGIjQQ+SUiPdTVcu9XI9OJgw=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1M9Akmo4hnfSUKX5dj5kyCcCgK6k=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1Oq67wocH64JrBhah5LGDtXgEGFw=\nR:loadbalancers.go\na:0:0:444\nZ:Q1iD1ojv8Y9dpwDDcE/XApicSY7u4=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1xr2gnFtPaTX+UHbZDsTl7Tv/6XA=\nR:models.go\na:0:0:444\nZ:Q1prikLZfsPtmjlWxTFyCh6r3du04=\nR:operations.go\na:0:0:444\nZ:Q1VU3X3A9QAkLoByr+kehB7yeWhWo=\nR:packetcaptures.go\na:0:0:444\nZ:Q1Tuy72SeqozSxZdgjUjzq3a2dej0=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1ZcRIy2mz+cuoFn22vyZnGmtcVFI=\nR:routefilterrules.go\na:0:0:444\nZ:Q1oVwc8KckQ9bxS3sq+q4foulgjBY=\nR:routefilters.go\na:0:0:444\nZ:Q1uQ9NZ//thAjbG1vilaEPMU2q4QI=\nR:routes.go\na:0:0:444\nZ:Q1koHxYI6L49hT+ZL5Q+GMY+5G2uA=\nR:routetables.go\na:0:0:444\nZ:Q1bNVZ9xGqiobSmpUrKqBAWNkdaOQ=\nR:securitygroups.go\na:0:0:444\nZ:Q14jn4FQ1yyjMx6A5RQG4IU6EaqUM=\nR:securityrules.go\na:0:0:444\nZ:Q1PAyVDHVc4xKNHw5BMpCKdKqyymY=\nR:subnets.go\na:0:0:444\nZ:Q1ZGsaGxgbuDB0khIAoExCIeJkIvs=\nR:usages.go\na:0:0:444\nZ:Q133SxNI5inD3AN6BiNux1Sg2tIhA=\nR:version.go\na:0:0:444\nZ:Q1V6fug2mer3vVdi43MXL9SJwkFAE=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1V4zQJ/slWfMwV+Z+eV1mReOIZbI=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1LPMfc5fuSANvnKWV9RfxQiv+wIY=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1e4OK20Rs31XulGmo3duZPxpdnSs=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1GbqQE+/yKyf08TNDyEwrHWcrs0w=\nR:watchers.go\na:0:0:444\nZ:Q1dRC9nGemTX5AbE/xMhC1cB3yoXI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-10-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZpL74eZt3ZNmwuFwQAQbEIWY+ZU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-11-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16AAUGM5jzTt22+BkVamHcVKr8nQ=\nR:applicationgateways.go\na:0:0:444\nZ:Q1ui39pwxSpEXpqTwROr46J+ikxh4=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1JMHdtbnj4+m5vEG/DPFQ+e7i62w=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1UazQ/XJAVrSB25wBc859SnGd4xo=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1EUszNqAnUGMXPyaMCuW7MYUevlg=\nR:client.go\na:0:0:444\nZ:Q10IOTutb25Bjs+FGAs+GZFqzb9ZM=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1jjT1tPdnp466nzTMCVpIETXs7zc=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1vdCI6ex1l4noQ0cF22JFlAwiA2M=\nR:enums.go\na:0:0:444\nZ:Q1ab6SWXNvvU/H5+uUltKwMWIYhg0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q11jX7/TKjei4o2E0jnuM6S8aA9JM=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1T+8Ra9ASz4GRj4YhJKyYnYtRVLM=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1ErAzwr0wHYDXgQAQoQ2fbPOMy6U=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1VUXRc6Ie/PcENivzAXhdoT8yYQ4=\nR:inboundnatrules.go\na:0:0:444\nZ:Q12jjGLLjeOkAfS7B3lIWgA4ZNrO4=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1TNaRCJJhQWGRBS5atsjvMA9jTsI=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1L2dqOBzTWUMtUvf7MtrdjsMvn/Q=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1jLVxy2ZVkb2BT/d4zVhiVLjQ6Rk=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1EzKljdfx/tR3Zx1zLnaaL0te1lc=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1GdtZic0nSvcaWcMt/asKZk3GneE=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1253nHjNNCP6JWFu/wrD7sGr9SJc=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1mnB+L5gV8GLCeQbOuxR16TpGPuY=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1jpVAT319FuZYfhevAisAreIKtaA=\nR:loadbalancers.go\na:0:0:444\nZ:Q1mf3dEtRBIhkg590zaXBJyN63CCo=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q18Ok30I4QY/VKd2arCCrOa0Ce7y4=\nR:models.go\na:0:0:444\nZ:Q1krV8x3cqL16tL8tRF5Xi09hI3So=\nR:operations.go\na:0:0:444\nZ:Q1bYyd6Qim+ien262SVKuAhb3M460=\nR:packetcaptures.go\na:0:0:444\nZ:Q1Fbk1X95DkL1iVS6/zUQzU6BSgSY=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1WXKUF2C3zjXz3n+9m3S0aj6Kx2E=\nR:routefilterrules.go\na:0:0:444\nZ:Q13Qh4L6IqxAOYvjIAhp7hBKt/AXw=\nR:routefilters.go\na:0:0:444\nZ:Q1o/J6xVrE3HGRhiLYwG5FHlxatdI=\nR:routes.go\na:0:0:444\nZ:Q1WOngygdFCPW+7QqVT73LuksChT0=\nR:routetables.go\na:0:0:444\nZ:Q1n0tQk0fs386+PBgEoPtFxYqlIMc=\nR:securitygroups.go\na:0:0:444\nZ:Q1AaWSLRViXcX7EuHZ95EniyeTpo8=\nR:securityrules.go\na:0:0:444\nZ:Q1SncKy9Tz3GgX90AP7EVimF2O6ew=\nR:subnets.go\na:0:0:444\nZ:Q1uwV73FVNdSGkbTed37wPB8yRwqQ=\nR:usages.go\na:0:0:444\nZ:Q1fm+GAaKoVuMcA38SO0yEeSHSfyw=\nR:version.go\na:0:0:444\nZ:Q1Rwyp7U2sA27aeowHBjuzXxgFi4I=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q18QrXUNVX7ScGUyccHDqsxs8dKBc=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1Sxd3U1kTh6zCkYm3HYn/6kY7n3s=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1B35VetALynvLDCVRcVzWCHpiQ9Q=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1eFrZiZFlzPh/O8m8M6MpGuz1LKQ=\nR:watchers.go\na:0:0:444\nZ:Q1ayUp3tFspp6dJ8/EzeX/tW6t8ig=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2017-11-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OanbrSqIbWiZk2T+yRaHBiZ+Mnk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-01-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dRTR191/BqpwVRMvRyZT7DeGOqU=\nR:applicationgateways.go\na:0:0:444\nZ:Q1Gt09HfJWP3ku8t35E6O8x6sxvMU=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1K6sXgf2MU/iwhDmoPG9k/ionqGk=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1l3Cn8KPH/Ghx6Mit6Lq4CcL/knA=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1+p1sK5H2MbwrHAMCarOMfwbi2SI=\nR:client.go\na:0:0:444\nZ:Q1neIf2iYcqNcwEohboLmMkZEOJgI=\nR:connectionmonitors.go\na:0:0:444\nZ:Q15A8HeOoTXJjM1KbQwUccn5AbMFU=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1zmIYt2oVbWNRN4ZIFZkI+JBYNUo=\nR:enums.go\na:0:0:444\nZ:Q1ab6SWXNvvU/H5+uUltKwMWIYhg0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1HGy2Iv852q824osbrWKdRvH5QJ8=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1LEvNT6UFh1dYDPu6vsKWp8rueXg=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1q6qfC5zroFfe4cYTZM3MQPNjy0s=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1u2w+ULBS4jaSHglCkKwZYi3coqo=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1L/YwftwIraYaYOsKWp6leflFjao=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1OhFj/6ZCoDGUBL6mQKsaGubNcwY=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1dKGl2C48IbrkyLky5d2mvB81EWc=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1b9WuZdQMR/w4O/ctW+gbXdMaMNs=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q19WklJSskX8WqTImj2YSO9xp+2ug=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q11AOzIwlpe2SRzYTeXActQ81eXWk=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1qKZx6jL1roGp8li9hYvK2cyF3tw=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1x+W+EwuDinQMisZNA9zKT9HSQQ8=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1VLd7M5xXGOfMsvvZwJhfVWyoByI=\nR:loadbalancers.go\na:0:0:444\nZ:Q1VuJfLwZ0un7MQ1HBate4ZNCBSsE=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q15rScEmkxbKqzmKhuoWqcXDrGi84=\nR:models.go\na:0:0:444\nZ:Q1jFyiI7aRh+QMUH/UzcqTg5TQEpE=\nR:operations.go\na:0:0:444\nZ:Q1/vTAhZt+Cmafzg48OQcDvDKvWbE=\nR:packetcaptures.go\na:0:0:444\nZ:Q1yd9bUWnu/rJBfRnsttED5aBkxLk=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1O6K5b5DK0csn6l8kHfwYE99nmww=\nR:routefilterrules.go\na:0:0:444\nZ:Q110aDFmPkIocxq0iQtCxhE7mJtyQ=\nR:routefilters.go\na:0:0:444\nZ:Q1WjsYAm+55Mlqvs9rAfX0/iJ8YiA=\nR:routes.go\na:0:0:444\nZ:Q1aoFW2K7HDmPLlkL1Wg3YZ6QS7hg=\nR:routetables.go\na:0:0:444\nZ:Q1dESssigTa31VkafDiXrH+X3j2Jw=\nR:securitygroups.go\na:0:0:444\nZ:Q18Cce5mAn929cIaQoJJTCsSKAlA8=\nR:securityrules.go\na:0:0:444\nZ:Q1n8BlsM4qyM1Kdw6PRA0OWV9CY1A=\nR:subnets.go\na:0:0:444\nZ:Q1aKhY6uUM/MWLM/wDhTxjcBgPIAE=\nR:usages.go\na:0:0:444\nZ:Q1nSPKMTQ/S6kkBoQg8ADMNK7k2nI=\nR:version.go\na:0:0:444\nZ:Q14+kuf1RgSx47if/kcI9F+7QstaE=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1pnaPB8IsBgsEhlvKHs0xfkvjhfw=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1i8MTxXWKJN629D9tCzas6VsYNHA=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1dmi1z+x00TxVKwTa44JJeKwO3jo=\nR:virtualnetworks.go\na:0:0:444\nZ:Q18Ag1dhSn7NnDI1i/1aj5g090YpQ=\nR:watchers.go\na:0:0:444\nZ:Q1Qk3zdE4cLIwvp6QJm0SVOPbpoks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-01-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q121moENPCx28Gi52qkl4wrSW9C4Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-02-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1LvRiB50XkkutsJT3syCNBhwfuT4=\nR:applicationgateways.go\na:0:0:444\nZ:Q1KFLdz8z1/nho4St2dXmfgTTlK/U=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q11EYpfWL7iFGBCMU38k6/feoAWpE=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1XK3KSEzpyxXSI4ZBNLDKIxjINwE=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1LGHNg+UVhL4KOo+ViziuOk+rfGs=\nR:client.go\na:0:0:444\nZ:Q1vhHxFABvOLEMCU0lOUZGd+s/rt4=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1zWbT0NxO9ZIkYC03ExCvkI/Vv9Y=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1pg6Nh2rA7TZqhF/UGdDs3kvnJ7I=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1vlS1H+mBIl72pOTdQBFLEJnbtjk=\nR:enums.go\na:0:0:444\nZ:Q1elcVBroA+zFrraNtZO/btMyOY1U=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q10mI0Wn05KRzeIbBFO87pp+IOIpc=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1io6HLSjrF4pcf+KIWew41Bb+Xfw=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1e3ORRow0KZ9sRgpqiZ+V/bwqFpk=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1yIrYrNSMmHCWEJRa+U7CGejqFWg=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1UUMpwIBARK7TtNygwi3KfIiqleY=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1TUbspM+INWj/24MZ+VAcpgZH1CM=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1UWq2onXpAmcar4695Xl26Y/11mE=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1z/jbIjlVth2QnW/uy5/ozGrCUYc=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1nhY0jvDDu2+UkGH2+lLAUu7I4gM=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q108P2eY0PqU4EzU0H5K7CP86iuh4=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1lT/LawCV1QXFjcqXHIqIv6ksJH8=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1mRTcsV37q8UFLpWyv/u8mkE7Phg=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1WQlyxZ1qxmCg8w6uabVPaMAvWbQ=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q12K1l9WY4HEUmo3fmomAJFy3t58M=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1bvqhvJsfmS2EdbYTCV0+tEOdL88=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1Wi4UeQDSBrdiYp/Psl9Doy73qZY=\nR:loadbalancers.go\na:0:0:444\nZ:Q1FnOcYAQ8xuQUrZearM9IAgmG6OE=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1EXUqO/rW1TaTLbCTAkqphUOzwyk=\nR:models.go\na:0:0:444\nZ:Q1DlvwYoLoKqeqRm83Iv1pvXNygl0=\nR:operations.go\na:0:0:444\nZ:Q1LAE0dvA/h8xY7eRcJo99JaJaNEQ=\nR:packetcaptures.go\na:0:0:444\nZ:Q1XG6ZH/P2k55+y5rnZprVJznsoj0=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1SuMX5Z2CKcZC+eReTfolxu2jzX0=\nR:routefilterrules.go\na:0:0:444\nZ:Q1z03/6tQiMhdgLtk2Wz1Prccwlr4=\nR:routefilters.go\na:0:0:444\nZ:Q1szZXtagEoddbyw0HkTonCIv4Y6c=\nR:routes.go\na:0:0:444\nZ:Q1yImNwjYhfQG6oggmL+LXggvfC08=\nR:routetables.go\na:0:0:444\nZ:Q1F+7jQIFHyajeHVhUPz4KcEGxioM=\nR:securitygroups.go\na:0:0:444\nZ:Q1QDtbcRtrKTbwgh6sbhzoXruKvJU=\nR:securityrules.go\na:0:0:444\nZ:Q1zf4431TnJsKPcHo/ixTyvYKXEEM=\nR:subnets.go\na:0:0:444\nZ:Q1sSL0ThYZOB8pXpPoqdHiyt+qapU=\nR:usages.go\na:0:0:444\nZ:Q1sNi8WMOGAnbK7VyrOu19TFF8aMg=\nR:version.go\na:0:0:444\nZ:Q14TxUoEl5bmfD5eaYYOp+mpzJj4M=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1Pq84Ff7pHz+yHAoGQyuWKI8PY6o=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q17Z39Z9Ng5fVEOoPq/ubmPIoyhmM=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1iMwmzTymLAxtAGxZBPwGn40p+vc=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1kLeCWOgNNpejC26ZEN3i31A+nZM=\nR:watchers.go\na:0:0:444\nZ:Q1FSYDF/Fs+GU6KmUEsTALetlJbX0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-02-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XuUyx+DgNrN/MUxv1eKT5YnRU3I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-04-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GQmOv6oAey7eeD3hV3zcmrSB8fY=\nR:applicationgateways.go\na:0:0:444\nZ:Q1yjbTrx35uomNZwds9mmAmI5gdAw=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q17uMjxpvl6fQJsBLNETu0S/ITJoE=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1Fo9Ubv8FaZiOVWgm/F+NRTvd/aY=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1aGI4W5J1a0OBMTUlSjxRschy/vc=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1U5Za4X/WPX5XjcvXz+2W8JkNGgE=\nR:client.go\na:0:0:444\nZ:Q1MGSYxgcrPDuWu4H4ENYh3HnkZRo=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1K5yeudCYFJizYNnhNTgWl+huJh4=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1xCFBG5czyQk4tVqTXxqWpwcUsPQ=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q158bWZmdWATse/6XUjquKyTvkQpA=\nR:enums.go\na:0:0:444\nZ:Q1FoHczYn5RzLHHEPx/NctdFeTr4Q=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q17fDvNLYssQ8MGu0Wg0uPv80OdoE=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1FGgIF+U25nYrpylmeJesHtgUOlM=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1/VqAKtEn16Q0SzwXFaHazQJLZRs=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1Paij6uQ62L8MeB76te9OXbuHdws=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1MZBLbMeHmiCnlZINREnlAXA8GPU=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q12YUyiXnlwYRAokWFKInj23y09V0=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q15fRQlX/8RYeusvjitU0E1huANHM=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1Bwq1P3U1qVuuoRPA6n6erX73sEY=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1vX2cFTUCutPMjGuc+C9GXwOu/Rs=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1PViQii+bkkcrN3LPFD1P6wceJ6Y=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1YYeWySZOa+dPWyn4fN3yu1xcjYY=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1Fihdm5hyrE0Dw6k4/0GqIF/OYE0=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q14fbyJnYPZySyBCqo1DWr4PumJyQ=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1P/gqhtV7shH2VFmLWrpjgOVQPok=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1jsn/up3714rmBJS9HIONUSVRit4=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1IH/gjZ0ZWM755FvQ+P3sI8DauB8=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1gpL4tAN2GuFWTJ8qBI2wsFu2h9A=\nR:loadbalancers.go\na:0:0:444\nZ:Q12qGEfuU5Dmcqmq0D5w1So3G4RpY=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1HRs//le2pSX/MYkCNt4zu44UjkM=\nR:models.go\na:0:0:444\nZ:Q1xldZGj0vP9WXmKiIE/xrtVNzR3U=\nR:operations.go\na:0:0:444\nZ:Q1rHuibR1bbrIw7zbMzFZ3wgri0to=\nR:packetcaptures.go\na:0:0:444\nZ:Q1nrPW7oqQtvbQW5Uj4JFvgLRkcpg=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1caVgmPEewZ2mNQoSpgqvwuDGh0g=\nR:routefilterrules.go\na:0:0:444\nZ:Q1GJtd01k8t+Ye5N82ylcDmIVWoF4=\nR:routefilters.go\na:0:0:444\nZ:Q1QowQW+0/XPeQbf+PMk69IuyUqDc=\nR:routes.go\na:0:0:444\nZ:Q1Q8W5i1Umgeg1P/y4SV3obrBB9Rg=\nR:routetables.go\na:0:0:444\nZ:Q1xn8fWNf68zUCR/2RvksMtrqgnk0=\nR:securitygroups.go\na:0:0:444\nZ:Q1SH1ryEZqFlLAZOYBZybuJgPLzd0=\nR:securityrules.go\na:0:0:444\nZ:Q1wInYk83pA6mgeC/+KbrzZuHcEpY=\nR:subnets.go\na:0:0:444\nZ:Q16ZDW6yP3aDZZsds9odpcGozmSN4=\nR:usages.go\na:0:0:444\nZ:Q1gA5iZHdYge4N9g6slng3xbULktU=\nR:version.go\na:0:0:444\nZ:Q1N/lAyYOTcwHbC+8etfzWimFjMpA=\nR:virtualhubs.go\na:0:0:444\nZ:Q1o215cXU3JmHqKx4Ul7n0yCE1wiI=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q17hugouQHn9DJuZPbwcRyBrT5q5A=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1DE0kaUORWAilsMRyM39YWsYZ7V4=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1TIAW+HahlPDbluSXPTWvgpaGDoc=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1tm9xlZJtmNkbRhI/8hXVJF88ZU4=\nR:virtualwans.go\na:0:0:444\nZ:Q1Eb6vSAYSZRBAbRUqK4vGgZuCXbI=\nR:vpnconnections.go\na:0:0:444\nZ:Q1p1EvBmsconXFC1gA8Du21TSgZQA=\nR:vpngateways.go\na:0:0:444\nZ:Q1TPIn9vrqLJQR7DDcR/k0zu+KJ64=\nR:vpnsites.go\na:0:0:444\nZ:Q1oOHTWheSMD6OoFFnclQaHEVa8BA=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1DClBdCd8Gs4moIV/IWJV8sntHOQ=\nR:watchers.go\na:0:0:444\nZ:Q13pC4FeJm8garCZQJTXszTzZwOSk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-04-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KwFx0HRnGs5YujVi2YklQewMUlI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-06-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Tjqx9fuAmKZsgP2Ahf2ubcfs5Vc=\nR:applicationgateways.go\na:0:0:444\nZ:Q1qmpckQBSOLgeIlyvyqZvCbGFONY=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q12SJKgryFR06IgBFd8gHnPO7C1Go=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1igT8UxUUN+zP3hIoNy6PfbhFjVI=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1nWFHAa7nPbgnY4+RVWO5eHNQkHo=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1O+rpOgAFRGd/lyCRKEspCI65wlU=\nR:client.go\na:0:0:444\nZ:Q1aCIK4PCEuTD/q4M8rYR0AnrikWk=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1ghWH4htx/KfxqDGQuVYguUWffh4=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1U6ww6Ih8XIrE4x8bRp46ckcnQdI=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1+SxM9pqW+u9i5fo7oxbpGn5SoAk=\nR:enums.go\na:0:0:444\nZ:Q1FoHczYn5RzLHHEPx/NctdFeTr4Q=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1lH25H4idQ7vqR32+Kr+3zgCjsQ8=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1lsKb2PfondgclVgIeEls2YMNwLM=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1fRyhthm/5nJqvpeOv9z169l7lXM=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1BpAPLnjFQfeYCwtNiQmnk/zKjEc=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1rigUiKqS0NXJLzEBmTQLmR1UkwI=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1W3IPm3UIGGRySs/jYgMRdeGlOQ4=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1PVkeGTQYKjcpTuVR7HjQuoXCeBA=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1osJ6at2y008ju9OybxiQhLw8lYM=\nR:inboundnatrules.go\na:0:0:444\nZ:Q12w7RYx+rAnaxje3DBgBEhCtgGg0=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1h3AkgiTam2Eb3gDoV8TiTutzoOU=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1m448yRuI6Hd3m82a0RUe6ltB7Dg=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1afXUJj4UCpPrCgR6zxcmhc7hWyk=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1vBqZBShqfRNwGXXluPrhUupBXMM=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q14SwVD0FaF8W6uXe/ugLK78YsdGs=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1bJriFgLYkGbckSDEnhL0XQl2fbA=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1DnNz/kynwnZqRLb4xH3T6Q5DDkU=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1ag50lXcaB37ZWtTQ4WCafp76h4o=\nR:loadbalancers.go\na:0:0:444\nZ:Q1/2EDjnb8wxchVIToCF903gleLGI=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1azJi1fiVgT2TWKoaqnmGWMT16Ws=\nR:models.go\na:0:0:444\nZ:Q13jCyKqa0EG9aRC4oHceop85Yj/g=\nR:operations.go\na:0:0:444\nZ:Q1n6zcBMMfLIZd9eo3SDtmimoinqs=\nR:packetcaptures.go\na:0:0:444\nZ:Q1aXY+J/0SHOgpgpa6daBzWWZGUgo=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1Y89eB45xPABIkAr+hVrZHsN+9lM=\nR:routefilterrules.go\na:0:0:444\nZ:Q1h4Cth6JjSygcFqD7njv5Adnd+Es=\nR:routefilters.go\na:0:0:444\nZ:Q1XesESl4AUvJHJ1OJGM+F/PjqMyA=\nR:routes.go\na:0:0:444\nZ:Q1p1DhwiwDRROdk681OFRHT3BtqrE=\nR:routetables.go\na:0:0:444\nZ:Q1eQsPZxvZ0RJCMvhCGwFKi3eC/w0=\nR:securitygroups.go\na:0:0:444\nZ:Q1QIkzVUCXE9JcA5/Ib1hxe13IkDs=\nR:securityrules.go\na:0:0:444\nZ:Q1azxJm2L0gagucwMWBjuBtU2uJSE=\nR:subnets.go\na:0:0:444\nZ:Q12aDt09kSHp+K6yLxu3a3Eeo4aaQ=\nR:usages.go\na:0:0:444\nZ:Q1EbQlPZNZ+pxcpK47WrgXKDtrFv4=\nR:version.go\na:0:0:444\nZ:Q1a07hl7BCndnAeTQwm+QrWGoAm3U=\nR:virtualhubs.go\na:0:0:444\nZ:Q1qaUvDNyxZMWhBFAKVYGm7MKYhjo=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1um+ozohp8fDCNIbWcuHUG+D0JkA=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1JK9tGQt4+M7jnsIyAvC5I/mu/iw=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q14cB4uRglc5RosLqGZkBYz+jDV1s=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1pMp0uVxEySSBWh7GDywq7+LI0KI=\nR:virtualwans.go\na:0:0:444\nZ:Q11vF5ZFSJihDDh8+tE6pke+PSetQ=\nR:vpnconnections.go\na:0:0:444\nZ:Q1IHZYfFRpei8BNUsR9qG7Us607/k=\nR:vpngateways.go\na:0:0:444\nZ:Q1b7ZSsYirFuIYsd10zeaejlhPD54=\nR:vpnsites.go\na:0:0:444\nZ:Q1rCopjjkHZ9rWE3m7BsP41VWDYyk=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1NgEwykr4QRhsoErGEOyXkse8i9A=\nR:watchers.go\na:0:0:444\nZ:Q1gB+NdcpqnBfWZl5mxrAA5nd4/9Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-06-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11D9T98wjDu4c7BBArausZ5eAmc8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-07-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hniE/pFPH74AoCbV27xglosV7Kk=\nR:applicationgateways.go\na:0:0:444\nZ:Q1UnCAgC4v+z5wpivmDQ1Mo5Xdo7M=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1FNIkjHITDUfWSLlzVN85vjOqS1Y=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1te11D77mnNJGYpREVzZT2ZmJ81I=\nR:azurefirewalls.go\na:0:0:444\nZ:Q15w34nzy9RPX8wmVAwAFODhyeLqk=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1gIe/9sgtmXY5Xq7J4vm2Hfw4nRE=\nR:client.go\na:0:0:444\nZ:Q1yNlOLnTo3PFWZuh1U+vI8X4TsIA=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1L21BNwsTUdKsIXf/SEWxokMI1tY=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1sqaBZE5ES+Mwunlw/D8hL4zs6nM=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1ewY/DFP8lHuURXIuX2bwBmGGnuY=\nR:enums.go\na:0:0:444\nZ:Q1C6/P4iQgCgnE7k2UMzjMm3tQVSc=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1IY04vztC+IipWHYisrEnHwKBjHs=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q11jxGQsQEL8m7I+hramjjVKCLpNk=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1cNMIPN5vlzsN1QDmEc7oDW16Qdk=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1yvGLwb9231QpSw+yWT1vS+YgrYo=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1ny4Wx+oR3z/fBfra1IhKvEMO+V4=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q16sIK7RtKMXse9YU4FKSfpBtNPXU=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1WnIoS0XpdBBlP1GsQvP1YRejrOg=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1X8QJ0OZrZWB3bg9QeoPfXLpK3fY=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1h7MFytborDHKDZ+pxGVukUwqfqk=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q19yAopy9+59PrvxjA3f6TVqJzvnA=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1XA/BnKcgzHljHlJiQO+Dxjs1OZ4=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1eiLR15wt4c9lIxdsjrML2KO1gMQ=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1w5rUkHs8TZhV//TqvWgaaDGiMhQ=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q19Uci8QGiMGNoE6sk/377DuW5vT0=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1VvKp40zpMxMuNu5hZvjpnyFgPb0=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1lPoYsGMmKWJ+shCHeK5g9g9Xe8s=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1qWGbuxmAHwayLqXPlzEJiUHvstE=\nR:loadbalancers.go\na:0:0:444\nZ:Q1e/KMUnCzzzvRier14U4lLbcekdE=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1x2Da39t/9D0Fazx4s8+/sTZ9iuo=\nR:models.go\na:0:0:444\nZ:Q1D3V6Lw0STVQVqvzTBn41TFs4KgY=\nR:operations.go\na:0:0:444\nZ:Q1/N1l400PLXyahruA8+F6lAwQ/NY=\nR:packetcaptures.go\na:0:0:444\nZ:Q1RaDgxgqysUVpNEwvJDefXrXwsQk=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1TThygoag2df+qf84vw0cHoHRfhY=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1CASmYxzk0ecWClnHscmbfhV3y1c=\nR:routefilterrules.go\na:0:0:444\nZ:Q1+DY5wrLES0W1tZM7RianegyhSns=\nR:routefilters.go\na:0:0:444\nZ:Q1+xzulsmiw3o+hSEsur0eq5op0sk=\nR:routes.go\na:0:0:444\nZ:Q1zyRzRXxObNWR/XrmET8CROwpogI=\nR:routetables.go\na:0:0:444\nZ:Q1Rm+i83G1n3kRfvayt28LHgCQJ0w=\nR:securitygroups.go\na:0:0:444\nZ:Q1pmoUyH97DPMDUG5CZsidei8IUO4=\nR:securityrules.go\na:0:0:444\nZ:Q1NwxITlH6ZPwzdeg2JjRUFyBBdLo=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1FISKD5wBNcVSfmHJcOFy4Wr5wN4=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1UrGY6q9OsP8eUAlEHtm2DY1A0uw=\nR:subnets.go\na:0:0:444\nZ:Q1TYDmOMOqVADbP45c3MHdfKMgaGw=\nR:usages.go\na:0:0:444\nZ:Q1E7qGAh3oxOh10Y6kyCwM4IBI7Tc=\nR:version.go\na:0:0:444\nZ:Q1VqEihKB77HuBi4A2By08ib6ew+Q=\nR:virtualhubs.go\na:0:0:444\nZ:Q1JYCOlg6e6U7zxncXra3cVBQM974=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1HRzrIkDVkJlqyJcmxSA2eT6aZLw=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1oRM415PlTrmfd6wfxgIimeqCOSA=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1EYHUCAZGKo5Oplli8MZ9aff53QA=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1KRG8TzPzMP5fKBqcZyImrKKWm1M=\nR:virtualwans.go\na:0:0:444\nZ:Q10Lq2+N2T/HR4M0wPgxZGC+/SgoQ=\nR:vpnconnections.go\na:0:0:444\nZ:Q1RjITyaWzUJqyHhNhp1wRDRm8Pvg=\nR:vpngateways.go\na:0:0:444\nZ:Q1aC1bHR7NnBVRMtSboux3iuHnK9w=\nR:vpnsites.go\na:0:0:444\nZ:Q1iKBOSdgf75BpQZecX2V9gBHDibA=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1y4w5E0QK6KF4EBq9hrxw7wCP6bY=\nR:watchers.go\na:0:0:444\nZ:Q1/um5vBCPoaqT/PEV/ZaUKjD/fWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-07-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1K46cfhpe1iSnh+XWcgGSsd1z71M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-08-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RaPfkZIq+Z3FBY909oIGKjn+t00=\nR:applicationgateways.go\na:0:0:444\nZ:Q1DhuFk4wNtW+7rHKtLQ5TOd7E5wg=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1ys5smZBAV9VIomtjxOHULJe3AU4=\nR:availabledelegations.go\na:0:0:444\nZ:Q1C4x1Dv5YF02PahuWbsQODIu/x/I=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1FZhcpzUFbJOvG7RV8zBa8XQMgEY=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1O2hD+u6Fq98avFc5j8C/AE3koxc=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1fXUQ031tIUxs84FdmP7ONx2arog=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1Zbt5nhNJSLeyfLuIO0Za8hgcmtI=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1U2lB/tUnZieHGIpJfVqgOeflfkY=\nR:client.go\na:0:0:444\nZ:Q1oysHtjZAV70j2iTdwJKHLuVqv5w=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1qjriV4lAA+9BGZsAsdS2TMGEDzY=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1vBJ2vvHDpZ/yrrXv2Lrc+wp4YXE=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1GNfjAz+23NHB1BtukOnLjQbsdHg=\nR:enums.go\na:0:0:444\nZ:Q17OrnAtmF01Clkm4SZ/Vs4CjItxI=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1v9AnG1LppxI6HuFNyfGqpjvuRgo=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1wIvgf54TBssvaevrOdUvG/c3jNY=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1gw5iecAP2lUnzyt5+b28IRmr3KI=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1/6FmqjPLPxTExC5JFGuG6shX2+M=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1wHLHZh6NozJgDmlUMh3iYcTBS8Q=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1jB2/hj7VHA9+Dq/V7IsbfMcFFZQ=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q10QyOghMPXq1gc6dYzg3zFXYj4CA=\nR:expressroutegateways.go\na:0:0:444\nZ:Q11guTKPRRQhIyLpPEp6eeiIBMWW4=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1NnJ+2kjl2TPh66wtGoq4/vM0HV4=\nR:expressrouteports.go\na:0:0:444\nZ:Q13ATXPVjQHJWOGXTSC0oHkoSBX6M=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q17uWMt6SLRvWfzKw2D+Fy1Q5vBlE=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q12A2a6ahyGy/eXgcllhZonKC4jPM=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q18fkDpdIiqyK5ooGHEtitbPzGwJk=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1kcBNR00WM8Gh4W6wGDbfXxq78UM=\nR:interfaceendpoints.go\na:0:0:444\nZ:Q1RIPZ9R+bHzpuS9DmDVStoaOx6sA=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1OtJDAN+CsUgsZHY7AazkX6Dm7I8=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1MfSBweQzKDbUsudCjW9Dhoda7NE=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1/X2eQoPMZlAPl13JWHz5DdwJAdg=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q15bfqQrNRAEPHvetjbKYO3culKHU=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1+QQWxAr57Jf8Orgwp994e6MZ4MM=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1UlWobL6AYauLTfV1XpiY3NeLYgU=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1Uza4YX5xg+rRPifLG5i4ihNjtLA=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q16dVpY+LTn5+1R/xBaVBcICZLKxw=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1iYK0T88/lDnY9oLuBb3jNkTObAE=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1iIfxLz0sLvPuxCF0Z2W5fR8Y1N0=\nR:loadbalancers.go\na:0:0:444\nZ:Q1Y4X8cIFh+7QLjahjUfM4gV1KRm8=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1b/1/vNYd0UlLBKUBkXa1bkbud8g=\nR:models.go\na:0:0:444\nZ:Q1aQwvYx9fhGRZLqQDZHws0HRP3XM=\nR:operations.go\na:0:0:444\nZ:Q1ryVrH+tanWR/Srnt9lbufvSeGKk=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1u/Wrv4/oOvrM/vXzR9sW7DVPimk=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1o2v4y/SanSqGi9DTEhamCdsLeGs=\nR:packetcaptures.go\na:0:0:444\nZ:Q19JsjYkQtK1hGXz/Pyz8d0S2wH0A=\nR:profiles.go\na:0:0:444\nZ:Q1dC4lm/oNOZjrVF7R23qcmxh0Q3M=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1qHkUdE4vf51/SzgEstKArxmGsG4=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1F7RN1Dai1X64l2pM35AGr6iBphg=\nR:routefilterrules.go\na:0:0:444\nZ:Q1wuUOTmYsx0vePwjveKrGPXoVqJQ=\nR:routefilters.go\na:0:0:444\nZ:Q1JA/eXga/uVteITnT26t7lxEeCeo=\nR:routes.go\na:0:0:444\nZ:Q1l2ALZ8aEKM2AqGs9jO8E4xnGVrs=\nR:routetables.go\na:0:0:444\nZ:Q1sIv5c1CvyNg2m2WgNXEjCLz17oQ=\nR:securitygroups.go\na:0:0:444\nZ:Q1O2mS3p2ys6le42DjD8j5xJzJ2e8=\nR:securityrules.go\na:0:0:444\nZ:Q1cXxQSVUAD17KTQrrhI17PqSdKGo=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1sPNmA8KMCs6ujW1b3KUjjwUGqdY=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1CzQ+areuI2+nBVC/mh5BJQsbBQU=\nR:subnets.go\na:0:0:444\nZ:Q1jdtQyEIgzCoUdPvcVi2Nu38POX8=\nR:usages.go\na:0:0:444\nZ:Q1+ggGyO8CSzdJxAcFd95wxyhukSE=\nR:version.go\na:0:0:444\nZ:Q1lRXg6kovF0hIDA/Q4fgCTYKh44E=\nR:virtualhubs.go\na:0:0:444\nZ:Q1yhSQHoTgT15MCetfYKckPJLlDqw=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1AO9Br46zLJB9hW3oZVUDTFSaIE0=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q10xcVcmYcqJshlEQxX9ZK26uKAvM=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1BeIZK1f+9Qb65nF9Lkn+roe0fIc=\nR:virtualnetworks.go\na:0:0:444\nZ:Q16ebx5poyUdoM+SfOKXNeGpJk9uY=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1RRgLvBmr69eWuEG2kK25JFrNZ/Q=\nR:virtualwans.go\na:0:0:444\nZ:Q1o0cQ+dBATKxuAYfYuwnjoAs87B8=\nR:vpnconnections.go\na:0:0:444\nZ:Q141+vFO6dQhXnQpkpWy/Ujh13l74=\nR:vpngateways.go\na:0:0:444\nZ:Q1QZse6pIni99667622kH2FqzsytI=\nR:vpnsites.go\na:0:0:444\nZ:Q16Kdh1hEkdHisOTRXFFxnnL4U0CI=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1LB2mmVXSiIcNOoUvKy73XRJzWNY=\nR:watchers.go\na:0:0:444\nZ:Q1lfsUgkzTh8l09S2EbIisfP1wZ9c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-08-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q154MeB1P5A+7PTWo4ej98ak838Rc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-10-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11kEN+csuRcS9zHyxy1yKC9PJEH0=\nR:applicationgateways.go\na:0:0:444\nZ:Q1nentPBTKG3CcA9FvpdccAzQBwwM=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1Mao414PmIuGMuMMlQXdRBKau4EY=\nR:availabledelegations.go\na:0:0:444\nZ:Q1OylkJi6buOwrScEdMR2ZO/83XbQ=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1Bv6MTGcvU97SUkv23iZcCmo11ak=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1ijTcPAKCh1kb0Lowcdgy1kAWtpk=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1UMDtw2HpSw1h0/AEEkBawWZm0Hk=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1xwU6nweA9Hjnks4abZDH9rEeRWI=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1kkl43/ORXfpCD5JWLl0bzdnF1Qk=\nR:client.go\na:0:0:444\nZ:Q1TJNhRGjUIHskC+XhO1ddLEKqVHE=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1iQ0w1Jm7ar5JG7t2kdG/e2gRPY4=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q10tHAuGOaGNmzFkdEubMmXRX6En8=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1RFXAzf535XX0oWOjwuO7ahg82+E=\nR:enums.go\na:0:0:444\nZ:Q1XiI0362Xw8PeA7VXHVfMx+VZrVw=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1BboluRN6wgXO/yLkorjZnMdq0yk=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1nCtKcri1DJqWGGjBfySh3QbsHnU=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1LxE6AediO0AJqpY6gcDnoi0I7QU=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1vhfhl9a2rIUFebeIEscKiH2S7go=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1RV3pnLQNMHD3IkCpi09MLNCLuGg=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q10VVuiF+OALG57CoBH8IMJnwl9xY=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1o1zDRt18uc9QOEiEt2u/YjXOWxY=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1qv75HyqyTISkvCK4uDLwA9v8VBk=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1IzxlMBqK6pds+5CBdiIdZNAWwwY=\nR:expressrouteports.go\na:0:0:444\nZ:Q157XbGoP6PgMYuhI0bj5EhEm4MdU=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1R/CYvUPfE9ErAaahRXajpdUW+Ns=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q10d2XlMrOno+5kD2a/OtJAt2G5Gs=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q129gHNQSH7smb83nuJpU9G3zTkhQ=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1eAlIVakdpYwvEduU8XTXrDjusDU=\nR:interfaceendpoints.go\na:0:0:444\nZ:Q1oN9YrgvJhBUy4MubZuOStoOYDXg=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1MXBc1yWv/sawjtlLdKyo8LiRJR0=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1/pcXrP5SdvWYPSflV1qfGMysHqQ=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1F3+2mCmueO1623fudlaXK0rAM88=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1UQPS899xyBkBu9lTPblKTcMHGD8=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1pp2LmIINVLteXw198J34kW80AMU=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1ci5PuJO81aGj+H/Pr9hpgysOqzI=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1BdFNtCaxm0Jgm16CuOhn3qTUXak=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q19+utyoeHxEgPGvF6Amy5v9bc2Jc=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1DudoRKdIyBfECow4uYPVaBZY+DE=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1EP1Q75zj9PsK7PMY17KZXYDwH2A=\nR:loadbalancers.go\na:0:0:444\nZ:Q1wFQV2NujW0DPoQKoX5dBEKJCqYU=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1InL6SHdz/CfcoaBgIazPglbI/RU=\nR:models.go\na:0:0:444\nZ:Q1HZsjGfu7Y3ehWqMCa/xQy4LDLYk=\nR:operations.go\na:0:0:444\nZ:Q1hCpow4l/yMNDLb0uu8/cUjKkM1M=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1iUnl8yRT8mwjdg6G1Taol+yQuA8=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1U4DuznmgVqKH0fBeKiVLi15OQuQ=\nR:packetcaptures.go\na:0:0:444\nZ:Q1dAY/QPllk4UDX6NDs7ZIGHPfGGI=\nR:profiles.go\na:0:0:444\nZ:Q1SaqdNp3GXEQFm3ageE/FmEBkqB0=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1qIq93phOuA8sJ96zDS0yVKzvxCw=\nR:publicipprefixes.go\na:0:0:444\nZ:Q15NWofoZxm0a+ucesu+PufswrUc0=\nR:routefilterrules.go\na:0:0:444\nZ:Q1Lx1oWguDoeOUn/zxGkgqh0WqivI=\nR:routefilters.go\na:0:0:444\nZ:Q15IhiHKFCO3mOakhUoOvK65zkKH0=\nR:routes.go\na:0:0:444\nZ:Q1php9bVb8SIT4RNnf1eCZtVVc3mo=\nR:routetables.go\na:0:0:444\nZ:Q1FnnGamIAof4jTLoX+FgbjyeGdLQ=\nR:securitygroups.go\na:0:0:444\nZ:Q1bPsq7s87OPfg+JtENC7sYoWP9sI=\nR:securityrules.go\na:0:0:444\nZ:Q1KjkNYWWvpczGQ0slgSpHIcTuvjg=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1trJMvTR4vcMiIfzirHCk8b4xTZY=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q16LZCwgEhRseimwrKdhzU5Ihng2A=\nR:subnets.go\na:0:0:444\nZ:Q1EQ4n9u9g5VFeiPy0p2REDFfQicU=\nR:usages.go\na:0:0:444\nZ:Q1JWFvtapT+K+Q5QbVaCErfwxOlew=\nR:version.go\na:0:0:444\nZ:Q1+ADwfAZwNGv8/rwPr4RukJLlARM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1btbW/JWMyy992IiFU3zd1Fr50ZU=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1tytFXMNy/JtlU8ChxmxGGJ1cpkk=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1wCbaEnDhsulK9ysCWyAk/oqkKRA=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1hGy+WkUT6T0bQUY8CYxRORRMAaY=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1wOxQlbbcQcKarWIJN+U0yKNd2rQ=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q16mVITKnOokUtkqPZ5vMj2sdz4UM=\nR:virtualwans.go\na:0:0:444\nZ:Q1iRgmnEjOaG8kL2s8/k+ftTQNuWg=\nR:vpnconnections.go\na:0:0:444\nZ:Q1L8vR/BC+o6IV7T9zOBSCNBOt2SI=\nR:vpngateways.go\na:0:0:444\nZ:Q1ft0nV4sKmByQadAbWH0p/E+9ob0=\nR:vpnsites.go\na:0:0:444\nZ:Q19LtnP+gh35gF/vee9SjcTYXXB/U=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1ojI1oeu+8+WkYdYjecyhI6p+zdk=\nR:watchers.go\na:0:0:444\nZ:Q1dhKQErPUVC3dMnFoTWXHbd1bbfQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-10-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17CRoZVhoWieYV2rlrQdmu+C/XEo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-11-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1finpSBAB3QfOjQx6U7DbEKo0RdM=\nR:applicationgateways.go\na:0:0:444\nZ:Q1O64OnCPDzhXlJjbSuP2RtRC7+wA=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1x8tEuZuX3LLrDBYi3oqBk0/uwKo=\nR:availabledelegations.go\na:0:0:444\nZ:Q1BWkM3cjHdTcQeZ6OxXOI0Pd02RM=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1l/k00ol9VQ3FjPBp01PPYh5deWQ=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1gvbVAIewj5yL1sRWjrzC+CGcM78=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1dnrvlyp3GRnx4HDHYF+Yo0IgJAQ=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1MytbF96Vo2DHNkCtry/lL4YFYsM=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q10LA6AE4CsLTOCuMEVb8mLV4Vum8=\nR:client.go\na:0:0:444\nZ:Q1flfbUVD/wQjtXt6D+BZssq+fGKQ=\nR:connectionmonitors.go\na:0:0:444\nZ:Q12B27jA3nDcI0OHGd95vzmr5unBw=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1uiIqMjgRUUp8VpSTsMDXCNByc3c=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1/VKSoBIvd6f/07Frv3sE+ANPJRQ=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1d3aMLjEHPN37m3xyW3Glekqs4p4=\nR:enums.go\na:0:0:444\nZ:Q1AcX8pYLkQu62Pv7wQNBeACKaT5U=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1kojKdEjxnSYJXk5JCX7bOfG6wIk=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1JwnFHNbw3QNW49zvI0KJMaXLeNE=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1YxfUs5x0UdzCBz/cUpycSg9CV3Y=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q19qy9XLDZfff1r9M3C+cO+90mEqE=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1BNOjTKQEGduDadBmpYnuGas2zdY=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q19ibU52G9fph8nVE1eaikDen7nuc=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1U7BLD+XI1xPqkiUhxB2tQ/0s/ak=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1pmUAozlKm8ICx7tD8nUxK1JkU+M=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1dn2dkZT8l7gE6jy7A+7La86CDNU=\nR:expressrouteports.go\na:0:0:444\nZ:Q1lvX7S9PtoszPfsLLk0xfP8Vy3Jk=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1tU+VeHR9D5ZJrJP971FaSLe5F4g=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1Cz2PqLzc/N39EVXmo3S76GUh6fQ=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1ZIjV+p6Q1aTz1RvBDiQJYCRmolI=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1vBbaiYrSpHgbmpsIAZJbAZZT1Ds=\nR:interfaceendpoints.go\na:0:0:444\nZ:Q1cVjm+N0N+QknVf7vhbFECi9sF4A=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1gC7HrlKAgBmPrGvvJJFdE/25shM=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1LKzx+4sNDrkRA8TQrs7HgTBZQlo=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1BOdqwBouo7+K+eBxVtH6USM5vR8=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1nV1a1fCckR92U47J3tVwKoOVgKE=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q11YnCR/z5yZ7PJfA9O2/lISDS3ko=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1XmwQkV9/ZmAvmvZ+E3kMrveTWzM=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1WBRAjwruR9mP/IsOOrYfTXw9XDI=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1z81CdN1azZkEOIKFOUW1f9OVxCc=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1Dqdq08ogmU7Ab6YXh7E1pZUgeNE=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1VRHBLBi61/4453gPQ2xhUiNn9IQ=\nR:loadbalancers.go\na:0:0:444\nZ:Q1yiKKEIeZYzKGd09OiY9dv+JtSDM=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1AbOHRizqrBWGWLFiKuN5EffLoqE=\nR:models.go\na:0:0:444\nZ:Q1OP5zfTfH6AKjayCQLn4hCzbYAk0=\nR:operations.go\na:0:0:444\nZ:Q1LiafCpXpLSDiF6JEtoqmA8k9m4U=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1KGA8CHoL11B6yYYVIAC6QgGTdLI=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1Fjw2WufppLM9di+eEDS6t3v5GWE=\nR:packetcaptures.go\na:0:0:444\nZ:Q1MnxLB3Gv75IcdOl4fvwoNt5+CsM=\nR:profiles.go\na:0:0:444\nZ:Q17rRatOpmuMTnnzQQrD15izwKNYQ=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1vo92r7Mg2UWi0CEtmL/nGeRZjIk=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1StbvvUebq7uwmVso5l576ARu+AA=\nR:routefilterrules.go\na:0:0:444\nZ:Q1rfL38c8bgZ7f3StSsQgVJypx4tQ=\nR:routefilters.go\na:0:0:444\nZ:Q1xZLOXjMVNlQYR4vvix9dFVJn5IM=\nR:routes.go\na:0:0:444\nZ:Q17eIIyRAI5QfQ4bXuG7lu1R5TrZk=\nR:routetables.go\na:0:0:444\nZ:Q1zKQ0vYIrFH0RgqYj/IqMTKWX3P4=\nR:securitygroups.go\na:0:0:444\nZ:Q1F9aFinJkFlCXUqTtA8IZp8tdDVg=\nR:securityrules.go\na:0:0:444\nZ:Q1JRQlCOe/DkfvbKoy2cF5fZlXSqw=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1etS6RkYebZzByADrHLUwEeza6N0=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1O+HfWkVT5EbGFj67To3+hbX+0MA=\nR:subnets.go\na:0:0:444\nZ:Q1OB/GSIcix7X0uYlTy3VrUGLXRIw=\nR:usages.go\na:0:0:444\nZ:Q1bKEALFu3fSqSgoAY1cx0gPOUJHA=\nR:version.go\na:0:0:444\nZ:Q1icY2mGILpUs4BS+rUhJxg3riNoA=\nR:virtualhubs.go\na:0:0:444\nZ:Q1682KC4/ceLMMVzRsHKVR9ifUUVU=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1/13OL/0p9zXhuTpx3Ab70C5Kn1g=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q17S6Frlk2xcVwHHxC/1zDOCoGHcw=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1XN2GraQpuoNPDvdhT44vBzZ6WrY=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1Q8785DT6KlLc0Uvt5ZjRR2vVY4k=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1y5njl6q4s6M3N+5WYgZmTPfNYHA=\nR:virtualwans.go\na:0:0:444\nZ:Q1Aoi/VO21/a8l9CB26yZDpJq5rXA=\nR:vpnconnections.go\na:0:0:444\nZ:Q1weleo6223Zt1OZmrYwHWTxLz4vQ=\nR:vpngateways.go\na:0:0:444\nZ:Q1yT0znsJXGQWBJnXGfM4LZjRZwuE=\nR:vpnsites.go\na:0:0:444\nZ:Q1wGX9TWRZRxSl3O5Z7L7AK+NXrxc=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1xcuOnkZ48VQaZBM6t0jfDlZS+lM=\nR:watchers.go\na:0:0:444\nZ:Q1YaD9eZHWvXIIXwwCiu7hX7tRqUM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-11-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1f2RAS4DL9m231l2ZCbgCH4D0Zms=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-12-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nf/BsluIlsdh4dpST11LkQh7AzM=\nR:applicationgateways.go\na:0:0:444\nZ:Q1DIZQ9g/j2F0t73ISiSNC9M+Z1XA=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q18cSmqqbm8bLuUT8XDgwvF8gWuGk=\nR:availabledelegations.go\na:0:0:444\nZ:Q1nFy184VJCp+olcByNo3+5FGuB0s=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1VEBV+wTWuDHKhf5vuUTC8pKj/ZY=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1mysF8YINSGbVFEwe48K8UHkDeFM=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1Or11RkxVSgL8u/owqZ3d0tMB/Zc=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1jjVbGJ1YwypljNi9U1No4JYE3ig=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1DqDTR8zmkSykhZe0oIUhhh1QaG0=\nR:client.go\na:0:0:444\nZ:Q1VbNSKth+mkD7YUxiua0wIPPp6sU=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1tWKE/RRrxL49lCrNKo8TyqTRQr0=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q19ZTzATbNzelZdKGxoGvkY/XNFoM=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1d+MEaYpgEEZVCj5tXXAMC1xtCD0=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1zDNuiXmF7V8MqsvuLCVxfANPAYw=\nR:enums.go\na:0:0:444\nZ:Q19zNj+tCYtRzFGPeYywdxN99f8B0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q178G61zgkPzaOl+Nmr1G/sX+Y7mc=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1lrl/gcEaYJ6Xzk4/J3LmYt0s0a8=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1LfNDV95YL/85IvOkO/nJHRRjNlQ=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1C4IooXgtEJOkFQYbkyx4igNUjy4=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1l27jCwNvnGK5XV+RPwDI9WScOOQ=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1egx4OvPtpIhMSNkMsfUIVmJiZ2Q=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1XnMSLz5P8NOtRyzejzYSpSQBjAE=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1tYgQHqdrxpSVp9oB1z9roXCN6yk=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1t5CEqzPmRwrrmd2hNVo8rpNef5c=\nR:expressrouteports.go\na:0:0:444\nZ:Q1bjXEnFY3wyASBVrHSnBZliGV7NM=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1g0+uY2p25KFBMcO1RHMRcKphtdI=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q13T4GpQm79lVTs1CHKXoD1ngJsec=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1wFitrj8tqNBo51pr5HcmIFbhlDE=\nR:inboundnatrules.go\na:0:0:444\nZ:Q11J9Akby/EcNpLyhuNqsnAQBcA28=\nR:interfaceendpoints.go\na:0:0:444\nZ:Q1B5pwhu1DhQ1PFGVxaHRbyChJYA4=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q17XmRkTthMXeYpzYaqxYQYpkejxI=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1Rt9v5G84fQ6KTTiy2eZpnlWSUjY=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1Nro3wnsQd82dxPtLvSyFAdwGW7o=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1bjmC5J+BM/mvCrxaLpbQdrzvfGA=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1QzwOvfaUcWr09nvOHoL4EHTBjrE=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1HGGNYhb2v28zjbwSONLxpCp1qkY=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1rVToaLtEzHTB6doVCvnuu1m+WN4=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1IRFBXWl0RnnHBPgk5GfavQJHZQU=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q16ZcmHv3AVafA7unzmrPwLcINd/0=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1agsLvZcLGRjChmo+YR7bwrPd9nE=\nR:loadbalancers.go\na:0:0:444\nZ:Q1ywit5j3+FqxihvnfeCkh9JTWTxw=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1BOpfHLz4jb++cyQqa7EVZnpsBTk=\nR:models.go\na:0:0:444\nZ:Q1TEb5eDX0ceiDutD72cGyCl0RQkc=\nR:operations.go\na:0:0:444\nZ:Q1K8O/g3T6IpViR1vuILO0+8OeNQ0=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1jxNDAxVhGEySUWDTgcuStmRlvmI=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q11luxqpnVpQdBfOInXEv9lzwZnIc=\nR:packetcaptures.go\na:0:0:444\nZ:Q1nbBJ2Uu5q3UPNyf5m6dM+8+pJss=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1YB16LSaI9NgmCgNEtJieM968K2s=\nR:profiles.go\na:0:0:444\nZ:Q1BYqpzsBqzgFq8RWRM6iXzy92XT8=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1wiUIrBgGQmDmUz0vAl52JHi9lC8=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1DQoR/8DguL9TmJRVm3tsH3ujNBE=\nR:routefilterrules.go\na:0:0:444\nZ:Q1yD2+sCQS/O8JbK5rrQp1umqawNI=\nR:routefilters.go\na:0:0:444\nZ:Q1WjLclBK0XqIarUClUwpeTuE86Zk=\nR:routes.go\na:0:0:444\nZ:Q1VmI3tPk1r0F2ZFWBWvmgAkvQNGg=\nR:routetables.go\na:0:0:444\nZ:Q1kXslQWUKfClC6wOEhiNp8VgFBXU=\nR:securitygroups.go\na:0:0:444\nZ:Q1441oZeEynwAH9LeAEdUhk+uaX8I=\nR:securityrules.go\na:0:0:444\nZ:Q1r3UASTA5JuCI5omknlvwrs1139g=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q14AJddEImpS0V8ORc3xPq7WSYfcE=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1tPRq3i3NnsIAf1Dolf51xg1A9iM=\nR:subnets.go\na:0:0:444\nZ:Q1G1HGlXoB1GJsl+7/WZhZw8kHyBU=\nR:usages.go\na:0:0:444\nZ:Q1BVvyqLgkLFIoNHdXf+nYkFCdv44=\nR:version.go\na:0:0:444\nZ:Q1dzH2qTbJs4gyKqXNAE1JNWSvcOM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1XgInlnk+8UsQNhND4ph7h1wFQU4=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1nfOdxgNByH7ZnKg/zzMzvaJ7EY0=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1bSP5zGh9jY7ZOxFqdh4p/qhTnko=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1vXngets2peLL96kypAsp4WBxeNI=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1h9PcxJWi2Rv+kEkwUgYWCXw91EE=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q14dGry58PAAFk6V4q++92SxHG56k=\nR:virtualwans.go\na:0:0:444\nZ:Q1WePeyrs3+6hGIsCttQDGIOVvHcA=\nR:vpnconnections.go\na:0:0:444\nZ:Q1W4VF8adpB5VZfD3Dcdn6j0vMZy0=\nR:vpngateways.go\na:0:0:444\nZ:Q11XSRKk0VfNUvvPIU4D0AcEYIV9Y=\nR:vpnsites.go\na:0:0:444\nZ:Q1DIeXkuobPVakk0/mzoSnoFAJEVo=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1HmssATUGlEmVuxe9B7oz4fndD00=\nR:watchers.go\na:0:0:444\nZ:Q1BkaTGXCaid09Ac3C8ahUE789NVw=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1Pe0BHDeJ1gX5fXjV4IvafrNOEwg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2018-12-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KKDfBI8l84V/GrnOkNTB0jKQRMg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-02-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1oLVxgRVcHz5oo1lWM75gkswI6z0=\nR:applicationgateways.go\na:0:0:444\nZ:Q1vb02Nj/fi+3E5z74jvxe2B8/CVQ=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1XL8Lh8brhDxhf+0qL42si/wimmk=\nR:availabledelegations.go\na:0:0:444\nZ:Q1G0Ewfo4bQCoANbFgaGSLyevLs78=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1rcsKhbejS7tnU+GK2bgTn61lP0s=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1J/ombWQOcyolSx+keyroKIFtyP8=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1YPOK3jXGzz+rrLWZYsvVlQrD6qo=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1tAYhHg39mwAcQUns0G+xgs2rWkQ=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1oNVObUO1erTJOwA/dOO4MJfx9Uc=\nR:client.go\na:0:0:444\nZ:Q1K5THnW9W9guSqWxU0zBbYcIM99E=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1Yjal4DsDilTFR9lmu4z2bnlZbpc=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1e0Ck+VwU49j2NBwjehNueX8cD0g=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1q/0PeahOEC39wThkxEM4eQb434A=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1M6Gp0OcimvwerdnSCJ7X/Eq4uCc=\nR:enums.go\na:0:0:444\nZ:Q1981rizScHSmP8uuoSMXzsy2EjRM=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1sX5z1UGSSte95ztlzxMPk6yXxOM=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1YQEz15IliMOvH5rlIMDTQ3ZPw9M=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q19g+/eYS/lpfOQz7xZbUibGaXmvc=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1MlDdYUAlA0aOYMHRPvpQNwMSTEQ=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1GtVr3gntLpmFikB9umDQi0MQyVw=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1fS/FyTSoBQjs6f7y31sn9BJksvI=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1ni4wsL7SWs1hODZQBgwRsYbt1rk=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1686xSkA8bnlAWhZmNdndG1elN0s=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1btr0CrQRBl7Gn7pH7phAkO/GD8Y=\nR:expressrouteports.go\na:0:0:444\nZ:Q1SpiBIPNz5Wpg+m1cPVnzsMm3Q5U=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1kM7yhdy5UpCJi2hymq4jwtDT+8o=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1k1ViGWffw8XsuLaypEc9Vc8C+oQ=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1rnnBr3IxklM22lw5OBY6w2uQLFY=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1Ak9DQoLcXYwgW5mS4DVw8z0EniE=\nR:interfaceendpoints.go\na:0:0:444\nZ:Q19GzUADYWef6QftIa6HLMPD7/dgU=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1r1wabWdvb/40h96IQaMgBMVz3zg=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1JVMwJMGqRmi+bNWT2P7D3ur1B3A=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1wO9E5AaEw2o4usXotIZCT8rWGFU=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1maRNDvAU+lVvRtodlREzWoRPpfY=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1v9ya8TWxfzx6E+Lqh/nXvOjvJPg=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1iD4UT+f6akOGFAg+BxuBBDaEfIg=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1qVSuk35Z/PL1sQBryrcWIUvMv/I=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1aR3RsWGZGjNhQweoidlay+yT56Y=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1OWmQ7WHJGdLXUyZgYT1CC/RWBPs=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1f6a0iFIJ6uz/q44Fxv4ZIBTyp0A=\nR:loadbalancers.go\na:0:0:444\nZ:Q15ni+7lJ8ZGwjfU3xwQeGiZzOC+4=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1X4a+I2l9P8tWSpxqSQkd5M1Js+s=\nR:models.go\na:0:0:444\nZ:Q1DYq3MMmqjybZ5ikgTP0hthMUP+M=\nR:natgateways.go\na:0:0:444\nZ:Q1Y7UIsFmuz4J+PuRNohPnBGiuU/Y=\nR:operations.go\na:0:0:444\nZ:Q1OTIaMlijDpZBxX3IaOc9UfLImQY=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1J0zS8VqAqIEEjyI0Zs/iZjE5ChM=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1H4iDaQ/1/rmISzGQT15CGaECuBg=\nR:packetcaptures.go\na:0:0:444\nZ:Q1hfNLTTJFVnjyr0BVQD+jsxnvezM=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1ohQy97xK0+Ubfr0UnonGwTrfNr0=\nR:profiles.go\na:0:0:444\nZ:Q17Jj5mOcCPMmNd/TfrfSupbDSXsQ=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1pp6B1mRRzoCEXmhwc8jZt9eEpI0=\nR:publicipprefixes.go\na:0:0:444\nZ:Q13cEcfHKC0XCgBqcdSfGZB9kUMQw=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q190lE8yLVIHYBUyg8rmMyYWM2Fys=\nR:routefilterrules.go\na:0:0:444\nZ:Q1PqNIRy24sxdj/dj3JAdZQUOZ7XM=\nR:routefilters.go\na:0:0:444\nZ:Q1g/hZ6/sE+KH0TpVP46YDDSQKHDA=\nR:routes.go\na:0:0:444\nZ:Q1Dy3nTz25jXVsOGqmtg/mk9gX82g=\nR:routetables.go\na:0:0:444\nZ:Q1Zt1ZMZ8d49l2b7Gr98xb/drMrCM=\nR:securitygroups.go\na:0:0:444\nZ:Q1rZwZLkYMU41yDTiBaJQu0GmDY2U=\nR:securityrules.go\na:0:0:444\nZ:Q1cVXMOFHm9uKrIOJ6VSO+VOJEN/Q=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1seTDTpSrmN4KBNhABBfDWaW6bmY=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1pMtXzPVPeaQNQE3WiHqjYata8Yc=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1ZRIw7F3mE4XtGSi7QO5EBg7Y/wQ=\nR:subnets.go\na:0:0:444\nZ:Q1JAPk2TtTO0DnKrR6DMyxH0EBg6U=\nR:usages.go\na:0:0:444\nZ:Q1GToDfJcBdeXl9VXD16f7SYaAK6Q=\nR:version.go\na:0:0:444\nZ:Q1OeG0M88ag09pvHGfaKQ2UiHLIAM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1CqSQXFAsJoQMMi5AW9JetIV0s68=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1DL7ydc74PN4VugnX2QxRCVldCWk=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1sxFKStWn8dj8fsuhmDrrlaU3V6g=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1aCByEAy1udARGyJ/3ujjEzR8de0=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1bDA46BHHSsfy95vMYRsk9f/uHOQ=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1mgi2dG2QiODJQt3f7jrqDeSYHfw=\nR:virtualwans.go\na:0:0:444\nZ:Q1oTVgHZnB9b1PPWW5bIcTsTaGF+0=\nR:vpnconnections.go\na:0:0:444\nZ:Q1mbtIBwtmTLtsv4vD6D76fbTa5/o=\nR:vpngateways.go\na:0:0:444\nZ:Q1cmYVXBhMgYJirKrSHC5uA36L788=\nR:vpnsites.go\na:0:0:444\nZ:Q1ExbB8E/TgbhSlM+FiM3L248m6F0=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1j4HRYDQFa3JWeCgSRRBD56/LSNk=\nR:watchers.go\na:0:0:444\nZ:Q1twPphHgfh3wgjpo3LURL38+Mi3A=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q17S8e68MkspsSoBG/WTBrnY3s28w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-02-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/gBNyalC59BzPg+/tVjM7ckhMao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-04-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q115GtAIUQVVM4lezx2lfPaobEY68=\nR:applicationgateways.go\na:0:0:444\nZ:Q1BFcUi7sV97onqoP/kxGv635COi4=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q18m4T5a/CnSXcz02HI44+T4ln/fU=\nR:availabledelegations.go\na:0:0:444\nZ:Q1wxa3ECa/jVqgzHrj8rXnMWQ7WJE=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1UylXZ/KH/t1wFDHtfpsgGb2n/Kg=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1osgIL4Pn7RzXskeU3ZYKaPEnvwk=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1VNit2rti7BaviIEhfsMgoSBXwXc=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q12+/rXaI07toSEC06xCMEiGljZP4=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1dMqDuvdM5CtmDIgoUWR1m+4l75A=\nR:bastionhosts.go\na:0:0:444\nZ:Q1KbzTTgdEZ4fPnTRVKVM7VAMbPgc=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1l5aoD1Hz4/QAFTESnTOHTKlbs54=\nR:client.go\na:0:0:444\nZ:Q1B6ZQTwRPmbN4rFb6B14naeI2ClA=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1Jz7Sf4qqQyJxgu6a15ApDOkdmRk=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1Wjkn9l7JCrYhlYIBb+boTbqdlSY=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1aS7IQfG4L7TDZuQw/x+Pj3Jlydo=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1RyxgAORkxCXs1elFRZmzhhhWneQ=\nR:enums.go\na:0:0:444\nZ:Q1981rizScHSmP8uuoSMXzsy2EjRM=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1l1Tf3+Wf6nZFRavfK6EHCNpVi2g=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1eHJWIsL79fABpbC6dY2iJZc60p4=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1r+Pz/7qrBqr3XxwqcalRwuraoAU=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1gye9IchIgD69N4z2mumH7bTgUGQ=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1fNhD3xWZzC5NUnoLeGfwmoIOarA=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1/ELJ3GzgwSg9uZitlA+l/iG0kso=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1LdIbS3pDDSlFY8yQXBHRy0cVk4o=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1wu5poTq23E4macGa0TMRQHufaSg=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1K+wf3p8mXpYDAi4bWw6tzSOJ1hQ=\nR:expressrouteports.go\na:0:0:444\nZ:Q1fWTAMZUm6IhVYOK2/vBnyJq7zEk=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1Tgzb+/RzUTUBmDbbZbb70AaV7M0=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1YF0nXRX9NxSuJR3+FmXfNHvhM/w=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q19mk5NxGgJDdi5AHzze+7TGPfGKI=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1qM98JWnj17hh+QxfhTs2gfiRF6w=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1BoZfO4BNoiO958xMt7eQmmGLbOE=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1E0kgkZCWsZLg8qpL/v2r2FERovU=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1hGhGptMadZ6e7TcYpbTN3jRvQkk=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1F1SswTN9GmercILFoXEV/jBgH24=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q14IH4HwNxUf3GRerEkcfeGnKSsf8=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1De1pbC38fLefN//X52aoVe9HUgE=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1Ll9pM2pnZ0WjZHAQ3hBCIyCy60Q=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1VdzSxBBk5sCpM3ErvhTePA+vYHs=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1mkFvZxI7q6a20IIH13KyAa3g6r4=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1SdxaCne9cYyuAePYrk1VVQxWfpw=\nR:loadbalancers.go\na:0:0:444\nZ:Q1TOVU1rxUkLX044nNcJQVroxzuc8=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q104hoJFOsIhhdacdLCkqyQ8TsQrw=\nR:models.go\na:0:0:444\nZ:Q1mUyzFeM7PfIc0XARIdP9n79dXHs=\nR:natgateways.go\na:0:0:444\nZ:Q19W3iFrnRDxqzeRMp2rxH+0XeSiU=\nR:operations.go\na:0:0:444\nZ:Q1eXdM+5XawjUX8h7Re0GxiCpC0rc=\nR:p2svpngateways.go\na:0:0:444\nZ:Q19WtKEwlBVKxzLTEFGxMoPacFvjs=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1CjZjb3uwTBEGfDrxWzKdqOuxXls=\nR:packetcaptures.go\na:0:0:444\nZ:Q1tGnjMJBIipnoqNclesqe1IplGj8=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1zGZzKH/Lpp7Lx2ldUB3Tw4DL5OE=\nR:privateendpoints.go\na:0:0:444\nZ:Q1tFKRwHzwxDfIC5SM+NilKUQFhPI=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1Up2ofd/jdYcwMqGHr+paCpG5SPs=\nR:profiles.go\na:0:0:444\nZ:Q1y4ZTJtGuE8QYHXcXkx0eG9RZR2c=\nR:publicipaddresses.go\na:0:0:444\nZ:Q17pI1oIRCd1aVATCtKOPozvYL4Jk=\nR:publicipprefixes.go\na:0:0:444\nZ:Q15J5i7X0Vg56k+pYZ2H6dHLYYVP8=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1oqM2D/RQQ0l1nNiVcDajtE55CEo=\nR:routefilterrules.go\na:0:0:444\nZ:Q1CaZS34TSpcFNrp/uGeDwVemTR68=\nR:routefilters.go\na:0:0:444\nZ:Q1n9OS0IATBhychofQrdhQAHaqSdU=\nR:routes.go\na:0:0:444\nZ:Q1d2AZr+CdByouej/XpF9bzT5NPF0=\nR:routetables.go\na:0:0:444\nZ:Q1+BKLfya/k9OBNO/tFKGixYnMUGk=\nR:securitygroups.go\na:0:0:444\nZ:Q1aqRQFmiMvi2bl5GDLOjWwGxCADQ=\nR:securityrules.go\na:0:0:444\nZ:Q1v5JEy2c1NwTvBSn0w5DGG3Rf90g=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1G3Tkk57asuRi+5qyiRKrXrXrKrs=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1eoHVjWtrX8etJdR7XmxoDuxucpU=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1cwXnrR/v5B3J7F9Kzs2EqQgOsBg=\nR:servicetags.go\na:0:0:444\nZ:Q1Bd/vwnVRJesjL5SuZDSHwG+rlJw=\nR:subnets.go\na:0:0:444\nZ:Q1vt4D5jFJboMgarmeyrnmmh3Tssw=\nR:usages.go\na:0:0:444\nZ:Q1Ju4/3sBlOk/zPXkKirvrY6CuJkA=\nR:version.go\na:0:0:444\nZ:Q175BI3dzNsRvcVDAxRXwT5+d5A8Y=\nR:virtualhubs.go\na:0:0:444\nZ:Q10sI0UvvfOybTnzQ5ynXAofkJGK4=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1a6zxczb5w+h3qHaFGK4pMIiT/UE=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1u5o36ChhB63LT/VrLNFe6oQm3BI=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1+u57/IuNEelgZos8z3acr390Guk=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1a1F4bHFGVZn4csZcexsp6b5LxYM=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1BX5CLFx3bUjJH8SMf6CMOcz6WHc=\nR:virtualwans.go\na:0:0:444\nZ:Q1/NIsEc9bgBv9KP82Y2TNIt8km10=\nR:vpnconnections.go\na:0:0:444\nZ:Q1Hp5mvY9Di/NGpyTAav7lzVa2eVU=\nR:vpngateways.go\na:0:0:444\nZ:Q17fNbcL0iRotu8zZH4Ay3yjgpPN4=\nR:vpnsites.go\na:0:0:444\nZ:Q1RXKDh2tBQqdFlixSd2OOX2IExr8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1OJKB1MWAtLnkqOdYLoH57b6AOYo=\nR:watchers.go\na:0:0:444\nZ:Q1LaCO2TNPwbUiqaFm9YfriGeDmeM=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1gyCrJzKI0+yFpAfu1XUc2wsGcz4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-04-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1D/1IrEjPQqCP8DDDub3VUeFnt0k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-06-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yIW03cdGDEsjof7JmusORCaiAB4=\nR:applicationgateways.go\na:0:0:444\nZ:Q1+pQsPj9EuiXLt1jEjr5zpY42NUs=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1Plm2ktgtFR5uhkFMG5desu8sVvI=\nR:availabledelegations.go\na:0:0:444\nZ:Q1++hTBjRnKtR/jf+1HI2WS6NGDmg=\nR:availableendpointservices.go\na:0:0:444\nZ:Q12PW+wYg/y7k4ZpN1Om6tIxhAM5M=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1izAKnc751ZWAwtcR1xiqDNKhSyo=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1xJwrpg7PIIjmKrE7mkBSACRZyJY=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1W3j6SFxVhiLta2yMIcI5QuZahII=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1R+MjNzhEQ15kDMUkRnarOZ+2hks=\nR:bastionhosts.go\na:0:0:444\nZ:Q1ab+YluCdS3sUNuA0mwBHta+klVw=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q16VUj/p13KgHrvTkGf9RxvEYUiK8=\nR:client.go\na:0:0:444\nZ:Q1r62XX/6cyud5EGHDAtqV9I0SKFc=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1cR8Has4eiaCnxRGF7GBqtatSsIA=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1HU6r5WqQPFrWMt+T8k/QF0xuxGo=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1gAJe0OxW0STm/lwXSOf6JNJJvgU=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1amrFnnjFAawPZmIVSXptg4WmOWQ=\nR:enums.go\na:0:0:444\nZ:Q1W1fDFGRF9QqEQz0DetykxNkMvKM=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1DCjcHtUjOi4X7T6iPxCN0fEZz1k=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1aYZc0m6Fhwvaeav982Ya18ZXyLA=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1sqCamzR9H0qGIH48NpwV46UzoXM=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1Bf5uAbYopAstKU3WsZvAYoQGVKI=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1hyjMCDdfH3lJmLIuxJKYqvAOst0=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1NC2lC3qZB4ngguhwCoRTOIEtNtI=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1aQBFIyJyGF+ob71LwGPq3lEhdL4=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1Fo6eNDgzMLgd9kQz3procuQX5UE=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1BdNEgd+5OBRGPbyv18wed5ouDcY=\nR:expressrouteports.go\na:0:0:444\nZ:Q1RQ9Gndj+nHHaLOUXBVSieg+rYJA=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1zXFGUhc5AWzRVH+f6kL00dwEy/g=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1KRG5G0SU3M5OkShmDZxUVip5W78=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1y8hQS1DhVIPTGAToiafyhH29z+Q=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1+m1Fvk0f/A/CW0IF4yiU3v+BcQU=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1iBXd1SGg3jhZJaziJ72bUwyA4eY=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1xReL8C9UWG19ITIF3iobNBdvUi4=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q11E3JSzJKpNXtj6wFjJcwIJT9Kng=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1WYNZE0/gS4FGjgvcL5ezoQ0A9iE=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1CF+XPxzNpOxl1Az4LUEWEYSMB70=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q10Hz0fBXah0HC+B3dcWLt1JuVWUM=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1RDCoo/40s4h7HBOSttaNzZa5WPw=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1f2bZ5CvKw7zF30hH4tsc06Y5VzE=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1U/j5GySOhMhm3SV8ipiDcIhCnRE=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1DC21wmy00ZIXxYmB/m2BpPLzCJU=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1oB8WBqWxcuKt2WT9h2Y8MgCLpDE=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1MJJAI2Uyl30nH5tGMwqDuIKi57s=\nR:loadbalancers.go\na:0:0:444\nZ:Q1VnBcJOtJUMY11yhhUJeTugjgcpY=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1J6J96q2flLAhaBf2X1s0xk9JvcE=\nR:models.go\na:0:0:444\nZ:Q1N7CMJLEIOp+c4QsUG/d1o4DcV3I=\nR:natgateways.go\na:0:0:444\nZ:Q1kn9AnNkRJiWi2ECdBoCCNREwIMQ=\nR:operations.go\na:0:0:444\nZ:Q1Xz68uld717BhW4LWooZAkcfkIpY=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1TCFFzCVG3dO1QdcWs7Gl114g+Sk=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1BxSZVqBjWYNyKDZ5GxFpIfzurn0=\nR:packetcaptures.go\na:0:0:444\nZ:Q1rOaXNXlp9TwTyqbeQlTbCN2UIUc=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1lryyW+TiCIdfaqxumLCjYyYGgek=\nR:privateendpoints.go\na:0:0:444\nZ:Q1dvknjsd7qQDvgBzW5UcEqwt2Zfw=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1OR+fNtqOZ6LJyFJFIM9IC3rIxvk=\nR:profiles.go\na:0:0:444\nZ:Q1yIj3Y9MPTEC5Rf81pL3r2vuzb0M=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1eer/TfCSZxHycCI1mm5BxUrBCkQ=\nR:publicipprefixes.go\na:0:0:444\nZ:Q16EfSzw3okVszpF4OGkPtiqVCJ/8=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1NSe9z52gFXPJqUtLrJZAWG6AvvY=\nR:routefilterrules.go\na:0:0:444\nZ:Q1O4t2rrPidSTgYNnDtJx7spBG4x0=\nR:routefilters.go\na:0:0:444\nZ:Q150bkBCtZGkaNY4o8DwIxZ4rEbqg=\nR:routes.go\na:0:0:444\nZ:Q1eahndqqxYgv5w/9SSExdFkMMdFU=\nR:routetables.go\na:0:0:444\nZ:Q1OhLk4P6JvIr7bQXhNIn+eZfquOI=\nR:securitygroups.go\na:0:0:444\nZ:Q17NY1bEUOy8cl80SaZz7gGmrd9Jk=\nR:securityrules.go\na:0:0:444\nZ:Q1EaS/s8lWIiGcqaldJSaEMT7sTQU=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1llQoGZ3HMkuYPtrwKZDwF19qzrg=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q17PzMufSk+BUxaedcRtejA5ha3iI=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1s/A5XEHo98BwdcxSaFk/aqaD1Lc=\nR:servicetags.go\na:0:0:444\nZ:Q1ExZL69gXNZt3TWMwqV4qdaiqdKk=\nR:subnets.go\na:0:0:444\nZ:Q1VEoWR9s1ptdaYClPDEGNlkMJqFs=\nR:usages.go\na:0:0:444\nZ:Q1QQ67tT6fnvaNncd/YYj6qw8btpU=\nR:version.go\na:0:0:444\nZ:Q1dEYIt/B3ygLaK9gVQ1ubsrIpoaE=\nR:virtualhubs.go\na:0:0:444\nZ:Q1lvBxmp0XLSCTsxJWo9h6dgJM1Wk=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1SE+DJ2Urnt72kIOesSU4sAlxu3k=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1QZEMAWpZlpIwV9xZmU0Oau/yUyM=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1p0fn0sUazvu8KIsE3pvG0xP2aIU=\nR:virtualnetworks.go\na:0:0:444\nZ:Q12yXQA/nrAG9kkPIW0dh8lYvZm2k=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1zgYdvlZRbpZrdXNUojrYU5qydL0=\nR:virtualwans.go\na:0:0:444\nZ:Q1IRLRuZ6DFJvlP9Kq4Aof8e1zHQg=\nR:vpnconnections.go\na:0:0:444\nZ:Q1vnofiUjcAlu00OchqL8YhQhicik=\nR:vpngateways.go\na:0:0:444\nZ:Q1n4LSx8mGzsQ6eatUnKWBYs5urxE=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1jnyfvgp8gf/QR+fuJJqLG7Ongfg=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1BkCBupSUvytSM/2KntRyqcQ4j/w=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1c93NUH0xIFaQOkklNE99WeZKEmQ=\nR:vpnsites.go\na:0:0:444\nZ:Q1LizfwCa+4JZ3UhPCbsm0/INHjFw=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1lz4hcZr650AoX8DdEdC1Rb1vnX8=\nR:watchers.go\na:0:0:444\nZ:Q1zyw6PqjDJxFMBMfOrNQKC+vG03w=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1MIIVWKM4yN6MFrMg+agsNXsohQQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-06-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1s9ouZXG8kynSUHeIuum410yMdKw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-07-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nAnZ8eWJQ7rno9uSf+S7UIqI3/E=\nR:applicationgateways.go\na:0:0:444\nZ:Q1pHXb7gYeeDVgWlNFlqnKpjYLs84=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1kCvvrqlYSWzuu/qN4MUyfxPF2j0=\nR:availabledelegations.go\na:0:0:444\nZ:Q1Q1Hi0XW8hNTY+l5DBFPNUOYEqyM=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1W+9Du8ZozDn9coNzWECKkW+CyBE=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q12jO4Z8tM663fIDDXzlk6GhfI4vU=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1pGg2VB3QLuwBTcQCENG7rjXBp70=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1TATnDKfSv+OPlKPskJnrerJhlNc=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1uwZeXIRgnQcY4SEeb413JyMObBI=\nR:bastionhosts.go\na:0:0:444\nZ:Q1JDjPdvmZyp5IvkpZX/wZQEHti6Q=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1RZMcY+SfsvyteKp6e1m6aXMJTsU=\nR:client.go\na:0:0:444\nZ:Q1EyV5Mr8q3J3vlhm1powfwZ+/KQw=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1KKIF3FrdxvWnW6S706D/gwp1tPw=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q102qn+3WciiCxdo1XLca48XCZplA=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1bEaqoyOUon0uWLGzgyx3ptWaXt4=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1sQAeOOZOeh4TlB3Vx1lbbvFyumE=\nR:enums.go\na:0:0:444\nZ:Q1QObF/AG8OqLfKdl7uAHEnwFrj7I=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1LKNWIKozBMRY6AkIO9iTtviQoaA=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1IS08JI1jLolr0OJNl2iC8kv7a2Y=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1moMqqge/RgJy64R0/o01GW1/Dr0=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1UO35mTArjQVf1PH1RaRBfdiXqsk=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1pkPmUsed7Y4ty55omY/C0FCWTdQ=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1ZzWjfxYTMwR/WqILNTf/nQa8Zns=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1d2lW9P3pVA3Ch/HFvrUO+4XSC5o=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1OYx2U6mEf0TLQpatTCMWeTWZcLU=\nR:expressroutelinks.go\na:0:0:444\nZ:Q17ZPtoK2KOA+I7XsekJaeW0S8qFk=\nR:expressrouteports.go\na:0:0:444\nZ:Q1A0k3XtbCzi2iXETIQQj0Dfevz/E=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1+B+MinzrTQIW5rkFKVNe648YzHQ=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q18Cr6d7MO6552HbBxbaFeVv1VKhk=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1kEMyq5PUhLq6YbWs8MKiiPGtoic=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1FQdZ7zTT+asO5EyuSS74q89wpaQ=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q16KRc5ATIjEJ3Z+N6BdKU7qMQIvE=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1YsIFcRuGCx5cJkrXN4VEUnUlQnk=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1TibqDmEwXAeKjn/fQpzW6CwI3y0=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1vfyTsGNG9Z7CLL/kh9XfYsd/0lg=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1BK8SFjIfdTZnfJ7GrVjzoHDOGIs=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q12NPYiP+1SMtnny6Ka39PhUaHEB8=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q11aY3Kg5Da4iJKwOStK4YEipwef0=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q15zkEdU3u58nqGlAzaT7CRJscI8I=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1c4EmiVdcAjMiIlKhWif/zEnlsuI=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1sEFC9tuB9uO1FBOQGSMLT5eZD+4=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1K90GOASdOonQvlLdZxJC7l5cGi4=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1/FxQzWYA7gwPRMGLnyrJ6B4Zb6k=\nR:loadbalancers.go\na:0:0:444\nZ:Q1pUWKeEgF62Fy8T5vgtIAeaVv9FI=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1KX9SFdRdGG9Pp8AgYqT9VAu9gOY=\nR:models.go\na:0:0:444\nZ:Q1tYCOTZWzx+Vq9HV2pO0uuuew8j4=\nR:natgateways.go\na:0:0:444\nZ:Q10ZSN60UKRonbFvv+CtsXjJ4iv7I=\nR:operations.go\na:0:0:444\nZ:Q1afQz4U1UfPxrm2kCqeDCL6Hwnvk=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1Z/LwcFh6+H7HiQJUph7qRjDc9VY=\nR:p2svpnserverconfigurations.go\na:0:0:444\nZ:Q1f/4bPYx3xWTh8HFy9XYWiVUpCjA=\nR:packetcaptures.go\na:0:0:444\nZ:Q178AqKwl91pun/UEsIMhkkY3XGXU=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q12SpKnOoPR3Ggp9Iq1kzjIVuA6RY=\nR:privateendpoints.go\na:0:0:444\nZ:Q1am2PvDN+i8QpG9Tq9fsNjuh8CIw=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1MKNN/eOcXSAdVW6IximzHgmdEC0=\nR:profiles.go\na:0:0:444\nZ:Q1HHSMy0aQiD3fCqIY03Qubmx8ENA=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1BwwK2mF8XnThVbyGJQm+jNwOnVc=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1fVJNVaBmOlGVzYvXRNYTXZ8uQgI=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1hDxGM25Wv7jYsD8IXCZwLidGA4M=\nR:routefilterrules.go\na:0:0:444\nZ:Q1HgngVkiPHs/QjTF444V96pKdjZ8=\nR:routefilters.go\na:0:0:444\nZ:Q1sAoCjPKjRz85yweBrtqQvcn5j1o=\nR:routes.go\na:0:0:444\nZ:Q1Ac7kvU1PDefJwL3UbQNsjiqmC68=\nR:routetables.go\na:0:0:444\nZ:Q1Ink6pNJ1h+AHwzAnQRQ4Nw4rf4w=\nR:securitygroups.go\na:0:0:444\nZ:Q1JzL9FbFaf4BEYpMx0rGU59OOGAc=\nR:securityrules.go\na:0:0:444\nZ:Q1y5G4shgvOdqpULplDLTEHgltlbg=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q17kYNxCJBHqV6zIjc3prwt5Xh3n8=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q11+WkWjJCVo4UzRtIt9MbLixoppY=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1SUW5gPdf0YG6Jp/+JeM8YkKoDDw=\nR:servicetags.go\na:0:0:444\nZ:Q1NX2vQjNVS/v5kL9cYh7lOVulSrc=\nR:subnets.go\na:0:0:444\nZ:Q19nYtwGmVmZhGwQ7g9/86jUPK94I=\nR:usages.go\na:0:0:444\nZ:Q1mPBa6XtWvy3mdRDtxOWd7rRdPdA=\nR:version.go\na:0:0:444\nZ:Q1ZXZm3pzsUNRDGl/p1EbBz3WeCpU=\nR:virtualhubs.go\na:0:0:444\nZ:Q1pyuB8uahtq0xD+eV9EOVlqU0ljI=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q10wb6RM0qErGVCNDDxgmBT+rvJ0A=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1O7VGLefgzbm3OS+p7WAWPySP1aA=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q19SQ9ZKd/FLgAUOfk6N95vOrK+c8=\nR:virtualnetworks.go\na:0:0:444\nZ:Q19iHRn93FTyLNDAdXHrhQjSoh2N0=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q11k7Ohzw046Pgb+k247nfmehgU8U=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q18WAxcM4OMEZJS7omSqWDbCYx/vQ=\nR:virtualrouters.go\na:0:0:444\nZ:Q1iAS5xKgZmlvLRkT7gjZMTlaOreU=\nR:virtualwans.go\na:0:0:444\nZ:Q19rm4+inXbxwFfpco9UjKAUtPAaA=\nR:vpnconnections.go\na:0:0:444\nZ:Q14RAkMVSN9daroc44fJ3vLKqOhkg=\nR:vpngateways.go\na:0:0:444\nZ:Q1YKeMgMKzDeY2nxOfogFTcWS5obQ=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q15cJ0bQAMfeqR7ryl9sKVXtvoDOA=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1+f0dbXLDMR92FU8GWOtq4UjTSwA=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1JLbmPejwyqQxqOkqaAvSbmxMCmY=\nR:vpnsites.go\na:0:0:444\nZ:Q178ThKikip4dU3KowJgcQSwfLJL8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q14SPLlAGyfhmDtYhV6RsBmHTL5sk=\nR:watchers.go\na:0:0:444\nZ:Q10Pmsow8BYho5Zv5/vrtYMvD5cvM=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1yUcKjWYWBLMnRM3EuVxeaDkVX/g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-07-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1G4K3t7Xj32LenmOTWaI+M1ygvaY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-08-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BRpiwsG+EfYRhHcyeBYtl6zdnfE=\nR:applicationgateways.go\na:0:0:444\nZ:Q1X2SOtJzeHg93zO/L0gZhufzWgLQ=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1icLIN51qce9NxmwCitXQvU1vrKM=\nR:availabledelegations.go\na:0:0:444\nZ:Q10g9IuOcCNuqL0JxeP+0Zwm3Tgyg=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1GZQ8Jo7Jt/HkeW9tstdJZKPP+XQ=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q15dZuvR1rAaF4wFsAai/jn8yMEck=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1vQmvIvK0w2qqUYh94xDv5u3msGo=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1NurvzwtzK1dgC9/lkedDhABMJEM=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1ZWC+AFNv+dJuNArrTtXZVRKzv2Y=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1Z284ROAlT3TiiZliXpeeQIiR13I=\nR:bastionhosts.go\na:0:0:444\nZ:Q1BmKFSYps55wy68ZZzAjaZAU6a5A=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1EBMZIz0A6FPVMXVrhsDVgcU4uAc=\nR:client.go\na:0:0:444\nZ:Q1BwEdCvQjlDZrlGLlWT9ChQPyKUQ=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1YAQzVX0k9yf2R1TJpJklWY66FPs=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1wq5z2GvQrcz21WcMzYV3tgDpz1U=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1f55ZtmwgT0CU7SEY2osfgol/7sc=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q15dHAd4501KVDZ+JrBVCKiSYEqhw=\nR:enums.go\na:0:0:444\nZ:Q1rBSUlPSDIa53XRSx1pxrYQ+cmmc=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1xmr0IClztRKD7wjJR15aiF5BicM=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1BqOEOIyv4UFWpDCc9k2twf6W34Q=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1/DpW+jiXWgFvdGpkg05/2E86Wyo=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1VfYAhx+GMTb+nE5ry3r1TBQA4cQ=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q14g+OMzC0O3bpW3BE8aule8t3OkA=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1UY1E7cNPx51g0tkh4tPPYuRudyw=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q13HN/jNLUsg+pLXlhmGywOgUvroI=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1D85oNEL16la7gYM7GMDygLqVmfA=\nR:expressroutelinks.go\na:0:0:444\nZ:Q13rxLOJViLwyRxMZAUCBIiMrZZA8=\nR:expressrouteports.go\na:0:0:444\nZ:Q1KTFVMl9mBqK5y/C4vzMWrqdv80I=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1+pagZtnHHM5QwGMTXsgQOkOYvUM=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1LCdZrjFQ9f+zyoI/q8qS3XYhUr8=\nR:firewallpolicies.go\na:0:0:444\nZ:Q16LuK1Gt9KWnlQKUk0pCS5jIrY7U=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1RrBH7euXj1SrMRSUUXxyTsT3v9s=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1W88ujqkwfmbys49mMpg/cFvGQn0=\nR:inboundnatrules.go\na:0:0:444\nZ:Q19Qs5NNLbpFJCRSzGFpmCrQif4HA=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1Hupaj/G8Kb7pnfNIoBih3p8fNrw=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1XkaPTT/3A9FmzaYeR18Z2XMQvGc=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1xZFRWEzMvOcAendkIDUqLLnQh10=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1+6xEpquT5by5q70oqT1eT4df1Xs=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1h8VGc+Weih3yM/qjqdcZQ5RTD5s=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1tmNv0jOJrx63P0st+WwR7nOGmpw=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1KuBdUVHrQZlGHl8fuSZjXfm468w=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1B56EuBsNbqJqyLpcWgR0OI2Fkyk=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1GxhlGZfNwjMMKqEdtSt85rBpU4c=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1WOyxBqTjOCshk80gB5WyoNuYkDQ=\nR:loadbalancers.go\na:0:0:444\nZ:Q1B9GyB++tprgfMqOBoYcRKX1P068=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1L2HQ3KHC8jT1TXQx1rpNnl4j4o4=\nR:models.go\na:0:0:444\nZ:Q1qJUZWPr/YZ1uNxY8wJJYVm/UVck=\nR:natgateways.go\na:0:0:444\nZ:Q1QMgAxKEJ3W3WS0WqMQEzLk9/Y5g=\nR:operations.go\na:0:0:444\nZ:Q1sc8p4laPStmL/Luulp2hDIM4VEc=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1Kf5LJgYsleJEEx102UvLMfRlKf4=\nR:packetcaptures.go\na:0:0:444\nZ:Q1IwKI9PP4vzMOKjKx8jqNXG6mTVw=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1zPjoSXaSFQ0a94aC8wlRXLdAuoI=\nR:privateendpoints.go\na:0:0:444\nZ:Q1oNtX1LzWuDjajaQI/Fvng+ByeC8=\nR:privatelinkservices.go\na:0:0:444\nZ:Q11Sgfcn9L3fOF4ikgMr4NoXIsq4M=\nR:profiles.go\na:0:0:444\nZ:Q1nadbbVPoLAu4zFgHnX2xtoCKtDE=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1bvioNuRlJpHRBSmoczVr4e/5T7E=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1ZOo/MsgDFeUxn6mUidTK5/Q1K9Y=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1sBMCEztWi4/FMieAbxPX5LZ/Eac=\nR:routefilterrules.go\na:0:0:444\nZ:Q1nHz9ty5CQJx7OF7HhjxIhunrUKU=\nR:routefilters.go\na:0:0:444\nZ:Q1kFjaz9S7eNub2lzjN6lt5M7M0yA=\nR:routes.go\na:0:0:444\nZ:Q1xVlyM/Lf0BJ88m/oG+iCorKXqDg=\nR:routetables.go\na:0:0:444\nZ:Q11yX4DLypunu4e+A2/FuofHzUSXY=\nR:securitygroups.go\na:0:0:444\nZ:Q1jJpYyy0rpPQ4M4StG+n/0q9Eoso=\nR:securityrules.go\na:0:0:444\nZ:Q1BqQm/nLnjz+9vfGEFjXocSlcF5g=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1BC3DPLuZee0qgjsekGPSsucff/8=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1LmZUPNywf9S1qX4S2HwWyhorGPI=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1O5YqhYafHPzAu8tyy/IdRh90Wk4=\nR:servicetags.go\na:0:0:444\nZ:Q1YpmGWwrbHEBg8HF+6Z0APCxyves=\nR:subnets.go\na:0:0:444\nZ:Q1atlZrKfkRblVIOEcpgo/x3QHTTs=\nR:usages.go\na:0:0:444\nZ:Q1WFbKj60RI1XbRbt4YzA4fhxuNAA=\nR:version.go\na:0:0:444\nZ:Q1saESHiZDPA5O6V7m92YRUIDBkz8=\nR:virtualhubs.go\na:0:0:444\nZ:Q1UAsJqWu/tU/EjIlZLkVtnMZCNAY=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q127eSkAOiWgkb25S1vxWDrCmja/I=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1yhtxBHjnw4hRYAx4pvrodQiEl44=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1qVsGpia3jVZ5Zzv+2jY2LZlN9nU=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1ZsIrBpmUuyqK9+qTG71aD1iDrC8=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q15cH/BmXt8rxwuuC0hLaF1rQdPP0=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1iXoWSEEKcDY7GeikpEicuxn9i4s=\nR:virtualrouters.go\na:0:0:444\nZ:Q11AsK6fLfUG213hRL1+Ozc7ph3/w=\nR:virtualwans.go\na:0:0:444\nZ:Q1FYkVkmJ8zuapxQwWVx2LaOhVKv4=\nR:vpnconnections.go\na:0:0:444\nZ:Q1YqPfg1uSohLCBTM+dt3aOoloI84=\nR:vpngateways.go\na:0:0:444\nZ:Q1/HYQLlWH6J6S13aJgKK1Kr8Dato=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1EgXvIrYQXh6m1FZYAXEonq8lcW0=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1G4zOgG5OIe4x3B6wT7zBg4PrcxU=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1v5iSiu0VAdEcyfJfnM+vdeXlNaw=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1wnXwF0kwu7ArApkZOlmKuazYW5Y=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q15ZJzcfMS0k24sSrggGWwJsXfAxw=\nR:vpnsites.go\na:0:0:444\nZ:Q1ZmqQLl+uBV5MMzqysro6oWE6KU8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1yaDuXt/sTFfJEsc+P3Tz5OHGoOM=\nR:watchers.go\na:0:0:444\nZ:Q15stH83kdLPwmrFWkZ8OkwION7FQ=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q10uE7IgTHzY9Mcfr3vOUhLjaBTYc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-08-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gOb0vZ3YnO5Yf0SOl2CVfHr3Qak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-09-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/9iBKN8n2WP1lSQj5e8ray8VKh4=\nR:applicationgateways.go\na:0:0:444\nZ:Q13f0z21YGwkRUdogBVgAbO+gzMYQ=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1D8NX70tXmovIVBPXsQDtTZYu1wo=\nR:availabledelegations.go\na:0:0:444\nZ:Q153asxv2NrUbYlfUFZeppBSkp4To=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1i5Alktpqf4gfEBO+Z84NMlFE0bk=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q10CS4ZV8sBv7g/RMzvVQUBeXtXD0=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1GmEWcmI/7MLc8e/TOyLeedAkflI=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1dLgRQnoAkrfyS4jsolx+kaXZACc=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q10FaGOUa75nvBUUf/Sv2phIaAKjw=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1VkZO9BcR+M4TclwoQoqyVzNCfUU=\nR:bastionhosts.go\na:0:0:444\nZ:Q160qacthP+wpGJhk44Ej5sCWt9Tg=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1TVk0qDkdbcHzzTNf3WmcAUDxiKU=\nR:client.go\na:0:0:444\nZ:Q1pMdT/grgNvxUiQoKbFUNoeQNsaY=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1JfXBFkq4+KlYvWwNKbh7JoN6WwY=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q120OsMR5aDc+62heeJDKth7RkqoM=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1tgGDkXH7Zfzy4jBTFHmFNa+upU8=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q11UQK3HHnr58s+agEiy0Wc7FIRfI=\nR:enums.go\na:0:0:444\nZ:Q1mLAJivjsx1nJogmXq7BwKNoffz0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q16jECDYQPT9Vrekb0rfIyDZneQI0=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1IQp6Ilyzu6XWkpqqrbqkpbh7U/Q=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1sj8Yi28A23d61nbHUd7/wW2EvsE=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1tf9IJCS46rnnrAPgJS/NyAv1rVc=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1AzpRJbxNobZLCrSyPRSPC4Y1ulU=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1gISwgTvRkskCg9Oj5K+lgguhi1k=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q147BS+ZUoaUoc2i3GclWG3G/pO1k=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1VF/X14uzjbGQnEutAVcfaTDLvbY=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1MHCD7ceypoKWfBLPe+6zVYSql5w=\nR:expressrouteports.go\na:0:0:444\nZ:Q1WIR2C0DAxVMGfPeDTv56Rsyi4pQ=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1y3ejb4FhWO9oEhdL61hT/egE2vk=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1aoGsGSy95bE5XITamZtmPW2hfH4=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1JUMqoaq9hV/b0PdUy3hz6kh7aI4=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q15QBxRowBmK1Vud/qAeWGsl2FgsI=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1r9Oy+kxzZykS8EPVIJnDSsN1XTM=\nR:inboundnatrules.go\na:0:0:444\nZ:Q14LzLj9xw27/cmeO7wtWKqVBbiU0=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1TfZPg/a+n6/gQOqzjOYuBJvOmyc=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1pZUORaBGB/B54TEYKL4cJQwwgsg=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1Hs5WEWgNhHTVOIeAIY8XN7CyfPI=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q10mbKVU5KTzRHrh4zg+zSCCDkhGY=\nR:ipgroups.go\na:0:0:444\nZ:Q18YtZ2ExXNwO+KobDNEDy3lSsCZo=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1X+4kBErWvqXU26iHHXwpFC/0S/U=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1vfol8DKBlnQmg60GoOH8hgJ+Ue0=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1HSX/3XLUBmqvDKepp3kLg1iwHHU=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1p4I+UqlqNoPbm8ZAwHgEgZH1g3M=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1Q8cpqvqiCIBNFz59gNm3CdV2/aY=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1qRAyLerXz93ogdyv2O5h6od9WgU=\nR:loadbalancers.go\na:0:0:444\nZ:Q1E8NvRfY7DPblxGhwUA5vwincHsg=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1YiS1kGT6d5BInC3sS6HP9uyQHG4=\nR:models.go\na:0:0:444\nZ:Q1TH0myyUWAUQDpByttR9s6LD3+Ac=\nR:natgateways.go\na:0:0:444\nZ:Q1KqDvg/p/MJHai3Zu7nWHuJjlSHI=\nR:operations.go\na:0:0:444\nZ:Q1/2lTJsiCjqX+u6/+iSrUHhdE928=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1rCZLbTQVNs9iyuMIHbuoYiLBLQc=\nR:packetcaptures.go\na:0:0:444\nZ:Q1p82V9f23OJRG19jGyivF77Ku96k=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1tapG1bozfDx5h9rIRGYgaYxxcBw=\nR:privateendpoints.go\na:0:0:444\nZ:Q1feS+2kycKLyPzBpbL6IClLsjtDA=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1/TJ2+ua8UmFVMNA9ZCf5NYVLW00=\nR:profiles.go\na:0:0:444\nZ:Q1pscDhXf9UVKSBci6wR9IGBTTSI8=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1hcDkYQoOJ3dQ0Rgi8QrZ0N6lijA=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1VFl10byDUL2hsj8flPRcTzqoUf0=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q12RaF8nzUsyxnuNNLZTkaYgTPOmk=\nR:routefilterrules.go\na:0:0:444\nZ:Q13wUmdPYGww1tUZuBymQkGn9BSyI=\nR:routefilters.go\na:0:0:444\nZ:Q1R4dxvXjCYoH0IYeaM5JIvvUnf2w=\nR:routes.go\na:0:0:444\nZ:Q1gIEgiOecrM7b+aseHLMpFhS6N3I=\nR:routetables.go\na:0:0:444\nZ:Q172RcVR6mb8Z3fo3k2TtB9D3Avws=\nR:securitygroups.go\na:0:0:444\nZ:Q1eGOfRU5LQnSnjmgqFBQ9EBF3xyI=\nR:securityrules.go\na:0:0:444\nZ:Q1E3Ovm7/IjYP9Y2blGMgd0zrKdv0=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1LrVesf86TgG7vCeC8CGZSDhEWkY=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1spdphd+OMLO97pvS8Zq5myqDJS8=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1jhJGD3kYeTPIh3OVj3HOBzOVPl8=\nR:servicetags.go\na:0:0:444\nZ:Q1iVrfMqrWcfXtIHiiKntH0KcTzI8=\nR:subnets.go\na:0:0:444\nZ:Q16uYsfs5hMSJxKahE7dR696emFOs=\nR:usages.go\na:0:0:444\nZ:Q1TSMHVVvoxeHVBfA6rQ28jZMbRRo=\nR:version.go\na:0:0:444\nZ:Q1rAmsapEXpsho6zutIFN98x5JpYk=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1/qCd0cLhH7t3lq5JH9hsP7qVGR8=\nR:virtualhubs.go\na:0:0:444\nZ:Q1kRnUx1akIaMhteFnC9cOXUEOXqU=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1d8/iQTLHV2OH3WVCmZWpksRxLIw=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1RnIaKNYQw4korXePcbios9F1fOI=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1uRp/KsGYH7toefrn0sXDl/Le9ys=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1hzwjjY11pWdYuUnC19+FEinik/U=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1XyiXcDAPP1RBNC9LyPyn8ExmR2A=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q16FA70ymZdRoqwzpyLNgwFRNdWOg=\nR:virtualrouters.go\na:0:0:444\nZ:Q1449L2Hk7hrZdFe02KlgqUj1z2vI=\nR:virtualwans.go\na:0:0:444\nZ:Q1MKc+EDASjT5e6vPE7Sy8F6bq+88=\nR:vpnconnections.go\na:0:0:444\nZ:Q1UN73N10W1OmYeE3Zx+wrGqr+ryA=\nR:vpngateways.go\na:0:0:444\nZ:Q1OWN9XcB/eBPDm1GT2xS3K+Yj+Xw=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1WN+oAQPQCbJJ4bEDGH8fsgm02Xg=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1no+GKkpZWEoKqm3W8BMU5IbOHJY=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1Zq3/HSX8HjFz974z36vTUKZUVCg=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1+1s7WqCldLh503/H0woustb7M+o=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1lgkZH4bGo1+RhVWTdUjWcRHk1Ec=\nR:vpnsites.go\na:0:0:444\nZ:Q1ERmafRdDtg9QRpThaOqjJib0ly4=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1cNDy2H6/xReOWLNdGlDN/OrwD80=\nR:watchers.go\na:0:0:444\nZ:Q1gYHQXv5HvzX4Fr5SNX+H6+YXzks=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q160Kj6cUahbVy3hXSr34rhc6BkC0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-09-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JhMBibCxusOYIIycIT5eJTfsuuE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-11-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/JbfpL05pPXMMyfLc3AemzbO5V0=\nR:applicationgateways.go\na:0:0:444\nZ:Q15JtG2ohmVfCyvgzVsvyTZmw0IbA=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1am7YmKmb6bGov3uVxm8a6+6tDeQ=\nR:availabledelegations.go\na:0:0:444\nZ:Q1FQnDqG7t2jAzaVQr/5ENsFEfbNw=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1IGiyepTRi0Xex8PFslGg5t8yb+k=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1/WI8qOsVRV1uQxdjXiDEf6d4SSo=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1vqS1i73hu98D8XkHkbhV3ZkCFZI=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1hP4Hv8Tx7XoT+JEOU2U+FqT5+L4=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1l2tWK93OMujh1j0+NXQxuSn5TCM=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1X/0VIZrts4kOxn3wvuX1mDEP4z0=\nR:bastionhosts.go\na:0:0:444\nZ:Q1XWHnmyWdsvRAwGwFHn7yKMnEiYM=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1szsh23nSVG5+CgiNzoGynP1nJ8Y=\nR:client.go\na:0:0:444\nZ:Q1IxN3YmSu3nxrtsEZHCic/13d6jo=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1DPDJR9Nqo+TpzmoNytaBGJfp8JU=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1Cf4ZOFGuxyxeJkqVdeWSOqqp83Q=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1Dai/JlRqvcOdqnQjNKdKMZQEgrw=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1elwa+KWJ729+8QodoIDwWkV4HKg=\nR:enums.go\na:0:0:444\nZ:Q1FrN2HrQuEgZ3pEVjABmxAunvxtA=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1jupztYiZ+RlUwqo5vu+uoK9IqAY=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1cbLCc56AbetwBOrMTq/0yhep+A8=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1nk+Xz0ShIdV8i9oWXCT/HS1DL8k=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1npZhqsYYLPRyIsOSrKjkKm5RtSs=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q108s/Wv7o/R+n86z0EP+9isu0iKI=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1EY3+3NuFxd3mk8ED6rvYA/MAPbY=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1uCblNyosugQnxgE1Nm+Wvx9wSXw=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1xPDpQISHxkxfkJGm4xzpOQGbzbk=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1c8JnYcwIvO9lAKfY1XWHORYOkuo=\nR:expressrouteports.go\na:0:0:444\nZ:Q1dHPrjzFjflRpw6MXIZQhag0AMUg=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1s39/Ybh03rrHCDfId6qJ3EFwmQ4=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1ElNjxm3CfYUYWirOEC/ysFygq9w=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1k1pq6wtp7s5eNtLkByzTG6esOzc=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1b0lre+kJb2s1PIRElU7wwWAVgmQ=\nR:flowlogs.go\na:0:0:444\nZ:Q1iuMML4gt45kX1UUAkQbxdCp3ZMI=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1DXEGWL47RcA7uxKQjivICkvhRTI=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1XCVIsYXSurrkVq+KsxC7CKWDDCM=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1ayqyJEUd0VGlN8Z6My9IYW4T+l0=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1hwVuxVxvibdgEexgy5QesTgt0BI=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1WPoopOLYBSxop7RdUx3aXcRB8WE=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1RXzolEZXTxRLF/OqpgaZm4CvW78=\nR:ipgroups.go\na:0:0:444\nZ:Q1oZQR9neB3bEllxkmLtdfDl6UY+A=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1DrIHiRwxCmMoL9VUTwPip0iBb+w=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1S822fuvutDbQ0mK6RCiM7QyZ5RM=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1J/+ztgI3a0m67kfTl0H7UQ/77oA=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1hBs0mL8v6TMMoh4Y0iUobnuQlM0=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1V4ojqXcy3ODpPCLVlS3hdu0yCRc=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1eD6UQG9PQ/clEL/qBAC1wOHyMsw=\nR:loadbalancers.go\na:0:0:444\nZ:Q1ew8yFkVfg/B9Xjv9XoC1E2TZAOQ=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1Wjl9xPWMx1tJdFydTKLzzSQf9Vc=\nR:models.go\na:0:0:444\nZ:Q1wv7k0uNFcDSrmZJDEA5d5zlhZlk=\nR:natgateways.go\na:0:0:444\nZ:Q1tUHkaH56I8p+OcSKwMpHFUCvWMQ=\nR:operations.go\na:0:0:444\nZ:Q1Ldu1F5t9QK2knUMfGwPp6au/6BY=\nR:p2svpngateways.go\na:0:0:444\nZ:Q14nyCAYmq7yy1MI+oK1lmm36NNLs=\nR:packetcaptures.go\na:0:0:444\nZ:Q1y1BgooSgVlC12lvCW87dT3K8fos=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q17n5TQ80yIRWiNE1SZD4pv9arWjA=\nR:privateendpoints.go\na:0:0:444\nZ:Q1FnBJT/cl4gRdGrC+HPzptaal+B4=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1GD/MS5thOXaqP6aXmy7y62pkVEk=\nR:profiles.go\na:0:0:444\nZ:Q1CA5Uel13lLdgkKh001YNBHAWQk8=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1g3S2tZ3sIRRZcePt07B3mGoqNq8=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1MGaJRjUSY8fvs6WC7QwnL9Ck9+E=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1S2ugDtfHs0wY3Zu0//1FAdG9+fU=\nR:routefilterrules.go\na:0:0:444\nZ:Q1hgK9oOO2JPBq5DuP7ITy6v0qUrE=\nR:routefilters.go\na:0:0:444\nZ:Q1s9FtquX7NM/XcPov0y629CHD4Q0=\nR:routes.go\na:0:0:444\nZ:Q1111YJZHhYgkK+CfUypzashtYT54=\nR:routetables.go\na:0:0:444\nZ:Q14jsqLtLeYTN2t5qAZSXhoEybY4Q=\nR:securitygroups.go\na:0:0:444\nZ:Q1XddHL1O5nggXRwS/MkE5SPs8BHc=\nR:securityrules.go\na:0:0:444\nZ:Q1jzkb9qQsA0UTSHwDHX2Lx82+Ky0=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1X3GvvQL9f8iBC6T/2CHTfrCiMaU=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1kq1cHVsLvSnaRoffNmtCoAP8/ts=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1XvLdSxN86jKFVL5lwgy3fG+8hBM=\nR:servicetags.go\na:0:0:444\nZ:Q11AgYecpDY63cPsmrDKtYh4tioUk=\nR:subnets.go\na:0:0:444\nZ:Q13tLaMEOfc3NpxBkYEi+/clQHP08=\nR:usages.go\na:0:0:444\nZ:Q1sUaHjkXmpJ9c4J88VqfNJ6+PYmM=\nR:version.go\na:0:0:444\nZ:Q10bZ9RrTnArMYgI20Uhceanuzcfk=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1of0ontTg6RmeGlA6xSWWOZ4zj2w=\nR:virtualhubs.go\na:0:0:444\nZ:Q1ry9mCUDaCTlBtLDi58JrbP1YOf8=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1OUYNpdKJgZsMZUQ3yFdsR3nNyUc=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1NE75HcY5SU/kWJIvX5lB9j2n9eg=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1jvhTjLu4KNbLmN7bfr+DEQo9EMg=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1iPzvsz4I0xHN37BcXHffDwSLOMY=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1X/qi2MkJ8cAxLG3/7Avey1Ofb+A=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q13GQTzK8Q8yiKDQk59pTDNupodeo=\nR:virtualrouters.go\na:0:0:444\nZ:Q1fH4Vpjy8qUQTIONKWwvs9WaT0PQ=\nR:virtualwans.go\na:0:0:444\nZ:Q1RYJplNJMnjCGNk14EMdYJz2HUs8=\nR:vpnconnections.go\na:0:0:444\nZ:Q1c1lRhvBRp6lWjobGHs021Lpm1MU=\nR:vpngateways.go\na:0:0:444\nZ:Q1VSBQbe4hxtMWmGq7bi0+v3z7qMU=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1yCNlm+bUy3eN6bYrG6wQqvxLjqc=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1WLNnanKKJ72Q0XRvAAImJAaZOG8=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1dYv8RGb9vAFgXT/i/5P1h0Jkceg=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1qr+2gKMkeF4X5QAIZffuQlnBogA=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1lkDq1I3QGzsY3Kbh+0JwyUCoXZM=\nR:vpnsites.go\na:0:0:444\nZ:Q1Ya+6syiWUnpmKQUSZ9qv27Zqyyc=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1V83fwkl3pVy00Tnmg+y4AgIhSgQ=\nR:watchers.go\na:0:0:444\nZ:Q1sBFUiB1ctuK28nym6Zpuk6IWIPQ=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1vu0kfY97QSMPmAptn15ygt1C798=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-11-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dGVIRi6btUS2Jx30vDskK4gdEmA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-12-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1CSOL+CDkzhGsXOS2Q9hrMpjhvmg=\nR:applicationgateways.go\na:0:0:444\nZ:Q12iBVnWrZYUYcTHRg5XNy94qbVIE=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1QZ1RnbVtlBsemSkb5ugoQXiRV1Y=\nR:availabledelegations.go\na:0:0:444\nZ:Q1acVFpJqi0C91pvEUElVzro/Fv3Y=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1gtBcfTAvNhdwsOcJ2QG/5jjadYA=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1t1h0qH8JHUUimTKoOjLFVc0K2m4=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q12ca9epeZdN3H7h3NZEMTOIf+HCI=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1Xv7/t2fBAYIPuijJk7q6DhUQX5w=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1DuzzeetAq5fs8TLlOdGkFHrdJPg=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1XF/sWooANItyaUXN/Qkb2UT1cwc=\nR:bastionhosts.go\na:0:0:444\nZ:Q1BBU9Q3g01aW9t/YpfQEA4o4r8Hk=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q17xiy2ml3yj9x2epP8tnhqzAVFI0=\nR:client.go\na:0:0:444\nZ:Q1FRhY4CfjvmvaDWgPOffpNBF4MZc=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1GLr2aexpmdlu/aydldPMF5J3uFI=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1bymnMQaWL0TQ+dU/GoNOCxgjDa4=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1Jh3zVJ2QUYsIKN97J93ihD2R5a8=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1uZD8eCqEGsRvstft3ls2/aI++v4=\nR:enums.go\na:0:0:444\nZ:Q1rKMrlnosFi11dA/xMJWvJLGysGE=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1HB6u8Nl3WEVi9beZawbBLZ8H0pI=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1VAAU3S1ecBvDnvrY3BKmJSBWoUI=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1mG4F2m/PdHL+Qe2LyhqTEfX6yD4=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1TNj3FKIDxWrrfruAEAfjkJdN4y0=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1nw+SFgRLu68tKv4fhlCsZJ0vwNA=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1xM7ekGDsdnvnZohrgb2rtnK/yJU=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1uf9EUDg6jLaDxPmJZ6jGtTVr/RE=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1iJk/RMlxuNNeaJQVId0Uy+r7j6Y=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1codYn75GT6d+9s0YI69GEXa6r/E=\nR:expressrouteports.go\na:0:0:444\nZ:Q1LKg0X5FOqTmcOLJFrqCfwewGFEc=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1zRk4gaxvISaMyT0S99qb0PYxD68=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1NiW7LTTzR3t5AssKW27tJQQIV84=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1MYzMcso2VVftzOau0lduxMBKWBc=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1QGTJurEj5OnZmt0JS8MjdYFr6C0=\nR:flowlogs.go\na:0:0:444\nZ:Q1ALG3m9JGlid+2L+xlPQqPP/QcGQ=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1yGuhvOQhHkYEMTlPfkMCK9uDEn0=\nR:inboundnatrules.go\na:0:0:444\nZ:Q15whBodi+pgHfZaKStQdA6hptqK4=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1ahyKiOi7lCi5BY1EjVBLXsE9PDs=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q12CFjqjdHCfV4u+zieh914ukaTmY=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1/8pkI674smJfS0Crdk4zmaI6RcQ=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1r8a2a1xpZ94XaqF838Jo1AH1BXU=\nR:ipgroups.go\na:0:0:444\nZ:Q1sTXFrnqDtXzafK3bMpRAnrqfhsM=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1TmUeBaLstiU6phfYcnWjtji0g/E=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q10ZZG6USKCT4DXskbFc2+pZj2bxo=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1BLLl365pYrTfsAAbDt7l3EGoJlw=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1ybES3FaP4Yd4c+B/yOLAsEA2sf8=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1hnYe9oxBZoR2SQLxHQllPhcHw34=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1iUvs4m+Yiz4Jq5JMpE9rCDuXBBc=\nR:loadbalancers.go\na:0:0:444\nZ:Q1hS7QOPtUj3e9h+Kg2MadJ0PDxUE=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1cN4OGXgwuui5sGy8587lY6Fs6wk=\nR:models.go\na:0:0:444\nZ:Q1YJwmEHOVFIfvuPcP0YiCgzHXwFI=\nR:natgateways.go\na:0:0:444\nZ:Q1iST8GvNZAQHdLRq09Up7QF+SMys=\nR:operations.go\na:0:0:444\nZ:Q1Hmsa4uQFBzlD58JJFaykH6W7d3w=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1uuSj8Ia9aHKv5xxEi7qIEKrY6QQ=\nR:packetcaptures.go\na:0:0:444\nZ:Q1fDEkAC9xGzm93ZwZwDvYgqycH7U=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1zfmz88gIo2d2RhDam4x5t5NsbL4=\nR:privateendpoints.go\na:0:0:444\nZ:Q1Nfzd7N9n89QJq0z8dVDe7WRXPHk=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1T8bQJNnvhhybrFjdKK8zQmlpza8=\nR:profiles.go\na:0:0:444\nZ:Q10sudm9RdrQ5O6VFxuBbhrkYLiag=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1nC8U7d3l0lzAolf+BdarJx+GD34=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1YSSOpsvaShA8qoNloefOuMPxpOc=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q109vN8QeALvkSrxHm421UdGuGIN4=\nR:routefilterrules.go\na:0:0:444\nZ:Q1XjusA02CXSBd1t+WyXC35zoUvRQ=\nR:routefilters.go\na:0:0:444\nZ:Q13s7IyuvlYq4Ewk/RiNp56bEe8jU=\nR:routes.go\na:0:0:444\nZ:Q1a+mpx/iP8pO3YPClR8ot740uUBA=\nR:routetables.go\na:0:0:444\nZ:Q1CJfUs14GRtZJ2ZyXS39qpAbs4HQ=\nR:securitygroups.go\na:0:0:444\nZ:Q1phc6mgonsdjON4wy6kcQ7n4bMCU=\nR:securityrules.go\na:0:0:444\nZ:Q1NUJIS0TSlX5LO/HCyMDEPMrw4sI=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1rzF+W+BfpNVWTPKFYMoJWedGuTU=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1mZ1bomnPmyX/21e1pB5Y9xcbI18=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1Elor7Pv4VzwVNi5B4KCY5asXnyI=\nR:servicetags.go\na:0:0:444\nZ:Q1NmGOfjDZppWkp+lmnAXa/Jau5RM=\nR:subnets.go\na:0:0:444\nZ:Q1CzaYx9nOT6MztRgRWyB8wdqou9k=\nR:usages.go\na:0:0:444\nZ:Q1XzrD21ZYZor/NvY8A0d5Z8/mrQ4=\nR:version.go\na:0:0:444\nZ:Q1ZZdMdJey/1qzeV8b6H7UCQ1Tgrw=\nR:virtualappliances.go\na:0:0:444\nZ:Q1cz44LVPyzS7IyXqeIs1Drq3yvL8=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1sXlpII3HIs0+hy44nM4FxUgiIVM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1uJzrgitkJetwfpzruuA3xB6Sgq0=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1e6FNHunMuR1JRy3pGCMl3m5T4yE=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1EOcczFnZuGcwEQPMhl6Br/D9ekw=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1TIe+CaX6iaWwPlHZBryVXJiAduE=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1ixwFDqS8MN6Fs2KONWOQLC/1YBg=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q17QYGllhaGLJWn1PF9kHLXop5yVU=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1bdPD64CIAGDy39d+Bd8ZkjInuDY=\nR:virtualrouters.go\na:0:0:444\nZ:Q1p7XcvVRx9W8d+h4CtHYpyzugN/c=\nR:virtualwans.go\na:0:0:444\nZ:Q1TR/8jlnNf+euv41kU28cgEw9R6s=\nR:vpnconnections.go\na:0:0:444\nZ:Q1ZK+PsdVyDUKdu6Psng57gHlm6Jk=\nR:vpngateways.go\na:0:0:444\nZ:Q1OBNACate/bc6uII9cNA4NCFdgN8=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1bUB9rUTTHMnP73MFn7JlYlAnB3s=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1e7d4pppk50TVAN/EXaR5X+FMWdI=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1DugOeBuR82s00v7a62GpSW8x1pg=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1Nou/cyREfZkeZU/Utdr9AB7NK6E=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1kXKiANcXs9Je/hK0dwhX7cRFjgw=\nR:vpnsites.go\na:0:0:444\nZ:Q1ma6DtyVSlvJ1ZJ02B8XoMwVEhu8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q11/Ys9lw/nsvhI+uLseGBGO3xujY=\nR:watchers.go\na:0:0:444\nZ:Q19hP5Yqg9m03gPYB3Y4zGEVnmzxw=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1OimEAm7g3TK9GXw25/gDwi/CtnY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2019-12-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15upauMCIb6SJb1OBiwwBbnQIPMw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-03-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XpaJTewaugV9pmfEVF5Sd93d/pY=\nR:applicationgateways.go\na:0:0:444\nZ:Q1V1qZNAT0YT9sqy0XBbyvVEsDSps=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1ZuaxugrKW2Q/H6yQTVNxMZFaJ5U=\nR:availabledelegations.go\na:0:0:444\nZ:Q1R4uUHG4omdKwgtWyg4VbaroUu2M=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1rIkF5l6VaQAHfYyzn2OqdAXU+lE=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1qVN7znhPSprj+z8YWYA3XfAM2Zw=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1Ig6ntKb6p7G/PwM7Fo7RWOX+uEA=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1MJTPuLsMLvjffzwKu9AlD3WdtBY=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1g9DOUzPnVXrTZqrJoDHm6E+YmXA=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1cWei9BpviH6EXB5WRrnkgZHXFjs=\nR:bastionhosts.go\na:0:0:444\nZ:Q1/Z3mbPM0Pnf4YT4plP9Gq819dDA=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q154qtEoZFygy+k3VL5yPj/v9q1hA=\nR:client.go\na:0:0:444\nZ:Q1fNueIsxJrBD6Y5V2978H2t2jlFg=\nR:connectionmonitors.go\na:0:0:444\nZ:Q18tbyu8QWs2i5XF9RFlwioCr2+s8=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1gPJwefcxBBUyx+wQsNhkUXsO2dQ=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q16VrVEVafqztsRDD3DrY3bmdZ3zk=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1ltqV3kVEOKAXm8eHrh+Ui/L2zGc=\nR:enums.go\na:0:0:444\nZ:Q1tYkUTLCaaFIInKxmKba+wOddiEo=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1y9AYfZsv2k203L2tIZsYvoHWiPc=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1QpSZhuwnon08qDiZIQ+pAX630pc=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1Q3XhYMm9j9aH+RdK94u/PUmRNWA=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1/ke3eWBiVJar60w5qkESNtkhlZE=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1RWX+/d8gdHM5HhpwMvatut8Y4Y8=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1TNzOVOolTdvhsQ5dxNvfoTRWebk=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1BSwVBcNk948FRShGu+lUaOoSsl4=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1WqRupOveUjJ4cAuODLXwlJpO3ls=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1K3s4A3q0Fli1deCzi6PPgeb3oEM=\nR:expressrouteports.go\na:0:0:444\nZ:Q1PhUwq29uaOhSdLR3DMm9CpEMwEU=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1QTvSC0gRMd42enu07CMcpptJLKU=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1I40ubYVjRF4n9iAOB3e3MlaJcPg=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1mFJf6jUrYjZ3yy6nHjeVStHNKq0=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1i0pancVld/eUOdVcgnwELPsvH3c=\nR:flowlogs.go\na:0:0:444\nZ:Q1lhzqfk4W6t+R/57FOPYR3Br+GQs=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1uzDFPJ+jUrjG804lPt5Sgq90Fkk=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1j+Cm7dNGT14cRAUH+S/PeRjZBRs=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1v+8KKIHckIOP9nPaUeOOBJ88djA=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1UYhld1VLYqAv/yi6gEQxsbFhIaM=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1GHBAM20cdBdfbNH8vuOzBZHlvLs=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1b9stI2QXXWt/8STHPVYx/kR24bE=\nR:ipallocations.go\na:0:0:444\nZ:Q1mlivxozBCz2Z2MIDlngZNtydRnQ=\nR:ipgroups.go\na:0:0:444\nZ:Q1QMB4C4Oq7+VsQP6Ebvwmfc/f2qw=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1z2DpQm3SMlcW92BCQbgUc7m79uk=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1dYVb8bzgMyCvGrCUncAS590En38=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q14sPmmCRSexlvO9CmxOUSPkK84AQ=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1U1mMudI2aLyDB9e1PvqLWuJjxKg=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1ZnfNsXXpIRn/ZB1d/ByWO371wY4=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1jUVNkTJ6XKN3A9nucAvNwxmTMUU=\nR:loadbalancers.go\na:0:0:444\nZ:Q1hupMyvv0gfIbIJxFun6tD7Kp72Q=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1sktW4jXpf3A5pzxK3d92CMCKB9o=\nR:models.go\na:0:0:444\nZ:Q1mbC3Z/wSbEpmPZSUBRTnluj3Si8=\nR:natgateways.go\na:0:0:444\nZ:Q1pvEmkjdkfsdJ7ub1BNN/N40Wcg8=\nR:operations.go\na:0:0:444\nZ:Q1QQkkWtUm2OKZ/vUVfdkwr89rWOg=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1DHXPgVN9DnU2Y0ieGp+m+HRUuKk=\nR:packetcaptures.go\na:0:0:444\nZ:Q1bJ03Rw0u6EkN+wY3cU161u/I3aY=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q11LygOc85M5oRAJo4gI+UD6zqCQI=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1Ibw8c8Uy+qL1RtiNVZscpVNAYfQ=\nR:privateendpoints.go\na:0:0:444\nZ:Q18a2blAofYna+aLuUblcQbHCuBRM=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1ZXs43dYjj8PSUvIsthAB3VLa3LE=\nR:profiles.go\na:0:0:444\nZ:Q1uuh0BPL9AFH3QcktUFWq2mnXdvs=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1TdnCjLQnx3uHtUXKYGKyQ1lKcM0=\nR:publicipprefixes.go\na:0:0:444\nZ:Q17iMd1qxpnNEPoarlCN/T4ko8rR4=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1Bz/xh3JnW6oB2WoPKjleJuFtYd8=\nR:routefilterrules.go\na:0:0:444\nZ:Q17jw2TK+TwblmeB0F9yg3qMyWAJ8=\nR:routefilters.go\na:0:0:444\nZ:Q1lMo3ihu7xNVfsWtX8jyompz8CN4=\nR:routes.go\na:0:0:444\nZ:Q1NIwBWHqUI76dT2Ui3yTN+ozo7P8=\nR:routetables.go\na:0:0:444\nZ:Q1F1Ce9tk38zwIRZJPYP7qKSyHNhQ=\nR:securitygroups.go\na:0:0:444\nZ:Q1UCCoesqjGpVmr0mkOD7zpTe0IFI=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1B9h/IH3GUTpBJy3Blao1Jfr4/cE=\nR:securityrules.go\na:0:0:444\nZ:Q1iksgjYNfi+qWO844UEqv8HRdrYE=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1YsUzKNlAKlkQLr0yq9idAA61RRg=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1ODQh69S/giWvdk34OJOZ1n9xbbc=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1vpEHOM4cYk39m9BqejbfunPWGSw=\nR:servicetags.go\na:0:0:444\nZ:Q1U0kQ0Pq+TqI1OY3b0KfIwIh1Uss=\nR:subnets.go\na:0:0:444\nZ:Q1yw1IXGTZk8cZDYflm6TowL61cPU=\nR:usages.go\na:0:0:444\nZ:Q1OHgbGWct0Stb1bZmDNQpq4z+UCQ=\nR:version.go\na:0:0:444\nZ:Q19aHpl2gE/8S0ECIicMozS+mL03g=\nR:virtualappliances.go\na:0:0:444\nZ:Q19j1PyKFxz09/sojXlqcRg7Ogh5w=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1M/coGALzIMT8opDvS12PUuY8R7k=\nR:virtualhubs.go\na:0:0:444\nZ:Q1QHoCRfJ+st84+Kc6IoA0PP/AfyY=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q11cJYI2ojnXVrypn9Y36sQiFkgkU=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1nafA70oywlaiyVsgfv2BNq57YCc=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1j7pB2ZNO7+K6rE99z6DNKIkiavw=\nR:virtualnetworks.go\na:0:0:444\nZ:Q18W2knXFiZgZ245MK7E9A9onMtyc=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1YDiHTsBwaZqoXkMwajVKMd9QG58=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1mzlto4bitfRzkBWKfgKG8Evtx0A=\nR:virtualrouters.go\na:0:0:444\nZ:Q1oYoWV3iLRq9+TQuQBm0JUh2+zMM=\nR:virtualwans.go\na:0:0:444\nZ:Q1r2wx7ZqLQF0R/aAX0pqFHPq3EWM=\nR:vpnconnections.go\na:0:0:444\nZ:Q1MfmYOMNUZhnYhGcrgH/OBImP2p4=\nR:vpngateways.go\na:0:0:444\nZ:Q19tFJCLHhSgRsTWB5HMuYQmMtuFw=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1ST+izKRDRsugC9vb/HQqd8Vp2dc=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1tZ7I1a7eV5jwCDyYdf5o1tdDdH0=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1EFV4+DbOys4YW1+ZDJrF0Yl6e6Y=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1TkwyZ0XPCHwvb97eaYHCoARiJVc=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1+w6BzFWLkqySia8NB1tjgTqC89Q=\nR:vpnsites.go\na:0:0:444\nZ:Q1zTvJPdbKu+DOuSI2YubGr1LsZo0=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1+bfYtB4Gl0FHgRogakSzvTitL4k=\nR:watchers.go\na:0:0:444\nZ:Q1AUivflLE7do3K1knpsG8p9em4zU=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1yzv/lwaoaMY8hbxbXhCUU/y9P5Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-03-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rk4bPDpeo03MX2Q0LI74I2nCvXQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-04-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rJfjhuLeQd5/5RvcoNMkFcPMB4I=\nR:applicationgateways.go\na:0:0:444\nZ:Q1hB1aRezIDKeT67jK3sDN8oMrtq4=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q19pY7QfYyacxvhAQezXR9jE/QzfQ=\nR:availabledelegations.go\na:0:0:444\nZ:Q1DMAyOhAXo1IzL5YCWHl6smJntqw=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1dKG+f3vaM7sN0ixxYdNApx2YLMI=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1HHRBjjpYoKJ3ekD5wwGDAtWKnKg=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1ExCI3F/ozrFy2do+7xOuPjNJ0yQ=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1ejnYkkzownDgf4D4qZTlDg9wZn4=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q19XkX/zd2VTYNrqDJcdmmVjr88VI=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1jgmlszN7U6CAK0/6h6ly4AEcbRs=\nR:bastionhosts.go\na:0:0:444\nZ:Q1+jH1LPrFq5K3dMy3icNN365MKkw=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q19JFtEXBllOxiSnBI5X92KcDz+q0=\nR:client.go\na:0:0:444\nZ:Q1aA5+By4rE0GlBM4dsv3/nwT7Hpg=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1AnhV1gGLENwIUGcW3mEl8g+wjpY=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1C2POsj0NNtKuFmbmhTrdIlJryec=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1GbK9wXUfFseZ2x+Rzp4uE6nfHsE=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1UHKRyYnovr5C7HfzGGaOtJYkwEg=\nR:enums.go\na:0:0:444\nZ:Q1Rh6uqj6LD9qB8I5E1ccsr9XlmEc=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1X3FkM8zpMq/7vbylog4YUI39Inw=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1XfjKzWQCv02nwloaljdHAikPTys=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1KQvA2S5WAeeefCaCMZMVoOI899s=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1o1wU1yOP2zn2CytgmNyZ+oXzEXg=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1FxQqMq1HBhjydnWv1xBkqmz67Z0=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1hw0FbSqjHeDBiHn/yW30WdpLByc=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1LIdJDiklGDyP9JktLoWfENtpx3s=\nR:expressroutegateways.go\na:0:0:444\nZ:Q13lqapeCMHU+TBECiMvn8h2w38wc=\nR:expressroutelinks.go\na:0:0:444\nZ:Q15IRrni1ITutvFR1BLQaF3zN16YE=\nR:expressrouteports.go\na:0:0:444\nZ:Q1N8UzkB1w9G4pGQPU5hkCzIDdeQ4=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1yt05icHxg2e2jnj2YHqrARkRLjI=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1XwBGLbpIRFC2eJuLvqGwACR7R6g=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1cmvGAd9gyiSnaum4763Zl6VTsSE=\nR:firewallpolicyrulegroups.go\na:0:0:444\nZ:Q1AiV064gJtHGCHV3VtZryp/a9xXM=\nR:flowlogs.go\na:0:0:444\nZ:Q1JpSlIx/lFHRY6mcP6nB499D1cJk=\nR:hubroutetables.go\na:0:0:444\nZ:Q1RyO3Py99gLVJaIWk9doeQ61QQ38=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1qOOH8XOgekAdXpIRCy0oCkpe8pQ=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1b7Xnj4Ksae9AhxkDaJF77hwR5jc=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1H8/OgnzPjS5I27R2DS+QXzqOtKA=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1AL1sUOlJFmLicUFG/WLJaGnD8fY=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1rloQVZ3EY5HW5ezOgu261/Gx6Zc=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q12zuS15PC7X4WX3LmjdBWI5nvoXU=\nR:ipallocations.go\na:0:0:444\nZ:Q1zIQAJwn9wAd6sTOvB9EqxkzL8sw=\nR:ipgroups.go\na:0:0:444\nZ:Q143VuFe/fgJ1GRxNyATx3z3uSeXU=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1rwasg/NJ2HSOE2jvKTS77wOWy1M=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1F1agVvPiiGu3GvOYdvFCFfqIkSc=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1JwvZOolwPAKEL+HYc18Wl2eNvU0=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1PGDmp8Eu6lQ0MtPQGrHI74pnDQo=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1zztO4uBXSTHhywbbX0SS5gVjdQo=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1QrjiAnSOiECmZ7MBs8au3LpKndU=\nR:loadbalancers.go\na:0:0:444\nZ:Q1U/T4S0F740+P+wxHoMaUJ5Q2B/c=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1ayg9/DecTcsVgugFM/AYlLHGqrc=\nR:models.go\na:0:0:444\nZ:Q1PpCkoyAm57sgn5CkZwWZScpt57U=\nR:natgateways.go\na:0:0:444\nZ:Q1lXfq91KNwqCmTbDfveFFwyKb2No=\nR:operations.go\na:0:0:444\nZ:Q1DiDM/rA78cRWILTtjbZE4ELvZJM=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1nsRxciYHL8EtG/V2WyLJOE0eATo=\nR:packetcaptures.go\na:0:0:444\nZ:Q1b4XC0CyhCDoxAErnm//i48TvGmo=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1rkMwwVGBu9dnvK4g2L8gaFLNeAA=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1Y5sCk683JK+X8tGuJXFJkOpoDOs=\nR:privateendpoints.go\na:0:0:444\nZ:Q1X3jji1U3ZaB3NTHBtkW72wetp/U=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1vinSOOVGe/CtdtE51xEQuRrpTyY=\nR:profiles.go\na:0:0:444\nZ:Q1tP9I5SF3ZC9GKkdpYcZCIfisYjg=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1xsXBYQrj4xXfNyUa7mIWAk1eyqk=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1subpCunxgI/mxN7eKexK9pisJdE=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1vVC7YILyGzr2FkZxO3wNoBdP8HA=\nR:routefilterrules.go\na:0:0:444\nZ:Q1YJWQ7y52DZ/TEanuiN3SZENUByQ=\nR:routefilters.go\na:0:0:444\nZ:Q1HpJFbmkscoM6Qyq9h41tssWbUi4=\nR:routes.go\na:0:0:444\nZ:Q1sqy5H4sc2uwMxqNJeuIPGhDCC5I=\nR:routetables.go\na:0:0:444\nZ:Q1lT8oMXvMQ9yT1dEAyn6KBNVsvy0=\nR:securitygroups.go\na:0:0:444\nZ:Q1jFn1YjAcdbVJ5+4D4/U0acgZ4Gc=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1pOB8GV+hGMQvk52Q7PkF0sQ6U6s=\nR:securityrules.go\na:0:0:444\nZ:Q1rBHX/xRwiDtOPhl4Vk9xLH5Tyg8=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1pfJAR3iLpJmSmoeK2dROJAnl8Ac=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1+QDzZWlJ7HksEybwD6WhiJtYVUY=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1ni25BrFr2V/QWzf05Bx8D853YDQ=\nR:servicetags.go\na:0:0:444\nZ:Q1/AHAGBolK06Kg25rCr9iyfljYtU=\nR:subnets.go\na:0:0:444\nZ:Q1/L/vU29tsrrA/+gFvik0tMH3I8c=\nR:usages.go\na:0:0:444\nZ:Q1hiip4QUXBcsd3tBEedvr3oIMfH8=\nR:version.go\na:0:0:444\nZ:Q16jB3/qgVbY0wC6kR+Z+gZjqEdTU=\nR:virtualappliances.go\na:0:0:444\nZ:Q1ng0lBGGro3iSIQ4DaMwWRybQm1U=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1zEuHTBXwnrTvocCXyLxOROWTbvs=\nR:virtualhubs.go\na:0:0:444\nZ:Q1QG67WoxUWof6ke9/U95IfWd5phs=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1spepzpSm28t0ztCewxJSowkOC94=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1jbgNjhOrqYsIy8zRWGYERyazqio=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q16CFdaJP6Kgc9tI0d/RYxDDsZH8c=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1Z6PqV97nreWMGClpyI2Oo1Whc7Q=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q19XYTe3p6tLJAA3njxW5rUsX9B5E=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1rPn+5puV8ZAsKhnXp/K1p7DGdls=\nR:virtualrouters.go\na:0:0:444\nZ:Q11sMnSsvLkQfmsbpDjrJfaOkl8S8=\nR:virtualwans.go\na:0:0:444\nZ:Q1R/xlIbFtBNWz8t7xeduJBZNZY/Y=\nR:vpnconnections.go\na:0:0:444\nZ:Q1vmF3ex5nJ1zLtgkAH9x+6Kmr+iw=\nR:vpngateways.go\na:0:0:444\nZ:Q1mIimOeiixhK+TUn4OLrq9d0BtpU=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1lUwcniRtPEIUeVzChCfE5za1vIg=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1dOJ804NnevZYwyrjpdkBxwJ95gA=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1PIRT8A5CiG5LCtHyqwZtd/xs0Fc=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1u15Wiv87QOexSkdHXfr+T/ZSXYE=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1htrkVs+SVegt5oXakBGiXPpa6yI=\nR:vpnsites.go\na:0:0:444\nZ:Q1pTLHJE/IeE5CFrcmwKUDkmPa5lE=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1/wwY9y9aIQhyOdb5N6BUUIFcL3g=\nR:watchers.go\na:0:0:444\nZ:Q1GNW269OFpt1JTaXbHAXZjoiV+sI=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1bYGrtbcUArJ1MTXpeuBfex71ULw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-04-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aqD22ccFO9puMaR2jL0uOSMEOlc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-05-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FW4Jm1aNtdAFgXTjLYhasY+lokc=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1YmELunqlQmcXNTdqwWrcC+mgR1E=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1VdEpE1KbhUXHoJOHSskCdYYXY90=\nR:applicationgateways.go\na:0:0:444\nZ:Q19Ie+drKogbk8cji0KFOtiAUTq3Q=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1Vxni8FR1fSNwxvfoac6PsZ6hYWo=\nR:availabledelegations.go\na:0:0:444\nZ:Q1vVWitfbNCI9D5w71K3mjrRS/VNc=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1XtYpKPLk7qoyEqQRnje1BtE3lTc=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1V0TQAuNBGcV2N7fNl2S5blDI9gw=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1gCwftt0nk6q0NhvzbIXoc/HTtgE=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1cOzPDC9faDWG4t0jdGl6js979yg=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1jDVrng5zAdE1/4+ofcstAtsp7YQ=\nR:azurefirewalls.go\na:0:0:444\nZ:Q18pHMdGBl+fDP6aKWNCgP0qLb7a0=\nR:bastionhosts.go\na:0:0:444\nZ:Q1LfqQcz7TIFeH5ipbaaIcYBszfTg=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q114Ax52dkWP3WRh/bZwYwWORH3Lk=\nR:client.go\na:0:0:444\nZ:Q1gWIsx1jmM3f8NVHLaIFKSmkv4zY=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1opoQZih8puPMTdTspHUVygqrmsI=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1+9dycZ9inUVh9xk+/HYWG1SivfY=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1c9/c21CO0+RfNza9069m5pgg2fk=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1FHNGWZPNRmRGfHEXDYOEDQXpNu0=\nR:enums.go\na:0:0:444\nZ:Q1uTFQmSqOb/GQaaHHqxM8ezKl8Jo=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1uDEtzlBf1JOAA4FTesfKS9jPYAk=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1+wSB8NEHGb8jvI+Lxoa6V3AK2Pg=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1e+Nw7nlWQv5867Uikkj9KXjrvOc=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1rjwxhjswzURKsNqy7CQH05IOGV8=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1bPdiY7gz1nNyhtuBuArNWv+Ycdc=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1ogr1YS770XPDYS2hL3HQO7flDJA=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1S/pqcdj9cPzOyRf2/zrctm8rqGw=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1IOLau6Lrifsc7SHuSoYZSUSlFDU=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1v4ijSq0RO8dhfmfGYna5qrOpPIo=\nR:expressrouteports.go\na:0:0:444\nZ:Q153viper7y8Ykaurjb3QrYMBWGOE=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q12RBA9/8/2C/21CLErZW3F3E3VS0=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1P+JC3hwFozCO/SrsI2rYcJhNWYc=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1MlZb7QJa9KKkr6y+LIcCa6/l4Eo=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q175qokCWhGmx6offzSnwIIGInpEg=\nR:flowlogs.go\na:0:0:444\nZ:Q1MkbsqT7OlrbxnGRTlO09vVJVG/Y=\nR:hubroutetables.go\na:0:0:444\nZ:Q1DIvZWMc2OUtzdN3qcQUau4Xn8D4=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1EE9OgQ49TAHPcdo/1YfMb4CMAzk=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1zMwDQRgWP3RQOCrGf0xcPz4VGXk=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1uCL5Xrh0GfOfQI/gDb13UxnQOPI=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1xAJFZ6NTliDDR4fT9WtUE6zw1tQ=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1hwhWkToxKFbQXJfQpuBWmtcGzO8=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1VyJvojqTa9cFALDiez+/BBRWpnc=\nR:ipallocations.go\na:0:0:444\nZ:Q1+XGcOA+Yb3WotjcrRkV3KJOpy6Q=\nR:ipgroups.go\na:0:0:444\nZ:Q1uzm9kZMS979/xZi/0tL8G9XvsLI=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1Et77V+YzL9Gn7l536o59yDy7laY=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1DANrhgJTIR9UawcPRYfuFYciUO4=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1Vhy/HGmGx0OkIVGW76f7VvPaa/U=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1pZ5S1Dhqj3Qu10X5Kik0JmSwR1U=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1r0H/XgHtoqFrLXFP17MJ9+mQb1w=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1R/a2Cc61pZRpPoh2Wih59Vdg66w=\nR:loadbalancers.go\na:0:0:444\nZ:Q1GZIlCVR35sgvdWM7GjITI70lTlc=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q198ZLpME9Fge7TBvnNFiEROiCAVk=\nR:models.go\na:0:0:444\nZ:Q1/cWW8wnf5IhEpJcq1vZwcVSiS9s=\nR:natgateways.go\na:0:0:444\nZ:Q1Ie/iYhqfkEdOWf2oMCMR6eXV3gg=\nR:operations.go\na:0:0:444\nZ:Q17WbF1JvGvyrzpryYDKN4bFhOtdY=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1P4aY/68yubHB06HOxsVxbP72En0=\nR:packetcaptures.go\na:0:0:444\nZ:Q1O4/e4qvMeCDZBN8vzTL7rDXSJvE=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1elXnX1AuquOZe6Dz4BfomWCGovY=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1/7cLV9l+M4ki/1VlT88zg+Lfycw=\nR:privateendpoints.go\na:0:0:444\nZ:Q1vKex/fgMRk1kQ/CJFB4HOpF5emU=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1bxV+XarNfYjwJXPCxGemmgGEHkU=\nR:profiles.go\na:0:0:444\nZ:Q1tSMhSKhGtHrzxYzderaKxjdGFJk=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1ylBvKm9rVgCeS29LI9oh58UPdl8=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1fCn5F5Svs90MkqDbvjLnep7AE3I=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q12+BE8zeW7by8s8Skm3mzF9S2pv0=\nR:routefilterrules.go\na:0:0:444\nZ:Q1a6+KBWVJQ3KOB9hxVGYosYvR+ak=\nR:routefilters.go\na:0:0:444\nZ:Q1QPh/wG/Fw5QKfmpz7fZddTsGcsM=\nR:routes.go\na:0:0:444\nZ:Q1+Muq7e+Cq7uYUpam0l1BkcQoYug=\nR:routetables.go\na:0:0:444\nZ:Q1ObcsEBHGwUeMQtN1SA1AnkN4suA=\nR:securitygroups.go\na:0:0:444\nZ:Q1+NODnEAyuStDkG5cIkg1jP0QExM=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1qYn5T0q4zW2OucF5OzunoCfli0A=\nR:securityrules.go\na:0:0:444\nZ:Q1/u/x8oMI0awac4DZjkdVxl8jo+s=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1Z0wb12mW+eUrq/+wax6uxfAhLk4=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1abWVY96JGu/oPmERbqyKsR9WM1k=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q18YjFxVOT1bRk2Vhw71qI/2ABT6A=\nR:servicetags.go\na:0:0:444\nZ:Q1mEPNaXrjXu70IAzfxinDRC1H0rQ=\nR:subnets.go\na:0:0:444\nZ:Q1ih/hTKGkREHQcGwHI8qHUIbxO1Q=\nR:usages.go\na:0:0:444\nZ:Q1FRcNsH1j4SOC4lHzdvXBjFYNUDs=\nR:version.go\na:0:0:444\nZ:Q1838tPLu/Ef/6swKeUWqeI444694=\nR:virtualappliances.go\na:0:0:444\nZ:Q1vzXcbatbeGCCyvvfFcCHW+UXj3c=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1H4nNKc8rJpI1bH5EHYQCMuM47hE=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1K+VUesOcUH9uMPwFAGPX/yzBjMs=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q12a6yXhsTjC9Js5C+SqRWvGNHavM=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1vaimCaFUTzetvSgSBrij+9tjXJs=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q1R3bVNVknoTQyX4X5yxkJZ0g9GzM=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1n5EtGmc9Dj9vpp0K/r8ZO9K3ek8=\nR:virtualhubs.go\na:0:0:444\nZ:Q1PyMHKUFIDiU6odr87G0IbqNM1Fk=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1eJDuOFrPX4jQUXagFO1Si6BCC6U=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1H5psTQxY9+vbTy1eEAZNyoYeaSs=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1L9G/tTnIPafVsRAMxRGCmqf3a+s=\nR:virtualnetworks.go\na:0:0:444\nZ:Q11GCUnpK7t9CA7Y7qMbVKFcHSPlQ=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1M61dI3Wy6eaZ5lmLUMlR4sT0Cxk=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q16Va9L+xAoykB+U+ZCxPWfLR0nmU=\nR:virtualrouters.go\na:0:0:444\nZ:Q19tXddyzgVuCuRTWCIDrHh9Rz5fw=\nR:virtualwans.go\na:0:0:444\nZ:Q1Hrluw3WBr+ouMsXeVINtpQbMXns=\nR:vpnconnections.go\na:0:0:444\nZ:Q1Ktn8zejDNtgfV9MbF+0Xk14QYzU=\nR:vpngateways.go\na:0:0:444\nZ:Q1+0fZobe8ENjG0njKu+Ql1bpPK3g=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q18e+E3NcI8cawz3mxxfRVqSb1VD0=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1YtVLWGxlhW9ebFF6dy5aZ830H/Y=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q10iikdOGSKcDtqmJ5Jb2iuBgUdaA=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1R0uqCrUKwZg46cby1XDHpuqP2YU=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1fol6opsnDeJo+CgZR9Ut6JMAf+s=\nR:vpnsites.go\na:0:0:444\nZ:Q13NiyMvhwzaAgmzPM0YCyPMWnrb4=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1GRxMw1tVfDWTu2+SyvI/vXHEm3c=\nR:watchers.go\na:0:0:444\nZ:Q1nwr0heoqrafEooWLqeasZmfulM0=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1u2M4jjaLTqj2YUyJd4TIy44/86g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-05-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DaXlR4RY5eBcsXfQKK9P66NllcY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-06-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q193TNI0WA77pHs3fiGRFdXPx2u8I=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1nudz2Eky2wjYJftujs7lD5wI3dc=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q18d4ZIaw4bE6RLkb/34msrcigQyA=\nR:applicationgateways.go\na:0:0:444\nZ:Q1nFZAZ3nSnXOycg2A3ktrTl24cdU=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1QdTSJgpHg2peoAw8yE0cSoZe7Go=\nR:availabledelegations.go\na:0:0:444\nZ:Q1yK8/Xzq1MMvr3SsCx/KAiu5lkjs=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1nscjkbPT0iTWytSpM/SxSMmgp/0=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q19ZZb6XPzrQeI1hSWdQSEbzOg9yo=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1zB748uODeDDZTSUQbcjxo7C3cQ8=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1NYIXgo06O6j12Czq9Md0Ji5RF6Y=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1v05KkvGWnzge6GQiNFsLii+zCDk=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1rJsYauwg41rRm4iCQMKiWNrwTgw=\nR:bastionhosts.go\na:0:0:444\nZ:Q1b2nMDSjK8vUxIAfAedU7jTMlorM=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q15xrfka2Mn1XiGM+JKLMnt0O+iPM=\nR:client.go\na:0:0:444\nZ:Q1EObsTgtnlDF4eEonE0Tc9KEL5ow=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1jQc5A1Le4XJPKx845gyWB0lxZtY=\nR:customipprefixes.go\na:0:0:444\nZ:Q19y7VJwfqqfrwXCicz2ZRdmtaYl8=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q11xslBgIJJrcw65kEwkin1xaWnmw=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1XejMOS7rMCxrw431rLnIj6QSQWQ=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1rnKszYs902/cr1G1+uCkCU4lJcE=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1RvZoeLLE8BKno5ZYjXFsj6uVYG4=\nR:enums.go\na:0:0:444\nZ:Q1VUWS2c6hK/LTa2EVMGg/QJQ5Vi4=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1PdawQdE7JpSluSvJmZXQjDbAaG4=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1G3MbvTOtWdHzD1CRTg8w/Em+UFE=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1Q+qZLB8Q9OTWOCIejESPjNJy4qg=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q10lPnmNZNVmw6cNKlF4b5kpeb55A=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1bp3vpW/iXSSdI8XU0AKowjJ8q/o=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q12JLGBjvmqrXIll+Cbq3Sft68GVE=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1O8iDmjyZjIHPx+jDLPZK/rOC9B4=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1BF2a94Q4h4ET324yJ3hNSGhITzI=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1D7ugTkRVuyeOp8LTV9rUSPUHl/M=\nR:expressrouteports.go\na:0:0:444\nZ:Q1/yxSUiCxS2McynMIedksUdQIRwc=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1tf7xHoD2u/zwnK0hcN1DarvJHeA=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q12hKBKUqbtuyhsooujXkeIkzH/yo=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1dM9SNz4RoeT5VATNeiHATGhfj1c=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1U0YXKh6JLu7SwHjsB4i/ydvMucU=\nR:flowlogs.go\na:0:0:444\nZ:Q18HrIqCwouqNKfLkrFP07rNDLXkQ=\nR:hubroutetables.go\na:0:0:444\nZ:Q1i31UTlI0C5Ovo6kaRFH+EunKbWk=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1vhcvvk8vy5BovA6pzOnz46uQG1U=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1ylZkg9JWhq+hpTv0+SxiEwCsTd4=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q1jSXX37Oz1/QapfmJOwCczSgWG3k=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1uwWwz7RqX3yW6Zp7Gq2nVAfFQQ8=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q11ZzXC170KajSyjULmg778T3HPSE=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1eP/Bwzu+TMSn47mDMewkHgVn4NM=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1K/1YAJT5JBTwnWUIr7MsbDIHms0=\nR:ipallocations.go\na:0:0:444\nZ:Q1KABXkCXIL6uAozgfW5jlrKE3txU=\nR:ipgroups.go\na:0:0:444\nZ:Q1acWd/s26rCc7kjqdAci4tsGCTYU=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1Dz7MehRjd7AQBVFvstbASthoSes=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1HKofYbaH60se50Zy5LbIMkb2VJA=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1nQVM4naK3CAX0+2nGavzgSrtzY0=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1/ofZ9SPSkFFxwIOgBJc6Wsx6JHo=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1qhUubggSYDIGl7W/JMoDxXy890g=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1FA/bWCcQwbNw7NM/dEyMcEMs/8o=\nR:loadbalancers.go\na:0:0:444\nZ:Q13GUblR3vHexUwth1zb174BWidHQ=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1qGr7GWUfaHovNbY/CQr3uNP+ZLE=\nR:models.go\na:0:0:444\nZ:Q1DOp9fbuSwbFQIBEqulzhFfy4d3Q=\nR:natgateways.go\na:0:0:444\nZ:Q1Ctuej4eyR0Vifthlenuiw0MpKvk=\nR:operations.go\na:0:0:444\nZ:Q1ALcnepVI283D32B2/WNSBbbB6nI=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1L5m1ejZOV7LjBNqXhlb6hhxrvsY=\nR:packetcaptures.go\na:0:0:444\nZ:Q1F4QDbkFCutvOzPSq5hlAnEyG1RQ=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1JZPk2NIqraoAGtU8GQ9gvNUPvfg=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1Xxubq6Wumh6kSIykW+BGzCN8u6k=\nR:privateendpoints.go\na:0:0:444\nZ:Q1Fhh9PMvEyVE2ZatW6SLdMUGFq7E=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1Y50F0kvAmJG4hduG7Z+lThB2QsA=\nR:profiles.go\na:0:0:444\nZ:Q1uOi8Uf72d6+PMSOtfPCGJYTSm4Y=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1+9qR7zn0v2mhsPvd1oAVXSV3Gik=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1JwQfBdGyeMttX1WQIIpXRY4TpX8=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q19yUJDq3F61YndUPRN05zGwUc374=\nR:routefilterrules.go\na:0:0:444\nZ:Q1N/cJ3zWZB9Fln2kaQbVEwVgY+kA=\nR:routefilters.go\na:0:0:444\nZ:Q1+75cX2ZmW9Ac8CGM2D6OkTcIJMc=\nR:routes.go\na:0:0:444\nZ:Q1L5Gp/5/oJzz2JzvSjeYlJSAxyYk=\nR:routetables.go\na:0:0:444\nZ:Q100S09bTUXAr22ksWj1bSu0OIqGM=\nR:securitygroups.go\na:0:0:444\nZ:Q19uRNCaF+YKmuC0/pkFbTi2/0q+s=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1Cmpkfy1Bj3h+lzrRQPJ53g3JYKU=\nR:securityrules.go\na:0:0:444\nZ:Q1ZDS2FDNeVsL8J+u7j2xiW5qoJcU=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1DevvRZ8Lescu+p5L0L+/ByShlnY=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1mfyWmeCz3c29fTLKInnM+GJAu8Q=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1N5+Y1/pw10moq8BWFuOdOxLqbZg=\nR:servicetags.go\na:0:0:444\nZ:Q1dTCSoYKuNX+d+oduQi273nFnRBQ=\nR:subnets.go\na:0:0:444\nZ:Q1lbkd7cWBrh6BSbR7hQJbtulzxZU=\nR:usages.go\na:0:0:444\nZ:Q1Auq9H1ZRQu7eZV+req92MzH0Ufg=\nR:version.go\na:0:0:444\nZ:Q1qnOAOS2EbzsHuoz47J/t7/TEeNw=\nR:virtualappliances.go\na:0:0:444\nZ:Q1WcsXY2bGIKun/KmKno5R7qS2c/A=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1MP1cNxgqO6BnZD0Ehygl5wHzkkM=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1eVEBSb0aDNSqsF/bm1kliO937cY=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1fWqLVS/chGTiAVO8DSwxpjHFdUw=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q14PhnYWq8fdXAjsp8gOs4VO5ZImE=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q13Z8hiWangna6oBaXUR3LzAybUfM=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1ujHtRQGcd5Mxy/dYc2nPSsnydBM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1yYZZpU+ZmeEcHkk2L1STy06cbBY=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1BP/FfcFYO8abraPzhMhhrqdvZhc=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1oE8quTUd8nTb8ig3Ykm8t3MMkCU=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1kZ3++WLW46NP8c4gFAbS6Zrw+d8=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1gK6osZhKSZ0PQG3Y/pgPoM35wm4=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q18IgYtwOxgoQ4YQ/QW85jPewnV5k=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1g+J8Y9WcIAOgL8I4usnfeR7FfLI=\nR:virtualrouters.go\na:0:0:444\nZ:Q1iGc5ET7lZ+SrAmZgaSWvMv3j4YU=\nR:virtualwans.go\na:0:0:444\nZ:Q1mL5C6BM8cElrk8rYg3zc1zfjm50=\nR:vpnconnections.go\na:0:0:444\nZ:Q1NrdDocBfD6qtd4P+oUCn9g7Z3ew=\nR:vpngateways.go\na:0:0:444\nZ:Q1FFWhMsF/VZtQduSwjT8QLnge2dE=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1d83Y1Z5pIU3/gXWYbyHxRoGseqU=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1t9fMcbLs2Msy8eFnAZTwXLPawIE=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1BYiPX0i/klK+dqUP6B1m5/cFMFQ=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1rY1Gllm8/0XB/vSQ03bR4nzr6fI=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1cwa5PCfMGTuHUN0it8zYt08KBHQ=\nR:vpnsites.go\na:0:0:444\nZ:Q12niakk8iRQsl0/4xlKzLiPnWngU=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1FJo3Wac64sAnxLF95qFohex3nhc=\nR:watchers.go\na:0:0:444\nZ:Q1zqQ1qKHno81XLgfTkUMfctZClIQ=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1P0AmM2qgjTqDY7MVfPNjb13yzcE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-06-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GynBzuWR+jP8bgKDTcMtxPctnvQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-07-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DGgGiy850Ydw4sUPdcC8MN74TfA=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1NVxTMwGcW/J3oFweN4UXj0QQOcw=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1xH55w/OOuuf1dHUB4+PU8zsKe2g=\nR:applicationgateways.go\na:0:0:444\nZ:Q10lBLi0dsz34GMQFK+MMdEDcQ8dc=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1WJQALrMlKgnK/alu4hyFdW/A+o4=\nR:availabledelegations.go\na:0:0:444\nZ:Q1ncWgN/PveCCbUW/nVEBTJcUKjPo=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1C35eUdz/zGkw+ygQLfCocl7T8fY=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1dlZn62fGeTK25cb+8QAEQoTRD0o=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1NEAAfkzvZqAjgJtxyznBLi2pOxI=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1OTHBpGVZ0N2ageC9e7OFi9Qq2Xg=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1LhbVCegBZ0XR5TZmsbXpxlMFruA=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1ffdMrhyfUxZerJSmReO+4Qi1ubY=\nR:bastionhosts.go\na:0:0:444\nZ:Q1cJgckEhfnTBYFqvxHo3iKpdQWkU=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1SSk0kVmQw/TLJbd4+zHtEvqZ544=\nR:client.go\na:0:0:444\nZ:Q1CMaHvbswOyAmk6v0eH1Eypvrwok=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1t6+zQli2x1GC8DI6Fmd8wnXzyp8=\nR:customipprefixes.go\na:0:0:444\nZ:Q1UHwQz0xSciV5pNUQNYDB9NFV0yE=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1en5w1v/pIVuSzYUYf11Oomp1lzE=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1MHcngtDorVMGSz+pl5Q5cuB/OSI=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1olPptCPFXHv5Au6muPfUUaXqotU=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1YVH73rL2RfEBTrsABCCLAB4KQhw=\nR:enums.go\na:0:0:444\nZ:Q1R9Pro3TlZSZIR5GY+I4V0QxN1v0=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q14R5GnNY7mIPvQBxqlci3MV8cVoo=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1aCPCkMZTPd/kARNF0qZZTTFessc=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1DPeO7HjhIZfmiyrHv1R+XsDVqxI=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1u6BuYEFFl+6VJ1nYeIiFZ4hfJeU=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1WsXNq35R0NnUNwkpn8ITwCTRGdg=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1qtPYengcpkvB1mqr0uxeuJOg9W0=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1bkq0c63dipl4khwLo5JIsSFBJfY=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1Lpq+9QE6V63TbuFbVRePgGDCUhY=\nR:expressroutelinks.go\na:0:0:444\nZ:Q16dQyfdr+8izpn7nzbEbXKni4kBM=\nR:expressrouteports.go\na:0:0:444\nZ:Q1bitqqkA4r03YBw/GdH+mfjYkBuQ=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1xMtxaE+Je/SP4QFwgWXuyWdAbFs=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1LRNlF9gSTfhqwswetiIlQs6e1fs=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1PR2AOWeB8UPUaLTxcy3jN4zs2oU=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1tfM9REp5C8Wpa303vhxXE7npGvU=\nR:flowlogs.go\na:0:0:444\nZ:Q1oux61P4wcgRMdxHWxf16bP1BS+Q=\nR:hubroutetables.go\na:0:0:444\nZ:Q1VywF9wQCbC5KRKXwP2AudDTBZJE=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1DXqdvMGdP8gogV1mtTQJOOfG1dQ=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1Ob3ovt5dZ4q/SGsMn4PsWYCP3tA=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q18a3ldumbr6feZoCe+nI5QbKnfTM=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1wMUQTOJjOmvVuXo61sBD21WukAE=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1wTcnKwkc/znUH/6Zij/pMLVzxeU=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1BWEYWuj1LKuGiWXa3uhqBsQ4Rdg=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1xw+hn9uXR15G4RbvVmwEWMv5C8I=\nR:ipallocations.go\na:0:0:444\nZ:Q1bvfuscvVYZM9Z/ltgeEBRH2qrH0=\nR:ipgroups.go\na:0:0:444\nZ:Q10n48VbZpZ7zhMUgCD1qUdWeDfCs=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q13t+QSyWzajnRVztuET+VTDfMNYI=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1mi9s8UWaTJjPVsMaF3a/Jc7nvSw=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1WHoNh+qsu0SNV5jM3SiipAf3Nxw=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1v7fo0d6SeQ8YC9pEl9sqk54CTmY=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1gHMqkC61DQaWl7x1ZZ3QB9TUpgQ=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1GM1UGh3JwQXQ/J3bO8s4qyPW/iM=\nR:loadbalancers.go\na:0:0:444\nZ:Q1RmyUbvG/uW2SX+Le+SX+TplaGuI=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1XHvW9x+TaZTPW1bEOt8WVreZccM=\nR:models.go\na:0:0:444\nZ:Q1M8uWL3kidqYBaK25cDpBsEQmSxs=\nR:natgateways.go\na:0:0:444\nZ:Q1vxZFqWujh/7bHwmngMR3MhyEVoU=\nR:operations.go\na:0:0:444\nZ:Q1QFEJ7GxsKVmSU0X4fRpKfFVba74=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1D9O4TeQkTdx5O4aTa6QqwH1JWKI=\nR:packetcaptures.go\na:0:0:444\nZ:Q1b3xKVTzoV7pFpD6B2XD1UMzwVG4=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1Dw67mNlY42LcjaEDNPVIW7N4kX8=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q166IhTxpZsgKZtDhO3zSzYFEcH4c=\nR:privateendpoints.go\na:0:0:444\nZ:Q13L5zYP1Q/uh//xddawuI+x/rv+M=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1wuOmh3rB8IVKK7UwDaHFP4jFghI=\nR:profiles.go\na:0:0:444\nZ:Q1BSEuWWFlGTGd5EfW9Xv7ugG80hc=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1qRxqjCkvIsjmL4rg1T6q3PCX45s=\nR:publicipprefixes.go\na:0:0:444\nZ:Q11Nt8W84lCWKsJpxWK7yk/QcCvMc=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1KHUAFTIjg5UJmr17S+iE+UTIIYo=\nR:routefilterrules.go\na:0:0:444\nZ:Q112rmuOGD1cZNLVLsAV7xL/OHXx4=\nR:routefilters.go\na:0:0:444\nZ:Q1FDbjlSobTJA41KFsr6QUjYvjGlQ=\nR:routes.go\na:0:0:444\nZ:Q1tem7l6ujl04CZ2Wjb+DJSzEtKlk=\nR:routetables.go\na:0:0:444\nZ:Q12RsSQV53KgjcfOAuvpz/W6bT/q4=\nR:securitygroups.go\na:0:0:444\nZ:Q1XuTOc4qKjS8jewV8Cj/JoKN5PPg=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1oxkuAfB9iSGuH2I18aGh4Wr7oOk=\nR:securityrules.go\na:0:0:444\nZ:Q1sVsvikbah35PPFdrtjNwmYXxfYI=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1PcJaXtk+yIsFt3tXVVd1juf4pD4=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1i8z+g/Gq1dgiJYFx89s7DwnLfLg=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1fY2lZPIIEpiBD33W7eOnUPhNB0U=\nR:servicetags.go\na:0:0:444\nZ:Q1Nhzx7wZ7h7JmJipRkoRRDE4yyLU=\nR:subnets.go\na:0:0:444\nZ:Q1E9eT0o86KbpDjntRmJbeL759Nuo=\nR:usages.go\na:0:0:444\nZ:Q1RKf98TaessLpTjsJJsp9DvVka/M=\nR:version.go\na:0:0:444\nZ:Q1r0cQih+G4rAGAYfYTtnrMUsyq7s=\nR:virtualappliances.go\na:0:0:444\nZ:Q1lYQV3soG+9NSCAbjuqkcxiOPB3o=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1DKjsEkS7P4SDXlWiupFU8/ESGOE=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1Fu/WzK8AZMbGzI+iAaXx3Zy2pt4=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1Ab+k2iUVEnIDOgTQT5wZniLpogk=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1sUNhz9/rO1YVU5WvXZEk9I00CvI=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q1r6CahzoGdt51uAQDwSRR47VUyQ4=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1MPRAB6au9E+Wdooq+a6YZf8vUas=\nR:virtualhubs.go\na:0:0:444\nZ:Q1n45809XG7HTK6sucveX8ULpRmcU=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1I5zPur+UVuGbv5CvhAlbnT2krA4=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1y3Y0WA7L6MvOkkHZH8lF2NaHW0o=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1YEZMa/u3PwmqMigXHCc/IFMCpDI=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1gxEGZvVxvtxnQg7Z/4T7U8A7FMg=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1DfIwVla3AIU11vhI0277CnlElM8=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1fTNX9Js5cQudx9ErSiJiTuaMP2Y=\nR:virtualrouters.go\na:0:0:444\nZ:Q1hoEyEQAZpNbOksUKPjuZ7sWP+4Q=\nR:virtualwans.go\na:0:0:444\nZ:Q1rjn59YEaI24z7wKBBZhLZxSosOg=\nR:vpnconnections.go\na:0:0:444\nZ:Q1x4wTw90QMZlw1vXmf1KPvhsuoN4=\nR:vpngateways.go\na:0:0:444\nZ:Q1vxC4XQW447uERjt5ilM4x+V1/Ig=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1/ySKEopqMOgHDT+4x8ZNlGXrOT8=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q195bIDUk076OqEaR5pj9f2+Fd/kE=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1DjvSzhFMnZDDbUgHhRDGmzlSTdk=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q12vBEpLm/DGxSvPxoaEVjj5hlVAU=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1Ve8VZ5iMlE3rzoR3tEOmlnY4v6Y=\nR:vpnsites.go\na:0:0:444\nZ:Q1vx5p/4eXE0J0fxuKEo2iib9P+Ik=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q174Y8smuZyZJrLha+x0T4DI7JM5k=\nR:watchers.go\na:0:0:444\nZ:Q1H1J9ZCxrAGJt6sxAChm8DtcQ3o0=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1uGxMLXMBHD1+54qctHdYjhmINbc=\nR:webcategories.go\na:0:0:444\nZ:Q12IehaB4PInquUqCgossF6NyT29g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-07-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1O/UnfvvPcTg1dVeCCVaTEOwN9UM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-08-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YBtXsj0IlLJ95eBm5dKnj7XraEo=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1qRyj3SA2HWoeKdjRRdgr92kughs=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1JTIi5o045xxvE1ZH3daUYGyimK8=\nR:applicationgateways.go\na:0:0:444\nZ:Q1hitZtCyNXuh4mDkBlDmn9knB2c4=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1HSYi0IIoC0iGx0TVUM56yP/xNto=\nR:availabledelegations.go\na:0:0:444\nZ:Q1StkRyxe6y18nedogdO0bxWrKLps=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1XixTj3dNktj7CYUDSqwJTTIoAj8=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1G1moLmLlcE6xiy+ZZhDzRY8PC3w=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1QyNGFvlJcS/WKNt3xtn5qV92XBw=\nR:availableservicealiases.go\na:0:0:444\nZ:Q13l3oLTIQM7DC7fBhIkDGOztKJuQ=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q19HvfKtMWN7SbZX1KHFMvKDjNsqM=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1fMvIYitNiR85bDe0ZPkgv4x1Fbo=\nR:bastionhosts.go\na:0:0:444\nZ:Q1D0pAHvW4ZQBEMg90vMYKoV2hmPw=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1q2DtAMFs4JZR2yW65kaM5qYY8rI=\nR:client.go\na:0:0:444\nZ:Q19pl/d7JCRfW7KoAvOrJTCXb63bk=\nR:connectionmonitors.go\na:0:0:444\nZ:Q18+4vdehvM+FTfeAGZ/qauqfvn8Y=\nR:customipprefixes.go\na:0:0:444\nZ:Q1Ay8OrYTMb/dNn6TbXnnie5KKQTI=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1lQ2Xn0a/l6tcLo7n/WzAajHz/Qc=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1kyksek35JmhCd4nUwN89re23Am0=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q16qdVvLfNBy5TxQl5/sd4zszSsWY=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q11l9l0TiRgMJYqmDa5PdxJAVBAAk=\nR:enums.go\na:0:0:444\nZ:Q1DSloHdvbxYxfT118vjr4gx4gMGg=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1sSyrLGtwBBHQOpgdXrQexrvCSMw=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1/KxD5GVHBjAQGz0ZnAJ/ssRLG40=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1eOg1gpg3kdtq1r0sbhyQkVdNSqk=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1N379Zhc91HAoNctQxxNMb+hz8/0=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1d7hPYFFDH7MEqegHvZ8igwWI2cE=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1pRNPxDq1IjQQ0xrZYwjmt19KNFQ=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1nmgw7v3J5rGUZ4ZU/W+/rAVcYKA=\nR:expressroutegateways.go\na:0:0:444\nZ:Q19RJUVCibaDHf1rt0ctMBKjNId00=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1Dujx2ce6MUMs7LlX/YBzmmbvgho=\nR:expressrouteports.go\na:0:0:444\nZ:Q1Cr+bt0CK0J5zjW4zToJyIQKZ/K4=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1G1Uutpk4RQWYfhgN5akaI0XR0PQ=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1u8HspKGzBxvP6xBjoxRiK0za7Jk=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1Udb3SIDPvl3r1nf86hZaRYZSre4=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1v8AilbMEJAxq0hZE/HYy8yd+dZw=\nR:flowlogs.go\na:0:0:444\nZ:Q1/mEJaXemOpO49lUhPLWSFm+evtA=\nR:hubroutetables.go\na:0:0:444\nZ:Q1k628VAjtPskQfOdqtW4TK9KiXMI=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1b0Kgy4yhdZDn0MyeNiuqtiV2Ur4=\nR:inboundnatrules.go\na:0:0:444\nZ:Q15x3vfasjHMZzwVzcRk/K5+p92Ls=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q1U1QcnG/eyLqfxSvx/CuYghV5D4A=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1ZdQLzG6p/TYogeNahWxSbWKSvhA=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1HX84T9OT98MfOhiLRFDKPXoyrC8=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1v2hPMVr1BcZ/GvLWyN286maevmM=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1vgawY0AFxQeOowXRxTZgXzbH+mw=\nR:ipallocations.go\na:0:0:444\nZ:Q11Y5a25iQP8f+5UT/GpFVNTYKNPI=\nR:ipgroups.go\na:0:0:444\nZ:Q1nULTlbmd9SYQ+a7MLegvxkRiCqs=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1x4+4HJeo+NO69cGXUe36sR6htV4=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1gMiB8IswIvvG2yoV08LgTVevuwM=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q13IwcFSxWVjJKhgd9nYbZwVRnDAY=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q13hZqaGww3fdMAKKrFb0A+gm2MI4=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1dByWYfn4eNmqQF0yjRoIZkEpF4M=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1V2fTC4VUatAZIZOB3sEW7E5N5Xk=\nR:loadbalancers.go\na:0:0:444\nZ:Q1cwxteUHbXkaOYCeC1a5kdNkcL68=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q13pe8A4QTz59oH0kGz5j4/P7YbPw=\nR:models.go\na:0:0:444\nZ:Q1v9cZAP2/kggyINiCEMSi9CrVufY=\nR:natgateways.go\na:0:0:444\nZ:Q1ZcXuAp5PFJMQQVpNXvlGYAp3j7Q=\nR:natrules.go\na:0:0:444\nZ:Q1BuwyXdI7o9M6QU48S5tY8hoiAYI=\nR:operations.go\na:0:0:444\nZ:Q1NQlwWcD2IwHKTCEi4PW2eQocIRQ=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1y6XNWR7yqbpcq9XW5HscvrFQtLs=\nR:packetcaptures.go\na:0:0:444\nZ:Q1CGPAUWBIeoUamJzu7h52hM/+ORo=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1L8liIWPpB1acPTy6O04QYSTphoA=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q12kUtzNhlm6AIvCFMlkazxdgrGgE=\nR:privateendpoints.go\na:0:0:444\nZ:Q1xpsCVXjNr/knI5qeH/hebPIdwN4=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1o6tm37OI91eAjHBDiGfP7/SyL7g=\nR:profiles.go\na:0:0:444\nZ:Q1fgBpgANnhDztTCElETPv3hUkvqE=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1encAb36RjZSVW+8OJn03dtG66oc=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1xNi3eV+jx1x34sg2m2nkpPgeG5M=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1SPaXVxK8cIiQq/903HDWZGewihQ=\nR:routefilterrules.go\na:0:0:444\nZ:Q1yWq6oXt1FkVgOU72Mhq9AAOhAIs=\nR:routefilters.go\na:0:0:444\nZ:Q1Vv8GuBp4GaoP1vh4I6Ig9y7cJlw=\nR:routes.go\na:0:0:444\nZ:Q1xnK8VzS+2WfdPYBRtl3jw53bwik=\nR:routetables.go\na:0:0:444\nZ:Q1zSrfFqH34CDJawSdh3k1gld/9tk=\nR:securitygroups.go\na:0:0:444\nZ:Q1kBh8eE4X0BVatl4dG8ITi90eO4A=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1Dc0Mb5LvjpnLTex+UWzdKUyoqcM=\nR:securityrules.go\na:0:0:444\nZ:Q12q+AD8xhHt3KaNxf8fHUPmJOcNQ=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1N2z9s2XNU/Kpayk18CJIvjulU+M=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1DR/SoFDfwjqbgpmiVvijyQfFos0=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q11BLdG2+PohwhrlSUJMLiF34yA7k=\nR:servicetags.go\na:0:0:444\nZ:Q10jiFJAN/rM3z+DhTe8WHBbfjadk=\nR:subnets.go\na:0:0:444\nZ:Q1OUJhAmrWCTCk7dNs47DxsEUUMtg=\nR:usages.go\na:0:0:444\nZ:Q1rt7A0IfQ0kdpgJvsZUrJnYJj2A0=\nR:version.go\na:0:0:444\nZ:Q1C30IWJfDC7RkXdPCYSoZ5tb4iX4=\nR:virtualappliances.go\na:0:0:444\nZ:Q1MaYSJora4rvdgh3IvcGC+vYEUro=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1OLKgp6d+SpKP5+1Uvz2CXbTXJJc=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1hVCIcohrMCBjoffZ69/6SRMzLrQ=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1mAuTFjZU9LGPxcMCf6Ae2muIcW8=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1YYz2K9izHZYsbcqatoZbhjasMDs=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q10qAcxescy5brErdwdFNMBuasWiM=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1QWHn1p6BYpooR8i+yiI8d06cxHM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1uap0Fi+FIHrxD9R4vl9tHkPFq2o=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1Ro75vIDarMBQzMYjkeB4QB6V2+8=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1u2Ir0XbEShPLh/xNpHtZZiAF4Dc=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1OaX8mjhK7kwRGLGR7ay8EJ/xyuU=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1Rfjsbz/j3rxX1WcmFFbT44q4bvk=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q18Q8seh+fdGy7vWs1dD4gl3aO9Z4=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q17KgNxk89m3nQoCpedoVxjI9dflY=\nR:virtualrouters.go\na:0:0:444\nZ:Q1bN1zEEi1pRTe2I+vWbX8gl/+yEU=\nR:virtualwans.go\na:0:0:444\nZ:Q12RHSs2zSv2LTAQUgMnHwTi5rizI=\nR:vpnconnections.go\na:0:0:444\nZ:Q1YtiQ7z71SjiHBiqnbK1RcW97Aug=\nR:vpngateways.go\na:0:0:444\nZ:Q1oJnLDRSgyH+FbqFOff/ZloWVK98=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1XncmBHSlkfFpORCaVIzIAQMQYB0=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q13oieAqAc5ZpPyjAT/FV1i0tXoZw=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1aCuTtuPg75tnt5SOdfIVt2gB9nk=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1+GB6u1JmkUcHaJxrygF+sP03oak=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1RnR9/JoeGIym+yrHsiF5bE/VuiM=\nR:vpnsites.go\na:0:0:444\nZ:Q1wKo6hoFKaigi72WwYuzhz6f/59g=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1B8AAjZED8Icd28LupB9hopMxnMA=\nR:watchers.go\na:0:0:444\nZ:Q1+Jru7TiYzq7vs3H45avibYbxbSA=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q12/PSAuB2mp4Dwo5Z3FlLr8w9IgQ=\nR:webcategories.go\na:0:0:444\nZ:Q17gaLQ91Pl87WFaCFAQeVBHMY0GM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-08-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14rsmGT25XGGRGakTzVcZxgU4IBI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-11-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vbCDRLa031Ba6bNFHter0Z4UF74=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1rJnGn2rMxZK7AsS5MM5UszCrclU=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1Mbf1muqsEQ1xpmsVFj1pKD1Lt9c=\nR:applicationgateways.go\na:0:0:444\nZ:Q1LUXHY5rtSY9PLcBiMdYln5kZRTw=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1yc+cO+B1/ffKLYShD3Gjj605gGs=\nR:availabledelegations.go\na:0:0:444\nZ:Q10RtKAnexL6DAoBYN/2414m1zFx8=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1XxRxjWA5KqqP6yVFlyeR2n+GGe0=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1BFuREez0zbRAvSl0ghfk7WF0AeE=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1UGn2JSYbW1IqrjEWWOmUYsEv4bg=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1fQS+chzVgx0n9sE+y8kd5G6ZZvg=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1AAC8TKurTFgNEI37+RSp6YABTms=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1yroPaEYkJoZhRSyVpxkAfFrx2JI=\nR:bastionhosts.go\na:0:0:444\nZ:Q1WhkXkTcScj3HnGbeiff3NodQg+M=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q19wajQ/CsTk/a664ixr7FNDvACEU=\nR:client.go\na:0:0:444\nZ:Q1aCGTusbshq/p6tnNhnhI+GS8hp0=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1hQeID/1sba7JRcZcSKTc1Kjgxdg=\nR:customipprefixes.go\na:0:0:444\nZ:Q1IuCMxkFgf/mRGxlBHE0vZEYG4pI=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1P8eC8rcBZsO7yUsgXiIgii9ByDQ=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1rtSZfqdTrMbHeQGYbRuDZLUSWWk=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1m9xpJFLEFoUwZxCbIBXPBvvayRc=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1L0/kUIeSvDx+D0+XYy5B9F7pOm4=\nR:enums.go\na:0:0:444\nZ:Q1ttLmgd3dqcCS4KZWVZq8Gj14xns=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1kWUIDzbkk53wEjctdE6zimWJajc=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1cevDjUklXrCV2DIKz+aKOlYCDIE=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1UoUlawoM/pt7Jgs33wgyP6X28SE=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1lPDvBrwXPLfr4l0MWPNwcRYQeGU=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1IDNrX1U8z8IDeSWPCtYvOGkqs0M=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1ufYbgCavcJ6xoq0FVUAxnytQ8S4=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1SKOWEEDidBigU/IffJEsWkOVhdw=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1l6yendJKGJZAa6Kgo4sr5WZ6pZM=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1RxFhK/Q94QU/n93xLnhXp3wCIFU=\nR:expressrouteports.go\na:0:0:444\nZ:Q1KqkTqwDgsPm+8pzri1UaQiaeCQc=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1yzR0oKtH4DSQFWZ45+HGTrGlgKI=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1V+O4jlbk7N4HjFXRxNFiE0dWY5U=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1QUQEKz6Dkxff9bCqfqhDBs6laQ8=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q15p9EWLVdQ5CIk3y05vTaXk1VEgU=\nR:flowlogs.go\na:0:0:444\nZ:Q1X9Fq79ieCfXPYPKihQEcO0NjliE=\nR:hubroutetables.go\na:0:0:444\nZ:Q1oU2D5hi4vFBe/nNmY/Tq5pj8m30=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1CM3+TcbT6pTdo2lCOUY83Q0eu8g=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1E836QXRo6/fmaYFr0rBGW3HwmXA=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q11VuE6Pcq2Vk0TP3mdbCGd1Orsa0=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1DP/35uEGlezpOj5r3NG/NA+/Qao=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1owQqE+cBgE8CP9Ov8dg0ART0kCI=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1Dcz0mMT48REOwIeJXcZHA1XyCpc=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1hZvadybvB1mpXj5owQXwdchvWkg=\nR:ipallocations.go\na:0:0:444\nZ:Q19rJ/4UKA6GiUCzeT7GzdDzZRgX8=\nR:ipgroups.go\na:0:0:444\nZ:Q1YWXW7YML9ar3cGndmFKu+xlrMIQ=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1chfJ5iPckPFegSfJopuVVsTQvhQ=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1E2QYrCFIxSL1mJkdT3NFAL4vFQ4=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1bzR/x9zm7QgP9H1EnTmn8snYOWc=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1LErcNGbV2iD7Kmy1cgE2U0vppL8=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1MkSzp75KU80rl+989EyZUtnhw34=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1Ymgz2ebMwh3EaYkBNLe+qB2LuOY=\nR:loadbalancers.go\na:0:0:444\nZ:Q1hYbEeF+Kzj9hFrU3TuGhMyMPnIg=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1XVDulY9BVK18oCLc/cryYK1RD1M=\nR:models.go\na:0:0:444\nZ:Q1fxpKslxMS52MGVUHF9nLtg6wcx0=\nR:natgateways.go\na:0:0:444\nZ:Q1S4U0iGe2DNTqaS0Ol8j6wkMurKs=\nR:natrules.go\na:0:0:444\nZ:Q1itSLUNzBKqRloHDzUrM6776cUJo=\nR:operations.go\na:0:0:444\nZ:Q1cYNJG++aDa1aopRcMjcQxWr8sgc=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1YKrQ3tvg/axv0243Y02TUxBKio4=\nR:packetcaptures.go\na:0:0:444\nZ:Q1PXSu4iZcftW4lrbAwDYtkposLm4=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1ncVSJYwzGNrrGE/xE29Fne5hrw4=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1GsOFhTzxh2W5KCyF9vamczGb90Y=\nR:privateendpoints.go\na:0:0:444\nZ:Q1GD1isOj0Y0tpxysBXk7J8vhRekU=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1vMFQq6GbfZy0FEqfhv8U2ShyUz8=\nR:profiles.go\na:0:0:444\nZ:Q1bTzLwtT1NtH868UZal6srAMFf4g=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1EJzBQJ7PYs3tjkexGDpXx88WPsM=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1a633mhqx5r6dccy1tz8YjqCUpkE=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1zbkWL7040NiMzRBhbzW9duRIdPw=\nR:routefilterrules.go\na:0:0:444\nZ:Q1axnNU+eFHCG1+jaVwkqVMs49qII=\nR:routefilters.go\na:0:0:444\nZ:Q1PijdIsS89K1zv6fljxgWD9/vpfo=\nR:routes.go\na:0:0:444\nZ:Q1tpg13vToFrhSfj1DMN1CamljWmM=\nR:routetables.go\na:0:0:444\nZ:Q1p0YVS1HMLW5XPbFHfVTrjLDH+MM=\nR:securitygroups.go\na:0:0:444\nZ:Q1RUf6+XuXf1wldKrOvzTADYqQ3RQ=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1ACuKIYFbsKFeZrNN+t+wpEGQzcA=\nR:securityrules.go\na:0:0:444\nZ:Q1e0qUVvx+8hCJ33LnlXeILl2A7Nw=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q10ITDjaT1FrzsFyrBILtRcB7i/VQ=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1tFgCPoNNFvY5uxA7oa4r2Cu1imI=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1HB5iJxh1YjWTENl+za1HHRh4zmA=\nR:servicetags.go\na:0:0:444\nZ:Q1dIIMjgJAD0qD7dJnvzP0BdM6Eh4=\nR:subnets.go\na:0:0:444\nZ:Q1He5Sri4AAW604Y4odiHoAvZZtrw=\nR:usages.go\na:0:0:444\nZ:Q1EGgYUQCMFc/32LuQs1O9934faZk=\nR:version.go\na:0:0:444\nZ:Q1cWUV2Hve4Mq2SCl7pyS4Ca4p7N4=\nR:virtualappliances.go\na:0:0:444\nZ:Q1RKoL+qUKPyxU2dPir/1ZNOWm6RE=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1jlfSzbmky6wgI1/F8MGKEwEmQAA=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1lw5mcyZTZR+rFxbLacwEqXZhevo=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1nqu8W2Vtk+5/flXgqQcBroESfTs=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1kSoaFP77aka4VlpBKdojn3FVyoE=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q1m4qNj8J/rJ2/l+TNiwvE1Np8EGE=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1m5KEOzsgo3VGlh6l6bGqk6jmQGM=\nR:virtualhubs.go\na:0:0:444\nZ:Q1ydiDQgcR4DQqoellxa9jKL6H2ZM=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q1v1QdJ2SfnMeg1hsxaxI8JZUFCNo=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1XW1NLQKxB359Pig8ptGwppYWoMg=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1OpEh40+I5+sDf4yoDRzll3EVoUY=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1lsrRAlxXzlxeHfZDRRd2kOWu/lc=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1Zj1NQJtgC6WXvAV4Fns7XWV7Vrk=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1cnFsujUOwU4RcxdOadjlV+REWAk=\nR:virtualrouters.go\na:0:0:444\nZ:Q162YUnh4u5Y6k/eH036wWdJwJsLo=\nR:virtualwans.go\na:0:0:444\nZ:Q18MmU+b7Nws+hCjAxc7FrXxcYohE=\nR:vpnconnections.go\na:0:0:444\nZ:Q1SrQvA4G5VKSmH5119h+h+7I/vuU=\nR:vpngateways.go\na:0:0:444\nZ:Q1mVsWFLXIzU7YH3jQOlOKG3EXLok=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1+VkEXodHPgZcwY8fjhO0cAF/q78=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1K6QJSsHrpBFlISnu6uCMy7rE8Nc=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1g2l04a9p6W4XdPMFG/g97RYb1R0=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q18B4GcFMdO9HyAR4CNRg1KxNXzVA=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1XBMnAcFgzlCOUidBx7Y7EkXory4=\nR:vpnsites.go\na:0:0:444\nZ:Q1gnuaOlymoxIx0tGWWOYcTswQrn8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1WO7esaAUQuMEavMSAJ2KjbT7xYU=\nR:watchers.go\na:0:0:444\nZ:Q1UJNf/xMECFeHK3qqMh4wDV++7PU=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1fVfnm1C9samvsbFq7FiN0bhvEJo=\nR:webcategories.go\na:0:0:444\nZ:Q17Cv56IURitq74lBcR8eTHKrb/YU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2020-11-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1I1+dWh1rEThpUn1ctPx/jXN/6wE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-02-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1q1RwJZzW7Qf3vrIQMRE1tY5cI6c=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1KATeLGWS2jNSJmQNLYDKyaHhtPs=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1xeout8m3xBZLLlIGmd4kyPjJoNk=\nR:applicationgateways.go\na:0:0:444\nZ:Q1RTMvE03Hps4Ux7UHc1+k5w5SjKU=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1Prw+j06TbblZ1D2FopQVzkQxZkI=\nR:availabledelegations.go\na:0:0:444\nZ:Q1ybz3sT25AX9JwyTshBoGHez8L9U=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1wnjzVIEXmfx6b2ElhusGKkv+eUU=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1EO6IrxQlTtiwLT8ukPVsjn2zrWs=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1BlZRYWHMQ0HATiYlNo2/KYkn1Xc=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1uU5L25zK+5tWWjqGMkMghgwxHbk=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1SxubUGfxa7ig0wTOXjTZXlle3yQ=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1dn3yv/8/GFzpbXPC7qcO7r3GQDM=\nR:bastionhosts.go\na:0:0:444\nZ:Q1vdveZygprEcvCU31x28xor7R+e4=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1RfAfMOTYbqnYjqRm8ghdcTplzlg=\nR:client.go\na:0:0:444\nZ:Q1okmJUHLEVF4vr2JhdqSBP0aS0TA=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1u4H3xo8kCmY+TxaMxshxQlusI/M=\nR:customipprefixes.go\na:0:0:444\nZ:Q1vlIxHCc0q6ieyHRSfTSEN6ioi7A=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1xlVPVzSpWFvEw1JFZUgoAmtP9Zc=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1ZtFiRyw8gd0SimibZax0jRbuS88=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1WVepTLm2fkxAGAB6ugjcTPLAdHM=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1pW24ptmd5woyF0QwohIUU5XFvIk=\nR:enums.go\na:0:0:444\nZ:Q1Gtw9tyZGro45FgOJTxVlp+tcrHU=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1eAvBsu8PK9nDWPT2+ctdTVWg96w=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1KzrqXT9iigTyN/5XpsgF9SHcnxU=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1qDzgtcbG8Vdga627ge5gFGhpEpA=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1DYYspxEF6Kf9ZHJ91msofPY784c=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1IiJHzOrAwP+sQVic2MRGJJCoc2A=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1/TjKixmLAnKYeTqzKu3sqhpRLnU=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1eGgtF+4tFM6qOezcrUuULvAqT2Y=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1R94ARY/PgUmaKUdWdh+HR7gDNaI=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1xKJoxeSaQq14d2kwUEJm9i04WgM=\nR:expressrouteports.go\na:0:0:444\nZ:Q1aHeJ06SvFiUqqt3VqlsiWuA53Qs=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1atGugX2l63jp6Ka3F5+RPB7uDm4=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1D8W247gKH81krsHStRtev81pQug=\nR:firewallpolicies.go\na:0:0:444\nZ:Q19roUF59Z46jZnZpAdBPKyHA/OcQ=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1oL/43TBSyyRo9PLMhQoMuqXXwh4=\nR:flowlogs.go\na:0:0:444\nZ:Q1b4rZJh1upW77hMVJ3M5TRtzNXGg=\nR:hubroutetables.go\na:0:0:444\nZ:Q1s6q0vMg0g+CSmqNjPBcQ0kqYU0U=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1PNX2wgJI/bCF1kzU0NskCg7MfoA=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1SS2mP/DW+QKi5H4eUHMANdlqrH8=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q1p1f40v42/rW+GS7KjUTJrBc36YA=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1rB/Fp15BrCimCTZ6XWPjf29KAuQ=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1AjUNt7wN4QV/RY2nd6oswGG1rn4=\nR:interfacesgroup.go\na:0:0:444\nZ:Q108miskx8f0yqZ8Orv4uoOMSmTFM=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1zNIu9YLQMyKoqa0FBhyhZv664xc=\nR:ipallocations.go\na:0:0:444\nZ:Q1q3LIlMoIbV2HYNZL3T/YS1eU+j4=\nR:ipgroups.go\na:0:0:444\nZ:Q1WzFJnkhyR2P1/sn3v87OXVtvHgI=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1hzXLT6S/HCfnq6aTKdgveil0bVQ=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1nQjDnDNuPBj+iouCJFHdnPWur8k=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1GcsS/8PlLQ4+IfDjTie1Uqfe9EM=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1MkTcq4RnaVzVFxQczyz66DxgmwE=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1FgXZNbUCtvD+ZICpTnToL29N8wM=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1oA5uBNLnDofRi21gMPMPJ352KAE=\nR:loadbalancers.go\na:0:0:444\nZ:Q19gcYVl4t1UU5G1D9oQLM8Eym1NQ=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1J1KHoK/6GqLYl0Pjw1zTC1H2CHo=\nR:models.go\na:0:0:444\nZ:Q1bMnjVed5bVo+JdrbsRqd0flL45o=\nR:natgateways.go\na:0:0:444\nZ:Q1FGuxH38XpOxkpy73OpFg0fYV2A8=\nR:natrules.go\na:0:0:444\nZ:Q17Xr6v6Hj/OGm4o/6HZrFQP9nZeE=\nR:operations.go\na:0:0:444\nZ:Q1cFpwlK6Rg1s0A2jfJnjxbhJu3N8=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1ageyxGKi7ekKN3huV1j0yd9f764=\nR:packetcaptures.go\na:0:0:444\nZ:Q1UPhnNlgNFGRciAtOsssBXwjigKY=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1rOeax5QRnXnrmn8xTC221udTbqk=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1v6hAhoKcHMR0veJ1m+zi0IQ3I/I=\nR:privateendpoints.go\na:0:0:444\nZ:Q1rIZ0exjXKMIdJk/ALyreDHYe0Ls=\nR:privatelinkservices.go\na:0:0:444\nZ:Q1E1Xq3331H7cWR87k5PJhofbkWB4=\nR:profiles.go\na:0:0:444\nZ:Q1gYHbn3/zEmzRnmuVzF30U6/p5jY=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1qvWsMsN7rnunvPIiJciLvn1MN1E=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1/R9nsi7xSzxeXWVYpqK2DTJ62uM=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1GTgyw4w0HJELSohpdG7G8xzIGRw=\nR:routefilterrules.go\na:0:0:444\nZ:Q18kZhDxcWx/ny2/XeLe+1KvO3LdE=\nR:routefilters.go\na:0:0:444\nZ:Q18z86hdiPX0EGgV3SyN4kI9VMJLQ=\nR:routes.go\na:0:0:444\nZ:Q1h+NR+Y6W44bq9DvCS/ML4MjcyVE=\nR:routetables.go\na:0:0:444\nZ:Q1RCcXkm7KY5tIuyImHpcEodWO2xI=\nR:securitygroups.go\na:0:0:444\nZ:Q1hSp+4yQ2TQeo7jgB2xy2mvNL0GY=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q14TrcX4dFX/CfA4ssAzeK8s1ajR4=\nR:securityrules.go\na:0:0:444\nZ:Q1DB94gqLYixK7ydV/5pNK0mWXuEk=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1A3wdj3kXPEa/xgn5efQWG+wvCqk=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1PTJP/T5KtBE3VSI7SeHkYNiejZE=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1PcllXUvvr2pEXpUGOZSdlPjCbvQ=\nR:servicetags.go\na:0:0:444\nZ:Q10vY1zY7KH/mAeuOdjjp6L4rpjDA=\nR:subnets.go\na:0:0:444\nZ:Q1xVtN8rIV5EJGtpeCzSrxZXaKXak=\nR:usages.go\na:0:0:444\nZ:Q1IoxEDbvZlZDSTNJUpWv9blg9gxQ=\nR:version.go\na:0:0:444\nZ:Q1lT9Jrce9hg9KnxFGti94mNfpj2o=\nR:virtualappliances.go\na:0:0:444\nZ:Q1CXAtGsqQScqdaJV4VmiJRbg1+WM=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1dNedBEQPu8hyAfZsCOXXrMhM2do=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q16bZpe8L9LuMrLy2rxM63TAZjrtU=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1mBB1ldC3hyy7rn+y5rH0bfZl+uo=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1Fdi3wd5OWK/Xy2+U2rxZftk6t0g=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q190crVAQ2Tf+sMw6/XHBXhgJFXko=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1eh6pnQ5fPrWcL6nrLwO7HvgEH68=\nR:virtualhubs.go\na:0:0:444\nZ:Q1kGDVxjPSZpLP0xhr+MK6D1tBH54=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q13x+YcHIbg1VMN8Mx2x3sy/uQYT0=\nR:virtualnetworkgatewaynatrules.go\na:0:0:444\nZ:Q1i9ZNGNTCHyzLxApzSNawvo56tCo=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1sAlfA6nC84eGH6rnmLWhVGwWp8I=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1sS+zpSMEyLPQKvsAVFZHeVA0Ekk=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1corBJoydDe2yRgPr7HaGwak31AY=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1OdYnyhruSKc8gC1HI1glqRZ9WnQ=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1r1swYvt9hMIVTZ64Kzlks2uWCec=\nR:virtualrouters.go\na:0:0:444\nZ:Q11MY24yAbJMSWnDAcLLxlLw5+jug=\nR:virtualwans.go\na:0:0:444\nZ:Q1wXaLNdyTq+wbhKvE8Br1Wq9+ivw=\nR:vpnconnections.go\na:0:0:444\nZ:Q1yXbepYlRcBYjeG+mNkAWgm1Fl24=\nR:vpngateways.go\na:0:0:444\nZ:Q1jhKBgIOso4zaNiedQyGNKE4uuZw=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1I6Y+MRaK8UhIrbscImX8E06lgEA=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1BHpca70rFSpuWhjd8QUfOHgtzqY=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q19LdTq8qaDueJEX+93W8qz3FUzXI=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q19q4WkNgaMoCNQ5PRbXUagQ1vLdA=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q125B+CT2p5XyyXozJ3w+A1UFgbzI=\nR:vpnsites.go\na:0:0:444\nZ:Q1LnZLN0M8OReMO9wu3E57/1FwIgE=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1NAsX4Zo0nhP5mOakdcidqXV0Bl8=\nR:watchers.go\na:0:0:444\nZ:Q1Nf8twGir3RpHac30fCAm1AyV4T4=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1N2dv9oTzvOVkpiWaUUIEOr46MiA=\nR:webcategories.go\na:0:0:444\nZ:Q1w/WZVmRzb/dU+wkvlK3pQEaRSuc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-02-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MhbfRCK+yYyeWwtLdspQ/tNCeS4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-03-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bUFM7+u3hynyJcfSv4Jt4wMS+cA=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1Kbww3hFwKaHHvw4JWLRubZGFh5U=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q17ljIq1/yXWn8hGnWslltqOdtFI0=\nR:applicationgateways.go\na:0:0:444\nZ:Q14BnI5er/MvdseEe+n7Iy7l7CvD8=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1+Wk+7bs2XcJz/BkQpQ+xlaX1KM4=\nR:availabledelegations.go\na:0:0:444\nZ:Q1aair+RcgjINlFNI8Z8+hr9esnIg=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1DfFoJRXxe0XB8dnWs9UYdkejeIM=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1xsRXmua5Oh1Nfyo5OH72o5UWnRo=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1RwIKICtHcbkDbbB1Iz4dRXRcU3M=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1NsZjgK2AYUsITaG5wGud7lX/Udo=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q16XvaRLk7Wmui0KVck6kGb5ktz6A=\nR:azurefirewalls.go\na:0:0:444\nZ:Q11zI37w+At23AmIb+JL+4C1LbPGQ=\nR:bastionhosts.go\na:0:0:444\nZ:Q1V0qSvhHg7NNL7ASw0WW2zEGZPQ4=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1krd1vj6banfTAprmuAmpd75IdhI=\nR:client.go\na:0:0:444\nZ:Q1W1hn6FWbbFiOpjbtawvUbJ2QKYM=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1ZPslADC/EqhMR14WbSknzkYecwA=\nR:customipprefixes.go\na:0:0:444\nZ:Q1rrJIlqHrO1ocOLlVRkeusFkpTK0=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1osSYWNt7mUrpeh+JgAz4SFVY724=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1tdZePoynCg47x1/p2U7wht/jTDg=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1UgJJCl+mj3ABiiOy0DBfUKQ9yMo=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1E4RkVU8/qSghhnIXgsO5a5TIIWI=\nR:enums.go\na:0:0:444\nZ:Q1L9DY+V741FpOLbOiw8z6lnVeyNU=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q11vZuBsThitJZwsl+smbzNEWhY0c=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1h4vKJ7khRl8QjqGv/deOG0dpyPg=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1PoAQJLqcXpSMZQwgtY5qk8tdokY=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1EkqyLPyHacm0EXWiJgDZ+EwCPWI=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1HwGyvj9fo8gNx2/mSMuIFjTouAM=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q11ivmuAXf9kG9O+Ty72aFTsjyWJo=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1yNkek3DHvs8b31NPFL3N32GP+/0=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1h+QUR+TJxVgwryKyYda1FvsQueo=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1HphhqmJGlAn3OG7B07s09TQT970=\nR:expressrouteports.go\na:0:0:444\nZ:Q1azQPT0SLeSk1mbogCS3FTo009fs=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1+PReUKFwubxG8FNAziVWxogqKO0=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1f6UTqF2rE3uqtB/WSN8glhdXyCc=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1fV6EKRVRMUuXo739FdEZa/uXFIY=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1jC3HeqVeGnRc6hyANl7F2jl9Fu4=\nR:flowlogs.go\na:0:0:444\nZ:Q1u/QIZAbNCDzeVvUfjUHmKv6ark4=\nR:hubroutetables.go\na:0:0:444\nZ:Q1QMhGLuQOPdptprcKVLHGYIOtz4k=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1whIa6BeTzUmjZqpQPKHRviLijss=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1reTaduQLzwgDbTlkWgXl5arAZpM=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q1uYpvahF/V/HaKeQIOntHzz4o4SM=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1ETsxZRjX3YF7zdwfwzY1shd7w30=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1q/Uk3ah0tEqZdbnHFDvs7fhKJSI=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1KxcB8U6x6LncpuMJfdga5ai6cTs=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1WDB2i0upXnMrSxUmfSWZPuD2SjI=\nR:ipallocations.go\na:0:0:444\nZ:Q1um7m7G7DHXPorHxoty4mZ+uEsYo=\nR:ipgroups.go\na:0:0:444\nZ:Q1DcHtclSKkGkpYIetFna9QPSGVnI=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1xhj9yv1c+25PeTnnznXFvgImKZU=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1gQv0e6qpaDsXhbSto4NrqMyq0EI=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1iua20xpbs76y6F31oGS80gDNzuo=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1mTjUWQ7yR5MN8j0yosLCsp0s9b8=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1JO2+nEgVVyyqJ/tKj2zOo/Zu6Pg=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1OPnE/9VUHHdo2e1LFnTUWPtkBlI=\nR:loadbalancers.go\na:0:0:444\nZ:Q1ZQezBk88AFqoLvlKDFAo6n9ANmo=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q1Xj3I2q+PCLo7YyQH29pDveFndqw=\nR:models.go\na:0:0:444\nZ:Q1O5iHq6CqJfj0/BIQaOUzO1Kleso=\nR:natgateways.go\na:0:0:444\nZ:Q1x8C2mvQq+PLXfW53m6PlhfPTzTM=\nR:natrules.go\na:0:0:444\nZ:Q1W1PypjLGCSnVug1GAjCzDoeBG2E=\nR:operations.go\na:0:0:444\nZ:Q1kdF1srLR0Gr4+IA3tGvODBrZsyw=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1yxPCfTsQCKpnuWgd+j9euIUUWc8=\nR:packetcaptures.go\na:0:0:444\nZ:Q1Q+rZETEYrsSkdKfRuPZS2CON4Uw=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1f+ie8WyWaP6ZcOO0SosdaI3Pck8=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1yGSvme4R5fbO+KqrcmEeXvFQcVo=\nR:privateendpoints.go\na:0:0:444\nZ:Q1ud62r9t51dkRBqcTSV7DYQAU3DM=\nR:privatelinkservices.go\na:0:0:444\nZ:Q10D+UKzbreHpuXU7eAWCw0lN5vOA=\nR:profiles.go\na:0:0:444\nZ:Q1dETC4vXLdBtY+GUM2N05RtXG2g0=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1qJw1ZOynmGl27rUT4+KAk9PHorg=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1IfqymPyYUoImG1UCGkJubNOWk2g=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1kU/b6ZU58uVdgSEV7cyo3hCm4Bg=\nR:routefilterrules.go\na:0:0:444\nZ:Q1UmmQQrFYTIiKzdYOSkmjoY8y6AQ=\nR:routefilters.go\na:0:0:444\nZ:Q1/DmLmWDiH52uToqh/QoXBv6ihUo=\nR:routes.go\na:0:0:444\nZ:Q1nnDuqXDEMiWMhEOcTGvTBuoRyEE=\nR:routetables.go\na:0:0:444\nZ:Q1HJf46oag8F/Ln/RaThJ8jAqq8Rs=\nR:securitygroups.go\na:0:0:444\nZ:Q1Ea7mZVLdVvsxv/TGfkTFzw0pzpE=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1ZPZdVqqgaCDLJyLW6Vjg2wOdpg8=\nR:securityrules.go\na:0:0:444\nZ:Q1b+NV4IaUBaEucJlv+c5fH/z6tTM=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1PByhevAA5EgsNVB68kBN+Wiy1tU=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1lxxXlZiFmKvftz0wrpBmX0Irfwo=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1YPGOv5/csYoeU7XEBAuKd4wHy0w=\nR:servicetaginformation.go\na:0:0:444\nZ:Q1AwUUDj7BBw8v7tmAe6EEcPVzxa8=\nR:servicetags.go\na:0:0:444\nZ:Q1OpqFGZGcgReB2ubcMeAl7knS9qg=\nR:subnets.go\na:0:0:444\nZ:Q1MuxiCiiBhjUEETvWYDl14Dpi2QI=\nR:usages.go\na:0:0:444\nZ:Q1zgtaHILRa3R2z86e+quC15KQtJY=\nR:version.go\na:0:0:444\nZ:Q14JQWeC5wYCyqXuToR0aAJKy/oX4=\nR:virtualappliances.go\na:0:0:444\nZ:Q1CvhgoO4uBf2UF9TeXjuJpMq9xP4=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1cAt1bH1sMU4Zk+2bQKr/gjZxihU=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1EVL+0Mz4ZP/gEgwfWCSP+yBlI+c=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1llPYNTXWOcWU+NIDYZvZA7HoYpc=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1c7dp2NLJVvZAFs83dSW98H9douM=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q188md2XPqnm42NjoeowmxBHzbVsU=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1mktL12/fSthX0di/xUs8EUrX5n8=\nR:virtualhubs.go\na:0:0:444\nZ:Q1eH36vTQQYbq2wLxOCp+2x4Qx4fc=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q14R9g3JkdEU2xSkEcAMTiSRGQ8Z0=\nR:virtualnetworkgatewaynatrules.go\na:0:0:444\nZ:Q1Plry/pFeLkGlQHMPHWHy7T914cw=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1gM/ZzgNDjkwTpVBQRLfQjCREh5Q=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1JGSnC36WH8oZZv/aB97w1nUeNsU=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1lUjuPqSMtVfhzDvxY1NcpaKJFHY=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1jdKaLHM5HwFEbzN4lh3WSrlXsf4=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1trzIfNN8VKhTD4PxWMTJnGuxKb4=\nR:virtualrouters.go\na:0:0:444\nZ:Q1F9ot+X2AH45BMSL/qEvi6+vnlls=\nR:virtualwans.go\na:0:0:444\nZ:Q1nAemKJcBpvrUkGfbIWI0mqR+iQs=\nR:vpnconnections.go\na:0:0:444\nZ:Q1646uXiPVsvfrVFFqTWKkOPTvwIc=\nR:vpngateways.go\na:0:0:444\nZ:Q1LP7rp685TxIomq01O1vYnpZaj5U=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1fL3lFdPKgfTiCFyRU7uvr7PPoMM=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1rpAZnxG0Uhh4q5mJV/CAgiN95is=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q16nF7bW/bhO6ufPM+0sEnwUJJfJk=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1LdFMQtXmeW8XhqEuy2u5sjBebGM=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1YhN1MD7jw19gKNJjS58ul9JkWg0=\nR:vpnsites.go\na:0:0:444\nZ:Q1WnscrTK04ocW70cdMLcY/gPLz00=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1LBlBwApr8XLXmIi4hvi+kx790p4=\nR:watchers.go\na:0:0:444\nZ:Q1tFhMke98nzjixqW57kPujV745wk=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1bUro0wGL5N8IXPk7+BmCcRriIiE=\nR:webcategories.go\na:0:0:444\nZ:Q1FVdlmpaqbVaFVRXqPSraq4OO1Fw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-03-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1W0GLjRR+jxWazxrZ3ThuE1rXkgU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-05-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13xe/E8cOaW65WdNE/uSuxxIHj4Q=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q1DJ8L4oAzmOn5HfPZO65B8ZGZ5Kc=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1cJYUM68cJDbiJKGvFvAQb/i9xlM=\nR:applicationgateways.go\na:0:0:444\nZ:Q18aQZTBEk3sCY/m2EC1RKQqvQdOc=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q16Z0wq4KPJynpq7Ku8k+Y/lJpQjQ=\nR:availabledelegations.go\na:0:0:444\nZ:Q1oZ2uo1VcxQVD9ha1hQ1D2CQkwK8=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1VhlmvUQXUZNdGss2/D+p/NQ5oy8=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1c+Ovzatrm1VjGoxo0j4/I02FGLM=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q1dk7k6Ga3vkcqS7bCsTbzp9ggpsY=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1Pst1SxxsS7f3NPjPDgYpBSckGNE=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1WxjFDO8yEYJPuwy4mp6eK/TKKTo=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1kQu2XFiCGI1BMRHWyTABFNhCnjo=\nR:bastionhosts.go\na:0:0:444\nZ:Q1Ff1JXYMIiz6nP6xIHjKOKA1jm/8=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1KWo7hzSolM+DXNA5QMBmyHcyCaE=\nR:client.go\na:0:0:444\nZ:Q1wqaE4B6SD9qkLmVb6zZKX7STMlQ=\nR:connectionmonitors.go\na:0:0:444\nZ:Q1OqJhTg9x9POc9RnS11c5ZZw3w4c=\nR:customipprefixes.go\na:0:0:444\nZ:Q1JSIO1IVXiduEw9Z26/Qr1yz5y4o=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1GvmUfltLL8Jz28n7G7AegTj64ms=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1WJkae8Im5+fHVyq4zE51JEiP+Y4=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1GsJkUNzdpGMqaH7URvYI3dGSYlI=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1uGuZcwgGvm/3yiOSXSNKLmvPKuI=\nR:enums.go\na:0:0:444\nZ:Q1XVfJ/SayVNZmxbjYlmRh87l/Ulw=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1NxHU3pI0YbD8WnkY8LGHaZFvPrI=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1W+Ylzh3iN0WBjm+wTV2d8Udj5AY=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1Cj2WLUFQ525UgSieI60JGin89os=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1yueSZNfzbYuhKPDZdkbsZ3Hcmvg=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q1y0wczFAvdk2SkUJEMBwKb87T5uk=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q1u0Wv5w7vU3mzquMkFCyCtys9QI4=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1LfRo0Tz0wCS+Bz2qyV0GXRjYzS8=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1UXU+yvS5MjJZQ/Nh3p1Xr9hQzvY=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1MilReKLHbla1Y/Y9UwK7S8z2Fj4=\nR:expressrouteports.go\na:0:0:444\nZ:Q15hfIk1A7iWpQC/1c3S5b1I89ZdY=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q1i12melaHqIQwuuZEK92rZzs2Cwc=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q16i3iYCJ84+zRJZP2twMOJvpvOnU=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1sq82F8Zy0Z/3QhOyYf2DDLDTVNY=\nR:firewallpolicyidpssignatures.go\na:0:0:444\nZ:Q1T/VQGKgZGSZKQv70lmc77Aexgjc=\nR:firewallpolicyidpssignaturesfiltervalues.go\na:0:0:444\nZ:Q1QryDz4wsGdhi3qU958Qq9SEAsDQ=\nR:firewallpolicyidpssignaturesoverrides.go\na:0:0:444\nZ:Q1vE1bLnLeTyakPi8xhCDwV4ADLiY=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1ds3t+6CPTij6p8Q562ERPJnfQY0=\nR:flowlogs.go\na:0:0:444\nZ:Q1umI2bwIrGMyDwR03J2DjazNe09U=\nR:hubroutetables.go\na:0:0:444\nZ:Q1OoaSdixwqCMRBmrYE4Ed/PyNfvI=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1VatzpE6ISAGxwOp3h60sn12tqM8=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1bxfsqYyWaUSTqwD8Gh3Vxss7U9g=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q140cffFaZh33WG90X+18W1NWswKM=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1BTIUX1++2saNRdsS9v6B0dTe8pk=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1GgnZPIZT42Bkhf1UYt6QPp3A3wM=\nR:interfacesgroup.go\na:0:0:444\nZ:Q1vyZv2QY+6avgxxww9rjR9RiJ9hI=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q1Qzsc6eucAMOFFFAGET3KL4H4aw8=\nR:ipallocations.go\na:0:0:444\nZ:Q1Yakk4KRZY3+OYjVsW/ZWQdtwE7Q=\nR:ipgroups.go\na:0:0:444\nZ:Q18zFQuF35FS0yDx5fRZweOyfvWCY=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q1+KTEezlMoQZHrRQuxs9i1oHzJTQ=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q17fJfuGcIUEtHo4IrM/NzQapne9k=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1U2ebK2WC3jWItZnJgrWuUj7HjwU=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q12wq/5ePreWIREOYhPCQ8rrz7/vs=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1JXrDtBOx6TldkuFH02sPd2eB3pY=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1xYZl7LjlO4omtmrK70MmPBlxvEU=\nR:loadbalancers.go\na:0:0:444\nZ:Q1MQsyGKAG3ioylJ6jzfkpkpRbDU8=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q16yj4YOjAcP/TQbeVQwAuXNvKsUE=\nR:models.go\na:0:0:444\nZ:Q1CUtrMs16xdxv52hiRIfUqNo6MXU=\nR:natgateways.go\na:0:0:444\nZ:Q1w4jNChzlCV3YANeGOYyNSzsJe2Q=\nR:natrules.go\na:0:0:444\nZ:Q1gFZTtRb2NBnXbUWDfrCsuwH3/rE=\nR:operations.go\na:0:0:444\nZ:Q1P5YzqFZScYX63w5AwtKgIfb6yRw=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1T3q8zdOWYqJkZO84298e37mEry8=\nR:packetcaptures.go\na:0:0:444\nZ:Q1Vz+Rn+cGrYhnnaqI7GWvJQHvDo4=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1ngP1a1zxgqm80snf7x6npLr1lDc=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1/CrJDmTGOaAQAyq6M9HvrLT665g=\nR:privateendpoints.go\na:0:0:444\nZ:Q14cRmns357m93KiFWfNAu9zYCLYg=\nR:privatelinkservices.go\na:0:0:444\nZ:Q10QL8GYzWgOqTevfpObEDJaG+Gn8=\nR:profiles.go\na:0:0:444\nZ:Q1NUpAs+hGXs/PlN0ivwDZB9YtOGE=\nR:publicipaddresses.go\na:0:0:444\nZ:Q1fPhMOAwxFK4IJZGTRNfHBKmLFu0=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1i+rZYWcH/jgPyBN8uAXNokRV6jA=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1mdfi2+OqjaG0M4DxYhK0/iXqx2k=\nR:routefilterrules.go\na:0:0:444\nZ:Q1/Cu72yiwOM3V/rubJMjp+hHChdY=\nR:routefilters.go\na:0:0:444\nZ:Q1q4d3KXlylk6lRq2uzlhGPoOZqfA=\nR:routes.go\na:0:0:444\nZ:Q1rt6gCx7pG2lJD1o5G0vpscfF3i4=\nR:routetables.go\na:0:0:444\nZ:Q1MYIA2jTWxVAS6TUgRt4RS9g4JyE=\nR:routingintent.go\na:0:0:444\nZ:Q1lzd09oF9j+9ajq4D10Sawhyrt3M=\nR:securitygroups.go\na:0:0:444\nZ:Q1oK4LTRy4Noh8twtwoc5CHfvVebI=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1JrI7wX0UQSJMgk1shhzg0SHfCb0=\nR:securityrules.go\na:0:0:444\nZ:Q1PhpUOToZ4U7eHhgb1fHT89haC8k=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1F+tXCmH3hSm3V07RhTEFjH0tZ5Y=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1E0+l7tvzeWrv4tFxTpOktM0GwuI=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q1wSPMV2bZTP9629ySKTi0MOzsvpY=\nR:servicetaginformation.go\na:0:0:444\nZ:Q1k+XltSkjsgL1Hb0sE54SduEOyag=\nR:servicetags.go\na:0:0:444\nZ:Q1skdt1xA7SBxIzFjucqUMhqrqYYs=\nR:subnets.go\na:0:0:444\nZ:Q19KuOdOPNVFOUl0WU2Xk4s5XkrqI=\nR:usages.go\na:0:0:444\nZ:Q1YNYkn5GECUMfz8O4WTrzlzhNT/E=\nR:version.go\na:0:0:444\nZ:Q1ayD6T3QTwFqLjmgKZklxHu3JH6s=\nR:virtualappliances.go\na:0:0:444\nZ:Q1EYg+2UCIBR0Xivoh5tfZtU4s0G8=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1sDXFkhyW90fIepLlLdqiDMGYN1g=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1HyAVlaMRp/s3NyjtxawXRQd8H4U=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1kMMDaAuLSLS8kY8SiG3fLlb3Tgo=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1hgyMPeoKjzlVATdbSUyHrs7Cchk=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q1UhLyGFhMuDsH7p4MFYnxKb8RMh8=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1eKfOZp7bK6X3sEQDF4dgqEW0cQg=\nR:virtualhubs.go\na:0:0:444\nZ:Q1GJw+7qfNlQbhOB2trT7noNDaSNc=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q14Jb5rpfp/pQlX31QXHErI5kxgBc=\nR:virtualnetworkgatewaynatrules.go\na:0:0:444\nZ:Q1WfwvyBmL7m/5OkIqlOXep4YGw58=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1C9By4JdP1RhsBZr90jK4TWKRQYs=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1FeMT7sMPiew31gCmibrsoP4iCqg=\nR:virtualnetworks.go\na:0:0:444\nZ:Q16wDZwN2zgvqBffD/vvU8t5ZeMQo=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q1lIOWCrZhIlBptUy8cnyat6CStGI=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1+OQ21MY5KRjn4qAHyRRQN93cqU0=\nR:virtualrouters.go\na:0:0:444\nZ:Q11DjaNYAAwUKfrfh3eEaj+Q0/lhU=\nR:virtualwans.go\na:0:0:444\nZ:Q11kPfZrf4QEJjE4bd0J53Bk7x8rA=\nR:vpnconnections.go\na:0:0:444\nZ:Q1mMDllOsJbr1S0tWrFwcVDENJaco=\nR:vpngateways.go\na:0:0:444\nZ:Q188A8U7preny1Z6yHBZWGYuclJUA=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1+5WWZ/IF5n3WhX3qBZEi/Pyyd6I=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1ZCCwG7Pvk++UDQcA+1ILUaRGNwk=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1raBjEpDGahNz9DHrICs8HzSm+WU=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1IGQxlB+Bb/mCNLf+qYPxd5Mxb18=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1moAD7DFgOp+BMjNF5+cPeBU6gRM=\nR:vpnsites.go\na:0:0:444\nZ:Q1ZK4lqhTr4v7LsqVduNEPENXPc+4=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1hw3LTd/dP8A0ky/gtkI8IVCVUeg=\nR:watchers.go\na:0:0:444\nZ:Q1xFUBCgGuYWSAgOA08gUAw01MK3Y=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1mqwa5LIyAon1PjiNe03cNYVwBzI=\nR:webcategories.go\na:0:0:444\nZ:Q1y/XBM/Ynv89rIIvwnjmU97uGYiI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-05-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1g78icGE2fVLKwLBh9BrWIXkcY7Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-08-01/network\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1kx60F1AIOKslBxNO/IDZn30baew=\nR:_meta.json\na:0:0:444\nZ:Q13bxaPns3w24ivtY88AwB5hMALns=\nR:applicationgatewayprivateendpointconnections.go\na:0:0:444\nZ:Q11pdBrem28tR40mjW1vygsavvb8Q=\nR:applicationgatewayprivatelinkresources.go\na:0:0:444\nZ:Q1eBkGFjSZ72yh2pVMx4YimWeyYEA=\nR:applicationgateways.go\na:0:0:444\nZ:Q1l/cyiD9saH3LPOdeqni/iySHqvI=\nR:applicationsecuritygroups.go\na:0:0:444\nZ:Q1UPwlCMNOaebVwxrovsV5HbuE7EI=\nR:availabledelegations.go\na:0:0:444\nZ:Q1ESHjHUnYgnEPYkaVdvd3AL2mXgM=\nR:availableendpointservices.go\na:0:0:444\nZ:Q1/F0zp0uxjPXcuHygLBgSWaVHPKI=\nR:availableprivateendpointtypes.go\na:0:0:444\nZ:Q1OQsV3oQupppz9N1eQpN3SfKRo9g=\nR:availableresourcegroupdelegations.go\na:0:0:444\nZ:Q14Nazm1jHHbryH3mdjZ0WL35ktMo=\nR:availableservicealiases.go\na:0:0:444\nZ:Q1lohMJVp8mGxPVvZO03wC88Yrpno=\nR:azurefirewallfqdntags.go\na:0:0:444\nZ:Q1OdxYOK/U1xA+M5zs1RdyobV5Xgg=\nR:azurefirewalls.go\na:0:0:444\nZ:Q1NjuXoobjAZ+4uUiah/Pp5rNirT4=\nR:bastionhosts.go\na:0:0:444\nZ:Q1nFlVvNrf2OEjZitX0haJ/ZVF1bk=\nR:bgpservicecommunities.go\na:0:0:444\nZ:Q1X98OU2eUHOUXl4gl0GWSZeHM55c=\nR:client.go\na:0:0:444\nZ:Q1THZoOZU7gB5Kna2xevj+d9rd7k8=\nR:configurationpolicygroups.go\na:0:0:444\nZ:Q1dbMSQfnAh+PGUu3Avo8vwe/J3A8=\nR:connectionmonitors.go\na:0:0:444\nZ:Q17kuCHgqCgf7ypt3zgn695k4Vwoc=\nR:customipprefixes.go\na:0:0:444\nZ:Q1+gqVc6B4N05rx5iXrJQA+tvC8mo=\nR:ddoscustompolicies.go\na:0:0:444\nZ:Q1Kb+cvmiDCtQMmBnxu2Y/zTsGbaE=\nR:ddosprotectionplans.go\na:0:0:444\nZ:Q1OMT4nJRLM35ghU3W+ZLzn5SAlmY=\nR:defaultsecurityrules.go\na:0:0:444\nZ:Q1E5DglStY1kYWrGqXt6rKgLz2msg=\nR:dscpconfiguration.go\na:0:0:444\nZ:Q1nfeAA4F2sfasW1uob3yFT/C4bTQ=\nR:enums.go\na:0:0:444\nZ:Q1J6IhHDMe8G9Axp31sTf2+6pBIQs=\nR:expressroutecircuitauthorizations.go\na:0:0:444\nZ:Q1UstEUHIV39/CK/fVy27Ym3Z6TJw=\nR:expressroutecircuitconnections.go\na:0:0:444\nZ:Q1TM2IA4HoOUfBZqsrnvMrS5TXNpo=\nR:expressroutecircuitpeerings.go\na:0:0:444\nZ:Q1bFdYFq04vzrUAneRF0eVaO/y5W0=\nR:expressroutecircuits.go\na:0:0:444\nZ:Q1EgFu78Ri6WNJnGeUebrC3e907aM=\nR:expressrouteconnections.go\na:0:0:444\nZ:Q100/+3lgiSAsrsMOqbAe5zegYMW4=\nR:expressroutecrossconnectionpeerings.go\na:0:0:444\nZ:Q12J9PGpdMlggibm6ezGPnjHGcYEU=\nR:expressroutecrossconnections.go\na:0:0:444\nZ:Q1I5qPRbRYk5XhfnB+9MGDDn63RzY=\nR:expressroutegateways.go\na:0:0:444\nZ:Q1I4MHz7OUljGaKNeAT4Fiu0OcShU=\nR:expressroutelinks.go\na:0:0:444\nZ:Q1IFBWDHZ2pFsEwqetIuGM0twhLoo=\nR:expressrouteportauthorizations.go\na:0:0:444\nZ:Q1UZGcMmn0cXxCsX3PROvf82vE0cQ=\nR:expressrouteports.go\na:0:0:444\nZ:Q1tJLg59Urpo4fSpU0NJ1MGMgq/Pk=\nR:expressrouteportslocations.go\na:0:0:444\nZ:Q172vbtobKoukcXMh+nrL2h8vJLOg=\nR:expressrouteserviceproviders.go\na:0:0:444\nZ:Q1wQnHhSYvDEoE0ELCZg2aPbQKv0A=\nR:firewallpolicies.go\na:0:0:444\nZ:Q1EFqhxn9SMtWrnBNsYRsbfwghQ4Y=\nR:firewallpolicyidpssignatures.go\na:0:0:444\nZ:Q1Q9yuhydTpGRggXktyxf9/Rp2eek=\nR:firewallpolicyidpssignaturesfiltervalues.go\na:0:0:444\nZ:Q1vMMhb37m6F5gZLRLeVKAS0OAuSg=\nR:firewallpolicyidpssignaturesoverrides.go\na:0:0:444\nZ:Q1mWLXla1m28LoJSzb9KSwjFhgacw=\nR:firewallpolicyrulecollectiongroups.go\na:0:0:444\nZ:Q1lNrSnunAPsOsR9Q9hqoMAQGi2As=\nR:flowlogs.go\na:0:0:444\nZ:Q1RKOMBfUxD8vZUV6bqL2xhof1alM=\nR:hubroutetables.go\na:0:0:444\nZ:Q1MlygEunkbvn6PNvMZ4Wd/qPW86E=\nR:hubvirtualnetworkconnections.go\na:0:0:444\nZ:Q1Iggjt4w1zTxQiuMA4Jct51QFZsQ=\nR:inboundnatrules.go\na:0:0:444\nZ:Q1cSt3rzPWB5PdUttEE0BzbRFqGLY=\nR:inboundsecurityrule.go\na:0:0:444\nZ:Q1+ur1xLSIUxs03fT1tXDfiDntI9g=\nR:interfaceipconfigurations.go\na:0:0:444\nZ:Q1MPL3deY3koCTwtq/bquJkui4/Dw=\nR:interfaceloadbalancers.go\na:0:0:444\nZ:Q1g5Dim+15RHRYPaR43jXnWVXRokw=\nR:interfacesgroup.go\na:0:0:444\nZ:Q130qn0dxHk5k6/FgOtnmcY1wODZk=\nR:interfacetapconfigurations.go\na:0:0:444\nZ:Q14opy+S1krmlrg39wRJnnAI6vuEs=\nR:ipallocations.go\na:0:0:444\nZ:Q1ih8v5VHT0VKTunBslDxN4lL8BK8=\nR:ipgroups.go\na:0:0:444\nZ:Q1SwYClFz8sg70d/QdDYFk+ZchAdM=\nR:loadbalancerbackendaddresspools.go\na:0:0:444\nZ:Q10CeYa26nytJVwvXawGKKJ3eM9Qc=\nR:loadbalancerfrontendipconfigurations.go\na:0:0:444\nZ:Q1WSiPbbX5veup9VOhmY/a1c9nBYg=\nR:loadbalancerloadbalancingrules.go\na:0:0:444\nZ:Q1q6+UI2kLslEsR8M6SJKYCZ0l97w=\nR:loadbalancernetworkinterfaces.go\na:0:0:444\nZ:Q1AmsGuTcHm9pBj49Fi17OIuUmO8k=\nR:loadbalanceroutboundrules.go\na:0:0:444\nZ:Q1W00F26dGQrDwFRt8An4gEU0mRh0=\nR:loadbalancerprobes.go\na:0:0:444\nZ:Q1KnCzTg4vWAzrYw9wCCeT+sqT4LU=\nR:loadbalancers.go\na:0:0:444\nZ:Q1F1t7vzKuKRYIZ/uRqbKGhPXp65k=\nR:localnetworkgateways.go\na:0:0:444\nZ:Q11eFxVR4b2cC7assiUpJe2+biCH4=\nR:models.go\na:0:0:444\nZ:Q14GiZSomds7ptrZ/4BhD0o+bGLOA=\nR:natgateways.go\na:0:0:444\nZ:Q1QkUNZYEwB1rMzheCgpv53TYC/34=\nR:natrules.go\na:0:0:444\nZ:Q1+TlWyGUYwaTuvq9PHxXadFpSPLg=\nR:operations.go\na:0:0:444\nZ:Q1hbQq5LClzxILaD/lr1ptnrPJ5EY=\nR:p2svpngateways.go\na:0:0:444\nZ:Q1p+UY1L559G/g2khmZSl57sbv3c4=\nR:packetcaptures.go\na:0:0:444\nZ:Q1PQ1NEkhQ28I50JsAbiA3Df/MeH0=\nR:peerexpressroutecircuitconnections.go\na:0:0:444\nZ:Q1X0HqjymHKxRV/crH1KtiX5y4T5U=\nR:privatednszonegroups.go\na:0:0:444\nZ:Q1/M8dDbXNClCthonIHBnJOVo4jXw=\nR:privateendpoints.go\na:0:0:444\nZ:Q1/sTBAmVW8X6g8CIWUdjPGrf+NiQ=\nR:privatelinkservices.go\na:0:0:444\nZ:Q14gk9zjeXWFUUqJMiauK/ELjG23I=\nR:profiles.go\na:0:0:444\nZ:Q1DQFivT99l2icmOB8/39ZtfQokrA=\nR:publicipaddresses.go\na:0:0:444\nZ:Q16+QyRecxUfoLUkzVykhyt0PRTws=\nR:publicipprefixes.go\na:0:0:444\nZ:Q1oNDHNoCSuqX5/JW1WwMDAXBJYuM=\nR:resourcenavigationlinks.go\na:0:0:444\nZ:Q1zUM3XCVNBqhFCyPHeYeueOG9IxQ=\nR:routefilterrules.go\na:0:0:444\nZ:Q1xQsP+lU1yZvPmvGZw0q8VCiFtmw=\nR:routefilters.go\na:0:0:444\nZ:Q13wAeiPOwffc0N3RXnhOrgP7p29o=\nR:routes.go\na:0:0:444\nZ:Q1NywLP8eyparh2urWGNtiAUqKPDI=\nR:routetables.go\na:0:0:444\nZ:Q1XeN3M2RZLBhO5Nc2iS/2gfEQb3w=\nR:routingintent.go\na:0:0:444\nZ:Q1Ot+XVJs/SgosS0+z6nGV9ObG5AE=\nR:securitygroups.go\na:0:0:444\nZ:Q1BgKwLsM4kzpSulFeXmIK7KK0SxY=\nR:securitypartnerproviders.go\na:0:0:444\nZ:Q1jdP9v5lmeDjUpMB5Z3aBweQi10I=\nR:securityrules.go\na:0:0:444\nZ:Q17bHMP6EDaReQ+DLy8UrmOXqllm8=\nR:serviceassociationlinks.go\na:0:0:444\nZ:Q1Na4ymnkFcfs2Maq6fTLR4/pLDOU=\nR:serviceendpointpolicies.go\na:0:0:444\nZ:Q1+2lYULOhn+DHxJoRQaM2X3zo39w=\nR:serviceendpointpolicydefinitions.go\na:0:0:444\nZ:Q11+Dr0AhZyTr4YqqQU/STZ11ybW0=\nR:servicetaginformation.go\na:0:0:444\nZ:Q1ur53g5uWn23TVg8XCeopAka4i/c=\nR:servicetags.go\na:0:0:444\nZ:Q1PbURqXZ3yglEV73vwLdPrr8g0fI=\nR:subnets.go\na:0:0:444\nZ:Q1dU0BdPxKTMQqMZ0jvHYr9lCWJmw=\nR:usages.go\na:0:0:444\nZ:Q1GJ5VbUTKbesUxUsUAxVM8CZUUGI=\nR:version.go\na:0:0:444\nZ:Q16fHVtfAIBiWuBpMW69WVhA1Emew=\nR:virtualappliances.go\na:0:0:444\nZ:Q1hya7KOguHTlJpAnANZ8hZbC278s=\nR:virtualappliancesites.go\na:0:0:444\nZ:Q1+6IcJ8bTUhp9DAMNEfiuomB2I68=\nR:virtualapplianceskus.go\na:0:0:444\nZ:Q1/Pc7DtDe+MXiakfaCsjhlzb2EQs=\nR:virtualhubbgpconnection.go\na:0:0:444\nZ:Q1EIYWCkDkTbHfywe4+9MfYz+ZcPI=\nR:virtualhubbgpconnections.go\na:0:0:444\nZ:Q1sy2dCpCk/BZUR8fbq5/b+W+gwKo=\nR:virtualhubipconfiguration.go\na:0:0:444\nZ:Q1s88QJEG64Q/jLlWY9Ky85lZdaKc=\nR:virtualhubroutetablev2s.go\na:0:0:444\nZ:Q1ExBNH627D21534A47KAV46cVbAk=\nR:virtualhubs.go\na:0:0:444\nZ:Q1oA+w3ZNT2DzAkg+RvZUCKU20wvo=\nR:virtualnetworkgatewayconnections.go\na:0:0:444\nZ:Q10bijTUrDilxzuG6zkVDxazRWoR0=\nR:virtualnetworkgatewaynatrules.go\na:0:0:444\nZ:Q1NwvJDC0fSm903E3KZgAVVhjKj70=\nR:virtualnetworkgateways.go\na:0:0:444\nZ:Q1Oe3caPhO9rK3zDaTUJ+3V3EI8eY=\nR:virtualnetworkpeerings.go\na:0:0:444\nZ:Q1h3xg0MlvamI9EmUGQ+q3pkGNCkw=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1CwIO8/40qZq4hSr7GVaCwzONE94=\nR:virtualnetworktaps.go\na:0:0:444\nZ:Q12IcvLftBFHorEqRZrrztCF4f+CE=\nR:virtualrouterpeerings.go\na:0:0:444\nZ:Q1uQ8ZymorCNzQFJJS73HMespiW0E=\nR:virtualrouters.go\na:0:0:444\nZ:Q1XCT/Kxx1FPLGvuW5iUiXEbTTzsc=\nR:virtualwans.go\na:0:0:444\nZ:Q1MJkcj0hRT5mnGY3FFfKMtZ2Md1U=\nR:vpnconnections.go\na:0:0:444\nZ:Q1JDkpPP7C2ZlfUknroIPS0Pf214o=\nR:vpngateways.go\na:0:0:444\nZ:Q1STKSowoyX0q72szTO58P/DJI7fw=\nR:vpnlinkconnections.go\na:0:0:444\nZ:Q1qwUu16n0XpbL5DGGphNYC4MhLS0=\nR:vpnserverconfigurations.go\na:0:0:444\nZ:Q1LinZzlbYp5X7242UHlJVY9ywYiI=\nR:vpnserverconfigurationsassociatedwithvirtualwan.go\na:0:0:444\nZ:Q1l82EZ5EYf/xQfo4pB6iMMtRyZ8A=\nR:vpnsitelinkconnections.go\na:0:0:444\nZ:Q1KXS4pYf8EopuLFEZXxgm9Lg1Ru4=\nR:vpnsitelinks.go\na:0:0:444\nZ:Q1CNiuTwOw8xjTceK6pqlL5d+HYPA=\nR:vpnsites.go\na:0:0:444\nZ:Q1jx3DzQHwA48VPH9LEpFKJYuXhZ8=\nR:vpnsitesconfiguration.go\na:0:0:444\nZ:Q1P9mC3Cnfx2z+SQ0ZBWbmBxzhnLA=\nR:watchers.go\na:0:0:444\nZ:Q1ZqsMfBrGxoPWpCXRwp3QVJWaqBA=\nR:webapplicationfirewallpolicies.go\na:0:0:444\nZ:Q1+30DoOXE7Bmbbc0jfqkQylvuJ44=\nR:webcategories.go\na:0:0:444\nZ:Q15KMi914+Rp6tkXLoloT8gHeCdEk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/network/mgmt/2021-08-01/network/networkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aldPqfDfv9z0eSWX6HLR0RUbbIc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2014-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2014-09-01/notificationhubs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1FJnvm2GpJtxbd4gl/TJAthOi8Y0=\nR:client.go\na:0:0:444\nZ:Q11eeCQRpdchoEFZM+DNRypDqu20E=\nR:enums.go\na:0:0:444\nZ:Q1fH5oWg4CDZmJ/jtNKMZNmJnuFGM=\nR:models.go\na:0:0:444\nZ:Q12Ne3n19XJw8vJ2915AjlxtiE7GI=\nR:namespaces.go\na:0:0:444\nZ:Q1S0oylnKFc5pXL/PpH94QhZjk9Mo=\nR:notificationhubs.go\na:0:0:444\nZ:Q1/msPHsNoUrt5fUZZTlTc7/MtV+I=\nR:version.go\na:0:0:444\nZ:Q1QulKHbveV8J1YpzPlhBVO7VCAuA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2014-09-01/notificationhubs/notificationhubsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OwrJ9w8vCuTllV3fkdHFTv+2Guo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2016-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2016-03-01/notificationhubs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TRBBDxzKyg27jXRJtH1G1sv2FB4=\nR:client.go\na:0:0:444\nZ:Q1xwdCbPi9gJVvGC+ckeQPdf/Cdx8=\nR:enums.go\na:0:0:444\nZ:Q1lkUAxiOA8YTB1FOEjPgmNcYwIyM=\nR:models.go\na:0:0:444\nZ:Q15rH5PUgng51TVNaUWypcJJHP0U4=\nR:namespaces.go\na:0:0:444\nZ:Q1M342YfXNLqfMsfXoO6M7js95yc0=\nR:notificationhubs.go\na:0:0:444\nZ:Q12MLy6UZHyR/z2TF+CJeb7fUAJpw=\nR:version.go\na:0:0:444\nZ:Q15BLmUQ2t/10V7OyVnm5ZRLwFDOU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2016-03-01/notificationhubs/notificationhubsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15UGUb6oeAHalbqtQvifu4kYMgjE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2017-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2017-04-01/notificationhubs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1CA1lWvELgn8NM3Uq6P814KqrN48=\nR:_meta.json\na:0:0:444\nZ:Q1JIv79iz68o4fcCej4Zsh+xH3v5Y=\nR:client.go\na:0:0:444\nZ:Q1ktY5rnnvwy4ZA0Abn9PI76KmB0w=\nR:enums.go\na:0:0:444\nZ:Q1MbaSlZOd/oMWuUrfpfhr4bvOKcM=\nR:models.go\na:0:0:444\nZ:Q17wGaqmhb++6j8KdfbwBYDT8KDcA=\nR:namespaces.go\na:0:0:444\nZ:Q1NKCDGxxnk+UbPhWBaIoXLt0BF4E=\nR:notificationhubs.go\na:0:0:444\nZ:Q19mok94EvEtx9d7rLW+5qzsEIWzo=\nR:operations.go\na:0:0:444\nZ:Q1A/+427cIC3IVPU2K50/7K0MmtpU=\nR:version.go\na:0:0:444\nZ:Q1JaqauLeMRp4dKXXICLZaJWMfyGU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/notificationhubs/mgmt/2017-04-01/notificationhubs/notificationhubsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q158rrtj4MDqHwhSQcPFprugRmR4E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2015-03-20\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2015-03-20/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qqPZ3qjsHAeF1tYIu5XjlZ3P+Bw=\nR:client.go\na:0:0:444\nZ:Q16RQmXEAOMgM3zNcg5JtakXTcf00=\nR:enums.go\na:0:0:444\nZ:Q1vOI3PFqfTAkurcWC1Hv8NsAy6ZY=\nR:models.go\na:0:0:444\nZ:Q1ZxWWbJ7qKrezcV1Dp/Kr/aP+JC8=\nR:operations.go\na:0:0:444\nZ:Q1eLzQWHvKMK6xpTBo4RWViHwk3hU=\nR:savedsearches.go\na:0:0:444\nZ:Q16DX7k7Np5SoAGw3OWT7BhDo2LCk=\nR:storageinsights.go\na:0:0:444\nZ:Q10+WKIQb7zRygKjRSOhv4g8gc1YQ=\nR:version.go\na:0:0:444\nZ:Q1lL3GBcGbEadsY8IcgpKOs2xKy98=\nR:workspaces.go\na:0:0:444\nZ:Q1cjk3aIWTqtesLeQI9S1gRG7VZlc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2015-03-20/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Fbrueh5oVALR0oaVvxdlYwZ6Q8E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-08-01/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1a8X8zCzmNDtOyrHeIAPHSP0Cf98=\nR:availableservicetiers.go\na:0:0:444\nZ:Q1Apwq91NnhuZQ7wQeZ9eTCx7aW20=\nR:client.go\na:0:0:444\nZ:Q1b++vj8lU6YjFx4ioaJFDw1cx/eA=\nR:clusters.go\na:0:0:444\nZ:Q1Rmpkj7gn8vZfschln8ffEvC9bks=\nR:dataexports.go\na:0:0:444\nZ:Q1iwAqeXib2oV/sqU1drw0d+Ni404=\nR:datasources.go\na:0:0:444\nZ:Q1poxX2vwnHwbI224yh6jsjUoLWBE=\nR:deletedworkspaces.go\na:0:0:444\nZ:Q1JNsOil6HRpaDc5tfQDAsN3PXibM=\nR:enums.go\na:0:0:444\nZ:Q1xjmGIRKszR8O6HQ8gWFZ09mxCtk=\nR:gateways.go\na:0:0:444\nZ:Q1kdE7WdBc3u5C1yprdxQZE7kV0gE=\nR:intelligencepacks.go\na:0:0:444\nZ:Q1OmiteUkHG/I4o4IZvZhQudZfkVI=\nR:linkedservices.go\na:0:0:444\nZ:Q1jIcNQ9BNUe+VNJ+HebkTjrc6FIM=\nR:linkedstorageaccounts.go\na:0:0:444\nZ:Q1K5N0/GGYAg1l8N5WyAe6AlEieOc=\nR:managementgroups.go\na:0:0:444\nZ:Q13qYu93BRMBvGApQiyl3JJ0ydb/M=\nR:models.go\na:0:0:444\nZ:Q123XDhuLVFYtDepGAokO9+BpxxyA=\nR:operations.go\na:0:0:444\nZ:Q1admguUMc2S5lnV4pcw8UobakXh4=\nR:operationstatuses.go\na:0:0:444\nZ:Q1WGaeAe5tdZxFgI62bZK1yx+ZT2U=\nR:savedsearches.go\na:0:0:444\nZ:Q1qy0QpiTOd7VGLTtCfm3XKT9N7fU=\nR:schema.go\na:0:0:444\nZ:Q1yGJ/VGcu1O/Iv/8G3L+dcdTYbEM=\nR:sharedkeys.go\na:0:0:444\nZ:Q1guUX8v3+UbCDyK1xM7yihfgvO6o=\nR:storageinsightconfigs.go\na:0:0:444\nZ:Q1Ha22g5shoOvBNrl8eJE0+v6aYMg=\nR:tables.go\na:0:0:444\nZ:Q1l8GvAXlCsmuDxmvkGpdZB+4a4D4=\nR:usages.go\na:0:0:444\nZ:Q1BxRaxsVMivqStxg6rDZ1bpRoYu0=\nR:version.go\na:0:0:444\nZ:Q1PSsYDti9JImDzPkYhL9clhC5c0A=\nR:workspacepurge.go\na:0:0:444\nZ:Q1P1g+Hcpw8BX6LF63hNELZfBeapk=\nR:workspaces.go\na:0:0:444\nZ:Q1Jto3HeypqeEyLlZjLdFX80kh8A0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-08-01/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kiENcj0Etfa/H3ZEJF/dbBSjZ5M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-10-01/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1eTQ9c91eS9uKvxlCmutLuwCmFnk=\nR:client.go\na:0:0:444\nZ:Q1Gh8Pmi37FQy/kq7EXjvR66luPf8=\nR:clusters.go\na:0:0:444\nZ:Q1jNV6voFyl0dFAvrZzyETVJjR0q4=\nR:deletedworkspaces.go\na:0:0:444\nZ:Q1JS0cpb9hpGYMEkoTOxBZdvwZ7/8=\nR:enums.go\na:0:0:444\nZ:Q1H8dQOdRdLMb5GFha5Cq3juful6o=\nR:models.go\na:0:0:444\nZ:Q1FOm9I4OxYoRTdlTUFE4WZ12YPIw=\nR:operations.go\na:0:0:444\nZ:Q1KDVX69Z+4vucfoGuz4aMkQNXHmc=\nR:version.go\na:0:0:444\nZ:Q1YSCFRExgava9Ht59j/ICItCxfJY=\nR:workspaces.go\na:0:0:444\nZ:Q1OLBmsln7GAnZcwDpi3Y9GpVudT0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/mgmt/2020-10-01/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q183/niPEoTRexAb/1n7TGUsWsj4Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/v1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/v1/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1jWWfgZS75fCtXvF4kWDFQBCMrcY=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1KtB/j2XJwbTJI0DrlXJ0D3p2xvw=\nR:enums.go\na:0:0:444\nZ:Q1pO0FF3yogXpPCqQmqykSKnB3Xi0=\nR:metadata.go\na:0:0:444\nZ:Q1Ua+Il8uw8pjjJi2L6agAef8jSwA=\nR:models.go\na:0:0:444\nZ:Q1KO2BahitLSjJfmqHGQK7HVnT/Ng=\nR:query.go\na:0:0:444\nZ:Q1K8L9p29yUjNwdbNCM4OGuoGqYcI=\nR:version.go\na:0:0:444\nZ:Q1i9XS38PQ3gooXF4WLA3opxGYf8M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/operationalinsights/v1/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gqCcZa+9Cv9lVHKSFmUrFpA3918=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-04-01/peering\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1puyYBV2LhnztKByVvbmQMVUEyto=\nR:client.go\na:0:0:444\nZ:Q1atvAw/M/Y0UkzCr7jiK4Otj2JbA=\nR:enums.go\na:0:0:444\nZ:Q1UAXoPimwQCZqO57t2b51PrE3Gyk=\nR:legacypeerings.go\na:0:0:444\nZ:Q1iHKSXObUGBzlH3ZFeYwkbooa2is=\nR:locations.go\na:0:0:444\nZ:Q1RYkcttVr+Vnj0nke55XH0InE0LY=\nR:models.go\na:0:0:444\nZ:Q1xLJeM/4k7HbQjLohfXJ8DhdfMq8=\nR:operations.go\na:0:0:444\nZ:Q1QoyoSi1JtdYuHf0iqftodjhHBYs=\nR:peerasns.go\na:0:0:444\nZ:Q1LohDC8hCz8r1zRiHCN8RCgw4C3s=\nR:peerings.go\na:0:0:444\nZ:Q1HWb/2IXyB4SBX/0hTFMPEOeBnJU=\nR:prefixes.go\na:0:0:444\nZ:Q18Dw6SRLE+u1sk6Z236Tib/tAlso=\nR:receivedroutes.go\na:0:0:444\nZ:Q1SdhWAD4IBtsjJ2AraKVQfQzwqgE=\nR:registeredasns.go\na:0:0:444\nZ:Q1ixmgZphZP8Tkc1wF8woNqHm6pz0=\nR:registeredprefixes.go\na:0:0:444\nZ:Q1ncJQiY/XNzZMZHrG7S6R0eZK5yw=\nR:servicecountries.go\na:0:0:444\nZ:Q13UiJgDJzfebe+ZQxqy0vFtfnkIU=\nR:servicelocations.go\na:0:0:444\nZ:Q1nTdKMnr2nemNPL8EVYW2cPRN/u8=\nR:serviceproviders.go\na:0:0:444\nZ:Q1WCZQzFZ49KZd62FP3z5zlD1lcS4=\nR:services.go\na:0:0:444\nZ:Q1EF4UJ8GR81RKAeBVbNxXwVBGazM=\nR:version.go\na:0:0:444\nZ:Q1+ycTE+0bZrNSoak8uT6kmvlexio=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-04-01/peering/peeringapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18LGnNyFbgpq37zmoZxKW3XKqWVI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-10-01/peering\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1z6ll/NwEA8UZnx4gasqV5r8hjFc=\nR:cdnpeeringprefixes.go\na:0:0:444\nZ:Q1cCxxfYpFgDrbjx3avOFTouuoSEU=\nR:client.go\na:0:0:444\nZ:Q1hOqygZsV2Pj/3f9hdmUr1hl29Lk=\nR:enums.go\na:0:0:444\nZ:Q1UAXoPimwQCZqO57t2b51PrE3Gyk=\nR:legacypeerings.go\na:0:0:444\nZ:Q1yYQfDRG+VENMhO4JYoZ+TBLhAr8=\nR:locations.go\na:0:0:444\nZ:Q1VEKYiJCd5937UGayAQGb6EmE5Q4=\nR:models.go\na:0:0:444\nZ:Q11UiK2wZMrHztrOws/7AIPDwuQyo=\nR:operations.go\na:0:0:444\nZ:Q1GvPwhndasPnElzxDXSCPKAjBV68=\nR:peerasns.go\na:0:0:444\nZ:Q18ebxfYnu8BPq46cUN3AUTiPbWks=\nR:peerings.go\na:0:0:444\nZ:Q1oXXweog5AhFP3s4xhW3cZNmhoS4=\nR:prefixes.go\na:0:0:444\nZ:Q1/VD46JKvpS0waPzPlCB0tk8T1+w=\nR:receivedroutes.go\na:0:0:444\nZ:Q1jaVP9Vok0OPCHgVwTA9A7NeFFac=\nR:registeredasns.go\na:0:0:444\nZ:Q1bw7v57/3kh+BM4uAo6Tm4cqcK9o=\nR:registeredprefixes.go\na:0:0:444\nZ:Q1aowbE/eCzD0WJKEuWCj/efA8F+A=\nR:servicecountries.go\na:0:0:444\nZ:Q1bkRm0H05OTDihU+quukxkiPR8sE=\nR:servicelocations.go\na:0:0:444\nZ:Q1zWdifLZoslacIdmLGb3pv/EIKD4=\nR:serviceproviders.go\na:0:0:444\nZ:Q1Sx2MR1cDdbq0qnKF6FWlMcU4GPI=\nR:services.go\na:0:0:444\nZ:Q1B1a/Yt9lq3tKTdDJo6N03ILd1Ng=\nR:version.go\na:0:0:444\nZ:Q1IetnW7ZqZtz4+nosKHd2IQezxCg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/peering/mgmt/2020-10-01/peering/peeringapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rvC7O91dT05icuVxnW6lcpOJuA4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/personalizer\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/personalizer/v1.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/personalizer/v1.0/personalizer\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1e4jz1q4Cr6tUughfhH1of7NgLq8=\nR:client.go\na:0:0:444\nZ:Q1oJHh9K3UCbf2NaUYLR9QHDHqtYo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1QQrgNVaObCMcoA34TRgl8Ek5XAA=\nR:enums.go\na:0:0:444\nZ:Q1Xn4p/STSwKrKR7LwlA9CBE1WPX0=\nR:evaluations.go\na:0:0:444\nZ:Q1MJGmupLYSySGClHjRpwsIVMK/3Y=\nR:events.go\na:0:0:444\nZ:Q1pj5OIBfKfRYfgZmSntBT9LkNXhU=\nR:log.go\na:0:0:444\nZ:Q14gUPo865whuBBhf9tzNQGUIeqzc=\nR:model.go\na:0:0:444\nZ:Q1loH786fJB06Wd7SSXiyw8Nu/icY=\nR:models.go\na:0:0:444\nZ:Q1u2RohMZ8aSct5Umm65UDd0bqpy4=\nR:policy.go\na:0:0:444\nZ:Q1UKaw8Eowtx+CebEHUUeYrpN2vFQ=\nR:serviceconfiguration.go\na:0:0:444\nZ:Q1yMVMRem0cp2unPbELqWt6mWduOw=\nR:version.go\na:0:0:444\nZ:Q1tEJ4gOebQBNBg9WO1TBlHngBTCI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/personalizer/v1.0/personalizer/personalizerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YHVL6bBYq202lD6fQWombPFDh84=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/policyinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/policyinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/policyinsights/mgmt/2018-04-04\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/policyinsights/mgmt/2018-04-04/policyinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+R8SBQRrSXbav9pNS+7NrUOfy+0=\nR:client.go\na:0:0:444\nZ:Q1kN+1pKeWr7LDmVo3Br36X3tdNTI=\nR:enums.go\na:0:0:444\nZ:Q1k+vkJFjmWh3QRDZVDgMKBg0h+mo=\nR:models.go\na:0:0:444\nZ:Q1zCZxUOfje4C/Ufk/LYKCcCEbWEA=\nR:operations.go\na:0:0:444\nZ:Q1Wke18K8GYFk/59dwjYGvUfi5YZg=\nR:policyevents.go\na:0:0:444\nZ:Q1viQwaGR0F2tkvaObQcz9GJNfBp4=\nR:policystates.go\na:0:0:444\nZ:Q14bpLR5cRhJ+pqaIV17H8d1CH+e0=\nR:version.go\na:0:0:444\nZ:Q1O90sCdTVF4STdghakwgr9b32r2I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/policyinsights/mgmt/2018-04-04/policyinsights/policyinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1I8IaaUekbdm9aQzDb+i7H1WucW4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2017-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2017-12-01/postgresql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ao+jL0lLjJdm1QZcNSl3YSi0RaA=\nR:checknameavailability.go\na:0:0:444\nZ:Q1+uuytagSfb7/+HAac3iCzyMJJek=\nR:client.go\na:0:0:444\nZ:Q1QtrfN5GB4mSt89lfcQxbS6dBD7s=\nR:configurations.go\na:0:0:444\nZ:Q1K5d2a5xvkTuRWscdSe6JhdItANw=\nR:databases.go\na:0:0:444\nZ:Q1tdNw0zK4zA3W47D305CCpGbHuC4=\nR:enums.go\na:0:0:444\nZ:Q1Fa/udFunAoWc91oHOCqDdMzukwE=\nR:firewallrules.go\na:0:0:444\nZ:Q1lQrNaIC4HQj+Gy2TJ60fnC0IPgk=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1ZTqdIiHodSEHN8oxzZogEYxnZyw=\nR:logfiles.go\na:0:0:444\nZ:Q17vMaarDsbdTSN2ERplx2ISxnCn4=\nR:models.go\na:0:0:444\nZ:Q1xw4Kd5H46YjWnhcgxuopZdLZCjY=\nR:operations.go\na:0:0:444\nZ:Q1MijCO4H0D17II5p0AchbmJIT2GE=\nR:replicas.go\na:0:0:444\nZ:Q1vGt8iTdWa1XAsnuKoNschOBHUFo=\nR:serveradministrators.go\na:0:0:444\nZ:Q15DJJd3dzEkPBjMTx0IoqIA3HT8o=\nR:servers.go\na:0:0:444\nZ:Q1VlYkDOY8NrRtuiLUW/GXn+Jj5JI=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1RoezqYwgEZtDI+d9Ydb9BI6vzTQ=\nR:version.go\na:0:0:444\nZ:Q1JFGLldAxDUV2pIRtTYHBE3758xk=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1TOXrsJDqNBcftOfcCRqwdzkhezw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2017-12-01/postgresql/postgresqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CphlZq9IrBnRqUnIgqae/TVGIbc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2020-01-01/postgresql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mi5JRjmRdGPUMzeKt2TGUXOkHzg=\nR:checknameavailability.go\na:0:0:444\nZ:Q1n7mgwuxTnLqBlTYRPk7Qz0rCTQg=\nR:client.go\na:0:0:444\nZ:Q1Dmzw3vLuGZQAWJdtNm3PQD37cX4=\nR:configurations.go\na:0:0:444\nZ:Q1YBaerRDERY3YyIXhxS7eitb4DiA=\nR:databases.go\na:0:0:444\nZ:Q1Ph7pSPsAkKUPkHzXqf9sOBDrUTo=\nR:enums.go\na:0:0:444\nZ:Q1Fa/udFunAoWc91oHOCqDdMzukwE=\nR:firewallrules.go\na:0:0:444\nZ:Q1WLc6QqVOZFIAdo6ph+tjhoQsDaU=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1XDEy+uYndDopSvbWE3PSuvYk52E=\nR:logfiles.go\na:0:0:444\nZ:Q1hwTr9mCDcvI2llIryphvR/ZSkcA=\nR:models.go\na:0:0:444\nZ:Q1XP1gfyjDG7hQvJzRnEUDKChEThU=\nR:operations.go\na:0:0:444\nZ:Q1HMPoTvUh6X4/ZjMzMfPtPxOAxSM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1mYwNXGFQz7K00LpIajikRjPFUoM=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ZQJfir9fK+rM5IcXSHVFMPtGUVA=\nR:recoverableservers.go\na:0:0:444\nZ:Q1usVFdRo2ktYKC41TIjdMZRKapGo=\nR:replicas.go\na:0:0:444\nZ:Q15GeqyJ0vP49QFLg+Ku57SIGV1Fo=\nR:serveradministrators.go\na:0:0:444\nZ:Q1jwr0lQRXH4YOLT5RZ8WsqIeVUFU=\nR:serverbasedperformancetier.go\na:0:0:444\nZ:Q1xx3mN9N3PYBb5l/c/Hd41+wqqjI=\nR:serverkeys.go\na:0:0:444\nZ:Q1597WbdcZwM/q3/u/WCClO6SGnd4=\nR:serverparameters.go\na:0:0:444\nZ:Q1p0quU3Yp1U5v77iQcYTybvblfH4=\nR:servers.go\na:0:0:444\nZ:Q1rHsNgZkrOjLnSykaCzgE7+tD0xk=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1f6l8Grqktq+FqfxbWGrBb/M9xYo=\nR:version.go\na:0:0:444\nZ:Q1UEU3s+08HS9KZ8XSbXT7M+TQM/0=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1qxMNr/zpF0CBsKGiK1YYPhfKVFk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2020-01-01/postgresql/postgresqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1h1YJOtgat8k0sTPK3h8XO5elXyM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2021-06-01/postgresqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1sHlAcg75mTaJA2e81EQHw8I2pBs=\nR:checknameavailability.go\na:0:0:444\nZ:Q1LzcXzVvPRFdbpBoJHKDjUXog8P4=\nR:client.go\na:0:0:444\nZ:Q1U0KkGBcskiD8aQr8WVQ/tAse2WU=\nR:configurations.go\na:0:0:444\nZ:Q1Op7jMbmnXPILX856W/azglFcRzg=\nR:databases.go\na:0:0:444\nZ:Q1aMCtzxDmjns50RUnrrB47eScya0=\nR:enums.go\na:0:0:444\nZ:Q1pOJwRSIz7YPATB4snhDgrvLXgl8=\nR:firewallrules.go\na:0:0:444\nZ:Q1veDlK+HUhf8NrllpsSnaTFPYG9Q=\nR:getprivatednszonesuffix.go\na:0:0:444\nZ:Q14kfkRGvXQ00uy1ycnZyfhCSTS7w=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q1Ubrk1U+VfGlEacPKZAYmScmpavs=\nR:models.go\na:0:0:444\nZ:Q1uaG37mwhROdrNfGVRpfmKe/VPJw=\nR:operations.go\na:0:0:444\nZ:Q1o/hOfkHafMUKFcSrOyEr8FzG7Mo=\nR:servers.go\na:0:0:444\nZ:Q18rIF23a1KuCAnxt7XCW+mFto/1w=\nR:version.go\na:0:0:444\nZ:Q1ISS73luLN7ykPNxNOLydRCoNzAM=\nR:virtualnetworksubnetusage.go\na:0:0:444\nZ:Q1sxiN+ravQeDjfQSfShD8rKs7/5E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/postgresql/mgmt/2021-06-01/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QropHv9+nzZkiXw5zPmuPDvjGD0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2017-10-01/powerbidedicated\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1L8gtQH0oLvY3GeXqxpLGddtxJag=\nR:capacities.go\na:0:0:444\nZ:Q1JnHxjiRtsultkbQcYd3dNPNQ0Vg=\nR:client.go\na:0:0:444\nZ:Q1o8WOwS0AAxvEgjLA7tMJNLEyS70=\nR:enums.go\na:0:0:444\nZ:Q1HAC3pBEgEw/8+DyKhXa550+fwUk=\nR:models.go\na:0:0:444\nZ:Q1Hkh49PR1K66a6AuLdWmLxGcvARc=\nR:operations.go\na:0:0:444\nZ:Q1Y9mo9Buw7OEOwzO/CwPVVWQqwok=\nR:version.go\na:0:0:444\nZ:Q1qXPK25Uaav/9dvAObNAt7VNwv/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2017-10-01/powerbidedicated/powerbidedicatedapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1czrbEUYOsDPvNh0CWBKWUz84HQg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2021-01-01/powerbidedicated\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10/QPE3ZUXl4XOHERrv7ql0T+a4I=\nR:autoscalevcores.go\na:0:0:444\nZ:Q1JOWJN05JFoszHFvaafAh0K73o+8=\nR:capacities.go\na:0:0:444\nZ:Q1NJZhjhJvBFCyCnwUa4ysmzPIRSo=\nR:client.go\na:0:0:444\nZ:Q1/nfmjJabI4xp5bVNNohH8fl65Cs=\nR:enums.go\na:0:0:444\nZ:Q1ef/v8/vNaFekU0movrAjzZClJ60=\nR:models.go\na:0:0:444\nZ:Q1ehmqmfPbuNMry/HWaElpsFm0Fnw=\nR:operations.go\na:0:0:444\nZ:Q1SY/iBJB9mu31ixk+rh2Makb7L7I=\nR:version.go\na:0:0:444\nZ:Q1a1fjwjgs/uUgnkLIXxE305TGmwg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbidedicated/mgmt/2021-01-01/powerbidedicated/powerbidedicatedapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1S76hnq/RYjB/mb9YXUaWEg/uiGs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbiembedded\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbiembedded/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbiembedded/mgmt/2016-01-29\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbiembedded/mgmt/2016-01-29/powerbiembedded\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10XmxRtOrokifFm71ualO4IgHgGg=\nR:client.go\na:0:0:444\nZ:Q1AnG46fDaOwJEqcl8mV0MS+rDvDY=\nR:enums.go\na:0:0:444\nZ:Q1lGiIAfhxN63QFxl1gb9O3/asa4M=\nR:models.go\na:0:0:444\nZ:Q1Amc866iRT8E+CcYD7f9oenCjUUE=\nR:version.go\na:0:0:444\nZ:Q1jVWY9WgE4kzmxOfBkLu4La4v/Gc=\nR:workspacecollections.go\na:0:0:444\nZ:Q1rmFlSV7Q/rojPxWVc8jtv+Bs9uM=\nR:workspaces.go\na:0:0:444\nZ:Q1iOy77tFz+lBSLwVqlWH7YGDo3hw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/powerbiembedded/mgmt/2016-01-29/powerbiembedded/powerbiembeddedapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1oTCEU8TREMyUOBbf6lCldD8a7Kc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/aad\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/aad/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/aad/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/aad/mgmt/2020-07-01-preview/aad\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nH8ExVRDpQuiGOxxTnVh/dO8hMg=\nR:azureadmetrics.go\na:0:0:444\nZ:Q1CPDFecNl1V3IX6A2H1ctNiOPoZM=\nR:client.go\na:0:0:444\nZ:Q13mgeaeLp6Onm6VFWV8SO9oQL+2g=\nR:enums.go\na:0:0:444\nZ:Q1ktDJ0y3UlzoUleJNrYeUhCHRMI0=\nR:models.go\na:0:0:444\nZ:Q1izFibqt2F69YdMSY4HyGjZa65nQ=\nR:privatelinkforazuread.go\na:0:0:444\nZ:Q1Wiao7X6KRcCP/6xdrLzvuwEWbsM=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1AVdsf+z5Y3CaC14ekyrSSEO+qV0=\nR:version.go\na:0:0:444\nZ:Q11QcJz6qpfYpAhurD9fW8q8yEb1Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/aad/mgmt/2020-07-01-preview/aad/aadapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YuI/KwtUNp1CL4KcpuQ+cHJzejE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2017-05-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2017-05-15/addons\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1HDskukkFjzU3u9S3gzdRYMXANoA=\nR:canonicalsupportplantypes.go\na:0:0:444\nZ:Q1elD1ejG03GokYYdXgrzJ5/W5YtU=\nR:client.go\na:0:0:444\nZ:Q11/X40jFROvOiuUiau5qNvCz/hTc=\nR:enums.go\na:0:0:444\nZ:Q15dLdAirhK0gh9bGQu/fnGwQoJsI=\nR:models.go\na:0:0:444\nZ:Q14TgpOBQR7HbUU4pLZN1VYxjog+0=\nR:operations.go\na:0:0:444\nZ:Q12hcAKCSPg9fwl02wzGk/jdzJQTg=\nR:supportplantypes.go\na:0:0:444\nZ:Q1q1qn4EnEG3zPWKp/t8qtV3fRQUU=\nR:version.go\na:0:0:444\nZ:Q1mV8pDuNcrBkonpUC+63f++aw06w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2017-05-15/addons/addonsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VZ5wx+cit+vCqZFkDwvEgsbF0X0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2018-03-01/addons\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q183Sc+G8iBadlCgCPdkLUite615Y=\nR:client.go\na:0:0:444\nZ:Q1lbLMQ9zcv1CdplcQLDCxCEOZalk=\nR:enums.go\na:0:0:444\nZ:Q1WZOFbHsq2f7eofcIbGKVUjZWEHo=\nR:models.go\na:0:0:444\nZ:Q1NV0YrIbfyWsRiT4U3htVD3kQdLw=\nR:operations.go\na:0:0:444\nZ:Q1Rm8vkxihPiTt8i8922KiqQDJt6o=\nR:supportplantypes.go\na:0:0:444\nZ:Q1ISL+1tGyiZK7Oh+yELKsr5aLpk0=\nR:version.go\na:0:0:444\nZ:Q17EBTNAYMwXmJEy8+5uTcE//VKNk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/addons/mgmt/2018-03-01/addons/addonsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1K64QTGiAzagrz2r3mDUeWKBw3tM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-05-05-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-05-05-preview/alertsmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lxhaJyNpNCstWIdgwXQhgdxY8pM=\nR:actionrules.go\na:0:0:444\nZ:Q1XokgFeWbBoFwrSqlMSNXhvM6VGg=\nR:alerts.go\na:0:0:444\nZ:Q1sUp76TR2oYiEDdQdPcplvBCuAgI=\nR:client.go\na:0:0:444\nZ:Q1/VJqQT6FbmVy17ViARpww5bjvkI=\nR:enums.go\na:0:0:444\nZ:Q1IvDXeWTiZ1/DYV0khMolzk6FM3I=\nR:models.go\na:0:0:444\nZ:Q1k0hnJGY+ORwnkmwfr67mVKKk6Qo=\nR:operations.go\na:0:0:444\nZ:Q1WhNw8n9gGKZkfcNCUXZWW37UL0k=\nR:smartgroups.go\na:0:0:444\nZ:Q1CSXSofgNdocsryOjbaJNUNKT12k=\nR:version.go\na:0:0:444\nZ:Q1Gv4lxzpTCGrCxXv9jmoAoREuLtw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-05-05-preview/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uKi9Jc2f0DYt+pHUvJBqTWkOF8Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-06-01-preview/alertsmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1f49vaVinwlAglTMSpLB1ITiDVxM=\nR:actionrules.go\na:0:0:444\nZ:Q1XokgFeWbBoFwrSqlMSNXhvM6VGg=\nR:alerts.go\na:0:0:444\nZ:Q1sUp76TR2oYiEDdQdPcplvBCuAgI=\nR:client.go\na:0:0:444\nZ:Q1I9Ew60tYo6/Z045tvvpfRcbg+NA=\nR:enums.go\na:0:0:444\nZ:Q11jERhCyVNOpPC3dnrh4+gDFJhSY=\nR:models.go\na:0:0:444\nZ:Q1kXzet/VfqZejmBt+TT1DcjrviTU=\nR:operations.go\na:0:0:444\nZ:Q1WhNw8n9gGKZkfcNCUXZWW37UL0k=\nR:smartdetectoralertrules.go\na:0:0:444\nZ:Q1tsc+x5Mg8oja+h9a4LP0sfH7dpg=\nR:smartgroups.go\na:0:0:444\nZ:Q1CSXSofgNdocsryOjbaJNUNKT12k=\nR:version.go\na:0:0:444\nZ:Q13EGUGdfmffySksLNERfeyRu4kGw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/alertsmanagement/mgmt/2019-06-01-preview/alertsmanagement/alertsmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1E0WVa1NS2DHFpEDSig4/B0d4+6Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/ctrl\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/ctrl/2017-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/ctrl/2017-03-01/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1stI6yHr4W5Nq7SEdlN7Z4KbUaZI=\nR:api.go\na:0:0:444\nZ:Q1FlE9IFpGDR6ySDPAqOvbSBmlB4U=\nR:apiexport.go\na:0:0:444\nZ:Q1psIA/7yFDyDhw1mjNT8znZZ4CJM=\nR:apioperation.go\na:0:0:444\nZ:Q1ZTEFUEc3gvFk7U8mGSL9chL9m1M=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1n5TaLW4li1ncwL0WFV64k1Ej3nM=\nR:apipolicy.go\na:0:0:444\nZ:Q1GPuYjzIcnMSDbkmpER5AsoeoPCU=\nR:apiproduct.go\na:0:0:444\nZ:Q1B3oCtXJzMrhnHzc9YI2KFp80nOI=\nR:apischema.go\na:0:0:444\nZ:Q1QJrGL9zzb21eIs+8Y9lNRjGpm4M=\nR:authorizationserver.go\na:0:0:444\nZ:Q1md/ff3ept1gVPz90/NfzYkbUh3g=\nR:backend.go\na:0:0:444\nZ:Q1mU9xAuDTWkYToMvoOk1a1se4OCI=\nR:certificate.go\na:0:0:444\nZ:Q1k1m1FDRYvi4diE+wdqZeEeAoIgg=\nR:client.go\na:0:0:444\nZ:Q1aGEa4AkucIoBbRFdHonO/kDBIqs=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1WVLHOQDau2YlJtauhVH/QdQ10aA=\nR:delegationsettings.go\na:0:0:444\nZ:Q1KSP0q3Pofn3GQSmy2rkoTI+5wXY=\nR:emailtemplate.go\na:0:0:444\nZ:Q1I6spe0aLLrWz0VlsU/ovNjbcJ9s=\nR:enums.go\na:0:0:444\nZ:Q1IkNBnivxsTbnFCWFMRDPQNPPVuk=\nR:group.go\na:0:0:444\nZ:Q13ffc6zeKaDc/ALHnANKVK3u6UVY=\nR:groupuser.go\na:0:0:444\nZ:Q1ujOgg8X92XrQJk92rRB6d6XtQic=\nR:identityprovider.go\na:0:0:444\nZ:Q1CwD3bbUNbcgXWoRo9t2Bo0KxkVI=\nR:logger.go\na:0:0:444\nZ:Q1Gia0/y2jAPRsIIvgu5t4jzcKxO4=\nR:models.go\na:0:0:444\nZ:Q1x5l3RSUUpr3s8ipBo5iXm65I9WI=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q1I3TWs4uLsdtIJ7jQ/rGQ+/S/lOo=\nR:policy.go\na:0:0:444\nZ:Q1AvUkYLgxCMmfcQaKxYPB6GwYl0o=\nR:policysnippets.go\na:0:0:444\nZ:Q1UzTi7yoYfOhacBy9BSPzU3/10IE=\nR:product.go\na:0:0:444\nZ:Q1AujiDpckctH9xyFlZTQJbhx6wxU=\nR:productapi.go\na:0:0:444\nZ:Q1cirrAUOMuvHlcnTCdqY2oHHqVU4=\nR:productgroup.go\na:0:0:444\nZ:Q13g5g0BztJ8A6+tMeOxCON0CUuOE=\nR:productpolicy.go\na:0:0:444\nZ:Q1DSGnzkRY+XFR66Y1zSpPQzfduvI=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1iWuNh/oYAWRbSINcW5NQGNg/m5M=\nR:property.go\na:0:0:444\nZ:Q1vj42Hphr6sxPBMVxuBHjdvIzXNo=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1w1v1vE+RoW5kkvRDNNaC4JBHvTQ=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1qRZs7kgcHqbc4qlsPNggI2VqqEE=\nR:regions.go\na:0:0:444\nZ:Q1IBsv3bCWVrLbXg4Z5coCQlT4jXM=\nR:reports.go\na:0:0:444\nZ:Q1CP4a6C9b3Gf59xqyOCtF2UyZ7rs=\nR:signinsettings.go\na:0:0:444\nZ:Q1tQu3q1ALAutSXBROwfzMetWaJGc=\nR:signupsettings.go\na:0:0:444\nZ:Q11tMhYOQ4SdNmKC8zNjNcpmD/sjE=\nR:subscription.go\na:0:0:444\nZ:Q1GdN4sjRPQkvVpRy+DGW+Yt6if+g=\nR:tenantaccess.go\na:0:0:444\nZ:Q1lYzjvvUwzpNetJlQpKb9GY+PVRE=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q13OrJP7zTE7ZMG0wnJxEfO84X8K8=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q1rmr97mA/ZhheW9F7APDQ9EbAt7U=\nR:user.go\na:0:0:444\nZ:Q1zpJdLevQKQJiLGlg/JeP0gM7kkY=\nR:usergroup.go\na:0:0:444\nZ:Q1SUUGSTdd7klbI5IUNMiFIR5J3lg=\nR:useridentities.go\na:0:0:444\nZ:Q1w1CnUpnKxg1f82YPF2RYdSnYUJM=\nR:usersubscription.go\na:0:0:444\nZ:Q1Y0IDAAa+3+as0yz2bG0opYdgdb4=\nR:version.go\na:0:0:444\nZ:Q14uPMKGQUCzGew4KmPt+dxRL9IMw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/ctrl/2017-03-01/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JnvlzLew1aXrBUalr3CJxz9dI44=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/mgmt/2021-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/mgmt/2021-01-01-preview/apimanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ih4V56y6Ox1QhBcMB0Kgt11sFgI=\nR:api.go\na:0:0:444\nZ:Q1fDVYHk2ocGz3XcE9cNOBg+B4Ifo=\nR:apidiagnostic.go\na:0:0:444\nZ:Q1gZB/FY/dX3G/aMF0WeYuMIVjvJc=\nR:apiexport.go\na:0:0:444\nZ:Q1yGBjxRtlBVqhb/V7tPBTIc+i3T8=\nR:apiissue.go\na:0:0:444\nZ:Q1eBleyDVOZD6weH9pxrOo0K+p0v4=\nR:apiissueattachment.go\na:0:0:444\nZ:Q1BHN2woUvfAfODo/tu7H1lP45BvE=\nR:apiissuecomment.go\na:0:0:444\nZ:Q1DHZxDIeYFrHxzpeu+Mzv6Oc+zlo=\nR:apioperation.go\na:0:0:444\nZ:Q1nX83H1pR+pdtJSDGL/rFFUONQq8=\nR:apioperationpolicy.go\na:0:0:444\nZ:Q1W+m5KSCYqsWL2+oq2yuOhkPsQaw=\nR:apipolicy.go\na:0:0:444\nZ:Q1Kz5A1ZPAlfIwbaA4NN+5V+BcbtE=\nR:apiproduct.go\na:0:0:444\nZ:Q1oA9zIJgfnc9wITW8Vdvtzayhvj4=\nR:apirelease.go\na:0:0:444\nZ:Q1NAm1gBkZGGnM+wOwB711H/ZOj60=\nR:apirevision.go\na:0:0:444\nZ:Q1w3VQumItl5jVH8jSk3B9raQOsK0=\nR:apischema.go\na:0:0:444\nZ:Q1qezCuEx++ejVQb1xnRS22sZBHfE=\nR:apitagdescription.go\na:0:0:444\nZ:Q1Lf/PQo0NPbrsnrUySw7lPIw2k/8=\nR:apiversionset.go\na:0:0:444\nZ:Q17nmMV/tkszK3cpnswqYw/U7dAZA=\nR:authorizationserver.go\na:0:0:444\nZ:Q1krPr1Kk3gcVZ2ga9623t/ypdI74=\nR:backend.go\na:0:0:444\nZ:Q1K5Cn0D7Yk4qsQE4A3bxNedq8rtg=\nR:cache.go\na:0:0:444\nZ:Q1OO60I5C+aEQdxAFAvDMTrIJQ/nM=\nR:certificate.go\na:0:0:444\nZ:Q1Jg93tmAtgH9WVtHwkbG+74uqtBg=\nR:client.go\na:0:0:444\nZ:Q1VcsYIdlGCzRWNyX11XUnSo+uODM=\nR:contentitem.go\na:0:0:444\nZ:Q1NWQmH4Z9l+pO36e5pR16wW2vipQ=\nR:contenttype.go\na:0:0:444\nZ:Q1pow2qn54WOctMegvva8kYIJSdw0=\nR:delegationsettings.go\na:0:0:444\nZ:Q1TYNI/nLr+xLRsoGzPs4Z52wcLVg=\nR:deletedservices.go\na:0:0:444\nZ:Q1prZrOEusPh7HJ6eAHO7hWhdDXcY=\nR:diagnostic.go\na:0:0:444\nZ:Q1poRNgTZcVhCPY59BITbIc4cRQv4=\nR:emailtemplate.go\na:0:0:444\nZ:Q1ymbuSW0fGNO4IhPnMarNJGCmpD0=\nR:enums.go\na:0:0:444\nZ:Q1Qo72h3IiGjIRFvFEuwQoFEFozdA=\nR:gateway.go\na:0:0:444\nZ:Q1cbso3ksCZoKGix201MEkLt2yqa4=\nR:gatewayapi.go\na:0:0:444\nZ:Q1jU1ieMIU9JFSPYLqrrxCSV5y41Q=\nR:gatewaycertificateauthority.go\na:0:0:444\nZ:Q1/E0zngl8pIrGma+/CAYIDx5yjnU=\nR:gatewayhostnameconfiguration.go\na:0:0:444\nZ:Q1pvV2c8Djgzr5wRhuWN9M+VKgyyo=\nR:group.go\na:0:0:444\nZ:Q17XHIwJ2TZks6gzQYk1iKmE53YJM=\nR:groupuser.go\na:0:0:444\nZ:Q1kQTwb/wk1MkD9Rn6cv/2EGO7wGE=\nR:identityprovider.go\na:0:0:444\nZ:Q1agGq3Pb0RqYl9iw6xMv+/NF36xQ=\nR:issue.go\na:0:0:444\nZ:Q12YIiynFEEfQm3otCHgbBQUDZPUo=\nR:logger.go\na:0:0:444\nZ:Q19vvLI7Tj6hOBnJFpk8OUtKO/v50=\nR:models.go\na:0:0:444\nZ:Q1om+PTvAe/KP17C9fXpJv3TeA86k=\nR:namedvalue.go\na:0:0:444\nZ:Q1rqiW3MsEAynGPNJaoJN8zZTGKTE=\nR:networkstatus.go\na:0:0:444\nZ:Q1M8HnxO2orhVSgjHK989+M0KoBkU=\nR:notification.go\na:0:0:444\nZ:Q1F7fGydPC57+iZ0X3JnM3mwfPKys=\nR:notificationrecipientemail.go\na:0:0:444\nZ:Q1R2BbaB2GgPg3UdgBNWRrTCy8jlI=\nR:notificationrecipientuser.go\na:0:0:444\nZ:Q16XKHVQ4EW0YYcRTRjBMhjcZVkO0=\nR:openidconnectprovider.go\na:0:0:444\nZ:Q160N85lGCZvNd8sJkSnjC9qA1eyo=\nR:operation.go\na:0:0:444\nZ:Q1kMAbXibGkaS1uwQ2m/UEYYn6yJQ=\nR:operations.go\na:0:0:444\nZ:Q1v4Hg/pjssvkwOQYqtjLU86pkWJo=\nR:policy.go\na:0:0:444\nZ:Q1HH+whYRqhKKsiYcowfVVy2vKTho=\nR:policydescription.go\na:0:0:444\nZ:Q1qaRrnp4uzNCT5p3p43J198mNMc0=\nR:portalrevision.go\na:0:0:444\nZ:Q1vwf6bYLViB0VyLP/ICuVavG6O/c=\nR:portalsettings.go\na:0:0:444\nZ:Q1x1YRwFU6+ctc9bcUXzUp/2u43jo=\nR:product.go\na:0:0:444\nZ:Q1ElqqaZnqkEgY6vYh3PqFs+tWlt4=\nR:productapi.go\na:0:0:444\nZ:Q14/2Yo9a4EgPs9j/qtP+ZLXuct4E=\nR:productgroup.go\na:0:0:444\nZ:Q12+XvqNs6LVZmoYfzib6soiSR81s=\nR:productpolicy.go\na:0:0:444\nZ:Q1hbB4GoA+iI5rJR0cbPJ7OWD7Bhk=\nR:productsubscriptions.go\na:0:0:444\nZ:Q1Re+WpMsNil+SK7tSwXqjmdIesQ4=\nR:quotabycounterkeys.go\na:0:0:444\nZ:Q1YN1e3dy+bcJxa3lJaXUoTgV9PX4=\nR:quotabyperiodkeys.go\na:0:0:444\nZ:Q1ZZgA5rROb1gixNCiO7dXgLwDD7o=\nR:region.go\na:0:0:444\nZ:Q1C7j7ZOQCIKa4517U+8NHTJgtJvE=\nR:reports.go\na:0:0:444\nZ:Q1IgwMbXxTRHi6FZr+ejZ5HP6x/QM=\nR:service.go\na:0:0:444\nZ:Q1esjyPr2nIFxY3Y9zQ+zfRQdHFnk=\nR:serviceskus.go\na:0:0:444\nZ:Q1penhWrpua/dXT1IsWooatOVjx2g=\nR:signinsettings.go\na:0:0:444\nZ:Q1XnUIp/DZC96VQ8dW+68BwiY9I9E=\nR:signupsettings.go\na:0:0:444\nZ:Q1DF4bU46Cevdv5AbxisLqVCDTHEU=\nR:skus.go\na:0:0:444\nZ:Q1NpqEsGh8DomWvi9xm5iWOvkZ670=\nR:subscription.go\na:0:0:444\nZ:Q1a56C7Nltb4ErdEr/8vTIOSKt22g=\nR:tag.go\na:0:0:444\nZ:Q1NYChua/xpXfa9uwxDr/VeLEjtiI=\nR:tagresource.go\na:0:0:444\nZ:Q1APzB+70EhkJkWbh6C4WZFomCpYQ=\nR:tenantaccess.go\na:0:0:444\nZ:Q1OYAr7mzXgiInX0e/jI/Bu0613R4=\nR:tenantaccessgit.go\na:0:0:444\nZ:Q1lf99P6OInx/vM1lv9Tr+47ZO/cI=\nR:tenantconfiguration.go\na:0:0:444\nZ:Q18B2xeuhQ1DHukm73+tcfIwBGtZI=\nR:tenantsettings.go\na:0:0:444\nZ:Q1qwDHFeVRcGnlhQyGkQ0j1JA50vc=\nR:user.go\na:0:0:444\nZ:Q1s8OALni48n7wRkgoRyuQcNF+CUc=\nR:userconfirmationpassword.go\na:0:0:444\nZ:Q1QZcbZJ9Dtg/FkwTATp4sXs+ceQE=\nR:usergroup.go\na:0:0:444\nZ:Q1lY+5VF4LZcWWwiWS23myP6tr15I=\nR:useridentities.go\na:0:0:444\nZ:Q1SNgQ2/T87SXHtRDCyOvCOCoux48=\nR:usersubscription.go\na:0:0:444\nZ:Q1k6VfocQDmmaePctAEEc7tGWlvsQ=\nR:version.go\na:0:0:444\nZ:Q1airXv+fjRqzfovRwzwNrfrKEon8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/apimanagement/mgmt/2021-01-01-preview/apimanagement/apimanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pD2PhUawlaESWV/A3nWgk1R0ZrU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-02-01-preview/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gwOK0TtxnwvAvD5pNPZt2uAY2N4=\nR:client.go\na:0:0:444\nZ:Q1AWtwid49dni5hAZ+UBvawUGfYyY=\nR:configurationstores.go\na:0:0:444\nZ:Q1gbZLDB+KQmnclPUPLjevittTGKA=\nR:enums.go\na:0:0:444\nZ:Q1/kb7HtAXG4F8Rk01uYddkvqRndM=\nR:models.go\na:0:0:444\nZ:Q1ocvzVPa3wRI1s4YW5Bjf2YuWtMc=\nR:operations.go\na:0:0:444\nZ:Q1/uyw1oe/3vnBT2/a5r51HtxaGzk=\nR:version.go\na:0:0:444\nZ:Q1iPA7rPZ0itiHrJjDQ3zURLDr5LI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-02-01-preview/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q144KSOP75SP2tMzPPUf+MVO74R30=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-11-01-preview/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1znscDTE4s+V0L2WSENd6OkZnQz0=\nR:client.go\na:0:0:444\nZ:Q16mYP3e6OVkVxieSqgs1THDo6ukE=\nR:configurationstores.go\na:0:0:444\nZ:Q1sVe4CTLkQK+Tpxc9V1cuBkWX3Ns=\nR:enums.go\na:0:0:444\nZ:Q1JbLsecJNNKFGyoeRywQinZzz8IY=\nR:models.go\na:0:0:444\nZ:Q1pHfx5hzUXedYvNa1tVF+BK2LqYs=\nR:operations.go\na:0:0:444\nZ:Q1Yy5rOXhHAb5+5uadkRfU/nV0JXc=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1DZAPQrXoq922cdAanovlPJD+CLE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q11HiyX4n/PKHxf2BER3C7CHihLBw=\nR:version.go\na:0:0:444\nZ:Q1+bpIjbWmCorMP8IagHZLetFNvRo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2019-11-01-preview/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15D/peMZS1tMiSHxhCoyZYTtOyok=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2020-07-01-preview/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RL3pS3msHMMnYTVA68YWz8XBxdA=\nR:client.go\na:0:0:444\nZ:Q17dAPljzFnFfcfkOXKCZqqLObX4E=\nR:configurationstores.go\na:0:0:444\nZ:Q1wN0GkFq4MaxqwJXLID3f5Uisp4E=\nR:enums.go\na:0:0:444\nZ:Q1JbLsecJNNKFGyoeRywQinZzz8IY=\nR:keyvalues.go\na:0:0:444\nZ:Q1LkfgStJdvtcRRu224Qg25729trs=\nR:models.go\na:0:0:444\nZ:Q1NYC27OeWky7k/fGT82BEudnf2hQ=\nR:operations.go\na:0:0:444\nZ:Q1FKUriJmOAGn2z5dHoLgUw5Z1j6E=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1h9DZb87KfYFM74musvpPsN1Tg/k=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1MbmZfcgGRfkrDmzWiAhNbaCLmtI=\nR:version.go\na:0:0:444\nZ:Q10peBEbo0iI1W3RMFvECzzfbmM7U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2020-07-01-preview/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sPDSM0rV8tGwZt5qyDIfDabwUeM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-03-01-preview/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TMAxZxUb0URCUyrgmy1CNQ/0r7U=\nR:client.go\na:0:0:444\nZ:Q1rZtSAARFmrMW3Irf0HFEPBYCFfE=\nR:configurationstores.go\na:0:0:444\nZ:Q123MMaQEMSHxle7RKmYVrNsSwy+U=\nR:enums.go\na:0:0:444\nZ:Q1v0Hp653v3IJBATftxq3Fut7vqqY=\nR:keyvalues.go\na:0:0:444\nZ:Q1kyoq4MSuDXJgNu59PbIwpRG5UY4=\nR:models.go\na:0:0:444\nZ:Q1TMSItVYdHvlOLMbISfq+GeRX4Bk=\nR:operations.go\na:0:0:444\nZ:Q1KmBEADiMUEO/LuY9Y1xlEMoT3+M=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1lTa570gVA0BGB7oQd7tSa5vyHzY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q173K60EHEl/aSFVhrYkdh5EIgZjU=\nR:version.go\na:0:0:444\nZ:Q10gFCEIYetEnuvYhYF2lY4PjCKU4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-03-01-preview/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tHdGTja2TBTp1jbBgJn4o6Vd1sk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-10-01-preview/appconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mbh9xF7ZBS95kdULOos9nV1vniM=\nR:client.go\na:0:0:444\nZ:Q18OYHGZ67Xi35MIy8K511gZKiX9w=\nR:configurationstores.go\na:0:0:444\nZ:Q1ZkxULfqxEupXw+1VTnMeaWFNtEc=\nR:enums.go\na:0:0:444\nZ:Q1ZDloixaTo3OVqYwDG+ZtvDLJIHU=\nR:keyvalues.go\na:0:0:444\nZ:Q119sVVgfpWno8txc7VTfwpvG2PJM=\nR:models.go\na:0:0:444\nZ:Q1u9wIWbPJ2qIv7k4nv54VHiWS2go=\nR:operations.go\na:0:0:444\nZ:Q1VEj32xq1yt01IGGgci17R+vnZ8o=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1I8O91jqEUUMZWiVkQLhdMQ/OCPY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1T4eflL7eDvlZK6DEJKOt2Q+glRM=\nR:version.go\na:0:0:444\nZ:Q1Z2gD3HtrRYpgyydHm6dOftQsoEg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appconfiguration/mgmt/2021-10-01-preview/appconfiguration/appconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q131Ue/wjUwAFFg7zyJkCAQCw6q60=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2020-02-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2020-02-02-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YnieP0RBJW1VNF5/rmAbcTIh7CA=\nR:analyticsitems.go\na:0:0:444\nZ:Q1ij6Lxp1sEYh8PkVd3Ki4Mhzxbmo=\nR:annotations.go\na:0:0:444\nZ:Q1yihyf+QqY+ma4ZuNaTG+ovd6vwE=\nR:apikeys.go\na:0:0:444\nZ:Q10t2X2Es2o0+rwQrgXtXiiBdUy1w=\nR:client.go\na:0:0:444\nZ:Q1S/289qTdz0XH23lRh94Mh6ZDD8s=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1eT1O/6Yv3BjUQtR62/qD73pDh7s=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q1PAX6HVkwRDsRL2Z0pnVywSTGPSI=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q1vBJRzxEEtkIAkg+5oKQIYzo9l3Y=\nR:componentlinkedstorageaccounts.go\na:0:0:444\nZ:Q15ZZH3EKz1DA2ymJ55YYXHUcFq6I=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1hC6f2pFhYsnx+aCxtKetCiDyveE=\nR:components.go\na:0:0:444\nZ:Q1sB2iWn/cvKtWyfC8r4VF0bMVJ9Y=\nR:enums.go\na:0:0:444\nZ:Q1tlzLk9PloJQid/AGLLZWdsISfZg=\nR:exportconfigurations.go\na:0:0:444\nZ:Q1wzD98eiEdklAkvFCuQMuvC2GKnE=\nR:favorites.go\na:0:0:444\nZ:Q1nYEIykRPZNI/8uSkEAlWlJkZ6e0=\nR:models.go\na:0:0:444\nZ:Q1pIJh+Us4nbh81yFO8SNkgweDGhk=\nR:myworkbooks.go\na:0:0:444\nZ:Q18PcXamjZS8j47nQzL+1kgo/ZZ0Y=\nR:operations.go\na:0:0:444\nZ:Q111r5dOjyCG3MWmZ5MYXpA9hMX94=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1hvGkf5qcw+/Q94tM2t0IWHChgUk=\nR:version.go\na:0:0:444\nZ:Q1MPhKo4SyA5nLTw7wA3VCJl2xgWQ=\nR:webtestlocations.go\na:0:0:444\nZ:Q1CQPzZfjvhJboRZAbUT5C2LWkB/g=\nR:webtests.go\na:0:0:444\nZ:Q1oqBSUrWi027ljtLZbWT7uxTfVaE=\nR:workbooks.go\na:0:0:444\nZ:Q1NTNV6TEE/oUbI1e6C+tx2jlKxHs=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1Ga7LRHSRFTe6PoeJNcob74hgnek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2020-02-02-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1hQkHAbqAox4YepZEW3vzBnSSC8w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2021-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2021-11-01-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QLOvA3zBwZI6RcYga0eArEm77C8=\nR:analyticsitems.go\na:0:0:444\nZ:Q1ij6Lxp1sEYh8PkVd3Ki4Mhzxbmo=\nR:annotations.go\na:0:0:444\nZ:Q1yihyf+QqY+ma4ZuNaTG+ovd6vwE=\nR:apikeys.go\na:0:0:444\nZ:Q10t2X2Es2o0+rwQrgXtXiiBdUy1w=\nR:client.go\na:0:0:444\nZ:Q1S/289qTdz0XH23lRh94Mh6ZDD8s=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1eT1O/6Yv3BjUQtR62/qD73pDh7s=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q1PAX6HVkwRDsRL2Z0pnVywSTGPSI=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q1vBJRzxEEtkIAkg+5oKQIYzo9l3Y=\nR:componentlinkedstorageaccounts.go\na:0:0:444\nZ:Q15ZZH3EKz1DA2ymJ55YYXHUcFq6I=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1hC6f2pFhYsnx+aCxtKetCiDyveE=\nR:components.go\na:0:0:444\nZ:Q1YpJPqTMy02TFvJnLl77C0DZiusA=\nR:enums.go\na:0:0:444\nZ:Q1MfN+0fD1o5GsA3BCkOtxeDC+RhM=\nR:exportconfigurations.go\na:0:0:444\nZ:Q1wzD98eiEdklAkvFCuQMuvC2GKnE=\nR:favorites.go\na:0:0:444\nZ:Q1nYEIykRPZNI/8uSkEAlWlJkZ6e0=\nR:livetoken.go\na:0:0:444\nZ:Q1Hdf4q6tUluEwRQHhsNxXDCEdnGA=\nR:models.go\na:0:0:444\nZ:Q1+r/VQzaaBK/w0SfDiq5FfpnBMF4=\nR:myworkbooks.go\na:0:0:444\nZ:Q1x5qB3G3Q73/ZuvaFXonyWT+ZQYQ=\nR:operations.go\na:0:0:444\nZ:Q1sif9otwPlIt3/Y3FylUBfVsXOPo=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1hvGkf5qcw+/Q94tM2t0IWHChgUk=\nR:version.go\na:0:0:444\nZ:Q1eS8VvvqAqYRe3ft5b8Rx3+q0gZU=\nR:webtestlocations.go\na:0:0:444\nZ:Q1CQPzZfjvhJboRZAbUT5C2LWkB/g=\nR:webtests.go\na:0:0:444\nZ:Q1oqBSUrWi027ljtLZbWT7uxTfVaE=\nR:workbooks.go\na:0:0:444\nZ:Q1RlHGuCOUXFdcTMs/96IF6+WgFRo=\nR:workbooktemplates.go\na:0:0:444\nZ:Q1KIwZ2HFZtwQkliCcg3R6V37RjbM=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1Ga7LRHSRFTe6PoeJNcob74hgnek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2021-11-01-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11uFtmOjwHanccDwzB26yi4983ow=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-01-11-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-01-11-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/hSi4cH7vlO6cBrg659+qLmTbNE=\nR:analyticsitems.go\na:0:0:444\nZ:Q1ij6Lxp1sEYh8PkVd3Ki4Mhzxbmo=\nR:annotations.go\na:0:0:444\nZ:Q1yihyf+QqY+ma4ZuNaTG+ovd6vwE=\nR:apikeys.go\na:0:0:444\nZ:Q10t2X2Es2o0+rwQrgXtXiiBdUy1w=\nR:client.go\na:0:0:444\nZ:Q1S/289qTdz0XH23lRh94Mh6ZDD8s=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1eT1O/6Yv3BjUQtR62/qD73pDh7s=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q1PAX6HVkwRDsRL2Z0pnVywSTGPSI=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q1vBJRzxEEtkIAkg+5oKQIYzo9l3Y=\nR:componentlinkedstorageaccounts.go\na:0:0:444\nZ:Q15ZZH3EKz1DA2ymJ55YYXHUcFq6I=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1hC6f2pFhYsnx+aCxtKetCiDyveE=\nR:components.go\na:0:0:444\nZ:Q1sB2iWn/cvKtWyfC8r4VF0bMVJ9Y=\nR:enums.go\na:0:0:444\nZ:Q1Cd50UC7+f0LY3pMylz9XEh0kXIg=\nR:exportconfigurations.go\na:0:0:444\nZ:Q1wzD98eiEdklAkvFCuQMuvC2GKnE=\nR:favorites.go\na:0:0:444\nZ:Q1nYEIykRPZNI/8uSkEAlWlJkZ6e0=\nR:livetoken.go\na:0:0:444\nZ:Q1CWpqqYeGrNdy2pkCzAArLnPrvMw=\nR:models.go\na:0:0:444\nZ:Q1TcT6/GcNClOS17URqUc6GtfbXCY=\nR:myworkbooks.go\na:0:0:444\nZ:Q1x5qB3G3Q73/ZuvaFXonyWT+ZQYQ=\nR:operations.go\na:0:0:444\nZ:Q111r5dOjyCG3MWmZ5MYXpA9hMX94=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1hvGkf5qcw+/Q94tM2t0IWHChgUk=\nR:version.go\na:0:0:444\nZ:Q1fMeKSIDyZ8b7lAGv4szCIie0qAc=\nR:webtestlocations.go\na:0:0:444\nZ:Q1CQPzZfjvhJboRZAbUT5C2LWkB/g=\nR:webtests.go\na:0:0:444\nZ:Q1oqBSUrWi027ljtLZbWT7uxTfVaE=\nR:workbooks.go\na:0:0:444\nZ:Q1RlHGuCOUXFdcTMs/96IF6+WgFRo=\nR:workbooktemplates.go\na:0:0:444\nZ:Q1KIwZ2HFZtwQkliCcg3R6V37RjbM=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1Ga7LRHSRFTe6PoeJNcob74hgnek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-01-11-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wdqKQEXMZ/HgcR4A31EpF+50I4I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-02-01-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15m0yTMIT+3cE+ZJAW6oYPe2i6N0=\nR:analyticsitems.go\na:0:0:444\nZ:Q1ij6Lxp1sEYh8PkVd3Ki4Mhzxbmo=\nR:annotations.go\na:0:0:444\nZ:Q1yihyf+QqY+ma4ZuNaTG+ovd6vwE=\nR:apikeys.go\na:0:0:444\nZ:Q10t2X2Es2o0+rwQrgXtXiiBdUy1w=\nR:client.go\na:0:0:444\nZ:Q1S/289qTdz0XH23lRh94Mh6ZDD8s=\nR:componentavailablefeatures.go\na:0:0:444\nZ:Q1eT1O/6Yv3BjUQtR62/qD73pDh7s=\nR:componentcurrentbillingfeatures.go\na:0:0:444\nZ:Q1PAX6HVkwRDsRL2Z0pnVywSTGPSI=\nR:componentfeaturecapabilities.go\na:0:0:444\nZ:Q1vBJRzxEEtkIAkg+5oKQIYzo9l3Y=\nR:componentlinkedstorageaccounts.go\na:0:0:444\nZ:Q15ZZH3EKz1DA2ymJ55YYXHUcFq6I=\nR:componentquotastatus.go\na:0:0:444\nZ:Q1hC6f2pFhYsnx+aCxtKetCiDyveE=\nR:components.go\na:0:0:444\nZ:Q1sB2iWn/cvKtWyfC8r4VF0bMVJ9Y=\nR:enums.go\na:0:0:444\nZ:Q1Cd50UC7+f0LY3pMylz9XEh0kXIg=\nR:exportconfigurations.go\na:0:0:444\nZ:Q1wzD98eiEdklAkvFCuQMuvC2GKnE=\nR:favorites.go\na:0:0:444\nZ:Q1nYEIykRPZNI/8uSkEAlWlJkZ6e0=\nR:livetoken.go\na:0:0:444\nZ:Q1CWpqqYeGrNdy2pkCzAArLnPrvMw=\nR:models.go\na:0:0:444\nZ:Q1/yDi1wl9fuVoNtN2TfzEPKVkKwo=\nR:myworkbooks.go\na:0:0:444\nZ:Q1x5qB3G3Q73/ZuvaFXonyWT+ZQYQ=\nR:operations.go\na:0:0:444\nZ:Q111r5dOjyCG3MWmZ5MYXpA9hMX94=\nR:proactivedetectionconfigurations.go\na:0:0:444\nZ:Q1hvGkf5qcw+/Q94tM2t0IWHChgUk=\nR:version.go\na:0:0:444\nZ:Q17MrcGtEPJj8S1ff/JE5+aUs8x5E=\nR:webtestlocations.go\na:0:0:444\nZ:Q1CQPzZfjvhJboRZAbUT5C2LWkB/g=\nR:webtests.go\na:0:0:444\nZ:Q1oqBSUrWi027ljtLZbWT7uxTfVaE=\nR:workbooks.go\na:0:0:444\nZ:Q13ouc9JBfr1tI/+uDlDAv6r8x/2A=\nR:workbooktemplates.go\na:0:0:444\nZ:Q1KIwZ2HFZtwQkliCcg3R6V37RjbM=\nR:workitemconfigurations.go\na:0:0:444\nZ:Q1Ga7LRHSRFTe6PoeJNcob74hgnek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/mgmt/2022-02-01-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12ezxM8D2YdXN4eAiT8k0fbapxaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/v1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/v1/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1uN7+zzfvA7qceUiBRc4fa3ValNg=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1uoIs9wJCiKQIUtQTI/OFWFvyPEk=\nR:enums.go\na:0:0:444\nZ:Q1UaW0CiwiJBihif/kyw0Fk97dIAg=\nR:events.go\na:0:0:444\nZ:Q1WYKsZ0Mn468GimyDDlpFdFgcl7s=\nR:metadata.go\na:0:0:444\nZ:Q1Ocn6i131ag2w7r+QcYWJebq5Pas=\nR:metrics.go\na:0:0:444\nZ:Q1u5b+E2uHscTYNpBDGgKYpr7f3n0=\nR:models.go\na:0:0:444\nZ:Q1MMMtM+k4h0bqnYg2r4fjjoOLyv4=\nR:query.go\na:0:0:444\nZ:Q1w95SamJBST6Ls1FLpFTRwfZ6cYY=\nR:version.go\na:0:0:444\nZ:Q1KximB0MCdolvV4SGEMlJduWFPDA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appinsights/v1/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DRbwii9fKmULX6Xdifvmf4G8sJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2020-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2020-11-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JFDs141iiTtncfhSp6reW5ZAqBc=\nR:apps.go\na:0:0:444\nZ:Q1Mb+Li23NvdJo0t8DKWHzDzrVgks=\nR:bindings.go\na:0:0:444\nZ:Q1hCqPDfArmQWjy8L9iPeeHgKMLYA=\nR:certificates.go\na:0:0:444\nZ:Q1wCp0FR6ZBa3SU4tBD6Al6a6yTc0=\nR:client.go\na:0:0:444\nZ:Q1Nymr5uGhGO63tWNeZyVKGRkIbng=\nR:configservers.go\na:0:0:444\nZ:Q1sytf+jTp2afkA4HR1YtVTMogMuE=\nR:customdomains.go\na:0:0:444\nZ:Q1qTp/pwWHzfeFJ+jIApPpwAR23RE=\nR:deployments.go\na:0:0:444\nZ:Q1lh13rQFKoeT/+k58i7rJXVdNxrI=\nR:enums.go\na:0:0:444\nZ:Q1ZLQO0L31stfAFqvzXLFa4c8hh2k=\nR:models.go\na:0:0:444\nZ:Q12mHHzYGZ3GRVTrisS24FofN41PI=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1d40zqkfWlSorMKXgWhys5ngoOIk=\nR:operations.go\na:0:0:444\nZ:Q1lpgql8/XTcsXDFO+N5zZ6CQPaSI=\nR:runtimeversions.go\na:0:0:444\nZ:Q1Rjt6ImHHvO8Pzeh0qZbRY+OUYbE=\nR:services.go\na:0:0:444\nZ:Q1Ir6llgRZuG9flf10MNw3c0jVh3s=\nR:skus.go\na:0:0:444\nZ:Q1GgeewEOts1dp1xcgqFQhG0x5BYs=\nR:version.go\na:0:0:444\nZ:Q1zEpkLKxvMLJzW5pgHV0XU6PCzR4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2020-11-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Elatb4Lgv0HqlQSdSMm6dqH7S1Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-06-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Zse9AKgr4rMmWFzEOlGJwQU3DMM=\nR:apps.go\na:0:0:444\nZ:Q12HCc4V/Aeq5EHMRNdFC9ub2svdM=\nR:bindings.go\na:0:0:444\nZ:Q1ZkRvoiynm8d8IFJL02HQnae5d9k=\nR:certificates.go\na:0:0:444\nZ:Q1KJYqXygMjRfNCgmzp8zPdqNHK1M=\nR:client.go\na:0:0:444\nZ:Q1ytdk/TbDD2EVPXANgFaNOvygArI=\nR:configservers.go\na:0:0:444\nZ:Q1r7AiZZMf/vq68sEySQeZEd7TT4s=\nR:customdomains.go\na:0:0:444\nZ:Q1m8hM9C/Yjl1XUiBAecsF2QeMriw=\nR:deployments.go\na:0:0:444\nZ:Q1mxrQsHPb8xJcsapmfJJ7bt7KyUE=\nR:enums.go\na:0:0:444\nZ:Q1Qv4LuiIDH0tv56y5KgrU7noBuzY=\nR:models.go\na:0:0:444\nZ:Q1DG0SD8edgNt0J39NHvkgPxEpB1Y=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1e6iBM6F/yI/COgKiIlgDPJvm5As=\nR:operations.go\na:0:0:444\nZ:Q141Ojc39Vn3xhzIqjqU0H1XT0a3s=\nR:runtimeversions.go\na:0:0:444\nZ:Q1Adws9bXoLcOjQg7CFbf/VveFw2A=\nR:services.go\na:0:0:444\nZ:Q1gmLCNNbCaqo5jsBmlPccqR9JFbw=\nR:skus.go\na:0:0:444\nZ:Q1WTP88xypakFUs3HCi23iOmUaOEI=\nR:version.go\na:0:0:444\nZ:Q1dTpsNv4cy4jq+VFMpF1gZaX+Txo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-06-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GsWm/EDWN7nHha8B7w0gfa8nDrY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-09-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vOovZj5MzDP6T27GELgFV2jyH8g=\nR:apps.go\na:0:0:444\nZ:Q1aKdFfb+5i3l+8Xhx+J6BCXsUM9c=\nR:bindings.go\na:0:0:444\nZ:Q19utkMtGujc7HR4t7sZ2Oax8i2V0=\nR:certificates.go\na:0:0:444\nZ:Q1+LxnwbAvzAZ+BHvE7DWgV4/5lAs=\nR:client.go\na:0:0:444\nZ:Q1eWHir06BMPCHKpCVECKHb4Wmtno=\nR:configservers.go\na:0:0:444\nZ:Q1sSP1mkjnGAogOuGwn9jq19TBEVs=\nR:customdomains.go\na:0:0:444\nZ:Q1/vpAtQlwf8gx2T+OCWYLfBJXrks=\nR:deployments.go\na:0:0:444\nZ:Q1Wgz8jaZi9xRK4fm6WP7CYcMGewU=\nR:enums.go\na:0:0:444\nZ:Q1TbCaHWZPqekKWAv2ADWNa+mEjf8=\nR:models.go\na:0:0:444\nZ:Q1iAgJ7hZ/P9jEYXvdCuz277DuFNc=\nR:monitoringsettings.go\na:0:0:444\nZ:Q11oh6+UTllaGRi/lh+jlAbZWuawM=\nR:operations.go\na:0:0:444\nZ:Q19Sup+I8kC2EaiPUpIBeVv6mvOV4=\nR:runtimeversions.go\na:0:0:444\nZ:Q1eUeshkuEGJsoEb3aEZGI4sgulSU=\nR:services.go\na:0:0:444\nZ:Q1+lsJHvpILlBvg0br3Kk0vTGWD8Q=\nR:skus.go\na:0:0:444\nZ:Q1Idd8qBUym0ykvSpsi77MciD9DFw=\nR:storages.go\na:0:0:444\nZ:Q1cy1fjAXId1r07fTuLTIvT1ZqilA=\nR:version.go\na:0:0:444\nZ:Q1TUwzZVDZQ3KHcgMWE+zw1jqGLGY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2021-09-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1hIEYDI1laexpkHgY12rGFReHC1Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-01-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1VFVKsr1K+w0OkPOtLmpKt7kwfMY=\nR:apiportalcustomdomains.go\na:0:0:444\nZ:Q1QFgRUqrFyp4mXJvd36FfAJMszlk=\nR:apiportals.go\na:0:0:444\nZ:Q1KD8M92mJemIXAKpu1v2uMzpIV+A=\nR:apps.go\na:0:0:444\nZ:Q1sCGOEePOCfA3cUyYT5HF4rokUEE=\nR:bindings.go\na:0:0:444\nZ:Q133NZix8KrP+B1NaeCkCOhGNfTug=\nR:buildpackbinding.go\na:0:0:444\nZ:Q1YsT/YpSRC0LdcpU3+Sq9eZ8CI6U=\nR:buildservice.go\na:0:0:444\nZ:Q1qQoEBHFrSk9h4hf/liahjFPSkTg=\nR:buildserviceagentpool.go\na:0:0:444\nZ:Q1z6kOqwFk9WbWRCwciHE1/D2pOP0=\nR:buildservicebuilder.go\na:0:0:444\nZ:Q1+q3aYLkgjEcMrf9cdfQzrezquyc=\nR:certificates.go\na:0:0:444\nZ:Q1NKilXsKhhl3ijNd6UUoLfPIpW+E=\nR:client.go\na:0:0:444\nZ:Q1m6LL6Pr4TqHnaE4wktM8PGsnjO8=\nR:configservers.go\na:0:0:444\nZ:Q1ce3BxqxRWsZZcOIaQriZLqq337M=\nR:configurationservices.go\na:0:0:444\nZ:Q1726duhlKETSViCz/yr0GTFgP5OQ=\nR:customdomains.go\na:0:0:444\nZ:Q13rz5ZFtwp1rC9i7RVkxwouo2e4E=\nR:deployments.go\na:0:0:444\nZ:Q1+ag9j3YO5I0t0W7htVivWHicz2E=\nR:enums.go\na:0:0:444\nZ:Q1B/teoOncaKdHDqFi2qCMLS6BkFs=\nR:gatewaycustomdomains.go\na:0:0:444\nZ:Q1Dxd2iICtS+FWwtDjNej3DOkQgS0=\nR:gatewayrouteconfigs.go\na:0:0:444\nZ:Q1VN+O3EeZv3k5DzQs0Fjdid8ZhGo=\nR:gateways.go\na:0:0:444\nZ:Q15J60p2JRcRd5ZQJCNhaHWqxFZVY=\nR:models.go\na:0:0:444\nZ:Q1XjT0PV4Ktm81wd2giZ0UYps0n0w=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1aLRD0Ds2+VK0JShDBrqqm5GBmhA=\nR:operations.go\na:0:0:444\nZ:Q1CLnAL//tz02v4pvlZgz5FdzluH0=\nR:runtimeversions.go\na:0:0:444\nZ:Q1HoP7SUywF3GVZ8wGMPB/FM+8z0E=\nR:serviceregistries.go\na:0:0:444\nZ:Q1XPSV4CQTghYmmWrJ7mz0xqOfQX8=\nR:services.go\na:0:0:444\nZ:Q1E+twezVEmgxWVUtm3Y8loLH1Gck=\nR:skus.go\na:0:0:444\nZ:Q11bDb61AKn7t+vpol3pyNSLRWmlU=\nR:storages.go\na:0:0:444\nZ:Q1HNSb+OroEQp7ZO6q4fpZnQrjLIw=\nR:version.go\na:0:0:444\nZ:Q1i1e9Gx1O0p7ch67J+ZQX8GJx2ps=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-01-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rY8BKLs/cf8qYHtm5ttXG5btu18=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-03-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fWrZX1RZdInDGNqBnRYKhZs/6U4=\nR:apiportalcustomdomains.go\na:0:0:444\nZ:Q1PG+BDjIhMg0JtpIqV/4oLpOhMB0=\nR:apiportals.go\na:0:0:444\nZ:Q1aJL05izGUsMkSjrtXUhsiBKheY0=\nR:apps.go\na:0:0:444\nZ:Q1KCblcpFy+/n/QH2AZBgaQ/nwe9I=\nR:bindings.go\na:0:0:444\nZ:Q14Q0dBXfCC+O3BmzwxLgtmbrMb3c=\nR:buildpackbinding.go\na:0:0:444\nZ:Q1+079g3OcJKpyRvuoJD2w+1Gjfls=\nR:buildservice.go\na:0:0:444\nZ:Q1qoS+K4/3pkOBLfI/eQajphCuqC4=\nR:buildserviceagentpool.go\na:0:0:444\nZ:Q1DnmpM9pJEtKL/8u63VRpxJ1VA84=\nR:buildservicebuilder.go\na:0:0:444\nZ:Q1cPsstf/SRAt1Z3Ic8h9gIUO+9wI=\nR:certificates.go\na:0:0:444\nZ:Q1WT5LINwsf2ngLcm2nLRsr50xGbA=\nR:client.go\na:0:0:444\nZ:Q1Ygka8RKO/dOAMnJJNfqJVbheb9o=\nR:configservers.go\na:0:0:444\nZ:Q1AOzq1wAUk75YLNDbgc7L31h42xk=\nR:configurationservices.go\na:0:0:444\nZ:Q128VrAYJB6EvEGFgdbeqpBoAeexY=\nR:customdomains.go\na:0:0:444\nZ:Q1IYT0jIuzycbMPhsbjxqsgidGd6A=\nR:deployments.go\na:0:0:444\nZ:Q101u9+YsSKJzQXjOlnIIYjMT+upI=\nR:enums.go\na:0:0:444\nZ:Q1bsNmgjjcQjOHaVpVrX3jWYAzgb4=\nR:gatewaycustomdomains.go\na:0:0:444\nZ:Q1A+TOYZ/Y3uGow0iAwd+xZQgOFqI=\nR:gatewayrouteconfigs.go\na:0:0:444\nZ:Q14U7bPRrOO3buJynxLWNIhgQ5QoU=\nR:gateways.go\na:0:0:444\nZ:Q18bWaW9Kd+8gpJV7Ok7ttmef3FYY=\nR:models.go\na:0:0:444\nZ:Q1uCFl5eLBpaUmne0TmnuQGI3JheQ=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1cD+uEwo+l1fJlR6gT+ZEgqo6Bt4=\nR:operations.go\na:0:0:444\nZ:Q1JTZUS+h9pN5MKxTAsfCSSYxD8cU=\nR:runtimeversions.go\na:0:0:444\nZ:Q1nP+uvglRDXTKEPKLyHYEvhQeYY8=\nR:serviceregistries.go\na:0:0:444\nZ:Q1ebVD+XeoBv48xhzuP6dwN6uDtMc=\nR:services.go\na:0:0:444\nZ:Q1d5Jk0T+dKPGtJH7KdKmEUprm+kE=\nR:skus.go\na:0:0:444\nZ:Q1XMLDRootFkgLMhdIWbEafgoUBW8=\nR:storages.go\na:0:0:444\nZ:Q1MBxt0N5rn4HJ9q8ed1e/3EXuy0o=\nR:version.go\na:0:0:444\nZ:Q1VAHwGNtyiAHRXemVNrGapQvM+rc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-03-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1k3b7OJib2Uz1K8Nk6qK5rWSKTrw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-05-01-preview/appplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zCaHInXkhKZ4QNeJr46/p9C3pf0=\nR:apiportalcustomdomains.go\na:0:0:444\nZ:Q1xpRowv6/Sh1BgPKdXt+p/RdElPs=\nR:apiportals.go\na:0:0:444\nZ:Q1RecqUSWoegYnAraKwCY/Epiik5g=\nR:apps.go\na:0:0:444\nZ:Q1FfIl1fGz0benXW6OeR6UYyjgwjw=\nR:bindings.go\na:0:0:444\nZ:Q14TBCE3xSxY2xXEgpl7jB6owblZM=\nR:buildpackbinding.go\na:0:0:444\nZ:Q1cDrIUq1SwV4baJyN9t2bRLnVcik=\nR:buildservice.go\na:0:0:444\nZ:Q118Ik0DXvp1utElbHr5Gp6yw9Zqg=\nR:buildserviceagentpool.go\na:0:0:444\nZ:Q1vcjDAZoSqSt2gtEE5kYNOF49L00=\nR:buildservicebuilder.go\na:0:0:444\nZ:Q1NxBq5UNfClsxL94nkJIiAywWwzU=\nR:certificates.go\na:0:0:444\nZ:Q1PFXRdhX+dBomwcKxu3Sq4R+Ur3o=\nR:client.go\na:0:0:444\nZ:Q1OVqj8GVPOhqhtZpKJOTEyVk3zDg=\nR:configservers.go\na:0:0:444\nZ:Q1O+CZIyBu7AaJSFd862VOiOf/8Ik=\nR:configurationservices.go\na:0:0:444\nZ:Q13sMMR4dhzfutLJnZ1cdZdXjSTqs=\nR:customdomains.go\na:0:0:444\nZ:Q18Wz1p3b7lBGjIx1y13vLga1YwBY=\nR:deployments.go\na:0:0:444\nZ:Q1vzSGaZHfQ0EKHUSaa5LJNYDvj6U=\nR:enums.go\na:0:0:444\nZ:Q1PdQOGckfaDS5CyH3rJ+zCOjWpJA=\nR:gatewaycustomdomains.go\na:0:0:444\nZ:Q17FWQvhKwkBTpt5uxYDaajNFlMtU=\nR:gatewayrouteconfigs.go\na:0:0:444\nZ:Q1dcLREW+71wHEG+wAjHr56igcCS0=\nR:gateways.go\na:0:0:444\nZ:Q1nE0HWHo51wLLu9KgF6K2l1rs4RY=\nR:models.go\na:0:0:444\nZ:Q1dbbrZlTwsQ3YmYA3P20R3nYabKw=\nR:monitoringsettings.go\na:0:0:444\nZ:Q1Po8nUDYlqJibc3E8Kn5NsEbZFm8=\nR:operations.go\na:0:0:444\nZ:Q1JB1cHfYWtiJkINlzkhBdHZB9bXs=\nR:runtimeversions.go\na:0:0:444\nZ:Q193q+lXktUnmsO6cA8vsszzffr9s=\nR:serviceregistries.go\na:0:0:444\nZ:Q1bEpq2uWmnOhD7SYP5KO5FhHZKLU=\nR:services.go\na:0:0:444\nZ:Q1B+aMLRgAPmGpEJyFUawv6qGaGRA=\nR:skus.go\na:0:0:444\nZ:Q1Zw2Tj9nIBpUIFh9JpGuB3+I/YaE=\nR:storages.go\na:0:0:444\nZ:Q10Rn4TvvSmO5IEIOizgr/I2/TgS0=\nR:version.go\na:0:0:444\nZ:Q1eIQEo6vTPwVRaCurhO4zJJu4b7I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/appplatform/mgmt/2022-05-01-preview/appplatform/appplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ASfTGqkPXY8tdeoh/T0C2XICnMM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2017-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2017-10-01-preview/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Toz/k15eMOIGV7txJUc4p238CaY=\nR:classicadministrators.go\na:0:0:444\nZ:Q176EUdV7eeCi3sUbkyjqU5L91irM=\nR:client.go\na:0:0:444\nZ:Q1M3Z4axWn2CTkryEFRC7nFvzAFX0=\nR:globaladministrator.go\na:0:0:444\nZ:Q17IULsszJfITyMqNV3Z78YVwovmw=\nR:models.go\na:0:0:444\nZ:Q1AqqxhBvP7h9Zu8EDrKLLBh1lPUk=\nR:permissions.go\na:0:0:444\nZ:Q1XQllMOSqQLioyNp3OIScVi/6k8s=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1eFmzzSf0t6qjgg/xwLUcWw31YjU=\nR:roleassignments.go\na:0:0:444\nZ:Q1B94vxfsBgNU4JiThVkE/n+Mk9TA=\nR:roledefinitions.go\na:0:0:444\nZ:Q1o19vLkB/AKJ9q+ryx0y+F/BS6xU=\nR:version.go\na:0:0:444\nZ:Q1zKvItrDWujo/JnQsmKGwQ/UKIWU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2017-10-01-preview/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1AKJmL9NMbSVug6cC/HvjsGNDkFA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-01-01-preview/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14mvSq+kLBHhbmSI7I+eGLhO4V30=\nR:classicadministrators.go\na:0:0:444\nZ:Q1eOt8xoEeFER7HlSBkMOHYYWorXA=\nR:client.go\na:0:0:444\nZ:Q12b2fv+ek0398/uQ4vR1JcgIHTls=\nR:globaladministrator.go\na:0:0:444\nZ:Q1XbH+hk+kwQSx6nC+bcqFzMOksHM=\nR:models.go\na:0:0:444\nZ:Q1Exki5rSjtf2q3V6nBehsWs2/dUg=\nR:permissions.go\na:0:0:444\nZ:Q1j11XKcBLGk9/xh4cshik112Fmhc=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1Z8lMx/o45RA+pjrRlH7F+eHK0A4=\nR:roleassignments.go\na:0:0:444\nZ:Q1ECWH1z/6wsACpJSAUEEeWZVUsCw=\nR:roledefinitions.go\na:0:0:444\nZ:Q1zD5cyR65n1UbGq4dWWmIM33vtW8=\nR:version.go\na:0:0:444\nZ:Q1TXPqL5vYOB7Wp4hJJyRx6BpHiao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-01-01-preview/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1g4A+LyuYR/UWBNdj2JWfmfL/h9s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-07-01-preview/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ok5hh2u6D+ttrf/Zcy6v6ZcAZLw=\nR:classicadministrators.go\na:0:0:444\nZ:Q1eOt8xoEeFER7HlSBkMOHYYWorXA=\nR:client.go\na:0:0:444\nZ:Q12b2fv+ek0398/uQ4vR1JcgIHTls=\nR:denyassignments.go\na:0:0:444\nZ:Q1tXe/Yl0weWtXp2aJ+lTG1bN03Qo=\nR:globaladministrator.go\na:0:0:444\nZ:Q1XbH+hk+kwQSx6nC+bcqFzMOksHM=\nR:models.go\na:0:0:444\nZ:Q1XeWAYOUyYzh6m7mUwxySHZXhkEw=\nR:permissions.go\na:0:0:444\nZ:Q1j11XKcBLGk9/xh4cshik112Fmhc=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1Z8lMx/o45RA+pjrRlH7F+eHK0A4=\nR:roleassignments.go\na:0:0:444\nZ:Q1ECWH1z/6wsACpJSAUEEeWZVUsCw=\nR:roledefinitions.go\na:0:0:444\nZ:Q1zD5cyR65n1UbGq4dWWmIM33vtW8=\nR:version.go\na:0:0:444\nZ:Q12+fo39Gcr6/7bLirYY3mBQth+Ws=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-07-01-preview/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1G7OAQ44DlRdVv+0JPk1yuR0WatE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-09-01-preview/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dWnSOAIDQkiW01UtnUp845Km594=\nR:classicadministrators.go\na:0:0:444\nZ:Q1eOt8xoEeFER7HlSBkMOHYYWorXA=\nR:client.go\na:0:0:444\nZ:Q12b2fv+ek0398/uQ4vR1JcgIHTls=\nR:denyassignments.go\na:0:0:444\nZ:Q1tXe/Yl0weWtXp2aJ+lTG1bN03Qo=\nR:enums.go\na:0:0:444\nZ:Q1XlNnydkAfXb/vpqfKRNZSXN67oM=\nR:globaladministrator.go\na:0:0:444\nZ:Q1XbH+hk+kwQSx6nC+bcqFzMOksHM=\nR:models.go\na:0:0:444\nZ:Q1wWkZK/hQh9eLrkot81RJ9FsSKhM=\nR:permissions.go\na:0:0:444\nZ:Q1j11XKcBLGk9/xh4cshik112Fmhc=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1Z8lMx/o45RA+pjrRlH7F+eHK0A4=\nR:roleassignments.go\na:0:0:444\nZ:Q1Dl2RvLmKUfcCXGc1nQoN3QTFZDM=\nR:roledefinitions.go\na:0:0:444\nZ:Q1zD5cyR65n1UbGq4dWWmIM33vtW8=\nR:version.go\na:0:0:444\nZ:Q1dkkCcLGVuhD99AW4AlwLdmQyrvE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2018-09-01-preview/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1E4B7a2xKH5lYMKNf0JBFZpgrOCM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2020-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2020-04-01-preview/authorization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11PYoRDwvGog15M60OK5RDRSriH4=\nR:classicadministrators.go\na:0:0:444\nZ:Q19OffbOG18omi8V66qgPnpQnrrIY=\nR:client.go\na:0:0:444\nZ:Q12b2fv+ek0398/uQ4vR1JcgIHTls=\nR:denyassignments.go\na:0:0:444\nZ:Q15Ohh0LzsywHnstYfaQzJkSzOnZc=\nR:enums.go\na:0:0:444\nZ:Q1XlNnydkAfXb/vpqfKRNZSXN67oM=\nR:globaladministrator.go\na:0:0:444\nZ:Q1XbH+hk+kwQSx6nC+bcqFzMOksHM=\nR:models.go\na:0:0:444\nZ:Q1njb153HYnfjR5OKLPzrVixzXxCY=\nR:permissions.go\na:0:0:444\nZ:Q1ykNiKftFmidYPhhL6bx2bozpr5U=\nR:provideroperationsmetadata.go\na:0:0:444\nZ:Q1Z8lMx/o45RA+pjrRlH7F+eHK0A4=\nR:roleassignmentmetrics.go\na:0:0:444\nZ:Q1xKVL1b98XmJh4HPTawWcSs4x+mk=\nR:roleassignments.go\na:0:0:444\nZ:Q1xecAWkZKrnDZEXD38wonWHEbMiM=\nR:roledefinitions.go\na:0:0:444\nZ:Q1jG3OhHUY/C3mAB4g4w5kp+rJP+E=\nR:version.go\na:0:0:444\nZ:Q11ZZXvR5Lyv+JX5yt6l/Zhx30p54=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/authorization/mgmt/2020-04-01-preview/authorization/authorizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GrK5Q6YMS2LOiW11CkeixvWRAhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2020-06-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2020-06-30-preview/automanage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pMNu5wEKeW6wmaLjIp3d+gT1JRc=\nR:accounts.go\na:0:0:444\nZ:Q1JHoAgG7Sj3wjONtx5GQQb4PPYUA=\nR:client.go\na:0:0:444\nZ:Q1aXj9i1rym5DfFgDydP5Rb9Fnyn0=\nR:configurationprofileassignments.go\na:0:0:444\nZ:Q1YgckRoOgB2SKDS9T2iUBGsvLml4=\nR:configurationprofilepreferences.go\na:0:0:444\nZ:Q1vWpPYEuCpZRBhrmwNpxfmZjScAE=\nR:enums.go\na:0:0:444\nZ:Q1AvS57sLO7PoHMuCNMBIuK6BR1OU=\nR:models.go\na:0:0:444\nZ:Q1TF/Xbl9tXnXlZhC7TzwFxv1IKi4=\nR:operations.go\na:0:0:444\nZ:Q1H8462Ey0adA+N9vg97w1BZ3TA14=\nR:version.go\na:0:0:444\nZ:Q1sYsmmwgDXc7qKxD9ulaQMUgmCVI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2020-06-30-preview/automanage/automanageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FrWIRKZeb0IH19mKKc1F6fBAS3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2021-04-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2021-04-30-preview/automanage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yCN3v6q75dHZNdtkbwVNo6V3IUo=\nR:bestpractices.go\na:0:0:444\nZ:Q1UonYSec5s/DG6YOJl5UO93yxYq4=\nR:bestpracticesversions.go\na:0:0:444\nZ:Q1xG5eb1MJCa8tYRAvcOnGDmATMOU=\nR:client.go\na:0:0:444\nZ:Q1NsRKKUxWhw4nU/5pZybgV4ir6uU=\nR:configurationprofileassignments.go\na:0:0:444\nZ:Q1sMdnjhucKHXWHPJ3hRdnl+ICbeU=\nR:configurationprofiles.go\na:0:0:444\nZ:Q12cZU4uaNdeGJrzdOEBWMUlhruRg=\nR:configurationprofilesversions.go\na:0:0:444\nZ:Q1ooTvFZqQxKYCM+niTWP2fjAf96E=\nR:enums.go\na:0:0:444\nZ:Q1hweWuy64aIcpAFKshZ+Yse8daTY=\nR:models.go\na:0:0:444\nZ:Q1Xu2Nl1lMybO4kv1CQjbHMW7C8c4=\nR:operations.go\na:0:0:444\nZ:Q1fzEVGDIeLTZ0Ma+8ZnO6V0B+X90=\nR:reports.go\na:0:0:444\nZ:Q1cKqXLekBYZncLcu1UJf9FRhONng=\nR:version.go\na:0:0:444\nZ:Q1XAIc8rmS7vspchcqbUGQWGOVkLo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automanage/mgmt/2021-04-30-preview/automanage/automanageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cBq5bM4FZP3iRRG3QaTU0pPMLL0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2020-01-13-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2020-01-13-preview/automation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1A+oyOdLwqmJjouU2wGE8dE0vOAo=\nR:account.go\na:0:0:444\nZ:Q1EDTMJASwsGgpqaIpiXSpRYO6GdY=\nR:activity.go\na:0:0:444\nZ:Q1wlZdaOg1QQ39E2V0RgtHOhsmD6U=\nR:agentregistrationinformation.go\na:0:0:444\nZ:Q1bYYF1gmJQHhyP59fPPbOP6fVN5g=\nR:certificate.go\na:0:0:444\nZ:Q1ag5UUqC7zeAJDgp7Zrp3FZWTbjk=\nR:client.go\na:0:0:444\nZ:Q1x0uEMzPB7RkAvZdI8/u7xW6ZFnQ=\nR:connection.go\na:0:0:444\nZ:Q1ioKw4DNU1Lo0gtD2t6MzXscIcJU=\nR:connectiontype.go\na:0:0:444\nZ:Q13nJykW+xRMn5N0H4AetIf5fqmLI=\nR:credential.go\na:0:0:444\nZ:Q1f+ADtT0TKMhgKb72UYaZNX+VsUQ=\nR:dsccompilationjob.go\na:0:0:444\nZ:Q1ZhPfVg+zgTlKnTc73eOJWXLY8xQ=\nR:dsccompilationjobstream.go\na:0:0:444\nZ:Q1ZsEFXqJ8KKVMi/GGvdd8uE/YRm8=\nR:dscconfiguration.go\na:0:0:444\nZ:Q1MBxLxazcsAsuvogjQ9GKoEnjyAk=\nR:dscnode.go\na:0:0:444\nZ:Q11t0HFQ/BNRi3cCGeocplwTt3b9Q=\nR:dscnodeconfiguration.go\na:0:0:444\nZ:Q1ieSEpn9//DjM6CyzAHQoBX3G7UU=\nR:enums.go\na:0:0:444\nZ:Q1VYhfoyjEW5FJ716WY2XlPeGD6lM=\nR:fields.go\na:0:0:444\nZ:Q1++bYrmKLhLJfz4rDoqq8w+TkTOk=\nR:hybridrunbookworkergroup.go\na:0:0:444\nZ:Q1saUirKZQeLzL0iDhoIGBvz8F+3A=\nR:job.go\na:0:0:444\nZ:Q12d3gewSfmG/NOzx0OKd3LToVcoM=\nR:jobschedule.go\na:0:0:444\nZ:Q1/RuB1AfJYSJtT6NvGSAOyorfV9A=\nR:jobstream.go\na:0:0:444\nZ:Q17euHuqxsqs+5dxcuI1Gf43Dnd8g=\nR:keys.go\na:0:0:444\nZ:Q1kV2R8OVNpHyepmvIcxLPR41htmY=\nR:linkedworkspace.go\na:0:0:444\nZ:Q1It//hRJraayWXcTXIl5RwGlasio=\nR:models.go\na:0:0:444\nZ:Q1yup3n9osWt8U+XiMzu9eON3DnC0=\nR:module.go\na:0:0:444\nZ:Q13OeJLrhGbMPt567eERtDZFkjkGs=\nR:nodecountinformation.go\na:0:0:444\nZ:Q1ZQepW4lEHyDHxCuUqkwCmJREmp0=\nR:nodereports.go\na:0:0:444\nZ:Q15iplMs+/Ds7XxXzbwASVT2rQRYQ=\nR:objectdatatypes.go\na:0:0:444\nZ:Q1ChlIBX9+L4RvlCJDyrGmKFfk+1E=\nR:operations.go\na:0:0:444\nZ:Q1V/TE1V+uWCGSAe8ciyA1flBU3Lk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1FFgyeQZT5O2GVQ/FyrTHcmr8lIQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q10YCz4SFrYzGEMkk2N+wIKIhbcE8=\nR:python2package.go\na:0:0:444\nZ:Q1x1Tz67Y3M96NNUzJaG1Rw4aPKTE=\nR:runbook.go\na:0:0:444\nZ:Q1XxU7NtcKSU2oPUBOJaMeoeSAyPA=\nR:runbookdraft.go\na:0:0:444\nZ:Q1t9/dhnnZ87YkxD66bHnKud4z3XI=\nR:schedule.go\na:0:0:444\nZ:Q10FJ0rHwheuC0w20WB8AB2UABGIE=\nR:softwareupdateconfigurationmachineruns.go\na:0:0:444\nZ:Q1OQnk62qtcu97q9lfI6w6Gw2bgTc=\nR:softwareupdateconfigurationruns.go\na:0:0:444\nZ:Q1GdgXSa+0eGnwdwu1AiRKNTelIlo=\nR:softwareupdateconfigurations.go\na:0:0:444\nZ:Q1p6jgyFei0zOraoBxDxCLPkVydL0=\nR:sourcecontrol.go\na:0:0:444\nZ:Q1dXzZ6S33q/9En+Dr4/qVwZrlMKY=\nR:sourcecontrolsyncjob.go\na:0:0:444\nZ:Q1EN2Y+/LKaR5O7F6A54oy0kwpNLg=\nR:sourcecontrolsyncjobstreams.go\na:0:0:444\nZ:Q1KRyKT5lTGIeImAe34NcsvIOPU8A=\nR:statistics.go\na:0:0:444\nZ:Q1zZf9exCpY3kovHeKMSzY1kZ+WhY=\nR:testjob.go\na:0:0:444\nZ:Q1ByJd6pMJ35gIxlrnynaoI7AC8Dg=\nR:testjobstreams.go\na:0:0:444\nZ:Q15mWsj89iibWwF2yEWauWn9eR+5U=\nR:usages.go\na:0:0:444\nZ:Q1fJLkFx1zX2N48WuZMOkYyRSQiLE=\nR:variable.go\na:0:0:444\nZ:Q1VnYvU5+T45tqZO5zygJ7FWS5EDU=\nR:version.go\na:0:0:444\nZ:Q1QTrgt9Jz4Q9zp5qeDw1pjebxkB4=\nR:watcher.go\na:0:0:444\nZ:Q1WzFRnwM1RsL4rKc2pe3fEJFcWbs=\nR:webhook.go\na:0:0:444\nZ:Q1yMc/OaTpxhKp7K5oWLHWXOiVIuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2020-01-13-preview/automation/automationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13M8UrDF5Wn6bgCJwBN8UNfsEkBg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2021-06-22-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2021-06-22-preview/automation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19pDso3523ZQFBEEngaYtc8aYeL8=\nR:account.go\na:0:0:444\nZ:Q1nk3Gy2/JPevD2UBlXWdaZBkDbJk=\nR:activity.go\na:0:0:444\nZ:Q1wlZdaOg1QQ39E2V0RgtHOhsmD6U=\nR:agentregistrationinformation.go\na:0:0:444\nZ:Q1bYYF1gmJQHhyP59fPPbOP6fVN5g=\nR:certificate.go\na:0:0:444\nZ:Q1ag5UUqC7zeAJDgp7Zrp3FZWTbjk=\nR:client.go\na:0:0:444\nZ:Q1kFUYT4RANUEHlCSZ+Zs3NAGnMrg=\nR:connection.go\na:0:0:444\nZ:Q1ioKw4DNU1Lo0gtD2t6MzXscIcJU=\nR:connectiontype.go\na:0:0:444\nZ:Q13nJykW+xRMn5N0H4AetIf5fqmLI=\nR:credential.go\na:0:0:444\nZ:Q1f+ADtT0TKMhgKb72UYaZNX+VsUQ=\nR:dsccompilationjob.go\na:0:0:444\nZ:Q1ZhPfVg+zgTlKnTc73eOJWXLY8xQ=\nR:dsccompilationjobstream.go\na:0:0:444\nZ:Q1ZsEFXqJ8KKVMi/GGvdd8uE/YRm8=\nR:dscconfiguration.go\na:0:0:444\nZ:Q1MBxLxazcsAsuvogjQ9GKoEnjyAk=\nR:dscnode.go\na:0:0:444\nZ:Q11t0HFQ/BNRi3cCGeocplwTt3b9Q=\nR:dscnodeconfiguration.go\na:0:0:444\nZ:Q1ieSEpn9//DjM6CyzAHQoBX3G7UU=\nR:enums.go\na:0:0:444\nZ:Q1ffSShvFHIs78sLFJFr7DqQdM9Js=\nR:fields.go\na:0:0:444\nZ:Q1++bYrmKLhLJfz4rDoqq8w+TkTOk=\nR:hybridrunbookworkergroup.go\na:0:0:444\nZ:Q17ARZgHBiRhSnlj73CAmEtHHDmlY=\nR:hybridrunbookworkers.go\na:0:0:444\nZ:Q1J5GTxJk/xDKvaIGujGDCzDJdG/E=\nR:job.go\na:0:0:444\nZ:Q12d3gewSfmG/NOzx0OKd3LToVcoM=\nR:jobschedule.go\na:0:0:444\nZ:Q1/RuB1AfJYSJtT6NvGSAOyorfV9A=\nR:jobstream.go\na:0:0:444\nZ:Q17euHuqxsqs+5dxcuI1Gf43Dnd8g=\nR:keys.go\na:0:0:444\nZ:Q1l949ZFVCI3jA7ntg/NaeMy7YM94=\nR:linkedworkspace.go\na:0:0:444\nZ:Q1It//hRJraayWXcTXIl5RwGlasio=\nR:models.go\na:0:0:444\nZ:Q1eMRiQ8V0dfXhSVJzE6ortUDnYhA=\nR:module.go\na:0:0:444\nZ:Q13OeJLrhGbMPt567eERtDZFkjkGs=\nR:nodecountinformation.go\na:0:0:444\nZ:Q1ZQepW4lEHyDHxCuUqkwCmJREmp0=\nR:nodereports.go\na:0:0:444\nZ:Q15iplMs+/Ds7XxXzbwASVT2rQRYQ=\nR:objectdatatypes.go\na:0:0:444\nZ:Q1ChlIBX9+L4RvlCJDyrGmKFfk+1E=\nR:operations.go\na:0:0:444\nZ:Q10/jXMOmEenpCOFM3U+ptj7RtZkc=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1FFgyeQZT5O2GVQ/FyrTHcmr8lIQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q10YCz4SFrYzGEMkk2N+wIKIhbcE8=\nR:python2package.go\na:0:0:444\nZ:Q1x1Tz67Y3M96NNUzJaG1Rw4aPKTE=\nR:runbook.go\na:0:0:444\nZ:Q1XxU7NtcKSU2oPUBOJaMeoeSAyPA=\nR:runbookdraft.go\na:0:0:444\nZ:Q1t9/dhnnZ87YkxD66bHnKud4z3XI=\nR:schedule.go\na:0:0:444\nZ:Q10FJ0rHwheuC0w20WB8AB2UABGIE=\nR:softwareupdateconfigurationmachineruns.go\na:0:0:444\nZ:Q1OQnk62qtcu97q9lfI6w6Gw2bgTc=\nR:softwareupdateconfigurationruns.go\na:0:0:444\nZ:Q1GdgXSa+0eGnwdwu1AiRKNTelIlo=\nR:softwareupdateconfigurations.go\na:0:0:444\nZ:Q1p6jgyFei0zOraoBxDxCLPkVydL0=\nR:sourcecontrol.go\na:0:0:444\nZ:Q1dXzZ6S33q/9En+Dr4/qVwZrlMKY=\nR:sourcecontrolsyncjob.go\na:0:0:444\nZ:Q1EN2Y+/LKaR5O7F6A54oy0kwpNLg=\nR:sourcecontrolsyncjobstreams.go\na:0:0:444\nZ:Q1KRyKT5lTGIeImAe34NcsvIOPU8A=\nR:statistics.go\na:0:0:444\nZ:Q1n4zyl4UPXcDpSO1tJNCzMn4/Kiw=\nR:testjob.go\na:0:0:444\nZ:Q1ByJd6pMJ35gIxlrnynaoI7AC8Dg=\nR:testjobstreams.go\na:0:0:444\nZ:Q15mWsj89iibWwF2yEWauWn9eR+5U=\nR:usages.go\na:0:0:444\nZ:Q1qR5KhrtZRVHv/wZbJd843aT0Fo4=\nR:variable.go\na:0:0:444\nZ:Q1VnYvU5+T45tqZO5zygJ7FWS5EDU=\nR:version.go\na:0:0:444\nZ:Q1b0TeJNluLjwX+iPBPviuBIUe8pY=\nR:watcher.go\na:0:0:444\nZ:Q1WzFRnwM1RsL4rKc2pe3fEJFcWbs=\nR:webhook.go\na:0:0:444\nZ:Q1yMc/OaTpxhKp7K5oWLHWXOiVIuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/automation/mgmt/2021-06-22-preview/automation/automationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nkQNtv3IXJo2rlW28nWoijbVfTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azureadb2c\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azureadb2c/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azureadb2c/mgmt/2020-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azureadb2c/mgmt/2020-05-01-preview/azureadb2c\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11VLBMyMKlgDHOUygFNfs+gHzSpE=\nR:client.go\na:0:0:444\nZ:Q1g7VkpKF5baTChe2UjgaGPy7xMFQ=\nR:guestusages.go\na:0:0:444\nZ:Q1rj5zZTdWpc8AEIHp7MWVZmfOEsQ=\nR:models.go\na:0:0:444\nZ:Q1wsX6iMeWwIU8xUOySciSE4gboM8=\nR:operations.go\na:0:0:444\nZ:Q1rROP95r6eSpBDICyhZNRZzF+kkg=\nR:version.go\na:0:0:444\nZ:Q1Hul7C+uUeCEgDywXrVHfrTYX8ZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azureadb2c/mgmt/2020-05-01-preview/azureadb2c/azureadb2capi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1L5MFowkjjmn0MdiDTWuuMoUpVCs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2017-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2017-03-01-preview/azuredata\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1U2nmxKFuG57Eo8YvONR7lbI0LGE=\nR:client.go\na:0:0:444\nZ:Q1664zFa8IMCfXyJ0YPhVCKrbgLnw=\nR:datacontrollers.go\na:0:0:444\nZ:Q1R9WpmgN0btMM0L03drhJV4iXvxc=\nR:enums.go\na:0:0:444\nZ:Q1luSD6wAlkc6g+8Eu5XzIcQR5ikE=\nR:models.go\na:0:0:444\nZ:Q1VjJ6H7AGDSFEYCGrZmgteqov33M=\nR:operations.go\na:0:0:444\nZ:Q1o1QfTrwxzoAaQF2yJsnVSsaWTaM=\nR:postgresinstances.go\na:0:0:444\nZ:Q17xkVqSt+8yQWJxDPSfQAeNj359Y=\nR:sqlmanagedinstances.go\na:0:0:444\nZ:Q1Uwo559KW2OaXAqastMjqZfAL9gg=\nR:sqlserverinstances.go\na:0:0:444\nZ:Q1S6xXuR3plIz9igM4ZIva7W8/eAg=\nR:sqlserverregistrations.go\na:0:0:444\nZ:Q1LXVTQZjOoeD5+M17IA6lSsIh9sM=\nR:sqlservers.go\na:0:0:444\nZ:Q1c1cHm8iTLbZ7kbMWittcoRZjnhc=\nR:version.go\na:0:0:444\nZ:Q1ivMlxlUDR98N/8nfvdDbcex8LCg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2017-03-01-preview/azuredata/azuredataapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ezAgW/pLYNthcne7gmbLGR959Jc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2019-07-24-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2019-07-24-preview/azuredata\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1//3kIysFbTFTbLUYFrVEC5DRMpY=\nR:client.go\na:0:0:444\nZ:Q1664zFa8IMCfXyJ0YPhVCKrbgLnw=\nR:datacontrollers.go\na:0:0:444\nZ:Q1R9WpmgN0btMM0L03drhJV4iXvxc=\nR:enums.go\na:0:0:444\nZ:Q1luSD6wAlkc6g+8Eu5XzIcQR5ikE=\nR:models.go\na:0:0:444\nZ:Q1X3YPmoSJYKctazRlRV0FXPayfTE=\nR:operations.go\na:0:0:444\nZ:Q1o1QfTrwxzoAaQF2yJsnVSsaWTaM=\nR:postgresinstances.go\na:0:0:444\nZ:Q17xkVqSt+8yQWJxDPSfQAeNj359Y=\nR:sqlmanagedinstances.go\na:0:0:444\nZ:Q1Uwo559KW2OaXAqastMjqZfAL9gg=\nR:sqlserverinstances.go\na:0:0:444\nZ:Q1S6xXuR3plIz9igM4ZIva7W8/eAg=\nR:sqlserverregistrations.go\na:0:0:444\nZ:Q1LXVTQZjOoeD5+M17IA6lSsIh9sM=\nR:sqlservers.go\na:0:0:444\nZ:Q1c1cHm8iTLbZ7kbMWittcoRZjnhc=\nR:version.go\na:0:0:444\nZ:Q1ivMlxlUDR98N/8nfvdDbcex8LCg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azuredata/mgmt/2019-07-24-preview/azuredata/azuredataapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/KMlykeghvkjuEZh/hu3Kd8A5Y4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azurestackhci\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azurestackhci/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azurestackhci/mgmt/2021-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azurestackhci/mgmt/2021-01-01-preview/azurestackhci\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hHzc0sExp6DIyzTBNUrV/UpxO8s=\nR:arcsettings.go\na:0:0:444\nZ:Q1cbnR5GuxRVUuJv0Pou5d8uNOjWY=\nR:client.go\na:0:0:444\nZ:Q1aWMzcLoEJh3hq2oe45NauJRacp8=\nR:clusters.go\na:0:0:444\nZ:Q1zts8yaau9sLcngTtyXY8DzHMubg=\nR:enums.go\na:0:0:444\nZ:Q1lr3Ig3OUnpbXRR2ydNxfBGrC2L8=\nR:extensions.go\na:0:0:444\nZ:Q1dcRTAjUlXOTuqalOHNw1i4DQJIA=\nR:models.go\na:0:0:444\nZ:Q1zJWUF+OPyS8fHiL2955WNKNu1bM=\nR:operations.go\na:0:0:444\nZ:Q1i3Y9MQmSCCk7ZEbYaRfafWDBaoc=\nR:version.go\na:0:0:444\nZ:Q1SBRW6cI8r9rma3YNpaHcaxGEfDw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/azurestackhci/mgmt/2021-01-01-preview/azurestackhci/azurestackhciapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Ey/PKk4bUPgmi45msmscQSYE6C0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/baremetalinfrastructure\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/baremetalinfrastructure/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/baremetalinfrastructure/mgmt/2020-08-06-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/baremetalinfrastructure/mgmt/2020-08-06-preview/baremetalinfrastructure\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12pSjpE09AYyc1Rwmpb4/P63lqBE=\nR:azurebaremetalinstances.go\na:0:0:444\nZ:Q1RxJXHsT0ubtNcqn0GM4eHI0zI4U=\nR:client.go\na:0:0:444\nZ:Q19zW6430/5VUCHhQK5vS3awCAA0M=\nR:enums.go\na:0:0:444\nZ:Q1B4G3APZuNieIbkHmOepbBk3u0Io=\nR:models.go\na:0:0:444\nZ:Q1r7noCBiasBv+hg2Xwbso0DgDM+4=\nR:operations.go\na:0:0:444\nZ:Q1sDjnQQzA3ByGhNHv4SXAhPmsjSA=\nR:version.go\na:0:0:444\nZ:Q1Qak5lvl7wzfqeRRadZVMfOSbVpM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/baremetalinfrastructure/mgmt/2020-08-06-preview/baremetalinfrastructure/baremetalinfrastructureapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VfVQJI+eSSm8TbSG28VpFEa3ahs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/batchai\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/batchai/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/batchai/mgmt/2017-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/batchai/mgmt/2017-09-01-preview/batchai\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1CcGc54/kCUWa4v9auJ3Lfxx1Quc=\nR:client.go\na:0:0:444\nZ:Q11hVPs6XEjn5weYzTqhXVDaYjKfY=\nR:clusters.go\na:0:0:444\nZ:Q17z34ylD7+gnI2FP+r0oMdRMunQY=\nR:enums.go\na:0:0:444\nZ:Q1SUW9CMC3eXkHOYDq3bHLDOPajrY=\nR:fileservers.go\na:0:0:444\nZ:Q13Aq3Idb2zYRq7RhNfkHT76I7SSk=\nR:jobs.go\na:0:0:444\nZ:Q1auLAnAuBDLCrXGEcFtxdDONMkAk=\nR:models.go\na:0:0:444\nZ:Q1GvvPse0GPw1lcyKRKn2I4Cwk9WU=\nR:operations.go\na:0:0:444\nZ:Q1SY5fZMmmEThLc4vMl0fqut73Yl4=\nR:version.go\na:0:0:444\nZ:Q1/t1lvTT9j2FSZexdHPXv3LwEPnU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/batchai/mgmt/2017-09-01-preview/batchai/batchaiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1U16/SdiYZGTU2S5oMftDtGo9Sjg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2017-04-24-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2017-04-24-preview/billing\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/2qI8Y4V6pq9jKj8ooVDknJnltQ=\nR:client.go\na:0:0:444\nZ:Q1q/qCApoxqEKtTAwKvzhJkLF165k=\nR:invoices.go\na:0:0:444\nZ:Q11H7WlnIqjnhdlh1h1QkdYQdGyEc=\nR:models.go\na:0:0:444\nZ:Q1ijYxepMZqDk+C+Dd5HuhbenONQc=\nR:operations.go\na:0:0:444\nZ:Q1elE7+wcSJ7/qiprNq4knm3m08Ms=\nR:periods.go\na:0:0:444\nZ:Q1czXMYc5D3MKIzd4THYW6nq2iVvI=\nR:version.go\na:0:0:444\nZ:Q1lBHGRqu95K7i6zN+B+CQLUe8390=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2017-04-24-preview/billing/billingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18ZuyFcHtcxWvnfqCW0jalrX3j7k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2018-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2018-03-01-preview/billing\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fYYPki12r5Cn+y4121BaoSsaFo8=\nR:client.go\na:0:0:444\nZ:Q1SSuAVINC+G10wpPFL0ha2ONl2lY=\nR:enrollmentaccounts.go\na:0:0:444\nZ:Q1dWcxnUPuz5CAsVtjukh2AzG0WbA=\nR:invoices.go\na:0:0:444\nZ:Q17maS1qHwLNy9whagW3lqrXoRoOQ=\nR:models.go\na:0:0:444\nZ:Q1uZQhkpGj6T2j6nSZXvWJvg30/iI=\nR:operations.go\na:0:0:444\nZ:Q1tVz84kQenzDVsCWqneC1/lVVYHQ=\nR:periods.go\na:0:0:444\nZ:Q1/7TSrjFnvQb9cC34rxNzfDfp7J8=\nR:version.go\na:0:0:444\nZ:Q1AUt2j8qlXU5qXdZj8rsWR0ipMu4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2018-03-01-preview/billing/billingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cQoEXReTS8WOx/D+kvejTCWsUUk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2020-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2020-05-01-preview/billing\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gDtl37WY73Idb4Y2pN+9OcE9eJ0=\nR:accounts.go\na:0:0:444\nZ:Q1XYNnb25C5Oj+eIwxjBn1f8Jff7k=\nR:address.go\na:0:0:444\nZ:Q1vnjiq1QAnK+xIwsWMndBk9Z42qk=\nR:agreements.go\na:0:0:444\nZ:Q1+xKX4FL6R9mTryKf51zh+povlEc=\nR:availablebalances.go\na:0:0:444\nZ:Q1XVj7BC0AJckgRK0AqhkXUGObx1c=\nR:client.go\na:0:0:444\nZ:Q11c7/Thp2qphMq0daGxh5NrxptSU=\nR:customers.go\na:0:0:444\nZ:Q101FfVczAlRF7ORruKnEdvEfFRkI=\nR:enrollmentaccounts.go\na:0:0:444\nZ:Q16UD8muGajeyaGOXfD11uaAFN7s4=\nR:enums.go\na:0:0:444\nZ:Q1vk2yiVbRWeEoH5ZM+VbQL0ijupk=\nR:instructions.go\na:0:0:444\nZ:Q1yRHohmBx+fgU5ABeHkucVxViFHA=\nR:invoices.go\na:0:0:444\nZ:Q1Oq+LplB0PVk/inkUw/9XJiDKd9g=\nR:invoicesections.go\na:0:0:444\nZ:Q1Cyi2hy4sQGnrIPj5s/nsx+mH5Ko=\nR:models.go\na:0:0:444\nZ:Q1+5P+z+84Cda6sXqE5SbPQPZz7Ho=\nR:operations.go\na:0:0:444\nZ:Q1kVt4Ye/mfj96GeO8SWkCS1NVNTE=\nR:periods.go\na:0:0:444\nZ:Q1/7TSrjFnvQb9cC34rxNzfDfp7J8=\nR:permissions.go\na:0:0:444\nZ:Q1Me0pd8r6Qx9tq4pu0xDrKYLXq+A=\nR:policies.go\na:0:0:444\nZ:Q1woQS+fYxmmBWaR/ltp7laIzVq10=\nR:products.go\na:0:0:444\nZ:Q1JRnosXtUgcg4w+PWzkMaeh/1F/U=\nR:profiles.go\na:0:0:444\nZ:Q1luKzPbzssSLE6cF6tSS6GPOj4CE=\nR:property.go\na:0:0:444\nZ:Q1nFpWU2+mijhAujUY3gREBql76Kw=\nR:roleassignments.go\na:0:0:444\nZ:Q1mFWO0ZsYZbDLsM8mAZdOjkJ6mqo=\nR:roledefinitions.go\na:0:0:444\nZ:Q1qg+ctbTJWCDQil59LJT7KWQg1Go=\nR:subscriptions.go\na:0:0:444\nZ:Q1U845+9I7HdpuI8CfdIoW/E3pj4Y=\nR:transactions.go\na:0:0:444\nZ:Q1ixZstXp34Iwmhm1z9YY4bTtCMQs=\nR:version.go\na:0:0:444\nZ:Q1xxvHQhjVMYz8GvYjMfvL/Se2wPk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/billing/mgmt/2020-05-01-preview/billing/billingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BPSkOVelmiIPDOsSVpugGGcKvvg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blockchain\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blockchain/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blockchain/mgmt/2018-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blockchain/mgmt/2018-06-01-preview/blockchain\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kxyYqmVjkv+ihpIgLFBIYd6JYlc=\nR:client.go\na:0:0:444\nZ:Q1vB+UdiG5zCYriX7RERPlTA0IAVg=\nR:enums.go\na:0:0:444\nZ:Q1U39+kerDv5+Q9Vv5P5/8tlZEVWw=\nR:locations.go\na:0:0:444\nZ:Q19M2eZvQNMaUq7dvKmK32/6VOmAI=\nR:memberoperationresults.go\na:0:0:444\nZ:Q1SmFywN48N5od0a18hM3o7Qqwab4=\nR:members.go\na:0:0:444\nZ:Q10ckH9k3/pxQhJxjrtp+4hPElVqg=\nR:models.go\na:0:0:444\nZ:Q1qApVWJ6eqa7M+xOEltOohiqitNY=\nR:operations.go\na:0:0:444\nZ:Q1Gj4ILjmaWurEpGLjDlHCtKaXqbA=\nR:skus.go\na:0:0:444\nZ:Q1VaDZObqQchfXJMHF3U399fz2LYU=\nR:transactionnodes.go\na:0:0:444\nZ:Q18Fwa9T3ENXwF6VQGDgbKWLeTdA0=\nR:version.go\na:0:0:444\nZ:Q1ptrAZmlqAhTvNZEL6a2AzVbT6os=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blockchain/mgmt/2018-06-01-preview/blockchain/blockchainapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1RgpMfYl/118j830TmUEWdJC1/7Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blueprint\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blueprint/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blueprint/mgmt/2018-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blueprint/mgmt/2018-11-01-preview/blueprint\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rkP4Kzwymy3X5Y9St1YKEiTQEV8=\nR:artifacts.go\na:0:0:444\nZ:Q1g7K7KToT09kR4FBDXWR5foxgCEA=\nR:assignmentoperations.go\na:0:0:444\nZ:Q1S0ZV7reIxY0Jd8t0eqP8AnqoP9s=\nR:assignments.go\na:0:0:444\nZ:Q1QdUfACzgxjn/Ryd25gnsPnEvqLw=\nR:blueprints.go\na:0:0:444\nZ:Q1VKcRhQJUtGArfTW+MPxrrD4skkY=\nR:client.go\na:0:0:444\nZ:Q1mFcTfcC6bStr61EqJfcA3Sjb+hA=\nR:enums.go\na:0:0:444\nZ:Q1XSYoLAnG7fOK6Px/iDEYNRiENrI=\nR:models.go\na:0:0:444\nZ:Q1LUTrFnQ1iWWc89WsIt4lyoI9/CQ=\nR:publishedartifacts.go\na:0:0:444\nZ:Q1GcvSKEksWjh7pGINcVRUBws9IJg=\nR:publishedblueprints.go\na:0:0:444\nZ:Q1nliy+QdDDm5eUc/NRuC0Y/x1AkM=\nR:version.go\na:0:0:444\nZ:Q1ItebH1nq+AnN52LxUsmM77BgsuQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/blueprint/mgmt/2018-11-01-preview/blueprint/blueprintapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mv/xRc78RFJvvNets25fNp4Kip4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2017-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2017-12-01/botservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1svbK9mC226aOT6g2NLH4q03NSCk=\nR:botconnection.go\na:0:0:444\nZ:Q1baGPbZ4rZgjiRq9dhyAEX62aV28=\nR:bots.go\na:0:0:444\nZ:Q1c9j6adQKzbHietB4maIm6d+kIlA=\nR:channels.go\na:0:0:444\nZ:Q1W8Xg2UemjrQ8otrMhfAY1oYTZo8=\nR:client.go\na:0:0:444\nZ:Q1YRMNFfHvHacIzzV59xukUpyEwLc=\nR:enums.go\na:0:0:444\nZ:Q1NymqfAnbyQSfHfwmK3qxNS0mOuQ=\nR:models.go\na:0:0:444\nZ:Q1DSyVj6P3Vsy6D1WgaMUduAvziHs=\nR:operations.go\na:0:0:444\nZ:Q1MpgSzNasAq14BpFMilmHOPZXWTM=\nR:version.go\na:0:0:444\nZ:Q1sPQzJXtpSsyQwUdGp9sUw2qzglM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2017-12-01/botservice/botserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XPN1EpyBrMxsMaNJKXncksBAgis=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2018-07-12\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2018-07-12/botservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12CipNcdo1XAvlskL/ICjwS5qrKk=\nR:botconnection.go\na:0:0:444\nZ:Q1KFakch/wgVX+ALuO1hWBv8sLbaE=\nR:bots.go\na:0:0:444\nZ:Q1COac7+1nx/f0uL25VCsxW/SRMcg=\nR:channels.go\na:0:0:444\nZ:Q1mtrfsRHyNn3KgZuwnuR7eVtWits=\nR:client.go\na:0:0:444\nZ:Q14kWQTa9gkz6fkrA4jUInkFg0Yu0=\nR:enterprisechannels.go\na:0:0:444\nZ:Q1q+5ag5SvVr/Ax5AOHckpAq0pCbA=\nR:enums.go\na:0:0:444\nZ:Q1Thnu1LP2zfKxWcL4LUAFjv1MECE=\nR:models.go\na:0:0:444\nZ:Q1D2CCEgrlDc7lhIH1c2ZJmyBvidw=\nR:operations.go\na:0:0:444\nZ:Q1YAQKHLrL5Bul8OlPYGtSPBZjce8=\nR:version.go\na:0:0:444\nZ:Q1Uw+AM/n+DzrjUJRpYYbQmxu7MXE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2018-07-12/botservice/botserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KH63ZXCmaZbxckTF0rSNC8hTFhc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2021-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2021-05-01-preview/botservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1J6ZTn7Na5wrPDAGmiHco/sJpLZg=\nR:_meta.json\na:0:0:444\nZ:Q1y3HvDEx3z5q5jchZUUDmWGh/kJk=\nR:botconnection.go\na:0:0:444\nZ:Q1/0760K30Bi9tp1VfkJLMVUFgSmw=\nR:bots.go\na:0:0:444\nZ:Q1GQIu3Ti48S/qfiFsTmReNRShTu0=\nR:channels.go\na:0:0:444\nZ:Q1ai4b4qQzGdbGRwB/0QF0SEAWtfw=\nR:client.go\na:0:0:444\nZ:Q15/YL4UuMMNyFA1TMjI8s1bu9JnE=\nR:directline.go\na:0:0:444\nZ:Q1VMjuUFrkvs0YrTmBaOBbkM1qWrQ=\nR:enums.go\na:0:0:444\nZ:Q1h8ULzc/PaV8wfZ3dDoKmfAgvSq4=\nR:hostsettings.go\na:0:0:444\nZ:Q19hCyJQ9hw7UyiR+Aelg3SQhqDaM=\nR:models.go\na:0:0:444\nZ:Q1nYvd8wBobRfmdRomC+LP9k1+Tfw=\nR:operationresults.go\na:0:0:444\nZ:Q19F4YfcgRG86wpAcPpZDq1wsQh48=\nR:operations.go\na:0:0:444\nZ:Q12JAUVxYOSHWXkhEesfDch+LcKVA=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1RiYUfRcGP0o+dEXzuZztGCA66mI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1r9siVDmhLT8USTPbLD37ritPGO4=\nR:version.go\na:0:0:444\nZ:Q1O0tcoDOujhK0vbUf3/WgSxvgCPA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/botservice/mgmt/2021-05-01-preview/botservice/botserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1C8Nkh2Au2884SyJNt1NYiC4A4iM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/anomalydetector\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1iUSSzMeDwuCscbrEMiffyFCUYag=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1PwfAYUNkZraO1esYzvDEuCSrMgw=\nR:enums.go\na:0:0:444\nZ:Q1vuAdtuA+zBsWb061GCuDUR4fvHU=\nR:models.go\na:0:0:444\nZ:Q1iDCOtyMspxRpSNCg+Hr74KR1/xw=\nR:version.go\na:0:0:444\nZ:Q1o/zinvZbdeGzj1zAHrjOZDw+fBs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/anomalydetector/anomalydetectorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1u9600ICXAx967nGzPfRiP0EnQcY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/formrecognizer\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1bMl9p6XovfbDiFTfniN4ghbHeDo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1thEId+fZ4djssu4LrPm+LEfp3FU=\nR:enums.go\na:0:0:444\nZ:Q1EiAjeOBFyEBJCP2zNLlvID16mOE=\nR:models.go\na:0:0:444\nZ:Q1zqUZlkgQiQjoprsT+8nXN399EyA=\nR:version.go\na:0:0:444\nZ:Q1X5Yxj5tiGrR2C7b3CZbpZfj4fgM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/formrecognizer/formrecognizerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WjSGn2xhkqki8XdDo3AV7YPXUxY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/inkrecognizer\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1x9pC3hyOWrLJL5uhbyUgrorYKmo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1W5XM9Yd5THYiiGB5Z8xvWPM4X7Q=\nR:enums.go\na:0:0:444\nZ:Q1Xdpwwgdf9OiBFAXVWtZqq4oIzJc=\nR:inkrecognizer.go\na:0:0:444\nZ:Q1FVpiMdBvELRZ4Hj3x6SB9SOjCBQ=\nR:models.go\na:0:0:444\nZ:Q14ugNaydTWXV9Axz2bBhFi6vYHBM=\nR:version.go\na:0:0:444\nZ:Q1MKNqa8R1CEYegV7NDcFZj1eM/xY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/inkrecognizer/inkrecognizerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1bdX14JYL+fUi1iXrziyGtdosq0c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/visualsearch\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1adqz3+kP431b2E8AOg/1iUzTr6A=\nR:client.go\na:0:0:444\nZ:Q1N3LrGw82JzqpJ08Y5zoRrOdzSok=\nR:dataplane_meta.json\na:0:0:444\nZ:Q13Atx9QWKeJOFPT3IoLOnUXcpkK8=\nR:enums.go\na:0:0:444\nZ:Q1QvLnKnTsQ+7AEhLCsJaYRJyUY08=\nR:images.go\na:0:0:444\nZ:Q12mP2A1Dh/+CoM75SkbJiOU+P7RY=\nR:models.go\na:0:0:444\nZ:Q1Wbd8NlKb5TDGZK/78RMJBy4xocw=\nR:version.go\na:0:0:444\nZ:Q13OFd3kUKmhptbxkIcTnZYARtP3s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0/visualsearch/visualsearchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XGL1JHh//DDR6RkSr8HrFxx7NOU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0_preview.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0_preview.1/translatortext\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1Y+hjlrnGxDP5+YLXKjQUw2g73BY=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1rREn9T10O1HzFXhiAKe2ex6hfhc=\nR:enums.go\na:0:0:444\nZ:Q17TEPKjV9sZoEYTNvbb4kMoP+fQQ=\nR:models.go\na:0:0:444\nZ:Q1FX5YgiaEWL+3qdBDjtvTSkirzAU=\nR:translation.go\na:0:0:444\nZ:Q1xiNJM6RBc6chbQlj/RN+iuGCtLs=\nR:version.go\na:0:0:444\nZ:Q1fA4Fb5rIddVM+YpWV5sKr2vCFB8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v1.0_preview.1/translatortext/translatortextapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gcQEmCHJClZgv0Z6d753aN34KGU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.0/luis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.0/luis/authoring\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:apps.go\na:0:0:444\nZ:Q1pnFwoNgTagaojRGa0cc6XbDMV/Q=\nR:azureaccounts.go\na:0:0:444\nZ:Q1dy0CkLqC1GXSCf1rIrFw80vCGrc=\nR:client.go\na:0:0:444\nZ:Q1lwUIoHsDcdsNeXlI4QnrS3+XTK0=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1DcTx3O0ZnWXesqwO0VWsoFZFDzk=\nR:enums.go\na:0:0:444\nZ:Q1YfGZpqeuX6DZf2vniwhK00l/zFY=\nR:examples.go\na:0:0:444\nZ:Q1K35GH/sopPItT+3bAS1IAv0UKLU=\nR:features.go\na:0:0:444\nZ:Q1FYkzhp1m/tJjWJW4yJ5qbkooplU=\nR:model.go\na:0:0:444\nZ:Q1yZvUMKmLxTPu/Uf9NOhFWZmvIfg=\nR:models.go\na:0:0:444\nZ:Q1NqcV1TfOpWBO5L/JjYr1LWadQ3c=\nR:pattern.go\na:0:0:444\nZ:Q1P0QtIVSSLTzkISS5SSjWMvH3CGU=\nR:settings.go\na:0:0:444\nZ:Q1dqmH38e3LB3FcdBIA/hkt/5y580=\nR:train.go\na:0:0:444\nZ:Q10Omlnr+qu4rDN24C4n1H55B2U+w=\nR:version.go\na:0:0:444\nZ:Q1m5UjhogjWxXvFcMI9sHLxfeDDyo=\nR:versions.go\na:0:0:444\nZ:Q13UQrE0vaqgpKac2gXTREdeO1PZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.0/luis/authoring/authoringapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1S+/OtUelBtx0K8N1TBmFY5dRWJE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.4-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.4-preview/customvision\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.4-preview/customvision/training\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1s4/C2BghAHQ/CEHePnUp/E9ZjOY=\nR:client.go\na:0:0:444\nZ:Q1np8kNVKDg8asWq6ycCQpIWGfLlQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1UBGTuZil9CcRKcUPdTFOgz9ZShU=\nR:enums.go\na:0:0:444\nZ:Q1y+hi8MMz6XaiE0zSh7EX4tp/EWs=\nR:models.go\na:0:0:444\nZ:Q1NFM5YllBXBYpWFno/GE5F9k9Dso=\nR:version.go\na:0:0:444\nZ:Q1cNVWnvmuS5IIeFII3wnVa0FtjGk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cognitiveservices/v3.4-preview/customvision/training/trainingapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19VlO1f5pTiyRESVwmCkOGajo8YU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/commerce\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/commerce/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/commerce/mgmt/2015-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/commerce/mgmt/2015-06-01-preview/commerce\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BpSXitt5AZDTKKP+nwRUWt0sQIA=\nR:client.go\na:0:0:444\nZ:Q1hiFIiqm6+13TN0gXmU5NW/mkcvU=\nR:enums.go\na:0:0:444\nZ:Q13KiTd5d2HqkcITsumD7rKFX44/Q=\nR:models.go\na:0:0:444\nZ:Q1VpHGyvwfBhVTPfvQxZWaeVVifWY=\nR:ratecard.go\na:0:0:444\nZ:Q1VRjSyQhesuV9NNvvenTfp0JE0j4=\nR:usageaggregates.go\na:0:0:444\nZ:Q1ef05pC7fZFITNxqEUSz2Dkn19fg=\nR:version.go\na:0:0:444\nZ:Q1S1JbfRIc7gSAWLCSOAmDwWACWks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/commerce/mgmt/2015-06-01-preview/commerce/commerceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zgeJJVBEGXrb3cpW/meK2zDHav8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/communication\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/communication/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/communication/mgmt/2020-08-20-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/communication/mgmt/2020-08-20-preview/communication\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1h0MKy5vIrUxvxXljrNu47/sNxgE=\nR:client.go\na:0:0:444\nZ:Q1HgliOdTpT6AI0ewmCZtN+nna8rM=\nR:enums.go\na:0:0:444\nZ:Q1GXpawcg2otx+2MAWrd/i0g3D/kQ=\nR:models.go\na:0:0:444\nZ:Q1yuofBzjYTZ4cDUozs/efnyoGkZc=\nR:operations.go\na:0:0:444\nZ:Q1Eeo6IUBUIYd2w0ZwQJ+LzZJ1PFc=\nR:operationstatuses.go\na:0:0:444\nZ:Q13e6Fe7zTNr1pu5rPdUEYUJamoWk=\nR:service.go\na:0:0:444\nZ:Q1Xt3YVrVZGwUWU9qvU0gdTBdOgH8=\nR:version.go\na:0:0:444\nZ:Q1NBPU2/Yv8MWnVv7C2Cl2YcHNmzQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/communication/mgmt/2020-08-20-preview/communication/communicationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GdGJWSrQp7UZ1eO61HGI68HScIg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2016-04-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2016-04-30-preview/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nzLmKAVikHYTiDRyGSuKn5jZVCw=\nR:availabilitysets.go\na:0:0:444\nZ:Q1VmTIEYLp0GHPkABGbV1BuUj6u5c=\nR:client.go\na:0:0:444\nZ:Q1glbwo9dahjLQ1SiRSYyeXlaTje8=\nR:disks.go\na:0:0:444\nZ:Q1Mo+uFyGecEzqAI3BZVfRd8ttPA4=\nR:enums.go\na:0:0:444\nZ:Q1i1i1Nr69+taOscPmJzfDeHbdtJI=\nR:images.go\na:0:0:444\nZ:Q1CfSSqHyQ9PAFynII3c/pH0K7aX8=\nR:models.go\na:0:0:444\nZ:Q1qsAdfLPHBSyJyYsgfA0GSKndTdo=\nR:snapshots.go\na:0:0:444\nZ:Q1LVW1TfKSb5AXkctitcEFb/bxEPU=\nR:usage.go\na:0:0:444\nZ:Q16AHtQFFkKYitt8NwpMY/Gv8CeP4=\nR:version.go\na:0:0:444\nZ:Q1PhVkG49wZbP+11nSjnDZi9u7XZw=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q1R81n0kXKU52mX0PLu4HTJOMsQqc=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1geve0nOY+XGPiJVBiJ01lRVeurQ=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1uINdTtwegSrriiWKV/+5BuJQCEE=\nR:virtualmachines.go\na:0:0:444\nZ:Q1UmIFUeYcNf7E6br8r+EiX3lRJwc=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1cW7yrty2wnY9FhI/Rcha04UFzp0=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1LTOssg1kphNiq4GSspoGYMtTRTU=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1a2cDIWCtGx0YXuJb8AHhP6mpU48=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2016-04-30-preview/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Sr1Vw3psxzJmdXaEpRSNHgMiGaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2020-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2020-10-01-preview/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mi4XBJ9oAf5dCfx8n9z6ZJ8CYck=\nR:availabilitysets.go\na:0:0:444\nZ:Q1RwNgQHraWcu+8YCNvlUJqzg5tOw=\nR:client.go\na:0:0:444\nZ:Q1ifBLmNhJMsVuVf7XsrHhBQ5uxro=\nR:cloudserviceroleinstances.go\na:0:0:444\nZ:Q1x6NW6ztYE+xrFyOMBjOAq6bLD9w=\nR:cloudserviceroles.go\na:0:0:444\nZ:Q1hYmPojgMlV7Pch+bPehsuauA+UQ=\nR:cloudservices.go\na:0:0:444\nZ:Q16GkCA8/1oFRCRX7FynvCPngl3Wk=\nR:cloudservicesupdatedomain.go\na:0:0:444\nZ:Q19opNE7tiYMPZMQ2iUgnyW9a6Y0I=\nR:containerservices.go\na:0:0:444\nZ:Q1zACdAnVfrVfTMhmsxwMQsd+PePY=\nR:dedicatedhostgroups.go\na:0:0:444\nZ:Q1mAKsBVKVzL+kI71MoEO/eil4lx8=\nR:dedicatedhosts.go\na:0:0:444\nZ:Q1hf9jqAw0X0rN3JfTlW7oMATsRvo=\nR:diskaccesses.go\na:0:0:444\nZ:Q1GyP6E1SGkS/WiPthWBelg7EEMec=\nR:diskencryptionsets.go\na:0:0:444\nZ:Q1EpgwV4kGKDNzaFA9B9TSWp5vrN8=\nR:diskrestorepoint.go\na:0:0:444\nZ:Q1a/sbS+uFrWDoMQ2EOyDEPF3dsgI=\nR:disks.go\na:0:0:444\nZ:Q1ByjLQILfv6+3MrY4XYQJK4vXaPY=\nR:enums.go\na:0:0:444\nZ:Q1gUUFZEyDMyAKoulbY9PB0fCi24E=\nR:galleries.go\na:0:0:444\nZ:Q1FzdVwUdGaYd2XcGAw8gDOwCpw58=\nR:galleryapplications.go\na:0:0:444\nZ:Q1Di2oZNdtLijFX502JYURFEpI1ro=\nR:galleryapplicationversions.go\na:0:0:444\nZ:Q1CL8sekg0xX0o5wgbb8KLv40R65k=\nR:galleryimages.go\na:0:0:444\nZ:Q1sLz7MpiktpaNPqgmQ5SnVkMsPA4=\nR:galleryimageversions.go\na:0:0:444\nZ:Q1fl6mTcUKQvJdDxh1KU/usXxnlnE=\nR:images.go\na:0:0:444\nZ:Q1mKmEIC4g7nLKbp6BdJZbss+/21E=\nR:loganalytics.go\na:0:0:444\nZ:Q19byNBGUOmzDiQ1pDqiTukfASomE=\nR:models.go\na:0:0:444\nZ:Q1SgfUaR3kzkMLzYpvqR12VlC4PRs=\nR:operations.go\na:0:0:444\nZ:Q1oa5o3gi8n8gcEv6XPyIXu0vhquE=\nR:proximityplacementgroups.go\na:0:0:444\nZ:Q1qvTKnHwvp+cFQY/DYYFVdpDWsc8=\nR:resourceskus.go\na:0:0:444\nZ:Q119rJwQNQ/f3W2YL9n91Y6uUQhYU=\nR:snapshots.go\na:0:0:444\nZ:Q1dRp9K2Z1hd5s9HO+ktHyCQeKAOA=\nR:sshpublickeys.go\na:0:0:444\nZ:Q1o1aVpe/muOlT8TT+JZNYg7iKvck=\nR:usage.go\na:0:0:444\nZ:Q13rDdqSJ+ENPd2X0P82MzMdXU8ds=\nR:version.go\na:0:0:444\nZ:Q1dXnOezOhpjaWxQtjCdJaGJY0RxE=\nR:virtualmachineextensionimages.go\na:0:0:444\nZ:Q14CelNL4+sG0PE8ui264HTMF/cEU=\nR:virtualmachineextensions.go\na:0:0:444\nZ:Q1C8WjBkcpNFgBsr8jk9NVBuSzqck=\nR:virtualmachineimages.go\na:0:0:444\nZ:Q1Em6hWjR6A2MW8/xK0Q0TeXJIf5k=\nR:virtualmachineruncommands.go\na:0:0:444\nZ:Q1IRS+WPq44kS1UlvY28I4Av9bbq8=\nR:virtualmachines.go\na:0:0:444\nZ:Q13OIb0nmFAOJcx5YYFh/wtjozjt4=\nR:virtualmachinescalesetextensions.go\na:0:0:444\nZ:Q1pIKuQu7DvVuf66PifLi3CT98Y/g=\nR:virtualmachinescalesetrollingupgrades.go\na:0:0:444\nZ:Q1ZXEr177N9qM8GyOow9vmsth3Xeo=\nR:virtualmachinescalesets.go\na:0:0:444\nZ:Q1h4ntIyUOPqHkJcKMJMwf2gP0QLA=\nR:virtualmachinescalesetvmextensions.go\na:0:0:444\nZ:Q1Eh2uysu6iQcDlHFmZ2zDeAMCSDs=\nR:virtualmachinescalesetvmruncommands.go\na:0:0:444\nZ:Q1tRxmesHoQHyjsJP/o8vUOUWgz9Y=\nR:virtualmachinescalesetvms.go\na:0:0:444\nZ:Q1OPlUjpNrdtbl/sKkxm7PdUdF/L0=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1ntp/HqoLlJ0gfgq5WcMUIrocqks=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/compute/mgmt/2020-10-01-preview/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1A2uZYnVwS4RhYKG+IsD1etHSXng=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confidentialledger\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confidentialledger/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confidentialledger/mgmt/2020-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confidentialledger/mgmt/2020-12-01-preview/confidentialledger\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RK9oy//ytg215troQORUI8NrmlQ=\nR:client.go\na:0:0:444\nZ:Q1E/9BhQVdd5MZkLfw6mcF7hrdj+o=\nR:enums.go\na:0:0:444\nZ:Q1iaFG/7Lq7yRXJamIVTYsB8UjMDc=\nR:ledger.go\na:0:0:444\nZ:Q1Ty2357O2OSpzogK05HSmdmm7zj0=\nR:models.go\na:0:0:444\nZ:Q1wZwIONtuASX90q6trin0KPe9db0=\nR:operations.go\na:0:0:444\nZ:Q1hiAwZ0iVVsFjmt0wDXZP3Q8LP7s=\nR:version.go\na:0:0:444\nZ:Q1kVWBZyi3lUkwNqKhBr0hoOfftLA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confidentialledger/mgmt/2020-12-01-preview/confidentialledger/confidentialledgerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13C+xrYakdlgFFJn6I7j9zPLQe08=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2020-03-01-preview/confluent\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1VNHeQCMbwJg1ohPduXxKYJcfA5E=\nR:client.go\na:0:0:444\nZ:Q1d0w1gp5UnE2wWBQMOVHKI535MZo=\nR:enums.go\na:0:0:444\nZ:Q1I4stV+vDE5mwKGaUdTlPzUXpYqM=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1DMbYqQGqGqEHJ4h3a7cTOAz9lcQ=\nR:models.go\na:0:0:444\nZ:Q1ftiYlr64Ca2+u556EGrp1okCvk0=\nR:organization.go\na:0:0:444\nZ:Q1hP+thXo0YRfThgVy8WNkQtzrc7g=\nR:organizationoperations.go\na:0:0:444\nZ:Q1B8tL1AgfolC9VkXDBYhGMb2t+c0=\nR:version.go\na:0:0:444\nZ:Q1WYq1aCk0NdRn7tcn2UR1Kxplg9c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2020-03-01-preview/confluent/confluentapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EuqdoDwTBS4/gx8YhEMec0GiyoE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2021-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2021-09-01-preview/confluent\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q193SIlX+6nbO+BMa7IOdQv1b8e2M=\nR:client.go\na:0:0:444\nZ:Q12l5ggc09xrK3uEDDXOruBWtZSqE=\nR:enums.go\na:0:0:444\nZ:Q1cEVMf6fgxDIwWLOH2ktxW3REkQw=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1V4zxtwlEmTM6gl7PJdKrnTp7jUM=\nR:models.go\na:0:0:444\nZ:Q1Zmo0wbMJNieoNG1COjwRzxQjbk4=\nR:organization.go\na:0:0:444\nZ:Q1H1IAiZ4B/jja7qkgOYxkefSJubs=\nR:organizationoperations.go\na:0:0:444\nZ:Q1u07Nl0mfyxFurVbkb6MQY/FKu+E=\nR:validations.go\na:0:0:444\nZ:Q1PtU7cBOWYGKjCUfhr85rkYzvNw4=\nR:version.go\na:0:0:444\nZ:Q1inbSBFrSMhcyO1RkCpNYLpEdNlk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/confluent/mgmt/2021-09-01-preview/confluent/confluentapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WZZD0BK5IpSS1YdO5a0Zc+vZafU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-08-01-preview/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1f6zCpqUePU4PxQhw6w4ODqoaZlY=\nR:client.go\na:0:0:444\nZ:Q1ASaa6bLDhdUjTHuYxvtS2BzdT4U=\nR:containergroups.go\na:0:0:444\nZ:Q1o5ft0xxj7izgEOheeUSSwHLLJMw=\nR:containerlogs.go\na:0:0:444\nZ:Q1QFA91zil3KDuOJP9Q0lp7c7rXzA=\nR:enums.go\na:0:0:444\nZ:Q1mVrSB42pjrnB6VGeA7IQjle8FzQ=\nR:models.go\na:0:0:444\nZ:Q1rY7FFq3NBcTqXt4Cb6Tf63YWoWA=\nR:version.go\na:0:0:444\nZ:Q1NPwTRc9E7x2V4Ivqr0F9U29HUk0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-08-01-preview/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sNk17Mnm/mpoU0LPqEDQyG3zxhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-10-01-preview/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q139JpqxwsaR3ftPED/Hm/ZMBNvg8=\nR:client.go\na:0:0:444\nZ:Q1UMH+FGMV7dv1e6HNU0Rw/XGF3F8=\nR:containergroups.go\na:0:0:444\nZ:Q19jw75R/rCwxxk1YViBqtZMqkgSQ=\nR:containerlogs.go\na:0:0:444\nZ:Q1HFpA8F+peZFpu1+/KlMTrrYKlCo=\nR:enums.go\na:0:0:444\nZ:Q1afJzXjkT9OS+rq8h5m4jz6jLGI0=\nR:models.go\na:0:0:444\nZ:Q1+vXZ5Xn6d22S9I5imEcS+E3sE0k=\nR:operations.go\na:0:0:444\nZ:Q1v40sh25ulYS8LzfELfYOUDhYqK4=\nR:version.go\na:0:0:444\nZ:Q19OaWm/WwDu3wyymqgKVbpgEiwEA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2017-10-01-preview/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1goOYC5SVSf/xfMrbJoPoSuLMwqY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2018-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2018-02-01-preview/containerinstance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rIJN7bwu9GC88h5bz/spYHzXkWI=\nR:client.go\na:0:0:444\nZ:Q1Z47Kuu4HPwISnqtYHLufa4OuN8c=\nR:containergroups.go\na:0:0:444\nZ:Q1/2d2po9Vw6NzCgDH3Asd5cQjw0c=\nR:containergroupusage.go\na:0:0:444\nZ:Q1s8vC2lhaTcI7l9LIkp8dp9zFjvg=\nR:containerlogs.go\na:0:0:444\nZ:Q1K58UuS5pEFy6TF94yl2Bq4lWftk=\nR:enums.go\na:0:0:444\nZ:Q1afJzXjkT9OS+rq8h5m4jz6jLGI0=\nR:models.go\na:0:0:444\nZ:Q1hjeeoNMUW9/rTerz10fr7oARdd4=\nR:operations.go\na:0:0:444\nZ:Q1fZbcdetFk3VaIFhMibo0AudNkFg=\nR:startcontainer.go\na:0:0:444\nZ:Q1Oq6Trkfnh1WPUEG+LgwJ2dHYllQ=\nR:version.go\na:0:0:444\nZ:Q14UVvLhbjkqd+nZK1Q+W/OChpmo0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerinstance/mgmt/2018-02-01-preview/containerinstance/containerinstanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qaoashR+/tx56JNUuQ0U5nS6Ilw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2019-06-01-preview/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1CC+Y7Zu7H+tqAOCwonKaq8CcotI=\nR:agentpools.go\na:0:0:444\nZ:Q1jUCgkN6TM5SUxIUbbtp4eu38IDA=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:enums.go\na:0:0:444\nZ:Q12aZmU8dTrJ+9g4LeISPe0Ta51BM=\nR:models.go\na:0:0:444\nZ:Q1Bzp8Aqsl40DNfc33z8tBNIMyP6c=\nR:operations.go\na:0:0:444\nZ:Q1ABzOpbwAq0JVBij6A33qnaMl/xg=\nR:registries.go\na:0:0:444\nZ:Q1qNRcdyP4whqmWEkNH8/U5jCa+c0=\nR:replications.go\na:0:0:444\nZ:Q1JyyaW55wkN8BdWiNBrqQUTGA4nY=\nR:runs.go\na:0:0:444\nZ:Q1Gvmh51uC9kCCoUBjVS87O1G6/3k=\nR:scopemaps.go\na:0:0:444\nZ:Q1+e1SB04/gHaDyVdJ9wVPYthCNjc=\nR:taskruns.go\na:0:0:444\nZ:Q10FCcpbN17Eu2fpmRVrs1tIlSvfo=\nR:tasks.go\na:0:0:444\nZ:Q1Ys/4RYN1QoOioWA4e79p+ZfymNA=\nR:tokens.go\na:0:0:444\nZ:Q1J9jCpnS9DGAtjkUGYDEQJTZZVXQ=\nR:version.go\na:0:0:444\nZ:Q1ncoxis7k2GRQSvbUXyN41c23XsY=\nR:webhooks.go\na:0:0:444\nZ:Q1tPtEjo1EdU8yVMwozvhQ30k2cPY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2019-06-01-preview/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kjO4NXleM6BxMuuijS07TU69Eo8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-08-01-preview/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1r+/9G0tiF49WV06W9haYBmlFV2I=\nR:agentpools.go\na:0:0:444\nZ:Q1jUCgkN6TM5SUxIUbbtp4eu38IDA=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:connectedregistries.go\na:0:0:444\nZ:Q1SnxNdU+oDl5s/KS+VTfs2aZ1ccU=\nR:enums.go\na:0:0:444\nZ:Q1tW07N+MT7/fIzl44ouVppg9aQYo=\nR:exportpipelines.go\na:0:0:444\nZ:Q1IzIcSgL6P+Nlr/0A+zVvGVvkiRo=\nR:importpipelines.go\na:0:0:444\nZ:Q1P9awssfIAzZocCiIM5MWFTBFANQ=\nR:models.go\na:0:0:444\nZ:Q1Or1rRf6dP2E4p5coxl+plEQrooc=\nR:operations.go\na:0:0:444\nZ:Q1F6DwPG7sQj430zr0Ypd3erkiyNs=\nR:pipelineruns.go\na:0:0:444\nZ:Q1lAidB9mPstEBI8+VF95IRdX/wCE=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q19jlJHW95GCbuCPYrPKfhDeunxcQ=\nR:registries.go\na:0:0:444\nZ:Q1sJqaus0flIu0Lo4fFruVtJV5Kok=\nR:replications.go\na:0:0:444\nZ:Q1xToI9xeeCelCQz96PyrZHvDV/+U=\nR:runs.go\na:0:0:444\nZ:Q1Gvmh51uC9kCCoUBjVS87O1G6/3k=\nR:scopemaps.go\na:0:0:444\nZ:Q1KHjPd3SMdnVsd+IvHXodih5aJF0=\nR:taskruns.go\na:0:0:444\nZ:Q10FCcpbN17Eu2fpmRVrs1tIlSvfo=\nR:tasks.go\na:0:0:444\nZ:Q1Ys/4RYN1QoOioWA4e79p+ZfymNA=\nR:tokens.go\na:0:0:444\nZ:Q1LhVpaIvi8QHN6IW+1uMYJ+ts6zU=\nR:version.go\na:0:0:444\nZ:Q1DeNScKehBtkiE8K/7c/HWGUCMiY=\nR:webhooks.go\na:0:0:444\nZ:Q14L3+lbnjtwP2T71NRJsWi4Rb4po=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-08-01-preview/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1U1CuPTIr663/pVJeJeRGVJps2PM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-12-01-preview/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19ZAFj5UhUtUh+81GsQsyLaDlJQI=\nR:agentpools.go\na:0:0:444\nZ:Q1jUCgkN6TM5SUxIUbbtp4eu38IDA=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:connectedregistries.go\na:0:0:444\nZ:Q18i2KE6k5iLy80sQ2xan2KS/BGMU=\nR:enums.go\na:0:0:444\nZ:Q1tW07N+MT7/fIzl44ouVppg9aQYo=\nR:exportpipelines.go\na:0:0:444\nZ:Q1IX0Z6MQ0Ah0EyJjTGmTA0tYYa2M=\nR:importpipelines.go\na:0:0:444\nZ:Q1+EMHyO1/AZL/iLLnszWHHE1Q4Nc=\nR:models.go\na:0:0:444\nZ:Q1/8f/7Ze0UEXVC90B9mI6OE5ILvA=\nR:operations.go\na:0:0:444\nZ:Q1bqwf9c76/WyCGhiLr6gSvfJpXEw=\nR:pipelineruns.go\na:0:0:444\nZ:Q1SNrv/WSWZfFpp6qecZ7ATckDjiQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ioGfyoEhE5rdH5iwig5ZParfJt8=\nR:registries.go\na:0:0:444\nZ:Q1WU/Mj1p6OMMxU3OpQ8aE0Hn+C8M=\nR:replications.go\na:0:0:444\nZ:Q1WH2dDITvLnONolkaV7PA+Up5p9o=\nR:runs.go\na:0:0:444\nZ:Q1Gvmh51uC9kCCoUBjVS87O1G6/3k=\nR:scopemaps.go\na:0:0:444\nZ:Q1593rNMYgzmMFsdC2apvnIjhGO1o=\nR:taskruns.go\na:0:0:444\nZ:Q10FCcpbN17Eu2fpmRVrs1tIlSvfo=\nR:tasks.go\na:0:0:444\nZ:Q1Ys/4RYN1QoOioWA4e79p+ZfymNA=\nR:tokens.go\na:0:0:444\nZ:Q1ECS41Cimd9PEI0GJwVAtP8kkjpQ=\nR:version.go\na:0:0:444\nZ:Q1PS6saatgcYEiLMVIFdK+eMkvMfQ=\nR:webhooks.go\na:0:0:444\nZ:Q1PAsGMcyxAoAyIAAVIJMK5nLviD4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2021-12-01-preview/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14mvTC2h8RyAnSmBKtGb9lQjV6X8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2022-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2022-02-01-preview/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1cEXd/thtA4lLj+C71Naj5f46qwo=\nR:agentpools.go\na:0:0:444\nZ:Q1jUCgkN6TM5SUxIUbbtp4eu38IDA=\nR:client.go\na:0:0:444\nZ:Q1R/17wwpRDOPtskPK0E4ituu1yog=\nR:connectedregistries.go\na:0:0:444\nZ:Q1K/w1iYhQCccklzFHSLZSm/RwPSg=\nR:enums.go\na:0:0:444\nZ:Q1OfwRTJXdq7pWJhuN3ftCVn7OLng=\nR:exportpipelines.go\na:0:0:444\nZ:Q1EOj273Q7S4wHSCSdjYCy/jXs7Og=\nR:importpipelines.go\na:0:0:444\nZ:Q1nsaDpZ7fzvOP7p6trATHd5KMqxQ=\nR:models.go\na:0:0:444\nZ:Q12sO5yWxTI2dAJLEHkH75YJLWBMA=\nR:operations.go\na:0:0:444\nZ:Q1lxZ7eEOm6ntGZkUELQAnAevRv68=\nR:pipelineruns.go\na:0:0:444\nZ:Q1fh4WwqaKgPCkOoje/SjiYbj3I1Q=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1EMvGeRFE3wzbWLuXll+Z9QcNH0U=\nR:registries.go\na:0:0:444\nZ:Q1QBsxCe3dqwJo6OSbKRaFtldjO3M=\nR:replications.go\na:0:0:444\nZ:Q1oESlhhnDwsWfoQRUnpGEZBQbpcI=\nR:runs.go\na:0:0:444\nZ:Q1Gvmh51uC9kCCoUBjVS87O1G6/3k=\nR:scopemaps.go\na:0:0:444\nZ:Q1w95qe4LEBETL8QL/KO8tvbuelms=\nR:taskruns.go\na:0:0:444\nZ:Q10FCcpbN17Eu2fpmRVrs1tIlSvfo=\nR:tasks.go\na:0:0:444\nZ:Q1Ys/4RYN1QoOioWA4e79p+ZfymNA=\nR:tokens.go\na:0:0:444\nZ:Q1gDw8KtFWRqajecLp3BoOrW9yy4o=\nR:version.go\na:0:0:444\nZ:Q1zw+jDWgC0BwWzAlLBbC40Xp2yIY=\nR:webhooks.go\na:0:0:444\nZ:Q1ilbQnuMcDzOR6e9zuSXBAwGQXEQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/mgmt/2022-02-01-preview/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1muGvxryX+wjpOzJVGWp+MaGiUAg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/runtime\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/runtime/2019-08-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/runtime/2019-08-15-preview/containerregistry\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:accesstokens.go\na:0:0:444\nZ:Q11hzMSEgT8mm4kI2yWcNRbheTBmo=\nR:blob.go\na:0:0:444\nZ:Q1Qvgy5jpRinyFpQ/x2uzyKR/KI4w=\nR:client.go\na:0:0:444\nZ:Q14C+lBB7n4oy0MubSi4McfyHC0yg=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1vjNvKPL5ELyi22gyXAGSgbOAzPE=\nR:manifests.go\na:0:0:444\nZ:Q1MCpu9N03AUrT9LeJyHfw5PLHFog=\nR:models.go\na:0:0:444\nZ:Q1hPl9yTudG2mZx5uMtY8pJYZESrY=\nR:refreshtokens.go\na:0:0:444\nZ:Q19fQyAJjG/x0qoZAmKEoLJBEnUR4=\nR:repository.go\na:0:0:444\nZ:Q1TyxlytH9caodvIsd2m2UJ8OQrpA=\nR:tag.go\na:0:0:444\nZ:Q1PbVe+D5AT5Idbc1HFG850W1bPhg=\nR:v2support.go\na:0:0:444\nZ:Q1Nu1/oBd4aLOtpuzNMY8H5A7rSz0=\nR:version.go\na:0:0:444\nZ:Q1ckvvDJThoTPZj/F5CYvp+iXrwMk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerregistry/runtime/2019-08-15-preview/containerregistry/containerregistryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1r2uMrZ7c4gW7iQX9SGByfaZJkHA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2018-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2018-08-01-preview/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ptVwJIzti+tYFLzCEweXfIuJnYM=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1tzplJbp7edrLOQsSdiVGCo9XRW8=\nR:enums.go\na:0:0:444\nZ:Q1F0vEIKF4iXTtCibYdRg908ZhWAg=\nR:managedclusters.go\na:0:0:444\nZ:Q1mrvkgtxO5otifGy0CiYVp+d+OOM=\nR:models.go\na:0:0:444\nZ:Q1uiWsIyYgM1aYkHZu/oRCwY1OO8w=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1sxr9+4V2myB2sc+B+JRy2vgIgUA=\nR:operations.go\na:0:0:444\nZ:Q14VppjrSqh687g/mQzKJbB61qTL8=\nR:version.go\na:0:0:444\nZ:Q1f8+A9wJiSSrFZEeGFCANLhfA724=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2018-08-01-preview/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WvW10aHChIsrQuxUBSRxonoTnWA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2019-09-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2019-09-30-preview/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1M+Obabju5VHFDgoIljGTiVxbPAA=\nR:agentpools.go\na:0:0:444\nZ:Q15c9Y4V8SDXMoYfla6+SUmF1dtWE=\nR:client.go\na:0:0:444\nZ:Q1LRXpI1RnCEgV35VLOiyJmFVuM6s=\nR:containerservices.go\na:0:0:444\nZ:Q1HyyrQZy/nrCHJajYLIK0No60bVU=\nR:enums.go\na:0:0:444\nZ:Q1wcfkj8mL1aLgRCo+oygBUf1wLWY=\nR:managedclusters.go\na:0:0:444\nZ:Q1d5mAO/6VSDv6RpJxQfaO9u6AFG0=\nR:models.go\na:0:0:444\nZ:Q1C4dDMwg4bQL3wZqp9QDuIjpnUmM=\nR:openshiftmanagedclusters.go\na:0:0:444\nZ:Q1JcpyQUzjgCjpYzdIUsjFUK7qZ3k=\nR:operations.go\na:0:0:444\nZ:Q14gb2FPHpcq/LlWlNcTb/uBrb0Bo=\nR:version.go\na:0:0:444\nZ:Q1OK5ULFKuvolW25cXPNyREAR4YLs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2019-09-30-preview/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1T0Gpnbvg35ymjeSRsBoVRqDmXEc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-01-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-01-02-preview/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XK/LQxwgsMDxUA2S+B+/4g86rCY=\nR:agentpools.go\na:0:0:444\nZ:Q1GPeorXO8gorlSeMVXbxhITgPUvw=\nR:client.go\na:0:0:444\nZ:Q1Rn92HRGlAA5LjNnVLK+6By6/dGQ=\nR:enums.go\na:0:0:444\nZ:Q1CjF+DNqEfpyWIhpxA9dGQOY0sNw=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1Z6FISuSTHbENQa3bMoYtIFcyHgc=\nR:managedclusters.go\na:0:0:444\nZ:Q1hBinHfGKnm6bBTh2xk0+NTlzHik=\nR:models.go\na:0:0:444\nZ:Q1mZG7ud6U7FW+3cljnpQzSSWSwRA=\nR:operations.go\na:0:0:444\nZ:Q1n/nquoPiD4BBZ8boWRTiRHIaEE0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1dLrMLiEe+Zd0/iHZk4cQdCzYk2Y=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1eplMZYxRpaI8aUOmOunwv8hs9uI=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q19OENH7yOri5AgTW1LfMRjXY87GQ=\nR:snapshots.go\na:0:0:444\nZ:Q1JLHbmlj1brNZ8CD+9rhwCqMBk08=\nR:version.go\na:0:0:444\nZ:Q1f568zvAIpkP0vl7FVpHTvEcrEiM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-01-02-preview/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10Ovjonv+jNN2FgLIR8OpxzW2oqA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-03-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-03-02-preview/containerservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fDJaDJ5q+IscLqSFoDgFpXSa9OM=\nR:agentpools.go\na:0:0:444\nZ:Q1aQ33ju15jUZSTIUx84eP45FJItE=\nR:client.go\na:0:0:444\nZ:Q10T193LTc8I5Y6mrtDoEP9FQy3lI=\nR:enums.go\na:0:0:444\nZ:Q14dvy0y8EHS+GPITzri6rvKBOcys=\nR:maintenanceconfigurations.go\na:0:0:444\nZ:Q1r1A/yNFk+fNdYfQ9CcVVlRtCRic=\nR:managedclusters.go\na:0:0:444\nZ:Q1ePdhQtjsBjlUUJFC74bq19NojT4=\nR:managedclustersnapshots.go\na:0:0:444\nZ:Q1e4uMMn/IX+0+bPuhNhBXjaAs1q8=\nR:models.go\na:0:0:444\nZ:Q1l2IhElIHxTZCWsv9GfG3dBT5oLc=\nR:operations.go\na:0:0:444\nZ:Q1GmGAw5sI1XEHPTHxMiDYjxtWPw0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1DBcbPT7ZF3984ZEd1tUbAlByIVE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1h8yU0Am31J5Wq3lzqrzy8ANovrk=\nR:resolveprivatelinkserviceid.go\na:0:0:444\nZ:Q1Rci1A2o84JZKOIhBUb4K8VHyVEc=\nR:snapshots.go\na:0:0:444\nZ:Q1K6iXG/erDtgWXT6mo1RU0yXwaig=\nR:version.go\na:0:0:444\nZ:Q1S0JvFelmxYKdSqqahkdH2QPBlb0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/containerservice/mgmt/2022-03-02-preview/containerservice/containerserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cbCE3fAALuXBO4Z2gK39v9IDEpI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-04-01-preview/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aorWrlDMQhcU0X7PlIGi8HMHrQ4=\nR:cassandraclusters.go\na:0:0:444\nZ:Q1hGV5jCSmZyGwpp9xnqnDkdE3BBw=\nR:cassandradatacenters.go\na:0:0:444\nZ:Q1Noc/lL8BO5Tfa6RmXEIUXUT19Z0=\nR:cassandraresources.go\na:0:0:444\nZ:Q1pegvQb5w3pGAgojLqept66BvgR4=\nR:client.go\na:0:0:444\nZ:Q1Ah/+FU7JVnV4gy2dyXlFNW2hEPA=\nR:collection.go\na:0:0:444\nZ:Q1Mp4D4zpPYJpnKFij+0pdTCrZSis=\nR:collectionpartition.go\na:0:0:444\nZ:Q1fLWP4wSd2kzXfE2rjoSWoZO0GLo=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1GDDn16iR261RZQ9Ldc+vKODnqiE=\nR:collectionregion.go\na:0:0:444\nZ:Q1zXNugqJy+xNC6LoIVu3xSrOCs7k=\nR:database.go\na:0:0:444\nZ:Q14JxGh2giBIugYe+XMdSeevQELIU=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1/OVQBPnefN2M//yiTopfk+ovbmQ=\nR:databaseaccounts.go\na:0:0:444\nZ:Q18rhuUu6O0y5bmQJXMHJOSIpo7UI=\nR:enums.go\na:0:0:444\nZ:Q1oN/4ocubQB7tSTkjNbsaPIFXhVA=\nR:gremlinresources.go\na:0:0:444\nZ:Q1nOumMphvg0teWJCuaH0g/vFKGKc=\nR:models.go\na:0:0:444\nZ:Q1I0uKvVXOYfXFSktAbZ5UaXhbihk=\nR:mongodbresources.go\na:0:0:444\nZ:Q1sJmBFpXssbxrd8glmVK4XjKyOUg=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q15sUSdl0wzb+vleWc7aXFjIaUR1U=\nR:operations.go\na:0:0:444\nZ:Q1xnFOwiburm1S7WbzssfEaqSFEDk=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1kYooEt+MHD2ZR3OaVWe59FHvRhA=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1ZZND/Jv7V0Lc7wXvYfsLPA9wEi4=\nR:percentile.go\na:0:0:444\nZ:Q1H8d5Cl4/U97R/mx1bLx53aLkvbE=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1uti1Uv2ug1sxqQvHcMDw27TKxI8=\nR:percentiletarget.go\na:0:0:444\nZ:Q1+AObUOhTkdXCJzKgj35CN6j9hi0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1L8J6P6lPsqwWPV+wdPr5y0FyvlI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1g7HHeoE0zFEbe8svOz9R/pNsfOQ=\nR:restorabledatabaseaccounts.go\na:0:0:444\nZ:Q1x8OTTKMR8jpxCFRGf9oSoQqhpmQ=\nR:restorablemongodbcollections.go\na:0:0:444\nZ:Q1pzON8FivzsMgunZpHZWICzwHR5I=\nR:restorablemongodbdatabases.go\na:0:0:444\nZ:Q1EMqxg4aHq8wTwa2SXvOamyL75no=\nR:restorablemongodbresources.go\na:0:0:444\nZ:Q1fkUcjD6NkJBPVA3Fg7HFl3nqHS8=\nR:restorablesqlcontainers.go\na:0:0:444\nZ:Q1tJO1DYj2NGtNSV+fJ3ZEu9I7IVM=\nR:restorablesqldatabases.go\na:0:0:444\nZ:Q15JFctb2NUtcd3PHwTdjLLpL3Rb4=\nR:restorablesqlresources.go\na:0:0:444\nZ:Q1dxjKothcEqS7ROEHchooX5erOvA=\nR:service.go\na:0:0:444\nZ:Q1isw+l+wCD6veiHbFdpkHqwcSmyk=\nR:sqlresources.go\na:0:0:444\nZ:Q1IjGEw4rGiyIU6zlDtjTWhw1Y4ys=\nR:tableresources.go\na:0:0:444\nZ:Q1dTBeHmiF0zxqifjDif/MSfcsOyw=\nR:version.go\na:0:0:444\nZ:Q1jcenK/tXXtz5Vwafsha6VGzzHnY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-04-01-preview/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jEIsnY5wJ8Tm2aR/ZCZ0rB71d4g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-11-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-11-15-preview/documentdb\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19fIK5cnGthTctgU3Hbv5jpby6FY=\nR:cassandraclusters.go\na:0:0:444\nZ:Q1WNrmXcXAtZxACFqG4z3DY6bPc88=\nR:cassandradatacenters.go\na:0:0:444\nZ:Q1H5Q0YhFAth0W67WBVHBF0Y0tlYM=\nR:cassandraresources.go\na:0:0:444\nZ:Q14GuFBQjqTV5Cvbq+/8iy6/i6KcU=\nR:client.go\na:0:0:444\nZ:Q1aTnQmKpDQ1Tac0PSUos06rOB3ao=\nR:collection.go\na:0:0:444\nZ:Q1WwNJmPSySPRNa40G3xF1w2ye+TA=\nR:collectionpartition.go\na:0:0:444\nZ:Q1k0Rkz2cl6T7Hy3RXSyQl36oww5Y=\nR:collectionpartitionregion.go\na:0:0:444\nZ:Q1yq3L/bVYVNn7OZtFNUYFVtuJ7ck=\nR:collectionregion.go\na:0:0:444\nZ:Q1F7bbQzFDJEJ6KDFO/+SptALfJAw=\nR:database.go\na:0:0:444\nZ:Q1HVbyhSDEs0E/rxWG9UwXhjKIkh8=\nR:databaseaccountregion.go\na:0:0:444\nZ:Q1niAocGUO9aApAB4Z6O2d/TTn6kI=\nR:databaseaccounts.go\na:0:0:444\nZ:Q1I48l4kVIiHvF9y5XcgPEWQWrRnM=\nR:datatransferjobs.go\na:0:0:444\nZ:Q1gV0dmRySNBcpz3c9o5AylZlt0Js=\nR:enums.go\na:0:0:444\nZ:Q1dCr0hMM0VgtqFMsb9GsstyvJiEU=\nR:graphresources.go\na:0:0:444\nZ:Q1zvp2dWJn9P+7nwlad9ndkOwmWWY=\nR:gremlinresources.go\na:0:0:444\nZ:Q18UuEBSB3/nBT31HPUzYnwoOHV8c=\nR:locations.go\na:0:0:444\nZ:Q1aBhvf0LNbCIB+9+eMvCF7erAKvE=\nR:models.go\na:0:0:444\nZ:Q1fOBNmPFHQ609v+w93pPuf2q1sx0=\nR:mongodbresources.go\na:0:0:444\nZ:Q1htRuBrh6bRn92MKVzht5niC7pxQ=\nR:notebookworkspaces.go\na:0:0:444\nZ:Q12dwwMYrJbNSN2n2nb8XscHYYDVU=\nR:operations.go\na:0:0:444\nZ:Q1h5FtzPfPOAi1L5tto8rgkOVeybE=\nR:partitionkeyrangeid.go\na:0:0:444\nZ:Q1TiPhTo7lxMVQb9a5EYE/4QG8qXw=\nR:partitionkeyrangeidregion.go\na:0:0:444\nZ:Q1bqwRYeJBtCLZAEriOmrZe+beFBo=\nR:percentile.go\na:0:0:444\nZ:Q1lpmyNVYzn3znDS3g/CnbzGXIrm4=\nR:percentilesourcetarget.go\na:0:0:444\nZ:Q1oa82Ig78BJew/R46JYuruXff4+I=\nR:percentiletarget.go\na:0:0:444\nZ:Q1RDL8D7oIiRlnuSwsd9TNnDNBEmM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1TK4ghR/uV8116kKb10BRUwUkDvI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1rz6VkKfstJ5v7mU2rgxC/WNZzsE=\nR:restorabledatabaseaccounts.go\na:0:0:444\nZ:Q11D6JrK/DQl5xi+nFfYht+OlPqXQ=\nR:restorablegremlindatabases.go\na:0:0:444\nZ:Q1D7YhR02KV5ITXVbKOlq3R/80ldU=\nR:restorablegremlingraphs.go\na:0:0:444\nZ:Q1+pNQfQe2S/RQ1CwvnVgPT5rnusU=\nR:restorablegremlinresources.go\na:0:0:444\nZ:Q1OznL6ibX0cdqEa38r7SSnNTMKCU=\nR:restorablemongodbcollections.go\na:0:0:444\nZ:Q1JZfpRwXPDsRRrxVrv9v64wb0Fw8=\nR:restorablemongodbdatabases.go\na:0:0:444\nZ:Q1trWfSTTcrxspgbtFFaGCOQsVhYg=\nR:restorablemongodbresources.go\na:0:0:444\nZ:Q1xpe2jSLbg2NtrUF3FVl/y/3MnNA=\nR:restorablesqlcontainers.go\na:0:0:444\nZ:Q1F2f3voKHdWkFyggR0qXrBaA4W3s=\nR:restorablesqldatabases.go\na:0:0:444\nZ:Q1cXsGEm62mn4wWxhBhd1gPIWo3c8=\nR:restorablesqlresources.go\na:0:0:444\nZ:Q1hMoMT9R7bU2OM2G3GwJHz8nearU=\nR:restorabletableresources.go\na:0:0:444\nZ:Q1hDjaxaHPmfajNNSWOeoE2yTMhfc=\nR:restorabletables.go\na:0:0:444\nZ:Q1JBLR+MYAlWeDpsp2YFZeBYvcIyM=\nR:service.go\na:0:0:444\nZ:Q1vHgRGpmFitqocMoDj/4H9fOZO5Q=\nR:sqlresources.go\na:0:0:444\nZ:Q1G+GkgUolf8wVV3qKsOvcuNN3URA=\nR:tableresources.go\na:0:0:444\nZ:Q1QNJuh8S3NeM39eXE7dsVYArr2gI=\nR:version.go\na:0:0:444\nZ:Q1hN1+Jz8t4UFqStBQgMDqIqbpG8A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/cosmos-db/mgmt/2021-11-15-preview/documentdb/documentdbapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q123TOKicOJpxKRXwMHVffWpHG6PY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2018-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zXJoPDqzS2Gn9D8KdrrFqobDoR0=\nR:alerts.go\na:0:0:444\nZ:Q1srCfA19NiU0cNxQsjRH8xL2SC1M=\nR:billingaccountdimensions.go\na:0:0:444\nZ:Q1bnXXmWGsVLHkjQwXhC3mRsNidgE=\nR:client.go\na:0:0:444\nZ:Q1j1rtAxlyJ5totsU13r0jxkuj3GE=\nR:connector.go\na:0:0:444\nZ:Q1L/bOL+Mc95R4Q5Ghxb19zY13XVo=\nR:enums.go\na:0:0:444\nZ:Q1CeXtE+hdnILIF7lVqASklDrtgAI=\nR:models.go\na:0:0:444\nZ:Q1tSub0BLTHx/vVWgOg8Hnrl9p4MY=\nR:operations.go\na:0:0:444\nZ:Q19bXszxx4xYL5D2oKxM0Pf3QgubY=\nR:reports.go\na:0:0:444\nZ:Q1nDOr7N5QvDXHig0JxeDVXI2sm+Y=\nR:resourcegroupdimensions.go\na:0:0:444\nZ:Q1v1/1ntDAvztkyzDR7i5m/Beh8HM=\nR:subscriptiondimensions.go\na:0:0:444\nZ:Q1benL4fmsk8rpKEOb5WUq99t0dCs=\nR:version.go\na:0:0:444\nZ:Q1ucH9XAXfHe+OZ3g3AnTKihLVCg8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LAdExUBGDQHBsAjGvvNws2qcitw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2019-03-01/costmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lC1gzrwZIxbFwIjY/+ZO/lkn4us=\nR:client.go\na:0:0:444\nZ:Q1sniPLTx5huqJGOlRxAjPXjDmhEw=\nR:cloudconnector.go\na:0:0:444\nZ:Q1YTizxpiA/qz5ETDTtX78F4Wbq78=\nR:connector.go\na:0:0:444\nZ:Q1f3zNYZyv6Ap7wsWCMhQ7wlUdXrc=\nR:dimensions.go\na:0:0:444\nZ:Q1cmqnTHpUVydigxhZnryNCZTD5vI=\nR:enums.go\na:0:0:444\nZ:Q1zWp/7QO8Mk85p0NucmnO0T/6+rY=\nR:externalbillingaccount.go\na:0:0:444\nZ:Q148F6lveKIns3dkKwIAh0r5Jkc74=\nR:externalsubscription.go\na:0:0:444\nZ:Q1QHXf9H2rCuw0hhmOS40lBcDAQLk=\nR:forecast.go\na:0:0:444\nZ:Q1e1J7Vm/ErkbJ+dNFdX8SIorbT2c=\nR:models.go\na:0:0:444\nZ:Q1quyOmWQeyqsQ+CIun9iLYa6HDfs=\nR:operations.go\na:0:0:444\nZ:Q1lNzxJ/OYF8RHwZSyw1Y6XyYwfY4=\nR:query.go\na:0:0:444\nZ:Q1lI3NeYF1Pf2HBrrEVlYlDrY361s=\nR:showbackrule.go\na:0:0:444\nZ:Q1fjk+ZC63nUS7L3oo6RHrJkL3er0=\nR:showbackrules.go\na:0:0:444\nZ:Q1aLGWlVF5jyNweyPxOiBpLZbawm0=\nR:version.go\na:0:0:444\nZ:Q100FpyueSqnqu99BZR5hp0VwGnbw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/costmanagement/mgmt/2019-03-01/costmanagement/costmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19xR3bdRG03BKc3G1ej5ZNmLL0cg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customerlockbox\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customerlockbox/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customerlockbox/mgmt/2018-02-28-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customerlockbox/mgmt/2018-02-28-preview/customerlockbox\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1N/WrgintL7hPJ7KhE3QUMY2Bg4k=\nR:client.go\na:0:0:444\nZ:Q1HHoxVy3Wfuj9QDkFBd+IKfJBewc=\nR:enums.go\na:0:0:444\nZ:Q1dCGNJTQT7Bl5tOTH9kMdnYYgYTk=\nR:models.go\na:0:0:444\nZ:Q1xB4vqFYszaGDazDXJj5YobT7WNQ=\nR:operations.go\na:0:0:444\nZ:Q1Tz2a3DHf5GQ/t7XJaJTnTUlDwyE=\nR:requests.go\na:0:0:444\nZ:Q1jT/EYCzcdeKR9rfAGY7RxhcW724=\nR:version.go\na:0:0:444\nZ:Q14i7gAqJElALxVYjbLkYsTR3svlI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customerlockbox/mgmt/2018-02-28-preview/customerlockbox/customerlockboxapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1c/6ctNhpxDwU41/QJCL2TYcs284=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customproviders\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customproviders/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customproviders/mgmt/2018-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customproviders/mgmt/2018-09-01-preview/customproviders\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vXe8JPqRHchdJpP73UeUdGoDY7I=\nR:associations.go\na:0:0:444\nZ:Q1RGsD0TxR8ds/H3FnG147xkfomUg=\nR:client.go\na:0:0:444\nZ:Q1ajhDMXJsDoFzqJ/qz4M1vjJa+kw=\nR:customresourceprovider.go\na:0:0:444\nZ:Q1WwFiQXk5PCS7yMcK7u2W+ajyJUY=\nR:enums.go\na:0:0:444\nZ:Q1nbRzm49CxGsnD5fpGvktu/FVFtM=\nR:models.go\na:0:0:444\nZ:Q1jQVmBFZv/4yR3PRDYHDgfFa/ehs=\nR:operations.go\na:0:0:444\nZ:Q1kPPP4dmtkiziFHkD6TN0tJw3MgU=\nR:version.go\na:0:0:444\nZ:Q1SRDtv0B/jpAp4ZYRQpo8ZKiz7yQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/customproviders/mgmt/2018-09-01-preview/customproviders/customprovidersapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nJoW5x5zDSY3HgqABtlQUn4OdJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/databricks\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/databricks/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/databricks/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/databricks/mgmt/2021-04-01-preview/databricks\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15QMkd5fxgv7nxFgiDQ4zTuxOhE4=\nR:client.go\na:0:0:444\nZ:Q1QlC2FcZQVZifh4/HZDOFN4DK9wQ=\nR:enums.go\na:0:0:444\nZ:Q1aTBGyjJ5xvslAEf1f+RfUGAquBE=\nR:models.go\na:0:0:444\nZ:Q1P4yBKsR4m5g5WXNKOsOReo3BQXo=\nR:operations.go\na:0:0:444\nZ:Q1h8xl2bpZkIsCIH+ccf5UQzQh5k0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1FihpdYfLZrlLEegpfhHH8kqtqe8=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1CNQ8WCNIlMgxPA4jQJrDuuNiunI=\nR:version.go\na:0:0:444\nZ:Q1n4NniJ9JGjRKTLJGyG9GIQKCmO0=\nR:vnetpeering.go\na:0:0:444\nZ:Q1BThn6r+w/QrcRAhbg5k07r1UNOI=\nR:workspaces.go\na:0:0:444\nZ:Q163FVavNwgBnaELgULWAKzjKYJkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/databricks/mgmt/2021-04-01-preview/databricks/databricksapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1b83lrdNOVtRi2St26f/4td5OSJo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datadog\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datadog/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datadog/mgmt/2020-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datadog/mgmt/2020-02-01-preview/datadog\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1i3HCmQSSg50V+znt4cR3rTVwtAA=\nR:client.go\na:0:0:444\nZ:Q1AL+2QIV9bZZG6kmwX7erGBI85EU=\nR:enums.go\na:0:0:444\nZ:Q1RlY2gxoet+8N8eo+rCoRNPw0QlA=\nR:marketplaceagreements.go\na:0:0:444\nZ:Q1FI0NokeVZ3sjFMj8qFzBS7HNkUk=\nR:models.go\na:0:0:444\nZ:Q1mZOOviJu/oQV8lML6eknhgr05YY=\nR:monitors.go\na:0:0:444\nZ:Q1y/bXtLSnqxZxoumd4nhFgshG54Q=\nR:operations.go\na:0:0:444\nZ:Q1y9cY+EWPbZCxh/T7wAFSwFpr/AI=\nR:singlesignonconfigurations.go\na:0:0:444\nZ:Q1pJr2nj4glbNHnUdydG6YQgEp940=\nR:tagrules.go\na:0:0:444\nZ:Q18K7qBymKF7c/rSTebIGqd3zBUqo=\nR:version.go\na:0:0:444\nZ:Q12z+eLkRUXiVxodMH6RsTrEucyQA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datadog/mgmt/2020-02-01-preview/datadog/datadogapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19EAC5g2aKrlF0k9Ad174EBEACog=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datafactory\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datafactory/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datafactory/mgmt/2017-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datafactory/mgmt/2017-09-01-preview/datafactory\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bVgySZGA/C+dxnzLl7Vvu1iAJBI=\nR:activityruns.go\na:0:0:444\nZ:Q1FOZTj8DJ5krCVIpjHt/vGJWInMs=\nR:client.go\na:0:0:444\nZ:Q1R8f8YKyFaGONiioUGor0oRA8l+8=\nR:datasets.go\na:0:0:444\nZ:Q1e78Y/i6ajNURogYou9GSuXcPju4=\nR:enums.go\na:0:0:444\nZ:Q1mvD+kKOWWDX3R2bfweTkxvzhytI=\nR:factories.go\na:0:0:444\nZ:Q1AbcMF+TVe6pvqiFSxkmvtNeEHZI=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1sU+g8w/nLxpVJv2+F7zzmI05v+s=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1+Rw0Q94Vw9wxtAkH8yyfOu/Sxvc=\nR:linkedservices.go\na:0:0:444\nZ:Q1NOXla1KQipUlU9zxaBn12AnvTkM=\nR:models.go\na:0:0:444\nZ:Q1m7yS5ib1T2KJ7TYfeL4Cfc6iCqM=\nR:operations.go\na:0:0:444\nZ:Q15RTE0Z40afVNjH/ZY7J3s9h+2uQ=\nR:pipelineruns.go\na:0:0:444\nZ:Q1cdjneNz6/k0rL3yYeaoFquhL09c=\nR:pipelines.go\na:0:0:444\nZ:Q1Bh9d7X5VFYOdyX2iHiFyib7eUsE=\nR:triggers.go\na:0:0:444\nZ:Q1LrzNEKxvUx6C/orhV64klYpyEQ4=\nR:version.go\na:0:0:444\nZ:Q1kNHHN73KCzO2iHbxR5gyGXxC1jw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datafactory/mgmt/2017-09-01-preview/datafactory/datafactoryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17HifKyMovbAQyomLx671YKTgqzM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-10-01-preview/catalog\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:catalog.go\na:0:0:444\nZ:Q1bq5LLo7vhHtA+DKXTP6GXFfZd30=\nR:client.go\na:0:0:444\nZ:Q16/r2FhA2MoiLN33Fa7dtTFlBjTg=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1/Q22qxd33CqJbOnqHVIUtveLgkU=\nR:enums.go\na:0:0:444\nZ:Q1HAmjzvEkerDPd8GMDO04gp0o/gs=\nR:models.go\na:0:0:444\nZ:Q1g9oUyCsjVoizls6ROr3mYRDTces=\nR:version.go\na:0:0:444\nZ:Q1Aw+0QmAA4gC2jXn5OqBHmRRNmxQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-10-01-preview/catalog/catalogapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/BtR64MfIfQks20Z+bH8PAsnVxQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-11-01-preview/job\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q18MxVTCcpVQYBIvaPQRWpO5EzQaY=\nR:client.go\na:0:0:444\nZ:Q1iDoc4KkPSlSVGwRBLYvSW0UpMyo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1JHay0WRwIZriblGtP0tjgUsMLoU=\nR:enums.go\na:0:0:444\nZ:Q12zvePnR5UNNphzWDAiCV+syLQU0=\nR:job.go\na:0:0:444\nZ:Q10ljSw5dn3fErA4nl+NVjLOzpBn4=\nR:models.go\na:0:0:444\nZ:Q1Lz+j9pstlaI7RzqVY1j0zstKUcU=\nR:version.go\na:0:0:444\nZ:Q1X5LPRtPvn5uK67KVMpZo+NgqIa8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2015-11-01-preview/job/jobapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fecv1TLwCYPuKSfDnHkblt6F91Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2016-03-20-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2016-03-20-preview/job\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q152wkLHZI8tCVLWMQUAxFnBUYrTw=\nR:client.go\na:0:0:444\nZ:Q1nsBsR3LZkdVHglNccFPhkyxKxLc=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1k29+Iha7wbzkStgBJ5iZXtiqKzg=\nR:enums.go\na:0:0:444\nZ:Q11oX5udenYjd3ksG3QH0WG6+Z0og=\nR:job.go\na:0:0:444\nZ:Q1nvYTL4xXTw9VMQYs2J8z282ubUE=\nR:models.go\na:0:0:444\nZ:Q1DmqPE/NQj5gllb0WhHEaqKsTgIQ=\nR:version.go\na:0:0:444\nZ:Q1E0vGDiQ82GuQZGDesP+ugMSk0jU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2016-03-20-preview/job/jobapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16hUehsSeJe28yPBW5+biA/e+zMk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2017-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2017-09-01-preview/job\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1YiTXjg4i4cSPaM6+pxKuo4R+Uik=\nR:client.go\na:0:0:444\nZ:Q1sGusYvhIsd7FBU3KZru18zrxuj0=\nR:dataplane_meta.json\na:0:0:444\nZ:Q19vgYp/p21lKdUcJfzgPTC6G9JV0=\nR:enums.go\na:0:0:444\nZ:Q15i6jys2WiJuW4wR7R7EA9JkZO1k=\nR:job.go\na:0:0:444\nZ:Q1Rn9qY6xFAIqI8C5iQDxHcdmHNqE=\nR:models.go\na:0:0:444\nZ:Q1zRZAyD4rSLLniNFss30/Pl/efKA=\nR:pipeline.go\na:0:0:444\nZ:Q1ozKRn4puCuM/6SrYVQTV3azKg/c=\nR:recurrence.go\na:0:0:444\nZ:Q1mW3lZmF2tRQxj5PULLHyJcozhOQ=\nR:version.go\na:0:0:444\nZ:Q12qMRUwrGOXLBrUlOHDqdDJQfrxA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/2017-09-01-preview/job/jobapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1P1Y+xrw7E5hWmgwRQ70+2DmX2V0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/mgmt/2015-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/mgmt/2015-10-01-preview/account\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/wA523qRcXlkyfZ2uJuT1FtNu+0=\nR:account.go\na:0:0:444\nZ:Q1Yl4GrbwaybLj9Au69vV3IC6p5Vw=\nR:client.go\na:0:0:444\nZ:Q1rpoU6jxPMfEE1VTnFJseBVwP1hI=\nR:enums.go\na:0:0:444\nZ:Q15V/q+WnqAObO7edPQorzTjXpbpk=\nR:models.go\na:0:0:444\nZ:Q1k3V0H1MyjpaWZKEmCS6zYkEr1H0=\nR:version.go\na:0:0:444\nZ:Q15xQ7efWUNQZ5soynA6IygKOM3tg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/analytics/mgmt/2015-10-01-preview/account/accountapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1bzkDuQcXiwFX/HXCOTTFzIwAsss=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/2015-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/2015-10-01-preview/filesystem\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1+b+OaIwHc38tOVdc9kTiyQMfMaI=\nR:client.go\na:0:0:444\nZ:Q1SYShzXoKOkWMRCKYdGaBObJdsKQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1zLwV2+59sxRS8rFGnUOE8AfTxuE=\nR:enums.go\na:0:0:444\nZ:Q1PpEDQRjoRWeujJGPvEfsjV1qZos=\nR:filesystem.go\na:0:0:444\nZ:Q1VZ/BxWVPp2wnCcvhPyZ+zqWMJCg=\nR:models.go\na:0:0:444\nZ:Q1Su3foGncmBTwaRRSZsURRv/ufeM=\nR:version.go\na:0:0:444\nZ:Q1F9j1dicuZgX6YifEbge7t+CWQYs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/2015-10-01-preview/filesystem/filesystemapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ybrLdhky5HZMbozZHxPyDlEXsto=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/mgmt/2015-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/mgmt/2015-10-01-preview/account\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WOylCoJ5fkX37o45VeEcgslHymI=\nR:account.go\na:0:0:444\nZ:Q1QTmtpiKL5NQzU0HLkqnKfBiHBaM=\nR:client.go\na:0:0:444\nZ:Q171+X170W+AZnUmly6haxHJN5kM4=\nR:enums.go\na:0:0:444\nZ:Q1JKD4KCDZmDGZUkmDPHPRMlVqy30=\nR:models.go\na:0:0:444\nZ:Q1CxqN5gJhpPjERpo5ui3t4jsVfSE=\nR:version.go\na:0:0:444\nZ:Q15xQ7efWUNQZ5soynA6IygKOM3tg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datalake/store/mgmt/2015-10-01-preview/account/accountapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JjI4XPiVednkuNxyW0WLjQhqgBQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-03-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-03-31-preview/datamigration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UlMFQIrtJiSgCSvRoeGHnPaIhe4=\nR:client.go\na:0:0:444\nZ:Q1hSR0H6BJuuSXEBSNY2Brxd0nT9U=\nR:enums.go\na:0:0:444\nZ:Q12QT/PJWPotMvWZmLtOtq2OKiIeU=\nR:models.go\na:0:0:444\nZ:Q1H9hT6cu9YkuPJdsBrh+cuCkrFl0=\nR:operations.go\na:0:0:444\nZ:Q1kukbfRWEOHXadoIelqpWTaTM7VU=\nR:projects.go\na:0:0:444\nZ:Q1uFjhIIfE275ulLA43Ft5So4nuo4=\nR:resourceskus.go\na:0:0:444\nZ:Q1TImwxzEIissDOOsM4hl8axJ4sj4=\nR:services.go\na:0:0:444\nZ:Q1tORUQCSWEpgYdOAGpOYgDk2VkXU=\nR:tasks.go\na:0:0:444\nZ:Q1s8spbAcgyuk8mHCQCJ9081k43EI=\nR:usages.go\na:0:0:444\nZ:Q1Ca4U205lvVm06gCxqFdHnLuJtZo=\nR:version.go\na:0:0:444\nZ:Q1DSyuqQjAs9VMmKnbipZ3eRoK8vk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-03-31-preview/datamigration/datamigrationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1h+QvjIBswQPWKDMayfcisq53qyQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-07-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-07-15-preview/datamigration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wjtYF1bkNL9o2b/3nzLpzft89U4=\nR:client.go\na:0:0:444\nZ:Q1qvITfvYS6khIQwK6aAzLtaSl5nM=\nR:enums.go\na:0:0:444\nZ:Q1rRmkId3NXLZPpZrv3CNz095xgdI=\nR:files.go\na:0:0:444\nZ:Q1uRA+Q5oelsCSOt4UrjPEuNkdgOw=\nR:models.go\na:0:0:444\nZ:Q1IKC6xjZOcX42+0EmH8WHiwQn5sE=\nR:operations.go\na:0:0:444\nZ:Q1S+4o4kKpoLKCz6jF4RlFadS7p6M=\nR:projects.go\na:0:0:444\nZ:Q1j8kS5EAenb+fOWLS3JJ5WxDt7ok=\nR:resourceskus.go\na:0:0:444\nZ:Q18dnV7N2WanA7dQK5Gj6WP1H4QXU=\nR:services.go\na:0:0:444\nZ:Q1G0PahBRUHNsXdfzfXyScY6Cez8U=\nR:servicetasks.go\na:0:0:444\nZ:Q17UbX9+kZQQ+g0I7v9KpE7a/DsJw=\nR:tasks.go\na:0:0:444\nZ:Q1LlDoSQcv84Xz2KVSSn5BmXnXK6I=\nR:usages.go\na:0:0:444\nZ:Q1AA9upy4IugEIFBAgkRo/saBVZfM=\nR:version.go\na:0:0:444\nZ:Q18giEqHOv8tWzotdeEcbt+5j6SVw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2018-07-15-preview/datamigration/datamigrationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1AEUIUDemKX1T+aT5o3w6KZdAsB4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2021-10-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2021-10-30-preview/datamigration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yngZB7WcRNzY4QFHHN/NE5uLztQ=\nR:client.go\na:0:0:444\nZ:Q1pSfRNvMl6uuIV9Dq6Ovfb9xg30M=\nR:databasemigrationssqlmi.go\na:0:0:444\nZ:Q1nNVpmBdVqGhimUIcLElYap6OtsY=\nR:databasemigrationssqlvm.go\na:0:0:444\nZ:Q1vaUI8eWAo9QMl82VnOkn3qAIHZo=\nR:enums.go\na:0:0:444\nZ:Q1UHIRlh+OgMhM2BC//aB4CHSUWcs=\nR:files.go\na:0:0:444\nZ:Q1zbTCTs+eXpzCbwOr3RxaoyzNADs=\nR:models.go\na:0:0:444\nZ:Q1whCq9gXdiSXa9G2AhQdJ4dKj2f8=\nR:operations.go\na:0:0:444\nZ:Q1g2CzLwJbdQZnQfjXyG5PQrX+D0k=\nR:projects.go\na:0:0:444\nZ:Q1XjHQEKR7Pn9iqv+jPCZ0peCitog=\nR:resourceskus.go\na:0:0:444\nZ:Q1v31gDjubkWc/+E3/8mtPO7FfQ7s=\nR:services.go\na:0:0:444\nZ:Q1z2x2ykDDg3NoPhMIx9Ngy2ePBQc=\nR:servicetasks.go\na:0:0:444\nZ:Q1E/Z4M0MP0LZaDj5qcuWONeWMGXM=\nR:sqlmigrationservices.go\na:0:0:444\nZ:Q1I6UtP1csq/EM+o7R38YJNHKdzag=\nR:tasks.go\na:0:0:444\nZ:Q1eObSZwjkQEQ9hFpeGaX6ghDoCTU=\nR:usages.go\na:0:0:444\nZ:Q1c+x4d8Z9R6V3KJx+eJ5pzhrxSlw=\nR:version.go\na:0:0:444\nZ:Q1amWtwiZ18xHdh9WfRJxEHwHrhqY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/datamigration/mgmt/2021-10-30-preview/datamigration/datamigrationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10Gg7H9rNqG5xXo+i4xsfDoDytJE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/delegatednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/delegatednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/delegatednetwork/mgmt/2020-08-08-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/delegatednetwork/mgmt/2020-08-08-preview/delegatednetwork\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Xw6dBOON/NHKTNFHrs/26NGgdLs=\nR:client.go\na:0:0:444\nZ:Q1pNCOki7DG4HG7vD4gBI0w7weANA=\nR:controller.go\na:0:0:444\nZ:Q16NjsXmC2EvnYidxCXvju0H1dKfI=\nR:delegatednetwork.go\na:0:0:444\nZ:Q1Mu6ITsRecWBuNzwqBoHMMjCVnDA=\nR:delegatedsubnetservice.go\na:0:0:444\nZ:Q1hpm1Uuhg9zo8CxPAkUGKzd1Uvao=\nR:enums.go\na:0:0:444\nZ:Q1qVkHXQ83CH/g3j4RuVkCnA+/Klk=\nR:models.go\na:0:0:444\nZ:Q1a5tnDNaULHs/OimwQILpOdU3jbU=\nR:operations.go\na:0:0:444\nZ:Q1M114P32q2IbZI7ESF4v4yAcG/pQ=\nR:orchestratorinstanceservice.go\na:0:0:444\nZ:Q1GsLu3AGSo7BbkykM8ZJ3EgaqTBs=\nR:version.go\na:0:0:444\nZ:Q1xeDZvWrWLp4MrIqdJl1xghoJ5nY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/delegatednetwork/mgmt/2020-08-08-preview/delegatednetwork/delegatednetworkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wqL1JoqIltdRk12ZSVlaTXjRj80=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deploymentmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deploymentmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deploymentmanager/mgmt/2019-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deploymentmanager/mgmt/2019-11-01-preview/deploymentmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TX7v/Xqcz4FvqpLdtE0QawGP9G4=\nR:artifactsources.go\na:0:0:444\nZ:Q1GFdn6EH71BEJAM6kibznrApHE08=\nR:client.go\na:0:0:444\nZ:Q1j6uo5zR1k+aBIy0BStQKgynJayk=\nR:enums.go\na:0:0:444\nZ:Q1aSlqVJVaAklyDedF6Jlfv1AbgL4=\nR:models.go\na:0:0:444\nZ:Q16OGEOGENTOVahiXhfD5q2AdfHSs=\nR:operations.go\na:0:0:444\nZ:Q1a45kfNq0eAJ3cGtJmrzs9qvnOkw=\nR:rollouts.go\na:0:0:444\nZ:Q1PGISs/kNwC19jGDuGpjirxV5SPU=\nR:services.go\na:0:0:444\nZ:Q1dTjOEwXDxihyzit7wPvc3P1G9t4=\nR:servicetopologies.go\na:0:0:444\nZ:Q1xaU8V1eTx61mqwJmT4WwWiMxKJ8=\nR:serviceunits.go\na:0:0:444\nZ:Q1VvX6f50s5qv68xO+SmtF4Oeb8h0=\nR:steps.go\na:0:0:444\nZ:Q1BoSpT15Sh4dpYrQADqetRG8B3pU=\nR:version.go\na:0:0:444\nZ:Q1ahHtcY0u+h5rjaReviyP8AU/x9Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deploymentmanager/mgmt/2019-11-01-preview/deploymentmanager/deploymentmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1m61bkVvorX7Pne+p73VLkyCfARA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2019-12-10-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2019-12-10-preview/desktopvirtualization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KLReFQOH8GFH9FvJfC2OG6rrIlo=\nR:applicationgroups.go\na:0:0:444\nZ:Q1Yg7R08nQ4PTAvLrnh2h8sG0nzO8=\nR:applications.go\na:0:0:444\nZ:Q1OooPI5aEa89kQx5eFMRsgSSn1hk=\nR:client.go\na:0:0:444\nZ:Q1g1mgHeVYAE5UegnqGeGyI+bmUw0=\nR:desktops.go\na:0:0:444\nZ:Q1xaVNrS4mavZHSe6MVM51HhNmnPs=\nR:enums.go\na:0:0:444\nZ:Q1prAZ3vUPrsRXJiGt2ehDJt/4R5Q=\nR:hostpools.go\na:0:0:444\nZ:Q1t7hCU+K/a8LEX1Xc30clodDGNwg=\nR:models.go\na:0:0:444\nZ:Q1Av+1hIf1v4nMEMqGqFsjTD2/7YQ=\nR:operations.go\na:0:0:444\nZ:Q1EfF2sfL3DmU5YCr8ZLkOj2lq1C8=\nR:sessionhosts.go\na:0:0:444\nZ:Q1jcP3W8mOYGNFO/X9HRw5zqQcrNM=\nR:startmenuitems.go\na:0:0:444\nZ:Q1ErsiyJwhioxIDOhu5MaxGaXCl1A=\nR:usersessions.go\na:0:0:444\nZ:Q1SRVXlC7eSJfuE0sqvDM2sA7+IjE=\nR:version.go\na:0:0:444\nZ:Q1p3oqil6c8CCxo+gb4qktrJEX9aM=\nR:workspaces.go\na:0:0:444\nZ:Q1NlxxAyJPOA89nK6lnOquYd/NaWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2019-12-10-preview/desktopvirtualization/desktopvirtualizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dSVHkI/WHWFqcUeoYvGUqamui4Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-10-19-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-10-19-preview/desktopvirtualization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1tQ/fhOYo/K0DVj04mWZsA80QmD4=\nR:applicationgroups.go\na:0:0:444\nZ:Q1c8fjKTLbOiSxAvDqEWsehOi842I=\nR:applications.go\na:0:0:444\nZ:Q13KTV11MKEIsBxiMQLtxy45Ic7oA=\nR:client.go\na:0:0:444\nZ:Q1mEZJBxXCKsl2PYXZ3sWrAMyWzcQ=\nR:desktops.go\na:0:0:444\nZ:Q15hix5DTqdJfwgeawAwe/yTse7O0=\nR:enums.go\na:0:0:444\nZ:Q1QhNqi0me6IRBsX+VYFG6lTrsJvI=\nR:hostpools.go\na:0:0:444\nZ:Q10SSl2w6oVjABBr5CzHVY+RpdM88=\nR:models.go\na:0:0:444\nZ:Q1ZH1Cye/2fOF/MG9mBI7jDSY1BU0=\nR:msiximages.go\na:0:0:444\nZ:Q1pIm7XcgGkyhJ1dHInlTUZ2GaJQ4=\nR:msixpackages.go\na:0:0:444\nZ:Q1i+ve+SvRpCNbZWDQ6FNsNoNSnAM=\nR:operations.go\na:0:0:444\nZ:Q1p2yuXaJaGOlfIv7HZpKmvbCmh6s=\nR:sessionhosts.go\na:0:0:444\nZ:Q1m28+cXKcFLabYN9ykrStnmTlApk=\nR:startmenuitems.go\na:0:0:444\nZ:Q1lftBsqfH+BWfTfp1aEe9r0gdTPo=\nR:usersessions.go\na:0:0:444\nZ:Q1yCQ1dIfZ24xaKr6OfqyLmN5up2s=\nR:version.go\na:0:0:444\nZ:Q1qr83pMUQW/H4p7oQ0H59wUwFwmw=\nR:workspaces.go\na:0:0:444\nZ:Q1SVyXKGBb6Wfr6sx9SD/8Fjc80io=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-10-19-preview/desktopvirtualization/desktopvirtualizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ioImuong7oAK+cgVjl/ltSILwTA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-11-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-11-02-preview/desktopvirtualization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17/peAPyYUTKDaiHi57wymGo+RsQ=\nR:applicationgroups.go\na:0:0:444\nZ:Q1EXBSMUz4rDC23vb27/Teb4qLuzA=\nR:applications.go\na:0:0:444\nZ:Q1MbO2+Fzf/iXnMukbt8h06m6prxY=\nR:client.go\na:0:0:444\nZ:Q1Sbml4ndf8QjhsDDXb2vISRINUjE=\nR:desktops.go\na:0:0:444\nZ:Q16/9ELZsfJXAncFub3NhGbLVJ9W4=\nR:enums.go\na:0:0:444\nZ:Q1QhNqi0me6IRBsX+VYFG6lTrsJvI=\nR:hostpools.go\na:0:0:444\nZ:Q1G4LdV7oDCVOeBUuQwo9aE55+jRE=\nR:models.go\na:0:0:444\nZ:Q1uDNqIeKEbCSnnantpsCA0wTEO14=\nR:msiximages.go\na:0:0:444\nZ:Q1AlC87NNuO6MgFa5W4Pv0n8T1WZs=\nR:msixpackages.go\na:0:0:444\nZ:Q1KBYp7E5NhduzyLvHe1NtmDQyXV0=\nR:operations.go\na:0:0:444\nZ:Q1ECSQ96fsK0gqklNHuRTssfJr6w8=\nR:sessionhosts.go\na:0:0:444\nZ:Q1kvxw/zMajH+MDhfDgA78TnkomUQ=\nR:startmenuitems.go\na:0:0:444\nZ:Q1Uq6R0w2USz/DubxUNAKesDYVvwI=\nR:usersessions.go\na:0:0:444\nZ:Q1nvYcg9AL6S4m0Tqne6EEp7xggmo=\nR:version.go\na:0:0:444\nZ:Q1VXi67Xpey7BSuNUND+LVp+AP1/Y=\nR:workspaces.go\na:0:0:444\nZ:Q181oc0kUHI2ZJRg9Ny73y6wvt63g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2020-11-02-preview/desktopvirtualization/desktopvirtualizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IWwTwZ/ndIvIaDbKRubgHHpHknM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2021-09-03-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2021-09-03-preview/desktopvirtualization\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1MS8tT+c72vgjHpYDIs3hpbW1xSc=\nR:applicationgroups.go\na:0:0:444\nZ:Q1Y/ptGA6ufvsIfA+G4PERfdCldIg=\nR:applications.go\na:0:0:444\nZ:Q12R4G3WGdIJlP9UcPhKRKx+uKAj8=\nR:client.go\na:0:0:444\nZ:Q19VG5TkaAqixpCCnKiqbZBFN2kEw=\nR:desktops.go\na:0:0:444\nZ:Q1rllWtTQZv2NKcjme5SYM5G2FJhk=\nR:enums.go\na:0:0:444\nZ:Q1yQp0kYgVN3cPe38w4/mwHthdXgY=\nR:hostpools.go\na:0:0:444\nZ:Q1O1AsU17in11kDXBC2aTkUzvBrqs=\nR:models.go\na:0:0:444\nZ:Q1kiAd0ClFg+b8AapSdCruMazIwBE=\nR:msiximages.go\na:0:0:444\nZ:Q1B5dDLO7QRj58+3JjN1oyWHGrB2Q=\nR:msixpackages.go\na:0:0:444\nZ:Q1lbrCwpe2BNiP0hEr7V2H9qbQeuU=\nR:operations.go\na:0:0:444\nZ:Q1v8P/usKbyZmanH3UuOLPYjCNXvQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q17FwakXdoxPXyHuS7vp+sLioPVyA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q18XaLI1fKNHmpbQNiL/fRohtca6c=\nR:scalingplans.go\na:0:0:444\nZ:Q1+6AOBsxDaiViJX2CLD8CVOzCs3U=\nR:sessionhosts.go\na:0:0:444\nZ:Q1ev7trFVAx67bJCEnp7S4zSMZ/3s=\nR:startmenuitems.go\na:0:0:444\nZ:Q1PQ/ro8KQ44s3rRTuz1r20zDvjVs=\nR:usersessions.go\na:0:0:444\nZ:Q1dtBnkI0MMv+LvXrornVdxW+0VI4=\nR:version.go\na:0:0:444\nZ:Q1z1shweyMo9UBJQ6sf774u9RoIho=\nR:workspaces.go\na:0:0:444\nZ:Q1VWY9XXjlw6t3jInwH/g2UCa0d30=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/desktopvirtualization/mgmt/2021-09-03-preview/desktopvirtualization/desktopvirtualizationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fSIXszNB1jY++NMhiHDT87EA3v8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2020-03-01-preview/deviceupdate\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q12kbJ66gCNkOwqbYcqDjB7w8eNx8=\nR:_meta.json\na:0:0:444\nZ:Q1Dig5t44c3JsRIaKtRPh5lQXly14=\nR:accounts.go\na:0:0:444\nZ:Q1uRHm1d67otTY+OkVf+Xusvdg4DA=\nR:client.go\na:0:0:444\nZ:Q1+PEZGHkr6gqMbeTbkh5YaMDKkQk=\nR:enums.go\na:0:0:444\nZ:Q1bb/wfAyn8sJOtW0+8zmLGbwvZko=\nR:instances.go\na:0:0:444\nZ:Q1vjEnyUwiI3t9lh1FTlPAFxIJ6Kg=\nR:models.go\na:0:0:444\nZ:Q1hk2+CjVhBQWhqgKE/A5LC5jTAn4=\nR:operations.go\na:0:0:444\nZ:Q1uLob67LkSq8G7Bn9wnDA5vmar0M=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1KkbmUzBijsaZK02g/A4FZiROP0s=\nR:privatelinkresources.go\na:0:0:444\nZ:Q16iUjjLyodaOKQczbAJXUpL76Tp4=\nR:version.go\na:0:0:444\nZ:Q1W77zfHZ2cRkHbD3CZZPRCRbHuoU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2020-03-01-preview/deviceupdate/deviceupdateapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LrABsMUaE5DEMpZYSeOhQjic0cI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2022-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2022-04-01-preview/deviceupdate\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18fe04waNyZfMxSDgH5BjW70g2F8=\nR:accounts.go\na:0:0:444\nZ:Q1dqAzpKSlGolFbRirOFqbM7UmfVA=\nR:client.go\na:0:0:444\nZ:Q1nwowbBO1synIa53klHDbgXHvsmo=\nR:enums.go\na:0:0:444\nZ:Q1i2cruGYhKxvonqq4sfQdtWCnnkc=\nR:instances.go\na:0:0:444\nZ:Q1EwkYDdA8qiQNbXVXPmjyjzWKlrk=\nR:models.go\na:0:0:444\nZ:Q1zVoLAO8Mb7h5siy503r9+Uuh8Q4=\nR:operations.go\na:0:0:444\nZ:Q1s/+1sNCogL5GVC9G+qrDuPXUqIA=\nR:privateendpointconnectionproxies.go\na:0:0:444\nZ:Q1F6JKLD/tWaPPYNJrJfOTJ+pRrqU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1hwT5g7yQHgO0qJ63x3ZkaNJboHw=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1tjEK1tJDBDHBsk/SAvLOpt828RY=\nR:version.go\na:0:0:444\nZ:Q1UwrHcd7yEGgilYcDj9gR0ykmrJ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/deviceupdate/mgmt/2022-04-01-preview/deviceupdate/deviceupdateapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Dv6jpTJ73g+DBX1gs3SMDPVIvg4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devops\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devops/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devops/mgmt/2019-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devops/mgmt/2019-07-01-preview/devops\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Q/6TFruqow5SxYEK/3rX8ILla4Q=\nR:client.go\na:0:0:444\nZ:Q1exM7fp37bOh0tPg1qIsFmSSgK/0=\nR:enums.go\na:0:0:444\nZ:Q13w3xZQR90Wkxy9chq/oqMHWU9Pc=\nR:models.go\na:0:0:444\nZ:Q1TcR50dOY2FRoiNxMuYuVXCBa+QE=\nR:operations.go\na:0:0:444\nZ:Q1ukeZBEXGbbaekXJLg/UJ2EXVRKo=\nR:pipelines.go\na:0:0:444\nZ:Q1LSpLVMIbRZfogZIUJSWw9lpAlTY=\nR:pipelinetemplatedefinitions.go\na:0:0:444\nZ:Q1cRXHFgS6cidWBjxCIFtDS4qUQHw=\nR:version.go\na:0:0:444\nZ:Q1eclgLs0le9rGt/76fy1HZdKp32Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devops/mgmt/2019-07-01-preview/devops/devopsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fvIHIjAF6MrmWgcUSQ+vAPaTc6w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devtestlabs\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devtestlabs/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devtestlabs/mgmt/2015-05-21-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devtestlabs/mgmt/2015-05-21-preview/dtl\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1PQnXxD3kSc0SMUnZ/qBJNMdFANg=\nR:artifact.go\na:0:0:444\nZ:Q1U2Jo1RIjkGzAtYo4Iturj1aarzc=\nR:artifactsource.go\na:0:0:444\nZ:Q1x/duTTIYm1TPHIn/T+BI4AsSpyc=\nR:client.go\na:0:0:444\nZ:Q1YZSN2iA/tWh9RFeSRtRwkktoaHc=\nR:cost.go\na:0:0:444\nZ:Q1CTSEPfGf7dhCwPDLwKCt92Jfv9Q=\nR:costinsight.go\na:0:0:444\nZ:Q1rzKpQrRLOhSptE6mixjKde9VukE=\nR:customimage.go\na:0:0:444\nZ:Q1ES1wMXwIdJFByRIHOVIUu2ukFjM=\nR:enums.go\na:0:0:444\nZ:Q1nmYtq++xtWxlX9ERwgzD2lfsMo4=\nR:formula.go\na:0:0:444\nZ:Q1UGvfN/iXCEuz/GtRYSJyWu2eiJk=\nR:galleryimage.go\na:0:0:444\nZ:Q1ELa5GPcxXOLMs7KPpqVFnj+AtGY=\nR:lab.go\na:0:0:444\nZ:Q1p/wW4K3Ku+sBzm5Oe/Ohcl6777s=\nR:models.go\na:0:0:444\nZ:Q1Vteinl8OFotj9JbaHm4+Udc7/RE=\nR:policy.go\na:0:0:444\nZ:Q1t6xeiwsdxtnVYqGs1cqTKe7h1Eg=\nR:policyset.go\na:0:0:444\nZ:Q1MzpUAW+yf+gqcDq25V0579WJ/Y0=\nR:schedule.go\na:0:0:444\nZ:Q1iWdR8flvvlUXk5IzQcBAM6G5PZQ=\nR:version.go\na:0:0:444\nZ:Q1oWfeT0iK+R31UYDGFMF9BvYHZIQ=\nR:virtualmachine.go\na:0:0:444\nZ:Q1uPzT/hjhNdrG8o7JC8fXbNZ5JJA=\nR:virtualnetwork.go\na:0:0:444\nZ:Q1Y/iXKCnalYZfPrxmknHVhy8kItY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/devtestlabs/mgmt/2015-05-21-preview/dtl/dtlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QTyTrA6yiebvDJ1SMkevKTzkmRY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/2020-05-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/2020-05-31-preview/digitaltwins\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1yuB799/LxvUWvwCwFOGiYXaqY1w=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1gayZFIZiulYl5E48j4VfG/0sJ00=\nR:digitaltwins.go\na:0:0:444\nZ:Q1tQInvhuyVhBWO+8UHQw7cl4IxQo=\nR:eventroutes.go\na:0:0:444\nZ:Q1TfY55dGFy40009piz8EWjHYU5eM=\nR:models.go\na:0:0:444\nZ:Q1ZWp1wwxPDQfZ1YB+vHBQlnJmDs8=\nR:modelsgroup.go\na:0:0:444\nZ:Q1rrX/HqKnFXPQ+tBXZ2r6eKq5k1A=\nR:query.go\na:0:0:444\nZ:Q1J5Ft2xPtM6KAAzKC26ypvFAvq1g=\nR:version.go\na:0:0:444\nZ:Q1ezWIzJagOT3YPrbRaoZGSa2bR7c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/2020-05-31-preview/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1eu56nm3rKsmfkgKtuBE51sa7C1s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/mgmt/2020-03-01-preview/digitaltwins\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11ScuoQg9yCCD8o8oGGU3X4N7DX0=\nR:client.go\na:0:0:444\nZ:Q18AV1oH/jiJ0v9bJ8fn1dFKmLKT4=\nR:digitaltwins.go\na:0:0:444\nZ:Q1TRiBhkc0pClLW4v9Q8Lq7wMUZ7s=\nR:endpoint.go\na:0:0:444\nZ:Q1gZXN7rFYeNKNnmhihEjj+dPinLo=\nR:enums.go\na:0:0:444\nZ:Q1gou2bLxGopG1VTImzJLORa8dc54=\nR:models.go\na:0:0:444\nZ:Q1xSwwbEYbcT2ESEa6qkv/2pTuKdA=\nR:operations.go\na:0:0:444\nZ:Q1KmugpxFECVzu5ZoeRxN7ghwYBeM=\nR:version.go\na:0:0:444\nZ:Q1ebCSf5KfhVxT7FgUvJQ3+RUzlL8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/digitaltwins/mgmt/2020-03-01-preview/digitaltwins/digitaltwinsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wSsfA5f9Tg1eYHEI5sFLzfExtso=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2015-05-04-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2015-05-04-preview/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vEyqqCxg7sEXxhJ0tzEhLmlXC0A=\nR:client.go\na:0:0:444\nZ:Q182iKIgDT3bn781ytsj3/t+S8IO8=\nR:enums.go\na:0:0:444\nZ:Q11QeeZwSwozQFPt8KQBmxrU6Lm1o=\nR:models.go\na:0:0:444\nZ:Q1d5Rfe9JCvvKsvIsTkIxVJLE2GKE=\nR:recordsets.go\na:0:0:444\nZ:Q15bfIAt9C1/Gc2LMRCyQ18z8f30k=\nR:version.go\na:0:0:444\nZ:Q1l82JUtUjWR7EcHgPViLpwhCo1eQ=\nR:zones.go\na:0:0:444\nZ:Q1swPRtmdc5Wsg48xc5A4jPOMu+W0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2015-05-04-preview/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vrgmronnBh8KhlZU8Wbv530XNZg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2018-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2018-03-01-preview/dns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1iw/vrXh5fgMBJ8f5ntf68CaG678=\nR:client.go\na:0:0:444\nZ:Q1EKw9TNxSy1uZn59lmQMmaUw4RTQ=\nR:enums.go\na:0:0:444\nZ:Q1JvCxNu2DWNndypjYlmYl8q3nWrI=\nR:models.go\na:0:0:444\nZ:Q1BX/+ylvPomwyLQGM+7FqrbcAdxs=\nR:recordsets.go\na:0:0:444\nZ:Q1G3CgJdPqXLQvsUopQpZT+qHk9RY=\nR:version.go\na:0:0:444\nZ:Q1RAr+9BXv1leIMwPV6Dh2Xi1+Jec=\nR:zones.go\na:0:0:444\nZ:Q14XTvY2f33SPUfzNvGClYWtzdYic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/dns/mgmt/2018-03-01-preview/dns/dnsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mz63o4Wyctiw5r9Th9UTR+Vyfdo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/elastic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/elastic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/elastic/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/elastic/mgmt/2020-07-01-preview/elastic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ec0csbk05Lg4l3p1dmrIGR3dugQ=\nR:client.go\na:0:0:444\nZ:Q1Ou3d3GcL2ywAd7upQJ18XT0G8yA=\nR:deploymentinfo.go\na:0:0:444\nZ:Q1276ZvZ/7OublxaHVoZU07hmwCgk=\nR:enums.go\na:0:0:444\nZ:Q13cKy+O0xdG+YDot0fIiUVCMWXIA=\nR:models.go\na:0:0:444\nZ:Q1hbMP3B2fQ7gY16aWlFoS6sqziwg=\nR:monitoredresources.go\na:0:0:444\nZ:Q1IlYVYPRy3UPLsifMnoSQXS8ez+w=\nR:monitors.go\na:0:0:444\nZ:Q1cobLO4ghhFS/zHRqQn/0MhfvM9k=\nR:operations.go\na:0:0:444\nZ:Q1a5kIKKZ7c73DUnaaAeQs2NoO3wk=\nR:tagrules.go\na:0:0:444\nZ:Q12faH/LtxC8JprmUe+tj9JKIHV1U=\nR:version.go\na:0:0:444\nZ:Q1suBB5pb01TUwPmJdK9A7CGWRzIg=\nR:vmcollection.go\na:0:0:444\nZ:Q1k5MHxnI/6GPbrV0ICw0RvNbIDAU=\nR:vmhost.go\na:0:0:444\nZ:Q1RkDET3HpiVP2ODLeu+kZj8k964c=\nR:vmingestion.go\na:0:0:444\nZ:Q1vq4sTtFG5TlM78EFB7VGCNScvgw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/elastic/mgmt/2020-07-01-preview/elastic/elasticapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CZdrfGYNNVIpdCCYakAtduOlniA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/engagementfabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/engagementfabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/engagementfabric/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/engagementfabric/mgmt/2018-09-01/engagementfabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1U8rnJ7Jt4b/368RZ3SP9sZ6mUxk=\nR:accounts.go\na:0:0:444\nZ:Q1I9Nue4EXWlA/OM5te+04xmD0teM=\nR:channels.go\na:0:0:444\nZ:Q1isdrSkKeh8Wbtq2BLsv84snrqcs=\nR:client.go\na:0:0:444\nZ:Q1DftmnBj+7oFxsuw+4R1DDRZiiss=\nR:enums.go\na:0:0:444\nZ:Q1Y3MuDal0vRVVUUkkvjLjqB/UJsk=\nR:models.go\na:0:0:444\nZ:Q1m3w5vcLxkVQG29SFHkEnjEW6j7k=\nR:operations.go\na:0:0:444\nZ:Q1iYbKZsrMwZPLAR8o5W3AmPGqTCw=\nR:skus.go\na:0:0:444\nZ:Q1lnmgWjq6O4ZYUtAvg1JS/xdhhGM=\nR:version.go\na:0:0:444\nZ:Q1kthiUj62hmZda3yzJQK0CchuWys=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/engagementfabric/mgmt/2018-09-01/engagementfabric/engagementfabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14sBEAnhek8ha8qlJM3WWi7GBwXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/enterpriseknowledgegraphservice\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/enterpriseknowledgegraphservice/2018-12-03\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/enterpriseknowledgegraphservice/2018-12-03/enterpriseknowledgegraphservice\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1dOR0G3n6JlgFRM6b5s7JkzcquTA=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1CMU2WC1ZcL9Bv4UswW2ULEtk2Ns=\nR:enterpriseknowledgegraph.go\na:0:0:444\nZ:Q1pcP8JEXtkS6Ovl398t0NGFAUWRk=\nR:enums.go\na:0:0:444\nZ:Q1dom0hHv946hgWfT8H4wGEKxn9kE=\nR:models.go\na:0:0:444\nZ:Q1tgdG7K+7deABaRRTLX6bZLhqAwA=\nR:operations.go\na:0:0:444\nZ:Q1jEO3edLVZxaoKpaS9ipGuMKOAaY=\nR:version.go\na:0:0:444\nZ:Q17fz8YWmNIjbB+fAJ3btyvaD6vF8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/enterpriseknowledgegraphservice/2018-12-03/enterpriseknowledgegraphservice/enterpriseknowledgegraphserviceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14xVzEqYsXkcmtnTI9iRM8ihTWmE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-06-01-preview/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hphGCYBJB5ytZxj/iia1QFvYPKQ=\nR:client.go\na:0:0:444\nZ:Q1ySBiVZVb5St63ThOteP5QpD50rk=\nR:domains.go\na:0:0:444\nZ:Q1qI+T/U5qYl2Fnlgoasz0RtNxHzI=\nR:domaintopics.go\na:0:0:444\nZ:Q19eOsn0ezWYxX1gDSMoInaup/xLE=\nR:enums.go\na:0:0:444\nZ:Q1nB6803WG8tYixM0Z4bSj3EbycLA=\nR:eventchannels.go\na:0:0:444\nZ:Q1rQSCgwu7AL5wyBSY31CYNeA7L+8=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1I5Q9zmVDG647iODjO1bb7SR31mw=\nR:extensiontopics.go\na:0:0:444\nZ:Q1/w4PpAm7vzknFp+1kOmsAmRDCMk=\nR:models.go\na:0:0:444\nZ:Q1Hf4uF0wmvM04TnYnX+vZ61HFk9E=\nR:operations.go\na:0:0:444\nZ:Q1dSumHuhvrUCTow6OJ7puOUraQVg=\nR:partnernamespaces.go\na:0:0:444\nZ:Q10pG/kEFbDZ8nbBRmZXqR2W8HM3k=\nR:partnerregistrations.go\na:0:0:444\nZ:Q1o6MiMbuYMN7yYFq0PlPHS9LR/hA=\nR:partnertopiceventsubscriptions.go\na:0:0:444\nZ:Q1LS/8s4ug3r5s/ZcXRKMOj+g6MKg=\nR:partnertopics.go\na:0:0:444\nZ:Q1dDZZmrvhCrbSl09RTFaz78F9n+Q=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1xyVjJOp3nUd8KS6QV2oAbkeW8mA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q16GuyEmXlXs/cmPm7zxbgalISiyI=\nR:systemtopiceventsubscriptions.go\na:0:0:444\nZ:Q1V0+qQLwXvXlFsax6Ue83CxBfkso=\nR:systemtopics.go\na:0:0:444\nZ:Q1nwY2Ga1tEyQmG8YBAAQPG/0CZrc=\nR:topics.go\na:0:0:444\nZ:Q1mIt96xoHyTNJEDLAlHfo+YZVjmc=\nR:topictypes.go\na:0:0:444\nZ:Q1lriu+NgmDzeGS3yoiUKRdBrCR3Y=\nR:version.go\na:0:0:444\nZ:Q1wchqFG5DL88/DX688Aju2hloBqM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-06-01-preview/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1eD1mxfhBgWkWe9fpVUK/koXEU2s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-10-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-10-15-preview/eventgrid\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1Op3Uo/5MYUO4Uu+W3CQgi0cTHR4=\nR:_meta.json\na:0:0:444\nZ:Q1MzFmPjErt3XkWH1GHhl4eyDfDsA=\nR:channels.go\na:0:0:444\nZ:Q1cNu9nV+/yQL9yZF5i+ZYrv8b/pw=\nR:client.go\na:0:0:444\nZ:Q1W2JbBpgA/eQaV+OeWD+O/BjVdRY=\nR:domaineventsubscriptions.go\na:0:0:444\nZ:Q1DM/aVxegk/vQo1rVxip7mtYgwEg=\nR:domains.go\na:0:0:444\nZ:Q1q0aqYMHQJCNLIuKOcE1RQpkrXuM=\nR:domaintopiceventsubscriptions.go\na:0:0:444\nZ:Q13/gZgxCKWemUwytDjti5HR44nW8=\nR:domaintopics.go\na:0:0:444\nZ:Q1laeByRCvB6B7Wbi1VhS7c36RJZA=\nR:enums.go\na:0:0:444\nZ:Q1nI6RVTbSUysSK9A9m8w879NiUx8=\nR:eventchannels.go\na:0:0:444\nZ:Q17QIrAKBfnyYUp7gKxLfsZzPM02Y=\nR:eventsubscriptions.go\na:0:0:444\nZ:Q1QwqEnYK3FUr5jryLqwH671lRTMo=\nR:extensiontopics.go\na:0:0:444\nZ:Q1W175UlvuPw12jG8aPIAvAhV7/XY=\nR:models.go\na:0:0:444\nZ:Q18+iLAbeaUogWwauyfO1tJsSjF+g=\nR:operations.go\na:0:0:444\nZ:Q1g11ALm1bVNMk+VKw9RJqwBFdrSk=\nR:partnerconfigurations.go\na:0:0:444\nZ:Q1OhKJddxq5SFGAyILayG/mKa5YKQ=\nR:partnerdestinations.go\na:0:0:444\nZ:Q1jcFT47xYJvQh5uUl4Zj1jtT++zg=\nR:partnernamespaces.go\na:0:0:444\nZ:Q1S7SIyS1b49BJE9aaF/BlUJiFvwE=\nR:partnerregistrations.go\na:0:0:444\nZ:Q1r9gRJlS46PBL20gMcberaSuRvaE=\nR:partnertopiceventsubscriptions.go\na:0:0:444\nZ:Q1WVe4GdzBdSVEGuMal45cbtcGFJo=\nR:partnertopics.go\na:0:0:444\nZ:Q1eei27SlP9o3j/eq0YcNYPeTEqaQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1aXgAQxjQkK124Uoe++QM69fJ0oQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1OBMzJW211A5YviKsSPmg1KkhW/k=\nR:systemtopiceventsubscriptions.go\na:0:0:444\nZ:Q1umSp+A614gLPVdQjyg3233OyUu4=\nR:systemtopics.go\na:0:0:444\nZ:Q1ZgND6gJveKo4xGuzLtS6+LeG08g=\nR:topiceventsubscriptions.go\na:0:0:444\nZ:Q1Dz7q8V5u+d9gfT0jlR8Y6BGMbG0=\nR:topics.go\na:0:0:444\nZ:Q1IeKsPhdJhDbm7NWQYsXhmRCc0zg=\nR:topictypes.go\na:0:0:444\nZ:Q1qpGLkFEKLGg8HAYy3biSzX3Emvs=\nR:verifiedpartners.go\na:0:0:444\nZ:Q1cZaaCqX2jftd5LEEindworXoQ90=\nR:version.go\na:0:0:444\nZ:Q1po7EMrSRNoAPGVFlJo/jE6uTz80=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventgrid/mgmt/2021-10-15-preview/eventgrid/eventgridapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xcWt8VBQCHJRqKniaI6BgXvPURk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventhub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventhub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventhub/mgmt/2018-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventhub/mgmt/2018-01-01-preview/eventhub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/BRYmXh6wL9jCr3kHrs8P/k4mQE=\nR:client.go\na:0:0:444\nZ:Q1bRnzEwvEYmXVPZ9OsEBbXdFxV2k=\nR:clusters.go\na:0:0:444\nZ:Q1OQ8t1eNQX542EYb9QbQozKLDz/0=\nR:configuration.go\na:0:0:444\nZ:Q1bpIF0eCtDo/d29mHhjedEYEBCuc=\nR:consumergroups.go\na:0:0:444\nZ:Q1Emg01NYZZUXsi8d57fKK6U+Jf5o=\nR:disasterrecoveryconfigs.go\na:0:0:444\nZ:Q1u94+Bq5vRypwxEHGKF22fBrVx2Q=\nR:enums.go\na:0:0:444\nZ:Q1m+iC0txFPS1x2gZU1dF0csoqod4=\nR:eventhubs.go\na:0:0:444\nZ:Q14KFR7/gp2jWqhU3GntjcHC7V/9c=\nR:models.go\na:0:0:444\nZ:Q17ik8XRAv0wHEDpQC6MYM8DkXG1Q=\nR:namespaces.go\na:0:0:444\nZ:Q1uMwWZI1EjWxG0K0v+9fft6zgICs=\nR:operations.go\na:0:0:444\nZ:Q1gfMIIVJW9OCI5gwUY/SSnUanRgQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1VJux777nTx6DQjp/lkAIOkqp5eQ=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1MNa090VMVkmrSRUAbmyhARY7Fug=\nR:regions.go\na:0:0:444\nZ:Q10xZiHV8fWJpooDAYU+wzYk0PRnM=\nR:version.go\na:0:0:444\nZ:Q1H+ZerqwrciD35alNxUUws4HcFEo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/eventhub/mgmt/2018-01-01-preview/eventhub/eventhubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QbzdDXAmbQyLk9vgwIs+CHLh8ew=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/extendedlocation\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/extendedlocation/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/extendedlocation/mgmt/2021-03-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/extendedlocation/mgmt/2021-03-15-preview/extendedlocation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pfML+i+I+1jGmiXn9/mwWREbuPo=\nR:client.go\na:0:0:444\nZ:Q1ROUlMsJT4sGCxGEEhyl71DH8/wU=\nR:customlocations.go\na:0:0:444\nZ:Q1Mdm74itiIlfzLzl+BO4nD4lFjaE=\nR:enums.go\na:0:0:444\nZ:Q1IWyAZhUw+6V0jQcQrmvxfYXnWaU=\nR:models.go\na:0:0:444\nZ:Q1XNMW/CQ/OAWGvGrucrm+dZZEXd8=\nR:version.go\na:0:0:444\nZ:Q1XasSpaGrUKI8ZSDSp7vMJ7YgWng=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/extendedlocation/mgmt/2021-03-15-preview/extendedlocation/extendedlocationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q190sdE0Fm5URAn1pMAlGWs5Cs4vk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/frontdoor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/frontdoor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/frontdoor/mgmt/2018-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/frontdoor/mgmt/2018-08-01-preview/frontdoor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mZJ5aCLP5pkG2nndL18HmcLy7MM=\nR:client.go\na:0:0:444\nZ:Q1IDCvlpphBdm++/RFMCx3tM7fYDs=\nR:endpoints.go\na:0:0:444\nZ:Q1bwM0DY9RCRgCVQtZCXzL7xZK7lQ=\nR:enums.go\na:0:0:444\nZ:Q1XYvmaaTFnDjRIkquJmJQQxrWSHA=\nR:frontdoors.go\na:0:0:444\nZ:Q19Vyb4iQiAeIqEO2NOXfTV/bapLc=\nR:frontendendpoints.go\na:0:0:444\nZ:Q1gI1daGe36U5w6hJqurfEI8xQOgw=\nR:models.go\na:0:0:444\nZ:Q14AZOqyve9QCMCdZQRF00/hSXvXs=\nR:policies.go\na:0:0:444\nZ:Q1sZIgnuCBvkRz7sn+FMng668DYsE=\nR:version.go\na:0:0:444\nZ:Q1CYrbVGQS8VnRmPycbWxyY8Ip9Nc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/frontdoor/mgmt/2018-08-01-preview/frontdoor/frontdoorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10od5rdt9yKFU5eG8bHte11MRJE8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hanaonazure\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hanaonazure/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hanaonazure/mgmt/2017-11-03-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hanaonazure/mgmt/2017-11-03-preview/hanaonazure\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YtlSj4iZgM7u8XjEZgiEAqfZFog=\nR:client.go\na:0:0:444\nZ:Q10fuMsD1uPz6KY0xrSfltgxTBhm0=\nR:enums.go\na:0:0:444\nZ:Q1RFhBMIq51QM1GBYoNKfwMRWG01c=\nR:hanainstances.go\na:0:0:444\nZ:Q1JoXIdqrpfKX/OP7ikqSLF6A7Cic=\nR:models.go\na:0:0:444\nZ:Q1C5Tml3BA4XcyQFh/PGj6LBOJFFs=\nR:operations.go\na:0:0:444\nZ:Q1+wNnTwgJ3MMRpDptPxUadfPdoU8=\nR:sapmonitors.go\na:0:0:444\nZ:Q16RWhezleuoUXHdpi/bgYpRw8YRM=\nR:version.go\na:0:0:444\nZ:Q1HBuTAsoy2zD1njfZMy5bf2nL5kA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hanaonazure/mgmt/2017-11-03-preview/hanaonazure/hanaonazureapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1r82WvHa0Zl2GCzeJOsTCMYD/2cc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hardwaresecuritymodules\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hardwaresecuritymodules/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hardwaresecuritymodules/mgmt/2018-10-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hardwaresecuritymodules/mgmt/2018-10-31-preview/hardwaresecuritymodules\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Jt92A/2Hs28xeQLCUC16JJwgK4A=\nR:client.go\na:0:0:444\nZ:Q1x0f19C9lcKcwF/h1nnI9VkK0jmw=\nR:dedicatedhsm.go\na:0:0:444\nZ:Q1wYht8u6di40FsCU+SSG2xV/jrKQ=\nR:enums.go\na:0:0:444\nZ:Q1WDiJht8UbOquIalfwPwsJ4aVaJs=\nR:models.go\na:0:0:444\nZ:Q1aWnmQq5w5uci5RDUNiClvlJ3djI=\nR:operations.go\na:0:0:444\nZ:Q1Fn/PQUF+SuekwUZMS6dEWOHxww0=\nR:version.go\na:0:0:444\nZ:Q1CEjnanYtNbGioMwaqY08SvJbmJk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hardwaresecuritymodules/mgmt/2018-10-31-preview/hardwaresecuritymodules/hardwaresecuritymodulesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QjBvC3iLd9ieJd7t3LOBxiTt1ko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/2018-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/2018-11-01-preview/hdinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1xIqKuBr02xYbkX87krJSCukpoxc=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1XiFkLEH6A47Z6kfps9hGcdNSygo=\nR:enums.go\na:0:0:444\nZ:Q1iV50dr4XnY6AtkdnF7jFApZtLxk=\nR:job.go\na:0:0:444\nZ:Q19+adBnwWgWcohZHYv+itmKWTG00=\nR:models.go\na:0:0:444\nZ:Q1YP4Xy0RXjFrac5JCid9kWz95CDE=\nR:version.go\na:0:0:444\nZ:Q1AUBzqMeAYrr94WrgEG5y7xPZ8PA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/2018-11-01-preview/hdinsight/hdinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ew1L+J9mhCtooWwsEHDCII6qu+Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/mgmt/2015-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/mgmt/2015-03-01-preview/hdinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gw9tMzrwanc8rsmO2TGF3qiJAmw=\nR:applications.go\na:0:0:444\nZ:Q1oSu9stxklWBj6/I8d1B9hOM+PVU=\nR:client.go\na:0:0:444\nZ:Q1KLs12GnjK4vvJ4Jycft2zEcLGuc=\nR:clusters.go\na:0:0:444\nZ:Q1y4mUtAsjU72d4Yl4eXX5IqStIKQ=\nR:configurations.go\na:0:0:444\nZ:Q1CSWGiO1u/NfxvGHj6QGUCiqU+Ms=\nR:enums.go\na:0:0:444\nZ:Q1pEzhMmuOcJDF7Fx3YxRzxcVI3MU=\nR:extension.go\na:0:0:444\nZ:Q1S6BsW5pXw7Zwz5vSJ27X6dt7efg=\nR:locations.go\na:0:0:444\nZ:Q1igsrW/1099LkQFAd/DGVAmScoo4=\nR:models.go\na:0:0:444\nZ:Q194/AMeBk3rcUogTkJmI2mA5Io8Y=\nR:operations.go\na:0:0:444\nZ:Q1co3KrbOZNZcqz7pCFfDqyJvydmY=\nR:scriptactions.go\na:0:0:444\nZ:Q1zgThoKfTj6xYd6Apb08fJU/80Yo=\nR:scriptexecutionhistory.go\na:0:0:444\nZ:Q1X8uE/MvCGZIrPGKBqEGtirogv/k=\nR:version.go\na:0:0:444\nZ:Q1EVkZPj/GQkwSntGaG6wTQoIiDvk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hdinsight/mgmt/2015-03-01-preview/hdinsight/hdinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fMebxc7LnHvOEdyz0mYKLqxeV2Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/healthcareapis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/healthcareapis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/healthcareapis/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/healthcareapis/mgmt/2021-06-01-preview/healthcareapis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gU88Lm6amltiS0Zwt4DYj9RH/tQ=\nR:client.go\na:0:0:444\nZ:Q15RD8DWkfJyGg0VDL8H/USQdipdc=\nR:dicomservices.go\na:0:0:444\nZ:Q1t7ZsLHTfJkcD2Po/Ro/RdFEJxSk=\nR:enums.go\na:0:0:444\nZ:Q1sH43Z+VFLlODgihnO8Ere6htFno=\nR:fhirdestinations.go\na:0:0:444\nZ:Q1LY1UczFJZR/Ht4cwoN7OThXKE7s=\nR:fhirservices.go\na:0:0:444\nZ:Q1jymbihexW0ZLhQQrt7tL4uOnurg=\nR:iotconnectorfhirdestination.go\na:0:0:444\nZ:Q13KREEfppjBYMG/Ux3oqkwSIuydo=\nR:iotconnectors.go\na:0:0:444\nZ:Q1VQthUkUUOD3P2LkYxKAq4w+mv+I=\nR:models.go\na:0:0:444\nZ:Q1xPVNbrQXwOnJUL+VEBKum4i6gGY=\nR:operationresults.go\na:0:0:444\nZ:Q1xJVwCeZce5Bntx7kR57s+2whFq4=\nR:operations.go\na:0:0:444\nZ:Q16cwwn8PJ+0mexaSuWDP/LpfKQyg=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1sVb2dLIcHtYmrb8Le9gLIeHmqIw=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1QKzBbqS3+7a6Hd1WjqyYRxG7Jrk=\nR:services.go\na:0:0:444\nZ:Q1zzwM3TNTFeta1aRjhAZ57CjnCS4=\nR:version.go\na:0:0:444\nZ:Q1dxW36TOHFQNEiscyeoZH/dmCMkU=\nR:workspaces.go\na:0:0:444\nZ:Q1BvX7RObfyyE2VVE4/U+FCxk0n8E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/healthcareapis/mgmt/2021-06-01-preview/healthcareapis/healthcareapisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1baw1tQQ9svBOYKxF7bYnviCUzpA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2020-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2020-01-01-preview/hybridkubernetes\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17rRXogyKkNVnClfVl3Ko3FBviD8=\nR:client.go\na:0:0:444\nZ:Q1G5Q75Rc+b6jiRIeE+yv0JTfb5ew=\nR:connectedcluster.go\na:0:0:444\nZ:Q1ODsNBZE6KRRdhQouZ55PRaKuUho=\nR:enums.go\na:0:0:444\nZ:Q15Ey/Kj21pDLVRbl2QSuJ5JjGp1Y=\nR:models.go\na:0:0:444\nZ:Q1/edo63M5I8ztucwRhNgfe/ECNEk=\nR:operations.go\na:0:0:444\nZ:Q17YSTcQP/nSi8Tcx1Trn4bMbvTNs=\nR:version.go\na:0:0:444\nZ:Q1/EM0U8t/ulvF0Rx4WOzu+X7JjTQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2020-01-01-preview/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1L0q2Q9jN9V851X9xWFlQUbOeGpU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2021-04-01-preview/hybridkubernetes\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yANkbGUuXy4CWsQfws+TVLVzoQI=\nR:client.go\na:0:0:444\nZ:Q1yxCmEmRai5Dv4NIfTtMtK62+mkA=\nR:connectedcluster.go\na:0:0:444\nZ:Q15JU4UQ2muidy8vWnd8QntpCmoFo=\nR:enums.go\na:0:0:444\nZ:Q1jPixWnqMeqeSQbLzljIywi6yX9c=\nR:models.go\na:0:0:444\nZ:Q1YHnFTplAy27P50LC5boQU4TUMcc=\nR:operations.go\na:0:0:444\nZ:Q1IRvof5+NzSLxAAoY4ldHeD2ed/8=\nR:version.go\na:0:0:444\nZ:Q1swqUnCL1KDsDjXLUrOiGZ6+P4Ec=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridkubernetes/mgmt/2021-04-01-preview/hybridkubernetes/hybridkubernetesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1h1Df+Fg8s/dL780A9RwwVFjaqTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridnetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridnetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridnetwork/mgmt/2020-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridnetwork/mgmt/2020-01-01-preview/hybridnetwork\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1E6edYyZroShsNB2UZqauun1re8U=\nR:client.go\na:0:0:444\nZ:Q1K8jfDZUVS8DR4TV9YjtKuSPwt40=\nR:devices.go\na:0:0:444\nZ:Q1GEkhs8Leq2bPKY+XOfuYuSNuuvU=\nR:enums.go\na:0:0:444\nZ:Q1Qdc+yIH+Y0xozs5B54BfkX9Thls=\nR:models.go\na:0:0:444\nZ:Q1dYpTpy8qdoO5U2enuCr5mCGCIrs=\nR:networkfunctions.go\na:0:0:444\nZ:Q1quY7V3QaqIGa2+u71U3qicJrppo=\nR:networkfunctionvendors.go\na:0:0:444\nZ:Q13aqwcvDbV9T7gHUo72RNoGgmaDA=\nR:networkfunctionvendorskus.go\na:0:0:444\nZ:Q1sG9ID2FC9n9qQvltwYT7Xuvim4k=\nR:operations.go\na:0:0:444\nZ:Q1Q9oKvarmTUX4oEuwjZYeJo5eIOo=\nR:roleinstances.go\na:0:0:444\nZ:Q1uXr1jHdlION59VgyETyjFzwItUY=\nR:vendornetworkfunctions.go\na:0:0:444\nZ:Q1uoD3IYVQWT8pob3ICvOweG5Escc=\nR:vendors.go\na:0:0:444\nZ:Q1Qco99CKNM+siTONXxb9Ap/8mddc=\nR:vendorskupreview.go\na:0:0:444\nZ:Q1n/sF9jmBG56pj5JUiXD1iJmD57c=\nR:vendorskus.go\na:0:0:444\nZ:Q199Jtcuk5paHBWBsSAijepKQJBeI=\nR:version.go\na:0:0:444\nZ:Q1pxGV4XHvl/Gj2lfnV7HenRCZYEc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/hybridnetwork/mgmt/2020-01-01-preview/hybridnetwork/hybridnetworkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13EubD/Yxl05OAzB4dpxSZtJw538=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotcentral\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotcentral/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotcentral/mgmt/2021-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotcentral/mgmt/2021-11-01-preview/iotcentral\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GamiynhmChGGk7fA/o9n4tv1d9o=\nR:apps.go\na:0:0:444\nZ:Q1lKm4b3hWEr0l7EmYTQQOo9aicos=\nR:client.go\na:0:0:444\nZ:Q1MBl04VqsQ3Q0Q55eqziQ4hovjXA=\nR:enums.go\na:0:0:444\nZ:Q1yqBwYdfItr+nrYY0fxxbQj5hNtI=\nR:models.go\na:0:0:444\nZ:Q1aR9jXAZLraU7PYaOJUgEwGAcMVg=\nR:operations.go\na:0:0:444\nZ:Q1kqgC82OgBNsd8lbQ2N78Ve2IcHk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1GeiM1z+84sM2SM6WGk++r8paTx4=\nR:privatelinks.go\na:0:0:444\nZ:Q163IjZBIF3YJyBVHtjLvSEUaRQpU=\nR:version.go\na:0:0:444\nZ:Q1dqaHWXArHt01z/dg3PHrVW2algk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotcentral/mgmt/2021-11-01-preview/iotcentral/iotcentralapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13FeI6woAwFPmr6iNNjeOBab5H50=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2018-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2018-12-01-preview/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ist7gldIAia0cgV4OTJ1dIqA+kY=\nR:certificates.go\na:0:0:444\nZ:Q1IlM+MnTuDorPtlc5A68LNn8btIA=\nR:client.go\na:0:0:444\nZ:Q1otUcG2qWS/iB6UdXXaVWTNo8hGM=\nR:enums.go\na:0:0:444\nZ:Q1Idm4BZJ2hZzxf4UVpIKUGCjMcAQ=\nR:iothubresource.go\na:0:0:444\nZ:Q1orvN2Ze74TMCnp8zypsiFGC4iwU=\nR:models.go\na:0:0:444\nZ:Q1UkeJIM9cD2gqbH/uYBH7SCEMcRY=\nR:operations.go\na:0:0:444\nZ:Q1BiEAWtYdNR/9lts9Zmmk8p8Be34=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1r3QE6O1Ue4hUbza7SiV29xW5NWw=\nR:version.go\na:0:0:444\nZ:Q1mMMjFTwNTv6Ozsa29LU78/DN8MU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2018-12-01-preview/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1W74k0dWnuWbQRbOpgpUsgTao0N8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-03-22-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-03-22-preview/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gIYRRkODW7AAUH4QC3B9fch3j58=\nR:certificates.go\na:0:0:444\nZ:Q1RedY1rk4zrri46sBO7pqGywINzM=\nR:client.go\na:0:0:444\nZ:Q1RCTVer+1MByHg/86Yj5dhVr7O5s=\nR:enums.go\na:0:0:444\nZ:Q1Idm4BZJ2hZzxf4UVpIKUGCjMcAQ=\nR:iothub.go\na:0:0:444\nZ:Q114O6iStyyFYc7hUtwKNiSlQ29BE=\nR:iothubresource.go\na:0:0:444\nZ:Q12Lh996KV4Ah6dzQN/76GtyX/hkM=\nR:models.go\na:0:0:444\nZ:Q1PEKKr/3cWNoyZ6WIady/ldcEcw8=\nR:operations.go\na:0:0:444\nZ:Q1bF8ln7DwJKOLQWsRxXl/mOMOEnY=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1sr3mJItKAwtmhNu+Cb8DofC2mZg=\nR:version.go\na:0:0:444\nZ:Q15NYNpAZYVb82m9e7rpv9VdL/WjE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-03-22-preview/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1M+KiRlCjfH4Uvj4z2hi7PU7sxzI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-07-01-preview/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1edGhkcBnrf1hBF2EgLWdlC4Frsg=\nR:certificates.go\na:0:0:444\nZ:Q1rhC1WZ64yaAR4ap1l+LPH1nWEIs=\nR:client.go\na:0:0:444\nZ:Q1WpSd/3aU+lQRHP/j4nPJEsdJ0uY=\nR:enums.go\na:0:0:444\nZ:Q1ux9Krr7FPvlRHdcq/3cQifICVSQ=\nR:iothub.go\na:0:0:444\nZ:Q17YMPxXPOLoho/IM+fVF4HnEV7m0=\nR:iothubresource.go\na:0:0:444\nZ:Q13wCky0V9GJrCchWI45SuSsO0e38=\nR:models.go\na:0:0:444\nZ:Q1XRkXZwJRgzVv+6bOhaGGR8rhFMI=\nR:operations.go\na:0:0:444\nZ:Q1KLaMRBID9htEUfujHz2Z/McieiY=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1EtSG9f3niRCCwI5XL5KYomFGp3Y=\nR:version.go\na:0:0:444\nZ:Q10HByif08dumG1XAIoihak80yK9c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2019-07-01-preview/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gZhKRY5Zddv7TBNZ2c2Otb6VnPQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2021-03-03-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2021-03-03-preview/devices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bdvJG8BqEtf1igjccG+jUX6Hrzo=\nR:certificates.go\na:0:0:444\nZ:Q1lGLrq7A6syRwF2qj01LT2VPN7vo=\nR:client.go\na:0:0:444\nZ:Q1RABzod/mT8TpIboa6yFJN3ClZGs=\nR:enums.go\na:0:0:444\nZ:Q1Ha4DOnYdZAsuTCkGfJU+3R/IKnw=\nR:iothub.go\na:0:0:444\nZ:Q1/sTB2F0v6Q9+WcZ0xqK+xme4a5M=\nR:iothubresource.go\na:0:0:444\nZ:Q1ZmRY3Y/6caiiB7zLvuIDa1TLGYE=\nR:models.go\na:0:0:444\nZ:Q1QNTMdPmuiLmz1HBB70bpi0URn5s=\nR:operations.go\na:0:0:444\nZ:Q1i0tv5r2aSD2V3REFU3cL0Dkw+bw=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1FhZV78o7Wd/JoppAZ+t9KHmVaVU=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1jRW4VUH3plCw8VXgU+vvtF8kUo0=\nR:resourceprovidercommon.go\na:0:0:444\nZ:Q1oSveHvgNLD224OMEYo1zAa+t8Dw=\nR:version.go\na:0:0:444\nZ:Q1Y5Lyq5/a4wHHj0GMo1LG+1A9Qi8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iothub/mgmt/2021-03-03-preview/devices/devicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JpGv3mjwDonHIFwx8bghhiuBgts=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotspaces\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotspaces/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotspaces/mgmt/2017-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotspaces/mgmt/2017-10-01-preview/iotspaces\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1acdWMMFokcWhDVC4YQ/dimLHy80=\nR:client.go\na:0:0:444\nZ:Q1yvjnFAVtZIwoKuS0Is47qewWxEs=\nR:enums.go\na:0:0:444\nZ:Q1Y2x+EE83RpTWwYbGlP2hwKofMXk=\nR:iotspaces.go\na:0:0:444\nZ:Q1pSGi/fjptCpHzAAVLO0++kwfHqc=\nR:models.go\na:0:0:444\nZ:Q1YKlvf8WjSjD7bQDSHSBAp0p78gE=\nR:operations.go\na:0:0:444\nZ:Q1MeRMauFoJxTFlYaAOefdYnImBz4=\nR:version.go\na:0:0:444\nZ:Q1oaF/1ZeVz2wop62Uy1s4szl8StU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/iotspaces/mgmt/2017-10-01-preview/iotspaces/iotspacesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qk6+DhZF6ni2e6RAELOrYUwbTkU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/mgmt/2020-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/mgmt/2020-04-01-preview/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1K+3g9oBw3lpsctFfuP5aczs1+b0=\nR:client.go\na:0:0:444\nZ:Q1XrOgoV6rx5ds5YY/+eM58WAm4C4=\nR:enums.go\na:0:0:444\nZ:Q1KI2BOBLqvojwWywry9uGNTdLW3s=\nR:managedhsms.go\na:0:0:444\nZ:Q1VSo4Wh1evKzGb7rwSLRvztd5Ww0=\nR:models.go\na:0:0:444\nZ:Q1l3FeqzbqFA/vWh/EwhtfP8cyfNw=\nR:operations.go\na:0:0:444\nZ:Q1dEqCwz5MkIAX6d0nxCYLLvzJWM4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1XLM3iMFTK+UWeS3dCYZVf1gnsvg=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Qa7RuojFbQcvRLk2dvLq9HTPAmg=\nR:vaults.go\na:0:0:444\nZ:Q1H5SR6llM7hnjxVTMRqjKpTNvjz0=\nR:version.go\na:0:0:444\nZ:Q1EaccYMAd9QB9HkISBKDS83eA0uI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/mgmt/2020-04-01-preview/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WoQEdBE58Azxa/4lmm2H76VZLUc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/v7.2-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/v7.2-preview/keyvault\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1q/jKgz5AVLN/+AJ52OoDGmo+RQU=\nR:client.go\na:0:0:444\nZ:Q1BVTU6T6gth5rCUC5Z6F6aC7x/sE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1eGb3aT2hyks6KQrDQg8cURhyHZA=\nR:enums.go\na:0:0:444\nZ:Q1OAh4YThUYQ48Ve91F5ugv1ny0Ag=\nR:hsmsecuritydomain.go\na:0:0:444\nZ:Q1Ce/QChNDS+4OjWyO7tjc/KQ0jMM=\nR:models.go\na:0:0:444\nZ:Q1Pxgm1aKaH9aZXABynMWW6yrvSXs=\nR:roleassignments.go\na:0:0:444\nZ:Q1EUP/z12SOYaJSr1CQCJrdm9rtz0=\nR:roledefinitions.go\na:0:0:444\nZ:Q1SEAm4UYVVrJUlOsebL9Cf9TNq0Q=\nR:version.go\na:0:0:444\nZ:Q1oab5HYOQIMeJbKpJkBZ1T8I45n0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/keyvault/v7.2-preview/keyvault/keyvaultapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tLHVsq4sHurHIrbF/7QhtVoLoLI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2019-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2019-11-01-preview/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q167v/BNPjGZW2l1u1iqTM4abZDj4=\nR:client.go\na:0:0:444\nZ:Q1iqJhPDv1iWM3ncNUZzPw7KdJ7Rg=\nR:enums.go\na:0:0:444\nZ:Q1dzkUUIet7Sc3a5XDzrNkDtPDR0o=\nR:models.go\na:0:0:444\nZ:Q19CPxjUsH/+0zExMOpgRMlm4/su0=\nR:operations.go\na:0:0:444\nZ:Q1VoVdSyMOax+2M16w+3BoCdfTL4M=\nR:sourcecontrolconfigurations.go\na:0:0:444\nZ:Q1nIWQij3aBSjzYulh2+RmZ7IDsZ0=\nR:version.go\na:0:0:444\nZ:Q1QMjYfuSrwtimGZnV9n12OiaDu9w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2019-11-01-preview/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1o+vfLo0sv3zuWlcC0dEDfaChO6s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2020-07-01-preview/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GHrs7MZo2uQoZXimOiPPUBmDc2Y=\nR:client.go\na:0:0:444\nZ:Q1/Z2Exe4Lb/yVr4d1+PF6RPQzg1s=\nR:enums.go\na:0:0:444\nZ:Q1OdsnhNdL5F4H+7ZPPfonnPcWc7I=\nR:extensions.go\na:0:0:444\nZ:Q1Dn+DZLQwdi7DnO2zcVvns/LrKw4=\nR:models.go\na:0:0:444\nZ:Q1eLf7cCd8/EOR1M14MhXxwv68drs=\nR:operations.go\na:0:0:444\nZ:Q1FDPrQ8lHoLHim6Qon72mzcMoRsI=\nR:sourcecontrolconfigurations.go\na:0:0:444\nZ:Q1KpX+b/rn4EccEleAAufJaU1dg8U=\nR:version.go\na:0:0:444\nZ:Q1NYptnr086ai6NQ2QxFhCn9DeYfU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2020-07-01-preview/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16MOpuoFZIVnEdGu2neEcFOlLiR0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2022-04-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2022-04-02-preview/kubernetesconfiguration\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12L4nf/AinLxbc9WmSeAYnfPFZHc=\nR:client.go\na:0:0:444\nZ:Q1g/78BhpyjN3x03I3UHm8iZ/aOMg=\nR:enums.go\na:0:0:444\nZ:Q1/dRNZrx2fxhmalvWzKrFljKCdac=\nR:extensions.go\na:0:0:444\nZ:Q19/C1Ay/yLADQR/Rjzu99clRKfhc=\nR:fluxconfigoperationstatus.go\na:0:0:444\nZ:Q1dT2DOMtGDm8YiTWsWddkJD4GwvI=\nR:fluxconfigurations.go\na:0:0:444\nZ:Q1RBUbhoBdBpF2XtFvRbdqESI7RRM=\nR:models.go\na:0:0:444\nZ:Q1ls4GbiH5yfEJXDv3ONKWtGk33KU=\nR:operations.go\na:0:0:444\nZ:Q1TP7qwP+zNJeFSyd54fWzjcBAtVs=\nR:operationstatus.go\na:0:0:444\nZ:Q1HnNrntqxBO3v4xgnT0chJG9D9ww=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1JCyvzOxH248C+y6eR02KWVyAwtI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1dS/JWYjsNTK/3Y/o5eaq3LKHiC8=\nR:privatelinkscopes.go\na:0:0:444\nZ:Q1vbMWUJKqnPfLxDMMmvllezUb7mQ=\nR:sourcecontrolconfigurations.go\na:0:0:444\nZ:Q1+/4adrfdAeVK6YMF98qQ4g+msIM=\nR:version.go\na:0:0:444\nZ:Q19LdBwUEQh2fKaQfBGgYjxOUa5HE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kubernetesconfiguration/mgmt/2022-04-02-preview/kubernetesconfiguration/kubernetesconfigurationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZSCO2HoEGh/7OkEMCqDBgDPNe5I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kusto\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kusto/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kusto/mgmt/2018-09-07-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kusto/mgmt/2018-09-07-preview/kusto\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KEWeElji+cxxMFpUW5YpVqehqPA=\nR:client.go\na:0:0:444\nZ:Q11TnJxcqTafc9AWAoORwVoCy5okk=\nR:clusters.go\na:0:0:444\nZ:Q1dWGzNWqNErx4X/NqZ52vBA7HbqA=\nR:databases.go\na:0:0:444\nZ:Q18E16fAniHLBtg2rKL7NiSfpvOA4=\nR:enums.go\na:0:0:444\nZ:Q1VwE6NHHZu+1/f7QDdA9TwN5l5kk=\nR:eventhubconnections.go\na:0:0:444\nZ:Q14QSC5AO0yXe+VzhvYGMPOEKipAo=\nR:models.go\na:0:0:444\nZ:Q1/LJX1zgVxAJjAdTYPBRUQQsbvMk=\nR:operations.go\na:0:0:444\nZ:Q1HXYuAioEh1Du/PM3T/G3vKKbNQE=\nR:version.go\na:0:0:444\nZ:Q1IYLjtCkmMr7r4nsLCl4qYZqAkTY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/kusto/mgmt/2018-09-07-preview/kusto/kustoapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DWC5LNioqq5YTZsQ47PLTEYfv8E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/labservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/labservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/labservices/mgmt/2021-11-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/labservices/mgmt/2021-11-15-preview/labservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q180Ssa/bRyE4r40YDws1i1HWBSsg=\nR:client.go\na:0:0:444\nZ:Q1+mPRxs/ZR7U/vvI/LgzOK+WUIC0=\nR:enums.go\na:0:0:444\nZ:Q1ogB7qRdxnbp/AP0ppQ0NvDUdtec=\nR:images.go\na:0:0:444\nZ:Q1dHkNE7+gIP6lfYleJjaWXfPMTxE=\nR:labplans.go\na:0:0:444\nZ:Q1pTYc82NoLh3AGUArX5UnGIPrGuQ=\nR:labs.go\na:0:0:444\nZ:Q1w0/yi2Ge0shMQeye/Ah1hRB9c+8=\nR:models.go\na:0:0:444\nZ:Q15PzMlbWM+4WOgzJbAh2bbplPDR4=\nR:operationresults.go\na:0:0:444\nZ:Q1G8Fj1yxqlCgZuLUzwBZ0k7eBGfM=\nR:operations.go\na:0:0:444\nZ:Q1BNJtW1YxINOhkZsF1TunUlSkTjs=\nR:schedules.go\na:0:0:444\nZ:Q1xrwaqxvnYNmcIN/BMazXZmWzBKU=\nR:skus.go\na:0:0:444\nZ:Q18awMyumoViJi29QJk8nozL5o/h0=\nR:usages.go\na:0:0:444\nZ:Q15DRmk/h/EOLpxf5WsiQrsHG2Z+Q=\nR:users.go\na:0:0:444\nZ:Q1bMVyx8TrjXVpt+W65hutjpTN6bg=\nR:version.go\na:0:0:444\nZ:Q1Q9/xicAGYOoEm2w2re7apQ2DPOU=\nR:virtualmachines.go\na:0:0:444\nZ:Q1iAKkJyy7g5hzkzSGuriWGnYo73A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/labservices/mgmt/2021-11-15-preview/labservices/labservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rmvkK+qYCN+2/AEUSZ9lreY/Ysw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-02-01-preview/logic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1M+5oFCMRvjMNRBOaHhGO5MgnFC4=\nR:client.go\na:0:0:444\nZ:Q1QruPsOCLz6UYktRJaU6L5rAZxZ4=\nR:enums.go\na:0:0:444\nZ:Q18mftsOwzb5D6UpuIzHqyDGCK1YI=\nR:models.go\na:0:0:444\nZ:Q1qLdwjhpnomE9Hi9ePiIwUzLsSbY=\nR:version.go\na:0:0:444\nZ:Q1CQY15t+5v6z+MAaCvjm1nE6x7/4=\nR:workflowaccesskeys.go\na:0:0:444\nZ:Q1G+cfj9CuBw1o0hDKee3VExGHzcg=\nR:workflowrunactions.go\na:0:0:444\nZ:Q1e/Sa2Liw/MFgF+fVPaKSTK6EWlk=\nR:workflowruns.go\na:0:0:444\nZ:Q1fl4Vyzfr+eYjhQU9Z3YBviuOaa4=\nR:workflows.go\na:0:0:444\nZ:Q1ZRKGMeGKTWfwWu1lWvkGtYm0mBQ=\nR:workflowtriggerhistories.go\na:0:0:444\nZ:Q1DafJawRh/OcDFsTByGm9hjYz+to=\nR:workflowtriggers.go\na:0:0:444\nZ:Q1qatJWUT1UCB+kMVwbYJizku2vwo=\nR:workflowversions.go\na:0:0:444\nZ:Q1GJ/8nk5nnKUyV7fzFILy2do7zyg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-02-01-preview/logic/logicapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KD9EeAEmCRVEaQ1B7VenNCgoweA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-08-01-preview/logic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16rj+JKWBJbFqdO+YOeL9HKZxHkE=\nR:client.go\na:0:0:444\nZ:Q1kePkYvBorwKoDQyjRg3aaO+H93Q=\nR:enums.go\na:0:0:444\nZ:Q1LOyo8zuk+IWf/oVMf9zgVIU+36Y=\nR:integrationaccountagreements.go\na:0:0:444\nZ:Q1M9TDxK2+rDD4S7HnGEKYdGowMAc=\nR:integrationaccountcertificates.go\na:0:0:444\nZ:Q1MOlFFR9y5ToA3n4H1wHYaXFjb+I=\nR:integrationaccountmaps.go\na:0:0:444\nZ:Q1VIu4H8FEDs91eEpt91FNbxRWYAU=\nR:integrationaccountpartners.go\na:0:0:444\nZ:Q1lkPm4RcyJzHfSi0PVyehw09T/14=\nR:integrationaccounts.go\na:0:0:444\nZ:Q1ZnqnQogqlwFwpvxmbxSLbMI3BVw=\nR:integrationaccountschemas.go\na:0:0:444\nZ:Q15NkAgzqWdITKHdSnM2SP+rtHuOs=\nR:models.go\na:0:0:444\nZ:Q1NJks0R9Uqiwp/tMOyar0Ki8q2vg=\nR:version.go\na:0:0:444\nZ:Q1bI9YEhk3SwiGgfHXtMiztDMEsl8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2015-08-01-preview/logic/logicapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1A7+AuVjRDubMTQ/Q7oct6+MGXqA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2018-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2018-07-01-preview/logic\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AcTSWtfNnvNEgmVLGIQ/8Udzgtk=\nR:client.go\na:0:0:444\nZ:Q131J3WXmRCq5Tkj3pLrUAKM8zMCU=\nR:enums.go\na:0:0:444\nZ:Q1bj0HOYINqtZsBjqcsVa8iL54zYc=\nR:integrationaccountagreements.go\na:0:0:444\nZ:Q1fRx/qAmS5EHhl/cQo6QLNzWEbQM=\nR:integrationaccountassemblies.go\na:0:0:444\nZ:Q1MG4V6BUnaNTIJu00hDdLgtFY2RA=\nR:integrationaccountbatchconfigurations.go\na:0:0:444\nZ:Q1K9Wc58treaJt7bxOLjT15wnAr74=\nR:integrationaccountcertificates.go\na:0:0:444\nZ:Q1v/AF1/9cOlSr85H1I9XwRUzxf0Q=\nR:integrationaccountmaps.go\na:0:0:444\nZ:Q1LlNPPl9c+ES75OeIzsmLicqaYBA=\nR:integrationaccountpartners.go\na:0:0:444\nZ:Q1AfJ03nwOIFbPXr2bggIr/ank6ms=\nR:integrationaccounts.go\na:0:0:444\nZ:Q1Ux3eqnTwqdhSQJvikVTA3NxXFt4=\nR:integrationaccountschemas.go\na:0:0:444\nZ:Q1RCa0ojzUPLAWi/Esn04zHfnbycs=\nR:integrationaccountsessions.go\na:0:0:444\nZ:Q1Qszut+nZOsVwYeNu8cjO3t9qRgk=\nR:models.go\na:0:0:444\nZ:Q1gKFV0NL0a0mWo7MPnX/YvCnSvyU=\nR:operations.go\na:0:0:444\nZ:Q1S2Jp6r15IjIJsuNs5/bgd35qUDg=\nR:version.go\na:0:0:444\nZ:Q1a57qmdhKSeZSq/XT1wIY+YFfJwI=\nR:workflowrunactionrepetitions.go\na:0:0:444\nZ:Q1ckJpdurdxkf15+cbomL8ATXTGxc=\nR:workflowrunactionrepetitionsrequesthistories.go\na:0:0:444\nZ:Q1FDp0IRqeqI3A1oVNT7+bw1i2aHo=\nR:workflowrunactionrequesthistories.go\na:0:0:444\nZ:Q15iEYUzUdPRqfBQ39V12PyVjUFSY=\nR:workflowrunactions.go\na:0:0:444\nZ:Q1BDtuRKsAgNvuCR6B7s0NC7E4g1Y=\nR:workflowrunactionscoperepetitions.go\na:0:0:444\nZ:Q1l63AdG3Ps7R6XG4r+ifPh2rVgA4=\nR:workflowrunoperations.go\na:0:0:444\nZ:Q1JukMp9EkUg/ta2nIQnzZ6SnvNF0=\nR:workflowruns.go\na:0:0:444\nZ:Q1A+ewQCHvza0bszUAoIwPePcEO/c=\nR:workflows.go\na:0:0:444\nZ:Q1ANant5rcyu+HGzR1qYzc6nV5w6k=\nR:workflowtriggerhistories.go\na:0:0:444\nZ:Q1yNcKdvTKAdR10adJNAxH4MIWVKc=\nR:workflowtriggers.go\na:0:0:444\nZ:Q1OGdsQ8p1nEXHreMk7u9ixQPD7aY=\nR:workflowversions.go\na:0:0:444\nZ:Q1DQ1FaOEhL7J7oI9faiKbRDrR9mI=\nR:workflowversiontriggers.go\na:0:0:444\nZ:Q1HfoFNVx3zKMdu8XYx9TsrB1ToDs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/logic/mgmt/2018-07-01-preview/logic/logicapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11DSXx9QeayFQiINAtkJvVTLx5xM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2016-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2016-05-01-preview/commitmentplans\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1s8Efwv0YEnzlQPa7kVyRjAnvxLo=\nR:client.go\na:0:0:444\nZ:Q15SYmIus5e23X4ICExCBEf7eSeEg=\nR:commitmentassociations.go\na:0:0:444\nZ:Q1ztsGh7JL4qL8BwWkLU4so9CZ60k=\nR:commitmentplans.go\na:0:0:444\nZ:Q1+J5XVbJffMoO9rEYPlwGDw10+yo=\nR:enums.go\na:0:0:444\nZ:Q1ZXruxPDvfBpVyLGzFIUavLja9t4=\nR:models.go\na:0:0:444\nZ:Q1Gsk1RS7HuUYoNgVsWLSa3DGp/bo=\nR:operations.go\na:0:0:444\nZ:Q1j634ju3xcQCLfX3hZ7b5kAuAaEI=\nR:skus.go\na:0:0:444\nZ:Q1y58UK+soxyNUDKHZhxPvkccvjOA=\nR:usagehistory.go\na:0:0:444\nZ:Q17Ylvm0TSarZUS7cvJPIZamc3xWc=\nR:version.go\na:0:0:444\nZ:Q1J0UrgqQh9eIeLmgi8o7f6KtH4/Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2016-05-01-preview/commitmentplans/commitmentplansapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xrSLvEj3/FEBiWuSfnjW5f1t6vo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2016-05-01-preview/webservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RPqwCHdMmQF7PLLlIrnNjrT0e/s=\nR:client.go\na:0:0:444\nZ:Q1OQE7LR8Eo7mtBTlFubh+D/7IqZE=\nR:enums.go\na:0:0:444\nZ:Q1vP3/5k44lwaP7jHLBL5yV0vtkZ8=\nR:models.go\na:0:0:444\nZ:Q11kSy0DQ7+kN+JZ7TdoK8dbx521U=\nR:version.go\na:0:0:444\nZ:Q15uEDrYSXakDXy527Yrgmtn00FYA=\nR:webservices.go\na:0:0:444\nZ:Q1luKKJql5chwkMRBRlkUmZjh6xxE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2016-05-01-preview/webservices/webservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cAZ7DLNVrkYGGTIuBOmbz3z4Xt8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-05-01-preview/experimentation\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gB4ih+KBOxnkY/LwhTBgJuvxyjc=\nR:accounts.go\na:0:0:444\nZ:Q1Aupw510xJMt2M9WB9nsGfuIpMyo=\nR:client.go\na:0:0:444\nZ:Q1IniOOyy4+1hzqF3l7tCRvSZt7xs=\nR:enums.go\na:0:0:444\nZ:Q1o3O/ZMnEoERVgQj/5tCDMiSe/l0=\nR:models.go\na:0:0:444\nZ:Q1Oe1l8JgVUZbUiyFW950lGcl9brk=\nR:operations.go\na:0:0:444\nZ:Q1ZwfnMtjv5GRZV1f7nA2flMuIniw=\nR:projects.go\na:0:0:444\nZ:Q1PfwKjuG+zijvAK0QPFw+nv7Q440=\nR:version.go\na:0:0:444\nZ:Q14+G+REgynW1FQ0eY7YCdVt16DrE=\nR:workspaces.go\na:0:0:444\nZ:Q1k+I7sXqmwVY/Qrdn/CGUPCC1jCU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-05-01-preview/experimentation/experimentationapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wDwNvaQtTWu4Ug8B2Mjyz3R8NUY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-08-01-preview/compute\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rKjZaQapwVduTPHzrI4pUDWeZxQ=\nR:client.go\na:0:0:444\nZ:Q1vnG5QYIRbewqLMRbFypcopy+MoQ=\nR:enums.go\na:0:0:444\nZ:Q1RjsYTlVpQcwYwkqEVZpqUnD13dI=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1W/Q9y5S6ZgIIMFr/SrCPwI1JHuc=\nR:models.go\na:0:0:444\nZ:Q1d/3gPHVZCASAssbnLgME03S64YE=\nR:operationalizationclusters.go\na:0:0:444\nZ:Q1wENwDCK1Wy9UBOlc1JLoKA0nLJk=\nR:version.go\na:0:0:444\nZ:Q1c+LEDDrfEfmwdBHMYYb9jNBoRck=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearning/mgmt/2017-08-01-preview/compute/computeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gK/CV6JhnpEEPh7FOEDV7rmCGrQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2018-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2018-03-01-preview/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1x/OOvRiku/6JJH7FRnCO8MFQ7o0=\nR:client.go\na:0:0:444\nZ:Q1R9hJHxd13N6KaW91ZjxFtCLLI+Q=\nR:enums.go\na:0:0:444\nZ:Q13fzLf/4iXTFvouItLVkafrzSpZo=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1w/MuJuaaLQFLK8p3tQ2l+4V+kBU=\nR:models.go\na:0:0:444\nZ:Q1ZFxGlr3C1BOBwGKC8Sbdaj9Pr/k=\nR:operations.go\na:0:0:444\nZ:Q1a+wdnsaux8BU5D9qiObfLtFUCV8=\nR:version.go\na:0:0:444\nZ:Q1V4TWanwxuIyZ6rDYlql7Vxw6+eE=\nR:workspaces.go\na:0:0:444\nZ:Q1n9nQ8Yw8N1ao+DvkEA8AZ2p2u1A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2018-03-01-preview/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fjyDVUyilKxX3VpepptemiuBfgQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2020-02-18-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2020-02-18-preview/machinelearningservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zlHnB3xD2I/rSLDJ8tcCL128yuc=\nR:client.go\na:0:0:444\nZ:Q1jJgPpTCnZwYUohZ/FGk3Sctv2L0=\nR:enums.go\na:0:0:444\nZ:Q1XwlPKv3Z2sPawUtCGc6ukmkxvzs=\nR:machinelearningcompute.go\na:0:0:444\nZ:Q1f+KacI19nFe9cMcc+bFrZbHAIBs=\nR:models.go\na:0:0:444\nZ:Q17tbmeaAWaiMS9Uti6hyKQFm/zPE=\nR:operations.go\na:0:0:444\nZ:Q1949xlU9SN0gq+a9f7uyMjUEaaag=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1Zrp/BZUIf5GrqoCAaebvKRYHdXs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ZmaDISHGXDkW3t9kmn1mEZXrQNA=\nR:quotas.go\na:0:0:444\nZ:Q1YakHH0hn00Fr1NIu3YUpHF9lLUU=\nR:usages.go\na:0:0:444\nZ:Q15lCO69ubygzKHver5caBipgLEa0=\nR:version.go\na:0:0:444\nZ:Q12RxU99JDkmt9If1wcGS42YDWrwA=\nR:virtualmachinesizes.go\na:0:0:444\nZ:Q1P3Bse2OvtmMrdQZu7CVvGt7IXwQ=\nR:workspacefeatures.go\na:0:0:444\nZ:Q1r3VqDtwCwK5Z+1QUSTeQbgTZ6FY=\nR:workspaces.go\na:0:0:444\nZ:Q1vtA2Bnl+cz5YrQCuTlwXSQHcBVk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/machinelearningservices/mgmt/2020-02-18-preview/machinelearningservices/machinelearningservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Yn0JG6qNpnGLiN3AwXX7IamQu4g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/maintenance\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/maintenance/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/maintenance/mgmt/2018-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/maintenance/mgmt/2018-06-01-preview/maintenance\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gbjhGKjxnXFJS/09zHgZHePEky4=\nR:applyupdates.go\na:0:0:444\nZ:Q1Ri5+ajIy9loCl+hO7XfSRjwIc9w=\nR:client.go\na:0:0:444\nZ:Q12GARFUD8Wbpv28pU5ypgGddYi60=\nR:configurationassignments.go\na:0:0:444\nZ:Q1DucRyR4ag+YUv4K8ceecjEDCzpo=\nR:configurations.go\na:0:0:444\nZ:Q1HvU8S5hKVM/7iqIvJuweVUsPPq8=\nR:enums.go\na:0:0:444\nZ:Q11+ruWQOpY6OKO476iAXv/dIrCH0=\nR:models.go\na:0:0:444\nZ:Q1wz35OBasdyyRD01qm2ZXauihPUc=\nR:operations.go\na:0:0:444\nZ:Q1OOXUXRNtb0ecgi91fdZfmdRqgF8=\nR:updates.go\na:0:0:444\nZ:Q1QSuKNcrVdSm+Teo9FMcMP4UEDfk=\nR:version.go\na:0:0:444\nZ:Q1EOcBC/kJPvYNcZ5FFs5yUsZi98s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/maintenance/mgmt/2018-06-01-preview/maintenance/maintenanceapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1+RQlwyqNMhQQ6HzhK09hS/JV3OQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managednetwork\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managednetwork/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managednetwork/mgmt/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managednetwork/mgmt/2019-06-01-preview/managednetwork\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12Jom5jhI62tcCniLcn9eBkzNquc=\nR:client.go\na:0:0:444\nZ:Q1+f5Q7ImVqbWsmJ9SW0iL4wWaEr4=\nR:enums.go\na:0:0:444\nZ:Q1//hPJMnWRb4/mTgJkMgmd8Ab7CE=\nR:groups.go\na:0:0:444\nZ:Q1KpEQSnerid1NhhadCEJD7CeN93w=\nR:managednetworks.go\na:0:0:444\nZ:Q1d3nE73XTuBZtW2g2DazuMql8ddc=\nR:models.go\na:0:0:444\nZ:Q1YIhEezehnubNTPSdTzoZvkS6J2E=\nR:operations.go\na:0:0:444\nZ:Q1ZYkgTL+0ngd8Ag5DWwhpGAB9H5s=\nR:peeringpolicies.go\na:0:0:444\nZ:Q1VJYTNkS0x54UZDNYgGCDGAl7s68=\nR:scopeassignments.go\na:0:0:444\nZ:Q18EtgRV5sWknVbWlqz2xYEu0+AvU=\nR:version.go\na:0:0:444\nZ:Q1S8Y3ojt6x313wfsX0aJuaXAxW5c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managednetwork/mgmt/2019-06-01-preview/managednetwork/managednetworkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sf2xmjdO7H4tXNDKIqqk/HJzcdw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2018-06-01/managedservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1f6vgX51s6aX7Bvz9pFjkM3lKzCg=\nR:client.go\na:0:0:444\nZ:Q1AcCOUEw0eSFwdoJcQwsR4vzUcjM=\nR:enums.go\na:0:0:444\nZ:Q1uFVrB2PRj6Qa1W+6TtKkxMRK5g8=\nR:models.go\na:0:0:444\nZ:Q1EnnI+5fr2cZWzwf2/gZLFurtJYg=\nR:operations.go\na:0:0:444\nZ:Q10+7kchrhFRZJ61tobw1QqeC2dn4=\nR:registrationassignments.go\na:0:0:444\nZ:Q1DTW5DsAe7trFIEtvFfd2EkEBMZY=\nR:registrationdefinitions.go\na:0:0:444\nZ:Q194EblBEIhCh3VUTScDJRwnFv6Kk=\nR:version.go\na:0:0:444\nZ:Q1TF1L6pqIePqjC2rAhpeiaxUt6dY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2018-06-01/managedservices/managedservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SfYPrW2m4hdJ4AAFPIpqKMR9Ljg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2019-04-01/managedservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1XIVwupWAhhWT/OD7wCzln8rI0uI=\nR:client.go\na:0:0:444\nZ:Q1vIO+67+pF8RosKQk0SVbViA1UJ0=\nR:enums.go\na:0:0:444\nZ:Q1uFVrB2PRj6Qa1W+6TtKkxMRK5g8=\nR:models.go\na:0:0:444\nZ:Q17bCxpYOFpVgZ9CmmmdgML6Ilm00=\nR:operations.go\na:0:0:444\nZ:Q10+7kchrhFRZJ61tobw1QqeC2dn4=\nR:registrationassignments.go\na:0:0:444\nZ:Q1mm1aRAKRRNxwd02+YyCE4+txw4U=\nR:registrationdefinitions.go\na:0:0:444\nZ:Q1i0wgF8t99uzbgVdyggcfxl+3QaE=\nR:version.go\na:0:0:444\nZ:Q1IZMiF2vVKi0e/am4MAtqBjIVFHw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managedservices/mgmt/2019-04-01/managedservices/managedservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pLmK5ijZvNeogme6qmgB9BjbQ8k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managementpartner\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managementpartner/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managementpartner/mgmt/2018-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managementpartner/mgmt/2018-02-01/managementpartner\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Mn1vEeHb5vfkxfCyZtWB6hdnLjo=\nR:client.go\na:0:0:444\nZ:Q1T8HzQ35oZKDPxU0Vm7Fic8C5E3U=\nR:enums.go\na:0:0:444\nZ:Q1cz3oBAOzX/nm7ggCLYGLrJ7P9fQ=\nR:models.go\na:0:0:444\nZ:Q1Pg3tFb4K0qP9SEGzwon0IN1GfG0=\nR:operation.go\na:0:0:444\nZ:Q1eXJ7vgXRnEob62JwZCOtDLagIZ0=\nR:partner.go\na:0:0:444\nZ:Q1t/p1KcmRO6aKz0JFc6mBJ3BOWKU=\nR:partners.go\na:0:0:444\nZ:Q1m8vwFiPg7pjcFWO95OeQCHY/1C0=\nR:version.go\na:0:0:444\nZ:Q1T0jyPgW68s3Z2/Qb8OW5YSDdEQM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/managementpartner/mgmt/2018-02-01/managementpartner/managementpartnerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yYLSUefMdDbAwEfL7tQLv1N3/RQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-03-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-03-30-preview/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1arYR+TYD2lhvMBRwJ3dlbsok6tA=\nR:assets.go\na:0:0:444\nZ:Q19RF0LqyVqDtQNhT4ETubWTPfbV0=\nR:client.go\na:0:0:444\nZ:Q1+GSoh8Gj+KCqR5thmUEcczs4Y2c=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q17XBr9RrEESnXoppUoeC5PgF6LIk=\nR:enums.go\na:0:0:444\nZ:Q1/naPc+9dl2h1tlfRT2nI/6NxHho=\nR:jobs.go\na:0:0:444\nZ:Q1VOxlqHMlILfrXb6sKujX9Pd7iSc=\nR:liveevents.go\na:0:0:444\nZ:Q1DIywVwQsGGoUSQTrWY5QcWfiiJc=\nR:liveoutputs.go\na:0:0:444\nZ:Q1lBBnKpMw2riwOSzEuo/AgoMr1LU=\nR:locations.go\na:0:0:444\nZ:Q1Yv57Xuop/DVZ3XtcJA+NeFroWZU=\nR:mediaservices.go\na:0:0:444\nZ:Q1gQSxQSGTZXxg9j3tw/hmR9UyTXc=\nR:models.go\na:0:0:444\nZ:Q101b96ttmegtespm9ztIhhqqxmpM=\nR:operations.go\na:0:0:444\nZ:Q1T/01m4ZtkX7I3zAF+RQlEniHILY=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1113SSfsspD5mvZv+SXa9qKG4H4A=\nR:streaminglocators.go\na:0:0:444\nZ:Q181f2rW5wGQKBh/z1yT7vAfig2Io=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1pbTQE+lwyJZBPEkfUwEWdI4lY/M=\nR:transforms.go\na:0:0:444\nZ:Q1Bmr/l7h4jqQI7ZjCPohHjkhwvrI=\nR:version.go\na:0:0:444\nZ:Q176eq0Gq1fkdX+sKarNzVo6TW0sY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-03-30-preview/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wlIy8H72AQMGk/M6cLzovyezAUw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-06-01-preview/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DBaefBEZYuFDqbmWDi/nFbH29Ng=\nR:assets.go\na:0:0:444\nZ:Q1k/2jT+rIPYsuAngbjnYNnvPFqdQ=\nR:client.go\na:0:0:444\nZ:Q1zCoIaYNavrfrlhsmUPDGi5Mi294=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1735H09eVhpONNKdTcp9Z+ZEiK+E=\nR:enums.go\na:0:0:444\nZ:Q1/naPc+9dl2h1tlfRT2nI/6NxHho=\nR:jobs.go\na:0:0:444\nZ:Q1BUTSjAB77KaArCOoglIKwZcnyg4=\nR:liveevents.go\na:0:0:444\nZ:Q16SF1TE11QhKgZkHuAko3S66lErc=\nR:liveoutputs.go\na:0:0:444\nZ:Q1D29RWh0AEoU0y4oLjcwrAbMbmm8=\nR:locations.go\na:0:0:444\nZ:Q1fhk9RwezHH9cpzsY5nRGztMQV1E=\nR:mediaservices.go\na:0:0:444\nZ:Q1OphEz5yTO+x1ZsSIbUbzvcT8CRk=\nR:models.go\na:0:0:444\nZ:Q1WpzG0w+jBN/Y+J1RzAxtYKYqxjQ=\nR:operations.go\na:0:0:444\nZ:Q1FKQBb6gqKrX+f3ATmAY/oM2DIwo=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1ZtDUJr1IReg4+20NJia/Lve468I=\nR:streaminglocators.go\na:0:0:444\nZ:Q1Y0yfzTIrD9zwFkB+Sp27b9pmog8=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1+wtNZ+Qm1cu58T45pMJWR3WCopk=\nR:transforms.go\na:0:0:444\nZ:Q1LtqM6YIdQRxzC3ULnXJYCYZy6+4=\nR:version.go\na:0:0:444\nZ:Q1nY+ctaCi/awLMyEupGKoVgzYzAo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2018-06-01-preview/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XDECuIFVzeZvFT8MV7ohFihS5aM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2019-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2019-05-01-preview/media\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SQVarZZlUTxP4kzJOE9/zq4rJXI=\nR:accountfilters.go\na:0:0:444\nZ:Q13OBHRtbYXSxdsSxrxxix1TnftZs=\nR:assetfilters.go\na:0:0:444\nZ:Q1QNwaNog83kW+OHSEXaWkwc0cqms=\nR:assets.go\na:0:0:444\nZ:Q1aJOC4tFFpIJYz6oIRMsogrGIXiY=\nR:client.go\na:0:0:444\nZ:Q1XqFle4ujiepls2W6hnCNbpQqtgk=\nR:contentkeypolicies.go\na:0:0:444\nZ:Q1g1YFNaF2vqZNZlEX2EyI6sxGFQY=\nR:enums.go\na:0:0:444\nZ:Q1o6zPatL/m7nW1o/5ncO1nqFB+sE=\nR:jobs.go\na:0:0:444\nZ:Q1jXytWN9EtiJuIvB3SLYISu6TKwE=\nR:liveevents.go\na:0:0:444\nZ:Q1Z/sHb82UOyJT7GXTcUzqjA5qW1w=\nR:liveoutputs.go\na:0:0:444\nZ:Q16+LXQ3D0gg+3A84aqVREXY0A9uw=\nR:locations.go\na:0:0:444\nZ:Q13ihuuQBlnHBDF+l5BPjNrvc4Kcw=\nR:mediaservices.go\na:0:0:444\nZ:Q17NeaEQwQuq38u2RKOso0aKYn53k=\nR:models.go\na:0:0:444\nZ:Q1kW0WgUE4XjHoWMAiwUAsG6t3XSM=\nR:operations.go\na:0:0:444\nZ:Q1dlH8fI80a84piGua01oFB8uVvmQ=\nR:streamingendpoints.go\na:0:0:444\nZ:Q1cIeCq+nexrWCfAy190Q8N6Omr+4=\nR:streaminglocators.go\na:0:0:444\nZ:Q1xmTZuBPqKidfVUy/E2DvFn0KgGc=\nR:streamingpolicies.go\na:0:0:444\nZ:Q1bGVwFnbyST1AXNB3NRDLYaQ8ZPo=\nR:transforms.go\na:0:0:444\nZ:Q1jXsHpH9Th1DRybktwjCaLRVug8I=\nR:version.go\na:0:0:444\nZ:Q1VJPUyF1q9StqwfrHvlbb9ZinGmw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mediaservices/mgmt/2019-05-01-preview/media/mediaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1v2t/PQPLXoOiy/tzx7rMLZ2M33E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/migrate\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/migrate/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/migrate/mgmt/2018-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/migrate/mgmt/2018-09-01-preview/migrate\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1L2M3adMc85vFSpwplS54GmjLOe4=\nR:client.go\na:0:0:444\nZ:Q1NKSnSB0tJoDjTpTg1cTLApYzOBE=\nR:databaseinstances.go\na:0:0:444\nZ:Q1IWvZm1bLwQdVwBMq4dt7JsI22kQ=\nR:databases.go\na:0:0:444\nZ:Q1jwYIz6j0KJf8a5W7X1oR+iTCSHg=\nR:enums.go\na:0:0:444\nZ:Q1BGdxTfsHLZhM5GHg+pQkKR8agMg=\nR:events.go\na:0:0:444\nZ:Q1Ouejh5fgDziBwGWEJo3JDbF2ER0=\nR:machines.go\na:0:0:444\nZ:Q1fIpDT3Wl4MUpKZiWezdglMSxuLU=\nR:models.go\na:0:0:444\nZ:Q14u+QBW1lgHOSflOdHeHXjvexTso=\nR:operations.go\na:0:0:444\nZ:Q1QK7sFPIQuheSQKfszm1T9nIZHww=\nR:projects.go\na:0:0:444\nZ:Q10bLbhvhx0BE0g2b2gof/QDuLqOU=\nR:solutions.go\na:0:0:444\nZ:Q1zdPm/yG+6i+8+d+Hn00BYuYPTm8=\nR:version.go\na:0:0:444\nZ:Q1lgmG754PK8dTRJrJa6Vku0JK7lE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/migrate/mgmt/2018-09-01-preview/migrate/migrateapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1PfP32iTHbExnny3nnhgtZFwGNAM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mixedreality\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mixedreality/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mixedreality/mgmt/2021-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mixedreality/mgmt/2021-03-01-preview/mixedreality\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JgXOGmUKAjL2N+uPpkWAPA6xnOY=\nR:client.go\na:0:0:444\nZ:Q1Y20bzmi+O2ORaU6CPLmIQOzqaMk=\nR:enums.go\na:0:0:444\nZ:Q1/SV47vwnIIzLMfK6P/1IPh5/u1w=\nR:models.go\na:0:0:444\nZ:Q1fbuySFvobcN8CPrUBnLu4kYAP0U=\nR:objectanchorsaccounts.go\na:0:0:444\nZ:Q1v2jq+ro4kldMhzsOmC22OxMJaZo=\nR:operations.go\na:0:0:444\nZ:Q18BZ8MYrmu2Ttd/rSIuksaswbhSs=\nR:remoterenderingaccounts.go\na:0:0:444\nZ:Q1Yl/C4eaDVfP43LP2h4MDTXMcYmA=\nR:spatialanchorsaccounts.go\na:0:0:444\nZ:Q1ry0aUANbtOfEA24H1buAgjemNGc=\nR:version.go\na:0:0:444\nZ:Q128FJwYpfpxCSiiQn2QOiWgQ82yk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mixedreality/mgmt/2021-03-01-preview/mixedreality/mixedrealityapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10KBrVIexw1NkictdqbLyMY4Wrf0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/2018-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/2018-09-01-preview/monitor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1h7jbGcvVsOF9wLcu4tc1OBlcubE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1gY/srq5zoHO0d5tQsl7d4A+kPWk=\nR:metrics.go\na:0:0:444\nZ:Q1xXwkJ1jSpqRwNDO4yCkEOSn33+0=\nR:models.go\na:0:0:444\nZ:Q12Wwl7c7ujGdnSWwSObDbI5AI5bg=\nR:version.go\na:0:0:444\nZ:Q1WFXyYJhl0N/thL07kmRpc90mPZA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/2018-09-01-preview/monitor/monitorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UPKc7rX0EJPt2UYFcf1tbTWbv4I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2018-03-01/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1jputgBlH0v+1xTC82LtoMlSy5Nc=\nR:actiongroups.go\na:0:0:444\nZ:Q1FciKdcFyO4BX2RgPmL7ZqNAqYSA=\nR:activitylogalerts.go\na:0:0:444\nZ:Q1j571yi+HC2hD/5oSW0Z76VawZ8I=\nR:activitylogs.go\na:0:0:444\nZ:Q1Vi9xJTr/leMEQrXqGphoW8C0iKg=\nR:alertruleincidents.go\na:0:0:444\nZ:Q1MBKIxDRR6tISp3ca1YuetdMSjfY=\nR:alertrules.go\na:0:0:444\nZ:Q16U1hbM7X60ElGIociSqplMhW494=\nR:autoscalesettings.go\na:0:0:444\nZ:Q1k8dW9UXRCM/9910rWxqwCPuG/eU=\nR:client.go\na:0:0:444\nZ:Q1Kh27VhGMu4utxL+ECZ/Dy+MShSM=\nR:diagnosticsettings.go\na:0:0:444\nZ:Q1CKVJvWpV4z//Hr8Z2udvEpCcqxg=\nR:diagnosticsettingscategory.go\na:0:0:444\nZ:Q1DKagRKxqqTgYp4btZA/DuvEAx1k=\nR:enums.go\na:0:0:444\nZ:Q1YAgUe+Pnvc12qGdk2RCVjdXzjyc=\nR:eventcategories.go\na:0:0:444\nZ:Q1dS4YZmEx1ujX1nvpuzzEajgMESA=\nR:logprofiles.go\na:0:0:444\nZ:Q1F2sWPFPE2H+Qs6PJ0bTvddhrvBc=\nR:metricalerts.go\na:0:0:444\nZ:Q1suPM+ysJ1E2FMl+2uGdFbK6ZwGU=\nR:metricalertsstatus.go\na:0:0:444\nZ:Q1t5uZG8SC24ivbiVieWT5U+OJrAc=\nR:metricbaseline.go\na:0:0:444\nZ:Q13avOr+LrTcKcp/cc2Q1kS1udKnQ=\nR:metricdefinitions.go\na:0:0:444\nZ:Q1PuwzGqDWRs2wbj/BZlmk98uUlVQ=\nR:metrics.go\na:0:0:444\nZ:Q1UNEuLbsh80Jcnpb5M2+kfvR8xqk=\nR:models.go\na:0:0:444\nZ:Q1Icg7eZz29p/7Xa7IZ26QDZoRAsU=\nR:operations.go\na:0:0:444\nZ:Q1Z98R+VMzA2tIlHHw0s8MMRVNBnM=\nR:scheduledqueryrules.go\na:0:0:444\nZ:Q14UCNkfWd3vuN8axFbMt6LO/eemU=\nR:tenantactivitylogs.go\na:0:0:444\nZ:Q1jKCH6ndMCefOors+UKtA2s5kJd4=\nR:version.go\na:0:0:444\nZ:Q1n3kcwBKQsPMnWdL9q/Fmmalim7A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2018-03-01/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SymzbRL2Hm2VxdPZHlttbS1bqx0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2019-06-01/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1z0QFowHo1YNI4O8JU34Ke0naJSQ=\nR:actiongroups.go\na:0:0:444\nZ:Q16tcIgrpXpnJqJSyd3K77jyR0Rm8=\nR:activitylogalerts.go\na:0:0:444\nZ:Q1j571yi+HC2hD/5oSW0Z76VawZ8I=\nR:activitylogs.go\na:0:0:444\nZ:Q1Vi9xJTr/leMEQrXqGphoW8C0iKg=\nR:alertruleincidents.go\na:0:0:444\nZ:Q1MBKIxDRR6tISp3ca1YuetdMSjfY=\nR:alertrules.go\na:0:0:444\nZ:Q16U1hbM7X60ElGIociSqplMhW494=\nR:autoscalesettings.go\na:0:0:444\nZ:Q1k8dW9UXRCM/9910rWxqwCPuG/eU=\nR:baselines.go\na:0:0:444\nZ:Q1SIsm/gMXtBBzHY0zY/mlHnlkexY=\nR:client.go\na:0:0:444\nZ:Q1Kh27VhGMu4utxL+ECZ/Dy+MShSM=\nR:diagnosticsettings.go\na:0:0:444\nZ:Q1CKVJvWpV4z//Hr8Z2udvEpCcqxg=\nR:diagnosticsettingscategory.go\na:0:0:444\nZ:Q1DKagRKxqqTgYp4btZA/DuvEAx1k=\nR:enums.go\na:0:0:444\nZ:Q1LXNcnOYiMoaxTeFJcJPHNs3VHmY=\nR:eventcategories.go\na:0:0:444\nZ:Q1dS4YZmEx1ujX1nvpuzzEajgMESA=\nR:logprofiles.go\na:0:0:444\nZ:Q1F2sWPFPE2H+Qs6PJ0bTvddhrvBc=\nR:metricalerts.go\na:0:0:444\nZ:Q1suPM+ysJ1E2FMl+2uGdFbK6ZwGU=\nR:metricalertsstatus.go\na:0:0:444\nZ:Q1t5uZG8SC24ivbiVieWT5U+OJrAc=\nR:metricbaseline.go\na:0:0:444\nZ:Q13avOr+LrTcKcp/cc2Q1kS1udKnQ=\nR:metricdefinitions.go\na:0:0:444\nZ:Q1PuwzGqDWRs2wbj/BZlmk98uUlVQ=\nR:metricnamespaces.go\na:0:0:444\nZ:Q1Lp/3ryPkflwSYbj1YCp2jFUvTgc=\nR:metrics.go\na:0:0:444\nZ:Q1UNEuLbsh80Jcnpb5M2+kfvR8xqk=\nR:models.go\na:0:0:444\nZ:Q1pESsJjIH7zJE43G0RJH8icwd3u8=\nR:operations.go\na:0:0:444\nZ:Q1Z98R+VMzA2tIlHHw0s8MMRVNBnM=\nR:scheduledqueryrules.go\na:0:0:444\nZ:Q14UCNkfWd3vuN8axFbMt6LO/eemU=\nR:tenantactivitylogs.go\na:0:0:444\nZ:Q1jKCH6ndMCefOors+UKtA2s5kJd4=\nR:version.go\na:0:0:444\nZ:Q1VdJaMWNYV/zl/wvohtpkTOyDI2w=\nR:vminsights.go\na:0:0:444\nZ:Q1Wu/bNJUIUGfY6V293qgGM0c87jU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2019-06-01/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uiOQZ9dAYkKxe3JnuMChIXsp/vU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-07-01-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16OLpHeNuZadgUzlBbDy4Kevk3wg=\nR:actiongroups.go\na:0:0:444\nZ:Q1wrSDNuIGQeTlAucS0pM7RwZeuY8=\nR:activitylogalerts.go\na:0:0:444\nZ:Q1YiFmHG+YtXDPqeCX7iQv9kItEl4=\nR:activitylogs.go\na:0:0:444\nZ:Q1sD37WdFW1DrFtmrz3cUDYD9l0Qc=\nR:alertruleincidents.go\na:0:0:444\nZ:Q1uUutzfvHq5812pVSIbiLv5hDgb4=\nR:alertrules.go\na:0:0:444\nZ:Q1woxJOkmtUGnv4DoLZ1/Ko+6fIJ8=\nR:autoscalesettings.go\na:0:0:444\nZ:Q1VZqdhtmcSuhCIQIRF5Rw6/rDgoI=\nR:baselines.go\na:0:0:444\nZ:Q15q3RS5nYJA2vaHz7LWgnFuBeLqI=\nR:client.go\na:0:0:444\nZ:Q1Kh27VhGMu4utxL+ECZ/Dy+MShSM=\nR:datacollectionendpoints.go\na:0:0:444\nZ:Q1nU1Jxoq7jTXOTSWEQ8kTrqHIHp4=\nR:datacollectionruleassociations.go\na:0:0:444\nZ:Q1dkOfJT2mfrVS2R4+Qvy4GLktT28=\nR:datacollectionrules.go\na:0:0:444\nZ:Q1rvvLiblvzRlmHjy9i17xg6W/J4o=\nR:diagnosticsettings.go\na:0:0:444\nZ:Q1UeSRMhc3lj1d+GJBYQiUtSReD0Y=\nR:diagnosticsettingscategory.go\na:0:0:444\nZ:Q1PApA1jIofKLkgcgaOScAEZam0Jo=\nR:enums.go\na:0:0:444\nZ:Q1MESAvdQV72DLSk9asVSOsgpu2to=\nR:eventcategories.go\na:0:0:444\nZ:Q1ROSeZHWmHHVmHwc/4T+dEMPAf/o=\nR:logprofiles.go\na:0:0:444\nZ:Q17NvEwIbeAZ+CXoQki87cnNAO8WY=\nR:metricalerts.go\na:0:0:444\nZ:Q1D32jOJkkVLn6MMP6UU9ZNnnFKu4=\nR:metricalertsstatus.go\na:0:0:444\nZ:Q1zQpEsRXALet3WSetFQjqEwYxpcM=\nR:metricdefinitions.go\na:0:0:444\nZ:Q1s4ovEwDjzKzeLx0MnPfzRr1h2pY=\nR:metricnamespaces.go\na:0:0:444\nZ:Q1pmaaduy4AYSwU/FFqk4P6l7/aLs=\nR:metrics.go\na:0:0:444\nZ:Q1ZsUT0Ea6PKCkhZNiWqR3PZ8qg/c=\nR:models.go\na:0:0:444\nZ:Q1IX4BPLwdOxrLsP3h3sp18aIGDio=\nR:operations.go\na:0:0:444\nZ:Q1QtZp/reqRRklKA6kQZWcWiLBafo=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1SEwJ5tqBfNkyIS0k+zbs0Dbj3pE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q166vLPh6nV6bPRB91/sQws57km7c=\nR:privatelinkscopedresources.go\na:0:0:444\nZ:Q1xHyq5qe8sIbF/L9zbgsZergwhGQ=\nR:privatelinkscopeoperationstatus.go\na:0:0:444\nZ:Q1Q+G9dCGdA/vqOS02Qi8I37CLl94=\nR:privatelinkscopes.go\na:0:0:444\nZ:Q1XKdPZgpIJ8D5q09mjp9p/fru12s=\nR:scheduledqueryrules.go\na:0:0:444\nZ:Q10t2uagetwZpd15jh+I8d71tKugw=\nR:tenantactivitylogs.go\na:0:0:444\nZ:Q1Ianbi2/zSc+75Gry9dTYCgm5nlY=\nR:version.go\na:0:0:444\nZ:Q1UUym7fNlpUIWLLC/WG7qTnZ+ISM=\nR:vminsights.go\na:0:0:444\nZ:Q1Wu/bNJUIUGfY6V293qgGM0c87jU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-07-01-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KwyXHtDcssUmJKi1byTRWdXYus4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-09-01-preview/datacollection\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18ug8N23E/TXjUfKXwH6lnJGk0Rc=\nR:client.go\na:0:0:444\nZ:Q1TUycQHyQa1nBa8n0TUae0NpcrJs=\nR:endpoints.go\na:0:0:444\nZ:Q164Y2Cd/HH02SGe3JxOkDLQZMRbc=\nR:enums.go\na:0:0:444\nZ:Q1kHWrslik9F7N24pX2CBiZgXCNFo=\nR:models.go\na:0:0:444\nZ:Q1/QQTI5NqkPPE50yHxRdO1AzeYE8=\nR:ruleassociations.go\na:0:0:444\nZ:Q10YGN/6XIy2e04f+Bwgs8Bm+3iIE=\nR:rules.go\na:0:0:444\nZ:Q1ZkM1TgTnclK0idiv5c7urvdbJds=\nR:version.go\na:0:0:444\nZ:Q1Lwn5uWonnbJRAGnhFlPJwzocbx0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-09-01-preview/datacollection/datacollectionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XXkQwamRoFP+shXxwwIL20mmW5U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-09-01-preview/insights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12fuDY7MGoWkLPKhzzMR0liSeu64=\nR:actiongroups.go\na:0:0:444\nZ:Q1af1u8kzJlZV86b1yFjeyRCKVb/M=\nR:activitylogalerts.go\na:0:0:444\nZ:Q1YiFmHG+YtXDPqeCX7iQv9kItEl4=\nR:activitylogs.go\na:0:0:444\nZ:Q1sD37WdFW1DrFtmrz3cUDYD9l0Qc=\nR:alertruleincidents.go\na:0:0:444\nZ:Q1uUutzfvHq5812pVSIbiLv5hDgb4=\nR:alertrules.go\na:0:0:444\nZ:Q1woxJOkmtUGnv4DoLZ1/Ko+6fIJ8=\nR:autoscalesettings.go\na:0:0:444\nZ:Q1VZqdhtmcSuhCIQIRF5Rw6/rDgoI=\nR:baselines.go\na:0:0:444\nZ:Q15q3RS5nYJA2vaHz7LWgnFuBeLqI=\nR:client.go\na:0:0:444\nZ:Q1Kh27VhGMu4utxL+ECZ/Dy+MShSM=\nR:datacollectionendpoints.go\na:0:0:444\nZ:Q1nU1Jxoq7jTXOTSWEQ8kTrqHIHp4=\nR:datacollectionruleassociations.go\na:0:0:444\nZ:Q1dkOfJT2mfrVS2R4+Qvy4GLktT28=\nR:datacollectionrules.go\na:0:0:444\nZ:Q1rvvLiblvzRlmHjy9i17xg6W/J4o=\nR:diagnosticsettings.go\na:0:0:444\nZ:Q1UeSRMhc3lj1d+GJBYQiUtSReD0Y=\nR:diagnosticsettingscategory.go\na:0:0:444\nZ:Q1PApA1jIofKLkgcgaOScAEZam0Jo=\nR:enums.go\na:0:0:444\nZ:Q1trYsYdhKxmtRHVLzq8/BT1uGMT4=\nR:eventcategories.go\na:0:0:444\nZ:Q1ROSeZHWmHHVmHwc/4T+dEMPAf/o=\nR:logprofiles.go\na:0:0:444\nZ:Q17NvEwIbeAZ+CXoQki87cnNAO8WY=\nR:metricalerts.go\na:0:0:444\nZ:Q1D32jOJkkVLn6MMP6UU9ZNnnFKu4=\nR:metricalertsstatus.go\na:0:0:444\nZ:Q1zQpEsRXALet3WSetFQjqEwYxpcM=\nR:metricdefinitions.go\na:0:0:444\nZ:Q1s4ovEwDjzKzeLx0MnPfzRr1h2pY=\nR:metricnamespaces.go\na:0:0:444\nZ:Q1pmaaduy4AYSwU/FFqk4P6l7/aLs=\nR:metrics.go\na:0:0:444\nZ:Q1ZsUT0Ea6PKCkhZNiWqR3PZ8qg/c=\nR:models.go\na:0:0:444\nZ:Q1qW/UAgP2nANzDMv+wD4IdzOreAA=\nR:operations.go\na:0:0:444\nZ:Q1QtZp/reqRRklKA6kQZWcWiLBafo=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1SEwJ5tqBfNkyIS0k+zbs0Dbj3pE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q166vLPh6nV6bPRB91/sQws57km7c=\nR:privatelinkscopedresources.go\na:0:0:444\nZ:Q1xHyq5qe8sIbF/L9zbgsZergwhGQ=\nR:privatelinkscopeoperationstatus.go\na:0:0:444\nZ:Q1Q+G9dCGdA/vqOS02Qi8I37CLl94=\nR:privatelinkscopes.go\na:0:0:444\nZ:Q1XKdPZgpIJ8D5q09mjp9p/fru12s=\nR:scheduledqueryrules.go\na:0:0:444\nZ:Q10t2uagetwZpd15jh+I8d71tKugw=\nR:tenantactivitylogs.go\na:0:0:444\nZ:Q1Ianbi2/zSc+75Gry9dTYCgm5nlY=\nR:version.go\na:0:0:444\nZ:Q1bLgxANyyPhDJCjn57PT3weU6C1Y=\nR:vminsights.go\na:0:0:444\nZ:Q1Wu/bNJUIUGfY6V293qgGM0c87jU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/monitor/mgmt/2021-09-01-preview/insights/insightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1C+JqV6ydgqqgJxbJviyZwK/OcvE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2015-08-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2015-08-31-preview/msi\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13/f8GFNGb25uaygbPUMSLPNSMCU=\nR:client.go\na:0:0:444\nZ:Q1Z4dCo9spXOJPbSFVV6JpWZDpnWo=\nR:models.go\na:0:0:444\nZ:Q1zZaLfIcy++AZAjhhsDti+Mbq1I0=\nR:operations.go\na:0:0:444\nZ:Q1JSFuFe2lf2IL7dHSIBSMHLd4yy0=\nR:systemassignedidentities.go\na:0:0:444\nZ:Q1SjslbFdN+jOIUD0XLAsSyTqXXIM=\nR:userassignedidentities.go\na:0:0:444\nZ:Q1xmap/4p+5ACbrm5mPKyJISSxNFI=\nR:version.go\na:0:0:444\nZ:Q1qd0N4YDsJGrxBrVVvgIZJLzleHY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2015-08-31-preview/msi/msiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14frbHxrWgxTBEBLp1wGFY90pGIY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2021-09-30-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2021-09-30-preview/msi\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1khNAcYpHWEdDaw5R3ZQR3JKrRlo=\nR:client.go\na:0:0:444\nZ:Q15Q+BvuwyZ5OV8VCaNl9ESLrRK2o=\nR:models.go\na:0:0:444\nZ:Q1HMfXUWLjpW3UyiUvdIbGcAQVlpU=\nR:operations.go\na:0:0:444\nZ:Q1FnVE6lK3BviSc/o5rHtvpl9Z6zs=\nR:systemassignedidentities.go\na:0:0:444\nZ:Q1bbQcQtORwhGwvVF/nMAiXU4ImUk=\nR:userassignedidentities.go\na:0:0:444\nZ:Q1i7kQchdVzh6jnMZKPLvfEfNyLzw=\nR:version.go\na:0:0:444\nZ:Q1C2+PqBYSYGUqwIppvcydswc9FSw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/msi/mgmt/2021-09-30-preview/msi/msiapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HG+pLuZ1AsyCQKSNWEfz1qEbtaM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2017-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2017-12-01-preview/mysql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1cvSxHVa3ZyeL91Ck24eQzXyq57U=\nR:checknameavailability.go\na:0:0:444\nZ:Q1SO8KFzZjYk6kFj/Z2/2zrnBbZdI=\nR:client.go\na:0:0:444\nZ:Q1qExTJyhoLnrvFcNa85gZ4lICbRY=\nR:configurations.go\na:0:0:444\nZ:Q1L3DVJhRflAmVFvBIwPBOo5Ne8+4=\nR:databases.go\na:0:0:444\nZ:Q1Gamx8VQIqeKKuCkVx+3qXG06hBI=\nR:enums.go\na:0:0:444\nZ:Q1MQuloBEQ3SVlDYVLRD2QPx9D1as=\nR:firewallrules.go\na:0:0:444\nZ:Q1Fz0hvhsd+aG9mTiu7/qejX4WNvs=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q14/kXUnAkwsSU4K1CJ/fmiew45i8=\nR:logfiles.go\na:0:0:444\nZ:Q1i9iDmNKcJczmvLLu9sRJinipM7g=\nR:models.go\na:0:0:444\nZ:Q1I3BzACvRvTWEejJN0hPgZkgbUh0=\nR:operations.go\na:0:0:444\nZ:Q1uf7+ktx62mVx65YImNjZYIzOStQ=\nR:replicas.go\na:0:0:444\nZ:Q10W1o454BnLvQIVrEDtxd941pMHQ=\nR:serveradministrators.go\na:0:0:444\nZ:Q1iMniuVRD9+MTJ55qEJaSyS1cNks=\nR:servers.go\na:0:0:444\nZ:Q1is62WlVSU9htH9N4GvAg2rIFq+g=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q196gqoYrbKT586R3FIKuRo3U2Ffo=\nR:version.go\na:0:0:444\nZ:Q1FrcCF9Kvspnb6lkAhwA0lLoGNPg=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1guW6qxi6mPRy4zRbh+XjxbXMImA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2017-12-01-preview/mysql/mysqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1veNbQBgRWTCT++4gQugisg1KQe4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2020-07-01-preview/mysqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lxBR9YvRz0uBQEYSAHHJKCxmq6E=\nR:checknameavailability.go\na:0:0:444\nZ:Q1u/EdhguSIpOvp4PTFRFXqs3M0+o=\nR:checkvirtualnetworksubnetusage.go\na:0:0:444\nZ:Q1j/85/pLIPGxtUONwqyVfO6h+hro=\nR:client.go\na:0:0:444\nZ:Q1pG+/huSqMpaiW45zbbbJznWUHBM=\nR:configurations.go\na:0:0:444\nZ:Q10tcXNiYMjMgXLIRRX5lXsnI/iSI=\nR:databases.go\na:0:0:444\nZ:Q1ua/X1FxrnYm0etNTkK1a3tG7a2g=\nR:enums.go\na:0:0:444\nZ:Q1+nlcAjd4+Xy5654NIvquRN8ZVPo=\nR:firewallrules.go\na:0:0:444\nZ:Q1QvCPUSEdf5Af5iLtXy1EPSe5S5g=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q1wZt9+V4qZMk/aHDHwc3nWKIhmls=\nR:models.go\na:0:0:444\nZ:Q1rCxOZXCAcPMCzc4Gr/5oMGPkZnw=\nR:operations.go\na:0:0:444\nZ:Q1Zec2koE0r4z4owZrFvPRQ8l+t4w=\nR:replicas.go\na:0:0:444\nZ:Q15M1hNl0Mc1mh2oj0PfW/Jdn2BEM=\nR:serverkeys.go\na:0:0:444\nZ:Q1GsoMHxss3+5rDlyDa+rQ+/bY958=\nR:servers.go\na:0:0:444\nZ:Q1ej1lnxGJdwRJRGEWjdIQeJoPpgk=\nR:version.go\na:0:0:444\nZ:Q1UOehfS0eqwKsuEKyzZhFbxzC2A4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2020-07-01-preview/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XyIpg6XH6H87MSm//7vTNqoAKJw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2021-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2021-05-01-preview/mysqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lrcgXmhUpgN3s2Qk4DtXwOkoh7c=\nR:backups.go\na:0:0:444\nZ:Q1is0iZHaXlYmGKyEvWI/LXcrFFAM=\nR:checknameavailability.go\na:0:0:444\nZ:Q1vCF8YGvwb31umt/wv6rOeExAHRY=\nR:checkvirtualnetworksubnetusage.go\na:0:0:444\nZ:Q1H0oK67n7geZDhvU9aDy5cKm22X4=\nR:client.go\na:0:0:444\nZ:Q17cyUuOpnTDCIChN8CEpWY93Yjj4=\nR:configurations.go\na:0:0:444\nZ:Q1Eo1WS9IQSYVjl2F4SPxSIH0z+j0=\nR:databases.go\na:0:0:444\nZ:Q1O4KgDMozpFQQYYvu18/K5p6ciaE=\nR:enums.go\na:0:0:444\nZ:Q1KQU14gnwyfwhiE1SeHiZJfxRrhw=\nR:firewallrules.go\na:0:0:444\nZ:Q1pAuezbaasETyCDTzXYGQB/C6oDc=\nR:getprivatednszonesuffix.go\na:0:0:444\nZ:Q1okN/iN0InFQoZIuRrXfeCY8nr/U=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q1GuZg4hiDAugVCgFPdBiByTLCKLU=\nR:models.go\na:0:0:444\nZ:Q1EzAwkHEDZHXebXEkB7H2FhU7PZI=\nR:operations.go\na:0:0:444\nZ:Q1iumrPFCQKaezc78J+KfaOjVQyWs=\nR:replicas.go\na:0:0:444\nZ:Q1v4uRJ8XlGY/44XxR5Di+clZq8RI=\nR:servers.go\na:0:0:444\nZ:Q1dCGQds70Tm06ziXCqhF4TPgmTbQ=\nR:version.go\na:0:0:444\nZ:Q13Zg+vjyKFsd0T5codmBO/gNR2+k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/mysql/mgmt/2021-05-01-preview/mysqlflexibleservers/mysqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mzWCEKjlY4ZlRMt6bSJaueA3yVc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/netapp\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/netapp/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/netapp/mgmt/2017-08-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/netapp/mgmt/2017-08-15/netapp\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1z+kKGeVRE2B7KCje8saBToRclbU=\nR:accounts.go\na:0:0:444\nZ:Q15UgylfD/gNU+vMlteF7EH4HO648=\nR:client.go\na:0:0:444\nZ:Q1ucdQ1T4wLsog+VOwpitWwFkRm94=\nR:enums.go\na:0:0:444\nZ:Q13EPhXHjotBIhZhqay2kAs6N8Sos=\nR:models.go\na:0:0:444\nZ:Q1duH5K24gQDIo0e8UJ2MX4aY8hZo=\nR:mounttargets.go\na:0:0:444\nZ:Q15rWq7s+BwgaTGX5MOHjLr8FKIhs=\nR:operations.go\na:0:0:444\nZ:Q1RG0pknnqi+8PikkW8ZBdY3bNQyQ=\nR:pools.go\na:0:0:444\nZ:Q16PrQ5Ky6fachahXKr/y4ruAEzlA=\nR:snapshots.go\na:0:0:444\nZ:Q1F/f9QQOCDvfNnrYydlndlrXJ+Fo=\nR:version.go\na:0:0:444\nZ:Q1GMDHtKlSZbcQR60I2mvRg7fFDwE=\nR:volumes.go\na:0:0:444\nZ:Q1ClrOuLptjwjpqQ/2vJr7PA7De58=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/netapp/mgmt/2017-08-15/netapp/netappapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12ywxrPxrauH0XnjFBGg8I3rNSX0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2015-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2015-11-01-preview/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ZESjz7trznqpxS5q3f1Hv1uAyxw=\nR:client.go\na:0:0:444\nZ:Q1rzT45lB6oCmNI/y9VIO5DpQsu40=\nR:datasources.go\na:0:0:444\nZ:Q1ICQgzTHNpv1IRdPhs7Jjqyx2bKU=\nR:enums.go\na:0:0:444\nZ:Q1rE7KdTkGLZgEgWk0krGENJtS0es=\nR:linkedservices.go\na:0:0:444\nZ:Q1uitOCCTRRhYLQNe6VsKuaHg9JCw=\nR:models.go\na:0:0:444\nZ:Q1FeaEMJSGChR/VecEsGdLsXsr+AI=\nR:operations.go\na:0:0:444\nZ:Q1+8hggqPuI2GJUwuTOr8z+HTXcuI=\nR:version.go\na:0:0:444\nZ:Q1Mx+vl6/e8W8xGgf4ZwNi9QfAvJg=\nR:workspaces.go\na:0:0:444\nZ:Q1D5JMP614AmmaKLqQfR+6FdUmOxo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2015-11-01-preview/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1hsMUHXbN2L9LO+rzNVkdOp4ifLU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2015-11-01-preview/servicemap\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mC224hyf6vZtUt9ClbDmRn6Je9I=\nR:client.go\na:0:0:444\nZ:Q1XkD9r/ug3RBkz/yUZcQK08lC2OY=\nR:clientgroups.go\na:0:0:444\nZ:Q1N0OqxtVKDIfIzu0ESwkjyL+FG1E=\nR:enums.go\na:0:0:444\nZ:Q11sMrVA4jE1hUXC3uAnCqMvG3H9A=\nR:machinegroups.go\na:0:0:444\nZ:Q1w+olpeDc5mh0nmYx8uekcChn/Fo=\nR:machines.go\na:0:0:444\nZ:Q1Yff5C0jWGvNYzNDpiL3c//gatF0=\nR:maps.go\na:0:0:444\nZ:Q1ByJX2TEyZE5UiUyqpZjApQf0ejs=\nR:models.go\na:0:0:444\nZ:Q10PToRWoPUmJwBXjzsdWmhPJz8q4=\nR:ports.go\na:0:0:444\nZ:Q1TKryjf9fL6S9aY5zted9JgjLwuE=\nR:processes.go\na:0:0:444\nZ:Q1QB6Co3EiJBDXJBa0ZQp+y+d0Em0=\nR:summaries.go\na:0:0:444\nZ:Q1agrM/mlvE/SzZaXb6F15toXMh+g=\nR:version.go\na:0:0:444\nZ:Q1dj/pbcmNumxG5KB8q7zjBHUXRV4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2015-11-01-preview/servicemap/servicemapapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1teOUAKoOFdkjT+3spVVDxTaBkbY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2020-03-01-preview/operationalinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10GlPZdskZAGenYQDmr+ZGdBEuhQ=\nR:availableservicetiers.go\na:0:0:444\nZ:Q12+2/PkLJMtT+pvn5MX6NN5xs2tw=\nR:client.go\na:0:0:444\nZ:Q1y5SG4wWxqUs8hnMV+spoSSSTSB8=\nR:clusters.go\na:0:0:444\nZ:Q1QD+ZpVS3o1/XWDSsj3Shn+j2K7I=\nR:datacollectorlogs.go\na:0:0:444\nZ:Q1KXf+q6fV/lZLcG+0B1qIUoMLFTw=\nR:dataexports.go\na:0:0:444\nZ:Q1SYELNncdaiAuZ5u+z8SI9Zf7i7w=\nR:datasources.go\na:0:0:444\nZ:Q1EBZooqRbpLNOAIQBoaVsjDmyI+Y=\nR:deletedworkspaces.go\na:0:0:444\nZ:Q114nNyP+TeF7ueA0lk/wt52W3Aq4=\nR:enums.go\na:0:0:444\nZ:Q1aA6/WuHCCOGDE5b6D6glQo3nM0g=\nR:gateways.go\na:0:0:444\nZ:Q1ySh3FFYEN8ps40KDdgkg/+D0LrI=\nR:intelligencepacks.go\na:0:0:444\nZ:Q10ycBIytB8r5/hTIe6bsIqa00osE=\nR:linkedservices.go\na:0:0:444\nZ:Q1/6Y0OaUxgmNhWY3UKVzBMxNqVn0=\nR:linkedstorageaccounts.go\na:0:0:444\nZ:Q1nRscXvxAI5xTmJOp0Gb3vaaZWaQ=\nR:managementgroups.go\na:0:0:444\nZ:Q1Pn0Gq4feBPUr4nFWD+Rl6ljDLKM=\nR:models.go\na:0:0:444\nZ:Q1n6gpc6apSuboU9OchKH3GZcBL3o=\nR:operations.go\na:0:0:444\nZ:Q1uLEIGm3Z5UQqvX8Tlyv8YTZkPEg=\nR:operationstatuses.go\na:0:0:444\nZ:Q1cGg27MEV7MoVX2GwdFc5Do1Fiqc=\nR:savedsearches.go\na:0:0:444\nZ:Q1YVQJzmB5VQYV6dWSctcZgqe/XHc=\nR:schema.go\na:0:0:444\nZ:Q1oBXrCnkzFnGo9M2VKbn4xiux2WA=\nR:sharedkeys.go\na:0:0:444\nZ:Q1TYQowaht6raCUBgQMwrxob+yIAI=\nR:storageinsightconfigs.go\na:0:0:444\nZ:Q1mBI/MibquEogyEonN+Lzxr1dVHY=\nR:tables.go\na:0:0:444\nZ:Q166RJxJ9y/T/eZas5vXQS158FGgM=\nR:usages.go\na:0:0:444\nZ:Q19QE4hIlsl120/UfutnYA3+gvOMk=\nR:version.go\na:0:0:444\nZ:Q15g9Z4PW0hNRMOhqySOmHkTNUaf4=\nR:workspacepurge.go\na:0:0:444\nZ:Q14da5E/EgjJu8UDpSYgnGKUYb6xY=\nR:workspaces.go\na:0:0:444\nZ:Q1Sr7OUOoF33OtuHbiGq/rKSrCHgw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationalinsights/mgmt/2020-03-01-preview/operationalinsights/operationalinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UYuHWD5pR5ze100S+qB4lt7t750=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationsmanagement\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationsmanagement/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationsmanagement/mgmt/2015-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationsmanagement/mgmt/2015-11-01-preview/operationsmanagement\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11KW8mn2uX6DgjBr6hWOMoUa0qYw=\nR:client.go\na:0:0:444\nZ:Q1pefX9tIOih/ennlRmIvh46wjQio=\nR:managementassociations.go\na:0:0:444\nZ:Q1hfnzYrLfMpSoBKBV0LJN1J7PmYE=\nR:managementconfigurations.go\na:0:0:444\nZ:Q17pJVKXocnizWOF8WqoxP1io66rk=\nR:models.go\na:0:0:444\nZ:Q10IrnUpsTXfOiIu5exOFJNdySkCU=\nR:operations.go\na:0:0:444\nZ:Q1LQaTN4wakPdMxd43a5Hi0McPg8o=\nR:solutions.go\na:0:0:444\nZ:Q11a5+kmJo9yInxQa0fR3DrL2qCBI=\nR:version.go\na:0:0:444\nZ:Q1tRhMBDT/dErgTolLu38YRO1lbpc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/operationsmanagement/mgmt/2015-11-01-preview/operationsmanagement/operationsmanagementapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1s7dG2BD1br/oFHZRgO2zGh93X0U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/peering\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/peering/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/peering/mgmt/2020-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/peering/mgmt/2020-01-01-preview/peering\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Cublu7txcCv4UPjgfkG3heWpC8o=\nR:client.go\na:0:0:444\nZ:Q1XS6ObxC/Qv7tHoRX1TvrqvHKvyE=\nR:enums.go\na:0:0:444\nZ:Q1JjcecygXNea2AoPcyPPkaxLXprI=\nR:legacypeerings.go\na:0:0:444\nZ:Q1stCJ+IKz1YPI4gj0jtUFqnNZcLk=\nR:locations.go\na:0:0:444\nZ:Q1QZ72WUT1I5be+hjBLAAHS+LXc9s=\nR:models.go\na:0:0:444\nZ:Q1ctk2V7E7dbfz2cAQOb17A3u5R1Q=\nR:operations.go\na:0:0:444\nZ:Q1KSA7y9eQkTJgyvXqXnCHRp8CGHo=\nR:peerasns.go\na:0:0:444\nZ:Q1v4q+ieut9tvBRhIn/lERPabFbqE=\nR:peerings.go\na:0:0:444\nZ:Q1tNqR/MS6xjflXxycIy2Ox0FP0UQ=\nR:prefixes.go\na:0:0:444\nZ:Q1HzDXb3W0XiM4qWFynbAmHAAzF1w=\nR:registeredasns.go\na:0:0:444\nZ:Q16Yxu4mBqucGPjaI8A3d8Z3L9x3k=\nR:registeredprefixes.go\na:0:0:444\nZ:Q1o25qzOAHq57sMsMUSClIE4yq1rA=\nR:servicecountries.go\na:0:0:444\nZ:Q1uPJpKRw6cd8iMqnRhbiMBOgVvt0=\nR:servicelocations.go\na:0:0:444\nZ:Q1jn1icACryr/AdtN1e6cc2Ix7lHo=\nR:serviceproviders.go\na:0:0:444\nZ:Q1s06gK0EzZ4vYE7IFZXpYJne0d5s=\nR:services.go\na:0:0:444\nZ:Q1lYOaC6diRI4NAbzbl3ZiNxRIuPU=\nR:version.go\na:0:0:444\nZ:Q1WLSOdCZ2Tj4YGW8zFi9OA+YstDo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/peering/mgmt/2020-01-01-preview/peering/peeringapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SThZgiQ8OY7sRoo9a9A4So3RJS0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2018-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2018-07-01-preview/policyinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TzWiKwKtUIHF3VSzQmhnayROlDI=\nR:client.go\na:0:0:444\nZ:Q1zG0nRIR9wKji0mQB0qypj6UnQi8=\nR:enums.go\na:0:0:444\nZ:Q1k+vkJFjmWh3QRDZVDgMKBg0h+mo=\nR:models.go\na:0:0:444\nZ:Q1uNsnYztsjUmnfD8SSUhN4HjD7lA=\nR:operations.go\na:0:0:444\nZ:Q1Y8f03bjhLFU/buJhiwOf26/RVpk=\nR:policyevents.go\na:0:0:444\nZ:Q1JR/mXmsVUMUV95KyhuAQr+ZoWWs=\nR:policystates.go\na:0:0:444\nZ:Q182fBUFvvjJjbGbZfQAfNOyFxrxs=\nR:policytrackedresources.go\na:0:0:444\nZ:Q1RNpg37d0ggDZM/MFUFRVTVhJexs=\nR:remediations.go\na:0:0:444\nZ:Q1M9f64RpeIgEtrZ+/vRs+0LpuQPw=\nR:version.go\na:0:0:444\nZ:Q1uN7ZDJRQVNzmaQd/ovC7qByfbTs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2018-07-01-preview/policyinsights/policyinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16fDG2yUruIq0L/pxMsffNqAI5jY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2019-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2019-10-01-preview/policyinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17X+SGWxgqvsScHmTeojVVMwofjA=\nR:client.go\na:0:0:444\nZ:Q1VfHULhnc7J7Xb31MyM+zZp3WvfY=\nR:enums.go\na:0:0:444\nZ:Q1z0OKm0Pa64T6QcfHXUA/B74bIo0=\nR:models.go\na:0:0:444\nZ:Q1grUwnmOrXD6mcT+IZQJTuvszQv4=\nR:operations.go\na:0:0:444\nZ:Q1aCYA/03r27czFWk0gDQzSeTLzGY=\nR:policyevents.go\na:0:0:444\nZ:Q1a2ojO4CWO1zHT5+CiwegdU5XZpY=\nR:policymetadata.go\na:0:0:444\nZ:Q10m0Z2BGMT1ik4DBhCsXNE2ahhlo=\nR:policystates.go\na:0:0:444\nZ:Q1jN5pOMMJMOwozvprBdTxnGQvhs8=\nR:policytrackedresources.go\na:0:0:444\nZ:Q1RNpg37d0ggDZM/MFUFRVTVhJexs=\nR:remediations.go\na:0:0:444\nZ:Q1rJ/F9J74CQC9H/ZdoGIHhuLg/5o=\nR:version.go\na:0:0:444\nZ:Q1OlsuQ5wdZ4fRNL1WmWSCzjqXTBs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2019-10-01-preview/policyinsights/policyinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Kv38zhovst5rfXiaDYf8MBFT17w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2020-07-01-preview/policyinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uEJThY1XcdTUW8j+NLDpOsf4MFU=\nR:client.go\na:0:0:444\nZ:Q12UuhFnzNdFJMWkWpqLO6eQkokMk=\nR:enums.go\na:0:0:444\nZ:Q1oxVxR+mE9ubYcZ5wIKeODNZ+FSU=\nR:models.go\na:0:0:444\nZ:Q1d28XB/1NfTYnGvop3zGyHo2TEJQ=\nR:operations.go\na:0:0:444\nZ:Q1nXUWEgIKDFe2K8TfQDXw2OmzeWI=\nR:policyevents.go\na:0:0:444\nZ:Q15DT9W2w6oSJhBgTPLagN4oe8IKs=\nR:policymetadata.go\na:0:0:444\nZ:Q1U8jGzoiw0KToy5uMnUpQhzRVwPc=\nR:policyrestrictions.go\na:0:0:444\nZ:Q1wQhxCYyTIdEuTK+AguzQonjPRL0=\nR:policystates.go\na:0:0:444\nZ:Q1tSw77LRGFysTwq+kN0VmlimM2kk=\nR:policytrackedresources.go\na:0:0:444\nZ:Q13y7mEAsrCkTdlnMudKavgeFz6l4=\nR:remediations.go\na:0:0:444\nZ:Q1oWnJoBS8I4esBNtN0xvSH1W2xMY=\nR:version.go\na:0:0:444\nZ:Q1EFmQBbPTmGwR2/MAVPbU56Zooro=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/policyinsights/mgmt/2020-07-01-preview/policyinsights/policyinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gwsDR+EQx623ztmEIZaCI0/bJPE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2015-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2015-08-01-preview/portal\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WrZB/ZXJjEYG2XYZLwRWZhteZXs=\nR:client.go\na:0:0:444\nZ:Q13l4EyY6BsSW+mwX1ovWU3rErkF8=\nR:dashboards.go\na:0:0:444\nZ:Q1BR+7bI5E+LMU8l1lKKscRG1Km6E=\nR:models.go\na:0:0:444\nZ:Q15u+L/sg/QZLEMR5Krk9aVrMiRE0=\nR:operations.go\na:0:0:444\nZ:Q1rQ5WUccTf2cSvkba/tc0DN/VI/s=\nR:version.go\na:0:0:444\nZ:Q1C8gRHgi1SdF+n1FQkTox3P7uUDM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2015-08-01-preview/portal/portalapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CT4sugxuRUZugMhlwgY704QQHnM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2018-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2018-10-01-preview/portal\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YiPBO5JoyzyyglfFqJR+jGmLYok=\nR:client.go\na:0:0:444\nZ:Q16Li9K3Vw0ExrDwlA5Kr0ernM1Ws=\nR:dashboards.go\na:0:0:444\nZ:Q1yBjIf7Ny+M3teb9vWjOkAerTLWQ=\nR:models.go\na:0:0:444\nZ:Q1c5ulNzhP0fEMdLD64vBqz9I9efc=\nR:operations.go\na:0:0:444\nZ:Q1aEZsLrBdtqAIF+PyNcEc/u/1a+4=\nR:version.go\na:0:0:444\nZ:Q1kIDh/CMy9CErrwgjXHFLz2XRtkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2018-10-01-preview/portal/portalapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dlV8gir4V08dMZU8zK7pbL0WYNQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2019-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2019-01-01-preview/portal\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1HFJRYrCSikrki+5qC0CEtQFZ7Vg=\nR:client.go\na:0:0:444\nZ:Q1FOqNOhPwppVCrE5YTp8PmVkWQ4U=\nR:dashboards.go\na:0:0:444\nZ:Q1mZA6yZAjQvDODlL5jt4kUfdYQms=\nR:models.go\na:0:0:444\nZ:Q1HU9jKBbk4FXKL5EzCw/GSRKDhc0=\nR:operations.go\na:0:0:444\nZ:Q184aiSqYLGTO3uRZjb52nlHPOUBk=\nR:tenantconfigurations.go\na:0:0:444\nZ:Q1LN8ZUbWxIiaMmWn6MyjHDnPa+JA=\nR:version.go\na:0:0:444\nZ:Q17HTkuDrZaU6d1qL4vA08o+s+rKM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/portal/mgmt/2019-01-01-preview/portal/portalapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cAwMthBYwqVCyC5drrFoTyUedTU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2017-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2017-12-01-preview/postgresql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RB8qH7JAtCWANk1jY6u+Ky62vZI=\nR:checknameavailability.go\na:0:0:444\nZ:Q1gK/sxZCLeDi8UUe1lmyawPfpy5M=\nR:client.go\na:0:0:444\nZ:Q1+1NvmqjB8H6UdYRY7gtWqJTprqA=\nR:configurations.go\na:0:0:444\nZ:Q14iS6PBeyXw0NA+LwNpBHOx+9yRM=\nR:databases.go\na:0:0:444\nZ:Q1LBrZkvKl1JH5UYEqtKjVPMdEWTU=\nR:enums.go\na:0:0:444\nZ:Q1PU1p4retzRImbKL9oYUbTfgM2N4=\nR:firewallrules.go\na:0:0:444\nZ:Q1wqAnD33vBlo3lorWWfYWaVxVa3Q=\nR:locationbasedperformancetier.go\na:0:0:444\nZ:Q1zfeAhCPZx9Yf/pZkd/Au/pa2TSI=\nR:logfiles.go\na:0:0:444\nZ:Q1EdwvMu88bDGHJJQ1rCdltUeCqdM=\nR:models.go\na:0:0:444\nZ:Q1G7g36rG9d8mBowrdT1+kYvElEfo=\nR:operations.go\na:0:0:444\nZ:Q1dUsRaOcZuhxfBPP3T9WVvxtwIE0=\nR:replicas.go\na:0:0:444\nZ:Q1fEodrkRtl6JZ8a/0mJ3+6xNBrD0=\nR:serveradministrators.go\na:0:0:444\nZ:Q1ufeNHUalwcG/waM2LxOUZQ0KVD8=\nR:servers.go\na:0:0:444\nZ:Q1sP1url5ipMPE+6ZwSVROk6TiWxo=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1XLG27bw6JQvrCBWx1kNgKrdAfVA=\nR:version.go\na:0:0:444\nZ:Q1ORJ/0XY83R05rvrqIJ53FV8LhzU=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q1TqwNlNb+p2r6Za1J0+6nUL85UUU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2017-12-01-preview/postgresql/postgresqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VlFa9L6L15HXwP0Cq5ptrnODkec=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-02-14-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-02-14-preview/postgresqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AID/aohhbB5H7hNpJ2QzvZxOXOI=\nR:checknameavailability.go\na:0:0:444\nZ:Q1L52CSzpqp+TT788HocIIb8Mtxi4=\nR:client.go\na:0:0:444\nZ:Q1cYZuj1VM0OAAf/yZS7BzPbi0vWk=\nR:configurations.go\na:0:0:444\nZ:Q1zfRw7+gn6I8ncNAdzuQPRzpko8c=\nR:enums.go\na:0:0:444\nZ:Q1NUDK65UJwAGcOFvBRLqxy+YR9F4=\nR:firewallrules.go\na:0:0:444\nZ:Q1IYimGG6FjXmird59VlyFuef0LtU=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q12XAHGRgzW8vT5PkPWjNrZ+DPMNE=\nR:models.go\na:0:0:444\nZ:Q1Dx0uM3wTcJYSIrgp0bsTeNyvHFE=\nR:operations.go\na:0:0:444\nZ:Q1MnmCF9aCBxLQNwP+gsg/vxM2OpM=\nR:servers.go\na:0:0:444\nZ:Q1wy0R/d0qGfOpoM//5wC/Kb/XF0o=\nR:version.go\na:0:0:444\nZ:Q187yKk5eYdWW48pccdKaM1paCGgA=\nR:virtualnetworksubnetusage.go\na:0:0:444\nZ:Q1T4qlguIehbbZ7rivW/cDZ03KUWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-02-14-preview/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nlhKPsnOneBoLkWYChF/hSh7IfQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-11-05-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-11-05-preview/postgresqlflexibleservers\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1o7pJWKk5Q1O8IpvXhRKCgAkvEEE=\nR:checknameavailability.go\na:0:0:444\nZ:Q1L52CSzpqp+TT788HocIIb8Mtxi4=\nR:client.go\na:0:0:444\nZ:Q19EAcNcZnJCyKW6LJIQU10bqRMsU=\nR:configurations.go\na:0:0:444\nZ:Q1zfRw7+gn6I8ncNAdzuQPRzpko8c=\nR:databases.go\na:0:0:444\nZ:Q1KuW0FVnp3cQZ5Xfz7ijL5rXrtbk=\nR:enums.go\na:0:0:444\nZ:Q1NUDK65UJwAGcOFvBRLqxy+YR9F4=\nR:firewallrules.go\na:0:0:444\nZ:Q1IYimGG6FjXmird59VlyFuef0LtU=\nR:locationbasedcapabilities.go\na:0:0:444\nZ:Q12XAHGRgzW8vT5PkPWjNrZ+DPMNE=\nR:models.go\na:0:0:444\nZ:Q1lhPQ4Lp/3yHIam0l2R8hscTG3PE=\nR:operations.go\na:0:0:444\nZ:Q1MnmCF9aCBxLQNwP+gsg/vxM2OpM=\nR:servers.go\na:0:0:444\nZ:Q1wy0R/d0qGfOpoM//5wC/Kb/XF0o=\nR:version.go\na:0:0:444\nZ:Q1TkjZcL6rweRq+4CguB04EDBhsRA=\nR:virtualnetworksubnetusage.go\na:0:0:444\nZ:Q1T4qlguIehbbZ7rivW/cDZ03KUWw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/postgresql/mgmt/2020-11-05-preview/postgresqlflexibleservers/postgresqlflexibleserversapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qNNYy3KjYPmaMilaRQAT0xqBkN8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/powerplatform\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/powerplatform/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/powerplatform/mgmt/2020-10-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/powerplatform/mgmt/2020-10-30/powerplatform\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1HSsLW1+2/SFIgU1pbjiexBBf7R8=\nR:client.go\na:0:0:444\nZ:Q1snfDqjE4ZpUQvn4sSDSSei+MNns=\nR:enterprisepolicies.go\na:0:0:444\nZ:Q1vb63HiPNpMNvZhspCvt+Y8t02L8=\nR:enums.go\na:0:0:444\nZ:Q1irHHk9LpBf9VTF/83NFtyiGxdy8=\nR:models.go\na:0:0:444\nZ:Q1UXHDR8oV8tnYImD7i9AYX9efTrM=\nR:operations.go\na:0:0:444\nZ:Q1utpvKb8g6X5hDGFYIrdZEvZTJR0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1gRKfhImKlus4XGfmNIfu1WdSy5I=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1XwvGvizFyw43cOLJMXeeU9SPNhk=\nR:subnets.go\na:0:0:444\nZ:Q1pnWL7cNYZklt8Mw5i0cR3SjomZk=\nR:version.go\na:0:0:444\nZ:Q1/of2KlgoKW6Ao7BLGvm6Ykcdvgg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/powerplatform/mgmt/2020-10-30/powerplatform/powerplatformapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ml6LHzPI92C2d2cHM54+2Oz6R1Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/provisioningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/provisioningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/provisioningservices/mgmt/2017-08-21-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/provisioningservices/mgmt/2017-08-21-preview/iothub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BN/1j1ZvAAyUDkTDkm9hjZtHrP0=\nR:client.go\na:0:0:444\nZ:Q1v6Y7c+XjIheVTbJuSVP0P0DaHyw=\nR:dpscertificate.go\na:0:0:444\nZ:Q1yz56UiZORPZL2zGU/L/b3l/77M4=\nR:dpscertificates.go\na:0:0:444\nZ:Q1/UXdQlRXFPfUaPsxroVx3mnUIWU=\nR:enums.go\na:0:0:444\nZ:Q1KTBf4ogPPs2r9zUoc0JTLoNqQYU=\nR:iotdpsresource.go\na:0:0:444\nZ:Q1k00gQn4YOEUhYkzJ3XC2xTFSA5k=\nR:models.go\na:0:0:444\nZ:Q1MTlWoem15pmW914uEpzQi7p2gs0=\nR:operations.go\na:0:0:444\nZ:Q1cyiqZ6Yyq8bgoxezfk2Ws3uxGBg=\nR:version.go\na:0:0:444\nZ:Q1VK62fuowtML+uP47AIIHAqKJwfs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/provisioningservices/mgmt/2017-08-21-preview/iothub/iothubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uJsmnVpSUFV1JyvC4fQM39PH5z4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/purview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/purview/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/purview/mgmt/2020-12-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/purview/mgmt/2020-12-01-preview/purview\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hD4u8GTZWklgUtgHG7NAtgP6NGQ=\nR:accounts.go\na:0:0:444\nZ:Q1UahBrXqtVnnIaan0GMU9qtIo6Jk=\nR:client.go\na:0:0:444\nZ:Q1/mK9E4cCftMQricYP6wSKQAI0q0=\nR:defaultaccounts.go\na:0:0:444\nZ:Q16AXb/In6sD4ORa1nT33sqy7eMjk=\nR:enums.go\na:0:0:444\nZ:Q1LSS7UvmPiUkWZs1w37xdYMWDorQ=\nR:models.go\na:0:0:444\nZ:Q1uRWNMqWuHcy3S6oj+Wrk2f/1f3A=\nR:operations.go\na:0:0:444\nZ:Q16EVYFQ7acu5XJ9uQcJyE7vt/bp8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1iarsGXI/a7bwRqpe74pd+Hl7Kd8=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1cpzbNXUuSSj3BRwHAMVER9gXTF4=\nR:version.go\na:0:0:444\nZ:Q1J3HezXngoLRQNbbJe632hXKO+Ao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/purview/mgmt/2020-12-01-preview/purview/purviewapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11/PCufTyuGn+5P4G0skZ6Oa4j4w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/qnamaker\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/qnamaker/cognitiveservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/qnamaker/cognitiveservices/v5.0-preview.1\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/qnamaker/cognitiveservices/v5.0-preview.1/qnamaker\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:alterations.go\na:0:0:444\nZ:Q1Yf1OGTP23O+rT69xB0e4XpS0bq8=\nR:client.go\na:0:0:444\nZ:Q1jNJgKqFY5C+1gwB8TBtinp9PlUY=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1EMFFp4cgS2RXSVOSkvzHEw7UgBM=\nR:endpointkeys.go\na:0:0:444\nZ:Q1kcYaDghttd2fgoYFSMUXZ6zvlFQ=\nR:endpointsettings.go\na:0:0:444\nZ:Q1qkIPKC7njNKUUbxSr0dgyHuN8oE=\nR:enums.go\na:0:0:444\nZ:Q133Fqckrrkj66Aeb+cF/wbatOBNM=\nR:knowledgebase.go\na:0:0:444\nZ:Q1xs0VRWpwoAkllm+aMLG2wkRAbKo=\nR:models.go\na:0:0:444\nZ:Q1qQpG1rI1zxEkryXQVJbvZSmn9b8=\nR:operations.go\na:0:0:444\nZ:Q18buA3UpBAupGtKcX1ttUnBto1Uo=\nR:version.go\na:0:0:444\nZ:Q1NTd8kkbLcM3OvgdYEn4WrHkr1nQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/qnamaker/cognitiveservices/v5.0-preview.1/qnamaker/qnamakerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11K94RWTKGbU1MQGL10YaqSlRwT0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quantum\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quantum/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quantum/mgmt/2019-11-04-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quantum/mgmt/2019-11-04-preview/quantum\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QZBTCA0K7FXo5i0zAP0yGNoWCMY=\nR:client.go\na:0:0:444\nZ:Q1qD8pu8VDg++fBbps0LC4ld19Rhg=\nR:enums.go\na:0:0:444\nZ:Q1XL8pKFo/T+d+YsiFJzHeu6YFlW4=\nR:models.go\na:0:0:444\nZ:Q1tsLgfxXreCW2B8yStuIXY99QtKs=\nR:offerings.go\na:0:0:444\nZ:Q1Dw/lfVjWbnMtPb62XTXMcRo/gfk=\nR:operations.go\na:0:0:444\nZ:Q15NwxpdOyvSMyt6WqBkVOuEUwuPo=\nR:version.go\na:0:0:444\nZ:Q1WnxSEynLI8vxeOC272lY++twZ48=\nR:workspace.go\na:0:0:444\nZ:Q1ZNGGseJ68Nkz35KEjPzpOoJypDY=\nR:workspaces.go\na:0:0:444\nZ:Q1yfNmUijRbv2t5c44dtfNNQITtX8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quantum/mgmt/2019-11-04-preview/quantum/quantumapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IfR3vlN+fwylTqhL8JQHpy6bESA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quota\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quota/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quota/mgmt/2021-03-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quota/mgmt/2021-03-15-preview/quota\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q17IbaTAZ8iAV5l3/koFWdAwHquZw=\nR:_meta.json\na:0:0:444\nZ:Q1Aw+gM7SpBeP/IUnOD9k9J/MIMM4=\nR:client.go\na:0:0:444\nZ:Q1uBazVcGfXCnfmQ4bzILpEJK8qFI=\nR:enums.go\na:0:0:444\nZ:Q1O5CeMUV1WPnSj5JgvBAQH8W0zr8=\nR:models.go\na:0:0:444\nZ:Q1s6E8bkyhtDzqBhe+uhk+JhERbGc=\nR:operation.go\na:0:0:444\nZ:Q1lxZxCMUlYbnMUGEvXq09yg8K9Eo=\nR:quota.go\na:0:0:444\nZ:Q15JXKjBIq+KLQpd+2jUOS1n+BpXM=\nR:requeststatus.go\na:0:0:444\nZ:Q1pQ9RZza1ba6rtlAEtFc9Dabx/4o=\nR:usages.go\na:0:0:444\nZ:Q1i9cWLcnYIwjq8l/f0GTPlFcl4tA=\nR:version.go\na:0:0:444\nZ:Q1TTjpS78Igr9ht3i3kk5PQlmrTlk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/quota/mgmt/2021-03-15-preview/quota/quotaapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ulNhEEN5D18G3zNDeE2MssKJELk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redis/mgmt/2019-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redis/mgmt/2019-07-01-preview/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qG4vJdMnQGZ6ByKC6RsMrTTZDZQ=\nR:client.go\na:0:0:444\nZ:Q1rqaRugbT1wffOi6s7Gis0AsBYpU=\nR:enums.go\na:0:0:444\nZ:Q1ivTJpQjpzA1bhhh99aXaI4lJL24=\nR:firewallrules.go\na:0:0:444\nZ:Q1BKx2KUcM2g53twS/jjej/E9piAY=\nR:linkedserver.go\na:0:0:444\nZ:Q1wdiaknTr56qWgEJOM0YhZMLUWqI=\nR:models.go\na:0:0:444\nZ:Q1fdWnWBKLNOxdVrIozfQWwFb12Gg=\nR:operations.go\na:0:0:444\nZ:Q1L6xBWSlyjCGDIaOJ8Pj3ZWlMW4E=\nR:patchschedules.go\na:0:0:444\nZ:Q1W7U1tHBawu3UJlhB8qoTnXDr9Fs=\nR:redis.go\na:0:0:444\nZ:Q1SFZYZUuX8kBGyq20xahYcs9aZWc=\nR:version.go\na:0:0:444\nZ:Q1NTOK4K6GXjAIQqJBjEtzUVfiaB8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redis/mgmt/2019-07-01-preview/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15LdRnquhpGUuOJ2z+CvENTD6ccU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redisenterprise\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redisenterprise/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redisenterprise/mgmt/2020-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redisenterprise/mgmt/2020-10-01-preview/redisenterprise\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12Lff7kfrbKbW8aQoNYMvY4v7hQA=\nR:client.go\na:0:0:444\nZ:Q1zAZ0dUaYWXvu/llljPuRyjafk1s=\nR:databases.go\na:0:0:444\nZ:Q1cocTdDfET05wqEeXPPzFNXu3nKk=\nR:enums.go\na:0:0:444\nZ:Q1ygoe94LOGsigS1aMhm6gCQxH1jE=\nR:get.go\na:0:0:444\nZ:Q1POGRHTE+598DAj+5B4u7hLj6fzs=\nR:models.go\na:0:0:444\nZ:Q16VmR1BVMB4QAoJgTqEgaYOT2dLU=\nR:operations.go\na:0:0:444\nZ:Q1OA2TzMJ3eMGIv3/jVT2mhSdfWIY=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1re+ii46TMBsGu9WncOhJdEOlb5I=\nR:privatelinkresources.go\na:0:0:444\nZ:Q17HOPMwu5BBCwDoGAL1O1HKATZwg=\nR:redisenterprise.go\na:0:0:444\nZ:Q1trzOChKZS2u+QI/xcYUJhikCfQc=\nR:version.go\na:0:0:444\nZ:Q1wK2n9nsAwCs0AeUQuyaqqPLA3GA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/redisenterprise/mgmt/2020-10-01-preview/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GFTkOsbGYEiHXT/TvujOrUPuo5g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2018-06-01/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1VFCxa7GLDNhi1O5/BCt4MeW15kE=\nR:client.go\na:0:0:444\nZ:Q1IDLX+dbNkD4zVW8AZhbQsgZf1Ro=\nR:enums.go\na:0:0:444\nZ:Q1suKy3ReZaXt2cLo9ZRXQg8LWuyE=\nR:models.go\na:0:0:444\nZ:Q10YD3OofqC7O2H+Y0OWTtMWuILOs=\nR:operation.go\na:0:0:444\nZ:Q1LEtpX9IhSBMwBw2mY9IaE7nnca8=\nR:order.go\na:0:0:444\nZ:Q1m5SEFURaFR/3l+j/O8TOsx3VjMk=\nR:reservation.go\na:0:0:444\nZ:Q1FfULCn6w46jby4gybB0Nor5lIIE=\nR:version.go\na:0:0:444\nZ:Q1nJ2gbh+EkUrT8rkcp9vx93oBeJY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2018-06-01/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1PYDQbRvfZc8b0RSRuX9Gis04HV4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-04-01/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1e9JFMHIZuHs0J8x/OvPo/Cu7anI=\nR:client.go\na:0:0:444\nZ:Q1a07OjKD5ogXBkZlK1jhXqbg40ec=\nR:enums.go\na:0:0:444\nZ:Q1jAQ5+Mcizn+NL0dnCRTEzAerUJc=\nR:models.go\na:0:0:444\nZ:Q1pf2QWQXARN1v8YHoI3MX04SpS60=\nR:operation.go\na:0:0:444\nZ:Q1Sf4ZQGrRxLssNtUm+wsqCCbF1KE=\nR:order.go\na:0:0:444\nZ:Q1x63x+6vbLTMxH/5ZSGt3g83jgyw=\nR:reservation.go\na:0:0:444\nZ:Q1rbIxLnf+RC96OSkJIuIFZW0p/RQ=\nR:version.go\na:0:0:444\nZ:Q1zKvZcTLor/Fwlv+KkR1v34eIXW0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-04-01/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rXp6+ElLNZZsX+4qP+ZRbw9lUTo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-07-19-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-07-19-preview/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KcIkgSwp6Qd9ze6HUwEand0E2NU=\nR:autoquotaincrease.go\na:0:0:444\nZ:Q1qvJo843EJRojECYod8pweamNUeQ=\nR:client.go\na:0:0:444\nZ:Q1C8prGje5/QwEJJ+EoTinDFqer38=\nR:enums.go\na:0:0:444\nZ:Q1jAQ5+Mcizn+NL0dnCRTEzAerUJc=\nR:models.go\na:0:0:444\nZ:Q1r6buEfPU2/YXsP/fe7qbWwuWIAU=\nR:operation.go\na:0:0:444\nZ:Q1yDUN4Wu6CZkpzKxhxq9s9YSzcvA=\nR:order.go\na:0:0:444\nZ:Q1sjHAOONg4JABl5baV7AULMlGF08=\nR:quota.go\na:0:0:444\nZ:Q1fDSYSZOg/RAb2+b1ChNupl4u0KE=\nR:quotarequeststatus.go\na:0:0:444\nZ:Q1JfNt9tnV5I2Qcifx6ZqWCl1fxtE=\nR:reservation.go\na:0:0:444\nZ:Q1bSgY/Qfr33S+QRKtr/blhLL1pL8=\nR:version.go\na:0:0:444\nZ:Q1O/mVfwx5uHtt6XIy/8D/wWhsqrw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2019-07-19-preview/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1odUEMUbz606p27FPmVsGPcQk0qU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2020-10-25\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2020-10-25/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1cb/yqZFmnprqdNhXGUT4kON9KA0=\nR:calculateexchange.go\na:0:0:444\nZ:Q1gQxPzZCK4LVPj4gUuGNYzmaocZY=\nR:client.go\na:0:0:444\nZ:Q1fdL3/wVO1BaDRrkZnCebEK3Qx/c=\nR:enums.go\na:0:0:444\nZ:Q1lJ4/G/eeAFYOpFDdqnFEVO4COI4=\nR:exchange.go\na:0:0:444\nZ:Q1WbkFzy7hdaYYwsT4s2eTQJqTnCw=\nR:models.go\na:0:0:444\nZ:Q1j5HxJCbP8C2VyoKV9j+U7+QUmso=\nR:operation.go\na:0:0:444\nZ:Q1dVoRaKzZjYeXzhweybaPxpXn3QE=\nR:order.go\na:0:0:444\nZ:Q154uAQYawdTZGbxvnqa3yXKLU2UM=\nR:quota.go\na:0:0:444\nZ:Q120D0OLs8oDXjy+tbt/dXdwyaX3A=\nR:quotarequeststatus.go\na:0:0:444\nZ:Q1ifheE/7OPd9SG/ApLmQ40GTnv/g=\nR:reservation.go\na:0:0:444\nZ:Q1qF9oC6gKu8LwFpMSDwIZuL0hX9A=\nR:version.go\na:0:0:444\nZ:Q1q+zX+1K6VJ/HFksJ6ovE6pawZic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/reservations/mgmt/2020-10-25/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NkOiCrwuIdRr2ndCkZd3H2SuLfY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourceconnector\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourceconnector/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourceconnector/mgmt/2021-10-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourceconnector/mgmt/2021-10-31-preview/resourceconnector\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18yyom7bZB4nqeNSn9UsBerQDjwM=\nR:appliances.go\na:0:0:444\nZ:Q1AD1kdaFioqLmBxEArnnwx7/6Cgw=\nR:client.go\na:0:0:444\nZ:Q1QuDUiqmx/Awj3AYF4LKdd630/t4=\nR:enums.go\na:0:0:444\nZ:Q1SCdC5M5+BkNacjq1kcLeYzMTfSM=\nR:models.go\na:0:0:444\nZ:Q11L00t+KmmD9s6sORY5JEx2fZW90=\nR:version.go\na:0:0:444\nZ:Q1/2FotwzjmUsXHwjQVqISwQUpS64=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourceconnector/mgmt/2021-10-31-preview/resourceconnector/resourceconnectorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tL9NTu/lN+NmenYHDMvp/EJqT7U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2018-09-01/resourcegraph\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14NcuXf0Bi95LemcQlRD4ecQ4mkQ=\nR:client.go\na:0:0:444\nZ:Q1eYqdgt9snfedtSNcGc+YY5ZJLwg=\nR:enums.go\na:0:0:444\nZ:Q1oy/jZ879RKD0Kpj6IVfMS1PZrAI=\nR:graphquery.go\na:0:0:444\nZ:Q1UrkXCqzXD9pB9c0AsGBF3KEhMIE=\nR:models.go\na:0:0:444\nZ:Q1yoL3JD89HiaaNwt5q1Ei04vwE3g=\nR:operations.go\na:0:0:444\nZ:Q185l8DW4BrG7UQlvaocr2GMwgoc4=\nR:version.go\na:0:0:444\nZ:Q1YXrtyAu4xju4hfTCTC1Fp15FOZc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2018-09-01/resourcegraph/resourcegraphapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1S0GZ6WFmFmbJwvXFwkCIP83RQ24=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2021-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2021-03-01-preview/resourcegraph\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14kGMNvGSScS1h/VuiJ3gvFnyNi4=\nR:client.go\na:0:0:444\nZ:Q1FoS+kIegAmZcAgC6JBQHBwjfxGM=\nR:enums.go\na:0:0:444\nZ:Q1eegd3QVrvzxwJuUUdOB5s4zr7I0=\nR:models.go\na:0:0:444\nZ:Q1kX2e7pEQIuLd+fuUwbQdC6QcI3I=\nR:operations.go\na:0:0:444\nZ:Q19PJnmBdGkGy/cNTl790mPYXtvYI=\nR:version.go\na:0:0:444\nZ:Q1J6bp1xIMjre+Wixr9VMPPI89P5s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcegraph/mgmt/2021-03-01-preview/resourcegraph/resourcegraphapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1abWF3PnJacQR8rcTxeES/eDpiL0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcemover\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcemover/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcemover/mgmt/2019-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcemover/mgmt/2019-10-01-preview/resourcemover\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1L8ErAaXdLANAt9NzOqrUieFjLWg=\nR:client.go\na:0:0:444\nZ:Q1OlEui9KZPWC6n3vtLbJScN3P+uI=\nR:enums.go\na:0:0:444\nZ:Q1ceLSF4JBXM/swI00QXZ/IPQRKnY=\nR:models.go\na:0:0:444\nZ:Q1t7gufozE8xcpBoIrA2QXBvlXEgQ=\nR:movecollections.go\na:0:0:444\nZ:Q15IbaZkpc4r8+3jQwUVnaIaUakwA=\nR:moveresources.go\na:0:0:444\nZ:Q11bDKpKyuZ5D61QkE27o4+vFPkeM=\nR:operationsdiscovery.go\na:0:0:444\nZ:Q1sDVcd7o6kkGE2LnBOSmHnAm8l0s=\nR:unresolveddependencies.go\na:0:0:444\nZ:Q1fzkyLFtEneUlkrByyfmecVLxuN0=\nR:version.go\na:0:0:444\nZ:Q1LJ9a13nCVnew7AnRTSN87vIIGI8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resourcemover/mgmt/2019-10-01-preview/resourcemover/resourcemoverapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MlPhWiUw05MJyQz5VJwgs2IRyuw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2015-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2015-10-01-preview/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q170Pp2XCiSY8MrQC3gs3N9pEsnFs=\nR:assignments.go\na:0:0:444\nZ:Q1bpGsRRIoV0ZbS9ZXfbDw57sGA0s=\nR:client.go\na:0:0:444\nZ:Q1YlOFcjMDO7xZVEF6iWdikL3zIWY=\nR:definitions.go\na:0:0:444\nZ:Q14GqD+udjcj1s6hfOXknSKyehCvY=\nR:enums.go\na:0:0:444\nZ:Q1H080a7IQw7hEOPS+1mTl2UISfmg=\nR:models.go\na:0:0:444\nZ:Q1bu2Qez5ZW3SQjrv1i5uCmbC02D0=\nR:version.go\na:0:0:444\nZ:Q1h55xdftXGQiYXUcH+kevw0/YSiY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2015-10-01-preview/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18+1zh2qCe+7002JilqOMyFeZ4T0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2019-06-01-preview/templatespecs\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Cq/9V8jXuoI7X/NgAyTpP4lUw08=\nR:client.go\na:0:0:444\nZ:Q1UOKQc6wP01Z850yfYZnoHaEYzHc=\nR:enums.go\na:0:0:444\nZ:Q15YbZtAnDMFqXJm5sCFU626hsQi0=\nR:models.go\na:0:0:444\nZ:Q1erb543z3P7ZKLxuopWfSsCdEN/4=\nR:templatespecs.go\na:0:0:444\nZ:Q1JzSV36mJ3y0m/83hpl96SxEcsFA=\nR:version.go\na:0:0:444\nZ:Q1eBGY1gCRHr0OBWkbB11wh9KAku4=\nR:versions.go\na:0:0:444\nZ:Q1NNaR/fBvX2f4UYS/I94ZAFOfsCE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2019-06-01-preview/templatespecs/templatespecsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z/2z45bYwjCBHgffM4JOk4mNL+k=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-03-01-preview/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Jx4n0DGGQUFfMtkS72uStIr4Bp8=\nR:assignments.go\na:0:0:444\nZ:Q1sJnT9s8snV1K7Bb4/T20cHa6btU=\nR:client.go\na:0:0:444\nZ:Q1XvrFdjiTtEI8kxsj7F3V+PGlH+0=\nR:definitions.go\na:0:0:444\nZ:Q12LevOVHMdv2rlK3X0cC/PkHdQbE=\nR:enums.go\na:0:0:444\nZ:Q1fet0wiOjQ7oVTSsYVqGJb2iwu1s=\nR:exemptions.go\na:0:0:444\nZ:Q1Iz7F2zLi9l3oY8P1yNxP/rTwx20=\nR:models.go\na:0:0:444\nZ:Q1RbsKuVG/1RD8ui0xqWeD4Teodss=\nR:setdefinitions.go\na:0:0:444\nZ:Q1Xl65GHBXIocNrokmLeM7+6WkTJw=\nR:version.go\na:0:0:444\nZ:Q1U9htUR23pLjtjFkZUaKvQyTHKe4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-03-01-preview/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vqAmWcAsZQ1GGcedUhVHSb2EYKQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-09-01-preview/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1J1UhoCkE475g3RnMDBN5MFQdSis=\nR:assignments.go\na:0:0:444\nZ:Q1MgEkoUqW2NJtV5W7e1tSkNxgcSQ=\nR:client.go\na:0:0:444\nZ:Q1LYdySQ+a5fTrxvfzOdINbTGWSoE=\nR:datapolicymanifests.go\na:0:0:444\nZ:Q1XvPJRjDhE1WvJiYQmaiunY2+N7c=\nR:definitions.go\na:0:0:444\nZ:Q1p+ykZKX/z7voq0q7a1V/wwYb6CQ=\nR:enums.go\na:0:0:444\nZ:Q1DrBVyVyYHw7Vl9F42hbaB12Cklc=\nR:exemptions.go\na:0:0:444\nZ:Q1nh0MlJQ8Bk6JCvdlh1/PxJhhjTw=\nR:models.go\na:0:0:444\nZ:Q1mEdAALTVSmo5jhmhlkEqw/yH6IQ=\nR:setdefinitions.go\na:0:0:444\nZ:Q1rZXEWMgvg0oG3PuvXfyujGbEZ0A=\nR:version.go\na:0:0:444\nZ:Q1dl5sGqHbHWpCU402LaOtKgdasZw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2020-09-01-preview/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EqJj6/6PFOEo7MkkydNSRlTN6xg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2021-06-01-preview/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1orbLcqWYltdu/Bnlri/tdaiQDRQ=\nR:assignments.go\na:0:0:444\nZ:Q1qrn5vrAJRXZ16F+jDV5AAO7uA2k=\nR:client.go\na:0:0:444\nZ:Q1LYdySQ+a5fTrxvfzOdINbTGWSoE=\nR:datapolicymanifests.go\na:0:0:444\nZ:Q1XvPJRjDhE1WvJiYQmaiunY2+N7c=\nR:definitions.go\na:0:0:444\nZ:Q1Cs2lUn1NGNYqr/HWnIOy5vj86TE=\nR:enums.go\na:0:0:444\nZ:Q1jip4Zm0vPAZVZo6tsbIzHIdGH78=\nR:exemptions.go\na:0:0:444\nZ:Q1nh0MlJQ8Bk6JCvdlh1/PxJhhjTw=\nR:models.go\na:0:0:444\nZ:Q1HVPBCAElf4pqg1rKLezq63fINYE=\nR:setdefinitions.go\na:0:0:444\nZ:Q1ttI+JeMDWKh5yrU7Y++gDU0xN9Y=\nR:version.go\na:0:0:444\nZ:Q1JkWLomewhglhtO1A/Jn/INQlpt4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/resources/mgmt/2021-06-01-preview/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z7gCrhBbsC0Yibu20+rv6WYAJVE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/scheduler\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/scheduler/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/scheduler/mgmt/2014-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/scheduler/mgmt/2014-08-01-preview/scheduler\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yNcy/nyH5ePB41S2cFxaTewAU08=\nR:client.go\na:0:0:444\nZ:Q1tir8OLhsAQU7ctH3umVq+YU2bIk=\nR:enums.go\na:0:0:444\nZ:Q1LEG24bPnGSvNUt5Jr7Th4dNCsY8=\nR:jobcollections.go\na:0:0:444\nZ:Q1orwoBtK1ca5w8I13INEkG30uRv0=\nR:jobs.go\na:0:0:444\nZ:Q1xrAiYbDcvQji7vvCtuHhb28EBwo=\nR:models.go\na:0:0:444\nZ:Q1fWuaJDGiBGEiYXl6obLfun+aKqY=\nR:version.go\na:0:0:444\nZ:Q1ZPQVIb1cRnhmZ7URAVAGrHZttJw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/scheduler/mgmt/2014-08-01-preview/scheduler/schedulerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q17LjaHS4/KYdJcI+2OfcwDx8ZaCg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v1.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v1.0/security\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BsziYsHaaoKKaQG7guyZ0JriHi0=\nR:adaptiveapplicationcontrols.go\na:0:0:444\nZ:Q1FZ8sXpKdH1fZhbh4ArA2R86qndQ=\nR:adaptivenetworkhardenings.go\na:0:0:444\nZ:Q12IB4P8DVt3ozPnLaA+Qmzvlk4CY=\nR:advancedthreatprotection.go\na:0:0:444\nZ:Q1GZTxb1rzYunzGorvsIaYTta8jR4=\nR:alerts.go\na:0:0:444\nZ:Q1ghs9AQOjzVrSRtJ300JkEyRFSm4=\nR:alertssuppressionrules.go\na:0:0:444\nZ:Q1d0vHfHb/xWSzbODDN0NnNPtD1us=\nR:allowedconnections.go\na:0:0:444\nZ:Q1/ASX2ZIBvDEHBQqRhwAMxyPdMNE=\nR:automations.go\na:0:0:444\nZ:Q1j+F72M6r0QcroEyn1gW5rmmReWI=\nR:autoprovisioningsettings.go\na:0:0:444\nZ:Q1C30eYOeS1/ETz9dJAlEfBDRQaJ4=\nR:client.go\na:0:0:444\nZ:Q1rW2sCwT0dVtVUvVoNhxdyfnnIrE=\nR:compliances.go\na:0:0:444\nZ:Q1R1/sHopbjdbd4PpJelpbY8XXkKs=\nR:connectors.go\na:0:0:444\nZ:Q16HDA4ezwekhF2iBauDsEEbbGLp4=\nR:contacts.go\na:0:0:444\nZ:Q1dSyKR5aPzXII7T6dTtLum+stYvA=\nR:devicesecuritygroups.go\na:0:0:444\nZ:Q1fDosNv/KXC0wIFtzqZ3rBPwtKUg=\nR:discoveredsecuritysolutions.go\na:0:0:444\nZ:Q16TU1zito/LsC8y7aRBh3oj9FrAw=\nR:enums.go\na:0:0:444\nZ:Q1SwmKF93jCTl/Jv0vozONjIZdGy4=\nR:externalsecuritysolutions.go\na:0:0:444\nZ:Q1evmAI6wId0A6zo6S0kNhyJz8vT4=\nR:informationprotectionpolicies.go\na:0:0:444\nZ:Q1C8WnW3E8iP1xpm0D5LTRlN/oZEE=\nR:jitnetworkaccesspolicies.go\na:0:0:444\nZ:Q1ZSIZb6/ebyp4Hcxc84ZlwTaAIIs=\nR:locations.go\na:0:0:444\nZ:Q1wYR9QQ/nPiKhbxu07tVv21FZtp8=\nR:models.go\na:0:0:444\nZ:Q1d1Yvf72POl+Q6bDmcoAEZxMfSYw=\nR:operations.go\na:0:0:444\nZ:Q11ndxakJjelxTmW4nBu+ytN1MVQs=\nR:pricings.go\na:0:0:444\nZ:Q1d3YBK2JtYcxDGMZTKdQb4Dx+JqA=\nR:regulatorycomplianceassessments.go\na:0:0:444\nZ:Q1gEYMiOlmm22N1Lz3JQEd7U3of98=\nR:regulatorycompliancecontrols.go\na:0:0:444\nZ:Q1q7674rwAfNQi3SldUIgOizOvKaM=\nR:regulatorycompliancestandards.go\na:0:0:444\nZ:Q1bQWdlJvN0WUmZTabln8ZUAnuOTQ=\nR:securescorecontroldefinitions.go\na:0:0:444\nZ:Q1Zmva7pfqulWUmMy9zCmH+mE+ZjU=\nR:securescorecontrols.go\na:0:0:444\nZ:Q1zcjffsCo0rEc++Qx37HBNPeChNY=\nR:securescores.go\na:0:0:444\nZ:Q1PCi051HVGFreFvi8GsVlX3V1qFk=\nR:settings.go\na:0:0:444\nZ:Q1yuimyF415L2oXNhsHF8W5FZXb/w=\nR:sqlvulnerabilityassessmentbaselinerules.go\na:0:0:444\nZ:Q1eAqLSkvfMxoPsLQyb2X1COFI0Ak=\nR:sqlvulnerabilityassessmentscanresults.go\na:0:0:444\nZ:Q16aY+cEIEHjSguEaS4ygs6ntMgqA=\nR:sqlvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1x5+wTaXskBE/dWR+H2xID8Zw1Zo=\nR:subassessments.go\na:0:0:444\nZ:Q1xqkXvikVoK9MovAlxiFlfhWhqSo=\nR:tasks.go\na:0:0:444\nZ:Q1tr8HHytJ7Uh6jMx/pbxXiJHF+p8=\nR:topology.go\na:0:0:444\nZ:Q1hRqjQjUf3Jww3acNynMpPPO9ObM=\nR:version.go\na:0:0:444\nZ:Q1j+3q72D+ZbCcGLP7xi8+hc4b/hc=\nR:workspacesettings.go\na:0:0:444\nZ:Q18xLprkDXYfvi7eBDpabVREfIAXk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v1.0/security/securityapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18IgYZKRZpN/2P3a+uEx54pnDgh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v2.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v2.0/security\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1gpSdNPI7e8g6nknjirYS6PBqsmY=\nR:adaptiveapplicationcontrols.go\na:0:0:444\nZ:Q1FZ8sXpKdH1fZhbh4ArA2R86qndQ=\nR:adaptivenetworkhardenings.go\na:0:0:444\nZ:Q12IB4P8DVt3ozPnLaA+Qmzvlk4CY=\nR:advancedthreatprotection.go\na:0:0:444\nZ:Q1GZTxb1rzYunzGorvsIaYTta8jR4=\nR:alerts.go\na:0:0:444\nZ:Q1Ej4DM475BNIL8xehj8LvCVC1018=\nR:alertssuppressionrules.go\na:0:0:444\nZ:Q1d0vHfHb/xWSzbODDN0NnNPtD1us=\nR:allowedconnections.go\na:0:0:444\nZ:Q1/ASX2ZIBvDEHBQqRhwAMxyPdMNE=\nR:automations.go\na:0:0:444\nZ:Q1j+F72M6r0QcroEyn1gW5rmmReWI=\nR:autoprovisioningsettings.go\na:0:0:444\nZ:Q1C30eYOeS1/ETz9dJAlEfBDRQaJ4=\nR:client.go\na:0:0:444\nZ:Q1rW2sCwT0dVtVUvVoNhxdyfnnIrE=\nR:compliances.go\na:0:0:444\nZ:Q1R1/sHopbjdbd4PpJelpbY8XXkKs=\nR:connectors.go\na:0:0:444\nZ:Q16HDA4ezwekhF2iBauDsEEbbGLp4=\nR:contacts.go\na:0:0:444\nZ:Q1dSyKR5aPzXII7T6dTtLum+stYvA=\nR:devicesecuritygroups.go\na:0:0:444\nZ:Q1fDosNv/KXC0wIFtzqZ3rBPwtKUg=\nR:discoveredsecuritysolutions.go\na:0:0:444\nZ:Q16TU1zito/LsC8y7aRBh3oj9FrAw=\nR:enums.go\na:0:0:444\nZ:Q1Q2+Snbg6RH2zKd74eKY95fdVY88=\nR:externalsecuritysolutions.go\na:0:0:444\nZ:Q1evmAI6wId0A6zo6S0kNhyJz8vT4=\nR:informationprotectionpolicies.go\na:0:0:444\nZ:Q1C8WnW3E8iP1xpm0D5LTRlN/oZEE=\nR:iotsecuritysolution.go\na:0:0:444\nZ:Q1VMBNXf9oj0H+rEgZNYvckohgrqc=\nR:iotsecuritysolutions.go\na:0:0:444\nZ:Q1r+Mm60B4ieyGHHmo/vWc5XS+t0I=\nR:iotsecuritysolutionsanalytics.go\na:0:0:444\nZ:Q1wL843sfz2nQBNKFXY0yrMlQ0ik4=\nR:iotsecuritysolutionsanalyticsaggregatedalert.go\na:0:0:444\nZ:Q10R/TKRzs2oOd02Ondvjohf0TltA=\nR:iotsecuritysolutionsanalyticsaggregatedalerts.go\na:0:0:444\nZ:Q1u45luIwSn4TzS0BnAXshZfPpf90=\nR:iotsecuritysolutionsanalyticsrecommendation.go\na:0:0:444\nZ:Q1cPmZDIVmQ2bsyLkH0ylma5egEzE=\nR:iotsecuritysolutionsanalyticsrecommendations.go\na:0:0:444\nZ:Q1Xb5KGhLJTDI5jW/BTlc3ykDK0ck=\nR:iotsecuritysolutionsresourcegroup.go\na:0:0:444\nZ:Q1UwFm31hgoxf6T119gC+T0v4b5SU=\nR:jitnetworkaccesspolicies.go\na:0:0:444\nZ:Q1ZSIZb6/ebyp4Hcxc84ZlwTaAIIs=\nR:locations.go\na:0:0:444\nZ:Q1wYR9QQ/nPiKhbxu07tVv21FZtp8=\nR:models.go\na:0:0:444\nZ:Q1J4T1kU0xUi6uC9i1qPqlnK/LV1I=\nR:operations.go\na:0:0:444\nZ:Q11ndxakJjelxTmW4nBu+ytN1MVQs=\nR:pricings.go\na:0:0:444\nZ:Q1rMR1bgpP4N6hK1I3zlqcskOgMPs=\nR:regulatorycomplianceassessments.go\na:0:0:444\nZ:Q1gEYMiOlmm22N1Lz3JQEd7U3of98=\nR:regulatorycompliancecontrols.go\na:0:0:444\nZ:Q1q7674rwAfNQi3SldUIgOizOvKaM=\nR:regulatorycompliancestandards.go\na:0:0:444\nZ:Q1bQWdlJvN0WUmZTabln8ZUAnuOTQ=\nR:securescorecontroldefinitions.go\na:0:0:444\nZ:Q1Zmva7pfqulWUmMy9zCmH+mE+ZjU=\nR:securescorecontrols.go\na:0:0:444\nZ:Q1zcjffsCo0rEc++Qx37HBNPeChNY=\nR:securescores.go\na:0:0:444\nZ:Q1PCi051HVGFreFvi8GsVlX3V1qFk=\nR:settings.go\na:0:0:444\nZ:Q1yuimyF415L2oXNhsHF8W5FZXb/w=\nR:sqlvulnerabilityassessmentbaselinerules.go\na:0:0:444\nZ:Q1eAqLSkvfMxoPsLQyb2X1COFI0Ak=\nR:sqlvulnerabilityassessmentscanresults.go\na:0:0:444\nZ:Q16aY+cEIEHjSguEaS4ygs6ntMgqA=\nR:sqlvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1x5+wTaXskBE/dWR+H2xID8Zw1Zo=\nR:subassessments.go\na:0:0:444\nZ:Q1xqkXvikVoK9MovAlxiFlfhWhqSo=\nR:tasks.go\na:0:0:444\nZ:Q1tr8HHytJ7Uh6jMx/pbxXiJHF+p8=\nR:topology.go\na:0:0:444\nZ:Q1hRqjQjUf3Jww3acNynMpPPO9ObM=\nR:version.go\na:0:0:444\nZ:Q1IQOTOAlT5fYQJvyjXanp+FzgnCQ=\nR:workspacesettings.go\na:0:0:444\nZ:Q18xLprkDXYfvi7eBDpabVREfIAXk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v2.0/security/securityapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uJlJucES6h0+XLNEP/oqTR8SbbI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v3.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v3.0/security\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GmRzSAbWxvfa13YEBH0k42ghGPM=\nR:adaptiveapplicationcontrols.go\na:0:0:444\nZ:Q1jRtMiIYb9846ieEjvmV9RcVBkNU=\nR:adaptivenetworkhardenings.go\na:0:0:444\nZ:Q1pB3B+T/JUsQitoIk47e5kSxSmp4=\nR:advancedthreatprotection.go\na:0:0:444\nZ:Q1AQTI/m2rNycqTTzM7rH+uQD8Udg=\nR:alerts.go\na:0:0:444\nZ:Q1hSEGmG9n1t+yyLvPd9qccowgCeA=\nR:alertssuppressionrules.go\na:0:0:444\nZ:Q1d0vHfHb/xWSzbODDN0NnNPtD1us=\nR:allowedconnections.go\na:0:0:444\nZ:Q1CAQ9raGw9Rb3qqt3I5ZoZAn0pLY=\nR:assessments.go\na:0:0:444\nZ:Q1tg+Gc1xkUNCqx5jJzT/r2qhUww4=\nR:assessmentsmetadata.go\na:0:0:444\nZ:Q1+IJZdDKFFORARqSzT2wjTFMbHjU=\nR:automations.go\na:0:0:444\nZ:Q1j+F72M6r0QcroEyn1gW5rmmReWI=\nR:autoprovisioningsettings.go\na:0:0:444\nZ:Q1C30eYOeS1/ETz9dJAlEfBDRQaJ4=\nR:client.go\na:0:0:444\nZ:Q1rW2sCwT0dVtVUvVoNhxdyfnnIrE=\nR:complianceresults.go\na:0:0:444\nZ:Q187p96r0AWIWkz162SnoO5gEp6dw=\nR:compliances.go\na:0:0:444\nZ:Q1R1/sHopbjdbd4PpJelpbY8XXkKs=\nR:connectors.go\na:0:0:444\nZ:Q16HDA4ezwekhF2iBauDsEEbbGLp4=\nR:contacts.go\na:0:0:444\nZ:Q1dSyKR5aPzXII7T6dTtLum+stYvA=\nR:device.go\na:0:0:444\nZ:Q1uKOewlz3DQYRQhwzXTkB5kSMTIg=\nR:devicesecuritygroups.go\na:0:0:444\nZ:Q1X56F1LNl9TNzy4sB5qh5lEdWZQU=\nR:devicesforhub.go\na:0:0:444\nZ:Q1TLx8iBvzVc4KieAbm5kscKuOyKI=\nR:devicesforsubscription.go\na:0:0:444\nZ:Q1IjRCGtaO8UvFKQ5KLQennNJiZzE=\nR:discoveredsecuritysolutions.go\na:0:0:444\nZ:Q1fNq6+yuw7zrGnaciRcVuqoUwhFo=\nR:enums.go\na:0:0:444\nZ:Q1R6bHsKz9OOUpwza35K0STBHHRxs=\nR:externalsecuritysolutions.go\na:0:0:444\nZ:Q1ZSI8+mWjTMIKHeifqTz31rE3Z8g=\nR:informationprotectionpolicies.go\na:0:0:444\nZ:Q1C8WnW3E8iP1xpm0D5LTRlN/oZEE=\nR:ingestionsettings.go\na:0:0:444\nZ:Q14BlfMkrrVQwfjPJfKUY20r2QGj8=\nR:iotalerts.go\na:0:0:444\nZ:Q1flmwX8443T1jekd2hsbTBAsA+eA=\nR:iotalerttypes.go\na:0:0:444\nZ:Q1evZSF3uPXvJPpKxSoGGRV5zQzZI=\nR:iotdefendersettings.go\na:0:0:444\nZ:Q1Wc+eTjP2Pe7Dgsl96N/lKPy6o80=\nR:iotrecommendations.go\na:0:0:444\nZ:Q1tpZSl3QVzHheQqhszZSuw9dwz6s=\nR:iotrecommendationtypes.go\na:0:0:444\nZ:Q1Pi7vtHsRs/jmPrUhkD73CiXBsnA=\nR:iotsecuritysolution.go\na:0:0:444\nZ:Q1VNGOo4iqtipfZFBMRTijb3ZToEg=\nR:iotsecuritysolutionanalytics.go\na:0:0:444\nZ:Q1UmIeCjoLsnVHuDRHky8fefOInVM=\nR:iotsecuritysolutionsanalyticsaggregatedalert.go\na:0:0:444\nZ:Q1I2BdmpKBR4cV20zWtEgyubK4PD0=\nR:iotsecuritysolutionsanalyticsrecommendation.go\na:0:0:444\nZ:Q1aITvQWQ/NP+7quuj5p9w/t/zerE=\nR:iotsensors.go\na:0:0:444\nZ:Q1S3TG5XvGm7nTReqQvTLn13n9fP8=\nR:iotsites.go\na:0:0:444\nZ:Q14xht3LCgtQkoWcugm5NYSzdKGac=\nR:jitnetworkaccesspolicies.go\na:0:0:444\nZ:Q10puvWqUTX9pVYekzYlzXozHxSt4=\nR:locations.go\na:0:0:444\nZ:Q1wYR9QQ/nPiKhbxu07tVv21FZtp8=\nR:models.go\na:0:0:444\nZ:Q1S/sH+Zz+pPYWlnaakINVoROfnPg=\nR:onpremiseiotsensors.go\na:0:0:444\nZ:Q1DWDiU2mXFByLYr5WRZlPjiFtAU8=\nR:operations.go\na:0:0:444\nZ:Q11ndxakJjelxTmW4nBu+ytN1MVQs=\nR:pricings.go\na:0:0:444\nZ:Q1rMR1bgpP4N6hK1I3zlqcskOgMPs=\nR:regulatorycomplianceassessments.go\na:0:0:444\nZ:Q1gEYMiOlmm22N1Lz3JQEd7U3of98=\nR:regulatorycompliancecontrols.go\na:0:0:444\nZ:Q1q7674rwAfNQi3SldUIgOizOvKaM=\nR:regulatorycompliancestandards.go\na:0:0:444\nZ:Q1bQWdlJvN0WUmZTabln8ZUAnuOTQ=\nR:securescorecontroldefinitions.go\na:0:0:444\nZ:Q1TbXbIJzizlWs5GHO6zyIZLsZE88=\nR:securescorecontrols.go\na:0:0:444\nZ:Q1aagb401qP2TtxbgG6hmzMNgcD9U=\nR:securescores.go\na:0:0:444\nZ:Q1tuWXj15tEpqCBKxQBrq4j3FLIQo=\nR:servervulnerabilityassessment.go\na:0:0:444\nZ:Q1o7VYOcbIzOsOTbbeM2pl+38QzPA=\nR:settings.go\na:0:0:444\nZ:Q1MLtQ4/tYNq+P4H9VuqD8kaXOnNw=\nR:softwareinventories.go\na:0:0:444\nZ:Q1z/hHv5Hkvr2YvZF0jDEujJR0tkE=\nR:solutions.go\na:0:0:444\nZ:Q1EGkJ0N92t/l/QCiXQH9HOQxPWUU=\nR:solutionsreferencedata.go\na:0:0:444\nZ:Q18pAuoMtv01qRS40Q490vIrBF0AM=\nR:sqlvulnerabilityassessmentbaselinerules.go\na:0:0:444\nZ:Q1eAqLSkvfMxoPsLQyb2X1COFI0Ak=\nR:sqlvulnerabilityassessmentscanresults.go\na:0:0:444\nZ:Q16aY+cEIEHjSguEaS4ygs6ntMgqA=\nR:sqlvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1x5+wTaXskBE/dWR+H2xID8Zw1Zo=\nR:subassessments.go\na:0:0:444\nZ:Q1xqkXvikVoK9MovAlxiFlfhWhqSo=\nR:tasks.go\na:0:0:444\nZ:Q1tr8HHytJ7Uh6jMx/pbxXiJHF+p8=\nR:topology.go\na:0:0:444\nZ:Q188qowu1XUVBEbAB+7EDrsYZiVeI=\nR:version.go\na:0:0:444\nZ:Q1MD4nJHwaTNsdQjqhju0L4MTq9kY=\nR:workspacesettings.go\na:0:0:444\nZ:Q18xLprkDXYfvi7eBDpabVREfIAXk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/security/mgmt/v3.0/security/securityapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yUIrU5VVPk+M2WJoC4ZDHT6evNM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2019-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2019-01-01-preview/securityinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1SFplvl/KhjRnpj8TiE+jUgvwRRc=\nR:actions.go\na:0:0:444\nZ:Q1LuT0vS7dRe649MFaWwWp1IGq8UY=\nR:alertrules.go\na:0:0:444\nZ:Q17fS7dp2/upgstK07pXNYKRk+fsQ=\nR:alertruletemplates.go\na:0:0:444\nZ:Q1Lu+/aCEgrZprypMGVpJJW2q7Cv8=\nR:automationrules.go\na:0:0:444\nZ:Q1C9ioTii/ZefxpJCRWcoTY8v1LsA=\nR:bookmark.go\na:0:0:444\nZ:Q1lI4W6qBQ8EWXL3c13dF2wT23YM0=\nR:bookmarkrelations.go\na:0:0:444\nZ:Q1jb0Girrn74ZOaVJm/od7PP+HFdg=\nR:bookmarks.go\na:0:0:444\nZ:Q154gcHr2YrY+LB9k1QOmYGfrTeSM=\nR:casecomments.go\na:0:0:444\nZ:Q1p8W66ybINGnaKG1UJ124Z0BS5LY=\nR:caserelations.go\na:0:0:444\nZ:Q1m2Z8aKybHaztGvd6jLjIdnFGp0c=\nR:cases.go\na:0:0:444\nZ:Q1JJIYyXjGkI5w/7fYwh8JILTghDk=\nR:casesaggregations.go\na:0:0:444\nZ:Q1a0hOGT/KJC9xM0R/Z0eC54jbUVc=\nR:client.go\na:0:0:444\nZ:Q14sQWZv1ReW0hou5FbseOiof0+20=\nR:comments.go\na:0:0:444\nZ:Q1CaEJ7pY6Ne+7UMz2BQc2KivwDyE=\nR:dataconnectors.go\na:0:0:444\nZ:Q10uuXiVdwA+VFTSYMotwXZjB0Qv8=\nR:dataconnectorscheckrequirements.go\na:0:0:444\nZ:Q1tGigRna1WW1XOfOwEkBQfcTsGD0=\nR:entities.go\na:0:0:444\nZ:Q1HHdfh9ZnnmXQIrbZvXX0AePB2ds=\nR:entitiesgettimeline.go\na:0:0:444\nZ:Q1ieDoHqMPY5J5sans9QSb3eAe0AE=\nR:entitiesrelations.go\na:0:0:444\nZ:Q1IprkSt6JR8vfvb7XKi9keSzqVQw=\nR:entityqueries.go\na:0:0:444\nZ:Q14q3zh6AlP7dF9iXBilp5i5dlzAA=\nR:entityrelations.go\na:0:0:444\nZ:Q1Z5WHs1ULO3lpEtR9abGzkPcs8bY=\nR:enums.go\na:0:0:444\nZ:Q1djsuX6YukTUgGwVpOC5Je+8lXRc=\nR:incidentcomments.go\na:0:0:444\nZ:Q1kbzHx3pWA1caIUMDSdWuy+gGKtw=\nR:incidentrelations.go\na:0:0:444\nZ:Q1jkGcPmA7Lwqn0sqr4TlFHiy0iDQ=\nR:incidents.go\na:0:0:444\nZ:Q13m88vlQvdRc8VGjLGEpQ9OsOdXQ=\nR:models.go\na:0:0:444\nZ:Q1o5x+HltMVqWRl/LvWsSm1HM1fqw=\nR:officeconsents.go\na:0:0:444\nZ:Q16bI+W03qjsgO1BwR9AB0NFxom1E=\nR:operations.go\na:0:0:444\nZ:Q18DSjZY/ye928i6rb3V7aVQ6QxPc=\nR:productsettings.go\na:0:0:444\nZ:Q1Hks6qOt8/xgC0ziUwC0TE4TzZFc=\nR:threatintelligenceindicator.go\na:0:0:444\nZ:Q1QbaIpNTTOH7TN7PzRQA0glmYWK8=\nR:threatintelligenceindicatormetrics.go\na:0:0:444\nZ:Q1Wv7oAGSG93EGJVhHTT4Ly9mM4lg=\nR:threatintelligenceindicators.go\na:0:0:444\nZ:Q1hw+MbrnTstj2y9+Xr4NXgB7AjDc=\nR:version.go\na:0:0:444\nZ:Q1W/ZkHnlQOBOasyUHWwElfYr7bfs=\nR:watchlistitems.go\na:0:0:444\nZ:Q1YrA+DJR0G44y6NLqCoS4WPOMc3o=\nR:watchlists.go\na:0:0:444\nZ:Q1dozBP7APu3nJ8+xQnUS11uruwy8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2019-01-01-preview/securityinsight/securityinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1M6tIedpfCdkwsPMs6B+admHoOQo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2021-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2021-09-01-preview/securityinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QvyXIOclgkJwhUAip7UjKJG/Ltc=\nR:actions.go\na:0:0:444\nZ:Q1PCyrB+Jwj14U8j/mCndtQcYlpTk=\nR:alertrules.go\na:0:0:444\nZ:Q1Af4TEpaqVpNzWTrTwWgghdhTPKs=\nR:alertruletemplates.go\na:0:0:444\nZ:Q10uiIbfyfRkXlwIuwdwqzjlqeYAE=\nR:automationrules.go\na:0:0:444\nZ:Q1gVtYEvD9DqVIZMwrck8CM45CGoQ=\nR:bookmark.go\na:0:0:444\nZ:Q1XoksreMUsqeWHs8qEW8ADEzBdcU=\nR:bookmarkrelations.go\na:0:0:444\nZ:Q1wVsaoZ087Z6a6e4EZvGJSqTcMbs=\nR:bookmarks.go\na:0:0:444\nZ:Q1DcHz/w6H7eVUAumw9ZoszKUr1cE=\nR:client.go\na:0:0:444\nZ:Q1kpAnJGu6HOwwdt0lElHKVdSBIhE=\nR:dataconnectors.go\na:0:0:444\nZ:Q15dprKoGy+5ex4mcoxikGT+vGZRs=\nR:dataconnectorscheckrequirements.go\na:0:0:444\nZ:Q1cXV6CZHamAyhtoH9mYey6sv5KpA=\nR:domainwhois.go\na:0:0:444\nZ:Q1u5BTOGQrDm3kwBRSDBcRxYNBBx4=\nR:entities.go\na:0:0:444\nZ:Q1cRnAY7TNlICT+wuMOO3FgmFkfK8=\nR:entitiesgettimeline.go\na:0:0:444\nZ:Q1IV4v/c+wNlPcGXEjtCYQsF46eoM=\nR:entitiesrelations.go\na:0:0:444\nZ:Q1fIIdNUDZdJHUm33P+Glw4uWY4iM=\nR:entityqueries.go\na:0:0:444\nZ:Q1qhAc0ECIXRiSbohyHoyNuCaNf5w=\nR:entityquerytemplates.go\na:0:0:444\nZ:Q1Zsgf7u5MX5aL4eOM0vI9GzUMX/U=\nR:entityrelations.go\na:0:0:444\nZ:Q1n7Tp4Hb7+0MPZwKLDFdgWbHl2Vo=\nR:enums.go\na:0:0:444\nZ:Q1CCHGdzVSlsIvb9WYfCv6ICm69Bs=\nR:incidentcomments.go\na:0:0:444\nZ:Q1Y0LD89C/VPZtunKKWJFt7C2rRIM=\nR:incidentrelations.go\na:0:0:444\nZ:Q1KeM/MEQhkH3wtKVgQyshm4T9Njg=\nR:incidents.go\na:0:0:444\nZ:Q1bvRsqiEaiNQ6Jbm6qVblhNQncGY=\nR:ipgeodata.go\na:0:0:444\nZ:Q1vDMG00qIPLxcAJCV1uhi/s6X/X4=\nR:metadata.go\na:0:0:444\nZ:Q1b6R8vqF9SRz7Tbjv+USnJZvVxa8=\nR:models.go\na:0:0:444\nZ:Q1FKRRKuTa9qzPWox/UaS8Ws2KsrY=\nR:officeconsents.go\na:0:0:444\nZ:Q1TZwO1SQBLW8kbV3+5ey3E5BRNnY=\nR:operations.go\na:0:0:444\nZ:Q1Fe9N0mqkG0i2a8mI+W6dTwLYS14=\nR:productsettings.go\na:0:0:444\nZ:Q1jyWZK+xN2yqLKxxHhQCtGxcjmyQ=\nR:sentinelonboardingstates.go\na:0:0:444\nZ:Q1+YJ4u30gzoES3cx5jJ1EXAa6mqQ=\nR:sourcecontrol.go\na:0:0:444\nZ:Q1v5GI4P42oOUB6TOLKGF5VehgEik=\nR:sourcecontrols.go\na:0:0:444\nZ:Q1juES0D7HEuw/PULhXImhLkBwGT8=\nR:threatintelligenceindicator.go\na:0:0:444\nZ:Q10zWykx8sWBjUkqto4mYD4LhAVfE=\nR:threatintelligenceindicatormetrics.go\na:0:0:444\nZ:Q1qaMI8jQpxiI2dHIX5D1XQyBDKg0=\nR:threatintelligenceindicators.go\na:0:0:444\nZ:Q1R0k7xl0aL6lm0MNi9aGAy8WuMKk=\nR:version.go\na:0:0:444\nZ:Q1h9j8K1NlNN+LO97+RTIklOAXK8E=\nR:watchlistitems.go\na:0:0:444\nZ:Q1JgEZtEj2mwPDfEt7juwnfd3LuAA=\nR:watchlists.go\na:0:0:444\nZ:Q1wdBheFs4b8FAq16hIx1GwkPBm8Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2021-09-01-preview/securityinsight/securityinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WvKs8JPixNC1rGAk1+NIGLc3Wq0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2022-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2022-01-01-preview/securityinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1o8JZT3fXou5bIz1S9+B+QkhCzkk=\nR:_meta.json\na:0:0:444\nZ:Q10SsHCINUPRDUHyEga44/sqc3n94=\nR:actions.go\na:0:0:444\nZ:Q14NnJfGzKqKOgft54hLwhNe3Cikg=\nR:alertrules.go\na:0:0:444\nZ:Q19WP+ZL/13HCyTB+s6R8BVTHG5V8=\nR:alertruletemplates.go\na:0:0:444\nZ:Q1/c4eX9HZjT+6vzKd31gCUnQA01s=\nR:automationrules.go\na:0:0:444\nZ:Q1vyZ8FvBOzBF40nEesj7ltNQMrfE=\nR:bookmark.go\na:0:0:444\nZ:Q1i6yoUcvsK6TaNw9MAU8HmI1sWp4=\nR:bookmarkrelations.go\na:0:0:444\nZ:Q1laD6IhLNh1tJ1ST0zCneLk/YLfc=\nR:bookmarks.go\na:0:0:444\nZ:Q1UYpsZ7O8ywVDjyfjtJP6CHww+eQ=\nR:client.go\na:0:0:444\nZ:Q1hvEUfodFQyCIi5HXIy6k2VodR5s=\nR:dataconnectors.go\na:0:0:444\nZ:Q1wgyjhErB2i+zW3phyu2erzNs+Y4=\nR:dataconnectorscheckrequirements.go\na:0:0:444\nZ:Q11oL+Be8uQ1f+ilMAXNiQVQobDLo=\nR:domainwhois.go\na:0:0:444\nZ:Q1RUZg5K2PyUxddQKQNG9m9QI3WzA=\nR:entities.go\na:0:0:444\nZ:Q1mCJbJtVtVkR27bTn8UyHUe9vPbo=\nR:entitiesgettimeline.go\na:0:0:444\nZ:Q12w2KXzMhJwuwivqsFjOui6vuqRA=\nR:entitiesrelations.go\na:0:0:444\nZ:Q1i9CgFeNQV0QkpnKg7dQuIRZmt40=\nR:entityqueries.go\na:0:0:444\nZ:Q1hcqW08Z7uKfj/ydd04RQAlOOidw=\nR:entityquerytemplates.go\na:0:0:444\nZ:Q1wP6kRKFwkIiR8RHoxcAQgP2BM0g=\nR:entityrelations.go\na:0:0:444\nZ:Q1dWnNRoHgFRlqLJXNHotjaCvQRus=\nR:enums.go\na:0:0:444\nZ:Q1DblW5qAvAzhvK7MmHrqA07dB2Ls=\nR:incidentcomments.go\na:0:0:444\nZ:Q17YL96ZzhFLt2fvxIS/zhnSb8MtI=\nR:incidentrelations.go\na:0:0:444\nZ:Q17NQIeXKFGJszBLUVgEJe/KpT1og=\nR:incidents.go\na:0:0:444\nZ:Q1B7K6AFEJ4SILBwy79xAoVvdhacA=\nR:ipgeodata.go\na:0:0:444\nZ:Q17eBptpeTgh6FFJdjOari1XhP2F8=\nR:metadata.go\na:0:0:444\nZ:Q1Cv2MFRHYAk80SpVb90KVvGzoK1E=\nR:models.go\na:0:0:444\nZ:Q19UB1eOtND4wCo7wL96WzgOXXjEg=\nR:officeconsents.go\na:0:0:444\nZ:Q1y6PTS2ijZaaWXDbsCBhpW7xa4Rs=\nR:operations.go\na:0:0:444\nZ:Q1PJIyfDip0XVsA8TnUlxI80TuvHE=\nR:productsettings.go\na:0:0:444\nZ:Q11aXw+tTaPbzuohywS4MbeNG6ksc=\nR:sentinelonboardingstates.go\na:0:0:444\nZ:Q1QNUpXX+8rzBR3pmy564vbc2IdUY=\nR:sourcecontrol.go\na:0:0:444\nZ:Q1iuyvX13Jeo++mBkGL8sKcOW/mwE=\nR:sourcecontrols.go\na:0:0:444\nZ:Q1Z5IVSUDqYRQ6/qjv9BJIrbrjYII=\nR:threatintelligenceindicator.go\na:0:0:444\nZ:Q1cGQ6T4yrN0+hVp0PtmzJ+P7koUw=\nR:threatintelligenceindicatormetrics.go\na:0:0:444\nZ:Q1Yq3TUuVXYCDfGA1bWOZcQNindFU=\nR:threatintelligenceindicators.go\na:0:0:444\nZ:Q1ffkBz9jYkA1jfk13D/R6UeqIlK4=\nR:version.go\na:0:0:444\nZ:Q1XUIpzkGaJr7tvGPAwtqXc47uc0w=\nR:watchlistitems.go\na:0:0:444\nZ:Q1TDJTj+sjMRcsEfBzj3lkVZRfaio=\nR:watchlists.go\na:0:0:444\nZ:Q14Kd9unHlyqsTv9duP8G2CdSMPuY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/securityinsight/mgmt/2022-01-01-preview/securityinsight/securityinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uhAIta2HPP5pIyT5LNROSLNs08g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2018-01-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2018-01-01-preview/servicebus\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1qGxkrVhYlvjyaffpZBig+UcWWug=\nR:client.go\na:0:0:444\nZ:Q1o6Qi8rNRsM0ivJPz/JeYzgaWMyk=\nR:disasterrecoveryconfigs.go\na:0:0:444\nZ:Q1VXrXhTnEbf7SCZE3TlQi32dFs3k=\nR:enums.go\na:0:0:444\nZ:Q17Lp7rEC8tNQksOtxsY5HRkIpG5o=\nR:eventhubs.go\na:0:0:444\nZ:Q1Ch0QMn/mitNPIXjmUXrxzqkYaBs=\nR:migrationconfigs.go\na:0:0:444\nZ:Q1H0xKu895iLYKsk/mRotWca9ylR4=\nR:models.go\na:0:0:444\nZ:Q19+u02PwEwjfFXn1LH0W+jSuJPJA=\nR:namespaces.go\na:0:0:444\nZ:Q1j72bsrcQvMjGrIIy17rtS8Ue/YI=\nR:operations.go\na:0:0:444\nZ:Q177j1T7f/iUWRtee47Fh5fQRybl4=\nR:premiummessagingregions.go\na:0:0:444\nZ:Q1Jk+s6IVSf896SgQKijLsDLJP468=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q16fAD00U4ZQrYflOQALqhxZl2ae4=\nR:privatelinkresources.go\na:0:0:444\nZ:Q17lQsylFvP8mstimZWO27XPs6eJU=\nR:queues.go\na:0:0:444\nZ:Q1IplLc3xDkseJNO+7+O4iMsCxFAU=\nR:regions.go\na:0:0:444\nZ:Q1dI+0ANBZnp8MxmeO+GGd4oklJVU=\nR:rules.go\na:0:0:444\nZ:Q1UWlMYP+L2H/N+jJlrm55+h0bOc8=\nR:subscriptions.go\na:0:0:444\nZ:Q1uoUOx44jq/jQqM0o3wp6KO4zflQ=\nR:topics.go\na:0:0:444\nZ:Q1Ce+wkrYb7iX0JcP9aSIrXFFFwaQ=\nR:version.go\na:0:0:444\nZ:Q151DPZvsCUf5mEqerCJYPMGU0+AE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2018-01-01-preview/servicebus/servicebusapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ScWLjouoVBIQFo4sUMz7YLpk3pY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2021-06-01-preview/servicebus\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12rxsID8oPYjNT/7tXn3ztlV0W+4=\nR:client.go\na:0:0:444\nZ:Q1hTlC3tmzJxlz/NNQKU5eUnyJA3s=\nR:disasterrecoveryconfigs.go\na:0:0:444\nZ:Q1PA3UeGSIQipFneXXezGOa6gprUs=\nR:enums.go\na:0:0:444\nZ:Q1CVcFwHjVx5zHRZrGs35+ZNCWpOs=\nR:migrationconfigs.go\na:0:0:444\nZ:Q1Y/xsR2OFJiiL7kjLwZXkN6m2bs0=\nR:models.go\na:0:0:444\nZ:Q1px53ahmSW9Asa6B9CuRsUYloWUg=\nR:namespaces.go\na:0:0:444\nZ:Q1snGNimteS+AtPwfFwHP044CF8y8=\nR:operations.go\na:0:0:444\nZ:Q1h6d2xgcJSSO/nfbaRxIYsU7vz8U=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ML8yTpjL3rsjaNAg0FERUymxFDs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1VFV56rhniS+oO/U6VYBtezUV4gI=\nR:queues.go\na:0:0:444\nZ:Q1FtXgAPd4MzE2Sy8pKvw9+5GE2EQ=\nR:rules.go\na:0:0:444\nZ:Q1xEuw8FwaittXB7MyWHVGA+8VraQ=\nR:subscriptions.go\na:0:0:444\nZ:Q1eRikfKv9VCZSamR/NgY59CW7zf8=\nR:topics.go\na:0:0:444\nZ:Q1/gNDDcAbrJB++3SyS3rrQJ50PZs=\nR:version.go\na:0:0:444\nZ:Q1+SdulqM+asDU6aW8P/9pSvYVOiU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicebus/mgmt/2021-06-01-preview/servicebus/servicebusapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gbQB6UmFbZWi5gkduKkUVubQPW0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabric/mgmt/2017-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabric/mgmt/2017-07-01-preview/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BdijGU1ixivb/jLW8+pwkdOWGWc=\nR:client.go\na:0:0:444\nZ:Q11aBwIqLVMbY0TTP5D+HLlj8fghA=\nR:clusters.go\na:0:0:444\nZ:Q112+Z6esZYbT1hUHdblCYL/4IwPg=\nR:clusterversions.go\na:0:0:444\nZ:Q1Crv+mWP4CbU6YJsHBteHbhiM2UY=\nR:enums.go\na:0:0:444\nZ:Q1OoAgHVpk0oskNazBgwrwJ9w9bXk=\nR:models.go\na:0:0:444\nZ:Q1xcedT1b0m+yPkSdLf/hBtBlojDw=\nR:operations.go\na:0:0:444\nZ:Q1lYu0U3ACskaMtwqAPNa9lRMVS2I=\nR:version.go\na:0:0:444\nZ:Q1CHdjKFZQoE5U1K9rhniyX7rxM2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabric/mgmt/2017-07-01-preview/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sFl4y4aPNMjU+YTcfzJ35ZDl3Po=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabricmesh\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabricmesh/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabricmesh/mgmt/2018-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabricmesh/mgmt/2018-09-01-preview/servicefabricmesh\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1btXuIxoAqAi8wpulxOuB4dFcNCw=\nR:application.go\na:0:0:444\nZ:Q1KW7bfDp/EpWIVxOXdAuovsX1bK8=\nR:client.go\na:0:0:444\nZ:Q1wq3yuEy/QDEkwJsoSvQASwCx6Qc=\nR:codepackage.go\na:0:0:444\nZ:Q1m09o3qFB4kCog/YlSde44Q1/YZs=\nR:enums.go\na:0:0:444\nZ:Q1NN/flz0wEXHd/BRLgeoyYLvpKHs=\nR:gateway.go\na:0:0:444\nZ:Q1uUJ5uJcZ3k6flcItWVJangy0ZRI=\nR:models.go\na:0:0:444\nZ:Q1qa87CQ6U/YkQGN/avGp0swlXPB8=\nR:network.go\na:0:0:444\nZ:Q1DMUUK0DFkrlUde1hTr2DTljMiP8=\nR:operations.go\na:0:0:444\nZ:Q1BqN52L4t6dsuqXKx9EuqysI44BQ=\nR:secret.go\na:0:0:444\nZ:Q1q1M/IKTKHDxc6isO8LQIOa+PnPE=\nR:secretvalue.go\na:0:0:444\nZ:Q1zO+AXzUHvZKOOhU/EsF+9+LUSXE=\nR:service.go\na:0:0:444\nZ:Q1LuyTOoN1mGqBpcBV8iMRn7s0as0=\nR:servicereplica.go\na:0:0:444\nZ:Q1ZMJd/2YNx7Vlhx3/f1Bh6nEhTsw=\nR:version.go\na:0:0:444\nZ:Q1YVp11p7TW0eLoneyVHPa0ND+lDM=\nR:volume.go\na:0:0:444\nZ:Q1ExJB/+99tbxZ1wKvY7tfbOzt9kw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/servicefabricmesh/mgmt/2018-09-01-preview/servicefabricmesh/servicefabricmeshapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QMMs5mJ0BUBrNDFexn+4UUrATNs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2018-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2018-03-01-preview/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1F9HaEiEWJo5/1dorZ5JguMoPGq4=\nR:client.go\na:0:0:444\nZ:Q14hvmBjtx7udtGMnzqEq7sLwzM7U=\nR:enums.go\na:0:0:444\nZ:Q1HH4NRRGelIxZpg0uFXAobjoZD8I=\nR:models.go\na:0:0:444\nZ:Q101MmN8nZIb6nbg6UxKNYIVgM2b0=\nR:operations.go\na:0:0:444\nZ:Q1p7akM8Tk2WErWvhzohOXBpO1jwE=\nR:signalr.go\na:0:0:444\nZ:Q1fANxnDpSzjqUyoryPGFFJwrtr+g=\nR:usages.go\na:0:0:444\nZ:Q1vARoWv+XLoMFKRJY+r5gvLtpc3c=\nR:version.go\na:0:0:444\nZ:Q1DBqPlCdDkhWCOzH3zcMP7YIhFuU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2018-03-01-preview/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZlMYzKTGUbkcAlKWqlQ9TFvFmyc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2020-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2020-07-01-preview/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1m5xU9JlDN2F9PtlA2yw4IZk+SVs=\nR:client.go\na:0:0:444\nZ:Q1qKqMc0S1vTC3XheMLvMAyAeZ1LA=\nR:enums.go\na:0:0:444\nZ:Q1g0qVtE4CR8lSYBFkQLobepIIPuA=\nR:models.go\na:0:0:444\nZ:Q12+NXMYY1htVpeb/JTcxfo+NWSF8=\nR:operations.go\na:0:0:444\nZ:Q1UtUItCIOhi/7xgx08sGxW3NwKw4=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1DiukJdAyaQH2wvBth499tZTFWSE=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1NDmL2XnKV+ntClOZBgpZKpSPZBQ=\nR:signalr.go\na:0:0:444\nZ:Q13OZuzL3aSh1fqHIJA+/lrFNIbiE=\nR:usages.go\na:0:0:444\nZ:Q1Mt1w5eUvtrt/3VlQcgWwh5FAia8=\nR:version.go\na:0:0:444\nZ:Q1jMsAJ9uv8G4qjSBdzSGmpKsvDL0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2020-07-01-preview/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lh4hp3KYI2wYRegim7Uc0J20+Go=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-04-01-preview/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UfdXSRumICZtODOFu8xYyXlF3a8=\nR:client.go\na:0:0:444\nZ:Q1vb91g/XJNb3tz8H1yc4b14HDfkU=\nR:enums.go\na:0:0:444\nZ:Q1945/fl4oDuM5ivCJeeiobiLUutY=\nR:models.go\na:0:0:444\nZ:Q1eugzx+YEI1B+CeJhx/Xh4ZGk2yc=\nR:operations.go\na:0:0:444\nZ:Q1QS7lWpWr7sheFBSLCYpzOQcRnMM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1CR1edcGJ9bT2dzM6Pl1TIxZB8ok=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1aZez9EeOS9qXzYRKOVXIb3Mo2qA=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q1J/VrM1FafWp1PZpMlUpgcUKz44k=\nR:signalr.go\na:0:0:444\nZ:Q1tMCR+RrDzB7Q5SJskI75T5tCkeo=\nR:usages.go\na:0:0:444\nZ:Q1dBjPuUV0j0XtjFqNYq+XQMTxuLI=\nR:version.go\na:0:0:444\nZ:Q13Z6pFR6bhi3phFkV+oNsd7dzNQI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-04-01-preview/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13J9teZfT9pr2oqUPCLqGfQDt21U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-06-01-preview/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DjT9FjlcqVypGwmdpqOikuYA38k=\nR:client.go\na:0:0:444\nZ:Q1s8SaaVs8EZRv85nCTkQzC7PY2Nw=\nR:enums.go\na:0:0:444\nZ:Q1945/fl4oDuM5ivCJeeiobiLUutY=\nR:models.go\na:0:0:444\nZ:Q1ZjEFigFrPGX9vjo8KaCAzc7L9j0=\nR:operations.go\na:0:0:444\nZ:Q11F9lNMdJSgRtXc27hZQOkm5Bcv8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q127O8ajnIuoyFG2UqeF2fNKfOhIc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1/mJVeko7wG81ddbJ3Orc9sK1RmU=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q10065aa86Sx5acnhJ2MBhejEiSOg=\nR:signalr.go\na:0:0:444\nZ:Q1t+sFOTAIfPSs1qaU+aZ/Kka+A2k=\nR:usages.go\na:0:0:444\nZ:Q1Rt/wAh0qPDA/RsHj2+93hu5ctUI=\nR:version.go\na:0:0:444\nZ:Q1z7ioynbS2ym0+LSsX4ql1stgbz8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/signalr/mgmt/2021-06-01-preview/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ByyZEGt3XaeKJSFC8XaFr7sVBC4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/softwareplan\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/softwareplan/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/softwareplan/mgmt/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/softwareplan/mgmt/2019-06-01-preview/softwareplan\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kVZLMTtfweu/L5lHlPPboFDXa7E=\nR:client.go\na:0:0:444\nZ:Q1sXjGJTISTXhKnn/gQp6NVUfzqA8=\nR:enums.go\na:0:0:444\nZ:Q1CSX5RI4vRTQwjq4pqSbG9rRR6jo=\nR:hybridusebenefit.go\na:0:0:444\nZ:Q1OT5LgT75xYOSVuxor6zKxcBurFI=\nR:hybridusebenefitrevision.go\na:0:0:444\nZ:Q1UAnY0dcm8CTf3ayA2h+4AXk+2G0=\nR:models.go\na:0:0:444\nZ:Q10ZInTw3Rf2t2yoeXxVrA/DprUrQ=\nR:operations.go\na:0:0:444\nZ:Q1G85cZTGNlBHBS7YyvqVCXK5necY=\nR:softwareplan.go\na:0:0:444\nZ:Q1IdZH4Yg4Uw1XGmFAa4RitYeJhaw=\nR:version.go\na:0:0:444\nZ:Q1aTy4bQtUycDQ+5EOAPq9MfYqpik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/softwareplan/mgmt/2019-06-01-preview/softwareplan/softwareplanapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mW1ld6JStwlJt8AbhBBAD9rTUak=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2017-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2017-03-01-preview/sql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1v9WKgG12Pw8LZEAgzoH0p2apoFE=\nR:capabilities.go\na:0:0:444\nZ:Q1Ta8teg28fU3e37GtA0xsruorU40=\nR:client.go\na:0:0:444\nZ:Q1ea9+hiVI15XcPXwGjcX6BZOQYMo=\nR:databaseautomatictuning.go\na:0:0:444\nZ:Q1diqrZqEDfolY+C0pO8mtu6MTmhU=\nR:databaseblobauditingpolicies.go\na:0:0:444\nZ:Q1tjhfu4L9BcHFHDdHuB9BJT/T+fs=\nR:databaseoperations.go\na:0:0:444\nZ:Q1rG4on/Ovdj+oqJ/C9bSdzj3fpDM=\nR:databases.go\na:0:0:444\nZ:Q1xYuZUwBVkA6CgN+1ANVegx9x69I=\nR:databasethreatdetectionpolicies.go\na:0:0:444\nZ:Q1WDmFD5RQZ139nHhJVu6qUO81hmY=\nR:databaseusages.go\na:0:0:444\nZ:Q1a06jKcPRaG1QoO5St+51ZDRjADQ=\nR:databasevulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1mj7IAs/bIbOyKw934cDkFtgxqsY=\nR:databasevulnerabilityassessments.go\na:0:0:444\nZ:Q1I/UZ+105yg0QDn6alEkQjwIZjD0=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1g4X6yWCdcepMP5sx8JMNDi/Fjms=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1A+0sUPi8igU7kYhCBugmuy4IrxY=\nR:datawarehouseuseractivities.go\na:0:0:444\nZ:Q1p487OdaloDAOiiapkHia/yMKoG8=\nR:elasticpoolactivities.go\na:0:0:444\nZ:Q1RCWD/ziRR79Xw5qIDfNeAhvKwkI=\nR:elasticpooldatabaseactivities.go\na:0:0:444\nZ:Q1mF/FP56dQJsIT+1S8x0AcBZoxZw=\nR:elasticpools.go\na:0:0:444\nZ:Q1YSFzBkg3DxPiNAKUnIkn67a/FRs=\nR:encryptionprotectors.go\na:0:0:444\nZ:Q1IloKcyJoeZE4/a4bZs/KoZ2eYx0=\nR:enums.go\na:0:0:444\nZ:Q1CA6x+HNOUHoilMxZTcEdrfTwVQU=\nR:extendeddatabaseblobauditingpolicies.go\na:0:0:444\nZ:Q1afrDnVYlHbgVmDuccPmgmp1E+w4=\nR:extendedserverblobauditingpolicies.go\na:0:0:444\nZ:Q1pTvRxSOWR2YhbJvm2l9aaYLwJj0=\nR:failovergroups.go\na:0:0:444\nZ:Q1KMEcBBLL75ozR1l1u7fjq4F9BIA=\nR:firewallrules.go\na:0:0:444\nZ:Q1cPYZiv5qV3seTz0CL/lHcCCDE6Q=\nR:geobackuppolicies.go\na:0:0:444\nZ:Q1KE4vCGJYFbKjVQ6amLR+nhX6Mks=\nR:jobagents.go\na:0:0:444\nZ:Q1MLWSsHxP+oKa5Td92t41BLpoOS8=\nR:jobcredentials.go\na:0:0:444\nZ:Q1KgtbrbitQYgNbMsAWQZzWKom4kg=\nR:jobexecutions.go\na:0:0:444\nZ:Q18Hie55XLr+uil2/JhD9/YL6U9e4=\nR:jobs.go\na:0:0:444\nZ:Q1McvN7oqS+2R/+oiPiZqq/YPTSls=\nR:jobstepexecutions.go\na:0:0:444\nZ:Q1h3kIE3crjNv8yhzpwX1cgGaX28o=\nR:jobsteps.go\na:0:0:444\nZ:Q1Oys2n7kgyrvGP0Sdx/lIv8y2V7I=\nR:jobtargetexecutions.go\na:0:0:444\nZ:Q11QpUeBitKAFpTqgoG0orHot8gI4=\nR:jobtargetgroups.go\na:0:0:444\nZ:Q16QjacGBkiZ0h7MKyzJ7nhFUD9RQ=\nR:jobversions.go\na:0:0:444\nZ:Q1jlmMWxtikv9lEjWIa7ijTcntnJY=\nR:managedbackupshorttermretentionpolicies.go\na:0:0:444\nZ:Q1kQgwIcqiOZuQFjsNQhGNgMGBFlk=\nR:manageddatabases.go\na:0:0:444\nZ:Q1ywqyOI3VH/9Sxk9TB+qIgvDceOU=\nR:managedinstanceadministrators.go\na:0:0:444\nZ:Q1qYTWcdYY9SNimHuk8t6AzJswl+o=\nR:managedinstances.go\na:0:0:444\nZ:Q1wzrRgKE/JIuM/IGE6VvJTrCKKWU=\nR:models.go\na:0:0:444\nZ:Q19PHQZBurPtTsrnltZLp2zdybRZ0=\nR:operations.go\na:0:0:444\nZ:Q1RcFVZw8JFLQnDPQMqo3bGX9WiL0=\nR:recoverabledatabases.go\na:0:0:444\nZ:Q1KOQXeT6Ksjd+UdwflY+A6vTMhyA=\nR:replicationlinks.go\na:0:0:444\nZ:Q1fctdctFEPy4X8y7vfqIqF6NitaM=\nR:restorabledroppeddatabases.go\na:0:0:444\nZ:Q1220+5fwFvJklwEqRihmrsFd2lak=\nR:restorabledroppedmanageddatabases.go\na:0:0:444\nZ:Q1Rqjg4ZQivkS/iFv5x2jeeUIFOkI=\nR:restorepoints.go\na:0:0:444\nZ:Q1B3N8B08i2zDuJ442ynBhf83+oS0=\nR:sensitivitylabels.go\na:0:0:444\nZ:Q15fF3KwvRfsNQX4kKet7Y98bU0A8=\nR:serverautomatictuning.go\na:0:0:444\nZ:Q16MOlxJnu2UkI27s1fuOJKcQ9JJ4=\nR:serverazureadadministrators.go\na:0:0:444\nZ:Q1glspy1LvZWiLHLUPOdtYHRCfryE=\nR:serverblobauditingpolicies.go\na:0:0:444\nZ:Q1GuOoJ+SMO+bFBEbxRKYAO3kUC2U=\nR:servercommunicationlinks.go\na:0:0:444\nZ:Q13ee8zmfmhED46TdCcjZ9bQ7ClAE=\nR:serverconnectionpolicies.go\na:0:0:444\nZ:Q1Ew6b0WUzTAMLEuBVjmksbV9Ppw4=\nR:serverdnsaliases.go\na:0:0:444\nZ:Q1L11H6HlZmqcbo5dUsUB8wV8Dzv0=\nR:serverkeys.go\na:0:0:444\nZ:Q1awnhO1JokVCuDh9rCf/smT/QlTs=\nR:servers.go\na:0:0:444\nZ:Q13uJaUd7ZiwWjtvw1M39uCQzS1IQ=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1kyYOmjP0Qb410eaT1s1ga0Un3Wg=\nR:serverusages.go\na:0:0:444\nZ:Q1IUxfsukOI14uEPfSdm/GEghA+Ig=\nR:serviceobjectives.go\na:0:0:444\nZ:Q12AHlz67vAm9mLKyw0RbX8ocnvAc=\nR:servicetieradvisors.go\na:0:0:444\nZ:Q1dU834fFZTclAXIh6iL4nUfoH7/U=\nR:subscriptionusages.go\na:0:0:444\nZ:Q167+5esUeNwFbFCTdYvW2+42pqMQ=\nR:syncagents.go\na:0:0:444\nZ:Q1RPDYc7TV3QSbADHL5X1CbvAzUrw=\nR:syncgroups.go\na:0:0:444\nZ:Q1Pc1rTIoXsn5mE1i1T0vINmKGe00=\nR:syncmembers.go\na:0:0:444\nZ:Q1zebizAnMM5+Uw6ZQ5pKvsvM04uE=\nR:transparentdataencryptionactivities.go\na:0:0:444\nZ:Q1oh3wODcUdGTOCD4pYnoJSHyX7TY=\nR:transparentdataencryptions.go\na:0:0:444\nZ:Q12Lyp9OvVIETyQRp0WIxpzIkP2Ug=\nR:version.go\na:0:0:444\nZ:Q1bvP5eUDIk8JNVX90TIWL0klZu0s=\nR:virtualclusters.go\na:0:0:444\nZ:Q1EEnq+uEy9vwGFs7fZSZ/dsfiq8Q=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q12tLCi9bvAq+9rW4kIpoHR867kEY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2017-03-01-preview/sql/sqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rLFzy808rVw7fKh4nTOYThAnBA4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2018-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2018-06-01-preview/sql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1sewyKscgrtQ1Dc4LdjV5Rp2/pCk=\nR:client.go\na:0:0:444\nZ:Q1u0k3dld23GzgQPbIAA/5e4Zu6hs=\nR:databases.go\na:0:0:444\nZ:Q12o1NjW0I62s939sgATEIJ443Dy0=\nR:databasesecurityalertpolicies.go\na:0:0:444\nZ:Q1X4ut8+kpd5jC1Aqe+jaUzSeCE4o=\nR:elasticpools.go\na:0:0:444\nZ:Q1trhheu/2glP4nboRy+e9RzKYmOY=\nR:enums.go\na:0:0:444\nZ:Q1TFCNUse5sXQTiUMW5hTMp3kNEII=\nR:instancepools.go\na:0:0:444\nZ:Q1nNQc2FmH7Ob4f4ee5ymFcs/MY8c=\nR:longtermretentionmanagedinstancebackups.go\na:0:0:444\nZ:Q1P7EvQVQ3GB8fidu9z5arwfibz0s=\nR:manageddatabaserestoredetails.go\na:0:0:444\nZ:Q1MOQolZxP2mD/rmI0AHvmSEKRqE0=\nR:manageddatabases.go\na:0:0:444\nZ:Q1+ZlXZtRvlQakArQCzMYf0CLnP8s=\nR:manageddatabasesensitivitylabels.go\na:0:0:444\nZ:Q1p0QLp9BTMDM4ZP4T6BfXzl0dJ4k=\nR:managedinstancelongtermretentionpolicies.go\na:0:0:444\nZ:Q1wugLY1Bum/79kTySjTuxM3mBOxA=\nR:managedinstanceoperations.go\na:0:0:444\nZ:Q1rCiA2GdNGlBtN4Dan83cF7646UI=\nR:managedinstances.go\na:0:0:444\nZ:Q1PzvrRpLdopmyic1FZ28mllBjHGk=\nR:managedinstancevulnerabilityassessments.go\na:0:0:444\nZ:Q1MdYAkZedqpYEmEMbKyCexdozJFY=\nR:models.go\na:0:0:444\nZ:Q1MZ7a5NqYPHgYpaHEPlEjSj9R6DU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1LIRsB4Cr6eCXLU7I4w1HH5weIMY=\nR:serverazureadadministrators.go\na:0:0:444\nZ:Q1g8NhmwlkHEBgWvs4UtKC0Z1RDFg=\nR:servervulnerabilityassessments.go\na:0:0:444\nZ:Q1+mMiaqQA9sCNN0XXdX5dgmUfEis=\nR:usages.go\na:0:0:444\nZ:Q16zPL34wuxQK1hqkcZ5qRBKzmUn8=\nR:version.go\na:0:0:444\nZ:Q1NR95RjdBhFk4tuvSZVtXP5E1jwc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/2018-06-01-preview/sql/sqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VihljNYqJ/boRVtQGZcK2SBXwnw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v4.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v4.0/sql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q11mXB4p8jsWOkzRnxHydn4e7ep8o=\nR:backuplongtermretentionpolicies.go\na:0:0:444\nZ:Q1jVWuqz1eyv9hytSvH00TnRhIssE=\nR:backupshorttermretentionpolicies.go\na:0:0:444\nZ:Q1qoAkUVMCj9pIe9F0N6qXKmnfpKc=\nR:capabilities.go\na:0:0:444\nZ:Q1LtbExhq1XiaKiWd5Dysk8ylLFjs=\nR:client.go\na:0:0:444\nZ:Q1ea9+hiVI15XcPXwGjcX6BZOQYMo=\nR:databaseautomatictuning.go\na:0:0:444\nZ:Q1diqrZqEDfolY+C0pO8mtu6MTmhU=\nR:databaseblobauditingpolicies.go\na:0:0:444\nZ:Q1tjhfu4L9BcHFHDdHuB9BJT/T+fs=\nR:databaseoperations.go\na:0:0:444\nZ:Q1U/gnnH9Z4027bZwknrHqhPr5hDc=\nR:databases.go\na:0:0:444\nZ:Q124imY+PTZb6GKiHd+BFDhIFQQpA=\nR:databasethreatdetectionpolicies.go\na:0:0:444\nZ:Q1WDmFD5RQZ139nHhJVu6qUO81hmY=\nR:databaseusages.go\na:0:0:444\nZ:Q1a06jKcPRaG1QoO5St+51ZDRjADQ=\nR:databasevulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1mj7IAs/bIbOyKw934cDkFtgxqsY=\nR:databasevulnerabilityassessments.go\na:0:0:444\nZ:Q1I/UZ+105yg0QDn6alEkQjwIZjD0=\nR:databasevulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1wT2wb03wp0YCGAA3VLR38XK646E=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1g4X6yWCdcepMP5sx8JMNDi/Fjms=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1A+0sUPi8igU7kYhCBugmuy4IrxY=\nR:elasticpoolactivities.go\na:0:0:444\nZ:Q1RCWD/ziRR79Xw5qIDfNeAhvKwkI=\nR:elasticpooldatabaseactivities.go\na:0:0:444\nZ:Q1mF/FP56dQJsIT+1S8x0AcBZoxZw=\nR:elasticpooloperations.go\na:0:0:444\nZ:Q1xO7gU3e+7Ll/0k/GsoJW95f9M0w=\nR:elasticpools.go\na:0:0:444\nZ:Q1Acvy0jD45yltjeGPrgHQtf+ZABs=\nR:encryptionprotectors.go\na:0:0:444\nZ:Q1IloKcyJoeZE4/a4bZs/KoZ2eYx0=\nR:enums.go\na:0:0:444\nZ:Q1do8EwtNtp1C/cjxEe516tp82OF8=\nR:extendeddatabaseblobauditingpolicies.go\na:0:0:444\nZ:Q1afrDnVYlHbgVmDuccPmgmp1E+w4=\nR:extendedserverblobauditingpolicies.go\na:0:0:444\nZ:Q1pTvRxSOWR2YhbJvm2l9aaYLwJj0=\nR:failovergroups.go\na:0:0:444\nZ:Q1KMEcBBLL75ozR1l1u7fjq4F9BIA=\nR:firewallrules.go\na:0:0:444\nZ:Q1cPYZiv5qV3seTz0CL/lHcCCDE6Q=\nR:geobackuppolicies.go\na:0:0:444\nZ:Q1KE4vCGJYFbKjVQ6amLR+nhX6Mks=\nR:importexport.go\na:0:0:444\nZ:Q16ctw+ut5kHLJCFbwXetI7uOyLiE=\nR:instancefailovergroups.go\na:0:0:444\nZ:Q1TxjtgmLOu3Yu79/TuqyKSctLhNk=\nR:instancepools.go\na:0:0:444\nZ:Q1nNQc2FmH7Ob4f4ee5ymFcs/MY8c=\nR:jobagents.go\na:0:0:444\nZ:Q1MLWSsHxP+oKa5Td92t41BLpoOS8=\nR:jobcredentials.go\na:0:0:444\nZ:Q1KgtbrbitQYgNbMsAWQZzWKom4kg=\nR:jobexecutions.go\na:0:0:444\nZ:Q18Hie55XLr+uil2/JhD9/YL6U9e4=\nR:jobs.go\na:0:0:444\nZ:Q1McvN7oqS+2R/+oiPiZqq/YPTSls=\nR:jobstepexecutions.go\na:0:0:444\nZ:Q1h3kIE3crjNv8yhzpwX1cgGaX28o=\nR:jobsteps.go\na:0:0:444\nZ:Q1Oys2n7kgyrvGP0Sdx/lIv8y2V7I=\nR:jobtargetexecutions.go\na:0:0:444\nZ:Q11QpUeBitKAFpTqgoG0orHot8gI4=\nR:jobtargetgroups.go\na:0:0:444\nZ:Q16QjacGBkiZ0h7MKyzJ7nhFUD9RQ=\nR:jobversions.go\na:0:0:444\nZ:Q1jlmMWxtikv9lEjWIa7ijTcntnJY=\nR:longtermretentionbackups.go\na:0:0:444\nZ:Q1rXgt6u/MsEeneL79qZNzAv2tB/o=\nR:longtermretentionmanagedinstancebackups.go\na:0:0:444\nZ:Q1OhCvSfLqt5aNKLa65zTMr6OxGa4=\nR:managedbackupshorttermretentionpolicies.go\na:0:0:444\nZ:Q1kQgwIcqiOZuQFjsNQhGNgMGBFlk=\nR:manageddatabaserestoredetails.go\na:0:0:444\nZ:Q1mRTVnKuUyP2buGCtVzZ0dgtAXkM=\nR:manageddatabases.go\na:0:0:444\nZ:Q1/zqVSbojr0ijzJryjfrY6mEZxFk=\nR:manageddatabasesecurityalertpolicies.go\na:0:0:444\nZ:Q1odQ4Le8ST7iitKFTBAuWlTpg6rg=\nR:manageddatabasesensitivitylabels.go\na:0:0:444\nZ:Q1p0QLp9BTMDM4ZP4T6BfXzl0dJ4k=\nR:manageddatabasevulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1lJajOC/szZdCHhzzmXc4npllQHc=\nR:manageddatabasevulnerabilityassessments.go\na:0:0:444\nZ:Q13skutyKJaYEaUm+1ioD7mSss4eQ=\nR:manageddatabasevulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1wB63swaQUJ8Lpx5NPEHXwxBxP60=\nR:managedinstanceadministrators.go\na:0:0:444\nZ:Q1qYTWcdYY9SNimHuk8t6AzJswl+o=\nR:managedinstanceazureadonlyauthentications.go\na:0:0:444\nZ:Q15C1QWRcyQdjbqj+LsGnxdCD99Vo=\nR:managedinstanceencryptionprotectors.go\na:0:0:444\nZ:Q1Vibpn1a/wG6bSaGdfoq+b3kWZTk=\nR:managedinstancekeys.go\na:0:0:444\nZ:Q1ZqDGtZB1MJmu4qxxE4I8cyEQJvs=\nR:managedinstancelongtermretentionpolicies.go\na:0:0:444\nZ:Q1wugLY1Bum/79kTySjTuxM3mBOxA=\nR:managedinstanceoperations.go\na:0:0:444\nZ:Q1RZxR623aO1qyGJJG2rludLw0Pms=\nR:managedinstances.go\na:0:0:444\nZ:Q1yNKAA/69IX2pV70rcQmsB2VZOl0=\nR:managedinstancetdecertificates.go\na:0:0:444\nZ:Q1hIb+LUv3Lb0DuBtUl7yUSdwOWWQ=\nR:managedinstancevulnerabilityassessments.go\na:0:0:444\nZ:Q1MdYAkZedqpYEmEMbKyCexdozJFY=\nR:managedrestorabledroppeddatabasebackupshorttermretentionpolicies.go\na:0:0:444\nZ:Q12oa3PqZL8gIyzMJG5yPy/6dxC2E=\nR:managedserversecurityalertpolicies.go\na:0:0:444\nZ:Q1o68tDtCXxuK/RY7A9Yx60ILVHmQ=\nR:models.go\na:0:0:444\nZ:Q1/J/9lPycQCDKmG5pvdPh9+JqjjY=\nR:operations.go\na:0:0:444\nZ:Q1RcFVZw8JFLQnDPQMqo3bGX9WiL0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1iNv434TO/lP48Y4IOFrG8DOpNfs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1RUwOVuGJyyPLHseSa1BsX3lNZaU=\nR:recommendedelasticpools.go\na:0:0:444\nZ:Q1Zb9umQBjt4QEDCg2mFpIJSPgZgY=\nR:recoverabledatabases.go\na:0:0:444\nZ:Q1KOQXeT6Ksjd+UdwflY+A6vTMhyA=\nR:recoverablemanageddatabases.go\na:0:0:444\nZ:Q1Rgy0ZanxJMaQ7LOMk/XoD49GE2A=\nR:replicationlinks.go\na:0:0:444\nZ:Q1fctdctFEPy4X8y7vfqIqF6NitaM=\nR:restorabledroppeddatabases.go\na:0:0:444\nZ:Q1220+5fwFvJklwEqRihmrsFd2lak=\nR:restorabledroppedmanageddatabases.go\na:0:0:444\nZ:Q1Rqjg4ZQivkS/iFv5x2jeeUIFOkI=\nR:restorepoints.go\na:0:0:444\nZ:Q1B3N8B08i2zDuJ442ynBhf83+oS0=\nR:sensitivitylabels.go\na:0:0:444\nZ:Q15fF3KwvRfsNQX4kKet7Y98bU0A8=\nR:serverautomatictuning.go\na:0:0:444\nZ:Q16MOlxJnu2UkI27s1fuOJKcQ9JJ4=\nR:serverazureadadministrators.go\na:0:0:444\nZ:Q1Ltk+8M25RGgoszwv2/oFG34Izig=\nR:serverazureadonlyauthentications.go\na:0:0:444\nZ:Q1TNYNCVMJBzuswol4Wuj/0bZZQew=\nR:serverblobauditingpolicies.go\na:0:0:444\nZ:Q1GuOoJ+SMO+bFBEbxRKYAO3kUC2U=\nR:servercommunicationlinks.go\na:0:0:444\nZ:Q13ee8zmfmhED46TdCcjZ9bQ7ClAE=\nR:serverconnectionpolicies.go\na:0:0:444\nZ:Q1Ew6b0WUzTAMLEuBVjmksbV9Ppw4=\nR:serverdevopsauditsettings.go\na:0:0:444\nZ:Q1BpX/Byiv1JPzvm6y2p2qYQss794=\nR:serverdnsaliases.go\na:0:0:444\nZ:Q1L11H6HlZmqcbo5dUsUB8wV8Dzv0=\nR:serverkeys.go\na:0:0:444\nZ:Q1awnhO1JokVCuDh9rCf/smT/QlTs=\nR:servers.go\na:0:0:444\nZ:Q1MgkrKmsV3e2gSkvOGYmNzfqPabU=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1kyYOmjP0Qb410eaT1s1ga0Un3Wg=\nR:servertrustgroups.go\na:0:0:444\nZ:Q1k7EOGfYUhR04Mz6czm0AeEzercU=\nR:serverusages.go\na:0:0:444\nZ:Q1IUxfsukOI14uEPfSdm/GEghA+Ig=\nR:servervulnerabilityassessments.go\na:0:0:444\nZ:Q1+mMiaqQA9sCNN0XXdX5dgmUfEis=\nR:serviceobjectives.go\na:0:0:444\nZ:Q12AHlz67vAm9mLKyw0RbX8ocnvAc=\nR:servicetieradvisors.go\na:0:0:444\nZ:Q1dU834fFZTclAXIh6iL4nUfoH7/U=\nR:subscriptionusages.go\na:0:0:444\nZ:Q167+5esUeNwFbFCTdYvW2+42pqMQ=\nR:syncagents.go\na:0:0:444\nZ:Q1RPDYc7TV3QSbADHL5X1CbvAzUrw=\nR:syncgroups.go\na:0:0:444\nZ:Q1a72iViFJMUx7LKHgR+DzDOOjVKQ=\nR:syncmembers.go\na:0:0:444\nZ:Q1ZgAwtNnA3xj4gcmEPzTCDbwAowI=\nR:tdecertificates.go\na:0:0:444\nZ:Q1f5AbM+Qi4xDrmk5LOpK0t8lX6XM=\nR:transparentdataencryptionactivities.go\na:0:0:444\nZ:Q1oh3wODcUdGTOCD4pYnoJSHyX7TY=\nR:transparentdataencryptions.go\na:0:0:444\nZ:Q12Lyp9OvVIETyQRp0WIxpzIkP2Ug=\nR:usages.go\na:0:0:444\nZ:Q16zPL34wuxQK1hqkcZ5qRBKzmUn8=\nR:version.go\na:0:0:444\nZ:Q1tWYh4Ks9ksqZMPNkY2T9vVH1zw4=\nR:virtualclusters.go\na:0:0:444\nZ:Q1EEnq+uEy9vwGFs7fZSZ/dsfiq8Q=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q12tLCi9bvAq+9rW4kIpoHR867kEY=\nR:workloadclassifiers.go\na:0:0:444\nZ:Q1zRJZlbYY+b9gjYgwT2kBtQi0gY8=\nR:workloadgroups.go\na:0:0:444\nZ:Q1hsKdNhTmsyJQHczSM2TFjAW8fZw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v4.0/sql/sqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/yOUYkJ5BYyD4icmW8hydyeSRf4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v5.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v5.0/sql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Sap9D6P2iPEe0gPiZ580njMXAqM=\nR:agent.go\na:0:0:444\nZ:Q1rcaO3z8zejunHFlwcW2aLooZfL8=\nR:backupshorttermretentionpolicies.go\na:0:0:444\nZ:Q19pSUlyK20wcOXqe/DNMRGlsWbd4=\nR:capabilities.go\na:0:0:444\nZ:Q11Xm2ew2mbsJiaUZiEv7TitN6cYg=\nR:client.go\na:0:0:444\nZ:Q1ea9+hiVI15XcPXwGjcX6BZOQYMo=\nR:databaseadvisors.go\na:0:0:444\nZ:Q1gFZdFMwmNRbUYV7ovvavjtTroZw=\nR:databaseautomatictuning.go\na:0:0:444\nZ:Q1kd8K/uX94NmIpFz8zoQtpyRskFI=\nR:databaseblobauditingpolicies.go\na:0:0:444\nZ:Q1PdULPHG/IXAe5x8MxOTZ8l7BZB8=\nR:databasecolumns.go\na:0:0:444\nZ:Q1dmZhCIkcLCkRl/zL6JzKXuAbpLc=\nR:databaseextensions.go\na:0:0:444\nZ:Q12dtEol/VhS9yHrzQfz89GhqxIgg=\nR:databaseoperations.go\na:0:0:444\nZ:Q1nM8mSjtiOyUCVXRRa2OUJmYUEuI=\nR:databaserecommendedactions.go\na:0:0:444\nZ:Q1Je2f0dXfAFSq2N3q/oNgoSypChk=\nR:databases.go\na:0:0:444\nZ:Q1V2kqe2GzU0iHQ5BBjkYDGo+48h4=\nR:databaseschemas.go\na:0:0:444\nZ:Q1lPDctfKSlmWLGChNfNZCnxUJEuE=\nR:databasesecurityalertpolicies.go\na:0:0:444\nZ:Q1nT20nr60EzHH0T8MxkCjhqOvOBc=\nR:databasetables.go\na:0:0:444\nZ:Q1b+OUNrjI6vSCV1MjOQFA0dczYR8=\nR:databaseusages.go\na:0:0:444\nZ:Q1ZjR3UVS/04nTASYYvH6JjohiTn0=\nR:databasevulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1LqbU3LvQ2th8A149ba3/sYleZT4=\nR:databasevulnerabilityassessments.go\na:0:0:444\nZ:Q1WrhRmlc9+26uE6cYT1Nt+MuyFEA=\nR:databasevulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1+4G4LNAM1lBZrhBmDlA276oJtMg=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1g4X6yWCdcepMP5sx8JMNDi/Fjms=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1A+0sUPi8igU7kYhCBugmuy4IrxY=\nR:datawarehouseuseractivities.go\na:0:0:444\nZ:Q1azfdFHpdIClz2gxQ6e1kttxrkr0=\nR:deletedservers.go\na:0:0:444\nZ:Q1gIWWBcRZIlwB36z/+YKESZ8DOu4=\nR:elasticpoolactivities.go\na:0:0:444\nZ:Q1RCWD/ziRR79Xw5qIDfNeAhvKwkI=\nR:elasticpooldatabaseactivities.go\na:0:0:444\nZ:Q1mF/FP56dQJsIT+1S8x0AcBZoxZw=\nR:elasticpooloperations.go\na:0:0:444\nZ:Q1UAT4uYthsdM9aolIRreugXEdo+E=\nR:elasticpools.go\na:0:0:444\nZ:Q1mjjvY41PNPGOVonpXxibopTMO7k=\nR:encryptionprotectors.go\na:0:0:444\nZ:Q1k4fzP2XcYSuYN04u21Y87EKwTsE=\nR:enums.go\na:0:0:444\nZ:Q1Wwl95+2eItxKy4sc+Q4i0F4NC28=\nR:extendeddatabaseblobauditingpolicies.go\na:0:0:444\nZ:Q1Buz2R7dzyIwE8KA9GUMo5inihc8=\nR:extendedserverblobauditingpolicies.go\na:0:0:444\nZ:Q12T3S68q8iDkoZ2aL+vlKryrNiqY=\nR:failovergroups.go\na:0:0:444\nZ:Q1fgHtiwsrOL5sCHFpbdIj80Me5lg=\nR:firewallrules.go\na:0:0:444\nZ:Q1Q5Bd17GXDPzvxQ16Sjv1cRveXKM=\nR:geobackuppolicies.go\na:0:0:444\nZ:Q1KE4vCGJYFbKjVQ6amLR+nhX6Mks=\nR:instancefailovergroups.go\na:0:0:444\nZ:Q1iAKtV8gp3cg9uvuU5/YIWBtR9hg=\nR:instancepools.go\na:0:0:444\nZ:Q1rqkuC5IdD7ErpwywRCR98o9452o=\nR:jobagents.go\na:0:0:444\nZ:Q14/+ECVZ4bBSA6sDEF1c6s0pj0/o=\nR:jobcredentials.go\na:0:0:444\nZ:Q134jbQi0GF058b2iGHNmosweWhG8=\nR:jobexecutions.go\na:0:0:444\nZ:Q1Lmgrlgj9PNdMv2MDFHOR9RbiuO4=\nR:jobs.go\na:0:0:444\nZ:Q1EFaMcJznEx7Qf6sgID9mPtxRDSo=\nR:jobstepexecutions.go\na:0:0:444\nZ:Q1G/yUQ8HQxjVvZAxtYgzfJDscggU=\nR:jobsteps.go\na:0:0:444\nZ:Q1aX71BzgumH0D1J6X20C/YRDVTlw=\nR:jobtargetexecutions.go\na:0:0:444\nZ:Q1PDmCKaOmHHl3ZJYX9ReLVZyv/Kk=\nR:jobtargetgroups.go\na:0:0:444\nZ:Q13ndMXf3sSRI7NMJtE0KmBlJneK4=\nR:jobversions.go\na:0:0:444\nZ:Q1Gd7EJpZ9YcjfTZdf7EYb1l4RwII=\nR:ledgerdigestuploads.go\na:0:0:444\nZ:Q1ku68ZyiDOBo9YT1fxuPldNBZqPM=\nR:longtermretentionbackups.go\na:0:0:444\nZ:Q1Eo0WjBXAUXKEANO9EE0xc7ujsWU=\nR:longtermretentionmanagedinstancebackups.go\na:0:0:444\nZ:Q1MtMr2UxbGBXE17FUMXMcx23n8eA=\nR:longtermretentionpolicies.go\na:0:0:444\nZ:Q1vubhmGXLrsXrhVYt8CHHacQIL80=\nR:maintenancewindowoptions.go\na:0:0:444\nZ:Q1cqhGEpBz6dnjTT8Ja2nnryBwL5A=\nR:maintenancewindows.go\na:0:0:444\nZ:Q1t/sxoC7tCogOJMnhsbaxjHgsW0U=\nR:managedbackupshorttermretentionpolicies.go\na:0:0:444\nZ:Q1KIuA37fpRulTddOBmVArE9gbdBs=\nR:manageddatabasecolumns.go\na:0:0:444\nZ:Q1bEbi+N5l6xduzKbKJhEOJy9/CfY=\nR:manageddatabasequeries.go\na:0:0:444\nZ:Q1pxXTaqFbwyycQ8/yShcuEM1m5EM=\nR:manageddatabaserecommendedsensitivitylabels.go\na:0:0:444\nZ:Q1a69Mc4GA+EFfMrBJYUHE0vd66hQ=\nR:manageddatabaserestoredetails.go\na:0:0:444\nZ:Q1xZ9454GqoJBLkLYgfREikDr2ADI=\nR:manageddatabases.go\na:0:0:444\nZ:Q1HEnAE12t7sVADZt8yTskB4b3Yho=\nR:manageddatabaseschemas.go\na:0:0:444\nZ:Q1mS7+SEHJday7hxt/UBvd4WIz1/g=\nR:manageddatabasesecurityalertpolicies.go\na:0:0:444\nZ:Q1pT7IRhRkdb3cBityxMcIdQxyJOo=\nR:manageddatabasesecurityevents.go\na:0:0:444\nZ:Q1ChOCUv1tdS4jnRS3nbrGE86odLs=\nR:manageddatabasesensitivitylabels.go\na:0:0:444\nZ:Q1k+7flPC1VR6+jGSECBRbqiNWuBc=\nR:manageddatabasetables.go\na:0:0:444\nZ:Q1MyQERhAYQkl45ujaAN83Y+lq4Kw=\nR:manageddatabasetransparentdataencryption.go\na:0:0:444\nZ:Q1iIcIdVxP5yD1UHMfdwFKyg4mUN4=\nR:manageddatabasevulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1l82/vgsjnyES5TbSjWl6RL5EJVg=\nR:manageddatabasevulnerabilityassessments.go\na:0:0:444\nZ:Q1bpYZ1N0ZshYRyB7UYusWMPoiZhE=\nR:manageddatabasevulnerabilityassessmentscans.go\na:0:0:444\nZ:Q13I7aixHa7QjCK1j+LLXIS9VRefA=\nR:managedinstanceadministrators.go\na:0:0:444\nZ:Q1x8GCMFOc2XqKBRCUCeibgw/D+3E=\nR:managedinstanceazureadonlyauthentications.go\na:0:0:444\nZ:Q1lTMvvwJjnX91v8yHiHyLtHsl8uo=\nR:managedinstanceencryptionprotectors.go\na:0:0:444\nZ:Q1WwSbkFG/B5xnwIvRiTfdSJnGHMA=\nR:managedinstancekeys.go\na:0:0:444\nZ:Q1grhq+kgEGBg451p0bOflemIjxs8=\nR:managedinstancelongtermretentionpolicies.go\na:0:0:444\nZ:Q1TDJo0/3e/soFLu155I5lCFCJ0tw=\nR:managedinstanceoperations.go\na:0:0:444\nZ:Q1QEPXt1iLvpxdNZIMneWpwOeunMM=\nR:managedinstanceprivateendpointconnections.go\na:0:0:444\nZ:Q1IQ3Kk875JvrdZjTEBWn9LEzHZ/M=\nR:managedinstanceprivatelinkresources.go\na:0:0:444\nZ:Q1D2YSpNGYTUsXxKTcHg1N2p6U1yk=\nR:managedinstances.go\na:0:0:444\nZ:Q1qe59kX68nSoabkop1AentvBpO+A=\nR:managedinstancetdecertificates.go\na:0:0:444\nZ:Q1MZPS27V8sJNiIyaV3joKogONb9U=\nR:managedinstancevulnerabilityassessments.go\na:0:0:444\nZ:Q1pbVelvJi6VAIYMRN4LTBvO7A8ic=\nR:managedrestorabledroppeddatabasebackupshorttermretentionpolicies.go\na:0:0:444\nZ:Q1g7jf9FQli5rfCwteGCL+ozTMXrY=\nR:managedserversecurityalertpolicies.go\na:0:0:444\nZ:Q1QRWwQVHLHuRwWwZcANKsYvrh6wc=\nR:models.go\na:0:0:444\nZ:Q1tK4dbzSOarP60fCGesthwc15GFw=\nR:operations.go\na:0:0:444\nZ:Q1zhGxh9t6zzNIilkkH8ak5DFnuTc=\nR:operationshealth.go\na:0:0:444\nZ:Q1KeHuW4pkY+dy3phyB/k/0dFaBQs=\nR:outboundfirewallrules.go\na:0:0:444\nZ:Q1m2EdcX1VZkGb/Zpgb6K94dl/Fs8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q13SSariT6HHeiHFEfacSb9kIi5tY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ya84ARoLYg24VnHDQJTgvvpzPAI=\nR:recommendedsensitivitylabels.go\na:0:0:444\nZ:Q1P4rQRHltd9Ij0j0eVS9clVq5ASE=\nR:recoverabledatabases.go\na:0:0:444\nZ:Q1KOQXeT6Ksjd+UdwflY+A6vTMhyA=\nR:recoverablemanageddatabases.go\na:0:0:444\nZ:Q10dVABDyUxeRk/k3JEpjiR0N9hAc=\nR:replicationlinks.go\na:0:0:444\nZ:Q1iWPPwYnsc9onF/fuuXp8xdQrsCM=\nR:restorabledroppeddatabases.go\na:0:0:444\nZ:Q1Yhz1iFmrAbke4Gs5Ki1oIQE3Upg=\nR:restorabledroppedmanageddatabases.go\na:0:0:444\nZ:Q1M7Kz0wpEStCsEMdvVw10GuUDqAA=\nR:restorepoints.go\na:0:0:444\nZ:Q1UL1W3KtysA9pq+TrUp9etz2wcV8=\nR:sensitivitylabels.go\na:0:0:444\nZ:Q1ACgKARdKa7qQ56jcMTgSrQs1gUU=\nR:serveradvisors.go\na:0:0:444\nZ:Q1Dx728QzD/b+nUH0U9MZw4jgSXcM=\nR:serverautomatictuning.go\na:0:0:444\nZ:Q152bqUGANedMDjw/qdqseeGpe6Cg=\nR:serverazureadadministrators.go\na:0:0:444\nZ:Q1Ld3rRav5JBXNY+Ckaxo1/xTCVr4=\nR:serverazureadonlyauthentications.go\na:0:0:444\nZ:Q12MtjxcD/IRAqz4KdrXAmTfPxoF4=\nR:serverblobauditingpolicies.go\na:0:0:444\nZ:Q1JTyjNgsEF7KqvRNimpw1jsi41Zo=\nR:servercommunicationlinks.go\na:0:0:444\nZ:Q13ee8zmfmhED46TdCcjZ9bQ7ClAE=\nR:serverconnectionpolicies.go\na:0:0:444\nZ:Q1Ew6b0WUzTAMLEuBVjmksbV9Ppw4=\nR:serverdevopsauditsettings.go\na:0:0:444\nZ:Q1//lP4gEcwdf0PmEC0uCc8xQsGbE=\nR:serverdnsaliases.go\na:0:0:444\nZ:Q1mOm4l21DhjqEyCJQq2UwYFsHtIs=\nR:serverkeys.go\na:0:0:444\nZ:Q1f+J5UxgXuiPKbYJGMW7+sta0DKY=\nR:serveroperations.go\na:0:0:444\nZ:Q113xDOr86tXcjJpQUtFWoe2K3DeU=\nR:servers.go\na:0:0:444\nZ:Q1Z0ng4BraLJvheqDxMXRMPEkSU40=\nR:serversecurityalertpolicies.go\na:0:0:444\nZ:Q1zNB2Tu7y7MHZbTMOYxyCT7TqVY4=\nR:servertrustgroups.go\na:0:0:444\nZ:Q1fxSDoIRf46GTXx3C+MkRQ5q+GD8=\nR:serverusages.go\na:0:0:444\nZ:Q1IUxfsukOI14uEPfSdm/GEghA+Ig=\nR:servervulnerabilityassessments.go\na:0:0:444\nZ:Q1quGFzWIBNhea+VViFb88VtvItEY=\nR:serviceobjectives.go\na:0:0:444\nZ:Q12AHlz67vAm9mLKyw0RbX8ocnvAc=\nR:subscriptionusages.go\na:0:0:444\nZ:Q1cXpQsTIhwBLDnReFyOxY2SDTRlw=\nR:syncagents.go\na:0:0:444\nZ:Q1N9QexVxFze2MS+xxWknCEo8z7kY=\nR:syncgroups.go\na:0:0:444\nZ:Q1OIJXsgU0PSMkZpV8AVOk3NJLEI4=\nR:syncmembers.go\na:0:0:444\nZ:Q1JFCh+wvorTmDkt0QE5dqpmvOVw4=\nR:tdecertificates.go\na:0:0:444\nZ:Q12AEPegB4o4J38VMYEmHOJ+eApNY=\nR:timezones.go\na:0:0:444\nZ:Q1tyoU54XDCHxlwtdEICR/trKojRg=\nR:transparentdataencryptionactivities.go\na:0:0:444\nZ:Q1oh3wODcUdGTOCD4pYnoJSHyX7TY=\nR:transparentdataencryptions.go\na:0:0:444\nZ:Q12Lyp9OvVIETyQRp0WIxpzIkP2Ug=\nR:usages.go\na:0:0:444\nZ:Q1FK6Px80VLb14cP7F/yRLnMPjaLg=\nR:version.go\na:0:0:444\nZ:Q1TtBUBvAeyje7hR0VKG1olWS+7Z0=\nR:virtualclusters.go\na:0:0:444\nZ:Q1VZhPN9i6mNL7hqoj3OpzFBSX0/8=\nR:virtualnetworkrules.go\na:0:0:444\nZ:Q14DCQl0xeT/2H271nz39iff1XhfU=\nR:workloadclassifiers.go\na:0:0:444\nZ:Q1k2ofTYTxaan/vT183368OY6zSws=\nR:workloadgroups.go\na:0:0:444\nZ:Q1JsHHN9bA1zp/3d7TWdu4TipBQrc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sql/mgmt/v5.0/sql/sqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12VvrTZM9G2OBTeFJx4jO8aLJfjg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2017-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2017-03-01-preview/sqlvirtualmachine\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OqDoGrc+5FtkYJuvrPvUyBoKVHI=\nR:availabilitygrouplisteners.go\na:0:0:444\nZ:Q17ggi01vsc1DD5Ru6/Qw9q5FE4Wg=\nR:client.go\na:0:0:444\nZ:Q1znapRhRi7R8Lz+FNrYZo9YqdFz0=\nR:enums.go\na:0:0:444\nZ:Q1e98CPbMqM6ax421cixBfo2S75fI=\nR:groups.go\na:0:0:444\nZ:Q1SulDKIRsYhvj4TsfUGIFgVmonKM=\nR:models.go\na:0:0:444\nZ:Q1JETIIS6NvZKpYQRV/J8WE/VzEkQ=\nR:operations.go\na:0:0:444\nZ:Q1KS/b1O2i96ICaSeidRPATQldsM8=\nR:sqlvirtualmachines.go\na:0:0:444\nZ:Q1/KXPcySRLxKVrfc427oHzi9K4OI=\nR:version.go\na:0:0:444\nZ:Q1m0eApcePjMRBMXgucE18RPixad4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2017-03-01-preview/sqlvirtualmachine/sqlvirtualmachineapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1utPX10HL8do9uq0DpveRZ+imMgs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2021-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2021-11-01-preview/sqlvirtualmachine\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1iBo8UJU/tFFaeF8lgOQng8juAlk=\nR:availabilitygrouplisteners.go\na:0:0:444\nZ:Q1dRwaAoEOitWeHvQK3fYFVl8Y04w=\nR:client.go\na:0:0:444\nZ:Q1djnN2mVKKkJzrFdIC6tRoIX5w1M=\nR:enums.go\na:0:0:444\nZ:Q1P/Vdl/Eh8OAE3v0XhGY8fED88Qc=\nR:groups.go\na:0:0:444\nZ:Q1tb67N1yx3EEVOAcCSBM0e0O90yg=\nR:models.go\na:0:0:444\nZ:Q1kV+S2KUtFLw1O7PsG/d/ggSHnHE=\nR:operations.go\na:0:0:444\nZ:Q12SAbSUEqybuaOEoTT9F0oNO2Oes=\nR:sqlvirtualmachines.go\na:0:0:444\nZ:Q1M+Qd2DDrRVgqysLrPkZlPyJATQI=\nR:version.go\na:0:0:444\nZ:Q1vdEJw6GuXWsycbXs1VgxjvGW+cM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/sqlvirtualmachine/mgmt/2021-11-01-preview/sqlvirtualmachine/sqlvirtualmachineapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EvtDOuMI55UJrB2+/fl2dYw/QNc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/datalake/2018-06-17\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/datalake/2018-06-17/storagedatalake\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1Mpax/7YCuIg6aPg0li7+PchscmE=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1skv0LAu6SAV51Z/NN6OCPXdMQq4=\nR:enums.go\na:0:0:444\nZ:Q10sAw+Ei+xrJa0bdZfRw4iWKO7oU=\nR:filesystem.go\na:0:0:444\nZ:Q1pnvl52d1+rLeuAaxgTYwd3eoVVE=\nR:models.go\na:0:0:444\nZ:Q1LGQ/I2SUkiHA7hvrN3a0GtK/V8o=\nR:path.go\na:0:0:444\nZ:Q1jrxhrTQEBamMjyPOJDzS/kU4k/s=\nR:version.go\na:0:0:444\nZ:Q1xltdDz/lS+altNXb4uBIGTj64N8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/datalake/2018-06-17/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z1/vgVXG61wz3wP5m5JJA1V1S4c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2015-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2015-05-01-preview/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+Iek3tb1YXj2H3Irss1Gzah0hdM=\nR:accounts.go\na:0:0:444\nZ:Q12oFXqzcZVS3bpthpAi7j92F3AtY=\nR:client.go\na:0:0:444\nZ:Q1dDYN47+du0RgAcsgA6eYVrUKRHY=\nR:enums.go\na:0:0:444\nZ:Q1BGIHb7oQ4FbFpSaVrbZTmc2zyTM=\nR:models.go\na:0:0:444\nZ:Q1NI4brx8dmPe5EHAcbzq2Gy8en7k=\nR:usage.go\na:0:0:444\nZ:Q1WfZa7tU82/xJ1ZZQZksu/y1g2Yk=\nR:version.go\na:0:0:444\nZ:Q1VC0whOlrJ8Lwt/Db+iBchH8Ns/M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2015-05-01-preview/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18l/3DmdT39C+61x2K/Jk3lJPZ+I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-03-01-preview/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1r6u0QyVXbQTv0TxXK6m9BE377as=\nR:accounts.go\na:0:0:444\nZ:Q1kz112RXsKP93rpWZDfwf4P6lry0=\nR:blobcontainers.go\na:0:0:444\nZ:Q1KFkNx/ktlnDLaN2TXgRFBkybxRw=\nR:client.go\na:0:0:444\nZ:Q1LdhmI9MnlhyK5cNdSrSaV553Nyc=\nR:enums.go\na:0:0:444\nZ:Q1q3Zzjugm9sjUiKPR/A1M6uX+iHQ=\nR:models.go\na:0:0:444\nZ:Q1/MLpSrRDr6KWnxp9guJUJZsfELk=\nR:operations.go\na:0:0:444\nZ:Q1ymf17j603BViO6iPe1v3QxECmQM=\nR:skus.go\na:0:0:444\nZ:Q1OAwTajDK+/v/oteUkRSIjdXGJOw=\nR:usages.go\na:0:0:444\nZ:Q1isoeH56OkoQNGNfBa7U8sHZc1sw=\nR:version.go\na:0:0:444\nZ:Q1usjVxDigGhMArnXEg43P1oIY2RU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-03-01-preview/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1GKhyhnwPSQ/+niOtVTBGGN7I7wo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-07-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-07-01-preview/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1l4fYpYFa+sBsJAdY7nTghZR5Vew=\nR:accounts.go\na:0:0:444\nZ:Q1NTy3xv0CjyiGoZyjZOM2SWDdZNI=\nR:blobcontainers.go\na:0:0:444\nZ:Q1DX88pIUsVTks5q902xMLbMNcbAQ=\nR:blobservices.go\na:0:0:444\nZ:Q1MlqQiDhZPKBxLY+foaPDlGwAELs=\nR:client.go\na:0:0:444\nZ:Q12elnUdYd2nknZwCNoTkKngJIgRs=\nR:enums.go\na:0:0:444\nZ:Q1WkCu7yQbZ9cNcwwo6Ois/Xjrh34=\nR:managementpolicies.go\na:0:0:444\nZ:Q1T7J+GiAjTWdCCvMClDUAqFtB3VU=\nR:models.go\na:0:0:444\nZ:Q1JDhDu6kIHVP8QM8d0VTCErdL09Q=\nR:operations.go\na:0:0:444\nZ:Q1o6vfZy0FJyh68NlyfCUKjeLX4+s=\nR:skus.go\na:0:0:444\nZ:Q1hD7/pG/xZpYQyyX+VEOq6eV7TlA=\nR:usages.go\na:0:0:444\nZ:Q1XSlhSv6jN+Jbs6p0pmDMa8ucrro=\nR:version.go\na:0:0:444\nZ:Q1C7pQGmfCDiOqXpeB0Q6uEOiIXs4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2018-07-01-preview/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Mr/yoAEDskoi/YI0XNARwv93rh8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2020-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2020-08-01-preview/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GAJDws1+bzULu5sxjccZJlSYSY0=\nR:accounts.go\na:0:0:444\nZ:Q1yieQ1kAc04vKy8QaGyIjtF2cqfI=\nR:blobcontainers.go\na:0:0:444\nZ:Q16uSVdQwTxXyT/rD7vLItoDbedl8=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q1smeRVwodZ123DeRPdCADKVjarDA=\nR:blobservices.go\na:0:0:444\nZ:Q1194PkOIDStX7sG8kh20VKt/xZwc=\nR:client.go\na:0:0:444\nZ:Q15BDDfg1HH+5edIqhotER24r7/ak=\nR:deletedaccounts.go\na:0:0:444\nZ:Q17fsySf6MOGoQ3WgwMyNEPO+EhEA=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1GuL5EbwANpu/7RgTG0zq3Fjb6OI=\nR:enums.go\na:0:0:444\nZ:Q1UGLIaTnYWes0GfC1UM5sbH1phEM=\nR:fileservices.go\na:0:0:444\nZ:Q1Z9hwu51EYH+jNgUvYXFn8u+2ABs=\nR:fileshares.go\na:0:0:444\nZ:Q11bqTouSRmDCfQBDNypxf8Gw761s=\nR:managementpolicies.go\na:0:0:444\nZ:Q11Y2Yzq22BsB2bm4nwjPufH/utf4=\nR:models.go\na:0:0:444\nZ:Q10zrkRd1Me4yL8flh1dcpTQgw7ec=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q1pa6gOtyHLaA4qkSjR8t4ERmkPso=\nR:operations.go\na:0:0:444\nZ:Q1yMC5gnWW7CMNw/7NjvMVLYP3z+E=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1keZneLQ4GVfTT/LAbqUrO96NYD0=\nR:privatelinkresources.go\na:0:0:444\nZ:Q17NqEHdR0kOJgC6QYlPMistAAFwU=\nR:queue.go\na:0:0:444\nZ:Q1Xawd5dCRAzToQkgqVo78pTzwMtU=\nR:queueservices.go\na:0:0:444\nZ:Q1Gb564DzYp3C97W5p3vI6G01pQic=\nR:skus.go\na:0:0:444\nZ:Q1WFz+VSkKiFWot46sVmf6rqgGAyo=\nR:table.go\na:0:0:444\nZ:Q1UniwBiYCqB4aOVAwcLzwLrvqEpQ=\nR:tableservices.go\na:0:0:444\nZ:Q1QaULOhHhCzrj8uPmUbqZRm0v1oY=\nR:usages.go\na:0:0:444\nZ:Q1O2ZSOeljkNHhCNoWD6CTGBJoC9w=\nR:version.go\na:0:0:444\nZ:Q1Dnh6wocqC10Kpq9+SYCrXZvlEl4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/mgmt/2020-08-01-preview/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iVU4OIu+DQGXb7ko3Ex5SwAVPcA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/tables\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/tables/2019-02-02-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/tables/2019-02-02-preview/storagetables\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1ZQIXRuARfU7yV2t77nq/7SX1gUc=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1qceL4A4o4WCqfB4tcCFs8mYu8aw=\nR:enums.go\na:0:0:444\nZ:Q18YyNrxSazUZnvnKMwiWFyR2QPQg=\nR:models.go\na:0:0:444\nZ:Q1vCpaXerMQXDsboEb2cXkOMZlDyA=\nR:service.go\na:0:0:444\nZ:Q1Si/gi2dTwfCPASLLZVgLkfTYjho=\nR:table.go\na:0:0:444\nZ:Q1fYezeIfDEqHjS7HC99EhFUTROY8=\nR:version.go\na:0:0:444\nZ:Q1LbiOkK0hbMQ+KOHNzjb+bf+FRD8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storage/tables/2019-02-02-preview/storagetables/storagetablesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VE1j0UkDg/0dWXy+3rDXNMaLHsU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storagepool\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storagepool/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storagepool/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storagepool/mgmt/2021-04-01-preview/storagepool\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GJiLhB64MiRBi+d/3R2up5cwxFg=\nR:client.go\na:0:0:444\nZ:Q1Wb4O9HG5TEIHVhnCGcq9wAS47C0=\nR:diskpools.go\na:0:0:444\nZ:Q1Dm/xYq2aVDvMJUhhCKI0o0AaYIY=\nR:diskpoolzones.go\na:0:0:444\nZ:Q1JqNJnKwPbpf9PuUWcToxz1IT4j8=\nR:enums.go\na:0:0:444\nZ:Q1lqWKkHS9QGTKRxwIIQSr6TUa2kE=\nR:iscsitargets.go\na:0:0:444\nZ:Q1ehckFtoLK9Xppf/6428ghsgbuF8=\nR:models.go\na:0:0:444\nZ:Q1gCMfvInYxjqgWVvglNg3Trvst9E=\nR:operations.go\na:0:0:444\nZ:Q1W4JDbdlISh1K+EHqK9oR4uTpvj4=\nR:version.go\na:0:0:444\nZ:Q1RlNo5OWeuzPa12fIZYcMnBzGy2c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/storagepool/mgmt/2021-04-01-preview/storagepool/storagepoolapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wyI/cd8HYJhYlNjJrrtF11MuPpQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/streamanalytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/streamanalytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/streamanalytics/mgmt/2020-03-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/streamanalytics/mgmt/2020-03-01-preview/streamanalytics\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17P8n3Y/mkiMRKnIL53qj6cdSBrc=\nR:client.go\na:0:0:444\nZ:Q1Z0YYe/hE1TU0JZtrFzH3j2U760k=\nR:clusters.go\na:0:0:444\nZ:Q1QFdH6OZrkPrfUTnpGwv6E7TR5V0=\nR:enums.go\na:0:0:444\nZ:Q1UzYCTEcqrTXI3Heb2ySQOC+xb1k=\nR:functions.go\na:0:0:444\nZ:Q1n8hHtE8VpRWOB/I7cAYybbFT3no=\nR:inputs.go\na:0:0:444\nZ:Q16NY7JEFYOwLOD9GunBhCj1iWGJM=\nR:models.go\na:0:0:444\nZ:Q1iw3C+Cmux4/4NYYGqvB9mw//w5w=\nR:operations.go\na:0:0:444\nZ:Q1wqm/nZNBrOGod2YC364ULGmcfKk=\nR:outputs.go\na:0:0:444\nZ:Q1C4nn/cn+Z1hnY3XEHR5PCymU7y8=\nR:privateendpoints.go\na:0:0:444\nZ:Q1nDzQ5Sznnihm8Xrc4EbhsJ0B6IE=\nR:streamingjobs.go\na:0:0:444\nZ:Q1wjrkk5DufYc+p/U2KiF8gk7bB0E=\nR:subscriptions.go\na:0:0:444\nZ:Q1SAfjZyuM3MGUgYqiuVMRiE09PWU=\nR:transformations.go\na:0:0:444\nZ:Q1rNHBJ6b2n/CsGDh1iWMdZsFoQrU=\nR:version.go\na:0:0:444\nZ:Q1/b8hrIuB9utVo1MrpnDekuc/ZEA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/streamanalytics/mgmt/2020-03-01-preview/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vvpdEKsyqGTw0g3QUKW711vQdq0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/subscription\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/subscription/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/subscription/mgmt/2019-10-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/subscription/mgmt/2019-10-01-preview/subscription\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mGzpaQZR1bs0074Y4pIrdwjs0yI=\nR:client.go\na:0:0:444\nZ:Q1e5ANaq28H5iiafwm2Du1ZjO2cOs=\nR:enums.go\na:0:0:444\nZ:Q1wGwRjqxWCC49XCPck+VaxXV+RFo=\nR:models.go\na:0:0:444\nZ:Q1BwdoVpCGBHxwz7J6LX2DtqIi5eE=\nR:operation.go\na:0:0:444\nZ:Q1EdCNl9AULmvWLyBl9kGdL1CW4xA=\nR:operations.go\na:0:0:444\nZ:Q1pEEEYBFVlYhKMox0pq9MoZTD4hw=\nR:subscription.go\na:0:0:444\nZ:Q1EOluF7vYrhmFKI22qPS6m3UdJgE=\nR:subscriptions.go\na:0:0:444\nZ:Q1c4aLa7ly1K8Uflkmxc4Tg4jzwKM=\nR:tenants.go\na:0:0:444\nZ:Q1TgfOish7L+79di4GDRiYxYFpvfQ=\nR:version.go\na:0:0:444\nZ:Q1ltN88p3LwiFmTQQ6tRqLwRWyGbE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/subscription/mgmt/2019-10-01-preview/subscription/subscriptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1m9w2tI0YPJW8c1CucQIzksTperA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2019-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2019-06-01-preview/artifacts\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1rZSSzWCqpAficuhBDzo/qFHULRM=\nR:bigdatapools.go\na:0:0:444\nZ:Q1fE3iNpsdKbxBslE4GqsGPlk8DEQ=\nR:client.go\na:0:0:444\nZ:Q1O3p2iILukUzKZV14LJV2C+jM7RE=\nR:dataflow.go\na:0:0:444\nZ:Q16KrCwTB6ZHKDaWugQ1PkTdazVJg=\nR:dataflowdebugsession.go\na:0:0:444\nZ:Q1ZtELUkqR/UcRhUGx5jXARp9IgQM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q11meZbQxUd8t54xId1ZLBh1E20wU=\nR:dataset.go\na:0:0:444\nZ:Q1/KUYwMRucNm7/JnTsCzgX5wTuIY=\nR:enums.go\na:0:0:444\nZ:Q1GlEsFRNOEt0EG2OjQOrDvt9WK5U=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1WWuw7tWWVZmHYH8uE+9Z15tVan0=\nR:linkedservice.go\na:0:0:444\nZ:Q1qJLjK/SRTRFmaQEpsxXsgu+J+BA=\nR:models.go\na:0:0:444\nZ:Q1T/n4k08eT17d3pC8VQN11wxVEFM=\nR:notebook.go\na:0:0:444\nZ:Q1uR4fTC/z1WSoyJE238nyQyXQoF0=\nR:pipeline.go\na:0:0:444\nZ:Q18ujgMz49C4fnmbbSvrXbTT50ifI=\nR:pipelinerun.go\na:0:0:444\nZ:Q1tMJKt/Z3K9jIqW7eY3BXt55axZM=\nR:sparkjobdefinition.go\na:0:0:444\nZ:Q1N+aMyqJJzfFRg7ei90zwMrzIYO4=\nR:sqlpools.go\na:0:0:444\nZ:Q1xnT18nX46rwahy3GzWjtNDOl3CE=\nR:sqlscript.go\na:0:0:444\nZ:Q12ac2qV7p7h/Z06+DVnjz/Wp6n8E=\nR:trigger.go\na:0:0:444\nZ:Q1kP/VcUQ3NJWHmbLvBffy0Xf0f+M=\nR:triggerrun.go\na:0:0:444\nZ:Q1MVF5MOwW7HQo5O2YxU1IXA26wJ8=\nR:version.go\na:0:0:444\nZ:Q1vZjNzjUJd6xbWj2pGO+aiCF//+g=\nR:workspace.go\na:0:0:444\nZ:Q1EgrBfnBFHpxU3eMX+tnMyeO50SU=\nR:workspacegitrepomanagement.go\na:0:0:444\nZ:Q1HTL/IJFM4uhHN9jqi6s/Vw9dyDA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2019-06-01-preview/artifacts/artifactsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11pgTOmKpzX9qMXvzppQa7avlNEM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2019-06-01-preview/managedvirtualnetwork\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1Ff4gxKNGrmjlgyDWQyvGvRktBmg=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1I8fXN7Cm1GN/0R+5G8ZE3+hXdd4=\nR:managedprivateendpoints.go\na:0:0:444\nZ:Q1NfbEsCXjek6ktrfnCGsCrSoj4ac=\nR:models.go\na:0:0:444\nZ:Q18C7Y3f06nCCKw93Am5gXsQ4fu0k=\nR:version.go\na:0:0:444\nZ:Q1KyFOvT8r8mYGFA4OJ97KlkbgqSc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2019-06-01-preview/managedvirtualnetwork/managedvirtualnetworkapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ECYqcmwocw0KioBD0qmuMatGcaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2020-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2020-08-01-preview/accesscontrol\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1jac1PB6+uiGXYgfbG8PtCVQBNvA=\nR:dataplane_meta.json\na:0:0:444\nZ:Q10Ki6tzsV65weij2MBz0QSG1DXQA=\nR:models.go\na:0:0:444\nZ:Q1mP0GnM5n9t3uvYNQJTqs1faCQmw=\nR:roleassignments.go\na:0:0:444\nZ:Q1L9qGQ75tpl1eVaILLasjbAXasEQ=\nR:roledefinitions.go\na:0:0:444\nZ:Q1Amgk/mZXVS0ADdqxWwAnaGVrjXY=\nR:version.go\na:0:0:444\nZ:Q1Xs0xEcB/E1wSH2kV4pM9iPWljeM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/2020-08-01-preview/accesscontrol/accesscontrolapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vu1ETTBQHXL7L0xO4A+sEPX9GYM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/2021-06-01-preview/synapse\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/8rFS+Mh0sS4p9SHaq+XvhuUXPQ=\nR:azureadonlyauthentications.go\na:0:0:444\nZ:Q1g/PjHYkR7Asr381otIjQU7E1964=\nR:bigdatapools.go\na:0:0:444\nZ:Q108OXdx+tpuJ/1aDKk8DYDdXT/L4=\nR:client.go\na:0:0:444\nZ:Q1RAEUUMJ6Azv2bHZDa2RRiBOuI1s=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1oNimmB+iOP4bWMgNrnD+pd8H7i0=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1t96W/oYaakgkwXAMiPFnIe6t2oo=\nR:enums.go\na:0:0:444\nZ:Q1bgAf4rn806mNTz4+LBFn8/TDvRg=\nR:extendedsqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q13SkyZU7cyHl2mUmat1IHW2Qhjak=\nR:integrationruntimeauthkeys.go\na:0:0:444\nZ:Q1rUoIWBjGoZV+MwVYakvs/6bo7MQ=\nR:integrationruntimeconnectioninfos.go\na:0:0:444\nZ:Q11QtcTsETRaPaMQJOkUM61pGad3c=\nR:integrationruntimecredentials.go\na:0:0:444\nZ:Q1Oj7CiYEV910nhvkSBXtVyXDosNg=\nR:integrationruntimemonitoringdata.go\na:0:0:444\nZ:Q17FO8XKJf9Z2+oVmnJdXli+cdWQ4=\nR:integrationruntimenodeipaddress.go\na:0:0:444\nZ:Q19rXEwFl4uox8JwJu0BW3Se4g7Bk=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1YVyi0/UbvZBqRKMBostMsu/wrE4=\nR:integrationruntimeobjectmetadata.go\na:0:0:444\nZ:Q1e7s0+0pqkDDMP6trMhnJM0OH5mg=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1UfD/kRSaiSJeddFg8eL38t39/D4=\nR:integrationruntimestatus.go\na:0:0:444\nZ:Q1K4q/WOoHkUbsfnTNhTRtNt86hts=\nR:ipfirewallrules.go\na:0:0:444\nZ:Q1zCs1nWViOgMEVEGTgvbo3pyksRE=\nR:keys.go\na:0:0:444\nZ:Q1ouiFx/e+BUaOgFDKuvcUSTHXjyk=\nR:libraries.go\na:0:0:444\nZ:Q1DRw4MxNODODSzdQuktps6sgOtk4=\nR:library.go\na:0:0:444\nZ:Q1giM1bmCi6q55pNwy924w2qN14L0=\nR:models.go\na:0:0:444\nZ:Q1393qOYdI9qKJ7dVKeHgW0OXlRag=\nR:operations.go\na:0:0:444\nZ:Q1KDUTnglQnxMiFv3rwgHmHKWSz5U=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1Tbhf1/WtAz7BLY4rLbZJ5Ao5uc0=\nR:privateendpointconnectionsprivatelinkhub.go\na:0:0:444\nZ:Q1oHqnw/WUSF14OUwyTOjSZ5JQLKE=\nR:privatelinkhubprivatelinkresources.go\na:0:0:444\nZ:Q1zp8AnTvyMFbDUieNdmX+52/GPNg=\nR:privatelinkhubs.go\na:0:0:444\nZ:Q12h4RxB/tyrcQ2mKGaCDI0BH9tNc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1VQ61UUnm6I0GoJ4GVzrxYc8l098=\nR:restorabledroppedsqlpools.go\na:0:0:444\nZ:Q1h6MjsNfWkoxBa0qL62oZQDXjVwo=\nR:sparkconfiguration.go\na:0:0:444\nZ:Q1MDb0glPblphFDKEhqVciEGLhnec=\nR:sparkconfigurations.go\na:0:0:444\nZ:Q1qN1WPgTw7AFYdTc9+GOKa/2MCHg=\nR:sqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1gpv0EoMOZF/1zArGNDbi/3UTFL8=\nR:sqlpoolcolumns.go\na:0:0:444\nZ:Q1wSSjUwbFCk60GRFw9Ows0utyANA=\nR:sqlpoolconnectionpolicies.go\na:0:0:444\nZ:Q1T0TEDqQT5E/SawLY5xkE6yo+Rvc=\nR:sqlpooldatawarehouseuseractivities.go\na:0:0:444\nZ:Q15C6kahU6RSO+IwYbi73YOHEFTyU=\nR:sqlpoolgeobackuppolicies.go\na:0:0:444\nZ:Q1ljEeK0xZicdwj2dIjYolVZUAj7Y=\nR:sqlpoolmaintenancewindowoptions.go\na:0:0:444\nZ:Q1G3Hl0an37ILHdEIjxYA/Z0uoGtI=\nR:sqlpoolmaintenancewindows.go\na:0:0:444\nZ:Q1jSCKEAk1i7DOQwOmy3MkBMRagUI=\nR:sqlpoolmetadatasyncconfigs.go\na:0:0:444\nZ:Q1sY+b0jZbu0HW0Is1ytG3ylUUyww=\nR:sqlpooloperationresults.go\na:0:0:444\nZ:Q1s648NXX3+YnIgp9euGse/YaYRvA=\nR:sqlpooloperations.go\na:0:0:444\nZ:Q1Y3MVRVRQOShe6GIWy3SaUcdZPGk=\nR:sqlpoolrecommendedsensitivitylabels.go\na:0:0:444\nZ:Q1/KgNIQfQcIzGWVAHwiwxYBAz40o=\nR:sqlpoolreplicationlinks.go\na:0:0:444\nZ:Q1uIX94vNC5N5UMp8iKG4GoC2ELu4=\nR:sqlpoolrestorepoints.go\na:0:0:444\nZ:Q1xogLfhuB6SrH6LlXNgjW/wEZEkM=\nR:sqlpools.go\na:0:0:444\nZ:Q1Yyh3S1FwLRr91Emf//+Z58U85Jw=\nR:sqlpoolschemas.go\na:0:0:444\nZ:Q117JK4qwjlpq//jR4GGJ2wgz4dak=\nR:sqlpoolsecurityalertpolicies.go\na:0:0:444\nZ:Q1+NX0jJE5hxxmw6wUsWqM0gb9uw0=\nR:sqlpoolsensitivitylabels.go\na:0:0:444\nZ:Q1f650GDRASdlwYhkExTfSzddxQp0=\nR:sqlpooltablecolumns.go\na:0:0:444\nZ:Q14pnvcG1xKT9A1xSg0j4zIK0wdtU=\nR:sqlpooltables.go\na:0:0:444\nZ:Q1kQERYTVEdQ45P5L8Q7EHciRCAFg=\nR:sqlpooltransparentdataencryptions.go\na:0:0:444\nZ:Q10t18NIRj8QJpLc+Vjo0rp1SoKQU=\nR:sqlpoolusages.go\na:0:0:444\nZ:Q1yoCjyzkOJjSByrovx+OoGhrqPh8=\nR:sqlpoolvulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1NxdMq+w2u6X7GWMiFKaJcRMIWrQ=\nR:sqlpoolvulnerabilityassessments.go\na:0:0:444\nZ:Q1Qfvj0oEs8XBjkPoAv7lUneY45hY=\nR:sqlpoolvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q13ovaiSqcN0usD+8NY+AwZUQMSQE=\nR:sqlpoolworkloadclassifier.go\na:0:0:444\nZ:Q1oOWz/nsos6jjY0GBDowlldXfUfM=\nR:sqlpoolworkloadgroup.go\na:0:0:444\nZ:Q1gQtCSSfxkB6bqqep+qMD70TRZQU=\nR:version.go\na:0:0:444\nZ:Q1M7KOWbvja0owy/oGBYL7Mch6yyE=\nR:workspaceaadadmins.go\na:0:0:444\nZ:Q1BFkza2FPlJkD/WA/NQ9gzNq7Jf4=\nR:workspacemanagedidentitysqlcontrolsettings.go\na:0:0:444\nZ:Q1dKk8JTfdBmfBH0PTct/HQZyKJQk=\nR:workspacemanagedsqlserverblobauditingpolicies.go\na:0:0:444\nZ:Q11yFUah3j7LTupUMpMtkVheczgK0=\nR:workspacemanagedsqlserverencryptionprotector.go\na:0:0:444\nZ:Q1YjkE+l34Q0qQfCs16XslFF7j54k=\nR:workspacemanagedsqlserverextendedblobauditingpolicies.go\na:0:0:444\nZ:Q1xf1u313Fs3Yzo09iP66U2KwJg7A=\nR:workspacemanagedsqlserverrecoverablesqlpools.go\na:0:0:444\nZ:Q1uhGyVikuq0Jpen8WiPAs3pcap74=\nR:workspacemanagedsqlserversecurityalertpolicy.go\na:0:0:444\nZ:Q1/GkLvded7tdfvCbgkUeSqEIymiU=\nR:workspacemanagedsqlserverusages.go\na:0:0:444\nZ:Q17RDeCxABosKRh657sc8u5gAwgjU=\nR:workspacemanagedsqlservervulnerabilityassessments.go\na:0:0:444\nZ:Q1EAvbcM49MuKOTCnRdusPdlRl+Ps=\nR:workspaces.go\na:0:0:444\nZ:Q12e4g9knDZv5o2TNiwTIYGrnbDQs=\nR:workspacesqlaadadmins.go\na:0:0:444\nZ:Q1mbKDWM1/s5JkE7UEtR5L+QaYGCA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/2021-06-01-preview/synapse/synapseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OeLWkVOsveSBgZ0SrvEThFEneVo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/v2.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/v2.0/synapse\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1zprr4ren4HMGyDWE5vkdYknnKxU=\nR:_meta.json\na:0:0:444\nZ:Q1Mmxi4e4kVHA6NhazO7YQP4r9QeM=\nR:azureadonlyauthentications.go\na:0:0:444\nZ:Q1lrtJcjd2QM1Nsa0QtH4ZgWhd3Y8=\nR:bigdatapools.go\na:0:0:444\nZ:Q1lXmqlnsyL/Qtw1A3Nor6blkOKtE=\nR:client.go\na:0:0:444\nZ:Q1y6P0x5SNWUUT30P2ufxkGfbyu00=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1pd7caC8vjmFdunbGR3fewSZ2l3A=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1+uvKy3YCOHfoSj/9CnInHQEh2ck=\nR:enums.go\na:0:0:444\nZ:Q1/1Si9atEnYma01D0BdSJaeyCpLI=\nR:extendedsqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1qMp9Tm1mU/UkdyZRLUD04SzeFIc=\nR:integrationruntimeauthkeys.go\na:0:0:444\nZ:Q1rUoIWBjGoZV+MwVYakvs/6bo7MQ=\nR:integrationruntimeconnectioninfos.go\na:0:0:444\nZ:Q11QtcTsETRaPaMQJOkUM61pGad3c=\nR:integrationruntimecredentials.go\na:0:0:444\nZ:Q1Oj7CiYEV910nhvkSBXtVyXDosNg=\nR:integrationruntimemonitoringdata.go\na:0:0:444\nZ:Q17FO8XKJf9Z2+oVmnJdXli+cdWQ4=\nR:integrationruntimenodeipaddress.go\na:0:0:444\nZ:Q19rXEwFl4uox8JwJu0BW3Se4g7Bk=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1YVyi0/UbvZBqRKMBostMsu/wrE4=\nR:integrationruntimeobjectmetadata.go\na:0:0:444\nZ:Q1e7s0+0pqkDDMP6trMhnJM0OH5mg=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1UfD/kRSaiSJeddFg8eL38t39/D4=\nR:integrationruntimestatus.go\na:0:0:444\nZ:Q1K4q/WOoHkUbsfnTNhTRtNt86hts=\nR:ipfirewallrules.go\na:0:0:444\nZ:Q1Or0DFhyudqWPkF036rC/+nyzp6U=\nR:keys.go\na:0:0:444\nZ:Q1OJeUhF4wfyLCYsp0ZIJhh36vwdk=\nR:kustooperations.go\na:0:0:444\nZ:Q1eiG72sklgXLYge+5LxpQ7AWUOXg=\nR:kustopoolattacheddatabaseconfigurations.go\na:0:0:444\nZ:Q1g9n6bm4RrpGEoswFxZPa9KjQgwQ=\nR:kustopoolchildresource.go\na:0:0:444\nZ:Q14PIUphdn/uf+RbSipFfykVb2xFk=\nR:kustopooldatabaseprincipalassignments.go\na:0:0:444\nZ:Q1znBu/xhCQxXSzlBL68hdMgL/q9U=\nR:kustopooldatabases.go\na:0:0:444\nZ:Q13bNh0oPzIyhV3TMBuJbUpR5sxWY=\nR:kustopooldataconnections.go\na:0:0:444\nZ:Q1VP0d46CBzaezlS7Axt+BVG/4VNw=\nR:kustopoolprincipalassignments.go\na:0:0:444\nZ:Q1tV897GpROlifOgPZ7dINSg0CZ7I=\nR:kustopools.go\na:0:0:444\nZ:Q1CJ1JXKFr2AJoMk5rnZvYO0cTgJE=\nR:libraries.go\na:0:0:444\nZ:Q184JC51Rn0i3iq2Jn9awdWL2Gggg=\nR:library.go\na:0:0:444\nZ:Q1dff/wcNh4GpluWHjG9fCv/fQJeM=\nR:models.go\na:0:0:444\nZ:Q147ZZQDgcsU912uy8qU533X31P4I=\nR:operations.go\na:0:0:444\nZ:Q19SEPc0+lKk2ui3Iou38gHivm1CM=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q13h206Cflt67Z9t/SRS4t/HZt0rc=\nR:privateendpointconnectionsprivatelinkhub.go\na:0:0:444\nZ:Q1KLtZ6gHNxTMOworOMWjIHdmYb/k=\nR:privatelinkhubprivatelinkresources.go\na:0:0:444\nZ:Q1DnqDDgcO7FEcfM4rWPUV6YNh4mc=\nR:privatelinkhubs.go\na:0:0:444\nZ:Q1f8lraPsVUowlec63GqTbPKGSw1E=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ohw17hmeZBg+0BarSX/jJwt0Suc=\nR:restorabledroppedsqlpools.go\na:0:0:444\nZ:Q122VcwLnQ8rBRIBcCz0HgaeM/y1Y=\nR:sparkconfiguration.go\na:0:0:444\nZ:Q1mKMFLw3ksVKM6j9VpuIv6+Fnv/U=\nR:sparkconfigurations.go\na:0:0:444\nZ:Q1h6oN4QW6Q4GamWONJvTvjM4LUmA=\nR:sqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1f9J6vxzu48irIKiYAvNBmOOxJZ0=\nR:sqlpoolcolumns.go\na:0:0:444\nZ:Q1woitiDpTWy+ScSYSuMN+kNuFAbA=\nR:sqlpoolconnectionpolicies.go\na:0:0:444\nZ:Q12Hstyb538rBWsmW0AbV4l7V991Q=\nR:sqlpooldatawarehouseuseractivities.go\na:0:0:444\nZ:Q1GsEJeK7rZlIpZbEquCrv+uQV6dY=\nR:sqlpoolgeobackuppolicies.go\na:0:0:444\nZ:Q1aUGDo5TrTJr4YQQVjl81+ZAclQ4=\nR:sqlpoolmaintenancewindowoptions.go\na:0:0:444\nZ:Q1LkMg71zL73pUDbW8edCtaJqpaJ0=\nR:sqlpoolmaintenancewindows.go\na:0:0:444\nZ:Q11QjksEFwioVuH9DC3Hf7ZF+EwiQ=\nR:sqlpoolmetadatasyncconfigs.go\na:0:0:444\nZ:Q1hJmD6I5CkjooQJTQsp5QJomRGNc=\nR:sqlpooloperationresults.go\na:0:0:444\nZ:Q1DE0POyU/4WXkncSFTOOcg0UOgY0=\nR:sqlpooloperations.go\na:0:0:444\nZ:Q1ZqVSmn3CZDePhTYwxTNCW5oG6A4=\nR:sqlpoolrecommendedsensitivitylabels.go\na:0:0:444\nZ:Q1fpni5uOKKGrumHvl9oqpSvUBaIE=\nR:sqlpoolreplicationlinks.go\na:0:0:444\nZ:Q1VZDY9K4/lBfLrA8kuvZupW4orB0=\nR:sqlpoolrestorepoints.go\na:0:0:444\nZ:Q1ts/oUi8eMB+KK0SsqcSMXmXxi1M=\nR:sqlpools.go\na:0:0:444\nZ:Q1CuGSJ1qahd6vDz6M0tU9l8Q7SZg=\nR:sqlpoolschemas.go\na:0:0:444\nZ:Q1h3rca7Yvudc5xbt8xsGesEI66gs=\nR:sqlpoolsecurityalertpolicies.go\na:0:0:444\nZ:Q1O2l8zjIyr4Me5RvG996gEZNIN+Y=\nR:sqlpoolsensitivitylabels.go\na:0:0:444\nZ:Q1qjRWrhBE3CE5qvvSrAt6yp005VQ=\nR:sqlpooltablecolumns.go\na:0:0:444\nZ:Q1FMRkB45pgAAKd0zBrQTtS5xAznM=\nR:sqlpooltables.go\na:0:0:444\nZ:Q1vngnt1X836jMpZ1tzZHWt/eTGd8=\nR:sqlpooltransparentdataencryptions.go\na:0:0:444\nZ:Q1e6Z+dB7xlKmhQYZUTKchJiGdYeE=\nR:sqlpoolusages.go\na:0:0:444\nZ:Q1oIvGVJh71SnvKT8oMInJizV/vKY=\nR:sqlpoolvulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q10tWOgX4EIiQcZ5Y72GvPu9iT/sg=\nR:sqlpoolvulnerabilityassessments.go\na:0:0:444\nZ:Q1QSt0JltrJuXLMPeNfpPygIHqCX0=\nR:sqlpoolvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1dnvvd5D5CNvYDJrRKtEUNYcwRfU=\nR:sqlpoolworkloadclassifier.go\na:0:0:444\nZ:Q1FrYTMNocNafgSpSq+tT8JVEzDR4=\nR:sqlpoolworkloadgroup.go\na:0:0:444\nZ:Q1d6OD87gQSJia40uuB6M5UCHoHIg=\nR:version.go\na:0:0:444\nZ:Q17GIBK8xe2JL3k75HPLJfORDINt0=\nR:workspaceaadadmins.go\na:0:0:444\nZ:Q1NevdNskRORsv417Ux2rdWbBVIso=\nR:workspacemanagedidentitysqlcontrolsettings.go\na:0:0:444\nZ:Q1fOwmIzdAbvXaKynRLQBVTpv19rg=\nR:workspacemanagedsqlserverblobauditingpolicies.go\na:0:0:444\nZ:Q1bv2sj3CY+dYIcuSeBHQE/JBc4Ws=\nR:workspacemanagedsqlserverdedicatedsqlminimaltlssettings.go\na:0:0:444\nZ:Q1tsZg0/qfVNg3HiyTX9vAa7TIX2s=\nR:workspacemanagedsqlserverencryptionprotector.go\na:0:0:444\nZ:Q1BUPm0qb3rEiat/PPi43pkkModPA=\nR:workspacemanagedsqlserverextendedblobauditingpolicies.go\na:0:0:444\nZ:Q1zimshjksre7voicJAM5Pi15wp1A=\nR:workspacemanagedsqlserverrecoverablesqlpools.go\na:0:0:444\nZ:Q1HmDYyXcf5p6t5YTS1DH17UgWVLQ=\nR:workspacemanagedsqlserversecurityalertpolicy.go\na:0:0:444\nZ:Q1rzQ/JIdPYOd1vnZw8EEtMwrmPkU=\nR:workspacemanagedsqlserverusages.go\na:0:0:444\nZ:Q1TBzKQwPrI0AMIhWrqo7vK81XrEw=\nR:workspacemanagedsqlservervulnerabilityassessments.go\na:0:0:444\nZ:Q1CPZJOM0UXpdvk8GBl6OLid/KVG4=\nR:workspaces.go\na:0:0:444\nZ:Q1Hv/Gw12B2VPm1pDKr+gWSmna700=\nR:workspacesqlaadadmins.go\na:0:0:444\nZ:Q1yuOT17qU9IlVf9ug2kcKD6XS31Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/synapse/mgmt/v2.0/synapse/synapseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1kPppM3F2Tx+lhdFs4S4y9HAw3mM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2017-02-28-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2017-02-28-preview/timeseriesinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1oAGOBEEvsasdZkVC55YBOYvVfRk=\nR:accesspolicies.go\na:0:0:444\nZ:Q12vaZxl/Xai4zPkOgupV336G4id0=\nR:client.go\na:0:0:444\nZ:Q12ZFO9VH2f0Ki3wMgXxJ/9X03+2A=\nR:enums.go\na:0:0:444\nZ:Q1l16t5M0YiaJDVYHZzKGWM9EJAPI=\nR:environments.go\na:0:0:444\nZ:Q15C7bsSuvoDpbI1X/teKMCs4gmd0=\nR:eventsources.go\na:0:0:444\nZ:Q1ArmXupobFYwuqyFZQ8VJItAbcmg=\nR:models.go\na:0:0:444\nZ:Q1s9cX53SHDqrVpvhC2OuS5sIqEu4=\nR:operations.go\na:0:0:444\nZ:Q1t2TC7NlUnDD7OF6X7RC+EEocWVw=\nR:referencedatasets.go\na:0:0:444\nZ:Q102vrUN6BTeYyjtR6BL36sty1ljs=\nR:version.go\na:0:0:444\nZ:Q1m6f1tSk1UWAv9SKQcDA+FHiz7iY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2017-02-28-preview/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1A4aLKVcpbaELESY0kq7b/LqIQGE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2018-08-15-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1GCaHwv4HYi4dbMHPzIXJfq2RAuY=\nR:accesspolicies.go\na:0:0:444\nZ:Q1wNMeVaFOGRakxDCHl0s+YWsRkVk=\nR:client.go\na:0:0:444\nZ:Q1LTHXR4YZTKzFbux6vjAJmeLRlFc=\nR:enums.go\na:0:0:444\nZ:Q1owoncluXy1xO7DZcvDCfxwmgiYA=\nR:environments.go\na:0:0:444\nZ:Q1pfeexnRfxQmbovQ2hP0QSjRT4nw=\nR:eventsources.go\na:0:0:444\nZ:Q1gFdbyI/lL4tvFY497YWJRV1I6cc=\nR:models.go\na:0:0:444\nZ:Q1Whj6w2pwnz1hsNrvZkRT+KFYvTk=\nR:operations.go\na:0:0:444\nZ:Q1A3EuaCD59VZ9hVzvO2B1HV+iFMc=\nR:referencedatasets.go\na:0:0:444\nZ:Q1GEmxbHCmyOmqAGQ7zxMBW7saVUE=\nR:version.go\na:0:0:444\nZ:Q1Fr0f0M9R8CtzhANfMW4DHPOw/K8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1H74+5nkD6DyMyad4ts25fy+hx0U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2017-09-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2017-09-01-preview/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1lpYaLUiQAF0PjiuoxW9X3oU1cPw=\nR:client.go\na:0:0:444\nZ:Q1JcnriJNZNfuvHiu0z06ipb3UlIw=\nR:endpoints.go\na:0:0:444\nZ:Q1Wxla7HWrhznuzBS+M3S4f2V1m6M=\nR:enums.go\na:0:0:444\nZ:Q1q7cjTwoGpCYv4ddFeTemvx1AOzw=\nR:geographichierarchies.go\na:0:0:444\nZ:Q165P07+SavdeyeV/ZScrBPYB5tGM=\nR:heatmap.go\na:0:0:444\nZ:Q1cBVeN5xG7xOyuvElZLUElsw5wLw=\nR:models.go\na:0:0:444\nZ:Q1uK9dHIBvIXlVMzh51qrJoKvnLsg=\nR:profiles.go\na:0:0:444\nZ:Q1xvEnZ1669W8QqkanJ9Y/MgxHH04=\nR:usermetricskeys.go\na:0:0:444\nZ:Q1zKEYnUuUzGwTetThFWeUx9rCoAg=\nR:version.go\na:0:0:444\nZ:Q1wWHX5KclYC0xgcdKRH79gYI0xMY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2017-09-01-preview/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q157K03zXLiQDoaBkqiDs8A+L3NM8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2018-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2018-02-01-preview/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1V13CpZMKpS2R74niLRD4a9vCT+I=\nR:client.go\na:0:0:444\nZ:Q1JcnriJNZNfuvHiu0z06ipb3UlIw=\nR:endpoints.go\na:0:0:444\nZ:Q1ilsk+u87/hNE2kxjqsx1mEd7LqM=\nR:enums.go\na:0:0:444\nZ:Q1YZWnk6wS/hTQiHpg7tP2ORrEHJo=\nR:geographichierarchies.go\na:0:0:444\nZ:Q1I5fhNSMC1zUs43yPAAvXYS5142o=\nR:heatmap.go\na:0:0:444\nZ:Q1cBVeN5xG7xOyuvElZLUElsw5wLw=\nR:models.go\na:0:0:444\nZ:Q12+E6sfMH4z+FYjgFy1dUb6tns54=\nR:profiles.go\na:0:0:444\nZ:Q1LRP6O6S50nDgEE21LqyoGSbyMlE=\nR:usermetricskeys.go\na:0:0:444\nZ:Q1zKEYnUuUzGwTetThFWeUx9rCoAg=\nR:version.go\na:0:0:444\nZ:Q1bvVzapTIRTSOUemEpJFQs32QFh0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/trafficmanager/mgmt/2018-02-01-preview/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BmJagSunubVHOwfpotFpvFrvJP4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-05-01-preview/videoanalyzer\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ewzOLLeXxtEwFEb+WxponT5SV7k=\nR:accesspolicies.go\na:0:0:444\nZ:Q1VkYkloixm91dXnHda+at6jlywFQ=\nR:client.go\na:0:0:444\nZ:Q1IN021vjzPsjQBMSiyF60dKGUZLo=\nR:edgemodules.go\na:0:0:444\nZ:Q1mpdYQRuoDFRNLYYKCvASUdJeG/Q=\nR:enums.go\na:0:0:444\nZ:Q1UTequVae4bCiMixQnJ7/UI4MouQ=\nR:locations.go\na:0:0:444\nZ:Q18ULu5cDgRBn696hvg/uclGnP4JM=\nR:models.go\na:0:0:444\nZ:Q1+ShYLPN3qoSa8sqZSF5xcpqm+24=\nR:operations.go\na:0:0:444\nZ:Q12HsWetQx0MZ9a97SReAaDM7PS7k=\nR:version.go\na:0:0:444\nZ:Q1mto5hClHfQpOJ/CaFFSvG4VFV58=\nR:videoanalyzers.go\na:0:0:444\nZ:Q1Tdbxe7yE56NXempXqgtkDVDei08=\nR:videos.go\na:0:0:444\nZ:Q1lm28hh8SChC0x3AD/IfVEj5AieE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-05-01-preview/videoanalyzer/videoanalyzerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jMSX9gZtGtVSmBmClBTEd/znIMs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-11-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-11-01-preview/videoanalyzer\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1N9VQegYlsscBjzxx0VVXC8B4SMQ=\nR:_meta.json\na:0:0:444\nZ:Q1IofktfI9cNYNANU0Aa8svu/kGLg=\nR:accesspolicies.go\na:0:0:444\nZ:Q17b2+rUGmi1fZGbcjwwVh/1tMA8k=\nR:client.go\na:0:0:444\nZ:Q1a56gZB8zjMeVSJ0yI3t3DUifWQo=\nR:edgemodules.go\na:0:0:444\nZ:Q1EZ+oUSXvWrBhx0WZqSSm5PW5rSw=\nR:enums.go\na:0:0:444\nZ:Q1sKRNNEw9nbOIDGY94VGmzLjokLs=\nR:livepipelineoperationstatuses.go\na:0:0:444\nZ:Q19rSab23cRAR4BH75jjmXgQaQ/DE=\nR:livepipelines.go\na:0:0:444\nZ:Q1g+E4AQ/dqPzRsPeq0Xk9Wym5VAM=\nR:locations.go\na:0:0:444\nZ:Q18AY71HlwxARAA2MvWRqsO+Nq13s=\nR:models.go\na:0:0:444\nZ:Q1ZIEKEhaxO4w03kWyZ9WsvKWnPtQ=\nR:operationresults.go\na:0:0:444\nZ:Q194r2PXGdSoExZ2TsvTS1vToyS/Q=\nR:operationresultsgroup.go\na:0:0:444\nZ:Q1P/8zEDk4KOe2+Gv/xAJ3UOtSLm8=\nR:operations.go\na:0:0:444\nZ:Q1iCAtK9SFszf5/GWytxzc561ioW4=\nR:operationstatuses.go\na:0:0:444\nZ:Q15KAoUVVFD+NzWPs2qOR8mIGlV+c=\nR:operationstatusesgroup.go\na:0:0:444\nZ:Q1kZiYA4LEmImG+tPUju8E1buMSoY=\nR:pipelinejoboperationstatuses.go\na:0:0:444\nZ:Q17oEFLIjCt7M0bF8TamE/muFlIDw=\nR:pipelinejobs.go\na:0:0:444\nZ:Q1pRU9VOWiGNZ44eIG7ML2Z0i8zKs=\nR:pipelinetopologies.go\na:0:0:444\nZ:Q10rAmTOw6TxGQux0a0CqnWAIrcUI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1S7XJep+F5oH1ppDah7HDte3SiqA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1etjfLysKXj8xyGzycjOn2wdM1q8=\nR:version.go\na:0:0:444\nZ:Q1H4DLtu4BrvuBRbSG804zfAiA+aQ=\nR:videoanalyzers.go\na:0:0:444\nZ:Q1vKNGv6/N5tgsgulyazwbLwEVL2Y=\nR:videos.go\na:0:0:444\nZ:Q1h62/vu9EO7JyeUuLRso+Gcqq8L4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/videoanalyzer/mgmt/2021-11-01-preview/videoanalyzer/videoanalyzerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ybyRR4Mpl6v5h6DTpynTT+5znwA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2018-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2018-02-01-preview/virtualmachineimagebuilder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1WYwYvWeB07HOZx3YLhkjomsHUqc=\nR:client.go\na:0:0:444\nZ:Q12Mm4KeP2jgtq8t61vDJ4gpX7GvQ=\nR:enums.go\na:0:0:444\nZ:Q1f/x580QOgSb20gJ3AGxzXS5NJfU=\nR:models.go\na:0:0:444\nZ:Q1dJ/x5IUv48+iImz1bUZqxGli+sY=\nR:operations.go\na:0:0:444\nZ:Q1SAUMbAIWgvQPJNY4Leit5aDh2GA=\nR:version.go\na:0:0:444\nZ:Q1Y29x7vmuPHqWn1HxFDfBEsYNvZY=\nR:virtualmachineimagetemplate.go\na:0:0:444\nZ:Q1eqLI7Q7N/D4KXBumlzSfWlKDWyw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2018-02-01-preview/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1VwCOAen547MqL+DAihMvZ3UlN04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-02-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-02-01-preview/virtualmachineimagebuilder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1a6u6YqMZBcB6A0NTGKamvHzX26s=\nR:client.go\na:0:0:444\nZ:Q18c+9sVunyFg+/BzITGd9r76K33k=\nR:enums.go\na:0:0:444\nZ:Q1ELkP3CnUP4Tqd1MUSWdGWWWWgbs=\nR:models.go\na:0:0:444\nZ:Q19e4XIexCQzO8mRnyS+ywzDyDhXo=\nR:operations.go\na:0:0:444\nZ:Q1g3pJuzZhWTD+/pfOtRBV1yyOFsw=\nR:version.go\na:0:0:444\nZ:Q1Av9ZwrhhKBVa/Tl6YfARNnl7myU=\nR:virtualmachineimagetemplates.go\na:0:0:444\nZ:Q1WIB03aGGFURoRsWmB4I3cG1tG9w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-02-01-preview/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1C5HzGrZ11LLRiMqz+cxmW1DppWU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-05-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-05-01-preview/virtualmachineimagebuilder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Vroa6IaOYze0bMbQaBwR0Mn3wKs=\nR:client.go\na:0:0:444\nZ:Q1g3VXnnjNwPzuHzKI3awlpeTUpkY=\nR:enums.go\na:0:0:444\nZ:Q18CZOWkvTwasYpvDBBbPAJmTuL6U=\nR:models.go\na:0:0:444\nZ:Q1irLtGV74pVr6dZ2cZO0aIM8ho8U=\nR:operations.go\na:0:0:444\nZ:Q1GWNfmWDiOSTUEd/5dpTUXQUeJhs=\nR:version.go\na:0:0:444\nZ:Q1FoXp4Uj+XZSTkb5wj+g3G8e1L5g=\nR:virtualmachineimagetemplates.go\na:0:0:444\nZ:Q1OxzOsFXTRthHbm/+4i+1IY19L9w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/virtualmachineimagebuilder/mgmt/2019-05-01-preview/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1s3n82vMc+4//MKI3lHrQcilDIVg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/visualstudio\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/visualstudio/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/visualstudio/mgmt/2014-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/visualstudio/mgmt/2014-04-01-preview/visualstudio\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1/g7879PoYUjvWiu17L8XH6k0a4g=\nR:accounts.go\na:0:0:444\nZ:Q1Ad0Bet11iQdXq87qSzqlGKIDmL4=\nR:client.go\na:0:0:444\nZ:Q13Xu8VONDxCUq0vE2A6AwJx3N/NE=\nR:extensions.go\na:0:0:444\nZ:Q12bk3lF9fchYDRj7D9+TyC5lAJZA=\nR:models.go\na:0:0:444\nZ:Q1LFOhbQPbz+yGjuzxATbI5p1PNXM=\nR:operations.go\na:0:0:444\nZ:Q1v3ojnzDCZSAMSizaHdkvYtcoRK0=\nR:projects.go\na:0:0:444\nZ:Q1M+0zyrAslh6InhTNk0wTjIfBtco=\nR:version.go\na:0:0:444\nZ:Q1f/9BBxQusTx4pk8PFwzNdXbJCZI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/visualstudio/mgmt/2014-04-01-preview/visualstudio/visualstudioapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1HAPa/dV62ljR4SykqRMiP08LVLc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/web/mgmt/2015-08-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/web/mgmt/2015-08-01-preview/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16PspbWRbS7rXhZuzrY9nsrz87b4=\nR:certificateorders.go\na:0:0:444\nZ:Q1/gtDwQ42vNQweU/YC0OLERfkYvs=\nR:certificates.go\na:0:0:444\nZ:Q1p8GmHWDw4GxTTJoAz0ZJXVingPo=\nR:classicmobileservices.go\na:0:0:444\nZ:Q19VfquLHH0JD6v0nE7tLWFRb9KXk=\nR:client.go\na:0:0:444\nZ:Q1Ma9JMnMuUA9h4xAGzOL4IJCcX78=\nR:connections.go\na:0:0:444\nZ:Q1BgNBCDhy6fYQH/MoN+2dgPpBoFE=\nR:domains.go\na:0:0:444\nZ:Q1hGnxlyDD7aoWQlZPkatkPXj8UxQ=\nR:enums.go\na:0:0:444\nZ:Q131pF3hQ2pVJ9qCWD95fE0SD+m9A=\nR:global.go\na:0:0:444\nZ:Q1U97XImyr7f4wI1/o2bjVCSacUX8=\nR:globalcertificateorder.go\na:0:0:444\nZ:Q1BQR2HKtoEvDOuXFHsC2sFdCsD0Q=\nR:globaldomainregistration.go\na:0:0:444\nZ:Q1F5JQ8y9t146cNdqXebBeJnGhizs=\nR:globalresourcegroups.go\na:0:0:444\nZ:Q1eSh0lKGJLrdf17ZsFiZ1u5Jisac=\nR:hostingenvironments.go\na:0:0:444\nZ:Q1IEC0uqtkSfmj3FA5+0Q1qstpycA=\nR:managedapis.go\na:0:0:444\nZ:Q1Rfl8PDIQsq2CZ/bnIMMaynIe6ek=\nR:managedhostingenvironments.go\na:0:0:444\nZ:Q108ictGPI9j/mt1AC61hFLUEKijQ=\nR:models.go\na:0:0:444\nZ:Q1YPUl6TjORwJnr+27+qeRjwh/G1o=\nR:provider.go\na:0:0:444\nZ:Q1ab6xyoC+4xRLsc+K04bEWzGbvbw=\nR:recommendations.go\na:0:0:444\nZ:Q1pNQpNHGRtRoJ7xZPEFATROP2vCE=\nR:serverfarms.go\na:0:0:444\nZ:Q12UM4xTjNJOgxGd9FfJ0bMKBu4rk=\nR:sites.go\na:0:0:444\nZ:Q1UY9Dor3SiUf0ENQWRK3Uq5DxnhI=\nR:topleveldomains.go\na:0:0:444\nZ:Q1p+oDC6fmVDkkAsQt3U4n3WHg2TA=\nR:usage.go\na:0:0:444\nZ:Q1RXAjCQTWQORckVIbhw6dIfRVfwA=\nR:version.go\na:0:0:444\nZ:Q1MowCIH9jA2nL5OYAf29s1LUV1ec=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/web/mgmt/2015-08-01-preview/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1au+4QxDh6DlstL7ZYIraPMzcohQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-04-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-04-01-preview/webpubsub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1T0Gt68uCkAojsKFpgkkj8g048O0=\nR:client.go\na:0:0:444\nZ:Q1RG6gVM9NGdkWpz9a16yKOzEr9/E=\nR:enums.go\na:0:0:444\nZ:Q1MLMyeaN3EPLK06INj7CHLMsVU0s=\nR:models.go\na:0:0:444\nZ:Q1BG0dGd/6HB3R6ry2fsv/k7C8MXI=\nR:operations.go\na:0:0:444\nZ:Q1Colh2NgGYn9MJqU1nrzhUwbMd7M=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1aiHgqR+dcmwVa3cTGzTjOXKKR0Q=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1rRVu6S3PpXWkwjaXuIjXhBXVcng=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q1QDMcdmzP+S4W0m0eZ+l2GlGuSPw=\nR:usages.go\na:0:0:444\nZ:Q1oCb22xViCk5ZJvlm0+GvbPjmAHM=\nR:version.go\na:0:0:444\nZ:Q1+69Sq/xGQaDY/0UXk9gLyVUdMdw=\nR:webpubsub.go\na:0:0:444\nZ:Q1bda93WahbdTDT9Non4Zhz9FeuvU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-04-01-preview/webpubsub/webpubsubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/ZX7ifR6psRW6ZNZJTCtSGukZJg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-06-01-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-06-01-preview/webpubsub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+y1ysfSyhqpYg0JhjlOmeTHaCLY=\nR:client.go\na:0:0:444\nZ:Q1v0FXWgiyyvliXMW3P+nCy4pW+XU=\nR:enums.go\na:0:0:444\nZ:Q1w8GdYBymSWd1PIyhE+8aPPKFhaI=\nR:models.go\na:0:0:444\nZ:Q1rmSZrxpKFz8lCGLBjmQk3GcHCAk=\nR:operations.go\na:0:0:444\nZ:Q1vHgHwfGGvlmAI/CUHO7QSYxuJ0g=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1wUDlwfCoAISB6wR/d2qdD+joDoU=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1DIX9aILNdvEN+C3S11MPahMDeA4=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q1tTGoNGcYlzUtKR4kPH7taLejBSw=\nR:usages.go\na:0:0:444\nZ:Q1/riP+AdoR5agctqFGfJUdSvx+O8=\nR:version.go\na:0:0:444\nZ:Q1p3cCkt9yGAGqqeq8DWLAXFzpzlA=\nR:webpubsub.go\na:0:0:444\nZ:Q13smVeaBjITmIplOKg4sBZJMIrvw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/webpubsub/mgmt/2021-06-01-preview/webpubsub/webpubsubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MNFcArrDjqZeHkEGYWxfsQ2kuXQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/windowsesu\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/windowsesu/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/windowsesu/mgmt/2019-09-16-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/windowsesu/mgmt/2019-09-16-preview/windowsesu\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q12Sk0wTmqv5W+np7B3cfUDmYyDRw=\nR:client.go\na:0:0:444\nZ:Q1zBoYuWg2wKlBpzs7PhY2d7uYZFo=\nR:dataplane_meta.json\na:0:0:444\nZ:Q147Zee3sVorAg4QTwYvjbq6cIfdw=\nR:enums.go\na:0:0:444\nZ:Q1F7CfxYavgsm6sDhVs8hREJv7dYA=\nR:models.go\na:0:0:444\nZ:Q1rg3eq+VAf61EMU3uksXRY10S6vA=\nR:multipleactivationkeys.go\na:0:0:444\nZ:Q1D3ey2wHyJk/jYL5NLq1209guNdk=\nR:operations.go\na:0:0:444\nZ:Q1YamRPczhf//dd7PiN1Iq4q9jxLY=\nR:version.go\na:0:0:444\nZ:Q1BGT2bvQxwJYgH43sKQIHYxT83bE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/windowsesu/mgmt/2019-09-16-preview/windowsesu/windowsesuapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mEO9eeaMBdQseZLDPR7eHQvd4Do=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2018-08-31-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2018-08-31-preview/workloadmonitor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1akSROzdzJKztApf7mrswFSDw0/g=\nR:client.go\na:0:0:444\nZ:Q1rt3oDr6QgDfYbaPnzDZselZxHXs=\nR:components.go\na:0:0:444\nZ:Q1YlJa0GKdqhx6mnlzW0q8fKiE7s8=\nR:componentssummary.go\na:0:0:444\nZ:Q1LmLCVeQ11iOTmS55zMT9jSM0ZIk=\nR:enums.go\na:0:0:444\nZ:Q1pYX1Dgt4stUAonlbFcVsF2uwy8Y=\nR:models.go\na:0:0:444\nZ:Q1I28cGoQ+CYkWiCIY7/WG1NspoYU=\nR:monitorinstances.go\na:0:0:444\nZ:Q19lWfP2HH8wx81AQwZd6tEbxISTM=\nR:monitorinstancessummary.go\na:0:0:444\nZ:Q1n/10UMybZQYupjc/US7SUUJDStU=\nR:monitors.go\na:0:0:444\nZ:Q1KzKJznbgLig7Ifw55YG+cW5f8PY=\nR:notificationsettings.go\na:0:0:444\nZ:Q13rtDY6/0YO4p94oQ/a5HtyR5Qd4=\nR:operations.go\na:0:0:444\nZ:Q1/CXNRt0cpLc5fweWBhunx56UVEs=\nR:version.go\na:0:0:444\nZ:Q19Yw3z8lxHLZkMDdlgxdwXC+FlCA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2018-08-31-preview/workloadmonitor/workloadmonitorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z2b94NXiYETWxNy9OooVu7p5GLE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2020-01-13-preview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2020-01-13-preview/workloadmonitor\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1A3lFPis/1Aggkpoy98PN1n+VWyA=\nR:client.go\na:0:0:444\nZ:Q1ZYjqnM5O5GzQIQJxbpYIr4DLj60=\nR:enums.go\na:0:0:444\nZ:Q1EL3gSEyzocpIw0vENmo7d6km9Xo=\nR:healthmonitors.go\na:0:0:444\nZ:Q185mCdMz2D8dQavvN5Z22chiu8Ls=\nR:models.go\na:0:0:444\nZ:Q1ZPIKZBcaoa9lp/BOwM3gbRePbWw=\nR:operations.go\na:0:0:444\nZ:Q1mxvpHty0WPViKFrqXJ+9rIFjaaM=\nR:version.go\na:0:0:444\nZ:Q1L7z4WILxRsPzXnSU615XXM/35h4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/preview/workloadmonitor/mgmt/2020-01-13-preview/workloadmonitor/workloadmonitorapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1cppYuN6EIBtoR5qJKAphIFYyM88=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/privatedns\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/privatedns/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/privatedns/mgmt/2018-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/privatedns/mgmt/2018-09-01/privatedns\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dzK9Ygf5k28Zt3PjWXJahyrAADE=\nR:client.go\na:0:0:444\nZ:Q19ezAjtTs/d8aLKk6rDKArBTTa94=\nR:enums.go\na:0:0:444\nZ:Q1zAzggTpGX44XOL4/zTIJ+YfQOpc=\nR:models.go\na:0:0:444\nZ:Q1kLcWpqToSRKg0EA+LKp/zYa9vLA=\nR:privatezones.go\na:0:0:444\nZ:Q10JNchrmVcnUrOHzxM+O8OcrnCas=\nR:recordsets.go\na:0:0:444\nZ:Q1K6sEPrQu2MC/T4l4tnIHxSO08ZY=\nR:version.go\na:0:0:444\nZ:Q1VszblEp8j9QRtNBJZ0jiNRdvyOI=\nR:virtualnetworklinks.go\na:0:0:444\nZ:Q1WyUIs0nG0uq8+VWAwaj//1i6GcM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/privatedns/mgmt/2018-09-01/privatedns/privatednsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14mfVEB8gkywpfnpHxiQTrJ9FoSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2017-11-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2017-11-15/iothub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1G7y4drHatgeZeRY0kzHC6wTBsO0=\nR:client.go\na:0:0:444\nZ:Q1CL5TBYgb7S7SHvancXbkRJhXRbY=\nR:dpscertificate.go\na:0:0:444\nZ:Q1F3OsMvZmGbv9vAx+R6gGzrwbtFY=\nR:enums.go\na:0:0:444\nZ:Q1KTBf4ogPPs2r9zUoc0JTLoNqQYU=\nR:iotdpsresource.go\na:0:0:444\nZ:Q1rpyLqDFlYmH+BA9MbKjWeYo2hZ4=\nR:models.go\na:0:0:444\nZ:Q1HAVawA7dY4MEPhKPpd8NRhq4IUA=\nR:operations.go\na:0:0:444\nZ:Q1DKJaaIBTpbL6H3EnIjX24uCiVto=\nR:version.go\na:0:0:444\nZ:Q17MrUnQydoITkhTdHED/iQPpiMjI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2017-11-15/iothub/iothubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IGxS58oycGF+LmHvMalGbopr04s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2018-01-22\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2018-01-22/iothub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nI1gr4NI3FhBJW1LnuaQNGyGceM=\nR:client.go\na:0:0:444\nZ:Q1SM0vFgt6NkyIMPSRXIzuG+4MQ0g=\nR:dpscertificate.go\na:0:0:444\nZ:Q1sAjQp8H1BCh/bnyb7cKNPjBW4Wc=\nR:enums.go\na:0:0:444\nZ:Q1KTBf4ogPPs2r9zUoc0JTLoNqQYU=\nR:iotdpsresource.go\na:0:0:444\nZ:Q1uhNsedYPPtqYI2VDbaFjx0dfTTU=\nR:models.go\na:0:0:444\nZ:Q1gD8Ap5CyD2iKK7AqLqbmW7vKlCQ=\nR:operations.go\na:0:0:444\nZ:Q18/ARjeGWyRgE8k8hvP9VuN4Z5Eo=\nR:version.go\na:0:0:444\nZ:Q1drsj4KfW4Gln8Nju251OL58Yydk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2018-01-22/iothub/iothubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WA43dULfnP8ldyD2Fe9aXEDuhlo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2021-10-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2021-10-15/iothub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ROwIhTQO2bjfHNC41J5awxO+rQ8=\nR:client.go\na:0:0:444\nZ:Q1MEGo0EhPoMXwMtSaFJM8dFU+BPk=\nR:dpscertificate.go\na:0:0:444\nZ:Q1h7/b3Zch/hGgSz0QonioR1Us4yM=\nR:enums.go\na:0:0:444\nZ:Q1eaZC8j9jOpmObInHXNgPSjO7I9A=\nR:iotdpsresource.go\na:0:0:444\nZ:Q1U7cxVITbmHkicv09EW4Rl8RDmik=\nR:models.go\na:0:0:444\nZ:Q10Xb52REJJGI2yCj27kdcplkznz0=\nR:operations.go\na:0:0:444\nZ:Q1b65HpFdwK07x3yzUuBiC/4lai4k=\nR:version.go\na:0:0:444\nZ:Q11MYpRGWxYVRXjPqt97vvewbIc18=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2021-10-15/iothub/iothubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XeaDYxYWWKP5uvGku4qOgsrc8bQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2022-02-05\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2022-02-05/iothub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17/1u6n0eZDRnUda6N09Ah29FwkU=\nR:client.go\na:0:0:444\nZ:Q1KJUQeP5NW7ZK8bHEulwO3ZTLk4U=\nR:dpscertificate.go\na:0:0:444\nZ:Q14v9u31vN5v6VDfiFcO1wk98qUiI=\nR:enums.go\na:0:0:444\nZ:Q1eaZC8j9jOpmObInHXNgPSjO7I9A=\nR:iotdpsresource.go\na:0:0:444\nZ:Q1KGYeJqxsjC2qNI4HJ8sXVFqrEPE=\nR:models.go\na:0:0:444\nZ:Q10GURvkm/Qhvl+vqniJHW2yCZ6pY=\nR:operations.go\na:0:0:444\nZ:Q1xJd9nzy9QstMCRvTNeaSLaYWzdQ=\nR:version.go\na:0:0:444\nZ:Q1KkLXbB6wYoCR207WZmJCbX8bsoQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/provisioningservices/mgmt/2022-02-05/iothub/iothubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mCSVYD2wCYRBtTXfQF2bgKczyEU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/purview\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/purview/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/purview/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/purview/mgmt/2021-07-01/purview\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1U6phtzee4TBbFzFnb6cgF1LjI9s=\nR:accounts.go\na:0:0:444\nZ:Q1FYlT08hgnkVESLb+MLz7t10rkc4=\nR:client.go\na:0:0:444\nZ:Q1wo2TFNlxH+VqFL8E/s3KDp9Wz1A=\nR:defaultaccounts.go\na:0:0:444\nZ:Q1OQ7f7d20cUD1dhCEjVih3TlgXtk=\nR:enums.go\na:0:0:444\nZ:Q1pznDHgzZbN8jfny9deofD+mSSIA=\nR:models.go\na:0:0:444\nZ:Q1UG4BkI68YTTG0Hu/Stdy6yeQ7i8=\nR:operations.go\na:0:0:444\nZ:Q1kjOhnG4aQ/aogC26ZoF5KpsOArk=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1GgdeyjcWXz5BvPHLVyin1uKjR8M=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1EK80IM6p6QQvU4DaYEzHXuuec2g=\nR:version.go\na:0:0:444\nZ:Q1J4XvxkDbZN/HQOS3PlUkhXkyqIY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/purview/mgmt/2021-07-01/purview/purviewapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IeRGY78265nRBFkucm7hKHb10iQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-06-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1K/etd5qqBC6gbr/d5Gr3jVvPpNA=\nR:backups.go\na:0:0:444\nZ:Q10KqTJ7EvEcUXWbZk+h8EbIWlie0=\nR:client.go\na:0:0:444\nZ:Q1SRJ0lZxgaE0nSfxji2lk8UzdOjs=\nR:engines.go\na:0:0:444\nZ:Q1Sk559YQtaXVjV4JYjbjDZNlIT+Q=\nR:enums.go\na:0:0:444\nZ:Q1PoJdYqRBrsW02zWie15c9ZcahnQ=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1M2+gYjpMXuFzzzG5Y1Oa1+I1gMw=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q15ytloF0gUnQAM+OetSbEYVyjAOw=\nR:jobcancellations.go\na:0:0:444\nZ:Q1iXm0WRsXTExiPO8H9Q/X/VkBfLE=\nR:jobdetails.go\na:0:0:444\nZ:Q1PyWzXjlfKtAHshtkDHlhu2q55Vw=\nR:joboperationresults.go\na:0:0:444\nZ:Q1drrU0K1wEFhOxz6ncdNQEHIymSI=\nR:jobs.go\na:0:0:444\nZ:Q1ByEnT1ZhOdODPdqiI33b62ZdZjc=\nR:models.go\na:0:0:444\nZ:Q14z71EsZGbLlJ5G93403kLHpXrTU=\nR:operationresults.go\na:0:0:444\nZ:Q1iWOU0twgcgyp/9n19I8IpL+GLxs=\nR:operationstatuses.go\na:0:0:444\nZ:Q1g+1mZWbuFHrJ1bywQ5vE/q8+vp8=\nR:protectableitems.go\na:0:0:444\nZ:Q1bL+XefD1iuCP35CiNHiWRLf7IXs=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1RHPpkzCDP898Xcz4oO7KRdilzQ4=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1qqyX3DaHRFws4t8vnvYYAGYm0zU=\nR:protecteditems.go\na:0:0:444\nZ:Q1d46/wT/oWbyAiUfS2hwNrYK77as=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1iDQyAW+TVEPN02ej7RLjfa/1GwQ=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1l9mMN8UlEGXWNeAZQ7FWfIswrQk=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1dTk7+oYKxtYCm8btydC5DwMTdJ8=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1kEfS2byfZO9sKdrfh8QdnTiduzw=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q13bJg4hn3rFvluSdTkIFpedai87I=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q1AwTo7LjhnWczD8j7pe+tKqJGjjY=\nR:recoverypoints.go\na:0:0:444\nZ:Q1/9ZevhM+xGh2/mawgW8+hLQDS3E=\nR:restores.go\na:0:0:444\nZ:Q1MvHIYF2qDC+y1Y42yA0nC7BLA8E=\nR:version.go\na:0:0:444\nZ:Q1KMeYfYXSCadT9YM1q6b2Z1RJDkA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-06-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1foduE0BgZ4rwae5WjsxtpW4IV58=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-06-01/recoveryservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UTKg3Q10VZFDNwHnp8r5aksVcJE=\nR:client.go\na:0:0:444\nZ:Q10m3MxzAMgfP6wrnSfVyECa9vzns=\nR:enums.go\na:0:0:444\nZ:Q1JUQFD3DEjQTMzvupYwPfKe90M6U=\nR:models.go\na:0:0:444\nZ:Q14ncsO8bmpH83Bc1qUuUMdrCDFCo=\nR:operations.go\na:0:0:444\nZ:Q1pLYqTznrzqBLALCTGQQA5g96utM=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1dbBdkU4+JbrOIdAs5/GrdC0FgSo=\nR:recoveryservices.go\na:0:0:444\nZ:Q16W1LPZYpFPNRBORX3zd13IO1rO8=\nR:registeredidentities.go\na:0:0:444\nZ:Q1VVkQUbcyCYC4WjIXN34c3q+GIx8=\nR:replicationusages.go\na:0:0:444\nZ:Q1/ZVBd5deNNDPEihqkXA0AIDO9E8=\nR:usages.go\na:0:0:444\nZ:Q1Wl5g11rm1sf96H5mAiZ2LjvLioA=\nR:vaultcertificates.go\na:0:0:444\nZ:Q1TjLyEeh1ymFunRg7dhyqHybpkNE=\nR:vaultextendedinfo.go\na:0:0:444\nZ:Q1ADOLTGQiMvo2LLiq4IZtv6za8kk=\nR:vaults.go\na:0:0:444\nZ:Q1jB/MW/rJP9dcRdxsqaJsUZyBtQo=\nR:version.go\na:0:0:444\nZ:Q1BqmjXQrfRLp2bpDsbLGJwIZm8fY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-06-01/recoveryservices/recoveryservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12HLlc+OBV05RHzbQdN7WnEF0DWg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-08-10\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-08-10/siterecovery\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uVYxrPqNn8W2qgcngd/JPBbhURY=\nR:client.go\na:0:0:444\nZ:Q19I+McbsYVTVCfLLZFDSmAnZ/BaM=\nR:enums.go\na:0:0:444\nZ:Q1sVbz8UMkmLzKPpGAKNmIu9BS8uM=\nR:models.go\na:0:0:444\nZ:Q1xBpUCU6TiBXRnb+hLTYkljjztC0=\nR:operations.go\na:0:0:444\nZ:Q1ToGm2k9FCAE/rVI1nFFeu0EV02c=\nR:recoverypoints.go\na:0:0:444\nZ:Q1lBRwf4RTvXdRLw18oSaYuKydrtw=\nR:replicationalertsettings.go\na:0:0:444\nZ:Q1gB090u392DwIr2iYE2XCYfVkR3o=\nR:replicationevents.go\na:0:0:444\nZ:Q1nAvcjv1SiGJ2V3JtWGyTCP/qHHA=\nR:replicationfabrics.go\na:0:0:444\nZ:Q1vjhGR4bRCFCiohp/E7f+mESzozc=\nR:replicationjobs.go\na:0:0:444\nZ:Q1p9uctZeg4Dv9fFJwzpKLu1T6t7E=\nR:replicationlogicalnetworks.go\na:0:0:444\nZ:Q1JxSxdMBCri+KuymR8D7mZjq/UNc=\nR:replicationnetworkmappings.go\na:0:0:444\nZ:Q1GLbTllD4MmDWl/cd+DuPxpXgTR8=\nR:replicationnetworks.go\na:0:0:444\nZ:Q10ja8CiWdsjAvkBuENTovH/vWtfY=\nR:replicationpolicies.go\na:0:0:444\nZ:Q1DMDt/VnBaZcCS55WM302Acrjk4s=\nR:replicationprotectableitems.go\na:0:0:444\nZ:Q1TbOoLWf3Hf+E5pa/H6/TkWBQkNg=\nR:replicationprotecteditems.go\na:0:0:444\nZ:Q1TmCltwcsY08TU3UzukNhYerWW54=\nR:replicationprotectioncontainermappings.go\na:0:0:444\nZ:Q1KIQbjTKjkHtBBS6BPPI6c6+GPKA=\nR:replicationprotectioncontainers.go\na:0:0:444\nZ:Q1iP27ymh2bg9AbDh7/wq4VCu8RnI=\nR:replicationrecoveryplans.go\na:0:0:444\nZ:Q1ES7Pb3I7znV0/VZjYi98SBO2T08=\nR:replicationrecoveryservicesproviders.go\na:0:0:444\nZ:Q1mpCxC1EojeUbGsEQgz8GSV9wBbU=\nR:replicationstorageclassificationmappings.go\na:0:0:444\nZ:Q1TN8pO+kDvel126vZuRFZgllpBvo=\nR:replicationstorageclassifications.go\na:0:0:444\nZ:Q1G81KO7R9LY6GgNhuMfxi6P557qY=\nR:replicationvaulthealth.go\na:0:0:444\nZ:Q1aGK3rDxysUwEJEkslrZjEnS/uJo=\nR:replicationvcenters.go\na:0:0:444\nZ:Q1RRQFn30ySGdrIyI0HgK0emygyrw=\nR:version.go\na:0:0:444\nZ:Q1dRkzwp4YCG6L7UjWYEEtMQtdR1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-08-10/siterecovery/siterecoveryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qLgRUnZJWD63+kktLmdeoht4Td8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-12-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aPhvQn/ZLFtUNn80xnvt4czKUIE=\nR:backups.go\na:0:0:444\nZ:Q1XbmRl582AYHmU84SZU3dhrWsojc=\nR:client.go\na:0:0:444\nZ:Q1L1Tf5T00AAgIFav9vyvtkm2KMTI=\nR:engines.go\na:0:0:444\nZ:Q1WzF2DAsjjv4TtVao539Fha1lX6k=\nR:enums.go\na:0:0:444\nZ:Q1chtrlZZQGb8DlBHgSYt2/ZP31Gc=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1+wdTT78v3a0C4N9gKYxkWTk1Uds=\nR:models.go\na:0:0:444\nZ:Q1Kej75jD39S8l93CLxPO+vCLyPyA=\nR:operationresults.go\na:0:0:444\nZ:Q19gFXo4aCLqnF+YbY827arhlzPnw=\nR:operationstatuses.go\na:0:0:444\nZ:Q1k8KMfsHt1kWISamA54lMh8T+3/Q=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1kvWkyvVQn+77ZY7/ZfNKnsyvyN0=\nR:protectableitems.go\na:0:0:444\nZ:Q10/cEkj348bmdEme+S5/UB9AAa30=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1bRvkqAsh59zwwYlE6dUKf+ds468=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1oCBSeLif+EeJ0D0wS3r78rvjdZ0=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1KQFAyh9QDBS0pLFOGLOmCRMkwRc=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1aY5nqo4TaEPTsEHaAbI3o9qsTyc=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1tgtdDJ9XhfmKNT6JNnA3srCgA/Q=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1PxEtVLqbbN9cGQXxIfpidjWLvW0=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q19xR3gAAgshoz1++q2ys+nuuDw4w=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1t2gg1dHRJN9l0YP/GOBRVNWBEks=\nR:securitypins.go\na:0:0:444\nZ:Q1SD1y8xOuhCmSqx7uEbfChvOx050=\nR:version.go\na:0:0:444\nZ:Q1MRam9GzUd9H/4X4L0j5SKDVOPKw=\nR:workloaditems.go\na:0:0:444\nZ:Q1x8ilYV4JFLO36bRBbOt7e2ef2Uk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2016-12-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xGdaZQoM5NaMvOP6MLQihJyQq00=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-01-10\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-01-10/siterecovery\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1V5SkSwpVT2YLGW5ZPBJoJWExnKo=\nR:client.go\na:0:0:444\nZ:Q1tnL4FZsyVkVzyfyhMNI9cbwSLx4=\nR:enums.go\na:0:0:444\nZ:Q1sGybP66DCc86b02bdEkd0LYJ9Vs=\nR:migrationrecoverypoints.go\na:0:0:444\nZ:Q13zjq20Kp6TWy5MUvahCtJmg8ZPo=\nR:models.go\na:0:0:444\nZ:Q1f7vy9lqqhTDdzEh4ECARq1+Goko=\nR:operations.go\na:0:0:444\nZ:Q1m9GIaLSVCPai47PSkpUX+fEXfdw=\nR:recoverypoints.go\na:0:0:444\nZ:Q1XIuz378gX4HAPoN+OfsqoAS5YNU=\nR:replicationalertsettings.go\na:0:0:444\nZ:Q1KlEGmvAQnDBPo5BSI1JJ61CRSi0=\nR:replicationevents.go\na:0:0:444\nZ:Q1St/t+3ZTBGVQjqV7o2sQiwv7aVE=\nR:replicationfabrics.go\na:0:0:444\nZ:Q1F+ILiFRerVnQgrJiLrqrswTV/GA=\nR:replicationjobs.go\na:0:0:444\nZ:Q17owq0OZVhb3b2t20gQO/I7izIHs=\nR:replicationlogicalnetworks.go\na:0:0:444\nZ:Q1evCoGMnoZYGMZMz3qA8qmyCoW4w=\nR:replicationmigrationitems.go\na:0:0:444\nZ:Q1QAbtPSlgVYNShpA4ArokHeZ/7LA=\nR:replicationnetworkmappings.go\na:0:0:444\nZ:Q1TfzG9fD1lUsn02ohskUEqGlxcFQ=\nR:replicationnetworks.go\na:0:0:444\nZ:Q1aGUAG5SsDLNwDzCdMDXVxApIUxM=\nR:replicationpolicies.go\na:0:0:444\nZ:Q1IB27vDjKT4q58Bt6Jed2pnvZpEw=\nR:replicationprotectableitems.go\na:0:0:444\nZ:Q1nZxOXz3jaDVGZPQtID91l7BT0hk=\nR:replicationprotecteditems.go\na:0:0:444\nZ:Q1BYMYAWL1ZomNabs5XET+nyCATmM=\nR:replicationprotectioncontainermappings.go\na:0:0:444\nZ:Q1Uh472qPX1bbLplKjb6rsBjNxXPc=\nR:replicationprotectioncontainers.go\na:0:0:444\nZ:Q1icG/Q47thduobJ8QN/h0Aa9npQ0=\nR:replicationrecoveryplans.go\na:0:0:444\nZ:Q18NNtbWKVAF5qSp1LTcY2SCTbSEU=\nR:replicationrecoveryservicesproviders.go\na:0:0:444\nZ:Q1kTU6orGGCTmsmHwBHJ2GdpAsnPs=\nR:replicationstorageclassificationmappings.go\na:0:0:444\nZ:Q1VqEA3XyhjxSFGbjzytbL3Mgmy3I=\nR:replicationstorageclassifications.go\na:0:0:444\nZ:Q1bwRVAT/TMfKKdBgj7e+EADFb9jA=\nR:replicationvaulthealth.go\na:0:0:444\nZ:Q1fa0Jm6/BGSqsA/o+NI7FCu3z+8Y=\nR:replicationvcenters.go\na:0:0:444\nZ:Q1M/wKTaqq3uPh/1hrqDwGTbXH1pA=\nR:targetcomputesizes.go\na:0:0:444\nZ:Q1ZlShuYgBn1eZMMq5CtCNskfE2sE=\nR:version.go\na:0:0:444\nZ:Q1CecUQsvoP3HpUWkcNVMzjcdmyHw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-01-10/siterecovery/siterecoveryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14pO0aiIf5HYu6FtYX8oYL1ec7uQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-07-10\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-07-10/siterecovery\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1edD3kt8YDFFTnJbw+k19PFVwPeo=\nR:client.go\na:0:0:444\nZ:Q1YopNQ8paPMFPV1F8vNmd9KKYwmI=\nR:enums.go\na:0:0:444\nZ:Q1Z4wpdm0zpD6YIDN4q3d/m5IKGnM=\nR:migrationrecoverypoints.go\na:0:0:444\nZ:Q1akKAxbGfPvrOremV20jOupNuuTY=\nR:models.go\na:0:0:444\nZ:Q1Hojsd26rQyabCEinUre9/wrr8UA=\nR:operations.go\na:0:0:444\nZ:Q1c0VndqRHO1STSb6ueETiUPGkF7Q=\nR:recoverypoints.go\na:0:0:444\nZ:Q1Mj34/wL96toBWf0pSqq2MAZAHu8=\nR:replicationalertsettings.go\na:0:0:444\nZ:Q1wxhHDMgW8jMLhwHE6DUk3ombNjE=\nR:replicationeligibilityresults.go\na:0:0:444\nZ:Q1RguTodCeoVhyd+MPXrYU/s0NwMM=\nR:replicationevents.go\na:0:0:444\nZ:Q1hQQcrlWjqSatkskZ3YNjbBVur8I=\nR:replicationfabrics.go\na:0:0:444\nZ:Q1n+yVaSDG24/S8Bayiup0tKI1IXs=\nR:replicationjobs.go\na:0:0:444\nZ:Q1D1y3giSywxySgvSZWu+aB8iHmQo=\nR:replicationlogicalnetworks.go\na:0:0:444\nZ:Q1X6xBAMaFN+mtdywAsA4Q5qyvLSw=\nR:replicationmigrationitems.go\na:0:0:444\nZ:Q1T1jV1aOYG04aoXdse8XHWQqpy1I=\nR:replicationnetworkmappings.go\na:0:0:444\nZ:Q1igpHNYItQgbVTwxBGp6aLjr7Obo=\nR:replicationnetworks.go\na:0:0:444\nZ:Q1VZk76cs2dBUr54vscHIPJ07YRQs=\nR:replicationpolicies.go\na:0:0:444\nZ:Q1Fy64LW0WsRssZXUWkilLMeuQL64=\nR:replicationprotectableitems.go\na:0:0:444\nZ:Q1btXPgkq7am3LI3E/dZSaN0djJ+s=\nR:replicationprotecteditems.go\na:0:0:444\nZ:Q1jn64mftL7HxUeLZzsdQhrqi/9h8=\nR:replicationprotectioncontainermappings.go\na:0:0:444\nZ:Q1tWFzrgN9pbstXbZXj+s0gBrip1E=\nR:replicationprotectioncontainers.go\na:0:0:444\nZ:Q1EwcZ4Ecw7v4gjSdzsl+s9Iw5Zdo=\nR:replicationprotectionintents.go\na:0:0:444\nZ:Q1F3G7DLtYTzVvOfrsf4dH1RPMtRE=\nR:replicationrecoveryplans.go\na:0:0:444\nZ:Q1XU+ndeI/P5VVy4BmCSsaViizVIc=\nR:replicationrecoveryservicesproviders.go\na:0:0:444\nZ:Q1PPyCjBckMUWZxhuS4Xv/yM8eXWg=\nR:replicationstorageclassificationmappings.go\na:0:0:444\nZ:Q14gIL+74GIOOfF+FTh723Jgq+H7k=\nR:replicationstorageclassifications.go\na:0:0:444\nZ:Q1bRV+CzhO1THHxXzIin1O4cdoAQU=\nR:replicationvaulthealth.go\na:0:0:444\nZ:Q1o708ON0gzAAmTeZY6xfuAti6vs8=\nR:replicationvaultsetting.go\na:0:0:444\nZ:Q11N0ED/Bv3IeutBrYTx48EXHm74U=\nR:replicationvcenters.go\na:0:0:444\nZ:Q1nlSDeuayUHE/ft1kN9qWTfsIhVo=\nR:supportedoperatingsystems.go\na:0:0:444\nZ:Q1Cr7Vu9Z6D01fhLH5Cgq3UibFF74=\nR:targetcomputesizes.go\na:0:0:444\nZ:Q1nNnHmTRhPWgTNa6BAXjMMsaVwCE=\nR:version.go\na:0:0:444\nZ:Q1a1simYdPL6TVPEUeJs8uDTEs9Gc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2018-07-10/siterecovery/siterecoveryapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1P1/GMmcAH+1Rv/32gBI/j/7cqlM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-05-13\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-05-13/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BZC2G+KmQrfKMDdP55QxIDUsWXA=\nR:backups.go\na:0:0:444\nZ:Q1XbmRl582AYHmU84SZU3dhrWsojc=\nR:client.go\na:0:0:444\nZ:Q1pNYNEJC7KYjzRShb72y635ED1Bo=\nR:engines.go\na:0:0:444\nZ:Q1WzF2DAsjjv4TtVao539Fha1lX6k=\nR:enums.go\na:0:0:444\nZ:Q1Gwe5MZMS98bIw05wR/XN7ALTra0=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1iEU/ApBt9zLLzbz9ZcZiywnsZzM=\nR:featuresupport.go\na:0:0:444\nZ:Q1WzosXBUgpO6hv3UT1lyaNo0il+w=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1+wdTT78v3a0C4N9gKYxkWTk1Uds=\nR:jobcancellations.go\na:0:0:444\nZ:Q1rJc8ZK+P5hk4Lqqjn4PzHJ7NTkk=\nR:jobdetails.go\na:0:0:444\nZ:Q1L7aAFIPzkvOGIZZkoTZc+c6SpWQ=\nR:joboperationresults.go\na:0:0:444\nZ:Q1TV6Y624XWvsCLA7nq9v2yVxNwKc=\nR:jobs.go\na:0:0:444\nZ:Q16Q8KTm2PlsrC72Rd8vi0pRcM/M0=\nR:jobsgroup.go\na:0:0:444\nZ:Q1JEdxN24F4mDuqncPTkvXhSLoq9s=\nR:models.go\na:0:0:444\nZ:Q12B9ckmM0fuaWOqnJKHzil42xSpk=\nR:operation.go\na:0:0:444\nZ:Q14yWoFCM4cWXxkONmvWFGP9VSs4U=\nR:operationresults.go\na:0:0:444\nZ:Q19gFXo4aCLqnF+YbY827arhlzPnw=\nR:operations.go\na:0:0:444\nZ:Q1cpr+aKaQcrddNgy55tuwoBIwGEg=\nR:operationstatuses.go\na:0:0:444\nZ:Q1k8KMfsHt1kWISamA54lMh8T+3/Q=\nR:policies.go\na:0:0:444\nZ:Q1iXXGLrhNvDj+VEEfHzR/F734kfw=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1kvWkyvVQn+77ZY7/ZfNKnsyvyN0=\nR:protectableitems.go\na:0:0:444\nZ:Q10/cEkj348bmdEme+S5/UB9AAa30=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1QTA1TIEKml+tXSqrkfCo56fFQ/k=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1bRvkqAsh59zwwYlE6dUKf+ds468=\nR:protecteditems.go\na:0:0:444\nZ:Q1KEKxGDQfYaKdlzbWkX+mZ9PX43I=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q1IV6kPLUwu1q+n6MjBzyrsl22LNE=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1oCBSeLif+EeJ0D0wS3r78rvjdZ0=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1KQFAyh9QDBS0pLFOGLOmCRMkwRc=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1aY5nqo4TaEPTsEHaAbI3o9qsTyc=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1tgtdDJ9XhfmKNT6JNnA3srCgA/Q=\nR:protectionintent.go\na:0:0:444\nZ:Q1yUIXmr6ZxBdW2mTLKMnDKD98RT4=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1db69n6rkKaMGC8CCoC/DDUagYaI=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1lXiWkLmirRlXzhXLSF0lL2KfIuU=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1WDuybZ+Fz3dHZ22qkhWIFG5sj44=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q19xR3gAAgshoz1++q2ys+nuuDw4w=\nR:recoverypoints.go\na:0:0:444\nZ:Q1KOuy7Kjd0DHDR9qyK93HV/B7Fog=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1t2gg1dHRJN9l0YP/GOBRVNWBEks=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1UPMcmqRRIG8RarOoSC090JbIZA0=\nR:restores.go\na:0:0:444\nZ:Q1EUv0km2w4OSfC8KPXzVgpof8b7c=\nR:securitypins.go\na:0:0:444\nZ:Q1SD1y8xOuhCmSqx7uEbfChvOx050=\nR:status.go\na:0:0:444\nZ:Q1Yulk/YbWxjtUt62pAdFS4pkB8kY=\nR:usagesummaries.go\na:0:0:444\nZ:Q1Ir66TwjCQi5Y0x57ac+8u/6WtpE=\nR:version.go\na:0:0:444\nZ:Q1BCqlz2iAUcN9Q+cr8ssX8j3G4jI=\nR:workloaditems.go\na:0:0:444\nZ:Q1x8ilYV4JFLO36bRBbOt7e2ef2Uk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-05-13/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EvBsIgONewcdfaQTGgwmnFD976U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-06-15/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Mz4rokVboPJ2zI4sktAwLsdl3no=\nR:backups.go\na:0:0:444\nZ:Q1XbmRl582AYHmU84SZU3dhrWsojc=\nR:client.go\na:0:0:444\nZ:Q1pNYNEJC7KYjzRShb72y635ED1Bo=\nR:engines.go\na:0:0:444\nZ:Q1WzF2DAsjjv4TtVao539Fha1lX6k=\nR:enums.go\na:0:0:444\nZ:Q1XPt65aHPz1RclbkTNYPiVZk4Oko=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q106zob7BynR3d0Q4d6bWGjuvAulo=\nR:featuresupport.go\na:0:0:444\nZ:Q1WzosXBUgpO6hv3UT1lyaNo0il+w=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1+wdTT78v3a0C4N9gKYxkWTk1Uds=\nR:jobcancellations.go\na:0:0:444\nZ:Q1Znj4HK1NqgzJYwKCFO2WUOB2h/o=\nR:jobdetails.go\na:0:0:444\nZ:Q1YcGl4HvEgyR5xXVHAQE/N9kMa+g=\nR:joboperationresults.go\na:0:0:444\nZ:Q1l1mDxxjUz69Jd/xVns0dRGI9+Bo=\nR:jobs.go\na:0:0:444\nZ:Q1JQUflnT0MfsCS/biWhB9oQn4YSI=\nR:jobsgroup.go\na:0:0:444\nZ:Q1Cf8BeAgBZFIY7pSQgojSSdC70Qc=\nR:models.go\na:0:0:444\nZ:Q1cp9I05j+mnDGCbgPS4rorMO/m1Y=\nR:operation.go\na:0:0:444\nZ:Q18PltXLjXRD7msOp0wZNrwDdrpgI=\nR:operationresults.go\na:0:0:444\nZ:Q19gFXo4aCLqnF+YbY827arhlzPnw=\nR:operations.go\na:0:0:444\nZ:Q1cpr+aKaQcrddNgy55tuwoBIwGEg=\nR:operationstatuses.go\na:0:0:444\nZ:Q1k8KMfsHt1kWISamA54lMh8T+3/Q=\nR:policies.go\na:0:0:444\nZ:Q1Z4LBFanejiWy0fccBFOVA3/qBuY=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1kvWkyvVQn+77ZY7/ZfNKnsyvyN0=\nR:protectableitems.go\na:0:0:444\nZ:Q10/cEkj348bmdEme+S5/UB9AAa30=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1b4OaMjoR2FwLuDcy8SdYWB8tQfw=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1bRvkqAsh59zwwYlE6dUKf+ds468=\nR:protecteditems.go\na:0:0:444\nZ:Q1NAE6y9XWdKi73oTRPqQ/qqTt8oI=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q18my3S4DmTlbLeFF9tDd0uLf5FXs=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1oCBSeLif+EeJ0D0wS3r78rvjdZ0=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1KQFAyh9QDBS0pLFOGLOmCRMkwRc=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1aY5nqo4TaEPTsEHaAbI3o9qsTyc=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1tgtdDJ9XhfmKNT6JNnA3srCgA/Q=\nR:protectionintent.go\na:0:0:444\nZ:Q1yUIXmr6ZxBdW2mTLKMnDKD98RT4=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1db69n6rkKaMGC8CCoC/DDUagYaI=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1AiQne/bC9NBDF4h6FyXHGM08/R0=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1kC6uIfh5Rq5jVSLkkkmSunmEBbI=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q19xR3gAAgshoz1++q2ys+nuuDw4w=\nR:recoverypoints.go\na:0:0:444\nZ:Q1dujGnYXk2gOJ7kWzf2d8s3xMfxA=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1t2gg1dHRJN9l0YP/GOBRVNWBEks=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1zdEez92jKDd0WMIjEqa9z1PVy74=\nR:restores.go\na:0:0:444\nZ:Q15sJSJe1LybUWRVG1u8xGpbN1kCk=\nR:securitypins.go\na:0:0:444\nZ:Q1SD1y8xOuhCmSqx7uEbfChvOx050=\nR:status.go\na:0:0:444\nZ:Q1Yulk/YbWxjtUt62pAdFS4pkB8kY=\nR:usagesummaries.go\na:0:0:444\nZ:Q1Ir66TwjCQi5Y0x57ac+8u/6WtpE=\nR:version.go\na:0:0:444\nZ:Q1kO88Di1WCvY9lOZxQU3zpg/7YZM=\nR:workloaditems.go\na:0:0:444\nZ:Q1x8ilYV4JFLO36bRBbOt7e2ef2Uk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2019-06-15/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jWw/omz3JoEymZp2MLL6clZ6tJE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2020-02-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2020-02-02/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YQTYXJlqN9R3xPyqZxHeoOyLJJI=\nR:backups.go\na:0:0:444\nZ:Q1XbmRl582AYHmU84SZU3dhrWsojc=\nR:client.go\na:0:0:444\nZ:Q1jBXtKoab45JhEk4O/+ztLWUuYBI=\nR:engines.go\na:0:0:444\nZ:Q1WzF2DAsjjv4TtVao539Fha1lX6k=\nR:enums.go\na:0:0:444\nZ:Q1gLhy3CP9Kj0ePtS5ZajxgGx9TXQ=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q106zob7BynR3d0Q4d6bWGjuvAulo=\nR:featuresupport.go\na:0:0:444\nZ:Q1WzosXBUgpO6hv3UT1lyaNo0il+w=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1+wdTT78v3a0C4N9gKYxkWTk1Uds=\nR:jobcancellations.go\na:0:0:444\nZ:Q1Znj4HK1NqgzJYwKCFO2WUOB2h/o=\nR:jobdetails.go\na:0:0:444\nZ:Q1YcGl4HvEgyR5xXVHAQE/N9kMa+g=\nR:joboperationresults.go\na:0:0:444\nZ:Q1l1mDxxjUz69Jd/xVns0dRGI9+Bo=\nR:jobs.go\na:0:0:444\nZ:Q1JQUflnT0MfsCS/biWhB9oQn4YSI=\nR:jobsgroup.go\na:0:0:444\nZ:Q1Cf8BeAgBZFIY7pSQgojSSdC70Qc=\nR:models.go\na:0:0:444\nZ:Q1NljifqGH2fCRs1N9Bv35Co+cyiU=\nR:operation.go\na:0:0:444\nZ:Q18PltXLjXRD7msOp0wZNrwDdrpgI=\nR:operationresults.go\na:0:0:444\nZ:Q19gFXo4aCLqnF+YbY827arhlzPnw=\nR:operations.go\na:0:0:444\nZ:Q1cpr+aKaQcrddNgy55tuwoBIwGEg=\nR:operationstatuses.go\na:0:0:444\nZ:Q1k8KMfsHt1kWISamA54lMh8T+3/Q=\nR:policies.go\na:0:0:444\nZ:Q1Z4LBFanejiWy0fccBFOVA3/qBuY=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1ggCgJQIcHmHJto3BwKTjHf85TvE=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1kvWkyvVQn+77ZY7/ZfNKnsyvyN0=\nR:protectableitems.go\na:0:0:444\nZ:Q10/cEkj348bmdEme+S5/UB9AAa30=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1b4OaMjoR2FwLuDcy8SdYWB8tQfw=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1bRvkqAsh59zwwYlE6dUKf+ds468=\nR:protecteditems.go\na:0:0:444\nZ:Q1NAE6y9XWdKi73oTRPqQ/qqTt8oI=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q18my3S4DmTlbLeFF9tDd0uLf5FXs=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1oCBSeLif+EeJ0D0wS3r78rvjdZ0=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1KQFAyh9QDBS0pLFOGLOmCRMkwRc=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1aY5nqo4TaEPTsEHaAbI3o9qsTyc=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1tgtdDJ9XhfmKNT6JNnA3srCgA/Q=\nR:protectionintent.go\na:0:0:444\nZ:Q1yUIXmr6ZxBdW2mTLKMnDKD98RT4=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1db69n6rkKaMGC8CCoC/DDUagYaI=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1AiQne/bC9NBDF4h6FyXHGM08/R0=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1kC6uIfh5Rq5jVSLkkkmSunmEBbI=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q19xR3gAAgshoz1++q2ys+nuuDw4w=\nR:recoverypoints.go\na:0:0:444\nZ:Q1dujGnYXk2gOJ7kWzf2d8s3xMfxA=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1t2gg1dHRJN9l0YP/GOBRVNWBEks=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1zdEez92jKDd0WMIjEqa9z1PVy74=\nR:restores.go\na:0:0:444\nZ:Q15sJSJe1LybUWRVG1u8xGpbN1kCk=\nR:securitypins.go\na:0:0:444\nZ:Q1SD1y8xOuhCmSqx7uEbfChvOx050=\nR:status.go\na:0:0:444\nZ:Q1Yulk/YbWxjtUt62pAdFS4pkB8kY=\nR:usagesummaries.go\na:0:0:444\nZ:Q1Ir66TwjCQi5Y0x57ac+8u/6WtpE=\nR:version.go\na:0:0:444\nZ:Q1sKdaVNE7XqGc8kLIdqTX/8+WjC8=\nR:workloaditems.go\na:0:0:444\nZ:Q1x8ilYV4JFLO36bRBbOt7e2ef2Uk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2020-02-02/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1avzR95XkGElyrslyvoPlvXox/2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-01-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1PyClKGeT5NcsO/iXA1zou9hE6pI=\nR:aadproperties.go\na:0:0:444\nZ:Q19xJclzccRggnqcxWuD6d+LimuDc=\nR:backups.go\na:0:0:444\nZ:Q1Yl2JNh4AIqTEHMHdShK8GlE+t68=\nR:bmspreparedatamoveoperationresult.go\na:0:0:444\nZ:Q1PElFO1alrVmXPUU567XtZSZnBMU=\nR:client.go\na:0:0:444\nZ:Q1xfkdtavEOJjKPhu12tk/+ftTEt8=\nR:crossregionrestore.go\na:0:0:444\nZ:Q1vMNLCQmCjqD7O0b1prRNs53Izrk=\nR:crrjobdetails.go\na:0:0:444\nZ:Q12jA1jgdyYztUWOoFKK9XsIlkyaU=\nR:crrjobs.go\na:0:0:444\nZ:Q1mM/1hwbgB/jN1eb61JwFe0EaWXg=\nR:crroperationresults.go\na:0:0:444\nZ:Q1LRxjzP+NjV4HDc1kkeOkEHEN5P0=\nR:crroperationstatus.go\na:0:0:444\nZ:Q1XzYLY4HlH/h4ZCyC93YIupGPKIA=\nR:engines.go\na:0:0:444\nZ:Q1qFR7tSUOn2S3peYxsBVrAmBZxCY=\nR:enums.go\na:0:0:444\nZ:Q1L9mU24Qz/gaU48g2d63zwcfr6eY=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1KM4hb9yUMqrcnkPLdOJwWSzHCiE=\nR:featuresupport.go\na:0:0:444\nZ:Q1WzosXBUgpO6hv3UT1lyaNo0il+w=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1JFZXLqi/rDRegvkiWrf3bCq0y5A=\nR:jobcancellations.go\na:0:0:444\nZ:Q1iiY0dVneqZWpoDaLZSPKZeElnJc=\nR:jobdetails.go\na:0:0:444\nZ:Q1yeoAGjYRHVO9gYMv+JS6JPWOuD8=\nR:joboperationresults.go\na:0:0:444\nZ:Q1Bmh8jF7A1vfIf/cvBmSn4rxRYdI=\nR:jobs.go\na:0:0:444\nZ:Q1rHRqv5y5kR386uTXkDLmmg7/aiQ=\nR:jobsgroup.go\na:0:0:444\nZ:Q1KEH8OZTieWyBHOiEw6kMC/1+R7s=\nR:models.go\na:0:0:444\nZ:Q1lowCYrNjnLYNq7N10fY+FLCR+6M=\nR:operation.go\na:0:0:444\nZ:Q1L92j/R08VzcbYwoFN3G+gjo/uHo=\nR:operationresults.go\na:0:0:444\nZ:Q1pZ9M92CrpDnEsmE6VCkweniyIYw=\nR:operations.go\na:0:0:444\nZ:Q1cpr+aKaQcrddNgy55tuwoBIwGEg=\nR:operationstatuses.go\na:0:0:444\nZ:Q1ATlY44LbOSvMsow4PdPHoRByEuw=\nR:policies.go\na:0:0:444\nZ:Q1+YLczfZgxEpI35ITAtFKDCqohhw=\nR:privateendpoint.go\na:0:0:444\nZ:Q1KmR6XkyHizCOlLziLb4E4Xl2yyM=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1NnV/7UhBc3QR43Zk+zTTvuTk8QY=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1eTKTtEXeirRA/PvezhijdWABx6E=\nR:protectableitems.go\na:0:0:444\nZ:Q1MAWuruANRdxkX7qipH0E0COrBpQ=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1bf9MNPzD8Q9tb42J6h0X6CRykN8=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1h5mq3esjiKeCBdJU4cvQT2+yWAw=\nR:protecteditems.go\na:0:0:444\nZ:Q1SxKZ65Bu9m2q6/KWv7tSI/vM7qg=\nR:protecteditemscrr.go\na:0:0:444\nZ:Q1ZRxTl2Y979EzBYmhIqZoj/67Wgs=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q1ohAQibVKl/7tItU2XI0unZK/Mps=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1xzqKgPP4b/Otb+5cdpTEpJe78o0=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1TB45YPXM0QRPJXcg1fxeHnlLEKw=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1eRbWRcAnGa7quy6XzPIJAClF5Do=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1Jigf4HlnqeEghzjADV0+Rq4MfWs=\nR:protectionintent.go\na:0:0:444\nZ:Q1yUIXmr6ZxBdW2mTLKMnDKD98RT4=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1db69n6rkKaMGC8CCoC/DDUagYaI=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1bOy3quA+5gBs+smnOet1hPvXN2w=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1advgk2eVAIs1ftsAyDXkM4aQpuk=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q1NVKyur9UbydSmqKbllJOvm1kYKc=\nR:recoverypoints.go\na:0:0:444\nZ:Q1zsp3O116YfP7N+25EBEOoIjy2GY=\nR:recoverypointscrr.go\na:0:0:444\nZ:Q1mzLD2+U7JFN+PfEAe39FhpHEirU=\nR:recoverypointsrecommendedformove.go\na:0:0:444\nZ:Q1zSdKo0Na8ELhhyQiM2n0o1JTSSQ=\nR:resourceencryptionconfigs.go\na:0:0:444\nZ:Q1MxhEdb1HzkV7ybvClRIMDTB8sg0=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1RyC0VSkQt/YYSa7iCblzL1xllwU=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1upZ9198Mh+sM5bFhfyZTtpRcswQ=\nR:restores.go\na:0:0:444\nZ:Q166q1UMk2hg+rn6IEixHHte+1KkU=\nR:securitypins.go\na:0:0:444\nZ:Q1QBrUA9NBJe4UCaTuNoQ4/yQ+qfA=\nR:status.go\na:0:0:444\nZ:Q1Yulk/YbWxjtUt62pAdFS4pkB8kY=\nR:usagesummaries.go\na:0:0:444\nZ:Q1Ir66TwjCQi5Y0x57ac+8u/6WtpE=\nR:usagesummariescrr.go\na:0:0:444\nZ:Q13Z3IF0HMKPEbSUL9YDm/HVJPANo=\nR:version.go\na:0:0:444\nZ:Q1a9YR0G0zidK/NkAEin7JHw3G7Ts=\nR:workloaditems.go\na:0:0:444\nZ:Q1x56K2vMaTHsgQyUj129YZtk50fI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-01-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1B1KAA37fmPGUdxTT5fEMZEQvmXg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-07-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1VimLQWsiWL/qmGvx5KxMQeboY3U=\nR:aadproperties.go\na:0:0:444\nZ:Q19xJclzccRggnqcxWuD6d+LimuDc=\nR:backups.go\na:0:0:444\nZ:Q15Bldta1iMwxf6jjFRUQgtx+5lJw=\nR:bmspreparedatamoveoperationresult.go\na:0:0:444\nZ:Q1Bfpcc24uowulvDNtonoiRGC6670=\nR:client.go\na:0:0:444\nZ:Q13Gmax+q7WVSNE60Hjm1y39IenYo=\nR:crossregionrestore.go\na:0:0:444\nZ:Q1vMNLCQmCjqD7O0b1prRNs53Izrk=\nR:crrjobdetails.go\na:0:0:444\nZ:Q12jA1jgdyYztUWOoFKK9XsIlkyaU=\nR:crrjobs.go\na:0:0:444\nZ:Q1mM/1hwbgB/jN1eb61JwFe0EaWXg=\nR:crroperationresults.go\na:0:0:444\nZ:Q1LRxjzP+NjV4HDc1kkeOkEHEN5P0=\nR:crroperationstatus.go\na:0:0:444\nZ:Q1XzYLY4HlH/h4ZCyC93YIupGPKIA=\nR:engines.go\na:0:0:444\nZ:Q1mEqzrES8m+25hBFnS12yhksE4pg=\nR:enums.go\na:0:0:444\nZ:Q1ivsRj5rpiCttW1b/SQRK1Kn2ja0=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1hCNQNVFbvL2vmnClTHuESp8Pebg=\nR:featuresupport.go\na:0:0:444\nZ:Q1eZahaFbmeAv8IUODtdlNPrM4zdY=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1fMeb/pQ/K6/uHv8cmpfQpuZkrNU=\nR:jobcancellations.go\na:0:0:444\nZ:Q1P6KP+FWqJdk7W7QCCepvtrGuxEQ=\nR:jobdetails.go\na:0:0:444\nZ:Q1xs+bUPkLmdTpQkLBLn49nN/R9sA=\nR:joboperationresults.go\na:0:0:444\nZ:Q1n6Rek/UIdaHKaTwh/BgL3gdozP4=\nR:jobs.go\na:0:0:444\nZ:Q1MVaK00iVkaTPlp4MmlkIMJpY5QI=\nR:jobsgroup.go\na:0:0:444\nZ:Q1d2dVOq8eW7ITEYBX7gkqbknlSaM=\nR:models.go\na:0:0:444\nZ:Q14awIS6rveyLOkAC5hkjzhU5D4j4=\nR:operation.go\na:0:0:444\nZ:Q1nIdyLd1avkuh23OnoguuZY+ZoiQ=\nR:operationresults.go\na:0:0:444\nZ:Q1DhVkIh/jMa6hQLvuVzB+JS19yj4=\nR:operations.go\na:0:0:444\nZ:Q156HEnVN2vqclkjIiW65Qqj2IM6A=\nR:operationstatuses.go\na:0:0:444\nZ:Q17+2LOqdex6Bt+y6j0ezVUmJrrlE=\nR:policies.go\na:0:0:444\nZ:Q1qjloTmWjNjG/bk5pyeLdqCpKz5M=\nR:privateendpoint.go\na:0:0:444\nZ:Q1nf5IJ8aWWVyaa4yg9Pml/iiTTC0=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1uUKJSkO8xJliHvh4BGoGuBjUTsw=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1YmINLzLLxbIBOhhkGnzICw/HYvk=\nR:protectableitems.go\na:0:0:444\nZ:Q1UBmPWPgqszU8O2/OtoI6bkp7C8Q=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1tD1DGpZvSRF3/3VhjQ2NI4sNfbo=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1VKJvgIIdgJkVownJtrW01a5z3ec=\nR:protecteditems.go\na:0:0:444\nZ:Q1zGelYvTC0zgLhqGskv2Ljv3+138=\nR:protecteditemscrr.go\na:0:0:444\nZ:Q1ZRxTl2Y979EzBYmhIqZoj/67Wgs=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q1FnCEwMlyo2wuGJpTw4pxlXGF+Yc=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1hE5bembWRUwsDBYfbzjsgo03lJg=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q16HBGfw7M9tZmjRrSiiPttbVXa0g=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1nl63pJb8dZtgUUJjFB0ThQ6zRn8=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1MC04dGPOPCkI/cY8W76l6VKBUag=\nR:protectionintent.go\na:0:0:444\nZ:Q1TcUtW/SfOXet56M/YMUXnFlIIZM=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1s/e0TXcB/4UvrXABUqfbMkrbuDg=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1cbj0SNd4Z1S5O8hOuFe2vrvc2ZE=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1jKHfN+bLMSp+iWaOOXI08D84QD4=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q1lkFo8SPVq8ZMJxwTtiHnnKrecRU=\nR:recoverypoints.go\na:0:0:444\nZ:Q12Q5x85QH7+JwfQbNbJqJU4m+/T8=\nR:recoverypointscrr.go\na:0:0:444\nZ:Q1mzLD2+U7JFN+PfEAe39FhpHEirU=\nR:recoverypointsrecommendedformove.go\na:0:0:444\nZ:Q18n/8EOGRnyl4xvl0+UNddUtLrFo=\nR:resourceencryptionconfigs.go\na:0:0:444\nZ:Q1aWPI08/m1SpPaHUf3GqEkjZNOM8=\nR:resourceguardproxies.go\na:0:0:444\nZ:Q1MBlu/Ar4yHZtYf0xSs58Jf0ZXy8=\nR:resourceguardproxy.go\na:0:0:444\nZ:Q1I/W1vx1yZUyWQwiL9Xmvbs4TsGI=\nR:resourcestorageconfigs.go\na:0:0:444\nZ:Q1RyC0VSkQt/YYSa7iCblzL1xllwU=\nR:resourcestorageconfigsnoncrr.go\na:0:0:444\nZ:Q19/lwllUPjCY5gt87vYIys+O27Q8=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1IY7o/TU5e7S6WiAtcSwDsJ1EiMQ=\nR:restores.go\na:0:0:444\nZ:Q1cmkGJA2AWlBHDrOgzmLGstHj4hE=\nR:securitypins.go\na:0:0:444\nZ:Q1TESQfyDa998B+5VhG5lqv1Dkcdg=\nR:status.go\na:0:0:444\nZ:Q1dthxRqoOLSDO0e4hhTIZh/M7Wpo=\nR:usagesummaries.go\na:0:0:444\nZ:Q1s4aAA1r12FL3cyG1gfmtQGwLvAA=\nR:usagesummariescrr.go\na:0:0:444\nZ:Q13Z3IF0HMKPEbSUL9YDm/HVJPANo=\nR:version.go\na:0:0:444\nZ:Q1BRUAF3ITOxnq4P2t+QKNmcmZc28=\nR:workloaditems.go\na:0:0:444\nZ:Q1zvk/eqtmELs9AQ7xQIF2BV7nnQc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-07-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1K0oHc+I1rqqSuZOdFdkqasBTbg0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-08-01/recoveryservices\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xOvp1XagGb2/E7iEnZ3AvxcoS+4=\nR:client.go\na:0:0:444\nZ:Q1fNqfFfRwXd8UiaM18h3aOWPPZdE=\nR:enums.go\na:0:0:444\nZ:Q1YE/yQisNDGYs4QIhgVyeHIppHHU=\nR:models.go\na:0:0:444\nZ:Q1D6DH2KH4mJyWwg+oPOOCs5sSflI=\nR:operations.go\na:0:0:444\nZ:Q10eRsCtaqPe7yLFW6a7rjhX3xTKw=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Af2uRXr/CadljT2NXwDnZ3sC+ps=\nR:recoveryservices.go\na:0:0:444\nZ:Q1n+XhQt4ZA5z9f5uAd2NtVxOSGgk=\nR:registeredidentities.go\na:0:0:444\nZ:Q1GB67Cn/jQS8aBPrVk+3CuFePb5c=\nR:replicationusages.go\na:0:0:444\nZ:Q1QczmG3FoUAxe3KIFFp7S4lnzGMM=\nR:usages.go\na:0:0:444\nZ:Q1+iVKHXjG97eww+m0ZJTW4A9N5bI=\nR:vaultcertificates.go\na:0:0:444\nZ:Q1oxy+FmFIf1LnLf+BAVGrFBUwDAY=\nR:vaultextendedinfo.go\na:0:0:444\nZ:Q1lRd8Tewajlx6qXe3X8pmhBg2ArQ=\nR:vaults.go\na:0:0:444\nZ:Q1dTzAEh2wBzDajcxQ8Fy3SlylOoc=\nR:version.go\na:0:0:444\nZ:Q1WMuY2LTJmeTNp5X+htUvCJcgbMA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-08-01/recoveryservices/recoveryservicesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XbT0mDmkUW+S4Tq4bWZKlRTEI/c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-12-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1vZ3kqSC8iIESUTEwGmerhsbl/G4=\nR:_meta.json\na:0:0:444\nZ:Q1cgSMmraOw0Ma0jQNjHCNlqZU7A4=\nR:backups.go\na:0:0:444\nZ:Q1Cfd2WHHEbdL/5ribraL9X/3yXRc=\nR:bmspreparedatamoveoperationresult.go\na:0:0:444\nZ:Q1w9dJDYnKio637WyRrnllu/dT0pU=\nR:client.go\na:0:0:444\nZ:Q1PQ/p2eL3etSPeMb+qMF8K/9r1N8=\nR:engines.go\na:0:0:444\nZ:Q1y6DhRR3eW8ngFEHme2XsYdo+5Ag=\nR:enums.go\na:0:0:444\nZ:Q1zBUF8iRkISQYKVxPYQ0KbnuNSpc=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1HVsuQzOdksgOjO/1nnCjTl0HEHc=\nR:featuresupport.go\na:0:0:444\nZ:Q1i3F5B8ydms+8JBm3G4ZHwe5/GJ0=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q14j8Vz9/i4sGQ/siPioABdHTJBU8=\nR:jobcancellations.go\na:0:0:444\nZ:Q1BOoNc3YARzvqU6ZK5+sjg1J2KKo=\nR:jobdetails.go\na:0:0:444\nZ:Q16iuqTJ+AUoNcccg8+/BhF7Ut6Cs=\nR:joboperationresults.go\na:0:0:444\nZ:Q1+W6If3lDaYcxc/hxxLXEKMAS0w4=\nR:jobs.go\na:0:0:444\nZ:Q16ReJLyeaN2RNdRMKgr9SHg7JXeQ=\nR:jobsgroup.go\na:0:0:444\nZ:Q19P2g460Dd/vZxQUzFFu9Q4vV3lM=\nR:models.go\na:0:0:444\nZ:Q1e/GbS+NoGvqlkIue19yr6LMyD5c=\nR:operation.go\na:0:0:444\nZ:Q1MJlwFPWxP2LqYhiEO7BiZvX5p/U=\nR:operationresults.go\na:0:0:444\nZ:Q1Pn3nOcEj8uJZ0zw/Stq/1Goxvc8=\nR:operations.go\na:0:0:444\nZ:Q1iFIaAnWnQElZuoqCBV5/tQuIXvY=\nR:operationstatuses.go\na:0:0:444\nZ:Q1msvqN4fr9bEEqgINdl6O3+5ba/o=\nR:policies.go\na:0:0:444\nZ:Q1xsG7saT+2prQ2oq8kSly32ioC74=\nR:privateendpoint.go\na:0:0:444\nZ:Q1aoSjJYD7pxoSXf6XeT6sJanc3qc=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1KimtKl6jIQDewG4FG7OqHkZ2RvM=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1klR/+sNJKnETkwDEGHH/6kn8dCI=\nR:protectableitems.go\na:0:0:444\nZ:Q1djbrOkbFDFB6m1Lr3lLn2G4Ui0c=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q13sqc98Gz8acu2vUURQPgywqj/zQ=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1/4RY8EkKMFoGT17s9Fz6Cab07h0=\nR:protecteditems.go\na:0:0:444\nZ:Q1jcN1sc/GhLl7Ffj2R/e2gzSuWLk=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q1WkUqeOC2+O09OZ9vfV7LErZgPHU=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q1kn+ZVoxkBxE3akghO5KnZuJ2txI=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q11VncnpHCR7eS19ShIHPYyU3Jhho=\nR:protectioncontainers.go\na:0:0:444\nZ:Q19AmqlUCBhrHiDlxbKvBYcfSJzwM=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1ZFQfFk4PooRoOJio7zrNdwSUlbc=\nR:protectionintent.go\na:0:0:444\nZ:Q1DcsGEx8k6cPjlPfo43GEPYu5J2o=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1f/dnoCObTquW9at2I9iJ7YSJpm0=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1kZ9SDJzHJLfNANG/qNDRMPZN1WU=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1HYa8LddsIF5H5HDcauUWu9t8UgI=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q1cbbLYYDZ8e7jMqzc4KYDICqQlEg=\nR:recoverypoints.go\na:0:0:444\nZ:Q1Lz4uZeALo1e1lqpc8VTEnXbPIOY=\nR:recoverypointsrecommendedformove.go\na:0:0:444\nZ:Q1h5HXn+3SUEb9J1/lF9fouwCqF0w=\nR:resourceencryptionconfigs.go\na:0:0:444\nZ:Q16zTUqMt92kTQAObJgp5XEIzhdoA=\nR:resourceguardproxies.go\na:0:0:444\nZ:Q1jcW4vhfPMPcf5oafYqIM0moBk00=\nR:resourceguardproxy.go\na:0:0:444\nZ:Q14xy0pr5oISRi5/BOCAiInhVgrOc=\nR:resourcestorageconfigsnoncrr.go\na:0:0:444\nZ:Q1DVdqDDWyKwfv4BeeeIog7d9loVM=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q1r/Vs2voytQF2Hkw5yJQtmsWgSp8=\nR:restores.go\na:0:0:444\nZ:Q17ozRR2Xm9L3i/CpPmavibvQcEG0=\nR:securitypins.go\na:0:0:444\nZ:Q1CMJeY6P3anMsPM97Da3LA9NENEk=\nR:status.go\na:0:0:444\nZ:Q15qnQL4Lah9nc49IjLOtycDlJOoY=\nR:usagesummaries.go\na:0:0:444\nZ:Q12CudKI0CPXsabG1Py6bay1nmcBs=\nR:validateoperation.go\na:0:0:444\nZ:Q1Q4L2vt0vhmtH1EzTfh3FbS6weaE=\nR:validateoperationresults.go\na:0:0:444\nZ:Q1EZPYEGRUnMDpVQ5TlH5PdSf+ELA=\nR:validateoperationstatuses.go\na:0:0:444\nZ:Q1BcEpvrSVTvnNbYR0eQev9GC5HeA=\nR:version.go\na:0:0:444\nZ:Q15IsimTfdtdFagJpGdlBYyhDo/nE=\nR:workloaditems.go\na:0:0:444\nZ:Q1roNVwzyEKFiqA9L92G3erK6wV1U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2021-12-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1M7tPMl2tpDMU3q7neLz27UvPwE8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2022-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2022-03-01/backup\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1TTSTzlCVQ+fAx7Mp6g/1V6+yT3Y=\nR:backups.go\na:0:0:444\nZ:Q1SUAImAmRhSxhRNZOrUoGiiuFhFQ=\nR:bmspreparedatamoveoperationresult.go\na:0:0:444\nZ:Q1S4X1PQzQ5Aur0/450/W/mEDeZ38=\nR:client.go\na:0:0:444\nZ:Q1x6ZjK19BtVAhAqlfNpxHBFdFPrE=\nR:engines.go\na:0:0:444\nZ:Q1XgQuwcJbvmrqSH3hJzjBSFjyo6k=\nR:enums.go\na:0:0:444\nZ:Q1WTtePCsU7s3oL8jY5zb8swrhNeI=\nR:exportjobsoperationresults.go\na:0:0:444\nZ:Q1vf4cDl9Gh5gfybvjMSHfxyPlyzg=\nR:featuresupport.go\na:0:0:444\nZ:Q15ORx1QpLdCYNoEyzCmn7gPX+8sM=\nR:itemlevelrecoveryconnections.go\na:0:0:444\nZ:Q1W6VGlA7AMfHiWqEAX9uccuWE9tg=\nR:jobcancellations.go\na:0:0:444\nZ:Q1Oy7dE7HlmoYVEdUP07kQ35PL0Fc=\nR:jobdetails.go\na:0:0:444\nZ:Q1QnJIbRKhrSZMWEGXstyoaAnoDp8=\nR:joboperationresults.go\na:0:0:444\nZ:Q1P/XYAwhs5uHMkcoUPq0Nv/S+T60=\nR:jobs.go\na:0:0:444\nZ:Q10+vPSH9RIcdpO3S5QNhVHMiUw54=\nR:jobsgroup.go\na:0:0:444\nZ:Q1uW2xD5gX6uO2upfnteKagctWXUE=\nR:models.go\na:0:0:444\nZ:Q1YVQ+ZKflnQmGNj/DKx0P+mxNP2c=\nR:operation.go\na:0:0:444\nZ:Q1bKgGObq5WYJAV8N77jAT1qffZrA=\nR:operationresults.go\na:0:0:444\nZ:Q121JVpNm4EoR5IFz4aEVjERBnTxI=\nR:operations.go\na:0:0:444\nZ:Q1AV3ZdhPypj6gmhGTVay1tZSUrDI=\nR:operationstatuses.go\na:0:0:444\nZ:Q1aZ9beIDuem1w6sHgXv3TDbomN+8=\nR:policies.go\na:0:0:444\nZ:Q1SxJl/PlpuLr4zmAjOBXrX2EKfxg=\nR:privateendpoint.go\na:0:0:444\nZ:Q1lX/gk7L1GRlhjzdhtMpoJZVv7n4=\nR:privateendpointconnection.go\na:0:0:444\nZ:Q1Fs8X0Py3Ea55Mevgx7dPmoqNQ6U=\nR:protectablecontainers.go\na:0:0:444\nZ:Q1vZQqgA4mq4pD/G5JNRr20kONTho=\nR:protectableitems.go\na:0:0:444\nZ:Q1btN/3TNdINJHx+MBMfsxUZxU7+8=\nR:protecteditemoperationresults.go\na:0:0:444\nZ:Q1HBlH1niPQbnCo8G7zfz4sgg/e8U=\nR:protecteditemoperationstatuses.go\na:0:0:444\nZ:Q1mLCikQArhBQnl3RnwHZSBus7lt0=\nR:protecteditems.go\na:0:0:444\nZ:Q1YEaQnb60RkH3xOlcchoYu9Yb88Y=\nR:protecteditemsgroup.go\na:0:0:444\nZ:Q1N+gZniqDrLQfiNSiqc5vhC9dXPg=\nR:protectioncontaineroperationresults.go\na:0:0:444\nZ:Q10/DXMPVwdYxAnOqiIkeWERUVEcs=\nR:protectioncontainerrefreshoperationresults.go\na:0:0:444\nZ:Q1CCsV+dqZLrDHe2p0O1ZsHoeaD8M=\nR:protectioncontainers.go\na:0:0:444\nZ:Q1iqe0fIscnR5wk9m8kedFLU0qUOk=\nR:protectioncontainersgroup.go\na:0:0:444\nZ:Q1GoBAcYtH1iUE8zDrewU8JaMFSZU=\nR:protectionintent.go\na:0:0:444\nZ:Q1PIsIZsuNcWYFp0G2YoVfnm4BbUo=\nR:protectionintentgroup.go\na:0:0:444\nZ:Q1725aCxrIFgPOIjvZNYsJjBouU0M=\nR:protectionpolicies.go\na:0:0:444\nZ:Q1N1xDW3P4z/z4sNPzub3iNpNg+DU=\nR:protectionpolicyoperationresults.go\na:0:0:444\nZ:Q1paXrXTkOINcRCvB4obPfh/kDM1E=\nR:protectionpolicyoperationstatuses.go\na:0:0:444\nZ:Q12bSOfSlvKGjhaGuxidejThch8Hk=\nR:recoverypoints.go\na:0:0:444\nZ:Q1L+Ltp76N5PGbqoXZ34MhbNpdFm4=\nR:recoverypointsrecommendedformove.go\na:0:0:444\nZ:Q1nn2ujOcy9D1gOPRwgtocyGUGYS8=\nR:resourceencryptionconfigs.go\na:0:0:444\nZ:Q19395ERPvMJnh3rDYaaZ0ikNqrZE=\nR:resourceguardproxies.go\na:0:0:444\nZ:Q1QTlc8RThlh5fR5SbNwgxwC+qvAc=\nR:resourceguardproxy.go\na:0:0:444\nZ:Q1LSD0o/9rKLF/iaxoAS3u0y792l0=\nR:resourcestorageconfigsnoncrr.go\na:0:0:444\nZ:Q1yZDI4NSQkvA1twHj2TFh7j7Kahc=\nR:resourcevaultconfigs.go\na:0:0:444\nZ:Q12+AKXiN6P1+WEW57UvoHcNGKCsU=\nR:restores.go\na:0:0:444\nZ:Q1g3KYxECsLWG5LXIN0kwVlvHglfA=\nR:securitypins.go\na:0:0:444\nZ:Q1v4oLNvFK6NdKwbPnzrvgiFTSvhw=\nR:status.go\na:0:0:444\nZ:Q1gnaAk7tf2aHlVXGbanpD0BMkpy0=\nR:usagesummaries.go\na:0:0:444\nZ:Q1uqXkoY1a2Rna3oXNNvOUT2TzTRo=\nR:validateoperation.go\na:0:0:444\nZ:Q1UZMfRxzVhvkcbArPev5zAxsgeV0=\nR:validateoperationresults.go\na:0:0:444\nZ:Q11PW7kC+oaWcW1HGCxXphl34c7FQ=\nR:validateoperationstatuses.go\na:0:0:444\nZ:Q1cfS+C7cL9saBOg8t9+37Vrd+clc=\nR:version.go\na:0:0:444\nZ:Q1OdbUgVQ+y3YIm7AwEZO+aETQ5Bs=\nR:workloaditems.go\na:0:0:444\nZ:Q1du3s5Vamr7ZkuqJJDN7goIaeGvI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/recoveryservices/mgmt/2022-03-01/backup/backupapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1BgAXAU0qJdd/I1dKgPORO+7uOsg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2020-04-30\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2020-04-30/redhatopenshift\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Tq97mJrkPGEUgiEyFXmNXQ8nKLk=\nR:client.go\na:0:0:444\nZ:Q1JF4D6wTHiEXeeD3VmGMb5mI+J0o=\nR:enums.go\na:0:0:444\nZ:Q1Ip9pboqGo9U1TvNMMnypTlDeUok=\nR:models.go\na:0:0:444\nZ:Q15/VZfJUdHnyx//fr3NjbAVfK8wg=\nR:openshiftclusters.go\na:0:0:444\nZ:Q1ijfZREhZKHJEUr69CWb9Pm6P4E8=\nR:operations.go\na:0:0:444\nZ:Q19JPcgnrh/a7nahr9QVCg85Ku6Fk=\nR:version.go\na:0:0:444\nZ:Q1DRI/m/E4/lElSUtAv2bmHuddwaI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2020-04-30/redhatopenshift/redhatopenshiftapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aqGUN1IRurin8nqGcgxnhDnMkQ0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2022-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2022-04-01/redhatopenshift\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1z89S93qkVtEgJ1439dTNoMKai2k=\nR:client.go\na:0:0:444\nZ:Q1PPibkzLoCrlkDbbzHeH9fAvhRvo=\nR:enums.go\na:0:0:444\nZ:Q1P8vRvR5CRVa6oCsG02n/kE/lINE=\nR:models.go\na:0:0:444\nZ:Q1Kkyn5GFWMEYP0nDUJVGd0SHYkNg=\nR:openshiftclusters.go\na:0:0:444\nZ:Q1fZp2PcB8Gtv0nyP9UESVwgxYKIk=\nR:operations.go\na:0:0:444\nZ:Q1sebyVvT0TZwrc5qiyQ1966vIkU0=\nR:version.go\na:0:0:444\nZ:Q1NpD/Ra6INUtyjxUGY0bI8GHkPAY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redhatopenshift/mgmt/2022-04-01/redhatopenshift/redhatopenshiftapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XZXMT1Y6tAAYpThccALG9NiK894=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2015-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2015-08-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vx31YJXPrCbtYbhh0LTUuEJKj/k=\nR:client.go\na:0:0:444\nZ:Q1TrJdiDMT5wt/uNvTRdxVkG9EIbY=\nR:enums.go\na:0:0:444\nZ:Q1VnXgu9GyvElU28xCCuOUr1KaSY0=\nR:models.go\na:0:0:444\nZ:Q1JY7l8CYTTlxSYODdcRe/vFnOWr8=\nR:redis.go\na:0:0:444\nZ:Q1GFMqNYwfX49q3FFAVYubl8EIdNo=\nR:version.go\na:0:0:444\nZ:Q12tHav2IFThNTJlxPUxv5JuRI1mE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2015-08-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DjFyb9ELJBaXe2eNC5liPSp0bDw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2016-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2016-04-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1mzGyJXtPPf7iHo/PzNRuIBwgFGo=\nR:client.go\na:0:0:444\nZ:Q1J0Vernbp6oCbs+YGt26Qdmn2p/k=\nR:enums.go\na:0:0:444\nZ:Q1deyCJohvxo3kuSdPdGDIXya9074=\nR:firewallrule.go\na:0:0:444\nZ:Q1g4kIX3N11Z94IaMP+wYlZ0eped8=\nR:firewallrules.go\na:0:0:444\nZ:Q1l7hs5zrPCkyASDB1hxqtOjpXr1w=\nR:models.go\na:0:0:444\nZ:Q1F/bukLVk8/BHYlA/t3cJsO+eXUw=\nR:operations.go\na:0:0:444\nZ:Q1k7X7nZYcKhpzf4MgEx+W2uJ3SWk=\nR:patchschedules.go\na:0:0:444\nZ:Q1FN2Nzb+VthQzhI/vxCRGOhFL3sQ=\nR:redis.go\na:0:0:444\nZ:Q1GDY4/QAAi+DUqbHOPmTiN2Fs0WY=\nR:version.go\na:0:0:444\nZ:Q1381EESffwkOJJu7pI2l66VSQkj8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2016-04-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11LqDF/YJc56vPHy3Pts1yAlYL90=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-02-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ih54t+dsxdawgGJn8tStFZeKzh0=\nR:client.go\na:0:0:444\nZ:Q1XZv3Nw9Qp2EejviLH0A1giMoLtk=\nR:enums.go\na:0:0:444\nZ:Q1vRu584BxJQamC7i1bNudfiMSY7s=\nR:firewallrules.go\na:0:0:444\nZ:Q1aLN+nIu3N0mmDkrw6qlZxqzdp1Q=\nR:linkedserver.go\na:0:0:444\nZ:Q1u8ThCXW9IxqWOsPrYV9AYTiChOM=\nR:models.go\na:0:0:444\nZ:Q1EyO+DlAiCSrFJfdeyn/86IH3khA=\nR:operations.go\na:0:0:444\nZ:Q10SB1wyMQoSbX+kqrgdRLbBgpFgY=\nR:patchschedules.go\na:0:0:444\nZ:Q1HACnPuNCO/ia2/8YRbO7l/SW85I=\nR:redis.go\na:0:0:444\nZ:Q1Nzbp+kzsXqqxubXOyqSCZKnmVGQ=\nR:version.go\na:0:0:444\nZ:Q1+adwc06TeFWHEB6pp+uKeYugj2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-02-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1M1kS7xqFXx31Lk1NAfvTIRVoj2c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-10-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13xDVSzHYmC+jEncWmDOduggNAG0=\nR:client.go\na:0:0:444\nZ:Q1aCVUkE8vOZr7WrfeTvopKow+4V8=\nR:enums.go\na:0:0:444\nZ:Q1vRu584BxJQamC7i1bNudfiMSY7s=\nR:firewallrules.go\na:0:0:444\nZ:Q1gmId/+x/Kj5RknE9EZfACNPmaaQ=\nR:linkedserver.go\na:0:0:444\nZ:Q1k1MHLSrw9N4zQFjM0nY4tbCX98o=\nR:models.go\na:0:0:444\nZ:Q1AvouQdV0Q9AvCJo870QlN8ePDg8=\nR:operations.go\na:0:0:444\nZ:Q1UL05BLL7fFpO2jfmb/Q0VKON8do=\nR:patchschedules.go\na:0:0:444\nZ:Q1z4YFsjNJLuaER2Uuhk58WSvh/y0=\nR:redis.go\na:0:0:444\nZ:Q1lZOCLngf8EkGwCS5FRlGuD4eNHM=\nR:version.go\na:0:0:444\nZ:Q1JtX/Jd2UJoHQm/GtC21BPoMMWFc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2017-10-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1O8LyhIuKVdvN3eGSWB8G1YqIiEY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2018-03-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+3Ue46qK+xRmlDq9DV1AD6TXvdE=\nR:client.go\na:0:0:444\nZ:Q1gHfTz6AYV4ogL3hRCHwv5w/kKCo=\nR:enums.go\na:0:0:444\nZ:Q1ivTJpQjpzA1bhhh99aXaI4lJL24=\nR:firewallrules.go\na:0:0:444\nZ:Q1MpAvGEZuvWvSiBNU1eGsKrwMQ9Y=\nR:linkedserver.go\na:0:0:444\nZ:Q1odyF6M1chDFH0cp2KD2/PJwwYdY=\nR:models.go\na:0:0:444\nZ:Q1EcSde8Pz3Q6GHjp1EgjRd35wj+I=\nR:operations.go\na:0:0:444\nZ:Q1RgbvUBMlLdCF3GU1duIqADP1+EE=\nR:patchschedules.go\na:0:0:444\nZ:Q1DG92tMFnhYBM5JwSgnXWDJDIrOM=\nR:redis.go\na:0:0:444\nZ:Q1zX09RQpvV/GC2mY2i2Z2PjlbVDk=\nR:version.go\na:0:0:444\nZ:Q1yME4iB767t2RO6NV3xnDiBJzmVk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2018-03-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Pij2jRniEvlp8Nqog4oKJW/Zaxk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-06-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aATZ4CJJr+KVVNQ3bQQxaUnBaJs=\nR:client.go\na:0:0:444\nZ:Q1yvtf1evEh+fzW6ipKRpcYeStmlw=\nR:enums.go\na:0:0:444\nZ:Q1BN/dduzzfFkpaYoJryYQbK2Ko7w=\nR:firewallrules.go\na:0:0:444\nZ:Q1tnmcU7OB17v1aHj4+Cx4JzerDAw=\nR:linkedserver.go\na:0:0:444\nZ:Q1/QwWUQLuUYVTwyaxlvHJBj3Liik=\nR:models.go\na:0:0:444\nZ:Q1FGexvq3UoGZlLaH5sHQotoU+qW4=\nR:operations.go\na:0:0:444\nZ:Q1KFCc0aRvUDNdpe5jBNbhdknVU8A=\nR:patchschedules.go\na:0:0:444\nZ:Q1ODxL3lNO6obtei1gNAU4xujKW9w=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ESyzWUBGeMs14daL46NJO+uIqd0=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1OesFhHiPQFKXF0+tBGIKLfMkAFY=\nR:redis.go\na:0:0:444\nZ:Q1VJXlghWndA0oL9V9lLxvPPhIbYU=\nR:version.go\na:0:0:444\nZ:Q1HTS2s/Zgh6HSNDlTC6dRjLrau00=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-06-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q195Vp8VzqQ1VlBkiFRdQUUhQqdd0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-12-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1P/kTteZ/n9Dc9RcFeKr9rST7LtM=\nR:client.go\na:0:0:444\nZ:Q160TivoTuN3omkDojMrB9A3PeMTI=\nR:enums.go\na:0:0:444\nZ:Q1R0gEEhnSeaT+QGY2afIFkPvBXW0=\nR:firewallrules.go\na:0:0:444\nZ:Q1SIHwWwWX5TpIKS1SjF0JVESxIpA=\nR:linkedserver.go\na:0:0:444\nZ:Q1COa9skH6o/hVbBRRNAi+B3SBFp4=\nR:models.go\na:0:0:444\nZ:Q1bVgBzO32CL6JTs1Lz/MS4EGkXzk=\nR:operations.go\na:0:0:444\nZ:Q10HuqlCiJpQLP+dLgxIevBVtsa8I=\nR:patchschedules.go\na:0:0:444\nZ:Q1A9jVMlM5CTSYOrzoDnK1pNTFiDY=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q12ZC/NCXQff5s5L8gpBiwAdvX7OU=\nR:privatelinkresources.go\na:0:0:444\nZ:Q12MXWuokY9RijaKU/L8zR3BXqsQM=\nR:redis.go\na:0:0:444\nZ:Q1FIaSwKhRUP4GSmkTHLqBoM3CVMI=\nR:version.go\na:0:0:444\nZ:Q1bqlrgGOSQesT2tpRp5nXWTm6hqI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2020-12-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/JiCY+8OHEs05gHMOYOtVFAQSec=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2021-06-01/redis\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1sCkF1CdiArsgWW0/VIeswZ0RkyA=\nR:asyncoperationstatus.go\na:0:0:444\nZ:Q1CdxfqtbRFClZ73PsdxbGsCdzIV8=\nR:client.go\na:0:0:444\nZ:Q11eezhkB4/ZArvlVaSLzaQcIEy8g=\nR:enums.go\na:0:0:444\nZ:Q1QMVbrWtA6RxuJMmmKkD1ItJwKl4=\nR:firewallrules.go\na:0:0:444\nZ:Q1H85/kAxC/ewMTCRcR5yCJSBbeqc=\nR:linkedserver.go\na:0:0:444\nZ:Q1kZLGbA4sY/7GSYbANRgvbmN7Z5Y=\nR:models.go\na:0:0:444\nZ:Q1AAkNm9OAwatVdkg1iqKPODJZ8HA=\nR:operations.go\na:0:0:444\nZ:Q1GksOE43RL1mpRNdxifr5hY0vswY=\nR:patchschedules.go\na:0:0:444\nZ:Q17fNjCM0Jj8JYjEswSZcos9D5Dms=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q13rxmgW4LxlpgN8coNDnMzv0e8bw=\nR:privatelinkresources.go\na:0:0:444\nZ:Q16bAcZsqkHFw69MiuDLnZ2T7TzfI=\nR:redis.go\na:0:0:444\nZ:Q1QFUmo1PQvOQXZz46CmwgVKzlgqs=\nR:version.go\na:0:0:444\nZ:Q1x4YapQUh4Wkiwff2d3Nh3M0U4qY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redis/mgmt/2021-06-01/redis/redisapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tMR15aQpovJnwc3RCKycrdMLFFo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2021-03-01/redisenterprise\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pOo38gfi1CQfTE8QgiD/JC89Gik=\nR:client.go\na:0:0:444\nZ:Q1CLfXCDQ69X9BNd8wxu5vnsv02No=\nR:databases.go\na:0:0:444\nZ:Q1HFiBHkBk86QUm7MhVIha5/tPi1Y=\nR:enums.go\na:0:0:444\nZ:Q1czDwoRSvgq2jhktQWtoLr3pVjQw=\nR:models.go\na:0:0:444\nZ:Q1wsB9GegKJ+B2IgyX/amw5W7P68w=\nR:operations.go\na:0:0:444\nZ:Q1OCMCjwxFPv6v/IzKvx2oBUAB2SM=\nR:operationsstatus.go\na:0:0:444\nZ:Q1cU7Zun6r+gInG6gP82WUlR3NG5c=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1w5pAeGcJwJ2E584Dl595ShJ9Y2Y=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1sIkBJHwioK38xfAN8wFoC03ghac=\nR:redisenterprise.go\na:0:0:444\nZ:Q1mSAosqwxGnvuoEfCvaxWCx4Dmrg=\nR:version.go\na:0:0:444\nZ:Q1Y7GPlO3PCUglgQcOrqZPeLKVabM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2021-03-01/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1sCLcYTKVzoH+ZoH6TNbfM4A52Iw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2022-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2022-01-01/redisenterprise\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1X4XkNJy821r5amdYl5XNhb5lSs8=\nR:client.go\na:0:0:444\nZ:Q1CYp10kvBKq78xN9YMSmtF3OhOiE=\nR:databases.go\na:0:0:444\nZ:Q18/D69wdPNoOJije2PId96VkGVnk=\nR:enums.go\na:0:0:444\nZ:Q1zOoJBBXjTKgTF0fUzNlqHvEsdaw=\nR:models.go\na:0:0:444\nZ:Q1qfjFNmZjjukNFL2dp2rw2agRBhM=\nR:operations.go\na:0:0:444\nZ:Q1EORzQgi15dpQKfcnmkbyJfvVFRo=\nR:operationsstatus.go\na:0:0:444\nZ:Q10temNIyF/R5qNz7xYVGvofZyc7A=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1ViewXigE6bT8A/BOCoDDFNLrJ0s=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1ZV1qpsBusQki6jgYB7sZXaD3rPA=\nR:redisenterprise.go\na:0:0:444\nZ:Q1xdnHstUiZaNeghMs5n9lcdy2ZZU=\nR:version.go\na:0:0:444\nZ:Q1GxHNbT9m00dJdqvRVbs4X71UzSo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/redisenterprise/mgmt/2022-01-01/redisenterprise/redisenterpriseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q127Zoubrf+jLE7pKFEtmbAsrA1Kg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2016-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2016-07-01/relay\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Z0nI4RKvMdCC5ligsZ73DPP6ENY=\nR:client.go\na:0:0:444\nZ:Q1VMcvXMAXMouJNJpRsDb+eDeQHVY=\nR:enums.go\na:0:0:444\nZ:Q1n78s0fhhQ4soTjRwFgRYl2HCH7c=\nR:hybridconnections.go\na:0:0:444\nZ:Q1SOfelDbiPO3xPHhm3Yho/lVVgd4=\nR:models.go\na:0:0:444\nZ:Q1TO5gu0xrShps/QA39R2FPKcf/0s=\nR:namespaces.go\na:0:0:444\nZ:Q1qQcgz/jwbM0zSgWYcd60KawR+DI=\nR:operations.go\na:0:0:444\nZ:Q14oDsY1h5HspaqsMdRY1CZPLLG1c=\nR:version.go\na:0:0:444\nZ:Q1G/THfzCBMXqHFgmuynJTf4Y8i+o=\nR:wcfrelays.go\na:0:0:444\nZ:Q1LTujyLVCz0UKY8K6aPiQXFg+5KU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2016-07-01/relay/relayapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q19GDPwBTQfKurSaDaO98qgOkwH5w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2017-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2017-04-01/relay\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wqjYX/fKLeqgNGwKdMym8XyWnDw=\nR:client.go\na:0:0:444\nZ:Q1pJfe5Sq2DJzkRvDdwn1V4og6hLA=\nR:enums.go\na:0:0:444\nZ:Q1t1aL2zAav7Yd5XnXNdUeuLY3MRs=\nR:hybridconnections.go\na:0:0:444\nZ:Q1dPNRHEvW6KenwxPMTIB98kKCdcQ=\nR:models.go\na:0:0:444\nZ:Q1kogfDexUp0d2muEBOJuzD4HKBgA=\nR:namespaces.go\na:0:0:444\nZ:Q1Q0woXe2dDOj/QlySKnbMR4SlGGs=\nR:operations.go\na:0:0:444\nZ:Q1N6ldSEBbj7NdaFRaOnsxLnbLlJI=\nR:version.go\na:0:0:444\nZ:Q1cD3hJNTZ399HZkWylKiwDT3Ylf4=\nR:wcfrelays.go\na:0:0:444\nZ:Q1J2SdhtXb6JO0vlQTvsWMFFn2st0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/relay/mgmt/2017-04-01/relay/relayapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13jeT+7/xjbBf1hLf1QFMM4UKzis=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2017-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2017-11-01/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wsQJaHPsFSaHWhyM9EzTFjPF4SE=\nR:client.go\na:0:0:444\nZ:Q13kyf9n3gkvzkHsIAVLN/8QmvMn0=\nR:enums.go\na:0:0:444\nZ:Q1FTeHXKK8XKExlOZFtKQ8wpyn68k=\nR:models.go\na:0:0:444\nZ:Q1wt26IqIwlYC9fmwxiB9ayAjukgA=\nR:operation.go\na:0:0:444\nZ:Q1I+bTnzM1pxSwzQP45jt5vrUg5tk=\nR:order.go\na:0:0:444\nZ:Q1GsOXicltFWGuEKhOJZWT3nGbRIg=\nR:reservation.go\na:0:0:444\nZ:Q1OLO19rqjYqrnIps5Lx/Cfz9z8KM=\nR:version.go\na:0:0:444\nZ:Q1qxAYl+PqunKOBT4Y6cVy+OsTDe8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2017-11-01/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1yUQhCLJ3wXGhZ9r0HZPLGx9cnkU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2022-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2022-03-01/reservations\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vmwl8Z1cw3sXukS0KJYZjUjOV4g=\nR:calculateexchange.go\na:0:0:444\nZ:Q17qdICkLT/Ny01I6vWLze/+CW4nE=\nR:client.go\na:0:0:444\nZ:Q1KPJhGPom/4X6T2YhyF6QKiG5SWY=\nR:enums.go\na:0:0:444\nZ:Q1j8h53jTkAL7XaLOQdO78BRHebbQ=\nR:exchange.go\na:0:0:444\nZ:Q1wPR3vgskjGxw6xel0AKMSUNicU4=\nR:models.go\na:0:0:444\nZ:Q1+Hj9QwV6AatMr2XQ6fFZ2voCsXY=\nR:operation.go\na:0:0:444\nZ:Q1flHgrdL508WimxYSrd6PAhl28no=\nR:order.go\na:0:0:444\nZ:Q1UlJF4dVhn0+XPTih7YrTP25SKTk=\nR:quota.go\na:0:0:444\nZ:Q1uaWDk+rAgABKd5GFoP3N+3LGyvo=\nR:quotarequeststatus.go\na:0:0:444\nZ:Q1ifheE/7OPd9SG/ApLmQ40GTnv/g=\nR:reservation.go\na:0:0:444\nZ:Q1NuAzzuvBRwx8GqaxmCocu/Og1uw=\nR:version.go\na:0:0:444\nZ:Q1ZWB3P1cIZzuQ3yReQrdU0OiZ3Tk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/reservations/mgmt/2022-03-01/reservations/reservationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1is0r3jQvSRtMdsFw2xG4asEvspc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2019-04-01/resourcegraph\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14G3FJvxY0p9k+XYzg7zMW/gr1Xc=\nR:client.go\na:0:0:444\nZ:Q10oIwTYq1dtpk4fP2n2sqVWX9fMY=\nR:enums.go\na:0:0:444\nZ:Q1k8KW0cGnEiLW5XAWg+nP+yce4HE=\nR:models.go\na:0:0:444\nZ:Q1iL7n+TdWY1PImcAxzeCl8eY/eE4=\nR:operations.go\na:0:0:444\nZ:Q1OCcop/2hMpYL6RV2o4jDzzckeRg=\nR:version.go\na:0:0:444\nZ:Q19qSGDHag1pyWL/U/smhZsF9ZAFw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2019-04-01/resourcegraph/resourcegraphapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SDjp8lhK5YqBQ8FHiHyhf4KtYPU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2021-03-01/resourcegraph\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bDFGiaAzqFSZDHrJF3lums8Q4GU=\nR:client.go\na:0:0:444\nZ:Q1dN131g1b/NnpkCz+uSWiuNvV6eI=\nR:enums.go\na:0:0:444\nZ:Q1k8KW0cGnEiLW5XAWg+nP+yce4HE=\nR:models.go\na:0:0:444\nZ:Q1/oZX6SZpGkEGsohPu6zthcLdIE4=\nR:operations.go\na:0:0:444\nZ:Q19PJnmBdGkGy/cNTl790mPYXtvYI=\nR:version.go\na:0:0:444\nZ:Q19XtLrnyIIgqzuvoQuPBr3+Kb7QY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcegraph/mgmt/2021-03-01/resourcegraph/resourcegraphapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lPgmcExS3Z1/wkFLhekR8XQ1fSA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2015-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2015-01-01/resourcehealth\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EIbKSDTSkidE12o8Avrdhoa9gm0=\nR:availabilitystatuses.go\na:0:0:444\nZ:Q14g00YpqjDwkup4A5ZYz5eCfxvRE=\nR:childavailabilitystatuses.go\na:0:0:444\nZ:Q1S2Vw3STy7VaXxdWAOKw3yPytxgQ=\nR:childresources.go\na:0:0:444\nZ:Q1ku5sVhstkeBST43r2N0BymtwQaE=\nR:client.go\na:0:0:444\nZ:Q1OGkaopkqTosm7/I2mFxLQNvhFVc=\nR:enums.go\na:0:0:444\nZ:Q1WmnE+LLzmT/KoDZWfqe3ypuOjgM=\nR:models.go\na:0:0:444\nZ:Q1sjaKSqXOvBgsvAH8/oaFSaYcXeM=\nR:operations.go\na:0:0:444\nZ:Q1UMBSCHzffr9ekfKCNGprGDbDrag=\nR:version.go\na:0:0:444\nZ:Q1x0Feglbtw3/z4Gcd2B0Hkes8juw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2015-01-01/resourcehealth/resourcehealthapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1RBUuWUw4w2Uzjo0UgzQttAH1bz8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2017-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2017-07-01/resourcehealth\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pj4+LXHY8I9EK+FxH+NT495/uvs=\nR:availabilitystatuses.go\na:0:0:444\nZ:Q1AE0+hFQRLFNYcI1cT80OOCYGob4=\nR:childavailabilitystatuses.go\na:0:0:444\nZ:Q1BWyIbDwLojlAjfRLoOdgCWAk7R4=\nR:childresources.go\na:0:0:444\nZ:Q1oB8At8d5Z9Pj2NE7N7MXj4LHc5Y=\nR:client.go\na:0:0:444\nZ:Q1LoAWp18YHW8xJ90seDQFm8Jw9Q4=\nR:emergingissues.go\na:0:0:444\nZ:Q1oAbYKlzMIIWCa6fneVhSo1NAmuk=\nR:enums.go\na:0:0:444\nZ:Q1sj9E4ot/DGvTLZaq5nKcWoUsyLg=\nR:models.go\na:0:0:444\nZ:Q1e0/2Q4fPdkwfj/IBPAST96NFqtA=\nR:operations.go\na:0:0:444\nZ:Q1yS6GDNj3JK5hXcU5ZHVfHw0Ho+0=\nR:version.go\na:0:0:444\nZ:Q1HsAEO98QHPrI/Z71CEBljSVYbV4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2017-07-01/resourcehealth/resourcehealthapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1OhS0itD/v23kmohkZ3OQxQJzJQo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2020-05-01/resourcehealth\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xgr1N5UA0NOc3ync+Emedr9Ke38=\nR:availabilitystatuses.go\na:0:0:444\nZ:Q1TQeKc/vRz3+HQ+qkg9NuF3wB4L0=\nR:client.go\na:0:0:444\nZ:Q1sMDEUQmxPnHJYxQ0hJGfhR6t7pY=\nR:enums.go\na:0:0:444\nZ:Q1r1YtdfrcW8bS0xPoKxDrgW9a7z0=\nR:models.go\na:0:0:444\nZ:Q1PXk84WEesMOYuqb/uMXVFe53Kzk=\nR:operations.go\na:0:0:444\nZ:Q1/bjBYW07NtN+siMzjlNRKYso5eI=\nR:version.go\na:0:0:444\nZ:Q1SfIsLgD07mvNlhdkNvZghABasOM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcehealth/mgmt/2020-05-01/resourcehealth/resourcehealthapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14gDZc3Pv3aaUlJWjsLIZ2x9CU3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcemover\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcemover/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcemover/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcemover/mgmt/2021-01-01/resourcemover\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1P8NNfwKDN2BCuty8Y5DU4NBz7kU=\nR:client.go\na:0:0:444\nZ:Q1tW1DJiwbS8xGJD/vkijUD/8pqrE=\nR:enums.go\na:0:0:444\nZ:Q1MEmW0BOK9cwSi5idDw7ObUS5p2A=\nR:models.go\na:0:0:444\nZ:Q1Yx7Qg4iQVYHMrTts3D5PiTcFr1U=\nR:movecollections.go\na:0:0:444\nZ:Q11qjE0Tl5/xDi7LltXVM/OzwN4PY=\nR:moveresources.go\na:0:0:444\nZ:Q1+i8Abmk5/Tq5Lcbz4XEg7VY6728=\nR:operationsdiscovery.go\na:0:0:444\nZ:Q1gPBEBYS4OlgdaAsn5QNAaumyis0=\nR:unresolveddependencies.go\na:0:0:444\nZ:Q14FV1le/edaBRoKUtCkyCmvV+0SA=\nR:version.go\na:0:0:444\nZ:Q1rEcJUPmzESwr3l9qOBRdwpG/AbQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resourcemover/mgmt/2021-01-01/resourcemover/resourcemoverapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14wqeh8ECcUZb2ILmf++lwlOKQpA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-01-01/locks\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ZD/ZjJlFh7oKvKcXi9C8995pnSg=\nR:client.go\na:0:0:444\nZ:Q10RXt+S24QjwbA2W/vtTgodiAdyo=\nR:enums.go\na:0:0:444\nZ:Q1sKFTk0oU4MLAFLi1uY2YTVuEp0o=\nR:managementlocks.go\na:0:0:444\nZ:Q1heXx6Aur8IZGceWOpGOBRizG+Ss=\nR:models.go\na:0:0:444\nZ:Q1KiZ4ysi8U7oPONfi5vn/HhG2i6o=\nR:version.go\na:0:0:444\nZ:Q1drl9cl5SPc5Tif3KadrzrHBv4mc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-01-01/locks/locksapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ZQCn3qp1717Qj8W4L5XGQ2DUd8M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-11-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18EiKA15e1FlISG1z5y1/kwEBhIY=\nR:client.go\na:0:0:444\nZ:Q1bRFw0NiPp3GIDnPnyfVkqyVDLUU=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1pprj+goGob0Mo315YdPoijQ9Jy4=\nR:deployments.go\na:0:0:444\nZ:Q1APwUlvD3oyauTr5GFP77sTTyfzo=\nR:enums.go\na:0:0:444\nZ:Q1kQ/LaPcm/d5OnQnPUJsriDxN0G4=\nR:groups.go\na:0:0:444\nZ:Q1Af9BEG2vcVVCNZ0dRmOO5qAJpD8=\nR:models.go\na:0:0:444\nZ:Q1vpH/M4cfXErR6pnfS0rr9kucQ7Q=\nR:policyassignments.go\na:0:0:444\nZ:Q1j2k8sCUW4xKtrc8wnWWMbi3MQ64=\nR:policydefinitions.go\na:0:0:444\nZ:Q1f8nPlW3DApc9pTHW6ZrGINcguY4=\nR:provideroperationdetails.go\na:0:0:444\nZ:Q1x3GCM/sj4SQh9o+IMIdVJ0zEYjk=\nR:providers.go\na:0:0:444\nZ:Q1xOVrbLm/EN8hCwiRsre96edEwxw=\nR:resources.go\na:0:0:444\nZ:Q1rbTYlt6y7A9qQPOqTve0iCu0wnk=\nR:tags.go\na:0:0:444\nZ:Q1MDap4pibSOx27e4KkUoRXX0USNk=\nR:version.go\na:0:0:444\nZ:Q1ukIpW0CCKlqCWP9jJVhL2VOIvZw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-11-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1FDz17Q3P9kHePUS33WhkgjtlX6w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-11-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QDhHu5r3t2SswQvXsWqNqk1r8Cc=\nR:client.go\na:0:0:444\nZ:Q1MZxI5cjRuBZHXfwg7JNUcTrNerU=\nR:enums.go\na:0:0:444\nZ:Q11X6dWEtrTUik+fm48P7+egrzUHU=\nR:models.go\na:0:0:444\nZ:Q1UmDk8fIdtw7dcAGEfL4HColDDP8=\nR:subscriptions.go\na:0:0:444\nZ:Q133pHKrZ+dDxalek+G1BXkjW8xIQ=\nR:tenants.go\na:0:0:444\nZ:Q1Q8h026dXCIHfNeHAHQc4a5jntZg=\nR:version.go\na:0:0:444\nZ:Q1Lo32GbtlXwoJFk8faE1XYUidLYo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-11-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q119d+g3yWP3AkHhDrLRdhgbIQvbc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-12-01/features\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1nqQC0T4zG2mW7267D1hSpITKhGg=\nR:client.go\na:0:0:444\nZ:Q1I74IjKyEfZsrUqL8s30BHyJo0FE=\nR:features.go\na:0:0:444\nZ:Q1Tir/xZcrdztH2ndEElY+EXdw3Kg=\nR:models.go\na:0:0:444\nZ:Q1uwTjDBr4xV3dlDlWcLkrKTCNhaY=\nR:version.go\na:0:0:444\nZ:Q1au1wgChYTBgjEu/A59RaCqdpjeU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2015-12-01/features/featuresapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UAAcRvN2A1RUEj1Jq+596s64xHY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-02-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1iQZrUmKUvLEcgDhAfGMVeH4+ZBU=\nR:client.go\na:0:0:444\nZ:Q1RTjcTkFOPNVb8YpI7kiuibdS4XQ=\nR:deploymentoperations.go\na:0:0:444\nZ:Q17LaLRgse+8QU8y8YULnSjmD9SJE=\nR:deployments.go\na:0:0:444\nZ:Q1yI0a79z5L3s2c3svdZ3P1cUpDxA=\nR:enums.go\na:0:0:444\nZ:Q1fleWwdxVhT8uDZRsaCE7/F3aVJ8=\nR:groups.go\na:0:0:444\nZ:Q1Da1pz7lauD8ox4onVbWR80VoiVk=\nR:models.go\na:0:0:444\nZ:Q1BGufOYOKioCR5yjWBvrronmT4Gs=\nR:providers.go\na:0:0:444\nZ:Q12XoQNePPAPlnoLdzIH68OKPiiXI=\nR:resources.go\na:0:0:444\nZ:Q1+zc16kcOOV1SRr1C0vJXrcnrGcw=\nR:tags.go\na:0:0:444\nZ:Q13zbX25bsMHN0DgF80bEyZIil7fA=\nR:version.go\na:0:0:444\nZ:Q1oMiMTbe4Mpx+l7sp5JpxFtygqN8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-02-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/lJWFBMwAn4EOTIxOpDrki2hFGM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-04-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15EtFezoqXf65ofPDTQq7q9CaDKc=\nR:assignments.go\na:0:0:444\nZ:Q1YdDnybl5huV0GwHC3U6/FM4wIWI=\nR:client.go\na:0:0:444\nZ:Q1xLjkYV5czg+6XIlA7lbxnQIIi94=\nR:definitions.go\na:0:0:444\nZ:Q1rU4DhzKAN6BI8GGQpxVTq0tjdvY=\nR:enums.go\na:0:0:444\nZ:Q1H080a7IQw7hEOPS+1mTl2UISfmg=\nR:models.go\na:0:0:444\nZ:Q1n5YAOQmm/9PeXYueesfHn6jFWUk=\nR:version.go\na:0:0:444\nZ:Q1bbpsiLx/WcmVi+qbs5Y0np4jIv0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-04-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1fZ+92ycjwJaygcryF5D6u2ucWrA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-06-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1W2ao6lHchzuon9PIYzvWNQtH6UQ=\nR:client.go\na:0:0:444\nZ:Q1jNoYkLAymCHwpvnI8ZZaQeGL+ew=\nR:enums.go\na:0:0:444\nZ:Q1wuDQ8SiJAoNzcZzLRqHGMFp6XL0=\nR:models.go\na:0:0:444\nZ:Q1Tyg/nqB6uFYdoU24SQpSWJubErQ=\nR:operations.go\na:0:0:444\nZ:Q1sy9NRxNqjoJFsbPj/wchoDvnNos=\nR:subscriptions.go\na:0:0:444\nZ:Q1Xe4q3iLAYE+PWpHjvmCXRJM97XQ=\nR:tenants.go\na:0:0:444\nZ:Q17IgWP6Ftl1Vsyq7Y11rIDv2kBmw=\nR:version.go\na:0:0:444\nZ:Q1sh91MQNiXENIq7CbSYu57kWO4bU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-06-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1n0xkxcy8pYK2BTdYSeD7ChPLb0o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-07-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1I/7tfPIuTDdqIc1uKBjvbLXEWtU=\nR:client.go\na:0:0:444\nZ:Q1HS/BbEMjuJJmMDtFXfCB4hGyTqs=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1CQOZpCfvUMCaEzcYqVlYIPIZACE=\nR:deployments.go\na:0:0:444\nZ:Q1oep1E6USeJIVJYGHsIPUsVB8r7E=\nR:enums.go\na:0:0:444\nZ:Q1fleWwdxVhT8uDZRsaCE7/F3aVJ8=\nR:groups.go\na:0:0:444\nZ:Q1dOHY4+pw46dOQGZ5Hb1QIutIw5o=\nR:models.go\na:0:0:444\nZ:Q1Ea8vFrSK++Jmr8OYgU/RIuw0F7w=\nR:providers.go\na:0:0:444\nZ:Q10sbFTckSx7pC/PjK3yoImJcue0o=\nR:resources.go\na:0:0:444\nZ:Q1rmbhGpbYG8Ql3wJqybQ38vFWLOQ=\nR:tags.go\na:0:0:444\nZ:Q1egqChEEQ8hF8m2ja8ErONZczc+4=\nR:version.go\na:0:0:444\nZ:Q1TNe6IvW7cuPfdagC0rqnnY2heVc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-07-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DJYRboPsWGVutmXXuNvP5xNY6nA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/links\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1j2Y9gdb79kK/AfgCy+xogHAWI24=\nR:client.go\na:0:0:444\nZ:Q159zLZoLA1bdhk/0O79V8iYb5Hnk=\nR:enums.go\na:0:0:444\nZ:Q1c5WpTKiDDhMWzOlqM/IX9gCE57k=\nR:models.go\na:0:0:444\nZ:Q1Cp1P+bzKKrASogZLS0nI55exO6A=\nR:operations.go\na:0:0:444\nZ:Q1Q5qSw6l1+uZzC0H7V/0m7bOPvwI=\nR:resourcelinks.go\na:0:0:444\nZ:Q1ClkcrkNSukPyOrH7g1VQ/JQsBCw=\nR:version.go\na:0:0:444\nZ:Q1xqGOEUkrTDmVFTTZAA88TDPvY/8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/links/linksapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1mFIyRud/dL54NACafGxfeDJZxu8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/locks\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+Nyb7SYYgN5gPJ5VIF4RV14P0jY=\nR:authorizationoperations.go\na:0:0:444\nZ:Q1CWp4dqHGKjmyYOMBFP6Na7yjD9c=\nR:client.go\na:0:0:444\nZ:Q130FfYQDx9umIL3T/HIyKeyE54i0=\nR:enums.go\na:0:0:444\nZ:Q1sKFTk0oU4MLAFLi1uY2YTVuEp0o=\nR:managementlocks.go\na:0:0:444\nZ:Q1LC1t1JLB6GRvOPLn/0GDePGBTO4=\nR:models.go\na:0:0:444\nZ:Q1qtBBu6AFOTEoGlRTB4nx8+tzRbM=\nR:version.go\na:0:0:444\nZ:Q1Rr68VQHffkCRobCxd/wnY5AtR3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/locks/locksapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KxVpXXnf9IiQHQf5VpzGzvqE3ik=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YxdNmc+OJ2QjjR9DoVxXZbSquNI=\nR:client.go\na:0:0:444\nZ:Q1yrjz9zph/wtRCFdTQIQG7MI/21M=\nR:deploymentoperations.go\na:0:0:444\nZ:Q10raYWbDhrrndG3nzhQTYlVqphAQ=\nR:deployments.go\na:0:0:444\nZ:Q1va7Zm8ZKnROdJ3TEkL3y+BT1e9g=\nR:enums.go\na:0:0:444\nZ:Q1fleWwdxVhT8uDZRsaCE7/F3aVJ8=\nR:groups.go\na:0:0:444\nZ:Q11KuVpNHkIIiOWD8u+2N1ObQj/Qw=\nR:models.go\na:0:0:444\nZ:Q1iPo+oy3i2ASMgcdURs3XKDwSKh0=\nR:providers.go\na:0:0:444\nZ:Q1Qvt8CxdUKzA4EFpeaR2zU8kGhVQ=\nR:resources.go\na:0:0:444\nZ:Q1ct31e7/sWSrfrvNp1bPTYULyqA0=\nR:tags.go\na:0:0:444\nZ:Q1OWLvXlKhJI51Lj6lg55M1yknPgE=\nR:version.go\na:0:0:444\nZ:Q1JE4vdciSO48h59AH8kf9JcLn9ug=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-09-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/nHjddlYsLJLlobjsoG8tDCO3GM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-12-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ckAHqYqt+B5I7+XJOLsVOEtwrAg=\nR:assignments.go\na:0:0:444\nZ:Q1CccJErSX5ytPaWaRqqaQKqGgpiY=\nR:client.go\na:0:0:444\nZ:Q1Yuna77l244ntp3khygMhcr0zANE=\nR:definitions.go\na:0:0:444\nZ:Q1sgF1EJ/GE8lSBIDQUw9kdGLIyT0=\nR:enums.go\na:0:0:444\nZ:Q1Yiq3aI2pUhcYeN8g93k6HT18K34=\nR:models.go\na:0:0:444\nZ:Q1QPDAFm/YPkBf2sadSA9rB44WAU4=\nR:version.go\na:0:0:444\nZ:Q1aVpG8QEYL9Lwrrxaarpk504mYrM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2016-12-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gkL3RVH6MGCC8Jz4EuBkzLaMH9I=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-05-10\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-05-10/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uUcz1gv2C2fRilzWgjVQR9xUeko=\nR:client.go\na:0:0:444\nZ:Q1QpUlTgZKfTHNzI+0sLF0RpWP9E4=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1FyBKjUgiAhK821Ilq/3+JlOMYL8=\nR:deployments.go\na:0:0:444\nZ:Q1NWdN3SlPmM4bawR4gRkN1tZU5Hs=\nR:enums.go\na:0:0:444\nZ:Q1fleWwdxVhT8uDZRsaCE7/F3aVJ8=\nR:groups.go\na:0:0:444\nZ:Q1pv3pK1voKZfvOcRHMAmZriXJxj4=\nR:models.go\na:0:0:444\nZ:Q1uCBkE+hjoS6G0r3wXEA/tAPwGvU=\nR:providers.go\na:0:0:444\nZ:Q1oMSESvCAivHmJ2+DplSrPXkW7Ww=\nR:resources.go\na:0:0:444\nZ:Q1kJXLIPQ0BtTxL5WKOzNH/sRgBTM=\nR:tags.go\na:0:0:444\nZ:Q1v0WJSdxx48oNVZMEdjGx9MOdXvE=\nR:version.go\na:0:0:444\nZ:Q1lzMYRcDcIB0WDMGD19jz97hxwEM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-05-10/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wFMITqqZcbY11bo/zww9HXSKN1E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-09-01/managedapplications\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QsRczH5NyI/mT/jbhZfC9g05IBA=\nR:applicationdefinitions.go\na:0:0:444\nZ:Q16X6OoQ0Wjt/o2cT6Unv6eVUZM1k=\nR:applications.go\na:0:0:444\nZ:Q1ZR7X1JeGhYA/hJbkt8Nrq7PLIg8=\nR:client.go\na:0:0:444\nZ:Q1orGsrGfQaDxBy3VfWLVGpUo33GU=\nR:enums.go\na:0:0:444\nZ:Q1xM/K6q9xwyuGsviRlrUQhnpuH5s=\nR:models.go\na:0:0:444\nZ:Q199n2wjIcMxalowtRrOknyLukJxo=\nR:version.go\na:0:0:444\nZ:Q1vrI+XfTPKHiXfDXCW8dm3x/GL0M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2017-09-01/managedapplications/managedapplicationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1igZYA+kTLY5xpKM+VCyl/pgFviA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-02-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zvqRVIGf60Jtq9F0tXjlUwPFYHQ=\nR:client.go\na:0:0:444\nZ:Q1i0xpTKDmgMQ4XxzB7KWexnAI6tc=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1tgwa0JQHHdSl0FooETVQ65rTLhw=\nR:deployments.go\na:0:0:444\nZ:Q1Nxjr8w9U2GfVy7v3CZceq4uk170=\nR:enums.go\na:0:0:444\nZ:Q1noAz483wLd5IK1YAyXMyufeMekE=\nR:groups.go\na:0:0:444\nZ:Q1fZGbcAcMz7KE+diobY8vZz2s9xc=\nR:models.go\na:0:0:444\nZ:Q1f//Eu/duPSjPxS0vmcIO4HYzcYI=\nR:providers.go\na:0:0:444\nZ:Q10PS4XEgMvccLkLkaTKSk2uEYPKk=\nR:resources.go\na:0:0:444\nZ:Q1ykbmfsPrF2z6duqjuBGFBaYUeRQ=\nR:tags.go\na:0:0:444\nZ:Q1yyenYx4TaMVS3vtxC/4kmraAMRg=\nR:version.go\na:0:0:444\nZ:Q1qDrylyuit9q/OD+Upht3x/9wtVM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-02-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1qzHrd9+702i2Bz2TawnXivsf0N8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-03-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1I1BmJWAqqBHKK2vbT0RCwsj6pyk=\nR:assignments.go\na:0:0:444\nZ:Q1QgjXlug3Lphf+i2hZ5kxthmBxZU=\nR:client.go\na:0:0:444\nZ:Q1M/r1ru+OSbi+pnJB19zPbeG7cdM=\nR:definitions.go\na:0:0:444\nZ:Q1Mei42WDnEGJFvj9/X7a/yml0f6M=\nR:enums.go\na:0:0:444\nZ:Q1Yiq3aI2pUhcYeN8g93k6HT18K34=\nR:models.go\na:0:0:444\nZ:Q1q9owLfTUrZXpWwZqHdIZBZNLyy0=\nR:setdefinitions.go\na:0:0:444\nZ:Q14BxPxcfkfonP0Blm+gsIeUjg4QM=\nR:version.go\na:0:0:444\nZ:Q1sLwC3HGwD6yZk2AOwtImYt7Q6pk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-03-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JF9Nr38QJvvQdEBdfGQeWxSe980=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-05-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1S/0W/UVoIPUlVDiyS5tEb4+7a8E=\nR:assignments.go\na:0:0:444\nZ:Q1MZWeLKU4Fo5jy7r81xOq9ygfdGs=\nR:client.go\na:0:0:444\nZ:Q1mHDwVVqot0A91NzKWvP6Yxg7gzM=\nR:definitions.go\na:0:0:444\nZ:Q14xsMsP46piyWjMNHQM4BXv2yclM=\nR:enums.go\na:0:0:444\nZ:Q1EjERlB/qx/2eUx370HElpI3etzE=\nR:models.go\na:0:0:444\nZ:Q1ROlihMCHD8jAp5o7CebuXUiBFsY=\nR:setdefinitions.go\na:0:0:444\nZ:Q1ODF2Oje/K0cDt27TxAMcNkGwfII=\nR:version.go\na:0:0:444\nZ:Q1/xzIxSsCS2SgDBbHgACa+gAXwFo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-05-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JA6oLaP2baV25EPLzHa2224kLE0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-05-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1h892AucANGi88/jLsKm4bHc60Jg=\nR:client.go\na:0:0:444\nZ:Q1Hwo9ClP6xHe1UZ+bOkjfFcuRn3M=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1Vj160nRDd8E4IhWOUwXb9RpvptM=\nR:deployments.go\na:0:0:444\nZ:Q1Z/whFl5kGHMkfWSwvWNOh+6b5P8=\nR:enums.go\na:0:0:444\nZ:Q1noAz483wLd5IK1YAyXMyufeMekE=\nR:groups.go\na:0:0:444\nZ:Q1XfJs9FsBQjG6XfEY8yhTNgfddXg=\nR:models.go\na:0:0:444\nZ:Q1CoHSlLH/ItvofKK7H+G7daxbcnA=\nR:operations.go\na:0:0:444\nZ:Q1pgwRW5yK1u3Z685TmvV0TehQ6qA=\nR:providers.go\na:0:0:444\nZ:Q15ybmPXTIhi+ll+aLaKo9R+fovck=\nR:resources.go\na:0:0:444\nZ:Q1SuxcZcte+BxBzD78zsmGBLby7Wk=\nR:tags.go\na:0:0:444\nZ:Q1MdY1gk1PltljC29+m+TQRZeBnDE=\nR:version.go\na:0:0:444\nZ:Q1iQawt/IlG5ijGPSdqgGErMg/yz4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-05-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SELtGJrSUAuBEk36oMMrospy3DA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-06-01/managedapplications\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10oKdZLPt97PnbSq319XTqrlUkfU=\nR:applicationdefinitions.go\na:0:0:444\nZ:Q1pOCxv1MA5bDtq/ZxUTbr5COdxIU=\nR:applications.go\na:0:0:444\nZ:Q1KVKuo6Tltigt2e4DuANEC4DVong=\nR:client.go\na:0:0:444\nZ:Q1puKj7vVaOROzrdq22y+ch5eDLdQ=\nR:enums.go\na:0:0:444\nZ:Q1xM/K6q9xwyuGsviRlrUQhnpuH5s=\nR:models.go\na:0:0:444\nZ:Q1ImMXU2E9EPoDANlnwX+H9WuFdrs=\nR:version.go\na:0:0:444\nZ:Q1uUr9gB5wBfzKx+Md6XgesK0Jp2g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-06-01/managedapplications/managedapplicationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1NlKRUecTr5AZNEEfueomGR3xLTw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-06-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uo+PiRzOptoEIwek50uOPyef+8A=\nR:client.go\na:0:0:444\nZ:Q1/w1c/Z1MiPK+sAN2A5ws/s8jtb4=\nR:enums.go\na:0:0:444\nZ:Q1wuDQ8SiJAoNzcZzLRqHGMFp6XL0=\nR:models.go\na:0:0:444\nZ:Q16aVyeL05uWdojyfniPe0dGW8lWE=\nR:operations.go\na:0:0:444\nZ:Q1pmxAwbCcGQFTJeFzbp53FkO1in4=\nR:subscriptions.go\na:0:0:444\nZ:Q18F0/vlWBfogELKJHnh3iyRt/Cz8=\nR:tenants.go\na:0:0:444\nZ:Q1xSq/hliQ0EpOVD02Hw32JxdR1xg=\nR:version.go\na:0:0:444\nZ:Q1KezqypXTgqWSiZZzEbYGmL6lq78=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2018-06-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1//0lCcA0CtWLPdiB5nCTMfGh3U0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-01-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1LEVMLMpS05Qhq6HmU03SpBjHbZA=\nR:assignments.go\na:0:0:444\nZ:Q1+vnjk6hFuQPX8YfUVXtX54APX0Q=\nR:client.go\na:0:0:444\nZ:Q1juUIhB8XrBVcQobg1I7anQDirVo=\nR:definitions.go\na:0:0:444\nZ:Q1Z//9Nwz04gN/cQ/5diN5SWRN7wA=\nR:enums.go\na:0:0:444\nZ:Q1BlQdYUBHLTvH6KYoaDnvzfZgRyU=\nR:models.go\na:0:0:444\nZ:Q1ITux+wqCHq8UgR3KcmROPUiv9VY=\nR:setdefinitions.go\na:0:0:444\nZ:Q1ARVhGL/HCL15jLzmqIaVJQa+NHE=\nR:version.go\na:0:0:444\nZ:Q1UqPKsf43qX00UYp742R4KZ6U0no=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-01-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1tc2JSqIjkV0K8Hhlby3aambPj04=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-03-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AT86xCxvfyjHEQcYrVnKylhj58w=\nR:client.go\na:0:0:444\nZ:Q1QkWG6wYlTd1XzImQzLiVeQVXtR8=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1bi4h3RFfbOdcJdjKHGI2bei8QTM=\nR:deployments.go\na:0:0:444\nZ:Q1J/SwKBHmxU3Dyv/0hXm7Akuzco8=\nR:enums.go\na:0:0:444\nZ:Q1noAz483wLd5IK1YAyXMyufeMekE=\nR:groups.go\na:0:0:444\nZ:Q1yqsHcr7NWbJBPuYsZ7PHiGqw2/U=\nR:models.go\na:0:0:444\nZ:Q18GZlCHLiAYmLuNSD71JR6yj9/bQ=\nR:operations.go\na:0:0:444\nZ:Q1pMk2YoOrarN89R1baMjH0Nv0wiI=\nR:providers.go\na:0:0:444\nZ:Q1QOVXB9HwAuyR3mLeMznUtPt+ZCw=\nR:resources.go\na:0:0:444\nZ:Q1puQvc3QV1PcgzNL2FGvmjXiA98A=\nR:tags.go\na:0:0:444\nZ:Q1OLvBat5Gcl1M7UJhYrPg3x7KPgw=\nR:version.go\na:0:0:444\nZ:Q1CBJTGn8pycbi5aD0x7zBtdx0nQ4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-03-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1o1MrR8FrrZeAUYkBHCaCG3ViD8U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-05-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kEzJwY+tRgzfSWJJfR/2rleTmwc=\nR:client.go\na:0:0:444\nZ:Q17YK7ywwPgjZvT2k97J9/Beym5pw=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1b6di3sOMJ3EX4XusvzrHeau3nws=\nR:deployments.go\na:0:0:444\nZ:Q1bdfBLZYa8Lu6rR2745AegL27oco=\nR:enums.go\na:0:0:444\nZ:Q1noAz483wLd5IK1YAyXMyufeMekE=\nR:groups.go\na:0:0:444\nZ:Q1P8nVB+ONKm9xOkTsBLLfyBF8ZE0=\nR:models.go\na:0:0:444\nZ:Q1D2Aj8vPpDZ2rb/ZDxC2FTwDU/qA=\nR:operations.go\na:0:0:444\nZ:Q1GfmnXPSAiCgV2oga6JC8iART2i0=\nR:providers.go\na:0:0:444\nZ:Q18l58HX4TmzyLnkPj/vXDmjIbN1o=\nR:resources.go\na:0:0:444\nZ:Q1hF9jEFYwsEKxFStH6ODL6+vMESY=\nR:tags.go\na:0:0:444\nZ:Q1cPYzF5IrESn7JKOov1UlFQYJ9kI=\nR:version.go\na:0:0:444\nZ:Q1/m0f9U29mvd0VooPAIN47FFJz7w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-05-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12l3G+kQC9iYrSPq7CF51EbUoYOk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-06-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QWXIW5JP8b3iYh42wDI71rx/VVg=\nR:assignments.go\na:0:0:444\nZ:Q1hTYlzqyfkShwoDI1STXNOB5aizA=\nR:client.go\na:0:0:444\nZ:Q1IRiqYeCN71XkBTirColyxQxQQvk=\nR:definitions.go\na:0:0:444\nZ:Q1YwSuymj+nH+h22q+CEb5rtEADzI=\nR:enums.go\na:0:0:444\nZ:Q1eqcYZA18t87h+ZJQLmuOQzlKTR8=\nR:models.go\na:0:0:444\nZ:Q1n7Rb75O3gcs1zfz76e+hFDcKVvM=\nR:setdefinitions.go\na:0:0:444\nZ:Q13bxP+pf5SDpXanQeNoebQXe1nYA=\nR:version.go\na:0:0:444\nZ:Q1d2DtfoBJjwtX3lcu5ZqodGb+bb4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-06-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1i3tUcfkjzgHCZVNk98D5mbQgNpU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-06-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1el2kgXceie+JIxhxflwpwG4cadQ=\nR:client.go\na:0:0:444\nZ:Q14LRlBYKlgV5uIVIXbm9N2P8MiTo=\nR:enums.go\na:0:0:444\nZ:Q1ek/NYeI2EgbBdLgMqnGalib2Z8I=\nR:models.go\na:0:0:444\nZ:Q1UpTVGhENFMLxqfvSU6Xp09MtKiU=\nR:operations.go\na:0:0:444\nZ:Q18TPPYPViFFB7XXSJy4rg04k50cU=\nR:subscriptions.go\na:0:0:444\nZ:Q1rvtuT22hzPho+bzojRtmnoRF+KU=\nR:tenants.go\na:0:0:444\nZ:Q1u0MD74/wny2JX58pijYYyppedIE=\nR:version.go\na:0:0:444\nZ:Q1Tnaj0W3v6CqwHTul7c5mMzrPlb0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-06-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QojRWYYbuOvueXM/qoZI+USeuxc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-07-01/features\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15kVjXfqUBW9JkRkrfm8pSWSccpQ=\nR:client.go\na:0:0:444\nZ:Q1+lqxqfPwUlaWiV9XpIqjxbp/7dY=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1eKJZW6M6FFIu3J11aD7iMOcSa+I=\nR:deployments.go\na:0:0:444\nZ:Q13GE4N5JBZgZnYdyDJo6oLtoGppk=\nR:enums.go\na:0:0:444\nZ:Q1+lTntwwWlXTzPqj7L3uit7kg35s=\nR:models.go\na:0:0:444\nZ:Q1uziVT7WYNyInCOV62fEeR7ok6cI=\nR:operations.go\na:0:0:444\nZ:Q1mPMjghgctChHVOOuoB2Mch+jRAI=\nR:providers.go\na:0:0:444\nZ:Q1CbpVA4+1jWFPEl2XQhAuVrxgbBA=\nR:resourcegroups.go\na:0:0:444\nZ:Q1zGE1V2nPfOrYdJN4rDVOAlUuv1w=\nR:resources.go\na:0:0:444\nZ:Q1rRJxRh1uOqC9MgaeQeeC0lyul8I=\nR:tags.go\na:0:0:444\nZ:Q1tf+FsfqrGlRKHlsoAaJTiFCce5w=\nR:version.go\na:0:0:444\nZ:Q1I/uXxhQgxawZWJ1tQJ6ajNwuGao=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-07-01/features/featuresapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rHRQ6XeFKFILOKVU272soIHJMno=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-07-01/managedapplications\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1PsYadcbyJv3HFUtbesHY9BTVNpY=\nR:applicationdefinitions.go\na:0:0:444\nZ:Q11F8ggwTwxRvR3sFo/K48aS5mO5o=\nR:applications.go\na:0:0:444\nZ:Q1Hx1en0NeMl9+ObCcEkSws+CMUMc=\nR:client.go\na:0:0:444\nZ:Q1TfMYFg90d6VJFpU2gXEAGEXHrRw=\nR:enums.go\na:0:0:444\nZ:Q1TxiNEffTXa9HGnLCF9Yq6T34dvI=\nR:jitrequests.go\na:0:0:444\nZ:Q1WAiucG5zLKI9PXw/VMswaCUXxfU=\nR:models.go\na:0:0:444\nZ:Q1rlNfWTDKHrbL14Jzw05b1LeHKLU=\nR:version.go\na:0:0:444\nZ:Q1JCsCTFIAZEJ5FA/+z3GU2KNDaQs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-07-01/managedapplications/managedapplicationsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UjOKLzqk9NxStt+8rfihsM0WLqM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-09-01/policy\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q16FLiJXeHvs8l0vELlKJ7I43Tcw4=\nR:assignments.go\na:0:0:444\nZ:Q1c5yArxONNUUczHIwyQpS0UYBsfc=\nR:client.go\na:0:0:444\nZ:Q1hQjUjmK82j3Drb9XGGCTVE/PIwY=\nR:definitions.go\na:0:0:444\nZ:Q1ANWR0UZdhVZoDke3TK8DZfERjZ4=\nR:enums.go\na:0:0:444\nZ:Q1rut9KyXiWSuRnJiaeh0W6rlumPo=\nR:models.go\na:0:0:444\nZ:Q1GDVKsFESui7w+UKRQt6uMa5mMAU=\nR:setdefinitions.go\na:0:0:444\nZ:Q1W3Dn7u3Ut450TppRFJe7DFVWL5c=\nR:version.go\na:0:0:444\nZ:Q1X6GNA2qa2vPcdlNTc98w70j4yHU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-09-01/policy/policyapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1rRzGKhvPGxbfYVbE7O8n7u8UWzM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-10-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q18as2cndv76w8Xi5EUkDeqXp33ps=\nR:client.go\na:0:0:444\nZ:Q18iW1wWVBnjZuk4TBQUQ1A/4pBPw=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1xcSt3YqPlggb8K3b7GuqWpfJx28=\nR:deployments.go\na:0:0:444\nZ:Q1nNYQoCBeV3LxqXgC43hFFyXrC2I=\nR:enums.go\na:0:0:444\nZ:Q1VNP/BVOCLDzLXdcOgcUfyvo/XTw=\nR:groups.go\na:0:0:444\nZ:Q1zY6657quhpO9Ivanqtsk6ysQcjA=\nR:models.go\na:0:0:444\nZ:Q1DB55DMmNRdGxOzoeoB3CJ4W6RBg=\nR:operations.go\na:0:0:444\nZ:Q1dFqQgnSJNxRZN1l6wuz6Vr8K/MU=\nR:providers.go\na:0:0:444\nZ:Q1dzt/HhSsYDgxzdJ0OnkRs4CMyyI=\nR:resources.go\na:0:0:444\nZ:Q1rSEU6tmHEprkCcfMVQPwQBsOr8U=\nR:tags.go\na:0:0:444\nZ:Q1yw4zYK51GHE+GSVgWDqnM5HbwUo=\nR:version.go\na:0:0:444\nZ:Q1zTgBVwyajzD/EuCJ5J0ijrVNmHA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-10-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vkhP+02ymwSKPNi3QwyuY4EDzvI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-11-01/managementgroups\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QphdIrjyYDFmAF6iJu4h4DuGJPI=\nR:client.go\na:0:0:444\nZ:Q16+jlQ6qROP9huWEnleP9Y3GMCrQ=\nR:entities.go\na:0:0:444\nZ:Q1fFbsBgk9gfb2o10+18KZXvyghyA=\nR:enums.go\na:0:0:444\nZ:Q1poYlaDF7RRK8rOVQATMEMEhkuhg=\nR:managementgroups.go\na:0:0:444\nZ:Q1f9WZNMsdqy0+/5C+nLoSVvbgF6o=\nR:models.go\na:0:0:444\nZ:Q1nLBpQRe9DThwWlPh2eEPDqksq2g=\nR:operations.go\na:0:0:444\nZ:Q1fQjxleMKYCcLytV69T9zRqsIcgU=\nR:subscriptions.go\na:0:0:444\nZ:Q18fAcJ2C1S7EMtQyUapefstyscvY=\nR:version.go\na:0:0:444\nZ:Q1+NNemTdO1kK3v+lqghopVG2IYUM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-11-01/managementgroups/managementgroupsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dPA+MBN8/n8SIb0HsQbfWAPVsgM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-11-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1YnX1WKOZePtLLf8pF+aROH+gcp8=\nR:client.go\na:0:0:444\nZ:Q1yUNW1faHo57ANW7L2XuOF1ogXKI=\nR:enums.go\na:0:0:444\nZ:Q17QXms90H4kf63gAJ5SE5HPE65fY=\nR:models.go\na:0:0:444\nZ:Q1incGY7fu3pqTeYkVsBvdtwGO+zI=\nR:operations.go\na:0:0:444\nZ:Q16zl9HD7RIilbxy+zI5jcJ7bJmzA=\nR:subscriptions.go\na:0:0:444\nZ:Q11qxfifpS830X+UqNCdhttiwe4Zk=\nR:tenants.go\na:0:0:444\nZ:Q1lZYxuCFTjl5WJY6xJPhTmV0KdFs=\nR:version.go\na:0:0:444\nZ:Q1s/51CXW7rBlBlj7y7wyYtTlAy/w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2019-11-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MJg4ss+lz1dlccBLXSt3zmWEuEU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-02-01/managementgroups\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1t0+6lkpMM07zO5Hnbwkv2oA7MlM=\nR:client.go\na:0:0:444\nZ:Q1+910QhtEKqNur2mmBF4aw92NXt0=\nR:entities.go\na:0:0:444\nZ:Q1Y89UgFS8n3f2VwppNa7bQYG5iDA=\nR:enums.go\na:0:0:444\nZ:Q1poYlaDF7RRK8rOVQATMEMEhkuhg=\nR:hierarchysettings.go\na:0:0:444\nZ:Q1w8Jf5ZCa56rTmDBMz+dIaPyYY+I=\nR:managementgroups.go\na:0:0:444\nZ:Q1mkvUuz9/3JJefHzvjX+cs0qTipo=\nR:models.go\na:0:0:444\nZ:Q1WA5rcmghClulTWd182zCFJlT6js=\nR:operations.go\na:0:0:444\nZ:Q1FKT0KL8QVkbiF+aFX0S2pB67RDA=\nR:subscriptions.go\na:0:0:444\nZ:Q1MSR+T/T4Wfhygsx+oyyf/D/2vUo=\nR:version.go\na:0:0:444\nZ:Q15auvhH7D5UGLMSUd3sRbE0UZy4c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-02-01/managementgroups/managementgroupsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1b5Pq/LMsgrW+k9Azsrt3bHOvz3A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-05-01/managementgroups\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zN/c5zHUd9O8by8E5UZjBFo8xno=\nR:client.go\na:0:0:444\nZ:Q1tE7zup/Cug0Wyth3f/kP9weoo4k=\nR:entities.go\na:0:0:444\nZ:Q1a5Sg6cxc9WGM1PHNx3Hw7nMXjHY=\nR:enums.go\na:0:0:444\nZ:Q1poYlaDF7RRK8rOVQATMEMEhkuhg=\nR:hierarchysettings.go\na:0:0:444\nZ:Q10UUTvIW5t0nYtcO7syC6suHPZ+U=\nR:managementgroups.go\na:0:0:444\nZ:Q11fCZ2S0P3V64XeiD7eFay/1NQ4o=\nR:models.go\na:0:0:444\nZ:Q1G1WSHHumzexA28+c7iCqnrmOGxk=\nR:operations.go\na:0:0:444\nZ:Q1OzPvkYGKow92JKkB1BYJpuQC6PM=\nR:subscriptions.go\na:0:0:444\nZ:Q1PAAPGkWxrSkjbNMe1N00wCb5jRw=\nR:version.go\na:0:0:444\nZ:Q1cvCeR20GmFRj2+HZg8+3ktM1u1Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-05-01/managementgroups/managementgroupsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1nkLpOa2U81oUCJRiQX4jtCJsJOY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-06-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UvQ8AJklB6Fdb4qfPPVpCvA+Ia0=\nR:client.go\na:0:0:444\nZ:Q1jZLShM1JD5eVuDT7Qu5J8yvfdwI=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1rAAadzlzAQgEwpeSWjxFCFOyTX0=\nR:deployments.go\na:0:0:444\nZ:Q1eBAJnIe7YlYXlhqHV9WtH1VsdCA=\nR:enums.go\na:0:0:444\nZ:Q1HnaiMOa+3S/nZWR6gq14EH8yml0=\nR:groups.go\na:0:0:444\nZ:Q1gqpm2EOsgA4+CKhTmlDTLPwApVQ=\nR:models.go\na:0:0:444\nZ:Q1bpwdUX2brhyMn/uxN0SV9nsLlSE=\nR:operations.go\na:0:0:444\nZ:Q19I90MzvMUmgN8yGDkXR74Z1FBiI=\nR:providers.go\na:0:0:444\nZ:Q1+zza8CesTmfgH83VTZYIPGa8mdg=\nR:resources.go\na:0:0:444\nZ:Q1OPeSWSgSLWWnAcXJ7351MOjid64=\nR:tags.go\na:0:0:444\nZ:Q1rL93xTmVzrpHZp81H0KlhI9iR5M=\nR:version.go\na:0:0:444\nZ:Q1VB6D7Qry6ZF+hKig3iu8cOcH83c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-06-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XNqtws/uZmDuKFjWQlFCTT37uvs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-10-01/resources\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1hssIzpKg/L0w8dtDaG6lgVFNDFA=\nR:client.go\na:0:0:444\nZ:Q1q942fef7Rb1nCvF0uJx93j5yeK4=\nR:deploymentoperations.go\na:0:0:444\nZ:Q1O5mu5ndMXAfHNhGYBAp7bx8xFSc=\nR:deployments.go\na:0:0:444\nZ:Q16S/7NGca/+kbD206ENwVpf4caLc=\nR:enums.go\na:0:0:444\nZ:Q1HnaiMOa+3S/nZWR6gq14EH8yml0=\nR:groups.go\na:0:0:444\nZ:Q12sOnzJ/73BtDjdaR5Bd06oROLGs=\nR:models.go\na:0:0:444\nZ:Q1nctYHocvleIuiBwzMlvDAre6hz0=\nR:operations.go\na:0:0:444\nZ:Q1utWcq6Qp6A+CnM1ekg8KXiimtjc=\nR:providerresourcetypes.go\na:0:0:444\nZ:Q1sqFvTKboJcEfZYCUVp5IgLpP058=\nR:providers.go\na:0:0:444\nZ:Q15FVxwtXmrizgVF+IuNSIvP5rTS4=\nR:resources.go\na:0:0:444\nZ:Q1Ld/m3OxJUVchwPmqtbm1I9rv048=\nR:tags.go\na:0:0:444\nZ:Q1NDyQMgiMJAYLXEZzT8zno22NwJA=\nR:version.go\na:0:0:444\nZ:Q1OG1mnTd3CD37N+blBkP1qvdgghA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2020-10-01/resources/resourcesapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QN5tO44Fno2Mg73qWO3xOXSf8sA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-01-01/subscriptions\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q14pGCUkryCsdfJ3soFDq4rzvKq+4=\nR:client.go\na:0:0:444\nZ:Q1bnj9FU5czmxp7/nxmC4VKdvrkqc=\nR:enums.go\na:0:0:444\nZ:Q1EYTLrmhscbOV2VP7C7ALMJPh5QE=\nR:models.go\na:0:0:444\nZ:Q1CFCda6/BZg7eCj9SiYK1uTr5UTQ=\nR:operations.go\na:0:0:444\nZ:Q1ELDe1NRgHnzMjGZ27osYrnu/JEc=\nR:subscriptions.go\na:0:0:444\nZ:Q1dMDHtUkCo6QGUW37uF+YN73uXs4=\nR:tenants.go\na:0:0:444\nZ:Q1b2/tUJWge1cm9QAHzFoS5BByDl8=\nR:version.go\na:0:0:444\nZ:Q1htPlPYtalfd1f2lSf2v6GNmdy+E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-01-01/subscriptions/subscriptionsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1S/vdBOdSpJRV8v3Wvu8Jc3lvp1w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-07-01/features\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q15kX4FBnxhsnn4gQeSC+Ztkz6MHw=\nR:_meta.json\na:0:0:444\nZ:Q1cNRYKrpN4SEhEM5chyjKRBSm7nU=\nR:client.go\na:0:0:444\nZ:Q1xP9koYAuIVbuE4q9hyeJHiI/FF4=\nR:enums.go\na:0:0:444\nZ:Q1MUYNwZHpaVj+XwpWRodsXj7ZHSw=\nR:features.go\na:0:0:444\nZ:Q1jvvDmTg0ZXAIzm56k0o+D+jqRLw=\nR:models.go\na:0:0:444\nZ:Q1NPSdWPy9lP3VCfNsJ+zqHt3h9BM=\nR:subscriptionfeatureregistrations.go\na:0:0:444\nZ:Q17+z1s9E4QBCGjnWSRDWURQkAAsw=\nR:version.go\na:0:0:444\nZ:Q1iB4T6n4RefnaqlO9m/eftXt+3SY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/resources/mgmt/2021-07-01/features/featuresapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JeU1ddxWDcxS8Z/GK/pA12pQll0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-01-01/scheduler\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1e2FMLhoOcq+H3M049QdfvOqodpg=\nR:client.go\na:0:0:444\nZ:Q1xXM30Qw+XMrJCNl4ivlR2y0zDKk=\nR:enums.go\na:0:0:444\nZ:Q1LEG24bPnGSvNUt5Jr7Th4dNCsY8=\nR:jobcollections.go\na:0:0:444\nZ:Q11eYTpa5/fp3oyv27Ty8x9j9AKbM=\nR:jobs.go\na:0:0:444\nZ:Q1dmHyEssP5O02NOMADsMqaExSsvo=\nR:models.go\na:0:0:444\nZ:Q1zmkAvukDZNcsnrJsnUToOVDfDYE=\nR:version.go\na:0:0:444\nZ:Q1tiQWvFdKAONfj74ACkHK0Qa1DD4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-01-01/scheduler/schedulerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SNURAClVfmaUa/SIlmFaUrQDSew=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-03-01/scheduler\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1EwPbJQ88pSPy7ozub1/0qQXoTsY=\nR:client.go\na:0:0:444\nZ:Q1OegQGul+1z30WOeEWoJ2VINyrwU=\nR:enums.go\na:0:0:444\nZ:Q1IzryqOtUPx/bWM+S2KgsuM9iib4=\nR:jobcollections.go\na:0:0:444\nZ:Q1yvl6qnLfft2Ju6UNDmm7JSNgteU=\nR:jobs.go\na:0:0:444\nZ:Q1gCMX26WW2jwQcNPCGUEQRG3/9Ww=\nR:models.go\na:0:0:444\nZ:Q1HsrQg3faEtbdpNdri1sihK7yDNA=\nR:version.go\na:0:0:444\nZ:Q1wHPB0Xzb5+VZX16QPPc0JX5YNhM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/scheduler/mgmt/2016-03-01/scheduler/schedulerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1a2cQhxaflYou+0CL3cj1Yl7c684=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-02-28\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-02-28/search\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uc2wW4ffC9UUo7veVmEsXCV/D74=\nR:adminkeys.go\na:0:0:444\nZ:Q1kXsURa8g+sTS0RjOZQLcGG5I2j4=\nR:client.go\na:0:0:444\nZ:Q1HDc7H8Lj8p2Mu2CrMXTZM2wPjcg=\nR:enums.go\na:0:0:444\nZ:Q1ArmHXzOWPC4M3x6mmT7AY3M3jJQ=\nR:models.go\na:0:0:444\nZ:Q1QVxbfLh6Othso5S925KBfpDZv/g=\nR:querykeys.go\na:0:0:444\nZ:Q1mKFt3fFiubiRF66DGEQf5G/wIWg=\nR:services.go\na:0:0:444\nZ:Q1Pry4QQKxlXqoE3UNDse/iQhxtf8=\nR:version.go\na:0:0:444\nZ:Q1DLvvZgZ5CjGrggbLIIF3/1060u0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-02-28/search/searchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pNsneZEjKVqfTiMMCFgXopm0GJw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-08-19\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-08-19/search\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1yo/tYorNGvYajya1a9hJtbibikc=\nR:adminkeys.go\na:0:0:444\nZ:Q1Sqmv8ruIj2kgf25XIL9OYlRqX9c=\nR:client.go\na:0:0:444\nZ:Q1i9/jTGO5Q8AHcCYaadbSzvwidHo=\nR:enums.go\na:0:0:444\nZ:Q1iATfTgv2UfW9dIrMKWKeFIjYdCA=\nR:models.go\na:0:0:444\nZ:Q1E8waKL+n+n6fyHAOvh2WF+d5sZY=\nR:operations.go\na:0:0:444\nZ:Q1B0D5PxwV8FwYaOe3zTLMH06bXIs=\nR:querykeys.go\na:0:0:444\nZ:Q1pntoxGi+LfNdT6Nyl04lhpnEKbU=\nR:services.go\na:0:0:444\nZ:Q1AMOPZegQW67SN5ZxAZPdYaYoeOc=\nR:version.go\na:0:0:444\nZ:Q1qkOItFCkjzxespOnrMQmVhQUcUE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2015-08-19/search/searchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13XLmXVAmglNbF6ipli3scJIa08w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-03-13\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-03-13/search\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IjC3Iz2XZ/eGlYaNjQjvdfgzzjY=\nR:adminkeys.go\na:0:0:444\nZ:Q1W8RSJxrjrtMZ1xNd9tgKgAOifoA=\nR:client.go\na:0:0:444\nZ:Q1EEhz+HRJ1BnlqirJWr8jWyFd5Vw=\nR:enums.go\na:0:0:444\nZ:Q1/971VSpDtN28vbMmticezitX5dg=\nR:models.go\na:0:0:444\nZ:Q10pSMes3boY8kBiw80OQN5JKIrS0=\nR:operations.go\na:0:0:444\nZ:Q1IZc2NL/B6duI5kxhM1xXTjoFHCI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1N9Vt7TY7bnpZu2P/eu60CUR3yac=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1cGxmTFnkw/ZB+eN/IBBJ3k9sFuU=\nR:querykeys.go\na:0:0:444\nZ:Q1GiWuCAlPXjsz2x3KgPytnRppHPk=\nR:services.go\na:0:0:444\nZ:Q1xA4LSfei+J60h8Q03aw79ykxUns=\nR:version.go\na:0:0:444\nZ:Q1JWMs5M8YIUpIMUMzuZEHfQP8qs4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-03-13/search/searchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1p1hamogw/LVyv34dfcKHdEppFCs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-08-01/search\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ks9+wdpSZZRWz3jlBz83pbBIbXI=\nR:adminkeys.go\na:0:0:444\nZ:Q1jc5o0vd0pCB0k5/9VcHyfRgLWhM=\nR:client.go\na:0:0:444\nZ:Q1dj2qtlULW5ims9H60Gajcb60rYI=\nR:enums.go\na:0:0:444\nZ:Q1n5Cb4A4Z9tP/mPKEo0W6HvdYrk4=\nR:models.go\na:0:0:444\nZ:Q1J/SgLLyCa82jXmGtOtsEu43QSBY=\nR:operations.go\na:0:0:444\nZ:Q17byp3seC8+RYpFK6HTaoIDmXnvQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1XPvfI17ZpUsU8S+rtG0BJR7UG60=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Brq1OE4IkuT4rdlST3SUT2fgAdk=\nR:querykeys.go\na:0:0:444\nZ:Q1hQcYZByFAQHWA1myrjFOVIelmgA=\nR:services.go\na:0:0:444\nZ:Q1zee7IpAjYtSUSi/+KNqpYW8HAjw=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q1Ia1fcVexBPI4myAZadJ+eU+hAAk=\nR:version.go\na:0:0:444\nZ:Q1Mw/EDYKiRmgVCd+ABxmW6GneTBg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/search/mgmt/2020-08-01/search/searchapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1SP97taRzevApCs1ji4SgklljAZg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/securityinsight\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/securityinsight/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/securityinsight/mgmt/2020-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/securityinsight/mgmt/2020-01-01/securityinsight\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1PylkIv/HO9Vsd/pKlnAZ/PmqpHY=\nR:actions.go\na:0:0:444\nZ:Q10Sds3hLnUumaMoyfcPAxiREnudQ=\nR:alertrules.go\na:0:0:444\nZ:Q1nheAI2hFzrKcnDiuOT5hSNGXyD0=\nR:alertruletemplates.go\na:0:0:444\nZ:Q1r6KkfvvSpu8T9ODldb5vvsOqcjY=\nR:bookmarks.go\na:0:0:444\nZ:Q1SIWp07JMFeUoEvl0H0gd8/Rt0W8=\nR:client.go\na:0:0:444\nZ:Q1k99PdICz7zd6iw6Lq9QQj0wbONQ=\nR:dataconnectors.go\na:0:0:444\nZ:Q1Pcc+1dRyweZFNhWPBnW6U82fdt0=\nR:enums.go\na:0:0:444\nZ:Q1DtmD+9hVbOVzC8ZCO3JlWQArqxE=\nR:incidentcomments.go\na:0:0:444\nZ:Q1gFOdlHqHe1QN7syWR09V8uuwYOo=\nR:incidents.go\na:0:0:444\nZ:Q16IKhtWdhjqkkBjrRkTrUyZ+osPg=\nR:models.go\na:0:0:444\nZ:Q1+HuMBb/hlvQrRqinH7ZUeSDpLEs=\nR:operations.go\na:0:0:444\nZ:Q15YuHweEjNXpKaxwfKPOJqjxXq5M=\nR:version.go\na:0:0:444\nZ:Q1zug0Uxe9JFxBEkbS+bV07olqHBk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/securityinsight/mgmt/2020-01-01/securityinsight/securityinsightapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aZPNWr2Mv12IiMw1foj2KPRBa/c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/serialconsole\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/serialconsole/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/serialconsole/mgmt/2018-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/serialconsole/mgmt/2018-05-01/serialconsole\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1DUtOJWvAe5owG+fzOvQSjGlJ/UA=\nR:client.go\na:0:0:444\nZ:Q1Nq8obQTUcq330akj2PzqLoiXZnc=\nR:models.go\na:0:0:444\nZ:Q1seeGqA+j33p6vhO2dT99HHfFDkw=\nR:version.go\na:0:0:444\nZ:Q1JKilrMw7zPcUyxQD4TaLUSzoWtM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/serialconsole/mgmt/2018-05-01/serialconsole/serialconsoleapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1oP/sEYMub5Uja7fVvV9Has5o4vg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2015-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2015-08-01/servicebus\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1kpZCpyi1OqlnN6+FBx2TpUZjumM=\nR:client.go\na:0:0:444\nZ:Q1rDoXOcwhWKbhfPE9U+TcvIfcz94=\nR:enums.go\na:0:0:444\nZ:Q1TN9mEl/txVpNi6KbSXA04ltOuCI=\nR:models.go\na:0:0:444\nZ:Q1lDnpdNzy3OFlx3Vj6SURD+nMS0s=\nR:namespaces.go\na:0:0:444\nZ:Q10EfB0ZVerobehhg9GNIQwlWHBB4=\nR:operations.go\na:0:0:444\nZ:Q1mAAOZnkQh8traPRAIolAjFfLKyY=\nR:queues.go\na:0:0:444\nZ:Q1/1GlX4c9QtBhQGGEruCkzacfRTQ=\nR:subscriptions.go\na:0:0:444\nZ:Q1skEJp4A6AoRwBkreHXBjvhQ2Cdo=\nR:topics.go\na:0:0:444\nZ:Q10ayhuUB32jvXLc4OrHdfV1HSsLg=\nR:version.go\na:0:0:444\nZ:Q1AjkJ2ITtkLPJJb9vnqfHaPQlfUc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2015-08-01/servicebus/servicebusapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1bu4ZR59Dc6F2SAwwWrG6S0YO/aw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2017-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2017-04-01/servicebus\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15u1Nk8L96GDLOlhG1Bn/M4Hz9FQ=\nR:client.go\na:0:0:444\nZ:Q1RcOyIf35HkkFqjOD0DDPB6zbXQg=\nR:disasterrecoveryconfigs.go\na:0:0:444\nZ:Q1b8Cs+e4XC5mhuj1DQOoiNbWHmbs=\nR:enums.go\na:0:0:444\nZ:Q18V+gcyPPWP+g7TKWmsXAPSd3I54=\nR:eventhubs.go\na:0:0:444\nZ:Q1C0Wgb8GcwNNiEBJHHiQGyE9L2lI=\nR:migrationconfigs.go\na:0:0:444\nZ:Q15DvSc41etxETU2WKbuhhOBOF3hQ=\nR:models.go\na:0:0:444\nZ:Q1K+9d6Ktunimda2oEL92T7z6n9Yc=\nR:namespaces.go\na:0:0:444\nZ:Q1RCqO85wWX6adst/fbrbWGSoClzo=\nR:operations.go\na:0:0:444\nZ:Q1NJA8P0UUILaW41zvVho5yIiF4/M=\nR:premiummessagingregions.go\na:0:0:444\nZ:Q1//fesb8prflSWnHiMeQX69CDwUs=\nR:queues.go\na:0:0:444\nZ:Q1hPf9QzNGcJz84lB1c8ZFblEE7lQ=\nR:regions.go\na:0:0:444\nZ:Q1k92cr0iTjY4T6cAP31xdDkJIzJ4=\nR:rules.go\na:0:0:444\nZ:Q1OEsZPeKnmcXtVoT2sNUiBHKsPm0=\nR:subscriptions.go\na:0:0:444\nZ:Q1+p46Uau/92RvSQduWc4NvR+JoV0=\nR:topics.go\na:0:0:444\nZ:Q1cyYWWwmtjPn6kqt9y5Fs3Eb6Yso=\nR:version.go\na:0:0:444\nZ:Q1GPF91Fx9fY8yAq9NTDF4ia0w6cY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicebus/mgmt/2017-04-01/servicebus/servicebusapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z1LMfhUwB38ehc5kaWdnIdirJaA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.2\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.2/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1HZ5pGM34v9gGTO8P/aZ4ArW3PoY=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1JZDoniadRKzr+kTjHZmfE0skhyk=\nR:enums.go\na:0:0:444\nZ:Q1EuYFcTAvMbuMMfnx4zCXDU6qSO8=\nR:models.go\na:0:0:444\nZ:Q1fsqq4UG5rxxwozQO9JdUsWwGC+Q=\nR:version.go\na:0:0:444\nZ:Q1WS3S7Uyx7g6ra/Miz241olbwf28=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.2/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1oAngjkSJmdATSg/Ni3i0Olsa9E0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.3\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.3/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1LiHuY68/QMeY91Dp0cvNHvXO4d0=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1yNV9L/rn47dQGM20n99tDptR69I=\nR:enums.go\na:0:0:444\nZ:Q16w4JHdhxD3ZFYvol1cExMy3mlJE=\nR:models.go\na:0:0:444\nZ:Q1L2Vfy5xpJeABLrdi/uTU1vLR/N8=\nR:version.go\na:0:0:444\nZ:Q1Gms3qb8IYUpPpS013sw3GIyKwaQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.3/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pbnEDmSboHsBg0pOHtvyr9fPAsY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.4\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.4/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1Yqs8JIlfoi/KB/dKO98lSh347iw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1Qr+yKpfY5Iufo0km66hGRHIP8bg=\nR:enums.go\na:0:0:444\nZ:Q1to0l/UzPMurictF3DfWZZIMfYa0=\nR:meshapplication.go\na:0:0:444\nZ:Q13dnuMeSc/93hPw0j3n6FvnpNmuc=\nR:meshcodepackage.go\na:0:0:444\nZ:Q1UH8V7t1L0gPzZ6U+uv9pDEfFWe8=\nR:meshgateway.go\na:0:0:444\nZ:Q1jVnhpORblx4Mpd4Wm0FygeLpqqM=\nR:meshnetwork.go\na:0:0:444\nZ:Q1NSleMNF6jd22SPDjAM43Fc+dzwI=\nR:meshsecret.go\na:0:0:444\nZ:Q1nACe8PSR8HtCLuzvf1yEOuy+oik=\nR:meshsecretvalue.go\na:0:0:444\nZ:Q1Yt4nTkX+OQIU0W7AHEWEFe8Zh1Q=\nR:meshservice.go\na:0:0:444\nZ:Q1OwbRygwmwfyZdTcCpZ5/3JEP1l8=\nR:meshservicereplica.go\na:0:0:444\nZ:Q17Rren81VM8rCm8A9p4ynd7irJ/M=\nR:meshvolume.go\na:0:0:444\nZ:Q1PXOyyxDlBkegOX109Z3QsdaH+mY=\nR:models.go\na:0:0:444\nZ:Q1/SsYpwS8BUfKtHZ0o2h9QLVfUZ8=\nR:version.go\na:0:0:444\nZ:Q1CK48B3A3pjlxpWDqyVndPCiMf7s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.4/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1snc8CGyzs0THO454Vz97zprZiAY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.5\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.5/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1bRpL4m8QPsdxumyfFIKFeI4ztjw=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1XA82QGm4AsCFcksxCr+b0KVWw34=\nR:enums.go\na:0:0:444\nZ:Q1aDdBSRVAh+CstnhKoStaGnMisG0=\nR:meshapplication.go\na:0:0:444\nZ:Q1MtN6vsndGSDji0OYfEN1+ZDhC20=\nR:meshcodepackage.go\na:0:0:444\nZ:Q1UH8V7t1L0gPzZ6U+uv9pDEfFWe8=\nR:meshgateway.go\na:0:0:444\nZ:Q1jVnhpORblx4Mpd4Wm0FygeLpqqM=\nR:meshnetwork.go\na:0:0:444\nZ:Q1NSleMNF6jd22SPDjAM43Fc+dzwI=\nR:meshsecret.go\na:0:0:444\nZ:Q1nACe8PSR8HtCLuzvf1yEOuy+oik=\nR:meshsecretvalue.go\na:0:0:444\nZ:Q1Yt4nTkX+OQIU0W7AHEWEFe8Zh1Q=\nR:meshservice.go\na:0:0:444\nZ:Q1OwbRygwmwfyZdTcCpZ5/3JEP1l8=\nR:meshservicereplica.go\na:0:0:444\nZ:Q17Rren81VM8rCm8A9p4ynd7irJ/M=\nR:meshvolume.go\na:0:0:444\nZ:Q1PXOyyxDlBkegOX109Z3QsdaH+mY=\nR:models.go\na:0:0:444\nZ:Q14v7Euo9C7xlQnCBgHIOCrm/vg7c=\nR:version.go\na:0:0:444\nZ:Q1A9JijZEhjCPKOENjFYDBhpvikkk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/6.5/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/P/5k+SATKxpc3oAnB15z1u5QR4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.0\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.0/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1W5OkuGcyCCy6k686L+D5ILMNExQ=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1O6SFMQFLQXw0R6WeS50hvMgshQ4=\nR:enums.go\na:0:0:444\nZ:Q1+Yw8g8Awx2KEhJs8c05driwN5TU=\nR:meshapplication.go\na:0:0:444\nZ:Q1T3T0YPZ9Ii2ebjabL8a3XcDh4QU=\nR:meshcodepackage.go\na:0:0:444\nZ:Q1UH8V7t1L0gPzZ6U+uv9pDEfFWe8=\nR:meshgateway.go\na:0:0:444\nZ:Q1jVnhpORblx4Mpd4Wm0FygeLpqqM=\nR:meshnetwork.go\na:0:0:444\nZ:Q1NSleMNF6jd22SPDjAM43Fc+dzwI=\nR:meshsecret.go\na:0:0:444\nZ:Q1nACe8PSR8HtCLuzvf1yEOuy+oik=\nR:meshsecretvalue.go\na:0:0:444\nZ:Q1Yt4nTkX+OQIU0W7AHEWEFe8Zh1Q=\nR:meshservice.go\na:0:0:444\nZ:Q1OwbRygwmwfyZdTcCpZ5/3JEP1l8=\nR:meshservicereplica.go\na:0:0:444\nZ:Q17Rren81VM8rCm8A9p4ynd7irJ/M=\nR:meshvolume.go\na:0:0:444\nZ:Q1PXOyyxDlBkegOX109Z3QsdaH+mY=\nR:models.go\na:0:0:444\nZ:Q1cpB+VeU2OnjN1iekDfrpnqr2UHM=\nR:version.go\na:0:0:444\nZ:Q1OQsrWCgoAsk5mI8dwDnge7VhzZM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.0/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wRlwONe5yPnhzLAs2Gv4rbdZ3Es=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.2\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.2/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1R5R2aUCjeHlvu70MfpQRqsg0Ag8=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1ptVVszGiRFuS72BE8qvRl4dNTgg=\nR:enums.go\na:0:0:444\nZ:Q1WEFrXuPzTOgdGbhRejXaly+f6Ek=\nR:meshapplication.go\na:0:0:444\nZ:Q1T3T0YPZ9Ii2ebjabL8a3XcDh4QU=\nR:meshcodepackage.go\na:0:0:444\nZ:Q1UH8V7t1L0gPzZ6U+uv9pDEfFWe8=\nR:meshgateway.go\na:0:0:444\nZ:Q1jVnhpORblx4Mpd4Wm0FygeLpqqM=\nR:meshnetwork.go\na:0:0:444\nZ:Q1NSleMNF6jd22SPDjAM43Fc+dzwI=\nR:meshsecret.go\na:0:0:444\nZ:Q1nACe8PSR8HtCLuzvf1yEOuy+oik=\nR:meshsecretvalue.go\na:0:0:444\nZ:Q1Yt4nTkX+OQIU0W7AHEWEFe8Zh1Q=\nR:meshservice.go\na:0:0:444\nZ:Q1OwbRygwmwfyZdTcCpZ5/3JEP1l8=\nR:meshservicereplica.go\na:0:0:444\nZ:Q17Rren81VM8rCm8A9p4ynd7irJ/M=\nR:meshvolume.go\na:0:0:444\nZ:Q1PXOyyxDlBkegOX109Z3QsdaH+mY=\nR:models.go\na:0:0:444\nZ:Q1AtiMz0g+a6DrunBIOB8qBXZpQ9E=\nR:version.go\na:0:0:444\nZ:Q16awGOGwaozKo49SjNuoahpipdTg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/7.2/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1JJ8KKW8YDmGIGeMPDk/dVb4/s3c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2016-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2016-09-01/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wcNroi+d5V4QCtHRw/EghG6Y9c8=\nR:client.go\na:0:0:444\nZ:Q1tiNPFVZSJ+YYQNtVCmKhL3Z4s20=\nR:clusters.go\na:0:0:444\nZ:Q1svwJiB7W2C4xSQ5rtbKoPQ/Y954=\nR:clusterversions.go\na:0:0:444\nZ:Q1M9ZR9QDn/bYGmIb+zHHYS7PX5UE=\nR:enums.go\na:0:0:444\nZ:Q1/nZP9hij4c6K0dxnkD4dxi2U1q0=\nR:models.go\na:0:0:444\nZ:Q1mUIfdcpXGPXUo9NLyx6L01ozB8g=\nR:operations.go\na:0:0:444\nZ:Q1XLNefed92QfygwarZ9vMkSPUb/I=\nR:version.go\na:0:0:444\nZ:Q1cgW7R0E3sLLPjrwIMaidovAYQFA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2016-09-01/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1XumalhVns0nD42yJKa5rNdPxtrY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2019-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2019-03-01/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ge7x8vZIpJQbjAwnUr6xRVfaYJY=\nR:applications.go\na:0:0:444\nZ:Q1UeV6GiH2a+APVJoWVS0Zdh1mFgg=\nR:applicationtypes.go\na:0:0:444\nZ:Q1CAQRjLoDAqJ5Sftwy1qu4Up6XE8=\nR:applicationtypeversions.go\na:0:0:444\nZ:Q1w4HRrZ2WPxRIOayaczy8fnVsqfE=\nR:client.go\na:0:0:444\nZ:Q1jG8WgzBEqFBUtjci5xrXZY5jj5U=\nR:clusters.go\na:0:0:444\nZ:Q1pHMUktDlCMIcqQnzQrzWSvvz4n8=\nR:clusterversions.go\na:0:0:444\nZ:Q1Z7XrpuFcnFccUureiBeTZvpN340=\nR:enums.go\na:0:0:444\nZ:Q1qKnwTUVxVRRw6yF38/Y1zGfsbVc=\nR:models.go\na:0:0:444\nZ:Q1qfyZ1456069lePm/FLfmA9ds12s=\nR:operations.go\na:0:0:444\nZ:Q1NePIYTmbP+4wioRRosIDPPGEDdw=\nR:services.go\na:0:0:444\nZ:Q1VH0N9v6olzti2W+y3BoCI0/puPc=\nR:version.go\na:0:0:444\nZ:Q1OR3laKdeHYdFtSSCvbpBZZtr5CY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2019-03-01/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Ip4eqY4CdaCg6e+vLaogYORy6RA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2021-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2021-06-01/servicefabric\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q12vO5dI4IT+EFS7peO/8nSq4UQ+w=\nR:applications.go\na:0:0:444\nZ:Q1JSKu7kXFCgF/ZPbvsmn98MBYocE=\nR:applicationtypes.go\na:0:0:444\nZ:Q1LA4jdemlo2JQYHrUOfSMgqYdyZk=\nR:applicationtypeversions.go\na:0:0:444\nZ:Q1y/tMC5QwekLEaIqrxPnpblIQvhg=\nR:client.go\na:0:0:444\nZ:Q1QNapuWQgMStymzKPWIdaHfwRrY0=\nR:clusters.go\na:0:0:444\nZ:Q1nFmg7J4AakV7WSpaZV6UUHXPxaY=\nR:clusterversions.go\na:0:0:444\nZ:Q1jDUTdcZOqGvO1MI+sZVDVSaYREM=\nR:enums.go\na:0:0:444\nZ:Q1j6xdng5kZBtz3UHgJplf3cDXA4o=\nR:models.go\na:0:0:444\nZ:Q1NG5iEPdHy4KW6qYCSbfT4DCMXnA=\nR:operations.go\na:0:0:444\nZ:Q1NePIYTmbP+4wioRRosIDPPGEDdw=\nR:services.go\na:0:0:444\nZ:Q1sCQs/xjALYYDA1iWlm1lFg7epyc=\nR:version.go\na:0:0:444\nZ:Q1syOM+cnrza0NhuVxNId09B79a18=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/servicefabric/mgmt/2021-06-01/servicefabric/servicefabricapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1xazUG1532ped/bO8CSq0kd37ErQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2018-10-01/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bUfmQ3OCfzoGX+zx4aVc6AvTxsQ=\nR:client.go\na:0:0:444\nZ:Q1cCpP1hNI4Iw30wASE08B0GUkgpk=\nR:enums.go\na:0:0:444\nZ:Q1H9b6uN0T2QWFzKK3VsuBIF+N4YY=\nR:models.go\na:0:0:444\nZ:Q1ekFNq4+0mkxU5U/o5M6ZVZ73kKM=\nR:operations.go\na:0:0:444\nZ:Q1jCEnUT/omjIbXyxiYb/8JkrqR2g=\nR:signalr.go\na:0:0:444\nZ:Q1TEYTiA8N3xwXKD7p9w+O/idSKjs=\nR:usages.go\na:0:0:444\nZ:Q1F3oC2FdM5ITeTE8mNNVmn1lcW34=\nR:version.go\na:0:0:444\nZ:Q1/qOeASupzwUfxlSCTb9soiU/CmM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2018-10-01/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q105IRphCdDc4VUXbicQaoZlBw1jk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2020-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2020-05-01/signalr\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JFTCEHIB0VvhNnIPvHnoKgXkTWg=\nR:client.go\na:0:0:444\nZ:Q18SbtRYlLSHWzNHQGMg3QGioW0XM=\nR:enums.go\na:0:0:444\nZ:Q1l0LXDPAhrUIYKOuiIf3wIbqitZk=\nR:models.go\na:0:0:444\nZ:Q1zckhhhb2N6peYSxQFW2jYLfz0Yg=\nR:operations.go\na:0:0:444\nZ:Q1MfbHJ4BLWmfTAMLIvLagnDOsswY=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1TOabvANH72Sk//O1rYMn1N+DKhs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1IPcIkEREwhVqU1LPxMkI1R7BAr8=\nR:signalr.go\na:0:0:444\nZ:Q1bvBO/7Ko6Wt10/F67fBox3rRGXo=\nR:usages.go\na:0:0:444\nZ:Q1ykigBkMoAPYLmE1Hz+MkvVBrTGc=\nR:version.go\na:0:0:444\nZ:Q1BaeUGMV31UkCHR30VrGSEG+0OS8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/signalr/mgmt/2020-05-01/signalr/signalrapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1CU1MzHCZg1n8iF7C7xO3mHior6c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/sql\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/sql/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/sql/mgmt/2014-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/sql/mgmt/2014-04-01/sql\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q13hfDiUGurSfeVN9Cms0WXXkyRLE=\nR:capabilities.go\na:0:0:444\nZ:Q1Ta8teg28fU3e37GtA0xsruorU40=\nR:client.go\na:0:0:444\nZ:Q1VCv/1UdofbDxXGVNZEVxPVDExRc=\nR:databaseadvisors.go\na:0:0:444\nZ:Q1VotUt5s50SWM5BeZCuMbxHu9CIE=\nR:databaseconnectionpolicies.go\na:0:0:444\nZ:Q1vZfxEbwYXaeSme2LVPcwYlFZApE=\nR:databases.go\na:0:0:444\nZ:Q1N5hrlMylzGwU+l49vyXfuwsZWfM=\nR:databasetableauditingpolicies.go\na:0:0:444\nZ:Q1fP70lrrmi+km4EniAP7yV8Jey74=\nR:databasethreatdetectionpolicies.go\na:0:0:444\nZ:Q1WDmFD5RQZ139nHhJVu6qUO81hmY=\nR:databaseusages.go\na:0:0:444\nZ:Q1a06jKcPRaG1QoO5St+51ZDRjADQ=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1g4X6yWCdcepMP5sx8JMNDi/Fjms=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1A+0sUPi8igU7kYhCBugmuy4IrxY=\nR:disasterrecoveryconfigurations.go\na:0:0:444\nZ:Q1cc3PXIq+HO9/DpN0cLxiPYpWGf4=\nR:elasticpoolactivities.go\na:0:0:444\nZ:Q1RCWD/ziRR79Xw5qIDfNeAhvKwkI=\nR:elasticpooldatabaseactivities.go\na:0:0:444\nZ:Q1mF/FP56dQJsIT+1S8x0AcBZoxZw=\nR:elasticpools.go\na:0:0:444\nZ:Q1YSFzBkg3DxPiNAKUnIkn67a/FRs=\nR:enums.go\na:0:0:444\nZ:Q1oqnDjMZiNdbWxCYl1X1lapEMh7M=\nR:extensions.go\na:0:0:444\nZ:Q14pyRmJrxvZT7Va8qYd33bpSoJOs=\nR:firewallrules.go\na:0:0:444\nZ:Q1cPYZiv5qV3seTz0CL/lHcCCDE6Q=\nR:geobackuppolicies.go\na:0:0:444\nZ:Q1KE4vCGJYFbKjVQ6amLR+nhX6Mks=\nR:models.go\na:0:0:444\nZ:Q1Kp/Oe71HZLQMv8PCwArbjauc/R0=\nR:operations.go\na:0:0:444\nZ:Q1vGK1DvDXOLQ+KhN7BqzVIOITCc4=\nR:queries.go\na:0:0:444\nZ:Q1B6olFWJSbcgUF07rOK1GTKWbGto=\nR:querystatistics.go\na:0:0:444\nZ:Q1S9HhPArqq/HcMZZolq3zAJbudn8=\nR:querytexts.go\na:0:0:444\nZ:Q110UYIS/uSAC6Cy7j8/lZaWHmNIg=\nR:recommendedelasticpools.go\na:0:0:444\nZ:Q1Zb9umQBjt4QEDCg2mFpIJSPgZgY=\nR:recoverabledatabases.go\na:0:0:444\nZ:Q1KOQXeT6Ksjd+UdwflY+A6vTMhyA=\nR:replicationlinks.go\na:0:0:444\nZ:Q1fctdctFEPy4X8y7vfqIqF6NitaM=\nR:restorabledroppeddatabases.go\na:0:0:444\nZ:Q1220+5fwFvJklwEqRihmrsFd2lak=\nR:restorepoints.go\na:0:0:444\nZ:Q1iWgd6gh7ADCNSUsuj5baHdvYL38=\nR:serveradvisors.go\na:0:0:444\nZ:Q15/nEYho/NNRkZeh+XrOyfhu0BRA=\nR:serverazureadadministrators.go\na:0:0:444\nZ:Q1glspy1LvZWiLHLUPOdtYHRCfryE=\nR:servercommunicationlinks.go\na:0:0:444\nZ:Q13ee8zmfmhED46TdCcjZ9bQ7ClAE=\nR:serverconnectionpolicies.go\na:0:0:444\nZ:Q1Ew6b0WUzTAMLEuBVjmksbV9Ppw4=\nR:servers.go\na:0:0:444\nZ:Q1mpaOCcWc9D9124Bxtvs27seb5Y4=\nR:servertableauditingpolicies.go\na:0:0:444\nZ:Q11R2MelB3vfsJY2eRYDMwfbwIuhs=\nR:serverusages.go\na:0:0:444\nZ:Q1IUxfsukOI14uEPfSdm/GEghA+Ig=\nR:serviceobjectives.go\na:0:0:444\nZ:Q12AHlz67vAm9mLKyw0RbX8ocnvAc=\nR:servicetieradvisors.go\na:0:0:444\nZ:Q1dU834fFZTclAXIh6iL4nUfoH7/U=\nR:transparentdataencryptionactivities.go\na:0:0:444\nZ:Q1oh3wODcUdGTOCD4pYnoJSHyX7TY=\nR:transparentdataencryptionconfigurations.go\na:0:0:444\nZ:Q1jJ8XvaiJZCn/19jIlXvd1EuRXik=\nR:transparentdataencryptions.go\na:0:0:444\nZ:Q12Lyp9OvVIETyQRp0WIxpzIkP2Ug=\nR:version.go\na:0:0:444\nZ:Q1y85ojwSIFgM1t+cG62/GecAAHfw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/sql/mgmt/2014-04-01/sql/sqlapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wfz7z9XLV52Ex2Gx8Jd/4newGOM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2018-11-09\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2018-11-09/storagedatalake\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1V9MYBhzzweb7dNwjQXfmrrLqbxM=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1PpiHd6E9OdIf+eg9+aaYWPrOO68=\nR:enums.go\na:0:0:444\nZ:Q1cmXQz6Bi/l8zG/b9pzqgplohBEY=\nR:filesystem.go\na:0:0:444\nZ:Q1EJy1lVc4hwa7LxQDqd54wyI7r+I=\nR:models.go\na:0:0:444\nZ:Q1cSie6BtxMLyF10Sl8WWUC1DCrIs=\nR:path.go\na:0:0:444\nZ:Q1Vf8H6LESf9qrqgHSM5Uzjbzq9A0=\nR:version.go\na:0:0:444\nZ:Q1rMtGBTdlie5A56W0So/BENeWWHU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2018-11-09/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pDagcygrAqO9Br4o1MQYIIbSPCw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2019-10-31\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2019-10-31/storagedatalake\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:client.go\na:0:0:444\nZ:Q1hbf4rCeOsSyZFT3U1kDcgnXLk/o=\nR:dataplane_meta.json\na:0:0:444\nZ:Q1lFh3mLR6vmxkzHIc2x8MaCz9jkA=\nR:enums.go\na:0:0:444\nZ:Q1sZ2ZcNivYekVt9hoFl3jma7nyZo=\nR:filesystem.go\na:0:0:444\nZ:Q1EJy1lVc4hwa7LxQDqd54wyI7r+I=\nR:models.go\na:0:0:444\nZ:Q1uWNQX8lRqPthHKBCbzEeRTpa3SA=\nR:path.go\na:0:0:444\nZ:Q1gp5f/4bEporilmZRf8wi2G6uKMM=\nR:version.go\na:0:0:444\nZ:Q1XutIZTg6zomVG8UmibE5Xy1GTX4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/datalake/2019-10-31/storagedatalake/storagedatalakeapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q18DG1HNwusWAnFoclYu1ClFFi1cY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2015-06-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2015-06-15/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ZF4tHpGiQLyqL9JT3PzQDRRTPtA=\nR:accounts.go\na:0:0:444\nZ:Q1pdKuBXhJb/WOrVgLjtYa0S3WwvU=\nR:client.go\na:0:0:444\nZ:Q1cXk9QBtRQ4IgHXmZxJekuj15UWQ=\nR:enums.go\na:0:0:444\nZ:Q1Ho1OZPy+98vnZcw4+psQIUb02gM=\nR:models.go\na:0:0:444\nZ:Q1Oc90NMLwjBpCwiUMMed2uMzdbCU=\nR:usage.go\na:0:0:444\nZ:Q1D39PvRrkpdKwEqPHr5vp+SD6d9c=\nR:version.go\na:0:0:444\nZ:Q1SYjhGc8wBPFWYo3sifUVwJgXIko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2015-06-15/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jx+Fla13/u1GpTkeorL5m2RYNbg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-01-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ZpIwUMdvo2P/Sm//oJ51Qb+YMj0=\nR:accounts.go\na:0:0:444\nZ:Q196wDTCZkAzYjRqmcQc84nLF+DOQ=\nR:client.go\na:0:0:444\nZ:Q1940AjJ4WMfNyKlDfDkJ/mJ/RVsk=\nR:enums.go\na:0:0:444\nZ:Q1Z5tmBhnw0vyUVg8v+mffSNKI5rw=\nR:models.go\na:0:0:444\nZ:Q1iIr7apir+ATiaHd3tBghlm/4m8A=\nR:usage.go\na:0:0:444\nZ:Q1EvryPF5Ie8jbXFokI/j57z6jDIc=\nR:version.go\na:0:0:444\nZ:Q1CKaA15FxGD/Ee3G8zjNfJ5GS2uE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-01-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gmtcr3UtNjd6M+LRtBVm400trMo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-05-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1vE/HGT23uGqg+n28DAI6C0+tDJQ=\nR:accounts.go\na:0:0:444\nZ:Q1T2ZEElWp/JozaFKLwfshCTW2140=\nR:client.go\na:0:0:444\nZ:Q1TQvrmuK8LVo/ae9wdFl0atUg9qg=\nR:enums.go\na:0:0:444\nZ:Q1B8GGtoUzqOYIIBlDhykzpWvsjnw=\nR:models.go\na:0:0:444\nZ:Q1Lh2i1xdGmmMLjhrGd9JA9M/8w7Y=\nR:usage.go\na:0:0:444\nZ:Q1sTbxlkh1Pin/lOmW/1Ruh/KJzsk=\nR:version.go\na:0:0:444\nZ:Q1CDvUIW9Sgk1xEy6hVQdqFFDaeWk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-05-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q11L4XYfgKS0Cd3GGeP8E2bz6hP0c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-12-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Cmmf8va6crEXJoYkfBprRhPwaz8=\nR:accounts.go\na:0:0:444\nZ:Q1sDedFnnI4e8qW2JSUXzIEc/ZoeQ=\nR:client.go\na:0:0:444\nZ:Q1d15s7P4WYEKPfB933pOOv0ZrrY8=\nR:enums.go\na:0:0:444\nZ:Q1x9zsBB0CnSKR/VL56TjEjS9Z+SE=\nR:models.go\na:0:0:444\nZ:Q1oUetTOkT+KWaAW5aG+BF9XwtYfY=\nR:usage.go\na:0:0:444\nZ:Q1ikN4bV7GrGd0ojbkxVbs/185tpc=\nR:version.go\na:0:0:444\nZ:Q1zwI0JS/Pc8FQPs53No/ENF/rjy8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2016-12-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1Tms7L77kXi6R2HSVci1bTgPzQ1M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-06-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q19BR2JlmFGpdK7/iplLm6CydkEzU=\nR:accounts.go\na:0:0:444\nZ:Q1p85os3QDCi1WGZN7jf4KPMVEnz4=\nR:client.go\na:0:0:444\nZ:Q11s1QpFKh3CLo/jWRiu68pLfFY54=\nR:enums.go\na:0:0:444\nZ:Q1tZIeObaN0hqwIXApEdbOIPPBJ1A=\nR:models.go\na:0:0:444\nZ:Q1wt8KdPimQP8KqcLYF1yH+ZCRO90=\nR:operations.go\na:0:0:444\nZ:Q1NGx1lzmGH2b7hXLh81fcElvcpxU=\nR:skus.go\na:0:0:444\nZ:Q17iTUz/SFjJasfP6eqm8KG9wNa8A=\nR:usage.go\na:0:0:444\nZ:Q1S5oJmxq3kI7IIqrZX/YpSeMFfaw=\nR:version.go\na:0:0:444\nZ:Q1Bx4Ae2jvovSl5+VmDelzzx8t72o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-06-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1dcVvYdLp7chcZ9+UD+h5myjNhiI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-10-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1u6r4den7mqYxl6lXTpcSL9pWkYs=\nR:accounts.go\na:0:0:444\nZ:Q1oVHsgYIkQ3VhLeb77vB03hEA0qE=\nR:client.go\na:0:0:444\nZ:Q1xW3+mTmiCJGLyPyqbPvfkGJSpO4=\nR:enums.go\na:0:0:444\nZ:Q1yfdbC0DHoFqr1StNXV48bNMiQ1o=\nR:models.go\na:0:0:444\nZ:Q1UOviVyVukOHANkX7Liwb9dAIpF8=\nR:operations.go\na:0:0:444\nZ:Q16Sj7XalC3aHrZ75nc2eegfZXkTE=\nR:skus.go\na:0:0:444\nZ:Q1FdMvgRq5WEDDZV0nlRnuZbTwWv8=\nR:usage.go\na:0:0:444\nZ:Q1sAFbSjzgzpTs4C8hUuc9kwAcgTs=\nR:version.go\na:0:0:444\nZ:Q1wptSZYXY3ovPyGndOmWv1Y7VIHE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2017-10-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ILHO8yigPC3Bi40bhVl0IvvUpj8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-02-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1eU4vXr8XEfOyzr89+AyMiCwTex4=\nR:accounts.go\na:0:0:444\nZ:Q11ITKcWeHrlUIxLMYNXAA4U9o3pg=\nR:blobcontainers.go\na:0:0:444\nZ:Q18wAwv4scJ2jIGrcJ86Nbt/+QHpg=\nR:client.go\na:0:0:444\nZ:Q1NwPJkTFr4cHUJ1pJ59Mt6NUSaOs=\nR:enums.go\na:0:0:444\nZ:Q1q3Zzjugm9sjUiKPR/A1M6uX+iHQ=\nR:models.go\na:0:0:444\nZ:Q1lXY9SZm6xj9B3U3eT76pxgSCCbE=\nR:operations.go\na:0:0:444\nZ:Q1TDl+zqdLJ1wgSpXVZiZVUobq25U=\nR:skus.go\na:0:0:444\nZ:Q1DtO2O3j4ranJpMasrQdf37nMx8A=\nR:usage.go\na:0:0:444\nZ:Q1kuu2YS9riXb2/c0/fbolE/3z6r0=\nR:version.go\na:0:0:444\nZ:Q1Gr78tg9w4uI5mrtZQfE91ASPsZk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-02-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1lxw5MPv1SkHx0CERfXm2+VmYPhw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-11-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uV/TUekVYLSa6O2twEJdt5XdnwA=\nR:accounts.go\na:0:0:444\nZ:Q10eI5qTzlQgiq4EJkP2Si8+HEAcY=\nR:blobcontainers.go\na:0:0:444\nZ:Q1lNt0fhlb7j7wg7EXvoi9mUG3zYE=\nR:blobservices.go\na:0:0:444\nZ:Q1A6tKTQqeDpk5vktQw6HTIyR+rg4=\nR:client.go\na:0:0:444\nZ:Q1ULz0bzowHW1Rd+BwflVDrwM74rE=\nR:enums.go\na:0:0:444\nZ:Q1WkCu7yQbZ9cNcwwo6Ois/Xjrh34=\nR:managementpolicies.go\na:0:0:444\nZ:Q1oTlsZzLXZLIXQtCHmoFs9/rnZDw=\nR:models.go\na:0:0:444\nZ:Q1bR1DJ2Ayu861Vg4EEJGcT5M2d90=\nR:operations.go\na:0:0:444\nZ:Q1yQDPLQKBYqnWuwBJIjsSuOZf2s8=\nR:skus.go\na:0:0:444\nZ:Q1q+MJ43QAK5fa0br/mk9Tcder8zo=\nR:usages.go\na:0:0:444\nZ:Q1V+Ir2EnSXwrNmmRM2BtdR9hTmIo=\nR:version.go\na:0:0:444\nZ:Q1y32MJgTGZvh2LJygB+9xxuHP9qE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2018-11-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YWWKsmGE6JJA7UrUb8HnwK6cCjc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-04-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rVefxKzUyqM9J/zyhBpn4lX9Sb0=\nR:accounts.go\na:0:0:444\nZ:Q1zGr/OKmJw8DoHOkYHQ1h9qWua2U=\nR:blobcontainers.go\na:0:0:444\nZ:Q1xGJLNEaRRGpotRd17iiI3YG7IUw=\nR:blobservices.go\na:0:0:444\nZ:Q1hT+FaDiK43/dtZVPZtbtPAIyd2k=\nR:client.go\na:0:0:444\nZ:Q1jRbq0lFCsRs9S6Qmy1rFWgmCVYA=\nR:enums.go\na:0:0:444\nZ:Q1qrM6ud24rhDzobiGl5RWge/Zh+0=\nR:fileservices.go\na:0:0:444\nZ:Q1JV4Qr9Pg682rihH9pMDt1RYoZ+I=\nR:fileshares.go\na:0:0:444\nZ:Q1WMgrjIYfaS0x6G68O8O33GlfNBM=\nR:managementpolicies.go\na:0:0:444\nZ:Q10PnM882je+/VYKvLmzwaxf414/8=\nR:models.go\na:0:0:444\nZ:Q1cK4ZodIWaBtsze8s2TVpRTkmSiM=\nR:operations.go\na:0:0:444\nZ:Q1Kl/QMmbvZLJvorW8/VqfOdjwTAw=\nR:skus.go\na:0:0:444\nZ:Q1Z7iDZx0GDiqKl8ADxqs2+upWn3w=\nR:usages.go\na:0:0:444\nZ:Q1OK6i8xFTOLiJG47UqxG+1SMiCSU=\nR:version.go\na:0:0:444\nZ:Q126mrxXXdLobQv+IGmowqVVVb/Ys=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-04-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vE7r1gFxIWuQMQ2U3+e/QoTBZFc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-06-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1E4UXb6Pr2FbxsgJXQJ2ax3a/iK0=\nR:accounts.go\na:0:0:444\nZ:Q1tDoXUUKMnEeVXXgyw7ArRpBzmh8=\nR:blobcontainers.go\na:0:0:444\nZ:Q1kWfPuhzHSgfz7o5bFfZUHpAHdNo=\nR:blobservices.go\na:0:0:444\nZ:Q1a0nhHtKHnp1kcYQCgZfY/tuBrHM=\nR:client.go\na:0:0:444\nZ:Q1OWAVwfQBlQat45qydUm9DZufIrA=\nR:encryptionscopes.go\na:0:0:444\nZ:Q18fe0lujAdLe3oultNRKIgMUW4C4=\nR:enums.go\na:0:0:444\nZ:Q1A8PJnBQDrKV5GpfLIqj7SEVSO3Q=\nR:fileservices.go\na:0:0:444\nZ:Q1mbLOO3whv8Wd/Ja10B65QSbkAmk=\nR:fileshares.go\na:0:0:444\nZ:Q1aX3JYUbDk2mjMYHCaSPzHbW3BOo=\nR:managementpolicies.go\na:0:0:444\nZ:Q19S06FKX/x/rUQhnU8GcjnBGQMqg=\nR:models.go\na:0:0:444\nZ:Q14fcm6jrS3SrUPXQFUrbQ9mJbo/I=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q1O/VCGPAsKLS7m9w6UFHtzlCdHvA=\nR:operations.go\na:0:0:444\nZ:Q1SPFMrllIgzA6cOeAJBX6IAhqnrU=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1t11H4kB45+qOdLU+Z8u8NV95T/c=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1W4zjeBVGD5bcN/t5ZBTiciJRW98=\nR:queue.go\na:0:0:444\nZ:Q16yBRQoHrbojES41swnTSW9MiMmY=\nR:queueservices.go\na:0:0:444\nZ:Q1Tn5X2JpP9imvFv3PvenJ3mFVfuA=\nR:skus.go\na:0:0:444\nZ:Q1ryiZStwE1qTaYG7KBD6nFLtZVqg=\nR:table.go\na:0:0:444\nZ:Q1vw6DLpJLE28FrRkCqPkuDH3ViU8=\nR:tableservices.go\na:0:0:444\nZ:Q1VEtFJF2TYPgFSVEfjLH23bEg0u0=\nR:usages.go\na:0:0:444\nZ:Q1OhLDEe1oJAIEDGEE8d9JslxvTGU=\nR:version.go\na:0:0:444\nZ:Q1IWhd280sACJjjgmAP2r3cDrEEzk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2019-06-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1o18asGJMOwm1mZXTPbYYk72Kt0Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-01-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1zcYfd00bmSnXxnqzdsuXAoOXf4s=\nR:accounts.go\na:0:0:444\nZ:Q1TjjEA2AJ/rgmnnykqGhC5H+0jx4=\nR:blobcontainers.go\na:0:0:444\nZ:Q1yz+z/LPY44VrzmTEdkt9KoZkuG4=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q1YvhBlDc5ppfklFnzM/YaHgxjI28=\nR:blobservices.go\na:0:0:444\nZ:Q10MFod53kMz3yOPg5wwk9UMuWQIM=\nR:client.go\na:0:0:444\nZ:Q1hmo3mK7+On9SFE65Ab81xyrqrN8=\nR:deletedaccounts.go\na:0:0:444\nZ:Q18G5aVM2yY+Kvkdrj+WKqi85jVH0=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1C1kSF9V1FZWpPq0E1JFAz2IUyOQ=\nR:enums.go\na:0:0:444\nZ:Q1DXwkSqF+a0b7spb7xrgam3n7+Ak=\nR:fileservices.go\na:0:0:444\nZ:Q1SLf0B5Umxh8zvcFagyRciCEi6Xw=\nR:fileshares.go\na:0:0:444\nZ:Q1n5pre0lmzusoNanL0kpJga+LuTM=\nR:managementpolicies.go\na:0:0:444\nZ:Q14uYGQgvAYOYwMvpc0G4PO/vsGPA=\nR:models.go\na:0:0:444\nZ:Q1Vxjg/OPf7WNTX2SHkYYVQCGkiBY=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q1chlNYycYKhokP6p/Ltpqn6QSx48=\nR:operations.go\na:0:0:444\nZ:Q1pTsuSikwAFYVXXFpfyZDVYYnpSs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1kke/GQI7JukHdRUuipRg+PumwTs=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1h04uDwncykBUcsAYJY1b2w+6H5E=\nR:queue.go\na:0:0:444\nZ:Q1OeGErTWpPKHh4mBDbzdBuOcUTkg=\nR:queueservices.go\na:0:0:444\nZ:Q1STOhJZBPM3SlFAMbg1cq22XjAWA=\nR:skus.go\na:0:0:444\nZ:Q10pkiZFsVicxL3MZ1lBxZK1gJCdo=\nR:table.go\na:0:0:444\nZ:Q1W2BnwIdeZF4RaIezny6WMzFrQDQ=\nR:tableservices.go\na:0:0:444\nZ:Q12HyasUv7iZxrDV/zCkGKoRmC/Qo=\nR:usages.go\na:0:0:444\nZ:Q1ptdmubA1liTam0X+hXC8TbaJP6k=\nR:version.go\na:0:0:444\nZ:Q17+wmnFBGSFjhj0rHSNfQqcRDiFY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-01-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1k8gaMcUP/T9MtC4663jJNza/Kd8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-02-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Xi/wpCYpz+S8oEC2hTrKN9kXwQ0=\nR:accounts.go\na:0:0:444\nZ:Q1tImdbjaroVyxv9ENAmvz2eKLfCY=\nR:blobcontainers.go\na:0:0:444\nZ:Q1RarGSq0xmV/YF36lqkq+FfBF/S4=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q11NbOvu5wc/iVMyJVz3bJOW/+PtU=\nR:blobservices.go\na:0:0:444\nZ:Q1xD77tDd2++q0krbRTeh2nMGsXIg=\nR:client.go\na:0:0:444\nZ:Q1F3lhTRdOpM/5ZO7SiBjLNCI2Gpc=\nR:deletedaccounts.go\na:0:0:444\nZ:Q17DSw2RYmcCHp/DmB7rI30bWFXT8=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1SJcQnflLdcPEAHCnlg+sB8v+prM=\nR:enums.go\na:0:0:444\nZ:Q1HmEKCre5jTdsMbwYE57Ef2TAMFQ=\nR:fileservices.go\na:0:0:444\nZ:Q1WwfDadoKSTTruUO/zoxYkHvCbJo=\nR:fileshares.go\na:0:0:444\nZ:Q1NdgYwj9VMiAiVe/hwXBxVbE+kO0=\nR:managementpolicies.go\na:0:0:444\nZ:Q1oRm81lowBR7yY62v0U0RqOoIQJc=\nR:models.go\na:0:0:444\nZ:Q1WpSCqGjLIpQFtN2dzobeE38Laas=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q12vFh8UCcuMuxyoZdC6NmvDQeTUs=\nR:operations.go\na:0:0:444\nZ:Q1SM6is688rQ6ICf7YFBB5AkJ3jTY=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1T0yLEXwGYLPNTzUreMb2wy6XXnM=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1A6J2E3DON+9XWpy/o9ZSw5QwyPY=\nR:queue.go\na:0:0:444\nZ:Q1nz1SgW1Et4zfPmqAEz5n9eu7WDM=\nR:queueservices.go\na:0:0:444\nZ:Q1IzctUSfp5tMZZFoGa/kZJAirm2A=\nR:skus.go\na:0:0:444\nZ:Q1iKs3oj3pUNYehj8poo4wjGw/Yts=\nR:table.go\na:0:0:444\nZ:Q16Zw8u0i6d9z5arTe/rf0UpljFVI=\nR:tableservices.go\na:0:0:444\nZ:Q1tYExEYpC+Y6T0qrVh40PQodX+UI=\nR:usages.go\na:0:0:444\nZ:Q16AzV7PStlAHhSLibQxMRBMdd2nI=\nR:version.go\na:0:0:444\nZ:Q1YMZe7MP//JQrkPl5cbivrZQuTf4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-02-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1z3w2FpTBxhT/EguK5nTL5XHzWQw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-04-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BxmkGzI6pvQadoTPnl5sXt3tfU4=\nR:accounts.go\na:0:0:444\nZ:Q1tqdK8LPClcHvj3LTQzRWZrMkXGg=\nR:blobcontainers.go\na:0:0:444\nZ:Q1dgmZL/ZdC/32C6DdzdCVizxYrSU=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q1fheY9w/bxhhdtybr8W3BO72PApk=\nR:blobservices.go\na:0:0:444\nZ:Q1Qp516v1+ma1HEZHmzlHXvoV3cyM=\nR:client.go\na:0:0:444\nZ:Q1SrdYNV5ewpA89aN/9oNXxjJjhqw=\nR:deletedaccounts.go\na:0:0:444\nZ:Q177mwVbzkQL2zqeOySaT8OtBDlTk=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1226UwbK2TJHuZOdyljBtJuWflTM=\nR:enums.go\na:0:0:444\nZ:Q1LZLyWR60343GF2dHATp/QUbpCeE=\nR:fileservices.go\na:0:0:444\nZ:Q1msrMzGkRdIMS2QBJiOs9y46tjDA=\nR:fileshares.go\na:0:0:444\nZ:Q1Fiis+385A5R5ASQfm/50t9jdB+I=\nR:managementpolicies.go\na:0:0:444\nZ:Q1EG+voJrxXJuQagzhYCfu+JYN4dE=\nR:models.go\na:0:0:444\nZ:Q1f9079jXI+uNDv9YjbVn5Zz93cR4=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q141/W1PQm3WbfdkZWclO9JWY+Upo=\nR:operations.go\na:0:0:444\nZ:Q1Uwey7Iep2ScOW4okO8VrnTHtgGI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1pMyefqeMToQ/ag2aKUlfd8VlVoY=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1GB7uCro5PS7oNuvfx1wdvLtF7Uw=\nR:queue.go\na:0:0:444\nZ:Q1GZXxdT03fl/xEOybWDbmFz9jxJI=\nR:queueservices.go\na:0:0:444\nZ:Q143DCwNEKzv/MflVD3mpVBw85uso=\nR:skus.go\na:0:0:444\nZ:Q1Gx3U6lbL6lt/hV8fNbfYhdZWgvA=\nR:table.go\na:0:0:444\nZ:Q16035Ltmm2bpaTzT0z3pqOIZ+z5w=\nR:tableservices.go\na:0:0:444\nZ:Q1FMaHEaQp2NJUVs5cRR0lZ3WQVYw=\nR:usages.go\na:0:0:444\nZ:Q1wJzEH/AOLFiyMiEt+dmMbxRXYk0=\nR:version.go\na:0:0:444\nZ:Q1bozH98eqI+hReA1r+pSokbdqJ5o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-04-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1QPJUk7NJtVEUWI+Q5TgkKfoy+pw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-08-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1n5/m5OSYUbNv7hHRz+G0EeW1f80=\nR:accounts.go\na:0:0:444\nZ:Q1zvSS5gBr/3XrgvkqFwmE6kYUCxY=\nR:blobcontainers.go\na:0:0:444\nZ:Q1GAWx1ZmQFrKic4goOWbfCkxQYQI=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q1IoudqSvQsuWG3s1+SYb4YusK83E=\nR:blobservices.go\na:0:0:444\nZ:Q1AelBfxvn0gU9yYzogRaLUePthPM=\nR:client.go\na:0:0:444\nZ:Q17mse9lrrHFXoV6CUWoivMw5opi4=\nR:deletedaccounts.go\na:0:0:444\nZ:Q1neg/3PZWnu+JhlIhbX79IjA4ooQ=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1ZwPUTOL0hL8ckgs5e05SHe971h4=\nR:enums.go\na:0:0:444\nZ:Q1LhgkZMSbyvPp8jDEpAfybIMC8ns=\nR:fileservices.go\na:0:0:444\nZ:Q1+lDty87T9ac/FZJy9DZkBtaMzyw=\nR:fileshares.go\na:0:0:444\nZ:Q1DsgBHb7hxYkvKUYR4oCbdOYMH3c=\nR:localusers.go\na:0:0:444\nZ:Q13/UG46Hh4JMPYC80W0aRNk8ALpw=\nR:managementpolicies.go\na:0:0:444\nZ:Q1gwhZhYCroOi6pI3AIeqzrvR/3Jw=\nR:models.go\na:0:0:444\nZ:Q1JcHmezrDA/zpvVlDo1jOQqfzJx0=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q1dAkMT4NxZSZpn7hCUkhljBHWeO8=\nR:operations.go\na:0:0:444\nZ:Q1UVSS92zQY7VYpmC7PHsS6Qbstf0=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1zHPQVL+Nk36x2SCHUidNva76wO8=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1Tx2Q7AsT5Sp+O6SIq0nO7tw0y/o=\nR:queue.go\na:0:0:444\nZ:Q1pcrr400SeQv3r75QbQosKGwjaPA=\nR:queueservices.go\na:0:0:444\nZ:Q1WINFrlzQBL0N0jDB5WMOyE5W1NE=\nR:skus.go\na:0:0:444\nZ:Q1vvfSYfu+MGBwPYO96JeGZXjuiJA=\nR:table.go\na:0:0:444\nZ:Q1/MvcmLFPPZ/MFr4hUeagZsRQR9U=\nR:tableservices.go\na:0:0:444\nZ:Q19Voxr6luz6+2U0MTOCKpdzQRjDs=\nR:usages.go\na:0:0:444\nZ:Q1SAovjUytjXrXcxqYfdj62jQuEcA=\nR:version.go\na:0:0:444\nZ:Q1UNTGuP1JYtujVpMl2XwX0ry0CBg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-08-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DkQvhZol7s6qytQASMyaPhbBrfE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-09-01/storage\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1jiWDmCXZCSgDzK3iiXxlaATDC2w=\nR:accounts.go\na:0:0:444\nZ:Q1wNG9EzPyLmIcrmw5d1HjHPsfqzs=\nR:blobcontainers.go\na:0:0:444\nZ:Q1lHqrz2w82WTIUoJR49MOz+gn6Gk=\nR:blobinventorypolicies.go\na:0:0:444\nZ:Q1JNDvYcOFsXopuUY+SnxD6C9K0SU=\nR:blobservices.go\na:0:0:444\nZ:Q1TBxfiDEdCS7K11k4Fcn8TfGRQPA=\nR:client.go\na:0:0:444\nZ:Q1+MbJJ02rNE4fzHAqGlFElWEOcyY=\nR:deletedaccounts.go\na:0:0:444\nZ:Q1OM9S9cc3eA1MZW77bHgzl2jBh8c=\nR:encryptionscopes.go\na:0:0:444\nZ:Q1D4fYkcTRADhWazc+T7PRyCElRA0=\nR:enums.go\na:0:0:444\nZ:Q16azcaRVuJ1/nJ78lFafPKnAP2O4=\nR:fileservices.go\na:0:0:444\nZ:Q13wRZfdBaJP2wj2a5fRtsgVBVLV4=\nR:fileshares.go\na:0:0:444\nZ:Q1k/OQJbLwEtFydaOO7RWUJp1TRac=\nR:localusers.go\na:0:0:444\nZ:Q13BNmPz8VAseEcW/SPqjANI/kHY4=\nR:managementpolicies.go\na:0:0:444\nZ:Q1zdRAZ0mHFtzCfyjuLQ0sGjlAsjU=\nR:models.go\na:0:0:444\nZ:Q1y2Qy0IKe67/ZN7Vv33+vt0IfJxw=\nR:objectreplicationpolicies.go\na:0:0:444\nZ:Q1ToepTNgatbCV5nXIo1m3meYz/Bg=\nR:operations.go\na:0:0:444\nZ:Q1LRxth2T8hb2t1n4FWOsq//fDfU8=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1+ipMgk+aJJz/DWOpnm5uZ0Yt8Vc=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1pHPOxMwmTEI9NdphwNcOj/7wHPs=\nR:queue.go\na:0:0:444\nZ:Q17YCn5caI52k5+2DVPVSno5CN+qc=\nR:queueservices.go\na:0:0:444\nZ:Q1HFra1XGU5WPp3iwJe8AL8XAL4M4=\nR:skus.go\na:0:0:444\nZ:Q1sfQo45grnZ0bTPMWHvKY+AQBpII=\nR:table.go\na:0:0:444\nZ:Q11c5hzPvJAm5UXCv3uO9LUC/TEkI=\nR:tableservices.go\na:0:0:444\nZ:Q1RBP8GPoO8NEDtrQAjBaYfxd6WVw=\nR:usages.go\na:0:0:444\nZ:Q169FFi8ScoKZtxNCgCIL5uW8aoho=\nR:version.go\na:0:0:444\nZ:Q1yx3vP7iWzE+Ji8yWVRZNmQucAnM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storage/mgmt/2021-09-01/storage/storageapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1er6/8UtzlJ1GFDrUgUISZL04Eh4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2019-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2019-11-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1wzW8KnKMa32E+Z10C4EEZskMgQk=\nR:caches.go\na:0:0:444\nZ:Q1GhbjCrFlyhf98nMZuyx2MlQx0K4=\nR:client.go\na:0:0:444\nZ:Q1d1FgoLpJx7w468ibHE4TJ2dLkiI=\nR:enums.go\na:0:0:444\nZ:Q1IRFPFpJfQF5Chh2qZwMWXocoUJU=\nR:models.go\na:0:0:444\nZ:Q1QU/0IeicY2BGAJ8+ZYsSD7y0N7w=\nR:operations.go\na:0:0:444\nZ:Q13kxGjEAgvjEfT98kAkLjDlICFjE=\nR:skus.go\na:0:0:444\nZ:Q1yhtYg9O7zfrWqGOFcOCurAcOS+o=\nR:storagetargets.go\na:0:0:444\nZ:Q1YsHDwsiK5o5JV7mViooT6DNjQMo=\nR:usagemodels.go\na:0:0:444\nZ:Q1msset8J5A85AESCQS9R0x3vgUEQ=\nR:version.go\na:0:0:444\nZ:Q1q8oqYw6eZRLSn8SGf6Alv45kI2o=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2019-11-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1srqXQ5//pHWmRXqiHqO3QvvCkXo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-03-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1G8c2ik+GnJdGd9Ox/JLxs0HLezU=\nR:ascoperations.go\na:0:0:444\nZ:Q1mA2ieZACShCgnfKoQgSjXH+QDEk=\nR:caches.go\na:0:0:444\nZ:Q1kKfJwB0NxJqETxmyI3+TxFz+OJM=\nR:client.go\na:0:0:444\nZ:Q1XS2nH9HcMa0IALK/GhY1B3KhcFU=\nR:enums.go\na:0:0:444\nZ:Q1ff7on2duMDHE/hxbUChHg/OBZzc=\nR:models.go\na:0:0:444\nZ:Q1zc3tA8bj0A3J5UyGE7G5iaLfeyo=\nR:operations.go\na:0:0:444\nZ:Q1fh1D25hCNirsm3a5lVZydrZ8ppk=\nR:skus.go\na:0:0:444\nZ:Q11sqE1d91lckLMQW2KQ8xHLVYiEo=\nR:storagetargets.go\na:0:0:444\nZ:Q1ITXT/cHiAa+W0ZqzVkh0zYS/YO4=\nR:usagemodels.go\na:0:0:444\nZ:Q1lCEYFNG3i8c9QSMYnNVyfnqTpKY=\nR:version.go\na:0:0:444\nZ:Q1heJGHz/kxGxdqbzfIHEroznM9bg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-03-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1KZox6I4D9YsSrIV7hKvSELcQDqc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-10-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1swixck1w88LdCup5IDr4X+p5px4=\nR:ascoperations.go\na:0:0:444\nZ:Q1p7Upt+TOPnDiqjGZzUeUd5CRjq0=\nR:caches.go\na:0:0:444\nZ:Q1kktiFHSkz7nv+aSPGp2R6Wz2yRI=\nR:client.go\na:0:0:444\nZ:Q1AQxLLfh3NZAPbw/xccZZUvLa7Jo=\nR:enums.go\na:0:0:444\nZ:Q1LvO7U9y4gyQi20iUM2FshtOfrzM=\nR:models.go\na:0:0:444\nZ:Q1H6VP+YZbpkus+TQUA4ONf1cgH7M=\nR:operations.go\na:0:0:444\nZ:Q17lyxkfrryYHXdxRLHNgmcBdk5bo=\nR:skus.go\na:0:0:444\nZ:Q1WB7pyksYVIcV6H4ZiPaALuiD+e4=\nR:storagetargets.go\na:0:0:444\nZ:Q1JyKY9efrLkEmQsNxm4TWFHK0t3Y=\nR:usagemodels.go\na:0:0:444\nZ:Q1v05qIYSsPZumKILSt1PLkRO1HjY=\nR:version.go\na:0:0:444\nZ:Q15cjgPyhw5NmoNKfkITKcDgI8cPk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2020-10-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1e+7ndEs1vArdyqdXTsxvb1N4uEs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-03-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dkdi5e/zU91SVNsJK0gMbDsu3nQ=\nR:ascoperations.go\na:0:0:444\nZ:Q1EjK6ql458JEk92ZqevoJyjJkgMs=\nR:caches.go\na:0:0:444\nZ:Q13VSBTk2IOe+pk6H6GIrTKBT16dg=\nR:client.go\na:0:0:444\nZ:Q15uPCBIr3FLRHwMeTjfW0QFqv5x4=\nR:enums.go\na:0:0:444\nZ:Q1+BBGxomqVQ8Tw3ZrC10QxYh6BE4=\nR:models.go\na:0:0:444\nZ:Q1Fs2Sg5ZOeWQccS+y9Gi/EVsefRs=\nR:operations.go\na:0:0:444\nZ:Q1e+jSKlvMjsbTXak0xJ4fnaBnRK0=\nR:skus.go\na:0:0:444\nZ:Q1XZcqWgv5Qf53dDzW15/KDxwmjFw=\nR:storagetargets.go\na:0:0:444\nZ:Q1ZoAMHg/8Tmw0qgV038DndcsRJ2M=\nR:usagemodels.go\na:0:0:444\nZ:Q1v5j1LMLwPaeoq6nS1chvPxD50OU=\nR:version.go\na:0:0:444\nZ:Q1cOemEwj/h2hKnHu7/iHFX5xSzB4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-03-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1pVgzLS0ngiX/sndWTGbHmumcnyc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-05-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q169+zsVjCJ9Lo0wzqLtu8cL5TLm4=\nR:ascoperations.go\na:0:0:444\nZ:Q1Qi1EWAonoeuy0kMmlCtW2TQQ3vA=\nR:caches.go\na:0:0:444\nZ:Q1Eyw5yPU1bdKL+P3VoTFHGN/VOG0=\nR:client.go\na:0:0:444\nZ:Q1l0UCK7JvOFYPiL6Vhuii+MoMKJs=\nR:enums.go\na:0:0:444\nZ:Q15NX9mcvmilrxVY0mdUqvG4a1h0w=\nR:models.go\na:0:0:444\nZ:Q18JHAMfVvCdSE0oEfI+oQ+p94G6w=\nR:operations.go\na:0:0:444\nZ:Q1/ZDukOnU2UFbWZnsYf0vB0TcWdY=\nR:skus.go\na:0:0:444\nZ:Q1i7BBno8LlNQbLrTwaYyq39jCabw=\nR:storagetarget.go\na:0:0:444\nZ:Q19F3by3TtcDpK/0Toh/02YqtaVxI=\nR:storagetargets.go\na:0:0:444\nZ:Q1si5EY3zZE+PCrG2Bc8RkgJS8BVs=\nR:usagemodels.go\na:0:0:444\nZ:Q1986WZiUDpup6CmY/4LwMDTYTZ6o=\nR:version.go\na:0:0:444\nZ:Q1pcJacMj+HF9lJLHom4EYYxQoq3U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-05-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13NuJvDdYnhnyy6vJaBncihLm0aA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-09-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1fEO+LLkBPTIpB9g+EPtc9F5wbkI=\nR:ascoperations.go\na:0:0:444\nZ:Q1EQ+ctUqN69K06zK8p91O7GHsGmA=\nR:caches.go\na:0:0:444\nZ:Q1XYISUj4YG2xC5s5JWtEKN5mOMjY=\nR:client.go\na:0:0:444\nZ:Q1glSXN4zCRg6pRFrNJgbRXdUp+tk=\nR:enums.go\na:0:0:444\nZ:Q1/y1Uka1OXkJFgBmM7rgAO8PJSEU=\nR:models.go\na:0:0:444\nZ:Q1lY0/Ieydahrf+2L8Jyp2re2VTso=\nR:operations.go\na:0:0:444\nZ:Q1zw9HBogK7sHLhZNwD+MNB3/HxGg=\nR:skus.go\na:0:0:444\nZ:Q1ZV1rHNbQiU1CPWhUcWmOIpH10wU=\nR:storagetarget.go\na:0:0:444\nZ:Q1F3NbpbXWlIRocNLfieKFIfOehvY=\nR:storagetargets.go\na:0:0:444\nZ:Q18HaaLarBVSHpDVcpkMS9lgfOHTI=\nR:usagemodels.go\na:0:0:444\nZ:Q12ONeyLQ4bQ8mWAj6NNz1V5XYA34=\nR:version.go\na:0:0:444\nZ:Q1cbvDMHocQWvcbxMB6llFBzdV+Nk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2021-09-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1RZrQHbb9mcvY0Z3/zIwqakmsphM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2022-01-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2022-01-01/storagecache\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Z6O9Re5V7u3EmegBXafysutwkJE=\nR:ascoperations.go\na:0:0:444\nZ:Q1F6EU0FfnVoa+I0RLvGK+09EP5qM=\nR:ascusages.go\na:0:0:444\nZ:Q1EGJIbaNvT+bMvgWYj8bMWTSC8Eg=\nR:caches.go\na:0:0:444\nZ:Q1bLcMI0gxdido2cgqrIIZC/Wr9ts=\nR:client.go\na:0:0:444\nZ:Q1UTXinRtVkC7N4+N8OhjB1hxVBMk=\nR:enums.go\na:0:0:444\nZ:Q1/y1Uka1OXkJFgBmM7rgAO8PJSEU=\nR:models.go\na:0:0:444\nZ:Q1TYoYqbKL9RI60iG/bZksvV18tf0=\nR:operations.go\na:0:0:444\nZ:Q18t6zprSqzeU4wlR71JVx1bllK88=\nR:skus.go\na:0:0:444\nZ:Q12GvmL+usQnwpJNcDJYlAt+cSvzQ=\nR:storagetarget.go\na:0:0:444\nZ:Q1YSsdM/wi5tXo4XvWX5MU7e3MlmM=\nR:storagetargets.go\na:0:0:444\nZ:Q1kBYDN4N5EcJJT9HZ133WJGfYg8c=\nR:usagemodels.go\na:0:0:444\nZ:Q1Z1CA5CybCWIr8LyqOAXi92QC+Ik=\nR:version.go\na:0:0:444\nZ:Q1Wc8KdXT3vWoKD+vigZMR8dzwBL4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagecache/mgmt/2022-01-01/storagecache/storagecacheapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16EFPxehbDh0NMb6a5V6iwqHFjNo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2016-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2016-11-01/storageimportexport\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UXHvuOcI8p7lmvjlwPyl66jsj6Q=\nR:bitlockerkeys.go\na:0:0:444\nZ:Q1quyZT3QnzKcNi4M1H5QV0hbM5OE=\nR:client.go\na:0:0:444\nZ:Q1lI8ZTfS127NC6dGp9L2DEpiYocM=\nR:enums.go\na:0:0:444\nZ:Q1zwIMSg2C953hjidkeWA7a2Fi7kc=\nR:jobs.go\na:0:0:444\nZ:Q1yyvO+zSxm7kpKsDcO63Dc3eqpT4=\nR:locations.go\na:0:0:444\nZ:Q1WjzpBMU7eSbrEZ8pooXE0I7sBcE=\nR:models.go\na:0:0:444\nZ:Q1ofBE0hv4KXW4jR4Bg9MJtftuGSY=\nR:operations.go\na:0:0:444\nZ:Q1zGGK+UujX7g3rAApgxDXOArd67g=\nR:version.go\na:0:0:444\nZ:Q1DZQBKtBl2RvdKlzVZketreeU1qM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2016-11-01/storageimportexport/storageimportexportapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1P6phMweSJHretCN9vgaTjZdF0IY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2020-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2020-08-01/storageimportexport\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1BBfrPj0XRzubw0xwBPHbUUj116g=\nR:bitlockerkeys.go\na:0:0:444\nZ:Q1Ch4nmQ5xHbskIik/surzSS9jo1c=\nR:client.go\na:0:0:444\nZ:Q1wnwWn+b6T24aRrGRWChxfhR07EA=\nR:enums.go\na:0:0:444\nZ:Q1vWWX4kTm9ZcnE8FDFhjcgDF7fmU=\nR:jobs.go\na:0:0:444\nZ:Q1KCFC+hXgr1S34lFgxWJzA1bJy0s=\nR:locations.go\na:0:0:444\nZ:Q1wQHhlUq9qKgXgfpQ7NpHiM0Jn0k=\nR:models.go\na:0:0:444\nZ:Q1XrvkgHZTKQyLsY93MLkg8UA/Nmk=\nR:operations.go\na:0:0:444\nZ:Q1fLbrZmw20sFm3KuneVY2qwSXLBU=\nR:version.go\na:0:0:444\nZ:Q138FZhJ6rfrkKc7p7vZ6P/KWm8oo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storageimportexport/mgmt/2020-08-01/storageimportexport/storageimportexportapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IMQBwF0cy5wkCaKMYcQiQInNOx0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagepool\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagepool/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagepool/mgmt/2021-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagepool/mgmt/2021-08-01/storagepool\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1xwByeGi1dFJVpRfm3bMH+b+6jHw=\nR:client.go\na:0:0:444\nZ:Q1OuQxBOpzuqdVi/oqDLpicDEejIg=\nR:diskpools.go\na:0:0:444\nZ:Q1CnuqAWCvH5IjCRbGG07ai87vGpI=\nR:diskpoolzones.go\na:0:0:444\nZ:Q14s/8meqy0A3ZI+ZGMIWL9KUkHVI=\nR:enums.go\na:0:0:444\nZ:Q14T5Miw/Fs50d0Ms90FcdQ3itbH0=\nR:iscsitargets.go\na:0:0:444\nZ:Q1LykHZCzxoOKHQLQSpcs+N08elzw=\nR:models.go\na:0:0:444\nZ:Q1lptHtadE9QrgNheA/ZYIaVbP0Qo=\nR:operations.go\na:0:0:444\nZ:Q1QloxItasIvfTIM/KY4rjBaFj/EI=\nR:resourceskus.go\na:0:0:444\nZ:Q1D+UxZQgkaBg5Xc4gI8/h1isIv80=\nR:version.go\na:0:0:444\nZ:Q1X8U5uA7OLGjS43w8bEjUGN9ihew=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagepool/mgmt/2021-08-01/storagepool/storagepoolapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14Gs8uIbmkYYol67zzUja/MqRy2s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-04-02\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-04-02/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ic6Avui0+/B0ldC3TQWnoyGco4Q=\nR:client.go\na:0:0:444\nZ:Q1UwfT/g/e9sSd7CjNywMmXkHbBYk=\nR:cloudendpoints.go\na:0:0:444\nZ:Q18VLIfO25Xm9c2OYnHUqru5Q/XUc=\nR:enums.go\na:0:0:444\nZ:Q1y5cfcPhRymaChuIF80JsuroT9TM=\nR:models.go\na:0:0:444\nZ:Q1jRVzZHYd5p0tkt1xVRzTCxiQHUw=\nR:operations.go\na:0:0:444\nZ:Q11V2piGI0uXV6JWqC8oAFp8pkvfk=\nR:registeredservers.go\na:0:0:444\nZ:Q10s0+D7G2OC9ZAOiPzclDlA2XjtY=\nR:serverendpoints.go\na:0:0:444\nZ:Q1FWcCmu3Z9EEWNpuQYR3IT652WM0=\nR:services.go\na:0:0:444\nZ:Q1Wxfckhs4Anl4OM39V7+HfeFQD/c=\nR:syncgroups.go\na:0:0:444\nZ:Q1uXv/OtAE2NmyY2gYzpnyimQV4ys=\nR:version.go\na:0:0:444\nZ:Q1aPUDzS3SBF5dGowIcawT9zkAjvk=\nR:workflows.go\na:0:0:444\nZ:Q15qxpqCrGrKQSv1rmWJW5fO6jsjE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-04-02/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zvaQQRYZiKWDJAMHxki0YQKXOic=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-07-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-07-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1OtN/6Q+Ahc3Tk97Rqfa6eWqJHgc=\nR:client.go\na:0:0:444\nZ:Q1gATOHmOeWMfJmSbi8qGTyIoc7jg=\nR:cloudendpoints.go\na:0:0:444\nZ:Q138qcO3+8l1Uk+7aC8BZtsXjutws=\nR:enums.go\na:0:0:444\nZ:Q1y5cfcPhRymaChuIF80JsuroT9TM=\nR:models.go\na:0:0:444\nZ:Q1I7ZMzLGp/kDWHaZRtNsU3DeBlo8=\nR:operations.go\na:0:0:444\nZ:Q1UDJmBbkNzqj0p+3p0mo4f03nK8o=\nR:registeredservers.go\na:0:0:444\nZ:Q1BH71o8e4hsDKPxur8Y8bNJdWoAM=\nR:serverendpoints.go\na:0:0:444\nZ:Q1UzF0UzCWm94kluoucCwn1lXcZ8M=\nR:services.go\na:0:0:444\nZ:Q13BEwI0cxAuGT0hxkR0tT8IeEIUk=\nR:syncgroups.go\na:0:0:444\nZ:Q1jmDbzMD0wc5DGLBXkLkk8gpdZhw=\nR:version.go\na:0:0:444\nZ:Q1PVN/foU1dLsJrdsdPIWeLbtKt14=\nR:workflows.go\na:0:0:444\nZ:Q1PsajlR/9NLmQN4apXQNQ/rOXsA8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-07-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16DQNPetNm8BASdrxtMTRhfJ4E6Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-10-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1pmHBB2jQ2aFQKIGGlUT0kZQ0NdA=\nR:client.go\na:0:0:444\nZ:Q1Vvy5I5668LNX6cia0UBevefRc04=\nR:cloudendpoints.go\na:0:0:444\nZ:Q1hKwFZDL+iVpk+whdYlp5TAa0KTU=\nR:enums.go\na:0:0:444\nZ:Q1HAOTs1W6inhA/gWWi0fdVvAYJY4=\nR:models.go\na:0:0:444\nZ:Q1gGonQSqkTwt2c4QyX2HjtfI1Whc=\nR:operations.go\na:0:0:444\nZ:Q18NihCz/2aWEoFGdHHDDd1szcMiQ=\nR:registeredservers.go\na:0:0:444\nZ:Q1TMVB6E94n2eI4wYmHKhZJ3OYk1I=\nR:serverendpoints.go\na:0:0:444\nZ:Q1UqISdL2OD2Ckz9+aKHQY3WTL/hI=\nR:services.go\na:0:0:444\nZ:Q1IB5XRQmj6hVt7QKfY7CWk8UCVAs=\nR:syncgroups.go\na:0:0:444\nZ:Q1mjh0uDUX+6vccAfA+qi+boATKLE=\nR:version.go\na:0:0:444\nZ:Q1/7wv0vb84T+A+TZEDO2LN4tt/1I=\nR:workflows.go\na:0:0:444\nZ:Q1F/tdvKSgIrz221C84Lo4EFeaixo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2018-10-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1/idIjTEl8u5kQyF7ar6CjrlcTdA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-02-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+tG7QXwoSfVEpmiDQjNpenI/9TY=\nR:client.go\na:0:0:444\nZ:Q1u/PMf+oCmL4fgsZkQ+c2gK/2NaU=\nR:cloudendpoints.go\na:0:0:444\nZ:Q1AiVUoXSAE5kWQ2UoUT1LZWKDJZk=\nR:enums.go\na:0:0:444\nZ:Q1n5Gpnan6VHgcVyXPhZadfEbFoUw=\nR:models.go\na:0:0:444\nZ:Q1ShOaEsEejPP0iuwWHsEFv6G0OTM=\nR:operations.go\na:0:0:444\nZ:Q1MmP0XQYA7l9Nz8QqyQSm9MWIBZU=\nR:registeredservers.go\na:0:0:444\nZ:Q1gB7Y9VZLAajX+FN9blecBgYrdiE=\nR:serverendpoints.go\na:0:0:444\nZ:Q1Vr7s3Fuu8ytzjCO+8UHR/ujbu60=\nR:services.go\na:0:0:444\nZ:Q1OJbx4fKESEEmQqUBGp7UZiU2j70=\nR:syncgroups.go\na:0:0:444\nZ:Q15b2wsHQeozW4ToAbJQMf7/eMSNI=\nR:version.go\na:0:0:444\nZ:Q1UGXHZA9QeHP+Ml70V8FAyEjaGKM=\nR:workflows.go\na:0:0:444\nZ:Q1YZ76Kn1pjLZXsPuqkERRkAN3SJE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-02-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q150djIc9igWMQfTrlgeg8xZU0SRY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-06-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q10P2WGoXuEKna/PMHmm7hs9KerW4=\nR:client.go\na:0:0:444\nZ:Q1EodQlp4uN22VXRCCTW2fw9YhsHA=\nR:cloudendpoints.go\na:0:0:444\nZ:Q1nxcynipJDdNH89sRkowqVE8zdLA=\nR:enums.go\na:0:0:444\nZ:Q13h536WzAFgar/vMbsZOLmFxEk7A=\nR:models.go\na:0:0:444\nZ:Q1Qql3NtLcwnikHvBNY4FHZAAYx3A=\nR:operations.go\na:0:0:444\nZ:Q1H9KLklFNBGQDnWryhVWGqvkW/uo=\nR:operationstatus.go\na:0:0:444\nZ:Q1gl0IXULjHK1AZRno0HftLnCtWu0=\nR:registeredservers.go\na:0:0:444\nZ:Q1+smbI00X0DziV//hxgwO0s1+R2g=\nR:serverendpoints.go\na:0:0:444\nZ:Q1a3ZhP2EWb9ETp3nXfNMjY7S1EGU=\nR:services.go\na:0:0:444\nZ:Q1Lcon+TcVgHPrRJTJ6wFDJY1vKxo=\nR:syncgroups.go\na:0:0:444\nZ:Q1oBDYi2oEwpxVPeN2Rv3Y8Xi1I20=\nR:version.go\na:0:0:444\nZ:Q1bzJc7TfDHwv+yEc7jwxX+S2V5+8=\nR:workflows.go\na:0:0:444\nZ:Q1EkztfA4M1JAdy++2wNCaQlK3YkI=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-06-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ATcq2k0MCisCO0AD3a+ak39UKQk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-10-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1RR4+4VkblHYWLEKvBjvzZ5iNU3M=\nR:client.go\na:0:0:444\nZ:Q1EqE+VCPgc+5H6gcHVMaZrAYcz84=\nR:cloudendpoints.go\na:0:0:444\nZ:Q1s4+w6IiV4jUE359ISB3iVIgZzbw=\nR:enums.go\na:0:0:444\nZ:Q13h536WzAFgar/vMbsZOLmFxEk7A=\nR:models.go\na:0:0:444\nZ:Q1wa1Dss8GZaU3I87+Dj3o2dMta24=\nR:operations.go\na:0:0:444\nZ:Q1/b+Zv/1K4kVTuOkiEOEXDwGba3U=\nR:operationstatus.go\na:0:0:444\nZ:Q1SLy9gK0OQE0gGRcjhpSrHZ3UK6I=\nR:registeredservers.go\na:0:0:444\nZ:Q1n9sh7aZTWfQQnj0oGLulRg8W83g=\nR:serverendpoints.go\na:0:0:444\nZ:Q1BEQJGo9vkzx8gjp+d63OMFdg+Ko=\nR:services.go\na:0:0:444\nZ:Q1Ts+/LEjwcQyrYBC4ZK13S41al9s=\nR:syncgroups.go\na:0:0:444\nZ:Q1JOvygI6movTTV21Sq40UtjXX+Pk=\nR:version.go\na:0:0:444\nZ:Q1HFW3lzQrUQ315bW+vWenIoUDoxE=\nR:workflows.go\na:0:0:444\nZ:Q1UIXgkOAC21Cu27ETgl7vVNVDY7s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2019-10-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1MNIq0Qx09au4dcUtsucRFcUFVnk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2020-03-01/storagesync\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NTzPXCH5kCfJtsoq5vnMCp1eiQ0=\nR:client.go\na:0:0:444\nZ:Q16F1N/YhdUShs/OgZccxvScMsxIY=\nR:cloudendpoints.go\na:0:0:444\nZ:Q1nS5W0DfjFy8Y2khN9bfJLmZmLuo=\nR:enums.go\na:0:0:444\nZ:Q1LO8QxcQf1sAVqvkKN6hg7iEWhl4=\nR:models.go\na:0:0:444\nZ:Q1na8fbGnIgfaSLqOSKeZhKRHj5JQ=\nR:operations.go\na:0:0:444\nZ:Q1m2LGHC1qm5xk4kj3nijVf0kvfI0=\nR:operationstatus.go\na:0:0:444\nZ:Q1+oZWyKYWzolZwmrTSj7UBTnDoNI=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1cN+n0QqR1maJVqTJvWcN+Oq3LJI=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1HPxMXbiUZ480qPmKemImQqghpJg=\nR:registeredservers.go\na:0:0:444\nZ:Q1sTRvV3w/lvExTQ8mkRKkRNJRLGQ=\nR:serverendpoints.go\na:0:0:444\nZ:Q1RROSAMQDtaBMaYRsyVgBE6CZg0I=\nR:services.go\na:0:0:444\nZ:Q1/XEx/+CRhskH53I7JudRenJcFcY=\nR:syncgroups.go\na:0:0:444\nZ:Q1L2H5lugyZe6LSWb06MGKbhUewJI=\nR:version.go\na:0:0:444\nZ:Q1tCg3w6KCJ1OFZUFndnceFvv7E50=\nR:workflows.go\na:0:0:444\nZ:Q1evGlXdNd/382WZ46LHLFVHyCU/A=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storagesync/mgmt/2020-03-01/storagesync/storagesyncapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1uIfUEsdtvJNifOovpMo1eHO1huw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple1200series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple1200series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple1200series/mgmt/2016-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple1200series/mgmt/2016-10-01/storsimple\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1rBI4HWzQevi5ikJCngbTHX9ngH4=\nR:accesscontrolrecords.go\na:0:0:444\nZ:Q1jJB7tZFbF6FTMSX7W04GGhQvZ9I=\nR:alerts.go\na:0:0:444\nZ:Q1CqAu4pdDT7/+MmteguvYwPVM1Gs=\nR:availableprovideroperations.go\na:0:0:444\nZ:Q1ArgbiiBePE2s9DabIYG4grDR7Fo=\nR:backups.go\na:0:0:444\nZ:Q1X65+DvdUnG6zPhEpeS3xZP+G0Vg=\nR:backupschedulegroups.go\na:0:0:444\nZ:Q1hs1/qYW9PM21EF6bCIsIkf5TKQ0=\nR:chapsettings.go\na:0:0:444\nZ:Q1LDiuc+94u1Rommt2xfkneTfMhNQ=\nR:client.go\na:0:0:444\nZ:Q1wr6Ymu7cFcczcllCq/Z5reQuyxg=\nR:devices.go\na:0:0:444\nZ:Q11eelVM/QNpoGuEUcXOPtFPXdBAE=\nR:enums.go\na:0:0:444\nZ:Q1GNgL3g3I7w3XOsxlxmVYYGmUd68=\nR:fileservers.go\na:0:0:444\nZ:Q19IDw6gS7swV4JTVJqvUmq+HNxBM=\nR:fileshares.go\na:0:0:444\nZ:Q19z/VkpLA/9EHiD7p6OiD10C4MNA=\nR:iscsidisks.go\na:0:0:444\nZ:Q1tIDw7MtM9fMMBfJMrDG7SgOL5Xc=\nR:iscsiservers.go\na:0:0:444\nZ:Q1Abh9cMe20hfJydZZpbRa1RppMVQ=\nR:jobs.go\na:0:0:444\nZ:Q1QN3A7wk9yc8MKYZCxYLBt2sy9xE=\nR:managers.go\na:0:0:444\nZ:Q1GhPpgZch8MfBJzHjJkc2n+IAjmk=\nR:models.go\na:0:0:444\nZ:Q1hQCN1jTVEZnPuPEnk/8A5D1Yreg=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q1gmNAY/VpgFVgnU2Pc8ZrkwMTE9M=\nR:storagedomains.go\na:0:0:444\nZ:Q16X2CRcrPFVybIYHXkQLUvrmZheU=\nR:version.go\na:0:0:444\nZ:Q1/5sOAK8emt5axyua2sweJHySUVc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple1200series/mgmt/2016-10-01/storsimple/storsimpleapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EANOi1jadJ6tVrkVjImSjg7JhKs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple8000series\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple8000series/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple8000series/mgmt/2017-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple8000series/mgmt/2017-06-01/storsimple\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JleSJVFm5eCLBUgOwtzsJuqEPpo=\nR:accesscontrolrecords.go\na:0:0:444\nZ:Q1e/FrUHfCxiTfFfqpDFNdaOdmH2Y=\nR:alerts.go\na:0:0:444\nZ:Q1hR1ZGiDTo/EHLok927gdmwBRtYc=\nR:backuppolicies.go\na:0:0:444\nZ:Q13KDOmX+8xhoTHd5IxNWYvD2ULXI=\nR:backups.go\na:0:0:444\nZ:Q1NGVFxl9XkBWih3D71NJY52bW1/g=\nR:backupschedules.go\na:0:0:444\nZ:Q1kccVziUK0G8R4tVO6iUaPbrrlcw=\nR:bandwidthsettings.go\na:0:0:444\nZ:Q1IGwS6toxVhoY4pO/aDTPBFYn++I=\nR:client.go\na:0:0:444\nZ:Q1bCFi0fZpUH0mtGjoltuo4UgEO8Y=\nR:cloudappliances.go\na:0:0:444\nZ:Q1TzTiGfyDM/d1M6VgLr1Brcy2gsc=\nR:devices.go\na:0:0:444\nZ:Q1elDvQWzfsJSCpV81ss7YFiwak5o=\nR:devicesettings.go\na:0:0:444\nZ:Q1pXXX/gBUF6dsqAo+mLaC3auJfI4=\nR:enums.go\na:0:0:444\nZ:Q1uqmldaRSWBcIZy+LtUdSsHQp9xA=\nR:hardwarecomponentgroups.go\na:0:0:444\nZ:Q1mGZzKbd8dj53q0tYfM5E4BQCPl4=\nR:jobs.go\na:0:0:444\nZ:Q1bmSQx9BjI5CdePuRXo+scU25fEE=\nR:managers.go\na:0:0:444\nZ:Q140wpybvcTYeFNe/Nsg7xDohEvnE=\nR:models.go\na:0:0:444\nZ:Q1b7mDo39MZHcmKZWi9MjEBbU6OMY=\nR:operations.go\na:0:0:444\nZ:Q1sGrrYsvSRVmqQq2E2sjgsbcFz10=\nR:storageaccountcredentials.go\na:0:0:444\nZ:Q1xg7sZbI5oPBVvMy9fvcEMwOlpCU=\nR:version.go\na:0:0:444\nZ:Q1EH5SNh14YL2ZDbshlbRZeu3SyPw=\nR:volumecontainers.go\na:0:0:444\nZ:Q1sp4CWDblE/CiDc/wOqiidLlzoeM=\nR:volumes.go\na:0:0:444\nZ:Q1KxnA2h38tp/mPqKOvcMvroieWNU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/storsimple8000series/mgmt/2017-06-01/storsimple/storsimpleapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1AZLN31OgQLFd3p9COb5VnVhCJGk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2016-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2016-03-01/streamanalytics\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1CBN4uBkZANtPCtu255O16+7zab4=\nR:client.go\na:0:0:444\nZ:Q1oj5GGeIS2v0BzPv/RikNaNHNg8o=\nR:enums.go\na:0:0:444\nZ:Q1NyU+U2TuFRFe02s39HY2T0EJqoU=\nR:functions.go\na:0:0:444\nZ:Q1UJKKWL+LE594YTawwMsXyO3tBo0=\nR:inputs.go\na:0:0:444\nZ:Q1RMY7ln7cArkWQLsnDcPpWrVYCJU=\nR:models.go\na:0:0:444\nZ:Q1hHzWpw3qsDZatPbbKcKpEyIhxZ0=\nR:operations.go\na:0:0:444\nZ:Q1obXWLmkIIDV/bXteTNPfGTW+lPw=\nR:outputs.go\na:0:0:444\nZ:Q17mCpaM1QR+A+qPlpEput2TG43Zk=\nR:streamingjobs.go\na:0:0:444\nZ:Q1EhX3x8eX7qT3RHSu1QtMKfutcs8=\nR:subscriptions.go\na:0:0:444\nZ:Q1ZYW217WJswToZu0qq2aZXjv7sm8=\nR:transformations.go\na:0:0:444\nZ:Q1/MJJI9k4R5ctJx49vZj04+njPS4=\nR:version.go\na:0:0:444\nZ:Q18KjoMWZw5Tw4z0FVTv03uhW/IfU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2016-03-01/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jJuZZjBgTlsbpVxoK61WviLuN68=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2020-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2020-03-01/streamanalytics\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1c44EoZZJYkl+dYNzP/fCBBPMoo4=\nR:_meta.json\na:0:0:444\nZ:Q1bWs+dXo0Vp3Op1qpXDa7sFuoOTw=\nR:client.go\na:0:0:444\nZ:Q1SSjIJfUL7Hxm40g1slXifJChMwE=\nR:clusters.go\na:0:0:444\nZ:Q1wRGx8by4GAS59RDNIeDOb4KkeZw=\nR:enums.go\na:0:0:444\nZ:Q1IMwxtKCl50UsA9N1DMW/REOoz0c=\nR:functions.go\na:0:0:444\nZ:Q18hCfoXbfg1wdFHxbOgYx7bF6tqc=\nR:inputs.go\na:0:0:444\nZ:Q1ftFdxbsXotVdtL/qc9WPBSkbuCk=\nR:models.go\na:0:0:444\nZ:Q1tix3xwXf73MnqDNRDMwuemmPVX4=\nR:operations.go\na:0:0:444\nZ:Q18TrYFhIZIqaMqdaipPVHhscIkRI=\nR:outputs.go\na:0:0:444\nZ:Q1IaRaVqyU/Fns//sXZhB2NZvSNso=\nR:privateendpoints.go\na:0:0:444\nZ:Q1/OraqwX6iLoLVZlazk9v/vWyPzo=\nR:streamingjobs.go\na:0:0:444\nZ:Q1/QKH6NzKukkYYN1jf4OrkUrJtwg=\nR:subscriptions.go\na:0:0:444\nZ:Q131JlkkcuUf+Sx7THtu8X58jOQMw=\nR:transformations.go\na:0:0:444\nZ:Q1V/0A4ptGnUN+58jKrNRM44/rSxo=\nR:version.go\na:0:0:444\nZ:Q1SJXu41hxC+IDXDy1ZcpbmcoB9DY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/streamanalytics/mgmt/2020-03-01/streamanalytics/streamanalyticsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q16h0jWpOJGvDp5zTm/8NPT0ZA8/Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/subscription\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/subscription/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/subscription/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/subscription/mgmt/2020-09-01/subscription\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1JLfEf50JW+5IU4H7TK1BJ3tMzdQ=\nR:alias.go\na:0:0:444\nZ:Q1AklYUX9Ug7CS6dwSdYdINYtI02w=\nR:client.go\na:0:0:444\nZ:Q1e5ANaq28H5iiafwm2Du1ZjO2cOs=\nR:enums.go\na:0:0:444\nZ:Q1MbyBCijFIUmc8LVDUJKPEpY27vw=\nR:models.go\na:0:0:444\nZ:Q1xs9g0c3WGkUBjEzTWpx97K237PU=\nR:operations.go\na:0:0:444\nZ:Q1EBt9VypChiKAJpMT6sW+TTwxZpk=\nR:subscription.go\na:0:0:444\nZ:Q1O7SjU4XccARztFac0rapbn7LWig=\nR:subscriptions.go\na:0:0:444\nZ:Q1c4aLa7ly1K8Uflkmxc4Tg4jzwKM=\nR:tenants.go\na:0:0:444\nZ:Q1TgfOish7L+79di4GDRiYxYFpvfQ=\nR:version.go\na:0:0:444\nZ:Q1UT0Uo+tv2OnUSzWlgifNr2om3PA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/subscription/mgmt/2020-09-01/subscription/subscriptionapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1IVvJObWSXItmRVt8sk6KLprln9g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/support\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/support/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/support/mgmt/2020-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/support/mgmt/2020-04-01/support\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Xk0F/8xHvDWhjaedBfl2FAVGT2I=\nR:client.go\na:0:0:444\nZ:Q1R1bpTQvO9UjnefIGXI9id6XOPDQ=\nR:communications.go\na:0:0:444\nZ:Q17mD5FUIAU70PAhcQkWSMSnYBtNE=\nR:enums.go\na:0:0:444\nZ:Q1b18q3u07csdZ58yJOcveTcA2sSA=\nR:models.go\na:0:0:444\nZ:Q1gxZo210H3Vmx+8FiTOYg7GcUuJk=\nR:operations.go\na:0:0:444\nZ:Q1vNgbKLGvmi4jx6CrovPFVqDB6MU=\nR:problemclassifications.go\na:0:0:444\nZ:Q1JHmTYadXRlnwTc0KkWebXf6lIaA=\nR:services.go\na:0:0:444\nZ:Q1uuDuPSi63gWXS8ljVVROEAP0xPg=\nR:tickets.go\na:0:0:444\nZ:Q1spMpE1LSa52lny/9NdE+4fOl8B0=\nR:version.go\na:0:0:444\nZ:Q1uPCV9WtjnotVt63dCOWQSGzyzWY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/support/mgmt/2020-04-01/support/supportapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1DrmnYqhxRFnjYtkb5TMXHnQMbFE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2020-12-01/synapse\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1u3LD5CDuqC9ebRbGiqLd8ICY8sc=\nR:bigdatapools.go\na:0:0:444\nZ:Q1Dqw+8bAsPfShoxFuj3JHI/FiJnk=\nR:client.go\na:0:0:444\nZ:Q1rL/kNP8GL+Dm893Z9EiBjIdmBiM=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1sofCsU8KkYpVkDu6FuefxTHmomE=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1fp4+N29ChQoZfG06u7g6tEOnhBI=\nR:enums.go\na:0:0:444\nZ:Q1iSS7/9aUH7nhEi4SuQZYtl53C8M=\nR:extendedsqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q10YoKac/5vHU7XnLnJLW+5GrUOnE=\nR:integrationruntimeauthkeys.go\na:0:0:444\nZ:Q1d6TE9XXVHo8u0mOz42bfp6SW7A4=\nR:integrationruntimeconnectioninfos.go\na:0:0:444\nZ:Q1d9WZz9aRWV9WeUSHL1OqpW755gc=\nR:integrationruntimecredentials.go\na:0:0:444\nZ:Q1zu3C+3fbIkCHoSxAGUBh+qlarBs=\nR:integrationruntimemonitoringdata.go\na:0:0:444\nZ:Q1CYHpqoSN6JUuEQZRnttU8c07KAg=\nR:integrationruntimenodeipaddress.go\na:0:0:444\nZ:Q12L8aKFJfnLA7UPKak7arzBXPRC8=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1v2UXxqV50c8rCE4mRjoRCybdusE=\nR:integrationruntimeobjectmetadata.go\na:0:0:444\nZ:Q17/wksTvXSQrNKdrk4JAyTFh5XkY=\nR:integrationruntimes.go\na:0:0:444\nZ:Q12F1KrbJnmKEOfhWrM5VfRjph3AU=\nR:integrationruntimestatus.go\na:0:0:444\nZ:Q1T39rACPU3wBdSTkOKBDu8uc9MAk=\nR:ipfirewallrules.go\na:0:0:444\nZ:Q1pDlHyFjF3e8qRlcV/kGI4dBA+8Y=\nR:keys.go\na:0:0:444\nZ:Q161K10DcG82Yu4ggUmYVwfehBL0k=\nR:models.go\na:0:0:444\nZ:Q1nkDISWxRlTqZdJNRQMuHOgZ76AU=\nR:operations.go\na:0:0:444\nZ:Q1pK8YAI0q0r6vaz7tC9K6WWv+EuQ=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1yuBAIxINbYg3DY1SojmgQMMMqPg=\nR:privateendpointconnectionsprivatelinkhub.go\na:0:0:444\nZ:Q1YV+az83qUYZ/bCtW3+Vc48VYNmE=\nR:privatelinkhubprivatelinkresources.go\na:0:0:444\nZ:Q1eSC3whbgkvkoQKzOfur9Bh3bLUU=\nR:privatelinkhubs.go\na:0:0:444\nZ:Q1bhVHS0+nqio8L6gAeBtL81FWaNk=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1+n3Swwzp0EIhjaNNhqreEFngq4o=\nR:restorabledroppedsqlpools.go\na:0:0:444\nZ:Q1r1GvGB6iAynLyxxdfHKxsoKKQt8=\nR:sqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1VCmW7ytKPHtG+qPR2rFzgbCX1a8=\nR:sqlpoolcolumns.go\na:0:0:444\nZ:Q1W2q2jDQjsacBhrcsQTtcMW1MVdw=\nR:sqlpoolconnectionpolicies.go\na:0:0:444\nZ:Q1XoeQpkb8MuE2d2mtdMuOr0gdOLY=\nR:sqlpooldatawarehouseuseractivities.go\na:0:0:444\nZ:Q1uXA2dEf9GNYczwdgay2LG4XlVwU=\nR:sqlpoolgeobackuppolicies.go\na:0:0:444\nZ:Q1lVlvpdXPW+mVJlspbucBURiHMUE=\nR:sqlpoolmaintenancewindowoptions.go\na:0:0:444\nZ:Q1z2x+vuaNBVm5vPDNA2up/BQBPh8=\nR:sqlpoolmaintenancewindows.go\na:0:0:444\nZ:Q1ohj4UG7YCYOnZUbLzfHXlhuEK48=\nR:sqlpoolmetadatasyncconfigs.go\na:0:0:444\nZ:Q1K3S9PisUe5fHIqYX7ABMZoJePGE=\nR:sqlpooloperationresults.go\na:0:0:444\nZ:Q1B+ZgnA+I/8bT81tuLsxVdhrj0NQ=\nR:sqlpooloperations.go\na:0:0:444\nZ:Q1NmW+fhlL/cWUW8ikhwVnRLk1cvA=\nR:sqlpoolrecommendedsensitivitylabels.go\na:0:0:444\nZ:Q1TvKjXyrniVV1+MfVOErDmvKVyqk=\nR:sqlpoolreplicationlinks.go\na:0:0:444\nZ:Q1fzu4c7/wGfn1hmVkhRpd8cWEswM=\nR:sqlpoolrestorepoints.go\na:0:0:444\nZ:Q1MSiiJt4MpivluWZTGAJIVlbstVE=\nR:sqlpools.go\na:0:0:444\nZ:Q1Ryrc+Z1ki1tHfhcJDwMIN0j0rQc=\nR:sqlpoolschemas.go\na:0:0:444\nZ:Q1eHqO/6pZEWKpjaYWE1pciAWe7Rc=\nR:sqlpoolsecurityalertpolicies.go\na:0:0:444\nZ:Q1bcYvkO23q6MhQ12BkXv1znrKPmo=\nR:sqlpoolsensitivitylabels.go\na:0:0:444\nZ:Q1snAPz+Uw+J7e0ERK2QIkhKzNKNE=\nR:sqlpooltablecolumns.go\na:0:0:444\nZ:Q1wMFy06HgNY008GYfSIRsD5wuejc=\nR:sqlpooltables.go\na:0:0:444\nZ:Q1Vpu1RRYpHPNwsdoI+0/z+HBvZ+8=\nR:sqlpooltransparentdataencryptions.go\na:0:0:444\nZ:Q1P2ex2fHxJOSU9S4v+M98TMA3Bi0=\nR:sqlpoolusages.go\na:0:0:444\nZ:Q1OSkNaQFEabPysfgCnIVsBNhl9zs=\nR:sqlpoolvulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1en6wxbms99DL8bKFLgJVSCo+M8k=\nR:sqlpoolvulnerabilityassessments.go\na:0:0:444\nZ:Q1R58gwITNYdEIzVBva5S9HW8LB7M=\nR:sqlpoolvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1d9pWfRCZpBz0wyZsVw9zD+oD+OY=\nR:sqlpoolworkloadclassifier.go\na:0:0:444\nZ:Q1Mdac+jLOWXTyiRXCtoOcUSblJIw=\nR:sqlpoolworkloadgroup.go\na:0:0:444\nZ:Q1rhrDcbmEnQDkBqTp0MB9bV0eH48=\nR:version.go\na:0:0:444\nZ:Q1ZYfne8rzk3DUEoyHDRNUvhXs1Zw=\nR:workspaceaadadmins.go\na:0:0:444\nZ:Q16oxiZalRbGX0aKmq4znfYbKwekE=\nR:workspacemanagedidentitysqlcontrolsettings.go\na:0:0:444\nZ:Q1zDuw3mqLrVpN5xbL06p9zeoOD1k=\nR:workspacemanagedsqlserverblobauditingpolicies.go\na:0:0:444\nZ:Q1k4+MKVjOZ6UlrYu7tOKPWROUxsA=\nR:workspacemanagedsqlserverencryptionprotector.go\na:0:0:444\nZ:Q1u9kISXUCV/PbJrs4bVcBLci8rPs=\nR:workspacemanagedsqlserverextendedblobauditingpolicies.go\na:0:0:444\nZ:Q1rZaEVkGx5R+PiJ8XjFsxCBDW3ZM=\nR:workspacemanagedsqlserverrecoverablesqlpools.go\na:0:0:444\nZ:Q1x3muLVYbnwpPw/eYK2iiK2Sp2aE=\nR:workspacemanagedsqlserversecurityalertpolicy.go\na:0:0:444\nZ:Q1RYyHW0PKFzdDXSHDhzo97BVHczg=\nR:workspacemanagedsqlserverusages.go\na:0:0:444\nZ:Q1TqzwJMVFa5vYEJlefxFBmySTC4s=\nR:workspacemanagedsqlservervulnerabilityassessments.go\na:0:0:444\nZ:Q19Ut1yjcJtH1i3TncURwZ1CmjRqo=\nR:workspaces.go\na:0:0:444\nZ:Q1bmo7QH5cMjNz9RYIANzp19u90wY=\nR:workspacesqlaadadmins.go\na:0:0:444\nZ:Q11wKxWRXPW3Sdt13f7VGIRltXIZo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2020-12-01/synapse/synapseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15qe9SEBsAOWSXVjKMW8rH27tuGo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2021-03-01/synapse\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1KEHRaaKuM2G3MqE5IpDBGLlz/i0=\nR:bigdatapools.go\na:0:0:444\nZ:Q1OuSnOldKR0RrqElNWB2EU1Pmwtc=\nR:client.go\na:0:0:444\nZ:Q1t1xF79uQ+FlCBrOhzQ57zJnzlAA=\nR:datamaskingpolicies.go\na:0:0:444\nZ:Q1a3xR/HCHdzmHqd5mlOhVAEgWczM=\nR:datamaskingrules.go\na:0:0:444\nZ:Q1GatJYP+4+hqiSrm0mVk8j+9i+nA=\nR:enums.go\na:0:0:444\nZ:Q1Rq5qkn6FWcBQ+hJtx5qlLTBzZiI=\nR:extendedsqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1GmuKDajht8DX3GACUXhZRsFsB54=\nR:integrationruntimeauthkeys.go\na:0:0:444\nZ:Q1CNCN16uM1JPsN2nju2MTPTD5MEI=\nR:integrationruntimeconnectioninfos.go\na:0:0:444\nZ:Q1JNbIySG1+x8wLmC/u/MOmAdNSCQ=\nR:integrationruntimecredentials.go\na:0:0:444\nZ:Q1nY9lVJYZ7PBib5b6rRvvXNkccgg=\nR:integrationruntimemonitoringdata.go\na:0:0:444\nZ:Q1HEZ3JrH4yDi3CyHxlyzjFSFMLMY=\nR:integrationruntimenodeipaddress.go\na:0:0:444\nZ:Q1ExvF+9WiNhdB4sXsYkPNZ4e9BxA=\nR:integrationruntimenodes.go\na:0:0:444\nZ:Q1SkepQZKShBS/jPxDV9mqmM37UVE=\nR:integrationruntimeobjectmetadata.go\na:0:0:444\nZ:Q1hF6D2t3x+3p/kFnAYu0MHNHRMPw=\nR:integrationruntimes.go\na:0:0:444\nZ:Q1lQDIoNcAmzUm4EyMNdcw6xs/DOQ=\nR:integrationruntimestatus.go\na:0:0:444\nZ:Q1JS3ydVLylrvMTGIv/9MgOETl5Ms=\nR:ipfirewallrules.go\na:0:0:444\nZ:Q1KQZnwxJewbc2EPwoh40kDMrVl/0=\nR:keys.go\na:0:0:444\nZ:Q1uJKhqqrUeWaFMh5cYDL1Eb/J8+g=\nR:libraries.go\na:0:0:444\nZ:Q1/ErIJhD+88i43v40Z48GSwLn/fM=\nR:library.go\na:0:0:444\nZ:Q1RoKStYX50sZ+mLNCiMJ5w15f3OE=\nR:models.go\na:0:0:444\nZ:Q10ag7R88jtNZusycVntGW/78xoac=\nR:operations.go\na:0:0:444\nZ:Q1k6eEYLfEhmvjlVims6GYNYro34M=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q10Gzhh2/nzZon/r00yzKCrBFOuYo=\nR:privateendpointconnectionsprivatelinkhub.go\na:0:0:444\nZ:Q1J22disbmb1vOZ0c3BhAYloJ19v8=\nR:privatelinkhubprivatelinkresources.go\na:0:0:444\nZ:Q1pQukPuRbCMweQ3+cg1i5vPyrR6w=\nR:privatelinkhubs.go\na:0:0:444\nZ:Q14Ezw09khR3uY6V5REEWInYmQtKA=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1kxlNC5SMQSLPOCtnREIcMReHze8=\nR:restorabledroppedsqlpools.go\na:0:0:444\nZ:Q18HcQn0/QnUUy4fhV5mGlG5wBUbM=\nR:sqlpoolblobauditingpolicies.go\na:0:0:444\nZ:Q1VyQC84S8JiSIZba/siDz7/yIZEY=\nR:sqlpoolcolumns.go\na:0:0:444\nZ:Q1YKKdLV1bN5TS13kyt0JUNKLUGMM=\nR:sqlpoolconnectionpolicies.go\na:0:0:444\nZ:Q1LKZGJMOvjwJlxTIl/4FPgdL041o=\nR:sqlpooldatawarehouseuseractivities.go\na:0:0:444\nZ:Q15MFGugHkta/0JItAKNJCF+U2zsE=\nR:sqlpoolgeobackuppolicies.go\na:0:0:444\nZ:Q1CRLjHHvqMq7JBJ2aH+uJi0OsPWI=\nR:sqlpoolmaintenancewindowoptions.go\na:0:0:444\nZ:Q1NfABo+iL5xzrpIE/7qXSmoOSrrI=\nR:sqlpoolmaintenancewindows.go\na:0:0:444\nZ:Q1uBGzv8Co6XhSahOdQgxr0EeJYUw=\nR:sqlpoolmetadatasyncconfigs.go\na:0:0:444\nZ:Q166eVxtyySyyaYr8WHYyz8EUrmII=\nR:sqlpooloperationresults.go\na:0:0:444\nZ:Q1fubUa9jRr86QlwNfdPSfPWm8Adg=\nR:sqlpooloperations.go\na:0:0:444\nZ:Q1P07z5a5XsMaoTFX0Wn8PC93nejY=\nR:sqlpoolrecommendedsensitivitylabels.go\na:0:0:444\nZ:Q1eaoolyNaxMcQ1LMjVYrRLxXnGjs=\nR:sqlpoolreplicationlinks.go\na:0:0:444\nZ:Q1CNzIQCIZxpEddEpboSCQkNDRn+8=\nR:sqlpoolrestorepoints.go\na:0:0:444\nZ:Q1iviBrFHdanONVXXO31WP3IO5esg=\nR:sqlpools.go\na:0:0:444\nZ:Q1stEJ9oNSg91MjfkdvBp8XZ11TsE=\nR:sqlpoolschemas.go\na:0:0:444\nZ:Q1X1FR3WEu8EXOElzwG/owG96YGns=\nR:sqlpoolsecurityalertpolicies.go\na:0:0:444\nZ:Q1mQzB1eAQnvRfF1RoVcE2Vp3aTD0=\nR:sqlpoolsensitivitylabels.go\na:0:0:444\nZ:Q1vGqn/3prnj25871pWYRsFHMuI+U=\nR:sqlpooltablecolumns.go\na:0:0:444\nZ:Q17GxJEnYsqnaIi/BfWVw91YevjwA=\nR:sqlpooltables.go\na:0:0:444\nZ:Q1AjATTZKNHCPS+wgjOuwgQHzlqp0=\nR:sqlpooltransparentdataencryptions.go\na:0:0:444\nZ:Q1UhaKGuubI521seFyjSRoJeuy0xo=\nR:sqlpoolusages.go\na:0:0:444\nZ:Q1WRJjXZE3ImzR79+zgZXklM/SRBo=\nR:sqlpoolvulnerabilityassessmentrulebaselines.go\na:0:0:444\nZ:Q1Ts7Z9GD76IzCjYSjHlgoZsllKJw=\nR:sqlpoolvulnerabilityassessments.go\na:0:0:444\nZ:Q1G+XLFq3sAZY0nIpvo2zAnG7ryRo=\nR:sqlpoolvulnerabilityassessmentscans.go\na:0:0:444\nZ:Q1WuqOY5otgswT0qWFMY2yOq3CEAk=\nR:sqlpoolworkloadclassifier.go\na:0:0:444\nZ:Q1dnx7FXmOy7YWr6mdc3tAvm5PDjA=\nR:sqlpoolworkloadgroup.go\na:0:0:444\nZ:Q1O9js23SDgnIBv+r4doP81CFVmUU=\nR:version.go\na:0:0:444\nZ:Q1OCTUwgViNkhjSpPrXzZK4fhmXWs=\nR:workspaceaadadmins.go\na:0:0:444\nZ:Q1yM410GZvBKwTcahB9KaEvTdQxOQ=\nR:workspacemanagedidentitysqlcontrolsettings.go\na:0:0:444\nZ:Q19YzFLgzv8RWlq6hEMbE6HeI3604=\nR:workspacemanagedsqlserverblobauditingpolicies.go\na:0:0:444\nZ:Q1reUxApV6hzrBdYaJKpF09ZMdrr8=\nR:workspacemanagedsqlserverencryptionprotector.go\na:0:0:444\nZ:Q1C4AME1Fy49KlNOJf/WLEt0xPMy0=\nR:workspacemanagedsqlserverextendedblobauditingpolicies.go\na:0:0:444\nZ:Q1C5+QVeuYq24agp0La0AZ+8jf9LA=\nR:workspacemanagedsqlserverrecoverablesqlpools.go\na:0:0:444\nZ:Q1wtlbnsiKEAPvR58Jt0m4aDOctd4=\nR:workspacemanagedsqlserversecurityalertpolicy.go\na:0:0:444\nZ:Q1H0qqbB0sS3IEeIbFEbAkLFZwsIo=\nR:workspacemanagedsqlserverusages.go\na:0:0:444\nZ:Q1T67oKStZyGLepby3phrQpmEJCDI=\nR:workspacemanagedsqlservervulnerabilityassessments.go\na:0:0:444\nZ:Q1lABljisql2aBU+vs2yKJkkxJzQo=\nR:workspaces.go\na:0:0:444\nZ:Q16v7W0svfqcgfkn0a5FxNbq34bgA=\nR:workspacesqlaadadmins.go\na:0:0:444\nZ:Q1TCzMiGgymtrkrXrL6k7y8DkPsGs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/synapse/mgmt/2021-03-01/synapse/synapseapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q15lHif/LuCPeXGrMgE37nk1fNLqs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2017-11-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2017-11-15/timeseriesinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1QyrSBW2jw+ZRWyk60rIZyhmrZ68=\nR:accesspolicies.go\na:0:0:444\nZ:Q1waEuVlXQOTULKchP9MpsufsVFVw=\nR:client.go\na:0:0:444\nZ:Q1xLnA/h3OcxWj6bB8p+ra377tjv8=\nR:enums.go\na:0:0:444\nZ:Q1WEjMlBuzR5kb2lAHwfvvqbbKbpw=\nR:environments.go\na:0:0:444\nZ:Q17nk2pmK5ZubphnYX3OHkk/i0Kd8=\nR:eventsources.go\na:0:0:444\nZ:Q1mybrNHSh66oPXc7xPveq3XWT36U=\nR:models.go\na:0:0:444\nZ:Q1ld4YU1GpwfL745He0YiSwDQFXSs=\nR:operations.go\na:0:0:444\nZ:Q1w3dqWNyZ3hNYHn+tJ5Z8d+7ou4E=\nR:referencedatasets.go\na:0:0:444\nZ:Q1aBX++VOb4ttSrcV62991Yk6s+Qo=\nR:version.go\na:0:0:444\nZ:Q1KB7bfnBcP/OJMYb5QSHQ9u5GAbE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2017-11-15/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1EOBK7BrXZ6xdPjgcxbx8QEQxlYM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2020-05-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bBRZII+B0gl2dWVprqIiaw5Umck=\nR:accesspolicies.go\na:0:0:444\nZ:Q1S1yV5T8o1brPjnj2sCicYT5bfy4=\nR:client.go\na:0:0:444\nZ:Q1kNPn5ZOEbwmFiAhhirP2GEQ69KM=\nR:enums.go\na:0:0:444\nZ:Q1vVGU+HF2BVLfoMH2QL4VNBMt4o4=\nR:environments.go\na:0:0:444\nZ:Q1CLM/dPCQam/Gv9mXLbjAjbudrME=\nR:eventsources.go\na:0:0:444\nZ:Q1isXTqCJ6No2GeuoSXtdSroupDj4=\nR:models.go\na:0:0:444\nZ:Q1ngfxyxIFJVcCFIcWaimNiKVYFTM=\nR:operations.go\na:0:0:444\nZ:Q1u6SSE2x24m4Ro4Jgd/Epu2KX2wc=\nR:referencedatasets.go\na:0:0:444\nZ:Q1/z/UGNmOda7xz6xfzfUQ4+a5kgM=\nR:version.go\na:0:0:444\nZ:Q1oE5Mx1+ZVskrgst4YaC+E6uLOU0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights/timeseriesinsightsapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1YULHKxwtGkkXfiXTY3ChGDr2eAc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2015-11-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2015-11-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q17UI89LGqfrZLrrjJAUZXmFPOeos=\nR:client.go\na:0:0:444\nZ:Q1O28b9eLVm0bT5Au1TQqyBPEJOmU=\nR:endpoints.go\na:0:0:444\nZ:Q15KRA/U5KcvDFP4bkNTI4oZ8Bkqg=\nR:models.go\na:0:0:444\nZ:Q1rbNzit3+uveJs/ziC15i4SRYq5s=\nR:profiles.go\na:0:0:444\nZ:Q1kZ7a7O7vidqH5RgLTkkMtVm2cMo=\nR:version.go\na:0:0:444\nZ:Q1ahGziI8QBfV3EmCK29AjRpvx2ec=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2015-11-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1iFgM7bbWPkV4iyPFCVPOz7DOviU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-03-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1AbUHketBfVnzwlzScHaBrJ6JFcA=\nR:client.go\na:0:0:444\nZ:Q1BHUpLzGHX2xC6KTqAXnLb8c/0WQ=\nR:endpoints.go\na:0:0:444\nZ:Q1dBucM5I2o/kwO+wBz8QaVQ6WPbA=\nR:geographichierarchies.go\na:0:0:444\nZ:Q12kllfQEDtNp309NsLgVLTKil/8c=\nR:models.go\na:0:0:444\nZ:Q1EBh+U/4zZGBH8k2vD8FrHxgdB6U=\nR:profiles.go\na:0:0:444\nZ:Q1HZ2rf7bZa+UL4XEmd3W4hFJG/N4=\nR:version.go\na:0:0:444\nZ:Q1G5KIyH9DSv7AuAJa4Aew2zUYp1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-03-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1gHzdKSln9qJGUroEzpG/XAjk8P8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-05-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-05-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1uugw5lBV7QjiQU1wgETynADs7CU=\nR:client.go\na:0:0:444\nZ:Q1Bm2kum57DsNi/PP8UZa8IAAbHCY=\nR:endpoints.go\na:0:0:444\nZ:Q1Wxla7HWrhznuzBS+M3S4f2V1m6M=\nR:enums.go\na:0:0:444\nZ:Q1q7cjTwoGpCYv4ddFeTemvx1AOzw=\nR:geographichierarchies.go\na:0:0:444\nZ:Q165P07+SavdeyeV/ZScrBPYB5tGM=\nR:models.go\na:0:0:444\nZ:Q1CYdfG4WVWqR7Y1eJSIq6s5ZPcFQ=\nR:profiles.go\na:0:0:444\nZ:Q1xvEnZ1669W8QqkanJ9Y/MgxHH04=\nR:version.go\na:0:0:444\nZ:Q1yZlslwB94UyAo+DSCOSAla9hL1g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2017-05-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1etfbljnPjtNG0tFeBUZyDSc/1eQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-03-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1aH/ht/SgrOjLSSKXoONigSZReIM=\nR:client.go\na:0:0:444\nZ:Q1wXL4/gREsi0MIowSn41CngXBLDw=\nR:endpoints.go\na:0:0:444\nZ:Q1PRscxuAH3MZqgLValuScxoizZjI=\nR:enums.go\na:0:0:444\nZ:Q1YZWnk6wS/hTQiHpg7tP2ORrEHJo=\nR:geographichierarchies.go\na:0:0:444\nZ:Q1AL9RiWKydXMGfuu3vsIODrH8eR8=\nR:heatmap.go\na:0:0:444\nZ:Q11igICE5gi//Wr+q/Qjrp50EFp0g=\nR:models.go\na:0:0:444\nZ:Q1FuX6eHfGCtRC6MfgIDxMkNbvIYo=\nR:profiles.go\na:0:0:444\nZ:Q1CgODQ4JQhs+u5rj774gx2wEpFvg=\nR:version.go\na:0:0:444\nZ:Q1kQzXzOXxqxDCOIMTLLEo64wo+jw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-03-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q10d+My9vPge48HQgLmwJyJ9bZnxg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-04-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1bft8j0MTT95Pkzwl6kzXF0rrxtk=\nR:client.go\na:0:0:444\nZ:Q1zM6dc7pQoG7Ul+DbzyreZQaEvY8=\nR:endpoints.go\na:0:0:444\nZ:Q1RFME04BufPma6IU2YzpmgTOub3w=\nR:enums.go\na:0:0:444\nZ:Q143zIsuEyxpjzC3N/aQwoZK+ysKs=\nR:geographichierarchies.go\na:0:0:444\nZ:Q1O00cvkGyhE9NC8Lb3jDlBOTEDz0=\nR:heatmap.go\na:0:0:444\nZ:Q1lT1BSa9IIu8bO0xVL9CVzmwxtug=\nR:models.go\na:0:0:444\nZ:Q1V8IDgGrB74em0E73swjzXfzSy/c=\nR:profiles.go\na:0:0:444\nZ:Q1OIWxoJyB7OzyzQ9TCQut75nuXt4=\nR:usermetricskeys.go\na:0:0:444\nZ:Q1wn4Yu1GjzUTsPtrqOoPFEXE0tDM=\nR:version.go\na:0:0:444\nZ:Q1FrgbQDWqwppUY/y7tP3tMJ/4Pn0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-04-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q12R5ol8f12AymS672g67T4iJ6F7g=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-08-01/trafficmanager\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NAsNx+u6NvEbKg3WAT8OClTBBaI=\nR:client.go\na:0:0:444\nZ:Q1CA+JuSGhaDx3i2Av7FI5jtqFqzg=\nR:endpoints.go\na:0:0:444\nZ:Q1dbwPdWEmQf/at5mJDHgNVrskSJU=\nR:enums.go\na:0:0:444\nZ:Q1FN/l2/DsiI4VMv6biIdVxvO0orA=\nR:geographichierarchies.go\na:0:0:444\nZ:Q1Ra2DZr7Td+cCiaU7t/AeeZ50Xo8=\nR:heatmap.go\na:0:0:444\nZ:Q1ctvvWLVfovf9VkWP9f0OuZFvFrU=\nR:models.go\na:0:0:444\nZ:Q1UEZDsmbQ+dizDG+szVfb4TQpTQw=\nR:profiles.go\na:0:0:444\nZ:Q1w4I4CQAv1I08V1Kv2uncRTFeoG4=\nR:usermetricskeys.go\na:0:0:444\nZ:Q1AHDXQWPG4PB0mDQsP67+eWWSrAs=\nR:version.go\na:0:0:444\nZ:Q1u631zDFvQGEoS4GslSlP6jk0OFY=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/trafficmanager/mgmt/2018-08-01/trafficmanager/trafficmanagerapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1LU5TEJFnpIcXtqAEx0uuMItkpek=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2020-02-14\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2020-02-14/virtualmachineimagebuilder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1Ua1spnMIW7pC0/hmLFPS+QGOuRY=\nR:client.go\na:0:0:444\nZ:Q10Ir5HneuwP/fqHA1tn3FuWQqGcQ=\nR:enums.go\na:0:0:444\nZ:Q16jQi5R5bLpMJk9gtTfWqIha8iBo=\nR:models.go\na:0:0:444\nZ:Q1ikKezWqLUYWYjIVqZFNEmgiCV5M=\nR:operations.go\na:0:0:444\nZ:Q1FVIB0ToZv53SJxODslyuRDjWy5s=\nR:version.go\na:0:0:444\nZ:Q1iaCJMlpZa0Eb4FwoscVpcdUiymo=\nR:virtualmachineimagetemplates.go\na:0:0:444\nZ:Q1w2vHbdpyVRQ8s6EzI4RQMdtx8y0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2020-02-14/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1p5BuM0wTihtVinVg/qOZ9nDkAsU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2021-10-01/virtualmachineimagebuilder\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1I2+cVSZvNUIue0zhieDa8MG07mw=\nR:client.go\na:0:0:444\nZ:Q1tVNtjtkN6a0tNph9iw+68lM65d0=\nR:enums.go\na:0:0:444\nZ:Q1W7OpWwniv+IezIbpJ6EozyRnZPs=\nR:models.go\na:0:0:444\nZ:Q1kuPawgJyTSTdzUCui5aeWe/QupI=\nR:operations.go\na:0:0:444\nZ:Q1z69Kq5R+P41DdWhYrLC6FCIMfaE=\nR:version.go\na:0:0:444\nZ:Q1AvKwHOmED72oAD+W9siOKEq0SQI=\nR:virtualmachineimagetemplates.go\na:0:0:444\nZ:Q1fk3IOJxE9mscmTa8KznX9oxc7p4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/virtualmachineimagebuilder/mgmt/2021-10-01/virtualmachineimagebuilder/virtualmachineimagebuilderapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q14ZD13eSIO566w+Y0wf1verHVPco=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/vmwarecloudsimple\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/vmwarecloudsimple/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/vmwarecloudsimple/mgmt/2019-04-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/vmwarecloudsimple/mgmt/2019-04-01/vmwarecloudsimple\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1IXCGpBjnK+Uhcwtl8C2ojNo64vA=\nR:client.go\na:0:0:444\nZ:Q18BTPBvL8o0Cr8nu88C6bA7q75KI=\nR:customizationpolicies.go\na:0:0:444\nZ:Q1ins258c53OvwDzTDnMj5nSouME8=\nR:dedicatedcloudnodes.go\na:0:0:444\nZ:Q1et/iECLSZ14TPCnC/ELos/olg1c=\nR:dedicatedcloudservices.go\na:0:0:444\nZ:Q1gbnye3Unk9Ejk3dv3iO4Af5xj4U=\nR:enums.go\na:0:0:444\nZ:Q1NhsuNkQcat+sm7UiMgSuZuipXVA=\nR:models.go\na:0:0:444\nZ:Q1YVyLv0cCbE/Kfpv7ReEVugFvHMU=\nR:operations.go\na:0:0:444\nZ:Q1l2JmFQTU/DYPSN0kkKZe35x3MxI=\nR:privateclouds.go\na:0:0:444\nZ:Q1JvuBG8zRJynh39BUxjangcZw2sM=\nR:resourcepools.go\na:0:0:444\nZ:Q1AgkrJYULKoN2pEVke1pPXm93hT8=\nR:skusavailability.go\na:0:0:444\nZ:Q1h4kgFGkH1pTQjEK5MqpXmx2zOig=\nR:usages.go\na:0:0:444\nZ:Q1WZM3NRWBX8OoqDUiB8vMJV438tk=\nR:version.go\na:0:0:444\nZ:Q1RvZxkfgES3XcHL0CrvJnSTgeFeM=\nR:virtualmachines.go\na:0:0:444\nZ:Q1Mu06F1fopGtmHjlx3Xst8sB6aZw=\nR:virtualmachinetemplates.go\na:0:0:444\nZ:Q1/1M604hiMWTPTgU04YJH+xxS26k=\nR:virtualnetworks.go\na:0:0:444\nZ:Q1keTB0gUj33PZAZL1JQv09+jXL0s=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/vmwarecloudsimple/mgmt/2019-04-01/vmwarecloudsimple/vmwarecloudsimpleapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1vEirdWbgIu4B2EqJuw4grpukbMQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2016-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2016-09-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1K5h/FDIH7zjmDkUzcLCBZ4uLU7k=\nR:apps.go\na:0:0:444\nZ:Q1IEoNpoxoz3SQeB+qzcK4A0NWoO0=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1kdtgyf/h6/pC/qFJtI8uuu8f48Q=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q19aaWun9u8q5GtqfI7NN4oI0twaU=\nR:appserviceplans.go\na:0:0:444\nZ:Q1iHRRxMgx4Yz/H71jE0cTRV5wz/M=\nR:billingmeters.go\na:0:0:444\nZ:Q1U6b60BhZWjE9vMAnSJUhJIcrVro=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1VSbhQz3pLK/Ck8KU9QtnhFuYKKo=\nR:certificates.go\na:0:0:444\nZ:Q1XU/gvDrLCAA9EVlXKAp09hIgaoA=\nR:client.go\na:0:0:444\nZ:Q1SKanwrz+t5swN00/IzVPYM60Deg=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1VFog05zFJyXnB3xyDwv4LMqrtDM=\nR:diagnostics.go\na:0:0:444\nZ:Q1AY6/dEEt5wSvcqcZo/BoKG3zqqw=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1OLCGSRGrJrJOfvEAbgXI8sJ81k0=\nR:domains.go\na:0:0:444\nZ:Q1nLKlKDtgF8JJ+9bEJfkmniOiwHU=\nR:enums.go\na:0:0:444\nZ:Q1+yX58KMdRGZZoJ54Wbfh9F4UYoE=\nR:models.go\na:0:0:444\nZ:Q1ojQYwjG3fhMlckcXYaRiPlpRjXk=\nR:provider.go\na:0:0:444\nZ:Q1F2fFRDpzVaO9csFkQG3Ppm4dlOQ=\nR:recommendations.go\na:0:0:444\nZ:Q14JL4dYimts1+8j03HGImEVqS7zM=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1/jb++TWLkvcajZhHPIJTqRVHliw=\nR:topleveldomains.go\na:0:0:444\nZ:Q1uGO1/dbnJi7N6csF+Wgud288qmM=\nR:version.go\na:0:0:444\nZ:Q1sNCEhN9F4Ulm5NtKlDKKrjCq/ck=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2016-09-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1aiBsyFuXt69P0CjkEOxQo61fMKA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2018-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2018-02-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1us3F8bXlJqRDmCfSsHZTWmvxwRU=\nR:apps.go\na:0:0:444\nZ:Q1bkpeaaSVWQ37e+/VV41EvK4jCsY=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1zIt5YEtOZCPPqPqtwcfUqckOCSU=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1cdStHHokOuBsGggkW9NG6jZrsTY=\nR:appserviceplans.go\na:0:0:444\nZ:Q1aX5QKwOCIprm2n5rej2I1la0raE=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q13Et3nYS1oRvZTOwGDt6Z7hbZGSc=\nR:certificates.go\na:0:0:444\nZ:Q1vY4uxtzG6JrxjvnEZdwG17AHMlY=\nR:client.go\na:0:0:444\nZ:Q1GB96C4t3XRGv/xRX3MUXVcAZqSw=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1zg90LVK5q4I/AhjxXUzPbAjyppQ=\nR:diagnostics.go\na:0:0:444\nZ:Q1sj0tlWVG1v0451H39bdtY4S35Lw=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q105/g+92KeR4V0Qo8anaBSPaKlnI=\nR:domains.go\na:0:0:444\nZ:Q1mcdtqwrytSg5Wpicut/UdUgHk8g=\nR:enums.go\na:0:0:444\nZ:Q1wM+8XTWOHzNl7FiTTrvmD+5+cN0=\nR:models.go\na:0:0:444\nZ:Q1RFF7rXinpHJHJF3/ycnlE44jnOY=\nR:provider.go\na:0:0:444\nZ:Q18dHTmxYPmIbbJq0XfE8VlatHDQ4=\nR:recommendations.go\na:0:0:444\nZ:Q1mDlL/q8Z10ffi8LzYQ4nJRCXe5Y=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1deYYorZC3lbGSnJp9AypAiES49g=\nR:topleveldomains.go\na:0:0:444\nZ:Q1iTuM4lI6cBdEqNQDOFDup/R+zRM=\nR:version.go\na:0:0:444\nZ:Q1qePls9rQkSMVDJ7S//15PePVcXM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2018-02-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1zLHRbJ2Y2XrgSETm8chpPi6a6lo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2019-08-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2019-08-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1NS8/oxXkD6zxtFNLif+bfMZtlVs=\nR:apps.go\na:0:0:444\nZ:Q1gHg3Cn9zaLZOxrMLnLATkWqdcpQ=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1QogwBNlC8tMp+cy8+4VYZILk/ek=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1y3iLAZExOn2DXgU5+AwEzKA6ub0=\nR:appserviceplans.go\na:0:0:444\nZ:Q1oeaIM8AYtwW58w+JTlGZjMCHmnM=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1bqYbopQsGpbWaUX/3tJTTPY2vfY=\nR:certificates.go\na:0:0:444\nZ:Q1P+96KaKUGZzz1L2p6CooomNU8mE=\nR:client.go\na:0:0:444\nZ:Q1b5uJ8uwnAJ+srnXNTJt3Y2YVbbo=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1bDk5X5hpXSGk3/XeYUTH89aF3C8=\nR:diagnostics.go\na:0:0:444\nZ:Q1GxaIQZDuWSrb6t3cRS1k+BYuJiA=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1cbHmimmNiAJ48JuyE8pmO7mL62I=\nR:domains.go\na:0:0:444\nZ:Q1CiEfKQevWPPRc7TUDdOvXunVSf4=\nR:enums.go\na:0:0:444\nZ:Q1i8glVdWE/NGRbmHm8oTxv1AX+Hc=\nR:models.go\na:0:0:444\nZ:Q1bDreXvOr+hch4ZfTDwBQnVWJKUY=\nR:provider.go\na:0:0:444\nZ:Q1r8oB51SDhv4lC+eMsiigyGb7MAo=\nR:recommendations.go\na:0:0:444\nZ:Q1htGk6Y7/4qPSsorJpJBytbZq0Uo=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1ODIi6TJ+WfFWqWZ/USEOk9/hGcg=\nR:staticsites.go\na:0:0:444\nZ:Q1wFhz1TuW4B6usCEHV5sdifdAsTk=\nR:topleveldomains.go\na:0:0:444\nZ:Q1I3pPMCjdHw+G0ieXFxuAjcLQH0c=\nR:version.go\na:0:0:444\nZ:Q1GKVry/J/vk3YOCQ6+z3JrmZ2JXA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2019-08-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1WEqgC2yEG1iph76JE7VsHrozmko=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-06-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1dRTU8cZq1PvoeD13gW/loVmOf+k=\nR:apps.go\na:0:0:444\nZ:Q1IqVKATIVeIIZp7Kd+6vEe4InheU=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1N74xr0a7p9FiEjUKj50JXMzOsqk=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1xwSVCUBlg8gQno5x5xgZDALmpWs=\nR:appserviceplans.go\na:0:0:444\nZ:Q1Jq51QOl5y6kQSB+cSMx2QYJrP24=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1vivE9RJuGS3EoM2I68s7fuH/x64=\nR:certificates.go\na:0:0:444\nZ:Q1Xg5eMCIkzNXo+We1ZLBA/Nr9gnY=\nR:client.go\na:0:0:444\nZ:Q18OE77ceUCgtles250+hOwbsIjtg=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1dEEwHv92Z2uXY7/KSst2O01vVkA=\nR:diagnostics.go\na:0:0:444\nZ:Q1KvPDVS+02djvaPYZ8vZfUZCwrKQ=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1tncKtg80vyPwWFDVMOG7aI6pTqo=\nR:domains.go\na:0:0:444\nZ:Q1YQjjI36Sk8c27RKEFUZIIm7GJME=\nR:enums.go\na:0:0:444\nZ:Q1ROoqTJ57d/1CzmouqP+o9XHlTC8=\nR:models.go\na:0:0:444\nZ:Q1rqg32GLz2KSGZ01MRtc/174bmgo=\nR:provider.go\na:0:0:444\nZ:Q181E7fnJ8p/kHl6Oc+GjrYG43cUA=\nR:recommendations.go\na:0:0:444\nZ:Q1kUN3Wg8VWAsZOmRQuJAWFlXCT5U=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q16ktpE2dv+Mt2q3zoeKGuMZ3xfwQ=\nR:staticsites.go\na:0:0:444\nZ:Q1IfEnjVtRBw4Z1H4UG9WXRh0HSOI=\nR:topleveldomains.go\na:0:0:444\nZ:Q1pTeBqLDIkDeLaaUEEP8v16obMN8=\nR:version.go\na:0:0:444\nZ:Q1sGLyOXjg0ZI7J88kUzz2cabta7Q=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-06-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ccmRYOHXddXSMT0ouDhu4tzcQ94=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-09-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-09-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1x4iAkJj097eLUc1XUISeVzWSoW4=\nR:apps.go\na:0:0:444\nZ:Q1wGBY2BAEShEzqPqVr/QEpi66cXk=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q19AbaMQfnUQCox1/OfDPCU4erXEs=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1P5y2+hAiS8HmdT7h7oKXEtI4c+4=\nR:appserviceplans.go\na:0:0:444\nZ:Q1aM3TesT1eWI7UCJFbotmVhdpaEQ=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1ZMk7bV2UFHUm6lNoqzHoJGVVgfs=\nR:certificates.go\na:0:0:444\nZ:Q10gBrSk6YKRcTVaFbY28s6E560sY=\nR:client.go\na:0:0:444\nZ:Q1DasPm/pv3Ozb8jFBbudFGIoK1+c=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1enH/VWYWO5lHgbgM4s3ja2xNMh8=\nR:diagnostics.go\na:0:0:444\nZ:Q1b6U5vSxSrxDBjk8wTv3Mq4Gs3Gc=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1KnCODk9ph1u3W4QROc60DA4V1MY=\nR:domains.go\na:0:0:444\nZ:Q1XKuCKY5wMQrsIBqTy1pIynl+z74=\nR:enums.go\na:0:0:444\nZ:Q1ufEOzNW1eVhv/8I31lF2iuvmMr0=\nR:models.go\na:0:0:444\nZ:Q19L1PcBmClA5wwMdd6FInuwSl50o=\nR:provider.go\na:0:0:444\nZ:Q1gbcDAu6vu+rWbOMDBjJnV9kUUds=\nR:recommendations.go\na:0:0:444\nZ:Q1IsCisRabLM6SSCvr1R9vev85yO8=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1c2trBclJ5MOVJuH4KJJTx7py/4I=\nR:staticsites.go\na:0:0:444\nZ:Q1jJ5HM6eIESCtaOJ9tu1j9iWl8vc=\nR:topleveldomains.go\na:0:0:444\nZ:Q1RlEwXXuhEmIcvWcjSvhp2aPHB1A=\nR:version.go\na:0:0:444\nZ:Q1zC0GcPI8qGoNClGwFMOzA1c8lOo=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-09-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q13b4fO2BmWkw1v7aR0j1BBqzkNQs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-12-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-12-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1ZZ6lLsoE3s40rWmecd2/MQmzPZw=\nR:apps.go\na:0:0:444\nZ:Q1vMU4EdGDjCUwwHyb6RVtKdWvHSo=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1Mjdvh/cCiR1FeASfbek9YbGxRlo=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1D1/j+DLKKzyONq7H3Uthadu9jTw=\nR:appserviceplans.go\na:0:0:444\nZ:Q1jkRZdfqraR6tRUyA3DVtzJ1NKrI=\nR:certificateordersdiagnostics.go\na:0:0:444\nZ:Q13tKANyGiFuKfAeE2eSFUrAsxvBs=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q10w0wWbcCl8CGuX6YXE0lZCG3w1g=\nR:certificates.go\na:0:0:444\nZ:Q1Mob2iTPcNK08Wo3qoqGUYbkcNjs=\nR:client.go\na:0:0:444\nZ:Q1zkbgG7XtUM3++DqUHdFDrdvAwSs=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1ZkeRwxzKdVjHEBD5NR6SbaHH+hA=\nR:diagnostics.go\na:0:0:444\nZ:Q1WB9bSy85dttlcbjbBViOPUuiXxk=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1iZVkCsxOw39hjrh4J/Sg5rVl5NQ=\nR:domains.go\na:0:0:444\nZ:Q11DxH0sLVAbzQn4x7KhSCo3oEhSo=\nR:enums.go\na:0:0:444\nZ:Q1LeqdarFML4lIgiCPX71f9N509nY=\nR:global.go\na:0:0:444\nZ:Q1+WALjFZruMzBi7GKotzp3cDUxa4=\nR:models.go\na:0:0:444\nZ:Q1qiAbaMblfthW+SrIZyykz2hWbbY=\nR:provider.go\na:0:0:444\nZ:Q1zQw0H8+1rGrHy8yPhvSpjQYcLsE=\nR:recommendations.go\na:0:0:444\nZ:Q1dq+fOpbf2LnVtIvPzhAyM+VR/HE=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1KuycqmUHT7/9piPz2ocMDd2JUYI=\nR:staticsites.go\na:0:0:444\nZ:Q14AGz4o35wPKOvC97F+XXPyc6ClE=\nR:topleveldomains.go\na:0:0:444\nZ:Q1d23tiFZ+Ihnys2pQZEBvftxtsvs=\nR:version.go\na:0:0:444\nZ:Q1suLXoGger6wygSu5hhAmsVpdGn8=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2020-12-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1ugz56qoyeE/bMqO6H6pUyN5DQYQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-01-15\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-01-15/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1+mhuEUfwqGCxIpvJ7ltFUQNV2t8=\nR:apps.go\na:0:0:444\nZ:Q1B/b24jgqjBL0y0o4cGpvuDqnkyo=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1O7E3sVnW/ku/2IhaUy7OZNEo5EI=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1a4Zt7aLxFR7tc6wngQzonz4wEag=\nR:appserviceplans.go\na:0:0:444\nZ:Q1cVCTgIN0kh/8FCm9UcAAqf1n0+Q=\nR:certificateordersdiagnostics.go\na:0:0:444\nZ:Q1waEVcuVm+6QjniXR2Gu98SvWyX4=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1rpymRDaoXBUU/cZCqe3vFmq99Qc=\nR:certificates.go\na:0:0:444\nZ:Q10bEzP1pXg9T0ZPGTrmu/II3Rfkk=\nR:client.go\na:0:0:444\nZ:Q1SGuCTXUB0tuVTf6Cfd9txOIKHYk=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1dxYAz+iqXjjmzBxWWnxpuRZSuxs=\nR:diagnostics.go\na:0:0:444\nZ:Q1X2bRl46UEaiZ1JSaWu4qa2cOB10=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q10MvAAK6nE5YFtSGLGSwzTtF5TDY=\nR:domains.go\na:0:0:444\nZ:Q16RxpoXBghtLaWX4NjFXWHmIG5S0=\nR:enums.go\na:0:0:444\nZ:Q127YsRFbR7IQSImE/RizgRbmAPvk=\nR:global.go\na:0:0:444\nZ:Q14dfDSdLSVDXTaa0yLr4DyqgN6BU=\nR:kubeenvironments.go\na:0:0:444\nZ:Q185PpmiWuHEKXogziBVXU87/zozM=\nR:models.go\na:0:0:444\nZ:Q1YZAZxFjoJ190Lxp8Q5gwErdOGOE=\nR:provider.go\na:0:0:444\nZ:Q1p6KFVpkVJVEwh4f2nkBjekzTYUQ=\nR:recommendations.go\na:0:0:444\nZ:Q1GRu+rTOXE+kiga3o3wYrqF7bzwc=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1yPvaRYy2ZSQvse1KnY5ATZAo6dU=\nR:staticsites.go\na:0:0:444\nZ:Q1AcX/4zVfrsE9IFrBh79r5gDozQc=\nR:topleveldomains.go\na:0:0:444\nZ:Q1d9TrYrCXJ1F44FkO3oSbgJzCIx4=\nR:version.go\na:0:0:444\nZ:Q1r6moOuEAokDZ/ulqRzmJKPb5834=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-01-15/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wYZdRhgUwhCY/a+MgCAsmalBAjw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-02-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-02-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1alWyt68aupBuPdLjDIy2hx4aF0w=\nR:apps.go\na:0:0:444\nZ:Q1gJECP1dCV8ENeeCai92PcMvDIzI=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q138i8+dNB0gUXAucHJf/vl8wzlUQ=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1kJFVysXd14AF7iHiAafLoy/S/i0=\nR:appserviceplans.go\na:0:0:444\nZ:Q10Xfr7D1cXTNK3yLMYB0v7UmuLV8=\nR:certificateordersdiagnostics.go\na:0:0:444\nZ:Q17qR1V9p0BLHRjTFwtEj9RG3o470=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1nYtJUuiRhDnXCloYHJfFk5ae56c=\nR:certificates.go\na:0:0:444\nZ:Q1MpCPIFLKrtqR7Eb+xOu8Q51kGYM=\nR:client.go\na:0:0:444\nZ:Q1plgexgxfL8hdLwQDVo1aAf7hmQI=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1h/+ZWK9u0Vp0rCi97zzGFfwvF1M=\nR:diagnostics.go\na:0:0:444\nZ:Q12rHw4315zwaYilnd5GosmZG2StY=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1l2eTfRuliv7TobDifRtNS6d7Ido=\nR:domains.go\na:0:0:444\nZ:Q1oR4K+m3S+j4bUJvK7/5CzULjIIw=\nR:enums.go\na:0:0:444\nZ:Q127YsRFbR7IQSImE/RizgRbmAPvk=\nR:global.go\na:0:0:444\nZ:Q19Mec3bh14eyK3QjrFAXTc7MRaDw=\nR:kubeenvironments.go\na:0:0:444\nZ:Q13E3Wd1l5b+yiSfC456dUWHr5yLs=\nR:models.go\na:0:0:444\nZ:Q1Rbv+5UgJG+Sl9fCxi5UFKJOT4Sw=\nR:provider.go\na:0:0:444\nZ:Q1xyfzukFam812s+cqmRp7tBcKeaU=\nR:recommendations.go\na:0:0:444\nZ:Q1Z9uAR8wU5ek/7xUS6jHpks9xGhI=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1FmgtatpJ1FN1XbbkxU3RoGjT2Qk=\nR:staticsites.go\na:0:0:444\nZ:Q1ZBu8jwOe9dizamSySzdxI9MbI6Y=\nR:topleveldomains.go\na:0:0:444\nZ:Q1WOuB5z6kxCVfv/ofBDWlJm4KIFo=\nR:version.go\na:0:0:444\nZ:Q1G8mv039ZNtU1rlu8SMrP8J+oySg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-02-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1AEMI7nh0vge8K8dX7zRFB9ALMTs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-03-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-03-01/web\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q15VCd62ckHtB3odYJWIlub/AYnxs=\nR:apps.go\na:0:0:444\nZ:Q1jaZbXpACT2vWLI/5JwWxSooBSJ0=\nR:appservicecertificateorders.go\na:0:0:444\nZ:Q1KzjhZRGhYbDr62JvaWXoH8JAZWI=\nR:appserviceenvironments.go\na:0:0:444\nZ:Q1B08PB3xvli1zqhH8iRb++OGYepQ=\nR:appserviceplans.go\na:0:0:444\nZ:Q1ARbaqsKT0i00szXjhnr9o0sBhZc=\nR:certificateordersdiagnostics.go\na:0:0:444\nZ:Q12KHtipC9gOPQgqBx88VXRNwXsP4=\nR:certificateregistrationprovider.go\na:0:0:444\nZ:Q1txbHIC2fKw86jwmsvDey1Ip7I0U=\nR:certificates.go\na:0:0:444\nZ:Q11B15xvTRZiIBb3m+uJ5guuvmdSE=\nR:client.go\na:0:0:444\nZ:Q1h63UnEiqVCUz+kg8bvVQb3lsuMw=\nR:containerapps.go\na:0:0:444\nZ:Q12w2E6ZmN75TpXYp50drdAm7y8Wc=\nR:containerappsrevisions.go\na:0:0:444\nZ:Q1DiAR+gxpTgjqW3sAuHivAySwi/0=\nR:deletedwebapps.go\na:0:0:444\nZ:Q1YJDjLu74zSubdyZzyEG/GuF3ixk=\nR:diagnostics.go\na:0:0:444\nZ:Q1tNHXNbVZ5ThbPN9zfy/LUWiyYHc=\nR:domainregistrationprovider.go\na:0:0:444\nZ:Q1d1LkHpUJqqnzFPjwda+za1nEo10=\nR:domains.go\na:0:0:444\nZ:Q1Ttij2+o+ut9I5mXbIXfFDBGZC3M=\nR:enums.go\na:0:0:444\nZ:Q1400w0/wQWC6/HMZyC+8iZGwtmgk=\nR:global.go\na:0:0:444\nZ:Q1S0aiAd6rdWcNCE05EFQtRtXAXxQ=\nR:kubeenvironments.go\na:0:0:444\nZ:Q13Zw6XGEbZG/3SMzjDZ7yfGSM+zY=\nR:models.go\na:0:0:444\nZ:Q1mmMFkb9HX3XopHJOcg8PkB4nG5k=\nR:provider.go\na:0:0:444\nZ:Q197dT8CaGoqOimqJTD/gBQvhsKh4=\nR:recommendations.go\na:0:0:444\nZ:Q173YCCoo9/OY4kS07lL1cz0p77h8=\nR:resourcehealthmetadata.go\na:0:0:444\nZ:Q1tJYbcd2HN6luEjgx898YRIkHrgE=\nR:staticsites.go\na:0:0:444\nZ:Q17tLAD+YcPP16ih9U6+CL+8ERxBA=\nR:topleveldomains.go\na:0:0:444\nZ:Q1U298fkGeXFuXFFuyHN8z3F2DG20=\nR:version.go\na:0:0:444\nZ:Q1fetLuqvjAnQGjxKPmgcrSzbeayQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/web/mgmt/2021-03-01/web/webapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q187VweMTmZMJxYc6Kd+994PlYbkk=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/webpubsub\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/webpubsub/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/webpubsub/mgmt/2021-10-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/webpubsub/mgmt/2021-10-01/webpubsub\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1UiVDXbVfTgXtvnz6DLskmRBooYQ=\nR:client.go\na:0:0:444\nZ:Q1ozkSKVke4Pim8nB3Ce+msWkoQnc=\nR:enums.go\na:0:0:444\nZ:Q1KJgrwUb+IOFJmpjLpTZel1GpZu0=\nR:hubs.go\na:0:0:444\nZ:Q1cZ2Wf7kBi/IQB35fxQlsXZ++dsY=\nR:models.go\na:0:0:444\nZ:Q1YMbbvy3iTlE0ovEn2qnGMT1muTI=\nR:operations.go\na:0:0:444\nZ:Q1cEm3mpvrOH9NnEcwQvh1HjpEdMs=\nR:privateendpointconnections.go\na:0:0:444\nZ:Q1hzmgO6V+jYPntU1otxYhMoXF0Z8=\nR:privatelinkresources.go\na:0:0:444\nZ:Q1PTeTfHJhRePBn1Fj8h5emRsyDVU=\nR:sharedprivatelinkresources.go\na:0:0:444\nZ:Q1ef2T75n6fYXsIx2Q7qqLjtiFlqc=\nR:usages.go\na:0:0:444\nZ:Q18fq6QqH96yJ6cy4myVh4yxqzhNE=\nR:version.go\na:0:0:444\nZ:Q1EzSGKaVGcDoSPR3LDwQEhg5l+oA=\nR:webpubsub.go\na:0:0:444\nZ:Q1fyTxtSkzDFZSte1ucxp7fqGM03c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/webpubsub/mgmt/2021-10-01/webpubsub/webpubsubapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jBcZ4JAbu3WaRO9Fgth/dJHWkNc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/windowsiot\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/windowsiot/mgmt\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/windowsiot/mgmt/2019-06-01\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/windowsiot/mgmt/2019-06-01/windowsiot\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1yQFzHICc0tSbVE14yJEfVupWK5Y=\nR:_meta.json\na:0:0:444\nZ:Q1jdnule+kb0jn3URkcgCqtJaZdx8=\nR:client.go\na:0:0:444\nZ:Q1hbvFsO0ltScUdAzjnnecatPnveQ=\nR:enums.go\na:0:0:444\nZ:Q1afqojv+Oxm7Rp6xiXnISj7ZFNy4=\nR:models.go\na:0:0:444\nZ:Q11uOYxAB/F+RGH/gs6OFvPboYkw0=\nR:operations.go\na:0:0:444\nZ:Q1oS56atkgcDOU5rt9eOCesQ9vRQo=\nR:services.go\na:0:0:444\nZ:Q1z8wolLCXe8RuRJEciD8+kUAgtXM=\nR:version.go\na:0:0:444\nZ:Q17VA/yMeKYHJx03dXRY4hU4lsn7c=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/services/windowsiot/mgmt/2019-06-01/windowsiot/windowsiotapi\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1wzC9nvEqTnas7OjTMKKMSl4FE9w=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1VcOC4UE4sZUA4TRuPvP/z4XgFZg=\nR:appendblob.go\na:0:0:444\nZ:Q1hbgBwG3dJt/PL2c9NQgw3yHdcJE=\nR:appendblob_test.go\na:0:0:444\nZ:Q1gLlGGxIajUhc8BicQPFl7v3PhR0=\nR:authorization.go\na:0:0:444\nZ:Q1z5Y0aycYdjGM+rsrklYad4HcPiM=\nR:authorization_test.go\na:0:0:444\nZ:Q136kD4A8b/zLI89bXrC8vxpWBid8=\nR:blob.go\na:0:0:444\nZ:Q197pjCb1R20jU9Q5stSDb4Gghh+c=\nR:blob_test.go\na:0:0:444\nZ:Q1PKGB7RKPRXcefeQOCOZtpqSDSKk=\nR:blobsasuri.go\na:0:0:444\nZ:Q1epLuR4I5gdYkvJ9cF/61fMnMKf0=\nR:blobsasuri_test.go\na:0:0:444\nZ:Q1lKIcwRa5gOLHV/UDHEQMVdZhwPo=\nR:blobserviceclient.go\na:0:0:444\nZ:Q1d3Fykde1BdontVAHwwwH4/uHSyk=\nR:blockblob.go\na:0:0:444\nZ:Q1k1C6xm5uQZT1lNSMgz4IGoHnm8E=\nR:blockblob_test.go\na:0:0:444\nZ:Q1AWvUnMKSo6V2dYYIc3AFys9SFBY=\nR:client.go\na:0:0:444\nZ:Q13V6HQM7xrhOZUSKfLG3ul7JSVaA=\nR:client_test.go\na:0:0:444\nZ:Q1hpyBAv3GOOm5oU2imoJcKChCtZU=\nR:commonsasuri.go\na:0:0:444\nZ:Q1aldGfWyLrasMjhdbiiqb86S145E=\nR:container.go\na:0:0:444\nZ:Q1iu1cblJA+Wg16Zy0/VgcnafYpIw=\nR:container_test.go\na:0:0:444\nZ:Q1s6X0p6ipI8w7Mz07kT3CfnT367U=\nR:copyblob.go\na:0:0:444\nZ:Q1mTRA4uRXdc4kNCWIbYyBFHvIUXw=\nR:copyblob_test.go\na:0:0:444\nZ:Q1m0mMnwGXIUhEwNTq+SDT3d4UZ2s=\nR:directory.go\na:0:0:444\nZ:Q1gqJRyJdik9JoJS86bZJhtEGbz1g=\nR:directory_test.go\na:0:0:444\nZ:Q1dPk0TC5yNal3Ae2H2tel6+xWOGU=\nR:entity.go\na:0:0:444\nZ:Q1h0Ew1Y/tR0O7dTXwTXDgoFJsK+g=\nR:entity_test.go\na:0:0:444\nZ:Q1K9xp4CcvJEnQ0/WvDHBNcv43WkQ=\nR:file.go\na:0:0:444\nZ:Q1iKjGowik4Eb3IxiHy83tH2aTxCs=\nR:file_test.go\na:0:0:444\nZ:Q1wP5dBq6WY6LBgB/aowAhOAEJ8QA=\nR:fileserviceclient.go\na:0:0:444\nZ:Q1rKYnBJwn4jpr0d8ET6ken1K0bPA=\nR:leaseblob.go\na:0:0:444\nZ:Q1Px17/pWZj8gJWTPElFgxGYMOBiU=\nR:leaseblob_test.go\na:0:0:444\nZ:Q1bSzhITkjZ5N1Jex180ECrIlGgBM=\nR:message.go\na:0:0:444\nZ:Q1AnaKk0qWQdg23GIXvMliwktJNJU=\nR:message_test.go\na:0:0:444\nZ:Q1arEzra0L1dOKEtsxVJwZDhQtUr8=\nR:odata.go\na:0:0:444\nZ:Q195XHEPNjJB5kojW3YF9pHMG9A40=\nR:pageblob.go\na:0:0:444\nZ:Q19LjCZg6Fvr9s/O6EYjjZ6OJ/T/8=\nR:pageblob_test.go\na:0:0:444\nZ:Q1ppF3M3TRjM+LNO2YfyJL8nF8BeM=\nR:queue.go\na:0:0:444\nZ:Q1FMZOR4gKOWTQppp+pnMxwUvaLZ4=\nR:queue_test.go\na:0:0:444\nZ:Q16cZ4SPmrLyr2gaFkKBmJTQ1IenQ=\nR:queuesasuri.go\na:0:0:444\nZ:Q1R0zu5yJKrExzEX6vEpZCSArSpYo=\nR:queuesasuri_test.go\na:0:0:444\nZ:Q1/SJ/IwoSBBx60XyZWUY2oQr0SGU=\nR:queueserviceclient.go\na:0:0:444\nZ:Q1BtkiMNP41hUXt9WjhnjnOa7d2a4=\nR:share.go\na:0:0:444\nZ:Q1CTku9I1Z+GBzY65Ga6m2nx9PKbM=\nR:share_test.go\na:0:0:444\nZ:Q1xafGmo9rmOfOLD+Pc/C9V/jXgMU=\nR:storagepolicy.go\na:0:0:444\nZ:Q1xfwbns9GphRDtTcuengmfGQH3cE=\nR:storageservice.go\na:0:0:444\nZ:Q1VRtkb4tthKl7YQ1KPb6mA+2WS8E=\nR:storageservice_test.go\na:0:0:444\nZ:Q1jBbuaytHgUjwXi8x4SbRx91tZBE=\nR:table.go\na:0:0:444\nZ:Q1CY2QHP8feMd7cILOImQUTaEvgIY=\nR:table_batch.go\na:0:0:444\nZ:Q1DiIrk/fOeM2EG1cCFL3mr00CgN8=\nR:table_batch_test.go\na:0:0:444\nZ:Q1tTd2YNd13E6swYnUXjQayvLVvi0=\nR:table_test.go\na:0:0:444\nZ:Q1yXbJVbuTRCKaUaOcJaa0l6liNsI=\nR:tableserviceclient.go\na:0:0:444\nZ:Q1JIbVmvHTNM/dKxq3/hhUwo+qxpw=\nR:util.go\na:0:0:444\nZ:Q1JSTIc8PYpYS2xt/rla5+BfO2Cto=\nR:util_test.go\na:0:0:444\nZ:Q1KZe0uMjEbp8Aq0YckNXC+cClD2Y=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings\nM:0:0:555\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/AppendBlobSuite\nM:0:0:555\nR:TestPutAppendBlob.yaml\na:0:0:444\nZ:Q1YLukYywPNZpMXoaByUdJULx9/98=\nR:TestPutAppendBlobAppendBlocks.yaml\na:0:0:444\nZ:Q1KXma3mw+2zMKqp0YndOgY6uNsKc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/AuthorizationSuite\nM:0:0:555\nR:Test_allSharedKeys.yaml\na:0:0:444\nZ:Q1h3Cky9w3MjiyAGxKhTG/TSkuEDs=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/BlobSASURISuite\nM:0:0:555\nR:TestBlobSASURICorrectness.yaml\na:0:0:444\nZ:Q1chscCqFL3Q72aGkBSnBt+250j1E=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/BlockBlobSuite\nM:0:0:555\nR:TestCreateBlockBlob.yaml\na:0:0:444\nZ:Q1QRTC4n0kQB/l51A+2SR06CAdrWQ=\nR:TestCreateBlockBlobFromReader.yaml\na:0:0:444\nZ:Q1FqgeMJJiTk5qPXaBCiU7L4DWAM4=\nR:TestGetBlockList_PutBlockList.yaml\na:0:0:444\nZ:Q1w7VsjDU+1GvnMbLD9+L6p8zJdzg=\nR:TestPutBlock.yaml\na:0:0:444\nZ:Q1PNd6H2Dz48n7kFgyc35amW+Wnx0=\nR:TestPutBlockFromURL.yaml\na:0:0:444\nZ:Q1F3bzeogT8hTlmqcKg0kMRRS4Wtg=\nR:TestPutBlockWithLengthUsingLimitReader.yaml\na:0:0:444\nZ:Q1n4AXj+pulmDEhem0y6G9MjF5jvo=\nR:TestPutEmptyBlockBlob.yaml\na:0:0:444\nZ:Q1Bsh/2Dq31fQbUUj4Bb8tEdNG/Zw=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/ContainerSuite\nM:0:0:555\nR:TestContainerExists.yaml\na:0:0:444\nZ:Q1lR5dCCvgu5S8dI2ydfSNZ8OjebY=\nR:TestCreateContainerDeleteContainer.yaml\na:0:0:444\nZ:Q1sRmsUTpqLd5aqqp6E1vtK6KXDeM=\nR:TestCreateContainerIfExists.yaml\na:0:0:444\nZ:Q1APunS2j0HKjVQE52CE4EemMAhnE=\nR:TestCreateContainerIfNotExists.yaml\na:0:0:444\nZ:Q1/Pjbi+Ms1vMAOL3/YqHKRjMSSXo=\nR:TestDeleteContainerIfExists.yaml\na:0:0:444\nZ:Q1+nqgbWjqszWp21FgTZSFXMeNwco=\nR:TestGetAndSetContainerMetadata.yaml\na:0:0:444\nZ:Q1ZngBlCKvpbkcQIDnDszx6A+ikac=\nR:TestGetContainerProperties.yaml\na:0:0:444\nZ:Q12/v7daFIHf4ENLPIzB4S9o+tBQY=\nR:TestListBlobsPagination.yaml\na:0:0:444\nZ:Q10LyDumq5Xxa5lxgtoYjpm1lnJFw=\nR:TestListBlobsTraversal.yaml\na:0:0:444\nZ:Q1C1uSWSxqKU4yRY97XqpL2Apgp2s=\nR:TestListBlobsWithMetadata.yaml\na:0:0:444\nZ:Q1PNO9r1S5WRXrONicN5Jtemc7++g=\nR:TestListContainersPagination.yaml\na:0:0:444\nZ:Q1n3mCebVPTucm/PG+wBCV8Azplcs=\nR:TestSetContainerPermissionsOnlySuccessfully.yaml\na:0:0:444\nZ:Q10BvnzEr+3BTituZTFTivNbofKbY=\nR:TestSetContainerPermissionsSuccessfully.yaml\na:0:0:444\nZ:Q1csv+b5G3qk7H7FGOYz28XUHUJrM=\nR:TestSetContainerPermissionsWithTimeoutSuccessfully.yaml\na:0:0:444\nZ:Q1QFhSFkb4TqZDkH0xDWPmykbioQo=\nR:TestSetThenGetContainerPermissionsOnlySuccessfully.yaml\na:0:0:444\nZ:Q1LcTy+pvSUnmY2VLlffyHwjU4Y2A=\nR:TestSetThenGetContainerPermissionsSuccessfully.yaml\na:0:0:444\nZ:Q1tlPaTTnqev3K0Kry7hr0JE+nXAQ=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/CopyBlobSuite\nM:0:0:555\nR:TestAbortBlobCopy.yaml\na:0:0:444\nZ:Q1czCiQ+qyda/tc+DTOd4r0GFP5Og=\nR:TestBlobCopy.yaml\na:0:0:444\nZ:Q1wkih6eaZYbc2AxUVZw3IP301LZ4=\nR:TestIncrementalCopyBlobNoTimeout.yaml\na:0:0:444\nZ:Q1NgHIEJUd9qWJrppg/3BVcLaYjcE=\nR:TestIncrementalCopyBlobWithTimeout.yaml\na:0:0:444\nZ:Q158P1CkpwOr2718Nj7onMXPNuoT8=\nR:TestStartBlobCopy.yaml\na:0:0:444\nZ:Q1muuerkWFHRMdQ4rWoVN7awsMqP4=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/LeaseBlobSuite\nM:0:0:555\nR:TestAcquireInfiniteLease.yaml\na:0:0:444\nZ:Q1Y6gvUU9rfxsHlXP4CyCQjv6fih4=\nR:TestAcquireLeaseWithBadProposedLeaseID.yaml\na:0:0:444\nZ:Q1r6PT9wqMNVa33aW3JTQDu4k7Hn8=\nR:TestAcquireLeaseWithNoProposedLeaseID.yaml\na:0:0:444\nZ:Q1DpAotIDpf+2x7dd2DRYzu2WorfM=\nR:TestAcquireLeaseWithProposedLeaseID.yaml\na:0:0:444\nZ:Q1TlfsFPDWnIYWbRAVN646DfzvZko=\nR:TestBreakLeaseSuccessful.yaml\na:0:0:444\nZ:Q1yUGR+jpLRpYu34NvnZO1RsBTnUE=\nR:TestChangeLeaseNotSuccessfulbadProposedLeaseID.yaml\na:0:0:444\nZ:Q17AMBzLCuNR5Vfq6L+5psFi6vQXA=\nR:TestChangeLeaseSuccessful.yaml\na:0:0:444\nZ:Q16Q80Ms6nu+pFoS5MEA+wCgzJygk=\nR:TestReleaseLeaseNotSuccessfulBadLeaseID.yaml\na:0:0:444\nZ:Q1tXteaXgkYymFsO9MNHioAFif4f4=\nR:TestReleaseLeaseSuccessful.yaml\na:0:0:444\nZ:Q1gcPR5C5X9IqRIRrCZ05tIOh+Vgs=\nR:TestRenewLeaseAgainstNoCurrentLease.yaml\na:0:0:444\nZ:Q1sEaAlpvzNKCdacrKMNoV+neQZ1A=\nR:TestRenewLeaseSuccessful.yaml\na:0:0:444\nZ:Q1Qxrx6gm+0gHR6Vli3DoS7degSnM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/PageBlobSuite\nM:0:0:555\nR:TestGetPageRanges.yaml\na:0:0:444\nZ:Q1ByhH/eDh9AEvLEiEi+1+1NZEnNs=\nR:TestPutPageBlob.yaml\na:0:0:444\nZ:Q13VJr9pPSJwCNeQlVbaR+QsFdiT4=\nR:TestPutPagesClear.yaml\na:0:0:444\nZ:Q1heR242Y2Hh0v2uBcyyP9j+86a4o=\nR:TestPutPagesUpdate.yaml\na:0:0:444\nZ:Q1jGbih8gz479PWm/4Dnx0QH+7u4M=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageBlobSuite\nM:0:0:555\nR:TestBlobExists.yaml\na:0:0:444\nZ:Q1lrDYPC/2zUdrQkubkJBCQuSTfk4=\nR:TestDeleteBlobIfExists.yaml\na:0:0:444\nZ:Q1NBv4nUqct4i8EVMn0YkSYsyL9yY=\nR:TestDeleteBlobWithConditions.yaml\na:0:0:444\nZ:Q19tD8z7Kn2FcZFZx9HQLepZyg3Is=\nR:TestGetAndSetBlobMetadata.yaml\na:0:0:444\nZ:Q1yP3FJtAeMCmojBZzCUsaLfzawe4=\nR:TestGetBlobProperties.yaml\na:0:0:444\nZ:Q1aY6IMmHWRa8RzJCYuptiRYtjxzc=\nR:TestGetBlobRange.yaml\na:0:0:444\nZ:Q1EXG4qWbCGdu3P9J3HOin+sBbkNw=\nR:TestMetadataCaseMunging.yaml\na:0:0:444\nZ:Q1IjHUbdAL62/H1YSxKWBlqn9jkE8=\nR:TestPutAppendBlobSpecialChars.yaml\na:0:0:444\nZ:Q1gREYqYeGUoGP6gTkIPu3dxLCHWQ=\nR:TestSetBlobProperties.yaml\na:0:0:444\nZ:Q1PkdnkuK9353mYfPk9OQhkdo0u8A=\nR:TestSetMetadataWithExtraHeaders.yaml\na:0:0:444\nZ:Q1rswswrL/puVDPRFYzzD3e6V8Rak=\nR:TestSetPageBlobProperties.yaml\na:0:0:444\nZ:Q1oj6TMGzrrGLwMYTA3yZPfqJYYg4=\nR:TestSnapshotBlob.yaml\na:0:0:444\nZ:Q1LSEUJPpDv3Fv0J/KZ5/E2oQLmGY=\nR:TestSnapshotBlobWithInvalidLease.yaml\na:0:0:444\nZ:Q1ulm+FL2sz+9wCUbdrr+f3hBmRws=\nR:TestSnapshotBlobWithTimeout.yaml\na:0:0:444\nZ:Q15hl/ek+O+PysdwpsdBY0fAsH09w=\nR:TestSnapshotBlobWithValidLease.yaml\na:0:0:444\nZ:Q1PPDIk/x7xP43548IKNjHWZAUluM=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageClientSuite\nM:0:0:555\nR:TestReturnsStorageServiceError.yaml\na:0:0:444\nZ:Q1FJtFGsUvx9YrlEh27GcTLDqxRXA=\nR:TestReturnsStorageServiceError_withoutResponseBody.yaml\na:0:0:444\nZ:Q1Ig/gEssFlBer6QR3f0bQg0VUrpQ=\nR:Test_doRetry.yaml\na:0:0:444\nZ:Q1x1wYs+GO+YCE0hzFIxQZ7eB6kTA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageDirSuite\nM:0:0:555\nR:TestCreateDirectory.yaml\na:0:0:444\nZ:Q14+5L3gDRVa31n4yPWmU0mQpDmNQ=\nR:TestCreateDirectoryIfExists.yaml\na:0:0:444\nZ:Q1WjI1RY2Q0im9KrCZqXOaFFPJ3zA=\nR:TestCreateDirectoryIfNotExists.yaml\na:0:0:444\nZ:Q1J24x2kZhSrJSD6K9xc0/RNuPRdU=\nR:TestDirectoryMetadata.yaml\na:0:0:444\nZ:Q1CypqogtnXSK8zmGirxcTszsULhY=\nR:TestListDirsAndFiles.yaml\na:0:0:444\nZ:Q1JHJCvRUHdOkokFMlgNgvD5etct8=\nR:TestListZeroDirsAndFiles.yaml\na:0:0:444\nZ:Q1Eh9fUiVqTv5o+5ezolfPcoPmD00=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageEntitySuite\nM:0:0:555\nR:TestDelete.yaml\na:0:0:444\nZ:Q12z1yKD5LBMrx78Lkm3BylrvyfL4=\nR:TestExecuteQueryNextResults.yaml\na:0:0:444\nZ:Q16oVyKLiFdMR/lA2PZZG/hJfYMl0=\nR:TestGet.yaml\na:0:0:444\nZ:Q1eHcYQ0E/XfND0+fS2xsONPjNmEk=\nR:TestInsert.yaml\na:0:0:444\nZ:Q1wRv80VfIIx6ZeETGwbI1D3bQytk=\nR:TestInsertOrMerge.yaml\na:0:0:444\nZ:Q1QRNW8/7QGLDQR5l/UkH4RukQPNY=\nR:TestInsertOrReplace.yaml\na:0:0:444\nZ:Q1siEIQ+5C/2eaNKVmeL9ujXQ65HQ=\nR:TestMerge.yaml\na:0:0:444\nZ:Q1fDk4ViZ+RIsgQjNHocxThNaAFHE=\nR:TestUpdate.yaml\na:0:0:444\nZ:Q1XHtXkfluF+Eidg/8zRU68TxO37A=\nR:Test_InsertAndDeleteEntities.yaml\na:0:0:444\nZ:Q1Zb2dKhTPTvHGiY5ija3z4H7+sxg=\nR:Test_InsertAndExecuteQuery.yaml\na:0:0:444\nZ:Q1eBwXnZzocv5DPcEzjCg6qYCERlA=\nR:Test_InsertAndGetEntities.yaml\na:0:0:444\nZ:Q1cA5pjDxtWFR+FRFVPul3RWkB/OU=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageFileSuite\nM:0:0:555\nR:TestCopyFileMissingFile.yaml\na:0:0:444\nZ:Q1lP7aNcS6mRbJgcIaSNLYraz8uqo=\nR:TestCopyFileSameAccountNoMetaData.yaml\na:0:0:444\nZ:Q1wxGgRzKZiwZJq5n4FVQ+i7cc1uo=\nR:TestCopyFileSameAccountTimeout.yaml\na:0:0:444\nZ:Q1dJJj+4Ex1SY+otVJNrd/ky0PTzk=\nR:TestCreateFile.yaml\na:0:0:444\nZ:Q1HKvVG/8qPuxalgguitbTwzyEgpA=\nR:TestFileMD5.yaml\na:0:0:444\nZ:Q1GDmpyk/IHLzUU2nbjsDZwftsjG8=\nR:TestFileMetadata.yaml\na:0:0:444\nZ:Q1ssYJ06srBZf5o3x9yH7CGp8Wrcw=\nR:TestFileProperties.yaml\na:0:0:444\nZ:Q1DwEnNztSJ1YmHDx90vPWbphzhYg=\nR:TestFileRanges.yaml\na:0:0:444\nZ:Q1vuXy1B3pn0xdc6/bIzmwtQH5l0A=\nR:TestGetFile.yaml\na:0:0:444\nZ:Q17dQzoobZn3T4gpObWa6vWAP8LRc=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageMessageSuite\nM:0:0:555\nR:TestDeleteMessages.yaml\na:0:0:444\nZ:Q1u+EdheBANBRdIUU6LsZtu8zZWpw=\nR:TestPutMessage_Peek.yaml\na:0:0:444\nZ:Q1JfRHZHf7Qqg/M1Hh6mp2EzCLGuY=\nR:TestPutMessage_Peek_Update_Delete.yaml\na:0:0:444\nZ:Q1UD+7sMDfS6AqaGhmORM66plj1Do=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageQueueSuite\nM:0:0:555\nR:TestCreateQueue_DeleteQueue.yaml\na:0:0:444\nZ:Q1xp9830RMV/01JSXtF1iCGTfqshc=\nR:TestDeleteMessages.yaml\na:0:0:444\nZ:Q1e0NfE0VD1vEkZZe4piosm4LqPd4=\nR:TestGetMessages.yaml\na:0:0:444\nZ:Q1m28na4A47rE860px7j2hY1S+6DI=\nR:TestQueueExists.yaml\na:0:0:444\nZ:Q1br90+2a8NOJDPi8NnqCmz9Yg/ds=\nR:Test_GetMetadata_GetApproximateCount.yaml\na:0:0:444\nZ:Q1MZQ1FYlnNWUryLcwxzpaREC6FcQ=\nR:Test_GetPermissionsAllTrueNoTimeout.yaml\na:0:0:444\nZ:Q1CHrUUDe2vS6ST/RGxRjrCGZMlRI=\nR:Test_GetPermissionsAllTrueWithTimeout.yaml\na:0:0:444\nZ:Q1KAM5cul9lNItotdAg7kadZAvU8I=\nR:Test_GetPermissionsAlternateTrueNoTimeout.yaml\na:0:0:444\nZ:Q1iL6rKN4ab21ZGtSSL68aJjma5O8=\nR:Test_SetMetadataGetMetadata_Roundtrips.yaml\na:0:0:444\nZ:Q1EFhuiwkF9SnmvbTiTa6Q9yXeD3Y=\nR:Test_SetPermissionsAllTrueNoTimeout.yaml\na:0:0:444\nZ:Q1Ss6WJY0/Zc/BQEjUCycm+tMhHCA=\nR:Test_SetPermissionsAllTrueWithTimeout.yaml\na:0:0:444\nZ:Q1N0CNJErXORmbzVwzZmlK16ZH3xY=\nR:Test_SetPermissionsAlternateTrueNoTimeout.yaml\na:0:0:444\nZ:Q15XqYMBWAgHKEBWvJS8f8D6yzlcw=\nR:Test_SetPermissionsAlternateTrueWithTimeout.yaml\na:0:0:444\nZ:Q1p5DOpY/s/P4NMwUtF1VNVCJ8FAg=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageShareSuite\nM:0:0:555\nR:TestCreateShareDeleteShare.yaml\na:0:0:444\nZ:Q1/d6X6SuR1qUn1Eons1gAvhUtySU=\nR:TestCreateShareIfExists.yaml\na:0:0:444\nZ:Q1okps+aNtm+lT8lz8+UyMe6hM6Jg=\nR:TestCreateShareIfNotExists.yaml\na:0:0:444\nZ:Q1n4fhevQo0HEqEhtV8ItaxxoYEpk=\nR:TestDeleteShareIfNotExists.yaml\na:0:0:444\nZ:Q1WYySNpMU25xm44yIkMpBLrE+7CU=\nR:TestGetAndSetShareMetadata.yaml\na:0:0:444\nZ:Q1/S5M+VJQyI4817tIbsWq4YRmv1Y=\nR:TestGetAndSetShareProperties.yaml\na:0:0:444\nZ:Q1MTcRs19mNCcvKQMyZk3E9nJPOvA=\nR:TestListShares.yaml\na:0:0:444\nZ:Q1BHy80fGy5LCJct3weOsG7rlJsaY=\nR:TestMetadataCaseMunging.yaml\na:0:0:444\nZ:Q1nPmUhHGEh86qlctotmnBYhZLWjw=\nR:TestShareExists.yaml\na:0:0:444\nZ:Q1V9gWW1twtMxnW2c0ZeE2ZTugHW0=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageSuite\nM:0:0:555\nR:TestGetServiceProperties.yaml\na:0:0:444\nZ:Q1l1T0RE36pPoEy+ZRHt86/Tz+aBc=\nR:TestSetServiceProperties.yaml\na:0:0:444\nZ:Q1lthgq3dFcn1wT1rLRNt074cRStA=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/StorageTableSuite\nM:0:0:555\nR:TestGet.yaml\na:0:0:444\nZ:Q1Bds7iJZwHaU76be6+qxq1KtdfGk=\nR:TestQueryTablesNextResults.yaml\na:0:0:444\nZ:Q1J/c7wGJq2/UBrPZ6bEbHwwUrCoI=\nR:TestSetPermissionsSuccessfully.yaml\na:0:0:444\nZ:Q1purnnXR2LCzJo5T3zAdfnY/VCr8=\nR:TestSetPermissionsUnsuccessfully.yaml\na:0:0:444\nZ:Q1KEA1I3sAw39kbpUnrGn/CMCOr7A=\nR:TestSetThenGetPermissionsSuccessfully.yaml\na:0:0:444\nZ:Q19b2muPAKHE0u2dzKF8GB8GZItzA=\nR:Test_CreateAndDeleteTable.yaml\na:0:0:444\nZ:Q157FWn/KADlwNDMy7S4/woof8AWs=\nR:Test_CreateTableWithAllResponsePayloadLevels.yaml\na:0:0:444\nZ:Q1Qr9SioPORm9kB6/IrqXdaIfEA6U=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/storage/recordings/TableBatchSuite\nM:0:0:555\nR:Test_BatchInsertDeleteSameEntity.yaml\na:0:0:444\nZ:Q1ASYZRnWtSpiYrVzsK3vbukEqAOo=\nR:Test_BatchInsertMultipleEntities.yaml\na:0:0:444\nZ:Q1ZVgKEPE6/Hr3XFc8s8DZJSrvu5I=\nR:Test_BatchInsertSameEntryMultipleTimes.yaml\na:0:0:444\nZ:Q1KuwU5NP2O1ROK8Wrau972XAYk/w=\nR:Test_BatchInsertThenDeleteDifferentBatches.yaml\na:0:0:444\nZ:Q1cF4tJkMTn7wN7UI6LnK+rdhHNGI=\nR:Test_BatchInsertThenMergeDifferentBatches.yaml\na:0:0:444\nZ:Q1x/RYKSZc2Tv2eAZ93nI3gW2iFNE=\nF:root/go/pkg/mod/github.com/!azure/azure-sdk-for-go@v66.0.0+incompatible/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1yRvw+4UGbli/lURVWsXGjW87Cks=\nF:root/go/pkg/mod/github.com/!azure/go-autorest\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/adal@v0.9.21\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:README.md\na:0:0:444\nZ:Q1LaAU/kSE2M1UZmfSKTgpKvQ66P8=\nR:config.go\na:0:0:444\nZ:Q16weYrUX8iRttMXpYL0gg9ByAjxU=\nR:config_test.go\na:0:0:444\nZ:Q1NZnPdV+W/OZvDGaC7r8RmAmqRRo=\nR:devicetoken.go\na:0:0:444\nZ:Q10cHZr8VaHrjL8jVMyfDmWeat7RI=\nR:devicetoken_test.go\na:0:0:444\nZ:Q18Mtk08HNN9gR+0qjIbcOk53hfTs=\nR:go.mod\na:0:0:444\nZ:Q1a1tozxAR/zpj6eIHDkaf9sTjIg8=\nR:go.sum\na:0:0:444\nZ:Q188+3Jy2AaDL0dqjKIWbakfmX2iA=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1nrPWs0ayv5RNcc8AmwtxM0jjjxc=\nR:persist.go\na:0:0:444\nZ:Q1+pHa99nSMPlc5V48K+FAx7LtgWE=\nR:persist_test.go\na:0:0:444\nZ:Q1v/99fRX+LVVX5PVTd3FJ7nS4ACc=\nR:sender.go\na:0:0:444\nZ:Q1eJ4bwdzCwDfYSMZJo7Uq7fdeGKI=\nR:token.go\na:0:0:444\nZ:Q1+GSA6A9mlu5bp4CxoQZFxXsFaqc=\nR:token_1.13.go\na:0:0:444\nZ:Q1rlYT8cqhSYpCQ30XYybKIEIpHJ0=\nR:token_legacy.go\na:0:0:444\nZ:Q1rohM/IlJQazNvFKduRwO5Ge3gRY=\nR:token_test.go\na:0:0:444\nZ:Q1F7YElsUE8Uqd0xLwr5C8UeYwLEo=\nR:version.go\na:0:0:444\nZ:Q1Ns5JIIkvxHohWNk6vZXVQW9E7/0=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/adal@v0.9.21/cmd\nM:0:0:555\nR:adal.go\na:0:0:444\nZ:Q1Bh23Ae9zZGG1hUfr4MjMumvejsE=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/azure\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/azure/auth@v0.5.11\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:auth.go\na:0:0:444\nZ:Q1irq12GwqjNsOAm17zCZNQfrc2WE=\nR:auth_test.go\na:0:0:444\nZ:Q1P7q1fJ+pvnQCIGrvWtMbNG6ckMw=\nR:go.mod\na:0:0:444\nZ:Q1LjdjfursU6RQ3u9W2kkF+GK7pf8=\nR:go.sum\na:0:0:444\nZ:Q1imIczf0wh2nDcCU6WE2fR4hRcMo=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1FM6nmqLaK6VtcIREc1n/DuTeHms=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/azure/auth@v0.5.11/testdata\nM:0:0:555\nR:credsutf16be.json\na:0:0:444\nZ:Q1IGgWhT9f5rVpYslCxBkrEqkIWmU=\nR:credsutf16le.json\na:0:0:444\nZ:Q1UhCdonrpYSGCdu0fS91l8s4DvwE=\nR:credsutf8.json\na:0:0:444\nZ:Q1YMR+ApCHx1PKBBKT79w75hmKGxc=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/azure/cli@v0.4.6\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:go.mod\na:0:0:444\nZ:Q1EPYgb14i8/4aYT5foCdgJgat7TI=\nR:go.sum\na:0:0:444\nZ:Q1WQkZytG7Hs3fsZvMbYBUF84+LcY=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1OSGL4QE4M0jm643rqnDdfdlKKSs=\nR:profile.go\na:0:0:444\nZ:Q1faN2Mlj8sceHK2JraOHZrk77CuI=\nR:token.go\na:0:0:444\nZ:Q16e+gC7medwQ9Z+3i30kLIzQcC+o=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest/date@v0.3.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:date.go\na:0:0:444\nZ:Q1YjxZDRWmGOpXpzrSjoxQoV58H8s=\nR:date_test.go\na:0:0:444\nZ:Q1QhUOaVaylsCz8TEfEPG3jRpnvFg=\nR:go.mod\na:0:0:444\nZ:Q1cAbH5VPGGbcT8/1CgI8P6lpumRw=\nR:go.sum\na:0:0:444\nZ:Q1DpBMH74en4zmKaYcB365brJXDSQ=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q18B8qv6oof3Ls+IIesanIZyuzTZ0=\nR:time.go\na:0:0:444\nZ:Q1Syl3nY+NKdgJ28LCgIAd1S3ECoo=\nR:time_test.go\na:0:0:444\nZ:Q12jwKFo93UpXXHAUuu8JsJXH3xNY=\nR:timerfc1123.go\na:0:0:444\nZ:Q1jwAQc626WpYEQT3fa5AGvjXpIRE=\nR:timerfc1123_test.go\na:0:0:444\nZ:Q18ZkqzmldkxroX2bUtqsIdyjMt28=\nR:unixtime.go\na:0:0:444\nZ:Q1Ymc9qoOPWc5AkWSutm2qJ3vKzlM=\nR:unixtime_test.go\na:0:0:444\nZ:Q1tvUL2Vk41uQP/4WM+AZDnp8J91U=\nR:utility.go\na:0:0:444\nZ:Q1UI8+Iyyn6CTQJ1Qe1gXsdBAUuiY=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest@v0.11.28\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:authorization.go\na:0:0:444\nZ:Q1vPRdHf7EXHhDLnFWsWdaFtDo/C8=\nR:authorization_sas.go\na:0:0:444\nZ:Q1McOKayIv9WaPshnIJDu0jS0E5qM=\nR:authorization_sas_test.go\na:0:0:444\nZ:Q1hEcD6zsEF58Wo3zmWon9MfXLU0Y=\nR:authorization_storage.go\na:0:0:444\nZ:Q1LrMCjp6XNbkhZHAmsrboLEB0SlY=\nR:authorization_storage_test.go\na:0:0:444\nZ:Q1fsIAcFelNEKgDCfAg5HjxPrPf7c=\nR:authorization_test.go\na:0:0:444\nZ:Q11a0CkCVnQrrjkzCoqWnTuKgGE68=\nR:autorest.go\na:0:0:444\nZ:Q1sXBrphVBmVWrgThwd5opIk82P74=\nR:autorest_test.go\na:0:0:444\nZ:Q1/5K0YeIJNWTdMlVkd3+ms2va6gQ=\nR:client.go\na:0:0:444\nZ:Q14+Z/NOuNHEbmA5w46KSBb8Nhxck=\nR:client_test.go\na:0:0:444\nZ:Q1WkFc3PmmT+0CD9k9EwRlyfnAamI=\nR:error.go\na:0:0:444\nZ:Q1Y7BFfDAu58iQBLTZRL2StFo7lVk=\nR:error_test.go\na:0:0:444\nZ:Q1dLpd5j0jT6yGaglHXj/nX8AHOaQ=\nR:go.mod\na:0:0:444\nZ:Q1wkxhdhXCKHqCr3pfNox7olTE1W4=\nR:go.sum\na:0:0:444\nZ:Q1Gb7soYZvv+MiQSDKgoPek6uTiM0=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1T3W8OAaNXAa3TVUvOLw2Se/Fm+M=\nR:preparer.go\na:0:0:444\nZ:Q129fAWBJZinF09wYygFu+MW4CmOk=\nR:preparer_test.go\na:0:0:444\nZ:Q1RSYRnyKwPX06V4uuwOoXSb8aM8Y=\nR:responder.go\na:0:0:444\nZ:Q1VzalZhIScN0Jjjpyboegd3XU0J8=\nR:responder_test.go\na:0:0:444\nZ:Q1O+LGvmurRSAuM8x8yC3bmPKnHps=\nR:retriablerequest.go\na:0:0:444\nZ:Q1DNSZOb+l000P9R3wnIMLmDDMZqQ=\nR:retriablerequest_1.7.go\na:0:0:444\nZ:Q1WeVZLQe/jCsL5frSG9H/kJFyZxI=\nR:retriablerequest_1.8.go\na:0:0:444\nZ:Q1fy64go41abNBtiNcIDUd+j9qzow=\nR:sender.go\na:0:0:444\nZ:Q13iULPKqGSx5tKrEsaR6luhKEprE=\nR:sender_test.go\na:0:0:444\nZ:Q1BzS657KJRmyq4ruWTWNy6Wj6I88=\nR:utility.go\na:0:0:444\nZ:Q1ZWrRB27/vtfU7vsFhTueUvOuMH8=\nR:utility_1.13.go\na:0:0:444\nZ:Q1Tw4KhSFI0a64xeaoCgjWGV51FIA=\nR:utility_1.13_test.go\na:0:0:444\nZ:Q1PNKuMLa2g1C5z1lLQv98uDq6CBY=\nR:utility_legacy.go\na:0:0:444\nZ:Q1fh9BFRoYdROgaecjwSKxrdzaxCA=\nR:utility_test.go\na:0:0:444\nZ:Q1zdGqlc8LDhenVfoGmaMdHVVUG/U=\nR:version.go\na:0:0:444\nZ:Q1pfey92gWC/6MysRLZyjx9YwibV4=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest@v0.11.28/azure\nM:0:0:555\nR:async.go\na:0:0:444\nZ:Q1BD23LR/Ieo/1dv7DYoGaXkbOC9g=\nR:async_test.go\na:0:0:444\nZ:Q1ei2/y6eBsuzCHhndIGExM8Ob0Ys=\nR:azure.go\na:0:0:444\nZ:Q1ZgHhaSb72sAIRzQ7kMR+7MIs0hE=\nR:azure_test.go\na:0:0:444\nZ:Q15WIM97PoWwJwfcVHmNsMJYXjp/U=\nR:environments.go\na:0:0:444\nZ:Q1lbHK7v+rpxNx5AYt9qjrV2kITPo=\nR:environments_test.go\na:0:0:444\nZ:Q1D455ZHDvezAFaxbAjt0vcTIKRDg=\nR:metadata_environment.go\na:0:0:444\nZ:Q1HPmuiXoVKpvduMDcWuZs2PR3Ye8=\nR:rp.go\na:0:0:444\nZ:Q1uIzUkxR/FmUZN+RX1RgjV5X7XZM=\nR:rp_test.go\na:0:0:444\nZ:Q1pf9Fd39verSDhZkcOD3crVmrBRU=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest@v0.11.28/azure/example\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1G0Aik11/0XL1FcBEw0UfPBbPMAE=\nR:main.go\na:0:0:444\nZ:Q14W6a33FDVtBYWbbyAkGsIt1cKxs=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/autorest@v0.11.28/azure/testdata\nM:0:0:555\nR:test_environment_1.json\na:0:0:444\nZ:Q1ASB7S8k3ZzvymH7MV8MQ8lmHIns=\nR:test_metadata_environment_1.json\na:0:0:444\nZ:Q1kbVnaa09ShroNdwE1SPPV0SmvtY=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/logger@v0.2.1\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:go.mod\na:0:0:444\nZ:Q1QJnjQKkfj95ey+NlwpZHUsIX4B8=\nR:go.sum\na:0:0:444\nZ:Q1DpBMH74en4zmKaYcB365brJXDSQ=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1q55oMztwpLClWhGQIQa13ufaL0Q=\nR:logger.go\na:0:0:444\nZ:Q1NbKH+ErclD3dBt4LWgcBJlnXB2k=\nR:logger_test.go\na:0:0:444\nZ:Q1Y7AHU6Wjm2AS2lXCPcRaqT8Xwrw=\nF:root/go/pkg/mod/github.com/!azure/go-autorest/tracing@v0.6.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:go.mod\na:0:0:444\nZ:Q16jDAI4um1xiiXl5xrOwScyU3Fc4=\nR:go.sum\na:0:0:444\nZ:Q1DpBMH74en4zmKaYcB365brJXDSQ=\nR:go_mod_tidy_hack.go\na:0:0:444\nZ:Q1306AYCGLSyeJwUSUFC5T9AmewKg=\nR:tracing.go\na:0:0:444\nZ:Q1PG/oKJJeL70fCCOTCYuInAJrj6M=\nR:tracing_test.go\na:0:0:444\nZ:Q12AfckHMLjgl/7kfIRm/hQRGB9KI=\nF:root/go/pkg/mod/github.com/!azure/go-autorest@v14.2.0+incompatible\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1h48oMxi1nFjUR92fQH02i/SAIQE=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1HZBtjoUR9sFaL0UYrXNOT+DQ5PA=\nR:GNUmakefile\na:0:0:444\nZ:Q1KLia+rp3Goi8lZskMOyAvwCuCnk=\nR:Gopkg.lock\na:0:0:444\nZ:Q12z9uy3FWbvrDBWWTdtr8KatygH4=\nR:Gopkg.toml\na:0:0:444\nZ:Q1h4jMBDaEuLHYsoR6we4UVyyv8tg=\nR:LICENSE\na:0:0:444\nZ:Q1MIxHo+o1ZALS0UJB2pqfZM9AQAg=\nR:README.md\na:0:0:444\nZ:Q1Vlp3Iv/Rqzoz6Q9OjfOlZQrorac=\nR:azure-pipelines.yml\na:0:0:444\nZ:Q1UEwHH2oeLRK5c3Ze5Ys5dnCQZ+0=\nR:doc.go\na:0:0:444\nZ:Q1q8DGSzP+rCIzMKFIlkpvz8AqiHk=\nF:root/go/pkg/mod/github.com/!azure/go-autorest@v14.2.0+incompatible/.github\nM:0:0:555\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1vGGnwZ3qj/c1iQ3HmuCddsbePlE=\nF:root/go/pkg/mod/github.com/!make!now!just\nF:root/go/pkg/mod/github.com/!make!now!just/heredoc@v1.0.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1cYPUtln01Hjg4oAZsg4Dnvgr9H8=\nR:README.md\na:0:0:444\nZ:Q1+eUsXAxoqZ3LRiNfd/jKpjA5KMw=\nR:example_test.go\na:0:0:444\nZ:Q1/X8n+A6yltToA7BeAduP512dk6g=\nR:go.mod\na:0:0:444\nZ:Q1blPXbKSC4fFoGqsd8vBmMT41vEk=\nR:heredoc.go\na:0:0:444\nZ:Q1ZOGRH1DfEIl7PspWKUUGuxKKuus=\nR:heredoc_test.go\na:0:0:444\nZ:Q1Gp0RcHCgORCYkgcRKMLZOqTRYns=\nF:root/go/pkg/mod/github.com/!make!now!just/heredoc@v1.0.0/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1M9kAf/k3EUNtQLieDRY+NWuiVQw=\nF:root/go/pkg/mod/github.com/!make!now!just/heredoc@v1.0.0/dot\nM:0:0:555\nR:dot.go\na:0:0:444\nZ:Q1Gjnpk4uFhnuaqEdedoKRKVMUkWI=\nF:root/go/pkg/mod/github.com/!masterminds\nF:root/go/pkg/mod/github.com/!masterminds/goutils@v1.1.1\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1aHRP1w0SA5zFf6D2vey9qzJnES8=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1lkW6QqCp0V8mBKjTFxflX1qefRo=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q11PjOnJf2PCvkG+rhcI9+ItYX2bI=\nR:appveyor.yml\na:0:0:444\nZ:Q13A76f4NINICS/7vLWEBhO19fuu8=\nR:cryptorandomstringutils.go\na:0:0:444\nZ:Q1rP72o5fHG9Ri8oq90E3p7ahmdkQ=\nR:cryptorandomstringutils_test.go\na:0:0:444\nZ:Q1J/qW5L4mSV+wXYoIBsX2Npw3X3Q=\nR:randomstringutils.go\na:0:0:444\nZ:Q1du5mpjqRZ+EfOGUOJS9+QYdRjKQ=\nR:randomstringutils_test.go\na:0:0:444\nZ:Q1rkKoG8KsZJ9mYjMafmtf1WBIdmE=\nR:stringutils.go\na:0:0:444\nZ:Q1xGAlfxLNZhRoeQvSCQO4ssQyQlk=\nR:stringutils_test.go\na:0:0:444\nZ:Q1DNV8+JNFH2hdN3uZoYTDjbQ9aLg=\nR:wordutils.go\na:0:0:444\nZ:Q1Kxew+QdeTjp41kId/7+/cMLJ3Lk=\nR:wordutils_test.go\na:0:0:444\nZ:Q1GqSKahUrMJ79BGlnpN4U4ukDNz4=\nF:root/go/pkg/mod/github.com/!masterminds/semver\nF:root/go/pkg/mod/github.com/!masterminds/semver/v3@v3.1.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1BGwSYNY9bp2DfqCqVLTIlS5GM0c=\nR:.golangci.yml\na:0:0:444\nZ:Q1R1g6HqV5EdavPRQxIFUEt7QfSds=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1YSPsrt5KSPKd/5fXdSNCfay6/3E=\nR:LICENSE.txt\na:0:0:444\nZ:Q1AgrPz21r1tcB0ZvRb0nQvxhEF3k=\nR:Makefile\na:0:0:444\nZ:Q1mSAhhZ3wPwIdAh0pyCZ5nBY368M=\nR:README.md\na:0:0:444\nZ:Q1Bmt+rAcu0FGx5OMvdr3iPIk4ITM=\nR:benchmark_test.go\na:0:0:444\nZ:Q18UbX3IOyKv4am4sVROH8cEBTqXs=\nR:collection.go\na:0:0:444\nZ:Q1kh6SKvnwS4jruuc50YXt+dsVwLY=\nR:collection_test.go\na:0:0:444\nZ:Q1wosRDVdRi8txxAaGAOPpeeAwSKM=\nR:constraints.go\na:0:0:444\nZ:Q1rN75xmApiojTzU/eZTWnhUrXHKo=\nR:constraints_test.go\na:0:0:444\nZ:Q1gHKjoT0LPrWmlAaewvpzFU0O0Hc=\nR:doc.go\na:0:0:444\nZ:Q1qg75B8fqJbWUSTs7QqejvLdauFs=\nR:fuzz.go\na:0:0:444\nZ:Q1r3VrQAKqakVZFOgAx3ZU1C34OkY=\nR:go.mod\na:0:0:444\nZ:Q11W+IGZ91WF193OnNUvRQRBmDRNA=\nR:version.go\na:0:0:444\nZ:Q1fV4CHbO4S34x9Y7Yd4cKIGMyBnk=\nR:version_test.go\na:0:0:444\nZ:Q1Yw89cZH+XbR5thj7kMwLKYrKFdk=\nF:root/go/pkg/mod/github.com/!masterminds/semver/v3@v3.1.1/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/!masterminds/semver/v3@v3.1.1/.github/workflows\nM:0:0:555\nR:test.yaml\na:0:0:444\nZ:Q1wBOpiCKj6VaTS4lReD1b/LH7APU=\nF:root/go/pkg/mod/github.com/!masterminds/sprig\nF:root/go/pkg/mod/github.com/!masterminds/sprig/v3@v3.2.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1Agzq3LgXaW/G6/UYLVCzskC+NDc=\nR:CHANGELOG.md\na:0:0:444\nZ:Q10qrsXC2alVhSc8DvtumFckGM0NU=\nR:LICENSE.txt\na:0:0:444\nZ:Q1U147rfW1MthCYntQSXb7uTvC2Lg=\nR:Makefile\na:0:0:444\nZ:Q14R6wAB1OyksrXyt+wKxYkRaAjkU=\nR:README.md\na:0:0:444\nZ:Q1xFW+BftH50ZUMPljxRhEhT1JFIU=\nR:crypto.go\na:0:0:444\nZ:Q1/TUfWk3zgeVj9yrTVmuUR2q39no=\nR:crypto_test.go\na:0:0:444\nZ:Q1XLbasSW57N9dMCEZ5kG0Gfv9wLY=\nR:date.go\na:0:0:444\nZ:Q1yI2pGS0L4C6A1dM7Uv5jDS0XKr4=\nR:date_test.go\na:0:0:444\nZ:Q1UU4Ui5mPOsnMqAEpuxGfm5aTXHM=\nR:defaults.go\na:0:0:444\nZ:Q1op2oHnp0UgYaMnLrY+lcuPKC1PI=\nR:defaults_test.go\na:0:0:444\nZ:Q1Pcao+AjXIwc727zh57ncGSSv3t4=\nR:dict.go\na:0:0:444\nZ:Q1iCFT3P1790mEpgHLpOxk3c+X5hY=\nR:dict_test.go\na:0:0:444\nZ:Q1fmvY1SAuaWWxMZ1NthWrsiDJQA4=\nR:doc.go\na:0:0:444\nZ:Q1oseH2bzla27KKD9TyEesii9hT+M=\nR:example_test.go\na:0:0:444\nZ:Q1E9oWhves6fJlmU+M1sUSMCzZhSM=\nR:flow_control_test.go\na:0:0:444\nZ:Q1V8dJfG84fX4IUitaf7CWUy1PQGw=\nR:functions.go\na:0:0:444\nZ:Q1cNSeCc+X5PWQy8quPssdao/rO68=\nR:functions_linux_test.go\na:0:0:444\nZ:Q1Qyolv9+cnS+PfAb7R4CD2svqJJE=\nR:functions_test.go\na:0:0:444\nZ:Q1Nri69ySy/grW9nsIXegQJlRuYlM=\nR:functions_windows_test.go\na:0:0:444\nZ:Q1pwOXPRpfImzstJyrbnBmal0ywjA=\nR:go.mod\na:0:0:444\nZ:Q1d2YdyDhL6y4JfP4c9VsTnRCdVb0=\nR:go.sum\na:0:0:444\nZ:Q1OBqYhUglKU5CopwkHqPPi1rGXjw=\nR:issue_188_test.go\na:0:0:444\nZ:Q15xP6nuF0geebj782OMkFGyKHeNM=\nR:list.go\na:0:0:444\nZ:Q15J5FwFphyOn2dwzaxPgvoFiOa6c=\nR:list_test.go\na:0:0:444\nZ:Q1adVt3NAJx+oEWcYpqF0n9S2Iqlc=\nR:network.go\na:0:0:444\nZ:Q1DAboFUN3S1IDE5jzjKU3kpl/V8I=\nR:network_test.go\na:0:0:444\nZ:Q1M8LQK2hXal3amE1TLgtYBJ8AEEA=\nR:numeric.go\na:0:0:444\nZ:Q1dgTpen813InhCB4XgTj3X/ZK1xo=\nR:numeric_test.go\na:0:0:444\nZ:Q1+/p9MkpgezIeirgHLgK+QuNkilU=\nR:reflect.go\na:0:0:444\nZ:Q1U0q5yhY9bIwni54XqAoEWVApwMQ=\nR:reflect_test.go\na:0:0:444\nZ:Q1TtLYrMZ299DLckdOi59UdjfZrts=\nR:regex.go\na:0:0:444\nZ:Q142048FU0i3s+l2niheC7ts/FCag=\nR:regex_test.go\na:0:0:444\nZ:Q1o51FqibPHT33H0DCUTrvcP/x1bs=\nR:semver.go\na:0:0:444\nZ:Q1hkbbUC2JgpNZc5DrH3X+OGn1Tms=\nR:semver_test.go\na:0:0:444\nZ:Q1gB9ZCSt4BXa12lMPyHQDyUInsrU=\nR:strings.go\na:0:0:444\nZ:Q1dbFl0ci6n6ZETLOahknVzKI8/4M=\nR:strings_test.go\na:0:0:444\nZ:Q1iy8qpMmfmy7wzUFMDuCfWyaxDkA=\nR:url.go\na:0:0:444\nZ:Q1mzurnOUGhXm22kdT0XpTFkt7p14=\nR:url_test.go\na:0:0:444\nZ:Q143yHlp7hskDSiWrWGWsnOrLAARo=\nF:root/go/pkg/mod/github.com/!masterminds/sprig/v3@v3.2.2/.github\nM:0:0:555\nR:ISSUE_TEMPLATE.md\na:0:0:444\nZ:Q1mRr+PBqlm9JJnMWILDFgbSpXnL0=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1IQOCSeuexYsbk37ZC3/jTBFuBM8=\nF:root/go/pkg/mod/github.com/!masterminds/sprig/v3@v3.2.2/.github/workflows\nM:0:0:555\nR:test.yaml\na:0:0:444\nZ:Q1efDdeGlW0b4BAlcreo/D7vTe6d4=\nF:root/go/pkg/mod/github.com/!masterminds/sprig/v3@v3.2.2/docs\nM:0:0:555\nR:_config.yml\na:0:0:444\nZ:Q1Ojrhn4gfwjd2upAm5p3uGUMJoJQ=\nR:conversion.md\na:0:0:444\nZ:Q15VnPC1n9BUJdb90KgXNWJ91fKT0=\nR:crypto.md\na:0:0:444\nZ:Q1XiMHIVnzTbrJhqYy6LrpJuVEKmM=\nR:date.md\na:0:0:444\nZ:Q1E6rPPpN0/KWTtbpMYhlva3jgiOg=\nR:defaults.md\na:0:0:444\nZ:Q1D+WLV1vSr39yvaBSUiASN01Xiu8=\nR:dicts.md\na:0:0:444\nZ:Q1bp04+J9F4vBUWh/6UMnAablBc8s=\nR:encoding.md\na:0:0:444\nZ:Q14FvH/ghT+ZmNZCCbFYXUCJgTE7s=\nR:flow_control.md\na:0:0:444\nZ:Q1kI2AgtuDVUSJiax0hiDYAq8xgYo=\nR:index.md\na:0:0:444\nZ:Q1feSzJl/iDhjqWCGHHb6UDiVMkQA=\nR:integer_slice.md\na:0:0:444\nZ:Q10gSYH6W6wBkeKu/SX2KdXhLWsEs=\nR:lists.md\na:0:0:444\nZ:Q1Ma06fvN7wbdQpyjQFp+ulm0TrKk=\nR:math.md\na:0:0:444\nZ:Q1JKPvmcJDBI4MumcsZwEmfRq38Xo=\nR:mathf.md\na:0:0:444\nZ:Q15DMc+Je0wUCbh6U3S+AmuR5UnoI=\nR:network.md\na:0:0:444\nZ:Q1QrJLRq+e61Fsdl4s27c51Hb8CFI=\nR:os.md\na:0:0:444\nZ:Q10habSGDhQN97XA2MdOhsxBBIpqY=\nR:paths.md\na:0:0:444\nZ:Q1gKDFzOjhT2ehxH/aAq/yUQjN4QQ=\nR:reflection.md\na:0:0:444\nZ:Q18QJzUHIRPZq1pduuDJ2CqBVsA+4=\nR:semver.md\na:0:0:444\nZ:Q1qKBvr8KpImapKgnn1CfKVfhDK6s=\nR:string_slice.md\na:0:0:444\nZ:Q1T1NE4lASuZDL2i+2zypeS5ZZO88=\nR:strings.md\na:0:0:444\nZ:Q1TWrnYwQwroKFbdRRf//kNfLxySs=\nR:url.md\na:0:0:444\nZ:Q1mx6KYXapt1BAHKsJPm0B/cIz1uk=\nR:uuid.md\na:0:0:444\nZ:Q10ozghF5VNYs52WwYRqAgk2HVtI8=\nF:root/go/pkg/mod/github.com/!proton!mail\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1FTDK9PzNuiAdiswlsaqmbq/QjFM=\nR:AUTHORS\na:0:0:444\nZ:Q1XSIpEwJVjMHf5HKcabrGJyUtPBA=\nR:CONTRIBUTORS\na:0:0:444\nZ:Q1OQl1c8MR3vVEXk3MrzGJmHRlvIM=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1jEuOQB4BujLn17X9Zg/MfNFQpBw=\nR:go.mod\na:0:0:444\nZ:Q1WL1tfQ0/tkplUO0MFvyXL4YAiWw=\nR:go.sum\na:0:0:444\nZ:Q1Uxno8GS/orQKXUdOzuG7zNCy8ds=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q15IOiwLwiqSbOiJe2tPDAZZ5ud40=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/.github/workflows\nM:0:0:555\nR:go.yml\na:0:0:444\nZ:Q1dSzzcpGp50Q0RYaS04blLguDYVA=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/bitcurves\nM:0:0:555\nR:bitcurve.go\na:0:0:444\nZ:Q1JHLI5feW2EY3OJOP6pg5jau6CK0=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/brainpool\nM:0:0:555\nR:brainpool.go\na:0:0:444\nZ:Q1jM5Cps61qWv66wQMTYcGsrFS6JY=\nR:brainpool_test.go\na:0:0:444\nZ:Q1f2Jb1nTVb3NYHxfl01HVs+kT3GE=\nR:rcurve.go\na:0:0:444\nZ:Q1CU4EyfBAtxx41fmShVmJ95fu3iQ=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/eax\nM:0:0:555\nR:eax.go\na:0:0:444\nZ:Q1UWFTMn8jjyQAdEkl1f8QHV6nZUI=\nR:eax_test.go\na:0:0:444\nZ:Q1dqfkklD49dTgkmqpOlxYvfiI/RE=\nR:eax_test_vectors.go\na:0:0:444\nZ:Q1Eb0zY3iXHUE3ahDl57q76UB0fkg=\nR:random_vectors.go\na:0:0:444\nZ:Q1Mc6UN9jtmziXSR7nk1jbD7hbj14=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/internal/byteutil\nM:0:0:555\nR:byteutil.go\na:0:0:444\nZ:Q1KmMshkpHHsJP104wQAcTtIsHhFQ=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/ocb\nM:0:0:555\nR:ocb.go\na:0:0:444\nZ:Q1ShCB2O6+nCJR55vkzobUCnXASMQ=\nR:ocb_test.go\na:0:0:444\nZ:Q1Xg/3y+VMb7UXyBY0li9QrZrS2Lo=\nR:random_vectors.go\na:0:0:444\nZ:Q1+HE538xDHA+/OOErEs1jO7hPrNE=\nR:rfc7253_test_vectors_suite_a.go\na:0:0:444\nZ:Q1GW7WqQPDfSCLWTHi/3vFeDAwPiU=\nR:rfc7253_test_vectors_suite_b.go\na:0:0:444\nZ:Q1F1hNZwafgp/7pQFO/EYFnZj0i1g=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp\nM:0:0:555\nR:canonical_text.go\na:0:0:444\nZ:Q1jS0W59EeXQKWA0AfVtdSIxbgGrg=\nR:canonical_text_test.go\na:0:0:444\nZ:Q1IiG9XPcW2xnrz30Tn8jcR76c42k=\nR:key_generation.go\na:0:0:444\nZ:Q1+tVy6gi9RilKB9sE0DUhS0x0dI0=\nR:keys.go\na:0:0:444\nZ:Q1uDvTOFsNKu+RlIsxrSKQQlYj8XU=\nR:keys_test.go\na:0:0:444\nZ:Q1MYbg1J6P1ETiUZhNWvTONbYWpp0=\nR:keys_test_data.go\na:0:0:444\nZ:Q1JM5IlRAV+LF98Y7YFn4lMW8ba08=\nR:keys_v5_test.go\na:0:0:444\nZ:Q1gtreeJR6pio/2DfKYmw/wCGSP00=\nR:read.go\na:0:0:444\nZ:Q12VTKMXkZKpqOm/cXf7QS39TAcIA=\nR:read_test.go\na:0:0:444\nZ:Q1InAyNYM1OvyWe+Ab9SOFziiJxCE=\nR:read_write_test_data.go\na:0:0:444\nZ:Q1Xwj7IBAhm1zZQSkx7QsqVZfhraM=\nR:write.go\na:0:0:444\nZ:Q1tIw74hSRi1TGiiumLCh6FLgalYk=\nR:write_test.go\na:0:0:444\nZ:Q1MrDLx8FtT5ZfFHj7vrnRdQ5EIsE=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/aes\nM:0:0:555\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/aes/keywrap\nM:0:0:555\nR:keywrap.go\na:0:0:444\nZ:Q1a2dIuIHJ4YUtY5yLH+q7umMsJFw=\nR:keywrap_test.go\na:0:0:444\nZ:Q1Mdy3werOd4X9hDd8fKE5yAWdZss=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/armor\nM:0:0:555\nR:armor.go\na:0:0:444\nZ:Q1iiEhA2EGsnfAVgOusovD3+v6Kjc=\nR:armor_test.go\na:0:0:444\nZ:Q15ewBarFEZ2khQWmLBhkC4TB4RAs=\nR:encode.go\na:0:0:444\nZ:Q1fvTXcjZOouy47G9KdHq8hKO7sHk=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/clearsign\nM:0:0:555\nR:clearsign.go\na:0:0:444\nZ:Q1aXR6AXVsJXK8eXU9DcWEMJ9a4Y4=\nR:clearsign_test.go\na:0:0:444\nZ:Q1KjM5TFP5GpVc/PzEFDAU4RWC1Rs=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/ecdh\nM:0:0:555\nR:ecdh.go\na:0:0:444\nZ:Q1gs0ldmZw0EsRO+ZWXXKex+cvd/c=\nR:ecdh_test.go\na:0:0:444\nZ:Q1KAyXYdx1WIkPU6fNRUy19ezI+nM=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/ecdsa\nM:0:0:555\nR:ecdsa.go\na:0:0:444\nZ:Q1bO7GpOjd76daA+KmpcGsIjjvq1A=\nR:ecdsa_test.go\na:0:0:444\nZ:Q19n4Bw5eRIphiZ0TC0qR0q5YxcgY=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/eddsa\nM:0:0:555\nR:eddsa.go\na:0:0:444\nZ:Q16u+vTSVIm7Ss6eikIriAOrq4CH4=\nR:eddsa_test.go\na:0:0:444\nZ:Q1JLLiKK1zvU6BAyvwoH6APpyiB54=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/elgamal\nM:0:0:555\nR:elgamal.go\na:0:0:444\nZ:Q1iwa6ivy4Z89KZbJ6arSzKd7HEUg=\nR:elgamal_test.go\na:0:0:444\nZ:Q1cjLqvKJxTGXuQqdzuRqQhV9YhXY=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1kpEA7VgIHbXZe8CDFtjuggc+e8s=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/integration_tests\nM:0:0:555\nR:end_to_end_test.go\na:0:0:444\nZ:Q1zHof8S4zZNnySoM2sOXBV8MQYvo=\nR:utils_test.go\na:0:0:444\nZ:Q1T++DbvuOnMx8/OJsv7FojaBQrdw=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/integration_tests/testdata\nM:0:0:555\nR:test_vectors.json\na:0:0:444\nZ:Q1jGu6zmJ/26WRJAhmVm7/rN9GTas=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/internal/algorithm\nM:0:0:555\nR:aead.go\na:0:0:444\nZ:Q1hiT6KuIOcXioSdT6xlIEWsRZerg=\nR:cipher.go\na:0:0:444\nZ:Q1aAmJuQUWg72vg1dbapJwKHHFbrA=\nR:hash.go\na:0:0:444\nZ:Q1SlVQfBKcwPwXuRWmVF0OjHaq00o=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/internal/ecc\nM:0:0:555\nR:curve25519.go\na:0:0:444\nZ:Q1hDtrtZ90sfHGSXQiTJiXeJV5spM=\nR:curve25519_test.go\na:0:0:444\nZ:Q1z+slrZAAE2faRxbIeMm8uruPclI=\nR:curve_info.go\na:0:0:444\nZ:Q1wxUp5TGzVV4VgNbDj5+yPohvDeM=\nR:curves.go\na:0:0:444\nZ:Q1IE/b7yCSwnilKj7iOjSROHMHVnQ=\nR:ed25519.go\na:0:0:444\nZ:Q1V/Z7p22ndj1odVHyuZdSkhMf9hg=\nR:ed25519_test.go\na:0:0:444\nZ:Q1tyUx7qDvnQ/DDg8CK7jOF+oaBOY=\nR:ed448.go\na:0:0:444\nZ:Q1r0Ds5PogiSM0adnGl0vtRr7FVpI=\nR:generic.go\na:0:0:444\nZ:Q1SUpf9bcuW7wa9dDiE2rsYo/it4Y=\nR:x448.go\na:0:0:444\nZ:Q1n86Op+TKyqh2upL79+H7vdBGqxI=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/internal/encoding\nM:0:0:555\nR:encoding.go\na:0:0:444\nZ:Q1bQkCgJkZf6hWcQXk5Gv8P62TjQU=\nR:mpi.go\na:0:0:444\nZ:Q1fM/IIEiIj34f+OMeNUEjwAI2ESk=\nR:mpi_test.go\na:0:0:444\nZ:Q108cT5jxO3i3T8PMAoxv7CalS3Eo=\nR:oid.go\na:0:0:444\nZ:Q1XCJ5utRK02kfcLMXgLRX0c7PcEM=\nR:oid_test.go\na:0:0:444\nZ:Q104TXZ/L2kohBcgSrcsln157XJOI=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/packet\nM:0:0:555\nR:aead_config.go\na:0:0:444\nZ:Q1Txp8IrFr89mvA40oynROVnFQOgY=\nR:aead_encrypted.go\na:0:0:444\nZ:Q103I6FF8YAUQRDCPeusnkM782eQw=\nR:aead_encrypted_data_test.go\na:0:0:444\nZ:Q1O42NGOlW1hICgrpDVxtntZWje2I=\nR:aead_encrypted_test.go\na:0:0:444\nZ:Q1ieOaVISlPS4omoQesStO9mzAwKM=\nR:compressed.go\na:0:0:444\nZ:Q1AS5uiOkD/l6Up57cKfA0knpHbDs=\nR:compressed_test.go\na:0:0:444\nZ:Q1Im0ijV8VzsW5oI1mHaMZ3tAryWc=\nR:config.go\na:0:0:444\nZ:Q1BNQbbBTHZrHASmKYOaLz3Pud4dM=\nR:encrypted_key.go\na:0:0:444\nZ:Q15l5JFq3T87gjhgIUZAjIb7r/RhM=\nR:encrypted_key_test.go\na:0:0:444\nZ:Q1pFn6D7Er65hkSIQN6J4RdIpwKB4=\nR:literal.go\na:0:0:444\nZ:Q1p1IkNEkLXphsb/IlaNmOXcxGyw8=\nR:ocfb.go\na:0:0:444\nZ:Q1SZRgKvO0s4qpJ52cBzPsKAAFaSg=\nR:ocfb_test.go\na:0:0:444\nZ:Q17mE69a6lqQ3cMD9PZyup9cZ9e/8=\nR:one_pass_signature.go\na:0:0:444\nZ:Q1M7QqGXxsClZ0SAl5XWLBGBMA/hA=\nR:opaque.go\na:0:0:444\nZ:Q1bPDAgPglQA8QQNLj8BuJdLlF9dE=\nR:opaque_test.go\na:0:0:444\nZ:Q1zCocpxMEE2wRxBTCyKbe/dUaDmc=\nR:packet.go\na:0:0:444\nZ:Q17CCXO86W8oR0Cm5YWL+01LtfjLU=\nR:packet_test.go\na:0:0:444\nZ:Q1sleljwkQlR4+dzr0MAFFWZmBoIk=\nR:private_key.go\na:0:0:444\nZ:Q1M5Ium6+9BZQDkp2FBVX+es7X/7M=\nR:private_key_test.go\na:0:0:444\nZ:Q1Jbu16V9GPzEd62N+E3SuAwuTJak=\nR:private_key_test_data.go\na:0:0:444\nZ:Q1o05j+wRS6W+IWE9Bd8lrmJWANWo=\nR:public_key.go\na:0:0:444\nZ:Q1xNc3AJ7skF7X637HTOrPa96O/3g=\nR:public_key_test.go\na:0:0:444\nZ:Q1GwH9CM6vfmF8sWKqrCcp0wF5Akg=\nR:public_key_test_data.go\na:0:0:444\nZ:Q1LUJEfnRsdZwOjEFbrBHky9RhavE=\nR:reader.go\na:0:0:444\nZ:Q14R8E9vzC0F0ysPI6PbcZVzph9WY=\nR:signature.go\na:0:0:444\nZ:Q1EysZHlE9rbpncrbCY6ex3/lvqZQ=\nR:signature_test.go\na:0:0:444\nZ:Q1WhIgQ9im5Gvg+bJ2rjAlvfRbs7U=\nR:symmetric_key_encrypted.go\na:0:0:444\nZ:Q1arKAljDIlkRb3P8inYfyrII6/08=\nR:symmetric_key_encrypted_data_test.go\na:0:0:444\nZ:Q1NIaunKrrdJlTmoQr5xqIQ2FuaMU=\nR:symmetric_key_encrypted_test.go\na:0:0:444\nZ:Q18ndD5KMU6KVUzCvbiiv1kaQZC9o=\nR:symmetrically_encrypted.go\na:0:0:444\nZ:Q1tdg1HLoZ0W0keRs/MJhNkGuvEyw=\nR:symmetrically_encrypted_test.go\na:0:0:444\nZ:Q1PV5AaRhfOLch3dVsXdlUZqV6+MM=\nR:userattribute.go\na:0:0:444\nZ:Q1DenFqx9rDWqHWFeGJoB7bXjLo0I=\nR:userattribute_test.go\na:0:0:444\nZ:Q1MIL3n4N8oajuBE3R3C/FjB3/l24=\nR:userid.go\na:0:0:444\nZ:Q1ovaWqas0w8iNs9D/ooFa376Btu0=\nR:userid_test.go\na:0:0:444\nZ:Q1zNiGdWEeaqFJekvfn6bp534qR3Y=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/s2k\nM:0:0:555\nR:s2k.go\na:0:0:444\nZ:Q1oSIDmbr7OjEPkZ4B6z77FnuRWhA=\nR:s2k_test.go\na:0:0:444\nZ:Q1VvdptcxaPdKFq92l6I4F+br+qDA=\nF:root/go/pkg/mod/github.com/!proton!mail/go-crypto@v0.0.0-20220824120805-4b6e5c587895/openpgp/test_data\nM:0:0:555\nR:aead-eax-packet.b64\na:0:0:444\nZ:Q1blHaT2XrV251QU27HdEYcrAlvE4=\nR:aead-ocb-asym-key.asc\na:0:0:444\nZ:Q1BWcgbPzIP/zH03EpNcm52ZUbMh0=\nR:aead-ocb-asym-message.asc\na:0:0:444\nZ:Q18WiTZvjpJcn7NZTzG/czT6HbPsk=\nR:aead-sym-message.asc\na:0:0:444\nZ:Q1niwrFEPX8h/D2dAL/mxX407bHBY=\nR:sym-corrupted-message-invalid-sig-header.asc\na:0:0:444\nZ:Q1jNiMX4VKjyMpS6Hyzf+2XYMeTyA=\nR:sym-corrupted-message-long-length.asc\na:0:0:444\nZ:Q16DTrx7U1r+LknaPgeT4LLrBLpSQ=\nF:root/go/pkg/mod/github.com/antonfisher\nF:root/go/pkg/mod/github.com/antonfisher/nested-logrus-formatter@v1.3.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1pW1v4t66CNfytNgc2yJszfwB8cU=\nR:.travis.yml\na:0:0:444\nZ:Q1ibfxA48EGAXV+R8kdA+k7zWpnDE=\nR:LICENSE\na:0:0:444\nZ:Q15Fy2SOAMkwmZR4uqP/GvNC6hidk=\nR:Makefile\na:0:0:444\nZ:Q1pcU7Fg6VpoE9sxtJhXnofl5MDrI=\nR:README.md\na:0:0:444\nZ:Q1kvawqOX8aBPIurst2hOcbT6XfPw=\nR:formatter.go\na:0:0:444\nZ:Q1qE8U6vZ2iB9WSvCejW03ApKIhUM=\nF:root/go/pkg/mod/github.com/antonfisher/nested-logrus-formatter@v1.3.1/example\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1U1qwKcc+DX41u8/0+eYOMDIEY8s=\nF:root/go/pkg/mod/github.com/antonfisher/nested-logrus-formatter@v1.3.1/tests\nM:0:0:555\nR:formatter_test.go\na:0:0:444\nZ:Q1FR3ymNHP5W1jTL8+p71Fw4B20EM=\nF:root/go/pkg/mod/github.com/asaskevich\nF:root/go/pkg/mod/github.com/asaskevich/govalidator@v0.0.0-20210307081110-f21760c49a8d\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1yxDlZ1vY3ufZJCHqohTVvR9RAAA=\nR:.travis.yml\na:0:0:444\nZ:Q1BsUp0WIRFAJ6Ri1YdXjr00f7ils=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q12gqCAyTy5Kmc363WYLJog8K8ELo=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1RaKfW18P9d42/g3MuYCImdkrth4=\nR:LICENSE\na:0:0:444\nZ:Q19WFmvKOXkr9JNHxmNs5am22/Nlc=\nR:README.md\na:0:0:444\nZ:Q1cmUlKW6tY3zUTgp83J6GiMPy0z8=\nR:arrays.go\na:0:0:444\nZ:Q1CmO4uRdRs69mtKZCsRBoHVrtIuY=\nR:arrays_benchmark_test.go\na:0:0:444\nZ:Q1/A46JQ6jaoqnP7JnJFXSQNb8veE=\nR:arrays_example_test.go\na:0:0:444\nZ:Q1dsLD+oeV6PDWcn7xoOXciJgGqfU=\nR:arrays_test.go\na:0:0:444\nZ:Q1V4pa+GAgxxwykofbRkgC9JuXi08=\nR:converter.go\na:0:0:444\nZ:Q1DqUU+amPGS1rdzI6KxNZpWXBzhk=\nR:converter_benchmark_test.go\na:0:0:444\nZ:Q1vYXUkIptnXFj37kYTM3WuEAxh8E=\nR:converter_example_test.go\na:0:0:444\nZ:Q1Fl3jUeRehKqpK+WkPdKfugnJhaw=\nR:converter_test.go\na:0:0:444\nZ:Q1CkJVVEjzLT2rJQ4rrWvezLPOeQo=\nR:doc.go\na:0:0:444\nZ:Q1QoyM73PEKIvgrJ3YJR7L5Ow2R1s=\nR:error.go\na:0:0:444\nZ:Q1kCcX1Lc23nZRfj6o52B1HKTkEgU=\nR:error_test.go\na:0:0:444\nZ:Q16crVDGyDXZWrWh5lY0x8KQIzjAs=\nR:go.mod\na:0:0:444\nZ:Q1HBvJu9XyNVTJKwTuFVKLtOwfQJU=\nR:numerics.go\na:0:0:444\nZ:Q1sWy9dDqAxnKcCfam3skRt3iV4lk=\nR:numerics_benchmark_test.go\na:0:0:444\nZ:Q1zw8d3YdgA30wdxkEHDc4NQ2vPe0=\nR:numerics_example_test.go\na:0:0:444\nZ:Q1fg6QlYDY0eeEYWVHfEpJLTLF4pQ=\nR:numerics_test.go\na:0:0:444\nZ:Q1qP21ixx563glXKyzznjw8L37grE=\nR:patterns.go\na:0:0:444\nZ:Q1LgqZp8k3xHRygT9UEs8LPBctn2E=\nR:types.go\na:0:0:444\nZ:Q1Agso+vyYsU7RipkkJRdNSJcL60E=\nR:utils.go\na:0:0:444\nZ:Q1fx8fZoXO+zobSslgU3BN5Fzl+3A=\nR:utils_benchmark_test.go\na:0:0:444\nZ:Q12Y7q0ZVnLhifRzzVXJh44Q1jEn0=\nR:utils_example_test.go\na:0:0:444\nZ:Q1kdw04KzQnvSpqM1eS1e0lMDmVfI=\nR:utils_test.go\na:0:0:444\nZ:Q1fnxXRJzxM+rOZNh8DKywf+jLyhA=\nR:validator.go\na:0:0:444\nZ:Q1F0XIswA55OcW+O+HfZK37LWpgGA=\nR:validator_test.go\na:0:0:444\nZ:Q1Mls7F7UiGWOBMb/hLvEzhkktTBc=\nR:wercker.yml\na:0:0:444\nZ:Q1l8qLXSgBl/bsV0OtMyoQqPVvJkA=\nF:root/go/pkg/mod/github.com/asaskevich/govalidator@v0.0.0-20210307081110-f21760c49a8d/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1STCQ5pXU1SQU5AsqmISaEGqaTNA=\nF:root/go/pkg/mod/github.com/asaskevich/govalidator@v0.0.0-20210307081110-f21760c49a8d/.github\nM:0:0:555\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q13G8LE+C3pMU+orpHUEgOUVvI5Jw=\nF:root/go/pkg/mod/github.com/asaskevich/govalidator@v0.0.0-20210307081110-f21760c49a8d/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:BC_Break.md\na:0:0:444\nZ:Q1j+Pn3xLM++x2dZTRO5OkkJpJq1I=\nR:Bug.md\na:0:0:444\nZ:Q1gS7/SWRr2mRIeuW4NBwqHcy9Yes=\nR:Feature_Request.md\na:0:0:444\nZ:Q1p9QRj5i+vV0oI1KSM1XJrXNvbq4=\nR:config.yml\na:0:0:444\nZ:Q1YzCk5qe1IlKgRXQ0FBVNKomXDi4=\nF:root/go/pkg/mod/github.com/avast\nF:root/go/pkg/mod/github.com/avast/retry-go@v3.0.0+incompatible\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1wMucHQ4srB2uuqXnYEOuCyoJfiw=\nR:.godocdown.tmpl\na:0:0:444\nZ:Q1XIYp4qFOPRcmvmqZOBs6fruG4tw=\nR:.travis.yml\na:0:0:444\nZ:Q1PfBD1Q8wXZ0YiAlceEqJu0sMIrk=\nR:Gopkg.toml\na:0:0:444\nZ:Q1SuLy/movwLE70sStL2iNAZbrR/g=\nR:LICENSE\na:0:0:444\nZ:Q12z9ddDzp8FFrUzQBU29pyJGsZhQ=\nR:Makefile\na:0:0:444\nZ:Q13bTle0kW8XFrLeEWbiwc+fqhaN8=\nR:README.md\na:0:0:444\nZ:Q1tK7pLWuJqH5tw1CFfEHUGXl5xek=\nR:VERSION\na:0:0:444\nZ:Q1jGmB1/mCw+KYb9ovNCgiZKTbNEw=\nR:appveyor.yml\na:0:0:444\nZ:Q1R4FFY2384iPSmtQug5A3GmLldlw=\nR:options.go\na:0:0:444\nZ:Q1QEc8g43eTIkVxyQSsInBiOoh39c=\nR:retry.go\na:0:0:444\nZ:Q1VDfC4/vwTbnxtllrUzLDhcBWrCU=\nR:retry_test.go\na:0:0:444\nZ:Q1D4yU6QysnJ0Y5VChOd+MAopp25w=\nF:root/go/pkg/mod/github.com/avast/retry-go@v3.0.0+incompatible/examples\nM:0:0:555\nR:custom_retry_function_test.go\na:0:0:444\nZ:Q1UwpoFUZVw9o/6NpVwJIDTuh/U+8=\nR:delay_based_on_error_test.go\na:0:0:444\nZ:Q1kYL7AdOisNEPnRHz9UWtPviHJ8Y=\nR:http_get_test.go\na:0:0:444\nZ:Q1J5CzL7C4igTLZaHl4En8wA+UZlI=\nF:root/go/pkg/mod/github.com/aws\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/config@v1.17.8\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1URfuK4T2NCYhRiFblGaUUc6uRSQ=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:config.go\na:0:0:444\nZ:Q1dogwbe1Nki9CI2K+GBa4D3P1cAU=\nR:config_test.go\na:0:0:444\nZ:Q1TYRzglEs+4qs20IjYYgcN94H/zU=\nR:defaultsmode.go\na:0:0:444\nZ:Q116oBTiElaAxkWpFEXZeFePaveoQ=\nR:doc.go\na:0:0:444\nZ:Q18/XzL7DT70QJUdG6k93NDrLVw0E=\nR:doc_test.go\na:0:0:444\nZ:Q1gGXq3xkB5VBCf2imB1C24CBeFE0=\nR:env_config.go\na:0:0:444\nZ:Q14g3lmdwrq8MQkf2fYUNaiF2/XGU=\nR:env_config_test.go\na:0:0:444\nZ:Q1M0aWUUO5rJk8VwsTnTFUA0KlJj0=\nR:example_test.go\na:0:0:444\nZ:Q1E9nM7f2PaLiXlmdCeSS/E4n2fvc=\nR:generate.go\na:0:0:444\nZ:Q1wUQGlvwuuR7CpJ8WHTOPNfbzirc=\nR:go.mod\na:0:0:444\nZ:Q1EoZt+kFs2kzcmM6dopWbv/RkaV8=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q11/QjI2YXK0cSJ0Plhp9hTV2dSK0=\nR:load_options.go\na:0:0:444\nZ:Q1aqIb0NfJT4Dr+j+G9dhkZoxMJvw=\nR:local.go\na:0:0:444\nZ:Q18UBoJwDLF93mTc/NtHjxX5a5ueA=\nR:local_test.go\na:0:0:444\nZ:Q1kVAItXy+plIiQsp31TS5j503g24=\nR:provider.go\na:0:0:444\nZ:Q1Bao1ibwJIUokrQkyXeRz3Qy8qCk=\nR:provider_assert_test.go\na:0:0:444\nZ:Q108FFopLZSV5Kspj/Zc/6bAOvrT8=\nR:resolve.go\na:0:0:444\nZ:Q1TL7p4g2w1+WNtSYHc8iR9tN9zf0=\nR:resolve_assume_role_test.go\na:0:0:444\nZ:Q1nEEB1QGAIkzQlVs7ko5dssD8gQ8=\nR:resolve_bearer_token.go\na:0:0:444\nZ:Q1Qo0KWDFJwdVOEmyCH0USyG5sc6U=\nR:resolve_bearer_token_test.go\na:0:0:444\nZ:Q1x+gVORZ4xcCqV9TY3HWGI83hQp0=\nR:resolve_credentials.go\na:0:0:444\nZ:Q1B1+y4IpE+PM/U2Ms+PweOt+WLhY=\nR:resolve_credentials_test.go\na:0:0:444\nZ:Q1VJ+ITj20dz+WRgIug5689XPUWU0=\nR:resolve_processcreds_test.go\na:0:0:444\nZ:Q1l6FcaMijp2Jy4rhrwdnZhHxg9c8=\nR:resolve_test.go\na:0:0:444\nZ:Q1HVv7xRNwOfMPAjtMMUYJtCeRto0=\nR:shared_config.go\na:0:0:444\nZ:Q1M7PX3CcaI1Ox1PHh6zPrQ+Ak+Jw=\nR:shared_config_other_test.go\na:0:0:444\nZ:Q1DiE/HOEVZX1ZF3RN2v5KhB4smos=\nR:shared_config_test.go\na:0:0:444\nZ:Q1qW2cKY3aoc3GIvTIZtPtxGKtj9A=\nR:shared_config_windows_test.go\na:0:0:444\nZ:Q1zqFrsQbuqcucHNnfeu/SBwaaeoA=\nR:shared_test.go\na:0:0:444\nZ:Q1oCsI2C9eM22jDxqjTemV7vvVp/I=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/config@v1.17.8/codegen\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1+4c7QJQt5zmPcAADfuGCji7UdNQ=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/config@v1.17.8/testdata\nM:0:0:555\nR:cached_sso_token.json\na:0:0:444\nZ:Q1Dqnz2vrxSZlcWI/Tnw0bgp5Fbfo=\nR:config_source_shared\na:0:0:444\nZ:Q1P5c6BzGugmdSdg3wuwN3q7VLwXw=\nR:config_source_shared_for_windows\na:0:0:444\nZ:Q1uDYSxPapb5zeege6W3FwE+UrDAM=\nR:credentials_source_shared\na:0:0:444\nZ:Q1eX9rJF4iI9URtWgC3id4rBSxO/U=\nR:credentials_source_shared_for_windows\na:0:0:444\nZ:Q1eX9rJF4iI9URtWgC3id4rBSxO/U=\nR:empty_creds_config\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:load_config\na:0:0:444\nZ:Q1O+Sn2FhNqn71LJayPmM9KBJ7fKA=\nR:load_config_secondary\na:0:0:444\nZ:Q1tXz6589i81mczoBmpFRRz+J5fVQ=\nR:load_credentials\na:0:0:444\nZ:Q1tVDCCWy2OpJwyFlW/CmQwNiFD/Q=\nR:load_credentials_secondary\na:0:0:444\nZ:Q1XyULRn4sCm+W30Zb9dggUGIF5tc=\nR:proc_creds_config.ini\na:0:0:444\nZ:Q15YWb1kVDSgkDn4iuuRiuYaQfKQk=\nR:proc_creds_config_win.ini\na:0:0:444\nZ:Q1PS81QKaEShN4d5ejufJdI/6ewV8=\nR:proc_creds_credentials.ini\na:0:0:444\nZ:Q1UBg4bjQ1jBDY7GXd5DOIZpDJW3Q=\nR:proc_creds_credentials_win.ini\na:0:0:444\nZ:Q17n3td/0yh7XSh7XMXIpAbKUCn+A=\nR:proc_creds_expired.json\na:0:0:444\nZ:Q1bQufh6+wUlHc5mDH9ReCVdzq8j8=\nR:proc_creds_not_expire.json\na:0:0:444\nZ:Q1FEYuA8eWPBktbCgSvsjX0b4YTAY=\nR:proc_creds_verybad.json\na:0:0:444\nZ:Q1rT8wnPXrtpoqgZCr94IGW1a7nMk=\nR:shared_config\na:0:0:444\nZ:Q1D0MPC9FMb5c46F65FX6YKOwKjxc=\nR:shared_config_invalid_ini\na:0:0:444\nZ:Q1YGLGl2lIdJjrpDCffMTcio2nqno=\nR:shared_config_other\na:0:0:444\nZ:Q1+hONmBp1GThITXJk1EOj/Oey2WY=\nR:shared_credentials\na:0:0:444\nZ:Q1o6QhjoP2xJTYd5Uvt4FieVGCIZg=\nR:test_json.json\na:0:0:444\nZ:Q1pT7iD69V3lHhp2CSNDuqlotjhyg=\nR:wit.txt\na:0:0:444\nZ:Q1mTUGYmsClIt3JCSgX1/eZWWsdUo=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1u6vnU5XjSooShbj44aOYl58l1W0=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:doc.go\na:0:0:444\nZ:Q1w8VXp7BbiSWux4mWEcpddgAayco=\nR:go.mod\na:0:0:444\nZ:Q1XELlnXfE/s/ABXCq/BuKeimizxg=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1rzhYAPHJzMAAcAhB+9A526pZYgA=\nR:static_provider.go\na:0:0:444\nZ:Q19kMhR/4IjOhJWRwWeJv86rp+ATY=\nR:static_provider_test.go\na:0:0:444\nZ:Q1jnq02JZAMxGUeT1oUOFmPfbpi+Y=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ec2rolecreds\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1iWUyofLrV2AjfwWFhMbuljzzJQ8=\nR:integration_test.go\na:0:0:444\nZ:Q1MEbYzRM4ZTee9CkEcVUgUGeeRUU=\nR:provider.go\na:0:0:444\nZ:Q1Pm+/JqnBCUqG6Ol5/zH8OVLSnCs=\nR:provider_test.go\na:0:0:444\nZ:Q11j4Fn7RqUVIvb4iKwyo4amuRxGM=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/endpointcreds\nM:0:0:555\nR:provider.go\na:0:0:444\nZ:Q1GMQfXnLrZfsmoz/6exgLReXL4E4=\nR:provider_test.go\na:0:0:444\nZ:Q1DSl7MDYNsJi6LGBAiWtDxkAKLCk=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/endpointcreds/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/endpointcreds/internal/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1dm7BTVNbl+j9wnarpX/uUF+w8eM=\nR:client_test.go\na:0:0:444\nZ:Q1wc/C9HZoWJg6hpKDnSsoeslYwt4=\nR:middleware.go\na:0:0:444\nZ:Q1znvu3SvkgMBNphn/LEC9EdhnnkU=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/processcreds\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q16asFCXHiiv1Z7xksIDtsnfYuDU0=\nR:provider.go\na:0:0:444\nZ:Q1/ZB3ZufhJB+F+90pbpQU/mjvxUM=\nR:provider_test.go\na:0:0:444\nZ:Q1u40TLx+X+0j6nB007aBX5ykrtEU=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/processcreds/testdata\nM:0:0:555\nR:longsessiontoken.json\na:0:0:444\nZ:Q1zUAno7wsBwOH/SMMgbU0vx4qTtU=\nR:malformed.json\na:0:0:444\nZ:Q1o2okqLXoz+0LZ2xMQrnFYJh42h8=\nR:missingkey.json\na:0:0:444\nZ:Q1TIEz5ySnAoO6jYYjHJ9BPytfQS4=\nR:missingsecret.json\na:0:0:444\nZ:Q1jlfM8xcM50YGL6ZC4BW8GmGO+mM=\nR:static.json\na:0:0:444\nZ:Q1gzQnV8sfvgka1oDMBj//Yd3puL8=\nR:wrongversion.json\na:0:0:444\nZ:Q1VzSCyWW4VHC/KRzcTx+d8YQ2zpE=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ssocreds\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1pYh3zecaOEPpyBAg8NQ1oy8RIlo=\nR:sso_cached_token.go\na:0:0:444\nZ:Q1/MUuD5WgMzTkGHheMXS2bDugzyI=\nR:sso_cached_token_test.go\na:0:0:444\nZ:Q1y0aQr72hVR0yLfr2V8qfCK3cP0I=\nR:sso_credentials_provider.go\na:0:0:444\nZ:Q1GrgM/oIMG0qn1XXNE/voZGDxPzA=\nR:sso_credentials_provider_test.go\na:0:0:444\nZ:Q1TEDLASD7HP921Dkw2iF+P35zStE=\nR:sso_token_provider.go\na:0:0:444\nZ:Q17YK0x4Pt/zrOFQseSt40HZQwTn4=\nR:sso_token_provider_test.go\na:0:0:444\nZ:Q12jzweq3QqV33+WOjSIkhtlH6mgI=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ssocreds/testdata\nM:0:0:555\nR:expired_token.json\na:0:0:444\nZ:Q1jX33cxmgdjRT7JuNdUEKvNLBGLA=\nR:invalid_json.json\na:0:0:444\nZ:Q1E39VTuD2uQOsuBq04fmMEf6SsAg=\nR:missing_accessToken.json\na:0:0:444\nZ:Q1GHxyCECn4vOZrZLHPAIbrHElXM0=\nR:missing_clientId.json\na:0:0:444\nZ:Q1hE8I0nSeiLany6MIz5idP2/4y20=\nR:missing_clientSecret.json\na:0:0:444\nZ:Q1rWkp7r+bCPpwpw3BFeEAFdrDND0=\nR:missing_expiresAt.json\na:0:0:444\nZ:Q10fuTRVYEeLMRki8t+Cmjjm4+na8=\nR:missing_refreshToken.json\na:0:0:444\nZ:Q1qmgJ5SQeTB/aisPZj0RwFOZ6NZA=\nR:valid_token.json\na:0:0:444\nZ:Q1QL2h277dQVxrp5M29DmkxW9RdyQ=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ssocreds/testdata/.aws\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ssocreds/testdata/.aws/sso\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/ssocreds/testdata/.aws/sso/cache\nM:0:0:555\nR:00126f0eb29dc1310529dcc8fc178693e1493135.json\na:0:0:444\nZ:Q1GHRJ9O6DXfv9d1un34joWV3YMvE=\nR:b5f90cb535abf87a12eb4c57db2b1e837e229ea0.json\na:0:0:444\nZ:Q1sJtvhWUVH1mLnQzuUP/FI+eezy4=\nR:f7f7ff326478d8c33d47eeb3408cf1c783cb611e.json\na:0:0:444\nZ:Q1m7TK+oOiwoICT745Vvcelf2kWK8=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/stscreds\nM:0:0:555\nR:assume_role_provider.go\na:0:0:444\nZ:Q1C3J/qKctt0WSJQbEvMLbs+zI6Ws=\nR:assume_role_provider_test.go\na:0:0:444\nZ:Q1lxzzVnMiD/CXeyFHk3QECgdG6oI=\nR:web_identity_provider.go\na:0:0:444\nZ:Q10+NVj7cUGVtArHlhfwsLV7tBXwE=\nR:web_identity_provider_test.go\na:0:0:444\nZ:Q10aKscT/moK46tuXgtbj80jylp9Q=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/credentials@v1.12.21/stscreds/testdata\nM:0:0:555\nR:token.jwt\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/feature\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/feature/ec2\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.12.17\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1FCjUOZuqMR6P6RN+Ld3mkM42P7g=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1ZAyPCwjRah/Czief7PYyyp7T6x4=\nR:api_client_test.go\na:0:0:444\nZ:Q1P5cRiYE29v2X6542QRlWaOtlZDA=\nR:api_op_GetDynamicData.go\na:0:0:444\nZ:Q1xqwgZywrAm+lgiWtjm5CraipyUo=\nR:api_op_GetDynamicData_test.go\na:0:0:444\nZ:Q1YC7t9wfca5oFWf1+2/5+vlc1Qno=\nR:api_op_GetIAMInfo.go\na:0:0:444\nZ:Q1i5Nyb2VJKv9dVhy4lENaaag+l88=\nR:api_op_GetIAMInfo_test.go\na:0:0:444\nZ:Q1UtF/xJN2EMs7AeBIbkcDa+gJl/M=\nR:api_op_GetInstanceIdentityDocument.go\na:0:0:444\nZ:Q1in+Q8/aiLoPMRd7E3RQ1zUZiHwc=\nR:api_op_GetInstanceIdentityDocument_test.go\na:0:0:444\nZ:Q1Aahpyt+R/2hWJByWYB74JfmE+rw=\nR:api_op_GetMetadata.go\na:0:0:444\nZ:Q1d4AVgPk4VeIevYrLU2KIascyC0I=\nR:api_op_GetMetadata_test.go\na:0:0:444\nZ:Q1X6U5C3SNXHbTA7fbSJ1wmiSNSWY=\nR:api_op_GetRegion.go\na:0:0:444\nZ:Q1FHHXlEjMmuX9aOK/ZPusAaSZuNs=\nR:api_op_GetRegion_test.go\na:0:0:444\nZ:Q1AlFTF2EYtSDCwIoS6I5FIozy9cA=\nR:api_op_GetToken.go\na:0:0:444\nZ:Q1B9ckOc7M3FtiEkbREoHnaJwcLfg=\nR:api_op_GetToken_test.go\na:0:0:444\nZ:Q1HmFlKAH3SCEIej9mPtP92ZdqAiQ=\nR:api_op_GetUserData.go\na:0:0:444\nZ:Q1/xx/Abo8EjgLib3FxZFiWsvqCQ0=\nR:api_op_GetUserData_test.go\na:0:0:444\nZ:Q1CtRdefxZ5Kh1NxpWI8Oc+9vUbvs=\nR:doc.go\na:0:0:444\nZ:Q17LUNawFYOZSNiOMvP8imJcf3Tjg=\nR:go.mod\na:0:0:444\nZ:Q1wgbEnDEANZTP3ZGqaqO+QhPa4/A=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1Riy9tTmUdCO21A6UtLSUkV6BdQM=\nR:integration_test.go\na:0:0:444\nZ:Q1UDWtsus2HpmZIAZIeo98/m0+ITg=\nR:request_middleware.go\na:0:0:444\nZ:Q1mgEEaUz3MBJZdR04bbbQYgcYjfs=\nR:request_middleware_test.go\na:0:0:444\nZ:Q18J6BDiqlg3AktSgY4b8j0HqTUNk=\nR:shared_test.go\na:0:0:444\nZ:Q1/q4vau4mp9GMkx8kAu0BVbdMpd0=\nR:token_provider.go\na:0:0:444\nZ:Q1KRLZSbcPs8CRa7kxcEFpCWMUWzc=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.12.17/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.12.17/internal/config\nM:0:0:555\nR:resolvers.go\na:0:0:444\nZ:Q1TlkxnvOVZDQ0EXXeZ7F0lTbL9R0=\nR:resolvers_test.go\na:0:0:444\nZ:Q1AOQvRCOZ/N3wn59jyHox+BFvcy4=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.1.23\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1VRGNpPvW8u/JiQiUIgNSrKunrF8=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:config.go\na:0:0:444\nZ:Q1TQt7L+zaNBXzeV2E2p8S+EVXBW8=\nR:go.mod\na:0:0:444\nZ:Q1M3QqX4f0tnXRaEJKnBZn8q1JKk8=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1+/qeZ+GTlJrcBf1e4tlbMaoE8E8=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/endpoints\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.4.17\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1KUCNxyteRVYFoYLheHWhftGAgyE=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:endpoints.go\na:0:0:444\nZ:Q1C2xel3YHgkfE1+ruNrw/J3HvcFc=\nR:endpoints_test.go\na:0:0:444\nZ:Q1/cqYJnJXuBduD0xitSZEPmHJZ0w=\nR:go.mod\na:0:0:444\nZ:Q1xu6C1XAVqt35qJoIP/Z8/jM8p3o=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1lXPy5tDeYa9PxtmWndAQ9lQuEwo=\nR:package_test.go\na:0:0:444\nZ:Q1yjKoPKqNF4RfIZEbYWizy5QzzeI=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/ini@v1.3.24\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1DVP2XtxpMZKlaANjkZVgxREX6ys=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:ast.go\na:0:0:444\nZ:Q10ZDHW7AbQ9FEzuHuP6HF1UB143I=\nR:bench_test.go\na:0:0:444\nZ:Q1mBfaPnPYe9Vh3tCYm5gB2GMdYIg=\nR:comma_token.go\na:0:0:444\nZ:Q1GMnltwba5iT+WwDTFU04aEMCutI=\nR:comment_token.go\na:0:0:444\nZ:Q1RJDMDWQfsH865vV4x6R8pxstKBE=\nR:dependency.go\na:0:0:444\nZ:Q15OLD3VXODF2LDVyDGCqxSd2PQwY=\nR:doc.go\na:0:0:444\nZ:Q1I2hLhwe1QeIxQbSnKiigS2XPfoI=\nR:empty_token.go\na:0:0:444\nZ:Q1/PYjD/3grIp1/9v5ahqdGJBemn8=\nR:errors.go\na:0:0:444\nZ:Q1fbFl9NhnO7/xXjZ6ezTkYXvPWxI=\nR:expression.go\na:0:0:444\nZ:Q1KGBuVKUlN3ns0E7phZE0wGV0JRU=\nR:go.mod\na:0:0:444\nZ:Q1s8NOqdnTeQseSZhriDne5FoBCO0=\nR:go.sum\na:0:0:444\nZ:Q1BZIIzefRGkKndv3H31IPxkcEOHQ=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1aOHik4Bmf/1SY5UiS8+e9h+Ihpg=\nR:ini.go\na:0:0:444\nZ:Q16RzPtilBILDIsr5iJLGj4pi81B8=\nR:ini_lexer.go\na:0:0:444\nZ:Q1URtk9DME1qPss0YIUNqVkJ7R12c=\nR:ini_lexer_test.go\na:0:0:444\nZ:Q1p0jaPo7pYvyFenxDupjYV+QENTw=\nR:ini_parser.go\na:0:0:444\nZ:Q1uQ5azGb+64bkk+smkht1Z8numNo=\nR:ini_parser_test.go\na:0:0:444\nZ:Q1YeEqFbxHC5TYbBQBT9nweOFqvIs=\nR:ini_trim_spaces_test.go\na:0:0:444\nZ:Q1xFDbxepITnr/NT+fOYUKN3jRqj4=\nR:literal_tokens.go\na:0:0:444\nZ:Q1VnfOPNGdQoJbdXOIQQ/JvcsQlFo=\nR:literal_tokens_test.go\na:0:0:444\nZ:Q1TgsNoqtKJHv+2NmEsWsqo8UTcjs=\nR:newline_token.go\na:0:0:444\nZ:Q1/H3aqtlwAotJ803gnViArERNZ9A=\nR:number_helper.go\na:0:0:444\nZ:Q1v7+xDwZbK/kOdcO10OzX2sXLOuI=\nR:number_helper_test.go\na:0:0:444\nZ:Q1KRNeP3yS+dKfYDNX3RqgU72XBv8=\nR:op_tokens.go\na:0:0:444\nZ:Q1unVDvzkU5juzXuri+1z/yzjygjU=\nR:op_tokens_test.go\na:0:0:444\nZ:Q1EIJZK5FJ3IMslCmc5hSU5NNjgkk=\nR:parse_error.go\na:0:0:444\nZ:Q1Id+wiZ9+yUaVMSloMB+hvHIpPnk=\nR:parse_stack.go\na:0:0:444\nZ:Q1fb6rXnS+/sYPJpX1wfkDykApV8g=\nR:parse_stack_test.go\na:0:0:444\nZ:Q1LyaP54Z4V5b+yXx0BhYlrHs6Qtw=\nR:sep_tokens.go\na:0:0:444\nZ:Q1YU/w7XDVUqqa/TGiQaBtYfSI+no=\nR:sep_tokens_test.go\na:0:0:444\nZ:Q1NY8Ydp6XXwCKA3d3iZSMiacZZw8=\nR:skipper.go\na:0:0:444\nZ:Q1AAIboRtQaiNkjWMF3lX/iunQMD0=\nR:skipper_test.go\na:0:0:444\nZ:Q1EdOsDBdV8TYU/hdSkDdjvX83uOw=\nR:statement.go\na:0:0:444\nZ:Q1At2wdrk1QeU2dtNCL39q+IagV/k=\nR:value_util.go\na:0:0:444\nZ:Q1byOrIzP2izHlsXD+I9S5IzjPhP4=\nR:value_util_test.go\na:0:0:444\nZ:Q1PNY8fYBCFui+QiPsDISOTQMmJ0U=\nR:visitor.go\na:0:0:444\nZ:Q1VYQzv3rIo/8FsBybh1IZQdyOUHA=\nR:walker.go\na:0:0:444\nZ:Q18AQoUeyvPvwnCl/FFrMB4b7oI04=\nR:walker_test.go\na:0:0:444\nZ:Q1XoalCWFNah+82pHeTkzsAw7g2nA=\nR:ws_token.go\na:0:0:444\nZ:Q1jyHnpqY5Iq/BvatvpFxMUoBCz4A=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/ini@v1.3.24/testdata\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/ini@v1.3.24/testdata/invalid\nM:0:0:555\nR:bad_section_name\na:0:0:444\nZ:Q1iz0Xyriq2DJutPYYclB23lI19Nc=\nR:bad_syntax_1\na:0:0:444\nZ:Q1H72Cm6uFfCrZabWUTiiw7WSEIBE=\nR:bad_syntax_2\na:0:0:444\nZ:Q1RqL3m/9BYpdUwlmDp94kz5oXqfk=\nR:incomplete_section_profile\na:0:0:444\nZ:Q1qt+oS+o3Si8qZdacsjUCBKU6Npk=\nR:invalid_keys\na:0:0:444\nZ:Q17LJPvGBSuxTtgbooFGJ8lTQKpM0=\nR:syntax_error_comment\na:0:0:444\nZ:Q1AXsS+xnXsrPUAu5Q2CAe/nlJvU4=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/internal/ini@v1.3.24/testdata/valid\nM:0:0:555\nR:arn_profile\na:0:0:444\nZ:Q1yta2gRi2ULMLIgjkRJR9x0TbYi8=\nR:arn_profile_expected\na:0:0:444\nZ:Q1W+kBksxorBIro2UQsueL/blhCyg=\nR:array_profile\na:0:0:444\nZ:Q1jE0X5/JvKPhVXErCVdvT3RuU034=\nR:array_profile_expected\na:0:0:444\nZ:Q1WjIjggyTMWWqxK5IqpcM7F6Gwow=\nR:base_numbers_profile\na:0:0:444\nZ:Q16X6HhhjTWkvaD/9OQVO7rhYeLlA=\nR:base_numbers_profile_expected\na:0:0:444\nZ:Q1lPfERRFhrWiNOSzj+ZnMrPrySco=\nR:commented_profile\na:0:0:444\nZ:Q1doiybu1AZZM2Eel+dUvIuLE/Mis=\nR:commented_profile_expected\na:0:0:444\nZ:Q1jXfOlVLPhZNKbcPa8S1pwfMqAQw=\nR:empty_profile\na:0:0:444\nZ:Q1n4vYVHq6TJxgEHxtnsz2YfM1vuY=\nR:empty_profile_expected\na:0:0:444\nZ:Q1puYh7QhHTfXvJhOG+q3FFRddn+0=\nR:empty_values\na:0:0:444\nZ:Q1PamZcpoSgcoCDFzF41KKp40Wnus=\nR:empty_values_expected\na:0:0:444\nZ:Q1GUsA6uHl/UYvNypY5toXKQ1W0dU=\nR:escaped_profile\na:0:0:444\nZ:Q1MXD0/CtnzeC+pzOfEvhHv9t15rY=\nR:escaped_profile_expected\na:0:0:444\nZ:Q1LhTudBtg0zIEVpBwHYbdP4Frun4=\nR:exponent_profile\na:0:0:444\nZ:Q1joFKF4z3gG/RKKGZB3CZHNV3QL4=\nR:exponent_profile_expected\na:0:0:444\nZ:Q1LND1Em/o/u5EhvYZFvje3I21Zxc=\nR:global_values_profile\na:0:0:444\nZ:Q1EP/boqTuxyf/dAHo4X+XAuCKp+g=\nR:global_values_profile_expected\na:0:0:444\nZ:Q16N/LJahBBxcz3WAXMXhKHWLMSqQ=\nR:issue_2253\na:0:0:444\nZ:Q1+qrZqjjtefAWd8RP05CfFVu5qX4=\nR:issue_2253_expected\na:0:0:444\nZ:Q1OLkZXZGO17fBl0dNGs/2tbBR/c4=\nR:issue_259\na:0:0:444\nZ:Q1q8gzT4i5Nv4Yi30Bogf+/nZso94=\nR:issue_259_expected\na:0:0:444\nZ:Q1/fgxkeO7qeSuM3zJnrCwxo7hWhA=\nR:mixed_case_keys\na:0:0:444\nZ:Q1YDlSQBzSXydTFUWx3v956rqw3Cg=\nR:mixed_case_keys_expected\na:0:0:444\nZ:Q19Lm4ycs1OplO/dLlsSeeyy3fu4A=\nR:nested_fields\na:0:0:444\nZ:Q1HXMyGxWycJQuRFSqlyyfr+rWO74=\nR:nested_fields_expected\na:0:0:444\nZ:Q1tHkGJ08MtAvxQMrTjRCsJzyIfyk=\nR:number_lhs_expr\na:0:0:444\nZ:Q11adOakOJWGPvXqNL5N89l8wIX+I=\nR:number_lhs_expr_expected\na:0:0:444\nZ:Q1Y/O1deP3HX+gcHOBgeLWqyQ0w6s=\nR:op_sep_in_values\na:0:0:444\nZ:Q1R+2ah1qFSS27jppx2l5E/T557fk=\nR:op_sep_in_values_expected\na:0:0:444\nZ:Q1Bzp4dLUzmUYfcBA4tqC3PfMvljs=\nR:profile_name\na:0:0:444\nZ:Q1PsCAC+sVHn24OtgmbXAGxfysGtw=\nR:profile_name_expected\na:0:0:444\nZ:Q186k1oyKOmBvKyJptoLaTZvFR2Lc=\nR:sections_profile\na:0:0:444\nZ:Q1yPfEpI4MY0IlCQb6GUWseFw3EGc=\nR:sections_profile_expected\na:0:0:444\nZ:Q1j4CMYoBLs8eH1Qhutan20cBS03Q=\nR:simple_profile\na:0:0:444\nZ:Q1HHjnoLEgu6QwAAok3ErKsTrykDE=\nR:simple_profile_expected\na:0:0:444\nZ:Q1ZwsBrDOPmFPfLN6dGNB7zEhq+MI=\nR:space_lhs\na:0:0:444\nZ:Q1epz9izhlgBqjAIoYpM8soyWIgoU=\nR:space_lhs_expected\na:0:0:444\nZ:Q1rMhzu3RdSTVaxY0LYg6xzHAV6VY=\nR:utf_8_profile\na:0:0:444\nZ:Q14MWkhZ68e4iQNlyxR49mGHf0kxQ=\nR:utf_8_profile_expected\na:0:0:444\nZ:Q1iwlWJ76TvD8kU4PwsLZFgVnZW2k=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecr@v1.17.18\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1gi7yCxiRMYRgnixfxlKPzxploi8=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1V+JZjwH1/SGjhWFfi7ha4XAL0Nc=\nR:api_client_test.go\na:0:0:444\nZ:Q1QwlLBrSj4jBwmG/8T67E7H6S6HA=\nR:api_op_BatchCheckLayerAvailability.go\na:0:0:444\nZ:Q1rm1CkVXApRBEARpJhYVydtEFoBQ=\nR:api_op_BatchDeleteImage.go\na:0:0:444\nZ:Q1fglV5DxQE4UsYJlFg5H6mBcRO4Q=\nR:api_op_BatchGetImage.go\na:0:0:444\nZ:Q1I3A2ywMAzuhGCEAM2dFGUHsrFqI=\nR:api_op_BatchGetRepositoryScanningConfiguration.go\na:0:0:444\nZ:Q1GrV3TV5Dcu+VeHC1Ek+SS4aG3AA=\nR:api_op_CompleteLayerUpload.go\na:0:0:444\nZ:Q1Rp9Cfz9rEmKJdae4PKRDJD9DGVM=\nR:api_op_CreatePullThroughCacheRule.go\na:0:0:444\nZ:Q1v34RoXv5kulFJFX46ZVQcW5G29k=\nR:api_op_CreateRepository.go\na:0:0:444\nZ:Q1Toc8B0cIdf30y+mnOaeOvb2WuFU=\nR:api_op_DeleteLifecyclePolicy.go\na:0:0:444\nZ:Q1W8lkLlBRrGBN6jGpQ8cBGwg9z7E=\nR:api_op_DeletePullThroughCacheRule.go\na:0:0:444\nZ:Q1TpDWhbOpCHeL3oR20O81MtbX8gQ=\nR:api_op_DeleteRegistryPolicy.go\na:0:0:444\nZ:Q1twIjERW1oFEYxX37nXsNN9isR7U=\nR:api_op_DeleteRepository.go\na:0:0:444\nZ:Q1YGaLHF+Wwyum3dh7UMKMX2e4mTw=\nR:api_op_DeleteRepositoryPolicy.go\na:0:0:444\nZ:Q1IrA3ETdnX9/j7dB2ZkYFWYJRFqE=\nR:api_op_DescribeImageReplicationStatus.go\na:0:0:444\nZ:Q1fIjnWA7HP9wUdzp8F0nw+ktimf4=\nR:api_op_DescribeImageScanFindings.go\na:0:0:444\nZ:Q16MmZgLTuc3ZGZT/ST44zlMEsWZ8=\nR:api_op_DescribeImages.go\na:0:0:444\nZ:Q136KIJKvuIU+fXmqfCsH3mw+tKR0=\nR:api_op_DescribePullThroughCacheRules.go\na:0:0:444\nZ:Q1DZo9McYeKcNnMETsKxyEXSa1AjY=\nR:api_op_DescribeRegistry.go\na:0:0:444\nZ:Q1AnX9r50Ucee1QOSdaU4XaJ1VeMM=\nR:api_op_DescribeRepositories.go\na:0:0:444\nZ:Q1jAa2ILf6HkukHl4CQLrfXKkU1XQ=\nR:api_op_GetAuthorizationToken.go\na:0:0:444\nZ:Q1ZUjFpQECAYVgHfKSoWHOCDmbsKo=\nR:api_op_GetDownloadUrlForLayer.go\na:0:0:444\nZ:Q1/fQqA5mTjgTcObDdT279P6eRV9M=\nR:api_op_GetLifecyclePolicy.go\na:0:0:444\nZ:Q1aplCVnhx6jEmdr+AsUsV1lam58s=\nR:api_op_GetLifecyclePolicyPreview.go\na:0:0:444\nZ:Q15Zyjygd8WtAopsaRAjgofJeEfug=\nR:api_op_GetRegistryPolicy.go\na:0:0:444\nZ:Q16xNmvun8AcM+NgXhxWqzkXA1guU=\nR:api_op_GetRegistryScanningConfiguration.go\na:0:0:444\nZ:Q1JWRP7gNyxdbvGSPUzLvoKQPPDxU=\nR:api_op_GetRepositoryPolicy.go\na:0:0:444\nZ:Q1mm3EWOaGhD0lMiUkOmY52ePXu1k=\nR:api_op_InitiateLayerUpload.go\na:0:0:444\nZ:Q1IFFI0yauqfNGQ8hDe0R6vnC3YNs=\nR:api_op_ListImages.go\na:0:0:444\nZ:Q1mJQxZ3rdgSKBiSrVrMJZR8Pb0rI=\nR:api_op_ListTagsForResource.go\na:0:0:444\nZ:Q1yoHkP5+hHMYrjbX2dmgosO7Hr2o=\nR:api_op_PutImage.go\na:0:0:444\nZ:Q1xVgVU1Nw9/iymK2KJXkYgu4mSfE=\nR:api_op_PutImageScanningConfiguration.go\na:0:0:444\nZ:Q19U85iq72Qy1DedtWSPChQAi2l70=\nR:api_op_PutImageTagMutability.go\na:0:0:444\nZ:Q1wiV4JrMyvFUiGc09LqvjHrJd9R4=\nR:api_op_PutLifecyclePolicy.go\na:0:0:444\nZ:Q11/gXscy7vYgI4lVZ5h9ADOfu2lw=\nR:api_op_PutRegistryPolicy.go\na:0:0:444\nZ:Q1/SuOwiewRXNdUlNNT87xVpjOS0Y=\nR:api_op_PutRegistryScanningConfiguration.go\na:0:0:444\nZ:Q1emEA6TkuQj01OwSnZdRq6K5UPEg=\nR:api_op_PutReplicationConfiguration.go\na:0:0:444\nZ:Q1W/l9h5vI9wrwZiVSh9S81k8muv4=\nR:api_op_SetRepositoryPolicy.go\na:0:0:444\nZ:Q1sQF6b5G00MtXk8f0QEGN4eEjF0c=\nR:api_op_StartImageScan.go\na:0:0:444\nZ:Q1l3HzPXIKQZEwMD2maIA/9xOgrMk=\nR:api_op_StartLifecyclePolicyPreview.go\na:0:0:444\nZ:Q1/Ov4zEqe9rar8igDZrghBHVveqs=\nR:api_op_TagResource.go\na:0:0:444\nZ:Q1NmpBcXxbfftMQp+jp2/RwJG3aXk=\nR:api_op_UntagResource.go\na:0:0:444\nZ:Q1fS0dzRla2b3I5eI7ulf8P16NzEY=\nR:api_op_UploadLayerPart.go\na:0:0:444\nZ:Q1UYOlJsBUODcWSwRkfr95JA3GhAk=\nR:deserializers.go\na:0:0:444\nZ:Q1efq7mjteq+q2Jpw+l3A+3MAd9HA=\nR:doc.go\na:0:0:444\nZ:Q1lBaM9mff+v/vUYxFt4oLhovap7Q=\nR:endpoints.go\na:0:0:444\nZ:Q1ArUePmfWdwEiUlv5KL3K1wOkd6M=\nR:generated.json\na:0:0:444\nZ:Q1pi1fnaaHeEIfj3q4ZBR3hnst+68=\nR:go.mod\na:0:0:444\nZ:Q1IiglETSZL//yznsOP6BZv7+Totc=\nR:go.sum\na:0:0:444\nZ:Q1/r7aKUzikynEOIMhl2XqAmeqnFo=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1DIEW1kCW1vTlNgQc5+l07BqZiag=\nR:protocol_test.go\na:0:0:444\nZ:Q1p3zbTczBulqy6RT48C7+Lv/wh84=\nR:serializers.go\na:0:0:444\nZ:Q1DAq7NyImETVgNWYCiWJD7SRMYX0=\nR:validators.go\na:0:0:444\nZ:Q1Ll1V3piC4IoHz3uFY/5g8KBXGdk=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecr@v1.17.18/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecr@v1.17.18/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1blisglxZIhgAlp+av8JRgnoPlck=\nR:endpoints_test.go\na:0:0:444\nZ:Q1ekFImtYwnVsSVoBdt68H9Qhk2uA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecr@v1.17.18/types\nM:0:0:555\nR:enums.go\na:0:0:444\nZ:Q1mwN2cIgZmREVwu25Oj7UsEyvTHo=\nR:errors.go\na:0:0:444\nZ:Q1r1MQFhoKYYZGyPMUgvE8/DnrL6w=\nR:types.go\na:0:0:444\nZ:Q1X7qOndhsQ1/E3XIZ/T+8W3JP8Rk=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecrpublic@v1.13.17\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1qepVyWaYDrab86M1uyO8RoZu7mc=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1wbJA1MmNjdgTsQ1xi0uzIU0Qxqs=\nR:api_client_test.go\na:0:0:444\nZ:Q1mFIiYQLkU+rcEiM5d1Pm0IOwd84=\nR:api_op_BatchCheckLayerAvailability.go\na:0:0:444\nZ:Q1fvgkRLusMOYS0z8ncA+vYSNwglE=\nR:api_op_BatchDeleteImage.go\na:0:0:444\nZ:Q116B7j03ok3qC1JgVoIFs0bR/E4Y=\nR:api_op_CompleteLayerUpload.go\na:0:0:444\nZ:Q16kMVZop6WbAGkI6Si7foyFtEtQc=\nR:api_op_CreateRepository.go\na:0:0:444\nZ:Q1uW6FGXP14+ppL1e6MNrrEwBGFpI=\nR:api_op_DeleteRepository.go\na:0:0:444\nZ:Q1QIF0kDbz71AWdW+xWAzxsj9T9zU=\nR:api_op_DeleteRepositoryPolicy.go\na:0:0:444\nZ:Q1OM+lqdWvA5dUbkUeTfbwBvuFKxM=\nR:api_op_DescribeImageTags.go\na:0:0:444\nZ:Q11+6LBAMZXZEj9sfcB44YQn6R7ic=\nR:api_op_DescribeImages.go\na:0:0:444\nZ:Q1NPtWW1fl6CBHX7hykKHdTVT7kSA=\nR:api_op_DescribeRegistries.go\na:0:0:444\nZ:Q19RW4bCwNKG8RF0odF7VVLih+Sn0=\nR:api_op_DescribeRepositories.go\na:0:0:444\nZ:Q11L1kQqmp8MqTKKKAkEAACJ20Mzg=\nR:api_op_GetAuthorizationToken.go\na:0:0:444\nZ:Q1rufPl/Q6VIyOeXbqe4DGotZCXXc=\nR:api_op_GetRegistryCatalogData.go\na:0:0:444\nZ:Q1ABMc0dyo6yLjbeYZMVfoSVEqrRM=\nR:api_op_GetRepositoryCatalogData.go\na:0:0:444\nZ:Q11lUB/e4Urt8enCbTfGC+v0m6wv0=\nR:api_op_GetRepositoryPolicy.go\na:0:0:444\nZ:Q15Io3iR1uiR1+AkernMT+XDuCvC0=\nR:api_op_InitiateLayerUpload.go\na:0:0:444\nZ:Q1gt0tow3flr83mRerO1zE6eyjqjA=\nR:api_op_ListTagsForResource.go\na:0:0:444\nZ:Q1INCQmE8k+dpNYu9hzV4s8ybMkQk=\nR:api_op_PutImage.go\na:0:0:444\nZ:Q1BqdiTa6dgHBHt6cS8PzonuZP0Dg=\nR:api_op_PutRegistryCatalogData.go\na:0:0:444\nZ:Q1Hne6Q1jE5qyz9lCOcMXcY2td26Q=\nR:api_op_PutRepositoryCatalogData.go\na:0:0:444\nZ:Q1BSkmbnQ0nCv5v2kXQf3lfyPaJLw=\nR:api_op_SetRepositoryPolicy.go\na:0:0:444\nZ:Q1om1eVuucBlss/5oJzc+le0rAEXo=\nR:api_op_TagResource.go\na:0:0:444\nZ:Q1uChsvxc5CMTk167vjP9oSNTRpac=\nR:api_op_UntagResource.go\na:0:0:444\nZ:Q1aNMCvBUe5kCes1S9/F+nYeTGINw=\nR:api_op_UploadLayerPart.go\na:0:0:444\nZ:Q1FvhuEoTWFIr8TW4dZcAugdgH22M=\nR:deserializers.go\na:0:0:444\nZ:Q1yC6SDmbvgCLoTXofJ/ECRCyahG8=\nR:doc.go\na:0:0:444\nZ:Q1G9emobsyzFbrTDN9aqCcsoI2gRU=\nR:endpoints.go\na:0:0:444\nZ:Q1IdIsLjdEh+6EC2/6h/S6abQcyOI=\nR:generated.json\na:0:0:444\nZ:Q1gG/KSVa2M9LQQoxM6uRGiu2l0As=\nR:go.mod\na:0:0:444\nZ:Q1VKpWpCmRBh0HFA9C8zzZAWYxU2E=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1BpOvtV+LjLYFZirT7rM7xK24RVE=\nR:protocol_test.go\na:0:0:444\nZ:Q12l3zHRoBEKhHIhxT5dXVuUOIjTw=\nR:serializers.go\na:0:0:444\nZ:Q13znqAxiZ1mAUyHfyjTgnCmGNQ0Y=\nR:validators.go\na:0:0:444\nZ:Q1Py+P8IyYF/vh6ZeO0I0LoVDc26s=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecrpublic@v1.13.17/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecrpublic@v1.13.17/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1ehr1+Az4aaS2iFR4o7Gvjr5uaUs=\nR:endpoints_test.go\na:0:0:444\nZ:Q1ekFImtYwnVsSVoBdt68H9Qhk2uA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ecrpublic@v1.13.17/types\nM:0:0:555\nR:enums.go\na:0:0:444\nZ:Q1QyPt1KBlageq6DvBQISK9qCKmuQ=\nR:errors.go\na:0:0:444\nZ:Q1eMrUvKd9mWMzj51oCZrjQvW5rcc=\nR:types.go\na:0:0:444\nZ:Q116kXUUU9f2yJVcu3z3DPqmZE93o=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/internal\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.9.17\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1GYRVylgNLFESIzy099fSSHbuGwc=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:context.go\na:0:0:444\nZ:Q1vYGzLY9ovAEKdOHNCWXc7CR1rQk=\nR:doc.go\na:0:0:444\nZ:Q1IiGn6rhwmZL/I11npfeRQtreLBI=\nR:go.mod\na:0:0:444\nZ:Q1RHVvhuzaBEFnWT6lFgFHFflaNZo=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1mmKD+iBHlB3ZiZs/KEE+TG/L2nQ=\nR:middleware.go\na:0:0:444\nZ:Q1KkvLhQCkK2gPPlX6Omr34hlyp6U=\nR:middleware_test.go\na:0:0:444\nZ:Q1wPuiWqEy0M7lmv20QfsEyippaiU=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sso@v1.11.23\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q11Ssv6d/nv7yLwNwGjj0JLftw9hY=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1HXwXILyr795R7EcRSbhp16C/YDc=\nR:api_client_test.go\na:0:0:444\nZ:Q10+xOt+R2BLeu2v3anz6oKRcI75w=\nR:api_op_GetRoleCredentials.go\na:0:0:444\nZ:Q14FheKiMmD6ASyUljYYBPbtiZAKE=\nR:api_op_ListAccountRoles.go\na:0:0:444\nZ:Q1JY5Xb+C6XOQ/QnICWFUcUo77f2Q=\nR:api_op_ListAccounts.go\na:0:0:444\nZ:Q1gv0rGbO9/ayOoC97WE6b8LJnUi8=\nR:api_op_Logout.go\na:0:0:444\nZ:Q1aYy91VXNLCMzk7laZoENhS/8MT4=\nR:deserializers.go\na:0:0:444\nZ:Q1I7IiC/Snwt7B9rztmY7rZjx+MVQ=\nR:doc.go\na:0:0:444\nZ:Q1t5l440PNkIId8cSuV3vZBsvDyb8=\nR:endpoints.go\na:0:0:444\nZ:Q1FTLc5HIn4jJOfpY3b3JKm5Urp/E=\nR:generated.json\na:0:0:444\nZ:Q1pdOZJ3LppVkRVAX1hREtUMOIMWU=\nR:go.mod\na:0:0:444\nZ:Q1VAf/f2w60ZdFL+tt48VXq8fu98I=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q10OagqvKu1+BbGcIEmp+XH7MfaLg=\nR:protocol_test.go\na:0:0:444\nZ:Q1GbPkVdEuUC2bRRD3cg2jWYifZj8=\nR:serializers.go\na:0:0:444\nZ:Q1+8ZQXVQ3y+f+wQDeHajWBiVXwA0=\nR:validators.go\na:0:0:444\nZ:Q12C6A6mokuVQMbE54oGk13ATnkW0=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sso@v1.11.23/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sso@v1.11.23/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1PqRThS6D7vHXqNSMG3Nc3JR5IaQ=\nR:endpoints_test.go\na:0:0:444\nZ:Q1ekFImtYwnVsSVoBdt68H9Qhk2uA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sso@v1.11.23/types\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1QxxpKTMV4fEhcXn4gNSr6TBx3Bw=\nR:types.go\na:0:0:444\nZ:Q19gtVr+HD4QwsxcyvrUHJlbnhy5k=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.13.6\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q180CPFA0fqDYQB/vauNY2/V9Xiws=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1o8D0GpAILimnB2CVdcvBakWOD/k=\nR:api_client_test.go\na:0:0:444\nZ:Q1zse+m2f9o6I8Yk1Yi29v96Jqzc0=\nR:api_op_CreateToken.go\na:0:0:444\nZ:Q1MsO0ZmmrTtL/J6qKaEmgZnjy8MY=\nR:api_op_RegisterClient.go\na:0:0:444\nZ:Q1yuYUkg4lXonKzvtv/aPR42CuL+s=\nR:api_op_StartDeviceAuthorization.go\na:0:0:444\nZ:Q1Un7nRdf6N8kkJcu2eNQI5YLhHgU=\nR:deserializers.go\na:0:0:444\nZ:Q1AkKmEhD2iiJYHhGvGw2dB7ZKalo=\nR:doc.go\na:0:0:444\nZ:Q1v7KFmdE3bneRASon613PVxvLTFU=\nR:endpoints.go\na:0:0:444\nZ:Q1gUgFV/mgfAZV2nk2pjHZMRito0Q=\nR:generated.json\na:0:0:444\nZ:Q1awm5wwnHbKyDQQiR5IyTLaPSEMM=\nR:go.mod\na:0:0:444\nZ:Q1QWhlt+8ir5Kms4j2IF300vZRzO4=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1c/mihsyGaLR/+43HoBodDGQ0G1o=\nR:protocol_test.go\na:0:0:444\nZ:Q1qnvrYhCm2hsiMZJQeU50tf8e5wY=\nR:serializers.go\na:0:0:444\nZ:Q1Aiat4mZVv/cT0mJif423iz6rGbY=\nR:validators.go\na:0:0:444\nZ:Q1JLQDCfVZyfb5VjN5spqaYGMIKLo=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.13.6/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.13.6/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1RKKZhsrKmn1UFJbKlYbQCCIDCAE=\nR:endpoints_test.go\na:0:0:444\nZ:Q1ekFImtYwnVsSVoBdt68H9Qhk2uA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.13.6/types\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1GWy3KM2jg2q1J8T+x3Kv5m7nWMw=\nR:types.go\na:0:0:444\nZ:Q1CwGq5/iFnr3s1Zc9+IiQX82dQNM=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sts@v1.16.19\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1NTcxshy91epRfljwPUgEYJqls+I=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:api_client.go\na:0:0:444\nZ:Q1NcdS5vsuQfx8ax/V4KRhdF/SZ0M=\nR:api_client_test.go\na:0:0:444\nZ:Q16hhTb3DWMqBPnBJbTE87Ld5bv+A=\nR:api_op_AssumeRole.go\na:0:0:444\nZ:Q1rqIxr12oZSA6apf7UQz+9RcwC50=\nR:api_op_AssumeRoleWithSAML.go\na:0:0:444\nZ:Q15FtflMGXhlaKqQQNIP4KdmkmGR4=\nR:api_op_AssumeRoleWithWebIdentity.go\na:0:0:444\nZ:Q1Cs7dbu/tZUhsYPzHLIzsuy2llzs=\nR:api_op_DecodeAuthorizationMessage.go\na:0:0:444\nZ:Q1uu63DsTlq7hP4HgvphyxSKwnVVo=\nR:api_op_GetAccessKeyInfo.go\na:0:0:444\nZ:Q1WBW/1BztYYXYSDfGLehT8W/eYJI=\nR:api_op_GetCallerIdentity.go\na:0:0:444\nZ:Q1HBrIB3YmqafX/MzOve2Z2aeeaSM=\nR:api_op_GetFederationToken.go\na:0:0:444\nZ:Q1jH3UPBpukiutZx0S8w6RnLA/iTM=\nR:api_op_GetSessionToken.go\na:0:0:444\nZ:Q1YxSfeQh7P/fhBKPzPcQ3H3eBBNs=\nR:deserializers.go\na:0:0:444\nZ:Q1ssKlRuhJlvJZbBnrsAB9qheCQvo=\nR:doc.go\na:0:0:444\nZ:Q1LFrtNhAwYtC2dfncJwW4Qer6vK8=\nR:endpoints.go\na:0:0:444\nZ:Q1MrPAt8guGJ1MzSbAb9uVu3IM+yo=\nR:generated.json\na:0:0:444\nZ:Q13Z0TsOH9INKuiroItOHDqvxIoQI=\nR:go.mod\na:0:0:444\nZ:Q1cZyHf9KGzQbMHBoQbSpNsO9T5d0=\nR:go.sum\na:0:0:444\nZ:Q1QCdm8zShiY0giItgrRxbnvwXAyw=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1M2XXg3yGG8FKTMue2cE6CdXsRjU=\nR:protocol_test.go\na:0:0:444\nZ:Q1glFyvVkX/DmhzG7PSMsK5Gy0fi4=\nR:serializers.go\na:0:0:444\nZ:Q1p7H63YMfDQ8J8QSiHHs/pGY1PO8=\nR:validators.go\na:0:0:444\nZ:Q1Ftwi1ClzU+kFGxQnaKMMqlINtAs=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sts@v1.16.19/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sts@v1.16.19/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q16v3ON5WNAQFlQWMnbcDGkbrs9z0=\nR:endpoints_test.go\na:0:0:444\nZ:Q1ekFImtYwnVsSVoBdt68H9Qhk2uA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2/service/sts@v1.16.19/types\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1aahnKmE6i2x/Tm+41P5TlXBgi+s=\nR:types.go\na:0:0:444\nZ:Q1kAaXP0DjwZfFR36HqJFIUZrq7Cg=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q15M5CAGCBHMLZ+2RSieuoofys+hw=\nR:.golangci.toml\na:0:0:444\nZ:Q1Dq6ulSI0NBS3dqscaaQTde8vMlo=\nR:.travis.yml\na:0:0:444\nZ:Q1kLJFUazAtWB289Cbrf6nEDm0xA0=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1P9rYSREpfbh3CfP+HfHVor0aaU8=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1ymks7m/paTdF2KKQ8oWz9vsc71s=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1hrHBbaYoPWGFCeJJfJ6sV7pxN3o=\nR:DESIGN.md\na:0:0:444\nZ:Q1I6EWYqMee4E15AYuwqfiulbAHFE=\nR:LICENSE.txt\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:Makefile\na:0:0:444\nZ:Q191tqcOiGJZ/6oBbpjxeWb4JrY7w=\nR:NOTICE.txt\na:0:0:444\nZ:Q1DugHcCag+lanh4H3D5MFKF7i678=\nR:README.md\na:0:0:444\nZ:Q1tSV20ixhihnRuT/rsC+O5SeLuak=\nR:buildspec.yml\na:0:0:444\nZ:Q1q852QW+iGXDDOm+QO+8lR+SV8ME=\nR:doc.go\na:0:0:444\nZ:Q1HvboZXFBPN8FoWt9Ea2zgrRMdLU=\nR:go.mod\na:0:0:444\nZ:Q1yx74ZCvoYEP1IMFb0Mji3Ep8Edo=\nR:go.sum\na:0:0:444\nZ:Q1/r7aKUzikynEOIMhl2XqAmeqnFo=\nR:local-mod-replace.sh\na:0:0:444\nZ:Q1i+tB3fWGv9OWCP1Gss2bnqAfbmg=\nR:modman.toml\na:0:0:444\nZ:Q11oKSzN7DkcjnAx+tNJoFRNLM3/Y=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1NhTPoo6euVyXim1RF4H5A+PRvrM=\nR:ISSUE_TEMPLATE.md\na:0:0:444\nZ:Q1cTAs7Ya9I9/DH/tTN7qnB0P5RIE=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1l4UFfAzZXo2C1P5POD/Wf0TYAT0=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:bug-report.yml\na:0:0:444\nZ:Q1HyckWqxG2k54ovFW8UeU6jPBJhY=\nR:config.yml\na:0:0:444\nZ:Q1dH9YL1hi+92621/GiREU7ix3qYQ=\nR:documentation.yml\na:0:0:444\nZ:Q1p3wBBChdDeEjt1pE+7nc6jK0Kuc=\nR:feature-request.yml\na:0:0:444\nZ:Q1+FlQ4hXARh8hidehM1HIglMW1eE=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/.github/workflows\nM:0:0:555\nR:closed-issue-message.yml\na:0:0:444\nZ:Q1SZ2ZpM9+nLGflPWNMH1ekqMRHWE=\nR:codegen.yml\na:0:0:444\nZ:Q1/hU+rVj+0fjiPLwLDdhs0h0XjJg=\nR:go.yml\na:0:0:444\nZ:Q1bq+wHiUbdCPG9jYqVXcmA85kIb8=\nR:golangci-lint.yml\na:0:0:444\nZ:Q1/YrzrnqOObQCynePAMHR29RwgF0=\nR:license-check.yml\na:0:0:444\nZ:Q1+jRL9ZrzhOGdVhLULil+/QU04Fo=\nR:stale_issue.yml\na:0:0:444\nZ:Q1BHOOegxqf0oM73OwTjvJ7oeU7jo=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q13x7MtlKEp5EhhP/tWYq7kJ7o2eg=\nR:context.go\na:0:0:444\nZ:Q15thRmLeVIwakqkJhn06a7vskLVk=\nR:credential_cache.go\na:0:0:444\nZ:Q1+w8JA4gRjULovccY06LJszrcuG4=\nR:credential_cache_bench_test.go\na:0:0:444\nZ:Q1QOXh/AkqZERypsdFUvJdxz2KgqE=\nR:credential_cache_test.go\na:0:0:444\nZ:Q1yutGko1GRElxypzxe4ggrT8GmpI=\nR:credentials.go\na:0:0:444\nZ:Q1NgZTI9xpMn4DsZsrQoDtsK8qzYs=\nR:defaultsmode.go\na:0:0:444\nZ:Q1Y7FyuedA+edhbB+UAeG7Vn1ygSs=\nR:doc.go\na:0:0:444\nZ:Q1bLpe7E6ZSmyVzfchmttWVR6Pa2M=\nR:endpoints.go\na:0:0:444\nZ:Q1oawrl2+Jodg/lTFe1oDiI1cTX9Q=\nR:endpoints_test.go\na:0:0:444\nZ:Q1SjafiK9WcaP+Qk9le1GRTx+VPp8=\nR:errors.go\na:0:0:444\nZ:Q1sZMatALrzHeUEJUbwV11OGRgCXY=\nR:from_ptr.go\na:0:0:444\nZ:Q1FehHFvu1Kzc6/vSvttMMRsUG57g=\nR:generate.go\na:0:0:444\nZ:Q1+6RBuuw0gbdLo2Du3Nh0ABI3qlY=\nR:go_module_metadata.go\na:0:0:444\nZ:Q179eRI0xewbathe4X8IPjjnd2f7o=\nR:logging.go\na:0:0:444\nZ:Q11lJDutKVap3xNcGI8rvdZ1AQ0MI=\nR:logging_generate.go\na:0:0:444\nZ:Q1AWfZPfCxNVQMpZO9CUWPAQgBBbA=\nR:request.go\na:0:0:444\nZ:Q1II+2GgGGkjl1Mu1uylHh2jFhXnA=\nR:retryer.go\na:0:0:444\nZ:Q15U0NSHF9cgfo92a6yr8e5UuRmBs=\nR:retryer_test.go\na:0:0:444\nZ:Q1HXRpp3GrntZmeDZDKKRgLi7f1Sw=\nR:runtime.go\na:0:0:444\nZ:Q171gqxE4B0jMYBRbpv00Ljcz6Ndo=\nR:to_ptr.go\na:0:0:444\nZ:Q1b5ztNGhpy19KEeWFijA49bQ5i2w=\nR:types.go\na:0:0:444\nZ:Q1jQ629efAz/WzjBK4EFS0KJI281I=\nR:version.go\na:0:0:444\nZ:Q1wQJyB8AWO/SMvfWdLNCGZHJLmQo=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/arn\nM:0:0:555\nR:arn.go\na:0:0:444\nZ:Q1U5ppShWdXGLFrB5Omq842kya80A=\nR:arn_test.go\na:0:0:444\nZ:Q1dEx864pdk4MAqb3KvVLoQB17AcA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/defaults\nM:0:0:555\nR:auto.go\na:0:0:444\nZ:Q1pE52yV0r428wnAf6rneec663J78=\nR:auto_test.go\na:0:0:444\nZ:Q1adIA1lhwMVFzlfRE8m7fOH9fKDw=\nR:configuration.go\na:0:0:444\nZ:Q1lWsVvpQSHP1SUUjDw2b2ZD1wxTk=\nR:defaults.go\na:0:0:444\nZ:Q1/3owXPFBJ2dVkQEHXS2GZoBMiv4=\nR:defaults_codegen_test.go\na:0:0:444\nZ:Q1dp7Wr4W2c/yr7G0Ri7BqqVRy4rg=\nR:defaults_test.go\na:0:0:444\nZ:Q1XKEdlZnPBz01Q8r5Xu+l6yw7AmM=\nR:doc.go\na:0:0:444\nZ:Q10wXTQOQ+UVKr7/gC2Zwns2p16sI=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/middleware\nM:0:0:555\nR:metadata.go\na:0:0:444\nZ:Q1Z2c6lhAK/mlygEULEOaA8mPr35g=\nR:metadata_test.go\na:0:0:444\nZ:Q1IHH16Oi0vVS5kkz0wzPXlFSQIcs=\nR:middleware.go\na:0:0:444\nZ:Q1QFyB+yvqtGiXNTjxCaqTk60cvPo=\nR:middleware_test.go\na:0:0:444\nZ:Q1Dqt722lMWi3lip6/3np5XCG8LKo=\nR:osname.go\na:0:0:444\nZ:Q1YkDBMpXryANwNrdr5cVg4Bejc1w=\nR:osname_go115.go\na:0:0:444\nZ:Q14JW6zWUprO5Mg3OX/BvwF7i5FHo=\nR:request_id.go\na:0:0:444\nZ:Q193svMY5hoHMu+YuS6heLxZqIHLs=\nR:request_id_retriever.go\na:0:0:444\nZ:Q1hmO5u7h23oiOrvGGHlfVfk6MJ30=\nR:user_agent.go\na:0:0:444\nZ:Q15FuDA23uLCM0aRULwN46LcalJmo=\nR:user_agent_test.go\na:0:0:444\nZ:Q1KXMY8FJkT7sRc49pdP89CF4enWI=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/protocol\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/protocol/ec2query\nM:0:0:555\nR:error_utils.go\na:0:0:444\nZ:Q1ttfeLi/jrfWALNo4Vy5vpYSgrLI=\nR:error_utils_test.go\na:0:0:444\nZ:Q1En0YBABoRuKtK423wi1a4lHF0Bk=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/protocol/query\nM:0:0:555\nR:array.go\na:0:0:444\nZ:Q1k5gq48kDzlgvooz0SE1fo3DYCeA=\nR:encoder.go\na:0:0:444\nZ:Q1wNBa9E1OdTEbzyMBh60xgtV77kk=\nR:encoder_test.go\na:0:0:444\nZ:Q1tgE+zclCqvil2rRa39LfRzCh43E=\nR:map.go\na:0:0:444\nZ:Q1GpiAE5Edr/39yEF5w8KrJqsRSjE=\nR:middleware.go\na:0:0:444\nZ:Q1u0hBIyg/ADVj6GX9AXBJSB20Pzk=\nR:middleware_test.go\na:0:0:444\nZ:Q1Rt7OTOEIsir2YdDaWoDYLhH+A3g=\nR:object.go\na:0:0:444\nZ:Q1qQM1nZ33GopbbdJKAv5US8EhP0E=\nR:value.go\na:0:0:444\nZ:Q1V6jRhDw7dqoXfkDChG6w8L2bF6w=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/protocol/restjson\nM:0:0:555\nR:decoder_util.go\na:0:0:444\nZ:Q10goDKmc5Ot0quOC5Vk96eSDBYeo=\nR:decoder_util_test.go\na:0:0:444\nZ:Q16Uwb+oYFkQZFiojtUonRvMlslGI=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/protocol/xml\nM:0:0:555\nR:error_utils.go\na:0:0:444\nZ:Q1CgUy54mRmfosNOqvcGVrTReWjNo=\nR:error_utils_test.go\na:0:0:444\nZ:Q1PNS6f2hTqaUphzHEBF7nClGjoMk=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/ratelimit\nM:0:0:555\nR:token_bucket.go\na:0:0:444\nZ:Q1ExsgDesXN+Dx6jVR6OLztVGicQQ=\nR:token_bucket_test.go\na:0:0:444\nZ:Q1PpqSmGGL6+A6U4x9KO8LnSk9OAg=\nR:token_rate_limit.go\na:0:0:444\nZ:Q1slGyrgyKH9uK0c6eEXsW6KMANmI=\nR:token_rate_limit_test.go\na:0:0:444\nZ:Q1+nnjBb8E9OtmbMhkjzJViDi9IsY=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/retry\nM:0:0:555\nR:adaptive.go\na:0:0:444\nZ:Q1S3co0PHobftdlhrso9XdgC5UpCA=\nR:adaptive_ratelimit.go\na:0:0:444\nZ:Q1GEoqPlrxFn3UAMrKgwjDAlCF1ek=\nR:adaptive_ratelimit_test.go\na:0:0:444\nZ:Q1P7E9XVBeRVnD7EkoPlwjKb6xdCg=\nR:adaptive_test.go\na:0:0:444\nZ:Q1uCJYhR02rbMpzh9SUPMUHU61hZA=\nR:adaptive_token_bucket.go\na:0:0:444\nZ:Q1MSiNdL9L+rHrWuz2jwOmV8ussL0=\nR:adaptive_token_bucket_test.go\na:0:0:444\nZ:Q1yO+nTdGKEP/JolXUuY3J89UKzEM=\nR:doc.go\na:0:0:444\nZ:Q1EKm4pxONUCL6UyxWZKs4MSW3770=\nR:errors.go\na:0:0:444\nZ:Q1fI4yuIhcz3+WodVfQMRQphN0wwg=\nR:example_test.go\na:0:0:444\nZ:Q1YLRL4oS+OCp2pGn3HsN4pF5yfjg=\nR:jitter_backoff.go\na:0:0:444\nZ:Q1rn4gHQIcikeT9JWe5o3ixgS/GIs=\nR:jitter_backoff_test.go\na:0:0:444\nZ:Q1Mo6JsMdG2tQCIEpi+rKaEfl/ggM=\nR:metadata.go\na:0:0:444\nZ:Q1RTGgPbxQJ3VrSSM00PGC97LbftI=\nR:middleware.go\na:0:0:444\nZ:Q1g9eju1IjR/hsWL/M8BgXrwPDAdg=\nR:middleware_test.go\na:0:0:444\nZ:Q1L+iWM4O1epCU+EEfq4e2ngQFXT4=\nR:retry.go\na:0:0:444\nZ:Q1daWGy8eFB/eOM1lRio6ndRdOAX4=\nR:retry_test.go\na:0:0:444\nZ:Q17wD4THRdyJxIcV0exGledqYD5xE=\nR:retryable_error.go\na:0:0:444\nZ:Q1xonHRQ61XTbhzSgvBXP7HabORHY=\nR:retryable_error_test.go\na:0:0:444\nZ:Q1Lc5cVyC6iGkPcNPLx+Lxj3Cxcso=\nR:standard.go\na:0:0:444\nZ:Q1lI+r8nolJQo9RQQ3FY3A5jsm6iY=\nR:standard_test.go\na:0:0:444\nZ:Q1lVB3ut4rjTOr9jOFZFbbpztEiNo=\nR:throttle_error.go\na:0:0:444\nZ:Q1Tm/Urr2yAnncNF8nSxAUr5Vp8Y8=\nR:timeout_error.go\na:0:0:444\nZ:Q1PQLKjmY8twBZ7/J+q0iteFTUXtc=\nR:timeout_error_test.go\na:0:0:444\nZ:Q1KgaNfk1KZ1T4FcUfY0HGOG7lniU=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/retry/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/retry/internal/mock\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1dfKPY5OSy4NOlEF9hKPbZfkvEaI=\nR:config.go\na:0:0:444\nZ:Q1JcG7PUmEmtmPV4t9xP/O/Yo7bKA=\nR:types.go\na:0:0:444\nZ:Q1fbXZfJWcrdqVXo07Y+jSIMHjvo0=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/signer\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/signer/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/signer/internal/v4\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1Becf5twc5ESmAkbMWV+A7CulFo0=\nR:const.go\na:0:0:444\nZ:Q1iRi4Lq01DHoSErA07am9no+UPG0=\nR:header_rules.go\na:0:0:444\nZ:Q1jRR7BC44gRrTlX4UwdP0NOvSp00=\nR:headers.go\na:0:0:444\nZ:Q19Ch+JxZrBd7MJpg9L0m3maJTQIw=\nR:headers_test.go\na:0:0:444\nZ:Q1mL3VTYCKCxWebGl+7RuIKEV6vhg=\nR:hmac.go\na:0:0:444\nZ:Q1r4g1s1vxpetYsvqsGpfdNHRTbWw=\nR:host.go\na:0:0:444\nZ:Q1POQvH7uvMSApINm2AkB1K44CxRo=\nR:scope.go\na:0:0:444\nZ:Q10+qYmF/wU5+NsZ+PlvCe13VRG90=\nR:time.go\na:0:0:444\nZ:Q1OJ8KhZT+P3PP25XF3m4yu0C2Yko=\nR:util.go\na:0:0:444\nZ:Q1wgGzafOoeHad7KTItzqqaIrDZho=\nR:util_test.go\na:0:0:444\nZ:Q1aL+1GhZLBbISNxX1sxfgraTTTs0=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/signer/v4\nM:0:0:555\nR:functional_test.go\na:0:0:444\nZ:Q1jaI752fpK2DyGYsf/sQOlWwNflI=\nR:middleware.go\na:0:0:444\nZ:Q15MQ1p1IpzMXLNZgtU47auExsa24=\nR:middleware_test.go\na:0:0:444\nZ:Q1NUi7IxKWa13csQ9VbDvNDQ25wUo=\nR:presign_middleware.go\na:0:0:444\nZ:Q1qjiurjez3dSM2aF7hWtt44/PrnU=\nR:presign_middleware_test.go\na:0:0:444\nZ:Q1Zx97wEZPD8Sjo1sTuA0kQRakSu8=\nR:stream.go\na:0:0:444\nZ:Q13ciBkwQvkrhhtKRIXjVf3U96Aqg=\nR:v4.go\na:0:0:444\nZ:Q1ItRIwCU3nWCW0fnGARVJ2Np8iIQ=\nR:v4_test.go\na:0:0:444\nZ:Q1FT+rfrhhQXIFHRCNZOEyT4VysXA=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/transport\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/aws/transport/http\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1DSj7eA9OJuAluu8J9ai/QnUVdKg=\nR:client_test.go\na:0:0:444\nZ:Q1eu4AWwQ9usW7fMbfNWfzZ7zFXsQ=\nR:content_type.go\na:0:0:444\nZ:Q1CyZAP6DSQUG/gbIeT7uz+QHkZAo=\nR:response_error.go\na:0:0:444\nZ:Q1kZ3SkhH3TciuoGLUBoWuVfhKS3w=\nR:response_error_middleware.go\na:0:0:444\nZ:Q1FMBt/WEDI2mEG0sNc2ofqIWZjqs=\nR:timeout_read_closer.go\na:0:0:444\nZ:Q1o+8WtZw2FPbDvQCgcko372icFG4=\nR:timeout_read_closer_test.go\na:0:0:444\nZ:Q1HKbKdBudO3pZA3gzkBGVxY0873g=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/awstesting\nM:0:0:555\nR:assert.go\na:0:0:444\nZ:Q1GOhaQ95oLK3jcZJI2A5DZawZvMw=\nR:assert_test.go\na:0:0:444\nZ:Q14BqvDIfKXtaMh//NP49WgG9ldzQ=\nR:certificate_utils.go\na:0:0:444\nZ:Q1rwlZXxIRKbbnuuyAu2FwwhWxvkI=\nR:discard.go\na:0:0:444\nZ:Q1ZSk/5sXrkR1wyMoPJoPK6yz858s=\nR:endless_reader.go\na:0:0:444\nZ:Q1Vwa6zKCuXiS7NzTAYgkMZWaBOWE=\nR:util.go\na:0:0:444\nZ:Q1S8+hbZdMIuGAH+B3zztBsgbxNm8=\nR:util_test.go\na:0:0:444\nZ:Q1Oe2WX1Q8JD5srtposIzQrh0Rz40=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/awstesting/sandbox\nM:0:0:555\nR:Dockerfile.golang-tip\na:0:0:444\nZ:Q1EaZI9PiE0pxFFv3POa0oVLHVPWw=\nR:Dockerfile.test.go1.15\na:0:0:444\nZ:Q1kll52XFCdHaQVkBI3xR39mzTFf0=\nR:Dockerfile.test.go1.16\na:0:0:444\nZ:Q1NCG34NbnLRN4H2aXT4phNCVYHzA=\nR:Dockerfile.test.go1.17\na:0:0:444\nZ:Q1j51MCTlWLDneeWApgR0hRW49Wpc=\nR:Dockerfile.test.go1.18\na:0:0:444\nZ:Q1O6hV6iFUxmwvsLdmN4GyqXsztPI=\nR:Dockerfile.test.go1.19\na:0:0:444\nZ:Q1i0WIgd3J3nLx8itZsVWThh6VJDw=\nR:Dockerfile.test.gotip\na:0:0:444\nZ:Q1H5qXN+O/GKuRmIuP4ooTJJambwY=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/awstesting/unit\nM:0:0:555\nR:unit.go\na:0:0:444\nZ:Q1VM3bJ7NLDhukm5FkBFziRJEvs6k=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/awsutil\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q1P4gkvxtcgnA4++tHgn7fdgZBUkg=\nR:copy_test.go\na:0:0:444\nZ:Q1RAAc5QZCXyriPYdK2vp/uo+LLAw=\nR:equal.go\na:0:0:444\nZ:Q1sV+1raKrZSd/2+AmaEzxPMfWF/c=\nR:equal_test.go\na:0:0:444\nZ:Q1Z0AFEiIWnNcBF4uqxoVPkAKSIA4=\nR:path_value.go\na:0:0:444\nZ:Q1vPt+c7g5O26O00nWHjBQdMkDB/E=\nR:path_value_test.go\na:0:0:444\nZ:Q1GTFc3mxjTIL2Mb4hq3iN1LO/1ig=\nR:prettify.go\na:0:0:444\nZ:Q1kaqacKODcwZYPfj00sGNZomFq1U=\nR:string_value.go\na:0:0:444\nZ:Q1lsNIt0BguVx2TTwkOx3QYzX5WYM=\nR:string_value_test.go\na:0:0:444\nZ:Q1IVSUxk/Fv1K1UIHe9rgOvNdqrk8=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1znmOCT8UB07e3A8ESntGYAnCAw0=\nR:endpoints_test.go\na:0:0:444\nZ:Q1jdAsabxtOmK7X504TEpHpFMSCkc=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/rand\nM:0:0:555\nR:rand.go\na:0:0:444\nZ:Q1DtjV0e02DtEl97au/PLL2Ao0GO4=\nR:rand_test.go\na:0:0:444\nZ:Q1CU6tkOHFQd6lbGzDPDVuzkNN4vg=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/sdk\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1UaPmbpcvxpfLuFXb4+Ednou7JX0=\nR:time.go\na:0:0:444\nZ:Q1/FSIPcAMo8JpXKJF1U3xT5fxqmY=\nR:time_test.go\na:0:0:444\nZ:Q1PpqTV1zsNyueCwC2WRIDFTk5cF8=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/sdkio\nM:0:0:555\nR:byte.go\na:0:0:444\nZ:Q1dh02dUx3Q0GZoonnpcWiRT9BqNQ=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/shareddefaults\nM:0:0:555\nR:shared_config.go\na:0:0:444\nZ:Q1UVHcVh1A8y/9JV8B3aNquFa6udc=\nR:shared_config_other_test.go\na:0:0:444\nZ:Q1NSy1090/phS2ahdjTxNT57QrHT4=\nR:shared_config_windows_test.go\na:0:0:444\nZ:Q1ILlUQEaKVEiuPNwo+t2WbfWhaFE=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/strings\nM:0:0:555\nR:strings.go\na:0:0:444\nZ:Q1GPOFzQY0uTKgsvIsTdzigpXrp4g=\nR:strings_test.go\na:0:0:444\nZ:Q1SgEhU/Y2krIPFT+cisTX/KFrQ68=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/sync\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/sync/singleflight\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1bFH1lZAiKTLsM47ML4LaJOqqvw0=\nR:docs.go\na:0:0:444\nZ:Q1EXLJmh4dIh7/611SUjDl6wnWtiQ=\nR:singleflight.go\na:0:0:444\nZ:Q1lgfts72txX5Ky/fa1Reh+GRgCTI=\nR:singleflight_test.go\na:0:0:444\nZ:Q1YeWYF85COKU0EU8S+4D5SdEAYj4=\nF:root/go/pkg/mod/github.com/aws/aws-sdk-go-v2@v1.16.16/internal/timeconv\nM:0:0:555\nR:duration.go\na:0:0:444\nZ:Q1j4OGZ+uqCoKnVFGZa1B6HK2A/T4=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q17wv2Mb5BGwDWHHZDlc6PUakcOzY=\nR:.travis.yml\na:0:0:444\nZ:Q1NWIXKjCtBRzvLOhk5VBkHlQXuzU=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1GcOPJ8s8Q/DIlatIyg8t8HmwF9c=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1TsMlRrQ9hpTNhDTp8yx8ljGbQy0=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1PF9Mt+A3H3x3yWZzDmbcMWjsjos=\nR:LICENSE\na:0:0:444\nZ:Q1V67QsPdOY/a4XM4RvOKboXELQis=\nR:Makefile\na:0:0:444\nZ:Q1p9mfJ9+FUNlU2/mmmN9s9qo6ORw=\nR:NOTICE\na:0:0:444\nZ:Q1ZYo6HAekRv3HSjE1kWUPvBkUnSs=\nR:README.md\na:0:0:444\nZ:Q1gtbyrwzFGou1uM4w8Jg5yD23nGY=\nR:doc.go\na:0:0:444\nZ:Q12Ecdee79UZhkU5/V3RlNJlgLonc=\nR:document.go\na:0:0:444\nZ:Q1a46q821X/umywarU56yGy+tnXQ0=\nR:errors.go\na:0:0:444\nZ:Q1fizLBGQ3vMslrPX4RHGIRZuY5M4=\nR:go.mod\na:0:0:444\nZ:Q1+3Rlzx3hP4l8XYiYdxdcA0K9n48=\nR:go.sum\na:0:0:444\nZ:Q1cNAdwkpWhWInpGMSXp+6BaXo4rQ=\nR:go_module_metadata.go\na:0:0:444\nZ:Q1ZVfl2fV7gmLj3k3IM7mQfbm6OTw=\nR:local-mod-replace.sh\na:0:0:444\nZ:Q10GW7tfjWtpnUJSUDPSwBy1U92w4=\nR:modman.toml\na:0:0:444\nZ:Q18NZv7qGE/4Cqg50xxU7JlFd0Tto=\nR:validation.go\na:0:0:444\nZ:Q13F4gtx9/rxoOLFIwSOLnU0dZRpI=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1NhTPoo6euVyXim1RF4H5A+PRvrM=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1DEaMR8hChZtOGv2+6zjhZSlgf28=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/.github/workflows\nM:0:0:555\nR:api_diff_check.yml\na:0:0:444\nZ:Q1TFxyKz79/5W7zef8QfmsJzhCEKQ=\nR:codegen.yml\na:0:0:444\nZ:Q1yX0eFvpEg8MsUiIt70pTOzARjYI=\nR:go.yml\na:0:0:444\nZ:Q1h6iYzNAj6/KUIsfpY/zhOk0T60k=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/auth\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/auth/bearer\nM:0:0:555\nR:docs.go\na:0:0:444\nZ:Q1vbiMupSEHr2hFRGT0B8rZXgFycg=\nR:middleware.go\na:0:0:444\nZ:Q1xsh8OfVKQ3HoHPjCmWjUaLwfbe8=\nR:middleware_test.go\na:0:0:444\nZ:Q1jtbrLILIGyLgD21PY8GgLqOhjIY=\nR:token.go\na:0:0:444\nZ:Q1rhXMK9mt5/yMCwkiCNBm2el7XqA=\nR:token_cache.go\na:0:0:444\nZ:Q1ln3MXcO2v7WIEw3MONZaZzzQ1Yg=\nR:token_cache_test.go\na:0:0:444\nZ:Q1m+yLS+pqQh5kt7V+ZbN6ypolfyc=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/context\nM:0:0:555\nR:suppress_expired.go\na:0:0:444\nZ:Q1zc6588tRurD45+DQ5BS09gkyrnQ=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/document\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1yqEUYhet6sEelR0EZLEzNgT/zHI=\nR:document.go\na:0:0:444\nZ:Q1a9enEGq1lHdRR9E1kkFO4aDGjbE=\nR:errors.go\na:0:0:444\nZ:Q1ZsaI73hxVLZvTI6Xi6W6lmh4BFo=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/document/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/document/internal/serde\nM:0:0:555\nR:field.go\na:0:0:444\nZ:Q1lGaBO/u8HCRCyIkcYT6JoGg/obs=\nR:field_cache.go\na:0:0:444\nZ:Q1IXaYrKxI0zVEcrx1uN0xOWcGCm8=\nR:field_test.go\na:0:0:444\nZ:Q1RCsvymgvI/JCLn3aoFbEcmviUWQ=\nR:reflect.go\na:0:0:444\nZ:Q13p4YryhKJ7Rrl9JWEnD2D23XdH8=\nR:serde.go\na:0:0:444\nZ:Q1UpMvS9AnCInEOuOXh/ptAdZrQDM=\nR:tags.go\na:0:0:444\nZ:Q12NbcmzUQHU9kbPclg8/6VpjW18U=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/document/json\nM:0:0:555\nR:decoder.go\na:0:0:444\nZ:Q1AQxAAkEC6NHMS2QwJFDf7OLCdi8=\nR:decoder_test.go\na:0:0:444\nZ:Q1T4tTYZGx9Ydnmrs51GQH8Ypambs=\nR:doc.go\na:0:0:444\nZ:Q1SAlJyNlKzt9VMXD94tQZb8BUFzY=\nR:encoder.go\na:0:0:444\nZ:Q1jtLlCvuSF6Ba6JGAJRfWQ3dY/30=\nR:encoder_test.go\na:0:0:444\nZ:Q1XnxYa6MTXn3o12TTvc5QIUFBMx0=\nR:json.go\na:0:0:444\nZ:Q1DC8rTdBPeAQAmCSr1+oTyN5sXEI=\nR:shared_test.go\na:0:0:444\nZ:Q1vZw5h6V4zaNxAmfq4tG7XmtpmqE=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/encoding\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1uo7C8+BPM2sVX/iy2O8C0/UHLJ0=\nR:encoding.go\na:0:0:444\nZ:Q10Btf3sPM9XbOA9jUXUuMDJoV2z4=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/encoding/httpbinding\nM:0:0:555\nR:encode.go\na:0:0:444\nZ:Q18ojcF/qc7wPbYoi66TZZv1po6Go=\nR:encode_test.go\na:0:0:444\nZ:Q1EJr449qyMsQpJL9+Ym+rXWicuVk=\nR:header.go\na:0:0:444\nZ:Q1FU+VcLQxi2as9+xGRKVAdO/t3WM=\nR:header_test.go\na:0:0:444\nZ:Q1C6OnoahoZj7b3jziyyCtLwKQtSI=\nR:path_replace.go\na:0:0:444\nZ:Q1sJBMLHnkqh1GA3aacfu8fw4i0qI=\nR:path_replace_test.go\na:0:0:444\nZ:Q16g8b3qz3KqJAlSJncEXOdCbJRpI=\nR:query.go\na:0:0:444\nZ:Q1+1M9xCLJ17gGmP/jmxR912VRtyw=\nR:query_test.go\na:0:0:444\nZ:Q137bHk5WZpkAs1G7CqnaUnUkdnTA=\nR:shared_test.go\na:0:0:444\nZ:Q1iyevIE1BuSIIA5JPRLcQg+MffBE=\nR:uri.go\na:0:0:444\nZ:Q1L99y/ScVSwRKBuTXxazRP3qkf34=\nR:uri_test.go\na:0:0:444\nZ:Q1tD1ybyPR61WWwr4Nvxbg2N1wV94=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/encoding/json\nM:0:0:555\nR:array.go\na:0:0:444\nZ:Q18P6sqwgT38mkI3PfIVkW2Y+4z2Q=\nR:array_test.go\na:0:0:444\nZ:Q17noXnXkncv9JTF/Q5BYuBkFjZaA=\nR:constants.go\na:0:0:444\nZ:Q1Y8y7hYgfiG9umN8F9Gh6hhCjQ54=\nR:decoder_util.go\na:0:0:444\nZ:Q1JY/ntN6g1Vm29SGDSz6cnKbJloM=\nR:decoder_util_test.go\na:0:0:444\nZ:Q1+d2V6vfn8zvRNO/eeeA57pIkvVo=\nR:encoder.go\na:0:0:444\nZ:Q1JisP6h5qu0aFpdMcMyQNyutGTTE=\nR:encoder_test.go\na:0:0:444\nZ:Q1YLZHinuf3Xn3kVLPCa++kSsH/I4=\nR:escape.go\na:0:0:444\nZ:Q1oYuBnSbxcijRJW/pgO55jR/IAyM=\nR:escape_test.go\na:0:0:444\nZ:Q1U+d3SF+vM2HjYj8GD/lkITcYgKc=\nR:object.go\na:0:0:444\nZ:Q1MiSROmkZoeKCQv5LaaaQ1hJ9RBY=\nR:object_test.go\na:0:0:444\nZ:Q1zNtVda1uK8oP8t4da9Z7SBTmNQ8=\nR:value.go\na:0:0:444\nZ:Q1MumpzlkrogT127fp91NaMv5mMPo=\nR:value_test.go\na:0:0:444\nZ:Q1RhLW58NUAAJhYofJCNjgGWp7P4E=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/encoding/xml\nM:0:0:555\nR:array.go\na:0:0:444\nZ:Q1abq+Lxn7P3fBSS9MnTXOgx/N2Pg=\nR:array_test.go\na:0:0:444\nZ:Q1k+Um6c51tWogpR0/4kXWn4kKB3I=\nR:constants.go\na:0:0:444\nZ:Q1lBQIHMolWcdZAsYhswn98HYGEYQ=\nR:doc.go\na:0:0:444\nZ:Q1Smw6IfyTTC3zrpSNUx5Dj+5bMRE=\nR:element.go\na:0:0:444\nZ:Q1sNPtAjaxWUDe/sa6c0JMLhCC8Vc=\nR:encoder.go\na:0:0:444\nZ:Q1n58g3mbh2ADeFA+cl7A8QIHop1s=\nR:encoder_test.go\na:0:0:444\nZ:Q1x2HeNZ9DOd/VBKR18FH3oxrmsuY=\nR:error_utils.go\na:0:0:444\nZ:Q1bA+4ioaYLhuXv/5/LsVDjmAW7WU=\nR:error_utils_test.go\na:0:0:444\nZ:Q1KBhiK0bnke1p1k5yLdbbhE/kVZI=\nR:escape.go\na:0:0:444\nZ:Q1XSdkH4mvI8YevsGypW8BhZAW6no=\nR:map.go\na:0:0:444\nZ:Q1+S8PvY3aEBgEyOGiS2ogq460/Ok=\nR:map_test.go\na:0:0:444\nZ:Q1p1vzZsnW32EbAxgFG/HjNC+Anrw=\nR:value.go\na:0:0:444\nZ:Q1IR+KQyhX3PfldCJPMLo6tH19/HE=\nR:value_test.go\na:0:0:444\nZ:Q121FFRSDqiktwaE6iTQ/0GiZSgJ0=\nR:xml_decoder.go\na:0:0:444\nZ:Q1zxnzMto8CByea+l6rG4YsTdp68s=\nR:xml_decoder_test.go\na:0:0:444\nZ:Q1pBBAQOS2wBodiSiipGHMCJCApQM=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/internal/sync\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/internal/sync/singleflight\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1bFH1lZAiKTLsM47ML4LaJOqqvw0=\nR:docs.go\na:0:0:444\nZ:Q1LWnIC5TyZdAmIpjJqKibsH0bJ3U=\nR:singleflight.go\na:0:0:444\nZ:Q1lgfts72txX5Ky/fa1Reh+GRgCTI=\nR:singleflight_test.go\na:0:0:444\nZ:Q1YeWYF85COKU0EU8S+4D5SdEAYj4=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/io\nM:0:0:555\nR:byte.go\na:0:0:444\nZ:Q17Z5IijJvR2YSX6makn9ZH6REzyY=\nR:doc.go\na:0:0:444\nZ:Q1o8Zy8qmEj6OnInIvWvu4HW169Vw=\nR:reader.go\na:0:0:444\nZ:Q1Gt7W9zZCaeo2YcX9Xl1T7RbnIo4=\nR:ringbuffer.go\na:0:0:444\nZ:Q1yYGwzjNIGbVvdBcN/c+xm47rW54=\nR:ringbuffer_test.go\na:0:0:444\nZ:Q1rZ0l8eoUGgNn08rKJn/NtH2/+PU=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/logging\nM:0:0:555\nR:logger.go\na:0:0:444\nZ:Q1oim0svCVGhvw8z1UW/lJyIVhI4o=\nR:logger_test.go\na:0:0:444\nZ:Q1CmhffA2Yjt0WTYYm+/5NJ9H+ATs=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/middleware\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1DllnGB51/5212/iej5/32dC/F40=\nR:logging.go\na:0:0:444\nZ:Q1I3V50EU4+FR0joUh3DLEDL9WDbg=\nR:logging_test.go\na:0:0:444\nZ:Q1zOPKH+YqzsIMaFnPQkGBvr4aSrY=\nR:metadata.go\na:0:0:444\nZ:Q15T4PDF4k3hD63MM4LStC1pvFQo0=\nR:metadata_test.go\na:0:0:444\nZ:Q1jEm8gvo7KkF7MMgklNvOUA1Z8kw=\nR:middleware.go\na:0:0:444\nZ:Q1JlMG9uGbyYrkaGONkmCqh/w6msw=\nR:middleware_test.go\na:0:0:444\nZ:Q1tHMJneAjx9oR118SrKTDEPvlT7M=\nR:ordered_group.go\na:0:0:444\nZ:Q1BibraGeegsgtlgjqIzIniWQD/wc=\nR:ordered_group_test.go\na:0:0:444\nZ:Q1vaVqHgO+GU0OsZU8zqZcg7UJftY=\nR:shared_test.go\na:0:0:444\nZ:Q1qc6kWRmhcO8lPgTP8U+C4B8+JQ0=\nR:stack.go\na:0:0:444\nZ:Q1KyZY/wGo0baSGTkCF9kLOIo4j9A=\nR:stack_test.go\na:0:0:444\nZ:Q1tQjf2/Ryy9N0KMWTlqTSQvKzyi4=\nR:stack_values.go\na:0:0:444\nZ:Q1Je2kYVZz2UzNmE5cGVEtpgiT4d0=\nR:stack_values_test.go\na:0:0:444\nZ:Q12K3J4ueybkdiFXTaPA/VaIYkOKo=\nR:step_build.go\na:0:0:444\nZ:Q1HNz0je1CYoOlW3A54vEiK/XwS28=\nR:step_deserialize.go\na:0:0:444\nZ:Q1vI8D6JyzWbmE43BbEBk7ahoGBb4=\nR:step_finalize.go\na:0:0:444\nZ:Q1CcYUbt7FCRGVU2D9PWkZrLn8mkM=\nR:step_initialize.go\na:0:0:444\nZ:Q1E8ycwq6LNW24AaogTnBF0nnFNsw=\nR:step_serialize.go\na:0:0:444\nZ:Q1BbnYtBDf2ipRPJbqcL1Q+GWv5w0=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/ptr\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1LQNOGHFqKEfXSWVu+NyJxkeRzn8=\nR:from_ptr.go\na:0:0:444\nZ:Q1sQQlq4TkG3oQMMRwMw+oV1xjGMg=\nR:gen_scalars.go\na:0:0:444\nZ:Q1G0B1mIUyj5cUpZrxoGNICU4Y/ME=\nR:generate.go\na:0:0:444\nZ:Q1/T9xLbGSKAG0Zf5OEE6+n/VHVkY=\nR:to_ptr.go\na:0:0:444\nZ:Q1XhctHocZYC2rmOtLZV8K9GN43wM=\nR:to_ptr_test.go\na:0:0:444\nZ:Q1GcMRRfXykpS5btzAVolCk416s/k=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/rand\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1Jkkz6Q1KzLK9IscQgeqTi7WY5mc=\nR:rand.go\na:0:0:444\nZ:Q1TalOyl7kKvfzemsCUg/VCj00AyY=\nR:uuid.go\na:0:0:444\nZ:Q1uqll2d/sobcXs++KIibfQdmbnFc=\nR:uuid_test.go\na:0:0:444\nZ:Q1Ohb2d+a3zlQOM/xrMfDDZHh2OVo=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/sync\nM:0:0:555\nR:error.go\na:0:0:444\nZ:Q1KQLyZGHdM7eRMpOn/cUgm0TKXvw=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/testing\nM:0:0:555\nR:bytes.go\na:0:0:444\nZ:Q1y8Ut+hDKuLA4YMwdAVE0a9EwsvA=\nR:doc.go\na:0:0:444\nZ:Q1Q3EWFdWG8AGpU/I6XA81X0L4Rrw=\nR:document.go\na:0:0:444\nZ:Q1M0/2GB7+vDo9vtXWX4GJ0js2xko=\nR:document_test.go\na:0:0:444\nZ:Q1Uhmx52v/sMv6s3/B4H9HkAYVhWs=\nR:errors.go\na:0:0:444\nZ:Q18jonkPesE6ENs3jjtAVrLkpNng0=\nR:reader.go\na:0:0:444\nZ:Q1+PxQD4qwV3ZeHWunyrVIpMmzB9A=\nR:rest.go\na:0:0:444\nZ:Q12EZt/MRleArlVdscd9LhcaEqj3Q=\nR:struct.go\na:0:0:444\nZ:Q1Z2yrjD+TttX2FeeKTy43RF5I7Rc=\nR:struct_test.go\na:0:0:444\nZ:Q1tj4zc3lnCfqcGDiHzhp+Wm8/tJo=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/testing/xml\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1TC659KAHvQHf61NkPKQhqidQ+tE=\nR:sort.go\na:0:0:444\nZ:Q1qvOKi4em6n0mW3UT10S5PXYEA+k=\nR:sort_test.go\na:0:0:444\nZ:Q18vXD6gCYM7XWCXIgowolTRCIebc=\nR:xmlToStruct.go\na:0:0:444\nZ:Q1IdpCE0XteejTGXZhA510lU4QhVA=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/time\nM:0:0:555\nR:time.go\na:0:0:444\nZ:Q1j6cdXthRzc/rYOfvsjsd/udxhPw=\nR:time_test.go\na:0:0:444\nZ:Q1fJtTmqhXdhO7VMTd72+PolkHGEo=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/transport\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/transport/http\nM:0:0:555\nR:checksum_middleware.go\na:0:0:444\nZ:Q1h/1F8b/ijc1RwwNSJadkEyA/6Kw=\nR:checksum_middleware_test.go\na:0:0:444\nZ:Q1q+yl/CJRzX66ElNoCooZqokplao=\nR:client.go\na:0:0:444\nZ:Q1c5QmiGxsL2poAsymGPNx5op1N+o=\nR:client_test.go\na:0:0:444\nZ:Q1b2IVnWaq6NCE+d13avzDykmh9Io=\nR:deserialize_example_test.go\na:0:0:444\nZ:Q1DwgzZXrt3aWG/HmG/Sw6FBSBI8Q=\nR:doc.go\na:0:0:444\nZ:Q1d1rYC17Nru55Zav+YnTNnQMSPL0=\nR:headerlist.go\na:0:0:444\nZ:Q1Pan+D13VMcfFxFCCA8ulXlyGClw=\nR:headerlist_test.go\na:0:0:444\nZ:Q16KRMs3dusbr27YCC8Kjtmgbo1kA=\nR:host.go\na:0:0:444\nZ:Q1howi7QbO94jlOFoo6pSsbxwGPko=\nR:host_test.go\na:0:0:444\nZ:Q15kSqduOKEV8vULTK7+aTOJ4Y+6I=\nR:md5_checksum.go\na:0:0:444\nZ:Q1H0jZ1Nmb+CyInb+tqDyWRWHzHyk=\nR:middleware_close_response_body.go\na:0:0:444\nZ:Q1Bm4XvUmn2JUb2uaSCLO8k4DKIOM=\nR:middleware_content_length.go\na:0:0:444\nZ:Q1gf8vVA2uIB4/gWA6tUSYUrBeQ5s=\nR:middleware_content_length_test.go\na:0:0:444\nZ:Q1nYDcZuilKKaajOw7azpSZybyY5E=\nR:middleware_headers.go\na:0:0:444\nZ:Q1Z9DUv4y19of61cVUOFpFDuBifyc=\nR:middleware_headers_test.go\na:0:0:444\nZ:Q1Yh67WTd59cplLsjivGNf7M0tJHI=\nR:middleware_http_logging.go\na:0:0:444\nZ:Q1+DQOc9Tdr1eaUVWaT6s9aqPXjxs=\nR:middleware_http_logging_test.go\na:0:0:444\nZ:Q1pkZcy/iVJooftqDfi/cZxX+YGiw=\nR:middleware_metadata.go\na:0:0:444\nZ:Q1ocjOOYFrmIZIsMEUdnNI7U5849o=\nR:middleware_min_proto.go\na:0:0:444\nZ:Q1l35pyIoafYfK/95BdAhAH9sxaqE=\nR:request.go\na:0:0:444\nZ:Q1rwvvLNwayz4R4CeO/x+RN5c47MI=\nR:request_test.go\na:0:0:444\nZ:Q1hd86hlF1/+paIQhK/24QawEUOVM=\nR:response.go\na:0:0:444\nZ:Q1cWKMKrBkhA8qpqbj6abus7/cnJA=\nR:response_error_example_test.go\na:0:0:444\nZ:Q1Htu9npwEvs9Gxgbbs9U51YVg384=\nR:serialize_example_test.go\na:0:0:444\nZ:Q1r60Ez6HB+k0hRx6khPB8YyKIhzg=\nR:time.go\na:0:0:444\nZ:Q1jD+zqKSjZfjcmtMGi6dsvZ4sMnA=\nR:url.go\na:0:0:444\nZ:Q1T4uXitT7CVRPM0MrTejvWmn9/L8=\nR:url_test.go\na:0:0:444\nZ:Q1oqoW+oybXh4SGavN9w96n3rQC1E=\nR:user_agent.go\na:0:0:444\nZ:Q1+b3EQkVu/sgZz97vdTLF5d19HUI=\nR:user_agent_test.go\na:0:0:444\nZ:Q1PZ6R/XK3mMm5o0kFJyB+rworfIc=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/transport/http/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/transport/http/internal/io\nM:0:0:555\nR:safe.go\na:0:0:444\nZ:Q12rJVARmU6dNARb00Mnc+Z/2X7jg=\nR:safe_test.go\na:0:0:444\nZ:Q1b4E8GwISIZjNGhW43j/Ac8POKes=\nF:root/go/pkg/mod/github.com/aws/smithy-go@v1.13.3/waiter\nM:0:0:555\nR:logger.go\na:0:0:444\nZ:Q15Kq4x/uLp8ti+0ZDPExDktf1v6I=\nR:waiter.go\na:0:0:444\nZ:Q1AARb8rfxeburRwS8xNw8sUDDkOg=\nR:waiter_test.go\na:0:0:444\nZ:Q1nZ5CSY9l7C34DtmlGBAQ8sX9GTg=\nF:root/go/pkg/mod/github.com/awslabs\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1/FAQcbkuNWtP1hO+1mGWh408o/c=\nR:ecr.go\na:0:0:444\nZ:Q1eVScJ6jrGp+eDup3+PaZovnSgX8=\nR:ecr_test.go\na:0:0:444\nZ:Q1wFAdSTP0bLCMGzq0FpLymKCACkY=\nR:go.mod\na:0:0:444\nZ:Q1TMGQMk8ZyH3oL9XAOLTTkQUkvxM=\nR:go.sum\na:0:0:444\nZ:Q11Fb3v0MnAQPi9EmyxLIJhj7oCHc=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/api\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1nOZCZf3kryXie2oGl9Tu+9U55Kg=\nR:client_test.go\na:0:0:444\nZ:Q18NUpKeYMVC2esKDPefeOgvK2UAQ=\nR:factory.go\na:0:0:444\nZ:Q1IDk3Rx/614/0BMJA/Pr76NiMM+w=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/api/mocks\nM:0:0:555\nR:api_mocks.go\na:0:0:444\nZ:Q1NjGxQHJh2z29fh6i2H81kte5cFk=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/cache\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1Ps+BZGeLMjLqf+Nfpb0+U9cBLRU=\nR:build_test.go\na:0:0:444\nZ:Q1vekNpTsC1V0XjOE2dU/jh38wUYA=\nR:credentials.go\na:0:0:444\nZ:Q13lRhxvVHh5DM6aa3aV3CN3a45xk=\nR:credentials_test.go\na:0:0:444\nZ:Q1/u6zeF5Opj6Rqga99FqsGSlEvoE=\nR:file.go\na:0:0:444\nZ:Q1m8jD91PV3/YwH7lZlMhNcQgU8xU=\nR:file_test.go\na:0:0:444\nZ:Q1YRhFoHj4+EcCisGAkdU8J6I1Xg8=\nR:null.go\na:0:0:444\nZ:Q1zOUtN7AAchiSVVCq7SdGwx6wDH0=\nR:null_test.go\na:0:0:444\nZ:Q1YUD3UQsC6+K8FSTRx3yytfmXg3o=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/cache/mocks\nM:0:0:555\nR:cache_mocks.go\na:0:0:444\nZ:Q1Sm4p4MNzosC6sRyBvKPd6nuHAXU=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/cli\nM:0:0:555\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/cli/docker-credential-ecr-login\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Ac6KN+RdTt+BU2vG7n0k0nNhHd0=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/config\nM:0:0:555\nR:cache_dir.go\na:0:0:444\nZ:Q1bIto28JcXeiSXV8pnxS8yeImt5Q=\nR:log.go\na:0:0:444\nZ:Q10Sb8C+Fqfj9d1w8vYrXChx8T2Do=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/mocks\nM:0:0:555\nR:ecr_mocks.go\na:0:0:444\nZ:Q1hyLEkwumh8wRM37fVMoBHm4NmmI=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q1ykfcvP65BaNBcKHuDPlAOsoFo6A=\nF:root/go/pkg/mod/github.com/awslabs/amazon-ecr-credential-helper/ecr-login@v0.0.0-20220920003936-cd2dbcbbab49/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1p80VuowK3Sg198Afd+BBnEYI+2w=\nF:root/go/pkg/mod/github.com/chrismellard\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1uOuIQPz47A8CLdi7ekdp3qev35k=\nR:.goreleaser.yml\na:0:0:444\nZ:Q17s7yShuI9whTS3QLWAiIvnCEJY0=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:Makefile\na:0:0:444\nZ:Q1ojaDPZgAh6hh8P+IARDXGGyvwQM=\nR:README.md\na:0:0:444\nZ:Q1a0MMonmOYAe/vUnBBcbJbr2z3Zw=\nR:go.mod\na:0:0:444\nZ:Q1YXtxV/ta5tOdElQL3R3u1DZ15aw=\nR:go.sum\na:0:0:444\nZ:Q1YjFynnZmRL5ugL4xGJZuhbRpWY0=\nR:main.go\na:0:0:444\nZ:Q1AtrjoLfXYYQFpsQkU49wsoWFjcI=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/.github/workflows\nM:0:0:555\nR:go.yml\na:0:0:444\nZ:Q1pWf7DM+CHAfp2dZDCt/SkhKLgo8=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/cmd\nM:0:0:555\nR:get.go\na:0:0:444\nZ:Q1i1EyDkoYYj8s+6N2v6bGoRETsV0=\nR:root.go\na:0:0:444\nZ:Q10ao2o8VDbzXhffpRNHcrwXEA+1w=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/hack\nM:0:0:555\nR:generate.sh\na:0:0:444\nZ:Q1kHCce4OgijG/9fpwdf+afRe2+uk=\nR:gofmt.sh\na:0:0:444\nZ:Q1T4tWzAsViuvOHpvwOCWS0n5dwGA=\nR:install_golint.sh\na:0:0:444\nZ:Q1YMsUSjkydlxs+i+XCZQlRp41Jrk=\nR:linter.sh\na:0:0:444\nZ:Q1epkduDR6o1P8rJkIULMnQftxGUM=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/pkg/credhelper\nM:0:0:555\nR:helper.go\na:0:0:444\nZ:Q1XwH19oSS8pkrwdO03Amobu2nJx4=\nR:helper_test.go\na:0:0:444\nZ:Q173/AljseyQBXfjbwlZqT9QaNOLs=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/pkg/registry\nM:0:0:555\nR:const.go\na:0:0:444\nZ:Q1kGyRBCUb5Z+UWOfVJ2M/K3qTthE=\nR:registry.go\na:0:0:444\nZ:Q1iNj2X5p3E5xE2nh/KafN8n5LHsc=\nF:root/go/pkg/mod/github.com/chrismellard/docker-credential-acr-env@v0.0.0-20220327082430-c57b701bfc08/pkg/token\nM:0:0:555\nR:token.go\na:0:0:444\nZ:Q1BzhyLv5U28+6lBqpMqeJ+XEbDnY=\nF:root/go/pkg/mod/github.com/cloudflare\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1utH5OQfe4AdxvdXEVhkJh4Bb3xI=\nR:Makefile\na:0:0:444\nZ:Q13S2psrZrboT0AZYYTiLhP+FBjE8=\nR:README.md\na:0:0:444\nZ:Q1Skvt6MaIMMS1kaSxdU012IMfL9s=\nR:codecov.yml\na:0:0:444\nZ:Q1hgNJVF7Bqf0F21F9tfYuHybMfzo=\nR:doc.go\na:0:0:444\nZ:Q1/Qqrz9Tmb6J5kjw9Tkk7AbuoFLk=\nR:go.mod\na:0:0:444\nZ:Q1oZ5ZmRwzF0Ulnuf1/MLvNkbehOk=\nR:go.sum\na:0:0:444\nZ:Q1YXLU3bsKcX6eNF4vNk4AC8XIZ18=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/.etc\nM:0:0:555\nR:action.awk\na:0:0:444\nZ:Q1HzQg9SHInKmYv7FaQv7i4Jgxm1g=\nR:golangci.yml\na:0:0:444\nZ:Q1kyXj0u4YEcd9Scq2HyhuNITvgnc=\nR:icon.png\na:0:0:444\nZ:Q1Xv6sJ+ZXSOZc/oiNxc5cqN3dn5s=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/.github/workflows\nM:0:0:555\nR:ci-actions.yml\na:0:0:444\nZ:Q1tpVUUZvNAIZVGonLI+JxlNxdKOs=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/blindsign\nM:0:0:555\nR:blindsign.go\na:0:0:444\nZ:Q1/jshrhO1fSdtZz8JHFVjTsElLHQ=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/blindsign/blindrsa\nM:0:0:555\nR:blindrsa.go\na:0:0:444\nZ:Q1mQzChzlfYvSfKYKJ5BwmRtlTlTU=\nR:blindrsa_test.go\na:0:0:444\nZ:Q168YXibX0bjamoH3vSx+oWNLASvU=\nR:pss.go\na:0:0:444\nZ:Q16/QtEAFhAxU/lfaMUkZo2VQ0EoQ=\nR:rsa.go\na:0:0:444\nZ:Q1jLiutqoyCFYrkQfcZm88UvXATbs=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/blindsign/blindrsa/testdata\nM:0:0:555\nR:test_vectors.json\na:0:0:444\nZ:Q1Oj5CR6Qq3aREXf7ln3UolukZcZw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1Wa3zDqhoOqmoLxHj4qiW2+0Mpdc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/csidh\nM:0:0:555\nR:consts.go\na:0:0:444\nZ:Q1JIqOvqrC2mpQRNibyXEIz5ccYNk=\nR:csidh.go\na:0:0:444\nZ:Q1/FI4mFuK+v00Fnu3Hy0mIb8cq8Y=\nR:csidh_test.go\na:0:0:444\nZ:Q12JWN6o7NNVkoEeo3SSBxUbh6MX4=\nR:curve.go\na:0:0:444\nZ:Q1sRfUBH/cYH9MgE8zsKHhZLWk6I8=\nR:curve_test.go\na:0:0:444\nZ:Q1wUzLja9lkm2D/I684cGRlePXGBw=\nR:doc.go\na:0:0:444\nZ:Q1+nPM1VMNNACkmlM1aXUjhhUncWw=\nR:fp511.go\na:0:0:444\nZ:Q1GqiLQKKFVFlI2f4idtVPymE+Yqw=\nR:fp511_amd64.go\na:0:0:444\nZ:Q1sPcJHMWiy0cbgABwhpQjTMUhOg8=\nR:fp511_amd64.s\na:0:0:444\nZ:Q1lu9k4Wj84zA9jku6mEM8bm/L7rI=\nR:fp511_generic.go\na:0:0:444\nZ:Q1agEnM/YZ3NFa0W/I1STikkuUDDI=\nR:fp511_noasm.go\na:0:0:444\nZ:Q1+6fmrqOv29IQ5HcZNqinEjrSmFI=\nR:fp511_test.go\na:0:0:444\nZ:Q1gQ47nENajFV5JYAA/Qsq5h0EjaI=\nR:utils_test.go\na:0:0:444\nZ:Q1JAgG85rxK6SeI7wQLU3BSqgbgnY=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/csidh/testdata\nM:0:0:555\nR:csidh_testvectors.json\na:0:0:444\nZ:Q1gtIg4yjEjc44eb1n6MOaLRPOFLg=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/curve4q\nM:0:0:555\nR:curve4Q.go\na:0:0:444\nZ:Q1U1DBw3MG3GlGjoMN3wQi33bIcPk=\nR:curve4Q_test.go\na:0:0:444\nZ:Q1tDYpcu8YhpQYAIWH5jvRsXn+Yp0=\nR:doc.go\na:0:0:444\nZ:Q1JN4RmZ/W9Pvm3vRMqiXTITeG4Vw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q15p8oc3nISwosWjVNRlI72Ni3NDU=\nR:sidh.go\na:0:0:444\nZ:Q1xyQOxn4TFkLMHYrg+gBygTf/qJY=\nR:sidh_test.go\na:0:0:444\nZ:Q1BaKRu/MgGq4jvBeI/lvwsHzDjlE=\nR:sike.go\na:0:0:444\nZ:Q1iP4yVQCq1ybSQzq7TIx/6HtctGU=\nR:sike_test.go\na:0:0:444\nZ:Q1UwOwG8/GixDoLFIC9vOANKM0H0A=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal/common\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1BcrrUbeW2SDVlaQiZUt1gcviCCE=\nR:params.go\na:0:0:444\nZ:Q1bXmSNf9CV0ljyjENiDMvzSERqfs=\nR:types.go\na:0:0:444\nZ:Q1Ek6Qc8RI1PHPeflY1YHRVYiEJxQ=\nR:utils.go\na:0:0:444\nZ:Q1HCX74zylbwSl0LJv7hqGQ9UyROc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal/p434\nM:0:0:555\nR:arith_amd64.s\na:0:0:444\nZ:Q1g7JOjsRGoV6Bb9kn1CjCiiLVbM4=\nR:arith_amd64_test.go\na:0:0:444\nZ:Q1xzbOtU337QXRb++n5A+3VwhM2+0=\nR:arith_decl.go\na:0:0:444\nZ:Q1SOBxJkDIAmd5tuh1yX4BLfpqOmI=\nR:arith_generic.go\na:0:0:444\nZ:Q1qLce3b1muvHzjyxuqA4Qg1LvFIc=\nR:arith_test.go\na:0:0:444\nZ:Q18+gTTnlzKiNBkcw/eB0yQ+6QdP0=\nR:core.go\na:0:0:444\nZ:Q1Kdb9DDeI691Wah6drEqOGUMr8i8=\nR:curve.go\na:0:0:444\nZ:Q1tNust8wNOlO+AdrGctKZ2pFEkcA=\nR:curve_test.go\na:0:0:444\nZ:Q14Vn5jSH86+b1LKk6EXIKH9qta2I=\nR:fp2.go\na:0:0:444\nZ:Q14C+h/uayTUD3RW3v1EVnWfumZOU=\nR:fp2_test.go\na:0:0:444\nZ:Q1jjrw/Rdg/kD/wRgRQWghb8cOcRM=\nR:params.go\na:0:0:444\nZ:Q1W4wqZz5KDREJ+S0h0uHgqMYCCgA=\nR:params_test.go\na:0:0:444\nZ:Q1VnJ7I6BGqNhQoHMQ7h1snKVmI5M=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal/p503\nM:0:0:555\nR:arith_amd64.s\na:0:0:444\nZ:Q1CAABXLTk4vZw+y5zsSbemmPn1x8=\nR:arith_amd64_test.go\na:0:0:444\nZ:Q1o45HoHMo6goOHp8wv7RKJvmbewE=\nR:arith_arm64.s\na:0:0:444\nZ:Q1QDmTKV5hmE8I0tv4fuH5gKIJm7k=\nR:arith_decl.go\na:0:0:444\nZ:Q1XFSRrfe6WD43ol1Hmp6IR1NKeaE=\nR:arith_generic.go\na:0:0:444\nZ:Q1jMdoj8/xklYUnmzdMPLrLHs4wyE=\nR:arith_test.go\na:0:0:444\nZ:Q1nPqNYTIVsCkL6BcmXTrFnDuq7QI=\nR:core.go\na:0:0:444\nZ:Q1HpH4UMLkpKy22uaq6Q/33BxENYw=\nR:curve.go\na:0:0:444\nZ:Q1UWTEnOnU7X21mFbAu1Hh5b+baxY=\nR:curve_test.go\na:0:0:444\nZ:Q1keDkPpC1Xqo8NYW1MH2KDyNm8Kw=\nR:doc.go\na:0:0:444\nZ:Q1XCeiP82/zm+f5xGtc6+S4KId5II=\nR:fp2.go\na:0:0:444\nZ:Q1cjAKJpDFkhNh28eFml/j6AZvt1I=\nR:fp2_test.go\na:0:0:444\nZ:Q13MxHkz+FoK+qISpDQYJr27d62sw=\nR:params.go\na:0:0:444\nZ:Q1aaY2vcx+8J722BAxruLoWbuyqX0=\nR:params_test.go\na:0:0:444\nZ:Q1/PQOWswlU4opED233ec4gHrooyo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal/p751\nM:0:0:555\nR:arith_amd64.s\na:0:0:444\nZ:Q1hwgvg/mioIodvbPjFFPhQAxFZ7k=\nR:arith_amd64_test.go\na:0:0:444\nZ:Q1xDAZm7MEPTZGZm8irccZkYcCHpo=\nR:arith_arm64.s\na:0:0:444\nZ:Q1l2wMHlXg7X35ZI2Br63nnx7Y+MA=\nR:arith_decl.go\na:0:0:444\nZ:Q13WlcEi4YUUVutlIElkAYnyxywg8=\nR:arith_generic.go\na:0:0:444\nZ:Q1aQ9j7fcVScvFN8zQs0LT+pN1Tw0=\nR:arith_test.go\na:0:0:444\nZ:Q1T1Gc7KnYyvSW+i9ihd+J0l6kbl0=\nR:core.go\na:0:0:444\nZ:Q11yZka7uCiBhScRurPmC6PZG2Qeg=\nR:curve.go\na:0:0:444\nZ:Q1edUmtrhONIx3sjOuu1CLlFKmUBo=\nR:curve_test.go\na:0:0:444\nZ:Q1GwziOpUbJuHmNhzixj4LdW84Y/U=\nR:doc.go\na:0:0:444\nZ:Q1xBUjKvNbmY7IaJXH//TbxT6++38=\nR:fp2.go\na:0:0:444\nZ:Q1Q2W8WjVN1RrvUqx5KAm4qDh2Lsw=\nR:fp2_test.go\na:0:0:444\nZ:Q16ACw/ervzchuiAS9BsRIN50Y9H0=\nR:params.go\na:0:0:444\nZ:Q1Ee220de6bgxL+WPjxFiV9f38Ht8=\nR:params_test.go\na:0:0:444\nZ:Q1zrw6ceN6HvC7Fl/g/2JmlFD30xg=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/internal/templates\nM:0:0:555\nR:arith_decl.gotemp\na:0:0:444\nZ:Q123VNnPm67PYmjjTQbmAOg53SQXQ=\nR:arith_generic.gotemp\na:0:0:444\nZ:Q1SAgbQN6GccpKsEu7itJHDMu/mEU=\nR:arith_test.gotemp\na:0:0:444\nZ:Q1MxFknZGQmryEoLml1aLGuHWr1iU=\nR:core.gotemp\na:0:0:444\nZ:Q1QkWN1iWhMziDZTr0Vy1fSZa9Fac=\nR:curve.gotemp\na:0:0:444\nZ:Q1TolQHneh2J/bHIfgEEEQX+sh7eg=\nR:curve_test.gotemp\na:0:0:444\nZ:Q1hPMOlxHxH+tzuVAJzjDa/Qt3t50=\nR:fp2.gotemp\na:0:0:444\nZ:Q1PFU2JOZgfV4VhW7glVd++8FBWYo=\nR:fp2_test.gotemp\na:0:0:444\nZ:Q1A5xFMK8iTtg3wcMaenxIS4Qc3qE=\nR:gen.go\na:0:0:444\nZ:Q1MlO8MQyAyPyuzu6CplIoBT52bi0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/sidh/testdata\nM:0:0:555\nR:PQCkemKAT_374.rsp\na:0:0:444\nZ:Q1D4VEVCNDA4RvmoZbhJ3VGoWTuZc=\nR:PQCkemKAT_434.rsp\na:0:0:444\nZ:Q14I8i9U8qfwHBX3g6/vhl+HLNoBY=\nR:PQCkemKAT_644.rsp\na:0:0:444\nZ:Q1XWGrdv8yHx6uXxNJF6H6yhb9CrI=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/x25519\nM:0:0:555\nR:curve.go\na:0:0:444\nZ:Q10SY18IumyWcEyzBcCKjDX+d+9wE=\nR:curve_amd64.go\na:0:0:444\nZ:Q1nif53zipQTfiV6WKAp/ky4LfU6o=\nR:curve_amd64.h\na:0:0:444\nZ:Q11iZaue7xcP0akUuVHWRZZ89RUhs=\nR:curve_amd64.s\na:0:0:444\nZ:Q1VBMD9UXYRA0l8BO5L26vCvbn62o=\nR:curve_generic.go\na:0:0:444\nZ:Q1ZWGyulco5tWKWsTRTV54WTZWHXs=\nR:curve_noasm.go\na:0:0:444\nZ:Q1BYxEOAcQfpSeVbxhs5Xovzt/XVY=\nR:curve_test.go\na:0:0:444\nZ:Q1T7e7kv6CjcPsaI2VCxmOYFk6Ki4=\nR:doc.go\na:0:0:444\nZ:Q1AzexFWMMow9Gr1CgLhyutxWjRy0=\nR:key.go\na:0:0:444\nZ:Q1rhWfsWshvlqIacFaGRaJBZRiQq8=\nR:key_test.go\na:0:0:444\nZ:Q1x00Tgbabzbpcps5M+hBgUuwn6Fs=\nR:table.go\na:0:0:444\nZ:Q1RJtpYzNg9dT5D8VBcK015cL9Pwo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/x25519/testdata\nM:0:0:555\nR:rfc7748_kat_test.json\na:0:0:444\nZ:Q1q6R0UP4hoyWbolDerX3QLE1BvX0=\nR:rfc7748_times_test.json\na:0:0:444\nZ:Q1Kryx/R1ECoGJEgiggnM3F+gxDWM=\nR:wycheproof_kat.json\na:0:0:444\nZ:Q1AR5wWnFtrs/fgt3djKEzHo8X9Lo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/x448\nM:0:0:555\nR:curve.go\na:0:0:444\nZ:Q1YwfQzYK2g0f3Kyh7z9EPteQAV1c=\nR:curve_amd64.go\na:0:0:444\nZ:Q1c7ck1BZtqke1e7eIaZcdNqAuU2U=\nR:curve_amd64.h\na:0:0:444\nZ:Q11iZaue7xcP0akUuVHWRZZ89RUhs=\nR:curve_amd64.s\na:0:0:444\nZ:Q18rgGcSEqg/am7lgLLh4iJlgyJXE=\nR:curve_generic.go\na:0:0:444\nZ:Q1UW6AR9UiA2SXFzxJClujxeQU8SQ=\nR:curve_noasm.go\na:0:0:444\nZ:Q1d46Zu3+0hzgBq3V3daRbpSrCOSg=\nR:curve_test.go\na:0:0:444\nZ:Q1BhtZp+ORd7e/gHkSCHf0OfEx6eU=\nR:doc.go\na:0:0:444\nZ:Q18lbjNXjSQx0jbThyxeEmR7vBStw=\nR:key.go\na:0:0:444\nZ:Q12QcQcwec1cwBE9uPW9IKalgcIDk=\nR:key_test.go\na:0:0:444\nZ:Q1/UqCEwC+qissXTMPmxzKbxWDhtk=\nR:table.go\na:0:0:444\nZ:Q1i6wUjzNCzsfQG5b/cRPOG0p+tx8=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/dh/x448/testdata\nM:0:0:555\nR:rfc7748_kat_test.json\na:0:0:444\nZ:Q1xDezWx4ccLGraIA8KtToPpOo1A8=\nR:rfc7748_times_test.json\na:0:0:444\nZ:Q1scZutYoq/9ysDOfHzqXG+GdOuW0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1oaxz/KOmdxwx1rV8GSBTg5CpeYA=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/bls12381\nM:0:0:555\nR:constants.go\na:0:0:444\nZ:Q1N22HnRp/srTO2I8Sxfg7f3YAMms=\nR:doc.go\na:0:0:444\nZ:Q1G7NwMxoCBqDgdRTf6X4TB3vzhiI=\nR:ec2.go\na:0:0:444\nZ:Q1cI4GCuwh24lRjYwJVIAYp/n3K7E=\nR:encoding_test.go\na:0:0:444\nZ:Q11n1PI89dFGbGkOKrBOilcxI/oW0=\nR:g1.go\na:0:0:444\nZ:Q1/Pej4jP7GVaPcKCpvWbAHGw3xog=\nR:g1Isog.go\na:0:0:444\nZ:Q1fb6kxGGPIbe4QMrk3noD6qdvJsg=\nR:g1_test.go\na:0:0:444\nZ:Q1N/7j5AKFSYEnqeT/mQn1YZI25xY=\nR:g2.go\na:0:0:444\nZ:Q1qFxRZNGn32xtCBy+96I2CIET3lc=\nR:g2Isog.go\na:0:0:444\nZ:Q1rC4GvNGmKnED6YwPMB24KyNpTvg=\nR:g2_test.go\na:0:0:444\nZ:Q1ty8AzK7LAX2BdfvZQE8weorWMgU=\nR:gt.go\na:0:0:444\nZ:Q1tYTagaL8m/R6cNf1PL6XEJWe5X0=\nR:gt_test.go\na:0:0:444\nZ:Q19zrIxwTuET0L9pUtQ2GIOUogGZ0=\nR:hash_test.go\na:0:0:444\nZ:Q1tFQR6OugiEt2Tjb+daCvvnWsHgk=\nR:pair.go\na:0:0:444\nZ:Q1YA1JMHRJifMaZ1nbbxZEoeNXAek=\nR:pair_test.go\na:0:0:444\nZ:Q1AqTkZux9Qfb+ByOQoVZ7O1w70Ao=\nR:psi_test.go\na:0:0:444\nZ:Q1NU4J8yAouR4R6M45IYvGAETUARw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/bls12381/ff\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1/APkG66KdkejmQcNZk+nDgYo0g8=\nR:cyclo6.go\na:0:0:444\nZ:Q1jTxSyXVJA0zA1ikf7SJG1QBLAr0=\nR:cyclo6_test.go\na:0:0:444\nZ:Q1IUdVYZYrBxBtDGGwLpdzMZmxXMY=\nR:doc.go\na:0:0:444\nZ:Q1fdYv8g82pWizZ06WEcrvyCdMHK0=\nR:fp.go\na:0:0:444\nZ:Q1jO/EGULPEEW6mrfDlZdDYixzNZY=\nR:fp12.go\na:0:0:444\nZ:Q1oyZOXckTaEzR1gGMUVJBiqdVkiY=\nR:fp12_test.go\na:0:0:444\nZ:Q1gwhyfsV/MomKqwBjOtlI5m8L+pI=\nR:fp12cubic.go\na:0:0:444\nZ:Q1O+uARM0hexz4XrBpniJPh/XVpNo=\nR:fp12cubic_test.go\na:0:0:444\nZ:Q1uPKbFght7DzAUOhfA1vVOa58LHs=\nR:fp2.go\na:0:0:444\nZ:Q1oeMb4GaZDkOs758VwYFsUkYNOfk=\nR:fp2_test.go\na:0:0:444\nZ:Q1T1K11SgSDJkghcL+bpQKTddIeJU=\nR:fp4.go\na:0:0:444\nZ:Q1RRsNQ09gsjx7B56WMnXVFnhgoeU=\nR:fp6.go\na:0:0:444\nZ:Q1jb1KCwyiRQcJUcL2ri+MHNTrPSw=\nR:fp6_test.go\na:0:0:444\nZ:Q1b3+s2HuKNobvHk4ZnKzcnFObQ7U=\nR:fpMont381.go\na:0:0:444\nZ:Q12FTlAkfUcCAwk6Xnsj4en1sQv/g=\nR:fp_test.go\na:0:0:444\nZ:Q1TX+TAwQlaJOwBjBhavtmJS6pcqA=\nR:gen.go\na:0:0:444\nZ:Q1uLtPT68VAGBye9tTs+jxVv/Dwtg=\nR:scMont255.go\na:0:0:444\nZ:Q17f9HxQXoUUiqtGbQAuETvTDp/Ko=\nR:scalar.go\na:0:0:444\nZ:Q1u7OtL8rGmwQ9e/nkbtkBC3hD3CI=\nR:scalar_test.go\na:0:0:444\nZ:Q1jReyz7P/frt3lePXsvxB24Pw1hQ=\nR:uroot.go\na:0:0:444\nZ:Q1BtK3Htf59cKX8TI4lqCYqYD+IS8=\nR:uroot_test.go\na:0:0:444\nZ:Q1h1JsIcX/2+XQFKB/jW3lsUUplpg=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/bls12381/testdata\nM:0:0:555\nR:BLS12381G1_XMD-SHA-256_SSWU_NU_.json\na:0:0:444\nZ:Q1HCi1E9fz+/mgr4oxZrvTrLNwjzQ=\nR:BLS12381G1_XMD-SHA-256_SSWU_RO_.json\na:0:0:444\nZ:Q1RGRv1aM8zSV4+Gwhsz+YkGiy4jQ=\nR:BLS12381G2_XMD-SHA-256_SSWU_NU_.json\na:0:0:444\nZ:Q1rRbdYOq8RTMj9ISkpSXj+kYS2nY=\nR:BLS12381G2_XMD-SHA-256_SSWU_RO_.json\na:0:0:444\nZ:Q107Pn1uq6L3snhzjO83y/eDYae9w=\nR:g1_compressed_valid_test_vectors.dat\na:0:0:444\nZ:Q1Znuffa+pUYj1b0H25hyYXCZAIT4=\nR:g1_uncompressed_valid_test_vectors.dat\na:0:0:444\nZ:Q1XJi1IHJX0lmd29YwZBwP3KGrOf8=\nR:g2_compressed_valid_test_vectors.dat\na:0:0:444\nZ:Q1+fpXUZKJsK97d2p1VqSLmqM3RI4=\nR:g2_uncompressed_valid_test_vectors.dat\na:0:0:444\nZ:Q1cCi5OcB0tFV7Bs6eo0HYrWrgfE4=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/fourq\nM:0:0:555\nR:curve.go\na:0:0:444\nZ:Q1rhnlR7wC0Nt3V2FvdaRwfBjW8nU=\nR:curve_test.go\na:0:0:444\nZ:Q13h9mLa0kM28KIjKKc1AalFyX/BM=\nR:doc.go\na:0:0:444\nZ:Q1qRNX32kwvm3YtlUOGr5X2YO3TIQ=\nR:fp.go\na:0:0:444\nZ:Q1aK/5FDYZ8eDPW2PESO+ajKOlSu4=\nR:fp_amd64.go\na:0:0:444\nZ:Q1LlqZPQtYrfEaihr9KC1steL2bAQ=\nR:fp_amd64.h\na:0:0:444\nZ:Q14io6y4TgtVRLZWWABc7b33o70lE=\nR:fp_amd64.s\na:0:0:444\nZ:Q14C4/Mtlea27cScrcCfjiw9bsq38=\nR:fp_generic.go\na:0:0:444\nZ:Q1jc8nGhq2MuCuKF9bFYA8ielGP3c=\nR:fp_noasm.go\na:0:0:444\nZ:Q1QhG057sFJNySo6puD8xTTH8xTXY=\nR:fp_test.go\na:0:0:444\nZ:Q1S5elhwcwI6NV4rcBu8J109m6oU8=\nR:fq.go\na:0:0:444\nZ:Q1YOBqJZChoX9KBIFDir7cPFbnlkY=\nR:fq_amd64.go\na:0:0:444\nZ:Q1cBLlYk1stjPbvKXSbDI6s4WgTlE=\nR:fq_amd64.h\na:0:0:444\nZ:Q1EWu1W+RnjlWGx/V4pLF3EhT5fcs=\nR:fq_amd64.s\na:0:0:444\nZ:Q1kE4xaidcWND/yL9yMtQrOVHONYY=\nR:fq_generic.go\na:0:0:444\nZ:Q1AuQg1ytEDaeD02r17Jkf9fQ8+N8=\nR:fq_noasm.go\na:0:0:444\nZ:Q1T5IkCVrOeCeOO6F8BuYaCTs6MbA=\nR:fq_test.go\na:0:0:444\nZ:Q1RbjBNkELxvzvykISQt4qtwOu++w=\nR:params.go\na:0:0:444\nZ:Q1URDMoRp8dU74G/YJOvfTrCRV05A=\nR:point.go\na:0:0:444\nZ:Q1R6bfF7sPuRigy0E8QmR+NmDuPPw=\nR:point_amd64.go\na:0:0:444\nZ:Q1gx8k5nhMTlglpgdze6xCeWni/LM=\nR:point_amd64.h\na:0:0:444\nZ:Q1m0igEqXQyw0yTiEZ01dfRfGGZ20=\nR:point_amd64.s\na:0:0:444\nZ:Q1KTsr7j/3CQgxYNrfouEWSDOAXsY=\nR:point_generic.go\na:0:0:444\nZ:Q1A+y0MAaOb/1tmTgKQXXyWHxmjsU=\nR:point_noasm.go\na:0:0:444\nZ:Q1esFGwFK+9J55GMwodj0X+/6q7z4=\nR:point_test.go\na:0:0:444\nZ:Q1qpTmrbH46A3JTBs1McW8GYWWsm4=\nR:tableBase.go\na:0:0:444\nZ:Q18UqiUi9GISd8JBp6gko6D2rlmEY=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/goldilocks\nM:0:0:555\nR:constants.go\na:0:0:444\nZ:Q1wDoxxFpJ7riyvSqe1gW77RSGQK0=\nR:curve.go\na:0:0:444\nZ:Q101wUEda7cWecgPXqfMT93DyRyVs=\nR:curve_test.go\na:0:0:444\nZ:Q1KnY+UrWdzRtIJUlg3K1wfUvQViQ=\nR:isogeny.go\na:0:0:444\nZ:Q10yZzW3euNuR5Q1qAA3xhhu91Q2w=\nR:isogeny_test.go\na:0:0:444\nZ:Q1ymZybYAipGB6DW/56iUP6Z3KJwU=\nR:point.go\na:0:0:444\nZ:Q19tWaeustN59LV5iWVndxayQ9SYI=\nR:point_test.go\na:0:0:444\nZ:Q161+mbLc7FhFVIgtRotMav8Ekmw4=\nR:scalar.go\na:0:0:444\nZ:Q1wVE+t4+09OS9ZaaF2ii40e7/SuA=\nR:scalar_test.go\na:0:0:444\nZ:Q1eJ1/S/RC0Ce2k27Y0BqthCsKU1Y=\nR:twist.go\na:0:0:444\nZ:Q1YrNTFhKoH/ECiUbkU2pJGQUgRv8=\nR:twistPoint.go\na:0:0:444\nZ:Q1O9cCHlrhGLhxhkjozmIqpuTjHps=\nR:twistTables.go\na:0:0:444\nZ:Q1vi79pWlVWmWy8CDBk9tfDlxMW1M=\nR:twist_basemult.go\na:0:0:444\nZ:Q1XWTbLJHSW7SqjEhseyz7nB97Ysc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/ecc/p384\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1fWPIOFP2P0THGM5glV/x4MyqU2Q=\nR:arith.go\na:0:0:444\nZ:Q1G6NLzLxyjTpkUOnd1gOcMikAsSM=\nR:arith_amd64.go\na:0:0:444\nZ:Q14aAkqsj3+HYAHLaAa8O1ygRIlTo=\nR:arith_amd64.s\na:0:0:444\nZ:Q17Yd3UR4L4djRG1UKiIHo2eQW48s=\nR:arith_arm64.s\na:0:0:444\nZ:Q1ti8+3NCL/zc2sUul05NplCg9tJo=\nR:arith_test.go\na:0:0:444\nZ:Q1zlmhyr010XadhnPufYIbfRftnvo=\nR:doc.go\na:0:0:444\nZ:Q1Y0A2ilkkY0Z/HbgXEuUbegw2bKw=\nR:opt_test.go\na:0:0:444\nZ:Q1cxjWeerum83sCjSsKip/2uVs2OA=\nR:p384.go\na:0:0:444\nZ:Q1RAIV8Sc/ebCLIsQRz01gU0dzcEc=\nR:p384_generic.go\na:0:0:444\nZ:Q12hX5UF9GCl0V+PGy22wizmu3CQY=\nR:p384_test.go\na:0:0:444\nZ:Q1ND8rxM23jLgP/HjegqHzVakbLxk=\nR:p384opt.go\na:0:0:444\nZ:Q1V20PILLnHpSNZTJOGAUi+bHqIyk=\nR:point.go\na:0:0:444\nZ:Q1K8s2i5FOh4YBPjUBQLzSEEjuaZc=\nR:point_test.go\na:0:0:444\nZ:Q1t3trS0YjXpqk5V3UCgkvO4tGnPk=\nR:tableBase.go\na:0:0:444\nZ:Q1NcZBuQKG3zxDkPqO2uqW45VIDbs=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/expander\nM:0:0:555\nR:expander.go\na:0:0:444\nZ:Q1tPe5tZz8XiNLKUTohbruyu82aKE=\nR:expander_test.go\na:0:0:444\nZ:Q1waT9DKb5WTaWmBTZgGMpfoKHg7c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/expander/testdata\nM:0:0:555\nR:expand_message_xmd_SHA256_256.json\na:0:0:444\nZ:Q19MtEyPC/yEbwebv8CADsLctktkw=\nR:expand_message_xmd_SHA256_38.json\na:0:0:444\nZ:Q1TkDVhx7tS8gJPXp7yNEPhO1Irm0=\nR:expand_message_xmd_SHA512_38.json\na:0:0:444\nZ:Q1uEugw3s4CbQQ4a0zZwNDJLwNm7w=\nR:expand_message_xof_SHAKE128_256.json\na:0:0:444\nZ:Q1lNMitqymx3a7AlltDvTcqZqwMuI=\nR:expand_message_xof_SHAKE128_36.json\na:0:0:444\nZ:Q1x+9obgcE5uOVYTZb3brKRUOsBQk=\nR:expand_message_xof_SHAKE256_36.json\na:0:0:444\nZ:Q1PNK1QUetXDUoweAEyPXejyHLsNM=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/group\nM:0:0:555\nR:group.go\na:0:0:444\nZ:Q1shxf7ppWrTm1HXDg3Udaxz/Kino=\nR:group_test.go\na:0:0:444\nZ:Q1n51jJSwr5FzUjAg1PM7XAkF/UnU=\nR:hash.go\na:0:0:444\nZ:Q1aNcSqt6+Os+mgzmv4v7FMPMXmjY=\nR:hash_test.go\na:0:0:444\nZ:Q1wsp1DIcJGvgXV5aq64kz4p3mcY4=\nR:ristretto255.go\na:0:0:444\nZ:Q1pIYvBAyN3ymXmLTiCbEfvyD9g/M=\nR:ristretto255_test.go\na:0:0:444\nZ:Q15igQxTa3siA0lb6+2EUnYQMZXS0=\nR:short.go\na:0:0:444\nZ:Q1G2gFOJcWu5vEwSwQgervBmjzEgw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/group/dleq\nM:0:0:555\nR:dleq.go\na:0:0:444\nZ:Q1Fj1YEc/1jNP8YmaYbhhsvCav3YA=\nR:dleq_test.go\na:0:0:444\nZ:Q1acv+bU0mcmd+kxoMeDYq/WTBfys=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/group/testdata\nM:0:0:555\nR:P256_XMD-SHA-256_SSWU_NU_.json\na:0:0:444\nZ:Q1vWPwqH3vU5qKsTXiqS3gGcYS+xA=\nR:P256_XMD-SHA-256_SSWU_RO_.json\na:0:0:444\nZ:Q1LvaoKhajIlo+Den5U7/jMxGftbM=\nR:P384_XMD-SHA-384_SSWU_NU_.json\na:0:0:444\nZ:Q1DY3TK1KaPJQ4Zo7AZJ7OK0LRrak=\nR:P384_XMD-SHA-384_SSWU_RO_.json\na:0:0:444\nZ:Q1JCtmH7g9qAJflSn2LUwO04lqXtI=\nR:P521_XMD-SHA-512_SSWU_NU_.json\na:0:0:444\nZ:Q157DhyC9TBZAUc8Ftow+H5GENR1I=\nR:P521_XMD-SHA-512_SSWU_RO_.json\na:0:0:444\nZ:Q1NxEO0TDLFQu/X+NqStSuxLF2two=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/hpke\nM:0:0:555\nR:aead.go\na:0:0:444\nZ:Q1wARUL3TCxy5ZMqr0jzkIISUD6eA=\nR:aead_test.go\na:0:0:444\nZ:Q1zEh8pgKUCnCpsg8QTNQDwnTIOvE=\nR:algs.go\na:0:0:444\nZ:Q15TJ0lB/j771EkHcv57hRPYZYYXI=\nR:hpke.go\na:0:0:444\nZ:Q1/NxsH4U1lbeeOJ9TzJ+VnVH/Ous=\nR:hpke_test.go\na:0:0:444\nZ:Q16+vBHIjbvXbbRvc8WwsTggIJGB8=\nR:kembase.go\na:0:0:444\nZ:Q1Z0JBgr0OpWM5z1GYgf5EUBWBKTs=\nR:marshal.go\na:0:0:444\nZ:Q1dqI6o+8IKMtFLYG13kZavyJrqwQ=\nR:marshal_test.go\na:0:0:444\nZ:Q1JaDxdRVc3F0ooVRvPuOh30iI/3g=\nR:shortkem.go\na:0:0:444\nZ:Q19K0qg5LUF+IPqUvMZBvZ+gDjU70=\nR:util.go\na:0:0:444\nZ:Q1FvQZ6zV3aXdK/4Cxqbvqi38ZSPo=\nR:vectors_test.go\na:0:0:444\nZ:Q1M4Kq5AN+fDaoHE8Fg6KXFXqNwYo=\nR:xkem.go\na:0:0:444\nZ:Q1iUV24H0edx8KMv4Afx2NXB4QxtU=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/hpke/testdata\nM:0:0:555\nR:vectors_v08_779d028.json\na:0:0:444\nZ:Q1EJaioQoapF39sqKuOxSnqqzXox8=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal/conv\nM:0:0:555\nR:conv.go\na:0:0:444\nZ:Q1AcCz1lY+treYUzJ36TSERzdbDAQ=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal/nist\nM:0:0:555\nR:drbg.go\na:0:0:444\nZ:Q1W4tEovnt9cuGMW2sVQqMYzjpEqo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal/sha3\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1c7JmqTIb/nXFbxTYXS3To1KeUYs=\nR:hashes.go\na:0:0:444\nZ:Q16wAq6gLcLdwYhSjYtSgyanww844=\nR:keccakf.go\na:0:0:444\nZ:Q1mDp9EO82I3mF1BJU3P+S/DPtWNE=\nR:keccakf_amd64.go\na:0:0:444\nZ:Q19i1encgfOZhG8Wx/TV+O6tXYKzE=\nR:keccakf_amd64.s\na:0:0:444\nZ:Q1cPIE0X/B3w5h/Tfm4su/w2Y8qHY=\nR:rc.go\na:0:0:444\nZ:Q1qqKo4jpfZnAsuYWvsrMR7ofe6QY=\nR:sha3.go\na:0:0:444\nZ:Q1n3pqQmOXcEqtbGila8C98Ij5A64=\nR:sha3_s390x.s\na:0:0:444\nZ:Q1ZmqtscPNNFnWRtyuOCQq8ngjql4=\nR:sha3_test.go\na:0:0:444\nZ:Q1GqaYhtUTBmw4NE0kHYCNfcJBofM=\nR:shake.go\na:0:0:444\nZ:Q1ncgEgs6pjAXP2Vh6cXbiJRo/PDU=\nR:xor.go\na:0:0:444\nZ:Q1ROjHYW380VgLlPbZT2QDFfURB28=\nR:xor_generic.go\na:0:0:444\nZ:Q1q+AdNNGb37KkuQ6uLso88F7JxIk=\nR:xor_unaligned.go\na:0:0:444\nZ:Q1yke4Zg/1TJbczSgUKMv2NTyO2A4=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal/sha3/testdata\nM:0:0:555\nR:keccakKats.json.deflate\na:0:0:444\nZ:Q19od8EUnt4CCFGmOz4dl0Kdo2qkQ=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/internal/test\nM:0:0:555\nR:test.go\na:0:0:444\nZ:Q1yuczWVoVJKd3Ll0n3zUutGx/nZw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem\nM:0:0:555\nR:kem.go\na:0:0:444\nZ:Q1AlQjuJHkNpWKqDy+1ZLKsyH4KQQ=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/frodo\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q12fFsv0QDoI1V0ML8Z8pfUF7m1Xo=\nR:kat_test.go\na:0:0:444\nZ:Q1vV0HXhIDCd56RaFjVCwnzwsMp+U=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/frodo/frodo640shake\nM:0:0:555\nR:frodo.go\na:0:0:444\nZ:Q1qFaNu9FscOIAzG+dnOcA8ULtKro=\nR:matrix_shake.go\na:0:0:444\nZ:Q1lN8oUF6FPRZ0cTJMRlt/ZRUZZ28=\nR:noise.go\na:0:0:444\nZ:Q1OYBK/vcjYT64TNupAHxlKvDOz8g=\nR:util.go\na:0:0:444\nZ:Q14EVjiaokUCVcILaFTK5GUXIMok0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/hybrid\nM:0:0:555\nR:hybrid.go\na:0:0:444\nZ:Q1UTbjEwSb8JCgZyvyNDX37xrlqM0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/kyber\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1W17Wf0yKZDhZzCr7D8mBiRT5zp0=\nR:gen.go\na:0:0:444\nZ:Q1vPO4JFv5NFkwK+7pY8e9kFWLgEE=\nR:kat_test.go\na:0:0:444\nZ:Q18UiAsgXCAWuQAgxpQQveTPS2f3g=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/kyber/kyber1024\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1A3TZsFGOXp4OY7uHGWe6hJeamzA=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/kyber/kyber512\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1JyxB33S0IQM5HOFARJALbn8U78g=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/kyber/kyber768\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1GaEI7Y7MwdsMAp3XvYehzQiqP3g=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/kyber/templates\nM:0:0:555\nR:pkg.templ.go\na:0:0:444\nZ:Q18yESiT0kOe3WS5KVvdH9Q42mdsw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/schemes\nM:0:0:555\nR:schemes.go\na:0:0:444\nZ:Q1+yEsCiAli+H8vpns7nf7livJQGU=\nR:schemes_test.go\na:0:0:444\nZ:Q1xwQdxgQ09ufKkAbsbDwPXivcPy0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/sike\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1XURZQjvg1Tfkry0rBCjWf2y2Vsw=\nR:gen.go\na:0:0:444\nZ:Q1GrH4G9nnrgtTTvGXGvhBS3+142c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/sike/sikep434\nM:0:0:555\nR:sike.go\na:0:0:444\nZ:Q1+NKNREJrIwgczLboxyECC037EW4=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/sike/sikep503\nM:0:0:555\nR:sike.go\na:0:0:444\nZ:Q1JhGVD/Ayz2K6qEly3WpnrqgiTVI=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/sike/sikep751\nM:0:0:555\nR:sike.go\na:0:0:444\nZ:Q1YfoYJNjMiB+83+eLqBwDw7LdLGM=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/kem/sike/templates\nM:0:0:555\nR:pkg.templ.go\na:0:0:444\nZ:Q1q/g0SA3+DLKP9mXTIrLuU+g3LLc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/math\nM:0:0:555\nR:wnaf.go\na:0:0:444\nZ:Q1kgxAlSKHsXeHq6hsierJ2T+K92g=\nR:wnaf_test.go\na:0:0:444\nZ:Q16siHW8MAPM/IOKYNnHIWllyKAvo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/math/fp25519\nM:0:0:555\nR:fp.go\na:0:0:444\nZ:Q1h64Ujb2S2fOgSSd77EppqG2t6Ig=\nR:fp_amd64.go\na:0:0:444\nZ:Q1fnN3+GFT98ZZOFA+rGEB4O0oxFc=\nR:fp_amd64.h\na:0:0:444\nZ:Q1FNZfCBj9qhbR45+YxrJanpVpq+I=\nR:fp_amd64.s\na:0:0:444\nZ:Q1z+NSombXVlksDuj7Sq2bP1Jwz+g=\nR:fp_generic.go\na:0:0:444\nZ:Q1tWe3rj072FOgVmqC3bqknV+LTvs=\nR:fp_noasm.go\na:0:0:444\nZ:Q1nYnOmYUOvF+T9qg32J/JxihONEQ=\nR:fp_test.go\na:0:0:444\nZ:Q11fDh17wIaoBnP28weoczJLw60Ic=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/math/fp448\nM:0:0:555\nR:edgecases_test.go\na:0:0:444\nZ:Q1XV7Tl6jVaaa6k7V26JRevZa0LqE=\nR:fp.go\na:0:0:444\nZ:Q16QMgGIz6900xMMFhlsCfBFjChGg=\nR:fp_amd64.go\na:0:0:444\nZ:Q1nlemMzxFZENEswmDv2KWcDEPYi8=\nR:fp_amd64.h\na:0:0:444\nZ:Q1oQQ8FrieltFO+tfyrZNyWdrdvvw=\nR:fp_amd64.s\na:0:0:444\nZ:Q133UhIkxkPF9ygVCEdyfX7QmfS5g=\nR:fp_generic.go\na:0:0:444\nZ:Q1qASbbQqEyWw35Vrn6IjdZW22LpQ=\nR:fp_noasm.go\na:0:0:444\nZ:Q1Bcf933NOpqxb+yT0ULvsHs7PF7o=\nR:fp_test.go\na:0:0:444\nZ:Q1NZ+nKKAL+p5vjAVODdO3UtJBXTQ=\nR:fuzzer.go\na:0:0:444\nZ:Q1lQSPzR6U1SJJLwBEO9f27rS5mbc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/math/mlsbset\nM:0:0:555\nR:mlsbset.go\na:0:0:444\nZ:Q19Vbscd9ksy/Vbqiu5c3c1r8RYFg=\nR:mlsbset_test.go\na:0:0:444\nZ:Q1Lksl+cY9uwF7dnJO5oU/IkJiLs8=\nR:power.go\na:0:0:444\nZ:Q1Hx4hPSO1nl0dQEEIm6/V0G2WVYI=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/oprf\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1Yozzp8thoy//idpZpbfwtgUnEMo=\nR:keys.go\na:0:0:444\nZ:Q1oiJCZAMFU6ZtPoQU77Dcp58CHpY=\nR:oprf.go\na:0:0:444\nZ:Q1luseIAVqYM7G3zVYoXpFGQmO/HI=\nR:oprf_test.go\na:0:0:444\nZ:Q1ipfKDN/vzwwdjeDUN2Q0vIf3zMk=\nR:server.go\na:0:0:444\nZ:Q1XSlwcTqnNkskzrsqLF2bv5iOtM8=\nR:vectors_test.go\na:0:0:444\nZ:Q1Lfe/sgtXLORwxEoos8Rll3Hu3O4=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/oprf/testdata\nM:0:0:555\nR:allVectors.json\na:0:0:444\nZ:Q1MbJP6BamseTThW26U5fbY/YjMg0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1oQ+cfkZs4kYeKlZNExvEU1f2acc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q1a02y2MC7vcnQguWaRMBRWGhO004=\nR:kyber.go\na:0:0:444\nZ:Q1lpetsshkx1lGuREqoeXHuPY0w3E=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/internal/common\nM:0:0:555\nR:amd64.go\na:0:0:444\nZ:Q1k6W9NP8i3b6InqvChsxIRJGNAr0=\nR:amd64.s\na:0:0:444\nZ:Q1p2qeHXj2Y8CqppIi2Vk6eucaEbY=\nR:field.go\na:0:0:444\nZ:Q1PaWay7g5PcgfJRXKNIObw6Snujk=\nR:field_test.go\na:0:0:444\nZ:Q120E0BAQlXxMioBYzsoWAZr/zksE=\nR:generic.go\na:0:0:444\nZ:Q1RzSH03J5ga6S8cJq7WfbonZM15c=\nR:ntt.go\na:0:0:444\nZ:Q1Bcxd2Z14q/y2Y+DGr1JxDTOUuXE=\nR:ntt_test.go\na:0:0:444\nZ:Q1ecYRj+exSgnQSkU55XnSCRGXiNQ=\nR:params.go\na:0:0:444\nZ:Q1lFmmSSLMeufWwdrRWtZKHQyNvXs=\nR:poly.go\na:0:0:444\nZ:Q12/EDNdBt3tpoVDALYLN/J8b3B/E=\nR:poly_test.go\na:0:0:444\nZ:Q1/3xmR5M/4V5AKcZyMG0/VqhdUmU=\nR:sample.go\na:0:0:444\nZ:Q1JnGeDzy+hIv2oKQnBZWew0Hd82Y=\nR:sample_test.go\na:0:0:444\nZ:Q1z+Y3XqfMVNjMKOywmEQlaahVTlw=\nR:stubs_amd64.go\na:0:0:444\nZ:Q1jbML3NsTv9nihR4XVxxP8CgarSM=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/internal/common/params\nM:0:0:555\nR:params.go\na:0:0:444\nZ:Q1cs1Yw0lWN/uumnPwRLSGTOxR4MM=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber1024\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1GA3Xt9hCvQFKTht0YLU2zNN//Ro=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber1024/internal\nM:0:0:555\nR:cpapke.go\na:0:0:444\nZ:Q1cTBv+9mgbphIP0XoeEkKQgS6r9k=\nR:cpapke_test.go\na:0:0:444\nZ:Q1m5CSzGdOkDhOl4dhQZkuTOFpgqA=\nR:mat.go\na:0:0:444\nZ:Q1npwHrs6VJ2WPRoOUwLmVAw7q448=\nR:params.go\na:0:0:444\nZ:Q1uUz4pR6ztl8fT2gSBwhZJ9CWQG8=\nR:vec.go\na:0:0:444\nZ:Q1wC4tO4SHFlhABJmBzmgDj/qYFOs=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber512\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1VozCsuqCtI5N3CCaN5i4bzkEeK4=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber512/internal\nM:0:0:555\nR:cpapke.go\na:0:0:444\nZ:Q1V6vpthbBASBe7GzEr9iVqg2jJw0=\nR:cpapke_test.go\na:0:0:444\nZ:Q1KHgQkETJDbV91nlnMCvVbemHn18=\nR:mat.go\na:0:0:444\nZ:Q19/C5MFJ28ITvQ0bM0gPCLnk5q6k=\nR:params.go\na:0:0:444\nZ:Q1KZAr6hNZid7T3djX6Yhy1VApylA=\nR:vec.go\na:0:0:444\nZ:Q1DO/M2dKQ8GYYbHDXfNOX1YL/vb8=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber768\nM:0:0:555\nR:kyber.go\na:0:0:444\nZ:Q1mMKx5uZ7ZMyo3BHZ5pMZap+RsIY=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/kyber768/internal\nM:0:0:555\nR:cpapke.go\na:0:0:444\nZ:Q1cTBv+9mgbphIP0XoeEkKQgS6r9k=\nR:cpapke_test.go\na:0:0:444\nZ:Q1m5CSzGdOkDhOl4dhQZkuTOFpgqA=\nR:mat.go\na:0:0:444\nZ:Q1npwHrs6VJ2WPRoOUwLmVAw7q448=\nR:params.go\na:0:0:444\nZ:Q1+bd6rQBtcai34UAh/fhmw8FFW68=\nR:vec.go\na:0:0:444\nZ:Q1wC4tO4SHFlhABJmBzmgDj/qYFOs=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pke/kyber/templates\nM:0:0:555\nR:params.templ.go\na:0:0:444\nZ:Q1pwfK5cV7jk6cF2ov8qs+u8/uHU0=\nR:pkg.templ.go\na:0:0:444\nZ:Q1RsS/yvqahzQsodNRGf3UlwwWAqU=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/pki\nM:0:0:555\nR:pki.go\na:0:0:444\nZ:Q1PKJPmA+uqw7iM6Q5ZOEQHsRpnUo=\nR:pki_test.go\na:0:0:444\nZ:Q1uboFKvt5SJwJRprmq2b8Txyn584=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign\nM:0:0:555\nR:sign.go\na:0:0:444\nZ:Q1fvWtq/Q0kP/ATZUqXonvCVpeLaM=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1IpwF9APnI0J3wLNo280tKweCyWU=\nR:dilithium_test.go\na:0:0:444\nZ:Q19L5V4Mz23W6uoSdoXpRreSFDHns=\nR:example_test.go\na:0:0:444\nZ:Q11rh3oRi+dHiLmWNdFEupLpVJlC8=\nR:gen.go\na:0:0:444\nZ:Q1vK/JVHkcL39EDkU2/n4SqhfDGxY=\nR:kat_test.go\na:0:0:444\nZ:Q1zTDjc2psALThNPSw/2zp6XKClsY=\nR:mode2.go\na:0:0:444\nZ:Q1+MeFPe+4i/5c6fBWyXCqgXj0t4U=\nR:mode2aes.go\na:0:0:444\nZ:Q1yMB4v/MXMrlsFSxDaMwyNUP35oY=\nR:mode3.go\na:0:0:444\nZ:Q1H6TFciW4K1mNqUFq6jqQMjEVCt4=\nR:mode3aes.go\na:0:0:444\nZ:Q12rAf0r37YQe1mGz84/VB8C6HOxg=\nR:mode5.go\na:0:0:444\nZ:Q1hSvzL5DTN26oIXeGYZfvmaaZ2mk=\nR:mode5aes.go\na:0:0:444\nZ:Q1iHshOOjxpCdISZfysOKQihshdc0=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/internal/common\nM:0:0:555\nR:aes.go\na:0:0:444\nZ:Q1FS8Fhhl2RoqzoSQzsLrq8HlZL2E=\nR:amd64.go\na:0:0:444\nZ:Q1RHzrqFl3dFTe08MpqsNiS/sB+H4=\nR:amd64.s\na:0:0:444\nZ:Q1OMowUwfUP4uxELk9kzIYzXMFPsg=\nR:field.go\na:0:0:444\nZ:Q18NXQpCuyJo5m/b3CHGSiYAdqpjc=\nR:field_test.go\na:0:0:444\nZ:Q1So3cImr79PRsk2503xFAHwCTO+g=\nR:generic.go\na:0:0:444\nZ:Q1OsMTSQHbX5ZjlNgNb16wqd6kIb4=\nR:ntt.go\na:0:0:444\nZ:Q1aT3MaFEW3yBfjaPF9t8uaGrka5g=\nR:ntt_test.go\na:0:0:444\nZ:Q1v3EdlNjNYwycfuzO8w+pBNdXDPc=\nR:pack.go\na:0:0:444\nZ:Q1AyUxy+PwQcJRUVBQLIAOXmXbNVM=\nR:pack_test.go\na:0:0:444\nZ:Q1Nak8xIVXTz/aoViTLcvdHB7pURg=\nR:params.go\na:0:0:444\nZ:Q1ulxun0zkX9fe4i4GAfGwMmEVwAI=\nR:poly.go\na:0:0:444\nZ:Q1Upu+rwR5S8JhEvGIrUjajZVkHfc=\nR:poly_test.go\na:0:0:444\nZ:Q15g9XVbr9Q1kmKCJ/MnF3QvJPXBU=\nR:stubs_amd64.go\na:0:0:444\nZ:Q1XlQqinjufqpqhVRjHCeVCGHtQ8M=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/internal/common/params\nM:0:0:555\nR:params.go\na:0:0:444\nZ:Q1tpnK4vZNe0g8BANiodgyMR38v6k=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode2\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1y5iUYTtxDgQ0e7kgTuGkPdl0YqE=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode2/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1yXH97Yf9TDunyfgegr3JmoBzK+c=\nR:dilithium_test.go\na:0:0:444\nZ:Q1ab0WXG6LX00zV4UqEJLqkw8OYCA=\nR:mat.go\na:0:0:444\nZ:Q1N9W+bs2PrBP8Ssz1QRaUJpb9VLg=\nR:pack.go\na:0:0:444\nZ:Q1QDVD4yYUmvB/MyG6sR88vDm4QVw=\nR:pack_test.go\na:0:0:444\nZ:Q165z4dSdD/NOSAYB+OnqcBKV+474=\nR:params.go\na:0:0:444\nZ:Q1DeJoHD7IRKMCQNe7wWSp103EBbw=\nR:params_test.go\na:0:0:444\nZ:Q1j/C+Z7j1diDRIFGkiemU0zw/lAg=\nR:rounding.go\na:0:0:444\nZ:Q1X9mTk0rgwlaKXZee4OXAqXUH1TM=\nR:rounding_test.go\na:0:0:444\nZ:Q1IorDByEL3Q1RWEfbR9ImvpHPAtw=\nR:sample.go\na:0:0:444\nZ:Q1Ay9nZAUl3MlCcpDO8zRj7+IrcRs=\nR:sample_test.go\na:0:0:444\nZ:Q1j6IEEyx7wg4yLeLpZvsybHoGKJc=\nR:vec.go\na:0:0:444\nZ:Q1jb8MHXhbelS3vFmrYPr/LL8vb0c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode2aes\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q17kw4dMcfiwPtmZJFCYGdx+D/ovc=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode2aes/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1yXH97Yf9TDunyfgegr3JmoBzK+c=\nR:dilithium_test.go\na:0:0:444\nZ:Q1ab0WXG6LX00zV4UqEJLqkw8OYCA=\nR:mat.go\na:0:0:444\nZ:Q1N9W+bs2PrBP8Ssz1QRaUJpb9VLg=\nR:pack.go\na:0:0:444\nZ:Q1QDVD4yYUmvB/MyG6sR88vDm4QVw=\nR:pack_test.go\na:0:0:444\nZ:Q165z4dSdD/NOSAYB+OnqcBKV+474=\nR:params.go\na:0:0:444\nZ:Q158CmJeRnwPt26UovrtOelhuZwc8=\nR:params_test.go\na:0:0:444\nZ:Q19AYslrm40l0DKl7kspFyrvTbln0=\nR:rounding.go\na:0:0:444\nZ:Q1X9mTk0rgwlaKXZee4OXAqXUH1TM=\nR:rounding_test.go\na:0:0:444\nZ:Q1IorDByEL3Q1RWEfbR9ImvpHPAtw=\nR:sample.go\na:0:0:444\nZ:Q1Ay9nZAUl3MlCcpDO8zRj7+IrcRs=\nR:sample_test.go\na:0:0:444\nZ:Q1j6IEEyx7wg4yLeLpZvsybHoGKJc=\nR:vec.go\na:0:0:444\nZ:Q1jb8MHXhbelS3vFmrYPr/LL8vb0c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode3\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1Qq1Ep6A9W30cK5cYc22jT9nh/9E=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode3/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1szhxLetrmuvCjaByM9NJJqfSDec=\nR:dilithium_test.go\na:0:0:444\nZ:Q1M1WH5JEEFV7nAHnrCEFv7cWCC/E=\nR:mat.go\na:0:0:444\nZ:Q1Yx/e/OfbgedJ3V2JIyu8tpHNrBY=\nR:pack.go\na:0:0:444\nZ:Q1rG++ba0aNlpns508Jscht50zskY=\nR:pack_test.go\na:0:0:444\nZ:Q1RCh0pgMqpZJm9jW1U4LJ6ljugNs=\nR:params.go\na:0:0:444\nZ:Q1F2vYwZoh0x1nEfur4er5GPa41Zk=\nR:params_test.go\na:0:0:444\nZ:Q11RhR6qOyCoWsKM4LQQwxqIsrFd8=\nR:rounding.go\na:0:0:444\nZ:Q1CFYkQC3EPMplcfTv28tbllt/TtA=\nR:rounding_test.go\na:0:0:444\nZ:Q1oj3J7fwfY3cKicA02CAVs2NwYzs=\nR:sample.go\na:0:0:444\nZ:Q1IyOOTsGEzyuvcKGHUrZv61WovUo=\nR:sample_test.go\na:0:0:444\nZ:Q1IH0qQsvxRFFJUmLJFL68l58WQHg=\nR:vec.go\na:0:0:444\nZ:Q18rGBYPSD73p7VNkIPJ3R7B+rd7Q=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode3aes\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1/ASRZG6BYuP2Lv2cM2Bf2CKfiXo=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode3aes/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1yXH97Yf9TDunyfgegr3JmoBzK+c=\nR:dilithium_test.go\na:0:0:444\nZ:Q1ab0WXG6LX00zV4UqEJLqkw8OYCA=\nR:mat.go\na:0:0:444\nZ:Q1N9W+bs2PrBP8Ssz1QRaUJpb9VLg=\nR:pack.go\na:0:0:444\nZ:Q1QDVD4yYUmvB/MyG6sR88vDm4QVw=\nR:pack_test.go\na:0:0:444\nZ:Q165z4dSdD/NOSAYB+OnqcBKV+474=\nR:params.go\na:0:0:444\nZ:Q1k5fB+oPGXI1kUr37VBcHrg9Ut5Y=\nR:params_test.go\na:0:0:444\nZ:Q1VfnVjmajf0wQWTiSU3i3DpSLxkk=\nR:rounding.go\na:0:0:444\nZ:Q1X9mTk0rgwlaKXZee4OXAqXUH1TM=\nR:rounding_test.go\na:0:0:444\nZ:Q1IorDByEL3Q1RWEfbR9ImvpHPAtw=\nR:sample.go\na:0:0:444\nZ:Q1Ay9nZAUl3MlCcpDO8zRj7+IrcRs=\nR:sample_test.go\na:0:0:444\nZ:Q1j6IEEyx7wg4yLeLpZvsybHoGKJc=\nR:vec.go\na:0:0:444\nZ:Q1jb8MHXhbelS3vFmrYPr/LL8vb0c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode5\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1nCGEhrtl88Hi7P/vrH4atqY4DXI=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode5/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1yXH97Yf9TDunyfgegr3JmoBzK+c=\nR:dilithium_test.go\na:0:0:444\nZ:Q1ab0WXG6LX00zV4UqEJLqkw8OYCA=\nR:mat.go\na:0:0:444\nZ:Q1N9W+bs2PrBP8Ssz1QRaUJpb9VLg=\nR:pack.go\na:0:0:444\nZ:Q1QDVD4yYUmvB/MyG6sR88vDm4QVw=\nR:pack_test.go\na:0:0:444\nZ:Q165z4dSdD/NOSAYB+OnqcBKV+474=\nR:params.go\na:0:0:444\nZ:Q11FxjHCXQ2VfFaTElwTgrr/PhDNI=\nR:params_test.go\na:0:0:444\nZ:Q1QDQKRXWNv/O8hmt2vqnnt0Gh7C0=\nR:rounding.go\na:0:0:444\nZ:Q1X9mTk0rgwlaKXZee4OXAqXUH1TM=\nR:rounding_test.go\na:0:0:444\nZ:Q1IorDByEL3Q1RWEfbR9ImvpHPAtw=\nR:sample.go\na:0:0:444\nZ:Q1Ay9nZAUl3MlCcpDO8zRj7+IrcRs=\nR:sample_test.go\na:0:0:444\nZ:Q1j6IEEyx7wg4yLeLpZvsybHoGKJc=\nR:vec.go\na:0:0:444\nZ:Q1jb8MHXhbelS3vFmrYPr/LL8vb0c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode5aes\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1NvEmiYHEfFU9Q7HPz7UTbgZLa5Y=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/mode5aes/internal\nM:0:0:555\nR:dilithium.go\na:0:0:444\nZ:Q1yXH97Yf9TDunyfgegr3JmoBzK+c=\nR:dilithium_test.go\na:0:0:444\nZ:Q1ab0WXG6LX00zV4UqEJLqkw8OYCA=\nR:mat.go\na:0:0:444\nZ:Q1N9W+bs2PrBP8Ssz1QRaUJpb9VLg=\nR:pack.go\na:0:0:444\nZ:Q1QDVD4yYUmvB/MyG6sR88vDm4QVw=\nR:pack_test.go\na:0:0:444\nZ:Q165z4dSdD/NOSAYB+OnqcBKV+474=\nR:params.go\na:0:0:444\nZ:Q1IjMRYo4vTHtr/YaSYjCQL8lXP68=\nR:params_test.go\na:0:0:444\nZ:Q1cSbiOyFznluA3RyrktB4sq7bCsQ=\nR:rounding.go\na:0:0:444\nZ:Q1X9mTk0rgwlaKXZee4OXAqXUH1TM=\nR:rounding_test.go\na:0:0:444\nZ:Q1IorDByEL3Q1RWEfbR9ImvpHPAtw=\nR:sample.go\na:0:0:444\nZ:Q1Ay9nZAUl3MlCcpDO8zRj7+IrcRs=\nR:sample_test.go\na:0:0:444\nZ:Q1j6IEEyx7wg4yLeLpZvsybHoGKJc=\nR:vec.go\na:0:0:444\nZ:Q1jb8MHXhbelS3vFmrYPr/LL8vb0c=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/dilithium/templates\nM:0:0:555\nR:mode.templ.go\na:0:0:444\nZ:Q15NDNy51y9lYqPi3NjrX8A7PYAYE=\nR:modePkg.templ.go\na:0:0:444\nZ:Q1/7NEocN61ezFK6YtlhEVYme7BNE=\nR:params.templ.go\na:0:0:444\nZ:Q1KeDTnON9IrhwIfU4l1+J+wTuTuw=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/ed25519\nM:0:0:555\nR:ed25519.go\na:0:0:444\nZ:Q1kUPbLyXJvgHRdnlR08sb3zdSZBw=\nR:ed25519_test.go\na:0:0:444\nZ:Q1CuZk+5HFhTAHZ9jfirJDQCt/I+s=\nR:extra_test.go\na:0:0:444\nZ:Q1mvMuUQdz+LayMkCUjzS0pXMgxM4=\nR:modular.go\na:0:0:444\nZ:Q1MtQEEnxHICifDsYL6yyXkCyNjss=\nR:modular_test.go\na:0:0:444\nZ:Q1ImE3SzWE3GXlhksqIxwWlg7lceY=\nR:mult.go\na:0:0:444\nZ:Q1tu3e1obe2yzysBFjpS/6NzfUT/8=\nR:point.go\na:0:0:444\nZ:Q1p1EElFIkTlddLf79I+0Jg22ok+A=\nR:point_test.go\na:0:0:444\nZ:Q1HcTjqfohRedIIZAKZhyyEDJ+fTY=\nR:pubkey.go\na:0:0:444\nZ:Q1bWUiddq2lf28b42s7VZzWuVEdZw=\nR:pubkey112.go\na:0:0:444\nZ:Q1p8H3uyOXW5C7kUZZYPt3bi/v/fE=\nR:rfc8032_test.go\na:0:0:444\nZ:Q1saHMNoSl+aUiSBCfWoEe4D88ba0=\nR:signapi.go\na:0:0:444\nZ:Q1lxLqX8eoB5Sg4vDgLDsUGphOUP8=\nR:tables.go\na:0:0:444\nZ:Q155zVyZnwuBN8InIo1tghWGi8Thg=\nR:wycheproof_test.go\na:0:0:444\nZ:Q1TOHueO4TPb5YXVpZLOph4GJK8xU=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/ed25519/testdata\nM:0:0:555\nR:sign.input.zip\na:0:0:444\nZ:Q1L28MS3y2yUGvRFTGngiBCUuAkBY=\nR:wycheproof_Ed25519.json\na:0:0:444\nZ:Q1StKF/PzoVnMjLgQqTG2DxRFNDoE=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/ed448\nM:0:0:555\nR:ed448.go\na:0:0:444\nZ:Q1Rf2TYuWVM0BXFSm2YljqWAvsKMU=\nR:ed448_test.go\na:0:0:444\nZ:Q1ipEasGIoZTjrJbk1l081EEUUflc=\nR:rfc8032_test.go\na:0:0:444\nZ:Q1PRd9HtKvbkwuGc3VivLSHvQK2bU=\nR:signapi.go\na:0:0:444\nZ:Q1DkTDEUVwASdtoHK/VzCocVfpcks=\nR:wycheproof_test.go\na:0:0:444\nZ:Q12IKkvwvFIjae4uGsAF/vyMOwipQ=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/ed448/testdata\nM:0:0:555\nR:wycheproof_Ed448.json\na:0:0:444\nZ:Q1aRyC7DCRB9qddg0YzV+7JW/uRrk=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/eddilithium2\nM:0:0:555\nR:eddilithium.go\na:0:0:444\nZ:Q11baImjADaUazRHnKX6T9Cj+KnVU=\nR:eddilithium_test.go\na:0:0:444\nZ:Q1ai0c1q+HhsHekh0cOLN2X2fPJPk=\nR:example_test.go\na:0:0:444\nZ:Q11OOW1HVXnzGqDvH1SvcifcSQzvA=\nR:signapi.go\na:0:0:444\nZ:Q1JSW8oE43poJRys6R1GK2SIONzW8=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/eddilithium3\nM:0:0:555\nR:eddilithium.go\na:0:0:444\nZ:Q14VXe7U+sW3vpzuO4j4dc+HT4oeU=\nR:eddilithium_test.go\na:0:0:444\nZ:Q1dYDWw2Cuxz8SnvxXCm7uuMPKtFU=\nR:example_test.go\na:0:0:444\nZ:Q1U15se7yio4mEC7uRtck+9k5ZkdM=\nR:signapi.go\na:0:0:444\nZ:Q1jYq7pF4mbd9+ZdxG8R1U0P6w1PA=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/sign/schemes\nM:0:0:555\nR:schemes.go\na:0:0:444\nZ:Q1NX+Z5u1XzP3iUtvGrLKYx0WD4i4=\nR:schemes_test.go\na:0:0:444\nZ:Q1Opfwz74dXbyTcN+EKBoCKHO/eQA=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/simd\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1BR7o3TVKJOqUTxn2MR873gWRZJ8=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/simd/keccakf1600\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1MZHHFw/0e1gR+JsERxzbWGweyig=\nR:f1600x.go\na:0:0:444\nZ:Q1Gj9R0fSRNtiPwuArfYePkZ+9BGo=\nR:f1600x2_arm64.go\na:0:0:444\nZ:Q1RKf78lUfYOdv0UJCTZZjQ+8W1Go=\nR:f1600x2_arm64.s\na:0:0:444\nZ:Q11J9VzxDYLDYssTL182Q9y6G6PGU=\nR:f1600x4_amd64.go\na:0:0:444\nZ:Q1WWMdu+/XaZ1trGVf5NJL50E14hI=\nR:f1600x4_amd64.s\na:0:0:444\nZ:Q1ObMo5RFcxjDdEIxrWIIvRF0PEas=\nR:f1600x4stubs_amd64.go\na:0:0:444\nZ:Q1wl+6p+j8DqNYh8l6Jhi9tR/QOwU=\nR:f1600x_test.go\na:0:0:444\nZ:Q14AgRThxv5QCFzSscnjZiEa60VFs=\nR:fallback.go\na:0:0:444\nZ:Q1nUov9+YNhwv68ZtAQT2YfPz+N9o=\nF:root/go/pkg/mod/github.com/cloudflare/circl@v1.2.0/xof\nM:0:0:555\nR:xof.go\na:0:0:444\nZ:Q1H3sTFjQ+/sUmO6K1GCEw9aCXpuQ=\nR:xof_test.go\na:0:0:444\nZ:Q1kQjvs9HdKnGRBKHpGokZPAXAZv4=\nF:root/go/pkg/mod/github.com/common-nighthawk\nF:root/go/pkg/mod/github.com/common-nighthawk/go-figure@v0.0.0-20210622060536-734e95fb86be\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1Wdyo9T+7MuHtV4k4Rask5HO0n6o=\nR:LICENSE\na:0:0:444\nZ:Q1WYSJuwUcbSTeCyxIEzHTUGkRgkY=\nR:README.md\na:0:0:444\nZ:Q17fQfhTG5cmi0BKVFNVDgi5i/ufk=\nR:bindata.go\na:0:0:444\nZ:Q1bUzOBes2RIGO3nvDRYuxNEUrFBw=\nR:figlet-parser.go\na:0:0:444\nZ:Q1DqP4y/xceXp6aKi/ItQt57Qk38E=\nR:figure.go\na:0:0:444\nZ:Q1mOiB8yEW8JnArPTkkhIgAN8WF3I=\nR:figure_test.go\na:0:0:444\nZ:Q14HoWGYLByB7Fwefp+pwnurFsQA8=\nR:font.go\na:0:0:444\nZ:Q1mgkkmWLWyjQfZO8u36Ld8jBAeXU=\nR:public_methods.go\na:0:0:444\nZ:Q1GBp7JwvJsh89CtDCtoGZlNJhfcA=\nF:root/go/pkg/mod/github.com/common-nighthawk/go-figure@v0.0.0-20210622060536-734e95fb86be/docs\nM:0:0:555\nR:blink.gif\na:0:0:444\nZ:Q1VZKkHuTzEaQPBrdXSfw9UZTgokQ=\nR:dance.gif\na:0:0:444\nZ:Q1YLLAlYiQxjkElWdtHCFY13aAfMY=\nR:scroll.gif\na:0:0:444\nZ:Q1B62/EpqxXFvf3fZIkMGV6RHlraw=\nR:web.png\na:0:0:444\nZ:Q1U5tzPtnt/PYHSr9J+s63XbHtgLo=\nF:root/go/pkg/mod/github.com/common-nighthawk/go-figure@v0.0.0-20210622060536-734e95fb86be/fonts\nM:0:0:555\nR:3-d.flf\na:0:0:444\nZ:Q11/BfPCnetPKd2SkdUHaJmz+SzSA=\nR:3x5.flf\na:0:0:444\nZ:Q1S9GVRA99sHtUynsHuHOPUDF81EA=\nR:5lineoblique.flf\na:0:0:444\nZ:Q18yI7tS420UCY4e0fd5BZOgkjDWg=\nR:acrobatic.flf\na:0:0:444\nZ:Q1tqaqrTwrj91PAScoYLyZWC3aN0g=\nR:alligator.flf\na:0:0:444\nZ:Q1pJRBDPub4Y2nk8U6kFs6Oeh1Pxo=\nR:alligator2.flf\na:0:0:444\nZ:Q161bEJ0kDTlwosdE52zDSCoJyVVk=\nR:alphabet.flf\na:0:0:444\nZ:Q1+cG/GnPr/9u0g0BhOi478IMgYzU=\nR:avatar.flf\na:0:0:444\nZ:Q18ATju/DsFNyNOrZAdNDnrfyS+mI=\nR:banner.flf\na:0:0:444\nZ:Q1TDWVawpZiLFZxTxTUYHvy6Jo1dw=\nR:banner3-D.flf\na:0:0:444\nZ:Q1MAs7B/oFkrLKxWQN9eZf4I/iNCs=\nR:banner3.flf\na:0:0:444\nZ:Q169pxF2HvOQ8D8UcRTxmN6nsYljI=\nR:banner4.flf\na:0:0:444\nZ:Q1mn8ptdt9mGeqn4V1TjcWdyj3PwE=\nR:barbwire.flf\na:0:0:444\nZ:Q1sZPcFcH2BBgZvY8GtFMlJsY8byY=\nR:basic.flf\na:0:0:444\nZ:Q1rqUI3vabWWkVq43rQfR5S+ae/d8=\nR:bell.flf\na:0:0:444\nZ:Q1kMjYBnGhB2hKomWjTDRF55uGjeE=\nR:big.flf\na:0:0:444\nZ:Q10EkDH2CNJ2PFx/Yk8seNS5sDBCQ=\nR:bigchief.flf\na:0:0:444\nZ:Q1R9EZma1aFDKB2rArVwmNdh2nIVE=\nR:binary.flf\na:0:0:444\nZ:Q103UJtEDVky9yNInrI5B43GTZrmY=\nR:block.flf\na:0:0:444\nZ:Q1mnZ3+A/4JMEthrTmhZsDi2qaxyk=\nR:bubble.flf\na:0:0:444\nZ:Q18vQXqhB0WcvFsgMlgreZZoY324k=\nR:bulbhead.flf\na:0:0:444\nZ:Q1zk2ip1ejabHJ3FZE9oExZRN6g88=\nR:calgphy2.flf\na:0:0:444\nZ:Q1WvGAXAFsV6FzdSVMyHaaOjaXN/s=\nR:caligraphy.flf\na:0:0:444\nZ:Q1bl/HSpKykmjDSHxuJbTjS7K2/ps=\nR:catwalk.flf\na:0:0:444\nZ:Q1W/JuFrf4RZb+zFm97NX6oje6oTk=\nR:chunky.flf\na:0:0:444\nZ:Q1gb5tNuuMQJuk8mB396hUkIvZk+A=\nR:coinstak.flf\na:0:0:444\nZ:Q1Wle1TTCXy6or/ejMrdoADlxBMIc=\nR:colossal.flf\na:0:0:444\nZ:Q1KYLE45DxeIohRrS9TTnTKRgvIIo=\nR:computer.flf\na:0:0:444\nZ:Q1YqFbKY5/bkpIEX+H3vPvZZ8Jw0A=\nR:contessa.flf\na:0:0:444\nZ:Q1Ni0D2iG7ozqJhE+F65xse2zkzNA=\nR:contrast.flf\na:0:0:444\nZ:Q1MFaFZRJrWopnojd2tOLjHKKAPJQ=\nR:cosmic.flf\na:0:0:444\nZ:Q1ezh0UkmAO+Zf36+OaU/BbRBjTLM=\nR:cosmike.flf\na:0:0:444\nZ:Q1lO7DSgpFOc/yq1mswNE951OH2dU=\nR:cricket.flf\na:0:0:444\nZ:Q1hdRWoJ5kWt8tx+pvhG4HdQGqleI=\nR:cursive.flf\na:0:0:444\nZ:Q1aU0DFoNylg8m3qguLm6YAFb4zjQ=\nR:cyberlarge.flf\na:0:0:444\nZ:Q1KqPefzJ35mxMdH4nl2KdK/es/2Q=\nR:cybermedium.flf\na:0:0:444\nZ:Q1HThrF3aUfJXZc2Y1lUK08VSbPy0=\nR:cybersmall.flf\na:0:0:444\nZ:Q1XaYTNxQ+L/SROs20anN2euA2NfA=\nR:diamond.flf\na:0:0:444\nZ:Q1hB1+/GeBtmOT5f3Te5yXT7QZSWE=\nR:digital.flf\na:0:0:444\nZ:Q1tGSbqk32ZWv3YgFBuhnZy0jCzP0=\nR:doh.flf\na:0:0:444\nZ:Q1rEz1ByiT34u/wBsbSsqLJgdE+Zc=\nR:doom.flf\na:0:0:444\nZ:Q1VEsDRz+CSIhc6Ahu2ultXpCAP6Q=\nR:dotmatrix.flf\na:0:0:444\nZ:Q1+9wkr2c763EUUAiP1coZWRnN8qA=\nR:drpepper.flf\na:0:0:444\nZ:Q1gysBquVylfUf+f5F0Di2aD4ydbU=\nR:eftichess.flf\na:0:0:444\nZ:Q1ExBjUdoNie2gJFKW9JGEEL+tPrQ=\nR:eftifont.flf\na:0:0:444\nZ:Q1YYuis81+9CbTVDRP38n89GqOl/s=\nR:eftipiti.flf\na:0:0:444\nZ:Q1R+RpA1CthnK8xYq2kW71K5Gg1jI=\nR:eftirobot.flf\na:0:0:444\nZ:Q1v7qfGzpDHWlRhHnT3xtwLmrgqcU=\nR:eftitalic.flf\na:0:0:444\nZ:Q1/pjncNmrdx78/AXYy8Roavon9jU=\nR:eftiwall.flf\na:0:0:444\nZ:Q1zbE8plrHC7qResc7FzmgwkLVhnE=\nR:eftiwater.flf\na:0:0:444\nZ:Q1wJZLdJDvABAEj6yco/1ZwvpjXj0=\nR:elite.flf\na:0:0:444\nZ:Q1Gah/XDlDHB4ENO84jRhe404xgZM=\nR:epic.flf\na:0:0:444\nZ:Q11We3SjtmZs8kkKFC1lidmdcGMp0=\nR:fender.flf\na:0:0:444\nZ:Q1pb6aNS8trQXrvwNfFUilUQIsMMk=\nR:fourtops.flf\na:0:0:444\nZ:Q1259pVnaTyha3gBu/vnXQgT+5zdc=\nR:fuzzy.flf\na:0:0:444\nZ:Q1QV7sPSKJ+97Sy9mfl4M0kJuL/MA=\nR:goofy.flf\na:0:0:444\nZ:Q18CAHzi9NnmAZaANJnAgY8DGMjSw=\nR:gothic.flf\na:0:0:444\nZ:Q1eTJ7WoEzubn6XMXk5BT426Y7e0w=\nR:graffiti.flf\na:0:0:444\nZ:Q1Cn5/LhlEARtRR54llDewWKvowuk=\nR:hollywood.flf\na:0:0:444\nZ:Q1NXXlOx3GQ2JeaeC25Xkp5+tOqFw=\nR:invita.flf\na:0:0:444\nZ:Q1oEJ8gFGqqxg/SEvPj58nK1iqEnQ=\nR:isometric1.flf\na:0:0:444\nZ:Q1XOB0Ywpf7y2GQzWCJCwtcmcqRQc=\nR:isometric2.flf\na:0:0:444\nZ:Q1rDLuUdNwVB/mF0PqLDgLkYnOwX8=\nR:isometric3.flf\na:0:0:444\nZ:Q1foaap/tgO8AIma/XX1Rq7GVwceU=\nR:isometric4.flf\na:0:0:444\nZ:Q1X/hsABP0BwSACmGczQEfHzJoM2o=\nR:italic.flf\na:0:0:444\nZ:Q1hOUfXPZYlgng280DwI3Qxx4B5GM=\nR:ivrit.flf\na:0:0:444\nZ:Q1vCH9pi5H9aBFLGKcP7j5LJWndxQ=\nR:jazmine.flf\na:0:0:444\nZ:Q12h+IdqL3+FEpYFI0GEpte/aLRIg=\nR:jerusalem.flf\na:0:0:444\nZ:Q1B+kIT6dGRvz+4xiTUg6kN/DfJic=\nR:katakana.flf\na:0:0:444\nZ:Q1Rzp/uxao+HdpBzj0sy/m1zF4eq0=\nR:kban.flf\na:0:0:444\nZ:Q1R6pSOUQL169b6yjcGyQjwJl7f5c=\nR:larry3d.flf\na:0:0:444\nZ:Q1WCrD6fjAwWhhlyqw8xhuM4oOoas=\nR:lcd.flf\na:0:0:444\nZ:Q1UO/O28RJbqTbbpBxw1a7e/tabEo=\nR:lean.flf\na:0:0:444\nZ:Q1e7/njxZEswlSvW+qhrqg2DwvaVM=\nR:letters.flf\na:0:0:444\nZ:Q1nR1tTwK7LyjWXO9/cl3ApnF39Uw=\nR:linux.flf\na:0:0:444\nZ:Q1wEzVyLOY/Wxdrx2iVDEyo3YsDcA=\nR:lockergnome.flf\na:0:0:444\nZ:Q1ypGzXhyprr6nzjhq0mFqUKdIp/c=\nR:madrid.flf\na:0:0:444\nZ:Q1akFYahW+rt3aGT28rfYFfvbFTNs=\nR:marquee.flf\na:0:0:444\nZ:Q1i8buL0XRrZ+prnWX0eyWn3G1hmg=\nR:maxfour.flf\na:0:0:444\nZ:Q1/I9kzmqf+UswVl7xhqmf/XqYIEU=\nR:mike.flf\na:0:0:444\nZ:Q1LjSPE+BYj8x70mWqQtpAffJTz/w=\nR:mini.flf\na:0:0:444\nZ:Q14tuc5Rj+LuetrjZv7mn4GKYwsns=\nR:mirror.flf\na:0:0:444\nZ:Q1d2CXXaNsjWiZ7S7MLqSer/Y+LBc=\nR:mnemonic.flf\na:0:0:444\nZ:Q1Mn+2+JdshJTRcEbSIPi12cvZN2Q=\nR:morse.flf\na:0:0:444\nZ:Q1EKjbbgbfiRf2cXS1sVqNSs/4moY=\nR:moscow.flf\na:0:0:444\nZ:Q1hCH2aztDjz8W/xzSKgCg6SNkgjM=\nR:nancyj-fancy.flf\na:0:0:444\nZ:Q1QV+aGkXSxr2fX7bX/EnBFZJ3OCc=\nR:nancyj-underlined.flf\na:0:0:444\nZ:Q1SmgavtTnQECxHYSa5whIMNFxr2g=\nR:nancyj.flf\na:0:0:444\nZ:Q19l0gLLAe4b5RAA2pSavZVbaGy0g=\nR:nipples.flf\na:0:0:444\nZ:Q1G1rCae5DgmoYxd6wL8sFoBIESm4=\nR:ntgreek.flf\na:0:0:444\nZ:Q1LMF/jFbwp95NrzW6uHm8sGYuG5U=\nR:o8.flf\na:0:0:444\nZ:Q1ql8Sw7qqvYOzJwttoq1qET6DkHc=\nR:ogre.flf\na:0:0:444\nZ:Q15x3vV+29x39ze359n1vi2eGsJwI=\nR:pawp.flf\na:0:0:444\nZ:Q1we/PODGPSruf5pWcUZeeENE8Bl4=\nR:peaks.flf\na:0:0:444\nZ:Q12OCopF1wgVo6zN55R9RoozJyHn0=\nR:pebbles.flf\na:0:0:444\nZ:Q1wxjujbCpqEknIsLSg7T+kOGs64I=\nR:pepper.flf\na:0:0:444\nZ:Q1GWHmngYtlSXMChl3tcxWpmiEM8Q=\nR:poison.flf\na:0:0:444\nZ:Q1iX+4XKZBZ+ZfOmS1XsBF19XzgvI=\nR:puffy.flf\na:0:0:444\nZ:Q1FKArHDNdmfBHmGQft+382kREF94=\nR:pyramid.flf\na:0:0:444\nZ:Q1FxgU5wNtFsRQIQdPc9qFFFh41UE=\nR:rectangles.flf\na:0:0:444\nZ:Q1ATtmmU3Eq2fHlAHV+IM+AUIpR4w=\nR:relief.flf\na:0:0:444\nZ:Q1H81CLHWildJIkQoUYHeY7/n/eyU=\nR:relief2.flf\na:0:0:444\nZ:Q12QVLxYDY9q02RKIByC8x081tmD8=\nR:rev.flf\na:0:0:444\nZ:Q1Uf8alP8VwPwCm/mZqhZAQvV9W8o=\nR:roman.flf\na:0:0:444\nZ:Q1ti7O7fVHfYZ49gtj1KLvoj3Ungw=\nR:rot13.flf\na:0:0:444\nZ:Q1ak45FUlwjpnfZqOCAIKQVdYHqq4=\nR:rounded.flf\na:0:0:444\nZ:Q1s9criCQvFCEz2qqklrTwPoHfFu0=\nR:rowancap.flf\na:0:0:444\nZ:Q1GqBvIuXibfWQF/UUmzll+2d3Uqc=\nR:rozzo.flf\na:0:0:444\nZ:Q1dAjLd1mGvbC0a+Vgt9yIuTtCCrI=\nR:runic.flf\na:0:0:444\nZ:Q1wBqY2MZT87xSSNj99ktNPm/IwgU=\nR:runyc.flf\na:0:0:444\nZ:Q1ErWCIRVclgEPdsYyotm1WbIXYVY=\nR:sblood.flf\na:0:0:444\nZ:Q1urJx9dlmDVKR8lBcSooSmmztD0k=\nR:script.flf\na:0:0:444\nZ:Q1S6i0iYYHKppDgadMQPfOrSrXxos=\nR:serifcap.flf\na:0:0:444\nZ:Q1sGybkQOuJTyMwRY4SiFliEX6b60=\nR:shadow.flf\na:0:0:444\nZ:Q1qJODe5OPes4rbh6f8PJvr2Oj/G0=\nR:short.flf\na:0:0:444\nZ:Q169CXjFXrbB3GHEMLlXOI3f5JZNU=\nR:slant.flf\na:0:0:444\nZ:Q1n0DnpNYC2QkL9OX1eXtssE4/rU8=\nR:slide.flf\na:0:0:444\nZ:Q1dO+PGo0+aevx4I88nIWSBr/3m9g=\nR:slscript.flf\na:0:0:444\nZ:Q1aU0DFoNylg8m3qguLm6YAFb4zjQ=\nR:small.flf\na:0:0:444\nZ:Q1rZ0pc2xjdEvS8R0ET2Ro49lTmv0=\nR:smisome1.flf\na:0:0:444\nZ:Q1dwZ7RLJImGh7h6DU5rjF0K4VUdY=\nR:smkeyboard.flf\na:0:0:444\nZ:Q1LuOpa+GM9FMSzWDceD2Rl5nqJ9E=\nR:smscript.flf\na:0:0:444\nZ:Q1d+8u4m/P6NlRVa1NJaRdGyPKQAE=\nR:smshadow.flf\na:0:0:444\nZ:Q1jtg/ZKa4jQr1cZtfVwINfR+sF6c=\nR:smslant.flf\na:0:0:444\nZ:Q1Tl7dNOoEMfgz5mZ71DOH8KefBIo=\nR:smtengwar.flf\na:0:0:444\nZ:Q1AhNxkClNKOpmEqG939TVj1XEj6E=\nR:speed.flf\na:0:0:444\nZ:Q10dIqnZUlx61PPyfP5cwTyWijl5w=\nR:stampatello.flf\na:0:0:444\nZ:Q19PAHe7osQXegWm+QZD5injsYt+4=\nR:standard.flf\na:0:0:444\nZ:Q1hyRCoD/mvCqAfo83E7lpmaMZ2tg=\nR:starwars.flf\na:0:0:444\nZ:Q1z2rmA7Nl0kFgtqkstBCOKp316Bc=\nR:stellar.flf\na:0:0:444\nZ:Q1a3i+1jl5RnRbaGf5cDEUHWVI5a4=\nR:stop.flf\na:0:0:444\nZ:Q1D7VbdF5F+21oe6203ExUKx5T2OQ=\nR:straight.flf\na:0:0:444\nZ:Q1DdxQHLyhslDu8KSzGQF771Jq6Yg=\nR:tanja.flf\na:0:0:444\nZ:Q1BqI+aW1BMkIWzFoe30Nj4d1ixHA=\nR:tengwar.flf\na:0:0:444\nZ:Q1kfaKKWf1w+A8XkigdBo3gThRRng=\nR:term.flf\na:0:0:444\nZ:Q1TvpTqbwh9y9HrM/JPtSyl7vCbPM=\nR:thick.flf\na:0:0:444\nZ:Q1jiANTrxTEwHPWiNqSvH6/UIxpkM=\nR:thin.flf\na:0:0:444\nZ:Q1C6v1Y+IaTzVc14P6eg0RBszVjeA=\nR:threepoint.flf\na:0:0:444\nZ:Q1/sVo3qeDT5N48U180CkEHWZnWSU=\nR:ticks.flf\na:0:0:444\nZ:Q1m7u4d4X0wJdsXhmbhgpSm7ToDT0=\nR:ticksslant.flf\na:0:0:444\nZ:Q1YxAdhjkPVa2RR2SkuWOOscnCl24=\nR:tinker-toy.flf\na:0:0:444\nZ:Q1G7jZoqvJC6bIiAfEEBN0xW72IGk=\nR:tombstone.flf\na:0:0:444\nZ:Q1phPvbWFTGu2a5LKRDug0qXINElw=\nR:trek.flf\na:0:0:444\nZ:Q1sdEFw6bmWsmAI82tI8EZh3LOOO0=\nR:tsalagi.flf\na:0:0:444\nZ:Q1MdxeYH/BzRrsJky82+KA97jmbEs=\nR:twopoint.flf\na:0:0:444\nZ:Q1FlpXzDbZxAbpbD0AaCMGk3UWsQQ=\nR:univers.flf\na:0:0:444\nZ:Q1Xw8jS1+GhMP1yWb/kw+Vt9zW8/4=\nR:usaflag.flf\na:0:0:444\nZ:Q198D3yiw68NkJaU/YOeYSsOIDYac=\nR:wavy.flf\na:0:0:444\nZ:Q15PVR66rzkY2J/G1r5UArGwPSV/0=\nR:weird.flf\na:0:0:444\nZ:Q1+Br4/UPg8ZwWg0Nwl0nvTaOXLm0=\nF:root/go/pkg/mod/github.com/containerd\nF:root/go/pkg/mod/github.com/containerd/stargz-snapshotter\nF:root/go/pkg/mod/github.com/containerd/stargz-snapshotter/estargz@v0.12.1\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:build.go\na:0:0:444\nZ:Q1HzYSzj2fVJozhIBeRvG1XH6ag/I=\nR:build_test.go\na:0:0:444\nZ:Q1LYnmgmhfcBJKcOe8d4Nc8AIy+Fw=\nR:estargz.go\na:0:0:444\nZ:Q19bWCm9GJeQgXPfGWlY3g35im0Xg=\nR:estargz_test.go\na:0:0:444\nZ:Q1VGVQ4PWdOClbTAbfo0bPvw/cRCw=\nR:go.mod\na:0:0:444\nZ:Q1wW354w/An4RGaRV5IgdmTZsEBvM=\nR:go.sum\na:0:0:444\nZ:Q1UTK1tFI8mtbkHdSwrJABDPUITf0=\nR:gzip.go\na:0:0:444\nZ:Q1ZXb2PMCULS7QoJSl8nsq9HjlRfA=\nR:gzip_test.go\na:0:0:444\nZ:Q1ynE2sxJEDg1/iHGdHDMSELXR36c=\nR:testutil.go\na:0:0:444\nZ:Q1wOwSRMzWg5ZMCARxf3fZdmkPH1s=\nR:types.go\na:0:0:444\nZ:Q1Jtxcrrz0o3EbUKDP0e/sLGDS278=\nF:root/go/pkg/mod/github.com/containerd/stargz-snapshotter/estargz@v0.12.1/errorutil\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1TVCW/oTFbQ0jLoBoFO4iEBmr8HA=\nR:errors_test.go\na:0:0:444\nZ:Q1LG4lZXhsbktEBu6yPaLy10aDRhM=\nF:root/go/pkg/mod/github.com/containerd/stargz-snapshotter/estargz@v0.12.1/zstdchunked\nM:0:0:555\nR:zstdchunked.go\na:0:0:444\nZ:Q1yGdO5ix23bKVx1RWiSitwyMYKlI=\nR:zstdchunked_test.go\na:0:0:444\nZ:Q1qezMO5ZRBV81uBNtn0D0pscEs0E=\nF:root/go/pkg/mod/github.com/dimchansky\nF:root/go/pkg/mod/github.com/dimchansky/utfbom@v1.1.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1KBtGcExvXRkMsdkKW2HG+wvqzVs=\nR:.travis.yml\na:0:0:444\nZ:Q1guRDwo8OPcNpS8fWOljkL5N1spo=\nR:LICENSE\na:0:0:444\nZ:Q1I4djpfkcdhl7K2Slh2MJP+5u2Ig=\nR:README.md\na:0:0:444\nZ:Q1Y0TuwNYJTZBd4u9B9eCCwWAoM4A=\nR:go.mod\na:0:0:444\nZ:Q14JzGs8MiYRoL6hAfZgjL61OLS+k=\nR:utfbom.go\na:0:0:444\nZ:Q1JPGTv4Cldd6iyESrGuIK/XJWl/4=\nR:utfbom_test.go\na:0:0:444\nZ:Q1cWzVFdPKbhk5MDU73zV98V0Q4io=\nF:root/go/pkg/mod/github.com/docker\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible\nM:0:0:555\nR:.dockerignore\na:0:0:444\nZ:Q1/mLkdpA7QgbHp0217gMJv6wTwjs=\nR:.gitignore\na:0:0:444\nZ:Q1/G3VTJo8XeGM1kncGSNWSbj2W0g=\nR:.golangci.yml\na:0:0:444\nZ:Q1y+K5Yuqh6FAvcbXwc6JsyOIhEBE=\nR:.mailmap\na:0:0:444\nZ:Q1pro1lm+nr+0tPCeXMl1FZ077Sdw=\nR:AUTHORS\na:0:0:444\nZ:Q1rgAaMbAwrP9m/XeGa9ABGvRcUWc=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1jVWQmHCQARqJ82OxZrRHI1y1KXU=\nR:Dockerfile\na:0:0:444\nZ:Q1x8UTvFCpiqVgWYFpMejHnNJ3dEo=\nR:Jenkinsfile\na:0:0:444\nZ:Q1YVJMlvn7emFnB9+zOZEavtN1vLQ=\nR:LICENSE\na:0:0:444\nZ:Q1h459hlc9bI/2XS6qspRzSz9NPYE=\nR:MAINTAINERS\na:0:0:444\nZ:Q1thVxlXd6rDcSev3gWtlcFnVRqzQ=\nR:Makefile\na:0:0:444\nZ:Q1ysBtHd+VPEut0YBNSLDceb1ZO84=\nR:NOTICE\na:0:0:444\nZ:Q1VHby+RZz7wQPGVaQfn9F5y1eEe4=\nR:README.md\na:0:0:444\nZ:Q1ADAuv4968/x7EWhC1NLp+aKTpGw=\nR:TESTING.md\na:0:0:444\nZ:Q14z3pnrdvJ9/nDr0HExHYM0XMHwY=\nR:VERSION\na:0:0:444\nZ:Q1n5IlG+y456Jha3bwHIE9BYWdZFc=\nR:appveyor.yml\na:0:0:444\nZ:Q1Q6eVxglLo1YytEtqu19wMHbe2V0=\nR:codecov.yml\na:0:0:444\nZ:Q1fa4yLCLDPNw0uIQTF8GlYnM/h20=\nR:docker-bake.hcl\na:0:0:444\nZ:Q1n4fuiHohSfc0XEuPkTMVF5OYIvk=\nR:docker.Makefile\na:0:0:444\nZ:Q1nJc9q+4YuikLIxNDGlF5Kk9XnoI=\nR:poule.yml\na:0:0:444\nZ:Q14j7t8us0sj/Ap3DucQWtDCd+YNM=\nR:vendor.conf\na:0:0:444\nZ:Q1ARMoW+g8G4o/ZZXlEFSJZeWyL5E=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1XInWLXsrbJ2FLg2rBRBNt+HOW7k=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1EvMWGeHMYyeo/Ma453rISPvzhWk=\nR:ISSUE_TEMPLATE.md\na:0:0:444\nZ:Q1WfqtdZoPcSnS2P2UEF2ZawQgePk=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1/tIzvfkeC2v9L3FPsPxIWmT2OOM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/.github/workflows\nM:0:0:555\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1xRCVXthUUyUSW8bI22rrwQMs+ew=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli\nM:0:0:555\nR:cobra.go\na:0:0:444\nZ:Q1D6yAkQGNuSg3KdYypVJLhOeeuWg=\nR:cobra_test.go\na:0:0:444\nZ:Q1rgUADSx87eePgfZRnct6cK0wl9w=\nR:error.go\na:0:0:444\nZ:Q1viCwe7AmDZaHoFzdLkbMdUlQcyg=\nR:required.go\na:0:0:444\nZ:Q1bFfizMIrJSvXdc/0ruLXgffPsqs=\nR:required_test.go\na:0:0:444\nZ:Q1GlKbVxCyqUpRQyvqbsHy5FpT0MU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command\nM:0:0:555\nR:cli.go\na:0:0:444\nZ:Q1rqLROrg/NJoltcivYxa9S35BJCA=\nR:cli_options.go\na:0:0:444\nZ:Q190FERCjT54T0y1T+XxLuWp6xDwM=\nR:cli_options_test.go\na:0:0:444\nZ:Q1TDD0LM9Ln8wYAc2IltKsAAiaQUo=\nR:cli_test.go\na:0:0:444\nZ:Q1K+7QYf+LafgbGEriIylVnQ/Ft7E=\nR:context.go\na:0:0:444\nZ:Q1W5aSyFpFQWkEDuTryEz+ssoSS+Q=\nR:context_test.go\na:0:0:444\nZ:Q1VYihL/NMhUIX2BOrno5g5CXJlqI=\nR:defaultcontextstore.go\na:0:0:444\nZ:Q19YKXjCnj+FL6RkiW97IRMG7lNoA=\nR:defaultcontextstore_test.go\na:0:0:444\nZ:Q1Yn6woxI3uS2gfYg4vyWN5mewCJg=\nR:events_utils.go\na:0:0:444\nZ:Q1EzimGBMXpUSEIEZBW5M3l4AVhjo=\nR:orchestrator.go\na:0:0:444\nZ:Q1RPw3twK5yzCX6vfl6KO5md6UIt0=\nR:orchestrator_test.go\na:0:0:444\nZ:Q1JlQVsxEooY/wKkHQ9KXxElpnVQg=\nR:registry.go\na:0:0:444\nZ:Q1tRpnTn7nMxyz1D4Jxz5ov4J9EsM=\nR:registry_test.go\na:0:0:444\nZ:Q15Kxum/V9bGuwPU6E55Q+hMdCn80=\nR:streams.go\na:0:0:444\nZ:Q1dZ+0L5pEHMQ208+PRkclKQJoVFY=\nR:trust.go\na:0:0:444\nZ:Q1rESuGDL32y+k9g9NXpeK5D2ArhY=\nR:utils.go\na:0:0:444\nZ:Q1lnLWZtgbHYMxAG87jvEEsisg2ao=\nR:utils_test.go\na:0:0:444\nZ:Q1hivsjD7i+/neX5NRUV9u3Ap9BIk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/builder\nM:0:0:555\nR:cmd.go\na:0:0:444\nZ:Q1iCSjQJ0CATK+e3KujTiYD4Y4OII=\nR:prune.go\na:0:0:444\nZ:Q1+J9wN1hW+jY+aKIP4FTxioMQQu4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/checkpoint\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1O7b4xYwPmaa48uU+uflqaEY3pBc=\nR:cmd.go\na:0:0:444\nZ:Q1/wvxnOD7E8KHrd2vY9GNm11wDjE=\nR:create.go\na:0:0:444\nZ:Q1e1jOGuE2m4Dw9Xzs5LF/CVa5jIk=\nR:create_test.go\na:0:0:444\nZ:Q180DHSqr7lg3lURyI3XeoGBk3lns=\nR:formatter.go\na:0:0:444\nZ:Q1potTn7LyTxkuH52JaR9Zbt3w/Ns=\nR:formatter_test.go\na:0:0:444\nZ:Q1oesb2FY3cxHrJrkuCx9kqkP8QcE=\nR:list.go\na:0:0:444\nZ:Q11GmdbozEx62IYjzoPyBN8X2ybJU=\nR:list_test.go\na:0:0:444\nZ:Q11f140AsotxQDZDo8QWhee1/7ZOk=\nR:remove.go\na:0:0:444\nZ:Q1r9nV4yl+62Mg6S9HRHFtPnmdX00=\nR:remove_test.go\na:0:0:444\nZ:Q1OVRghxxQmfmvnTqHFKkXgBD0VBs=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/checkpoint/testdata\nM:0:0:555\nR:checkpoint-list-with-options.golden\na:0:0:444\nZ:Q1BBPVjybO40B4kuSNkhHnXwNxk7I=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/commands\nM:0:0:555\nR:commands.go\na:0:0:444\nZ:Q1SJbuc2XgnGNS32ATvVz/Qn8LUZo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/config\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1nBoddCfxg1sf8eCAY7YE9cPyBEA=\nR:cmd.go\na:0:0:444\nZ:Q1auLB0Ib/9BARieuoz0ubBDut53I=\nR:create.go\na:0:0:444\nZ:Q1WomBLyulnHxRmcwQFPa9Yf5e6B8=\nR:create_test.go\na:0:0:444\nZ:Q1rs9W9uMpD2KYJBDXN4mkYc80mmM=\nR:formatter.go\na:0:0:444\nZ:Q1atO7Qy4qz7vxQNKzr7Fd+Qx+nMA=\nR:formatter_test.go\na:0:0:444\nZ:Q1YUZwRfkEr5+qrWmwrOK5zXlJtHs=\nR:inspect.go\na:0:0:444\nZ:Q1ZCC9TPVZ09PVBqbnv2lencbKvbw=\nR:inspect_test.go\na:0:0:444\nZ:Q1B7sIBGqjSrHanebuyH2CFoNuixw=\nR:ls.go\na:0:0:444\nZ:Q1QHx6Asvk7T8odGoCSYEVeP6ZSQA=\nR:ls_test.go\na:0:0:444\nZ:Q1rr1fnxUPgbcs18qlCKoQs/iYUhc=\nR:remove.go\na:0:0:444\nZ:Q1SpefwgL0Z6r7MEE4TwvXnxdDDo4=\nR:remove_test.go\na:0:0:444\nZ:Q1T148t0dGENwkNvMCfK9jkS4Cw2c=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/config/testdata\nM:0:0:555\nR:config-create-with-name.golden\na:0:0:444\nZ:Q1hgv6A+jCuoYFU77uJ5IOvPnSuLk=\nR:config-inspect-pretty.simple.golden\na:0:0:444\nZ:Q1naLRChH5BGi3ebz3LdvvMN/hdmw=\nR:config-inspect-with-format.json-template.golden\na:0:0:444\nZ:Q1ZLsRTdes04yXvE6xugPCT/zOoCs=\nR:config-inspect-with-format.simple-template.golden\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nR:config-inspect-without-format.multiple-configs-with-labels.golden\na:0:0:444\nZ:Q1YyIuM5WP9BqVANyrhUosPEVebkU=\nR:config-inspect-without-format.single-config.golden\na:0:0:444\nZ:Q1rVFxw164AuGM2A/HgajFY9btP4o=\nR:config-list-sort.golden\na:0:0:444\nZ:Q1u01YHFiaiFi0yARIBat13K7t8mc=\nR:config-list-with-config-format.golden\na:0:0:444\nZ:Q1uqeEPbrN8d6upWs2A3eSKHcrIzs=\nR:config-list-with-filter.golden\na:0:0:444\nZ:Q15f3XaB5bhAmv4WUt/PNQz2D309g=\nR:config-list-with-format.golden\na:0:0:444\nZ:Q1uqeEPbrN8d6upWs2A3eSKHcrIzs=\nR:config-list-with-quiet-option.golden\na:0:0:444\nZ:Q1ah4OOnaiDBUT9to95tImMyvXves=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/container\nM:0:0:555\nR:attach.go\na:0:0:444\nZ:Q1+2LZDolvBgRJ6ptKWenZRy/5cFU=\nR:attach_test.go\na:0:0:444\nZ:Q1gQ27YtGUGM4vktcMHsbB7r9g1BQ=\nR:client_test.go\na:0:0:444\nZ:Q1joXW2u5cbGHTncsWgdXQCCK3Pfk=\nR:cmd.go\na:0:0:444\nZ:Q1GzxWbdLU+JhTYI+tz+1IDEF9LBI=\nR:commit.go\na:0:0:444\nZ:Q1Dzx11QakKEsqZXDCwVGUmCp644w=\nR:cp.go\na:0:0:444\nZ:Q1IuDZJfEDweBQ1XFRMZ+RgYiNGpA=\nR:cp_test.go\na:0:0:444\nZ:Q1f5Hit5jP3j1i94y7OmsKz0WAnUU=\nR:create.go\na:0:0:444\nZ:Q1jku20OM/snSSqUADPxF6BEzXWzs=\nR:create_test.go\na:0:0:444\nZ:Q13B3NXQKs1c7Kg/CYPSdqoE4tJQ8=\nR:diff.go\na:0:0:444\nZ:Q17f/4VYn/2evpLUJka0IvONyChpk=\nR:exec.go\na:0:0:444\nZ:Q1GcKWcTCWzolpnUB2orqfIeBuNjU=\nR:exec_test.go\na:0:0:444\nZ:Q1mDhMahydOsJgLGfmHql56yZT41I=\nR:export.go\na:0:0:444\nZ:Q1KdRbJ/yGKVGP7PRZgfnIeh3eQgw=\nR:export_test.go\na:0:0:444\nZ:Q1YZs/gy+r3yPculc0aB1Uh20ObC0=\nR:formatter_diff.go\na:0:0:444\nZ:Q1VH0Q3Wxla8xlYf5njM8T4xAFiGg=\nR:formatter_diff_test.go\na:0:0:444\nZ:Q15yiQrFVkF/iOFEicIhs5mF7JvzU=\nR:formatter_stats.go\na:0:0:444\nZ:Q1QVgWct8jRkor7pzQM3kUYCh23eg=\nR:formatter_stats_test.go\na:0:0:444\nZ:Q1u7RQTI8HvpywqOMImeCS5KmkERw=\nR:hijack.go\na:0:0:444\nZ:Q1E+LzlRffeU/DgOX/1JaDSvZ229A=\nR:inspect.go\na:0:0:444\nZ:Q1dZVNpTYCknsfv4rSEHzHlAbC0uc=\nR:kill.go\na:0:0:444\nZ:Q1BMn4PYC129o6ZxnEn0M+l7ZcK+s=\nR:list.go\na:0:0:444\nZ:Q19uWZjqmedIJIFY6xok91WEWR0iM=\nR:list_test.go\na:0:0:444\nZ:Q1J1WmKQJGXAc68w1+bizxqjTMZTs=\nR:logs.go\na:0:0:444\nZ:Q10ymCun8YipGpPWcBJDvNVxFGTSg=\nR:logs_test.go\na:0:0:444\nZ:Q15Ef/liJIB0QQSwIPAOz/TbHuVOM=\nR:opts.go\na:0:0:444\nZ:Q1iyHCKSR+QvTzGV7uiQ6eT44pZK8=\nR:opts_test.go\na:0:0:444\nZ:Q1Af41q8KBteTV3mV9tOFKG0v7Fd8=\nR:pause.go\na:0:0:444\nZ:Q1l8HUX6ePYIS+lYkDTcoCxw1+hBE=\nR:port.go\na:0:0:444\nZ:Q1XrZ1+1K8wdnDqkxe/2/DAa9mE9s=\nR:prune.go\na:0:0:444\nZ:Q1URB5nWdXRTAXQTLFkVVNSyKdAao=\nR:rename.go\na:0:0:444\nZ:Q1Qz56mkp2IBVsBT/KnrXBXZn1A0o=\nR:restart.go\na:0:0:444\nZ:Q14Cb4xF3IVzzCWFSjI2aGX6cTEW4=\nR:rm.go\na:0:0:444\nZ:Q1OWiX6YB1XVubOPoXl6OOlg+syHE=\nR:rm_test.go\na:0:0:444\nZ:Q1v+4UDV8ouN+n+mj08VPRSg/imoA=\nR:run.go\na:0:0:444\nZ:Q1tOYOZ35CoB+udi9ahAHR/oX4pRA=\nR:run_test.go\na:0:0:444\nZ:Q1AlkHZYndX/FFwh/rJrzkXXf+/h0=\nR:signals.go\na:0:0:444\nZ:Q1ryOTESzZwrM3g8DjohA4OHRpu54=\nR:signals_test.go\na:0:0:444\nZ:Q1PsURB7vTY2lrEl6QNlng1sYZKr8=\nR:signals_unix.go\na:0:0:444\nZ:Q15k0F1yrctBNlR6iKDYsveLb3s9M=\nR:signals_unix_test.go\na:0:0:444\nZ:Q1vefUvHTo795EvHSk8unjBsHbDvQ=\nR:signals_windows.go\na:0:0:444\nZ:Q1PvCwgvM4AvYeLMmta9V/u1unJ3o=\nR:start.go\na:0:0:444\nZ:Q17KxdQYOwd0fm3QCRyMCUo/Vzmws=\nR:stats.go\na:0:0:444\nZ:Q1gpW3le8x6cas9FN2nOix2D6ECgs=\nR:stats_helpers.go\na:0:0:444\nZ:Q15tNLY0q3cMiPXWoPNM+YvSsBdjk=\nR:stats_helpers_test.go\na:0:0:444\nZ:Q1+fFY517yn0rW5ZA3jT2SSso38yM=\nR:stats_unit_test.go\na:0:0:444\nZ:Q1fbImqlIPO8pXTSngqHszZYMNW30=\nR:stop.go\na:0:0:444\nZ:Q1pLwKzctU2uMS9KWmPLHU5OoAK0w=\nR:top.go\na:0:0:444\nZ:Q1GjP7Hy33XHsj8W0XI7rJXlctbqA=\nR:tty.go\na:0:0:444\nZ:Q1/I9I67tHdDBkqrNWbhDTtBAhuo0=\nR:tty_test.go\na:0:0:444\nZ:Q1y37tmZqS0bgwG96Y3B65d82ICu0=\nR:unpause.go\na:0:0:444\nZ:Q1gImC9+M0FSXlJguhukDmT84DSio=\nR:update.go\na:0:0:444\nZ:Q1W4Oo6PO6X63n6P4p+LXBDwNjt+c=\nR:utils.go\na:0:0:444\nZ:Q1Zt5dnCWPXfvhnamYXsaWkY4O504=\nR:utils_test.go\na:0:0:444\nZ:Q1Ef5njS9Vd+7zzKfJr4rBuMCnscs=\nR:wait.go\na:0:0:444\nZ:Q1gOHzNyBVq+FdJpDU2KOvrQ3azts=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/container/testdata\nM:0:0:555\nR:container-create-localhost-dns-ipv6.golden\na:0:0:444\nZ:Q1iIds3calU5dCsMgkZ4OIwz0DQss=\nR:container-create-localhost-dns.golden\na:0:0:444\nZ:Q17IJfWi9UyYc0PwE3xbm+dZq4bdI=\nR:container-create-oom-kill-true-without-memory-limit.golden\na:0:0:444\nZ:Q1toxtZLgxkp1i64RBFEVyiWlzurI=\nR:container-create-oom-kill-without-memory-limit.golden\na:0:0:444\nZ:Q1toxtZLgxkp1i64RBFEVyiWlzurI=\nR:container-list-format-name-name.golden\na:0:0:444\nZ:Q1cu8rJbAe4vtlGn8/oJGSDDf8fqc=\nR:container-list-format-with-arg.golden\na:0:0:444\nZ:Q1vDxz4QRMX9NFpAc7O7uK9p71H/I=\nR:container-list-with-config-format.golden\na:0:0:444\nZ:Q1CiNVk98PfAwmnSDn87tmAj+mAxY=\nR:container-list-with-format.golden\na:0:0:444\nZ:Q1CiNVk98PfAwmnSDn87tmAj+mAxY=\nR:container-list-without-format-no-trunc.golden\na:0:0:444\nZ:Q1D96dtp8G3ecoexEDUd+YyOJnvn4=\nR:container-list-without-format.golden\na:0:0:444\nZ:Q1N/qg+rB/pxJXMhomgFJZyY4XDqI=\nR:utf16.env\na:0:0:444\nZ:Q18uLdwzxbWZRoIEM+S9kCZ27GQho=\nR:utf16be.env\na:0:0:444\nZ:Q1RZsrsZ7K8VA/cLoUA2yGZGxaN+E=\nR:utf8.env\na:0:0:444\nZ:Q1ssei5GjyVvYj/pqh1TGOASWTUvc=\nR:valid.env\na:0:0:444\nZ:Q1WXH73KLLqAbJhNN3p7Ub1HwXVy4=\nR:valid.label\na:0:0:444\nZ:Q1gw4KS1siuXwynAqDDZSqQnUYCfk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/context\nM:0:0:555\nR:cmd.go\na:0:0:444\nZ:Q1NXQeqDi4ySY0J5cpnC94TdF3k2k=\nR:create.go\na:0:0:444\nZ:Q1/EC78tXx5+dWXxN0XxIg3kKCjVs=\nR:create_test.go\na:0:0:444\nZ:Q1RVAWp6UsaRC67sjGFgPXMoKbo7o=\nR:export-import_test.go\na:0:0:444\nZ:Q1k6louKx86ZSxKHu60Jtk8ufZjwc=\nR:export.go\na:0:0:444\nZ:Q1vCgi4AG1swoam0jYm6DqA1HVDAs=\nR:import.go\na:0:0:444\nZ:Q1zn0uJ9Q2glIt3SUD68KW7A9vftY=\nR:inspect.go\na:0:0:444\nZ:Q1XubwCOWILHyNlwJv+mFqX+XIVOs=\nR:inspect_test.go\na:0:0:444\nZ:Q1BmmgMGKdL4xr1stZGT3sWQAre3U=\nR:list.go\na:0:0:444\nZ:Q1lSmV06Hy9UclI8Uq1kFGPEjzP68=\nR:list_test.go\na:0:0:444\nZ:Q1sDMYJgnbICZR4smvCxIJVWen0ks=\nR:options.go\na:0:0:444\nZ:Q1lJQY03DOG/YUf/iGZETs3/EzxXg=\nR:remove.go\na:0:0:444\nZ:Q1WN2hkFwTaFrvrUffNs5ewRCS4w0=\nR:remove_test.go\na:0:0:444\nZ:Q1Xniox8pab3HRLWI/TErStEUZpLw=\nR:update.go\na:0:0:444\nZ:Q1mPH4BfxMIs3KdzIG2VCRrxPJPw8=\nR:update_test.go\na:0:0:444\nZ:Q1W9qc0bb0FwGKl/g3SF/iVYG3y0o=\nR:use.go\na:0:0:444\nZ:Q18r4lkDJJqbwVRv0XO63JoucTJO8=\nR:use_test.go\na:0:0:444\nZ:Q1fTpoG9wC6CvRRZyk7wcs76K1tBU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/context/testdata\nM:0:0:555\nR:inspect.golden\na:0:0:444\nZ:Q1wZZR88aSiQXqje4qLEyYxVcnk48=\nR:list.golden\na:0:0:444\nZ:Q1dP54DPc1y5MGCgx3PypQWzlgnEs=\nR:quiet-list.golden\na:0:0:444\nZ:Q1o0mvUCZpVnsb5azCbp7gIJUJ+w4=\nR:test-kubeconfig\na:0:0:444\nZ:Q1NNV2n1DENkbiuCv2+rAF0NYwOkA=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/formatter\nM:0:0:555\nR:buildcache.go\na:0:0:444\nZ:Q1FQQjqaJwA+DLRjud0z6epA2M/gk=\nR:container.go\na:0:0:444\nZ:Q1a5rVMMNTLUhgftbirTtsOaN0dxI=\nR:container_test.go\na:0:0:444\nZ:Q1FTDXA0gPfAah0BFxepp42QMk3zI=\nR:context.go\na:0:0:444\nZ:Q1yQroKVwxyc8NhMuibYsZqVuC21Y=\nR:custom.go\na:0:0:444\nZ:Q150tXZURDcRNL0zk/lliM3ZYetwY=\nR:disk_usage.go\na:0:0:444\nZ:Q1/RqMmGp/FQaCZfJQUMgp2a3KFms=\nR:disk_usage_test.go\na:0:0:444\nZ:Q1RMcD7p84BUpXn5jXis9d5Hj+HQs=\nR:displayutils.go\na:0:0:444\nZ:Q1DaYTLAfYFMMfphiYI2T7htCzJ6o=\nR:displayutils_test.go\na:0:0:444\nZ:Q1e8tDlU/0d/K3oOLWl11RR7CBDQY=\nR:formatter.go\na:0:0:444\nZ:Q1FtjgOEAhDi3gMe4WbI9k6sAyFoY=\nR:image.go\na:0:0:444\nZ:Q1fLtgkTv9Hgr/yq7rUoL9N5mMUyc=\nR:image_test.go\na:0:0:444\nZ:Q19EZUgVvnePdg2KiZ577re8eCb1Y=\nR:reflect.go\na:0:0:444\nZ:Q1Tp0l4zDWy6c7ZDnI2abs8a5qsbQ=\nR:reflect_test.go\na:0:0:444\nZ:Q1A1YAeiKIGQJf5pJ/5uMpxQo4D3I=\nR:volume.go\na:0:0:444\nZ:Q1yF4JxQ/7vMJxbSXeqO0pfY/gi/I=\nR:volume_test.go\na:0:0:444\nZ:Q1cd+LFWwOjiXKwoaUh85TQWo/Hu4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/formatter/testdata\nM:0:0:555\nR:container-context-write-special-headers.golden\na:0:0:444\nZ:Q1F9gJx3eqy0ypnGnD7emVS97Ap4I=\nR:disk-usage-context-write-custom.golden\na:0:0:444\nZ:Q1AB0qM+YR+BcZxUs/agucthRh1R8=\nR:disk-usage-raw-format.golden\na:0:0:444\nZ:Q1z4dW5UH0uowBUIBX7FETExhKg54=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/idresolver\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1KF4rMFasFCywPyu+PjKgLiPoxzY=\nR:idresolver.go\na:0:0:444\nZ:Q1jZtpLV39YzdI1VHvVtD1AWd49y4=\nR:idresolver_test.go\na:0:0:444\nZ:Q1ujCyyhkTz60gARoJq2IJVqFL3Bc=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/image\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1dRplfQNWDmweopd8tieqAWI/Els=\nR:build_buildkit.go\na:0:0:444\nZ:Q1aCBMPbJYNpPcJsyNdYkOl2WCK7M=\nR:build_session.go\na:0:0:444\nZ:Q1/ltgKs9mAzgXwEYmXIapk/JpXB0=\nR:build_test.go\na:0:0:444\nZ:Q16Dmm7HNpc4GSDtoAfPVO4a0Mteg=\nR:client_test.go\na:0:0:444\nZ:Q1aYYt4sLCqOh90K8eo40G5O7mPbY=\nR:cmd.go\na:0:0:444\nZ:Q1Dr42eySiZ+DeuNkCvl2FUiXeCOM=\nR:formatter_history.go\na:0:0:444\nZ:Q12J3QpLzZgMcfXXxaSVt2HG9/DhA=\nR:formatter_history_test.go\na:0:0:444\nZ:Q16kq70PgBdAQcq6ISCK9+6qAZ9SY=\nR:history.go\na:0:0:444\nZ:Q11f1+ct1LqVYRchK23TjILSbkLpw=\nR:history_test.go\na:0:0:444\nZ:Q1liEHLA+rUANf3k029guKx0PTh+Q=\nR:import.go\na:0:0:444\nZ:Q1Hb0PTf2riXnVIUPBLewgsnPvdD0=\nR:import_test.go\na:0:0:444\nZ:Q1vx+D0s4wJLUT4jTdv8RjjG2KYpw=\nR:inspect.go\na:0:0:444\nZ:Q11bhSy5i2tcJEkq4ixeYA4MQDdMA=\nR:inspect_test.go\na:0:0:444\nZ:Q1IjfHiQn2ASKcwK0ylplaSsFvlzE=\nR:list.go\na:0:0:444\nZ:Q1yLB9m/iiiDExc5EphDKvAbKKzHc=\nR:list_test.go\na:0:0:444\nZ:Q1KfyWqLVYJ4kyZIF55hlJ8JPdg8Q=\nR:load.go\na:0:0:444\nZ:Q1nU6X+KDNU0rRoCJILnWD/dz9IGc=\nR:load_test.go\na:0:0:444\nZ:Q1tZXqe9GdMrWUai8czQRP1AIsAto=\nR:prune.go\na:0:0:444\nZ:Q1DF0RloAXFQ6nMIA4S0ydG8SO9IY=\nR:prune_test.go\na:0:0:444\nZ:Q11O06R4fq3j7bYmVJUI/9nbqHqVQ=\nR:pull.go\na:0:0:444\nZ:Q1KY9/Rmhfq2cjL8n5pcv5lVQ3wOc=\nR:pull_test.go\na:0:0:444\nZ:Q1yuBLcbZzcHeDMDQO3W0SEXQmTVs=\nR:push.go\na:0:0:444\nZ:Q1zYnV99ZQSbQN7CNPTOcWGtK5VFE=\nR:push_test.go\na:0:0:444\nZ:Q19ym59PqQQX6z9Rp6qqDU+vo1IL4=\nR:remove.go\na:0:0:444\nZ:Q1KEENldSWVp0Hio8Wg7AWZNL8uyE=\nR:remove_test.go\na:0:0:444\nZ:Q1dSNx/ZnPai5fTXrTWX55ZNtoFhc=\nR:save.go\na:0:0:444\nZ:Q1S+/bWvEUwOtIbbY6LELVIMf8TBY=\nR:save_test.go\na:0:0:444\nZ:Q1vq9crbQtoKhSTKxaUZADp0ddQOo=\nR:tag.go\na:0:0:444\nZ:Q1IfcTwxAFONq2og2mi+pm/wp4+OI=\nR:tag_test.go\na:0:0:444\nZ:Q1LBTgMZYLWJzfvTj21et2AetFCLw=\nR:trust.go\na:0:0:444\nZ:Q1X7OVSaccoxBACtZ8n1dcTEz8Htc=\nR:trust_test.go\na:0:0:444\nZ:Q1Y3D+nFXcQfTTMILQvclIzdz3UcY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/image/build\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1wG5lX24iKPFBK0BtbInQoKZHJ60=\nR:context_test.go\na:0:0:444\nZ:Q1cgqtlnDaBcIoD6gawYFaoOof1HY=\nR:context_unix.go\na:0:0:444\nZ:Q14YRquNEKuI2QDC/xN3rbMeIihZs=\nR:context_windows.go\na:0:0:444\nZ:Q1mmi0eICPF/qY/VmbHwXte3/w+sA=\nR:dockerignore.go\na:0:0:444\nZ:Q1uZQuB4d6ui6vFuSI2ZPKwqbP4ZY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/image/testdata\nM:0:0:555\nR:Dockerfile.test\na:0:0:444\nZ:Q1qRd37zVWowWklN1eZX+kEiruSYY=\nR:gittar.test\na:0:0:444\nZ:Q1njRfInLBL+DFG56ifp5u3Cbay8Q=\nR:history-command-success.non-human.golden\na:0:0:444\nZ:Q1hPMGyPzo2GmT7gLnyT5Gnww933Q=\nR:history-command-success.quiet-no-trunc.golden\na:0:0:444\nZ:Q1SV1skTIr7rRGZ4+LJ9yQ8cSxfhw=\nR:history-command-success.quiet.golden\na:0:0:444\nZ:Q1aRSOVWPX0JOSEBROipb864rH/NY=\nR:history-command-success.simple.golden\na:0:0:444\nZ:Q1+VkoGXnBpQ359pDDofKGfVd5MLo=\nR:import-command-success.input.txt\na:0:0:444\nZ:Q1ztoL5oUc3kHbkBDvYg00d8BYv1s=\nR:inspect-command-success.format.golden\na:0:0:444\nZ:Q1seYhZLbVgOYqhcJLc6CtF752Row=\nR:inspect-command-success.simple-many.golden\na:0:0:444\nZ:Q1Ma/hDm/ZtyEHohhGV7yQiour1lw=\nR:inspect-command-success.simple.golden\na:0:0:444\nZ:Q1yFmpi5Qhb45TJGuW9jErT//1rIg=\nR:list-command-success.filters.golden\na:0:0:444\nZ:Q1++ctc6LXRSn2UApFyImNeHqHhpE=\nR:list-command-success.format.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:list-command-success.match-name.golden\na:0:0:444\nZ:Q1++ctc6LXRSn2UApFyImNeHqHhpE=\nR:list-command-success.quiet-format.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:list-command-success.simple.golden\na:0:0:444\nZ:Q1++ctc6LXRSn2UApFyImNeHqHhpE=\nR:load-command-success.input-file.golden\na:0:0:444\nZ:Q1Qqj2Udef0AXurAYS32RCuYOgEYQ=\nR:load-command-success.input.txt\na:0:0:444\nZ:Q1ztoL5oUc3kHbkBDvYg00d8BYv1s=\nR:load-command-success.json.golden\na:0:0:444\nZ:Q13/n4aEEQW5xzK6x6dFP6ybYR3XI=\nR:load-command-success.simple.golden\na:0:0:444\nZ:Q1Qqj2Udef0AXurAYS32RCuYOgEYQ=\nR:prune-command-success.all.golden\na:0:0:444\nZ:Q1M+x8w7g1TyKp+amzYjHvQiIg9Vw=\nR:prune-command-success.force-deleted.golden\na:0:0:444\nZ:Q1HOeQ4iPkq5srZRkoEZtTpTXmzGc=\nR:prune-command-success.force-untagged.golden\na:0:0:444\nZ:Q1trFY+vveL++6oNZDZhuRh9bx0Ko=\nR:prune-command-success.label-filter.golden\na:0:0:444\nZ:Q1FEisMyY5alMgFqLdKy9nVp2drKo=\nR:pull-command-success.simple-no-tag.golden\na:0:0:444\nZ:Q1hLeSCNwuYCJ9ySDotiPG38Atl+4=\nR:pull-command-success.simple-quiet.golden\na:0:0:444\nZ:Q1Rdd9wmFpitn2S/W3KqMUMjqexRA=\nR:pull-command-success.simple.golden\na:0:0:444\nZ:Q1Mk8or4Rb2VCjzyawXxRdk3GmfMM=\nR:remove-command-success.Image Deleted and Untagged.golden\na:0:0:444\nZ:Q1YFdGNyE42q5+GGWv7OFPEDdqUEk=\nR:remove-command-success.Image Deleted.golden\na:0:0:444\nZ:Q1y3nOHR6TfqTlgYscj0UX0ShRvaY=\nR:remove-command-success.Image Untagged.golden\na:0:0:444\nZ:Q1rUmmoLQGArPv2aBRvu9faOTHN6M=\nR:remove-command-success.Image not found with force option.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:tar.test\na:0:0:444\nZ:Q1tHBsHkCovDtSgzY5obft81d/JYU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/inspect\nM:0:0:555\nR:inspector.go\na:0:0:444\nZ:Q13vi7FC+gVw3R1qFbRGgTZfOm0ao=\nR:inspector_test.go\na:0:0:444\nZ:Q1osNQkBWfsIlLXyXFWpnGYa02tcQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/manifest\nM:0:0:555\nR:annotate.go\na:0:0:444\nZ:Q1UDCdnYklMsEjbHrmQiJvNFUCwyQ=\nR:annotate_test.go\na:0:0:444\nZ:Q14lGU1+ZhWJ2zols0I/uO63HIWs0=\nR:client_test.go\na:0:0:444\nZ:Q1iu1uArHzngS4/Cwq64y4Whb78SA=\nR:cmd.go\na:0:0:444\nZ:Q14dw/1YIAxYcQAgp5PN1JmKQhze4=\nR:create_list.go\na:0:0:444\nZ:Q1yAb2BPbkSSYxZ/NsKxRrJCNVgLM=\nR:create_test.go\na:0:0:444\nZ:Q12WKVGw0O8DVmxEMnMGz4FCUOxEQ=\nR:inspect.go\na:0:0:444\nZ:Q1CRPH7tlYJDLhHa9WY+Vwtgf4lA4=\nR:inspect_test.go\na:0:0:444\nZ:Q1Vz6PbNYgQFwgl/IEyXoSFvFtT6g=\nR:push.go\na:0:0:444\nZ:Q1bAsOvatVo6kfjt18qccTa+cVuuY=\nR:push_test.go\na:0:0:444\nZ:Q1Quvr4PEIISHqJWtFcLd7bpQyVKE=\nR:rm.go\na:0:0:444\nZ:Q1aBZN8pxwp6t2Jo7bTKElz7+Tdsw=\nR:rm_test.go\na:0:0:444\nZ:Q1Y1zmSOFzoVr9kd/u4WlgRAFt5mU=\nR:util.go\na:0:0:444\nZ:Q1VddENLHUV3LoM+tNUnbtC2SwqQU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/manifest/testdata\nM:0:0:555\nR:inspect-annotate.golden\na:0:0:444\nZ:Q15QJg9ugxAgKpRc259LdYe41yIl8=\nR:inspect-manifest-list.golden\na:0:0:444\nZ:Q1aEjNrQouC4OuXkl4GO8BHve4lzI=\nR:inspect-manifest.golden\na:0:0:444\nZ:Q1ljid8CyDaTV62wpDCnHC2eJY2m0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/network\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1yrraw14dpTD2xivlaqQQBiIbOYM=\nR:cmd.go\na:0:0:444\nZ:Q10VC48u8cy3NQzLH7vyfvzI026bU=\nR:connect.go\na:0:0:444\nZ:Q1ZrunRyKjk2+fP6+j5AP/43txC+I=\nR:connect_test.go\na:0:0:444\nZ:Q1XhCXMptky+9VKScfsbpp0PNpmUQ=\nR:create.go\na:0:0:444\nZ:Q1E6C1LYdac/MCYBaqSBMehGR+WLA=\nR:create_test.go\na:0:0:444\nZ:Q1mCl3zM6ctBwXaXuffLby22wNxbs=\nR:disconnect.go\na:0:0:444\nZ:Q1HSqwjyCJ7ycnIhVArzjCPK2NGaU=\nR:disconnect_test.go\na:0:0:444\nZ:Q1Zw3PlU2uQpV7m4HUffimskQJaxs=\nR:formatter.go\na:0:0:444\nZ:Q1qL5fUEOPFNZzJbKxttJEMZXd6UQ=\nR:formatter_test.go\na:0:0:444\nZ:Q1MAO6IqTY8OUQSVAS6XlL4Cr3DmM=\nR:inspect.go\na:0:0:444\nZ:Q1wUarig/Dy68TsrkXgYt6mw6gYaY=\nR:list.go\na:0:0:444\nZ:Q1uzAmzxOtChiiaDDVOFUXq6Szlx4=\nR:list_test.go\na:0:0:444\nZ:Q1EqbCjEiZvxFJ4rgXR0gntplSmf4=\nR:prune.go\na:0:0:444\nZ:Q1Oyc4R7aKbH3Nl7v4iDTPxZWFdWI=\nR:remove.go\na:0:0:444\nZ:Q1yBgmqPa+y1uYkd2GXKjlEgWY5bQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/network/testdata\nM:0:0:555\nR:network-list-sort.golden\na:0:0:444\nZ:Q109/d7p2bEhHowCMVmqnfrSJ4Hbo=\nR:network-list.golden\na:0:0:444\nZ:Q19gpB+eW6BqrfZNh7deUFVinCEMM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/node\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1DRYvXblf7MAb8y0Q/LfaIg3fpew=\nR:cmd.go\na:0:0:444\nZ:Q1nHJX3YcCY07OOX/QWW2SLhBvgRY=\nR:demote.go\na:0:0:444\nZ:Q1xYEfqLqRv+n4RjywMCLuyyJKU4s=\nR:demote_test.go\na:0:0:444\nZ:Q1SIdTSf9JY+1WXDjhnn6cR7X+f10=\nR:formatter.go\na:0:0:444\nZ:Q1SfNN6W6ylgh3hUQVnAGxnntTdH4=\nR:formatter_test.go\na:0:0:444\nZ:Q1r79/CqfLls+P7qOI4HecDsTlnFY=\nR:inspect.go\na:0:0:444\nZ:Q16UbXwzTFUY2zS/H07ayYFxt1GHQ=\nR:inspect_test.go\na:0:0:444\nZ:Q1uSpWF5/Afne5Rz/2k6wxBssjqh4=\nR:list.go\na:0:0:444\nZ:Q16xwDHL4NHtB2vajDvhx/+1oQORM=\nR:list_test.go\na:0:0:444\nZ:Q12iOueVMVuyYHez25Oi8pDsB/zSM=\nR:opts.go\na:0:0:444\nZ:Q17ju5qWoZiK3uqf5AmUFHGSEMD9c=\nR:promote.go\na:0:0:444\nZ:Q1o9ic9SCtTxEN6PUZvLpQ7bKLLXM=\nR:promote_test.go\na:0:0:444\nZ:Q1DfBUFTWEOxfDUy/nlvNB8DOX0JU=\nR:ps.go\na:0:0:444\nZ:Q1sDWUSRKDi/b2RCM4bJ8VkVmP3TU=\nR:ps_test.go\na:0:0:444\nZ:Q17kJDrjxRzFFDM/iBqB22BTh9iuk=\nR:remove.go\na:0:0:444\nZ:Q1sJqmBlgxMpQKrsS4lTwui7Pw1/o=\nR:remove_test.go\na:0:0:444\nZ:Q1c8bR2WRZD6qF1v2uOKUkcrQ1Zf4=\nR:update.go\na:0:0:444\nZ:Q11DSN0mLtlnvm4KD8X/Ias2KA+hs=\nR:update_test.go\na:0:0:444\nZ:Q17MtvI4QtdMNdp0YmjZ00cDdhhqg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/node/testdata\nM:0:0:555\nR:node-inspect-pretty.manager-leader.golden\na:0:0:444\nZ:Q1B9YLlzGzr+dlDQ5bdNMvuKFMstk=\nR:node-inspect-pretty.manager.golden\na:0:0:444\nZ:Q1CQkaMBm3zkRY1CqlsC0BEUTaAQo=\nR:node-inspect-pretty.simple.golden\na:0:0:444\nZ:Q1wuISceldRfwi3X6ETsPX/869rVs=\nR:node-list-format-flag.golden\na:0:0:444\nZ:Q1yTPMxOys3vDv6w7f6LKV9ncC1LA=\nR:node-list-format-from-config.golden\na:0:0:444\nZ:Q1khscegzkkzD8GtrV1OXJcAz7eVU=\nR:node-list-sort.golden\na:0:0:444\nZ:Q1s2zy7NGYtwOhICgYSw2Qtvkhz+E=\nR:node-ps.simple.golden\na:0:0:444\nZ:Q1SzkOLFtSEyrGiU8SK/Ikk+c3IyA=\nR:node-ps.with-errors.golden\na:0:0:444\nZ:Q1/UZ8UeCfsMTvLR1jElVFPqTNqgg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/plugin\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1gbHJunClq1bhGDXiQLRokNZC8r0=\nR:cmd.go\na:0:0:444\nZ:Q1KfHsIBZId/cpagyiQGQcAF5EJoc=\nR:create.go\na:0:0:444\nZ:Q1wugNRq3MS9irRV9p21Pmc0UDqJo=\nR:create_test.go\na:0:0:444\nZ:Q14ufy6szh6y9G0YFw1OmEYxk5Na4=\nR:disable.go\na:0:0:444\nZ:Q1CvCvFBQ4DNMeMOWJkaL0BkBLQ+8=\nR:disable_test.go\na:0:0:444\nZ:Q18NH6W3qjZ+kxTOWcwK2KjTpKwqQ=\nR:enable.go\na:0:0:444\nZ:Q1zQWEbkofctsSXnQdeGknFEOxUMg=\nR:enable_test.go\na:0:0:444\nZ:Q1jzA86xs/6O4l2v/wXjNDMDBPGhE=\nR:formatter.go\na:0:0:444\nZ:Q1eHCUVlrxifx8ghAZ78KU6hfasKw=\nR:formatter_test.go\na:0:0:444\nZ:Q1oEpzq+ppZ82j2A2q0p7rb2olSV0=\nR:inspect.go\na:0:0:444\nZ:Q1soXMN++tePJePSIwXeuvPJz3wE0=\nR:inspect_test.go\na:0:0:444\nZ:Q1z004uj6n5CkNdTtY9OPYdONdXmg=\nR:install.go\na:0:0:444\nZ:Q1wOwETrAG2M7XZNVIXqSkwOiPsgA=\nR:install_test.go\na:0:0:444\nZ:Q18VDHnXDgbLI+Uq7L/6aLxeWn30Y=\nR:list.go\na:0:0:444\nZ:Q1ZLI2PIqZ3V3c3HftpZpmMOTnjAk=\nR:list_test.go\na:0:0:444\nZ:Q1pTwSEKfQKmqRdXi6/z92gNqKyBg=\nR:push.go\na:0:0:444\nZ:Q1rBUT+wyCPtXATirN2UNLtmBjYzg=\nR:remove.go\na:0:0:444\nZ:Q1c09hh4t2y0zEOZqqUr02nByKynk=\nR:remove_test.go\na:0:0:444\nZ:Q11x7oeEEjFfVOD/L+4+CyKMVcJDo=\nR:set.go\na:0:0:444\nZ:Q1IgqJzN2VTDkgNuntQ0jNqNki25Q=\nR:upgrade.go\na:0:0:444\nZ:Q1C02R1tGWcF+lKzSMowE9epr43Fg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/plugin/testdata\nM:0:0:555\nR:plugin-inspect-multiple-with-format.golden\na:0:0:444\nZ:Q1V4nwf2Zkzy+WP7EIPW74lhxH2Ww=\nR:plugin-inspect-single-with-format.golden\na:0:0:444\nZ:Q1N6B2gRlwem0xGBhtKhIrFV4LyEM=\nR:plugin-inspect-single-without-format.golden\na:0:0:444\nZ:Q10GjeU/zLy+Lx4XJk6igsQUsjrak=\nR:plugin-list-sort.golden\na:0:0:444\nZ:Q1YkXDwEERSTlxvLsPSl4dnGNNlpI=\nR:plugin-list-with-format.golden\na:0:0:444\nZ:Q1N6B2gRlwem0xGBhtKhIrFV4LyEM=\nR:plugin-list-with-no-trunc-option.golden\na:0:0:444\nZ:Q1H5hGR71bjq2crRgVlccjMbBQF/8=\nR:plugin-list-with-quiet-option.golden\na:0:0:444\nZ:Q1RzDe3/KCGBFHqGQGSlUEOhdMrAA=\nR:plugin-list-without-format.golden\na:0:0:444\nZ:Q1SB2xXckcC+p1vtbueVRqGvYLraE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/registry\nM:0:0:555\nR:formatter_search.go\na:0:0:444\nZ:Q1sAYjM9uSNMAICJRQ2rfrQ/SIMRg=\nR:formatter_search_test.go\na:0:0:444\nZ:Q1KOkZa6OknmIPik3JZeowLG4Sc1Y=\nR:login.go\na:0:0:444\nZ:Q13NacAhaNnuBMuRrvyt+Zoiz1tSE=\nR:login_test.go\na:0:0:444\nZ:Q1L5Q7dH7TyEA3Kn5ID0RdYsrhkAE=\nR:logout.go\na:0:0:444\nZ:Q13Tlqz7sJ6xaRxGpAOAXYTLgfMVU=\nR:search.go\na:0:0:444\nZ:Q11AU5INiBUg8ZcuRL1SxSy7RIw1M=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/registry/testdata\nM:0:0:555\nR:search-context-write-stars-table.golden\na:0:0:444\nZ:Q14B47omBjDOrXGtyQo39E7C2Hkpw=\nR:search-context-write-table.golden\na:0:0:444\nZ:Q1OQl1kXPYuihZjz0f2l+8xwOmQEA=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/secret\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1oUTdXNVi53Az9DElH0Y0a7Xs6NA=\nR:cmd.go\na:0:0:444\nZ:Q1xtbLzMA45D0ofGqVhnnt7+htUd0=\nR:create.go\na:0:0:444\nZ:Q1yIWd06zVbK9WgyPYCrI6HIgzMOI=\nR:create_test.go\na:0:0:444\nZ:Q1sP7YsylZugy/Uc6QGjFROrSMhzU=\nR:formatter.go\na:0:0:444\nZ:Q1tlt3UNnqc6i0g5xYcGpj5FxxHFc=\nR:formatter_test.go\na:0:0:444\nZ:Q1pdNNSqqOY0xa+y2vCOAEUbm5xGs=\nR:inspect.go\na:0:0:444\nZ:Q1E+nXfyNASSqMW4b9P17k2aiscEc=\nR:inspect_test.go\na:0:0:444\nZ:Q1grzmOLYJjGedPmkpKlYWh2i9tFg=\nR:ls.go\na:0:0:444\nZ:Q1REQf4UrccXfRK+T4ImaP8LEDmcA=\nR:ls_test.go\na:0:0:444\nZ:Q10UYB62fLF7xyf8DPWlHJ/mhmOWk=\nR:remove.go\na:0:0:444\nZ:Q1nMh0kmKI131/w5QHuUaDcWHnFPQ=\nR:remove_test.go\na:0:0:444\nZ:Q1XujVvKyl78FHBifeSDd6ME//ssw=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/secret/testdata\nM:0:0:555\nR:secret-create-with-name.golden\na:0:0:444\nZ:Q1NfzZtFiXk1HogbDCYCFep5ptkFE=\nR:secret-inspect-pretty.simple.golden\na:0:0:444\nZ:Q15cnkSw5Qv62teXhV+9opw/euN6c=\nR:secret-inspect-with-format.json-template.golden\na:0:0:444\nZ:Q1ZLsRTdes04yXvE6xugPCT/zOoCs=\nR:secret-inspect-with-format.simple-template.golden\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nR:secret-inspect-without-format.multiple-secrets-with-labels.golden\na:0:0:444\nZ:Q1YyIuM5WP9BqVANyrhUosPEVebkU=\nR:secret-inspect-without-format.single-secret.golden\na:0:0:444\nZ:Q1rVFxw164AuGM2A/HgajFY9btP4o=\nR:secret-list-sort.golden\na:0:0:444\nZ:Q1oyuFoTK17o4oBL1crcYVSToYze4=\nR:secret-list-with-config-format.golden\na:0:0:444\nZ:Q1uqeEPbrN8d6upWs2A3eSKHcrIzs=\nR:secret-list-with-filter.golden\na:0:0:444\nZ:Q1X9bDdxqHodn2+QzuWwmRoWgxlW8=\nR:secret-list-with-format.golden\na:0:0:444\nZ:Q1uqeEPbrN8d6upWs2A3eSKHcrIzs=\nR:secret-list-with-quiet-option.golden\na:0:0:444\nZ:Q1ah4OOnaiDBUT9to95tImMyvXves=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/service\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1qV3IKrxTrHN2ZmeA+uvOoe+IJJc=\nR:cmd.go\na:0:0:444\nZ:Q1zHpHVltYFWNh2PyPPd6TU90VEkQ=\nR:create.go\na:0:0:444\nZ:Q11mer9fr8GtudwwrH1B5iZInu5n4=\nR:create_test.go\na:0:0:444\nZ:Q1a9OPiIUYoQpHXb90VV0emg9FRho=\nR:formatter.go\na:0:0:444\nZ:Q1TcbXr+rSXw8Kuua64xQYZsWvPYs=\nR:formatter_test.go\na:0:0:444\nZ:Q1ecshfaaOTHRw6CIYx7lM0ZnwKEU=\nR:generic_resource_opts.go\na:0:0:444\nZ:Q1nF9Sr7cHRhOikMWqjMjLhotaFHE=\nR:generic_resource_opts_test.go\na:0:0:444\nZ:Q1wkmeRcPE8CAvDPY/s8SAMr5XU28=\nR:helpers.go\na:0:0:444\nZ:Q19vMHn80E194tvqWRNc7lW2+0vbo=\nR:inspect.go\na:0:0:444\nZ:Q1Kn1kjS6I+12hToxFibwVjHOExbg=\nR:inspect_test.go\na:0:0:444\nZ:Q1yFRpvPMN1ttZBpjVwAe7i0m0aw0=\nR:list.go\na:0:0:444\nZ:Q1nsJo+Rog9Qp6carI/TiBd55JJ3Q=\nR:list_test.go\na:0:0:444\nZ:Q1WjnO/59pxxar1X4IIVyBuDL6dJ0=\nR:logs.go\na:0:0:444\nZ:Q1kF8vNznWSY3JvQcZpVfUlIsREGc=\nR:opts.go\na:0:0:444\nZ:Q1WLJHMBdIz6v/vFrYQOHAJeiksQc=\nR:opts_test.go\na:0:0:444\nZ:Q1IZgLkKNP8FJTBuleyIS1BTtpLYg=\nR:parse.go\na:0:0:444\nZ:Q1d4MAJEw6oLOUf1fRKKyZhTICPa0=\nR:ps.go\na:0:0:444\nZ:Q1ExLemk7/C9JXirZJTvgf8s4U32Q=\nR:ps_test.go\na:0:0:444\nZ:Q1PtfO9Ik9sYEkn+zLD2UzwtDO6yg=\nR:remove.go\na:0:0:444\nZ:Q1sPMBC06NRxy2dOiiPCJz1U1yFrU=\nR:rollback.go\na:0:0:444\nZ:Q1hz5Gjf59nVG4O3UcLDnsdzyZKFE=\nR:rollback_test.go\na:0:0:444\nZ:Q1GbcrbKYmCqYcUOjxEPb9TBo5aic=\nR:scale.go\na:0:0:444\nZ:Q1k3qEwXmkKKUUlfIf1b4y2nuzhFc=\nR:trust.go\na:0:0:444\nZ:Q1iRBp/80sklYd2VC2fL/iLNyjWXI=\nR:update.go\na:0:0:444\nZ:Q18azms9jPsHYELuARd4lSE3fckjU=\nR:update_test.go\na:0:0:444\nZ:Q13kSU1xtt9QLzXIbgQ7V870HrtYk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/service/progress\nM:0:0:555\nR:progress.go\na:0:0:444\nZ:Q1nwukdD2eJkHsbMaYMEReLWI1ySo=\nR:progress_test.go\na:0:0:444\nZ:Q1s4BtZTReXKVujrGpf83CNTrlcNA=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/service/testdata\nM:0:0:555\nR:service-context-write-raw.golden\na:0:0:444\nZ:Q1WDtkaUNgHGdrrOUpCnKEWS4wPwY=\nR:service-inspect-pretty.golden\na:0:0:444\nZ:Q12O4CfkYpmTm2FVF+PzddduIo9HM=\nR:service-list-sort.golden\na:0:0:444\nZ:Q1N9Mx+JhW7V39liZOGihUQA5rrOk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1fnBE9GojL5Q1Z4qNFT5bw/jDqnE=\nR:cmd.go\na:0:0:444\nZ:Q1/KLPa/HW0COzwtMR8xSlcPHympc=\nR:common.go\na:0:0:444\nZ:Q1TdkqxoLUfb9U/+r9oEnzNnDzcuo=\nR:deploy.go\na:0:0:444\nZ:Q1ZaHtpzaCujSPYmAPJLzufPN7jWw=\nR:deploy_test.go\na:0:0:444\nZ:Q1rNBHiRlnc3wRekb4Jdd3xfx8WFA=\nR:list.go\na:0:0:444\nZ:Q1R8pmnkoKSMfGzd/WV98arfI761k=\nR:list_test.go\na:0:0:444\nZ:Q1+dBfEppPlcgFoQP9zLnmMDkjZ8I=\nR:ps.go\na:0:0:444\nZ:Q1V3vciGKngI06NWwjNOWVkW1DBVo=\nR:ps_test.go\na:0:0:444\nZ:Q1MPNoxfD6WOnluM4Sg37IxPqyOME=\nR:remove.go\na:0:0:444\nZ:Q19LS8idt2evLfD5nO5XTGR4cu328=\nR:remove_test.go\na:0:0:444\nZ:Q10R0emIvHkt/w7hQIKS7eNMjXSts=\nR:services.go\na:0:0:444\nZ:Q1bdQvjWa7YB04D+eJDw386qLGzNY=\nR:services_test.go\na:0:0:444\nZ:Q1EVqStlLaw3VNgXC9Bn/5stjCUY4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/formatter\nM:0:0:555\nR:formatter.go\na:0:0:444\nZ:Q1Nky58QhLFFOk1CUOxPCFMzpNp/k=\nR:formatter_test.go\na:0:0:444\nZ:Q1x8LL5hZSO20w9vPRNgojj4929mg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/kubernetes\nM:0:0:555\nR:cli.go\na:0:0:444\nZ:Q17FlKTbrpK1HYPRbMDjXQRVgC1tk=\nR:client.go\na:0:0:444\nZ:Q15+U+11s+sfol+YSsv0wppDjZ3JE=\nR:conversion.go\na:0:0:444\nZ:Q1lg4yhaJAxE/wLPs9kEBF3C7py3c=\nR:conversion_test.go\na:0:0:444\nZ:Q19QAL/lTu0tvSOiFL7/11Axq1g7Q=\nR:convert.go\na:0:0:444\nZ:Q11vlFRxBoKypZ+ZxDi3EuFcvP0No=\nR:convert_test.go\na:0:0:444\nZ:Q1Ie65DhYLg/ieg4AwKLw+bIk3cGQ=\nR:deploy.go\na:0:0:444\nZ:Q1RPBp8FMjqQlLbBUHSNWxEZtK+Lc=\nR:deploy_test.go\na:0:0:444\nZ:Q14Xh6Vs+9tevs/S2i5t6hx56tFjI=\nR:list.go\na:0:0:444\nZ:Q1VXZgqGgHUnjzdSFjbrkSlcupEKQ=\nR:ps.go\na:0:0:444\nZ:Q1K30WJF0bUY2Jirb0qk0Kr0LVrvg=\nR:remove.go\na:0:0:444\nZ:Q1miplB5On+vw5dZWDzySvGqoLGbQ=\nR:services.go\na:0:0:444\nZ:Q1DLH6R4khZwSk9moClpRffmGKpN8=\nR:services_test.go\na:0:0:444\nZ:Q1BDHCk8HCSfAdNSBK/kiWDXfVW1I=\nR:stack.go\na:0:0:444\nZ:Q1YEtHohYfbbMshvejD3Fi/MkNe2Q=\nR:stackclient.go\na:0:0:444\nZ:Q1R2+urmDNBL/tlLfdct0z2uln90Y=\nR:stackclient_test.go\na:0:0:444\nZ:Q1+LiXTJ9yTSYGVo+CUKf5DtAMdiI=\nR:warnings.go\na:0:0:444\nZ:Q1xdvef9OC9nEpZZzDqnP18trELvw=\nR:warnings_test.go\na:0:0:444\nZ:Q1kBoXv9QrzM8W3sM2It6SKhLVsv0=\nR:watcher.go\na:0:0:444\nZ:Q1pvsZNFdCfB77BBETKzpEn3u10Z8=\nR:watcher_test.go\na:0:0:444\nZ:Q1PaeeOorPF+zPCiVQRiTiOEOhi78=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/kubernetes/testdata\nM:0:0:555\nR:compose-with-expose.yml\na:0:0:444\nZ:Q1+ymYzcz9IksvqsioUTOTwiNpCeU=\nR:compose-with-pull-policy.yml\na:0:0:444\nZ:Q1Fj7oS9uVP3bZb2CtRpzzQ6DYfQI=\nR:compose-with-pull-secret.yml\na:0:0:444\nZ:Q1ZevkYiYI8Z4TH8W74/3MIWCPHw4=\nR:config\na:0:0:444\nZ:Q1cUaCNmVdg8M50Ipy0s5Z2xlZf/A=\nR:secret\na:0:0:444\nZ:Q1atphTwXwCXNVIrUFTHWrXk9h80g=\nR:warnings.golden\na:0:0:444\nZ:Q10Hv1SeE8xIy86pCeQVux25tfj+s=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/loader\nM:0:0:555\nR:loader.go\na:0:0:444\nZ:Q1WZ3iDPtNasFyDGFN1+GVsGDx2fo=\nR:loader_test.go\na:0:0:444\nZ:Q19gNUl5YWT7/HMXRLavgN9HHusVU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/options\nM:0:0:555\nR:opts.go\na:0:0:444\nZ:Q1BwJK5WW1MHeSeYxig8Fa8LG4J4k=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/swarm\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1dfNfQp1FjcCO4UuygE6S412j3ck=\nR:common.go\na:0:0:444\nZ:Q1Y/0LzdRYPBSFjKyE2/d6YAeycM4=\nR:deploy.go\na:0:0:444\nZ:Q1jOgFWNf2K6I6xugequsT50rGYxs=\nR:deploy_composefile.go\na:0:0:444\nZ:Q1/bRhTvrLsv5ZXJzbZBVrIx8VtTQ=\nR:deploy_composefile_test.go\na:0:0:444\nZ:Q1+xy+YaUTHZXAyFjeiBmtb5y2U7M=\nR:deploy_test.go\na:0:0:444\nZ:Q1TE+FbKxxLmOomp5NrmIoFUjMUlA=\nR:list.go\na:0:0:444\nZ:Q1rxKav3Mx+DU8nPMh+3oUFo0Ykd0=\nR:ps.go\na:0:0:444\nZ:Q1b0lGq4vERJmCMQWyeOBoO3Sytuk=\nR:remove.go\na:0:0:444\nZ:Q19tm8t5TgqSoTAMjjz376sVZb19o=\nR:services.go\na:0:0:444\nZ:Q1NjzRAKFq5xqa7CYC6LGkO3tx5qE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/stack/testdata\nM:0:0:555\nR:stack-list-sort-natural.golden\na:0:0:444\nZ:Q1RCLhGfGXlqMXLDHJuUPKBLrxSHo=\nR:stack-list-sort.golden\na:0:0:444\nZ:Q1xxxjqp7P6QJaZAUifhsiN5Bs8z4=\nR:stack-list-with-format.golden\na:0:0:444\nZ:Q1bALm37mqEM2zb6AOy1kwfUvZ15c=\nR:stack-list-without-format.golden\na:0:0:444\nZ:Q1a6l3UTX2d92zyuTVkh2LAq5epgU=\nR:stack-ps-with-config-format.golden\na:0:0:444\nZ:Q1DsA5/M1lHdCvedL9aMFXHesko84=\nR:stack-ps-with-format.golden\na:0:0:444\nZ:Q1DsA5/M1lHdCvedL9aMFXHesko84=\nR:stack-ps-with-no-resolve-option.golden\na:0:0:444\nZ:Q1z2iHe0Fj0N3WdEEeRXd1qsk1hGg=\nR:stack-ps-with-no-trunc-option.golden\na:0:0:444\nZ:Q1FwtAOQu8vcOKW+swyUT/nNBtmAs=\nR:stack-ps-with-quiet-option.golden\na:0:0:444\nZ:Q1RzDe3/KCGBFHqGQGSlUEOhdMrAA=\nR:stack-ps-without-format.golden\na:0:0:444\nZ:Q1DWA+mqMZDeY77BOaeiJ7jkJLOmo=\nR:stack-services-with-config-format.golden\na:0:0:444\nZ:Q1bALm37mqEM2zb6AOy1kwfUvZ15c=\nR:stack-services-with-format.golden\na:0:0:444\nZ:Q1bALm37mqEM2zb6AOy1kwfUvZ15c=\nR:stack-services-with-quiet-option.golden\na:0:0:444\nZ:Q1RzDe3/KCGBFHqGQGSlUEOhdMrAA=\nR:stack-services-without-format.golden\na:0:0:444\nZ:Q1Qm0NnzErzGuFV6lDxQl27kjSvYI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/swarm\nM:0:0:555\nR:ca.go\na:0:0:444\nZ:Q1tok8mFJF+UYo4naflJsjWz0GV5g=\nR:ca_test.go\na:0:0:444\nZ:Q1EhS+HGuGT8uxb4Nd8UbBzx+NZw8=\nR:client_test.go\na:0:0:444\nZ:Q13j49+OL4Mn6Gw1Pxqtd3HM/KLqc=\nR:cmd.go\na:0:0:444\nZ:Q10CR5NDZJ+ohAstwXfE5uYP5+MmA=\nR:init.go\na:0:0:444\nZ:Q1yOZ7M82bjqHfLK4nWDEHL5GNaqo=\nR:init_test.go\na:0:0:444\nZ:Q1PbnUkPS1OUaIqK0/IGj0EkVMIc4=\nR:ipnet_slice.go\na:0:0:444\nZ:Q14gcOc2odrs5QUq/k6MxpVO+vEUk=\nR:ipnet_slice_test.go\na:0:0:444\nZ:Q1sJFL2jsnSmOdXVNJ+hwC6eoNbiU=\nR:join.go\na:0:0:444\nZ:Q1t13+IGu2pxxQ6mZkc1xA/LGPh8M=\nR:join_test.go\na:0:0:444\nZ:Q1qn3snVS1iLs5o+ZxTEg3OZeE91w=\nR:join_token.go\na:0:0:444\nZ:Q1s8hot65slNv3Gs2lhcyJKu63Kvo=\nR:join_token_test.go\na:0:0:444\nZ:Q17xnjI/1a/PCdvS8TeDICtHKa+Og=\nR:leave.go\na:0:0:444\nZ:Q1z5u8ahA8zY3v5uquhuQFTRLQ1kQ=\nR:leave_test.go\na:0:0:444\nZ:Q1k1E5Hj/Kh9YDz9XRfFwlAdi8WFU=\nR:opts.go\na:0:0:444\nZ:Q1OcgR7hzbyW+b/XYXSEeYrvZEQy4=\nR:opts_test.go\na:0:0:444\nZ:Q1gJK3jYWE0yl4xjnpVxNZkNwOMjU=\nR:unlock.go\na:0:0:444\nZ:Q1omEkGUQcyW4tic2xG2iQU3ffsg8=\nR:unlock_key.go\na:0:0:444\nZ:Q1TB3818gSfb7+MgIhoA/ClsEQl00=\nR:unlock_key_test.go\na:0:0:444\nZ:Q1hGSD1YQAeipj4XBS+YrEmX0hYYA=\nR:unlock_test.go\na:0:0:444\nZ:Q1M2FsNCiD2Fv+QWNWrFZ4BydhntU=\nR:update.go\na:0:0:444\nZ:Q1UMuypLrm3asU/UiCrg4QLzWOBRo=\nR:update_test.go\na:0:0:444\nZ:Q1XJFfctXhrgWtUHcS0i/y8XC7c6E=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/swarm/progress\nM:0:0:555\nR:root_rotation.go\na:0:0:444\nZ:Q1xyEVv5KFz84deCiiyz0YR9yhhK8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/swarm/testdata\nM:0:0:555\nR:init-init-autolock.golden\na:0:0:444\nZ:Q1t4YKB2LBPdN8iywrdo9CXG8BjOg=\nR:init-init.golden\na:0:0:444\nZ:Q1kWNFxf70woVFmGeSK0+tlNSqPV4=\nR:jointoken-manager-quiet.golden\na:0:0:444\nZ:Q1qnax6850RCiizoIbrnr/bIdb6uE=\nR:jointoken-manager-rotate.golden\na:0:0:444\nZ:Q1Lx5NHErGBlQTlS6YLEji1d4yduQ=\nR:jointoken-manager.golden\na:0:0:444\nZ:Q17W085N4xoAd3exFvs6X3X2UM0N4=\nR:jointoken-worker-quiet.golden\na:0:0:444\nZ:Q1vQ13dPDzQ20V6vRnZkDWeIAj2G4=\nR:jointoken-worker.golden\na:0:0:444\nZ:Q10J61EkjEdr2WbRLqCy4n5f+3nrI=\nR:unlockkeys-unlock-key-quiet.golden\na:0:0:444\nZ:Q1wZ64KcALKf5Ei1Vz+sTuqTSugLQ=\nR:unlockkeys-unlock-key-rotate-quiet.golden\na:0:0:444\nZ:Q1wZ64KcALKf5Ei1Vz+sTuqTSugLQ=\nR:unlockkeys-unlock-key-rotate.golden\na:0:0:444\nZ:Q1S5fCotKQBflEjJgDdtPQQ9J0mns=\nR:unlockkeys-unlock-key.golden\na:0:0:444\nZ:Q1Twtx5+yoozhuYqZRKSBw/Zo6qeQ=\nR:update-all-flags-quiet.golden\na:0:0:444\nZ:Q1g3oSeZdnCiK6ABrgyV38/dRtM00=\nR:update-autolock-unlock-key.golden\na:0:0:444\nZ:Q1joBtyI2zrCreHnij0Xx/DgMMkh8=\nR:update-noargs.golden\na:0:0:444\nZ:Q18TVYbEei2UMNsXqCDytoFmA5kPE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/system\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1e3ptXhc78JZDEWsDXx4vtJqDz/M=\nR:cmd.go\na:0:0:444\nZ:Q1pKQMigbqHxZXwynZP7gaj+rhTpw=\nR:df.go\na:0:0:444\nZ:Q1gkDiI88vUA3IQyUrai2p3nY1mIQ=\nR:dial_stdio.go\na:0:0:444\nZ:Q1D/qpD2r/RhQrK9D1xohG4yRHv98=\nR:events.go\na:0:0:444\nZ:Q1kU5/MqnX2Cfl5oJDj9hD6rWyvvY=\nR:info.go\na:0:0:444\nZ:Q1xAQ+wlM/HYzhTPBS9JfbxtPhqDQ=\nR:info_test.go\na:0:0:444\nZ:Q1ZkTe0wElE62XcitaQ91u1t/kcf0=\nR:inspect.go\na:0:0:444\nZ:Q1kp5VGNAsrbwa6DHjXfBo2EkVxtc=\nR:prune.go\na:0:0:444\nZ:Q1zw95H7tmQmSAu7QNC8cVZM8w9w0=\nR:prune_test.go\na:0:0:444\nZ:Q1c1i5fY9mHhOFFEDdkIH+MfP7b2w=\nR:version.go\na:0:0:444\nZ:Q1DT4JivjNL6DW2Xy41kil1V7DeYU=\nR:version_test.go\na:0:0:444\nZ:Q1au67c9sPwLyTa3GwugpukuOm8Ig=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/system/testdata\nM:0:0:555\nR:docker-client-version.golden\na:0:0:444\nZ:Q1/iIH3ypZBeTbQvCqyn4zm1P0x8U=\nR:docker-info-badsec.golden\na:0:0:444\nZ:Q1RVZ1/u9hs2thZ1Iom5jIcz0fEjw=\nR:docker-info-badsec.json.golden\na:0:0:444\nZ:Q1VrCqzxHf/UY1Zy59HyF1ESQ+0zQ=\nR:docker-info-daemon-warnings.json.golden\na:0:0:444\nZ:Q15qp+gfYQdiJxYjPlAnLUgfDuEpE=\nR:docker-info-errors.golden\na:0:0:444\nZ:Q1I2gv6DLPEfG6ja3x+d0Dy4wmtWo=\nR:docker-info-errors.json.golden\na:0:0:444\nZ:Q1OMQE5d0veGFlcKTKFXScyU0KSvA=\nR:docker-info-legacy-warnings.json.golden\na:0:0:444\nZ:Q17mINa7cWNTJkekM9AudX58CIL2I=\nR:docker-info-no-swarm.golden\na:0:0:444\nZ:Q1Zb8uELK0qLYVKOMTr9poIhHUP+4=\nR:docker-info-no-swarm.json.golden\na:0:0:444\nZ:Q1aF+RVLEO5d7DIyWYR1PSPj3xhKg=\nR:docker-info-plugins-warnings.golden\na:0:0:444\nZ:Q1ru4yeqiRcKvVe4E99Nbe/CB/iiU=\nR:docker-info-plugins.golden\na:0:0:444\nZ:Q1EKwpDSNT0uWVhWb5/5tUObOLcO4=\nR:docker-info-plugins.json.golden\na:0:0:444\nZ:Q1BWhh6p9z91S8URxh9Uq2/AKEdlE=\nR:docker-info-warnings.golden\na:0:0:444\nZ:Q1mQZi9ZpfIQMPTEEvt/znun0WuaI=\nR:docker-info-with-swarm.golden\na:0:0:444\nZ:Q1xputHzA2vw9cQ4XeD1YYVSp3Gk4=\nR:docker-info-with-swarm.json.golden\na:0:0:444\nZ:Q1a4/wmcGtA9TgBwdZNDa748AhyzE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/task\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1wDFWD5ZprLfVZYUoC+W7k2uCxpI=\nR:formatter.go\na:0:0:444\nZ:Q1ez9NICj113yVJG+HmKZJXzAjar4=\nR:formatter_test.go\na:0:0:444\nZ:Q1Wv3XF65P42ebBlsxzPnai65fkmk=\nR:print.go\na:0:0:444\nZ:Q1vyckwhO5AvFrtOCOoqbdaJhqBhA=\nR:print_test.go\na:0:0:444\nZ:Q1GaN7r3l/3pLSvEZPEC1B9ocmYfw=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/task/testdata\nM:0:0:555\nR:task-context-write-table-custom.golden\na:0:0:444\nZ:Q1OQlM0/qHzdTJnWmk8Qhja8AWtLg=\nR:task-print-sorted.golden\na:0:0:444\nZ:Q1QkKIJ4rUX5aeGgMnmCRcfO0Fn4E=\nR:task-print-with-global-service.golden\na:0:0:444\nZ:Q1kQ5zmEOv8CKd65m2tpnhrYg0Pn8=\nR:task-print-with-indentation.golden\na:0:0:444\nZ:Q1nV1X3QOoPauM9nWhhhoHl1futEk=\nR:task-print-with-no-trunc-option.golden\na:0:0:444\nZ:Q15IvwWtaXIwtWwiVzVCujp5D4CJE=\nR:task-print-with-quiet-option.golden\na:0:0:444\nZ:Q1RzDe3/KCGBFHqGQGSlUEOhdMrAA=\nR:task-print-with-replicated-service.golden\na:0:0:444\nZ:Q1DsA5/M1lHdCvedL9aMFXHesko84=\nR:task-print-with-resolution.golden\na:0:0:444\nZ:Q1PYCiL5senWf4xUfzwbeAEp6bGsk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/testdata\nM:0:0:555\nR:ca.pem\na:0:0:444\nZ:Q15oHm1uzHW3EhKS1BnhkoiQetspE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/trust\nM:0:0:555\nR:cmd.go\na:0:0:444\nZ:Q1QrfXK3TCTKhy2v23PyvEuvOndl0=\nR:common.go\na:0:0:444\nZ:Q10dqSfLdwmIXhK5bw/RjthrqQ+xc=\nR:common_test.go\na:0:0:444\nZ:Q1VMqODLGY7p7PdOWxIqr7YtZkhn8=\nR:formatter.go\na:0:0:444\nZ:Q1VDceuxomtZ7LL+OZcnqa4bknrVQ=\nR:formatter_test.go\na:0:0:444\nZ:Q1n40qLehfWL/LZs2J1VzQP65PUSA=\nR:helpers.go\na:0:0:444\nZ:Q1HENTs1TP9ofNUwX+tCIHB8WNMhE=\nR:helpers_test.go\na:0:0:444\nZ:Q1qofsEIzjr59K70ufz2DI5xPmXHQ=\nR:inspect.go\na:0:0:444\nZ:Q1HffomNQewMRv0Rzn8s3Z/t5sS30=\nR:inspect_pretty.go\na:0:0:444\nZ:Q1HWJmLuyv2GyJYBApzBFvJgU/KFc=\nR:inspect_pretty_test.go\na:0:0:444\nZ:Q10dJUxtAno2Z4NiU4egPp+PROGyc=\nR:inspect_test.go\na:0:0:444\nZ:Q1O2WhvRF6Isvj+Tp5zGFhroIrrJY=\nR:key.go\na:0:0:444\nZ:Q1R27HX7moIUbB0g2eVc71WTCPlQQ=\nR:key_generate.go\na:0:0:444\nZ:Q1Z5XrOW181QgHDZv6D4uecyc1s94=\nR:key_generate_test.go\na:0:0:444\nZ:Q14IDX8MbXgI0lW7jIGSooAjaZSYw=\nR:key_load.go\na:0:0:444\nZ:Q17hmGGDZqkx14kapJE0pum+uFgks=\nR:key_load_test.go\na:0:0:444\nZ:Q10SHUgiR79u8bWm/xoSd9Xp8G4a0=\nR:revoke.go\na:0:0:444\nZ:Q1i2+/Vr0GuR/hqRGqm6h+DAuCR9k=\nR:revoke_test.go\na:0:0:444\nZ:Q11GKp1dhrsrFd+6ZJKZ4tY7cRGww=\nR:sign.go\na:0:0:444\nZ:Q16rK63wHF1aOc+Js8xNOl7LzcQKQ=\nR:sign_test.go\na:0:0:444\nZ:Q1l05TPhQGcNFlIkHhE5Gj08o4sx8=\nR:signer.go\na:0:0:444\nZ:Q1jU7CAPo7bZ0oI5WFRnKksftZ4ks=\nR:signer_add.go\na:0:0:444\nZ:Q1NaD+CdHHdNNI3CnE0DMfHjBgIkE=\nR:signer_add_test.go\na:0:0:444\nZ:Q16DzYybQ8bFFeylXUaehLnc0oqRg=\nR:signer_remove.go\na:0:0:444\nZ:Q1NcSWA2K9JTfaq3K88e/+z3hEPd4=\nR:signer_remove_test.go\na:0:0:444\nZ:Q19RSNlT2fB+RSeYEJPo9Dp0wEE6w=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/trust/testdata\nM:0:0:555\nR:trust-inspect-empty-repo.golden\na:0:0:444\nZ:Q1Zuc95AxuKoST+T68m4wohOv1h54=\nR:trust-inspect-full-repo-no-signers.golden\na:0:0:444\nZ:Q12AEiiqzFNjNsrLoAiElJwtxcPoQ=\nR:trust-inspect-full-repo-with-signers.golden\na:0:0:444\nZ:Q1Z7j7lDGCjt8qZXrSz8bnQB2WQ7o=\nR:trust-inspect-multiple-repos-with-signers.golden\na:0:0:444\nZ:Q1Z/5ZIqogkcp69WEczmHwTiZtGkM=\nR:trust-inspect-one-tag-no-signers.golden\na:0:0:444\nZ:Q1dV7yR6l4t1z/Owwqta6iW73bg9Q=\nR:trust-inspect-pretty-full-repo-no-signers.golden\na:0:0:444\nZ:Q1KrEiahgU+/dBxG7067aWF4i8K0c=\nR:trust-inspect-pretty-full-repo-with-signers.golden\na:0:0:444\nZ:Q1GmjVVCvMqkNn2NltlY8owwEcnyk=\nR:trust-inspect-pretty-one-tag-no-signers.golden\na:0:0:444\nZ:Q1PBFfUmZhwVzYi6HagRsWStmMASo=\nR:trust-inspect-pretty-unsigned-tag-with-signers.golden\na:0:0:444\nZ:Q1SkYLBIwQkfoGfo241Mfy3OU5KHU=\nR:trust-inspect-uninitialized.golden\na:0:0:444\nZ:Q1zQ1MwyNGdQQI99T1547JpuW3mg0=\nR:trust-inspect-unsigned-tag-with-signers.golden\na:0:0:444\nZ:Q1RaZogSRGnN2d+8yfRYNvn0vLlQI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/volume\nM:0:0:555\nR:client_test.go\na:0:0:444\nZ:Q1ip3HXM52fLyvuS/1CkdszReyscs=\nR:cmd.go\na:0:0:444\nZ:Q1LOEakoMxBKFhzMzuTCevhuuBPjo=\nR:create.go\na:0:0:444\nZ:Q1c996oFgJGdZEr2DLNyXnpJ9ysrw=\nR:create_test.go\na:0:0:444\nZ:Q1KC++ygovIEpKDc9pdXpsYTGdu6s=\nR:inspect.go\na:0:0:444\nZ:Q1CvNI9Bb0sfUK9b/YMGnP7YdeNvk=\nR:inspect_test.go\na:0:0:444\nZ:Q1dThkabMH13VTQMvr9ZDnMdssP2A=\nR:list.go\na:0:0:444\nZ:Q1OiWPMsZl0On4hO2xRShMxLcRbK4=\nR:list_test.go\na:0:0:444\nZ:Q1imDKcykYjO7Fvfk/1b4lNgo+zgc=\nR:prune.go\na:0:0:444\nZ:Q1Jjv+yEsGY/Pi2zhYzVMflAVSRpY=\nR:prune_test.go\na:0:0:444\nZ:Q185Q1SrS7u8L3/Rf37eS8VrM1Vn4=\nR:remove.go\na:0:0:444\nZ:Q1rlfrV36abofKPCRx/mR24tgk1RI=\nR:remove_test.go\na:0:0:444\nZ:Q1pRvBb2ujOLs7D0Vvy8v7fOAu4OQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/command/volume/testdata\nM:0:0:555\nR:volume-inspect-with-format.json-template.golden\na:0:0:444\nZ:Q1Fau5vOfPbcZasva8auv9QGRIQ0s=\nR:volume-inspect-with-format.simple-template.golden\na:0:0:444\nZ:Q1YhFSf+LCKbRywc1dsIV/C2J1vXE=\nR:volume-inspect-without-format.multiple-volume-with-labels.golden\na:0:0:444\nZ:Q102eJWEt5lWkpfXurCW472mKouoc=\nR:volume-inspect-without-format.single-volume.golden\na:0:0:444\nZ:Q1rIsNlOOQfiVnXL3Xw2hbJ+n0U4E=\nR:volume-list-sort.golden\na:0:0:444\nZ:Q1fM6HaXmcOW03wjznAAGzeppcelI=\nR:volume-list-with-config-format.golden\na:0:0:444\nZ:Q1U1n9DjQ6KoChMlWQpNo0G9ral0Y=\nR:volume-list-with-format.golden\na:0:0:444\nZ:Q1U1n9DjQ6KoChMlWQpNo0G9ral0Y=\nR:volume-list-without-format.golden\na:0:0:444\nZ:Q19nipTTxYIzlvHOoZC/kkNbi6G3c=\nR:volume-prune-no.golden\na:0:0:444\nZ:Q13i2035oNGuD6BSJM6e8l/KYWLT0=\nR:volume-prune-yes.golden\na:0:0:444\nZ:Q1QOifXDJY1kjcFeoRYWAWMrhrxoE=\nR:volume-prune.deletedVolumes.golden\na:0:0:444\nZ:Q1CLRJ3Hmja209pKBslFEPfVnibcY=\nR:volume-prune.empty.golden\na:0:0:444\nZ:Q1FEisMyY5alMgFqLdKy9nVp2drKo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/convert\nM:0:0:555\nR:compose.go\na:0:0:444\nZ:Q1XKD+0aVr5lvcIFmzLjtlZCSB8yQ=\nR:compose_test.go\na:0:0:444\nZ:Q14+usJ1stfBWuLJDn3UoUDr8c21E=\nR:service.go\na:0:0:444\nZ:Q13ov+GMxMnrFAlUUWhSWV2IjiRWk=\nR:service_test.go\na:0:0:444\nZ:Q1zd99sWud7j/P6N7E4yzzDrIXZZQ=\nR:volume.go\na:0:0:444\nZ:Q1ZhdpiJsU5lFCUH2hjHUj59F5HFA=\nR:volume_test.go\na:0:0:444\nZ:Q1lsRvaRdFRsEDWsCgMPioIE1Zuik=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/interpolation\nM:0:0:555\nR:interpolation.go\na:0:0:444\nZ:Q10PtruLY/wHdWOtlZqCNQ8jHPCCw=\nR:interpolation_test.go\na:0:0:444\nZ:Q1dgoUuuVt/40LaiObgRVaS66HmHc=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/loader\nM:0:0:555\nR:example1.env\na:0:0:444\nZ:Q1Q/lVJXcrajke4HEdB73x6Bmj8+w=\nR:example2.env\na:0:0:444\nZ:Q1Iy4H7bVQjSZZG1XM+nD4cVSM9yk=\nR:full-example.yml\na:0:0:444\nZ:Q1hRI59RGSXls9wSL37c8RpjekLoI=\nR:full-struct_test.go\na:0:0:444\nZ:Q1DIhP1ckAUTuQEbRMtwEqrKXDi/c=\nR:interpolate.go\na:0:0:444\nZ:Q1SSFD/ypCB9U28he1t6nahgWTJ3s=\nR:loader.go\na:0:0:444\nZ:Q1PQpX3yYxzVXmIBifrsuQXLIVpeA=\nR:loader_test.go\na:0:0:444\nZ:Q1l7+L1AHkMJlh54FrO+LK2rqpGVY=\nR:merge.go\na:0:0:444\nZ:Q1IOHvnprciFOoI9dZhVgT/3STBao=\nR:merge_test.go\na:0:0:444\nZ:Q1ARBJy1LWyMI93h2fsnVrCv0w3yA=\nR:types_test.go\na:0:0:444\nZ:Q1qHjv1aOmJ2sbytTjqwrkbV50j84=\nR:volume.go\na:0:0:444\nZ:Q1lsBXOeuCHc6SBLAJUWwTU60NdLo=\nR:volume_test.go\na:0:0:444\nZ:Q1uXO2H8AEWK0IyoAXW6zE4bJ0BHw=\nR:windows_path.go\na:0:0:444\nZ:Q1clIZewlxDIkAU2mvu6t9rELXmjs=\nR:windows_path_test.go\na:0:0:444\nZ:Q1h0XmvwwL9fD+OLQuojeV1Cc7Kys=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/schema\nM:0:0:555\nR:bindata.go\na:0:0:444\nZ:Q1/rW8ZY/KrTXgqFpoDV6T9mM2G1E=\nR:schema.go\na:0:0:444\nZ:Q1r5Gs+XYi1HeD7o32KxkOD/hYwuc=\nR:schema_test.go\na:0:0:444\nZ:Q1+5S2dazgtDkBh8tRdHT5VRC1Vnk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/schema/data\nM:0:0:555\nR:config_schema_v3.0.json\na:0:0:444\nZ:Q1GrnxBLQtk/pNM4hT0lMBfs4O5OU=\nR:config_schema_v3.1.json\na:0:0:444\nZ:Q1oQoHrLPc6WkYD2dSD2OcIi9dqLs=\nR:config_schema_v3.2.json\na:0:0:444\nZ:Q1ThpkKQ8vR7fz3FJbI9neneu423w=\nR:config_schema_v3.3.json\na:0:0:444\nZ:Q1q9/xkRymRU5Z3E2rnUDLNLG59bE=\nR:config_schema_v3.4.json\na:0:0:444\nZ:Q1+jBWzZYhzEgyDKIto3C2QMBsZSQ=\nR:config_schema_v3.5.json\na:0:0:444\nZ:Q1ULabfL0pnGOJw6BGU7SFL9g2WsE=\nR:config_schema_v3.6.json\na:0:0:444\nZ:Q1NwkILfZlhu+gDCfTucMcCMd0vjk=\nR:config_schema_v3.7.json\na:0:0:444\nZ:Q1morLBJ4YCSsNcDL7BaFDeF2aM7g=\nR:config_schema_v3.8.json\na:0:0:444\nZ:Q1kyFxy3ytIhITs1G4oC/k05R4+Yc=\nR:config_schema_v3.9.json\na:0:0:444\nZ:Q1SECqCdouf6kYq+GAvFqxUuCgoWg=\nR:doc.go\na:0:0:444\nZ:Q1LGyAjeemPWsCZ7qHCHvlT3He5eI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/template\nM:0:0:555\nR:template.go\na:0:0:444\nZ:Q1Oc0VBjtU46XbBhes1mcEcVyRzAs=\nR:template_test.go\na:0:0:444\nZ:Q1YNwGdkcCyk3ZOVz2NLHJ3PjTTqE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/compose/types\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q1B0KYIf1Pqo78u7Op9xn2y9uEcck=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/config\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1stD7X1xcpIg8bM4eamcm/V15vfg=\nR:config_test.go\na:0:0:444\nZ:Q1ym3TTeoKDQDj4MbqydV/eUvLTUk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/config/configfile\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1vMDPkEkp6jNoUDYZVPYdyeXbm9k=\nR:file_test.go\na:0:0:444\nZ:Q1iF6oiOaqj/s/NEk6aZrndcs03zw=\nR:file_unix.go\na:0:0:444\nZ:Q1WXZe42JbGqnFbI25S5dQpujrJ1E=\nR:file_windows.go\na:0:0:444\nZ:Q1hcbm5rQG5uKxranIIgBTu6d8lpU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/config/configfile/testdata\nM:0:0:555\nR:plugin-config-2.golden\na:0:0:444\nZ:Q13TGXDrr+drA9mKAoX15oneO/dEk=\nR:plugin-config.golden\na:0:0:444\nZ:Q1EzDUErvuH755sV9M1Zil09NewPY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/config/credentials\nM:0:0:555\nR:credentials.go\na:0:0:444\nZ:Q1+BVFKsRudmvjwOI4r51s6idCE34=\nR:default_store.go\na:0:0:444\nZ:Q1qRrLU9kyPg+1kW5wALogj5HbUls=\nR:default_store_darwin.go\na:0:0:444\nZ:Q1jQXNbEl9avK856YjMc1tAyw0OG8=\nR:default_store_linux.go\na:0:0:444\nZ:Q1VMY8eH78wPym/i/4ZZwCs7mb234=\nR:default_store_unsupported.go\na:0:0:444\nZ:Q1bAggyGWhzCZDCpOVMFa7ajXCIyM=\nR:default_store_windows.go\na:0:0:444\nZ:Q1CQj9M/uBLrA+uGcGY21kd4sFH44=\nR:file_store.go\na:0:0:444\nZ:Q1egjLokr5p0OM7Lre6pHoy87j7Bo=\nR:file_store_test.go\na:0:0:444\nZ:Q1SQMe9Emh8bgz19UaCmbPa1FfdXA=\nR:native_store.go\na:0:0:444\nZ:Q1LweO5CfKR6yPIpD9Iu4Cwx8mJFs=\nR:native_store_test.go\na:0:0:444\nZ:Q1mZ3GoRt7fjpro+TalzbqJ8mynYw=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/config/types\nM:0:0:555\nR:authconfig.go\na:0:0:444\nZ:Q1DsspSipZLyo3c0DiscjXQO7oIB8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/connhelper\nM:0:0:555\nR:connhelper.go\na:0:0:444\nZ:Q11Cx1RbcLDspOgZMCUt1sQHgs/zk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/connhelper/commandconn\nM:0:0:555\nR:commandconn.go\na:0:0:444\nZ:Q1RRaV5hIoLz2QGeh5mQQxG8TPfIQ=\nR:commandconn_unix_test.go\na:0:0:444\nZ:Q1aiEuxbw6bnBB8inxajg85YtCNis=\nR:pdeathsig_linux.go\na:0:0:444\nZ:Q1E43ufQUOQcbUFytXUo8xkPo+C1k=\nR:pdeathsig_nolinux.go\na:0:0:444\nZ:Q13aAVtPWSxNM9zuFEbN4oJO/bnOU=\nR:session_unix.go\na:0:0:444\nZ:Q1T0LMJ5Md6veZmfoxZdiRbbHZf0M=\nR:session_windows.go\na:0:0:444\nZ:Q17zYY+1IE6UPcC/nsrulRn5/qtQI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/connhelper/ssh\nM:0:0:555\nR:ssh.go\na:0:0:444\nZ:Q1CqSavMamN+6uDFleM4zqur1KbgA=\nR:ssh_test.go\na:0:0:444\nZ:Q1m5r11e+tnnffWX1XRasBJMOe1w4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/context\nM:0:0:555\nR:endpoint.go\na:0:0:444\nZ:Q16JQz0DJ+mYCbYRh3XieWm+gOtpM=\nR:tlsdata.go\na:0:0:444\nZ:Q1JSZrFMHrfapDSjexuv6hBGQHQps=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/context/docker\nM:0:0:555\nR:constants.go\na:0:0:444\nZ:Q1WeMouisz6BE9Lh63VFwbrs40BjU=\nR:load.go\na:0:0:444\nZ:Q10Sg9cJlqwmc+V5hSRog263IEubc=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/context/kubernetes\nM:0:0:555\nR:constants.go\na:0:0:444\nZ:Q1CID6zvN+dNz5pfsoRysD6OAIPMs=\nR:endpoint_test.go\na:0:0:444\nZ:Q14fOFUN2uhet4RKJAdA6kTGFjYPw=\nR:load.go\na:0:0:444\nZ:Q1idHmhVaHIKbt0Z8eGrIlFSU1zEo=\nR:load_test.go\na:0:0:444\nZ:Q19cCVHaFpb/bfO16kVHDA37WSSX0=\nR:save.go\na:0:0:444\nZ:Q1u0zWIcQF5QE0W+QSMUjxyhgX9o0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/context/kubernetes/testdata\nM:0:0:555\nR:eks-kubeconfig\na:0:0:444\nZ:Q1ZL81ErOM5qwiG5NFulANQhHtgpo=\nR:gke-kubeconfig\na:0:0:444\nZ:Q1e3uSa47S+Luq6wN3rpozVaJHKfg=\nR:k3s-kubeconfig\na:0:0:444\nZ:Q1YLnrS16whOcd/2KCBXMYwpkpwPY=\nR:test-kubeconfig\na:0:0:444\nZ:Q1ID+Ct+VDZikvqND4cOEpjLSdKwU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/context/store\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1K+9gVS+duStQBW/5ERU2YJ7Jexk=\nR:io_utils.go\na:0:0:444\nZ:Q1AEn/66Rs9DSLM2TUnnhzV/Ag7Jk=\nR:io_utils_test.go\na:0:0:444\nZ:Q1b87+5A9VrpymCJEIcwbDUl3OWPw=\nR:metadata_test.go\na:0:0:444\nZ:Q17elPLJSKULQ0648C+AV8un6WAJ4=\nR:metadatastore.go\na:0:0:444\nZ:Q1KJM71ZR8iYrAQFLQcb9QWNsOF04=\nR:store.go\na:0:0:444\nZ:Q1xmThUTPLiie8Xmck4TUCMqCOKC8=\nR:store_test.go\na:0:0:444\nZ:Q1JD24Dr4cdkID17URvyDmM363cC0=\nR:storeconfig.go\na:0:0:444\nZ:Q11bjKzatjGKUwRjcUgt7aDh2Q1Zc=\nR:storeconfig_test.go\na:0:0:444\nZ:Q11Y8+wzt+lk+4bctTfdWTkl5WhUY=\nR:tlsstore.go\na:0:0:444\nZ:Q1F5HpCzyjEQnLfXC2tfYif3Galfw=\nR:tlsstore_test.go\na:0:0:444\nZ:Q1GlbUAVQM8+7nIu7TNWjAQdNGvBE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/debug\nM:0:0:555\nR:debug.go\na:0:0:444\nZ:Q1uRJUOjUjgmj9ueUhiQ3pBGBVO6o=\nR:debug_test.go\na:0:0:444\nZ:Q1k9FBRHlglFdniEgdxKVRugACHA4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/flags\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1fHH1h9LGg1QinlhcQ/JKwV2RMmI=\nR:common.go\na:0:0:444\nZ:Q1RvrE/hhCapgQM80mY8ZhNl1agB4=\nR:common_test.go\na:0:0:444\nZ:Q1ddAvvkWe2JsTTNrdxXjgH6/oCKY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/manifest\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/manifest/store\nM:0:0:555\nR:store.go\na:0:0:444\nZ:Q1kTokjtxj0iXhqE11xZtaEBRLGcE=\nR:store_test.go\na:0:0:444\nZ:Q1T6JHkMkJkyisZZc+Rx6A72nmxa0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/manifest/types\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q1n6M7K7Mh5eF+drhE64zWlyD2Mfw=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/registry\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/registry/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1Sgvn+cvTLn3qK703WGGFNPNjDwM=\nR:endpoint.go\na:0:0:444\nZ:Q1yj+jwpoSvC22TnghZEfkV3o4A9k=\nR:fetcher.go\na:0:0:444\nZ:Q10OxbKa/gC/8kSpU8XEq84ugJRao=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/streams\nM:0:0:555\nR:in.go\na:0:0:444\nZ:Q1yf4p3i3SEdf/Vd55rmaxVVy1UZc=\nR:out.go\na:0:0:444\nZ:Q1P2Iqp38dSLLNi7Xyz1m1oLUz6fg=\nR:stream.go\na:0:0:444\nZ:Q1uepcj9mPRZMI83w6alr8s5n5ytA=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/trust\nM:0:0:555\nR:trust.go\na:0:0:444\nZ:Q1cRVs9o2p4djdTx239zFUJfS7O0Y=\nR:trust_test.go\na:0:0:444\nZ:Q1sO9eze96DzpoV24CGHqz+y0YRnM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1QMIg1wNEjEsUIK8eUHSNEccpaoM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli/winresources\nM:0:0:555\nR:res_windows.go\na:0:0:444\nZ:Q1BgvWo39rPI8FKsf2rotW5W2+cNE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli-plugins\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli-plugins/examples\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli-plugins/examples/helloworld\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1kX6QSXxzpdO3cJSWsnxPYdZqP7M=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli-plugins/manager\nM:0:0:555\nR:candidate.go\na:0:0:444\nZ:Q1QjE8TojmZvIZowakxSWDBF5GWNk=\nR:candidate_test.go\na:0:0:444\nZ:Q18xlI8aB0WGJTmY6A6R6G4HSPfAM=\nR:cobra.go\na:0:0:444\nZ:Q1uS6K0sOgSdw7pkMksrJTo9RFx00=\nR:error.go\na:0:0:444\nZ:Q1oDDYa6FztWdV5YimzakS79VcpP8=\nR:error_test.go\na:0:0:444\nZ:Q1bGvEldGaSY9rQ29STJTww7srtfQ=\nR:manager.go\na:0:0:444\nZ:Q13VMAshFG46Nv3DDJsvn49CfvFnI=\nR:manager_test.go\na:0:0:444\nZ:Q1xkpUc53upmbpegXMBVRBkQR04jg=\nR:manager_unix.go\na:0:0:444\nZ:Q1L7pppIlXj99OmuJaLUDkUYROsSA=\nR:manager_windows.go\na:0:0:444\nZ:Q1bD/boJUabyhT18dlAEyguTJ5bKE=\nR:metadata.go\na:0:0:444\nZ:Q1YlwcEgFc6Gc57IEz/qF0a9OsrV8=\nR:plugin.go\na:0:0:444\nZ:Q11PU+hk6adeqmfpWN41IhP40Xi18=\nR:suffix_unix.go\na:0:0:444\nZ:Q1Q2mfZB7BOkZ8F1UKRNCuETIz+8s=\nR:suffix_windows.go\na:0:0:444\nZ:Q1AkQJ/QrbCxltKGfa6ntvVyMUYj0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cli-plugins/plugin\nM:0:0:555\nR:plugin.go\na:0:0:444\nZ:Q1Witf12saSdJsFg4JhwztQ1qtaVE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/cmd/docker\nM:0:0:555\nR:docker.go\na:0:0:444\nZ:Q1MDbGbMLWO7L7y8inG1K3TuS40Uk=\nR:docker_test.go\na:0:0:444\nZ:Q1omtOHYQy3c6rYeHs52iBZpdcmqg=\nR:docker_windows.go\na:0:0:444\nZ:Q15RfgctsHZvsCMkjmWW4XmzCDGIs=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib/completion\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib/completion/bash\nM:0:0:555\nR:docker\na:0:0:444\nZ:Q1aKWkx9lKa13TdBM0KNJqaYYVph4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib/completion/fish\nM:0:0:555\nR:docker.fish\na:0:0:444\nZ:Q1mAuyygAuiJt+eKdnUD8Y7AqSWmM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib/completion/powershell\nM:0:0:555\nR:readme.txt\na:0:0:444\nZ:Q1E3M/RwI0Qz8LPrqgKy7V+ZVkPOI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/contrib/completion/zsh\nM:0:0:555\nR:_docker\na:0:0:444\nZ:Q13BP7LZL/4bf2Hj8zVP2gpb3cgR0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/dockerfiles\nM:0:0:555\nR:Dockerfile.binary-native\na:0:0:444\nZ:Q1lpODu3E/EM0PjWbeBmgOg0I4uB8=\nR:Dockerfile.cross\na:0:0:444\nZ:Q1I+tGeAzP4Uoj4semNqENzl8tI14=\nR:Dockerfile.dev\na:0:0:444\nZ:Q1Gx0MnoM8O2kbBIDNB60Xv3XyZPI=\nR:Dockerfile.e2e\na:0:0:444\nZ:Q1dbePaz3qHWR6W6tmbnop5qoxumo=\nR:Dockerfile.lint\na:0:0:444\nZ:Q1mv0dSsrxNlElbPhmEWviLcyW1pk=\nR:Dockerfile.shellcheck\na:0:0:444\nZ:Q12PfN5qjXwDR7wWTh/ksQcgISp68=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1RKupDJXEf8ccuxrmeh5/NWdbHPw=\nR:deprecated.md\na:0:0:444\nZ:Q1kNOS1gKTPkJyUdtlCckq6s/iLbo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs/extend\nM:0:0:555\nR:EBS_volume.md\na:0:0:444\nZ:Q1iLagerQ6dxelAEP5I8X0BA6phbo=\nR:config.md\na:0:0:444\nZ:Q1sQ2t7lhUR/nFpardLqZK021ppkQ=\nR:index.md\na:0:0:444\nZ:Q1uNJeZUzdgn4xHZ6W4NCsGufkNH0=\nR:legacy_plugins.md\na:0:0:444\nZ:Q1ltjo+a45yHiMEI+ED0ehF+HMYec=\nR:plugin_api.md\na:0:0:444\nZ:Q1S9/fv1iXPcdes40Ehzvj4L/sUYo=\nR:plugins_authorization.md\na:0:0:444\nZ:Q1rjFVk5WBsQozq2oW1H9RAn1kowE=\nR:plugins_graphdriver.md\na:0:0:444\nZ:Q1XSVuu2O9W7/vfVs5Ys38ttdZ41U=\nR:plugins_logging.md\na:0:0:444\nZ:Q1Ap+E0WdukqtUdsVx1VwYUislKB0=\nR:plugins_metrics.md\na:0:0:444\nZ:Q1ucXEG9FWNOdkpGoYRj9BQn453i0=\nR:plugins_network.md\na:0:0:444\nZ:Q1BuLGBo9GiTdUEPXZ5dh3pb2wv3M=\nR:plugins_services.md\na:0:0:444\nZ:Q1crT+9Ap4EIbeWmAyrMqtaMnAcgE=\nR:plugins_volume.md\na:0:0:444\nZ:Q1z778uJ4LfoCr6Hr71isx42npASU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs/extend/images\nM:0:0:555\nR:authz_additional_info.png\na:0:0:444\nZ:Q1/Xomsrcgumgubc6J0dQAZpEt+BY=\nR:authz_allow.png\na:0:0:444\nZ:Q170moYDliqdFlvKEeiu74eLv0vcI=\nR:authz_chunked.png\na:0:0:444\nZ:Q1Ap+HbF1+O5Z1G1WinZOcbgyZAYg=\nR:authz_connection_hijack.png\na:0:0:444\nZ:Q1cow4RzZtSJFF8DfYYb5TL5MJSgc=\nR:authz_deny.png\na:0:0:444\nZ:Q1dySWS7hhNLux9lshkimQg+wYiOc=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs/reference\nM:0:0:555\nR:builder.md\na:0:0:444\nZ:Q1guuZC3FfDGJQJUQOEYwf07A2r14=\nR:glossary.md\na:0:0:444\nZ:Q1VO6kYkn6xUhVPNYxVXlCjtWFDAs=\nR:index.md\na:0:0:444\nZ:Q1ocOhRsrkAIKhF4SmBU0mKEYaPPA=\nR:run.md\na:0:0:444\nZ:Q1ue6vuyCC9OJsw5dvi1zb/vG2da4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs/reference/commandline\nM:0:0:555\nR:attach.md\na:0:0:444\nZ:Q1Ve0frqeRQX4ubpTI1fuXLJ5DtlQ=\nR:build.md\na:0:0:444\nZ:Q1VAAWZupESLZYVV53e2weQGIcCls=\nR:checkpoint.md\na:0:0:444\nZ:Q1oIjnpL0AJI/SiZ27cn/7Nueoe7s=\nR:cli.md\na:0:0:444\nZ:Q1m6/qn/ptLMxKVmc1bTTb6uA1NzM=\nR:commit.md\na:0:0:444\nZ:Q1uAbyv89Ceq/zau3/2hdUoPENYJk=\nR:config.md\na:0:0:444\nZ:Q1vEzZemx5TGmrqz+lXwxuiRieaAk=\nR:config_create.md\na:0:0:444\nZ:Q1zudRJSmsy0UYG2ajsIdLE/SCgbw=\nR:config_inspect.md\na:0:0:444\nZ:Q1FjgdkxiFiSxhLG5eHpTQx1ni4Ro=\nR:config_ls.md\na:0:0:444\nZ:Q1EjI76qKP4BGr/C1TPUikTXO2dgY=\nR:config_rm.md\na:0:0:444\nZ:Q1GolaXZVrJZ8L0el2x+scZ01TBlM=\nR:container.md\na:0:0:444\nZ:Q1V5rEdR1K4mDimNtT8jf6wZuasQ8=\nR:container_prune.md\na:0:0:444\nZ:Q18DvgpcmcwLWiwyy56yGMx0xwxsI=\nR:context.md\na:0:0:444\nZ:Q12Ac/58D0Shemg5iwC2bOEmM6q1E=\nR:context_create.md\na:0:0:444\nZ:Q1qTzjwAPmL3J523k3V8wsoE337bc=\nR:context_export.md\na:0:0:444\nZ:Q1ayQ4jAAqaCamAKhOEbXtURBkR4A=\nR:context_import.md\na:0:0:444\nZ:Q1Ggyq4jMyiyKWLYP9bTnuz836fpk=\nR:context_inspect.md\na:0:0:444\nZ:Q1U4wSwBNxuACq2t5MWa1WGtgSkfU=\nR:context_ls.md\na:0:0:444\nZ:Q1CMAoy6dOxiJmyLJAfxpeo98zAA8=\nR:context_rm.md\na:0:0:444\nZ:Q1TIRfnwE8RPayj42ZGvl31MMzBhA=\nR:context_update.md\na:0:0:444\nZ:Q18Q0QNwwZmETPLQp2EIJzvkXsvmg=\nR:context_use.md\na:0:0:444\nZ:Q1XD4B8BIAXMdVvM9vZzg3TbV1rr0=\nR:cp.md\na:0:0:444\nZ:Q1yQJapKrE8KBuNz6BNX1TMqEQd4E=\nR:create.md\na:0:0:444\nZ:Q1iKZMUdTJasFefBEnAm+7PnNztrU=\nR:diff.md\na:0:0:444\nZ:Q1nihM4cVkFk2TnAqZFYMlm29p2F4=\nR:dockerd.md\na:0:0:444\nZ:Q1zcIca3HS+YEVb8fnaJODd3V1CNA=\nR:events.md\na:0:0:444\nZ:Q1TpqK56ZAd/sBP66rUqMA9ZJDZpA=\nR:exec.md\na:0:0:444\nZ:Q1ihG0sW13qGS5blT37nvQKoAZ+k8=\nR:export.md\na:0:0:444\nZ:Q1CQs6uEgUNXyp0xVnN2XBU0j4LyE=\nR:history.md\na:0:0:444\nZ:Q1mH5zcJAMv+FJuDp4GayNs1ylx/A=\nR:image.md\na:0:0:444\nZ:Q1HT7rFBl0aWif5b8UrD1Qy97/BNA=\nR:image_prune.md\na:0:0:444\nZ:Q18J4+R8RUmww+765Mi49c8luJjUE=\nR:images.md\na:0:0:444\nZ:Q1eghPs1d3MY/X+0YClACr9be81dY=\nR:import.md\na:0:0:444\nZ:Q1R7BKfreWNY62YtTDrg1uCaa9OYI=\nR:index.md\na:0:0:444\nZ:Q1MzPgS8nkY4oMutLzx1HFjkIghBw=\nR:info.md\na:0:0:444\nZ:Q1hrGJc9KoGOEJ3V1bIRG56dqPjDI=\nR:inspect.md\na:0:0:444\nZ:Q1ImQ+GDEAIfjoca8OFvUH+JUcoMk=\nR:kill.md\na:0:0:444\nZ:Q1Xl/6U4FY+q7re+sk+8V5om/FMlI=\nR:load.md\na:0:0:444\nZ:Q15PGL8Bdjm1NIOQj1dOdxwuX+tDk=\nR:login.md\na:0:0:444\nZ:Q1LWUj8udvb6nJh9o6LsUxcBX83eM=\nR:logout.md\na:0:0:444\nZ:Q1QCcl819gdXaMyVLQvQObmVj7+Xk=\nR:logs.md\na:0:0:444\nZ:Q1rS6LVWa//9MIDVwatMB4GnGgBx4=\nR:manifest.md\na:0:0:444\nZ:Q1U48LsEXYv8RaSsS6GN9l6klCBR4=\nR:network.md\na:0:0:444\nZ:Q1JiuDy/pxbkZe2JXCfFoIXlt/cqM=\nR:network_connect.md\na:0:0:444\nZ:Q1KcM6c7UqrulCPle0aWYCXz7Pxqo=\nR:network_create.md\na:0:0:444\nZ:Q1CzJX/LNNI+q7UlC3i1cEJDqIhDI=\nR:network_disconnect.md\na:0:0:444\nZ:Q1JAYYwKzhnAGjMS3wDkYEqj12Yok=\nR:network_inspect.md\na:0:0:444\nZ:Q15tWJHf088IbIdDzUSCmtp86Qah4=\nR:network_ls.md\na:0:0:444\nZ:Q1ss89xsqAYwmD9medcaei0+CRgjw=\nR:network_prune.md\na:0:0:444\nZ:Q1pwoN4IvUc5sQgNr4UV1f0kHhmO4=\nR:network_rm.md\na:0:0:444\nZ:Q1upekwWxN2/ep5vaTLeLWCpZJOWM=\nR:node.md\na:0:0:444\nZ:Q1R+i4u6vr4bbFADZvt7wYkDzV/Pw=\nR:node_demote.md\na:0:0:444\nZ:Q1Kz9vSih2iwDKJo7OseFCfKVyCuE=\nR:node_inspect.md\na:0:0:444\nZ:Q1VXd5YYTPJIXgHh8zx4mO2EoKGO0=\nR:node_ls.md\na:0:0:444\nZ:Q15NLx5m41PwFVbZsS6oUh2060LA8=\nR:node_promote.md\na:0:0:444\nZ:Q1ofZnccnlKvZVJN0d5U4eoZnQgVg=\nR:node_ps.md\na:0:0:444\nZ:Q12DQ8Kzp/Cct8yhcjtweBpO2vfew=\nR:node_rm.md\na:0:0:444\nZ:Q1JXEpoyO+c+joeGFelIqDmQE5Jn0=\nR:node_update.md\na:0:0:444\nZ:Q1AmPb0lHXV8BCkuzDmB6i391M1yk=\nR:pause.md\na:0:0:444\nZ:Q16eYgbjFLZLgmR/Q4y8wWrCj51zo=\nR:plugin.md\na:0:0:444\nZ:Q1Dk1UWkTDrk4/vbTbjtye7LpcWds=\nR:plugin_create.md\na:0:0:444\nZ:Q1ymR1oGTAvSohar1fpGVquzFFXJE=\nR:plugin_disable.md\na:0:0:444\nZ:Q1pE7b5JxmZQl9BQ8qTuG6B3jM9IY=\nR:plugin_enable.md\na:0:0:444\nZ:Q1Zf0D7b9KVzNjqowv/FvBstwS14M=\nR:plugin_inspect.md\na:0:0:444\nZ:Q1HfaQb5SS3NvKUemoY5kxJLkJiM8=\nR:plugin_install.md\na:0:0:444\nZ:Q1iZUQ7vvS2Lczn2PB5fBn1J2XjbA=\nR:plugin_ls.md\na:0:0:444\nZ:Q1BU10zyJFtyd2yevJVgF8QDkkUOA=\nR:plugin_push.md\na:0:0:444\nZ:Q1feowpS6bOIrlD2DqLlYTJouy/KU=\nR:plugin_rm.md\na:0:0:444\nZ:Q1O4WBOlhegZA7tGopDaQNVDWxd44=\nR:plugin_set.md\na:0:0:444\nZ:Q1OyiitmkfGl/1lb8ESDggZTbkKho=\nR:plugin_upgrade.md\na:0:0:444\nZ:Q18/GEEr0Iy2BaTbfgCpy0BAD/cLE=\nR:port.md\na:0:0:444\nZ:Q1UDDOzylJI2N1yGsZQlGvpvsRjPk=\nR:ps.md\na:0:0:444\nZ:Q1xltTBnL/zWUdgto2NQF9dcFmC+Q=\nR:pull.md\na:0:0:444\nZ:Q1bVCDZcq+R1Sk4ai3BBoy2r4zEFY=\nR:push.md\na:0:0:444\nZ:Q12lyCWIQW028W6QQ4cwZr+rFMtBw=\nR:rename.md\na:0:0:444\nZ:Q1sO80xhE5f1otA++s7ZhKbeahHq8=\nR:restart.md\na:0:0:444\nZ:Q1I09uzrbecTWp47GdAOfh7TTFAkU=\nR:rm.md\na:0:0:444\nZ:Q1vUoH5/Z9jctfM/cOpfHbRXHdNaQ=\nR:rmi.md\na:0:0:444\nZ:Q1caoawRaSiuYtoXmmtJWKFUrpHbc=\nR:run.md\na:0:0:444\nZ:Q1b5FvWayUYIq5W92V3Zw7aB4529U=\nR:save.md\na:0:0:444\nZ:Q1IGejH4SKfEbt5TKyj6oIdn2rcsI=\nR:search.md\na:0:0:444\nZ:Q1fiNbCNJllgLEUqpL8DtFmYcLsr4=\nR:secret.md\na:0:0:444\nZ:Q1bx0zqqOPy9XA7ZP7MCBak0lKTIg=\nR:secret_create.md\na:0:0:444\nZ:Q1U5GD90aYFXarDDt68BqnR8eIyhI=\nR:secret_inspect.md\na:0:0:444\nZ:Q1VUpsz0+f0ONk90btKm+xe9hUwig=\nR:secret_ls.md\na:0:0:444\nZ:Q1b5dzJ+xuK6aD46ZUD6fHz7kTEjg=\nR:secret_rm.md\na:0:0:444\nZ:Q1F3x7CPZN1gsWsCvKqUI12Qw8YG0=\nR:service.md\na:0:0:444\nZ:Q19iLQyaYXUiXjOtoDSOejjF+W8zc=\nR:service_create.md\na:0:0:444\nZ:Q1SQ6cMSfdED7pihssAEbNpf1e/T8=\nR:service_inspect.md\na:0:0:444\nZ:Q1nEk31xkjEqPYvIRMirts6gB1wR8=\nR:service_logs.md\na:0:0:444\nZ:Q1wBXOx8BWjfUFDelDV3uh1vv8V1o=\nR:service_ls.md\na:0:0:444\nZ:Q1bj80AopGVhaXIn9cVB+3FJGJiqI=\nR:service_ps.md\na:0:0:444\nZ:Q1jC6YxcUkq4cW8fdbRyedxK4ETZc=\nR:service_rm.md\na:0:0:444\nZ:Q1ydEhyBIYYxo9LEDLY6udV7lLVNA=\nR:service_rollback.md\na:0:0:444\nZ:Q186askjnmDMIVIozp/UW37wLlAj4=\nR:service_scale.md\na:0:0:444\nZ:Q1xmGKFy/YLe6SEfRuyqBXBmXU6kc=\nR:service_update.md\na:0:0:444\nZ:Q1wrbyvxB6Yt8RsfObZdqRVl3PQ88=\nR:stack.md\na:0:0:444\nZ:Q1Qz/HzhkZus6pb6xzAp4I25+HKHs=\nR:stack_deploy.md\na:0:0:444\nZ:Q18utggVIvTy+bCPDGTSOMnyYUKZQ=\nR:stack_ls.md\na:0:0:444\nZ:Q1EkGsE6/2mxRh+qTKNAQ8X0YxZOU=\nR:stack_ps.md\na:0:0:444\nZ:Q1KKA0a8hsA944fJHfgpJGX/Odce8=\nR:stack_rm.md\na:0:0:444\nZ:Q19OBv0U1CrxWmg71NXtOUJIrtiYg=\nR:stack_services.md\na:0:0:444\nZ:Q17D1s2UaWFhmCoA8wNclZR7KKFik=\nR:start.md\na:0:0:444\nZ:Q1r+5AUOIGfXLOweNDHKSvn+Lzph0=\nR:stats.md\na:0:0:444\nZ:Q1/6AKs9Az5xIi+Txh9xVpiHKL6Tg=\nR:stop.md\na:0:0:444\nZ:Q18YZusaxf09NqkUEgx7xV5tA595g=\nR:swarm.md\na:0:0:444\nZ:Q1J/D5kox4KbGl/Ff7AJUN7bG72f0=\nR:swarm_ca.md\na:0:0:444\nZ:Q1fhEx0hbiNjSC9O+V09pNhNleVoU=\nR:swarm_init.md\na:0:0:444\nZ:Q13xiNwWBSlWqxcsTZQeMfyVl1OIA=\nR:swarm_join-token.md\na:0:0:444\nZ:Q1vLApWphbgnPhmxT9XxLgIqweUsw=\nR:swarm_join.md\na:0:0:444\nZ:Q15O6vpwhqSbAioGy6vY7aXF5LNDI=\nR:swarm_leave.md\na:0:0:444\nZ:Q1dFH5wLqjF6lJG9mrP4javJQ+LGs=\nR:swarm_unlock-key.md\na:0:0:444\nZ:Q1B1iuRmA8ueef/4vR1uLHE7iNMH0=\nR:swarm_unlock.md\na:0:0:444\nZ:Q1J3rOQl81eaxO9+oYGFqs0tyIyoI=\nR:swarm_update.md\na:0:0:444\nZ:Q1T9/tTbRGCMlz0QmjujLasytxDMA=\nR:system.md\na:0:0:444\nZ:Q13HKLEOzqYRN45AOoTwSN3Nw8ARk=\nR:system_df.md\na:0:0:444\nZ:Q1r63K23V8WBNwstzvkXO9uTJrHmg=\nR:system_events.md\na:0:0:444\nZ:Q1ji43FY0f4tMpWObGs8wZx3X8FzM=\nR:system_prune.md\na:0:0:444\nZ:Q19j58rhBekl1mvLHdD/nw6VfjwaE=\nR:tag.md\na:0:0:444\nZ:Q1X3b4Ruan2aQxwAHeWD3NNiTvr+k=\nR:top.md\na:0:0:444\nZ:Q1pdekWIUdL0oEarl24+7zxSIUd8M=\nR:trust_inspect.md\na:0:0:444\nZ:Q1K9A+Ba5fWWy6Xg0cPy3AOk34AiE=\nR:trust_key_generate.md\na:0:0:444\nZ:Q1oS+wAsmHdKOX6EJsmmoZ8o2VYzc=\nR:trust_key_load.md\na:0:0:444\nZ:Q1jLKknsZ7U7eRwxvWEA0t3XOz+2M=\nR:trust_revoke.md\na:0:0:444\nZ:Q1VURWlggSDWDJF0r3HGtkRKQSMAE=\nR:trust_sign.md\na:0:0:444\nZ:Q1CdWurkDpZFahmS9GLpfopV1NzPI=\nR:trust_signer_add.md\na:0:0:444\nZ:Q1So077snkAxLsktW4HjjPb8xVUPQ=\nR:trust_signer_remove.md\na:0:0:444\nZ:Q1oIWreniLxm3zsZ4vIbmkbKBM6dE=\nR:unpause.md\na:0:0:444\nZ:Q1o34LrfZjEJ3Fm8U/nH6LaYYo+Es=\nR:update.md\na:0:0:444\nZ:Q17wf0sXQtwqw1s3txWC6KqS7GpgE=\nR:version.md\na:0:0:444\nZ:Q1TE2Iy7WaRZWlfS9gsQDmzi4+TCo=\nR:volume.md\na:0:0:444\nZ:Q15XfnJ8W/IEwZAmnxvOUkClrcWNw=\nR:volume_create.md\na:0:0:444\nZ:Q1B7K0TDP+WTmkEG2gWqa5EAvsiOU=\nR:volume_inspect.md\na:0:0:444\nZ:Q1AO9IWPfXUi1u08lgRPYKTzJ1dlk=\nR:volume_ls.md\na:0:0:444\nZ:Q1x0lPMUnYGMGNWfaa3LnmUWffpRM=\nR:volume_prune.md\na:0:0:444\nZ:Q1AEysWktjudzN0RHQcGdomr5ABco=\nR:volume_rm.md\na:0:0:444\nZ:Q1ApYZIcR3KDeSR78vMZIi/QUjwy0=\nR:wait.md\na:0:0:444\nZ:Q1TA6bp9TGjs2ncLMLYwovmBdjQEY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/docs/yaml\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1gbZH/2SUWZrxCf/mFZ3vjut+7cU=\nR:generate.go\na:0:0:444\nZ:Q1qpEhQT/3r0nIaurmNu8QOoGS+68=\nR:yaml.go\na:0:0:444\nZ:Q1NTilgrwQKrYABXYdgznGliVk3KY=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e\nM:0:0:555\nR:compose-env.connhelper-ssh.yaml\na:0:0:444\nZ:Q1FfYCk4+JAf8tVxI6uzeHSVW2yZc=\nR:compose-env.experimental.yaml\na:0:0:444\nZ:Q1z5UtHdY1HYp0gQBkDqpH30yjYZw=\nR:compose-env.yaml\na:0:0:444\nZ:Q1VO66zGm/xhgdswRfLGTlHWSZLW4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/cli-plugins\nM:0:0:555\nR:config_test.go\na:0:0:444\nZ:Q1NWtr73lfmPpPhBXwGBsh+pPTr6g=\nR:dial_test.go\na:0:0:444\nZ:Q11RX1L8wUMckZd+ldcGW0ra5VlUg=\nR:flags_test.go\na:0:0:444\nZ:Q1LXBlTN5vvamUZn3R21Z1faT8KUE=\nR:help_test.go\na:0:0:444\nZ:Q1DZPjVl5/HszGkzzp+49xHvFJP3A=\nR:main_test.go\na:0:0:444\nZ:Q1i3N8HQWAPdsH1Qn1+0adczBTVH0=\nR:run_test.go\na:0:0:444\nZ:Q1WjBg7+xcItbjajQ9wEWJnJp0+Rw=\nR:util_test.go\na:0:0:444\nZ:Q1saQ1E1C6V92oEM7EjgUZG8ai+CM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/cli-plugins/plugins\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/cli-plugins/plugins/badmeta\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1MGSEoyOJ1n5ffyLoqHAZKgXve0w=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/cli-plugins/plugins/nopersistentprerun\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1OVsnIDiduyr6mbnBLmeIt6xU4y8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/cli-plugins/testdata\nM:0:0:555\nR:docker-badmeta-err.golden\na:0:0:444\nZ:Q1q/MRX/STGSzOSk/t4z2KLCE9Akw=\nR:docker-help-badmeta-err.golden\na:0:0:444\nZ:Q1gOGpNmv/ekzbxvShHervxHiKS2I=\nR:docker-help-helloworld-goodbye.golden\na:0:0:444\nZ:Q1PARt3JpNewwb0zSGmKQsM0pTAqY=\nR:docker-help-helloworld.golden\na:0:0:444\nZ:Q1v7Z/IsSABZlugQ0ABKpvcnACDYA=\nR:docker-help-nonexistent-err.golden\na:0:0:444\nZ:Q1fWo1v6TPg78fpiUOpP90S3e6MTo=\nR:docker-nonexistent-err.golden\na:0:0:444\nZ:Q18SXGKP4x99C0cMdtQjp9kwcU23M=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/container\nM:0:0:555\nR:attach_test.go\na:0:0:444\nZ:Q1UmmXBz4hQP7rjYHYGmmOhLLhewo=\nR:create_test.go\na:0:0:444\nZ:Q1m1baYiYulKlm2/yehpocQ1rxxDw=\nR:kill_test.go\na:0:0:444\nZ:Q1I08vCnimnmDl0qHekG2/ulma88U=\nR:main_test.go\na:0:0:444\nZ:Q1D6CetoNTWoxPXzjJcCuyLo/socc=\nR:proxy_signal_test.go\na:0:0:444\nZ:Q1T+dBuFGdC5LWRopxrWrFRYGe/Zk=\nR:run_test.go\na:0:0:444\nZ:Q12ai8FZBOByDFU0BdJoMxUbzRCVQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/container/testdata\nM:0:0:555\nR:run-attached-from-remote-and-remove.golden\na:0:0:444\nZ:Q109jBfjxzx/PLWoslRBkP9fJRgSg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context\nM:0:0:555\nR:context_test.go\na:0:0:444\nZ:Q1M5TizlP93qq8R5fSe9HbzGugq68=\nR:main_test.go\na:0:0:444\nZ:Q1LLIlxWWiPSsajt1Xvm0Yma4TUns=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context/testdata\nM:0:0:555\nR:context-ls-notls.golden\na:0:0:444\nZ:Q1+Ub+KY4q9HYcjCgLw9oaPSHdXzU=\nR:context-ls-tls.golden\na:0:0:444\nZ:Q1FjGnDEIy26M0Ke5Re6G4MWtZ5q0=\nR:context-ls.golden\na:0:0:444\nZ:Q11D6DqGsQ1/We7Tmz1l8X9pP0WlY=\nR:test-dockerconfig-tls.tar\na:0:0:444\nZ:Q1zgXntBV9aTine7GKsEaMZLJS7a8=\nR:test-dockerconfig.tar\na:0:0:444\nZ:Q1vCbf+xTCi66RdNbs239z7iqdETQ=\nR:test-kubeconfig\na:0:0:444\nZ:Q1ID+Ct+VDZikvqND4cOEpjLSdKwU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context/testdata/test-dockerconfig\nM:0:0:555\nR:config.json\na:0:0:444\nZ:Q1zLrjy3rvAajPdD/svMA+d5I+71A=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context/testdata/test-dockerconfig/contexts\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context/testdata/test-dockerconfig/contexts/meta\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/context/testdata/test-dockerconfig/contexts/meta/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a\nM:0:0:555\nR:meta.json\na:0:0:444\nZ:Q1D1k1XNg+3cEO+liM6+Q+tf/+H84=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/global\nM:0:0:555\nR:cli_test.go\na:0:0:444\nZ:Q1DRiyhKSTZfiJ+SFUfu5lW6AoyQs=\nR:main_test.go\na:0:0:444\nZ:Q16l8FYQlxWGeK8BnfCaYypz3Z5v8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/image\nM:0:0:555\nR:build_test.go\na:0:0:444\nZ:Q1X3E71VKxtdNGwx/vGQdNt1xQMNM=\nR:main_test.go\na:0:0:444\nZ:Q1JF/Lk2lmsLRVjIVuzd8jZEkoKmY=\nR:pull_test.go\na:0:0:444\nZ:Q1LDNwFCJ+PhOYor15rSWe+KNkXCE=\nR:push_test.go\na:0:0:444\nZ:Q1me1v3VdZAZxZEQZM62skcDXNf7c=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/image/testdata\nM:0:0:555\nR:pull-with-content-trust-err.golden\na:0:0:444\nZ:Q12GenreFZvsdGU/PL5Mn4pIoFkBc=\nR:pull-with-content-trust.golden\na:0:0:444\nZ:Q1CqWsiZzJAVEbAnKhJUrjxlbNuXA=\nR:push-with-content-trust-err.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/image/testdata/notary\nM:0:0:555\nR:delgkey1.crt\na:0:0:444\nZ:Q10LoispdJ11QoEiRIb9VOrQqMTUc=\nR:delgkey1.key\na:0:0:444\nZ:Q1MIwFCprM5itd6ZwlsEHdEufJZAY=\nR:delgkey2.crt\na:0:0:444\nZ:Q1Fa2xlgYjc6vPV88Oofx8v4D6y30=\nR:delgkey2.key\na:0:0:444\nZ:Q1S8ULRrQiL0BAlLkJx68L0wMGIRs=\nR:delgkey3.crt\na:0:0:444\nZ:Q1ORds79dfX/RcW7YPQdBB5MZR1tw=\nR:delgkey3.key\na:0:0:444\nZ:Q1e/fbLhnjhMPHZED53PvJtZcNO+Y=\nR:delgkey4.crt\na:0:0:444\nZ:Q1MSjc33E6GPuOOI5TAelM67K1sHc=\nR:delgkey4.key\na:0:0:444\nZ:Q1Qyn63skX+6Nh24bzkab/buDuc/Y=\nR:gen.sh\na:0:0:444\nZ:Q1hXzKkdZMCANmswkiB2qsDRituYE=\nR:localhost.cert\na:0:0:444\nZ:Q1x0IclzuKcV2Uxk/lrAjpcrq6Bkc=\nR:localhost.key\na:0:0:444\nZ:Q1bK7R7Qz1Cf5ZEY6Ph9UTiiVmKa4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/internal/fixtures\nM:0:0:555\nR:fixtures.go\na:0:0:444\nZ:Q1D2a/ahD64USn2A6adVsgxyDZnSo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/plugin\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q1w0DkbS9dhMWmTOD4gwCwCqhZFg8=\nR:trust_test.go\na:0:0:444\nZ:Q1vYzjv4qNVfwtneBehr4ghasbR5E=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/plugin/basic\nM:0:0:555\nR:basic.go\na:0:0:444\nZ:Q1o29bOEBKBySUrZGoeAbfpWFlgIo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/stack\nM:0:0:555\nR:deploy_test.go\na:0:0:444\nZ:Q1uX+kXXY9Pv2/OJ0MwJTCo2mLtAc=\nR:help_test.go\na:0:0:444\nZ:Q1qI/yiR8Gk+7cbXeHLe/c8RtmOxI=\nR:main_test.go\na:0:0:444\nZ:Q1nk0mDbpnuCeRyglXCmMaz8O7nDA=\nR:remove_test.go\na:0:0:444\nZ:Q1A7itfZgdnAxd6WWyh/k+jnqE1NM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/stack/testdata\nM:0:0:555\nR:data\na:0:0:444\nZ:Q1YCeZqINWciye7JxVCJ0P4/FRXh0=\nR:full-stack.yml\na:0:0:444\nZ:Q1A3g7TveWgFOu0K5Es17dW2ximdk=\nR:stack-deploy-help-kubernetes.golden\na:0:0:444\nZ:Q12UwsWX/Dh46jodkdJ4kAFLXje+g=\nR:stack-deploy-help-swarm.golden\na:0:0:444\nZ:Q1vzYSsyMGCbLMCrOywtk0Xao+Y/o=\nR:stack-deploy-with-names-kubernetes.golden\na:0:0:444\nZ:Q1Nr5CLVrnhk1xslwCmIKrfZuuooU=\nR:stack-deploy-with-names-swarm.golden\na:0:0:444\nZ:Q1SfehUSEXKbr49zqPfQagmDht0Ho=\nR:stack-deploy-with-names.golden\na:0:0:444\nZ:Q1Nr5CLVrnhk1xslwCmIKrfZuuooU=\nR:stack-remove-kubernetes-success.golden\na:0:0:444\nZ:Q1iFe6eM6RoJnXpEPRQ7PkU7BZ2mY=\nR:stack-remove-swarm-success.golden\na:0:0:444\nZ:Q1UxKluNI91DreQrKJeiC8z1b0zdg=\nR:stack-with-named-resources.yml\na:0:0:444\nZ:Q1HRIxQWuGU3ZPPnQ6VhJdpt3KuQ0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/system\nM:0:0:555\nR:inspect_test.go\na:0:0:444\nZ:Q1VYTxLy5VxPR4LZv/I3blFukLR+M=\nR:main_test.go\na:0:0:444\nZ:Q1dkvw2URCPGohGJRRVZ09v8EzlOE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/testdata\nM:0:0:555\nR:Dockerfile.connhelper-ssh\na:0:0:444\nZ:Q1Cww9qkfxDYHHUpMtfB0VQRU8i80=\nR:Dockerfile.evil-notary-server\na:0:0:444\nZ:Q1nrJi3zjnmSBr8WetOcfpwn0+Xiw=\nR:Dockerfile.notary-server\na:0:0:444\nZ:Q1V79RMVMgg3+OTi/hCItRw5vNtV0=\nR:gen-certs.sh\na:0:0:444\nZ:Q1A5+fD+kiR92U7PB+uXZUK4BWmJI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/testdata/connhelper-ssh\nM:0:0:555\nR:entrypoint.sh\na:0:0:444\nZ:Q1NMW/ZV5dHzsRAFzjYZSRB26Giv0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/testdata/notary\nM:0:0:555\nR:notary-config.json\na:0:0:444\nZ:Q1x37+7wvtlUNad7U7AVpuWhgYJYo=\nR:notary-server.cert\na:0:0:444\nZ:Q1Fn45EPKxZxcj5WT+MuIYoVunfDM=\nR:notary-server.key\na:0:0:444\nZ:Q1YWN4AfnDQecVSGjLzS0ULlACPo8=\nR:root-ca.cert\na:0:0:444\nZ:Q1UVi+dv4+T+ETFVjj0LBEaEddEwQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/testdata/notary-evil\nM:0:0:555\nR:notary-config.json\na:0:0:444\nZ:Q1Mg2WpN+N/0jdZI/HgLKv0FpOTLE=\nR:notary-server.cert\na:0:0:444\nZ:Q1Fn45EPKxZxcj5WT+MuIYoVunfDM=\nR:notary-server.key\na:0:0:444\nZ:Q1YWN4AfnDQecVSGjLzS0ULlACPo8=\nR:root-ca.cert\na:0:0:444\nZ:Q1UVi+dv4+T+ETFVjj0LBEaEddEwQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/e2e/trust\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q1lM7GqdK3P0uZgn1ykfmS/kukNPI=\nR:revoke_test.go\na:0:0:444\nZ:Q1Pv/6M1UCNx9Dkztcz90fM9sCa8w=\nR:sign_test.go\na:0:0:444\nZ:Q1QJincXAbZLj4IsJPMXohfjYvzR4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/experimental\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q100/b2Rx/KfE7Swq3KdXTGsoolsc=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test\nM:0:0:555\nR:cli.go\na:0:0:444\nZ:Q1m5VSaE9dTJA6nW2Xse9Y0T92JOA=\nR:doc.go\na:0:0:444\nZ:Q11YwW0am3MXkw3TNeT9D3Pw0BtmM=\nR:store.go\na:0:0:444\nZ:Q1kUeH+wqqlrX8rhnli5Ooec/ef00=\nR:strings.go\na:0:0:444\nZ:Q1ZwTkN1DeMlgmzVFVhjI/ON7IyAE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test/builders\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1MZoMzDMrTOzT7v6FHPxA843EGRY=\nR:container.go\na:0:0:444\nZ:Q1EYPaE4bHlUTAihPGpwPr7nghy4s=\nR:doc.go\na:0:0:444\nZ:Q1Hvrx5pjum8R0UrbVU4QH+msTpYg=\nR:network.go\na:0:0:444\nZ:Q10ce3P19YsqfkEhadnLBUnt+tB0w=\nR:node.go\na:0:0:444\nZ:Q1O4AHEsiwerveE36ng++IKhxLsGM=\nR:secret.go\na:0:0:444\nZ:Q1xbFcBw8qoQZqg50MnFjuOw0FkUU=\nR:service.go\na:0:0:444\nZ:Q1vvilOIio24X2wpunZ0OPzoiDVnY=\nR:swarm.go\na:0:0:444\nZ:Q12ENydBWTozdGA89SnTlbEJWob9M=\nR:task.go\na:0:0:444\nZ:Q180gL7F5wokczBcdLj0vjHPbt5e8=\nR:volume.go\na:0:0:444\nZ:Q1ph3P896VyF+yfjqtGcNqnvCrwzo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test/environment\nM:0:0:555\nR:testenv.go\na:0:0:444\nZ:Q1ZNScfowI9hiFRp45CYq96l3+rOE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test/network\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1t04cmVd55fpgocROcvT6Ruja+Do=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test/notary\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1g+v0ciNQczzyNZrZAGehRxylmgQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/internal/test/output\nM:0:0:555\nR:output.go\na:0:0:444\nZ:Q1/MxJXVrnfZD/F3TtZt9Oc34WEFo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1o//RKXnbpoiFPOALxyrNzRp9E+k=\nR:check.go\na:0:0:444\nZ:Q1ppBrirBUdh5J51v+3XYGr3yEoWM=\nR:check_test.go\na:0:0:444\nZ:Q19b/7rcLgf/3HECCXLdUzx6M3jV8=\nR:doc.go\na:0:0:444\nZ:Q1PrFYjdLNP7FO7loq80wRzVJIF34=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset\nM:0:0:555\nR:clientset.go\na:0:0:444\nZ:Q1VejUboiR0ozPFpKKuAy9k1t8zBA=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset/scheme\nM:0:0:555\nR:register.go\na:0:0:444\nZ:Q18dgKQ9jCa9pYQvE44mBWrTztqJ8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset/typed\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset/typed/compose\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset/typed/compose/v1beta1\nM:0:0:555\nR:compose_client.go\na:0:0:444\nZ:Q1mfqOeUktC/DgB1XT5NS8b/0pnaQ=\nR:stack.go\na:0:0:444\nZ:Q1CGiJ7lHBHQqJove8T06y2KGzmtM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/clientset/typed/compose/v1beta2\nM:0:0:555\nR:compose_client.go\na:0:0:444\nZ:Q1XzUKTMCgqYZbK+YtFaQAi3m70ro=\nR:stack.go\na:0:0:444\nZ:Q1fyjrrx1SeIopkjP3aZoSZzDB1OI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/informers\nM:0:0:555\nR:factory.go\na:0:0:444\nZ:Q1bBmszWmUXQ8+pLM3AYggN7/QciU=\nR:generic.go\na:0:0:444\nZ:Q1NwQBtsGDk5iZuMVthBY6D7Wjgu8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/informers/compose\nM:0:0:555\nR:interface.go\na:0:0:444\nZ:Q1P4PYjbBh9Xx9kIeULwyEdO/vmlM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/informers/compose/v1beta2\nM:0:0:555\nR:interface.go\na:0:0:444\nZ:Q18qMjLcoPa/q/a8KKSOA3KjFBH58=\nR:stack.go\na:0:0:444\nZ:Q15W3fz2bX0J3pBN0EMFrySJ48c0A=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/informers/internalinterfaces\nM:0:0:555\nR:factory_interfaces.go\na:0:0:444\nZ:Q1GUIaCSpFsHelbDKyCJP41SMTDwM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/listers\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/listers/compose\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/client/listers/compose/v1beta2\nM:0:0:555\nR:expansion_generated.go\na:0:0:444\nZ:Q184MyYIPj8kLRgzzV5h0SqJ4XXQM=\nR:stack.go\na:0:0:444\nZ:Q1cHt6qNBMkxvYxoUME1/po89zvmo=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/compose\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1RYvurbC2qMeYPtzehi5f9Jcy4L0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/compose/clone\nM:0:0:555\nR:maps.go\na:0:0:444\nZ:Q1dne6ZBYnn55K1gSuYnTvp9YcAkA=\nR:slices.go\na:0:0:444\nZ:Q16sanq8oylSCL+MZ/Tzc/WxK26J4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/compose/impersonation\nM:0:0:555\nR:impersonationconfig.go\na:0:0:444\nZ:Q1umm7iFcxbrQwOn+sACt0xwR81SE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/compose/v1beta1\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1rF7FZkC1axWO/s73ekB/I6V+29g=\nR:owner.go\na:0:0:444\nZ:Q1oU97PhEX2edRUIqRZ9KyB3qAR2w=\nR:parsing.go\na:0:0:444\nZ:Q1PMxfg/qSgHgAp1DDqMvVf2NYL2g=\nR:register.go\na:0:0:444\nZ:Q1eS+XCIox/v8UTD6uhrpni7MNwSo=\nR:stack.go\na:0:0:444\nZ:Q1ThrWwMhNaew2Y8lyG5uMKim7o84=\nR:stack_test.go\na:0:0:444\nZ:Q1cUAheGHCprqXMYsV/19bLPwu2vE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/compose/v1beta2\nM:0:0:555\nR:composefile_stack_types.go\na:0:0:444\nZ:Q17BzL0jOp+crIC77WERnAALymGL0=\nR:doc.go\na:0:0:444\nZ:Q1p7NcEOAMrYCsvjG0UpIgPc8D8iM=\nR:owner.go\na:0:0:444\nZ:Q1Q7IhodozXpSavN8ckusuK2AZ7FI=\nR:register.go\na:0:0:444\nZ:Q1vuX7H6CAyDhHclgrdHN7eIHz8Ig=\nR:scale.go\na:0:0:444\nZ:Q1jyUOtxRZlrbtaGEtTv/Gi+7xR0Y=\nR:stack.go\na:0:0:444\nZ:Q1TGFitGU5vmYcpfNnmm1jofDUrg0=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/kubernetes/labels\nM:0:0:555\nR:labels.go\na:0:0:444\nZ:Q11nfLtucN2Sh5HQYmoXZkxgLu89E=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man\nM:0:0:555\nR:Dockerfile.5.md\na:0:0:444\nZ:Q1n9+n420ERP5Aa9qvvf2XAIw/hNE=\nR:README.md\na:0:0:444\nZ:Q1OogABswHvbJoYJueRrlj24dpiYU=\nR:docker-build.1.md\na:0:0:444\nZ:Q1fskvL8t/bjn4NO9sy7OHLrpvxC8=\nR:docker-config-json.5.md\na:0:0:444\nZ:Q18y4rdzokXakb8eOjI+PTPhFRPTk=\nR:docker-run.1.md\na:0:0:444\nZ:Q1sQ/HxecfBdFyw3AKVRgcdjXZFtA=\nR:docker.1.md\na:0:0:444\nZ:Q1lzdnQoQJUjffZIGe6eJxtrhzNHA=\nR:dockerd.8.md\na:0:0:444\nZ:Q1nCcGI9nbIJ/xOr/jWd0BsGNgInI=\nR:generate.go\na:0:0:444\nZ:Q1dszOEP9hacnQU8WYKjis+OBPvqI=\nR:import.go\na:0:0:444\nZ:Q1Yfeojnvvmr/MB1Iy7Dhe1qaVa5w=\nR:md2man-all.sh\na:0:0:444\nZ:Q1VYn/FLDTK1K2s11U6hZ5Q2crEsg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src\nM:0:0:555\nR:attach.md\na:0:0:444\nZ:Q1IHygOeYFE+fENFkaTCt86a79LwE=\nR:commit.md\na:0:0:444\nZ:Q1hIegP5Yi4IMXlV26UhTFpdmYv2U=\nR:cp.md\na:0:0:444\nZ:Q1ilZeO3z40PTNWaABINoXq2M8+UM=\nR:create.md\na:0:0:444\nZ:Q1CSzHWdl3IeMCf6Ji5Adj6CikmFA=\nR:diff.md\na:0:0:444\nZ:Q1AFjG8Brni17Awi5RIYataz4Njl4=\nR:events.md\na:0:0:444\nZ:Q1JX9Zgd4yow8zLYzBYzahyhH6lgk=\nR:exec.md\na:0:0:444\nZ:Q1tpaJH2/7TIVgZabgcacIZ69JwcA=\nR:export.md\na:0:0:444\nZ:Q19k9Dq/g8nptbKxbFAuT6zileG0M=\nR:history.md\na:0:0:444\nZ:Q1GU0Wv8K917aE/mI+QEdSPcti+88=\nR:images.md\na:0:0:444\nZ:Q1PLZzGCM6QDlfMWxsZXZly04P0dY=\nR:import.md\na:0:0:444\nZ:Q1FOgeOEf2FP1SgOlhOnSwqyhWmgc=\nR:info.md\na:0:0:444\nZ:Q1MIdmCNOmEwnHQosu/gVKofcmCZM=\nR:inspect.md\na:0:0:444\nZ:Q1itm76lrI9XZ1meX7jfS4L1Pts9Y=\nR:kill.md\na:0:0:444\nZ:Q1HCvrGoLbjKzDlG+zr2fx7rxaJVc=\nR:load.md\na:0:0:444\nZ:Q1gC7eaDFbwZIPrBiib9Wqc4ZfEl0=\nR:login.md\na:0:0:444\nZ:Q1heAX2cx+NtYiTM8stokP4ux1jy0=\nR:logout.md\na:0:0:444\nZ:Q1m7I07PCd6A2YfY3HiOmmf9Serh4=\nR:logs.md\na:0:0:444\nZ:Q1Hqr5kX/qQjK9d8C67bTW5IiqnGA=\nR:pause.md\na:0:0:444\nZ:Q1IC9XOdTJCuGQlcoR5AACzGFL304=\nR:port.md\na:0:0:444\nZ:Q147bn9Pi+/Wc0Ij4b3yDFhRCStjo=\nR:ps.md\na:0:0:444\nZ:Q1BcHEUJ3p3OWHumTko4wERbOtZsM=\nR:pull.md\na:0:0:444\nZ:Q124ZyCpYEEk+2/Q2mQ3FL2Hyn8YU=\nR:push.md\na:0:0:444\nZ:Q1vK63xrJ8+uAqdc9VWMtks0PiaHY=\nR:rename.md\na:0:0:444\nZ:Q18h3DdIYVop4XopmckruBdnFVxoU=\nR:restart.md\na:0:0:444\nZ:Q1LMnR6BX7Plxn5vvtHntwggG8z/8=\nR:rm.md\na:0:0:444\nZ:Q13wm7A/AR59krMiI9Q6xEWElFugk=\nR:rmi.md\na:0:0:444\nZ:Q1DZpsVuO4FHI4fihtghZoDXC1AHk=\nR:save.md\na:0:0:444\nZ:Q1BE3ucRfEm9YUygvld3lrCyuYtQQ=\nR:search.md\na:0:0:444\nZ:Q1Mrk0DDfRn32GZD0vHzCjO2BqHNU=\nR:start.md\na:0:0:444\nZ:Q1y2bOI6owBBlxnvPnp85TelybPcc=\nR:stats.md\na:0:0:444\nZ:Q1xI2pn1IwnindylxvLNCIktH2VxA=\nR:stop.md\na:0:0:444\nZ:Q1g0Z4fTFCSzutTkGpnaQBP2iyU5U=\nR:tag.md\na:0:0:444\nZ:Q1VF5qpM6k/NxL+lcdwcr7SKqVU8Y=\nR:top.md\na:0:0:444\nZ:Q1SUrq4bri0MdIcsBVdThRCF/r+34=\nR:unpause.md\na:0:0:444\nZ:Q1EN09SDbfb4MOu4IhKlhT+nbtJck=\nR:update.md\na:0:0:444\nZ:Q1Z9vVemOuhJDOWBEQFCuLupnqklA=\nR:version.md\na:0:0:444\nZ:Q1OOeyaPmRfkjO9AWV2UFYppBLm4o=\nR:volume.md\na:0:0:444\nZ:Q1hABneLgdJSiw43Ha4dEfX3YyZNY=\nR:wait.md\na:0:0:444\nZ:Q1lFcvXvybNcD5qyD9FFaDZrc6U/k=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/container\nM:0:0:555\nR:attach.md\na:0:0:444\nZ:Q1GQ4jWSmuzDCcdHmzY9xF/9Ico8Y=\nR:commit.md\na:0:0:444\nZ:Q1Dhbh1MlVoQiJnkuOfySqte0b6hE=\nR:cp.md\na:0:0:444\nZ:Q1YGu+31bs0Mk0uIpulzJZODcW4kE=\nR:create-example.md\na:0:0:444\nZ:Q1cu9r5BiS/R58D40atT0+YnX5mXo=\nR:create.md\na:0:0:444\nZ:Q12DXSeIYeITdraHx/E9x9I+v9/YA=\nR:diff.md\na:0:0:444\nZ:Q1mXc8HudIRecg52X0HDPink7QMaE=\nR:exec.md\na:0:0:444\nZ:Q1Cs1rimYBJ51+CzQDGua0Tt3lRoU=\nR:export.md\na:0:0:444\nZ:Q1iUU7MkM/vLE1ERia6x/L7Y7EPGw=\nR:kill.md\na:0:0:444\nZ:Q1E7dZmwGQ/ySRXQ1r0z2Kw0Vwj+A=\nR:logs.md\na:0:0:444\nZ:Q1JSACot6jwgH/2g6OhLTHWyBwlbs=\nR:ls.md\na:0:0:444\nZ:Q1ntn0cg+FqLjiFoqiQSXi5Vhz7go=\nR:pause.md\na:0:0:444\nZ:Q1E8bmWK8vWlurPEzbhpiWn2UdSk8=\nR:port.md\na:0:0:444\nZ:Q1FTBsNyJy+p6QA5+0fFxbCthPSG8=\nR:rename.md\na:0:0:444\nZ:Q17QA3mlbzf2ZtzXynbt3jEzw16NQ=\nR:restart.md\na:0:0:444\nZ:Q18zZZkVQOUZ0mq0FcufJe++qGinQ=\nR:rm.md\na:0:0:444\nZ:Q1KpDrlcs+5P4dKsN6ENzaxd4Kjes=\nR:run.md\na:0:0:444\nZ:Q1VJkwd3iZ+NSfazcTryiUYC48hq8=\nR:start.md\na:0:0:444\nZ:Q1tqBrumx0GW0SPiLHybD96VGUaOg=\nR:stats.md\na:0:0:444\nZ:Q15CieDR46Tuc8/Q/M3zTQHcVLXTU=\nR:stop.md\na:0:0:444\nZ:Q1BrhhXYZrNK7jbgyp5RxvqTsEmNs=\nR:top.md\na:0:0:444\nZ:Q1cA8scKnhdt4NQ2dlP8DWX6djcSk=\nR:unpause.md\na:0:0:444\nZ:Q1pspXw55VaOuMJC/JDUpI3PTPYfQ=\nR:update.md\na:0:0:444\nZ:Q1BNGjyJSrow4HmGA5mBfLtN4rJI8=\nR:wait.md\na:0:0:444\nZ:Q1c/P7x+zB9jfOSN26e30bZzt+YfM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/image\nM:0:0:555\nR:build.md\na:0:0:444\nZ:Q1xtqPIse9Itp4D9Rv9eV2IHu/yzk=\nR:history.md\na:0:0:444\nZ:Q1cac25EK0iuVhRqU5AIkOO8aJ9tY=\nR:import.md\na:0:0:444\nZ:Q1DVSXgxB7+N/UqEuMb59fmoMtA8U=\nR:load.md\na:0:0:444\nZ:Q14srbnaf4lXwyAudMwhv8NJPZn4g=\nR:ls.md\na:0:0:444\nZ:Q1zytaDV8yVB3uDjdz2vNAWmoKhZM=\nR:pull.md\na:0:0:444\nZ:Q1fGFkkggwNFAaBqWQ1amK2Qptvlc=\nR:push.md\na:0:0:444\nZ:Q1pf7GsoMyqRgmKO6za+gj8ZS8U8Y=\nR:rm.md\na:0:0:444\nZ:Q10FAC3QwdyQMa9By5+ycxdW5cCtM=\nR:save.md\na:0:0:444\nZ:Q1nYHEhkN0rZWvL2mo/c8rubu+PFQ=\nR:tag.md\na:0:0:444\nZ:Q1JM0bEBnmxJ/Z2g3oO79w452w67g=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/network\nM:0:0:555\nR:connect.md\na:0:0:444\nZ:Q1XFVI6XSdbBdIq+QGWI1swP/jsME=\nR:create.md\na:0:0:444\nZ:Q1RMzId4py/ridUzl5Qwgk8KWUx6M=\nR:disconnect.md\na:0:0:444\nZ:Q1XmclRtpvLIjoLehjWZiWD+dFgho=\nR:inspect.md\na:0:0:444\nZ:Q1jCSU05lb5KqhCVvlAoF2Q/6ZCDw=\nR:ls.md\na:0:0:444\nZ:Q1NDc9A8KiATj5kcmMG0Nv0P3CXLE=\nR:rm.md\na:0:0:444\nZ:Q1X/47JB7EIppNLjWb6/F0sTgWcM4=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/plugin\nM:0:0:555\nR:ls.md\na:0:0:444\nZ:Q1gjOPJUeW360/ZfZc3ULUihQzlE8=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/system\nM:0:0:555\nR:events.md\na:0:0:444\nZ:Q1whsxuFBzjuc9qLjgJKpSrXckkR8=\nR:info.md\na:0:0:444\nZ:Q1Yg+GcQ7NlhwJAuaXCCScysnZ41Q=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/man/src/volume\nM:0:0:555\nR:create.md\na:0:0:444\nZ:Q1IM49yB4IwVqBglZuUBHWlrk36k0=\nR:inspect.md\na:0:0:444\nZ:Q1SgIkVUpUfv6/lL2tu7b8kLyaal0=\nR:ls.md\na:0:0:444\nZ:Q1XY4t8+xL03w6GpxZGQG8ww4/P0o=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/opts\nM:0:0:555\nR:capabilities.go\na:0:0:444\nZ:Q1suxVYapFYlBTvOqaLAXcciDLESc=\nR:capabilities_test.go\na:0:0:444\nZ:Q17H4KqDvgkJPJSwf3SSUv9geSn7o=\nR:config.go\na:0:0:444\nZ:Q1vptfsC78TY+8u6s+ctgmrGkxUh4=\nR:config_test.go\na:0:0:444\nZ:Q1qYdJpj80kvcJdHPNUNxdLbCq8bk=\nR:duration.go\na:0:0:444\nZ:Q1nL8d0SZ8TyqHZuXoUV1sPo3YKyI=\nR:duration_test.go\na:0:0:444\nZ:Q1oRRSR087tLFqpACNuvWfRfP+++A=\nR:env.go\na:0:0:444\nZ:Q1fBbUBjPOvcH+Yt7HZ7v3FZCF1UQ=\nR:env_test.go\na:0:0:444\nZ:Q1mov5ZFDtSZd24AmykKDDThPTwd4=\nR:envfile.go\na:0:0:444\nZ:Q131ybnJv8TLlcrJs7kCwQC3k4Wrw=\nR:envfile_test.go\na:0:0:444\nZ:Q1uSgIaHy5TWGM0NqiBzW3NY7lZLQ=\nR:file.go\na:0:0:444\nZ:Q1QrISBmT1QqX9HDvhw36e8MacjXo=\nR:gpus.go\na:0:0:444\nZ:Q1/huXUvPkUia4SZ0vXeGZdYuzoYg=\nR:gpus_test.go\na:0:0:444\nZ:Q1vlG/ZizLJYFF6aOUa88RTyKxh2E=\nR:hosts.go\na:0:0:444\nZ:Q1X+Idy+kAFeHs1e3AKZ42Fj2uuLg=\nR:hosts_test.go\na:0:0:444\nZ:Q1hHZ1IwF6hOhLelhLw3CIa6RulL0=\nR:hosts_unix.go\na:0:0:444\nZ:Q12p8M2bzZJ1uJJOpTd4y2jt7LV8M=\nR:hosts_windows.go\na:0:0:444\nZ:Q1hQZkGeUBwRmNU79IMzxwY5NKDSc=\nR:ip.go\na:0:0:444\nZ:Q1U8vmEiiS7D7aYNCRvHg6yHHLjVI=\nR:ip_test.go\na:0:0:444\nZ:Q1meZbwCIwFp3i1KQU83aLFKWgwJc=\nR:mount.go\na:0:0:444\nZ:Q1HDYHiWOLXXQ1Hs0jdIo5ldc8Z/g=\nR:mount_test.go\na:0:0:444\nZ:Q1JnrlegEqb/iAcPvY1CfYIBpGCyE=\nR:network.go\na:0:0:444\nZ:Q1UzhknwqAI83/RcEeGwy7MW2l4A4=\nR:network_test.go\na:0:0:444\nZ:Q1ElHZnDCqLKxTfYM3Dd/cBh0u+Ww=\nR:opts.go\na:0:0:444\nZ:Q1S5IVFjXZbye2IA6ls3pgRbLt6Dc=\nR:opts_test.go\na:0:0:444\nZ:Q1Es8lqJ4IdNd9m92GZaU4rrxghhg=\nR:parse.go\na:0:0:444\nZ:Q1NtLwiJ0hFKqxpxGcle+4CSV7KDc=\nR:parse_test.go\na:0:0:444\nZ:Q1GlSx1RJiABloOWmr7W6JllcfsG4=\nR:port.go\na:0:0:444\nZ:Q16rYBuwmxjA7oe4YMakb0xowwfik=\nR:port_test.go\na:0:0:444\nZ:Q1/QhoV5slm0sUctzs5T+9ZWb0BAo=\nR:quotedstring.go\na:0:0:444\nZ:Q17YGQkbxiVSTkznt7Zb3s9jbHgws=\nR:quotedstring_test.go\na:0:0:444\nZ:Q1dORK1CsTPb1dKsWxLV5skwWXCaI=\nR:runtime.go\na:0:0:444\nZ:Q19C7HBRwaPnhFqRte0Db9cZCLt2U=\nR:secret.go\na:0:0:444\nZ:Q18nh8oirK4oYWPEFqxqledkFty44=\nR:secret_test.go\na:0:0:444\nZ:Q1wzcQFuhwHhjRK/smFGdTUNzkSOI=\nR:throttledevice.go\na:0:0:444\nZ:Q1OKldLScHINWA05ERxAguNryipww=\nR:ulimit.go\na:0:0:444\nZ:Q1XxKdJODGW78ODXaxVegtHkDRIqc=\nR:ulimit_test.go\na:0:0:444\nZ:Q1krdP9bvYQcWfvWF/AXxTJ+cgtUY=\nR:weightdevice.go\na:0:0:444\nZ:Q1Whp4J/K0NcWS8VKM6HtMumcv7rk=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts\nM:0:0:555\nR:make.ps1\na:0:0:444\nZ:Q1PUytzIslxn/6UcWm51RpCXS6e4c=\nR:warn-outside-container\na:0:0:444\nZ:Q1A2jKseTE4pvHg+h2xCkoGDiIdqI=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/build\nM:0:0:555\nR:.variables\na:0:0:444\nZ:Q1/T6l1N9hH0BHK8LIfZYZnvprogs=\nR:binary\na:0:0:444\nZ:Q1SstZAyrRKPfFj3EKKETYhcJcefY=\nR:plugins\na:0:0:444\nZ:Q1+golvwiBqeL09KFMOimZv5Fzing=\nR:plugins-osx\na:0:0:444\nZ:Q1n4lgU3Rd22e344KV5u7V+Hvdtrw=\nR:plugins-windows\na:0:0:444\nZ:Q1wBlB8g59+K1pyUDYG2r/VhZze+U=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/docs\nM:0:0:555\nR:generate-authors.sh\na:0:0:444\nZ:Q1Ris3EGPr2BWVr0NO2tF/Ve2oaQ4=\nR:generate-man.sh\na:0:0:444\nZ:Q1s7jPSEd5owPczIfJ+F3A/2nzKSk=\nR:generate-yaml.sh\na:0:0:444\nZ:Q1auapvbtcWItkoioHrbd6MmZUOwE=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/test\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/test/e2e\nM:0:0:555\nR:entry\na:0:0:444\nZ:Q1Mh2qzUSgwAcoEx7dleU2EwOgSxE=\nR:load-image\na:0:0:444\nZ:Q19aCP+LH1WPfJHFVq8RIzXFxLkFg=\nR:run\na:0:0:444\nZ:Q159b/HB++XrWuToBpDN1df7kM9YA=\nR:wait-on-daemon\na:0:0:444\nZ:Q1Ayx3XxThvaNmGgW/QmltJYAxyXs=\nR:wrapper\na:0:0:444\nZ:Q15+idsX2JA0kg+al6bM8XXeuBIUM=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/validate\nM:0:0:555\nR:check-all-packages-vendored\na:0:0:444\nZ:Q1N1AyQP6dCg3nWRagpmR8icVGnEw=\nR:check-git-diff\na:0:0:444\nZ:Q1DVdhWDuJPDZsc1xu2du7csyedfs=\nR:shellcheck\na:0:0:444\nZ:Q1Z7EQxb0hyFCOQDJfD3S3diLfDMU=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/scripts/winresources\nM:0:0:555\nR:common.rc\na:0:0:444\nZ:Q1rqVgZ0uHzkj3xcBH919nTxGI5g0=\nR:docker.exe.manifest\na:0:0:444\nZ:Q1DvuYHXq7xHgyBIml4puZXRmBYIs=\nR:docker.ico\na:0:0:444\nZ:Q1cMWJAKQ/kXzKZ3hPTFNqeQUT+SQ=\nR:docker.rc\na:0:0:444\nZ:Q1ZWLG9ogtlx998yIoG8XfCFwUffg=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/service\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/service/logs\nM:0:0:555\nR:parse_logs.go\na:0:0:444\nZ:Q1c0aLfU+C2JISwkSPAmbx/JMgw6E=\nR:parse_logs_test.go\na:0:0:444\nZ:Q13C1B4ukmMBIDn/oHP14RfBy16cQ=\nF:root/go/pkg/mod/github.com/docker/cli@v20.10.20+incompatible/templates\nM:0:0:555\nR:templates.go\na:0:0:444\nZ:Q1EjHMsCaEXVp7B4OZ1JRwThXWULA=\nR:templates_test.go\na:0:0:444\nZ:Q1UcBBzb5ZU8/RkKJ5+/g7i/0s1JM=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1I/dudTbfW13EsnRuBs7Sfyggt1E=\nR:.golangci.yml\na:0:0:444\nZ:Q1+yw1m5MdOpMnk099Y8NbCtvEGx0=\nR:.mailmap\na:0:0:444\nZ:Q1H9pT8j5Er1VP9J/escjHNGPGbhQ=\nR:BUILDING.md\na:0:0:444\nZ:Q1PNDDzMqDSypNACO0lwLH5gjmOZM=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1LfZpikVwMcZ/ki7RJeQXc8wCzf0=\nR:Dockerfile\na:0:0:444\nZ:Q1Lwrvn7l0Wyk9M/dtM+zh/7WCdc4=\nR:LICENSE\na:0:0:444\nZ:Q1xwCouTEtJL3FdXD31qExz2PYkBY=\nR:MAINTAINERS\na:0:0:444\nZ:Q15OsDtVB62TzN3RXFqR+i1zDOzIo=\nR:Makefile\na:0:0:444\nZ:Q1Lomj4J3YJjCrpdeg72P5+K5R98M=\nR:README.md\na:0:0:444\nZ:Q1dpvXwjp5JqRDL9UN7aN1LduAgNs=\nR:ROADMAP.md\na:0:0:444\nZ:Q1YLlQY1YEMbKgGlLvkoIyRgUzezg=\nR:blobs.go\na:0:0:444\nZ:Q1/VgtrgCgCwzyU14aQtpO5lD7af8=\nR:doc.go\na:0:0:444\nZ:Q1TAxoNzuJLjeHgAsqXSewk6KqUvc=\nR:docker-bake.hcl\na:0:0:444\nZ:Q1OhXg3jldFEhOB+t8UHTFaIreEDQ=\nR:errors.go\na:0:0:444\nZ:Q1of9SsGdAE+FE5FJHEWXCiZY0f5A=\nR:manifests.go\na:0:0:444\nZ:Q185fmjrs3tSwLC8/xK180sxfMhb0=\nR:registry.go\na:0:0:444\nZ:Q1yFe4DTT/KbidLAYMwpqirpIlluA=\nR:tags.go\na:0:0:444\nZ:Q1uOI4YdA6ghSPan+b5LNpsAa+LWc=\nR:vendor.conf\na:0:0:444\nZ:Q1BZKoEugs1Vq6iN4hLCUPQTtbUIM=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/.github/workflows\nM:0:0:555\nR:build.yml\na:0:0:444\nZ:Q147qZYEwSW8PeDXxGgOpI5KQzTME=\nR:ci.yml\na:0:0:444\nZ:Q10RKwpTdtwVKx9LKl6oB42wssmNs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/cmd/digest\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1eamHB9OflOUnoSbbLHPBlA/XpKQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/cmd/registry\nM:0:0:555\nR:config-cache.yml\na:0:0:444\nZ:Q1qAXdj6wg3PLBPVX314+UJPzbiwk=\nR:config-dev.yml\na:0:0:444\nZ:Q1Ws/ogJlzYClK7ZNeO3q7Tokdg2E=\nR:config-example.yml\na:0:0:444\nZ:Q13W0UkXi3oYvKEdcQtVM6WRu31hk=\nR:main.go\na:0:0:444\nZ:Q1AtTsP2GxcGfYyj5K73GtJmEjehY=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/cmd/registry-api-descriptor-template\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1upMQQ0aAhPdQUO4En5qm4S5HtbU=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/configuration\nM:0:0:555\nR:configuration.go\na:0:0:444\nZ:Q1O4SSz/24xNMrC/6nDrYQJUb1Pzw=\nR:configuration_test.go\na:0:0:444\nZ:Q1KT4rQ79CywmZSJFM3N6A+q3eXxQ=\nR:parser.go\na:0:0:444\nZ:Q1UIx93E9sNbPN/bVsmUTGxyWJxNk=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/context\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1MD4T90YDQtgQHskyMsYBJTfIYIk=\nR:doc.go\na:0:0:444\nZ:Q1TbR6EiqG8WfkvNEdtNuDSYPPUOQ=\nR:http.go\na:0:0:444\nZ:Q1Trm715C/UkdbmFLmksd2BRXP7Pg=\nR:http_test.go\na:0:0:444\nZ:Q1vlRfQ5pY+mbEtOY06hZ/Ip2WBSs=\nR:logger.go\na:0:0:444\nZ:Q1zCaPBMUmm7FnScrkKUppfy2b5v0=\nR:trace.go\na:0:0:444\nZ:Q199Pwa8rvmUS0b0+AR7ElkU3nlTk=\nR:trace_test.go\na:0:0:444\nZ:Q1dIF32TchNJmWGqThHULftzRC3z8=\nR:util.go\na:0:0:444\nZ:Q1MGQFgGZ9WdDMTDOdpnoQ5av/q20=\nR:version.go\na:0:0:444\nZ:Q1ISrZyp96qe9HKls9ALLaYPHijCY=\nR:version_test.go\na:0:0:444\nZ:Q1dSjAxPGs/im8V1OwVceq45PBoOw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/apache\nM:0:0:555\nR:README.MD\na:0:0:444\nZ:Q1UlKDy6TSWXIorlJXe5bU0y7wrwc=\nR:apache.conf\na:0:0:444\nZ:Q1Co0OGAKc4PpIauxwTolsRAe99Bs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/compose\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1e63+u4nM6REelCqH70p36AW9k5A=\nR:docker-compose.yml\na:0:0:444\nZ:Q1n+W1261oWfV89FHMd9L3Ix77HOI=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/compose/nginx\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1dOC1TBf0RMaH3qjUCg0XQcfEqaA=\nR:docker-registry-v2.conf\na:0:0:444\nZ:Q11UpZCHrEumJ6yVGy4GIffwjlTh0=\nR:docker-registry.conf\na:0:0:444\nZ:Q1yxoZoEDCFVyYCLYWCvW0IWAXHvU=\nR:nginx.conf\na:0:0:444\nZ:Q1KvwUkOWRG9PPFuMFbZb36HLULWA=\nR:registry.conf\na:0:0:444\nZ:Q1Ps9WsfDkOA6DaSoOZTweb9vo1gs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q13QEXVJhKpVbiZULanjuvF62J+w0=\nR:README.md\na:0:0:444\nZ:Q1Q7jgSHtIlu01jO42i+wgkOF0KkA=\nR:docker-compose.yml\na:0:0:444\nZ:Q1jkMGLwpSUI9Sj/Myw5STHu7H/qI=\nR:golem.conf\na:0:0:444\nZ:Q1uF5r4nvGqscu/4K0Q1cRYfbj++4=\nR:helpers.bash\na:0:0:444\nZ:Q1dPjmI5jjOd1iv/uZCfvjqH1I82c=\nR:install_certs.sh\na:0:0:444\nZ:Q1cBlGMCnMpWIOmy0v39QkI8tr5Ec=\nR:malevolent.bats\na:0:0:444\nZ:Q1CsT4npVDh7um0iwH0dJknr2hWqA=\nR:plugins.bats\na:0:0:444\nZ:Q1pjkYE0aTH09PfAHwYLjVcjPKz9w=\nR:run_multiversion.sh\na:0:0:444\nZ:Q1ehMDuEs/XJ55804bh5TfC75q07w=\nR:tls.bats\na:0:0:444\nZ:Q1I3zVhFYSVTyXvaU+5Nh7eZmqVBQ=\nR:token.bats\na:0:0:444\nZ:Q1YtMH9tS2eKSyuhiXChSgjKxZTBE=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/malevolent-certs\nM:0:0:555\nR:ca.pem\na:0:0:444\nZ:Q1SxNlkFfdaF6/Du0RasGF+DObnFc=\nR:localregistry.cert\na:0:0:444\nZ:Q159h5innxSeQhUcL/X+0V0xUF1oA=\nR:localregistry.key\na:0:0:444\nZ:Q1bG+GjkTYmkB46VZ7nLxFa/TUlQ4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/nginx\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1HUCrF91B2HTveSGB0/tbUpXF+8o=\nR:docker-registry-v2.conf\na:0:0:444\nZ:Q1stIffF4TIQgcV/CeIYDda8n/5i4=\nR:nginx.conf\na:0:0:444\nZ:Q1tjVF/7X3zCvC9mrHIcsvCUunTtA=\nR:registry-basic.conf\na:0:0:444\nZ:Q1aJEqvXSNuZVTZsgtj8viY4nOK6g=\nR:registry-noauth.conf\na:0:0:444\nZ:Q17WTFIJC9jU3Do97cmak0WEpRMDc=\nR:registry.conf\na:0:0:444\nZ:Q1/mh/S+j1ZswRaq6cj5zs92bS7XA=\nR:test.passwd\na:0:0:444\nZ:Q1nnjZjGqiAo99feW5mYpuSBG8Fkw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/nginx/ssl\nM:0:0:555\nR:registry-ca+ca.pem\na:0:0:444\nZ:Q1PWf25nyNi480xeGkDV238Frq2Nc=\nR:registry-ca+client-cert.pem\na:0:0:444\nZ:Q1l4/DAJukTFgWoq6j/Qaa85PNoRU=\nR:registry-ca+client-key.pem\na:0:0:444\nZ:Q1qRfBgyr+YQdGaCbZ5e9XjjTIzx0=\nR:registry-ca+localhost-cert.pem\na:0:0:444\nZ:Q1K3l2nFuEU/yADFzYBwJzCRJ1ISw=\nR:registry-ca+localhost-key.pem\na:0:0:444\nZ:Q1d8n+/l5rH0NepbtOl7Kfw3VJz7Y=\nR:registry-ca+localregistry-cert.pem\na:0:0:444\nZ:Q1I8JmIy/X+qze/1Jxb5+/8EfwbU0=\nR:registry-ca+localregistry-key.pem\na:0:0:444\nZ:Q1dfoCXNiGH4X8tWD2GVm4ArxjTBE=\nR:registry-noca+client-cert.pem\na:0:0:444\nZ:Q1lQgNFDO3UKoHOJn6F0LOmrMZjMg=\nR:registry-noca+client-key.pem\na:0:0:444\nZ:Q1zlUw7QzHGhLDEGTU6y8XWzPnpCo=\nR:registry-noca+localhost-cert.pem\na:0:0:444\nZ:Q1+DadRRIvbO18OO7dWIfI8iONZPo=\nR:registry-noca+localhost-key.pem\na:0:0:444\nZ:Q1o6pgpFu9b5PR37EwIbfzSg+4Q38=\nR:registry-noca+localregistry-cert.pem\na:0:0:444\nZ:Q1BVkAVsdVsRBEMvd6VeRskgXcdSc=\nR:registry-noca+localregistry-key.pem\na:0:0:444\nZ:Q1BdU9HeFtDb6nLnLaiP3DxMFgHD4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/nginx/v1\nM:0:0:555\nR:search.json\na:0:0:444\nZ:Q1S9cr300dPou4l5SjPBZ6P6hvFNU=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/tokenserver\nM:0:0:555\nR:.htpasswd\na:0:0:444\nZ:Q1eArvJsi6cXe7g0NSxH3zsBpHYVY=\nR:Dockerfile\na:0:0:444\nZ:Q1j2RjCaDiQZiO+2jMjSBrvdWFbrA=\nR:registry-config.yml\na:0:0:444\nZ:Q1rf4yafZi8y/l48ckqPdL4HmWATo=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/tokenserver/certs\nM:0:0:555\nR:auth.localregistry.cert\na:0:0:444\nZ:Q1ccsTBoSxIcvuH6aw6jGyA3HBYN0=\nR:auth.localregistry.key\na:0:0:444\nZ:Q1z6CdgttGyMX/CJz3y34nSHStuu8=\nR:ca.pem\na:0:0:444\nZ:Q17ny5QZX0P3zln2oYtE4RlJ0LCA8=\nR:localregistry.cert\na:0:0:444\nZ:Q1wxhpebKhew4/cJ0OUv89ZFwTyZ0=\nR:localregistry.key\na:0:0:444\nZ:Q1Jzafnia443s6N8izho0nd6JSnN0=\nR:signing.cert\na:0:0:444\nZ:Q1AeyxEY6yqWkeeFNY/hvjHU1DYPM=\nR:signing.key\na:0:0:444\nZ:Q1NCaHOYDnI9i71W2zjj+BCNbRF6Q=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/tokenserver-oauth\nM:0:0:555\nR:.htpasswd\na:0:0:444\nZ:Q1eArvJsi6cXe7g0NSxH3zsBpHYVY=\nR:Dockerfile\na:0:0:444\nZ:Q1MyiQbAXWgHRX5WtqgNBJGEWkz8M=\nR:registry-config-notls.yml\na:0:0:444\nZ:Q1oJ/KPLx6WjjxrdeZVl5wmcx1HeA=\nR:registry-config.yml\na:0:0:444\nZ:Q1SovFkratfwIug9PHzIQhLKYC16g=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/docker-integration/tokenserver-oauth/certs\nM:0:0:555\nR:auth.localregistry.cert\na:0:0:444\nZ:Q1ccsTBoSxIcvuH6aw6jGyA3HBYN0=\nR:auth.localregistry.key\na:0:0:444\nZ:Q1z6CdgttGyMX/CJz3y34nSHStuu8=\nR:ca.pem\na:0:0:444\nZ:Q17ny5QZX0P3zln2oYtE4RlJ0LCA8=\nR:localregistry.cert\na:0:0:444\nZ:Q1wxhpebKhew4/cJ0OUv89ZFwTyZ0=\nR:localregistry.key\na:0:0:444\nZ:Q1Jzafnia443s6N8izho0nd6JSnN0=\nR:signing.cert\na:0:0:444\nZ:Q1AeyxEY6yqWkeeFNY/hvjHU1DYPM=\nR:signing.key\na:0:0:444\nZ:Q1NCaHOYDnI9i71W2zjj+BCNbRF6Q=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/contrib/token-server\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q18OKsbscc04jmj0pZ8VOLpS1baH4=\nR:main.go\na:0:0:444\nZ:Q19KkplncUXZ0phr39kwzSK/PsXN4=\nR:token.go\na:0:0:444\nZ:Q18sMhazqUSp9JceMU9TGsRvK6K3U=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/digestset\nM:0:0:555\nR:set.go\na:0:0:444\nZ:Q1ykhMMdBRilr2qetw6slBfRJJnYQ=\nR:set_test.go\na:0:0:444\nZ:Q1wY8ueqzKUgCpZXPr6Gh607Pzgz4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/docs\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1eoZo3UU/+daF1YTkyA/DrpGqVoo=\nR:architecture.md\na:0:0:444\nZ:Q1k/rd/6uY5nHMvjEpmoT/KffM9a4=\nR:configuration.md\na:0:0:444\nZ:Q1FhRPnO8xAsl1DHtL4WUc/uJcrVA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/docs/spec\nM:0:0:555\nR:api.md\na:0:0:444\nZ:Q13ND6ybXx2cnsidfKpJE7oFy2lA0=\nR:api.md.tmpl\na:0:0:444\nZ:Q1uaKDVt72TW9I0GBZKKrFK2t5iik=\nR:deprecated-schema-v1.md\na:0:0:444\nZ:Q1bCDGtZB5bW8QJV+QMrRSSGvY3eQ=\nR:implementations.md\na:0:0:444\nZ:Q1bcuDFyjf35CVbSfJLsRf3oftFCM=\nR:index.md\na:0:0:444\nZ:Q1g9eDhpfd/mUeOJckRx/QDYy0R7k=\nR:json.md\na:0:0:444\nZ:Q1PbJO1YaObYbIx63c6AVLbj6wJp0=\nR:manifest-v2-1.md\na:0:0:444\nZ:Q1pGHRgaGzNxGzh5/iclAcjo3yG/Q=\nR:manifest-v2-2.md\na:0:0:444\nZ:Q1eceZvrz2oMw++goHievDBtSK8A4=\nR:menu.md\na:0:0:444\nZ:Q1FwJFclO+6Wt4GPSL8HEaMJnOpc4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/docs/spec/auth\nM:0:0:555\nR:index.md\na:0:0:444\nZ:Q1er91PXOAUQUdZdNhcI+aJXS0SFQ=\nR:jwt.md\na:0:0:444\nZ:Q1Ys7k6Pxhy/QTtDTHRF8GAUX/fAU=\nR:oauth.md\na:0:0:444\nZ:Q1yLaTfr5gxQmT8z6haem/NSbOPZw=\nR:scope.md\na:0:0:444\nZ:Q1fYaIt/C6lqknH4mNXR/04ySFBOQ=\nR:token.md\na:0:0:444\nZ:Q1D8bm51Mx6TQp4dDQPYDeE6TXzpw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/docs/spec/images\nM:0:0:555\nR:v2-registry-auth.png\na:0:0:444\nZ:Q1uXk293M/+Q30Ivv0WL4kcGojHYo=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/health\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1DHLhwwtMPfQUqGk/h0DyuBHbcMk=\nR:health.go\na:0:0:444\nZ:Q14KePuwrO0bBIN3jhmv12jh5/LYg=\nR:health_test.go\na:0:0:444\nZ:Q1+XEE/GoV/YAoNS8nogppUldmHu0=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/health/api\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1ex9aP5EFrucUy73KLExamOQsJ5o=\nR:api_test.go\na:0:0:444\nZ:Q1EWJXStK2Fnqn7jR5axuWV/CPJQQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/health/checks\nM:0:0:555\nR:checks.go\na:0:0:444\nZ:Q12otozebRq1ez3DqZZKu9i5SEJio=\nR:checks_test.go\na:0:0:444\nZ:Q1zbC9AHYqBjIujjrx+5UhDFqASdA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/manifest\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1xPtZzWgn9L7XGeiAUQbhdTu1qoI=\nR:versioned.go\na:0:0:444\nZ:Q1olFBpCfApyjqnBXInDZbyPjOZrE=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/manifest/manifestlist\nM:0:0:555\nR:manifestlist.go\na:0:0:444\nZ:Q1CsZDIN45I8bBr459mANXtECpYJ0=\nR:manifestlist_test.go\na:0:0:444\nZ:Q16NP6aLh7oLCykchiKyKkwmNKFU4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/manifest/ocischema\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1yKSEqP7+wf10Mb2BYahUysE5AyY=\nR:builder_test.go\na:0:0:444\nZ:Q1lliqMzKPcJuofG0121Bw38kYK7k=\nR:manifest.go\na:0:0:444\nZ:Q1r02BxD3qQSCRjQtC3tcOfmfkaZ0=\nR:manifest_test.go\na:0:0:444\nZ:Q10DooWtKreFCajbNebMKDLHNYgLw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/manifest/schema1\nM:0:0:555\nR:config_builder.go\na:0:0:444\nZ:Q1ikaOIozC6Wr4OzoNB5t0nDP8ZYo=\nR:config_builder_test.go\na:0:0:444\nZ:Q1+TgIo0iL7RPvt3PjclWvcC7S0lA=\nR:manifest.go\na:0:0:444\nZ:Q1wsAIlOYZMeGdeN8r/9r10v3pMSI=\nR:manifest_test.go\na:0:0:444\nZ:Q1I9U6kaZpLRb/KA2TCJxv3Q0rRn8=\nR:reference_builder.go\na:0:0:444\nZ:Q1nk9QlNX4PtRonJVSiGsRdb3Fh7E=\nR:reference_builder_test.go\na:0:0:444\nZ:Q17EvX096Cc1vyHgBZmd9Y6OKNVnw=\nR:sign.go\na:0:0:444\nZ:Q1Y+TSKFIpDzsYZSnWP5R1Mbdhd90=\nR:verify.go\na:0:0:444\nZ:Q1T7YkkFjCuTbCEHfCgJ2Cyc8KBNc=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/manifest/schema2\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1l91ptEHM+qGCE1Z2WABJZF7SBdg=\nR:builder_test.go\na:0:0:444\nZ:Q1rF7Uh75BU7Bc05ztStEFvKDk1Q8=\nR:manifest.go\na:0:0:444\nZ:Q1Ih24TCTHfr5rfL7HAatEP6xjoxY=\nR:manifest_test.go\na:0:0:444\nZ:Q1lZjSOmbYeKMCnWTIJ0mHcpBWpwo=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/metrics\nM:0:0:555\nR:prometheus.go\na:0:0:444\nZ:Q1v4kI9wH1c9unTfvnYoqQ5eWsFLQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/notifications\nM:0:0:555\nR:bridge.go\na:0:0:444\nZ:Q1mjYgH9TdjyRvfA7YOPqvoxGoR1s=\nR:bridge_test.go\na:0:0:444\nZ:Q1ZVf3ypbJl5tO1moXiDnHbTAwm8E=\nR:endpoint.go\na:0:0:444\nZ:Q1CCr5ShnZAYUvh3ViIoO8G8MpmXA=\nR:event.go\na:0:0:444\nZ:Q1ATCmzEbYhkWlVdfmqMtWUHPayVQ=\nR:event_test.go\na:0:0:444\nZ:Q1eT8boVwbU+abYerLw7CA1m6h3C4=\nR:http.go\na:0:0:444\nZ:Q1pw7fKbGYdz2weI/GWohCZO5z2ns=\nR:http_test.go\na:0:0:444\nZ:Q1s4L8V/A8KdeRyHG9FcsCxAuUG6s=\nR:listener.go\na:0:0:444\nZ:Q1Sbwc/xz52V4ySvjTQJbQ8DvtdMA=\nR:listener_test.go\na:0:0:444\nZ:Q1LxHCiWO/5fTAyRVSdPa0/0Ec680=\nR:metrics.go\na:0:0:444\nZ:Q1oGwEv3E1MYLGj3MT+PFfKMUySQ0=\nR:metrics_test.go\na:0:0:444\nZ:Q1t9TmzWC9M5iG9jB9sDRLAwxFGyk=\nR:sinks.go\na:0:0:444\nZ:Q1WXL5wc4+SIpJTXxb/ZJrJAsiiS4=\nR:sinks_test.go\na:0:0:444\nZ:Q12U61XD/nE1w1hNB+GYQmTwd99Xo=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/project\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/project/dev-image\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1Ij1Lars9OKPNhCOAKxctYdeV3WA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/project/hooks\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1BZ+E5OZ12rmj3eWETP5ou9Jvy7Y=\nR:configure-hooks.sh\na:0:0:444\nZ:Q1vEO3huPYPA88nZbupojLlgQ+QGY=\nR:pre-commit\na:0:0:444\nZ:Q1DC4nliWeuDiqBUdr765eljvsHmg=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/reference\nM:0:0:555\nR:helpers.go\na:0:0:444\nZ:Q1U/B63zOhLeM2/9eBWemJWO5NdZs=\nR:normalize.go\na:0:0:444\nZ:Q137E8YyQw6jgMCVG7G3AHmVZJ+h0=\nR:normalize_test.go\na:0:0:444\nZ:Q1d6MOWE/Tq0ezZ/mfV/xuUzMGuqY=\nR:reference.go\na:0:0:444\nZ:Q1tIHME0yMFHmRJmq4ZATyZZioclY=\nR:reference_test.go\na:0:0:444\nZ:Q1NC1e9jZR1LtHn/FGAi2xF7nQbhg=\nR:regexp.go\na:0:0:444\nZ:Q1ym6czYphOgrmorS8rNw7KTfJ0k0=\nR:regexp_test.go\na:0:0:444\nZ:Q1QDuzKtkXVMpVXCMBIlDjUc+FRiI=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1X/u1m2ipa+JNtFe6jZRPvu9pnAk=\nR:registry.go\na:0:0:444\nZ:Q1e644h45A4CbZXIAimVlFquCTsJk=\nR:registry_test.go\na:0:0:444\nZ:Q1z2h3Xu88fV6lkDKN+nm3fT7dwp0=\nR:root.go\na:0:0:444\nZ:Q1CLSc+ohYgrbnRTQhGsYkQ05vOEs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/api\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/api/errcode\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1nL+BF+BMt7lgNh6vgoWT5DMX6kg=\nR:errors_test.go\na:0:0:444\nZ:Q1yOrtrrscK0a3mVE0ymMCMqSZSuQ=\nR:handler.go\na:0:0:444\nZ:Q1JHgEgXfQDZSpmO0RSNry6+qM2xY=\nR:register.go\na:0:0:444\nZ:Q1RRutbKDjJNvjFURm/N7TTg78XRg=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/api/v2\nM:0:0:555\nR:descriptors.go\na:0:0:444\nZ:Q1ZWRHX8iNMwzJCh8BRnMysIcFcko=\nR:doc.go\na:0:0:444\nZ:Q1y92YgejASPv9x68PDeU4pWRnb2I=\nR:errors.go\na:0:0:444\nZ:Q1IBIom8zEZdSmzh/70g+qFFJrW1s=\nR:headerparser.go\na:0:0:444\nZ:Q1hQpIu90+9H83X57v8C0b2unoC+w=\nR:headerparser_test.go\na:0:0:444\nZ:Q1H2mDAen22RqhMitic48PD6quJgE=\nR:routes.go\na:0:0:444\nZ:Q17uO7fsHud+7Jlvr4H4qRNgEwC04=\nR:routes_test.go\na:0:0:444\nZ:Q143hgqpP4rGIiOzUKnlpc5IDjvKU=\nR:urls.go\na:0:0:444\nZ:Q1+XvtOkLOaRHsDmw+6NeVUUYaCQE=\nR:urls_test.go\na:0:0:444\nZ:Q14clKU0WKY+YPgEn5fy5Bxtgrsfg=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/auth\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q1elEAaYe8D1YDXnzvlmL26Mua374=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/auth/htpasswd\nM:0:0:555\nR:access.go\na:0:0:444\nZ:Q1WDXVyA9Se/F9Sb9hpsGfeM4ZxTU=\nR:access_test.go\na:0:0:444\nZ:Q1e/O5VAmB5rfWz44BaKh5i7lIi3M=\nR:htpasswd.go\na:0:0:444\nZ:Q1Rwz+Jfijjlfa4Os8jwtt1q7fHX0=\nR:htpasswd_test.go\na:0:0:444\nZ:Q17zkmrNWn5cpw957IE+WvLanv5dY=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/auth/silly\nM:0:0:555\nR:access.go\na:0:0:444\nZ:Q1Bk4Ujr2BUDoJhMAZvkvAcLNg0Aw=\nR:access_test.go\na:0:0:444\nZ:Q1u4esCrTkfplvu62Zb3ps1nzlH+U=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/auth/token\nM:0:0:555\nR:accesscontroller.go\na:0:0:444\nZ:Q1a7eVda5sSBM+ZNkD3TvySoU2lxY=\nR:stringset.go\na:0:0:444\nZ:Q1+ckG5pGarRsDEX6tWmiaeVUof/M=\nR:token.go\na:0:0:444\nZ:Q1GAG6yX+Un3+eJyz7ncSq085zvL0=\nR:token_test.go\na:0:0:444\nZ:Q1orYMluf5EpaHG+ETCKbGoQpC6/o=\nR:util.go\na:0:0:444\nZ:Q1r1b6rjKIXdtYZ9i/KGhVBJknp0U=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/client\nM:0:0:555\nR:blob_writer.go\na:0:0:444\nZ:Q1K6cwPu76npFZCs7XHAhmtZj83uU=\nR:blob_writer_test.go\na:0:0:444\nZ:Q16Xf0KsKE8in2E1r3z5k882AwYeo=\nR:errors.go\na:0:0:444\nZ:Q1AizyN9mKwZdukWlvtLlGyMh6GwM=\nR:errors_test.go\na:0:0:444\nZ:Q1S6+DFl9cqwUtouhhDOYtotdZDSM=\nR:repository.go\na:0:0:444\nZ:Q1K6ZGfh+tllT1NIe8lvEkkNAbuA0=\nR:repository_test.go\na:0:0:444\nZ:Q1bWu4mO11YUAJMv89P7h4GBzapdQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/client/auth\nM:0:0:555\nR:api_version.go\na:0:0:444\nZ:Q1x67+jjh2mX3yxyQUxjJTHBVNmK8=\nR:session.go\na:0:0:444\nZ:Q1/htOlKNnL4L55xDdmb/dDz1k4jk=\nR:session_test.go\na:0:0:444\nZ:Q1Jnj8baCxO1SmZib7k60ygwMFnFs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/client/auth/challenge\nM:0:0:555\nR:addr.go\na:0:0:444\nZ:Q1vscWE0IzL/h6WsMYpXKBuh6K4HU=\nR:authchallenge.go\na:0:0:444\nZ:Q11xbeTCxPjZAZi/Pioy/nDOdXh2A=\nR:authchallenge_test.go\na:0:0:444\nZ:Q1n9hJd1Ehc4MF6mb48MzmwQqaT0U=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/client/transport\nM:0:0:555\nR:http_reader.go\na:0:0:444\nZ:Q1XRuGtbW0sOBqmhMG4GVzedg2UO4=\nR:transport.go\na:0:0:444\nZ:Q1FGglevLvZoFDqXLdboJqGylyd54=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/handlers\nM:0:0:555\nR:api_test.go\na:0:0:444\nZ:Q1gx2Hw8Yh0uJ5oiDpDV9UbpqRnVo=\nR:app.go\na:0:0:444\nZ:Q1GrBkrt5AtANsdH5rKdoYyEik400=\nR:app_test.go\na:0:0:444\nZ:Q1NK3jl+D6WylyFAJq9ad/YHD5yXw=\nR:basicauth.go\na:0:0:444\nZ:Q1OoHW0WN9oR9wxK4K306vKgdfd2E=\nR:basicauth_prego14.go\na:0:0:444\nZ:Q1wA/kWIQNSU3SGYk/IpHA02JcPxs=\nR:blob.go\na:0:0:444\nZ:Q1uUDUP0vHB0m3es0vL91jBGMjp2U=\nR:blobupload.go\na:0:0:444\nZ:Q1/UhvoNk+6mSl55d3Z0p3g/aRhb8=\nR:catalog.go\na:0:0:444\nZ:Q1+LFnPd5flxgudwnNRFa2yNJYFK8=\nR:context.go\na:0:0:444\nZ:Q1XQSWxSrD6WoNLqinoiCAzAJstWo=\nR:health_test.go\na:0:0:444\nZ:Q10kBi2fdpC2wjIB23QcJlFnGUJQE=\nR:helpers.go\na:0:0:444\nZ:Q1hfwB3CuKgunCmsgDa8197V9K9A4=\nR:hmac.go\na:0:0:444\nZ:Q1Y7qcDnZ38275DvL0EFoX31f911s=\nR:hmac_test.go\na:0:0:444\nZ:Q1IGmRKNpV8bTIyv5rzZ/nU1Umje4=\nR:hooks.go\na:0:0:444\nZ:Q1TSJMEcZoTbMP7H7leGqHlTtlvQA=\nR:mail.go\na:0:0:444\nZ:Q1bFHswBonWW2FdSuNonWOvSXaMUs=\nR:manifests.go\na:0:0:444\nZ:Q1GeOOrIGMVx5PKr+1q/gHjsOhTlM=\nR:tags.go\na:0:0:444\nZ:Q1SCs1CS7gZpo0VRyNpE5eVAqymvQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/listener\nM:0:0:555\nR:listener.go\na:0:0:444\nZ:Q1i9pTSIEf81bLMfJuzQ5HxcMiJOQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/middleware\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/middleware/registry\nM:0:0:555\nR:middleware.go\na:0:0:444\nZ:Q11cZLHojY9uCPruqwiO5bviAaBK8=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/middleware/repository\nM:0:0:555\nR:middleware.go\na:0:0:444\nZ:Q1EuSwhlvCNqTkukoJ85L0tx/MRJI=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/proxy\nM:0:0:555\nR:proxyauth.go\na:0:0:444\nZ:Q16tC0ggEohvAJov3M7UoqNPGl64Q=\nR:proxyblobstore.go\na:0:0:444\nZ:Q1WiannisCql5xOCxrVgJ7X+EVuvc=\nR:proxyblobstore_test.go\na:0:0:444\nZ:Q1eTfPmD0yjaOY3wzZHBgqP9upw50=\nR:proxymanifeststore.go\na:0:0:444\nZ:Q1bESv4V92poc2qw8FeLmneAP7Xss=\nR:proxymanifeststore_test.go\na:0:0:444\nZ:Q18XFap2btJ/rpnalCaI7uaXchfEI=\nR:proxymetrics.go\na:0:0:444\nZ:Q1ZOPYXHT8rmqiFkxIZdWqAWW2ghE=\nR:proxyregistry.go\na:0:0:444\nZ:Q1LRD/0jIeritU1StByANJdzT5Lpw=\nR:proxytagservice.go\na:0:0:444\nZ:Q11yYK3UkYktq7bKT+mmSPBTG2sDw=\nR:proxytagservice_test.go\na:0:0:444\nZ:Q1/znFYzlBmSutaFhIE2qC4tidCPA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/proxy/scheduler\nM:0:0:555\nR:scheduler.go\na:0:0:444\nZ:Q1pAVZPct/YWlmfc2oIOYiAs7CLg4=\nR:scheduler_test.go\na:0:0:444\nZ:Q1JoojZp8zUIaj8f0o+bcsqpuo1g4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage\nM:0:0:555\nR:blob_test.go\na:0:0:444\nZ:Q1H3GhKfPNCM8emuLUEFpa1DAG9Dk=\nR:blobcachemetrics.go\na:0:0:444\nZ:Q1wCq9HtYtEES8cG0f7hXRlDv9NZQ=\nR:blobserver.go\na:0:0:444\nZ:Q1k+ZH/9MMnEkygALSWe2bLQ1nmNM=\nR:blobstore.go\na:0:0:444\nZ:Q1GNmcM8vn8H00OfrUGT/vvcxyl6Y=\nR:blobwriter.go\na:0:0:444\nZ:Q19HMQd8reIF7N+QvwxQ9542+ZmUo=\nR:blobwriter_nonresumable.go\na:0:0:444\nZ:Q1QFWEKXfDeti0QkAsUdurjuCEf/I=\nR:blobwriter_resumable.go\na:0:0:444\nZ:Q1Helz08v6jZHLEDAuMdkczbjXUx0=\nR:catalog.go\na:0:0:444\nZ:Q1X5LytOEYReO3Ccjq1V7p5o97pkg=\nR:catalog_test.go\na:0:0:444\nZ:Q19o3onJPN8fyx0r9D6THTZaw3bvs=\nR:doc.go\na:0:0:444\nZ:Q19r8x+lq7kNlcBwN01vuEMOD3e6w=\nR:error.go\na:0:0:444\nZ:Q1h1zISzOhxjDK+PdNVhLYtjN402w=\nR:filereader.go\na:0:0:444\nZ:Q1KU6o2qxs6Lol8ljoAXVJXjINJJU=\nR:filereader_test.go\na:0:0:444\nZ:Q14NKotjihH/TAoJu1gKfROUlDXYU=\nR:garbagecollect.go\na:0:0:444\nZ:Q1X6gNZjgaGlt7rCfYas/24Xmj4hw=\nR:garbagecollect_test.go\na:0:0:444\nZ:Q1e7pfcrkZyXH0BpYifjZ/oDCb/dk=\nR:io.go\na:0:0:444\nZ:Q1Sh5I3+KDLw8XxS0szF2h3FNNZvQ=\nR:linkedblobstore.go\na:0:0:444\nZ:Q1LM9yAtup3CCR6AokiAHipxfZlfQ=\nR:linkedblobstore_test.go\na:0:0:444\nZ:Q1CP3n6bFGaEwnbPsbhidEQ6AWX8w=\nR:manifestlisthandler.go\na:0:0:444\nZ:Q1/gBDHB/OTiSsU+sV2x9ThLpmS8Y=\nR:manifeststore.go\na:0:0:444\nZ:Q1Pe4Im9O/9T1emJvl6pE9PkXCNRw=\nR:manifeststore_test.go\na:0:0:444\nZ:Q1MNTJpqtI9jlXI02Aa15f4nH7pmU=\nR:ocimanifesthandler.go\na:0:0:444\nZ:Q1MSL6YoG1eWEBv0wGC8Md+w4XZoA=\nR:ocimanifesthandler_test.go\na:0:0:444\nZ:Q1DezPXuW7RnhxOzmNiR2oXcDLs5c=\nR:paths.go\na:0:0:444\nZ:Q1Vds3MnRFVuGJAuTJZDIM/pKE1CI=\nR:paths_test.go\na:0:0:444\nZ:Q18XjJAh9OiGshodWQD6s8beIpxlQ=\nR:purgeuploads.go\na:0:0:444\nZ:Q1I9TvmJIqxuSZ2jfaJWfrkTfwdUk=\nR:purgeuploads_test.go\na:0:0:444\nZ:Q1DS1jOw3L4qNnzn3o6JahXE1osWI=\nR:registry.go\na:0:0:444\nZ:Q1eHfQbwAWBtMOLztZlQVs4KWhuEU=\nR:schema2manifesthandler.go\na:0:0:444\nZ:Q1gr3AgnielqniywqP8tsWBWkoJXA=\nR:schema2manifesthandler_test.go\na:0:0:444\nZ:Q1DoJQoCjonPWvid+ETdOA/VMoAo0=\nR:signedmanifesthandler.go\na:0:0:444\nZ:Q1JuVeOe4f844KHP/gtSW1xq5J4Lw=\nR:tagstore.go\na:0:0:444\nZ:Q1r+v0F9j6BD5kdLX2edQILqkOXAE=\nR:tagstore_test.go\na:0:0:444\nZ:Q1WmooPrFXHVBL5PGYzOtT11Dc8YM=\nR:v1unsupportedhandler.go\na:0:0:444\nZ:Q1hzsPielHicQpBeMHKNHE6uP2c2k=\nR:vacuum.go\na:0:0:444\nZ:Q1c4/duCzJjt/0zXAj4YUnhsuDDQs=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/cache\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1gcyLXCwq+6hzA/fAHOOslSWAm5I=\nR:cachedblobdescriptorstore.go\na:0:0:444\nZ:Q14+WinC5egiYO6RUePxPHnmoqjeI=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/cache/cachecheck\nM:0:0:555\nR:suite.go\na:0:0:444\nZ:Q1n+Kld5ApRV5XX9Bn16RQynfk1NU=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/cache/memory\nM:0:0:555\nR:memory.go\na:0:0:444\nZ:Q1llDnd8qrnRVW1/4zVozQK6wXEbw=\nR:memory_test.go\na:0:0:444\nZ:Q1h5ZlRYe/VEg3d5h52oct1rle1d0=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/cache/redis\nM:0:0:555\nR:redis.go\na:0:0:444\nZ:Q14PSwG6QtHQXi+b7X9lyzXVrYlrI=\nR:redis_test.go\na:0:0:444\nZ:Q1vu0x/TBUZ/7DSTzSdq6ZERTF36M=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver\nM:0:0:555\nR:fileinfo.go\na:0:0:444\nZ:Q1k8t7xIUR1xQmFLxtSwa0csh63bs=\nR:storagedriver.go\na:0:0:444\nZ:Q14th/ZpUXgbnaouHtBAYorI5htOk=\nR:walk.go\na:0:0:444\nZ:Q1wNo16ZiMmthHEAhaNl/2kiyehiI=\nR:walk_test.go\na:0:0:444\nZ:Q1VjFBOUl4h8R8494NGK0yyE/0/Wg=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/azure\nM:0:0:555\nR:azure.go\na:0:0:444\nZ:Q1jmJfo4BhG29vwq6lohRW6VWskKY=\nR:azure_test.go\na:0:0:444\nZ:Q1l3S4gWP1TLySCRSe5tzp6CmGhAw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/base\nM:0:0:555\nR:base.go\na:0:0:444\nZ:Q1i9ZXENTd67Fz/42o0EhpBMgtDAQ=\nR:regulator.go\na:0:0:444\nZ:Q13Bq7yC74JvPLdXLxNVdoPsusRBI=\nR:regulator_test.go\na:0:0:444\nZ:Q1ZjQlKK7OjTjaezToUk5BXiFcWvA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/factory\nM:0:0:555\nR:factory.go\na:0:0:444\nZ:Q13/3GSm0hosTzSbPBlMlB6YqBG9I=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/filesystem\nM:0:0:555\nR:driver.go\na:0:0:444\nZ:Q1iQwU5usfpVobJV0QQgK8XSoH4vM=\nR:driver_test.go\na:0:0:444\nZ:Q1eQoesYc8hRN11+HkSbbdsRbtXOQ=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/gcs\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1p+eTzj8ZxanvJEYFjyZ6XzvOGRM=\nR:gcs.go\na:0:0:444\nZ:Q1qzcmradyk2XQpo0joAJAIb/puus=\nR:gcs_test.go\na:0:0:444\nZ:Q16uyWQwjIE6StwSn7pCzpUm8j3G4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/inmemory\nM:0:0:555\nR:driver.go\na:0:0:444\nZ:Q1TfsnWGXRQ7gM0sn+PLewSbxy4QQ=\nR:driver_test.go\na:0:0:444\nZ:Q1Gs0CEkgIfwN0Qg57qfvtNJDdR8s=\nR:mfs.go\na:0:0:444\nZ:Q1ajXluc+OQ03kZVytBdYT8D2acrY=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/middleware\nM:0:0:555\nR:storagemiddleware.go\na:0:0:444\nZ:Q1+3UeHDYCkNKcbIqcgkpn+NbGaOc=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/middleware/cloudfront\nM:0:0:555\nR:middleware.go\na:0:0:444\nZ:Q130QGSBe33icuDuNAKQt1LGXiBZA=\nR:s3filter.go\na:0:0:444\nZ:Q1Y5im9XVAiaPdIdd+Q6XiE930A/s=\nR:s3filter_test.go\na:0:0:444\nZ:Q1YUwgvX/o5QLk1G3o90fkSPnKrTw=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/middleware/redirect\nM:0:0:555\nR:middleware.go\na:0:0:444\nZ:Q17s5/rvY7P251+St/n7dFJwX/qDk=\nR:middleware_test.go\na:0:0:444\nZ:Q19ndcf7QVRZsIOQoNgF4jKuAhZpE=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/oss\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1xlCnU/kgjfISXDsZt7ek0NBSffc=\nR:oss.go\na:0:0:444\nZ:Q1fMmH4zzRjoFeU+/nXJ8eAynEgCQ=\nR:oss_test.go\na:0:0:444\nZ:Q1SfIJrx08a1cx7Tt/7L32hUa7+oM=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/s3-aws\nM:0:0:555\nR:s3.go\na:0:0:444\nZ:Q1LDJ4ersuIvfh2MVfaZNQNP1+YuI=\nR:s3_test.go\na:0:0:444\nZ:Q1igLdKPnSZ4CsP+Ykfsi4N6I776I=\nR:s3_v2_signer.go\na:0:0:444\nZ:Q1DgZftIzrrAME94r0bKTJQESRa2M=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/swift\nM:0:0:555\nR:swift.go\na:0:0:444\nZ:Q1q9drUiyUzLs7uPSN1GmtB3/MS0E=\nR:swift_test.go\na:0:0:444\nZ:Q1zAfZz1BfIDXOhaEYDTd0Bz60i04=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/testdriver\nM:0:0:555\nR:testdriver.go\na:0:0:444\nZ:Q1+IHIr0Yc8gW6JGBwx/Z2wpoD4N4=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/registry/storage/driver/testsuites\nM:0:0:555\nR:testsuites.go\na:0:0:444\nZ:Q1P0y5xMSCHgpbCa4nD2IF95razz8=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/releases\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Lg2UTCpqvlqvrmHy/5dRTSaO/z8=\nR:v2.5.0-changelog.txt\na:0:0:444\nZ:Q1SNW5aHIwOW9m1pa4xOeXzOFt/ME=\nR:v2.6.0-changelog.txt\na:0:0:444\nZ:Q1P+/HUPDYVVsOGeK7IgLKSFR4WJ0=\nR:v2.7.0.toml\na:0:0:444\nZ:Q1oSMiwD4lkTnYAmmrfZqsnq6qBIE=\nR:v2.7.1.toml\na:0:0:444\nZ:Q1KjsxhdOGtr4DVWF3tiwIpYmCFPQ=\nR:v2.8.0.toml\na:0:0:444\nZ:Q1ikOxnFhAG8CdbqPEt76WfIdQ7S4=\nR:v2.8.1.toml\na:0:0:444\nZ:Q1esuzEVoZHeE+4OftCI9wdt9K/D0=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/script\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/script/setup\nM:0:0:555\nR:install-dev-tools\na:0:0:444\nZ:Q19JbSAOES5lzG388uEK7qE6ZY5UA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/script/validate\nM:0:0:555\nR:dco\na:0:0:444\nZ:Q1s7PJj+U1kOuqZ1bCElX8HERHwEE=\nR:vendor\na:0:0:444\nZ:Q1I9RYx5nTn4J5c+37f2Ke5qDUaCA=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/testutil\nM:0:0:555\nR:handler.go\na:0:0:444\nZ:Q12dytW5PW++PsYsk5FkXy0J7Ugkk=\nR:manifests.go\na:0:0:444\nZ:Q1L4dpzTf6gryDd/HPZo9Nxr7PL1g=\nR:tarfile.go\na:0:0:444\nZ:Q1CGRVdQ66RWzwL32didBWB4vHoa0=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/uuid\nM:0:0:555\nR:uuid.go\na:0:0:444\nZ:Q1fz+dEA4zUMTYE57wCD/R6FmXgvk=\nR:uuid_test.go\na:0:0:444\nZ:Q1HxXa0UaR48cIXdLAqJi4j6mts6I=\nF:root/go/pkg/mod/github.com/docker/distribution@v2.8.1+incompatible/version\nM:0:0:555\nR:print.go\na:0:0:444\nZ:Q1B9R52DrNJQS62T0IBcTDCv9JMjY=\nR:version.go\na:0:0:444\nZ:Q1ohWjalMtepCTG1XDcEN62+2AABE=\nR:version.sh\na:0:0:444\nZ:Q1CAY55cMQuhYcKbbyYC2l/2PwQ/8=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0\nM:0:0:555\nR:.dockerignore\na:0:0:444\nZ:Q1Q7b5c9U9GfWMlEf1Cv4jYbm8XiI=\nR:.gitignore\na:0:0:444\nZ:Q1Q7b5c9U9GfWMlEf1Cv4jYbm8XiI=\nR:.golangci.yml\na:0:0:444\nZ:Q1rGYPxBPfVi5QMXWjxEnH098aU28=\nR:Dockerfile\na:0:0:444\nZ:Q1W/f5WZLwzY4xu8KFbzmXu2llzq8=\nR:LICENSE\na:0:0:444\nZ:Q18+q1TLFza0Ge91uMRL6isXYUvTE=\nR:MAINTAINERS\na:0:0:444\nZ:Q1N9w0r/z74mXPl3XQYcQl+b5sYPI=\nR:Makefile\na:0:0:444\nZ:Q1KsNlLw4/GBbTABSTpBQw16eFrYc=\nR:README.md\na:0:0:444\nZ:Q1BUTw3TyTHEMS4K0zPQ0Sk/xAx1s=\nR:docker-bake.hcl\na:0:0:444\nZ:Q1zJneCqGkAYi1Esq6azkVea0sPfE=\nR:go.mod\na:0:0:444\nZ:Q1zJH3QfSiljoukvohCyqzTI+7mJA=\nR:go.sum\na:0:0:444\nZ:Q1Iml7MKj4ZbnSbr4SNX64hLER0rU=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/.github/workflows\nM:0:0:555\nR:build.yml\na:0:0:444\nZ:Q1KMltFFor/qRnkw9/4Xrmueo+OPI=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/.github/workflows/fixtures\nM:0:0:555\nR:7D851EB72D73BDA0.key\na:0:0:444\nZ:Q17NZivxSLS2XQE7dwX76tR9zYqVc=\nR:7D851EB72D73BDA0.pass\na:0:0:444\nZ:Q1JBLOrqfit/itLarjQYZ0e0R1QUo=\nR:generate.sh\na:0:0:444\nZ:Q1zvCLZa6rl3onmaXXYA7oxS1xm8I=\nR:gpg-agent.conf\na:0:0:444\nZ:Q1H0Xs8kbq/Piups6RJo/qzmHJskk=\nR:gpg.conf\na:0:0:444\nZ:Q1USVGQR1NMoS4ta6PHM4/UnGNQH0=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q14XIjcUGol60th/oc/HiCBdQBfFg=\nR:client_test.go\na:0:0:444\nZ:Q1rpzA0R3d3AF+A5HwiwiEwdHRsuw=\nR:command.go\na:0:0:444\nZ:Q1t3JrLzRMlp8sbaptU2lU7G2AGss=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/credentials\nM:0:0:555\nR:credentials.go\na:0:0:444\nZ:Q1DjMDiPubL3gv45QT8gcSUkbzisk=\nR:credentials_test.go\na:0:0:444\nZ:Q13dBurQ57n2C9mJXNZVrmX5GYWAQ=\nR:error.go\na:0:0:444\nZ:Q1BPVSGPoU+44KuQEFJEGPwJZk0Z4=\nR:helper.go\na:0:0:444\nZ:Q1mAu16OEwoiWn48pqnypiXONNdB0=\nR:version.go\na:0:0:444\nZ:Q1tU1+MKng2T2rubV1K1qGKPUjvVY=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/deb\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q101Sq9aNF47i9iocS5QvdDF7IDxY=\nR:build-deb\na:0:0:444\nZ:Q1Twi7ShAOJfywkyUiDgBzhTSIiZo=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/deb/debian\nM:0:0:555\nR:compat\na:0:0:444\nZ:Q1tqvVZ/p5y+AZbQk6BnJxNh3Gyos=\nR:control\na:0:0:444\nZ:Q1kH0xuKQcfCAko7YYJ/F4wIXeR10=\nR:docker-credential-pass.install\na:0:0:444\nZ:Q17BMYksnyJKHVr87GJQIChohqOK0=\nR:docker-credential-secretservice.install\na:0:0:444\nZ:Q1wgbQ4fOY0uafOesEWjrPkp6GEJw=\nR:rules\na:0:0:444\nZ:Q14kdVouySwuOAmNo0oUfVytsLVLo=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/hack\nM:0:0:555\nR:git-meta\na:0:0:444\nZ:Q1HTg7vAxEEcuUfTsDdKSOakmL/9I=\nR:release\na:0:0:444\nZ:Q1P7Jim1LgmMxEv6Tqb7HAF7jFe7w=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/osxkeychain\nM:0:0:555\nR:osxkeychain_darwin.c\na:0:0:444\nZ:Q1mk0eLC+BT7U0QPnefhcg0aNqmXQ=\nR:osxkeychain_darwin.go\na:0:0:444\nZ:Q1zXrbcNK6dAoshiQPcPJjQN0IB90=\nR:osxkeychain_darwin.h\na:0:0:444\nZ:Q1OlP/skZkFeI379hCeCoMnfq6Jkc=\nR:osxkeychain_darwin_test.go\na:0:0:444\nZ:Q10qFrAjevXsRslp7Ew3y6K3pp/ck=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/osxkeychain/cmd\nM:0:0:555\nR:main_darwin.go\na:0:0:444\nZ:Q1YbTKKvhuHIkcTB6oZU4QPkv7mFo=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/pass\nM:0:0:555\nR:pass.go\na:0:0:444\nZ:Q1x8s5Wb5ubCdq/akiv9hoL8x/bko=\nR:pass_test.go\na:0:0:444\nZ:Q1DdBqhMtUlDXNUnGq8z0L5v4BRzE=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/pass/cmd\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1a0nIQ0UTXmEEK22PkjX60+AyY7M=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/registryurl\nM:0:0:555\nR:parse.go\na:0:0:444\nZ:Q1TYmihQokGsyzj0xn220qlC/zaDQ=\nR:parse_test.go\na:0:0:444\nZ:Q11FTXOUpCOUMloNjkM1L+/ZnyPEM=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/secretservice\nM:0:0:555\nR:secretservice_linux.c\na:0:0:444\nZ:Q1yfWUh3PHkTrZqZQtR8j2E+ot1yI=\nR:secretservice_linux.go\na:0:0:444\nZ:Q1pU7WSVxcawFLSuUko5V3HTdHAhM=\nR:secretservice_linux.h\na:0:0:444\nZ:Q1HBvi3wNseQ3hq8FTy4/2hbUlmdc=\nR:secretservice_linux_test.go\na:0:0:444\nZ:Q1JOLMJ5MYYL0Iu+P2VrMSg3Q6JEU=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/secretservice/cmd\nM:0:0:555\nR:main_linux.go\na:0:0:444\nZ:Q1NW7bMJ4CrnVyBuro2KvWhtxFwCY=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q1b8FiZRh7Gwe9z7HSnSYBgG3T0BQ=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/wincred\nM:0:0:555\nR:wincred_windows.go\na:0:0:444\nZ:Q1AnNip91NoI+sXeHJ/DF1Q40HHBo=\nR:wincred_windows_test.go\na:0:0:444\nZ:Q1WbUBuMpCycj4nOK8S1TAh0o/U+g=\nF:root/go/pkg/mod/github.com/docker/docker-credential-helpers@v0.7.0/wincred/cmd\nM:0:0:555\nR:main_windows.go\na:0:0:444\nZ:Q15npHDpuK2rto1oGOuzS5bmHRv64=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible\nM:0:0:555\nR:.DEREK.yml\na:0:0:444\nZ:Q1TXZTRVNnw5k2PWN1HzFV6DU+mEE=\nR:.dockerignore\na:0:0:444\nZ:Q1L4DQku1ZK8daowg0YfpRlgCk9oc=\nR:.gitignore\na:0:0:444\nZ:Q1j8Nc9dpsEZcyUp3Fya0gDCZjQhg=\nR:.mailmap\na:0:0:444\nZ:Q1QKcqRdGtq4i66/YdIK2DNnqYsdE=\nR:AUTHORS\na:0:0:444\nZ:Q12Snf+4Y4Vb0NxrkOZW7gyJwdhHU=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1Uciix+OnIjrwgSGqXYZ8hV0YXfo=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1aGCc2o2jxWOCHc4mR00OjJ/5n/k=\nR:Dockerfile\na:0:0:444\nZ:Q1kbQcDORiMIlVn+RM8KtwXs5F5zE=\nR:Dockerfile.e2e\na:0:0:444\nZ:Q1aDIU1OtzYOUJXJ8RdW8BhaEaOhU=\nR:Dockerfile.simple\na:0:0:444\nZ:Q1PRU7PFooGM1rt7w3wgDSwX7ylNc=\nR:Dockerfile.windows\na:0:0:444\nZ:Q1IWyPU4tfuZCKNlHnbhvj2oi7O+M=\nR:Jenkinsfile\na:0:0:444\nZ:Q1tLPv6MZSFKuzYHLuqmuf6nGeR4Y=\nR:LICENSE\na:0:0:444\nZ:Q1ILBqaM9lc41Dr6BKzOASbzQcd/g=\nR:MAINTAINERS\na:0:0:444\nZ:Q1khgG43YCpIgPfzMj123T9bXUWM8=\nR:Makefile\na:0:0:444\nZ:Q1qSS4OJgbhAUneZ9B2F9O4wY3HOo=\nR:NOTICE\na:0:0:444\nZ:Q1VHby+RZz7wQPGVaQfn9F5y1eEe4=\nR:README.md\na:0:0:444\nZ:Q1alYcSAcEtLQGhhqDg0idfBWFP+s=\nR:ROADMAP.md\na:0:0:444\nZ:Q1tEMXMHR0GtoPXwJsUcejMvtx6Ig=\nR:SECURITY.md\na:0:0:444\nZ:Q1qKgNx6ISFtwVVNM2362rwG+Rt4k=\nR:TESTING.md\na:0:0:444\nZ:Q1PGWUzLJZtNS6YSaaPhykTWtrcjQ=\nR:VENDORING.md\na:0:0:444\nZ:Q1zM5S1sK7CuSlQCwx9UtyhVbTRd0=\nR:codecov.yml\na:0:0:444\nZ:Q1XqaeTJDQcqas+4iOSRbN1p7Eano=\nR:poule.yml\na:0:0:444\nZ:Q1ljZFjQXzvai68dnRXr9lwr+SdEU=\nR:vendor.conf\na:0:0:444\nZ:Q1xiJK+zG3Bl/y4Qoyg3HOM8fOTaY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1mpegiM69KUU3vxkJ/wvR6jHGG9o=\nR:ISSUE_TEMPLATE.md\na:0:0:444\nZ:Q1szOK3cEv5n7I8zrcwAJ5apZP4vE=\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1LYsDDc8jjWaMd8oUjAg6lVfQ8kY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Fk7TBsvIDC/UB7jmxvl3Y/18IRo=\nR:common.go\na:0:0:444\nZ:Q16zhvU43r0YesxBmjxQH7YrdUSL0=\nR:common_unix.go\na:0:0:444\nZ:Q1j46A/5b8XNxrvdOvfk9nrDgck/U=\nR:common_windows.go\na:0:0:444\nZ:Q19qZw4iTJhnPqfZlxCpdWuqBgl9Q=\nR:swagger-gen.yaml\na:0:0:444\nZ:Q1GhhiBKfmBJLvYjRuGO0JD4NNrMw=\nR:swagger.yaml\na:0:0:444\nZ:Q1YPMHIQOFcbUPmgU+GfiV9KMsW3M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server\nM:0:0:555\nR:errorhandler.go\na:0:0:444\nZ:Q1P4RxODTdWBWCbTnvK2mT5jmFFvc=\nR:middleware.go\na:0:0:444\nZ:Q1A8TVk/PBYrOhLsOAGDZF8vn6AdY=\nR:server.go\na:0:0:444\nZ:Q19x5ecxruRQGxj3ZcEkhX4K0+fVg=\nR:server_test.go\na:0:0:444\nZ:Q1nUX7KQZHqSXeR2wif593KeIAocE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/backend\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/backend/build\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1iIz+fn8Lrq1I+MZ5PcmGfFGrXh0=\nR:tag.go\na:0:0:444\nZ:Q1N97NVwUOoBcqsiL6epegGrJS6TA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/httpstatus\nM:0:0:555\nR:status.go\na:0:0:444\nZ:Q16AENOZfva2WvapEegBJuQg0RSIU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/httputils\nM:0:0:555\nR:decoder.go\na:0:0:444\nZ:Q1zOgD+YWweIQjs3U8ui649sDa7Hk=\nR:form.go\na:0:0:444\nZ:Q1bHn9BB2U6QqXTmENlFMpLGtAMso=\nR:form_test.go\na:0:0:444\nZ:Q199Vz8m489mS3UAATeET6RyWiOac=\nR:httputils.go\na:0:0:444\nZ:Q1xN09rmXMWo2x+MKa3cmCsCsAISQ=\nR:httputils_test.go\na:0:0:444\nZ:Q1O0SyUZw2wpjuQh18Wj49U+tsP6E=\nR:httputils_write_json.go\na:0:0:444\nZ:Q1ZkgbUbNS2rxX7ybJn2z45ewyTt0=\nR:write_log_stream.go\na:0:0:444\nZ:Q1MhmjWj94ATgPBD7y1xBLloALorg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/middleware\nM:0:0:555\nR:cors.go\na:0:0:444\nZ:Q1Y3jwXBUL3972W2NxzNL+Hi04KIQ=\nR:debug.go\na:0:0:444\nZ:Q1YgMhBCBq1VAIJ1sVdBaiKn4/dDw=\nR:debug_test.go\na:0:0:444\nZ:Q1YbbE7XCBholYE2RhiXYvKzPZci0=\nR:experimental.go\na:0:0:444\nZ:Q1jRi48cfh2ogsLU/L+CyUTokfTls=\nR:middleware.go\na:0:0:444\nZ:Q1bfR4bBCq3NPdjFofepqVNBB6eiA=\nR:version.go\na:0:0:444\nZ:Q1Whk96Xi/gXl42TBNgGR7AUv4fBE=\nR:version_test.go\na:0:0:444\nZ:Q1iqj8FgQN+WZXqsrW+Ad74M3rLnY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router\nM:0:0:555\nR:experimental.go\na:0:0:444\nZ:Q1EQyJWyCVRsnOvwI1lBjQL5yiRW4=\nR:local.go\na:0:0:444\nZ:Q1WGji2nmreB2E3Np/T+wO7kgBS7E=\nR:router.go\na:0:0:444\nZ:Q1tuATlFX1NrGpW5AzaSi8EslcECg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/build\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1f7y/r0a8fuoYiUb7/2e64Fmng3I=\nR:build.go\na:0:0:444\nZ:Q1s3DN9N/bzWfhekBydNZtpmDipEI=\nR:build_routes.go\na:0:0:444\nZ:Q1H2XHOHdk8AZn9RYr+caANeQfQE8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/checkpoint\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1KN/khgDvfa/X1TzezvgCTkI4hkE=\nR:checkpoint.go\na:0:0:444\nZ:Q1oJWKv/zrTREbmDGqzr60ZE2kOU0=\nR:checkpoint_routes.go\na:0:0:444\nZ:Q1MlJ9Rw5DWaGoTH79XigqIJI5v0s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/container\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1MN7p3OkQt2MWlqqR3+0cSsXMKow=\nR:container.go\na:0:0:444\nZ:Q1P2tA77XbfDBsMWsxoXC4/DuEW1Q=\nR:container_routes.go\na:0:0:444\nZ:Q1nhI1xQeHKdbRwJ6Nuxg1Tz3gxcE=\nR:copy.go\na:0:0:444\nZ:Q1oZG+qxmaC/Hm919tycIX8491/2Q=\nR:exec.go\na:0:0:444\nZ:Q1J3Vo6scsWDt8HibXHahnTYL5hG8=\nR:inspect.go\na:0:0:444\nZ:Q11AWK1Up9ep8BDeiT/Rw4uFSk3/s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/debug\nM:0:0:555\nR:debug.go\na:0:0:444\nZ:Q1zOwPLu4Rw2rWY2EUosnH3zG5epo=\nR:debug_routes.go\na:0:0:444\nZ:Q1OoRTz7SzG8LxOh5K263RPit/z0Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/distribution\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1GspBfz30DkJD3peQ9eh2xXC0kE4=\nR:distribution.go\na:0:0:444\nZ:Q1MJ48vdcsMc8sV6Iomb0uUQRpyCI=\nR:distribution_routes.go\na:0:0:444\nZ:Q1dzAMA7hnz8vw6K0YNsG5ZREhhIU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/grpc\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q17n5IA9Cg4SlB7jLHFtiFhrXZJ/Y=\nR:grpc.go\na:0:0:444\nZ:Q1h4axhiKDxBKcLW5Nsf+l7PMpcJk=\nR:grpc_routes.go\na:0:0:444\nZ:Q10gr781tVqRYCyFkA1h1upUetxzE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/image\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1uq6IkdZ53TBiQfNTWM+HpEHBTJc=\nR:image.go\na:0:0:444\nZ:Q1MzVBRWqfpWK7xT93vOWD19Iulak=\nR:image_routes.go\na:0:0:444\nZ:Q1DKeiq/7tAEma2yHhQDQSMaLye1o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/network\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q13KCahwz5X4wJA7iSfsoqNBlmF5o=\nR:filter.go\na:0:0:444\nZ:Q13d4bYnC9ejQgNM6YewC6eAX0KCA=\nR:network.go\na:0:0:444\nZ:Q1Sii+di+EM0taziLUXOBPAJBHrVU=\nR:network_routes.go\na:0:0:444\nZ:Q1dP6Sh2MgduOv5MR6Q2ASqtRA6A0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/plugin\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q13uviVekZepyjj7CNOJbiQIYQUs4=\nR:plugin.go\na:0:0:444\nZ:Q1izVPmenBK6iQB8I+u2oTH6n/J+c=\nR:plugin_routes.go\na:0:0:444\nZ:Q1+D3PWj3T/QeEkaPJknxQ+EFdw6M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/session\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1mF96/WNx55NxnQNO4UbFRT/sLKA=\nR:session.go\na:0:0:444\nZ:Q16eptIgWX9mEgRRs4Adiar9bDSmo=\nR:session_routes.go\na:0:0:444\nZ:Q1p56fNj0r6bl8M3w4Rr7gontxpZ0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/swarm\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1ii6DvIQO75vhxEf3ygiM7bb4Uec=\nR:cluster.go\na:0:0:444\nZ:Q16atOKUnOXi2+1qSEnQ0iyRHgHrs=\nR:cluster_routes.go\na:0:0:444\nZ:Q1Qug8F9M9DgjQWjI/HRjaODoqwpA=\nR:helpers.go\na:0:0:444\nZ:Q1eK0PaaqWk6RABwMNf12BIsyiAxc=\nR:helpers_test.go\na:0:0:444\nZ:Q1Fv8cLd/R7/AZVKSYmSNZmJCJF1g=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/system\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1HOXR9PV+wEH55itpFHmmkxlEXF0=\nR:system.go\na:0:0:444\nZ:Q19GHSY/F1co19JOMAcg+7uxFv30U=\nR:system_routes.go\na:0:0:444\nZ:Q17kOIEsYrqiC2gjZirDHGN/vFoHo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/server/router/volume\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1WGhITRoq6JOQq2xtUkT77feDZJQ=\nR:volume.go\na:0:0:444\nZ:Q1zntx7xkn3N05aeWkkbjgysQJ450=\nR:volume_routes.go\na:0:0:444\nZ:Q1nT9+eqdQKk9vrH2Kho952B8+6m8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/templates\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/templates/server\nM:0:0:555\nR:operation.gotmpl\na:0:0:444\nZ:Q1Npbe836Q3OPUWjTYU2bX768ZxbA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q10ua7iAl4YJyuSftDEilWf9y2/q8=\nR:client.go\na:0:0:444\nZ:Q1xXWbojeL/URsZxa3kMRYlr+Z2hc=\nR:configs.go\na:0:0:444\nZ:Q1OgAgD3jopAMAwyoKfbVIMeh991w=\nR:error_response.go\na:0:0:444\nZ:Q1j/bhCr45m9Qq5r3exkQIeprEETE=\nR:error_response_ext.go\na:0:0:444\nZ:Q16XB+SniAf+fGBJzrbtun0K5IjAs=\nR:graph_driver_data.go\na:0:0:444\nZ:Q1CpEdMKb67J/xyubozb/oZkD+VuU=\nR:id_response.go\na:0:0:444\nZ:Q1xtffYqRavNuV7+qyTq7xyppgzNY=\nR:image_delete_response_item.go\na:0:0:444\nZ:Q1eSl9LlbkNWyDhTxx4KlRu8RglME=\nR:image_summary.go\na:0:0:444\nZ:Q1xvtsWTt+8iJuYPJv4RGoXFK+Z8w=\nR:plugin.go\na:0:0:444\nZ:Q1xvsaK/BUI5Em/2VbP9IvsZXRxHU=\nR:plugin_device.go\na:0:0:444\nZ:Q1w/MAFgnVxrLJOdmvILlVsYcT8D8=\nR:plugin_env.go\na:0:0:444\nZ:Q1Sw1WszKj8++Eq7nkFv0qOpoVWzg=\nR:plugin_interface_type.go\na:0:0:444\nZ:Q1811yoEkDZtSlvrVx0V76o15eqqY=\nR:plugin_mount.go\na:0:0:444\nZ:Q1+1tHv9vngQXY3VMwqwvU7eS16VM=\nR:plugin_responses.go\na:0:0:444\nZ:Q1Cx+Wd7rjiY6jbVll3u4/w4sAb1E=\nR:port.go\na:0:0:444\nZ:Q1gB67KB5b1I7Ph7FT+/7aJqyFIUc=\nR:service_update_response.go\na:0:0:444\nZ:Q1gAM7Nk4NyLCIyUgDrZONAeiq9ac=\nR:stats.go\na:0:0:444\nZ:Q15dZQYUAhEd/ul3zBHilS0YYjrto=\nR:types.go\na:0:0:444\nZ:Q1Oh9Oe3p15tiVZhEw4Zkhg1hdOCo=\nR:volume.go\na:0:0:444\nZ:Q1YvrFEKsYRfSDZLiXeVq9+f/sylA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/backend\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q112eZuMPkJWnYwoZBWt03saDF6Ik=\nR:build.go\na:0:0:444\nZ:Q1mCor2DbFHX+1k83DC9FFv5zTQ4g=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/blkiodev\nM:0:0:555\nR:blkio.go\na:0:0:444\nZ:Q1lTM6coRpzkKgs8w+MOIkZKq2bes=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/container\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1NAAY667i7JBuODxfZFrhP1diAjY=\nR:container_changes.go\na:0:0:444\nZ:Q1Gc7zECVZWoNDrSVWQLnOiqsFSWI=\nR:container_create.go\na:0:0:444\nZ:Q1uU3nxcYTUnEcONmo4P/pik7+a0w=\nR:container_top.go\na:0:0:444\nZ:Q1eN1Aw/lJGMLNFWlnnuJOUvAdOFE=\nR:container_update.go\na:0:0:444\nZ:Q19Kx85uIvElgZNKz/CZoOpw/WRUg=\nR:container_wait.go\na:0:0:444\nZ:Q1L1yhFiuoNjY/JxA6Ur68feloCfg=\nR:host_config.go\na:0:0:444\nZ:Q1xubaQbQHv20Py8344VmaCK/BfZQ=\nR:hostconfig_unix.go\na:0:0:444\nZ:Q1UzJZHq39D87EOC307BOfiOo4qEE=\nR:hostconfig_windows.go\na:0:0:444\nZ:Q19ug0Y5FcuJd0nPqIAXsnXi8rxBI=\nR:waitcondition.go\na:0:0:444\nZ:Q1V6BjB2W9gDkS7/YEBEN7DsnxsZg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/events\nM:0:0:555\nR:events.go\na:0:0:444\nZ:Q1mnjDtiE9ecty32FO+pM/nM4TEmE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/filters\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1u8ZebOiaXmKV50egJAn73ItarVQ=\nR:parse.go\na:0:0:444\nZ:Q1FzRNHVdambyZ0tgpLzA2ZMKmR58=\nR:parse_test.go\na:0:0:444\nZ:Q1nJ9aNp0j3IG/I8JbaxRxkSTshz0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/image\nM:0:0:555\nR:image_history.go\na:0:0:444\nZ:Q1s58o+DrnlfRSS5cHsRAzqDxeRgU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/mount\nM:0:0:555\nR:mount.go\na:0:0:444\nZ:Q1rz2Dn8dVnDOf9PiwGF09nzZMr9s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/network\nM:0:0:555\nR:network.go\na:0:0:444\nZ:Q1z2JAU4FqC3T9ogzaDVZKu0z7PvM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/plugins\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/plugins/logdriver\nM:0:0:555\nR:entry.pb.go\na:0:0:444\nZ:Q1K+FiwwzERh/2QwHrlrMNqsLrnbA=\nR:entry.proto\na:0:0:444\nZ:Q1ftm44uhJuPxWCg2JM9wYtFOe77c=\nR:gen.go\na:0:0:444\nZ:Q1cGwur4x4pMiO2owUO35aCPuw7D4=\nR:io.go\na:0:0:444\nZ:Q1bhhl6UXIpa6iLwYL7BuhF+k5/y4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/registry\nM:0:0:555\nR:authenticate.go\na:0:0:444\nZ:Q1HOjRTspaIHSpp4o+sedL/eAprTE=\nR:registry.go\na:0:0:444\nZ:Q1w5VlQRr+BVTEeOk6sROH608Qvo8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/strslice\nM:0:0:555\nR:strslice.go\na:0:0:444\nZ:Q131HLWvKzOjj364/nIElG8Y3z7H4=\nR:strslice_test.go\na:0:0:444\nZ:Q1H1wqqWSeieZqO6evH7w3BxOa4n8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/swarm\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1YY7heNd3l/DoKPj7AntGEjOYyBo=\nR:config.go\na:0:0:444\nZ:Q126t8GES0FfxBLMhf0voOM2J/nC0=\nR:container.go\na:0:0:444\nZ:Q18qXBj74XH6sJt6JI5Pa4EcTWJNk=\nR:network.go\na:0:0:444\nZ:Q1R/NPmLjl3evzAMJo12pEehErvUs=\nR:node.go\na:0:0:444\nZ:Q1xJknJG6zPMrid0IWrb1LPi0WWTs=\nR:runtime.go\na:0:0:444\nZ:Q1eLlzb1+9CsBf6Apzp4Uci4attko=\nR:secret.go\na:0:0:444\nZ:Q1D00n12uK+LYkQ5qk4qokd67UN6k=\nR:service.go\na:0:0:444\nZ:Q1d4D23AfX9qOW6vMzM5X1JbWHFC4=\nR:swarm.go\na:0:0:444\nZ:Q1SMrZ2vPWzmJwQQKr3+ZIakkPhv0=\nR:task.go\na:0:0:444\nZ:Q11pjIuedatlf9CDjgjXfp87etiWc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/swarm/runtime\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q1F16Nj8/e1Or7kfUhdR/Bj480VxQ=\nR:plugin.pb.go\na:0:0:444\nZ:Q1NYqAeaSSqtWaj9DiXXs/ClDIfwI=\nR:plugin.proto\na:0:0:444\nZ:Q11NofRlCiPqepCuk0f8Y851fG/8c=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/time\nM:0:0:555\nR:duration_convert.go\na:0:0:444\nZ:Q1UcvGx3CUoTr6XM3OAhSx3lZLYr8=\nR:duration_convert_test.go\na:0:0:444\nZ:Q1HNZsUs7AR7JQfoZty1q2IbbL3lA=\nR:timestamp.go\na:0:0:444\nZ:Q1BfffhCvrYJd7uHMJCck78l7Pf8M=\nR:timestamp_test.go\na:0:0:444\nZ:Q135g1wdEG98xjLw8Z8BAkFoam1KY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/versions\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1/ILfdtT+9xSI9y0Oqu+JBVumyx8=\nR:compare.go\na:0:0:444\nZ:Q1HAs05QMUUeWDoXZIheTPIrmcAj8=\nR:compare_test.go\na:0:0:444\nZ:Q1J6bz0lhHh2UlCZIyzHXxuKpRDzE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/versions/v1p19\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q1sBGm5ZbfS2W2HHmyqdoIGofPzzc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/versions/v1p20\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q13ppA2pMauyrSOoO4/wcc+sijPhw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/api/types/volume\nM:0:0:555\nR:volume_create.go\na:0:0:444\nZ:Q1j7k19bhzyIyjqfFdD469UZvQ70M=\nR:volume_list.go\na:0:0:444\nZ:Q1InjAbiUHMcsNRYHyHh85L47k4lI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1CZhjYLyyRw0di9tjNluOkewuGcg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q18guBxihPjqum/j/xaUzOp7A5mPA=\nR:controller.go\na:0:0:444\nZ:Q1RlE5GLt0C5Xsz+2kq0yzTrMLXIw=\nR:executor_unix.go\na:0:0:444\nZ:Q1sPxYwoDHETk6DOzsQ2EDHTW6ec4=\nR:executor_windows.go\na:0:0:444\nZ:Q1/7px1QWmx52wpn3bgblaEyLf9D0=\nR:reqbodyhandler.go\na:0:0:444\nZ:Q1h+/EVoU4Zkwc1cRlH9q8OM3v1Sk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/adapters\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/adapters/containerimage\nM:0:0:555\nR:pull.go\na:0:0:444\nZ:Q13N7851IyaVA5YedMpp2gcHkPFGk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/adapters/localinlinecache\nM:0:0:555\nR:inlinecache.go\na:0:0:444\nZ:Q1qD+PuOMwyf3rM7bfra7uAXWxWfs=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/adapters/snapshot\nM:0:0:555\nR:layer.go\na:0:0:444\nZ:Q1TegDrBYMPulb8tLHBh+tbS1+cyU=\nR:leasemanager.go\na:0:0:444\nZ:Q1cW0bgqY6JTtprfF6Yx3IPkdz8Uk=\nR:snapshot.go\na:0:0:444\nZ:Q1hsFkxqnUBo24jTbTve1luhvCkxw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/exporter\nM:0:0:555\nR:export.go\na:0:0:444\nZ:Q1CPNHUxn6chpmc/+HVjZkheT/mtU=\nR:writer.go\na:0:0:444\nZ:Q1MWEswnVF4kc2Ri89vkO0IDL2jSM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/imagerefchecker\nM:0:0:555\nR:checker.go\na:0:0:444\nZ:Q1q8My5/UYMBxJzClpuKibjUFrTOE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/builder-next/worker\nM:0:0:555\nR:gc.go\na:0:0:444\nZ:Q1mrKhFJ2X5YCrQsgwangdx1RbIOo=\nR:gc_unix.go\na:0:0:444\nZ:Q1VPB9oo6SbZT0oxJPmpt8e4/aaw8=\nR:gc_windows.go\na:0:0:444\nZ:Q10w5wtUWXrhjwUd6+dWwtqC9NfEI=\nR:worker.go\na:0:0:444\nZ:Q1yvs8wxUpLV6CQtE0ZaL3qsWzlJk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/dockerfile\nM:0:0:555\nR:buildargs.go\na:0:0:444\nZ:Q1JOIQ96bL4WrT8BK9JIGqTo3HyDI=\nR:buildargs_test.go\na:0:0:444\nZ:Q1uI3sRj7gxf82q9itNDYSpV+BMSA=\nR:builder.go\na:0:0:444\nZ:Q1KB/6O95XUb0RpKMHI2rSBMQ1xHg=\nR:builder_unix.go\na:0:0:444\nZ:Q13aeZPzvx8M7VI6gBSXU6eMd7Ct8=\nR:builder_windows.go\na:0:0:444\nZ:Q1IfOOF85uQirDB09X9q0Lfkdcigw=\nR:containerbackend.go\na:0:0:444\nZ:Q1tHM37D3cDIovKYcwd4PtoJsCXHA=\nR:copy.go\na:0:0:444\nZ:Q11i4ouXVcezt7HmuLHBxlbxbQKxY=\nR:copy_test.go\na:0:0:444\nZ:Q1LxqcDpwtm6BTvE5IP3+8DcSpDQc=\nR:copy_unix.go\na:0:0:444\nZ:Q1//YCuIwPPNOVXgGUQcBHczB+NcM=\nR:copy_windows.go\na:0:0:444\nZ:Q1ZoKcPLszTQgabIdbjf8Ex0rAQSM=\nR:dispatchers.go\na:0:0:444\nZ:Q1Njw/yW7r9LAxP/5h/q3xVM5Gd68=\nR:dispatchers_test.go\na:0:0:444\nZ:Q1M3fjQVFSEvn+PbV6jFWFWIMzw2Y=\nR:dispatchers_unix.go\na:0:0:444\nZ:Q18FpKdjJFF6fw/LsXT9kF9jvNz6E=\nR:dispatchers_unix_test.go\na:0:0:444\nZ:Q11CJOfgd/rfkw+NPwf26L0FdFEuE=\nR:dispatchers_windows.go\na:0:0:444\nZ:Q1e39/A5fxhuf6pBAfX0LN0QJOgcc=\nR:dispatchers_windows_test.go\na:0:0:444\nZ:Q19fXRNXUW2lAYuNcGqStr6W+p9XY=\nR:evaluator.go\na:0:0:444\nZ:Q1xGqQmRUN5cOOtFf8QuKVgc784uo=\nR:evaluator_test.go\na:0:0:444\nZ:Q1EV5XrrE7F2IM7a3Z9GGF03Tx42c=\nR:imagecontext.go\na:0:0:444\nZ:Q1m8cmfj2/5PTMBDphAnlXM3n2+HM=\nR:imagecontext_test.go\na:0:0:444\nZ:Q1zEp9XtLKXBPCHmCZUD4XJFhx1FQ=\nR:imageprobe.go\na:0:0:444\nZ:Q1PPGZLhZHxB0LlJqTquGj+a4B58g=\nR:internals.go\na:0:0:444\nZ:Q1lJdB+FMUj5Fj/AZpm5gKsHP9zHk=\nR:internals_linux.go\na:0:0:444\nZ:Q1trOdTOXanaoIYz9jevObSQkgQ7s=\nR:internals_linux_test.go\na:0:0:444\nZ:Q1SLoutVoFcIozEdEfN/AJQ30ZTcY=\nR:internals_test.go\na:0:0:444\nZ:Q1zwloL3/aj+6I83h0Vy58RqGTzYU=\nR:internals_windows.go\na:0:0:444\nZ:Q1AvH3bc0jQQQYfrhQpEpXFx5FWV4=\nR:internals_windows_test.go\na:0:0:444\nZ:Q13pMdymYNLQXQX25bW0/g5owHWws=\nR:metrics.go\na:0:0:444\nZ:Q15d7ozvi3aH6BwlWInnBWMQ8DbA8=\nR:mockbackend_test.go\na:0:0:444\nZ:Q1ub8DQsalHwck6+we7vn7UOSSXSA=\nR:utils_test.go\na:0:0:444\nZ:Q151//lx097Rk/Y54ihnTZxSeWuE4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/dockerignore\nM:0:0:555\nR:deprecated.go\na:0:0:444\nZ:Q1SzL+ipeHBseIAuCahRFWrfZvhNU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/remotecontext\nM:0:0:555\nR:archive.go\na:0:0:444\nZ:Q18QShoewGBUuc/NQJ4MXYYhhKcik=\nR:detect.go\na:0:0:444\nZ:Q1c6nHjnnf7tmHnYROokkA3N0NM4Y=\nR:detect_test.go\na:0:0:444\nZ:Q1lu1C2iMXxPUbWcPOUaTXQOEbiI0=\nR:filehash.go\na:0:0:444\nZ:Q1bzJCIB1Wb4+80rXq7bilvM+IQNw=\nR:generate.go\na:0:0:444\nZ:Q1XaX3nAoPHKRd8Z1MIKzG2hotXKY=\nR:git.go\na:0:0:444\nZ:Q1zDBwaoDgz7lCbsSHvpHT3OGr9uc=\nR:lazycontext.go\na:0:0:444\nZ:Q1mYmWpsJSW0z37fkACKGKZzEE4E4=\nR:mimetype.go\na:0:0:444\nZ:Q1gv98ZvGuidv6eBNTApRffh2JsGo=\nR:mimetype_test.go\na:0:0:444\nZ:Q13oNJ0uuURs3nud1WGmGXIlAU0H0=\nR:remote.go\na:0:0:444\nZ:Q1f0kjXwV4yHBklrGTQ78uOcOGYr8=\nR:remote_test.go\na:0:0:444\nZ:Q1OO5rN/1Sqfb0XtRlDMm2aNBB80Y=\nR:tarsum.go\na:0:0:444\nZ:Q1hEMjgFiNzmL9JBbLAOZLKloncU8=\nR:tarsum.pb.go\na:0:0:444\nZ:Q1M74sbh2PBXc9VopuGgKjMvWfe4w=\nR:tarsum.proto\na:0:0:444\nZ:Q1wG8CbOyZZWqE2qG3b16nTLvZxSs=\nR:tarsum_test.go\na:0:0:444\nZ:Q1sZFCCSwOYoQrzdL8FXcwW2RDPHQ=\nR:utils_test.go\na:0:0:444\nZ:Q1+mehV8hWmDf/G1Ucl5i9pReOXGo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/builder/remotecontext/git\nM:0:0:555\nR:gitutils.go\na:0:0:444\nZ:Q1UUzhzyU2tlB004Dzw4RODEs2eo0=\nR:gitutils_test.go\na:0:0:444\nZ:Q1eBzTjHv6DJvLl2Ao6O4K8c6o0Bw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/cli\nM:0:0:555\nR:cobra.go\na:0:0:444\nZ:Q1uB8ckcDaeiSAEXxrK6HgoQPN10w=\nR:error.go\na:0:0:444\nZ:Q138G5cX5CPPMRGdq0In7gqa96rdM=\nR:required.go\na:0:0:444\nZ:Q1kc9VcLpMACvXmjC8IUQL69sE/SY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/cli/config\nM:0:0:555\nR:configdir.go\na:0:0:444\nZ:Q1pHzztj5nml5uoeumTojF0ylFmT4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/cli/debug\nM:0:0:555\nR:debug.go\na:0:0:444\nZ:Q1OjM7QqzuAHdQDvJnYK0+Q1HtcTk=\nR:debug_test.go\na:0:0:444\nZ:Q1ATNfYamRGv8bXkWlE+kgWDYjKGw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/client\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1qIiketJQ9CTvMoiZPVqA+cAldX8=\nR:build_cancel.go\na:0:0:444\nZ:Q1xute2C8L5tTqVl0DCm+iljPAfZ0=\nR:build_prune.go\na:0:0:444\nZ:Q1mKGlhVEOZPv297zzzInKcYx1K7Q=\nR:checkpoint_create.go\na:0:0:444\nZ:Q1Nsj8Bn6go4L1Myik/u0J1jLGQt4=\nR:checkpoint_create_test.go\na:0:0:444\nZ:Q1vC0k278O0O68pKztzj8L1/yV9O0=\nR:checkpoint_delete.go\na:0:0:444\nZ:Q1jbbVml3KnD/e2jv3MTpzp2m5H8U=\nR:checkpoint_delete_test.go\na:0:0:444\nZ:Q1KXyEwJi/Jb9DIwAnWvOYo1VOTgg=\nR:checkpoint_list.go\na:0:0:444\nZ:Q1H9ehyaOhkyXzVZhr/ABWjVz//hM=\nR:checkpoint_list_test.go\na:0:0:444\nZ:Q1clgG2RRzIdXbKOtotJ6U7gYpiRU=\nR:client.go\na:0:0:444\nZ:Q1SLf95lnY61XLCqqVQxkNx1sChLk=\nR:client_deprecated.go\na:0:0:444\nZ:Q12jiEjqZ0meCeb+dlMJbQQ9Di3y0=\nR:client_mock_test.go\na:0:0:444\nZ:Q1n05UiSsyInvk6u2LfF2UFkAuA/w=\nR:client_test.go\na:0:0:444\nZ:Q1CzvrhcjmYVl5d3C5JNj0LKVEJxI=\nR:client_unix.go\na:0:0:444\nZ:Q1KyIANi9IzrfEDX6OiijKNekhiKA=\nR:client_windows.go\na:0:0:444\nZ:Q1WI7w4xwzT/9RroCQuBb5mfcpt0g=\nR:config_create.go\na:0:0:444\nZ:Q1fa3d2yn7Glbum2R4RUln1fOkD0g=\nR:config_create_test.go\na:0:0:444\nZ:Q1LjY+hrLzEuUC/zmmF5IKZ9RWTlY=\nR:config_inspect.go\na:0:0:444\nZ:Q1LNfg0R0cvzO5bU6WQi8qHaZXues=\nR:config_inspect_test.go\na:0:0:444\nZ:Q17ZZiZjbsuPDDTDZ5A9lzNesbk3E=\nR:config_list.go\na:0:0:444\nZ:Q1vjoHENz2Ie/RmPVubvD7o2/claQ=\nR:config_list_test.go\na:0:0:444\nZ:Q1DnsHOZI89f4CX1HfMMy0U9GJjsA=\nR:config_remove.go\na:0:0:444\nZ:Q1pFDqlwOYDBD3Xa5cuJkqSAp+nEM=\nR:config_remove_test.go\na:0:0:444\nZ:Q1HKZ6EZ9OSikO9nIdE/1gHSB1ZSE=\nR:config_update.go\na:0:0:444\nZ:Q1AKGaH39Gc+RcJ4IGL5wH7OifiOY=\nR:config_update_test.go\na:0:0:444\nZ:Q1K0S8c32Iz1zkRO0K18FGE5tHTpE=\nR:container_attach.go\na:0:0:444\nZ:Q1uTthO0eDlZq0nZuSp8i9XQZAfYI=\nR:container_commit.go\na:0:0:444\nZ:Q14uEP10da36d1QqdjnJfDLY4feFo=\nR:container_commit_test.go\na:0:0:444\nZ:Q1Y1JG6oRY6AE8QhqFulgPH6X8yw0=\nR:container_copy.go\na:0:0:444\nZ:Q1H1r0Nt3mtYtAABkUktTGL969Ou0=\nR:container_copy_test.go\na:0:0:444\nZ:Q1fWQqYgsB0hkn098pkvxsgPvn4c4=\nR:container_create.go\na:0:0:444\nZ:Q18BmUPsHpkzyPylSbYOcSpNL2SWE=\nR:container_create_test.go\na:0:0:444\nZ:Q1SUobGOHbzl01ZgWiq6L+m5Cw0f4=\nR:container_diff.go\na:0:0:444\nZ:Q1x+onuW+sWjk+wgnr2ZkpAptWhkw=\nR:container_diff_test.go\na:0:0:444\nZ:Q1ERpAByqyzIhvnFA1LuNkERV0xTo=\nR:container_exec.go\na:0:0:444\nZ:Q14J000WkHj40RhNlv1lYWOHu/zTI=\nR:container_exec_test.go\na:0:0:444\nZ:Q1LahKIkAgKRNYngGdjzZYgPYfftw=\nR:container_export.go\na:0:0:444\nZ:Q1/It3wedtQV59hSaygjOXhwZRVwA=\nR:container_export_test.go\na:0:0:444\nZ:Q1+Yi21kM3FN34do96XSQeagvC03c=\nR:container_inspect.go\na:0:0:444\nZ:Q1AoHJSE+N1rpxqSiuZSCcGsehLcc=\nR:container_inspect_test.go\na:0:0:444\nZ:Q11Dl5oHNcgF48AHUUgr8etDIZgaA=\nR:container_kill.go\na:0:0:444\nZ:Q1nH81XjfhDLVXTP8O9COfUafl628=\nR:container_kill_test.go\na:0:0:444\nZ:Q1/tzpPeR6q9rO/0yE7IPptdaQpzo=\nR:container_list.go\na:0:0:444\nZ:Q142fsTC9J+MlBhoaoD3ybcZEk2KA=\nR:container_list_test.go\na:0:0:444\nZ:Q1GFwSjH7vET17medA9lpTLBNm3KM=\nR:container_logs.go\na:0:0:444\nZ:Q1LufGxQZPAci4N0kO3ifQ/iR1Euo=\nR:container_logs_test.go\na:0:0:444\nZ:Q1B5crSFtplzhCWzfs3ytKjKFuZ8Y=\nR:container_pause.go\na:0:0:444\nZ:Q1G6Ri59DK4VcY4MJKFi4XPayBTy8=\nR:container_pause_test.go\na:0:0:444\nZ:Q13Yvo3IkBfbTFBY2Gm9Ge5bx7mc0=\nR:container_prune.go\na:0:0:444\nZ:Q1mZiP2/nv9iK56S88QvkHXWJpgjU=\nR:container_prune_test.go\na:0:0:444\nZ:Q1ruMCjUKmGG7I8jSclccYmiXTs9c=\nR:container_remove.go\na:0:0:444\nZ:Q1c40Spnd5bCH+JDoTwZQ543rahPc=\nR:container_remove_test.go\na:0:0:444\nZ:Q1qjKlMFthFZ6/WzyrjZawMw1+y+Q=\nR:container_rename.go\na:0:0:444\nZ:Q1s1kP9ILzqu5tO9mg8/5OQMbUzmU=\nR:container_rename_test.go\na:0:0:444\nZ:Q1Iq+4v0sYWLJUAcg47awpVFvl+cE=\nR:container_resize.go\na:0:0:444\nZ:Q16l7ulnh1cZyLs1WHWhO2S2xVc2M=\nR:container_resize_test.go\na:0:0:444\nZ:Q1Y48Ls1y6yZpF7BxX3jVFYD8xS5I=\nR:container_restart.go\na:0:0:444\nZ:Q1vZpcge+8CClHJKagkOSUsYKs84I=\nR:container_restart_test.go\na:0:0:444\nZ:Q1GrF1mK0Zek96aMo4+JjVoHACDE8=\nR:container_start.go\na:0:0:444\nZ:Q1pXy5onAfC9ZmoCsGmuAagCDjSLc=\nR:container_start_test.go\na:0:0:444\nZ:Q1LSj/HUEGYiMEtWKydGfRhhzB+fQ=\nR:container_stats.go\na:0:0:444\nZ:Q1xOUSeN1bmG4vYr0yMMPrCpvJJSA=\nR:container_stats_test.go\na:0:0:444\nZ:Q1j4wA6Jnqz5kvmEVtZ29kjML8IuM=\nR:container_stop.go\na:0:0:444\nZ:Q1O69dIRUU6zAJKVOoTKmzjdDw3Og=\nR:container_stop_test.go\na:0:0:444\nZ:Q10CJ+AVewhKc9X0C3B6SpgswO0Q8=\nR:container_top.go\na:0:0:444\nZ:Q1PQ4Qh8/tv6u51zq1sl5c843pvVg=\nR:container_top_test.go\na:0:0:444\nZ:Q1J98r4OLQggcz91YD/fz9IO5lcW0=\nR:container_unpause.go\na:0:0:444\nZ:Q1Vs1EjrqYL/bmA2U37L+oCKHk/lw=\nR:container_unpause_test.go\na:0:0:444\nZ:Q1vA2PL4FG6D3NpkhhP3qa0vVvEvc=\nR:container_update.go\na:0:0:444\nZ:Q1y5k/FzR3wrYrlLtjkys9jdDFy+4=\nR:container_update_test.go\na:0:0:444\nZ:Q1AXabPd/WpA34nEFKRLjV2aRaiAg=\nR:container_wait.go\na:0:0:444\nZ:Q19vgBIodQAanHoQalSlNi3k75PaY=\nR:container_wait_test.go\na:0:0:444\nZ:Q1T4WXP7l53jdAdQKHuXtdPLvbdtY=\nR:disk_usage.go\na:0:0:444\nZ:Q18Qm+wn4piA/8CCrBeQLY27zvFW8=\nR:disk_usage_test.go\na:0:0:444\nZ:Q17jwpLlQMB11z6m4TqoM6FF+u1Qg=\nR:distribution_inspect.go\na:0:0:444\nZ:Q162npqCVDMmxeqLMjzMNuMJQmVPM=\nR:distribution_inspect_test.go\na:0:0:444\nZ:Q1PwuQkp+0BYDuAvuFdaQzzxCbbGE=\nR:errors.go\na:0:0:444\nZ:Q1W+jYzUraluXB/kuQ48oAy5+97g4=\nR:events.go\na:0:0:444\nZ:Q1O2eAJGNcNJ9k1YWSoPy7Wj7XG1U=\nR:events_test.go\na:0:0:444\nZ:Q184ajMTo02F7cSWTMhZmWOL/xALc=\nR:hijack.go\na:0:0:444\nZ:Q1Yv6A9Jl2pKZaC8Ir189reRKYMpo=\nR:hijack_test.go\na:0:0:444\nZ:Q1oATpdL5wLA4kDuPTBLcpKTZu1fw=\nR:image_build.go\na:0:0:444\nZ:Q1mGrnTuUeujyCklZ0IPgFYeiDwaw=\nR:image_build_test.go\na:0:0:444\nZ:Q1Gs+fP4jv+kkeOuRnRmsUibyZE24=\nR:image_create.go\na:0:0:444\nZ:Q1HZ7vEK8x3/+u0dGwKq3+06Y/L0I=\nR:image_create_test.go\na:0:0:444\nZ:Q1DEmA2BIDnub6tW1B68vEtTnhmUE=\nR:image_history.go\na:0:0:444\nZ:Q144TNicLYdXFO8yfeqP19+uUFgFA=\nR:image_history_test.go\na:0:0:444\nZ:Q1WlbSYtHMgh1yVSFDXRbdiZWAGLc=\nR:image_import.go\na:0:0:444\nZ:Q1bzu66Kl8l+r8xNKt7RswG1JThK4=\nR:image_import_test.go\na:0:0:444\nZ:Q1kO+OeICViEMsGrujJnajsg3ng84=\nR:image_inspect.go\na:0:0:444\nZ:Q1ixttX/HkXqvyvRrrHj2H/qAp3O4=\nR:image_inspect_test.go\na:0:0:444\nZ:Q1C0j+l0iqI6sSDPCFIogqFBV5Lj4=\nR:image_list.go\na:0:0:444\nZ:Q1XoBcknsv0S0VLDMyYA5dAeU/FZg=\nR:image_list_test.go\na:0:0:444\nZ:Q175Z+oj/+WtBUjZdMEHoF3z8ccrU=\nR:image_load.go\na:0:0:444\nZ:Q1byTGNLSY0NjHf2AyLOm8W18QvBo=\nR:image_load_test.go\na:0:0:444\nZ:Q1qjV+/jLpQP8lowU27bCsimo0ofs=\nR:image_prune.go\na:0:0:444\nZ:Q1JoKZcvMmArROtgKOpm7kX/oZasU=\nR:image_prune_test.go\na:0:0:444\nZ:Q1EklCbpI2saJvyEmRhucdnoCWjNM=\nR:image_pull.go\na:0:0:444\nZ:Q1VSARYtge5imu2P4y4J9d6Ly7bqA=\nR:image_pull_test.go\na:0:0:444\nZ:Q18RiIFM2samuw3uHWN80OYgyU514=\nR:image_push.go\na:0:0:444\nZ:Q1In2d5o73ILoxu2eLrG1T/e0zR+s=\nR:image_push_test.go\na:0:0:444\nZ:Q1NLTI0T6VWEi/goK5LXlHnFUtxTA=\nR:image_remove.go\na:0:0:444\nZ:Q1fa3Yb3F9pZT3bIdJpKANpUXEf4I=\nR:image_remove_test.go\na:0:0:444\nZ:Q1KjY+E5xjrwK1mF9EEr9c2nnuCIE=\nR:image_save.go\na:0:0:444\nZ:Q12NRZJp/QZlZ8dTD/HfAcfdOn6/w=\nR:image_save_test.go\na:0:0:444\nZ:Q1Sc430w5UeuFdZNY+4LUdAByhyQ0=\nR:image_search.go\na:0:0:444\nZ:Q1gPEktUGegnfmY/eestEDqzASP6w=\nR:image_search_test.go\na:0:0:444\nZ:Q1AaxruVnz9wQVB4U681dMilkzvbs=\nR:image_tag.go\na:0:0:444\nZ:Q1OH7KIUohlwyt86+Ryb3b9zqldCA=\nR:image_tag_test.go\na:0:0:444\nZ:Q1m6QONyaKH9WoC0/MOCzEpy5S0kE=\nR:info.go\na:0:0:444\nZ:Q1BmAraEgoycpar0umrsRifFHHgOY=\nR:info_test.go\na:0:0:444\nZ:Q1nf3oqWq+pFTCNSGpeXV3uEIiXHI=\nR:interface.go\na:0:0:444\nZ:Q1taXGnYjNPMKwDwu6H6PRyaGt2vs=\nR:interface_experimental.go\na:0:0:444\nZ:Q1XShpRa6GxoWnCThx0Z0Lsllbh2M=\nR:interface_stable.go\na:0:0:444\nZ:Q1SSUQwoU02BCpwi70e3rTAnhDeDA=\nR:login.go\na:0:0:444\nZ:Q16WPP0hOtmcF56Es/DTn4feXw2YY=\nR:network_connect.go\na:0:0:444\nZ:Q1GoGk3zMEWjalljtDF6vv40KmGmw=\nR:network_connect_test.go\na:0:0:444\nZ:Q1YH2BOFMFfSn+b4AjUA7M6m3bhmU=\nR:network_create.go\na:0:0:444\nZ:Q1LYpC87STBa96E0sVsrQkvmL3mqI=\nR:network_create_test.go\na:0:0:444\nZ:Q1URjyOsEUeRUaJCM2CtDtwp145qE=\nR:network_disconnect.go\na:0:0:444\nZ:Q1phV3VnFgTDxRD0VdzWxojoiqr78=\nR:network_disconnect_test.go\na:0:0:444\nZ:Q1j2wdWzLOWJQzBk9j7plOZShgGD4=\nR:network_inspect.go\na:0:0:444\nZ:Q1A2wU6+774TWT57D2frL+Iaml8V0=\nR:network_inspect_test.go\na:0:0:444\nZ:Q1/x5qV5F2MEm9z6pdO2laN0cyUqs=\nR:network_list.go\na:0:0:444\nZ:Q1hNIE+Qeil/+zndPoNOXx9yN5I4I=\nR:network_list_test.go\na:0:0:444\nZ:Q13wEtyhJ0LnMfFJUIb/aOVMEr2h4=\nR:network_prune.go\na:0:0:444\nZ:Q12mJFAiw6DcwCcAtkHmI3jMi/QXQ=\nR:network_prune_test.go\na:0:0:444\nZ:Q1GU8Sb2xg5iNpqbofrrp2deoEPt4=\nR:network_remove.go\na:0:0:444\nZ:Q1b8uwf02S7Mv0I2LD3P52cz7JsnY=\nR:network_remove_test.go\na:0:0:444\nZ:Q1YqX8avGulew/Ehu8EY7XydgFolg=\nR:node_inspect.go\na:0:0:444\nZ:Q1xzBaGjVKyxLpGhpGLl+e0SgXavw=\nR:node_inspect_test.go\na:0:0:444\nZ:Q199vLIu4dp1+SJlPNSTM+EDdtl40=\nR:node_list.go\na:0:0:444\nZ:Q1shqGlW4T2JkAlAfk25d52DSQK5w=\nR:node_list_test.go\na:0:0:444\nZ:Q1FRtrPZlzE4VA5x+0IjOMfebk7xU=\nR:node_remove.go\na:0:0:444\nZ:Q1kJXRZ7MDuafVH4v2sQS64B0zYLI=\nR:node_remove_test.go\na:0:0:444\nZ:Q1/HVpNQ2iT0a1Wq3dQ0W9GYnTW8U=\nR:node_update.go\na:0:0:444\nZ:Q1N6ujeYvYAXAAUGcRs3OwByooVoE=\nR:node_update_test.go\na:0:0:444\nZ:Q1KA7ZoQXR9g+/ujBXnx0WYh4kNY4=\nR:options.go\na:0:0:444\nZ:Q1IfdnnGvCRyPgsPvnwtwWjwH3KeM=\nR:options_test.go\na:0:0:444\nZ:Q1CkyJeiPt+9tnQ4K5C7oFpmmWJRw=\nR:ping.go\na:0:0:444\nZ:Q1qm0JoxFOoUPYHBlESbZUnxAerFQ=\nR:ping_test.go\na:0:0:444\nZ:Q1x5QYlLukeZACgblFiKs3kdE7nN0=\nR:plugin_create.go\na:0:0:444\nZ:Q13Wy4ziLoCZCSh8xtMH2+Iih4cMs=\nR:plugin_disable.go\na:0:0:444\nZ:Q1xuz14UGEEN7+TQgmA9ZyShyNvlo=\nR:plugin_disable_test.go\na:0:0:444\nZ:Q1dDn1oDLjuCBnsTVCxzfaiUykXZs=\nR:plugin_enable.go\na:0:0:444\nZ:Q1UpAEtGvEyIRQvvxkpxea1aKLLvk=\nR:plugin_enable_test.go\na:0:0:444\nZ:Q1a2d5oGkRu+N+xFHf2NzhQXOJpYQ=\nR:plugin_inspect.go\na:0:0:444\nZ:Q1HdDvBr9G1gKRMg1LyVW+YbE4Io0=\nR:plugin_inspect_test.go\na:0:0:444\nZ:Q1RK+kDsGOEAWlTfoI+prU7myImfY=\nR:plugin_install.go\na:0:0:444\nZ:Q1YH+ps/DBvtOTeBnTsKR3jnlJDro=\nR:plugin_list.go\na:0:0:444\nZ:Q1CXCBO/ayx+ZDtLUDNsFtxhbGcKI=\nR:plugin_list_test.go\na:0:0:444\nZ:Q1pXHumzKGJbVhxMqcZdyIc/Js+gk=\nR:plugin_push.go\na:0:0:444\nZ:Q1mMKVuV5fak4D4wXicQjh/iRFkKQ=\nR:plugin_push_test.go\na:0:0:444\nZ:Q133y1XneTFZfICBSebk1/ZHzletE=\nR:plugin_remove.go\na:0:0:444\nZ:Q1Gi6pG20WX/eOGQPMDhUvqu18/xw=\nR:plugin_remove_test.go\na:0:0:444\nZ:Q1vo8P8hJEZtH1WWc5W8koXxeoWPU=\nR:plugin_set.go\na:0:0:444\nZ:Q1TRk3YvKMFqIWO45fdNDS6FWstOU=\nR:plugin_set_test.go\na:0:0:444\nZ:Q1uCITmfxAj/3ETfw801SAN0UT2F4=\nR:plugin_upgrade.go\na:0:0:444\nZ:Q1/0yptpz4oV4LVHPKJDuQHJJa6zc=\nR:request.go\na:0:0:444\nZ:Q126kaT5RgakDA+bxhrsvsExCnmgg=\nR:request_test.go\na:0:0:444\nZ:Q1SIXRZTPK8NDy5eFBWljpzNQmNMQ=\nR:secret_create.go\na:0:0:444\nZ:Q1Y+DTHn13kbOanD4PvoEOmO2K2K4=\nR:secret_create_test.go\na:0:0:444\nZ:Q1KA84R7kb0ANTgc1Cbth/j9BNf7Q=\nR:secret_inspect.go\na:0:0:444\nZ:Q1GI8/MqSDJ2HGJiysyRZOjuGp2eQ=\nR:secret_inspect_test.go\na:0:0:444\nZ:Q1OgflbnWDpB45ktWyHz3PjOgtux8=\nR:secret_list.go\na:0:0:444\nZ:Q1Z5EEfkqxPiiSSQ5d5xrbR8fhJ0k=\nR:secret_list_test.go\na:0:0:444\nZ:Q1f3264kj4pPPlKiNHpRSGkcxqRFY=\nR:secret_remove.go\na:0:0:444\nZ:Q1SFxzCQayGFYoCF8FXX/pj3Tw7JY=\nR:secret_remove_test.go\na:0:0:444\nZ:Q17bo9kZn0G04+pVGNpUzhNi9A6/Q=\nR:secret_update.go\na:0:0:444\nZ:Q1LR+33cEEw43Lttzj/Tj5zsBgBSA=\nR:secret_update_test.go\na:0:0:444\nZ:Q1FlYm9BlDg2QtywOIsfs06NQnDgI=\nR:service_create.go\na:0:0:444\nZ:Q1m6WlLGa1nZ0LHPID7vPioLskr9c=\nR:service_create_test.go\na:0:0:444\nZ:Q1o+vACt68SE1edc+hCWHRncEe/YY=\nR:service_inspect.go\na:0:0:444\nZ:Q1ghKMh+9CayfDYpte6DUhPyl3wQc=\nR:service_inspect_test.go\na:0:0:444\nZ:Q17DQJ3qxMiaefPJxD3QE38f/gTG4=\nR:service_list.go\na:0:0:444\nZ:Q1+wYPFA79F+t3hTllhrMwYJ8qbps=\nR:service_list_test.go\na:0:0:444\nZ:Q1RAZhuUPxyXS2L9Zptox65eZAyXg=\nR:service_logs.go\na:0:0:444\nZ:Q1c7J9HvISW3U91F4uxQQkRRZswHs=\nR:service_logs_test.go\na:0:0:444\nZ:Q15pOq1KxjoMEZZmQwaF3TiOJE6+M=\nR:service_remove.go\na:0:0:444\nZ:Q1YFxKmxbTs8bc6pDlP/1iwey2wEc=\nR:service_remove_test.go\na:0:0:444\nZ:Q1ZjxELssuyBwcOkYY/0AIDSxbfSU=\nR:service_update.go\na:0:0:444\nZ:Q1at69NsZ04YxHWH1h9mhPJgctA8c=\nR:service_update_test.go\na:0:0:444\nZ:Q152Ha/N7kv79my4f6ApKsrg37Co8=\nR:swarm_get_unlock_key.go\na:0:0:444\nZ:Q1uu4XoiAvqwbFcqzRhb5Hmva+79c=\nR:swarm_get_unlock_key_test.go\na:0:0:444\nZ:Q1BWZTLucDXXeGNxvAyLs41OW3nWA=\nR:swarm_init.go\na:0:0:444\nZ:Q1VR3jfIhmFEAizS1HUWobNnj6AsA=\nR:swarm_init_test.go\na:0:0:444\nZ:Q1++ZnqN2hEClr2+uu+vuMJ/fKOnk=\nR:swarm_inspect.go\na:0:0:444\nZ:Q1Cfi7c7skIY15Kp3qxsldkSsGI18=\nR:swarm_inspect_test.go\na:0:0:444\nZ:Q1RpsZXAceE+icG6kjd3keCHiiXJg=\nR:swarm_join.go\na:0:0:444\nZ:Q1097RS0VCfFG7N8Ys3MaGUYMR7Q0=\nR:swarm_join_test.go\na:0:0:444\nZ:Q1ismAWp+yFzqGIOkAsfIMmcGvQEU=\nR:swarm_leave.go\na:0:0:444\nZ:Q1QAJ/o6Bm8V1P/05rQprjYiguyk4=\nR:swarm_leave_test.go\na:0:0:444\nZ:Q1aqEVVWvaxRM+8yN2C4denTSarxc=\nR:swarm_unlock.go\na:0:0:444\nZ:Q1bHHsY9V1rA90jZxEiHbDYaOvjdQ=\nR:swarm_unlock_test.go\na:0:0:444\nZ:Q1+CpyZMG64R1514dlxk8AAv+xQgA=\nR:swarm_update.go\na:0:0:444\nZ:Q1WKr91mOyh4x3opzcOMXFdFLwEbU=\nR:swarm_update_test.go\na:0:0:444\nZ:Q1JS5in1wjEGATc5/aS3pYk23HjtI=\nR:task_inspect.go\na:0:0:444\nZ:Q1uAPtfpSz5PTm3vdHsqAitTwG5PI=\nR:task_inspect_test.go\na:0:0:444\nZ:Q1nKqIn9Rux3rRDf9GB0EgBR+2MHw=\nR:task_list.go\na:0:0:444\nZ:Q1ejmr5Bf0blNIvo/lypSJnC8Urc8=\nR:task_list_test.go\na:0:0:444\nZ:Q1V/AawZgJIEgkg7ytNkI6MawnWzE=\nR:task_logs.go\na:0:0:444\nZ:Q1yA9uw/9LBJ/JanBewooBmxzhDlw=\nR:transport.go\na:0:0:444\nZ:Q1cwhrHfoI++WKbfyd6f6UE8e49bA=\nR:utils.go\na:0:0:444\nZ:Q185yPVDQDMKsbw4WQm5gNgEXAP/M=\nR:version.go\na:0:0:444\nZ:Q1XHKG01uJ9Y9jBdav3RPW3Rp5Bog=\nR:volume_create.go\na:0:0:444\nZ:Q1rFlm61cMHzD2WlRfQi9SFT2Z99Y=\nR:volume_create_test.go\na:0:0:444\nZ:Q1Q6Tnd25JcpjZYnbRj3YDp4iKLk0=\nR:volume_inspect.go\na:0:0:444\nZ:Q1Qfaa7246Gx28/tL/91MprfxzMug=\nR:volume_inspect_test.go\na:0:0:444\nZ:Q16JpxlNCTz8j+Q+/KoDttUQukd+s=\nR:volume_list.go\na:0:0:444\nZ:Q1zfMcF4HG3kswnnyIfcoNAEVaCEs=\nR:volume_list_test.go\na:0:0:444\nZ:Q1u9RC36S1uq+dHKZP7RwhlYB6w0E=\nR:volume_prune.go\na:0:0:444\nZ:Q1dzyBlBh872uaW/W7luaOdrFpzaA=\nR:volume_remove.go\na:0:0:444\nZ:Q1/Oo5AVxw5R/AcGKZxa8I1Auptks=\nR:volume_remove_test.go\na:0:0:444\nZ:Q1fNJvBwtVkbI8HhNZ1uNi0kHcoKU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/client/testdata\nM:0:0:555\nR:ca.pem\na:0:0:444\nZ:Q1yjURPcQE9FeejINtqcFgJTkpUeE=\nR:cert.pem\na:0:0:444\nZ:Q1pxuCgn6wtJSiSAQFBb6b4baA/Js=\nR:key.pem\na:0:0:444\nZ:Q11jlGLmFULcSdnB/GIf4CSPPZyAY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/cmd/dockerd\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1PWM91v2+9Ae6WUTgllBIMTFuitU=\nR:config.go\na:0:0:444\nZ:Q1TCRKVa99mH1oZhvNw2uwGX3UMqc=\nR:config_common_unix.go\na:0:0:444\nZ:Q1SnBAVdd+AVNm4EZqajsLqB2+zcA=\nR:config_unix.go\na:0:0:444\nZ:Q1NKjvAGpVDf6tTY9DGpjZb+B2BIE=\nR:config_unix_test.go\na:0:0:444\nZ:Q1eFf4IVK+W4OkM3x3iBzmhpuwT9U=\nR:config_windows.go\na:0:0:444\nZ:Q1X81MA5CvDkM1vQSj222WJRfiMMI=\nR:daemon.go\na:0:0:444\nZ:Q1lKszTXVJjocaRXbc6fZ4YUKnelQ=\nR:daemon_freebsd.go\na:0:0:444\nZ:Q1hr400DWhDA9nDBUurMK7KVNodJ4=\nR:daemon_linux.go\na:0:0:444\nZ:Q1Ssw7grmwXVtRqHb6QZbvy29G/JY=\nR:daemon_test.go\na:0:0:444\nZ:Q1qIMXQhKzVDsLRW8cv5jiSYCSdWQ=\nR:daemon_unix.go\na:0:0:444\nZ:Q1Hl02yQMCRJtkV4NOsetSYOd9byk=\nR:daemon_unix_test.go\na:0:0:444\nZ:Q15fEeEmBWfN/tkAMXH4lz0Y/sig0=\nR:daemon_windows.go\na:0:0:444\nZ:Q1pV5eqlgUgdVzRvkEjePrV0hXToQ=\nR:docker.go\na:0:0:444\nZ:Q1U+zt3FUmfKFIfFHdF/MtRrJgJeQ=\nR:docker_unix.go\na:0:0:444\nZ:Q1zsgtvV6pojUAypRv3X3SCjL+usI=\nR:docker_windows.go\na:0:0:444\nZ:Q1r0NLVHgZXLmfl3/g8ink3i7cYIg=\nR:metrics.go\na:0:0:444\nZ:Q1c4AsGW21rQ1eHaFMB7h2rgBXZ0o=\nR:options.go\na:0:0:444\nZ:Q1IeIGLf5gaQ4raT+GK3aMqJhUXss=\nR:options_test.go\na:0:0:444\nZ:Q1DEtaKZF+vp/sc9p05hv/dfxzQCo=\nR:service_unsupported.go\na:0:0:444\nZ:Q1gIUeTQnkIlj6kUGxXEcq8oOxsuU=\nR:service_windows.go\na:0:0:444\nZ:Q1wRwMCPzyn4En/aQB1oIXccvO6Ws=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/container\nM:0:0:555\nR:archive.go\na:0:0:444\nZ:Q1/8XWjwnpsK6l3usvtnYhsFIh/R0=\nR:container.go\na:0:0:444\nZ:Q1oZXNXoGHwFx4+C7G5wLZphE/8wc=\nR:container_unit_test.go\na:0:0:444\nZ:Q1kxnLaPjKT44uRguYcfYTcIankQc=\nR:container_unix.go\na:0:0:444\nZ:Q1PkXTY4aSj8iv9FTii2iYRvpium0=\nR:container_windows.go\na:0:0:444\nZ:Q1GpcWfwpkl9GYUw7j9hy500CJlMY=\nR:env.go\na:0:0:444\nZ:Q1oJZ2PcD4sQzoGrZ59kqcTZ8lnbE=\nR:env_test.go\na:0:0:444\nZ:Q1RidMnIqI72PvSseaKX+SzTiiVk8=\nR:health.go\na:0:0:444\nZ:Q162AiqxlIhkUjWipGZoecchJpUtA=\nR:history.go\na:0:0:444\nZ:Q183+6Xqz9o8pWNyTLAYs3CMjivJI=\nR:memory_store.go\na:0:0:444\nZ:Q1e8WwZRs5ktlrSjPHdTfY7i1ge2o=\nR:memory_store_test.go\na:0:0:444\nZ:Q1OiZyYLoX4wIG/uYftS+GkSbFqE0=\nR:monitor.go\na:0:0:444\nZ:Q17mCxbNs9yYFoyF7nSsUpwrUSQ8s=\nR:mounts_unix.go\na:0:0:444\nZ:Q1Je4SFPPIzjwLaZXBkEHoAeo/avI=\nR:mounts_windows.go\na:0:0:444\nZ:Q1qTzlZqqhNHqrBfMa7bUL3pmagso=\nR:state.go\na:0:0:444\nZ:Q1rOywdxcOxCuAZAkfyFuy7fznlSc=\nR:state_test.go\na:0:0:444\nZ:Q1TTb/CisJhiIdVJo+/ebs73jqyBw=\nR:store.go\na:0:0:444\nZ:Q10eiQJuENj7IO6m9myDpQgF6I0hY=\nR:view.go\na:0:0:444\nZ:Q1dCzNH+mcX8S9itKpR61xKmC/6xM=\nR:view_test.go\na:0:0:444\nZ:Q1rJl/MkG7LSpyjGbpI/SAZPxC3so=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/container/stream\nM:0:0:555\nR:attach.go\na:0:0:444\nZ:Q1x2TrYMoVgLmjTAe3AEpx9BDs3Xg=\nR:streams.go\na:0:0:444\nZ:Q13mBdWx3JNgrKIlL5AOTAAW5IjaI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q17D6xFf5ju0FDzaE+/KYOaNvxvQU=\nR:check-config.sh\na:0:0:444\nZ:Q1XhaJ/T3OsqKIJGMxRmuwR2YQfWw=\nR:dockerd-rootless-setuptool.sh\na:0:0:444\nZ:Q1s0+KpyhcQvjEsEsO53nbtcjbzB0=\nR:dockerd-rootless.sh\na:0:0:444\nZ:Q1J8iy+ltchaqcNUkQQ2gmtpt/S34=\nR:dockerize-disk.sh\na:0:0:444\nZ:Q1BnqXG7b6xaILlnWV9Gf0VoeMk0s=\nR:download-frozen-image-v2.sh\na:0:0:444\nZ:Q17m6cwyH6/A2IUGEZUED/7/bFag4=\nR:editorconfig\na:0:0:444\nZ:Q164nIw04YqqK4Inuu4kpzYJ2HqM4=\nR:mac-install-bundle.sh\na:0:0:444\nZ:Q1dl3VFFngloIrBOISdE9Ls2MugJE=\nR:mkimage-alpine.sh\na:0:0:444\nZ:Q11Ayqu6hcEiv2h0KvCbvo2FypbkQ=\nR:mkimage-arch-pacman.conf\na:0:0:444\nZ:Q1HqYWTASu8GkM0ZWFDmTWdp9kWMw=\nR:mkimage-arch.sh\na:0:0:444\nZ:Q1azVI9NtLpVfOyJPKEziVT/kTwbI=\nR:mkimage-archarm-pacman.conf\na:0:0:444\nZ:Q1ckNurGyb9bx7ftyfRqd/NcbrdBw=\nR:mkimage-crux.sh\na:0:0:444\nZ:Q15ueg6Nws200F7DCB4mHSIiWzKts=\nR:mkimage-pld.sh\na:0:0:444\nZ:Q1hs8l+L70RWCECBdSAiHAIMTzJ60=\nR:mkimage-yum.sh\na:0:0:444\nZ:Q1mVNVfgfFXe8i/HEt5TCO/wjvWxc=\nR:nuke-graph-directory.sh\na:0:0:444\nZ:Q1w8pUF+M/Ob4X0ktHmIZWCSTT+X4=\nR:report-issue.sh\na:0:0:444\nZ:Q1bGidcIQYjmfozrZ46Ju7pEa0Glo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/apparmor\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1UO8Ggay0ebnrioFA3pcwFY1f1Q0=\nR:template.go\na:0:0:444\nZ:Q1PtSEE5NHFptl/caUi0H85cCjyrg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/busybox\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q167htd4iWl3c4hl8aYdaIrjxuDqg=\nR:LICENSE\na:0:0:444\nZ:Q16gvMqUDF4Wogm7/RKlTW8CQ2HZg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/docker-device-tool\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q14WDPIkTlQg57srlGlFCxqflhmVE=\nR:device_tool.go\na:0:0:444\nZ:Q1Mz5TDqmIrjf0IP7fMERl99eQDLg=\nR:device_tool_windows.go\na:0:0:444\nZ:Q1KpZEx5JM3+aqrgnYV9HmwLShNj0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/gitdm\nM:0:0:555\nR:aliases\na:0:0:444\nZ:Q1rYdhD7qPYU6JtDu4/HWMpPQx46E=\nR:domain-map\na:0:0:444\nZ:Q1nCO6Mv2WZK00r1dV0/Y5WorTFl8=\nR:generate_aliases.sh\na:0:0:444\nZ:Q161byg2vtmeKsq9ya3/CIl6+Rxqk=\nR:gitdm.config\na:0:0:444\nZ:Q1MMAnZmxCPtnjZmrdLI9GPqnaJ7Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/httpserver\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q14ioVdcQFZSLkwjm1Wp6qLlA8Hwo=\nR:server.go\na:0:0:444\nZ:Q1vPilGE5y4Dcfki2Hq3l3ct/u+IY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init/openrc\nM:0:0:555\nR:docker.confd\na:0:0:444\nZ:Q1NL3ScBVtSU0PG9+zZixUvv23S2w=\nR:docker.initd\na:0:0:444\nZ:Q1G9OJUh7DfbKMF39zo2qAwwtJSYY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init/systemd\nM:0:0:555\nR:docker.service\na:0:0:444\nZ:Q1SWUcz/xQIOgQbRj9n4o1peI/lw8=\nR:docker.service.rpm\na:0:0:444\nZ:Q1r4LtANNqFy/qS1mdaFMXb/PbYCw=\nR:docker.socket\na:0:0:444\nZ:Q1M+vqguWEaKa0/wdGKm9QN0lR9no=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init/sysvinit-debian\nM:0:0:555\nR:docker\na:0:0:444\nZ:Q12VS0bCPUa9EPpjKwVsxz+Vli3TU=\nR:docker.default\na:0:0:444\nZ:Q1mxr0PlU4WT3AaEwaR717hdOAaGM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init/sysvinit-redhat\nM:0:0:555\nR:docker\na:0:0:444\nZ:Q1v2zm+6JbmOXXKFvQr/Ez5KXGDlo=\nR:docker.sysconfig\na:0:0:444\nZ:Q1/l2hOXtdrYaK501bDmYdJJw6kd4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/init/upstart\nM:0:0:555\nR:docker.conf\na:0:0:444\nZ:Q1SIbWUcwYbgvU70An7Yca91iTQaE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/nnp-test\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1vUmP9B3DZTy/LpnxguKnqXbP11U=\nR:nnp-test.c\na:0:0:444\nZ:Q1BKMLIg87VqpjJxA2i35mrfU9Tdk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/nano\nM:0:0:555\nR:Dockerfile.nanorc\na:0:0:444\nZ:Q1fX4YJ7WP7RNPYlS/9HEkOkPRucM=\nR:README.md\na:0:0:444\nZ:Q1LZljrBhzsEZ9NHGM7355Nr0Ih48=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/textmate\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1nJgksoVNz+CZ3qj4mOBjCFN4utQ=\nR:REVIEWERS\na:0:0:444\nZ:Q13Di5yY7TyK9W5Qxyjy3MNy0OlRY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/textmate/Docker.tmbundle\nM:0:0:555\nR:info.plist\na:0:0:444\nZ:Q1s/XzPoCRR8IggdwhpyDB4mG2wRE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/textmate/Docker.tmbundle/Preferences\nM:0:0:555\nR:Dockerfile.tmPreferences\na:0:0:444\nZ:Q1KkPgU2k1dLHnR7kyX//jsCZJZJ0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/textmate/Docker.tmbundle/Syntaxes\nM:0:0:555\nR:Dockerfile.tmLanguage\na:0:0:444\nZ:Q1uo6PyhXSE5jMiupODHQV0b5ZNwo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syntax/vim\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1lxQsXi45RoA65Bdpe7Vb4kF6xAI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/syscall-test\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1UL1v7D0Wv4gcAuJZreOijj5QjAk=\nR:acct.c\na:0:0:444\nZ:Q17gFWAu3V/X/DsMoiPSGOW/jImWo=\nR:exit32.s\na:0:0:444\nZ:Q14kFfwSdDHCEBQCVJgXIgtZeS/AY=\nR:ns.c\na:0:0:444\nZ:Q1tUaeg802XBn5Jbb5oBdTltt6EXU=\nR:raw.c\na:0:0:444\nZ:Q154DO5IkLs/RbGoCxIz3nXoUjZNQ=\nR:setgid.c\na:0:0:444\nZ:Q1hI2zqSbgJVXx/rSsMdsV88kSpGo=\nR:setuid.c\na:0:0:444\nZ:Q19VzAMy/J7dCCjhJ9UkOe78mASLk=\nR:socket.c\na:0:0:444\nZ:Q1NRLp9fhfifoe+EzGff3p2r6smis=\nR:userns.c\na:0:0:444\nZ:Q1Ew5KFp6umkLk3GhyoKplZ+JS83w=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/contrib/udev\nM:0:0:555\nR:80-docker.rules\na:0:0:444\nZ:Q1NJ76/7u7llEwilU0eV112sIw70I=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon\nM:0:0:555\nR:apparmor_default.go\na:0:0:444\nZ:Q1J4cqWPg/FsGFzNhYfp4I1acB4QU=\nR:apparmor_default_unsupported.go\na:0:0:444\nZ:Q13o5eWMWGMdIf/8FukgJHNFQ2n+Q=\nR:archive.go\na:0:0:444\nZ:Q1gtYf1lzBmOEZ0IeFi6uPTH+YMyA=\nR:archive_tarcopyoptions.go\na:0:0:444\nZ:Q1FrKM/LJ8VmOxpSX2VacOQx3rbGg=\nR:archive_tarcopyoptions_unix.go\na:0:0:444\nZ:Q1rci3ay4vS21EW49OS7SIJkamqoo=\nR:archive_tarcopyoptions_windows.go\na:0:0:444\nZ:Q1lNis3RHHzq6czTZc/rcgPCLs6Bg=\nR:archive_unix.go\na:0:0:444\nZ:Q1WUaOHsgGKhzaaImXhUwWbD72kaQ=\nR:archive_windows.go\na:0:0:444\nZ:Q16pby02r/C+qDutOLxjH/UMxWsjY=\nR:attach.go\na:0:0:444\nZ:Q1h9/z3Q4WR9k2V/RKuajyfSaSERg=\nR:auth.go\na:0:0:444\nZ:Q1GGVMlMpL0Io2G1DXL7FSKotZXvw=\nR:changes.go\na:0:0:444\nZ:Q1Y++wqysW2aqn9YXsREKi7AR/Nxo=\nR:checkpoint.go\na:0:0:444\nZ:Q1R/1yqQj4fj3J07t0+KEHYP7mRN4=\nR:cluster.go\na:0:0:444\nZ:Q1JW2+5n64cX5JpyXnATCv2nUCNh0=\nR:commit.go\na:0:0:444\nZ:Q1ih8hS9lpABNvEyb7W7eCKesim8A=\nR:configs.go\na:0:0:444\nZ:Q115hzhNEY9DZx619gxwEbBZ+/TTw=\nR:configs_linux.go\na:0:0:444\nZ:Q1FwdeceJReAzrLsl/ZrSSoDOqqN0=\nR:configs_unsupported.go\na:0:0:444\nZ:Q1TPqT/lL/88OghRp3vsC+c2uGSUM=\nR:configs_windows.go\na:0:0:444\nZ:Q1FwdeceJReAzrLsl/ZrSSoDOqqN0=\nR:container.go\na:0:0:444\nZ:Q1lYDeHVLTmIEaFne7UlRyXyFxMEw=\nR:container_linux.go\na:0:0:444\nZ:Q1hZggxIgDIUIpnYNMWWRRmqroNJ8=\nR:container_operations.go\na:0:0:444\nZ:Q1+un1cXZ2oUYCD6nJLaxGzR4AXNw=\nR:container_operations_unix.go\na:0:0:444\nZ:Q1d65mgHkOVJ8jKbXVk3a3eonDDs4=\nR:container_operations_windows.go\na:0:0:444\nZ:Q1NIxd5S9yhf2a4rf5acDM7w24gew=\nR:container_unix_test.go\na:0:0:444\nZ:Q1AAXI2RPuUI69XdNxtUcJs8Vemv4=\nR:container_windows.go\na:0:0:444\nZ:Q1RzKHpXZbAhph9PRxtHYLMPDwV4g=\nR:content.go\na:0:0:444\nZ:Q1vlESUB6nrGnLQgwkmDNTIMHBpKY=\nR:create.go\na:0:0:444\nZ:Q11W582SP9zshmdiGj5BtOKboIo60=\nR:create_test.go\na:0:0:444\nZ:Q1xu9LUsBlMvAThrwIZYPaBNNw22I=\nR:create_unix.go\na:0:0:444\nZ:Q1N5vzbH+qwzRKQKnIGlxt8+9SCq4=\nR:create_windows.go\na:0:0:444\nZ:Q1nm/WEQ+btfmiBht4jW58u+eHoIw=\nR:daemon.go\na:0:0:444\nZ:Q1PHrSIb4uIFfi+8wpJVdepGnYHoY=\nR:daemon_linux.go\na:0:0:444\nZ:Q1ROcxRRck6B++mBWnjoxsYMRCr5o=\nR:daemon_linux_test.go\na:0:0:444\nZ:Q1MF7wRpcc6zarOYUk134SHt7/KrQ=\nR:daemon_test.go\na:0:0:444\nZ:Q19XLX/qZMddosEJDdhOrIeaY+Csk=\nR:daemon_unix.go\na:0:0:444\nZ:Q1VV3kjSOh96Fw6mJKtBC9Z/LNbtQ=\nR:daemon_unix_test.go\na:0:0:444\nZ:Q1LHQbbaoIzMGGxlTOpxGNuJf+rSM=\nR:daemon_unsupported.go\na:0:0:444\nZ:Q1oPYEk6ClThkxC3lnOGQCLpgFK2I=\nR:daemon_windows.go\na:0:0:444\nZ:Q1OQ/AOAz/CcMDYdWwibZSvqq3B3M=\nR:daemon_windows_test.go\na:0:0:444\nZ:Q18oxP3XBk/wmCf0GJO0yjDn17WAU=\nR:debugtrap_unix.go\na:0:0:444\nZ:Q1WGpwVCnHWT6FJ9P4K3MlpYoodGw=\nR:debugtrap_unsupported.go\na:0:0:444\nZ:Q1dxeriSMxoWzmLTA1n5IfMVGLRC0=\nR:debugtrap_windows.go\na:0:0:444\nZ:Q1bS76BL8T5sjUF9GISLBGiivCC6w=\nR:delete.go\na:0:0:444\nZ:Q1SDhXTi9trS/GiW6XQdi4WQHxJcM=\nR:delete_test.go\na:0:0:444\nZ:Q1WDLkP1o+C6iFlOy3xmel427Yhkk=\nR:dependency.go\na:0:0:444\nZ:Q1lrGqN6Nqa/F58WP2765/B3MjHNg=\nR:devices_linux.go\na:0:0:444\nZ:Q1XTmM1cbLIp10BDXiOV3hJ2Dk6CE=\nR:disk_usage.go\na:0:0:444\nZ:Q1kFIbj1Jgq1IJMwTcrSI3ySu9mCo=\nR:errors.go\na:0:0:444\nZ:Q1sxK8k8LeoWLz2wb/S5lW8n97+bY=\nR:events.go\na:0:0:444\nZ:Q1bUcdfvjsoX5owXDqn2xNvHfVonQ=\nR:events_test.go\na:0:0:444\nZ:Q1mCZy8bpXNzt1SHlYqlKZ7XhdNuY=\nR:exec.go\na:0:0:444\nZ:Q1lnZtHFYqDA16UEC5+b8MX5Jf14U=\nR:exec_linux.go\na:0:0:444\nZ:Q1mbUQ5Gqy8EYaneaYp1jPDey1Ygs=\nR:exec_linux_test.go\na:0:0:444\nZ:Q1Rnxlb6gM2Ml9uB82tjHBYgH3L9o=\nR:exec_windows.go\na:0:0:444\nZ:Q1XRwOKZMWAI0LzJffjwq0tJy6f2Q=\nR:export.go\na:0:0:444\nZ:Q1EbfElZN35YL9WaBQqLPLKoTJY/g=\nR:health.go\na:0:0:444\nZ:Q1WTCCA3PYI6UXKRigQGo5n0Ts8Cw=\nR:health_test.go\na:0:0:444\nZ:Q1iH4LpqqKCmgpuEZVrFDQp9oUcUA=\nR:info.go\na:0:0:444\nZ:Q1q4pQyHwGGuoVukUKS7uqUAfzF/c=\nR:info_test.go\na:0:0:444\nZ:Q1lAuPaSLkPqpC5bfty3BzsDgMDVg=\nR:info_unix.go\na:0:0:444\nZ:Q1qkpWD93rprY2LeC/PM5ytxrwmFc=\nR:info_unix_test.go\na:0:0:444\nZ:Q18Nm4GEeXk/nIrRqP3qLGbTsIj8g=\nR:info_windows.go\na:0:0:444\nZ:Q16mavDBhWqzxiGtf7s1bJUAx4PWk=\nR:inspect.go\na:0:0:444\nZ:Q1Vl2/vAlgGlb9PtwpktamRzGOIac=\nR:inspect_linux.go\na:0:0:444\nZ:Q1Nw2zpo/kB92eq2feVIdVqiXSpZI=\nR:inspect_test.go\na:0:0:444\nZ:Q1kU974LtR2Wd7Qu+NiCsDfh17fok=\nR:inspect_windows.go\na:0:0:444\nZ:Q1mg2gFjRTmGgUS4AKg4FRRF1Ufj8=\nR:keys.go\na:0:0:444\nZ:Q1vSeecdnUVtYND5xQr4rzNTlhW/w=\nR:keys_unsupported.go\na:0:0:444\nZ:Q18EyhRVUzKh5iOq2h5D3vfqx3P/Y=\nR:kill.go\na:0:0:444\nZ:Q1gchK8mN7f1ga0w8iXaVthLTjgTM=\nR:licensing.go\na:0:0:444\nZ:Q1iGbwdrujAsjSlvpKGttpXOff8Nk=\nR:licensing_test.go\na:0:0:444\nZ:Q1SenoNtHHOKMuwMG49K8UGHYsfmE=\nR:links.go\na:0:0:444\nZ:Q1WklJ3LAx7X/aIfOMqXJujb4boUo=\nR:list.go\na:0:0:444\nZ:Q1ub2ytrjT96AvFoC4AsR5AA0r0Jo=\nR:list_test.go\na:0:0:444\nZ:Q10wycrLLU/CUvEqqY/kU4bNxAHoA=\nR:list_unix.go\na:0:0:444\nZ:Q1pv7dWy+VAXi4XsH+B8D72RfE/YQ=\nR:list_windows.go\na:0:0:444\nZ:Q1nLCDL8vNrtfWUXpNzuYsqfM1UOE=\nR:logdrivers_linux.go\na:0:0:444\nZ:Q1d6aGpg8x1KbgnF3Qboo3XJ//Q8A=\nR:logdrivers_windows.go\na:0:0:444\nZ:Q15HIQwmkMQO+EscPIb+2BcUn1k2c=\nR:logs.go\na:0:0:444\nZ:Q1cZGWxN7uI/spgW29FgIQyMpzZUU=\nR:logs_test.go\na:0:0:444\nZ:Q1wLn4ecWcTz3FWL9xMD+9eIAskKU=\nR:metrics.go\na:0:0:444\nZ:Q1/Hy3wAKVFJoK1L1cDmR323qLfHY=\nR:metrics_unix.go\na:0:0:444\nZ:Q1RM3cBDCZwNFT1mhZFf/w+nifCqg=\nR:metrics_unsupported.go\na:0:0:444\nZ:Q1MlrJVmGZODWChw39yBbMwcOVvho=\nR:monitor.go\na:0:0:444\nZ:Q14lWWwBNKLZh6a/FMV6SWJAroBYA=\nR:mounts.go\na:0:0:444\nZ:Q1lOBDP8SyHBz7+yUeQYCgZmbX3Bc=\nR:names.go\na:0:0:444\nZ:Q19Zn2JThdg4p4LKtqkAauf2DcYZI=\nR:network.go\na:0:0:444\nZ:Q1fa6vD6FXHU/1bGs3qzXVdMFLNKo=\nR:network_windows.go\na:0:0:444\nZ:Q1Qc7fq4VMx7CzRhFTPSB14k+Wv50=\nR:nvidia_linux.go\na:0:0:444\nZ:Q1WkLY6gRT4b++05L1xGNBaQtosZg=\nR:oci_linux.go\na:0:0:444\nZ:Q11Nwh0vzUsG8Eb2/Q9mepVQGmk98=\nR:oci_linux_test.go\na:0:0:444\nZ:Q1SwCyy8HahJhmd7AZvafvi8PpPHQ=\nR:oci_utils.go\na:0:0:444\nZ:Q1RG0FStByDlbYGQRB+1ImSDZJ6HA=\nR:oci_windows.go\na:0:0:444\nZ:Q15El0Vi7xLWzlkCUIKg0+MlaUaMI=\nR:oci_windows_test.go\na:0:0:444\nZ:Q1RkcE+7BkEFFQkP/rj48wzCX0Oy8=\nR:pause.go\na:0:0:444\nZ:Q1ntitamVqcmQVlJmOe/cooIeCNLE=\nR:prune.go\na:0:0:444\nZ:Q1xLAKg3lXjHr0DDae+ixMuJUfqRM=\nR:reload.go\na:0:0:444\nZ:Q1TDVPSvFJsvTnyx84HNqW/r7xEmQ=\nR:reload_test.go\na:0:0:444\nZ:Q1gLe88rB2oWYbdoNnfJVIla9Jwco=\nR:reload_unix.go\na:0:0:444\nZ:Q13FdWyHfPyb3NVAb+AIcXdsfKoec=\nR:reload_windows.go\na:0:0:444\nZ:Q15vD1zSKU+Ix9JLRVEjaXCUAMX5Y=\nR:rename.go\na:0:0:444\nZ:Q19WDqydEAx5xcdf5zX8mMnUbMgL0=\nR:resize.go\na:0:0:444\nZ:Q1+iYKBvZrpHOphNLMqFjkFCUsyAU=\nR:resize_test.go\na:0:0:444\nZ:Q1uoYJqbjtaQrWkIdaP+/MQIelMk0=\nR:restart.go\na:0:0:444\nZ:Q1RawcGBxICppDnzNdFAKLQt1kXuY=\nR:runtime_unix.go\na:0:0:444\nZ:Q1fEh32A1EnjEpZpF6Eaf+ODrFIVc=\nR:runtime_windows.go\na:0:0:444\nZ:Q1PsY59RaBBKBksnlemX48a/mpXsw=\nR:seccomp_disabled.go\na:0:0:444\nZ:Q10+aE9YViZDESiwzDoZpWH7DZPAU=\nR:seccomp_linux.go\na:0:0:444\nZ:Q1+1lMA/96XWbnlfPEksiXfdLcgTc=\nR:seccomp_unsupported.go\na:0:0:444\nZ:Q13EhgNl3vEsA/G+DZf0FZuInz9gI=\nR:secrets.go\na:0:0:444\nZ:Q1vHj7xjGRCDyuWu7Bp/zq1msSrik=\nR:secrets_linux.go\na:0:0:444\nZ:Q14qu7NjVjksemt7DMgYaBKoUtdgk=\nR:secrets_unsupported.go\na:0:0:444\nZ:Q1hPOtQr8CDMWNjl/qKi9z4IK0mMY=\nR:secrets_windows.go\na:0:0:444\nZ:Q14qu7NjVjksemt7DMgYaBKoUtdgk=\nR:start.go\na:0:0:444\nZ:Q1+fbpIL4H6KP7EfLPXMbThY7bjwg=\nR:start_unix.go\na:0:0:444\nZ:Q1jIUmDYrCl0Sefxwee0q0hdqS8vg=\nR:start_windows.go\na:0:0:444\nZ:Q11VG9R5X6mZ9DqsFYiQxnbQ+I3x0=\nR:stats.go\na:0:0:444\nZ:Q1eKqetg7Xx8AjCuAAfsCtj+bOf2Y=\nR:stats_collector.go\na:0:0:444\nZ:Q1cEFp6UikYrC+qn9Fs6WE7PmEeU0=\nR:stats_unix.go\na:0:0:444\nZ:Q1xawKfIfxRcA10zAUz67Q8EQ5HDY=\nR:stats_windows.go\na:0:0:444\nZ:Q1V3D5+y2S5UIYMlsf35QpqKTblYw=\nR:stop.go\na:0:0:444\nZ:Q1acXb8FSR7ZJmdvS0RnnT0uj7Gdo=\nR:top_unix.go\na:0:0:444\nZ:Q1YOsOBXoL3SQIlDlGo6LUxpDmaWY=\nR:top_unix_test.go\na:0:0:444\nZ:Q1gxmCAJap6o+4nH37iWg7QiNxhhA=\nR:top_windows.go\na:0:0:444\nZ:Q15XJuGuiamvcCWRk9xbh/nPlFqOU=\nR:trustkey.go\na:0:0:444\nZ:Q15MF/snSaHVfspD3WHPO/V48G4gY=\nR:trustkey_test.go\na:0:0:444\nZ:Q19/NBUc4Ujq+HBvdxB9jSZbn2r44=\nR:unpause.go\na:0:0:444\nZ:Q15GSZz9JlG69Zm9qKC0da9NV0smg=\nR:update.go\na:0:0:444\nZ:Q1T8wB0aeWqv1Ji2Pkt619+U7h4A0=\nR:update_linux.go\na:0:0:444\nZ:Q1jfCKhRJrQqSOHEbEsxDayRomOeM=\nR:update_windows.go\na:0:0:444\nZ:Q1Q3UU0npsIEyVbPLlb5M/aEY+mIY=\nR:util_test.go\na:0:0:444\nZ:Q1wvig968/xL6j9mtR9M/sCsSbLn4=\nR:volumes.go\na:0:0:444\nZ:Q1GfWpbtisY1tTQCcbIOwlcYm1wgE=\nR:volumes_linux.go\na:0:0:444\nZ:Q10NuwvCU3X4hYyS9zysvDTe+qKVw=\nR:volumes_linux_test.go\na:0:0:444\nZ:Q1clAMxlBh6A01a8mlU74MOweMphk=\nR:volumes_unit_test.go\na:0:0:444\nZ:Q1E3pUPwG4uJqgWR7vuM52MdcA4WE=\nR:volumes_unix.go\na:0:0:444\nZ:Q1LRfaKklQRaqo51tZNQ/gJupeJvY=\nR:volumes_unix_test.go\na:0:0:444\nZ:Q1CNx6Wu9oiqVRdgQ5llDvikFBOoU=\nR:volumes_windows.go\na:0:0:444\nZ:Q1usjKhGGfFIg6Kw6PsVILhIC6SUQ=\nR:wait.go\na:0:0:444\nZ:Q1apqDdfSSFZQvxTSHxEcNvbdgp8M=\nR:workdir.go\na:0:0:444\nZ:Q1c9N90g4lD/jmocZwIdM071TA0Go=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster\nM:0:0:555\nR:cluster.go\na:0:0:444\nZ:Q1Kz1gdS/ksnqaqvIjpThPvgpHcho=\nR:configs.go\na:0:0:444\nZ:Q1BIu0UNGIWEfMni5H40ixcTH2ar8=\nR:errors.go\na:0:0:444\nZ:Q1FAv2pgH7J2OacDBXu1zELrJ6Qpg=\nR:filters.go\na:0:0:444\nZ:Q1uM8+ngSIyoh4gGjWeT9kPD5gi5o=\nR:filters_test.go\na:0:0:444\nZ:Q1PmuKfq0shi/LYh8SnYjqgq55RF8=\nR:helpers.go\na:0:0:444\nZ:Q1F6VuSWISm7BvklFiRcZ7fbr9HMQ=\nR:listen_addr.go\na:0:0:444\nZ:Q1cm7USE/qJs/7D7dJJQrGOiKjchA=\nR:listen_addr_linux.go\na:0:0:444\nZ:Q1uTahU2bQuRfF6Uuq3yvFboFf4UQ=\nR:listen_addr_others.go\na:0:0:444\nZ:Q1bsUvnyybzQjfvhYTglBrJE6FjR8=\nR:networks.go\na:0:0:444\nZ:Q1dPYHnFrj7mZ/P1JX2Kh+1GFs7CE=\nR:noderunner.go\na:0:0:444\nZ:Q1/DbC8188ph6x9ysEvS2bPsFrIJk=\nR:nodes.go\na:0:0:444\nZ:Q1e74QvBWtQgaUX7qXm4zFlWPS7Js=\nR:secrets.go\na:0:0:444\nZ:Q1HeJZFnpb2o56wkNFNErKliLY6AU=\nR:services.go\na:0:0:444\nZ:Q1RZSmIh9O2eCvPlsQ8oiq1XtNEv4=\nR:swarm.go\na:0:0:444\nZ:Q19Klyp25TBvQKs+nWHcrz8ADQVTE=\nR:tasks.go\na:0:0:444\nZ:Q1xSWgkwBmEmbpHgAwPW0Mr7XgErg=\nR:utils.go\na:0:0:444\nZ:Q1gbeClC2k4vfkxFwJYa6rmKfIZ0s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/controllers\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/controllers/plugin\nM:0:0:555\nR:controller.go\na:0:0:444\nZ:Q1QehMpOsPVal75dXVdjlrV7XvGQI=\nR:controller_test.go\na:0:0:444\nZ:Q1OWP4CmSbZe28oG6PGGxesokgXwQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/convert\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1EF92nSeKlBbyjdSWD9SVuVMTASw=\nR:container.go\na:0:0:444\nZ:Q1UJ04rPqb/8z3mGahq2tEmE5Pzxg=\nR:network.go\na:0:0:444\nZ:Q1nMHjzjSd8wSz7tD6aa2CjkrQjHA=\nR:network_test.go\na:0:0:444\nZ:Q1mYjOIbF5Vt7848sQjabKPRiW9GM=\nR:node.go\na:0:0:444\nZ:Q1knMqI0QHG6FAjJxunQOLW3B9f04=\nR:secret.go\na:0:0:444\nZ:Q1bCjvNUwFDUSVRekDPf+N0oHs4fM=\nR:service.go\na:0:0:444\nZ:Q193Wy04jD3qXTq+EyX4XUKHxWVW0=\nR:service_test.go\na:0:0:444\nZ:Q1p7cG1c38slO0Rrsf5h1pHL9gjKE=\nR:swarm.go\na:0:0:444\nZ:Q1eCGcpVHBx55FEgdcWgL9a0DRwU8=\nR:task.go\na:0:0:444\nZ:Q1rF1vzu69L0zIwyte7Rasnfkbl5c=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/executor\nM:0:0:555\nR:backend.go\na:0:0:444\nZ:Q1Cnf6wcdIZgv7xSjMs/P/XwQ0ANk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/executor/container\nM:0:0:555\nR:adapter.go\na:0:0:444\nZ:Q1VG0p56LAVRd49/fvMDDwQKiubP4=\nR:adapter_test.go\na:0:0:444\nZ:Q1mVABzR+pstQgltXlKMdzDgJGXnw=\nR:attachment.go\na:0:0:444\nZ:Q1WvCjFaTeg2yl2LUScIU7HdmQdYo=\nR:container.go\na:0:0:444\nZ:Q14Z5P6wRoLYa/Pm17xz8eRq19t5w=\nR:container_test.go\na:0:0:444\nZ:Q19rb9/rqwJGVsyV7i1AR19h3K8rM=\nR:controller.go\na:0:0:444\nZ:Q1OtsWn33q2XEb/CLHxFbdayrJs5o=\nR:errors.go\na:0:0:444\nZ:Q1m8nocagOqiDPVvayFrdlDj/ANXs=\nR:executor.go\na:0:0:444\nZ:Q1wmcuKGDl+Wu5YUOoGhCJLZpPmJY=\nR:health_test.go\na:0:0:444\nZ:Q1HaR7AcxD9/cEQQmOxBwbvhThncQ=\nR:validate.go\na:0:0:444\nZ:Q1FeFQhc80QDUffNv1DjuOAOujwMA=\nR:validate_test.go\na:0:0:444\nZ:Q16R//FIyrs4h1x+B12qiNF1xmTaY=\nR:validate_unix_test.go\na:0:0:444\nZ:Q1Ue6P06mSH4m+r2PgdFWKsfU4EgA=\nR:validate_windows_test.go\na:0:0:444\nZ:Q1zCVBxj+Berahtp8lS5WHFRC1L44=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/cluster/provider\nM:0:0:555\nR:network.go\na:0:0:444\nZ:Q19IWvI0Jrekfu7KeYynK1MgFLWgU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/config\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1X3/Tmctw9cRIHbv8Bvp+lLI7+m0=\nR:builder_test.go\na:0:0:444\nZ:Q1Mk1TVGPHLSY8Ri5nN1bHs/2DzVI=\nR:config.go\na:0:0:444\nZ:Q1dkIxiVM602DE7P7SDZu7H9GgDcw=\nR:config_common_unix.go\na:0:0:444\nZ:Q1Lq2o8jJwQDehKiyGh/r46/PBilc=\nR:config_common_unix_test.go\na:0:0:444\nZ:Q1Q5A7qUf9GTscPQaFdF0V8EkDIOk=\nR:config_test.go\na:0:0:444\nZ:Q1ZhM2OVDoSwCfZco1bPgoP78dRQQ=\nR:config_unix.go\na:0:0:444\nZ:Q1t8wS4nzE1wGewVMjB1g/pTNgouQ=\nR:config_unix_test.go\na:0:0:444\nZ:Q1rFvPphi6unLbuTdUbp2Vci1xjfE=\nR:config_windows.go\na:0:0:444\nZ:Q10jbdP+wZn5jE0ezdIcDxeG7pz9Y=\nR:config_windows_test.go\na:0:0:444\nZ:Q1HzLpQSYxj5j2gKxxnZkWBstemFk=\nR:opts.go\na:0:0:444\nZ:Q1JZqOK8TwifnzVYVozKYIzSOfIs8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/discovery\nM:0:0:555\nR:discovery.go\na:0:0:444\nZ:Q1i/46uLjpC3+40bPFfGMLCuxx+v8=\nR:discovery_test.go\na:0:0:444\nZ:Q1x6pdfLzpqXXLv0gwvbyl5BsI23U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/events\nM:0:0:555\nR:events.go\na:0:0:444\nZ:Q1YUUAFkNJ+YESNQ5kXram8RXfpxo=\nR:events_test.go\na:0:0:444\nZ:Q18q8wfkHH/dnYYW21rG4cbzl2yy8=\nR:filter.go\na:0:0:444\nZ:Q1NzYi3gTmgm2Bgd5RJpr+U4jnkvo=\nR:metrics.go\na:0:0:444\nZ:Q1RahRbR/1X4dKWlSVfSMqTEFkx58=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/events/testutils\nM:0:0:555\nR:testutils.go\na:0:0:444\nZ:Q1j80wrZAiXTTPRb78bUXyZw3QRXg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/exec\nM:0:0:555\nR:exec.go\na:0:0:444\nZ:Q1mU6m1l+vGTXL4pBP87xlNxjj6TU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver\nM:0:0:555\nR:counter.go\na:0:0:444\nZ:Q1hwW1fgu/6kLq3hsEBJisZs4Fh5I=\nR:driver.go\na:0:0:444\nZ:Q1Ixd9GwP3nF9F+sqswLdkddMiaB8=\nR:driver_freebsd.go\na:0:0:444\nZ:Q13qk25DROb/6ncqngai33ouVBreU=\nR:driver_linux.go\na:0:0:444\nZ:Q1ZOZnym3IwTQchBeOQu1WmNh75E8=\nR:driver_test.go\na:0:0:444\nZ:Q1g6MrpaGfXl6L8JUzgGMFY4tOtug=\nR:driver_unsupported.go\na:0:0:444\nZ:Q1iTu/LHgeE/pettKaifhsEKWoVa8=\nR:driver_windows.go\na:0:0:444\nZ:Q1luUO7GgpyrVZSlCAE2sW3ymsoAU=\nR:errors.go\na:0:0:444\nZ:Q1I+ilGSi/OTp5squzyHfnmSGpFtA=\nR:fsdiff.go\na:0:0:444\nZ:Q1xId1Bex0AI9N0ZrHHFl3RSbCFNQ=\nR:plugin.go\na:0:0:444\nZ:Q1bBIwJDQh/ZBCo2waq7SEL6OsTUg=\nR:proxy.go\na:0:0:444\nZ:Q1Rgi7PW3qTi6INFDAJUotUNA8N0g=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/aufs\nM:0:0:555\nR:aufs.go\na:0:0:444\nZ:Q1ILmLurECXufKZ3Eli3mMWGgUfv0=\nR:aufs_test.go\na:0:0:444\nZ:Q13Y1KDA5ltsK/ZmcrTgvkYlcSixk=\nR:dirs.go\na:0:0:444\nZ:Q1CKFaznCykAVeZfSYW1BlByR1VfU=\nR:mount.go\na:0:0:444\nZ:Q177SEVBBpyx9H8BbHeTpe04URuZ4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/btrfs\nM:0:0:555\nR:btrfs.go\na:0:0:444\nZ:Q1V6hDDyaYW8M1CZ16/rcJ/XDBb3I=\nR:btrfs_test.go\na:0:0:444\nZ:Q18T17xd+3GE9vUj/53K/PC2WA7jg=\nR:dummy_unsupported.go\na:0:0:444\nZ:Q1HeOjuPB+NboTcG5V6sg80cNVv2w=\nR:version.go\na:0:0:444\nZ:Q1T9z5ktavrHdkLx41a7WN6OGhBTE=\nR:version_test.go\na:0:0:444\nZ:Q1vwZf/VyRWUj5EeK1MaE9tfxFODw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/copy\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q18g5fm3VQyOhgLiwPm+TTZbXMk0k=\nR:copy_test.go\na:0:0:444\nZ:Q19qq3gVriYOrLeNN9WpuewDf2TYs=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/devmapper\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1iFd5uZIkXSRw0XFOX593GQK9YE4=\nR:device_setup.go\na:0:0:444\nZ:Q1jDlyQ8wWgWY9Mibt/Cy0qn23UA0=\nR:deviceset.go\na:0:0:444\nZ:Q1P9Zv0o5VMiQLoI051EjoNE983oQ=\nR:devmapper_doc.go\na:0:0:444\nZ:Q1QtY+ImEHSYFiGESObA4ximPkIQs=\nR:devmapper_test.go\na:0:0:444\nZ:Q19Vrac2KN5r2eWSsK+PtkRKMWFhA=\nR:driver.go\na:0:0:444\nZ:Q1IH7CDRFVzKMKwmb/MUADje/8VFE=\nR:mount.go\na:0:0:444\nZ:Q1h5gI5HneSR7tgfuo83AeqV7W7bo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/fuse-overlayfs\nM:0:0:555\nR:fuseoverlayfs.go\na:0:0:444\nZ:Q13daBgmANsdJdVcSS93JT5OuADgo=\nR:fuseoverlayfs_test.go\na:0:0:444\nZ:Q1iDgJdhpSsC/CxdcJSwVlEh/4OCA=\nR:fuseoverlayfs_unsupported.go\na:0:0:444\nZ:Q12b8R4rkq9Z+hut/zxuPYO1qc07I=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/graphtest\nM:0:0:555\nR:graphbench_unix.go\na:0:0:444\nZ:Q1R4POs02tAlhKyBb4iE6vicZCCbc=\nR:graphtest_unix.go\na:0:0:444\nZ:Q1ArTZVi1oGmZtEkIUA0sUzuekQbg=\nR:graphtest_windows.go\na:0:0:444\nZ:Q1eWVmzjBsAlnSLU720IDbIKjviZQ=\nR:testutil.go\na:0:0:444\nZ:Q1hT0MIphKCWwq43pbD9XbBQXJVtg=\nR:testutil_unix.go\na:0:0:444\nZ:Q1Gtyeb4gKs+/DYnCRqBw3Gd3UZLc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/lcow\nM:0:0:555\nR:lcow.go\na:0:0:444\nZ:Q1LMjcMbRBNKBmpcsZFmb2vjSmc1Y=\nR:lcow_svm.go\na:0:0:444\nZ:Q1ubuLdk9uE08/u/JRnHH8u6Sqm0A=\nR:remotefs.go\na:0:0:444\nZ:Q1grw1C788Z5df5ZgXCPmEXWWAlxM=\nR:remotefs_file.go\na:0:0:444\nZ:Q1LzoGIUi/3d7WQFFjhBvKNo0qJXQ=\nR:remotefs_filedriver.go\na:0:0:444\nZ:Q1iTH0r8/bQdgWMUP4Wassa7lpTeI=\nR:remotefs_pathdriver.go\na:0:0:444\nZ:Q1hkqham2W5fLAyRsOZdLgGnyE4n0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/overlay\nM:0:0:555\nR:overlay.go\na:0:0:444\nZ:Q1NMMlBCrwlE6wbRS+embt/DOBPBk=\nR:overlay_test.go\na:0:0:444\nZ:Q1tNhnkom72GU3lYcZjjNtraYPBX4=\nR:overlay_unsupported.go\na:0:0:444\nZ:Q1Giy/z+k0xLyoYW+XaMUQb6Fd8j8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/overlay2\nM:0:0:555\nR:check.go\na:0:0:444\nZ:Q1a2xoNt4Fu+YgbUNnUFYmaJb/1J4=\nR:mount.go\na:0:0:444\nZ:Q1jvMiK7GBTm8zy1TgBvf62Os6KCw=\nR:overlay.go\na:0:0:444\nZ:Q1IVA3uD2XgPvAZGbZtCisRSc5Cgk=\nR:overlay_test.go\na:0:0:444\nZ:Q1AgBtPdMpKKOzuyzirZDynweloCA=\nR:overlay_unsupported.go\na:0:0:444\nZ:Q1wOYmYq4A7VSLvYVX+ClAEutHN3c=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/overlayutils\nM:0:0:555\nR:overlayutils.go\na:0:0:444\nZ:Q1j4L/LeH3NZ2tP1DiCmBYJy/ORJM=\nR:randomid.go\na:0:0:444\nZ:Q1sPDm49arhVlvq34r7DL05cjoF/M=\nR:userxattr.go\na:0:0:444\nZ:Q1ULNAhE3NeCje6+Xps8ETau9qSwU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/register\nM:0:0:555\nR:register_aufs.go\na:0:0:444\nZ:Q1zCobuml1gI40umAjrL0e6McGdI0=\nR:register_btrfs.go\na:0:0:444\nZ:Q1TC5Pwi6k/Em6UdfkN5bl9F8ij6s=\nR:register_devicemapper.go\na:0:0:444\nZ:Q1GbcbFPMYg0rQKYgj9D6cxpvWcb0=\nR:register_fuseoverlayfs.go\na:0:0:444\nZ:Q1OIqdMkZuOXAWMDdD27YzPbKTCXY=\nR:register_overlay.go\na:0:0:444\nZ:Q1cccfnM2y/BJK4OYdHUtjM1bc0WU=\nR:register_overlay2.go\na:0:0:444\nZ:Q1YwtTynzpZVUSW4jDOyr887f004c=\nR:register_vfs.go\na:0:0:444\nZ:Q1Z+B+OR14w1PhSccyABLtXK0qQJc=\nR:register_windows.go\na:0:0:444\nZ:Q1miynJ7vS+37s19QVuT2E3Rqin0k=\nR:register_zfs.go\na:0:0:444\nZ:Q10ps/UJBKcMpq4neNVAmYnyfKsA0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/vfs\nM:0:0:555\nR:copy_linux.go\na:0:0:444\nZ:Q1M50FwLyaZq1tDeuioivhKj0uCqc=\nR:copy_unsupported.go\na:0:0:444\nZ:Q126AIuKKybfOPl4hcSuaunDphq0U=\nR:driver.go\na:0:0:444\nZ:Q1jpMAsC/ZRF630EgrxJ66aunZRAI=\nR:quota_linux.go\na:0:0:444\nZ:Q11IGKjpnHs/To/sO7Aogo6Ca65LQ=\nR:quota_unsupported.go\na:0:0:444\nZ:Q1B4LSWRwYxr2LjYQtTcwoTBKXCHc=\nR:vfs_test.go\na:0:0:444\nZ:Q181was9J8yt5mRzEaCSRItpdKgvM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/windows\nM:0:0:555\nR:windows.go\na:0:0:444\nZ:Q1hMX9bLzQ0RqNx5w2AgKgBVS9xE0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/graphdriver/zfs\nM:0:0:555\nR:MAINTAINERS\na:0:0:444\nZ:Q1t7YIDhrqPutAkpidutJGNnQR7tc=\nR:zfs.go\na:0:0:444\nZ:Q1wwZAZTfVvJqq3C0Xzxn6Wdlpprs=\nR:zfs_freebsd.go\na:0:0:444\nZ:Q1D2b+fRNkfKj30VRaVLI4cRNebDg=\nR:zfs_linux.go\na:0:0:444\nZ:Q1n3SJF04nJ2qRYwRVmPCXeB8xsJo=\nR:zfs_test.go\na:0:0:444\nZ:Q19dhdkL/a3K4TWgenHp0N/W4IuTo=\nR:zfs_unsupported.go\na:0:0:444\nZ:Q16bGET/DLgBLbGyreCmshaEJliFI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/images\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1x716A7RIXoWSWfQRVR3sS038F/s=\nR:image.go\na:0:0:444\nZ:Q1Xp6+W4CRMQokVhBy1UDFZ3VV3VE=\nR:image_builder.go\na:0:0:444\nZ:Q10vLxfkEAoAgzUxOlJ/pAWBDdphs=\nR:image_commit.go\na:0:0:444\nZ:Q1hHu48D9AOpiqiiEfApHMELrlwGU=\nR:image_delete.go\na:0:0:444\nZ:Q1VV4RqNQ2Br2EJpXDjz/2w/ksDA4=\nR:image_events.go\na:0:0:444\nZ:Q1SuVTcTXzP01BvSD99lQLr5mxUIE=\nR:image_exporter.go\na:0:0:444\nZ:Q1J7B0+I3mN9sX8n6uxSJvSBARUuQ=\nR:image_history.go\na:0:0:444\nZ:Q1Ysn3Y7xgIwzlLjebQ7V1+e8StM8=\nR:image_import.go\na:0:0:444\nZ:Q1EUWxro0F3/7qoZOVhIRG3bfP1ts=\nR:image_inspect.go\na:0:0:444\nZ:Q1mC6Et1pEnKKHS86pDeo6/RvpvSU=\nR:image_prune.go\na:0:0:444\nZ:Q1+BSTWWHBhLmEUWW7jMeHnh17OqA=\nR:image_pull.go\na:0:0:444\nZ:Q1ygx3hcBPyXQc+qFSTLp8ZLisTPg=\nR:image_push.go\na:0:0:444\nZ:Q1qkoplPE55h3NW3BKobytGPXl9GY=\nR:image_search.go\na:0:0:444\nZ:Q1yNtqgZJHpiXnFbjEuSvqeMo/l3k=\nR:image_search_test.go\na:0:0:444\nZ:Q1KXFw8OtyFENv0ZsHUVvbgarQiQo=\nR:image_tag.go\na:0:0:444\nZ:Q15FmHeg+gqtE3M2aRupv/OGusvzc=\nR:image_unix.go\na:0:0:444\nZ:Q1dDPIKaC1DwKTK/luU0xY+l03YiI=\nR:image_windows.go\na:0:0:444\nZ:Q1aNlF5Xh8smrT2TOaPvZMgguqCaM=\nR:images.go\na:0:0:444\nZ:Q1HCAZXzToQRlpq1tLnimIlIN0MOk=\nR:images_test.go\na:0:0:444\nZ:Q18r8kkQPi+N85WpOD02Dh1YsAdmg=\nR:locals.go\na:0:0:444\nZ:Q1HieOT+/L6HaVhY/07+zsBSIM6Jk=\nR:service.go\na:0:0:444\nZ:Q1A0okNLGwR2F9wDrascYtMXG4HTI=\nR:store.go\na:0:0:444\nZ:Q1FuD83Xvk4PGA6XR3W4ki2G4CEH0=\nR:store_test.go\na:0:0:444\nZ:Q1eKPdOEWMg+fmoMh8CKDqs40DTDU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/initlayer\nM:0:0:555\nR:setup_unix.go\na:0:0:444\nZ:Q157mAj0S1EHKdq3E167qjj6Kduoo=\nR:setup_windows.go\na:0:0:444\nZ:Q1ON+FgLkDln7VmE9WDqm7/WzUULg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/links\nM:0:0:555\nR:links.go\na:0:0:444\nZ:Q1uidka22wzKu+jf11u4+3OSCt6n4=\nR:links_test.go\na:0:0:444\nZ:Q1GGWGIPDsJRgIZAhzW/Wykhhqx1E=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/listeners\nM:0:0:555\nR:group_unix.go\na:0:0:444\nZ:Q1a7ihn3KtFgxRTRr16BfxgZG4VWU=\nR:listeners_linux.go\na:0:0:444\nZ:Q1VaZUiUYoYdyfPx5uHtO6hHwuiS4=\nR:listeners_windows.go\na:0:0:444\nZ:Q1acXpKXOYi5I0aePf0DSGZuszCWQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger\nM:0:0:555\nR:adapter.go\na:0:0:444\nZ:Q1Bb6FWA1K7yV9UQFvjx89v0Gdbbw=\nR:adapter_test.go\na:0:0:444\nZ:Q1oZO2sIUu9YWUMfc7IE3qXxSu2TE=\nR:copier.go\na:0:0:444\nZ:Q1FqdB458s1TXaxcBLpO7h9Ur5rVU=\nR:copier_test.go\na:0:0:444\nZ:Q1CQWAHqnjL+1g0mbzdv7D5PfN6ys=\nR:factory.go\na:0:0:444\nZ:Q1PzVggICco9De2dVO51NsqK0xPTI=\nR:log_cache_opts.go\na:0:0:444\nZ:Q15TAZ+sCN8+Txx+Exypp8iCFi+ec=\nR:logger.go\na:0:0:444\nZ:Q1Mkof83d6qu2+OH4BOeVJHZJ6pw4=\nR:logger_test.go\na:0:0:444\nZ:Q1OmSSUZPMxn2bGYffNbEGaG8bjFU=\nR:loginfo.go\na:0:0:444\nZ:Q1uhlBUtbxdFfS7oND2BgWxZ7seWE=\nR:metrics.go\na:0:0:444\nZ:Q1Q3kend1TxFcq4jrlLK2PmXTa/ZA=\nR:plugin.go\na:0:0:444\nZ:Q1Iku6kbqOUfQgBFlY0HsStMN/WEk=\nR:plugin_unix.go\na:0:0:444\nZ:Q18arEPcHQkFW8YV/gO2AKPOo6Vec=\nR:plugin_unsupported.go\na:0:0:444\nZ:Q1MY4cVSMpcdWtqJiHx7OjQ1870MI=\nR:proxy.go\na:0:0:444\nZ:Q1bIQfGtAzDOprKhJ75aErDFYNCn0=\nR:ring.go\na:0:0:444\nZ:Q1bD4bju38rQhfmLZVPxeag0c8tJc=\nR:ring_test.go\na:0:0:444\nZ:Q1nQTdnMXPW9f1Wj1Y1UmL/k/quu0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/awslogs\nM:0:0:555\nR:cloudwatchlogs.go\na:0:0:444\nZ:Q1G0Dwu9el22RFfvtChhbI5pbOs2I=\nR:cloudwatchlogs_test.go\na:0:0:444\nZ:Q1S1Typ0VpuVehtYzeETQIsNd3mg4=\nR:cwlogsiface_mock_test.go\na:0:0:444\nZ:Q1mAqzWl4DXAwWObY0dkosHFgpxoo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/etwlogs\nM:0:0:555\nR:etwlogs_windows.go\na:0:0:444\nZ:Q1zLZylzQRh/28JoxoVR3TI+18gQw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/fluentd\nM:0:0:555\nR:fluentd.go\na:0:0:444\nZ:Q1u9898sqwuMwrT4/SuWcIRXMwgMk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/gcplogs\nM:0:0:555\nR:gcplogging.go\na:0:0:444\nZ:Q1aaDy9YLlBL3McbfATbV1n1DTvBE=\nR:gcplogging_linux.go\na:0:0:444\nZ:Q1i1VC+vVxrlycTU8IJ+hNKY6NWCk=\nR:gcplogging_others.go\na:0:0:444\nZ:Q1SLj31sDiyu1QX5+26yEOvlsALyk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/gelf\nM:0:0:555\nR:gelf.go\na:0:0:444\nZ:Q1RHPkTAcRZGNdjTrK8t8yt4ID2WM=\nR:gelf_test.go\na:0:0:444\nZ:Q15UshUl6woDLD1c+qgEXacdfIRoc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/journald\nM:0:0:555\nR:journald.go\na:0:0:444\nZ:Q1fj8BuH3Jb4e9gc5YRqSOkyOYJTY=\nR:journald_test.go\na:0:0:444\nZ:Q1nT4BJqJkN9TfkDM+Zs0mUG2leD0=\nR:journald_unsupported.go\na:0:0:444\nZ:Q1Q+FQ7HMVevw1mv/BSycdkQKGi0c=\nR:read.go\na:0:0:444\nZ:Q1SQRJdYPCRK9MNd1b47CR0UcQvkY=\nR:read_native.go\na:0:0:444\nZ:Q1Anxffxtowx2HjiL7LlM7YocGMUU=\nR:read_native_compat.go\na:0:0:444\nZ:Q1UoBcqLEu6d1WibtkH/EosgUm/vE=\nR:read_unsupported.go\na:0:0:444\nZ:Q1JH26gHtM+tFrNChh6KwrH7GWPAc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/jsonfilelog\nM:0:0:555\nR:jsonfilelog.go\na:0:0:444\nZ:Q1bw7THrtYvLsLcL5aA/L7UsY/Tqk=\nR:jsonfilelog_test.go\na:0:0:444\nZ:Q1TiaRqGlIq2R9sncz7daeQxrEvSk=\nR:read.go\na:0:0:444\nZ:Q1WgqBcXad6to3LxyBsH+Wuvy5p7g=\nR:read_test.go\na:0:0:444\nZ:Q1ZwMXPzZW+bfE1NpH447akjGBByQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/jsonfilelog/jsonlog\nM:0:0:555\nR:jsonlog.go\na:0:0:444\nZ:Q1iUvsAh3/Qd/sg+c8tqvyuhbmWGY=\nR:jsonlogbytes.go\na:0:0:444\nZ:Q19bs7BM0T7hUc1Yd1tQfIqNeHysw=\nR:jsonlogbytes_test.go\na:0:0:444\nZ:Q1exFl9J1bfwVThQPv6CVoAc23wiI=\nR:time_marshalling.go\na:0:0:444\nZ:Q1Xn0KMNCtPhttKb9qeNA8M2Sd8/Q=\nR:time_marshalling_test.go\na:0:0:444\nZ:Q1gnnl19SskBK+cwi7SjIp5VCbmX4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/local\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1rYU4KeGikY7j8+NjYT/eKObKmyk=\nR:doc.go\na:0:0:444\nZ:Q1Cpi9ufMiW2I+nAhilH0gni+SC44=\nR:local.go\na:0:0:444\nZ:Q1DhTkCxWVA3FGXQSxRrSqVi3+N98=\nR:local_test.go\na:0:0:444\nZ:Q1qxJl5qC+5ZtrkOBHQd+S0oMvBBk=\nR:read.go\na:0:0:444\nZ:Q1BaWnJk4tN86mz0jv3fAC+wLG7sY=\nR:read_test.go\na:0:0:444\nZ:Q1R/ffLZW2gIk9kS62NfXH4zzRetA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/logentries\nM:0:0:555\nR:logentries.go\na:0:0:444\nZ:Q17nfupnHsoPDrNvOX8fOz7dZIt9E=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/loggerutils\nM:0:0:555\nR:file_unix.go\na:0:0:444\nZ:Q1Ld+JYgh0ZRMbLLFjHuX6RBt4ypY=\nR:file_windows.go\na:0:0:444\nZ:Q1XS8eT7u5yfEZfHIL8FYWMw4/6c8=\nR:file_windows_test.go\na:0:0:444\nZ:Q1PUPs0Wve2tP/pW50MC3jPqUWOG4=\nR:follow.go\na:0:0:444\nZ:Q1skjNTqI9M/SfpacnAX3pZjL1Dn4=\nR:follow_test.go\na:0:0:444\nZ:Q1sfv3zZRIgzWhQqvMrjqaWhiKbp0=\nR:log_tag.go\na:0:0:444\nZ:Q1lANQ8uSJ58HckbE5t8fyNR8ltl4=\nR:log_tag_test.go\na:0:0:444\nZ:Q1r4dnph+sU08Rsa4tIjuTDdWnh+g=\nR:logfile.go\na:0:0:444\nZ:Q1XTrH9HXWhIHqTgLqPCNldEIJbNo=\nR:logfile_test.go\na:0:0:444\nZ:Q1eNb2nnpVsk+y/1trtGBf8jpKdvw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/loggerutils/cache\nM:0:0:555\nR:local_cache.go\na:0:0:444\nZ:Q1sMZQR8n8IWW8JHZOrE0JD52TGME=\nR:log_cache_test.go\na:0:0:444\nZ:Q1WCR8C5t9wDmDtqgda29PAf9wYrs=\nR:validate.go\na:0:0:444\nZ:Q1fLu8zdhq8zSzM3jLVPt9YNzPN/I=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/splunk\nM:0:0:555\nR:splunk.go\na:0:0:444\nZ:Q1boBXqvAm5XlmNrDkjx1a6o/1+0s=\nR:splunk_test.go\na:0:0:444\nZ:Q18/bYn+TWjO/RBICgFBXG/3tRQ7E=\nR:splunkhecmock_test.go\na:0:0:444\nZ:Q1PUjl6vQZ6o15yIWQcLOY33ygSQg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/syslog\nM:0:0:555\nR:syslog.go\na:0:0:444\nZ:Q1R6Q5L/LcG2MCR0Rlu05ZHlPbei4=\nR:syslog_test.go\na:0:0:444\nZ:Q1hO4vdHoDpdNQdGHWxaXIcwTSO0k=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/logger/templates\nM:0:0:555\nR:templates.go\na:0:0:444\nZ:Q1L3Xw7E8xkuqN3tJykdDRVwA3dok=\nR:templates_test.go\na:0:0:444\nZ:Q1DtnT8HIyOchdgYWbReZnGdN5vFE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/names\nM:0:0:555\nR:names.go\na:0:0:444\nZ:Q1fgTdFn2KUUgAlce+6drI+lhHcDo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/network\nM:0:0:555\nR:filter.go\na:0:0:444\nZ:Q1CkzJpFWSMR/+vx13ZRlL+VPs47Y=\nR:filter_test.go\na:0:0:444\nZ:Q1SQmisN/ZARvOwe7pGBSWCay4aQo=\nR:settings.go\na:0:0:444\nZ:Q1kD6ryFwoaAU2YzdYZzMd7xJI5xc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/stats\nM:0:0:555\nR:collector.go\na:0:0:444\nZ:Q15YXR5VNmMBbSj7TU1qh3vh3ufME=\nR:collector_unix.go\na:0:0:444\nZ:Q1nsATQr5z7rfzJyti42/eWeNcGHw=\nR:collector_windows.go\na:0:0:444\nZ:Q1cpJrpSflvCG34jcPId+ZCtdwf9U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/daemon/testdata\nM:0:0:555\nR:keyfile\na:0:0:444\nZ:Q19teaDUMgYvhbv5swhj22BJx4p4w=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1qkWTCp6rqOeqZX8pF9qOXZyer5A=\nR:errors.go\na:0:0:444\nZ:Q1LMNh+AN9dCof97pNrfv38YFes84=\nR:errors_test.go\na:0:0:444\nZ:Q1Yrv8cl8+GLs0mWHhdB0odt8wyD0=\nR:manifest.go\na:0:0:444\nZ:Q1xoc5IqZxIojHClv2ilpYIFr1Q3w=\nR:manifest_test.go\na:0:0:444\nZ:Q1ZUsVcmtgX0LoaNNZkV2jpZ0vKKk=\nR:pull.go\na:0:0:444\nZ:Q1darHDgZtLYJmeg8t56AfpJQtuLs=\nR:pull_v2.go\na:0:0:444\nZ:Q18tiAUwj6GtAkHeIVKKF1+halIyA=\nR:pull_v2_test.go\na:0:0:444\nZ:Q1iAAY6Rgk1kiTRzZG6I5yr8i/0Ss=\nR:pull_v2_unix.go\na:0:0:444\nZ:Q1RxIYGVwKnyLOD/uNi4ekZY3XeDI=\nR:pull_v2_windows.go\na:0:0:444\nZ:Q1DX2mjZ9AgxR3AsajVGkmObZmsCE=\nR:push.go\na:0:0:444\nZ:Q1XYQyuL5Ua0HeKg7UZs94DDVqBMY=\nR:push_v2.go\na:0:0:444\nZ:Q1MUxfaxiolVfUXmVgpV1qHnHp8k4=\nR:push_v2_test.go\na:0:0:444\nZ:Q1VJOS0Sdqa+U4yF0BLugN9fD2wXA=\nR:registry.go\na:0:0:444\nZ:Q1BN0LRa3eD13KfGkK7YcjnZU68Jo=\nR:registry_unit_test.go\na:0:0:444\nZ:Q1N/wonkGRC/FH6m2/Ueg40xAaa+o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution/fixtures/validate_manifest\nM:0:0:555\nR:bad_manifest\na:0:0:444\nZ:Q1FsqYlMvj9yXmoWEiuAHsKCF2pGg=\nR:extra_data_manifest\na:0:0:444\nZ:Q1W9Ap9GeMLAtKtGEXv1XWHKzJ2Cg=\nR:good_manifest\na:0:0:444\nZ:Q1cue2ukM7nBr7Rq/SEt0UEKphWBw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution/metadata\nM:0:0:555\nR:metadata.go\na:0:0:444\nZ:Q1UtsAK1B0Rhahfe3+13rNdEpfqJI=\nR:v1_id_service.go\na:0:0:444\nZ:Q1TcyQbixDESvVoJ0SvEnMV2pTzrE=\nR:v1_id_service_test.go\na:0:0:444\nZ:Q15YDfXHeZwNLiqlRdC7SnNjKBf0o=\nR:v2_metadata_service.go\na:0:0:444\nZ:Q1czihyt15Dr4TNpRVmkpYFhh9a28=\nR:v2_metadata_service_test.go\na:0:0:444\nZ:Q1CRSq2YyfkFCJS3RXWh53zckJCgI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution/utils\nM:0:0:555\nR:progress.go\na:0:0:444\nZ:Q1B8qAqV7WmAFBVSv6I/GXALiK7GM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/distribution/xfer\nM:0:0:555\nR:download.go\na:0:0:444\nZ:Q1lN/Y8XaGIIiYz30Qb58+1/P5be8=\nR:download_test.go\na:0:0:444\nZ:Q1ehhjdEffUqrggQRiHT03i9p5xNs=\nR:transfer.go\na:0:0:444\nZ:Q1fOTyE3vG+6+ExlaSmi/hXMVHwEs=\nR:transfer_test.go\na:0:0:444\nZ:Q13INPEaeYQ6jUQrjNNlQUeROl9Sg=\nR:upload.go\na:0:0:444\nZ:Q1IPNF4jh+zN3cNzuzpYCxM2u37lg=\nR:upload_test.go\na:0:0:444\nZ:Q1KH3+K94zAx1dkMSNrknV/neS8+Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/dockerversion\nM:0:0:555\nR:useragent.go\na:0:0:444\nZ:Q1atDaokHjPEk7wweRE+NK4SlVfuY=\nR:version_lib.go\na:0:0:444\nZ:Q1XImWzB6aaOr9ooqka7X4M3Lo38o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/docs\nM:0:0:555\nR:rootless.md\na:0:0:444\nZ:Q1dr+K9YBxE2RAg/hr5H8KceazhQU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/docs/api\nM:0:0:555\nR:v1.18.md\na:0:0:444\nZ:Q1dqWMdzx4etaF04xrCOM5+hMvFvE=\nR:v1.19.md\na:0:0:444\nZ:Q1Ls1jQAZtgVBdz5tu5AMDR8j3eo8=\nR:v1.20.md\na:0:0:444\nZ:Q1dxejfhcfaenlTW9zBPmsuFlEj7s=\nR:v1.21.md\na:0:0:444\nZ:Q1hDQDeX9X5HUT4gKlQNw9nJDk86M=\nR:v1.22.md\na:0:0:444\nZ:Q1TgBYei+g2eTL31e+I0KsxDg4XM8=\nR:v1.23.md\na:0:0:444\nZ:Q1bXrIO8QCGNTC1xOy9FoX29bWjlU=\nR:v1.24.md\na:0:0:444\nZ:Q1hbTmvE4v6qUBE7YakjEOtusmxDk=\nR:v1.25.yaml\na:0:0:444\nZ:Q1Zs+KmzA1LkiTUBiWkzl2JBbRWBE=\nR:v1.26.yaml\na:0:0:444\nZ:Q1anAeTKZH+uwhuQ9RQZya17tkn94=\nR:v1.27.yaml\na:0:0:444\nZ:Q1D3dH9ZokBF3wiVomwfDmQ+enm4c=\nR:v1.28.yaml\na:0:0:444\nZ:Q1j4BsXkYdtm4Imi0zSfSNzLmSm6w=\nR:v1.29.yaml\na:0:0:444\nZ:Q12uRzg2eBvpIt1NwWDQnsxzkbeqs=\nR:v1.30.yaml\na:0:0:444\nZ:Q1ZBcUNH9ekix6/u1P6bicrh2zU7w=\nR:v1.31.yaml\na:0:0:444\nZ:Q1wozCSNlfDX8Rg7f0/vZJa8TXLE0=\nR:v1.32.yaml\na:0:0:444\nZ:Q1sB43JP7NXqKOxV2YxlJXV7YnmRk=\nR:v1.33.yaml\na:0:0:444\nZ:Q1SfAfsNU8tsSTc5u5bNXSLbBMwJU=\nR:v1.34.yaml\na:0:0:444\nZ:Q1OJO1QLICZZYWi7y2nHVnFDIv5Ys=\nR:v1.35.yaml\na:0:0:444\nZ:Q1z/pyRAjK0uqQo79jDDxJrWTJXi8=\nR:v1.36.yaml\na:0:0:444\nZ:Q1PJkOpqefCufPncsb60XKNjG8iu4=\nR:v1.37.yaml\na:0:0:444\nZ:Q1hBa8IlKNYeyZHz9XHGqkm7hZ7OY=\nR:v1.38.yaml\na:0:0:444\nZ:Q1AByckXYmMaTThnSmypjT8VlGLOk=\nR:v1.39.yaml\na:0:0:444\nZ:Q1Eg/ysiLQjL3CWZS78RUqRsqXJb0=\nR:v1.40.yaml\na:0:0:444\nZ:Q16u2WUbDP5laHKRYmRu+gz1NhjOw=\nR:v1.41.yaml\na:0:0:444\nZ:Q1Q6C2KZFGYRTT19t9sxUdT6WaCAA=\nR:version-history.md\na:0:0:444\nZ:Q1ifiRHElWfz9J9MrGar+3oq9aQNU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/docs/contributing\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Vc+0NdVQoG8ZZC5JxzLba7wW77o=\nR:set-up-dev-env.md\na:0:0:444\nZ:Q15zrbr+0+xKZ3Ur37ezTWDAWW95M=\nR:set-up-git.md\na:0:0:444\nZ:Q10/nstHJUmVtfp9Fjgfn8yfXtvfw=\nR:software-req-win.md\na:0:0:444\nZ:Q15SXX8NqiQnS6sV+8VHoJws4Jk/Y=\nR:software-required.md\na:0:0:444\nZ:Q1tMTpBRbtUeaBHW6WBcSSlsQyL54=\nR:test.md\na:0:0:444\nZ:Q1dZoUrC0C6Wla7kup478MVb2x8WY=\nR:who-written-for.md\na:0:0:444\nZ:Q1a/aq/A3p3ujfV2g/7ss+S9ie+uE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/docs/contributing/images\nM:0:0:555\nR:branch-sig.png\na:0:0:444\nZ:Q10+N4oCzZ2Gx/CfoGuJp6vsTnYAQ=\nR:contributor-edit.png\na:0:0:444\nZ:Q1wsdmej7MNuXcpFNGWGZk7jrhPi4=\nR:copy_url.png\na:0:0:444\nZ:Q1wxaoBEpGpQDC0gw9BMmd07nyEfA=\nR:fork_docker.png\na:0:0:444\nZ:Q1Et49X4gbvPPQxi2KZUQnEPoR8QE=\nR:git_bash.png\na:0:0:444\nZ:Q1kM5vBE5ZFJ/aV7tOYSYRTv7q6ys=\nR:list_example.png\na:0:0:444\nZ:Q1Lei5g9v2CMDAJv4Vam/4CfOnTpo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/docs/static_files\nM:0:0:555\nR:contributors.png\na:0:0:444\nZ:Q1nHO5gDd85YUYIouQ7SHaS4BJVao=\nR:moby-project-logo.png\na:0:0:444\nZ:Q1/FUCrIzlbIult8AnLMoekWvnszI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/errdefs\nM:0:0:555\nR:defs.go\na:0:0:444\nZ:Q1hMn1GuKrVdzfsOl0njAtmGrDfbE=\nR:doc.go\na:0:0:444\nZ:Q1Kzm0Y7FGFyPVJJGxRHtemCNFyNs=\nR:helpers.go\na:0:0:444\nZ:Q16RrdgdnCIvLXdTlPeoXnDy8WtEs=\nR:helpers_test.go\na:0:0:444\nZ:Q1jde+ScgvveIUxo3v1BGJo3/R0gI=\nR:http_helpers.go\na:0:0:444\nZ:Q1lLe1lXd1Bp+XiejtbMgViPcXxA4=\nR:http_helpers_test.go\na:0:0:444\nZ:Q1JKdmk8AnYfVMlmpGYgdAmuZfDnA=\nR:is.go\na:0:0:444\nZ:Q1f9p7/lyrtpAZevTiNwy2T1ogRgI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1VTwOztOrUoaj2AbWC9MWh3m9WbA=\nR:dind\na:0:0:444\nZ:Q1/BPJ8CJm2b9CcJwwU0p6UvUnGdc=\nR:generate-authors.sh\na:0:0:444\nZ:Q1VFSuGpaL3wENxvrUa1sUKB34jqk=\nR:generate-swagger-api.sh\na:0:0:444\nZ:Q1v+qjPtv0KDoVthtnag/+8A5YMIY=\nR:generate-test-certs.sh\na:0:0:444\nZ:Q1HQY52njuWtosOgjViPEONS77jng=\nR:make.ps1\na:0:0:444\nZ:Q1crN6PGIrzwh487I6QR5ocsg187I=\nR:make.sh\na:0:0:444\nZ:Q1Tit9l91hqLLrnx4Imb44VCkzOEY=\nR:vendor.sh\na:0:0:444\nZ:Q1NvPnG9GdJRgHXK8EPI/eVW/btbQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/ci\nM:0:0:555\nR:arm\na:0:0:444\nZ:Q17o60qEMigOqQPYLxXDnZ9sPt4HE=\nR:experimental\na:0:0:444\nZ:Q1vdgqy/G4nlD6svJE+TE36FsL9Pk=\nR:janky\na:0:0:444\nZ:Q1rW5NAcUEJNm3f1Ln5F3N8P1ltdE=\nR:master\na:0:0:444\nZ:Q15Z1CMyrnMKcYeWF3PybkSthcW4g=\nR:powerpc\na:0:0:444\nZ:Q1Ry2sRFQe5XnwwNE0UQuPZNbVmgo=\nR:windows.ps1\na:0:0:444\nZ:Q1aMXn22jbdWCVShYTohltrVGqCe4=\nR:z\na:0:0:444\nZ:Q1vvTdF4Q2pEWgIzaMGP2v/XGXf/0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/dockerfile\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/dockerfile/install\nM:0:0:555\nR:containerd.installer\na:0:0:444\nZ:Q1Z80EfoJlLLFLqUTaJqT01wNKkm8=\nR:dockercli.installer\na:0:0:444\nZ:Q1NgvJdzjXKSqLiEbej5pqPUCUncQ=\nR:golangci_lint.installer\na:0:0:444\nZ:Q1679AOS3tekNuWhQnq3j6rCCgXes=\nR:gotestsum.installer\na:0:0:444\nZ:Q1TKrL4+w5iWOspd4VmBRH6Wd4aGI=\nR:install.sh\na:0:0:444\nZ:Q1Z3DPF5sfK9rctjBQprlfRTbZtWE=\nR:proxy.installer\na:0:0:444\nZ:Q1M4IY6Pk7vxTsdSz9l6d4lNIlArw=\nR:rootlesskit.installer\na:0:0:444\nZ:Q16/TvdrI70wtFmtQuHgJkWZyzyhU=\nR:runc.installer\na:0:0:444\nZ:Q1YPHR7v09FL9ZOnJypVrwqNvYQtU=\nR:shfmt.installer\na:0:0:444\nZ:Q1JcZmqsxurF3H4vEJ+xL3aRRSBTg=\nR:tini.installer\na:0:0:444\nZ:Q1wEqi/dKNvvubQWo/cr3LFjSMIsA=\nR:tomlv.installer\na:0:0:444\nZ:Q1kLSqM5yrfgMVJU+V8rtgkHuOLJg=\nR:vndr.installer\na:0:0:444\nZ:Q1A0viTJkBaq19Mu/yYRvIpd1nAOM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/make\nM:0:0:555\nR:.binary\na:0:0:444\nZ:Q1xk9qwBnU60FcoB2siieRM+Ffq+w=\nR:.detect-daemon-osarch\na:0:0:444\nZ:Q1MDAYbvx+XV/ke5dm0LkQONtdLYA=\nR:.ensure-emptyfs\na:0:0:444\nZ:Q1tprQ2RnrV+1JNOs92Vpy0Q5Mw4I=\nR:.go-autogen\na:0:0:444\nZ:Q18ttwMx48JIOLqRe8XL4iDqj40hk=\nR:.go-autogen.ps1\na:0:0:444\nZ:Q1qKBFyzMwQlH5KGbIj7PSzcz3Bcg=\nR:.integration-daemon-setup\na:0:0:444\nZ:Q19sdlcnWYh9cP1kBP90YYFg7rRqk=\nR:.integration-daemon-start\na:0:0:444\nZ:Q1bvsdkezT/qZgWWDRSr5C0Q5P8tg=\nR:.integration-daemon-stop\na:0:0:444\nZ:Q1QJl7M4Lwy+wdi2xR/9zmsiR1Qb0=\nR:.integration-test-helpers\na:0:0:444\nZ:Q19jnGcs5JMQ0fjxBltIhVvNa+pXc=\nR:README.md\na:0:0:444\nZ:Q1o51I0LJDw+RWwgA2QMgUH2/y72A=\nR:binary\na:0:0:444\nZ:Q1oVX/TExMrAWuvA7seTqD8URGSvU=\nR:binary-daemon\na:0:0:444\nZ:Q1/AtJQoHzAQk2ibfL5co+rdh8L9A=\nR:build-integration-test-binary\na:0:0:444\nZ:Q1nnQexpNML03ofUqOQQRx5YIkUKQ=\nR:containerutility\na:0:0:444\nZ:Q1gWmTtSGDTpn072qzFaB8zm1lg00=\nR:cross\na:0:0:444\nZ:Q19sD6hwJSb149TFBNcbvyE+3420Y=\nR:cross-platform-dependent\na:0:0:444\nZ:Q1UoqUkEEnh9tNOwV/GBoC+9bRLxs=\nR:dynbinary\na:0:0:444\nZ:Q1znZWeHBHmmo4Cg/mkksdTPslG7Y=\nR:dynbinary-daemon\na:0:0:444\nZ:Q1dSts6Uj+e+WqxSeXKQQRPVOfw2I=\nR:install-binary\na:0:0:444\nZ:Q1ripLH9EYMVIKSNjvEY+rD44NlS0=\nR:run\na:0:0:444\nZ:Q1+8IGNq7f7Jq3uo1oKePyIuL1/p8=\nR:test-docker-py\na:0:0:444\nZ:Q1dUtlRDbRRCcYOp336tMN3BXr6Zc=\nR:test-integration\na:0:0:444\nZ:Q1uI7O/La4UEwIRyj+soZaUpFmEFw=\nR:test-integration-cli\na:0:0:444\nZ:Q1QM/LzyhDYjoQRfRo0Hr5+YHvW5E=\nR:test-integration-flaky\na:0:0:444\nZ:Q17nn8ffhuoxZ3Nn31syQD8OW6RSg=\nR:test-integration-shell\na:0:0:444\nZ:Q1K/q7fpijmAADmzLJNdQPBxtb92Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/make/.resources-windows\nM:0:0:555\nR:common.rc\na:0:0:444\nZ:Q1bU59EKxtFN/gy5CLQIR3dJ2Vs/I=\nR:dockerd.exe.manifest\na:0:0:444\nZ:Q1DvuYHXq7xHgyBIml4puZXRmBYIs=\nR:dockerd.ico\na:0:0:444\nZ:Q1cMWJAKQ/kXzKZ3hPTFNqeQUT+SQ=\nR:dockerd.rc\na:0:0:444\nZ:Q16XsFjWz2g3ONc3o6H8tg5+TG1r4=\nR:event_messages.mc\na:0:0:444\nZ:Q1GkTCEQFUaLqdTHrVp/alnyREEHk=\nR:resources.go\na:0:0:444\nZ:Q1m+7NgiG0epnoWf0RTs7VisvxNdY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/test\nM:0:0:555\nR:e2e-run.sh\na:0:0:444\nZ:Q1LcGhZeNjj14IgkKOTlEUUyZV5Ks=\nR:unit\na:0:0:444\nZ:Q1A3oVO3/6JZ+OsAkSju7jGUY4/1A=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/hack/validate\nM:0:0:555\nR:.swagger-yamllint\na:0:0:444\nZ:Q1nv0fFdZX+PuCsILJtK/6cvCBcgg=\nR:.validate\na:0:0:444\nZ:Q1pQzWdekWGbGIh9WnFLEiInFaRYY=\nR:all\na:0:0:444\nZ:Q1HE0h/mHO5OEcg8U4qKZ/lpdjJnI=\nR:changelog-date-descending\na:0:0:444\nZ:Q19OtEMs426XQ7JIIqHyE6HhcS6IA=\nR:changelog-well-formed\na:0:0:444\nZ:Q1ag3e2Bde61y3qVyxEQjZ7upTEVE=\nR:dco\na:0:0:444\nZ:Q1UD7d4TJC0shSZpYvRmK/c4sQCFM=\nR:default\na:0:0:444\nZ:Q12BXZdt2psrUYCEhU/t1EQLPzIlM=\nR:default-seccomp\na:0:0:444\nZ:Q1RAeU9aZf/099zKKW2iZGL82zrWs=\nR:deprecate-integration-cli\na:0:0:444\nZ:Q1rscGORvnnR0qQe8ChbuvoK5Pk+c=\nR:golangci-lint\na:0:0:444\nZ:Q1lqeStzdxCBGQhYbcqnzYiiDDLLc=\nR:golangci-lint.yml\na:0:0:444\nZ:Q1MmQGmPcdwjd8DP/54tqEtothJII=\nR:pkg-imports\na:0:0:444\nZ:Q17aEIJdTo63pxnigWDta/Jan2Nng=\nR:shfmt\na:0:0:444\nZ:Q1oJtZEpuLgCiPFAGlZvF+XOImnqc=\nR:swagger\na:0:0:444\nZ:Q1ICWejmBGgKlOY2cBX2nFFN/vT4E=\nR:swagger-gen\na:0:0:444\nZ:Q1FFyeROneV0FxZxdfIvsN8rEzifI=\nR:toml\na:0:0:444\nZ:Q1OHVXITbpEmazlUSPhqOJ24WoPNI=\nR:vendor\na:0:0:444\nZ:Q1mu3uOeZLFIn0pTeO6BRZRaFIHXg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/image\nM:0:0:555\nR:fs.go\na:0:0:444\nZ:Q1nsXqZOGDYn9TKvIykfZ4taU6aqA=\nR:fs_test.go\na:0:0:444\nZ:Q1ywlPfLO4XlsxEt8quv5t5XkAqNE=\nR:image.go\na:0:0:444\nZ:Q1xbDfMFaAGg1U9daZil82tdzlVHY=\nR:image_test.go\na:0:0:444\nZ:Q1Wd+iEVsSKuJS0cTHpkL3gNA4cLY=\nR:rootfs.go\na:0:0:444\nZ:Q14u0E42HMAsBF3rptcSAfig1r4LA=\nR:store.go\na:0:0:444\nZ:Q1HJWIwj4Kg6bE0b8NUAE5QWu5MjM=\nR:store_test.go\na:0:0:444\nZ:Q1If7OY6sJ2Kla/9wsbKfEKPVbgaA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/image/cache\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1e+kT2UqO7pBmTdOUBat/JVyC7y8=\nR:compare.go\na:0:0:444\nZ:Q1p1gLi/ThtzBTE1c+Fghd2Hz6lwc=\nR:compare_test.go\na:0:0:444\nZ:Q1hUQs3O9BcT5eX9mTctFxwo+kIyo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/image/spec\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q18kze/BA6DEepvxLsppe4gB0Ut68=\nR:v1.1.md\na:0:0:444\nZ:Q1rH8qEJdY4GsQMRETSK6CEFhYYaw=\nR:v1.2.md\na:0:0:444\nZ:Q1jj61gDcrzqmQxxDM8CGali+0s5g=\nR:v1.md\na:0:0:444\nZ:Q1epBMeJnZr8pgLs/HO7cesIYVzto=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/image/tarexport\nM:0:0:555\nR:load.go\na:0:0:444\nZ:Q1A4PrNEXSApnyMCAPkUGgH+X3PN0=\nR:save.go\na:0:0:444\nZ:Q1n6t9gvOEV8Bgue3gFC8QTeSp6/s=\nR:tarexport.go\na:0:0:444\nZ:Q17f/Z82zMel+O3k+gVrqqy4NNlsU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/image/v1\nM:0:0:555\nR:imagev1.go\na:0:0:444\nZ:Q1p11vazYq5/tL5UNTpC8JDXFQoMY=\nR:imagev1_test.go\na:0:0:444\nZ:Q1I/qRGeqnAgySnfdxd+wqiWZgF7Y=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1TaiSlmiO7iQb9RF0mjBryVHa+P8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/build\nM:0:0:555\nR:build_cgroupns_linux_test.go\na:0:0:444\nZ:Q1hI0unTuxEua+YtNLYQUrxS0VlsM=\nR:build_session_test.go\na:0:0:444\nZ:Q1ZU21jzJTtc1krtu7/7I+BEUZb+A=\nR:build_squash_test.go\na:0:0:444\nZ:Q1LJtMqpaTBEkQgZ3FCNNopR156VQ=\nR:build_test.go\na:0:0:444\nZ:Q1MB+e3Mu/DdUo8CeEU4L+fg6uTsE=\nR:build_userns_linux_test.go\na:0:0:444\nZ:Q17Hq01Pf78PwpR5I5OWiF0rxPwTQ=\nR:main_test.go\na:0:0:444\nZ:Q1Zb044i+MgGCf68N2MoT63phAOLc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/build/testdata\nM:0:0:555\nR:Dockerfile.TestBuildMultiStageCopy\na:0:0:444\nZ:Q1ZZNe6/M2JrJAgBqPLjG0ngxxudk=\nR:Dockerfile.TestBuildPreserveOwnership\na:0:0:444\nZ:Q1vfDhpE9nZERIAVptQS+MbdNWdfM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/config\nM:0:0:555\nR:config_test.go\na:0:0:444\nZ:Q14PAiYEO/bGqqE3sMLISbxaQhWgg=\nR:main_test.go\na:0:0:444\nZ:Q12LSGxbTUFDZXblvl+//N+Jumjoo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/container\nM:0:0:555\nR:checkpoint_test.go\na:0:0:444\nZ:Q1N+ytO1TfUGZv/Uck4Wq7fZi/FEE=\nR:container_test.go\na:0:0:444\nZ:Q1asY3y/IM3VLxKb/qn6MW0GVekbs=\nR:copy_test.go\na:0:0:444\nZ:Q1HbG16PvQUcQ0aH76nP6xdxrGBWA=\nR:create_test.go\na:0:0:444\nZ:Q1xsM1UQYfJgckzBkz/uh51vQNAYE=\nR:daemon_linux_test.go\na:0:0:444\nZ:Q1uc9EhYV+pzIPExa0TzsdRuUdO6A=\nR:daemon_test.go\na:0:0:444\nZ:Q1G6+k3hXT4GshRYmdhVrSTQrTzYA=\nR:diff_test.go\na:0:0:444\nZ:Q1o4UWYNT7TZWPg2KoaT0IbE0a13A=\nR:exec_test.go\na:0:0:444\nZ:Q1nlUv8NgbN2Hb0C8aAolKGZPpRJ4=\nR:export_test.go\na:0:0:444\nZ:Q1470t40iegKsGVputiY1g6qNNhh4=\nR:health_test.go\na:0:0:444\nZ:Q1h9GGXePVAIKebS6ftnMeIDIOYGo=\nR:inspect_test.go\na:0:0:444\nZ:Q1ONLu+TZua8LYJLC+C4RmlXom0Vs=\nR:ipcmode_linux_test.go\na:0:0:444\nZ:Q1fXYF6x1rdM12JqxWMdG5OQktpqk=\nR:kill_test.go\na:0:0:444\nZ:Q17jZH+HG1l7a3IH0HNKWqpfnH1C0=\nR:links_linux_test.go\na:0:0:444\nZ:Q1xvucWJEHnZLd4fWdvlnAumDutk4=\nR:logs_test.go\na:0:0:444\nZ:Q17eB51zn986VAnNqH2qi9U1HxUe8=\nR:main_test.go\na:0:0:444\nZ:Q1jkK89VxeX+Rsk249gg9tbunOgq0=\nR:mounts_linux_test.go\na:0:0:444\nZ:Q1L1gliC57lPDmuio/5rVRJ87bIeQ=\nR:nat_test.go\na:0:0:444\nZ:Q1+deyJLl7syu95fQKHfRFPmHMyQE=\nR:pause_test.go\na:0:0:444\nZ:Q1oVFWg68Cw/6xIr8cDYByS8hxap8=\nR:ps_test.go\na:0:0:444\nZ:Q1FBpe/OfV0PKFd1QRYepij44I8f8=\nR:remove_test.go\na:0:0:444\nZ:Q1RcZu5FgzoeeT+cI+H0Rjaoaj3G0=\nR:rename_test.go\na:0:0:444\nZ:Q1z25Hd/YXymKw38s7PmqY9PAxbnk=\nR:resize_test.go\na:0:0:444\nZ:Q1OvCPfGajLjXVyp2/JGLfBmG2LmM=\nR:restart_test.go\na:0:0:444\nZ:Q1zC9odDn7mnZqw7D4GApOxwh7rC8=\nR:run_cgroupns_linux_test.go\na:0:0:444\nZ:Q1/Qs1vLn3K97bIqsZ5C7ROq4+Zbc=\nR:run_linux_test.go\na:0:0:444\nZ:Q1Bo0bGVJOWk2z+yJMko73rFCsuu8=\nR:stats_test.go\na:0:0:444\nZ:Q1BbSeiVzDJ6eem7YlCQJncK+q5M0=\nR:stop_linux_test.go\na:0:0:444\nZ:Q1vNNRGKbpxVHovVpuNL0tg9vKiVs=\nR:stop_test.go\na:0:0:444\nZ:Q1h1GYYzpT5SfUu0SQt0ACKTqFri4=\nR:stop_windows_test.go\na:0:0:444\nZ:Q1kDoU+1+Sq+rHl1pSNluGU589Kpg=\nR:update_linux_test.go\na:0:0:444\nZ:Q1oXcFy5pPrvxWtD8LIorCs+JwREw=\nR:update_test.go\na:0:0:444\nZ:Q1xIWGH90mvJkFmGX/Fdb+dBSN6xg=\nR:wait_test.go\na:0:0:444\nZ:Q1bRJ0k64zg5MiAVaanwSyUATgpj0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/daemon\nM:0:0:555\nR:daemon_test.go\na:0:0:444\nZ:Q1dgxk3kIKh/eOPtoiYHDO1W2dUtU=\nR:main_test.go\na:0:0:444\nZ:Q17oAD1x4VMurz4YMBJnrlN7nmeUQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/distribution\nM:0:0:555\nR:inspect_test.go.temp\na:0:0:444\nZ:Q17hUtG8DcDDE89XT2Gsqo6fWH3n8=\nR:main_test.go.temp\na:0:0:444\nZ:Q1KbKSH8AIpjD32NKxs3Wx6ps8my4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/image\nM:0:0:555\nR:commit_test.go\na:0:0:444\nZ:Q1NveF4+e/aMHndR9ToVCLa6f1dI0=\nR:import_test.go\na:0:0:444\nZ:Q1XMvxFWFLIqr1oAAa6UWupus9/Eo=\nR:list_test.go\na:0:0:444\nZ:Q1AjgyXpU8oue/A/k8e2ARZ4z1YQ8=\nR:main_test.go\na:0:0:444\nZ:Q12ipjzRmhdIiuAlkIGHBuwJiTJM0=\nR:pull_test.go\na:0:0:444\nZ:Q1ugaA9rTCLNKjWuoCslIONihDaVA=\nR:remove_test.go\na:0:0:444\nZ:Q1hPUtbeq9KzV+GlWHPNCXznqAb3g=\nR:remove_unix_test.go\na:0:0:444\nZ:Q1epBaKmJswmrrMJlneSJGwNOUOQ4=\nR:tag_test.go\na:0:0:444\nZ:Q1WiBzCPh+tBf8qPxZeHxXCjfbDQA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/internal/container\nM:0:0:555\nR:container.go\na:0:0:444\nZ:Q1Ar0Z3qcDAvav6Uh4FpQeRVApRiw=\nR:exec.go\na:0:0:444\nZ:Q1r6ePjs2r7buxIKh+b1nttytK4JY=\nR:ops.go\na:0:0:444\nZ:Q12s6Yi/igRtV8mGoTnreTvMtOf9k=\nR:states.go\na:0:0:444\nZ:Q1H9rnVlH0SY1vDdz6gJs38OTIHQk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/internal/network\nM:0:0:555\nR:network.go\na:0:0:444\nZ:Q1UMBdRp6xMj0Hrki9UD06/lihZ2E=\nR:ops.go\na:0:0:444\nZ:Q17y5wv0yIibUwDV5cRQvlMpgZGQQ=\nR:states.go\na:0:0:444\nZ:Q1128DSVB20/G/YpxHW/1/JxSjkJY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/internal/requirement\nM:0:0:555\nR:requirement.go\na:0:0:444\nZ:Q19/er6fjsPDdL84jUGBu50GeKiq0=\nR:requirement_linux.go\na:0:0:444\nZ:Q138yLWoda5PgtFiC2/x9x633m5Ak=\nR:requirement_windows.go\na:0:0:444\nZ:Q1+Mib+og++vrx52MS66Tg5bhko3U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/internal/swarm\nM:0:0:555\nR:service.go\na:0:0:444\nZ:Q1W/60RSrp7XVUVUJuAk0GOCQ+hUs=\nR:states.go\na:0:0:444\nZ:Q1uybs8TjQkdUJL1TeZoFXXH4vj+M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/network\nM:0:0:555\nR:delete_test.go\na:0:0:444\nZ:Q1LFFvrcAZ6RwLsRg6MQ7WrWmpvSI=\nR:dns_test.go\na:0:0:444\nZ:Q1c+TYrKCou/Ko6ZFBBSP/0AsOAlg=\nR:helpers.go\na:0:0:444\nZ:Q1YvziaMBtF+hCmTrknr2gntenxho=\nR:helpers_windows.go\na:0:0:444\nZ:Q1MmpGf6xtg4ZhTzk+3SoprNESKKY=\nR:inspect_test.go\na:0:0:444\nZ:Q1R1VjsYD4KcwSTbEfM4eIokn8mnM=\nR:main_test.go\na:0:0:444\nZ:Q1l+8+9/fXGQ+XbnYHpc6tIU1WFrU=\nR:network_test.go\na:0:0:444\nZ:Q1de2bCOXDc1ycSRw3xHC9AegZLYI=\nR:service_test.go\na:0:0:444\nZ:Q1Z7WWMZy3F06y1D+RxFqCVaSrtzA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/network/ipvlan\nM:0:0:555\nR:ipvlan_test.go\na:0:0:444\nZ:Q1RIa0xzBbat4uyYiC7JcsvOfyxGU=\nR:main_test.go\na:0:0:444\nZ:Q1laOkrZJM6StFRGNzmRj6c2AwIYM=\nR:main_windows_test.go\na:0:0:444\nZ:Q1byiTgZ87xzoKjXieLHR9yxIxy1Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/network/macvlan\nM:0:0:555\nR:macvlan_test.go\na:0:0:444\nZ:Q1hSDwcGwp16Z1kNohfPzRYHCxjlg=\nR:main_test.go\na:0:0:444\nZ:Q1lOuxaw+PiahxXPR2fWmGQsmPhiI=\nR:main_windows_test.go\na:0:0:444\nZ:Q1F3+YMao/p6Qoo54Dy+5S1Qk/pEg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin\nM:0:0:555\nR:pkg_test.go\na:0:0:444\nZ:Q1jfNSR+QS9LmcFgOdgdMfi9kd8yw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/authz\nM:0:0:555\nR:authz_plugin_test.go\na:0:0:444\nZ:Q1/Vu9KPw6P+tMG9cijCN1iMUjpuM=\nR:authz_plugin_v2_test.go\na:0:0:444\nZ:Q1aE12Nom6VVhLcf6SH9QkhHeupmw=\nR:main_test.go\na:0:0:444\nZ:Q1ZWgCGhtr1BzvfPWM+T+uvRp160I=\nR:main_windows_test.go\na:0:0:444\nZ:Q1NOfzh2L9vI/7DP0byT0lftxv/F4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/common\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q1gy5rUY6G1t7EVsi8jhdpDPYFWlQ=\nR:plugin_test.go\na:0:0:444\nZ:Q1hQ+ZVIURUAt3FtyNKVviZtILCe0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/graphdriver\nM:0:0:555\nR:external_test.go\na:0:0:444\nZ:Q1woKc0muVyGaBap8WfViXP1TJDew=\nR:main_test.go\na:0:0:444\nZ:Q1a7YuvbX+i/GZS+KnvZHSXJL5SdU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/logging\nM:0:0:555\nR:helpers_test.go\na:0:0:444\nZ:Q1iotn2B8q4JrfhpMwNGr6rKwVK9g=\nR:logging_linux_test.go\na:0:0:444\nZ:Q1qksrHUD74/rgncbAotpcEK74QF8=\nR:main_test.go\na:0:0:444\nZ:Q1aTk4qSZdRFxckfOsvhzQFj5K1Ck=\nR:read_test.go\na:0:0:444\nZ:Q1pHzSDcFGZrXzOGmpOC/hLhdK7P4=\nR:validation_test.go\na:0:0:444\nZ:Q1TLQfEwP6fbRgAJvum1C7Ivdoxe4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/logging/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/logging/cmd/close_on_start\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1mAyUi1diXzwP7U4rZLyXue8ScJ4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/logging/cmd/discard\nM:0:0:555\nR:driver.go\na:0:0:444\nZ:Q1BAgGmce0TAo0JI0NhILJzIQyi7c=\nR:main.go\na:0:0:444\nZ:Q1aMcVEILyTZSXsOrhzT7e/i7e3Lg=\nR:main_test.go\na:0:0:444\nZ:Q1r5alwG7IvwuZthGWtGSy9wUz/pM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/logging/cmd/dummy\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1pYp+sIb6eISpzj7E6ck21AmHYoA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/volumes\nM:0:0:555\nR:helpers_test.go\na:0:0:444\nZ:Q1KPoJ/ytmo9CYp6K4uMNj1CdKkwU=\nR:main_test.go\na:0:0:444\nZ:Q116/jWaY+jzTjyjSiqZIjhSZ9XG4=\nR:mounts_test.go\na:0:0:444\nZ:Q1Gv81VbULS7HghQJ+yqNwyq9e+/s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/volumes/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/plugin/volumes/cmd/dummy\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1pYp+sIb6eISpzj7E6ck21AmHYoA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/secret\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q1ROjEA0cAAkbSyflq71OU5Nl36Rw=\nR:secret_test.go\na:0:0:444\nZ:Q1vOgm+P64Q5fMruVFzNfS90qqSqQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/service\nM:0:0:555\nR:create_test.go\na:0:0:444\nZ:Q1sR368M9rFHmiZ7tME3V82hJBi1o=\nR:inspect_test.go\na:0:0:444\nZ:Q1MHgmtgQKSvhzRfs8PnR/2qIF7wo=\nR:jobs_test.go\na:0:0:444\nZ:Q1Y90gw59GtKi8zKOYjbjqll8v+6M=\nR:list_test.go\na:0:0:444\nZ:Q1kS3FKEcEP472hW8K0bQuXMGkBpI=\nR:main_test.go\na:0:0:444\nZ:Q1XuFa7XBcu3Wi0x/NOrlV0cjc1ok=\nR:network_test.go\na:0:0:444\nZ:Q1YnVSSfqnHe1oyg3JBXM12qPw064=\nR:plugin_test.go\na:0:0:444\nZ:Q1LRUQb7340RCBWOaAJF+dNq6jm6Y=\nR:update_test.go\na:0:0:444\nZ:Q120TtvKvdN9QleI5sN6QYk6SQTtg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/session\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q19oMQajSkX3Nt0cUUubjOUSZLkGA=\nR:session_test.go\na:0:0:444\nZ:Q1m9HwjDf3H6bEZM8DjC1Qr6P/X/Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/system\nM:0:0:555\nR:cgroupdriver_systemd_test.go\na:0:0:444\nZ:Q1dSc3rHjD4ePntPgPqoDfLNlYi+A=\nR:event_test.go\na:0:0:444\nZ:Q1eNURC2PPqb18T8oCd8SJa6d3PRE=\nR:info_linux_test.go\na:0:0:444\nZ:Q1V1MUfBikpY9NM13r/sei9onJMYo=\nR:info_test.go\na:0:0:444\nZ:Q1Muik5uKbYEgB9SPf2PEHGDqUyxQ=\nR:login_test.go\na:0:0:444\nZ:Q1xJ+awYWbZDPzRLg+7uDqoCbEcAI=\nR:main_test.go\na:0:0:444\nZ:Q1LXiak2DGjwsQSJ3B8pFd7DlwFrc=\nR:ping_test.go\na:0:0:444\nZ:Q16D4tSE4qRaW1DRmNwxrlCppLACM=\nR:version_test.go\na:0:0:444\nZ:Q1d1PVUspEaVK58qkpAS0VDJPcEJQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/testdata\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/testdata/https\nM:0:0:555\nR:ca.pem\na:0:0:444\nZ:Q1Ju0HOz1oVwouBsCuQABxEfr3moQ=\nR:client-cert.pem\na:0:0:444\nZ:Q1AWxKP4uGN46ET8cxIvx2XdC6HCo=\nR:client-key.pem\na:0:0:444\nZ:Q18eumlfYzSUUbjc91LRyaTvHAbu4=\nR:server-cert.pem\na:0:0:444\nZ:Q1a5+GVjWm4ocJF8NT2XzHAuuC6F8=\nR:server-key.pem\na:0:0:444\nZ:Q1hT13WeAzfgPIPymVbyjn0wXqBPU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration/volume\nM:0:0:555\nR:main_test.go\na:0:0:444\nZ:Q1LtHRZs6F1jHzjp+jErCXrzZa3y4=\nR:volume_test.go\na:0:0:444\nZ:Q1YtwqaN3Q6WB97aG405kCCNXT2dg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli\nM:0:0:555\nR:benchmark_test.go\na:0:0:444\nZ:Q19YuH6qLGi35N9411Ce7q9nwAbYE=\nR:check_test.go\na:0:0:444\nZ:Q1NvQIqmKFSKBPSk8AByLxzuQ74dE=\nR:daemon_swarm_hack_test.go\na:0:0:444\nZ:Q1y870k0HmCclWRaPHJ32KJGI6qRA=\nR:docker_api_attach_test.go\na:0:0:444\nZ:Q1Y/l/8AUIhSsUzTkmStkv3om+I14=\nR:docker_api_build_test.go\na:0:0:444\nZ:Q1eWIiY1uHsGQ3+BIwoiyEkETyDcs=\nR:docker_api_build_windows_test.go\na:0:0:444\nZ:Q1n8CkTA68ieA/o7RoJ+UQcX7Z48g=\nR:docker_api_containers_test.go\na:0:0:444\nZ:Q1YvUUANX23OvE7IVfzYV7QBIX2nc=\nR:docker_api_containers_unix_test.go\na:0:0:444\nZ:Q1JIlnV1MAQuroDzV/eW5KOc4+HhI=\nR:docker_api_containers_windows_test.go\na:0:0:444\nZ:Q11+sSwDhjtcrW0XyGq+KLX71OBvA=\nR:docker_api_exec_resize_test.go\na:0:0:444\nZ:Q1w5Cn/8E7lKGYK2MvNLWPAKqzPV4=\nR:docker_api_exec_test.go\na:0:0:444\nZ:Q1EvRy5TExePwMrF+I6aVOofQ2c/M=\nR:docker_api_images_test.go\na:0:0:444\nZ:Q1ptXuSgjwTxc4MlOsrH+stulGqB4=\nR:docker_api_inspect_test.go\na:0:0:444\nZ:Q1+S4LhqYKkcB+52Cnpbge/fZOHfc=\nR:docker_api_logs_test.go\na:0:0:444\nZ:Q1ihjFSX266xgSTqbDfM8apjlKcP4=\nR:docker_api_network_test.go\na:0:0:444\nZ:Q1upGvo7OJja2J6xAoGd6Fo63NRLA=\nR:docker_api_stats_test.go\na:0:0:444\nZ:Q174xGsns5iHQre4zmVV86HTIcxf4=\nR:docker_api_swarm_node_test.go\na:0:0:444\nZ:Q1JurTjpMtKUFv7MNm3laFi9g//oI=\nR:docker_api_swarm_service_test.go\na:0:0:444\nZ:Q1yrVxU3ezV3oTmT0jLqPJ9/tHjTM=\nR:docker_api_swarm_test.go\na:0:0:444\nZ:Q1aFSe1LGWwfsWoL514ERkChd6KSU=\nR:docker_api_test.go\na:0:0:444\nZ:Q1esQUMeuxo2oEojhfGcezqU5ci+k=\nR:docker_cli_attach_test.go\na:0:0:444\nZ:Q1v3pYun6qp8Dx9upuJr9mY/g+NII=\nR:docker_cli_attach_unix_test.go\na:0:0:444\nZ:Q1zYbBYarXq2LrvGY7297vXPj7rk8=\nR:docker_cli_build_test.go\na:0:0:444\nZ:Q1m6chVkB9osH/zVyIMPaeD+Dpt6o=\nR:docker_cli_build_unix_test.go\na:0:0:444\nZ:Q1H/fINgdtJVjq4t6HVbL30eev1zs=\nR:docker_cli_by_digest_test.go\na:0:0:444\nZ:Q1FyqxG2e1WF45xA0ybRbztXtbTAQ=\nR:docker_cli_commit_test.go\na:0:0:444\nZ:Q1SyWMz0cGMwKcXlwsQ9Tx/HNHLno=\nR:docker_cli_cp_from_container_test.go\na:0:0:444\nZ:Q1dPwPvW4aXl0xglfK1+8/erxMRjQ=\nR:docker_cli_cp_test.go\na:0:0:444\nZ:Q1lZ0qPaE0tCW+PK3tQRJwA0BA264=\nR:docker_cli_cp_to_container_test.go\na:0:0:444\nZ:Q1C8AU86KNFJyqi3JBSXXEhV+2w18=\nR:docker_cli_cp_to_container_unix_test.go\na:0:0:444\nZ:Q1HJXx5jte00OwMz+Byz4mp0RmUTQ=\nR:docker_cli_cp_utils_test.go\na:0:0:444\nZ:Q1tVrbsBrBw3C4XqiY//tIaiIhMCs=\nR:docker_cli_create_test.go\na:0:0:444\nZ:Q1tk1zXRQovigvDFwa1QAf/pqpf2I=\nR:docker_cli_daemon_plugins_test.go\na:0:0:444\nZ:Q1QGR5Fnwxqr/l7nVvxMRA9DQMcqA=\nR:docker_cli_daemon_test.go\na:0:0:444\nZ:Q1mSxW+xwni1qsM3svm4G4qh4QcaI=\nR:docker_cli_events_test.go\na:0:0:444\nZ:Q1QE62JhNzp7klH3p+aEIN/nk0yVs=\nR:docker_cli_events_unix_test.go\na:0:0:444\nZ:Q1DkwocP/SRo1Cl9+nBBmfskKealI=\nR:docker_cli_exec_test.go\na:0:0:444\nZ:Q1q8sj3+ibl/G3KPsQW8r76Cmp6jU=\nR:docker_cli_exec_unix_test.go\na:0:0:444\nZ:Q1wJm+dD8t84+FDL6E8ZPnTEfTjgk=\nR:docker_cli_external_volume_driver_test.go\na:0:0:444\nZ:Q1+Wly7WYEycz/xcGMZHxqegf3BfQ=\nR:docker_cli_health_test.go\na:0:0:444\nZ:Q1RAyVgrJLIPXrfnfTn015677KZTU=\nR:docker_cli_history_test.go\na:0:0:444\nZ:Q1ueyyUfJtjiTWWv9HYcwIyoptgkY=\nR:docker_cli_images_test.go\na:0:0:444\nZ:Q1XuFyZ5L90CsUxNFE/a0TI39QMIo=\nR:docker_cli_import_test.go\na:0:0:444\nZ:Q1BYeIFmo5wc+Akrdjn8YLizqP7Fo=\nR:docker_cli_info_test.go\na:0:0:444\nZ:Q1ncqTDNSkk9hkF/itNnHytE6ixU4=\nR:docker_cli_info_unix_test.go\na:0:0:444\nZ:Q1ySbrIsMfDce6i3aWbdsr5WZjqqM=\nR:docker_cli_inspect_test.go\na:0:0:444\nZ:Q1MgbL/ksq34IAM2ApKEDct9JoAbw=\nR:docker_cli_links_test.go\na:0:0:444\nZ:Q1slcFxxsf4I3mY/blXKSxGtpAuGY=\nR:docker_cli_login_test.go\na:0:0:444\nZ:Q11wfCA76vFJ+HkndpRBitbdk5SVo=\nR:docker_cli_logout_test.go\na:0:0:444\nZ:Q1XOCyx6daI2SX9JE+mho+kApH50k=\nR:docker_cli_logs_bench_test.go\na:0:0:444\nZ:Q1MV0206NrDWfeEZsvk+EFiteQuCE=\nR:docker_cli_logs_test.go\na:0:0:444\nZ:Q1tE/1o6pKzpfT/Gxx68M/D7utVRQ=\nR:docker_cli_netmode_test.go\na:0:0:444\nZ:Q18G9HXMjIjZdK3C9sYqGBXpOhwRw=\nR:docker_cli_network_test.go\na:0:0:444\nZ:Q14wQiVk/WPGmI94P8WfvFCYlKVlA=\nR:docker_cli_network_unix_test.go\na:0:0:444\nZ:Q1AYcd/FMON7S5dFS1c0w6beDRq00=\nR:docker_cli_plugins_logdriver_test.go\na:0:0:444\nZ:Q1hsLNi57VTTKnQh//dCvsHyWxMCc=\nR:docker_cli_plugins_test.go\na:0:0:444\nZ:Q1g6WfH3vSf3f4v4Mtw81lEwEyVVU=\nR:docker_cli_port_test.go\na:0:0:444\nZ:Q1Gus7DNeijyNzOiKWGjBAuagkir4=\nR:docker_cli_proxy_test.go\na:0:0:444\nZ:Q1OeiYg2MwJenh4d7yVpAOZV0V7KY=\nR:docker_cli_prune_unix_test.go\na:0:0:444\nZ:Q1TYn3lRfMuTzlRrvBACSVoRbicFo=\nR:docker_cli_ps_test.go\na:0:0:444\nZ:Q1GPbe1qNguqc3dEFKgcLyPlT4txc=\nR:docker_cli_pull_local_test.go\na:0:0:444\nZ:Q12LVHojoKLzQbU+OR9Ttzwik37oE=\nR:docker_cli_pull_test.go\na:0:0:444\nZ:Q1E1Vxq8YWVNHhQ3d7CXxuZ6coj2A=\nR:docker_cli_push_test.go\na:0:0:444\nZ:Q1mjCxAc9FwY7ObzY3LlvSZFf07S8=\nR:docker_cli_registry_user_agent_test.go\na:0:0:444\nZ:Q1Jq20cVQ/pA6ENVmMklwJVes7n+Q=\nR:docker_cli_restart_test.go\na:0:0:444\nZ:Q1kfDeFRS9JCLdAoJ1ndfVh10gHxc=\nR:docker_cli_rmi_test.go\na:0:0:444\nZ:Q16ZWKP7Ns2v19zPgTnSx9zPzGPVs=\nR:docker_cli_run_test.go\na:0:0:444\nZ:Q1A1/NK/WT2J5KRQ3JzCVJ+LIxksI=\nR:docker_cli_run_unix_test.go\na:0:0:444\nZ:Q140WAxexmHO/IM7KXBSVHU5JJp38=\nR:docker_cli_save_load_test.go\na:0:0:444\nZ:Q1d3lDN49maQayl11Ktx6joSjye20=\nR:docker_cli_save_load_unix_test.go\na:0:0:444\nZ:Q1LZm2xpU5X0W5gGhbcFTVTtyj7xo=\nR:docker_cli_search_test.go\na:0:0:444\nZ:Q1UQ8C2/cTcf0w7sZONRIBYBTG4H8=\nR:docker_cli_service_create_test.go\na:0:0:444\nZ:Q1TFPSOWdTvrozq6vm7eTwgtHPABU=\nR:docker_cli_service_health_test.go\na:0:0:444\nZ:Q1tKQLuDU84Y00y0MNiDIhPqUkb1w=\nR:docker_cli_service_logs_test.go\na:0:0:444\nZ:Q1GKbuLImYBOCQZeERCMoas4Sz7J8=\nR:docker_cli_service_scale_test.go\na:0:0:444\nZ:Q1tknOboc+qv99bpJ4uXDxg9mN9lw=\nR:docker_cli_sni_test.go\na:0:0:444\nZ:Q1pvIur/cZixTsRT9H7vq12oWSyLE=\nR:docker_cli_start_test.go\na:0:0:444\nZ:Q11ATwt9htZEtbOH0jT4liKLQ73Dg=\nR:docker_cli_stats_test.go\na:0:0:444\nZ:Q1Iv4PX4xfVJeAARyUu/pOC1IA64s=\nR:docker_cli_swarm_test.go\na:0:0:444\nZ:Q1plsB/E1MK99nQlQ52AeaBOhPuI8=\nR:docker_cli_swarm_unix_test.go\na:0:0:444\nZ:Q1cmHfmpOBCcDu+Nx2tYsnME4uKTU=\nR:docker_cli_top_test.go\na:0:0:444\nZ:Q1BgjQ2a7lP68sTG0rfPvthTuoUBQ=\nR:docker_cli_update_unix_test.go\na:0:0:444\nZ:Q16eAwAKxB911FYOm9FrtPnL/IA4o=\nR:docker_cli_userns_test.go\na:0:0:444\nZ:Q1X32yvs0k5JbCLi4LjapAylolm3o=\nR:docker_cli_v2_only_test.go\na:0:0:444\nZ:Q1kWF3XbNvf73hv4LrxUPywXUsNUs=\nR:docker_cli_volume_test.go\na:0:0:444\nZ:Q1B6SDQ55LgrWf5Tqd8EQBe4KdmYw=\nR:docker_deprecated_api_v124_test.go\na:0:0:444\nZ:Q1+zpluBiSWCyeL4Po+GUa4rvQtSc=\nR:docker_deprecated_api_v124_unix_test.go\na:0:0:444\nZ:Q1L70UtOlTguutm7sZ29plSCyT3Qk=\nR:docker_hub_pull_suite_test.go\na:0:0:444\nZ:Q1pKYA+Vh6eRsL8SBlQmhmuSpY4S8=\nR:docker_utils_test.go\na:0:0:444\nZ:Q1bbIjWd4vQKCQo2PwOMXhmxa3cZc=\nR:events_utils_test.go\na:0:0:444\nZ:Q1+AECjlfD4KrjNqzVAh0KhRFPFHo=\nR:fixtures_linux_daemon_test.go\na:0:0:444\nZ:Q1nJ9o7xPgP5W+14je05uMiBA/hlo=\nR:requirements_test.go\na:0:0:444\nZ:Q1h90mVQNVBc/hcF0tHgrIHYm81bI=\nR:requirements_unix_test.go\na:0:0:444\nZ:Q1xc474ZfWprbZUJ3RjaAp+H0ZZs8=\nR:test_vars_noseccomp_test.go\na:0:0:444\nZ:Q1YoLE+DdkUydr1/SXIok2dT+agjM=\nR:test_vars_seccomp_test.go\na:0:0:444\nZ:Q1S2TNl2kA1pBLp9Nr598TBzc1Tuc=\nR:test_vars_test.go\na:0:0:444\nZ:Q1oQMZGG80WuAt+kw45MHd0k5kTRE=\nR:test_vars_unix_test.go\na:0:0:444\nZ:Q1yrOvz+ouhLtjOVOOXR3y/aF06QU=\nR:test_vars_windows_test.go\na:0:0:444\nZ:Q1miQMKTjY/VlVsEesQE15sO5q2F4=\nR:utils_test.go\na:0:0:444\nZ:Q1iR8j8GmI9oKsshFyiaa0EM7kAyo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/checker\nM:0:0:555\nR:checker.go\na:0:0:444\nZ:Q1tRzWFkKL45U7zwWFogcOLvLBqJU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/cli\nM:0:0:555\nR:cli.go\na:0:0:444\nZ:Q1rRWflwYJItJzwCKphQ/OlQ8v1fc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/cli/build\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1zdMoIk0QAFupeKzkm2kBXKmQSpk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/daemon\nM:0:0:555\nR:daemon.go\na:0:0:444\nZ:Q1UDkubt0P66tUMOJxQ0j6I/28NYs=\nR:daemon_swarm.go\na:0:0:444\nZ:Q1tpCvS7JYJZC3E5piolZ2aMhIov4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/environment\nM:0:0:555\nR:environment.go\na:0:0:444\nZ:Q13Q2bXs+Bgit2qyeu1oH1ncW4YBc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/fixtures/auth\nM:0:0:555\nR:docker-credential-shell-test\na:0:0:444\nZ:Q1jlxMqbZ0PN+kxd9jxFNbTJTmk0Y=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/fixtures/credentialspecs\nM:0:0:555\nR:valid.json\na:0:0:444\nZ:Q1/rpSVyBygmwKlr6w/dWEKoJrL/s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/fixtures/https\nM:0:0:555\nR:client-rogue-cert.pem\na:0:0:444\nZ:Q1hlmtx9Foc6Lpq+1Ix6zwFaEvbqA=\nR:client-rogue-key.pem\na:0:0:444\nZ:Q1yYMM2DXYI1YrmgQ8uhy4Ke5Gcd4=\nR:server-rogue-cert.pem\na:0:0:444\nZ:Q15jEDMIEJ/Lu7yX/iA+B0zKcXUCE=\nR:server-rogue-key.pem\na:0:0:444\nZ:Q19ZHelXx9MD562cWEF48/sNkpShg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/fixtures/registry\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1G8m24wjkAcq0CM4KwDuBZKOKtyQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/requirement\nM:0:0:555\nR:requirement.go\na:0:0:444\nZ:Q1fKO7m2bNPo80w5AhRLyIsysR00s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/integration-cli/testdata\nM:0:0:555\nR:emptyLayer.tar\na:0:0:444\nZ:Q1AFFyVJxgK7gT75fdz4omhEiHBYk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/internal/test\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/internal/test/suite\nM:0:0:555\nR:interfaces.go\na:0:0:444\nZ:Q1jFGB1ICww+0ABJZ9SqswW+GfiG4=\nR:suite.go\na:0:0:444\nZ:Q1mx487hDhmLZ440RffOlei8RuqVI=\nR:testify.LICENSE\na:0:0:444\nZ:Q1E27rFOrOW+WGOIqVnfEQi9s1daw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/layer\nM:0:0:555\nR:empty.go\na:0:0:444\nZ:Q1oRDTIAVnyi1KXMOUDgqak/9cmI8=\nR:empty_test.go\na:0:0:444\nZ:Q1BI+a29rRZu2zO6x2uwsS82XQ6kY=\nR:filestore.go\na:0:0:444\nZ:Q14lZdVaE6IV0UGie5A5PVBdrRBe8=\nR:filestore_test.go\na:0:0:444\nZ:Q16tr46cE1YWRMLuNosduvRHRNeDU=\nR:filestore_unix.go\na:0:0:444\nZ:Q1o40I6bvWYMspb84FveIFxVaPwjc=\nR:filestore_windows.go\na:0:0:444\nZ:Q1yv9y3Dm1PIyossE/AUYa3zsmGG0=\nR:layer.go\na:0:0:444\nZ:Q1xwVl9k8D1c3seQ+HW2sVdDcTtEs=\nR:layer_store.go\na:0:0:444\nZ:Q1Wi2UJ5l9/VdKg9DyYQbuV8oeXzI=\nR:layer_store_windows.go\na:0:0:444\nZ:Q1kDDwGGXvBpf455X8WTwXcemTxrw=\nR:layer_test.go\na:0:0:444\nZ:Q14ThPKgzegA0/0eC2/NuLYXVDbgc=\nR:layer_unix.go\na:0:0:444\nZ:Q1fgIn/05gMMh6Ik4XNa82K5g7r74=\nR:layer_unix_test.go\na:0:0:444\nZ:Q1Bz89N/THVteQ2ne+x7aWYz9reY0=\nR:layer_windows.go\na:0:0:444\nZ:Q1sySUox37tjmBUM5hMYIU/TgeveE=\nR:migration.go\na:0:0:444\nZ:Q1Fs8o60Y+JexRsrlfBoUK3A4piW8=\nR:migration_test.go\na:0:0:444\nZ:Q1Aj069fblomFj2XGfp5FMEIuuD3s=\nR:mount_test.go\na:0:0:444\nZ:Q1jeChomr2Ki/SWQguH1YH7azM4dk=\nR:mounted_layer.go\na:0:0:444\nZ:Q1zPd6eNOf82h6cHWFDMJ4byMsu0c=\nR:ro_layer.go\na:0:0:444\nZ:Q1fbil2JAZChyznWNe2BdYKjBSBfk=\nR:ro_layer_windows.go\na:0:0:444\nZ:Q1kr2ArIiEj+HqMi/iFBT4z27l3W0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd\nM:0:0:555\nR:libcontainerd_linux.go\na:0:0:444\nZ:Q1KXfBJRsCPPoKMULriFRbMGGW+TI=\nR:libcontainerd_windows.go\na:0:0:444\nZ:Q1YlrOSz2A//2Qmkzb9CZ5TrbMoRM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd/local\nM:0:0:555\nR:local_windows.go\na:0:0:444\nZ:Q1eIozu3fU3gJZEnrNp9jc89QoCzo=\nR:process_windows.go\na:0:0:444\nZ:Q12wLfQQohEyUxhZFJR5cKXQ3IC2U=\nR:utils_windows.go\na:0:0:444\nZ:Q1kPxm1tgV4tzjPmvDokjnwpgbY5A=\nR:utils_windows_test.go\na:0:0:444\nZ:Q1+GY60a69Jff8u6Izj6pAf1M0OvM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd/queue\nM:0:0:555\nR:queue.go\na:0:0:444\nZ:Q1FoXyHP3UV3nmv92/JTpNnK3pZnc=\nR:queue_test.go\na:0:0:444\nZ:Q127VGbnvKrbuoY/Gy5GRmasGt6Wg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd/remote\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1tHlcFt7g8u8uTeVjLwu2wP5X7yA=\nR:client_io_windows.go\na:0:0:444\nZ:Q1Y+4pRCqP1lhfH59iH9ahNY8pu6A=\nR:client_linux.go\na:0:0:444\nZ:Q16LP7MM8njhqYTrZ1yWcR1RkA+Ng=\nR:client_windows.go\na:0:0:444\nZ:Q1EGZpeQisfpCN1joCOoS8S5REa7A=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd/supervisor\nM:0:0:555\nR:remote_daemon.go\na:0:0:444\nZ:Q1sseWlKTMTvoAF6ladIIwB4KrfsM=\nR:remote_daemon_linux.go\na:0:0:444\nZ:Q117AoM3FJ9tZhvPXKVIl2HOw5g9c=\nR:remote_daemon_options.go\na:0:0:444\nZ:Q1VhNyq62quwpUS2vXA11pV54VotA=\nR:remote_daemon_options_linux.go\na:0:0:444\nZ:Q1yIXTw/z8gbySwrMat+wLPV+ZjWY=\nR:remote_daemon_windows.go\na:0:0:444\nZ:Q1l/9dIyzy4TVqzDTOqNuPskAEXg4=\nR:utils_linux.go\na:0:0:444\nZ:Q1q2P4RNkC/h+Ba+lt3969ByjVyr4=\nR:utils_windows.go\na:0:0:444\nZ:Q1/c4moyTzRSRQojNoJTyVuJZ9i0o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/libcontainerd/types\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q17cqlZFF34KH/6w4PqLxls0gI9EY=\nR:types_linux.go\na:0:0:444\nZ:Q1eUrMKK61nzxaZlo/MFJWYlJLtqY=\nR:types_windows.go\na:0:0:444\nZ:Q1XFdAznexT/MX3yukEs1uNlmJenI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/oci\nM:0:0:555\nR:defaults.go\na:0:0:444\nZ:Q1QEB7lrNmaqzjSuG1cxHOKl1jw6U=\nR:devices_linux.go\na:0:0:444\nZ:Q1BToPjCwPbai7hVHuxP8PUqseb30=\nR:devices_unsupported.go\na:0:0:444\nZ:Q1cRpUl3cqW75hmMpEXDskMVPKa2I=\nR:namespaces.go\na:0:0:444\nZ:Q1OGhs8+dAKCYUoXrR/+gdfl87JWw=\nR:oci.go\na:0:0:444\nZ:Q1rnDq2klBNcQdd0NEQi/UBRovKRE=\nR:oci_test.go\na:0:0:444\nZ:Q1QrvZTqZ76uclaJSlYbQJgRuPKRk=\nR:seccomp_test.go\na:0:0:444\nZ:Q1N3YCnf/UvBcSNPKCWnJ2ump15bM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/oci/caps\nM:0:0:555\nR:defaults.go\na:0:0:444\nZ:Q1ZmW6KxUJehPGYkXlzK8GmbuRT5g=\nR:utils.go\na:0:0:444\nZ:Q199fM+fp3AVBvdG+KFrbHFhwk4sY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/oci/fixtures\nM:0:0:555\nR:default-old-format.json\na:0:0:444\nZ:Q1dJ48muK6oC4J+6sd5AM+QYXel/M=\nR:default.json\na:0:0:444\nZ:Q1oyWO5Cead9wuTWtbfRSRqXm2sb4=\nR:example.json\na:0:0:444\nZ:Q1lXtiuQ1oc9PbUG8eU4ExIwpEAaA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/opts\nM:0:0:555\nR:address_pools.go\na:0:0:444\nZ:Q1JzTnFOA8NzCri1I3TRdb6ttejTo=\nR:address_pools_test.go\na:0:0:444\nZ:Q1VPIsS1ytn4gJuN2I8db0VLoYfYU=\nR:env.go\na:0:0:444\nZ:Q1t3cvJNqfNGnL74Eb4lpH1z2Oeic=\nR:env_test.go\na:0:0:444\nZ:Q1AkHDOO58I+XAyoT4SdqyYHnJgKE=\nR:hosts.go\na:0:0:444\nZ:Q1MYf7HA7XMNrVDxhlBgibbx1Q7PM=\nR:hosts_test.go\na:0:0:444\nZ:Q1ATs6jemN3phAv3Mfmmx+21JoAJQ=\nR:hosts_unix.go\na:0:0:444\nZ:Q1Em6w1ZOsP5T0nDgg7ViA1Au9AbY=\nR:hosts_windows.go\na:0:0:444\nZ:Q1YDuFdEkcMc/EcaFy0pEM6TIO+lw=\nR:ip.go\na:0:0:444\nZ:Q1iodZXZv+5RcjYGPuFMEI41uSQVo=\nR:ip_test.go\na:0:0:444\nZ:Q1agNGxqzYwl4YDZwQmCCPxRgTxHc=\nR:opts.go\na:0:0:444\nZ:Q1PcsDtDdHaqB+1LgpyePIZGW/BGo=\nR:opts_test.go\na:0:0:444\nZ:Q1UeB7p9oPD6r8nYlB028n5n5A9nw=\nR:quotedstring.go\na:0:0:444\nZ:Q1kcu4UTtDmi1ffoZA4yYbYv/Pd5E=\nR:quotedstring_test.go\na:0:0:444\nZ:Q1ygTTbZqdMwEi716YFkh82bvFOkA=\nR:runtime.go\na:0:0:444\nZ:Q1m8htpmA2VakprB8PbiTyGOE/jNA=\nR:ulimit.go\na:0:0:444\nZ:Q1JFi9Pj5mg8pfbpItzSjtskkIaCA=\nR:ulimit_test.go\na:0:0:444\nZ:Q1I6OJKRRPDYOzTlrTGuNBKBITbnI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/patches\nM:0:0:555\nR:0001-archive-tar-do-not-populate-user-group-names.patch\na:0:0:444\nZ:Q1WV+DF9+rp0sB7oUWpJ7KFtYkg/o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q17NbPXXiMhC3P2J8R62GbwGvXmtw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/aaparser\nM:0:0:555\nR:aaparser.go\na:0:0:444\nZ:Q1WWlCEsrKd+tI8KSv344S1S2zE7E=\nR:aaparser_test.go\na:0:0:444\nZ:Q1ddA8WQkpS39p/yxE6DhrBYHY+uM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/archive\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1byr+NAhRT7fITHEBzEJSpw4ECpw=\nR:archive.go\na:0:0:444\nZ:Q13iCqNdyJ+xn2wJAqU1rLDgWyR4s=\nR:archive_linux.go\na:0:0:444\nZ:Q1TuF7L4Enm3NOpLxt4n1UVvs3Fqk=\nR:archive_linux_test.go\na:0:0:444\nZ:Q1FxNO5nDFHC0MAPGDbnC8Oh2nGWI=\nR:archive_other.go\na:0:0:444\nZ:Q11RbEWUs1lxgV02I2vtT2QrP8NuM=\nR:archive_test.go\na:0:0:444\nZ:Q1AO3nnkEWIRrPpuQ7U/I9tqYPSqw=\nR:archive_unix.go\na:0:0:444\nZ:Q1ofTPyb2iMToDDfPGfy1vzw1Pnl4=\nR:archive_unix_test.go\na:0:0:444\nZ:Q1K29GgCZRN5i6k7NvOk3e5IDwpjc=\nR:archive_windows.go\na:0:0:444\nZ:Q1MUkUPWwI1NK4OhAJL6p+TCL5Qfk=\nR:archive_windows_test.go\na:0:0:444\nZ:Q1yLjU8eA+OXrSDiWn9gH9M39er9s=\nR:changes.go\na:0:0:444\nZ:Q1MkHNEh+NMtfVyqyTsUU5Z5kDhRQ=\nR:changes_linux.go\na:0:0:444\nZ:Q1qmv+2SqUbmDjk4mpo0NR4cDFB34=\nR:changes_other.go\na:0:0:444\nZ:Q1V+E+KNiwd1AwMYxcVqE66omzrzU=\nR:changes_posix_test.go\na:0:0:444\nZ:Q1gnKt/N78lqvNuJVg8hW5oImzFOI=\nR:changes_test.go\na:0:0:444\nZ:Q1zn46/w1Oh+cq3+VPXIpXqDHeujo=\nR:changes_unix.go\na:0:0:444\nZ:Q1vcFp3pF99IvUii6dFQ4K2yY5ZEA=\nR:changes_windows.go\na:0:0:444\nZ:Q1nxlo7/AkiqRdxFn4JeKo1re7goU=\nR:copy.go\na:0:0:444\nZ:Q1AqiHTIwhxtK9UiTv4QPXEySr7Kc=\nR:copy_unix.go\na:0:0:444\nZ:Q1jNICnKvzUUDY5kyR1Q7OZ8l6oA8=\nR:copy_unix_test.go\na:0:0:444\nZ:Q1Vm3PtGIeb4oLpfgnrBEHoGa0mOk=\nR:copy_windows.go\na:0:0:444\nZ:Q1aaDz8whrRmUeXew28MMWebmfLmw=\nR:diff.go\na:0:0:444\nZ:Q1QugmVR0T4BJrcU5LIAqaDeaOg/g=\nR:diff_test.go\na:0:0:444\nZ:Q1yQF5VT4yPvSCexxSOnFqKdomqkk=\nR:example_changes.go\na:0:0:444\nZ:Q1GQTXEv0XHdktuJnj2J684hwcX6s=\nR:time_linux.go\na:0:0:444\nZ:Q131Kk0QYKE/MexScT+4zTgNXLJsk=\nR:time_unsupported.go\na:0:0:444\nZ:Q19/yG0eKh4+h/UBmhcCMDkdqznIM=\nR:utils_test.go\na:0:0:444\nZ:Q129MU0k8GPuEny+2lJFFmju4+kK0=\nR:whiteouts.go\na:0:0:444\nZ:Q1iRs8WFsKQINSJqptTftx+vPO7Cg=\nR:wrap.go\na:0:0:444\nZ:Q1CAok+yzmpkrp40ZgDk7vlVNXgpE=\nR:wrap_test.go\na:0:0:444\nZ:Q13+URCpTBaL6OeMJgkyvROYInv2U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/archive/testdata\nM:0:0:555\nR:broken.tar\na:0:0:444\nZ:Q1gwhQju+KtB9jzWJjShUObJuDt5Q=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/authorization\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q12DZnnHQK1bxV/ckqgwUfDJykrXw=\nR:api_test.go\na:0:0:444\nZ:Q14l7gyt4zdsrWKQhowD0O2+AnlwY=\nR:authz.go\na:0:0:444\nZ:Q1nu3YA7GvQ6q8gLEtJCMmPq3nP98=\nR:authz_unix_test.go\na:0:0:444\nZ:Q1Lwf/oB1CWvd+AEw4Z8Q+0Eocp7s=\nR:middleware.go\na:0:0:444\nZ:Q1Y/rQphyyuRPGjtUGnebVDHPRuYw=\nR:middleware_test.go\na:0:0:444\nZ:Q1eV9qk1BIHBlbnzMv05JMq+TxIwA=\nR:middleware_unix_test.go\na:0:0:444\nZ:Q17JOf8qzm9IMI3iKnzOoKPS37Z1s=\nR:plugin.go\na:0:0:444\nZ:Q16rJiIDiWmJ9Lq0KUDU82Or/dotU=\nR:response.go\na:0:0:444\nZ:Q1/b0D9W9I4qBwoscbRT1Ys4Cfq9o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/broadcaster\nM:0:0:555\nR:unbuffered.go\na:0:0:444\nZ:Q1+Zhe37eiTzZaiP6VKbpn2FQozb4=\nR:unbuffered_test.go\na:0:0:444\nZ:Q1EpGPT3TEI+sFFssFXQeG7TIr6UM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/capabilities\nM:0:0:555\nR:caps.go\na:0:0:444\nZ:Q1AxALMIVffqWS+QDFheJVfL9IbyU=\nR:caps_test.go\na:0:0:444\nZ:Q1kCEc9+1TIvNd3ymK2LV8PgZGdtU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/chrootarchive\nM:0:0:555\nR:archive.go\na:0:0:444\nZ:Q1ytXs5W/HfUIAHmY1OsvJOUhmr54=\nR:archive_test.go\na:0:0:444\nZ:Q1vjkzvd5+1lKlYBQ3f1b8IQMuT3I=\nR:archive_unix.go\na:0:0:444\nZ:Q1Lu/CCvfD3EDW6YfWouPxS7RXEbY=\nR:archive_unix_test.go\na:0:0:444\nZ:Q1P630lmLmXc2GRR/Y+UjGcBgaSI4=\nR:archive_windows.go\na:0:0:444\nZ:Q1bOzeJmc1R++45r/mshoyUCfbwAE=\nR:chroot_linux.go\na:0:0:444\nZ:Q1HViy/hyFsoxjTdc1DA4oc1NeCZ0=\nR:chroot_unix.go\na:0:0:444\nZ:Q1eQERuHOHaGjAnea/WCkrtWJ7N6s=\nR:diff.go\na:0:0:444\nZ:Q1RLweFxX7eZs/HROXMSGVRYfOQ+4=\nR:diff_unix.go\na:0:0:444\nZ:Q1kHSYtVpOGEDkKxlpvuX6S6QXnNs=\nR:diff_windows.go\na:0:0:444\nZ:Q15lYFcfCm+NhXlvohXhzJzI46QR8=\nR:init_unix.go\na:0:0:444\nZ:Q161guxD1/DoCMwJX4CgD+927BKa0=\nR:init_windows.go\na:0:0:444\nZ:Q1Wwh0Cq+0pvGba4ckW1KH/KYXfW4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/containerfs\nM:0:0:555\nR:archiver.go\na:0:0:444\nZ:Q1xH/9QoNPy9LQ2kA228Mz5iI26Ks=\nR:containerfs.go\na:0:0:444\nZ:Q1GtJUBH/5mGzi8/eMVzeRM/kc8ik=\nR:containerfs_unix.go\na:0:0:444\nZ:Q1ZsOB8snd/jYDKw8UtxOcSQgqIrA=\nR:containerfs_windows.go\na:0:0:444\nZ:Q1X6co+hi1/yLEFoqLaEZweRL1Xfk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/devicemapper\nM:0:0:555\nR:devmapper.go\na:0:0:444\nZ:Q1Td1JTPKZEabHvLRV3H1cW1IFB1o=\nR:devmapper_log.go\na:0:0:444\nZ:Q1r03nTqg6R1YXu/ZzFeXixlJ8EZA=\nR:devmapper_wrapper.go\na:0:0:444\nZ:Q1zZwFHo6jdqQmS8ryR0Tyfez28Q0=\nR:devmapper_wrapper_dynamic.go\na:0:0:444\nZ:Q1zAkjo64W1odo/GvIfh+TXts3z+o=\nR:devmapper_wrapper_dynamic_deferred_remove.go\na:0:0:444\nZ:Q1SYJfNy7ytpPO5DsF2EVr7uWvTZs=\nR:devmapper_wrapper_dynamic_dlsym_deferred_remove.go\na:0:0:444\nZ:Q1+3+XW1h8c1UMcnXuQfjLVk8lQ1E=\nR:devmapper_wrapper_no_deferred_remove.go\na:0:0:444\nZ:Q1oGURx6sD2fJ712ox6U1nCzgjazo=\nR:ioctl.go\na:0:0:444\nZ:Q1QLW9jF/oXiuPFoWGnlNorGfHAnc=\nR:log.go\na:0:0:444\nZ:Q1DFDpcaQ8nTV47YqlyHh3YlAXPFc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/directory\nM:0:0:555\nR:directory.go\na:0:0:444\nZ:Q1hIlc3qSYsRFd++cPYuWP9dARM5U=\nR:directory_test.go\na:0:0:444\nZ:Q1+HdaAptBF3rACB+41V7B5065jDc=\nR:directory_unix.go\na:0:0:444\nZ:Q1iay7Hb+OLT6xkc1uz2kd1+5CHnQ=\nR:directory_windows.go\na:0:0:444\nZ:Q1ys+ezGQeIi+x/ZjTFFKQe1WwUV0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/discovery\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1zzlA82mxoMx47wIyIP8HOQDVSGc=\nR:backends.go\na:0:0:444\nZ:Q1OykWv7/UOPrH+MCn0LjnN5GSGEA=\nR:discovery.go\na:0:0:444\nZ:Q1laDwIsxNjz0V19alWFMNfBggFXg=\nR:discovery_test.go\na:0:0:444\nZ:Q1URm10cMjNqKq9CGsibaRgLIpXRY=\nR:entry.go\na:0:0:444\nZ:Q1vwYI+mGOEuoLSC4EU3uOL5akFcM=\nR:generator.go\na:0:0:444\nZ:Q1WfLLa5NHuRY1BHcVSVHOt5GzvjA=\nR:generator_test.go\na:0:0:444\nZ:Q1wSF6wH3zXTk0vYNjq6H5o+wiiJo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/discovery/file\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1SnbRIbM7LfkG+zjKuJQvACmAX3o=\nR:file_test.go\na:0:0:444\nZ:Q10nB02jsQqC11aBS3G2vNbhrvVbo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/discovery/kv\nM:0:0:555\nR:kv.go\na:0:0:444\nZ:Q1LDiV08krpsxmbD8wZ8nS9IVGJNg=\nR:kv_test.go\na:0:0:444\nZ:Q198jRnUHA7RPRYjFZa5dz5y/okcw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/discovery/memory\nM:0:0:555\nR:memory.go\na:0:0:444\nZ:Q1SCGtjzLT9lZic7v68RszeWWdMTE=\nR:memory_test.go\na:0:0:444\nZ:Q1MmZesMPvmm8TbqmI0OXczTjh37M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/discovery/nodes\nM:0:0:555\nR:nodes.go\na:0:0:444\nZ:Q16y6Xe9HyNZk2zJhSKxf2a/3VYOo=\nR:nodes_test.go\na:0:0:444\nZ:Q1pQGZAaT85xg+croPMF3xx6eOdic=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/dmesg\nM:0:0:555\nR:dmesg_linux.go\na:0:0:444\nZ:Q1dvxR21kcuTm2DBdRiZZp4ncKDTI=\nR:dmesg_linux_test.go\na:0:0:444\nZ:Q1BBPjDTqbLyTGOLQsF3l8UDKGRFg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/filenotify\nM:0:0:555\nR:filenotify.go\na:0:0:444\nZ:Q1uOHKlkWlTQR6CiCygbF9DA6noUw=\nR:fsnotify.go\na:0:0:444\nZ:Q1KCPxz4FVacGsvKhHEIXfp1UFREw=\nR:poller.go\na:0:0:444\nZ:Q1LcEAAbvwWnMsXuX+Q4r88JbXXOs=\nR:poller_test.go\na:0:0:444\nZ:Q1MWrgUNAeQiCiTCvWtUrFyLvCeqE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/fileutils\nM:0:0:555\nR:fileutils.go\na:0:0:444\nZ:Q1Z6JeR2XRy4LHBXpYl78AbWpOd20=\nR:fileutils_darwin.go\na:0:0:444\nZ:Q11Sic957yzHRO73ld66LUXOwsJyE=\nR:fileutils_test.go\na:0:0:444\nZ:Q1Zg9qg7Bno3eDPmhMEjRUDb4/n7c=\nR:fileutils_unix.go\na:0:0:444\nZ:Q1qldJ0TPZamKsa8Fje3Ty32Whu6Q=\nR:fileutils_windows.go\na:0:0:444\nZ:Q1HpPQ8Vrn7hSzCNO0RR0bVWf+Ia8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/fsutils\nM:0:0:555\nR:fsutils_linux.go\na:0:0:444\nZ:Q1m1Ihhp3qmnIadwhzSuZzdnuvI6M=\nR:fsutils_linux_test.go\na:0:0:444\nZ:Q1n0lFu5pibW+8tlgM46avzo5YAq0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/homedir\nM:0:0:555\nR:homedir_linux.go\na:0:0:444\nZ:Q1+CxpL1lWet9Lop5IvLkbxt4HlS4=\nR:homedir_others.go\na:0:0:444\nZ:Q1E8r7UBMInAS+YpjeeiFUqtHthtU=\nR:homedir_test.go\na:0:0:444\nZ:Q17DNOFTsYg70PEadgUFqTG3Wd4d4=\nR:homedir_unix.go\na:0:0:444\nZ:Q1Qy4ZUGJE3JxGvP/loGrHPOtxBA8=\nR:homedir_windows.go\na:0:0:444\nZ:Q1atRiDhVTB4Qs7zvUU14iEF8Zwsg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/idtools\nM:0:0:555\nR:idtools.go\na:0:0:444\nZ:Q1d9r/7kmonmjNSCPmA7UJ6VNoeh8=\nR:idtools_test.go\na:0:0:444\nZ:Q1iy/nZDHvu70QvbgkVeaOn0xBqOQ=\nR:idtools_unix.go\na:0:0:444\nZ:Q1whp1QnB6hjkNtqRuWd9nYsRBt9c=\nR:idtools_unix_test.go\na:0:0:444\nZ:Q1y9ZkizZ+AC+4A/nn0XBMf/0a+u0=\nR:idtools_windows.go\na:0:0:444\nZ:Q191qQU0xQZJQD/bL6gkk7Bfyyan0=\nR:usergroupadd_linux.go\na:0:0:444\nZ:Q1wBOKXoK3E+zyesW5kVBdAOlEhSA=\nR:usergroupadd_unsupported.go\na:0:0:444\nZ:Q1dQf9lw11OpUM7eky+wPnBK+g6D0=\nR:utils_unix.go\na:0:0:444\nZ:Q1VxrPaeHUdafUuYrwVK2nlZlgXnI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/ioutils\nM:0:0:555\nR:buffer.go\na:0:0:444\nZ:Q1uhaao+aiFgExluJ0Ik1tl7h06KY=\nR:buffer_test.go\na:0:0:444\nZ:Q1T0wQALEY2GfT10n9FObTCf++NZk=\nR:bytespipe.go\na:0:0:444\nZ:Q1z+T2xLVnKMfXh3BtMFf4Kj6zpLk=\nR:bytespipe_test.go\na:0:0:444\nZ:Q147MWY1tyZrxPLnOTwmoGu+QL0gI=\nR:fswriters.go\na:0:0:444\nZ:Q1DQ7lZfBOfCcc8gEUDziJ8kRcm08=\nR:fswriters_test.go\na:0:0:444\nZ:Q1bIQK1T+iTUQcwmgk8CLUxlka1CA=\nR:readers.go\na:0:0:444\nZ:Q1iXK9tqSy0l8IzKl6GorRTU0TXHY=\nR:readers_test.go\na:0:0:444\nZ:Q1+UK91uNbvu/w3uJDVTH4yj82WpU=\nR:temp_unix.go\na:0:0:444\nZ:Q1ilCss5EmOZYQv7CZshwQD7Mj2Rw=\nR:temp_windows.go\na:0:0:444\nZ:Q1Tr5ptRhiQZIWWIHadwweyrdgfKU=\nR:writeflusher.go\na:0:0:444\nZ:Q19rj7D1BJKs6uIF3N7Bw6WtCJLZc=\nR:writers.go\na:0:0:444\nZ:Q1kZOkeXtM9IULNKNIHXJyN4yIMck=\nR:writers_test.go\na:0:0:444\nZ:Q1AyAgom95hGP4lHzszf8a430uHB0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/jsonmessage\nM:0:0:555\nR:jsonmessage.go\na:0:0:444\nZ:Q1P22j8QV6GCcT1h4vXaCdiN+Z8y8=\nR:jsonmessage_test.go\na:0:0:444\nZ:Q11EQolRU7NuH8AeIT74vRg5wkgu4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/locker\nM:0:0:555\nR:locker.go\na:0:0:444\nZ:Q1AIbYdAzvGn0xGUoMm8tH1WzhNLw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/longpath\nM:0:0:555\nR:longpath.go\na:0:0:444\nZ:Q1Q3zgB/yDqcmub5bD6hdv5FMKZAM=\nR:longpath_test.go\na:0:0:444\nZ:Q1ISfJYBZ5AuCVwPEQy6I7RgwyJ2o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/loopback\nM:0:0:555\nR:attach_loopback.go\na:0:0:444\nZ:Q11Bgnng35qpzdcbtTGWvYbAtlTN8=\nR:ioctl.go\na:0:0:444\nZ:Q1Uj5AyuRx2mQMQlVhuxKCiZrS274=\nR:loop_wrapper.go\na:0:0:444\nZ:Q1/zWG1KmCTNPLIDaUq4wqWtBq2Js=\nR:loopback.go\na:0:0:444\nZ:Q1SetpFXTu5GVmn0tK4FGS8/Oe5vI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/mount\nM:0:0:555\nR:deprecated.go\na:0:0:444\nZ:Q1geibMn+6V+4KB9JK/vBjKOTzxbo=\nR:deprecated_linux.go\na:0:0:444\nZ:Q1xByuiqlSqIXjAEScFA0WvGOy1fo=\nR:deprecated_unix.go\na:0:0:444\nZ:Q18DRrsCHnYMCOubqk8QtS+rwGODM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/namesgenerator\nM:0:0:555\nR:names-generator.go\na:0:0:444\nZ:Q12uhFWn19ZhwBozhxu5qVOASkM9E=\nR:names-generator_test.go\na:0:0:444\nZ:Q1VFb9UiEgAso672r3pM0qk6SLuNc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/namesgenerator/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/namesgenerator/cmd/names-generator\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1f0IMdohocOTzmNeArS6m7vz9rS0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/parsers\nM:0:0:555\nR:parsers.go\na:0:0:444\nZ:Q1XXBuQU28MnMvDAP4nNWMxS0WaL0=\nR:parsers_test.go\na:0:0:444\nZ:Q15x5MHDSLJSJfyEs4hResdbbU4ac=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/parsers/kernel\nM:0:0:555\nR:kernel.go\na:0:0:444\nZ:Q1Ywn4Jal+4Rb7ZpROr6wne0OgHy8=\nR:kernel_darwin.go\na:0:0:444\nZ:Q1M6zTO5B8Uyz6RshNFre4E4Ck4fA=\nR:kernel_darwin_test.go\na:0:0:444\nZ:Q1P8vzNywK16vPs20gmoHE4gurfNc=\nR:kernel_unix.go\na:0:0:444\nZ:Q133T2iHuljhGu9zY9SU/XNkcUBeQ=\nR:kernel_unix_test.go\na:0:0:444\nZ:Q1hMSIlOTQ+cDD4ZBV6t8xsdzK4dY=\nR:kernel_windows.go\na:0:0:444\nZ:Q1PNoHUGIHLpj7tI62Rg3yLiMmRUo=\nR:uname_linux.go\na:0:0:444\nZ:Q1eA7SuOMauEqwTIUIge2UIX72nPE=\nR:uname_unsupported.go\na:0:0:444\nZ:Q15QShwc9cCaMxTjXM9R0SIMe4U4Y=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/parsers/operatingsystem\nM:0:0:555\nR:operatingsystem_linux.go\na:0:0:444\nZ:Q1hFedTFjI9Myc1okeNjbucBO23RE=\nR:operatingsystem_linux_test.go\na:0:0:444\nZ:Q1TLji5sTJXK8aejqNtcO95IdjwZY=\nR:operatingsystem_unix.go\na:0:0:444\nZ:Q1nbkIaWkALAhYGqQdpkmHuOoDxDc=\nR:operatingsystem_windows.go\na:0:0:444\nZ:Q1RiWNCCz2HH+XmYoo86h2ANmBYJc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/pidfile\nM:0:0:555\nR:pidfile.go\na:0:0:444\nZ:Q1iNx463v2ZDVNJUGs45eNDxjORQg=\nR:pidfile_darwin.go\na:0:0:444\nZ:Q19ByYZZPfbsLRnqNObc6HrO/0cDw=\nR:pidfile_test.go\na:0:0:444\nZ:Q1X1GjKkOsTJQTNVoxIkMijqWESP0=\nR:pidfile_unix.go\na:0:0:444\nZ:Q1ayRoxtiEcK+SmzmSthbt2ubW27A=\nR:pidfile_windows.go\na:0:0:444\nZ:Q14FIuhC/+174PPTWgC1H1geEaiPU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/platform\nM:0:0:555\nR:architecture_unix.go\na:0:0:444\nZ:Q16FYzDASYUkcu8GDqHmC/jvnTLbI=\nR:architecture_windows.go\na:0:0:444\nZ:Q1O0BXhiVze87hC7d/mPwzRiFKo40=\nR:platform.go\na:0:0:444\nZ:Q1JcFhYq5lNDEhxaCMcX4na8vLeBg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugingetter\nM:0:0:555\nR:getter.go\na:0:0:444\nZ:Q12/rw5f0/6hp/4ur4Nj+aP6uXjd8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugins\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1ZQa2w2PL00v76oS+NlQWDDrkfmw=\nR:client_test.go\na:0:0:444\nZ:Q1dqa8M8MvdJ70bz1c/Mb1s0hJS1w=\nR:discovery.go\na:0:0:444\nZ:Q1ahyJKnewbj3KSnJ3BTq4TbOWyWY=\nR:discovery_test.go\na:0:0:444\nZ:Q1REfux54cOB18ZYUOVKo/S9mkEIw=\nR:discovery_unix.go\na:0:0:444\nZ:Q18QH9ZKqSxfZ9xs79e01/3mZExdk=\nR:discovery_unix_test.go\na:0:0:444\nZ:Q1fX577jHoOHJo+EdjjbUVTp3ymZQ=\nR:discovery_windows.go\na:0:0:444\nZ:Q1ARGbGWLAx3BWxyz+dJMOPRSvJL8=\nR:errors.go\na:0:0:444\nZ:Q1D2oEI+w8lu1/IKQkNXwgroiinfg=\nR:plugin_test.go\na:0:0:444\nZ:Q1BDGBFuscAFAD1oVGcWEDKcZccxI=\nR:plugins.go\na:0:0:444\nZ:Q1Dhf3BYmG6JA2nqKO1e5DxVdjPg8=\nR:plugins_unix.go\na:0:0:444\nZ:Q1c1UchKv+acbdXw1rZFZLZH7KcEY=\nR:plugins_windows.go\na:0:0:444\nZ:Q1dl88y4YZoyUXU++2+Xkf1WlJM6E=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugins/pluginrpc-gen\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1LXACgx+tlrluR23Cdngs9jdNbAw=\nR:main.go\na:0:0:444\nZ:Q1YOHoSC2kh5iEw1Xc9o3+r+IlMIU=\nR:parser.go\na:0:0:444\nZ:Q1mB7vtYK0D7zpwtjR6JpVMsPXevI=\nR:parser_test.go\na:0:0:444\nZ:Q1Zlgel9SW0sTFO/9D7/htdQ5gYlQ=\nR:template.go\na:0:0:444\nZ:Q1aYX1xkcd34NBmiYZ6KzvAjQyC+8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugins/pluginrpc-gen/fixtures\nM:0:0:555\nR:foo.go\na:0:0:444\nZ:Q1m5jdpZGh5G2I+kOobeqf7Rgf9ps=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugins/pluginrpc-gen/fixtures/otherfixture\nM:0:0:555\nR:spaceship.go\na:0:0:444\nZ:Q1taII6Jv8oMs/nZWc8dkigqVNrJg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/plugins/transport\nM:0:0:555\nR:http.go\na:0:0:444\nZ:Q1d2Wiw98330IKQSRsx45VjV5QJRI=\nR:http_test.go\na:0:0:444\nZ:Q1VniHZ/wHswLymqd2ccpoi7izyyI=\nR:transport.go\na:0:0:444\nZ:Q1xSFp75U9rNizr16gVpO3l2WkgH0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/pools\nM:0:0:555\nR:pools.go\na:0:0:444\nZ:Q1XGPU6T9lZ7SDi4YQnJcJKUQpwjU=\nR:pools_test.go\na:0:0:444\nZ:Q1sVZFjyT0Dzn5rBwYx3ObNvU+XKI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/progress\nM:0:0:555\nR:progress.go\na:0:0:444\nZ:Q1W70IhDvOI96kTF2QXX7Ae/VSFao=\nR:progressreader.go\na:0:0:444\nZ:Q1Hx0dt3V2ljw0hXgdoDXVlk90AVo=\nR:progressreader_test.go\na:0:0:444\nZ:Q1i5pWPb8CPpC4S0Qn+oJgPYevGXw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/pubsub\nM:0:0:555\nR:publisher.go\na:0:0:444\nZ:Q1mQ2AgH4Uj7FNxrVA0F3RQe2KQFc=\nR:publisher_test.go\na:0:0:444\nZ:Q1bH0c4QzJqTkRksymTXz5cPDDJWM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/reexec\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1+VQgTbKQKtTUMz3KT6Bmuj2dKJQ=\nR:command_linux.go\na:0:0:444\nZ:Q14AjaSJ4u+OB3F8+rmay3iSHAjn0=\nR:command_unix.go\na:0:0:444\nZ:Q1EE+SSHOBI4JHu5dBieMXY093U0Q=\nR:command_unsupported.go\na:0:0:444\nZ:Q1plLpkzFZHJGLMdo9nIdmUJW1VBk=\nR:command_windows.go\na:0:0:444\nZ:Q1DzuJWhcjRbP+WbobN1jcPvzxEfc=\nR:reexec.go\na:0:0:444\nZ:Q12+J0g1UKHTIGjk0kotT/Jlk3kR4=\nR:reexec_test.go\na:0:0:444\nZ:Q1ozk99e0WJCQ2JvemQHyEIU5brDw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/signal\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ccv1cKM4IqdvYc5VCHXr8MwGWoA=\nR:signal.go\na:0:0:444\nZ:Q1sFbxg1wRST148nDoBYlL0gPQPYM=\nR:signal_darwin.go\na:0:0:444\nZ:Q1pEepcJrWdY8q4XFucRBbqbbFaB0=\nR:signal_freebsd.go\na:0:0:444\nZ:Q13vRrhFCBMTB70FE2DDWL6112lJI=\nR:signal_linux.go\na:0:0:444\nZ:Q1C3Z5LiTlJ7BE2IXNPeP9M1zq0cw=\nR:signal_linux_mipsx.go\na:0:0:444\nZ:Q1sxYSra9h0lq3ym22nBR/sCmmZBQ=\nR:signal_linux_test.go\na:0:0:444\nZ:Q1PZSv5BdfGIQwR9UlavuLuam1On4=\nR:signal_test.go\na:0:0:444\nZ:Q1Dl97NWW4tD4wzsEgMxVTMxygYpg=\nR:signal_unix.go\na:0:0:444\nZ:Q158VYKFRHOVwO+tIinb1v4OTnGR4=\nR:signal_unsupported.go\na:0:0:444\nZ:Q1Zzmhiju1BqkaRPJ7IO+xEkudVjI=\nR:signal_windows.go\na:0:0:444\nZ:Q1OpKBQVA+ZQwKlxg5cvLW+8RHYas=\nR:trap.go\na:0:0:444\nZ:Q1w1FnBeLzwd0nqt6ndJHGFJJ0SwM=\nR:trap_linux_test.go\na:0:0:444\nZ:Q1lUb8Pb3US7Wfa8pRYQl4c+v3V9Y=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/signal/testfiles\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1QjU2hXjEFC7yBoNF91yuJI3plhQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/stdcopy\nM:0:0:555\nR:stdcopy.go\na:0:0:444\nZ:Q1ZXFiMs8QuuZsOxpZm5LfVpZQpLA=\nR:stdcopy_test.go\na:0:0:444\nZ:Q12BpaflEOnhkpY2BNmosPfeQDq2M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/streamformatter\nM:0:0:555\nR:streamformatter.go\na:0:0:444\nZ:Q1dg6pDCDn6KmhqtK5ng1W+Qvv8xo=\nR:streamformatter_test.go\na:0:0:444\nZ:Q1gE+InsQZxDXyX+zj0FdrwbdwdeU=\nR:streamwriter.go\na:0:0:444\nZ:Q1oh+7S91nbQneCm9oJ/zIKdSlo/s=\nR:streamwriter_test.go\na:0:0:444\nZ:Q1dKpi9o8f8IB6jkrSxYedAPE/VVc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/stringid\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1t8Qvkp2+MusdlvjHvFEgUR5mM5I=\nR:stringid.go\na:0:0:444\nZ:Q1OWZBnJ3Z+wo32JpvuYhiUR3yYlg=\nR:stringid_test.go\na:0:0:444\nZ:Q16sml31nsr59W1cdXHbaTwJBBDYY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/symlink\nM:0:0:555\nR:deprecated.go\na:0:0:444\nZ:Q1yA/3EmLusaMrtXP5FWLQ79LtYDc=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/sysinfo\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ePOFlha5N6c22AF1wvReZM2gKpQ=\nR:cgroup2_linux.go\na:0:0:444\nZ:Q10JqRxWmEgqowRC+qt9u/J9Y1RIo=\nR:numcpu.go\na:0:0:444\nZ:Q1ypMyUq0z8foMmxz9FJ5W8gr3UTw=\nR:numcpu_linux.go\na:0:0:444\nZ:Q1+gh5FKA4v5IzpGgNpfVYXK9IjMM=\nR:numcpu_windows.go\na:0:0:444\nZ:Q1BGjstGxhNMckLz7fdxFeX1EyfwM=\nR:sysinfo.go\na:0:0:444\nZ:Q1H/tY+1RvxzXshJ3nuNXiC1dDEr0=\nR:sysinfo_linux.go\na:0:0:444\nZ:Q156sX2lYxkootL7iGXWXqrnQVzKE=\nR:sysinfo_linux_test.go\na:0:0:444\nZ:Q1i5Wv7Dc+KAo+FasTcmNlsUNXeOc=\nR:sysinfo_test.go\na:0:0:444\nZ:Q17Liz8D9rk7Ou1vT+K79aZ27Jwcs=\nR:sysinfo_unix.go\na:0:0:444\nZ:Q13TEVDxtd+AokmRDgGOBzQhRn5IQ=\nR:sysinfo_windows.go\na:0:0:444\nZ:Q16DDn4xKujpllyPyT8Xw19KuW34o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/system\nM:0:0:555\nR:args_windows.go\na:0:0:444\nZ:Q1gnRAaoiq5UcqYZv4pXI+2YeomeM=\nR:chtimes.go\na:0:0:444\nZ:Q1FeQkI1uWMNuHTWpSsJ+/WxyeJYQ=\nR:chtimes_linux_test.go\na:0:0:444\nZ:Q12zmvank3eym2yvYPt8zTRTqLOjM=\nR:chtimes_nowindows.go\na:0:0:444\nZ:Q1KK1fsamfZ9QzLPrALmDXeEYOYNg=\nR:chtimes_test.go\na:0:0:444\nZ:Q1b/eljXY8lZyd+oidfymGyNvt9JU=\nR:chtimes_windows.go\na:0:0:444\nZ:Q1dJeCibxX7tzU/K8Ryb21CteDCK4=\nR:chtimes_windows_test.go\na:0:0:444\nZ:Q1ITPKFq0NKrWExwOI/R7JowzFcEE=\nR:errors.go\na:0:0:444\nZ:Q1Rfk0/2eOpFykvtH99LxOtMaThog=\nR:exitcode.go\na:0:0:444\nZ:Q1DhPVNtzHhuP6DiHk1z73JFgGe24=\nR:filesys_unix.go\na:0:0:444\nZ:Q1k4zhckVNTC9GW7a8S0PWC7OaWPM=\nR:filesys_windows.go\na:0:0:444\nZ:Q1mj3+yDQgjka5MhQBil2L/3qH7aU=\nR:init.go\na:0:0:444\nZ:Q1w549/jWMViLHxMID1Gnv/SaLaPQ=\nR:init_windows.go\na:0:0:444\nZ:Q14eSZ+/bHlU1CL+3pdV1bpHru4iA=\nR:lcow.go\na:0:0:444\nZ:Q10gpnlNTNzNXsG6nk2kVDJq+QSdY=\nR:lcow_unsupported.go\na:0:0:444\nZ:Q1Hip8xI9rpiaHXCOKgYT6HIwqmIQ=\nR:lstat_unix.go\na:0:0:444\nZ:Q1A7feZw2/DHxEbWmxqcr3m9cPK3Y=\nR:lstat_unix_test.go\na:0:0:444\nZ:Q1+2UVy5dE0h3HfvosMQ3DuZgZgvM=\nR:lstat_windows.go\na:0:0:444\nZ:Q11Qc7j5ykCmIK9MuQmZfRzjbKAqE=\nR:meminfo.go\na:0:0:444\nZ:Q1lYRWsdtQE/9dUGKdbF/v79R3aOA=\nR:meminfo_linux.go\na:0:0:444\nZ:Q1+t3P2cM8mjMREaxMO1U2BPelYG0=\nR:meminfo_unix_test.go\na:0:0:444\nZ:Q1LfMZhFUaUcsw+N/kiNtYBVuI0rQ=\nR:meminfo_unsupported.go\na:0:0:444\nZ:Q1eUX7BoEcof+ZVbhAOMtM3rEQpso=\nR:meminfo_windows.go\na:0:0:444\nZ:Q1av3Dj9DLBbhluakvLsD99plQOkE=\nR:mknod.go\na:0:0:444\nZ:Q1OMKteVeAcw7jPdCG/P9SD3s705w=\nR:mknod_freebsd.go\na:0:0:444\nZ:Q1qpX8mub9i2g3ncVdwbkqwGPLcbs=\nR:mknod_unix.go\na:0:0:444\nZ:Q1AuA/T29y2w/vI9m112GaHHkeTTY=\nR:mknod_windows.go\na:0:0:444\nZ:Q1hWFWSLNTN4L9tpwKQA5OjImkzoE=\nR:path.go\na:0:0:444\nZ:Q1aeaWEYXDPETS+SDdCl+RZ0Ej6sY=\nR:path_unix.go\na:0:0:444\nZ:Q1xmyyz/6CSZHHRWdCivMuaE2eHPk=\nR:path_windows.go\na:0:0:444\nZ:Q1XxGXG/3N0xDL53+cW3oarOs1s8M=\nR:path_windows_test.go\na:0:0:444\nZ:Q16wxhBOk84Ai1SRLxiL5RCxoO2lE=\nR:process_unix.go\na:0:0:444\nZ:Q1t4Haq3Fxe099hAx2o2EENH2o8ro=\nR:process_windows.go\na:0:0:444\nZ:Q1ZeUl0DSEnYAoEVhR3Rs59hLkD7g=\nR:rm.go\na:0:0:444\nZ:Q1JBU6ky2dJLIAMjtM5yCYIEAQN5k=\nR:rm_nodarwin_test.go\na:0:0:444\nZ:Q1Nm6JHwlqnrIwb6kHmr61CrRlsnA=\nR:rm_test.go\na:0:0:444\nZ:Q16NVvV0o1QDcShPk0ZB3/1E7H3Lo=\nR:rm_windows.go\na:0:0:444\nZ:Q1IHDTqJLr4JyPQZYHwhLJAygHqRY=\nR:stat_bsd.go\na:0:0:444\nZ:Q11Y0ZW3n4tkoheU4is+lg/W5Sdf0=\nR:stat_darwin.go\na:0:0:444\nZ:Q1Qkf2WalmqKqmP/9Qfa5pyfOm7ds=\nR:stat_linux.go\na:0:0:444\nZ:Q1xv/iBdsLsRHjDoRYupmamjiFXY4=\nR:stat_openbsd.go\na:0:0:444\nZ:Q1SVReVH1Lq7QjDbbSbmBWT49j4m4=\nR:stat_solaris.go\na:0:0:444\nZ:Q1pts5NQbYU4+xkR9Fh+RBxdqJ28A=\nR:stat_unix.go\na:0:0:444\nZ:Q1m8N5iq9ABhfEpm3O2JmVArojp04=\nR:stat_unix_test.go\na:0:0:444\nZ:Q1mx3fPh5j62FPPTW05fII2dQ8AJM=\nR:stat_windows.go\na:0:0:444\nZ:Q1OABEnOTU/7FVLVXkNVNbM2XqPVs=\nR:syscall_unix.go\na:0:0:444\nZ:Q11+W8lJ2zP8qFNAZTXMvYNP0SqiI=\nR:syscall_windows.go\na:0:0:444\nZ:Q1GKTB+c4aMhla/ZAmvsy0fRazFJk=\nR:syscall_windows_test.go\na:0:0:444\nZ:Q1mu4ltlcPXLR+T54GCEDvfiPVwTI=\nR:umask.go\na:0:0:444\nZ:Q1cG0P8WkQ46VCqfJcgwqcitRDIGI=\nR:umask_windows.go\na:0:0:444\nZ:Q1pUlZDGwxU4+P6SuWnfILeTtGl2c=\nR:utimes_unix.go\na:0:0:444\nZ:Q1+pCmVw+hhSgUy27XiHvng60GdCE=\nR:utimes_unix_test.go\na:0:0:444\nZ:Q1Ldq/IwU4ObGcsZJDVEFaihbsmAE=\nR:utimes_unsupported.go\na:0:0:444\nZ:Q1tan0K5Gw1IIPH+g+zzqFZKvpy2w=\nR:xattrs_linux.go\na:0:0:444\nZ:Q1IjTnXtwQXRkZ90RL1tJhSjesbz0=\nR:xattrs_unsupported.go\na:0:0:444\nZ:Q1lj0M7sRc3A9XrwniTIxHQUpavR8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tailfile\nM:0:0:555\nR:tailfile.go\na:0:0:444\nZ:Q136M+c8KFuArMRwU+AblbzmotSJc=\nR:tailfile_test.go\na:0:0:444\nZ:Q1LH+fh2i0M0xOfxdR71uD8tbtGMk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum\nM:0:0:555\nR:builder_context.go\na:0:0:444\nZ:Q1Tf1zb4WaaeBElIQ3fVvLEwOeVlI=\nR:builder_context_test.go\na:0:0:444\nZ:Q1E/2MoV55Jfmf8B15MY2TbUB9j9U=\nR:fileinfosums.go\na:0:0:444\nZ:Q1/HxvAkZLMPNlYKaErMLRDd7T51Q=\nR:fileinfosums_test.go\na:0:0:444\nZ:Q1A5d+o6LUTzyTDLKKbqUsZ48YSDY=\nR:tarsum.go\na:0:0:444\nZ:Q1eihjaE/BbIbW75RVbBpYnnphhKw=\nR:tarsum_spec.md\na:0:0:444\nZ:Q1+CSTXRm9QpqKJVv/pCJWpQz1jUE=\nR:tarsum_test.go\na:0:0:444\nZ:Q1C4n7VGOX1hk2rlShjtYmT+KEjsQ=\nR:versioning.go\na:0:0:444\nZ:Q1U3jQqR+rb7Y21oy2qJXegIHuexk=\nR:versioning_test.go\na:0:0:444\nZ:Q1DCxvACOD9Fk7hpZUpSj5VCdkpRs=\nR:writercloser.go\na:0:0:444\nZ:Q13PgK4jpEnsS0ATBahdITjNK73Bg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum/testdata\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum/testdata/46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457\nM:0:0:555\nR:json\na:0:0:444\nZ:Q1DaRHJSAhmwQAJROz/723m/Lj7ss=\nR:layer.tar\na:0:0:444\nZ:Q1bzPCn2e6ZhviC+wbWrgGgAD2hPQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum/testdata/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158\nM:0:0:555\nR:json\na:0:0:444\nZ:Q1MKhk7bFF07xLCrTupHXaNqk/Slw=\nR:layer.tar\na:0:0:444\nZ:Q1TSSTmbQpWXNWSN1p4w4ZE5h5D2U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum/testdata/collision\nM:0:0:555\nR:collision-0.tar\na:0:0:444\nZ:Q1wb5vImvunnxq/8P7nPfq+EejQ38=\nR:collision-1.tar\na:0:0:444\nZ:Q11m6HPv6FdSLid0xJrtESMTuRMj0=\nR:collision-2.tar\na:0:0:444\nZ:Q1mm+vL4dB7UTmvkjmdFmW8K4P0pE=\nR:collision-3.tar\na:0:0:444\nZ:Q1/7yEVTApxmKEvnAt3ohfQalNAts=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/tarsum/testdata/xattr\nM:0:0:555\nR:json\na:0:0:444\nZ:Q1g2EDA/3QYdUscNGiFtWRCqAhc48=\nR:layer.tar\na:0:0:444\nZ:Q1+pZ2JlVfJREsSicgnX+91QtjOZM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/term\nM:0:0:555\nR:deprecated.go\na:0:0:444\nZ:Q10Xv6GKo0GyaPdmeps1ceaYo9c6A=\nR:deprecated_unix.go\na:0:0:444\nZ:Q1Lc2vtZ4bSsOo9zVFnNUIbsM3iQw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/term/windows\nM:0:0:555\nR:deprecated.go\na:0:0:444\nZ:Q1tx6YAVSty8iQiHFR5yo1KpypRZE=\nR:windows_test.go\na:0:0:444\nZ:Q1BsFu5YHkDPtUaj0WmVmBr4W/vvo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/truncindex\nM:0:0:555\nR:truncindex.go\na:0:0:444\nZ:Q1rqVN9ppr/KTEqJfDgtBWrUrSJ+k=\nR:truncindex_test.go\na:0:0:444\nZ:Q1ESS0D6Pyx/tTORWILyOAWFsZDF0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/urlutil\nM:0:0:555\nR:urlutil.go\na:0:0:444\nZ:Q1/3ir8gVT+DzG3BZlYxUGDiRyUmk=\nR:urlutil_test.go\na:0:0:444\nZ:Q1dv6Xk1jpCphd//lA6EyPNfWC5ng=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/pkg/useragent\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1yS32sAEUDesI4KeWMKMu+LkoPPw=\nR:useragent.go\na:0:0:444\nZ:Q1sgmdAoWrB6u8TqVG8GDq9xLaIyU=\nR:useragent_test.go\na:0:0:444\nZ:Q1CNBuPFEtEhqvZgbPF1XDgBFkdLw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/plugin\nM:0:0:555\nR:backend_linux.go\na:0:0:444\nZ:Q1J++wjmTCWifYIURLkzLazZXDtO4=\nR:backend_linux_test.go\na:0:0:444\nZ:Q1LN2QZgXnQQgDePz+MPF3USGf6uw=\nR:backend_unsupported.go\na:0:0:444\nZ:Q13WhWRIMdykdstlQvNtdiEbj92Bc=\nR:defs.go\na:0:0:444\nZ:Q1MWCFt2JDyIDisgtoPQ39IfJR2pA=\nR:errors.go\na:0:0:444\nZ:Q1N2C+CEsZ3ooU/GWSvNl7mO17Q8I=\nR:events.go\na:0:0:444\nZ:Q1fFyIyeDFH+8emBCWVHuaR604d5w=\nR:fetch_linux.go\na:0:0:444\nZ:Q1uAklwPMxNZ60v7r7Dv5JMKyk/m0=\nR:manager.go\na:0:0:444\nZ:Q1zZGWQsscfmoWVeIqa1t3aZ77OUg=\nR:manager_linux.go\na:0:0:444\nZ:Q1WtppGM9kDxuwkNVFf5e+B+Q+eVY=\nR:manager_linux_test.go\na:0:0:444\nZ:Q1lT4ip72P8oD/3Dioc68GSmdW6zw=\nR:manager_test.go\na:0:0:444\nZ:Q19eSXrQsMtKBZNYHgZWEAWVs0ijg=\nR:manager_windows.go\na:0:0:444\nZ:Q1oKBM2o92xVkLlmIKQJ/euwSbB/Q=\nR:progress.go\na:0:0:444\nZ:Q1Gzy1/xZJLMsvZcoSuxmkFRmUQHg=\nR:registry.go\na:0:0:444\nZ:Q1awWuOJqVU5rXc7mCWOiD+H+Oc04=\nR:store.go\na:0:0:444\nZ:Q1GBlOywamttlmgQR75fObhyuo+bw=\nR:store_test.go\na:0:0:444\nZ:Q1DJp8UlihMHe+fipbMjSgsIgpOi0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/plugin/executor\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/plugin/executor/containerd\nM:0:0:555\nR:containerd.go\na:0:0:444\nZ:Q1m5tt7smGGbxK6WK7mrvrQHwh198=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/plugin/v2\nM:0:0:555\nR:plugin.go\na:0:0:444\nZ:Q1mrGEc0i4pb7j29rMB+idf4JDy4w=\nR:plugin_linux.go\na:0:0:444\nZ:Q1Qj2rxRxljpI9lGkuIVZa6RAlpqo=\nR:plugin_unsupported.go\na:0:0:444\nZ:Q1tna4/I4Knsq0/z9q3u6i+/rfqBc=\nR:settable.go\na:0:0:444\nZ:Q1lRkNQdzsCJlqXLan/CgwwTNVt5s=\nR:settable_test.go\na:0:0:444\nZ:Q1jnTl90a0tTtL+fg7y/PvRzsMp/4=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/profiles\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/profiles/apparmor\nM:0:0:555\nR:apparmor.go\na:0:0:444\nZ:Q1zfbXfSkQr52+IP1shnFLAJVYTWY=\nR:template.go\na:0:0:444\nZ:Q1k6ep6H0SRHPlk/xMuTChZjoAOlQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/profiles/seccomp\nM:0:0:555\nR:default.json\na:0:0:444\nZ:Q1YFfq7m9sBu/4zZ3GQMRyxngyWu4=\nR:default_linux.go\na:0:0:444\nZ:Q1NoaEWsxnWk51m2iFMDJ88+h7+IM=\nR:generate.go\na:0:0:444\nZ:Q1bYUCeYyzjyPZNaumDGJLleD53Is=\nR:kernel_linux.go\na:0:0:444\nZ:Q1vezMtrEWBVuErslIQJUOtVhkyaQ=\nR:kernel_linux_test.go\na:0:0:444\nZ:Q1B5STDgGVTHe5Co1WUWHLQ6BWdyg=\nR:seccomp.go\na:0:0:444\nZ:Q1AC5l5Yy6GeTY9m6hk0IAltT0sm8=\nR:seccomp_linux.go\na:0:0:444\nZ:Q1rkOSbvxMb4f/+7Yy7JwxT2ctAhE=\nR:seccomp_test.go\na:0:0:444\nZ:Q1GoRHGemK6+ZxPvleWvtK38n95dQ=\nR:seccomp_unsupported.go\na:0:0:444\nZ:Q1+APJx9P91Oqp2QqvF6zU3MHghPg=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/profiles/seccomp/fixtures\nM:0:0:555\nR:conditional_include.json\na:0:0:444\nZ:Q12wgE6v+r9fI/3Dxj3rnPavBxxgs=\nR:default-old-format.json\na:0:0:444\nZ:Q1dJ48muK6oC4J+6sd5AM+QYXel/M=\nR:example.json\na:0:0:444\nZ:Q1erkcfijH1ucFye97Ca6rXKfkWhw=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/project\nM:0:0:555\nR:BRANCHES-AND-TAGS.md\na:0:0:444\nZ:Q1JOOQ28yUBmJ354Jb6jJtRprvdeo=\nR:GOVERNANCE.md\na:0:0:444\nZ:Q1cqSuHx2vKhs63FdG3fZR1RQyrdI=\nR:ISSUE-TRIAGE.md\na:0:0:444\nZ:Q1ilsFZO9Mu9MJrsr3HMU31saWz/I=\nR:PACKAGERS.md\na:0:0:444\nZ:Q1hrBQP2OH3BJvHUW/N8TfF8+k7jM=\nR:PATCH-RELEASES.md\na:0:0:444\nZ:Q1mhUWbgLKmtgGYxwGPv0D33+ryK0=\nR:PRINCIPLES.md\na:0:0:444\nZ:Q1vhQGvNNNa5qAZoX222fcLRX3njQ=\nR:README.md\na:0:0:444\nZ:Q1vLUnhQ4kjbZSvqilTupE7RtbEPU=\nR:RELEASE-PROCESS.md\na:0:0:444\nZ:Q1b03qsVh98wXtZDtsq2yueqCtAAs=\nR:REVIEWING.md\na:0:0:444\nZ:Q1Qk/7kcnkTM2Cmizj21Q41thkPiQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/quota\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1wSlUBtYLm7AJ7u8qVP/mYxOvmZE=\nR:projectquota.go\na:0:0:444\nZ:Q1UWwaRFl4+qrs7XzClQtU7oz+DlU=\nR:projectquota_test.go\na:0:0:444\nZ:Q1ZTYSFzKmfa1m8tz34wMOMka1EzU=\nR:projectquota_unsupported.go\na:0:0:444\nZ:Q1e/jRvVA9/HYWLThH7x0gul72YKo=\nR:testhelpers.go\na:0:0:444\nZ:Q1LhSv8kQGs5iSY5Z586ZMIfp96xs=\nR:types.go\na:0:0:444\nZ:Q178iw1mymvuMzJN+o/LbUymbea8c=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/reference\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1SZQmkTHEUQVZgV5mqgzdQezYCEI=\nR:store.go\na:0:0:444\nZ:Q1UtYW0j/OMQVUF0CmuzWpQlPByqU=\nR:store_test.go\na:0:0:444\nZ:Q1kJ3j9YfVFhg6hF4YMpon+hD6N78=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/registry\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q1zptHhKkcFn/q1e03Nr3YI80rQeU=\nR:auth_test.go\na:0:0:444\nZ:Q1Ka/0fLi7mJhhFE/B2g2C4ZAoBac=\nR:config.go\na:0:0:444\nZ:Q1YQF6wz2ggfNGs2GdQYz1g3aiWLc=\nR:config_test.go\na:0:0:444\nZ:Q1jIy1+3LYLDYTV/uDa4ZP58o/hlA=\nR:config_unix.go\na:0:0:444\nZ:Q1XJD9qIATChIlKOUfSGVbQ35IiI8=\nR:config_windows.go\na:0:0:444\nZ:Q1CxXrCQoiCHilldXEiip2ZAKSEg4=\nR:endpoint_test.go\na:0:0:444\nZ:Q1VTBuyvdICQMPOFpTxnGQuI52sIk=\nR:endpoint_v1.go\na:0:0:444\nZ:Q1Rnd4B0aNDhc8Mefon7kn2zYpKBQ=\nR:errors.go\na:0:0:444\nZ:Q1bLPUyvkErMsTchFfGB1IKBnuxVQ=\nR:registry.go\na:0:0:444\nZ:Q16EAADrDZf2Vpr49kFUGWmKKWOto=\nR:registry_mock_test.go\na:0:0:444\nZ:Q1vzNij/SDaAj1yH3a+tRiVW5Stg8=\nR:registry_test.go\na:0:0:444\nZ:Q1ybR+5w4XEPAodvHI13rw/AH1Y0w=\nR:service.go\na:0:0:444\nZ:Q1Uq3It+qsnDDJWrG9RYRAFiOCTJk=\nR:service_v2.go\na:0:0:444\nZ:Q1PsW/UN71SCWCm3wTR0Yz/ZqlGw4=\nR:session.go\na:0:0:444\nZ:Q1CPp0/yOs2YR+HXv/1VZY362GNH0=\nR:types.go\na:0:0:444\nZ:Q1w1qqnigH6VniU21ushH7hR4oGkQ=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/registry/resumable\nM:0:0:555\nR:resumablerequestreader.go\na:0:0:444\nZ:Q1fxsbNTLlPvNHv6b9KXsyiqQCy+0=\nR:resumablerequestreader_test.go\na:0:0:444\nZ:Q1zAhs+/LW90LfOzZmpwDwCeRt6Wk=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/reports\nM:0:0:555\nR:2017-05-01.md\na:0:0:444\nZ:Q1OeaqKX24wBPJVQW0Zb2zxO2OyXE=\nR:2017-05-08.md\na:0:0:444\nZ:Q1Hv0CjkECXHudyb8zVRuUjybf0Io=\nR:2017-05-15.md\na:0:0:444\nZ:Q1NaWIM6eX4x/F5ddExcU3YLT1jy0=\nR:2017-06-05.md\na:0:0:444\nZ:Q1t+eZ7eGbGVIKyXk78cFvWefof8U=\nR:2017-06-12.md\na:0:0:444\nZ:Q1lWLSrQJ08Em+9BWFgu8JdYE5PK4=\nR:2017-06-26.md\na:0:0:444\nZ:Q1jPFp9WsU5SAM/poxmPIbhiNcoL8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/reports/builder\nM:0:0:555\nR:2017-05-01.md\na:0:0:444\nZ:Q1KfE0t1e0mVD2H1wwF6ZPxeGL5f8=\nR:2017-05-08.md\na:0:0:444\nZ:Q1pAPurKZAqY7J8haHwvY1ByvKMpY=\nR:2017-05-15.md\na:0:0:444\nZ:Q11+IUDh/MlzzIGoWI0Les4dIJncc=\nR:2017-05-22.md\na:0:0:444\nZ:Q1cQjJo1r0U+Ze/mu5mg/gkWy/hC8=\nR:2017-05-29.md\na:0:0:444\nZ:Q1uEV5yTVWvQYvf+LofGdBpkgXDLg=\nR:2017-06-05.md\na:0:0:444\nZ:Q1Ef6zVLJ8jqMWfCsJaKyjWqdbuBk=\nR:2017-06-12.md\na:0:0:444\nZ:Q1JbDpQYOtGXc8TcoRbhpVZSdY7xk=\nR:2017-06-26.md\na:0:0:444\nZ:Q1SETpEsP3CW9zwzObyiA0IkZSjd0=\nR:2017-07-10.md\na:0:0:444\nZ:Q1nekH5KE3v0X1j4XAzmK2BQ1iSVE=\nR:2017-07-17.md\na:0:0:444\nZ:Q1iN5YfPa508E9EGMKLhbNIFaEpt0=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/restartmanager\nM:0:0:555\nR:restartmanager.go\na:0:0:444\nZ:Q1v5SL1VSVJuiPVx2gxEeWWa+Wf/A=\nR:restartmanager_test.go\na:0:0:444\nZ:Q1ZBqbUa9nLpITaDwy4kTYhM5bd8M=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/rootless\nM:0:0:555\nR:rootless.go\na:0:0:444\nZ:Q1sW8e4UtIX9Nf5DADykrZRc0c28o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/rootless/specconv\nM:0:0:555\nR:specconv_linux.go\na:0:0:444\nZ:Q15i2Ju85QPbMDJccz9tRAdsK0ly8=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/runconfig\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1Ti4qVo/sa/O5sJTw5NKrpn5Fl6o=\nR:config_test.go\na:0:0:444\nZ:Q1kTVK51tIAero3SULS1jt2YgMfwE=\nR:config_unix.go\na:0:0:444\nZ:Q1kTYIUSHeKii45uPHftghYV9+Hic=\nR:config_windows.go\na:0:0:444\nZ:Q144BBaqntC42wc2sco/664INlh1A=\nR:errors.go\na:0:0:444\nZ:Q1v7vDsdbk6T5lY03Bn9Gi32oAYAY=\nR:hostconfig.go\na:0:0:444\nZ:Q1Ggwuyj5BZQk3gnqcV31k8ijz8Dk=\nR:hostconfig_test.go\na:0:0:444\nZ:Q1TPfo9tIxnKZt52EYyUlqAC6f1M0=\nR:hostconfig_unix.go\na:0:0:444\nZ:Q1qQOWBgr3MKeu3Lclizl02N7jOa4=\nR:hostconfig_windows.go\na:0:0:444\nZ:Q141yGhsm+13zvx1PSXepVsSJLi7Q=\nR:hostconfig_windows_test.go\na:0:0:444\nZ:Q1iDw0YBzSOL4egIrxxnF5HBxncSI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/runconfig/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/runconfig/fixtures/unix\nM:0:0:555\nR:container_config_1_14.json\na:0:0:444\nZ:Q13EiGcyLcDlHmJ71wCCc+11o+9xc=\nR:container_config_1_17.json\na:0:0:444\nZ:Q1T/CS5z3tA9Tode5rr/cVup8vAmc=\nR:container_config_1_19.json\na:0:0:444\nZ:Q1obyB09Z9JSU7NvCtjEjdo9lhaFI=\nR:container_hostconfig_1_14.json\na:0:0:444\nZ:Q1lH5m9rwEZP66JbzV2R69/FygO9A=\nR:container_hostconfig_1_19.json\na:0:0:444\nZ:Q1Ca9s+eSoE0F0wVmikxFHVRy9o1s=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/runconfig/fixtures/windows\nM:0:0:555\nR:container_config_1_19.json\na:0:0:444\nZ:Q1fxzfUmI6o2aOwEVUriOzOZtMKfY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/runconfig/opts\nM:0:0:555\nR:parse.go\na:0:0:444\nZ:Q12mdQaOK3Qty3vacrksmTyH+ZpSs=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1nmyJdX8I6FypvIFpJj3STRfpa8c=\nR:helper.go\na:0:0:444\nZ:Q1W+MXquXbRrmV5U0UO8wv0kRey0A=\nR:helpers.go\na:0:0:444\nZ:Q1ADwzX2RUHyxO4N82fjc0TVtY4cU=\nR:stringutils.go\na:0:0:444\nZ:Q1ADTAeq1LTX9YVlmb8ZIV1VzSMdU=\nR:stringutils_test.go\na:0:0:444\nZ:Q1nwfJUWAJ98ber2N+Khk2ycMxkJA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/daemon\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1Ip0d+QTSWdVCO7UuI4bzWL1LHqA=\nR:container.go\na:0:0:444\nZ:Q1oAF498Y+qNQrXKdHFft0LYZqGnI=\nR:daemon.go\na:0:0:444\nZ:Q1lVzQ8g7fVadTsKu/8jmZ0aE1xPo=\nR:daemon_unix.go\na:0:0:444\nZ:Q1+KHQt4x/nLAcyTYvNNQ4J18gvbI=\nR:daemon_windows.go\na:0:0:444\nZ:Q1Mhgji1R8V3PGIh1FPdaNzDLWa6w=\nR:doc.go\na:0:0:444\nZ:Q1Gq6CzSTCfgU42+UggEVNrExt7S4=\nR:node.go\na:0:0:444\nZ:Q1ERAvyyzde/2Ct2H65KypSWZoIX0=\nR:ops.go\na:0:0:444\nZ:Q1UHm2g7/Av+Qov+EnE+PzKBln1wE=\nR:plugin.go\na:0:0:444\nZ:Q11zAi7RrGhweV3OLSeKHnLwFqgdc=\nR:secret.go\na:0:0:444\nZ:Q1ka5MSVvHvTKWsh6fy/pY0OGvw9I=\nR:service.go\na:0:0:444\nZ:Q1z/Gqn4OhzQY5y6k4JSzOWtMYJzM=\nR:swarm.go\na:0:0:444\nZ:Q1xAf+MjZnFxVFkWosIDQJH1+IqjM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/environment\nM:0:0:555\nR:clean.go\na:0:0:444\nZ:Q1vXZMbeTaqolOK/gw0k5QITsC46A=\nR:environment.go\na:0:0:444\nZ:Q1tvJUkE62aNHoBsjRxybqePh9z2w=\nR:protect.go\na:0:0:444\nZ:Q1SUsBVB/oB8f4pUrWR1R659V7+zs=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fakecontext\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1x11qHK7Qep68xFco7GdYwKV2JtA=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fakegit\nM:0:0:555\nR:fakegit.go\na:0:0:444\nZ:Q1NUuAanKtVtWiWMZ2ahmARe19zhE=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fakestorage\nM:0:0:555\nR:fixtures.go\na:0:0:444\nZ:Q1kcJrgzmd8dCiyjZtQyHPrHYwawA=\nR:storage.go\na:0:0:444\nZ:Q1OQ8MyUV+DDGq01I0lgQTgqEY//g=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fixtures/load\nM:0:0:555\nR:frozen.go\na:0:0:444\nZ:Q1gqpRRcuoss0gc+HgxtqLOHvyQfM=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fixtures/plugin\nM:0:0:555\nR:plugin.go\na:0:0:444\nZ:Q1FD1LjIQP31mUDui9rylb3uZ0yMY=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/fixtures/plugin/basic\nM:0:0:555\nR:basic.go\na:0:0:444\nZ:Q1o29bOEBKBySUrZGoeAbfpWFlgIo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/registry\nM:0:0:555\nR:ops.go\na:0:0:444\nZ:Q1uV5a7vB3moTgJbLWcZelZT0DSCk=\nR:registry.go\na:0:0:444\nZ:Q1y8BG7wLmX1ctPEPNULp2Aqpw/e0=\nR:registry_mock.go\na:0:0:444\nZ:Q1pblZCL1b9W9Uo5ozHQ26N9mTNlI=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/testutil/request\nM:0:0:555\nR:npipe.go\na:0:0:444\nZ:Q1KpwlR8UUJPk/xMRT8sHRoOrzfgs=\nR:npipe_windows.go\na:0:0:444\nZ:Q1ZUlVjquNcjp0ak1SOpaRBPJoNoA=\nR:ops.go\na:0:0:444\nZ:Q1D/oupiZRLb06hvg6JhWwoEamrUo=\nR:request.go\na:0:0:444\nZ:Q1qMo+363sHwahH+/XNy04XD6iXWU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume\nM:0:0:555\nR:volume.go\na:0:0:444\nZ:Q1u2kaNVjqsR0CgnMUfi8dGubVu3U=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/drivers\nM:0:0:555\nR:adapter.go\na:0:0:444\nZ:Q1rmvnvXrTriPolWZ5U5KY1AKB738=\nR:extpoint.go\na:0:0:444\nZ:Q1+WXFUkoL3p/d7257lSrbmirt168=\nR:extpoint_test.go\na:0:0:444\nZ:Q1GpcQ2koLjFBdq5OQxLWyRLU22do=\nR:proxy.go\na:0:0:444\nZ:Q1kWiJp3VOoYKMJW9Bd/vhM1oi5UY=\nR:proxy_test.go\na:0:0:444\nZ:Q1XvGe0qU9Osv8dfTj62Gqjrt6290=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/local\nM:0:0:555\nR:local.go\na:0:0:444\nZ:Q1xjBLMmfte86tJ8OEmsPh9ES14LI=\nR:local_linux_test.go\na:0:0:444\nZ:Q1hcHUGcWcZpJ34yqiZVZTeAHKgso=\nR:local_test.go\na:0:0:444\nZ:Q1h6vqW8yPDZSOPSAoDgawyn4ryuA=\nR:local_unix.go\na:0:0:444\nZ:Q18oBGZELT172NkEVqd9llKobXiZE=\nR:local_windows.go\na:0:0:444\nZ:Q1vm89N1CMR1TW4ElzD8IZJWLUyDU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/mounts\nM:0:0:555\nR:lcow_parser.go\na:0:0:444\nZ:Q1NWP/mW/xju8qrKIQl5/TfSY36FM=\nR:linux_parser.go\na:0:0:444\nZ:Q1LaPNaitm4UZjLgNj+36e+6Ei0nE=\nR:mounts.go\na:0:0:444\nZ:Q1tmgJ4PWK5bx6qalOeCeXC+68Apk=\nR:parser.go\na:0:0:444\nZ:Q1T/dpjZO5mAAIs+JNJH2wznV5+uE=\nR:parser_test.go\na:0:0:444\nZ:Q1VdieZxZz6huIzw3BZkvaGqXiGZ8=\nR:validate.go\na:0:0:444\nZ:Q1d/aojqOL76bBM7pYXIlsBakYMH8=\nR:validate_test.go\na:0:0:444\nZ:Q1gLpnhVC1Kxk6tzVAtgCZ2r2/C3Q=\nR:validate_unix_test.go\na:0:0:444\nZ:Q1F4ASd04qZRen1VQXqCpr1xYDCkY=\nR:validate_windows_test.go\na:0:0:444\nZ:Q1uaJFrCoiJsvMqhXjCJesdMBNc28=\nR:volume_copy.go\na:0:0:444\nZ:Q1gwQJ8R+2/AzMUZuV61d3/HpnDcQ=\nR:volume_unix.go\na:0:0:444\nZ:Q1R3AjvdOiri4+4GXYRQNkuRsxVFk=\nR:volume_windows.go\na:0:0:444\nZ:Q1N4DDBalTvA/O+ZvXsl+BDbRDfa8=\nR:windows_parser.go\na:0:0:444\nZ:Q14sLS+gOgIToJkPyuh8GQRHIzBfo=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/service\nM:0:0:555\nR:by.go\na:0:0:444\nZ:Q1LZuOnLix8SzGQ+uOD5L0JsqXTbY=\nR:convert.go\na:0:0:444\nZ:Q1wf2CHvLFc4lf8Jt+gkL6PARJ45s=\nR:db.go\na:0:0:444\nZ:Q1YGZ0Y+SV43hdPFmvPJ0ruq2Nx0A=\nR:db_test.go\na:0:0:444\nZ:Q1UI/LXiD6ufUjb2IohZAvMHsp2N4=\nR:default_driver.go\na:0:0:444\nZ:Q1c/9riCbt51UZSuHtpsCN7dSpMUk=\nR:default_driver_stubs.go\na:0:0:444\nZ:Q1WsCcCQUQhWbmMmb9hxLV8uRjs0A=\nR:errors.go\na:0:0:444\nZ:Q1IpNcmswlusPHOZ3scfTZIFfnXKY=\nR:restore.go\na:0:0:444\nZ:Q1vetxMORS0jQTfSfy12akF5O+3Wc=\nR:restore_test.go\na:0:0:444\nZ:Q1ibpu+Cx4ttKWensjKShOlkyfn0c=\nR:service.go\na:0:0:444\nZ:Q1nO3cNTfl9oW0TZTXeEBlACU552M=\nR:service_linux_test.go\na:0:0:444\nZ:Q1fJlKzDFtRdawGEc93/U6QaaepUw=\nR:service_test.go\na:0:0:444\nZ:Q1NptxRjeE4whvAEa6Q0N3dE1vPLw=\nR:store.go\na:0:0:444\nZ:Q1Apqwlofk3hkUzLC7X7ADcO+Zn7o=\nR:store_test.go\na:0:0:444\nZ:Q1bVMxKSeuSNBMVXXicS7lfgaKx3I=\nR:store_unix.go\na:0:0:444\nZ:Q1VPvas+1ZoobYEu1R2IFZX+z3kKU=\nR:store_windows.go\na:0:0:444\nZ:Q1KYUaXa9lCW5+tTHWm7OgsH82LqU=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/service/opts\nM:0:0:555\nR:opts.go\na:0:0:444\nZ:Q1NjOCBgGnHDt+JbFdvs/MVnvN/6o=\nF:root/go/pkg/mod/github.com/docker/docker@v20.10.20+incompatible/volume/testutils\nM:0:0:555\nR:testutils.go\na:0:0:444\nZ:Q1N866POY9vC1WxtqWvr066spQhFk=\nF:root/go/pkg/mod/github.com/dominodatalab\nF:root/go/pkg/mod/github.com/dominodatalab/os-release@v0.0.0-20190522011736-bcdb4a3e3c2f\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1YhjBx+xpVWAzDvSHKVW5OCB1C/s=\nR:.travis.yml\na:0:0:444\nZ:Q1Fs351Do74KmcIZSbnootvCG5p8w=\nR:LICENSE\na:0:0:444\nZ:Q1uNFjGXbm+qYZd1vtokNzsqo+xYY=\nR:README.md\na:0:0:444\nZ:Q1PUbZl7KNkJIyJOFPSnMpPzQchgY=\nR:go.mod\na:0:0:444\nZ:Q1eKQtuTCQd8XTP9LIwDp9q2Ty6Ng=\nR:osrelease.go\na:0:0:444\nZ:Q1JL7Mi3+FFysuJxtdJanAej9cYXU=\nR:osrelease_test.go\na:0:0:444\nZ:Q1VWycmEtIK/GLrdOwamMgOd0aIFs=\nF:root/go/pkg/mod/github.com/dominodatalab/os-release@v0.0.0-20190522011736-bcdb4a3e3c2f/testdata\nM:0:0:555\nR:alpine3_9\na:0:0:444\nZ:Q1t5tZydmizYt4FRKzNu3SVXu4um8=\nR:centos7\na:0:0:444\nZ:Q1e1JKwbOt00tqM+Pz3nOGzwdeg8U=\nR:debian9\na:0:0:444\nZ:Q1KUIO48sXb2QgnVvt3FcTEz+nwtQ=\nR:fedora29\na:0:0:444\nZ:Q1I1b6oY/0kvbDqvIp5t4duAZmWe8=\nR:rhel7\na:0:0:444\nZ:Q1aEb92FGVCdd8ICC9psr5O+cNaPs=\nR:ubuntu-bionic\na:0:0:444\nZ:Q1KtTbxsWS0GG1wwNuVseEY7b3R+4=\nF:root/go/pkg/mod/github.com/emirpasic\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1k7LIZXTv0+07c38Kd+rqMeRQVU4=\nR:LICENSE\na:0:0:444\nZ:Q1TmpVEGEyV8Kp5vJ3q9uuUu8sz7o=\nR:README.md\na:0:0:444\nZ:Q1euRcZgPBsx2qD/cgs/YJx1f24/Y=\nR:go.mod\na:0:0:444\nZ:Q1T/jbHaNcEk6MIKwD+lEyN5kKrHI=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1es2FKvncHWEZztkUsQKrAXNzcSk=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/.github\nM:0:0:555\nR:FUNDING.yml\na:0:0:444\nZ:Q1UiClHrp2doC0xDVC1tSAHDHtDO8=\nR:dependabot.yml\na:0:0:444\nZ:Q1321wBZHOvz64ipGtZGnp4G9IyOc=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/.github/workflows\nM:0:0:555\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1T3rRYHEtpzwuPN4wnCuwoP3Vobw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/containers\nM:0:0:555\nR:containers.go\na:0:0:444\nZ:Q1JEeqSeZIJQH16kAtF67u7aF5DX0=\nR:containers_test.go\na:0:0:444\nZ:Q1pYPsXA82FwTw2paFvoqwhcwIDA4=\nR:enumerable.go\na:0:0:444\nZ:Q1FshOnlqothGncqPzDzR5gd4ToZk=\nR:iterator.go\na:0:0:444\nZ:Q1NeHBwue+NmwG8we+oI5C21rzcLA=\nR:serialization.go\na:0:0:444\nZ:Q1fZYKn7x4+Rc0iaNGHhL0vhvVDrg=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1NeDzROOg4FukC0c+2qsxEoRl9xw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/arraylist\nM:0:0:555\nR:arraylist.go\na:0:0:444\nZ:Q1yMNZYYf7kptiuCcwN1lxQQJC4w0=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/arrayqueue\nM:0:0:555\nR:arrayqqueue.go\na:0:0:444\nZ:Q1H1OYOwMvbh8YvQ4S3BVBY2tQb3o=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/arraystack\nM:0:0:555\nR:arraystack.go\na:0:0:444\nZ:Q1YVbyc1zpAmUtlaa/VhF816wKUrE=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/avltree\nM:0:0:555\nR:avltree.go\na:0:0:444\nZ:Q1Um22+j0WPxRj2oXstpntl6etDxo=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/binaryheap\nM:0:0:555\nR:binaryheap.go\na:0:0:444\nZ:Q1vG1oQ7NYnrhWBvLro177f+XxoaM=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/btree\nM:0:0:555\nR:btree.go\na:0:0:444\nZ:Q15tvsPreFXIgsI23b4rwcSXjBOSw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/circularbuffer\nM:0:0:555\nR:circularbuffer.go\na:0:0:444\nZ:Q14EwHqRWLH9ZlHbmAl0Cljun60ik=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/customcomparator\nM:0:0:555\nR:customcomparator.go\na:0:0:444\nZ:Q1iBcvR5tg2VKx9fffC9KYZUfWADI=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/doublylinkedlist\nM:0:0:555\nR:doublylinkedlist.go\na:0:0:444\nZ:Q1ApF+eLdJ5W1V50KckNq0zSiV9sc=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/enumerablewithindex\nM:0:0:555\nR:enumerablewithindex.go\na:0:0:444\nZ:Q1qnX5tbU28V9dVFGsGa45R1eJ4p0=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/enumerablewithkey\nM:0:0:555\nR:enumerablewithkey.go\na:0:0:444\nZ:Q1cdGmIQ3M7PAybDlsvrBjQdZJnHw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/godsort\nM:0:0:555\nR:godsort.go\na:0:0:444\nZ:Q1ggIzishiXUhkmksSLSHMokKyTaA=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/hashbidimap\nM:0:0:555\nR:hashbidimap.go\na:0:0:444\nZ:Q1IF6UN0XiqYPM1v38AJ16xoyiyR0=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/hashmap\nM:0:0:555\nR:hashmap.go\na:0:0:444\nZ:Q1raJN2Di1zS1oIrm0xv8KTfvMPzM=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/hashset\nM:0:0:555\nR:hashset.go\na:0:0:444\nZ:Q1MrTqXFY08Q6wIsGQLBN8wf3Keu4=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/iteratorwithindex\nM:0:0:555\nR:iteratorwithindex.go\na:0:0:444\nZ:Q1nSVaXMSOh5J2If5EdWdhcKxizOA=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/iteratorwithkey\nM:0:0:555\nR:iteratorwithkey.go\na:0:0:444\nZ:Q1YL3uCkyozK9pTV07cDpKhArkeSg=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/linkedhashmap\nM:0:0:555\nR:linkedhashmap.go\na:0:0:444\nZ:Q1Lb7cQfH7zqJ4U+IHVgAjZD3wGNM=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/linkedhashset\nM:0:0:555\nR:linkedhashset.go\na:0:0:444\nZ:Q12z02Bd0wU/+Yri0hKYWSuU7D1nw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/linkedlistqueue\nM:0:0:555\nR:linkedlistqueue.go\na:0:0:444\nZ:Q1ayPGQ+abzC7JURhWn4vp2cKfFSY=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/linkedliststack\nM:0:0:555\nR:linkedliststack.go\na:0:0:444\nZ:Q1kcDtBEWCbPW2CmTquAHdaYtH6NU=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/priorityqueue\nM:0:0:555\nR:priorityqueue.go\na:0:0:444\nZ:Q1Q7T6FBiXOnfxam2Y6+SUEwhGlNE=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/redblacktree\nM:0:0:555\nR:redblacktree.go\na:0:0:444\nZ:Q1joqJT3ZDB/kFeUZaBqNiICv6gC8=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/redblacktreeextended\nM:0:0:555\nR:redblacktreeextended.go\na:0:0:444\nZ:Q1Pr0oGeBYlq29T9yh9/fAi/J5FB8=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/serialization\nM:0:0:555\nR:serialization.go\na:0:0:444\nZ:Q1exQ/PBHcXODVW+6OStk69LpxITA=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/singlylinkedlist\nM:0:0:555\nR:singlylinkedlist.go\na:0:0:444\nZ:Q1GQezew6t3E3o7FMat90/wwqeGuU=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/treebidimap\nM:0:0:555\nR:treebidimap.go\na:0:0:444\nZ:Q1GTGaaApAxVtGKEQ/mamVytaFMmQ=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/treemap\nM:0:0:555\nR:treemap.go\na:0:0:444\nZ:Q1bftehtmPwD5R1nee+TmxWK1Y9zE=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/examples/treeset\nM:0:0:555\nR:treeset.go\na:0:0:444\nZ:Q1jkvxO4ugqyltBPgGjwvfTfYgauU=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/lists\nM:0:0:555\nR:lists.go\na:0:0:444\nZ:Q1n6C0Wq+LY3mUdgmSrXk8pJqpOF8=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/lists/arraylist\nM:0:0:555\nR:arraylist.go\na:0:0:444\nZ:Q1Qd+m3c2XY0FwZ3S3bXd6D8tjTPI=\nR:arraylist_test.go\na:0:0:444\nZ:Q1Has0WHLeZw9axvlrX/v7R7B4MB4=\nR:enumerable.go\na:0:0:444\nZ:Q1+T8C/09OhurQEd2GDOakbugqcrA=\nR:iterator.go\na:0:0:444\nZ:Q1lW1fkfQJqKbijSFY13YtYd2Fb2I=\nR:serialization.go\na:0:0:444\nZ:Q11GJqtUyUR+sZGfpwqjuI+YMxfVo=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/lists/doublylinkedlist\nM:0:0:555\nR:doublylinkedlist.go\na:0:0:444\nZ:Q1GmxcvOp9dzm5sHmQ+4NyaPGO5/8=\nR:doublylinkedlist_test.go\na:0:0:444\nZ:Q1To192NvZb9qYmNcgXJ65kJMNx2Y=\nR:enumerable.go\na:0:0:444\nZ:Q1TyYr42Uvh2d/beklPdvgBsh9SVA=\nR:iterator.go\na:0:0:444\nZ:Q1w3kkcAFDFkJs3W30Q6fnlf5YiCI=\nR:serialization.go\na:0:0:444\nZ:Q1DjV+/0HA3pk6b6gBrgMtycsI4yw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/lists/singlylinkedlist\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1scnK1vC4uMpbrU4BjGqZJxuCdrI=\nR:iterator.go\na:0:0:444\nZ:Q1XJ0PqJdy49BK/ECLX7NgNMNOj6o=\nR:serialization.go\na:0:0:444\nZ:Q1WeLllTZDiSvW0/6qB6wtJBzm0n8=\nR:singlylinkedlist.go\na:0:0:444\nZ:Q1yZIqnhmFdiNW0ns382e5ACSXvUs=\nR:singlylinkedlist_test.go\na:0:0:444\nZ:Q1JouUjE2sQyazcSgigyJYsA+1mnQ=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps\nM:0:0:555\nR:maps.go\na:0:0:444\nZ:Q1blbr4xKXdcydhm7Sm9jPaKRuQ2k=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps/hashbidimap\nM:0:0:555\nR:hashbidimap.go\na:0:0:444\nZ:Q1VwQaojQN7YrGjuIh8qoy/dU9Cww=\nR:hashbidimap_test.go\na:0:0:444\nZ:Q1dDnly26/IMYNqt0kbBq527kcffI=\nR:serialization.go\na:0:0:444\nZ:Q1VcbUeDU5vYxnXg6XlbJpY8a5zsA=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps/hashmap\nM:0:0:555\nR:hashmap.go\na:0:0:444\nZ:Q1u7FOOaItwur736wTEbhVTlMgZtk=\nR:hashmap_test.go\na:0:0:444\nZ:Q1uegt/i+2nJHMSJnktw1g4mgudRU=\nR:serialization.go\na:0:0:444\nZ:Q1RHybd+wwNZwkH+y8c81GBvN9VtI=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps/linkedhashmap\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1TB90dPhcEMmuAPnCCYqtVMskK38=\nR:iterator.go\na:0:0:444\nZ:Q1qbx+2djLOSxVvyL75b9GYElyHOA=\nR:linkedhashmap.go\na:0:0:444\nZ:Q1PdowjIwvWnH7ixev/Jbi0OGt87s=\nR:linkedhashmap_test.go\na:0:0:444\nZ:Q1qMjEDhfqyMSZcd9x7nmF01/pX7A=\nR:serialization.go\na:0:0:444\nZ:Q1wlYgiOPvCTgQHTgQDBO3W72GvFs=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps/treebidimap\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1K1DM5xtgi3stc+RxUMAYCtlZJtw=\nR:iterator.go\na:0:0:444\nZ:Q1OtBKMLStVCd+x/Tn/iehZ6jfN5Y=\nR:serialization.go\na:0:0:444\nZ:Q1VU/FuG+0Jaj6cTg+65V3I40kMYc=\nR:treebidimap.go\na:0:0:444\nZ:Q1zJct30lMuobmPdh4sbcaiQjCYLI=\nR:treebidimap_test.go\na:0:0:444\nZ:Q1Eiqcj9q+/TYMTZXROkGnY6seDEM=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/maps/treemap\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1toBZwdt7NB9W5DO8mhCixVaQ1R4=\nR:iterator.go\na:0:0:444\nZ:Q1Vg2x3CnuBb+YnPDlER6Vg8nI0jA=\nR:serialization.go\na:0:0:444\nZ:Q1m4fTK+hM2XWUnSENa3lIGX/qbyM=\nR:treemap.go\na:0:0:444\nZ:Q1XTzFdG/LHc3aA73AOVRhsKZZLX8=\nR:treemap_test.go\na:0:0:444\nZ:Q1jJgvqo3Y6bLSJWO7PaDKnliWIqk=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/queues\nM:0:0:555\nR:queues.go\na:0:0:444\nZ:Q1QBcQHgJ+6xT+sb45zJw9G/N7Baw=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/queues/arrayqueue\nM:0:0:555\nR:arrayqueue.go\na:0:0:444\nZ:Q1/3yvc4x6OoL6bm/tx7fCLT51zjc=\nR:arrayqueue_test.go\na:0:0:444\nZ:Q14yLLvlvRcfwr+PFYxCbPWGS/ags=\nR:iterator.go\na:0:0:444\nZ:Q1ERnPe2BifPwNxOC9K5e4vtLULvI=\nR:serialization.go\na:0:0:444\nZ:Q1k1rzz3f3Tmmx4LhbGxob6XtIOqg=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/queues/circularbuffer\nM:0:0:555\nR:circularbuffer.go\na:0:0:444\nZ:Q1/gzR2jpPQT/vwKeFbyPHNiBtonU=\nR:circularbuffer_test.go\na:0:0:444\nZ:Q11l5Qox2kZlrUZg3E+dGSiof0i4w=\nR:iterator.go\na:0:0:444\nZ:Q10BT3tJWUApcQnVi3cHd8rQxEiPI=\nR:serialization.go\na:0:0:444\nZ:Q1Q//SkLfyOJytg4Ry/VEGXwvzO8M=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/queues/linkedlistqueue\nM:0:0:555\nR:iterator.go\na:0:0:444\nZ:Q1/5D1KZEgYFcTU0VcCoCd5Og2FDI=\nR:linkedlistqueue.go\na:0:0:444\nZ:Q1C8EewB2KZjfn81KZsPr5+muNgsY=\nR:linkedlistqueue_test.go\na:0:0:444\nZ:Q1C/toacKUJx0HuNalJlZCflsHv08=\nR:serialization.go\na:0:0:444\nZ:Q1ORLxPGD9ajAd67vX1PSPQxW37sc=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/queues/priorityqueue\nM:0:0:555\nR:iterator.go\na:0:0:444\nZ:Q1DUOSNFmGdpqBnCV0+feW97ovt8U=\nR:priorityqueue.go\na:0:0:444\nZ:Q1hplnKpKTiL3uUSoe+3DrQK2RBgQ=\nR:priorityqueue_test.go\na:0:0:444\nZ:Q16byAbg6qGBwQjlbbLZZA+qQorKI=\nR:serialization.go\na:0:0:444\nZ:Q1i7VVd6/+amkXPJ0Pb9vf+x+6U7Q=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/sets\nM:0:0:555\nR:sets.go\na:0:0:444\nZ:Q1pbsm29347YFbu3EAsnU5I3pfPEg=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/sets/hashset\nM:0:0:555\nR:hashset.go\na:0:0:444\nZ:Q19faLho5vl5Su6OOjTa4gRlEMHAI=\nR:hashset_test.go\na:0:0:444\nZ:Q12Yj+Er2wexT2BO01ivN6/7nPe8I=\nR:serialization.go\na:0:0:444\nZ:Q1WZ/gSCtfKSxnkH1vgs2vkUtoAw4=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/sets/linkedhashset\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1y145QTBxvazemJwJBjm/rhsrz7Q=\nR:iterator.go\na:0:0:444\nZ:Q1LqrtrvW7v7jDUeOE/6qLqiRQ7TY=\nR:linkedhashset.go\na:0:0:444\nZ:Q1knoZDHVmEYpk2neqTsgsTRybox0=\nR:linkedhashset_test.go\na:0:0:444\nZ:Q18YmtC3Nm3CiHrMSg+mlJvzIEo6I=\nR:serialization.go\na:0:0:444\nZ:Q1eQUdxWtWDw5MFPQU36HK8elpjGs=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/sets/treeset\nM:0:0:555\nR:enumerable.go\na:0:0:444\nZ:Q1NmuJJ1ymKjpVN/SLHZ72v71fe8c=\nR:iterator.go\na:0:0:444\nZ:Q1qXx9zOKnT0TrXbMohAEfWQUunb4=\nR:serialization.go\na:0:0:444\nZ:Q1EmDeYRICD2jQa3gYCjhXclW0zz0=\nR:treeset.go\na:0:0:444\nZ:Q1uom5hGTx0AtzGQgbiebTXwC6xSU=\nR:treeset_test.go\na:0:0:444\nZ:Q1bLMQFyqHgITFKO+rPm6ACXb4Y+M=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/stacks\nM:0:0:555\nR:stacks.go\na:0:0:444\nZ:Q1Bj853ScjYn4kVLSCbXKfRhFVRQY=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/stacks/arraystack\nM:0:0:555\nR:arraystack.go\na:0:0:444\nZ:Q1mpPuSIEkwxQfXjfYlG2LkJdyMmQ=\nR:arraystack_test.go\na:0:0:444\nZ:Q1QwwgN6SAT+ETjOL7jidjxjaabLk=\nR:iterator.go\na:0:0:444\nZ:Q1vzYgpovYCs9qqX32KpO9O/+UlIw=\nR:serialization.go\na:0:0:444\nZ:Q1Ych9c7PR5MHJpxs8VnyxNHy4pnc=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/stacks/linkedliststack\nM:0:0:555\nR:iterator.go\na:0:0:444\nZ:Q1/6lDmn3GXFtBBZ6CgztX2mvtIX4=\nR:linkedliststack.go\na:0:0:444\nZ:Q1cDVD0V7FWyRnXumtetLOrnDiHqs=\nR:linkedliststack_test.go\na:0:0:444\nZ:Q1EwPKpUIAEXMXOLvNLmDwfqEQkKI=\nR:serialization.go\na:0:0:444\nZ:Q1OOhlQkIjPdj8MZ9mDmISTQdEiAM=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/trees\nM:0:0:555\nR:trees.go\na:0:0:444\nZ:Q1KjBC3ooixT+fdJDgB2b1vf5K2ak=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/trees/avltree\nM:0:0:555\nR:avltree.go\na:0:0:444\nZ:Q1WrJwtyAnvWhZAULXj+d5iOV2BMU=\nR:avltree_test.go\na:0:0:444\nZ:Q1+iY6GGFKAeT+dNgTrhN7IU2id2g=\nR:iterator.go\na:0:0:444\nZ:Q1uCujcGS2+YoLhgwUsPagMs/pWgY=\nR:serialization.go\na:0:0:444\nZ:Q1BxUn4SIxdZCuyh4miixflfOmpsc=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/trees/binaryheap\nM:0:0:555\nR:binaryheap.go\na:0:0:444\nZ:Q1MLAErtWdnTMV2eup7uedhHdWIf4=\nR:binaryheap_test.go\na:0:0:444\nZ:Q1WVnVxuUn6lll+1wdOKO6f/0zu3c=\nR:iterator.go\na:0:0:444\nZ:Q1GVgmezBn35dGJW6K0/iAW+Qa/EM=\nR:serialization.go\na:0:0:444\nZ:Q189+2zqFAyQXXKSwlLNZDADccndQ=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/trees/btree\nM:0:0:555\nR:btree.go\na:0:0:444\nZ:Q1ApMxMylMhWgqn7ii9QbZ25aT+4g=\nR:btree_test.go\na:0:0:444\nZ:Q1Swg+cI9BqnpYueTytj4WIDO22FY=\nR:iterator.go\na:0:0:444\nZ:Q1vbgOd6xegScmdBopdSxvQdAsUrI=\nR:serialization.go\na:0:0:444\nZ:Q11+Xjypfqn5plu+kfrxc4uHgpFFg=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/trees/redblacktree\nM:0:0:555\nR:iterator.go\na:0:0:444\nZ:Q1BBL40suSjn2k7fzq5bLiLumIPJs=\nR:redblacktree.go\na:0:0:444\nZ:Q1k9oELSGdCEHfYEhogU+wLM7yi/A=\nR:redblacktree_test.go\na:0:0:444\nZ:Q1XN1pY0ltWMvyRU1d1f60Lp4/ep4=\nR:serialization.go\na:0:0:444\nZ:Q1ndkqnBVfGw1nlsy3PN1zl0Th5QY=\nF:root/go/pkg/mod/github.com/emirpasic/gods@v1.18.1/utils\nM:0:0:555\nR:comparator.go\na:0:0:444\nZ:Q1r7VzvpyiU60rdlvAOS/6CpjlyZg=\nR:comparator_test.go\na:0:0:444\nZ:Q1X0DRhMZgd7K/KW0BlYPeITg+tpA=\nR:sort.go\na:0:0:444\nZ:Q1fWI2TfjxWyRVm81phvkdl0GCNDo=\nR:sort_test.go\na:0:0:444\nZ:Q1zSeS1/7YLc2zNaGpQ7Xg7PugBuk=\nR:utils.go\na:0:0:444\nZ:Q1L+hk0sZa0ykriw9uRYj/sLw6CSk=\nR:utils_test.go\na:0:0:444\nZ:Q1uNS+c3+pGS3TnYULj7a+pOjSxeI=\nF:root/go/pkg/mod/github.com/go-git\nF:root/go/pkg/mod/github.com/go-git/gcfg@v1.5.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1WAwKHxOG/hO845XSO9rzsUri4gs=\nR:README\na:0:0:444\nZ:Q1+XybGI9Zptm0f4+TRJjcOhKtzXI=\nR:doc.go\na:0:0:444\nZ:Q1vcj8IpaBI9E2hEpLWkuYriD2o7E=\nR:errors.go\na:0:0:444\nZ:Q1R1QsXDcU13LfTfurJYHAEgEzDzQ=\nR:example_test.go\na:0:0:444\nZ:Q192SQsl2WfWazHHETWrDvmpsiliU=\nR:go1_0.go\na:0:0:444\nZ:Q1Su+lbmbhZt5hVpfyQ4/cJB9yw/o=\nR:go1_2.go\na:0:0:444\nZ:Q1NPeWIB0QgAg7lmygof9MLVaqfes=\nR:issues_test.go\na:0:0:444\nZ:Q1PwwTgfaSrgBUQA0Gc9DdRTFIKxE=\nR:read.go\na:0:0:444\nZ:Q1Sn9Ks/xvceNco2/oNVfVa1HHz3s=\nR:read_test.go\na:0:0:444\nZ:Q1NPQM9EH/kI94zONYdQA3l2/3VX4=\nR:set.go\na:0:0:444\nZ:Q10rBnDE+wvLZlLpoBAy08Qys5sAk=\nF:root/go/pkg/mod/github.com/go-git/gcfg@v1.5.0/scanner\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1zpvNgZ/on5DRI6LFYg/16XQC5RI=\nR:example_test.go\na:0:0:444\nZ:Q1rxaM4jaVE07RUXvYdHyFHyjD/PM=\nR:scanner.go\na:0:0:444\nZ:Q1RIOjOJhx9tRYFbOvTd38lFmcpSU=\nR:scanner_test.go\na:0:0:444\nZ:Q1B3uh2cc3pO+P0U4VPMBVELu6ks0=\nF:root/go/pkg/mod/github.com/go-git/gcfg@v1.5.0/testdata\nM:0:0:555\nR:gcfg_test.gcfg\na:0:0:444\nZ:Q1p9aEaCSlgPPiHidYZ5fqQKLIxfY=\nR:gcfg_unicode_test.gcfg\na:0:0:444\nZ:Q1xnedXMc+cescq3zCcJJ1YWCGI3w=\nF:root/go/pkg/mod/github.com/go-git/gcfg@v1.5.0/token\nM:0:0:555\nR:position.go\na:0:0:444\nZ:Q1BaY9pIsR6UiuO4f+4XKFVGmbvXg=\nR:position_test.go\na:0:0:444\nZ:Q1cX17Lgu+ro0N0/3PmlyJVGBr66s=\nR:serialize.go\na:0:0:444\nZ:Q1UNIyyPT/NlRXIwYyY+CUvq9yIVg=\nR:serialize_test.go\na:0:0:444\nZ:Q1ww4Vx/EWBmMZMT5qSVtwHCZmxEg=\nR:token.go\na:0:0:444\nZ:Q1yR3rFHa5HWFY0xd3SeGx1hybDsE=\nF:root/go/pkg/mod/github.com/go-git/gcfg@v1.5.0/types\nM:0:0:555\nR:bool.go\na:0:0:444\nZ:Q1rTxoklMEahxdzbx9h33lUPJSqEk=\nR:doc.go\na:0:0:444\nZ:Q1U1CsUa16/Tqk4k5UeYaUj5jeapY=\nR:enum.go\na:0:0:444\nZ:Q12hOZUcrMb8JdCSLc/npHevP65qg=\nR:enum_test.go\na:0:0:444\nZ:Q1+pRVpMMYFdFIurRxWf2S9+emRoQ=\nR:int.go\na:0:0:444\nZ:Q1PrLmTQuCaQWHYAfZyXzIIvmJAs8=\nR:int_test.go\na:0:0:444\nZ:Q1ou1r/J892yyZe9Eu0i9vA1F3OS4=\nR:scan.go\na:0:0:444\nZ:Q1TXAlHBxZrkf4+N5Lkf6PpXXKpOY=\nR:scan_test.go\na:0:0:444\nZ:Q1gcZnRvzRpeVcfPHNP7m4AdJ9Jj0=\nF:root/go/pkg/mod/github.com/go-git/go-billy\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1lC6L8UYhrkQBNEM7/RVgEt8dqTk=\nR:LICENSE\na:0:0:444\nZ:Q1JSrtXQBC4bIHz6NFJURJmc21Tj4=\nR:README.md\na:0:0:444\nZ:Q1Rvhp9t8oAV6Tijq3n11NzlnTwX8=\nR:fs.go\na:0:0:444\nZ:Q158MsmJTUaPWDxufmcju35TuNabA=\nR:fs_test.go\na:0:0:444\nZ:Q1J8r4KrQ97l+cRcsQfqj5G7U1+yc=\nR:go.mod\na:0:0:444\nZ:Q1ayOSWniWMaL73iRVD1WySedLuwg=\nR:go.sum\na:0:0:444\nZ:Q1dVn9yocZMGE/6zeZ1ZH9ftls+RM=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q19Og5yRWHO2m7mbcQL4QibyBn9OI=\nR:test_js.yml\na:0:0:444\nZ:Q11otYK0KgAOWZIsk71KQpU7zK2Hc=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/helper\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/helper/chroot\nM:0:0:555\nR:chroot.go\na:0:0:444\nZ:Q1lUVXfqcbSehiyCX5S+trbDEty+k=\nR:chroot_test.go\na:0:0:444\nZ:Q1GnFzSZyBjEJWyFexxETRyWwzaOQ=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/helper/mount\nM:0:0:555\nR:mount.go\na:0:0:444\nZ:Q1nxpLM8OQ23cR0UcRA0Uj+Dgdj1s=\nR:mount_test.go\na:0:0:444\nZ:Q16hPEOTdGEWLfc6FHsOOffo6YFX0=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/helper/polyfill\nM:0:0:555\nR:polyfill.go\na:0:0:444\nZ:Q1B+CMpc7PIm5k0s37ouPWFTh1BNA=\nR:polyfill_test.go\na:0:0:444\nZ:Q1CrITxG166GhUOtG42TIU8vUEM5k=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/helper/temporal\nM:0:0:555\nR:temporal.go\na:0:0:444\nZ:Q14PF4VbrGNIYbnsfsMbUZgRFZA+s=\nR:temporal_test.go\na:0:0:444\nZ:Q1RIghMSztdnFyFwV03a4oRhJUnbs=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/memfs\nM:0:0:555\nR:memory.go\na:0:0:444\nZ:Q1WplhfeUB0Ex4p50YbqN5cmHfqlw=\nR:memory_test.go\na:0:0:444\nZ:Q1NmEtM/paX9g7RFym1bMJCF9lgZg=\nR:storage.go\na:0:0:444\nZ:Q1zjNTh11vslFMd5Aeszgif1WAlek=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/osfs\nM:0:0:555\nR:os.go\na:0:0:444\nZ:Q1CUPR5b43B8oxTl4joLUNDDKYG/A=\nR:os_js.go\na:0:0:444\nZ:Q1Oqg7xpxnOo6gy3zGxEJAooJhzqY=\nR:os_js_test.go\na:0:0:444\nZ:Q1KuKjiI2FlrevEcy5x7LZfzucT20=\nR:os_plan9.go\na:0:0:444\nZ:Q1X2guC9f57R+rDhsu0QrnOt4RbPA=\nR:os_posix.go\na:0:0:444\nZ:Q1h99OHB+aW0zVoxIVySBCaBhi7iY=\nR:os_test.go\na:0:0:444\nZ:Q1nkHMZjFU4Vxea+v/17R76bkTr9Y=\nR:os_windows.go\na:0:0:444\nZ:Q1/ZxtPsVuZtAjwlKbbgQe3F2c31o=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/test\nM:0:0:555\nR:basic.go\na:0:0:444\nZ:Q1som8h5b37bzMI6uARwFTp2Ta6OA=\nR:chroot.go\na:0:0:444\nZ:Q1B9D+2U7UnaJt0q/NVMjPMLMSHjQ=\nR:common_posix.go\na:0:0:444\nZ:Q1pVp7VCIsnC904THrrs8xKQAuR9s=\nR:common_windows.go\na:0:0:444\nZ:Q1yv9oDCSMlfrMhvIwDoJ7NnKt7bc=\nR:dir.go\na:0:0:444\nZ:Q1S4ArKHVEAmkuayjoqdIKjOMs5jI=\nR:fs.go\na:0:0:444\nZ:Q1SisJeoZASUGG8u0pC+OyyubyDIs=\nR:mock.go\na:0:0:444\nZ:Q1HEXteQ0hRA2RzHA9TzcjCAt9kgg=\nR:symlink.go\na:0:0:444\nZ:Q1vtq7NUMZ7Ibswnt9upmBppTNf6A=\nR:tempfile.go\na:0:0:444\nZ:Q1jSW1WEH0+iK4k2i2p95z1fnQf2Q=\nF:root/go/pkg/mod/github.com/go-git/go-billy/v5@v5.3.1/util\nM:0:0:555\nR:glob.go\na:0:0:444\nZ:Q1LCU1WhaUOGbvqL0/14itFjB/Jzo=\nR:glob_test.go\na:0:0:444\nZ:Q1WZaADwQHMxbS9OtlcME4ku82naE=\nR:util.go\na:0:0:444\nZ:Q1MWEeq28BdYzYG/m8ZrFSJwAi5K4=\nR:util_test.go\na:0:0:444\nZ:Q1UZuYjQFeiGdFpH/IKOUIfvMAPTo=\nF:root/go/pkg/mod/github.com/go-git/go-git\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q164EL5kXh3c1cs3atlWiboYNc6cY=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1gWIipwH3eFD9JDi9atJo/UobJmY=\nR:COMPATIBILITY.md\na:0:0:444\nZ:Q10+Vg0K1dbxDVTVk1Bqqg3hTixwc=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1tDVTvybUhJw/d6GEhCMQClFupac=\nR:LICENSE\na:0:0:444\nZ:Q1EmUr8foiZvWtZIBKzqOnirZmmaI=\nR:Makefile\na:0:0:444\nZ:Q1n0TvblJYhLJflSyZ1BIspCuDaNo=\nR:README.md\na:0:0:444\nZ:Q1oOXw/x2D/nmOOtFHrfjzmypgu9o=\nR:blame.go\na:0:0:444\nZ:Q1i/4uEpwyYDF09TNNY+821YtBX7c=\nR:blame_test.go\na:0:0:444\nZ:Q1hbaJDtNLK+ovGsSVczOZXQQ2eAQ=\nR:common.go\na:0:0:444\nZ:Q1+NQvj9RYdVqFQKeEaUACYA0POM8=\nR:common_test.go\na:0:0:444\nZ:Q1QX4UfJCvozPZoEZokpgygNAikVA=\nR:doc.go\na:0:0:444\nZ:Q18Z6dNbFPMf1wS9QrE4NoFsDsu5Y=\nR:example_test.go\na:0:0:444\nZ:Q15gKgVyofNjroFX3epeH/2/GxmfA=\nR:go.mod\na:0:0:444\nZ:Q1UWP6WytmOrVyTFKdihTEzxkarLw=\nR:go.sum\na:0:0:444\nZ:Q1u/o0DmzUpju4t7n+35A7t4NaV6k=\nR:object_walker.go\na:0:0:444\nZ:Q1hmFoxTLG56vgSNmjTzwi/n2nS1Y=\nR:options.go\na:0:0:444\nZ:Q1nuQgWhtBeP0VQR0OcNEhM08HKQU=\nR:options_test.go\na:0:0:444\nZ:Q10fBVaCxLFLmAu1xDkhGZfxjEkMo=\nR:prune.go\na:0:0:444\nZ:Q1aJ31j7aMHCKgK9GHJamQJIF72pI=\nR:prune_test.go\na:0:0:444\nZ:Q1EclvR4zkF5zIDBvcadx0KHj8S0w=\nR:references.go\na:0:0:444\nZ:Q1FLvw+O+Up59qdG0GMEO5jXSU3lU=\nR:references_test.go\na:0:0:444\nZ:Q15PIuuvBeJNwFR/GxmLbI5GgtpWA=\nR:remote.go\na:0:0:444\nZ:Q1Im3mbziJvN4EeWwVggh5fP0E2L8=\nR:remote_test.go\na:0:0:444\nZ:Q1TiTqW7eL/3hDyIisMjtLws6Gy6Y=\nR:repository.go\na:0:0:444\nZ:Q18Xk85hgapZ6qB2TnwIKm4poCW9k=\nR:repository_plan9_test.go\na:0:0:444\nZ:Q1XdRvYZpFR+dS+I4lhwx8YHWT7I0=\nR:repository_test.go\na:0:0:444\nZ:Q1Al0nNjJMcgX1XyS3W3NHn8h5VlY=\nR:repository_unix_test.go\na:0:0:444\nZ:Q1tXe10xEM+FbrDIKH8hRDLgowdSs=\nR:repository_windows_test.go\na:0:0:444\nZ:Q12E0izx5I0Dq68IzdceLfnvBcrFA=\nR:status.go\na:0:0:444\nZ:Q11CdFSuFsacglg8C7uBoRvnN4v2o=\nR:submodule.go\na:0:0:444\nZ:Q1sob87g9QW0TRnQKnzm1NCy52FiM=\nR:submodule_test.go\na:0:0:444\nZ:Q1FxzUmWpLBNZqbMHVnGt5yNu8f6Y=\nR:worktree.go\na:0:0:444\nZ:Q1MZYEyNxM5eZV01k754Av2jtXl+0=\nR:worktree_bsd.go\na:0:0:444\nZ:Q1WNPUzgklSugJpaaF2dD4Lawp/+0=\nR:worktree_commit.go\na:0:0:444\nZ:Q1DNDY4f6Uy9PbvR0HwF1dm5qtNuI=\nR:worktree_commit_test.go\na:0:0:444\nZ:Q1xHhKlDZbIINo2dwSqi4xA0iZhrI=\nR:worktree_js.go\na:0:0:444\nZ:Q1kYYImM9Hx6ZepOa44K4Zol9zQdM=\nR:worktree_linux.go\na:0:0:444\nZ:Q1jRJtKOa9K5uohjyw4yckjvKF9RM=\nR:worktree_plan9.go\na:0:0:444\nZ:Q1OX/fRUdZftrCgMD+H6HGYYV0s5I=\nR:worktree_status.go\na:0:0:444\nZ:Q1dOcaZw3xzPBIRhAUhyxnDvG+Uf4=\nR:worktree_test.go\na:0:0:444\nZ:Q1HtzIdWlyXKyzx4EvsBGL5sCJu9g=\nR:worktree_unix_other.go\na:0:0:444\nZ:Q14gwuh3Rs0YKudKNHwQ5ZNp0XYQw=\nR:worktree_windows.go\na:0:0:444\nZ:Q10TegbZGQdUPk2n8kKIStwzAUWzA=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/.github/workflows\nM:0:0:555\nR:git.yml\na:0:0:444\nZ:Q1nUZm6Ve92PfGUpdnr4nuc9Q56mQ=\nR:test.yml\na:0:0:444\nZ:Q1pEMqAvaFLXUjRQjMB1eYYWM9MdU=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1GAk6JdvbQu6zzQtkrtHC2Aldvvc=\nR:common.go\na:0:0:444\nZ:Q1xWI7Tbgn3b1WFdQvy5dG0BrybQw=\nR:common_test.go\na:0:0:444\nZ:Q1yQUMETAx/WAwYSc3xUJm9r2i/yU=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/branch\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Tui6bwuv4WMlOW58DCUyTc/eqC8=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/checkout\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Rw+QjpIpOk3ktecr8/ehelFmDdk=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1cM2DoLDNvl/fvkDixFXWXSIttBg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone/auth\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone/auth/basic\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone/auth/basic/access_token\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1MkcDJRqs4+npsyNJKdKcADHPpyI=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone/auth/basic/username_password\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1liJUjesqhsDlTHmOClEDIAym1Zg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/clone/auth/ssh\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1WNGTsotpoHgG/Sayuig8v9uQrRI=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/commit\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1d15+UWRIeYgnViPH/zHjarwDUqo=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/context\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1UyqiTNRKfDHgSo+ZA/bWT41RIn4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/custom_http\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1zX408gxLuu09k8CfSO++5JuZZio=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/log\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1QIQx5h7aMonRBZirir/rkqRMAnQ=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/ls\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1xSwKb6cBU4ZN7x3/pVNY/dvT7Kg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/ls-remote\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Ka546KB9q4RlSzfpCatRzsmErAQ=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/merge_base\nM:0:0:555\nR:help-long.msg.go\na:0:0:444\nZ:Q1vL5S03R+RGTe41JnIpFapIJe1IE=\nR:helpers.go\na:0:0:444\nZ:Q1EXETHy2aieqXzM6mmQpMVm6HrPA=\nR:main.go\na:0:0:444\nZ:Q1JNi+ZciLvbmk+PznSOdDiec7rUs=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/open\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q130VFslLwqjUoprBCGHaBSSi69Xg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/progress\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1K/5CGrvc/veGVKlPhdrKzUMvN7I=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/pull\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1zGgnXt4Mv/MyY+qtMNQNsHLJ9Qw=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/push\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1T7wkFrJFepqIchu4B7ZoFq9DjHA=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/remotes\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1nu17BmumowjBYX0ZPH4UNuljDX8=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/revision\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1kmEaFh491vcLGmckYmFWWTlfYQ0=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/showcase\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q13KV58WHF0ubZbalJJQoqFBxNm48=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/storage\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1bhe5h709qn3esM5nMGDI3n2kq1I=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/submodule\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1UXEohPnvcrHRU31E/4mHFrdj0bg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/tag\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1mttxkTcdVnDbjTbfDYCcIHXrqZU=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/_examples/tag-create-push\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1N+fN0s8clYX9VxV4VXfiCwjKZSc=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/cli\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/cli/go-git\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1PbShLRniIu0FL9MCb7EzbIHfoKo=\nR:receive_pack.go\na:0:0:444\nZ:Q1LRlW5kt3XWN4hm0QNsQgD9ntwao=\nR:upload_pack.go\na:0:0:444\nZ:Q1/cpBkjQvF71S7CDO0AbtDlTkcoo=\nR:version.go\na:0:0:444\nZ:Q1NAzqzZvc6CYjn6K9eca9zCrhFPQ=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/config\nM:0:0:555\nR:branch.go\na:0:0:444\nZ:Q1yxGvFX09JDWKkdkmFbI5mucJhzU=\nR:branch_test.go\na:0:0:444\nZ:Q1Ydk8UXpUbVh3ozZvfowZmv1nPYY=\nR:config.go\na:0:0:444\nZ:Q1rUCRN/HKY7d1u4GSXytor54iy+I=\nR:config_test.go\na:0:0:444\nZ:Q16vCuFEIrlmfNbA8ynVZ28QE11B8=\nR:modules.go\na:0:0:444\nZ:Q1AycThyNMLJbWlJzsviyaLA6S+3I=\nR:modules_test.go\na:0:0:444\nZ:Q1NrVNw8MGzeBvlvHIwcN5ET5JbRU=\nR:refspec.go\na:0:0:444\nZ:Q1uDMT1ZUNZ5Xvjny9/itRtWl/GK8=\nR:refspec_test.go\na:0:0:444\nZ:Q14U1jcW72FQEFmsXh49csZAo4TaE=\nR:url.go\na:0:0:444\nZ:Q10mawlpRfOktmzllLAH0MJNkGfec=\nR:url_test.go\na:0:0:444\nZ:Q1105yNVx4Jj5O21qVvhUowWjGHCo=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/internal/revision\nM:0:0:555\nR:parser.go\na:0:0:444\nZ:Q18VNSl1Xluc9pzmILAzoM4nXQz38=\nR:parser_test.go\na:0:0:444\nZ:Q1cKFmpUnCYryY7J0sdAoh95q5wO4=\nR:scanner.go\na:0:0:444\nZ:Q1Am6kkHGRWGYL7/DjSNRgXaV3/cs=\nR:scanner_test.go\na:0:0:444\nZ:Q1g3G9Q5qC0uIfQiZQWH8wqP96LQ0=\nR:token.go\na:0:0:444\nZ:Q1Opi/dz4go1nfR917U0R91jO6d8w=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/internal/url\nM:0:0:555\nR:url.go\na:0:0:444\nZ:Q1rwn7kW7y3P+anN6b76B5NCmnY9w=\nR:url_test.go\na:0:0:444\nZ:Q1V/41JhgctxHqQL5n5pUDnVllyLg=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing\nM:0:0:555\nR:error.go\na:0:0:444\nZ:Q1r0vhJEFw3Q0bWI8SiVCVSce+Zw4=\nR:hash.go\na:0:0:444\nZ:Q175HsL5JJotSxMzg08w7z8J6T5l4=\nR:hash_test.go\na:0:0:444\nZ:Q1Pu6nOnyQv9D9Fh5g4eXQe5O09Zw=\nR:memory.go\na:0:0:444\nZ:Q1WmGS8oTVzBr75WyVpe6MP1yBlRU=\nR:memory_test.go\na:0:0:444\nZ:Q1mPr9JxpqbuKJ20JdyPSximUEF7U=\nR:object.go\na:0:0:444\nZ:Q1xoBuP6WV51nKwPeJNc3WSkVzxCg=\nR:object_test.go\na:0:0:444\nZ:Q1khikfw3lMTbvJ/cViMcP1GrjpSw=\nR:reference.go\na:0:0:444\nZ:Q1scNgIfgFxWMtg29AJIjlRdlF7Uk=\nR:reference_test.go\na:0:0:444\nZ:Q12IylvEozEwMvfNTm6uMVPHKjcSM=\nR:revision.go\na:0:0:444\nZ:Q1VRauhe+giOEpwTskJOcUNbesvpc=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/cache\nM:0:0:555\nR:buffer_lru.go\na:0:0:444\nZ:Q1Hd95SV8Mo9QOAluOGq/Y0a/vxOE=\nR:buffer_test.go\na:0:0:444\nZ:Q1FJjuJq/Z16y/FMOCs6MlUWhiX14=\nR:common.go\na:0:0:444\nZ:Q1EFS8MPf0A3pe9Qrk3XIBvX8M89U=\nR:object_lru.go\na:0:0:444\nZ:Q1ckPjaUqrVOTtFuauKMVx1ZRQ60w=\nR:object_test.go\na:0:0:444\nZ:Q1GJNY5Htef/PNHZksJylO/UlZ28k=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/color\nM:0:0:555\nR:color.go\na:0:0:444\nZ:Q16NCYsEuhRcjoZt4aSU9TU8DFuj4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/filemode\nM:0:0:555\nR:filemode.go\na:0:0:444\nZ:Q1EqdI/g2k34HNf8CKLhgelv34QrU=\nR:filemode_test.go\na:0:0:444\nZ:Q1guK29rxNxhx8jdFaXyK8UnVvj24=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/commitgraph\nM:0:0:555\nR:commitgraph.go\na:0:0:444\nZ:Q1pDaupBUTncBn8zGd1dsd12LDXnI=\nR:commitgraph_test.go\na:0:0:444\nZ:Q1EUvkdIq4DtbxKx/kdIqmmYVM35U=\nR:doc.go\na:0:0:444\nZ:Q1jeEHTTsSoCodMJipHobEtfBkXbo=\nR:encoder.go\na:0:0:444\nZ:Q1XAoE/UejslE62raaSG5+vp5CXo8=\nR:file.go\na:0:0:444\nZ:Q1l1CUgeKR3+w5JYzxeA2B3Zqsi6U=\nR:memory.go\na:0:0:444\nZ:Q1vReZlmJrP/co/GlURue/ihugPU4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/config\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1sh5/Lyaeqxee6uUigd8owU/D2RA=\nR:common_test.go\na:0:0:444\nZ:Q17ZIDkF3aAxhUu630AFTjafASHkA=\nR:decoder.go\na:0:0:444\nZ:Q1D6WArbrXAY0EIR9NzFq2/BBD7kY=\nR:decoder_test.go\na:0:0:444\nZ:Q1bqFL2dfYb7RHfVWpHIRJ4Gsh4EM=\nR:doc.go\na:0:0:444\nZ:Q1KPQsW7zSEmDWflkL/25ltpgFS1o=\nR:encoder.go\na:0:0:444\nZ:Q13AHQySrOUjtWNdN6Pv02/fyDXb8=\nR:encoder_test.go\na:0:0:444\nZ:Q1rhtAnyl8bmBGO16CRqTrnilgzHA=\nR:fixtures_test.go\na:0:0:444\nZ:Q1uJOlFrnZVMTDudKpcWZ6og9SxzM=\nR:option.go\na:0:0:444\nZ:Q1nBCswmGlOPoQIXvwI3ejhcY75hE=\nR:option_test.go\na:0:0:444\nZ:Q1dS6Aucewc9A+A3rxWa1sKgJH0Eg=\nR:section.go\na:0:0:444\nZ:Q1VerVY5tvSXaxSlwhqFrU0kb44f4=\nR:section_test.go\na:0:0:444\nZ:Q1zxYpgAN76MKVwogbKfddY+maExo=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/diff\nM:0:0:555\nR:colorconfig.go\na:0:0:444\nZ:Q1hQroQP0sLw5QUY/5h5ObwdnvHUg=\nR:patch.go\na:0:0:444\nZ:Q1UCnNwo1enLxbvSQLODwXZZxVAGI=\nR:unified_encoder.go\na:0:0:444\nZ:Q1KdhdHNfyS1vD92ZH1eM386z16DE=\nR:unified_encoder_test.go\na:0:0:444\nZ:Q1Zq+Y0v0icZLEFckms6aQ04kTR5A=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/gitattributes\nM:0:0:555\nR:attributes.go\na:0:0:444\nZ:Q1byM0FpWM/X/TNwB1hL/B5Ci0AtY=\nR:attributes_test.go\na:0:0:444\nZ:Q1Wm+s32cSsdwvRunkWJ02+eMgK+w=\nR:dir.go\na:0:0:444\nZ:Q1EfzB8zSXlim388YuE/BeMVrxWTU=\nR:dir_test.go\na:0:0:444\nZ:Q18seZBlmJmL4ImEPo90ugoOFskIA=\nR:matcher.go\na:0:0:444\nZ:Q1a9orKHT2fin8loQ7jcBGXIlw+/s=\nR:matcher_test.go\na:0:0:444\nZ:Q1fDTKqeoA5fr3o5j0kj3GZqn0ySA=\nR:pattern.go\na:0:0:444\nZ:Q1AFYaoziAPw8gNNiU55jFklrEMxY=\nR:pattern_test.go\na:0:0:444\nZ:Q1tKIrFJfHVTW30oIOFc09Ou1KOMM=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/gitignore\nM:0:0:555\nR:dir.go\na:0:0:444\nZ:Q1evqdSqGvP0dyCaI8aej5K7V1YZ0=\nR:dir_test.go\na:0:0:444\nZ:Q19x7grcim2VrJDR39ri6CRUywDAk=\nR:doc.go\na:0:0:444\nZ:Q1TfUsw/GY5ajXSLK0Xqimf6SlxMY=\nR:matcher.go\na:0:0:444\nZ:Q1RGtWA+Vey9p7Ips8Bc2dNQHT8SI=\nR:matcher_test.go\na:0:0:444\nZ:Q1DfJiJoCB59qwxsCtNWMfWV4TWF0=\nR:pattern.go\na:0:0:444\nZ:Q11S02MgjU2KJFRndZ9SGqaTyvpko=\nR:pattern_test.go\na:0:0:444\nZ:Q1fUbQ4/DGL/HCPpZBa3L2E6om9h8=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/idxfile\nM:0:0:555\nR:decoder.go\na:0:0:444\nZ:Q1XLa9ggAixMNInZuVSue7r6VU3wM=\nR:decoder_test.go\na:0:0:444\nZ:Q1PBLuPSQ1d0cPplxEf9X/MznS94o=\nR:doc.go\na:0:0:444\nZ:Q1TK0cHVVHLY6uOFOogouGFq0G8nc=\nR:encoder.go\na:0:0:444\nZ:Q13rAxr7EL8FQXEnnBQK5rxcjg940=\nR:encoder_test.go\na:0:0:444\nZ:Q1II5oAiU40bMZ0DZLb4hzg2V164E=\nR:idxfile.go\na:0:0:444\nZ:Q15J4KKliqBNgNwF41VMP2kgfsojA=\nR:idxfile_test.go\na:0:0:444\nZ:Q1Ho6XITBQpFFouzpSGXJGL/EpB2c=\nR:writer.go\na:0:0:444\nZ:Q1s3qN4dkt9Nsft0pctRVFCQbpRmY=\nR:writer_test.go\na:0:0:444\nZ:Q1l4KIHBys9qIm/4k27/ubM/VZklw=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/index\nM:0:0:555\nR:decoder.go\na:0:0:444\nZ:Q1sJDyMl0a8OUFOsDu7tSOJfbhJOU=\nR:decoder_test.go\na:0:0:444\nZ:Q18vQvLHdWDkwgOAic0wF6MQ2HmOA=\nR:doc.go\na:0:0:444\nZ:Q1mprEjXb3Ke+sRBD9NEc+NJDmQh0=\nR:encoder.go\na:0:0:444\nZ:Q1VWWvdck2Q+4x0YLpkd9rpJnblEs=\nR:encoder_test.go\na:0:0:444\nZ:Q16w2APOb2o1pVuYx1fyWhkt7DQOk=\nR:index.go\na:0:0:444\nZ:Q1gm4KFrKKAO9P/doHAUgXm+o5WSA=\nR:index_test.go\na:0:0:444\nZ:Q1VY35peVCIcnAD4SCQQJNDU4Qltg=\nR:match.go\na:0:0:444\nZ:Q17g1gXBJie7sLtD9H6Co5DdodHdU=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/objfile\nM:0:0:555\nR:common_test.go\na:0:0:444\nZ:Q1qIyWOy2PqwQKDgGRrA6MJjA9y9k=\nR:doc.go\na:0:0:444\nZ:Q1s0wVolGkhj/D15k8ufYw2tom4M0=\nR:reader.go\na:0:0:444\nZ:Q1lsUp2WtOeavtp6MHqnCByXUHGu8=\nR:reader_test.go\na:0:0:444\nZ:Q1dvyVJoGOm49CCVE8r1nMxFjIKpE=\nR:writer.go\na:0:0:444\nZ:Q1aLdbe3GKe1YG5i+pVnMOO1yQIBY=\nR:writer_test.go\na:0:0:444\nZ:Q1d7g1Y1wq5xm9C+7anLni5L9Qrnk=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/packfile\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1IjERszghj4puXL/oJq6rv3tQSRQ=\nR:common_test.go\na:0:0:444\nZ:Q1+1ke2QWbWvZk7oZu+fDecR0Gqm4=\nR:delta_index.go\na:0:0:444\nZ:Q1bLPIgJCFkn6WrLfbNVFgBukEqAg=\nR:delta_selector.go\na:0:0:444\nZ:Q1L4Mel0AHFEcgsPrzJGWmy2VSl5s=\nR:delta_selector_test.go\na:0:0:444\nZ:Q1xzYHrxohJt6+IKN1qucYwWi5Itk=\nR:delta_test.go\na:0:0:444\nZ:Q1cGO7lAMbRLaisKhhJhBT18o8CAQ=\nR:diff_delta.go\na:0:0:444\nZ:Q1/iWSf9EkK+51F+5zKPNNHTpQ/js=\nR:doc.go\na:0:0:444\nZ:Q1yIr6kY7fPGKH/A5Eqym0FT0SENs=\nR:encoder.go\na:0:0:444\nZ:Q1VBNstJkSyBOz1GXsLhdJ9LaHSQc=\nR:encoder_advanced_test.go\na:0:0:444\nZ:Q1rmhwiNRGFNMPJ9idZW1BTpPYt0k=\nR:encoder_test.go\na:0:0:444\nZ:Q1xlZHrjt9y/Qzg9ntJ7TzdyNAQow=\nR:error.go\na:0:0:444\nZ:Q1DFrsTTz9RsePejdrACmwSBkDtvg=\nR:fsobject.go\na:0:0:444\nZ:Q1BCCeOrdnHfguHh08Vd7wfRsUYl0=\nR:object_pack.go\na:0:0:444\nZ:Q1/PyVEwvJeV64Jq4CQISU/hYCPs8=\nR:object_pack_test.go\na:0:0:444\nZ:Q1R+IFifQVA48YhKIHZa8mQnvNMM8=\nR:packfile.go\na:0:0:444\nZ:Q1xFNipjTSg93koEEgrX0qrWX15a8=\nR:packfile_test.go\na:0:0:444\nZ:Q1wW151OUrrVgfxc5EqZ/pj28PEu0=\nR:parser.go\na:0:0:444\nZ:Q1Sp8+GDliOMHWVNuoTe4QjU39450=\nR:parser_test.go\na:0:0:444\nZ:Q1HQKwD9+Jrbs1ueo/f+2h4iYJXRs=\nR:patch_delta.go\na:0:0:444\nZ:Q1MOFZTyIsWGs1m68jI6oq0dwc2ww=\nR:scanner.go\na:0:0:444\nZ:Q1bAwdzigMJbmC7PD1K5Zg/YLJbHk=\nR:scanner_test.go\na:0:0:444\nZ:Q1+a749Ox4Kh+EVMwaFJ0Tx/uoPmM=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/format/pktline\nM:0:0:555\nR:encoder.go\na:0:0:444\nZ:Q1VrdSKdkwrRyqd3HVrolenVnr7gw=\nR:encoder_test.go\na:0:0:444\nZ:Q1J6+Yll0NWLq8Hhsa4y14eLfs0t4=\nR:scanner.go\na:0:0:444\nZ:Q145Ix2KU6YKtORd3UnYk/pEDUp0o=\nR:scanner_test.go\na:0:0:444\nZ:Q1FRP1wOOfOt+Nc9lwIWecj/Erz04=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/object\nM:0:0:555\nR:blob.go\na:0:0:444\nZ:Q1nDdZzqKEg8hI9UkVlgHuhCLsmkw=\nR:blob_test.go\na:0:0:444\nZ:Q1DDhWSzhNY+E87rcmW5WR3kW5hwE=\nR:change.go\na:0:0:444\nZ:Q1hIPnEFFrFvuyPOpzBydMWHyCMlg=\nR:change_adaptor.go\na:0:0:444\nZ:Q1WdPT7lQhWZI246mXwkba3l5o4VM=\nR:change_adaptor_test.go\na:0:0:444\nZ:Q1Rr4l4wXMqC6VQz2/TM+pNRvG2LI=\nR:change_test.go\na:0:0:444\nZ:Q12rFOGRFbyMp0wO2eTZKpoY6pkSY=\nR:commit.go\na:0:0:444\nZ:Q1kjRg1Qjxmtp5YujRJf95Es5VtRg=\nR:commit_stats_test.go\na:0:0:444\nZ:Q187mRN5uSUA4KmEOM2Pt/W/cU53g=\nR:commit_test.go\na:0:0:444\nZ:Q183KapzDoeAV2bP3zG/HbbXFlB9Q=\nR:commit_walker.go\na:0:0:444\nZ:Q1qiZc/yCU4dX2+oLL8WGCHH0nGbU=\nR:commit_walker_bfs.go\na:0:0:444\nZ:Q1qGMMW1LDk0fzFleSi5jJMJvKMyQ=\nR:commit_walker_bfs_filtered.go\na:0:0:444\nZ:Q11aby6IWv/0yaQFArrBEcwWZgLMI=\nR:commit_walker_bfs_filtered_test.go\na:0:0:444\nZ:Q1vKr8ziMI7uyqxWWl7DCkel4mBLo=\nR:commit_walker_ctime.go\na:0:0:444\nZ:Q1jPrUnv5dxNUAnpX2RyOI7+ChJOI=\nR:commit_walker_limit.go\na:0:0:444\nZ:Q10FdG4X1aY01nujxDBQzR+I4jyfo=\nR:commit_walker_path.go\na:0:0:444\nZ:Q1QNJkaG7iVyiHGqaJMCRW1lVuKZA=\nR:commit_walker_test.go\na:0:0:444\nZ:Q12dWOzGCqbo+qgKN2gJRjkHpU/GQ=\nR:common.go\na:0:0:444\nZ:Q1s7k33pQw0fCnKy5c0T5JX1QiEt8=\nR:difftree.go\na:0:0:444\nZ:Q15biG+uEbeSBFlkALskvOVhZ7QBs=\nR:difftree_test.go\na:0:0:444\nZ:Q1Su4mRn5c6mS4Th1jUQTZaForStQ=\nR:file.go\na:0:0:444\nZ:Q13+OmO1+ev2fuI8WbSQpIVy9CEEA=\nR:file_test.go\na:0:0:444\nZ:Q1FU9fEuOBKd4p+hW16xRCuhhrb4c=\nR:merge_base.go\na:0:0:444\nZ:Q1awI2x6G5G0L/K3H010j9+On1nrU=\nR:merge_base_test.go\na:0:0:444\nZ:Q1AF4XNi4Zp3e3ZDyrrF57cD+kdTw=\nR:object.go\na:0:0:444\nZ:Q1nLiWn/cupjqkNPs1+WhKXim8xAw=\nR:object_test.go\na:0:0:444\nZ:Q1BnIwC72s9aaM63T1ceAk9grI9KQ=\nR:patch.go\na:0:0:444\nZ:Q1cJnH4I92OUTXTrtLcqs5Ef/jj18=\nR:patch_test.go\na:0:0:444\nZ:Q1qnH5Y7EFpetcwIf4a2LUGRfFaKU=\nR:rename.go\na:0:0:444\nZ:Q1NwIoYLviH3ErBMVOdRBqo0SoW+c=\nR:rename_test.go\na:0:0:444\nZ:Q16TcHSCXDB0z/8PJcviOSafeHLPs=\nR:tag.go\na:0:0:444\nZ:Q141TJEjiAwY6KAGKRdZJOIEDT9EM=\nR:tag_test.go\na:0:0:444\nZ:Q10J0hX4rb1mK2Mj111A/3JrqvqeU=\nR:tree.go\na:0:0:444\nZ:Q1yf70eZhqIGMpUWPplTdNOpVf6F8=\nR:tree_test.go\na:0:0:444\nZ:Q11onJnFtGh+kR92IPBw6k4PaDd/A=\nR:treenoder.go\na:0:0:444\nZ:Q1vlFTb64X0R0aktfmAW4tKPZmyMo=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/object/commitgraph\nM:0:0:555\nR:commitnode.go\na:0:0:444\nZ:Q1bn3Nj7UXxelG2tIn0Q2a2gOTEb4=\nR:commitnode_graph.go\na:0:0:444\nZ:Q1GxFi72df5HK+K0gxrQoxeS+wJas=\nR:commitnode_object.go\na:0:0:444\nZ:Q1OJk7vJex8xnDg2EmPYjj94PPtc8=\nR:commitnode_test.go\na:0:0:444\nZ:Q1HgQV2PHKBZfciiubvV+QcngOMos=\nR:commitnode_walker_ctime.go\na:0:0:444\nZ:Q1ff2IFcCyCi8OEO028hICHrB/fvw=\nR:doc.go\na:0:0:444\nZ:Q1+xWsUqD2fARnk86cn6PcfCrquNc=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/protocol\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/protocol/packp\nM:0:0:555\nR:advrefs.go\na:0:0:444\nZ:Q1r4GRfP+m6LmAmEfuTJBwgjntA9Y=\nR:advrefs_decode.go\na:0:0:444\nZ:Q1ksZwcLCHLkdfZ5hGoKLkDNWKyrM=\nR:advrefs_decode_test.go\na:0:0:444\nZ:Q1UGDfJIvEuDm+TK8XK8x0YFBw9Xk=\nR:advrefs_encode.go\na:0:0:444\nZ:Q1TqxHhTaS0g5Cy7JP9iReDZFXj0I=\nR:advrefs_encode_test.go\na:0:0:444\nZ:Q1QMhccPF5eg7pTElJj866NwH6Cmg=\nR:advrefs_test.go\na:0:0:444\nZ:Q1wwsF5pwVVcPU++rYE8bQMjQvRZQ=\nR:common.go\na:0:0:444\nZ:Q1b9nd1odqGMtbGcugbzT/Hm7m+zc=\nR:common_test.go\na:0:0:444\nZ:Q1Ux9Yj3WjZoa5iJN1NTedfVmcGuQ=\nR:doc.go\na:0:0:444\nZ:Q13oxdQT7MNGiI3TQzIAndpcQh8qg=\nR:report_status.go\na:0:0:444\nZ:Q19B25q73RKpF4wE7YYoSeowRDvEQ=\nR:report_status_test.go\na:0:0:444\nZ:Q1wMul+CjZ6qQyk+P4DvGAJLqNJkQ=\nR:shallowupd.go\na:0:0:444\nZ:Q1qeo3+z4v5KpHPSjG13rJ/HuRJjQ=\nR:shallowupd_test.go\na:0:0:444\nZ:Q1oasexkh2fJgBn8rpJGkjRrMJxno=\nR:srvresp.go\na:0:0:444\nZ:Q1kIFuO9lzcK5CkEvWmMj2zlCNbc0=\nR:srvresp_test.go\na:0:0:444\nZ:Q1pK8bnWHbiywmDOloq4kd5e/d8jU=\nR:ulreq.go\na:0:0:444\nZ:Q1kVx0TzkO8G/wjUqF8gN+d6DRqHo=\nR:ulreq_decode.go\na:0:0:444\nZ:Q1CesDXbbwBvK3h0ov/2rsfUSZggw=\nR:ulreq_decode_test.go\na:0:0:444\nZ:Q15xqP+x7CzOHZpVzNAIWVl8V6Aqs=\nR:ulreq_encode.go\na:0:0:444\nZ:Q1v34mfElyRbSI1b08+JAOMX/wyjw=\nR:ulreq_encode_test.go\na:0:0:444\nZ:Q1Ss3Qnl3UxCr0p0Af3bJ35BIdils=\nR:ulreq_test.go\na:0:0:444\nZ:Q1jfEyHe+1uK/9nR7nlDh8Re8KzCs=\nR:updreq.go\na:0:0:444\nZ:Q1fnT4BmLu3d+xkKbC6oLMLh95tvE=\nR:updreq_decode.go\na:0:0:444\nZ:Q1lg29Q+40obn0fJL8zeb4f8zmeGk=\nR:updreq_decode_test.go\na:0:0:444\nZ:Q1WgjMfoQOe13hnRAUekTVBUFfbzA=\nR:updreq_encode.go\na:0:0:444\nZ:Q1te4eVQVO5MRPonGGSAJQmhbyxzs=\nR:updreq_encode_test.go\na:0:0:444\nZ:Q1jhlgqvK466To+Yr4NnIR86Iq/ks=\nR:updreq_test.go\na:0:0:444\nZ:Q1qudRSFH6COD6iEb3OcPetPSkBIo=\nR:uppackreq.go\na:0:0:444\nZ:Q1HUfc1YCXUbtxXXjvMlrTZciWc8o=\nR:uppackreq_test.go\na:0:0:444\nZ:Q14BW3cYWYNzWuoQ/RDcjuHmgbBHY=\nR:uppackresp.go\na:0:0:444\nZ:Q1jO7v/GiWVowZg+lhsv2hIHqA41Q=\nR:uppackresp_test.go\na:0:0:444\nZ:Q1RU2SaKHggFIMrRLvIrufRaWYmTY=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/protocol/packp/capability\nM:0:0:555\nR:capability.go\na:0:0:444\nZ:Q1agLXJ5aDKAVvmTWtmzp3sb3c9G0=\nR:list.go\na:0:0:444\nZ:Q1bgs4UuOH3VQ2RcAGpdwWgHqyq1g=\nR:list_test.go\na:0:0:444\nZ:Q18Qex1ua0YP7/9ahvbX3ODbN3Sck=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/protocol/packp/sideband\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1JXdaE85DfDQuIxaY5AeQOZiAeaM=\nR:demux.go\na:0:0:444\nZ:Q1iRhGhMlEclsDoUy+8F1XJS4m0yQ=\nR:demux_test.go\na:0:0:444\nZ:Q1kmqGGqOQTmKaV8wErkzg8t5Ac4o=\nR:doc.go\na:0:0:444\nZ:Q1Ep9+H0DffZyyOTX59tbhlX/30hE=\nR:muxer.go\na:0:0:444\nZ:Q16p87B9MTbOfo2TIp6PHEqO5iuH8=\nR:muxer_test.go\na:0:0:444\nZ:Q1Q2pCHkbB7mcOB3zbxMdYu2AZFRA=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/revlist\nM:0:0:555\nR:revlist.go\na:0:0:444\nZ:Q1krMi7In4RptgWgLb9nvB5Qc5Tko=\nR:revlist_test.go\na:0:0:444\nZ:Q17mlM7Fr33uZuSkNYmId3u69ioUY=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/storer\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1sYWeq2nfFYsMQ4DqcoatzAvROPQ=\nR:index.go\na:0:0:444\nZ:Q18pxs207sAvtnXvMQcLYptlYCtn8=\nR:object.go\na:0:0:444\nZ:Q1wEVeDi/w6XbdT0f7hsvXEAtEUQs=\nR:object_test.go\na:0:0:444\nZ:Q1tVADk6nGD1ADIVLsuXuvs/atQKw=\nR:reference.go\na:0:0:444\nZ:Q1SEENkFMQu+eZy3aVE5qW1U8getw=\nR:reference_test.go\na:0:0:444\nZ:Q1uzuZSabl2FQTFBhUV6cwop3Q3Ak=\nR:shallow.go\na:0:0:444\nZ:Q1X3jEtUR4fhcdUtKPt+jyg9mM5kk=\nR:storer.go\na:0:0:444\nZ:Q1w0a0R4UW/kqOdtxmmyilY2cx2zw=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1U6ND/TqhdsXlQb7b/oFVSdRTREQ=\nR:common_test.go\na:0:0:444\nZ:Q1g6r0FiQCiEx2/awj9+N9dzEPTaM=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1mDdyqGigyVaIOnyfinnVdwwjVu8=\nR:client_test.go\na:0:0:444\nZ:Q1BO8lj+lJIw5dhdve3umn6fuL8nw=\nR:example_test.go\na:0:0:444\nZ:Q1nwOwt22/XgMFWOMFeasuPgN9uCo=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/file\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1an5JCM5XPeMHjKkmQNXq6x/cb0w=\nR:client_test.go\na:0:0:444\nZ:Q1a1q0EmhGVH++wl/NqFELmR7nWzk=\nR:common_test.go\na:0:0:444\nZ:Q11RJlcZ2h1++iQN6mbBqfbglTheU=\nR:receive_pack_test.go\na:0:0:444\nZ:Q1ZhR5YEBL7/jWN9+0p6zVk3uJdN4=\nR:server.go\na:0:0:444\nZ:Q1ULzD60nXZM3OeKci9wEUbt+xFW8=\nR:server_test.go\na:0:0:444\nZ:Q1rB9MWQSCvvk4rQ9qSgLZ8HW835I=\nR:upload_pack_test.go\na:0:0:444\nZ:Q1fk51BClWKoBEFRjoqmvcgw8jXK4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/git\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q14LOAKXGQ5vuhHCgi0/k9nJSRsFY=\nR:common_test.go\na:0:0:444\nZ:Q1UWlTDbGABrmEg5xSW90iuS1S/VY=\nR:receive_pack_test.go\na:0:0:444\nZ:Q1Lo2+50m70s/LdZ2acTtnu4qGOG0=\nR:upload_pack_test.go\na:0:0:444\nZ:Q1bbLn7xUE9Zcl5lxEvYlEjSaC4OA=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/http\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1Ggm0h2AbUBWOCzNcHtNUVIIWANM=\nR:common_test.go\na:0:0:444\nZ:Q1U1/v4ScCsEAaJjKh8kTE11RRFos=\nR:receive_pack.go\na:0:0:444\nZ:Q1mcxCNv/Nq4MBbM/paXldtjAZKxE=\nR:receive_pack_test.go\na:0:0:444\nZ:Q1xMq1mw8RHANxGJ9/zqSSGn72ObA=\nR:upload_pack.go\na:0:0:444\nZ:Q1ZJBhHlsDyAUi5xDnCp0DvmnwmEc=\nR:upload_pack_test.go\na:0:0:444\nZ:Q1fv0aTmjDRSvtFNg0Cf/RCxAMH6s=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/internal/common\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1erj4VMZE190PdAd9ZEI+xbFpd/o=\nR:common_test.go\na:0:0:444\nZ:Q1M0zb81x3NyMI06K4psLU+vs5sdM=\nR:server.go\na:0:0:444\nZ:Q1a5l36n5wnoMK+0+0b+CpdwQp6LE=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/server\nM:0:0:555\nR:loader.go\na:0:0:444\nZ:Q1G5LGinQc/9urGHXuOS/e/5gRUq4=\nR:loader_test.go\na:0:0:444\nZ:Q1peilHqyi7JUHmPjIVTNAUpt4iMo=\nR:receive_pack_test.go\na:0:0:444\nZ:Q1quLyMFH4sduJp+eBKBgE/UqRuHE=\nR:server.go\na:0:0:444\nZ:Q1/aJ+dnNNFKkmVhYfJNRy1blArwo=\nR:server_test.go\na:0:0:444\nZ:Q1zcLDYP1OMoLvKSx2H5FZMfbR1Rs=\nR:upload_pack_test.go\na:0:0:444\nZ:Q1cE5Mcz1C9T2A41IrzXIXrlW/YTk=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/ssh\nM:0:0:555\nR:auth_method.go\na:0:0:444\nZ:Q177REfJjWYZvfHB9r9dAUj4evvCo=\nR:auth_method_test.go\na:0:0:444\nZ:Q18kGgdGYDq2s7o83Wdp5ASdoiJqE=\nR:common.go\na:0:0:444\nZ:Q1fGcd028f8qJcAS3iEyqk8N0FaDg=\nR:common_test.go\na:0:0:444\nZ:Q18QH91OJ18tqJ6FxPYhY2txBXUeY=\nR:proxy_test.go\na:0:0:444\nZ:Q1ZxuLyWjZXc46LZ2ztvzFk61RMyY=\nR:upload_pack_test.go\na:0:0:444\nZ:Q12EudaOWZgWBeDtutRBfe4hYiWfk=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/plumbing/transport/test\nM:0:0:555\nR:receive_pack.go\na:0:0:444\nZ:Q1mMMpHEF0A6PcwnPJWJroJxYgWXc=\nR:upload_pack.go\na:0:0:444\nZ:Q1XWuORNOiOAqlsp0mGpnWo0vY64M=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage\nM:0:0:555\nR:storer.go\na:0:0:444\nZ:Q1eggy6vq1C8bEouKaAAUaoIWlX8k=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage/filesystem\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1iEWz0c+6bH8yW2BxV7lFNxusNZk=\nR:config_test.go\na:0:0:444\nZ:Q1r5GlW5ynRL+ySN7GsPLDz3krzEI=\nR:deltaobject.go\na:0:0:444\nZ:Q1ZNGQVwzMKDG/7EQ3LCTJZ5/ZU/8=\nR:index.go\na:0:0:444\nZ:Q1tahTnC9fOIpn65YSoROPGbcITvY=\nR:module.go\na:0:0:444\nZ:Q1K26Ci1XGa4flDmJWr0f2EFfBn2A=\nR:object.go\na:0:0:444\nZ:Q14M+gMTFoLF/jpWfKMqHNNJVr3Vw=\nR:object_test.go\na:0:0:444\nZ:Q1XPKHLBsgwyQyUq9WuTz8QWG3Gtk=\nR:reference.go\na:0:0:444\nZ:Q1xv6Yez/lUzqlDfn79AwiCPWjwlg=\nR:shallow.go\na:0:0:444\nZ:Q14haGDJykjTLm8Zsr55WMsmQo+D4=\nR:storage.go\na:0:0:444\nZ:Q1F5p3r0BEnAtXNEaqn7r1n5T6BpQ=\nR:storage_test.go\na:0:0:444\nZ:Q1s+SAIUg9oQvqrm+OQGaa2jFhK1g=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage/filesystem/dotgit\nM:0:0:555\nR:dotgit.go\na:0:0:444\nZ:Q1y27nT8XuoryNa9kXH0RWmilOdGY=\nR:dotgit_rewrite_packed_refs.go\na:0:0:444\nZ:Q1mO/qslWE4Y5UsCWQE5bfoeoD1NE=\nR:dotgit_setref.go\na:0:0:444\nZ:Q1MdSKu8WarGQkXR/mI3hy2U0P6sQ=\nR:dotgit_test.go\na:0:0:444\nZ:Q1v58R2ak/tTV953cNbx58HaJPDTw=\nR:repository_filesystem.go\na:0:0:444\nZ:Q1dtciG109mx4CBV5KV5AS01vAdac=\nR:repository_filesystem_test.go\na:0:0:444\nZ:Q1aN3iKQRNO7EbqbXT9RaKtKzPniM=\nR:writers.go\na:0:0:444\nZ:Q1WWIu492FLT+iulDp0/Y/QLI/VkM=\nR:writers_test.go\na:0:0:444\nZ:Q1Xdg+u9+wws4XikM9ZnnfqvFnbIM=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage/memory\nM:0:0:555\nR:storage.go\na:0:0:444\nZ:Q143XHUTHBrfD5x6h7ujcH+WWnwz4=\nR:storage_test.go\na:0:0:444\nZ:Q1aLVeBbvofj+75ZkxceD5kfF6eGs=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage/test\nM:0:0:555\nR:storage_suite.go\na:0:0:444\nZ:Q1kpfqPRLjOSnT9bUwwxIJKZvW17w=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/storage/transactional\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1umqJlaLZkmLp346/9enanvC1wS8=\nR:config_test.go\na:0:0:444\nZ:Q1wUIISLNxJF/R8nvP6erWy7nbuo8=\nR:doc.go\na:0:0:444\nZ:Q1m4CS2Z2jb1bDkxC7CH0J6IsTEZ4=\nR:index.go\na:0:0:444\nZ:Q1bJWLedV1r5cbt/84WT+Xau06xfk=\nR:index_test.go\na:0:0:444\nZ:Q1dv4RrWS4BVEziL3x1dzbJ6MRm/4=\nR:object.go\na:0:0:444\nZ:Q1HSqmApVTcoG0uHmrjTsFrhyY2M4=\nR:object_test.go\na:0:0:444\nZ:Q1nZ4RWTSrDVvZXp4fjgAO4bMLlkk=\nR:reference.go\na:0:0:444\nZ:Q1hsjXjOzliOFzaQnjCFldzUFgqC4=\nR:reference_test.go\na:0:0:444\nZ:Q1gtISVUibk94MIw2cOPnk7Cbaa3w=\nR:shallow.go\na:0:0:444\nZ:Q1dS3/581vY8hehD3y/RQft1zBD7w=\nR:shallow_test.go\na:0:0:444\nZ:Q1mBwDdEXOo3jqe/D7xvHZc/DzOSU=\nR:storage.go\na:0:0:444\nZ:Q1WsPdqbFNRv9V6SKl7X1YQ8ghtlc=\nR:storage_test.go\na:0:0:444\nZ:Q1x5NagKRyJJaDWTM4PUcsjVuSTAM=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils\nM:0:0:555\nR:blame2humantest.bash\na:0:0:444\nZ:Q1Ik+jErCM2NmdJgNro2hghbSQwy0=\nR:revlist2humantest.bash\na:0:0:444\nZ:Q1bqZM65gPFcZQbPdpkckLHZkdi2M=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/binary\nM:0:0:555\nR:read.go\na:0:0:444\nZ:Q1qf2nV19Q7l1+vT/iNTGFykV2kz0=\nR:read_test.go\na:0:0:444\nZ:Q1DyBdb6VhnnOZQnOzndzReOT8VE8=\nR:write.go\na:0:0:444\nZ:Q1PCPTs2V6rOVdhJGil4EO9Grs8kA=\nR:write_test.go\na:0:0:444\nZ:Q1xX4H4LGf9PweGLqOT1fFLzP4Y8g=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/diff\nM:0:0:555\nR:diff.go\na:0:0:444\nZ:Q1LkRX4kQUqWydYqvzmnFc1Seo4LE=\nR:diff_ext_test.go\na:0:0:444\nZ:Q1PELmlqNCDhTXIRg938kpILA4scE=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/ioutil\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1I7mROqriEiryd8zzKBZbFLlJPJI=\nR:common_test.go\na:0:0:444\nZ:Q1pVd846BzxywKXdUito+9z7ZFcPM=\nR:pipe.go\na:0:0:444\nZ:Q1tf7tOXfRFuYx4eeZ4D+7pROiMfI=\nR:pipe_js.go\na:0:0:444\nZ:Q1PKMxzO93y+95BjzIgV6ttZKjd7E=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie\nM:0:0:555\nR:change.go\na:0:0:444\nZ:Q10zVTyY7WVB4//VKSTCB+mCUdcn0=\nR:change_test.go\na:0:0:444\nZ:Q1+DZzkIjIEVJq/rBBtRgNHdkepo4=\nR:difftree.go\na:0:0:444\nZ:Q1bVmz7mP18jyHzcjzgvEJAAik1cA=\nR:difftree_test.go\na:0:0:444\nZ:Q1TjauqHWQBQGQXJJlwPh8AbdnwRg=\nR:doc.go\na:0:0:444\nZ:Q1GasSe4UX78ZMHBEqP/jDY2R+i4c=\nR:doubleiter.go\na:0:0:444\nZ:Q1q2fTHf1vEqFCbSk8oTYyPElECcs=\nR:iter.go\na:0:0:444\nZ:Q1Nq/V89HUpofcxLWyu2nTWwVhXWA=\nR:iter_test.go\na:0:0:444\nZ:Q1CGsVRO4daY2JPoT8MuDhWaDWJZ4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/filesystem\nM:0:0:555\nR:node.go\na:0:0:444\nZ:Q1/IpG3MrMhyX7a6zsHGarmn02szo=\nR:node_test.go\na:0:0:444\nZ:Q1kOYo606RD/lVmbr8qo0Guk3quZI=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/index\nM:0:0:555\nR:node.go\na:0:0:444\nZ:Q1LBfcmttse7nmPvHNjWSYXJpB8jU=\nR:node_test.go\na:0:0:444\nZ:Q1H9xj1e5ovB+L9U0oFzInt8FAM5g=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/internal/frame\nM:0:0:555\nR:frame.go\na:0:0:444\nZ:Q10EtAc1ENDZ/IEbZJBiEJOj/9nM0=\nR:frame_test.go\na:0:0:444\nZ:Q1JCPS9Cf/4etVDdG3MnOF28JLpW4=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/internal/fsnoder\nM:0:0:555\nR:dir.go\na:0:0:444\nZ:Q1M/biAEvjJJ4wbN0Cv2uFDvrTJ4Q=\nR:dir_test.go\na:0:0:444\nZ:Q1A0Vl06maUqiLBZaBI6+h+5mBztM=\nR:doc.go\na:0:0:444\nZ:Q1elUyhiKhGTn1OArtQ28yOUiqi2k=\nR:file.go\na:0:0:444\nZ:Q1nuShvpG+QiW83txdVrduBilXUTM=\nR:file_test.go\na:0:0:444\nZ:Q1xFyaXJP87S1Ue7rPw4YLPpFFDiI=\nR:new.go\na:0:0:444\nZ:Q1OhA3d+O9j5U/Z5ajWQAc9r9zHAc=\nR:new_test.go\na:0:0:444\nZ:Q1ce6pPtcf4SzHxF2XMu70mNJSsbs=\nF:root/go/pkg/mod/github.com/go-git/go-git/v5@v5.4.2/utils/merkletrie/noder\nM:0:0:555\nR:noder.go\na:0:0:444\nZ:Q1nRFN91AB0gJabm0Zivqqp3fHbTA=\nR:noder_test.go\na:0:0:444\nZ:Q1mXQwiZeQAGijE5EzGANLgOQsghA=\nR:path.go\na:0:0:444\nZ:Q1Y7JWcJym59zubO9ryETOLzH5uWc=\nR:path_test.go\na:0:0:444\nZ:Q1FOv2d/I1UJ0iqVm0o53Qf+7Q1+I=\nF:root/go/pkg/mod/github.com/go-openapi\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4\nM:0:0:555\nR:.codecov.yml\na:0:0:444\nZ:Q1qRj2/bn5I3F4jhlwZ+9NGuT2gtI=\nR:.gitattributes\na:0:0:444\nZ:Q1l9GGVO2rXK5+qAnnWw9BlNIShdk=\nR:.gitignore\na:0:0:444\nZ:Q1W4oinW5hrx774o8NYsgjdTq8Y+o=\nR:.golangci.yml\na:0:0:444\nZ:Q1fY463nfykj6l4XfJRN3GsFOYPOU=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1Ox3tWH1ZynpL+fys2ZSF4eHaOv0=\nR:analyzer.go\na:0:0:444\nZ:Q1sOM23McidqTGcetLQJm56qifnGg=\nR:analyzer_test.go\na:0:0:444\nZ:Q1a+F8XgqWzmJLDJXx3GNUco3BNro=\nR:appveyor.yml\na:0:0:444\nZ:Q1ereaQ9O7V1hACa2GPTvVzCkj328=\nR:debug.go\na:0:0:444\nZ:Q13aIGOFLLn9WXLyyeayFECwzlvQc=\nR:doc.go\na:0:0:444\nZ:Q15ajrnQWQH19Zgl+15bTN5pe8O/w=\nR:fixer.go\na:0:0:444\nZ:Q16RwC4zFTASZwaY6cYwhKpEFeHSo=\nR:fixer_test.go\na:0:0:444\nZ:Q1yOpuKQSVo48uaSQDnXlYNsedf6o=\nR:flatten.go\na:0:0:444\nZ:Q1kAvjYLxQfSZtmrB9lZxvndyeDWE=\nR:flatten_name.go\na:0:0:444\nZ:Q1koRnYOyUU61o6nONfx2EEm5YE5E=\nR:flatten_name_test.go\na:0:0:444\nZ:Q1i3T62uUGum8Czv/23U0UJKZwRZY=\nR:flatten_options.go\na:0:0:444\nZ:Q1S8iw69Oiv27AoXyik/SmrB8iHoc=\nR:flatten_test.go\na:0:0:444\nZ:Q11vJ1HvsDurSt1rrrTfeQFgplX6g=\nR:go.mod\na:0:0:444\nZ:Q1mKp6vlD0hH2qnnbdAOLlHsAIGwg=\nR:go.sum\na:0:0:444\nZ:Q1wSVLAz61foKx614kiPd1WvNNCMk=\nR:mixin.go\na:0:0:444\nZ:Q1z9CeD6V5XjvMr6NmvOB2xchZyFo=\nR:mixin_test.go\na:0:0:444\nZ:Q1acOqrmEwCqqk5j4o1M23t7xIJb4=\nR:schema.go\na:0:0:444\nZ:Q1h6C6jRmy/ZccdyrkqQNRcGQaSXM=\nR:schema_test.go\na:0:0:444\nZ:Q1v7Vqn+DbkhsNRkW/6V8PgmcMQjw=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q1D8/I0/0JESxOHP9QAjr3krCVlQg=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures\nM:0:0:555\nR:allOf.yml\na:0:0:444\nZ:Q1imUCpbJAVjbRS4DUdDHB+G4jBmA=\nR:bar-crud.yml\na:0:0:444\nZ:Q1LBJun0C9mngXCxzRMVZme4u6QdU=\nR:definitions.yml\na:0:0:444\nZ:Q1qeWNdipRldwsc7DCmKfQoK8jwPA=\nR:empty-paths.json\na:0:0:444\nZ:Q1Pq0HywqPnA3iKJvjEtPL6lH3BaI=\nR:empty-props.yml\na:0:0:444\nZ:Q1d7vTMKVW8ndpWURbrO6PuPaWyQU=\nR:enums.yml\na:0:0:444\nZ:Q1DbDZsgOxzSdexakLIHlERBmejI0=\nR:errors.yml\na:0:0:444\nZ:Q1/N9IbejvPFL5qa6AjylqlLGpysU=\nR:external_definitions.yml\na:0:0:444\nZ:Q1ZIXJtiHsuARzhfLjz3MHJItPxgs=\nR:external_definitions_valid.yml\na:0:0:444\nZ:Q1tjfkqP+4AsriAmPBEMjxyRPGcFM=\nR:fixture-1289-param.yaml\na:0:0:444\nZ:Q1u8Cr93/tsAp6twRXqkX08fW7Z90=\nR:fixture-342-2.yaml\na:0:0:444\nZ:Q1656XTv4K2u9zKqHUlNDEOZ1Fel8=\nR:fixture-342-3.yaml\na:0:0:444\nZ:Q1GnzEe2ZbrDtLRuCVM37eLOQrAaw=\nR:fixture-342.yaml\na:0:0:444\nZ:Q13F74ahwu8c4C7hLdDWtNmEsN19c=\nR:flatten.yml\na:0:0:444\nZ:Q1Pz/+2NJr8fUfQhRvnSP3LFJTzwo=\nR:foo-crud.yml\na:0:0:444\nZ:Q18mZ7GLQzs7xMUVF6a9epfdcJlj4=\nR:inline_schemas.yml\na:0:0:444\nZ:Q1LA0N2SfDr06LiKvFMxykVwv1Qkw=\nR:more_nested_inline_schemas.yml\na:0:0:444\nZ:Q1mt7PNdhmok51XDe1QnlHb1Fbt9c=\nR:nested_inline_schemas.yml\na:0:0:444\nZ:Q1cTAGZhznWmky7NyCgiAc4viKnTw=\nR:no-paths.yml\na:0:0:444\nZ:Q1m/Y6g7MqwsyY2lDE5F7ZvP8qQOk=\nR:other-mixin.yml\na:0:0:444\nZ:Q1HS2U1bX2Noy8hL1OSIHD2aKesmQ=\nR:patterns.yml\na:0:0:444\nZ:Q1lETCNDgDYvksfJm9zf7bejv33os=\nR:references.yml\na:0:0:444\nZ:Q1FkBQwnCtiN32KPILgNnUINT5Yuw=\nR:securitydef.yml\na:0:0:444\nZ:Q1q/TzPRk8Ql0WKQQ6S27xT18oW+Y=\nR:swagger-props.yml\na:0:0:444\nZ:Q1Ej2XqVxCf4oJMxRcvKeBNUZ+B1o=\nR:widget-crud.yml\na:0:0:444\nZ:Q1hL3+rUs/YdcIUZ1n9DTH9Jp+xpU=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/azure\nM:0:0:555\nR:applicationGateway.json\na:0:0:444\nZ:Q17Dym+HwqMZ0gYp/urSbed0hWQ7Q=\nR:applicationSecurityGroup.json\na:0:0:444\nZ:Q13YZXt3rE6AlZFUB5bZRwSz7u1kE=\nR:loadBalancer.json\na:0:0:444\nZ:Q1GxTo2i8LX7g24InIKr3K6SG3Zo8=\nR:network.json\na:0:0:444\nZ:Q14s66a1pV1MolwjwNN9YcrH0JcHk=\nR:networkInterface.json\na:0:0:444\nZ:Q1yr8q6xopbeFBEURHp3Cq9x4BvYo=\nR:networkProfile.json\na:0:0:444\nZ:Q1CQqP1PaO2bLvWLbGAqSHhyPJ1vY=\nR:networkSecurityGroup.json\na:0:0:444\nZ:Q1GxmwgG9JpTmwrFWIRd40LfnK7yE=\nR:networkWatcher.json\na:0:0:444\nZ:Q1PD1rIra9iHt/O+mQUeIadjd5mKE=\nR:privateEndpoint.json\na:0:0:444\nZ:Q1NcCEDgFx10wS8Nz9azV2S9EWQDI=\nR:privateLinkService.json\na:0:0:444\nZ:Q1/osgCeImfN10u2QAOLeLjXycp58=\nR:publicIpAddress.json\na:0:0:444\nZ:Q1T6PfTE0XAtp/NgGrBm9Iq0GqBS8=\nR:routeTable.json\na:0:0:444\nZ:Q1rIGIBtTytnFpuj62ZO+7QWI7fBk=\nR:serviceEndpointPolicy.json\na:0:0:444\nZ:Q18Znatj8YEDkMJzUHeeBN+0GF/Rk=\nR:virtualNetwork.json\na:0:0:444\nZ:Q1+LF/3j7UFSPARHJXpQ4LXettF+o=\nR:virtualNetworkTap.json\na:0:0:444\nZ:Q1GJex9lQrpd1IDjzCw3N7JNdpWEU=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/azure/examples\nM:0:0:555\nR:NetworkInterfaceCreate.json\na:0:0:444\nZ:Q1nptfxSp+4O2gUKMYHy9VRfptSNg=\nR:NetworkInterfaceDelete.json\na:0:0:444\nZ:Q1HCuZv6r8+72yyMb08nT8UEQmYLA=\nR:NetworkInterfaceEffectiveNSGList.json\na:0:0:444\nZ:Q1Z60xZJjbCAtkLg73/ZLqo5GlAIE=\nR:NetworkInterfaceEffectiveRouteTableList.json\na:0:0:444\nZ:Q1Ny4FT6DHxULmrvLpsFYwo2qvcHA=\nR:NetworkInterfaceGet.json\na:0:0:444\nZ:Q1Zb1dKV8/PrbKHq17lSXnmgDokvA=\nR:NetworkInterfaceIPConfigurationGet.json\na:0:0:444\nZ:Q111GrUSrmMTsJlzLAQ7mhgUVZyHI=\nR:NetworkInterfaceIPConfigurationList.json\na:0:0:444\nZ:Q1akG27SVfxZLPp8B5Qi97SGjY5Wg=\nR:NetworkInterfaceList.json\na:0:0:444\nZ:Q1i7wrWyXm7R6qLOl6x+N+S8rrM+U=\nR:NetworkInterfaceListAll.json\na:0:0:444\nZ:Q1nJYWNb/178ePetlMwrVVgaEO+IU=\nR:NetworkInterfaceLoadBalancerList.json\na:0:0:444\nZ:Q1HQv/+6W0OEqBBgIUOclCl6WOg5M=\nR:NetworkInterfaceTapConfigurationCreate.json\na:0:0:444\nZ:Q1s1fV5m/vf08w2z9LCtwLPhbC+/M=\nR:NetworkInterfaceTapConfigurationDelete.json\na:0:0:444\nZ:Q1BFn26HZwF0Jb2q8HMNkoTV1SNHc=\nR:NetworkInterfaceTapConfigurationGet.json\na:0:0:444\nZ:Q1tpwYIDOO3YGqbXSAZeuVmrX/tlA=\nR:NetworkInterfaceTapConfigurationList.json\na:0:0:444\nZ:Q1OgOBB0Pz/2A5kQVZQaGDxAqgV1c=\nR:NetworkInterfaceUpdateTags.json\na:0:0:444\nZ:Q1i9dc3N9tDPqtSnUNar3MkMJvIMc=\nR:PublicIpAddressCreateCustomizedValues.json\na:0:0:444\nZ:Q19M3z0ztkIQOz7Hx3gxlj0Ypg0i4=\nR:PublicIpAddressCreateDefaults.json\na:0:0:444\nZ:Q1wKBsNBAp3Q0+4HueUF5svwM8nog=\nR:PublicIpAddressCreateDns.json\na:0:0:444\nZ:Q1kuCdCQYIrHpz7wUbbbgqjFVzDkU=\nR:PublicIpAddressDelete.json\na:0:0:444\nZ:Q1NKBQUD6YP3muwSBeePMcJ4LL++Y=\nR:PublicIpAddressGet.json\na:0:0:444\nZ:Q1mbN1dLdJDZshhxV2V03YRNFT8hM=\nR:PublicIpAddressList.json\na:0:0:444\nZ:Q1VzAr8tDMK7aLAD6iIen+hvDb8OA=\nR:PublicIpAddressListAll.json\na:0:0:444\nZ:Q1aD3WqQjyXXZwtYCaxraHUVZGTqc=\nR:PublicIpAddressUpdateTags.json\na:0:0:444\nZ:Q15KxRX0ydWSaB9wOdi18gYLJXDdE=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs\nM:0:0:555\nR:bitbucket.json\na:0:0:444\nZ:Q12N8gLH3r+wb/ELyyLBVWm863pFA=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1429\nM:0:0:555\nR:responses.yaml\na:0:0:444\nZ:Q1QwXFm9E89L04JpDJUM6t6CX2BvA=\nR:swagger.yaml\na:0:0:444\nZ:Q1m2CxAxa5x/nKImmhsbQD7uLghIs=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1429/remote\nM:0:0:555\nR:remote.yaml\na:0:0:444\nZ:Q1g3BPLFvdWgQ4t7OqnJNrkcgiyGY=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1429/remote/remote\nM:0:0:555\nR:remote.yaml\na:0:0:444\nZ:Q1QmcqTJK4NktvKRzrP1y3yZD5MKg=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1602\nM:0:0:555\nR:fixture-1602-1.yaml\na:0:0:444\nZ:Q1hJFEgjNBg/o9gYcxf05i7ZVUv2U=\nR:fixture-1602-2.yaml\na:0:0:444\nZ:Q17eVV1oZYMRO8sVF3A8QRTukFL1M=\nR:fixture-1602-3.yaml\na:0:0:444\nZ:Q12ddbtzVWKUHnEfzYKNTxKhVaS8Y=\nR:fixture-1602-4.yaml\na:0:0:444\nZ:Q1zv+NHLscka71ggYAgdQ37B/vH/o=\nR:fixture-1602-5.yaml\na:0:0:444\nZ:Q1MD3asPjPMxapvx6+z8yyCguVdAY=\nR:fixture-1602-6.yaml\na:0:0:444\nZ:Q1MKpRbIpCcjf+BnCMCxMNIPxCD8E=\nR:fixture-1602-full.yaml\na:0:0:444\nZ:Q1pd36Jv1t6bEZwobsXeikjr3p8hQ=\nR:other-invalid-pointers.yaml\na:0:0:444\nZ:Q1m58IMoLDoZmcfBeAQkuc5nVp95U=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1614\nM:0:0:555\nR:gitea.yaml\na:0:0:444\nZ:Q1bKoKEvv+rkPZlBANDv6DbCGrHUw=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1621\nM:0:0:555\nR:definitions.yaml\na:0:0:444\nZ:Q1NsJBxAFyV6cnMWlA+qgDxPzIeXw=\nR:fixture-1621.yaml\na:0:0:444\nZ:Q1Fk3vsrGD+i7/omR211uC+oSHhpI=\nR:parameters.yaml\na:0:0:444\nZ:Q1p4bNkvY1uMUJGboXqj854t7lUfg=\nR:responses.yaml\na:0:0:444\nZ:Q1DvCL74Vs2Tgv0pFXlpBT1atKgm8=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1767\nM:0:0:555\nR:Identifier.yaml\na:0:0:444\nZ:Q1xo7mqJvcO5KF3OAdvZOxl+9Y2jg=\nR:Patient.yaml\na:0:0:444\nZ:Q10ZhXMAUqqtDZ+PvH0/idljE16hg=\nR:Reference.yaml\na:0:0:444\nZ:Q1TZ+2W+bvdX30MUaLnogSh9CY8uY=\nR:fixture-1767.yaml\na:0:0:444\nZ:Q1Qy5SL7q4oXobsbMNqRDjIC0UbdQ=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1774\nM:0:0:555\nR:AccessToken.yaml\na:0:0:444\nZ:Q1ieRacqLU+hJZ1ZMHdk+3+SwqXAY=\nR:Credentials.yaml\na:0:0:444\nZ:Q1+ETs+JwlF9pAEWcFRRTvyh6Fv0s=\nR:Data.yaml\na:0:0:444\nZ:Q14Jqb4qYwy7EyPx64KjXVJMOBv+g=\nR:Error.yaml\na:0:0:444\nZ:Q1XWS0PWhBh3rffp+bqvUJ+nLz/o0=\nR:Roles.yaml\na:0:0:444\nZ:Q1Q28PFhhj+fYMneJXqBqA8ZbUU/s=\nR:User.yaml\na:0:0:444\nZ:Q1GTCcTxcFQIXfi19KuucyOGcO81o=\nR:Users.yaml\na:0:0:444\nZ:Q1srPM/KE4SBK9v/s53cPRhKZeNdg=\nR:def_api.yaml\na:0:0:444\nZ:Q1yi8yQBEAMiFVsUx11J1INXCoZz0=\nR:parameters.yaml\na:0:0:444\nZ:Q1JTujARFEOkc+/og0UyGjOJgklqs=\nR:responses.yaml\na:0:0:444\nZ:Q1b/bhP/RLjelmCEIPwVpKYwEktMY=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1796\nM:0:0:555\nR:queryIssue.json\na:0:0:444\nZ:Q15T1apxWuIyJvQywcGea87p2tSmg=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1796/models\nM:0:0:555\nR:pair.json\na:0:0:444\nZ:Q1oX7u6LTDGz18xvoTRg9nPuqjt7k=\nR:query.json\na:0:0:444\nZ:Q17uwy86GsfQiF6m+G2WEDyQm953Y=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1851\nM:0:0:555\nR:definitions-3.yaml\na:0:0:444\nZ:Q16ll6b2yZZyDtEWYB+3+jeMy4zHU=\nR:definitions-31.yaml\na:0:0:444\nZ:Q1cgL5Q4isDGyL985IV0NlFCHmByg=\nR:definitions.yaml\na:0:0:444\nZ:Q1AGozU9sy3YWaaCc/5pK4B79dPJ8=\nR:fixture-1851-2.yaml\na:0:0:444\nZ:Q101TU0yDAhoWtZCIb+aQRPh85ci8=\nR:fixture-1851-3.yaml\na:0:0:444\nZ:Q1VX/+v7J9qfcM+GqMCwsu/9rcvTc=\nR:fixture-1851.yaml\na:0:0:444\nZ:Q1gHRv1GdoYnXNnGF2W0Ow612oG+c=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/1851/remote\nM:0:0:555\nR:definitions-32.yaml\na:0:0:444\nZ:Q1Dq0YBtGpl/42I6lyzNnnwdViCXQ=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2092\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1McLBgpNayG3kfGBICHE44/ZW5i8=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2092/definitions\nM:0:0:555\nR:addresses.yaml\na:0:0:444\nZ:Q1unKtMpKb1pOB9UshAM8+KHraeqc=\nR:response.yaml\na:0:0:444\nZ:Q12Azx/uVulyQyyEJGfvw19Fehfdc=\nR:teams.yaml\na:0:0:444\nZ:Q1yC/Na5Cw5YwK5PPwHRuj87RtxlE=\nR:user.yaml\na:0:0:444\nZ:Q1H9mberGYqwGVuWonKzV5wKal0Qc=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2113\nM:0:0:555\nR:base.yaml\na:0:0:444\nZ:Q1AuPUI/x7+vXoEDLxaMyqceYwSyw=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2113/schemas\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2113/schemas/api\nM:0:0:555\nR:api.yaml\na:0:0:444\nZ:Q1FOEz2xfTpdIC8OgvtglBHuoqd5o=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2113/schemas/dummy\nM:0:0:555\nR:dummy.yaml\na:0:0:444\nZ:Q1xE9VOrDCA7Cirl3HCeuqOOTmiSE=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/2113/schemas/example\nM:0:0:555\nR:example.yaml\na:0:0:444\nZ:Q1PTqbvl/j1zm7KL4+RGc959fwsZ0=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/bugs/remote-absolute\nM:0:0:555\nR:ce_v0_2_without_data.json\na:0:0:444\nZ:Q1lC/NpWXhizx/vaFaj8WPW0LLYig=\nR:remote-spec.json\na:0:0:444\nZ:Q1D6QhNGAeHy/0L2HxUzeFCPi09T0=\nR:swagger-mini.json\na:0:0:444\nZ:Q1u6sz1/2h26Bt0xw5lVBqGbndR9I=\nR:swagger-with-local-ref.json\na:0:0:444\nZ:Q1YDXy8QdA4Hbx+SQVrJYySCFZ+BE=\nR:swagger-with-ref.json\na:0:0:444\nZ:Q1KYtrez0z15NttGuUDz2k7pys9XE=\nR:swagger-with-remote-only-ref.json\na:0:0:444\nZ:Q1cmY93Lq2Umw23aV74kzNDmRFBrk=\nR:swagger.json\na:0:0:444\nZ:Q1cvenNa4QCrgHbF0lp08MsJ6ju6A=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/errors\nM:0:0:555\nR:fixture-unexpandable-2.yaml\na:0:0:444\nZ:Q1OmowhDNMQ4h3gZD6bGSk8VsdxRE=\nR:fixture-unexpandable.yaml\na:0:0:444\nZ:Q16xRYDy8x+EperFAJ/oHw7/SBeCY=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/expected\nM:0:0:555\nR:external-references-1.json\na:0:0:444\nZ:Q1UOG26voAetX9FB6KMDE2PGadzcE=\nR:external-references-2.json\na:0:0:444\nZ:Q14ca/l+GArf32i9bD4bfalu/4HCI=\nR:issue-2113.json\na:0:0:444\nZ:Q1hFY7YBs06T3CNF+kIlGa2Ot+dT8=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/external\nM:0:0:555\nR:definitions.yml\na:0:0:444\nZ:Q1zqOZJrFlKz32vjYVXTkRwQqm8Is=\nR:definitions2.yml\na:0:0:444\nZ:Q17VXFwolAzcUJN75eXcZUgRE77G4=\nR:errors.yml\na:0:0:444\nZ:Q1N3L+/gtSBva8ihWUOfK2anNZzkY=\nR:nestedParams.yml\na:0:0:444\nZ:Q1R1Sz0+xvIBkq0VwT+nND+nX1Tls=\nR:nestedResponses.yml\na:0:0:444\nZ:Q1KhBYps54gEXKEEiKIbsFNuYb4ks=\nR:parameters.yml\na:0:0:444\nZ:Q1PwsFSnK3P+45mYszRu6TlvqNv5k=\nR:pathItem.yml\na:0:0:444\nZ:Q1o07ET8vjiN4rPwWDGmS8DVyKvHM=\nR:responses.yml\na:0:0:444\nZ:Q1394i5fyL2rabamemYSu1Ph8K8js=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/fixer\nM:0:0:555\nR:fixer.yaml\na:0:0:444\nZ:Q1m8/Ws7AW8ZUxtL521r5xSu3HZyw=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/oaigen\nM:0:0:555\nR:fixture-oaigen.yaml\na:0:0:444\nZ:Q12iOa1gbznGdpRgl17nb/zTJIqss=\nR:test3-bis-swagger.yaml\na:0:0:444\nZ:Q1LkOvVwMkN+V7/gFygKo9jV9wCfQ=\nR:test3-model-schema.json\na:0:0:444\nZ:Q13CXKerndRlNB7IPwa0dzs7FIPgI=\nR:test3-swagger.yaml\na:0:0:444\nZ:Q1H+Rp1QUUNUSskdNM6elUHafjtog=\nR:test3-ter-model-schema.json\na:0:0:444\nZ:Q1w/KbVqQozf1Tqh+saWCAeFKbVUc=\nR:test3-ter-swagger-flat.json\na:0:0:444\nZ:Q1yManhKRifiHC4GVcIAmatXIFqBo=\nR:test3-ter-swagger.yaml\na:0:0:444\nZ:Q1Xx+WmvZriAHxFa1HFD26d3WidEA=\nR:transitive-1.yaml\na:0:0:444\nZ:Q1difVhmdy8Zy/X/yoT18mKgguFjc=\nR:transitive-2.yaml\na:0:0:444\nZ:Q1FLEB6LXdQQ9Rigr0oWp9Z2PkHzI=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/operations\nM:0:0:555\nR:fixture-operations.yaml\na:0:0:444\nZ:Q1HKl78RKcnniVLseZdYD2x/g15lY=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/parameters\nM:0:0:555\nR:fixture-parameters.yaml\na:0:0:444\nZ:Q1dgYOeByYT9k3oW+2oeu/jG9HStU=\nR:other-source.yaml\na:0:0:444\nZ:Q13B3zdGnlvZFp3NYvfKvVphlBg/c=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/fixtures/pointers\nM:0:0:555\nR:fixture-pointers-loop.yaml\na:0:0:444\nZ:Q1WobWvQYjQiaqf/gRzl6fYGHLYHc=\nR:fixture-pointers.yaml\na:0:0:444\nZ:Q1llWXIAsHez6YusyhOn8J/GLrFts=\nR:remote.yaml\na:0:0:444\nZ:Q1XrJtjTYya6kMbos8k5c5DX7OhN8=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/antest\nM:0:0:555\nR:helpers.go\na:0:0:444\nZ:Q1QbM5ema8GM/Io5C7jnU+/KEILCA=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/debug\nM:0:0:555\nR:debug.go\na:0:0:444\nZ:Q1m4gDLX9dnenjhqv4F3J5nXJcm8o=\nR:debug_test.go\na:0:0:444\nZ:Q1iNu23DL36oguucsEp9CtaYR8+20=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten/normalize\nM:0:0:555\nR:normalize.go\na:0:0:444\nZ:Q176ni/ik7UVaAE5zWqQTaMbfekos=\nR:normalize_test.go\na:0:0:444\nZ:Q10DrMy+6zd5UozLmB94Hwn8vmTV4=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten/operations\nM:0:0:555\nR:operations.go\na:0:0:444\nZ:Q1kggfTYAPaaQuXhqW1KgS/dAkTHY=\nR:operations_test.go\na:0:0:444\nZ:Q10MaeXzVzQsamOPCTHkDrrATV91I=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten/replace\nM:0:0:555\nR:replace.go\na:0:0:444\nZ:Q1z65CFgwizqSMImxhZr3fivpxcOE=\nR:replace_test.go\na:0:0:444\nZ:Q1ykNZXm6ZXEOxH71FROzO5OJX8tY=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten/schutils\nM:0:0:555\nR:flatten_schema.go\na:0:0:444\nZ:Q11zTrnW0cyEQXFrlRrCYMhd1I0c0=\nR:flatten_schema_test.go\na:0:0:444\nZ:Q1VCgeugCBJ3Un1TE8NyuoTE2L3rc=\nF:root/go/pkg/mod/github.com/go-openapi/analysis@v0.21.4/internal/flatten/sortref\nM:0:0:555\nR:keys.go\na:0:0:444\nZ:Q1+K+2nX6IaZ1TlbTqqFwE69pkkOc=\nR:keys_test.go\na:0:0:444\nZ:Q12v5/FNDCgkC9yEIoiQlznPxzPlw=\nR:sort_ref.go\na:0:0:444\nZ:Q1BiIBNnPOemzhViaFNJtoVk5YcbQ=\nR:sort_ref_test.go\na:0:0:444\nZ:Q1Bxa0k5W4/Tb7Sx5rQam6bzNB09Y=\nF:root/go/pkg/mod/github.com/go-openapi/errors@v0.20.3\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1vsc7kBbcq4+xAqBqYVXM0zJHhRM=\nR:.gitignore\na:0:0:444\nZ:Q1ISvBrRrm5uJZkTYyAhNZXta6qPg=\nR:.golangci.yml\na:0:0:444\nZ:Q17kou0XZuGuAWWr42vSJONXcI7vo=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q10GupF5hZkQqGd1Evbes7KTykZSg=\nR:api.go\na:0:0:444\nZ:Q1hYnM1Vh8UFJSddwRkyIUFy/368A=\nR:api_test.go\na:0:0:444\nZ:Q1J352oggBonmCxk2jDbBAqp3BWnw=\nR:auth.go\na:0:0:444\nZ:Q1Qj/74HHJ66VXkKzs6VKmT9bePvI=\nR:auth_test.go\na:0:0:444\nZ:Q1SGzcmQLjoBdTZI4KUDlfCpTYNnc=\nR:doc.go\na:0:0:444\nZ:Q1ie7Zby2z3ZFmwTqPJwzz+l1pfqA=\nR:go.mod\na:0:0:444\nZ:Q1DTCHJ/rnTlSUhuM7TiMar+Ik7V4=\nR:go.sum\na:0:0:444\nZ:Q1kvWMjJJ7TJiU+CVtkKp4dDEVwnI=\nR:headers.go\na:0:0:444\nZ:Q13bmxlR9FnzXsf9b4AoyKoPpOhQ8=\nR:middleware.go\na:0:0:444\nZ:Q1Kj1KoXUq9V85kHFBnUhaM/3WF5U=\nR:middleware_test.go\na:0:0:444\nZ:Q1xFQBf8tD/JYqPG+RGt4bn0QBiRQ=\nR:parsing.go\na:0:0:444\nZ:Q1PPrz0MKI3Xk2ZNmgD9J45U1kcFM=\nR:parsing_test.go\na:0:0:444\nZ:Q13r3ZAR4So3Q5QC7vM1mXJEiHvnQ=\nR:schema.go\na:0:0:444\nZ:Q11QRECMSpNH9osv1qvsisg+05DRU=\nR:schema_test.go\na:0:0:444\nZ:Q1fTo8M7++/4N/HWFu9TP2CSRjNMs=\nF:root/go/pkg/mod/github.com/go-openapi/errors@v0.20.3/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/errors@v0.20.3/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q10r/XcIcQo0WP2/peNZdYqFNcYP0=\nF:root/go/pkg/mod/github.com/go-openapi/jsonpointer@v0.19.5\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitignore\na:0:0:444\nZ:Q1M8ls0h8Tlit9nMnarFumLj2digM=\nR:.travis.yml\na:0:0:444\nZ:Q1zP6jOSJgFvyfI5LeTA12VYuSHic=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1/Bbez7Rq4g/FKpUNhIAaVNWPo1E=\nR:go.mod\na:0:0:444\nZ:Q1FCeUoQlbEe+tU/912jpqXNK/CBY=\nR:go.sum\na:0:0:444\nZ:Q1LsoKTEuB+lIAIbJoqQ/DogNA0YQ=\nR:pointer.go\na:0:0:444\nZ:Q1yRxoG4w9ZnE/pO2aRA8yVAjq14g=\nR:pointer_test.go\na:0:0:444\nZ:Q1cGzz/wO0EYXFSqca9KcVsoXI1tM=\nF:root/go/pkg/mod/github.com/go-openapi/jsonpointer@v0.19.5/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/jsonreference@v0.20.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1M8ls0h8Tlit9nMnarFumLj2digM=\nR:.golangci.yml\na:0:0:444\nZ:Q1x67Q9N54qly31h9z7Y+oVy6ZClo=\nR:.travis.yml\na:0:0:444\nZ:Q1SVu8yUcxgr0SY/RUJVDeU5z0oWI=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1uMfvj8gC2L6RZM6suDrQ0glsBOI=\nR:go.mod\na:0:0:444\nZ:Q1TLbFKrfPowrYmrsHJp1ahumLk3c=\nR:go.sum\na:0:0:444\nZ:Q19NGWuPSIiBotQL6IuFzobVmns8Y=\nR:reference.go\na:0:0:444\nZ:Q1A8S3wAP5YO1HFmLXNFaa3ucrwf4=\nR:reference_test.go\na:0:0:444\nZ:Q1mdY4jKbENfrfvL9hCChaUZZGYRE=\nF:root/go/pkg/mod/github.com/go-openapi/jsonreference@v0.20.0/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/jsonreference@v0.20.0/internal\nM:0:0:555\nR:normalize_url.go\na:0:0:444\nZ:Q133oM7fEc/A82o/Y9pnqEbGFQ/NE=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitignore\na:0:0:444\nZ:Q1rbsua2aHKS3bqFVTZsZsP3QYD40=\nR:.golangci.yml\na:0:0:444\nZ:Q1o6DAZfUqN1Cwujes/UuUpNbNVLQ=\nR:.travis.yml\na:0:0:444\nZ:Q1ZWC7VWJj8M6n1VD8b+j9Ln/kgGE=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1kvtP1atOtaEbknIO6lOqZLJ9l44=\nR:doc.go\na:0:0:444\nZ:Q1UiMsdm9ptkWw3c0S7a8/PGV9O84=\nR:doc_test.go\na:0:0:444\nZ:Q1T5SZVFe5ohBQFsm67BEXcaSgU3k=\nR:go.mod\na:0:0:444\nZ:Q1nXbhbi2+kC5kmbxQKXgLyM2v4hQ=\nR:go.sum\na:0:0:444\nZ:Q1aDSIKwXqeplGvBWJLGSOAuIERuI=\nR:json_test.go\na:0:0:444\nZ:Q1cX/i8qmcrgwsu//+3zRuPxK4u2I=\nR:loaders.go\na:0:0:444\nZ:Q1fK4LKwtsUKCfyJiNCkdXBT+qDLs=\nR:loaders_test.go\na:0:0:444\nZ:Q1gZ6tB79fhOz8Aovm3Q/oDsTKAq0=\nR:options.go\na:0:0:444\nZ:Q1rwNM2xTYIXaxEkwQNXEP6HbqcB8=\nR:options_test.go\na:0:0:444\nZ:Q1oLs7jAZd92F1IHTxbzR7WWXtJjs=\nR:spec.go\na:0:0:444\nZ:Q1ktxHm4Sohz0ath7aRQqun6goreE=\nR:spec_test.go\na:0:0:444\nZ:Q1XXYYMpe3fKEvDM6eWyfy8X4Rwss=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/.github/workflows\nM:0:0:555\nR:go-test.yml\na:0:0:444\nZ:Q1bS0fpwmY9CYeJsZZZbtHR+VyX2M=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/bugs\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/bugs/1816\nM:0:0:555\nR:fixture-1816.yaml\na:0:0:444\nZ:Q1j89tbHDUeXbL3r9DeXqRLa86cEI=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/models\nM:0:0:555\nR:modelWithArrayRef.json\na:0:0:444\nZ:Q1vW/22MRn1llPE+Eo0ZCqguT6e6w=\nR:modelWithComposition.json\na:0:0:444\nZ:Q1lYZnWr+d2l7NdidVs+MlZeDj5pc=\nR:modelWithDateTimeMap.json\na:0:0:444\nZ:Q1+g8N2mcPdJwCb0mEcTBsZFp/dlU=\nR:modelWithExamples.json\na:0:0:444\nZ:Q1WZyInjet9+kzeFrfnCi2DYFYKTg=\nR:modelWithInt32Map.json\na:0:0:444\nZ:Q1Mr7w6OT3uW/3p3E8czn1RWhaFeg=\nR:modelWithInt64Map.json\na:0:0:444\nZ:Q17dtIiGF8IwGRc56i8nfT0F0gS6A=\nR:modelWithMultipleProperties.json\na:0:0:444\nZ:Q1wPwlAxOEMIpAsCRlPjWNqhRh5eE=\nR:modelWithObjectMap.json\na:0:0:444\nZ:Q1wjAPKSo8GOkSnqjdo04JiJus3Hk=\nR:modelWithPrimitiveArray.json\na:0:0:444\nZ:Q1lYfVpfIgthazBae8x+G92gCbZ0Y=\nR:modelWithStringProperty.json\na:0:0:444\nZ:Q1rIN5f4wfd1pbWdfHn7Qe4WNJtrk=\nR:modelWithXmlAttributes.json\na:0:0:444\nZ:Q1MjmYpcWReJZWPW0r4OF6RrGEki4=\nR:models.json\na:0:0:444\nZ:Q134VkX8ahwQeckbJwXpiTCpAblp8=\nR:multipleModels.json\na:0:0:444\nZ:Q1WZyInjet9+kzeFrfnCi2DYFYKTg=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/models/properties\nM:0:0:555\nR:propertyWithBooleanArray.json\na:0:0:444\nZ:Q1Ezp98vw5NyNIOYeSU3/76q8BsDI=\nR:propertyWithByteArray.json\na:0:0:444\nZ:Q1mZwWg6ANaJs+rLQRE/L4ODEdUfs=\nR:propertyWithComplexArray.json\na:0:0:444\nZ:Q1b3bJ8vK1fIkgMtKtami4KXjcmYg=\nR:propertyWithDateTimeArray.json\na:0:0:444\nZ:Q1UuTd7rMcYTl/4frxaVRZVqWn9+E=\nR:propertyWithInt32Array.json\na:0:0:444\nZ:Q12eLE++23m2u9YvOEjJOw475t01g=\nR:propertyWithInt64Array.json\na:0:0:444\nZ:Q10len+lBOHa9pJulCZGsokVrKvBA=\nR:propertyWithRef.json\na:0:0:444\nZ:Q1iHmmcExN9sx+yQVqBAceAKIHiyg=\nR:propertyWithStringArray.json\na:0:0:444\nZ:Q1iMdh4D/U0sMsyXBpS9Dvb84wa+o=\nR:simpleBooleanProperty.json\na:0:0:444\nZ:Q10a0/HpzeTgWaqEgHQAg+4KZjlZ8=\nR:simpleByteProperty.json\na:0:0:444\nZ:Q1Q6ZuB7BAYScKNsMMT/FaDIvwV+A=\nR:simpleDateTimeProperty.json\na:0:0:444\nZ:Q1PM85IFWlWrOFnSb8zBl1KOALLaA=\nR:simpleInt32Property.json\na:0:0:444\nZ:Q1mbs8R2QxojPgCfX7Ut77OTinrp8=\nR:simpleInt64Property.json\na:0:0:444\nZ:Q1cjVyENotjIJoY5ekuKW5fIQgmO4=\nR:simpleStringProperty.json\na:0:0:444\nZ:Q1UDVIRP2hfyFzlos2oYmqyzTwHjI=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/resources\nM:0:0:555\nR:cascadingSchemes.json\na:0:0:444\nZ:Q1lYCDqhNT8LRTzYTbDOkskMfXlTU=\nR:commonParameters.json\na:0:0:444\nZ:Q1BjH7atRf2tuJQPKSHdEWeuHqL28=\nR:multipleMimeTypes.json\na:0:0:444\nZ:Q1+HnhvcsVzzYpBdlLu4bs0n91upI=\nR:pathLoaderIssue.json\na:0:0:444\nZ:Q1+RXtQbkeYv01hcuMfkEigHHdyK0=\nR:resourceWithExamplePayload.json\na:0:0:444\nZ:Q1eoMalI3qTMNb7jEg7PFX4tTPfEg=\nR:resourceWithLinkedDefinitions.json\na:0:0:444\nZ:Q1UqNWqW60WtxGMjuvEuPyBQmIs/E=\nR:resourceWithLinkedDefinitions_part1.json\na:0:0:444\nZ:Q1CvRtfwPUkFtt4IAH4+0qaMbY/qA=\nR:resourceWithRelativeHost.json\na:0:0:444\nZ:Q15q53NAIyDRSnNHF6Xfeapwqt5lM=\nR:reusableParameters.json\na:0:0:444\nZ:Q1B2D/f+Q84wKf7rE6bpLRy+2m0P0=\nR:securityExample.json\na:0:0:444\nZ:Q1Yt9ubveeZoAOMOUqRoiny+tTLmc=\nR:stringPathParamResource.json\na:0:0:444\nZ:Q1dw4ThAqWrN9hLssYuRCjXQFNYRg=\nR:taggedResource.json\na:0:0:444\nZ:Q1YXxtMYaRpVAOJtwON++eFw4nG7w=\nR:vendorExtensionExamples.json\na:0:0:444\nZ:Q12JddKgp+ssxlmg6buVmVw9I8S5c=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/resources/operations\nM:0:0:555\nR:operationWithTags.json\na:0:0:444\nZ:Q1N11+k/OaiabtWlr/tawcANa7zUU=\nR:stringPathAndBoolQueryParamResource.json\na:0:0:444\nZ:Q152wlsR4mc+Q16v+jZkLWqFVdLj8=\nR:stringPathParamResource.json\na:0:0:444\nZ:Q1sEvKZ3ppgHH8hqss/tl08AFcNIg=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/resources/parameters\nM:0:0:555\nR:bodyComplexArrayParameter.json\na:0:0:444\nZ:Q1Lkl61YhD8K8ATm/NeA1VKOiULJ0=\nR:bodyComplexParameter.json\na:0:0:444\nZ:Q1DsadqeiKYEDgmUlBqU81s2h8gCE=\nR:bodyInt64Parameter.json\na:0:0:444\nZ:Q1QD+EaR5hYxJ+8iGXyuh8T8zSKJA=\nR:bodyStringArrayParameter.json\na:0:0:444\nZ:Q1cKJ1HFGhmG9GW6ySt+vDWMWEOS0=\nR:bodyStringParameter.json\na:0:0:444\nZ:Q1iTDQc3C4gBx3pdzb6cx8cSv1JXg=\nR:formDataComplexParameter.json\na:0:0:444\nZ:Q1SMfnykIJIM9qu0HeORozBkcFcTY=\nR:formDataInt64Parameter.json\na:0:0:444\nZ:Q1sSM6/32wuMmdW0nt+20yu7L+CT0=\nR:formDataStringArrayParameter.json\na:0:0:444\nZ:Q1xkcb1ia32laydvFQmThhYWXoEPw=\nR:formDataStringParameter.json\na:0:0:444\nZ:Q1ei0HTfAq3e0zvXZzbSKF7l5Vg4c=\nR:headerInt64ArrayParameter.json\na:0:0:444\nZ:Q10VtLOWRVuwzYl3+DmNhNePSF2Ug=\nR:headerStringArrayParameter.json\na:0:0:444\nZ:Q11uc/vQaDsDmFu93A4DlGxzZRS7g=\nR:headerStringParameter.json\na:0:0:444\nZ:Q1DEt0gWCUB+3rqFoMUnets6FoqsE=\nR:pathInt64Parameter.json\na:0:0:444\nZ:Q1yQ2lSkrCY6C+OpZRY1A/UihjA0o=\nR:pathStringArrayParameter.json\na:0:0:444\nZ:Q1VfH3UOXdT+WbU7K2juFfrCbrghY=\nR:pathStringParameter.json\na:0:0:444\nZ:Q1BywDPIMxzk2qk5Q8uZHQHmDKhNQ=\nR:queryInt64ArrayParameter.json\na:0:0:444\nZ:Q1cMNP6jlT2Ju2y8/4LvwZ6uNQZKQ=\nR:queryStringParameter.json\na:0:0:444\nZ:Q1pb5Q12R/gV852dxEX7Oq07NxfFY=\nR:queryWithComplexParameter.json\na:0:0:444\nZ:Q1AZEniepdhlcRqu2DKeMPv6pkfec=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/json/responses\nM:0:0:555\nR:complexArrayResponse.json\na:0:0:444\nZ:Q1mS+zGM47/kWNoIMu7wEmfkG6QPY=\nR:dateTimeResponse.json\na:0:0:444\nZ:Q1nfjqFq96pt0GPrJTps4FokW819M=\nR:int32Response.json\na:0:0:444\nZ:Q1oy1ATrDcxLBrfRAjT5ycthZtYMs=\nR:int64Response.json\na:0:0:444\nZ:Q1l1PVATDoYs780sIiC4Qt9sLsCT0=\nR:multipleResponses.json\na:0:0:444\nZ:Q1An50bMGU9PxJFwRxUgYLTp90d0g=\nR:stringArrayResponse.json\na:0:0:444\nZ:Q1H3Yi0hZ0taXKUPHiFhv/VBPMpGU=\nR:stringResponse.json\na:0:0:444\nZ:Q1UWS0fEKqwlypjEoiU8w28rtpDbA=\nR:stringResponseWithHeader.json\na:0:0:444\nZ:Q1cRuQrFunI0o6QNplqv/jGikZ1bA=\nR:voidResponse.json\na:0:0:444\nZ:Q1J8BZaamvSc7Uuu2/GTDEXKUD5rM=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml\nM:0:0:555\nR:.gitkeep\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/models\nM:0:0:555\nR:modelWithArrayRef.yaml\na:0:0:444\nZ:Q1UNPiqoTbahOYXZSqqiaBV+LA4oY=\nR:modelWithComposition.yaml\na:0:0:444\nZ:Q1qw5YQ0kUVRW5U0LJlhxSUUSBQFE=\nR:modelWithDateTimeMap.yaml\na:0:0:444\nZ:Q1ej/aUtWRUIotadOOOoS4u1QkWiY=\nR:modelWithExamples.yaml\na:0:0:444\nZ:Q1yfhyRNJUR7oq6nUQTDpvM5oKBIc=\nR:modelWithInt32Map.yaml\na:0:0:444\nZ:Q1rCBxozHbAYXPWabJf67toNSl3a0=\nR:modelWithInt64Map.yaml\na:0:0:444\nZ:Q13tB8wNDYubUScauGaxE9e6mz6dE=\nR:modelWithMultipleProperties.yaml\na:0:0:444\nZ:Q14X7Fv46mQLf2e65KFw5ASP1mze8=\nR:modelWithObjectMap.yaml\na:0:0:444\nZ:Q1fmx2sCZ13LLefQWXKaAQg/P/U4A=\nR:modelWithPrimitiveArray.yaml\na:0:0:444\nZ:Q1+eIuAWwCezgvuawK8CYHo3GL7Sc=\nR:modelWithStringProperty.yaml\na:0:0:444\nZ:Q1YzFeHl6IUIzpUt3YmuTXuJZ6eew=\nR:modelWithXmlAttributes.yaml\na:0:0:444\nZ:Q1RepK5G2EyXm9YCzI6EzYX/6bGhY=\nR:models.yaml\na:0:0:444\nZ:Q1b1/PT0GbNi+yqHQE2C5XMBa1wVs=\nR:multipleModels.yaml\na:0:0:444\nZ:Q1yfhyRNJUR7oq6nUQTDpvM5oKBIc=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/models/properties\nM:0:0:555\nR:propertyWithBooleanArray.yaml\na:0:0:444\nZ:Q1h/E9AyDPPiVHavKogaJCkUjxHs8=\nR:propertyWithByteArray.yaml\na:0:0:444\nZ:Q1ucDyUMerACR2MPWEu3zBp2wXqLA=\nR:propertyWithComplexArray.yaml\na:0:0:444\nZ:Q1mi3/8bwkWj4JCGbMK+4oB4r7rvI=\nR:propertyWithDateTimeArray.yaml\na:0:0:444\nZ:Q1feRl9ii01vJ+CfvjeYooPySZ1D4=\nR:propertyWithInt32Array.yaml\na:0:0:444\nZ:Q1wmGOKMyrBKMO0iHe8Lf1IXwGsf8=\nR:propertyWithInt64Array.yaml\na:0:0:444\nZ:Q1yL1/6QuKgFdzhENlpMWKQ3ui4pI=\nR:propertyWithRef.yaml\na:0:0:444\nZ:Q1WmcLGNjo3ALJb+44GY0Ob0kXcZ4=\nR:propertyWithStringArray.yaml\na:0:0:444\nZ:Q1pfJjh1OE1EhLyXxhYx+yRvkn8Ic=\nR:simpleBooleanProperty.yaml\na:0:0:444\nZ:Q12+x9625xkfKbxuwPp8y5q6jPdVE=\nR:simpleByteProperty.yaml\na:0:0:444\nZ:Q1O2jHZyp2OCw/oy5irKVQv+GSm8M=\nR:simpleDateTimeProperty.yaml\na:0:0:444\nZ:Q1K1oqXkglsT27ZUzIFdRwpIY6RP4=\nR:simpleInt32Property.yaml\na:0:0:444\nZ:Q1S6nMHa7ev6Z4UPOTXRgSUT4H40w=\nR:simpleInt64Property.yaml\na:0:0:444\nZ:Q1qTag08q6uz+YEhZbyJnv+aI4i54=\nR:simpleStringProperty.yaml\na:0:0:444\nZ:Q14p9lah+iD4CBRGG1hwpsizzhBUY=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/resources\nM:0:0:555\nR:cascadingSchemes.yaml\na:0:0:444\nZ:Q1D0y4i6SB4DcUBfSkl2Map78TUPw=\nR:commonParameters.yaml\na:0:0:444\nZ:Q1NehaY5iZVI7OQuqBDqdsG628ODc=\nR:multipleMimeTypes.yaml\na:0:0:444\nZ:Q1ouQxwjlsoVjP1C5G8ycetbwCCCo=\nR:resourceWithExamplePayload.yaml\na:0:0:444\nZ:Q1zNwKc/w0r9DMD5AhO7KYiN3fzf4=\nR:resourceWithLinkedDefinitions.yaml\na:0:0:444\nZ:Q1FdqlPE8DQfxTTwS9dfOpM7F0ERA=\nR:resourceWithLinkedDefinitions_part1.yaml\na:0:0:444\nZ:Q1IwvB7p7PEy+FdF7uLnvMJS4erPY=\nR:resourceWithRelativeHost.yaml\na:0:0:444\nZ:Q1ZUKpEPyr0N22oOp1pO+C9vkaz/4=\nR:reusableParameters.yaml\na:0:0:444\nZ:Q1Eimn0o1I1z0uNGX8o/+w/0trZMk=\nR:securityExample.yaml\na:0:0:444\nZ:Q1m1yP2wupqG25qhJVnlKsYeevR1Y=\nR:stringPathParamResource.yaml\na:0:0:444\nZ:Q19ztEkacxQGa6xx9P32+D9SLyGVA=\nR:taggedResource.yaml\na:0:0:444\nZ:Q1EIBWi52qgJC+tk+1E7N9+9RNaH0=\nR:vendorExtensionExamples.yaml\na:0:0:444\nZ:Q1ZVmezKqo2zUBWH1iEojCYI2WLpI=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/resources/operations\nM:0:0:555\nR:operationWithTags.yaml\na:0:0:444\nZ:Q1rGCr1eaHk9o/bBg2WEdQwGJjM78=\nR:stringPathAndBoolQueryParamResource.yaml\na:0:0:444\nZ:Q1DNq9YN/ODtWcVSyv6qQzXzD6SIE=\nR:stringPathParamResource.yaml\na:0:0:444\nZ:Q1jopexji2AcYwXDufONsJyzxkQSg=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/resources/parameters\nM:0:0:555\nR:bodyComplexArrayParameter.yaml\na:0:0:444\nZ:Q1xDIeULzZtl+4Qu0reN4l+UhPkek=\nR:bodyComplexParameter.yaml\na:0:0:444\nZ:Q152a85Ea+CtghTXcf0ul8bUlQahs=\nR:bodyInt64Parameter.yaml\na:0:0:444\nZ:Q14fxceQcq3CXKLEqh7mlnjGShTkQ=\nR:bodyStringArrayParameter.yaml\na:0:0:444\nZ:Q17EYm6AwTGl9glY7gUBqBSb6Jk8s=\nR:bodyStringParameter.yaml\na:0:0:444\nZ:Q1X8q+U3qW1AIeWFDR9jTsc3Tr/uw=\nR:formDataComplexParameter.yaml\na:0:0:444\nZ:Q1BUp26w/yp5XgEwjGO6wcGBiIScs=\nR:formDataInt64Parameter.yaml\na:0:0:444\nZ:Q1huAKi5OARC0IzJpBElb0EWL9tdw=\nR:formDataStringArrayParameter.yaml\na:0:0:444\nZ:Q1zNO0BW7wbjdNZJA/OXNtkg+mQTQ=\nR:formDataStringParameter.yaml\na:0:0:444\nZ:Q1Pmyepw1mi/X7CbetSEUgC84Ff10=\nR:headerInt64ArrayParameter.yaml\na:0:0:444\nZ:Q1FVOvbt584HZQ8yNzMPfpT8kwSIw=\nR:headerStringArrayParameter.yaml\na:0:0:444\nZ:Q1372Hl6dBAxEE3FK/rg6yac39GQE=\nR:headerStringParameter.yaml\na:0:0:444\nZ:Q10gQnPEao4aoCvgf7KKUhMiql6D4=\nR:pathInt64Parameter.yaml\na:0:0:444\nZ:Q189b033Ll65oTASNzxE9VTYADYbQ=\nR:pathStringArrayParameter.yaml\na:0:0:444\nZ:Q1807e9F9Ee5Vyc0Vr4JELe3Efna0=\nR:pathStringParameter.yaml\na:0:0:444\nZ:Q1xCBxMiDYANzvZqgcKE1vIHAmxZs=\nR:queryInt64ArrayParameter.yaml\na:0:0:444\nZ:Q1Dh7laQfkmQycdvwO2TAadEKZ88s=\nR:queryStringParameter.yaml\na:0:0:444\nZ:Q11i83Ao7qcZH11P6nWT/WyvR9d24=\nR:queryWithComplexParameter.yaml\na:0:0:444\nZ:Q1V+LW40NfWk3QeQU2vTZWZzMbc9E=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/responses\nM:0:0:555\nR:complexArrayResponse.yaml\na:0:0:444\nZ:Q1DXpx8AyYXUqdo0RCsQ0h53HYRBw=\nR:dateTimeResponse.yaml\na:0:0:444\nZ:Q188Uaf0TPXWncdXeOk2k6dVzhgfo=\nR:int32Response.yaml\na:0:0:444\nZ:Q1Pqxi4MAt7Y0iRzTmUc/9lxXl2u8=\nR:int64Response.yaml\na:0:0:444\nZ:Q1pyX1R963yY0Z75EPmSnCn6SBBIA=\nR:multipleResponses.yaml\na:0:0:444\nZ:Q1uFpcBK2QWR9dHUhWMRqFuqFuMk8=\nR:stringArrayResponse.yaml\na:0:0:444\nZ:Q1bmDCM1UjpYxjbNF0y5sM+jrEcwY=\nR:stringResponse.yaml\na:0:0:444\nZ:Q17NpKL/jC71QbKglz6e/NZJfYIB8=\nR:stringResponseWithHeader.yaml\na:0:0:444\nZ:Q1auyaMhGl+241nNpSF+oLnj+VS/I=\nR:voidResponse.yaml\na:0:0:444\nZ:Q1xW+nNLCsLlpGjA+msWg0KDPCAA0=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger\nM:0:0:555\nR:spec.yml\na:0:0:444\nZ:Q1kOigLKLP+bAshLubEApOouDlx6k=\nR:test3-ter-model-schema.json\na:0:0:444\nZ:Q1CdAoKBh4Pik2YPrNaHHaFad0IG0=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/1/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/1/2/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/1/2/3/4\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1xoTUNmNujyAGc7TA1Q3ZDVDUp8E=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/shared\nM:0:0:555\nR:something.yaml\na:0:0:444\nZ:Q1/GRlo16VrmjeD06hB8sduXkvuzw=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/swagger/shared/definitions\nM:0:0:555\nR:page.yaml\na:0:0:444\nZ:Q1azmbLHf+q3K1T9n3AS63uX7Wx7Q=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml\nM:0:0:555\nR:.gitkeep\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/models\nM:0:0:555\nR:modelWithArrayRef.yaml\na:0:0:444\nZ:Q1UNPiqoTbahOYXZSqqiaBV+LA4oY=\nR:modelWithComposition.yaml\na:0:0:444\nZ:Q1qw5YQ0kUVRW5U0LJlhxSUUSBQFE=\nR:modelWithDateTimeMap.yaml\na:0:0:444\nZ:Q1ej/aUtWRUIotadOOOoS4u1QkWiY=\nR:modelWithExamples.yaml\na:0:0:444\nZ:Q1yfhyRNJUR7oq6nUQTDpvM5oKBIc=\nR:modelWithInt32Map.yaml\na:0:0:444\nZ:Q1rCBxozHbAYXPWabJf67toNSl3a0=\nR:modelWithInt64Map.yaml\na:0:0:444\nZ:Q13tB8wNDYubUScauGaxE9e6mz6dE=\nR:modelWithMultipleProperties.yaml\na:0:0:444\nZ:Q14X7Fv46mQLf2e65KFw5ASP1mze8=\nR:modelWithObjectMap.yaml\na:0:0:444\nZ:Q1fmx2sCZ13LLefQWXKaAQg/P/U4A=\nR:modelWithPrimitiveArray.yaml\na:0:0:444\nZ:Q1+eIuAWwCezgvuawK8CYHo3GL7Sc=\nR:modelWithStringProperty.yaml\na:0:0:444\nZ:Q1YzFeHl6IUIzpUt3YmuTXuJZ6eew=\nR:modelWithXmlAttributes.yaml\na:0:0:444\nZ:Q1RepK5G2EyXm9YCzI6EzYX/6bGhY=\nR:models.yaml\na:0:0:444\nZ:Q1b1/PT0GbNi+yqHQE2C5XMBa1wVs=\nR:multipleModels.yaml\na:0:0:444\nZ:Q1yfhyRNJUR7oq6nUQTDpvM5oKBIc=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/models/properties\nM:0:0:555\nR:propertyWithBooleanArray.yaml\na:0:0:444\nZ:Q1h/E9AyDPPiVHavKogaJCkUjxHs8=\nR:propertyWithByteArray.yaml\na:0:0:444\nZ:Q1ucDyUMerACR2MPWEu3zBp2wXqLA=\nR:propertyWithComplexArray.yaml\na:0:0:444\nZ:Q1mi3/8bwkWj4JCGbMK+4oB4r7rvI=\nR:propertyWithDateTimeArray.yaml\na:0:0:444\nZ:Q1feRl9ii01vJ+CfvjeYooPySZ1D4=\nR:propertyWithInt32Array.yaml\na:0:0:444\nZ:Q1wmGOKMyrBKMO0iHe8Lf1IXwGsf8=\nR:propertyWithInt64Array.yaml\na:0:0:444\nZ:Q1yL1/6QuKgFdzhENlpMWKQ3ui4pI=\nR:propertyWithRef.yaml\na:0:0:444\nZ:Q1WmcLGNjo3ALJb+44GY0Ob0kXcZ4=\nR:propertyWithStringArray.yaml\na:0:0:444\nZ:Q1pfJjh1OE1EhLyXxhYx+yRvkn8Ic=\nR:simpleBooleanProperty.yaml\na:0:0:444\nZ:Q12+x9625xkfKbxuwPp8y5q6jPdVE=\nR:simpleByteProperty.yaml\na:0:0:444\nZ:Q1O2jHZyp2OCw/oy5irKVQv+GSm8M=\nR:simpleDateTimeProperty.yaml\na:0:0:444\nZ:Q1K1oqXkglsT27ZUzIFdRwpIY6RP4=\nR:simpleInt32Property.yaml\na:0:0:444\nZ:Q1S6nMHa7ev6Z4UPOTXRgSUT4H40w=\nR:simpleInt64Property.yaml\na:0:0:444\nZ:Q1qTag08q6uz+YEhZbyJnv+aI4i54=\nR:simpleStringProperty.yaml\na:0:0:444\nZ:Q14p9lah+iD4CBRGG1hwpsizzhBUY=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/resources\nM:0:0:555\nR:cascadingSchemes.yaml\na:0:0:444\nZ:Q1D0y4i6SB4DcUBfSkl2Map78TUPw=\nR:commonParameters.yaml\na:0:0:444\nZ:Q1NehaY5iZVI7OQuqBDqdsG628ODc=\nR:multipleMimeTypes.yaml\na:0:0:444\nZ:Q1ouQxwjlsoVjP1C5G8ycetbwCCCo=\nR:resourceWithExamplePayload.yaml\na:0:0:444\nZ:Q1zNwKc/w0r9DMD5AhO7KYiN3fzf4=\nR:resourceWithLinkedDefinitions.yaml\na:0:0:444\nZ:Q1FdqlPE8DQfxTTwS9dfOpM7F0ERA=\nR:resourceWithLinkedDefinitions_part1.yaml\na:0:0:444\nZ:Q1IwvB7p7PEy+FdF7uLnvMJS4erPY=\nR:resourceWithRelativeHost.yaml\na:0:0:444\nZ:Q1ZUKpEPyr0N22oOp1pO+C9vkaz/4=\nR:reusableParameters.yaml\na:0:0:444\nZ:Q1Eimn0o1I1z0uNGX8o/+w/0trZMk=\nR:securityExample.yaml\na:0:0:444\nZ:Q1m1yP2wupqG25qhJVnlKsYeevR1Y=\nR:stringPathParamResource.yaml\na:0:0:444\nZ:Q19ztEkacxQGa6xx9P32+D9SLyGVA=\nR:taggedResource.yaml\na:0:0:444\nZ:Q1EIBWi52qgJC+tk+1E7N9+9RNaH0=\nR:vendorExtensionExamples.yaml\na:0:0:444\nZ:Q1ZVmezKqo2zUBWH1iEojCYI2WLpI=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/resources/operations\nM:0:0:555\nR:operationWithTags.yaml\na:0:0:444\nZ:Q1rGCr1eaHk9o/bBg2WEdQwGJjM78=\nR:stringPathAndBoolQueryParamResource.yaml\na:0:0:444\nZ:Q1DNq9YN/ODtWcVSyv6qQzXzD6SIE=\nR:stringPathParamResource.yaml\na:0:0:444\nZ:Q1jopexji2AcYwXDufONsJyzxkQSg=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/resources/parameters\nM:0:0:555\nR:bodyComplexArrayParameter.yaml\na:0:0:444\nZ:Q1xDIeULzZtl+4Qu0reN4l+UhPkek=\nR:bodyComplexParameter.yaml\na:0:0:444\nZ:Q152a85Ea+CtghTXcf0ul8bUlQahs=\nR:bodyInt64Parameter.yaml\na:0:0:444\nZ:Q14fxceQcq3CXKLEqh7mlnjGShTkQ=\nR:bodyStringArrayParameter.yaml\na:0:0:444\nZ:Q17EYm6AwTGl9glY7gUBqBSb6Jk8s=\nR:bodyStringParameter.yaml\na:0:0:444\nZ:Q1X8q+U3qW1AIeWFDR9jTsc3Tr/uw=\nR:formDataComplexParameter.yaml\na:0:0:444\nZ:Q1BUp26w/yp5XgEwjGO6wcGBiIScs=\nR:formDataInt64Parameter.yaml\na:0:0:444\nZ:Q1huAKi5OARC0IzJpBElb0EWL9tdw=\nR:formDataStringArrayParameter.yaml\na:0:0:444\nZ:Q1zNO0BW7wbjdNZJA/OXNtkg+mQTQ=\nR:formDataStringParameter.yaml\na:0:0:444\nZ:Q1Pmyepw1mi/X7CbetSEUgC84Ff10=\nR:headerInt64ArrayParameter.yaml\na:0:0:444\nZ:Q1FVOvbt584HZQ8yNzMPfpT8kwSIw=\nR:headerStringArrayParameter.yaml\na:0:0:444\nZ:Q1372Hl6dBAxEE3FK/rg6yac39GQE=\nR:headerStringParameter.yaml\na:0:0:444\nZ:Q10gQnPEao4aoCvgf7KKUhMiql6D4=\nR:pathInt64Parameter.yaml\na:0:0:444\nZ:Q189b033Ll65oTASNzxE9VTYADYbQ=\nR:pathStringArrayParameter.yaml\na:0:0:444\nZ:Q1807e9F9Ee5Vyc0Vr4JELe3Efna0=\nR:pathStringParameter.yaml\na:0:0:444\nZ:Q1xCBxMiDYANzvZqgcKE1vIHAmxZs=\nR:queryInt64ArrayParameter.yaml\na:0:0:444\nZ:Q1Dh7laQfkmQycdvwO2TAadEKZ88s=\nR:queryStringParameter.yaml\na:0:0:444\nZ:Q11i83Ao7qcZH11P6nWT/WyvR9d24=\nR:queryWithComplexParameter.yaml\na:0:0:444\nZ:Q1V+LW40NfWk3QeQU2vTZWZzMbc9E=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fixtures/yaml/yaml/responses\nM:0:0:555\nR:complexArrayResponse.yaml\na:0:0:444\nZ:Q1DXpx8AyYXUqdo0RCsQ0h53HYRBw=\nR:dateTimeResponse.yaml\na:0:0:444\nZ:Q188Uaf0TPXWncdXeOk2k6dVzhgfo=\nR:int32Response.yaml\na:0:0:444\nZ:Q1Pqxi4MAt7Y0iRzTmUc/9lxXl2u8=\nR:int64Response.yaml\na:0:0:444\nZ:Q1pyX1R963yY0Z75EPmSnCn6SBBIA=\nR:multipleResponses.yaml\na:0:0:444\nZ:Q1uFpcBK2QWR9dHUhWMRqFuqFuMk8=\nR:stringArrayResponse.yaml\na:0:0:444\nZ:Q1bmDCM1UjpYxjbNF0y5sM+jrEcwY=\nR:stringResponse.yaml\na:0:0:444\nZ:Q17NpKL/jC71QbKglz6e/NZJfYIB8=\nR:stringResponseWithHeader.yaml\na:0:0:444\nZ:Q1auyaMhGl+241nNpSF+oLnj+VS/I=\nR:voidResponse.yaml\na:0:0:444\nZ:Q1xW+nNLCsLlpGjA+msWg0KDPCAA0=\nF:root/go/pkg/mod/github.com/go-openapi/loads@v0.21.2/fmts\nM:0:0:555\nR:fixture_test.go\na:0:0:444\nZ:Q1QavwcA1235ggVpwxFviQ0VwKjEg=\nR:yaml.go\na:0:0:444\nZ:Q1wtcpsOzV47qCxQc04vTm3PKgRf4=\nR:yaml_test.go\na:0:0:444\nZ:Q1bqtPxk+nUVuaW7kJR6Ss3qJP3i0=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitattributes\na:0:0:444\nZ:Q15cpLjJZxkOxX2So/b0dWlcfoYso=\nR:.gitignore\na:0:0:444\nZ:Q1SwSroPGtyPu8MVraTi0mkRhQeBw=\nR:.golangci.yml\na:0:0:444\nZ:Q1MB7P1D5vCAeTHsTF4zeZ697XFu8=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1AjM+NGAD2knJNAZrBSW08Ei7O2w=\nR:authinfo_test.go\na:0:0:444\nZ:Q1xxLJG+MIpZJOZFuvh+y3nGep1sE=\nR:bytestream.go\na:0:0:444\nZ:Q1LKgEmrzA5Xr2VGszIApr0ikfs5Y=\nR:bytestream_test.go\na:0:0:444\nZ:Q1n8xpFkNaZtOGgPqmXzkedzwya7c=\nR:client_auth_info.go\na:0:0:444\nZ:Q15QZ5wwJbmkJR1N5gH6ysGdUVQMA=\nR:client_operation.go\na:0:0:444\nZ:Q1ZtjAzXKMptMwfNwuTwtJ+r/5Lug=\nR:client_request.go\na:0:0:444\nZ:Q1zjvnk4dAftHPJuOY7BKVaH+R6a4=\nR:client_request_test.go\na:0:0:444\nZ:Q1xwBKTbEXIlcjxTxW4J8IxamtIk8=\nR:client_response.go\na:0:0:444\nZ:Q1rXXhsqpF+L4wsF4h4u7PUMJkGUg=\nR:client_response_test.go\na:0:0:444\nZ:Q1RaHEC4hhpp335DFxAuuBLFE32IA=\nR:constants.go\na:0:0:444\nZ:Q1AhOzpNm22oZsp7opYBVrVwpHCqg=\nR:csv.go\na:0:0:444\nZ:Q1otXFz8TcO7C3HRZMIyfPElYTK2M=\nR:csv_test.go\na:0:0:444\nZ:Q152onx993Wlvlf9spPx1fuOaFbs0=\nR:discard.go\na:0:0:444\nZ:Q1RA1BB9KXcE3mUCPZTiBnzvnKQeU=\nR:file.go\na:0:0:444\nZ:Q1lDR4qSOiBqDhzketmuNAORjLRHQ=\nR:file_test.go\na:0:0:444\nZ:Q1wGLvvQ3aJ6v0RGy4gA6ClDWZdBk=\nR:go.mod\na:0:0:444\nZ:Q1D7eOZclAgFbavZ3g3ga2tMk6uSc=\nR:go.sum\na:0:0:444\nZ:Q1hcsYUqpkNRQNYnImgAPIadYWuWM=\nR:headers.go\na:0:0:444\nZ:Q1qTTLYlCvF+R68arUWhKM9QaLOsU=\nR:headers_test.go\na:0:0:444\nZ:Q17RmRz+n18rM0YcbOqtS6Cux74Jc=\nR:interfaces.go\na:0:0:444\nZ:Q1W7emwd/0RS+OcA/dSfYNGCRbouA=\nR:json.go\na:0:0:444\nZ:Q1xeL8ol9O3o/L2Sls161kkZMLyCY=\nR:json_test.go\na:0:0:444\nZ:Q144+KzDYo0XZpADrB4gR07DosTR8=\nR:request.go\na:0:0:444\nZ:Q1uZsyjDDy9jy9qDQmPKe6vst3Di8=\nR:request_test.go\na:0:0:444\nZ:Q1X+9XNkKUh3Xqs2sKlLusMl5sHxE=\nR:statuses.go\na:0:0:444\nZ:Q1uJBkLq45az6IYphYYdO1Gi7wq4U=\nR:text.go\na:0:0:444\nZ:Q1pXbCHDD+3aSIZMsMg3gA+MhzWf0=\nR:text_test.go\na:0:0:444\nZ:Q1z0ahhIq3+RqtAq26NkD3SnhmS/g=\nR:values.go\na:0:0:444\nZ:Q1wa1ojeiqHe9zG5OAVJR9JJsz9mI=\nR:values_test.go\na:0:0:444\nZ:Q15mwhIjk+ChbQ93Z6lT2j4b9Aia8=\nR:xml.go\na:0:0:444\nZ:Q1oruLbu6JU7zg3Bcl9XVf7m2wQQI=\nR:xml_test.go\na:0:0:444\nZ:Q16oJJXhmBNxcIPyzQUa0IfTNSrJ8=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q1n12T8whDVvdbk/QuISi41gSiOyc=\nR:lint.yaml\na:0:0:444\nZ:Q1SEnIjKA1m8sX6qHzHGUzYlGC+tI=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/client\nM:0:0:555\nR:auth_info.go\na:0:0:444\nZ:Q1sSM70d555qSKa0oVE60eRsfA8tY=\nR:auth_info_test.go\na:0:0:444\nZ:Q1An8S6dXOmL5AK4xf1hvjyxPbMM8=\nR:keepalive.go\na:0:0:444\nZ:Q19GFJJl6vWKSRVKUe/Bt61gRCmlU=\nR:keepalive_test.go\na:0:0:444\nZ:Q1ot9+gPhdlSfymevDpp30xDPFxvA=\nR:opentracing.go\na:0:0:444\nZ:Q1/9JyYAhcQ+qaJE3R864iFaA5GOU=\nR:opentracing_test.go\na:0:0:444\nZ:Q1Qa3641+Ses5MXe35XAg3pQG4Wnc=\nR:request.go\na:0:0:444\nZ:Q1ewJPLnw0j2AzOFaT6a6LNLE4OdI=\nR:request_test.go\na:0:0:444\nZ:Q1dAvzVSn1OsEkHn1FmaDxHgYUFOc=\nR:response.go\na:0:0:444\nZ:Q1wLH0UswAWRcjYPkJoZaQH3zLhhk=\nR:response_test.go\na:0:0:444\nZ:Q1edXqXCjAMehXfi147gsSpLafolg=\nR:runtime.go\na:0:0:444\nZ:Q1wS5hwr460nZnKnYnD6tSeSBKbCM=\nR:runtime_test.go\na:0:0:444\nZ:Q1Z5AvnJOXh2k5fmwvsd4JPlcZym8=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures/bugs\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures/bugs/172\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1LBb9A8u3f+9nkqcPKO6Yg+OzzSI=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures/bugs/174\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q15fxZzwZUVlXlu8aF5qECgOl6jz4=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures/bugs/264\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1H0Vjt+W73GEvi5YVLJACNY4JQrM=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/fixtures/certs\nM:0:0:555\nR:myCA.crt\na:0:0:444\nZ:Q1xhHUbAyeI+HeGVaJr1f3Dn5qhHw=\nR:myCA.key\na:0:0:444\nZ:Q1jFUia1qZCOSNczgipleeqHg4XeE=\nR:mycert1.crt\na:0:0:444\nZ:Q1Cgm0e32WOf5fRhwOaAJJGnNdjqk=\nR:mycert1.key\na:0:0:444\nZ:Q1CbOMXir7fXG4c+gpIWQnW+RtKA4=\nR:mycert1.req\na:0:0:444\nZ:Q1uNwEVCmx6EYUPEoMyCin9rt+H/Y=\nR:myclient-ecc.crt\na:0:0:444\nZ:Q1gZPLdO7EYBkTFPcDlhn56iyXtUs=\nR:myclient-ecc.csr\na:0:0:444\nZ:Q1foo9NAWVq+AVE5CCZERNH1cONO0=\nR:myclient-ecc.key\na:0:0:444\nZ:Q1v9CKeXOET699yIbd1egH56YZe60=\nR:myclient.crt\na:0:0:444\nZ:Q1AVjov5DnNf5SpqHp99QHqBup1lc=\nR:myclient.csr\na:0:0:444\nZ:Q1LNiWH03d4Ov6yMJ03CxrPE6Kp84=\nR:myclient.key\na:0:0:444\nZ:Q1VM+NTU6RIqcMMD3O3R6vRPm8Stw=\nR:myclient.p12\na:0:0:444\nZ:Q1mBnoTMsL5tY0+0ZUrxwNAnpyZtw=\nR:serial\na:0:0:444\nZ:Q1sHsgV5ic2S+AWe0+9YIc4NpnSjY=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/flagext\nM:0:0:555\nR:byte_size.go\na:0:0:444\nZ:Q1K4L/3kwORjbHQ0UONkRMpCh7Jao=\nR:byte_size_test.go\na:0:0:444\nZ:Q1f25KN7a6rrjsHFQewr0LavIxgpg=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/hack\nM:0:0:555\nR:gen-self-signed-certs.sh\na:0:0:444\nZ:Q1RN4l21c3WQLSDwaNn8OiEWFFCEs=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/internal/testing\nM:0:0:555\nR:data.go\na:0:0:444\nZ:Q1KojQ8euDUajKK6exNXfhMs0yuHs=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/internal/testing/petstore\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1aa0uETtFlA7gM2B4fLzr7ogdh7E=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/internal/testing/simplepetstore\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1xUy7oZy6dMLpjU1d5SoxulLQbWU=\nR:api_test.go\na:0:0:444\nZ:Q1V/iwYJnuOi+mqJZDOddNICnhP9o=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/logger\nM:0:0:555\nR:logger.go\na:0:0:444\nZ:Q1d4+NFZbJ1fNbFbQnBoH75OZStlg=\nR:standard.go\na:0:0:444\nZ:Q11Tv9D1AVH/SSoaBNgiWAbgXQOMo=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/middleware\nM:0:0:555\nR:body_test.go\na:0:0:444\nZ:Q1pV1zt4NCLv4bZbDOivaqc2XWElg=\nR:context.go\na:0:0:444\nZ:Q1LOkT+8xIN+A14EzcxXroUIFnqVw=\nR:context_test.go\na:0:0:444\nZ:Q1tirmolSnZFRUeVabTXbXBZuVg3I=\nR:doc.go\na:0:0:444\nZ:Q1S4cqx2XbWPUsbh7zdbwgX/IsxcY=\nR:go18.go\na:0:0:444\nZ:Q1CiL4HGYiWCrCKNHU6tk+X8BgDQU=\nR:negotiate.go\na:0:0:444\nZ:Q1LMgnUzj/QMWU8YMetjw0uxrkT1c=\nR:negotiate_test.go\na:0:0:444\nZ:Q19D7DU0rPfyHpNCPvGMrgve/4ZwE=\nR:not_implemented.go\na:0:0:444\nZ:Q1ma19ic/ZMEXET3+Xt/Xl1k0j23c=\nR:not_implemented_test.go\na:0:0:444\nZ:Q1XXF9QyJP8XufVU52csYu+mNNE1M=\nR:operation.go\na:0:0:444\nZ:Q1/jSbCqvhl+haoM6ItS59SUAyYdM=\nR:operation_test.go\na:0:0:444\nZ:Q1K3l44wZKcYZvvVII4xfD/SRWA9E=\nR:parameter.go\na:0:0:444\nZ:Q1X4wTLq7QgRX59E+HkerH9/Kx59A=\nR:parameter_test.go\na:0:0:444\nZ:Q1ZLytAluRFU3mKPCOfyf2S8ClH18=\nR:pre_go18.go\na:0:0:444\nZ:Q1ri3FzeuNDWGs/42uC4EM5WDPBAI=\nR:rapidoc.go\na:0:0:444\nZ:Q1qmQCwzBhONPR55grvi6+nzuJ3Ak=\nR:rapidoc_test.go\na:0:0:444\nZ:Q1aWI1jR3LFZt+mG3kmFWM/lBgFRU=\nR:redoc.go\na:0:0:444\nZ:Q1L+iGL1KMfsMYHS/k+No1OjjutTw=\nR:redoc_test.go\na:0:0:444\nZ:Q1FIYchBttan+F2dElFaNsbfjOHnI=\nR:request.go\na:0:0:444\nZ:Q1f8Fd8YbZfPzIkBWY0jBtXxtCMwU=\nR:request_test.go\na:0:0:444\nZ:Q1r5G4KyUTb4/od1/ayFv51PovjNY=\nR:route_authenticator_test.go\na:0:0:444\nZ:Q1RBpTljvmNgyQtVeqAJgH/ha4Zao=\nR:route_param_test.go\na:0:0:444\nZ:Q1EkU1N1dWXRPBNuw6Ws/y4sm3u1M=\nR:router.go\na:0:0:444\nZ:Q161QmsMHgOGDjKK2kKRFqz1hahPI=\nR:router_test.go\na:0:0:444\nZ:Q1WaqNB/jF+LRfi3/FpjsFO9FbSKk=\nR:security.go\na:0:0:444\nZ:Q1+/r13SjxkMN/xSQR8A8rXB5t0Rw=\nR:security_test.go\na:0:0:444\nZ:Q182AnpA5Pj51jb/H2pfDFx0B4sdY=\nR:spec.go\na:0:0:444\nZ:Q1PD6Q0vaJmknQ/iFbFvrGX4VX2bY=\nR:spec_test.go\na:0:0:444\nZ:Q1raSd8deAQznSljk3VhESmwqPsfw=\nR:string_conversion_test.go\na:0:0:444\nZ:Q11MaQkb4GxgkSmK0G6oaW1CikXyE=\nR:swaggerui.go\na:0:0:444\nZ:Q1xRpG9p8sDvHvPAwOlJTcXQ9K0ZE=\nR:swaggerui_test.go\na:0:0:444\nZ:Q1pmjSKTUyz7WoNYhlSfcj0yG2gFw=\nR:untyped_request_test.go\na:0:0:444\nZ:Q1RdbGvaaqGJboqAQ/1OIJx9rQeIU=\nR:validation.go\na:0:0:444\nZ:Q1czaqqiaPaXNl5K8zhjAZyJj3rOw=\nR:validation_test.go\na:0:0:444\nZ:Q1xNBraNn2sPJM/3gSBltq+CnkqbA=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/middleware/denco\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1SMN4x2AIShDs/auGyIq/FwewZ0E=\nR:README.md\na:0:0:444\nZ:Q1GH30P0rH0Z87qWhf5xGyECjEK00=\nR:router.go\na:0:0:444\nZ:Q1LDRu8TE67XEuI9b0XmLqC1xtIfY=\nR:router_bench_test.go\na:0:0:444\nZ:Q1dmSQTSZWZHGjz5eryCDNe+U7ups=\nR:router_test.go\na:0:0:444\nZ:Q1KvoeSfp9HxEEPMAiysi2U5r2XJ4=\nR:server.go\na:0:0:444\nZ:Q1NpqxEufvsCv6hkdDadGUR8gq/0o=\nR:server_test.go\na:0:0:444\nZ:Q1Ibn67ar1XSKRZ3Om/O7OkBQfm0s=\nR:util.go\na:0:0:444\nZ:Q1mSvQuhbCLP5uLxNGjPMsBKtnUEQ=\nR:util_test.go\na:0:0:444\nZ:Q1wEMTWU1SHcfsg6S5u2COnsIaR40=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/middleware/header\nM:0:0:555\nR:header.go\na:0:0:444\nZ:Q1s4bTCCUX9AASwKwXSRRbDwhVp2E=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/middleware/untyped\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1benEWeXsXPUb/6onfXBXxKDH+ew=\nR:api_test.go\na:0:0:444\nZ:Q1B3BKdyFUWGErr0Zrr+VKyTtjVd8=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/security\nM:0:0:555\nR:apikey_auth_test.go\na:0:0:444\nZ:Q1IO/GDt89t3Ymi9RI4IDTDyRB/EQ=\nR:authenticator.go\na:0:0:444\nZ:Q1MIS3bwBjTNb00XSdLcYEhDFsp+E=\nR:authorizer.go\na:0:0:444\nZ:Q14PfV4SFVayQ4EBvj3oqdRWfK154=\nR:authorizer_test.go\na:0:0:444\nZ:Q1dSFx7bmbbjJuMAXX1V9sxfFvJ+g=\nR:basic_auth_test.go\na:0:0:444\nZ:Q1SZPkm3ppXcxEK7uBrptuF6ABfOU=\nR:bearer_auth_test.go\na:0:0:444\nZ:Q1SnwvCDciYPX8ZdaqNxoIlLyirRM=\nF:root/go/pkg/mod/github.com/go-openapi/runtime@v0.24.2/yamlpc\nM:0:0:555\nR:yaml.go\na:0:0:444\nZ:Q1gVHjx9mFFDCTABHa+2BVmwKRDf4=\nR:yaml_test.go\na:0:0:444\nZ:Q1dH1IdLUOGin2QzljPaNs87aizOo=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitignore\na:0:0:444\nZ:Q1ISvBrRrm5uJZkTYyAhNZXta6qPg=\nR:.golangci.yml\na:0:0:444\nZ:Q13oMVptM0mhndA1oIQL59p/qVjcU=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1vfUk5k558s5buY4utWVsVc66L9U=\nR:appveyor.yml\na:0:0:444\nZ:Q128up4poRro0GucTWM/qWepoZgw0=\nR:auth_test.go\na:0:0:444\nZ:Q1HiD8SI9klYZZYTE6Tf53E5g1lw0=\nR:bindata.go\na:0:0:444\nZ:Q1AZ4VpL4GAEbFAmdQwN3JIBN8TZ0=\nR:cache.go\na:0:0:444\nZ:Q1tQ9a+9bN6WF81jTp14yArYzMOOQ=\nR:cache_test.go\na:0:0:444\nZ:Q1gmQwVwU8b1liYYhKNgNXNBQxVkM=\nR:circular_test.go\na:0:0:444\nZ:Q19MpwIH6VoaVmhH6vChTCs+9dTLo=\nR:contact_info.go\na:0:0:444\nZ:Q1kDnat2QWbPstjpUe71NGBtLI9Lo=\nR:contact_info_test.go\na:0:0:444\nZ:Q1b2OTt+ebnBUeWFhsa5mfRrDJNME=\nR:debug.go\na:0:0:444\nZ:Q1RNTMuINzz98MikytsfzXr/nH5+o=\nR:debug_test.go\na:0:0:444\nZ:Q13PcP5xHFDKdxkhH7m+pI+WH8rpQ=\nR:errors.go\na:0:0:444\nZ:Q1g3Py6turoWURDipOTMCuJJ1v0XI=\nR:expander.go\na:0:0:444\nZ:Q1lWC54wYMH58ETUyG3JzkUOf8ZPQ=\nR:expander_test.go\na:0:0:444\nZ:Q1xnKPwhPkrqbfGNd6vCScurM9ut8=\nR:external_docs.go\na:0:0:444\nZ:Q1L6v3tGfJfa7RQROv4lI2uZE7tZA=\nR:external_docs_test.go\na:0:0:444\nZ:Q1ztBMn4kL1npG7SBovV+hc7J1ztE=\nR:go.mod\na:0:0:444\nZ:Q1jhHw5dIdsDhNzxsoZj+nJS+PQDs=\nR:go.sum\na:0:0:444\nZ:Q1kEWiv4eZqECi6OkqV0tqfHFdPbI=\nR:header.go\na:0:0:444\nZ:Q14Xpn2tpoWHuGN2aak/2OQmeO2a8=\nR:header_test.go\na:0:0:444\nZ:Q10FidlORMwn7YmNMu4cOzQqqzs08=\nR:helpers_spec_test.go\na:0:0:444\nZ:Q1xtgCm73wmXxsiehYDlaqkAud+EM=\nR:helpers_test.go\na:0:0:444\nZ:Q1s9Po2i020P0I01jf1+gigC7jY2g=\nR:info.go\na:0:0:444\nZ:Q17Mk02KKVQqJ5cZ6l82Yx2MdD9GM=\nR:info_test.go\na:0:0:444\nZ:Q1Kx9HvwjveZoi9sKB+XzgkIg9+6Y=\nR:items.go\na:0:0:444\nZ:Q1ZIH+wsAeuxHC7FGA/BJZisTI01M=\nR:items_test.go\na:0:0:444\nZ:Q1gfMv05LZfa8SHckstCgjg6sH9YY=\nR:license.go\na:0:0:444\nZ:Q1BQb7l1PX17ji597EOpPCLgUvMrU=\nR:license_test.go\na:0:0:444\nZ:Q1afS533CVhu3CVh37zlENUOff2qQ=\nR:normalizer.go\na:0:0:444\nZ:Q1F/hETiGmpP/gV+HYjRnszhGw2eE=\nR:normalizer_nonwindows.go\na:0:0:444\nZ:Q1Vyfi29mcmLbTfGQDn1nSFpFspcM=\nR:normalizer_test.go\na:0:0:444\nZ:Q1wJ+a6/gXQNuA6onxVQNrrIms4Fo=\nR:normalizer_windows.go\na:0:0:444\nZ:Q1QfAaGQpvtwYeaDrP/LPAbhF4znU=\nR:operation.go\na:0:0:444\nZ:Q1lenJgeAA/h26M5wGzdo8aizCahU=\nR:operation_test.go\na:0:0:444\nZ:Q1f+/0yPwQV0yS0XzpxMChutq7vwk=\nR:parameter.go\na:0:0:444\nZ:Q1HmxabgQoTozskBnDjo+P6IUf2Go=\nR:parameters_test.go\na:0:0:444\nZ:Q1ErJg4fpzWD0SnU8368jibsWuHCE=\nR:path_item.go\na:0:0:444\nZ:Q1FY5yrOVsO1PbA8Vqf/MiJ5Bre6A=\nR:path_item_test.go\na:0:0:444\nZ:Q1moM8msC8N5FGY9+7LFOU7kN4vfQ=\nR:paths.go\na:0:0:444\nZ:Q1tQivs18N0Hw9v9i7nw5nv+o7Tu8=\nR:paths_test.go\na:0:0:444\nZ:Q1VBi1FsCSTQBE3KL2p1Qwx4QtIyU=\nR:properties.go\na:0:0:444\nZ:Q1fK8+wfHjAoidnO0UfYSs8JBG00w=\nR:properties_test.go\na:0:0:444\nZ:Q10wyE5bm0phJ7AlZ7Xdqt8dQlt28=\nR:ref.go\na:0:0:444\nZ:Q1qzLb2flXbCJ8gYWRIsgYuJbOw8g=\nR:ref_test.go\na:0:0:444\nZ:Q1Jf/mTL/iQdKbAofuiHM4qW9TSK8=\nR:resolver.go\na:0:0:444\nZ:Q1TXpirx6P0NI4SNkNzZZJyzospUg=\nR:resolver_test.go\na:0:0:444\nZ:Q18ZXfcIsVYO6XU4eaYjwcB+6oveU=\nR:response.go\na:0:0:444\nZ:Q1o+Fzx0h5/fras6fh3PKjPa4z1hg=\nR:response_test.go\na:0:0:444\nZ:Q1zpREEMdyZr0gIRC1Pz9tHZYHp2s=\nR:responses.go\na:0:0:444\nZ:Q1pcaEA2dpisJ1Ca4pV/wgw3q3pgg=\nR:schema.go\na:0:0:444\nZ:Q1qyfWa3BU+j/zgGpnpVYydQNb5/Y=\nR:schema_loader.go\na:0:0:444\nZ:Q1LfW8s4qeAzymny9rVWxafwHLYW4=\nR:schema_test.go\na:0:0:444\nZ:Q1FUnoT3LMlMYSLcgUOZHTvkJ4Dz0=\nR:security_scheme.go\na:0:0:444\nZ:Q1dFHe9wfnmCLTdPRASPbZnFvUXrM=\nR:spec.go\na:0:0:444\nZ:Q1ltq7qp2Uw19s9BleVzQ3RtBnCdw=\nR:spec_test.go\na:0:0:444\nZ:Q1RikOiXex9IgkdZmqfXi7AH9N2w4=\nR:structs_test.go\na:0:0:444\nZ:Q1kyDuqifxxrVhTEWtL4Zc6d4K5tM=\nR:swagger.go\na:0:0:444\nZ:Q1QRx3hykh+kI2eUZu10lh43ayox4=\nR:swagger_test.go\na:0:0:444\nZ:Q1oCBE7Q3HoWcxsVaj/wLEilO4SAE=\nR:tag.go\na:0:0:444\nZ:Q1lFxmeNBrZXBnUGjE4RB50hUSdB4=\nR:url_go18.go\na:0:0:444\nZ:Q1F/duvG7rUUhvGQkwcUpuHN/sIMo=\nR:url_go19.go\na:0:0:444\nZ:Q1+AyD8NDrATxHRWWam9F7B4Zu4Hc=\nR:validations.go\na:0:0:444\nZ:Q1kQ5ENcLNgK/SjmIT8tCHQ2am0aY=\nR:validations_test.go\na:0:0:444\nZ:Q10/gutrvC5w2NmIpD21EGDV9xyt4=\nR:xml_object.go\na:0:0:444\nZ:Q1uQBpw66MAh79mvlaCkDhBnpLd74=\nR:xml_object_test.go\na:0:0:444\nZ:Q1jROnd6aVPE7eh9SHTldXHW5BCUw=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/.github/workflows\nM:0:0:555\nR:go-test.yml\na:0:0:444\nZ:Q1bS0fpwmY9CYeJsZZZbtHR+VyX2M=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/azure\nM:0:0:555\nR:applicationGateway.json\na:0:0:444\nZ:Q17Dym+HwqMZ0gYp/urSbed0hWQ7Q=\nR:applicationSecurityGroup.json\na:0:0:444\nZ:Q13YZXt3rE6AlZFUB5bZRwSz7u1kE=\nR:loadBalancer.json\na:0:0:444\nZ:Q1GxTo2i8LX7g24InIKr3K6SG3Zo8=\nR:network.json\na:0:0:444\nZ:Q14s66a1pV1MolwjwNN9YcrH0JcHk=\nR:networkInterface.json\na:0:0:444\nZ:Q1yr8q6xopbeFBEURHp3Cq9x4BvYo=\nR:networkProfile.json\na:0:0:444\nZ:Q1CQqP1PaO2bLvWLbGAqSHhyPJ1vY=\nR:networkSecurityGroup.json\na:0:0:444\nZ:Q1GxmwgG9JpTmwrFWIRd40LfnK7yE=\nR:networkWatcher.json\na:0:0:444\nZ:Q1PD1rIra9iHt/O+mQUeIadjd5mKE=\nR:privateEndpoint.json\na:0:0:444\nZ:Q1NcCEDgFx10wS8Nz9azV2S9EWQDI=\nR:privateLinkService.json\na:0:0:444\nZ:Q1/osgCeImfN10u2QAOLeLjXycp58=\nR:publicIpAddress.json\na:0:0:444\nZ:Q1T6PfTE0XAtp/NgGrBm9Iq0GqBS8=\nR:routeTable.json\na:0:0:444\nZ:Q1rIGIBtTytnFpuj62ZO+7QWI7fBk=\nR:serviceEndpointPolicy.json\na:0:0:444\nZ:Q18Znatj8YEDkMJzUHeeBN+0GF/Rk=\nR:virtualNetwork.json\na:0:0:444\nZ:Q1+LF/3j7UFSPARHJXpQ4LXettF+o=\nR:virtualNetworkTap.json\na:0:0:444\nZ:Q1GJex9lQrpd1IDjzCw3N7JNdpWEU=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/azure/examples\nM:0:0:555\nR:NetworkInterfaceCreate.json\na:0:0:444\nZ:Q1nptfxSp+4O2gUKMYHy9VRfptSNg=\nR:NetworkInterfaceDelete.json\na:0:0:444\nZ:Q1HCuZv6r8+72yyMb08nT8UEQmYLA=\nR:NetworkInterfaceEffectiveNSGList.json\na:0:0:444\nZ:Q1Z60xZJjbCAtkLg73/ZLqo5GlAIE=\nR:NetworkInterfaceEffectiveRouteTableList.json\na:0:0:444\nZ:Q1Ny4FT6DHxULmrvLpsFYwo2qvcHA=\nR:NetworkInterfaceGet.json\na:0:0:444\nZ:Q1Zb1dKV8/PrbKHq17lSXnmgDokvA=\nR:NetworkInterfaceIPConfigurationGet.json\na:0:0:444\nZ:Q111GrUSrmMTsJlzLAQ7mhgUVZyHI=\nR:NetworkInterfaceIPConfigurationList.json\na:0:0:444\nZ:Q1akG27SVfxZLPp8B5Qi97SGjY5Wg=\nR:NetworkInterfaceList.json\na:0:0:444\nZ:Q1i7wrWyXm7R6qLOl6x+N+S8rrM+U=\nR:NetworkInterfaceListAll.json\na:0:0:444\nZ:Q1nJYWNb/178ePetlMwrVVgaEO+IU=\nR:NetworkInterfaceLoadBalancerList.json\na:0:0:444\nZ:Q1HQv/+6W0OEqBBgIUOclCl6WOg5M=\nR:NetworkInterfaceTapConfigurationCreate.json\na:0:0:444\nZ:Q1s1fV5m/vf08w2z9LCtwLPhbC+/M=\nR:NetworkInterfaceTapConfigurationDelete.json\na:0:0:444\nZ:Q1BFn26HZwF0Jb2q8HMNkoTV1SNHc=\nR:NetworkInterfaceTapConfigurationGet.json\na:0:0:444\nZ:Q1tpwYIDOO3YGqbXSAZeuVmrX/tlA=\nR:NetworkInterfaceTapConfigurationList.json\na:0:0:444\nZ:Q1OgOBB0Pz/2A5kQVZQaGDxAqgV1c=\nR:NetworkInterfaceUpdateTags.json\na:0:0:444\nZ:Q1i9dc3N9tDPqtSnUNar3MkMJvIMc=\nR:PublicIpAddressCreateCustomizedValues.json\na:0:0:444\nZ:Q19M3z0ztkIQOz7Hx3gxlj0Ypg0i4=\nR:PublicIpAddressCreateDefaults.json\na:0:0:444\nZ:Q1wKBsNBAp3Q0+4HueUF5svwM8nog=\nR:PublicIpAddressCreateDns.json\na:0:0:444\nZ:Q1kuCdCQYIrHpz7wUbbbgqjFVzDkU=\nR:PublicIpAddressDelete.json\na:0:0:444\nZ:Q1NKBQUD6YP3muwSBeePMcJ4LL++Y=\nR:PublicIpAddressGet.json\na:0:0:444\nZ:Q1mbN1dLdJDZshhxV2V03YRNFT8hM=\nR:PublicIpAddressList.json\na:0:0:444\nZ:Q1VzAr8tDMK7aLAD6iIen+hvDb8OA=\nR:PublicIpAddressListAll.json\na:0:0:444\nZ:Q1aD3WqQjyXXZwtYCaxraHUVZGTqc=\nR:PublicIpAddressUpdateTags.json\na:0:0:444\nZ:Q15KxRX0ydWSaB9wOdi18gYLJXDdE=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/102\nM:0:0:555\nR:fixture-102.json\na:0:0:444\nZ:Q1PMQRto21wfUgmEsdqBF5rQjg6ck=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1429\nM:0:0:555\nR:responses.yaml\na:0:0:444\nZ:Q1QwXFm9E89L04JpDJUM6t6CX2BvA=\nR:swagger.yaml\na:0:0:444\nZ:Q1m2CxAxa5x/nKImmhsbQD7uLghIs=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1429/remote\nM:0:0:555\nR:remote.yaml\na:0:0:444\nZ:Q1b0trQjjvkb/qJsNm8IVeFgo+xY8=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1429/remote/farther\nM:0:0:555\nR:farther.yaml\na:0:0:444\nZ:Q1QmcqTJK4NktvKRzrP1y3yZD5MKg=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1429/remote/remote\nM:0:0:555\nR:remote.yaml\na:0:0:444\nZ:Q1QmcqTJK4NktvKRzrP1y3yZD5MKg=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1614\nM:0:0:555\nR:gitea.json\na:0:0:444\nZ:Q1IkyOh1ZVhVx0dNBZmmH6jk4g5p0=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/1621\nM:0:0:555\nR:definitions.yaml\na:0:0:444\nZ:Q1UV6IpAJtttuNt7LvKmgGU0NorQI=\nR:fixture-1621.yaml\na:0:0:444\nZ:Q1Qd4N0wWbI8YeCgPZ7JvaGYnHhgE=\nR:parameters.yaml\na:0:0:444\nZ:Q1p4bNkvY1uMUJGboXqj854t7lUfg=\nR:responses.yaml\na:0:0:444\nZ:Q1DvCL74Vs2Tgv0pFXlpBT1atKgm8=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/2113\nM:0:0:555\nR:base.yaml\na:0:0:444\nZ:Q1AuPUI/x7+vXoEDLxaMyqceYwSyw=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/2113/schemas\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/2113/schemas/api\nM:0:0:555\nR:api.yaml\na:0:0:444\nZ:Q1FOEz2xfTpdIC8OgvtglBHuoqd5o=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/2113/schemas/dummy\nM:0:0:555\nR:dummy.yaml\na:0:0:444\nZ:Q1xE9VOrDCA7Cirl3HCeuqOOTmiSE=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/2113/schemas/example\nM:0:0:555\nR:example.yaml\na:0:0:444\nZ:Q1PTqbvl/j1zm7KL4+RGc959fwsZ0=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/69\nM:0:0:555\nR:dapperbox.json\na:0:0:444\nZ:Q1HuC5bSadd93jQL00GIwfSXR8Tq0=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/bugs/957\nM:0:0:555\nR:fixture-957.json\na:0:0:444\nZ:Q1+2LArha7/lUofj8Wyhv+E6Gexdc=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/expansion\nM:0:0:555\nR:all-the-things.json\na:0:0:444\nZ:Q1jlpxpTHZNXchd+Rt0mg02Viv/38=\nR:circular-minimal.json\na:0:0:444\nZ:Q1eLpZS2FBH2pFt6WEt56G9l69x5g=\nR:circularRefs.json\na:0:0:444\nZ:Q1pwSoQQWwk45DobDTbgi+sfNYkSI=\nR:circularSpec.json\na:0:0:444\nZ:Q1BO/b+2x3WH00eShI7QAcEix22Nc=\nR:circularSpec.yaml\na:0:0:444\nZ:Q1iGkxFlOzOHgKl1Pyh9sdK28NK8U=\nR:circularSpec2.json\na:0:0:444\nZ:Q1Z1jxsPNwvHX2x4l8Z3loN+rWkvo=\nR:clickmeter.json\na:0:0:444\nZ:Q1xV7TV0bSMqwFo0mTdGMYZsZKSWc=\nR:clickmeter.yaml\na:0:0:444\nZ:Q1Yij292Fda1U4aAEXOHUty4U3o7g=\nR:crossFileRef.json\na:0:0:444\nZ:Q1a/Aslp0R5QLVxOO/8+ig3tmuMeY=\nR:extraRef.json\na:0:0:444\nZ:Q1wjowtmENksI6QJu6ogDlHURSF0Q=\nR:invalid-refs.json\na:0:0:444\nZ:Q1IHgJuYfnE+eMOmNRZ0cJb3GNjxY=\nR:missingItemRef.json\na:0:0:444\nZ:Q1zKELSiYIR+Yn1VtdrQkHN2c3p20=\nR:missingRef.json\na:0:0:444\nZ:Q1ghe1OOFmdFX1add8PvLm+XFd/Lo=\nR:overflow.json\na:0:0:444\nZ:Q1RnufMPL1eOubXG6FM39nVEUhsJM=\nR:params.json\na:0:0:444\nZ:Q1FXpc/uJuwdZ9X38fBICk51wRzn8=\nR:pathItem1.json\na:0:0:444\nZ:Q1chuaXJIOh2gYu9bCmY1EidHPnLY=\nR:pathItems.json\na:0:0:444\nZ:Q1tzXs/SxSgmW7DC3Qbsyk0hwrIO8=\nR:schemas1.json\na:0:0:444\nZ:Q12U17+mrq7EeemqG4Xj/d48zi4H8=\nR:schemas2.json\na:0:0:444\nZ:Q1MtOX3vIz09xUxxJRzAsTYJklp2Y=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/flatten\nM:0:0:555\nR:flatten.yml\na:0:0:444\nZ:Q1Pz/+2NJr8fUfQhRvnSP3LFJTzwo=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/flatten/external\nM:0:0:555\nR:definitions.yml\na:0:0:444\nZ:Q1zqOZJrFlKz32vjYVXTkRwQqm8Is=\nR:definitions2.yml\na:0:0:444\nZ:Q17VXFwolAzcUJN75eXcZUgRE77G4=\nR:errors.yml\na:0:0:444\nZ:Q1N3L+/gtSBva8ihWUOfK2anNZzkY=\nR:nestedParams.yml\na:0:0:444\nZ:Q1R1Sz0+xvIBkq0VwT+nND+nX1Tls=\nR:nestedResponses.yml\na:0:0:444\nZ:Q1KhBYps54gEXKEEiKIbsFNuYb4ks=\nR:parameters.yml\na:0:0:444\nZ:Q1PwsFSnK3P+45mYszRu6TlvqNv5k=\nR:pathItem.yml\na:0:0:444\nZ:Q1o07ET8vjiN4rPwWDGmS8DVyKvHM=\nR:responses.yml\na:0:0:444\nZ:Q1394i5fyL2rabamemYSu1Ph8K8js=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/local_expansion\nM:0:0:555\nR:item.json\na:0:0:444\nZ:Q15Lgkayk1dXfrTl1dTq2WWYZCv08=\nR:item2.yaml\na:0:0:444\nZ:Q1Ipqflh75TO2VlO4u3ZUzscEMbYk=\nR:spec.json\na:0:0:444\nZ:Q1kGDWqHoJiqUCpLBXpfvS82GQjyY=\nR:spec2.yaml\na:0:0:444\nZ:Q15Khpw2XKyUsjiOL5Bn77pfrpJjY=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/more_circulars\nM:0:0:555\nR:bitbucket.json\na:0:0:444\nZ:Q12N8gLH3r+wb/ELyyLBVWm863pFA=\nR:item.json\na:0:0:444\nZ:Q12jVzTwbrceh9wUYT9L0cs//CeqU=\nR:item2.json\na:0:0:444\nZ:Q1KrKywlARhhjDkh2wA3d/eHNbHcQ=\nR:item4.json\na:0:0:444\nZ:Q1Dj7Ubvdcx57hfhGdsi3VlAAcYGc=\nR:resp.json\na:0:0:444\nZ:Q1kSfxXIGV2b48MTIxrP00fMxDSuQ=\nR:spec.json\na:0:0:444\nZ:Q1qK8Wevzf1vHKbmrKnoRqzBu2njA=\nR:spec2.json\na:0:0:444\nZ:Q1mAaaIfK0AL26nv+KzjcUId4KSNE=\nR:spec3.json\na:0:0:444\nZ:Q1U0yWb+ZOC9ZcnQd6K1R84AIWb2M=\nR:spec4.json\na:0:0:444\nZ:Q1zsC4g35UkMbOuIeKeDE/TwVNZag=\nR:with-id.json\na:0:0:444\nZ:Q11wA2vzWwzx3fTW/jZwC6JxvX9kI=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/more_circulars/pointers\nM:0:0:555\nR:fixture-pointers-loop.yaml\na:0:0:444\nZ:Q1WobWvQYjQiaqf/gRzl6fYGHLYHc=\nR:fixture-pointers.yaml\na:0:0:444\nZ:Q1llWXIAsHez6YusyhOn8J/GLrFts=\nR:remote.yaml\na:0:0:444\nZ:Q1XrJtjTYya6kMbos8k5c5DX7OhN8=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/more_circulars/remote\nM:0:0:555\nR:tree\na:0:0:444\nZ:Q13D9yEMlr8EzbvOJm6zzIjXSO61Q=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/remote\nM:0:0:555\nR:all-the-things.json\na:0:0:444\nZ:Q1aBH+6aMDYC9xWFqWiTwNxZxnoJI=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/remote/pet\nM:0:0:555\nR:pet.json\na:0:0:444\nZ:Q13i13rKDRBmdLDlG4OdzNv005rbg=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/skipschema\nM:0:0:555\nR:external_definitions_valid.yml\na:0:0:444\nZ:Q1aTR+x3M9hDOfTibCUFeUhR5W8nU=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/skipschema/external\nM:0:0:555\nR:definitions.yml\na:0:0:444\nZ:Q1zqOZJrFlKz32vjYVXTkRwQqm8Is=\nR:definitions2.yml\na:0:0:444\nZ:Q17VXFwolAzcUJN75eXcZUgRE77G4=\nR:errors.yml\na:0:0:444\nZ:Q1N3L+/gtSBva8ihWUOfK2anNZzkY=\nR:nestedParams.yml\na:0:0:444\nZ:Q1R1Sz0+xvIBkq0VwT+nND+nX1Tls=\nR:nestedResponses.yml\na:0:0:444\nZ:Q1KhBYps54gEXKEEiKIbsFNuYb4ks=\nR:parameters.yml\na:0:0:444\nZ:Q1vlj1arHUY539pvZ/HTddh5G+bYw=\nR:pathItem.yml\na:0:0:444\nZ:Q1lHw+F5B37Zs2/n8wtZ8Sd9PCFk0=\nR:responses.yml\na:0:0:444\nZ:Q1394i5fyL2rabamemYSu1Ph8K8js=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/specs\nM:0:0:555\nR:refed.json\na:0:0:444\nZ:Q1zr62t4zEjupNzS+oLfTy/ZcERAs=\nR:resolution.json\na:0:0:444\nZ:Q1l0V67V5vuOSiv2ctPgEt1/6GN6Y=\nR:resolution2.json\na:0:0:444\nZ:Q1po6c+Et8MHAZXJ/MTZ+EbAd3VpQ=\nR:todos.common.json\na:0:0:444\nZ:Q1W1lloMCs0TX1IdvWwHBjiZScCc8=\nR:todos.json\na:0:0:444\nZ:Q1azuuDk9W6x2ZT5er5GPo8jBk1mo=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/fixtures/specs/deeper\nM:0:0:555\nR:arrayProp.json\na:0:0:444\nZ:Q1zzXjqy7j91mt4K3mBkkBe6bha54=\nR:stringProp.json\na:0:0:444\nZ:Q1d0FjbjR1LIrVIix8o9BycH2uNsQ=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/schemas\nM:0:0:555\nR:jsonschema-draft-04.json\na:0:0:444\nZ:Q1SVqctdATzP1wdT3OXEr/mKlrjCw=\nF:root/go/pkg/mod/github.com/go-openapi/spec@v0.20.7/schemas/v2\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Esj5/ty5ID0nvcyLKK2K7oOuXvc=\nR:schema.json\na:0:0:444\nZ:Q1FnhlpvR4DJVu0VwG2h7J7lYCaRA=\nF:root/go/pkg/mod/github.com/go-openapi/strfmt@v0.21.3\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitattributes\na:0:0:444\nZ:Q1l9GGVO2rXK5+qAnnWw9BlNIShdk=\nR:.gitignore\na:0:0:444\nZ:Q1ISvBrRrm5uJZkTYyAhNZXta6qPg=\nR:.golangci.yml\na:0:0:444\nZ:Q1t65cyKE83r+Ceth2G9kLuxehRDs=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1Mng3hQTx6q7wq8Yza+DeCF29ARo=\nR:bson.go\na:0:0:444\nZ:Q1iUdG1qjWBtjrKnUEQcWMqJeaagA=\nR:bson_test.go\na:0:0:444\nZ:Q1jIAeZgJwmi0ILAdg6iTwKBNDD2c=\nR:date.go\na:0:0:444\nZ:Q1ROQ7P0sljpcTjsSXDaB1A+td93o=\nR:date_test.go\na:0:0:444\nZ:Q1qbS2oOZj4kP9D+GWQ2ttwf4upHk=\nR:default.go\na:0:0:444\nZ:Q1n3enFQt71g8BXfEd1KFQQpkJbWw=\nR:default_test.go\na:0:0:444\nZ:Q1TNkbMHEj/h3/jCcGe9u7kUj29MM=\nR:doc.go\na:0:0:444\nZ:Q1yFtCxIIMbzurMZEdCCN07xGYKQY=\nR:duration.go\na:0:0:444\nZ:Q1kF1mWyf+mcTaVUGK42+dPhNRPek=\nR:duration_test.go\na:0:0:444\nZ:Q1Xt1YGKvRDIdFvHa+utY+6ineeA0=\nR:format.go\na:0:0:444\nZ:Q1T9bpBWSv6/1lzGNUv7n/6N0lREs=\nR:format_test.go\na:0:0:444\nZ:Q1aue4HyJ1ihmjkIb73SS7UASskkg=\nR:go.mod\na:0:0:444\nZ:Q1E32atQ6IQDni7Lj3UL9P2BCsFZE=\nR:go.sum\na:0:0:444\nZ:Q1zh8Cfh1J+SHvh5sgohBIHg64x+g=\nR:time.go\na:0:0:444\nZ:Q1FwRdErwc2b3ajITxWo2da4VSy5g=\nR:time_test.go\na:0:0:444\nZ:Q1w/aHR6+wgAutLhWUVa9Lxsg0TQE=\nR:ulid.go\na:0:0:444\nZ:Q1nZAZlTouuOCU9s7+h0Qjd3ZhB64=\nR:ulid_test.go\na:0:0:444\nZ:Q10tLuGMarrTMS+ElC/cKTXXf5Hm8=\nF:root/go/pkg/mod/github.com/go-openapi/strfmt@v0.21.3/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/strfmt@v0.21.3/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q1gZuIAG68Py/89u+ynzqhsagC6t0=\nF:root/go/pkg/mod/github.com/go-openapi/strfmt@v0.21.3/conv\nM:0:0:555\nR:date.go\na:0:0:444\nZ:Q1H+bAmhkKVroYhO9pAfV794MQohM=\nR:date_test.go\na:0:0:444\nZ:Q1RGKnCinj2ATTYqJUmbZ1vK0wr58=\nR:default.go\na:0:0:444\nZ:Q1qvbXABdwvH1QddI9JnuzMWr4Eok=\nR:default_test.go\na:0:0:444\nZ:Q1AwU1ya5ifLHP5yPw3+tcvDRD9Ys=\nR:duration.go\na:0:0:444\nZ:Q13Q3gkbSdv3IPJ/IPjgPpPqxBGoA=\nR:duration_test.go\na:0:0:444\nZ:Q1hLMC1Br2/RQEFbp/xuTd8/QUiCI=\nR:time.go\na:0:0:444\nZ:Q1ugt8kNbJYFxKZaLHYe2vrbRrMmw=\nR:time_test.go\na:0:0:444\nZ:Q1i40dobHEy544kPcCHocVNvmDPxk=\nR:ulid.go\na:0:0:444\nZ:Q1/Oww7GjNX+rbWS19jeErtqqk70I=\nR:ulid_test.go\na:0:0:444\nZ:Q1lMGo36RlZv1LqE3NBf46kVlpFYw=\nF:root/go/pkg/mod/github.com/go-openapi/strfmt@v0.21.3/hack\nM:0:0:555\nR:coverage\na:0:0:444\nZ:Q1EBXhYKCFWpNUOcf3+hel4PdZM9s=\nF:root/go/pkg/mod/github.com/go-openapi/swag@v0.22.3\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitattributes\na:0:0:444\nZ:Q1Emnnk7Gc6qf42gs24l7TKfBT9I4=\nR:.gitignore\na:0:0:444\nZ:Q1+Am1h7o18vJa7HIvXyAiiq/qk3U=\nR:.golangci.yml\na:0:0:444\nZ:Q1z9Rx44IxwhER025VDGs8/Be6g0o=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1du2vKoesopL1UKKQv0jc2Xd8+vw=\nR:convert.go\na:0:0:444\nZ:Q1kjeB0EV5Hnuhp9qsXaXJFRqpZag=\nR:convert_test.go\na:0:0:444\nZ:Q1jlyuyd75nZj4c9QRXI+xVr+Wczk=\nR:convert_types.go\na:0:0:444\nZ:Q1xW4YxXi8r5USU7i/7H8SmRB2zqQ=\nR:convert_types_test.go\na:0:0:444\nZ:Q1FX/TZ1EegIklrNrX2K8qpW9doPo=\nR:doc.go\na:0:0:444\nZ:Q1au4AhPEsaV7tS7sTAJNZ69Qh6d8=\nR:file.go\na:0:0:444\nZ:Q15q+L5ufpKqIVfJZ5oFlIjSH0n/I=\nR:file_test.go\na:0:0:444\nZ:Q1wpkthckdOmY6AsKjDc+RpTKRINM=\nR:go.mod\na:0:0:444\nZ:Q1qsDPun1RhWYqikzYjAYJ6VANXd0=\nR:go.sum\na:0:0:444\nZ:Q1CW5P3j69fxBqyk/J1qowh7RyMb8=\nR:json.go\na:0:0:444\nZ:Q16cwbLHIM8npUHOTwJRQD8MIe7vE=\nR:json_test.go\na:0:0:444\nZ:Q1n65lsWKYd/Bv9e4oiWjnL2ChhAo=\nR:loading.go\na:0:0:444\nZ:Q1r2nEniADequOsiFvz/vhaPrO0Bk=\nR:loading_test.go\na:0:0:444\nZ:Q1vNfpWW1fAXKro1KOVn4Hjalu2bg=\nR:name_lexem.go\na:0:0:444\nZ:Q1AyOucDiTPSD73kUzhMMT9xFjeQQ=\nR:net.go\na:0:0:444\nZ:Q1KVNVYcNXDhzaVTDnfja58bUqOro=\nR:net_test.go\na:0:0:444\nZ:Q1ayTUVQfpum7BLBbpOhnqmiPodVw=\nR:path.go\na:0:0:444\nZ:Q1/Cduuhuv0KOkHsTYSB49mH7iYmw=\nR:path_test.go\na:0:0:444\nZ:Q1RDdWgd26Rccmzg5gce1W3hOg9PI=\nR:post_go18.go\na:0:0:444\nZ:Q1/qNySrQWel9bmU95xefWBKNCWQI=\nR:post_go19.go\na:0:0:444\nZ:Q1z42XxTk7chxRBtv8U7kHwsy83oI=\nR:pre_go18.go\na:0:0:444\nZ:Q1POAt4GbB/M5klI3uxl+zg+T5XRY=\nR:pre_go19.go\na:0:0:444\nZ:Q1YTaq0zpTyg3b96OED4wyN8W0WUg=\nR:split.go\na:0:0:444\nZ:Q1TmvgHe/jFA/L0Z3dOGvMecPrGhU=\nR:util.go\na:0:0:444\nZ:Q19kT/znMGFKFxR94TET54xU0U3Rk=\nR:util_test.go\na:0:0:444\nZ:Q1HOx+OcRif5DT3fr/9d+QOUfgRx0=\nR:yaml.go\na:0:0:444\nZ:Q1S5kbzgVTQpguX0wg+kfGpGbK7Pg=\nR:yaml_test.go\na:0:0:444\nZ:Q1UOJJrGAstghmkvV6hrvbpWPS/OM=\nF:root/go/pkg/mod/github.com/go-openapi/swag@v0.22.3/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/swag@v0.22.3/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q1W3B3nnv9ukYFmfsO7mhWckGtU/8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1+6/XqrHd7ADO0k0bmnUpY+YvxrI=\nR:.gitattributes\na:0:0:444\nZ:Q1Emnnk7Gc6qf42gs24l7TKfBT9I4=\nR:.gitignore\na:0:0:444\nZ:Q1SwSroPGtyPu8MVraTi0mkRhQeBw=\nR:.golangci.yml\na:0:0:444\nZ:Q1LbbSH48pqkFHyegRzyj7/qOYtBE=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1k7THHo2sZnBiQPq76P375u0fb04=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1WtmFUuJngdijmg79pN7Lu/R2t4M=\nR:appveyor.yml\na:0:0:444\nZ:Q1WDMGhqTPSzZGt9VyztTAHltJ+0g=\nR:context.go\na:0:0:444\nZ:Q19s3S5FJQvLdWa9+doIw3Y0Usw+E=\nR:context_test.go\na:0:0:444\nZ:Q1F7/TvoDRhH2h5tyPXGs/Rq11Dn4=\nR:debug.go\na:0:0:444\nZ:Q1hUKc2dqXfKuxnbf+TZsUE4MyNp8=\nR:debug_test.go\na:0:0:444\nZ:Q1pyXl73WujipHyJVzAlMTn/sKAcw=\nR:default_validator.go\na:0:0:444\nZ:Q1Zq+G8fdYY2o0UJMZb3jzeqrG7Ic=\nR:default_validator_test.go\na:0:0:444\nZ:Q1zePLZAVqEd+G+I6sweb7CY9CGVY=\nR:doc.go\na:0:0:444\nZ:Q1VFDJuI2a2E/HGomfrQ/l8senD58=\nR:doc_test.go\na:0:0:444\nZ:Q1XVRdF6s+F+HuFH0SG56V1JB+ux8=\nR:example_validator.go\na:0:0:444\nZ:Q1FrjMnoOdBUb2IaINfq1bIgfN9mA=\nR:example_validator_test.go\na:0:0:444\nZ:Q198IRlZccoXmdKWePOXN7jsN5KLg=\nR:formats.go\na:0:0:444\nZ:Q1FgZ/vnLONzZNyBEnf2Q+OHMw14A=\nR:formats_test.go\na:0:0:444\nZ:Q1Sa9ELNKa6qGSnusYcmxyum3ZDpA=\nR:go.mod\na:0:0:444\nZ:Q1WRdkguyek0K1LVWheJUAKYui5ro=\nR:go.sum\na:0:0:444\nZ:Q1+LLWoM8O7nDBNCmyDjUD+uduuu4=\nR:helpers.go\na:0:0:444\nZ:Q1DjVmkEEtJn/FEdJDR22ZmiUfjpw=\nR:helpers_test.go\na:0:0:444\nZ:Q1zE2UWZvzDmzvbyJYh0dMeM+2UPw=\nR:items_validator_test.go\na:0:0:444\nZ:Q1xIAukbCcMeLN/9s1f5wkrSrmwmY=\nR:jsonschema_test.go\na:0:0:444\nZ:Q1K26HIIuF8YtPXVOCL3RKL0Vpg4g=\nR:messages_test.go\na:0:0:444\nZ:Q1gryEkXmYPGgY8FnDwiHYIsEi458=\nR:object_validator.go\na:0:0:444\nZ:Q1p6gP1hc5umFVaeRGkPMDttzm6xg=\nR:object_validator_test.go\na:0:0:444\nZ:Q1wz23CXJLaQ/lIbPNGbwou1woFNk=\nR:options.go\na:0:0:444\nZ:Q1xh0RNqDyoKQlL2t4n8rf+xiIIcQ=\nR:options_test.go\na:0:0:444\nZ:Q1OlQp6c5illAhKefvt8HFFwTb0bk=\nR:parameter_validator_test.go\na:0:0:444\nZ:Q13HpyuivxQ2wo9TCw0A2G+D2wUxQ=\nR:result.go\na:0:0:444\nZ:Q1cAO314rKf9EJzv7e8dOewh/JXKc=\nR:result_test.go\na:0:0:444\nZ:Q1tcejHWowrCGIBc10TRec/0WucEM=\nR:rexp.go\na:0:0:444\nZ:Q1JnpJschA9nnbAki2XJPGeyR1MmY=\nR:rexp_test.go\na:0:0:444\nZ:Q1UGWEc7CK8Pl1NbdzlFQQgbe4cCQ=\nR:schema.go\na:0:0:444\nZ:Q1psAZ0pRpYCwzRgWnJjMVkygTPDQ=\nR:schema_messages.go\na:0:0:444\nZ:Q1VWhGaISlYynqnMvNedrAthK+QKE=\nR:schema_option.go\na:0:0:444\nZ:Q1WBR5NTkm3/G7vqTMgtY9iAGfja8=\nR:schema_option_test.go\na:0:0:444\nZ:Q1p2auyztQmGfLB6evfXE1A8H+jhg=\nR:schema_props.go\na:0:0:444\nZ:Q1v0pJ+tCTpiq8s1QTqLhrs8ZJvaQ=\nR:schema_props_test.go\na:0:0:444\nZ:Q1swd1wmk0hqXC32+ad9vWCvJNfVs=\nR:schema_test.go\na:0:0:444\nZ:Q1lk/qkO0gEHKKu3XE8xropew4+A4=\nR:slice_validator.go\na:0:0:444\nZ:Q1LXkzibW6ZkvirbOA52U+k4j6tIc=\nR:slice_validator_test.go\na:0:0:444\nZ:Q1XPWAvOZ9wK5r/7Q/Ke5up08RWuw=\nR:spec.go\na:0:0:444\nZ:Q1XvgswTrftmkGKLXmytxW2SU0PSo=\nR:spec_messages.go\na:0:0:444\nZ:Q1XWV0dPMB+hsjW7gFiH3LD6if6mE=\nR:spec_test.go\na:0:0:444\nZ:Q1qb2userWUMYZ9P0Re+cBNTY4rkA=\nR:swagger_test.go\na:0:0:444\nZ:Q1fonpScrdTKyCgf6WBr7BGK3P1qk=\nR:type.go\na:0:0:444\nZ:Q1uSmmBahLHjkvTDUzcHzZdP0F2YA=\nR:type_test.go\na:0:0:444\nZ:Q114CFkxs/G6lguuxG12xHaDx2F2s=\nR:update-fixtures.sh\na:0:0:444\nZ:Q1vmwV7Jwdetf8a2KIJ0e8s9oHM7E=\nR:validator.go\na:0:0:444\nZ:Q1Ocwu06XkeCeHBq1GXSAI8RPg4gY=\nR:validator_test.go\na:0:0:444\nZ:Q1INJjaJSxp2DnxzbQUmt7q/xk32w=\nR:values.go\na:0:0:444\nZ:Q1abOXbI6YunyNxcDHwKUV9kh6lAE=\nR:values_test.go\na:0:0:444\nZ:Q1DCxI/HoQWP82JfZ1F9oqk6OgK2o=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/.github\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Xx/5iYExMdC0KL0vLwPurSkS6ys=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q1LStWfiYpSFZiYzQy9Pf/65Rc8+I=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/102\nM:0:0:555\nR:fixture-102.json\na:0:0:444\nZ:Q1PMQRto21wfUgmEsdqBF5rQjg6ck=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/123\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1oOUSjnh6Qf8gSjsiAk1hmzeHA6A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/123-validate\nM:0:0:555\nR:fixture-123.json\na:0:0:444\nZ:Q1rCv2/UGv5jak0GQZN32vB2PQiGA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/1341\nM:0:0:555\nR:fixture-1341-2.yaml\na:0:0:444\nZ:Q1Tdoz+XLcVpAzfQuzCkjys8w9IUo=\nR:fixture-1341-3.yaml\na:0:0:444\nZ:Q1NTe+FTi2NVeRK10235B/an0nTaA=\nR:fixture-1341-4.yaml\na:0:0:444\nZ:Q1v3uBqnIdFO/+p/xTLT9bfwcl/kk=\nR:fixture-1341-5.yaml\na:0:0:444\nZ:Q1L/3vnkVHtRy0BLbrQ0IVGZo8A4s=\nR:fixture-1341-good.yaml\na:0:0:444\nZ:Q1xl9MlCrOnq3/tGmh+sen1vE1nH4=\nR:fixture-1341.yaml\na:0:0:444\nZ:Q1sc7okebujcR9fGlnOS34Ay4flig=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/1429\nM:0:0:555\nR:expand-1429.yaml\na:0:0:444\nZ:Q1stxW8ojLeQGqCe6bPw8ZOAIbu9w=\nR:flatten-1429.yaml\na:0:0:444\nZ:Q1RcrUCyaFPT1JAbVPCiWXBYJrvlk=\nR:responses.yaml\na:0:0:444\nZ:Q1ik+jJSYAaqdb5FZtnrdStsOt6A8=\nR:swagger.yaml\na:0:0:444\nZ:Q1gIzMANy41xgGWDEBTGTf4cpMvhw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/1614\nM:0:0:555\nR:gitea-expanded.json\na:0:0:444\nZ:Q1IWzoc4QOPS4TJTypMueXVGk/HBA=\nR:gitea.json\na:0:0:444\nZ:Q1IkyOh1ZVhVx0dNBZmmH6jk4g5p0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/1621\nM:0:0:555\nR:1621-flat.yaml\na:0:0:444\nZ:Q1aPsPdqNWwrHzq/XjSNlAwOOr51A=\nR:definitions.yaml\na:0:0:444\nZ:Q1UV6IpAJtttuNt7LvKmgGU0NorQI=\nR:fixture-1621.yaml\na:0:0:444\nZ:Q1Qd4N0wWbI8YeCgPZ7JvaGYnHhgE=\nR:parameters.yaml\na:0:0:444\nZ:Q1p4bNkvY1uMUJGboXqj854t7lUfg=\nR:responses.yaml\na:0:0:444\nZ:Q1DvCL74Vs2Tgv0pFXlpBT1atKgm8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/18\nM:0:0:555\nR:headerItems.json\na:0:0:444\nZ:Q1lUhMJJg1UFhNCRDGOBraK/MRbAw=\nR:headers.json\na:0:0:444\nZ:Q1g3H4mTzbVfqd4y8xyam9Dp9tUGQ=\nR:paramItems.json\na:0:0:444\nZ:Q15uW51iHXWXBL/rhwToipXmOgzM4=\nR:parameters.json\na:0:0:444\nZ:Q1HEpcM/TSgSzLEbA2UdPqFaRzapI=\nR:schema.json\na:0:0:444\nZ:Q1gkvIKPB2kazJdeRBRWoHi53E8qg=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/2137\nM:0:0:555\nR:fixture-2137.yaml\na:0:0:444\nZ:Q1LA4MTgrW6Q46PdDRfm+xX5OC/NQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/39\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1NIecZV3DiENttIciELcxlsy5Q9k=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/43\nM:0:0:555\nR:fixture-1456.yaml\na:0:0:444\nZ:Q1JSH1IiEwf3erpuuEQhOdK76JiNk=\nR:fixture-43-fail.yaml\na:0:0:444\nZ:Q1D1dLWJafynYJ6F/HfOVBk/VZvdY=\nR:fixture-43-variants.yaml\na:0:0:444\nZ:Q1SVYKQazup5rPWYwTweskdpqG5Xs=\nR:fixture-43.yaml\na:0:0:444\nZ:Q1zw8BJCs4XM411+vM7sfIj5BPUlM=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/52\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1WPygTcOTSqp4Dk4+yjifsS8OXjs=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/53\nM:0:0:555\nR:noswagger.json\na:0:0:444\nZ:Q1BgwIqmKlUnJnQuDB/mPTj1h7xRg=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/6\nM:0:0:555\nR:empty-responses.json\na:0:0:444\nZ:Q1ZM6B/zwPUzQTZ9fRaCybGs2Ti2U=\nR:no-responses.json\na:0:0:444\nZ:Q1c2VD2+r2xcP3FxBkRR4JXH11Vfw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/61\nM:0:0:555\nR:multiple-refs.json\na:0:0:444\nZ:Q1GsaJf9FTJdN+v1aoHXv9uDEVijU=\nR:unresolved-ref-for-name.json\na:0:0:444\nZ:Q1Nsf1zxv/WVbwRfo4Fb9vHQEG+cw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/62\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1w+V0APZ1pPN4lJIupPbzixk+dcE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/63\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1Q5E5Ksg4ikM2Qb16HEOujonw14M=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/bugs/73\nM:0:0:555\nR:fixture-responses-2.yaml\na:0:0:444\nZ:Q1ReieaDW9bXYGukjVAln3YFU+wL4=\nR:fixture-responses-3.yaml\na:0:0:444\nZ:Q1KUg1flCH/kvVdM2g3LNxxP+d6q8=\nR:fixture-responses.yaml\na:0:0:444\nZ:Q1ZE4VdzLmaeK1BIszuWwXcMWhSVE=\nR:fixture-swagger-2.yaml\na:0:0:444\nZ:Q1YSCf563AkoHwzwaHHb2coy5/1E4=\nR:fixture-swagger-3.yaml\na:0:0:444\nZ:Q1rDkkCkuJmvxFN6SOhsCoZZi+nN8=\nR:fixture-swagger-good.yaml\na:0:0:444\nZ:Q1G7/QxLZCmqdF/QiVtEPxTD2XsFo=\nR:fixture-swagger.yaml\na:0:0:444\nZ:Q1ZfmztHs1pu6LT+pWapu/voGpj7A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/defaulting\nM:0:0:555\nR:schema.json\na:0:0:444\nZ:Q1bzzR6crl+VIHoSHC1yyARwLia/Q=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/formats\nM:0:0:555\nR:extended-format.json\na:0:0:444\nZ:Q1fZ7xt0PNdqYb/F0kVFgj0IJw2TQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1010\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1GR/GaMQsKAGO+CcqLEJuOL7aErA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/103\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1BN531u3TVOXzM2buCIXJCCkOXZU=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/106\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1ENWAqs2vOf9cd2PTYwcFYLh+gZ8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1111\nM:0:0:555\nR:arrayParam.json\na:0:0:444\nZ:Q1ApPEMtuksRwtH9aNreoUSxFODzM=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1171\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1ikxEKWy9uDcXaRlopwRHrL4w2fY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1199\nM:0:0:555\nR:nonEmptyBody.json\na:0:0:444\nZ:Q1S0gkJxXHQk/Qy0JqwqT1aj6GbLQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1216\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1YLm/bALGSOXPNvsaIFDcSqEiM60=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1238\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1glDnKEIG6zuHhcMSFafzT3ZE8Ns=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/1289\nM:0:0:555\nR:fixture-1289-2.yaml\na:0:0:444\nZ:Q1uCUlGdZNhT9+vb1VL+7lOhsr6Wc=\nR:fixture-1289-3.yaml\na:0:0:444\nZ:Q1dAJsYrVvq3E2lXvb8HG5uHAjZGE=\nR:fixture-1289-4.yaml\na:0:0:444\nZ:Q1VtG+B/cuVQRVvk+XwtMClUD+ltc=\nR:fixture-1289.yaml\na:0:0:444\nZ:Q1XB9g4RJC0u9DVbhvu2V2I7cIRPY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/155\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q14/k3xPHXDSkt27OXsY1XmicyKy4=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/162\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1Hbci9/yvFO2CvD4LZ2l2jJVWhNg=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/163\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q10HbYCKGAADqsgNsga4F4hLOenug=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/193\nM:0:0:555\nR:spec1.json\na:0:0:444\nZ:Q1VkfEq/B49yR9MyedAxJLRcn+fnY=\nR:spec2.json\na:0:0:444\nZ:Q1q+o/KBeXzMsdFPw2LE453z7rnH0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/195\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1GCeJDqNseEpRgr28UzhfFOPSQ6I=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/196\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1em0I9zdiYrNr6IaejZ/nprT//Cs=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/217\nM:0:0:555\nR:array.yml\na:0:0:444\nZ:Q1wostqsytr0MNcJAdGuiIeonx1Ts=\nR:interface.yml\na:0:0:444\nZ:Q1B2r3zJTREySCIMA7lyrP9HiR30w=\nR:map.yml\na:0:0:444\nZ:Q1ZmoYDwWZK0mb+zfcoB/nGlHtFI8=\nR:string.yml\na:0:0:444\nZ:Q1EFl965BC0E8SG9WFaVDYDXlxz6I=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/248\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1xy9TGyRdMc+NJgtWp7AECNVdAiU=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/249\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1SokWCf8rKRgTuwozf+825rKBKlY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/251\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1J8/F7acGV9JcX6gg5O6t4NR+SYI=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/252\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1pXDu1/rghBUL9ya+8lPewfq4ivQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/287\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1uH2W/ePkyXat2bynVlbUR2tAfAs=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/319\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1WDfHMTnuocYhhStqY8GkdJrqOHI=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/342\nM:0:0:555\nR:fixture-342-2.yaml\na:0:0:444\nZ:Q1JFkPoVjupaELT2y0aWdFk8Ng85Q=\nR:fixture-342-3.yaml\na:0:0:444\nZ:Q1cW2alCNBZeCLik9y3CLZmaLNlcc=\nR:fixture-342.yaml\na:0:0:444\nZ:Q1S1AOnnfhfxziouYqykfTaV8aUbI=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/423\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1nezr9GoeSdHSf0Pp578KQpDCmHE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/436\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1iuJiFsSHk9PHiv7zPcHvHCGCulE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/453\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1eNTqwglKslWHWeQ0K0YXO9JvVRY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/454\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1WKkpuKBlucgqBRA/wSZcDX5Ywz0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/455\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1c5kv9THHwdNBDRqOAyp4Sy12DN0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/465\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1B8wseT5K2AMVxOpG9Kn+/1Vdhv0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/500\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1c5gR+hm0lRuq0BZGV86xssWx2uk=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/511\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1r3y9JZZyYw7c6YjJd3aOdP7iHAY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/524\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1n40g8to8LdJrhX93+blWHZyDzNk=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/540\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1hfl8rvB6omPJRypJjbU3HnSnnTA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/541\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q149Nz6LrhHKwQtuzUzyobsU5oJak=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/628\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1we60pBhj9QXsZDfRkVUvibDaUWQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/727\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1Y/tg+LGs5DQ/AEXHSb/gfqsK+t0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/733\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1RMrTJgvqNklGSfSGiWpGgZfj0I0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/740\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1SVSI120na7E23vxezapGViLgwY0=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/743\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1lty/jxdzbqv/G0hU71P1JnsHhyw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/763\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1vbEqlEAmJwLvtfuwtsiPdejLPSs=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/774\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1pM03m7iqo8OFnrZn4s1XK3Tz58A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/776\nM:0:0:555\nR:error.yaml\na:0:0:444\nZ:Q1w7kh3W8spRxkBLWxZGzH0+roXQw=\nR:item.yaml\na:0:0:444\nZ:Q1Ipqflh75TO2VlO4u3ZUzscEMbYk=\nR:param.yaml\na:0:0:444\nZ:Q1VgmAXQqZPUKOLps5ryL2Rx10QTA=\nR:spec.yaml\na:0:0:444\nZ:Q1Asm604g0UWY/ljAlhRHDRsQdf7c=\nR:swagger-template.yml\na:0:0:444\nZ:Q1KFDDkJT1btV3a4+v3gYWTv7laRw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/786\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1BXcZcspTTjnrp2TSdPqXmCq87HI=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/789\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1AvZg4mZrkLHgHNWQcofQ+cgeK0U=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/809\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q12dfDabK1wdARThX/QJBpj9PGwtQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/811\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q10cgmH8h80S5GII1c8HJ/dnSxYdA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/822\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q15jO/XP7B3b3TKaBSD8tFxXAJG/I=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/825\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1XSEQKLIi5YlHkTj+oz0uXr7e+Wc=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/84\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1PUU7f+yetRX1zrWxzLRxtFZAGkc=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/844\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1uFBMGu294+Xl2XdTTtgj0ZLHF5U=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/846\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q14TiEvILKpDtU/2ncNtBm/J9gW3U=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/881\nM:0:0:555\nR:deep.yml\na:0:0:444\nZ:Q11aaC1ulBxI1lMvO3CTvStAsJCfQ=\nR:swagger.yml\na:0:0:444\nZ:Q1BmofMrvW891AhVItRUXoYjQjjbY=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/890\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1N5a2Tgz77kOA/95KeDTYtUFTaOw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/890/path\nM:0:0:555\nR:health_check.yaml\na:0:0:444\nZ:Q1oQmup6Y/z6DBcd7hIe/DnWz8WgE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/899\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1EJ/d/7JDjPzfpli3OZZFdyJ79VA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/981\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1Y7S06MaQ3HgBvqzMFhIrGHb2Hr8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/982\nM:0:0:555\nR:swagger.yaml\na:0:0:444\nZ:Q1K4sqH99UwwFCI8ru+nH6A+rPfNg=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/bugs/987\nM:0:0:555\nR:swagger.yml\na:0:0:444\nZ:Q1/MRnRItt/ktl/wGDk9doN0RizBA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary\nM:0:0:555\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/bitbucket.org\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q12N8gLH3r+wb/ELyyLBVWm863pFA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/docker\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1PFJ3bu1Vw6EA/92SirzR8PKOjq4=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/kubernetes\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1MNNt71JkETJL2cEZfUvnol++8fo=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/ms-cog-sci\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1GFktPASChA84Lk/ETLSaP3iER8A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/petstore\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1xbo0icGH9t7hL+vfcHEhyAa4uVA=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/canary/quay.io\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1P0sx1tHJl4RXxDNeGcLrUoQejcs=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/expansion\nM:0:0:555\nR:all-the-things.json\na:0:0:444\nZ:Q1jlpxpTHZNXchd+Rt0mg02Viv/38=\nR:circularRefs.json\na:0:0:444\nZ:Q1pwSoQQWwk45DobDTbgi+sfNYkSI=\nR:circularSpec.json\na:0:0:444\nZ:Q1BO/b+2x3WH00eShI7QAcEix22Nc=\nR:circularSpec.yaml\na:0:0:444\nZ:Q1iGkxFlOzOHgKl1Pyh9sdK28NK8U=\nR:clickmeter.json\na:0:0:444\nZ:Q1xV7TV0bSMqwFo0mTdGMYZsZKSWc=\nR:clickmeter.yaml\na:0:0:444\nZ:Q1Yij292Fda1U4aAEXOHUty4U3o7g=\nR:invalid-refs.json\na:0:0:444\nZ:Q1IHgJuYfnE+eMOmNRZ0cJb3GNjxY=\nR:params.json\na:0:0:444\nZ:Q1FXpc/uJuwdZ9X38fBICk51wRzn8=\nR:schemas1.json\na:0:0:444\nZ:Q12U17+mrq7EeemqG4Xj/d48zi4H8=\nR:schemas2.json\na:0:0:444\nZ:Q1MtOX3vIz09xUxxJRzAsTYJklp2Y=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/petstores\nM:0:0:555\nR:petstore-expanded.json\na:0:0:444\nZ:Q1mul+pJ7/2Z4ZXFuOUOKeY25/UYg=\nR:petstore-simple.json\na:0:0:444\nZ:Q1J5kJMADmwup90BjYRE4WE6CS8q4=\nR:petstore-with-external-docs.json\na:0:0:444\nZ:Q1ftziNX4IsB9jr5YNFsPlCEJYGas=\nR:petstore.json\na:0:0:444\nZ:Q1+7YBBEE4WQLPwjRqmA0TZy4WYAE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/remotes\nM:0:0:555\nR:integer.json\na:0:0:444\nZ:Q1j2+4ZesplXxb+3QhAEsuMWdkL5A=\nR:subSchemas.json\na:0:0:444\nZ:Q1N8lv5OIHhnDrpLm4p719ytH9ZWM=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/remotes/folder\nM:0:0:555\nR:folderInteger.json\na:0:0:444\nZ:Q1j2+4ZesplXxb+3QhAEsuMWdkL5A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/specs\nM:0:0:555\nR:refed.json\na:0:0:444\nZ:Q1zr62t4zEjupNzS+oLfTy/ZcERAs=\nR:resolution.json\na:0:0:444\nZ:Q1DQtJEeP0DdkT4Kt36wYx7zA7pqk=\nR:resolution2.json\na:0:0:444\nZ:Q1po6c+Et8MHAZXJ/MTZ+EbAd3VpQ=\nR:response_name.json\na:0:0:444\nZ:Q1SF0DN14lf9pY105ZQcCCUziMHEE=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/specs/deeper\nM:0:0:555\nR:arrayProp.json\na:0:0:444\nZ:Q1zzXjqy7j91mt4K3mBkkBe6bha54=\nR:stringProp.json\na:0:0:444\nZ:Q1d0FjbjR1LIrVIix8o9BycH2uNsQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/go-swagger/templates\nM:0:0:555\nR:swagger_json_embed.gotmpl\na:0:0:444\nZ:Q1Fk3alZtfaQwI8v1CzIdKx4XRBqw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/jsonschema_suite\nM:0:0:555\nR:additionalItems.json\na:0:0:444\nZ:Q1at5oJX8Ckv0iNL7tfnogKuj+j2g=\nR:additionalProperties.json\na:0:0:444\nZ:Q1YiXDkZPqtwCnkDQl1FtSPWbn8W4=\nR:allOf.json\na:0:0:444\nZ:Q16YrqHTbZMocFYfDDLDL8WFjyUfk=\nR:anyOf.json\na:0:0:444\nZ:Q1gIH+swXTKIeLN6fMOylutVRMI50=\nR:default.json\na:0:0:444\nZ:Q1F8BRzJSp+0CtYnsEpB19zpFQ47U=\nR:definitions.json\na:0:0:444\nZ:Q1CWOsTwFKD69q03VUya8D9j2tmwI=\nR:dependencies.json\na:0:0:444\nZ:Q1AeNUJ7WodkTcCKnwS31YN5xheD0=\nR:enum.json\na:0:0:444\nZ:Q1S5bMJCRZUPn60JFhE6UFbZ9RwuU=\nR:format.json\na:0:0:444\nZ:Q1PWC9s/uy1H2pkemeUbuaskFwPEQ=\nR:items.json\na:0:0:444\nZ:Q1UzB/MKVXx4nSHDVauZVQy/3uH+E=\nR:maxItems.json\na:0:0:444\nZ:Q1WAzbfInNB7RfP9rbInm7ExCLebQ=\nR:maxLength.json\na:0:0:444\nZ:Q1p96AOmWmQyGaL9k5Hw4Bm13SO8s=\nR:maxProperties.json\na:0:0:444\nZ:Q1iTMQknvWyNx4+cP74Vi6SKnWTOs=\nR:maximum.json\na:0:0:444\nZ:Q16i7UwPru561jeHlq4Relk113q+w=\nR:minItems.json\na:0:0:444\nZ:Q1F2/twHR2jG7Fx865efI6akvQvlg=\nR:minLength.json\na:0:0:444\nZ:Q18JLgL+Zkj70ZchRZQXOaCVHn5Ug=\nR:minProperties.json\na:0:0:444\nZ:Q113dazxQPwniVoYnrzjQWXp4Ayn0=\nR:minimum.json\na:0:0:444\nZ:Q1AtvX/Xi0Czc2GZDGq4kNXvEbcJY=\nR:multipleOf.json\na:0:0:444\nZ:Q1nnDFk7HMOjVyoNOJtbehcb8pLd0=\nR:not.json\na:0:0:444\nZ:Q1W5Vn6ECeKLJW83BMqDRH8NCrtwc=\nR:oneOf.json\na:0:0:444\nZ:Q1Z3LKywZuVFin/KmkfP7ie1YRDWs=\nR:pattern.json\na:0:0:444\nZ:Q1MJlrWHSMs2bg61S8UlK6mj01Phk=\nR:patternProperties.json\na:0:0:444\nZ:Q1X07c1N0mB2Wcmh+DnQEdio8jgjY=\nR:properties.json\na:0:0:444\nZ:Q1BAJ2VW0XOulPwr6jLSjxvMJ5ULU=\nR:ref.json\na:0:0:444\nZ:Q1l1ZW1ViqBrcKRU2YV/jt669tVwI=\nR:refRemote.json\na:0:0:444\nZ:Q1HeVourP4+0EdCf+854PRNhik0w4=\nR:required.json\na:0:0:444\nZ:Q10+0V5cmol8pgfZgZZrqpU5U2rpw=\nR:type.json\na:0:0:444\nZ:Q1CTjs4oXrD6ZWDhqwKarwlvFJ68s=\nR:uniqueItems.json\na:0:0:444\nZ:Q1jJkJ/9Kr+PYl+BwYpDx4nvo2njQ=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/jsonschema_suite/optional\nM:0:0:555\nR:bignum.json\na:0:0:444\nZ:Q1MrcPssIVbJeXAu7FwYqGwf5tC9c=\nR:ecmascript-regex.json\na:0:0:444\nZ:Q1UEO415jSUEwqfH0E/WBXrYys/MM=\nR:format.json\na:0:0:444\nZ:Q1SZjVMZonDO/c62m9FI5/NAbGaYs=\nR:zeroTerminatedFloats.json\na:0:0:444\nZ:Q12sUOtVKqi7Rv3FlCg7a4rqf7Ymw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/jsonschema_suite/remotes\nM:0:0:555\nR:integer.json\na:0:0:444\nZ:Q1j2+4ZesplXxb+3QhAEsuMWdkL5A=\nR:name.json\na:0:0:444\nZ:Q1H2FTV6ib0NqS2VCw5B67A+zh7xk=\nR:subSchemas.json\na:0:0:444\nZ:Q1N8lv5OIHhnDrpLm4p719ytH9ZWM=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/jsonschema_suite/remotes/folder\nM:0:0:555\nR:folderInteger.json\na:0:0:444\nZ:Q1j2+4ZesplXxb+3QhAEsuMWdkL5A=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/local_expansion\nM:0:0:555\nR:item.yaml\na:0:0:444\nZ:Q1Ipqflh75TO2VlO4u3ZUzscEMbYk=\nR:spec.yaml\na:0:0:444\nZ:Q1vP/Dlyb02gCie+Nc88MzZh4GitU=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/petstore\nM:0:0:555\nR:swagger.json\na:0:0:444\nZ:Q1hS4VipAKEpCVkgo63Oemek7dd3s=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/pruning\nM:0:0:555\nR:schema.json\na:0:0:444\nZ:Q1tmbqKzSq3DbSgJKcoq8lyEz3Qf8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/recursive_expansion\nM:0:0:555\nR:item.yaml\na:0:0:444\nZ:Q1KLfzE5NCPEiheCEU7a665mnjK+U=\nR:spec.yaml\na:0:0:444\nZ:Q1y+fgCB7/hlO40pz/9Y0wbO6x0zc=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/schemas\nM:0:0:555\nR:int-enum.json\na:0:0:444\nZ:Q1qAl6THA3ISYfCipO+bc6B6qfDyo=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/validation\nM:0:0:555\nR:bitbucket.json\na:0:0:444\nZ:Q12N8gLH3r+wb/ELyyLBVWm863pFA=\nR:direct-circular-ancestor.json\na:0:0:444\nZ:Q1l4Ur7pQ6+3j1fXyoMO3/GW8SEX4=\nR:duplicateprops.json\na:0:0:444\nZ:Q1FYv8odAvHw+tVbQ4LqKPTWBjTSw=\nR:empty-path-param-name.json\na:0:0:444\nZ:Q1LBhyDsc1frCAijEOqi9VEGvHaNY=\nR:expected_messages.yaml\na:0:0:444\nZ:Q15MVtMtPjm9Lfo+2PJCvpZMcLgRw=\nR:fixture-1050.yaml\na:0:0:444\nZ:Q1GV36nZv+WKeU3PQZEG8l2/OpDTo=\nR:fixture-1171.yaml\na:0:0:444\nZ:Q1i+P/VYokJ/17j3d4s2+dMxmDHTo=\nR:fixture-1231.yaml\na:0:0:444\nZ:Q1smPapYRxXgSxIY2CWjDi9p+RatM=\nR:fixture-1238.yaml\na:0:0:444\nZ:Q1glDnKEIG6zuHhcMSFafzT3ZE8Ns=\nR:fixture-1243-2.yaml\na:0:0:444\nZ:Q1Q6jlMzpliuJQUgJfSTA8I2MMjEo=\nR:fixture-1243-3.yaml\na:0:0:444\nZ:Q1r9ahofzd96kPo2K4TWUCmkB9hqg=\nR:fixture-1243-4.yaml\na:0:0:444\nZ:Q1q4AO7vkZz5XxnGzrloQqfBsNzT8=\nR:fixture-1243-5.json\na:0:0:444\nZ:Q1ptgwIXHXfqUbmSm/Z06yboILlGg=\nR:fixture-1243-5.yaml\na:0:0:444\nZ:Q14LvbiJ6LU6O+/kVb7LXrIrVBG0A=\nR:fixture-1243-good.yaml\na:0:0:444\nZ:Q1SA9X6GH7CD4CRHwiBd7upbC4bzg=\nR:fixture-1243.yaml\na:0:0:444\nZ:Q1q3Fk3j5jSGC47cPidq16GCtEDng=\nR:fixture-1289-donotload.json\na:0:0:444\nZ:Q1FXOxD1o5YQRzKP4WJlk1cqXzmA4=\nR:fixture-1289-donotload.yaml\na:0:0:444\nZ:Q1FXOxD1o5YQRzKP4WJlk1cqXzmA4=\nR:fixture-1289-good.yaml\na:0:0:444\nZ:Q1F07DegHWDKwaFGzq7IBa3FQjnFk=\nR:fixture-1289.yaml\na:0:0:444\nZ:Q1Qut+V4WoaHEjGhG9oe7f8KCCouI=\nR:fixture-161-2.json\na:0:0:444\nZ:Q1fdPArkuO9s6lskzbtRrwpy3epnc=\nR:fixture-161-good.json\na:0:0:444\nZ:Q1TsQ2Vlp2dDMVN6HDDdZmKIpkKKI=\nR:fixture-161.json\na:0:0:444\nZ:Q1oMj6k0fx7CjoSZHtkaaHWCs7h0o=\nR:fixture-342-2.yaml\na:0:0:444\nZ:Q11mk38ZI/4usf6+88S+9g+P8Xu+s=\nR:fixture-342.yaml\na:0:0:444\nZ:Q1IIrXpgoFHcH6fIpXhMsElNto0so=\nR:fixture-43-2.json\na:0:0:444\nZ:Q1pTf63xr/+q6Ai4c/mVXi3vwJk+o=\nR:fixture-43.json\na:0:0:444\nZ:Q1HwqoEqsuAf39UcSD56b1Das7FvM=\nR:fixture-581-good-numbers.yaml\na:0:0:444\nZ:Q1GD1ZyOAy6TdGT92JNRcXB7WlaV8=\nR:fixture-581-good.yaml\na:0:0:444\nZ:Q1saQ1sb1Y3UD2wedKqJMtImmhNe8=\nR:fixture-581-inline-param-format.yaml\na:0:0:444\nZ:Q12wFO+WBc4/UCrUyLbye5L9650kA=\nR:fixture-581-inline-param.yaml\na:0:0:444\nZ:Q15BViSWlhRFsukJljyfivdbX0Qkc=\nR:fixture-581.yaml\na:0:0:444\nZ:Q1+beLpVQz8Q+XO1/1zrKCFX7BVtY=\nR:fixture-859-2.yaml\na:0:0:444\nZ:Q1H1a631l1c1ukTpynEGozBRQb+Q0=\nR:fixture-859-good.yaml\na:0:0:444\nZ:Q1m44jA+Z5Hvtl0//exMPxkA9KpVE=\nR:fixture-859.yaml\na:0:0:444\nZ:Q1//fXEGBHHfT4RJ8s66L6DF+QgWQ=\nR:fixture-additional-items-2.yaml\na:0:0:444\nZ:Q1h1GjSNioRQuiP2bPj7u5Gm+sRvQ=\nR:fixture-additional-items-3.yaml\na:0:0:444\nZ:Q179GLHdmRyR7VScoG/CM+9pWIo1U=\nR:fixture-additional-items-invalid-values.yaml\na:0:0:444\nZ:Q1lYoZRGX1Tdfcc5N4cR8bWLeB+Vw=\nR:fixture-additional-items.orig\na:0:0:444\nZ:Q1bEvQ+RJ8kQnu7D7jpp1RqzS36Fk=\nR:fixture-additional-items.yaml\na:0:0:444\nZ:Q1l+EVTjHc5ft8BxF5UEoV0te3Ork=\nR:fixture-all-formats.yaml\na:0:0:444\nZ:Q118j2nMdU2EWMng3zugFjj2X3bSc=\nR:fixture-bad-response.yaml\na:0:0:444\nZ:Q1db9P26wpBDENl5SqAacW57fDEjY=\nR:fixture-collisions.yaml\na:0:0:444\nZ:Q1Osk/m6nTnMChcEXaCLvW6U/1Zho=\nR:fixture-constraints-on-numbers.yaml\na:0:0:444\nZ:Q1nfon24UhHBNbSUMGH3pxfbi+KP8=\nR:fixture-empty-paths.json\na:0:0:444\nZ:Q18Zoo0p5Mptrit2ZIqc9BM3HvPO0=\nR:fixture-invalid-example-property.yaml\na:0:0:444\nZ:Q16mum5FQfhW7xX4IKRqi0wwb2r2E=\nR:fixture-items-items.yaml\na:0:0:444\nZ:Q1YHuaGns8BVz7sdZFVZcg+MnP894=\nR:fixture-no-json-example.yaml\na:0:0:444\nZ:Q1b23CSQDBH/kGUY+gKaTGwveZ2NY=\nR:fixture-no-response.yaml\na:0:0:444\nZ:Q1KyhSv11CghnHYIBNjBeBi9i8tdE=\nR:fixture-patternProperties.json\na:0:0:444\nZ:Q1kEBNjv8+63iiQ3CCIBIIWnYCJS4=\nR:fixture-valid-example-property.yaml\na:0:0:444\nZ:Q1WQbvpaGUuBpN2fnIFIZayBXA1pI=\nR:gentest.yaml\na:0:0:444\nZ:Q1hqN23AATuYjpU6550xrqrZOukC4=\nR:gentest2.yaml\na:0:0:444\nZ:Q1y7HUr2yFmLCljLKMXlwE8jZEi00=\nR:gentest3.yaml\na:0:0:444\nZ:Q1cZBtxbERbp3pOPU/E9TUcEEb/1A=\nR:indirect-circular-ancestor.json\na:0:0:444\nZ:Q1qumVfTcb1PRspvKmzyltXPcYmzA=\nR:invalid-formdata-body-params.json\na:0:0:444\nZ:Q1J1fT65Ez2M2cWGq0PMjjpK+M5cM=\nR:invalid-ref.json\na:0:0:444\nZ:Q1cM8ReLr1FKL04I+fqqpcTMQdjSw=\nR:invalid-referenced.yml\na:0:0:444\nZ:Q1oChT/Q5/qvxFbXH2UopYriBtkDY=\nR:nestedduplicateprops.json\na:0:0:444\nZ:Q1XD8w8giPGyrWkZaYjlCjgBWuaVM=\nR:petstore-expanded.json\na:0:0:444\nZ:Q1mul+pJ7/2Z4ZXFuOUOKeY25/UYg=\nR:recursive-circular-ancestor.json\na:0:0:444\nZ:Q1fjikzjcxsUqvc0YHwuALiCg6BgQ=\nR:type-keyword-mismatch.yaml\na:0:0:444\nZ:Q1Ou5IABVziZFJldxIUtosXLK98YA=\nR:valid-ref.json\na:0:0:444\nZ:Q1P6m4F+GZbZmkzebOrMWlheLFMWs=\nR:valid-referenced-variants.yaml\na:0:0:444\nZ:Q1WvR28a4LkuD3kayI040oGB+R6BY=\nR:valid-referenced.yml\na:0:0:444\nZ:Q1FcYZWW4J/pm0joAFPpvWVyX54Zw=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/validation/default\nM:0:0:555\nR:invalid-default-value-default-response-PatternProperties.json\na:0:0:444\nZ:Q1rQPLuNa+wDFenEdI6MnRUCPgRTE=\nR:invalid-default-value-default-response.json\na:0:0:444\nZ:Q1OT6zO8G1g57CWHeKISJ16gr/To0=\nR:invalid-default-value-header-badpattern.json\na:0:0:444\nZ:Q1wMBrVyJ9Bjetqtc4eArtonze+hc=\nR:invalid-default-value-header-items-default-response.json\na:0:0:444\nZ:Q1n/kIicwVvYYAJW2ywQ6a0Gf0tHE=\nR:invalid-default-value-header-items-response.json\na:0:0:444\nZ:Q1mGSoOPqJnmsRktjMH14svQS4Dmw=\nR:invalid-default-value-header-items.json\na:0:0:444\nZ:Q1viH3flm5cOS+KWVxs/jNDpt/TW0=\nR:invalid-default-value-header-pattern.json\na:0:0:444\nZ:Q1nTxhR3KLSWBgL2X8G0XxZ17ExEA=\nR:invalid-default-value-header-response.json\na:0:0:444\nZ:Q1ce9zq7HYOgWNZIxhJnHoMeDVc0s=\nR:invalid-default-value-header.json\na:0:0:444\nZ:Q1swNHRh4eaffxmw8+2Qj43FxAkS8=\nR:invalid-default-value-parameter-items.json\na:0:0:444\nZ:Q1Syl12B5oU7k8t3Rnz+6D1IiqCYk=\nR:invalid-default-value-parameter-ref.json\na:0:0:444\nZ:Q1HACGoBUjAJWcn6Tvd5g4QHHtiFs=\nR:invalid-default-value-parameter-required.json\na:0:0:444\nZ:Q19bZU0s4KEKeDV1/o4wO9L+pJCJ8=\nR:invalid-default-value-parameter-schema.json\na:0:0:444\nZ:Q1peQAPzYglkZCZQMfDRCOgDIBUys=\nR:invalid-default-value-parameter.json\na:0:0:444\nZ:Q1axQ+XWgLuBqAdCOA2l9aATOQYww=\nR:invalid-default-value-response-ref.json\na:0:0:444\nZ:Q16CJzPOmud04f1/5bHgEXDDdgsno=\nR:invalid-default-value-schema-additionalProperties.json\na:0:0:444\nZ:Q1iYDrMqURfmKAtxOfcp7L2gFxLiU=\nR:invalid-default-value-schema-allOf.json\na:0:0:444\nZ:Q1+Siazb9SNXJbzFLTzZMNYhhzcpg=\nR:invalid-default-value-schema-items-allOf.json\na:0:0:444\nZ:Q13AInHiB98s9wsoK37/b9lWezPKY=\nR:invalid-default-value-schema-items.json\na:0:0:444\nZ:Q1O0b0r/kDlLqRsIS6uQnAxsXL2xo=\nR:invalid-default-value-schema-patternProperties.json\na:0:0:444\nZ:Q1TKKG70MwcEdpA6jOH+SMXY3FhRs=\nR:invalid-default-value-schema-ref.json\na:0:0:444\nZ:Q1Xu3rqTXRfGd65fhOmdkuyfxdanI=\nR:invalid-default-value-schema.json\na:0:0:444\nZ:Q1gBvKRiNg8ALzNTsCuOMSeSf4TEI=\nR:valid-default-value-default-response-PatternProperties.json\na:0:0:444\nZ:Q1b78NUuJ+yabyl5EfTQ80uzvystw=\nR:valid-default-value-default-response.json\na:0:0:444\nZ:Q10Dn4JLkvmYXXZxevCTLPHUP8WJ4=\nR:valid-default-value-header-badpattern.json\na:0:0:444\nZ:Q1Dp5r7OxVFFd7AgAZxJSMlvK65Wk=\nR:valid-default-value-header-items-default-response.json\na:0:0:444\nZ:Q1fQHHDl/ZpuUEH5qBKPio1uBl8xw=\nR:valid-default-value-header-items-response.json\na:0:0:444\nZ:Q163mWxKvyMEFcAQgA3o/8RKN2smM=\nR:valid-default-value-header-items.json\na:0:0:444\nZ:Q1fQHHDl/ZpuUEH5qBKPio1uBl8xw=\nR:valid-default-value-header-pattern.json\na:0:0:444\nZ:Q1Dp5r7OxVFFd7AgAZxJSMlvK65Wk=\nR:valid-default-value-header-response.json\na:0:0:444\nZ:Q15JfPNfcCSgtklAjRvF1X/g3nJf4=\nR:valid-default-value-header.json\na:0:0:444\nZ:Q1fPP6mfrsZTQur0Vu1Qv5/B8IU6A=\nR:valid-default-value-parameter-items.json\na:0:0:444\nZ:Q1IjxyZhiQ5Cv33LcATHMWmYIyqxw=\nR:valid-default-value-parameter-ref.json\na:0:0:444\nZ:Q1PEXRY9CUDubxnj1DKp3zTn5Co1k=\nR:valid-default-value-parameter-required.json\na:0:0:444\nZ:Q183zdqs7nmV4pqfY5dMblc5AYw6I=\nR:valid-default-value-parameter-schema.json\na:0:0:444\nZ:Q1zD7ggOr+uHlUFdkkUy185aVrmJg=\nR:valid-default-value-parameter.json\na:0:0:444\nZ:Q1cXiqRWJS2PAvPmEfBvLWW1GToMs=\nR:valid-default-value-response-ref.json\na:0:0:444\nZ:Q1b5p6a/D6VpHD3ak4psXfkTABsHE=\nR:valid-default-value-schema-additionalProperties.json\na:0:0:444\nZ:Q1bGJBYN6hDSIAxg763Jv+E7XSRs0=\nR:valid-default-value-schema-allOf.json\na:0:0:444\nZ:Q1PxR0N2TwOtLz5zXgOGPZXIw3GsM=\nR:valid-default-value-schema-items-allOf.json\na:0:0:444\nZ:Q1rs/Uzab8wj7wBzDXoAc+//1TQVw=\nR:valid-default-value-schema-items.json\na:0:0:444\nZ:Q1P6m4F+GZbZmkzebOrMWlheLFMWs=\nR:valid-default-value-schema-patternProperties.json\na:0:0:444\nZ:Q1WqlHNv3lATXnNz0kCuW2h4GzXwE=\nR:valid-default-value-schema-ref.json\na:0:0:444\nZ:Q1fEOlYzFunN7mwdHZH5I1Mx1faVU=\nR:valid-default-value-schema.json\na:0:0:444\nZ:Q1e86HLA96oZiFbE7X4/nDg2xGqBM=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/fixtures/validation/example\nM:0:0:555\nR:invalid-example-default-response-PatternProperties.json\na:0:0:444\nZ:Q15j45rPdHusMmtpS+HySmEBm+m8w=\nR:invalid-example-default-response.json\na:0:0:444\nZ:Q16qzsmg4PFFXnpGF3CDDx4YW1+oU=\nR:invalid-example-header-badpattern.json\na:0:0:444\nZ:Q18LgnWRwA3cbFJGrg7VOVb1oM7Ac=\nR:invalid-example-header-items-default-response.json\na:0:0:444\nZ:Q19G2OAUINZNSx5SAR1xxAE0vFb8E=\nR:invalid-example-header-items-response.json\na:0:0:444\nZ:Q19+SA/QZSgTYwPOwU7H8I44Go338=\nR:invalid-example-header-items.json\na:0:0:444\nZ:Q14IMiugEStNq+bIK1Ts5ItNg/mGw=\nR:invalid-example-header-pattern.json\na:0:0:444\nZ:Q1v4VbTxPpdAUJVwqvwgx+a6JwfWg=\nR:invalid-example-header-response.json\na:0:0:444\nZ:Q1YMOz4fOCCcbuU1Y7mA1+XKHAIvY=\nR:invalid-example-header.json\na:0:0:444\nZ:Q12bSfz3yyaIHDdH0GvK9AjgjV8WU=\nR:invalid-example-parameter-items.json\na:0:0:444\nZ:Q1AaF76LAwStenrBxRyi/agNOGQls=\nR:invalid-example-parameter-ref.json\na:0:0:444\nZ:Q1VXDjdBSpJCrkX/WY/NH+xphUu0E=\nR:invalid-example-parameter-required.json\na:0:0:444\nZ:Q1pc7xOp3CgLWsEe/2P9RyI0ZigpA=\nR:invalid-example-parameter-schema.json\na:0:0:444\nZ:Q1w4j40jJWW1h/NTDYK4InILNEctk=\nR:invalid-example-parameter.json\na:0:0:444\nZ:Q1sb8HQU8667D7RyvDsH+sG28Ia2k=\nR:invalid-example-response-ref.json\na:0:0:444\nZ:Q1d2druYwQTUtQQXW5XSVb4ISH5QU=\nR:invalid-example-response.json\na:0:0:444\nZ:Q1dfobEjNiXE2cSxIA5owt+2dyTEU=\nR:invalid-example-schema-additionalProperties.json\na:0:0:444\nZ:Q1j6bDi623XkjLKf6NWtusXRFXsEg=\nR:invalid-example-schema-allOf.json\na:0:0:444\nZ:Q1yox/I9yAIivQ/IkzReLR/RzmAkY=\nR:invalid-example-schema-items-allOf.json\na:0:0:444\nZ:Q13zJkwH0nhmj3sR5bfIJJLOcZSHI=\nR:invalid-example-schema-items.json\na:0:0:444\nZ:Q1t/ZeCIjtTzxmr534VLuhNF0q14E=\nR:invalid-example-schema-patternProperties.json\na:0:0:444\nZ:Q1BhR0grMnXDt3OyhqjrThFEFDSOA=\nR:invalid-example-schema-ref.json\na:0:0:444\nZ:Q182+Rc2yY06LtrxhueMytkGxk4W8=\nR:invalid-example-schema.json\na:0:0:444\nZ:Q1l74hS5vsVGhcEag83Y/mzZbxrU0=\nR:valid-example-default-response-PatternProperties.json\na:0:0:444\nZ:Q1zdeJ7XLhVKGm+lq23q0suZke8YY=\nR:valid-example-default-response.json\na:0:0:444\nZ:Q12tdbzdi5AKm4/du0lz2n/SPqaxc=\nR:valid-example-header-badpattern.json\na:0:0:444\nZ:Q17tI9IfcE11hPIp2Ypjt1hNbU2v0=\nR:valid-example-header-items-default-response.json\na:0:0:444\nZ:Q1anAq97k7FBQIq1pqO5kaqeFHYdI=\nR:valid-example-header-items-response.json\na:0:0:444\nZ:Q19d3UXFuE5sgDFJn5PamVYTw3+vc=\nR:valid-example-header-items.json\na:0:0:444\nZ:Q1anAq97k7FBQIq1pqO5kaqeFHYdI=\nR:valid-example-header-pattern.json\na:0:0:444\nZ:Q17tI9IfcE11hPIp2Ypjt1hNbU2v0=\nR:valid-example-header-response.json\na:0:0:444\nZ:Q1dh73VLqAq+xx4xZUMLtHVgAkr5Y=\nR:valid-example-header.json\na:0:0:444\nZ:Q1fZrld+tuPSJz/zZ058mda9UJ49M=\nR:valid-example-parameter-items.json\na:0:0:444\nZ:Q1Ntz+twqyPovnLwIJAcZepnJMNMs=\nR:valid-example-parameter-ref.json\na:0:0:444\nZ:Q1q02sLHl4bqB1EfPP5Yi8bN5qQwE=\nR:valid-example-parameter-required.json\na:0:0:444\nZ:Q1cwtE/Hhz+mtEQ7hUFS95hi93yPc=\nR:valid-example-parameter-schema.json\na:0:0:444\nZ:Q1OUwzKqBTmYpnIaTgmfGxeCSrSq0=\nR:valid-example-parameter.json\na:0:0:444\nZ:Q1bU1GQnXc79PcYvSEQVV/2bObMNY=\nR:valid-example-response-ref.json\na:0:0:444\nZ:Q1jNOfOOQh0ySt8aWHiAf/AeXIdF4=\nR:valid-example-response.json\na:0:0:444\nZ:Q1LF3H/jftCVgNVk+BIjnxffDeNgg=\nR:valid-example-schema-additionalProperties.json\na:0:0:444\nZ:Q1yJK0IDO1iErFsG3eIk45dWeraMs=\nR:valid-example-schema-allOf.json\na:0:0:444\nZ:Q1y+V8EO6M2hUrYcMJcWv5ywW24EE=\nR:valid-example-schema-items-allOf.json\na:0:0:444\nZ:Q1MEoFK+A7KuI/wizUkvcXz8rtZtM=\nR:valid-example-schema-items.json\na:0:0:444\nZ:Q1P6m4F+GZbZmkzebOrMWlheLFMWs=\nR:valid-example-schema-patternProperties.json\na:0:0:444\nZ:Q1mIxXsUbCl786Tf+0mAmqxcd5On4=\nR:valid-example-schema-ref.json\na:0:0:444\nZ:Q1/eimRz6WOmRqbPUuFjvFjZgApqc=\nR:valid-example-schema.json\na:0:0:444\nZ:Q1Oe2vbOnxfs+VkBlzuQ75L+AXPI8=\nF:root/go/pkg/mod/github.com/go-openapi/validate@v0.22.0/post\nM:0:0:555\nR:defaulter.go\na:0:0:444\nZ:Q1DUlYs2Krq5GdudYg5b6zT4vD4Dk=\nR:defaulter_test.go\na:0:0:444\nZ:Q1gmNE1Vu1YenK1EuvDy0wAZKksyQ=\nR:prune.go\na:0:0:444\nZ:Q14lgbeWqVnQxH1Ps2lvOrRE7/PE8=\nR:prune_test.go\na:0:0:444\nZ:Q1tgwXaiFYKPH/kmbpWjOb+6yQTSM=\nF:root/go/pkg/mod/github.com/golang\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1q7+NQdM/AmyUGQBM/2EoUELHGOw=\nR:AUTHORS\na:0:0:444\nZ:Q1TEs7gRk9VV51+w+0Q+xI3OKfm2g=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1iKVnhzNuo43R5rNJZiRc1io2tYs=\nR:CONTRIBUTORS\na:0:0:444\nZ:Q18JdA/0bfYd6TK3fLKD/qCciEkpI=\nR:LICENSE\na:0:0:444\nZ:Q1qpskD1WMrtNneV9mdinMvKKPILI=\nR:README.md\na:0:0:444\nZ:Q195LJKW4sexz8NJnOw0J169cTCmM=\nR:go.mod\na:0:0:444\nZ:Q1eQmZ2njEgoKA7bJweWg0SSHZYf0=\nR:go.sum\na:0:0:444\nZ:Q1+9DsSZv2WmtJUH0AxJqwvPMN+ZA=\nR:regenerate.bash\na:0:0:444\nZ:Q1FyfqdeZq3rccs0xvTtA9qcjtSHc=\nR:test.bash\na:0:0:444\nZ:Q1L3ucNVl+WfsULl7e/UycuUucTxg=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:bug_report.md\na:0:0:444\nZ:Q1OeFL0LfhMhuzFkMyzzwRUWapNug=\nR:feature_request.md\na:0:0:444\nZ:Q1ZHm84R5Q8TjkBvIhBOMHIQLKFoA=\nR:question.md\na:0:0:444\nZ:Q18KcRb6SvAYwjF+3u9UGJ7F5mE8w=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q1vv2BeqTPVyseUv5ZglrDv9NSKCk=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/descriptor\nM:0:0:555\nR:descriptor.go\na:0:0:444\nZ:Q1umbLg4rm/uHDwfdsuZYyjs7ccQ8=\nR:descriptor_test.go\na:0:0:444\nZ:Q1nq3t1VQdB85kJDCd9YBP2k5NKSQ=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/cmd/generate-alias\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1gcFeKef7uVaGxFfx9vw186NouLY=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/gengogrpc\nM:0:0:555\nR:grpc.go\na:0:0:444\nZ:Q1HLl5EVqesQQ9kOzr7ZcMod9PCRo=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/testprotos\nM:0:0:555\nR:regenerate.bash\na:0:0:444\nZ:Q16JWS7thd7JggG3T6zMR9gsdY3L4=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/testprotos/jsonpb_proto\nM:0:0:555\nR:test2.pb.go\na:0:0:444\nZ:Q1vZEWkBuEjVDLvtr6NvXB7COACA8=\nR:test2.proto\na:0:0:444\nZ:Q1lN21wL8tcMxKj0Ub7FD5Jsxo3PA=\nR:test3.pb.go\na:0:0:444\nZ:Q1f3bH47L4EYcECHJ+RvsUYwDy/5o=\nR:test3.proto\na:0:0:444\nZ:Q1fOV28iinbOAASTR09v6O0l/8Kuc=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/testprotos/proto2_proto\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1G6oN72XlEZdyaWbd4TOM6fg76Q0=\nR:test.proto\na:0:0:444\nZ:Q1np/4U9Un4Yd5SF15VzSc4F2Xvq4=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/internal/testprotos/proto3_proto\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q13GL2L4Yry5qKzs+6J3VXd2J80B4=\nR:test.proto\na:0:0:444\nZ:Q1Vn0YuBFeVqLr5qyoxJUGSDn10SE=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/jsonpb\nM:0:0:555\nR:decode.go\na:0:0:444\nZ:Q1JJTBA2ggphKt0bDMiWTb+nqAdGc=\nR:encode.go\na:0:0:444\nZ:Q16UhbaJdjwLbZBoultH2VU3CNkxI=\nR:json.go\na:0:0:444\nZ:Q1Sn2HUC9PMQ4PX5iybl25wh1MWWU=\nR:json_test.go\na:0:0:444\nZ:Q1T523K7dZmzMOe7LDcuPI7W/6wwY=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/proto\nM:0:0:555\nR:buffer.go\na:0:0:444\nZ:Q16guawcHSV4tHKEJLp1BeUmKSwRg=\nR:defaults.go\na:0:0:444\nZ:Q1l4+qbuxYyJArjmndsr4sa3ldk2A=\nR:deprecated.go\na:0:0:444\nZ:Q1TN9a/7KTn/UWRbhF8Ftg9xrl7kA=\nR:discard.go\na:0:0:444\nZ:Q1z2zZ9jbruVZ7FjFubk3sSmHyBk0=\nR:discard_test.go\na:0:0:444\nZ:Q1tUIw7TzT5/g2BCOGT0KUpag8qZQ=\nR:extensions.go\na:0:0:444\nZ:Q1nUDnnEI07BPoVvTwLhZxjMiPejQ=\nR:extensions_test.go\na:0:0:444\nZ:Q1yFgPbX9HuHF1Qn8XKMwUrmsfAf0=\nR:properties.go\na:0:0:444\nZ:Q1+c3g339deJTM/UYG7Z5ejul31hI=\nR:proto.go\na:0:0:444\nZ:Q1yVB9GKHYI6mlJn7yiJYG8OERCVo=\nR:proto_clone_test.go\na:0:0:444\nZ:Q11QjWQgQY1qKSi0EmT20g5VjPis4=\nR:proto_equal_test.go\na:0:0:444\nZ:Q1UE8PEN1lolLFYCYGNl7wU/vzRV0=\nR:proto_test.go\na:0:0:444\nZ:Q1JvBxnNyP0wuMbgcty44ZW7wIQjc=\nR:registry.go\na:0:0:444\nZ:Q1oEMlSdK1DdiTT/wNPUCpLQEQqyU=\nR:registry_test.go\na:0:0:444\nZ:Q1mVC9qKbGW/z57MUOyF6LatYGT3c=\nR:text_decode.go\na:0:0:444\nZ:Q1HFyjLzcH/D2TDfWuyMdVt3/7E/g=\nR:text_encode.go\na:0:0:444\nZ:Q1Gn3SQ0yLDXc7VnMUM1FVPp5EcKw=\nR:text_test.go\na:0:0:444\nZ:Q1pnM8e7WtTQg33Fe6azPPJ/cQ7/k=\nR:wire.go\na:0:0:444\nZ:Q1O9ZT06bVF9/Iu3WhqgI7yms/sRI=\nR:wrappers.go\na:0:0:444\nZ:Q1UDprDw7GvtZ6bLw204ijDkeI4PY=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1S4TM+Udj4vvOTLOFl6xXEWsLx30=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/descriptor\nM:0:0:555\nR:descriptor.pb.go\na:0:0:444\nZ:Q1hqwHhdATKcc2GhYsIGAW/pBWIxY=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/generator\nM:0:0:555\nR:generator.go\na:0:0:444\nZ:Q1lT8knQ3iOZ6cJwA1f+F+T//vO/8=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/generator/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/generator/internal/remap\nM:0:0:555\nR:remap.go\na:0:0:444\nZ:Q1FwPeWuZZvIGR1po/rIAp2wqHbzQ=\nR:remap_test.go\na:0:0:444\nZ:Q1LDnFIKP9YFTCuGHjcmfiFdLKeNM=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/grpc\nM:0:0:555\nR:grpc.go\na:0:0:444\nZ:Q1ZM3P4VC32++fZkoC0DRsVjYPkMQ=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/protoc-gen-go/plugin\nM:0:0:555\nR:plugin.pb.go\na:0:0:444\nZ:Q18xQX3YpZH7aZVuM7//7yeOWeIto=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes\nM:0:0:555\nR:any.go\na:0:0:444\nZ:Q175MukMSbr04z93Sny6RVGY49ceo=\nR:any_test.go\na:0:0:444\nZ:Q1DmQGybH+vOigNtpGtxwEGOjP738=\nR:doc.go\na:0:0:444\nZ:Q1ZZZA0Hm1CSFpL4sxanpn0JTnsFg=\nR:duration.go\na:0:0:444\nZ:Q1IDIVv7pkhqX091XMW4MdZr63YfY=\nR:duration_test.go\na:0:0:444\nZ:Q1Z94hqS5UsuI34CJKgtLkPagkPbk=\nR:timestamp.go\na:0:0:444\nZ:Q1jldLO2KukvGSxMtl0OFEwJNpazA=\nR:timestamp_test.go\na:0:0:444\nZ:Q1AUgEISbeUuS+hKVFm2sNKgsD2yE=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/any\nM:0:0:555\nR:any.pb.go\na:0:0:444\nZ:Q1EwuwDwCy6TswVUMwXogTx0XCLSA=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/duration\nM:0:0:555\nR:duration.pb.go\na:0:0:444\nZ:Q1H8y6aT53KJ1ov5IGBFNRgyc5c30=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/empty\nM:0:0:555\nR:empty.pb.go\na:0:0:444\nZ:Q13PARTIFZTqVR5JdULn3iVk8URHE=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/struct\nM:0:0:555\nR:struct.pb.go\na:0:0:444\nZ:Q1yllEbiHvieoOLQwdXyw3tan19Lc=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/timestamp\nM:0:0:555\nR:timestamp.pb.go\na:0:0:444\nZ:Q17n/8fo74OTAI3JTqJrLNIMmjvwA=\nF:root/go/pkg/mod/github.com/golang/protobuf@v1.5.2/ptypes/wrappers\nM:0:0:555\nR:wrappers.pb.go\na:0:0:444\nZ:Q1Onv9//5NcL7dLxEYdRXO0+63i58=\nF:root/go/pkg/mod/github.com/golang-jwt\nF:root/go/pkg/mod/github.com/golang-jwt/jwt\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1FoyOvO8n1E8baYHOPcB0pXhaQCc=\nR:LICENSE\na:0:0:444\nZ:Q1Xpddgp9OpCDAKLpRL4uz4Ouq9XQ=\nR:MIGRATION_GUIDE.md\na:0:0:444\nZ:Q1/vxOMKTqvk3Iv6gqWJsN0tabnTE=\nR:README.md\na:0:0:444\nZ:Q1T3ziG6cJ9AVgTSqIBM9NeV8vMAE=\nR:SECURITY.md\na:0:0:444\nZ:Q1f7nVhT8cVeQKPHczZj0EC2TqYSU=\nR:VERSION_HISTORY.md\na:0:0:444\nZ:Q1GuB5SgSzj8vFFSAILJtF9yQVJ/c=\nR:claims.go\na:0:0:444\nZ:Q19yowUhvUnnIKv2YS+Jwhd9xsfeI=\nR:doc.go\na:0:0:444\nZ:Q17joHTQkpZr62bLL64OatBAwHN4c=\nR:ecdsa.go\na:0:0:444\nZ:Q1033xGwOE8S6B3KNa5bZc19mnszc=\nR:ecdsa_test.go\na:0:0:444\nZ:Q1208LNY/yk5XWUEX9yVqw0w/hmPY=\nR:ecdsa_utils.go\na:0:0:444\nZ:Q1LABWa4QsyPzU7ctwCBRSysqRhPo=\nR:ed25519.go\na:0:0:444\nZ:Q1T6L4d0pKrYuaYQWAP16XOsaGc7w=\nR:ed25519_test.go\na:0:0:444\nZ:Q1bzrt1CGqmHqtYAaP0lDVfb3SwOQ=\nR:ed25519_utils.go\na:0:0:444\nZ:Q1KFJw+IEZPFmMxQShPWaZ0JPIwdg=\nR:errors.go\na:0:0:444\nZ:Q11/lhQc2eqPW/2UC3xZ1y1GGDzHU=\nR:example_test.go\na:0:0:444\nZ:Q1z6kzb2yZV/Q9Xyp8feT/qy0dVDs=\nR:go.mod\na:0:0:444\nZ:Q11Bx2i5oCZ0ybn4yqtKQ8Z7ciSss=\nR:go.sum\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:hmac.go\na:0:0:444\nZ:Q10m6usnkID8ICKyjmjdtcHIiVPfo=\nR:hmac_example_test.go\na:0:0:444\nZ:Q1Uo6DzE8NFxpro90lvFZlduQ2QaY=\nR:hmac_test.go\na:0:0:444\nZ:Q1teT0Fni1fgmVlXVqTHWsUYWBDnc=\nR:http_example_test.go\na:0:0:444\nZ:Q1CJgztRUDK2Z13WWoharb0SXyoSc=\nR:map_claims.go\na:0:0:444\nZ:Q1i3Nfq5ukn6HCerd3dvR8NsZCX/I=\nR:map_claims_test.go\na:0:0:444\nZ:Q1FgLq6DRna0oORSn2KUX62ttskYU=\nR:none.go\na:0:0:444\nZ:Q1Gg9b4EMjmNLn8jhw1Q3XDd7vBuY=\nR:none_test.go\na:0:0:444\nZ:Q16BGlRmAj0qbKAdrOqF3EOiGYAic=\nR:parser.go\na:0:0:444\nZ:Q1Bk3tVNS/WXfTBFMHjbxB4ezmy04=\nR:parser_option.go\na:0:0:444\nZ:Q1zvfX1jaGzHiHPZ9eX3KYvBByviQ=\nR:parser_test.go\na:0:0:444\nZ:Q1LJGBwEtDFo6SRqykPTmjj90i7Yw=\nR:rsa.go\na:0:0:444\nZ:Q1cRMAGbav036KqDGe2X2cciKgjtg=\nR:rsa_pss.go\na:0:0:444\nZ:Q1wdlYpOB4l6LRU4eYMp9Hi5yOwiU=\nR:rsa_pss_test.go\na:0:0:444\nZ:Q1Ue/UO0KlKg2zhy6RmKRC1EiVyGk=\nR:rsa_test.go\na:0:0:444\nZ:Q1/FazToAv+9pw4czMPzAgCJtp3jo=\nR:rsa_utils.go\na:0:0:444\nZ:Q1QswxTkZ/B8U37cnldqVbD21auUE=\nR:signing_method.go\na:0:0:444\nZ:Q19kMOtNxLp7odKylwlUiazfjorto=\nR:staticcheck.conf\na:0:0:444\nZ:Q1HGjDVnVpgHYvDnnzJ0G33IUZ6vQ=\nR:token.go\na:0:0:444\nZ:Q1y1iCGIvTyyT3Dz5k+wZgtu5cgbg=\nR:token_test.go\na:0:0:444\nZ:Q1i5DvBJRZ2IveSVfClJMSHdOmYQY=\nR:types.go\na:0:0:444\nZ:Q1Psw5Kr2Gnpzv/A15pN9+MOPLMIw=\nR:types_test.go\na:0:0:444\nZ:Q1DlWA1IbT6jlzfvWL1UrhoZvBL1w=\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/.github/workflows\nM:0:0:555\nR:build.yml\na:0:0:444\nZ:Q1/KN7BGliQZT6/7xM9hH5tJ2jOPo=\nR:codeql-analysis.yml\na:0:0:444\nZ:Q17E5QX1ebvAq9+lNbrVjmHaXAq8E=\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/cmd/jwt\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1mLww1pkOc5Eqa5SeIjLiYk25dJQ=\nR:main.go\na:0:0:444\nZ:Q1FBhfCpgPkL1owOYw4jzKRNtKyKo=\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/request\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q11VPiJ9W0Sed/n3mMoMNIoiY9UhQ=\nR:extractor.go\na:0:0:444\nZ:Q18UeqfrA9Mnj8R07mIapa06h/cRI=\nR:extractor_example_test.go\na:0:0:444\nZ:Q1lvRxiKYrLrXaad93ViTB/ygfOoI=\nR:extractor_test.go\na:0:0:444\nZ:Q1/jHoZbR2+x9NWmt9kFeihzBI+hw=\nR:oauth2.go\na:0:0:444\nZ:Q1TMYLqC8l6u09qCqdmO77mfbw4bU=\nR:request.go\na:0:0:444\nZ:Q1qT/mTQEYgE69GGExJNEX2sf1/EI=\nR:request_test.go\na:0:0:444\nZ:Q1/XZVjQ7ZX7x3zW6iU/IlOjee6vU=\nF:root/go/pkg/mod/github.com/golang-jwt/jwt/v4@v4.4.2/test\nM:0:0:555\nR:ec256-private.pem\na:0:0:444\nZ:Q1UZTSNbcJgeitJvjrNrTyFcYzESQ=\nR:ec256-public.pem\na:0:0:444\nZ:Q1cEN5kK9H6kYXoYf7BcOg78/S6nY=\nR:ec384-private.pem\na:0:0:444\nZ:Q1B4Vn5sUGwFphGNDKGweGSgNqql0=\nR:ec384-public.pem\na:0:0:444\nZ:Q1AtIHjHdgvLOgLaDVy37mFNOfIXo=\nR:ec512-private.pem\na:0:0:444\nZ:Q1keEnKzTezz66gZ9r/cmw/ILoVbI=\nR:ec512-public.pem\na:0:0:444\nZ:Q1J660XDXzzYGVCny2uYYy4NsCc1M=\nR:ed25519-private.pem\na:0:0:444\nZ:Q1ueRnK/fOUnmGSCvalRXJ0dreeNw=\nR:ed25519-public.pem\na:0:0:444\nZ:Q1t4j3M1HxBXB2oHjPnMPRrS/AWkU=\nR:examplePaddedKey-public.pem\na:0:0:444\nZ:Q14gLNKME6S6TaTX3pEIUw923afj0=\nR:helpers.go\na:0:0:444\nZ:Q1fSbqSdQTlppRt8NhOnxm+PjOQ+0=\nR:hmacTestKey\na:0:0:444\nZ:Q1KTSM3NXizpf9hDt8QfQ6srtTBbI=\nR:privateSecure.pem\na:0:0:444\nZ:Q13jaKdt7yUKmfIToD1GesXoKq14g=\nR:sample_key\na:0:0:444\nZ:Q18SU3mAaCmp5CrpP9X0tKpWfrTcw=\nR:sample_key.pub\na:0:0:444\nZ:Q1jYVO0/Kw5RtRRmGan/EoUndsrAI=\nF:root/go/pkg/mod/github.com/google\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Yu93czNPplY3ELzxlPaiitESlQw=\nR:LICENSE\na:0:0:444\nZ:Q1cIBlLMeM2YVdOeMkUpo7XzdF3NY=\nR:README.md\na:0:0:444\nZ:Q1hBkygENohtptc8iV9rh2osSTTwY=\nR:go.mod\na:0:0:444\nZ:Q1RYgISnWu0U5gd/chShvyZmNQutg=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q10ybDH5bo0Ps37bFFU5Qjq85A/Nk=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp\nM:0:0:555\nR:compare.go\na:0:0:444\nZ:Q1PitZ4D8NASErX+X9vAmevR7AY+Q=\nR:compare_test.go\na:0:0:444\nZ:Q1kxpoD8ig7QdEEkHrDtk9qdTtsuw=\nR:example_reporter_test.go\na:0:0:444\nZ:Q1Jw1JR61yGlJ78nG0qRPTXsolrUs=\nR:example_test.go\na:0:0:444\nZ:Q1YYn+llGhP3YSJr8zIDgQD9FwO5Q=\nR:export_panic.go\na:0:0:444\nZ:Q1x8YS6eArPHfuG9r0z8ZxLsSix6w=\nR:export_unsafe.go\na:0:0:444\nZ:Q1LHDc3R2W+o+rrxWQ8sAk6yeNUXw=\nR:options.go\na:0:0:444\nZ:Q1LexV+nLgeNspUGAKbMWWkrNEgWQ=\nR:options_test.go\na:0:0:444\nZ:Q1kg9WsiXmr8iQuGXsvyUoy5UbKAg=\nR:path.go\na:0:0:444\nZ:Q1lnSrv5OwX6EtDmd2/i8JjXxfFfk=\nR:report.go\na:0:0:444\nZ:Q1m4jTjaV47VDuo33PdXjcH+uCkh0=\nR:report_compare.go\na:0:0:444\nZ:Q1j+DmFtIybnz1WTVfcm0MMcclE3s=\nR:report_references.go\na:0:0:444\nZ:Q1kqulVh0ljp+6jJfNasd+KI1P17E=\nR:report_reflect.go\na:0:0:444\nZ:Q1UtLILY2cqTVWmZgM8BV6IjSJJfE=\nR:report_slices.go\na:0:0:444\nZ:Q1SOdKrNu4oDRmJXmJdjijLkMhiz4=\nR:report_text.go\na:0:0:444\nZ:Q127/mjTboQQoCIxqZttWiTB18+3Q=\nR:report_value.go\na:0:0:444\nZ:Q17Xd36WllkLvAKMMFsUMxBMuHbX4=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/cmpopts\nM:0:0:555\nR:equate.go\na:0:0:444\nZ:Q1svaseMAhzig8qNamfN5ZXFY8qBk=\nR:example_test.go\na:0:0:444\nZ:Q1+StPbEyCvSu9BLFa/paJIVzD1T4=\nR:ignore.go\na:0:0:444\nZ:Q1FpAZgQmesNDQHImNWOndqqqy/Wc=\nR:sort.go\na:0:0:444\nZ:Q1EgyeT3hRtgmWMdKrOxdAUgqlw50=\nR:struct_filter.go\na:0:0:444\nZ:Q1Dpn9JRYWCKkvgkPqRSdVBXIMtXU=\nR:util_test.go\na:0:0:444\nZ:Q12FXhQJk2wqRVv2Ye2aQW3etDvp4=\nR:xform.go\na:0:0:444\nZ:Q1Z3nIqu2KbebaY6v2CmOEOTn5Hoo=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/diff\nM:0:0:555\nR:debug_disable.go\na:0:0:444\nZ:Q12bv55HamvWyUODb0jKx2Cqao2QU=\nR:debug_enable.go\na:0:0:444\nZ:Q19YjdzT6B78nkP9+kbz/faDeuKh4=\nR:diff.go\na:0:0:444\nZ:Q1Mh9lsLRUfSeALxxVlLEm0QiSzzc=\nR:diff_test.go\na:0:0:444\nZ:Q1ghotGxICd2F1h/umP9I51okZEA4=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/flags\nM:0:0:555\nR:flags.go\na:0:0:444\nZ:Q1gwsRUkNZSpy4iITTO7ha78KRApY=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/function\nM:0:0:555\nR:func.go\na:0:0:444\nZ:Q1BkXCjfUQeR3aEh8oAywbhK9olSA=\nR:func_test.go\na:0:0:444\nZ:Q1kZuEzPbxzZ5quP5p6eywFMSKvcQ=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/testprotos\nM:0:0:555\nR:protos.go\na:0:0:444\nZ:Q1cB/d7pnbrWrwc2dMwNldNQPKw6I=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/teststructs\nM:0:0:555\nR:project1.go\na:0:0:444\nZ:Q1OqFjaXhO6xOzSFzQ0ksQj/gT8mU=\nR:project2.go\na:0:0:444\nZ:Q1+ZWXv8w8X5avOffNcl9WQHjatjU=\nR:project3.go\na:0:0:444\nZ:Q1aniu2Es3h3OWXJvfOhib7O5Lgxs=\nR:project4.go\na:0:0:444\nZ:Q15cW2U+eOKocRPCTx6fAg4RtWB4k=\nR:structs.go\na:0:0:444\nZ:Q1PGMAnSHVM2XEPAeQF1RxLt6wfBg=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/teststructs/foo1\nM:0:0:555\nR:foo.go\na:0:0:444\nZ:Q1NSLfsuXkDLjNu3yq0eMdtlgANjM=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/teststructs/foo2\nM:0:0:555\nR:foo.go\na:0:0:444\nZ:Q1NSLfsuXkDLjNu3yq0eMdtlgANjM=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/internal/value\nM:0:0:555\nR:name.go\na:0:0:444\nZ:Q1v6EK5Q9eU3qIj0V5sKaMGDEq6nU=\nR:name_test.go\na:0:0:444\nZ:Q1eVCX6W+Y/q2mNVDKEkqm6Fee1QY=\nR:pointer_purego.go\na:0:0:444\nZ:Q1UVILeDzd3GzocuGnSOMz7v52xqY=\nR:pointer_unsafe.go\na:0:0:444\nZ:Q1RFwxAJTD7jpbrNHLDBJuvym8NTM=\nR:sort.go\na:0:0:444\nZ:Q1dUvoBXc5OaP9Mrjgs79ilUBU+t4=\nR:sort_test.go\na:0:0:444\nZ:Q1hxsTYfyjrYlOWV2kZVnOfAhklSw=\nF:root/go/pkg/mod/github.com/google/go-cmp@v0.5.9/cmp/testdata\nM:0:0:555\nR:diffs\na:0:0:444\nZ:Q1ghBrjROgqhGFzhsXwJNcS8snApU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0\nM:0:0:555\nR:.codecov.yaml\na:0:0:444\nZ:Q1xs6v/CRMR+s6R/8S1A6wp73V5Cc=\nR:.gitattributes\na:0:0:444\nZ:Q1Q0TsXyVkiudQCTCUhzVYQ8URabA=\nR:.gitignore\na:0:0:444\nZ:Q1NqQQA/3YLpVI3Snutn0gvISGW4o=\nR:.golangci.yaml\na:0:0:444\nZ:Q1lPNogmD/abVrZ27V6EtGazcXrq4=\nR:.goreleaser.yml\na:0:0:444\nZ:Q1YBs9RBF5wsA10mNFnhRurELFCJs=\nR:.wokeignore\na:0:0:444\nZ:Q1vFhm+ek+Q2YM0zq6Hwki5+Cv1cQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1/qNfwwFg1V/Zt8fvACh2ob9BHbw=\nR:LICENSE\na:0:0:444\nZ:Q1ESj4+REEup75jTfuplI6iI3Ppd4=\nR:README.md\na:0:0:444\nZ:Q1GR8g760PBML5BygUJR45l2ITdHY=\nR:SECURITY.md\na:0:0:444\nZ:Q1XutPWhd2go601U9tW+5TA2onNoU=\nR:cloudbuild.yaml\na:0:0:444\nZ:Q1bReP29miaKt6xE1O9WQzy1Sdu7o=\nR:go.mod\na:0:0:444\nZ:Q1j8HZECW6sEoIBMMpmD9pNE8kUXg=\nR:go.sum\na:0:0:444\nZ:Q13LeyJ74V9Sqx8xZQOii+2TtN4Mw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q1oPxns7CoCE5IohafChN5eRuv5OQ=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:crane_bug_report.md\na:0:0:444\nZ:Q1LyVoOXsU87QLVKfChb3m91nqsuA=\nR:ggcr_bug_report.md\na:0:0:444\nZ:Q1hTSXT1nZxRGlbrAWC83jdj0qdV4=\nR:question.md\na:0:0:444\nZ:Q1Ccjvx5GoTpwcPGZJ5AYDDT7ENno=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/.github/workflows\nM:0:0:555\nR:analyze.yaml\na:0:0:444\nZ:Q1AtsPxQwhoWtGPqO7YPgpH0Lz8Z8=\nR:boilerplate.yaml\na:0:0:444\nZ:Q1oDqc6oPbpMXkfuV9BGveO8DWy14=\nR:build.yaml\na:0:0:444\nZ:Q1sso5wz3ydoe9X7DamFQg5pCwWHQ=\nR:bump-deps.yaml\na:0:0:444\nZ:Q1vm/W8FifBq0z7I6cfoIbVyNOElE=\nR:donotsubmit.yaml\na:0:0:444\nZ:Q13oqrYLYCQcGYdQO0mhkajJniANg=\nR:e2e.yaml\na:0:0:444\nZ:Q1Oq8Zaaaj7Hj4jtPuxaRjHMxY0S8=\nR:ecr-auth.yaml\na:0:0:444\nZ:Q13HZKzV5ATj7w228PH5oELDS27fY=\nR:ghcr-auth.yaml\na:0:0:444\nZ:Q1s3C/4+yKQZImGsHXQdd0PVgDmXM=\nR:presubmit.yaml\na:0:0:444\nZ:Q13Hgi26Sa7KH8qAUPGp/cmEGmYc4=\nR:release.yml\na:0:0:444\nZ:Q1CTGme2i5F0ChtkTAFMIsYYGcRE8=\nR:stale.yaml\na:0:0:444\nZ:Q1ft1W6mFqAk8/5DZtbKUVBtnVWrI=\nR:style.yaml\na:0:0:444\nZ:Q1sgKJKTaU7LTHrPTpCGj1a44neQw=\nR:test.yaml\na:0:0:444\nZ:Q1xHBcre2Uk0b6rsBmRZUHiliBz6w=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/.ko\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/.ko/debug\nM:0:0:555\nR:.ko.yaml\na:0:0:444\nZ:Q1Vit6S6ZLgGpA5Q0Fn5ugfEOjSeg=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/crane\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1RuCDOIlqk7mjWff/vo+vobvva3s=\nR:depcheck_test.go\na:0:0:444\nZ:Q1g31CxBtza5k8P6pCKeWV06S6Ffo=\nR:main.go\na:0:0:444\nZ:Q1NgW79DCjc98Fk+KOAg4RQdQKMAk=\nR:rebase.md\na:0:0:444\nZ:Q1WqCKehz07NmSpR/fEzYehVG6PZc=\nR:rebase.png\na:0:0:444\nZ:Q1dOR7db+L4RVJV0d9E0IKsOMrfdw=\nR:rebase_test.sh\na:0:0:444\nZ:Q1hADKpEkuWPsgh3Oo0sTT6zno3/Q=\nR:recipes.md\na:0:0:444\nZ:Q1yQfRN3G6LGS2JcXGJ0cw/L5Ha2U=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/crane/cmd\nM:0:0:555\nR:append.go\na:0:0:444\nZ:Q1JcXhtfir/67uqhSqaFBu/zp/p8I=\nR:auth.go\na:0:0:444\nZ:Q1gC+hwJ5g3Pu963tMELZpunFLe9I=\nR:blob.go\na:0:0:444\nZ:Q1GmxVbueqK8+hFp/PH0aTaeotmbE=\nR:catalog.go\na:0:0:444\nZ:Q19tVQUqYDX6A2hI0dsu+TMpB8Hn4=\nR:config.go\na:0:0:444\nZ:Q1kEK/J1FdOpPOe6c5BYde4q4Xa7E=\nR:copy.go\na:0:0:444\nZ:Q1aPGeA6KhfDWK7mJjAYcvHASvyFE=\nR:delete.go\na:0:0:444\nZ:Q1GYKCsOJc+PVAq3fEBMNqIStSdfs=\nR:digest.go\na:0:0:444\nZ:Q16m+nxWKZwLd3sQKisDq96FGdj9g=\nR:export.go\na:0:0:444\nZ:Q1QA/mIYpH2dinIiLV+Tu9N4/yUys=\nR:flatten.go\na:0:0:444\nZ:Q1Nmi+vFpWI/+6YdFMDI6bBknN6JE=\nR:list.go\na:0:0:444\nZ:Q1j+BmiFxx/8wR5i46Rdbn6O+YyzM=\nR:manifest.go\na:0:0:444\nZ:Q1HK+ky7zcO68nAXnMxcS1I6ZnRXw=\nR:mutate.go\na:0:0:444\nZ:Q1ZJL2bODPikFHuqo3V+CjSSbkOzE=\nR:optimize.go\na:0:0:444\nZ:Q1hPncOI6H3YZYksXxOY2ksO48As0=\nR:pull.go\na:0:0:444\nZ:Q1UsqeErfLX7iw7rAy3AKPlefD/lM=\nR:push.go\na:0:0:444\nZ:Q18hk2xCWczp/hnuLymfwvfnBlJaY=\nR:rebase.go\na:0:0:444\nZ:Q1FPBZZubP2i/1UMrsH2GACbvI3x4=\nR:root.go\na:0:0:444\nZ:Q13RaPiwNZ1D4zFGdcAWBw6gJ6p9s=\nR:tag.go\na:0:0:444\nZ:Q1+fNFc4VCkUPL5gJ2IACoAKMSXTo=\nR:util.go\na:0:0:444\nZ:Q1Si4ujqxJVV5mlM4koDLzTK0yjyA=\nR:validate.go\na:0:0:444\nZ:Q1ory5P36FNAaDwjR4fx+vHSQcVas=\nR:version.go\na:0:0:444\nZ:Q1A2rTwVB7428MgEPfML7BMDwAJyc=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/crane/doc\nM:0:0:555\nR:crane.md\na:0:0:444\nZ:Q1cl6xreFLvNcTFMUzaKD3mBV1BDI=\nR:crane_append.md\na:0:0:444\nZ:Q1jKuDGMgQlghMEzUBib+BsnIuYII=\nR:crane_auth.md\na:0:0:444\nZ:Q1t6z3qIP1W7M3e2GtpJ7DoiybSdY=\nR:crane_auth_get.md\na:0:0:444\nZ:Q1Eb71LLYpA4h4Vfmu3lvJKftpqvI=\nR:crane_auth_login.md\na:0:0:444\nZ:Q1WIqaJnaN1C6ETFs5yp0gAN4CMwE=\nR:crane_blob.md\na:0:0:444\nZ:Q1eY8p2qJk+iHXs2PqllG6xnPgqoc=\nR:crane_catalog.md\na:0:0:444\nZ:Q1SDjhK6agDWmo5fvaDiuwsi+/7G4=\nR:crane_config.md\na:0:0:444\nZ:Q1LYcBtoGxpW0+NWIMYg2I5dYbYMA=\nR:crane_copy.md\na:0:0:444\nZ:Q1Vfi4xbqoUrGsXjN706s1WI3eX0I=\nR:crane_delete.md\na:0:0:444\nZ:Q13XTFCU1oobfOF3fqiOOiiT32dV0=\nR:crane_digest.md\na:0:0:444\nZ:Q1vjg6RB1cHBic0KJSNFRKqnGvpH4=\nR:crane_export.md\na:0:0:444\nZ:Q1U8EXvv4EAg8R+/SO0G3q3Xb1zmE=\nR:crane_flatten.md\na:0:0:444\nZ:Q11bNqYZIDD7cEoe/XK9uMf6qkDi8=\nR:crane_ls.md\na:0:0:444\nZ:Q1AM7p0m6f3mnl1TqMJR3BHiRP5VM=\nR:crane_manifest.md\na:0:0:444\nZ:Q1/pagacp383pGDedPDAuyucM7eJE=\nR:crane_mutate.md\na:0:0:444\nZ:Q1wDzo4TPd2WTBqemgCk2kQj/fl+U=\nR:crane_pull.md\na:0:0:444\nZ:Q1u1D9R6TdY6fQiLgUqedhm6yJ7lU=\nR:crane_push.md\na:0:0:444\nZ:Q1Y7j5AuRzAy386MUVRGczhn81f8E=\nR:crane_rebase.md\na:0:0:444\nZ:Q1VWmg7lZwlCzykHC1/Iymky1+aos=\nR:crane_tag.md\na:0:0:444\nZ:Q1FYG09JV1P4qZ4+EDCW9UquNO+kg=\nR:crane_validate.md\na:0:0:444\nZ:Q1Gv2uKcVKqb4sSU4nhEQCJBgcjUs=\nR:crane_version.md\na:0:0:444\nZ:Q1U0AoQbwAM61Hw664ComWw7zjPp0=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/crane/help\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1D0OIJIliYP8JKY5iBAwouGq8+sc=\nR:main.go\na:0:0:444\nZ:Q1C28tPEM8XvObfBVd/kYRKdkBRwM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/gcrane\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1o7f/nvGJ9Q4ZBOpgxp/cqrZuDv4=\nR:depcheck_test.go\na:0:0:444\nZ:Q1u7zSmDQT8GCB2PuTLKc0xg26+LE=\nR:main.go\na:0:0:444\nZ:Q1HjrTl+ibVvXhp9L8s1c3eVPR49c=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/gcrane/cmd\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q1miPzy3z9JHX7uIJp0xz49kAQESg=\nR:gc.go\na:0:0:444\nZ:Q165PHNhnMJI3uUROGwfcUuke9aK0=\nR:list.go\na:0:0:444\nZ:Q1KIxiAMsTzO3XzskDIAm+tosnrSw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/ko\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1JaK1ldGa/ZRhS76XvZID3zOWuLE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/cmd/registry\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1DZJw3hXBYr0Ql6xp629r0/kRf40=\nR:test.sh\na:0:0:444\nZ:Q1AyvGD8le5e8rpknsc19CueW1MEY=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/hack\nM:0:0:555\nR:bump-deps.sh\na:0:0:444\nZ:Q1++OfWX8ZSikym2ibxEMPlrr1EOE=\nR:presubmit.sh\na:0:0:444\nZ:Q18XABPSWkbPR966BqdfNoo1uQJU8=\nR:update-codegen.sh\na:0:0:444\nZ:Q1lTdDKQfy0DayPZJO30vnVtAi6ZM=\nR:update-deps.sh\na:0:0:444\nZ:Q1kv2WReZf9slpUN59XQoxBn7WKPA=\nR:update-dots.sh\na:0:0:444\nZ:Q1tyeUKrCEDrgOyEFaI8Ivn7n4LDo=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/hack/boilerplate\nM:0:0:555\nR:boilerplate.go.txt\na:0:0:444\nZ:Q1DO/RJvEGxaIoxknEAwiOxiTkBXo=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/images\nM:0:0:555\nR:containerd.dot.svg\na:0:0:444\nZ:Q1k7zIaU+KuV6UZY3VGnko7rHdXVw=\nR:containers.dot.svg\na:0:0:444\nZ:Q1aKxXMcSlXfKqXcSTDiUjxnac2+U=\nR:crane.png\na:0:0:444\nZ:Q1olc8ye+Q5aa6UxLVE8VkHxZlYVo=\nR:credhelper-basic.svg\na:0:0:444\nZ:Q1hVQjS5vf4j5UfJcSCpP/XI9vD6o=\nR:credhelper-oauth.svg\na:0:0:444\nZ:Q1hBD021v/WznFU43ssNrbgkUZkvk=\nR:docker.dot.svg\na:0:0:444\nZ:Q1vIHQloMi3bah682+hvvzUoo6fAU=\nR:gcrane.png\na:0:0:444\nZ:Q14VlJA10OyOheGze4doB6aOTda2c=\nR:ggcr.dot.svg\na:0:0:444\nZ:Q1BQ3oJkyxJnuTb+Qv+Z20bt8wrwM=\nR:image-anatomy.dot.svg\na:0:0:444\nZ:Q1NemH1Zm8L3sxPwwPKzaiANwcc9c=\nR:index-anatomy-strange.dot.svg\na:0:0:444\nZ:Q1YfjFjG7YSqfSFVPNaxdHS9So1u4=\nR:index-anatomy.dot.svg\na:0:0:444\nZ:Q1Pv3lbg1qDTkAKulRk0FVDrUZrYA=\nR:mutate.dot.svg\na:0:0:444\nZ:Q18W7VECM6Pbn7u7b51/DEMSM/Up0=\nR:ociimage.gv\na:0:0:444\nZ:Q1TCckIQqCFdHt9OQ+Z+kbdtshoJ8=\nR:ociimage.jpeg\na:0:0:444\nZ:Q18ykfNZ2J654Qu59UBFUShl1+TyE=\nR:remote.dot.svg\na:0:0:444\nZ:Q1feS2Cjix5VjEPwFh+99P5cagWEg=\nR:stream.dot.svg\na:0:0:444\nZ:Q1Eu6B0tqKzhRqyxN28KUI8n9mjaU=\nR:tarball.dot.svg\na:0:0:444\nZ:Q1DlXQbHIISK9KntLaN6Uizel4R88=\nR:upload.dot.svg\na:0:0:444\nZ:Q1+mQyNSHDohplbgQWdLkt5gEj2yk=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/images/dot\nM:0:0:555\nR:containerd.dot\na:0:0:444\nZ:Q16FVdW+3R+udoka8OxParlJ7PGXw=\nR:containers.dot\na:0:0:444\nZ:Q1Pb8zGO/pf/pxFCg9eUAWAmzWMlg=\nR:docker.dot\na:0:0:444\nZ:Q16NRsZ1+Q17G6FeXFT7EeK4UcYQ0=\nR:ggcr.dot\na:0:0:444\nZ:Q1zZ6MhpEqPOcn9liR6+hI8gz6frk=\nR:image-anatomy.dot\na:0:0:444\nZ:Q1QR3AKZlL+C/UwGjRg1Ls2Zb2m7A=\nR:index-anatomy-strange.dot\na:0:0:444\nZ:Q1AdSQYTCnKvXkDgKd46AMYwKTLkY=\nR:index-anatomy.dot\na:0:0:444\nZ:Q1/pcgmQ7q/2mLYSumavMhy1fchjM=\nR:mutate.dot\na:0:0:444\nZ:Q1EJ1cpxljb2B70fOW8ABapOKqeY0=\nR:remote.dot\na:0:0:444\nZ:Q16LkDO/WgUF9sk1viV+gLgvmwq6s=\nR:stream.dot\na:0:0:444\nZ:Q1Egi6KnRnFT4l8pid+2u1mxC6Qo4=\nR:tarball.dot\na:0:0:444\nZ:Q11t5Qvf3+NkpRPr+xn9v6xKB51oA=\nR:upload.dot\na:0:0:444\nZ:Q1V2XjHmiMbKpsueD5jza6US1Cj1E=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/and\nM:0:0:555\nR:and_closer.go\na:0:0:444\nZ:Q11z87eAewU/omf6cDUvSIz5F43yQ=\nR:and_closer_test.go\na:0:0:444\nZ:Q12vcKMDpuh5R6kD0Tkd71ZPlYEeE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/cmd\nM:0:0:555\nR:edit.go\na:0:0:444\nZ:Q1BXyANcbGWQ2v5Y5NcOt5hZAdlK8=\nR:edit_test.go\na:0:0:444\nZ:Q14oWgick4y2hnDv3pMirIY679QTs=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/compare\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1Yrjn1xORZXMulFoHFXrizfeeDZk=\nR:image.go\na:0:0:444\nZ:Q1xZrEF0nNKO/hWziBOs2/hbQ9VTc=\nR:image_test.go\na:0:0:444\nZ:Q137Lu0oBzEOA4ZGr3VlP6ZqEf+OI=\nR:index.go\na:0:0:444\nZ:Q12ObKG/8Txzd2mFl5D7kClXzBKwc=\nR:index_test.go\na:0:0:444\nZ:Q1OhZNR+5tPL1aVOboTr52nLaOGjk=\nR:layer.go\na:0:0:444\nZ:Q1Qjt6smy15fbFImtArr4CnwHtGOQ=\nR:layer_test.go\na:0:0:444\nZ:Q1Dpf7fWyUsvYZ94Yg5BHxYQN7c8s=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/depcheck\nM:0:0:555\nR:depcheck.go\na:0:0:444\nZ:Q1tY3MnV+aAIxWYfFvjmybzlSak10=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/editor\nM:0:0:555\nR:editor.go\na:0:0:444\nZ:Q163ewyOc8VdFwhfSK+ZMi6yG/lzc=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/estargz\nM:0:0:555\nR:estargz.go\na:0:0:444\nZ:Q1OifOsD7BG6Kr8wOiAbOd1a5VWvs=\nR:estargz_test.go\na:0:0:444\nZ:Q1EY209rhzQ+IAmbO+0qbaCgkU3sA=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/gzip\nM:0:0:555\nR:zip.go\na:0:0:444\nZ:Q1nidYOWvBLGJFYc6HIQvKb59hKlo=\nR:zip_test.go\na:0:0:444\nZ:Q1gERNJHaLaVuLfSQID12m+r9SduU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/httptest\nM:0:0:555\nR:httptest.go\na:0:0:444\nZ:Q13jq2Sj3lQQfYycylSoW1+2xiMhQ=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/legacy\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q1xx4OVfIMPkBFi+iLDoVCVYuGqpM=\nR:copy_test.go\na:0:0:444\nZ:Q13BwpkV64Xmqqsvrz+DmrQrFIFlw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/redact\nM:0:0:555\nR:redact.go\na:0:0:444\nZ:Q1dYLaZwt8RrxhSmmDNSt/Qwt1QX8=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/retry\nM:0:0:555\nR:retry.go\na:0:0:444\nZ:Q1GBhL4w7EQswfPe9tmEqzDCwMzQU=\nR:retry_test.go\na:0:0:444\nZ:Q181iFcX6NnvM+EQW75QPtdddvbMM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/retry/wait\nM:0:0:555\nR:kubernetes_apimachinery_wait.go\na:0:0:444\nZ:Q1l2mJkf1nFpXmgxJ5RikhdLwaNoI=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/signal\nM:0:0:555\nR:go116.go\na:0:0:444\nZ:Q15+E/LXpxmQrfd6pskC5oCsdrJLI=\nR:signal.go\na:0:0:444\nZ:Q19qM3hi/oADTNbyogXqedO2wn5DA=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/verify\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1p+N04Tm7hMUnq5bLSJGuYLrkoeM=\nR:verify_test.go\na:0:0:444\nZ:Q1GYfHT30Sqc4doFerW+pP94E2Py4=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/internal/windows\nM:0:0:555\nR:windows.go\na:0:0:444\nZ:Q1sDXX+uZg5KmvJNKSIAK9q53dTRs=\nR:windows_test.go\na:0:0:444\nZ:Q1pbJmrksbWnRvTmQaSx/ByGRP/1c=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/authn\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1nhXPkKPW1Q/eOu6y985YAB1IS5M=\nR:anon.go\na:0:0:444\nZ:Q1O5g7FcxO5K2qmhNtHuOsjl5KHtI=\nR:anon_test.go\na:0:0:444\nZ:Q1Qf2mXsDKb83iRWxUijbLBYHZ79E=\nR:auth.go\na:0:0:444\nZ:Q1ioPvpQQER5C0doUCTurS+brSzs8=\nR:authn.go\na:0:0:444\nZ:Q15rh3wi3I+5IloPMbRfKJ4HV/CRo=\nR:authn_test.go\na:0:0:444\nZ:Q1HX8Kdx70Vl8wjjfDpWRiWbLSLO4=\nR:basic.go\na:0:0:444\nZ:Q1L5sNhEYTkfmptiEHfyabZdMJxUI=\nR:basic_test.go\na:0:0:444\nZ:Q1E9mi1oQneUsXaU+ikbgEwG2Bb4g=\nR:bearer.go\na:0:0:444\nZ:Q1PTP4khaj6l/NX5XHda/M8zxPtu4=\nR:bearer_test.go\na:0:0:444\nZ:Q1JUSGxNjzXSMOw1Cvrm49zYNlRwc=\nR:doc.go\na:0:0:444\nZ:Q1ENN3IjPJgor7PaL61BZ08Nq6ErQ=\nR:keychain.go\na:0:0:444\nZ:Q1ASSIDbWCG3KFFmexUBHsU/1CWpc=\nR:keychain_test.go\na:0:0:444\nZ:Q1+zI0r7SYe4HiMdUNljq6iq6ljog=\nR:multikeychain.go\na:0:0:444\nZ:Q1+RfIVsngmj/JrIiee7kSCu5pU90=\nR:multikeychain_test.go\na:0:0:444\nZ:Q1o4plcPhUQ1yDkwIly9qojjli30M=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/authn/github\nM:0:0:555\nR:keychain.go\na:0:0:444\nZ:Q1sv0pKAkHfaBce5M44B841xK9NT0=\nR:keychain_test.go\na:0:0:444\nZ:Q1MDH/HfXbEOHqDz/NHmgDPVPXZvM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/crane\nM:0:0:555\nR:append.go\na:0:0:444\nZ:Q1RV6OpYwCLHVH5/ygNZAJaIlw/24=\nR:append_test.go\na:0:0:444\nZ:Q1I4O4aiVFaibCayuqKeZByIyEOjM=\nR:catalog.go\na:0:0:444\nZ:Q1D2XgR4U+pjXtM86PQajcIdqE6sU=\nR:config.go\na:0:0:444\nZ:Q1gZmswiyR8az4g/muQHEr5AmX7VU=\nR:copy.go\na:0:0:444\nZ:Q1YumhWWtXvTiqSrAAh4Y/os01/to=\nR:crane_test.go\na:0:0:444\nZ:Q1RokjYYIOd6F2GWsQlI7Ele8uvL4=\nR:delete.go\na:0:0:444\nZ:Q1hINN9nCr28FI3PIb2wV7YDP8QH0=\nR:digest.go\na:0:0:444\nZ:Q19ACsFY4nNKlzR8OkMUqiI86fz58=\nR:digest_test.go\na:0:0:444\nZ:Q10ptGa9kvEEODsgUQEkFyNy+EvE4=\nR:doc.go\na:0:0:444\nZ:Q1jNjQ9+dBG9IeFXHOT8ocXVF9SwM=\nR:example_test.go\na:0:0:444\nZ:Q1ctp9FKDPWGb1VbgX2IXxx1338ww=\nR:export.go\na:0:0:444\nZ:Q1zaTFMTfhXSb8bc2oqrlwFyyPyy4=\nR:export_test.go\na:0:0:444\nZ:Q10Ntu1UjGoU1+8hRhWFeXsHp54NM=\nR:filemap.go\na:0:0:444\nZ:Q1MV9i0NBqHIdMvYPWWNQ2rr/nCiI=\nR:filemap_test.go\na:0:0:444\nZ:Q1KwjzRz7lXW2pfuTz6EFuUK/1Img=\nR:get.go\na:0:0:444\nZ:Q1eeYdkpehEVLz3ZGEO1W1XNsPCHo=\nR:list.go\na:0:0:444\nZ:Q1txEcvHyQJZKr7Qa6wbFBVowpV+A=\nR:manifest.go\na:0:0:444\nZ:Q1IrUJJ3ZhBvcJ06t4G2Ssg5XvVjc=\nR:optimize.go\na:0:0:444\nZ:Q1JCGzmOS05lhGhBDDDuxxDhs/atQ=\nR:optimize_test.go\na:0:0:444\nZ:Q1LfCCfTdc1lvOS1xW0GVxSNRFSnc=\nR:options.go\na:0:0:444\nZ:Q1Wy7zERfXZr4Uv8qCNHRO/cGL9EA=\nR:pull.go\na:0:0:444\nZ:Q1Lm0/Fzlu9qshnzlYg6dUMwJYB6Y=\nR:push.go\na:0:0:444\nZ:Q1Xy0ZjX1w+Mtx6ba9OmA7vK/7pnU=\nR:tag.go\na:0:0:444\nZ:Q14vospcUgwDpEn3zvuuxzLCrq8nA=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/crane/testdata\nM:0:0:555\nR:content.tar\na:0:0:444\nZ:Q1YevlMXkG31TG4RNrMajRSw98m8Q=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/gcrane\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q1qnH5k5UM4Drzq/5sy11jOOOKyZQ=\nR:copy_test.go\na:0:0:444\nZ:Q1FYOYhRqZWC5LKEQXY9sC+7U08xc=\nR:doc.go\na:0:0:444\nZ:Q1ko8XhRliWAayGi2wdzpo/1diXvk=\nR:options.go\na:0:0:444\nZ:Q1mPFi/g64sESQah0bq6AXZigNZZw=\nR:options_test.go\na:0:0:444\nZ:Q1eiZ1hFsi+Pj7b5xgWSmd6eE9bQs=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/legacy\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1PLK4clKDQflxMPFuZ9ziJkWGVqw=\nR:doc.go\na:0:0:444\nZ:Q18Wp3oRjgnd0o15sC7JiuQL9IxwA=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/legacy/tarball\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1X/P4jxZE2NDiocU2XRaC5vY6BBI=\nR:doc.go\na:0:0:444\nZ:Q1YzQommz2Q4jpEapePtxKe8FpE1Q=\nR:write.go\na:0:0:444\nZ:Q1EMsMM0B1YdHm/aUDWGF9p/MtEf8=\nR:write_test.go\na:0:0:444\nZ:Q1dQutSSbN+7227+TD1GPTufT112Q=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/logs\nM:0:0:555\nR:logs.go\na:0:0:444\nZ:Q1F6h/pMaxsAbtSz54E0s4INrb+9Q=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/name\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1r6I8jiRnzpuDd4VehtjCzu50+H0=\nR:check.go\na:0:0:444\nZ:Q1VirBAiRY7nreNAe3f99JJwV/kbg=\nR:digest.go\na:0:0:444\nZ:Q1f03BdfJU3lCCVzvVouWsDboOMdw=\nR:digest_test.go\na:0:0:444\nZ:Q1saDkFR6tu3ekppa6U/QNy+SZ6H4=\nR:doc.go\na:0:0:444\nZ:Q1V3Ew9vXHGtXqe4wpfvznmuJGLZE=\nR:errors.go\na:0:0:444\nZ:Q1dCnNX/pZchtabKTWu2e1HfG85xg=\nR:errors_test.go\na:0:0:444\nZ:Q16LsiS+hByiARG4MecfRjvNSR3pE=\nR:options.go\na:0:0:444\nZ:Q1WTHBORFOVPu7AhUE4CmvJvMJaGc=\nR:ref.go\na:0:0:444\nZ:Q160xnZb+xnXuzViQG2b1UzePkEK0=\nR:ref_test.go\na:0:0:444\nZ:Q1+9iqmqxc76iwLosKKfUEGavmEL0=\nR:registry.go\na:0:0:444\nZ:Q1E0nD8pHSf3WecNeDSR5nMreFqJA=\nR:registry_test.go\na:0:0:444\nZ:Q1Ms6vWFiCvZgyu8dCwJysk8k9Knw=\nR:repository.go\na:0:0:444\nZ:Q1TFXNluT8P/SCbGzTzaPKYbN36tk=\nR:repository_test.go\na:0:0:444\nZ:Q1+KHoUGTWYXQyOw9oruY+NDTXlTQ=\nR:tag.go\na:0:0:444\nZ:Q17T1UN4q7wyE60gY/WWgHRfsol/8=\nR:tag_test.go\na:0:0:444\nZ:Q1Ge+4BU1OlbIkXLPnl96SEX98Xyw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/name/internal\nM:0:0:555\nR:must_test.go\na:0:0:444\nZ:Q1u828eytBr4Z5jWZ0L/wxAOoMVtw=\nR:must_test.sh\na:0:0:444\nZ:Q1Ll77aSZX8yR74MJI5/C01SdndLc=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/registry\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1W3stiwwnVbcR1VbdxV2EfaWIW4s=\nR:blobs.go\na:0:0:444\nZ:Q1ZQSanerkFJvzoQ+JUMkgt6ig8gA=\nR:compatibility_test.go\na:0:0:444\nZ:Q1I7AalBPc74/L4pZAB6sLM08N924=\nR:depcheck_test.go\na:0:0:444\nZ:Q1DCe0InpPiykXJ0+KEqjLBFccO0c=\nR:error.go\na:0:0:444\nZ:Q1CkILpdIubo2nJzCzcxMmf7bzblg=\nR:manifest.go\na:0:0:444\nZ:Q14Jvm086V4vygjucmcb47E0AkBqQ=\nR:registry.go\na:0:0:444\nZ:Q1Lsv75DFoPboc6VqT/tV4RwYksl8=\nR:registry_test.go\na:0:0:444\nZ:Q1bSn3AZ45pngS17wdWwa3rwwAbd0=\nR:tls.go\na:0:0:444\nZ:Q1UzMfw0VgndpQFTg0cLyBZxbP0VI=\nR:tls_test.go\na:0:0:444\nZ:Q1TBBU5LPXM0a2MMBf1kG58MQl5XM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1mmUg3myLRS0pNtNWvLbyBXGjQtA=\nR:config_test.go\na:0:0:444\nZ:Q1HRk6Bnijs1l0EBqwQDL4Bq1fNaE=\nR:doc.go\na:0:0:444\nZ:Q1LJA1em46rKH62PByull5RUNLnTs=\nR:hash.go\na:0:0:444\nZ:Q1i9kDmPL+ZD/gc0j1cRiUlEeQ/Mc=\nR:hash_test.go\na:0:0:444\nZ:Q17hGnCqwwFJHCrRm0XJFXsxty18Y=\nR:image.go\na:0:0:444\nZ:Q1bJW5OYY1LStdTrti2Af4cksohQQ=\nR:index.go\na:0:0:444\nZ:Q1dxR3H26cjkICIllqBmrqJBLfFt8=\nR:layer.go\na:0:0:444\nZ:Q1pmLZRogW9gRoC15hxUlRvjXA8C4=\nR:manifest.go\na:0:0:444\nZ:Q1hw31HBU6L1z/cWfdtDdjdlogA3c=\nR:manifest_test.go\na:0:0:444\nZ:Q1XcFoTYWItikGpLQHBCUGWgCaolw=\nR:platform.go\na:0:0:444\nZ:Q1iZoXvbwQmshr1zZZaOxVnPkSb4I=\nR:platform_test.go\na:0:0:444\nZ:Q1rPa7AlfSQ4AEfwv9Zn5kC9mm6N0=\nR:progress.go\na:0:0:444\nZ:Q17eOFnWbYzkT5lX3QpEX31JDvkCc=\nR:zz_deepcopy_generated.go\na:0:0:444\nZ:Q1k2lVEzYOpXGpPB22tZgL/O3UfjE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/cache\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q15xNGueTIHsHXqOwYSjZY8L4AddE=\nR:cache_test.go\na:0:0:444\nZ:Q1yb8NLBHoQDWSYDbIj/hDJdOKbqE=\nR:example_test.go\na:0:0:444\nZ:Q1qp+edJo5Y+SSRhaDELpQcyCvsFM=\nR:fs.go\na:0:0:444\nZ:Q11UvvmDFIHcTd2Ck4LGR5bFmgYsE=\nR:fs_test.go\na:0:0:444\nZ:Q1QD97+sOak/1nUTAQX877C9NE9GQ=\nR:ro.go\na:0:0:444\nZ:Q1Yc6YpIxNfUfdOO3QN4kYKDhqs3E=\nR:ro_test.go\na:0:0:444\nZ:Q1FqE6n3CIVAhmlFWhOKERwWgLhuM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/daemon\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1+v3knNTUOtxYarB2ae/RC/qdYw8=\nR:doc.go\na:0:0:444\nZ:Q1GruGxLiAnFGszBgXM5VedePycqM=\nR:image.go\na:0:0:444\nZ:Q12lk9FcKM1CplCsWyVvmtPxE1mvY=\nR:image_test.go\na:0:0:444\nZ:Q1uEssI9Rq8whXquwyaVlMiaIbs98=\nR:options.go\na:0:0:444\nZ:Q1QcF8uUBM4AmfwNmRBjAvhYn3n+k=\nR:write.go\na:0:0:444\nZ:Q191rmUplG1kWf94if5Z+kG/2riV8=\nR:write_test.go\na:0:0:444\nZ:Q1tMa163AjY4sbXo3dz/0mFWFAZ/4=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/empty\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1QztuDWVHO7Ua+Sp0WBd/9EwHClU=\nR:doc.go\na:0:0:444\nZ:Q1Qp8mjTTQSsbXRkbDgd/bOHDHEMc=\nR:image.go\na:0:0:444\nZ:Q13M35ZzAW+7aytYYt9njxBOURKmo=\nR:image_test.go\na:0:0:444\nZ:Q1caQbMuvUCeTefXqrHTJvfFdG5HU=\nR:index.go\na:0:0:444\nZ:Q1i3mBnWKjta0MM22Szhe4yMIWMNY=\nR:index_test.go\na:0:0:444\nZ:Q1wM7C9CWYyVYp43ulRXSPXypdj4A=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/fake\nM:0:0:555\nR:image.go\na:0:0:444\nZ:Q12ockqKvzH9VFpU4RyAOT+aRuV7g=\nR:index.go\na:0:0:444\nZ:Q1nwhOeubmqD/Deh0zNA1cevXU/iU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/google\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1h85kBx2My8xTGVODdFCcMi4wsyU=\nR:auth.go\na:0:0:444\nZ:Q1cGVicUbwpMUvEAoQem4+B7n5ccU=\nR:auth_test.go\na:0:0:444\nZ:Q1shNNmHBRT4+0JFd+voBlmY4yjWg=\nR:doc.go\na:0:0:444\nZ:Q1ekyUZkoYVbP1dLAUXIHoPqMrP2Y=\nR:keychain.go\na:0:0:444\nZ:Q1gulO1xHY/9LF6iN7LnlQilBzA70=\nR:list.go\na:0:0:444\nZ:Q1/jTl5DTdjoiYIqTVXyq7NRsiqVk=\nR:list_test.go\na:0:0:444\nZ:Q125nwcqDXegVvTQS3PlWIKUwZm3g=\nR:options.go\na:0:0:444\nZ:Q12uVNWSP8nEpIZLuWhwM7n832VPE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/google/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1HoN1tc6xsXONygEPN7S8r/bvPPw=\nR:key.json\na:0:0:444\nZ:Q1PQx2iNiwbQfo/cMJQrdl7k2uSJ4=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1sJQo1l9mp9sigMO4TaGPL34VLg4=\nR:blob.go\na:0:0:444\nZ:Q1KXg1h0uwAhR8d4givhfGx+5ZOa4=\nR:doc.go\na:0:0:444\nZ:Q1b6rmorobdb2PZ0e6D0Ln7Xctrt0=\nR:image.go\na:0:0:444\nZ:Q1ZKECS4392lJLleDXwxU2jdfefbU=\nR:image_test.go\na:0:0:444\nZ:Q1f9sYeEzqLR9Qmsi3FlhOTXgzfbA=\nR:index.go\na:0:0:444\nZ:Q1E6pqJxQCNmb1nWdwNI+ED8fl4pQ=\nR:index_test.go\na:0:0:444\nZ:Q1lG9uHIlakc9jsCx8ERo4eYaxd3w=\nR:layoutpath.go\na:0:0:444\nZ:Q1yUKGlb3HuRvIBvplBwCp7Uk6Ors=\nR:options.go\na:0:0:444\nZ:Q1nCBRzr3ASJb5UgRGmw5CRVxruAU=\nR:read.go\na:0:0:444\nZ:Q1IvIzdtBvU9aXaC4VHzuNYOu/D34=\nR:read_test.go\na:0:0:444\nZ:Q1EtMgQOZNXT6IIdoGfFBckviwTVI=\nR:write.go\na:0:0:444\nZ:Q1ck4QpgUVJwe0y2158Ko7row+QfI=\nR:write_test.go\na:0:0:444\nZ:Q1Aa7PvuuUpY6HZYwx/iY+kxW2dnU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1lhwsBZVl07ZYaDTSu65JU/YXmCw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index\nM:0:0:555\nR:index.json\na:0:0:444\nZ:Q1/TLR5fU6WiDP+GO/azUKHhIbfIM=\nR:oci-layout\na:0:0:444\nZ:Q1efKTB1lKxP4fwg3qgHGfvg74NOs=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index/blobs\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index/blobs/sha256\nM:0:0:555\nR:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b5\na:0:0:444\nZ:Q1fx50U/DvxAowcp90Ykgq/IXgxl0=\nR:2b29a2b8dea3af91ea7d0154be1da0c92d55ddd098540930fc8d3db7de377fdb\na:0:0:444\nZ:Q11cZRV1mphIRwy+blMhS78c60y+I=\nR:321460fa87fd42433950b42d04b7aff249f4ed960d43404a9f699886906cc9d3\na:0:0:444\nZ:Q1f3Y/NjYOuZWm+ZCOVCC88cOqJ7c=\nR:32589985702551b6c56033bb3334432a0a513bf9d6aceda0f67c42b003850720\na:0:0:444\nZ:Q10UZ12anwqayC6N6OCgxodJjw2ys=\nR:6e0b05049ed9c17d02e1a55e80d6599dbfcce7f4f4b022e3c673e685789c470e\na:0:0:444\nZ:Q18EwptyNoZXo29cJC4VnZ4EQJq8c=\nR:930705ce23e3b6ed4c08746b6fe880089c864fbaf62482702ae3fdd66b8c7fe9\na:0:0:444\nZ:Q1brzMcMTQ9eRkdJ4yyYMyCNhYYu0=\nR:dc52c6e48a1d51a96047b059f16889bc889c4b4c28f3b36b3f93187f62fc0b2b\na:0:0:444\nZ:Q1j2a8uUlhrL8GXdB2Xf4BCNajVK4=\nR:eebff607b1628d67459b0596643fc07de70d702eccf030f0bc7bb6fc2b278650\na:0:0:444\nZ:Q1lX5T8cP8EO7H7bwpqt1UxoxkYFc=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_media_type\nM:0:0:555\nR:index.json\na:0:0:444\nZ:Q1FDX8PM1RLrmIcEjbBolW1wF9DGA=\nR:oci-layout\na:0:0:444\nZ:Q1efKTB1lKxP4fwg3qgHGfvg74NOs=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_media_type/blobs\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_media_type/blobs/sha256\nM:0:0:555\nR:b544f71ecd82372bc9a3c0dbef378abfd2734fe437df81ff6e242a0d720d8e3e\na:0:0:444\nZ:Q1aPGdVUU04MVadhgOhy3YsfYZ8no=\nR:ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356\na:0:0:444\nZ:Q1Xzay6ikGRe402UMiChS1TuXqW+U=\nR:dc52c6e48a1d51a96047b059f16889bc889c4b4c28f3b36b3f93187f62fc0b2b\na:0:0:444\nZ:Q1j2a8uUlhrL8GXdB2Xf4BCNajVK4=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_one_image\nM:0:0:555\nR:index.json\na:0:0:444\nZ:Q1bvF9dpOmHYwMoVFuCe+SVWX/YXU=\nR:oci-layout\na:0:0:444\nZ:Q1Nsmmufg73Smzf27+SNlzxuHBMkI=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_one_image/blobs\nM:0:0:555\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/layout/testdata/test_index_one_image/blobs/sha256\nM:0:0:555\nR:381d958b555884ba59574ab5c066e9f6116b5aec3567675aa13bec63331f0810\na:0:0:444\nZ:Q1d7fH7QOAePtMvq/OXag2PpNOHtk=\nR:492b89b9dd3cda4596f94916d17f6901455fb8bd7f4c5a2a90df8d39c90f48a0\na:0:0:444\nZ:Q1nHS+UkFt83hXfNucx7K07s3f+58=\nR:98ceaf93e482fe91b9bfd6bba07137c098e49ee2d55e69f09fb6c951e75e0e46\na:0:0:444\nZ:Q1F1uH4z1vDYGL6ll8y3FfgqU6b3o=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/match\nM:0:0:555\nR:match.go\na:0:0:444\nZ:Q1lr2uIz+uU3LQ1mijzsCzSCBcNH8=\nR:match_test.go\na:0:0:444\nZ:Q1yU54AJr/KSIqi9fmteYMRVH6FCw=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/mutate\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1n9K59pYTGV+6YqcZCPodT4dckCk=\nR:doc.go\na:0:0:444\nZ:Q1xOiRrEcRWdaXJtOtvUF3UcS1h5c=\nR:image.go\na:0:0:444\nZ:Q14actsQhwYNUk5mxeIbp0G9VmmIo=\nR:index.go\na:0:0:444\nZ:Q1l8mBGVM5SUG0J+LAEdKxqwRnWXk=\nR:index_test.go\na:0:0:444\nZ:Q1pAtpJAu/MiGgM8Srs0PeT+EanEs=\nR:mutate.go\na:0:0:444\nZ:Q1qdtE3EpSVyWKeBjQefk+tBwdPlY=\nR:mutate_test.go\na:0:0:444\nZ:Q1LwK+8vBz+KbcKRSQsnNcuQde/Fg=\nR:rebase.go\na:0:0:444\nZ:Q1fUDF95K6UnlbJyDUPCK6jTi2M84=\nR:rebase_test.go\na:0:0:444\nZ:Q1dEay1vp0D5TebGafz57LdbYWW9I=\nR:whiteout_test.go\na:0:0:444\nZ:Q1dSFl3U5Aq7Sxb+Rxh0B4EjXqmhs=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/mutate/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1jDTTw8ab+U4kXMM58mrB1qf0VOE=\nR:bar\na:0:0:444\nZ:Q14kLtO//M3ycbf7rzTtctCJU3tC8=\nR:foo\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nR:overwritten_file.tar\na:0:0:444\nZ:Q1wvI6TRlXiKJGI5mc4aq151fTlcU=\nR:source_image.tar\na:0:0:444\nZ:Q1NLhrruAIEgteSddHTc1XU8XJhh8=\nR:whiteout_image.tar\na:0:0:444\nZ:Q14R/5/CMHtUtTyy0jAqiEg6wNKhE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/mutate/testdata/whiteout\nM:0:0:555\nR:bar.txt\na:0:0:444\nZ:Q14kLtO//M3ycbf7rzTtctCJU3tC8=\nR:foo.txt\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/partial\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q11BsKsNknPvcgUDzq7AcEq+PoagQ=\nR:compressed.go\na:0:0:444\nZ:Q1BhdNDEaVI8HOGSjSE+x0g9/yVu8=\nR:compressed_test.go\na:0:0:444\nZ:Q1EyQWPVLu3wrN+A+v9P7Ft/w0ycU=\nR:configlayer_test.go\na:0:0:444\nZ:Q1LHAjnl9pP/pPZvsugSs9cwJa+6Y=\nR:doc.go\na:0:0:444\nZ:Q1/veF46eW1yCk1YdmtAulPyBq2SY=\nR:image.go\na:0:0:444\nZ:Q1G7HKBN3d1XlgxTw/mf8HIPhctwA=\nR:index.go\na:0:0:444\nZ:Q1Zhbi5OEWZs2plZ2PbVfFktaNaVA=\nR:index_test.go\na:0:0:444\nZ:Q1WgtQa0QceLLQolqvYnqrmBW6lIY=\nR:uncompressed.go\na:0:0:444\nZ:Q1ZLTrugKM60aLU1kpQsm5/gAavxA=\nR:uncompressed_test.go\na:0:0:444\nZ:Q1LYBAvSFnjTiZ2Q+r8TmfGULuzKg=\nR:with.go\na:0:0:444\nZ:Q1IIo0Pwfb1sOwpjTnydTiPIjEhtY=\nR:with_test.go\na:0:0:444\nZ:Q1vvFdfiQ08NhSKj62ZabaTKf7lVg=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/random\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1Qwu4C2jDj1sJW22+Hiki91mTJuQ=\nR:image.go\na:0:0:444\nZ:Q1UVOlnuHYsL1/S4cvWeohyXlHnPU=\nR:image_test.go\na:0:0:444\nZ:Q1BPAhAZTny/Imij1iscqyukw2Umc=\nR:index.go\na:0:0:444\nZ:Q124ZIFXigOjaT4zabIIbBfe30CUw=\nR:index_test.go\na:0:0:444\nZ:Q10kKYrm9JH1ktd9IlKRvfe2woL9k=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/remote\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1belYzkVsE6w+uTEL9CL67sn/nuE=\nR:catalog.go\na:0:0:444\nZ:Q1W78mykDTrsD/sc4s3lLAdf+7Mpw=\nR:catalog_test.go\na:0:0:444\nZ:Q1pmH1dPhN6t07RqVLZOighGI1ptY=\nR:check.go\na:0:0:444\nZ:Q1aBM9UPDiaXe4PUuh3vYclq2Auak=\nR:check_e2e_test.go\na:0:0:444\nZ:Q1M4L3F+2Y7qpVbHQo0Zd/ql0EP8Y=\nR:check_test.go\na:0:0:444\nZ:Q1d5TQEulFE8ajah6a5bj1ZO6QlP8=\nR:delete.go\na:0:0:444\nZ:Q1EFn5uZiCSgaR64jzUyev0Kz+gGs=\nR:delete_test.go\na:0:0:444\nZ:Q1JAWZuyUgbmroFl7j7vVvsgTN2mg=\nR:descriptor.go\na:0:0:444\nZ:Q1ukQ16Oj3Ya/V8H+4/HasdETeEFg=\nR:descriptor_test.go\na:0:0:444\nZ:Q1uitZIIRjY8dYKExZbOmKN2Nm/bA=\nR:doc.go\na:0:0:444\nZ:Q1M9ksVaFXbIAPv/TY/bFnV7KR52g=\nR:error_roundtrip_test.go\na:0:0:444\nZ:Q1rC+cvdLkctaGrzfczBmAWNfzln4=\nR:image.go\na:0:0:444\nZ:Q1UwAm1OQ3GZj1q/DjKA8IDfyYXo0=\nR:image_test.go\na:0:0:444\nZ:Q1fFLt+6b8BMu40Y2Vyt79jLDNbv4=\nR:index.go\na:0:0:444\nZ:Q1pY1V/MPXS+jodyK/NozYS7Snwv0=\nR:index_test.go\na:0:0:444\nZ:Q1h6zpVx3qfEgRSMQfBKItG4J/IBc=\nR:layer.go\na:0:0:444\nZ:Q1Dq2TOwca+WL3jFr4LxLXLI17Dc0=\nR:layer_test.go\na:0:0:444\nZ:Q1+SkkBMbV7p8vmq1Pi7ebD85o3JY=\nR:list.go\na:0:0:444\nZ:Q1f+uDYSS2fFfp+LID+ST2fAe4Zls=\nR:list_test.go\na:0:0:444\nZ:Q1ZMe91x3qDV4Dky9lJIJY/J+lWo8=\nR:mount.go\na:0:0:444\nZ:Q1VX6PFnpEj9NbpQj2uLaaBp5OI+4=\nR:mount_test.go\na:0:0:444\nZ:Q1eYDOU+5h7uYaatUnB3uu33tDS/M=\nR:multi_write.go\na:0:0:444\nZ:Q1AvWiJ8ffDpw03Kdhxs0eb6YuDuk=\nR:multi_write_test.go\na:0:0:444\nZ:Q1tM/fG2/FmhAfocpoF44BSaZ/1xs=\nR:options.go\na:0:0:444\nZ:Q1oCkoGpBrMBTt8vx1UOkrGI+guPE=\nR:progress.go\na:0:0:444\nZ:Q1UBJ7Kf9HdnCYrrcOfiRWRGMgaak=\nR:progress_test.go\na:0:0:444\nZ:Q1+1myltcz/INocwqz5BnfKmfFsJ0=\nR:write.go\na:0:0:444\nZ:Q1CIjFC8aRi60AI8W1mL6F45/MyEs=\nR:write_test.go\na:0:0:444\nZ:Q13qYVvNwOv2GDlu0PocIXTBnH3jM=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/remote/transport\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1DFfb70BEKeB4J/e6PkL+5yJr8Ac=\nR:basic.go\na:0:0:444\nZ:Q1dgkzZFUkzf76YLzKt34rBM/btMA=\nR:basic_test.go\na:0:0:444\nZ:Q1ueNMKFYuRNeVgFhQdz20p5pO7SM=\nR:bearer.go\na:0:0:444\nZ:Q1ktM1q37Lj2xo3p77RKnFwRwzPrw=\nR:bearer_test.go\na:0:0:444\nZ:Q1yKGB3N0g8BRswoy9JOyEwzhIIAM=\nR:doc.go\na:0:0:444\nZ:Q1sDEuvrpu+7nffxvw6pYGYQbiRFc=\nR:error.go\na:0:0:444\nZ:Q1r+nTcm3ts0OYrX8ji3OzGvcHeIg=\nR:error_test.go\na:0:0:444\nZ:Q1ZLiobNXb+q7qbDwGxqGBRsyyjmo=\nR:logger.go\na:0:0:444\nZ:Q1nfeWvjky03EIzmSJEu5RgniQwI4=\nR:logger_test.go\na:0:0:444\nZ:Q1/8K1NZvZgpB5f9nWL9Sh4DP+W4E=\nR:ping.go\na:0:0:444\nZ:Q1vMYxb4OIpK2l2PZNXfH6pylHRks=\nR:ping_test.go\na:0:0:444\nZ:Q116kpxfABRWSwDkhwM2U+DenhKJk=\nR:retry.go\na:0:0:444\nZ:Q1iiK8qLLmAA/flm2tuIrFyYKnt8U=\nR:retry_test.go\na:0:0:444\nZ:Q1ZqBpzNK67f3e9KPI26wU/MSv8no=\nR:schemer.go\na:0:0:444\nZ:Q1m4kIXTNUfQr65Zt8y29E+JmNrO8=\nR:scope.go\na:0:0:444\nZ:Q15ybp7KcZn8wje7xke/3Ud9kwBNg=\nR:transport.go\na:0:0:444\nZ:Q15ffPk9JOtr2l2NYxK8bUf8mmmYM=\nR:transport_test.go\na:0:0:444\nZ:Q1y0tW2gu4JcNT5V6JbFPEaOeiH3I=\nR:useragent.go\na:0:0:444\nZ:Q1t0hiWi1NZs9OMBkRdL+OUw7NKss=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/static\nM:0:0:555\nR:layer.go\na:0:0:444\nZ:Q1ZoXcXF1iNgo8h89qADwvt9TXrT4=\nR:static_test.go\na:0:0:444\nZ:Q1g/sUORNO5wHnEaweh+ssVnhGXL0=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/stream\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Q3b1DFHjZGVh04R1EQKkaaS3/Yk=\nR:layer.go\na:0:0:444\nZ:Q1Wg0bfQn0Q6JEuyIdiUZSV+/zjqU=\nR:layer_test.go\na:0:0:444\nZ:Q1yGxe0IHv/llUipZW/o4UNQkf6Ig=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/tarball\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1IaZSx/RN/2WkND40IW8qaoisCZY=\nR:doc.go\na:0:0:444\nZ:Q1yiADMH59K1hQhXUSSNgiOo4Gx3I=\nR:image.go\na:0:0:444\nZ:Q1R1P3DtwHE2xeU007irRGWDrBros=\nR:image_test.go\na:0:0:444\nZ:Q1d0VueM933UQHshddhYOVscGvPz4=\nR:layer.go\na:0:0:444\nZ:Q1aEAGv7RfpvbD0qTt89mUDwnaPeI=\nR:layer_test.go\na:0:0:444\nZ:Q1nvDxNS4/SKjplP2PpEH66zl642I=\nR:progress_test.go\na:0:0:444\nZ:Q16NuLoWWJnEZTjDTANapBAPUMBF4=\nR:write.go\na:0:0:444\nZ:Q1B+o6lYjxvSna4YRBF4VEqkxppoo=\nR:write_test.go\na:0:0:444\nZ:Q15M77aAzFhknw8R4lLPmuOgK3PtE=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/tarball/testdata\nM:0:0:555\nR:bar\na:0:0:444\nZ:Q14kLtO//M3ycbf7rzTtctCJU3tC8=\nR:baz\na:0:0:444\nZ:Q1bq3qwtreY0fofA0k/UVf7/pwafA=\nR:content.tar\na:0:0:444\nZ:Q1YevlMXkG31TG4RNrMajRSw98m8Q=\nR:foo\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nR:no_manifest.tar\na:0:0:444\nZ:Q1PrnsBn9C7d+yNv+rtvBOltr0ceU=\nR:null_manifest.tar\na:0:0:444\nZ:Q1sTI8lvvDaNny7dfaTgq5BDr1yXM=\nR:test_bundle.tar\na:0:0:444\nZ:Q1X1ayPTeYSAYBscz7UMITFTtqGA4=\nR:test_image_1.tar\na:0:0:444\nZ:Q1jAw3rfbzcHh6T2qu7JV5RSCXQgI=\nR:test_image_2.tar\na:0:0:444\nZ:Q1tWimmRI/F4CKT+EE4ffCp51U04s=\nR:test_link.tar\na:0:0:444\nZ:Q1kc77l72myF/0TiG2aqE2C9Qhwxc=\nR:test_load_manifest.tar\na:0:0:444\nZ:Q1jAw3rfbzcHh6T2qu7JV5RSCXQgI=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/tarball/testdata/bat\nM:0:0:555\nR:bat\na:0:0:444\nZ:Q13Ls8OyARvhwFqmavcqraFZ9D5H4=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/types\nM:0:0:555\nR:types.go\na:0:0:444\nZ:Q1inS17QIUS2L8JJVvZwOkZFhb/PM=\nR:types_test.go\na:0:0:444\nZ:Q1bRS1tkIMh1wN3etSAOWfr2VLFmU=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/pkg/v1/validate\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1ZvcTXVzwOSKdv+e9JfOrW3pG3Fc=\nR:image.go\na:0:0:444\nZ:Q1KuXeFswCYlIuj+GJBF/d47uo7Nc=\nR:index.go\na:0:0:444\nZ:Q1en1Apv6wcRT1XmJz5s9mqDS6Ve8=\nR:layer.go\na:0:0:444\nZ:Q1hb1LOFy1Z7P5241X12eHEr6hj3A=\nR:options.go\na:0:0:444\nZ:Q1JdHbyjE0xPsfpME+mr61Ne+JRTo=\nF:root/go/pkg/mod/github.com/google/go-containerregistry@v0.12.0/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q19wCLUQPn73VUbxHtDx0vWVWc7h4=\nF:root/go/pkg/mod/github.com/google/shlex@v0.0.0-20191202100458-e7afc7fbc510\nM:0:0:555\nR:COPYING\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README\na:0:0:444\nZ:Q1qkf69a/LGXw2LLDr53KaUAcRX3U=\nR:go.mod\na:0:0:444\nZ:Q1N9I3zzJu7wW438RImXX7WNF4N8Q=\nR:shlex.go\na:0:0:444\nZ:Q1tXR0MLTLuTJl18qeHdueSOFtfZw=\nR:shlex_test.go\na:0:0:444\nZ:Q183J2s/24S4BqS1FIbDE+UybD9ls=\nF:root/go/pkg/mod/github.com/google/uuid@v1.3.0\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1jFT2Toka9WPQWyvg+Mzu/kb6ZNU=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q132gqyJmDDc/rrzXz2vc3SOWf3Uw=\nR:CONTRIBUTORS\na:0:0:444\nZ:Q1g3u1Tf4Pc8rMaz26j6XaCztW8Rw=\nR:LICENSE\na:0:0:444\nZ:Q1CAIa5z9Y9CPdbntSXoHPJSD3YZ4=\nR:README.md\na:0:0:444\nZ:Q1SPTF3C3YfYA/ek0Dz9YWmBfiuYY=\nR:dce.go\na:0:0:444\nZ:Q1AqLvs+xbMFiVAoj6bTGqbdTocmw=\nR:doc.go\na:0:0:444\nZ:Q1oeYUG11TAfLwc+wBdXk61DoEbkQ=\nR:go.mod\na:0:0:444\nZ:Q1qs3+U+GEZk0Yc+/ivlu+efL09gI=\nR:hash.go\na:0:0:444\nZ:Q1+GhCRY9uk826nyI8Eg7+vM5LvFw=\nR:json_test.go\na:0:0:444\nZ:Q1gmyVWEDWmV8rMIrFzRT4Ax+ITBk=\nR:marshal.go\na:0:0:444\nZ:Q1e6uYzkPit7pSFPAeWCNaBWkfoFE=\nR:node.go\na:0:0:444\nZ:Q180OtAM+BrtmnjoWH9WcTVp4Ovsw=\nR:node_js.go\na:0:0:444\nZ:Q1NeWQd72uqO/vOj09jIe/lQ7aYik=\nR:node_net.go\na:0:0:444\nZ:Q1GbbfNbOZfpubyTavXamlJV8i+5A=\nR:null.go\na:0:0:444\nZ:Q1xUTn+FDsZFVB0JADECOoFjr1HA0=\nR:null_test.go\na:0:0:444\nZ:Q1sxoHlZ2+NuKd0toKJPL98tasuWY=\nR:seq_test.go\na:0:0:444\nZ:Q1LrvUQYeYwgW0+UeuuFSyVs74oGg=\nR:sql.go\na:0:0:444\nZ:Q1fKJFJcQ85J0P3FNkSf9jif5sFWE=\nR:sql_test.go\na:0:0:444\nZ:Q137eMNuOW6JZha2It56LIAIO/Vq8=\nR:time.go\na:0:0:444\nZ:Q19a2Hqq5Fx/Lbxfui87H4xQPIWWk=\nR:util.go\na:0:0:444\nZ:Q1JPB4UF6x114GLRgG2HETkpmk4uM=\nR:uuid.go\na:0:0:444\nZ:Q14+5+MgcyEtudzQqItxqPeTk/isk=\nR:uuid_test.go\na:0:0:444\nZ:Q1Asgc4OAYo09cdwr79pAMmh6GJFw=\nR:version1.go\na:0:0:444\nZ:Q1SLH+y8JSAfoMPGWj8uyRzj42E94=\nR:version4.go\na:0:0:444\nZ:Q1OYoiAg2IQm1Ecj8Fi9AMG60smsc=\nF:root/go/pkg/mod/github.com/hashicorp\nF:root/go/pkg/mod/github.com/hashicorp/errwrap@v1.1.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1UjSJOEKW9APaMe347fb5Aj0yhRc=\nR:README.md\na:0:0:444\nZ:Q1ez0iPtn9UT384B3zzcoBiJgzD44=\nR:errwrap.go\na:0:0:444\nZ:Q1IxSPK3g17HmSU1cJdwCiflPy9cw=\nR:errwrap_test.go\na:0:0:444\nZ:Q1xgs3PmpKjuOAys2uq2qiHo24bdA=\nR:go.mod\na:0:0:444\nZ:Q1DS2ze3xKPR+pxiSE6FUgy+w8OVg=\nF:root/go/pkg/mod/github.com/hashicorp/go-multierror@v1.1.1\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1Lr4wLvTY0lesbwqRYoW1GTeiVkE=\nR:Makefile\na:0:0:444\nZ:Q1isLtjIxzi6pYtQhLJedGihzKyC8=\nR:README.md\na:0:0:444\nZ:Q1nRy9RZgah5RbOzcSnb59To/voQo=\nR:append.go\na:0:0:444\nZ:Q1WTk95pJAQhHnDayX3nuFurUAbSw=\nR:append_test.go\na:0:0:444\nZ:Q1+9DkWcHc68uWy02Y9pr9sf9EJ9Q=\nR:flatten.go\na:0:0:444\nZ:Q1BwQUq92buVm/h9pM8LYfT+f/V2g=\nR:flatten_test.go\na:0:0:444\nZ:Q1byU0bh7tL2zkX8/dpO2AVVKzXDc=\nR:format.go\na:0:0:444\nZ:Q1vkQusyvqk6R+wwI9LQINdJPe/UE=\nR:format_test.go\na:0:0:444\nZ:Q1PkDu7ECCr1I2BdnTH5fs+WT0LxA=\nR:go.mod\na:0:0:444\nZ:Q1mdQsMF0SH6lrhdlq/aT5wO/17+c=\nR:go.sum\na:0:0:444\nZ:Q1R7OU8ZU2+eElDPMqHAJC5ZstKsc=\nR:group.go\na:0:0:444\nZ:Q1jVl4hSDyUA9/RG7Xiy1XkwW62v4=\nR:group_test.go\na:0:0:444\nZ:Q1rrQoNLxB0Fk30lfJbnzFG/Hbme8=\nR:multierror.go\na:0:0:444\nZ:Q1qVVl1v9R8LaMZn7SuWNKhrBPVDw=\nR:multierror_test.go\na:0:0:444\nZ:Q1z8QVzHlSvkqPs0P1uehw7zjz8BQ=\nR:prefix.go\na:0:0:444\nZ:Q11rcnSHJ0sjwUcNeOmVvOQMP9l3s=\nR:prefix_test.go\na:0:0:444\nZ:Q1yICRKYNvA2msIDYMvGnwRIQsUsE=\nR:sort.go\na:0:0:444\nZ:Q1VcY2Lupli/ZtR3AaHzpVXfCmRvk=\nR:sort_test.go\na:0:0:444\nZ:Q1QcrZINzfh5AHQ6grsmqN1iPdst4=\nF:root/go/pkg/mod/github.com/hashicorp/go-multierror@v1.1.1/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1SB+P1EMRH7W5xqhVXbTh8tjEl1c=\nF:root/go/pkg/mod/github.com/huandu\nF:root/go/pkg/mod/github.com/huandu/xstrings@v1.3.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q12abSrn4q3YgXnkKfeH5qWyx7ETM=\nR:.travis.yml\na:0:0:444\nZ:Q1408w+Zdcvzu0OAnRUCPfkq+NE3o=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1PZXIp6IiHpzHynxTFc4h90ProLc=\nR:LICENSE\na:0:0:444\nZ:Q1h1i1LGI8CO/5ytvQ8OFUEIXpmE0=\nR:README.md\na:0:0:444\nZ:Q1Yy+j1bnQOnLBsrWp5WGYKjCsCUI=\nR:common.go\na:0:0:444\nZ:Q1G7QemkDdHECzzx1AMa1FtZec4zI=\nR:convert.go\na:0:0:444\nZ:Q19geORr/9Laz5Hdq/Ww0WfpcnYsA=\nR:convert_test.go\na:0:0:444\nZ:Q1WkmHj9Go6rM5Xxt/8XInzVgwL30=\nR:count.go\na:0:0:444\nZ:Q1jD7XXH2B3DD0fUIcH4pplwtNj1I=\nR:count_test.go\na:0:0:444\nZ:Q1/whZIny9vfP3zarM//4GhPsnaWc=\nR:doc.go\na:0:0:444\nZ:Q1+rq02tbSBQfKqey77WRQ6pV8u08=\nR:format.go\na:0:0:444\nZ:Q1FPVrGKUyEpOiVgTh73gUJ59zhlU=\nR:format_test.go\na:0:0:444\nZ:Q1wIYFk+RAiD8L4BT79JR/JuCNiw0=\nR:go.mod\na:0:0:444\nZ:Q1LurDZNf3U8L2d4vB+2V+ozr1H20=\nR:manipulate.go\na:0:0:444\nZ:Q1W2+O6FwYJlFDc7c92PQ8p623JDE=\nR:manipulate_test.go\na:0:0:444\nZ:Q1IhOagvDSPZSa1lMnNa+tIDcrt7I=\nR:translate.go\na:0:0:444\nZ:Q1+7IVop8CfYQk6QtaAooGFfyy9hI=\nR:translate_test.go\na:0:0:444\nZ:Q1x4H/3rL6Fp+3hfli2yDsFMdhvrU=\nR:util_test.go\na:0:0:444\nZ:Q1qWjf3KjTdYfqPlLhElJUQ6/49uY=\nF:root/go/pkg/mod/github.com/imdario\nF:root/go/pkg/mod/github.com/imdario/mergo@v0.3.13\nM:0:0:555\nR:.deepsource.toml\na:0:0:444\nZ:Q1+1jzR8gtUl+A/evlOjCDAjoKcpo=\nR:.gitignore\na:0:0:444\nZ:Q1g91c9VG1I6mUq1fjFSzV/z8fD8w=\nR:.travis.yml\na:0:0:444\nZ:Q1ajS2HnnrH3hcmJXsK532+eYbYzc=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1MtyekBpjJ4TOIGxpk4q+pwdLjFE=\nR:LICENSE\na:0:0:444\nZ:Q17s/Ax+CTDGuh7Q/y1GoKb6DRbWw=\nR:README.md\na:0:0:444\nZ:Q1wR1yH9X6EjuHQMmRBNA8+sjF3cM=\nR:doc.go\na:0:0:444\nZ:Q1ZukHmInhyqJ69QOtE3HpN7HgsB4=\nR:go.mod\na:0:0:444\nZ:Q10NIScUEcTor/eSPOq6JaN6nMKGQ=\nR:go.sum\na:0:0:444\nZ:Q1wmRNjUJYX5U5mTpQZ20RHsX42uU=\nR:issue100_test.go\na:0:0:444\nZ:Q1nHt+/e1QBlmeOrBapZTNDEWTiW8=\nR:issue104_test.go\na:0:0:444\nZ:Q1ItbjxEFc3XWnv8gAVPsk5UwBXXE=\nR:issue121_test.go\na:0:0:444\nZ:Q1x43vAffXM2H+oHj1cTISfkCxPG8=\nR:issue123_test.go\na:0:0:444\nZ:Q19rFNTWH6qLg+AIvSpK3Pakok6Fg=\nR:issue125_test.go\na:0:0:444\nZ:Q1hQv+9YmTjwc3DmxkvuB6hn0Z2Oo=\nR:issue129_test.go\na:0:0:444\nZ:Q1UBzJY/KO9hfiuGFkGpqiTj/XN24=\nR:issue131_test.go\na:0:0:444\nZ:Q1ZLF5qFCCxWKrrvTSMKnUvCaqLAg=\nR:issue136_test.go\na:0:0:444\nZ:Q1l8HmnOosysEf4QAjMCIXnnkPAyc=\nR:issue138_test.go\na:0:0:444\nZ:Q1ONlqGXbRKGxGzgXq5SIpdb9/0fE=\nR:issue143_test.go\na:0:0:444\nZ:Q1DL/lHX2dQgw9snxijOeuAokw5dw=\nR:issue149_test.go\na:0:0:444\nZ:Q1MAnPo4sMkNflY/dPZnXuWvBzt4k=\nR:issue174_test.go\na:0:0:444\nZ:Q1JHe3ymy+r4QZ0/DnDX1XNWc6JM0=\nR:issue17_test.go\na:0:0:444\nZ:Q1bHncb9KFUJzh3ZO+KsakC7K7jaE=\nR:issue209_test.go\na:0:0:444\nZ:Q1qaNy63cwpZ8gGenQ0ZFgCrJRNz8=\nR:issue23_test.go\na:0:0:444\nZ:Q19WEQlEZhou3O7aREh0xt7W5TEp4=\nR:issue33_test.go\na:0:0:444\nZ:Q1LdRuFS/Om8x51v1SNMY0KqvpC7Q=\nR:issue38_test.go\na:0:0:444\nZ:Q1gXzfM1VaOXiODY2SozP/rtdKhWM=\nR:issue50_test.go\na:0:0:444\nZ:Q1GPlmug6wNYrnGK/tO+hGZgQROhI=\nR:issue52_test.go\na:0:0:444\nZ:Q1dp4wSAkMJZgL4E6aQr0IK056CIM=\nR:issue61_test.go\na:0:0:444\nZ:Q1PiXZ7Vcid/h6YyEWxNbjlaotSTE=\nR:issue64_test.go\na:0:0:444\nZ:Q1/D2m+VBqIgChc8SWB5ZCYubh8oM=\nR:issue66_test.go\na:0:0:444\nZ:Q1FzQelyAgACD00A1a13cUkmShziA=\nR:issue83_test.go\na:0:0:444\nZ:Q1HzxEvg2BiIPS5Js+ktSRcWjo3rs=\nR:issue84_test.go\na:0:0:444\nZ:Q1YGW7e/gljcFbM7qCOs67sx/qes8=\nR:issue89_test.go\na:0:0:444\nZ:Q1jPSjQo3grr9+Km8XOUOGWorsTAs=\nR:issue90_test.go\na:0:0:444\nZ:Q1xhp1jvsp1wIuhtWl5jsb0p3rDic=\nR:issueXXX_test.go\na:0:0:444\nZ:Q1cD95l4rypGX2zwfrRgECfdXpKsY=\nR:map.go\na:0:0:444\nZ:Q1JaniwkVHOKYfVzSzCV7WKjDcIBs=\nR:merge.go\na:0:0:444\nZ:Q1TF1gDa9BefpUiQU0YzAKBfSRK/U=\nR:merge_test.go\na:0:0:444\nZ:Q11YGUjaaCrAfkYdy5GKJT/igNb84=\nR:mergo.go\na:0:0:444\nZ:Q1ad87Y5qsdmsOhR3+yGs+XnJlH50=\nR:mergo_test.go\na:0:0:444\nZ:Q1izyXqJahPN32aGybtXOGL1Lq9GM=\nR:pr211_2_test.go\na:0:0:444\nZ:Q1DoEd++2CJJMgbtGBVfNAKf0weho=\nR:pr211_test.go\na:0:0:444\nZ:Q1N4zyYcoRFj4gkiuLIVHDCdP6XKU=\nR:pr80_test.go\na:0:0:444\nZ:Q1otzAaFrZJ/ZlXZpgoBHUoh6qLBA=\nR:pr81_test.go\na:0:0:444\nZ:Q1Pa1pLU2D88rdu3Wg3YDvJs0SMbs=\nR:v039_bugs_test.go\na:0:0:444\nZ:Q1zIK5Mf4ZeEnadjVSPY/xNaWfwPU=\nF:root/go/pkg/mod/github.com/imdario/mergo@v0.3.13/.github\nM:0:0:555\nR:FUNDING.yml\na:0:0:444\nZ:Q1WxGXhAmvnL+Y2sPG6rkmga2f5qE=\nF:root/go/pkg/mod/github.com/imdario/mergo@v0.3.13/.vscode\nM:0:0:555\nR:settings.json\na:0:0:444\nZ:Q1eVLTlsZOJ5SlqjNFHwN0UhstdIc=\nF:root/go/pkg/mod/github.com/imdario/mergo@v0.3.13/testdata\nM:0:0:555\nR:license.yml\na:0:0:444\nZ:Q131xkH8Ngui10E8GQz1jKxYqZCNc=\nR:thing.yml\na:0:0:444\nZ:Q1Mko8uTetL+8GTUyWQxxCeqhNEig=\nF:root/go/pkg/mod/github.com/jbenet\nF:root/go/pkg/mod/github.com/jbenet/go-context@v0.0.0-20150711004518-d14ea06fba99\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q15engCaOZfrF/uhh1WaYFdm7+sO0=\nR:README.md\na:0:0:444\nZ:Q1XSXtLyrBqIfC2XaMCVDsQ7IEpzg=\nR:doc.go\na:0:0:444\nZ:Q1EC7QNDlC5KRvIIpcUMTZP3UinB4=\nF:root/go/pkg/mod/github.com/jbenet/go-context@v0.0.0-20150711004518-d14ea06fba99/dag\nM:0:0:555\nR:dagctx.go\na:0:0:444\nZ:Q1OTilwxoIeAbdKtstF87KXcXr5rk=\nR:dagctx_test.go\na:0:0:444\nZ:Q1W3Aa8hx21t2Frcz5VilTi86LaWc=\nF:root/go/pkg/mod/github.com/jbenet/go-context@v0.0.0-20150711004518-d14ea06fba99/frac\nM:0:0:555\nR:fracctx.go\na:0:0:444\nZ:Q176W7xIYlB6knrzFvTAxw4hxbbg0=\nR:fracctx_test.go\na:0:0:444\nZ:Q1JCMi9yfDuG8pLG9qaVkMe4g5Z5s=\nF:root/go/pkg/mod/github.com/jbenet/go-context@v0.0.0-20150711004518-d14ea06fba99/io\nM:0:0:555\nR:ctxio.go\na:0:0:444\nZ:Q1N+nOKnd7X+jsMBNHIB8CEZa2I/U=\nR:ctxio_test.go\na:0:0:444\nZ:Q1+lgPoa/Fd58/7EEc10WWwSZDfiA=\nF:root/go/pkg/mod/github.com/jinzhu\nF:root/go/pkg/mod/github.com/jinzhu/copier@v0.3.5\nM:0:0:555\nR:License\na:0:0:444\nZ:Q1nqdi+WqXaZLOGYeUm4lNMRkrsxA=\nR:README.md\na:0:0:444\nZ:Q1af3t1gmdwVI9XxLz/CHT9PcrGTI=\nR:copier.go\na:0:0:444\nZ:Q1CVdtmwuDi6jcBA9ivvVLRHzZx+c=\nR:copier_benchmark_test.go\na:0:0:444\nZ:Q1KqVkzNToPZ4IN5q/IJ9t4/8XKUg=\nR:copier_converter_test.go\na:0:0:444\nZ:Q1JeFv6IVV3I26jAxwj0n99qgM2A4=\nR:copier_different_type_test.go\na:0:0:444\nZ:Q1ZuDY3MZCFaniYXGXZeT4tmftQYY=\nR:copier_issue84_test.go\na:0:0:444\nZ:Q1pa6Oe6nHCegP/Ebww4Gpgibx7zY=\nR:copier_tags_test.go\na:0:0:444\nZ:Q1aZPvu4LMhIZLXfqtK4NfkxcPRjg=\nR:copier_test.go\na:0:0:444\nZ:Q1nmN5ubtl0DTnlvNcaP1y+8K0CZU=\nR:errors.go\na:0:0:444\nZ:Q1tV+bmDdlyttMsw35oI0bVEZq1Dc=\nR:go.mod\na:0:0:444\nZ:Q1XZavAYL0am+nu5lc9tCYYYFqhV0=\nF:root/go/pkg/mod/github.com/jinzhu/copier@v0.3.5/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/jinzhu/copier@v0.3.5/.github/workflows\nM:0:0:555\nR:tests.yml\na:0:0:444\nZ:Q1Qzqt9u9G/tFMvHSfWGuPhXxRlTA=\nF:root/go/pkg/mod/github.com/jmespath\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q15Q75eA9GzSQ6Hhg3E3nWfeEe5Ec=\nR:.travis.yml\na:0:0:444\nZ:Q1nbY+RkilvduMSHQ9AgQXo1rATPU=\nR:LICENSE\na:0:0:444\nZ:Q1QFIQGmYKfYNDwTraEwEj918d1Ag=\nR:Makefile\na:0:0:444\nZ:Q14pK0FBOYeOHuEtzuS1PYWfAkUe8=\nR:README.md\na:0:0:444\nZ:Q1UFycuEEExcr0h3YEZL//AAguxMc=\nR:api.go\na:0:0:444\nZ:Q1VRzbA8M8d3tYYESlh/0R7fLRJMs=\nR:api_test.go\na:0:0:444\nZ:Q1w7Xp5/15+K5N/J62sr9Ag4oBma4=\nR:astnodetype_string.go\na:0:0:444\nZ:Q1V6tz5VeJbpg6IQDKOxlEO8vHkR8=\nR:compliance_test.go\na:0:0:444\nZ:Q1j40r1AO9ttu1l37PMoENxGZOGvk=\nR:functions.go\na:0:0:444\nZ:Q19OSmRzrNdXlH8QC2/Yn7KAtnznw=\nR:go.mod\na:0:0:444\nZ:Q1BKsY5Xk4ZmpuwcWyj7+wcTHWiiw=\nR:go.sum\na:0:0:444\nZ:Q1735BKsptpJxLDsxvW0cycxPnvZ4=\nR:interpreter.go\na:0:0:444\nZ:Q1SQJ1jABtHwNurMLYTrt4hkgJR6o=\nR:interpreter_test.go\na:0:0:444\nZ:Q1cfGKF0DGt9i2hbxjtb/3GucjjsU=\nR:lexer.go\na:0:0:444\nZ:Q15zsUfkq77vhhBpPkmLzbJFosiU4=\nR:lexer_test.go\na:0:0:444\nZ:Q1RlSuXPonB2gP8B3rhQrUdxqn5DU=\nR:parser.go\na:0:0:444\nZ:Q1SyfwDuTGefIv1Lw0dlfCEAPyk6M=\nR:parser_test.go\na:0:0:444\nZ:Q1T1SJHYBl3ssEhu2IeLXZmXK72g0=\nR:toktype_string.go\na:0:0:444\nZ:Q17NUJkUEPTnYT/3YE3o69GcTefXE=\nR:util.go\na:0:0:444\nZ:Q1dMU2iRwLENkjK+292tBn1c3lzqo=\nR:util_test.go\na:0:0:444\nZ:Q1lVfWraexeYG+9HeRmDlfTeha1cs=\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0/cmd/jpgo\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1nIcxXXmWuOgNUM8dy4nx11bsHvg=\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0/compliance\nM:0:0:555\nR:basic.json\na:0:0:444\nZ:Q1UX3QsIsN4cSgRviUw85B2pUHRDI=\nR:boolean.json\na:0:0:444\nZ:Q1hc3o3SRhyI2N+pmWQeEM0nnZHmA=\nR:current.json\na:0:0:444\nZ:Q1nqdloboe3X6udfxRqQ6sq17ER7s=\nR:escape.json\na:0:0:444\nZ:Q17w78jfY4Vnf8zaNLrZJF6lGSURI=\nR:filters.json\na:0:0:444\nZ:Q1nUMwitVCoE6wRpiv3LJup8oapFA=\nR:functions.json\na:0:0:444\nZ:Q1XO9mVBGF5l0qPNt5ZpuWGCnUNfQ=\nR:identifiers.json\na:0:0:444\nZ:Q15eQ063v4yX/I6ezZY6B7tNh6UTs=\nR:indices.json\na:0:0:444\nZ:Q1u8qCO79C/5BSMNYcokcC3JRgIOs=\nR:literal.json\na:0:0:444\nZ:Q16r6Vs1WDtYSbd7IK/TdGkJSXsa0=\nR:multiselect.json\na:0:0:444\nZ:Q14aGBU8FfW6DBM0NXgIG4Dq7gyqo=\nR:ormatch.json\na:0:0:444\nZ:Q1IVZSIZ/RS1+w/eJFhMRzrYCO2yI=\nR:pipe.json\na:0:0:444\nZ:Q15w5flUExcKOYVnhU5E9zGN3fKek=\nR:slice.json\na:0:0:444\nZ:Q1dH9C+J+5PJZtafhz+w0XnAJVlOA=\nR:syntax.json\na:0:0:444\nZ:Q19V1h9BqnQd19wjY7D8h9peAzkTk=\nR:unicode.json\na:0:0:444\nZ:Q1r2LfSGZ4O98aeq8OOjns493CnjM=\nR:wildcard.json\na:0:0:444\nZ:Q1uC7sgZcZuvlj0QQIYvfQ1GO0y+k=\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0/fuzz\nM:0:0:555\nR:jmespath.go\na:0:0:444\nZ:Q1dJZZGzcnlykvoGEWt9ZcveemSP8=\nF:root/go/pkg/mod/github.com/jmespath/go-jmespath@v0.4.0/fuzz/testdata\nM:0:0:555\nR:expr-1\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-10\na:0:0:444\nZ:Q1M20bPXLgYbmLWdbHk/ao2iF6cno=\nR:expr-100\na:0:0:444\nZ:Q1vot5NG0S4ZC0O+6tZiwT59Zz3es=\nR:expr-101\na:0:0:444\nZ:Q1kNCO2xAL9XGEHRSOsSSpYhMqVic=\nR:expr-102\na:0:0:444\nZ:Q1XB+6jYbzR2pVhfeh2afuDSUyqTU=\nR:expr-103\na:0:0:444\nZ:Q1cKcA1yU4Ig7tdVmZ4ZWomp+yECY=\nR:expr-104\na:0:0:444\nZ:Q1/cTRumojfJcy3rZ3h5+H6fKzuy0=\nR:expr-105\na:0:0:444\nZ:Q1ubQusxI/Lh794ko4PSd0BeA++7U=\nR:expr-106\na:0:0:444\nZ:Q1bDWfXvwuZ/K07DkG3hwJEKAaOqU=\nR:expr-107\na:0:0:444\nZ:Q1uw+7WkpwNdmwZS/Hdltr4qQcnMQ=\nR:expr-108\na:0:0:444\nZ:Q1+v2evRoOPonqj2G0m6FRz0UVeIw=\nR:expr-109\na:0:0:444\nZ:Q1MaPHjkmJtiKosZEHxdyRmIWoEF8=\nR:expr-110\na:0:0:444\nZ:Q1idgHqHDwpUTrY3aihjMtdT0t8M8=\nR:expr-112\na:0:0:444\nZ:Q1+v2evRoOPonqj2G0m6FRz0UVeIw=\nR:expr-115\na:0:0:444\nZ:Q1y/vhCju8V5V0zQmsd/4bfX4Ai74=\nR:expr-118\na:0:0:444\nZ:Q1CX0+kmekouk8dmo528AsbVcf4gc=\nR:expr-119\na:0:0:444\nZ:Q11IwqKB0OYLDN40WFpPdIMlaBTIg=\nR:expr-12\na:0:0:444\nZ:Q1rXguzax3D8brmmLkT5CHP7l/sms=\nR:expr-120\na:0:0:444\nZ:Q1cchljPv/l45F6D5M2WZdbrTeWwM=\nR:expr-121\na:0:0:444\nZ:Q14f0Q4+qrwO257ecQbjpgx466de0=\nR:expr-122\na:0:0:444\nZ:Q1PW/N7CK1nyHwVOjZiaiVvOWcjx4=\nR:expr-123\na:0:0:444\nZ:Q1hoC2KQkyqq1JsA/UkpO1KhMN3Oo=\nR:expr-126\na:0:0:444\nZ:Q1+OJZxMUMDEr+G9iaRnxgv8WChYI=\nR:expr-128\na:0:0:444\nZ:Q1oFIsSa85RHvB/iYacpwxB8vrUDQ=\nR:expr-129\na:0:0:444\nZ:Q1tnzsnPPdczDwllafS0hkgH/J9xk=\nR:expr-13\na:0:0:444\nZ:Q1uALzhDAssk+6sKRJl+ggvy6FB7s=\nR:expr-130\na:0:0:444\nZ:Q1f+IqqzVE2eSwIaQ0yQTremRMw/M=\nR:expr-131\na:0:0:444\nZ:Q1F1Hj/LF2lUk4aIZQwIH2HwcbJ+U=\nR:expr-132\na:0:0:444\nZ:Q1b++8kQgFKCWXA58UlKgBHgOzx20=\nR:expr-133\na:0:0:444\nZ:Q1epB3NkV90T3pl/3qQPz1umsv6SQ=\nR:expr-134\na:0:0:444\nZ:Q1pdKvU30ZPBorPowXQm+1f3mviBw=\nR:expr-135\na:0:0:444\nZ:Q1ljGwuDYE33B31yXosvUKaO0DXRI=\nR:expr-136\na:0:0:444\nZ:Q1XaD3edPXMjYOzGYLFePHz5zHt+0=\nR:expr-137\na:0:0:444\nZ:Q11e1hXz6xABPh9OgzAldSjLalcfQ=\nR:expr-138\na:0:0:444\nZ:Q1gqtdL2rYznb2Qgck4TgHuDrS/+A=\nR:expr-139\na:0:0:444\nZ:Q1gpHY/HQqpxN/UqnUfu6PRs/g4DQ=\nR:expr-14\na:0:0:444\nZ:Q1udRKQQXfDbLmLetVV+eDB1S2fzs=\nR:expr-140\na:0:0:444\nZ:Q1q2gPYXg58gdfABOiC25UhesVfrs=\nR:expr-141\na:0:0:444\nZ:Q1q2gPYXg58gdfABOiC25UhesVfrs=\nR:expr-142\na:0:0:444\nZ:Q1PhOdWdNdRpRpAtaob5LMxCPxR/g=\nR:expr-143\na:0:0:444\nZ:Q1mKvYw3NFAOuRz0gs+8FgYBedOuA=\nR:expr-144\na:0:0:444\nZ:Q1joe9aaRkSFfaf16vYur9oLOuRQo=\nR:expr-145\na:0:0:444\nZ:Q1oDQ/g2tVwcNbKFWLyxwiv1UJpWQ=\nR:expr-146\na:0:0:444\nZ:Q1PheAUX6IqU8xDN/qZYWn5B09hyI=\nR:expr-147\na:0:0:444\nZ:Q1hQZXVYkoXBJe5D1nG1yLCuioD4A=\nR:expr-148\na:0:0:444\nZ:Q1lVbLjNGNRUfZbr2Dlxd2LqFb2xw=\nR:expr-149\na:0:0:444\nZ:Q1HCa95+LDTCqjHAfW8iuqbfQXCkU=\nR:expr-15\na:0:0:444\nZ:Q1kHt1coODhAVHoZgAeI6SaJ+SaJs=\nR:expr-150\na:0:0:444\nZ:Q1cuc+Hay+F47Giywx8MhJDa+fVz0=\nR:expr-151\na:0:0:444\nZ:Q1KbLPFVyxiKkezjRzyJhdHVg1M34=\nR:expr-152\na:0:0:444\nZ:Q1XRCoo5ws/mfftLpNCj+mlKaiMlk=\nR:expr-153\na:0:0:444\nZ:Q1N/EObQr8dnAbTavfvGwTnQwQ8t4=\nR:expr-155\na:0:0:444\nZ:Q10/SlSks16nD6gqs+CCEzvR7+0ko=\nR:expr-156\na:0:0:444\nZ:Q1tAIwyhnyrWSW3SvH95kwle0cJnY=\nR:expr-157\na:0:0:444\nZ:Q10bETdLn1FkdYnh7jUw8jItj+2Yw=\nR:expr-158\na:0:0:444\nZ:Q1eqVxTvEl9GTF3CVP3KyqUmLHewc=\nR:expr-159\na:0:0:444\nZ:Q1kTQcbjj1Yqj7TWQVFIAmebHZ4gM=\nR:expr-16\na:0:0:444\nZ:Q1ssnaLTbu1IDq1LpJ2LZWepFn3eg=\nR:expr-160\na:0:0:444\nZ:Q16JYUksvsNWD1JfVyUSAR8jYXxv0=\nR:expr-161\na:0:0:444\nZ:Q1ea9z/1bsaqgBUzFdXYJRxiqK1YM=\nR:expr-162\na:0:0:444\nZ:Q1ovaqQLmua6ycUBSqkaJgGn2vR8g=\nR:expr-163\na:0:0:444\nZ:Q140jUFsBBNOYD65oUS9n0vYka5bE=\nR:expr-164\na:0:0:444\nZ:Q1gFMOtXd/fFDPWfg1LoYX1mxqCGo=\nR:expr-165\na:0:0:444\nZ:Q1/mF8d9koPgj+f4Suo7yaP6FC1hE=\nR:expr-166\na:0:0:444\nZ:Q1ige8nP9XMiBEtwGv7fzbtCQg7xA=\nR:expr-167\na:0:0:444\nZ:Q1bkQpdaYEhZq9N8Tfbj4e9VTB/qk=\nR:expr-168\na:0:0:444\nZ:Q14tdCOjYVQUyf2VB1R7utVVtWOmE=\nR:expr-169\na:0:0:444\nZ:Q14x3vrzypEFIsXwT0IWaY9zR8tI4=\nR:expr-17\na:0:0:444\nZ:Q1hOyyjTf1zlStR0gn36ZTZl031ic=\nR:expr-170\na:0:0:444\nZ:Q1XDuPx+BOW8uWU1RPjK1MXnBDMRI=\nR:expr-171\na:0:0:444\nZ:Q1syZcRw5dRxzfFX43mB1zOBTVbNw=\nR:expr-172\na:0:0:444\nZ:Q1XTLGrxjJmN7MTr7S4gVCNUx/yEg=\nR:expr-173\na:0:0:444\nZ:Q1CejaA8H3YJ02ddRnwE3AVwlCXW8=\nR:expr-174\na:0:0:444\nZ:Q1JkDNr947FW07eMEtWMIv61ELSRY=\nR:expr-175\na:0:0:444\nZ:Q1d99t/6ngTVFBkjQmLO8SHG97MFM=\nR:expr-178\na:0:0:444\nZ:Q1tn2/+OOPDPgB401AduII7A1ZAeY=\nR:expr-179\na:0:0:444\nZ:Q1tTsPSfQgEKmommVzyOvgeHSy5uY=\nR:expr-18\na:0:0:444\nZ:Q1mnghFDb21CXsOPXE4CJwgB81JPg=\nR:expr-180\na:0:0:444\nZ:Q1m8JCUP7GyPP/yiWvD+bHIzZt6vg=\nR:expr-181\na:0:0:444\nZ:Q1KGWQRT9Lfu7HmhspoZ2IgQ+Gh9Q=\nR:expr-182\na:0:0:444\nZ:Q168vi/YevYLA9vI70hPRPtre+r5w=\nR:expr-183\na:0:0:444\nZ:Q19qm2pfgshlhrMy5A7THQYpYIUDM=\nR:expr-184\na:0:0:444\nZ:Q1Vr2NoGFrK+EdCKJcQzE75Rvj07Y=\nR:expr-185\na:0:0:444\nZ:Q1oKDGqNjzzMikMKKsStwvWdBSLjs=\nR:expr-186\na:0:0:444\nZ:Q1m3xngs58xKaAbZ5RCCL9/24hjKI=\nR:expr-187\na:0:0:444\nZ:Q1doSnubOWB1k0gDr4c01Eg5KmNuc=\nR:expr-188\na:0:0:444\nZ:Q1EOgXfXaos7ieXrx1j7+gjNJySxc=\nR:expr-189\na:0:0:444\nZ:Q1cZNgYes/FvPJprx7Ojs5cYn35kM=\nR:expr-19\na:0:0:444\nZ:Q1aiMrfg3zvjjFjfEN7E9bdPJ/v9A=\nR:expr-190\na:0:0:444\nZ:Q1io4exeElyrA6btrmFMik4VSj14I=\nR:expr-191\na:0:0:444\nZ:Q1tFzLXZTMm2jEHe0iXzUWyIWoFO0=\nR:expr-192\na:0:0:444\nZ:Q1bqlyis39Ah7sPW/Eolwgmb+C0y8=\nR:expr-193\na:0:0:444\nZ:Q1bG4t8mEFpLPNSVVweR7vHSVUe2M=\nR:expr-194\na:0:0:444\nZ:Q1H+TC3eBjP0kexxh15QC/6FTCmIk=\nR:expr-195\na:0:0:444\nZ:Q1qKVIPijTJGkarUonSkbIPEhsD6A=\nR:expr-196\na:0:0:444\nZ:Q1EnBxTLdfJdFNzhbMiM12DfdtHVM=\nR:expr-198\na:0:0:444\nZ:Q1+9KMRl25RLjnWByJk1nLh3YJCvo=\nR:expr-199\na:0:0:444\nZ:Q1fC7J/dZ1zrl5gqaWA8jt/7kGxsY=\nR:expr-2\na:0:0:444\nZ:Q1M20bPXLgYbmLWdbHk/ao2iF6cno=\nR:expr-20\na:0:0:444\nZ:Q1jOx5Vp+Ge63FxYxUMNBBvluPKIM=\nR:expr-200\na:0:0:444\nZ:Q1v1TpCPZl6PUw0q7HOnbZ6hmPpfE=\nR:expr-201\na:0:0:444\nZ:Q1EfatjsUqKYSrqv18O1FlA3hcIHI=\nR:expr-202\na:0:0:444\nZ:Q1ro24UjyZsCRC0Bp2/Yv7PO/sje4=\nR:expr-203\na:0:0:444\nZ:Q1g1R6jVPyI6qaSTGqbAO2w7MWKvo=\nR:expr-204\na:0:0:444\nZ:Q1ZU4KrugOOGNsUDYp0yIl2zGmFt4=\nR:expr-205\na:0:0:444\nZ:Q1oQR+qxA11YaCpTVX4LKnXtv9Ff0=\nR:expr-206\na:0:0:444\nZ:Q1Kh25AqWc7FxGEiRLSH5SaPVLKuU=\nR:expr-207\na:0:0:444\nZ:Q1uPpoamQ2VzEMaL4BZSpuM9Z2tbE=\nR:expr-208\na:0:0:444\nZ:Q1r942QEUgxRu4QQPku/6uAkxJc9g=\nR:expr-209\na:0:0:444\nZ:Q1eUSrujRQQ7PmlxBfqu5byghQ4fI=\nR:expr-21\na:0:0:444\nZ:Q1pFTDL9Pxcd5tU18rAwycMUVn9ek=\nR:expr-210\na:0:0:444\nZ:Q1lExhdWtDLf8xCpNC/ZQQrFuZDiY=\nR:expr-211\na:0:0:444\nZ:Q1BSLJN5ZLXGDMm2mOq8LBR9d9/8E=\nR:expr-212\na:0:0:444\nZ:Q1MgMe+CzbVDDrMtXZBdJQ4WRHrL8=\nR:expr-213\na:0:0:444\nZ:Q1T+sUHvkt4WeRbSop8goIdYZEkU8=\nR:expr-214\na:0:0:444\nZ:Q1S6BK4a/ntVnzAcOrpOSK5Npgqiw=\nR:expr-215\na:0:0:444\nZ:Q1ufXWyv99O58x2WZwaJ5qy5J/AK8=\nR:expr-216\na:0:0:444\nZ:Q1wqwVCvBw+NAHu30DH11sHHauU8o=\nR:expr-217\na:0:0:444\nZ:Q1lIlabF216klBFUv8nGHbN2bIAGc=\nR:expr-218\na:0:0:444\nZ:Q1piEPt7ymJfLm2w0ViqcGBN8xhlY=\nR:expr-219\na:0:0:444\nZ:Q15K7/Z5WXxZUczcvasWjhRIC5j74=\nR:expr-22\na:0:0:444\nZ:Q11f9AgUDZ7KpUHiZsb/MKMcFA++M=\nR:expr-220\na:0:0:444\nZ:Q1+jxeIz6iB6lzf9AXUVNvNIh/lw0=\nR:expr-221\na:0:0:444\nZ:Q1xSYeUtUaegHczNyDeCHPWo1O2i0=\nR:expr-222\na:0:0:444\nZ:Q1dBhHzD0m3AuWFpHsWYMb85GK5Mo=\nR:expr-223\na:0:0:444\nZ:Q1PZZUsrj0Yoz4br725eg7zSHW8IM=\nR:expr-224\na:0:0:444\nZ:Q1NjLX+h8oY7jlujmWVnbI/lq1glw=\nR:expr-225\na:0:0:444\nZ:Q1ko25XCtGsRqZR+MflQT961Ugp8c=\nR:expr-226\na:0:0:444\nZ:Q1wxVuANPCWIxjng089oISWLBXYcc=\nR:expr-227\na:0:0:444\nZ:Q1I6c3dTIe0mP+8CKequxFAPBjZOg=\nR:expr-228\na:0:0:444\nZ:Q1YKxAH2TYr7xAeg/CUslaamHIqnU=\nR:expr-229\na:0:0:444\nZ:Q1mqd765B3rpT8H+a0UIbGva+73ew=\nR:expr-23\na:0:0:444\nZ:Q1DCBd3M4as/VViv0j49ZeRIYwGCc=\nR:expr-230\na:0:0:444\nZ:Q1Ea9OgR2T40BDiZm+AiAuNkfmeME=\nR:expr-231\na:0:0:444\nZ:Q12vHM8EKtvJ66U76oAdYXDvvGyao=\nR:expr-232\na:0:0:444\nZ:Q1SHZ+ELTscVQr++4rw1ix4hgxolk=\nR:expr-233\na:0:0:444\nZ:Q14FF//Uzey5sK5KYKkaIxA0/KB7A=\nR:expr-234\na:0:0:444\nZ:Q1nMzIR7KQkNJSugegCTSglGxqnQc=\nR:expr-235\na:0:0:444\nZ:Q1Xufc6PdJxALylWw9wTNUiKTXxB4=\nR:expr-236\na:0:0:444\nZ:Q1jU5ATIU8xU90IV99TdjMxTxG6Yk=\nR:expr-237\na:0:0:444\nZ:Q1QtAnTd081aPlhNab/xFNtVVEVes=\nR:expr-238\na:0:0:444\nZ:Q1tyHiNNDg23Fc6SFjyErCfVU8FyA=\nR:expr-239\na:0:0:444\nZ:Q18J5YNtVdTfHlg86J/kTOj2MvtL4=\nR:expr-24\na:0:0:444\nZ:Q14UnOoG2KOKxZbD2mq2wZ2xzLo1w=\nR:expr-240\na:0:0:444\nZ:Q1dSI9obtwEnPltJ0NJIJELoN5FwA=\nR:expr-241\na:0:0:444\nZ:Q1xVXZdB8ZimdVwpLqCq64yhmvVh4=\nR:expr-242\na:0:0:444\nZ:Q1HQJhQpjpHo8tO2muCUH6gUmiBaI=\nR:expr-243\na:0:0:444\nZ:Q1qkrAu/FiMDZePnSJenv+nJd3Ce0=\nR:expr-244\na:0:0:444\nZ:Q1IrqwbDWYxqKyswHKofVC8arR9UQ=\nR:expr-245\na:0:0:444\nZ:Q1IOlp7hgSuN8TTvAjugnrn90kG3o=\nR:expr-246\na:0:0:444\nZ:Q1LLiAA2C3fLicZzVc4tJmb2oqsoA=\nR:expr-247\na:0:0:444\nZ:Q1iIeUpy6AJ1Hk4E0swqF1GyrhBc8=\nR:expr-248\na:0:0:444\nZ:Q1fopIP/y/IvFxn6FnD+pQVrA51o0=\nR:expr-249\na:0:0:444\nZ:Q1vd4AurzXbzL/i8doxgKyKwe9npI=\nR:expr-25\na:0:0:444\nZ:Q1eieHveTmOfu+lrgOAAH9iFAhv0Q=\nR:expr-250\na:0:0:444\nZ:Q1XMpsgrKc2KrGlejJAAlqEnhx3vQ=\nR:expr-251\na:0:0:444\nZ:Q19QIQRJxl1HYmH2tlVjK4ss4EwYI=\nR:expr-252\na:0:0:444\nZ:Q1hhbvgV4vRgpbAuVRzVmIBuRzq5M=\nR:expr-253\na:0:0:444\nZ:Q1EgHNA3YNb0lIctVzcxvXALWd8Fg=\nR:expr-254\na:0:0:444\nZ:Q15WQmYVzW1s8NMPUpZjg0E51B6sc=\nR:expr-255\na:0:0:444\nZ:Q1mNkPiuDxcAvhiOTYyn8j0GpiclQ=\nR:expr-256\na:0:0:444\nZ:Q1u2kb5b7s1wQ3APnxJXezxICgSTQ=\nR:expr-257\na:0:0:444\nZ:Q1VKiT8LIPJFUOYtka/xeyDIb6gNY=\nR:expr-258\na:0:0:444\nZ:Q1TG+SGl7D5BqqM92vfL3qQS610Ak=\nR:expr-259\na:0:0:444\nZ:Q13qWukB30pSHezlogq5usm0jmeYM=\nR:expr-26\na:0:0:444\nZ:Q1Jb9+1jI0f66Z+7Tcq4UzwdvrB1E=\nR:expr-260\na:0:0:444\nZ:Q1I/cHJAXqorsAAsCADCKE/3dDeEM=\nR:expr-261\na:0:0:444\nZ:Q12mkenghoWb2AaLe+/avu6vgEEqo=\nR:expr-262\na:0:0:444\nZ:Q1ZEHukTr8E4WqqY0qiB+jGGstRSM=\nR:expr-263\na:0:0:444\nZ:Q111xXt6J8P23J2UVihq1/ePBUNwU=\nR:expr-264\na:0:0:444\nZ:Q1JsPuQ9XopAGHsqRwURi5U7SVrcA=\nR:expr-265\na:0:0:444\nZ:Q1pXP0TK/VWFSwv+ut7ApBAdMyJTE=\nR:expr-266\na:0:0:444\nZ:Q1mUt9ZLr11ry4vs+NmrIxsWdJtQA=\nR:expr-267\na:0:0:444\nZ:Q16xH97uYSG9YpF9VC2KCBeA2FoQM=\nR:expr-268\na:0:0:444\nZ:Q1Kh25AqWc7FxGEiRLSH5SaPVLKuU=\nR:expr-269\na:0:0:444\nZ:Q1mej8wK+dGhQ7I0hdNivhQF/c2tk=\nR:expr-27\na:0:0:444\nZ:Q1Hq/tfqmGUmUPlfBz9J1mZOvcs6E=\nR:expr-270\na:0:0:444\nZ:Q1Jba4vuIPw8KGr/Y8tvxOn13+asI=\nR:expr-271\na:0:0:444\nZ:Q1lUA4tqs8GdrI5DQfycHz5Knd/Vo=\nR:expr-272\na:0:0:444\nZ:Q1vHFYRd9NR1qNLesGhUwtyFQ03us=\nR:expr-273\na:0:0:444\nZ:Q1X2CwNzzA0fJxmP3hJv6UmtAWeqg=\nR:expr-274\na:0:0:444\nZ:Q1NcB/RhXW5577yxFsv/Gv5TCjIpM=\nR:expr-275\na:0:0:444\nZ:Q10SFI6B/uSleTvdY7sw43uDT4A2E=\nR:expr-276\na:0:0:444\nZ:Q1m6QCRdQk6pp30EMP6tY+uqNGvtc=\nR:expr-277\na:0:0:444\nZ:Q1wqHkKPivX47S8WMyLfk1EbmU6R0=\nR:expr-278\na:0:0:444\nZ:Q1NaHp0ujwQ+hQkFKGd7u4H8qQCeQ=\nR:expr-279\na:0:0:444\nZ:Q1d/LP7s31V8BFUNSmAZhtpNlNjDo=\nR:expr-28\na:0:0:444\nZ:Q1CczeWS8y/yHsTU89YxUXBUZDbX8=\nR:expr-280\na:0:0:444\nZ:Q1YkX0QextwQLhoGi4l1RWlD/PC0M=\nR:expr-281\na:0:0:444\nZ:Q1Ikb3yMgKDxa/SJXcJsreBeHMGOs=\nR:expr-282\na:0:0:444\nZ:Q1djxONb4ugWrO2XouUiLoQVhexO0=\nR:expr-283\na:0:0:444\nZ:Q1qD3jwykNqvZXNf1iRV2Nxa5AZ0M=\nR:expr-284\na:0:0:444\nZ:Q12Ue1xtBei7wBV8gGPujwlM268Po=\nR:expr-285\na:0:0:444\nZ:Q1Sm4zi1cZI9/cVW7V8y6Vq/jFks4=\nR:expr-286\na:0:0:444\nZ:Q1JVl08MqezKTcmW+Pii7TVSsNYKc=\nR:expr-287\na:0:0:444\nZ:Q1VVUu+ASFe3gEfg/CoaVM/DQuGfI=\nR:expr-288\na:0:0:444\nZ:Q19RlP86xMHYvARbDd9+y6bitOKFk=\nR:expr-289\na:0:0:444\nZ:Q154+YFZQ1KPg2Rk9LmuA0TXYQrMc=\nR:expr-29\na:0:0:444\nZ:Q1c1tH1518vxZGCr3iBeKjvCiCcf8=\nR:expr-290\na:0:0:444\nZ:Q1EgHNA3YNb0lIctVzcxvXALWd8Fg=\nR:expr-291\na:0:0:444\nZ:Q1ktQHlPVVW6TclNV/b8nBkQUEj70=\nR:expr-292\na:0:0:444\nZ:Q1xAu92yu9hQYD6D1iJF5SkhS93Zs=\nR:expr-293\na:0:0:444\nZ:Q1zazQOZcwKkiO52QTE+3HOjptqGo=\nR:expr-294\na:0:0:444\nZ:Q1sgSkIajJ2hFr5RBw5SwuM+/zaUM=\nR:expr-295\na:0:0:444\nZ:Q1+PmbKGkgO3ZfPeMXuM2oJ3QbsxI=\nR:expr-296\na:0:0:444\nZ:Q14gwzwRhsI8bdzwm+NMZLm/TEwzk=\nR:expr-297\na:0:0:444\nZ:Q1cMLZ4TsJHMuEFzAB1l0TQ5sk10I=\nR:expr-298\na:0:0:444\nZ:Q1wbDGr7/iX4C/dyZrsF7QQtxh5XU=\nR:expr-299\na:0:0:444\nZ:Q1g47Ha9aDzJTr5lXvBGVua9JzuwM=\nR:expr-3\na:0:0:444\nZ:Q1+y1ahTqO3XmbQISoKNfWdGIQU0s=\nR:expr-30\na:0:0:444\nZ:Q1WmHGLmqYLVw8bAZs7a5XbtBS5J4=\nR:expr-300\na:0:0:444\nZ:Q1mAqJy8S7rHmTf6a08vgqmrZHMck=\nR:expr-301\na:0:0:444\nZ:Q135Mbg6g0ZYXKIzeiDZIXrXuqgMI=\nR:expr-302\na:0:0:444\nZ:Q1rwh5KTRNioylX14uB4TWNRKyooM=\nR:expr-303\na:0:0:444\nZ:Q1BqulZT7fNvDwPZdHd2TPhLwZCkc=\nR:expr-304\na:0:0:444\nZ:Q1GMF8usZ3nx9yJCJbIzHRMqB5kRg=\nR:expr-305\na:0:0:444\nZ:Q1SDwDSR8HnuH39i5uPU3r4xGOHAc=\nR:expr-306\na:0:0:444\nZ:Q1GZO8wrqJLS/b0cgYqmzoM9WJXYE=\nR:expr-307\na:0:0:444\nZ:Q1x8r7KlG3RmeYCcGEi1GfAjYjAvY=\nR:expr-308\na:0:0:444\nZ:Q1zIEiLPXWgV5dODUU5F+GbZY4y4Q=\nR:expr-309\na:0:0:444\nZ:Q1sBaIsubk9Wb8qTyQFjBC/Gm6VO4=\nR:expr-31\na:0:0:444\nZ:Q19bGYAJkw814x4bhzR8ykml7ccKM=\nR:expr-310\na:0:0:444\nZ:Q1p5c6OU1T751HVGBvD2/vDRK+D1M=\nR:expr-311\na:0:0:444\nZ:Q1eZ3rKzfUg18BxsaIAHVNXw05sPE=\nR:expr-312\na:0:0:444\nZ:Q1mOR3n58dly4RvlI+O10MsxmIc1s=\nR:expr-313\na:0:0:444\nZ:Q1UeYr2GJ67gk6wfzU+fvf/xn06Co=\nR:expr-314\na:0:0:444\nZ:Q1DqgY7BqsFc8SqzwYjyLl/nWBqos=\nR:expr-315\na:0:0:444\nZ:Q1d6c7XwsUZOxzUxZjILcbdpWwplg=\nR:expr-316\na:0:0:444\nZ:Q1GheEWfm6eCVxuS33FhyknVjEkOc=\nR:expr-317\na:0:0:444\nZ:Q1QXbLxtkxjUzN+FYORfyp2fAI7aI=\nR:expr-318\na:0:0:444\nZ:Q1/kZNLBQkcGc91Qt1i1d/H2TuakE=\nR:expr-319\na:0:0:444\nZ:Q19/vJ+/pGqMqV4eLqazQfMKGRGGM=\nR:expr-32\na:0:0:444\nZ:Q1hGc1QHQhuugg5YMaaPaJu2YWM1o=\nR:expr-320\na:0:0:444\nZ:Q1U6Cs+tWTebPgUDOL+fI8/Bcu54c=\nR:expr-321\na:0:0:444\nZ:Q1U7rSBW6b3+yOj0ph77NZ/aXh948=\nR:expr-322\na:0:0:444\nZ:Q1CfpIOLRBT07s1glYLNR1K9J12p0=\nR:expr-323\na:0:0:444\nZ:Q1rXPCFdFUNJJp0KFo6ZRVbMVVGnQ=\nR:expr-324\na:0:0:444\nZ:Q1PxzN/7AfxLg/inrx0prsZaML9lk=\nR:expr-325\na:0:0:444\nZ:Q1ogt7LOHQViWF2+Bw0fgmXfNfF8E=\nR:expr-326\na:0:0:444\nZ:Q1K0p8Tlg6pgTIddcdbTVIV96igvo=\nR:expr-327\na:0:0:444\nZ:Q1I/1tesHM5N+BtnwnI8w9hDbZ8J8=\nR:expr-328\na:0:0:444\nZ:Q1tiQHe4PWeEe9znnFqgUBNPwHazo=\nR:expr-329\na:0:0:444\nZ:Q1MNLdfNbBUKCuHqChcyH5QhsbIeY=\nR:expr-33\na:0:0:444\nZ:Q1R2oIKsBiY7eRq9uFo3VWJy5lG+U=\nR:expr-330\na:0:0:444\nZ:Q1IVUp4cmgPx5XC8ydwoYJV2ykjYk=\nR:expr-331\na:0:0:444\nZ:Q1M20bPXLgYbmLWdbHk/ao2iF6cno=\nR:expr-332\na:0:0:444\nZ:Q1hAY5JdW1K2pM8bscm3iK70ahFs4=\nR:expr-333\na:0:0:444\nZ:Q10hFb5ZqSv7hC4i0d7x9miYwtDBA=\nR:expr-334\na:0:0:444\nZ:Q1iolAZIU0xFJObLgrSp2ERjo2BbU=\nR:expr-335\na:0:0:444\nZ:Q1NKJlC+hofrOJdhwuWcAYfnF8YRI=\nR:expr-336\na:0:0:444\nZ:Q1X5/FPdnhuWVf7dZfVCAZzk0XIHA=\nR:expr-337\na:0:0:444\nZ:Q1oivJ5HbfUv46OoTeTS90VVtijWc=\nR:expr-338\na:0:0:444\nZ:Q1Jju+4GxV6QO6T/jOaAJCiwSkjgQ=\nR:expr-339\na:0:0:444\nZ:Q1WeIalUDF+Fxb6WVzVrsJ6nXVaHg=\nR:expr-34\na:0:0:444\nZ:Q1TRHXeLfczZIQeJBmuuKGpx8fgU8=\nR:expr-340\na:0:0:444\nZ:Q147e+rMAS32Hz79oAHGYEX6c166w=\nR:expr-341\na:0:0:444\nZ:Q1HRA7w1C7uF1f5ia1wwtM018NjZY=\nR:expr-342\na:0:0:444\nZ:Q1EYT1uNS23QhwnPFRPyZ0QWcGXg0=\nR:expr-343\na:0:0:444\nZ:Q19imuRLez3P7URNNj5ibt9BHsaag=\nR:expr-344\na:0:0:444\nZ:Q1JJmDEzjKXcjETz0GPgdnmb6pvf8=\nR:expr-345\na:0:0:444\nZ:Q15kqi3y+qhuyVM2EElSQjmOqlnjg=\nR:expr-346\na:0:0:444\nZ:Q1y1BlPoVpgrMPE4JyAnp0CN/PoMw=\nR:expr-347\na:0:0:444\nZ:Q1j7ESSlUAKj85mH+swASdltI/Cew=\nR:expr-348\na:0:0:444\nZ:Q1W++Fqp3mIbE6vUAiFmvhd5ee0n8=\nR:expr-349\na:0:0:444\nZ:Q19yEVsjSRlSUgD6Gluv+/a9+5R7w=\nR:expr-35\na:0:0:444\nZ:Q1BSZ/2j1sparYaB6Vlzth5gkAvLw=\nR:expr-350\na:0:0:444\nZ:Q1EhVQPOv7KqROfE24uytCTLkjygM=\nR:expr-351\na:0:0:444\nZ:Q1EhVQPOv7KqROfE24uytCTLkjygM=\nR:expr-352\na:0:0:444\nZ:Q1p+nXLEfvUHkWhRjGSm46PeVQQsQ=\nR:expr-353\na:0:0:444\nZ:Q1ef1hHBEBjs4XG8xtazzwV01MXC8=\nR:expr-354\na:0:0:444\nZ:Q1IS25jA66nwpJKeLrefB/kT9Z5tM=\nR:expr-355\na:0:0:444\nZ:Q1Ih6mik3c3lAXI243qWqSc9gtYYs=\nR:expr-356\na:0:0:444\nZ:Q1EhVQPOv7KqROfE24uytCTLkjygM=\nR:expr-357\na:0:0:444\nZ:Q1mKF+Vt5Im+oV8IQhyIuU3dI2Jp4=\nR:expr-358\na:0:0:444\nZ:Q1bVr/AMjrxUIhndweLQ8jhGpDQKA=\nR:expr-359\na:0:0:444\nZ:Q1p0N7Bqx2OmXlg1v/YA/fagfHZ6g=\nR:expr-36\na:0:0:444\nZ:Q1zZl83+WgsoLZyHyMSbN8VN2wQHI=\nR:expr-360\na:0:0:444\nZ:Q10hSVfKh4/FT0ISLQu8V/vR9MSV4=\nR:expr-361\na:0:0:444\nZ:Q1samqOqpqQ1qDnMgwzSG/mX025o4=\nR:expr-362\na:0:0:444\nZ:Q1wUrXxKi25ZPtRSC97mPGSS52ydU=\nR:expr-363\na:0:0:444\nZ:Q1VzN6gT57ikl9b5mDS3LiFZvBKqU=\nR:expr-364\na:0:0:444\nZ:Q1RdqrU39rrGAizVkGXhPwlOe96Fc=\nR:expr-365\na:0:0:444\nZ:Q1Qhc9mAbkUdECOUFuNW4YWMgzxt0=\nR:expr-366\na:0:0:444\nZ:Q1TBHH9oZ20CaahalZbhz/T9dfs04=\nR:expr-367\na:0:0:444\nZ:Q1HbLq9Qe3j4AomSd9z/+dAME1plk=\nR:expr-368\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-369\na:0:0:444\nZ:Q1wUrXxKi25ZPtRSC97mPGSS52ydU=\nR:expr-37\na:0:0:444\nZ:Q1zSR4od+RpVkpS8Vzv2fgFK8JaA8=\nR:expr-370\na:0:0:444\nZ:Q1L7MYmRm7PHGPKuxiOwO4nZ1eGPs=\nR:expr-371\na:0:0:444\nZ:Q1CtD/HigWOF05KJpyW5uscuXvKII=\nR:expr-372\na:0:0:444\nZ:Q18pVU78SN7rHrxYLNXwAWCAmwfQ8=\nR:expr-373\na:0:0:444\nZ:Q1jwGyk2N/IIT8zBDmUrzbmFcnraA=\nR:expr-374\na:0:0:444\nZ:Q1a9NB02R63NoHsjt+2Qf3QSUx3z4=\nR:expr-375\na:0:0:444\nZ:Q12TjZ+FMJKOmBgRyr1ysMWKi8gXE=\nR:expr-376\na:0:0:444\nZ:Q1kCpAY1P6hxUjK63xgk7T9agc4BI=\nR:expr-377\na:0:0:444\nZ:Q1A5AfCJQo/6lrw4fKcN3aA9ZeibU=\nR:expr-378\na:0:0:444\nZ:Q1ihROJX13q144m5BCEus0KJKazDQ=\nR:expr-379\na:0:0:444\nZ:Q1IzGTJxZzEeEEuyvGIPkEMy+KXqY=\nR:expr-38\na:0:0:444\nZ:Q1ibyPrHChOqZatrzgHChoQ0c91LY=\nR:expr-380\na:0:0:444\nZ:Q1HRUeQN9eEhGiGHyEE5Zb9hf+SYM=\nR:expr-381\na:0:0:444\nZ:Q1RUfdwDWBgQAscYWJURk8NPww4fI=\nR:expr-382\na:0:0:444\nZ:Q1ghi3X31i7fROQ2oscYKs30Lkdm0=\nR:expr-383\na:0:0:444\nZ:Q1PYKW1VM6vErOrRt0nlvrC91FSfQ=\nR:expr-384\na:0:0:444\nZ:Q1D2QU51UhDMGseWA7wt7KzfxHzOM=\nR:expr-385\na:0:0:444\nZ:Q1H/B0qdxYbIdBGDDqWP/E9CtWlT8=\nR:expr-386\na:0:0:444\nZ:Q1jaSu75OAj7UzSa8+NYCabrauVrE=\nR:expr-387\na:0:0:444\nZ:Q1+jC4xg27JVSCCvaiVnYfv8Xwbfg=\nR:expr-388\na:0:0:444\nZ:Q1I9LGnXtTDkSHqr/BOVbPggeG7E4=\nR:expr-389\na:0:0:444\nZ:Q1d7UIaB7AoEcPvoJTF1XjgWqdyz4=\nR:expr-39\na:0:0:444\nZ:Q1Hpy7CGuzNYqjvllafXAz94mhacI=\nR:expr-390\na:0:0:444\nZ:Q1UlmkMVlX6cHbJhjA8tf+FQtpVWw=\nR:expr-391\na:0:0:444\nZ:Q1KSql3TXOL1yh9+VHOUqeWu91ymI=\nR:expr-392\na:0:0:444\nZ:Q1XKcxBWmKpZ1kRboz/CUD3QgIdOc=\nR:expr-393\na:0:0:444\nZ:Q17Gu2shc172x6E4Km80ELGnr2EAc=\nR:expr-394\na:0:0:444\nZ:Q1WOxKczX2eyVDNlyweF0jXOvsw/k=\nR:expr-395\na:0:0:444\nZ:Q1j83vdwqKfA+COjUOYwnTYMOAGAk=\nR:expr-396\na:0:0:444\nZ:Q1C2SHfb68KkSkT5sHp52Af9UOfiI=\nR:expr-397\na:0:0:444\nZ:Q16l4HpIm/Z2XOwth9fx5XOwZFN8Q=\nR:expr-398\na:0:0:444\nZ:Q1elvYw2Lo6HGIEvvZj38Hy+1Srv8=\nR:expr-399\na:0:0:444\nZ:Q1Fj9DCFsF+52OTG9cl+lOQy/fEHU=\nR:expr-4\na:0:0:444\nZ:Q15F8Npmtz2bQ1WQbdHjbG3zyC6Xs=\nR:expr-40\na:0:0:444\nZ:Q1p7l1VaewWMeJN4sJcf5i2S4yCsE=\nR:expr-400\na:0:0:444\nZ:Q1gBsfS3kLXG1Vnb964O1WdO8pBlM=\nR:expr-401\na:0:0:444\nZ:Q1ubraQ2Byna3bayf/GPXDGlbCdMA=\nR:expr-402\na:0:0:444\nZ:Q1AAMz+3Adw60sHg2XNE/EV1LAPSQ=\nR:expr-403\na:0:0:444\nZ:Q1r96o/aMmBwVk8EzKqMOLXV4+MLA=\nR:expr-404\na:0:0:444\nZ:Q1HYfD4Hc75ug9Yo60vSbwCKj6ACc=\nR:expr-405\na:0:0:444\nZ:Q1YSeMtnTvYk9CtWO2GM99PFceobQ=\nR:expr-406\na:0:0:444\nZ:Q1iV4HMqTFyl3cZwnHZCuTWNZqnZo=\nR:expr-407\na:0:0:444\nZ:Q10Ynx1r+NtMnU+JQ0m0y6HjET6QM=\nR:expr-408\na:0:0:444\nZ:Q1apWC1BJvKC687xYZD+lJToVi8j8=\nR:expr-409\na:0:0:444\nZ:Q1tcQkCeypV+ziroIgAx0X5An1xuA=\nR:expr-41\na:0:0:444\nZ:Q1R+Eg73QW4+08nw65CPUV6VfLMOo=\nR:expr-410\na:0:0:444\nZ:Q1lrq63VX0Ur1l86p55/d1MK5Yepc=\nR:expr-411\na:0:0:444\nZ:Q1aaV8S3ng9f4y3KH2LQgxZ8v/wrY=\nR:expr-412\na:0:0:444\nZ:Q1PUL/EfCGko+swehatSaccxRybuc=\nR:expr-413\na:0:0:444\nZ:Q12uJOY8K6/6WJrmckSCl7uGun7lc=\nR:expr-414\na:0:0:444\nZ:Q1R1wLziB9LzjsfPGLjK2WE3K+CxA=\nR:expr-415\na:0:0:444\nZ:Q17N08+iRiO+MdF+n/SSe2Sm3wtOQ=\nR:expr-416\na:0:0:444\nZ:Q1sPKTXT8Zm3cURvuWl5dK/hsjxz4=\nR:expr-417\na:0:0:444\nZ:Q1feG0VSPa2RAKfX7FKx/z50bu/5g=\nR:expr-418\na:0:0:444\nZ:Q13nQURnA6nMLCvUZgcGawxtq47gs=\nR:expr-419\na:0:0:444\nZ:Q1SyZuEhbBBFPadHyKhPC7osjTNJ4=\nR:expr-42\na:0:0:444\nZ:Q1Gx7O0nipBm5q7arafpqDMQI7xUg=\nR:expr-420\na:0:0:444\nZ:Q1Bo9AnulG5z55fMUk2DtkDBFpSn0=\nR:expr-421\na:0:0:444\nZ:Q122yHAPbgr6/b2+2Yedaj5ZnzoYk=\nR:expr-422\na:0:0:444\nZ:Q1D+nbcHko/6tVU1MPYoTGonlaAOI=\nR:expr-423\na:0:0:444\nZ:Q1+vT9Ns1kgu2u707OjxzDyx1JVHg=\nR:expr-424\na:0:0:444\nZ:Q19lpb1eQ+QW327bdMzsP6EBsQYmI=\nR:expr-425\na:0:0:444\nZ:Q14t3esgR+vnjiu9bX5I+e8bamy6c=\nR:expr-426\na:0:0:444\nZ:Q1eshECnWAuclHCo+cnGG5OD9ywCY=\nR:expr-427\na:0:0:444\nZ:Q1jZMIfk4P2Xs8oceIuJQqaa5VYhY=\nR:expr-428\na:0:0:444\nZ:Q1qr1PI0StwPoUhL4jyKY7v0yTgZ4=\nR:expr-429\na:0:0:444\nZ:Q1uyq6Wi1r22JnMcZCGdM2zGuY1mU=\nR:expr-43\na:0:0:444\nZ:Q1xHMEgm2ZpFtsRB/K/19e0xzdzOA=\nR:expr-430\na:0:0:444\nZ:Q1+A/vgWbr1yn8fymjS0rdwjGzmKo=\nR:expr-431\na:0:0:444\nZ:Q1GDZjo/3LkF6HGP6B7e555o04EmE=\nR:expr-432\na:0:0:444\nZ:Q1LQqhX3kHTL/CdpzOFiU26V/Cvwo=\nR:expr-433\na:0:0:444\nZ:Q1/uxP3jEEKfGNQE0NJJV4FSmibWI=\nR:expr-434\na:0:0:444\nZ:Q1aKqjDD02ZdtheXEzUb8flsUVBVw=\nR:expr-435\na:0:0:444\nZ:Q1dDbtq86FkJuJCNb3IGyUD0e4aMc=\nR:expr-436\na:0:0:444\nZ:Q1PdYjgYdsu6qtKn45uxlMSuz2ohc=\nR:expr-437\na:0:0:444\nZ:Q11d+w9hkwTn88JESTcMiDryEtZik=\nR:expr-438\na:0:0:444\nZ:Q18snO8t88PKcnmu94a0Dqe3oEBVU=\nR:expr-439\na:0:0:444\nZ:Q1Dd6gHDx7iE6vO3Fpw2HM77GdYJQ=\nR:expr-44\na:0:0:444\nZ:Q1R7wa+khrpS0SonNNH4we9gUCuSc=\nR:expr-440\na:0:0:444\nZ:Q1sfzHGzWcQ0OQaumD0EBIUN+eERo=\nR:expr-441\na:0:0:444\nZ:Q1okOAxDVzRQAXq7RaxhexQs7aovs=\nR:expr-442\na:0:0:444\nZ:Q1h3IF03VcOn1GKXZza4ue3Mi99e8=\nR:expr-443\na:0:0:444\nZ:Q14t3esgR+vnjiu9bX5I+e8bamy6c=\nR:expr-444\na:0:0:444\nZ:Q1iumTKnJGimHu/k55+TSbze0a/XE=\nR:expr-445\na:0:0:444\nZ:Q16wpsBokgG58a52Az1j9ntXfqmAI=\nR:expr-446\na:0:0:444\nZ:Q1MnyaUP5Vs5hU0vOgk0RnoqsgqXc=\nR:expr-447\na:0:0:444\nZ:Q1jvfDRA83OJzJjbZzfKcbP3X7/JQ=\nR:expr-448\na:0:0:444\nZ:Q1zrWRevLpKYkom1OKwfwhYirIJkE=\nR:expr-449\na:0:0:444\nZ:Q1D+nbcHko/6tVU1MPYoTGonlaAOI=\nR:expr-45\na:0:0:444\nZ:Q1Ov4x/xmsZjHqYFOC6AAqinUI/jY=\nR:expr-450\na:0:0:444\nZ:Q1Dd6gHDx7iE6vO3Fpw2HM77GdYJQ=\nR:expr-451\na:0:0:444\nZ:Q1wivJ7S5y+KLIAqiIUOrTNi0Jt1M=\nR:expr-452\na:0:0:444\nZ:Q1Feb2+yiE42urJUwInnXpYVeIOTo=\nR:expr-453\na:0:0:444\nZ:Q1HCac6jVlZwAO04VlrBrmNzQoM6A=\nR:expr-454\na:0:0:444\nZ:Q1/dLgr6MMEI+FUmmy08sU2D53dO8=\nR:expr-455\na:0:0:444\nZ:Q1QaqQU7u6lLxRlCpOuqLqqPF3tV0=\nR:expr-456\na:0:0:444\nZ:Q1D+CPt+8fdsvULh6dUBTXMnP79kM=\nR:expr-457\na:0:0:444\nZ:Q1w8VfEGX9Kcr/2eoXyCSnwJYTcVI=\nR:expr-458\na:0:0:444\nZ:Q1DEStOIzKE9yyTMyzjNg28j7AKIc=\nR:expr-459\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-46\na:0:0:444\nZ:Q1eEN743HhaCJ400IFJo7nCpdr2to=\nR:expr-460\na:0:0:444\nZ:Q1wUrXxKi25ZPtRSC97mPGSS52ydU=\nR:expr-461\na:0:0:444\nZ:Q1L7MYmRm7PHGPKuxiOwO4nZ1eGPs=\nR:expr-462\na:0:0:444\nZ:Q1CtD/HigWOF05KJpyW5uscuXvKII=\nR:expr-463\na:0:0:444\nZ:Q1/sTVbLUUQqwS1rHIATBGfKHtcCg=\nR:expr-464\na:0:0:444\nZ:Q1IxcGxlICY9LM4EeIr69+VaQdPPg=\nR:expr-465\na:0:0:444\nZ:Q14J+wQgEIGRq+LYmlw7XX65harFM=\nR:expr-466\na:0:0:444\nZ:Q1GWietzlN6YzsteqSROUQ/5qTUxw=\nR:expr-467\na:0:0:444\nZ:Q1ZHpfKhDnN2HA9+vdxgZqy3nCMSY=\nR:expr-468\na:0:0:444\nZ:Q1eWFtx1gOqzv18YVid3kSZFGswxM=\nR:expr-469\na:0:0:444\nZ:Q1sH+M8JT9QqXKTqUhtaTOEkICp0Q=\nR:expr-47\na:0:0:444\nZ:Q1e6j7RkjbO4zuOQslEcSwYgaqpvo=\nR:expr-470\na:0:0:444\nZ:Q1u+x2R+nP6YF2cr81+ChtN+HtE9k=\nR:expr-471\na:0:0:444\nZ:Q1BGheBtTtLrKRgTqDdy9FzYBsP/Q=\nR:expr-472\na:0:0:444\nZ:Q1Av68cUHn4aUI9uWUqpKUsLlOBMI=\nR:expr-473\na:0:0:444\nZ:Q1N1VDzlFQS8HwYFNyIem82qJnznE=\nR:expr-474\na:0:0:444\nZ:Q1BYLjj0qbLr1MefQ6dN+eG5+CU5Q=\nR:expr-475\na:0:0:444\nZ:Q1uR/Uqm6aFt2/1HYPGuTo6MFkn1Y=\nR:expr-476\na:0:0:444\nZ:Q1TLrhqeLCaabVjHEO4Dtg4Nxn4Bc=\nR:expr-477\na:0:0:444\nZ:Q1EqoibDu2vFZK5tHIsy1hNupwLe8=\nR:expr-478\na:0:0:444\nZ:Q1hE0AcuZh6Z2RQmW2kw/dEow7q7A=\nR:expr-479\na:0:0:444\nZ:Q1meF9Sgr6ZZO1gJrLrnyIGe/qTxA=\nR:expr-48\na:0:0:444\nZ:Q1DgRu9KMzGH65ndFMlTrV7ozh+RM=\nR:expr-480\na:0:0:444\nZ:Q1x1pPeZZXNtKw0kIlx3g5pfd6RBY=\nR:expr-481\na:0:0:444\nZ:Q1eTy78xKuRF0/X7xPwo/UKNYBvLY=\nR:expr-482\na:0:0:444\nZ:Q1Sa0MUF3IBHtaXsPJ2PPJTHXBuWc=\nR:expr-483\na:0:0:444\nZ:Q1mD31L5sqHmAuLXQJjmrvtuv3be8=\nR:expr-484\na:0:0:444\nZ:Q1o4foyRpOpoXgp6a3dFaAoYLxZb4=\nR:expr-485\na:0:0:444\nZ:Q1H+0581fbMK0aSYhQxl3B/jCn/9g=\nR:expr-486\na:0:0:444\nZ:Q1jav1W/IlNDEJ9p02NTOk/I3TDjo=\nR:expr-487\na:0:0:444\nZ:Q16sQq3EydYe8pbl0lfueF79y70PU=\nR:expr-488\na:0:0:444\nZ:Q1ovHIfWQOo4qXboyF+P3DUq48qVQ=\nR:expr-489\na:0:0:444\nZ:Q1BVKSLrKMHh3+snNAXR+n4V0aG4U=\nR:expr-49\na:0:0:444\nZ:Q1MPvXS4ddKWdQYOfXzRvfNPNJLZk=\nR:expr-490\na:0:0:444\nZ:Q1YqiQ0gKRHueW0jdxh6AQFOnS4co=\nR:expr-491\na:0:0:444\nZ:Q1fjiDssqgkC47ST1i6WGkCdpaoec=\nR:expr-492\na:0:0:444\nZ:Q1fjiDssqgkC47ST1i6WGkCdpaoec=\nR:expr-493\na:0:0:444\nZ:Q1auIgkldqKg1lPh2qAmiKejadX08=\nR:expr-494\na:0:0:444\nZ:Q1/zn1Jg8Zh8ClDiNnSBd5ZUqXWm0=\nR:expr-495\na:0:0:444\nZ:Q14Bb8Qbq5UIuY2KVBwCrScT1Zh1k=\nR:expr-496\na:0:0:444\nZ:Q1szhdBCEv3EDkxD3A7vuCgUM+mJQ=\nR:expr-497\na:0:0:444\nZ:Q1AxIgHJPgyWfrHs222BwQnodQe5w=\nR:expr-498\na:0:0:444\nZ:Q19z4QM8uoS8jDmpyt/lswy/cp10c=\nR:expr-499\na:0:0:444\nZ:Q1bbzxCKzuWuqTsuTCZ6dDeFFLlfw=\nR:expr-5\na:0:0:444\nZ:Q1N8AMdCp7I03nS7Gb2KaKzIRNYlc=\nR:expr-50\na:0:0:444\nZ:Q1+0Y3LrpYq7HDO/X+7txL1uacB+A=\nR:expr-500\na:0:0:444\nZ:Q11IuDlbUiJyE1E2+Hc9nQzi7ucjw=\nR:expr-501\na:0:0:444\nZ:Q1vYLY3862Kt/VhbRymbBNTCKDlbE=\nR:expr-502\na:0:0:444\nZ:Q1VtQrlZzJDHYGBqtVSsPUUuJWLnU=\nR:expr-503\na:0:0:444\nZ:Q12laXg5riz5eXRlWthmeC91uYCM0=\nR:expr-504\na:0:0:444\nZ:Q1DrByeAw67URk0ZeSU2/Kuu0glm8=\nR:expr-505\na:0:0:444\nZ:Q1J538tsanxPqfdMjPT7FtLrV6M70=\nR:expr-506\na:0:0:444\nZ:Q1rpf85Coq5ecO+49OFP2MjFDKE7k=\nR:expr-507\na:0:0:444\nZ:Q1eytEFlTUJmzbKZ47nQxpni+SjoQ=\nR:expr-508\na:0:0:444\nZ:Q1OPuW/7Xp9582v+B6qR4eqgIITwY=\nR:expr-509\na:0:0:444\nZ:Q1Gr9a/cOg0HkegaC6JWcvKvAaOts=\nR:expr-51\na:0:0:444\nZ:Q1Yvck4r6pkgfZaioooc5hMQmLE9Y=\nR:expr-510\na:0:0:444\nZ:Q1MfmArnObmx6jWnNi46QwQkZcIUk=\nR:expr-511\na:0:0:444\nZ:Q1x0UpHpPcNZHrkfoW0va1QdOT/cM=\nR:expr-512\na:0:0:444\nZ:Q1tbPMLyczfe1ybcr/KusbVisWYHY=\nR:expr-513\na:0:0:444\nZ:Q1iiDy8q1RKSzwZLFTauHXt02LW94=\nR:expr-514\na:0:0:444\nZ:Q1TDztoqHhEBF+0jc4hdar0CRC0cA=\nR:expr-515\na:0:0:444\nZ:Q1vwL1aouYDUdWfkzokMfdDhywQt8=\nR:expr-516\na:0:0:444\nZ:Q1rZz8LhDQ5RCKffDCoaxmJMbF8jM=\nR:expr-517\na:0:0:444\nZ:Q1Lmc1xjyM6LK0FwWb2Or0gm+62p4=\nR:expr-518\na:0:0:444\nZ:Q1QYrATLjgc/hBJ++UNQcohzRlPgM=\nR:expr-519\na:0:0:444\nZ:Q1IhQCO3NVpZ6foYEsTGzf73VcjDU=\nR:expr-52\na:0:0:444\nZ:Q17i5k1d/oVlyy1xXAP+LwBjgfkhE=\nR:expr-520\na:0:0:444\nZ:Q1K/5mDXf4nccUWzQlLJkhJ49upUQ=\nR:expr-521\na:0:0:444\nZ:Q1nFL3Do3KaZpEzL6uY0yym0I9Bwk=\nR:expr-522\na:0:0:444\nZ:Q1Ggowx4V5b6O0EIM0a/13unJi6kI=\nR:expr-523\na:0:0:444\nZ:Q1lqvNihdDKFbhT5SlegLv1oKO0xI=\nR:expr-524\na:0:0:444\nZ:Q1u523qNCmdQ6KK/WJnPO+zAj3EVU=\nR:expr-525\na:0:0:444\nZ:Q1uEvamiQ4s88S5fw1nwsc6yR8k3w=\nR:expr-526\na:0:0:444\nZ:Q1DMtmi8YYZfDGIalkN1hyH3+0OX0=\nR:expr-527\na:0:0:444\nZ:Q1E+ThMwX+XZRdPlg8SweFIhFAfEw=\nR:expr-528\na:0:0:444\nZ:Q1DoSoxIMbzTdaEIo0aFYRgb0gr4Y=\nR:expr-529\na:0:0:444\nZ:Q1i5dIIHqGw6oi+uCyjgcIi4q30/k=\nR:expr-53\na:0:0:444\nZ:Q17LlIxLgXVUpF8pjsjSYK6uwYZ0Y=\nR:expr-530\na:0:0:444\nZ:Q1b10Dr6RwGLScSe8Xdm4DAIh1EOU=\nR:expr-531\na:0:0:444\nZ:Q1GYb+8xQtCqAXW99zPu7cuBnSESQ=\nR:expr-532\na:0:0:444\nZ:Q1InIonMcNG2/MajZFNpsJP9mQiyA=\nR:expr-533\na:0:0:444\nZ:Q1WmbXy1bkSE72omseYtEYICoNigo=\nR:expr-534\na:0:0:444\nZ:Q1JHDrk4RKB9GmJ71zPZ+SPX4FXtE=\nR:expr-535\na:0:0:444\nZ:Q1ywiLzGEBaXAL8ClXEGDdBkxyKQM=\nR:expr-536\na:0:0:444\nZ:Q1ZE1jc0sFHpPGyEcUwMntIXj63Qk=\nR:expr-537\na:0:0:444\nZ:Q1M20bPXLgYbmLWdbHk/ao2iF6cno=\nR:expr-538\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-539\na:0:0:444\nZ:Q131gkjEFPNCyB4Fa0C+4S0XoIv2E=\nR:expr-54\na:0:0:444\nZ:Q1GV8dq3GeVcZjFB9odAYBP6G5eH8=\nR:expr-540\na:0:0:444\nZ:Q1TJ6ZOg2aBRjiyYH0b/I0Hoo25Ho=\nR:expr-541\na:0:0:444\nZ:Q1QDLKwqdwFhrYQMFv9sUkIgDBDaE=\nR:expr-542\na:0:0:444\nZ:Q1Pg14Ld2mwu/SQPb8r1vsKeSPw9w=\nR:expr-543\na:0:0:444\nZ:Q1l9Fw4VUO7kr8CvBlt4zaMCqXZ0w=\nR:expr-544\na:0:0:444\nZ:Q1EYT1uNS23QhwnPFRPyZ0QWcGXg0=\nR:expr-545\na:0:0:444\nZ:Q1cxY0/3PhJoC6V6ebtP/b9vqKj3I=\nR:expr-546\na:0:0:444\nZ:Q1aGpPV4UpGDBJyTvINrTmcDYZpx4=\nR:expr-547\na:0:0:444\nZ:Q1pe4qnKp0IQj+AxtDQRfVcyqfZl0=\nR:expr-548\na:0:0:444\nZ:Q1bxUgmxt/8P42adyc2MqaEY07eF0=\nR:expr-549\na:0:0:444\nZ:Q1oivJ5HbfUv46OoTeTS90VVtijWc=\nR:expr-55\na:0:0:444\nZ:Q1EIOT9hb4xVOc/8XA9Za5KKCw8i0=\nR:expr-550\na:0:0:444\nZ:Q115OJmdmSKDVsmwZvLziDOdaa+tg=\nR:expr-551\na:0:0:444\nZ:Q15cmo97H3jNOtnocxVllFUIrRy4M=\nR:expr-552\na:0:0:444\nZ:Q1vkCTR06m2Nx48YYzsANvpu9qohs=\nR:expr-553\na:0:0:444\nZ:Q12/nMHa5qzg0RYZwTMMZ0sG9DAl4=\nR:expr-554\na:0:0:444\nZ:Q1nnt9pWMruwq+qeVt06Bn2DpeBpU=\nR:expr-555\na:0:0:444\nZ:Q1KYxtA7g3RdIp+8AqGZyd8RPUkps=\nR:expr-556\na:0:0:444\nZ:Q18g5K5IrC1Kk+vLELu6AhmMlqUQo=\nR:expr-557\na:0:0:444\nZ:Q1+2AKSTu1+iD9RLkSbAMavNhpG/s=\nR:expr-558\na:0:0:444\nZ:Q1BgvGvMJM+l3/6h97I5jO4XII0SI=\nR:expr-559\na:0:0:444\nZ:Q1KiDwWCjUVne2eWMAk6kfL93myac=\nR:expr-56\na:0:0:444\nZ:Q1N5cwtbNV+sjUEkPYGpzrUgjNGwM=\nR:expr-560\na:0:0:444\nZ:Q1My2hsl36brIcpKX53rMcL/3fzHY=\nR:expr-561\na:0:0:444\nZ:Q1Bp8I43iJzYN0ZBMswlfnTabGy9Y=\nR:expr-562\na:0:0:444\nZ:Q1gvtiU9ouOgr1c+KWmodNbcBGJ2E=\nR:expr-563\na:0:0:444\nZ:Q1fdlJOjBRiwgLjKPAXHmHoUEIgVE=\nR:expr-564\na:0:0:444\nZ:Q1mnvX1acYwcLVGqpJMLETJzSgF3s=\nR:expr-565\na:0:0:444\nZ:Q1yP+hCWRoErDOitqYcUKTLohrA7s=\nR:expr-566\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-567\na:0:0:444\nZ:Q11GXmJ/mUby+g0twPwE5Thbxs1G0=\nR:expr-568\na:0:0:444\nZ:Q1YKxAH2TYr7xAeg/CUslaamHIqnU=\nR:expr-569\na:0:0:444\nZ:Q1GWqJYZqdA8/teh+IarillcWOIkc=\nR:expr-57\na:0:0:444\nZ:Q1xWjUIzgAofjQDWo5/CDTUrc/Rr8=\nR:expr-570\na:0:0:444\nZ:Q1Fa2fa8vfgrx/HPDhsf2joOZOX/k=\nR:expr-571\na:0:0:444\nZ:Q11izd+KDKk5eKPZBEI7ehtcg7i9U=\nR:expr-572\na:0:0:444\nZ:Q1aG7cIZ5T0Z3hW4IsEvMUdb1Hweg=\nR:expr-573\na:0:0:444\nZ:Q1vla5uJco6PN6WLqWt6srF+Tk6Xc=\nR:expr-574\na:0:0:444\nZ:Q1zDaguYE8BZzWPTN5hCGKlRwoZ7Y=\nR:expr-575\na:0:0:444\nZ:Q1Ynfcz7tm/TMyj+ghLUCWMPHO3co=\nR:expr-576\na:0:0:444\nZ:Q196eNLqAhMDeMOy7Cb9KPfDmUMIs=\nR:expr-577\na:0:0:444\nZ:Q1b3e+LxDzGa+9xUtvLTosABpTvUQ=\nR:expr-578\na:0:0:444\nZ:Q1mhVvSDN+3sTB7qqKSreW1ryCxVk=\nR:expr-579\na:0:0:444\nZ:Q14VJU7u1JU0AIF7ocrkv8BzwFJ64=\nR:expr-58\na:0:0:444\nZ:Q1r6yElLlnEMnDjyw1itlFNFhp2pM=\nR:expr-580\na:0:0:444\nZ:Q1zrl5PB4fRZuvBqpr0dJ5oF/WsRY=\nR:expr-581\na:0:0:444\nZ:Q1h1zZ42WUikahpiKCtAULwXlHd4M=\nR:expr-582\na:0:0:444\nZ:Q1rVTxYEVZyFWwATUCWWCfITWhq/o=\nR:expr-583\na:0:0:444\nZ:Q15QdBcq7EZmRa3k39XDo9ld+Iwq0=\nR:expr-584\na:0:0:444\nZ:Q1e+VKF1BpAU9e+nRUxqaFYF0SH/M=\nR:expr-585\na:0:0:444\nZ:Q1ZGzpUFtto9CPJ8MOpBj3/c5F/hE=\nR:expr-586\na:0:0:444\nZ:Q131gkjEFPNCyB4Fa0C+4S0XoIv2E=\nR:expr-587\na:0:0:444\nZ:Q1oFwFZdArJop/9h7+q1l5UyoJZzw=\nR:expr-588\na:0:0:444\nZ:Q1TJ6ZOg2aBRjiyYH0b/I0Hoo25Ho=\nR:expr-589\na:0:0:444\nZ:Q1t/ir0adLvYlp/g2kMXQnndc9+ik=\nR:expr-59\na:0:0:444\nZ:Q1m3iqICcBq7xP/6OyK1+aPqEMi7g=\nR:expr-590\na:0:0:444\nZ:Q1RPLYa2wCghS05QrqGqH8nBFG1To=\nR:expr-591\na:0:0:444\nZ:Q1GcKGDITRbZP/hvCQU3GF9ZhkR3E=\nR:expr-592\na:0:0:444\nZ:Q11dQrswb4i2I6m6gS2rQB3LOKNbU=\nR:expr-593\na:0:0:444\nZ:Q1cxY0/3PhJoC6V6ebtP/b9vqKj3I=\nR:expr-594\na:0:0:444\nZ:Q1pe4qnKp0IQj+AxtDQRfVcyqfZl0=\nR:expr-595\na:0:0:444\nZ:Q1VeLs5PBc/tzpCuPPmGsANgeOTas=\nR:expr-596\na:0:0:444\nZ:Q1iBpEk2ja3dkx0XywXtFv1Dh+aLU=\nR:expr-597\na:0:0:444\nZ:Q1+SPed6iOR3/fFiWcjsUomOcrYxg=\nR:expr-598\na:0:0:444\nZ:Q1p+GjAMkX0052Bw4VqyRHhxxiMg0=\nR:expr-599\na:0:0:444\nZ:Q1+s+UIKsf1oMQK0M2Jqu2UOLp/1U=\nR:expr-6\na:0:0:444\nZ:Q16k+K+2fwHEBc3eODMroryBDd6p4=\nR:expr-60\na:0:0:444\nZ:Q1GBZFeHqCPios9gc6E6TmO1uHaIc=\nR:expr-600\na:0:0:444\nZ:Q1FMJs7ZbIzI8Q1/ql+GAifXMTPeQ=\nR:expr-601\na:0:0:444\nZ:Q1EwOHMqUlqjqMl6DnRnqvfR5RvA0=\nR:expr-602\na:0:0:444\nZ:Q1rXPCFdFUNJJp0KFo6ZRVbMVVGnQ=\nR:expr-603\na:0:0:444\nZ:Q1zsyvZ9vwlGjdsPx6hVDrX1hYTn0=\nR:expr-604\na:0:0:444\nZ:Q1rfpGC/AkuWgFVpFNxHJlMHHtF74=\nR:expr-605\na:0:0:444\nZ:Q1bWGmjc8qV6cErbwRMCRRcXS7SxM=\nR:expr-606\na:0:0:444\nZ:Q1Cr7vXoiKzStLl4Qku5vyK+z/uto=\nR:expr-607\na:0:0:444\nZ:Q1o09n+VuHPn6Ja0Ru1xWYoc/YLlI=\nR:expr-608\na:0:0:444\nZ:Q1dl1AX8XqPnvDNUSm2G6PS9riY18=\nR:expr-609\na:0:0:444\nZ:Q1t8jR6oSNzw5mTEb6fdYqxoTPfg0=\nR:expr-61\na:0:0:444\nZ:Q1muOzI7rJ/BGT4i9Bbnafch7sbxk=\nR:expr-610\na:0:0:444\nZ:Q1eG7OWGzw0wZ3tgjoe9cReIdfylI=\nR:expr-611\na:0:0:444\nZ:Q1nwkZwQw1djMrkPEvaVTAc+8FDFA=\nR:expr-612\na:0:0:444\nZ:Q1Ybqsv9I29rZypDDOwcwiylT4vJY=\nR:expr-613\na:0:0:444\nZ:Q1eG7OWGzw0wZ3tgjoe9cReIdfylI=\nR:expr-614\na:0:0:444\nZ:Q1MLNUOZynhTbPbjlxf4RIco4fD/U=\nR:expr-615\na:0:0:444\nZ:Q1anznitvbTstpJZHNg6TYplpObl4=\nR:expr-616\na:0:0:444\nZ:Q1MLNUOZynhTbPbjlxf4RIco4fD/U=\nR:expr-617\na:0:0:444\nZ:Q1anznitvbTstpJZHNg6TYplpObl4=\nR:expr-618\na:0:0:444\nZ:Q1P8Kz1YeUCORlE8dpfXfqwCpLqIw=\nR:expr-619\na:0:0:444\nZ:Q11rIAv7Te3HRbUh/Mx7gP/2XB6qs=\nR:expr-62\na:0:0:444\nZ:Q1Jogkwbp9xNx7Up3nIbteZNeKwtE=\nR:expr-620\na:0:0:444\nZ:Q1cd1DY+qUdtlj0EKVB7BJ0O4ay4I=\nR:expr-621\na:0:0:444\nZ:Q1atgCj/jy30GMxzDLsTJVR8BdKlk=\nR:expr-622\na:0:0:444\nZ:Q1C6wcbsZ8dGp/F1htxLmJyqeBA84=\nR:expr-623\na:0:0:444\nZ:Q1yR/baVhczfAy2/5iWQVvH7ODCWA=\nR:expr-624\na:0:0:444\nZ:Q1Bat1CUION7NvHj6UEnN+KfDo5NI=\nR:expr-625\na:0:0:444\nZ:Q1MifWDkellvizx2iiO9qfBNQHHDI=\nR:expr-626\na:0:0:444\nZ:Q11EIWoXSHOkj6PgRwvns4ShKj7bs=\nR:expr-627\na:0:0:444\nZ:Q1AiJc9RkDmrXBHAFZqvUynLJSz3Q=\nR:expr-628\na:0:0:444\nZ:Q1bY7SJ4KrxP5NgJG7T2ne3+fQTzU=\nR:expr-629\na:0:0:444\nZ:Q1KnNDv5TRll5x6VmEFQUkIkwgXSU=\nR:expr-63\na:0:0:444\nZ:Q1TcbTlSDtd4+3edIY7jzCHbPfcfo=\nR:expr-630\na:0:0:444\nZ:Q18kg8Dmc1iP09D1EulGge8o0KQT8=\nR:expr-631\na:0:0:444\nZ:Q1M8pcuDNgprY6oZm2UfmRvwO2ZYs=\nR:expr-632\na:0:0:444\nZ:Q1Bngi0ta0jFpOJ9h6SFFD5EimVSg=\nR:expr-633\na:0:0:444\nZ:Q1BITFegX2egLVPBXprxMlz8XXKHc=\nR:expr-634\na:0:0:444\nZ:Q1f4mTpLTPHbQbz6QIMLEz6p9uwDw=\nR:expr-635\na:0:0:444\nZ:Q1zucRCcQlVYBurgznZaogBw3prY0=\nR:expr-636\na:0:0:444\nZ:Q1yVvV3zUGBXSWjV1+BlSie3yVi/Q=\nR:expr-637\na:0:0:444\nZ:Q1OFzjj1TG1pi+A7wlmRfGEOvYRd8=\nR:expr-638\na:0:0:444\nZ:Q1W4sveiU9Y6t1Bryu0ZGVy1JL8iw=\nR:expr-639\na:0:0:444\nZ:Q1XR0yUjaj3FzGd+OEB+S4s/uSN90=\nR:expr-64\na:0:0:444\nZ:Q1PwuhPRCojCD2scSq8GR5O27+8Jw=\nR:expr-640\na:0:0:444\nZ:Q1Pg14Ld2mwu/SQPb8r1vsKeSPw9w=\nR:expr-641\na:0:0:444\nZ:Q1vrcUF/NWmA2kso//NmgHY8e1ES8=\nR:expr-642\na:0:0:444\nZ:Q1bYX6w3f0inNz6lNR+AWUzW8hvCw=\nR:expr-643\na:0:0:444\nZ:Q1uA+a6IYkNFI9ePgYEkrwWCs//Gs=\nR:expr-644\na:0:0:444\nZ:Q1a5xFASvqi2uN/L+pWBkA3ho+8kM=\nR:expr-645\na:0:0:444\nZ:Q1XQ1EOqdgj7BfQp5ZdJICvIrYhQw=\nR:expr-646\na:0:0:444\nZ:Q1A27OVDYcvNWkODc7/YiPi8BHGJw=\nR:expr-647\na:0:0:444\nZ:Q1vrcUF/NWmA2kso//NmgHY8e1ES8=\nR:expr-648\na:0:0:444\nZ:Q1Gn5BPlYzRxR96+oSIncJZxjj2bY=\nR:expr-649\na:0:0:444\nZ:Q1vrcUF/NWmA2kso//NmgHY8e1ES8=\nR:expr-65\na:0:0:444\nZ:Q1J+u5dUtgTUNIKDWbT8OLeU2B1kU=\nR:expr-650\na:0:0:444\nZ:Q1bYX6w3f0inNz6lNR+AWUzW8hvCw=\nR:expr-651\na:0:0:444\nZ:Q1uA+a6IYkNFI9ePgYEkrwWCs//Gs=\nR:expr-652\na:0:0:444\nZ:Q1a5xFASvqi2uN/L+pWBkA3ho+8kM=\nR:expr-653\na:0:0:444\nZ:Q1XQ1EOqdgj7BfQp5ZdJICvIrYhQw=\nR:expr-654\na:0:0:444\nZ:Q1A27OVDYcvNWkODc7/YiPi8BHGJw=\nR:expr-655\na:0:0:444\nZ:Q1vrcUF/NWmA2kso//NmgHY8e1ES8=\nR:expr-656\na:0:0:444\nZ:Q1Gn5BPlYzRxR96+oSIncJZxjj2bY=\nR:expr-66\na:0:0:444\nZ:Q17kQkeesHkqNANTzwzFYslBWN0JU=\nR:expr-67\na:0:0:444\nZ:Q1bnfTdUtd3iLjfCVxcNQ+IdfkKkI=\nR:expr-68\na:0:0:444\nZ:Q18wAw33c14/q2VGIZtJUEkl9SNa8=\nR:expr-69\na:0:0:444\nZ:Q1y8Obq/D5/X41h1LCPoE3TYrmfVQ=\nR:expr-7\na:0:0:444\nZ:Q1GQLj1vxOeKC8xQuhK4gnaa+/Sow=\nR:expr-70\na:0:0:444\nZ:Q1zdHYPQNUXPgLDIWYEcysDqKsAzo=\nR:expr-71\na:0:0:444\nZ:Q1Z6o9zeaOhQ0VU80YFJ6A0HWL6do=\nR:expr-72\na:0:0:444\nZ:Q1mI1vLf1EYIRiJ7BK6nn7+w5yQUg=\nR:expr-73\na:0:0:444\nZ:Q164HeNz2xYKlnXSZl5aUNO49lDU8=\nR:expr-74\na:0:0:444\nZ:Q1aT8urkqeSkj+8MMLB8Q5D0vYs4E=\nR:expr-75\na:0:0:444\nZ:Q1+yUU/q/dllMrHvGn/4gf6iovMrA=\nR:expr-76\na:0:0:444\nZ:Q10YlMNKSgKviHZpRVXbQ36ZHTetc=\nR:expr-77\na:0:0:444\nZ:Q1stvhLA/rY8sdSCS3mFglpumx5Dc=\nR:expr-78\na:0:0:444\nZ:Q1XVZJmDsJsF+wlRnqjmApKKjJ87Q=\nR:expr-79\na:0:0:444\nZ:Q1JMBd4C0AYxY060Z9YPhgL8zBNTQ=\nR:expr-8\na:0:0:444\nZ:Q1mpsBqFbr0hRgh/wMIuoklMXbRBM=\nR:expr-80\na:0:0:444\nZ:Q1+/otC+5NF/aUiKzZvs4FwMnHLNk=\nR:expr-81\na:0:0:444\nZ:Q1uN9+5txDkBWecWT8cWoatMckO9c=\nR:expr-82\na:0:0:444\nZ:Q1uN9+5txDkBWecWT8cWoatMckO9c=\nR:expr-83\na:0:0:444\nZ:Q195jlMQ9+eI9niT9re3Q6IqZF3OE=\nR:expr-84\na:0:0:444\nZ:Q195jlMQ9+eI9niT9re3Q6IqZF3OE=\nR:expr-85\na:0:0:444\nZ:Q1GMWruuKrU9O42IxioJeF0FcIdd4=\nR:expr-86\na:0:0:444\nZ:Q1GMWruuKrU9O42IxioJeF0FcIdd4=\nR:expr-87\na:0:0:444\nZ:Q1kKHwppxgWi18ZDfMps1vM1/KlUE=\nR:expr-88\na:0:0:444\nZ:Q1EoOik/2LNFXqzi11zIhFt04ycJM=\nR:expr-89\na:0:0:444\nZ:Q1UJwRQ8jQbHSbpkmOeHv/+cuecL8=\nR:expr-9\na:0:0:444\nZ:Q1C+7Hteo/D9vJXQ3UfzxbwnXaijM=\nR:expr-90\na:0:0:444\nZ:Q1vVQDQswLmfrPN3vymaalOO+5RKo=\nR:expr-91\na:0:0:444\nZ:Q1oquSjGw/3wVV9qnLldeUVdqBvYo=\nR:expr-92\na:0:0:444\nZ:Q1JYT6WYzKf5Mr4vG4mduLVQgr7EY=\nR:expr-93\na:0:0:444\nZ:Q19vOGU2Xg+OU+h/Edoy3vUqb5iS0=\nR:expr-94\na:0:0:444\nZ:Q1U9bSGBYtucCzRIRkoUu9KxceJjI=\nR:expr-95\na:0:0:444\nZ:Q1d5c0U30nC1Qgk6BFPjpzcgbvAv8=\nR:expr-96\na:0:0:444\nZ:Q1cC8B9UQ1sqoiwqtrjdiTBTmFDcM=\nR:expr-97\na:0:0:444\nZ:Q1vZkDvCsbnB1YlkbzAtJqISw2v+E=\nR:expr-98\na:0:0:444\nZ:Q1vLLqzgXdnZtqfXjsHBX3R0GWzTI=\nF:root/go/pkg/mod/github.com/josharian\nF:root/go/pkg/mod/github.com/josharian/intern@v1.0.0\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1F5TuGqZ/rOCz7/xje/FDlOwKgc8=\nR:go.mod\na:0:0:444\nZ:Q1GDuJinTYtW2HhhiH7O7Eu+hvsC0=\nR:intern.go\na:0:0:444\nZ:Q1n2GaOEMZZySDkEy2kkN9emo6Ih0=\nR:intern_test.go\na:0:0:444\nZ:Q1FkstNPUfMwKPxZtJU26SXZ9uUtI=\nR:license.md\na:0:0:444\nZ:Q1izHuvztUcrdGo6NBQod7O7a9jmg=\nF:root/go/pkg/mod/github.com/kevinburke\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1UswJli+b4Z7z4iSyK7po6XGyJS0=\nR:.gitignore\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:.mailmap\na:0:0:444\nZ:Q1mBbD0NBbwRkHYFEOiXFWA0SUliA=\nR:AUTHORS.txt\na:0:0:444\nZ:Q11iGlkeMd8PEIBC+QPEOLx+xnpoE=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1Kjry2PywZd2DiLBDCt7EgZBlxRI=\nR:LICENSE\na:0:0:444\nZ:Q14nkKr721AG0GP84/hBBzudJMocc=\nR:Makefile\na:0:0:444\nZ:Q1qQ325CC8LtSle2Pg/nRji+lGvlU=\nR:README.md\na:0:0:444\nZ:Q1LtbgEHO71SiZMnvvgeKa8T9tT1Q=\nR:config.go\na:0:0:444\nZ:Q1AJXzCIEZNL0Sc2Dop3BEojZb5o0=\nR:config_test.go\na:0:0:444\nZ:Q1329aYS0jzXwXxi8pwfM0Y6JLnU0=\nR:example_test.go\na:0:0:444\nZ:Q1MwXH0+Bp5u6au/38leIJDBDbgQg=\nR:fuzz_test.go\na:0:0:444\nZ:Q1A9h7PLj6nZMm9K46qnMGpwcC8uo=\nR:lexer.go\na:0:0:444\nZ:Q1RNufL+M0trLKCb21zX6ickVe6EU=\nR:parser.go\na:0:0:444\nZ:Q1nZVPZxmvq1idCGgMmvMFKkyPV7I=\nR:parser_test.go\na:0:0:444\nZ:Q1PHpWRzzo+kcMC9jYXlz23sTK2z4=\nR:position.go\na:0:0:444\nZ:Q1pukOhgwYGpnZ09jgXQ8n1MuOXLw=\nR:token.go\na:0:0:444\nZ:Q1FdPIwebtWoIVd1zFiShzkCykXGU=\nR:validators.go\na:0:0:444\nZ:Q1m9rvkydZhcrHvJewWaIpCaTEohk=\nR:validators_test.go\na:0:0:444\nZ:Q1l/KU71tvSUWx1poR7Xz9snLq0JQ=\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0/.github/workflows\nM:0:0:555\nR:ci.yml\na:0:0:444\nZ:Q1Vlwm2fK6bEdwNL4SejmJjDHCQfk=\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0/testdata\nM:0:0:555\nR:anotherfile\na:0:0:444\nZ:Q1K7+SGp4pjhJVXuw11F9aN+spbtQ=\nR:config-no-ending-newline\na:0:0:444\nZ:Q164OYWm7ov+1aWXCIRPS8cNIA+mU=\nR:config1\na:0:0:444\nZ:Q1A5+Mxkj4r1VOzGwMoGkiwobM1z4=\nR:config2\na:0:0:444\nZ:Q1KTy4is7HrJQ6OGVCfrHZL6oQ6/I=\nR:config3\na:0:0:444\nZ:Q1/MAs+VXwJRYPgeu4V1hmLywd5xU=\nR:config4\na:0:0:444\nZ:Q1q+TiDrw7G1xOsqOn0gofuMiC3Ug=\nR:dos-lines\na:0:0:444\nZ:Q1dVUfOCycnVh/B4YXRV0fL97RDAY=\nR:eol-comments\na:0:0:444\nZ:Q1QbiDpViyLyzwy/oJ6b/jm7L5OnY=\nR:eqsign\na:0:0:444\nZ:Q1YJqHk5evzRxKJTTvE2uhrOxs18g=\nR:extraspace\na:0:0:444\nZ:Q18W+VWS9pe8fMnWeVLhbK2uE/Ghk=\nR:identities\na:0:0:444\nZ:Q1fND2D1UITaU2a16NKS9psbA9wTk=\nR:include\na:0:0:444\nZ:Q1A0RCiAEQpnCV8PTRdQHgSwLpIK8=\nR:include-recursive\na:0:0:444\nZ:Q1X35/+D/UnXRtjtaVyTGzuvZRDps=\nR:invalid-port\na:0:0:444\nZ:Q1vcULpnIHQ3chfPHa36syyE4QWLg=\nR:match-directive\na:0:0:444\nZ:Q1g3xM73UQsL6vkrtKrI/W7nB9x0g=\nR:negated\na:0:0:444\nZ:Q171eeG8sT4rAbKWPfDlYi6+W8z/I=\nR:system-include\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0/testdata/fuzz\nM:0:0:555\nF:root/go/pkg/mod/github.com/kevinburke/ssh_config@v1.2.0/testdata/fuzz/FuzzDecode\nM:0:0:555\nR:3cfc035ae4867ca13fa7bfaf2793731f05fd4d59c3af8761ea365c7485c752fd\na:0:0:444\nZ:Q1vWQ2GG7bCWwvyqQ46UK6ur0gPW4=\nR:4f8b378d89916e9b4fd796f74f5b12efb5cd85faaba9fea8fbe419d6af63add8\na:0:0:444\nZ:Q1u3HrS/fRJVy3k6lM4+PQ8PshWBQ=\nF:root/go/pkg/mod/github.com/klauspost\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1Uv0qHK0cNMuQcAHvevzFkmGfUF8=\nR:.gitignore\na:0:0:444\nZ:Q1ae4A+LQTWD3uxkCSss5aKkAvlM8=\nR:.goreleaser.yml\na:0:0:444\nZ:Q1R9Q4ZdP/QWkVtcejAdeEyG8vlmg=\nR:LICENSE\na:0:0:444\nZ:Q1Do8gQmR7gUDnnE630jPRs5Ix2wk=\nR:README.md\na:0:0:444\nZ:Q1C+YMpdD9BKtQCHGdf8/yhWM1mCg=\nR:compressible.go\na:0:0:444\nZ:Q1Q6rYyAN5HKtrfA6PKPGJW1FuJKo=\nR:compressible_test.go\na:0:0:444\nZ:Q1J3jolB51EQDUe+w/D5yQzOE6lGU=\nR:gen.sh\na:0:0:444\nZ:Q1DbT/SOO79A+CFWdrMmVLTskNhV8=\nR:go.mod\na:0:0:444\nZ:Q1pvHqd9UDRBMim7aTgw4nfVHJ5LI=\nR:go.sum\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:s2sx.mod\na:0:0:444\nZ:Q1W53se5QKT916tzls2VuKWNXIOWs=\nR:s2sx.sum\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/.github/workflows\nM:0:0:555\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1V54W1pH/rytmbdo5w5vKjUWy2p8=\nR:go.yml\na:0:0:444\nZ:Q1XKy2ZQKpFNMcXL+JUP33uhtqEFw=\nR:release.yml\na:0:0:444\nZ:Q1WQcPOLMjmDHBmgtz4YxqfZsHBAE=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/flate\nM:0:0:555\nR:deflate.go\na:0:0:444\nZ:Q1jVX6k6INbYmu/x3CDAy4usdPSM8=\nR:deflate_test.go\na:0:0:444\nZ:Q1DHq6n3eYgOnzFRtNY2KjmdkRibQ=\nR:dict_decoder.go\na:0:0:444\nZ:Q1bLbYV2YOoa3VbW56y+jJq3BTU90=\nR:dict_decoder_test.go\na:0:0:444\nZ:Q1LwZ5IGo/mroZU5IJLE//wPQQpQ0=\nR:fast_encoder.go\na:0:0:444\nZ:Q1RfSAGC05DxLOx7rzDKtYHNDZLnQ=\nR:flate_test.go\na:0:0:444\nZ:Q1j3/+/XLQP0gx/EX4UqgSsNT7lks=\nR:fuzz_test.go\na:0:0:444\nZ:Q1gATpz501IjmIPkivXS3riKzpVc8=\nR:huffman_bit_writer.go\na:0:0:444\nZ:Q1+eAuLLwCuBD9F0isKW7ao5Oxa8U=\nR:huffman_bit_writer_test.go\na:0:0:444\nZ:Q1qPohuUQXW66NrPvPWj3pEgDTrHw=\nR:huffman_code.go\na:0:0:444\nZ:Q1cXy58az/5mpqdr2EoKgOkSJzbB4=\nR:huffman_sortByFreq.go\na:0:0:444\nZ:Q1EDOm5AGrYkXJvKKc5gqLKZdwTXc=\nR:huffman_sortByLiteral.go\na:0:0:444\nZ:Q13WB7NtC0q+fG84i0eSgp2akOYX8=\nR:inflate.go\na:0:0:444\nZ:Q1pZ0I3az2sw5ggaUxcq6PwX5Dmnk=\nR:inflate_gen.go\na:0:0:444\nZ:Q16ZjhaX1asmnT7WOgpdwqwF8FEX0=\nR:inflate_test.go\na:0:0:444\nZ:Q1upwroTzZPol0SEoc2X5W4+3vl98=\nR:level1.go\na:0:0:444\nZ:Q1U//SX9Qv8w/awoPrPRX4rhcbN3c=\nR:level2.go\na:0:0:444\nZ:Q1IjiSSkdevM5H8xAAbDvG5RPuHPM=\nR:level3.go\na:0:0:444\nZ:Q1ngykT5fcFjERL0zpu8ssUnLzQKA=\nR:level4.go\na:0:0:444\nZ:Q1w3JsdCUDaQM9KHsH4hsAyHYOxSY=\nR:level5.go\na:0:0:444\nZ:Q1IqzgRG9LgKrlNswPisMSOEtLm9c=\nR:level6.go\na:0:0:444\nZ:Q1uc/WvciJzvmOCoCBhHEKB3YCVbw=\nR:reader_test.go\na:0:0:444\nZ:Q1OiuzZ+Bu+ICO8JccMa/YkU6v5bg=\nR:regmask_amd64.go\na:0:0:444\nZ:Q1oeYzJHY0IofWzO8LCCj/6Mmkirk=\nR:regmask_other.go\na:0:0:444\nZ:Q1jv837gSZgqicqSo5zdk9utE71IM=\nR:stateless.go\na:0:0:444\nZ:Q1B9wZgOMS+trd3DIuDM7u0AhI2eY=\nR:token.go\na:0:0:444\nZ:Q1Pyv2kzfd6PA4SEK8JT2zMCf0jkk=\nR:token_test.go\na:0:0:444\nZ:Q1H3hePZvoMmOklSBycJqShDcVA7o=\nR:writer_test.go\na:0:0:444\nZ:Q1t/sHrqnpKOEGouGooQvWJ1VMoSs=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/flate/_gen\nM:0:0:555\nR:gen_inflate.go\na:0:0:444\nZ:Q158OXFqUoSC5aNHS6QPwY1PUS7C0=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/flate/testdata\nM:0:0:555\nR:huffman-null-max.dyn.expect\na:0:0:444\nZ:Q1ytaAfx23DvJBTQR3fKLutiCqXK0=\nR:huffman-null-max.dyn.expect-noinput\na:0:0:444\nZ:Q1ytaAfx23DvJBTQR3fKLutiCqXK0=\nR:huffman-null-max.golden\na:0:0:444\nZ:Q1psVDfhGAvxJMH/qgK4rcQSMEsXU=\nR:huffman-null-max.in\na:0:0:444\nZ:Q1OR7atyJaHeZi68OhpnCiDY5qIms=\nR:huffman-null-max.sync.expect\na:0:0:444\nZ:Q1PnQqEfF55ncECulSn8SYcTHobek=\nR:huffman-null-max.sync.expect-noinput\na:0:0:444\nZ:Q1PnQqEfF55ncECulSn8SYcTHobek=\nR:huffman-null-max.wb.expect\na:0:0:444\nZ:Q1PnQqEfF55ncECulSn8SYcTHobek=\nR:huffman-null-max.wb.expect-noinput\na:0:0:444\nZ:Q1PnQqEfF55ncECulSn8SYcTHobek=\nR:huffman-pi.dyn.expect\na:0:0:444\nZ:Q1pncceuhSvXgVgDbIeAN07V9xk64=\nR:huffman-pi.dyn.expect-noinput\na:0:0:444\nZ:Q1pncceuhSvXgVgDbIeAN07V9xk64=\nR:huffman-pi.golden\na:0:0:444\nZ:Q15r59S/XrfrIXBnR+c6RBpkGKd2Y=\nR:huffman-pi.in\na:0:0:444\nZ:Q1BceV2mGtLpYFw1nDiNwohBdhZCk=\nR:huffman-pi.sync.expect\na:0:0:444\nZ:Q1/u3DNHlI5pOAF9J9FkkHGBSyeV0=\nR:huffman-pi.sync.expect-noinput\na:0:0:444\nZ:Q1/u3DNHlI5pOAF9J9FkkHGBSyeV0=\nR:huffman-pi.wb.expect\na:0:0:444\nZ:Q1/u3DNHlI5pOAF9J9FkkHGBSyeV0=\nR:huffman-pi.wb.expect-noinput\na:0:0:444\nZ:Q1/u3DNHlI5pOAF9J9FkkHGBSyeV0=\nR:huffman-rand-1k.dyn.expect\na:0:0:444\nZ:Q1coteKLG1jg2uDvMegdm+tKH//AM=\nR:huffman-rand-1k.dyn.expect-noinput\na:0:0:444\nZ:Q1kAjfNBhlk4vZKG73umBUhz+PJHE=\nR:huffman-rand-1k.golden\na:0:0:444\nZ:Q1coteKLG1jg2uDvMegdm+tKH//AM=\nR:huffman-rand-1k.in\na:0:0:444\nZ:Q1zLsx5aTdPHnuVpQt9GsaFRRZX4o=\nR:huffman-rand-1k.sync.expect\na:0:0:444\nZ:Q1coteKLG1jg2uDvMegdm+tKH//AM=\nR:huffman-rand-1k.sync.expect-noinput\na:0:0:444\nZ:Q1AXL3lJAbDvNuqJnaMvE29Vdn+h0=\nR:huffman-rand-1k.wb.expect\na:0:0:444\nZ:Q1coteKLG1jg2uDvMegdm+tKH//AM=\nR:huffman-rand-1k.wb.expect-noinput\na:0:0:444\nZ:Q1AXL3lJAbDvNuqJnaMvE29Vdn+h0=\nR:huffman-rand-limit.dyn.expect\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-limit.dyn.expect-noinput\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-limit.golden\na:0:0:444\nZ:Q1qEqtUEzwskK53RAXCBRXVapj7qw=\nR:huffman-rand-limit.in\na:0:0:444\nZ:Q1jVOMqbzMkMNzU52iEmbb4V6cAh8=\nR:huffman-rand-limit.sync.expect\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-limit.sync.expect-noinput\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-limit.wb.expect\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-limit.wb.expect-noinput\na:0:0:444\nZ:Q1SNfZk+owUFXxVqPjl/jfhLkYWU8=\nR:huffman-rand-max.golden\na:0:0:444\nZ:Q1/GdoI4r6PDITczc/EheqTM14goE=\nR:huffman-rand-max.in\na:0:0:444\nZ:Q11pMipJVjAz7qAsbQYLxwpXxXQwU=\nR:huffman-shifts.dyn.expect\na:0:0:444\nZ:Q13brlU3BVrs4WJuAB6jEIhHk9NvA=\nR:huffman-shifts.dyn.expect-noinput\na:0:0:444\nZ:Q13brlU3BVrs4WJuAB6jEIhHk9NvA=\nR:huffman-shifts.golden\na:0:0:444\nZ:Q19Dta+nmUR2GCBjpem5Sw8hznrq0=\nR:huffman-shifts.in\na:0:0:444\nZ:Q1u8yxgvBqwX/OebvdM+kBdBVBsgc=\nR:huffman-shifts.sync.expect\na:0:0:444\nZ:Q1q7buzmCbiNAWOgr5YUJ9BmD9HGU=\nR:huffman-shifts.sync.expect-noinput\na:0:0:444\nZ:Q1q7buzmCbiNAWOgr5YUJ9BmD9HGU=\nR:huffman-shifts.wb.expect\na:0:0:444\nZ:Q1q7buzmCbiNAWOgr5YUJ9BmD9HGU=\nR:huffman-shifts.wb.expect-noinput\na:0:0:444\nZ:Q1q7buzmCbiNAWOgr5YUJ9BmD9HGU=\nR:huffman-text-shift.dyn.expect\na:0:0:444\nZ:Q1U05LhC8cc5Drn6k+EDGEttMd+6s=\nR:huffman-text-shift.dyn.expect-noinput\na:0:0:444\nZ:Q1U05LhC8cc5Drn6k+EDGEttMd+6s=\nR:huffman-text-shift.golden\na:0:0:444\nZ:Q13SWLsWj2nFClA/a39jtYtfw8L4A=\nR:huffman-text-shift.in\na:0:0:444\nZ:Q1KEImxoMLsXjnDW7LBpm7o5eM88U=\nR:huffman-text-shift.sync.expect\na:0:0:444\nZ:Q1Nx016hx97iLbJZzlmAzMgDTQcoQ=\nR:huffman-text-shift.sync.expect-noinput\na:0:0:444\nZ:Q1Nx016hx97iLbJZzlmAzMgDTQcoQ=\nR:huffman-text-shift.wb.expect\na:0:0:444\nZ:Q1Nx016hx97iLbJZzlmAzMgDTQcoQ=\nR:huffman-text-shift.wb.expect-noinput\na:0:0:444\nZ:Q1Nx016hx97iLbJZzlmAzMgDTQcoQ=\nR:huffman-text.dyn.expect\na:0:0:444\nZ:Q1pYWWJTluSl5JNxfd+0B6NpG/Mo4=\nR:huffman-text.dyn.expect-noinput\na:0:0:444\nZ:Q1pYWWJTluSl5JNxfd+0B6NpG/Mo4=\nR:huffman-text.golden\na:0:0:444\nZ:Q1oLQcglflSyfnK9+mbLaA8lsSlGQ=\nR:huffman-text.in\na:0:0:444\nZ:Q1bS5gi2iqIsIjgDezN+1xQbEKUP0=\nR:huffman-text.sync.expect\na:0:0:444\nZ:Q10PO8J7F4WtPwsANeeSejkd7c57Q=\nR:huffman-text.sync.expect-noinput\na:0:0:444\nZ:Q10PO8J7F4WtPwsANeeSejkd7c57Q=\nR:huffman-text.wb.expect\na:0:0:444\nZ:Q10PO8J7F4WtPwsANeeSejkd7c57Q=\nR:huffman-text.wb.expect-noinput\na:0:0:444\nZ:Q10PO8J7F4WtPwsANeeSejkd7c57Q=\nR:huffman-zero.dyn.expect\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:huffman-zero.dyn.expect-noinput\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:huffman-zero.golden\na:0:0:444\nZ:Q1IRhbPyS8n64SGFCtgXMTpPeSfxg=\nR:huffman-zero.in\na:0:0:444\nZ:Q1OWz9kifXBx6bePiXym0MNOZc8vk=\nR:huffman-zero.sync.expect\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:huffman-zero.sync.expect-noinput\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:huffman-zero.wb.expect\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:huffman-zero.wb.expect-noinput\na:0:0:444\nZ:Q1F/W3vT/QfeyVg7eQshwrUZZ2qbc=\nR:null-long-match.dyn.expect-noinput\na:0:0:444\nZ:Q1nxdIDPbD1as0qTnUf2iVaqHgCPo=\nR:null-long-match.sync.expect-noinput\na:0:0:444\nZ:Q1Fqe4NVbimVVlnjH0WRC8vOMAkI8=\nR:null-long-match.wb.expect-noinput\na:0:0:444\nZ:Q1Fqe4NVbimVVlnjH0WRC8vOMAkI8=\nR:regression.zip\na:0:0:444\nZ:Q1DNNN4YOcq/5OJojQ0FnJ/myYccE=\nR:tokens.bin\na:0:0:444\nZ:Q1OeY17v9zGMB4cMfoswuanl7DX/A=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/flate/testdata/fuzz\nM:0:0:555\nR:FuzzEncoding.zip\na:0:0:444\nZ:Q1yQp9A5VItG3HeNxDIr4rVN84aYg=\nR:encode-raw-corpus.zip\na:0:0:444\nZ:Q1JqeaOHZ7EFP2saoLTpg4xmQymoY=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/fse\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1+NzeJFF7UHfgCmrI2tEuLv+xC6w=\nR:bitreader.go\na:0:0:444\nZ:Q1GBHeCFsFh/4eVZ4ERiJSSLmwUf8=\nR:bitwriter.go\na:0:0:444\nZ:Q1jSXdRWG/y7ejYs4UBGkIbeaWb1c=\nR:bytereader.go\na:0:0:444\nZ:Q1jM569gX3W55f//f/Q5BG4xK1izY=\nR:compress.go\na:0:0:444\nZ:Q13Zpbw5ayYtXgwsJxTh4gxKT5bYg=\nR:decompress.go\na:0:0:444\nZ:Q1qXKCfgHzXMn0UJYGnFSs29yrvBU=\nR:fse.go\na:0:0:444\nZ:Q1JCRjHIWnClO09qXJYIwhJp570t4=\nR:fse_test.go\na:0:0:444\nZ:Q1TbDjdZQlKpSa6dKQIOj2TWBAYnY=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzhttp\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1zpoSFkNSwhgqdPXKayRbE5BpcG4=\nR:README.md\na:0:0:444\nZ:Q1OXGhB1+td0tXkr4+OdqHK8Ub8wQ=\nR:asserts_test.go\na:0:0:444\nZ:Q1eo8xfBi8+MaoKxwvnKOcUwUdq+c=\nR:compress.go\na:0:0:444\nZ:Q1+Gq0FbJDUbVSgWj8T2kYavsqxes=\nR:compress_test.go\na:0:0:444\nZ:Q1Zd7RbWBZ3g1GCbYYPMneCrAJ/lA=\nR:examples_test.go\na:0:0:444\nZ:Q1M3EH/Tooq2gLlpwkb4ZmVIoqTUA=\nR:transport.go\na:0:0:444\nZ:Q1YKmhIO2dKgsUr7PsQqZVfzP7OU8=\nR:transport_test.go\na:0:0:444\nZ:Q1D6u2MgsmFIWOgRfODc82fLKPF44=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzhttp/testdata\nM:0:0:555\nR:benchmark.json\na:0:0:444\nZ:Q1US/3wi59Lyu0QeIWh9/oDkXJ6+U=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzhttp/writer\nM:0:0:555\nR:interface.go\na:0:0:444\nZ:Q16K4TtxiCkrxbUhfLaRe9eRFo+5k=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzhttp/writer/gzkp\nM:0:0:555\nR:gzkp.go\na:0:0:444\nZ:Q1EdIU8tJA16Rw1+cGGfjnF1rlsUo=\nR:gzkp_test.go\na:0:0:444\nZ:Q1M78zDX28RrrMKE/OyBU/ZECXnb4=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzhttp/writer/gzstd\nM:0:0:555\nR:stdlib.go\na:0:0:444\nZ:Q1yATlK1u/XHTtdPOKzfXq7PrCSWg=\nR:stdlib_test.go\na:0:0:444\nZ:Q1MqFpxF2S8Sq78//yWsZwCUBeJT8=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzip\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1AGcNKYnIZcCmzjvJZf7XzMlWXL8=\nR:gunzip.go\na:0:0:444\nZ:Q1sVwigtZqepU9Y9oO4BqzZMS57J0=\nR:gunzip_test.go\na:0:0:444\nZ:Q1YWmIxkI8cEY4IToxMfN0aQzN150=\nR:gzip.go\na:0:0:444\nZ:Q18C8shMRvoGxKxsz5EdIsDdstRnM=\nR:gzip_test.go\na:0:0:444\nZ:Q1Q9mOZjLYSnXX+prUjKoXHBpKxQo=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/gzip/testdata\nM:0:0:555\nR:issue6550.gz\na:0:0:444\nZ:Q1o0Vx4kuWzTFVDUyVI1A/1Ll5WSM=\nR:test.json\na:0:0:444\nZ:Q1RAaej//2cN3TUUMmKMArdTQx30k=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/huff0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q187V2PzUQw13x3bS9MAV8cvRpPFQ=\nR:README.md\na:0:0:444\nZ:Q1LfrYV6kU8jI06Jj3xq33yXPddAY=\nR:bitreader.go\na:0:0:444\nZ:Q1YN7LSzp+BzwpR7pOCGnsR10JO00=\nR:bitwriter.go\na:0:0:444\nZ:Q13Vs+WYUAT0icgKMGpusd3windPo=\nR:bytereader.go\na:0:0:444\nZ:Q1X3JVK/XQj5c39tU3qtC9lKiMCcc=\nR:compress.go\na:0:0:444\nZ:Q1oV9CuSG9gYR4GL2m4/J3lwoC7ug=\nR:compress_test.go\na:0:0:444\nZ:Q1rEpszseDs718KONTEdtJYqNnZIg=\nR:decompress.go\na:0:0:444\nZ:Q1D7vh6U5FcLazQd/vTxDn0Wyuhis=\nR:decompress_amd64.go\na:0:0:444\nZ:Q1aAxuygil9hYr7SYrbNdd0WQos54=\nR:decompress_amd64.s\na:0:0:444\nZ:Q1mu24Sr9nERry+L/a9UytLMX3Pvg=\nR:decompress_generic.go\na:0:0:444\nZ:Q19GAoBadqpz1yBNA671W3hsATIXg=\nR:decompress_test.go\na:0:0:444\nZ:Q1TwXeotX4HdBLNWeeamlabzzZP60=\nR:huff0.go\na:0:0:444\nZ:Q1DYeByCDg/i0esQ/qkxVvYP/cvq0=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/huff0/testdata\nM:0:0:555\nR:decompress1x_regression.zip\na:0:0:444\nZ:Q1LjWrtd/tPJVoJNbwND5fKLunKpk=\nR:regression.zip\na:0:0:444\nZ:Q15RYli16djv8ZWI0S7AYGMTzXM/w=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/internal/cpuinfo\nM:0:0:555\nR:cpuinfo.go\na:0:0:444\nZ:Q1dS/GB9GMMZjMkJ1EieBOju1rvQo=\nR:cpuinfo_amd64.go\na:0:0:444\nZ:Q17qq+CZax3NHYbwIMEEkLN8T3GqM=\nR:cpuinfo_amd64.s\na:0:0:444\nZ:Q1YD3jN1UjrmKkJcDzoVH2wR2Ga8A=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/internal/fuzz\nM:0:0:555\nR:helpers.go\na:0:0:444\nZ:Q1Sf6wQ/6DA6oIddqvBWHmmBOLECk=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/internal/snapref\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1t7l9hKXwt3irlx0q/ORPR8i26Ao=\nR:decode.go\na:0:0:444\nZ:Q14vMv3osr8BMDARf7L6+N+nyu5mc=\nR:decode_other.go\na:0:0:444\nZ:Q1e2Rh164fmURxpA6jx9VgLciV0eo=\nR:encode.go\na:0:0:444\nZ:Q11p3QmVcJ0XjQHQVJArbWPvFBF0Y=\nR:encode_other.go\na:0:0:444\nZ:Q1XOPGtDekbUswtmXagGXM3pDM+HQ=\nR:snappy.go\na:0:0:444\nZ:Q17nBSXRUaplHE4L7e54/EJP8QjBc=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1dKdP8x461D7qIUTn0cMWiJwOng0=\nR:LICENSE\na:0:0:444\nZ:Q18WcJrHWJnJaLRuyg8ye3VKlLvk4=\nR:README.md\na:0:0:444\nZ:Q19zXvlM8h0M0pXpRdjmR9Mv6ne9w=\nR:decode.go\na:0:0:444\nZ:Q1v+hF2x23bmZWBAJBT4c5hNduy5Y=\nR:decode_amd64.s\na:0:0:444\nZ:Q1VIoZ53Kfb00BlXCqmjXfmxAATZk=\nR:decode_arm64.s\na:0:0:444\nZ:Q1Rs4Cw0R0/2Bddw5uj3KiUbRWDUM=\nR:decode_asm.go\na:0:0:444\nZ:Q1Q76+KD2PjA9+1v2fCTw2M8LtAI8=\nR:decode_other.go\na:0:0:444\nZ:Q1OJJrvhukT/NDCjaH9GnzgnXfzXI=\nR:decode_test.go\na:0:0:444\nZ:Q1NQw2v5G6t1LH3t4Z7v3fx9Q6tSI=\nR:encode.go\na:0:0:444\nZ:Q1awNw/UnYgdnpfuowHh6huer2hpo=\nR:encode_all.go\na:0:0:444\nZ:Q1BkMZb0TazXakERzeV8oNaCw1ffU=\nR:encode_amd64.go\na:0:0:444\nZ:Q1U7tpiyqyb/oZv5Nxd+8zgk+z6B0=\nR:encode_best.go\na:0:0:444\nZ:Q19LOvlsfl27sOpYHpKn8kb2boCmI=\nR:encode_better.go\na:0:0:444\nZ:Q1+ypAA37EH3fPxfkeYb//JNBfyvU=\nR:encode_go.go\na:0:0:444\nZ:Q1AMm0K22gkIozDUp+cw3edJZWMPQ=\nR:encode_test.go\na:0:0:444\nZ:Q19asog8XKVtiPaqi/A9rIH+q2srM=\nR:encodeblock_amd64.go\na:0:0:444\nZ:Q1AK2TM9YARvQyYu80qBBu0g5Pn6k=\nR:encodeblock_amd64.s\na:0:0:444\nZ:Q10SXt7wZ2A3O0InovVHa+WsWoTDs=\nR:fuzz_test.go\na:0:0:444\nZ:Q1GBaPj4Nl46fPVaZEL7Ba95rvlek=\nR:index.go\na:0:0:444\nZ:Q11EMJG1sHGo1Sk48SCqodhZ+ue9Y=\nR:index_test.go\na:0:0:444\nZ:Q1df2W17l8s4zl1p7LUc3Xt3rBYPg=\nR:s2.go\na:0:0:444\nZ:Q1Ga5Jls2hlGJ5mUZFydn8IKgvumE=\nR:s2_test.go\na:0:0:444\nZ:Q16xcKE/5IKbA+07F01eEXYyoJ4bw=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd/internal/filepathx\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1v12h10zu5TlWY8R2TAv+uzrD7SY=\nR:README.md\na:0:0:444\nZ:Q1j4PMA/jTzx18Bqwc5NHf1N347go=\nR:filepathx.go\na:0:0:444\nZ:Q1DEt9/DSh+RwND3MsdAm16utk4rg=\nR:filepathx_test.go\na:0:0:444\nZ:Q1V9Cou4jUYlZy2I8xzeyk9QU0cgk=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd/internal/readahead\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1+pRTtvaaB3v55hj+ldOfZFXBF10=\nR:README.md\na:0:0:444\nZ:Q1XqcUciEWVbXRG+1Y5txjYjhCa0M=\nR:reader.go\na:0:0:444\nZ:Q1vQmIzwBwwqNLgBWNUxT6JHRA5BE=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd/s2c\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1sBpJ3t150ON0pCvWTv83gV7U/Nc=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/cmd/s2d\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1/HgQin5gq03ynszra4t2FUkpWAw=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/testdata\nM:0:0:555\nR:4f9e1a0da7915a3d69632f5613ed78bc998a8a23.zst\na:0:0:444\nZ:Q1Eu7qaGmhlrThf+5WC6hdKwC0/tw=\nR:Mark.Twain-Tom.Sawyer.txt\na:0:0:444\nZ:Q1wiK1BZITVY61Mj8mQql2gFHLsLM=\nR:Mark.Twain-Tom.Sawyer.txt.rawsnappy\na:0:0:444\nZ:Q1m/JpdeFXdQyTpKcCMfa1IAMSViA=\nR:dec-block-regressions.zip\na:0:0:444\nZ:Q1M+R6qjF/oNVL5jizxofcyOirybc=\nR:enc_regressions.zip\na:0:0:444\nZ:Q1nRV88OMBLGfCzYKvJdYk4H/vGDU=\nR:random\na:0:0:444\nZ:Q1WNMHbKGiKkr8cUpeRjClC9Jf1ns=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/s2/testdata/fuzz\nM:0:0:555\nR:block-corpus-enc.zip\na:0:0:444\nZ:Q1dJXEz0393bfHYwcBkPej0Pub/l8=\nR:block-corpus-raw.zip\na:0:0:444\nZ:Q19fb1Dp0Cmmhs3e9tQ1BPuTZrGTw=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/snappy\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q136LJH5nhtXRNKci7kI23yPJ3NRk=\nR:AUTHORS\na:0:0:444\nZ:Q1QKcsBchQPhuSrbiZAczM5Gsk9e8=\nR:CONTRIBUTORS\na:0:0:444\nZ:Q1f0X6d0Fb4v74TxyywniognSFXIQ=\nR:LICENSE\na:0:0:444\nZ:Q1t7l9hKXwt3irlx0q/ORPR8i26Ao=\nR:README.md\na:0:0:444\nZ:Q173qla4+ouu9cDs8UE7PA2f1YbP4=\nR:decode.go\na:0:0:444\nZ:Q1QGjijeTxRMfvSS7MFai8Qe0jQ9s=\nR:encode.go\na:0:0:444\nZ:Q1ofAHWDjaXVgExp4tW1b9LsVYYPM=\nR:snappy.go\na:0:0:444\nZ:Q1ExcauSUJr5nigjd7FPABGUree8U=\nR:snappy_test.go\na:0:0:444\nZ:Q1DLyokM00BuXgGMIH38kh91Ap09Q=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/snappy/testdata\nM:0:0:555\nR:Isaac.Newton-Opticks.txt\na:0:0:444\nZ:Q1pTZhYLTHTgRr+YB/+WaEGnaYV8Q=\nR:Isaac.Newton-Opticks.txt.rawsnappy\na:0:0:444\nZ:Q1nfZwS5flXdO7f714DA/qbtk/I+o=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/testdata\nM:0:0:555\nR:Mark.Twain-Tom.Sawyer.txt\na:0:0:444\nZ:Q1SXwFby9eUcmuz53uEnQLYRjwHiQ=\nR:case1.bin\na:0:0:444\nZ:Q1TLOTpMcej7m3U18xz21/TUBy3Ks=\nR:case2.bin\na:0:0:444\nZ:Q1DO1MrGwrkyk1xFlv9CLgTXjDOgM=\nR:case3.bin\na:0:0:444\nZ:Q1TuwYk8D1oTGU3CNhA2tSOEH9O9Q=\nR:crash1.bin\na:0:0:444\nZ:Q1DKyJUbiSRMqwVPgwQAn5AjS8CBw=\nR:crash2.bin\na:0:0:444\nZ:Q1530rnCrkp2+YitJIshx0MKzPrV0=\nR:crash3.bin\na:0:0:444\nZ:Q1RXAhC9Kkmi6Okdczd6FX+VfiGcs=\nR:crash4.bin\na:0:0:444\nZ:Q1BoKggi+4gL7O/O+lcqTMwV2yV2k=\nR:crash5.bin\na:0:0:444\nZ:Q1dLi6ttsLpNx5MXHrveaBNOfTK8o=\nR:dec-crash6.bin\na:0:0:444\nZ:Q1/EUQACGmUhVxCB0aBxHdEmG65AE=\nR:dec-hang1.bin\na:0:0:444\nZ:Q1ppUL15xQq0WP8HqhSgDvcm4eRJE=\nR:dec-hang2.bin\na:0:0:444\nZ:Q1JcKAGkVkXSXo6kNQNCKQXDrA958=\nR:dec-hang3.bin\na:0:0:444\nZ:Q1Lsj5hIsKiWMeUqvAg0stY0s49u4=\nR:dec-symlen1.bin\na:0:0:444\nZ:Q1AsB+8yA+I0ztUM6DHvEZRIwSkhg=\nR:e.txt\na:0:0:444\nZ:Q1ybtEKK5ilDjFLY/c8iSeiZbePN8=\nR:endnonzero.bin\na:0:0:444\nZ:Q1nPnkEe1irdF+ESO3KgZe4hQzWN8=\nR:endzerobits.bin\na:0:0:444\nZ:Q1Zkiy1IgA3mg/YBLN+n9r5iJxfg8=\nR:fse-artifact3.bin\na:0:0:444\nZ:Q1Ls3Fzyf117QT4qrtXY8o6f4m8rw=\nR:gettysburg.txt\na:0:0:444\nZ:Q1yMr5z6FKYX/xXr/xnzPCWFH7k1E=\nR:html.txt\na:0:0:444\nZ:Q1sMyFqNDgpP8X/kFiNcCO1QTCSHU=\nR:normcount2.bin\na:0:0:444\nZ:Q1g/t4aloeu+Ab4Rq+HbBbjpfx2nw=\nR:pi.txt\na:0:0:444\nZ:Q1zOwv3SLN20dyprVjIFzQXxz9JEY=\nR:pngdata.bin\na:0:0:444\nZ:Q1Zz8MEjg56SQn2tAaLXmyAJaO0EQ=\nR:sharnd.out\na:0:0:444\nZ:Q1VIrDQe5Nu4hOS1OB7/61wXBS+Lg=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zip\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1zqdT/SSQ8IoXWlfAMxKshOKpZJE=\nR:fuzz_test.go\na:0:0:444\nZ:Q1wOTec/+y+bTFik3r6PMelwqDSQQ=\nR:reader.go\na:0:0:444\nZ:Q19kIpoQQQO3lZzU8VubaoOzbtwHk=\nR:reader_test.go\na:0:0:444\nZ:Q1XPo49trytY9tmIG3SxAzGDfZuPA=\nR:register.go\na:0:0:444\nZ:Q1HglRYQxwry+WXM9kvpQsmW0NX0o=\nR:struct.go\na:0:0:444\nZ:Q18tRW81tFFvxBOU/0D6X+cndwmWo=\nR:writer.go\na:0:0:444\nZ:Q11mgV+65r30Kv0UVHYcj010ZCOmk=\nR:writer_test.go\na:0:0:444\nZ:Q1lNvPI5BgVEUlWQRbgjPdOh6tbOg=\nR:zip_test.go\na:0:0:444\nZ:Q1x9bgW6A7r4SFgCqvHIPTGliM8qA=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zip/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zip/internal/obscuretestdata\nM:0:0:555\nR:obscuretestdata.go\na:0:0:444\nZ:Q1lA3dlKPYKThtJu2/tPixK4WmCMs=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zip/testdata\nM:0:0:555\nR:crc32-not-streamed.zip\na:0:0:444\nZ:Q1nbwmzLWhVHrvD8x9iV8zDPmAV1I=\nR:dd.zip\na:0:0:444\nZ:Q14xDQ7flXKz9g9Xbe25QBWhr5CMs=\nR:dupdir.zip\na:0:0:444\nZ:Q1WNK6ggZNOI3d6UMBdDkAiG0sX6Y=\nR:go-no-datadesc-sig.zip\na:0:0:444\nZ:Q1tjuj6oXqeATtNEPCyWeT+/7cSA8=\nR:go-no-datadesc-sig.zip.base64\na:0:0:444\nZ:Q1DCjp07HTdkQyXa9rq2fYCB4rD/U=\nR:go-with-datadesc-sig.zip\na:0:0:444\nZ:Q1XL7srH23FVYhQ7vryx6ccEpMgjE=\nR:gophercolor16x16.png\na:0:0:444\nZ:Q1DWvG2qKAi+8Ob83wUVJuZ49HsKM=\nR:readme.notzip\na:0:0:444\nZ:Q1FSx7id7Ic3WqGJZvuCvXCInjHPs=\nR:readme.zip\na:0:0:444\nZ:Q1psrskwBWjhhjD/EIv5C8ovmyYWw=\nR:subdir.zip\na:0:0:444\nZ:Q1FvBJUTMKNlQwdMp2o/MKeI99hjc=\nR:symlink.zip\na:0:0:444\nZ:Q1hydC0/oLVUupuGfeDIiuXiI5lUE=\nR:test-baddirsz.zip\na:0:0:444\nZ:Q10ogWeEM36BQfEABNsOmbhYudR3c=\nR:test-prefix.zip\na:0:0:444\nZ:Q1d0O0LW/Vr/NBsPcY0VvbyCKa9pw=\nR:test-trailing-junk.zip\na:0:0:444\nZ:Q1IRNOkqOK9srgr4lODhSlhWKfSZA=\nR:test.zip\na:0:0:444\nZ:Q1hCXt8NON7fcOaUIbI6Oy/2R9Z9k=\nR:time-22738.zip\na:0:0:444\nZ:Q1AFXA9xbmoetP/eS72ZDq2nyxkZk=\nR:time-7zip.zip\na:0:0:444\nZ:Q1qUI9kmVz/0H2LEax1yQiZmRK/LM=\nR:time-go.zip\na:0:0:444\nZ:Q1AdoQ8Kf+85M0tVtoNYoYYapIdGI=\nR:time-infozip.zip\na:0:0:444\nZ:Q1ZpSyfgBBeZ0e/ODQiRe1Vdsa0Ug=\nR:time-osx.zip\na:0:0:444\nZ:Q1Ga24WMIpAVEiFw/cPq8/mfzb1JE=\nR:time-win7.zip\na:0:0:444\nZ:Q1gueza0ozr0niDGz2RT6I4KKxxho=\nR:time-winrar.zip\na:0:0:444\nZ:Q1pU9kMZ9NaymSTWafCeqoMwg32Es=\nR:time-winzip.zip\na:0:0:444\nZ:Q12f7qtQjqJ4EomcIiqrJqBPsRLj4=\nR:unix.zip\na:0:0:444\nZ:Q1uVmEmXj0tcioQo+H5iZWc6T6i8o=\nR:utf8-7zip.zip\na:0:0:444\nZ:Q1Ib2dwU6kL8UbqEATutvFG9JyCtk=\nR:utf8-infozip.zip\na:0:0:444\nZ:Q1gaakw65QaD/YrbbSKaNyX0WIkFk=\nR:utf8-osx.zip\na:0:0:444\nZ:Q1R7kKV9CHSiu+wPIymNRRlG91QUQ=\nR:utf8-winrar.zip\na:0:0:444\nZ:Q1CaX1gyQPfcCsGN9YLGHQgQ/Qex8=\nR:utf8-winzip.zip\na:0:0:444\nZ:Q1krXbay+Fl09n0FwWhBkD3E4MwWI=\nR:winxp.zip\na:0:0:444\nZ:Q1w4UNY2adp5zz/wKhlbzXbmpng30=\nR:zip64-2.zip\na:0:0:444\nZ:Q1mqXqtUAHfkyv75teXIxSxi5wdwE=\nR:zip64.zip\na:0:0:444\nZ:Q1E6+OIwnIz5Pgp6/f+W64stau6YM=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zlib\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1Z99UcW2BFpBf6oHjET0A7iGpURY=\nR:reader.go\na:0:0:444\nZ:Q14CmukazWjaCcJMU1upYXUM8FMUA=\nR:reader_test.go\na:0:0:444\nZ:Q1JkZO9+D3McXZUJd+xEIipeBJHvU=\nR:writer.go\na:0:0:444\nZ:Q1YcByhD1yBUV78sATsdtknKlmmv0=\nR:writer_test.go\na:0:0:444\nZ:Q1cJhyRAqR/IawspMwZy0ze5YTfGQ=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zstd\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1IR3R+xEkx8ytpvPhI7rzPMw9GEw=\nR:bitreader.go\na:0:0:444\nZ:Q1fVcnjIjy4qwHK9//KWgyC0Fam/4=\nR:bitwriter.go\na:0:0:444\nZ:Q1R97E6k9RZAAiM7I7wOeePvMFa5g=\nR:blockdec.go\na:0:0:444\nZ:Q1CJqm27uY7Dw1FQ8dBqxaITSbuJg=\nR:blockenc.go\na:0:0:444\nZ:Q1Xb1h3Mk9i8teQ8StEW/UnYIFYIc=\nR:blocktype_string.go\na:0:0:444\nZ:Q1BUiC/ffwOSZ+nQcxmYKmdL8/Xco=\nR:bytebuf.go\na:0:0:444\nZ:Q1VmurZCLOPXCYd7r2URAYT9QTb6Q=\nR:bytereader.go\na:0:0:444\nZ:Q1g2TJAUKL/bGDuwS7Ohl4PAzQRnI=\nR:decodeheader.go\na:0:0:444\nZ:Q1kC3eH5yPUN5gJ5mONhavmPwmvpE=\nR:decodeheader_test.go\na:0:0:444\nZ:Q1bTnW0n/QJ29o6z4g70jP5+Ga13I=\nR:decoder.go\na:0:0:444\nZ:Q1+g4LnXTszS6ovu7X4dcZpdJhbd8=\nR:decoder_options.go\na:0:0:444\nZ:Q1QE9Bx/XPOza9TxT2hyIjIGHWkZ0=\nR:decoder_test.go\na:0:0:444\nZ:Q1FST+AhyvADhaF49TvLCUYy/6qJE=\nR:dict.go\na:0:0:444\nZ:Q1g3kOIN0YHGJTexlK737oPEXozPk=\nR:dict_test.go\na:0:0:444\nZ:Q1JNGZFt7J1w/S5mCltFfi1kMzDIE=\nR:enc_base.go\na:0:0:444\nZ:Q1Fg/hcGKno18jrP5CDkF4AV/bRA0=\nR:enc_best.go\na:0:0:444\nZ:Q15231XajTSUjaFH4bFAJoKn5WSms=\nR:enc_better.go\na:0:0:444\nZ:Q1ul3cXEDSJQFhi+PrZz9B4vMYykY=\nR:enc_dfast.go\na:0:0:444\nZ:Q1/Dyu2pgYdVXS8U6UGptpKrhOGfg=\nR:enc_fast.go\na:0:0:444\nZ:Q1uRA5ryNUaNlLnYlTM2luIY2G0EE=\nR:encoder.go\na:0:0:444\nZ:Q1tlZ8kg1fkcIEcrYlyUN2N5DTv6g=\nR:encoder_options.go\na:0:0:444\nZ:Q1pesAM4fto2IxiIvecIXGqQl8fkA=\nR:encoder_options_test.go\na:0:0:444\nZ:Q1IGXqBVQcEy8sL9lTut3rRb/BvWg=\nR:encoder_test.go\na:0:0:444\nZ:Q1X4sPoNI9arHk0DKVQXcwn80mzLo=\nR:framedec.go\na:0:0:444\nZ:Q1mIHqto0WvzfrujxtV+HyjqZwhtg=\nR:frameenc.go\na:0:0:444\nZ:Q1xWiaWd6nrfPBgK2va1tEb/ZXA2k=\nR:fse_decoder.go\na:0:0:444\nZ:Q1EeKQJEpJG1SAod0/uAyw23bOwlo=\nR:fse_decoder_amd64.go\na:0:0:444\nZ:Q1BVFxUpywNNiZ9IP304T7K5FSnOE=\nR:fse_decoder_amd64.s\na:0:0:444\nZ:Q1/WAUurNjjz/QL5to5LXbUiOUoII=\nR:fse_decoder_generic.go\na:0:0:444\nZ:Q1b1fVJxIiqbqzwqLdy+tjic4pBcE=\nR:fse_encoder.go\na:0:0:444\nZ:Q1QUO7Nb9svRq+IB/4+3Co0gZtyXE=\nR:fse_predefined.go\na:0:0:444\nZ:Q1iZuueassEnpysgJFbivVnv6i4DA=\nR:fuzz_test.go\na:0:0:444\nZ:Q1r8CPrxbe1PQR8KgfV7O8e5GC5z4=\nR:hash.go\na:0:0:444\nZ:Q1UXay0JrAl+8xUIxSXfKzTU2OvJM=\nR:history.go\na:0:0:444\nZ:Q1EmK3irKrZJ9MZIdmBJGgWKHLwZ8=\nR:race_enabled_test.go\na:0:0:444\nZ:Q1HuU2jAtu0n3BOyPW1ZA+gbBEND4=\nR:seqdec.go\na:0:0:444\nZ:Q17si72Y+spkhW+FU7JgrtAhtLrA4=\nR:seqdec_amd64.go\na:0:0:444\nZ:Q1fH0W5yb466nGb0VGMYcKZqtIM4c=\nR:seqdec_amd64.s\na:0:0:444\nZ:Q1xswSbHGh8/95DBh/aL4M0kkyl9c=\nR:seqdec_amd64_test.go\na:0:0:444\nZ:Q1hEy4Eef6bDItNJn+/5BE9B8SJG0=\nR:seqdec_generic.go\na:0:0:444\nZ:Q1lI0xZTIQQ/5tR5COXcOiZ8E3UeA=\nR:seqdec_test.go\na:0:0:444\nZ:Q1uV8US6QoT83ksYbGlrSL0S6MBW8=\nR:seqenc.go\na:0:0:444\nZ:Q1q5q+zy5jWmPgqKC7z+wbvRvO21U=\nR:snappy.go\na:0:0:444\nZ:Q1GYv7CXglL2HnN4tfYC7z7H4FetI=\nR:snappy_test.go\na:0:0:444\nZ:Q1/7np6b3Tl0087neBWOmjgMNZBbw=\nR:zip.go\na:0:0:444\nZ:Q1KFiV9IrqhswBSsJBs4GHOiuwVSk=\nR:zip_test.go\na:0:0:444\nZ:Q16c+G1k5fA+32zmdi+LvI4b1vYwc=\nR:zstd.go\na:0:0:444\nZ:Q1rKqUQoYqnr/e+wNWvZrrvfqPDko=\nR:zstd_test.go\na:0:0:444\nZ:Q12mx3fj8uAC7wDcWczmpv4LBaZRs=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zstd/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zstd/internal/xxhash\nM:0:0:555\nR:LICENSE.txt\na:0:0:444\nZ:Q1e+gsGoHnGXZAqI35HcgtZLd8es0=\nR:README.md\na:0:0:444\nZ:Q1D6fF2dEkinJgcAUojZ3QpfrreYs=\nR:xxhash.go\na:0:0:444\nZ:Q1q2uTtPfvZlpkXy+FnyAoUlBYyY8=\nR:xxhash_amd64.s\na:0:0:444\nZ:Q1SldHDHE0vIwoPnJshO3ArEaTYsc=\nR:xxhash_arm64.s\na:0:0:444\nZ:Q1Zxq8tUQQJS8iHNOSlUXOQnyy2Q8=\nR:xxhash_asm.go\na:0:0:444\nZ:Q1Qqytn5uWPxlxmfDkNzsIL2Mn7tQ=\nR:xxhash_other.go\na:0:0:444\nZ:Q12+RUWiro3CKBBx6gyIQ4rWuofsM=\nR:xxhash_safe.go\na:0:0:444\nZ:Q1kj84YVWKZOabowowV4mDATQgQHA=\nR:xxhash_test.go\na:0:0:444\nZ:Q1aHLQ5bJBlNUxtkmMOP6393jKlbs=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zstd/testdata\nM:0:0:555\nR:bad.zip\na:0:0:444\nZ:Q1lOpTxPJhLfDjjb38RwgKQcLktZU=\nR:benchdecoder.zip\na:0:0:444\nZ:Q1d2v2kxkUJNbOyd0qwjRhq/8Z0nE=\nR:comp-crashers.zip\na:0:0:444\nZ:Q1iIaE9rQKEDDxCZ3FXQvSdbbaWEU=\nR:decode-regression.zip\na:0:0:444\nZ:Q11+PbxZTcMEOuuJzNfdo/15layto=\nR:decoder.zip\na:0:0:444\nZ:Q1d1D4aRdaweFnaK6txeU8R06sSfA=\nR:dict-tests-small.zip\na:0:0:444\nZ:Q11elX9g5jUq2pfLGM96ISsvmDLcA=\nR:good.zip\na:0:0:444\nZ:Q1jI3roUD8yr5L9GKcwiXdu8WwJbA=\nR:headers-want.json.zst\na:0:0:444\nZ:Q1Soilur4qtSk0TBDqlc2W5P2Dna0=\nR:headers.zip\na:0:0:444\nZ:Q1uw05Ugwpchm4Diz0brFqx6U1Awk=\nR:large.zip\na:0:0:444\nZ:Q16k+mdltKfoh+gaiYkalzWvOCeIM=\nR:regression.zip\na:0:0:444\nZ:Q1dS6ud18pN76yf5iymCZ0x4aeDkM=\nR:seqs-want.zip\na:0:0:444\nZ:Q1S6q1Vtaaf6xlsTmqCY/F831cJiE=\nR:seqs.zip\na:0:0:444\nZ:Q1BwsjdARu9z/RrJ5IYYPbItZnmeo=\nR:xml.zst\na:0:0:444\nZ:Q11/E7QltP4hMfYKXJL9v7T+DCqrA=\nR:z000028\na:0:0:444\nZ:Q1v6c5WIlLQNV54trCI2tiG0P8hkI=\nR:z000028.zst\na:0:0:444\nZ:Q1AqWnputE4RYEMNVVxTs7yoR8vHQ=\nF:root/go/pkg/mod/github.com/klauspost/compress@v1.15.11/zstd/testdata/fuzz\nM:0:0:555\nR:decode-corpus-encoded.zip\na:0:0:444\nZ:Q1cj+ISwtKb3YzYwhmLxXgrWUrhT0=\nR:decode-corpus-raw.zip\na:0:0:444\nZ:Q1zCB4QztJ0YOtarrivr0VEfzhFEw=\nR:encode-corpus-encoded.zip\na:0:0:444\nZ:Q1Kruio9HRL9NCPilRUDBW0usANqY=\nR:encode-corpus-raw.zip\na:0:0:444\nZ:Q1P1tMW+JmNpV15+JMyDCSetDc6Ag=\nF:root/go/pkg/mod/github.com/letsencrypt\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be\nM:0:0:555\nR:.codespell.ignore.txt\na:0:0:444\nZ:Q1Z1H5Er/RNmHihNF/ED7LRqjwgGo=\nR:.dockerignore\na:0:0:444\nZ:Q1qV5C1pItjyoFHKuoDHxteATXnG4=\nR:.gitignore\na:0:0:444\nZ:Q1Tu0sQio8Db/C17BT3PJls3VG7kg=\nR:.golangci.yml\na:0:0:444\nZ:Q1Wi2R33sISL6aLzrHePzYEGPPs9g=\nR:CODEOWNERS\na:0:0:444\nZ:Q1W1FjX7fca9MPngh2S20z/+KubIE=\nR:LICENSE.txt\na:0:0:444\nZ:Q1R46SSNIhOThJNqWHjTwuuRFlniA=\nR:Makefile\na:0:0:444\nZ:Q1hl+r8bv8jkCZsqPqMMJnRTgE+dw=\nR:README.md\na:0:0:444\nZ:Q1m2X6Tp/z3O1rko3s+KZh/LSXB9o=\nR:docker-compose.next.yml\na:0:0:444\nZ:Q1TphmvFAoVxWZnvhABwBk5dsK6II=\nR:docker-compose.yml\na:0:0:444\nZ:Q1/Ww0+JWlaVRDGfCjnp0XrfBAMUY=\nR:go.mod\na:0:0:444\nZ:Q1ymB1pwLgXjqLd2nxxuDNd1Xvzns=\nR:go.sum\na:0:0:444\nZ:Q1E4hMsbalodXNediqfjSHo2rnttk=\nR:link.sh\na:0:0:444\nZ:Q10y35qu6DZR5c6iPH5uPmmx6G6p0=\nR:start.py\na:0:0:444\nZ:Q1mRTXTejaznfNsIG5uYhbU72sR1M=\nR:t.sh\na:0:0:444\nZ:Q1+oRVSeruP2+VyJ3Lmxt4NNDKbiw=\nR:test.sh\na:0:0:444\nZ:Q1atTtmUifEp/jQOl6YTWRpRQba2I=\nR:tn.sh\na:0:0:444\nZ:Q1HzLQdg7whLDYm+P5Vb+Omi3vhmo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/.github\nM:0:0:555\nR:FUNDING.yml\na:0:0:444\nZ:Q1RBqpsB6CVkZ0BCxf4280NsnbrGI=\nR:dependabot.yml\na:0:0:444\nZ:Q100EAjxYvqvfSU9FMIfxf8s0nQiw=\nR:issue_template.md\na:0:0:444\nZ:Q1jgAmU/TdbV3tXf+BAW730Has/MI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/.github/workflows\nM:0:0:555\nR:add-to-project.yml\na:0:0:444\nZ:Q1hSUvILBs4HmUEldgN79N+1bcbq8=\nR:boulder-ci.yml\na:0:0:444\nZ:Q15hawgNgEJuNw5Ei3b9pwIYSIZNE=\nR:release.yml\na:0:0:444\nZ:Q1c7L+3YgjkuZsU7ACDapjqqtGNao=\nR:update-psl.yml\na:0:0:444\nZ:Q1PNVG4GekhzC9hMIt2c+/MUH/Voo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/akamai\nM:0:0:555\nR:cache-client.go\na:0:0:444\nZ:Q1sCWbYhgJ7dryjgEAv8KJ9mpVK5U=\nR:cache-client_test.go\na:0:0:444\nZ:Q1QuXuvHsmFuG+Wy1IrKdXoSVW7YI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/akamai/proto\nM:0:0:555\nR:akamai.pb.go\na:0:0:444\nZ:Q1sZggSivt9oUlwRtCrOkarqF+scE=\nR:akamai.proto\na:0:0:444\nZ:Q1KCNbGa7UpGC5eT6Jv3LVteUa4X8=\nR:akamai_grpc.pb.go\na:0:0:444\nZ:Q1yn8ST/bvMx32iH//nKEOlWThLNg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/bdns\nM:0:0:555\nR:dns.go\na:0:0:444\nZ:Q1c0hKHJCjqzkGQljbaHHVbynYWNQ=\nR:dns_test.go\na:0:0:444\nZ:Q14/069Hj0/DmpErF0tK9mbd7nbXI=\nR:mocks.go\na:0:0:444\nZ:Q1cRVZkQHgKTJbU+AsgCZPO3Nc3/g=\nR:problem.go\na:0:0:444\nZ:Q1CGPq1MR5JrzeIe0OZUSC7sxxf28=\nR:problem_test.go\na:0:0:444\nZ:Q1bQWtfwbpzhmpD+D1t6VhUZIq9KY=\nR:servers.go\na:0:0:444\nZ:Q10mX8dn6P7bEwbxzs8gP5bBOi5hY=\nR:servers_test.go\na:0:0:444\nZ:Q1e8prZ3q0u4hX8QfkqQM8OvTvjDc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ca\nM:0:0:555\nR:ca.go\na:0:0:444\nZ:Q1VxwCvJRIH5HJLluiTeoyVbgwGeQ=\nR:ca_test.go\na:0:0:444\nZ:Q1jyCJ3aJh7GNeUuwwAu2Y8LCy4xo=\nR:crl.go\na:0:0:444\nZ:Q12tiiFRlm5aDAIYoyxyFY5Pmeltc=\nR:crl_test.go\na:0:0:444\nZ:Q1Z075iG+iHpMBo8LUxsydhN3rq00=\nR:ecdsa_allow_list.go\na:0:0:444\nZ:Q1sjDTk3U4sL34+kUxpv2YR02S6Nk=\nR:ecdsa_allow_list_test.go\na:0:0:444\nZ:Q15nd41AxkY6UQw4XojKLlFmFF/T0=\nR:ocsp.go\na:0:0:444\nZ:Q1rZnTPZR+2wgawXDaalVxHEFgHNY=\nR:ocsp_test.go\na:0:0:444\nZ:Q1gPEAiBADcVWfnT9WHzseZJ56esc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ca/proto\nM:0:0:555\nR:ca.pb.go\na:0:0:444\nZ:Q1con4/rJjtxHupMGddIYW69y/iVE=\nR:ca.proto\na:0:0:444\nZ:Q1ESpMg6yI8cnypv98ZAhfkB2H8iM=\nR:ca_grpc.pb.go\na:0:0:444\nZ:Q1fC1LYGhzhrvUMbLexxZhTFKbUh0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ca/testdata\nM:0:0:555\nR:bad_algorithm.der.csr\na:0:0:444\nZ:Q1FNO/XU7aDKiO8x/MAxXyFHD/rT0=\nR:ca_cert.pem\na:0:0:444\nZ:Q1Kikmx5ySWGiIk9ty6uJGAh/ZXDM=\nR:ca_key.pem\na:0:0:444\nZ:Q1+zu12qkEgF7P+GKdkqkMAP8gnfg=\nR:cn_and_san.der.csr\na:0:0:444\nZ:Q1/42c0JJTl3tqbnKPrfQaGuBxrEU=\nR:ct_poison_extension.der.csr\na:0:0:444\nZ:Q1SIvyAMrRclQAwgZQLUWzxJB6nY8=\nR:ct_poison_extension_empty.der.csr\na:0:0:444\nZ:Q1dW9rxILgS/0EsBPpP7I2+CS6J2w=\nR:dupe_name.der.csr\na:0:0:444\nZ:Q157Dxr93mA+XsIg09aR62kWyfNPY=\nR:duplicate_must_staple.der.csr\na:0:0:444\nZ:Q17+rOIsjdBpFFds+MjxUB7W7tPHQ=\nR:ecdsa.der.csr\na:0:0:444\nZ:Q1QU1Z1XpW/JDswEZjxRfBspgetxA=\nR:ecdsa_allow_list.yml\na:0:0:444\nZ:Q1d/bgv+7BPSsnIy4UgZ9fXBdgCbU=\nR:ecdsa_allow_list2.yml\na:0:0:444\nZ:Q1MqmVn5XOh/EQC6qBX945qPd+sD0=\nR:ecdsa_allow_list_malformed.yml\na:0:0:444\nZ:Q1EgJU3pz5mLQ+WrwGw3btfwRc5ZY=\nR:invalid_signature.der.csr\na:0:0:444\nZ:Q1he3sMkQ0+ECP6+gMOpSPqHDrsho=\nR:long_cn.der.csr\na:0:0:444\nZ:Q1QRhTLS+hlMjo0g7c0xLtRfyNyDc=\nR:must_staple.der.csr\na:0:0:444\nZ:Q1K8MZAk+FVW/+D/QxwQcXYfWaEIk=\nR:no_cn.der.csr\na:0:0:444\nZ:Q1ZIQMaEBqZFs5qjKVmFD6eUTxhNs=\nR:no_names.der.csr\na:0:0:444\nZ:Q1abPOSU2qenAww6w7ASRgCs/JOSg=\nR:no_san.der.csr\na:0:0:444\nZ:Q1TnucP8AOOXOcr2+eVMA5Hchc1QI=\nR:short_key.der.csr\na:0:0:444\nZ:Q1HVNDS5sqyzuIysZs3+yLqm4H6b0=\nR:testcsr.go\na:0:0:444\nZ:Q1rBM55i43HLwiIRBOJma89sPJW5M=\nR:too_many_names.der.csr\na:0:0:444\nZ:Q17sSHj1K6zj1TJoF77BINQBvIIAU=\nR:unsupported_extension.der.csr\na:0:0:444\nZ:Q1/hLurbIU3ZdJgOr4BEBEhNb6Ao4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/canceled\nM:0:0:555\nR:canceled.go\na:0:0:444\nZ:Q1qJl3/+Pz3Xgcc8A3Z4xIKA3d0Ng=\nR:canceled_test.go\na:0:0:444\nZ:Q1dPk9XRprbKS0Jkm7rclvGRF4O6c=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd\nM:0:0:555\nR:clock_generic.go\na:0:0:444\nZ:Q1m0bE4UGEh0325vTSfylf/n7MRIU=\nR:clock_integration.go\na:0:0:444\nZ:Q1NY19CVbCtu5jnQE3I3rBSpE/j38=\nR:config.go\na:0:0:444\nZ:Q1bYfL/mOoBRSZGvl3bu9COzSwoW8=\nR:config_test.go\na:0:0:444\nZ:Q1b4htLJtBl0N0SuQ0CuiXFUNmT2E=\nR:registry.go\na:0:0:444\nZ:Q1M7yZcnpwWpTZ3CPpbxHU9+Fsafo=\nR:shell.go\na:0:0:444\nZ:Q1ec0L423frgjEIq0xRx2m0FEuglg=\nR:shell_test.go\na:0:0:444\nZ:Q1eIHpK/uAOkLAHB50V4/d2AIxC/s=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/admin-revoker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1WoX3C3fgH6LaUhbGMdSvfgfu+iI=\nR:main_test.go\na:0:0:444\nZ:Q1cbPEDeMAoDsthTFDQhJCqf7RB/I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/akamai-purger\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1gKNAm8whTkngwfYCr+dG+VGbqro=\nR:main_test.go\na:0:0:444\nZ:Q1jrha58I5QvkhlAbe7P0ja3jA5Fw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/bad-key-revoker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1k4WGnaC5KgzV/z1N9IZarudszpQ=\nR:main_test.go\na:0:0:444\nZ:Q1wL2qzOmrd0O1sPlt8MrhgsB+Gq8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15zcLU/6ZIsoYWp120QKjyxM7rpE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-ca\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1QU9En/8Po6nJkhbMSj94Zcp22no=\nR:main_test.go\na:0:0:444\nZ:Q1mhaa3IlelF0lJqjtX321TqJJNQE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-observer\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1sHR2rcd0Xn6ntIs2SGsDP8raF60=\nR:main.go\na:0:0:444\nZ:Q1O/YUUZSHzjX3bjPy6rv0nEi0tjM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-publisher\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1bORCe7WwIGI9pq6GppB8fe8aQik=\nR:main_test.go\na:0:0:444\nZ:Q1mhaa3IlelF0lJqjtX321TqJJNQE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-ra\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1L0Noe8nV+X1hvgjWQW3kYgDdW8U=\nR:main_test.go\na:0:0:444\nZ:Q1mhaa3IlelF0lJqjtX321TqJJNQE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-sa\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1IUO8cm0ep/YvYlayJ8ux75CZ080=\nR:main_test.go\na:0:0:444\nZ:Q1mhaa3IlelF0lJqjtX321TqJJNQE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-va\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1FTp5PBi/91DP4NJuuiiDINF+Qb8=\nR:main_test.go\na:0:0:444\nZ:Q1mhaa3IlelF0lJqjtX321TqJJNQE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/boulder-wfe2\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15mbyfXtHzQgPh1olhdNOe59InE0=\nR:main_test.go\na:0:0:444\nZ:Q19Wu2NotSIfG+s/pjF1uCq09GI3I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/caa-log-checker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1DcEbZXyPmmPNif4Dtl0wtZ1BwKU=\nR:main_test.go\na:0:0:444\nZ:Q154p83D3BioxrNEqe1dAKfVPoGVQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/ceremony\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1WeG4M0s9KITPNDq+XVMvFQ7wXeU=\nR:cert.go\na:0:0:444\nZ:Q1qjk+I03gatQTmKLE2qMKJ+Pl8zU=\nR:cert_test.go\na:0:0:444\nZ:Q1J/eQyhTIWuuJ0YQxtMBvvM4s2yc=\nR:crl.go\na:0:0:444\nZ:Q187sv7lddT9wscQw12S0hbbJiMJA=\nR:crl_test.go\na:0:0:444\nZ:Q1hjplHhRAgtjl6onA8Th09k5B3Hw=\nR:ecdsa.go\na:0:0:444\nZ:Q1YS8/janVnuin22lTVaBRyNVxhNQ=\nR:ecdsa_test.go\na:0:0:444\nZ:Q1SM2RucwvT/lrSG+K/Iv3l+J0z58=\nR:file.go\na:0:0:444\nZ:Q1K82jO4F04EYRQt2NYw6M4t5jiow=\nR:file_test.go\na:0:0:444\nZ:Q1776M9BZ0KQqi0uZ+YGoAtJ2vAnA=\nR:key.go\na:0:0:444\nZ:Q1g8BwLkKMHPRe7SeYWG94G8Tzrwg=\nR:key_test.go\na:0:0:444\nZ:Q1Un6z5zWTmL4jm2igcNBeWYRq4ak=\nR:main.go\na:0:0:444\nZ:Q1P8vB4f8WwpOVm7ChSP9sE1vW63M=\nR:main_test.go\na:0:0:444\nZ:Q1mKB3tHZdGz8TVpIK6IjdruLrAek=\nR:ocsp.go\na:0:0:444\nZ:Q1TD+lYfIjidYeZfhRek/feJ5bwwk=\nR:ocsp_test.go\na:0:0:444\nZ:Q12dJBYCG0kC3TdTGS5lMR9PEMxMQ=\nR:rsa.go\na:0:0:444\nZ:Q1pyTDj6W8iJifl1AtoMxH6dYghbI=\nR:rsa_test.go\na:0:0:444\nZ:Q1y9mxZwIcv1uSxeFRSM9p6AZuxdQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/cert-checker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Q8zUB3EeugDztfj2IIiqYDadWhI=\nR:main_test.go\na:0:0:444\nZ:Q1Qo1yO8Xl7btbut/DMchPKRdLBoE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/cert-checker/testdata\nM:0:0:555\nR:quite_invalid.pem\na:0:0:444\nZ:Q1hnFoTaD8IXuJP2orfTM9UJPzG5A=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/contact-auditor\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1eEewRrgWpbPQNpTWCN8NLVXJwqo=\nR:main.go\na:0:0:444\nZ:Q1JAIJ/gjyWzCCUHIK1t31RnB6Z1U=\nR:main_test.go\na:0:0:444\nZ:Q19C+b5HqZLkN94Pwg6B3eXYnvNC0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/crl-checker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1LGVq/u12zsyik5j7j873U4YyHqo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/crl-storer\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1/5rRGA1QWu18wTD/pV4ii1RHsy0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/crl-updater\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q107IWM+Rc+L/kxA7U7mTt/UlG77I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/expiration-mailer\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1dew9QUpyJKEZAwGPr8BnebvFNGA=\nR:main_test.go\na:0:0:444\nZ:Q16MFCFA2zDc+pwvwV87UWQts++0E=\nR:send_test.go\na:0:0:444\nZ:Q1HkuAkzv1CeL8KpNz97qAmCNbZJ0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/id-exporter\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1qgJQDT0w9g0lLXCX2527qEh0u1I=\nR:main_test.go\na:0:0:444\nZ:Q1nb1MiSesUKyL/E1pLX+WWXH5CqU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/log-validator\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1aa7cH52tMcK5Fl89uF7jPEaPEC0=\nR:main_test.go\na:0:0:444\nZ:Q1jC7EyvLhGnDmn96pmO9tr01Nelo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/nonce-service\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1UbW9Ulp3d+4DedVBdLPTi1XQAmc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/notify-mailer\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1bSi2edjoTNoN5WdYXSGRtsystNo=\nR:main_test.go\na:0:0:444\nZ:Q1mWgMBiy9KN2X/grZt1jDpd3K0/A=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/notify-mailer/testdata\nM:0:0:555\nR:test_msg_body.txt\na:0:0:444\nZ:Q1mYJvkt2qYb4DiNDA67cArf4UQxI=\nR:test_msg_recipients.csv\na:0:0:444\nZ:Q1t4QHoLBaFwcWKb/hBCQgl2TbLnM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/ocsp-responder\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1aTl1yICy0faoDEjBINpou+/lbng=\nR:main_test.go\na:0:0:444\nZ:Q1k9Gnv6yitbf4SF15W5TgkndIkRg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/ocsp-responder/testdata\nM:0:0:555\nR:ocsp.req\na:0:0:444\nZ:Q1qjwd4r4fIxF/O5EUPot6VcjNI30=\nR:ocsp.resp\na:0:0:444\nZ:Q1IINOvCKIlYTc2v3EnnYXtxE+lVM=\nR:test-ca.der.pem\na:0:0:444\nZ:Q1+G33BEJ5MC7+0jfvMdkJ54XjxK0=\nR:test-ca.key\na:0:0:444\nZ:Q1iQttvsMSvd4E4Nf6rCPWZ32lIrQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/ocsp-updater\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1u70Uqm4nbIzXPynq29FRMsAZFdk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/orphan-finder\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1ar35texw+AGaxc81nDasD+Epztw=\nR:main_test.go\na:0:0:444\nZ:Q1bVNXYpkMlEmfWOwTyjC2CTJ59Ks=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/reversed-hostname-checker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1MqgaXqzjG/HBcKjT7ZNCfH4wQWM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/rocsp-tool\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q16Irmmr3kPB315ynGW6K4zP//QwY=\nR:client_test.go\na:0:0:444\nZ:Q13F4VZutKOV9y8ONXd2d3aLn2fAs=\nR:inflight.go\na:0:0:444\nZ:Q1bFwGDTXdfTmptjSXTVXMgHGtOj4=\nR:inflight_test.go\na:0:0:444\nZ:Q1qh3D3nhSTV1XvFDPfQxAjixQGHc=\nR:main.go\na:0:0:444\nZ:Q1cD5qrzxwDnoZGKbm4PcQoAjEJ78=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/rocsp-tool/testdata\nM:0:0:555\nR:ocsp.response\na:0:0:444\nZ:Q1YRuo8Ljd22WovbA99XnBc18l8bc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/cmd/testdata\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1yaXEe2i0FSrVkIQHHHuXekeC7pI=\nR:key.pem\na:0:0:444\nZ:Q1VXqgU0QNv1eUM/jdaGptLbAP++I=\nR:minica.pem\na:0:0:444\nZ:Q1EX68dOS9aPGRkxOsUhYYF+Toxeg=\nR:test_dburl\na:0:0:444\nZ:Q1/C4hJWrmh9grvT2x0yODceOxZIQ=\nR:test_dburl_newline\na:0:0:444\nZ:Q1pv3thbnl0tXPxrHQbDEwDMv0xBY=\nR:test_secret\na:0:0:444\nZ:Q1/Gg82e0ZkMouoQuE5eb7oEjCSSk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/core\nM:0:0:555\nR:challenges.go\na:0:0:444\nZ:Q14KIZ1jomErnVjtzWCvvaLCvfO88=\nR:challenges_test.go\na:0:0:444\nZ:Q1oJ9XO4d5SzHW2A9Lvn+Qe8OhOBk=\nR:core_test.go\na:0:0:444\nZ:Q1qJJg63QzR4TP/+co+K8m0akeV1s=\nR:interfaces.go\na:0:0:444\nZ:Q1ZcF0MdN8ze5nOqQTe3/RCKrYURw=\nR:objects.go\na:0:0:444\nZ:Q1H0bn68EQKrRllIBwGY6twEZxIHc=\nR:objects_test.go\na:0:0:444\nZ:Q1emjGgSJWW6vtf0P7KCc++mK22NI=\nR:util.go\na:0:0:444\nZ:Q1ioQ8SpGQY6TQn+sQ2qqHiXdDAhA=\nR:util_test.go\na:0:0:444\nZ:Q1NBJWG3cfeCg63fypH2VplNIKnFk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/core/proto\nM:0:0:555\nR:core.pb.go\na:0:0:444\nZ:Q1r7ujEWKbgaTQIekpbmhQzTR4u0g=\nR:core.proto\na:0:0:444\nZ:Q1VtYAOTxRb4EEzDhhASyjsDq8WwI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/crl\nM:0:0:555\nR:crl.go\na:0:0:444\nZ:Q1944lVnA4l8Y8qMMwkL/Xs7i/CoQ=\nR:crl_test.go\na:0:0:444\nZ:Q15B57pyR+e0UG2tne/34PqA5KeuY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/crl/crl_x509\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:README.md\na:0:0:444\nZ:Q1CV4+9q/G3XzhOiApqoMQd/nd5xs=\nR:crl.go\na:0:0:444\nZ:Q1agmJUFFnEEXQYg9YMF5gce0USd0=\nR:crl_test.go\na:0:0:444\nZ:Q1RoNUjblS80Ije1yPW68tbRFYaLk=\nR:parser.go\na:0:0:444\nZ:Q1tju/IXbg6dVvDEL0jjsC//j7sEg=\nR:parser_test.go\na:0:0:444\nZ:Q1f6mVgPGyrQ1+LcxwXfcyoTdaTa8=\nR:x509.go\na:0:0:444\nZ:Q1HQ5QD0i63RM6WBJuWt2cM0yJpzE=\nR:x509_test.go\na:0:0:444\nZ:Q103n6tx7osaflP1UQS/1tbEqr7gc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/crl/storer\nM:0:0:555\nR:storer.go\na:0:0:444\nZ:Q1f4UnKDACSSMX2hajBvmDHP3CYms=\nR:storer_test.go\na:0:0:444\nZ:Q1a6Z5ZTGPDUcs1zkwNo4Yg6CtM+Y=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/crl/storer/proto\nM:0:0:555\nR:storer.pb.go\na:0:0:444\nZ:Q1kQBYFk3sF1ZFxMINSo04txsMBUA=\nR:storer.proto\na:0:0:444\nZ:Q1himIizo66gzzvf4UgqNxloP2Jnk=\nR:storer_grpc.pb.go\na:0:0:444\nZ:Q17SvQOWLRl30PyAx9dYQIqij1ZS4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/crl/updater\nM:0:0:555\nR:updater.go\na:0:0:444\nZ:Q1IT7Jdv2jvDN5iDx5oHfw/j8gnBI=\nR:updater_test.go\na:0:0:444\nZ:Q1mgNU/4bcCJQ4OQ2yCZqv5U85ujU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/csr\nM:0:0:555\nR:csr.go\na:0:0:444\nZ:Q1lVMaJfyirdlu5ZiU/MkCOfN3VEI=\nR:csr_test.go\na:0:0:444\nZ:Q1YLCytGXuTTSf28l9lxKuqoeOfp8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ctpolicy\nM:0:0:555\nR:ctpolicy.go\na:0:0:444\nZ:Q1+vLsVr1kk5j9+GXZ7v3cHE6MfjQ=\nR:ctpolicy_test.go\na:0:0:444\nZ:Q1xzVlErFsRiaTj9zWMpawAnU6Kcs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ctpolicy/ctconfig\nM:0:0:555\nR:ctconfig.go\na:0:0:444\nZ:Q1aogP9PhyQXwtbTox2bb0YE2w3hU=\nR:ctconfig_test.go\na:0:0:444\nZ:Q1LYcjSgZZAEW2tsTSVtP95CYWgD4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ctpolicy/loglist\nM:0:0:555\nR:lintlist.go\na:0:0:444\nZ:Q1kg0rztizSND3WXFgMtOoBR6RfPw=\nR:loglist.go\na:0:0:444\nZ:Q1yrLdMQe2zxUKMlZrJYdAzd7hWpI=\nR:loglist_test.go\na:0:0:444\nZ:Q1yDWFcovpuN4FEEiBT2Jdkv5ZpLk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ctpolicy/loglist/schema\nM:0:0:555\nR:log_list_schema.json\na:0:0:444\nZ:Q12HqAiXDaPkt6rrE92aF81iEJWgA=\nR:schema.go\na:0:0:444\nZ:Q1igvlj9Kr5pKn/16b0hpARrmCnLc=\nR:update.sh\na:0:0:444\nZ:Q1Wd3ZH4RVagrAQ+CcIvm/NZ7FLNA=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/data\nM:0:0:555\nR:production-email.template\na:0:0:444\nZ:Q1yTfpvyKAp3vToqMiSrEvYIwDNNo=\nR:staging-email.template\na:0:0:444\nZ:Q1+c0X9rfGVrhhu0RqSGctU1AC4A0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/db\nM:0:0:555\nR:gorm.go\na:0:0:444\nZ:Q1Y875belA48rBWKXTKw6dw6I8Cmo=\nR:interfaces.go\na:0:0:444\nZ:Q1Xurvfb7SzuoC8AvfJGi26JLk6ek=\nR:map.go\na:0:0:444\nZ:Q19uU5M6C7ZIaTOmCDYNxLw+r6rwc=\nR:map_test.go\na:0:0:444\nZ:Q1U4QzTw2xNl1KgehPqznuPe3W1eU=\nR:multi.go\na:0:0:444\nZ:Q1WLSq8uYH+2VcLqCeZiSx7X6WhOA=\nR:multi_test.go\na:0:0:444\nZ:Q1MsEmcZDg48oaQzID8l1a4JOMeb8=\nR:rollback.go\na:0:0:444\nZ:Q1cw3XfF+RTpAV3N6uHOgUJJJ12Cw=\nR:rollback_test.go\na:0:0:444\nZ:Q1oisgimrMyaRRx7x3HZxsNB8wm34=\nR:transaction.go\na:0:0:444\nZ:Q1yOkA6+fx1Kmmj/RviZ/CWRmJ++4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/docs\nM:0:0:555\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1wG9QVB+FZ5bxKy15C8MERFGtihE=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1TUwN+pRG+M2d/oVlH55MLeP9oSw=\nR:DESIGN.md\na:0:0:444\nZ:Q1oOtO15zV2teMJftvZj6zAk1dzX8=\nR:acme-divergences-v1.md\na:0:0:444\nZ:Q1GvwnlPtQZbORSgE4qEMgfbybcdc=\nR:acme-divergences.md\na:0:0:444\nZ:Q1ws2c2hpIzZaooo90Vo0b2qDdmV8=\nR:acme-implementation_details.md\na:0:0:444\nZ:Q1bwoK7RSC/rCmdF8Dvnn830bPDFQ=\nR:error-handling.md\na:0:0:444\nZ:Q1UIUbWIk+6Ueg6o15jMOJo+q8eng=\nR:load-testing.md\na:0:0:444\nZ:Q1EDvZ5AHUpto7a1InTMwA7n+AEOE=\nR:logging.md\na:0:0:444\nZ:Q12wJHCJyckDXxoy7B8HoYjFIhCe4=\nR:multi-va.md\na:0:0:444\nZ:Q1nhkCNkp+5uDB578jF4DWceNoR+g=\nR:redis.md\na:0:0:444\nZ:Q1y6t1oJIrx/0eNiYlgm1RwEFYsOM=\nR:release.md\na:0:0:444\nZ:Q1H0NSwbWgx6pIHzjGLgr5xgdppbM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1B+esSUw/FLk6V3hhU8FemEGiBx0=\nR:errors_test.go\na:0:0:444\nZ:Q1MysQd/uodP2IIrLc8u0cw6dlaIc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/features\nM:0:0:555\nR:featureflag_string.go\na:0:0:444\nZ:Q1Z5OlYasx2EWK5ZFgvENu4yG/j4c=\nR:features.go\na:0:0:444\nZ:Q141BGkIMR2rG0H9Fep95GV4rZ/l8=\nR:features_test.go\na:0:0:444\nZ:Q1vuuGFNHCBblFk6C2t/lonC7zc2w=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/goodkey\nM:0:0:555\nR:blocked.go\na:0:0:444\nZ:Q1zqGMDJD/OIHQjP1/A1FPve9FsUQ=\nR:blocked_test.go\na:0:0:444\nZ:Q1VhfLJNPbEAc1H4gYNTIIlO7zC6M=\nR:good_key.go\na:0:0:444\nZ:Q1h6IrL1xUSbCi6o6OVxkQCoGrKEg=\nR:good_key_test.go\na:0:0:444\nZ:Q1nElOx1bk9YtfGW8lVHfejULCx3k=\nR:weak.go\na:0:0:444\nZ:Q1v7rXKxFW2QwxU/sFBcgppL6x3v4=\nR:weak_test.go\na:0:0:444\nZ:Q14fQwGcTeANtnse1qme0Sej9X/c0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1kWIyJfuVL36OX0/1OTX4ZAKXiro=\nR:client_test.go\na:0:0:444\nZ:Q1Nwlm2zsoe67GAqZX6QGwrNp6G0k=\nR:errors.go\na:0:0:444\nZ:Q1gfuREVlAyE1wiyZtUc0jXJGWOQA=\nR:errors_test.go\na:0:0:444\nZ:Q1KPVn74SzEwpVLroXN0RCrRDozNo=\nR:generate.go\na:0:0:444\nZ:Q17bnreRUb7AyEPufWvSl/mKHGIdQ=\nR:interceptors.go\na:0:0:444\nZ:Q1CE2HQa0Lv/KHe3V9BAc+xAhFzZs=\nR:interceptors_test.go\na:0:0:444\nZ:Q1yljk4+yY2u7jhT7SKcJ6rI/UqXE=\nR:pb-marshalling.go\na:0:0:444\nZ:Q1S7y5SAq3ofKiUa0Sc8q5rSBuaI8=\nR:pb-marshalling_test.go\na:0:0:444\nZ:Q1IINs6lZ9JIyeSg8VfsFmHCTCkfY=\nR:protogen.sh\na:0:0:444\nZ:Q1h40vsb+ApUkWQkhZ5i4P/QpcoyA=\nR:resolver.go\na:0:0:444\nZ:Q1EoyAW0Igkg/WkFf0Ws/tvcsi7nw=\nR:resolver_test.go\na:0:0:444\nZ:Q1l4TtK1UONUWf60i3EUPJWjG09GU=\nR:server.go\na:0:0:444\nZ:Q122HsW7RoScDmgtsIpA3mSM+UQi8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/creds\nM:0:0:555\nR:creds.go\na:0:0:444\nZ:Q1BPU6sWYfsHlrOYx2K5JRyeNaFkU=\nR:creds_test.go\na:0:0:444\nZ:Q13benOadqUlD6u2nqrU0fdVjAIyU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/creds/testdata\nM:0:0:555\nR:minica-key.pem\na:0:0:444\nZ:Q15wbeKFhduutB+fC7n34ctYuQxSk=\nR:minica.pem\na:0:0:444\nZ:Q13S6C3qD+gaT6GL13kzDcL64o1D4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/creds/testdata/boulder-client\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1Jyt5PSU+BUxc1N4EXvXa1KGNeb0=\nR:key.pem\na:0:0:444\nZ:Q1WQcw4lKo+0XRlmSk/uR4ho2E1yY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/creds/testdata/example.com\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1l3v1M2ah201mOc6CnFDNahig8b8=\nR:key.pem\na:0:0:444\nZ:Q1f7w3e7p/OYRYLqixmZyIya3274Q=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/backoff\nM:0:0:555\nR:backoff.go\na:0:0:444\nZ:Q14812IiliH343XRFUyp6NoipkO3g=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/grpcrand\nM:0:0:555\nR:grpcrand.go\na:0:0:444\nZ:Q1OuGin4h1qtHjQTvonQO4M/7rYrY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/leakcheck\nM:0:0:555\nR:leakcheck.go\na:0:0:444\nZ:Q13EQaD0QSMSLgAmdMCfGGGQOxkIc=\nR:leakcheck_test.go\na:0:0:444\nZ:Q1bUfiFY+0ZFexm7xAgNO6shqow40=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/resolver\nM:0:0:555\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/resolver/dns\nM:0:0:555\nR:dns_resolver.go\na:0:0:444\nZ:Q1S25icqlA2j1MxUByLmPvHbtQqEU=\nR:dns_resolver_test.go\na:0:0:444\nZ:Q1He+4uK78TauYVOuUG0qJCN2o+AU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/internal/testutils\nM:0:0:555\nR:channel.go\na:0:0:444\nZ:Q1Mjbx8kAqa1F0AjXA/D//Dfu31ik=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/grpc/test_proto\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1socztw/cSwwktGczEkIr4yFDqrI=\nR:interceptors_test.pb.go\na:0:0:444\nZ:Q16fPICfWTfGrGPr7HWe6QHvxY47s=\nR:interceptors_test.proto\na:0:0:444\nZ:Q11c38BAfgl9Q2e9cEVhCPc4oJhyY=\nR:interceptors_test_grpc.pb.go\na:0:0:444\nZ:Q13I/19gLwX7tzpbbe2lawUszhskg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/iana\nM:0:0:555\nR:iana.go\na:0:0:444\nZ:Q1Pba46YRBJSOakqKJyoUrfzK1DDU=\nR:iana_test.go\na:0:0:444\nZ:Q1vPEjSReJD7rXKk/q5Y55LHkVTd8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/identifier\nM:0:0:555\nR:identifier.go\na:0:0:444\nZ:Q16HEXgBBll2Rr0VCeNOorujXhhu4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/issuance\nM:0:0:555\nR:issuance.go\na:0:0:444\nZ:Q1GxCqHDXHWg78AYjQwLKHeMbI2bM=\nR:issuance_test.go\na:0:0:444\nZ:Q1/ouUHlLtkvGhJ3EDQiXEjirP800=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter\nM:0:0:555\nR:linter.go\na:0:0:444\nZ:Q1AuppHxtF1MpqQ1ffXvoHw28ayK0=\nR:linter_test.go\na:0:0:444\nZ:Q11RZ/RSRQp77Hjl2yigqjgxBEEoo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1xB7+Qd52pLpymXQdSJ3aVg9RJgY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/all\nM:0:0:555\nR:w_validity_period_has_extra_second.go\na:0:0:444\nZ:Q1S+CtvFwtmCdsF+L/LPYeSZZxWGY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/crl\nM:0:0:555\nR:lints.go\na:0:0:444\nZ:Q1HMy695jRyrAmquB3grKLEG7oyBc=\nR:lints_test.go\na:0:0:444\nZ:Q15X4FWqU0PpWORkVQnuiJnpx9YRw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/crl/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1A7NrDLMvUUIrS7OIuWCK/VLry6g=\nR:aia.pem\na:0:0:444\nZ:Q16PzrDRNd+dvfUUmdPQyJ21R0VdY=\nR:aki_name_and_serial.pem\na:0:0:444\nZ:Q11SISqEDGMamX0HM489NGmDWgW54=\nR:cert_issuer.pem\na:0:0:444\nZ:Q1fU9oekzuAJ9Cg2WvbvOy5tO6XiU=\nR:critical_number.pem\na:0:0:444\nZ:Q1o6VEG3WRUVD5+ZBNSlvuY2grAUM=\nR:critical_reason.pem\na:0:0:444\nZ:Q1Q9bLooOmbPJLn+38DB3LCoC2jmk=\nR:delta.pem\na:0:0:444\nZ:Q1BTFZDzajRLw3ul94mjVK9UbG9wI=\nR:empty_revoked.pem\na:0:0:444\nZ:Q1ppaiEbN698L7aa0gwtavqowh6gA=\nR:freshest.pem\na:0:0:444\nZ:Q1egu0Vg0qD/pNxEnQlayZTM2PEZE=\nR:gentime_2049.pem\na:0:0:444\nZ:Q17G4/vBNz3qQ8yiVgT3xWMLZXt94=\nR:gentime_revoked_2049.pem\na:0:0:444\nZ:Q1Hp6DNXxxq953IveeQrwqXk9Dq+A=\nR:good.pem\na:0:0:444\nZ:Q18ovptPQ5LGEdibjgViJepEYbm08=\nR:good_gentime_2050.pem\na:0:0:444\nZ:Q1Fiy4xoRNAxcdGiAFAlRZQktlhkc=\nR:good_old.pem\na:0:0:444\nZ:Q1jTN1O3llNdNUnRpmuSjt4tVkfVw=\nR:good_utctime_1950.pem\na:0:0:444\nZ:Q1vGY0Ecg6eec3Sr5p0aGB/BtgjIY=\nR:idp.pem\na:0:0:444\nZ:Q1UqaCW97n+lVNO+5Hjk48mV+0s0w=\nR:long_number.pem\na:0:0:444\nZ:Q1M9g320zEy5APY/XLmSlwdybNquI=\nR:long_validity.pem\na:0:0:444\nZ:Q13pe4ynvcYTNzcnu/hvMhZ5YzVe0=\nR:negative_validity.pem\na:0:0:444\nZ:Q15iB/eDIRGknP9FriyeF9KoWM+Oc=\nR:no_aki.pem\na:0:0:444\nZ:Q1axyud1KB9Mk9YPH7+hf0LrII7BA=\nR:no_issuer_name.pem\na:0:0:444\nZ:Q1J5Dq2ZRVtxJSwLSUnRmEry2QCOY=\nR:no_next_update.pem\na:0:0:444\nZ:Q1YFD1LQPVcDSoKuzwDrqFgr/Ve14=\nR:no_number.pem\na:0:0:444\nZ:Q1RZWIBGRKOyHbgPcxOYNCr36TB7k=\nR:none_revoked.pem\na:0:0:444\nZ:Q1TN2XpgHVGB9ZfZuK4+mA7KSQNGs=\nR:reason_0.pem\na:0:0:444\nZ:Q1B9c/uSaZsxI/XabnTnmCfqCtHWI=\nR:reason_1.pem\na:0:0:444\nZ:Q1jTN1O3llNdNUnRpmuSjt4tVkfVw=\nR:reason_10.pem\na:0:0:444\nZ:Q1GWalp6ANVs8kjZ7BQVD1NLJeN2I=\nR:reason_2.pem\na:0:0:444\nZ:Q1ktyebsjrT/LIHm6xmE6ICoKvIQA=\nR:reason_3.pem\na:0:0:444\nZ:Q1uc4/doRCJgj8unHXNqSVvp1BUAQ=\nR:reason_4.pem\na:0:0:444\nZ:Q1Pydcri2YWU1BAarafqeEe3dsNeo=\nR:reason_5.pem\na:0:0:444\nZ:Q1fwNATsL6ru8uXWIdv5ufOijUwlA=\nR:reason_6.pem\na:0:0:444\nZ:Q1+q7bRNDz1I7fxqNvSqLBk7Ko3RA=\nR:reason_8.pem\na:0:0:444\nZ:Q1/w3YSZaA7M2lKGfjVn1xX63psN0=\nR:reason_9.pem\na:0:0:444\nZ:Q1bQSGci0HsNEE0IHzhnlH+cBn4P4=\nR:utctime_no_seconds.pem\na:0:0:444\nZ:Q1p4seepUCK803SIg3/VVkIgPfpUc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/intermediate\nM:0:0:555\nR:e_validity_period_greater_than_8_years.go\na:0:0:444\nZ:Q1gH7H6VRz1S3g1Cw/Y8AGJcYSz+U=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/root\nM:0:0:555\nR:e_validity_period_greater_than_25_years.go\na:0:0:444\nZ:Q1b0duDXGduRvNphU3DrtElxYLwt0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/linter/lints/subscriber\nM:0:0:555\nR:e_scts_from_same_operator.go\na:0:0:444\nZ:Q1+q0HRzjffWEoRgE8qA7hebBkdqc=\nR:e_validity_period_greater_than_100_days.go\na:0:0:444\nZ:Q1tk5TVfSkrPDMpwW9wM13WkmcHUs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/log\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1BzWOP1tX2dELJ4Yv0BMsyncEUSo=\nR:log_test.go\na:0:0:444\nZ:Q1WBC/e7iqbEFUAkaL1EnOMiB9ZBY=\nR:mock.go\na:0:0:444\nZ:Q1IzHiY9+PuzZ18FHVqCpWqPbZAC4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/mail\nM:0:0:555\nR:mailer.go\na:0:0:444\nZ:Q1OlftO43UsCTozS1kzu4fRLkGts8=\nR:mailer_test.go\na:0:0:444\nZ:Q1cUiXNF+aecZ3JqkT+v3XP4WEzec=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/metrics\nM:0:0:555\nR:scope.go\na:0:0:444\nZ:Q1w0POKHoy+7yK+PtED7zCw+Z1zAI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/metrics/measured_http\nM:0:0:555\nR:http.go\na:0:0:444\nZ:Q1zp7ITx3md6C2eTEQEtOR3nfOBcw=\nR:http_test.go\na:0:0:444\nZ:Q1ENLsDGPKYIjKYJCTeHfysJqPd+Y=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/mocks\nM:0:0:555\nR:ca.go\na:0:0:444\nZ:Q13cg16cHFuRIgs5sir26X0OX52U8=\nR:mocks.go\na:0:0:444\nZ:Q1Bz9qANVv9LVIJXuM1zDEY8p4uwk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/nonce\nM:0:0:555\nR:nonce.go\na:0:0:444\nZ:Q1bUtUj/0tZMEZMnCmPGZIBBZJuRY=\nR:nonce_test.go\na:0:0:444\nZ:Q1f12doIvOLmW88MJ5NQCOh8d/3y0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/nonce/proto\nM:0:0:555\nR:nonce.pb.go\na:0:0:444\nZ:Q1LgcTSJssxWLP6degzHlaL17KuL4=\nR:nonce.proto\na:0:0:444\nZ:Q1fBjf/PoSqVlZZYHk+RfPdL8kfiE=\nR:nonce_grpc.pb.go\na:0:0:444\nZ:Q1jV1KOddQ7RoXeeN5s7baP0SdZ6k=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer\nM:0:0:555\nR:mon_conf.go\na:0:0:444\nZ:Q1CRF1phRUnEF68eXcWLQpSUeVyrA=\nR:mon_conf_test.go\na:0:0:444\nZ:Q1lvZG9v4KjKKEXnVEG9+7dLX26eM=\nR:monitor.go\na:0:0:444\nZ:Q1QhMp6orFMN11k/TEKdnTPcAJwXw=\nR:obs_conf.go\na:0:0:444\nZ:Q1i4tnVIErI0G9fasacxQtulWxOM4=\nR:obs_conf_test.go\na:0:0:444\nZ:Q1OHkqmgioJf/oDQKR+bExdC61m4I=\nR:observer.go\na:0:0:444\nZ:Q13SXJDQxuk9shSpiMs14dMYpb1fM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer/probers\nM:0:0:555\nR:prober.go\na:0:0:444\nZ:Q1Nd+cHrxIJBkGqSFmIANturr4ZjI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer/probers/crl\nM:0:0:555\nR:crl.go\na:0:0:444\nZ:Q1bIc2W1A0rYPt06M/auwSZHqz/J0=\nR:crl_conf.go\na:0:0:444\nZ:Q1WHq5wUWt5IykpvUA9vwh9fIp/8c=\nR:crl_conf_test.go\na:0:0:444\nZ:Q1kI9+MmVrtmxETNr2Nf4yqLKRQrE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer/probers/dns\nM:0:0:555\nR:dns.go\na:0:0:444\nZ:Q12CioxBbAen8qAgE31pjWSoxp2mc=\nR:dns_conf.go\na:0:0:444\nZ:Q1frLz0NUSz+rROpgF49BhfZjpPRc=\nR:dns_conf_test.go\na:0:0:444\nZ:Q1w9FrH5VRZSmXCm/FxQI54lNKWxc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer/probers/http\nM:0:0:555\nR:http.go\na:0:0:444\nZ:Q1CXHI3t2RVM2Ax3DhFZiHQk4g2SY=\nR:http_conf.go\na:0:0:444\nZ:Q1Za2dlM7rhr/ZympKjtKvxr/7cZU=\nR:http_conf_test.go\na:0:0:444\nZ:Q1Bw0eZslUEcDwWj/B5LT6OVX+Sg4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/observer/probers/mock\nM:0:0:555\nR:mock_conf.go\na:0:0:444\nZ:Q1wWHH2F/f0M0X2nGgdnCIWVaw1WI=\nR:mock_prober.go\na:0:0:444\nZ:Q167g3PgKJjCRY14BghGglPh++XcU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp\nM:0:0:555\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/responder\nM:0:0:555\nR:db_source.go\na:0:0:444\nZ:Q1tiKKoFWA40UcQ4CtZiLrM46dk1E=\nR:db_source_test.go\na:0:0:444\nZ:Q1WTdtHcVYilR4MEoh8KsVnLNpNOA=\nR:filter_source.go\na:0:0:444\nZ:Q1uXbIGgENQGIw/MljmwO0feqFV1E=\nR:filter_source_test.go\na:0:0:444\nZ:Q1fc9WzvttS0HXUDU+N5B1uzKCFMY=\nR:inmem_source.go\na:0:0:444\nZ:Q1v1T++3ufLh0ECC8jEeiz5o8QTYQ=\nR:multi_source.go\na:0:0:444\nZ:Q1UmY42wxTSIIh66OK6POsuKvzBqk=\nR:multi_source_test.go\na:0:0:444\nZ:Q1l+7NYf5Asatc2fh8GpPgiYv9P8E=\nR:responder.go\na:0:0:444\nZ:Q1aovhmy8J8Edwt8UQiQ0fT6+PTYo=\nR:responder_test.go\na:0:0:444\nZ:Q1X+vYxao3ZdtX7cfY/CtUFF5pzok=\nR:source.go\na:0:0:444\nZ:Q1wgvY8T1wNTdRU67XjK/DiF2jRKw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/responder/live\nM:0:0:555\nR:live.go\na:0:0:444\nZ:Q1b5BA1aYedf4qqV1ublNCsubv610=\nR:live_test.go\na:0:0:444\nZ:Q1uGuQRAWNgh7imTRN5pxHoEhMVLc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/responder/redis\nM:0:0:555\nR:checked_redis_source.go\na:0:0:444\nZ:Q1/DzKV/uvPREA7lqYhxjmNrMpC3k=\nR:checked_redis_source_test.go\na:0:0:444\nZ:Q1G3a50qAbw5Wt3fgZDIjFXDA1gqM=\nR:redis_source.go\na:0:0:444\nZ:Q1xtNcpA9E0jHqMCnNCZ9FIND7oHA=\nR:redis_source_test.go\na:0:0:444\nZ:Q1+Ive92si3sIAXwgzvh1ie+7kpAM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/responder/testdata\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q18lxX2yFGG+zllXiZlhlifElT3q8=\nR:ocsp.req\na:0:0:444\nZ:Q1qjwd4r4fIxF/O5EUPot6VcjNI30=\nR:ocsp.resp\na:0:0:444\nZ:Q1IINOvCKIlYTc2v3EnnYXtxE+lVM=\nR:resp64.pem\na:0:0:444\nZ:Q1H/gY4kpX5vWnkccF9ZjS1gZ/QlI=\nR:response.der\na:0:0:444\nZ:Q1MQtr078vvGEQaqaXSqgUZj/NQHI=\nR:response_broken.pem\na:0:0:444\nZ:Q1Fbz45f8ZNtIwhFnZac04q6aVGrY=\nR:response_mix.pem\na:0:0:444\nZ:Q1sLnuNn6ANz9tVyEdGRvpKB4tss0=\nR:test-ca.der.pem\na:0:0:444\nZ:Q1+G33BEJ5MC7+0jfvMdkJ54XjxK0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/test\nM:0:0:555\nR:response.go\na:0:0:444\nZ:Q1DlpRvUhu0SjZjc5xtOmj3T+uXs0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/updater\nM:0:0:555\nR:updater.go\na:0:0:444\nZ:Q1iOXaSXZCrHyjvXDKw3APEa+19B4=\nR:updater_test.go\na:0:0:444\nZ:Q1tOlgmkY5Atm9UuKhWlMQm//rWF4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ocsp/updater/testdata\nM:0:0:555\nR:test-cert-b.pem\na:0:0:444\nZ:Q1wGfjJeqP+nTk50mgcTA3ytL1pBU=\nR:test-cert.pem\na:0:0:444\nZ:Q1P9whNWrVyUdMyQGZTakkfgnBo/c=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/pkcs11helpers\nM:0:0:555\nR:helpers.go\na:0:0:444\nZ:Q1dtq7gYEjnQI020wcKiIBaYt09tg=\nR:helpers_test.go\na:0:0:444\nZ:Q1d1pBLu0nkJ9HgMUuyhtVIuARR0M=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/policy\nM:0:0:555\nR:pa.go\na:0:0:444\nZ:Q10Z7gqQ1jl/Id6VK0FxuifPfNSZE=\nR:pa_test.go\na:0:0:444\nZ:Q14+ct9RamVyvFnIqmJQkWqdsTAnY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/policyasn1\nM:0:0:555\nR:policy.go\na:0:0:444\nZ:Q1D/uCfBBkMs6wW5MBeQhNV33X6yg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/privatekey\nM:0:0:555\nR:privatekey.go\na:0:0:444\nZ:Q1R/Xn8KIqDV1HNtm/Xf3LvWmgtCo=\nR:privatekey_test.go\na:0:0:444\nZ:Q1xMM1qX+7q2D0tyNv9GXICjxvo+I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/probs\nM:0:0:555\nR:probs.go\na:0:0:444\nZ:Q1RgCOK1TMcdtLrmJJjFkc/Ko5JWs=\nR:probs_test.go\na:0:0:444\nZ:Q1H22eNjMTyPpEYOEOwKH1Exyk/WU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/publisher\nM:0:0:555\nR:publisher.go\na:0:0:444\nZ:Q1BG1zF1FByxPvPBnDao1e8y4PmFk=\nR:publisher_test.go\na:0:0:444\nZ:Q1r7zCQJTDL4ebzgK+01klCI9cXMQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/publisher/proto\nM:0:0:555\nR:publisher.pb.go\na:0:0:444\nZ:Q1Vhy0a6AtdIFnhmP7NE0zQ24Eymw=\nR:publisher.proto\na:0:0:444\nZ:Q16CPqJLx60dHXBo6UQsPzKTIoaJ4=\nR:publisher_grpc.pb.go\na:0:0:444\nZ:Q1kd0XlUQQ51kKxJ+PU48D6B2ouX8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/publisher/test\nM:0:0:555\nR:testIntermediate.pem\na:0:0:444\nZ:Q1r2HH8A2PNCoxrdnN7dIbBdcHGnI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ra\nM:0:0:555\nR:mock_test.go\na:0:0:444\nZ:Q1ekmSRRFw4IVbqzWmeS7gRkhD0Xw=\nR:ra.go\na:0:0:444\nZ:Q1NZzpOpClZpX1z5Mog1qppzfxTnA=\nR:ra_test.go\na:0:0:444\nZ:Q1SN+o2Gi2MRvLEr45vVyMsxKtq3I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ra/proto\nM:0:0:555\nR:ra.pb.go\na:0:0:444\nZ:Q1BGKrxAgFoYwQ5hGVOQ+bNoD4/k4=\nR:ra.proto\na:0:0:444\nZ:Q1JNIET60Cvedwgz9/hptz1fpm4so=\nR:ra_grpc.pb.go\na:0:0:444\nZ:Q1jSHtJYKfINdyZXAc03xjs65pE44=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/ratelimit\nM:0:0:555\nR:rate-limits.go\na:0:0:444\nZ:Q14CifQIY1I3AzJJcimuRTO1djG3k=\nR:rate-limits_test.go\na:0:0:444\nZ:Q1ycK8mO7AHdu8CgfJcKAqZjy9HFc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/reloader\nM:0:0:555\nR:reloader.go\na:0:0:444\nZ:Q1w5Gnf1L3YA+qQCSF6PxJwjtBJjI=\nR:reloader_test.go\na:0:0:444\nZ:Q1CijXc73icRM6LhwbjOgqtXGsGQY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/revocation\nM:0:0:555\nR:reasons.go\na:0:0:444\nZ:Q1ETHg2BiUlyPHcAUaLQjoziPYLvk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/rocsp\nM:0:0:555\nR:metrics.go\na:0:0:444\nZ:Q1hPlgrfbNuNWJFfv+GuMtZcEPAGA=\nR:metrics_test.go\na:0:0:444\nZ:Q1M3MWQVK2S20Lp+zEjgdHRERE5SQ=\nR:mocks.go\na:0:0:444\nZ:Q1ZdbUyvL01ta9DrVgQ7g67GZxzJ4=\nR:rocsp.go\na:0:0:444\nZ:Q1M/xWmux6iuVjfXQEXv3+7pxYkQA=\nR:rocsp_test.go\na:0:0:444\nZ:Q1hLZfGUiwc01dJVmjr6tnHkWwMD4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/rocsp/config\nM:0:0:555\nR:issuers_test.go\na:0:0:444\nZ:Q1YaP42Di138Bhgvq8e8v7n/2Ewhw=\nR:rocsp_config.go\na:0:0:444\nZ:Q1LlyM7eQN0HWfCZX7EvqX18Vzlak=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/rocsp/testdata\nM:0:0:555\nR:ocsp.response\na:0:0:444\nZ:Q1YRuo8Ljd22WovbA99XnBc18l8bc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa\nM:0:0:555\nR:database.go\na:0:0:444\nZ:Q1YdCtgtnwrqlcdL7IOTGIZYdPztY=\nR:database_test.go\na:0:0:444\nZ:Q1xmaZ1a4lU0afJ4gZiAelUZhHe6E=\nR:ip_range_test.go\na:0:0:444\nZ:Q107yo07UeZugz7VBsE9Kf93Yc63M=\nR:metrics.go\na:0:0:444\nZ:Q12AL8HYowR7vEyDN8jfkF+Umx0Qs=\nR:migrations.sh\na:0:0:444\nZ:Q1zAK0NqPimBM+gAuWuLJqvD996Q8=\nR:model.go\na:0:0:444\nZ:Q1XRZy9oLrdStAF1zKBkQWCI2Yctg=\nR:model_test.go\na:0:0:444\nZ:Q1r9tV6yLNHjdtISM2cPjx0hy1GUA=\nR:precertificates.go\na:0:0:444\nZ:Q1GGzTB6JnDRIcmWBmyixFqsDONsU=\nR:precertificates_test.go\na:0:0:444\nZ:Q1OLQLMYS+YYy/6mJgh9E/A7CJWk4=\nR:rate_limits.go\na:0:0:444\nZ:Q1VtOJiQwyVxwraTXIUQD9X6eVk8U=\nR:rate_limits_test.go\na:0:0:444\nZ:Q1P51uNisNQoctGN5WdMBGDGj83Bk=\nR:sa.go\na:0:0:444\nZ:Q1Ae1NONbEQNVRa8yrNTIw2c+8tKo=\nR:sa_test.go\na:0:0:444\nZ:Q11P5Nu/Q9PFGPfGom2V2mmOlPfck=\nR:test-cert.der\na:0:0:444\nZ:Q17s4PHl5YoGXzUY8EGYhMhATwC4U=\nR:test-cert2.der\na:0:0:444\nZ:Q1fC8iy4GZBwwQTZBNmnM4jrky+Gg=\nR:type-converter.go\na:0:0:444\nZ:Q1uh55pvepWopNl+NExJKm1csJ7Y0=\nR:type-converter_test.go\na:0:0:444\nZ:Q13BossX0T0TW++VZZnteNSmvzRsI=\nR:www.eff.org.der\na:0:0:444\nZ:Q1HvlvGAIiJvZjPMPodfuOfDFnkd4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db\nM:0:0:555\nR:dbconfig.yml\na:0:0:444\nZ:Q1EHQdeEjWTHTdgAuNDz9HBdgfcjU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db/boulder_sa\nM:0:0:555\nR:20210223140000_CombinedSchema.sql\na:0:0:444\nZ:Q1QNK7goEjxsZlOTeqO4ZdxePJhuI=\nR:20210308140000_SimplePartitioning.sql\na:0:0:444\nZ:Q1Bjwr/tomW3XjQCdSmNbFkiLWPNE=\nR:20220328100000_Incidents.sql\na:0:0:444\nZ:Q16Dqfi/kA6zzL/ImYrPs3h/F21UM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db/incidents_sa\nM:0:0:555\nR:20220328100000_Incidents.sql\na:0:0:444\nZ:Q1HQloaMitIW5Z16zkxhJjoTU91II=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db-next\nM:0:0:555\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db-next/boulder_sa\nM:0:0:555\nR:20210223140001_DropCertStatusSubscriberApproved.sql\na:0:0:444\nZ:Q1f28V2Z49PEHMgyAYklzTL+cSfrg=\nR:20210223140002_DropCertStatusLockCol.sql\na:0:0:444\nZ:Q1DVDdgcq0AxXg5lKQs5dfdv3GE4g=\nR:20210223140003_IssuedNamesDropIndex.sql\na:0:0:444\nZ:Q1BTISkC97ObAE4uEHrWJwGFaDVLM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/db-users\nM:0:0:555\nR:boulder_sa.sql\na:0:0:444\nZ:Q12XE9JqmDM5iSy1zMfIvUE1i4+GQ=\nR:incidents_sa.sql\na:0:0:444\nZ:Q1G/ql0OY4KfmKCYOwy5TQGAPUd2Q=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/proto\nM:0:0:555\nR:sa.pb.go\na:0:0:444\nZ:Q1uYFBVaVtPm3xkXwi0vTGU8wGDmo=\nR:sa.proto\na:0:0:444\nZ:Q16jc5qFRUHlW4y4vRvgoBAoCo2is=\nR:sa_grpc.pb.go\na:0:0:444\nZ:Q1M135nh+l1t48LtGJ/WdWyal/WBg=\nR:subsets.go\na:0:0:444\nZ:Q1ZM6qQNKzKN7w+ByXR8tLh98SLxo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/satest\nM:0:0:555\nR:satest.go\na:0:0:444\nZ:Q1PSKfL/mGDI+6yVvBcaZwi9KLPBM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/sa/testdata\nM:0:0:555\nR:ocsp.response\na:0:0:444\nZ:Q1YRuo8Ljd22WovbA99XnBc18l8bc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test\nM:0:0:555\nR:PKI.md\na:0:0:444\nZ:Q1jIBKbMQeJnKcjvlZsHMIgsVPjfA=\nR:asserts.go\na:0:0:444\nZ:Q1ZJi/S+3xQ9SJ65viIfLWEwgm4VA=\nR:certs.go\na:0:0:444\nZ:Q1GrLMnUBdjaRipchsSbS988P9hxo=\nR:challtestsrv.py\na:0:0:444\nZ:Q191tEUUyXTmFchErHDjYFLzhwHVA=\nR:chisel2.py\na:0:0:444\nZ:Q1l32jf+JHJ+UlUfh4BIwwryQbh7Y=\nR:create_db.sh\na:0:0:444\nZ:Q1SlQjmnsXfv77pR8Mc5JvUCrYGFo=\nR:db.go\na:0:0:444\nZ:Q1WIgnXT0ry2V33dAWa8JpIFVOpBE=\nR:entrypoint-netaccess.sh\na:0:0:444\nZ:Q18MHN8cJWHiVugB5Iw9UpI4ZoIFo=\nR:entrypoint.sh\na:0:0:444\nZ:Q1VjI7QYfdXrVSkNcl5A06Lz38Kcw=\nR:example-bad-key-revoker-template\na:0:0:444\nZ:Q1KnupuoGRYohuosqU+MMs57y/3ms=\nR:example-blocked-keys.yaml\na:0:0:444\nZ:Q1RX+uXwOeTNhm7+E66KaNJQZxiJA=\nR:example-weak-keys.json\na:0:0:444\nZ:Q1a2lFHFDq6dm/3CbXWaUKwZN3Mgo=\nR:helpers.py\na:0:0:444\nZ:Q1NNEyeMw2NIhhNKysFR16Z+Wc2LE=\nR:hostname-policy.yaml\na:0:0:444\nZ:Q1R+wT+BZCbZcqR+jbgOQexcxtAy0=\nR:integration-test.py\na:0:0:444\nZ:Q14tPBu3/aQlfiMQ+VvYXSVgq2SlQ=\nR:issuer-ocsp-responder.json\na:0:0:444\nZ:Q143IuC05yp4Z8BRE80NKYqVTuCSY=\nR:rate-limit-policies-b.yml\na:0:0:444\nZ:Q10IWIccesPYQwHxHKXbRpHwsyagQ=\nR:rate-limit-policies.yml\na:0:0:444\nZ:Q1Ld+2Pq8I1aiNXsqy2usx3C3ShDE=\nR:redis-cli.sh\na:0:0:444\nZ:Q128W2P6yeiqE9wZOYgUML8de4LT4=\nR:redis-create.sh\na:0:0:444\nZ:Q1PsxD5Fd0i5mFDGL3K/0PcsJ76wE=\nR:redis.config\na:0:0:444\nZ:Q1N6pJfiy7olHdnfGWRQHKMc97FyE=\nR:startservers.py\na:0:0:444\nZ:Q1i31tgwXxJwDVX+bR7WkyTKiDsNw=\nR:test-ca-cross.pem\na:0:0:444\nZ:Q1OihyyZRoyc96jPy/OWtDos1zVOk=\nR:test-ca.der\na:0:0:444\nZ:Q1XZjpGmHwEazYC05bF+azMOzsXtY=\nR:test-ca.key\na:0:0:444\nZ:Q1iQttvsMSvd4E4Nf6rCPWZ32lIrQ=\nR:test-ca.key-pkcs11.json\na:0:0:444\nZ:Q1RE27iARtv2gdh46NkiX7HIs0pIo=\nR:test-ca.key.der\na:0:0:444\nZ:Q1Y4ZNrfZSERW1gf+xVwGhsbvxkO8=\nR:test-ca.pem\na:0:0:444\nZ:Q1glcQ6p5cDDhRv7mT8kDGrVAHc24=\nR:test-ca.pubkey.pem\na:0:0:444\nZ:Q1MfjqKQCvJIey9Itp35is0ztnJ8M=\nR:test-ca2-cross.pem\na:0:0:444\nZ:Q12IgwtLsnUqjWFqSTnFSHIR7iLSs=\nR:test-ca2.pem\na:0:0:444\nZ:Q1OO8nvg6AwK3fwn6Fg7wEcTYQtu4=\nR:test-caa-log-checker.sh\na:0:0:444\nZ:Q1MPUt0cjptiHgD33blRjjz8zM6gY=\nR:test-ee.key\na:0:0:444\nZ:Q1BpwEg6VwWsr/SToolEaKxG228/w=\nR:test-ee.pem\na:0:0:444\nZ:Q1ZSRGqIVTfu6mVPx7fy4n44hAkZU=\nR:test-example.key\na:0:0:444\nZ:Q1SxptNvYgORs0BgBTNTXsmLp48l4=\nR:test-example.pem\na:0:0:444\nZ:Q1bntLK/syGrylk/W5DijHF+cL66A=\nR:test-key-5.der\na:0:0:444\nZ:Q1M5aPjbaYhnZDYJVeMay4ADIgyRI=\nR:test-root.der\na:0:0:444\nZ:Q1+o9KcrkAdOTv72Ro8j0Zv/6VDAs=\nR:test-root.key\na:0:0:444\nZ:Q1Gp2PDlWnzeIluXlFcvnfvaO27y8=\nR:test-root.key-pkcs11.json\na:0:0:444\nZ:Q1vgjk6i0kdogurQwWmPcBqHIfeVE=\nR:test-root.key.der\na:0:0:444\nZ:Q1PDMbP8DOmrzrCbBS30O41kAKJTc=\nR:test-root.pem\na:0:0:444\nZ:Q1LmlYGQMazaThf8Yvz1pqwTZbXek=\nR:test-root.pubkey.pem\na:0:0:444\nZ:Q11dgIqPxGuJ3fCcYSEy6cygr+0rk=\nR:test-root2.key\na:0:0:444\nZ:Q1Og+8cc1jAlM+GMg1gPgTe4bKfhw=\nR:test-root2.pem\na:0:0:444\nZ:Q162+BhG+KmuoGBwOk0Ae9nBpLiXs=\nR:v2_integration.py\na:0:0:444\nZ:Q1C7+IEBloOZtVY4IFbBY4AwNIFi8=\nR:wait-for-it.sh\na:0:0:444\nZ:Q1pjduj2K/BO1ICc6pDhl/7k8hp70=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/akamai-test-srv\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1p724WoUin1x+BN6rpUXjdCKyZJc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/block-a-key\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q19LV/Uec8FLH2tLHuAwsp7GDBjco=\nR:main_test.go\na:0:0:444\nZ:Q1IscjPMNm+Q2XStfuhGScsHlEeGY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/block-a-key/test\nM:0:0:555\nR:README.txt\na:0:0:444\nZ:Q1CJJ7Aj7vdYSMkvh/5tL8ZgNa5No=\nR:test.ecdsa.cert.pem\na:0:0:444\nZ:Q1N1wOks/xZLUwwfhSYtxpRXrxmzI=\nR:test.ecdsa.jwk.json\na:0:0:444\nZ:Q13Ona7mA6BX4bghrT0I932lc+s1I=\nR:test.rsa.cert.pem\na:0:0:444\nZ:Q1T+8gZWDTXUJK4Q9FAREWvoRX5Lo=\nR:test.rsa.jwk.json\na:0:0:444\nZ:Q1JqRo1wF92pjBfzA7FKs7EUbx3RI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/boulder-tools\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1oLy/hLUpoYeyv/oAxSdsGg/PRyI=\nR:README.md\na:0:0:444\nZ:Q1fAuMZjL7xd633vWI0C/RNlitmak=\nR:boulder.rsyslog.conf\na:0:0:444\nZ:Q1KYiPIhRm60P9j6gBDgHs27lHLnU=\nR:build.sh\na:0:0:444\nZ:Q1JpOBEDj0XLDI3i6iLjN1wRieOPs=\nR:requirements.txt\na:0:0:444\nZ:Q1UHgWQXNkqvbjkfHOrGt4rBRy3KU=\nR:tag_and_upload.sh\na:0:0:444\nZ:Q1KqmuDReouWChD4VswhxBGdTCxMA=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/cert-ceremonies\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1uuKsbgg0JnrjTCQdOyW1AEtEaGo=\nR:intermediate-ceremony-ecdsa.yaml\na:0:0:444\nZ:Q1Xm0uxpN1wLAdt7QUP+6++/0F998=\nR:intermediate-ceremony-rsa.yaml\na:0:0:444\nZ:Q1wpi1gywK0ATTJQn2kIqkHlKX3yM=\nR:intermediate-key-ceremony-ecdsa.yaml\na:0:0:444\nZ:Q1+CHZt5HIzt6VivrQqjYU1eypFaY=\nR:intermediate-key-ceremony-rsa.yaml\na:0:0:444\nZ:Q1Gz8HQIyDTALmc7YAJs3HakVG6Ag=\nR:intermediate-ocsp-rsa.yaml\na:0:0:444\nZ:Q1IYV7ZRZxVSRey7wya+PXb0xdurM=\nR:root-ceremony-ecdsa.yaml\na:0:0:444\nZ:Q1i/IepV+e/yS9IwMd4kQLV+L8+Do=\nR:root-ceremony-rsa.yaml\na:0:0:444\nZ:Q1nyN6esI3KAJEdRLBKxIdCENhwqs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/config\nM:0:0:555\nR:admin-revoker.json\na:0:0:444\nZ:Q1hvv/QFC6XBlBekn+cZurP7nKYhc=\nR:akamai-purger.json\na:0:0:444\nZ:Q1pVnx8iG4ZlH/3zIel8lhm9dyWBU=\nR:bad-key-revoker.json\na:0:0:444\nZ:Q1PZsxOKgfjapW9yMjrSZ6VRRbq78=\nR:ca-a.json\na:0:0:444\nZ:Q1AlkjpVHM6uwtQ9Ntc7cQ9Km/X+s=\nR:ca-b.json\na:0:0:444\nZ:Q15JnFvg+khOV9CBaPUQHGM9wpjwg=\nR:cert-checker.json\na:0:0:444\nZ:Q1U6BmFBzFoLtiT82K52nQ1yGntnU=\nR:contact-auditor.json\na:0:0:444\nZ:Q1Sd8O3PCqAtuHNCUrAepSsoZPrKY=\nR:contact-exporter.json\na:0:0:444\nZ:Q1UgVhYSyNQXo9LjhlpWqxDc1HVqs=\nR:crl-storer.ini\na:0:0:444\nZ:Q13eoUFdZqVnSDta7jTr3ICCLI2Ug=\nR:crl-storer.json\na:0:0:444\nZ:Q1/2vpqkJhOd7eLbDQgNFwLw0Jh80=\nR:crl-updater.json\na:0:0:444\nZ:Q1Ai+e2V0+Upe3jbsnQkxLueeQDPw=\nR:ecdsaAllowList.yml\na:0:0:444\nZ:Q1d/bgv+7BPSsnIy4UgZ9fXBdgCbU=\nR:expiration-mailer.gotmpl\na:0:0:444\nZ:Q1Ypb4uYBq/4mIlUb+Dk7vm0C52Ck=\nR:expiration-mailer.json\na:0:0:444\nZ:Q1FHSqYooIkHQ9Dgl9lGBiLkMyRJo=\nR:health-checker.json\na:0:0:444\nZ:Q1N6NZu4GaOdYcTxsdtqvE/wN9vaE=\nR:log-validator.json\na:0:0:444\nZ:Q1JM4dlrvB8cv5f9y44fTO35F5zhU=\nR:nonce.json\na:0:0:444\nZ:Q1pAYtnt5jPR4fMvvfeko/s/dJPuE=\nR:notify-mailer.json\na:0:0:444\nZ:Q1wBI/G8WCI7VGqTZBW47YtXdEhz4=\nR:observer.yml\na:0:0:444\nZ:Q1YBiavb0H9E8t8jatcnAm7B42ZhA=\nR:ocsp-responder.json\na:0:0:444\nZ:Q17cfxgV9VkKDXf9pc+rQxB+EbRuY=\nR:ocsp-updater.json\na:0:0:444\nZ:Q14+g/t1iA1E67oCLmz3bFT9Ty4WM=\nR:orphan-finder.json\na:0:0:444\nZ:Q1rP/fjgtK8WqJWdgwl+5vaxA7ht8=\nR:publisher.json\na:0:0:444\nZ:Q1oMmZtsdAijYrrTSxjofxemqnbV8=\nR:ra.json\na:0:0:444\nZ:Q1NH4bqnpXVcQRUHvQUCGhfIcdi8w=\nR:rocsp-tool.json\na:0:0:444\nZ:Q1DJgmIowkqeDybNePbU6KWrcrJmc=\nR:sa.json\na:0:0:444\nZ:Q1OkrsHeUoHBjDJaiY3ULoOFeRnMQ=\nR:va-remote-a.json\na:0:0:444\nZ:Q1rZ7w40PFWgQrtArTH7yrJqt22uw=\nR:va-remote-b.json\na:0:0:444\nZ:Q1Ak+x8pAdBkq3/LSxadxv9gLmcTM=\nR:va.json\na:0:0:444\nZ:Q167Hk7+TLVJzfdOsJNJoMbpzFAvw=\nR:wfe2.json\na:0:0:444\nZ:Q1vSsaIukPebWTL+RjMTRheBSukfs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/config-next\nM:0:0:555\nR:admin-revoker.json\na:0:0:444\nZ:Q1I/eYLT1ASnPZnHgAHwoKUHY9b7s=\nR:akamai-purger.json\na:0:0:444\nZ:Q1/J+S39Dt+cpEZbq6UOO750fKsok=\nR:bad-key-revoker.json\na:0:0:444\nZ:Q1FS3BWDfJVAxt8x6qWs4t5i4SB9M=\nR:ca-a.json\na:0:0:444\nZ:Q1MG9JIQhUr1DJ+80UHGQ28KsLQ5M=\nR:ca-b.json\na:0:0:444\nZ:Q1asfivOfr5noohNJbPGcF/97FtMQ=\nR:cert-checker.json\na:0:0:444\nZ:Q1Q7fFYD6dxf+Pf1Wt+WZHNT6yh/c=\nR:contact-auditor.json\na:0:0:444\nZ:Q1Sd8O3PCqAtuHNCUrAepSsoZPrKY=\nR:contact-exporter.json\na:0:0:444\nZ:Q1UgVhYSyNQXo9LjhlpWqxDc1HVqs=\nR:crl-storer.ini\na:0:0:444\nZ:Q13eoUFdZqVnSDta7jTr3ICCLI2Ug=\nR:crl-storer.json\na:0:0:444\nZ:Q1R44ojSn2pNFUCmQAj0GBeW+kieU=\nR:crl-updater.json\na:0:0:444\nZ:Q15wI43239N2M8a0pjsQle40SZtT8=\nR:ecdsaAllowList.yml\na:0:0:444\nZ:Q1d/bgv+7BPSsnIy4UgZ9fXBdgCbU=\nR:expiration-mailer.gotmpl\na:0:0:444\nZ:Q1ydRIL7WmE9vweKxCL8P84TuD39A=\nR:expiration-mailer.json\na:0:0:444\nZ:Q1p7b9LGMcZOE6gHDOC7qmRNwPxh4=\nR:health-checker.json\na:0:0:444\nZ:Q1N6NZu4GaOdYcTxsdtqvE/wN9vaE=\nR:log-validator.json\na:0:0:444\nZ:Q1JM4dlrvB8cv5f9y44fTO35F5zhU=\nR:nonce.json\na:0:0:444\nZ:Q1Y9U9OnhvGWgTSR+qHY5fKTOYqKI=\nR:notify-mailer.json\na:0:0:444\nZ:Q1ioONTiFwOEhn0wRUzEDYhmFzuUc=\nR:observer.yml\na:0:0:444\nZ:Q13rPafxsY06xkWIghlE9i+5vYQ+o=\nR:ocsp-responder.json\na:0:0:444\nZ:Q1wdDMY3h0NooWNAD0I6MDsEoib3M=\nR:ocsp-updater.json\na:0:0:444\nZ:Q1MpykGmsMTImZw+hgeC2Q+2ZplX8=\nR:orphan-finder.json\na:0:0:444\nZ:Q1VQbW2w7YzcR+Zyf5CmsSSIAEwPg=\nR:publisher.json\na:0:0:444\nZ:Q1hOG3UCp07ewi3vnlNItE0HfNP6o=\nR:ra.json\na:0:0:444\nZ:Q1R3vGDwfAkC7a1M0jGODIHvNG9/M=\nR:sa.json\na:0:0:444\nZ:Q1BdgzRU8U+RkD23h5vtIIGXHNa6Y=\nR:va-remote-a.json\na:0:0:444\nZ:Q1MbXL6cOmUDYs8hHfqEo1qrPKm2E=\nR:va-remote-b.json\na:0:0:444\nZ:Q1nEMxt6sqPk+ltmVuRdyz3mVi34c=\nR:va.json\na:0:0:444\nZ:Q1iw8r0V0WV5jz0azHiPhgAmpGhyU=\nR:wfe2.json\na:0:0:444\nZ:Q1e53WOhcMC51hRQ1AVW1Lp0lkY0I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/consul\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1BaShnYiek5K21d9DlTzkoUEYyv4=\nR:config.hcl\na:0:0:444\nZ:Q1x8O36JEZXLlRZ5Sfnqrs/qQ1AYE=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/ct-test-srv\nM:0:0:555\nR:ct-test-srv.json\na:0:0:444\nZ:Q1kz9bJlc8RL1XTajVvCOl784ac4M=\nR:log_list.json\na:0:0:444\nZ:Q1LTFTAJeJf7hAu3yY1ZUdauUwn6M=\nR:main.go\na:0:0:444\nZ:Q1kxIsbw7qIIBZlQcDre1kuTFOlQk=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grafana\nM:0:0:555\nR:boulderdash.json\na:0:0:444\nZ:Q1JyI1LLL9vKnKj9Mc/aGvGIPq3SY=\nR:lint.py\na:0:0:444\nZ:Q1WSuhra96umT+niN6mvGjhZRYAbQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds\nM:0:0:555\nR:README.txt\na:0:0:444\nZ:Q1BaFgl7E0NTd43uRIZbR6zZPOuTk=\nR:generate.sh\na:0:0:444\nZ:Q1FW0zPMgmLryRgAMl2eoDNI5OwEA=\nR:minica-key.pem\na:0:0:444\nZ:Q1LCRSHr90yCULYVbZXZSQuU6hwdY=\nR:minica.pem\na:0:0:444\nZ:Q1EX68dOS9aPGRkxOsUhYYF+Toxeg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/admin-revoker.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1Ex1lVSsswRpXhqka91kBf4mdr2E=\nR:key.pem\na:0:0:444\nZ:Q1IlnDUzOP9HxUuMIX/7jXwjcegSU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/akamai-purger.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1SkZE9HTuo0sW3DFELIHrN4OJCYA=\nR:key.pem\na:0:0:444\nZ:Q13nVSqzLFnBDhObNHqrvzdEg8p5k=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/bad-key-revoker.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1nWA8gL18hWLE+xlRTjZqN+YbGpA=\nR:key.pem\na:0:0:444\nZ:Q1HlxXsY6225CegOy8sTnCyr7y7M4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/ca.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1gWVWh63aVH8drsxia0KiFwLfZ2E=\nR:key.pem\na:0:0:444\nZ:Q1jEV87KtborQ8Z63Z0K6kDza0sO8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/crl-storer.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q161NAS/fDhQbwoAR3qBiEimliawM=\nR:key.pem\na:0:0:444\nZ:Q1HmMH37QhSZAP18ze7e/fyP8ldDI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/crl-updater.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1ffijApt+3kXOMHMJCjFyP8TL4a8=\nR:key.pem\na:0:0:444\nZ:Q18qpArc0KJxTMIMfBk0akQTFw/jY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/expiration-mailer.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1O/ygyK9toz29Esq9ZyPw6UFmjYc=\nR:key.pem\na:0:0:444\nZ:Q1ghcf3AIorl36n+/MxnIZ9cmIBfo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/health-checker.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1cc6bdaJIk8vUUKFPi7soRanUXt0=\nR:key.pem\na:0:0:444\nZ:Q1aWm5jglbNoUEkAmWQ2sKTC/13M0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/nonce.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1RnRwb+11AlQDl05GKIoYmRt6W7c=\nR:key.pem\na:0:0:444\nZ:Q1k/uhpXmh/uoGjPSJ/evS0V0kRL0=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/ocsp-responder.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q13edcUWGPzpQL+hEV3WRH1SnAyLU=\nR:key.pem\na:0:0:444\nZ:Q1ycpvdyhGfkDNuQb0ShZyz0z27+Y=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/ocsp-updater.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1bQulLYJYpOoZTT9nyiA5zQkVCPQ=\nR:key.pem\na:0:0:444\nZ:Q1aULC1qSYKSL+aYOwgBeA5wXjRx8=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/orphan-finder.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1eAGZ04D8EDaPe/yA+wrpSV4zZpI=\nR:key.pem\na:0:0:444\nZ:Q1fjmVk0lj823fcGHw/5Ibt+KJG5o=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/publisher.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1Flb4+MmduCew+SR+C6IX7JbuTYs=\nR:key.pem\na:0:0:444\nZ:Q13iGWaFju2e++j3CSqOiMoqmV0Ys=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/ra.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1nsxHMKiK1vNbK6ubFK2iav6yjwU=\nR:key.pem\na:0:0:444\nZ:Q1x9zVuc0c/rk8/FRui5LPvazhzOw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/rva.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q13rZUJ72jBCBLsVE0oCetm9OAPq4=\nR:key.pem\na:0:0:444\nZ:Q1zljTqNb+L9XFdkSbT0/aVkuTXic=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/sa.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q16uFPhk3dFyPJf4SYGrX4ASgHINk=\nR:key.pem\na:0:0:444\nZ:Q1+FiCKCNvhJFLMUbCxwuHZi5/jTo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/va.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1jqi4WvFBp3TWpDUVTUEG0FINQw8=\nR:key.pem\na:0:0:444\nZ:Q16LCx5yBbH9S0tDZu0M/wwQf1p08=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/grpc-creds/wfe.service.consul\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1rlU8ZOeZOBdN9RU61sr1VdEEvOA=\nR:key.pem\na:0:0:444\nZ:Q1U79Y2mQNCZCPA3hGebGeLQifvI4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/health-checker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1E2vyuV9UMg5GprFV4mEzlRdSS7A=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/hierarchy\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1KbBogwpjECuq2jyaAUh6GfEzM5w=\nR:ee-e1.cert.pem\na:0:0:444\nZ:Q12oUNAv1Kh7Tru3U5QDbq9dg5a3c=\nR:ee-e1.key.pem\na:0:0:444\nZ:Q1tnrjEtrEvkcYmAViSzRnMxUVTKk=\nR:ee-e2.cert.pem\na:0:0:444\nZ:Q1jNsjmboaoJyLqqYnGxOaDV9SI5s=\nR:ee-e2.key.pem\na:0:0:444\nZ:Q1jFKSeXlVrl8j4Cw2LklapGLM1vE=\nR:ee-r3.cert.pem\na:0:0:444\nZ:Q14+QiUXsYjwPsVd5l+TqP4cB8jxA=\nR:ee-r3.key.pem\na:0:0:444\nZ:Q1DMa09dOp15zwefHJIU4xVhAWz6M=\nR:ee-r4.cert.pem\na:0:0:444\nZ:Q1/Tfxn0QYkQ//EIQbBrVuZE1adV0=\nR:ee-r4.key.pem\na:0:0:444\nZ:Q17LppQ+lHYOkVH1ihQvSl2Z3kGwk=\nR:int-e1.cert.pem\na:0:0:444\nZ:Q1vDcs1kJViFKeYE4EteDXOB81c00=\nR:int-e1.crl.pem\na:0:0:444\nZ:Q1jTN1O3llNdNUnRpmuSjt4tVkfVw=\nR:int-e1.key.pem\na:0:0:444\nZ:Q1zBjkzXlbcqFERXjTKAF9OKaEBNA=\nR:int-e2.cert.pem\na:0:0:444\nZ:Q1A7/dVxIYPoLzIQjQ2H4y3qakx5g=\nR:int-e2.key.pem\na:0:0:444\nZ:Q1gXcLurqBPK9zgv93gFBtdtz3o+M=\nR:int-r3-cross.cert.pem\na:0:0:444\nZ:Q1W5JAzhPh9gazMfXFnv2Pppah46A=\nR:int-r3.cert.pem\na:0:0:444\nZ:Q1NxDxBmX8w8bet2OstwXtlmTI1/M=\nR:int-r3.key.pem\na:0:0:444\nZ:Q1XDNH2Vfzu2uIv8bd1I6BswGlUTc=\nR:int-r4-cross.cert.pem\na:0:0:444\nZ:Q11tQM6TwzKGQUX+XXo+18M5OSeVo=\nR:int-r4.cert.pem\na:0:0:444\nZ:Q1aiitqqMwgGwIyis9qm+Xd1wCDEU=\nR:int-r4.key.pem\na:0:0:444\nZ:Q1+xXdl/TCW4IBI0rwnaEgPMgao4w=\nR:root-dst.cert.pem\na:0:0:444\nZ:Q1LbTw+26GB2bkFPDL51a4q/8tysM=\nR:root-x1-cross.cert.pem\na:0:0:444\nZ:Q1VJxnRoeNv4S1SspATmQoeyO6sGw=\nR:root-x1.cert.pem\na:0:0:444\nZ:Q13V5khZenl1k4JhuSWV56yhwvAZw=\nR:root-x2-cross.cert.pem\na:0:0:444\nZ:Q1or0u90NfjKm7Tgp2UYOaa5aGxxQ=\nR:root-x2.cert.pem\na:0:0:444\nZ:Q1UY4k54o/xxiFStZK+QSD0ceSwys=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/inmem\nM:0:0:555\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/inmem/ra\nM:0:0:555\nR:ra.go\na:0:0:444\nZ:Q1wyBTT9fWXOBiKAYmkUmkcIntDjg=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/inmem/sa\nM:0:0:555\nR:sa.go\na:0:0:444\nZ:Q1piS/qToSQAXgtN96HD3kLl8rXNU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/integration\nM:0:0:555\nR:akamai_purger_drain_queue_test.go\na:0:0:444\nZ:Q1NKOq6L1MQszsZcIO/gq0qLOa2rs=\nR:ari_test.go\na:0:0:444\nZ:Q1Twv0qimFLGSJobXp48DVQdBmRYE=\nR:authz_test.go\na:0:0:444\nZ:Q1yWbLyGPEJp4fPhVTn98GkT3YNj0=\nR:caa_test.go\na:0:0:444\nZ:Q1E6rWVigSe9xwTpglU7a+PHv0Hos=\nR:common_mock.go\na:0:0:444\nZ:Q1YBxFBWYWerBjG031+8sXaqaq++8=\nR:common_test.go\na:0:0:444\nZ:Q13Kt9bfSFPzgyHI4Uq1HB2mRfgn0=\nR:crl_test.go\na:0:0:444\nZ:Q18Bpx5RzzM+HoitDlRP4ejykUXG0=\nR:errors_test.go\na:0:0:444\nZ:Q155tNfK7vxBflLRS6M3olAgBw0to=\nR:ocsp_test.go\na:0:0:444\nZ:Q1vOqBWEQyVApd1W2P+09zVnIR2QI=\nR:orphan_finder_test.go\na:0:0:444\nZ:Q1uzh+UKAkGSZMNXPz6Pq8snr1E4Q=\nR:ratelimit_test.go\na:0:0:444\nZ:Q1xO7pyj+gwKoeDELYjK6wiuUC3JY=\nR:revocation_test.go\na:0:0:444\nZ:Q1O38tbcFgBXp7lu8Q3WKDUJvD+tM=\nR:wfe_test.go\na:0:0:444\nZ:Q18MbytQh8UXx7J/zA/CtSzRAtF4A=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/integration/testdata\nM:0:0:555\nR:akamai-purger-queue-drain-config.json\na:0:0:444\nZ:Q1zz9ME3WFdH3U5j7EO43AThdx8+4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/load-generator\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1zLCSt3Y3y5blsyemaWm70q7Ko0c=\nR:boulder-calls.go\na:0:0:444\nZ:Q1nsNrPMcgsKUqCYE2ZH1Auc7fyC8=\nR:example-config.json\na:0:0:444\nZ:Q1Hou0HmvHVjMcCb4YNHQUgNF7V6E=\nR:latency-charter.py\na:0:0:444\nZ:Q1bWwgvY+aKkLQs/dDHbHKBziQjb0=\nR:latency.go\na:0:0:444\nZ:Q18QHPds+5uouyZzR+03ANkQ+j4SU=\nR:main.go\na:0:0:444\nZ:Q1T54O+ien2NBS0nydk9LEOtKrGjo=\nR:requirements.txt\na:0:0:444\nZ:Q1s2u8AKtDIPEa0/tlrCKTGGy5L2Y=\nR:state.go\na:0:0:444\nZ:Q1CcOOv/ljv6qkIIcRhVdSjgzm0CU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/load-generator/acme\nM:0:0:555\nR:challenge.go\na:0:0:444\nZ:Q1P8EX/Lq3p+BhvcxrQngWwaarikA=\nR:challenge_test.go\na:0:0:444\nZ:Q1gJ0O3mPH29SaQZ7LRBzrdJT7NaE=\nR:directory.go\na:0:0:444\nZ:Q18EsZh0uHIpiBectHk8ny4tJpbuQ=\nR:directory_test.go\na:0:0:444\nZ:Q1uWziGQTZzRXOuKTjZg1+65NVTqI=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/load-generator/config\nM:0:0:555\nR:integration-test-config.json\na:0:0:444\nZ:Q1cGtQQjsb22z5kv4H+1+9lmXO7No=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/mail-test-srv\nM:0:0:555\nR:http.go\na:0:0:444\nZ:Q1r0bwIsrNZi1e4WlT7zsl4okBG9s=\nR:http_test.go\na:0:0:444\nZ:Q19NNJBfo6+yBBsJEKbbGPORiTly8=\nR:main.go\na:0:0:444\nZ:Q1PG2FLAehU5r8nVndTD+NM5RZvzk=\nR:minica-key.pem\na:0:0:444\nZ:Q1eBD3RadDtHW8LRkArbaQ+iDa2xA=\nR:minica.pem\na:0:0:444\nZ:Q1S6/acwZgS9v9PslA8gZlVOkWICo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/mail-test-srv/localhost\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1gb1TEEr4q4nG86BLtjFQOvhj9bU=\nR:key.pem\na:0:0:444\nZ:Q14gK7q4UKoV0K5MxAGlxnbJf0Zfs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/ocsp\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1sY6cU24xid3rk6Oomkvgf6bTHjw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/ocsp/checkocsp\nM:0:0:555\nR:checkocsp.go\na:0:0:444\nZ:Q1pFQuQPJeAYOP+fH/3x+v0pKMexY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/ocsp/helper\nM:0:0:555\nR:helper.go\na:0:0:444\nZ:Q16Jf7yOW9nHUJ+8ul3+UFw//bX4Q=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/ocsp/ocsp_forever\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1C3lEKXp+xy0ectKDy7H4vh4iDy4=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/prometheus\nM:0:0:555\nR:prometheus.yml\na:0:0:444\nZ:Q1TPMQdkx3+GlOtIFrK713uinReMM=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/redis-tls\nM:0:0:555\nR:minica-key.pem\na:0:0:444\nZ:Q1XqOlS+BlYVIKERkhQKOmgSs5dz8=\nR:minica.pem\na:0:0:444\nZ:Q1MzFyjB5oyhy78bGw7LqToNWHT8I=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/redis-tls/boulder\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1eIWUs0OVPaclNIK72KbLjt6ix08=\nR:key.pem\na:0:0:444\nZ:Q12vBfau/SvNdHnTiHNwwAYqKKkdY=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/redis-tls/boulder-redis\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1btFzcEAaLlwoQcSAwSat48YlhSA=\nR:key.pem\na:0:0:444\nZ:Q1soVA/5Kx2mh+j8nVRF3B/UD93Oo=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/redis-tls/redis\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1NzmPd8B50Q/paw7vKX/OlDuP654=\nR:key.pem\na:0:0:444\nZ:Q1kVXlQ8qirWRbtN6/sXG+0YHa8Dw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/s3-test-srv\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15UNxlV6KvDiNLeHoEwrYpfXy3gs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/secrets\nM:0:0:555\nR:aws_creds.ini\na:0:0:444\nZ:Q120dhgrR8PLbsUIRfEKiwC8RMJbw=\nR:backfiller_dburl\na:0:0:444\nZ:Q1BOfjNKho9xFPdEQasMSMj9EYCic=\nR:badkeyrevoker_dburl\na:0:0:444\nZ:Q1351aK/6gqK7JXlzkj6vaPJRYoQ0=\nR:cert_checker_dburl\na:0:0:444\nZ:Q1GFxkarBuZx1ZTF8zZJBO5XvJhM0=\nR:expiration_mailer_dburl\na:0:0:444\nZ:Q1txbshfq+7/++Uq5OQ7Cx7nlKNXU=\nR:honeycomb_fake_password\na:0:0:444\nZ:Q1OBcMCMtFj9SHnDS29ggpTFAxK7s=\nR:incidents_dburl\na:0:0:444\nZ:Q1JIsNmRykCbWyTZiRmqXi/yfKrfY=\nR:mailer_dburl\na:0:0:444\nZ:Q1txbshfq+7/++Uq5OQ7Cx7nlKNXU=\nR:ocsp_responder_dburl\na:0:0:444\nZ:Q1avS9JjJT1MQRhW53Njh76XWBXiE=\nR:ocsp_responder_redis_password\na:0:0:444\nZ:Q191VHM4Lh+OUQfTJOSVyo7vOcegY=\nR:ocsp_updater_dburl\na:0:0:444\nZ:Q1wS0LMQKHJDfQUmtNF7BaibGeCrE=\nR:ocsp_updater_ro_dburl\na:0:0:444\nZ:Q1E9Vc3+Wmo+LodIJ2qH8XaLWKOIg=\nR:purger_dburl\na:0:0:444\nZ:Q1IrmEQJNJOkSchDmOTH9fHCY5bY4=\nR:revoker_dburl\na:0:0:444\nZ:Q1tkrQoL4CvxKNzwVc77hMfI3lU2Y=\nR:rocsp_tool_password\na:0:0:444\nZ:Q1y6P5domXGTyBfB6kKdBF0wzloZo=\nR:sa_dburl\na:0:0:444\nZ:Q1WNuFTzML2JYqqjfGxFZpmyqA1j4=\nR:sa_redis_password\na:0:0:444\nZ:Q1VCfcczJ+OLlqMpUM1hJNlAYIoq4=\nR:sa_ro_dburl\na:0:0:444\nZ:Q12y3hlMu1jJiBm7/vi3QRRtpUdQk=\nR:smtp_password\na:0:0:444\nZ:Q1yP7QDrLofxzujpDrvocMGQrDhIw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/vars\nM:0:0:555\nR:vars.go\na:0:0:444\nZ:Q1qK2t93iqOSDsz/CFRZNSRV0pQUA=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/wfe-tls\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1bg8FC8BSIWumzM7IJLoS5N0qKPg=\nR:minica-key.pem\na:0:0:444\nZ:Q1I30krFxuG7o/LncKAlcwMrrmZuQ=\nR:minica.pem\na:0:0:444\nZ:Q1RRpspMN+uS66m98chrpI8WZdNEc=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/test/wfe-tls/boulder\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1CnKjbizrHp03tw/c8BSy+hpwF00=\nR:key.pem\na:0:0:444\nZ:Q1PpOaqKQCnYvupNGKIhtdPLakeNU=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/tools\nM:0:0:555\nR:fetch-and-verify-go.sh\na:0:0:444\nZ:Q1jqHzZ/kg1qZuRPtsxPKxSeKuxCU=\nR:make-deb.sh\na:0:0:444\nZ:Q1ecm+zKBYfsBcaHqSeAD2k96rbJA=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/va\nM:0:0:555\nR:caa.go\na:0:0:444\nZ:Q1BbxlBnYXlKx+ENaSZhyLJk1duPs=\nR:caa_test.go\na:0:0:444\nZ:Q1cZZcSqp4UfKgXOVuhVnf1irWMHY=\nR:dns.go\na:0:0:444\nZ:Q10Kycvv0A8SzMqGSbkfiObBbwI9w=\nR:dns_test.go\na:0:0:444\nZ:Q1dm8e6iLdhsidEp+yqU1WuQy/oVE=\nR:http.go\na:0:0:444\nZ:Q1znzyZfJ4zJ+fIu7m5okeh+CS3aQ=\nR:http_test.go\na:0:0:444\nZ:Q1XNQjCxXQXlR+1yEfp/hVyCepOkw=\nR:tlsalpn.go\na:0:0:444\nZ:Q1R9EGsY3GMDhV9ZwEJwSKHouFOkw=\nR:tlsalpn_test.go\na:0:0:444\nZ:Q1ZCwWgS/RpjWD7BdGm/tb72SeCmA=\nR:utf8filter.go\na:0:0:444\nZ:Q1jDd2lZaFxHtTgRqiicI9Dc5g4+o=\nR:utf8filter_test.go\na:0:0:444\nZ:Q10fmOpoHASfwgZcC8JEwLQnZr/w0=\nR:va.go\na:0:0:444\nZ:Q11+4YAo2IBpMAAm56SJEGy7Z02UI=\nR:va_test.go\na:0:0:444\nZ:Q1OwwHxh+vBOz/FXjKe1tl4Tf1hHQ=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/va/proto\nM:0:0:555\nR:va.pb.go\na:0:0:444\nZ:Q1G9j3acEpKZ38PMhOMJIJiLsFmZ4=\nR:va.proto\na:0:0:444\nZ:Q18kkrWJPDL/Svlb+5WC6bw2eNMkA=\nR:va_grpc.pb.go\na:0:0:444\nZ:Q1W77qxCjPgX9S2oEjgKCgVOIKlQs=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q1gwQIvBu1W1T4V0OgDdoEQCcK3aw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/web\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1UnGNZ43rmAsbid0cdl+WvpQkWq4=\nR:context_test.go\na:0:0:444\nZ:Q1RPcEeNhYsJ9Jl2hbDF0Yvwb0hKY=\nR:docs.go\na:0:0:444\nZ:Q1y8hD/mKQyDy3VueUXZAQeLNV2rI=\nR:jwk.go\na:0:0:444\nZ:Q1YD66hyVD2mfLVAdxmmAfeHmWkP8=\nR:probs.go\na:0:0:444\nZ:Q1E/VpV8moEzlaSIcR/jnuDMnNnCc=\nR:probs_test.go\na:0:0:444\nZ:Q1vyki7K2Nhkc4njrmVjNZzJREJ6M=\nR:relative.go\na:0:0:444\nZ:Q1PQqbUeuLNuqtpE6S0AxSGozJLz4=\nR:send_error.go\na:0:0:444\nZ:Q1jHwyA0jR+cT+9i3ztUGLuc6XhGA=\nR:send_error_test.go\na:0:0:444\nZ:Q1UaPH8ssT7spzR56sxc3EvoHw04M=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/wfe2\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Dsb84P+6vs7zXh+uIJNeIWf/fyQ=\nR:cache.go\na:0:0:444\nZ:Q1wH9uXbA1K6YTENuWd6QdICbOUoA=\nR:cache_test.go\na:0:0:444\nZ:Q1K+ZOSidkyiM6NqRSilPJAnbDLCY=\nR:prod_aia.go\na:0:0:444\nZ:Q16l2VadHmt/gn8UG4VPljM4ZcsoA=\nR:stale.go\na:0:0:444\nZ:Q1QHb+GB34Y+A90WTT2bvg3GiJ+Ps=\nR:stale_test.go\na:0:0:444\nZ:Q1a1PADJ7ptpb5ZnW0qBSHpXsOw3A=\nR:stats.go\na:0:0:444\nZ:Q1JcZGHAODc5kFAL3X3AvqeBsdSYI=\nR:test_aia.go\na:0:0:444\nZ:Q1o1NbZVWwDU5CNmXTaWQmn43yNRU=\nR:verify.go\na:0:0:444\nZ:Q1M1rkOSsicLIrVDo9T7FIGZI/cxs=\nR:verify_test.go\na:0:0:444\nZ:Q1IUWN/iqTsUIxv8Xl2TGWwPxw1VM=\nR:wfe.go\na:0:0:444\nZ:Q1bsGTo79EAOTkJ7IhpHDqVCc8U20=\nR:wfe_test.go\na:0:0:444\nZ:Q1mEnJzH27e1ZbOKwv6kceMMAeGYw=\nF:root/go/pkg/mod/github.com/letsencrypt/boulder@v0.0.0-20220929215747-76583552c2be/wfe2/test\nM:0:0:555\nR:178.crt\na:0:0:444\nZ:Q1Kut/pUmn4vthdplGPJmCazbJex4=\nR:178.key\na:0:0:444\nZ:Q1LIaO84jWAnnSlCjhZZ5sggpzdWM=\nR:238.crt\na:0:0:444\nZ:Q1yFZzW2/gjqfWX+SdvuoO/8I0t/A=\nR:238.key\na:0:0:444\nZ:Q1lZRcFwB67abTMLoxJKiNg52sZP0=\nR:not-an-example.com.crt\na:0:0:444\nZ:Q1hN7RSXnV7fn5vETSSMLjg2gmhdw=\nF:root/go/pkg/mod/github.com/mailru\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1CZXEm+n90KWp7pmviP94Vnukgs0=\nR:.travis.yml\na:0:0:444\nZ:Q1Q8R/vPZ04t4ShV/qWPP1jkGJrUE=\nR:LICENSE\na:0:0:444\nZ:Q1VU+0QfuxYHV5t8n46df6tdAOOlE=\nR:Makefile\na:0:0:444\nZ:Q10z8SKkxbHfcILrlMiGcA0wMAFqc=\nR:README.md\na:0:0:444\nZ:Q1OTUCoV9hgArJMfKoc6r0rSvKFxU=\nR:go.mod\na:0:0:444\nZ:Q1WEgoUMG3YYDGBAQpJretDF3CMV4=\nR:go.sum\na:0:0:444\nZ:Q1tdKeB5iZTf9VRxFotdDq6p0MqFo=\nR:helpers.go\na:0:0:444\nZ:Q1sCRmR0tGmmFM+bBZWyohq8zIESw=\nR:helpers_test.go\na:0:0:444\nZ:Q1d0q1l85GBBpvDyfJ2b2BkjU1cN4=\nR:raw.go\na:0:0:444\nZ:Q1tx8W6C2+qAqXEao/9SN0r8+tF2U=\nR:unknown_fields.go\na:0:0:444\nZ:Q18wc9FNfgaOoTAEbzhwhvKNRpYs8=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/bootstrap\nM:0:0:555\nR:bootstrap.go\na:0:0:444\nZ:Q1pfR2ApWk1rJlGx1nZx9mELGb7xk=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/buffer\nM:0:0:555\nR:pool.go\na:0:0:444\nZ:Q1VZ3Lkjicz2xdXDFS7mkW+2GEQ/4=\nR:pool_test.go\na:0:0:444\nZ:Q1AjujIBNF4egZ5L05nwx+DSSOv4Q=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/easyjson\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1KBby7CA4qZooac1lZQatAl0Rk1w=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/gen\nM:0:0:555\nR:decoder.go\na:0:0:444\nZ:Q1samvfrhVvQXCFZ5XqwBbM98Mpz8=\nR:encoder.go\na:0:0:444\nZ:Q1l6/15lqo1LduXEwpsgkuFizOYB8=\nR:generator.go\na:0:0:444\nZ:Q1SWjY6RzSrLdPRuEGg4l07IpsyFA=\nR:generator_test.go\na:0:0:444\nZ:Q18mip4Yw0ehBBhJa/LScKe3GaIuY=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/jlexer\nM:0:0:555\nR:bytestostr.go\na:0:0:444\nZ:Q1V7V++JAaX17tOCa01a4qhoMIDGc=\nR:bytestostr_nounsafe.go\na:0:0:444\nZ:Q1SoJ3HR6cIQWhJgolY6vKEu5lZ8o=\nR:error.go\na:0:0:444\nZ:Q1Efh9C1m7l+9vagWktPHC40kf674=\nR:lexer.go\na:0:0:444\nZ:Q1KwZTFpPMuF3PPdRM8VCyK6J4omc=\nR:lexer_test.go\na:0:0:444\nZ:Q1Ne+iWupZ1ljdHGwYs9cqWgYxX5Y=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/jwriter\nM:0:0:555\nR:writer.go\na:0:0:444\nZ:Q1rGSTvwz+2JkdF70O9kKoR4j9YmQ=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/opt\nM:0:0:555\nR:gotemplate_Bool.go\na:0:0:444\nZ:Q1nmxeQzk0KAlJSfdHZIKQ66cBps8=\nR:gotemplate_Float32.go\na:0:0:444\nZ:Q1QWW0P0L/+vMBa7TrJ9qrxsoWBmU=\nR:gotemplate_Float64.go\na:0:0:444\nZ:Q1XE7MZnlNjcTewTpJB53Wiik1Vpg=\nR:gotemplate_Int.go\na:0:0:444\nZ:Q1OSbrbs/3zZUhQ66O7Zc6k0CCs0A=\nR:gotemplate_Int16.go\na:0:0:444\nZ:Q1dn9tJCpjiuQe8f1KBX8oC/5WhTQ=\nR:gotemplate_Int32.go\na:0:0:444\nZ:Q1jTpQoijmKBGY20DlbcC2jyY9Heo=\nR:gotemplate_Int64.go\na:0:0:444\nZ:Q1iHTKIvOYag8xEBsIJGCbvpT8cg4=\nR:gotemplate_Int8.go\na:0:0:444\nZ:Q1AiVx22uL0m1xLenm5aXbDBVb6Po=\nR:gotemplate_String.go\na:0:0:444\nZ:Q1BrtTTdUzbOKy9G7VzJ0hyS93Ljg=\nR:gotemplate_Uint.go\na:0:0:444\nZ:Q1U3wvg7tIEqOIIn2797drBMxnObM=\nR:gotemplate_Uint16.go\na:0:0:444\nZ:Q1e1WxJbqCfmW36s1mdVPbktPM7QA=\nR:gotemplate_Uint32.go\na:0:0:444\nZ:Q1YASbsJG3exwsOaNtActFq7vLYtg=\nR:gotemplate_Uint64.go\na:0:0:444\nZ:Q1eAdugSSryguxNUni/x3rDTfpyhU=\nR:gotemplate_Uint8.go\na:0:0:444\nZ:Q1nGEYL4ix52uV3fYxrNhcSNgXqVA=\nR:opts.go\na:0:0:444\nZ:Q159ASn5iQPZS1xrR2JSslY4BB4rE=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/opt/optional\nM:0:0:555\nR:opt.go\na:0:0:444\nZ:Q1DJ2p2mme0jQhRpdWU6Of6kWT1HI=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/parser\nM:0:0:555\nR:modulepath.go\na:0:0:444\nZ:Q14Zlh1K0hWd0tJJtnRLOtfw4sUE4=\nR:parser.go\na:0:0:444\nZ:Q13KT1+YGVH2UEe7Aww4Ib6yZXazI=\nR:pkgpath.go\na:0:0:444\nZ:Q1D2VrYUvfNaDXsW33mtQmqxgGBcc=\nR:pkgpath_test.go\na:0:0:444\nZ:Q1NagBzH6dlkKwt7mmrmkfR4RN+0w=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/parser/testdata\nM:0:0:555\nR:comments.go.mod\na:0:0:444\nZ:Q1gCbCxZyLZAC27s/6ehLeVcD9iO8=\nR:comments_deps.go.mod\na:0:0:444\nZ:Q1JUfmaoHmF9uB/CwNcL0mYL8jUF8=\nR:default.go.mod\na:0:0:444\nZ:Q1NiPKBl/nysHgbsj2678rRO8bSMU=\nR:missing_module.go.mod\na:0:0:444\nZ:Q1r7+VMzWrSHlaOj1pgu0im8H0K+Q=\nF:root/go/pkg/mod/github.com/mailru/easyjson@v0.7.7/tests\nM:0:0:555\nR:basic_test.go\na:0:0:444\nZ:Q1nLK8VkP9GPf1uJK8bK89IzrnFzc=\nR:custom_map_key_type.go\na:0:0:444\nZ:Q1HrC7OVzzQDUzeCFU0DBx6o53zDQ=\nR:data.go\na:0:0:444\nZ:Q1wjcJkRz5FxHcw1HpnJjtlYDAVlE=\nR:disallow_unknown.go\na:0:0:444\nZ:Q1mgD3nbxowimu/CTpmaxkd91rYxo=\nR:embedded_type.go\na:0:0:444\nZ:Q1u3gbh5G/VQtnE+SLh3tcPWo/Yx4=\nR:errors.go\na:0:0:444\nZ:Q1JTjKZxv3UBMZuzeTtGlWmb6a03c=\nR:errors_test.go\na:0:0:444\nZ:Q1U1+sBK76b4BtHYH6H4ISb4LkgnY=\nR:escaping.go\na:0:0:444\nZ:Q15aZf/FMOhDNoSUPbBnAe6DS1j9E=\nR:escaping_test.go\na:0:0:444\nZ:Q1fQp2vLWjfxaoO3JqicS53FH9zYo=\nR:html.go\na:0:0:444\nZ:Q1eanieLluKXXsVAc4apODf7LzTCA=\nR:html_test.go\na:0:0:444\nZ:Q1muxa5TfBnFC4QIzWvRaPIzitoy4=\nR:intern.go\na:0:0:444\nZ:Q1QC2YMYpA5b5eRc0jimLv0HIAT0c=\nR:intern_test.go\na:0:0:444\nZ:Q1NFdd60J1IvlnrmIlODVRiLRmWmc=\nR:key_marshaler_map.go\na:0:0:444\nZ:Q1R6sHpvuJP3P9oefEQo4tR4qy/q4=\nR:members_escaped.go\na:0:0:444\nZ:Q1HlIaq2jxspOMU7x5havmO9VS968=\nR:members_escaping_test.go\na:0:0:444\nZ:Q1irZG14UzR02zb8GLvElr18q2LtE=\nR:members_unescaped.go\na:0:0:444\nZ:Q1NYFCO9rmCqmAFLeZOqcju45c8DU=\nR:named_type.go\na:0:0:444\nZ:Q1F0Spuzp+QvzXuTrr2WIbnzEKBxo=\nR:nested_easy.go\na:0:0:444\nZ:Q1ijjyaoqeKw4hs2eNTbrJY08u2fU=\nR:nested_marshaler.go\na:0:0:444\nZ:Q1IPcDXWpXzOqIA3McunxgGgTx4cM=\nR:nocopy.go\na:0:0:444\nZ:Q1ZhMGaKhMOiIut7zkP0AL76FRi6Q=\nR:nocopy_test.go\na:0:0:444\nZ:Q1p34JHaQ7RYacy7UVP3IEKgi4z7s=\nR:nothing.go\na:0:0:444\nZ:Q1k4IZKS+ZvaSZHVOdGgvi2c2aM/E=\nR:omitempty.go\na:0:0:444\nZ:Q1KcW8zPFAyTLo4bIkmljqU9TeKn4=\nR:opt_test.go\na:0:0:444\nZ:Q15xkItHq6JeUb/4KN286mE3qYmMw=\nR:reference_to_pointer.go\na:0:0:444\nZ:Q1n/MSswunvOdlVGzemd9187muRLA=\nR:required_test.go\na:0:0:444\nZ:Q1Md2ctmiEl+vB62JdrAUYGb0mD2E=\nR:snake.go\na:0:0:444\nZ:Q1Xa8kEmdoEgA7+3fYruGdkRH/tuU=\nR:type_declaration.go\na:0:0:444\nZ:Q1KgLajgVA2OUsXg1UIpvLQCUzRlU=\nR:type_declaration_skip.go\na:0:0:444\nZ:Q1xuC+h0tCf1lcQm2xWT992zysYq0=\nR:unknown_fields.go\na:0:0:444\nZ:Q1Dd2sexU4xUF0OQTLnj38e7iAjHU=\nR:unknown_fields_test.go\na:0:0:444\nZ:Q1YDJ5iP3R3vUFx79f7fzNhYNIjPg=\nF:root/go/pkg/mod/github.com/mitchellh\nF:root/go/pkg/mod/github.com/mitchellh/copystructure@v1.2.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q11nalcUGsR8J2mfyLA+Gi5Zq7lu8=\nR:README.md\na:0:0:444\nZ:Q1Qz6wknkVKIZ2yHT7jHmc2gYwS04=\nR:copier_time.go\na:0:0:444\nZ:Q1mT/ij94f7MF7kgn2jqsU3XGwpnM=\nR:copier_time_test.go\na:0:0:444\nZ:Q1KXvaGnBkzMa4qcBaMvR/MAFOZ9Q=\nR:copystructure.go\na:0:0:444\nZ:Q1c6Nlvx17w5ZTmP5MJjIg8V2RKT4=\nR:copystructure_examples_test.go\na:0:0:444\nZ:Q17KQnsvgd3ubBLREc5ghqSsSfz3w=\nR:copystructure_test.go\na:0:0:444\nZ:Q17jbY3uCGU/F1a/U1bIBHaL8f6pk=\nR:go.mod\na:0:0:444\nZ:Q13WrCoeMOVSRKTS7X2frgalNjIV0=\nR:go.sum\na:0:0:444\nZ:Q1JGUCgYUPLBMjshgJL4p55pR1ALQ=\nF:root/go/pkg/mod/github.com/mitchellh/copystructure@v1.2.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/mitchellh/copystructure@v1.2.0/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q1qJdXtmRjgtNuQYHGGIB3q1hLZjU=\nF:root/go/pkg/mod/github.com/mitchellh/go-homedir@v1.1.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1WtIAK8jSsi4gNIZ9FZ9xumJY4Y8=\nR:README.md\na:0:0:444\nZ:Q1pthmZ0ng12YTP5tf7S8moXkuwVU=\nR:go.mod\na:0:0:444\nZ:Q12mfbMTz+6PFWuauH5hLWiVhcMHs=\nR:homedir.go\na:0:0:444\nZ:Q1gpmTyn6cH1o+BZsoYW4dUJVESNQ=\nR:homedir_test.go\na:0:0:444\nZ:Q1k6eyDsKmvv1fM6zQSTmbwq/4UhA=\nF:root/go/pkg/mod/github.com/mitchellh/mapstructure@v1.5.0\nM:0:0:555\nR:CHANGELOG.md\na:0:0:444\nZ:Q1xvsyJRl2yIImINRGGBTfTpaOnjQ=\nR:LICENSE\na:0:0:444\nZ:Q1WtIAK8jSsi4gNIZ9FZ9xumJY4Y8=\nR:README.md\na:0:0:444\nZ:Q1+5G5+bkeHFlKTwHlR3g2jXZ4OGY=\nR:decode_hooks.go\na:0:0:444\nZ:Q1mgZNkhGjf0Ds+R7wq/9t7UVnYEc=\nR:decode_hooks_test.go\na:0:0:444\nZ:Q1sJf/oUrNFqGcgUTDA32CwZvi4q8=\nR:error.go\na:0:0:444\nZ:Q1pby1yvV7lt5+obGxFZaZMztn1Lc=\nR:go.mod\na:0:0:444\nZ:Q1BhvdcO27GqoeOFUyY1XTbZbT8/8=\nR:mapstructure.go\na:0:0:444\nZ:Q1mfTIwCYnf9cofz+fvVQvG0CRtRw=\nR:mapstructure_benchmark_test.go\na:0:0:444\nZ:Q18TFBB9C5VKVkP8iM6aIcftbO4pE=\nR:mapstructure_bugs_test.go\na:0:0:444\nZ:Q1JU/QoES4+oGHkmClw16OQNaeuwE=\nR:mapstructure_examples_test.go\na:0:0:444\nZ:Q1N0EOl8iBmEB7fBN8xGBBPBlMGNg=\nR:mapstructure_test.go\na:0:0:444\nZ:Q1R7KsIwBhWf1MfGupT6kq96MjSdE=\nF:root/go/pkg/mod/github.com/mitchellh/mapstructure@v1.5.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/mitchellh/mapstructure@v1.5.0/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q1qJdXtmRjgtNuQYHGGIB3q1hLZjU=\nF:root/go/pkg/mod/github.com/mitchellh/reflectwalk@v1.0.2\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1Wdyo9T+7MuHtV4k4Rask5HO0n6o=\nR:LICENSE\na:0:0:444\nZ:Q1WtIAK8jSsi4gNIZ9FZ9xumJY4Y8=\nR:README.md\na:0:0:444\nZ:Q1PTKx+W5MZdii1awWsU7ssSeMzbM=\nR:go.mod\na:0:0:444\nZ:Q1PDzOxkzuNg7/Yi/Fl8fwtSyFgNU=\nR:location.go\na:0:0:444\nZ:Q1pTVPuk2/2NNoqLFqiY9HDNcR1HM=\nR:location_string.go\na:0:0:444\nZ:Q15moAF7SpvfA1cmc5YdZRIBI5HbA=\nR:reflectwalk.go\na:0:0:444\nZ:Q1lBAZgHLfbXEV3r/KWBMs+8N0ULs=\nR:reflectwalk_test.go\na:0:0:444\nZ:Q10BH/Ez0ItLp5GkX+fuN6E60r/yE=\nF:root/go/pkg/mod/github.com/oklog\nF:root/go/pkg/mod/github.com/oklog/ulid@v1.3.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1B7vyVu21AH3U1ETiZ1CVcl1oy6k=\nR:.travis.yml\na:0:0:444\nZ:Q11cl2IoLMna76gRWXfRl+FoA91Dk=\nR:AUTHORS.md\na:0:0:444\nZ:Q1eSEiK62yJstD9tSddPP0G9zUl6s=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1XbqVBTBG7e78JW6kFE5wH3+S5Rg=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q18Rg9EXohD/nNikavOhw3hiCkWhY=\nR:Gopkg.lock\na:0:0:444\nZ:Q1PFdJkXaDLWmqfHpRSnonT176aMI=\nR:Gopkg.toml\na:0:0:444\nZ:Q1qkcl98Ed/g/su5o6CMyQPoGJ2o0=\nR:LICENSE\na:0:0:444\nZ:Q1ffBZWXCZu33PJdKprt+vRGX3LY0=\nR:README.md\na:0:0:444\nZ:Q16DnJvYYk0tOfx6voCN/lrylwCd8=\nR:ulid.go\na:0:0:444\nZ:Q1ltTwM+n4hPVE9fsPGcVjVCP/oXo=\nR:ulid_test.go\na:0:0:444\nZ:Q19rkcuCKKUqFBgWgsT3FZUqITB78=\nF:root/go/pkg/mod/github.com/oklog/ulid@v1.3.1/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/oklog/ulid@v1.3.1/cmd/ulid\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1dVRZL6mF0UXfS7dSoMQsZYl+iCM=\nF:root/go/pkg/mod/github.com/opencontainers\nF:root/go/pkg/mod/github.com/opencontainers/go-digest@v1.0.0\nM:0:0:555\nR:.mailmap\na:0:0:444\nZ:Q1dGQXSvuhbv3lAOC01c7Y43WFino=\nR:.pullapprove.yml\na:0:0:444\nZ:Q15bghOcBZBzm1ngUuTTWATcpRxnE=\nR:.travis.yml\na:0:0:444\nZ:Q1ZJ7Ijv5dqEmiSVK8RtOHqG71ykQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1g/C3rC0zawJEpRu+ygKd6DEyn/E=\nR:LICENSE\na:0:0:444\nZ:Q1k6yXyWebaFGPH9feYnzi939ECC0=\nR:LICENSE.docs\na:0:0:444\nZ:Q1l5/X1cZwc7Jl2W9YSqw94cQZuOI=\nR:MAINTAINERS\na:0:0:444\nZ:Q1EMBUCqFOdhr4G76aEtm9IOp8I2w=\nR:README.md\na:0:0:444\nZ:Q1bcGeEe/aGhw+iJqiX/cNEebX5JU=\nR:algorithm.go\na:0:0:444\nZ:Q1ifFsRqTJBVPydqY31IvziNxMx2g=\nR:algorithm_test.go\na:0:0:444\nZ:Q17NBhDTnWoLg+FTww2ueebUHpzzI=\nR:digest.go\na:0:0:444\nZ:Q13N973WJpaX7245IIYcfAoiWbCA8=\nR:digest_test.go\na:0:0:444\nZ:Q1c9L5+0M4MeJWWe6yGqVtgOU5lRc=\nR:digester.go\na:0:0:444\nZ:Q1TMdpN1uKf4TIvlk15bYZJfrdCHo=\nR:doc.go\na:0:0:444\nZ:Q1FeMveMC4qtSUPF0wqkG2EjrNeG4=\nR:go.mod\na:0:0:444\nZ:Q1eBBMTpf3Yl+msgHvoclKhxCmqig=\nR:verifiers.go\na:0:0:444\nZ:Q1U9qepFeV0D14+4r/1biQ1o0MgcY=\nR:verifiers_test.go\na:0:0:444\nZ:Q113+cJxJ3lD6CT8ydh2MD+l4rcyY=\nF:root/go/pkg/mod/github.com/opencontainers/go-digest@v1.0.0/digestset\nM:0:0:555\nR:set.go\na:0:0:444\nZ:Q10Vw1pdV8dHEdz4MY5t44AENy7h8=\nR:set_test.go\na:0:0:444\nZ:Q1auCDqkdSR+kNgYHc0sS5A+lWP08=\nF:root/go/pkg/mod/github.com/opencontainers/go-digest@v1.0.0/releases\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ezLolIJJi0O5rjuOEONaS51yVOc=\nR:v1.0.0.toml\na:0:0:444\nZ:Q1qq7Poy7goR8ifvt9KibL9WunEbk=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1Zr6qFZblcbuO78nemzXoPgTGl3c=\nR:.golangci.yml\na:0:0:444\nZ:Q1a/0DVe7gtVs2NV8q+2WdizJpLXM=\nR:.header\na:0:0:444\nZ:Q1n1gYcZS4B/VwnT6PvIrg2BGaB68=\nR:CODEOWNERS\na:0:0:444\nZ:Q1ygk1I27EF739b0yCvc/EctotBhg=\nR:EMERITUS.md\na:0:0:444\nZ:Q12N1bRFhC3zID2z3IpKKZVaGlfXM=\nR:GOVERNANCE.md\na:0:0:444\nZ:Q145cUuqQxPzx5Tr2W01BLwBhUjYI=\nR:HACKING.md\na:0:0:444\nZ:Q1fO4H2QnvMcC8MQvcJEK8iowBGEY=\nR:LICENSE\na:0:0:444\nZ:Q1KYhQps2xVfVM+kRkHfcLNiKO0DE=\nR:MAINTAINERS\na:0:0:444\nZ:Q1kZ8rn6PNbCd3irjQe0P0g3lesoY=\nR:Makefile\na:0:0:444\nZ:Q13Z8IilC6mdfysNDQyKQw7Wl0WQ4=\nR:README.md\na:0:0:444\nZ:Q1FalzghHvlR9XxEO/WXae/BIldDM=\nR:RELEASES.md\na:0:0:444\nZ:Q1YQ3CnBdAyA1/YaqKuv0u/MKZ6yI=\nR:annotations.md\na:0:0:444\nZ:Q1NHPXyVioXaFTivFGyMQ2fkqKBEk=\nR:artifact.md\na:0:0:444\nZ:Q1iMf8bcPAUKhYPTjVRQ37/q7b5hw=\nR:config.md\na:0:0:444\nZ:Q17oXMLqU65CA9Mve5SFMJyAmTTwM=\nR:considerations.md\na:0:0:444\nZ:Q1QXIEMUhM1hHaiFkggUQS+YyyT8c=\nR:conversion.md\na:0:0:444\nZ:Q1NASgOLlhyhof+/y3qbaY1cdgAKk=\nR:descriptor.md\na:0:0:444\nZ:Q1Rljr8twULJEZQDSDOhzHBFfN6oA=\nR:go.mod\na:0:0:444\nZ:Q1H9KGK5LGaAM3k8eQ9B6ssOqL6wU=\nR:go.sum\na:0:0:444\nZ:Q1PIQ6nGQkK3jonaNNbMx773XDoTk=\nR:image-index.md\na:0:0:444\nZ:Q1IgM65H49RfrAObernsU6MJ/lxho=\nR:image-layout.md\na:0:0:444\nZ:Q12iJ4w9oZkum96NtVPWMYJBKZwFo=\nR:implementations.md\na:0:0:444\nZ:Q1SybsWhW2xgTCyyegxgqHijSHAGs=\nR:layer.md\na:0:0:444\nZ:Q1XpMVRkZVVJwQiT53Ygh2+ILVsug=\nR:manifest.md\na:0:0:444\nZ:Q1JzE4jPlMgUcmmIcmcR0Idrsto/I=\nR:media-types.md\na:0:0:444\nZ:Q1cHLleYK/DVQby8rRDAw8ERa/zF4=\nR:project.md\na:0:0:444\nZ:Q1A2kO149bB8u/dk9m44Am1Rg/gBA=\nR:spec.md\na:0:0:444\nZ:Q1m0fFV8TvozmEGFXsIeU2Kxg6jPQ=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/.github/PULL_REQUEST_TEMPLATE\nM:0:0:555\nR:maintainer_nomination.md\na:0:0:444\nZ:Q1SNKtcOPdzZWE4lmMiLfTflc8/NI=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/.github/workflows\nM:0:0:555\nR:docs-and-linting.yml\na:0:0:444\nZ:Q1bFNsY01YkmXVaVMeoHll+1sAOpY=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/.tool\nM:0:0:555\nR:check-license\na:0:0:444\nZ:Q1bF6Su+0jll8povoP2sT8mrsvgSM=\nR:genheader.go\na:0:0:444\nZ:Q1U6cNwwG2DMpIv7jsrNHt7FaIvdo=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/identity\nM:0:0:555\nR:chainid.go\na:0:0:444\nZ:Q1GcUSk71Pwq4xcxltcoS7Ma8vXQ4=\nR:chainid_test.go\na:0:0:444\nZ:Q1i82f4uSwzA6ukw9niCs3kUGn0T8=\nR:helpers.go\na:0:0:444\nZ:Q1PYrsdsLPBQasOnYKJSPqTsiWDlw=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/img\nM:0:0:555\nR:build-diagram.png\na:0:0:444\nZ:Q1maOPmhIR9ZoNi3bsuP/d/81MJTk=\nR:media-types.dot\na:0:0:444\nZ:Q1j20DP/0DnyDFknNOEzK4ZlyVoKo=\nR:media-types.png\na:0:0:444\nZ:Q18OAh2TQGikN+SvqQJ9xM1MqQvt8=\nR:run-diagram.png\na:0:0:444\nZ:Q1QkCWTjJJMETmjLBhTdXUX0L63Xc=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/schema\nM:0:0:555\nR:backwards_compatibility_test.go\na:0:0:444\nZ:Q1oN/WWzUcGJYYnVCYXxxamRYDW3o=\nR:config-schema.json\na:0:0:444\nZ:Q1FVnHMZ1ohkrjfb4GZ9w/De6afRQ=\nR:config_test.go\na:0:0:444\nZ:Q1FKLouuhHZmHcItvVXN92vcqKfWI=\nR:content-descriptor.json\na:0:0:444\nZ:Q1VHHQLBhNDt3xKIH7kxU55gIP4i4=\nR:defs-descriptor.json\na:0:0:444\nZ:Q10IGy7O6x1svbHOETRto4Q1pVVfg=\nR:defs.json\na:0:0:444\nZ:Q1CLG7kuZYf6AqSjzzrMOSyLSAtv4=\nR:descriptor_test.go\na:0:0:444\nZ:Q1DRGFmItZiOjg2VmNr+X7ZHQADWg=\nR:doc.go\na:0:0:444\nZ:Q13xIjvkuhUau2n0r7m50EjnqabUY=\nR:error.go\na:0:0:444\nZ:Q1SP0mtPQCWFWy5LnswEBWmaeyFl8=\nR:image-index-schema.json\na:0:0:444\nZ:Q1TZRARdaZ9rny+i+X3f4cwpIPuZ4=\nR:image-layout-schema.json\na:0:0:444\nZ:Q1QklOl859V/lRs6HEd4Qqv7DqTxE=\nR:image-manifest-schema.json\na:0:0:444\nZ:Q17q1lk65yWAeH4EyQjo19ktZ7rvk=\nR:imageindex_test.go\na:0:0:444\nZ:Q1GZtyI8kOS4ZZ44G9HSAoR9HsTqM=\nR:imagelayout_test.go\na:0:0:444\nZ:Q1APBXdQmzsBTEsH/PkFrUjSBoJp0=\nR:loader.go\na:0:0:444\nZ:Q1m6v73YfyWrtFbqWee22SXD9MRLQ=\nR:manifest_test.go\na:0:0:444\nZ:Q1CwRDoTeGWLaenUkhmBxKI0ThpVw=\nR:schema.go\na:0:0:444\nZ:Q1qbIcb//Gk3zYjb6R9rMKusvEmi4=\nR:spec_test.go\na:0:0:444\nZ:Q1YS8FblQ3kzR233wYAUArfIMvnEs=\nR:validator.go\na:0:0:444\nZ:Q1BMQfGt89DF1LemthfAy6291h0dg=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/specs-go\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1IdGNqFIf6TwuR5J15nqNvFRoWyQ=\nR:versioned.go\na:0:0:444\nZ:Q1XspmlD1rLzMHsIF61PLgLI7p7YA=\nF:root/go/pkg/mod/github.com/opencontainers/image-spec@v1.1.0-rc2/specs-go/v1\nM:0:0:555\nR:annotations.go\na:0:0:444\nZ:Q1MJCgs2VKmhdRQZZKxNwwe5ZWVvU=\nR:artifact.go\na:0:0:444\nZ:Q1ReGLTG8IyW9oCNAD303rmXjE40A=\nR:config.go\na:0:0:444\nZ:Q1j+RGjUjptJgU1XydxRutIwMdbWk=\nR:descriptor.go\na:0:0:444\nZ:Q1CjdBjtCP1TIqNH2Y3fKJXe3wXcw=\nR:index.go\na:0:0:444\nZ:Q1RlvGeeiJJXE34gHsZrMZv1XpkEY=\nR:layout.go\na:0:0:444\nZ:Q11t/EiAsH6moXAxFMp78FqMEp+tg=\nR:manifest.go\na:0:0:444\nZ:Q1ryG0gNzLa6Z3I6NEcCgXxRv5ORU=\nR:mediatype.go\na:0:0:444\nZ:Q1RPBKwxFAEWVJQY7yeEbgzdsbqbg=\nF:root/go/pkg/mod/github.com/package-url\nF:root/go/pkg/mod/github.com/package-url/packageurl-go@v0.1.1-0.20220203205134-d70459300c8a\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1MiGcWSJsRKVEuQGxHlmKhyfZdXc=\nR:.golangci.yaml\na:0:0:444\nZ:Q1r29bUC0JFnsGAIIGHphGOgiqgeY=\nR:LICENSE\na:0:0:444\nZ:Q1gnj/S0t2ejK4UiXLSGCC9d/F/ho=\nR:Makefile\na:0:0:444\nZ:Q1XnwLa6flm9dGm+TA4hgpZ+iE4qE=\nR:README.md\na:0:0:444\nZ:Q1lHBBA8xIBsu9QFfGqSI6aD8WzC4=\nR:VERSION\na:0:0:444\nZ:Q19i7bWF2etua4kI1rQJKEdKE6fus=\nR:go.mod\na:0:0:444\nZ:Q1FRZkmqV++FE34M/F6lTfLVIjniY=\nR:packageurl.go\na:0:0:444\nZ:Q1hMUHNsqVTVwZZsl5aDKiOjk/StY=\nR:packageurl_test.go\na:0:0:444\nZ:Q1fnOGcyaXbmuBhKX7IXX3BJAZdnE=\nF:root/go/pkg/mod/github.com/package-url/packageurl-go@v0.1.1-0.20220203205134-d70459300c8a/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/package-url/packageurl-go@v0.1.1-0.20220203205134-d70459300c8a/.github/workflows\nM:0:0:555\nR:test.yaml\na:0:0:444\nZ:Q1xVpAbYDutEioC4ajhQNLjXIYdZs=\nF:root/go/pkg/mod/github.com/package-url/packageurl-go@v0.1.1-0.20220203205134-d70459300c8a/testdata\nM:0:0:555\nR:.gitkeep\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/pkg\nF:root/go/pkg/mod/github.com/pkg/errors@v0.9.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q12abSrn4q3YgXnkKfeH5qWyx7ETM=\nR:.travis.yml\na:0:0:444\nZ:Q1kIVvPG3Wz+vm+vPRlw07dnjA4+E=\nR:LICENSE\na:0:0:444\nZ:Q1nBvtwNQvJMJKG9Jm884QGksFefw=\nR:Makefile\na:0:0:444\nZ:Q1G+oGHTY2bje7UpF42TpA1f63C2M=\nR:README.md\na:0:0:444\nZ:Q1tlO7vOwOnE1rnbTjONaIrWGNSvc=\nR:appveyor.yml\na:0:0:444\nZ:Q17Ax5rc+qaNZdu2LPtnxe5f38yMs=\nR:bench_test.go\na:0:0:444\nZ:Q1ru3t8cXKm16nwrYuZmlCo+f/rkU=\nR:errors.go\na:0:0:444\nZ:Q1spmHrLL5rqTyQH74d/cVUxc4Jf8=\nR:errors_test.go\na:0:0:444\nZ:Q1nFltN0p67BjFO8rjKmsZy3xB5qM=\nR:example_test.go\na:0:0:444\nZ:Q1CHLKpdsD287tu+fb5qZW6aDyN1I=\nR:format_test.go\na:0:0:444\nZ:Q1jdt4pWmKJh3Zffur6zjsCxhAPdo=\nR:go113.go\na:0:0:444\nZ:Q1HgjviKYZn4KZMwEDZjrx0QtskX8=\nR:go113_test.go\na:0:0:444\nZ:Q1jhWItIKVIfJqWquUf5pC1ZIzppY=\nR:json_test.go\na:0:0:444\nZ:Q1YZSI/J/oumepWV65xWP3eKSsN4s=\nR:stack.go\na:0:0:444\nZ:Q15enujTW5o6grC+lx3+vNh8R+FMw=\nR:stack_test.go\na:0:0:444\nZ:Q1mUeAJZFpikbHg4iIOAlGFW9a7Sg=\nF:root/go/pkg/mod/github.com/psanford\nF:root/go/pkg/mod/github.com/psanford/memfs@v0.0.0-20210214183328-a001468d78ef\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1ZQJ0nIo8KUPQknOqfs9AND4iEmI=\nR:Readme.md\na:0:0:444\nZ:Q1xgYbrOOBlZBzt69qltPtsAHk6Cc=\nR:example_test.go\na:0:0:444\nZ:Q1i/ZXZ9DWC13CLgxo3rhBza/h/WE=\nR:go.mod\na:0:0:444\nZ:Q11p19oC4hNgri2+WyCVojPFxltOg=\nR:go.sum\na:0:0:444\nZ:Q16TlOJUzCZBx1XyLpek8sLCrmjsU=\nR:memfs.go\na:0:0:444\nZ:Q17CSF+wWh+pUR+IMtJA13u6tnSUc=\nR:memfs_test.go\na:0:0:444\nZ:Q1QJ4ovKYat6XJwxTwlxLT2RUo/As=\nF:root/go/pkg/mod/github.com/psanford/memfs@v0.0.0-20210214183328-a001468d78ef/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/psanford/memfs@v0.0.0-20210214183328-a001468d78ef/.github/workflows\nM:0:0:555\nR:go.yml\na:0:0:444\nZ:Q1vlPNG6YGS2kwWakZVLTcA2VPhTE=\nF:root/go/pkg/mod/github.com/sergi\nF:root/go/pkg/mod/github.com/sergi/go-diff@v1.2.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1HQ2Ta/lzkM4OSJzABJsmF7ezZEQ=\nR:.travis.yml\na:0:0:444\nZ:Q1lqGQKpp4pLBkZx7zbQ3J4RiQkVw=\nR:APACHE-LICENSE-2.0\na:0:0:444\nZ:Q1WY+H8HL2biJp3WkZKSspNNuyBJI=\nR:AUTHORS\na:0:0:444\nZ:Q1xfKrIdL28PlrmuXbfK1P7gyGexQ=\nR:CONTRIBUTORS\na:0:0:444\nZ:Q16Hfmk6dGJvXqj2G41SRC3LXLHMw=\nR:LICENSE\na:0:0:444\nZ:Q1M5xnJ0AxkzI8r053IQPTpOitWds=\nR:Makefile\na:0:0:444\nZ:Q1ewRWw9268McLXUmbk8b8vdcohKY=\nR:README.md\na:0:0:444\nZ:Q1jdBcePn8wdJ6rvXh0RKHzNzrYcs=\nR:go.mod\na:0:0:444\nZ:Q1LtV2g8LsN0rY95ymd0ViuT2KibY=\nR:go.sum\na:0:0:444\nZ:Q1ubB0Swz3w45XYQKIzk/61qQYCV4=\nF:root/go/pkg/mod/github.com/sergi/go-diff@v1.2.0/diffmatchpatch\nM:0:0:555\nR:benchutil_test.go\na:0:0:444\nZ:Q1XanLxcNrAmk3QEG2EzixIz9Lx5Q=\nR:diff.go\na:0:0:444\nZ:Q1SkZKDtmTqnVXvx/ypmmcY6kUHMQ=\nR:diff_test.go\na:0:0:444\nZ:Q1pIdugsf9hdAKRXpNI58gNEb12KU=\nR:diffmatchpatch.go\na:0:0:444\nZ:Q162OC9veYJLI8a2PkPp/s09pP/NE=\nR:match.go\na:0:0:444\nZ:Q1un+4HH7179bWQJesA88551rHpcM=\nR:match_test.go\na:0:0:444\nZ:Q1ngktOMQy51RIn43qEutzI1D/lfA=\nR:mathutil.go\na:0:0:444\nZ:Q13WBeQnzkmKbLjA1/M4sbKmHPzNM=\nR:operation_string.go\na:0:0:444\nZ:Q1SsVoa02hb34ZMRraBpSD4cO3dKY=\nR:patch.go\na:0:0:444\nZ:Q13/LaYIC6+fD60cxkxO1TCX/pP1M=\nR:patch_test.go\na:0:0:444\nZ:Q1d7timy1rqc1Nxfng6AtMj98pPUs=\nR:stringutil.go\na:0:0:444\nZ:Q1COQPqw+tQ7kE1XVIi5Utjrpe3k0=\nR:stringutil_test.go\na:0:0:444\nZ:Q1mWrCkyQZrYRiwX/Ya3hH6Ttf3YQ=\nF:root/go/pkg/mod/github.com/sergi/go-diff@v1.2.0/scripts\nM:0:0:555\nR:lint.sh\na:0:0:444\nZ:Q13zr394D2WLXO+sQezngruVmYI+U=\nF:root/go/pkg/mod/github.com/sergi/go-diff@v1.2.0/testdata\nM:0:0:555\nR:diff10klinestest.txt\na:0:0:444\nZ:Q1atOm4L57/s7Ec4cfJvvvWJtJO1I=\nR:fixture.go\na:0:0:444\nZ:Q10IzvezN8M4Jc5hoo1yUxMCKSHfU=\nR:speedtest1.txt\na:0:0:444\nZ:Q1w0RnsRP1ZD2uuPxOB6s/74FYu1M=\nR:speedtest2.txt\na:0:0:444\nZ:Q1HMgD2OQQVqGsbb7zFwSb9b3vbpc=\nF:root/go/pkg/mod/github.com/shopspring\nF:root/go/pkg/mod/github.com/shopspring/decimal@v1.2.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1BP+ELmvWolyGYKsbO2N/CIWjEk4=\nR:.travis.yml\na:0:0:444\nZ:Q1uVySlZRioWV0viMMRAXy+LrnLPA=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1jBSnuCjkYQwTCHuHG/qDmzV+GiE=\nR:LICENSE\na:0:0:444\nZ:Q1fPh9BT2DS6KqxljowE3G7Vb4Oo8=\nR:README.md\na:0:0:444\nZ:Q1sWUgNIGcQmep/CYCeDEx/Y4C1e4=\nR:decimal-go.go\na:0:0:444\nZ:Q1v+51WWI8NQ0BPxzsfYA8OSlLTts=\nR:decimal.go\na:0:0:444\nZ:Q1sRKPNeZrVkFR5uQaQRsw9fMacvc=\nR:decimal_bench_test.go\na:0:0:444\nZ:Q1vo8kqwHOylw0ZJHUCMaqwZQpu5E=\nR:decimal_test.go\na:0:0:444\nZ:Q1LHcEXNSLWVWllRVQMvNEYvJljqw=\nR:go.mod\na:0:0:444\nZ:Q1VKyRkZ85QbHnziLbZAGmAK9teGs=\nR:rounding.go\na:0:0:444\nZ:Q1cic9wR743wFLnC8J9m782AqfoJE=\nF:root/go/pkg/mod/github.com/sigstore\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q11PoEa007kROD/rqXm+Osgju4QIg=\nR:.gitignore\na:0:0:444\nZ:Q10ZkieJDzs5Vmb6SkwrjafeggHps=\nR:.golangci.yml\na:0:0:444\nZ:Q1Jvt6u7MRj51B77HDmBRnJbsJyIY=\nR:.goreleaser.yml\na:0:0:444\nZ:Q1Fg/bCmCaBVUUNCArrU6Y1GizHdg=\nR:.ko.yaml\na:0:0:444\nZ:Q1xV1br4xWMjz9HKQ4h8ML/1+h/GM=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1IUxAPKBpjZNOOL0P9YtDniLEovw=\nR:CODEOWNERS\na:0:0:444\nZ:Q1V01kXjkuFX89Jg5HhMRMYvMjDns=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q17nChvpiOQcj3oI1umLowIREvGq8=\nR:COPYRIGHT.txt\na:0:0:444\nZ:Q1Wj0qPdDj/zQIPdRtEstNjVec/CQ=\nR:DEPRECATIONS.md\na:0:0:444\nZ:Q1shmjYdeGgej0AfDIkPWOXOWXjmw=\nR:EXAMPLES.md\na:0:0:444\nZ:Q109EjQfZUDYZ2wBozFrjYd08XhY8=\nR:FEATURES.md\na:0:0:444\nZ:Q1LbEfImHto779/I33fI8KyLzQ/gE=\nR:FUN.md\na:0:0:444\nZ:Q13iYEdCFxFPVXCm/xnxyiXhaH6mE=\nR:IMPORT.md\na:0:0:444\nZ:Q1h2/e5ecciARmlS/WrFfpTg7SQD0=\nR:KEYLESS.md\na:0:0:444\nZ:Q1F3zksPB6GspbDTdE3MZ3W+3ldW8=\nR:KMS.md\na:0:0:444\nZ:Q1CYf+2sm0uo9WidEGbEw9EoTmgBA=\nR:LICENSE\na:0:0:444\nZ:Q1ffBZWXCZu33PJdKprt+vRGX3LY0=\nR:Makefile\na:0:0:444\nZ:Q1Cy5VgDGbKx2qN7EnVxVZRRlZ8Gs=\nR:PKCS11.md\na:0:0:444\nZ:Q1lFj490aejSmGrHoz+p4iizLFh6o=\nR:README.md\na:0:0:444\nZ:Q1CI7UHcPB/aHgeDc2q29/2u1o3z8=\nR:TOKENS.md\na:0:0:444\nZ:Q1AJzFP6y98/CsEN0jCRgKOS5D7Qo=\nR:USAGE.md\na:0:0:444\nZ:Q1TskdMT3exsw663MzuvV4U9JTdac=\nR:artifacthub-repo.yml\na:0:0:444\nZ:Q1p51oXlrDtIcVB3nWJiI4pX44E9A=\nR:go.mod\na:0:0:444\nZ:Q1w3YY7TjnGWlbw10zZ3+8sQNXSag=\nR:go.sum\na:0:0:444\nZ:Q101OgG05JjjoVGGajv+olAQQIZoI=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q17CXlho5aGNZjsTM/XySIaED1OwY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/.github/workflows\nM:0:0:555\nR:build.yaml\na:0:0:444\nZ:Q1Oo97BIAMnWogkRlRi5t/O4VCg/g=\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1rCA+Kbf/7giUSmM3q1FuM8HLR9o=\nR:cosign-test.key\na:0:0:444\nZ:Q1X+toycIGGrzYGdjIDD+b9zMuHG0=\nR:cosign-test.pub\na:0:0:444\nZ:Q1j2YoGAsCITXd8SPYfBhOYaL1GRg=\nR:cross.yaml\na:0:0:444\nZ:Q18kBFo0tq05b+E4+25MDTxQz4VDg=\nR:cut-release.yml\na:0:0:444\nZ:Q1uLxd22N9fggmbC7Mi/kiqdvnd5o=\nR:depsreview.yml\na:0:0:444\nZ:Q1Pmnilivo6GcMMkCstB491xwCylw=\nR:donotsubmit.yaml\na:0:0:444\nZ:Q1YBu4dlWoxX/b50IKVUpUIgaDuk8=\nR:e2e-with-binary.yml\na:0:0:444\nZ:Q172UNj0DRznTBjdCyYUCNZJ045oU=\nR:e2e_tests.yml\na:0:0:444\nZ:Q1eKqntayAr9vZ7nx6K3iu3dM4KoU=\nR:github-oidc.yaml\na:0:0:444\nZ:Q1FBAajeMY76DjrHXQW2CAkg5z5mg=\nR:kind-verify-attestation.yaml\na:0:0:444\nZ:Q1ovr/xY8JXNezFTP3GiH19+ZpqQI=\nR:milestone.yaml\na:0:0:444\nZ:Q1olV+8yfI2BzRchntmyA4Sls9F1o=\nR:scorecard_action.yml\na:0:0:444\nZ:Q18zKPkF0nWGWzO12G2+dUvvSc5jk=\nR:stale.yml\na:0:0:444\nZ:Q1dTsFW7JcUtdh76kN9inwcHrbUF4=\nR:tests.yaml\na:0:0:444\nZ:Q177EYm8JzdfAl1nzWFVGEhP8yGuk=\nR:validate-release.yml\na:0:0:444\nZ:Q1YbPGWrhk9lOBY9dseOETY5rigGo=\nR:verify-docgen.yaml\na:0:0:444\nZ:Q1+Xb0lGeHJy/ZbZYS5BZXy9WJtS0=\nR:whitespace.yaml\na:0:0:444\nZ:Q1Q1D2dODCOVtdYGgOj1EhdYYvSLs=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Ksy994XlHQ2yVClrsB0QQJzFkeo=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli\nM:0:0:555\nR:attach.go\na:0:0:444\nZ:Q1u32s3LEvDspspaINDIkiwL/EO2Q=\nR:attest.go\na:0:0:444\nZ:Q18Jv34JeNHMeqfv1R21K+Qa74p0U=\nR:attest_blob.go\na:0:0:444\nZ:Q1jQmk4FXfZxYGpmooBApnr/n1UbQ=\nR:clean.go\na:0:0:444\nZ:Q1W95wJ0+0TMV3gD6ZLUhNWupyZBA=\nR:commands.go\na:0:0:444\nZ:Q1XflG17auSo7mtOsk66o7laCB6qk=\nR:completion.go\na:0:0:444\nZ:Q103lW7HnCkmHy9LmTfB1+b4KRhyA=\nR:copy.go\na:0:0:444\nZ:Q1KR/kViNep2VqDj2O9bPpesDNxic=\nR:dockerfile.go\na:0:0:444\nZ:Q1n3IvlL3xdzfzintrpPEKY2nEdPs=\nR:download.go\na:0:0:444\nZ:Q1uFjwJyMRSL5dp5FW6yD0i18T0nE=\nR:env.go\na:0:0:444\nZ:Q1wPn0ydkmkz/AFVkiqiX1CtaBbfA=\nR:env_test.go\na:0:0:444\nZ:Q1Tk1z6Hy7Q0lfvWeM3d3VBStb1U8=\nR:generate.go\na:0:0:444\nZ:Q1eSggrjYaxdQIqr168y9QDt+ZDPU=\nR:generate_key_pair.go\na:0:0:444\nZ:Q15J5ZptQktyvVlmekGSEnGLXKcDg=\nR:import_key_pair.go\na:0:0:444\nZ:Q1GeAXfvxNdajbntUZwI3U98hHgRQ=\nR:initialize.go\na:0:0:444\nZ:Q1L5Sb7TFv53S++4RM+he3NSjUqLA=\nR:load.go\na:0:0:444\nZ:Q1qU0wtv/rtxdooNSEMGR1/rlcN/4=\nR:manifest.go\na:0:0:444\nZ:Q1kiOCLtdIncT2mK+OvmYaE9x6lho=\nR:piv_tool.go\na:0:0:444\nZ:Q1IqRizw5fYG37P1ZkbRhoobTpTyc=\nR:piv_tool_disabled.go\na:0:0:444\nZ:Q1uZRJbasC42yAN9brPcIlZkqost0=\nR:pkcs11_tool.go\na:0:0:444\nZ:Q1hnFgd2GahwTkow3gkm+D9pTnsGA=\nR:pkcs11_tool_disabled.go\na:0:0:444\nZ:Q1UXjJL7dahMqjmyH+7HnQ4eRTOIc=\nR:policy_init.go\na:0:0:444\nZ:Q1LbUTcz3986RAU5MGEp2eSnc9k5g=\nR:policy_init_test.go\na:0:0:444\nZ:Q1+njjE3p2mFKeM2NWHf4cViOCnPs=\nR:public_key.go\na:0:0:444\nZ:Q1vFBBm4fmGXszp1lwDnCBE3r980w=\nR:save.go\na:0:0:444\nZ:Q1OjTPxAjhosVnOE6/YM7dI/rFLPw=\nR:sign.go\na:0:0:444\nZ:Q1PHKwDLkCXJapPAJASqjbWjPum+4=\nR:signblob.go\na:0:0:444\nZ:Q1o1QP0HuhUflBXIOempP68rQrP1E=\nR:tree.go\na:0:0:444\nZ:Q1crXHQQbYDUN7kJS0cBaw1RtRVHk=\nR:triangulate.go\na:0:0:444\nZ:Q1QIg3wioUBwFnPHXTbELe3XP4l/Q=\nR:upload.go\na:0:0:444\nZ:Q1Fla5HL21LR305ALj/bU6lfFeDD0=\nR:verify.go\na:0:0:444\nZ:Q16NiEpfOeVDZ++e1kyjj2ijYU6sY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/attach\nM:0:0:555\nR:attach.go\na:0:0:444\nZ:Q1snboLnxi5dnP+BvF+RPNCMVmCBA=\nR:sbom.go\na:0:0:444\nZ:Q1QHx2ewz35QQ2IyDvcGvap/Ybex0=\nR:sig.go\na:0:0:444\nZ:Q1ZrUTdtA35PGv6mhxRdLRip1en+U=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/attest\nM:0:0:555\nR:attest.go\na:0:0:444\nZ:Q13Q9DELGsSggu3TGR1B7cOJtPWTc=\nR:attest_blob.go\na:0:0:444\nZ:Q1Mtqd1uQY3SSCROPNravKK+yBcA0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/copy\nM:0:0:555\nR:copy.go\na:0:0:444\nZ:Q1X2rzyKeJqdH1qk/CBu33UMCiBIE=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/dockerfile\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1pTW1qh0j4JlioERRNokdDlXfny0=\nR:verify_test.go\na:0:0:444\nZ:Q1e2t7PegofD3fW8VyOOo5v8LT4EU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/download\nM:0:0:555\nR:attestation.go\na:0:0:444\nZ:Q1/n9j0A2On+UIiwx8qJuMAjNsLSQ=\nR:sbom.go\na:0:0:444\nZ:Q1QH5qJ4V+q0nixGszi15qrKZATQ8=\nR:signature.go\na:0:0:444\nZ:Q1J+ZX7gqLxme1L4G6eOJTmAkhubk=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/fulcio\nM:0:0:555\nR:depcheck_test.go\na:0:0:444\nZ:Q1A6WesK3a4LpLQWDIY3RFupeEP7g=\nR:fulcio.go\na:0:0:444\nZ:Q1LkiKnxle6JR8ngJ2qJfBtpD/58A=\nR:fulcio_test.go\na:0:0:444\nZ:Q1dSofPwx3I8iVeIxUP1v24NILes4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/fulcio/fulcioverifier\nM:0:0:555\nR:fulcioverifier.go\na:0:0:444\nZ:Q1vohZLQBjC+4jPgFG1kzlzrMiGX8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/fulcio/fulcioverifier/ctl\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1CfUTm1CuliDKFXX+TD3CB9bCbA8=\nR:verify_test.go\na:0:0:444\nZ:Q1wfajL3obmeTjsiUKTOgtG0VdWek=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/fulcio/fulcioverifier/ctl/testdata\nM:0:0:555\nR:garbage-there-are-limits\na:0:0:444\nZ:Q1bAvFqbywgUU//R9Xr+poh+u0dCc=\nR:google\na:0:0:444\nZ:Q1rYCx76IlTxX+h4WKT28A/XTukGE=\nR:letsencrypt-testflume-2021\na:0:0:444\nZ:Q1o0ZGkKEA2dQYa/6vaepBfcqzFt0=\nR:rsa\na:0:0:444\nZ:Q1HGiZtMRnpQJjRW2mYCwk7LLCsFM=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/fulcio/fulcioverifier/ctutil\nM:0:0:555\nR:ctutil.go\na:0:0:444\nZ:Q11a2c7UZLLxDxbfJi9RNBZ/JQoA8=\nR:ctutil_test.go\na:0:0:444\nZ:Q10moHECgz+0pRN4Uadu8RQJcQA7Y=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/generate\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1SAoqwK+oHn0JRtVpY0OWXh1J0DA=\nR:generate_key_pair.go\na:0:0:444\nZ:Q1w7ODPmjMG7IbFgReVRcdbcAQgWs=\nR:generate_key_pair_test.go\na:0:0:444\nZ:Q1/FYPkypwVWM0AuV8LkY9509Pdjc=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/importkeypair\nM:0:0:555\nR:import_key_pair.go\na:0:0:444\nZ:Q16mm63eejMciQJV4gGHaNVI7gzcs=\nR:import_key_pair_test.go\na:0:0:444\nZ:Q1iINKuVlPDE6VXmrRAod/SmzeMW8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/initialize\nM:0:0:555\nR:init.go\na:0:0:444\nZ:Q12qgrY0J4IILzF/EatMNMXM4aMJY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/manifest\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1SQksuJvyAK6CGd8tHWp8sr9Ur2A=\nR:verify_test.go\na:0:0:444\nZ:Q18hyS/KXObZmyrmbGKEMqh0k42YM=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/options\nM:0:0:555\nR:annotations.go\na:0:0:444\nZ:Q1YsRBNMgbY0MqlSNqo0IZgwgXBms=\nR:annotations_test.go\na:0:0:444\nZ:Q1cUu2irn0H+n4OUalQspW5oY7hUQ=\nR:attach.go\na:0:0:444\nZ:Q1bZAMdR+UCg6AXGWM70jns2hlroM=\nR:attest.go\na:0:0:444\nZ:Q1GhsOxDSGSY1vydb3eg7qyY7+54w=\nR:attest_blob.go\na:0:0:444\nZ:Q1bREtNsi87stmyrEfcHzUu5LkFb4=\nR:certificate.go\na:0:0:444\nZ:Q18Uq49PKpi3X32l7C4UnQEWx32Rg=\nR:clean.go\na:0:0:444\nZ:Q1Al05TwVaevq+pv4+xrnIOHc5rYQ=\nR:copy.go\na:0:0:444\nZ:Q1xdpAE65HU8sEqI1sDZtRsrMBL20=\nR:download.go\na:0:0:444\nZ:Q1HOpRvKsovHSxdtpFxfte6xFhBlY=\nR:errors.go\na:0:0:444\nZ:Q1VCu5+GlZMG4VXODrUjE1tj69Suw=\nR:experimental.go\na:0:0:444\nZ:Q1AqbTx8Iwd16NI1xKIBn5iZJFdcM=\nR:files.go\na:0:0:444\nZ:Q15/OeP+n5gPAQyD+0fLCy26Tc6/o=\nR:flags.go\na:0:0:444\nZ:Q1c7XIrBJr2yh+Oioio6/77XP3tlw=\nR:flags_test.go\na:0:0:444\nZ:Q1EkE5S9jxkEvT4m/vxJ8NxbWmMRU=\nR:fulcio.go\na:0:0:444\nZ:Q1noUvN703KaU27YzPUqBSPuN7XJM=\nR:generate.go\na:0:0:444\nZ:Q1PEebSsDWyHgj7in/GDtazuW5848=\nR:generate_key_pair.go\na:0:0:444\nZ:Q19YOwpMb5isl10gGXsmzH5bW51MM=\nR:import_key_pair.go\na:0:0:444\nZ:Q1wueuMj9Lt/BPz8E/0zwJ76QFQQk=\nR:initialize.go\na:0:0:444\nZ:Q1fbWqmUfDzKsCmMmqTh5hqMYjPFQ=\nR:key.go\na:0:0:444\nZ:Q1EKa246UCtR9Sw+Ofs22BB7CTbRA=\nR:load.go\na:0:0:444\nZ:Q1nt2l2F1E5eYgW3WBGtcvwj9/87k=\nR:oidc.go\na:0:0:444\nZ:Q1KYjYc/tqSiPc7zO+/bTiqzDQkVU=\nR:options.go\na:0:0:444\nZ:Q1heD4Lx7gunGkm5zsVA/7aGE8OII=\nR:piv_tool.go\na:0:0:444\nZ:Q1gXXhWvoWgaE+qntGSLCpMP/eioM=\nR:pkcs11_tool.go\na:0:0:444\nZ:Q1tLAHOwmlK1xZf8QNj6M65msRRAI=\nR:policy.go\na:0:0:444\nZ:Q1GnxX1VEoZ7as80GZgyl+yBA1ipM=\nR:predicate.go\na:0:0:444\nZ:Q1Ud3puixWyGTkqzMTPQSYL1bRt0k=\nR:public_key.go\na:0:0:444\nZ:Q1I0mkKfeMddLTP2Ij0lwQQFkCX+U=\nR:reference.go\na:0:0:444\nZ:Q1g8c9vV3Sn0VhHKGqd8SK3JXiZZQ=\nR:registry.go\na:0:0:444\nZ:Q1Oj+EPyWW07dfFOROJCq7QY3dcA4=\nR:rekor.go\na:0:0:444\nZ:Q1+AJvxDRwX+RPYAuTglNOqXoY0l4=\nR:root.go\na:0:0:444\nZ:Q1LyNLCIjwcVEs6Vi0DXG0GqIOQmU=\nR:save.go\na:0:0:444\nZ:Q16sw0e2d277ZcGJUPL0BiI5ujopY=\nR:security_key.go\na:0:0:444\nZ:Q1UFkaGqvVOVzTCvgSpBxs/3utcZE=\nR:sign.go\na:0:0:444\nZ:Q1teMAiZccMLYMpjfkqsLzBJSMyJQ=\nR:signature_digest.go\na:0:0:444\nZ:Q1KHoTJoYwRHynqhZMl1UVjk0AJnw=\nR:signblob.go\na:0:0:444\nZ:Q1EKBoCicSutja1Bw/yB0rUoetOaQ=\nR:tree.go\na:0:0:444\nZ:Q1rGeEXXvIyJoFNyvQ8VoKqYOkEAA=\nR:triangulate.go\na:0:0:444\nZ:Q1ofA+bFnwsrZ1q1457fLAjgkSr4M=\nR:upload.go\na:0:0:444\nZ:Q1CU+JaI94Juen8RXDS2PQEg8h6Gw=\nR:useragent.go\na:0:0:444\nZ:Q1LPgHxtL3Fcvh/9FY42fj6QMOswU=\nR:verify.go\na:0:0:444\nZ:Q1t0i7myRB57kBEhzfkDXWnLW5AFk=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/pivcli\nM:0:0:555\nR:commands.go\na:0:0:444\nZ:Q11gqfbchuUtGAvAHanjZ6kUQeE+I=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/pkcs11cli\nM:0:0:555\nR:commands.go\na:0:0:444\nZ:Q1b1QFXJQ7VGF4wc5SrQYeQUrRN1c=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/publickey\nM:0:0:555\nR:public_key.go\na:0:0:444\nZ:Q1kG7+U7qs13CErBTyJizoUmTgte0=\nR:public_key_test.go\na:0:0:444\nZ:Q16cZKQrkOOMbcJN/2MJI6bIvlSr0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/rekor\nM:0:0:555\nR:rekor.go\na:0:0:444\nZ:Q1a8uWQ07b7pN0nJy2ZQs8u9sSj5U=\nR:rekor_test.go\na:0:0:444\nZ:Q1N1XfeACEYpc7pyW3jsJxTMtKKmA=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/sign\nM:0:0:555\nR:sign.go\na:0:0:444\nZ:Q1zvx5IIsvkDAewJYQksTVMBn15Oo=\nR:sign_blob.go\na:0:0:444\nZ:Q1dxN4A1eaj4HNCOG1LcEday+HJuQ=\nR:sign_test.go\na:0:0:444\nZ:Q1XqxgzLj9cTpw1vaeVwIxBZMeWZk=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/triangulate\nM:0:0:555\nR:triangulate.go\na:0:0:444\nZ:Q1IEvogLa79DPzXMuEtrQCjpx8KTE=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/upload\nM:0:0:555\nR:blob.go\na:0:0:444\nZ:Q137Y0r0pQfQbHZKqQjZh5bXeMJ5c=\nR:wasm.go\na:0:0:444\nZ:Q1pp5MmCNQ/u6hG0jkUWq3L86tlXc=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/cosign/cli/verify\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1SpjFO5KdceDh6u+hNt3AAMB3iQo=\nR:verify_attestation.go\na:0:0:444\nZ:Q1SoyOqoLotZIpWZtHol+0CujGjbM=\nR:verify_blob.go\na:0:0:444\nZ:Q13S8Wnu2NQaz1cEafjGx1UtanuTc=\nR:verify_blob_attestation.go\na:0:0:444\nZ:Q1E19GLP3Qqqv7RONrrfiWaXIhAh4=\nR:verify_blob_attestation_test.go\na:0:0:444\nZ:Q1f6frtqfkBbEl5h2J32Il/MeKyMA=\nR:verify_blob_test.go\na:0:0:444\nZ:Q12JEnT3yg4xmzkbvImG3bjwcupyY=\nR:verify_test.go\na:0:0:444\nZ:Q1CeLLMt3sTv4JhjrS4zBs/HhO9SQ=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/help\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1shidV5Ft/Bo4Skmtwzz977x/hvg=\nR:verify.sh\na:0:0:444\nZ:Q1lZJXYS5J40AQqFWVld3OiugP2Eo=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/sample\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1piExR/f8WEivF7jIpNLfn33F+9s=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/sget\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1D+zVQoJJXfL6Y+v9hDJWuc8i1c4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/sget/cli\nM:0:0:555\nR:commands.go\na:0:0:444\nZ:Q1S+FGxLx5Sbs1xAdVcq/MARjpb/8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/cmd/sget/cli/options\nM:0:0:555\nR:root.go\na:0:0:444\nZ:Q1NN0/wuZGdglPnnUfc3lIxmIi7SY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/doc\nM:0:0:555\nR:cosign.md\na:0:0:444\nZ:Q1LVaNA8d/FE3F5G1SCCwKjjZCIBc=\nR:cosign_attach.md\na:0:0:444\nZ:Q1a3eWc28C24+loecZcWZ0lF4UH9Y=\nR:cosign_attach_attestation.md\na:0:0:444\nZ:Q1wzU+Pa8DXmPqmctHpjsIRhzzhiM=\nR:cosign_attach_sbom.md\na:0:0:444\nZ:Q1OChVqMP2sGrXIaqAg7u/dd2Y6Tw=\nR:cosign_attach_signature.md\na:0:0:444\nZ:Q14xfzmB8N/M/8VGmy14v/nJ4IEOU=\nR:cosign_attest-blob.md\na:0:0:444\nZ:Q1Pb2+g9AKSgTqm/IbGjb2DJ1w9JA=\nR:cosign_attest.md\na:0:0:444\nZ:Q1mMmUW3NMvEICvXBp4gcdChRueJg=\nR:cosign_clean.md\na:0:0:444\nZ:Q1zr+ID82hUYE4rM0yYFbuujWKwdE=\nR:cosign_completion.md\na:0:0:444\nZ:Q1ix+RP3kYLx3MYW2e5a8UdMgrChQ=\nR:cosign_copy.md\na:0:0:444\nZ:Q1Qn+VAw7ATOMDeSa3iPBSMQQK7ZY=\nR:cosign_dockerfile.md\na:0:0:444\nZ:Q1I57gcsvUrSq+TkrxOPsBPdNw9lY=\nR:cosign_dockerfile_verify.md\na:0:0:444\nZ:Q1by0awTWtduo9EuvoImm6m3j8xn4=\nR:cosign_download.md\na:0:0:444\nZ:Q1yFV/nvheRfNoQYR3fz/fBxTJmqg=\nR:cosign_download_attestation.md\na:0:0:444\nZ:Q1i6blPAV+0nmTsqDYT7/6uNrsSJk=\nR:cosign_download_sbom.md\na:0:0:444\nZ:Q1kEyFmItkK2sbD1ar6BiCvcOBVv8=\nR:cosign_download_signature.md\na:0:0:444\nZ:Q1nce3Fk7iJLpsAQmWsn6jXjb0rz4=\nR:cosign_env.md\na:0:0:444\nZ:Q1A6oaPO2nZr1Z6iU3UBuMiD5VShg=\nR:cosign_generate-key-pair.md\na:0:0:444\nZ:Q1pwoB82ZtvBhViK3blILIuIMgTV4=\nR:cosign_generate.md\na:0:0:444\nZ:Q1IMtEqzuv6pnvt8RlT6+RRzv29/o=\nR:cosign_import-key-pair.md\na:0:0:444\nZ:Q1J11D62VrXt2hdKcTPoddImTE5xE=\nR:cosign_initialize.md\na:0:0:444\nZ:Q1RKLOAXNiZsTD4dy+aaeSLH8mQ94=\nR:cosign_load.md\na:0:0:444\nZ:Q1yhp4XMhBYH5H1LrzhvaSEQ2BRBM=\nR:cosign_login.md\na:0:0:444\nZ:Q18Qwlcb0KJD2EjhTwcCdunlwaXLc=\nR:cosign_manifest.md\na:0:0:444\nZ:Q1vUT1f5kZkEqLjO72yjlN+2kcBuM=\nR:cosign_manifest_verify.md\na:0:0:444\nZ:Q1c5X1t/BTnJkSDRTcQEOjBxpE318=\nR:cosign_piv-tool.md\na:0:0:444\nZ:Q102sHo/yDmc9sRxjx0enRpYHbXKk=\nR:cosign_piv-tool_attestation.md\na:0:0:444\nZ:Q16IrUl3n6bv/kq7qocOWcCip+F9U=\nR:cosign_piv-tool_generate-key.md\na:0:0:444\nZ:Q16a1tNshcH1cW5fnwPFGJxr0xyVE=\nR:cosign_piv-tool_reset.md\na:0:0:444\nZ:Q1Y+Gxv+BCJEz8OVvrz2zTNaLfYr0=\nR:cosign_piv-tool_set-management-key.md\na:0:0:444\nZ:Q1I7RsbV37QY37SdTtjmvh8qSFUOA=\nR:cosign_piv-tool_set-pin.md\na:0:0:444\nZ:Q15BEc6ytBjA/vqBTcNcF8bt2BMB4=\nR:cosign_piv-tool_set-puk.md\na:0:0:444\nZ:Q1D2hV+/aZn351ntHIX0mjm0LjpOw=\nR:cosign_piv-tool_unblock.md\na:0:0:444\nZ:Q15YEbeKMWLyXu5WDICPggObD1tWk=\nR:cosign_pkcs11-tool.md\na:0:0:444\nZ:Q1aHOHqKhlXYw/+mCFnUbfR6O4WPU=\nR:cosign_pkcs11-tool_list-keys-uris.md\na:0:0:444\nZ:Q1P/sXxl0USQvnwG0vyY9/DRx47mo=\nR:cosign_pkcs11-tool_list-tokens.md\na:0:0:444\nZ:Q1i8eqc2uJ/I4XwqcvuQ0/nruUavM=\nR:cosign_policy.md\na:0:0:444\nZ:Q1zoNEi2PKwNT7mNGGmKMGOETmMn8=\nR:cosign_policy_init.md\na:0:0:444\nZ:Q1YDTG6R2+lpZVUmWlnvunkszxdLM=\nR:cosign_policy_sign.md\na:0:0:444\nZ:Q1EHIt4x8eKCmkEfhkIRPqpcXr//E=\nR:cosign_public-key.md\na:0:0:444\nZ:Q1rb/Tg8abuFGxK9VvrOlSBJEb2D8=\nR:cosign_save.md\na:0:0:444\nZ:Q16lK/G+UezJnxH/zBk21uKdy9Kgc=\nR:cosign_sign-blob.md\na:0:0:444\nZ:Q1If1KFvsGwNSr1IDBBAAwp1iXlAM=\nR:cosign_sign.md\na:0:0:444\nZ:Q1hvsMUDCBTanAL9/iE9xcb+Reyxs=\nR:cosign_tree.md\na:0:0:444\nZ:Q1zQ/yitsKLxbq5Cer7C8cAnt1fSI=\nR:cosign_triangulate.md\na:0:0:444\nZ:Q14QsPn2aKCiHiLkS6PuRDeMekgsU=\nR:cosign_upload.md\na:0:0:444\nZ:Q172NkMsQHo1EfxR5Cp9m0PmASMqY=\nR:cosign_upload_blob.md\na:0:0:444\nZ:Q1qArDgp1BZvyDnS0hEKSRzwm3DdQ=\nR:cosign_upload_wasm.md\na:0:0:444\nZ:Q1jFf6YoxsJqosbN17NBkAeTxjanU=\nR:cosign_verify-attestation.md\na:0:0:444\nZ:Q1UOTULa3086FGQueXg4TmxpyTGnY=\nR:cosign_verify-blob-attestation.md\na:0:0:444\nZ:Q1KLuPs/ORn5P5fGHwKfkany1jixc=\nR:cosign_verify-blob.md\na:0:0:444\nZ:Q1rplKju+l/+z6wPtgAW+u0T7deUQ=\nR:cosign_verify.md\na:0:0:444\nZ:Q10EUs12ooSaPLte678FGgFu8R7V0=\nR:cosign_version.md\na:0:0:444\nZ:Q1JPw9KGigjZZOVyOjzVOfS/uWIto=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/hack\nM:0:0:555\nR:github-oidc-setup.sh\na:0:0:444\nZ:Q1eMGtnRB6cpsQ/sfULcrlujvQiww=\nR:update-deps.sh\na:0:0:444\nZ:Q1iwqM5jNxs7vSoJkC/qOdDR2UqNU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/hack/boilerplate\nM:0:0:555\nR:boilerplate.go.txt\na:0:0:444\nZ:Q10RBa6nc4tQeqJgw1hSkBB59bVbs=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/images\nM:0:0:555\nR:intro.gif\na:0:0:444\nZ:Q1h18nCuAkZzaadBNWNrthn8lokU0=\nR:logo.svg\na:0:0:444\nZ:Q1ed2xTQh29+dNVMLujgQYCUKD8wg=\nR:signatures.dot.svg\na:0:0:444\nZ:Q1E/VZbzKQqufgluYgrTxLeWeUpGo=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/images/dot\nM:0:0:555\nR:signatures.dot\na:0:0:444\nZ:Q1EfRAMyxEBLQN1HuvOfHURg/ZmHs=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1JV93eNmqvvgX6uk2BlpDKA/3MjQ=\nR:common_test.go\na:0:0:444\nZ:Q1kpueWMMWCKDL1CqEBshEU5IeQYY=\nR:dsse.go\na:0:0:444\nZ:Q1dZq2vQRWWGLi471qp6iEm2bYy58=\nR:sign.go\na:0:0:444\nZ:Q1SWJ0Ah8Te5JsQybu+W8DvKkX5yw=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/ephemeral\nM:0:0:555\nR:signer.go\na:0:0:444\nZ:Q1jlwxCrmTk/C7YQ73X9RJfr9ECcw=\nR:signer_test.go\na:0:0:444\nZ:Q1p32bRn/amLSqKT8hxSXWA9YMM4Q=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/fulcio\nM:0:0:555\nR:signer.go\na:0:0:444\nZ:Q1rQf9lpgUIC50KeEP9XGZOxhfAqM=\nR:signer_test.go\na:0:0:444\nZ:Q1jIrQ+O1Qo/JH+9bEbWOmqb8J6PY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/fulcio/fulcioroots\nM:0:0:555\nR:fulcioroots.go\na:0:0:444\nZ:Q1Dkw2VldHNk3qMshkK0Psf8BevRs=\nR:fulcioroots_test.go\na:0:0:444\nZ:Q1xW/sO2YqY4iBVx3s8E68P+4UCT8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/payload\nM:0:0:555\nR:attestor.go\na:0:0:444\nZ:Q1Zkhe22cAzNHTNwMGM5G6AIYZ8dI=\nR:attestor_test.go\na:0:0:444\nZ:Q1HHx6/fHVG0Erm6U9cLEn7gFUg6U=\nR:signer.go\na:0:0:444\nZ:Q1019esAFfyqLnqslrMNyor1sKlDE=\nR:signer_test.go\na:0:0:444\nZ:Q1vgwgxKsbk5dUWOrXmtomtz+1DC4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/rekor\nM:0:0:555\nR:signer.go\na:0:0:444\nZ:Q1AXIpM037LS9wD+OqU/1Jv5c8LEk=\nR:signer_test.go\na:0:0:444\nZ:Q1AnEo8oi3jEj/SS6Ii6a1FRzON8o=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/internal/pkg/cosign/rekor/mock\nM:0:0:555\nR:mock_rekor_client.go\na:0:0:444\nZ:Q1liC+Xg98xsUzkru/m3dLtsrkEU0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/blob\nM:0:0:555\nR:load.go\na:0:0:444\nZ:Q1loS2JxdQDZ3HfLSk+gb8W3ffyn0=\nR:load_test.go\na:0:0:444\nZ:Q1VTNxMjZ0N55lH7ji/a9CSVoggjM=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign\nM:0:0:555\nR:certextensions.go\na:0:0:444\nZ:Q1xQQBSKRtZH6Pt5EVzADbYUC4b8w=\nR:certextensions_test.go\na:0:0:444\nZ:Q1SqhN2B5v47NsDNJQ8vH5+wzdmdI=\nR:common.go\na:0:0:444\nZ:Q1A+zWVd9iud8QL1xtG6x081cxUbk=\nR:errors.go\na:0:0:444\nZ:Q19mAc2MoTe62bm20ltVWRjg0mVuA=\nR:errors_test.go\na:0:0:444\nZ:Q1DL1KMbj3O2BiSs1LonNh4W8n7K0=\nR:fetch.go\na:0:0:444\nZ:Q1he3N0cWc1fIUXq9lrufI597A7i8=\nR:keys.go\na:0:0:444\nZ:Q17HA633lvQ843eL4Yo2YW336734o=\nR:keys_test.go\na:0:0:444\nZ:Q1q6wxkP3fzy3MDtF1WBo33x3qF08=\nR:rekor_factory.go\na:0:0:444\nZ:Q1vgt5PDFa7qx9xxtooGhgJqjkir8=\nR:tlog.go\na:0:0:444\nZ:Q1ybB7hd2gp/oQtAdU7jwo8IGymZ0=\nR:tlog_test.go\na:0:0:444\nZ:Q11bKjLJOprNGPn1TRMJ9ko041r4o=\nR:verifiers.go\na:0:0:444\nZ:Q1/IqfukbUWUKPe8KfMNraSC5jJhY=\nR:verifiers_test.go\na:0:0:444\nZ:Q1qfcCAtgXYYwKPm71O97NNUgDUKE=\nR:verify.go\na:0:0:444\nZ:Q1dXOnGUnBntRurJzJgnkR6+D4SVw=\nR:verify_test.go\na:0:0:444\nZ:Q1L3iV/89DVzZxwdY+T0oBYIUo6oo=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/attestation\nM:0:0:555\nR:attestation.go\na:0:0:444\nZ:Q1Vg8ncV5mrni9rFGbr8ENSkuTwqQ=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/bundle\nM:0:0:555\nR:rekor.go\na:0:0:444\nZ:Q1d22t0Y8alvj4Wne9M60lNrvdqqU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/cue\nM:0:0:555\nR:cue.go\na:0:0:444\nZ:Q1zw5RvPVrcgU+WtaYAtUZZumyfQ8=\nR:cue_test.go\na:0:0:444\nZ:Q18Y9ArIEFcaiE/yMb4/MxSrmpAMY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/git\nM:0:0:555\nR:git.go\na:0:0:444\nZ:Q121JYxzKogENI37Gw21gaa+wECVU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/git/github\nM:0:0:555\nR:github.go\na:0:0:444\nZ:Q1D4aguQ0HOJ5Is869bxsB9+N0rt0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/git/gitlab\nM:0:0:555\nR:gitlab.go\na:0:0:444\nZ:Q1JN1Oiscmp5w8hmLHSLcjLDu2/lY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/kubernetes\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1jcc5+Rjrm5ut5J40aoYNcQwH45E=\nR:secret.go\na:0:0:444\nZ:Q1Clc+yA3IMzErffF/+w9XTGF7tpg=\nR:secret_test.go\na:0:0:444\nZ:Q1MscMnDlMwbpREMDJ7N3cvPY5Zgw=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/pivkey\nM:0:0:555\nR:disabled.go\na:0:0:444\nZ:Q19BHkphGnxPUbWIv2C15VkStbKKc=\nR:pivkey.go\na:0:0:444\nZ:Q1sOcIGmWjLJuwXdW6CIb+I4GtaPY=\nR:util.go\na:0:0:444\nZ:Q1OPRDbTrF6xqk90kH0Vs8dQOItjo=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/pkcs11key\nM:0:0:555\nR:disabled.go\na:0:0:444\nZ:Q1urtFjRV3Vrg7RpwvhFhGjiKeIBM=\nR:pkcs11key.go\na:0:0:444\nZ:Q1siJMWNsyw7C2weAuVcnYvO9zj5g=\nR:util.go\na:0:0:444\nZ:Q1TVRnUEJVz5RnYs1CkweXutPsP9E=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/rego\nM:0:0:555\nR:rego.go\na:0:0:444\nZ:Q1AtD9Wrr27Mx6NcySLKB3oliTbKY=\nR:rego_test.go\na:0:0:444\nZ:Q1TqdfAUR0fm1oMfDXNzdx6b9Ia88=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/remote\nM:0:0:555\nR:index.go\na:0:0:444\nZ:Q1RW/idYvRnWbaJJ2GQl5vPdUI+Iw=\nR:index_test.go\na:0:0:444\nZ:Q1tfPQYY/u+QNHpvjUBH3dPsSj1N8=\nR:remote.go\na:0:0:444\nZ:Q12XRgwUGFPcmq2xnloXg7wHA+r+U=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/cosign/remote/testdata\nM:0:0:555\nR:bar\na:0:0:444\nZ:Q14kLtO//M3ycbf7rzTtctCJU3tC8=\nR:foo\na:0:0:444\nZ:Q18dLS+STphqyG/fezbJS83zK+7BU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1lUPt7lY4wpX2Z7HGvK/qr0i4yc0=\nR:file.go\na:0:0:444\nZ:Q1q9Q6wFwMj9nbbKm04m/ecYO97RM=\nR:image.go\na:0:0:444\nZ:Q1AtZT6SxEIJR8nYPmPZbNp3BaQk0=\nR:index.go\na:0:0:444\nZ:Q10TJwtr4JTLtcu5nn83Uid0U73s0=\nR:interface.go\na:0:0:444\nZ:Q10W/rET/CJNol8duV11yDYp0BGs4=\nR:mediatypes.go\na:0:0:444\nZ:Q1vy/k4zNqR1HibXVgR3cv0lF85M8=\nR:signatures.go\na:0:0:444\nZ:Q13q4NmrA1JDApyWBv+C4m5II8W4w=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/empty\nM:0:0:555\nR:empty.go\na:0:0:444\nZ:Q18LO7gQ9Fc5r8dWuah54aHbWzkGw=\nR:empty_test.go\na:0:0:444\nZ:Q1iE4lZgzGcq53DMRhOnFpFmLSqQs=\nR:signed.go\na:0:0:444\nZ:Q1cfLnGAvWfaHTFOWQOGYd3d+LBEw=\nR:signed_test.go\na:0:0:444\nZ:Q1YItvJduHiG0ktm18F+37hd3Pxg8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/internal/signature\nM:0:0:555\nR:layer.go\na:0:0:444\nZ:Q10o3tPT8IyExOblegVYKoYXs7TOE=\nR:layer_test.go\na:0:0:444\nZ:Q17O761kl/KyhnTpgtgOQHeoULjf4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/layout\nM:0:0:555\nR:index.go\na:0:0:444\nZ:Q1+AfSsLH2pCpL1mzTNXxvDPY48M4=\nR:signatures.go\na:0:0:444\nZ:Q111vjZD9wCxveZ1DBP6RTSeS0yOY=\nR:write.go\na:0:0:444\nZ:Q1vtVgJQU/gXv4W6GMVYanvXiFfiQ=\nR:write_test.go\na:0:0:444\nZ:Q1J2+HlwJW9udSw0Qo1h/3sgGBzlU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/mutate\nM:0:0:555\nR:map.go\na:0:0:444\nZ:Q132VgYko7doSkbcgBUo/mnUH2Jdw=\nR:map_test.go\na:0:0:444\nZ:Q1TWBSVMlWCjvJc3CuJUNSGwphcVs=\nR:mutate.go\na:0:0:444\nZ:Q1sdxuHmlBC9rXoFtysHPDFVE0Nlk=\nR:mutate_test.go\na:0:0:444\nZ:Q11ufHy21njTAWNxGhNgpBXlBpTQo=\nR:options.go\na:0:0:444\nZ:Q1SnOD1y+JPIZUSSb1jWnT+aJj1CM=\nR:signature.go\na:0:0:444\nZ:Q1ZckmMLHix5pkq8l22hzsbeJObrE=\nR:signature_test.go\na:0:0:444\nZ:Q1IxP3a++y59QcWk5O9rItEsDOVrQ=\nR:signatures.go\na:0:0:444\nZ:Q17GMR8sSQtzqeO3BCgNpJCQQVKy4=\nR:signatures_test.go\na:0:0:444\nZ:Q1+3tgPDE+CMfy2lDZSxLstReLB5o=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/remote\nM:0:0:555\nR:digest.go\na:0:0:444\nZ:Q1c09Yp9KGq8YTzZGRrW/jfy8YOo0=\nR:digest_test.go\na:0:0:444\nZ:Q1M1YAX2WolkJOYsd2Nr1ir1UOvKk=\nR:image.go\na:0:0:444\nZ:Q14yrWL65TFQNO/NloH8eZsyrjddc=\nR:image_test.go\na:0:0:444\nZ:Q1BrSozItVbIbwv+0gVr2EPjYaJsE=\nR:index.go\na:0:0:444\nZ:Q1rc1X3U7AxRsKDp5J3+l3Qx2mfDo=\nR:index_test.go\na:0:0:444\nZ:Q1RHCPSm7AaWF+Xi6baGOy19W2a7E=\nR:options.go\na:0:0:444\nZ:Q10FsmKdxTNh1GAXzC+AcxRXzIw2U=\nR:options_test.go\na:0:0:444\nZ:Q1vvU/0aBAuM7oT2A5IN5J6E6SZCo=\nR:remote.go\na:0:0:444\nZ:Q1bt3hvMbDZhLIpEW1Le8Ml5cCJJg=\nR:remote_test.go\na:0:0:444\nZ:Q1jWdci9EltjrbhTBgHdrhlDayMww=\nR:signatures.go\na:0:0:444\nZ:Q1QOQos1zL5ojCaAwbjHkV2gtQIa0=\nR:signatures_test.go\na:0:0:444\nZ:Q1odvYWVFJwP79haHgJZvg05wfeBY=\nR:write.go\na:0:0:444\nZ:Q1rvAgtj/XzznAIE7cH2ahI7TM3e0=\nR:write_test.go\na:0:0:444\nZ:Q1JvKhI+JUXtQAoduhXjkFPbAfkOY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/signature\nM:0:0:555\nR:layer.go\na:0:0:444\nZ:Q10o3tPT8IyExOblegVYKoYXs7TOE=\nR:layer_test.go\na:0:0:444\nZ:Q17O761kl/KyhnTpgtgOQHeoULjf4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/signed\nM:0:0:555\nR:image.go\na:0:0:444\nZ:Q14c42b6wrum20d7qW+95Yw49NnX0=\nR:image_test.go\na:0:0:444\nZ:Q1Os/6OGCTy16mPzAc2KlUPYAoUJQ=\nR:index.go\na:0:0:444\nZ:Q19OmBy41CnryUJKhRRGNE20C0xWM=\nR:index_test.go\na:0:0:444\nZ:Q1W7ssRW5ea3qFrma/fz6s5sfLi6g=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/static\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1u3Vv5EhiMes+C8HxpB4i1Oz1bdA=\nR:file_test.go\na:0:0:444\nZ:Q1fMkex0dAFFGSc4fuhGfdxinK0s4=\nR:options.go\na:0:0:444\nZ:Q14xJG9xs89vYwYtz6T4qPfsFtA70=\nR:options_test.go\na:0:0:444\nZ:Q1Lw662Zmeol4cjYE1gQC73yxPQQY=\nR:signature.go\na:0:0:444\nZ:Q12nKzCNRgl1+F+J5AW3O2rh0hkHg=\nR:signature_test.go\na:0:0:444\nZ:Q1HXzGf0xBgszy/ZmzwDwQCicGNcw=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/oci/walk\nM:0:0:555\nR:walk.go\na:0:0:444\nZ:Q1EUcpaRMQaPl6rDMhs5Rej5NgGzw=\nR:walk_test.go\na:0:0:444\nZ:Q1yGBF/2QPDG1zVIwJ8QN815G+FfY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/policy\nM:0:0:555\nR:attestation.go\na:0:0:444\nZ:Q19qPlUUlOk0pOTgQHMFNUV4MD2aI=\nR:attestation_test.go\na:0:0:444\nZ:Q1Qcc9XP1pYOyEMpImgey5NYUTBKA=\nR:eval.go\na:0:0:444\nZ:Q1zbLjETJhf8c7H9SkSLBFGyd7vUU=\nR:eval_test.go\na:0:0:444\nZ:Q1scLsJi2H58NHD11SvPaUe0cFPb4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/policy/testdata\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/policy/testdata/malformed\nM:0:0:555\nR:custom\na:0:0:444\nZ:Q1H6gJBhyW39DcZ5lOU78qcaIyluo=\nR:vuln\na:0:0:444\nZ:Q1Y6+3Z7XLKlvz2DeScQgBMQVauF4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/policy/testdata/valid\nM:0:0:555\nR:custom\na:0:0:444\nZ:Q1H6gJBhyW39DcZ5lOU78qcaIyluo=\nR:vuln\na:0:0:444\nZ:Q1Y6+3Z7XLKlvz2DeScQgBMQVauF4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1LstaTnoxbFHr3TplttCMUaXqb98=\nR:interface.go\na:0:0:444\nZ:Q1jMeRzU96325bzRPz5No+6LyQglE=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers/all\nM:0:0:555\nR:all.go\na:0:0:444\nZ:Q1vJTQvUdAJ/T28KAY7IJqgjAzUm8=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers/filesystem\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1FNVcJ8egW6MnNs1DO0OvoV4JrNU=\nR:filesystem.go\na:0:0:444\nZ:Q1EdJSZxH51QZtt1/u0/NPigZ4t4Q=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers/github\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1hQKIywrGgHRb56peqLSOZdEF/wc=\nR:github.go\na:0:0:444\nZ:Q1Gwm1ypyzFmbgwkZDGTjjYqJNcZ0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers/google\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1Cr3zhS1boam0qI2xWR9wUmpdhw8=\nR:google.go\na:0:0:444\nZ:Q1Sw63Zxx7uWiVuTRLpPEQkCWR7e4=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/providers/spiffe\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1CPYuH72888l8hMqVSRzqO9bzUGk=\nR:spiffe.go\na:0:0:444\nZ:Q1fZjtOF0ltyDTL611g1wu1AvauxU=\nR:spiffe_test.go\na:0:0:444\nZ:Q1ez1BWD5Z7Xf/j0L3wG761PFtNFE=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/sget\nM:0:0:555\nR:sget.go\na:0:0:444\nZ:Q11s1QBSerbwEOiuSpFS1hX6GgsnU=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/signature\nM:0:0:555\nR:annotations.go\na:0:0:444\nZ:Q1Y4a61axdy4+r44//8tSdQ5jqJZc=\nR:keys.go\na:0:0:444\nZ:Q1yPAs8mWkGxHQXCty6P/+RlvGTAU=\nR:keys_test.go\na:0:0:444\nZ:Q1FWrgu6OlawqCCIa9YEsJJVXRcAA=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/pkg/types\nM:0:0:555\nR:media.go\na:0:0:444\nZ:Q1Ex8rd9rqyIuW0aA9ggyxd1seMUg=\nR:payload.go\na:0:0:444\nZ:Q1nEaibSGJQBhDU1mZGCtURVmEBWk=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/release\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1IoSupEFZXBNj51zE/0ZIrzSm9Rg=\nR:cloudbuild.yaml\na:0:0:444\nZ:Q1s2Ti3Iw/6SrmmHcpR0kuv+OATYA=\nR:ko-sign-release-images.sh\na:0:0:444\nZ:Q13UumS5Ol/3bLomdzzeD7krughmQ=\nR:release-cosign.pub\na:0:0:444\nZ:Q1yTGB1Kw9EOOjSkTaLGquZ9JFQMM=\nR:release.mk\na:0:0:444\nZ:Q1a2hqLrbMafx5D9F2zLhVwhuLepc=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/scripts\nM:0:0:555\nR:sign-images-ci.sh\na:0:0:444\nZ:Q1VWeT7KAMzLxJmtfRAaF4vXbEONw=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/specs\nM:0:0:555\nR:ATTESTATION_SPEC.md\na:0:0:444\nZ:Q17T5qu90e+FcwKI6teKZU+4ZYZpk=\nR:COSIGN_PREDICATE_SPEC.md\na:0:0:444\nZ:Q1/VQy7hyUWDAVQvBKwf/m+xFwr1Y=\nR:COSIGN_VULN_ATTESTATION_SPEC.md\na:0:0:444\nZ:Q1cMfhutA3ogl5+Vq9fToy7HG3dCE=\nR:SBOM_SPEC.md\na:0:0:444\nZ:Q1/sp1ZmuDMCTtLyWK4wA119kjVOo=\nR:SIGNATURE_SPEC.md\na:0:0:444\nZ:Q1VQYgZEvY2L6dGNPeYV+3bWD9aqY=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test\nM:0:0:555\nR:cert_utils.go\na:0:0:444\nZ:Q1clVFMGf0cbLa8+FJZtSyo4Vnzvw=\nR:ci.mk\na:0:0:444\nZ:Q1vOgYoG1IlZURM0zgJrR718CnOK0=\nR:e2e_test.go\na:0:0:444\nZ:Q1BrzvFUXebuGov4U0oqM6g/eEgaA=\nR:e2e_test.ps1\na:0:0:444\nZ:Q1IX9Gsj+/0SZbOCphuR8pcSWWADM=\nR:e2e_test.sh\na:0:0:444\nZ:Q1LCFFcQTOewsXhabFIm9qpyh31y8=\nR:e2e_test_insecure_registry.sh\na:0:0:444\nZ:Q18bloQIC3Z79FWG26tsvV67bTIYw=\nR:e2e_test_secrets.sh\na:0:0:444\nZ:Q1bRepXU2lyWMCe0dJJbHK0YcDgBE=\nR:piv_test.go\na:0:0:444\nZ:Q1z0jJVYzZdYjuLADz28gfzpJLieg=\nR:pkcs11_test.go\na:0:0:444\nZ:Q1kdIY0UL2TO8YnckvyBP/0xRc5N8=\nR:sign_blob_test.sh\na:0:0:444\nZ:Q1WWesAc57MZ41RTAgu7lHGUFFTD0=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/cmd/getoidctoken\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1TT/pB6RUKZrmp3NVLyIizNs8k/o=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/config\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/config/gettoken\nM:0:0:555\nR:gettoken.yaml\na:0:0:444\nZ:Q16nyGnAc1FokxOeR7ZOqt4ctGAIk=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1qGLBa92M1UdvuKJCvGxEM5Xa/OM=\nR:bom-go-mod.cyclonedx.json\na:0:0:444\nZ:Q1h8Lj/Bf9z+Rgc785tU5oLtvo7bY=\nR:bom-go-mod.spdx\na:0:0:444\nZ:Q1OBZu5XxNxNKvtO12sYJ9BRhy+9k=\nR:bom-go-mod.spdx.json\na:0:0:444\nZ:Q1vVuHBBAkoUBka95aGiLO5xzn1Ic=\nR:fancy_from.Dockerfile\na:0:0:444\nZ:Q18L1QzPbTGHqcACdhPstQEbs1QEc=\nR:signed_manifest.yaml\na:0:0:444\nZ:Q1vJ5cJ4lAISbBdAIqK0ZVChWXYN8=\nR:single_stage.Dockerfile\na:0:0:444\nZ:Q1YUvLx6kwR5J29MbFGmq1Dg7GBV8=\nR:test-result.json\na:0:0:444\nZ:Q12GYxKfrcpwa2llRF112s2FGApGk=\nR:test.wasm\na:0:0:444\nZ:Q1rC8f7Z8Fujijasd3VlF3cEbHpfc=\nR:test_blob_cert.pem\na:0:0:444\nZ:Q1wQ7U9GFAHJw5eTwUHDnie8xe7xk=\nR:test_blob_private_key\na:0:0:444\nZ:Q1edLcgP8SW1O8td6Tgiw8wJYcqVw=\nR:test_blob_public_key\na:0:0:444\nZ:Q1aT8O+1A9kdeDb3qZxPK1t21EbS8=\nR:unsigned_build_stage.Dockerfile\na:0:0:444\nZ:Q157JbFi2RwP4DAvE+s9npnd39Sn8=\nR:unsigned_manifest.yaml\na:0:0:444\nZ:Q1371KMp6Bf9/r8Vw9FDkUUsS6aUI=\nR:with_arg.Dockerfile\na:0:0:444\nZ:Q1OAJEgXhvC22JMTnCV2nP1/BRNNU=\nR:with_lowercase.Dockerfile\na:0:0:444\nZ:Q18FH12R44RAvbhWw2jVy2w5QVqeA=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/testdata/attestations\nM:0:0:555\nR:vuln-predicate.json\na:0:0:444\nZ:Q1bFOOJr9x7xVCm3b6VVko9Zrw5BA=\nF:root/go/pkg/mod/github.com/sigstore/cosign@v1.13.1/test/testdata/policies\nM:0:0:555\nR:cue-fails.cue\na:0:0:444\nZ:Q1UxjVZ3t+VnUejNMpbYBk5P53eLk=\nR:cue-vuln-fails.cue\na:0:0:444\nZ:Q1975DRhZDbkCiJp22y2VMZtaqPpc=\nR:cue-vuln-works.cue\na:0:0:444\nZ:Q1HW42erA99GCRq2tRMlMVX3FP5MA=\nR:cue-works.cue\na:0:0:444\nZ:Q1/fVHdmpVqVFYfSgpV+LDbg3Jp74=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1viKl4pAbr4T1Oz/VyGsZ3Dapf9k=\nR:.gitignore\na:0:0:444\nZ:Q1GJnUhUVMRU+1aBggV1aOMjItiqY=\nR:.golangci.yml\na:0:0:444\nZ:Q104+Ajsgblsv47gUclGzIfLeZJJ8=\nR:.goreleaser.yml\na:0:0:444\nZ:Q18RJj42+B8cJaF3MoGZM33oC2Whg=\nR:.ko.yaml\na:0:0:444\nZ:Q1QG6rLbPu+Twl8Y0WlUacHP8YL3U=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1NUqiMlC3lwYm1n/rDV6qucGjlgs=\nR:CODEOWNERS\na:0:0:444\nZ:Q1FlA39xnk+xYWdoH0H/9djxS0CZI=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q17nChvpiOQcj3oI1umLowIREvGq8=\nR:CONTRIBUTORS.md\na:0:0:444\nZ:Q1aIR9TQ5DGimLZfph3bc2DqRjN+M=\nR:COPYRIGHT.txt\na:0:0:444\nZ:Q1Wj0qPdDj/zQIPdRtEstNjVec/CQ=\nR:DEPRECATIONS.md\na:0:0:444\nZ:Q1WiIGV8nrP9WZ/1Yk/QbkVWUUt/4=\nR:Dockerfile\na:0:0:444\nZ:Q1F8o04Cf2nO412fspV7sppbIgC8Y=\nR:FEATURES.md\na:0:0:444\nZ:Q11p8upAjy6zZjbn/+erO+PgtsseI=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:MAINTAINERS.md\na:0:0:444\nZ:Q1znnRub5QAggd0PEfjvrWb/lOLT0=\nR:Makefile\na:0:0:444\nZ:Q14uwMNn556R8EQWj0naA5ItCHcDw=\nR:Makefile.swagger\na:0:0:444\nZ:Q1NxZ+Ig/2PYp/yCjJ4Ua/hQc9N/k=\nR:OWNERS.md\na:0:0:444\nZ:Q15DdQ3Ye+EuaCe6qlxsYldVotBNs=\nR:README.md\na:0:0:444\nZ:Q1wg/t2oYvQ64KNAZobQvxJY0hl5E=\nR:docker-compose.debug.yml\na:0:0:444\nZ:Q1Roa/a+6WBLLET3tTB6Qgbk8t+QA=\nR:docker-compose.yml\na:0:0:444\nZ:Q1CSdkPbGk8lUxM1mvHCSLja1qk80=\nR:go.mod\na:0:0:444\nZ:Q1k9OnVsJSfrtPZWhFU5kO1kCo4jo=\nR:go.sum\na:0:0:444\nZ:Q1VKw8HHv8hhqXweY7Xz9VhHwoXZA=\nR:openapi.yaml\na:0:0:444\nZ:Q1J0oLW/OVUZ2lBFdupMyfF8AF9sQ=\nR:rekor-server.yaml\na:0:0:444\nZ:Q1+Dm0JDLj2V86B1yFukJ0pV9qvtQ=\nR:types.md\na:0:0:444\nZ:Q1kjUpO2pSAXd9oe9/tluNxFqLSH4=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q1Xu72ImoWuedRhhKryrt/JnRiFyM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/.github/workflows\nM:0:0:555\nR:build.yml\na:0:0:444\nZ:Q1f8MGYyz+tEFh95nHoT5SLKTCdb4=\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1lyjr5bTu/qF6DJ6wE/N4N7RB/3k=\nR:cosign.key\na:0:0:444\nZ:Q1xzNiMDjEqc/tdNflA+vvcFJsuQM=\nR:cosign.pub\na:0:0:444\nZ:Q1PGGQMzX5fpPyA+l9rvOE3D/EdMI=\nR:cut-release.yml\na:0:0:444\nZ:Q1o7KjMOer1QDsojDgGWmJISf6k48=\nR:depsreview.yml\na:0:0:444\nZ:Q1hAvHN6EHY4aQIVRGfGyyxhzwcZM=\nR:main.yml\na:0:0:444\nZ:Q1nCKlmqxN3GW9BoV6IBjcHwL7wWY=\nR:milestone.yml\na:0:0:444\nZ:Q1gtVqMYYoozrZtGTpfAzDr9nsJeY=\nR:scorecard_action.yml\na:0:0:444\nZ:Q1Bxinbtx79bgGcC4xrsvuLja+d18=\nR:validate-release.yml\na:0:0:444\nZ:Q1aZo/NPCjwabUA1aQnazR+PXApO0=\nR:verify.yml\na:0:0:444\nZ:Q1Rxt6clF+DP1XaU8M4R8v/bju9cI=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-cli\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1892mL2+LSS2DhCG5arR0bxsQbhM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-cli/app\nM:0:0:555\nR:get.go\na:0:0:444\nZ:Q1vhyChjS6cLxSQjM/g++xVwk4c4k=\nR:log_info.go\na:0:0:444\nZ:Q1aIeJuKA4r8UrEebCaTkzvoRUWnU=\nR:log_proof.go\na:0:0:444\nZ:Q1akx8TEOfUMUgAtuQVEUU0bEadgs=\nR:pflag_groups.go\na:0:0:444\nZ:Q1eliy6sL/LLquYcCRp64Va/ULLL8=\nR:pflags.go\na:0:0:444\nZ:Q1f8dKwNIvFyg+g0NMKW0wDWjxoUY=\nR:pflags_test.go\na:0:0:444\nZ:Q1vr+ZD/pC4oRVLZoAdf/qt2IX86U=\nR:root.go\na:0:0:444\nZ:Q189ZX5TYBlEynFulnee+d3Frs09I=\nR:search.go\na:0:0:444\nZ:Q1lufnHF6YgVrG3EdGPUhzhBGwoho=\nR:upload.go\na:0:0:444\nZ:Q12nINSzIw7NdvX+R1rUifVeCktKY=\nR:useragent.go\na:0:0:444\nZ:Q1FsOmVb3G8p/FoCm9Rf/Y4bYGGzc=\nR:verify.go\na:0:0:444\nZ:Q1Q+AEg0R5q0/RFLYNjxh7CGphRio=\nR:version.go\na:0:0:444\nZ:Q1tJ8azeQgqp62izRACVTfNUYAaF8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-cli/app/format\nM:0:0:555\nR:wrap.go\na:0:0:444\nZ:Q1SkpdYmiL/SPc3bW5HcE13DCMbHw=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-cli/app/state\nM:0:0:555\nR:state.go\na:0:0:444\nZ:Q1vYXRl+JdG16flapbWNuudtfRvI4=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-server\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1QtPFvJhLAM8CMPycMObNaHjGCF0=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/cmd/rekor-server/app\nM:0:0:555\nR:root.go\na:0:0:444\nZ:Q1lUQnytglYuOddDYezxdYKkSi+pM=\nR:serve.go\na:0:0:444\nZ:Q1+kPb+XGZHCX+EQkqX5xGCx7U4Vo=\nR:version.go\na:0:0:444\nZ:Q1tJ8azeQgqp62izRACVTfNUYAaF8=\nR:watch.go\na:0:0:444\nZ:Q1Ei11h5vbd1ej7IK9Oy/L8CPX9P0=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/config\nM:0:0:555\nR:rekor.yaml\na:0:0:444\nZ:Q1235bcT/l5VWkE0vAMYBF7g58K8U=\nR:watcher.yaml\na:0:0:444\nZ:Q1zqYTzYatuKr4tqcipvsXL8wQBSs=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/hack\nM:0:0:555\nR:github-oidc-setup.sh\na:0:0:444\nZ:Q1psbQjx7dTGYiSSzYWiEGQVunsL8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/images\nM:0:0:555\nR:logo.svg\na:0:0:444\nZ:Q1jmhjNFk2qs/V/EjOU72SakJ1B/k=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/api\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1YstO+URUas7Rvh3K/mrSe9n/i+g=\nR:entries.go\na:0:0:444\nZ:Q1tqS4rbJVaQH1GRlkFpRgoUZ17i4=\nR:error.go\na:0:0:444\nZ:Q1Ltdxddv9KhT/9nGVT4aAZ/U+lTY=\nR:index.go\na:0:0:444\nZ:Q1dYKEY8jFEXGYAMqTKtMu9RMXx1U=\nR:index_test.go\na:0:0:444\nZ:Q1WxCfgt4ro059EB01I9O77L7QrZc=\nR:metrics.go\na:0:0:444\nZ:Q1vEVMwYz6MPhhO2tsB7ypDShFwh4=\nR:public_key.go\na:0:0:444\nZ:Q10tiAu4CorD3n0OXxBHyIyaqRPpc=\nR:tlog.go\na:0:0:444\nZ:Q1RM2phjUZQKnHV9SHQ81C7DEJMCo=\nR:trillian_client.go\na:0:0:444\nZ:Q1RATP9J03GVJ6PB1zg2Wj8MVLbSg=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/client\nM:0:0:555\nR:options.go\na:0:0:444\nZ:Q11T9VC/vkBVKlLkEWbeHGQisXAMg=\nR:options_test.go\na:0:0:444\nZ:Q1s7N/eoQhmQqJRNnceyOZrx8OnQM=\nR:rekor_client.go\na:0:0:444\nZ:Q1YwEBSE/JNdAPE9hM1mv+5CjZI5k=\nR:rekor_client_test.go\na:0:0:444\nZ:Q1DdQmMuVkKavPHdonJ5vDw6SVwEI=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/client\nM:0:0:555\nR:rekor_client.go\na:0:0:444\nZ:Q1ciW1922jJPS/Mj6aE3OWJGbyz3g=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/client/entries\nM:0:0:555\nR:create_log_entry_parameters.go\na:0:0:444\nZ:Q1XUx/qeJKnO1Xw2Y6kLatv/Z9L6Q=\nR:create_log_entry_responses.go\na:0:0:444\nZ:Q1IdbbsXmQVxpQsGQuKDE38SU5M98=\nR:entries_client.go\na:0:0:444\nZ:Q1iYcKBPJ6npR+i5DKROf1KN3mUco=\nR:get_log_entry_by_index_parameters.go\na:0:0:444\nZ:Q1j9T+cb+G0C6qwVT3IjweSr7sLEM=\nR:get_log_entry_by_index_responses.go\na:0:0:444\nZ:Q1Kbz+uuICfAnzPG2VUn6oYqRsEQM=\nR:get_log_entry_by_uuid_parameters.go\na:0:0:444\nZ:Q192tWPGJvIf40RAa20o/FTnoEJ1E=\nR:get_log_entry_by_uuid_responses.go\na:0:0:444\nZ:Q1E2dVcoK0IjPqfQowvFRJMGRN+Do=\nR:search_log_query_parameters.go\na:0:0:444\nZ:Q1tPTXLPAx78Pxyu5yQkvVOSRWjDc=\nR:search_log_query_responses.go\na:0:0:444\nZ:Q1L7hmefEPIqQy/BV7HArmq418Df8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/client/index\nM:0:0:555\nR:index_client.go\na:0:0:444\nZ:Q16tGRU8X7GsCcNk+CP57mx2uBEw8=\nR:search_index_parameters.go\na:0:0:444\nZ:Q1UqX7GVNJo/lxs/KjklY+4jC1g6E=\nR:search_index_responses.go\na:0:0:444\nZ:Q1ek1geEAsSKtaffGhRZ/j4bF67Ns=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/client/pubkey\nM:0:0:555\nR:get_public_key_parameters.go\na:0:0:444\nZ:Q1GnqU9h159QCPMtsVdXdL5+mRab0=\nR:get_public_key_responses.go\na:0:0:444\nZ:Q1Ls8AdiE2zxn8ZE0Jg373cbm3e7k=\nR:pubkey_client.go\na:0:0:444\nZ:Q1rKRy913YjzMuXYx2VWpt40G1Qu4=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/client/tlog\nM:0:0:555\nR:get_log_info_parameters.go\na:0:0:444\nZ:Q1LZV1W1N2n1nbY0V6HiXOp6EvC5U=\nR:get_log_info_responses.go\na:0:0:444\nZ:Q13SlSr/xeH056ENFr4V7TO9/5VN4=\nR:get_log_proof_parameters.go\na:0:0:444\nZ:Q1yRjXwTDPqoMuMzBbqyo8TSfEHnc=\nR:get_log_proof_responses.go\na:0:0:444\nZ:Q1BY1lgTYVjZt9e7lRKvg0S578VP0=\nR:tlog_client.go\na:0:0:444\nZ:Q1gLTSEveYsyseiPZ51c2tmw28ngE=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/models\nM:0:0:555\nR:alpine.go\na:0:0:444\nZ:Q1N70aOtsYFgzMmJb6FAN9L4VHKpo=\nR:alpine_schema.go\na:0:0:444\nZ:Q1j3ijPCB+bbYnu5VkKUt0tEj3THo=\nR:alpine_v001_schema.go\na:0:0:444\nZ:Q11ka9gZr/hGgWwBRKT45kChVUFDo=\nR:consistency_proof.go\na:0:0:444\nZ:Q1zxZD1vtrbhOqpThqevmNzhm8eLs=\nR:cose.go\na:0:0:444\nZ:Q1q2Bj5lLT9eoLdtvWismNDFxvHk4=\nR:cose_schema.go\na:0:0:444\nZ:Q12pWyw7f2cPu1T6iG9c9QFrV0xts=\nR:cose_v001_schema.go\na:0:0:444\nZ:Q1iSpvWr/Z6FFKSWM/3uPs6Ed2j1Y=\nR:error.go\na:0:0:444\nZ:Q19SiWldjkpkSl0f0l3aDnpVPvUTs=\nR:hashedrekord.go\na:0:0:444\nZ:Q1UxG+yKyMtGKc6Fuq3RCfELCpBPw=\nR:hashedrekord_schema.go\na:0:0:444\nZ:Q1VseDgayojpTQfdP6xH1NmR5Wa1s=\nR:hashedrekord_v001_schema.go\na:0:0:444\nZ:Q1F47sL1etYDN2FwelyViX61pRgeA=\nR:helm.go\na:0:0:444\nZ:Q1VWoVqoZR+nwBvv/DcvYMzgrdPOE=\nR:helm_schema.go\na:0:0:444\nZ:Q1pxG0rIIEyeyBIUdqLZ4Hl5pu9nA=\nR:helm_v001_schema.go\na:0:0:444\nZ:Q1jDuU7mpCxYIp62lWhKXTn3o3VJE=\nR:inactive_shard_log_info.go\na:0:0:444\nZ:Q11OpCFS6Oje9WY0WM7qFXk8eWPP4=\nR:inclusion_proof.go\na:0:0:444\nZ:Q1xr2MMUG5oqGdSH/kxu9yW6Pp+VE=\nR:intoto.go\na:0:0:444\nZ:Q1YQMJ75/7GQu+KDO8pmPohVEJJM4=\nR:intoto_schema.go\na:0:0:444\nZ:Q17UTuyIwFQ4X5VZPFIh8KtdiP+r0=\nR:intoto_v001_schema.go\na:0:0:444\nZ:Q1n5+NCV3BW4NawYwfFqSlT9aWfm0=\nR:intoto_v002_schema.go\na:0:0:444\nZ:Q1/PB/wmAkug0Ia0mPqm5P7G90sNo=\nR:jar.go\na:0:0:444\nZ:Q1drXhvavkScSIsyNhpzDDUvCq96c=\nR:jar_schema.go\na:0:0:444\nZ:Q1zji8dGwbhofeCLDq98tQEWC0fQU=\nR:jar_v001_schema.go\na:0:0:444\nZ:Q1OxSdc2XQbqXx4sEb+q/gkaWpSM4=\nR:log_entry.go\na:0:0:444\nZ:Q1MWJaaeQw/1ZDHUxdEws8oaM8OoQ=\nR:log_info.go\na:0:0:444\nZ:Q1s5ELEG+2xIfCZGCzyriEICpupBw=\nR:proposed_entry.go\na:0:0:444\nZ:Q1TM1fR0g3A1edkm7RCw3MfE7hn/g=\nR:rekor_version.go\na:0:0:444\nZ:Q1A/lYnA0LZTEFW7T05+ZbHcd/31w=\nR:rekord.go\na:0:0:444\nZ:Q10NhUknZhG6Z1lyv86MjSjDk3Wx8=\nR:rekord_schema.go\na:0:0:444\nZ:Q1XKXPac+HrCF/V7eNU6cCzlumgbY=\nR:rekord_v001_schema.go\na:0:0:444\nZ:Q1WYSEb1cw7uwEW1ZLDnJIGnsJVew=\nR:rfc3161.go\na:0:0:444\nZ:Q1iMGq31mz40V+UrPZux1CvyqIQOY=\nR:rfc3161_schema.go\na:0:0:444\nZ:Q1zHVLDBl46o7+LjmQ/jOlX9C5wig=\nR:rfc3161_v001_schema.go\na:0:0:444\nZ:Q1+gCRMkZ5IsaDlXxc2jaio4/5tdk=\nR:rpm.go\na:0:0:444\nZ:Q1EuNZdSQHXcLMrYWjBifVe+NP25U=\nR:rpm_schema.go\na:0:0:444\nZ:Q1+14noJH8SxBQC/6xfCD4Q4ddz10=\nR:rpm_v001_schema.go\na:0:0:444\nZ:Q1Cj19pk1gmlzEL4HvKx32S7DdRfg=\nR:search_index.go\na:0:0:444\nZ:Q1r7TyhspaZ9IA1tkTZCgjAXzUb5I=\nR:search_log_query.go\na:0:0:444\nZ:Q1x+Ga+s3cdO0aacjZT3uYEOsfimw=\nR:tuf.go\na:0:0:444\nZ:Q1bz2fAPx5Ran+9j7TEjzfAcOg6F0=\nR:tuf_schema.go\na:0:0:444\nZ:Q122inTTUOLPs6PiXlYibjphmQTuk=\nR:tuf_v001_schema.go\na:0:0:444\nZ:Q1qDhRSMTSssf3iwvDdEtc+YXSUww=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi\nM:0:0:555\nR:configure_rekor_server.go\na:0:0:444\nZ:Q1k5BrNWjN2RQNmodXAnoL6ctWE5k=\nR:doc.go\na:0:0:444\nZ:Q1JqieM+twud5fP1zAh/nQiJHDJyY=\nR:embedded_spec.go\na:0:0:444\nZ:Q1KrTB/yG24CpFknFm5vmZrf/lgiI=\nR:rekorHomePage.html\na:0:0:444\nZ:Q1s52P+iEkV4dF1ywp/VqzeqIUjqc=\nR:server.go\na:0:0:444\nZ:Q1FfA2H6rLjRFju0ZzM8O1GkOH/fo=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi/operations\nM:0:0:555\nR:rekor_server_api.go\na:0:0:444\nZ:Q1SEjlOaQ1JnLSaW94/6VJk+/LTeA=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi/operations/entries\nM:0:0:555\nR:create_log_entry.go\na:0:0:444\nZ:Q1dJkdxmT+icTVNTCtZL/PN1DYzzU=\nR:create_log_entry_parameters.go\na:0:0:444\nZ:Q1f4bUtZP1+opzu8shJV6v2Hwcgf4=\nR:create_log_entry_responses.go\na:0:0:444\nZ:Q1M3iraSxguPY2i73NyN+QxIpjO7w=\nR:create_log_entry_urlbuilder.go\na:0:0:444\nZ:Q1xcmT/KIRbOlRkNe7vRz0bqjwb9Y=\nR:get_log_entry_by_index.go\na:0:0:444\nZ:Q1uTD7yg6pL7Dh+QAiHFOPm0lVoro=\nR:get_log_entry_by_index_parameters.go\na:0:0:444\nZ:Q1XomJackDZNirXXJVlGsECwT+qAE=\nR:get_log_entry_by_index_responses.go\na:0:0:444\nZ:Q1qycdIw52nYrvYOH9Ge2zzcBemNs=\nR:get_log_entry_by_index_urlbuilder.go\na:0:0:444\nZ:Q1S0hGMxQywpSd/wM27wdsvWyQn2k=\nR:get_log_entry_by_uuid.go\na:0:0:444\nZ:Q1nP7T139Omz/6W1AjCflSzMVQyxc=\nR:get_log_entry_by_uuid_parameters.go\na:0:0:444\nZ:Q1Bx0fIZQdDKgMSzTDeoz9euhGBNU=\nR:get_log_entry_by_uuid_responses.go\na:0:0:444\nZ:Q1WRzQcHpE694/HOp7Y90v72VzJX0=\nR:get_log_entry_by_uuid_urlbuilder.go\na:0:0:444\nZ:Q1GLGLrhFayjdFzw5k6mLq7ZOYz3g=\nR:search_log_query.go\na:0:0:444\nZ:Q1EH+XU5vEknBaBk9WGe/tR9MHIdk=\nR:search_log_query_parameters.go\na:0:0:444\nZ:Q1tLVteCz86kBwRXcdrOpoHSzW2uk=\nR:search_log_query_responses.go\na:0:0:444\nZ:Q1J+SjlHxxzz3n2bYK+SIdn1e+3B8=\nR:search_log_query_urlbuilder.go\na:0:0:444\nZ:Q1GXbChylIJMiwHuhOt3XgwtbFLrA=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi/operations/index\nM:0:0:555\nR:search_index.go\na:0:0:444\nZ:Q1RV+3r15TQpTPTPGu6ARGJz53Vh4=\nR:search_index_parameters.go\na:0:0:444\nZ:Q1T26G5UVZxRbMwVov/vg4yUdQ2Rk=\nR:search_index_responses.go\na:0:0:444\nZ:Q1LkKGpuFPZ7d2h6DycBuDd4AEKq4=\nR:search_index_urlbuilder.go\na:0:0:444\nZ:Q15ANmZrMyXtGO/8UpCoIwsLPBV1Y=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi/operations/pubkey\nM:0:0:555\nR:get_public_key.go\na:0:0:444\nZ:Q1oJmGDCKy6GxjTMK0DlVnX2feNhU=\nR:get_public_key_parameters.go\na:0:0:444\nZ:Q1gAMjXaMw42+oJH+35bdgjcTbV/0=\nR:get_public_key_responses.go\na:0:0:444\nZ:Q1jqFUlTUDqqu3qKgJdBMIuyE9kDs=\nR:get_public_key_urlbuilder.go\na:0:0:444\nZ:Q1vjcNWD7w6YCV5Q6/2ljR5OJbHeU=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/generated/restapi/operations/tlog\nM:0:0:555\nR:get_log_info.go\na:0:0:444\nZ:Q1aW8/S9/kYzKggyosrLNa4na2abY=\nR:get_log_info_parameters.go\na:0:0:444\nZ:Q1f+a34YDvlDx6vlEnuGRDg7O1lvk=\nR:get_log_info_responses.go\na:0:0:444\nZ:Q1iCSOW1eExhMUHHMzM9gZiSainBA=\nR:get_log_info_urlbuilder.go\na:0:0:444\nZ:Q1qdjhMiDxc+KGkSBuev5b3B5COzo=\nR:get_log_proof.go\na:0:0:444\nZ:Q1C/FT8+rCWq8uNyuMa8D9ldygix4=\nR:get_log_proof_parameters.go\na:0:0:444\nZ:Q17qodT2/UWKOdmDVbCwxOtiEk2uQ=\nR:get_log_proof_responses.go\na:0:0:444\nZ:Q1KPCMqKcOya2Q0fdnz/Wfy6n5saU=\nR:get_log_proof_urlbuilder.go\na:0:0:444\nZ:Q1/ERBSyYGIpxLuKySLxe1hS/uKtQ=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/log\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1tqxycUDNnAUJRl81j2KT5pVkYDo=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki\nM:0:0:555\nR:factory.go\na:0:0:444\nZ:Q1Es2cP7As0/41DvOtc2lN43eiEwU=\nR:factory_test.go\na:0:0:444\nZ:Q16dfZJlX+jwRXzS/sKmHflyDrxvY=\nR:pki.go\na:0:0:444\nZ:Q1u2mY0Zorpre4CvrmK+gDF7nxwq8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/minisign\nM:0:0:555\nR:minisign.go\na:0:0:444\nZ:Q1+Q1+IAa6yeNlbw4QK1I3inNvVuU=\nR:minisign_test.go\na:0:0:444\nZ:Q17+pQVzeNVFBGF7UqyKUDdhMXO/k=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/minisign/testdata\nM:0:0:555\nR:hello_world.txt\na:0:0:444\nZ:Q1YP3pwjELDUytTauNEmsEOH77ook=\nR:hello_world.txt.minisig\na:0:0:444\nZ:Q1vD/g/h8aYsP9fkiKlG/RfiYMBkA=\nR:hello_world.txt.signify\na:0:0:444\nZ:Q1F90wvXMidUGq2SNyKj2OjacEJEQ=\nR:hello_world_hashed.txt.minisig\na:0:0:444\nZ:Q1WXoU78YY4rmBp94BHiKB3MBgmTY=\nR:minisign.pub\na:0:0:444\nZ:Q1NA/AgxnJQOYaLfjFrvNalnvRD0o=\nR:minisign_hashed.pub\na:0:0:444\nZ:Q1LuYO5SkxZy89f36l7v5MeYV5szA=\nR:minisign_key_only.pub\na:0:0:444\nZ:Q1eLz2WgawYqb6q+eFM+PSuFbOjfY=\nR:signify.pub\na:0:0:444\nZ:Q1cOPmDbZu+PcR8MCT+rTMpvA/rMs=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/pgp\nM:0:0:555\nR:pgp.go\na:0:0:444\nZ:Q1q4XqqzrQ6re0ocSiIegHMrSshq4=\nR:pgp_test.go\na:0:0:444\nZ:Q1SoQnXB12N0dRnRhSMvuwK99pAS0=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/pgp/testdata\nM:0:0:555\nR:armored_private.pgp\na:0:0:444\nZ:Q1tMeVvyAtH7kfjg7OiGco/eu9fhw=\nR:binary_private.pgp\na:0:0:444\nZ:Q1MgvlZ9/Gup3ZCBV8hIf7exaQeSU=\nR:bogus_armored.pgp\na:0:0:444\nZ:Q10VyB2zj+kkIyeZKBVDKzCJLXnbs=\nR:bogus_binary.pgp\na:0:0:444\nZ:Q1X/CP0tKk7ez9AAJZb50LZziQDyg=\nR:hello_world.txt\na:0:0:444\nZ:Q1YP3pwjELDUytTauNEmsEOH77ook=\nR:hello_world.txt.asc.sig\na:0:0:444\nZ:Q16/3Qsru1WJdf0HM1DIzs3yNvE5o=\nR:hello_world.txt.asc.v3.sig\na:0:0:444\nZ:Q1mlD5cITfNf9Pdt6soWEvJv6FZO8=\nR:hello_world.txt.sig\na:0:0:444\nZ:Q1trOd9nvOawWZ5ag+zxH2hBWRxHA=\nR:hello_world.txt.v3.sig\na:0:0:444\nZ:Q1+Q7cQ6EuWEIvpwsOJkNj8eKW4HY=\nR:valid_armored_complex_public.pgp\na:0:0:444\nZ:Q1ppLxtnHXe9CnwsBWuajJ+O0b9Jw=\nR:valid_armored_public.pgp\na:0:0:444\nZ:Q1ukxxeFL6gCYa+Vp0IzAlVroTOCE=\nR:valid_binary_complex_public.pgp\na:0:0:444\nZ:Q1VJMRTE3P0pM+cKcpYzOx/3J6808=\nR:valid_binary_public.pgp\na:0:0:444\nZ:Q1mpfeQfkJWkXj5Ttypbt5EoJT+PM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/pkcs7\nM:0:0:555\nR:pkcs7.go\na:0:0:444\nZ:Q1t5FfygVFp1wnaSTmdjnIV/uvNno=\nR:pkcs7_test.go\na:0:0:444\nZ:Q15DiyE7e1q/rRlYveCwTE2ihn8ak=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/ssh\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1AV9G+IdzM3em/HAiA6sfqiVJ5a0=\nR:encode.go\na:0:0:444\nZ:Q15+t9USvAH+sYoh3j4Qvsvm1tpX0=\nR:sign.go\na:0:0:444\nZ:Q1HzQv7eDmdpLATbLgeFGZ64ovRKg=\nR:sign_test.go\na:0:0:444\nZ:Q1iU6RpUGiI8KjdmPDnpvhSBKzKNw=\nR:ssh.go\na:0:0:444\nZ:Q1wT0YqQn6YnQC1v4SXMe4By4+V/A=\nR:verify.go\na:0:0:444\nZ:Q1GPpY9ZcWsoXt9+YMhruYI91xkvg=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/ssh/testdata\nM:0:0:555\nR:hello_world.txt\na:0:0:444\nZ:Q1pCczCFUbB0Fyw5hcmb/I1po/Tk8=\nR:hello_world.txt.sig\na:0:0:444\nZ:Q1iXmJxc+7iua6AJTzTEyqlkDzBsY=\nR:id_rsa\na:0:0:444\nZ:Q1OT+JAxL3oxC8hiySdS7llzS6vtA=\nR:id_rsa.pub\na:0:0:444\nZ:Q1sHVBJHXQ4DpGcjiUxFGCFw/ZcVw=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/tuf\nM:0:0:555\nR:tuf.go\na:0:0:444\nZ:Q1l67MrjeeYWcOhieOsMwF8JhSbAY=\nR:tuf_test.go\na:0:0:444\nZ:Q1/nZUQkMmTxRV/BlTBHGvuhjRBsg=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/tuf/testdata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yOy4gzTSWF6HgE/iXFycc/5b1fQ=\nR:bogus.json\na:0:0:444\nZ:Q1CQ00+mKouGUqCFmWGZenwHHKkKY=\nR:other_root.json\na:0:0:444\nZ:Q1UcS/ewTolQWSEob/fQUgxRZw6GY=\nR:reformat.1.root.json\na:0:0:444\nZ:Q1uXCzU9xIiVyUBWGZIiRqF4ZZgdM=\nR:timestamp.json\na:0:0:444\nZ:Q1X/elsXhyV97JWwgmhhOS/euMrxc=\nR:unsigned_root.json\na:0:0:444\nZ:Q11Rc3Am1afL7oUm//IX6Laa7bs90=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/x509\nM:0:0:555\nR:x509.go\na:0:0:444\nZ:Q1qH/SA8ImcivAI1iPVxujq0q2ynI=\nR:x509_test.go\na:0:0:444\nZ:Q1drTcrOkZCybIMSbpUVIfPYwFNvc=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/x509/testdata\nM:0:0:555\nR:ec.pub\na:0:0:444\nZ:Q1se9kV2q1Wa8BZkR6bxLgcKcYA7s=\nR:hello_world.txt\na:0:0:444\nZ:Q1YP3pwjELDUytTauNEmsEOH77ook=\nR:hello_world.txt.sig\na:0:0:444\nZ:Q1pmobMofd6Mh3goqoKugs99M5b1g=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/pki/x509/testutils\nM:0:0:555\nR:cert_test_utils.go\na:0:0:444\nZ:Q1UZ/rUuC6Oce6ddqch1fGfflguC0=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/sharding\nM:0:0:555\nR:log_index.go\na:0:0:444\nZ:Q1gNo6QEUo4YvLLZsbT5+k6M6khyg=\nR:log_index_test.go\na:0:0:444\nZ:Q1GoLYfxIerEUKPsdah4J9VFCSEOA=\nR:ranges.go\na:0:0:444\nZ:Q1dDTtUFfT7Bp+hEgkNjkW7E7iG7w=\nR:ranges_test.go\na:0:0:444\nZ:Q1jIOMZ1FaOEQI2V6BqIm/jt8y+9A=\nR:sharding.go\na:0:0:444\nZ:Q1mMVv2N7ktJfk/+k1KMeIcnMchPg=\nR:sharding_test.go\na:0:0:444\nZ:Q1CgExf2VGk1slDTjEPoTE90yfXpg=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/signer\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1lSQDiCNBsTWJr40cE9wmXeOVDGs=\nR:file_test.go\na:0:0:444\nZ:Q1AXudm3uTtTWQhbXL+Y1ArKZRwgc=\nR:memory.go\na:0:0:444\nZ:Q1T7ZeluI7EKOLwO4JaLFkFb60oXM=\nR:memory_test.go\na:0:0:444\nZ:Q1uGhw0s9h6ZOP3LnTYh8LNdnj12o=\nR:signer.go\na:0:0:444\nZ:Q1Rl2YQnajJ6iAJRQQoZ+56j80yqI=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/storage\nM:0:0:555\nR:storage.go\na:0:0:444\nZ:Q17wycnAAp9UkuJLqMo8q9AUApOGE=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q11zliAGDNv1tqjUxbFgOVEielvd8=\nR:entries.go\na:0:0:444\nZ:Q1lkwFzWPybVruA9lM7x7vZuiC2E4=\nR:error.go\na:0:0:444\nZ:Q1jtQlWF4rtuxfMxb0+K5akL+0xxY=\nR:test_util.go\na:0:0:444\nZ:Q1Bk+qksQpS4q7TBxEOwenHpHjpBw=\nR:types.go\na:0:0:444\nZ:Q1oPHtkQrvOBa5H3yBn2aF+KMLDmY=\nR:types_test.go\na:0:0:444\nZ:Q15WW40eIgYSkB7Xly7bDQzQ9qib8=\nR:versionmap.go\na:0:0:444\nZ:Q10pS/Kug3kOLc0F9oORKbWIsF3+8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/alpine\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1kPMUaaP+Wz4EDbi1jgeehDxbzek=\nR:alpine.go\na:0:0:444\nZ:Q132yLDpnyLixWkRkkRtP2mX7V10k=\nR:alpine_schema.json\na:0:0:444\nZ:Q1wcYOuafcBo6DDKAyooEbOCslgKs=\nR:alpine_test.go\na:0:0:444\nZ:Q1DQeixb9zigFFZvDYGw94+RpLR2s=\nR:apk.go\na:0:0:444\nZ:Q1vUMqlueKRqCCcb2ja6bbYrmVN2M=\nR:apk_test.go\na:0:0:444\nZ:Q1C9tekuv9stLSD9VaSoFqp5jVbKA=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/alpine/v0.0.1\nM:0:0:555\nR:alpine_v0_0_1_schema.json\na:0:0:444\nZ:Q1upgowGjIgVErV/QX7xPJoDlzTvo=\nR:entry.go\na:0:0:444\nZ:Q1aPQKHkYJRc7HDfAwUM9Z3gMObxc=\nR:entry_test.go\na:0:0:444\nZ:Q1Cp0Qxy9y+KfMjdAfiFZ6RNse1cE=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/cose\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Rf3/IaG1YdigM7MletQZYHkUyk4=\nR:cose.go\na:0:0:444\nZ:Q1/v0DvyttkOlvoPylEZHaUxmHpmc=\nR:cose_schema.json\na:0:0:444\nZ:Q1GnOyJXympPuDXtpPtL6i6eyT7wM=\nR:cose_test.go\na:0:0:444\nZ:Q1hUifuQ+Eh03nHGV0S5zuymbQQlY=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/cose/v0.0.1\nM:0:0:555\nR:cose_v0_0_1_schema.json\na:0:0:444\nZ:Q1UnNK0hVqUp6kNg1dLuQ00unwrAs=\nR:entry.go\na:0:0:444\nZ:Q1fvQtgmlRFZyx7kllfqlkEcSq/vc=\nR:entry_test.go\na:0:0:444\nZ:Q1moym1SGGNC3iEIghhBQf+GKZqyM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/hashedrekord\nM:0:0:555\nR:hashedrekord.go\na:0:0:444\nZ:Q1evh0Kao9dsAjXpTSPNb4yrKUngw=\nR:hashedrekord_schema.json\na:0:0:444\nZ:Q1xI8qvQbnV7apHhmsDQ1pLNWbGBU=\nR:hashedrekord_test.go\na:0:0:444\nZ:Q184TUhr4oyoQ5NxC2AD8TbwhM0mY=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/hashedrekord/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1ivySIVqVoTAXSjeh4dyYITyktHI=\nR:entry_test.go\na:0:0:444\nZ:Q15PtDGwQD21hGlf30ahFv8fVp3EQ=\nR:hashedrekord_v0_0_1_schema.json\na:0:0:444\nZ:Q1MTJSjxn1a3cvvDQenGathHu6VCA=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/helm\nM:0:0:555\nR:helm.go\na:0:0:444\nZ:Q1YP6NPM4Bt/c3Z5tYSNT/TIiyMrQ=\nR:helm_schema.json\na:0:0:444\nZ:Q1vEMgQDAkgi/CXnhv+ooS56FaAfo=\nR:helm_test.go\na:0:0:444\nZ:Q1SAg61BcFv7B5q49A86VjMCXg2jc=\nR:provenance.go\na:0:0:444\nZ:Q1mAlg1WKyuKSrHHf1LJoAMjeUs7c=\nR:provenance_test.go\na:0:0:444\nZ:Q1UGrRIsBdBeKoOcx4L1a4DmKEiYk=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/helm/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1mc/oO5fVYNXkhFSzzhFeJgHVuKs=\nR:entry_test.go\na:0:0:444\nZ:Q1vOdFQQ/u+Ho1fAK/4hLTYJccaA0=\nR:helm_v0_0_1_schema.json\na:0:0:444\nZ:Q1t+N5zuIjdW9STDkJqO3AMGDaHK8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/intoto\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1d5fxM0hp4NCzgv4np0iI/M00xbE=\nR:intoto.go\na:0:0:444\nZ:Q11zveW78m60bGRhK9mISLI0DDVXA=\nR:intoto_schema.json\na:0:0:444\nZ:Q1ieMcAIEcHOweoMTVaRjoMkJNVNU=\nR:intoto_test.go\na:0:0:444\nZ:Q1Sc/RB4/bijZ5VmKJHeAWrDZ4p+8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/intoto/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1v2JHasEPIWiKTx31omdO3CjqgAM=\nR:entry_test.go\na:0:0:444\nZ:Q1Tks+jhpWZ/xUP9TEc4UET2vUvqw=\nR:intoto_v0_0_1_schema.json\na:0:0:444\nZ:Q1U0G5XEgVyWGz5s11hg8/HrYbcAw=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/intoto/v0.0.2\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1nJSmqJG6BZfvVeR8HpC39UgLMKU=\nR:entry_test.go\na:0:0:444\nZ:Q11y1M+HNn4fmXqDPUrd7CIAS3VWU=\nR:intoto_v0_0_2_schema.json\na:0:0:444\nZ:Q1+x2xfhoLlx903AP5yCbAPZDVCcI=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/jar\nM:0:0:555\nR:jar.go\na:0:0:444\nZ:Q18FVu6KvjpzDypO+3gklByKAEnTM=\nR:jar_schema.json\na:0:0:444\nZ:Q1sEPZkJP14KS+LU/NVSgUdji3QcM=\nR:jar_test.go\na:0:0:444\nZ:Q1HWzSpJlw1TZglaKBULeq1QST0JA=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/jar/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q19pXiDkscBolbs+Ap3/DB6i14bf4=\nR:entry_test.go\na:0:0:444\nZ:Q10sZkBVqa5zrubqUTHucU4WKmniE=\nR:jar_v0_0_1_schema.json\na:0:0:444\nZ:Q1PuBSn4SLK267WaR8LfpF6ncEwfg=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rekord\nM:0:0:555\nR:rekord.go\na:0:0:444\nZ:Q1Eg5H92nU9UwywBd4hRr6xttxtlY=\nR:rekord_schema.json\na:0:0:444\nZ:Q1/Zx/SrnpX0Nfp3F2Xw4XZZd/BUg=\nR:rekord_test.go\na:0:0:444\nZ:Q1cdAwrn7ag/9O+bc1nD4AtFlrm4A=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rekord/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1vevkLrB7CjcmWxEG/3qGIMV2Xwk=\nR:entry_test.go\na:0:0:444\nZ:Q1hb0wEaKnDJ5zs3TvFIiJzQ4Xkg8=\nR:rekord_v0_0_1_schema.json\na:0:0:444\nZ:Q1ua7DnC3VyF3NNV5IpG20Ae7GH+4=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rfc3161\nM:0:0:555\nR:rfc3161.go\na:0:0:444\nZ:Q10swaWYX0VkY6MkUQpO52cuTLdJQ=\nR:rfc3161_schema.json\na:0:0:444\nZ:Q1wiB7XYkE1m4/WZicP5mFG1cZppk=\nR:rfc3161_test.go\na:0:0:444\nZ:Q15Ukq+USrj09UyEHzbO58cEsNSCw=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rfc3161/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1QHwyiuw2JeiqUTQPGpdBPH/F6u0=\nR:entry_test.go\na:0:0:444\nZ:Q10zmQH6NOZZch9UFyM3VPp9JjC5w=\nR:rfc3161_v0_0_1_schema.json\na:0:0:444\nZ:Q1O8FDl9nF7zRBkUTxcsAyuXwPaJo=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rpm\nM:0:0:555\nR:rpm.go\na:0:0:444\nZ:Q14pKLyl5T+jSrLiYGWk565NoUNMA=\nR:rpm_schema.json\na:0:0:444\nZ:Q1zzlWZcRMSsveAkvouOV3aMva5WI=\nR:rpm_test.go\na:0:0:444\nZ:Q10ueyd7LkoqFk0bkIIQi+Y+CvQVM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/rpm/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1cKGM5XWEIE7VnNuJAHvdNy0UtV0=\nR:entry_test.go\na:0:0:444\nZ:Q1x2PIPwAE/2tBXnejjuhAsxNQDcU=\nR:rpm_v0_0_1_schema.json\na:0:0:444\nZ:Q1wWuxuPp3Tx4KIrcvHHXkg3cFTqU=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/tuf\nM:0:0:555\nR:tuf.go\na:0:0:444\nZ:Q1m2fZ/0mVsapZQ1vY6U+Vz/WezNI=\nR:tuf_schema.json\na:0:0:444\nZ:Q1oUDR9qQQYn07QIw48FlxutK3hNM=\nR:tuf_test.go\na:0:0:444\nZ:Q1gpA2mHRFG03RiMrj5qsTM+RioD8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/types/tuf/v0.0.1\nM:0:0:555\nR:entry.go\na:0:0:444\nZ:Q1SRdq4/MeghZdXaUWRnHUvXfW48A=\nR:entry_test.go\na:0:0:444\nZ:Q1rZ2CblWuAJCMHMyjWWY40Su090c=\nR:tuf_v0_0_1_schema.json\na:0:0:444\nZ:Q1g+7tu3QwW/EnZLwfvTJbA9RK4p8=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/util\nM:0:0:555\nR:checkpoint.go\na:0:0:444\nZ:Q1NVng2C/+a+0ENj1mMVjJxQOW1YY=\nR:checkpoint_test.go\na:0:0:444\nZ:Q1Sso3UHJpG3ksMgixm2dqQM5MjKQ=\nR:fetch.go\na:0:0:444\nZ:Q17Bll9jjxdZXUZWp21t9uBJgb1rA=\nR:pubkey.go\na:0:0:444\nZ:Q16osS8wUyTXYYq3ExJ1VFn10n6y4=\nR:sha.go\na:0:0:444\nZ:Q1LDAYF5aEV4bjLBY9EZDR/p38YeM=\nR:signed_note.go\na:0:0:444\nZ:Q19jYUsrB7HcwvXYW4UQnsOdqWkNw=\nR:timestamp_note.go\na:0:0:444\nZ:Q1TP6C8OI0SKIKR8RKbxFmGQX5k7s=\nR:timestamp_note_test.go\na:0:0:444\nZ:Q1WWg8T1O0rCDQ0fkHMeOkMg7C5zw=\nR:validate.go\na:0:0:444\nZ:Q1btmTKnUcLEddY+JG4wM46sgVFYM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/pkg/verify\nM:0:0:555\nR:verify.go\na:0:0:444\nZ:Q1JtOY/MVTZFHmdyIV6ZENgSd8KEo=\nR:verify_test.go\na:0:0:444\nZ:Q1IXNjtb5xRJ6tbOFewrsJWD4P0gU=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/release\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q10snnOfEtFJv5Q7acCpve6NtcFbo=\nR:cloudbuild.yaml\na:0:0:444\nZ:Q1ipPQDVWqPVE9+xUyYWQDUtJ09ik=\nR:ko-sign-release-images.sh\na:0:0:444\nZ:Q1myAPL1MtWEEgIeRnLqJe0IEX2DY=\nR:release-cosign.pub\na:0:0:444\nZ:Q1yTGB1Kw9EOOjSkTaLGquZ9JFQMM=\nR:release.mk\na:0:0:444\nZ:Q1LiGsP9vSlVgk4aMjt6Ouwy2FJo0=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/scripts\nM:0:0:555\nR:createdb.sh\na:0:0:444\nZ:Q1LKl1aRbSEoKDsExTFYR6big8MPE=\nR:storage.sql\na:0:0:444\nZ:Q1AblBvY+tOsnhzYgN3f4AZjYnTJ4=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/tests\nM:0:0:555\nR:alpine.json\na:0:0:444\nZ:Q16kHfz62fjyjiLgDXR34R6Et3nBg=\nR:apk.go\na:0:0:444\nZ:Q1CgAzc/60EcrtqSK8fT8cUuHu0m0=\nR:canonical_rekor.json\na:0:0:444\nZ:Q10+Acl7/DLMFjtyHw4RKpxK502xM=\nR:e2e-test.sh\na:0:0:444\nZ:Q1KitWfrBWNbP0I0OU0trbFoKNmYY=\nR:e2e_test.go\na:0:0:444\nZ:Q16P1wRI+z/6V5BPiRrfaN8vadoQA=\nR:harness_test.go\na:0:0:444\nZ:Q1fQszcl2Cx9jF+7QlNhs+iFEC8L8=\nR:helm.json\na:0:0:444\nZ:Q1TK9TS2f59LRrkk+PCHnE6p2F6uQ=\nR:intoto_dsse.json\na:0:0:444\nZ:Q11nWG3TxHAyv04a15jrP9DbSOLME=\nR:intoto_dsse.pem\na:0:0:444\nZ:Q1Rdl4u14ZasJWIhvo+T9FiwXsAsQ=\nR:intoto_multi_dsse.json\na:0:0:444\nZ:Q1eocVMl867xDdNQmQhiPgj5ZUtyA=\nR:intoto_multi_pub2.pem\na:0:0:444\nZ:Q1gOcjHBWJmbjWyDQdkYnoEfzX36s=\nR:issue-872-e2e-test.sh\na:0:0:444\nZ:Q1OeAXEotiMbi/SWERemVIw1M6a0Q=\nR:jar.go\na:0:0:444\nZ:Q1v/qjAJug2h20Z5DS5VQUuUpkDrg=\nR:kernel.json\na:0:0:444\nZ:Q1NMbXgvR246T3kJPfcyT0EZquwDI=\nR:node.json\na:0:0:444\nZ:Q1+0ei//4J2tYdSetU5EyKbGWnJjs=\nR:pgp.go\na:0:0:444\nZ:Q1If98hSX76Jokbfb3M8Qh4bX0zcQ=\nR:rekor-harness.sh\na:0:0:444\nZ:Q1SUVlu22N6ykMvQDox1vIlUHGFJU=\nR:rekor.json\na:0:0:444\nZ:Q1hOOpUn3lCZZFVKgK5ZNuYHkNmuQ=\nR:rpm.go\na:0:0:444\nZ:Q1CbRXtpEP0BDS+lxwO/wguovSf/E=\nR:rpm.json\na:0:0:444\nZ:Q1l7NUbE2z9CdtBocpQdQeGLmA7Ms=\nR:sharding-e2e-test.sh\na:0:0:444\nZ:Q1fvrPHna/86iZ8lJzX8KMLtCLVrg=\nR:ssh.go\na:0:0:444\nZ:Q1ZirvkXQj+0aNHfNC1HJ3Ti1b6RI=\nR:test-0.1.0.tgz\na:0:0:444\nZ:Q16Rb91EldMBg/uC2aK4qrcp1gZ0o=\nR:test-0.1.0.tgz.prov\na:0:0:444\nZ:Q1GVL3Ts+dWp1yyzkVHa/j7Jfp5YY=\nR:test.jar\na:0:0:444\nZ:Q1d31ea8sQ572fDh13yaNYT+eoFLY=\nR:test.rpm\na:0:0:444\nZ:Q16QTMj+oO6opzC2JjWlLqwiUYTDg=\nR:test.tsr\na:0:0:444\nZ:Q1dMQWL8igPP09pm7p8SWmz406HKM=\nR:test_alpine.apk\na:0:0:444\nZ:Q1Y1fKPt+l6p6TNqGR8K1wNQdtNVI=\nR:test_alpine.pub\na:0:0:444\nZ:Q1OvCFSO94z97c80mIDCxqGkh2Og4=\nR:test_any.json\na:0:0:444\nZ:Q1iwIi/bRB1lzjyQ45ZsQ++D5aM2E=\nR:test_cose.cbor\na:0:0:444\nZ:Q1ivKoV3Gu6A1z3p+pKpZfGO6+1Ng=\nR:test_cose.pub\na:0:0:444\nZ:Q1AlM9uAmY32N4uVMWYi6CzkEtpTI=\nR:test_file.sig\na:0:0:444\nZ:Q1gvlXScPZRqf5seTB+bgL9KRSjxw=\nR:test_file.txt\na:0:0:444\nZ:Q1TcvyI4Oe9W1Xm/kNcTfqS1e4SVA=\nR:test_helm_armor.pub\na:0:0:444\nZ:Q15V/wFt2ktVWRJ+PknYGd14hhHFY=\nR:test_public_key.key\na:0:0:444\nZ:Q1fFEZANzTP0qNzyjFcqQ29qKb3eE=\nR:test_request.tsq\na:0:0:444\nZ:Q1hvGLNrheNjl2zODa3HI08q5Q5vg=\nR:test_root.json\na:0:0:444\nZ:Q1yOy4gzTSWF6HgE/iXFycc/5b1fQ=\nR:test_rpm_public_key.key\na:0:0:444\nZ:Q1Fl83C+gsQmEdWni6+TF7ou9rs8k=\nR:test_timestamp.json\na:0:0:444\nZ:Q1X/elsXhyV97JWwgmhhOS/euMrxc=\nR:tuf.go\na:0:0:444\nZ:Q1n4ZZSgfEsKS2TR0gKjW3tH1Wf58=\nR:util.go\na:0:0:444\nZ:Q1YAdw7VydNplyCBrtpppUgWzRyfM=\nR:x509.go\na:0:0:444\nZ:Q1gcm6kWOId6O7VF9CIZynIeuapAc=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/tests/node\nM:0:0:555\nR:SHASUMS256.txt\na:0:0:444\nZ:Q1E10iwaYt18M9vqUv/WBBxUVKOaI=\nR:key\na:0:0:444\nZ:Q11+27ulVpMEbb7quNvLdUoBlKMaw=\nR:sha\na:0:0:444\nZ:Q1rVoWpJdt8WtIFgzp023lJdlkEoA=\nR:sig\na:0:0:444\nZ:Q1BufZsr7OTrPlq61BOQmKoWcbKsE=\nR:sig.asc\na:0:0:444\nZ:Q1zFbvLvjd2cMGsr9DklAK74KmRkQ=\nR:url\na:0:0:444\nZ:Q1OH+Hi4Mz8GNSHhEJxEqcAmCrcvM=\nF:root/go/pkg/mod/github.com/sigstore/rekor@v0.12.1/tests/sharding-testdata\nM:0:0:555\nR:ec_public.pem\na:0:0:444\nZ:Q1dx402YfQBYI2wvGhq6MiTaZyLO8=\nR:file1\na:0:0:444\nZ:Q1OL59G5gfL7akoKBSRT+Ic3PcH+g=\nR:file1.sig\na:0:0:444\nZ:Q1dskfHeCB5P8qZxBwzvz62Va9K6o=\nR:file2\na:0:0:444\nZ:Q1ZBJ+9fbWMtNSHxIDjLyunETeH7M=\nR:file2.sig\na:0:0:444\nZ:Q1v4m460NF1jCCC3fSMRVMJacCMLA=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1qvWg3Ub28UFKIgESVZD3imMA5c4=\nR:.gitignore\na:0:0:444\nZ:Q1uFYEQppTWs7p1842T3WdsYPp+UI=\nR:.golangci.yml\na:0:0:444\nZ:Q1m3k8/GEdIFTEi7hbjoINpx1oYYs=\nR:CODEOWNERS\na:0:0:444\nZ:Q1XJI4+c8pqdgxR0CVmykLh4RfJgc=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q17nChvpiOQcj3oI1umLowIREvGq8=\nR:COPYRIGHT.txt\na:0:0:444\nZ:Q1Wj0qPdDj/zQIPdRtEstNjVec/CQ=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:Makefile\na:0:0:444\nZ:Q1tSfczCv9EWPcq+yss2Zt88iTxSk=\nR:README.md\na:0:0:444\nZ:Q1VEZVUMbiMVte68Dy/I2h0nbIKz0=\nR:go.mod\na:0:0:444\nZ:Q1RVSYJfpSNLPu5+mCdhOryug5yKI=\nR:go.sum\na:0:0:444\nZ:Q1GKm8+G9X5htfr/boFE43mcP1Xcg=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q1omCLRXPNvuiOIdF9Q/z4aHAdhno=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/.github/workflows\nM:0:0:555\nR:codeql.yml\na:0:0:444\nZ:Q1NufvkJoJVGdn0RmQtzDuZZ1R0Jo=\nR:depsreview.yml\na:0:0:444\nZ:Q1mXwsFiCpISlg01GjaYeUidp2WwQ=\nR:e2e_test.yml\na:0:0:444\nZ:Q15MYpHRz+jGz4De3w+E8gb2bh7bQ=\nR:fuzzing.yml\na:0:0:444\nZ:Q1JsUQ3Kay7D4d/Bnt0ts/TpnyvBU=\nR:reusable-release.yml\na:0:0:444\nZ:Q1iizvjl9qYZLCn/DvXchJdIPkn9U=\nR:test.yml\na:0:0:444\nZ:Q1wuBjndonw7SxGts940L5Tja2z2g=\nR:verify.yml\na:0:0:444\nZ:Q1WMnEAYUL6JAjI1sbqJrqgKVN0iA=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/cryptoutils\nM:0:0:555\nR:certificate.go\na:0:0:444\nZ:Q1XbsHcR78sH+RaXYiIixtVUrnqwY=\nR:certificate_test.go\na:0:0:444\nZ:Q1gLm4zLogaGY3VV2ngHclAe4r5tc=\nR:doc.go\na:0:0:444\nZ:Q1uG+UEZKzvfv3Qp12WFmSCt5YqPs=\nR:generic.go\na:0:0:444\nZ:Q1CEruuLV9XcKJBoqXbnyojDxg6Jo=\nR:generic_test.go\na:0:0:444\nZ:Q1zu2hb23b/St2pq+dddLPKqqC9cc=\nR:password.go\na:0:0:444\nZ:Q1hvFkVfQZjGN7h99raOSaYD+BT34=\nR:privatekey.go\na:0:0:444\nZ:Q1ew62cKdAsXd+6ex4HXBKSvwmfSg=\nR:privatekey_test.go\na:0:0:444\nZ:Q1OqzLquHfz9yMHvmONmU+L9y3q8A=\nR:publickey.go\na:0:0:444\nZ:Q10MmefKRDc0mTNTzNV5NyNh0UOKE=\nR:publickey_test.go\na:0:0:444\nZ:Q1+OVKeKQgaFhZq93aiKLSu6ngh2M=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/fulcioroots\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1MH2ZkF97/bQywpPOg3epvBdcBC8=\nR:fulcioroots.go\na:0:0:444\nZ:Q1+upClRNNPLhWmlXjqe/JAKT5N6s=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/oauth\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q17iI/6prFz0OndA327pY5m9H+sM0=\nR:interactive.go\na:0:0:444\nZ:Q1vbVG7241jJ44AC0St9oM3G4IjcY=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/oauth/internal\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1VIQjckgaikx9cTfLbjxK0fHULkY=\nR:token.go\na:0:0:444\nZ:Q12fvYd1XTZilZCIAA3pqUXLOmx/o=\nR:token_test.go\na:0:0:444\nZ:Q1LBGlDd2kFizna4vWGlssjnN7zfY=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/oauth/oidc\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1DnTdjh0IyCzlGwyMlvFmmaxAxac=\nR:interactive.go\na:0:0:444\nZ:Q1r7rmzE+lBWN5KQ+SfDruhY0za0g=\nR:interactive_e2e_test.go\na:0:0:444\nZ:Q18qkTgzCcXHogbQPV0ed1grEtFFE=\nR:pkce.go\na:0:0:444\nZ:Q13Y/6KGpc4OA6/7CdfUR4juTjDfQ=\nR:pkce_test.go\na:0:0:444\nZ:Q1HGcZ4zqSfcR1jAGy7Vck/7GNkjs=\nR:token.go\na:0:0:444\nZ:Q1+ygevNSMZydZ22iOkV0/MNJa5oo=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/oauthflow\nM:0:0:555\nR:device.go\na:0:0:444\nZ:Q17TOhqrxayCFBm8ywh9roGV6qLgs=\nR:device_test.go\na:0:0:444\nZ:Q1VJvCaOQZCJg2mv6UZbTBgHIC2o0=\nR:doc.go\na:0:0:444\nZ:Q15jMBdij7+wQBLvudoq0WiWBKVPg=\nR:e2e_test.go\na:0:0:444\nZ:Q1/ZJI8yQJRPbeEo18+/CEy16Jh2w=\nR:flow.go\na:0:0:444\nZ:Q1Dm1KL3iZwdc4wTskBk8fiPSQGXo=\nR:flow_test.go\na:0:0:444\nZ:Q1POM5A2MsAGptQPelZnX6eXclarQ=\nR:interactive.go\na:0:0:444\nZ:Q1nzshivUvbwPT1sIzh+685E9O8bw=\nR:interactive_test.go\na:0:0:444\nZ:Q1ixbbdkmduQwITQDuunKkklo3Q+8=\nR:pkce.go\na:0:0:444\nZ:Q1yEVFMs77IqAaDkNBGay1H7TX/eA=\nR:pkce_test.go\na:0:0:444\nZ:Q1vix2BcIMMZdC1xIByG289PkL+GM=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1oVge8mAQv20j6K2epHZY8R/hdC4=\nR:ecdsa.go\na:0:0:444\nZ:Q1q4I095UTSmhUhwk1owmjcohVQoE=\nR:ecdsa_test.go\na:0:0:444\nZ:Q1Ikcs+5Lq6WoodEcyD5Y3bv+YEtc=\nR:ed25519.go\na:0:0:444\nZ:Q1QIef2QxKs56j2NCe9E1DemzdSKI=\nR:ed25519_test.go\na:0:0:444\nZ:Q17j+4a6c1wWgvM6u22VBXajfT+8s=\nR:message.go\na:0:0:444\nZ:Q1DRAgYnRLKyfXvBtZLkVsTX8lWhw=\nR:options.go\na:0:0:444\nZ:Q1BFCOLY0l1O3OxbCvSEBY0hbqsMI=\nR:publickey.go\na:0:0:444\nZ:Q1LBR6GXQXsWlL17FifVYV9iphGBo=\nR:rsapkcs1v15.go\na:0:0:444\nZ:Q1Ye9iCnmGbo1VYTbCViKs+TBlImI=\nR:rsapkcs1v15_test.go\na:0:0:444\nZ:Q1RPxAEOPWEHbZod+e1W87Dw2C+FE=\nR:rsapss.go\na:0:0:444\nZ:Q13bohV6Pl00HqNUNiOl2scZUHPqs=\nR:rsapss_test.go\na:0:0:444\nZ:Q1aqtatQ3ALcEcDXQ0voY2WuNnqfw=\nR:signer.go\na:0:0:444\nZ:Q1RrpiPq0fgHyJZcZoEVyZC1Pp0Xo=\nR:signerverifier.go\na:0:0:444\nZ:Q1Xk0jMoZHrstDAKEW9JzrfTZCW38=\nR:sv_test.go\na:0:0:444\nZ:Q1iW4heT4NcRzdUa6opLJoy3chc6E=\nR:util.go\na:0:0:444\nZ:Q1FHkAaqHhNbQEjb+bHDMRgUDjWNw=\nR:util_test.go\na:0:0:444\nZ:Q1i94CyWX19Z5bRoJPVliNHwZ4EKg=\nR:verifier.go\na:0:0:444\nZ:Q1cNA3rJZ+dqAW+ogtzSqzl8dBklU=\nR:verifier_test.go\na:0:0:444\nZ:Q1HO52On0Kj6/j8Qy0UPRSSdd3jf4=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/dsse\nM:0:0:555\nR:adapters.go\na:0:0:444\nZ:Q14JLRDe7RyN6ReRsdbSizIkbz6nI=\nR:doc.go\na:0:0:444\nZ:Q1nsQvkF4SaZx17tANrUtAItN8a/Q=\nR:dsse.go\na:0:0:444\nZ:Q1X03UsMolM9eQLVpOTJGvGdl1yDA=\nR:dsse_test.go\na:0:0:444\nZ:Q1cuWky9MoYH7GpCKHrMC0C2hMvgI=\nR:multidsse.go\na:0:0:444\nZ:Q1etgHrZzNziZ4NHDY/1rZ5GrzYHM=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1JZ6STeifewogvAnOVlGZtS5zEsI=\nR:kms.go\na:0:0:444\nZ:Q1mAkdaCKCLn1xWSPTH9Xn/syTUCo=\nR:kms_test.go\na:0:0:444\nZ:Q11cQZnbffxucsDPsOKfiznGDzMCo=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms/aws\nM:0:0:555\nR:aws_test.go\na:0:0:444\nZ:Q1J0l9JYfcMxdFvPzkQroiMubfAwk=\nR:client.go\na:0:0:444\nZ:Q1plViN51jqdihXeG4m5RSY88bSYI=\nR:doc.go\na:0:0:444\nZ:Q1iAFyyk6zDJTwBEyHgwVPgk1nHjc=\nR:e2e_test.go\na:0:0:444\nZ:Q1GUEZz2E7xNkJWHCZfFbGKMwqrp4=\nR:signer.go\na:0:0:444\nZ:Q1lk9Y333DBHQjUh7AjX0ooizMc6w=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms/azure\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1H41Cy9c+xOYQOkW+zMfKqLq48/w=\nR:azure_test.go\na:0:0:444\nZ:Q1GdMzXl6JEgFxpBvM7uqe1XXwdWk=\nR:client.go\na:0:0:444\nZ:Q1OxqZ5uOGRAXRanFiZUdOLRjp4PM=\nR:client_test.go\na:0:0:444\nZ:Q1sUgTGL8GzRVno6r9m6L3+39o520=\nR:doc.go\na:0:0:444\nZ:Q1d+3iAFiGx/r5on4LGQCGEXQwLYA=\nR:signer.go\na:0:0:444\nZ:Q1XTTcwSgzwXEUK6rAuFvuNKnjPVo=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms/fake\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1IVBb9Ts1woDPXV4w3Q6tbdw3Q5k=\nR:signer.go\na:0:0:444\nZ:Q1rk72tA+VPq5F0SJ3mSHiGrlpkSU=\nR:signer_test.go\na:0:0:444\nZ:Q17SMDJtAAZREmnwNTLuaje+etvss=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms/gcp\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1h+LLoig4zHBcBKbq7yQfnq3YD5E=\nR:doc.go\na:0:0:444\nZ:Q1YvoBPUIEPYlMnisSZoufbu5Dflg=\nR:gcp_test.go\na:0:0:444\nZ:Q1hfmNJe6nhiZY13N8BWLEf4Bkm+8=\nR:signer.go\na:0:0:444\nZ:Q1EbvwOknIBOh3HcijqQuzlQww0Os=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/kms/hashivault\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1kkL+ELUacBISPOysDjFNigdNKYU=\nR:doc.go\na:0:0:444\nZ:Q1/CfM1M1iRwRPWFgCChWn+ruAlTk=\nR:e2e_test.go\na:0:0:444\nZ:Q1REreFTS8jRvfHuomMKyy5MOoFhA=\nR:hashivault_test.go\na:0:0:444\nZ:Q1WA8FgQDiYOtYxLFOjGhsegMP+iY=\nR:signer.go\na:0:0:444\nZ:Q1UJLXHMX0QPNwbiHP82PAaDdoIL8=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/options\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1ob0cEVjp7fZSXABFJiwgbXpZEHU=\nR:digest.go\na:0:0:444\nZ:Q10uxU0G9APXj4EFuhRPJv5R+3Kcc=\nR:doc.go\na:0:0:444\nZ:Q1MhVhB6JCXubL9d+G+oBz0GiGFKw=\nR:keyversion.go\na:0:0:444\nZ:Q1DAqZjNLYWyjZCNwvbbYHWY9PDaU=\nR:noop.go\na:0:0:444\nZ:Q1ldW4TSh+ARyJUpJYa45w/6CkPi4=\nR:rand.go\na:0:0:444\nZ:Q12hy9rw8xm1sZLCOiOlGUo0g8Cxw=\nR:remoteverification.go\na:0:0:444\nZ:Q1BQfrTZMC17Btjfa23nEavAo2cfI=\nR:rpcauth.go\na:0:0:444\nZ:Q1w/voBdMBhz4INe56Mo4RX+4E8lg=\nR:signeropts.go\na:0:0:444\nZ:Q1ut8WueCNV4si1cQod6LzukqkwKE=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/payload\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1ao/UlF8fPqJpjbUefks5ToaVlEI=\nR:payload.go\na:0:0:444\nZ:Q1f1be2Nb1cDKvG8WF1ATPGD22WFQ=\nR:payload_test.go\na:0:0:444\nZ:Q1b+h/DHa21b9Tg6YlTRxPrExJ7qA=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/signature/ssh\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1JJM8Tsh5wiul343yAyBRLiMyD3Q=\nR:armor.go\na:0:0:444\nZ:Q1uuh3JZJ7B0mNaGFGC5FBHZKZNwk=\nR:doc.go\na:0:0:444\nZ:Q19xR5G7cLhR+biOS7NU5pW8HttMs=\nR:sign.go\na:0:0:444\nZ:Q1fb+dXwj036q3/8x4n8yKW0897FA=\nR:sign_test.go\na:0:0:444\nZ:Q1s8KJO+LgjdUgh5Wn4b28s2szvXk=\nR:verify.go\na:0:0:444\nZ:Q1eU1Jt4qYTc+XfvQ7C+iLVkZHwhs=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1GQLqWBuAZ8NoX14ir0Dy8szFqsc=\nR:client_test.go\na:0:0:444\nZ:Q1SFDiyOhTBNmMhLacugQUn6idSSY=\nR:policy.go\na:0:0:444\nZ:Q1S93iv/DUsDrh7OJ3fR4CuOBOPt4=\nR:policy_test.go\na:0:0:444\nZ:Q1OxYgmDyXEAodwZaKYCpedgIFW9Q=\nR:signer.go\na:0:0:444\nZ:Q13WbWhccmSdFfcfNE0M9q5kQ/kIo=\nR:status_type.go\na:0:0:444\nZ:Q1+ebZg/OvyQyF9ObJnSHbnM76lNg=\nR:status_type_test.go\na:0:0:444\nZ:Q1hpr4h9xOENeapjCAsQ8A1FGTzQY=\nR:testutils.go\na:0:0:444\nZ:Q1Juym/9itT4qQzuk7LyI8YT0lowc=\nR:usage_type.go\na:0:0:444\nZ:Q1dyuUZ24Uiq8ScozRU9Uhq4ZGICA=\nR:usage_type_test.go\na:0:0:444\nZ:Q1ZURHbrbJnWLH8em4jJcmdOUVsh0=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf/repository\nM:0:0:555\nR:root.json\na:0:0:444\nZ:Q1S1rcXnLp30EO5M0SOvBbhLkt8H8=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf/repository/targets\nM:0:0:555\nR:artifact.pub\na:0:0:444\nZ:Q1aEfSq31LNe+CTjjumguPKozIhw4=\nR:ctfe.pub\na:0:0:444\nZ:Q1inFCcR8847h6Y+ETwDOwrVsrY18=\nR:fulcio.crt.pem\na:0:0:444\nZ:Q14lsksRKSMyapOweGkk/tY44i4K4=\nR:fulcio_v1.crt.pem\na:0:0:444\nZ:Q1IpEOZnKuvJ6uA2N36B/bns5rBfs=\nR:rekor.0.pub\na:0:0:444\nZ:Q11s0q8hlunY0TjJiGGxPgufaTvTA=\nR:rekor.json\na:0:0:444\nZ:Q1RwnXI5hJ/6pbVQ2IfLh7EyifAwg=\nR:rekor.pub\na:0:0:444\nZ:Q11s0q8hlunY0TjJiGGxPgufaTvTA=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf/test_data\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf/test_data/hex_to_ecdsa_migration\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1fNAvC05z07iLJBOARJd9Ut337sA=\nR:2.root.json\na:0:0:444\nZ:Q1yD3EyBOwYpaIzFLyQ4dkGDZJJmU=\nR:root.json\na:0:0:444\nZ:Q1yD3EyBOwYpaIzFLyQ4dkGDZJJmU=\nR:snapshot.json\na:0:0:444\nZ:Q11uZLUCOt3Ct2fvZnQ75u/kvPmIY=\nR:targets.json\na:0:0:444\nZ:Q1zJ2ajRW6o9OvBckJhuhrTLLfGAg=\nR:timestamp.json\na:0:0:444\nZ:Q1ZCpBrV2p0r0CKI/czaQHY988YF8=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/pkg/tuf/test_data/hex_to_ecdsa_migration/targets\nM:0:0:555\nR:ctfe.pub\na:0:0:444\nZ:Q1inFCcR8847h6Y+ETwDOwrVsrY18=\nR:fulcio.crt.pem\na:0:0:444\nZ:Q14lsksRKSMyapOweGkk/tY44i4K4=\nR:rekor.pub\na:0:0:444\nZ:Q11s0q8hlunY0TjJiGGxPgufaTvTA=\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/test\nM:0:0:555\nF:root/go/pkg/mod/github.com/sigstore/sigstore@v1.4.4/test/e2e\nM:0:0:555\nR:dex-config.yml\na:0:0:444\nZ:Q18U7RqouGmLRJc5lOI3G6TVXb7yA=\nR:docker-compose.yml\na:0:0:444\nZ:Q1GeZwyPhmBfMCp8EUn8x1EIX80Jk=\nR:e2e-test.sh\na:0:0:444\nZ:Q1RCMoBACEm5wJdfNWxL0KZykV0LY=\nF:root/go/pkg/mod/github.com/sirupsen\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1Y9U/BoG9jZ5HGR/TAnGa8yCKXsE=\nR:.golangci.yml\na:0:0:444\nZ:Q1Pp2qLcoFXlrHk5915LwvhnfWF+U=\nR:.travis.yml\na:0:0:444\nZ:Q1pZ/WKVFoMO5ZiRQcY6YkUo2GaHM=\nR:CHANGELOG.md\na:0:0:444\nZ:Q1qNVLxv9AdMsleZ794gRfkSvpirQ=\nR:LICENSE\na:0:0:444\nZ:Q1oceFLHF/7SyaAoTtES6mYBMjDaY=\nR:README.md\na:0:0:444\nZ:Q1gGg4til0cC6iv41HudSKhpiaKOA=\nR:alt_exit.go\na:0:0:444\nZ:Q19cM+zduDDDPCCw8wh4bgL7tr/Os=\nR:alt_exit_test.go\na:0:0:444\nZ:Q1c20AQYT16JMrcvvFwgaSAP78iB8=\nR:appveyor.yml\na:0:0:444\nZ:Q1pPx5sc7fplN1dhyfg7gmOzGUqVQ=\nR:buffer_pool.go\na:0:0:444\nZ:Q17is4BmC2HhLQRgxIyWqafH+j3Zw=\nR:doc.go\na:0:0:444\nZ:Q1IVCK+SZhB4NXxPCnYIAQ5vfMgnc=\nR:entry.go\na:0:0:444\nZ:Q1K0xGv/uKKdrfqhDRH7YTjyzgOBI=\nR:entry_test.go\na:0:0:444\nZ:Q1pddag5bYyCW8mTV2XK3X5O7fyNA=\nR:example_basic_test.go\na:0:0:444\nZ:Q1OqnX9OwEMF3qRoJRtew8U2aJcb0=\nR:example_custom_caller_test.go\na:0:0:444\nZ:Q1SjA2cqsAapFZ1IttSWeCH49+05w=\nR:example_default_field_value_test.go\na:0:0:444\nZ:Q17UTzZ3E0IZg+mSlH39bZvw+INWY=\nR:example_function_test.go\na:0:0:444\nZ:Q1ZxcbRepfSv2lRqMCdnPBnGXcBU0=\nR:example_global_hook_test.go\na:0:0:444\nZ:Q1gEa0iUD7YdZMYKCI53PwKzuQ/ow=\nR:example_hook_test.go\na:0:0:444\nZ:Q18BcZMeGejOGNtzvf2kPgNqM6zCY=\nR:exported.go\na:0:0:444\nZ:Q16DgJLZIFM8LoNqORBLmfMVSg/qc=\nR:formatter.go\na:0:0:444\nZ:Q1Cgx2M8TT/nDW0wV1HzDHVJwLOnE=\nR:formatter_bench_test.go\na:0:0:444\nZ:Q12MWr2DkYKwiPfyBqLZ033dhlXLM=\nR:go.mod\na:0:0:444\nZ:Q1cyso0PjpqNjcp3mlBl9BaNsyNAk=\nR:go.sum\na:0:0:444\nZ:Q1xQegJ0PW5qNaKu2q0F4QOb10pgc=\nR:hook_test.go\na:0:0:444\nZ:Q1yhtboEP5HY7zNr1m3gRZ7Pkjgug=\nR:hooks.go\na:0:0:444\nZ:Q18CXoXr4SPLKbRLjuxkiVNtjnC2w=\nR:json_formatter.go\na:0:0:444\nZ:Q11W/OTDiooGhbcLBMWcYOAGDFEow=\nR:json_formatter_test.go\na:0:0:444\nZ:Q1FFRMMQuc9w4w4Q7zjfn4b63Km9U=\nR:level_test.go\na:0:0:444\nZ:Q1BXHbvIybqfRnfEok4PNLy0lGCXg=\nR:logger.go\na:0:0:444\nZ:Q12Nq48Bk2WrO8hcFIvVizc12zzio=\nR:logger_bench_test.go\na:0:0:444\nZ:Q1w+jN3Sb8M2VH0A7YZhCTLF66ghY=\nR:logger_test.go\na:0:0:444\nZ:Q1FsA5MP93yhLQP9OqLkJeNWbpOMI=\nR:logrus.go\na:0:0:444\nZ:Q1eqn3zHmKmY28injez3Q+bxv+5b4=\nR:logrus_test.go\na:0:0:444\nZ:Q1B33iX1WlPgJw6zJS/6MZzXZCpZM=\nR:terminal_check_appengine.go\na:0:0:444\nZ:Q1T3MgaiCj5K70glXqHpNCU2KNA28=\nR:terminal_check_bsd.go\na:0:0:444\nZ:Q1DF2nE7NQlQ6O2OIXo66TpmnGYf4=\nR:terminal_check_js.go\na:0:0:444\nZ:Q1baWSSzt05hMKi+EEa2phzP7fHy4=\nR:terminal_check_no_terminal.go\na:0:0:444\nZ:Q1TjLUjFqJJsSL7eLWr5keVmB5SZg=\nR:terminal_check_notappengine.go\na:0:0:444\nZ:Q11L8JmwkRQM2+Es0TON0Q3T49ETk=\nR:terminal_check_solaris.go\na:0:0:444\nZ:Q1i9AHVHJEF+BNvzNuZ4jqm4WyQT0=\nR:terminal_check_unix.go\na:0:0:444\nZ:Q1xrTbUrRnb+sYrzXT1BidTwf9q3A=\nR:terminal_check_windows.go\na:0:0:444\nZ:Q1qb9naeaUH9MAw1wDLPSx6DP0tgg=\nR:text_formatter.go\na:0:0:444\nZ:Q1DJU3tFBbk1nN+aAZ7euM6Wr+b2E=\nR:text_formatter_test.go\na:0:0:444\nZ:Q1Xs1f5tmEfIxp+AWgSyh2+hKDbnk=\nR:writer.go\na:0:0:444\nZ:Q1/l4NYWnkX+rBIax1dskSAkOrCh4=\nR:writer_test.go\na:0:0:444\nZ:Q1Rl6kwOgE4A+CIKI2hEoYtCPwN2Y=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/.github/workflows\nM:0:0:555\nR:ci.yaml\na:0:0:444\nZ:Q16ty1FAHn6dSYHpbTPyJi/9KLZLM=\nR:stale.yaml\na:0:0:444\nZ:Q1WpU7O9Akrm4m4rxkXafWqrJiNUU=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/hooks\nM:0:0:555\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/hooks/syslog\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1m4ydfqQnsMlH5PXzmx00P30NTWs=\nR:syslog.go\na:0:0:444\nZ:Q1ommiy/9gW8nuTg3ZHq/UcjRo1iI=\nR:syslog_test.go\na:0:0:444\nZ:Q1LGgdHsgTOGODuIeJrQ+tBSH9pks=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/hooks/test\nM:0:0:555\nR:test.go\na:0:0:444\nZ:Q1ZUYVtsCNKKts6feIYsQ1GfmIL/s=\nR:test_test.go\na:0:0:444\nZ:Q1v3UEHCIszqlaUaujwreyZyKWvTQ=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/hooks/writer\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1hUPxicXA6y2uJ6H+cCJhdPkwrgQ=\nR:writer.go\na:0:0:444\nZ:Q18+sMJfIcfg2g8dONX0229pv1qJ8=\nR:writer_test.go\na:0:0:444\nZ:Q1zWFrpB/mnI5MGiNppWPsd0m9/w0=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/internal/testutils\nM:0:0:555\nR:testutils.go\na:0:0:444\nZ:Q1fokyX9W3XwJP1D5lczvv49bFrDc=\nF:root/go/pkg/mod/github.com/sirupsen/logrus@v1.9.0/travis\nM:0:0:555\nR:cross_build.sh\na:0:0:444\nZ:Q1YX7jqarb1NbpRoT+8++7QeIzhZE=\nR:install.sh\na:0:0:444\nZ:Q184TcEKSmm79w77OWDkiE5DTasSA=\nF:root/go/pkg/mod/github.com/spf13\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q17e52vD8wVQkGAdRaITwO6nF7prY=\nR:.travis.yml\na:0:0:444\nZ:Q1TdKKUBdpOp8t3wAoI8Ta44mx+6Y=\nR:LICENSE.txt\na:0:0:444\nZ:Q1x/6stGZ/jGPIni7uuakTvTztisI=\nR:README.md\na:0:0:444\nZ:Q1T2RG3OwKrWREZkOxB3GcBw/ZPdw=\nR:afero.go\na:0:0:444\nZ:Q1pECAepRrcrDAgyL36eVw365gZKM=\nR:afero_test.go\na:0:0:444\nZ:Q1v4rOIrNpKc8sogO1Pqp5CFxVzHk=\nR:appveyor.yml\na:0:0:444\nZ:Q1KHe6uzOG3zLFZriyenzHlR7Tinc=\nR:basepath.go\na:0:0:444\nZ:Q1G9CLWhNLF5keq8oGd1f+dBmkYaM=\nR:basepath_test.go\na:0:0:444\nZ:Q1eyO03XR91ZFtsDdLQoTK7eGhyZA=\nR:cacheOnReadFs.go\na:0:0:444\nZ:Q15638NF6gEd/Odgwjw+olFEqyOlg=\nR:composite_test.go\na:0:0:444\nZ:Q1NKoZ/gUB+eXk/F0hEDDVGxSscdo=\nR:const_bsds.go\na:0:0:444\nZ:Q1Bjycq01F8KZ05PmTM+TAULv2/vk=\nR:const_win_unix.go\na:0:0:444\nZ:Q1R6tP7kEDAUxx95FuXWXc0mc3x0Y=\nR:copyOnWriteFs.go\na:0:0:444\nZ:Q1x+SS5sr+kC1UPnf1yGsAERfw2QQ=\nR:copyOnWriteFs_test.go\na:0:0:444\nZ:Q1jtlkD515H/D36wy2+YZ+IKfzJzU=\nR:go.mod\na:0:0:444\nZ:Q1FeN87Gygxp26NT2+n5A4YcOAmpU=\nR:go.sum\na:0:0:444\nZ:Q1i6K8L6MGEFf33xXqdLT2seGVXSk=\nR:httpFs.go\na:0:0:444\nZ:Q1nyxRgVS8JBujqA0tsVInDOgeqUI=\nR:iofs.go\na:0:0:444\nZ:Q1FsUqXoN3sjGXgXISUeHbTsWZSzY=\nR:iofs_test.go\na:0:0:444\nZ:Q1fi9pFpZ414UaSsHyouFh8hfdehI=\nR:ioutil.go\na:0:0:444\nZ:Q1nRVy197KMSFPBzaQEeiEamiXf7E=\nR:ioutil_test.go\na:0:0:444\nZ:Q1rLXG+J02T8ivsMN3Kw1a4m8diJQ=\nR:lstater.go\na:0:0:444\nZ:Q1qsDp6yVP8cKPsBP8RQ+UpDlTBhw=\nR:lstater_test.go\na:0:0:444\nZ:Q1NF3ivIDU191e88vPbxX9mRCQQ20=\nR:match.go\na:0:0:444\nZ:Q11hm0xCn5sXjct/HUqnYY/CqShX4=\nR:match_test.go\na:0:0:444\nZ:Q1B8B8CtVT0pJbdYOIiDAZENzZnkA=\nR:memmap.go\na:0:0:444\nZ:Q1rXi9Ar5SSp620/42d13VTBk9YLI=\nR:memmap_test.go\na:0:0:444\nZ:Q1f6X4ke/p5HFhwvfhWTdYbwENJE4=\nR:os.go\na:0:0:444\nZ:Q164hacwnVe5Dla/f04c/LaPwuTAc=\nR:path.go\na:0:0:444\nZ:Q1DHdREIKw97cshlaUVsrTr5Icbqc=\nR:path_test.go\na:0:0:444\nZ:Q1cXNk0fg9N8sazYKeRuBBPD8aNdY=\nR:readonlyfs.go\na:0:0:444\nZ:Q1rca+RbvJ3JEFGAI5Pw8i2Fce4EE=\nR:regexpfs.go\na:0:0:444\nZ:Q1lmF7xhWhLtMtVDUDPldfZfZOn0A=\nR:ro_regexp_test.go\na:0:0:444\nZ:Q1f/gftE2I7kEbD423HL5TKkRMpKs=\nR:symlink.go\na:0:0:444\nZ:Q1/lE2yacqugYTX3J+ZVAkXYiVfiU=\nR:symlink_test.go\na:0:0:444\nZ:Q1iH0XYlMmExmtMnftyV1KbgWOOww=\nR:unionFile.go\na:0:0:444\nZ:Q1I0ylSy305ple1KDnhaD9DY7ffcA=\nR:util.go\na:0:0:444\nZ:Q1hvv342jUIFTtuIZzAW+UOAcbezE=\nR:util_test.go\na:0:0:444\nZ:Q1XhL3c3u0S5k+N2tKSceJyfLm/ok=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/gcsfs\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1j/0/ajp/jEK7gyS8D6EgMAJVqx4=\nR:file.go\na:0:0:444\nZ:Q1M6dcE4sXaC2T34hFalyXH3rbnlI=\nR:file_info.go\na:0:0:444\nZ:Q1cWoJwiHPcS2jLyhGg1sEpiJA75c=\nR:file_resource.go\na:0:0:444\nZ:Q1Nit3uXU3HAj5vp4JhQM8sYSgME4=\nR:fs.go\na:0:0:444\nZ:Q1D9qRlySA2xliofTeFWePWttLe2Q=\nR:gcs-fake-service-account.json\na:0:0:444\nZ:Q1EU9vH6b/COqaSWDSE1KY+UbKfv8=\nR:gcs.go\na:0:0:444\nZ:Q1sseXVyb+D/AxP6hcqNbrgkB/++A=\nR:gcs_mocks.go\na:0:0:444\nZ:Q1/wDdjfTT04Y1xzE6dAQ5WYdlQak=\nR:gcs_test.go\na:0:0:444\nZ:Q1zGCX941n6qhUauxweJ/kuRaz0ZU=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/mem\nM:0:0:555\nR:dir.go\na:0:0:444\nZ:Q1x9e+0IivulWiputvf2T6CEgI8JA=\nR:dirmap.go\na:0:0:444\nZ:Q1lzu+/iFJMZYE8Go0Je4b4nZdI9k=\nR:file.go\na:0:0:444\nZ:Q1uSyhdLZcZGyG8m+CwRzqAtr7bWc=\nR:file_test.go\na:0:0:444\nZ:Q1qhqoZbabP9LafYRSoCly/nps2CI=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/sftpfs\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1hDkULMzohcEq4IIBmi+UydUWdIE=\nR:sftp.go\na:0:0:444\nZ:Q1M5fN83/lo44t0twicLC2hbCdDc8=\nR:sftp_test.go\na:0:0:444\nZ:Q1zT1PLlv8/khWaIj4cV0GmCW5FSE=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/tarfs\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1z6DOxQaLIi/WPky9+V0LPPPAzVc=\nR:fs.go\na:0:0:444\nZ:Q1vUZyu6o+VdpGFh8lYDuhihg8e2Y=\nR:tarfs_test.go\na:0:0:444\nZ:Q12G/+VslNrPi3Uu2wuQXjBsX9FC4=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/tarfs/testdata\nM:0:0:555\nR:t.tar\na:0:0:444\nZ:Q1HaHtjaUnKMY9dCp5gSw1OSy9Du0=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/zipfs\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1bk93oYThXlzYkWW9prfq7fMc0mI=\nR:file_test.go\na:0:0:444\nZ:Q12u77YXLbRzmZDI37YIERoUZ7LD4=\nR:fs.go\na:0:0:444\nZ:Q1/rN1I6fFVBoCFStRJ7GoyghJuwc=\nR:zipfs_test.go\na:0:0:444\nZ:Q1G/Qni2le+3djSrvgOvUbBYwjxVI=\nF:root/go/pkg/mod/github.com/spf13/afero@v1.8.2/zipfs/testdata\nM:0:0:555\nR:small.zip\na:0:0:444\nZ:Q1SuUUZBA3VZjGueTjbiCMQzHEFLw=\nR:t.zip\na:0:0:444\nZ:Q1eprSpZinJfCOzEiptO/D26EjgBo=\nF:root/go/pkg/mod/github.com/spf13/cast@v1.5.0\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1JhsWoViIxVQOOY5jWipLJ+V4f88=\nR:LICENSE\na:0:0:444\nZ:Q1/rkoW3XQyCpH0y59TchOsC257jQ=\nR:Makefile\na:0:0:444\nZ:Q1QVr+c3BiIO4Elugt9IHOhmvSydI=\nR:README.md\na:0:0:444\nZ:Q1+UIEfFa50rvdtMzhGuQLgxBoDws=\nR:cast.go\na:0:0:444\nZ:Q1k/HA8RDLJlh9UisAf6OGXau8Oi0=\nR:cast_test.go\na:0:0:444\nZ:Q1gA4gPBESnZ8qj6rJoL3WrjOeYBk=\nR:caste.go\na:0:0:444\nZ:Q1/MXDubI+0cvxnRzzubqUvOPTIRw=\nR:go.mod\na:0:0:444\nZ:Q1/2rS4Zt/bZlFpxNTK1/FJIOfjqw=\nR:go.sum\na:0:0:444\nZ:Q1CGRaGdKdMHPTtSZzl3u3yvNFRwo=\nR:timeformattype_string.go\na:0:0:444\nZ:Q1qXjtX7XnwMM/6eaUl1RNOZL/tLM=\nF:root/go/pkg/mod/github.com/spf13/cast@v1.5.0/.github\nM:0:0:555\nF:root/go/pkg/mod/github.com/spf13/cast@v1.5.0/.github/workflows\nM:0:0:555\nR:go.yml\na:0:0:444\nZ:Q1Qe8R2WnnYZrvItkKGgotHynUqTA=\nF:root/go/pkg/mod/github.com/spf13/cobra@v1.6.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1XdLe5mU6/nau+vaW/hWQw2QBMl0=\nR:.golangci.yml\na:0:0:444\nZ:Q1CRN6lXKjDc10ig6dlfXi7aOMEcU=\nR:.mailmap\na:0:0:444\nZ:Q1lirSQpU5NHo1LltDCkk8U5NZ60s=\nR:CONDUCT.md\na:0:0:444\nZ:Q1KXVN2s98MSyvn0dwKNqwx+l/I/g=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1SHkHt2vVnWImb5HKoBXrdZVy0Uk=\nR:LICENSE.txt\na:0:0:444\nZ:Q1x/6stGZ/jGPIni7uuakTvTztisI=\nR:MAINTAINERS\na:0:0:444\nZ:Q1+goSfyB6440dOzkUJjWpPFiTCWE=\nR:Makefile\na:0:0:444\nZ:Q1+AUchgl99g6c53AWm2KH/GT/VKI=\nR:README.md\na:0:0:444\nZ:Q1w0Dy3DADx3qOWdkeb6l74/HLzRI=\nR:active_help.go\na:0:0:444\nZ:Q12TMYseDMzmvT1ZLHMzZggBlRufM=\nR:active_help.md\na:0:0:444\nZ:Q1ZECnZi4oUjvGXqGXjg/0Cxj+TkA=\nR:active_help_test.go\na:0:0:444\nZ:Q1t5yhOes++4oqA9P5m4rw23X71a0=\nR:args.go\na:0:0:444\nZ:Q1ztLwUFl9djQNlPMyH2/fH6Mfj3E=\nR:args_test.go\na:0:0:444\nZ:Q1drAKEDriBUMgPjq0sTfUn7oqNz0=\nR:bash_completions.go\na:0:0:444\nZ:Q1WP8sJEcwK3JFcgFzOG0djFe6tfk=\nR:bash_completions.md\na:0:0:444\nZ:Q1EzvpZVMl5FWIqM+dZ9rxtbG6u8c=\nR:bash_completionsV2.go\na:0:0:444\nZ:Q1yrC2oH9rVrm8YF8CZMYuy7e+Rcc=\nR:bash_completionsV2_test.go\na:0:0:444\nZ:Q18QVLNEGs1l9WGhQWNw4M2uSVAPI=\nR:bash_completions_test.go\na:0:0:444\nZ:Q1x5D/byVjmhkkddfhtsPTGFW5Vt4=\nR:cobra.go\na:0:0:444\nZ:Q1SWhJkmM+Sxx3EcuW08c9NWxbqKs=\nR:cobra_test.go\na:0:0:444\nZ:Q18Sx95vdXHP/uon0TOoQJI4DbsB0=\nR:command.go\na:0:0:444\nZ:Q12pSAROROyyLzx1ssFFDwmwUzHyw=\nR:command_notwin.go\na:0:0:444\nZ:Q1GBjbyCiiXF0A/jhu2ZrFqFKodII=\nR:command_test.go\na:0:0:444\nZ:Q1E8zgBMeHbzgDka/h9hYYTBCWrkQ=\nR:command_win.go\na:0:0:444\nZ:Q1atso5sBSlti2WtF9xUKyxQy/8yw=\nR:completions.go\na:0:0:444\nZ:Q1CCIYRRe5EiaXGHm8CC9ntxd9SMk=\nR:completions_test.go\na:0:0:444\nZ:Q1e3+uDtD+Vkt6BGnwlNjTPQazcJw=\nR:fish_completions.go\na:0:0:444\nZ:Q1vN/UZm96/Y8skz3kjOAfztkS2u0=\nR:fish_completions.md\na:0:0:444\nZ:Q1tB6IDybpe+JOlV/Bzk1y6T0rDQg=\nR:fish_completions_test.go\na:0:0:444\nZ:Q1cOdF/Pqqj1kVjELsAfHtMN5VWbY=\nR:flag_groups.go\na:0:0:444\nZ:Q1GceGaO55BGrnkXLm+eryO9YpSQw=\nR:flag_groups_test.go\na:0:0:444\nZ:Q17gkywg7o8XwSBkVZrQ4my7WbF8o=\nR:go.mod\na:0:0:444\nZ:Q1yy5kGrfcCE4Zqp+8OZL4KP2+204=\nR:go.sum\na:0:0:444\nZ:Q1dN24+6y8NB8B68SR9nH0PitOqGE=\nR:powershell_completions.go\na:0:0:444\nZ:Q1uU3Z546TqEczWc23MClQJ2Rq74o=\nR:powershell_completions.md\na:0:0:444\nZ:Q1xZe2XKhXw0fq7wk4JvKs8jaKHFA=\nR:powershell_completions_test.go\na:0:0:444\nZ:Q1EShxe4gWTFTRXcjOK5LNlFy1y2U=\nR:projects_using_cobra.md\na:0:0:444\nZ:Q1QqPHDsGe/9N52nKqfBB8Q4WW8Is=\nR:shell_completions.go\na:0:0:444\nZ:Q1XrC5nySY1gpgV1zydbnBfMi4aGM=\nR:shell_completions.md\na:0:0:444\nZ:Q14sGpArd7/IBRt4iezvAMPAW1mog=\nR:user_guide.md\na:0:0:444\nZ:Q1N9d2PgF35gXadT1o0cEOcsJRti0=\nR:zsh_completions.go\na:0:0:444\nZ:Q1pJQF/tMr3bcqTLrU/tCM0HbKN9c=\nR:zsh_completions.md\na:0:0:444\nZ:Q1B7+NN7gVnm5CyaDtePJVDmFsq4s=\nR:zsh_completions_test.go\na:0:0:444\nZ:Q1R/v1AsLM9bjOiQ1ziDlBU+WojyQ=\nF:root/go/pkg/mod/github.com/spf13/cobra@v1.6.1/.github\nM:0:0:555\nR:dependabot.yml\na:0:0:444\nZ:Q1wvCg2ybvwFXLYTMjTL3S0PZj46w=\nR:labeler.yml\na:0:0:444\nZ:Q1Q8s/oyaXIsX4LsasvV5pNuZLwS0=\nF:root/go/pkg/mod/github.com/spf13/cobra@v1.6.1/.github/workflows\nM:0:0:555\nR:labeler.yml\na:0:0:444\nZ:Q16pDygyYwnDeMcfKEjrb+GxlSZbQ=\nR:size-labeler.yml\na:0:0:444\nZ:Q14XJ/3SJzMeioleUnCbfDjGsK1mk=\nR:stale.yml\na:0:0:444\nZ:Q1Jju9MyNPLo+CcrxsCKpIoArV3zU=\nR:test.yml\na:0:0:444\nZ:Q1kuRgjeAQ0eYJPyz8EpEyYpg05vE=\nF:root/go/pkg/mod/github.com/spf13/cobra@v1.6.1/doc\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1e2Ce5tkuue57Z8W2ne4M7F6Iq1E=\nR:cmd_test.go\na:0:0:444\nZ:Q1LOgnn+rdWfz7G/Z7HVqISgwc9/c=\nR:man_docs.go\na:0:0:444\nZ:Q125YaaCXuezHXvpDNYcxggXHd5cQ=\nR:man_docs.md\na:0:0:444\nZ:Q1UaGcl404hi9b9qjaMjlGv94XmOg=\nR:man_docs_test.go\na:0:0:444\nZ:Q1/GW8H8Zt2RdkuFOAEhPwL14ncaQ=\nR:man_examples_test.go\na:0:0:444\nZ:Q1g2C+WJeHNRIe7ENzEb20u+SqCDQ=\nR:md_docs.go\na:0:0:444\nZ:Q1Hs2ynuAQVwVoOw7VYXXP0SgU3wM=\nR:md_docs.md\na:0:0:444\nZ:Q1jOge3gG56N5gzq+aP87L60uKsIM=\nR:md_docs_test.go\na:0:0:444\nZ:Q1Uw3tmTvZYVlIAwdmDdmvqOpek3k=\nR:rest_docs.go\na:0:0:444\nZ:Q1Bgm/p6KmubGUWkQB7DmXdJYcRRQ=\nR:rest_docs.md\na:0:0:444\nZ:Q1pdsXyeej9yJkPQGPueDJpSUxHFQ=\nR:rest_docs_test.go\na:0:0:444\nZ:Q12Zrh66UbdNCs60a8Iy0yCQ4xIEE=\nR:util.go\na:0:0:444\nZ:Q1SnxrsJ7i6/gLjcb/yLDSRsLThLA=\nR:yaml_docs.go\na:0:0:444\nZ:Q1k7o83F4iSwbDdWQCwIoW/Op4mvA=\nR:yaml_docs.md\na:0:0:444\nZ:Q196oqzvzhdZ7UW+PvpzzGaj7cSs0=\nR:yaml_docs_test.go\na:0:0:444\nZ:Q1kqTBS0MUPFIys4Lr7vx4vg+mn9U=\nF:root/go/pkg/mod/github.com/spf13/pflag@v1.0.5\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1cJP5CRsIylWUVno9CiNNsAF83mU=\nR:.travis.yml\na:0:0:444\nZ:Q1xgo9RvBwOOjtfThrE8pLbHs4cbE=\nR:LICENSE\na:0:0:444\nZ:Q1s8hq5GWyH3MjBZ2zNRWLSBh3Mcc=\nR:README.md\na:0:0:444\nZ:Q1hoLco/TGA/LePrpHNfD2Dcwb2Sk=\nR:bool.go\na:0:0:444\nZ:Q1b2nkIFpq1Uw5Qz9BPY1myRdD1i4=\nR:bool_slice.go\na:0:0:444\nZ:Q1earYJlAWks1SqhPD9MGfq7XT/e0=\nR:bool_slice_test.go\na:0:0:444\nZ:Q1QztyhCWqB/VUI+Apmf4I810MSQw=\nR:bool_test.go\na:0:0:444\nZ:Q14Z7qM9bB+MLkCIkYNBp6IECllyc=\nR:bytes.go\na:0:0:444\nZ:Q1VF4c/GcpB+N4ZO7mcCswKVrZxzs=\nR:bytes_test.go\na:0:0:444\nZ:Q18E8akR68wuGd4fn1BGd70/XrCEo=\nR:count.go\na:0:0:444\nZ:Q1kSz3dPj2+v/uqOq/GS8UQqwl2jw=\nR:count_test.go\na:0:0:444\nZ:Q1TudrkyKdo/kyWBi8rBoZL6lRkBw=\nR:duration.go\na:0:0:444\nZ:Q1V7ySAICFy5xGJla35HyTG3A+ViQ=\nR:duration_slice.go\na:0:0:444\nZ:Q18XHn8qTE4qeC8G0+TRCcjkrjMtg=\nR:duration_slice_test.go\na:0:0:444\nZ:Q1UECYc/EeMn2phHCfkC3Gj20pqcw=\nR:example_test.go\na:0:0:444\nZ:Q16L4MxlnyjVTamUEk2zBZVhLhPe4=\nR:export_test.go\na:0:0:444\nZ:Q1/V8F6w1r5EpsfoesOYeB+YDopbI=\nR:flag.go\na:0:0:444\nZ:Q19YKq0MWqKFnT5Z9Yf82aaeLzgbs=\nR:flag_test.go\na:0:0:444\nZ:Q1/cTqFG8bvOOhy6o/o/dH7EsfXzE=\nR:float32.go\na:0:0:444\nZ:Q1QCo8JpM/Xrzee50waY3Hsu1KM0E=\nR:float32_slice.go\na:0:0:444\nZ:Q1ulnbsBdVHYTM4c04nH5I2zrq2II=\nR:float32_slice_test.go\na:0:0:444\nZ:Q1UZzY7MYt0ZVMWeqjpc+Vsl2hNt4=\nR:float64.go\na:0:0:444\nZ:Q1IjhYIHxQUG4dvj8fcYDaKpOS948=\nR:float64_slice.go\na:0:0:444\nZ:Q1SlR6OmenDO4RD1zPeZYNRvt8SqE=\nR:float64_slice_test.go\na:0:0:444\nZ:Q1kE8bhQ5bV/1dxkvvuNOQ+z0lhAM=\nR:go.mod\na:0:0:444\nZ:Q1GN6t6pmLq2qo18nYfNXFRkEJy4U=\nR:go.sum\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:golangflag.go\na:0:0:444\nZ:Q1WVTpvWBYFK/hG4lEb4UOsu7behg=\nR:golangflag_test.go\na:0:0:444\nZ:Q1UyFoN/vNmYkYf/32ApToUuIcrxI=\nR:int.go\na:0:0:444\nZ:Q1AmtS8soGsdX3lLrIMa/FYZX0Tr8=\nR:int16.go\na:0:0:444\nZ:Q1drOAkl09aSmwbVf3+7CXKf3vwrs=\nR:int32.go\na:0:0:444\nZ:Q14ygpKGYbYxJ6rrMaZJZQHqEecbk=\nR:int32_slice.go\na:0:0:444\nZ:Q1RpFYrZ1X4Apl/+tbaykCgwocSW8=\nR:int32_slice_test.go\na:0:0:444\nZ:Q1q9FUUottfh00zSyFq5iW81TEXzM=\nR:int64.go\na:0:0:444\nZ:Q1tA3OIEZocyj1+3Vqrjgb4A1R/74=\nR:int64_slice.go\na:0:0:444\nZ:Q14TGnILwwagh2WAmn3uIfIJdwf9k=\nR:int64_slice_test.go\na:0:0:444\nZ:Q1RImq/8xk5BbsEJ6wwKhwt4H8RkI=\nR:int8.go\na:0:0:444\nZ:Q1Nk5STys6WElmYzmnJ+tLK0Etucs=\nR:int_slice.go\na:0:0:444\nZ:Q1644iLWe2YKpAPLWbfv9TTjWKZIQ=\nR:int_slice_test.go\na:0:0:444\nZ:Q1fEftqdisw8rIkosWQU7Pm8p9i6Q=\nR:ip.go\na:0:0:444\nZ:Q1T5pDGq9pC0yMZ8xxS1lIWZKkL9I=\nR:ip_slice.go\na:0:0:444\nZ:Q1Jc9kEU1flenIv3BCZ3y9RFRRWXU=\nR:ip_slice_test.go\na:0:0:444\nZ:Q1AU5ph4Vs8pFHOo4mT2uZxpE81u8=\nR:ip_test.go\na:0:0:444\nZ:Q1YQTIv/+bjDwDfhp+90HK9tByZEk=\nR:ipmask.go\na:0:0:444\nZ:Q1DgwsgyzugIYLlPsmSxZtTzpPVOU=\nR:ipnet.go\na:0:0:444\nZ:Q1X9wGvaJaOWwF6qoxC63tnsWI2+Y=\nR:ipnet_test.go\na:0:0:444\nZ:Q198BVIGWyH39I9QyFo9Rh1fLvANc=\nR:printusage_test.go\na:0:0:444\nZ:Q1hYVYpM80R0Y7qQe1ewGeYsLsYuQ=\nR:string.go\na:0:0:444\nZ:Q1/sMGcynxGYVTtDzugFapa4wRMEk=\nR:string_array.go\na:0:0:444\nZ:Q16BVraOOv1SQFuaNphMDZhR0UQ/0=\nR:string_array_test.go\na:0:0:444\nZ:Q1jKrSPMCy0WHlzDagdckjVF19dzY=\nR:string_slice.go\na:0:0:444\nZ:Q1s/wN7MsCow8GMfqhh3Dsimmd9fI=\nR:string_slice_test.go\na:0:0:444\nZ:Q1ZmsqNn5Itr3xJ7+9BGK1w6Dmmdg=\nR:string_to_int.go\na:0:0:444\nZ:Q1AuFTo36OEKB9TWR51KcgyQjOMoc=\nR:string_to_int64.go\na:0:0:444\nZ:Q19qJ4cEASH14UVvzAK1LGBYu5vrI=\nR:string_to_int64_test.go\na:0:0:444\nZ:Q1om78PdPm/n9XxTLIq5lIveP16Y4=\nR:string_to_int_test.go\na:0:0:444\nZ:Q1wve+DRFGzeu9sLEppqbXc12slPs=\nR:string_to_string.go\na:0:0:444\nZ:Q1AzqTZhLZvmYilGER6NtPvLg61yU=\nR:string_to_string_test.go\na:0:0:444\nZ:Q1ATODgE0sal/YsMZYizHbd2UrLtw=\nR:uint.go\na:0:0:444\nZ:Q16hy1B8aVVR3DBElQsyVTbMcJVao=\nR:uint16.go\na:0:0:444\nZ:Q1Uvmc30SDnjGdheOMY6ORkck+J6U=\nR:uint32.go\na:0:0:444\nZ:Q17KmxVNGp27Ao4fRTSLuglGfq9w0=\nR:uint64.go\na:0:0:444\nZ:Q1j5n7vWmK3GG1CMEx4DuGdBFkFHg=\nR:uint8.go\na:0:0:444\nZ:Q1ReZ7lhC1pVN48M30OcFvd7n+/7Y=\nR:uint_slice.go\na:0:0:444\nZ:Q15ZhnPiBZKoyvHlymBu+gk+vZmpc=\nR:uint_slice_test.go\na:0:0:444\nZ:Q1XKU60Txrafm8teTSppu94gTFyCk=\nF:root/go/pkg/mod/github.com/spf13/pflag@v1.0.5/verify\nM:0:0:555\nR:all.sh\na:0:0:444\nZ:Q1xF83+AniuaSvPW73QPM0uCRDJNQ=\nR:gofmt.sh\na:0:0:444\nZ:Q1TA4ZnsDIrXi+BzNogDhiWE71tio=\nR:golint.sh\na:0:0:444\nZ:Q1VjVQcvVXZ4/61muOQ2EHpFoXQbk=\nF:root/go/pkg/mod/github.com/theupdateframework\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1SO/s1BuxXNhpJnUP36d2389CzTg=\nR:.gitignore\na:0:0:444\nZ:Q1HrvviiFD4gr4O/1PbQZ8z+3OX+U=\nR:.golangci.yml\na:0:0:444\nZ:Q1JK+dnIRJ5g0EtnaAIogqR54lJJo=\nR:LICENSE\na:0:0:444\nZ:Q1Ysy6MS7UbGiZuyRnNlzqc5ezR9Q=\nR:README.md\na:0:0:444\nZ:Q1aml8s3T2Ll7a5CNR/BnGAkwcr7c=\nR:errors.go\na:0:0:444\nZ:Q1lo5ehzxXJJ7QQRMumtXK2wlQ4T8=\nR:go.mod\na:0:0:444\nZ:Q19M0FbXJpeW4k7yoM5064ZnBvsZE=\nR:go.sum\na:0:0:444\nZ:Q1M9YW3d3CWdgF7G3mFue96tUEJcc=\nR:local_store.go\na:0:0:444\nZ:Q1voFk1Fx66J5w45CmZmLz/r1gDGk=\nR:local_store_test.go\na:0:0:444\nZ:Q1RoQLv1WScMUdqCIO/RcaZbSu6yg=\nR:repo.go\na:0:0:444\nZ:Q1fasGxKQWhwlwBvwfZHGYZZmzDJw=\nR:repo_test.go\na:0:0:444\nZ:Q1DTqFbMERMHUxVKgpfQwe4UyEFQ8=\nR:requirements-test.txt\na:0:0:444\nZ:Q1oTTTbSVHC6rDghth4QpaJ6DQjSc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/.github\nM:0:0:555\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1uMBGJobAOdgBX4i4z5V5MotpZ8w=\nR:dependabot.yml\na:0:0:444\nZ:Q1010jU4Qi9IRbkER2/I3Lw0yWVF0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/.github/workflows\nM:0:0:555\nR:changelog.yml\na:0:0:444\nZ:Q1CxZATOLhehEmwM5RXA7J2d+II2w=\nR:ci.yml\na:0:0:444\nZ:Q1I+Ms8UZy8X4MFlGO81TQblHl/04=\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1KIlQBPFuMteaxHCM7NoWLcGpWNo=\nR:release.yml\na:0:0:444\nZ:Q1+utH9mWNuUstw/LUYp+qDHjJJ30=\nR:specification-version-check.yml\na:0:0:444\nZ:Q1Md8jKCW1mcAgdwBNvCv/V3ZIBmk=\nR:tests.yml\na:0:0:444\nZ:Q1imfMgqqTxa+xxAWV2nF00RgQCxQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/.goreleaser\nM:0:0:555\nR:tuf-client.yml\na:0:0:444\nZ:Q13vj3Hsqaz5ID0biWBZ3N1ehVZvI=\nR:tuf.yml\na:0:0:444\nZ:Q10YNw6qoqQy+VInwsctgMEmdhd3M=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1xgNSZk5zDKg7V/2x9fDfQYjIHXA=\nR:client_test.go\na:0:0:444\nZ:Q1r+dtDG8X1Z5vJlVLe2j5zpkOOZQ=\nR:delegations.go\na:0:0:444\nZ:Q1O/xroq6kgC7eyEJWe/BD1GcFIzU=\nR:delegations_test.go\na:0:0:444\nZ:Q10UGLTB3WoxCQ5/BO0ol0Yzn1tiM=\nR:errors.go\na:0:0:444\nZ:Q17G9Q7aq5+BfWzS2udd7urllTyZU=\nR:file_store.go\na:0:0:444\nZ:Q1YxOPHvqIeFmoKCADgcbFqv4l2n4=\nR:file_store_test.go\na:0:0:444\nZ:Q1r4NLI4rYx7jWbg4oxF1hFY6QGDc=\nR:interop_test.go\na:0:0:444\nZ:Q1gnG1zJ6O7+EcDsF8ry7398vhVII=\nR:local_store.go\na:0:0:444\nZ:Q1K0bP5BU2H9kq9s7G6SJYZi8Brrs=\nR:local_store_test.go\na:0:0:444\nZ:Q1hmUzAbeBFCnhuYUndhN32SOG7Sc=\nR:remote_store.go\na:0:0:444\nZ:Q1m2mopwxHOrsbv72MlWWTBLLtloA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/filejsonstore\nM:0:0:555\nR:filejsonstore.go\na:0:0:444\nZ:Q1enphypokOK27kCMcNLRVq+U7foM=\nR:filejsonstore_test.go\na:0:0:444\nZ:Q1gwzmz0roNL8StZO/s4qIk7A2f8A=\nR:perm_test.go\na:0:0:444\nZ:Q1AQ1f1FPayLugfUHuXH2uSoPOZrE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/leveldbstore\nM:0:0:555\nR:leveldbstore.go\na:0:0:444\nZ:Q1xX4cXizrZYi+5tqn0hE+cK1XgN0=\nR:leveldbstore_test.go\na:0:0:444\nZ:Q1AuH8DZJFdIb9geXMVEMA9k98loc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop\nM:0:0:555\nR:python_interop_test.go\na:0:0:444\nZ:Q1VMP2XYG913oYRWUwzMb5u1wdjGE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata\nM:0:0:555\nR:LICENSE.txt\na:0:0:444\nZ:Q1Y7xZj2eh9757212Fmd+iJELt/zs=\nR:Makefile\na:0:0:444\nZ:Q1LXYVQ2QZ39QRSMgOpkXknfMlWkU=\nR:README.md\na:0:0:444\nZ:Q18IyhQy9UvuPWTr8HsCxep6cqUqY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1Hk07+cc7PWRe8FhqJhT9quYW2lA=\nR:client.py\na:0:0:444\nZ:Q1zW9tDyiS9f9d204hZX7IIdoK2tk=\nR:generate.py\na:0:0:444\nZ:Q1aMUrg/SbSaYIoShiQHcjdf02jvE=\nR:generate.sh\na:0:0:444\nZ:Q10rKnHg5MW034Fm6gWYyK0auC9f0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/with-consistent-snapshot\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/with-consistent-snapshot/repository\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/with-consistent-snapshot/repository/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q15ZLgl9aIaid9MTCeWZFVp1PAiR4=\nR:1.snapshot.json\na:0:0:444\nZ:Q1dEGeoL0VwQEbELJc9m5TphWoqpU=\nR:1.targets.json\na:0:0:444\nZ:Q1c9l2JWtUjOxf8s/aJKRySs00ii8=\nR:timestamp.json\na:0:0:444\nZ:Q12bgDgg3FrfPTxfbD59YhL38SYJs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/with-consistent-snapshot/repository/targets\nM:0:0:555\nR:55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9.file1.txt\na:0:0:444\nZ:Q1zhvg/0BlpulBUJXJXyX0emM87ys=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/with-consistent-snapshot/repository/targets/dir\nM:0:0:555\nR:04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701.file2.txt\na:0:0:444\nZ:Q1wu33sALQNUA5qKq6O8UxgMrz0kg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/without-consistent-snapshot\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/without-consistent-snapshot/repository\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/without-consistent-snapshot/repository/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1k959h3KwcZTwQnI3yRhpd8ZZdxU=\nR:snapshot.json\na:0:0:444\nZ:Q1k2+8OczBL2+RKjBtH1htOfKCW7g=\nR:targets.json\na:0:0:444\nZ:Q1zJ+E1XUE3C8AVY+grfM6ACKwx6k=\nR:timestamp.json\na:0:0:444\nZ:Q1za53y8RKH1cfENDQQT7749CvcWM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/without-consistent-snapshot/repository/targets\nM:0:0:555\nR:file1.txt\na:0:0:444\nZ:Q1zhvg/0BlpulBUJXJXyX0emM87ys=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/python_interop/testdata/python-tuf-v1.0.0/without-consistent-snapshot/repository/targets/dir\nM:0:0:555\nR:file2.txt\na:0:0:444\nZ:Q1wu33sALQNUA5qKq6O8UxgMrz0kg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata\nM:0:0:555\nR:keys.json\na:0:0:444\nZ:Q1WglP5M4uyvJGsqYNm87tr6McJwM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q19SlFQ0QfyHZJI406vYmvEqEABOA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:1.snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:1.targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:1.timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nR:root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:1.snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:1.targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:1.timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nR:root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:1.snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:1.targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:1.timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nR:root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:1.snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:1.targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:1.timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nR:root.json\na:0:0:444\nZ:Q149Lxqy61XGkKqLVHcwVjqZ/L2I4=\nR:snapshot.json\na:0:0:444\nZ:Q1XlM4Iv54bbpCCmoK3ln6d6E+nOw=\nR:targets.json\na:0:0:444\nZ:Q1lcwXThPgVY6URvmUExtYIYcujhs=\nR:timestamp.json\na:0:0:444\nZ:Q1X6rp4rsV4zbmbNwDOYzTUtz4TPk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1LVyocuKncefoX/xzYKLnD0GrrvQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/server/metadata\nM:0:0:555\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1eQs8JeLyNLb0IKXn0RIgeft/hsI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/client/metadata/current\nM:0:0:555\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1acRDaX0xPcIveAW21HJX10YbziE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:root.json\na:0:0:444\nZ:Q1acRDaX0xPcIveAW21HJX10YbziE=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_no_root/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1sovsCppFglDgiNCjhkRip5gyRHE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/client/metadata/current\nM:0:0:555\nR:root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1acRDaX0xPcIveAW21HJX10YbziE=\nR:1.snapshot.json\na:0:0:444\nZ:Q13XLB3hlAuYHmOzFxY6dhHMlNny8=\nR:1.targets.json\na:0:0:444\nZ:Q1lrnmjA2oqWSbnroALlm65+lzkek=\nR:1.timestamp.json\na:0:0:444\nZ:Q1DVVyliqeahDn46hl2bjarmqZgRE=\nR:root.json\na:0:0:444\nZ:Q1acRDaX0xPcIveAW21HJX10YbziE=\nR:snapshot.json\na:0:0:444\nZ:Q13XLB3hlAuYHmOzFxY6dhHMlNny8=\nR:targets.json\na:0:0:444\nZ:Q1lrnmjA2oqWSbnroALlm65+lzkek=\nR:timestamp.json\na:0:0:444\nZ:Q1DVVyliqeahDn46hl2bjarmqZgRE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published1Time_client_root_only/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:1.targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:1.timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nR:root.json\na:0:0:444\nZ:Q1MtBTRMTxS4KI4T9WKDCijnCHR00=\nR:snapshot.json\na:0:0:444\nZ:Q1TO6izEZzCCwE8P/0X/nIh6X1EkQ=\nR:targets.json\na:0:0:444\nZ:Q1totBgZQgeVczIlHG4ndvCnooRJY=\nR:timestamp.json\na:0:0:444\nZ:Q14Teyi4ZIVW+JKfQVYMRL04cmFV8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1Lm7nFKKtjo8tc3pfxByo2U20UCs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1qc5p6duSk/a9HFtAfBSl7d2JAv0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1I5nP52A23cA+1De3cvS3V5bjPpI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:1.targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nR:root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:1.targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nR:root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:1.targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nR:2.root.json\na:0:0:444\nZ:Q1TdLlhUTXPX3gP8/ZbQiwVTP5cJw=\nR:root.json\na:0:0:444\nZ:Q1eqpzbNZgp7rhmfwc0KKKkeQxwpE=\nR:snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1a5mVAlUA2R2ynooR590Snl8j2mI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:1.targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nR:2.root.json\na:0:0:444\nZ:Q1eqpzbNZgp7rhmfwc0KKKkeQxwpE=\nR:root.json\na:0:0:444\nZ:Q1eqpzbNZgp7rhmfwc0KKKkeQxwpE=\nR:snapshot.json\na:0:0:444\nZ:Q1AZ4LZvWLaH9IK2PG0fQBZ9cyMS0=\nR:targets.json\na:0:0:444\nZ:Q1LnH0YZHvyjTDcguZBVzIMf1a71E=\nR:timestamp.json\na:0:0:444\nZ:Q1ZfzeHW+2By522j4dQ7IdtaOODQg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1a5XgupZXdiBPNOC8CnKoqNg2g9U=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1i0+hnW4gzizrt5q0R8YJGSSd7Go=\nR:root.json\na:0:0:444\nZ:Q1h6f+a7PYrQ+bQhikavzZZ87FupU=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1j77eoyHg99lzNydVfWpHb3dFsGs=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1h6f+a7PYrQ+bQhikavzZZ87FupU=\nR:root.json\na:0:0:444\nZ:Q1h6f+a7PYrQ+bQhikavzZZ87FupU=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1Lm7nFKKtjo8tc3pfxByo2U20UCs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q14Mg3GmPpy9Bih74/3Xg0MC/fDfc=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_roottoolarge/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1jTvLBG6WWiJoHC5J0HwPKrfYORQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:root.json\na:0:0:444\nZ:Q1Cou97BKQAOv7Wlz7lPvQKTPH9+U=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1QYVG7iUTcEeqwvd9d3ZrN/1E6cA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1i6Z00scYdop3cZK2FVpd5AIxR6Y=\nR:2.snapshot.json\na:0:0:444\nZ:Q1m2nfZK3ZXhCWvuVvt3SBSYhQlpg=\nR:2.timestamp.json\na:0:0:444\nZ:Q1azoi/AP4TT7fcjkTTMD77PDev/M=\nR:root.json\na:0:0:444\nZ:Q1i6Z00scYdop3cZK2FVpd5AIxR6Y=\nR:snapshot.json\na:0:0:444\nZ:Q1m2nfZK3ZXhCWvuVvt3SBSYhQlpg=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1azoi/AP4TT7fcjkTTMD77PDev/M=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1i6Z00scYdop3cZK2FVpd5AIxR6Y=\nR:2.snapshot.json\na:0:0:444\nZ:Q1m2nfZK3ZXhCWvuVvt3SBSYhQlpg=\nR:2.timestamp.json\na:0:0:444\nZ:Q1azoi/AP4TT7fcjkTTMD77PDev/M=\nR:root.json\na:0:0:444\nZ:Q1i6Z00scYdop3cZK2FVpd5AIxR6Y=\nR:snapshot.json\na:0:0:444\nZ:Q1m2nfZK3ZXhCWvuVvt3SBSYhQlpg=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1azoi/AP4TT7fcjkTTMD77PDev/M=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1LLUa9n81nRTyW/Uo/uKvtKQBUSE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:1.snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:1.targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:1.timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nR:root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:1.snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:1.targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:1.timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nR:root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:1.snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:1.targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:1.timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nR:2.root.json\na:0:0:444\nZ:Q1islNDWt5htkDNO6WK9TPC5V1Sfg=\nR:2.snapshot.json\na:0:0:444\nZ:Q1QbzqdtthtQ4Ekl2Uz1TEajN75vI=\nR:2.targets.json\na:0:0:444\nZ:Q1/r5VSzS3Jnq4gkJQwZxkqhVc12c=\nR:2.timestamp.json\na:0:0:444\nZ:Q1j2MhUbdP1s1lltPlbg1ANnztqQE=\nR:root.json\na:0:0:444\nZ:Q1islNDWt5htkDNO6WK9TPC5V1Sfg=\nR:snapshot.json\na:0:0:444\nZ:Q1QbzqdtthtQ4Ekl2Uz1TEajN75vI=\nR:targets.json\na:0:0:444\nZ:Q1/r5VSzS3Jnq4gkJQwZxkqhVc12c=\nR:timestamp.json\na:0:0:444\nZ:Q1j2MhUbdP1s1lltPlbg1ANnztqQE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yF/q6kbbWsJLQ7iXAISLFF5kXAU=\nR:1.snapshot.json\na:0:0:444\nZ:Q1RcUrMA3U6v61QP05/BGxQqra2GI=\nR:1.targets.json\na:0:0:444\nZ:Q1B0Si5R1WSzox1r7fCU+EDKZhEs8=\nR:1.timestamp.json\na:0:0:444\nZ:Q1PsjhaAW2O+9GiDmYBGRef3c2+2I=\nR:2.root.json\na:0:0:444\nZ:Q1islNDWt5htkDNO6WK9TPC5V1Sfg=\nR:2.snapshot.json\na:0:0:444\nZ:Q1QbzqdtthtQ4Ekl2Uz1TEajN75vI=\nR:2.targets.json\na:0:0:444\nZ:Q1/r5VSzS3Jnq4gkJQwZxkqhVc12c=\nR:2.timestamp.json\na:0:0:444\nZ:Q1j2MhUbdP1s1lltPlbg1ANnztqQE=\nR:root.json\na:0:0:444\nZ:Q1islNDWt5htkDNO6WK9TPC5V1Sfg=\nR:snapshot.json\na:0:0:444\nZ:Q1QbzqdtthtQ4Ekl2Uz1TEajN75vI=\nR:targets.json\na:0:0:444\nZ:Q1/r5VSzS3Jnq4gkJQwZxkqhVc12c=\nR:timestamp.json\na:0:0:444\nZ:Q1j2MhUbdP1s1lltPlbg1ANnztqQE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1gaRlYlKGCBGIRBqzYP8h3UK5enM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1FurgIRgli9nGYuZROoP0NTrhCBw=\nR:2.timestamp.json\na:0:0:444\nZ:Q13bxTm2FgkzyyWmI8ZN+Hz87xSrE=\nR:root.json\na:0:0:444\nZ:Q1FurgIRgli9nGYuZROoP0NTrhCBw=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q13bxTm2FgkzyyWmI8ZN+Hz87xSrE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1FurgIRgli9nGYuZROoP0NTrhCBw=\nR:2.timestamp.json\na:0:0:444\nZ:Q13bxTm2FgkzyyWmI8ZN+Hz87xSrE=\nR:root.json\na:0:0:444\nZ:Q1FurgIRgli9nGYuZROoP0NTrhCBw=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q13bxTm2FgkzyyWmI8ZN+Hz87xSrE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q17St0dsH50Mo8nh/yg5/ocNzT+/k=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1zh+sRYwM5DNNNK7aqQ58ZSGIkIw=\nR:root.json\na:0:0:444\nZ:Q1zh+sRYwM5DNNNK7aqQ58ZSGIkIw=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ZvcKgPc46k4ldavJ+ajIiK3eTLk=\nR:1.snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:1.targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:1.timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nR:2.root.json\na:0:0:444\nZ:Q1eJTWmXrSUxnxyZ3uNsFxJP/WL2w=\nR:3.root.json\na:0:0:444\nZ:Q1zh+sRYwM5DNNNK7aqQ58ZSGIkIw=\nR:root.json\na:0:0:444\nZ:Q1zh+sRYwM5DNNNK7aqQ58ZSGIkIw=\nR:snapshot.json\na:0:0:444\nZ:Q1hCxRNqEQG9w2pkjrDYRuEOOzfsw=\nR:targets.json\na:0:0:444\nZ:Q1W+Dc2oBZ/Y52fAL59CQqejcI9xg=\nR:timestamp.json\na:0:0:444\nZ:Q1mRxvN1iX+iFVNPg7F9J6m8EcphI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1MUITI6YDxE1DRWOKs17AF82YwW8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1xntgOxNLtr+cXy2ima9R15YWcjg=\nR:3.root.json\na:0:0:444\nZ:Q1rwlzqdn7TtIPsJIXAJwni5Brddw=\nR:root.json\na:0:0:444\nZ:Q1rwlzqdn7TtIPsJIXAJwni5Brddw=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q17HixluWjMWboGSa5kP8OeCOdAHk=\nR:1.snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:1.targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:1.timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nR:2.root.json\na:0:0:444\nZ:Q1xntgOxNLtr+cXy2ima9R15YWcjg=\nR:3.root.json\na:0:0:444\nZ:Q1rwlzqdn7TtIPsJIXAJwni5Brddw=\nR:root.json\na:0:0:444\nZ:Q1rwlzqdn7TtIPsJIXAJwni5Brddw=\nR:snapshot.json\na:0:0:444\nZ:Q18RDL7whjn6f6sMnFbjZ+0JNOhIE=\nR:targets.json\na:0:0:444\nZ:Q15WR+j62TsFNKStBlHAsyps61Lus=\nR:timestamp.json\na:0:0:444\nZ:Q1NmcCoK+DoEDKubDbseyTLzZ4btc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1Vf4jNfAw3tnpNB2DgCXXmFft7rw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:3.root.json\na:0:0:444\nZ:Q17KMecVHeT0JSEiLFQFWkcxRMBiA=\nR:root.json\na:0:0:444\nZ:Q17KMecVHeT0JSEiLFQFWkcxRMBiA=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:3.root.json\na:0:0:444\nZ:Q17KMecVHeT0JSEiLFQFWkcxRMBiA=\nR:root.json\na:0:0:444\nZ:Q17KMecVHeT0JSEiLFQFWkcxRMBiA=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1ePp/NwS7gqkmEDm+YFaw100llCo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:3.root.json\na:0:0:444\nZ:Q1EwpJ8nLRtmAWsSbzbX+4uvOaKVw=\nR:root.json\na:0:0:444\nZ:Q1EwpJ8nLRtmAWsSbzbX+4uvOaKVw=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1+HaPDr0O2c7uZbIRL0b6/URFqFE=\nR:1.snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:1.targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nR:2.root.json\na:0:0:444\nZ:Q1nN9FmNAUjwjeDRIg8RCwEfcbjDo=\nR:3.root.json\na:0:0:444\nZ:Q1EwpJ8nLRtmAWsSbzbX+4uvOaKVw=\nR:root.json\na:0:0:444\nZ:Q1EwpJ8nLRtmAWsSbzbX+4uvOaKVw=\nR:snapshot.json\na:0:0:444\nZ:Q1NkUJ0ZVWhpJ1+InROJty9Uuz5JI=\nR:targets.json\na:0:0:444\nZ:Q1yCxf9IoaSMb8e0EKhzdam6dMqkU=\nR:timestamp.json\na:0:0:444\nZ:Q1/pp65P5iOvZLphoafQ3ShfsQZHQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1GnX7JpGFzoDujbXuZeZhVXUvS7g=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:2.root.json\na:0:0:444\nZ:Q1iPdfUOo6pJTfmh8T2c/HuxQKx1Q=\nR:root.json\na:0:0:444\nZ:Q1iPdfUOo6pJTfmh8T2c/HuxQKx1Q=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:2.root.json\na:0:0:444\nZ:Q1iPdfUOo6pJTfmh8T2c/HuxQKx1Q=\nR:root.json\na:0:0:444\nZ:Q1iPdfUOo6pJTfmh8T2c/HuxQKx1Q=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1zeDYHkg8Ks4lK+TYHwj8h03XDyk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:2.root.json\na:0:0:444\nZ:Q1YPPZW9/JZzpjjUBx0dg2Noo/bWk=\nR:2.snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:root.json\na:0:0:444\nZ:Q1YPPZW9/JZzpjjUBx0dg2Noo/bWk=\nR:snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:2.root.json\na:0:0:444\nZ:Q1YPPZW9/JZzpjjUBx0dg2Noo/bWk=\nR:2.snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:root.json\na:0:0:444\nZ:Q1YPPZW9/JZzpjjUBx0dg2Noo/bWk=\nR:snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q19hO8u3sjerM7E9cf6RXtZo5UYVY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:1.timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nR:root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:1.timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nR:root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:1.timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nR:2.root.json\na:0:0:444\nZ:Q1piFSilP5PPBxxngvDlVENunfPMI=\nR:2.targets.json\na:0:0:444\nZ:Q1OUHq/D5+bKYS5MclrgcSLK0qwWw=\nR:root.json\na:0:0:444\nZ:Q1piFSilP5PPBxxngvDlVENunfPMI=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1OUHq/D5+bKYS5MclrgcSLK0qwWw=\nR:timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1e/SDiX8xF3QqhHiNSXO1nzKNKWQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q16e09m+gLpXCZZG4X+/yVsddFfmc=\nR:1.timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nR:2.root.json\na:0:0:444\nZ:Q1piFSilP5PPBxxngvDlVENunfPMI=\nR:2.targets.json\na:0:0:444\nZ:Q1OUHq/D5+bKYS5MclrgcSLK0qwWw=\nR:root.json\na:0:0:444\nZ:Q1piFSilP5PPBxxngvDlVENunfPMI=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1OUHq/D5+bKYS5MclrgcSLK0qwWw=\nR:timestamp.json\na:0:0:444\nZ:Q1w0+pfB01RMVm56bhMIPm65/NUqo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1DkQwIGiuDtt/kcUuUGM4EXlNO/I=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:1.snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:1.targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:1.timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nR:root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:1.snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:1.targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:1.timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nR:root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:1.snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:1.targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:1.timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nR:2.root.json\na:0:0:444\nZ:Q1W5aNE4OucGfnIC1nO7MCt82eWaE=\nR:2.timestamp.json\na:0:0:444\nZ:Q1CIVrpfu0BR7fG1TVNsUKY/1fUiU=\nR:root.json\na:0:0:444\nZ:Q1W5aNE4OucGfnIC1nO7MCt82eWaE=\nR:snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:timestamp.json\na:0:0:444\nZ:Q1CIVrpfu0BR7fG1TVNsUKY/1fUiU=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Ia2U/hcbYjG/XZ7VdBAHeSBxV60=\nR:1.snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:1.targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:1.timestamp.json\na:0:0:444\nZ:Q181bY7a2aIaGKmP7Qh9yfnP87jcU=\nR:2.root.json\na:0:0:444\nZ:Q1W5aNE4OucGfnIC1nO7MCt82eWaE=\nR:2.timestamp.json\na:0:0:444\nZ:Q1CIVrpfu0BR7fG1TVNsUKY/1fUiU=\nR:root.json\na:0:0:444\nZ:Q1W5aNE4OucGfnIC1nO7MCt82eWaE=\nR:snapshot.json\na:0:0:444\nZ:Q1iQM0nFk29T98Q0uKX3KzwXwLVe8=\nR:targets.json\na:0:0:444\nZ:Q1Ub+R5M2nnrDlC7EKUacuv1JGGeg=\nR:timestamp.json\na:0:0:444\nZ:Q1CIVrpfu0BR7fG1TVNsUKY/1fUiU=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1+qq7BmAvIMSG9xj4QxW4ahosx98=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:2.root.json\na:0:0:444\nZ:Q1ws4U/yTg/a2iXttTU8RcZmkMK6o=\nR:root.json\na:0:0:444\nZ:Q1ws4U/yTg/a2iXttTU8RcZmkMK6o=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1GV2iEtm+2wQJlgLN0mzy66akLDI=\nR:1.snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:1.targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:1.timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nR:2.root.json\na:0:0:444\nZ:Q1ws4U/yTg/a2iXttTU8RcZmkMK6o=\nR:root.json\na:0:0:444\nZ:Q1ws4U/yTg/a2iXttTU8RcZmkMK6o=\nR:snapshot.json\na:0:0:444\nZ:Q1/Kq3nAAj8K8kg49NL1WuSC1wRV8=\nR:targets.json\na:0:0:444\nZ:Q1MLF2XfuQ5eS96epU0Z4JddgSAGw=\nR:timestamp.json\na:0:0:444\nZ:Q1viOHK7TMF/7o539MGOfRW64q2+Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1TW6eW8SimzJgt7/c4LiEuV1gNRI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:2.root.json\na:0:0:444\nZ:Q13XqM6i2GHnL164o/biK/rzd0ojA=\nR:2.snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:root.json\na:0:0:444\nZ:Q13XqM6i2GHnL164o/biK/rzd0ojA=\nR:snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1eoJuFIq67cOt9np1lcmvaI1zFio=\nR:1.snapshot.json\na:0:0:444\nZ:Q1UD+nLBxqYnZsuXIomnUaf6BBFjk=\nR:1.targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:1.timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nR:2.root.json\na:0:0:444\nZ:Q13XqM6i2GHnL164o/biK/rzd0ojA=\nR:2.snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:root.json\na:0:0:444\nZ:Q13XqM6i2GHnL164o/biK/rzd0ojA=\nR:snapshot.json\na:0:0:444\nZ:Q1wNBOOJC8cb7EMBUJZ9fvoaqS05U=\nR:targets.json\na:0:0:444\nZ:Q1LnXL4QDuQe0RD0LFVtj9jE0o5JQ=\nR:timestamp.json\na:0:0:444\nZ:Q1uIkCSxJ44oPZCF68XWVEqkE7v0E=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q16xAoVLf59hUR3k6QoIg6gwc90Qk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:1.snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:1.targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nR:root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:1.snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:1.targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nR:root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:1.snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:1.targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nR:2.root.json\na:0:0:444\nZ:Q1vXvmjfYsCKxLkcq+OxLIAb+zM2E=\nR:2.targets.json\na:0:0:444\nZ:Q198VisoiW4NHKK0JME6LOYF2Id/8=\nR:root.json\na:0:0:444\nZ:Q1vXvmjfYsCKxLkcq+OxLIAb+zM2E=\nR:snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:targets.json\na:0:0:444\nZ:Q198VisoiW4NHKK0JME6LOYF2Id/8=\nR:timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q13evqC7P4E+A9S+P6QKU3MXr73qc=\nR:1.snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:1.targets.json\na:0:0:444\nZ:Q1PHPVEBmKAiSKgGEbW+wy477rTTU=\nR:1.timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nR:2.root.json\na:0:0:444\nZ:Q1vXvmjfYsCKxLkcq+OxLIAb+zM2E=\nR:2.targets.json\na:0:0:444\nZ:Q198VisoiW4NHKK0JME6LOYF2Id/8=\nR:root.json\na:0:0:444\nZ:Q1vXvmjfYsCKxLkcq+OxLIAb+zM2E=\nR:snapshot.json\na:0:0:444\nZ:Q1dcUaikXKDDzsjymZkLTlCcW2E78=\nR:targets.json\na:0:0:444\nZ:Q198VisoiW4NHKK0JME6LOYF2Id/8=\nR:timestamp.json\na:0:0:444\nZ:Q1wTluANUX+4i9xbBBBvW1MmgUZPE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp\nM:0:0:555\nR:hash.txt\na:0:0:444\nZ:Q1p9xzL3J4/aANMCftZbIxyFn8cF0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nR:root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nR:root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nR:2.root.json\na:0:0:444\nZ:Q10P1BW2/t8qiQVZ23BgNwgIuen+s=\nR:2.timestamp.json\na:0:0:444\nZ:Q1lkaR6MFdz9i+rWpgEcTQoyaUmic=\nR:root.json\na:0:0:444\nZ:Q10P1BW2/t8qiQVZ23BgNwgIuen+s=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:timestamp.json\na:0:0:444\nZ:Q1lkaR6MFdz9i+rWpgEcTQoyaUmic=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Yi1X850mu4lK7q581FnJNmLzdpQ=\nR:1.snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:1.targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:1.timestamp.json\na:0:0:444\nZ:Q1ceAwt4eXHIaBGDLiTavtIE+xMsM=\nR:2.root.json\na:0:0:444\nZ:Q10P1BW2/t8qiQVZ23BgNwgIuen+s=\nR:2.timestamp.json\na:0:0:444\nZ:Q1lkaR6MFdz9i+rWpgEcTQoyaUmic=\nR:root.json\na:0:0:444\nZ:Q10P1BW2/t8qiQVZ23BgNwgIuen+s=\nR:snapshot.json\na:0:0:444\nZ:Q1rw/kky/1WXOgJGPV55Mqjxva42o=\nR:targets.json\na:0:0:444\nZ:Q1UOIkwFrg05BdIKk/nXgASC+BzQk=\nR:timestamp.json\na:0:0:444\nZ:Q1lkaR6MFdz9i+rWpgEcTQoyaUmic=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1N4UCv6zLv9IRajTA9nqO2bRBrZk=\nR:regenerate-metadata.sh\na:0:0:444\nZ:Q1T4aonwRoaTO+Z8kOuSVBAjb+p5U=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1dXpwz3va6GdMlxwGJLraQv3dP8Y=\nR:root.json\na:0:0:444\nZ:Q1dXpwz3va6GdMlxwGJLraQv3dP8Y=\nR:snapshot.json\na:0:0:444\nZ:Q1a79WN75DCBu/4/yZKpsVUsuwYPc=\nR:targets.json\na:0:0:444\nZ:Q1oixoLRNOk+ODZrGmkc6yZQwTqBI=\nR:timestamp.json\na:0:0:444\nZ:Q1trsv5hOaeammJ4jiueUdlGiwyIg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets\nM:0:0:555\nR:0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/1/repository\nM:0:0:555\nR:2.root.json\na:0:0:444\nZ:Q1d3Vzi0K9AAflOiPQBFF/6LXgeH4=\nR:root.json\na:0:0:444\nZ:Q1d3Vzi0K9AAflOiPQBFF/6LXgeH4=\nR:snapshot.json\na:0:0:444\nZ:Q1Z/ig9uNV0t+eV+lWmQ3g0vY5Vlo=\nR:targets.json\na:0:0:444\nZ:Q1BS0KPydrlColfCSz3+hRBl4IFxY=\nR:timestamp.json\na:0:0:444\nZ:Q1diCsp3cIrH/dFd0Lmc6PRdwOXKo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets\nM:0:0:555\nR:1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/2/repository\nM:0:0:555\nR:3.root.json\na:0:0:444\nZ:Q12f6KoW5JobJs7j7KdjGu8tbCzwE=\nR:root.json\na:0:0:444\nZ:Q12f6KoW5JobJs7j7KdjGu8tbCzwE=\nR:snapshot.json\na:0:0:444\nZ:Q14P32LYbLRHYXnFYu76gf/9x46Zk=\nR:targets.json\na:0:0:444\nZ:Q1+JO/RlG5XzPOoLMF75U9TEUF83c=\nR:timestamp.json\na:0:0:444\nZ:Q1Gfx6OLjRj+nqzQM/2lJqj3mZY/M=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets\nM:0:0:555\nR:2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/3/repository\nM:0:0:555\nR:4.root.json\na:0:0:444\nZ:Q1SrGDSxWoyC3ZPergqvxGbNpZViM=\nR:root.json\na:0:0:444\nZ:Q1SrGDSxWoyC3ZPergqvxGbNpZViM=\nR:snapshot.json\na:0:0:444\nZ:Q1pd6q4HXqrISyVHktFRaOAzlAvoc=\nR:targets.json\na:0:0:444\nZ:Q1DBkJaDI6sHHQEOCS3KnrGLNJnQM=\nR:timestamp.json\na:0:0:444\nZ:Q1W17d9ZXbp6EuUM3ZgKnV/r+/dRk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets\nM:0:0:555\nR:3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1pjLP7nExZ92XlMIxXLB4ML/mMn4=\nR:root.json\na:0:0:444\nZ:Q1pjLP7nExZ92XlMIxXLB4ML/mMn4=\nR:snapshot.json\na:0:0:444\nZ:Q1/j2x8Iw0ufZh58x4p2Vb9mPKUWE=\nR:targets.json\na:0:0:444\nZ:Q16o1bKgTHR9HB+fHVL82VHYxcS9g=\nR:timestamp.json\na:0:0:444\nZ:Q1jrKUaa/bu+qUx1OElp+JyRBcGUA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets\nM:0:0:555\nR:4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/5/repository\nM:0:0:555\nR:snapshot.json\na:0:0:444\nZ:Q19bkhvMLLugLKV5d/Z0jyrCLxJU8=\nR:targets.json\na:0:0:444\nZ:Q1M7JQ5Yn5z0i3pXnjLx5YB/voqOk=\nR:timestamp.json\na:0:0:444\nZ:Q1qySeHXKhEXVg2pTlA3dqKMRLeS0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets\nM:0:0:555\nR:5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1yNNoHGN83q03KwcEaDH0VnpBO/I=\nR:1.snapshot.json\na:0:0:444\nZ:Q1a79WN75DCBu/4/yZKpsVUsuwYPc=\nR:1.targets.json\na:0:0:444\nZ:Q1oixoLRNOk+ODZrGmkc6yZQwTqBI=\nR:root.json\na:0:0:444\nZ:Q1yNNoHGN83q03KwcEaDH0VnpBO/I=\nR:snapshot.json\na:0:0:444\nZ:Q1a79WN75DCBu/4/yZKpsVUsuwYPc=\nR:targets.json\na:0:0:444\nZ:Q1oixoLRNOk+ODZrGmkc6yZQwTqBI=\nR:timestamp.json\na:0:0:444\nZ:Q1trsv5hOaeammJ4jiueUdlGiwyIg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets\nM:0:0:555\nR:31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/1/repository\nM:0:0:555\nR:2.root.json\na:0:0:444\nZ:Q12uJceARPua861Nt9bYCznFwNKTI=\nR:2.snapshot.json\na:0:0:444\nZ:Q1Z/ig9uNV0t+eV+lWmQ3g0vY5Vlo=\nR:2.targets.json\na:0:0:444\nZ:Q1BS0KPydrlColfCSz3+hRBl4IFxY=\nR:root.json\na:0:0:444\nZ:Q12uJceARPua861Nt9bYCznFwNKTI=\nR:snapshot.json\na:0:0:444\nZ:Q1Z/ig9uNV0t+eV+lWmQ3g0vY5Vlo=\nR:targets.json\na:0:0:444\nZ:Q1BS0KPydrlColfCSz3+hRBl4IFxY=\nR:timestamp.json\na:0:0:444\nZ:Q1diCsp3cIrH/dFd0Lmc6PRdwOXKo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets\nM:0:0:555\nR:4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/2/repository\nM:0:0:555\nR:3.root.json\na:0:0:444\nZ:Q17Wu2cq4cJnHsmvHbZdXCh4UmwNg=\nR:3.snapshot.json\na:0:0:444\nZ:Q14P32LYbLRHYXnFYu76gf/9x46Zk=\nR:3.targets.json\na:0:0:444\nZ:Q1+JO/RlG5XzPOoLMF75U9TEUF83c=\nR:root.json\na:0:0:444\nZ:Q17Wu2cq4cJnHsmvHbZdXCh4UmwNg=\nR:snapshot.json\na:0:0:444\nZ:Q14P32LYbLRHYXnFYu76gf/9x46Zk=\nR:targets.json\na:0:0:444\nZ:Q1+JO/RlG5XzPOoLMF75U9TEUF83c=\nR:timestamp.json\na:0:0:444\nZ:Q1Gfx6OLjRj+nqzQM/2lJqj3mZY/M=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets\nM:0:0:555\nR:40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/3/repository\nM:0:0:555\nR:4.root.json\na:0:0:444\nZ:Q10moV1MRdrt7iBcrJ80MX2r0q3jw=\nR:4.snapshot.json\na:0:0:444\nZ:Q1pd6q4HXqrISyVHktFRaOAzlAvoc=\nR:4.targets.json\na:0:0:444\nZ:Q1DBkJaDI6sHHQEOCS3KnrGLNJnQM=\nR:root.json\na:0:0:444\nZ:Q10moV1MRdrt7iBcrJ80MX2r0q3jw=\nR:snapshot.json\na:0:0:444\nZ:Q1pd6q4HXqrISyVHktFRaOAzlAvoc=\nR:targets.json\na:0:0:444\nZ:Q1DBkJaDI6sHHQEOCS3KnrGLNJnQM=\nR:timestamp.json\na:0:0:444\nZ:Q1W17d9ZXbp6EuUM3ZgKnV/r+/dRk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets\nM:0:0:555\nR:3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1WRWRfL+2J7t3K6WyC4QgBAgiQd8=\nR:5.snapshot.json\na:0:0:444\nZ:Q1/j2x8Iw0ufZh58x4p2Vb9mPKUWE=\nR:5.targets.json\na:0:0:444\nZ:Q16o1bKgTHR9HB+fHVL82VHYxcS9g=\nR:root.json\na:0:0:444\nZ:Q1WRWRfL+2J7t3K6WyC4QgBAgiQd8=\nR:snapshot.json\na:0:0:444\nZ:Q1/j2x8Iw0ufZh58x4p2Vb9mPKUWE=\nR:targets.json\na:0:0:444\nZ:Q16o1bKgTHR9HB+fHVL82VHYxcS9g=\nR:timestamp.json\na:0:0:444\nZ:Q1jrKUaa/bu+qUx1OElp+JyRBcGUA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets\nM:0:0:555\nR:a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/5/repository\nM:0:0:555\nR:6.snapshot.json\na:0:0:444\nZ:Q19bkhvMLLugLKV5d/Z0jyrCLxJU8=\nR:6.targets.json\na:0:0:444\nZ:Q1M7JQ5Yn5z0i3pXnjLx5YB/voqOk=\nR:snapshot.json\na:0:0:444\nZ:Q19bkhvMLLugLKV5d/Z0jyrCLxJU8=\nR:targets.json\na:0:0:444\nZ:Q1M7JQ5Yn5z0i3pXnjLx5YB/voqOk=\nR:timestamp.json\na:0:0:444\nZ:Q1qySeHXKhEXVg2pTlA3dqKMRLeS0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets\nM:0:0:555\nR:06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf/generator\nM:0:0:555\nR:generator.go\na:0:0:444\nZ:Q1nIodgT4PKyFDacI5c6T2+fPChTE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q1UqLVfQr5V9K11LnUvrXJgHTeXbc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1frHX9kh0Ho/Twp+cNM9oW1tkzMM=\nR:root.json\na:0:0:444\nZ:Q1frHX9kh0Ho/Twp+cNM9oW1tkzMM=\nR:snapshot.json\na:0:0:444\nZ:Q12UdkeIe5hRwLkICYJpzj9c+A0zo=\nR:targets.json\na:0:0:444\nZ:Q1IdZOE7CHaYdUMOH6gsiqS1aVQgk=\nR:timestamp.json\na:0:0:444\nZ:Q1MwwF29Bcoi6rOq8OuBS93mVPcTc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets\nM:0:0:555\nR:0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository\nM:0:0:555\nR:2.root.json\na:0:0:444\nZ:Q1ovASTAZ2fa/PkqIIzEX9ljnfNB4=\nR:root.json\na:0:0:444\nZ:Q1ovASTAZ2fa/PkqIIzEX9ljnfNB4=\nR:snapshot.json\na:0:0:444\nZ:Q1bh6bdE/q8MWpKP4sw4nNGIv2R80=\nR:targets.json\na:0:0:444\nZ:Q1ciPmSRGzov62RuxGbxUYvRkO4u0=\nR:timestamp.json\na:0:0:444\nZ:Q1yqEAtylS1rd6Nf65GSYDGhW1Nt4=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets\nM:0:0:555\nR:1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository\nM:0:0:555\nR:3.root.json\na:0:0:444\nZ:Q1CavspauEILK9BomRBOYJ2HjZrm0=\nR:root.json\na:0:0:444\nZ:Q1CavspauEILK9BomRBOYJ2HjZrm0=\nR:snapshot.json\na:0:0:444\nZ:Q1k0fcvs4gbhD2jGUYSKa/g2UEgk0=\nR:targets.json\na:0:0:444\nZ:Q1Qj6mFS7IC8Z9hivqEnI6kpX5Eqg=\nR:timestamp.json\na:0:0:444\nZ:Q1+6EjVe4q9U89vlQw2+pCuTHj+gQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets\nM:0:0:555\nR:2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository\nM:0:0:555\nR:4.root.json\na:0:0:444\nZ:Q1jmX0DCsSTNPPuN/ExW/9LlmYszg=\nR:root.json\na:0:0:444\nZ:Q1jmX0DCsSTNPPuN/ExW/9LlmYszg=\nR:snapshot.json\na:0:0:444\nZ:Q1Xe3wRNObl8xpbpZRF+NcX8p+SH8=\nR:targets.json\na:0:0:444\nZ:Q1wGEKGtdq/ZU6CxG7MqUVMs2crmU=\nR:timestamp.json\na:0:0:444\nZ:Q17Lq35koKfOjeIkghqWqUEULQHME=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets\nM:0:0:555\nR:3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1JBZESAXLWjU2EVpFNqDqBnmfibQ=\nR:root.json\na:0:0:444\nZ:Q1JBZESAXLWjU2EVpFNqDqBnmfibQ=\nR:snapshot.json\na:0:0:444\nZ:Q1GdeGHnqBJaD/IepDMGnCnmvG/nE=\nR:targets.json\na:0:0:444\nZ:Q1K2iUg8JQWS+UuXoTCPcjk9lAo+I=\nR:timestamp.json\na:0:0:444\nZ:Q1MINmbvlYtxezKpgE1Gun/eP6rL0=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets\nM:0:0:555\nR:4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository\nM:0:0:555\nR:snapshot.json\na:0:0:444\nZ:Q1VLodlF/GGf6ZWbVZ/isPhegM8WE=\nR:targets.json\na:0:0:444\nZ:Q1k2moyPaI6WgE6KFLAJTdnmC5iKU=\nR:timestamp.json\na:0:0:444\nZ:Q1zuQodSAVBbuziem6gozn0R6o5kA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets\nM:0:0:555\nR:5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1gJqOOOZe+WHGmpnYYy1ZvKwHYPI=\nR:1.snapshot.json\na:0:0:444\nZ:Q119E/tXNGBWdJqyMdIiLw7L0j/x0=\nR:1.targets.json\na:0:0:444\nZ:Q1IdZOE7CHaYdUMOH6gsiqS1aVQgk=\nR:33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json\na:0:0:444\nZ:Q119E/tXNGBWdJqyMdIiLw7L0j/x0=\nR:6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json\na:0:0:444\nZ:Q1IdZOE7CHaYdUMOH6gsiqS1aVQgk=\nR:bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json\na:0:0:444\nZ:Q1gJqOOOZe+WHGmpnYYy1ZvKwHYPI=\nR:root.json\na:0:0:444\nZ:Q1gJqOOOZe+WHGmpnYYy1ZvKwHYPI=\nR:snapshot.json\na:0:0:444\nZ:Q119E/tXNGBWdJqyMdIiLw7L0j/x0=\nR:targets.json\na:0:0:444\nZ:Q1IdZOE7CHaYdUMOH6gsiqS1aVQgk=\nR:timestamp.json\na:0:0:444\nZ:Q10hZKjcXly9GWdmM2xhYWumJ7Tqk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets\nM:0:0:555\nR:0.0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nR:31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository\nM:0:0:555\nR:118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json\na:0:0:444\nZ:Q1ciPmSRGzov62RuxGbxUYvRkO4u0=\nR:2.root.json\na:0:0:444\nZ:Q1ORlQ3kxJ8pA7bvyHFCfttk60pDc=\nR:2.snapshot.json\na:0:0:444\nZ:Q1C3T/qZCYpshhL2dvqUrUHLKw+ac=\nR:2.targets.json\na:0:0:444\nZ:Q1ciPmSRGzov62RuxGbxUYvRkO4u0=\nR:23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json\na:0:0:444\nZ:Q1C3T/qZCYpshhL2dvqUrUHLKw+ac=\nR:93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json\na:0:0:444\nZ:Q1ORlQ3kxJ8pA7bvyHFCfttk60pDc=\nR:root.json\na:0:0:444\nZ:Q1ORlQ3kxJ8pA7bvyHFCfttk60pDc=\nR:snapshot.json\na:0:0:444\nZ:Q1C3T/qZCYpshhL2dvqUrUHLKw+ac=\nR:targets.json\na:0:0:444\nZ:Q1ciPmSRGzov62RuxGbxUYvRkO4u0=\nR:timestamp.json\na:0:0:444\nZ:Q17r2wOJdYwHNR3oiygXW9NqkyPZA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets\nM:0:0:555\nR:0.1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nR:4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository\nM:0:0:555\nR:15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json\na:0:0:444\nZ:Q1087TVBLK8UWvKMYQ72VNeO+pq9A=\nR:3.root.json\na:0:0:444\nZ:Q1Q+sBWqelmkFxdgeJTAfKwYHghfI=\nR:3.snapshot.json\na:0:0:444\nZ:Q1087TVBLK8UWvKMYQ72VNeO+pq9A=\nR:3.targets.json\na:0:0:444\nZ:Q1Qj6mFS7IC8Z9hivqEnI6kpX5Eqg=\nR:590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json\na:0:0:444\nZ:Q1Q+sBWqelmkFxdgeJTAfKwYHghfI=\nR:bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json\na:0:0:444\nZ:Q1Qj6mFS7IC8Z9hivqEnI6kpX5Eqg=\nR:root.json\na:0:0:444\nZ:Q1Q+sBWqelmkFxdgeJTAfKwYHghfI=\nR:snapshot.json\na:0:0:444\nZ:Q1087TVBLK8UWvKMYQ72VNeO+pq9A=\nR:targets.json\na:0:0:444\nZ:Q1Qj6mFS7IC8Z9hivqEnI6kpX5Eqg=\nR:timestamp.json\na:0:0:444\nZ:Q1ed7EOC1HIbBubtsumivn06OSyfw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets\nM:0:0:555\nR:0.2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nR:40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository\nM:0:0:555\nR:148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json\na:0:0:444\nZ:Q1ieg8Bd1VdC3cJCqvTDtZ9egy0lU=\nR:4.root.json\na:0:0:444\nZ:Q1kdxaGQOJJF8SXeZHjEFQRLpC7kQ=\nR:4.snapshot.json\na:0:0:444\nZ:Q1ieg8Bd1VdC3cJCqvTDtZ9egy0lU=\nR:4.targets.json\na:0:0:444\nZ:Q1wGEKGtdq/ZU6CxG7MqUVMs2crmU=\nR:765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json\na:0:0:444\nZ:Q1kdxaGQOJJF8SXeZHjEFQRLpC7kQ=\nR:7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json\na:0:0:444\nZ:Q1wGEKGtdq/ZU6CxG7MqUVMs2crmU=\nR:root.json\na:0:0:444\nZ:Q1kdxaGQOJJF8SXeZHjEFQRLpC7kQ=\nR:snapshot.json\na:0:0:444\nZ:Q1ieg8Bd1VdC3cJCqvTDtZ9egy0lU=\nR:targets.json\na:0:0:444\nZ:Q1wGEKGtdq/ZU6CxG7MqUVMs2crmU=\nR:timestamp.json\na:0:0:444\nZ:Q1eMQAbyMbGMn+5oakTZNLaaBjTUY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets\nM:0:0:555\nR:0.3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nR:3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1FQR+2ADMqFzAQTVkLeSOvv8BhIk=\nR:5.snapshot.json\na:0:0:444\nZ:Q1e0a/8CeJnrMA0ooelgBkolYh34Q=\nR:5.targets.json\na:0:0:444\nZ:Q1K2iUg8JQWS+UuXoTCPcjk9lAo+I=\nR:8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json\na:0:0:444\nZ:Q1FQR+2ADMqFzAQTVkLeSOvv8BhIk=\nR:c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json\na:0:0:444\nZ:Q1K2iUg8JQWS+UuXoTCPcjk9lAo+I=\nR:dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json\na:0:0:444\nZ:Q1e0a/8CeJnrMA0ooelgBkolYh34Q=\nR:root.json\na:0:0:444\nZ:Q1FQR+2ADMqFzAQTVkLeSOvv8BhIk=\nR:snapshot.json\na:0:0:444\nZ:Q1e0a/8CeJnrMA0ooelgBkolYh34Q=\nR:targets.json\na:0:0:444\nZ:Q1K2iUg8JQWS+UuXoTCPcjk9lAo+I=\nR:timestamp.json\na:0:0:444\nZ:Q1Zn0YSTgczDnU2Vx8MKVx5mcgwFQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets\nM:0:0:555\nR:0.4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nR:a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository\nM:0:0:555\nR:6.snapshot.json\na:0:0:444\nZ:Q1DstjZ2EPYLdSuVoMFIHuroXopZE=\nR:6.targets.json\na:0:0:444\nZ:Q1k2moyPaI6WgE6KFLAJTdnmC5iKU=\nR:63c16cc2225e77b7c94ec3b143271e02d97a1bfba828e11820392b9108412ef22f09732694673331f386b6f8a281103e20d07c21db78f487e1b046d9968173c8.snapshot.json\na:0:0:444\nZ:Q1DstjZ2EPYLdSuVoMFIHuroXopZE=\nR:8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262.targets.json\na:0:0:444\nZ:Q1k2moyPaI6WgE6KFLAJTdnmC5iKU=\nR:snapshot.json\na:0:0:444\nZ:Q1DstjZ2EPYLdSuVoMFIHuroXopZE=\nR:targets.json\na:0:0:444\nZ:Q1k2moyPaI6WgE6KFLAJTdnmC5iKU=\nR:timestamp.json\na:0:0:444\nZ:Q1MT7gwrULgI9qw6/c6j2zmF6swBs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets\nM:0:0:555\nR:0.5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nR:06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4\nM:0:0:555\nR:generate.go\na:0:0:444\nZ:Q10DJBJD5enWxumHpXQ7Kj7NcNyik=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1ILQDKexSq3RebB89L7a6xUqb3G0=\nR:root.json\na:0:0:444\nZ:Q1ILQDKexSq3RebB89L7a6xUqb3G0=\nR:snapshot.json\na:0:0:444\nZ:Q1GM/zs2sL0ipeSn62Pem/ug5yVgU=\nR:targets.json\na:0:0:444\nZ:Q1hCv8OMVLEq+xfmY+WQyI8xH3Mzo=\nR:timestamp.json\na:0:0:444\nZ:Q1Juazi5ZtX1mWZzfJwrmztQ6ZsWg=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets\nM:0:0:555\nR:0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository\nM:0:0:555\nR:2.root.json\na:0:0:444\nZ:Q1lshtVaSCsWR6ad5W2ztf/SLPbKo=\nR:root.json\na:0:0:444\nZ:Q1lshtVaSCsWR6ad5W2ztf/SLPbKo=\nR:snapshot.json\na:0:0:444\nZ:Q1yuVJNWCd/V0QIR/x3tY85nt4tIw=\nR:targets.json\na:0:0:444\nZ:Q197p0mm6swL9FERmEYCaRXZzY0mE=\nR:timestamp.json\na:0:0:444\nZ:Q1ZWyjGK+2w/TZRXYJDId3kCoAOdY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets\nM:0:0:555\nR:1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository\nM:0:0:555\nR:3.root.json\na:0:0:444\nZ:Q1L57Cx1gB7ox21xFSfLhpgdhP7Es=\nR:root.json\na:0:0:444\nZ:Q1L57Cx1gB7ox21xFSfLhpgdhP7Es=\nR:snapshot.json\na:0:0:444\nZ:Q1cE0pFRLx4KJc/jfN3WSl/uZqDTc=\nR:targets.json\na:0:0:444\nZ:Q1Vpx2ewnIUU9s63J8045wqkEwbBA=\nR:timestamp.json\na:0:0:444\nZ:Q1D8tbCxRT59Rn0fZkFSut24WacUM=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets\nM:0:0:555\nR:2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository\nM:0:0:555\nR:4.root.json\na:0:0:444\nZ:Q1RkVQAUX10GSYw6zC4a0qWcynACg=\nR:root.json\na:0:0:444\nZ:Q1RkVQAUX10GSYw6zC4a0qWcynACg=\nR:snapshot.json\na:0:0:444\nZ:Q1dWEIXOMFD6Fjez0NgiyuPknYskY=\nR:targets.json\na:0:0:444\nZ:Q1a1Ip0fBGFi+tb5ULXx9mTHuGztM=\nR:timestamp.json\na:0:0:444\nZ:Q12KepdprxnO63Y9FYYavqr178ypc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets\nM:0:0:555\nR:3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1aVOVk0UZByf6pVQpY6+47llH+M4=\nR:root.json\na:0:0:444\nZ:Q1aVOVk0UZByf6pVQpY6+47llH+M4=\nR:snapshot.json\na:0:0:444\nZ:Q1rjYEXjUSaAd6dd5J2TFcaAQioUA=\nR:targets.json\na:0:0:444\nZ:Q12A8pTSFyhXe9uI6Saj5ivQKBXDg=\nR:timestamp.json\na:0:0:444\nZ:Q1R5lDcll+4aGaw1m8HfxroAIYzAk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets\nM:0:0:555\nR:4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository\nM:0:0:555\nR:snapshot.json\na:0:0:444\nZ:Q1M2SJdUsk8m1zCeDeXTteC2qxZxU=\nR:targets.json\na:0:0:444\nZ:Q1rOMtGkKQifNnwd/YMjbNBYZ5Xk8=\nR:timestamp.json\na:0:0:444\nZ:Q1D9xIvU9B9r3s6/RbVZOG2bN80zo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets\nM:0:0:555\nR:5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Dh0ss918ugNUrjioq/jcc5avn5g=\nR:1.snapshot.json\na:0:0:444\nZ:Q1TMzOVwnf74pAkoAwMBCStKf2Sao=\nR:1.targets.json\na:0:0:444\nZ:Q1hCv8OMVLEq+xfmY+WQyI8xH3Mzo=\nR:root.json\na:0:0:444\nZ:Q1Dh0ss918ugNUrjioq/jcc5avn5g=\nR:snapshot.json\na:0:0:444\nZ:Q1TMzOVwnf74pAkoAwMBCStKf2Sao=\nR:targets.json\na:0:0:444\nZ:Q1hCv8OMVLEq+xfmY+WQyI8xH3Mzo=\nR:timestamp.json\na:0:0:444\nZ:Q1NhlDlLuU7T7W0gtgsRCJyvwkzc8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets\nM:0:0:555\nR:31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0\na:0:0:444\nZ:Q1tlifxqsNyCzxIJnRwtQKuZToQQw=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository\nM:0:0:555\nR:2.root.json\na:0:0:444\nZ:Q1Aq5nHeEmV5L+lPxO2V63Ec+Q1/U=\nR:2.snapshot.json\na:0:0:444\nZ:Q1pOxYwazrYLBqKYhELvXRQYUfpiM=\nR:2.targets.json\na:0:0:444\nZ:Q197p0mm6swL9FERmEYCaRXZzY0mE=\nR:root.json\na:0:0:444\nZ:Q1Aq5nHeEmV5L+lPxO2V63Ec+Q1/U=\nR:snapshot.json\na:0:0:444\nZ:Q1pOxYwazrYLBqKYhELvXRQYUfpiM=\nR:targets.json\na:0:0:444\nZ:Q197p0mm6swL9FERmEYCaRXZzY0mE=\nR:timestamp.json\na:0:0:444\nZ:Q1/FIO6UjRJbfnkyVqodFTmpnWV6Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets\nM:0:0:555\nR:4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1\na:0:0:444\nZ:Q1NWoZK3kTsExUV00Ywo1G5jlUKKs=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository\nM:0:0:555\nR:3.root.json\na:0:0:444\nZ:Q1qUGkm8M71O7aOlaoqEomj17oSnE=\nR:3.snapshot.json\na:0:0:444\nZ:Q17hGNA1OIP+h+7HC64Mh9/TgM2Hw=\nR:3.targets.json\na:0:0:444\nZ:Q1Vpx2ewnIUU9s63J8045wqkEwbBA=\nR:root.json\na:0:0:444\nZ:Q1qUGkm8M71O7aOlaoqEomj17oSnE=\nR:snapshot.json\na:0:0:444\nZ:Q17hGNA1OIP+h+7HC64Mh9/TgM2Hw=\nR:targets.json\na:0:0:444\nZ:Q1Vpx2ewnIUU9s63J8045wqkEwbBA=\nR:timestamp.json\na:0:0:444\nZ:Q1js0dwKOvPreuF1ncX6b/sphYe2U=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets\nM:0:0:555\nR:40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2\na:0:0:444\nZ:Q12kuSN7rMzfGcB2DKt67EqDWQELA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository\nM:0:0:555\nR:4.root.json\na:0:0:444\nZ:Q1toYKPY/m2rAulHp0b7sA4a0cC4U=\nR:4.snapshot.json\na:0:0:444\nZ:Q13EmDCN87j4dT9xIDZOFamrpy+qg=\nR:4.targets.json\na:0:0:444\nZ:Q1a1Ip0fBGFi+tb5ULXx9mTHuGztM=\nR:root.json\na:0:0:444\nZ:Q1toYKPY/m2rAulHp0b7sA4a0cC4U=\nR:snapshot.json\na:0:0:444\nZ:Q13EmDCN87j4dT9xIDZOFamrpy+qg=\nR:targets.json\na:0:0:444\nZ:Q1a1Ip0fBGFi+tb5ULXx9mTHuGztM=\nR:timestamp.json\na:0:0:444\nZ:Q1Yd7RFJFd5dDecYInshLTuVlJl04=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets\nM:0:0:555\nR:3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3\na:0:0:444\nZ:Q1d95o2uzYI7q7tY7bHI4U1xBug7s=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository\nM:0:0:555\nR:5.root.json\na:0:0:444\nZ:Q1IIvAV4TEiZSYeQJNnbdmVzfl7cM=\nR:5.snapshot.json\na:0:0:444\nZ:Q1WfGyt+5vvX1Qe0mytRCC7XLJbrA=\nR:5.targets.json\na:0:0:444\nZ:Q12A8pTSFyhXe9uI6Saj5ivQKBXDg=\nR:root.json\na:0:0:444\nZ:Q1IIvAV4TEiZSYeQJNnbdmVzfl7cM=\nR:snapshot.json\na:0:0:444\nZ:Q1WfGyt+5vvX1Qe0mytRCC7XLJbrA=\nR:targets.json\na:0:0:444\nZ:Q12A8pTSFyhXe9uI6Saj5ivQKBXDg=\nR:timestamp.json\na:0:0:444\nZ:Q1zsfwX07gGLinAgAzGyx131MBG/c=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets\nM:0:0:555\nR:a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4\na:0:0:444\nZ:Q1G2RTiSRzpGfQc3LUXrBavCAxZHo=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository\nM:0:0:555\nR:6.snapshot.json\na:0:0:444\nZ:Q1h8jOBHS/8/bxDjl5ZSiV/gHyBRs=\nR:6.targets.json\na:0:0:444\nZ:Q1rOMtGkKQifNnwd/YMjbNBYZ5Xk8=\nR:snapshot.json\na:0:0:444\nZ:Q1h8jOBHS/8/bxDjl5ZSiV/gHyBRs=\nR:targets.json\na:0:0:444\nZ:Q1rOMtGkKQifNnwd/YMjbNBYZ5Xk8=\nR:timestamp.json\na:0:0:444\nZ:Q1sgOcFN16gYFPm98S3zqUPNQdM50=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets\nM:0:0:555\nR:06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5\na:0:0:444\nZ:Q1rDR41po8gfpi5g9cNpYWWk5easQ=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation\nM:0:0:555\nR:__init__.py\na:0:0:444\nZ:Q1S8ykusbvo5G7mo11GPPOGVrHx54=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Z6wafcLObVOiGceADk4Y3AEFV7c=\nR:1.snapshot.json\na:0:0:444\nZ:Q1lmIlietCef9sRya1paxCcqe2Zng=\nR:1.targets.json\na:0:0:444\nZ:Q1+V68Q07+W+0ZhIl4NhlciSwTV6w=\nR:1.timestamp.json\na:0:0:444\nZ:Q113fWr+FHDBNch0iRWuc6mkREsHE=\nR:root.json\na:0:0:444\nZ:Q1Z6wafcLObVOiGceADk4Y3AEFV7c=\nR:snapshot.json\na:0:0:444\nZ:Q1lmIlietCef9sRya1paxCcqe2Zng=\nR:targets.json\na:0:0:444\nZ:Q1+V68Q07+W+0ZhIl4NhlciSwTV6w=\nR:timestamp.json\na:0:0:444\nZ:Q113fWr+FHDBNch0iRWuc6mkREsHE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous\nM:0:0:555\nR:1.root.json\na:0:0:444\nZ:Q1Z6wafcLObVOiGceADk4Y3AEFV7c=\nR:1.snapshot.json\na:0:0:444\nZ:Q1lmIlietCef9sRya1paxCcqe2Zng=\nR:1.targets.json\na:0:0:444\nZ:Q1+V68Q07+W+0ZhIl4NhlciSwTV6w=\nR:1.timestamp.json\na:0:0:444\nZ:Q113fWr+FHDBNch0iRWuc6mkREsHE=\nR:root.json\na:0:0:444\nZ:Q1Z6wafcLObVOiGceADk4Y3AEFV7c=\nR:snapshot.json\na:0:0:444\nZ:Q1lmIlietCef9sRya1paxCcqe2Zng=\nR:targets.json\na:0:0:444\nZ:Q1+V68Q07+W+0ZhIl4NhlciSwTV6w=\nR:timestamp.json\na:0:0:444\nZ:Q113fWr+FHDBNch0iRWuc6mkREsHE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata\nM:0:0:555\nR:1.a.json\na:0:0:444\nZ:Q19dheZyNBacw/yKcZkrIThrvgHFM=\nR:1.b.json\na:0:0:444\nZ:Q15VrBPJMOMMalHEAEL7LTr1rKF2M=\nR:1.c.json\na:0:0:444\nZ:Q1mgZJjQmj15VWEPEG8Pfybe+aGBQ=\nR:1.d.json\na:0:0:444\nZ:Q1UqLnhCMPGtPMdTWfiWQ4Kw5rh10=\nR:1.e.json\na:0:0:444\nZ:Q18DeXRbexT8WWOlzQYHucnCKqpwU=\nR:1.f.json\na:0:0:444\nZ:Q1182KTHQ+NDYlNvM419QRRQcnXJo=\nR:1.root.json\na:0:0:444\nZ:Q1Z6wafcLObVOiGceADk4Y3AEFV7c=\nR:1.snapshot.json\na:0:0:444\nZ:Q1lmIlietCef9sRya1paxCcqe2Zng=\nR:1.targets.json\na:0:0:444\nZ:Q1+V68Q07+W+0ZhIl4NhlciSwTV6w=\nR:1.timestamp.json\na:0:0:444\nZ:Q113fWr+FHDBNch0iRWuc6mkREsHE=\nR:2.root.json\na:0:0:444\nZ:Q1lRFG2LMryuGUUSs4EM081biZxC8=\nR:2.snapshot.json\na:0:0:444\nZ:Q15LLw1H6ZSP1ypcAot/79VEBjf9A=\nR:2.targets.json\na:0:0:444\nZ:Q1HKGj+K2cLxL/hZ5+w8y4iDpDdIc=\nR:2.timestamp.json\na:0:0:444\nZ:Q1TLoOXBIb2IBD0yYcuEbwqKXMfUU=\nR:a.json\na:0:0:444\nZ:Q19dheZyNBacw/yKcZkrIThrvgHFM=\nR:b.json\na:0:0:444\nZ:Q15VrBPJMOMMalHEAEL7LTr1rKF2M=\nR:c.json\na:0:0:444\nZ:Q1mgZJjQmj15VWEPEG8Pfybe+aGBQ=\nR:d.json\na:0:0:444\nZ:Q1UqLnhCMPGtPMdTWfiWQ4Kw5rh10=\nR:e.json\na:0:0:444\nZ:Q18DeXRbexT8WWOlzQYHucnCKqpwU=\nR:f.json\na:0:0:444\nZ:Q1182KTHQ+NDYlNvM419QRRQcnXJo=\nR:root.json\na:0:0:444\nZ:Q1lRFG2LMryuGUUSs4EM081biZxC8=\nR:snapshot.json\na:0:0:444\nZ:Q15LLw1H6ZSP1ypcAot/79VEBjf9A=\nR:targets.json\na:0:0:444\nZ:Q1HKGj+K2cLxL/hZ5+w8y4iDpDdIc=\nR:timestamp.json\na:0:0:444\nZ:Q1TLoOXBIb2IBD0yYcuEbwqKXMfUU=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets\nM:0:0:555\nR:027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86.e.txt\na:0:0:444\nZ:Q11K0sp2GKy/3vYEDTMLFzEDPHkcQ=\nR:0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt\na:0:0:444\nZ:Q1zPr7iiqgMcOUDvYCQb3OwE0DoRk=\nR:3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt\na:0:0:444\nZ:Q1v9iOKgym4Er0dCb2TC5qCl+eO28=\nR:6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt\na:0:0:444\nZ:Q1zPr7iiqgMcOUDvYCQb3OwE0DoRk=\nR:79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589.d.txt\na:0:0:444\nZ:Q1Q50MGZaBAroIrInCTqkBWgJ4wCs=\nR:946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt\na:0:0:444\nZ:Q1rHH4XawgNEsiswla5Bv3VuW9ciM=\nR:949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt\na:0:0:444\nZ:Q1ph+S0QGi5QDoK7VD/A7q+oh9imo=\nR:a.txt\na:0:0:444\nZ:Q1v9iOKgym4Er0dCb2TC5qCl+eO28=\nR:b.txt\na:0:0:444\nZ:Q1ph+S0QGi5QDoK7VD/A7q+oh9imo=\nR:b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55.d.txt\na:0:0:444\nZ:Q1Q50MGZaBAroIrInCTqkBWgJ4wCs=\nR:b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207.f.txt\na:0:0:444\nZ:Q1QejjBpTeUDR76j21/cLpshyMN80=\nR:c.txt\na:0:0:444\nZ:Q1rHH4XawgNEsiswla5Bv3VuW9ciM=\nR:d.txt\na:0:0:444\nZ:Q1Q50MGZaBAroIrInCTqkBWgJ4wCs=\nR:ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt\na:0:0:444\nZ:Q1rHH4XawgNEsiswla5Bv3VuW9ciM=\nR:e.txt\na:0:0:444\nZ:Q11K0sp2GKy/3vYEDTMLFzEDPHkcQ=\nR:f.txt\na:0:0:444\nZ:Q1QejjBpTeUDR76j21/cLpshyMN80=\nR:f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e.f.txt\na:0:0:444\nZ:Q1QejjBpTeUDR76j21/cLpshyMN80=\nR:f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt\na:0:0:444\nZ:Q1v9iOKgym4Er0dCb2TC5qCl+eO28=\nR:f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt\na:0:0:444\nZ:Q1ph+S0QGi5QDoK7VD/A7q+oh9imo=\nR:ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6.e.txt\na:0:0:444\nZ:Q11K0sp2GKy/3vYEDTMLFzEDPHkcQ=\nR:targets.txt\na:0:0:444\nZ:Q1zPr7iiqgMcOUDvYCQb3OwE0DoRk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/client/testdata/tools\nM:0:0:555\nR:gen-keys.go\na:0:0:444\nZ:Q1pNE+YjnZ1ZrkRYAbAtfc+Ujh03g=\nR:linkify-metadata.go\na:0:0:444\nZ:Q1pzlYi7W4bPjfH7hgdqn4UQvotRc=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/cmd/tuf\nM:0:0:555\nR:add.go\na:0:0:444\nZ:Q183cKAWZJSGtu+c9E2Z6b8KPIqw4=\nR:add_signatures.go\na:0:0:444\nZ:Q1c952z64qi5x+YucBhKobOyushFs=\nR:change_passphrase.go\na:0:0:444\nZ:Q1ZCtH2sbY3o2ZvLdRIJ1c0vHXo18=\nR:clean.go\na:0:0:444\nZ:Q1VezGQ0pe+/mcPoQYfjW6Q23KxI8=\nR:commit.go\na:0:0:444\nZ:Q1f4cqZz6dvGZNSImajALdLtuuLvQ=\nR:gen_key.go\na:0:0:444\nZ:Q1sn+ZgC2sReEkgTjg3FEzyNXQHbc=\nR:get_threshold.go\na:0:0:444\nZ:Q1Ag8RYD9cN37q7TG+e/EDEqQM/1s=\nR:init.go\na:0:0:444\nZ:Q1rpgh+oNv87SFOX0NQFeOW/ZJ4Cc=\nR:main.go\na:0:0:444\nZ:Q1RTubq3evg645S9ZnWwjUQ77GhpE=\nR:payload.go\na:0:0:444\nZ:Q184ZMVC1y52r8MKx0lsjS+tXfbpI=\nR:regenerate.go\na:0:0:444\nZ:Q1YIr0TzMJE7eET5L0yB86NbmoINM=\nR:remove.go\na:0:0:444\nZ:Q1UpLNH6qJ9Zj5tFO0X5qq+tKQwUI=\nR:revoke_key.go\na:0:0:444\nZ:Q1Qkj7ZXpYAQ7SvuUihljq/ozmJcU=\nR:root_keys.go\na:0:0:444\nZ:Q1PXr9oiXEewMacN8i52FUNaZACbo=\nR:set_threshold.go\na:0:0:444\nZ:Q1R+3a94Dk69YYoLUc3R1g1CItlW4=\nR:sign.go\na:0:0:444\nZ:Q1fa+HaPu5A2exLD2YfBn+bPRLReA=\nR:sign_payload.go\na:0:0:444\nZ:Q1N4cYccxJU2JyVCQxmWMXy0vBiPQ=\nR:snapshot.go\na:0:0:444\nZ:Q1eVCS+NfxOFj3stayrZSV+bqQgSg=\nR:status.go\na:0:0:444\nZ:Q1lPK6lVkZK4wIyLwYcYQiKlRQ6Uk=\nR:timestamp.go\na:0:0:444\nZ:Q1JICEO6xKP4CguLd/eXuo4kdqp1w=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/cmd/tuf-client\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1C3tX8SjB0tTGgwD9gHmpc4EgK6A=\nR:get.go\na:0:0:444\nZ:Q1fkOfwWyWFP+tWHUOqbbO3v69PhA=\nR:init.go\na:0:0:444\nZ:Q1h/yYHEZ4JOHvHiqFmtFNIYkeMgQ=\nR:list.go\na:0:0:444\nZ:Q1MQ6ZJMScM5mcmTQorI0Zh4I5Gaw=\nR:main.go\na:0:0:444\nZ:Q1dJPW1Sf/1KIAi0wMVzN2LniI7pE=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/data\nM:0:0:555\nR:hex_bytes.go\na:0:0:444\nZ:Q1DWsHsZZuJVGmgcJWehRcfYXPzcI=\nR:hex_bytes_test.go\na:0:0:444\nZ:Q1WipO44IbMh3pbRtltRYRFAt9KJY=\nR:types.go\na:0:0:444\nZ:Q1zgaWNf3XeBojy1c46/elP7nrkIs=\nR:types_test.go\na:0:0:444\nZ:Q1Fj1eH5WYpl4TApPhob6CzIZy3wk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/docs\nM:0:0:555\nR:ALUMNI\na:0:0:444\nZ:Q1k1SFubR4uy6zy0TJ0j+dbvGLj6c=\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q1bYuwjbLaD1qLMZwLiwfc7HX240c=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1Adr41+X3LWCuk7XOEb8s0UgyyVU=\nR:MAINTAINERS\na:0:0:444\nZ:Q1adEKmTijtca6Nr4rk3eLy/BVHQk=\nR:MAINTAINERS.md\na:0:0:444\nZ:Q1i0NMpWzppkblWxXDkRsaAAhbQQc=\nR:TESTING.md\na:0:0:444\nZ:Q1OotLCSrutwEViZpyBT+wFwqkVG4=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/encrypted\nM:0:0:555\nR:encrypted.go\na:0:0:444\nZ:Q1UT6T3ypkiQgdvEB4AoWaS55sarE=\nR:encrypted_test.go\na:0:0:444\nZ:Q1U8md9nL03tMQQOJ7M/WrWK01iXI=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/internal\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/internal/fsutil\nM:0:0:555\nR:fsutil.go\na:0:0:444\nZ:Q1ikSQoYGR7ZUWa0xehrpzSuZdlFU=\nR:perm.go\na:0:0:444\nZ:Q1Q4TdMUmp2uvZbOUn2lbNsrgE6iE=\nR:perm_test.go\na:0:0:444\nZ:Q15pVQgeKKRSC/eNhjzwWW58kCT2Q=\nR:perm_windows.go\na:0:0:444\nZ:Q1o+gvuNtkN56GGdhU2pixW+kQf5Q=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/internal/roles\nM:0:0:555\nR:roles.go\na:0:0:444\nZ:Q1uQfdwmoRR6F4tTrML0hM568fjcE=\nR:roles_test.go\na:0:0:444\nZ:Q1h/a6fUpeMlX5PnK6Zt3HHXTKFik=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/internal/sets\nM:0:0:555\nR:strings.go\na:0:0:444\nZ:Q1unMrRhjk/9q5NIvX8+hm9mzr/cM=\nR:strings_test.go\na:0:0:444\nZ:Q1lxfFAy0ker9j76HajCPY3xRDV20=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/internal/signer\nM:0:0:555\nR:sort.go\na:0:0:444\nZ:Q1qEZ0ept2/abBBbCD55GL/ooN24c=\nR:sort_test.go\na:0:0:444\nZ:Q1iiPwJ/VdGXZT3RZm16P/OZg+tZk=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/pkg\nM:0:0:555\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/pkg/deprecated\nM:0:0:555\nR:deprecated_repo_test.go\na:0:0:444\nZ:Q19Dw4eLDpjfbhizxAM2RPM382AGY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/pkg/deprecated/set_ecdsa\nM:0:0:555\nR:set_ecdsa.go\na:0:0:444\nZ:Q1JhhYSOhjfyyLvwxkhxJdGfwurF4=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/pkg/keys\nM:0:0:555\nR:deprecated_ecdsa.go\na:0:0:444\nZ:Q1USjE9MIoS5togIAYIunZyewlWuo=\nR:deprecated_ecdsa_test.go\na:0:0:444\nZ:Q1lHcE0CHy+fxyfm5h16u2LmJLC5Y=\nR:ecdsa.go\na:0:0:444\nZ:Q1r9D+9ME9Yt2Hgbg/2KEAMpvl8fY=\nR:ecdsa_test.go\na:0:0:444\nZ:Q1p7fyy93ROHQduEiC8qhPKwK+M8s=\nR:ed25519.go\na:0:0:444\nZ:Q1db5Xd39pBrz4sFzx7LfdeolTZes=\nR:ed25519_test.go\na:0:0:444\nZ:Q1jmphJZ8rGe75nvnGSaGV/DTwBTg=\nR:keys.go\na:0:0:444\nZ:Q1yfEL9l44A3oJ+jAYKvSdhW6Jjgw=\nR:keys_test.go\na:0:0:444\nZ:Q1feUDnDfRc3LsrI2WjXAI7lATRAc=\nR:pkix.go\na:0:0:444\nZ:Q1YT/xUN3Jno0zSw9My+KD9HaNHoI=\nR:pkix_test.go\na:0:0:444\nZ:Q1dzUaHWaiwv1ojrc8X/UtZtUr+kI=\nR:rsa.go\na:0:0:444\nZ:Q18CIw5rJZjRTaPhuY5q4LBYpSYWM=\nR:rsa_test.go\na:0:0:444\nZ:Q1MuFHSi171rsbp0e/mgBBRV1+zss=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/pkg/targets\nM:0:0:555\nR:delegation.go\na:0:0:444\nZ:Q19vxoPOHVXdMlmAew9lhKVFjHkiE=\nR:delegation_test.go\na:0:0:444\nZ:Q1iqKO78ATx1X3t7SmudYtCXrIkf4=\nR:hash_bins.go\na:0:0:444\nZ:Q1JJbTNAOgeSTU/pbCEG3iqvNkTzY=\nR:hash_bins_test.go\na:0:0:444\nZ:Q1V4uTOlYd9bgVtKzPh8BvgWb6fEA=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/sign\nM:0:0:555\nR:sign.go\na:0:0:444\nZ:Q1ws1934hF6vl5rbGE1X9aFS7tbGY=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/util\nM:0:0:555\nR:util.go\na:0:0:444\nZ:Q1qR259jmekxtfjq9G2XgVEC1D7iY=\nR:util_test.go\na:0:0:444\nZ:Q1XQl6MOqLMpMI4deeYel0TprT7J8=\nF:root/go/pkg/mod/github.com/theupdateframework/go-tuf@v0.5.2-0.20220930112810-3890c1e7ace4/verify\nM:0:0:555\nR:db.go\na:0:0:444\nZ:Q1m9dj1RwFBm/uka96O8qQUkHK+xQ=\nR:db_test.go\na:0:0:444\nZ:Q1yTCnI1eH99Imw6UaWAPNBY85ULQ=\nR:errors.go\na:0:0:444\nZ:Q1OwhgdWpyNpGt9+Rt+JN5V4ejwq4=\nR:verify.go\na:0:0:444\nZ:Q14Q+UIYC0RlC6cLjAVnKnfjHKIJo=\nR:verify_test.go\na:0:0:444\nZ:Q1xCJLVWEXfM4+Q2OyoWI8jf+EhP8=\nF:root/go/pkg/mod/github.com/titanous\nF:root/go/pkg/mod/github.com/titanous/rocacheck@v0.0.0-20171023193734-afe73141d399\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1UcjuH0pquV2XPkv4EUnMMPu8HVc=\nR:README.md\na:0:0:444\nZ:Q1ycTQEIftgg770oLm/dvUe/1l9mY=\nR:rocacheck.go\na:0:0:444\nZ:Q1w+JQ9fuQaKrTYLouZtLGwE0J3UE=\nR:rocacheck_test.go\na:0:0:444\nZ:Q1xf09e6qI8+zRKBt3t/xmR5XwW4w=\nF:root/go/pkg/mod/github.com/vbatts\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q13KwA69OhTQ4Wk1x5P9EeAUXtbPs=\nR:LICENSE\na:0:0:444\nZ:Q1QHWdue27f+MLZMwhP08gxGGOKTI=\nR:README.md\na:0:0:444\nZ:Q1p0fCBEjy7FCn9y/Zr4Gp9pzdI5A=\nR:go.mod\na:0:0:444\nZ:Q1uNaKMrGc0Ll+mLqwUJhVjMs7eJQ=\nR:go.sum\na:0:0:444\nZ:Q1nWefhwM2aEY8wj5+h6Rp8BiVNp8=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/archive\nM:0:0:555\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/archive/tar\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1ipH4oZNmqMtQfuVoR7VnaI0W/Z8=\nR:example_test.go\na:0:0:444\nZ:Q1laatkB72cj3/HULSjxlUU19V4as=\nR:format.go\na:0:0:444\nZ:Q1QhLYg/J1VAT9zhD1pJ5GWytnYUs=\nR:reader.go\na:0:0:444\nZ:Q1y2FaGWy2DLqCSdXy/Bdhe9vABQ0=\nR:reader_test.go\na:0:0:444\nZ:Q1o1rdNNAOxPKVKVizI/MclPq0Sbc=\nR:stat_actime1.go\na:0:0:444\nZ:Q1+B7EvLRXsK7LcwX5dGsDLRrAr8I=\nR:stat_actime2.go\na:0:0:444\nZ:Q1EU/cKcLIy6+Lldug7/vzpTi9OV4=\nR:stat_unix.go\na:0:0:444\nZ:Q1nIjfelv19BvmaANFuhTJ560e/EA=\nR:strconv.go\na:0:0:444\nZ:Q1Bzn56/nz+IFvtJ4ervf5q8nm4To=\nR:strconv_test.go\na:0:0:444\nZ:Q1/vZAVKTn235PVNn/VAiFjatwvxU=\nR:tar_test.go\na:0:0:444\nZ:Q1rJWwNarq9gtT0Y5gN8oa3zD4h0M=\nR:writer.go\na:0:0:444\nZ:Q1nD3BRPnst09cnYREB1L3xI7Cmyc=\nR:writer_test.go\na:0:0:444\nZ:Q1ytVp73876VtR7fPowecU0oTRDIM=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/archive/tar/testdata\nM:0:0:555\nR:file-and-dir.tar\na:0:0:444\nZ:Q134xG309wi+5VOp0rfoYXqn1Rq+A=\nR:gnu-incremental.tar\na:0:0:444\nZ:Q1npkwCPXQOsCYQ4Ei/Yaio1N3uoo=\nR:gnu-long-nul.tar\na:0:0:444\nZ:Q17C/83KbgxLGvW9BHqHEAqFh4H7A=\nR:gnu-multi-hdrs.tar\na:0:0:444\nZ:Q1570LunZHyhhjoOjqztyfBdWPONs=\nR:gnu-nil-sparse-data.tar\na:0:0:444\nZ:Q1yON39N+IVLOVAA/3x5WLrdydalk=\nR:gnu-nil-sparse-hole.tar\na:0:0:444\nZ:Q1g4lZ8ha5vC9K3ZjCr3kez1LllmM=\nR:gnu-not-utf8.tar\na:0:0:444\nZ:Q1TSKRXrIE0oG+LeuxQoAsd4rVyJg=\nR:gnu-sparse-big.tar\na:0:0:444\nZ:Q1ImrnEaDkPAjtARmWX8LmyuaIDCo=\nR:gnu-utf8.tar\na:0:0:444\nZ:Q1VF0xlGuB9vYnEEVDccMFrEKXUDk=\nR:gnu.tar\na:0:0:444\nZ:Q1qa0VGPhvqD/D+n/vPPyTVXLXK3E=\nR:hardlink.tar\na:0:0:444\nZ:Q1cJs6k3J70N+hIrYX3l6kmS0WTMQ=\nR:hdr-only.tar\na:0:0:444\nZ:Q1i0GOMYzOQXCCLOJTTD+YDB1t3qg=\nR:invalid-go17.tar\na:0:0:444\nZ:Q1SZbNWeihWpVVnu81Bm9S3rIOeMo=\nR:issue10968.tar\na:0:0:444\nZ:Q1LOw4Mu6lf39B2EIMo5BkcWp7nJw=\nR:issue11169.tar\na:0:0:444\nZ:Q17JxFRjP1YlXNjI15JPsDKuFitiA=\nR:issue12435.tar\na:0:0:444\nZ:Q1wvpInvcB+6//Y1oTzKEPiPluW/w=\nR:neg-size.tar\na:0:0:444\nZ:Q1l/wEr+ra0KFObO5QhGwA4ExpLMo=\nR:nil-uid.tar\na:0:0:444\nZ:Q1gL/l5/txbfCs01RfmK4yh6d4DUc=\nR:pax-bad-hdr-file.tar\na:0:0:444\nZ:Q1288gLIjUptWsRfxFGUMNzH8TbRc=\nR:pax-bad-mtime-file.tar\na:0:0:444\nZ:Q1KhHG+490D9ItjG0T0zP9KF6fHss=\nR:pax-global-records.tar\na:0:0:444\nZ:Q1CLHUClkVMxBBgVlYOKS6AGlX76Q=\nR:pax-multi-hdrs.tar\na:0:0:444\nZ:Q19w+N8K/yAATerT2+oNBBR9tTfKI=\nR:pax-nil-sparse-data.tar\na:0:0:444\nZ:Q1VjE8IkKS2Ubg6fLtzidkS6lutvc=\nR:pax-nil-sparse-hole.tar\na:0:0:444\nZ:Q1LcGkcxh/ZlFqCWHAs87zYbIfO08=\nR:pax-nul-path.tar\na:0:0:444\nZ:Q1IZoCM1i62DQ4KOOFBuwqKGoGPMM=\nR:pax-nul-xattrs.tar\na:0:0:444\nZ:Q1rEMLepu+S4g45yFAr8/Rlrp4arA=\nR:pax-path-hdr.tar\na:0:0:444\nZ:Q1yEOhufpDPICPtm1q1mvYi0gIc2M=\nR:pax-pos-size-file.tar\na:0:0:444\nZ:Q1vH4Y5Kl+20W2v/wMXMoZrtWBGBE=\nR:pax-records.tar\na:0:0:444\nZ:Q1m1aaqjcxw4Rs9Ls63RuzIN+zXtU=\nR:pax-sparse-big.tar\na:0:0:444\nZ:Q13pPUm1oHO5+TUelOmX8t5GwZi40=\nR:pax.tar\na:0:0:444\nZ:Q1hQF8I66DE5DyLKZj55fs6NYJql8=\nR:small.txt\na:0:0:444\nZ:Q1aDDWxvzHw3WNjLXRonc5zN5/fa0=\nR:small2.txt\na:0:0:444\nZ:Q1xuq6Kr3cOcvmYUT2ZsCJ2BR363s=\nR:sparse-formats.tar\na:0:0:444\nZ:Q1NALBwxrNHeO7OrOHdo1uWQniMTM=\nR:star.tar\na:0:0:444\nZ:Q1ZPovxX14an9YmvRCJcUXEnXjwXo=\nR:trailing-slash.tar\na:0:0:444\nZ:Q1bSrLJYDiZmeC2vI9WQZqRBKfK/Y=\nR:ustar-file-devs.tar\na:0:0:444\nZ:Q1NmrtsqoTwOH/jnvbAzB8KhgVtgc=\nR:ustar-file-reg.tar\na:0:0:444\nZ:Q19L3dUAAxDz3uGL83jEyPG86Axr4=\nR:ustar.tar\na:0:0:444\nZ:Q1dcdcP3S9cyt6xvBllVuzI7DM7G4=\nR:v7.tar\na:0:0:444\nZ:Q13QMc7eNiSVI4+3nu9galTF0toCs=\nR:writer-big-long.tar\na:0:0:444\nZ:Q1tQmINOgshMgSRopsbDSsuEadfPY=\nR:writer-big.tar\na:0:0:444\nZ:Q1sHFVBPok3CX9y3a2bTTvADyXgIY=\nR:writer.tar\na:0:0:444\nZ:Q1O6lh6Qp7ZJfIItMwt2T4g+av3pM=\nR:xattrs.tar\na:0:0:444\nZ:Q1fE8Y5ctDolGtRWBSrifJ7lfR/lQ=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/cmd\nM:0:0:555\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/cmd/tar-split\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1jbcyAm6r/7hI40wjQ5otUm9Yt3I=\nR:asm.go\na:0:0:444\nZ:Q1xsRMEinB9yMvdK0vhFRdlQ8Fv4U=\nR:checksize.go\na:0:0:444\nZ:Q1zPTHW25XrEOQqcQrYPG+ZM5d/Wg=\nR:disasm.go\na:0:0:444\nZ:Q1NaZRtt6cJMuWdCYPBXqpiItz52c=\nR:main.go\na:0:0:444\nZ:Q1eG1saIRMtQjPRmKselNYRU+U8aY=\nR:tar_benchmark_test.go\na:0:0:444\nZ:Q1c7pbSsVUo5nMFfyYwZ2544dbeiU=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/concept\nM:0:0:555\nR:DESIGN.md\na:0:0:444\nZ:Q1GX46PTvV8Wzosa24aBZLPVzKMT8=\nR:main.go\na:0:0:444\nZ:Q1NlTAQjO+s2BTNfdOWns8JaBKZ/0=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/tar\nM:0:0:555\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/tar/asm\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1qAVpZXlCFpgZy3RlB6XLV3/aiPc=\nR:assemble.go\na:0:0:444\nZ:Q1RcfqpymudwtFA38cK7LlGW+xf0Y=\nR:assemble_test.go\na:0:0:444\nZ:Q1p0Nc4TPiInZmjOGR9z8K9psb+EE=\nR:disassemble.go\na:0:0:444\nZ:Q1tiEzIQj/NUKdXHLRViHKJj4Z58U=\nR:disassemble_test.go\na:0:0:444\nZ:Q1gPBHC0DvjtzcWLTQtQ+UZWef1zQ=\nR:doc.go\na:0:0:444\nZ:Q1Ch8B9H9KnxTi3CNemhLEE0ZD7eg=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/tar/asm/testdata\nM:0:0:555\nR:extranils.tar.gz\na:0:0:444\nZ:Q1+VTsFP12lWuhyFiPy9Zw/rVHcFo=\nR:fatlonglink.tar.gz\na:0:0:444\nZ:Q1leU5M95byXXeDbNcLsWiLHrYDF4=\nR:iso-8859.tar.gz\na:0:0:444\nZ:Q1x08OCz6c6oUXnf0pePRLNCfvx/M=\nR:longlink.tar.gz\na:0:0:444\nZ:Q1fXcV10bjVxVgOZRzkJrBVeYUUw4=\nR:notenoughnils.tar.gz\na:0:0:444\nZ:Q1G+1nlrZKNfHn9lFOfcORN09Aw1M=\nR:t.tar.gz\na:0:0:444\nZ:Q1G6C3wvOCNvxN6NfNJ1OxUswzNeQ=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/tar/storage\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1PvbFcfh4ja+O6piJ3T5Bh2m3Y4I=\nR:entry.go\na:0:0:444\nZ:Q1ADPNpV4Kw7r8fJjwHnr8DJkLluw=\nR:entry_test.go\na:0:0:444\nZ:Q1k34orZ4ZEaTQKFIpUC36JFfFCb4=\nR:getter.go\na:0:0:444\nZ:Q1RLdrcFJm8uxphCLHoqxL6yGpIeE=\nR:getter_test.go\na:0:0:444\nZ:Q1PtUAcI/K8DDg8DpJfDZeBdwEriU=\nR:packer.go\na:0:0:444\nZ:Q1ExMnxf8GexFM5PhWoRsN7HATUbw=\nR:packer_test.go\na:0:0:444\nZ:Q1lKWzD2+n3P5aeehOsAtXW6lLSho=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q1NNMBxiBmsMDo6Qm/OHDsbZHDToA=\nF:root/go/pkg/mod/github.com/vbatts/tar-split@v0.11.2/version\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q1TznwDkyoFXeVoIB4u38xm9bFnJE=\nR:version.go\na:0:0:444\nZ:Q1IWkeIsLAWMR16cRgi1Hp+8PBTfo=\nF:root/go/pkg/mod/github.com/xanzy\nF:root/go/pkg/mod/github.com/xanzy/ssh-agent@v0.3.2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q12abSrn4q3YgXnkKfeH5qWyx7ETM=\nR:LICENSE\na:0:0:444\nZ:Q1ZpoeU7ndnfNHQwDT2Vm7hbrXWUU=\nR:README.md\na:0:0:444\nZ:Q1+RxpuuvseNq1Qc2XIychsDt7MJI=\nR:go.mod\na:0:0:444\nZ:Q1H3LtTWLgfe5ms2/lEJgWtLT8EfM=\nR:go.sum\na:0:0:444\nZ:Q16iXRLsnmswKMdGgHAkmbmlVdB/s=\nR:pageant_windows.go\na:0:0:444\nZ:Q1cHHJXm3vpB8nyd6FM9FqGOKqCjA=\nR:sshagent.go\na:0:0:444\nZ:Q1zAbrYneLNw6r29zQzWp5qWzzQ7I=\nR:sshagent_windows.go\na:0:0:444\nZ:Q1C4kptuqztkhP9FRL5PL1DOtKsFk=\nF:root/go/pkg/mod/github.com/zealic\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1y8yC6afSmS1WwH8EvaN8V3TsEf8=\nR:LICENSE.txt\na:0:0:444\nZ:Q1HLwXW+/fxpz6MA13eMhdhCafxNo=\nR:Makefile\na:0:0:444\nZ:Q18Ro1yv2B84GoeziiO/+sQHllKOU=\nR:README.md\na:0:0:444\nZ:Q1OmM2GyQTidXzGRxUeRLTmlSNxHY=\nR:go.mod\na:0:0:444\nZ:Q1NrhgMPdLuPfpBsExdV56Ax0XwJ8=\nR:go.sum\na:0:0:444\nZ:Q1BNTRYQ3KtvqfMovDyTg/4BGeHDA=\nR:ignorefile.go\na:0:0:444\nZ:Q1JdbxXPjx7sDq99uUZ7nZVbSXTbc=\nR:matcher.go\na:0:0:444\nZ:Q14AqUw+EiolUNJHIC4U0Q27MxPig=\nR:matcher_test.go\na:0:0:444\nZ:Q1cPmvfixkMXjdQ16Aoa2jjaTg7Nc=\nR:pattern.go\na:0:0:444\nZ:Q1c8gm+1ju7c+Zq3Ak2W7hm8cukVU=\nR:statemap.go\na:0:0:444\nZ:Q1JWz6RIp319e+ESY0aGl/zsql8WQ=\nR:xignore.go\na:0:0:444\nZ:Q1hViNWI2Id9Cbb1uf0TP4GyxgWGM=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata\nM:0:0:555\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/bothname\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q12cbtjw/sJ3Q91jaGwnsqP4SX+qE=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/bothname/foo\nM:0:0:555\nR:loss.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/bothname/loss.txt\nM:0:0:555\nR:1.log\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:2.log\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/byname\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1OFe2ckcYYuq0JuugYi5EvSztvV0=\nR:hello.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/byname/aa\nM:0:0:555\nR:hello.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/byname/aa/a1\nM:0:0:555\nR:hello.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/byname/aa/a1/a2\nM:0:0:555\nR:hello.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/byname/bb\nM:0:0:555\nR:hello.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/exclusion\nM:0:0:555\nR:!\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:.xignore\na:0:0:444\nZ:Q1TBa7Fv0esQFRlgCvf2NVEUmx1oA=\nR:e1.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:e2.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:e3.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/exclusion/en\nM:0:0:555\nR:e1.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:e2.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:e3.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/folder\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1IB0/TaF3KYiTVK16eVsOA3R73oQ=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/folder/foo\nM:0:0:555\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/folder/foo/bar\nM:0:0:555\nR:1.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/folder/foo/bar/tool\nM:0:0:555\nR:lex.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/folder/foo/tar\nM:0:0:555\nR:2.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/leadingspace\nM:0:0:555\nR:  what.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:.xignore\na:0:0:444\nZ:Q1lOKRpJB2MiPQK2b7Yah9zsOp7MA=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/leadingspace/inner\nM:0:0:555\nR:  what.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/leadingspace/inner2\nM:0:0:555\nR:  what.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/nested\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1dtsW0qVLKTBFfxtskDkocz0ppQg=\nR:1.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/nested/inner\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1CJx6lcxKkel7ADLjx5wOuVu5n/8=\nR:2.lst\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:foo.md\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/nested/inner/inner2\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1cLG9hezrN6DCRysAhtV/8owfBRo=\nR:jess.ini\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:moss.ini\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/root\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q19+uz7I6rCxEuIRV2wd/Ilx/44i0=\nR:1.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/root/sub\nM:0:0:555\nR:1.txt\na:0:0:444\nZ:Q1RSTxOCXcLeqeEDTAnu5TBrss1+Q=\nR:2.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/github.com/zealic/xignore@v0.3.3/testdata/simple\nM:0:0:555\nR:.xignore\na:0:0:444\nZ:Q1g2TZFZdWbveE9PCTo2I71+CO4hE=\nR:empty.log\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:rain.txt\na:0:0:444\nZ:Q1b6HF8ft9u76S8WvyuQX+ZShfHFc=\nF:root/go/pkg/mod/gitlab.alpinelinux.org\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0\nM:0:0:555\nR:.gitlab-ci.yml\na:0:0:444\nZ:Q1vJfevAh9qDtvHsg7HxTN6MzRX2I=\nR:.golangci.yml\na:0:0:444\nZ:Q1oyCXrc2s58QPM4ojz7+41JzpuQg=\nR:LICENSE\na:0:0:444\nZ:Q1cwEVoV+HoZuudu9RaJMTaPTnEGI=\nR:README.md\na:0:0:444\nZ:Q1eOiAKqHHn3A+DST+yoClsFOTMTE=\nR:go.mod\na:0:0:444\nZ:Q1dMCODyETPEIjANXMZ9SF9BIB74Y=\nR:go.sum\na:0:0:444\nZ:Q1dKyFDueS45+vS8ohpdRwM2kiwUw=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/apkbuild\nM:0:0:555\nR:acceptance_test.go\na:0:0:444\nZ:Q1tR2CO/ZQjeAzidtItzyjNOSFhWc=\nR:apkbuild.go\na:0:0:444\nZ:Q1Vpk+GNZp25Ufqs+jhS0aShi3vpQ=\nR:apkbuild_test.go\na:0:0:444\nZ:Q1rkB82XXp0TcZTKDyxYsb4vCwWbQ=\nR:example_test.go\na:0:0:444\nZ:Q1RbC8ok9wHLEo16YJxgm5PHXAaOc=\nR:parser.go\na:0:0:444\nZ:Q1TfRKxMywo7Op5AGisYnZEjw3EVQ=\nR:parser_test.go\na:0:0:444\nZ:Q1AZhXyjbHIS2HozWAASC1KJkHqds=\nR:secfixes.go\na:0:0:444\nZ:Q1VyEy1iAwDRshBAhJ/5OBEs2UNhw=\nR:secfixes_test.go\na:0:0:444\nZ:Q1vhOF1iqufYI7VNWae7VeABWazHQ=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/apkbuild/testdata\nM:0:0:555\nR:APKBUILD_SECFIXES\na:0:0:444\nZ:Q1FSBj2yeY+aDADRoI47j9qNSPkIU=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/apkbuild/testdata/package-a\nM:0:0:555\nR:APKBUILD\na:0:0:444\nZ:Q13qY2srMAkn3vjam/aShDVO5iT+4=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/pkg\nM:0:0:555\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/pkg/apkbuild\nM:0:0:555\nR:compat.go\na:0:0:444\nZ:Q1Nej+wOvagncOZuWF61BBiT8NuNw=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/pkg/releases\nM:0:0:555\nR:compat.go\na:0:0:444\nZ:Q185dMfBqejMARrsafWqaiUvxTlAc=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/pkg/repository\nM:0:0:555\nR:compat.go\na:0:0:444\nZ:Q1Z7pEOPznjh4EyF1YDxfRfHeRTSU=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/releases\nM:0:0:555\nR:releases.go\na:0:0:444\nZ:Q1eGm3cM15gUO5CVx67nl/UsiLpLc=\nR:releases_test.go\na:0:0:444\nZ:Q1nzEX0uENXo5+13GpZau9SA0Nw58=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/releases/testdata\nM:0:0:555\nR:releases.json\na:0:0:444\nZ:Q1j00gq2XPFELZlF4cUELZJ9F+9pU=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/repository\nM:0:0:555\nR:apkindex.go\na:0:0:444\nZ:Q1vOsVF3QQ/KfaQYHNjAjcmZ0V0nw=\nR:apkindex_test.go\na:0:0:444\nZ:Q1J/hGJp2X64z30EWiPRWA4b922vs=\nR:package.go\na:0:0:444\nZ:Q1yrYrTBXY15v+HKY8o4STiJMFRXI=\nR:package_test.go\na:0:0:444\nZ:Q1v7/yhlh8UiG5s5Wp+bKB8w57fgk=\nR:package_utils.go\na:0:0:444\nZ:Q1DjaspQ/AEgR4p8cgo0OzEXa8Gjo=\nR:repository.go\na:0:0:444\nZ:Q1fXnrTBM05DA/tVdCkIZGmbGZ1EM=\nR:repository_test.go\na:0:0:444\nZ:Q1RzwDMtxVLPA98x9kdnIcMig3dK4=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/repository/testdata\nM:0:0:555\nR:APKINDEX.tar.gz\na:0:0:444\nZ:Q1px3ga/6sOJzmyewbVni7F15p5Gw=\nR:hello-0.1.0-r0.apk\na:0:0:444\nZ:Q17xuebDvaX+SCdfZN4y74dMC3uEs=\nF:root/go/pkg/mod/gitlab.alpinelinux.org/alpine/go@v0.6.0/repository/testdata/extracted\nM:0:0:555\nR:.SIGN.RSA.main@tainer.com-abcdef12.rsa.pub\na:0:0:444\nZ:Q1oWugJYe6qpW9+r/LzEghWZpDC/M=\nR:APKINDEX\na:0:0:444\nZ:Q1HaGQbJbym8UAObWYKZBM5TpnZbE=\nR:DESCRIPTION\na:0:0:444\nZ:Q1qLP+lMS1tapNoGVwhXlRZaStpzI=\nF:root/go/pkg/mod/go.lsp.dev\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0\nM:0:0:555\nR:.codecov.yml\na:0:0:444\nZ:Q1ceOG1SNmTeVkELdqrrodquUsXa8=\nR:.gitattributes\na:0:0:444\nZ:Q1LNntTOrXZ6FXDjPhzt5gj4CG6GA=\nR:.gitignore\na:0:0:444\nZ:Q1Fl8Wy8uVTgrUi4/OkZoWhwSAbB8=\nR:.golangci.yml\na:0:0:444\nZ:Q1gU1Mj4suzR5mY1TXhoiNw35vO3g=\nR:LICENSE\na:0:0:444\nZ:Q1utIOcV1JR+FsVxebzeM5dZshLSc=\nR:Makefile\na:0:0:444\nZ:Q1uAYhUn+550VppkAHyhhQNVaFKFc=\nR:README.md\na:0:0:444\nZ:Q1z4bwKcq7nvnzKuZUWS/OSyV69hk=\nR:doc.go\na:0:0:444\nZ:Q1uoZHmH+q7RXqhVH+GZHu+7QNAw0=\nR:go.mod\na:0:0:444\nZ:Q1yoThAIcGBgFC0Q+zz8HT8rFJmv0=\nR:go.sum\na:0:0:444\nZ:Q1uI9nftuy9J7Wes/VBL4hYYTyNV4=\nR:uri.go\na:0:0:444\nZ:Q1wapNE8SF2LYEFfWHjC6YJQXc8l8=\nR:uri_test.go\na:0:0:444\nZ:Q1XlrlIH4PTzYhPvZJbIxBSHZ0sWI=\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0/.circleci\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1kpYQZLFo8LNHHbi7AbNDw6KmEzs=\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0/.github\nM:0:0:555\nR:FUNDING.yml\na:0:0:444\nZ:Q1uzAtDs89olQgXe3g+KGRh/D1Fgs=\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0/hack\nM:0:0:555\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0/hack/boilerplate\nM:0:0:555\nR:boilerplate.go.txt\na:0:0:444\nZ:Q15CD6+j761J1VDcRczDVYkD6nP+Y=\nF:root/go/pkg/mod/go.lsp.dev/uri@v0.3.0/hack/make\nM:0:0:555\nR:go.mk\na:0:0:444\nZ:Q1CQz+ZuD7wFr9ipFgqUHVs4tzyYQ=\nF:root/go/pkg/mod/go.mongodb.org\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2\nM:0:0:555\nR:.errcheck-excludes\na:0:0:444\nZ:Q1t3BkQLBnqOfKbx1e3osjW+4MsAA=\nR:.gitignore\na:0:0:444\nZ:Q17gIgI1wLv96X4kWRlyAk8jnz2gE=\nR:.gitmodules\na:0:0:444\nZ:Q1KqWWmZ1H8PER3huy39PuocRkHpA=\nR:.golangci.yml\na:0:0:444\nZ:Q1T95JqHPsVFiy7NV7dp7w+dNByEM=\nR:LICENSE\na:0:0:444\nZ:Q1ffBZWXCZu33PJdKprt+vRGX3LY0=\nR:Makefile\na:0:0:444\nZ:Q14a5qJqSSjq2TeefHii/CahDhBBQ=\nR:README.md\na:0:0:444\nZ:Q1i0mqgDRNtCt2GmALq36Rspu0SF8=\nR:THIRD-PARTY-NOTICES\na:0:0:444\nZ:Q1elkcido1Je6f6DWamQvs2oDQCEA=\nR:go.mod\na:0:0:444\nZ:Q11ycTHIh4Xz/hq5piXDshlEKYhRk=\nR:go.sum\na:0:0:444\nZ:Q1DQMG/WP3m7HV3JXwhjoOowoRtSg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/.evergreen\nM:0:0:555\nR:config.yml\na:0:0:444\nZ:Q1uZIvytV86ESlAwh4agoht5QM6ik=\nR:krb5.config\na:0:0:444\nZ:Q1OX1PVtkXKHGzh81eXXQYAUP5FWk=\nR:ocsp-requirements.txt\na:0:0:444\nZ:Q1ePGaq4j1FPQT09S7yUyJY8r10fM=\nR:run-mongodb-aws-ecs-test.sh\na:0:0:444\nZ:Q1VZ4xP1rSL2Vrver23w4Ex2aujFA=\nR:run-mongodb-aws-test.sh\na:0:0:444\nZ:Q17AVRITnDlSl2czfU2iNT0cqb5pA=\nR:run-tests.sh\na:0:0:444\nZ:Q1w9BPFHC7vmssmS3aFLobeOop1CM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/benchmark\nM:0:0:555\nR:bson.go\na:0:0:444\nZ:Q1ddjPRSghtmis/1cRjBpT4dqExw0=\nR:bson_document.go\na:0:0:444\nZ:Q1kc+8MOFmwmAv6ZasGaAwrJPU32k=\nR:bson_map.go\na:0:0:444\nZ:Q1TovmeJDR6NOZpHyC9FVN7+b6tpg=\nR:bson_struct.go\na:0:0:444\nZ:Q18/uowx8Y565H9Zzlf5D/zuDQ1Zc=\nR:bson_test.go\na:0:0:444\nZ:Q14z8cZXGg77SFHP5de8GXCe62IpY=\nR:bson_types.go\na:0:0:444\nZ:Q18AbcMoi/cQue3LVgs4g8jMqtanA=\nR:canary.go\na:0:0:444\nZ:Q16G1LU+y3mq5GivohdzH5VhoRODY=\nR:canary_test.go\na:0:0:444\nZ:Q1/6pzqyaK0fP3fih8J6RzH6wfuwM=\nR:harness.go\na:0:0:444\nZ:Q1dfTPSiEQy6fwxEb5eu1UwI3DqrI=\nR:harness_case.go\na:0:0:444\nZ:Q14LDISFnoUUw8FIrf2zDATKE1VmU=\nR:harness_main.go\na:0:0:444\nZ:Q1jX7Qwea95S0PoE0uGCOXVqLLf2s=\nR:harness_results.go\na:0:0:444\nZ:Q1M30tvoquIldBNdYtxi0BQCe4I/4=\nR:multi.go\na:0:0:444\nZ:Q1IQqUCs+IDzfp7VHW9SZzmtIMAus=\nR:multi_test.go\na:0:0:444\nZ:Q1gMJo/Y8CubOrvpUnYpoShiZbSBo=\nR:single.go\na:0:0:444\nZ:Q1+FDnoey1k5AuEAxMRNI+FPyYvSw=\nR:single_test.go\na:0:0:444\nZ:Q1pgsGZea3ouUfnYbo0ACFivnOHXk=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson\nM:0:0:555\nR:benchmark_test.go\na:0:0:444\nZ:Q15qL6Cm75CjQod4dnJ6gWEnFz38I=\nR:bson.go\na:0:0:444\nZ:Q1vxofiWlvEg6u/m8u515P4X1mGuI=\nR:bson_corpus_spec_test.go\na:0:0:444\nZ:Q10oYJNkLdgSwcugU01Jwh8TY55zo=\nR:bson_test.go\na:0:0:444\nZ:Q134FrmAvlo3Sr6XqXsPFlPrr94vI=\nR:decoder.go\na:0:0:444\nZ:Q137gYfHOi31unzfXdrB688QE6Q2A=\nR:decoder_test.go\na:0:0:444\nZ:Q1zxky8H9cx6uQLZnikZK9RdVjUO8=\nR:doc.go\na:0:0:444\nZ:Q1KdJ5JgB58z42Nwekeqm9kIpV658=\nR:encoder.go\na:0:0:444\nZ:Q10eB4CKaTy5EnpZFdMfZFZ9zflNo=\nR:encoder_test.go\na:0:0:444\nZ:Q1JZTdSK7lWqxJcpTns9hNA7CNFIQ=\nR:extjson_prose_test.go\na:0:0:444\nZ:Q1XQi2QoUTUxlqvq2lyj+a2rz0aeI=\nR:marshal.go\na:0:0:444\nZ:Q104ZNOfdaIGDcEXDKuldx2PhFaQ8=\nR:marshal_test.go\na:0:0:444\nZ:Q1rSkGX2b9QRG9XNan7h94dpjsnfU=\nR:marshal_value_test.go\na:0:0:444\nZ:Q1GSQy693XK2QGI8XUJWnhID89rTw=\nR:marshaling_cases_test.go\na:0:0:444\nZ:Q1wEKZIgzzeW+mUoXHbCerwR5WJNA=\nR:primitive_codecs.go\na:0:0:444\nZ:Q1b7dv1pqkyJh+bkhoJ7jB+vnUfcQ=\nR:primitive_codecs_test.go\na:0:0:444\nZ:Q1xuSadCf+3O4SmeJUJBLEhZrMlFs=\nR:raw.go\na:0:0:444\nZ:Q1mtNFMb9ebpufTGQjbQqi6ci32rE=\nR:raw_element.go\na:0:0:444\nZ:Q1tjDO4LV3xEwBjq3zVEZLPxPTx1g=\nR:raw_test.go\na:0:0:444\nZ:Q1gpighCahuO6EPDDjGIJXXfi4xMY=\nR:raw_value.go\na:0:0:444\nZ:Q1Ab45SC3KoEYFAH+gZHrHRjdjR9c=\nR:raw_value_test.go\na:0:0:444\nZ:Q18nu8sBQ0IfcXpDEaMXlB+OLXfnE=\nR:registry.go\na:0:0:444\nZ:Q1aT8vCtfYWVeTVv7UL7XFmZb/ZUE=\nR:truncation_test.go\na:0:0:444\nZ:Q1glHJXeGrqKrg5xwDYnfHNmYEGlc=\nR:types.go\na:0:0:444\nZ:Q1hbnCYLXyjIbg9SiK0xps330Q5lw=\nR:unmarshal.go\na:0:0:444\nZ:Q1yiy+sLUldeXevLGr8HLX4dyztVM=\nR:unmarshal_test.go\na:0:0:444\nZ:Q12FFFQTmq5yJw8+7bOO55L4Gy/tE=\nR:unmarshaling_cases_test.go\na:0:0:444\nZ:Q1gg2Nl4CxD2MkqBl2+vQYfFEKHMA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/bsoncodec\nM:0:0:555\nR:array_codec.go\na:0:0:444\nZ:Q1Tz0ewKsBP5lSGppZFzKw3Af2Duk=\nR:bsoncodec.go\na:0:0:444\nZ:Q1XcVqkFgNKG+HfLqEc9keOu18ySo=\nR:bsoncodec_test.go\na:0:0:444\nZ:Q1la90EcfnLRuH6APjnoDddHnnL5Y=\nR:byte_slice_codec.go\na:0:0:444\nZ:Q1lFl/fXCYMmDUIFpCCCXeOTMeYPs=\nR:cond_addr_codec.go\na:0:0:444\nZ:Q1QpIgD6ZBPaBsxWHKcQdTcNEvq2A=\nR:cond_addr_codec_test.go\na:0:0:444\nZ:Q1ocFvHkvya5oOP0sn6xqaXw8zM+U=\nR:default_value_decoders.go\na:0:0:444\nZ:Q1KN/j0agqvhcC9L3GBJorIpuVJUU=\nR:default_value_decoders_test.go\na:0:0:444\nZ:Q1/Bcy5wP6Yt99Bl4VqxMdEKBj+Ls=\nR:default_value_encoders.go\na:0:0:444\nZ:Q1isT5CYregvONRNF7t4DAkNu2OaE=\nR:default_value_encoders_test.go\na:0:0:444\nZ:Q17dFsToAEuK282Pn0/wbW8fQREA0=\nR:doc.go\na:0:0:444\nZ:Q1G4rXeZuUrGSzjyopHSlSaw0AgsM=\nR:empty_interface_codec.go\na:0:0:444\nZ:Q1AOkJAG7ZAxFBwtkhH6q9MrRVQ1I=\nR:map_codec.go\na:0:0:444\nZ:Q19JWDfwTtX73suJ1DNgIPc6wukGM=\nR:mode.go\na:0:0:444\nZ:Q17URbJODJxpsKcSItNatxkzR9q3Q=\nR:pointer_codec.go\na:0:0:444\nZ:Q19BE8DplmR4dZUe9GV5j8FuXMrRM=\nR:proxy.go\na:0:0:444\nZ:Q1nHRBGSWZPJJTWYbP3EZv9w0FquM=\nR:registry.go\na:0:0:444\nZ:Q1gedeHJ0L6jodCiR7L4gSGLMSD1E=\nR:registry_examples_test.go\na:0:0:444\nZ:Q1KCIcS0vPBFgXZNM0LCEjcvSqFI4=\nR:registry_test.go\na:0:0:444\nZ:Q1m9rzQlm/tkYjDhwLpEVCJ4NMezo=\nR:slice_codec.go\na:0:0:444\nZ:Q1KzsSejtOBbu4MpW3pj34BRim0p0=\nR:string_codec.go\na:0:0:444\nZ:Q1D1Sh68kQDEsvFzZoR1LQY4DWLJs=\nR:string_codec_test.go\na:0:0:444\nZ:Q1rHg4oWMCetASXeJogY55w0Vrr5U=\nR:struct_codec.go\na:0:0:444\nZ:Q1Qc1bLC6xLKlYyArH1xxVsennYZk=\nR:struct_codec_test.go\na:0:0:444\nZ:Q1IkyNys90stFLrcSx3Ifl+m98nvI=\nR:struct_tag_parser.go\na:0:0:444\nZ:Q19i/ClBjbf89aaAD3DT1TupIYwRQ=\nR:struct_tag_parser_test.go\na:0:0:444\nZ:Q185PNJpT4lhIDf0aeZpx0JC2NQ8A=\nR:time_codec.go\na:0:0:444\nZ:Q1kwtgCYKaU1j5UodU6y+2noOWtJo=\nR:time_codec_test.go\na:0:0:444\nZ:Q1M99zl5yrvGdRKWRQQ6toJ8R4M1s=\nR:types.go\na:0:0:444\nZ:Q1pfcDtLn+AbU3t0BG04TBaqvGoYI=\nR:uint_codec.go\na:0:0:444\nZ:Q1DK98eVipRcDWtPJkAWSACCImA7Q=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/bsonoptions\nM:0:0:555\nR:byte_slice_codec_options.go\na:0:0:444\nZ:Q1q2bI+Y6xeVLODYnZyXX60LMjg/A=\nR:doc.go\na:0:0:444\nZ:Q1g5mTQ2cyUXIXn7a+SHOHz5ilk1w=\nR:empty_interface_codec_options.go\na:0:0:444\nZ:Q1g6L67izWltS07Rwq+rSXlHvwesE=\nR:map_codec_options.go\na:0:0:444\nZ:Q1KtqFF+8uhyWrjTpJME+ydaPzPSU=\nR:slice_codec_options.go\na:0:0:444\nZ:Q1J2lu0y9dM4EY1OxR4d74w2KDMaM=\nR:string_codec_options.go\na:0:0:444\nZ:Q11wvs2d+Pfgkg3xeYUuzVOHgmRBI=\nR:struct_codec_options.go\na:0:0:444\nZ:Q1Cije7TFMgah+GP33qf73S5SNbi0=\nR:time_codec_options.go\na:0:0:444\nZ:Q17A5Dv5e0FsFaIrPsA6SL20tYr0A=\nR:uint_codec_options.go\na:0:0:444\nZ:Q1sgjIYRCwSEWQ31oKzwnRiLu0G+Q=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/bsonrw\nM:0:0:555\nR:bsonrw_test.go\na:0:0:444\nZ:Q1oRnNDmErpEk5yonsFulXLB5s8/I=\nR:copier.go\na:0:0:444\nZ:Q1qfA52vetyPElgjQYWJsulYOVR+o=\nR:copier_test.go\na:0:0:444\nZ:Q1FM+E62QDGIzAiYa30ATbFph0Qts=\nR:doc.go\na:0:0:444\nZ:Q1XgvD3mZQCIYNjKzYvmprQX+WUV8=\nR:extjson_parser.go\na:0:0:444\nZ:Q1EJJb/eGfSvOhQBeCxHGW6G4qvw0=\nR:extjson_parser_test.go\na:0:0:444\nZ:Q1gEFU8cGz5/8jRKr/Z4H6prKPlBA=\nR:extjson_reader.go\na:0:0:444\nZ:Q1itgnecENrMomEZVJdbfY70LodD8=\nR:extjson_reader_test.go\na:0:0:444\nZ:Q1kw3mYK/amOzHDLh9rbXug8UNgSo=\nR:extjson_tables.go\na:0:0:444\nZ:Q17bRKsasgaDmgsrGYbNPrPGJk1sA=\nR:extjson_wrappers.go\na:0:0:444\nZ:Q1OsKgLyvqV4rftAHQKEmZPNJGiDw=\nR:extjson_writer.go\na:0:0:444\nZ:Q1r9eaRSPNNTIR8iwlljvaddCF4CA=\nR:extjson_writer_test.go\na:0:0:444\nZ:Q1mqUcZyDp38+NWQKB4G3YmkmOJ+E=\nR:json_scanner.go\na:0:0:444\nZ:Q1Nc9IgyWC+ZW2yxzVrZ78IczcbZ8=\nR:json_scanner_test.go\na:0:0:444\nZ:Q1czSiecih60PqBC0ES3vFqhtHDwo=\nR:mode.go\na:0:0:444\nZ:Q19V3i0mtjSRaWACTkZg1vlkBMeTY=\nR:reader.go\na:0:0:444\nZ:Q1ZGLxrxPGit5Xaw/PYkn6F0o0I9o=\nR:value_reader.go\na:0:0:444\nZ:Q1+Hpz1NHQ9lZDPBSmekPykyB9Ayk=\nR:value_reader_test.go\na:0:0:444\nZ:Q16pC63eJxxVnL8zEaNSk3HysGseE=\nR:value_reader_writer_test.go\na:0:0:444\nZ:Q1xE827asKNoPZlI3rRyDmZPmegv8=\nR:value_writer.go\na:0:0:444\nZ:Q1R57o7p9Q/svIKqRgoSKNCVZ/63E=\nR:value_writer_test.go\na:0:0:444\nZ:Q1jxwDd1JkzkupszeLoRN8pQkmdIY=\nR:writer.go\na:0:0:444\nZ:Q1Ltiih6lA/3ggIZB0BPwYHdWMGmA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/bsonrw/bsonrwtest\nM:0:0:555\nR:bsonrwtest.go\na:0:0:444\nZ:Q1ZqEUzO01e77Yu9+ieghefh/9Z6E=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/bsontype\nM:0:0:555\nR:bsontype.go\na:0:0:444\nZ:Q12r1g45DcAPFYggn0Tpm2blSUjG4=\nR:bsontype_test.go\na:0:0:444\nZ:Q1fdk9jkKW5ilw7cKn8mS5paOQkTQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/mgocompat\nM:0:0:555\nR:bson_test.go\na:0:0:444\nZ:Q1NfTi1DlHHtSio3d1UsF1zDCuWLI=\nR:doc.go\na:0:0:444\nZ:Q1LS5Vy47xBkWJ0Lffx5eWhHf95ho=\nR:registry.go\na:0:0:444\nZ:Q1IxxWEt/t72TgCQ9+EC4H/++iSUc=\nR:setter_getter.go\na:0:0:444\nZ:Q1/361B1/VclaQW5N5TUoMv+JuMz4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/bson/primitive\nM:0:0:555\nR:decimal.go\na:0:0:444\nZ:Q1tUQjGwCA5n2WRxQwQubDWZl1MMA=\nR:decimal_test.go\na:0:0:444\nZ:Q1P798Yus7CjyMG+oxu1/WcOb213Q=\nR:objectid.go\na:0:0:444\nZ:Q1fl4fejHK4MnZB2YO+uxRGItZVUE=\nR:objectid_test.go\na:0:0:444\nZ:Q1DtgGVAVmG4fFJW6ZOclYQrBAqRw=\nR:primitive.go\na:0:0:444\nZ:Q1/OuHDpYSgdxj8Vz8cuYxwN7VBfw=\nR:primitive_test.go\na:0:0:444\nZ:Q1iGlAjvIG58uSYhwkQUIWlVKOh/E=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/cmd\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/cmd/godriver-benchmark\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1+q7aHOHismtp9+VJO8ofsJI8dxY=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/atlas-data-lake-testing\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1ReIkX1DgYFQJMRwPgrJMuL6Owpo=\nR:aggregate.json\na:0:0:444\nZ:Q1mhOiILBGTB0Z5AVIgZEqSD9ySh4=\nR:aggregate.yml\na:0:0:444\nZ:Q1hqX7C7w+ACkzTwEb6rUcSSDKF9g=\nR:estimatedDocumentCount.json\na:0:0:444\nZ:Q1vfRAcoRDmDtYTNpj8YFfXhIImsU=\nR:estimatedDocumentCount.yml\na:0:0:444\nZ:Q1t1s5p79UB2nALjnaLYFM3nBKv1E=\nR:find.json\na:0:0:444\nZ:Q1CIlS9l8DsHFmsWFk0j4plivsB30=\nR:find.yml\na:0:0:444\nZ:Q1ITrZDLf1btj2k2pvJEkj0acSmh8=\nR:getMore.json\na:0:0:444\nZ:Q1be0s4FVs61pqSieZXYIhhKP/AbM=\nR:getMore.yml\na:0:0:444\nZ:Q188PulBBvyTVhIA/wUAK5Jhj/Imw=\nR:listCollections.json\na:0:0:444\nZ:Q1s7g28DNAlyKd7LEhWx2+mKVm3oY=\nR:listCollections.yml\na:0:0:444\nZ:Q1SrffbBaF7bMIFBH9R9cLFK02GfI=\nR:listDatabases.json\na:0:0:444\nZ:Q1GgAvShr0U2W8IpGEAoz1vga5IgA=\nR:listDatabases.yml\na:0:0:444\nZ:Q196yxi5z9LnlhL6wgZfnCnFGDdcM=\nR:runCommand.json\na:0:0:444\nZ:Q1w6bgxvBGwLPYIQs55gIgqyK/gzU=\nR:runCommand.yml\na:0:0:444\nZ:Q1jn6cdrnm3mkFmVPrzrQVpBF7DVw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/auth\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1gSg14UeDrGwDtGWrVdbjTedGcfs=\nR:connection-string.json\na:0:0:444\nZ:Q1dsG6u6BWd5qG+U2TJhwDIf6do9Y=\nR:connection-string.yml\na:0:0:444\nZ:Q1+qLx7v6iwisVcDRW223SoAm52YY=\nR:mongodb-aws.rst\na:0:0:444\nZ:Q1xFXxXrp43mgB0nLxJOU6jy+38ds=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/bson-corpus\nM:0:0:555\nR:array.json\na:0:0:444\nZ:Q1VcJyKIFoAlGMjcpxwjoOgT2ZiBo=\nR:binary.json\na:0:0:444\nZ:Q1KiJHGj/CBKbg//4QLDlyRZHg+NQ=\nR:boolean.json\na:0:0:444\nZ:Q1ivdJdqOPKe5+3UhSin0iQr1SDYA=\nR:bsonview\na:0:0:444\nZ:Q17zUn/sjxIz6bJ0lbAlrcFYd8j2o=\nR:code.json\na:0:0:444\nZ:Q1ybw4sbTv0/K2lTK2nMqlijmPsJo=\nR:code_w_scope.json\na:0:0:444\nZ:Q1ZD78uMHnRAyUk/nyYRTknFrPx5U=\nR:datetime.json\na:0:0:444\nZ:Q1jyzXCAbOD+zA/lGIMF4u5yb4Pwo=\nR:dbpointer.json\na:0:0:444\nZ:Q1XJ1oKkvi7qqB523LMEWiJc1jC40=\nR:dbref.json\na:0:0:444\nZ:Q1pCUvWLsbTEB5A5e1Cm9QKTNPK14=\nR:decimal128-1.json\na:0:0:444\nZ:Q1hUv+pBMMCf/xNkLVG7wu5vTn+JY=\nR:decimal128-2.json\na:0:0:444\nZ:Q124OSc/y0rNgkO/+AaC7OgOWGE20=\nR:decimal128-3.json\na:0:0:444\nZ:Q1fUaah4bklqjMwSrsyDwL93fl9DY=\nR:decimal128-4.json\na:0:0:444\nZ:Q12tTh2wZ3ULm00PNsz3akouyqUJU=\nR:decimal128-5.json\na:0:0:444\nZ:Q1swIjQU3hM9HVHNuKgOt6DhP5wV4=\nR:decimal128-6.json\na:0:0:444\nZ:Q1IrkGexAAUiCiEXS9S5xLquBOeuw=\nR:decimal128-7.json\na:0:0:444\nZ:Q1CCtSyiiR/W1rF2mQ5zPXqEfUpDw=\nR:document.json\na:0:0:444\nZ:Q1NMiznA+khANHIJYYkzwt15xIe00=\nR:double.json\na:0:0:444\nZ:Q1pGvJ5zOy1yqQg6jlkUjWPA/jzZ4=\nR:int32.json\na:0:0:444\nZ:Q1oyjt0cn2qQqciVuBbMHsP6xjAKM=\nR:int64.json\na:0:0:444\nZ:Q1PtnjZcHjm+1Xf+Sd07oR1gaHvKg=\nR:maxkey.json\na:0:0:444\nZ:Q1aWmhn9pAm63osnPv/1jzmfJRDNA=\nR:minkey.json\na:0:0:444\nZ:Q1SZCQnSy6fBjvWAUYLxVUB2zdqGI=\nR:multi-type-deprecated.json\na:0:0:444\nZ:Q10c4IfByS8dFXFEakfO1WPaEE300=\nR:multi-type.json\na:0:0:444\nZ:Q1jtaJyYG/ykjIIb2ClbjnLTQjW3Y=\nR:null.json\na:0:0:444\nZ:Q1KkpononvOugGaqvXISwecqEvKFI=\nR:oid.json\na:0:0:444\nZ:Q17XrYj/oghvd7VmtDrNBBbUMXCSM=\nR:regex.json\na:0:0:444\nZ:Q1aqLJy+ArThcrG9rUfp5wkwi5WHU=\nR:string.json\na:0:0:444\nZ:Q1wIDEjtWew0i/JP9ZEc0xGRgngIw=\nR:symbol.json\na:0:0:444\nZ:Q1KdU6JqnajRSKU7JGDAEpmVhNF7o=\nR:timestamp.json\na:0:0:444\nZ:Q1yL8G9grwfY5bIKkDDivthiWNSW0=\nR:top.json\na:0:0:444\nZ:Q10DChJUL30KsAkvbzz9A5Z0vzCUA=\nR:undefined.json\na:0:0:444\nZ:Q15Rcr5divUakYcKzXRIEW3guWTCs=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/change-streams\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1HSNaBc5KCLnAZpeSOU58954t9BI=\nR:change-streams-errors.json\na:0:0:444\nZ:Q1xKYanV/gRIJoc33etTH/gbkvKYU=\nR:change-streams-errors.yml\na:0:0:444\nZ:Q10te5Vxx3h25hiRTXY2rS8t7gEPA=\nR:change-streams-pre_and_post_images.json\na:0:0:444\nZ:Q1Qwea42FQhDjyVBZTvRX/pesc1/Y=\nR:change-streams-pre_and_post_images.yml\na:0:0:444\nZ:Q1yS+ukcG9AYF/5wU2K3VL7x9X9Bc=\nR:change-streams-resume-allowlist.json\na:0:0:444\nZ:Q1QwyIjU1jbQhiFxy64kHlQ/jzSpA=\nR:change-streams-resume-allowlist.yml\na:0:0:444\nZ:Q1npbgn2xt3U5PObWnnQVV0cf5gag=\nR:change-streams-resume-errorLabels.json\na:0:0:444\nZ:Q1524G+H7jIAEMOB951jdC1dZuzUM=\nR:change-streams-resume-errorLabels.yml\na:0:0:444\nZ:Q1MRcS/LoyfuuAMafoWa6qudlKF3A=\nR:change-streams-showExpandedEvents.json\na:0:0:444\nZ:Q19W9B5r3MiV0joBO3yi6tWNkQsdE=\nR:change-streams-showExpandedEvents.yml\na:0:0:444\nZ:Q1V6jfRMNSarLDnxC0zdAf+Hg4QcQ=\nR:change-streams.json\na:0:0:444\nZ:Q1/YTb74abzFDA1ESB1ECOBmZm0tk=\nR:change-streams.yml\na:0:0:444\nZ:Q1aYSMR0jiwKqG3xkWQixfHebTeEI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/client-side-encryption\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q14VstsSbbRyPrQmcatjNE8WV+2rE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/client-side-encryption/legacy\nM:0:0:555\nR:aggregate.json\na:0:0:444\nZ:Q1UO9jksllgxiZYF1SC71HfV/TENg=\nR:aggregate.yml\na:0:0:444\nZ:Q1kB8Qe13rS+Q82GyWO2wqK8qWmfQ=\nR:awsTemporary.json\na:0:0:444\nZ:Q1TSo+o/9QcxpD/uwkrd6+GMz2Z7k=\nR:awsTemporary.yml\na:0:0:444\nZ:Q1nb1gtz6eIshXOmdCucP3BUOVdrU=\nR:azureKMS.json\na:0:0:444\nZ:Q1/z6Z1OVU5PVkj2Kz2zCJuFQeiJE=\nR:azureKMS.yml\na:0:0:444\nZ:Q1eBqco2sjSj/xxtmBQg5LGEmkm/A=\nR:badQueries.json\na:0:0:444\nZ:Q1+iGssU0NrS5UTJJorO1uYX9jqU4=\nR:badQueries.yml\na:0:0:444\nZ:Q1ctATnRaxAjxVhOgQzb89cm+7CtQ=\nR:badSchema.json\na:0:0:444\nZ:Q1fJn18Q2OLiXHmPZn3gCYrYjzcBE=\nR:badSchema.yml\na:0:0:444\nZ:Q1Kt4WQgBMC0B/EQIo6weP1aTi78g=\nR:basic.json\na:0:0:444\nZ:Q119OiKm6G3r+jQ2iOesU62aImChE=\nR:basic.yml\na:0:0:444\nZ:Q1zePIQsnNv6zKmR0y2rZQVo3vV+A=\nR:bulk.json\na:0:0:444\nZ:Q1RZjBvv1BTpbL6pBxE87/6UhM5Po=\nR:bulk.yml\na:0:0:444\nZ:Q1mPPJx75gKud4tGdjTrH1fkb99ag=\nR:bypassAutoEncryption.json\na:0:0:444\nZ:Q1zWfAuYgsd9SvS9vtc+pLvMDC+zI=\nR:bypassAutoEncryption.yml\na:0:0:444\nZ:Q1hfskSF4zoy9q6vob+q4ooVGmrt0=\nR:bypassedCommand.json\na:0:0:444\nZ:Q1UXQ2sl/dnxwgGyejh7CnNJPtJRE=\nR:bypassedCommand.yml\na:0:0:444\nZ:Q1D4TPBQeuTBpBIFHNeKSaE2Y9QqY=\nR:count.json\na:0:0:444\nZ:Q1GNYFYrlLKDF5V6FsqKFvKDjZZmA=\nR:count.yml\na:0:0:444\nZ:Q1TDG8C5m9H+kvY2fFpvthwwY5kpQ=\nR:countDocuments.json\na:0:0:444\nZ:Q1EFwEs8uIbGaNSlsxK8tz9x2yDV4=\nR:countDocuments.yml\na:0:0:444\nZ:Q1eXYNr1U4bf8mE6xtqYEW/qS0a2Y=\nR:create-and-createIndexes.json\na:0:0:444\nZ:Q1AwaQvjoNbID8iUe+6MtKtgItgK8=\nR:create-and-createIndexes.yml\na:0:0:444\nZ:Q1ajhYuK4cldXbO8OnwrYKApw5Eaw=\nR:delete.json\na:0:0:444\nZ:Q1gvXSyggDyanVxGD6rV51ujHZ8EM=\nR:delete.yml\na:0:0:444\nZ:Q1KOhwPTj6zH6ojAzueq39VJpnb9w=\nR:distinct.json\na:0:0:444\nZ:Q16aIbKqmec8kpKSpgy9MwpyHt88M=\nR:distinct.yml\na:0:0:444\nZ:Q1poaKK8pYNy8RIg7ek7G941EJysc=\nR:explain.json\na:0:0:444\nZ:Q1/hqH/tnOutXpFv4q14nDk+CORwU=\nR:explain.yml\na:0:0:444\nZ:Q1LFXlmBya+GTzdV89msIsL18k0RE=\nR:find.json\na:0:0:444\nZ:Q1RTWZrojRtaxD5tP7Y1muLuSC9FE=\nR:find.yml\na:0:0:444\nZ:Q1YAeL+HnOf0NfdIOYNrUN2UuIc44=\nR:findOneAndDelete.json\na:0:0:444\nZ:Q17Kk/jF4oYTl8wOHJhCHI6gKi9iA=\nR:findOneAndDelete.yml\na:0:0:444\nZ:Q12eiwal2dqmWr5RWHvjvKyoDs53g=\nR:findOneAndReplace.json\na:0:0:444\nZ:Q1nXvvDwlSdzAu/+BO6M44DcGLslY=\nR:findOneAndReplace.yml\na:0:0:444\nZ:Q1W3RHK1VoJ9PIh2jYqzg1dy2xAMw=\nR:findOneAndUpdate.json\na:0:0:444\nZ:Q1dH95pfvSaUp4GkJg6+Uh2yrq4UU=\nR:findOneAndUpdate.yml\na:0:0:444\nZ:Q1rrftRXiilScBY1bCorQzH9tdCf4=\nR:fle2-BypassQueryAnalysis.json\na:0:0:444\nZ:Q1YR71KF4wE39X410YS5HlGCsBV90=\nR:fle2-BypassQueryAnalysis.yml\na:0:0:444\nZ:Q10+2Rq/aifEaAlV4EuFBs7qliEmQ=\nR:fle2-Compact.json\na:0:0:444\nZ:Q1Nh+JBQxJ6UYiRlAGakIf+op/Si4=\nR:fle2-Compact.yml\na:0:0:444\nZ:Q1LQUKzDdh72+ebr8E9fGSDd/Ass0=\nR:fle2-CreateCollection.json\na:0:0:444\nZ:Q1b+o4Ipvl84O1I1hnJRGVPCnjEOI=\nR:fle2-CreateCollection.yml\na:0:0:444\nZ:Q1E49DnTjxLwcz7ThDwMUhx4qTn/c=\nR:fle2-DecryptExistingData.json\na:0:0:444\nZ:Q1Ck6QB++ZhBLAdVgCIN+tXOORmPo=\nR:fle2-DecryptExistingData.yml\na:0:0:444\nZ:Q1SPxVC6LY/f9w1iL6kiQNEtVhVSw=\nR:fle2-Delete.json\na:0:0:444\nZ:Q1F93gnOotRvmdQPm1y7lJCKOm8zs=\nR:fle2-Delete.yml\na:0:0:444\nZ:Q1FCvL9d2S7oSwLb1rvQjlS4hukXc=\nR:fle2-EncryptedFields-vs-EncryptedFieldsMap.json\na:0:0:444\nZ:Q1tWjP4p+ZrYCRTRNmIXIOxKhI+w4=\nR:fle2-EncryptedFields-vs-EncryptedFieldsMap.yml\na:0:0:444\nZ:Q1ICuS+R2TNDgXG3fMdk92kypVD04=\nR:fle2-EncryptedFields-vs-jsonSchema.json\na:0:0:444\nZ:Q1vY1Vzu8fET07gKmPsYqIqYvywAk=\nR:fle2-EncryptedFields-vs-jsonSchema.yml\na:0:0:444\nZ:Q1spdtnAgNj/bCboVLsXS0tS6fZfM=\nR:fle2-EncryptedFieldsMap-defaults.json\na:0:0:444\nZ:Q1Vf4Zm9v49qiTZB8m5A6iB8JtMvE=\nR:fle2-EncryptedFieldsMap-defaults.yml\na:0:0:444\nZ:Q1P+LQAnxzylWnmX+ACiAVf0v9ePU=\nR:fle2-FindOneAndUpdate.json\na:0:0:444\nZ:Q1az/LMu2xCUy7VYsWiQzgnM/7Tyo=\nR:fle2-FindOneAndUpdate.yml\na:0:0:444\nZ:Q1aC2D9EV8GUWL6fXbrUaPjpLSh28=\nR:fle2-InsertFind-Indexed.json\na:0:0:444\nZ:Q1WWu7QNzRPLqa1rMnsidCTAx81YA=\nR:fle2-InsertFind-Indexed.yml\na:0:0:444\nZ:Q1SOyIFuww8BCqxlACx3nCcl70eh0=\nR:fle2-InsertFind-Unindexed.json\na:0:0:444\nZ:Q1tDSXT+av/cPGEyBdPbxMyXmDi30=\nR:fle2-InsertFind-Unindexed.yml\na:0:0:444\nZ:Q1j9ZLE82spEvqoFmarw1HgETQz1k=\nR:fle2-MissingKey.json\na:0:0:444\nZ:Q1dBVnmjzuBmC0hgTJ+sGdNVLn0IA=\nR:fle2-MissingKey.yml\na:0:0:444\nZ:Q13B0o7C54IMdx+GfLR5j/R2VzgJU=\nR:fle2-NoEncryption.json\na:0:0:444\nZ:Q1q0ff4CYkQcw5vfRXZrTnG3ZdFTo=\nR:fle2-NoEncryption.yml\na:0:0:444\nZ:Q1CmSpFaWARhHg8wuKfhnoAfF/qFI=\nR:fle2-Update.json\na:0:0:444\nZ:Q1bWocVhVz63AinEVc8uaFHu3n5B4=\nR:fle2-Update.yml\na:0:0:444\nZ:Q1dnEdDdUA6TTqEeGS5ft+p4Vjr24=\nR:fle2-validatorAndPartialFieldExpression.json\na:0:0:444\nZ:Q1evLrsasLe6p6NM6XsLnUeWlgd7I=\nR:fle2-validatorAndPartialFieldExpression.yml\na:0:0:444\nZ:Q1hWbBqp4zosBQtdkFharcVo75Bl8=\nR:gcpKMS.json\na:0:0:444\nZ:Q1kD2PDwlZQPj0oAnDwBl9h8nmPrA=\nR:gcpKMS.yml\na:0:0:444\nZ:Q1qNI3KyZuVI8/SWsQ0Hmdpn7UKfc=\nR:getMore.json\na:0:0:444\nZ:Q17hlS7czqouSHsjHrpiBNjSb+uU4=\nR:getMore.yml\na:0:0:444\nZ:Q1Wxxp22H7SHbK1+T/MgI8GJSKODE=\nR:insert.json\na:0:0:444\nZ:Q1YkiT03BSZO7wqZIX0ZiOEiq/G4U=\nR:insert.yml\na:0:0:444\nZ:Q1bkmxl3HPbHqsyb8JdDYnnG/V8ls=\nR:keyAltName.json\na:0:0:444\nZ:Q1W2gQwFWai9V8fNkH106QVAhfjRA=\nR:keyAltName.yml\na:0:0:444\nZ:Q151vRKRDv562sbroM2a5D3F78qcQ=\nR:kmipKMS.json\na:0:0:444\nZ:Q18e3v9VYGTyFFgxvtIzGyrVO0WF4=\nR:kmipKMS.yml\na:0:0:444\nZ:Q1zQL0v/LPenRMZiPyv8HBKAmjOQA=\nR:localKMS.json\na:0:0:444\nZ:Q1PPCb2SwQvgErWj0sXmNYPRV5kGc=\nR:localKMS.yml\na:0:0:444\nZ:Q11zh/kSbYWftP6cA8psVu1siB6DA=\nR:localSchema.json\na:0:0:444\nZ:Q1wMGtff6jEpdrrKD8pbeggK3i8jw=\nR:localSchema.yml\na:0:0:444\nZ:Q1p5LOIiB6KH8sZcTfJEF1N+ZDn2s=\nR:malformedCiphertext.json\na:0:0:444\nZ:Q1kzQ268cnqw2yEJQxeruSQ7kaEU4=\nR:malformedCiphertext.yml\na:0:0:444\nZ:Q1+uPEUNtQDM7zmg4BjIQSNisMGLc=\nR:maxWireVersion.json\na:0:0:444\nZ:Q13mo2aO4RdTy6BfkmmX7TZdFu+to=\nR:maxWireVersion.yml\na:0:0:444\nZ:Q1FIa032u0Cr4y4uAcRjrqePz3fMU=\nR:missingKey.json\na:0:0:444\nZ:Q1lYtThuFFgo5wtROgjDdL1aQqG/0=\nR:missingKey.yml\na:0:0:444\nZ:Q16rKBkZ45PbQEm/zKIfg508akGwk=\nR:noSchema.json\na:0:0:444\nZ:Q1VYDS9WF1CfzdFvIkT1d2miA+Q3s=\nR:noSchema.yml\na:0:0:444\nZ:Q1mI7EZUZgXWs1BaLTu7uSLVJFZsI=\nR:replaceOne.json\na:0:0:444\nZ:Q1AOWeq504nusO/yvthiX/eWH7kP4=\nR:replaceOne.yml\na:0:0:444\nZ:Q1U0RBr1mTSQSOT7XJng3+5ijt/mM=\nR:types.json\na:0:0:444\nZ:Q1XInBgD1mVputn68VGZosxIXGmww=\nR:types.yml\na:0:0:444\nZ:Q1SJBHOQzKQujn/bNUPgEMiOjUx3M=\nR:unsupportedCommand.json\na:0:0:444\nZ:Q1hCq1lj1/wGB+wSVhA/97knU4KLs=\nR:unsupportedCommand.yml\na:0:0:444\nZ:Q1D/R0/TanzXqKDGlLHuOyhiLM5LQ=\nR:updateMany.json\na:0:0:444\nZ:Q1D65W6sAh1GDbcAPt3Y+QdKh6YME=\nR:updateMany.yml\na:0:0:444\nZ:Q1VwnC3Al+eF3irjAR6AZFO2euPEU=\nR:updateOne.json\na:0:0:444\nZ:Q18/r3cLACpgv4kAlp3LcHKcoWw/0=\nR:updateOne.yml\na:0:0:444\nZ:Q12vKuY8DObbuvPEX/YfD9DsnnXk4=\nR:validatorAndPartialFieldExpression.json\na:0:0:444\nZ:Q147jW0hCj0qki8rZ+2CrzDIcWxek=\nR:validatorAndPartialFieldExpression.yml\na:0:0:444\nZ:Q1wIGuNVY0zUMCWGW/AT/Jw+yBfMk=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/client-side-encryption/unified\nM:0:0:555\nR:addKeyAltName.json\na:0:0:444\nZ:Q1ITD5ObCVcRhjcDA6Id7mYpvzLME=\nR:addKeyAltName.yml\na:0:0:444\nZ:Q1QdbWohC9VncdKngsTnJ6zyca/IE=\nR:createDataKey-kms_providers-invalid.json\na:0:0:444\nZ:Q1Guw+pn40RzsYKYOZCJ7PiHxYE/A=\nR:createDataKey-kms_providers-invalid.yml\na:0:0:444\nZ:Q1KmiOzVS7P6M57QOM2+ydPty0F+Q=\nR:createDataKey.json\na:0:0:444\nZ:Q1BIRYv3u0u0sEXkCgXBlq0o5CNmw=\nR:createDataKey.yml\na:0:0:444\nZ:Q1iynaDbewAcr76L3FArWELa8BD4k=\nR:deleteKey.json\na:0:0:444\nZ:Q1BH8zo7/oNAcCZoxP7f+CVeGSrCk=\nR:deleteKey.yml\na:0:0:444\nZ:Q1NIFBlC4chQl1iePPPyZNV7WT+mg=\nR:getKey.json\na:0:0:444\nZ:Q1ZF4D8yPuHud4xM+zEFic+1Gitrw=\nR:getKey.yml\na:0:0:444\nZ:Q1R3iqf0CQMDjZ8NqzlYGGR6aU9Es=\nR:getKeyByAltName.json\na:0:0:444\nZ:Q1LxeBzz5cAWJUDHy3sn9DVWng0jw=\nR:getKeyByAltName.yml\na:0:0:444\nZ:Q1uvxbJ/DzH8wuIrLu0rwj4QBjKN8=\nR:getKeys.json\na:0:0:444\nZ:Q1PWRDW8AOtSMakDhHSTS5+cmt5sU=\nR:getKeys.yml\na:0:0:444\nZ:Q1Vq0H+ssF0PsiAOrBXhNiytNfodg=\nR:removeKeyAltName.json\na:0:0:444\nZ:Q1l1T15SCEjI//vcVKMquLUpcBtWc=\nR:removeKeyAltName.yml\na:0:0:444\nZ:Q1mmiI1MBXi3v+MrJDF5wI4/0Wx/0=\nR:rewrapManyDataKey-decrypt_failure.json\na:0:0:444\nZ:Q19JdgqcFxIBATJvdYmEGBkMxMXJw=\nR:rewrapManyDataKey-decrypt_failure.yml\na:0:0:444\nZ:Q1uFUKyeimNj9VjgBHKOShw4bzul4=\nR:rewrapManyDataKey-encrypt_failure.json\na:0:0:444\nZ:Q12q9dGlsWZoSoSHaOfiHgbQmfMpc=\nR:rewrapManyDataKey-encrypt_failure.yml\na:0:0:444\nZ:Q1uGSkeMt5OpOZbWra1LUCSXu7jI0=\nR:rewrapManyDataKey.json\na:0:0:444\nZ:Q1UBG3CGuPhxwtyJ9diPailINz1hk=\nR:rewrapManyDataKey.yml\na:0:0:444\nZ:Q1+nqmzBGXpVrHdTc7qQCiyOZFBQE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/client-side-encryption-prose\nM:0:0:555\nR:change-streams-test.json\na:0:0:444\nZ:Q1uGHvrZqgb4Ewwcc1EStV88+x1ks=\nR:corpus-encrypted.json\na:0:0:444\nZ:Q1n5R7Axz8wsiYqhuoj8KlwMCluNU=\nR:corpus-key-aws.json\na:0:0:444\nZ:Q1eDwx8jUjt86L/YWLgR57rDoGVXQ=\nR:corpus-key-azure.json\na:0:0:444\nZ:Q1VY/Ksr3JSiSW+UMghTpWyT9bB24=\nR:corpus-key-gcp.json\na:0:0:444\nZ:Q12PSTMd/tJjpIjIGnCm5mkyx8Ewo=\nR:corpus-key-kmip.json\na:0:0:444\nZ:Q1b6Y1ax43VQaT+k63G6wXypS1Jxc=\nR:corpus-key-local.json\na:0:0:444\nZ:Q1lZYyqyt1T0Xfk/mkmYu2P1/omR4=\nR:corpus-schema.json\na:0:0:444\nZ:Q1Y2iY1FPd6xz9d4PMp/3OjDQx1y4=\nR:corpus.json\na:0:0:444\nZ:Q1yi/DjqcO+ht8O7AIpwBwYAjuMwY=\nR:encrypted-fields.json\na:0:0:444\nZ:Q14Qn9VeIE/xgfPmj8dg4mm9Mw5/E=\nR:external-key.json\na:0:0:444\nZ:Q1g7A5dYpCnTEjyzgfCK1DcAnXyro=\nR:external-schema.json\na:0:0:444\nZ:Q11GU3YreDeTWZlHQvSa93+bpV3fY=\nR:key1-document.json\na:0:0:444\nZ:Q10OTDvKdunsgiyW5oujl+75wk89Q=\nR:limits-doc.json\na:0:0:444\nZ:Q1cHkz+GKFqiwQuHGGjpYRjrtyOoY=\nR:limits-key.json\na:0:0:444\nZ:Q1g7A5dYpCnTEjyzgfCK1DcAnXyro=\nR:limits-schema.json\na:0:0:444\nZ:Q170UrKAB6JmzyOoUv4cN+lGOFusw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/client-side-operations-timeout\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1ujsQiaqkjDkokV7Bu51xNGTfO7E=\nR:bulkWrite.json\na:0:0:444\nZ:Q1wew6zOphIwLHuKcBLkPSnmXPg1A=\nR:bulkWrite.yml\na:0:0:444\nZ:Q1r7FbmoKPw+ucgMdKccW8XBHtBig=\nR:global-timeoutMS.json\na:0:0:444\nZ:Q1S6F+WkgBNumj8QCnbhRt7pWTBlA=\nR:global-timeoutMS.yml\na:0:0:444\nZ:Q1Kq+WRTYYhC7fJxlrDVp3g+F3vpg=\nR:override-operation-timeoutMS.json\na:0:0:444\nZ:Q15GkD1ejwImT24Qyk8JImsYIYZ4E=\nR:override-operation-timeoutMS.yml\na:0:0:444\nZ:Q1yJw9ajiiSQjEVT62gNi+xMxQ7NI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/collection-management\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q12UQG+FoRMVGlTSNP/H18DHSdEKs=\nR:clustered-indexes.json\na:0:0:444\nZ:Q1NZNRzjg+cI2bmJw3gg2BB+mLPiY=\nR:clustered-indexes.yml\na:0:0:444\nZ:Q1oRfxv1qoCpOY0uRDzpNx1pbYlmw=\nR:createCollection-pre_and_post_images.json\na:0:0:444\nZ:Q1+zlBaDAJbR5WdvCE0Cbe9lpEilA=\nR:createCollection-pre_and_post_images.yml\na:0:0:444\nZ:Q1nNW/p1V6tJ2MYHfIlX8dYssPS3M=\nR:modifyCollection-pre_and_post_images.json\na:0:0:444\nZ:Q1fSWIOJIc51vpEaVJ5cfhSwcn78Q=\nR:modifyCollection-pre_and_post_images.yml\na:0:0:444\nZ:Q1Xd8kBEZK+4iFpuA88DCOXBiIjWw=\nR:timeseries-collection.json\na:0:0:444\nZ:Q1EBIr7YgeS5jASzwzH6mMOwZet4w=\nR:timeseries-collection.yml\na:0:0:444\nZ:Q1Bd/gOXIKG1b8sFs/gSCW47m5H4w=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/command-monitoring\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q18oEaApl2t1Y39Rjz+wjLC/d/+Ps=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/command-monitoring/legacy\nM:0:0:555\nR:bulkWrite.json\na:0:0:444\nZ:Q1/Nuab8C85Y5eh5xhCc9R29i/iV0=\nR:bulkWrite.yml\na:0:0:444\nZ:Q1tL7T/dGc+e1tZZSSL7bAmodnkJs=\nR:command.json\na:0:0:444\nZ:Q1rr2K/qvzn/arx6drsjUDJL9Crl8=\nR:command.yml\na:0:0:444\nZ:Q17FFYvcT15iUvrTBBbCqIBOc/s5U=\nR:deleteMany.json\na:0:0:444\nZ:Q1ugv0q37BLGuhGHGLZOAVNS6jbew=\nR:deleteMany.yml\na:0:0:444\nZ:Q1NsbM6zzZKyxul8G/Uo7+pgZ3TUs=\nR:deleteOne.json\na:0:0:444\nZ:Q11o4bJMbJdsb1pqnccca5qNFaVXQ=\nR:deleteOne.yml\na:0:0:444\nZ:Q11g3AOkstJi80g91CZvRcWMZQQsA=\nR:find.json\na:0:0:444\nZ:Q1UK9wEK9uXhiutXBtR3iW8fyaYxg=\nR:find.yml\na:0:0:444\nZ:Q1/Q7DoKYm0EtnsEeFH9raGopmjjs=\nR:insertMany.json\na:0:0:444\nZ:Q1o9liX7RMYK73W1rnHxRLVBbEO9k=\nR:insertMany.yml\na:0:0:444\nZ:Q19Gov7yfhwTZ3QYFj6ysLbBF4ha0=\nR:insertOne.json\na:0:0:444\nZ:Q1e17uSA8fDbVp/nVwa1TiHUweFWU=\nR:insertOne.yml\na:0:0:444\nZ:Q1QFI+vJ0wzqA823LO1CJ3gBnNjiE=\nR:unacknowledgedBulkWrite.json\na:0:0:444\nZ:Q1nYE3FXWuQGqx+SL/iwbbZ/Dbjlo=\nR:unacknowledgedBulkWrite.yml\na:0:0:444\nZ:Q1G1jlGafc6jj0yLindoOKclhr+mg=\nR:updateMany.json\na:0:0:444\nZ:Q1fcbR2xGe/1JsT1w00kT3R02BsI0=\nR:updateMany.yml\na:0:0:444\nZ:Q17pztpVIsXJow5oF55bzcB2BKPBQ=\nR:updateOne.json\na:0:0:444\nZ:Q12bGo2uH0iNiOFSDJN+e4tXa7Jio=\nR:updateOne.yml\na:0:0:444\nZ:Q1Uix9joSEb7SO7F2uJTDaIZF3wkA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/command-monitoring/unified\nM:0:0:555\nR:pre-42-server-connection-id.json\na:0:0:444\nZ:Q1ZaUBzfmzzGYjyt7y1/upKpv1BkA=\nR:pre-42-server-connection-id.yml\na:0:0:444\nZ:Q10O0e9B7+6naFEMp+tFLL9G3mWrc=\nR:redacted-commands.json\na:0:0:444\nZ:Q1eFs3Uv616+qaHGRlnW2Z1DiHc60=\nR:redacted-commands.yml\na:0:0:444\nZ:Q1UJ9ZsjkFiC4f6k0uge5GuqZys/U=\nR:server-connection-id.json\na:0:0:444\nZ:Q1oNzAAAXA0noleIguZhEGkgc0znE=\nR:server-connection-id.yml\na:0:0:444\nZ:Q1LqQ+/+ifjID7tdOdyy8vr7sAK5U=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/connection-monitoring-and-pooling\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1ZXLa0rNYnB5yXwpKPkUf78aUzyI=\nR:connection-monitoring-and-pooling.rst\na:0:0:444\nZ:Q15JCsJd1WvqAY6gPpTLeQAogNV/w=\nR:connection-must-have-id.json\na:0:0:444\nZ:Q1j52cYcKgHeJ8icsyptjfCUJPKlQ=\nR:connection-must-have-id.yml\na:0:0:444\nZ:Q1vlyBmmyrcf0OlxEzAzaht5bxbRE=\nR:connection-must-order-ids.json\na:0:0:444\nZ:Q1igf2KD80N5EFjOVM1V/1oeT0pcE=\nR:connection-must-order-ids.yml\na:0:0:444\nZ:Q1kiiQ+LH1nnmN92DVefsuRj/OiYY=\nR:pool-checkin-destroy-closed.json\na:0:0:444\nZ:Q1MuL61bH+2DJhAabFyvZvY2qaPP4=\nR:pool-checkin-destroy-closed.yml\na:0:0:444\nZ:Q1L2khk0jUuFNITI898Jbhr7ygcQA=\nR:pool-checkin-destroy-stale.json\na:0:0:444\nZ:Q1Pdu+0KWVeEVJCfxSnQyo9twD7Wo=\nR:pool-checkin-destroy-stale.yml\na:0:0:444\nZ:Q1RhpMOYYomMV25xsBTLQZdZayaYQ=\nR:pool-checkin-make-available.json\na:0:0:444\nZ:Q1UUMlZzYBXnDBatHrE76TUDTTr68=\nR:pool-checkin-make-available.yml\na:0:0:444\nZ:Q1Q4gTdpCrYWzw5LiiV/c7kWdnADw=\nR:pool-checkin.json\na:0:0:444\nZ:Q12djl7CPcjzjfo0Lh8HuaJBI5Lbg=\nR:pool-checkin.yml\na:0:0:444\nZ:Q1xg9iPzsmXz/xYIkSCRb+mgB2TUw=\nR:pool-checkout-connection.json\na:0:0:444\nZ:Q1K5DBSdhfH/c2/7NfVtegbJhTTjk=\nR:pool-checkout-connection.yml\na:0:0:444\nZ:Q1sRzPtk3Majr2pAY2a6DpIuay2bc=\nR:pool-checkout-custom-maxConnecting-is-enforced.json\na:0:0:444\nZ:Q13G4EGNWDsMpyjElvFlI5hLOVlqk=\nR:pool-checkout-custom-maxConnecting-is-enforced.yml\na:0:0:444\nZ:Q1x0LEnFuvTW7Gx57iV1UnUz7hXbI=\nR:pool-checkout-error-closed.json\na:0:0:444\nZ:Q1W9V67YjxwmNkEVm4OiCkiG4Xxjg=\nR:pool-checkout-error-closed.yml\na:0:0:444\nZ:Q1twDakLmGrWiZuzp2+wqn0zk7SHo=\nR:pool-checkout-maxConnecting-is-enforced.json\na:0:0:444\nZ:Q1ZioFBWkeqHEQMSNOC8GPQbEEPhQ=\nR:pool-checkout-maxConnecting-is-enforced.yml\na:0:0:444\nZ:Q1FLhFvkatB56vE/E3LcEUlK7n7Nk=\nR:pool-checkout-maxConnecting-timeout.json\na:0:0:444\nZ:Q1F5JsjHcBCkS663JvTNRDsI6HnoQ=\nR:pool-checkout-maxConnecting-timeout.yml\na:0:0:444\nZ:Q1x1Mqov9KrIqGoTlNkLBioRMnz4w=\nR:pool-checkout-minPoolSize-connection-maxConnecting.json\na:0:0:444\nZ:Q1RIsNbiCzGKonSVs73JB+lWr0UXc=\nR:pool-checkout-minPoolSize-connection-maxConnecting.yml\na:0:0:444\nZ:Q1j9gl2CKGRpuLzWDyKb6tEAs6XLI=\nR:pool-checkout-multiple.json\na:0:0:444\nZ:Q1Lpz8Ch3XD03/NvBmuPT1gkT6feY=\nR:pool-checkout-multiple.yml\na:0:0:444\nZ:Q1cQgXz+RfMoKpZY3th18DJxyFeOM=\nR:pool-checkout-no-idle.json\na:0:0:444\nZ:Q1e7A4tzoX0XuYvr9U3g5n2ev4Phw=\nR:pool-checkout-no-idle.yml\na:0:0:444\nZ:Q1jKexEhPx0CstTFoWxi/AxkFbDnU=\nR:pool-checkout-no-stale.json\na:0:0:444\nZ:Q1/1r5USa+issM1dekj4ALlTarvTY=\nR:pool-checkout-no-stale.yml\na:0:0:444\nZ:Q1waJFhiVVBI7vbLnr3OSddFkDDyg=\nR:pool-checkout-returned-connection-maxConnecting.json\na:0:0:444\nZ:Q1KQ3xk88SuFI+hL8cRcGorvYrBSY=\nR:pool-checkout-returned-connection-maxConnecting.yml\na:0:0:444\nZ:Q17DYYjmFrlXrOY5vKUTeqpcjEjG4=\nR:pool-clear-clears-waitqueue.json\na:0:0:444\nZ:Q1IIBnvf4qczoqNYwZolNpmTr3Dno=\nR:pool-clear-clears-waitqueue.yml\na:0:0:444\nZ:Q1ZaixD6bbgda0x4OPXx/Mjm6TCo4=\nR:pool-clear-min-size.json\na:0:0:444\nZ:Q16agIQnMcvIs+EaeJLlJUxFMyr04=\nR:pool-clear-min-size.yml\na:0:0:444\nZ:Q1bT8/volC7Ghr92DffBl2nK3Sazc=\nR:pool-clear-paused.json\na:0:0:444\nZ:Q1cKySJdT1MT22Hh4i5Xx9rT4K1Rg=\nR:pool-clear-paused.yml\na:0:0:444\nZ:Q1I3HT7HH212HFKFQ2xV+5j4PqJiw=\nR:pool-clear-ready.json\na:0:0:444\nZ:Q1e9aAxstjKeEKDhT88i2yIuq3yj8=\nR:pool-clear-ready.yml\na:0:0:444\nZ:Q1upCQdqrgq+4bMjpDvYvu9eqvDBk=\nR:pool-close-destroy-conns.json\na:0:0:444\nZ:Q1oIfra5rYysIwuulVxh086601sRU=\nR:pool-close-destroy-conns.yml\na:0:0:444\nZ:Q1QOrJjwyYuEQYa7QciLu/xCrc7Dg=\nR:pool-close.json\na:0:0:444\nZ:Q1RDIqe2JuhZ8slE3WMk7fVupsgcQ=\nR:pool-close.yml\na:0:0:444\nZ:Q1Y1hQcG480XvkP+1dxJluuXItzZQ=\nR:pool-create-max-size.json\na:0:0:444\nZ:Q1dG7tzK38rMpkpNn6HSaEoQ9WRLY=\nR:pool-create-max-size.yml\na:0:0:444\nZ:Q1a+1pT5dCjsXybuJydk4suZ9/HWw=\nR:pool-create-min-size-error.json\na:0:0:444\nZ:Q169qEPacCf4ylrjSU+zKYibEu+bs=\nR:pool-create-min-size-error.yml\na:0:0:444\nZ:Q1x671LfhinR3A8Tj8X5kD8qtBuF4=\nR:pool-create-min-size.json\na:0:0:444\nZ:Q1Qe19mTaX0Wad3j2j/Ojg5LrcZvw=\nR:pool-create-min-size.yml\na:0:0:444\nZ:Q1bpEiMzvCIqZMso3LFm1euY4AOEQ=\nR:pool-create-with-options.json\na:0:0:444\nZ:Q1Nuyh4d9MmSlMe4pupYa6QZJwRzQ=\nR:pool-create-with-options.yml\na:0:0:444\nZ:Q1kM3ZrCdwOcVZuMESB+msei8CTdw=\nR:pool-create.json\na:0:0:444\nZ:Q1DYbHiiP/9HL/CAOKb371OPTE9TE=\nR:pool-create.yml\na:0:0:444\nZ:Q1AzVGe3mnv4jA7Vwye+KZHeLTQ50=\nR:pool-ready-ready.json\na:0:0:444\nZ:Q1I6NpvKll6HvMe5iVT/Ma2NV1WLo=\nR:pool-ready-ready.yml\na:0:0:444\nZ:Q16KDzlFW/QII7zGJRk5YLfrRgjtU=\nR:pool-ready.json\na:0:0:444\nZ:Q1J956fcnt3suiAmLoo9dvRSIkp9w=\nR:pool-ready.yml\na:0:0:444\nZ:Q1/43HqZRKh8WrDvbRmc5kBKxRaZU=\nR:wait-queue-fairness.json\na:0:0:444\nZ:Q1mOqGqZSUErQYGrZhQDKwMs7NozE=\nR:wait-queue-fairness.yml\na:0:0:444\nZ:Q1Q4HFwS2i/Ql52G5l4Wv0lLFEaIs=\nR:wait-queue-timeout.json\na:0:0:444\nZ:Q1gdaMuNfpsKdXblvzpuSqGnoM2ZE=\nR:wait-queue-timeout.yml\na:0:0:444\nZ:Q1v+A9bKYYP869tmNq0OgUWaVX0TM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/connection-string\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1DkwMG5t5zG2quEKhywHiH9NJK0o=\nR:invalid-uris.json\na:0:0:444\nZ:Q11dz4Qk/hRZ5ZE1ccNHAeA+N24+k=\nR:invalid-uris.yml\na:0:0:444\nZ:Q1XgzMJn8ZJCUrdS1JDmyGH4cLRPU=\nR:valid-auth.json\na:0:0:444\nZ:Q1IR2EKpYtYKWGsCbFffP5S012uwU=\nR:valid-auth.yml\na:0:0:444\nZ:Q18gWVIPO0wb+Qp+yndy52kik59Gw=\nR:valid-db-with-dotted-name.json\na:0:0:444\nZ:Q1u7scJnlc1F+UGyJcQ8Nf3fMm6NU=\nR:valid-db-with-dotted-name.yml\na:0:0:444\nZ:Q1YRLA6YkzSn4iKUcnQqx05Kl+5EI=\nR:valid-host_identifiers.json\na:0:0:444\nZ:Q1a4YTrgeyB/nP1dk+icrOFperdIA=\nR:valid-host_identifiers.yml\na:0:0:444\nZ:Q1AoMiKIqL1n+uBlEDbyepNUtIPQk=\nR:valid-options.json\na:0:0:444\nZ:Q15gz2Hic5hZcZola6jCZj8fuHRtM=\nR:valid-options.yml\na:0:0:444\nZ:Q1B2YT/wz73n8C4nte3t4iRDrs9aQ=\nR:valid-unix_socket-absolute.json\na:0:0:444\nZ:Q1Gwp0UV3sHHSe9gsINMwud5Wsc48=\nR:valid-unix_socket-absolute.yml\na:0:0:444\nZ:Q1p5latpneBGdzYkHIqCQFM3xB0G0=\nR:valid-unix_socket-relative.json\na:0:0:444\nZ:Q1mIc8BdcGfjjMhwe/+APUhnedf0Y=\nR:valid-unix_socket-relative.yml\na:0:0:444\nZ:Q1Fj1hL8J18HPqR+ve6qiZ72TIMyc=\nR:valid-warnings.json\na:0:0:444\nZ:Q1EdtNFDXOVyLVuRu8rkf9OIYLGaw=\nR:valid-warnings.yml\na:0:0:444\nZ:Q1RIP/xpvH7xBImcHksOxvCv0x3Is=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/convenient-transactions\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1FiAzqc8anV2tzlKI/5N2265yVa8=\nR:callback-aborts.json\na:0:0:444\nZ:Q1nlDJ8xQPp65WwgmikUvfohtFixE=\nR:callback-aborts.yml\na:0:0:444\nZ:Q11kVpypyEkKjeItNGYfhu3UDIvk8=\nR:callback-commits.json\na:0:0:444\nZ:Q1MQTb5m+v12Q2xdEXXL7gQIpT7Cg=\nR:callback-commits.yml\na:0:0:444\nZ:Q1+RG5CGawRBsWoB79kEgQso4RukI=\nR:callback-retry.json\na:0:0:444\nZ:Q12GAhkGFRfWsYvoMe70N5Au33SqA=\nR:callback-retry.yml\na:0:0:444\nZ:Q1uaeL3QBtGTxDtGCk72ipARZLbVs=\nR:commit-retry.json\na:0:0:444\nZ:Q1EF/ARna2mGxloH2YS0pC6dW/7Eo=\nR:commit-retry.yml\na:0:0:444\nZ:Q1xymI/nOcO6BsluiAmSux+PrPMW8=\nR:commit-transienttransactionerror-4.2.json\na:0:0:444\nZ:Q1YRvQncYaM14kAVmnRoExxwhhIyg=\nR:commit-transienttransactionerror-4.2.yml\na:0:0:444\nZ:Q1vf17hW1exiYiAiw+ORyh86SrhgE=\nR:commit-transienttransactionerror.json\na:0:0:444\nZ:Q1LLTDzhI9S8SKDs7/L7wZZz/BLRM=\nR:commit-transienttransactionerror.yml\na:0:0:444\nZ:Q1FAG5twCYe3RwIT7wgTtGp+pacSM=\nR:commit-writeconcernerror.json\na:0:0:444\nZ:Q1Gq8APu54n8nJPsecsa/u6f9EzBk=\nR:commit-writeconcernerror.yml\na:0:0:444\nZ:Q1gqHbLo1CFE34bpVA98P5ddXTVSQ=\nR:commit.json\na:0:0:444\nZ:Q1OTdsB4qG7ifmPZBk9J290JbAwYE=\nR:commit.yml\na:0:0:444\nZ:Q1c14QQ9D4IWEcgA6t1VsVM5Z6ldE=\nR:transaction-options.json\na:0:0:444\nZ:Q1s9VSVNYdbvRBhFsMSQzlN77UcHw=\nR:transaction-options.yml\na:0:0:444\nZ:Q1Y7WlELN/WLtA/FX1CPzW37IHE0c=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/crud\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1MbL0tAWsKWa+lw9YW4o8k/qIkng=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/crud/unified\nM:0:0:555\nR:aggregate-allowdiskuse.json\na:0:0:444\nZ:Q1b40qaaVX/roAumzyGpq7jR3eWVc=\nR:aggregate-allowdiskuse.yml\na:0:0:444\nZ:Q1FQMWfKPy1hjNRpksOZbsnK+ODIo=\nR:aggregate-let.json\na:0:0:444\nZ:Q1Wdpwvh2KKuKjHShc/aBGs2IBKDM=\nR:aggregate-let.yml\na:0:0:444\nZ:Q1TvtFMjstItzaKNX46XF2M7UfanQ=\nR:aggregate-merge.json\na:0:0:444\nZ:Q1zdcmFN4AXF4E9hKobDZLZ3M0rhc=\nR:aggregate-merge.yml\na:0:0:444\nZ:Q1RFIuHz/o+4rcRz7CkUUSMJBDT70=\nR:aggregate-out-readConcern.json\na:0:0:444\nZ:Q1ENkZj9TiJa8PdAwFGUF0x60hlIs=\nR:aggregate-out-readConcern.yml\na:0:0:444\nZ:Q1RC6LJ45vSyl4D9Hd6ITIPFlgQx4=\nR:aggregate-write-readPreference.json\na:0:0:444\nZ:Q18dy0shro2ZhA9Ep0N9EySf1l+6k=\nR:aggregate-write-readPreference.yml\na:0:0:444\nZ:Q1YmmUTywWTiALAiLPnuw7lmTe56U=\nR:aggregate.json\na:0:0:444\nZ:Q1WgNKZLUvkzd/zJPIcYp1H7IC5aA=\nR:aggregate.yml\na:0:0:444\nZ:Q1JA643JVA0S9QZiVOV6hbtbtpUVY=\nR:bulkWrite-arrayFilters-clientError.json\na:0:0:444\nZ:Q1O11ovTi1kTmQYU9OWlTJMIPeNk4=\nR:bulkWrite-arrayFilters-clientError.yml\na:0:0:444\nZ:Q1PTR8npWC83jcKF7gOSXBsLoAEi0=\nR:bulkWrite-arrayFilters.json\na:0:0:444\nZ:Q11qHRXBodSRD/mh23Web0L620BKo=\nR:bulkWrite-arrayFilters.yml\na:0:0:444\nZ:Q1o6FPFV8v1er/NlL/c1+3k0hCJ9k=\nR:bulkWrite-comment.json\na:0:0:444\nZ:Q1fMdZh4Rh4gMhydvOkyBQsNvq1Bw=\nR:bulkWrite-comment.yml\na:0:0:444\nZ:Q1f+6hjCPKA2lSx0IO6dF9ZAx/7oU=\nR:bulkWrite-delete-hint-clientError.json\na:0:0:444\nZ:Q1Z0ZVYlhnBwcm0yuyXgIxbihnxPM=\nR:bulkWrite-delete-hint-clientError.yml\na:0:0:444\nZ:Q106+sAEKukpQKXqgfEJY1bhKPpjQ=\nR:bulkWrite-delete-hint-serverError.json\na:0:0:444\nZ:Q12kwQthmz7OdOX24M2m4Cc3Cx/tA=\nR:bulkWrite-delete-hint-serverError.yml\na:0:0:444\nZ:Q1iBrgdDzMsEd7rSKasWJCawzSXow=\nR:bulkWrite-delete-hint.json\na:0:0:444\nZ:Q1CzfWHV0mQT9mwiwRo6k6pINfm7A=\nR:bulkWrite-delete-hint.yml\na:0:0:444\nZ:Q1wqeF+/D/Gg9z1dFiz1i4ywRt1xs=\nR:bulkWrite-deleteMany-let.json\na:0:0:444\nZ:Q1BwFxMWE+wShJ4DC9asS8IQz+sZg=\nR:bulkWrite-deleteMany-let.yml\na:0:0:444\nZ:Q1Oz08VyQAK5caWSukbyaGdYdnB+M=\nR:bulkWrite-deleteOne-let.json\na:0:0:444\nZ:Q1n4gayEuhZLBGZFu4TDk93k7PG1I=\nR:bulkWrite-deleteOne-let.yml\na:0:0:444\nZ:Q114GrsEHidPu3wNx7AjPIHI0gO8Y=\nR:bulkWrite-insertOne-dots_and_dollars.json\na:0:0:444\nZ:Q1jnEUTlHiFvVBcZvFcoWjYPNoYqM=\nR:bulkWrite-insertOne-dots_and_dollars.yml\na:0:0:444\nZ:Q1Yhnlhn+DHMEyfIfruSnV1TVkUrM=\nR:bulkWrite-replaceOne-dots_and_dollars.json\na:0:0:444\nZ:Q1ADj14Cj026LvZhwGq3sIgenQg70=\nR:bulkWrite-replaceOne-dots_and_dollars.yml\na:0:0:444\nZ:Q1B3wU3o4AP4fGlhG15OqNUPpkrX8=\nR:bulkWrite-replaceOne-let.json\na:0:0:444\nZ:Q1bQJ58oBUEBl5QBFCdEqHgvGq4Pk=\nR:bulkWrite-replaceOne-let.yml\na:0:0:444\nZ:Q11tul1GPL4F9uIJjuDxSIFUzYzes=\nR:bulkWrite-update-hint-clientError.json\na:0:0:444\nZ:Q1QlUcGaitt4WcG/PP7fPlC7Eli6I=\nR:bulkWrite-update-hint-clientError.yml\na:0:0:444\nZ:Q1F32kRVPkB9mz2EONPvBjlLWG57U=\nR:bulkWrite-update-hint-serverError.json\na:0:0:444\nZ:Q1QR0FS21p3dBZl6PEZP69Y2nlD/4=\nR:bulkWrite-update-hint-serverError.yml\na:0:0:444\nZ:Q1sHlb44eZJNpKKzMrjd/Zn/RUzPw=\nR:bulkWrite-update-hint.json\na:0:0:444\nZ:Q1VocdfEJMd5nU8zy0Rqj+2BSD2gc=\nR:bulkWrite-update-hint.yml\na:0:0:444\nZ:Q1CVr6NR0hcKedaUPF4XeGQPTdzv4=\nR:bulkWrite-update-validation.json\na:0:0:444\nZ:Q1OAC5gYfsqCx4v+43elQrBPAlYLs=\nR:bulkWrite-update-validation.yml\na:0:0:444\nZ:Q1rno8GYA55c/6lC2XxbN9jbo1U1g=\nR:bulkWrite-updateMany-dots_and_dollars.json\na:0:0:444\nZ:Q1loDg/iOYb70UY1kudx8TrP4E9sw=\nR:bulkWrite-updateMany-dots_and_dollars.yml\na:0:0:444\nZ:Q1ybTeEXG7XT2pnjzCPzjqxshTKGU=\nR:bulkWrite-updateMany-let.json\na:0:0:444\nZ:Q1XDMrBbrbYEUEfks/yBnZvSL5UcU=\nR:bulkWrite-updateMany-let.yml\na:0:0:444\nZ:Q1XutWhBOtwsIiN1+dKFVbOcWQ4GE=\nR:bulkWrite-updateOne-dots_and_dollars.json\na:0:0:444\nZ:Q1C6bZvvy2LrmbdqS93QtaX4humuw=\nR:bulkWrite-updateOne-dots_and_dollars.yml\na:0:0:444\nZ:Q1lzE9lAzso2EwAioYY8MvoS3pCWw=\nR:bulkWrite-updateOne-let.json\na:0:0:444\nZ:Q1ABMDQy4BucM0LkCUrv2h/pib5Nc=\nR:bulkWrite-updateOne-let.yml\na:0:0:444\nZ:Q118wDDPk76WwDh+E1i5DcxxLa3HU=\nR:countDocuments-comment.json\na:0:0:444\nZ:Q18pxlJxXRMdLRZt0Fr2Oivzv6SRU=\nR:countDocuments-comment.yml\na:0:0:444\nZ:Q112hb7n8TMST2VRTkdj5aQoJvj5g=\nR:db-aggregate-write-readPreference.json\na:0:0:444\nZ:Q1JBBpccmXiYUnb7PMi7hZN48ITic=\nR:db-aggregate-write-readPreference.yml\na:0:0:444\nZ:Q12UiFZmwF54r5cpT8sJ+frxu59sw=\nR:db-aggregate.json\na:0:0:444\nZ:Q1W7VIhMreaGKOU3uYrMqO8RFgNjo=\nR:db-aggregate.yml\na:0:0:444\nZ:Q137oxh6aN0j2xVNKDeoa7DbnD1Fg=\nR:deleteMany-comment.json\na:0:0:444\nZ:Q1pkou8J30CPutCnbADexBAESD4og=\nR:deleteMany-comment.yml\na:0:0:444\nZ:Q1/BC004JPx3Q81YlpS2WQux4kbtE=\nR:deleteMany-hint-clientError.json\na:0:0:444\nZ:Q1g2DOH9DsXVd+TAOsOZADbs4Dssw=\nR:deleteMany-hint-clientError.yml\na:0:0:444\nZ:Q1/h+qsNo2BI/zVQigFYz5c7hdZZ8=\nR:deleteMany-hint-serverError.json\na:0:0:444\nZ:Q1xL5ni0S9/jmDi+XxsxMNknKVBM0=\nR:deleteMany-hint-serverError.yml\na:0:0:444\nZ:Q1dVBOHtDijYmoMWSZLO8/EZMgVUI=\nR:deleteMany-hint.json\na:0:0:444\nZ:Q1TNzcuXB40oPL0Lb6byd2S56GZzA=\nR:deleteMany-hint.yml\na:0:0:444\nZ:Q10jt6lvN2I2mwhawj2yyvWZnmg1s=\nR:deleteMany-let.json\na:0:0:444\nZ:Q1Pt5wF/m8yahyhEjgfZleUHoDQgg=\nR:deleteMany-let.yml\na:0:0:444\nZ:Q10EDGfcwaQudwkn3z3MkMn0zZx0E=\nR:deleteOne-comment.json\na:0:0:444\nZ:Q1a0xEvrwAuZ+8c9YKatd+TexSqvI=\nR:deleteOne-comment.yml\na:0:0:444\nZ:Q1tIl4fj+3a67BAdMuC8WHCJtFldM=\nR:deleteOne-hint-clientError.json\na:0:0:444\nZ:Q1WkYsLp2xeRrmcFxCZyJK7LEaq5Y=\nR:deleteOne-hint-clientError.yml\na:0:0:444\nZ:Q1AvG4PfD6bYlfgH96gGDg7irYQxI=\nR:deleteOne-hint-serverError.json\na:0:0:444\nZ:Q1PGmL6GJiN4yRJXq5zQT+Dr3zwOA=\nR:deleteOne-hint-serverError.yml\na:0:0:444\nZ:Q17ZgWWpHzECf2WTR3WYFHHJrUGtk=\nR:deleteOne-hint.json\na:0:0:444\nZ:Q12wvTGtA6QPaC1/3fj0IMlNKfEfQ=\nR:deleteOne-hint.yml\na:0:0:444\nZ:Q1EP8ueQmooNlxMUZq3uuZWR0eeWs=\nR:deleteOne-let.json\na:0:0:444\nZ:Q1xIPkgggdGMVe3eQx9ufIp9KRqgA=\nR:deleteOne-let.yml\na:0:0:444\nZ:Q17HhPOabDcY3zM+RuqlScVbBQL84=\nR:distinct-comment.json\na:0:0:444\nZ:Q1o+ngHin72nu1XZ4Os0S/diAOdqs=\nR:distinct-comment.yml\na:0:0:444\nZ:Q19e6E7X0fzh5n9APo66WoNr0cXVw=\nR:estimatedDocumentCount-comment.json\na:0:0:444\nZ:Q1D8F1t0jJuyFEkgS3v1u4nfVXkj4=\nR:estimatedDocumentCount-comment.yml\na:0:0:444\nZ:Q1heunh2qqAzISVyUaCasPnXxN7dc=\nR:estimatedDocumentCount.json\na:0:0:444\nZ:Q1OKzV5euLCEecBDI/OXuX+MLrywI=\nR:estimatedDocumentCount.yml\na:0:0:444\nZ:Q1y/jxIomJ/Q/Fel+9RB5N2Nms6/I=\nR:find-allowdiskuse-clientError.json\na:0:0:444\nZ:Q1Lf689iuSCIOkEjxvC27uzVpg2hg=\nR:find-allowdiskuse-clientError.yml\na:0:0:444\nZ:Q1kyc+BjGoyXBbHXHJcXOe9bSNjbM=\nR:find-allowdiskuse-serverError.json\na:0:0:444\nZ:Q1nXqKYdV4JsOmN4ApFbkDVYVRgCE=\nR:find-allowdiskuse-serverError.yml\na:0:0:444\nZ:Q1Zf/2vuupnSpCmszRyVua6Mo3ifA=\nR:find-allowdiskuse.json\na:0:0:444\nZ:Q1jyRv62qNw4dv3MnrqsYX23XsI90=\nR:find-allowdiskuse.yml\na:0:0:444\nZ:Q1FjT5JU/iV/x9VUGa7HmmcasDP44=\nR:find-comment.json\na:0:0:444\nZ:Q1JgZWAaannldEoDCuguL8clNYMYc=\nR:find-comment.yml\na:0:0:444\nZ:Q1s9dsCLesQyYwGf5r/67gFAjm0+k=\nR:find-let.json\na:0:0:444\nZ:Q11yDMuYrBaVXLg2VlkJrOWjt7lsg=\nR:find-let.yml\na:0:0:444\nZ:Q1l6Di6HHVTGI4AD6Osh/X2wnIyq8=\nR:find.json\na:0:0:444\nZ:Q1Q6rkQhYFQunZRvU9OkAHoe0s1xg=\nR:find.yml\na:0:0:444\nZ:Q158CV6baN9ENGFfPH15Hb82f+J9M=\nR:findOneAndDelete-comment.json\na:0:0:444\nZ:Q14hodqPVGvqWk1sg9nGjEqU4Q/MY=\nR:findOneAndDelete-comment.yml\na:0:0:444\nZ:Q10/2O0Qq2VDu8J4dkD/k7cTxfhoM=\nR:findOneAndDelete-hint-clientError.json\na:0:0:444\nZ:Q1rDYFOHTsdrzopIWnaRsh3Nrs9+4=\nR:findOneAndDelete-hint-clientError.yml\na:0:0:444\nZ:Q1dBhGvq/0Tt0sIZV8TBrsGBhDsVw=\nR:findOneAndDelete-hint-serverError.json\na:0:0:444\nZ:Q1afBHeXmpflId80qBzm4PcpMbpNs=\nR:findOneAndDelete-hint-serverError.yml\na:0:0:444\nZ:Q1rD+zrFyVAuSTucN12esOI7isdNk=\nR:findOneAndDelete-hint.json\na:0:0:444\nZ:Q19/FjPoh9cruQfo6TGGeZAPZn+II=\nR:findOneAndDelete-hint.yml\na:0:0:444\nZ:Q1Csd6RBE7GskCy17PL+ESY7Oswls=\nR:findOneAndDelete-let.json\na:0:0:444\nZ:Q1Bov/bohRGlBa4gki0D81MVxIe0w=\nR:findOneAndDelete-let.yml\na:0:0:444\nZ:Q1YYUz6tVkiP/maQQBhb8GduGmQMs=\nR:findOneAndReplace-comment.json\na:0:0:444\nZ:Q1wViQEa8iXuRm4klDmwoyt4w34pQ=\nR:findOneAndReplace-comment.yml\na:0:0:444\nZ:Q14p3wE1bLQrpwyhlYHHlVHV3OLGY=\nR:findOneAndReplace-dots_and_dollars.json\na:0:0:444\nZ:Q1+q6HQTw9JoExzRBivQpBE607HdY=\nR:findOneAndReplace-dots_and_dollars.yml\na:0:0:444\nZ:Q1TcH9G6FYl6BPU7xe84n2Sco6wdY=\nR:findOneAndReplace-hint-clientError.json\na:0:0:444\nZ:Q1waXT5xXlm4GKv2nxZqeWyWKOoSw=\nR:findOneAndReplace-hint-clientError.yml\na:0:0:444\nZ:Q1diAOMyrF34+gU6lOrvRZkmiUBs8=\nR:findOneAndReplace-hint-serverError.json\na:0:0:444\nZ:Q1ugC7MFNSRsg49d1u8zlVMFzhtLA=\nR:findOneAndReplace-hint-serverError.yml\na:0:0:444\nZ:Q1nbthFI92BWGgjT5ksVSecMHnQ5c=\nR:findOneAndReplace-hint.json\na:0:0:444\nZ:Q1MaapyVufoCcNjkg0hqKlzqZdiFw=\nR:findOneAndReplace-hint.yml\na:0:0:444\nZ:Q1ehzf2jaZb1CYYZDQ2plehdHpGtQ=\nR:findOneAndReplace-let.json\na:0:0:444\nZ:Q13LnDW6p/QLV52mk7eEo622r0ySk=\nR:findOneAndReplace-let.yml\na:0:0:444\nZ:Q1ou3gy6W5VMEtdtpfn1tH+axcdj0=\nR:findOneAndUpdate-comment.json\na:0:0:444\nZ:Q1TjLZlohLDUz6VmZtAHXAVoIR80E=\nR:findOneAndUpdate-comment.yml\na:0:0:444\nZ:Q1VMDPLOySYMA4Poe9wf8ChRUuP7Q=\nR:findOneAndUpdate-dots_and_dollars.json\na:0:0:444\nZ:Q1GfbcbRqsPb42BVUr+d40qBLvELg=\nR:findOneAndUpdate-dots_and_dollars.yml\na:0:0:444\nZ:Q1khvBTTpPauHx/AquAkHWePQ8mkU=\nR:findOneAndUpdate-hint-clientError.json\na:0:0:444\nZ:Q16zIJdhX+MZcJZS6TJQrW0+P4R3g=\nR:findOneAndUpdate-hint-clientError.yml\na:0:0:444\nZ:Q15eFzijiZGIBj0y74pVcnAe30gV8=\nR:findOneAndUpdate-hint-serverError.json\na:0:0:444\nZ:Q1B31UWLAz9s+cvzlaC9UJeT/MpFI=\nR:findOneAndUpdate-hint-serverError.yml\na:0:0:444\nZ:Q1UrUjJTgBcgdYmdVErdPO4X9Xx3s=\nR:findOneAndUpdate-hint.json\na:0:0:444\nZ:Q1Cj2nHhl0J8ggMT1V2XsXB5mY9eo=\nR:findOneAndUpdate-hint.yml\na:0:0:444\nZ:Q1DT74FjfrlWswI8aziAssAmh/r7g=\nR:findOneAndUpdate-let.json\na:0:0:444\nZ:Q1dKqhlQTlhDX6b/mVli01hoJZIqA=\nR:findOneAndUpdate-let.yml\na:0:0:444\nZ:Q1kAYhUuvuql9jI3HkCKjXZKpFBI0=\nR:insertMany-comment.json\na:0:0:444\nZ:Q17OdP8unGOB/btHLNOqh+YzGWOdI=\nR:insertMany-comment.yml\na:0:0:444\nZ:Q1ZG+eZyTISHHbWSShJ010JQBF1Ks=\nR:insertMany-dots_and_dollars.json\na:0:0:444\nZ:Q10Lui/1RC3qFJimXGzSLR1aPbzio=\nR:insertMany-dots_and_dollars.yml\na:0:0:444\nZ:Q19C5wWy0uHGiATq15zZHwa+VMAu0=\nR:insertOne-comment.json\na:0:0:444\nZ:Q1EDld3NS7ncSfPg8YayTOqQtJbNg=\nR:insertOne-comment.yml\na:0:0:444\nZ:Q1dXXb9WdlkO6oCbDIoPTDxIq9Z6U=\nR:insertOne-dots_and_dollars.json\na:0:0:444\nZ:Q1DbJ0Nfgqtp4yQ0IOyljl0JpJnNQ=\nR:insertOne-dots_and_dollars.yml\na:0:0:444\nZ:Q16UjC0/HJoJbqpRxYPsqkYu0e/R4=\nR:replaceOne-comment.json\na:0:0:444\nZ:Q1HTeNmtPY1uFgbKKpqozEyjvGAU0=\nR:replaceOne-comment.yml\na:0:0:444\nZ:Q1A62aOdBKQHKiYEbkqr0Jyq/tx0A=\nR:replaceOne-dots_and_dollars.json\na:0:0:444\nZ:Q1uAOkS7zIyEpYr4Rc/9RAmssfeK4=\nR:replaceOne-dots_and_dollars.yml\na:0:0:444\nZ:Q1SPcvee+dbXp7sI65a6vAiSM970E=\nR:replaceOne-hint.json\na:0:0:444\nZ:Q18vc9hsPZZU47ZASpS3W8w7a4XrY=\nR:replaceOne-hint.yml\na:0:0:444\nZ:Q130gjIiuDd00XJJ3kHYDD3QAjkAs=\nR:replaceOne-let.json\na:0:0:444\nZ:Q1iHZey64KIpjJqFVuS+JKAqfvgkM=\nR:replaceOne-let.yml\na:0:0:444\nZ:Q1Lpt54ZA40JFp3wDbP49rsV9eaXs=\nR:replaceOne-validation.json\na:0:0:444\nZ:Q1ZpzdYf1b7+k7j3JpbDgSGHdkWnI=\nR:replaceOne-validation.yml\na:0:0:444\nZ:Q1hRoM/MVK9FFGGkWk9xz9F8q3ORQ=\nR:unacknowledged-bulkWrite-delete-hint-clientError.json\na:0:0:444\nZ:Q1g/bfWHt7xtJycbSSyIDP1qeFNyw=\nR:unacknowledged-bulkWrite-delete-hint-clientError.yml\na:0:0:444\nZ:Q1EQCPZhj4ezczcCdu66JHZotw92w=\nR:unacknowledged-bulkWrite-update-hint-clientError.json\na:0:0:444\nZ:Q1Vb5w89359K33xp1tDp4tCuud4mA=\nR:unacknowledged-bulkWrite-update-hint-clientError.yml\na:0:0:444\nZ:Q1BFuGIXZC78+VnC69JrmWHLMl2rM=\nR:unacknowledged-deleteMany-hint-clientError.json\na:0:0:444\nZ:Q10LXAi60pQMd1Nm0qz1CPdrvHMl8=\nR:unacknowledged-deleteMany-hint-clientError.yml\na:0:0:444\nZ:Q1kVrDmaP3vrsgY9PoFiQOAjvsvo8=\nR:unacknowledged-deleteOne-hint-clientError.json\na:0:0:444\nZ:Q12P06SGi7DZl5laGrEbetIQDYfNk=\nR:unacknowledged-deleteOne-hint-clientError.yml\na:0:0:444\nZ:Q1nuVox7OS8usB81luISPD17he3E8=\nR:unacknowledged-findOneAndDelete-hint-clientError.json\na:0:0:444\nZ:Q1DaYN//e3k1kqilSFEc+YCfpGEkQ=\nR:unacknowledged-findOneAndDelete-hint-clientError.yml\na:0:0:444\nZ:Q1oDzruzRq2EjcEOHnISmUZlKs+AM=\nR:unacknowledged-findOneAndReplace-hint-clientError.json\na:0:0:444\nZ:Q13CwygpAnbkIzO13Wzdw1DgIwt7o=\nR:unacknowledged-findOneAndReplace-hint-clientError.yml\na:0:0:444\nZ:Q1TRDFrviaxSZ8oATm8gmU9QghMGs=\nR:unacknowledged-findOneAndUpdate-hint-clientError.json\na:0:0:444\nZ:Q1KERS8AsOTJOP89sOPLw4M8/4O6I=\nR:unacknowledged-findOneAndUpdate-hint-clientError.yml\na:0:0:444\nZ:Q1/svdOQ3KkDxMuMcoaHFobG8gMuI=\nR:unacknowledged-replaceOne-hint-clientError.json\na:0:0:444\nZ:Q117/1zAvWPidb77gvfaIRsIudeMg=\nR:unacknowledged-replaceOne-hint-clientError.yml\na:0:0:444\nZ:Q1KOsOLE1vEWmwYk2B1wPe19qOEyg=\nR:unacknowledged-updateMany-hint-clientError.json\na:0:0:444\nZ:Q13EOm6RdTlq2c3NS46Wp28BPGeAo=\nR:unacknowledged-updateMany-hint-clientError.yml\na:0:0:444\nZ:Q1bCd/HUnp565i849SLk4crHmvqpM=\nR:unacknowledged-updateOne-hint-clientError.json\na:0:0:444\nZ:Q1j13VBWkP2kZwh9K9O41sfZc83zI=\nR:unacknowledged-updateOne-hint-clientError.yml\na:0:0:444\nZ:Q1+veT4L7yn2LDMbYk2MLFP10WLeM=\nR:updateMany-comment.json\na:0:0:444\nZ:Q1zRMVgRkX3+rTnK2FVxmH1hsxnH0=\nR:updateMany-comment.yml\na:0:0:444\nZ:Q1aQzafpCNU3s0hE5L0AlsB1GYmAE=\nR:updateMany-dots_and_dollars.json\na:0:0:444\nZ:Q1rZU0dVCFG4xDZAeLwKZpapeUCo0=\nR:updateMany-dots_and_dollars.yml\na:0:0:444\nZ:Q1j04+T5jyickzCrOGbfx9BipcPcQ=\nR:updateMany-hint-clientError.json\na:0:0:444\nZ:Q1Y7ppODlonVv3ruZnZFx1y1Ae7W8=\nR:updateMany-hint-clientError.yml\na:0:0:444\nZ:Q1RTNrQ4BybS5Qn/+1FsX9/jVwNu0=\nR:updateMany-hint-serverError.json\na:0:0:444\nZ:Q12U3TuxLjTU8vnW0dez57GWE+GSg=\nR:updateMany-hint-serverError.yml\na:0:0:444\nZ:Q1/iJS65ffIpkK7NHyEfJNGBz+gxc=\nR:updateMany-hint.json\na:0:0:444\nZ:Q15ijA9vnYWPqtlV0Ait6p7/UNw64=\nR:updateMany-hint.yml\na:0:0:444\nZ:Q1EzYAwUGBj8vEAm1NGqXR+0sE3ZU=\nR:updateMany-let.json\na:0:0:444\nZ:Q19dJCFknEB7B1R1De08Omj0YZHHI=\nR:updateMany-let.yml\na:0:0:444\nZ:Q1saV+g0Q8cMchcunEuVTRwuNPZgY=\nR:updateMany-validation.json\na:0:0:444\nZ:Q1tiGu2mym0fsq0WyM99rxwiIHlVs=\nR:updateMany-validation.yml\na:0:0:444\nZ:Q1wCoIgco4eT4R+dUsgRwGp3ymqgE=\nR:updateOne-comment.json\na:0:0:444\nZ:Q1p/+hJfqDd7I86nqWsf4heHCMdYk=\nR:updateOne-comment.yml\na:0:0:444\nZ:Q19DpAmqQhT0rp2ul59CmwcctyiDc=\nR:updateOne-dots_and_dollars.json\na:0:0:444\nZ:Q1CjEyt7RRHZv05NMdArqSt0yZnok=\nR:updateOne-dots_and_dollars.yml\na:0:0:444\nZ:Q1PKc+vXO+u7vxKsxKax8V8aKgJc8=\nR:updateOne-hint-clientError.json\na:0:0:444\nZ:Q1d12a1VerB6HP0/svwHPkEYJr+OM=\nR:updateOne-hint-clientError.yml\na:0:0:444\nZ:Q1f6VRCxyiaLN3Q0DJioi1ScbNl9Y=\nR:updateOne-hint-serverError.json\na:0:0:444\nZ:Q1Hr1647kKfRULz4MAPFs5LHhHwIA=\nR:updateOne-hint-serverError.yml\na:0:0:444\nZ:Q11ibe148MTSQXd+JftFWaw5aYqk4=\nR:updateOne-hint.json\na:0:0:444\nZ:Q1yQuc8ENgQQZzCP8yfYXliQcewdY=\nR:updateOne-hint.yml\na:0:0:444\nZ:Q1HX1S2YEaIXO5sBVraYzcorVtxgU=\nR:updateOne-let.json\na:0:0:444\nZ:Q1QsGMx3jO6V804/9m0RAUQKcFE9s=\nR:updateOne-let.yml\na:0:0:444\nZ:Q1UVUSZB2sjl8ubSfiZwmsyN33niA=\nR:updateOne-validation.json\na:0:0:444\nZ:Q1A5EH2BHWLycImw85V3TWJHi8RBI=\nR:updateOne-validation.yml\na:0:0:444\nZ:Q12oNlSOPnnEojtu7SkdyPTL5lXR8=\nR:updateWithPipelines.json\na:0:0:444\nZ:Q1xxoqObgICks/nji4lqTh9MX+HVw=\nR:updateWithPipelines.yml\na:0:0:444\nZ:Q1vtQnvREYziAu1/Qn0X2WwiQOi+4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/crud/v1\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/crud/v1/read\nM:0:0:555\nR:aggregate-collation.json\na:0:0:444\nZ:Q1GcLFodfLysQQG6QEasGWmaqzsNA=\nR:aggregate-collation.yml\na:0:0:444\nZ:Q1tS3Iqu2H8rJRRBc99aHHyQUSIVQ=\nR:aggregate-out.json\na:0:0:444\nZ:Q1vB+EbuLDff9ARtnz9WUZCrqobFY=\nR:aggregate-out.yml\na:0:0:444\nZ:Q1LSJynkHaeQq8HstSJM+SAL9j2/I=\nR:aggregate.json\na:0:0:444\nZ:Q1807aooINcAH/cyiWHAB6WyO6r+g=\nR:aggregate.yml\na:0:0:444\nZ:Q1tHhXEAnoD3DE9wGzEp8HgAblsXg=\nR:count-collation.json\na:0:0:444\nZ:Q1j/k4TsvMT0O7Ra5l/3EnzEcVhDY=\nR:count-collation.yml\na:0:0:444\nZ:Q1H60H5KC4Tg4yaEwSqQrXLNuupTY=\nR:count-empty.json\na:0:0:444\nZ:Q1Uk6Ae6dKFu6xZXPDKI4y6gcsycI=\nR:count-empty.yml\na:0:0:444\nZ:Q1pvBKu60mz9cJgkce55qZ1MqsjQc=\nR:count.json\na:0:0:444\nZ:Q1WCpVGSs4m8FYbwBMV30y/ZJvwOo=\nR:count.yml\na:0:0:444\nZ:Q1ow13rxOmklZwJmi1LiEDYYOibJg=\nR:distinct-collation.json\na:0:0:444\nZ:Q1QCruD02FggT4lEnZXDonrc2CHzQ=\nR:distinct-collation.yml\na:0:0:444\nZ:Q1z6n+GoOgB27VJiI6OqfzTWdRfR0=\nR:distinct.json\na:0:0:444\nZ:Q1LqcF3emY0YcB74c1ZWpPdbaLaV4=\nR:distinct.yml\na:0:0:444\nZ:Q1CXJNxiAvCk1oD7vLYpurXVidgOQ=\nR:find-collation.json\na:0:0:444\nZ:Q13/ekk+t+LBt/Z3rdFVc0JKsbAGc=\nR:find-collation.yml\na:0:0:444\nZ:Q12Yx9quJhlLk+xe4vOK/Jt30wXFg=\nR:find.json\na:0:0:444\nZ:Q1vKSp4SCqJhtegrwpEcOcHszZDFI=\nR:find.yml\na:0:0:444\nZ:Q1xURXnERQQ+V8vXk3VpYjgAdgYug=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/crud/v1/write\nM:0:0:555\nR:bulkWrite-arrayFilters.json\na:0:0:444\nZ:Q1wdJrjW3I1oT0+477J0K2jsQmmF8=\nR:bulkWrite-arrayFilters.yml\na:0:0:444\nZ:Q1U75uMD+4i9u6GbEedvgyqGX6g1g=\nR:bulkWrite-collation.json\na:0:0:444\nZ:Q1zgFqGgrYC18xKoZoVwgAMmOhpaQ=\nR:bulkWrite-collation.yml\na:0:0:444\nZ:Q1bQdtxa+iSOo2T/8mgY4DdKe/nyM=\nR:bulkWrite.json\na:0:0:444\nZ:Q1vuf14KGGvN6D5kmhXWWqe3OWmC8=\nR:bulkWrite.yml\na:0:0:444\nZ:Q1cCMadWoCDqU0eXsajnMcJnX5d+8=\nR:deleteMany-collation.json\na:0:0:444\nZ:Q13awEVAzi8bcXnM1BLmjYgA7s8/c=\nR:deleteMany-collation.yml\na:0:0:444\nZ:Q1IGWmpVa0ODvtx/e/E5aOmlEKC+o=\nR:deleteMany.json\na:0:0:444\nZ:Q1PCXwaU7aKY936NZMk5eRpLIvVRk=\nR:deleteMany.yml\na:0:0:444\nZ:Q1LlTFagWL9WfoyjeLu1B34lNW+1o=\nR:deleteOne-collation.json\na:0:0:444\nZ:Q1Soh7DCneH9QzA+2l0WaMs9dvsoU=\nR:deleteOne-collation.yml\na:0:0:444\nZ:Q10vbPrdFOIpxVcfD2MV+ytmhj3+U=\nR:deleteOne.json\na:0:0:444\nZ:Q1ZBwjPQviDc5FJ4+aBUlADNsaAcs=\nR:deleteOne.yml\na:0:0:444\nZ:Q1L1Nk9QCO/9Cwx4dORdwjIINLxPI=\nR:findOneAndDelete-collation.json\na:0:0:444\nZ:Q1v0KwQf0ioZ/huoLAA5RS0Q+EtoY=\nR:findOneAndDelete-collation.yml\na:0:0:444\nZ:Q1r+ifiVeaAoXUSTRF5gOZCxwKNG8=\nR:findOneAndDelete.json\na:0:0:444\nZ:Q1ZNhLlWXcE9AturtD6iCC2Hvw8WY=\nR:findOneAndDelete.yml\na:0:0:444\nZ:Q1LTJ63PY8XklZfXW7KMOk8HwLy08=\nR:findOneAndReplace-collation.json\na:0:0:444\nZ:Q1/XtUDAsG1X8rT9VfJDXHEIFXn80=\nR:findOneAndReplace-collation.yml\na:0:0:444\nZ:Q1GmqmaJFArO6YiA+UaMeyYcOBTkc=\nR:findOneAndReplace-upsert.json\na:0:0:444\nZ:Q1A6ZBtBSbPkSw0oKJY8fwwS6H0WE=\nR:findOneAndReplace-upsert.yml\na:0:0:444\nZ:Q1O6+1jO8v2JbqAYNmEVAvv5PI78Q=\nR:findOneAndReplace.json\na:0:0:444\nZ:Q1LAw52nAmgyTfKuXB9hn+GBALcxs=\nR:findOneAndReplace.yml\na:0:0:444\nZ:Q1lHmO5K3mOyUyScIfqeAzvT8Lem0=\nR:findOneAndUpdate-arrayFilters.json\na:0:0:444\nZ:Q17Bb7uYBNsWCIJiUIATPLAi4U4uM=\nR:findOneAndUpdate-arrayFilters.yml\na:0:0:444\nZ:Q1hkfa8rHEHg8AyqARs3Lqt3HUK0w=\nR:findOneAndUpdate-collation.json\na:0:0:444\nZ:Q1ikVdtJirVDSQpjNZ1nIuw0r0QJM=\nR:findOneAndUpdate-collation.yml\na:0:0:444\nZ:Q1jDuHuML5ra17BImWKoBQmBtGcEE=\nR:findOneAndUpdate.json\na:0:0:444\nZ:Q1vXCknr/s1sxanWGAIoB5D2BoOZo=\nR:findOneAndUpdate.yml\na:0:0:444\nZ:Q1Hs6K/Zz5c7qvpy9W4vnbYkRtFY8=\nR:insertMany.json\na:0:0:444\nZ:Q1NKfgy6DYE3PMwIkpODX6ElfWOAs=\nR:insertMany.yml\na:0:0:444\nZ:Q1PvGk3uKm1szBfSvOIuqNZfXWmOw=\nR:insertOne.json\na:0:0:444\nZ:Q11O+haekeBqnDeBEpU2CcXaZ2olA=\nR:insertOne.yml\na:0:0:444\nZ:Q1wXVrMhFNeDK/G5NpZPezjkTsy7s=\nR:replaceOne-collation.json\na:0:0:444\nZ:Q1IeRMvjctIjJTK1yLVk0q2CpttWA=\nR:replaceOne-collation.yml\na:0:0:444\nZ:Q1LP3yEIYFhjnNQla3FVQkJ7a+LA8=\nR:replaceOne.json\na:0:0:444\nZ:Q19LjZlxvS0bEumtE7Gxk4FQjFcAs=\nR:replaceOne.yml\na:0:0:444\nZ:Q1B689KUSK6G1S2LlUkTj6UhHaX4Q=\nR:updateMany-arrayFilters.json\na:0:0:444\nZ:Q1WJQeuaSvGno1FEwz9jwCE/CepQs=\nR:updateMany-arrayFilters.yml\na:0:0:444\nZ:Q13C3e3sorCYG+q1sKVkBYrs00Ygc=\nR:updateMany-collation.json\na:0:0:444\nZ:Q125SWlsjwyNdMrJXLmwI/7vc+MVQ=\nR:updateMany-collation.yml\na:0:0:444\nZ:Q1e0eD2xfejeZf1tu/D8RQv9nQWBA=\nR:updateMany.json\na:0:0:444\nZ:Q1kelPYyr/KCGk9Q9UbmbMyskbixc=\nR:updateMany.yml\na:0:0:444\nZ:Q1epasgLjfq8JzP4IPT28F6LLXNRA=\nR:updateOne-arrayFilters.json\na:0:0:444\nZ:Q1cZ0tZumHcCjOWGAm0OKXyandbsA=\nR:updateOne-arrayFilters.yml\na:0:0:444\nZ:Q1rbx84Ls5Sz4EVmT0pDvG1q4Wq3k=\nR:updateOne-collation.json\na:0:0:444\nZ:Q1HGvpq7AuwKMGUabyrvYoox01qRc=\nR:updateOne-collation.yml\na:0:0:444\nZ:Q1Mr7cICuIrbV+L1QKuIm76WHM8bE=\nR:updateOne.json\na:0:0:444\nZ:Q1lY8BzrGa8rAJNbo9LFZwAMYwyXM=\nR:updateOne.yml\na:0:0:444\nZ:Q1bpCD+Fd5wJlS4k3Wj/2r3rqmSmQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/extended_bson\nM:0:0:555\nR:deep_bson.json.gz\na:0:0:444\nZ:Q1ZljpVvzwKEkdHqZFfS+zIPN0d8Q=\nR:flat_bson.json.gz\na:0:0:444\nZ:Q1gMy38eGVOxOUz3sXGYXOwOMf+Kc=\nR:full_bson.json.gz\na:0:0:444\nZ:Q1X9YrGkJWhbcr+W9fRgOZBj8W7eU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/gridfs\nM:0:0:555\nR:delete.json\na:0:0:444\nZ:Q1bgF1bcHIt8dfRxR1Q6gEu3zP448=\nR:delete.yml\na:0:0:444\nZ:Q17E2pxRmHaXvYplwOota3c8GY1YE=\nR:download.json\na:0:0:444\nZ:Q1VZhhrLvhLjohb8DpoEWoIOM4Gto=\nR:download.yml\na:0:0:444\nZ:Q10z+UisiXRYfnjC4+8lxdR7rQzNc=\nR:download_by_name.json\na:0:0:444\nZ:Q11OeUCFpSoXgz6OIdpIYeoDzHkxk=\nR:download_by_name.yml\na:0:0:444\nZ:Q12T6TbKeJvb4PMgfORNlEg9TMyZw=\nR:upload.json\na:0:0:444\nZ:Q1gURR/xOSfLqUrEUmIIM/Mnw42/k=\nR:upload.yml\na:0:0:444\nZ:Q1xgr3XrPalXKsWQjVBZlYJcERdh0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/initial-dns-seedlist-discovery\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1MDNX4dCBqmFrW7c7LG1RQXMXZWs=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/initial-dns-seedlist-discovery/load-balanced\nM:0:0:555\nR:loadBalanced-directConnection.json\na:0:0:444\nZ:Q1s7KeJYymKkmp0SUxIeor+E89KP0=\nR:loadBalanced-directConnection.yml\na:0:0:444\nZ:Q11x8d2Goygr/ER0Mvd0RrsyCc24Q=\nR:loadBalanced-no-results.json\na:0:0:444\nZ:Q1cFRhILkivAkePCSMpnbA55KsVWk=\nR:loadBalanced-no-results.yml\na:0:0:444\nZ:Q1pAZvpJK3O2sgyIjXUyqtdtHHhXY=\nR:loadBalanced-replicaSet-errors.json\na:0:0:444\nZ:Q14CrSgF0IEnjKb9R2Edle7pzqvnc=\nR:loadBalanced-replicaSet-errors.yml\na:0:0:444\nZ:Q1PkJKoQX5AIXCVHP/6YqNQjJL/P8=\nR:loadBalanced-true-multiple-hosts.json\na:0:0:444\nZ:Q1beSuCPmVJvw+WHR0BUd7NxtJi4o=\nR:loadBalanced-true-multiple-hosts.yml\na:0:0:444\nZ:Q1yDN+vj+yDMsUS2nTGC4tajlP7K8=\nR:loadBalanced-true-txt.json\na:0:0:444\nZ:Q1GLTAbV+JzCfMNjj+Y+pVYmx3noU=\nR:loadBalanced-true-txt.yml\na:0:0:444\nZ:Q1XmjTsVWUiL7N7AKjM3n51UpzX9o=\nR:srvMaxHosts-conflicts_with_loadBalanced-true-txt.json\na:0:0:444\nZ:Q1PEFl42F1SIvQrmz6kMT8Fx6giXM=\nR:srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml\na:0:0:444\nZ:Q191ygf5MC8qmXLNYhsas49zNfwSo=\nR:srvMaxHosts-conflicts_with_loadBalanced-true.json\na:0:0:444\nZ:Q1skSdqNiHc+hQibAqtVUh0eJkUl8=\nR:srvMaxHosts-conflicts_with_loadBalanced-true.yml\na:0:0:444\nZ:Q18QPg5KACcMwhCKRfo/rzaMpKGYM=\nR:srvMaxHosts-zero-txt.json\na:0:0:444\nZ:Q1R8Sd+WCzQj+8Px7B7SFMi8UvbuU=\nR:srvMaxHosts-zero-txt.yml\na:0:0:444\nZ:Q1cNzv1xDy04Zzu9/hGI9ccJ4BiUY=\nR:srvMaxHosts-zero.json\na:0:0:444\nZ:Q1mk4x9htXm7HGkg33ERRgL50W0kw=\nR:srvMaxHosts-zero.yml\na:0:0:444\nZ:Q1wQPAkTgEKswAllLlk+Kem2+oiKc=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/initial-dns-seedlist-discovery/replica-set\nM:0:0:555\nR:direct-connection-false.json\na:0:0:444\nZ:Q1OK8fKHBMxJN3m1xo70xbvbkOYYE=\nR:direct-connection-false.yml\na:0:0:444\nZ:Q1aXOrV8aJBCdrqH5gSntJ61i/FHs=\nR:direct-connection-true.json\na:0:0:444\nZ:Q1wj878yxlkQbQdjtCfmuhecx7BJw=\nR:direct-connection-true.yml\na:0:0:444\nZ:Q1wOe7ZEDsTMYCgOOsG4Fw6dKvNZU=\nR:loadBalanced-false-txt.json\na:0:0:444\nZ:Q10MT0IIQZHb8PiTfFJLngFXc164E=\nR:loadBalanced-false-txt.yml\na:0:0:444\nZ:Q16Y96U2pofZ6oEjtmt13zVNLKbvc=\nR:longer-parent-in-return.json\na:0:0:444\nZ:Q1DysKt70pkc9eYFxC/ev8hrJkatY=\nR:longer-parent-in-return.yml\na:0:0:444\nZ:Q1tmUlnR7nMMFlAhJq2W8wRErv3uI=\nR:misformatted-option.json\na:0:0:444\nZ:Q1VNc+uGEG8anslnTdCxkrnUl93O0=\nR:misformatted-option.yml\na:0:0:444\nZ:Q1Yl1j/WETBkoYJvwlAq69Dmt6j0g=\nR:no-results.json\na:0:0:444\nZ:Q1861YFoUal6iiyYcx3eK7zghlcHY=\nR:no-results.yml\na:0:0:444\nZ:Q1xXeuXGnfN2SWU+0sp/eLcf0Cc8E=\nR:not-enough-parts.json\na:0:0:444\nZ:Q1Ju71Tl9cmvXIbmgTdJ99Os1TY8M=\nR:not-enough-parts.yml\na:0:0:444\nZ:Q1JipU4gAd3VwkxJuinuu9zyxhtv0=\nR:one-result-default-port.json\na:0:0:444\nZ:Q17fsE5dSr3A0TX0d9KV+eekGY/C4=\nR:one-result-default-port.yml\na:0:0:444\nZ:Q1eut2dxjzrnLLA+Y6rnXuXce6hTg=\nR:one-txt-record-multiple-strings.json\na:0:0:444\nZ:Q16auzfIYLgU+p8R4wf49OH91QtcQ=\nR:one-txt-record-multiple-strings.yml\na:0:0:444\nZ:Q1ndoPNqTH6C//Qe5eWQB+1Zc3M7o=\nR:one-txt-record.json\na:0:0:444\nZ:Q1rahMWrToGNSMInJkhj8irFNXn54=\nR:one-txt-record.yml\na:0:0:444\nZ:Q1O4ndGi7ue5X4yxwbxAEiTrYOhIs=\nR:parent-part-mismatch1.json\na:0:0:444\nZ:Q1A9cMYK+17nMf5LbV24+YjKSPlk8=\nR:parent-part-mismatch1.yml\na:0:0:444\nZ:Q1qIw6L9lgS3deSivCD9OiXyXiwBE=\nR:parent-part-mismatch2.json\na:0:0:444\nZ:Q1VBwnmZbkgzJLSBvrwNu8kPS8rCk=\nR:parent-part-mismatch2.yml\na:0:0:444\nZ:Q1Y6UUMT1266ygGmUvQAsqir3qBl4=\nR:parent-part-mismatch3.json\na:0:0:444\nZ:Q1HstILB68ZLkIxCfb73cFmCGewRU=\nR:parent-part-mismatch3.yml\na:0:0:444\nZ:Q1A73cg9sXzqqpOcHODRCqCFcEvgk=\nR:parent-part-mismatch4.json\na:0:0:444\nZ:Q1akEkihb8KvZxgeAwOAH+gzIT210=\nR:parent-part-mismatch4.yml\na:0:0:444\nZ:Q1CuPvdGwETFPU5LKSXqAE1Yr348o=\nR:parent-part-mismatch5.json\na:0:0:444\nZ:Q1lYxqbcUsDkEKJmJ/XQBMhignCyk=\nR:parent-part-mismatch5.yml\na:0:0:444\nZ:Q1y2zchp7Hat41SRgNe7f+lSn/BEY=\nR:returned-parent-too-short.json\na:0:0:444\nZ:Q1vE9PfGPOkjWOLDmdFukDqdpQW10=\nR:returned-parent-too-short.yml\na:0:0:444\nZ:Q1Lt12CGhqp8GB0/YM3wCZ7Kl/IKI=\nR:returned-parent-wrong.json\na:0:0:444\nZ:Q1w4sBW8tQ9VrqRuK9JeOAbeuyEaw=\nR:returned-parent-wrong.yml\na:0:0:444\nZ:Q17OBW1HxPuhrHkmY9qb8mpL5NM5k=\nR:srv-service-name.json\na:0:0:444\nZ:Q1fiGp94MiycXu57ok2/rn7Gk3//w=\nR:srv-service-name.yml\na:0:0:444\nZ:Q1//XRhY6zaFYmUgppB9GIg/v8MU8=\nR:srvMaxHosts-conflicts_with_replicaSet-txt.json\na:0:0:444\nZ:Q1wBVCgyX8VCnbah0NGD5nZ7f9n2Y=\nR:srvMaxHosts-conflicts_with_replicaSet-txt.yml\na:0:0:444\nZ:Q1Sbn+IlqlNoNqdif7B3xDE3rOKKw=\nR:srvMaxHosts-conflicts_with_replicaSet.json\na:0:0:444\nZ:Q1UABzQFNxoSdl3xGT8ZbOFrvfPUQ=\nR:srvMaxHosts-conflicts_with_replicaSet.yml\na:0:0:444\nZ:Q1tU8ffVKxdnv7Gx++PYa5RAFKqpM=\nR:srvMaxHosts-equal_to_srv_records.json\na:0:0:444\nZ:Q1sBv7szE5NdOrcU7fd3j5I/Z0fvE=\nR:srvMaxHosts-equal_to_srv_records.yml\na:0:0:444\nZ:Q1A5XH9Rmsm8wxuh4LhySd4h4h9rI=\nR:srvMaxHosts-greater_than_srv_records.json\na:0:0:444\nZ:Q15Oe+SJmvRbii7Q9LOUa8+HaVbfo=\nR:srvMaxHosts-greater_than_srv_records.yml\na:0:0:444\nZ:Q12bV+cjHK1vMGEXdcelNHIiI8vjs=\nR:srvMaxHosts-invalid_integer.json\na:0:0:444\nZ:Q1ngzeAGQkVh4gdaSgW9znTCPU9Qw=\nR:srvMaxHosts-invalid_integer.yml\na:0:0:444\nZ:Q1SsI6WVUhy8//UX+5CBW/7uwsBuI=\nR:srvMaxHosts-invalid_type.json\na:0:0:444\nZ:Q1alDz7H8j0EhCzqgkAB1YYVj7O6w=\nR:srvMaxHosts-invalid_type.yml\na:0:0:444\nZ:Q1wTC2qS5dySPOuDMHISpTZ+f3aro=\nR:srvMaxHosts-less_than_srv_records.json\na:0:0:444\nZ:Q1wq8kKc7bHyJdXtTpJhhLsrfP6uE=\nR:srvMaxHosts-less_than_srv_records.yml\na:0:0:444\nZ:Q1D7g3c1zmc1K4AjIoRAJC7l7sVQY=\nR:srvMaxHosts-zero-txt.json\na:0:0:444\nZ:Q1NXPFLeRdwnKQO1TDG6pFml+ifco=\nR:srvMaxHosts-zero-txt.yml\na:0:0:444\nZ:Q1BfracMzBo1ytrE+I9+4ySJxr0hc=\nR:srvMaxHosts-zero.json\na:0:0:444\nZ:Q1E0PYIXxzHovgMsbo77Z+CQylybE=\nR:srvMaxHosts-zero.yml\na:0:0:444\nZ:Q1EzDvlPROSCTvw4bRDzzjA/KK6og=\nR:two-results-default-port.json\na:0:0:444\nZ:Q1dzPR5zLbuggGx3DeudgytkR9mb8=\nR:two-results-default-port.yml\na:0:0:444\nZ:Q1T+VJ+ZbJoRerbH8WIMY56A4Kebs=\nR:two-results-nonstandard-port.json\na:0:0:444\nZ:Q1Gga2CaJCYFB4+jSe52L3gPTc2cU=\nR:two-results-nonstandard-port.yml\na:0:0:444\nZ:Q1Gy86HL9V9QWAeqHqItmwuYVKF0A=\nR:two-txt-records.json\na:0:0:444\nZ:Q1uWaWHOLWeNvt1d4p0yirkBicbQo=\nR:two-txt-records.yml\na:0:0:444\nZ:Q1+NVL9k5CpE3qUkyvKeesxXMNwWE=\nR:txt-record-not-allowed-option.json\na:0:0:444\nZ:Q1RXfi8DfWgawQRfHGH1xgHJfWMas=\nR:txt-record-not-allowed-option.yml\na:0:0:444\nZ:Q1kK1/53Rv7cdbGaX60SU4qpnTibA=\nR:txt-record-with-overridden-ssl-option.json\na:0:0:444\nZ:Q1plyllic0h6mYhN0VL8HgR4Qmgps=\nR:txt-record-with-overridden-ssl-option.yml\na:0:0:444\nZ:Q1w4NNMaiaG/H/WZsHHt76QFa9aPg=\nR:txt-record-with-overridden-uri-option.json\na:0:0:444\nZ:Q1AmKYfGOa4EJ5nGbId9V1iBfinwY=\nR:txt-record-with-overridden-uri-option.yml\na:0:0:444\nZ:Q1fywAJ+3O6lAmXEeKlTDGP4iSi+w=\nR:txt-record-with-unallowed-option.json\na:0:0:444\nZ:Q1BjU+nHc1NxCgYUt0ip7IVCkRltM=\nR:txt-record-with-unallowed-option.yml\na:0:0:444\nZ:Q1Wodadi3OBTcJrX2G6PiR4P01ZvY=\nR:uri-with-admin-database.json\na:0:0:444\nZ:Q196LNKwxRJQVx/51Qx/SHvznZN54=\nR:uri-with-admin-database.yml\na:0:0:444\nZ:Q1sNkVMAKsf4znFN7L99x6PCQvNx4=\nR:uri-with-port.json\na:0:0:444\nZ:Q18gTT1UjCQCA+YDarjjm7SoNYT4E=\nR:uri-with-port.yml\na:0:0:444\nZ:Q1as/oQYkYei3aTr32HoafxodHQmE=\nR:uri-with-two-hosts.json\na:0:0:444\nZ:Q1lN9wNGX2E4pKQKlbVQAl9yN2juw=\nR:uri-with-two-hosts.yml\na:0:0:444\nZ:Q12Q+AHUDl01f6RiWkkFjyPhRI7kA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/initial-dns-seedlist-discovery/sharded\nM:0:0:555\nR:srvMaxHosts-equal_to_srv_records.json\na:0:0:444\nZ:Q1jxOJWRH6FsZMwwfd6UkxGrqwe1g=\nR:srvMaxHosts-equal_to_srv_records.yml\na:0:0:444\nZ:Q18hySmIwbSkYAMRPEP4Ps/3imZE8=\nR:srvMaxHosts-greater_than_srv_records.json\na:0:0:444\nZ:Q1GDtIFeYdfRTuC4f0pqzTdvvc//k=\nR:srvMaxHosts-greater_than_srv_records.yml\na:0:0:444\nZ:Q1mLXJMqmedmM4u4AsseoiquZ/Yao=\nR:srvMaxHosts-invalid_integer.json\na:0:0:444\nZ:Q1jXrmyTzCnN4EuxRQYiqrf6qagS0=\nR:srvMaxHosts-invalid_integer.yml\na:0:0:444\nZ:Q1hVDJaLRql4ZjV4XSmKEnT15dKCU=\nR:srvMaxHosts-invalid_type.json\na:0:0:444\nZ:Q1KEMeJuu4I2Z0b41lruhuyH6s6oM=\nR:srvMaxHosts-invalid_type.yml\na:0:0:444\nZ:Q1yNnVm6Q3RagSmnL0fWWE9XtNmXk=\nR:srvMaxHosts-less_than_srv_records.json\na:0:0:444\nZ:Q17cEKtH6RXvDDXxNFdhRR8oJ3elg=\nR:srvMaxHosts-less_than_srv_records.yml\na:0:0:444\nZ:Q1zvogNZDxS1BCVxsKnDoqcmkkIWk=\nR:srvMaxHosts-zero.json\na:0:0:444\nZ:Q1gx2uHMKclOqdXn1UHZNaq8rXGcg=\nR:srvMaxHosts-zero.yml\na:0:0:444\nZ:Q1XACbCyrHl66XJ9xBhEOPJxdxXjM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/load-balancers\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1FBvR52+IimziEIDYkSyGux6O50Q=\nR:cursors.json\na:0:0:444\nZ:Q1Wc/fL1hpkdDfTjq4ilRCFXL0Mxc=\nR:cursors.yml\na:0:0:444\nZ:Q1QR97FL3zGhIV3CR0f9AHDbhGkdU=\nR:event-monitoring.json\na:0:0:444\nZ:Q12FtU9bbs9QFqCs8o2vOISZiyp6k=\nR:event-monitoring.yml\na:0:0:444\nZ:Q1mzRrpFUpkGVzhoErJWatQzm8jAA=\nR:lb-connection-establishment.json\na:0:0:444\nZ:Q1wDx9KULdmA5WR3G1me0neZeb0js=\nR:lb-connection-establishment.yml\na:0:0:444\nZ:Q1bB68fyrc2tbUGE7ullyHwWj/PxU=\nR:non-lb-connection-establishment.json\na:0:0:444\nZ:Q1JWJocJQMPKBYsNZU+o4JeIl4z30=\nR:non-lb-connection-establishment.yml\na:0:0:444\nZ:Q1wD7jCm0MwLlbuFmOLKBvK+VGUtk=\nR:sdam-error-handling.json\na:0:0:444\nZ:Q1yF68y78HNGHkKSYSMyhyGFT/3eM=\nR:sdam-error-handling.yml\na:0:0:444\nZ:Q1ub6TpE5V2kYttb9W7UH6vq+z7X4=\nR:server-selection.json\na:0:0:444\nZ:Q1ysWO6iCaZsRkSZZR/8JkYEPZLpQ=\nR:server-selection.yml\na:0:0:444\nZ:Q1LrV1Sh6ffaZ/sDccOlBLMfTxibM=\nR:transactions.json\na:0:0:444\nZ:Q15E4er9blhO1ctUqBdTE/5w/dxv8=\nR:transactions.yml\na:0:0:444\nZ:Q1baT4mCgkAwYGF5xoVMzriyH/xFk=\nR:wait-queue-timeouts.json\na:0:0:444\nZ:Q1yj9/MQe1qhVpHMiTDkVzA+fuKNw=\nR:wait-queue-timeouts.yml\na:0:0:444\nZ:Q1JfFYyM1LSl8LWDepR9HUiokgYFA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1v6y3zTmafvTVtoAVXB82Z+NUNj8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness/ReplicaSetNoPrimary\nM:0:0:555\nR:DefaultNoMaxStaleness.json\na:0:0:444\nZ:Q1eykUnH/tx/+ADVH9HoecgUhhnO0=\nR:DefaultNoMaxStaleness.yml\na:0:0:444\nZ:Q1c1t7Vl8+wrcsc+KmHXNwA4oLHMA=\nR:LastUpdateTime.json\na:0:0:444\nZ:Q1WZa6VtLweCBsraynSTUXfZCWZuQ=\nR:LastUpdateTime.yml\na:0:0:444\nZ:Q1kIVWeHu04eNDGPuArka4jHfZgys=\nR:MaxStalenessTooSmall.json\na:0:0:444\nZ:Q1wUhu4hZnOzBGotdaoKrs5kH2IZA=\nR:MaxStalenessTooSmall.yml\na:0:0:444\nZ:Q1jTHiZrezzo2oSdtHlpK90jv5Dnk=\nR:Nearest.json\na:0:0:444\nZ:Q17NIKsY0W04+YwAN3wf2YtNTKr0o=\nR:Nearest.yml\na:0:0:444\nZ:Q1Hkd+7hNHGffxgbxsmJnl8jSbiwk=\nR:Nearest2.json\na:0:0:444\nZ:Q1O/dA0EqcW9615EkJ7mvmY9/A5HA=\nR:Nearest2.yml\na:0:0:444\nZ:Q1xT4yazTAlVjrFmgJUWFGoQqDW/4=\nR:NoKnownServers.json\na:0:0:444\nZ:Q1FJe8YCEi8h2dHetylo7MQdLK/kI=\nR:NoKnownServers.yml\na:0:0:444\nZ:Q1P2S64b8QLYGV8L3rJXH5MhiRNLc=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1MTXpojeDm0LIIrfqZVtHrFnKmTE=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1EsgDOocaz4FpOsla5TEKknoVp8o=\nR:PrimaryPreferred_tags.json\na:0:0:444\nZ:Q1U5jrdNIhBlhM33ziGukPUeI8aZs=\nR:PrimaryPreferred_tags.yml\na:0:0:444\nZ:Q13EVgaKdtET1oZkiy7rkHXPt3mig=\nR:Secondary.json\na:0:0:444\nZ:Q1v1kZfqHFTmXTjUu+HYSiGlTN04k=\nR:Secondary.yml\na:0:0:444\nZ:Q1B5lTS6cO26Zx6P7rostum7hguI0=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1U5z0F83kCw9l/8wkjwH1PsEdT4w=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1Tg1Lmm/r2B50JbDLpXa5/CASwAs=\nR:SecondaryPreferred_tags.json\na:0:0:444\nZ:Q16eajNwJ7UuFCe+DhhFdQ5PnHLNE=\nR:SecondaryPreferred_tags.yml\na:0:0:444\nZ:Q1/FJoTg1Cdu6RRRswgTDSq3SVDdA=\nR:ZeroMaxStaleness.json\na:0:0:444\nZ:Q1jaSk0aVtYX/TNm6Vcga7Nub06aY=\nR:ZeroMaxStaleness.yml\na:0:0:444\nZ:Q1Pe6N1p0mrvc32XHGeRuAbf8QSF8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness/ReplicaSetWithPrimary\nM:0:0:555\nR:DefaultNoMaxStaleness.json\na:0:0:444\nZ:Q13lHbR348hB/fAMl4hjMqYpADzLU=\nR:DefaultNoMaxStaleness.yml\na:0:0:444\nZ:Q15q9Pt+wQ1WV/0+oD5DfDUEjYcus=\nR:LastUpdateTime.json\na:0:0:444\nZ:Q1l1km3Drgl7wSU+Jkt7PkNUx99fQ=\nR:LastUpdateTime.yml\na:0:0:444\nZ:Q153+7KMMSEz6u5zGW0ExVGgwBUqc=\nR:LongHeartbeat.json\na:0:0:444\nZ:Q1oXVhyBVb/TNkRU9Ct+1Z9ZmByBU=\nR:LongHeartbeat.yml\na:0:0:444\nZ:Q1XbenafeFAWdKWC9PbTmxDd3G59w=\nR:LongHeartbeat2.json\na:0:0:444\nZ:Q1pE0/I5Qtb99V17RkwtpqofPigzg=\nR:LongHeartbeat2.yml\na:0:0:444\nZ:Q1xHIXpdRhPZylVp6+Rbv2cOBQbl4=\nR:MaxStalenessTooSmall.json\na:0:0:444\nZ:Q1/xky6ogpI7YWaNWIQoIYmaIRMzQ=\nR:MaxStalenessTooSmall.yml\na:0:0:444\nZ:Q1wYgzU+Cr2xbunYEnwsEbtPAie84=\nR:MaxStalenessWithModePrimary.json\na:0:0:444\nZ:Q1WDAQUf115Cm0P9V6GQTurV+plmQ=\nR:MaxStalenessWithModePrimary.yml\na:0:0:444\nZ:Q1gNkzJHWdF5v0D6weGZQ7tRnWw9M=\nR:Nearest.json\na:0:0:444\nZ:Q1Z9SATTsqmTV9pWeqQuLguEy7KBw=\nR:Nearest.yml\na:0:0:444\nZ:Q1HFQlvOBlQI8T6a4npa6Hp9KAuTE=\nR:Nearest2.json\na:0:0:444\nZ:Q1e+QJTaWb6S5564khbzTpm1cRz4M=\nR:Nearest2.yml\na:0:0:444\nZ:Q1gXIRv/gBCkJy66kOSQYljX485k8=\nR:Nearest_tags.json\na:0:0:444\nZ:Q1q5vEtvj9wQbFIg8GQmHu7KYfUvE=\nR:Nearest_tags.yml\na:0:0:444\nZ:Q1sA1/H/MAo8g8NfxlgBK1sGONkq4=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1DDHpGjZV73m6ZfQXpHu+qdw11hg=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1D0vqTA+h8Lg2zywGicW4CoHv6xk=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1R+FnhWuVGbHz7+V+JTQjsR4J/9o=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1Y2EvDYmh605SKB2DN7XcWTae1Gw=\nR:SecondaryPreferred_tags.json\na:0:0:444\nZ:Q1MYlGvTpRUm0uFASpIi2wBVGl7Dc=\nR:SecondaryPreferred_tags.yml\na:0:0:444\nZ:Q1X/13yrKUIlNCzLQlt1GwV0hQCDE=\nR:SecondaryPreferred_tags2.json\na:0:0:444\nZ:Q1Fo4jJfbbl0EYS7hz5PmnR9r5V44=\nR:SecondaryPreferred_tags2.yml\na:0:0:444\nZ:Q1Cf6XUfkch5cFTY8spgNsjKYqaHE=\nR:Secondary_tags.json\na:0:0:444\nZ:Q1OpoXms/X4h+R46Tado3iq1CdyTE=\nR:Secondary_tags.yml\na:0:0:444\nZ:Q1kWkyrPA5FIORKBdLjOnqSuV4z7Y=\nR:Secondary_tags2.json\na:0:0:444\nZ:Q1Z67DL9kwX/Iy8p2VkOwRye0jxxE=\nR:Secondary_tags2.yml\na:0:0:444\nZ:Q1FXpk5VMLPgApQlvUaAlwjAWnmwY=\nR:ZeroMaxStaleness.json\na:0:0:444\nZ:Q1kW9Nvq6lHsjFHt6+Gr8p/DG4qI8=\nR:ZeroMaxStaleness.yml\na:0:0:444\nZ:Q1M7d+HaDQNH+4Ot9sr6DIZlB95UQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness/Sharded\nM:0:0:555\nR:SmallMaxStaleness.json\na:0:0:444\nZ:Q1E6GW3uNjpdmwsIFrcX/Fr3Ig+bE=\nR:SmallMaxStaleness.yml\na:0:0:444\nZ:Q1OpIZFdboomLnY0oaQ0fvlIilWQU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness/Single\nM:0:0:555\nR:SmallMaxStaleness.json\na:0:0:444\nZ:Q17iwFRPpK1TB0QKEOTofeCmqlaq0=\nR:SmallMaxStaleness.yml\na:0:0:444\nZ:Q1fbY3lstBuXK1N/aj8wuzwO0roAA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/max-staleness/Unknown\nM:0:0:555\nR:SmallMaxStaleness.json\na:0:0:444\nZ:Q1vntlNI/S5c30IAayCv9MrboQRSw=\nR:SmallMaxStaleness.yml\na:0:0:444\nZ:Q1n2EP4io5swRJwD3MC1dj1tDAOrM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/mongocrypt\nM:0:0:555\nR:collection-info.json\na:0:0:444\nZ:Q1R2Gf02+fkPdRBQ3Wr3oYK/ZB7tw=\nR:command-reply.json\na:0:0:444\nZ:Q1aYt23E+9xctC9rVfTTRyAW8JIl8=\nR:command.json\na:0:0:444\nZ:Q10THpKPqdfanLew7OBDGWHXevQbQ=\nR:encrypted-command-reply.json\na:0:0:444\nZ:Q1WlZwaIGJEEGBYWmfvxdc94yu+sk=\nR:encrypted-command.json\na:0:0:444\nZ:Q1fv9Y+CcfjnFNra2TD4SNNeS89UQ=\nR:encrypted-value.json\na:0:0:444\nZ:Q11/IYlwJm/+vJsD//F8IW8nNGGP0=\nR:json-schema.json\na:0:0:444\nZ:Q19cOpYmN6Qs7NJ3I1evWhTpyuQvQ=\nR:key-document.json\na:0:0:444\nZ:Q1QkowIQEzBwhE/EXg4ptFqYjSytk=\nR:key-filter-keyAltName.json\na:0:0:444\nZ:Q13YJy4BpLMDoeyX7pvgZFUgftsBo=\nR:key-filter.json\na:0:0:444\nZ:Q1gFikYqqQUOPB4lhlmp0oI3uVL1g=\nR:kms-reply.txt\na:0:0:444\nZ:Q1kSYKHUf6lJl5aHeUOVFWFiMnWLI=\nR:list-collections-filter.json\na:0:0:444\nZ:Q1ZEsDmKNfUj9FDQOkxzwnG8xPEQA=\nR:mongocryptd-command-local.json\na:0:0:444\nZ:Q1XI4PxzV5N7AW4tQWSnNoS3Iss90=\nR:mongocryptd-command-remote.json\na:0:0:444\nZ:Q1jFxexpGHENPH8f+qJh/iU/FW/L4=\nR:mongocryptd-reply.json\na:0:0:444\nZ:Q1URENjG3RPbx4ZsIOvDS3k6cZYCc=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/read-write-concern\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1VC8yQslJi8eIV4/VfE2BZ7hg9Bg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/read-write-concern/connection-string\nM:0:0:555\nR:read-concern.json\na:0:0:444\nZ:Q1Jggw4GCxGHD2ZAmpP8/GyCathLA=\nR:read-concern.yml\na:0:0:444\nZ:Q1OJy2XxBBIlcFLqWhb3+KCZJdMmY=\nR:write-concern.json\na:0:0:444\nZ:Q1MG8yt3hpAclfgKf6JxOXxMWkOK8=\nR:write-concern.yml\na:0:0:444\nZ:Q1s8iy6vQQDCplIvCJ8brX8907SMI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/read-write-concern/document\nM:0:0:555\nR:read-concern.json\na:0:0:444\nZ:Q1sevLBuTzo4e7Bj1Qm/R+6/s0rTA=\nR:read-concern.yml\na:0:0:444\nZ:Q1VsXmlR6j8fYilHaDf3S7Xz1J9L4=\nR:write-concern.json\na:0:0:444\nZ:Q19oIb73piL5EbNFGhD0NHR6uWJec=\nR:write-concern.yml\na:0:0:444\nZ:Q1KsnoclpV+0fO5s3JzAZzzmKU/OE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/read-write-concern/operation\nM:0:0:555\nR:default-write-concern-2.6.json\na:0:0:444\nZ:Q1Hrwn5qJyjwlX4Gak3GRKksJI0fE=\nR:default-write-concern-2.6.yml\na:0:0:444\nZ:Q17hFaVMoBiNJy8iUswfezmVeQKAs=\nR:default-write-concern-3.2.json\na:0:0:444\nZ:Q1e/FHHQ+zv2krYqti26YZvQzcCRE=\nR:default-write-concern-3.2.yml\na:0:0:444\nZ:Q1Q082MlL5GMcXHR62zRdGJzSrRdI=\nR:default-write-concern-3.4.json\na:0:0:444\nZ:Q1FAbL3q5kIp5jTAvKHslH00honvY=\nR:default-write-concern-3.4.yml\na:0:0:444\nZ:Q1yw1GT4feO6ydBmGeeg7HsvDtqfs=\nR:default-write-concern-4.2.json\na:0:0:444\nZ:Q1jtcLx+xWZ/Mg+1QZ9d85owSUqIs=\nR:default-write-concern-4.2.yml\na:0:0:444\nZ:Q1hyRJmbeR+fnuT2e7a5X6C4AnrX0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/retryable-reads\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q133ag23jc7nTruC/JjaCkc5KImxA=\nR:aggregate-merge.json\na:0:0:444\nZ:Q1Qm3NCI+nFtfmwyB79mn7rtnUE2A=\nR:aggregate-merge.yml\na:0:0:444\nZ:Q1bJitaHT0JHOsI82tg1cu8gKLiic=\nR:aggregate-serverErrors.json\na:0:0:444\nZ:Q1eHHEedT7Q8om5HOBYnV8uUIzbiw=\nR:aggregate-serverErrors.yml\na:0:0:444\nZ:Q1FLH7oZiPkIIy880o0Z2ZAgAiDGQ=\nR:aggregate.json\na:0:0:444\nZ:Q1xXsFKDBL/DPblNNDcYWpSLmzJCA=\nR:aggregate.yml\na:0:0:444\nZ:Q17jRMgZzAf/H562KzsQR/Q2tadCI=\nR:changeStreams-client.watch-serverErrors.json\na:0:0:444\nZ:Q1GEcaNFLhy/dsdN5+a3xiDfU9fcY=\nR:changeStreams-client.watch-serverErrors.yml\na:0:0:444\nZ:Q13knNWAKrNgVVhtcEpziJlAQP32o=\nR:changeStreams-client.watch.json\na:0:0:444\nZ:Q1pCim0Ct/lbUvhvb2hbNkzjnhA04=\nR:changeStreams-client.watch.yml\na:0:0:444\nZ:Q1INpH7CNXnWRX/v+A9iFB9f2Hlm4=\nR:changeStreams-db.coll.watch-serverErrors.json\na:0:0:444\nZ:Q1RPd24mIfy7jSodVHigZuYx1iX0k=\nR:changeStreams-db.coll.watch-serverErrors.yml\na:0:0:444\nZ:Q1L+cFkPA6WwbiSADST+LFOxxrVcQ=\nR:changeStreams-db.coll.watch.json\na:0:0:444\nZ:Q1MGezYVYfCLdB9moL4jS38oA8j/0=\nR:changeStreams-db.coll.watch.yml\na:0:0:444\nZ:Q18qxlu6kvONp03Rh70A4E1AzsyxM=\nR:changeStreams-db.watch-serverErrors.json\na:0:0:444\nZ:Q1NBNDoOw896Ikdu1RH9BEyx6vTp8=\nR:changeStreams-db.watch-serverErrors.yml\na:0:0:444\nZ:Q1ao9fd8umFQW1mD8+mfXRpcpt3YA=\nR:changeStreams-db.watch.json\na:0:0:444\nZ:Q1v8PRbGngkvhj+JFP9MZStHYqMNI=\nR:changeStreams-db.watch.yml\na:0:0:444\nZ:Q1R1Ahb6uRlBsyklTDMcaZ6B3lG9s=\nR:count-serverErrors.json\na:0:0:444\nZ:Q15Tne5/pZyq9p3pWlWEYqotqaCQk=\nR:count-serverErrors.yml\na:0:0:444\nZ:Q1ZL0xpszbDdKtWgHDbwTyQappmSo=\nR:count.json\na:0:0:444\nZ:Q1DtYwx9GnN8qYrPAMOAZagZRTHnM=\nR:count.yml\na:0:0:444\nZ:Q1QfWD9sRgRPmvKLQVKLZ9hvYskQA=\nR:countDocuments-serverErrors.json\na:0:0:444\nZ:Q11TuweasoA1wgVnhu0/TuDqg58Io=\nR:countDocuments-serverErrors.yml\na:0:0:444\nZ:Q1NXPk9UTMD4mOZzWJxvHgctYRXKU=\nR:countDocuments.json\na:0:0:444\nZ:Q1SfbQ2dq9Qt6koUSo38t2qz19WHA=\nR:countDocuments.yml\na:0:0:444\nZ:Q1t2NJUVPUTLVpUMqvgdxuOKIsSaI=\nR:distinct-serverErrors.json\na:0:0:444\nZ:Q1e9dVtRDJoNDtIQIWFO8K4kGafm8=\nR:distinct-serverErrors.yml\na:0:0:444\nZ:Q1lKcfWUanhZTJy+5AZk49gFh+odw=\nR:distinct.json\na:0:0:444\nZ:Q1PXGyCL4+vJua+UBz/d7TYMHu5xo=\nR:distinct.yml\na:0:0:444\nZ:Q1l0Zy62ww20YZ+uX/fYDedG4LVys=\nR:estimatedDocumentCount-serverErrors.json\na:0:0:444\nZ:Q1gfSMFHeyzUw0Zz0ziaY9KsqsfQM=\nR:estimatedDocumentCount-serverErrors.yml\na:0:0:444\nZ:Q1JOKg8/6+FcZkxQFowJ+DCcFO9oE=\nR:estimatedDocumentCount.json\na:0:0:444\nZ:Q1bPi1zO7e426f0VWNkNRDgKlEh7s=\nR:estimatedDocumentCount.yml\na:0:0:444\nZ:Q1tA6R5WDqIROSr7siCoMJcKVJbQM=\nR:find-serverErrors.json\na:0:0:444\nZ:Q1YyRol9IcZCMb6lGJaOD2OfblCoo=\nR:find-serverErrors.yml\na:0:0:444\nZ:Q18QSyHTTsPJy+UNqBTL3vl6Ne2qI=\nR:find.json\na:0:0:444\nZ:Q1Q4s1ey2tHJ2B4F0/CyYAGvlded0=\nR:find.yml\na:0:0:444\nZ:Q1c3Rf1I9ENdB86+CsT/GE2HDN0Bk=\nR:findOne-serverErrors.json\na:0:0:444\nZ:Q1tQ88ktoMDHlJVCSDwodMe5kCc5c=\nR:findOne-serverErrors.yml\na:0:0:444\nZ:Q1rnI1SLE+/U1ZVbd2czH70KbJDSs=\nR:findOne.json\na:0:0:444\nZ:Q16YpdKUaz4dtjc61YXfXQ3qmKogM=\nR:findOne.yml\na:0:0:444\nZ:Q1erpnxZoeCWL21EiyAaJq7cKE9Ew=\nR:gridfs-download-serverErrors.json\na:0:0:444\nZ:Q1KZer5CTF3LxOSs1AhWFQR7l8zGQ=\nR:gridfs-download-serverErrors.yml\na:0:0:444\nZ:Q1xzietWBUa0zM3ehgi0nPTm62ivs=\nR:gridfs-download.json\na:0:0:444\nZ:Q1/LKtW/IFaaQ1W7lI1HXtLLn2h7I=\nR:gridfs-download.yml\na:0:0:444\nZ:Q1NrFvgyK/+Sv045IESb4hxEhS57M=\nR:gridfs-downloadByName-serverErrors.json\na:0:0:444\nZ:Q1QwDsNyJGLwb9+FjpQJUFX+Oa69w=\nR:gridfs-downloadByName-serverErrors.yml\na:0:0:444\nZ:Q1TwWeq9/uYgwqjY5qZY5r0wrOvtk=\nR:gridfs-downloadByName.json\na:0:0:444\nZ:Q1dY+4zSXlN/LVLU3aPIiUnin31Yw=\nR:gridfs-downloadByName.yml\na:0:0:444\nZ:Q1XXrCPMNzFySjeB6d5urscKHboe8=\nR:listCollectionNames-serverErrors.json\na:0:0:444\nZ:Q1TlUa7y4JVHbOr6rq/TyNXDxwvEw=\nR:listCollectionNames-serverErrors.yml\na:0:0:444\nZ:Q1YuT0Q4ljIMm0YnA1KR/YipzWxms=\nR:listCollectionNames.json\na:0:0:444\nZ:Q1+vizojPTg8j1jNc7g7u2N46K1rU=\nR:listCollectionNames.yml\na:0:0:444\nZ:Q1Kbh5TCwshEFwL5tDnoltvHZ4g8k=\nR:listCollectionObjects-serverErrors.json\na:0:0:444\nZ:Q1YNpVbm3jeYptBuiGxNXWmu4PW24=\nR:listCollectionObjects-serverErrors.yml\na:0:0:444\nZ:Q14L0BYcW8H8XhAhWlWQtgA5GTgS4=\nR:listCollectionObjects.json\na:0:0:444\nZ:Q1URDri1+VqbiIikX2oX2cEH03NlQ=\nR:listCollectionObjects.yml\na:0:0:444\nZ:Q1TIQpVrC4Igi+MPykPivy9OEQSQg=\nR:listCollections-serverErrors.json\na:0:0:444\nZ:Q1FYWlWuS+xJQklUV86pVf1Id8mgc=\nR:listCollections-serverErrors.yml\na:0:0:444\nZ:Q1WBb3yauZhhtoA/Wd3xmTFuUI39U=\nR:listCollections.json\na:0:0:444\nZ:Q1FtXZfwinKCFxCe+YJPfUQ0Kv4Mo=\nR:listCollections.yml\na:0:0:444\nZ:Q1uTLS/fcwMb/38c0iD0HkTy9ITns=\nR:listDatabaseNames-serverErrors.json\na:0:0:444\nZ:Q1I9iTiDlS5Frg9oH9aojUyQYiVlI=\nR:listDatabaseNames-serverErrors.yml\na:0:0:444\nZ:Q1WCUvn0uax904A9AZ+Iin3cXxHUc=\nR:listDatabaseNames.json\na:0:0:444\nZ:Q1KREyvrFXIUHYmhUC5QDRxmXr3Bs=\nR:listDatabaseNames.yml\na:0:0:444\nZ:Q1kAtDQpa1NbGJVGhlX+Dn4Hv+NNY=\nR:listDatabaseObjects-serverErrors.json\na:0:0:444\nZ:Q1zVgeda8mMmw7FXsm8HIKvhCqsbo=\nR:listDatabaseObjects-serverErrors.yml\na:0:0:444\nZ:Q1Px2+esO2GNwYhTSlyKADKjv81H4=\nR:listDatabaseObjects.json\na:0:0:444\nZ:Q19DZ2r/gT35foH2W3jEPo2UcKZ84=\nR:listDatabaseObjects.yml\na:0:0:444\nZ:Q1mHb+a1UzEru/1zps3cWQ1k/jN28=\nR:listDatabases-serverErrors.json\na:0:0:444\nZ:Q1D5oC0evyUPpfqIAhkmzsDRIM3pE=\nR:listDatabases-serverErrors.yml\na:0:0:444\nZ:Q1iwgZjgMHFBWKe6ucmWYZvwYs8xM=\nR:listDatabases.json\na:0:0:444\nZ:Q1HDcvbm5pCEZTt5fXNOumTfRqv9o=\nR:listDatabases.yml\na:0:0:444\nZ:Q1yBSVf9Se7w074BSewG4h6hBzmTM=\nR:listIndexNames-serverErrors.json\na:0:0:444\nZ:Q1xQP5hrVRhDSnVsA67JPOOcwUjNI=\nR:listIndexNames-serverErrors.yml\na:0:0:444\nZ:Q1LI1HBGbs+x4yDZDsCQJE82oovn0=\nR:listIndexNames.json\na:0:0:444\nZ:Q1gaG9ZOrrQxGSRDcXb7G37J3jf/Y=\nR:listIndexNames.yml\na:0:0:444\nZ:Q15sWTvVvUkHNa6xjt/nGs97adLNU=\nR:listIndexes-serverErrors.json\na:0:0:444\nZ:Q1zYqrUh7O6VRdFA1XFdlSDrlZvnc=\nR:listIndexes-serverErrors.yml\na:0:0:444\nZ:Q1/H2+GndiRuCWHzP+fMqg0eI2h/M=\nR:listIndexes.json\na:0:0:444\nZ:Q146cuBtcIn2t+my4BJ4iCwyowzus=\nR:listIndexes.yml\na:0:0:444\nZ:Q1kkYAwus75zzIDxQYFcsAfTTUqoc=\nR:mapReduce.json\na:0:0:444\nZ:Q1NKA8057E6DGY8BAxO0+OmP/fGCs=\nR:mapReduce.yml\na:0:0:444\nZ:Q1dkt0qol6lAhnrMcQWXwsxBt3pXk=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/retryable-writes\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q12V8JfJ6S28KlFMFAbWInTjuLu40=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/retryable-writes/legacy\nM:0:0:555\nR:bulkWrite-errorLabels.json\na:0:0:444\nZ:Q1gmfGfBz3F8CIQ1G0GZ0L01IcstY=\nR:bulkWrite-errorLabels.yml\na:0:0:444\nZ:Q1KnHVA5H7VZ4O6CSPJLM+G4M/+Ns=\nR:bulkWrite-serverErrors.json\na:0:0:444\nZ:Q1ejIoqNPufw/yseFnPHJed40FR3I=\nR:bulkWrite-serverErrors.yml\na:0:0:444\nZ:Q1M6EKxYklH0IwA5vnNPu04vG3EwE=\nR:bulkWrite.json\na:0:0:444\nZ:Q1XSDdtcGWXaML2WW4o2HzhInC5gM=\nR:bulkWrite.yml\na:0:0:444\nZ:Q1nxqBAb04a1V2c2YPfyImWYvhQoQ=\nR:deleteMany.json\na:0:0:444\nZ:Q1vCuBfHP9ua9GNfwvn8n0x4kT4jY=\nR:deleteMany.yml\na:0:0:444\nZ:Q1XPIQlG8966f/QtjCZX+Yju9M0DY=\nR:deleteOne-errorLabels.json\na:0:0:444\nZ:Q1Hen4iVJxk/KJCAJN4ZNUKuWKouY=\nR:deleteOne-errorLabels.yml\na:0:0:444\nZ:Q1FCrKtKKEciM93mGDyOwQRVG5Q3A=\nR:deleteOne-serverErrors.json\na:0:0:444\nZ:Q1cwMEC8F3b6VgaOMoVpdmO4FoEU8=\nR:deleteOne-serverErrors.yml\na:0:0:444\nZ:Q1NCpvQajAhhXYXPRIbPf6jTk3wVI=\nR:deleteOne.json\na:0:0:444\nZ:Q1Rp+CJ5yRVui8lSc7kfMGxNn6WGk=\nR:deleteOne.yml\na:0:0:444\nZ:Q1j+4KdkUS5GnJ79g9lf6fZUAzy9M=\nR:findOneAndDelete-errorLabels.json\na:0:0:444\nZ:Q1eASqqENJQKCkCJWma/+I/uvyjOk=\nR:findOneAndDelete-errorLabels.yml\na:0:0:444\nZ:Q1BWBcMKzIr0R2xco+v1S72l8TUKg=\nR:findOneAndDelete-serverErrors.json\na:0:0:444\nZ:Q1pp1XhOR60q5MkPyQA+D/R13qsoU=\nR:findOneAndDelete-serverErrors.yml\na:0:0:444\nZ:Q1JOVgWHR9pQkCsOOUkB90VHydRMI=\nR:findOneAndDelete.json\na:0:0:444\nZ:Q1Cl9cjDmapU2tyHxMifSaHexPajc=\nR:findOneAndDelete.yml\na:0:0:444\nZ:Q1cf1H9Z3n8qphLZ8ZRrvrc6gbd9Q=\nR:findOneAndReplace-errorLabels.json\na:0:0:444\nZ:Q18nn5lIBGjwGZ8EipBVkq223WIqw=\nR:findOneAndReplace-errorLabels.yml\na:0:0:444\nZ:Q1GI9scOoHopN7JOk2PZMUg94kLD4=\nR:findOneAndReplace-serverErrors.json\na:0:0:444\nZ:Q12jbc9kreAff/+fsaxb9QY3nr+0o=\nR:findOneAndReplace-serverErrors.yml\na:0:0:444\nZ:Q1PLRvqv4oTOINVVWozPCgs6SCmWw=\nR:findOneAndReplace.json\na:0:0:444\nZ:Q1lYsR8quIF2X4tAlXBXMcZZmB+C8=\nR:findOneAndReplace.yml\na:0:0:444\nZ:Q1jQmo1FAXedICS7YrtMmaSrvMmWQ=\nR:findOneAndUpdate-errorLabels.json\na:0:0:444\nZ:Q1NxUDyHS0eKYXzwMAh2FlUSvLq4E=\nR:findOneAndUpdate-errorLabels.yml\na:0:0:444\nZ:Q109Z8kfdbAUPauAudw2n8imWRgBE=\nR:findOneAndUpdate-serverErrors.json\na:0:0:444\nZ:Q14nXlXNHd24YguU5Y2kPc22oypC0=\nR:findOneAndUpdate-serverErrors.yml\na:0:0:444\nZ:Q1I4cY3NiV9zS+y071lUCUuJCIoLA=\nR:findOneAndUpdate.json\na:0:0:444\nZ:Q1ShhJsOEkBEuyBS/zjfCU0LwWtOg=\nR:findOneAndUpdate.yml\na:0:0:444\nZ:Q1qUTsWLB8GmtBaiBHorCKl65zttI=\nR:insertMany-errorLabels.json\na:0:0:444\nZ:Q1qAmo4xG6M5W+x9N20oyk6ZvsQNs=\nR:insertMany-errorLabels.yml\na:0:0:444\nZ:Q1im4XFQa/Q+tZt3h3tE4qRf9YbYc=\nR:insertMany-serverErrors.json\na:0:0:444\nZ:Q1YYwwySioqoLZZkEwdM3/ZS2ns3s=\nR:insertMany-serverErrors.yml\na:0:0:444\nZ:Q1YYNBK62/KNxr7GDi743CsbRoB5o=\nR:insertMany.json\na:0:0:444\nZ:Q1fyjJElLQnqTYSEfV5Djh25nrLRY=\nR:insertMany.yml\na:0:0:444\nZ:Q1CJ7yHSGJ+XyWHx3h1AFF+2AyAoo=\nR:insertOne-errorLabels.json\na:0:0:444\nZ:Q14YwQKHl0gf04+8GzxkNftrLsmBY=\nR:insertOne-errorLabels.yml\na:0:0:444\nZ:Q1vj37/VDwfnoJitY2Rk+vtSd8bkA=\nR:insertOne-serverErrors.json\na:0:0:444\nZ:Q12RkWCKnEn4zz4/9G1XM52IZ65/E=\nR:insertOne-serverErrors.yml\na:0:0:444\nZ:Q1R3MQMh2zmxGM7hxRNmEU3a/kNcY=\nR:insertOne.json\na:0:0:444\nZ:Q1BYamSDol/w+D2D10gdBoMt5jJps=\nR:insertOne.yml\na:0:0:444\nZ:Q19PCh+53Tq9nvPpNR7BpnIdArN/8=\nR:replaceOne-errorLabels.json\na:0:0:444\nZ:Q12CLdHscD2KM5bT7xEjJ9Q1rPa2s=\nR:replaceOne-errorLabels.yml\na:0:0:444\nZ:Q1yjk1SBE8GWohnM10/L+/bVWJguA=\nR:replaceOne-serverErrors.json\na:0:0:444\nZ:Q1/l1tfPYwi09iZ7rab+ITQ7OVEjQ=\nR:replaceOne-serverErrors.yml\na:0:0:444\nZ:Q16RF3s2HyutZWkLPJTeIJJLAnwHs=\nR:replaceOne.json\na:0:0:444\nZ:Q13zBT3PErNJ8qxeICLjY5H59DVqk=\nR:replaceOne.yml\na:0:0:444\nZ:Q1QxF03OBohX2NoTQY01PtuZGEj6Y=\nR:updateMany.json\na:0:0:444\nZ:Q1dbRJQhgB0FN2ViU7vVde9d/80vY=\nR:updateMany.yml\na:0:0:444\nZ:Q1LINlBucxOmJNRFD70aj3FtEWpwA=\nR:updateOne-errorLabels.json\na:0:0:444\nZ:Q1n+WJHyPcM9Kci4SzJsBbGatTD38=\nR:updateOne-errorLabels.yml\na:0:0:444\nZ:Q1uazdqmUftG6NYv31QWXqKw1v9FU=\nR:updateOne-serverErrors.json\na:0:0:444\nZ:Q1qDrgh+PLnEvjyIeH9O/C8lj1ceg=\nR:updateOne-serverErrors.yml\na:0:0:444\nZ:Q1TSRzpkbLa4nGK5AnRWgRWJOZ5eQ=\nR:updateOne.json\na:0:0:444\nZ:Q1rXnC40q/mGj9w3cfc2QJhnZwRrI=\nR:updateOne.yml\na:0:0:444\nZ:Q1TgnSfwFSaOQLHFq1+5SW4xVmCdM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/retryable-writes/unified\nM:0:0:555\nR:bulkWrite-serverErrors.json\na:0:0:444\nZ:Q1ghostvtjdfgL1SaRJ8wQXrF4aCU=\nR:bulkWrite-serverErrors.yml\na:0:0:444\nZ:Q1RNWf7vxM2HoINyYOxiNtQHOzlWI=\nR:insertOne-serverErrors.json\na:0:0:444\nZ:Q1aFHTC9KllDV/v3SUeapIYOBUMsg=\nR:insertOne-serverErrors.yml\na:0:0:444\nZ:Q1DjSX5sR9KAXNBMbAFa7lMk0Sdn0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1rF89FcLAuAOvQOJ43MVqXRmcFwg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/errors\nM:0:0:555\nR:error_handling_handshake.json\na:0:0:444\nZ:Q1tuxLsKyIT17McNVaiS4iDQZK9Xc=\nR:error_handling_handshake.yml\na:0:0:444\nZ:Q1DtCXgR2gENptuQFgXa065JD7mJs=\nR:generate-error-tests.py\na:0:0:444\nZ:Q1ctt5n3LDivB9lxLvnUeasqXHSEY=\nR:non-stale-network-error.json\na:0:0:444\nZ:Q1mzelaK31np4UUEHbssvSICvPBis=\nR:non-stale-network-error.yml\na:0:0:444\nZ:Q1Z0x92Sp9R2t/adbCvxNe9qw+UhE=\nR:non-stale-network-timeout-error.json\na:0:0:444\nZ:Q1utmRtMki9x3YjKNVFeUQedq3VjA=\nR:non-stale-network-timeout-error.yml\na:0:0:444\nZ:Q1+pFErkxwKDwMrMJ5X/QJddr1JmU=\nR:non-stale-topologyVersion-greater-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1j+c541P0M+nbgwsuTvsvIUqWRcc=\nR:non-stale-topologyVersion-greater-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1ze81+fu1EiaZij3M3lsRUUnnjRE=\nR:non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1xZl8wzC7cLDGcMa9Ye8ozPaRSn8=\nR:non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1hYgPR7nuFbSCq6RcovWCRrkYe7k=\nR:non-stale-topologyVersion-greater-LegacyNotPrimary.json\na:0:0:444\nZ:Q19turm3IwUJDkMN1YvHAt7qk1c0k=\nR:non-stale-topologyVersion-greater-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1Rm1nugw3Jk5l4ODFbMg1u2g7uFc=\nR:non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1tZcBPTcrrYwjMMewlujdGV8JEX4=\nR:non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1r0d5mfFCmAWcsxMQ7Hn0goHhXxg=\nR:non-stale-topologyVersion-greater-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1v/WECqwircwksLnkZ3oobBGUKv4=\nR:non-stale-topologyVersion-greater-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1er7UJ8ZQim5TeiU9adQxL8aouEg=\nR:non-stale-topologyVersion-greater-NotWritablePrimary.json\na:0:0:444\nZ:Q1EILyiJDYu6q0F1H4xW4hvUoPQRk=\nR:non-stale-topologyVersion-greater-NotWritablePrimary.yml\na:0:0:444\nZ:Q1qQwAsvRcT6WVUN0wAZdeTBpFvSE=\nR:non-stale-topologyVersion-greater-PrimarySteppedDown.json\na:0:0:444\nZ:Q1A7llscUiWNl7VKKEKjTamq1KhaY=\nR:non-stale-topologyVersion-greater-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1kixDkskGEn2uLwz2HvcTYRUsB4Y=\nR:non-stale-topologyVersion-greater-ShutdownInProgress.json\na:0:0:444\nZ:Q1FssoFiXaULEOn6sq3FR6AIcPSqY=\nR:non-stale-topologyVersion-greater-ShutdownInProgress.yml\na:0:0:444\nZ:Q1jguIyhawzo8YO+hwwFT17FCw0Tk=\nR:non-stale-topologyVersion-missing-InterruptedAtShutdown.json\na:0:0:444\nZ:Q14OkcrkVszC6ohmTipwPD2R6/VEk=\nR:non-stale-topologyVersion-missing-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1RduwSSIyA+tCWat3KWnwsIc+WFc=\nR:non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1+UWpr5qlTFROVsjqvkxGTuXeLr0=\nR:non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1y6icLV5gG6dBb3SQz9KVOsbRcP8=\nR:non-stale-topologyVersion-missing-LegacyNotPrimary.json\na:0:0:444\nZ:Q102PdNWmBkhHr1QASTPr3iyYnEBA=\nR:non-stale-topologyVersion-missing-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1WWWs6gOzws9L5WpNzHD1jJuOJrs=\nR:non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1DzZyU2UIr2/+wSn3u+KWQHAjQhY=\nR:non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1r4Akcfy+tFTQ0fa56l9xVoEydV4=\nR:non-stale-topologyVersion-missing-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1riJMatbB5UtKxJSu7kei0+Zwy24=\nR:non-stale-topologyVersion-missing-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1SDOLpDVbqKpoRgh4leZ7Wb4RZpI=\nR:non-stale-topologyVersion-missing-NotWritablePrimary.json\na:0:0:444\nZ:Q1D7fqEiFkFLISckYGDvOYk2bAyog=\nR:non-stale-topologyVersion-missing-NotWritablePrimary.yml\na:0:0:444\nZ:Q1EOHF2f0ujbwzfj7xiloUrfrYe/w=\nR:non-stale-topologyVersion-missing-PrimarySteppedDown.json\na:0:0:444\nZ:Q17vxKHG1K9hEvYS/y6bDvSMD0jDc=\nR:non-stale-topologyVersion-missing-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1zi5WcJjIzPx2g12AzpnljQCVRDk=\nR:non-stale-topologyVersion-missing-ShutdownInProgress.json\na:0:0:444\nZ:Q1iIklFd729a+ak0IqXnvr2RsnjFk=\nR:non-stale-topologyVersion-missing-ShutdownInProgress.yml\na:0:0:444\nZ:Q19bjAJbLaXe068cfhzd1LX6H6ZVU=\nR:non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1rP63kYt3GPPWlXoAg37vW0+AHUU=\nR:non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1J2BnqWMzI8lyeNPLjJZrQ2ZIlB4=\nR:non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q12KW/d+/06ym3N1IPO3Kn0ry9DYk=\nR:non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1m1fCuRE3/3xWksvs2IJpSWlUvbc=\nR:non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.json\na:0:0:444\nZ:Q1qtExWOGbgbBDqbmL8sRji3TokP0=\nR:non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1j7a8FL+aIqS9LLJSBaHYD0FZr0Q=\nR:non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1J7SUTBe/Fb1JfxmmFkZQG1Cgtd8=\nR:non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1Wm8XU420MwAJuSi2yDVEgnoDQcE=\nR:non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1pqY66vJ5wGDmk1FWv/i76gJ9JSI=\nR:non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q14HNhr+GJLPaqXer3o0d+rRD4Z5M=\nR:non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.json\na:0:0:444\nZ:Q1NHyk+C2WNyGSVUEJOYGJ/+E5ylM=\nR:non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.yml\na:0:0:444\nZ:Q1R53D3jVYjqF6m0qtDlvr30vV77c=\nR:non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.json\na:0:0:444\nZ:Q1mMuIThnqpoEmEBrg3T7hxCrX/xc=\nR:non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1BqzOMybLtFZeKHsa9BZI93LIybY=\nR:non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.json\na:0:0:444\nZ:Q1h2B+DljeCV5MwsfXIX73a7MDtx8=\nR:non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml\na:0:0:444\nZ:Q1T10hmPzRswYwDUEpp1b7bL5n6kY=\nR:non-stale-topologyVersion.yml.template\na:0:0:444\nZ:Q1QyMC1rSNM7PfIOJAf0sjE8klDHc=\nR:post-42-InterruptedAtShutdown.json\na:0:0:444\nZ:Q18XTF5fg05DXPGwQtrD24DnSHBtk=\nR:post-42-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1AWEj7qxJFiyTRQOrAu+poBUbwiA=\nR:post-42-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1hitVATXtOhyPw2NsTb1LRhjvHHw=\nR:post-42-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1eN7moV/SOguRPakhWfXAq4aXwrw=\nR:post-42-LegacyNotPrimary.json\na:0:0:444\nZ:Q1tHEViu1Z66fRIRfvtONB3fc6clM=\nR:post-42-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1u+gGvHhkqdMhVNQPE13CgidMAA8=\nR:post-42-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1o8UPwBPwHV+AJBVC1NogXtIyMPY=\nR:post-42-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1E2CKxRfMcB375lrKPkOvNZsw6PY=\nR:post-42-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1Dz5R4+nQsWvGJig0T9lxCaH/xwQ=\nR:post-42-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1QxkMoKHS+sUNhaN2hIQvnF0sAQw=\nR:post-42-NotWritablePrimary.json\na:0:0:444\nZ:Q1q4KbIPr+UBXieh9C+oEDd6DzA0k=\nR:post-42-NotWritablePrimary.yml\na:0:0:444\nZ:Q1HSj2tfjYXt0lzeDURRpf6yJ0OjA=\nR:post-42-PrimarySteppedDown.json\na:0:0:444\nZ:Q1w18Nf7Kt7+s4G357QrRYVdbKxeI=\nR:post-42-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1sYG3p9ok/HEViJE+JLWGMOf5t+A=\nR:post-42-ShutdownInProgress.json\na:0:0:444\nZ:Q1WqCbq30X9/qQpmoBhI17j0uW6kM=\nR:post-42-ShutdownInProgress.yml\na:0:0:444\nZ:Q1cEHkqVal2qvcuXYX86JR310ToIo=\nR:post-42.yml.template\na:0:0:444\nZ:Q13rTP7J+GljHfuQzo8ccX6/g+uSw=\nR:pre-42-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1yvGkux2gBeFNArwkhYnwcViSx34=\nR:pre-42-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q15Il9W9A21sbXp7p2Me5EA+QVkqQ=\nR:pre-42-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1Yz/9ttS8hekbxk8o2M0p9zpukhM=\nR:pre-42-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1oPtKj2a2pvKzX0AzkJdZmtBEA9s=\nR:pre-42-LegacyNotPrimary.json\na:0:0:444\nZ:Q1yzfx1Hj6TAGqgwCuErfwRQDnq8w=\nR:pre-42-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1ejelx23dOGGhS8jGF+Yr25YMhrc=\nR:pre-42-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1u9cRP+DvfvwSqeWhSC5ai2wCN7c=\nR:pre-42-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1IbDfVGKjdHhCijsaJz3CLselU6Q=\nR:pre-42-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1y+HH1w9x8Siy8Ex4jUQnPuGAOUM=\nR:pre-42-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q18m8a+0ybAQNJzv+B3BE6WyCdFSc=\nR:pre-42-NotWritablePrimary.json\na:0:0:444\nZ:Q1wKwX66sSAvvxm5CCJnk4YLfd+8Q=\nR:pre-42-NotWritablePrimary.yml\na:0:0:444\nZ:Q1rnskOzzWu3/Y4nUTz4flpIYfjjs=\nR:pre-42-PrimarySteppedDown.json\na:0:0:444\nZ:Q1TjdPHyT9jYEqdkehVmPDVmnlU50=\nR:pre-42-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1oyt09mdV5/czaStWvk6/BGflIiU=\nR:pre-42-ShutdownInProgress.json\na:0:0:444\nZ:Q1YvSO+/5tZ6MMkHxpd3izRiPJWU8=\nR:pre-42-ShutdownInProgress.yml\na:0:0:444\nZ:Q1q5ISfHSYYVbReb7V9Im17bvI6XQ=\nR:pre-42.yml.template\na:0:0:444\nZ:Q1pwe4rYa3Wled9BxsOMuym92DOOI=\nR:prefer-error-code.json\na:0:0:444\nZ:Q1g4LNt34y1AiupQ6MSOfy9vFOmyA=\nR:prefer-error-code.yml\na:0:0:444\nZ:Q1nuln5yBuVAJAYPt21Tu6kkdjX4I=\nR:stale-generation-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1JqjL7kos6IGfSVhoKtrLQAE4IYs=\nR:stale-generation-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1PtjHmeHlSnIfj4wj7BbLCBwnaQk=\nR:stale-generation-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q16J2jnmgIndclkmjMJQOqJBCqjPk=\nR:stale-generation-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1V/CK01dR+W5s1euaeSy2h44N5es=\nR:stale-generation-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1gIII/X73WiOq0RkPUf3bKPd5kcc=\nR:stale-generation-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1wazVf5Nl0aR2P76oMkexoeP+SeU=\nR:stale-generation-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1sj3CBMZi7IknJ6wHJ8MO/Ogisvc=\nR:stale-generation-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1Wd9SDGANKbw26WAh4sW3OnLuFsI=\nR:stale-generation-NotWritablePrimary.json\na:0:0:444\nZ:Q1XAF4oWLl2ao4+H6VRVyZ/yrZqkc=\nR:stale-generation-NotWritablePrimary.yml\na:0:0:444\nZ:Q1z7A3KrHZuLdbog9JN3iTk37e/MQ=\nR:stale-generation-PrimarySteppedDown.json\na:0:0:444\nZ:Q1KqhjUr2z509tyIS5V/4gB+n8/Rw=\nR:stale-generation-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1a+mWg0Qm11NpJyVAYQPGba4y16k=\nR:stale-generation-ShutdownInProgress.json\na:0:0:444\nZ:Q1Wqz2yMDb3KDoFuGR4JhQNMjn/6E=\nR:stale-generation-ShutdownInProgress.yml\na:0:0:444\nZ:Q1E67Hcgl4xrKNk5XDQtN+iGG9PJ0=\nR:stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1R6tnSRSbSedsODKH0A6ZohCXXz0=\nR:stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1OvNf2Wdcv7iVSBEsZFBUFLN6RKg=\nR:stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1RzyQuWcQNPjhQMb0fD0b/Pbo3CQ=\nR:stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q18Hy7SSv8cFxUbdhYYUTbBTJsmaA=\nR:stale-generation-afterHandshakeCompletes-LegacyNotPrimary.json\na:0:0:444\nZ:Q1RZu+ddLhuL+So/h7H1DwoN1/uQs=\nR:stale-generation-afterHandshakeCompletes-LegacyNotPrimary.yml\na:0:0:444\nZ:Q11v4DMv46LSm+gHdOKxMCsMvv/7s=\nR:stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1Ev82IG8XvkiOAHKotYUudjghc8w=\nR:stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1RO9BAGTu+gFMHCy4c+nD807eqKo=\nR:stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1b3cVztwqAK+He46jx1R8K9OnoiU=\nR:stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1xIm4KxZyYC0v+cnLR47VeQi5EtM=\nR:stale-generation-afterHandshakeCompletes-NotWritablePrimary.json\na:0:0:444\nZ:Q1NcasccWwwczqO0ldsSGTaxWJcMk=\nR:stale-generation-afterHandshakeCompletes-NotWritablePrimary.yml\na:0:0:444\nZ:Q1bxWOI+1l6+DG93IHteZhk8scE7w=\nR:stale-generation-afterHandshakeCompletes-PrimarySteppedDown.json\na:0:0:444\nZ:Q157xxCDZiL9lSemYuSHRgFmlKo4c=\nR:stale-generation-afterHandshakeCompletes-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1ZvzayO527+GmPQLeUMsv65dM1+c=\nR:stale-generation-afterHandshakeCompletes-ShutdownInProgress.json\na:0:0:444\nZ:Q1uembLyTl0ck8X/fNZ3dRLDdA/Os=\nR:stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml\na:0:0:444\nZ:Q11rAZWl/djWAKLRumzYGFYQz9MiA=\nR:stale-generation-afterHandshakeCompletes-network.json\na:0:0:444\nZ:Q1mXLpvXasZtp3Sj9aib6X24qRjWA=\nR:stale-generation-afterHandshakeCompletes-network.yml\na:0:0:444\nZ:Q1UlRio16MaV6J6RZ2hASSgEc/hK8=\nR:stale-generation-afterHandshakeCompletes-timeout.json\na:0:0:444\nZ:Q1iTlt1WjkdGDsebdPTlwsvcyvSHI=\nR:stale-generation-afterHandshakeCompletes-timeout.yml\na:0:0:444\nZ:Q1qVQJEPzhUqsmGFFPZzH1mggrH4Y=\nR:stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1YmEDFSBYcQj8xnvQQ2pKVtiVQMg=\nR:stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1XlKPXMCDXehzkZZmm59VT8bSswk=\nR:stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1xS87CPsF0R8ki60CwejEj/VZMpM=\nR:stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1HPk1Vv+xTzzjtd9OdMf8zHPOqEI=\nR:stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.json\na:0:0:444\nZ:Q1sAJ+a7xW8I5/m+8DHBpjHmzqqU8=\nR:stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1OAtQP408SFD8hy80M1zzFGaPjes=\nR:stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q14IsTnPYKGPXzC2JcDS5+LY+G1/Q=\nR:stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1r6WvD6flY1l8PFiMpTxIdvD0oRg=\nR:stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1/4wQ/+HCTy2A1Yk2aeXJHfieh/0=\nR:stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1y2wAdpwGJw/QnRKnJ5uEgZPVJ6c=\nR:stale-generation-beforeHandshakeCompletes-NotWritablePrimary.json\na:0:0:444\nZ:Q1gyBUWksIKGxOXP01L04E6u3+gsk=\nR:stale-generation-beforeHandshakeCompletes-NotWritablePrimary.yml\na:0:0:444\nZ:Q1UgiuIdYpVw/z/xQjjdrzyOorhU0=\nR:stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.json\na:0:0:444\nZ:Q1fye+jjc3cag6O+VTtOJAnZRaD90=\nR:stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1wFzPJYBPxt9u21yUpykHnuOgEgY=\nR:stale-generation-beforeHandshakeCompletes-ShutdownInProgress.json\na:0:0:444\nZ:Q1azj2otazkltAUGTFtvRV3pUgGF4=\nR:stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml\na:0:0:444\nZ:Q1OdZAMxygrFYQkYuQiYTv3OIuNtQ=\nR:stale-generation-beforeHandshakeCompletes-network.json\na:0:0:444\nZ:Q1xZQP2v8l2XeLsq+t0Xyi75dDPfE=\nR:stale-generation-beforeHandshakeCompletes-network.yml\na:0:0:444\nZ:Q1oceJ9iL5ZRJrgrDqEMU1dhGgKxU=\nR:stale-generation-beforeHandshakeCompletes-timeout.json\na:0:0:444\nZ:Q1IqPVTWgc2nISNFpfgEzPVKvpHw8=\nR:stale-generation-beforeHandshakeCompletes-timeout.yml\na:0:0:444\nZ:Q1HT21y9Yo+HK0myslIstHAEx/VBw=\nR:stale-generation.yml.template\na:0:0:444\nZ:Q1sZ9/6D85MWYdH8mqgwi0LXXrR/U=\nR:stale-topologyVersion-InterruptedAtShutdown.json\na:0:0:444\nZ:Q1KuPebtYaZQ1a3+bczL3poC0Fp6k=\nR:stale-topologyVersion-InterruptedAtShutdown.yml\na:0:0:444\nZ:Q1X5lXtyjCbJqPR4xghPQlzdfgV04=\nR:stale-topologyVersion-InterruptedDueToReplStateChange.json\na:0:0:444\nZ:Q1i2j6fwvWZvRmnNsmdgx1wu2TNVI=\nR:stale-topologyVersion-InterruptedDueToReplStateChange.yml\na:0:0:444\nZ:Q1fMoHVh9wK4eqYnuqgD6iUVto8RE=\nR:stale-topologyVersion-LegacyNotPrimary.json\na:0:0:444\nZ:Q1Bz4JW6OgbA0OgI625pbu24XCY3c=\nR:stale-topologyVersion-LegacyNotPrimary.yml\na:0:0:444\nZ:Q1JDMSJrBwq5YfOtuoa2cCji0CwEQ=\nR:stale-topologyVersion-NotPrimaryNoSecondaryOk.json\na:0:0:444\nZ:Q1Gtj97qpPsSdzQZR6dwdVooXgxQU=\nR:stale-topologyVersion-NotPrimaryNoSecondaryOk.yml\na:0:0:444\nZ:Q1mlFIEJjzV1309rIMapdF3WcPJYw=\nR:stale-topologyVersion-NotPrimaryOrSecondary.json\na:0:0:444\nZ:Q1TP+NndcJcpXqGTinOLMfrM5O0ws=\nR:stale-topologyVersion-NotPrimaryOrSecondary.yml\na:0:0:444\nZ:Q1ml1Sjo8MVQoYzxc5uulxkHbgKro=\nR:stale-topologyVersion-NotWritablePrimary.json\na:0:0:444\nZ:Q1SHA9xyQ6T94Oa+bzFDRQ3d/LGNE=\nR:stale-topologyVersion-NotWritablePrimary.yml\na:0:0:444\nZ:Q111qLm1pbyBRro5TtplP1CjgaFzM=\nR:stale-topologyVersion-PrimarySteppedDown.json\na:0:0:444\nZ:Q1Tjf1+dWCQ+PEVb5DoMZdnAczvEk=\nR:stale-topologyVersion-PrimarySteppedDown.yml\na:0:0:444\nZ:Q1i2/QKUGIDgiO+6zTeMXvtyTBse8=\nR:stale-topologyVersion-ShutdownInProgress.json\na:0:0:444\nZ:Q16lF2kIq9ILm4moIPsB4GjMcza7E=\nR:stale-topologyVersion-ShutdownInProgress.yml\na:0:0:444\nZ:Q1wDd3dGqlMvcv30TtgnHDLPSchUA=\nR:stale-topologyVersion.yml.template\na:0:0:444\nZ:Q1IzZVnbJ+L/uSiSugrK0UfSAQhKU=\nR:write_errors_ignored.json\na:0:0:444\nZ:Q1QkwZe0Hy6f6oNS3f9wolP/6D4Mw=\nR:write_errors_ignored.yml\na:0:0:444\nZ:Q1RNpFL1Ycp9+IXKV4lPJ6I8JzOo4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/integration\nM:0:0:555\nR:auth-error.json\na:0:0:444\nZ:Q1LFgciv27hxBtpPg4EpH25j8KZjk=\nR:auth-error.yml\na:0:0:444\nZ:Q1FOj6TtktUcJ2TEB3h4k0GWtlwog=\nR:auth-misc-command-error.json\na:0:0:444\nZ:Q1/VvZQJLFW9vqmoOlk7Fmgqj3tfk=\nR:auth-misc-command-error.yml\na:0:0:444\nZ:Q1X4/mxZnhNZeQFCZjXA60kH5bLhA=\nR:auth-network-error.json\na:0:0:444\nZ:Q1Wtsa/P/TL4smnYmdMVpAkIVzVXw=\nR:auth-network-error.yml\na:0:0:444\nZ:Q1vRNlAZxQaQBGf/+DQpYIzpD+w+Q=\nR:auth-network-timeout-error.json\na:0:0:444\nZ:Q1wUUApG3fBVaSlz1Fog6miQYXh5w=\nR:auth-network-timeout-error.yml\na:0:0:444\nZ:Q1CAqErShI7b+E+qN246OgB01OTVI=\nR:auth-shutdown-error.json\na:0:0:444\nZ:Q1KmTQllcB0+zOPGu6ybxOeLYIFsQ=\nR:auth-shutdown-error.yml\na:0:0:444\nZ:Q1HiPeXCwPhwDB++XYCgjaRc5S2tg=\nR:cancel-server-check.json\na:0:0:444\nZ:Q1Icj0cjr1TazSKoa89QZJLE1j3V8=\nR:cancel-server-check.yml\na:0:0:444\nZ:Q1qENSsEJw4M7197wg7j0KWtUHAg0=\nR:connectTimeoutMS.json\na:0:0:444\nZ:Q1L6IO8JyUaL2mgN5Hv8mBFnHNvTY=\nR:connectTimeoutMS.yml\na:0:0:444\nZ:Q1gDsg7MUgd2t0gJOcSG1T3NQdn7E=\nR:find-network-error.json\na:0:0:444\nZ:Q1SClD6ssRIc6AtZnpDnGttORCyzU=\nR:find-network-error.yml\na:0:0:444\nZ:Q1gguM5QqjRJu/xvXZA8M2bauY608=\nR:find-network-timeout-error.json\na:0:0:444\nZ:Q1E+UKfSbW8/FKCqorDyzpY5pl+jw=\nR:find-network-timeout-error.yml\na:0:0:444\nZ:Q1vrlamhGiDabv0WsIvDDRa9Vv20g=\nR:find-shutdown-error.json\na:0:0:444\nZ:Q1H8v4LLZyr0U8biRaruRz6d6+H50=\nR:find-shutdown-error.yml\na:0:0:444\nZ:Q1UnDIkx7Q5AJm3/NgZ6F1lJzW1yg=\nR:hello-command-error.json\na:0:0:444\nZ:Q1WLEIBwNoROJQzL8P9XYDcebqkTI=\nR:hello-command-error.yml\na:0:0:444\nZ:Q1kBwKnIMMZlwG7NpYmkuAR4awSzo=\nR:hello-network-error.json\na:0:0:444\nZ:Q12KR/E/Bfd71F4qmnWiY4Vf0ZNos=\nR:hello-network-error.yml\na:0:0:444\nZ:Q1pp0T6jvdSdDOBUSn+hDu9hw1rho=\nR:hello-timeout.json\na:0:0:444\nZ:Q1+iQdstgjTXVN7XrZXbSxOEZHr64=\nR:hello-timeout.yml\na:0:0:444\nZ:Q13guGb6sOzVupqhPSaPLhrGs+F3E=\nR:insert-network-error.json\na:0:0:444\nZ:Q11w7ypfNUYKDdLKieOg0ebSjy50g=\nR:insert-network-error.yml\na:0:0:444\nZ:Q16pEPZfSTo4ekWbmi/ZYQyuBCaGo=\nR:insert-shutdown-error.json\na:0:0:444\nZ:Q1R0zsKt3y/3y54tEN2OJ8wC7oBm4=\nR:insert-shutdown-error.yml\na:0:0:444\nZ:Q1HjyPUkDueqpHP1h+4eWfgD0eUNs=\nR:minPoolSize-error.json\na:0:0:444\nZ:Q1vhYQJg1N2XTW/YqBEOecLghvJNQ=\nR:minPoolSize-error.yml\na:0:0:444\nZ:Q12J+26aPN0qd9I8GLSNQ8/Wme8Uw=\nR:pool-cleared-error.json\na:0:0:444\nZ:Q1KdSMPSJFCu4Ro1uxZzakDBbzCGg=\nR:pool-cleared-error.yml\na:0:0:444\nZ:Q1WJDpITY3Sxx7oBH2IO1PNCFl+iQ=\nR:rediscover-quickly-after-step-down.json\na:0:0:444\nZ:Q1KQDBT+7BrMZLl0vbGHZxMQiKqbQ=\nR:rediscover-quickly-after-step-down.yml\na:0:0:444\nZ:Q1oje1p0JclYOier5B1NvUdOZCZfQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/load-balanced\nM:0:0:555\nR:discover_load_balancer.json\na:0:0:444\nZ:Q1DA2VhlgWcnIPA+UQqOciAW2aZL8=\nR:discover_load_balancer.yml\na:0:0:444\nZ:Q1/Ln6mgHbyBVm3EBYrbHpD7JYphA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/monitoring\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1LICLhL/k38SpSBCHpvp7g+Luj+E=\nR:discovered_standalone.json\na:0:0:444\nZ:Q1HuM8ObNFS6pZ29oFCfYS+JuDPkk=\nR:discovered_standalone.yml\na:0:0:444\nZ:Q1J7xg1uNLUIUHb3WWgwYdzqnG9t0=\nR:load_balancer.json\na:0:0:444\nZ:Q1TqqpiiGD2bXN62VmcLrYWFqOY9Q=\nR:load_balancer.yml\na:0:0:444\nZ:Q1fdPwFsqehfZ2Oy3sLltEouKZ6XE=\nR:replica_set_with_no_primary.json\na:0:0:444\nZ:Q1sIZeoPVNzQenV8aXPEO6HLdo8Gc=\nR:replica_set_with_no_primary.yml\na:0:0:444\nZ:Q1gcoQgEq2TwZPlCA/3UTLx/uKqyk=\nR:replica_set_with_primary.json\na:0:0:444\nZ:Q1A8HdEZMHg9GP/Wfwz7DoRwSSJzU=\nR:replica_set_with_primary.yml\na:0:0:444\nZ:Q1bdHDS/646EcSbO/AELcJZ7Xq9x4=\nR:replica_set_with_removal.json\na:0:0:444\nZ:Q1uMUt5xZcHxXY31HBwaywULGBwYM=\nR:replica_set_with_removal.yml\na:0:0:444\nZ:Q1D3ZzjGMr281pCl9d5u5Q0koB1jM=\nR:required_replica_set.json\na:0:0:444\nZ:Q1YohJgomPBGzVCmlytwbXkcdq4Hk=\nR:required_replica_set.yml\na:0:0:444\nZ:Q18rsrUAxQwSIWdbA76Smj4sN++9A=\nR:standalone.json\na:0:0:444\nZ:Q1nSUNn60jdExpnTYwN9WkwCibCEY=\nR:standalone.yml\na:0:0:444\nZ:Q1uzZz5H2SgCMtguSZfx3LI9YCddo=\nR:standalone_suppress_equal_description_changes.json\na:0:0:444\nZ:Q1fPjVv4gOLOKEiUdY/hbj1Xpvz88=\nR:standalone_suppress_equal_description_changes.yml\na:0:0:444\nZ:Q17WMOlSnDW0N5/C99x4gLPecMf5I=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/rs\nM:0:0:555\nR:compatible.json\na:0:0:444\nZ:Q1pU4qFDHbWWwi+eXb9JT3wd+yPFQ=\nR:compatible.yml\na:0:0:444\nZ:Q1yDw9C2+nkaqIVmWjzDav+0CHbY8=\nR:compatible_unknown.json\na:0:0:444\nZ:Q1bUTeTjdQYsSuU3UY36SdCaVRbx8=\nR:compatible_unknown.yml\na:0:0:444\nZ:Q13o+IOgMe/5SMeFdsAuC4VRx38SA=\nR:discover_arbiters.json\na:0:0:444\nZ:Q1qvs4LfebckYxeH/IJuAI193s6Yw=\nR:discover_arbiters.yml\na:0:0:444\nZ:Q1DJKW5HJxZeF1D92tzWdLT8GzZTA=\nR:discover_arbiters_replicaset.json\na:0:0:444\nZ:Q1eu/sSvrvWDewT+ICzg/BQPcH0HQ=\nR:discover_arbiters_replicaset.yml\na:0:0:444\nZ:Q1Q9h5LQIokvEwE1zScuggFplgueY=\nR:discover_ghost.json\na:0:0:444\nZ:Q1RtYnwvFOvFXybhrJ3u+2HwrdVhU=\nR:discover_ghost.yml\na:0:0:444\nZ:Q1JnGJFpgLYOJtxXuZaOuHY04R0bs=\nR:discover_ghost_replicaset.json\na:0:0:444\nZ:Q1cg5mAqipz48Pm288QodJBZsqPw8=\nR:discover_ghost_replicaset.yml\na:0:0:444\nZ:Q120y4U61tcu7Aw5VKNDZbBqAcohA=\nR:discover_hidden.json\na:0:0:444\nZ:Q1hwKi/gCQ5kQCxgahWDC4EdpUs7Q=\nR:discover_hidden.yml\na:0:0:444\nZ:Q1fuIPMQdYLvUQdwgSEwErep7OPI8=\nR:discover_hidden_replicaset.json\na:0:0:444\nZ:Q16bYQJVFBHUb+V2p+VdQ70vwkkhk=\nR:discover_hidden_replicaset.yml\na:0:0:444\nZ:Q1EwHEAWDGsf4vfVQOIfOr66lBKSw=\nR:discover_passives.json\na:0:0:444\nZ:Q1n0SKLcsWyySS9HDz00GZrmshs6w=\nR:discover_passives.yml\na:0:0:444\nZ:Q1N8l30QvFMuuU1hE6FHij5nYA1vw=\nR:discover_passives_replicaset.json\na:0:0:444\nZ:Q168RMgxjz4ht5yRr1x5odFxh1IhY=\nR:discover_passives_replicaset.yml\na:0:0:444\nZ:Q1V+Mzx2fhCjZL6NgKOBhlHWVi1f8=\nR:discover_primary.json\na:0:0:444\nZ:Q1yiXEYprtL6ZJ08Y0LyqtkETDzPc=\nR:discover_primary.yml\na:0:0:444\nZ:Q128RKWgeEaQykqbklkFPQ0nhYuOM=\nR:discover_primary_replicaset.json\na:0:0:444\nZ:Q1QFCAdU7t0wT2aaSLxHVa5bb9o2I=\nR:discover_primary_replicaset.yml\na:0:0:444\nZ:Q1F6P4gPaoY7sAI1aUeDupoYg5IlI=\nR:discover_rsother.json\na:0:0:444\nZ:Q1UnNsTr4L7BpFxoZJkyvD4erEA2Q=\nR:discover_rsother.yml\na:0:0:444\nZ:Q1eguF1CiFKqG27njul29Qd4MHFBY=\nR:discover_rsother_replicaset.json\na:0:0:444\nZ:Q18j950BIGFpb35ZsMEJiEPsakKmQ=\nR:discover_rsother_replicaset.yml\na:0:0:444\nZ:Q1rRsUxh29OuJcgAZ53IFgb+xuxYQ=\nR:discover_secondary.json\na:0:0:444\nZ:Q1BchomSr5qTmxq+ouoYOpCqe5kfU=\nR:discover_secondary.yml\na:0:0:444\nZ:Q16M2KH7Eic9Ui3S4/FYldno6FcDw=\nR:discover_secondary_replicaset.json\na:0:0:444\nZ:Q1WMBqt05EnOE/nX6HwiClgjB6nOo=\nR:discover_secondary_replicaset.yml\na:0:0:444\nZ:Q1VRKxv5i7ENd3e5tf4E9EZulBT+8=\nR:discovery.json\na:0:0:444\nZ:Q1yuJt8JJwLd5xfJAGsZclFcEF7rg=\nR:discovery.yml\na:0:0:444\nZ:Q1pIEUtEtBmfVB4eEZ2ZwhVUjKt4E=\nR:equal_electionids.json\na:0:0:444\nZ:Q1IHkpmZ0HJDOG8sCAkCBfDoLTFIU=\nR:equal_electionids.yml\na:0:0:444\nZ:Q1O5mS9drSBrdh5xpXBT9u2vtA14E=\nR:hosts_differ_from_seeds.json\na:0:0:444\nZ:Q1FLyUY2WDLTzHSK9wqNZNOlxGq3A=\nR:hosts_differ_from_seeds.yml\na:0:0:444\nZ:Q1w29DBdjNZQhBKjwISLfYLcTh6IQ=\nR:incompatible_arbiter.json\na:0:0:444\nZ:Q1kSudETcAuk9MBag0y4+278XwYtY=\nR:incompatible_arbiter.yml\na:0:0:444\nZ:Q1x7Xw4K5NDlkWta0Dc0GkPku/Oqk=\nR:incompatible_ghost.json\na:0:0:444\nZ:Q1M7DJrqrzEMV8fzRVObnlkPWsvCc=\nR:incompatible_ghost.yml\na:0:0:444\nZ:Q1YEhaC05in32/nTiHyb50B3sq/9w=\nR:incompatible_other.json\na:0:0:444\nZ:Q1vn4CihhQoFLnSkyok48MfDG1XeY=\nR:incompatible_other.yml\na:0:0:444\nZ:Q1JEzjSBoe6lYue5+a9xXuHWykLfc=\nR:ls_timeout.json\na:0:0:444\nZ:Q1qdjiQ/ndvrzkw1dNy8vlosi+twc=\nR:ls_timeout.yml\na:0:0:444\nZ:Q1I9WneXrixdhXlyzT9o3D4IqnjPY=\nR:member_reconfig.json\na:0:0:444\nZ:Q1gCQW2pmUjNhE68fIH8BGldjqzuk=\nR:member_reconfig.yml\na:0:0:444\nZ:Q1K2fLR0Z+DQBrGB++6yDf4mDL4yA=\nR:member_standalone.json\na:0:0:444\nZ:Q1QSa8kPbQFNlLKUy9OHvRdsHuaVg=\nR:member_standalone.yml\na:0:0:444\nZ:Q1Fmk4K/LsoBWYuCAUPkh16lDJ6P0=\nR:new_primary.json\na:0:0:444\nZ:Q14T8c2nLvTcnENcCzVKhPS0Miodo=\nR:new_primary.yml\na:0:0:444\nZ:Q1qz8AB9YmmOXpEeji4JoHLKOFvxE=\nR:new_primary_new_electionid.json\na:0:0:444\nZ:Q13vk7zGI1RgSeGRlo7wDeJaQEQ2I=\nR:new_primary_new_electionid.yml\na:0:0:444\nZ:Q1DoM0mA2FEheyIzLZbYpS+qtQt3I=\nR:new_primary_new_setversion.json\na:0:0:444\nZ:Q1xOoAheKp+1N3YK9acjSKPTJBVoM=\nR:new_primary_new_setversion.yml\na:0:0:444\nZ:Q1kSISfiksJoirkgO44SkybPQn6h4=\nR:new_primary_wrong_set_name.json\na:0:0:444\nZ:Q1V9yV8CydeV9HROvD1E2YfOn3bqE=\nR:new_primary_wrong_set_name.yml\na:0:0:444\nZ:Q1lQoyvdRZtRaTNbYR4VWxFojXFBs=\nR:non_rs_member.json\na:0:0:444\nZ:Q12ZLdNzZ5liIGDYjLxTCbcVSwv9E=\nR:non_rs_member.yml\na:0:0:444\nZ:Q1JcGMJ/3SRdXgxTgqvDaG29ljHqw=\nR:normalize_case.json\na:0:0:444\nZ:Q1qXhPJ/yYI6vcg0jJfSOdJthFM28=\nR:normalize_case.yml\na:0:0:444\nZ:Q1T5u8uyGraM8JbM8EQAkxgPl61tE=\nR:normalize_case_me.json\na:0:0:444\nZ:Q1zOa2kHhOys9LiVY2XQR7P0NbfmA=\nR:normalize_case_me.yml\na:0:0:444\nZ:Q1sCfKBTokEpWvt+GDsyRGPdhRzzE=\nR:null_election_id.json\na:0:0:444\nZ:Q1CVmjX90a24jB/4LcY4kTg7lF/n8=\nR:null_election_id.yml\na:0:0:444\nZ:Q1TXTBFs20wXI0qrxvh4GANI+JT+U=\nR:primary_becomes_ghost.json\na:0:0:444\nZ:Q11D+WEFUSSLjJuW4pDVSBEC5HfMk=\nR:primary_becomes_ghost.yml\na:0:0:444\nZ:Q1GkahK3hR8Kjbmq+TrTCqphW0EPo=\nR:primary_becomes_mongos.json\na:0:0:444\nZ:Q1FthNk/m84xsMBVj0sZgYE641KV0=\nR:primary_becomes_mongos.yml\na:0:0:444\nZ:Q1HoUkRFIXoqSoFl9q3GSfthYZpIo=\nR:primary_becomes_standalone.json\na:0:0:444\nZ:Q1FxzT6iWJ1YgKoJqroJ4egloPTA4=\nR:primary_becomes_standalone.yml\na:0:0:444\nZ:Q15uMp0qP9aOSa9HAiX911+DnyBQ8=\nR:primary_changes_set_name.json\na:0:0:444\nZ:Q1sOctzdhzEJ3uN5Wi1CWHZy/U4sY=\nR:primary_changes_set_name.yml\na:0:0:444\nZ:Q1a19/k2WM91Wyx0G6lip1XNIZjJY=\nR:primary_disconnect.json\na:0:0:444\nZ:Q1Xgdp5VuZi1s+i7z/eWwVanjeFe0=\nR:primary_disconnect.yml\na:0:0:444\nZ:Q1W0zjP5B2LFWzhzVUoOU5oV6lTyY=\nR:primary_disconnect_electionid.json\na:0:0:444\nZ:Q12Fm1fi3HrQ5iAqJL/XyCo6CcBj8=\nR:primary_disconnect_electionid.yml\na:0:0:444\nZ:Q1hoy2OK2OceB601buVoYgMksH680=\nR:primary_disconnect_setversion.json\na:0:0:444\nZ:Q1nvTmZHkDgzt2KJgqsRShbiBrYuM=\nR:primary_disconnect_setversion.yml\na:0:0:444\nZ:Q18K2E0eWnnxcctqRe8LHbmUhMqjk=\nR:primary_hint_from_secondary_with_mismatched_me.json\na:0:0:444\nZ:Q1lkj6YUXchzvg3KK7czbA85fJ7Yo=\nR:primary_hint_from_secondary_with_mismatched_me.yml\na:0:0:444\nZ:Q1GEloolTHCnn7R3mEzyEwilHa67E=\nR:primary_mismatched_me.json\na:0:0:444\nZ:Q1YEA09jhfGM56lm51u99euZiykXI=\nR:primary_mismatched_me.yml\na:0:0:444\nZ:Q1hczNy4pxPPIBWFA37UW5pOUHs7s=\nR:primary_mismatched_me_not_removed.json\na:0:0:444\nZ:Q1uEMjwVc5m5E3nDtXs1IK5rJ7RFg=\nR:primary_mismatched_me_not_removed.yml\na:0:0:444\nZ:Q1J1N7rnQ4Io59PbKI5gfpDcPnImQ=\nR:primary_reports_new_member.json\na:0:0:444\nZ:Q1Onynq1UxyEAQLWnx6/8coWps5Fw=\nR:primary_reports_new_member.yml\na:0:0:444\nZ:Q1cgO01ppnKQtSrmDjEDNCGxr/lXA=\nR:primary_to_no_primary_mismatched_me.json\na:0:0:444\nZ:Q1c21AOZi7VJapE9qmooxs0ogsLkI=\nR:primary_to_no_primary_mismatched_me.yml\na:0:0:444\nZ:Q1gJ7XnZLfDK0CUafq/JYPjLGnf80=\nR:primary_wrong_set_name.json\na:0:0:444\nZ:Q1HLaHl6F4IDsNFEEa4TnKXv3dMIc=\nR:primary_wrong_set_name.yml\na:0:0:444\nZ:Q1oNrqFOIXdeszxJGdeelQrZ5pTcs=\nR:repeated.json\na:0:0:444\nZ:Q1iUs9J4SH2it1q5Yc/invjQejNso=\nR:repeated.yml\na:0:0:444\nZ:Q1ZzicBNPgYg3FKT1wiLxYx0u0ri0=\nR:replicaset_rsnp.json\na:0:0:444\nZ:Q1JASeYM67e2GDzT3ND8IJ4mPWHfk=\nR:replicaset_rsnp.yml\na:0:0:444\nZ:Q1WQ8lh186ARQVKPaOgToLAnXpfBo=\nR:response_from_removed.json\na:0:0:444\nZ:Q16KoyDWHb0gm9AqB2XESz+2W8rI4=\nR:response_from_removed.yml\na:0:0:444\nZ:Q1tuQPzVNGoJFvT92TWOBfKkUUhio=\nR:sec_not_auth.json\na:0:0:444\nZ:Q1un2fSTkVh7ec3A8ZpacnUmj7LEI=\nR:sec_not_auth.yml\na:0:0:444\nZ:Q1Hh7Q9bOkYd8h5CzbpdYWkNT47po=\nR:secondary_ignore_ok_0.json\na:0:0:444\nZ:Q1CuTLMm9gMGa3BjGiiUxqB8AJZR0=\nR:secondary_ignore_ok_0.yml\na:0:0:444\nZ:Q1RP3slBk1TzqC9cADgrYHZ+mEPjo=\nR:secondary_mismatched_me.json\na:0:0:444\nZ:Q1t+q9eUwzPvldKgk1DvLFaetFthg=\nR:secondary_mismatched_me.yml\na:0:0:444\nZ:Q1ex7Rxe+3jZMzyM4YQUOg36iURbc=\nR:secondary_wrong_set_name.json\na:0:0:444\nZ:Q11YjMQTiRackl3aGov5kSgFD6c3g=\nR:secondary_wrong_set_name.yml\na:0:0:444\nZ:Q1LO34fuV39vAx0Bd6jiKq9Qk02fQ=\nR:secondary_wrong_set_name_with_primary.json\na:0:0:444\nZ:Q1n5+f41XHsl/5IVIY2CJep3vrdcw=\nR:secondary_wrong_set_name_with_primary.yml\na:0:0:444\nZ:Q1hk9VKTYh452rAu++9M/N+9BCrPI=\nR:setversion_without_electionid.json\na:0:0:444\nZ:Q1vLybRfm218B+ZDn88LbTwpZLDS4=\nR:setversion_without_electionid.yml\na:0:0:444\nZ:Q1KM2bJ9OfuF67bQSUZp2Y77UirdA=\nR:stepdown_change_set_name.json\na:0:0:444\nZ:Q1R6nfEKRxi/A3gmUkez+tS4WUQv4=\nR:stepdown_change_set_name.yml\na:0:0:444\nZ:Q1TXM6Izd3jtiDoGip8RaduNQatW0=\nR:too_new.json\na:0:0:444\nZ:Q1LlDbYf8adIcR0qxful9xFV4/VBk=\nR:too_new.yml\na:0:0:444\nZ:Q1Rn1tOTHm7Zbsgp48lNz2cWjslnI=\nR:too_old.json\na:0:0:444\nZ:Q1r27o1GJ4MqwIqKcvUpIbRlyGUco=\nR:too_old.yml\na:0:0:444\nZ:Q1jzuVcwBR+jkvkbp+QUYpgLNOENk=\nR:topology_version_equal.json\na:0:0:444\nZ:Q1p6ai9vozLYipbEfkAT73a09F1y4=\nR:topology_version_equal.yml\na:0:0:444\nZ:Q1nqsE3S8vi3+m2smegml3HtrMOg8=\nR:topology_version_greater.json\na:0:0:444\nZ:Q1mpElYRyzyPd1+eiSZQ1S0LpDfSE=\nR:topology_version_greater.yml\na:0:0:444\nZ:Q1P9/fB96xOPBnaCzJ7VeAHS11L8Y=\nR:topology_version_less.json\na:0:0:444\nZ:Q1haWZ02tpt/EPZdAxSn+OPBQ6Lww=\nR:topology_version_less.yml\na:0:0:444\nZ:Q1M8rIhuiz6H39yzsTPz/5jxIGbiY=\nR:unexpected_mongos.json\na:0:0:444\nZ:Q1tCaPxGK9xi+eZ/cL+nZVryJFp88=\nR:unexpected_mongos.yml\na:0:0:444\nZ:Q1qBrY6tpeLWglJul8FWWR9wgILHY=\nR:use_setversion_without_electionid.json\na:0:0:444\nZ:Q1tZKfZDopCJJV+tpX9OFVzUlACE4=\nR:use_setversion_without_electionid.yml\na:0:0:444\nZ:Q1Z1H7mZSEZmAgkqam72yFS3EL6jE=\nR:wrong_set_name.json\na:0:0:444\nZ:Q1dtGdUoqsxoJPZbcF9LNq3plgKjE=\nR:wrong_set_name.yml\na:0:0:444\nZ:Q1YcTTJI/UCF4F+I6iiCChAYxthAg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/sharded\nM:0:0:555\nR:compatible.json\na:0:0:444\nZ:Q1HlP9JUjjP0gZ3Nqg8/HP0/I7Jxw=\nR:compatible.yml\na:0:0:444\nZ:Q14cyy/C8IfNlQBrrxt2Pg4OqN+mY=\nR:discover_single_mongos.json\na:0:0:444\nZ:Q17JxiLKmzmaKV2uBTB4mlDqdz580=\nR:discover_single_mongos.yml\na:0:0:444\nZ:Q16KLjhGcFRCE5bK3mmjWQoRGynzI=\nR:ls_timeout_mongos.json\na:0:0:444\nZ:Q1/zBvVPiSwW32XkEaTnzHNG0JjKQ=\nR:ls_timeout_mongos.yml\na:0:0:444\nZ:Q1gSXEP/yAuEt6J63f3T4zMgfdLaA=\nR:mongos_disconnect.json\na:0:0:444\nZ:Q1Th4IJ5Y0Q8QVNoZcDByZP+GMZuc=\nR:mongos_disconnect.yml\na:0:0:444\nZ:Q1KEUYdg9wb3Rl6HVWw/RczPZ2ZXs=\nR:multiple_mongoses.json\na:0:0:444\nZ:Q1sIsMFob7aGdch6sSWVrgPXq4X8E=\nR:multiple_mongoses.yml\na:0:0:444\nZ:Q1L2YxnC6qhBXjU2UhBKRlV7qaZwc=\nR:non_mongos_removed.json\na:0:0:444\nZ:Q1zRfiFA2BvnLWJQRfg1tSjFekboU=\nR:non_mongos_removed.yml\na:0:0:444\nZ:Q1nXlq+S+J3Limhpnpuci+K7SO9e0=\nR:normalize_uri_case.json\na:0:0:444\nZ:Q1SDy4g6JkHYBDBmmT+NECNCqjpMc=\nR:normalize_uri_case.yml\na:0:0:444\nZ:Q1cpiTwr+KeUaPgF9+ElmQr1EKng0=\nR:too_new.json\na:0:0:444\nZ:Q1I/LUVof5llYHP9Ek4o2VPh0EytY=\nR:too_new.yml\na:0:0:444\nZ:Q1xNHLhqTBXlzQDIktyZesqGAtd5I=\nR:too_old.json\na:0:0:444\nZ:Q1SOYHxQnbcu79+6I/iK6R2FalDv0=\nR:too_old.yml\na:0:0:444\nZ:Q1mH53FYAgUT1UfTUh3Rcw2My48QM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-discovery-and-monitoring/single\nM:0:0:555\nR:compatible.json\na:0:0:444\nZ:Q1JsS+BAoksmeck0wMnhfHcDvBfks=\nR:compatible.yml\na:0:0:444\nZ:Q1UbBMeYgmqd1iqCLyo/c9WyExc9I=\nR:direct_connection_external_ip.json\na:0:0:444\nZ:Q1cPXw6EmFVHIL+z4WSCHUgOHIZgM=\nR:direct_connection_external_ip.yml\na:0:0:444\nZ:Q1Nd1E0v4T+BPPnkaBVAJ2ndBHrQ0=\nR:direct_connection_mongos.json\na:0:0:444\nZ:Q1mfexJ/1hxbV/VtklwJIwuIZ2SHY=\nR:direct_connection_mongos.yml\na:0:0:444\nZ:Q1a9FFsglLQSMWVhzo1gLn5aipFVM=\nR:direct_connection_replicaset.json\na:0:0:444\nZ:Q1C/UuWNd2DHo4SCks3hFwNA1M3OE=\nR:direct_connection_replicaset.yml\na:0:0:444\nZ:Q1SgFcHJ6RVacKWTVD//E7UKxCeJw=\nR:direct_connection_rsarbiter.json\na:0:0:444\nZ:Q1HohI5WTyOPAY/X/2/VapPtdItIA=\nR:direct_connection_rsarbiter.yml\na:0:0:444\nZ:Q15PjdIYRlgj9i0VKAuapmp1u3pKU=\nR:direct_connection_rsprimary.json\na:0:0:444\nZ:Q1qNjlZuIk2XK99Ho402hwtT6PC1c=\nR:direct_connection_rsprimary.yml\na:0:0:444\nZ:Q1te93NLIvQMIDDp3aeDCN7qFtiMw=\nR:direct_connection_rssecondary.json\na:0:0:444\nZ:Q1iLH4ODMtZdRjJAIDPeNWRI2Itl8=\nR:direct_connection_rssecondary.yml\na:0:0:444\nZ:Q1qpPEBzu93ryJYxZLH4RxSP2jIL8=\nR:direct_connection_standalone.json\na:0:0:444\nZ:Q1J+g8HKN8RKe3QoEHSNB0Z+SfqXI=\nR:direct_connection_standalone.yml\na:0:0:444\nZ:Q1mzQTdH5eB3MwxW/kwA8ygfS1EHY=\nR:direct_connection_unavailable_seed.json\na:0:0:444\nZ:Q1Ac5p+Bg2kKKnRMWFXvUTkJmmlhU=\nR:direct_connection_unavailable_seed.yml\na:0:0:444\nZ:Q1j5ZFF7yPXM2l8a0Afgp5PyFStaI=\nR:direct_connection_wrong_set_name.json\na:0:0:444\nZ:Q1Hc03R9WmL/kGA/fTuHlMSJVEes4=\nR:direct_connection_wrong_set_name.yml\na:0:0:444\nZ:Q1M90aLytvxQ5Ra+V1ISZIp89SAJs=\nR:discover_standalone.json\na:0:0:444\nZ:Q1MwdXpzFxxeex9JzBT61A+nlvQdo=\nR:discover_standalone.yml\na:0:0:444\nZ:Q1ddyubmqubOd/CzE28+mqrJXSyR0=\nR:discover_unavailable_seed.json\na:0:0:444\nZ:Q10bEaydT+8oWqrJ8v4epEJ8hMWgs=\nR:discover_unavailable_seed.yml\na:0:0:444\nZ:Q1JC6KQftAXQT/+4PnYOxOeKLHK+g=\nR:ls_timeout_standalone.json\na:0:0:444\nZ:Q1OITMr/vVhNTDmOfK2H1V8jdij7Y=\nR:ls_timeout_standalone.yml\na:0:0:444\nZ:Q1fKQ1MM5OBZfI5dp0mlo7IagjBss=\nR:not_ok_response.json\na:0:0:444\nZ:Q18BPKE/a98Y3meclwcKdPWbAT1kY=\nR:not_ok_response.yml\na:0:0:444\nZ:Q1DynDb46fkxRCt46PY1RvRzCED88=\nR:standalone_removed.json\na:0:0:444\nZ:Q16wCHN8vkbiRrXbpGx59x5nmQXv4=\nR:standalone_removed.yml\na:0:0:444\nZ:Q14MEcmLRLRRk4b1bPVc+nDIeAycI=\nR:standalone_using_legacy_hello.json\na:0:0:444\nZ:Q1W+RPcHuh3sod2KiR9ZpOTEccWz8=\nR:standalone_using_legacy_hello.yml\na:0:0:444\nZ:Q19etQu/4HIk3RyZgVm381VbLUwHw=\nR:too_new.json\na:0:0:444\nZ:Q1QV5iWA9LxmA+z214KT5VSQBiqM8=\nR:too_new.yml\na:0:0:444\nZ:Q1b9qJqXHzwyLGUpAH+rTchpU2T1Q=\nR:too_old.json\na:0:0:444\nZ:Q1THCRUwdNlybySGW8Ugd22dasNQs=\nR:too_old.yml\na:0:0:444\nZ:Q1P1T51KGys5i9VB4FMB0YlAtIDds=\nR:too_old_then_upgraded.json\na:0:0:444\nZ:Q1pHPavyPY1nA80mfTf17c6igKjMI=\nR:too_old_then_upgraded.yml\na:0:0:444\nZ:Q1jvTmfRCYrlkWtRNSfYz5nBjzUic=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1H1p4xvn3KD68ugtsq16nhbB7PPg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/in_window\nM:0:0:555\nR:equilibrium.json\na:0:0:444\nZ:Q1iUYGu6LeQkxxxZJF3beUACv7ZJA=\nR:equilibrium.yml\na:0:0:444\nZ:Q1bEK9HJ/kknRJAaKoblcau2C/cR8=\nR:many-choices.json\na:0:0:444\nZ:Q1/g1GGJWMIE8Bqb2Uv9P3xCVxlfo=\nR:many-choices.yml\na:0:0:444\nZ:Q1MdBdzs/3hIB7ShUdNvwL9UmCXZM=\nR:one-least-two-tied.json\na:0:0:444\nZ:Q1MTZCCItVX2suym1D13A2KDWTB98=\nR:one-least-two-tied.yml\na:0:0:444\nZ:Q1GL+ENIUiD0iGiP4xWGPMnoPLDXs=\nR:rs-equilibrium.json\na:0:0:444\nZ:Q1v8mHU+RBAZus4AoAMId3l0Ut/3c=\nR:rs-equilibrium.yml\na:0:0:444\nZ:Q19qASBqv0bMJIQQcAxWu6qP7uiA8=\nR:rs-three-choices.json\na:0:0:444\nZ:Q1Dy1eNhhccGK4tdcmLvNSHrgthKA=\nR:rs-three-choices.yml\na:0:0:444\nZ:Q1AuTveX8zQXBhXWZnd2gbieEAUbw=\nR:three-choices.json\na:0:0:444\nZ:Q1AKWcSUuFYw7O8il2TNQYmKgl2G8=\nR:three-choices.yml\na:0:0:444\nZ:Q1QZb4/ua24PqiW1kOpAe40U5J8nU=\nR:two-choices.json\na:0:0:444\nZ:Q1LIYnHlOMeWMRFZFJt+9oAAwL52Q=\nR:two-choices.yml\na:0:0:444\nZ:Q1kPE422fIZOeXJ1tR5MOOvuFUhCg=\nR:two-least.json\na:0:0:444\nZ:Q1gyXFaeiv5ZjvGCtIWivJ3I2AI2A=\nR:two-least.yml\na:0:0:444\nZ:Q1htaP3OWlo1WyxAR1BS2fsJ4JhE0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/rtt\nM:0:0:555\nR:first_value.json\na:0:0:444\nZ:Q1uazOyPAy1w1yhN90WkOQvbMn4fQ=\nR:first_value.yml\na:0:0:444\nZ:Q11707a+xmyPvkW5IZMwupMpcYOcE=\nR:first_value_zero.json\na:0:0:444\nZ:Q19LFxjYkZHpXFhAzi1CWiJoatBOE=\nR:first_value_zero.yml\na:0:0:444\nZ:Q144cGHB4lQLcQy5zdkYPZ/i+iFHk=\nR:value_test_1.json\na:0:0:444\nZ:Q16ZJVpGYJCE2NXw5Ml9ucwUVw3ds=\nR:value_test_1.yml\na:0:0:444\nZ:Q13q8grmZwQwLVehKJeYURajTnhSo=\nR:value_test_2.json\na:0:0:444\nZ:Q1g7AgGrMliXDpOtxErblyDq0qugw=\nR:value_test_2.yml\na:0:0:444\nZ:Q1/uNNSvxO/Li7s0QIoBHV61T/dmI=\nR:value_test_3.json\na:0:0:444\nZ:Q1/aK6niVZ81krTLU8MMXwSbDX7WA=\nR:value_test_3.yml\na:0:0:444\nZ:Q1a2qMUKjBrght6JNr1gOgaqdQD1k=\nR:value_test_4.json\na:0:0:444\nZ:Q1TddY4QabwT+z5WQw/ZfC5zHnIEA=\nR:value_test_4.yml\na:0:0:444\nZ:Q1nMvrjG61nTur1J7sPQ/JoPvPYhE=\nR:value_test_5.json\na:0:0:444\nZ:Q1LmDdzcFqr5aFvRZwpt6RqYBWWro=\nR:value_test_5.yml\na:0:0:444\nZ:Q1IOoKcsiMjqKuOWP+DWP+RI1MbHc=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/LoadBalanced\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/LoadBalanced/read\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q152NSwOAixWSnrDfu9O8YEC1RWOI=\nR:Nearest.yml\na:0:0:444\nZ:Q1HUYxnK6p3hWAvVuANws7thO2aZ8=\nR:Primary.json\na:0:0:444\nZ:Q1ea6CnApW6JZdXL0T0WqffVPUuyM=\nR:Primary.yml\na:0:0:444\nZ:Q1Bh3ukkTHoWewnX7OQBjF8ctZ16Y=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1ptXYRjvOeX0gIjbzhVeu/YiwgLU=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1Cd07rbaboi6mVL8BuS+3cp8JGkw=\nR:Secondary.json\na:0:0:444\nZ:Q1UZAlKLDf0Fx8c8uzdEN8TSewy20=\nR:Secondary.yml\na:0:0:444\nZ:Q1nsFuXmzjWud311P2rMwjm7S0GpM=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1chPGul23BMJpL5GUTIs7ho7wjiw=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q13l73hasjdEo3OpGh/ES0cxzmjVU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/LoadBalanced/write\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q1VbqTQ76ty1wu09wRAM8C/mR2q88=\nR:Nearest.yml\na:0:0:444\nZ:Q1nqCG/PYaJ1cd7YWdDE0Lz3vTeHI=\nR:Primary.json\na:0:0:444\nZ:Q1GmSIiivKNTwm1/P2vjgLKUcJtZE=\nR:Primary.yml\na:0:0:444\nZ:Q1aAanQwK4GhIjJl+n2pKtnB/KAqc=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1hkzho3aTnbIMVhyA5gOCRHaN5EQ=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1sqV37wfPLEqqdke+xkoNpCBwYJc=\nR:Secondary.json\na:0:0:444\nZ:Q19khlcq2IGBVIUa94wG7L6/r0hEo=\nR:Secondary.yml\na:0:0:444\nZ:Q1QWBaPUDw/MmdVWVIFCJK4k/fpR0=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1nkJy9+BoJHO8KJ0ziNQgN7UK9cM=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1nn+E/aeU+MUDVkBkcflMOb78k+s=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetNoPrimary\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetNoPrimary/read\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q1fDgqkJDBkzlk60TtQxjFvfnAbbE=\nR:Nearest.yml\na:0:0:444\nZ:Q1Dxh2J+PK22kpfDjqzoBHk5HGYLQ=\nR:Nearest_multiple.json\na:0:0:444\nZ:Q1wvW9mjDOvlIAMKvPtOs9RdMHeOM=\nR:Nearest_multiple.yml\na:0:0:444\nZ:Q1jyvR4+jLELPO4Ac58sRu7RAKbtY=\nR:Nearest_non_matching.json\na:0:0:444\nZ:Q17Anw/ydmwzIKdFrbUHxMz2IN1M0=\nR:Nearest_non_matching.yml\na:0:0:444\nZ:Q1srebHdESfVNYmxZb7sr9eCzl5QA=\nR:PossiblePrimary.json\na:0:0:444\nZ:Q1mQElkdCmdI63SfOcV0m9GTXk1w8=\nR:PossiblePrimary.yml\na:0:0:444\nZ:Q1tzZIXyKtbZAZ6STLS6A+lWa71Yk=\nR:PossiblePrimaryNearest.json\na:0:0:444\nZ:Q1VbdKXW83MgGKDj4+iHHGU+Uz/Vk=\nR:PossiblePrimaryNearest.yml\na:0:0:444\nZ:Q1W4Zngqct41kVBumS/TQLeJLV/4U=\nR:Primary.json\na:0:0:444\nZ:Q1+tuUwj2cF39hg4T8cgw1AXdPaLI=\nR:Primary.yml\na:0:0:444\nZ:Q11kRaNLOoPAXIkEIHZx6YJrRvD1U=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1GuXbVLy10Ke7rxsOhxz9VlbLieE=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1xFh6u2iOiSpyCci7rXZ1bmuoEls=\nR:PrimaryPreferred_non_matching.json\na:0:0:444\nZ:Q1unbO/NHzigFG8Jr9Mvdx+EUPaMM=\nR:PrimaryPreferred_non_matching.yml\na:0:0:444\nZ:Q1uJgMkI1kbHU8nQ8eQdW4S0E4jlQ=\nR:Secondary.json\na:0:0:444\nZ:Q1APuv9923FC6wwY3eFUsnYqVRqmg=\nR:Secondary.yml\na:0:0:444\nZ:Q1wNfL+LIhVdlYq8AlQE1WlCi4RoI=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1lYVknEPfES6s6gd08ogQlaExY9M=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1r4PeWQau260/+MEfX1xDNv58O8M=\nR:SecondaryPreferred_non_matching.json\na:0:0:444\nZ:Q15xWNSWh/3AhjK2jhhqBu9h9yYgc=\nR:SecondaryPreferred_non_matching.yml\na:0:0:444\nZ:Q1Q0vQH6Wwi7tzlP7pGjfeNUDfwXA=\nR:Secondary_multi_tags.json\na:0:0:444\nZ:Q1Pt7tNwuUfxMlwZUaVFAk2YxRIyE=\nR:Secondary_multi_tags.yml\na:0:0:444\nZ:Q19WMg9KO+UDr6nQA4rYiPlu/ymXU=\nR:Secondary_multi_tags2.json\na:0:0:444\nZ:Q10O+tlr4L0gTYtle7+SHO8WWD23M=\nR:Secondary_multi_tags2.yml\na:0:0:444\nZ:Q1GLZQrh8DZ8al402M1yiZJBide0o=\nR:Secondary_non_matching.json\na:0:0:444\nZ:Q1hXTW2LjlCrEOxNFC++MASCZ7K9M=\nR:Secondary_non_matching.yml\na:0:0:444\nZ:Q1cwoqmQg/Sxi44ZxCB2b39H03VSo=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetNoPrimary/write\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1RcqNpEc3BEUjQQtWSzrGOZsLWhY=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q18HWLmAiHp1PI8zFTYfTo6eEOfK4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetWithPrimary\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetWithPrimary/read\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q1HKObRFN/BCC6g97oSW8jjQak/Rk=\nR:Nearest.yml\na:0:0:444\nZ:Q14rS6SlH506C1cTtqvLopeC5yySc=\nR:Nearest_multiple.json\na:0:0:444\nZ:Q1bTsHLYiUti7Yb2p8yWDXzyvKJLg=\nR:Nearest_multiple.yml\na:0:0:444\nZ:Q1LAGW7ARg5+feBR9fv4fM3ku7ud4=\nR:Nearest_non_matching.json\na:0:0:444\nZ:Q1UshHLASQe2bQEmUcaHPMuBPDep4=\nR:Nearest_non_matching.yml\na:0:0:444\nZ:Q1KXQBC0oxcBLTZwdfsfbXvafgaXg=\nR:Primary.json\na:0:0:444\nZ:Q1YboYUuVQGFnVakeOsJZH3KQ/9IM=\nR:Primary.yml\na:0:0:444\nZ:Q1YdKzju/UvECFxPkqYSp+H8km7Ec=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1mkJ/iG84n8jKpCXS1ModA5B+2eY=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1Zh/Valwyi2TzMGIUX5HA94Qn4kE=\nR:PrimaryPreferred_non_matching.json\na:0:0:444\nZ:Q1uiuKZcKscsFiXOlWY7RpSmziCK0=\nR:PrimaryPreferred_non_matching.yml\na:0:0:444\nZ:Q1iWHwwbuSeI5E959rUO2Or1r/yzs=\nR:Secondary.json\na:0:0:444\nZ:Q1orKcoGYI35LvWe52mt8HF88XOso=\nR:Secondary.yml\na:0:0:444\nZ:Q1Gl6Ns6i066tWfaumutXIcRfwRMQ=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1DF6JMpsID82/VL/nX2gR+kJTmfE=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1SvsvI1AefUU90m6Tc5cMxACqXa8=\nR:SecondaryPreferred_non_matching.json\na:0:0:444\nZ:Q1/JBwI81PqiInITKDuBFn03syBLg=\nR:SecondaryPreferred_non_matching.yml\na:0:0:444\nZ:Q1way3lFsrpH0e78QXeQXf1GvIKrE=\nR:SecondaryPreferred_tags.json\na:0:0:444\nZ:Q1PiBxFa46HCv/aDikyCPTzfAyoLA=\nR:SecondaryPreferred_tags.yml\na:0:0:444\nZ:Q1DKBQDzs960E9j+b6izFwWI55iI4=\nR:Secondary_non_matching.json\na:0:0:444\nZ:Q1RUsSXzrf5TqV8G/PVzq6sB/5MFI=\nR:Secondary_non_matching.yml\na:0:0:444\nZ:Q1wucySzNP/HCmbu+rHNZ7vXbWIs0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/ReplicaSetWithPrimary/write\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1Ea3jHAF8w9++xfWpU+ya2WtVSuo=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1X490kYLTixZY+VtG1sUClMyYhXQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Sharded\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Sharded/read\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q1M31dTz4MqKpoa02KEwVZCy06018=\nR:Nearest.yml\na:0:0:444\nZ:Q16CqjtRHp0Udj9uAE08zsLa9OVzQ=\nR:Primary.json\na:0:0:444\nZ:Q14Q97peKQMmI1vEZGn3mCLPebovU=\nR:Primary.yml\na:0:0:444\nZ:Q1FSh7GmwMIbSIw7cgNamo5kRtEk8=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1g/HjwEGt2UKWqPONOQCbo7jSguY=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1dmzgaASzpXyFNvNH5pI6/rwb4hk=\nR:Secondary.json\na:0:0:444\nZ:Q1BPbm/9Wx3jVvZQsLMLxk2qql30g=\nR:Secondary.yml\na:0:0:444\nZ:Q1BUPXdZzfh5jVOPs97BEtv6e2jXc=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1Z6pmdx884nkPE5cwG7MVBub9eB0=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1UqEMEFcCO5GtbQacrU6dMLUW/3k=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Sharded/write\nM:0:0:555\nR:Nearest.json\na:0:0:444\nZ:Q1J5YhD+s6NhTaL31JJDzbDUqdlp4=\nR:Nearest.yml\na:0:0:444\nZ:Q1PZZJf8dLFNHcnPC6Z8TyAAMBzD4=\nR:Primary.json\na:0:0:444\nZ:Q1qFOod6GUO+JiX9ioGShv+Ad93sg=\nR:Primary.yml\na:0:0:444\nZ:Q1TxyqWxlGhRjJU1it5VrU6yFUjvE=\nR:PrimaryPreferred.json\na:0:0:444\nZ:Q1lWQGFw5xwDRa8kVm/NU7acR7IoU=\nR:PrimaryPreferred.yml\na:0:0:444\nZ:Q1noQraTgm+lsiofJ22gd62dCWH58=\nR:Secondary.json\na:0:0:444\nZ:Q1nlcp09g2ujmObqc6uCj+aZwrBeU=\nR:Secondary.yml\na:0:0:444\nZ:Q1dW8GBQFflqtP8DnK2J1Snh2GKAo=\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1Yt3Wc9RDmRpO9TBOlop5iyLCX4k=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1vf/YeoO2n/k9PKCric+lI7e2KMU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Single\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Single/read\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1r+/OG/66VKBHVQ0+dlwHaqst/Qk=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1X/WTASdl2K4weFoNBbNsUmPv5og=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Single/write\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1it+DfOIOVxdbYBnvvQFU3BSnp5U=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q17HC25bAkMy5LPuWCQzWMNl5mI3I=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Unknown\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Unknown/read\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q1ZQKq5dmS4/HdevBOO4PDiVCFVWw=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1srRkpNpaLTLprIiNEnABTbVF8Ic=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/server-selection/server_selection/Unknown/write\nM:0:0:555\nR:SecondaryPreferred.json\na:0:0:444\nZ:Q15I2LGM25tiICnd9CwW1lpUByROw=\nR:SecondaryPreferred.yml\na:0:0:444\nZ:Q1M/2C+l1/mqdC9b3ojKmzDSDFsEU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/sessions\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1NMQPed8RWa2B1stX20PVRiI4gr4=\nR:driver-sessions-dirty-session-errors.json\na:0:0:444\nZ:Q18gmT66CiCN99hKS63iVB/LF2GQc=\nR:driver-sessions-dirty-session-errors.yml\na:0:0:444\nZ:Q1vAZjt2UZuVIQVgaRjXxrVCnumJM=\nR:driver-sessions-server-support.json\na:0:0:444\nZ:Q1jMoWcojzbUmIoBI6PqKXhwenjxs=\nR:driver-sessions-server-support.yml\na:0:0:444\nZ:Q10lXDI/eLwskSwFHmSDfXHgAh2Mk=\nR:snapshot-sessions-not-supported-client-error.json\na:0:0:444\nZ:Q1tZoG5KA6IlzQVAA7debJitEchek=\nR:snapshot-sessions-not-supported-client-error.yml\na:0:0:444\nZ:Q1BKaBK8g9YBf4fzZ+sQeTXYSSdl4=\nR:snapshot-sessions-not-supported-server-error.json\na:0:0:444\nZ:Q1Trz0uO+M64bbWAdt8d8A7rbxkFE=\nR:snapshot-sessions-not-supported-server-error.yml\na:0:0:444\nZ:Q1dn7KnXF3J/gG62r7nMM9Blr0i6M=\nR:snapshot-sessions-unsupported-ops.json\na:0:0:444\nZ:Q129a8gfh5Nd/OAevxnAK6YYnIrUc=\nR:snapshot-sessions-unsupported-ops.yml\na:0:0:444\nZ:Q1X40FWwVkWW5zznt/b9HmQGA0KMA=\nR:snapshot-sessions.json\na:0:0:444\nZ:Q1qbOv5KXOIQ1ILlw2JJqMSEN4l6o=\nR:snapshot-sessions.yml\na:0:0:444\nZ:Q1aIrZcqFT46OF7G4b4USL/kYpFNs=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/single_and_multi_document\nM:0:0:555\nR:large_doc.json.gz\na:0:0:444\nZ:Q1W4NQ9ddBQnstCMkfAttaPoLQhn8=\nR:small_doc.json.gz\na:0:0:444\nZ:Q149NIhIQ5YU5X7PBxHOGT3nxvBlc=\nR:tweet.json.gz\na:0:0:444\nZ:Q1s9fdhWEAwrTADgBi1ITMqRmunR8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/transactions\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1WFQjn2dOQu3VUY6AABFkMmBUw/A=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/transactions/legacy\nM:0:0:555\nR:abort.json\na:0:0:444\nZ:Q1eo/Y/Lcu+hIl2kN3BRIaID0zSbU=\nR:abort.yml\na:0:0:444\nZ:Q1UZWCd5vRwHEeBKFxgSdDdZw/it0=\nR:bulk.json\na:0:0:444\nZ:Q1it+LszcjaGPQ832WUpQr+OHxgEg=\nR:bulk.yml\na:0:0:444\nZ:Q1ekGjeWaGGaZopskF97UxEmzFOzA=\nR:causal-consistency.json\na:0:0:444\nZ:Q1Hu0VQC3MVBQ4HQxoJnXnudQEQg4=\nR:causal-consistency.yml\na:0:0:444\nZ:Q19FtQiv2uJRK8CfflHkzPgOOnffA=\nR:commit.json\na:0:0:444\nZ:Q1clWbztLTVfCrob0Vjlb7j7UBgVg=\nR:commit.yml\na:0:0:444\nZ:Q1vlmGPA9HFvhjBIfOVNkdhg+eUy8=\nR:count.json\na:0:0:444\nZ:Q14j4KZvuhB0414TmdQfasz3fAQGc=\nR:count.yml\na:0:0:444\nZ:Q1WSJp1BT7vcOVkOr758phIQZGbIk=\nR:create-collection.json\na:0:0:444\nZ:Q1jynazkLJH0mRsbq3CpzJrzOLfxQ=\nR:create-collection.yml\na:0:0:444\nZ:Q1RHxFLhIDIAZQYhnSYgsCmIOwvuo=\nR:create-index.json\na:0:0:444\nZ:Q1gExAogKIWd24QHNfVMu9TYd3N2Y=\nR:create-index.yml\na:0:0:444\nZ:Q1+XqT4HVX/WGm/4HLWUl9ZQTvusg=\nR:delete.json\na:0:0:444\nZ:Q14D0VqBZpyCBHeuwUNuQhLuAzjos=\nR:delete.yml\na:0:0:444\nZ:Q1xgLS/5q5LFaa/8mLopWbSP5kBh4=\nR:error-labels.json\na:0:0:444\nZ:Q1pS/ueQq3ukgBWvZaBsBxx83oEJw=\nR:error-labels.yml\na:0:0:444\nZ:Q1ytM3Vk17uNrFh0w55NRmv4sQtWs=\nR:errors-client.json\na:0:0:444\nZ:Q1p4CD2jlk75bOgNPu2ho8TXXs0Yw=\nR:errors-client.yml\na:0:0:444\nZ:Q1oDUp1Ct32t3jZDYc0IQO+vhQCNI=\nR:errors.json\na:0:0:444\nZ:Q1ZjyQTyi97kUL39Y0QoKjca4kAGA=\nR:errors.yml\na:0:0:444\nZ:Q18LeYAqS7Wh+FvqVqn/P5ayN0tEA=\nR:findOneAndDelete.json\na:0:0:444\nZ:Q1igFvG1PiWYl3pQsCgCcWy2oN6Hs=\nR:findOneAndDelete.yml\na:0:0:444\nZ:Q1kv+NgsOSYlpUjC0w1tdEoHfPqdY=\nR:findOneAndReplace.json\na:0:0:444\nZ:Q1xn6wsL8t3onzMBEuiiOEJiXdj34=\nR:findOneAndReplace.yml\na:0:0:444\nZ:Q1c2ZwyhTVxgz+eyltibBJZbPhSg4=\nR:findOneAndUpdate.json\na:0:0:444\nZ:Q11Kdc+DAndSm8Vd5RL/rG5CW05Rg=\nR:findOneAndUpdate.yml\na:0:0:444\nZ:Q1dWTJ5IItfEvda/0k7J+BPFscKfs=\nR:insert.json\na:0:0:444\nZ:Q1Xmk+pzzHT8IL+fyIrPm75Tc2mnU=\nR:insert.yml\na:0:0:444\nZ:Q1YnTThgnPUb+nPyOm7r/O/e1RF8Y=\nR:isolation.json\na:0:0:444\nZ:Q1yta/16lhlLwCh6efrnJxQrDcBRA=\nR:isolation.yml\na:0:0:444\nZ:Q1fD1CrPTLT31+JqIIQf73Z5jNsj4=\nR:mongos-pin-auto-tests.py\na:0:0:444\nZ:Q1fFtFnb+VcWtDDz4pmYsM2ziKqq4=\nR:mongos-pin-auto.json\na:0:0:444\nZ:Q1RX7UxFxUCV1puA3McHdN6kHQo84=\nR:mongos-pin-auto.yml\na:0:0:444\nZ:Q1R6T8qqH14SUGxHRWdgHJQ9dAESc=\nR:mongos-recovery-token.json\na:0:0:444\nZ:Q18kHHT+F7h+rG9XCKBwNoWdhqpYk=\nR:mongos-recovery-token.yml\na:0:0:444\nZ:Q1mEOCs0aLyOqfatBEhIzDdAnUJAc=\nR:pin-mongos.json\na:0:0:444\nZ:Q1XA9gsxe5W9NQFlI1iOjrpLffs38=\nR:pin-mongos.yml\na:0:0:444\nZ:Q1X5vchsT1EEsEkwxCkS5yH6pZDDU=\nR:read-concern.json\na:0:0:444\nZ:Q1OzL/zw+Emim+GvSnpaC0NpeJdiA=\nR:read-concern.yml\na:0:0:444\nZ:Q1DQP7eg9zwv0ASQ6TVFu2Kil6ARw=\nR:read-pref.json\na:0:0:444\nZ:Q1SI9IGdo1oWDl63iNzVmZ4FvnSBc=\nR:read-pref.yml\na:0:0:444\nZ:Q11NHrkiskvLo/gCQe4LtK9UWNf2E=\nR:reads.json\na:0:0:444\nZ:Q1b8vxE1sN1tZK8+L0u153W0DvVCc=\nR:reads.yml\na:0:0:444\nZ:Q10pDE32F4bqm+TjJw7Ubws2lnolA=\nR:retryable-abort-errorLabels.json\na:0:0:444\nZ:Q1lK2LU89kNmY5hdq76n7SvSri2Z4=\nR:retryable-abort-errorLabels.yml\na:0:0:444\nZ:Q1QeS+wsH+Ht19PrqYrA1vorCXeP8=\nR:retryable-abort.json\na:0:0:444\nZ:Q1takOOj5xzAtUNwght5qHHuFA3R4=\nR:retryable-abort.yml\na:0:0:444\nZ:Q18EQsXp3ckOOYwp49DWsEDf8vd6o=\nR:retryable-commit-errorLabels.json\na:0:0:444\nZ:Q14fmHClAz6cDPo2bJK95Ckh192jc=\nR:retryable-commit-errorLabels.yml\na:0:0:444\nZ:Q1+2CestfuwTnVha+rZHjS6PgBFmk=\nR:retryable-commit.json\na:0:0:444\nZ:Q1Nlr+gguRsfbyLoj67uvcFUqEIM8=\nR:retryable-commit.yml\na:0:0:444\nZ:Q1xcr8HAbVaxD4yH3zqcWjbx99F+8=\nR:retryable-writes.json\na:0:0:444\nZ:Q1/iF7yYskdRdP7MHXTHtaQVUsBtE=\nR:retryable-writes.yml\na:0:0:444\nZ:Q1KUS4qJj0rWBo8QTCciRCdcE5El0=\nR:run-command.json\na:0:0:444\nZ:Q11N9rP92vNRJ8zACNMmwCAV2GIyM=\nR:run-command.yml\na:0:0:444\nZ:Q1QFbE6kr6YsUS5ByleQuSSy7EkOY=\nR:transaction-options-repl.json\na:0:0:444\nZ:Q1LltdOUY0NsgR6JG7YrjWyZHe8j4=\nR:transaction-options-repl.yml\na:0:0:444\nZ:Q1oUoJJa6BL6lHH5wlPvOxqICBTVE=\nR:transaction-options.json\na:0:0:444\nZ:Q1IFo3L+ISxLtFkyFMQ6XbjgrOBPA=\nR:transaction-options.yml\na:0:0:444\nZ:Q12ltvCbdkTTglF4dz040J33rCvWo=\nR:update.json\na:0:0:444\nZ:Q1jRtiWZv1H0z2iFQJ2ZwO2ulOUH0=\nR:update.yml\na:0:0:444\nZ:Q1kIla8cvdMglmb8XH+BRFnHepfVM=\nR:write-concern.json\na:0:0:444\nZ:Q1PnAbsxndkR7DivxPxGTg5ADRjV8=\nR:write-concern.yml\na:0:0:444\nZ:Q1+8Dm+DAGL7qq5+dT/URxle9mWvU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/transactions/unified\nM:0:0:555\nR:mongos-unpin.json\na:0:0:444\nZ:Q18RnzgguKPftO6HV+tZdjwyhcNSU=\nR:mongos-unpin.yml\na:0:0:444\nZ:Q1m9Y3UySvUM8MYGZYm16LlEDMxG8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/unified-test-format\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/unified-test-format/valid-fail\nM:0:0:555\nR:assertNumberConnectionsCheckedOut.json\na:0:0:444\nZ:Q1YIzxhebz1Kubb+wkptaljCzIfkw=\nR:assertNumberConnectionsCheckedOut.yml\na:0:0:444\nZ:Q1qyms5dyHSGuvlHaXKWIDzbfmaH4=\nR:clientEncryptionOpts-missing-kms-credentials.json\na:0:0:444\nZ:Q1eNHm2q95qK13oBvu+3BN0OWPhBI=\nR:clientEncryptionOpts-missing-kms-credentials.yml\na:0:0:444\nZ:Q12wBBfeN1qvzNmxuuhHZkCDY2+o0=\nR:clientEncryptionOpts-no-kms.json\na:0:0:444\nZ:Q10C09og1xmBH8kvwNbH523N1K0iw=\nR:clientEncryptionOpts-no-kms.yml\na:0:0:444\nZ:Q1WZSfbxWZmH6Dri1B1Wd2sKQv3zQ=\nR:entity-bucket-database-undefined.json\na:0:0:444\nZ:Q16Swlo+v7fOxiFAW0cSNwgs1xDHU=\nR:entity-bucket-database-undefined.yml\na:0:0:444\nZ:Q1FK2Q5RqwUcrWkas7odnd0iBFe0k=\nR:entity-client-apiVersion-unsupported.json\na:0:0:444\nZ:Q1sYfpq2l8/Gms3ayngFZtpKmIYlY=\nR:entity-client-apiVersion-unsupported.yml\na:0:0:444\nZ:Q1JhyGOc8MlfvFZrw1oFiQbCBEfOE=\nR:entity-client-storeEventsAsEntities-conflict_with_client_id.json\na:0:0:444\nZ:Q1UdW03RZN7ioAqXAIOLi7AuUJQXQ=\nR:entity-client-storeEventsAsEntities-conflict_with_client_id.yml\na:0:0:444\nZ:Q1RaPXxRaED9sFodNyuqV3r9w+ACM=\nR:entity-client-storeEventsAsEntities-conflict_within_different_array.json\na:0:0:444\nZ:Q1fPlRBmd8keyV62AwE0tTkZ89rwI=\nR:entity-client-storeEventsAsEntities-conflict_within_different_array.yml\na:0:0:444\nZ:Q1acHeYucrKbR6OpM3zc6Z6xzPJ7A=\nR:entity-client-storeEventsAsEntities-conflict_within_same_array.json\na:0:0:444\nZ:Q1AWUFsmL4zADSAYhSg7WiAGiEgAM=\nR:entity-client-storeEventsAsEntities-conflict_within_same_array.yml\na:0:0:444\nZ:Q1Ddl+T2LYtz6xZ4Zi1bk91QQCN3Q=\nR:entity-collection-database-undefined.json\na:0:0:444\nZ:Q1KomtwgQ/gC+eFDcj3HdvJmSafeY=\nR:entity-collection-database-undefined.yml\na:0:0:444\nZ:Q1bIoI/pt0G6jHuhm2Z+GA3lyHSSs=\nR:entity-database-client-undefined.json\na:0:0:444\nZ:Q1aMDKFY8MuSjsPF6MpmobmtkgswA=\nR:entity-database-client-undefined.yml\na:0:0:444\nZ:Q1TnQ8DwyDF3Kgq7BsjaKD/4XkciA=\nR:entity-find-cursor.json\na:0:0:444\nZ:Q1Bz9iSscZOVUPdeqc00hReT0rqKc=\nR:entity-find-cursor.yml\na:0:0:444\nZ:Q1qmB8uBQzM0FbnuEpuZtq4aIF/co=\nR:entity-session-client-undefined.json\na:0:0:444\nZ:Q1LB2xc4GlN7YmpyprKOYk5IMKtss=\nR:entity-session-client-undefined.yml\na:0:0:444\nZ:Q1n/nkLQVHNsEIGGL8V5P9sSUR0ds=\nR:ignoreResultAndError.json\na:0:0:444\nZ:Q1xVM1PPshw/GN4Ku+SETxlLndT2o=\nR:ignoreResultAndError.yml\na:0:0:444\nZ:Q140FyzpTFADf6O6sMj4lqwkmZGTI=\nR:kmsProviders-missing_aws_kms_credentials.json\na:0:0:444\nZ:Q1blKB3VDF5jEP/yNT2QKvbLeLx2U=\nR:kmsProviders-missing_aws_kms_credentials.yml\na:0:0:444\nZ:Q1sA1071vqQsz6GAGhBPg3YvW2dXU=\nR:kmsProviders-missing_azure_kms_credentials.json\na:0:0:444\nZ:Q1F9inU/eFF0RJbCVt900I6j9GN6U=\nR:kmsProviders-missing_azure_kms_credentials.yml\na:0:0:444\nZ:Q1hgEdz+bpuFFhLADdjAU55C+a5F4=\nR:kmsProviders-missing_gcp_kms_credentials.json\na:0:0:444\nZ:Q1i1+Ar7mE7eB1a2FBzs/fNTDj1Go=\nR:kmsProviders-missing_gcp_kms_credentials.yml\na:0:0:444\nZ:Q1AizOov2SzrHNMSI31+q7F/3zuSo=\nR:kmsProviders-no_kms.json\na:0:0:444\nZ:Q1cu2FANHYPagfEwSgSwBerxjPgiY=\nR:kmsProviders-no_kms.yml\na:0:0:444\nZ:Q1CF8Jg0eNJ+166HITP8HNQcnQSPs=\nR:operation-failure.json\na:0:0:444\nZ:Q1DZqYsorPDX75w5Ad2C/9k2FQo5c=\nR:operation-failure.yml\na:0:0:444\nZ:Q1VA674RkAL7qfD/5hjr4sDpL0lqQ=\nR:operation-unsupported.json\na:0:0:444\nZ:Q1eIECmNugqSL6+UyYWzSA6CCdAsI=\nR:operation-unsupported.yml\na:0:0:444\nZ:Q10cfq8W2LUBb7Hz5xUJSsgs1ROGE=\nR:returnDocument-enum-invalid.json\na:0:0:444\nZ:Q1Yvj6jbYrf05ERcIazh9LjJ/CBbU=\nR:returnDocument-enum-invalid.yml\na:0:0:444\nZ:Q1Czv4e1MWzC4b6sqEscJZauzzRbc=\nR:schemaVersion-unsupported.json\na:0:0:444\nZ:Q1evvAHEfTbHCmGxLcTkLbo9XoWyQ=\nR:schemaVersion-unsupported.yml\na:0:0:444\nZ:Q1ICkDeZ+CtnnyOMvSSq7c2LR2rAU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/unified-test-format/valid-pass\nM:0:0:555\nR:assertNumberConnectionsCheckedOut.json\na:0:0:444\nZ:Q1+Tow5s+TaN6ZohhJUSDQ4ydW0VQ=\nR:assertNumberConnectionsCheckedOut.yml\na:0:0:444\nZ:Q1oDDHhsdyoLdHQYLhFcqg2Qls/nA=\nR:entity-client-cmap-events.json\na:0:0:444\nZ:Q1t1bNAO2HZw1x7WAM72rAHEcrem0=\nR:entity-client-cmap-events.yml\na:0:0:444\nZ:Q1ClpH+XDHCdgU+6EALTsdr1BqA54=\nR:entity-client-storeEventsAsEntities.json\na:0:0:444\nZ:Q1XQJTuABUK79VLXbI5J1YNyQ73xY=\nR:entity-client-storeEventsAsEntities.yml\na:0:0:444\nZ:Q1akvRF1xMbGumx0ZijwFXh/7QY1U=\nR:entity-cursor-iterateOnce.json\na:0:0:444\nZ:Q1kJeH0gMnzyk9o89f5eQPmgj3u/c=\nR:entity-cursor-iterateOnce.yml\na:0:0:444\nZ:Q1CtkgiWxYrewgZZ3z2dM6N06IMew=\nR:entity-find-cursor.json\na:0:0:444\nZ:Q1si4574MY9G2DB6wthepPYDkEgtg=\nR:entity-find-cursor.yml\na:0:0:444\nZ:Q1nC1xZDUlWHoCr1ubc0hWSXoAze8=\nR:expectedEventsForClient-eventType.json\na:0:0:444\nZ:Q1Zvv72UFeXSA+ynCe73HpL8NMkUE=\nR:expectedEventsForClient-eventType.yml\na:0:0:444\nZ:Q15f9XQtatD7+oOAIDanMG8g0+dD4=\nR:expectedEventsForClient-ignoreExtraEvents.json\na:0:0:444\nZ:Q1AWF5dQpBDIwXVKcn41bybvtWEqw=\nR:expectedEventsForClient-ignoreExtraEvents.yml\na:0:0:444\nZ:Q1N5djH8UL3ri02vOyiW0iWXz2J9Y=\nR:ignoreResultAndError.json\na:0:0:444\nZ:Q1lghiMAMmJ+bQ3bWGEOMkfsIWQhA=\nR:ignoreResultAndError.yml\na:0:0:444\nZ:Q1qpUd7RqTwBf9G9ldMQ/orYGK94k=\nR:initialCollectionData-collectionOptions.json\na:0:0:444\nZ:Q1Sle+rm7grRSpc3TKIQtDtB+R8vw=\nR:initialCollectionData-collectionOptions.yml\na:0:0:444\nZ:Q1Ai1VtTyFQD1r5995gKNCqAS7O/0=\nR:kmsProviders-explicit_kms_credentials.json\na:0:0:444\nZ:Q1dbOmaDRJjFxl/aEg7W3hkQmX5KI=\nR:kmsProviders-explicit_kms_credentials.yml\na:0:0:444\nZ:Q1tk7mJTVMCcT5/md1aqO5zql5Rck=\nR:kmsProviders-mixed_kms_credential_fields.json\na:0:0:444\nZ:Q1OG4icHAdOINqNwa70wZ0+ac7YV4=\nR:kmsProviders-mixed_kms_credential_fields.yml\na:0:0:444\nZ:Q1F6VMx4257QKuMuLROBeIpSv/y60=\nR:kmsProviders-placeholder_kms_credentials.json\na:0:0:444\nZ:Q1mpy8246AolG5s9N2AL6uQvGZ/aE=\nR:kmsProviders-placeholder_kms_credentials.yml\na:0:0:444\nZ:Q12RW6u69X5KMZrWUyU5Y+CKxsZe8=\nR:kmsProviders-unconfigured_kms.json\na:0:0:444\nZ:Q1eAk/e+OjNwL3C7wd5qIUeI9HrAg=\nR:kmsProviders-unconfigured_kms.yml\na:0:0:444\nZ:Q1jNnRjyBemLl5Lu2NIklyMKYNbkw=\nR:matches-lte-operator.json\na:0:0:444\nZ:Q1pPqbY17ClmkCUce/fJ7ds/hQbFc=\nR:matches-lte-operator.yml\na:0:0:444\nZ:Q1u7gTXiePZUXm4aYKKg5S/EdEfE4=\nR:observeSensitiveCommands.json\na:0:0:444\nZ:Q1jKFVHLKG1SlgZiX5JwuOZPFtpvo=\nR:observeSensitiveCommands.yml\na:0:0:444\nZ:Q1Locw861LRKc7VJzionsDpw8ouFc=\nR:poc-change-streams.json\na:0:0:444\nZ:Q1EbtzObmmbzM928h7R6fQgqPnPoE=\nR:poc-change-streams.yml\na:0:0:444\nZ:Q1yrSslyJavXPDotUNO/gc9EKsME0=\nR:poc-command-monitoring.json\na:0:0:444\nZ:Q1U891XlHotXGtaa0X63hVJ/FoL/Y=\nR:poc-command-monitoring.yml\na:0:0:444\nZ:Q1l63ULezUkCwvXvrQihHCIRIeZXA=\nR:poc-crud.json\na:0:0:444\nZ:Q1K82CCqg8XBGE71JlE+ka2Mqq9JY=\nR:poc-crud.yml\na:0:0:444\nZ:Q1QONd4qhsuH5S0SxPyZE8MHN0DKs=\nR:poc-gridfs.json\na:0:0:444\nZ:Q1wUl884Q7s3iRiGPc7NUVgITu08M=\nR:poc-gridfs.yml\na:0:0:444\nZ:Q1l0eSygeinfExQqYARDHnsXwI8mw=\nR:poc-retryable-reads.json\na:0:0:444\nZ:Q1SQkrbFlx8jFIgKUemRvo2D/myGo=\nR:poc-retryable-reads.yml\na:0:0:444\nZ:Q1wfdanBtA8LsNy1r2NPx4+V26xco=\nR:poc-retryable-writes.json\na:0:0:444\nZ:Q1C0eeMJDzQgjdY5oVW1WFW9OpiRI=\nR:poc-retryable-writes.yml\na:0:0:444\nZ:Q1akD9eqa4LjQdkK1uXlDGdbHcEbU=\nR:poc-sessions.json\na:0:0:444\nZ:Q1DCnSmGpg2qMTwD9nJNJJdEL8iiE=\nR:poc-sessions.yml\na:0:0:444\nZ:Q1oguZZvGGuFtvJkrJz72dZ8AAyYg=\nR:poc-transactions-convenient-api.json\na:0:0:444\nZ:Q1NcYL/lZA7ODa3VvU22oqOBCdL48=\nR:poc-transactions-convenient-api.yml\na:0:0:444\nZ:Q1OPFWVsb4O+qu3en1hyO7TUjleTQ=\nR:poc-transactions-mongos-pin-auto.json\na:0:0:444\nZ:Q1baYzth/DeOd2SGfQYAV/CB2ctZM=\nR:poc-transactions-mongos-pin-auto.yml\na:0:0:444\nZ:Q1mNjx9QAJstsxZLmTCZdKIG+L7h4=\nR:poc-transactions.json\na:0:0:444\nZ:Q1elNKB62EdO4sNgPz8VMjpsIxAFs=\nR:poc-transactions.yml\na:0:0:444\nZ:Q18VBm4zAX+ghxBe2Qiy1E95C/KEU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/uri-options\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1CT8pJTb4k+j3PtB3m728NRr6luo=\nR:auth-options.json\na:0:0:444\nZ:Q1ZF+H8eSJq1BuwbpdmDLG9XTbuM4=\nR:auth-options.yml\na:0:0:444\nZ:Q16Md7e0QlAZ1fNtmAQ1sGnR4OpZE=\nR:ca.pem\na:0:0:444\nZ:Q116jze2vPsthegBKAs3pY7V68Y4c=\nR:cert.pem\na:0:0:444\nZ:Q116jze2vPsthegBKAs3pY7V68Y4c=\nR:client.pem\na:0:0:444\nZ:Q116jze2vPsthegBKAs3pY7V68Y4c=\nR:compression-options.json\na:0:0:444\nZ:Q1cxC8uJ6a9qmLpkpSMAxDcnBKEwg=\nR:compression-options.yml\na:0:0:444\nZ:Q1grxXwAJPfb5XU303OGTaO+FIU04=\nR:concern-options.json\na:0:0:444\nZ:Q1GpB+KW76ddvcljJrAWtsbF1VAf0=\nR:concern-options.yml\na:0:0:444\nZ:Q1y2whEjTB/EDtSeRy50CRugs5+ug=\nR:connection-options.json\na:0:0:444\nZ:Q1E6KRbay2VrFTKEpKhZrw/RnqqUo=\nR:connection-options.yml\na:0:0:444\nZ:Q1oxGfpe/X6ERpxftkBZGbByKaMjk=\nR:connection-pool-options.json\na:0:0:444\nZ:Q1j+u2nH1/V9FUsys4A68pUJvxS3Q=\nR:connection-pool-options.yml\na:0:0:444\nZ:Q15zf2rqsOu2eDZAaKh7EO/T83V7I=\nR:read-preference-options.json\na:0:0:444\nZ:Q1h7gz7PRts0sMMJQktsb8oOQGqYQ=\nR:read-preference-options.yml\na:0:0:444\nZ:Q1vkAxBU/YFQjtRsm2Gt9cKnjQfAM=\nR:single-threaded-options.json\na:0:0:444\nZ:Q1l0o5dQcva+9kUJnv5Fn8sMVstYo=\nR:single-threaded-options.yml\na:0:0:444\nZ:Q1yzoNhF1U4qtGoBv3cLt3frugcpY=\nR:srv-options.json\na:0:0:444\nZ:Q1+NTrXL3g4I5+m/cCdAF9q9+5uJs=\nR:srv-options.yml\na:0:0:444\nZ:Q1Qf3+pC3Cu8iulYjLqQ2c/oXA5BM=\nR:tls-options.json\na:0:0:444\nZ:Q11ysOg8MymiIoARGH1hQIKAoMk/A=\nR:tls-options.yml\na:0:0:444\nZ:Q1hq3wDe8V3Kni553G3xcgkp2/FOQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/data/versioned-api\nM:0:0:555\nR:README.rst\na:0:0:444\nZ:Q1hdNXiebNnf1eti3t/FjLsCjZU7A=\nR:crud-api-version-1-strict.json\na:0:0:444\nZ:Q1nAnlH3lmqa6eIwnP3lS1btcdnrI=\nR:crud-api-version-1-strict.yml\na:0:0:444\nZ:Q1cGrXiPXmquXstd3uR8iTbdEDvYA=\nR:crud-api-version-1.json\na:0:0:444\nZ:Q15UOpGdHpxFkYUZ4x5Ds6Tu8yMnc=\nR:crud-api-version-1.yml\na:0:0:444\nZ:Q1SVT96p0WMXyz3T7SUAjFyeqltrc=\nR:runcommand-helper-no-api-version-declared.json\na:0:0:444\nZ:Q1pbaswuUhfPSbECHgi0lvqxRinFY=\nR:runcommand-helper-no-api-version-declared.yml\na:0:0:444\nZ:Q1vBPb5e3j4eKxIpO3F71NoYZ+E2I=\nR:test-commands-deprecation-errors.json\na:0:0:444\nZ:Q1WjjKh0qKyBskwIL2S79lA0tulMg=\nR:test-commands-deprecation-errors.yml\na:0:0:444\nZ:Q13xUGMIoErgz3NvvyS6fY3J7Zr3o=\nR:test-commands-strict-mode.json\na:0:0:444\nZ:Q12LguAgaOO8B1XznkJwilvU6SheM=\nR:test-commands-strict-mode.yml\na:0:0:444\nZ:Q1aYlep/+zxGKLFNkBDBeI7NdcSMM=\nR:transaction-handling.json\na:0:0:444\nZ:Q11+zt1PpbyZdNiTZAqjbRezBqCGY=\nR:transaction-handling.yml\na:0:0:444\nZ:Q1Yd9aVpUTMEr/9/JjY+T8b5nJsl8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/docs\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1bd5iREQI1Jyy61Djm4v2svj9Un4=\nR:common-issues.md\na:0:0:444\nZ:Q1QuYV2ADHrLWkagbIMoqVJE+kg3c=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/etc\nM:0:0:555\nR:add_license.sh\na:0:0:444\nZ:Q1qX9U9kpNQlbjY8hTKnT9nnka47E=\nR:check_fmt.sh\na:0:0:444\nZ:Q1B/ddOCHYVXecuUlSr3z4i1FS6hE=\nR:generate_notices.pl\na:0:0:444\nZ:Q1UsbTe3+wbrtqHznanpkUGkA2/Lk=\nR:list_pkgs.sh\na:0:0:444\nZ:Q19WbcQMhjFpZxuJE1V5HAXY0zYZk=\nR:list_test_pkgs.sh\na:0:0:444\nZ:Q12gR6x2RYQkGARts1NfGzseTEmfE=\nR:update_spec_tests.sh\na:0:0:444\nZ:Q1GMWnakJziCcvZ5/4V5+8rNz0PXM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/etc/assets\nM:0:0:555\nR:docs-mongodb-green.svg\na:0:0:444\nZ:Q1wmyJFnRS8/oJeHqUgM9M3h06xaU=\nR:godev-bson-blue.svg\na:0:0:444\nZ:Q1E/rlW0WVXTtQqMgOcIzOptn47LM=\nR:godev-mongo-blue.svg\na:0:0:444\nZ:Q1qsLKtfRvFlI7bCOUYiNHXbxTdYI=\nR:mongo-gopher.png\na:0:0:444\nZ:Q1DUyLWFhdQUVI4wzRQVBq126CF3c=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/event\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q16ogzwBsSM0Wr/k6kI3n4QAhho2M=\nR:examples_test.go\na:0:0:444\nZ:Q17dtd9PsEW7lljKMkSs28Vpt4jNs=\nR:monitoring.go\na:0:0:444\nZ:Q1k1G+2+cC7YeP0hdsOlVQxDHuHZQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/examples\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/examples/documentation_examples\nM:0:0:555\nR:README\na:0:0:444\nZ:Q10qmvJmGRHAl2lTQTIvdqtx1AUOY=\nR:examples.go\na:0:0:444\nZ:Q1s3gHXqCuqo5U1k115XdUExoyt0I=\nR:examples_test.go\na:0:0:444\nZ:Q1YereOTA1rBt+xF5LBYqkhJ9JJ6Y=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal\nM:0:0:555\nR:background_context.go\na:0:0:444\nZ:Q1xr+/P/ie1104ust+eqsXDvifGyo=\nR:background_context_test.go\na:0:0:444\nZ:Q1OE/p5ZQixKYctGUOTzGB5KLV204=\nR:cancellation_listener.go\na:0:0:444\nZ:Q1gKtEg3fyw5IpJL5PxlHPYIpL27U=\nR:const.go\na:0:0:444\nZ:Q1hVxS2xJ8qjcaxqHPy0WibI9isx0=\nR:csfle_util.go\na:0:0:444\nZ:Q1DD8fr78fIEdzSLOiVTl7KPolFRA=\nR:csot_util.go\na:0:0:444\nZ:Q1yB3Jx6hUUSF8KlHzvREGK/mYO8A=\nR:error.go\na:0:0:444\nZ:Q1Ws/Bas0djfND38w8bBaMpVP7Geg=\nR:string_util.go\na:0:0:444\nZ:Q1iq4V/JEQXJm18hfqFJsPhFsKhq4=\nR:uri_validation_errors.go\na:0:0:444\nZ:Q1uDThh2TzZOK0n7OTSLX0NCQqaC4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/randutil\nM:0:0:555\nR:randutil.go\na:0:0:444\nZ:Q1YRl4MCTxXxKmF333rB5x91QTHT8=\nR:randutil_test.go\na:0:0:444\nZ:Q1jpx2KgrYJ4htd0MEPFyZ+3lMGRs=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/randutil/rand\nM:0:0:555\nR:bits.go\na:0:0:444\nZ:Q1tOmGnix0cMgOaG8tV7CFF+6xnZA=\nR:exp.go\na:0:0:444\nZ:Q1aC5C9wCFsd9dtSwR+87v8U2MVwk=\nR:normal.go\na:0:0:444\nZ:Q1I/L07TOFy7edRKIqnJzhFr3XJqc=\nR:rand.go\na:0:0:444\nZ:Q1yDJcQNAFlMaZZRQ1U2Rf0xppdKU=\nR:rng.go\na:0:0:444\nZ:Q1Ss/XajgqmTVMoxKFyDeN6K9qYY8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/testutil\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1S5q4Oo6JZjw5WpNrVWfG0y2eXEA=\nR:ops.go\na:0:0:444\nZ:Q1JKgazmUSkide+lFdsxAsDjit4bI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/testutil/assert\nM:0:0:555\nR:assert.go\na:0:0:444\nZ:Q17DRgs4F9qzTuprB2psLSomYU3fU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/testutil/helpers\nM:0:0:555\nR:helpers.go\na:0:0:444\nZ:Q1cPttO8lkU7pADP7Jl9Cm0ZPsAEI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/testutil/israce\nM:0:0:555\nR:norace.go\na:0:0:444\nZ:Q1g7llwuv9PSiyXt/tIzwMfumPySI=\nR:race.go\na:0:0:444\nZ:Q1vVOil9KqZMqdoVa1BXQio5dOZoU=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/testutil/monitor\nM:0:0:555\nR:monitor.go\na:0:0:444\nZ:Q1vEiOcX8wiL8NKGLk5a11inSPtnQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/internal/uuid\nM:0:0:555\nR:uuid.go\na:0:0:444\nZ:Q1HtFOuPN0sxPjrXmlsn+8rXfG5dA=\nR:uuid_test.go\na:0:0:444\nZ:Q1R0YIyv9QMPzwNB2ZgjWfHcLzaTI=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo\nM:0:0:555\nR:batch_cursor.go\na:0:0:444\nZ:Q1SyVM5sZR/BREDowqhRVEiqHsba4=\nR:bson_helpers_test.go\na:0:0:444\nZ:Q1HRp8FPI6qxX0Jcc4lmWzg72MKYU=\nR:bulk_write.go\na:0:0:444\nZ:Q1QTXn0pP0ewoLIHeGwojy33tIB/k=\nR:bulk_write_models.go\na:0:0:444\nZ:Q17tVKpR20OIL8T2KyGwCFDDIZBDI=\nR:change_stream.go\na:0:0:444\nZ:Q1JzAGeoNA8GcnHr13bjqkXJuVeQU=\nR:change_stream_deployment.go\na:0:0:444\nZ:Q1XYhkaTFe1oS+27Kr8anuFy2ukBo=\nR:change_stream_test.go\na:0:0:444\nZ:Q1DSz6QX8lIkHqjXCYF23ssM0HW70=\nR:client.go\na:0:0:444\nZ:Q13KizEzsD88ETx3EkYtegeEs7soM=\nR:client_encryption.go\na:0:0:444\nZ:Q1sA9stg/ceyyWOJwSnzIHc53VmxQ=\nR:client_examples_test.go\na:0:0:444\nZ:Q1F6qwwhBe0BqCqDk58TsAZ4scEHI=\nR:client_side_encryption_examples_test.go\na:0:0:444\nZ:Q1sQoRu3Ufb7PcSPfvoIQ4icuBb4M=\nR:client_test.go\na:0:0:444\nZ:Q1Y9v6IOovylUN4w5nCR47O+XnL1I=\nR:collection.go\na:0:0:444\nZ:Q1WIycJvFdTMWm0hWfiY556hLEeBA=\nR:collection_test.go\na:0:0:444\nZ:Q1ZmjykNortTBEZWX8/EJfUpb2j88=\nR:crud_examples_test.go\na:0:0:444\nZ:Q1y8WaLTGikTZ5K0k/kezqMT/lLFQ=\nR:crypt_retrievers.go\na:0:0:444\nZ:Q1FB/DzxMBWh55WA6Nu1j0Aj+UAdQ=\nR:cursor.go\na:0:0:444\nZ:Q1ckA2grzX1TUM6KRPDu3sCL2kf8c=\nR:cursor_test.go\na:0:0:444\nZ:Q1PcNaF9kHzTp6WVXDaHQ2d73nJGQ=\nR:database.go\na:0:0:444\nZ:Q1P42a4Vq1UiWrLNoEKMv3b7b6t4g=\nR:database_test.go\na:0:0:444\nZ:Q1vC3T/v5CQgla8uKCN8pjTk0j8M4=\nR:doc.go\na:0:0:444\nZ:Q1DzSqEQOJuy6qZ6tdAaNSsz9DGnE=\nR:errors.go\na:0:0:444\nZ:Q1z662bhYFmlmv9aLv3Ejjd0loZKs=\nR:errors_test.go\na:0:0:444\nZ:Q1q+c3R7xgM9HNgDZOvl10JUbjp1c=\nR:index_options_builder.go\na:0:0:444\nZ:Q1SbAIru6IxCSMEPj9IIgtsNBB+NM=\nR:index_view.go\na:0:0:444\nZ:Q1te2S94zYSqjZbe7iTA5ZrdSpwx4=\nR:main_test.go\na:0:0:444\nZ:Q1JV3VaLnlaafkx6Q3Qexzed+3RII=\nR:mongo.go\na:0:0:444\nZ:Q1JpKinFn00rUzGvFOVgswqzgb01E=\nR:mongo_test.go\na:0:0:444\nZ:Q1ruOyh331xOsbQLOaQZydhUCClsw=\nR:mongocryptd.go\na:0:0:444\nZ:Q1Kk8KxxiyOvIhl9q/ZH2tlfQayPw=\nR:ocsp_test.go\na:0:0:444\nZ:Q16mw4Y0amDGV8r5328bgse7maCmo=\nR:read_write_concern_spec_test.go\na:0:0:444\nZ:Q1GFIpDzwiroZkEmFd/pts/ARnrVk=\nR:results.go\na:0:0:444\nZ:Q1CO3BVelPeUQC+gG9PbXNonYn/3o=\nR:results_test.go\na:0:0:444\nZ:Q1CTg4neccTcj1pzO4yzLnnZBH0yk=\nR:session.go\na:0:0:444\nZ:Q1gtGZ8wkYK8mx/fb9jPKuQ4LsCzc=\nR:single_result.go\na:0:0:444\nZ:Q1ZzUZ9oCIXyZIsUqlPXPIYA+klhg=\nR:single_result_test.go\na:0:0:444\nZ:Q1YmupgRTNmfD06XRBn9h9RqeLPvY=\nR:util.go\na:0:0:444\nZ:Q1z84EF3QiLuGFgQKqkbCjy2DBHJY=\nR:with_transactions_test.go\na:0:0:444\nZ:Q1a6oAZl8QpiKg/KsYzs25sLCuoPo=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/address\nM:0:0:555\nR:addr.go\na:0:0:444\nZ:Q1vOlQtkkgafiw1QVB4tulHHHPTnY=\nR:addr_test.go\na:0:0:444\nZ:Q1N3uWYYrxqcy41ZD2aGxzX6Aivtk=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/description\nM:0:0:555\nR:description.go\na:0:0:444\nZ:Q1O+i2cAJIqneHKy4u9bKHB13nRdo=\nR:max_staleness_spec_test.go\na:0:0:444\nZ:Q1LnhQEfKFVpkN1I4Fy2ie92zAkhI=\nR:selector_spec_test.go\na:0:0:444\nZ:Q14JBhQAY+OQF+QVMBzN6Hme9YeME=\nR:selector_test.go\na:0:0:444\nZ:Q1+LpL3Zt+V1aNdZA9Rg57hJNVM/Y=\nR:server.go\na:0:0:444\nZ:Q1q7P0Xym2Kt0Rnd2AdUNnb+dzKN0=\nR:server_kind.go\na:0:0:444\nZ:Q1a8eJrcA/aoTua8lbje4AruBhsdc=\nR:server_selector.go\na:0:0:444\nZ:Q1peImp7e4JLjhdJKK/6+twyyeCmA=\nR:server_test.go\na:0:0:444\nZ:Q1d79YHdPRgnLCRQpWF7HR6kGXdEI=\nR:shared_spec_test.go\na:0:0:444\nZ:Q1DDgN6ob4iGpfMZOWjL0lmLlGknI=\nR:topology.go\na:0:0:444\nZ:Q1u1X0UrkIOSU+rVD4et6Kfvq5yV0=\nR:topology_kind.go\na:0:0:444\nZ:Q1BQWUqUnKdxH8Bb7sDw+PnLx1+/c=\nR:topology_version.go\na:0:0:444\nZ:Q1qL/vqSYFh8qTwOlmtiY5bSTn1oE=\nR:version_range.go\na:0:0:444\nZ:Q1Hnk5uJeYkHKBPyyUundJ2tIgUsI=\nR:version_range_test.go\na:0:0:444\nZ:Q1P10/gXOCMUfKFGLzvpzoC228i2A=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/gridfs\nM:0:0:555\nR:bucket.go\na:0:0:444\nZ:Q1xyi+/WB+jLuAnFcC/m0cKd2mYzc=\nR:doc.go\na:0:0:444\nZ:Q1rmqR5TdUTaFzzd5BCphPEkd/GoM=\nR:download_stream.go\na:0:0:444\nZ:Q18Uu5if8wXch5mM7Dw6YNgYobvuo=\nR:gridfs_examples_test.go\na:0:0:444\nZ:Q1GQKieXt9KBJu8fs1a0BO9K5qrnA=\nR:gridfs_test.go\na:0:0:444\nZ:Q16AXAIzSMRAB5N2erH6sFUROGhYc=\nR:upload_stream.go\na:0:0:444\nZ:Q18yKg8flQgo8FJBav2AdYrJTg564=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/integration\nM:0:0:555\nR:causal_consistency_test.go\na:0:0:444\nZ:Q1z3O/CdLsQ7bR6T7Ovix8jwdE+0s=\nR:change_stream_test.go\na:0:0:444\nZ:Q1rh7amIqG6+Dgo9SjjsNK48u/naE=\nR:client_options_test.go\na:0:0:444\nZ:Q1bcAkDIqRL2bb80FCZ/3BWej8+vw=\nR:client_side_encryption_prose_test.go\na:0:0:444\nZ:Q1f/Hm90HWdbN77kumXcOkPLnymMc=\nR:client_side_encryption_spec_test.go\na:0:0:444\nZ:Q1lfCbRKyLRXrxigd2cx8EoLAOTDk=\nR:client_side_encryption_test.go\na:0:0:444\nZ:Q1bY8fEX2jk5LX75o2xfblVkL0DdE=\nR:client_test.go\na:0:0:444\nZ:Q1zIc4Sbw9Em2o8kPp4q1jsvIlf0M=\nR:cmd_monitoring_helpers_test.go\na:0:0:444\nZ:Q138vPY8z8BWJu9OJfc54DWoXwsFo=\nR:collection_test.go\na:0:0:444\nZ:Q1BMJlKA9qImdgNhFZPeXl47wV+ik=\nR:command_monitoring_test.go\na:0:0:444\nZ:Q1v3i2Hg2u/pPYiEOkdIJMhE1Zhso=\nR:crud_helpers_test.go\na:0:0:444\nZ:Q164FN4LBKWuGxQJ3+gPjpMyy9v70=\nR:crud_prose_test.go\na:0:0:444\nZ:Q18OvMNa+pbOAcCtEaJKpl2jV5J5o=\nR:crud_spec_test.go\na:0:0:444\nZ:Q1cPftWw2IQJ3mNpFBF0bKXTsaG7Y=\nR:csot_prose_test.go\na:0:0:444\nZ:Q1TeL7TkHbRYxYAKMMXyCI7uBih9U=\nR:cursor_test.go\na:0:0:444\nZ:Q1jdw5/QnHqZDa+qDUH379baLv1N8=\nR:data_lake_test.go\na:0:0:444\nZ:Q1PETFWkd4RlZPqOrbo7H+NMjhlvo=\nR:database_test.go\na:0:0:444\nZ:Q18oIbp/fxzrKU8k2qwFdwQasYGyk=\nR:errors_test.go\na:0:0:444\nZ:Q1N9+n4Sdz0C3K7Fupiu0egOjWxgg=\nR:gridfs_spec_test.go\na:0:0:444\nZ:Q12pC9byfoSEufbh/sEUkVlMQ6T8U=\nR:gridfs_test.go\na:0:0:444\nZ:Q12K3/MrqW4rlxe3cDb8DqBgrvTDs=\nR:index_view_test.go\na:0:0:444\nZ:Q1R+R/9JJip7gTzqPSfGn1LHKfZoU=\nR:initial_dns_seedlist_discovery_test.go\na:0:0:444\nZ:Q12mp5QbhyA+RXAVKQwMP25q01wYo=\nR:json_helpers_test.go\na:0:0:444\nZ:Q1t8nvwlRu014uQ5AGx9OE9lVvgjc=\nR:load_balancer_prose_test.go\na:0:0:444\nZ:Q1tW78z9E9eKRdzxoP2KhqsFRsetA=\nR:main.go\na:0:0:444\nZ:Q1upEqH05ufIYtayAOGyXuKGN67+U=\nR:main_test.go\na:0:0:444\nZ:Q1Ac8kJew5upDI7LkLKGR5mYtv6I4=\nR:mock_find_test.go\na:0:0:444\nZ:Q127FUZqYPH1gTb0lOqEy5I1chvJ0=\nR:mongos_pinning_test.go\na:0:0:444\nZ:Q1IX8fc7Cc1MZhaIzUqk6mVE3LxSg=\nR:operation_legacy_test.go\na:0:0:444\nZ:Q1nlPWw+Ml8qqURAQEFfvl4CH8qsE=\nR:primary_stepdown_test.go\na:0:0:444\nZ:Q11kL0rMuuki+99stQjSIO2JA18jI=\nR:retryable_reads_prose_test.go\na:0:0:444\nZ:Q1lFzesFCuqZFXBkXoHQQd7UYFgY8=\nR:retryable_writes_prose_test.go\na:0:0:444\nZ:Q1WOQs3TXnDd5c+IY4lpT/1qceKEk=\nR:retryable_writes_spec_test.go\na:0:0:444\nZ:Q1p8AYuhmhthbNw+C99w9LlssIN0A=\nR:sdam_error_handling_test.go\na:0:0:444\nZ:Q1RiMrU403/IBAT2XFpir4Ssb1Vak=\nR:sdam_prose_test.go\na:0:0:444\nZ:Q1JSaJyhS3j7/MgeaRkeJwHqpi34g=\nR:server_selection_prose_test.go\na:0:0:444\nZ:Q1TZRqSq00YrzpfdBfbUaZsnoyMXg=\nR:sessions_prose_test.go\na:0:0:444\nZ:Q1tCoGbOPrh1nZVHWLO8vjTaVoBNo=\nR:sessions_test.go\na:0:0:444\nZ:Q1QFKny8SZRZYlsqGQfsFLXo3I/G4=\nR:unified_runner_events_helper_test.go\na:0:0:444\nZ:Q1fdHTvW7EOYdYKqRsSf3OO9iob8s=\nR:unified_runner_thread_helpers_test.go\na:0:0:444\nZ:Q1gjd6yd3+dQEXa9VTyKUNp7RedKM=\nR:unified_spec_test.go\na:0:0:444\nZ:Q12X2RSlULbUNSztJNXqX2E8yBbVg=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/integration/mtest\nM:0:0:555\nR:csfle_enabled.go\na:0:0:444\nZ:Q156Z6FB3qmN0v3OCEMTT25uFrhzw=\nR:csfle_not_enabled.go\na:0:0:444\nZ:Q18bhD2JB2c5yL2MzdYczJJuz4ZlE=\nR:deployment_helpers.go\na:0:0:444\nZ:Q1x8PN38Bumo+nrPn/N6Ow0EvEoxQ=\nR:doc.go\na:0:0:444\nZ:Q1ePX1WrqZMkOF1Xu7N+xw/075AdY=\nR:global_state.go\na:0:0:444\nZ:Q15eG/4943CfCSpqZ1yY7sRwIX8a0=\nR:mongotest.go\na:0:0:444\nZ:Q1oHeHMafcc1yp4+UvF47MZFuSPVU=\nR:opmsg_deployment.go\na:0:0:444\nZ:Q1TuOo8O/oC7UpHjFzAeWFArWkcwU=\nR:options.go\na:0:0:444\nZ:Q1eer3gzIvnJDa5iDYw5hDr5OeJtM=\nR:proxy_dialer.go\na:0:0:444\nZ:Q1MgopVXMGkH+kXIQK9ezSf59GAzc=\nR:received_message.go\na:0:0:444\nZ:Q1hcvWuimxuimdQQXgesZ5QPQAZoM=\nR:sent_message.go\na:0:0:444\nZ:Q1jro+Zvk+BD0qf2Hi4plH60v31xE=\nR:setup.go\na:0:0:444\nZ:Q1pveibyStA6GFh7MOzDB1uoEwtSo=\nR:setup_options.go\na:0:0:444\nZ:Q1JZKkPNddvfWdPLAohNd9zU91qYs=\nR:wiremessage_helpers.go\na:0:0:444\nZ:Q138LnYzFUQff688sZ4GsTiUson4I=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/integration/unified\nM:0:0:555\nR:admin_helpers.go\na:0:0:444\nZ:Q12Rdi5X8U1XfAoP3bt6t/vNDL52U=\nR:bsonutil.go\na:0:0:444\nZ:Q17xBR/wlYubM7ZM49sKIJxap69og=\nR:bucket_options.go\na:0:0:444\nZ:Q1aMmDitUIGHkSz+rgPqKpc5IvrD4=\nR:bulkwrite_helpers.go\na:0:0:444\nZ:Q1zLcmoMnVRk+51XiYl/npSj7k8co=\nR:client_encryption_operation_execution.go\na:0:0:444\nZ:Q1/l9DjRYbW2tbx+w29BuCp6j25ps=\nR:client_entity.go\na:0:0:444\nZ:Q17mWBxJwziHFe5RIu0+N9gUpRBDM=\nR:client_operation_execution.go\na:0:0:444\nZ:Q14v8gAyyqoheXt0AavCv97K4P2DQ=\nR:collection_data.go\na:0:0:444\nZ:Q1cFmz3e9KS25tE1TzEF43rMfSEKY=\nR:collection_operation_execution.go\na:0:0:444\nZ:Q1nB3CpgYG3krn4IE00WFk9MKvjeA=\nR:common_options.go\na:0:0:444\nZ:Q1fmB54TNUf0oJ7sWJA3Pn1uULmIA=\nR:context.go\na:0:0:444\nZ:Q1lm3RQqfPGGuzojJhiPna3tVdHVM=\nR:crud_helpers.go\na:0:0:444\nZ:Q1rWkXUyxPZeXQ1e57UpOpnqpPtXw=\nR:cursor_entity.go\na:0:0:444\nZ:Q16D6xL3sx34+r5hZ5LrGyFkQfBko=\nR:cursor_operation_execution.go\na:0:0:444\nZ:Q1cdzgFlWdMcTf0OwUJZr9hVvF900=\nR:database_operation_execution.go\na:0:0:444\nZ:Q1zs7zCfyYt6DBXrMMEK1G3+HcnGo=\nR:db_collection_options.go\na:0:0:444\nZ:Q1UZNLjD5cc4kOf7Q7FrA/iXWK+nw=\nR:entity.go\na:0:0:444\nZ:Q11npamTCNXok1OUeHgPQDAf/T3Cs=\nR:entity_test.go\na:0:0:444\nZ:Q1lCWoFJ6NQ76zo4lzyZJiXNqYTCY=\nR:error.go\na:0:0:444\nZ:Q1MbZL/dwIgWi2sfeG6FnpSvaQdDE=\nR:event.go\na:0:0:444\nZ:Q1/QdbaSfC2EBj6YkmKCrZP7wyxcQ=\nR:event_verification.go\na:0:0:444\nZ:Q1YhS0uAwAI/9sxlo8kvc0f6CaRvw=\nR:gridfs_bucket_operation_execution.go\na:0:0:444\nZ:Q1Fv840u9sUvE6mYbWY8JD43lIS8E=\nR:main.go\na:0:0:444\nZ:Q1hefcSxE2YZlfBoZWLoPVcmGJXbg=\nR:main_test.go\na:0:0:444\nZ:Q1Nc5rRKI1VOqDNMmpok6vwyqT6tU=\nR:matches.go\na:0:0:444\nZ:Q1eOWNJ0LhaNfqTBtFMXxr4xyAmWg=\nR:matches_test.go\na:0:0:444\nZ:Q1vZXq/oYnUKSFrpujOxFPToy95kQ=\nR:operation.go\na:0:0:444\nZ:Q1hzm8GxtqiGDmC0DYgAZJojtkhJ0=\nR:options.go\na:0:0:444\nZ:Q1x6qMtZaqoWWbDNFCr15iiQ/djGk=\nR:result.go\na:0:0:444\nZ:Q1z02kvYs0aOotFUyiOl2iAYGOKN4=\nR:schema_version.go\na:0:0:444\nZ:Q154zZJ+09z/J6E1g9Tpj+k81l7GY=\nR:server_api_options.go\na:0:0:444\nZ:Q1LYFPiqgA2bb3pQDEUNrny/MXt94=\nR:session_operation_execution.go\na:0:0:444\nZ:Q1nPGtDcOsKOxODfqE6VJCU0sxE9Q=\nR:session_options.go\na:0:0:444\nZ:Q1stJFiKwFa0bzcbBu24y79A7f+ls=\nR:testrunner_operation.go\na:0:0:444\nZ:Q1ybhWseoLfnNC73Af2gi2lbV6Yew=\nR:unified_spec_runner.go\na:0:0:444\nZ:Q19Yf1FojEGDBQjRi5lv6oBEsRDVM=\nR:unified_spec_test.go\na:0:0:444\nZ:Q1rTm8+O7zOscyua5Zb6e61aDenDE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/options\nM:0:0:555\nR:aggregateoptions.go\na:0:0:444\nZ:Q16YYnsRs7fNWrhpiBKJmIR5aMl0A=\nR:autoencryptionoptions.go\na:0:0:444\nZ:Q1hD81JoAA17t44yXPxWtENRChLZ8=\nR:bulkwriteoptions.go\na:0:0:444\nZ:Q1PXdkafKBpWX75DGF4c1v9HUL4/U=\nR:changestreamoptions.go\na:0:0:444\nZ:Q10t1czzi8simuiS0bptExvRqth1w=\nR:clientencryptionoptions.go\na:0:0:444\nZ:Q1toTfDo/P19wNbobKxxOi44JCFyM=\nR:clientoptions.go\na:0:0:444\nZ:Q1lmxkDgVoiGourzYkAnWonACaYmI=\nR:clientoptions_test.go\na:0:0:444\nZ:Q14nwpVUrXG1nkFS6Shg2KEFXEERA=\nR:collation_test.go\na:0:0:444\nZ:Q1E+DeP3PxEV7PS0A7xeQHJG5kL3s=\nR:collectionoptions.go\na:0:0:444\nZ:Q1CSA0V2PiG6s7ETn+76oTpXKuZoo=\nR:countoptions.go\na:0:0:444\nZ:Q1ARt6W8IQ1dW0ypMSepp47Q6sNRE=\nR:createcollectionoptions.go\na:0:0:444\nZ:Q15su3IDMVtpU85PDjdVoz1yJPbM0=\nR:datakeyoptions.go\na:0:0:444\nZ:Q1kOZyZEBp13wsit3uoNmLNchWF9w=\nR:dboptions.go\na:0:0:444\nZ:Q1pf8LKIQpqT4+vc/WMlXYGO+71HA=\nR:deleteoptions.go\na:0:0:444\nZ:Q17MfNcbDsfYjZy/pRAtgruSmJvNA=\nR:distinctoptions.go\na:0:0:444\nZ:Q1LLsXZqEpTkB74JSI0HdLPOOzlZw=\nR:doc.go\na:0:0:444\nZ:Q1pccAjxO6+SKNS4PvtiMElRemzhI=\nR:encryptoptions.go\na:0:0:444\nZ:Q1AjWYkck+R77VIbHFfxgYv79QPyE=\nR:estimatedcountoptions.go\na:0:0:444\nZ:Q1oC9M7vyJh5MK9usEk/9o+zsv4PY=\nR:findoptions.go\na:0:0:444\nZ:Q199owA6NuAWfIh/GH2T+d0u756yo=\nR:gridfsoptions.go\na:0:0:444\nZ:Q1/QjbaMfr2C58RZdjtJ+x5NkWej4=\nR:indexoptions.go\na:0:0:444\nZ:Q1XYK1l/KvBjGz2XYqSTOMTKzj8mg=\nR:insertoptions.go\na:0:0:444\nZ:Q1uMVctudBizfrUQIJosdqRYSs3lM=\nR:listcollectionsoptions.go\na:0:0:444\nZ:Q1kvrftMn25AG/61ksFygGCLPys6w=\nR:listdatabasesoptions.go\na:0:0:444\nZ:Q1+AGhphDzJA8qnsd+ZTA3Ji+Jolg=\nR:mongooptions.go\na:0:0:444\nZ:Q1DA2c5xrq1L0UUVeZWEjTMVk73ac=\nR:replaceoptions.go\na:0:0:444\nZ:Q1HFGd+ATryNW3BcuhbO2SzKK1nO0=\nR:rewrapdatakeyoptions.go\na:0:0:444\nZ:Q13/kS6wW/LN51rpJhDmYHKa6YlDA=\nR:runcmdoptions.go\na:0:0:444\nZ:Q15c6wtMcUbKYIJIl0Atg7ajMJir8=\nR:serverapioptions.go\na:0:0:444\nZ:Q1LG7yJx4lVSaCDZwK5NxI4RdOhwA=\nR:sessionoptions.go\na:0:0:444\nZ:Q174Rtrfa9eTPUBqG30AyAkhU3tD0=\nR:transactionoptions.go\na:0:0:444\nZ:Q1n1CVl7L7V/8nha1LztrltT6MMF4=\nR:updateoptions.go\na:0:0:444\nZ:Q1SLIr5SP6P9EYNINomMEyFa47ces=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/options/testdata\nM:0:0:555\nR:ca-key.pem\na:0:0:444\nZ:Q1brxvlAg1OAIb6nbzUw8tuxfq3co=\nR:ca-with-intermediates-first.pem\na:0:0:444\nZ:Q1esy5iY846/bnn7iAGvLyRqkZlPg=\nR:ca-with-intermediates-second.pem\na:0:0:444\nZ:Q1cuwr5EEMbgtrbaENDoio/ClLtc8=\nR:ca-with-intermediates-third.pem\na:0:0:444\nZ:Q1cd2ymgcBX7F8l9Chtq2/k8rVSy0=\nR:ca-with-intermediates.pem\na:0:0:444\nZ:Q13UjhMskjLOyy9wyvovSCOlN4IHE=\nR:ca.pem\na:0:0:444\nZ:Q1DzBnQ3UJKYZY2hP54mqg7mxzjc0=\nR:cert.pem\na:0:0:444\nZ:Q1eQIF8FBFsPOirfBUaOsZcBdZG3k=\nR:certificate.pem\na:0:0:444\nZ:Q1hUkarV2FZhFTwIRJONZ3Dv9A1cM=\nR:csr.json\na:0:0:444\nZ:Q1FIy+69F30qpBAVY3j9YYzDgDPbU=\nR:empty-ca.pem\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:key.pem\na:0:0:444\nZ:Q1lmyee7Ce1P2mxMcTXp7g1b06MVw=\nR:malformed-ca.pem\na:0:0:444\nZ:Q1Aq35nY1tb/DL4jISC8PlkYNc19I=\nR:one-pk-multiple-certs.pem\na:0:0:444\nZ:Q1tvcYIgeHOuYccX4BJWe2kAAQED8=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/options/testdata/nopass\nM:0:0:555\nR:cert.pem\na:0:0:444\nZ:Q1Hw4KGWohv0v/bDgjEdaboPl4vE4=\nR:certificate.pem\na:0:0:444\nZ:Q18jwh2DA8SLvmjUKEBiV/z+uKwnQ=\nR:key.pem\na:0:0:444\nZ:Q1N5bMKcirlfj036LJZtKDpTNVI3U=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/readconcern\nM:0:0:555\nR:readconcern.go\na:0:0:444\nZ:Q1VIq4SO0XGSsGruc+8Z/JUeG2OQQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/readpref\nM:0:0:555\nR:mode.go\na:0:0:444\nZ:Q1y9SyXNOLeCAaAFg3ZKifws3w18I=\nR:mode_test.go\na:0:0:444\nZ:Q1XYGqTxxFfeE7NJ0wP+ctdIISc/0=\nR:options.go\na:0:0:444\nZ:Q1/TC1kPDjxa+EtOQjsgpN7YNrj2g=\nR:readpref.go\na:0:0:444\nZ:Q190K6bjYmGMwrW0iLrlvYYBGHMgo=\nR:readpref_test.go\na:0:0:444\nZ:Q1r+15y5emUuk+ARtkFtLMXsWEVY0=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/testatlas\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1xCQKoCS9HhLh4hROHOfpFl371oQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/testaws\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1tOOHgaXUvAJssws9pb+5F93QZoM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/mongo/writeconcern\nM:0:0:555\nR:writeconcern.go\na:0:0:444\nZ:Q1wFSqUzQiEx3g95O/lu3iGE3ASWA=\nR:writeconcern_test.go\na:0:0:444\nZ:Q1ATyZJykGvQQGemhyDWwyUcybeDQ=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/tag\nM:0:0:555\nR:tag.go\na:0:0:444\nZ:Q1NCX52rZTkv0aPl0/ZyMUVWSzulo=\nR:tag_test.go\na:0:0:444\nZ:Q1MxjIsaLAqFxvt+CNJDWj456W++Y=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/vendor\nM:0:0:555\nR:modules.txt\na:0:0:444\nZ:Q1oxE9Sd3Tc+SG5loLgJ0oARp42RY=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1BNG0V83vk90LQm5XxgGc3uGiv9A=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1tS33+cbd7u3vsaCF72mtYmuqlpk=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/bsonx\nM:0:0:555\nR:array.go\na:0:0:444\nZ:Q14jZ9knHGea3tKsszDt4RuQoEFPM=\nR:array_test.go\na:0:0:444\nZ:Q1Gkx9S5nAvDiiqoJP1DsqdsMAs7g=\nR:bson_test.go\na:0:0:444\nZ:Q1PJoYU+2qcL3W9W3khHxer0cr3Os=\nR:constructor.go\na:0:0:444\nZ:Q1lcTnHy79bkIXDV4bJP6P5RqwSPQ=\nR:document.go\na:0:0:444\nZ:Q1vkF8aj5agCHVfi7ZGr7o2g9xLRs=\nR:document_test.go\na:0:0:444\nZ:Q1mDbWqzkl90FsL12ZpykPRsB/T24=\nR:element.go\na:0:0:444\nZ:Q1j7ikyxj2dwQTW4LTRX2grcnUge0=\nR:element_test.go\na:0:0:444\nZ:Q1rme+h7yMldKZEtDL0N2umvzPADU=\nR:mdocument.go\na:0:0:444\nZ:Q1h9a2B8DWF2GYcplqsngwrHm5bFI=\nR:mdocument_test.go\na:0:0:444\nZ:Q1gnBrsCZABXKTg6sGqw3JPqL+LCQ=\nR:primitive_codecs.go\na:0:0:444\nZ:Q1B3UcTmnQleojobSX44jzTHgi1b8=\nR:primitive_codecs_test.go\na:0:0:444\nZ:Q16cWFE4SaK2s1Gwmk0LP4jeROES0=\nR:reflectionfree_d_codec.go\na:0:0:444\nZ:Q1EvmWQ0rPwkNKZ9sWrGawa5ab6CY=\nR:reflectionfree_d_codec_test.go\na:0:0:444\nZ:Q1ooBKppFJd/kJlS65VFiiKFGlBYk=\nR:registry.go\na:0:0:444\nZ:Q1/nSrprY8XCa31U1dHW56M+7LVaI=\nR:value.go\na:0:0:444\nZ:Q1Orsf7xd599bBMQm/NSCg34fbQSc=\nR:value_test.go\na:0:0:444\nZ:Q11wAUAIssZZ11o9uGd4A7E7KZvC4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/bsonx/bsoncore\nM:0:0:555\nR:array.go\na:0:0:444\nZ:Q1M3bhi2KfkBsvV0jRdQ7mhL+uI00=\nR:array_test.go\na:0:0:444\nZ:Q1Ouqxh+8rD0zbuBHE9MpahgppkNc=\nR:bson_arraybuilder.go\na:0:0:444\nZ:Q1ShS+DMJHGdcnXCZWQ/DuXXufUnk=\nR:bson_arraybuilder_test.go\na:0:0:444\nZ:Q1BfVjwxeYmmZKisJELR4dNSaVk00=\nR:bson_documentbuilder.go\na:0:0:444\nZ:Q14FkNQNXNy6erWtnspVp+6WZrUWQ=\nR:bson_documentbuilder_test.go\na:0:0:444\nZ:Q19JIRnT91fMhltuPwE2QJXI9u2yY=\nR:bsoncore.go\na:0:0:444\nZ:Q13FMuad7WASqKTGVMhkwHg9+XaYY=\nR:bsoncore_test.go\na:0:0:444\nZ:Q1VntMh87VQtgAVMLYgA/U/nU9ZZA=\nR:document.go\na:0:0:444\nZ:Q1or8t7UWQ+UNhH5nHnQjdHuf/hKc=\nR:document_sequence.go\na:0:0:444\nZ:Q1gsMq3AFjEbxKkR0PcH2AJbeBwNc=\nR:document_sequence_test.go\na:0:0:444\nZ:Q1LhSB3yMnqUHDAYlTXFtjtoLv0T8=\nR:document_test.go\na:0:0:444\nZ:Q1grnQk12JeI4rENkN1PaSqRWXLnY=\nR:element.go\na:0:0:444\nZ:Q1feUwlmKSxuwjgdunYQvU1gFz27I=\nR:element_test.go\na:0:0:444\nZ:Q1Qxo3E54imcOAAMsSvf6TVy0RVgU=\nR:tables.go\na:0:0:444\nZ:Q1fDfxE5YBPgiFOBud7FVMbFclXHk=\nR:value.go\na:0:0:444\nZ:Q1fl7vZBFLeQDgOJb/MB6LBROG6LI=\nR:value_test.go\na:0:0:444\nZ:Q1O3a0MrZnmPFzIL6qhJK26vRkHf4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver\nM:0:0:555\nR:DESIGN.md\na:0:0:444\nZ:Q157c0IdnjwQI1bo68gDDPoxW+tlQ=\nR:batch_cursor.go\na:0:0:444\nZ:Q1FrjWSLaFS50JBs/5eZvSmEB/SXM=\nR:batch_cursor_test.go\na:0:0:444\nZ:Q10LUz6fK6MRQjkd5CI1sC5vj2mN0=\nR:batches.go\na:0:0:444\nZ:Q1TSfLIbOIm+fJg7HJ1R7SqA+INKc=\nR:batches_test.go\na:0:0:444\nZ:Q1fyAUJY1JHaDlDuJFY0rWaxHM+pI=\nR:command_monitoring_test.go\na:0:0:444\nZ:Q1WiRLq5KtOrN04MrBThOmwk5D+KU=\nR:compression.go\na:0:0:444\nZ:Q18YPhkWMbxF3kfeZQG/II1HrgNNo=\nR:compression_test.go\na:0:0:444\nZ:Q16P8hjkpnfgvcHlLI6dli6cnmmpU=\nR:crypt.go\na:0:0:444\nZ:Q12esP5iBThQnoPuBUgcN/TyMoFKA=\nR:driver.go\na:0:0:444\nZ:Q1Ov3w1XKCBhlvNkqM81AyZ3OScIg=\nR:errors.go\na:0:0:444\nZ:Q1H6Muu7KC+BQKIIXjwA5wu6z/tT0=\nR:legacy.go\na:0:0:444\nZ:Q1tO4O/OUtNWw1lJCS5iMXbdMN6uE=\nR:list_collections_batch_cursor.go\na:0:0:444\nZ:Q1Ot9ZqG+9aEQbSnpxTe/zqCaDzAg=\nR:operation.go\na:0:0:444\nZ:Q1KPGJTzzu9dI1xAbxQr4ooY25YP8=\nR:operation_exhaust.go\na:0:0:444\nZ:Q1woN/gWTH8+lQdWBU/Qih10K76n8=\nR:operation_legacy.go\na:0:0:444\nZ:Q1FGycA9XciXPZWKxTUpX8GVfUAa0=\nR:operation_test.go\na:0:0:444\nZ:Q1gAIeNJnMtx+QjkkjqCmIUZNz8ZU=\nR:serverapioptions.go\na:0:0:444\nZ:Q18M0SySUjByqUoaHlvlgoDIYS52o=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/auth\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q18mAuke96MFE1OP+Us189jyaC+EE=\nR:auth_spec_test.go\na:0:0:444\nZ:Q1csGRc1x2sE6+M1oIX2nQfN3xhyU=\nR:auth_test.go\na:0:0:444\nZ:Q1YBnwco+Xzn3znPQx4eUPP64e/sY=\nR:aws_conv.go\na:0:0:444\nZ:Q10ko9kcjV29X3BZua+7Ky+AcYM2Y=\nR:conversation.go\na:0:0:444\nZ:Q1LMcbNbuAmXGnj5oA8MiQBgBElf8=\nR:cred.go\na:0:0:444\nZ:Q1FAn5iCsC0ZU4nqRJ3Slk9jDeyUM=\nR:default.go\na:0:0:444\nZ:Q1kJfwZ2x2P7PREP+yyVySXLHhdFk=\nR:doc.go\na:0:0:444\nZ:Q1ou1dMariyv1SQV1Kb2qQQiZhYI4=\nR:gssapi.go\na:0:0:444\nZ:Q1m+LZnQj/9u3NB2v7eccjJyMJFfk=\nR:gssapi_not_enabled.go\na:0:0:444\nZ:Q1L+VLR/2S1c/LHa8sOexKMANBh9A=\nR:gssapi_not_supported.go\na:0:0:444\nZ:Q1wHNnMa/2L1vgaI2jpQzPPYr07zY=\nR:gssapi_test.go\na:0:0:444\nZ:Q1I//347mTvwciMJLY7ABfUvz/BNA=\nR:mongodbaws.go\na:0:0:444\nZ:Q14Jhjw6sAMHPaHBatJ/KBf1MuORg=\nR:mongodbaws_test.go\na:0:0:444\nZ:Q162ZdyeqFGMrp3qgc3GIPR4zJ9ss=\nR:mongodbcr.go\na:0:0:444\nZ:Q1Dt6WSgRKZ1dZcd1z7oH6aeQ7yVo=\nR:mongodbcr_test.go\na:0:0:444\nZ:Q1kkqyqrwULOKdiUxZp4k3iHlVwO4=\nR:plain.go\na:0:0:444\nZ:Q1i3p1q9SJ59kX274eJ+7EO8V16xs=\nR:plain_test.go\na:0:0:444\nZ:Q1JN/vQmBAv+TRPHkqxcbM8nyzoWU=\nR:sasl.go\na:0:0:444\nZ:Q1skrKLpNbOt18rwd7aJCWmbf8XHo=\nR:scram.go\na:0:0:444\nZ:Q1ftBx8lZtnQuhhZ5ZpoJYsl8Knr8=\nR:scram_test.go\na:0:0:444\nZ:Q1kHeL7nOzI6zryT2vX5yAFSzyJWw=\nR:speculative_scram_test.go\na:0:0:444\nZ:Q1Ga7QJvuViR6QBmSsezBhAuGAW+E=\nR:speculative_x509_test.go\na:0:0:444\nZ:Q1roI73w4M6y5iMg2C2Ma/HAkB1Rc=\nR:util.go\na:0:0:444\nZ:Q19LOsezdN07V5B0+3GohWa3K6qF8=\nR:x509.go\na:0:0:444\nZ:Q1PGuScxCO7yJejPvpz/L8mWWX7fc=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/auth/internal\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/auth/internal/awsv4\nM:0:0:555\nR:credentials.go\na:0:0:444\nZ:Q1rvEgAj4GSRLjyer+nKdSoT67De4=\nR:doc.go\na:0:0:444\nZ:Q1xpYS1I+nLLTRALOcmu/Qg0H5KRI=\nR:request.go\na:0:0:444\nZ:Q1YXuSWoF3SL9sssXRsXtaOrx+hTM=\nR:rest.go\na:0:0:444\nZ:Q1aqXkaV9IHQN6nW7jH0rdBLHwc50=\nR:rules.go\na:0:0:444\nZ:Q1VYlTFNH9EefWsVD0wFPV3TKLJsg=\nR:signer.go\na:0:0:444\nZ:Q16PEVxtprdwdg2NP3z9C94veGsUA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/auth/internal/gssapi\nM:0:0:555\nR:gss.go\na:0:0:444\nZ:Q1AYntOpJeWz01Tv0K7UyqCgXSwvI=\nR:gss_wrapper.c\na:0:0:444\nZ:Q13GePk8UWeEQn0grWYzN8dVJOpq8=\nR:gss_wrapper.h\na:0:0:444\nZ:Q1/c1/FYOSlP9suQ7zBRSYdvzLc70=\nR:sspi.go\na:0:0:444\nZ:Q1W9kAwqPku1knRMTKMfaks0Ivpnc=\nR:sspi_wrapper.c\na:0:0:444\nZ:Q1uFrs7wwX0Kn857Isu83qoktVzp4=\nR:sspi_wrapper.h\na:0:0:444\nZ:Q12ZYP3JJMMf7mMwDnbMuauUcUyxE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/connstring\nM:0:0:555\nR:connstring.go\na:0:0:444\nZ:Q1o/SD37TP0gGuH9Ck2fjZJVOed0A=\nR:connstring_spec_test.go\na:0:0:444\nZ:Q1g/WKshM9M1qgkQtij7nDQWRhjSQ=\nR:connstring_test.go\na:0:0:444\nZ:Q1RNBFZyR2K7X9SzjrJS4rFxbGadc=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/dns\nM:0:0:555\nR:dns.go\na:0:0:444\nZ:Q1uxRf3qWq8e2Q/Zp1vzXQwjHDJtw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/drivertest\nM:0:0:555\nR:channel_conn.go\na:0:0:444\nZ:Q1H28v6DXfwddoAOAcjsTUlkiXeII=\nR:channel_netconn.go\na:0:0:444\nZ:Q11RkJV0LSu1q5FMWRggKSwW7DCis=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/examples\nM:0:0:555\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/examples/cluster_monitoring\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q12KEoMaRlbZ0hQiEOOS7FcjKwlzw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/examples/count\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1GW7WLnvY7maWjey1YzoForvHM9M=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/examples/server_monitoring\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1OYaV4Bpe75m5FRwhGdhiGo7weVE=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/examples/workload\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q152AloweofJkKogQqVJBXwlDESRo=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/integration\nM:0:0:555\nR:aggregate_test.go\na:0:0:444\nZ:Q1bq0shvAY5WAq4raJE8a0AX062Z4=\nR:compressor_test.go\na:0:0:444\nZ:Q1PI1ixp8Lo2nROVq0SBhRriY7DAI=\nR:insert_test.go\na:0:0:444\nZ:Q1EeA2MiaI8m8/d3LYWHbUQe9mv7U=\nR:integration.go\na:0:0:444\nZ:Q1+oGUuuJnCibvuySHgA2qxbCNl/0=\nR:main_test.go\na:0:0:444\nZ:Q1WcAXilfSiDa1FJqR11tUGKlD4B8=\nR:scram_test.go\na:0:0:444\nZ:Q1n2/QssXb2CnOPH49uPhPEF06fnM=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/mongocrypt\nM:0:0:555\nR:binary.go\na:0:0:444\nZ:Q1cqNDyNcciDhth+DFGNmAeSFsCkY=\nR:errors.go\na:0:0:444\nZ:Q17Vqnk6kDmQ7PSWNltWmwt6uhoJM=\nR:errors_not_enabled.go\na:0:0:444\nZ:Q13krr0XCeKWJKeSvOYWwMD1NwoPo=\nR:mongocrypt.go\na:0:0:444\nZ:Q1vw27r566FzTHXG3cOCuH2ErBOTE=\nR:mongocrypt_context.go\na:0:0:444\nZ:Q1hXZvkqzToELFF+ZFu42PYJ+thVM=\nR:mongocrypt_context_not_enabled.go\na:0:0:444\nZ:Q14cDEtYryn91Nlaw/c3GqzTDXGpo=\nR:mongocrypt_kms_context.go\na:0:0:444\nZ:Q1kqvdRK6vWTe0Gt9W72VPZvrmL2g=\nR:mongocrypt_kms_context_not_enabled.go\na:0:0:444\nZ:Q1Se+wHIGqCuSni0BN6YQm4mnfwNw=\nR:mongocrypt_not_enabled.go\na:0:0:444\nZ:Q1NQMl6jGJto4Fq1Hc2J0ZOABWAlI=\nR:mongocrypt_test.go\na:0:0:444\nZ:Q1HWihl1GUtkCiQPtYmDZ6X3Iobg8=\nR:state.go\na:0:0:444\nZ:Q1SHivG59uPj/pQQKdjwDlzfYz5sA=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/mongocrypt/options\nM:0:0:555\nR:mongocrypt_context_options.go\na:0:0:444\nZ:Q1kLlDCaNtmEyukHpOiElvbQivh20=\nR:mongocrypt_options.go\na:0:0:444\nZ:Q12Ihu1jMAyXfrWMcTuWsWtZXiXos=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/ocsp\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1kGKQO0FedgNSX5JrUIF8R9y7hzU=\nR:cache_test.go\na:0:0:444\nZ:Q1NYiRHkOEV4tksg2QQ5BHOtEApHo=\nR:config.go\na:0:0:444\nZ:Q1iaz8OGcrqPfelDrEQRcSwrvKi58=\nR:ocsp.go\na:0:0:444\nZ:Q1iOCIsXFhcnh6gWUQpTVWiKP/CSA=\nR:ocsp_test.go\na:0:0:444\nZ:Q16ftSP3uA6MNYPgllg9mxAHc9I5g=\nR:options.go\na:0:0:444\nZ:Q1MyYOwj+Z3skQjHD8RDZbuKqR3Gw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/operation\nM:0:0:555\nR:abort_transaction.go\na:0:0:444\nZ:Q1DMrjZOK6rpT/2T2WXHY7dFJsGrQ=\nR:aggregate.go\na:0:0:444\nZ:Q1FXij5MD1RNYzR/C5V3uugoQw+98=\nR:command.go\na:0:0:444\nZ:Q1dLpxGibBhX6K4Ke/HhnH4nbUr24=\nR:commit_transaction.go\na:0:0:444\nZ:Q1mGe5IFiBnnIFeB3yBtQ8Tf/usYM=\nR:count.go\na:0:0:444\nZ:Q10H2cnj/EtOn9a4cGBLkaiuwZ4E0=\nR:create.go\na:0:0:444\nZ:Q1RmTLhLeTwKJgq4qMeMUVea7uZOU=\nR:createIndexes.go\na:0:0:444\nZ:Q1vRjK0m3Em4ugFEe7qKI7qprv6UE=\nR:delete.go\na:0:0:444\nZ:Q1U3nS0mnxT5KfWB8E7fOHb4rYUtE=\nR:distinct.go\na:0:0:444\nZ:Q1lUiksc3fZHxKAPk/jcuzzTClOvQ=\nR:drop_collection.go\na:0:0:444\nZ:Q1mRMQEgz5lQnXBkINxdLkjFN8TEE=\nR:drop_database.go\na:0:0:444\nZ:Q1WaeYdIh2/xhCHMJkAlH3atoKBkU=\nR:drop_indexes.go\na:0:0:444\nZ:Q15Kx/60Z26L9MhNp3COVx3fE24HI=\nR:end_sessions.go\na:0:0:444\nZ:Q1UyuVnflZnKXD0SWlXb8JwQdoLxg=\nR:errors.go\na:0:0:444\nZ:Q1Rdrzf10EVX8DsdTyz5Qv3/R7MiU=\nR:find.go\na:0:0:444\nZ:Q1HUnZiGdrgfhAslV1RFRwroy0Ig8=\nR:find_and_modify.go\na:0:0:444\nZ:Q1h6XZ5VFtexjJT4ClL0hJIH1ExoE=\nR:hello.go\na:0:0:444\nZ:Q1OVog7ixp87ubuOVgpJp76MPUK1w=\nR:insert.go\na:0:0:444\nZ:Q1gbGu9CkZN5St/CMqcVu4RKMeuxs=\nR:listDatabases.go\na:0:0:444\nZ:Q1hRqKI9vBjvE9llji6pAnq0RMq6s=\nR:list_collections.go\na:0:0:444\nZ:Q16gcsVlhVH0bHBSqE5NKZbHIvkII=\nR:list_indexes.go\na:0:0:444\nZ:Q1JCGtXf6viaWt2SQ9e/TqREw/HD8=\nR:update.go\na:0:0:444\nZ:Q1bYpxiw/seCTvFkb2MRIjSXnCVL4=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/session\nM:0:0:555\nR:client_session.go\na:0:0:444\nZ:Q1V/B8NNEvh6D58V1J84VpQCkqVP0=\nR:client_session_test.go\na:0:0:444\nZ:Q1yZ/FTkedFBqFGuq5I9uyxGtnwKU=\nR:cluster_clock.go\na:0:0:444\nZ:Q19P4BYE9gXU6qHozYGbmueI0gVxA=\nR:cluster_clock_test.go\na:0:0:444\nZ:Q1y4fk0U8+MJM7bFri4P1JzzUCKpQ=\nR:options.go\na:0:0:444\nZ:Q1bFaamtqe2lsrh2wMyu0SJu7rFMM=\nR:server_session.go\na:0:0:444\nZ:Q1vLqt+r1+JeHHv93a8Z29wPfRBeE=\nR:server_session_test.go\na:0:0:444\nZ:Q175YgS9BmQiBPr1fsziqKSo8Y79M=\nR:session_pool.go\na:0:0:444\nZ:Q1AUYed1C5pNzrQG3g4UtufFLHpUk=\nR:session_pool_test.go\na:0:0:444\nZ:Q10Pkzr/ijXhgZOudBzE4+VkvvmVY=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/topology\nM:0:0:555\nR:CMAP_spec_test.go\na:0:0:444\nZ:Q18dMHE/xqr7wxYQsjrYQIInZJMPo=\nR:DESIGN.md\na:0:0:444\nZ:Q13yJ25OyJ4bfRYiQolRoBmotbZsA=\nR:cancellation_listener.go\na:0:0:444\nZ:Q1PiXSJyz110iLhMCp9vlccotnodw=\nR:cmap_prose_test.go\na:0:0:444\nZ:Q1us9Y+AnETbkY/jNvRTssn3xpU+E=\nR:connection.go\na:0:0:444\nZ:Q10theBMEvLlt9r7HQWehUmUYHQis=\nR:connection_errors_test.go\na:0:0:444\nZ:Q1B6aUeOR6jWrOsEFzF+dD/euSAP0=\nR:connection_legacy.go\na:0:0:444\nZ:Q1ZnQh+NS2lZGLyuRxeqW+wzJ1sy0=\nR:connection_options.go\na:0:0:444\nZ:Q1eAl+poNaQRMNVm0x/UDYzFKfvd4=\nR:connection_test.go\na:0:0:444\nZ:Q1+MeTPIjVzpjjBdANqFU44QZfBP8=\nR:diff.go\na:0:0:444\nZ:Q1bMH26OB8K9lbOD+SolwuSlCDB9k=\nR:diff_test.go\na:0:0:444\nZ:Q1l1KTW4OWFW42FCR8YtB4DIRqjFA=\nR:errors.go\na:0:0:444\nZ:Q1AVLE0VqaiXAmpbOX2F/wAYXLd6Q=\nR:fsm.go\na:0:0:444\nZ:Q1B3zsJc+5lTG1tl4uMbavhBflvSo=\nR:polling_srv_records_test.go\na:0:0:444\nZ:Q1EfMjrlEyeED7H6q9GyexNNqKhVs=\nR:pool.go\na:0:0:444\nZ:Q1L1tkMYqxt6L5JEzxfKM3tiSXbC4=\nR:pool_generation_counter.go\na:0:0:444\nZ:Q12bEhkXlThUA+MKUkR7ZVucQNnWc=\nR:pool_test.go\na:0:0:444\nZ:Q12mf6maw2cwE6D3ZLVlJ9YaiclUI=\nR:rtt_monitor.go\na:0:0:444\nZ:Q1KbJZY2b6+MdXEWIh0dS19cPIJ68=\nR:rtt_monitor_test.go\na:0:0:444\nZ:Q16Jb1Jg8A6iUqYn0dktFZXjSPpeI=\nR:sdam_spec_test.go\na:0:0:444\nZ:Q1EPdCuLR4FarDKmzerrBFU7YLqz8=\nR:server.go\na:0:0:444\nZ:Q1n7AozaJ1Yz2xZkqTXFrxYGHYswQ=\nR:server_options.go\na:0:0:444\nZ:Q12EBTcpqRljm8j6TIwyviPkHrn9A=\nR:server_rtt_test.go\na:0:0:444\nZ:Q1k95DfFRwwOes6EJ4n3gIoNOgYck=\nR:server_test.go\na:0:0:444\nZ:Q1KxilyaSK8n2jSX/8tRFl/oCVxQk=\nR:tls_connection_source_1_16.go\na:0:0:444\nZ:Q17Kf7QMLVdpAwvtHYQYX360fvbzE=\nR:tls_connection_source_1_17.go\na:0:0:444\nZ:Q1/1VPRnpS9+JcoE9FpR2n9MVuOtc=\nR:topology.go\na:0:0:444\nZ:Q15URaEQXBzD+9HhPbP3tLPWddU6s=\nR:topology_errors_test.go\na:0:0:444\nZ:Q1jGjaO0JbjB4G+IJgpx454zo4o5k=\nR:topology_options.go\na:0:0:444\nZ:Q1lG8Ahre5uFJMHWDCKPBytxbz8D8=\nR:topology_options_test.go\na:0:0:444\nZ:Q12KElvaaNrXf9utTOVr1B++hCOig=\nR:topology_test.go\na:0:0:444\nZ:Q1SkgZyXyB5U+urmF/Sdoib77zKcw=\nF:root/go/pkg/mod/go.mongodb.org/mongo-driver@v1.10.2/x/mongo/driver/wiremessage\nM:0:0:555\nR:wiremessage.go\na:0:0:444\nZ:Q1ZacsJUhM5B1VO4DD9daaVd8V5Rk=\nF:root/go/pkg/mod/golang.org\nF:root/go/pkg/mod/golang.org/x\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5\nM:0:0:555\nR:.dockerignore\na:0:0:444\nZ:Q1R8u7cEkN1XTQzRw5XW74gD3hlfo=\nR:.gcloudignore\na:0:0:444\nZ:Q16jTh49CV4zp6QElJDizkgTQ081o=\nR:.gitignore\na:0:0:444\nZ:Q1PKDnL9/VM+QRzJXcnJHF7FlmH5U=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1opv8oUo9mkcfZmpky2IjIrT9rQo=\nR:build.go\na:0:0:444\nZ:Q1xoAhWR7QTZkO0FOJfGwndXmVfyg=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1Vjy5rgsNbfjnm41FRhntJTxPrf0=\nR:go.sum\na:0:0:444\nZ:Q1uQSIU23mwNPZJ0QjyyVXqfDhll4=\nR:update-readmes.go\na:0:0:444\nZ:Q1XFiRm7oOKxTU+i5r/8xtZv3ZlgY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/app\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/app/appengine\nM:0:0:555\nR:index.yaml\na:0:0:444\nZ:Q1LKwZEfGIw5giAP2SOncYprYy1mY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/autocertcache\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1gD1YWlj8Q+lu9Tj+dpV3eQH9BdI=\nR:autocertcache.go\na:0:0:444\nZ:Q1dp30OWXZJXkVIKiwbCjZ0vhvjew=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/buildenv\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1dfFMK+Grqqq2QJ5VLih/hCGrUTk=\nR:envs.go\na:0:0:444\nZ:Q1efQhenO7bBT5eiM4N9l4sNBTvoI=\nR:envs_test.go\na:0:0:444\nZ:Q1MJZn/n8zPbg0DNyPLqJZhhHCivk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/buildlet\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1TTKzdib2yCgOaMZRObyGZFxRmdc=\nR:buildlet.go\na:0:0:444\nZ:Q1/S5s6+0wyHlEnascXEU7Va5kRNY=\nR:buildlet_test.go\na:0:0:444\nZ:Q1S7q/Juu6ScZuPYto658eluziGFo=\nR:buildletclient.go\na:0:0:444\nZ:Q1YM2Etz+OYmK51/UOLhRRCBOxosw=\nR:buildletclient_test.go\na:0:0:444\nZ:Q1GlknYswvHQuI18f54QkwOHY6iUU=\nR:doc.go\na:0:0:444\nZ:Q1bCenJu1TCjTKHUuBk3QL1Wf8By0=\nR:ec2.go\na:0:0:444\nZ:Q1iwfzV/DAr7J87VhhURZiO3YiXcc=\nR:ec2_test.go\na:0:0:444\nZ:Q1IQKFAxlNTysM5EaySN+YshCMw90=\nR:fakebuildletclient.go\na:0:0:444\nZ:Q1Jo+K1lBcFWz65VpqDNK/6CgQZ3Q=\nR:gce.go\na:0:0:444\nZ:Q11lO4Ng2VFEUfBfGCnoX+p5FhX7g=\nR:grpcbuildlet.go\na:0:0:444\nZ:Q1A/VdHhcHfQb1pxQ5E0uB84fM21E=\nR:keypair.go\na:0:0:444\nZ:Q1cHGl+qteBgs/PUB06F5qmCHnaP0=\nR:remote.go\na:0:0:444\nZ:Q1d3ZECOzeL9LvarPqxYPZ3CL3ydY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/buildlet\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1fmxteugPXi4Jl2mvLqs3Dx6jXoA=\nR:Makefile\na:0:0:444\nZ:Q1jB++7ph1HNSPllb4dCROgZXgWUw=\nR:README\na:0:0:444\nZ:Q1KXPnrTTT/yCVKOfeIejmRf1qANM=\nR:buildlet.go\na:0:0:444\nZ:Q1RHQ4fRn7zAjf50hluoazsG3B7+c=\nR:buildlet_rlimit.go\na:0:0:444\nZ:Q1/6AWYJ55/k86b2qo+C8ODgcL52U=\nR:buildlet_test.go\na:0:0:444\nZ:Q1h6jpbLRw1egHOo8AHWCfyr5ukRs=\nR:buildlet_unix.go\na:0:0:444\nZ:Q1oa6gqdXKusgxc+GeEfmujwJA4Ig=\nR:buildlet_windows.go\na:0:0:444\nZ:Q1ioZilhuEhKXfFOqwh5fc8HxpVIM=\nR:reverse.go\na:0:0:444\nZ:Q1OAr+OvFhFwJUBiTnXKXZPNf2HAE=\nR:reverse_test.go\na:0:0:444\nZ:Q1brkfj/tHzpF2v5NxidYzBw38pG4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/buildlet/stage0\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1zNrNVytHgyN0zFMmr2supUUy2Rs=\nR:Makefile\na:0:0:444\nZ:Q1ia42ZhrEHuvossOvddJrr+0yQ/I=\nR:README.md\na:0:0:444\nZ:Q1Mb2oSECTQcyk5TrSao55s7lSURY=\nR:stage0.go\na:0:0:444\nZ:Q1rLyoVY2Vuv1j8cCCUEKG3cytcEI=\nR:stage0_windows.go\na:0:0:444\nZ:Q1hhY0oDyuCaNswJY7+2hzgG0VMRA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/buildlet/testssh\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1cgNRyTPvPuy7dpSYK/1b3cyD4tc=\nR:testssh.go\na:0:0:444\nZ:Q1dx52mQ8zx1rtMPoKuAwNPn8SR28=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/buildstats\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1DSIiX2vC+BFlQrloW+3TkWQoTWA=\nR:buildstats.go\na:0:0:444\nZ:Q1QDeJSzDkp7007ufLC9fbmhhFylA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1VyHL881EJe9S9r/j3awsb4cQQ4o=\nR:Dockerfile\na:0:0:444\nZ:Q1ZDqDvJLP/BQl+zaGAWMoclQ5+NM=\nR:Makefile\na:0:0:444\nZ:Q1NCEZKwNvlt9VwdIRuSvXtYJlTQQ=\nR:README.md\na:0:0:444\nZ:Q1P7WwOE83HsTijVvW5adT0+IgDno=\nR:builders.go\na:0:0:444\nZ:Q1r0P01XXrbxr0+HihWvtFyEGrVoE=\nR:builders_test.go\na:0:0:444\nZ:Q1jaQi1f3K/iuRTegD2x3Ee2XoyPg=\nR:buildstatus.go\na:0:0:444\nZ:Q19Uz1KzGVnlDWeWqvt9Qjf7PLeQY=\nR:buildstatus_test.go\na:0:0:444\nZ:Q1Qf8EbLufGAqYNg38fvNeoF1fX3c=\nR:coordinator.go\na:0:0:444\nZ:Q1xWfFbKB8YJnmaoX8ZS05Zt5Kmr4=\nR:coordinator_test.go\na:0:0:444\nZ:Q1r3ZWh6TPL8qpyDzURLagDFZags8=\nR:dash.go\na:0:0:444\nZ:Q1DKFyUCrrtaZDMDK7XExjqu+XcAw=\nR:debug.go\na:0:0:444\nZ:Q1SRPeqARgXdNFe3C76CHjis0focE=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1S5k71xYqy+Lj3Qs6rP25OIG3LHc=\nR:deployment-staging.yaml\na:0:0:444\nZ:Q1xAjfV4oqYY/YNYq3YrZWImlpNu8=\nR:metrics.go\na:0:0:444\nZ:Q1FlOfj/33eRMfSFdshKiy/Uz0wq0=\nR:modproxy.go\na:0:0:444\nZ:Q1lB4d48CvK6UruzZfWJCksrYuHgk=\nR:modproxy_test.go\na:0:0:444\nZ:Q1LMa6YZr2pyAj228Oq8WJqyk99YM=\nR:module-proxy-service.yaml\na:0:0:444\nZ:Q1bsNGUsJWIszOHqtBWJK6Ak02gGQ=\nR:queues.go\na:0:0:444\nZ:Q19PJd0BPo+THIw3DychYjDKrNQsU=\nR:queues_test.go\na:0:0:444\nZ:Q18MpimA9tfsK6PfUVGgB3TfmkJk4=\nR:results.go\na:0:0:444\nZ:Q1+5MTFNX9WzfjdNPUcIcQtKHFgCo=\nR:results_test.go\na:0:0:444\nZ:Q16x3eBz8orXd5yjfloIhW4Nf7kNA=\nR:service-staging.yaml\na:0:0:444\nZ:Q1PVsQ5AURdoYGW6fQJFM/Nmy89sg=\nR:status.go\na:0:0:444\nZ:Q1V8jWIZ/71bmFLy7JtHY+2tdpqrM=\nR:status_test.go\na:0:0:444\nZ:Q1VUTGbVgKmdXr8NkOhBQ3Rl44epM=\nR:style.css\na:0:0:444\nZ:Q1KP0VEKySjPbEj/hF6EY3GsSn6aw=\nR:trybot_dev.go\na:0:0:444\nZ:Q1udG+gZ9GDItdgmJp/ELUMbyx8dU=\nR:version.sh\na:0:0:444\nZ:Q1a140RQ5VWJcyT7pvl1gX0bhaSTc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/internal/dashboard\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1t59E0ufz+7F4r80WUO94HtMWmNU=\nR:dashboard.html\na:0:0:444\nZ:Q1SPJlrzjUVNhfn1LF6IYH+OQpSOE=\nR:datastore.go\na:0:0:444\nZ:Q1p/Z2Om3LodcVBZkG2Sc+EzjWb8E=\nR:datastore_test.go\na:0:0:444\nZ:Q1rzkf/yApjODMjzpAogcSsrbaD1U=\nR:handler.go\na:0:0:444\nZ:Q1QanIhfHRPLq838yh28GR2OJ/NDs=\nR:handler_test.go\na:0:0:444\nZ:Q1t5uKpCREf8zBXY2IkFImdXCZ6p4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/internal/legacydash\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1muQ6japoXVO0QOgcoXjbhgVJ1R4=\nR:build.go\na:0:0:444\nZ:Q1d8x6WSsmrzODnSBnULYD0IbKyYw=\nR:dash.go\na:0:0:444\nZ:Q1pRYt63f+NScYzs3ZJqKo2ZEYnb4=\nR:handler.go\na:0:0:444\nZ:Q1F75JfP01TbWaqMVXlI6ftKlG6q0=\nR:ui.go\na:0:0:444\nZ:Q1RKobPtXpTmZHll4XUuW36t8W9As=\nR:ui.html\na:0:0:444\nZ:Q1E4rGgWGYshbyEDi62MLLPs5Ft8I=\nR:ui_test.go\na:0:0:444\nZ:Q12MulJv71bRf0Cbu/ofQhAP3hivQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/internal/legacydash/static\nM:0:0:555\nR:status_alert.gif\na:0:0:444\nZ:Q1d3OT1pmX61n/QONl+scv/FmiG8s=\nR:status_good.gif\na:0:0:444\nZ:Q1zrScpXNQbTOWIBrtcqzsWFC6qTc=\nR:style.css\na:0:0:444\nZ:Q1lrvWbxdwi2mVqq6kJuweWAFuAJ8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/protos\nM:0:0:555\nR:coordinator.pb.go\na:0:0:444\nZ:Q1NCp+F8LP/lZh4bGRx1YG3MtIJ9s=\nR:coordinator.proto\na:0:0:444\nZ:Q1a+2DuLY17bjUrY8yaGOx+o/bfHk=\nR:protos.go\na:0:0:444\nZ:Q1v1ISKczL/7Rtpbyx3z/9KsFyliE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/coordinator/templates\nM:0:0:555\nR:base.html\na:0:0:444\nZ:Q18KeaI5dPMgAmIvsLft9ZX/uPYU0=\nR:builders.html\na:0:0:444\nZ:Q1peue2cclHz97KHn5iwtTUzuTaTM=\nR:queues.html\na:0:0:444\nZ:Q1S9RMe39szuwQ/WGEquFVtI4nIqE=\nR:status.html\na:0:0:444\nZ:Q1sVtx52scKMsIL/Pa5sRoT3778GI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/debugnewvm\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1QXTnfAHEvdfuyH96oiIJm9Mr+xM=\nR:debugnewvm.go\na:0:0:444\nZ:Q1vgpcINE+w95S9bR5VbTApf5EgGI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/docker2boot\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1XL4K20DJmyKbN79IIKDzlFUsqbs=\nR:README.md\na:0:0:444\nZ:Q1YAwldiLVY/O9OY85CvodHJFdZTU=\nR:docker2boot.go\na:0:0:444\nZ:Q1TiLO3WrNWidZ5FRRr/8jg74itRA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/fetchlogs\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1zkSAEUWcKg7ScPUHXiJl/DqbSCs=\nR:fetchlogs.go\na:0:0:444\nZ:Q1TxNVhh3Tgt01eLzjckcTmW/ie2s=\nR:xdg.go\na:0:0:444\nZ:Q1yTy53tJpRWS9zxflkpVQmiAvYrM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/genbootstrap\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q10lTs7IRzPuoUUXbYlraiOYsp8vs=\nR:genbootstrap.go\na:0:0:444\nZ:Q1IDqiok4JelzKbVuuz9HcYzAzE2M=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/genbuilderkey\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q10Pi7IBD7gUUUvzN+0f7fXFANa2Q=\nR:genbuilderkey.go\na:0:0:444\nZ:Q1XQDPNjWiGLoH1PpZZ7IYyaTJMy0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/gerritbot\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1Ty6uzDrM7mMQVnrueMAj9vWDhO8=\nR:Makefile\na:0:0:444\nZ:Q12YmGt23pQaT6Z0M3xNZSOsKR5/U=\nR:README.md\na:0:0:444\nZ:Q1P1jgGMzCmJkLd2IGXFhUxzY7Ing=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1H1yScaf4O0MI9t86/Et9GfRQiPE=\nR:gerritbot.go\na:0:0:444\nZ:Q1f09TkcaRdAK3dinpwktzGQlRH2g=\nR:gerritbot_test.go\na:0:0:444\nZ:Q1vUP/yd9IbsW8BOiqWKVmFEZZ/9o=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/gitmirror\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1m0GOE3M+XTOGoMexFiQ6gH7/8yA=\nR:Dockerfile\na:0:0:444\nZ:Q1gMaAlmLINsE1nqC3pC85W1t4L50=\nR:Makefile\na:0:0:444\nZ:Q1KoGVhFSk2BjlBPJu8QQt7ECenbE=\nR:README.md\na:0:0:444\nZ:Q1URCQsXv6WVjvce6lDtCFs6ptvSQ=\nR:deployment-mirroring.yaml\na:0:0:444\nZ:Q1wB/+Vo77Tuz9KyNNn/ILVoLA6FM=\nR:deployment-serving.yaml\na:0:0:444\nZ:Q1Sqyd28bKLzQSlijpbRM07CePirk=\nR:gitmirror.go\na:0:0:444\nZ:Q1aAlPPfabHdwTFBCk+otuCNsFClI=\nR:gitmirror_linux.go\na:0:0:444\nZ:Q1ETCOVdH2WPkyzqAm9n2jAp+yF74=\nR:gitmirror_test.go\na:0:0:444\nZ:Q1inErXUVEpSNL3AHzDXyz4kFj5xU=\nR:service.yaml\na:0:0:444\nZ:Q1/uwLGmhZ32tN4zndFPazeTzmgwg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/gomote\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1sj3dtqzzwF5fmDn/5XAC+rVBRvE=\nR:create.go\na:0:0:444\nZ:Q17WarQXR56sWuNAgBn75LtPCgwP0=\nR:destroy.go\na:0:0:444\nZ:Q1W5iX2BmKEr36+27T0QUJbH8hnDk=\nR:get.go\na:0:0:444\nZ:Q1l+IT93CaXKi9TWcCXyto7BTUkTI=\nR:gomote.go\na:0:0:444\nZ:Q17zlxlmlQHhDfKDb4HJX9D6bJ/Rk=\nR:list.go\na:0:0:444\nZ:Q1hONrpa1rH1l4LjqdCWs0IsJ1YGc=\nR:ls.go\na:0:0:444\nZ:Q1uBpGhkDOQQhDAXqxG2b9SLFzlgE=\nR:ping.go\na:0:0:444\nZ:Q1vfSvApwhZh0hgNVjzwMB59FVo3c=\nR:push.go\na:0:0:444\nZ:Q1oxgg0UuZxKj9zQuwpgc6U8cY5GU=\nR:put.go\na:0:0:444\nZ:Q1cLyFHiT6+BlnSkoLl21jUAHHlg8=\nR:rdp.go\na:0:0:444\nZ:Q1kTKMElMNLY+vdTIlFdvSzrjQ8oc=\nR:rm.go\na:0:0:444\nZ:Q1OS1rL03M4f+Us7u+t0mwLQltURw=\nR:run.go\na:0:0:444\nZ:Q1J5tJWXv/9Lp0uvpEVyMQH9VdAMo=\nR:ssh.go\na:0:0:444\nZ:Q1qMKtT3B1C7JNA2qiTQ1PW98GO6o=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/gopherbot\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1B+1cEIKx0UKlyiOX9w+sjBQPKSg=\nR:Makefile\na:0:0:444\nZ:Q14hmmCdGM50dowURE1uTSgX9WApw=\nR:README.md\na:0:0:444\nZ:Q1+eUaDrW2bUsOVjUrWD4qx0GwimY=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1LQNUe2iV2bYQSmofiPnmw32euqA=\nR:gopherbot.go\na:0:0:444\nZ:Q13M7EbDfLxyibxnymrHoMt/H+vGo=\nR:gopherbot_test.go\na:0:0:444\nZ:Q1xKhSO3wXvEe/jKJrm1Qlp4t2IW0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/greplogs\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1/PetrS2pR8+9OmjGgi/9ed/3OhQ=\nR:broken.go\na:0:0:444\nZ:Q1NJ6l04gL1rM1h2a8ZLg6nsQ5zAU=\nR:color.go\na:0:0:444\nZ:Q1RFn++QtUBkgrL+mHI4dE5UqB/PA=\nR:flags.go\na:0:0:444\nZ:Q1xq4dNzKUFxtAhSxdnGVSZUKbVoM=\nR:main.go\na:0:0:444\nZ:Q1mPE/uswT5Z8QANor/HasIHBjK48=\nR:timeflag.go\na:0:0:444\nZ:Q10MhE0FpfE0IHRrp0uvGTGKi388U=\nR:xdg.go\na:0:0:444\nZ:Q1yTy53tJpRWS9zxflkpVQmiAvYrM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/greplogs/_embed\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1XgTWt/gKN8EX4E9yURFjFfXm9KE=\nR:broken.go\na:0:0:444\nZ:Q1kH/45+eQlm2+rLRNSRcZOreaaoc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/greplogs/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/greplogs/internal/logparse\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1WSaOtpUuXzMApGYJ495/giAlVE8=\nR:doc.go\na:0:0:444\nZ:Q1o+e1RNJqYp3v4OWHcj8eimQkeoI=\nR:failure.go\na:0:0:444\nZ:Q1ilNsPohozCVQI29PDh9Q/yClWmE=\nR:matcher.go\na:0:0:444\nZ:Q1I9b19yMGePJOMH6w94JwZSUFDis=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/makemac\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1itAuv8oyJTM8v73smA00D3/Z3hw=\nR:makemac.go\na:0:0:444\nZ:Q1XLFKi8Rks82C/ddaS3bXmAv3JDM=\nR:makemac.service\na:0:0:444\nZ:Q1RHVRW68sORT0ryy0mI0Fb5j+2vM=\nR:makemac_test.go\na:0:0:444\nZ:Q14Lnm9UjPOZjanmypLfBVBIFIhTc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/perfrun\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q18OdCr43dj2zATndBdkQwn+QRVeQ=\nR:perfrun.go\na:0:0:444\nZ:Q1s5SbjTdlaBisZRW8E3rXDxlyNck=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/pubsubhelper\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1NP7drX9BF4hCoPq+MMEDlI4cYiY=\nR:Dockerfile\na:0:0:444\nZ:Q1WHhlNUFGiNmJidBdZU6YpYUQpDE=\nR:Makefile\na:0:0:444\nZ:Q1HzNWYtbn+wAti9dqHwfruFIX2K0=\nR:README.md\na:0:0:444\nZ:Q12R7s8oLhUSf6u/6acEY4VEII5Q0=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1uNOPbcCvoHtmU/OxSD3R+00fLds=\nR:github.go\na:0:0:444\nZ:Q1CLUlteaW9e6uHI1k9+fUPZK5MV4=\nR:pubsubhelper.go\na:0:0:444\nZ:Q1vDWlVCAZXKf+Lxb3NBOpJJGHQk0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/pubsubhelper/pubsubtypes\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1MI+juw6fIHkCDnVMlXlvktm4iIw=\nR:pubsubtypes.go\na:0:0:444\nZ:Q13HEoTq5yVi3uNNtPPMHkjiISjCs=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/racebuild\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1i/f6Y1Y6wnHGf30446O+BQOIgYc=\nR:racebuild.go\na:0:0:444\nZ:Q1rlamudT28CC+tMyhzzBq3JzrN48=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/release\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1PDOgnb8tKB5sW/Tfd0r6wC+yu+4=\nR:release.go\na:0:0:444\nZ:Q1A3tvjKD+P6yrwzjYF4W460oTvxo=\nR:upload.go\na:0:0:444\nZ:Q1+mr329H6W/y8g+eYCwd9L4R2EIM=\nR:upload_test.go\na:0:0:444\nZ:Q10HkPTQPvWffEgPfo7Fr0HY2CW38=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/relnote\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q17+aNVPlJ//YL8obHQ9ikfFnO2k0=\nR:relnote.go\na:0:0:444\nZ:Q1Q0VDhaKsezn7VklvmWtYgAPg1Eg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/relui\nM:0:0:555\nR:.eslintrc.yaml\na:0:0:444\nZ:Q1Oog3nqLmM3kcoEbpuataj2dgaZg=\nR:.prettierrc.yaml\na:0:0:444\nZ:Q1EkLIw5MMldlDYBYW/mAER6jO6/U=\nR:.stylelintrc.yaml\na:0:0:444\nZ:Q11sO9lng0Ll/kmpFkU4suwHplR78=\nR:Dockerfile\na:0:0:444\nZ:Q1TQZLtR/zWgxDYltuB/3LZ8lRuhE=\nR:Dockerfile.node\na:0:0:444\nZ:Q1pqT5QqQ1G7MjH/5p6YKP+EeBCEg=\nR:Dockerfile.test\na:0:0:444\nZ:Q1Uo0HpYlKJ3MWTEmfFDOPbZ0zeyc=\nR:Makefile\na:0:0:444\nZ:Q1Pg4PfCdB3sg10AoPeYEO0uHgrPc=\nR:README.md\na:0:0:444\nZ:Q1f98rHMwPV2WFNFjClFjSY2TGnc0=\nR:cloudbuild.yaml\na:0:0:444\nZ:Q1zUW8FBjhigxpdJv6JiRll5ZrDhw=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1m8aNndwMkIOJGepgrLUJZUEIxWk=\nR:main.go\na:0:0:444\nZ:Q1qheb+btPZ7Qb+GcnvhZUSQ/qL8A=\nR:package-lock.json\na:0:0:444\nZ:Q1j26aNlkwdne9MIZSI2d60WxyhSM=\nR:package.json\na:0:0:444\nZ:Q1wZW1WViS0Re3WrGeXHXVEBDRK+w=\nR:sqlc.yaml\na:0:0:444\nZ:Q1I5M9Gbsft7Aa9Ak/Thabcrwk8+U=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/retrybuilds\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1tv92AI0IqznJZF1YTntI13uEd2E=\nR:retrybuilds.go\na:0:0:444\nZ:Q1qvex9O8I6ozB94LA3Rsft8WGlMw=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/rundockerbuildlet\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1flIa5FRxpqA65L4tEet+DfU111w=\nR:rundockerbuildlet.go\na:0:0:444\nZ:Q1SzTkrrWb2HqsLO2SuNsciRjCypU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/runqemubuildlet\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1erwUVglr2IEBYEy5mcpDbMCnwlQ=\nR:heartbeat.go\na:0:0:444\nZ:Q1cDhKmyHsjpjNcdnG2pC5Es3G6zM=\nR:heartbeat_test.go\na:0:0:444\nZ:Q1Tz1N1Sx/sPJmcdZLXg2r40YrWSA=\nR:main.go\na:0:0:444\nZ:Q1v1as94g4AxSboOI2irvQsSeHB/0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/updatestd\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1yLQ8IAgmShsUYbcQf+ShwF+yezw=\nR:updatestd.go\na:0:0:444\nZ:Q1aQSdxaz6KEZdGF59Dnyu2SlHt/E=\nR:updatestd_test.go\na:0:0:444\nZ:Q1QPXzcHHgz4dVsRJoMOtV2qmeJso=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/upload\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1z7yOQA9cdf/HPEV29lYpACczfRI=\nR:upload.go\na:0:0:444\nZ:Q1hiptWJotTIWYd+CfQvVcCBm5eqM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/cmd/xb\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q18uMjBY8uZ4xWDQkPoziQP0d4kT4=\nR:xb.go\na:0:0:444\nZ:Q1YiCeSyDVSLvvS9SBFMTTcqjwq6M=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/dashboard\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1fQZVDxPjDw/5AeX5tazjFAPR7U0=\nR:builders.go\na:0:0:444\nZ:Q1Nf5cWLtbS6pkUnpYVJwpvs4GUXI=\nR:builders_test.go\na:0:0:444\nZ:Q1tMvDmL4tKiNaNK1Cmj7ysyRlmcI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/deploy\nM:0:0:555\nR:build-ingress.yaml\na:0:0:444\nZ:Q1u4C5I71XqJmw3alzOuUhaRZMscs=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q18BrlLH5BfeOXHVayPhyDeu0JFRc=\nR:Makefile\na:0:0:444\nZ:Q1j2XR8Ms6B35V9hIBMf6n6iJ9PXw=\nR:README.md\na:0:0:444\nZ:Q1TUSESAdohGN1u2NtUIkbbE9RV4o=\nR:data.go\na:0:0:444\nZ:Q1I0YVAjK5/dmG/Lm/CN1237F5Vi4=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1AEknebs/XLg3DwmmGSsPYcezB84=\nR:deployment-staging.yaml\na:0:0:444\nZ:Q1wSeBZMh0EZeW9h8BgU8u1Zfk1gM=\nR:devapp.go\na:0:0:444\nZ:Q1+ycYH7NURH2+gqnSnMVVNwM0M7w=\nR:gophercon.go\na:0:0:444\nZ:Q1r6yd/qPRTKz/k52ZqLBvcPtpPHE=\nR:gophercon_test.go\na:0:0:444\nZ:Q15pTuCvVhiev4MWXjWpkb5SjBnCU=\nR:gzip.go\na:0:0:444\nZ:Q1MxCSAO1nHX9zX1ukn2/JKOUlYMQ=\nR:release.go\na:0:0:444\nZ:Q1iKrjuqgDugZZmjkRmc3qdtEQIP8=\nR:release_test.go\na:0:0:444\nZ:Q1a2ZZPiDh39TucSepzEkKoAYMC0s=\nR:reviews.go\na:0:0:444\nZ:Q1nXKTqN+UdZ5LyAFqs8BXZqkLifg=\nR:server.go\na:0:0:444\nZ:Q1I25UQtGU9mXZxpmh37mSOc+nYvQ=\nR:server_test.go\na:0:0:444\nZ:Q1KQIKGW0cJHHQv+/WkurbN2I/vYA=\nR:service-staging.yaml\na:0:0:444\nZ:Q1lwcKC484CDdCdOh2tIwiS911T6M=\nR:stats.go\na:0:0:444\nZ:Q1jomxHL+Qaapr/O1P7KGQgpk/HEw=\nR:stats_test.go\na:0:0:444\nZ:Q1droM6G8CiXflbJ4k/VTXqzQzR2k=\nR:title.go\na:0:0:444\nZ:Q1WTy++3dl2RmKTnFVHg6SEkshAFo=\nR:title_test.go\na:0:0:444\nZ:Q1RDVddQNLG6nY97Z+Tkq7lNLv5Bg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp/owners\nM:0:0:555\nR:owners.go\na:0:0:444\nZ:Q1qS2B1vOdb76DLYiKgVW+RKDRuuw=\nR:owners_test.go\na:0:0:444\nZ:Q1KwF5CEwdtfYl0YkETUxZ/+3K8nY=\nR:table.go\na:0:0:444\nZ:Q1YvjPbV6kab06b0wzmZ9e+xIx0NM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp/static\nM:0:0:555\nR:favicon.ico\na:0:0:444\nZ:Q1mYeyTKrFlKpUYVygifTcf43ke0Y=\nR:index.html\na:0:0:444\nZ:Q1ZTma5FmyLJesQycyzLme4D/qD8s=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp/static/gophercon\nM:0:0:555\nR:index.html\na:0:0:444\nZ:Q177NNzFoZ394P+GjfZ4+jJMk6F6s=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp/static/js\nM:0:0:555\nR:Chart.min.js\na:0:0:444\nZ:Q1Lr83DmQABv/4p86h5DSYcpA8bYw=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/devapp/templates\nM:0:0:555\nR:release.tmpl\na:0:0:444\nZ:Q1YRRmEY6VgCd0jvDcD9CvEB+MaJQ=\nR:reviews.tmpl\na:0:0:444\nZ:Q1ZcVW4WeRqyC3bo0y8v7K5wxEbu0=\nR:stats.tmpl\na:0:0:444\nZ:Q1hPUsCndrLVETEowCTNwU4vbWHiM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/doc\nM:0:0:555\nR:deployment.md\na:0:0:444\nZ:Q1g2VMkZgAHVpxAK2kaB3n+IZPUfc=\nR:remote-buildlet.txt\na:0:0:444\nZ:Q11/8nTki44ujk7Z81o3M1iVsoQDY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/android-amd64-emu\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1siq385KmCb3F9u5Ni8Qtl76QacM=\nR:Makefile\na:0:0:444\nZ:Q17TLf/jFiUIEk5+G9yXahbtpQjlg=\nR:README.md\na:0:0:444\nZ:Q1V5oPbjptoC5acAWFDsdY4CFauaw=\nR:create-vm.sh\na:0:0:444\nZ:Q1rmaUETjGli/sy6MJi/6yBzqfT0k=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/corellium\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1huM9eM0AieURmUXlohF8qBhISKc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/corellium/android\nM:0:0:555\nR:install.sh\na:0:0:444\nZ:Q1FzPi4BYZ6Tx75e4y6rcECbkbv5U=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/corellium/android/files\nM:0:0:555\nR:builder.sh\na:0:0:444\nZ:Q1hGJ8gsoXkHIr5wDK2K9e6oSN1xA=\nR:clangwrap.go\na:0:0:444\nZ:Q1xce7Tx7s/8eOwGT5BaCxzCCGTqM=\nR:exec.sh\na:0:0:444\nZ:Q1aCuSjvbVvLU8ptO+mRsflsGgZLc=\nR:profile\na:0:0:444\nZ:Q1Q6X0vMUC5u4BBLRXCozh1fhskRc=\nR:run-builder-at-boot\na:0:0:444\nZ:Q17PlNd9gUgNYtbOXbmQo5H7G+J1w=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/corellium/ios\nM:0:0:555\nR:install.sh\na:0:0:444\nZ:Q1cqmm++BdJV2SmBDq4JuYfP/SqQo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/corellium/ios/files\nM:0:0:555\nR:arwrap.go\na:0:0:444\nZ:Q1GYm5WUb3DClP9gsxHaf4Tv0n7HA=\nR:builder.sh\na:0:0:444\nZ:Q1K4C/IXXs+uWlNyoUitndntqhxJQ=\nR:clangwrap.go\na:0:0:444\nZ:Q1VyPYtCqTR173e7ib+9Jlb/TrR+8=\nR:org.golang.builder.plist\na:0:0:444\nZ:Q1uNxQ927AWJDlAvi7QkFUID+KE9A=\nR:profile\na:0:0:444\nZ:Q1JZewzAxjzEa+5FrJO8uaduvRMzs=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/crosscompile\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/crosscompile/linux-armel-cross\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1Z66L0UkoCqmCVpgxhlcFXXfcxIw=\nR:README\na:0:0:444\nZ:Q1GJg5pLsC+JeTu7rSuqLxW3v5JEE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/crosscompile/linux-armhf-cross\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1cfMWi1o+OZ7of0A3lkPzbdGng8Y=\nR:README\na:0:0:444\nZ:Q1Skl12588qFDfCbTKzMZh86zf214=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/crosscompile/linux-s390x-cross\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1HWxeMGXIev9yY9qKjs9vUgRPOYw=\nR:README\na:0:0:444\nZ:Q1ACsLk/cbElcSfp7Bd8q03Dd9pQg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/darwin\nM:0:0:555\nR:setup-notes.md\na:0:0:444\nZ:Q1MyXphdqKQ9eq3iuAHUorSfWzFaU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/darwin/aws\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1QPXY+UpXGptsLiJlFOnNmksaSn8=\nR:qemu.sh\na:0:0:444\nZ:Q1v2QnYIp8JKFJdpkYR8BTOQbcp6c=\nR:start-installer.sh\na:0:0:444\nZ:Q1r9K721LwrOeVDBfIDPLenaSTxJk=\nR:start-mutable.sh\na:0:0:444\nZ:Q1MdB44zzRronoRLBNGvHELON5P6s=\nR:start-snapshot.sh\na:0:0:444\nZ:Q14h9OEJjcZhLrXReUL47xCLdCyFo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/darwin/macstadium\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1gZTa4g58E8nwVMh2FjVOlaqNC2g=\nR:vmware-notes.md\na:0:0:444\nZ:Q1VJNQWQ3l4JB4fR3dH44PwDIUPlI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/darwin/macstadium/10_11\nM:0:0:555\nR:Makefile\na:0:0:444\nZ:Q1U5tT9HKkReiKnFif3b2orsOP+vg=\nR:stage0.sh\na:0:0:444\nZ:Q1SuJpUATe9nZGckPLOXx8QoKxHz0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/dragonfly-amd64\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1/4HdYlaWqX1Fdd2KcDuIxAt/wYE=\nR:Makefile\na:0:0:444\nZ:Q1nqvzK7lfgeuZu9GnF6mjPEE3/CA=\nR:README\na:0:0:444\nZ:Q1vhnQ8xuZOtVoQG2Kc7o+HocdSqw=\nR:buildlet\na:0:0:444\nZ:Q10CZYka5Oqma17f6eFaAk1WJrs3U=\nR:phase1.sh\na:0:0:444\nZ:Q1XU5da87qX20i14MFKxF5or7UDuc=\nR:phase2.sh\na:0:0:444\nZ:Q1E7D5tjyoRq9PETrZO6uLy7sSR4Y=\nR:phase3.sh\na:0:0:444\nZ:Q1BUlc1TSDuOmRern1U8dvuXFzWmU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/freebsd-amd64\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1FyCETrDKLwTsgtDKel2rr0/Swfw=\nR:Makefile\na:0:0:444\nZ:Q1OYuvNN1G+vIj96abiF9YvZ5znuQ=\nR:README\na:0:0:444\nZ:Q16363uUj6O6oUa9jI2nDpfn8e4Bw=\nR:buildlet\na:0:0:444\nZ:Q1jsHdvwrvZurxTpoIgOA6jtd5xVw=\nR:loader.conf\na:0:0:444\nZ:Q1vBMzRWIKu59qQMsFooEJzZZdq6s=\nR:make.bash\na:0:0:444\nZ:Q1ZqA1KvV97YPlukJJZ4dXD1MAEe0=\nR:rc.conf\na:0:0:444\nZ:Q173kn+qTaRMNb4BA8Od46cgXD2ig=\nR:sysctl.conf\na:0:0:444\nZ:Q1DDd6yK2uAfeAt5YS8yrH7qi0K9Q=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/js-wasm\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1EcbdYUpsXrNlf6S9fUdxg+nDeBE=\nR:Makefile\na:0:0:444\nZ:Q1tvjOEtejk6I478RoMHXkpOLVW9A=\nR:setup_14.x\na:0:0:444\nZ:Q1ESNZWWMVz4KlvrKvIa7Q6oiTOIc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-arm\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-arm/aws\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1LAu3L/R8Ng2SoXNEmFA43duOg48=\nR:Makefile\na:0:0:444\nZ:Q1V+jqiIhPFya4JuOqE+mLZtjLX9Q=\nR:README.md\na:0:0:444\nZ:Q10bFBugwgY6LgxDgT9UWpi/tATOY=\nR:containerd.service\na:0:0:444\nZ:Q1agCxbrO1oNoAZfP2oGnWWkZMV+4=\nR:packer_image_aws_arm.json\na:0:0:444\nZ:Q11oZxQNRT3GJJHcAkemSHlKQBCPM=\nR:prepare_image.sh\na:0:0:444\nZ:Q1cAfDTJYhQfIfDBhiIUPpHKbhlYQ=\nR:rundockerbuildlet.service\na:0:0:444\nZ:Q1psaFKGHaWnJThZwNj4761cyY2QI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-arm-qemu\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1W6cRqgnANikB7A66YtNWwsjbR/U=\nR:Makefile\na:0:0:444\nZ:Q1khOgUlNcuwoMENdKBWTJHR/uU3c=\nR:buildlet-qemu\na:0:0:444\nZ:Q11n5mreM5ubMqO/43XAdgWw7+LHM=\nR:buildlet.service\na:0:0:444\nZ:Q1Hqd2XYg8tIKJDmTtwbqJl9QFkJo=\nR:kernel_config\na:0:0:444\nZ:Q1dPKgRTzIY1kns5aD1hJJpjVnJL8=\nR:qemu.service\na:0:0:444\nZ:Q1dem8DRmxYkLw005FlhOPiPdUyeM=\nR:stage2\na:0:0:444\nZ:Q1IdXFohtMQ9msATUco9dVKPW7vbc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-arm64\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1vI4kPJZZwh/iptVcgWBe5gqcfJA=\nR:build.sh\na:0:0:444\nZ:Q1G5B0iFEvSutp6Jpek87aZd2D38w=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-arm64/aws\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1DCr428+u8JaCW2byi2IWsQvVT30=\nR:Makefile\na:0:0:444\nZ:Q1eI2bK4UMvX1nrzJEaIWDPhaRsRU=\nR:README.md\na:0:0:444\nZ:Q12hmTvjSUmQ7lMOLw9ilsXha+33U=\nR:packer_image_aws_arm64.json\na:0:0:444\nZ:Q1Vg4fnDZwcoh6QHljNvhDcq6YRgM=\nR:prepare_image.sh\na:0:0:444\nZ:Q1Uv4f5GP4Cg5jL2aLxPoqtO7sM6I=\nR:rundockerbuildlet.service\na:0:0:444\nZ:Q1BTihmHNEai8ylECNtYhDtUdJHfE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-ppc64\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-ppc64/osuosl\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q17fCkEEiTvDkFgdNPCmWV8+chBPY=\nR:NOTES\na:0:0:444\nZ:Q1M4AcoZVEj8CujBkxvPt1nnw1GT8=\nR:build-docker.sh\na:0:0:444\nZ:Q1ZQgwQigZopS3RsYphKPX9jfnAWs=\nR:build-golang.sh\na:0:0:444\nZ:Q15sjqGHfa6NEsDMuFuMCsmNC3+oU=\nR:build-ubuntu.sh\na:0:0:444\nZ:Q1dlPeIzuw+Z3iwzP1RRX2UXzglI8=\nR:clean.sh\na:0:0:444\nZ:Q12D4pLI9BsSp+s3nNVCNDKyJ+0B4=\nR:containerd.patch\na:0:0:444\nZ:Q1a0ES04vL6MX7oQjmCGrULWV0nNw=\nR:docker.service\na:0:0:444\nZ:Q1lPjFa6hkTDo9AK4bf8m+h5ZvhYk=\nR:rundockerbuildlet.service\na:0:0:444\nZ:Q1crK673/aUjP8Nqfurdw3IQGC5Zg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-ppc64le\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-ppc64le/osuosl\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1Gn1xnPfIZJcWUALd5t0iXIUZ+Kk=\nR:Dockerfile\na:0:0:444\nZ:Q1D8p9L3z2Nc7mXhUA+Y9CNoaKXcw=\nR:Makefile\na:0:0:444\nZ:Q1+oxyzp1Sy3StY9IqpPBFdeqeUZA=\nR:NOTES\na:0:0:444\nZ:Q1rFGDFmI6y6jxdsfbvYjcTiNP11U=\nR:install-buildlet.bash\na:0:0:444\nZ:Q19vl4EpytJBC4hY37uAqvXWJAoGI=\nR:install-docker.bash\na:0:0:444\nZ:Q1a3+2t77HRmaGcCJ0UBqb4koqQi8=\nR:rundockerbuildlet.service\na:0:0:444\nZ:Q1JTHs1vNc9I9K8klz/jMO7wPleAU=\nR:setup-remote.sh\na:0:0:444\nZ:Q1lvyzukZPW6IEudDaf5Zw+06GFsA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-alpine\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1cYaPE6FORg2B7zjYr19nyz5b57U=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-bullseye\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q15CkN7DjpfyBrah1F7jZbPF3YDSY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-buster\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1IRhQkk6J1laeCKJngAJEKERb77E=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-clang\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1aJHDMMSi0VeduYOo2y/z4+hdoLw=\nR:llvm-snapshot.gpg.key\na:0:0:444\nZ:Q1T9S/1BXPRoGPbaYYvbbe0G1NrGE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-clang/sources\nM:0:0:555\nR:clang-deps.list\na:0:0:444\nZ:Q1LtGlrVlV6ttocw6QKL/8YnoJRgU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-debug\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1vhmMivvuzzKe98tljF2MbqWKRIM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-fedora\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q11aBCOW1jLfAkGV/VhcRGz1w8MOM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-sid\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1JqBjTV5DbbvwG8TDUTaOBo2nKic=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-stretch\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1d7fr81NKBrkUknHOLFEko9kBx9E=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/linux-x86-vmx\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1f+JRBz1Q5dVHZkBg0jCurm/bT/k=\nR:create.sh\na:0:0:444\nZ:Q17Rfu8u6Dx94M2hdtwaup2CiShh4=\nR:prep-vm.sh\na:0:0:444\nZ:Q1cC3SP6KusC8xC4hpc0VBN64wWRk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/netbsd-386\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1OO0crgyeP1YNehltK+Yg6d/OIBk=\nR:Makefile\na:0:0:444\nZ:Q1W7t5zdpP3CtfDwQs1M/AWMXzzeU=\nR:anita-2.3.tar.gz.sha1\na:0:0:444\nZ:Q1RvWMYDbia9Pxem74tD/GPOgznCA=\nR:make.bash\na:0:0:444\nZ:Q1pq14P0+n6l9pt6XxplsjtM+TZnM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/netbsd-amd64\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1OO0crgyeP1YNehltK+Yg6d/OIBk=\nR:Makefile\na:0:0:444\nZ:Q1+aihds7lKYKLzsSTctoEUxe2L1A=\nR:anita-2.3.tar.gz.sha1\na:0:0:444\nZ:Q1RvWMYDbia9Pxem74tD/GPOgznCA=\nR:make.bash\na:0:0:444\nZ:Q1hDlbSvo6CK8qFbeThyFH9bu1ctA=\nR:mkvm.py\na:0:0:444\nZ:Q1iAie2jCxlMEWiKNyAjPWXu5w0oc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/openbsd-386\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1/PR83BSjj9N5jf5q9pN6gCk8ckc=\nR:README\na:0:0:444\nZ:Q1o1pBmnACopXIz4HtQdB7e0erBlI=\nR:make.bash\na:0:0:444\nZ:Q17RiMQpv28SaV3xX6dD3PdTzV+Jg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/openbsd-amd64\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1/PR83BSjj9N5jf5q9pN6gCk8ckc=\nR:README\na:0:0:444\nZ:Q1Uy0jHzmBsfallEbgiZAUOTSehUs=\nR:make.bash\na:0:0:444\nZ:Q1fwHU6ZYY5xpD41VTISCrQWOwLmU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/plan9\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1bStIHeHrxXQUBoninSJ2evEMc8g=\nR:README\na:0:0:444\nZ:Q1VdXWHFATe/ftGeC0tTiIbvtbz1w=\nR:make.bash\na:0:0:444\nZ:Q1xpSeU/+3zMEG1ZI6sFtc0l1iiYU=\nR:plan9-gce.iso.sha1\na:0:0:444\nZ:Q1v9WpHnMehcpsFmoH+Nvi9m0Tg+k=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/shared-makefile\nM:0:0:555\nR:Makefile\na:0:0:444\nZ:Q1DIx5EMFV9yqOuZ5a1Xsiw8lFtew=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/windows\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1NXHZ7h5jobEzmDCtTJg6gbVksz8=\nR:README.md\na:0:0:444\nZ:Q1zLP8tAawZCBhrfCj6iBZ9w+C9xI=\nR:build.bash\na:0:0:444\nZ:Q1eQJChJTK30IGzMCJC/IS8ICF+O0=\nR:make.bash\na:0:0:444\nZ:Q1AopiSnTTIK3ZFls6R8OJrxXvzH8=\nR:rdp.bash\na:0:0:444\nZ:Q1sGghPrTPsZ4XUHGd09Ex7JebYok=\nR:ssh.bash\na:0:0:444\nZ:Q1LTpYKsYRUkTh0gk+kEnbIoNepB0=\nR:startup.ps1\na:0:0:444\nZ:Q1dHyfquYkHnN0fRdJXKPWCTklR90=\nR:test_buildlet.bash\na:0:0:444\nZ:Q1vVjbAOyhHSFOBn6Ysq9DGY4+fnU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/windows/old\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1CPilQuGaB2P7R2t80s0mra+HHJQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/windows-arm64\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1QFYcrNwhl+9+e4cTyG87GqtSfZA=\nR:startup.ps1\na:0:0:444\nZ:Q1EemHPS8fShyqZmf20q9sCv5SvWg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/windows-arm64/aws\nM:0:0:555\nR:Makefile\na:0:0:444\nZ:Q10fb7XHAh8LVbg8t5arueTOO6giA=\nR:README.md\na:0:0:444\nZ:Q1Ven5CSjlrengWf/dPOIYXNpOZ6g=\nR:packer_image_aws_arm64.json\na:0:0:444\nZ:Q161ZB5HhDpmuONkdmEt+OQR5tIKM=\nR:prepare_image.sh\na:0:0:444\nZ:Q1428a6O4nPV8T9DokUeb+aswafPM=\nR:qemu.service\na:0:0:444\nZ:Q1eLXpIMezL1kpV7PxgSofhfpNXhQ=\nR:win10-arm64.sh\na:0:0:444\nZ:Q1GRpeTXRkkQ9XpVbh+Gj1c7FG9QA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/env/windows-arm64/macstadium\nM:0:0:555\nR:image-setup-notes.txt\na:0:0:444\nZ:Q1AvGcUD5UeZVXj7dLvHF7BN8A5yQ=\nR:winloop.sh\na:0:0:444\nZ:Q1Jw9TAi8mF4P9VkPm0CQ/b1c5TIQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/gerrit\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1K6NtdcT8c/kYz8CoKp6v+/7/xj8=\nR:auth.go\na:0:0:444\nZ:Q15OfLUu32qwKOPj+Wl+7nuR3Uq7M=\nR:auth_test.go\na:0:0:444\nZ:Q18Ws7zvTGDqszdej0cCW8LYHXyIM=\nR:demo.go\na:0:0:444\nZ:Q10QkcMYX9La30f2bamkA4tmCnPY4=\nR:example_test.go\na:0:0:444\nZ:Q1rSZ5OQVL4EMmSR3lrtuHVhdxkCo=\nR:gerrit.go\na:0:0:444\nZ:Q1LFp/o1jBm6c0I/+3VqweYyd/NYI=\nR:gerrit_test.go\na:0:0:444\nZ:Q1QpxG/XcHJ5hbxMVSmsOqLANZueE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/influx\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1UIrGSz/YSASEXKvw0RIq5jnHT/c=\nR:Makefile\na:0:0:444\nZ:Q1NHDWNkg4KFZ1vKgFZzCTw5YCXhM=\nR:README.md\na:0:0:444\nZ:Q1bCLvDIhaGWr3vuZkl2CfaxP0CpE=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1RA17NyCjuOgC37morcBnzTsGEcs=\nR:main.go\na:0:0:444\nZ:Q1TDAJQQNAK0lLREvEB/Wbch6w6/Q=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1v6SVpt8rXY0I6ISG9Wq3mMI7Cwk=\nR:internal_test.go\na:0:0:444\nZ:Q1v2PPh8cJLwiZ83jz82J9KIAOlVY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/access\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q134zizkN8YgOKKHCwXfQPii2Fvhs=\nR:access.go\na:0:0:444\nZ:Q1mYtpLeP8OLkdpcBoc2CxF21iM9A=\nR:access_test.go\na:0:0:444\nZ:Q1Lc3/LXW8Kwr1kOo891j+9LLS7Lc=\nR:doc.go\na:0:0:444\nZ:Q1VJ4YL3gri2B2dCNlu40Cb04nbXk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/basedir\nM:0:0:555\nR:basedir.go\na:0:0:444\nZ:Q16oOHhHu/XCONShWh67MN9CWPRE4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/buildgo\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1CwfJZubugPNj0/4K+aLJZsU47pM=\nR:basepin.go\na:0:0:444\nZ:Q10p+1bxsRrv7oNhnzjk0SRPsI28c=\nR:buildgo.go\na:0:0:444\nZ:Q1+YAI1Pp0f01YNmGf+oKXaXgemqE=\nR:client.go\na:0:0:444\nZ:Q1zVhz4ouCxN/upQloeE2Nl24eBq8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/buildstats\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1uWaszQWVUHf/7XrtvDb+JKqRhKw=\nR:buildstats.go\na:0:0:444\nZ:Q1L1izTEn4mzbA8bXWUtzy1htM+OY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/cloud\nM:0:0:555\nR:aws.go\na:0:0:444\nZ:Q1LUgan+2r5mtf4NN4jfHYjq8eQ8I=\nR:aws_interceptor.go\na:0:0:444\nZ:Q1+JQBbkxsMm9PkcXTwR75KTNZzNs=\nR:aws_interceptor_test.go\na:0:0:444\nZ:Q1n8cjMhWbgerKyWa358+4J+HvdC0=\nR:aws_test.go\na:0:0:444\nZ:Q1UEaduWCb6DwDpr3XPmjmZ3CtCns=\nR:fake_aws.go\na:0:0:444\nZ:Q17Gt1mduA4tGrivehnwrbeYWB8zs=\nR:fake_aws_test.go\na:0:0:444\nZ:Q1dgedWw/OpMSFcJtx/O9Ts8MDFAg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/coordinator\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/coordinator/pool\nM:0:0:555\nR:ec2.go\na:0:0:444\nZ:Q1Umejy07V+pnCLWQ0gBPZCst2uc8=\nR:ec2_test.go\na:0:0:444\nZ:Q1+yPPZtp+Q2ii6A/YbetpuHhgiGo=\nR:gce.go\na:0:0:444\nZ:Q14p9vtMCpxR7gzMPdjq+WSyLUUdk=\nR:ledger.go\na:0:0:444\nZ:Q1jsegK7VPP0nZGgSVmXRrNbOAftU=\nR:ledger_test.go\na:0:0:444\nZ:Q1HLUSvm9ipMqp5fVjZltUZZumdas=\nR:log.go\na:0:0:444\nZ:Q1qhlYsmenzlmM0mgox+Y4mw1cBgs=\nR:pool.go\na:0:0:444\nZ:Q1TJ0RhskKW9mx47J0ktOD7EaqNgo=\nR:pool_test.go\na:0:0:444\nZ:Q1wTFDuSYhPumvsOHe9lZghsEIUSY=\nR:reverse.go\na:0:0:444\nZ:Q1NiGLeCcqFrMdrDSKarTZ68RCqRo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/coordinator/pool/queue\nM:0:0:555\nR:item.go\na:0:0:444\nZ:Q1TLIKtULYZ/5M3G7PZjzrZYW1SHc=\nR:item_test.go\na:0:0:444\nZ:Q1YBR3If23cq5Sg4By5xaolWNSWf8=\nR:quota.go\na:0:0:444\nZ:Q1PAWN7gR6/xmemL0jb6Mw61mizig=\nR:quota_test.go\na:0:0:444\nZ:Q132MBvptsM4rA2lT6FSh62IWLVww=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/coordinator/remote\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1qHbpO8ZED81jEpMUCmyTWjjWi6U=\nR:doc.go\na:0:0:444\nZ:Q1rk/yHDDX+IMH8C4sr2pH8KjWRuY=\nR:legacy.go\na:0:0:444\nZ:Q11+roZtTmphLFZXBrwzYG3xLFGgY=\nR:remote.go\na:0:0:444\nZ:Q1PR/J2XYh295iCuVoRexVXK3a8tc=\nR:remote_test.go\na:0:0:444\nZ:Q1kN4MK/vIAq2NWCQ5uinI+mzekNw=\nR:ssh.go\na:0:0:444\nZ:Q1mcrvDjNG7RMKbdSZ1cy6e/Qy1tk=\nR:ssh_test.go\na:0:0:444\nZ:Q1ULM+swFxAmED/yM+WHRFblaNJv8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/coordinator/schedule\nM:0:0:555\nR:fake_schedule.go\na:0:0:444\nZ:Q1x+d1wiqUc8gcWp5pmcKjymVolQA=\nR:schedule.go\na:0:0:444\nZ:Q1IMpAxHTGM9yGMzBFz4cL9J6yVCM=\nR:schedule_test.go\na:0:0:444\nZ:Q10kvie0cJcT/dhhs6qdE6PqOrMCE=\nR:span.go\na:0:0:444\nZ:Q1DtCiesVSGILW0tYa7pxoe2AANWA=\nR:span_test.go\na:0:0:444\nZ:Q1Mbt6johO1GDUt5dQLCKSAkKG2xE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/datastore\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/datastore/fake\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1sZMnbHQKH4n6e/e4tu6w9XBtVvE=\nR:client.go\na:0:0:444\nZ:Q1VXicVeNYw9AAu9MjU7Zn8dNNvnI=\nR:client_test.go\na:0:0:444\nZ:Q1MXai16OTWBF7KdWWnaaPpb38E4Q=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/diff\nM:0:0:555\nR:diff.go\na:0:0:444\nZ:Q1auhyV9iBh6C+qFtWb65eh2uwoTc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/envutil\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1LVgjlQqsLjzYZzdA4A3xDuTk8oo=\nR:envutil.go\na:0:0:444\nZ:Q1eIskpejdwKrkrMqyLWT9igIbxvI=\nR:envutil_test.go\na:0:0:444\nZ:Q1co0yEjVDT8MC6rpL6BHCfSNXRrk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/foreach\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1i1FP7umP9HutZAL6SvYsfyd3CI8=\nR:foreach.go\na:0:0:444\nZ:Q1zv7dO2dER4W5ericLr/y8ShDto4=\nR:foreach_test.go\na:0:0:444\nZ:Q1tL1WvgupEfptsunKFG4z5fly2OU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gcsfs\nM:0:0:555\nR:gcsfs.go\na:0:0:444\nZ:Q13cCW/y2R4yyDNVy/+hxP+m/JdEQ=\nR:gcsfs_test.go\na:0:0:444\nZ:Q1ldYGEVUAgbDZPVOB1pV734iG9ic=\nR:osfs.go\na:0:0:444\nZ:Q1eu3q/AjB+kcV7kwym0rwGSIsH2I=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gcsfs/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gcsfs/testdata/dirfs\nM:0:0:555\nR:a\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:b\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gcsfs/testdata/dirfs/dir\nM:0:0:555\nR:x\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gitauth\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1wMjD2OBzj966EXCtO/xDedy3J68=\nR:gitauth.go\na:0:0:444\nZ:Q12IfLjupX6hdPJZ44VvNSjKQTDUo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gomote\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1UBrraQv0+gQq7qEF4sjvN1F8Nbk=\nR:doc.go\na:0:0:444\nZ:Q1f4/Y0mZMhsqUfK5dxRCBqhSPZ+E=\nR:gomote.go\na:0:0:444\nZ:Q1lW+gp0L2T9fMtPzveAxky73zjZE=\nR:gomote_test.go\na:0:0:444\nZ:Q1DzxLuDRU9TLlZzKZ1nUEuLBAYUY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gomote/protos\nM:0:0:555\nR:gomote.pb.go\na:0:0:444\nZ:Q1LAaE41+Btar9ohNnWC7xT38Ynxk=\nR:gomote.proto\na:0:0:444\nZ:Q1Cwu/npWI8SD/Ck07GoFUWFH0OW4=\nR:gomote_grpc.pb.go\na:0:0:444\nZ:Q1thNQ9ujglf642W9WemKMQ7bbZiU=\nR:protos.go\na:0:0:444\nZ:Q1bqFPXP6yFFw3ME+1TpKR6PwRYps=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/gophers\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1i0Whsqk2Klds0szX3aV/2yCbHng=\nR:gophers.go\na:0:0:444\nZ:Q11OCcZh/zHNn9TlK7+AEy1Y51NUc=\nR:gophers_test.go\na:0:0:444\nZ:Q16Len5Bq0kQVqf9OBW1DUbHCA8+A=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/httpdl\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1J+c9logVXXWEjfE8X+wgnrclfac=\nR:httpdl.go\na:0:0:444\nZ:Q1n+oZAV76jpVfHNJsg9vZ/qv00zo=\nR:httpdl_test.go\na:0:0:444\nZ:Q1SCiv6X6QvdZyn8clbDoUt/0QBlg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/https\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q15Sw94hxmASw9IZfNu347isqWicI=\nR:https.go\na:0:0:444\nZ:Q1BzdVapRCmmh7eKbEHeUAqFik9Nc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/iapclient\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1m19woakLtkSpmoaEJs9q15TJ1lo=\nR:iapclient.go\na:0:0:444\nZ:Q1HYH+LUkTNqwM84UoOlKszHNLbMw=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/influx\nM:0:0:555\nR:influx.go\na:0:0:444\nZ:Q1j0ERDqe6SpM1Z248CoEPsi/LFA4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/loghash\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1NyD+SNfHAxL4plusLOpMYpg7gSE=\nR:loghash.go\na:0:0:444\nZ:Q1NZxZQrtW44rNTA0RMySlpSaI9yo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/lru\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q19bKc3vnPhRRacFYVMk883fCg1/A=\nR:cache.go\na:0:0:444\nZ:Q1/5XzCKGpsAB6dcSbqHe56I2V57s=\nR:cache_test.go\na:0:0:444\nZ:Q1X4k1A+2qALfZnzj0EAOnglHnlyI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/metrics\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1pvdHtESrTPX0raE6xoGQlYVRmV8=\nR:metrics.go\na:0:0:444\nZ:Q1ZX+7jyQfSlDcIHhCWyoBegEVTV0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/releasetargets\nM:0:0:555\nR:releases.txt\na:0:0:444\nZ:Q1IY5kK5xrTrQSBWKYfJwaIAeGsuY=\nR:releasetargets.go\na:0:0:444\nZ:Q1oTWRUf+5fjfekg3Tg4eaA+7x9RY=\nR:releasetargets_test.go\na:0:0:444\nZ:Q1VKNzFjE3DHeBm12KDTJCqjdoy70=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui\nM:0:0:555\nR:buildrelease_test.go\na:0:0:444\nZ:Q1P5VHhDUxGPiws1T6Fi65DlR7CAw=\nR:content.go\na:0:0:444\nZ:Q1TMebs87eMjg3CesMQum7j/NdFW0=\nR:listener.go\na:0:0:444\nZ:Q1yaQbFphQScIb78q1tMEpXcVQ24c=\nR:listener_test.go\na:0:0:444\nZ:Q18+F9IgjzbslNpvDAUtViCaIGvds=\nR:metrics.go\na:0:0:444\nZ:Q1dld9797nuS/cV0K2mqulNteSiTM=\nR:metrics_test.go\na:0:0:444\nZ:Q1zKTW1F/QkHsFvRDwGkkD8fN09hE=\nR:schedule.go\na:0:0:444\nZ:Q1H9ih6Jnz1S+XmCAs7CsEPKkiYls=\nR:schedule_test.go\na:0:0:444\nZ:Q1HB1xqgb8zj9p9egDeL/Heb+e7PM=\nR:store.go\na:0:0:444\nZ:Q1yI8UcuBaJM0cbTRL80aCDxTpAb8=\nR:store_test.go\na:0:0:444\nZ:Q1N1PlkG0QLDtjkbjJGWioNwPYfho=\nR:web.go\na:0:0:444\nZ:Q1KmNRBmZPjOWvN1spir3WPhczOmk=\nR:web_test.go\na:0:0:444\nZ:Q1qLKDcK9PDuzBuQzC4SJcY/oCk2k=\nR:worker.go\na:0:0:444\nZ:Q1HMXKHj330FUXKNmw9mfIrr5M6TM=\nR:worker_test.go\na:0:0:444\nZ:Q1WVgw4qroJghZ3A8wZHajGbmeDZ8=\nR:workflows.go\na:0:0:444\nZ:Q1rTyHI1X9OQChRVbe+2fdcc1hVO4=\nR:workflows_test.go\na:0:0:444\nZ:Q1294CHwCBpuMcx9F6TZUEBhkqYdY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/db\nM:0:0:555\nR:db.go\na:0:0:444\nZ:Q147wgkeyeqXZaMeJs8qz9zPxPNIk=\nR:models.go\na:0:0:444\nZ:Q1VCyuR9zhFTudv2hJK5/g7HHpfig=\nR:pgdbtx.go\na:0:0:444\nZ:Q1GRfnS2EHhCq5DVbcuqEsBd/+Z1k=\nR:workflows.sql.go\na:0:0:444\nZ:Q1s+51wGjSEIxwwKTwXf11jdjFFVE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/migrations\nM:0:0:555\nR:20210909141405_create_workflows_table.down.sql\na:0:0:444\nZ:Q1TfVt1u1lFZjfMIzVbvYa+jZidJ4=\nR:20210909141405_create_workflows_table.up.sql\na:0:0:444\nZ:Q1WmqrgsgD9lOWaiXNlowJGXV6X7Q=\nR:20210928195553_create_task_logs_table.down.sql\na:0:0:444\nZ:Q13+43TNI3790OCYa70y17Y4qYfc0=\nR:20210928195553_create_task_logs_table.up.sql\na:0:0:444\nZ:Q19FjXhKlgll+y5YA4t5UzSCaEifs=\nR:20211005180646_update_workflows_add_finished.down.sql\na:0:0:444\nZ:Q1nQic8IfxeZtifM6oFZMV9c/Bgh0=\nR:20211005180646_update_workflows_add_finished.up.sql\na:0:0:444\nZ:Q1rT/XLNEOGe0czy/BGTRj3dFiuTA=\nR:20220609175710_remove_corrupt_workflow.down.sql\na:0:0:444\nZ:Q1kXEP0XdBQkUaLdUcydme7rCHMX8=\nR:20220609175710_remove_corrupt_workflow.up.sql\na:0:0:444\nZ:Q1pbHBc3K2tqDFvMbHDbe4peGb2ww=\nR:20220621201140_add_approved_at_to_tasks.down.sql\na:0:0:444\nZ:Q1qSmWJIXRNY0XPPpejYdu9L34W2Q=\nR:20220621201140_add_approved_at_to_tasks.up.sql\na:0:0:444\nZ:Q1wfWBA9noNvXpE/cCasSKZyiuZEI=\nR:20220622151222_add_ready_for_approval_to_tasks.down.sql\na:0:0:444\nZ:Q1uVZTm+ULNp0rYO+y2W3VTA7/gjA=\nR:20220622151222_add_ready_for_approval_to_tasks.up.sql\na:0:0:444\nZ:Q1lSR/pWV0ECBDVAKN/PCmun/wLvU=\nR:20220712205734_add_started_to_tasks.down.sql\na:0:0:444\nZ:Q162v70GQh1dqt9qccnfxLXJ6JlfM=\nR:20220712205734_add_started_to_tasks.up.sql\na:0:0:444\nZ:Q13ti6KdC0geql/EmKONFQ1f1kxtw=\nR:20220715183205_add_retry_count.down.sql\na:0:0:444\nZ:Q1WW0VyuPcnZuC71V4G5WwXmQqUpU=\nR:20220715183205_add_retry_count.up.sql\na:0:0:444\nZ:Q1iPM8+ETePTC7+8Bm8AWSsTJM5Jg=\nR:20220901160804_create_schedules.down.sql\na:0:0:444\nZ:Q1y+A/TdiNDg1H/lywTdbRwQz8gRQ=\nR:20220901160804_create_schedules.up.sql\na:0:0:444\nZ:Q18KvOagdbqxGMXrJtRUtl+6s5Dqg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/protos\nM:0:0:555\nR:proto.go\na:0:0:444\nZ:Q1mANbeEAh7xk9zYeL3FQ96hEraU8=\nR:relui.pb.go\na:0:0:444\nZ:Q1h+9gQMJziRaa6m9N6MkO+7tlnKw=\nR:relui.proto\na:0:0:444\nZ:Q1jkm9p/uM+RvKyOj2SOxv5eAgGBo=\nR:relui_grpc.pb.go\na:0:0:444\nZ:Q1XdMQZYGb0GehPU9iOX8VeXfihKM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/queries\nM:0:0:555\nR:workflows.sql\na:0:0:444\nZ:Q1CNSbMz9mz10mRJp7Js1iQuEDL00=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/sign\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1vUSJiqboeb+rY7rdWFvscIbiZDA=\nR:server.go\na:0:0:444\nZ:Q1cx/yU1VIGkHAEjju4efC7/lQZ5U=\nR:server_test.go\na:0:0:444\nZ:Q17EUEamL09f6do+1cb0zQFc0J66U=\nR:sign.go\na:0:0:444\nZ:Q1vdA5QoANvt52rt2puqA7Ds9+NJY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/static\nM:0:0:555\nR:site.js\na:0:0:444\nZ:Q1pbxBBnuQNoGQf2bVXwn+OSran48=\nR:styles.css\na:0:0:444\nZ:Q1SpJDuf2ksK9x+zW+V88Bbi2EWNE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/static/images\nM:0:0:555\nR:check_circle_green_24dp.svg\na:0:0:444\nZ:Q1eoowN6oNRzH2tDiCqpeUVcy7Jlo=\nR:chevron_right_black_24dp.svg\na:0:0:444\nZ:Q1wnvzUyQ2ksuDL3QXPxzrqKgTKrU=\nR:error_red_24dp.svg\na:0:0:444\nZ:Q19pO9fgQNaHkumvUY+b0xTiT3q34=\nR:expand_more_black_24dp.svg\na:0:0:444\nZ:Q14YhFaFMiicS9XxDDDcNcUrKhymY=\nR:pending_grey_24dp.svg\na:0:0:444\nZ:Q1DILNyd4ugQ8AwldPR+L8mh04YC0=\nR:pending_yellow_24dp.svg\na:0:0:444\nZ:Q18aU8lLgQGfstGOQuqJM0JVsJg5k=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/templates\nM:0:0:555\nR:home.html\na:0:0:444\nZ:Q1jKidJ74aeN8fF0ZDNHbBoc5K99I=\nR:layout.html\na:0:0:444\nZ:Q1NTkaBIx4r9YJtombOov7QpaUllc=\nR:new_workflow.html\na:0:0:444\nZ:Q1SWqgHBd+eqELkAGi3APulK/VCbs=\nR:show_workflow.html\na:0:0:444\nZ:Q1ojo9NrS8QPDdl0qwBuHu1hme3OA=\nR:task_list.html\na:0:0:444\nZ:Q1pluLI/LnxrmiKjna+/jjUZGxO0E=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/relui/testing\nM:0:0:555\nR:test.css\na:0:0:444\nZ:Q1Phuobws+BkfR9wvJ37JWbSsr7+U=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/secret\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1fATJbA0myIuA9RV6bXeCFb//GvE=\nR:flag.go\na:0:0:444\nZ:Q1UeBhaukpnUsHw3TtJo4EaD0oiZ8=\nR:gcp_secret_manager.go\na:0:0:444\nZ:Q1S7Wq95ZX5IwpySqBi4M4d1E6MPI=\nR:gcp_secret_manager_test.go\na:0:0:444\nZ:Q1+LAEGb+1KGRo/W98B7KIvKjNy78=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/singleflight\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Sowqoecogm6liI2a/xOjW33BvmE=\nR:singleflight.go\na:0:0:444\nZ:Q1yMF6LHyC0zgHHy7YCuNlLy545bk=\nR:singleflight_test.go\na:0:0:444\nZ:Q128Fhc8unXUEbOXyHJxnDjIchTLE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/sourcecache\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Cj2c01R1HJ+whpkGG5MpspT2JJQ=\nR:source.go\na:0:0:444\nZ:Q1FxUy+XMMHZdrmhDKdJoYUaDAC4g=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/spanlog\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1K0wtUdT9ffTI0whGXAOmrS7B60c=\nR:spanlog.go\na:0:0:444\nZ:Q1MuBMmdL2p6FahqfI4WXwhffGnXY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/task\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1PtzSMNQUTdejTYZOsnGdcf3YyeM=\nR:announce.go\na:0:0:444\nZ:Q1oVvc3LwW/BGQGE4Q/MVzU+Ry6xo=\nR:announce_test.go\na:0:0:444\nZ:Q1T/+Opkj9H6N8b8ULbQbyvGvTn7Y=\nR:buildrelease.go\na:0:0:444\nZ:Q1tS3a7AvXk8KTJnHND3BIM8yiNh0=\nR:buildrelease_test.go\na:0:0:444\nZ:Q1EUCXQZmdu+SLimUIzTDYuNwyUTg=\nR:dlcl.go\na:0:0:444\nZ:Q1ZkOiQ0dxE+6qG6fRpt/l71hNWMs=\nR:dlcl_test.go\na:0:0:444\nZ:Q1JyYp9G//iruIXSt9nVBm10JGzAU=\nR:fakes.go\na:0:0:444\nZ:Q1Z9svok33Nie9BkynYXyFZ4s26rs=\nR:gerrit.go\na:0:0:444\nZ:Q1X4d5d48XIGaaRAsQ4XvyS3ZpcEY=\nR:gerrit_test.go\na:0:0:444\nZ:Q14Q8DUKaaXAhXYQlPZfZvN0D7Lq8=\nR:milestones.go\na:0:0:444\nZ:Q1JioFY7pH82vNYwXc4wwWugsoQMg=\nR:milestones_test.go\na:0:0:444\nZ:Q1/AIowaLKJGtIAgDXwuqpfw1l/zI=\nR:tagx.go\na:0:0:444\nZ:Q1xGDQB3rznVFuM8G+m19pN5vLAfo=\nR:tagx_test.go\na:0:0:444\nZ:Q1se3lKrGYZOpPtwVJtteMrmNpuvo=\nR:task.go\na:0:0:444\nZ:Q1fag/bt4g+b3B11iHzt8i7hkG5q8=\nR:tweet.go\na:0:0:444\nZ:Q1+DO3yd2ZgU6R5i2X9Dc24vn5fcI=\nR:tweet_test.go\na:0:0:444\nZ:Q1sysqJ614NOBJlmVSAXOmz9+22Vw=\nR:version.go\na:0:0:444\nZ:Q1x2xKrylwpCZaJtRkWYJSofXhKcM=\nR:version_test.go\na:0:0:444\nZ:Q1s98A2tPB9+Nex6MuDNcnYZ5EnOk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/task/releaselet\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1FRWlasqF7pYbsekRX+Bp74OutYg=\nR:releaselet.go\na:0:0:444\nZ:Q14bhnnwcEsHlDXCd3kLRR9kqSFH8=\nR:releaselet_test.go\na:0:0:444\nZ:Q1e64ly1RRKHyNcg20k7Do7cHkobE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/task/template\nM:0:0:555\nR:announce-beta.md\na:0:0:444\nZ:Q1jCzfdvpUQnpHJGvtJeRYpS4HJGA=\nR:announce-major.md\na:0:0:444\nZ:Q1SI/v5BZuxOHjY9HoiIBwWnXiRDc=\nR:announce-minor.md\na:0:0:444\nZ:Q16E34424FWJ1s9a9C7L6ARFFSTiE=\nR:announce-rc.md\na:0:0:444\nZ:Q1HhUDZLMZoOTHQElHGGre/O9/etI=\nR:pre-announce-minor.md\na:0:0:444\nZ:Q1W/X6uabn0lRdtJ2i8dugHPh7uZ0=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/task/testdata\nM:0:0:555\nR:announce-beta.html\na:0:0:444\nZ:Q1ELiybmlqs9V/X5Df0TlCTWS2Lo0=\nR:announce-beta.txt\na:0:0:444\nZ:Q1zK/6d3BUG8a2UPaQwM/ihpV/IiA=\nR:announce-major.html\na:0:0:444\nZ:Q1aL0ARPeWpyaAFW438q1cy8ieLjY=\nR:announce-major.txt\na:0:0:444\nZ:Q1N1t3vnYpfm+Cbq+Af4LMH+NQSVg=\nR:announce-minor-solo.html\na:0:0:444\nZ:Q1uA2buOKwifAW7ywGLHlblbamB84=\nR:announce-minor-solo.txt\na:0:0:444\nZ:Q1p5J/2JXjuJ2W7VfYF8Mv3CEIo04=\nR:announce-minor-with-security.html\na:0:0:444\nZ:Q1UH04ewDBGG/snpXvg7W5YwqeqjA=\nR:announce-minor-with-security.txt\na:0:0:444\nZ:Q1MSHuJGLIa74WNDXGFLMLvA7jY64=\nR:announce-minor.html\na:0:0:444\nZ:Q1rT3xs8y12ySmy5ZTK07hzb+xfsY=\nR:announce-minor.txt\na:0:0:444\nZ:Q1ny50svNlgsgXo5V5b9WVuCcpNzc=\nR:announce-rc.html\na:0:0:444\nZ:Q1yphKDzSZ3bbr6e/1O3lyKq8C3Qg=\nR:announce-rc.txt\na:0:0:444\nZ:Q14wkBolrpuMV+QmemUYLusgDLzkk=\nR:pre-announce-minor-solo.html\na:0:0:444\nZ:Q1kGiNBWe8Pbev6XjmsMhK/MDwPbY=\nR:pre-announce-minor-solo.txt\na:0:0:444\nZ:Q183wbmEQJ5G5C/Hdhk3AcQ1xRASw=\nR:pre-announce-minor.html\na:0:0:444\nZ:Q1IgDRdd8ogqWR8BMTlaGl9lVV654=\nR:pre-announce-minor.txt\na:0:0:444\nZ:Q1h3Sthgz4aIYPwFBuRqFGcSUpJfU=\nR:terminal.png\na:0:0:444\nZ:Q1qcxiZtLDOEzsq7v7I5aDoTiM4RI=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/untar\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1uz+0ztVUoHxjpQah5+TE6uX3IfA=\nR:untar.go\na:0:0:444\nZ:Q1cK5UlyHn62ZYauHr/iBPEpGIMQA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/internal/workflow\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1mkJ1p5RMpUE+MAWxg+/ky/S5dRg=\nR:workflow.go\na:0:0:444\nZ:Q12ZoUKUIkOfFD532cI/PapSIadQs=\nR:workflow_test.go\na:0:0:444\nZ:Q1qaDH6mh+pce6QncxqgDo/El2gao=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/kubernetes\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1QXPgqveRLQZseWHVXjRZQq9/OF8=\nR:client.go\na:0:0:444\nZ:Q1S98Q4T91fT8PJF8/KSh0eAuP7zY=\nR:client_test.go\na:0:0:444\nZ:Q14+Eqmit94UZxqxfapbsu7W2pg2I=\nR:dialer.go\na:0:0:444\nZ:Q1hkE2SP7TgHolbc4zj0KferlXAtQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/kubernetes/api\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1x9VYRwx1bgx0f5ROWoRcmkyB6ro=\nR:quantity.go\na:0:0:444\nZ:Q1UsSqFRF/ytEqh6xHPevlt5iBoCE=\nR:suffix.go\na:0:0:444\nZ:Q1kGqzNGY6GpXuFe2EU1atssVUS3A=\nR:time.go\na:0:0:444\nZ:Q1onroQqnMxGLAZHuvSKIxB3NsAho=\nR:types.go\na:0:0:444\nZ:Q1u/XxlKv3YdnpdzYGDUN+6a5+Lgc=\nR:util.go\na:0:0:444\nZ:Q1xqVThsjJ7xPk6lNnXLwsUi0W4pQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/kubernetes/gke\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Lh/xnRbX4vBYt6dfiU1xUrsLmI0=\nR:gke.go\na:0:0:444\nZ:Q10rj2NfOSlDXtIVW2lgB3EhdjYpA=\nR:gke_test.go\na:0:0:444\nZ:Q1xF+vxkE4dA8R7N1ZUkuk1eYVuSw=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/livelog\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ZNpgSokFJ28CjXy4OmXMMG59Hv8=\nR:livelog.go\na:0:0:444\nZ:Q1tSYJPNLezsQtEQFVqxWD2VFXa5o=\nR:livelog_test.go\na:0:0:444\nZ:Q1QDHaE/iAfk/IcaH1k1keVBkVYso=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1mnCtDpEnauTYczDB/GFG3Bws3uA=\nR:example_test.go\na:0:0:444\nZ:Q1+SSo/GGEV90bNPIH3SgNxRZBp4k=\nR:gerrit.go\na:0:0:444\nZ:Q1bInOmwGNPJQVNFNRAujOeXPH2nM=\nR:gerrit_test.go\na:0:0:444\nZ:Q1GI848BuBJmIu3xYLh5gzG26idPA=\nR:git.go\na:0:0:444\nZ:Q1H/+f9k8/Z+kh6afw56VRoWcEJFw=\nR:git_test.go\na:0:0:444\nZ:Q18LoAqYzzZDqTMRSXDQZoV+VlkF0=\nR:github.go\na:0:0:444\nZ:Q1hrTg3f58VmsnOe6G+2cSsqTqWJw=\nR:github_test.go\na:0:0:444\nZ:Q1HM3t2qfWkDZfvcq3cp4M+mOcFx0=\nR:logger.go\na:0:0:444\nZ:Q161y08GuVaY0cve+TQEo/YXajcrI=\nR:maintner.go\na:0:0:444\nZ:Q1I3PCvMs9725ans359ZR6sio1rL0=\nR:maintner_test.go\na:0:0:444\nZ:Q1yawoUkkuU/WeyzomDD86ZMnWxb0=\nR:netsource.go\na:0:0:444\nZ:Q1tXGUgNGkt5UsAeybelO10aXVtSQ=\nR:netsource_test.go\na:0:0:444\nZ:Q1Umc7SGqvOr6bLrR1LgunOTbMxF4=\nR:subscribe.go\na:0:0:444\nZ:Q124gtYuiqzPCrrQFkv+r1FUkTD1E=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/godata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1bxKvdGsCTcDnn9EIE234m38GUSI=\nR:example_test.go\na:0:0:444\nZ:Q17DdrwG49sJlI7Fup9jKtwveQIN0=\nR:godata.go\na:0:0:444\nZ:Q1IJSSVw/V+s1XVvcffUMmWpR+vSg=\nR:godata_test.go\na:0:0:444\nZ:Q1seeXwpmbS3QOqduCxihbbUJjg5s=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/internal/robustio\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1TMGVRTsxgxE9TS7oXfeM99WwB9M=\nR:robustio.go\na:0:0:444\nZ:Q1D+o24n1MLZSWoiMf63s/U0G6ybE=\nR:robustio_darwin.go\na:0:0:444\nZ:Q1D8JslZWcfR5Tr/pWabqxPszGRzw=\nR:robustio_flaky.go\na:0:0:444\nZ:Q1XFzo8A2QZ6CXLKLAgQiVG/M5+pI=\nR:robustio_other.go\na:0:0:444\nZ:Q1RODvAaxJpKbG1l4juwhMzWUgqbw=\nR:robustio_windows.go\na:0:0:444\nZ:Q1VddBaEF/1KAjOHrsyzyjsmEGIEg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintnerd\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1FJs2rGvqmhFBQN1IztY/D0iQfhk=\nR:Dockerfile\na:0:0:444\nZ:Q1mjDlK2lxpc2qS4hwJzLgvtj6Byw=\nR:Makefile\na:0:0:444\nZ:Q11ihb9jvs1eKk6EHvZqK5hLoxb1g=\nR:README.md\na:0:0:444\nZ:Q1s+9rnRv3jU/WcCVShhWKXkhQ4j0=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1MdvKf034QS+FiBK6CvX6JxkjNdQ=\nR:maintnerd.go\na:0:0:444\nZ:Q1Yf+V94X7HXo9S3aIgQaKODwmqH8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintnerd/apipb\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1gjDypl2amIFFB55Ym/KQ9PZvnNo=\nR:api.pb.go\na:0:0:444\nZ:Q1DBzL1bIdzVugllhp4UYtkxtXdAo=\nR:api.proto\na:0:0:444\nZ:Q14NuhzGI/eJcb8mgMEyWaDkIZTpU=\nR:api_grpc.pb.go\na:0:0:444\nZ:Q1pkCikxUhBDO3LtemXF7G/CyRZko=\nR:apipb.go\na:0:0:444\nZ:Q1UJzU7DnkdO1MbcanK5hs4rxoRMc=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintnerd/gcslog\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1fFRLIRq7mQ1NAkAlEd3IZRKe88s=\nR:gcslog.go\na:0:0:444\nZ:Q1UDiy9Hnc2UN2hqBuhk9sqh2kUuU=\nR:gcslog_test.go\na:0:0:444\nZ:Q1rkQ6V2De/V64IqkKNe4GTTHH9mA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintnerd/maintapi\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1XI8FmB5L1psaIHKxucvN+ID6Iqk=\nR:api.go\na:0:0:444\nZ:Q1xNqWmv8v06BI+1mgD7qzMi89qJA=\nR:api_test.go\na:0:0:444\nZ:Q169feGglaWMVFIEODMgBxo6PwToQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintnerd/maintapi/version\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q12QbfQEEC6xclP7EvLBjnpKuHcso=\nR:version.go\na:0:0:444\nZ:Q1sMSavLZhxNin0o57l3e2BhiNrSk=\nR:version_test.go\na:0:0:444\nZ:Q1jTM+ixvo4Pd3EkUB6qUxF+Yeiwk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintpb\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1jkF9pWhspgP8jNhjFwmE5jkzOgk=\nR:maintner.pb.go\na:0:0:444\nZ:Q1XSJ3/Ea+aHfWE37db5abpNRjgTg=\nR:maintner.proto\na:0:0:444\nZ:Q13pJ8s9Wg52q/qcFpjnTt1+Ru2ZA=\nR:maintpb.go\na:0:0:444\nZ:Q1GkMhUFxyIRdx+z1+82nIGwJAHtQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintq\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1/3+drgFXuE3LsDsnmlYOYQfQGWo=\nR:maintq.go\na:0:0:444\nZ:Q1Xrj46s0V24p4sHL5PAvizwd3VfE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/maintwatch\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1VQg6VKqCQ2Va3xprSCkP8rH2T9c=\nR:maintwatch.go\na:0:0:444\nZ:Q18oSgb3euYYIuwwq1Wu+na/wO5y4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/reclog\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1AVBY7WWM0lzayuNRkLjXGRFLh7s=\nR:reclog.go\na:0:0:444\nZ:Q14LyXtrbnvmFo/ILgv2fxndvriVM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/maintner/testdata\nM:0:0:555\nR:TestMissingMilestoneEvents.json\na:0:0:444\nZ:Q1iLs/93zGJVTKpgq06P9aS9cTmd4=\nR:TestParseMultipleGithubEvents.json\na:0:0:444\nZ:Q164FZiutarrQZtuZUVlrEpDBAp2M=\nR:TestParseMultipleGithubEvents_p1.json\na:0:0:444\nZ:Q1ThtdpsC97hQ/AXnOeIX4t3aHxCE=\nR:TestParseMultipleGithubEvents_p2.json\na:0:0:444\nZ:Q1Zyl0PHKQ3EvGbb4n9JS9l3AWRdY=\nR:TestParseMultipleGithubEvents_p3.json\na:0:0:444\nZ:Q18sheHvY3snvyrEEkj2aK/IKSlzU=\nR:TestParseMultipleGithubEvents_p4.json\na:0:0:444\nZ:Q1zgQ7ezpyuuEajK4QfvofsgvmRP8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/pargzip\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1nnTi0HxKZoYfaiKFNTS6syraZDo=\nR:pargzip.go\na:0:0:444\nZ:Q1ZIKt08BQ5gM7ZIs3wEwaGO388f0=\nR:pargzip_test.go\na:0:0:444\nZ:Q1yxCQAsVAL+YyFbmkM9HZL/T8eE8=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perf\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1TY1fr2xXxFmZcVpKRk4xgcr0RH4=\nR:Makefile\na:0:0:444\nZ:Q1crZZKK0+j7BCke3ga2WTyMR0H1A=\nR:README.md\na:0:0:444\nZ:Q1PzLhBt5WelR6iIjGPVe2eyDGrYk=\nR:deployment-prod.yaml\na:0:0:444\nZ:Q1HG0A1DPpsLNIWsvDe76y7hMZnGQ=\nR:main.go\na:0:0:444\nZ:Q1JaZyuZqG06jqpmmjNErNW92Z4EY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perf/app\nM:0:0:555\nR:app.go\na:0:0:444\nZ:Q1kmPq1lNyMxXeaGAy5Te8MM8sRvs=\nR:compare.go\na:0:0:444\nZ:Q1ebMYjuGFcYOzO7GGuwFDl82VzKI=\nR:compare_test.go\na:0:0:444\nZ:Q1kN08UainsUTPu55ruiPe4Z2LGA0=\nR:dashboard.go\na:0:0:444\nZ:Q1FHdY8Mk048nC0ZWS5KqNFdjych4=\nR:index.go\na:0:0:444\nZ:Q13tntYQBf/uDYzm+KQFIOmb+8Oyg=\nR:influx.go\na:0:0:444\nZ:Q1HQ6X2P4KWK663UOiI2u99Dzk3xc=\nR:kza.go\na:0:0:444\nZ:Q1ZQqbNCaFlpS854x0/7YNTkIaMLU=\nR:kza_test.go\na:0:0:444\nZ:Q1ktaieyMcwN47HlDlxI7x2AZelzU=\nR:parse.go\na:0:0:444\nZ:Q19XVin5xfS/RgN7OyaJylCJ93Sso=\nR:parse_test.go\na:0:0:444\nZ:Q1OMtyGiaBXexOpDBDLG1Xw15XTVA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perf/app/dashboard\nM:0:0:555\nR:index.html\na:0:0:444\nZ:Q1qCjRel1JysP1hZvEmVovSwlL44M=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perf/app/dashboard/static\nM:0:0:555\nR:style.css\na:0:0:444\nZ:Q1ybtxyV5KyUXEV9T/Nr6rAYQf2/k=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perf/app/template\nM:0:0:555\nR:compare.html\na:0:0:444\nZ:Q1SulpdwpoYFnbmM4/a5MTlalmEfM=\nR:index.html\na:0:0:444\nZ:Q11eZ1JU9A3aPKcdyMBsMvaxanjzk=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1ZdQHQOwAopM+tNNA9l9N5MB4wlE=\nR:client_test.go\na:0:0:444\nZ:Q1gK3EaAGjMEwZajWnGjNPKZ01j6U=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/app\nM:0:0:555\nR:app.go\na:0:0:444\nZ:Q1Egy+cnrrUW1iermBYCNKBwrls88=\nR:appengine.go\na:0:0:444\nZ:Q1b2ZHj/GvD+KPH/t4QtA9mlauzto=\nR:local.go\na:0:0:444\nZ:Q1oRPGeh/Vv1jEmLzG96JvKxDOPtY=\nR:query.go\na:0:0:444\nZ:Q1sy3RMFSYqqhVJAqzPJwXOanxtwg=\nR:query_test.go\na:0:0:444\nZ:Q1jrel/wGegt10+749yevFtPUO9pQ=\nR:upload.go\na:0:0:444\nZ:Q1y/J0etVWZpQ1RQNZwPl/+UMb7lc=\nR:upload_test.go\na:0:0:444\nZ:Q1s16JKCYl+4sAuPUwBWVG1ag8PM4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/appengine\nM:0:0:555\nR:.gcloudignore\na:0:0:444\nZ:Q1AfVEVHJ9AsS/TXZ6oBf9MvaDPC0=\nR:README.md\na:0:0:444\nZ:Q1VyGyr45i3ch2PAoPbx9l36VDIlg=\nR:app.go\na:0:0:444\nZ:Q1M0WP+rzRR6wzqdmOIiB8Nr1CAWw=\nR:app.yaml\na:0:0:444\nZ:Q1NTO63pXoUf5CwCd2vlsP2EIBkzw=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/appengine/static\nM:0:0:555\nR:index.html\na:0:0:444\nZ:Q1aEU2GbBkwnaf3H49EkMtGwRZF6U=\nR:upload.html\na:0:0:444\nZ:Q1wDJVueJPfn22aQlwJj7ONdGfpfU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/cmd/reindex\nM:0:0:555\nR:reindex.go\na:0:0:444\nZ:Q1IorjgZKWpBLmUGW7cUm8OlZjYVA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/db\nM:0:0:555\nR:db.go\na:0:0:444\nZ:Q1xUB1o2tpelE02kZpN7L/TSDWDBo=\nR:db_test.go\na:0:0:444\nZ:Q1XZ964LfWmPobo51E9SUXGqdRfLc=\nR:export_test.go\na:0:0:444\nZ:Q18ggjROEQvlPZ8lc0RKVrHxDd8Mw=\nR:query.go\na:0:0:444\nZ:Q1R/Jx/clyMm/HUuY9/4gFBG8tISM=\nR:query_test.go\na:0:0:444\nZ:Q1wWt2XhdgPNX6B6XPIVLD9omnn9I=\nR:schema.sql\na:0:0:444\nZ:Q1rfLUDwz62dYSYvRAWmhcnu+mClA=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/db/dbtest\nM:0:0:555\nR:cloud.go\na:0:0:444\nZ:Q1k6jeY9PU5xdcvPKf5oNpds+qw8Q=\nR:dbtest.go\na:0:0:444\nZ:Q1NISEIpyigIZ0rMhuhvcP4R1fyQ4=\nR:nocloud.go\na:0:0:444\nZ:Q1UENOwDxqxM91eDzWmApYQChQ8rY=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/db/sqlite3\nM:0:0:555\nR:sqlite3.go\na:0:0:444\nZ:Q1Tr/GUBhNRjHOPbrVFAzRk/yobMM=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/fs\nM:0:0:555\nR:fs.go\na:0:0:444\nZ:Q1LzNVGYwl54ydbo2Eioyp1FcuWYo=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/fs/gcs\nM:0:0:555\nR:gcs.go\na:0:0:444\nZ:Q1mLqVaIWi1MF/sFysIikpHL07ENg=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/fs/local\nM:0:0:555\nR:local.go\na:0:0:444\nZ:Q12KoI1lkcmI14j09F9EWLPdahnyM=\nR:local_test.go\na:0:0:444\nZ:Q12dFEY743oHL2qi3E0gT/h8JFZEQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/localperfdata\nM:0:0:555\nR:app.go\na:0:0:444\nZ:Q10ijvlcW2lE+35Ph0oNgWKGMD7X4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/perfdata/query\nM:0:0:555\nR:query.go\na:0:0:444\nZ:Q1CwTYRaSPVxcb66N2XmZ6iukmApM=\nR:query_test.go\na:0:0:444\nZ:Q1D5N/7MTk21qOq8drs2/7b0+jZwE=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/repos\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1mS27ko58zZRSN+CUfsw5MmkLjM8=\nR:repos.go\na:0:0:444\nZ:Q1AM0Bvg85mtQpPaBn5S67qi6y0ic=\nR:repos_test.go\na:0:0:444\nZ:Q1ezxeiQ9pS3nzmch/3gxf6PilgoQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/revdial\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/revdial/v2\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q15kdSH68M2Ad1XdTwWrarAkHgKIk=\nR:revdial.go\na:0:0:444\nZ:Q1H1FNb02DVI5mt5YS0WHTx9Hv/aQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/tarutil\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1z0rvJabzW8j0iDgssyUra9ClPdI=\nR:tarutil.go\na:0:0:444\nZ:Q1ZgT3X+pLQQ+/uC9wLWmdbQawS5Q=\nR:tarutil_test.go\na:0:0:444\nZ:Q1GsBjo9+VqWsOzT2f2H+LBxMtg5Y=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/third_party\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/third_party/bandchart\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q19qZ16eZfdwLLR9hU0/T5KisTxB4=\nR:bandchart.js\na:0:0:444\nZ:Q15JxpnXw8fGzNIsjxb7GiaeHUGr4=\nR:fs.go\na:0:0:444\nZ:Q1Dnitrf2fs5aW4nq1jLfA2Xn+VlQ=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/types\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1qpBTfNNxBywCD87XoinpHPwCJRM=\nR:types.go\na:0:0:444\nZ:Q1xe2oNH1jDgS+YfQDs4N6RJoMsn4=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/vcs-test\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1gkryXJtGZ8bvyLplTj6RAd4LcPM=\nR:Dockerfile.apache\na:0:0:444\nZ:Q1OfiwFVHB3grUM4Ucq/CECi+NswU=\nR:Makefile\na:0:0:444\nZ:Q1XSF+iCnO6uf235VcwRpbDugQzKg=\nR:README.md\na:0:0:444\nZ:Q1ONvSMTrmtd6fRI/EA9Z84JwX+GQ=\nR:dav_svn.conf\na:0:0:444\nZ:Q1QAtJ1K9QYO3AUSf1BqVz+PYAgwo=\nR:deployment.yaml\na:0:0:444\nZ:Q1SvptkGSuO7IDpC+3yqS1rkoR9fU=\nF:root/go/pkg/mod/golang.org/x/build@v0.0.0-20220928220451-9294235e16f5/vcs-test/vcweb\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q1ugAPGccvzh+p+xWun+2P1YRyYdQ=\nR:bzr.go\na:0:0:444\nZ:Q1hsZfuY1Ly82MVDimP7C9RfnMKf0=\nR:fossil.go\na:0:0:444\nZ:Q12KAJq46kKQ5RVxNOE6EVW5b+DkY=\nR:git.go\na:0:0:444\nZ:Q1xUqedOhvSVpe2YRpT/NLFnrZiyo=\nR:hg.go\na:0:0:444\nZ:Q1Bf5PwJu4loqzVVc9fVQ5ZhQwliA=\nR:insecure.go\na:0:0:444\nZ:Q1GYMmNbKDSmCBJu4B2SwhfSUaxoc=\nR:load.go\na:0:0:444\nZ:Q19UuLYwrVfRN9V7tmQ9RmPmkDcVM=\nR:main.go\na:0:0:444\nZ:Q1MmBfWAIZIBAcOBh7aG2Igbsbkdg=\nR:svn.go\na:0:0:444\nZ:Q1PgOWcqcf48vf9xY6T6UiiVe3itk=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1qOvpYzpzUBlYwx8N1RwwfkIaNpQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1DAdGaGSxAAXWuoQ+oBYSg8qbatk=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1O0CeWnej3aFHEb/S7lEXqMC6Nkg=\nR:go.sum\na:0:0:444\nZ:Q1VE1fu9sbknxEnkQ7JSS0zNVFeBo=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme\nM:0:0:555\nR:acme.go\na:0:0:444\nZ:Q1kdzLoIHm0QOqC/5oX9xJLiC49PM=\nR:acme_test.go\na:0:0:444\nZ:Q1krvcz6MPRr6+pSik9ufEQXbVKH0=\nR:http.go\na:0:0:444\nZ:Q1sKfDzV5M4ypQSyGXnoXOFTGWa54=\nR:http_test.go\na:0:0:444\nZ:Q1a7cSlFjak10XQRrsIp1EYiIriUY=\nR:jws.go\na:0:0:444\nZ:Q1bzIdK4h+mX05Ix/7vhJKuhj2V8w=\nR:jws_test.go\na:0:0:444\nZ:Q1CaRvbCxwpvBb3p5QCXi6Rq2g0jY=\nR:rfc8555.go\na:0:0:444\nZ:Q1WVvaWpfTOCsaYpaFaCZe4n5Uwp4=\nR:rfc8555_test.go\na:0:0:444\nZ:Q1L4mb0km3fUMv0YeQotdr+p81GAc=\nR:types.go\na:0:0:444\nZ:Q1MyFXCnQXkT4lg+1/fWO1gBDd8C0=\nR:types_test.go\na:0:0:444\nZ:Q1FqQ3/Tf6eUETyzQ+auOK2xL5VfQ=\nR:version_go112.go\na:0:0:444\nZ:Q1cDnx1+JVE41ZzFgVUgDYltcTrMU=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme/autocert\nM:0:0:555\nR:autocert.go\na:0:0:444\nZ:Q1cWvbHQjruRk7C0N4ap4WVm2//4o=\nR:autocert_test.go\na:0:0:444\nZ:Q1KqeH98UgloYNo60SgPQ6PI9/Mzg=\nR:cache.go\na:0:0:444\nZ:Q1F6ybJmEIW8zXdW9Ei3kwJu+KQlc=\nR:cache_test.go\na:0:0:444\nZ:Q1JVr7cSne5YEs5umVRhabxPY//Bk=\nR:example_test.go\na:0:0:444\nZ:Q1/ojD5flFrNrcnZ0j0/LJX6eA9Dw=\nR:listener.go\na:0:0:444\nZ:Q1Evw22HyVCZjRz8xKq+R9MZuMS1w=\nR:renewal.go\na:0:0:444\nZ:Q1LrXgt0hRh/sTI7d1DF+BDW8o3A8=\nR:renewal_test.go\na:0:0:444\nZ:Q12sG/ga/eMbYN2g1YRoC7CacNLz0=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme/autocert/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme/autocert/internal/acmetest\nM:0:0:555\nR:ca.go\na:0:0:444\nZ:Q19DMy33Pj5Hpxi3QrwMJ754fAcn8=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/acme/internal/acmeprobe\nM:0:0:555\nR:prober.go\na:0:0:444\nZ:Q1SZ5r3g+6q9W+hbhdiusSAPzxWSE=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/argon2\nM:0:0:555\nR:argon2.go\na:0:0:444\nZ:Q1JvFn2QxSSGpREb3yqrgsTfxU0Qc=\nR:argon2_test.go\na:0:0:444\nZ:Q15efSN7g3f05L0QGstc4YUdj2gWU=\nR:blake2b.go\na:0:0:444\nZ:Q1/dRnUFWmZxkOnP61tYoZKlh0/Rg=\nR:blamka_amd64.go\na:0:0:444\nZ:Q1M/T+FMw0bP5TG+SlERyAc0l1wrw=\nR:blamka_amd64.s\na:0:0:444\nZ:Q15ISRHY6OhpI8VmhEUs6RlyfpSS8=\nR:blamka_generic.go\na:0:0:444\nZ:Q1WOKeWvcTjxcEo1IdQ2kkUlUP4NQ=\nR:blamka_ref.go\na:0:0:444\nZ:Q1tP+Yu6sAIROdhXe7fmuR0hqOuM4=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/bcrypt\nM:0:0:555\nR:base64.go\na:0:0:444\nZ:Q1+Y22L8K4h54YygVSkBWCeOIcYt0=\nR:bcrypt.go\na:0:0:444\nZ:Q1PatMNIE6zGSKCZ00qvqXo3Y0X48=\nR:bcrypt_test.go\na:0:0:444\nZ:Q1KFsaTPaMn7IYqWvu6V+W82l1ugA=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/blake2b\nM:0:0:555\nR:blake2b.go\na:0:0:444\nZ:Q10J+t2eft1eAFnJm0DjviXFCcRV0=\nR:blake2bAVX2_amd64.go\na:0:0:444\nZ:Q1vGPGyis3bbW1RppcE9rn1A6GdkM=\nR:blake2bAVX2_amd64.s\na:0:0:444\nZ:Q1E7/mPRTn/8Hyhkyp3dHZHmlbUac=\nR:blake2b_amd64.go\na:0:0:444\nZ:Q1Vhv+O9jH/bl0grnxO+1BRkUdj7M=\nR:blake2b_amd64.s\na:0:0:444\nZ:Q1kn67wuvYwR62nc6n8lK8Ak3L9Uo=\nR:blake2b_generic.go\na:0:0:444\nZ:Q1OncAHvAT5xAhUDr2twl+KrCtSJk=\nR:blake2b_ref.go\na:0:0:444\nZ:Q1wrbhKmzCkCui/4QC88ol+jHceM8=\nR:blake2b_test.go\na:0:0:444\nZ:Q1VDIQWNAF4TdjVEmMQTkLFX2gGCc=\nR:blake2x.go\na:0:0:444\nZ:Q1TEMHgVMQb5iH9KDW7GaSsKBeD/4=\nR:register.go\na:0:0:444\nZ:Q16cYWiCOsVhA3r23gvSQwte4VdQA=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/blake2s\nM:0:0:555\nR:blake2s.go\na:0:0:444\nZ:Q1LtzjVLhz7O5Mwytw7ufabIRjPEU=\nR:blake2s_386.go\na:0:0:444\nZ:Q1IJcTPH/N5SoKUuiuac4C9/2jjLc=\nR:blake2s_386.s\na:0:0:444\nZ:Q1lZUNTo8YzQZ165FZiON35lFpjec=\nR:blake2s_amd64.go\na:0:0:444\nZ:Q1+W6Z4OrNCJKFLKCQm3aTZyntnh4=\nR:blake2s_amd64.s\na:0:0:444\nZ:Q1OoRbKSNiEHVqUDeibUX3kw1MXNM=\nR:blake2s_generic.go\na:0:0:444\nZ:Q1BgXXu1867kjRypb5xRc9Ch4SP9Y=\nR:blake2s_ref.go\na:0:0:444\nZ:Q13MsTyrX1p/+pCTgMh9wlLhVOFPI=\nR:blake2s_test.go\na:0:0:444\nZ:Q1W3jHvvITrtX2x8sshGZPaBYLEr0=\nR:blake2x.go\na:0:0:444\nZ:Q14uyujtHAxa3A1Pv/4ZDRNb1FbCk=\nR:register.go\na:0:0:444\nZ:Q1y1/lmQ/8fpO+ALbHh8lP2l0c8B4=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/blowfish\nM:0:0:555\nR:block.go\na:0:0:444\nZ:Q15NvpCdHgNDbPb1GAN9siCgvv0nY=\nR:blowfish_test.go\na:0:0:444\nZ:Q1S/iMHKrP4RlO7jKr7IN7a1YPHlk=\nR:cipher.go\na:0:0:444\nZ:Q1fqAa0HrPNXokvguadQjZITH4fAc=\nR:const.go\na:0:0:444\nZ:Q1o3F5qjptdqvQ/8cOxmu7FdKmFNA=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/bn256\nM:0:0:555\nR:bn256.go\na:0:0:444\nZ:Q1luDTPzab1pL6ptF7CsAsVbeJl2s=\nR:bn256_test.go\na:0:0:444\nZ:Q1p8pyLfp+6iGwI94KMStCYtcgqtQ=\nR:constants.go\na:0:0:444\nZ:Q17hxpcTg0J2vZgYEMFpF1prOOsMs=\nR:curve.go\na:0:0:444\nZ:Q1DbZuJyI02Mv42asQ2DPtPJE6JBY=\nR:example_test.go\na:0:0:444\nZ:Q1YL0Vx8PTCvLcQLJBB3Qp3PxBEfg=\nR:gfp12.go\na:0:0:444\nZ:Q1bK4j1ayG50ELsVoOvyN/4SED+2g=\nR:gfp2.go\na:0:0:444\nZ:Q1J+qLznPv4WrTnz0EBTLfz7ulbTM=\nR:gfp6.go\na:0:0:444\nZ:Q18NazJVKaznP0r6N2lONFNTlG150=\nR:optate.go\na:0:0:444\nZ:Q1Q3OTGMCHlCTuZI0MjyJ5/aytJ0k=\nR:twist.go\na:0:0:444\nZ:Q1HoPuOgP30FM73bUn6U/2cT2Ykis=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/cast5\nM:0:0:555\nR:cast5.go\na:0:0:444\nZ:Q1UZAqUqZPC3dh4dfCT/r72ULta6c=\nR:cast5_test.go\na:0:0:444\nZ:Q1EMAdqRTPYlDM1QHwv7y+NSwbAx8=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/chacha20\nM:0:0:555\nR:chacha_arm64.go\na:0:0:444\nZ:Q1/0iFGJSbrFtFWZXz6hkVnPu78zA=\nR:chacha_arm64.s\na:0:0:444\nZ:Q1guP3lb5kHoEgb9Uy9RMCCGaIoAI=\nR:chacha_generic.go\na:0:0:444\nZ:Q1mGOa9L6uBqfiozu29oU+2oHs0oo=\nR:chacha_noasm.go\na:0:0:444\nZ:Q1tnY3Tq0sPLE21Bu10Zl4okGxXYs=\nR:chacha_ppc64le.go\na:0:0:444\nZ:Q17AGVEDEWXlYkTNjJ/oO2tx6mF0U=\nR:chacha_ppc64le.s\na:0:0:444\nZ:Q1dSVb5mwwMTx42AInrRFrxCDrxRE=\nR:chacha_s390x.go\na:0:0:444\nZ:Q1dYJOnSJGncIzC1IwK8LrmDdft0A=\nR:chacha_s390x.s\na:0:0:444\nZ:Q1qHVdxb42uGukCsdThXDUyLGjObQ=\nR:chacha_test.go\na:0:0:444\nZ:Q1AKaxmIwIFwLr/Dv2oB2jFUFI3sI=\nR:vectors_test.go\na:0:0:444\nZ:Q1oYvi6hQhqUbZNqkB0Hg95DYV25Y=\nR:xor.go\na:0:0:444\nZ:Q1Vhu+ktb8xSzP5aI0lkm1zyyjQAw=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/chacha20poly1305\nM:0:0:555\nR:chacha20poly1305.go\na:0:0:444\nZ:Q19doD6XOfNgTT85k/zKrYjuzgQOM=\nR:chacha20poly1305_amd64.go\na:0:0:444\nZ:Q1rBA2VBoxfFiPqZpGfpODrF2Bdu4=\nR:chacha20poly1305_amd64.s\na:0:0:444\nZ:Q1GRWvBTkXjYRIMiwCdrSCYpss8nw=\nR:chacha20poly1305_generic.go\na:0:0:444\nZ:Q1snepYIX2PGZKK1zmLnxs4GY4dHk=\nR:chacha20poly1305_noasm.go\na:0:0:444\nZ:Q1Fg9uUXEov3AX60QI7/iEHsTUvF0=\nR:chacha20poly1305_test.go\na:0:0:444\nZ:Q1jPqHm/Ltwk2qyygMKGwOwO01A/A=\nR:chacha20poly1305_vectors_test.go\na:0:0:444\nZ:Q1odlsfHqZIbmuX7/9d+gbTPjxMkQ=\nR:xchacha20poly1305.go\na:0:0:444\nZ:Q1uiHKhJZX7/jx1a8mY+YRNR3OEHw=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/cryptobyte\nM:0:0:555\nR:asn1.go\na:0:0:444\nZ:Q1vwMiRm2cfw0ZAVNyaQVOyqHuBxQ=\nR:asn1_test.go\na:0:0:444\nZ:Q1ztpcrW8sVrYhczII2+FhuLsvxmo=\nR:builder.go\na:0:0:444\nZ:Q1wYvyx0EX7JaVNhrcgQ3eHgFCybs=\nR:cryptobyte_test.go\na:0:0:444\nZ:Q1jUcye+MICe/EISax7GmJ93qC4Bk=\nR:example_test.go\na:0:0:444\nZ:Q1xnFThtfEom2AobzwHZnGab+12Qs=\nR:string.go\na:0:0:444\nZ:Q1eNIzA8ELHjvYi5h+XLZZHXKhpSQ=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/cryptobyte/asn1\nM:0:0:555\nR:asn1.go\na:0:0:444\nZ:Q1qaVvSECzheb+itmLDxXge8I+mQc=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/curve25519\nM:0:0:555\nR:curve25519.go\na:0:0:444\nZ:Q1GK/QWOJz9ejvO9ZjbkfyrG/cN1s=\nR:curve25519_test.go\na:0:0:444\nZ:Q15lMaFPvERsKxLG/Hl/uEhRKWZxw=\nR:vectors_test.go\na:0:0:444\nZ:Q1+voiOEQKdI/jmFPhJ+Bv+pbo34s=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/curve25519/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/curve25519/internal/field\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1aCO1gb9WZXnT9TKcnoaiorIoHpI=\nR:fe.go\na:0:0:444\nZ:Q165vtHnYAK1fMjsEZuJqFh1O+hTw=\nR:fe_alias_test.go\na:0:0:444\nZ:Q1XXuH9MiZ+Ilvl/x/wpu+iXbVsHk=\nR:fe_amd64.go\na:0:0:444\nZ:Q1pRDEoKGVFgxUWzcqcNBtkFRcs7M=\nR:fe_amd64.s\na:0:0:444\nZ:Q1zapCqkJZO2mAVH0A7f78Jg5qFQM=\nR:fe_amd64_noasm.go\na:0:0:444\nZ:Q1sicvktDWAbxPt4HXiyAxCbBVoXs=\nR:fe_arm64.go\na:0:0:444\nZ:Q1v5BClXOoWFztd/ZZfvpyh5PRlKI=\nR:fe_arm64.s\na:0:0:444\nZ:Q1lcsg2p2+VXkdW7Hp7K5sKau4AMo=\nR:fe_arm64_noasm.go\na:0:0:444\nZ:Q17hwmr/QV2BSgBziXkgXgsG7zvzE=\nR:fe_bench_test.go\na:0:0:444\nZ:Q1IrOvTxQ/AYLv5vuWA39mPrR29CU=\nR:fe_generic.go\na:0:0:444\nZ:Q1x3HhQLbEzBVNEFwI/cCDFIV0ypw=\nR:fe_test.go\na:0:0:444\nZ:Q1qQkULtddVzZ1Dc11Gz3b30shh7Q=\nR:sync.checkpoint\na:0:0:444\nZ:Q11aCrxXbVYJ6qvy9gbBmnGnShrTI=\nR:sync.sh\na:0:0:444\nZ:Q1EQvQsEhEuNSso3QKDgdKBK1qPj8=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ed25519\nM:0:0:555\nR:ed25519.go\na:0:0:444\nZ:Q1Jp9q7PeAuiZjlqYqmwqZMvqIUWs=\nR:ed25519_test.go\na:0:0:444\nZ:Q1SkFQw/w8z5vO7ctUUu5PxZUu77s=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/hkdf\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1SLgYgi9xvehcH1ek6LZnzZuFeSQ=\nR:hkdf.go\na:0:0:444\nZ:Q1/xSEcNRUAV9cdqQv+C1JVXn6wPg=\nR:hkdf_test.go\na:0:0:444\nZ:Q1bo5lNT9fICeXBkMdpiQX5m9lV9Q=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal/alias\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1/A6hCkrzdSU0OFkYKoA+8yhX4Ks=\nR:alias_purego.go\na:0:0:444\nZ:Q1zby+4xySEJAQvggDaQvMWXwgbC4=\nR:alias_test.go\na:0:0:444\nZ:Q1TNl6fPeXq0YmysBABohmC4oBjJ0=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal/poly1305\nM:0:0:555\nR:bits_compat.go\na:0:0:444\nZ:Q1oq4tqv1YwoiQ5z8OYPA5+cQQr4I=\nR:bits_go1.13.go\na:0:0:444\nZ:Q1m1zlHEPV3NjwCCRPVD95RXuQZtQ=\nR:mac_noasm.go\na:0:0:444\nZ:Q1p/CDCd5QP0UW03EfNebXduTv/dU=\nR:poly1305.go\na:0:0:444\nZ:Q1x3NwjsvPXztvia57ejxfas7CsfE=\nR:poly1305_test.go\na:0:0:444\nZ:Q1if6bLsFwFkGrjSq2jy++DOG06bc=\nR:sum_amd64.go\na:0:0:444\nZ:Q1J/eWYa/ytHj1k/OilDxFsxoiQ50=\nR:sum_amd64.s\na:0:0:444\nZ:Q1KLHHrrF6M1EuUdWqDD4SaW9+hgQ=\nR:sum_generic.go\na:0:0:444\nZ:Q17ZTUX+DU4KQ0O0sxXa1qPibsVQI=\nR:sum_ppc64le.go\na:0:0:444\nZ:Q1CarOkqPcqduZbSYdwT1BxrQAaBY=\nR:sum_ppc64le.s\na:0:0:444\nZ:Q1QbPl1S0w8YRgYg4/e2f5vg3E4I8=\nR:sum_s390x.go\na:0:0:444\nZ:Q1Vnf9hiU7L4VvfTop7/QRp8e0NTU=\nR:sum_s390x.s\na:0:0:444\nZ:Q1wnS5XQQ5/glnhIt5cwVFyTY5fXM=\nR:vectors_test.go\na:0:0:444\nZ:Q1YZJkEIwa3BAxWOIFOZH3RA6M374=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal/wycheproof\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ICxi+fCLP/Bd1iV59oBnKyotxBI=\nR:aead_test.go\na:0:0:444\nZ:Q1da3tKFWcSGFJM9llKCiB81y7r0E=\nR:aes_cbc_test.go\na:0:0:444\nZ:Q1PabtxL2XFJO8RuVZG0+1hmpm+GI=\nR:boring.go\na:0:0:444\nZ:Q16J67pQ7sr8Q9J3P20EZAj7lrzZU=\nR:dsa_test.go\na:0:0:444\nZ:Q17Z+BoLngjwLYjuIu5VkdQqKvSCM=\nR:ecdh_stdlib_test.go\na:0:0:444\nZ:Q13RsKezIq43yJN4kALQps1mq1o0I=\nR:ecdh_test.go\na:0:0:444\nZ:Q1fvcScUg1hOmwkipM9HqIxV/koSA=\nR:ecdsa_test.go\na:0:0:444\nZ:Q1yUDcF/DzB2uQO6VmFU+tG9Qbcug=\nR:eddsa_test.go\na:0:0:444\nZ:Q1KHPAc1XHF4FvFRboC9YJp06hBnI=\nR:hkdf_test.go\na:0:0:444\nZ:Q1G1Ors5++wGvRJWp/FHnwaIX1AZQ=\nR:hmac_test.go\na:0:0:444\nZ:Q1TVMUKwNJ27df/doBVOldTzn9vN0=\nR:notboring.go\na:0:0:444\nZ:Q1EoOat6mlyDrtyVebNsMEUHca408=\nR:rsa_oaep_decrypt_test.go\na:0:0:444\nZ:Q1Lmj3Xny45jwbri65f3iR7pGqQYI=\nR:rsa_pss_test.go\na:0:0:444\nZ:Q1eJ+FYwBdxEXV1ctMSaBhLlcBhZY=\nR:rsa_signature_test.go\na:0:0:444\nZ:Q1yLd02I3Uf6FR9T1VpRgA2Ra8uHE=\nR:wycheproof_test.go\na:0:0:444\nZ:Q1O6UZu+H91ydM58/vodZaNFnPVQM=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal/wycheproof/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/internal/wycheproof/internal/dsa\nM:0:0:555\nR:dsa.go\na:0:0:444\nZ:Q1N666v+6E60zYruJ7WrT8f0aMqyI=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/md4\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1so1NjUPjXPRAiJLRbYGrOFxWCis=\nR:md4.go\na:0:0:444\nZ:Q1So0chI4hMMBrqge5IuBUTtEdvOU=\nR:md4_test.go\na:0:0:444\nZ:Q1y36NIEUGnEwnzWewPGVq6Bcz9pI=\nR:md4block.go\na:0:0:444\nZ:Q1sAFXMwRuYlFjZGOBu0p3EvYwXLA=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/nacl\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/nacl/auth\nM:0:0:555\nR:auth.go\na:0:0:444\nZ:Q1Dbhv+yZOlzxXDqEZJLjCoJt8KSo=\nR:auth_test.go\na:0:0:444\nZ:Q1Tshya9qKMmxllW3VGTahi9ewq60=\nR:example_test.go\na:0:0:444\nZ:Q1jp0coUG7u6tBwMqJbJurhVY+5Tc=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/nacl/box\nM:0:0:555\nR:box.go\na:0:0:444\nZ:Q1C04rpDVMLSsNGhFt7rK2Dn+sHyc=\nR:box_test.go\na:0:0:444\nZ:Q1UezQ82dDjNtclkRaem4HklQvW+c=\nR:example_test.go\na:0:0:444\nZ:Q1UPtg7gVlrAlYF2YU0MbdXCgdk0I=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/nacl/secretbox\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1w+AYqwckN2TcUyM/IPnkcULeaQo=\nR:secretbox.go\na:0:0:444\nZ:Q135DDwOmpK06e/831XbLHrOdj0Xs=\nR:secretbox_test.go\na:0:0:444\nZ:Q1Xv0DqM5uVHKLBELsWmqlARPZuiI=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/nacl/sign\nM:0:0:555\nR:sign.go\na:0:0:444\nZ:Q1IrsW92hfMEkpVb5HqSg4wkHPg38=\nR:sign_test.go\na:0:0:444\nZ:Q14N/9xvxQkIBpHVfhVxQHmNyOSUk=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ocsp\nM:0:0:555\nR:ocsp.go\na:0:0:444\nZ:Q1KfV9oWl1YhyLlSLyfp2n/kwBbdk=\nR:ocsp_test.go\na:0:0:444\nZ:Q1xF7qpq85OkX6FaRziS1sOYnJpQk=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp\nM:0:0:555\nR:canonical_text.go\na:0:0:444\nZ:Q1RnD5w0s7y060/+kCkXHNJI4kago=\nR:canonical_text_test.go\na:0:0:444\nZ:Q1IiG9XPcW2xnrz30Tn8jcR76c42k=\nR:keys.go\na:0:0:444\nZ:Q1tn4/TpK9+mrE8WEGnqVwXwLYyvA=\nR:keys_data_test.go\na:0:0:444\nZ:Q1VOUYy75QAJBVq8FjT4EMTc4IPWg=\nR:keys_test.go\na:0:0:444\nZ:Q1/UViLLgPRse+OnQHcgz5VsAR4fE=\nR:read.go\na:0:0:444\nZ:Q1t6rIR7z+OCwIhnc1icomdgTQJ5c=\nR:read_test.go\na:0:0:444\nZ:Q1ZuuE4+mzrGd/sYl2k1h1VOPx1sM=\nR:write.go\na:0:0:444\nZ:Q1ElBoHOnjxwVHawe7puxX124ggLo=\nR:write_test.go\na:0:0:444\nZ:Q1uwtpX7OKvsVuH3EwsaScsy2WnD4=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/armor\nM:0:0:555\nR:armor.go\na:0:0:444\nZ:Q1eebaYiDLv2tkrCEwHAYY+bGXYuA=\nR:armor_test.go\na:0:0:444\nZ:Q13PnWhiksbtfqDGtlohfzOJNIeBc=\nR:encode.go\na:0:0:444\nZ:Q1Yteh4Tr/ZkmxC97E3Kexq3B2FdQ=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/clearsign\nM:0:0:555\nR:clearsign.go\na:0:0:444\nZ:Q1E9WDNKVY9c+6bQpx8VqMlHyixwE=\nR:clearsign_test.go\na:0:0:444\nZ:Q1c7n+DybNdIfrOk8vp+bw1KPtW7A=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/elgamal\nM:0:0:555\nR:elgamal.go\na:0:0:444\nZ:Q191TZTaD3A/P7mO/lngOXHF+cDP0=\nR:elgamal_test.go\na:0:0:444\nZ:Q1cjLqvKJxTGXuQqdzuRqQhV9YhXY=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1oGHxos5Ot8qa2MmOqCC5BMHevFs=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/packet\nM:0:0:555\nR:compressed.go\na:0:0:444\nZ:Q1QHbl73hWk3KrWbVXNRwScHnGKE0=\nR:compressed_test.go\na:0:0:444\nZ:Q1yJVy9jfPg/xRcns3hDjLJ68OzjU=\nR:config.go\na:0:0:444\nZ:Q1+G1CAvs3XLu+bWKIJElrcoUe2BA=\nR:encrypted_key.go\na:0:0:444\nZ:Q1/KZIbnnW2e2NEKsHdh9gOjrFv3k=\nR:encrypted_key_test.go\na:0:0:444\nZ:Q140PfagrisRF1UqIFooMI2QIZkns=\nR:literal.go\na:0:0:444\nZ:Q1eTjPSaK8P4lhlcRJMIlUbm8fJtQ=\nR:ocfb.go\na:0:0:444\nZ:Q1woVw0wckzCOJGKYv8UFtgDsc4Xg=\nR:ocfb_test.go\na:0:0:444\nZ:Q17mE69a6lqQ3cMD9PZyup9cZ9e/8=\nR:one_pass_signature.go\na:0:0:444\nZ:Q1a9iaxtfCsiAaHq2KGEbAHpp49p8=\nR:opaque.go\na:0:0:444\nZ:Q1C+aJP8f84j1DpimLztbr6QWDf0E=\nR:opaque_test.go\na:0:0:444\nZ:Q1zCocpxMEE2wRxBTCyKbe/dUaDmc=\nR:packet.go\na:0:0:444\nZ:Q1Jjx2nFNWsrtbcFZ78MJrOQ+KKRI=\nR:packet_test.go\na:0:0:444\nZ:Q16JvWB6qHWgn74+u7zj3iOpb8C2Y=\nR:private_key.go\na:0:0:444\nZ:Q16QOi3QIN/ckmFjPkBbgDFtnaCm0=\nR:private_key_test.go\na:0:0:444\nZ:Q150LlDf3oD7jp0yOOtMsEPIc0wIc=\nR:public_key.go\na:0:0:444\nZ:Q1gGd4Ex2LNbh3nD9KqEcgoVVgFV0=\nR:public_key_test.go\na:0:0:444\nZ:Q1kTuE2u+VlYpJ6rFX5Kl1Tc9KmIg=\nR:public_key_v3.go\na:0:0:444\nZ:Q1q7vNRrZwrRuD6OgqgOTErmvsK4c=\nR:public_key_v3_test.go\na:0:0:444\nZ:Q1ZLdm2M+/PK8zUOVunBUMrERHVVk=\nR:reader.go\na:0:0:444\nZ:Q1fNmxkfaEO1qzP1t5GVgSIZC7QMQ=\nR:signature.go\na:0:0:444\nZ:Q1k6GHJOn+CWc0GAzbBTdz+MumoG4=\nR:signature_test.go\na:0:0:444\nZ:Q1aM5IMxtzc+v3ZRd2qBfQxzCrCGU=\nR:signature_v3.go\na:0:0:444\nZ:Q1rAFlGedP+Imi999TCK1rW8zYnAo=\nR:signature_v3_test.go\na:0:0:444\nZ:Q1hIDteNLKdlrFl/xSBR79zHEUj9g=\nR:symmetric_key_encrypted.go\na:0:0:444\nZ:Q1htiTT53LQ1mj9+k6NZ6VH3/q6uY=\nR:symmetric_key_encrypted_test.go\na:0:0:444\nZ:Q1mp2GSiZyZh/yiActqMDLIAxV5jc=\nR:symmetrically_encrypted.go\na:0:0:444\nZ:Q1qJozv5FK6wGwxrerrSgHFpiek9o=\nR:symmetrically_encrypted_test.go\na:0:0:444\nZ:Q1DWAvmWM3kMBJ5/n5smJE1mMe+Mc=\nR:userattribute.go\na:0:0:444\nZ:Q1z6nfeLGpByukxbqO2q/pp6sFaog=\nR:userattribute_test.go\na:0:0:444\nZ:Q1MIL3n4N8oajuBE3R3C/FjB3/l24=\nR:userid.go\na:0:0:444\nZ:Q1CRgrnUx+HriTeIgfwyuk4uL0NBk=\nR:userid_test.go\na:0:0:444\nZ:Q187wNvgmjcSQYJoKLGYMutrR0RhY=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/openpgp/s2k\nM:0:0:555\nR:s2k.go\na:0:0:444\nZ:Q1wk3+jBRqmngdJ0NYk+vxdo242kk=\nR:s2k_test.go\na:0:0:444\nZ:Q1BMzOrKC12+fpMMmpeE3lUvW6ZcQ=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/otr\nM:0:0:555\nR:libotr_test_helper.c\na:0:0:444\nZ:Q1HQx7vmaNI6E4ZrkSHk3hlPdQKC8=\nR:otr.go\na:0:0:444\nZ:Q1WcPgoR0Pb+UY4eHKnGfSeg4mu/o=\nR:otr_test.go\na:0:0:444\nZ:Q1pDJTJWT5eHwUZX6vpJo6+AiURHk=\nR:smp.go\na:0:0:444\nZ:Q1uD+YumeVX6Vag+mQYsyLBZFPQNw=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/pbkdf2\nM:0:0:555\nR:pbkdf2.go\na:0:0:444\nZ:Q1GBH8U42h5CShC4ktmFTwrIxGyjk=\nR:pbkdf2_test.go\na:0:0:444\nZ:Q17tarUMA0yeSxz1qWr20CQDlPJKg=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/pkcs12\nM:0:0:555\nR:bmp-string.go\na:0:0:444\nZ:Q1i2CU47aZYyZff0tuf0lb10LXldU=\nR:bmp-string_test.go\na:0:0:444\nZ:Q1YznaWkd+k9n3/EEAEuHJThUCNgM=\nR:crypto.go\na:0:0:444\nZ:Q1qCunHrTjCt3qs90Z0UCKTRvkeSs=\nR:crypto_test.go\na:0:0:444\nZ:Q1HmURqwc2Dn4YZ7QDEKu7B6Qfc7U=\nR:errors.go\na:0:0:444\nZ:Q1OVLSpiGAwbx4FOeIjtly8xlUtVU=\nR:mac.go\na:0:0:444\nZ:Q1XhwV1XGD40QC9S3StLIjgl2MVr8=\nR:mac_test.go\na:0:0:444\nZ:Q1ziDKrMR9kz9iEgGzPkjvqcvtT2g=\nR:pbkdf.go\na:0:0:444\nZ:Q1lJCMarmorX0XvDfCfUTkhaylgr4=\nR:pbkdf_test.go\na:0:0:444\nZ:Q1m74/ed3j97N54bSkNJZXDq56qAQ=\nR:pkcs12.go\na:0:0:444\nZ:Q1/uulaY83V/X8PGYUJQjiFdA1FMs=\nR:pkcs12_test.go\na:0:0:444\nZ:Q1N2aBzUcUoTA+4s0t2I/OCr2j42I=\nR:safebags.go\na:0:0:444\nZ:Q1LpnoDQXp9ee8DAsKH31MxWlKssY=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/pkcs12/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/pkcs12/internal/rc2\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1m9CpHJMlvYiGjv2COuYgHLZl8CI=\nR:rc2.go\na:0:0:444\nZ:Q1oEDTgQG43/bK0YZgyd+F3LLHGcw=\nR:rc2_test.go\na:0:0:444\nZ:Q1YRJJuTwknZQSbYzfYPoC98cQzFM=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/poly1305\nM:0:0:555\nR:poly1305_compat.go\na:0:0:444\nZ:Q1DsF7S0VMCXSyAnjOq1JN0Vzn2NQ=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ripemd160\nM:0:0:555\nR:ripemd160.go\na:0:0:444\nZ:Q1fD0vRFJpHrigOCxgJgD9DUOjBfA=\nR:ripemd160_test.go\na:0:0:444\nZ:Q1JxXWQnRT7cIypc17yGHnxH5xiXg=\nR:ripemd160block.go\na:0:0:444\nZ:Q1CNEse9ryrIdZuIulHNolKArZoro=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/salsa20\nM:0:0:555\nR:salsa20.go\na:0:0:444\nZ:Q15Ry5lucSXS8Ca6uEdOOAO8jNl+Q=\nR:salsa20_test.go\na:0:0:444\nZ:Q1m+G3t7wLbdPsMGR7nEaMdZlmoQ4=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/salsa20/salsa\nM:0:0:555\nR:hsalsa20.go\na:0:0:444\nZ:Q1EXwMWibtHKbEEDBKk0lsm6wFIH0=\nR:salsa208.go\na:0:0:444\nZ:Q1D2gE0lA0Lqks5hKmIdW2Rm19lzc=\nR:salsa20_amd64.go\na:0:0:444\nZ:Q1gjpTI2145jc+fhfMuwPU1NVSayQ=\nR:salsa20_amd64.s\na:0:0:444\nZ:Q1AEp29AEqZln7dQDP+YSNjszz24w=\nR:salsa20_amd64_test.go\na:0:0:444\nZ:Q19Q5ztAQdMKu5ey86BmjaqT2JH94=\nR:salsa20_noasm.go\na:0:0:444\nZ:Q1S3YcmNF9neaRnsMmhvREQIsBkEM=\nR:salsa20_ref.go\na:0:0:444\nZ:Q1t2fWXSxZJ8wj6+p36JvmJRdKlCE=\nR:salsa_test.go\na:0:0:444\nZ:Q1fvH/dPpiBWOO6PXhDjUMLtf6u9A=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/scrypt\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1cgTizhyw5tHz74pfhnUbwHVK/8M=\nR:scrypt.go\na:0:0:444\nZ:Q1NNBMIwANHbgibr4xPOdqB5nL6n4=\nR:scrypt_test.go\na:0:0:444\nZ:Q16jD2xt8dZk45/TjoJklS8DTfLEc=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/sha3\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1aj+UtdStiHAQNO5MAvv085OcNSE=\nR:hashes.go\na:0:0:444\nZ:Q13eoGxoo0nIkULrBLEhxOVKEkkMg=\nR:hashes_generic.go\na:0:0:444\nZ:Q1dnE+OHVJ9Auepa5tCVIfnybsi6c=\nR:keccakf.go\na:0:0:444\nZ:Q1e7quOsXHUHgh05nx2g5Jectx6uc=\nR:keccakf_amd64.go\na:0:0:444\nZ:Q1ahVwo9VM5MxKlToM8dRl1K3c2QU=\nR:keccakf_amd64.s\na:0:0:444\nZ:Q1xE+J1d3TinMvLXtOQ7bxiYxy8xM=\nR:register.go\na:0:0:444\nZ:Q1Pf+DV54+qJy8HnurpbKL1NAQRrs=\nR:sha3.go\na:0:0:444\nZ:Q1YgYvZJFspGdvcyObomyHIvQSFWM=\nR:sha3_s390x.go\na:0:0:444\nZ:Q1qHV21vd+bzyZJ2L6BB5viHzWPiA=\nR:sha3_s390x.s\na:0:0:444\nZ:Q1rb9s6JlNeF/j5YwtMXGPtASZlhY=\nR:sha3_test.go\na:0:0:444\nZ:Q179lc7/C9+6BpPZUCnKeoNQbGAro=\nR:shake.go\na:0:0:444\nZ:Q1VwT2/eFHsaqVQrHOGFQ7AKJdby4=\nR:shake_generic.go\na:0:0:444\nZ:Q1CBywOMpDvoFayJ2Ns2b2NMILEGQ=\nR:xor.go\na:0:0:444\nZ:Q1FC7Np+lITVYgQBSmN6yHU5HBlgM=\nR:xor_generic.go\na:0:0:444\nZ:Q1Ov0p+eRf8kggJonB18eJP7y5+oA=\nR:xor_unaligned.go\na:0:0:444\nZ:Q1OM6ETJLbIxIXvMq6G4iHoc3WcIU=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/sha3/testdata\nM:0:0:555\nR:keccakKats.json.deflate\na:0:0:444\nZ:Q19od8EUnt4CCFGmOz4dl0Kdo2qkQ=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh\nM:0:0:555\nR:benchmark_test.go\na:0:0:444\nZ:Q1vqg49AIEo+QENVJ4rOm7qjENHTs=\nR:buffer.go\na:0:0:444\nZ:Q1t1gdICGnXlGNdZ59O3sKtii5/nA=\nR:buffer_test.go\na:0:0:444\nZ:Q1vvHBKuARHQLImHWROfoO0HWALJ8=\nR:certs.go\na:0:0:444\nZ:Q1Kblca63qtaGpSv6TMfhI+/0JlXE=\nR:certs_test.go\na:0:0:444\nZ:Q1crYyih9hBMnf+Bi0sXBhiWzhYlI=\nR:channel.go\na:0:0:444\nZ:Q1ys0FsgML/ZuOW6WF0+h0cqxuS3U=\nR:cipher.go\na:0:0:444\nZ:Q1l8NX2ygKqyF/VekzgFvguHKbNIQ=\nR:cipher_test.go\na:0:0:444\nZ:Q1YUwpxKRtXKjA+M0Av4iupnh2/zs=\nR:client.go\na:0:0:444\nZ:Q18WVQ2hSOwGU6vHkz6XwgotBRMVE=\nR:client_auth.go\na:0:0:444\nZ:Q1H0+SbWoTSDlziU1Trn555zrrghc=\nR:client_auth_test.go\na:0:0:444\nZ:Q1zXZA9V5ZkVcp15++vlx8SFStkMY=\nR:client_test.go\na:0:0:444\nZ:Q1ztQOpOj9LO1nzmPQQl1p5iljprY=\nR:common.go\na:0:0:444\nZ:Q1t8WUytlBlHTzdFiOC6fHS024YNE=\nR:common_test.go\na:0:0:444\nZ:Q1zkgtfWFvC5yQeduOf4+zoZx+N3w=\nR:connection.go\na:0:0:444\nZ:Q13sGK0lzCTjqBsry/oG+il7U/zAE=\nR:doc.go\na:0:0:444\nZ:Q1DA262FYc02swJn3pjvASh1khy/M=\nR:example_test.go\na:0:0:444\nZ:Q1yKgg78T2ydH2PO/JZOYcjZq5G0Q=\nR:handshake.go\na:0:0:444\nZ:Q11jdFq7leqyFR0IhfpIshFn0ym0Y=\nR:handshake_test.go\na:0:0:444\nZ:Q1CQVJTTNUbzSPywXRF2jicY75ZoQ=\nR:kex.go\na:0:0:444\nZ:Q1pvpkEskdUXHvJL7SBarwXKEi/1Q=\nR:kex_test.go\na:0:0:444\nZ:Q1DB4kKtvqbSPH2rXTABMY/mqF2Ug=\nR:keys.go\na:0:0:444\nZ:Q1V1uEsOACcymrqmn2FoDkt+3aBlI=\nR:keys_test.go\na:0:0:444\nZ:Q1QGE1kvYDfoZWdaxuf8G7f3sHW/s=\nR:mac.go\na:0:0:444\nZ:Q1pANpUjwXzICrQmYJtMAPOE+kmH8=\nR:mempipe_test.go\na:0:0:444\nZ:Q1AXZMQdn2mjxnz8giUSM3/AUIrxQ=\nR:messages.go\na:0:0:444\nZ:Q1f7mOQkAMABjI+e61HtiXzT+2jLU=\nR:messages_test.go\na:0:0:444\nZ:Q132dWAyLdgogTaSjVD5CkN0eUTZ4=\nR:mux.go\na:0:0:444\nZ:Q12l8//vd/I6PJXF+cQ40908r2W5A=\nR:mux_test.go\na:0:0:444\nZ:Q1Ta99ER7aWjNazyFjChdfgWzAK+o=\nR:server.go\na:0:0:444\nZ:Q1iWM7j7VS5KCtOU6NE6LY4SqgsRc=\nR:session.go\na:0:0:444\nZ:Q1pndo6trFy225uM93HU1pOVXXkGg=\nR:session_test.go\na:0:0:444\nZ:Q1SUOrUdSLJ+Ftx5zVsA87Uxfmq5k=\nR:ssh_gss.go\na:0:0:444\nZ:Q1Cd7msDHarrMBrpXhVxhadCtdZpQ=\nR:ssh_gss_test.go\na:0:0:444\nZ:Q1iCinO2HKPNCDy10+8WXtkGKP720=\nR:streamlocal.go\na:0:0:444\nZ:Q1ePCuVwVjV2w/oU7U2lzgd8EDG8I=\nR:tcpip.go\na:0:0:444\nZ:Q1WC+Pvz7567gX/+i/WNOz3ec62E4=\nR:tcpip_test.go\na:0:0:444\nZ:Q1m2ZZvd0IpYR5Bcj3TQ7BgiCLjHw=\nR:testdata_test.go\na:0:0:444\nZ:Q1fTvlibY3anz/ji4H+0Dlqlvv5fo=\nR:transport.go\na:0:0:444\nZ:Q1o7hF7e+w/JeUpdUhfqAh1Va7kkw=\nR:transport_test.go\na:0:0:444\nZ:Q1BiDTbhnQwWbyZHmdUq5bbdg2kCU=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/agent\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q14KAcmyWxTiFxrXYOCwhCTgivwNk=\nR:client_test.go\na:0:0:444\nZ:Q1fU5qwiAF23Bhs3cqjHjM/PdYSLo=\nR:example_test.go\na:0:0:444\nZ:Q1viol4ByT9aDbuPAZ4u/ytuJSEDU=\nR:forward.go\na:0:0:444\nZ:Q1V8ztltqBj0v3g3ULFE1yFPTgHhM=\nR:keyring.go\na:0:0:444\nZ:Q16rbj0n8iQhNTXwXuc8X0ldA0QUY=\nR:keyring_test.go\na:0:0:444\nZ:Q1JjWYPmoGdfhH5Q2bxx52c/u+XIk=\nR:server.go\na:0:0:444\nZ:Q1cXhKWYDU7mWxcOX4KynAllA9/5Q=\nR:server_test.go\na:0:0:444\nZ:Q1w0Nz/W9mlYwUPxye9OfJvw1gKaw=\nR:testdata_test.go\na:0:0:444\nZ:Q14obVXPQY5Lo1hoeJ1s9O0mAID+k=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/internal/bcrypt_pbkdf\nM:0:0:555\nR:bcrypt_pbkdf.go\na:0:0:444\nZ:Q17W0D6x4obdu8ABmBtP/L+FiPC04=\nR:bcrypt_pbkdf_test.go\na:0:0:444\nZ:Q1hkFT10XvQYV300Gb6B3pCnqh7Fo=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/knownhosts\nM:0:0:555\nR:knownhosts.go\na:0:0:444\nZ:Q1G95VZgGaKUda4y67q6tfLTkg2vY=\nR:knownhosts_test.go\na:0:0:444\nZ:Q16KHxxc1XeF3cYyaxy3wQuTb+yiI=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/terminal\nM:0:0:555\nR:terminal.go\na:0:0:444\nZ:Q1/I6lCHoiXY5rYndwbM74fW65C9A=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/test\nM:0:0:555\nR:agent_unix_test.go\na:0:0:444\nZ:Q1N5tjCYV9WZGooENT7UFMovlq0go=\nR:banner_test.go\na:0:0:444\nZ:Q1l+2QEeDJm25+CHEhXRIpc9jVZZo=\nR:cert_test.go\na:0:0:444\nZ:Q1NwzCB4qHCxNoBL0/+9gk1+NiU/8=\nR:dial_unix_test.go\na:0:0:444\nZ:Q1Aj+E6YXhOqTfmHt9xCE3CcFMdks=\nR:doc.go\na:0:0:444\nZ:Q16tgleKpLi87ZiNXJpL5Z1I7zuVc=\nR:forward_unix_test.go\na:0:0:444\nZ:Q17VUDx0z86DsvFbjsk3I6SXTiT64=\nR:multi_auth_test.go\na:0:0:444\nZ:Q1AGbeYJXImDjgnZkpSXT07MmySDo=\nR:session_test.go\na:0:0:444\nZ:Q1nAToMzYccKc+rZb6NkF4MgWnCfI=\nR:sshd_test_pw.c\na:0:0:444\nZ:Q1jLI2UdlQ0hLDXY5/M1bMrpsMTBc=\nR:test_unix_test.go\na:0:0:444\nZ:Q1pX6PQlP3wkNa7MlxmDLtcIj1K4w=\nR:testdata_test.go\na:0:0:444\nZ:Q1wjrDD6pVkZeSC0CLctCYfLL2QJE=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/ssh/testdata\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q12AkEckX5eLC3rBUYMpkieHUo9+k=\nR:keys.go\na:0:0:444\nZ:Q1Z9X1Gydn/hP7h/m1rUDtVjT9TU0=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/tea\nM:0:0:555\nR:cipher.go\na:0:0:444\nZ:Q18IlWyK7zNpqG0IfWOMgZ9iTDs6Q=\nR:tea_test.go\na:0:0:444\nZ:Q11r7uQ5VZnmJ2bhkDxRZcpgpU7kY=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/twofish\nM:0:0:555\nR:twofish.go\na:0:0:444\nZ:Q10uwlUL1s9PO+90AIFjQ91+2kKCo=\nR:twofish_test.go\na:0:0:444\nZ:Q1ctEI1cLe5S02Gvu79e6kVVb0jso=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/xtea\nM:0:0:555\nR:block.go\na:0:0:444\nZ:Q1Ygox2/UcL5CFhgBsBLOxkLidOt8=\nR:cipher.go\na:0:0:444\nZ:Q1FUDBf6jRYF0d5crAqdYavXxV/Ws=\nR:xtea_test.go\na:0:0:444\nZ:Q1J6G5Xqy09KVmbQHTUE9xmmd22X8=\nF:root/go/pkg/mod/golang.org/x/crypto@v0.1.0/xts\nM:0:0:555\nR:xts.go\na:0:0:444\nZ:Q1KIN8mG0Zft/Uqegjy6WZgISX8HA=\nR:xts_test.go\na:0:0:444\nZ:Q1HHl0nVVTn0acyKKbPO3PAGm8/Qc=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1ugyZgimknycsimXu8ccyyKJAxcE=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1c2mE8Og628WD7AFMP6CYgAcMcz4=\nR:go.sum\na:0:0:444\nZ:Q1HFI8k5sEt8ge2w3O3wa8W6ord+M=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/gosumcheck\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1AQa2GjXp4wvWhiJZfnB+J25aCNs=\nR:test.bash\na:0:0:444\nZ:Q1r07znVSmeOsxsPDZoCAzK7ce7rE=\nR:test.sum\na:0:0:444\nZ:Q18jrJkDP4ZP3U9A+pgBeXuX4qO7M=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/internal/lazyregexp\nM:0:0:555\nR:lazyre.go\na:0:0:444\nZ:Q1PRSKUzhIQvRNyQjp0uRW0/JqXwI=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/modfile\nM:0:0:555\nR:print.go\na:0:0:444\nZ:Q1/Hyw3vkozTYpBSlI7SvWcr77Dqc=\nR:read.go\na:0:0:444\nZ:Q1vvFOR+KMetFKbRTjjtUe+cMgUz4=\nR:read_test.go\na:0:0:444\nZ:Q1OIlWgn87pCTeXZnMfJ1a6o8kfig=\nR:rule.go\na:0:0:444\nZ:Q1wDOwd/tZfjw87CorQJ+GYGRFTGc=\nR:rule_test.go\na:0:0:444\nZ:Q1NNUoK9pqqVg/Wf0wdVnq2zmav5A=\nR:work.go\na:0:0:444\nZ:Q1Aws24eLUMHw22GUX18zG3W8SOOg=\nR:work_test.go\na:0:0:444\nZ:Q1gIeXJHdCsYt2h7q7XmxDotyjAdA=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/modfile/testdata\nM:0:0:555\nR:block.golden\na:0:0:444\nZ:Q1eAOClVvQFFDM7M9R+vDmFnrB/fE=\nR:block.in\na:0:0:444\nZ:Q1IB3kriHIMXhu+5CXACn2/QYZc7w=\nR:comment.golden\na:0:0:444\nZ:Q12D2XcNP7w7oB/FW8w8mXJ+5+qgA=\nR:comment.in\na:0:0:444\nZ:Q1WPtnCFRHVR9IXz5lrOAHZnkI8Bw=\nR:empty.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:empty.in\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:gopkg.in.golden\na:0:0:444\nZ:Q1poFe7UihBS5TTqpoPdN1GNsiNB0=\nR:module.golden\na:0:0:444\nZ:Q15prkm2ic7dHA0y/Sug/gINRmjqM=\nR:module.in\na:0:0:444\nZ:Q1SolXw4pWI59Y0uOQC1iS8wJAXgQ=\nR:replace.golden\na:0:0:444\nZ:Q1bPAxmxMmpzXzxdkqdY166361raI=\nR:replace.in\na:0:0:444\nZ:Q1ps2hitcTpbTAGQ5i7kB9ZKd+gLQ=\nR:replace2.golden\na:0:0:444\nZ:Q1E8g1C/XW8i56hhnhXL9acDV47G0=\nR:replace2.in\na:0:0:444\nZ:Q14Il0BiPbw0ccdHk8fRp+SC/xsBI=\nR:retract.golden\na:0:0:444\nZ:Q1qFp+uv27tkA7AFR10PikUt8yNhM=\nR:retract.in\na:0:0:444\nZ:Q1g1s/BFqr+yGXSzulBqeSfPG9wAE=\nR:rule1.golden\na:0:0:444\nZ:Q1DBbfs1ShHxQyS/0S6Hx6HqVIUN8=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/modfile/testdata/work\nM:0:0:555\nR:comment.golden\na:0:0:444\nZ:Q10KLuOMYYYf33n+haX9Zd4PpgFj0=\nR:comment.in\na:0:0:444\nZ:Q13SOmAd4xw3rbkO8BIEQ+hx5snfg=\nR:empty.golden\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:empty.in\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:replace.golden\na:0:0:444\nZ:Q1m+/WfoAUufJrrTHKSPlPxSGjNEE=\nR:replace.in\na:0:0:444\nZ:Q1aau0XD/5/hMu9CbpO1VrpLtStHM=\nR:replace2.golden\na:0:0:444\nZ:Q1Tvy8eHiJGaFq3ANEYYFJcaIFKqg=\nR:replace2.in\na:0:0:444\nZ:Q1n4wOrxZoyHmdU5Jr1U4vS0YKIKg=\nR:use.golden\na:0:0:444\nZ:Q1t5Ox/n0LlPWFgJznxazoSyJpnzA=\nR:use.in\na:0:0:444\nZ:Q1CNVrsIY6Mr4NkuO9f2bxl56Ikfo=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/module\nM:0:0:555\nR:module.go\na:0:0:444\nZ:Q1OFCC2qYzjErGYzUeXv00rRqXScI=\nR:module_test.go\na:0:0:444\nZ:Q1vuX94/nxEDYso7pNneIUcCgL7FM=\nR:pseudo.go\na:0:0:444\nZ:Q1ZtCISQHyG+K8k3TTR++Q7ffKwiI=\nR:pseudo_test.go\na:0:0:444\nZ:Q1OlSDhXPKLY6N1K4Tax7s3izy/Cg=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/semver\nM:0:0:555\nR:semver.go\na:0:0:444\nZ:Q1f/+TrS19R12VSjEUcI1EebqEuDY=\nR:semver_test.go\na:0:0:444\nZ:Q192iFKVL5sCOw6XIiNskNicGak+s=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/sumdb\nM:0:0:555\nR:cache.go\na:0:0:444\nZ:Q1rVesCBnK70Xw0OTi3/MR9Z29YXs=\nR:client.go\na:0:0:444\nZ:Q1A5KZJOj+sbH99auVqjtA1PT0qEM=\nR:client_test.go\na:0:0:444\nZ:Q1g6mOQDY/xOQkkJl0BzHPI/V+tho=\nR:server.go\na:0:0:444\nZ:Q1nBpXVTUsBz6fQ410YAF+3V0qdRU=\nR:test.go\na:0:0:444\nZ:Q1NloPUcxPM30jKe0x0D8TPXMcR/Q=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/sumdb/dirhash\nM:0:0:555\nR:hash.go\na:0:0:444\nZ:Q1en2mu7XhbTdvVT2gFfp+wY5aTm4=\nR:hash_test.go\na:0:0:444\nZ:Q1/LGNqwXhw2O2FSyYe+f6NjvGWNk=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/sumdb/note\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1atxisHBeIvYZRzhbzDxXYdSFbQI=\nR:note.go\na:0:0:444\nZ:Q12BlvFUNA4l2GAGcj6A4HPtub2F0=\nR:note_test.go\na:0:0:444\nZ:Q1RhioLTR5g+L6N65DkOvVTdi6XVg=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/sumdb/storage\nM:0:0:555\nR:mem.go\na:0:0:444\nZ:Q1t9VF6ibfnfzKleyOXyiTn/BYj6c=\nR:mem_test.go\na:0:0:444\nZ:Q1dtzb2E2XTMSAToaLMIlzuiwist0=\nR:storage.go\na:0:0:444\nZ:Q11WJbX7EyERvqFVysSHh+F08twpU=\nR:test.go\na:0:0:444\nZ:Q1TU+n/JWSQK7LaRqqvrZBm9vvJnE=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/sumdb/tlog\nM:0:0:555\nR:ct_test.go\na:0:0:444\nZ:Q1wiiEUr/V8MfY8zDYI2lM9BNF+aQ=\nR:note.go\na:0:0:444\nZ:Q1Cs/RO2ehhZPlZEAWTxG5tVzoBo4=\nR:note_test.go\na:0:0:444\nZ:Q1qRwNTlUvZtGyDwgrfKeVQOY+mMc=\nR:tile.go\na:0:0:444\nZ:Q1wRchdIb79u8oQlYcnefpD+0K8fA=\nR:tlog.go\na:0:0:444\nZ:Q1dX9Mktt8yt12Slb2U8/dZawmzuU=\nR:tlog_test.go\na:0:0:444\nZ:Q1eAbCLPI3EUs+kwZSX5yTR1J7Jog=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip\nM:0:0:555\nR:vendor_test.go\na:0:0:444\nZ:Q1vvF76zu84Zav4+BCyB0Wfa6F2lI=\nR:zip.go\na:0:0:444\nZ:Q1Nk8bDkszvnFgngvqVeqv2KyYy68=\nR:zip_test.go\na:0:0:444\nZ:Q192kKQqTqi89piK9zRzbMPRYkDew=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/check_dir\nM:0:0:555\nR:empty.txt\na:0:0:444\nZ:Q1xtpIrQewkYKAoucKEw8Rl1adChM=\nR:various.txt\na:0:0:444\nZ:Q1DXjfldBCyKmmRtzZ5OD/TRdLlWw=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/check_files\nM:0:0:555\nR:empty.txt\na:0:0:444\nZ:Q1xtpIrQewkYKAoucKEw8Rl1adChM=\nR:various.txt\na:0:0:444\nZ:Q1ZBrZspJc1bvYAaFGI/IcpsIq1Xo=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/check_zip\nM:0:0:555\nR:empty.txt\na:0:0:444\nZ:Q18faPx91Cht7jilqEhMMUXihnz88=\nR:various.txt\na:0:0:444\nZ:Q160y1wYUuWaG8xU3Y1r3Roh6vSgg=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/create\nM:0:0:555\nR:bad_file_path.txt\na:0:0:444\nZ:Q1Wh9iAicrLX15JGZYS+JRdgRNOyo=\nR:bad_gomod_case.txt\na:0:0:444\nZ:Q1Y2S9+7Afu9Y/0gb0R9aCXDxlUz4=\nR:bad_mod_path.txt\na:0:0:444\nZ:Q1MLwTXC5FmkyHtdyJDJpRecpRJzU=\nR:bad_mod_path_version_suffix.txt\na:0:0:444\nZ:Q1edugj+RoDZ/dmTmU48BZ6WpOkLI=\nR:bad_version.txt\na:0:0:444\nZ:Q1ow574grnAwAO8w7qj2XlQ4+LsTs=\nR:dup_file.txt\na:0:0:444\nZ:Q1N5BKrj8On/oWK/7WP+dazggIxsQ=\nR:dup_file_and_dir.txt\na:0:0:444\nZ:Q1J0d9juTRBSdHkIAopM35yqBsBn8=\nR:empty.txt\na:0:0:444\nZ:Q14Z0+GKsFjMt2IybDZ+kHsE6Pr64=\nR:exclude_cap_go_mod_submodule.txt\na:0:0:444\nZ:Q1W04cgkBB00G+iapmGbB5qURAoV4=\nR:exclude_submodule.txt\na:0:0:444\nZ:Q1H3CjiivfdcTi5SOKxVTccWa6Meg=\nR:exclude_vendor.txt\na:0:0:444\nZ:Q168vhTH9gxkk0FOU0RHifgLlhXSY=\nR:file_case_conflict.txt\na:0:0:444\nZ:Q1eDYxl1XvjvwI8ZC2sGWSTMuSuCc=\nR:go_mod_dir.txt\na:0:0:444\nZ:Q1wVQeLQcr3/iKvit0e3JB/sFgEnc=\nR:invalid_utf8_mod_path.txt\na:0:0:444\nZ:Q197CLJfTuIX7Ihc0rBRl4JrNLQdo=\nR:simple.txt\na:0:0:444\nZ:Q1lCGE1PEdEAvoy0eGHUDGgFdyynE=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/create_from_dir\nM:0:0:555\nR:bad_file_path.txt\na:0:0:444\nZ:Q1Wh9iAicrLX15JGZYS+JRdgRNOyo=\nR:bad_gomod_case.txt\na:0:0:444\nZ:Q1Y2S9+7Afu9Y/0gb0R9aCXDxlUz4=\nR:bad_mod_path.txt\na:0:0:444\nZ:Q1MLwTXC5FmkyHtdyJDJpRecpRJzU=\nR:bad_mod_path_version_suffix.txt\na:0:0:444\nZ:Q1edugj+RoDZ/dmTmU48BZ6WpOkLI=\nR:bad_version.txt\na:0:0:444\nZ:Q1ow574grnAwAO8w7qj2XlQ4+LsTs=\nR:empty.txt\na:0:0:444\nZ:Q14Z0+GKsFjMt2IybDZ+kHsE6Pr64=\nR:exclude_submodule.txt\na:0:0:444\nZ:Q1H3CjiivfdcTi5SOKxVTccWa6Meg=\nR:exclude_vcs.txt\na:0:0:444\nZ:Q16+WuuVOvUxWphklYWJg+Lv3S018=\nR:exclude_vendor.txt\na:0:0:444\nZ:Q168vhTH9gxkk0FOU0RHifgLlhXSY=\nR:go_mod_dir.txt\na:0:0:444\nZ:Q1wVQeLQcr3/iKvit0e3JB/sFgEnc=\nR:invalid_utf8_mod_path.txt\na:0:0:444\nZ:Q197CLJfTuIX7Ihc0rBRl4JrNLQdo=\nR:simple.txt\na:0:0:444\nZ:Q1lCGE1PEdEAvoy0eGHUDGgFdyynE=\nF:root/go/pkg/mod/golang.org/x/mod@v0.7.0/zip/testdata/unzip\nM:0:0:555\nR:bad_file_path.txt\na:0:0:444\nZ:Q12csSAOQ/E5Alg4Qlm1LngTXmPlw=\nR:bad_gomod_case.txt\na:0:0:444\nZ:Q1qxf5Lh6yEdbwu8/J3+JyD48qPs4=\nR:bad_mod_path.txt\na:0:0:444\nZ:Q1MLwTXC5FmkyHtdyJDJpRecpRJzU=\nR:bad_mod_path_version_suffix.txt\na:0:0:444\nZ:Q1edugj+RoDZ/dmTmU48BZ6WpOkLI=\nR:bad_submodule.txt\na:0:0:444\nZ:Q1dQjkZuL6OL+xQzmpBKPQzgy4CWU=\nR:bad_version.txt\na:0:0:444\nZ:Q1ow574grnAwAO8w7qj2XlQ4+LsTs=\nR:cap_go_mod_not_submodule.txt\na:0:0:444\nZ:Q1fHsT5MZbHUm79I+zrDrKtTaFhu4=\nR:dup_file.txt\na:0:0:444\nZ:Q1MoxggVBwfE597KW1NvutnU65Plc=\nR:dup_file_and_dir.txt\na:0:0:444\nZ:Q10RYgbpjUoD6SGL57sTSmyvJwckw=\nR:empty.txt\na:0:0:444\nZ:Q14Z0+GKsFjMt2IybDZ+kHsE6Pr64=\nR:file_case_conflict.txt\na:0:0:444\nZ:Q18ytAmtez4UeBNcv6DhLem7NQA0M=\nR:go_mod_dir.txt\na:0:0:444\nZ:Q1reZAztL9BP2dc4IVlhMGnRwP+dk=\nR:invalid_utf8_mod_path.txt\na:0:0:444\nZ:Q197CLJfTuIX7Ihc0rBRl4JrNLQdo=\nR:prefix_only.txt\na:0:0:444\nZ:Q1z/LfOmY3SV0nUjsKZ4s1K7xLbbQ=\nR:simple.txt\na:0:0:444\nZ:Q1J5IxN4xcuSDbx8ovfWPHbK2insQ=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1qOvpYzpzUBlYwx8N1RwwfkIaNpQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q12b741F8slxTHszD7gMS9bSYWeXM=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1eFriyaxf9zZ/yywKGI5/Q9+s8Zc=\nR:go.sum\na:0:0:444\nZ:Q1b5DG1tN1q2DVL/W5YDnvlDDvHkM=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/bpf\nM:0:0:555\nR:asm.go\na:0:0:444\nZ:Q1sCXiL1SNrLMosqgF0w+TjqXbFl8=\nR:constants.go\na:0:0:444\nZ:Q1AlRkV4aOVI2Uh/WfNLGfN1CgQPg=\nR:doc.go\na:0:0:444\nZ:Q11AQrTsUr7kudnRTNGAAnyRCdTNY=\nR:instructions.go\na:0:0:444\nZ:Q1/+/ovkSK1ZSYFWwwPAWm9d2kfeA=\nR:instructions_test.go\na:0:0:444\nZ:Q10gSgoa22uFbcof9xq7PVIjeTQJ0=\nR:setter.go\na:0:0:444\nZ:Q1bKYoh5d5OtAT+de7VfefTN8b5ms=\nR:vm.go\na:0:0:444\nZ:Q1T9y0VirdWjrP4pjsaUUAWnLTaEg=\nR:vm_aluop_test.go\na:0:0:444\nZ:Q171A1DLykFHWr2VTmLF6oyNtRU2o=\nR:vm_bpf_test.go\na:0:0:444\nZ:Q1KwlMv0YbQPjp0wjA3Q+9mpZ6TGE=\nR:vm_extension_test.go\na:0:0:444\nZ:Q1/GKc2ZjsSof9STwjbjF+eMwNCEI=\nR:vm_instructions.go\na:0:0:444\nZ:Q1GMkJLjFXD6RXy4q1KSjSx3QAJxA=\nR:vm_jump_test.go\na:0:0:444\nZ:Q125L70PsLpiTo+uU/YvoEGZqrkfk=\nR:vm_load_test.go\na:0:0:444\nZ:Q1BP2ujRBaBxt8gGRrzDVluArTG+I=\nR:vm_ret_test.go\na:0:0:444\nZ:Q1RGX+Q8hxSfb5zXOpWUgQfLw1wvw=\nR:vm_scratch_test.go\na:0:0:444\nZ:Q10+anabZ8SHi7r908vDFSnDkgV6Q=\nR:vm_test.go\na:0:0:444\nZ:Q1F9dib7pEBU29MEJTrYdQMA21Yv0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/bpf/testdata\nM:0:0:555\nR:all_instructions.bpf\na:0:0:444\nZ:Q1gmyxlkiXdQIpqewJztXP7j+ARsc=\nR:all_instructions.txt\na:0:0:444\nZ:Q194YNXwYXOPQLi9AQwzpoDbNctJo=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/context\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1zSMloOufIZVCmUl5V3P/SY8zxAA=\nR:context_test.go\na:0:0:444\nZ:Q1p+6zT8PVenjTfIU+p3991q0zpmo=\nR:go17.go\na:0:0:444\nZ:Q1bBlkJpLjQWWwmlncfekm8lYGIrI=\nR:go19.go\na:0:0:444\nZ:Q1RvwJoEIME4qMl+Cs83j1j7VeScE=\nR:pre_go17.go\na:0:0:444\nZ:Q1KsEbTw7sB7cMnBGJalv6Q28MC7A=\nR:pre_go19.go\na:0:0:444\nZ:Q11gwd6I+dci6k+QwFZNqR1NWnNgg=\nR:withtimeout_test.go\na:0:0:444\nZ:Q1LVvINw7/fjn20AJsDtevL2xVBE0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/context/ctxhttp\nM:0:0:555\nR:ctxhttp.go\na:0:0:444\nZ:Q1AbrTWxGUoyR4yleziCHX8QBVAtI=\nR:ctxhttp_test.go\na:0:0:444\nZ:Q1F/r0mIbD81l++Nfx+eE4cYfZ1sY=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/dict\nM:0:0:555\nR:dict.go\na:0:0:444\nZ:Q1q1SsIueqpCOBGEKTaFpVSGZjnu0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/dns\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/dns/dnsmessage\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1ZqyXuwFsITX2Xh8VjBumvKMZQoY=\nR:message.go\na:0:0:444\nZ:Q1++p1WlnW/zGFTSJWqppqct5sxp8=\nR:message_test.go\na:0:0:444\nZ:Q1BIenoXMkB+aCIn9z/UMKl0I0TTk=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html\nM:0:0:555\nR:const.go\na:0:0:444\nZ:Q1bHKx+u/nFQmsClihPegJGjlz0Bw=\nR:doc.go\na:0:0:444\nZ:Q1e6p0kcCPAmVvqW3hw1ztaCo2z+I=\nR:doctype.go\na:0:0:444\nZ:Q1X+QRx9Ie3v86VxtxOiIrYwaJVKE=\nR:entity.go\na:0:0:444\nZ:Q1BgCcRM3yqO3f4SZhNq2Tc2ciFa0=\nR:entity_test.go\na:0:0:444\nZ:Q1NVZ37ysluyIDnyVwYO4IUM1avP0=\nR:escape.go\na:0:0:444\nZ:Q12pY3KAtwcB02XqmcvaqxnyrdqJ0=\nR:escape_test.go\na:0:0:444\nZ:Q1GqND+QBla37bYeuPAQlUH/FGslg=\nR:example_test.go\na:0:0:444\nZ:Q1IWe1EdHLtCb6oX/SM1fraazfYZ8=\nR:foreign.go\na:0:0:444\nZ:Q1NEVrOisRn9yiKHneAViHuStFF/Y=\nR:node.go\na:0:0:444\nZ:Q1Z13oOmDvKjv2wi1PhMKhjJbmagk=\nR:node_test.go\na:0:0:444\nZ:Q1GRii3LSXZvTDZ2G6nNyS4MSrGOA=\nR:parse.go\na:0:0:444\nZ:Q1JduTSDesls1PCU0+hsc6QJC+dtk=\nR:parse_test.go\na:0:0:444\nZ:Q1WcIDLOUmi0hhT7wJt7hDu33iyYQ=\nR:render.go\na:0:0:444\nZ:Q1DNSW6lVEwnxQxayhcUW8D9ZCnp0=\nR:render_test.go\na:0:0:444\nZ:Q1lQj8+nMYvAd5vwLGtTnAWE+PsGI=\nR:token.go\na:0:0:444\nZ:Q10hOCC44GiOUpj9u8FmOujXV2eQ4=\nR:token_test.go\na:0:0:444\nZ:Q1GoNC22O0Ai4GT8soNmo5MWtJOD0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/atom\nM:0:0:555\nR:atom.go\na:0:0:444\nZ:Q1n88W2UhijQ7PkvUuyVEdq4kxDXc=\nR:atom_test.go\na:0:0:444\nZ:Q1aZZ1FKXJonUvwapbDPqwZjKs2ZQ=\nR:gen.go\na:0:0:444\nZ:Q1yDgG2EiXmlQDu1DwUALQalp+D1M=\nR:table.go\na:0:0:444\nZ:Q1g6w0zJ69NxfPTjwBbcqpCCc1BtY=\nR:table_test.go\na:0:0:444\nZ:Q1sbUMRVdZRv7b8oQWOwhuwQYgoZA=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/charset\nM:0:0:555\nR:charset.go\na:0:0:444\nZ:Q1+IQlQ5YR75tlXqxRlgDKx8KOddc=\nR:charset_test.go\na:0:0:444\nZ:Q18nAnDZS++K/smIPJLeO7R8dhMws=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/charset/testdata\nM:0:0:555\nR:HTTP-charset.html\na:0:0:444\nZ:Q1TfpdR0bO9TvzyCSp41BHYOzbb9A=\nR:HTTP-vs-UTF-8-BOM.html\na:0:0:444\nZ:Q1QoUwxuUFuk/nvtTPzGps3Q4iQAs=\nR:HTTP-vs-meta-charset.html\na:0:0:444\nZ:Q1dxf+XTHYBCaLHl/dTjIWIRaKgVM=\nR:HTTP-vs-meta-content.html\na:0:0:444\nZ:Q1mMsIJHXA1/KUT00jn+bzBxBMH7s=\nR:No-encoding-declaration.html\na:0:0:444\nZ:Q152d2xZvKlJ5EudNvl/gXD7bPMCQ=\nR:README\na:0:0:444\nZ:Q12dGe/xqnfLm8yz/BUBa2s+QgxBM=\nR:UTF-16BE-BOM.html\na:0:0:444\nZ:Q1mb4W0GO4ybJswcBNYNKwECz1YCU=\nR:UTF-16LE-BOM.html\na:0:0:444\nZ:Q1rA6PZJdAaTELj7Ei39hDrOBx728=\nR:UTF-8-BOM-vs-meta-charset.html\na:0:0:444\nZ:Q1J1FYLlqT7wxiQ9QfHKBR/z1/ST8=\nR:UTF-8-BOM-vs-meta-content.html\na:0:0:444\nZ:Q1JHqIqDROZb9M/4an87JpmkqGdHQ=\nR:meta-charset-attribute.html\na:0:0:444\nZ:Q16oGyO3E6m6RC+9kNwb0VGajkhD0=\nR:meta-content-attribute.html\na:0:0:444\nZ:Q14E7nLs2Bh1PE559ZoqT/pJK4iUI=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/testdata\nM:0:0:555\nR:go1.html\na:0:0:444\nZ:Q1DmeW02nuRBhh66o0q4CEG/j73Cg=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/testdata/go\nM:0:0:555\nR:issue_30600_parse_panics_in_cell_mode.dat\na:0:0:444\nZ:Q1pBsWG0ggSUz3nR7ueyc9hDSjuCg=\nR:issue_30961_error_nested_unknown_tag_types.dat\na:0:0:444\nZ:Q19XCbKpNEELPJExelU3vFFScgttE=\nR:raw_tags_to_be_ignored.dat\na:0:0:444\nZ:Q1HQWTc5XUUhYie97jt0WB6Jw6uSY=\nR:select.dat\na:0:0:444\nZ:Q11uWCwLn1FILrcq8or1VYjsqBXgw=\nR:template.dat\na:0:0:444\nZ:Q1dSHbVbcVLCovVt5GZ5ShSdjcfPw=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/testdata/webkit\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1to2F6URcWe4W5ZmSw8qBneEhCXI=\nR:adoption01.dat\na:0:0:444\nZ:Q1J++C5wxKzFvA8ZFANr5Mt/EzS8s=\nR:adoption02.dat\na:0:0:444\nZ:Q1HT8UGungS0MP6R5N1VSvBrJBLe4=\nR:blocks.dat\na:0:0:444\nZ:Q1y7A6GsNuXdwyYhLzyktkVtNBBIY=\nR:comments01.dat\na:0:0:444\nZ:Q1YTbDu4d9gPWq104ikwqyMyo+YuY=\nR:doctype01.dat\na:0:0:444\nZ:Q1LrxoTXO1CA9LtgUN30qgo8r6jVk=\nR:domjs-unsafe.dat\na:0:0:444\nZ:Q14tbbztGWhFMG7m0k+ibY9iQJdVc=\nR:entities01.dat\na:0:0:444\nZ:Q1gkfG77K2Ms5lc7Z6/jJnhTnoAo0=\nR:entities02.dat\na:0:0:444\nZ:Q164QMWNkMS+is/uBUCTSJJGmy1mw=\nR:foreign-fragment.dat\na:0:0:444\nZ:Q13jV5rYo4q4PYn7moA2CMv3QHb5o=\nR:html5test-com.dat\na:0:0:444\nZ:Q1TJjknbVQMkpkb3ZQUzq8mHNgRRM=\nR:inbody01.dat\na:0:0:444\nZ:Q16LsKuq1dp5Z2qHCai4F7hylBHKk=\nR:isindex.dat\na:0:0:444\nZ:Q1B0Qwo20mb3gCauApmgZ4oIAsLOw=\nR:main-element.dat\na:0:0:444\nZ:Q11YclbN8IuTL3NIIzsB4WXFD6sKU=\nR:math.dat\na:0:0:444\nZ:Q1KlEZWgFERcDmwEyNiZ7rzuwlFcw=\nR:menuitem-element.dat\na:0:0:444\nZ:Q1uy0Mb0hSmB/RPT0xhiOwB94BuxI=\nR:namespace-sensitivity.dat\na:0:0:444\nZ:Q18LCjFbVMD4y4+M7pYPcLm5W9W3Y=\nR:noscript01.dat\na:0:0:444\nZ:Q1zH0L5pnZpPSgBftlzOJ+RiCgYNA=\nR:pending-spec-changes-plain-text-unsafe.dat\na:0:0:444\nZ:Q1UNYIPWNZIQwCkBjX6vmrZzz0C1w=\nR:pending-spec-changes.dat\na:0:0:444\nZ:Q1fygu3FMtD2hBT9+1i16gR10saV0=\nR:plain-text-unsafe.dat\na:0:0:444\nZ:Q1QB8H/wuw6+97QH0sI+gmUl0/Jik=\nR:ruby.dat\na:0:0:444\nZ:Q1Lb/uj05akazF9/Zb51cm6gqxnjg=\nR:scriptdata01.dat\na:0:0:444\nZ:Q1kUdjHblwva99nK+0xlHlp/oMA3Q=\nR:svg.dat\na:0:0:444\nZ:Q1BCdSAdWgIGS9kRRh89nq3roNDlw=\nR:tables01.dat\na:0:0:444\nZ:Q1lTsg8izhm+LMpkH6EsKrGmcU83E=\nR:template.dat\na:0:0:444\nZ:Q1UalnTxczJVToAZGw+34oe1dR0/k=\nR:tests1.dat\na:0:0:444\nZ:Q1IP/9XYiiXrLUfOy1O4PRbOdmj+Q=\nR:tests10.dat\na:0:0:444\nZ:Q1gb/QxR3B6b9lP0vqNvTcZR3+QAs=\nR:tests11.dat\na:0:0:444\nZ:Q1uUAUOdP1Gk3L2FKPuXy3JNusjbE=\nR:tests12.dat\na:0:0:444\nZ:Q1pNbkXYZyu87U4CY8fUXkMEEdPao=\nR:tests14.dat\na:0:0:444\nZ:Q1mbupQVU/jUk3SRYvwa2crX+EVxo=\nR:tests15.dat\na:0:0:444\nZ:Q1X350/+Zqmye+kn7ZAZ0xO5yMDn8=\nR:tests16.dat\na:0:0:444\nZ:Q1EQxYDSMdoWBMMGlH01m4MzfE94M=\nR:tests17.dat\na:0:0:444\nZ:Q1a7e0hxQa28AjCfFcjT1EM43zkLk=\nR:tests18.dat\na:0:0:444\nZ:Q1qAuH6HnGoafzMTmN3rOHz9cEeRk=\nR:tests19.dat\na:0:0:444\nZ:Q1Min7MYFZvXe9/HIiEH0gNo0RQxY=\nR:tests2.dat\na:0:0:444\nZ:Q1vNXSk74t1U0Hl28Veqk9YB4HF1g=\nR:tests20.dat\na:0:0:444\nZ:Q1bOdC5PstVGFI26FQ8ge1lre+cIo=\nR:tests21.dat\na:0:0:444\nZ:Q1+EUkrbxEVN0hyY/Ru7bFxqjOhbg=\nR:tests22.dat\na:0:0:444\nZ:Q1jRrkGpanyDc6HuylLWB0C+SV8tU=\nR:tests23.dat\na:0:0:444\nZ:Q1jy3VyHyhw8RPVUPLS0oCGVtunes=\nR:tests24.dat\na:0:0:444\nZ:Q1vC0+booorO5g5COdt4xcVRb5H9c=\nR:tests25.dat\na:0:0:444\nZ:Q1LfKkaWepr0gwmxO0XwAXwVQrNko=\nR:tests26.dat\na:0:0:444\nZ:Q1Pefu6cwExX7bGE9gsvFG8IP2XXA=\nR:tests3.dat\na:0:0:444\nZ:Q1xHriVO8sFWMU9MYgl+YUsOGAnKI=\nR:tests4.dat\na:0:0:444\nZ:Q1VndZTX97KwimUGMRZenCoDF/01s=\nR:tests5.dat\na:0:0:444\nZ:Q1pcUbO57XrS9/pennjiQGv506jZs=\nR:tests6.dat\na:0:0:444\nZ:Q1Tho8E4hHnXgsjnfvpuvhOUOfpKs=\nR:tests7.dat\na:0:0:444\nZ:Q1EjMI7PtJpufokL0bRzbQ7NKiDS0=\nR:tests8.dat\na:0:0:444\nZ:Q1gIhQSPEyh96mNVZhRZxyB7bIcUo=\nR:tests9.dat\na:0:0:444\nZ:Q1xPxUZ79/hDvdbZcUvuA6DtCHE1M=\nR:tests_innerHTML_1.dat\na:0:0:444\nZ:Q1IssA/NQQg+HNTCCQrpmWAJZm8lg=\nR:tricky01.dat\na:0:0:444\nZ:Q1Akvr93g6SJxtEyXdGOh7ZTi5rRA=\nR:webkit01.dat\na:0:0:444\nZ:Q1xLRPdsto4XZwHUXa8RkJ3t7n3rQ=\nR:webkit02.dat\na:0:0:444\nZ:Q1WxlWnejAzopKjL3bkLSnILSxH9Q=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/html/testdata/webkit/scripted\nM:0:0:555\nR:adoption01.dat\na:0:0:444\nZ:Q1gFeFJRR0hHYDPsfjC1UrU44Wr7g=\nR:ark.dat\na:0:0:444\nZ:Q17kjcoPuvF38N/gXBTJAui+YrEoA=\nR:webkit01.dat\na:0:0:444\nZ:Q1BmMJWmUXuDFaUU188fuTrJrI2GQ=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http/httpguts\nM:0:0:555\nR:guts.go\na:0:0:444\nZ:Q17tC86+KxpKy2r4jv32Das0rdv7U=\nR:httplex.go\na:0:0:444\nZ:Q1N7Kc0nEr1x+XgLInDgjR886DE9g=\nR:httplex_test.go\na:0:0:444\nZ:Q1WpsSUU5qvzWykhZLGO/orLcN9Ww=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http/httpproxy\nM:0:0:555\nR:export_test.go\na:0:0:444\nZ:Q1IUUJyTBa8a6+lTaJl5W/LsCFpeY=\nR:go19_test.go\na:0:0:444\nZ:Q16yuI0G4ooH/XmlAhIAW0PkTxdgY=\nR:proxy.go\na:0:0:444\nZ:Q1vKYKGjeQPAEbdy+EH8Owrt8l6eY=\nR:proxy_test.go\na:0:0:444\nZ:Q1UUZvaZX7OUQ9BpILudk2x7tchIU=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http2\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1HqZJVuCCZj3r10pI2PCgUJhucnU=\nR:Dockerfile\na:0:0:444\nZ:Q1oZmkjXSJ5bjIl6BcajVk8TsL6gg=\nR:Makefile\na:0:0:444\nZ:Q1ZS/9C0QYkL1suHoVmrvgSnJWY10=\nR:ascii.go\na:0:0:444\nZ:Q19IVpT3hbaexaNcSPxRXVvY69HX0=\nR:ascii_test.go\na:0:0:444\nZ:Q1vy0e3W+sv4EkF9J+LIWbn73nov0=\nR:ciphers.go\na:0:0:444\nZ:Q1jOe59CdxoLVHzyPyGMLFc0ItC+0=\nR:ciphers_test.go\na:0:0:444\nZ:Q18yCauALSOIFSnq3l7RJYM4c5EsY=\nR:client_conn_pool.go\na:0:0:444\nZ:Q1pQ6qPo9/pdfBiC4GrFLuycVeT/M=\nR:databuffer.go\na:0:0:444\nZ:Q1guqmkYnhRPiSMqpLeK+IuoqsLR8=\nR:databuffer_test.go\na:0:0:444\nZ:Q10L6DGzNKIHbwEJri1M53vmS31Jw=\nR:errors.go\na:0:0:444\nZ:Q1e+bPpVKwq1zvejfVx9MP200dxCM=\nR:errors_test.go\na:0:0:444\nZ:Q1tX0+Miu4El/iEE98LLl9D7+fsNM=\nR:flow.go\na:0:0:444\nZ:Q1Ui/X+ersfTQcmA4HJv8DS3ebJ1U=\nR:flow_test.go\na:0:0:444\nZ:Q1J5C/oJN3PQkmYTEu//AX44BnBMw=\nR:frame.go\na:0:0:444\nZ:Q1FDaHnBF9X54UY6YWuQg3uPP2WzI=\nR:frame_test.go\na:0:0:444\nZ:Q1miLMDXXoq16aUEs777g3KKl/VeM=\nR:go111.go\na:0:0:444\nZ:Q1OMcd9KQfZgLm7FWFdqxkI77o8V4=\nR:go115.go\na:0:0:444\nZ:Q1/G+rJq0k9vfI7pV/NKk5AV2w790=\nR:go118.go\na:0:0:444\nZ:Q1wz6Cxbl+Ma7gtvyICrn8ubHUen8=\nR:gotrack.go\na:0:0:444\nZ:Q1oTalTBZzwfcQVNcWNI5zh3POjoc=\nR:gotrack_test.go\na:0:0:444\nZ:Q1lbWlzkW9rBB34hFmI5u3K849Azk=\nR:headermap.go\na:0:0:444\nZ:Q1+lV36JEhTOH1lZXBKdP/ZkxG3fE=\nR:http2.go\na:0:0:444\nZ:Q1Vv/5jLTyarCi9/VCM1/ImaLB8nQ=\nR:http2_test.go\na:0:0:444\nZ:Q1b6n2ypNy/rcOWaCYgM2YI3DxRAM=\nR:not_go111.go\na:0:0:444\nZ:Q1C250xjMUzQdkCSRDG1X2b0NVez8=\nR:not_go115.go\na:0:0:444\nZ:Q1Pql5x/ShhkeFEdtEe8AIIkd25LE=\nR:not_go118.go\na:0:0:444\nZ:Q1hzye8kujqwfTu8CdyKJ7scmJ6/Y=\nR:pipe.go\na:0:0:444\nZ:Q1Yw25u4OO0P2XHNv0TeeSLD7VVuc=\nR:pipe_test.go\na:0:0:444\nZ:Q1uxtBKymo3iEjLBVQLh0/Wq2uQVE=\nR:server.go\na:0:0:444\nZ:Q1u4n6q9nl7N18fSefT6+i0O03T7w=\nR:server_push_test.go\na:0:0:444\nZ:Q1V07XrSttEe9tqoCD2f0h8QeLuLU=\nR:server_test.go\na:0:0:444\nZ:Q1T0SyhXGS28i24FU4gaGyLJGGCJs=\nR:transport.go\na:0:0:444\nZ:Q1l2zE/XGK+47evg3CUWt+hh2easY=\nR:transport_go117_test.go\na:0:0:444\nZ:Q18aj/7zKpbfS4mXkl7azK1hzJspM=\nR:transport_test.go\na:0:0:444\nZ:Q143XtQIHSGCL2+uYFbL7xmGKszvU=\nR:write.go\na:0:0:444\nZ:Q1qrVi91rdoXdEEAN9222jPgPrjBw=\nR:writesched.go\na:0:0:444\nZ:Q16n9C8MwgsdL938uBqP7Nopc66ik=\nR:writesched_priority.go\na:0:0:444\nZ:Q1E3/ddgFOm4o+MHAZJooQOTXIVQI=\nR:writesched_priority_test.go\na:0:0:444\nZ:Q1Ax7FxxnCfJ5HUNm0c7kFWfuwQY0=\nR:writesched_random.go\na:0:0:444\nZ:Q17yUX/RdGXIGwi3Jw383HE+yJ3dw=\nR:writesched_random_test.go\na:0:0:444\nZ:Q1zNqwz7DrrP49v8VWbR2XjJ79K/U=\nR:writesched_test.go\na:0:0:444\nZ:Q1FO+ccRHPGzBnez3H1CAz3zAB/eM=\nR:z_spec_test.go\na:0:0:444\nZ:Q1Em34EF1E6gom3kQzpUiUaGPTjfE=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http2/h2c\nM:0:0:555\nR:h2c.go\na:0:0:444\nZ:Q1dFgMp5IPdXyofxAQV+pAna7DOf4=\nR:h2c_test.go\na:0:0:444\nZ:Q1tBbxpbFFE9hWIL4QXB43UClc4J8=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http2/h2i\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q198Ip29nwTss04aOF3P2cNnBkdho=\nR:h2i.go\na:0:0:444\nZ:Q1EzWWqgA3kh/S8jeKpRdxsrPNPe4=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http2/hpack\nM:0:0:555\nR:encode.go\na:0:0:444\nZ:Q11pe2ohmUtlfpwbDOkv1haZi8fnE=\nR:encode_test.go\na:0:0:444\nZ:Q1WhUp4qS+54tnltdQ4XkOjCYnfmE=\nR:hpack.go\na:0:0:444\nZ:Q1P6xoyCugZm2scrb5nATl2P8EqXs=\nR:hpack_test.go\na:0:0:444\nZ:Q1paIu9F/2pmtnFEQ/KvjnPeehhcU=\nR:huffman.go\na:0:0:444\nZ:Q1ktwtfwz9+CystEUZmNyHxage1Tg=\nR:tables.go\na:0:0:444\nZ:Q1GvXOmj9V7len4VDi9FMqsoCbf1U=\nR:tables_test.go\na:0:0:444\nZ:Q17SYp2XUVfWolGhTsohZPenockhk=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/http2/testdata\nM:0:0:555\nR:draft-ietf-httpbis-http2.xml\na:0:0:444\nZ:Q1tTsedV2+OKNiiI5pF45UgvsEvn4=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/icmp\nM:0:0:555\nR:diag_test.go\na:0:0:444\nZ:Q1m2MbDEVs8ym870/IB/p6s8kGIQY=\nR:dstunreach.go\na:0:0:444\nZ:Q1wxAGCZc4AhehVtExOFIHzQsVYt4=\nR:echo.go\na:0:0:444\nZ:Q1tN18PGsybtXOX98n1fCPaZR+8i8=\nR:endpoint.go\na:0:0:444\nZ:Q1GzIiHnbe1krZbu8luhIMBnKcres=\nR:example_test.go\na:0:0:444\nZ:Q1BGCmfWJh9wNIzDXlgHraG3a1Wog=\nR:extension.go\na:0:0:444\nZ:Q1op/wjN26a92GHR9haTkxRgvkkx8=\nR:extension_test.go\na:0:0:444\nZ:Q1rFSWiv8z05rDEUUjHBhOoKDmc3Y=\nR:helper_posix.go\na:0:0:444\nZ:Q1xH0kGZJRq0JCglA2P1GuH9bXJRE=\nR:interface.go\na:0:0:444\nZ:Q13aPXjxTLHthbAP8AxyvvCk3DXwU=\nR:ipv4.go\na:0:0:444\nZ:Q1YcOb5RR5oT7mW56NqCmGIE4kIbE=\nR:ipv4_test.go\na:0:0:444\nZ:Q1AJR2FwDON+PoGzHutuDL+Ho25ZA=\nR:ipv6.go\na:0:0:444\nZ:Q1+h1Q42vOO3Rd8wrb7HY3MVe+8M0=\nR:listen_posix.go\na:0:0:444\nZ:Q12LvQs9DKOE5wFiA8a/agHWM9eiA=\nR:listen_stub.go\na:0:0:444\nZ:Q1uB7A94+4Citj2D2GjYPGq6j0Sqg=\nR:message.go\na:0:0:444\nZ:Q1f/lYj3wdjWEN5MC7d0JU+D4g7z8=\nR:message_test.go\na:0:0:444\nZ:Q1fS2Jc+0tBH1u7XZo9pL78SA4v+w=\nR:messagebody.go\na:0:0:444\nZ:Q14UfqItlFbYogZIbqM8EGL3D+bWw=\nR:mpls.go\na:0:0:444\nZ:Q1Lij73H3yhqzvCo9nEE9cIlI/uBc=\nR:multipart.go\na:0:0:444\nZ:Q147ax0QTHgeeejm1SJo3ByFdHnNg=\nR:multipart_test.go\na:0:0:444\nZ:Q1on8RhI9+V8bsFf1DABnLkClw5pU=\nR:packettoobig.go\na:0:0:444\nZ:Q1K2Mw4FeirLr17Ia89GiaAFQ1ucw=\nR:paramprob.go\na:0:0:444\nZ:Q1c1s5F7dvdHIHRNcgmrxQo9IIprs=\nR:sys_freebsd.go\na:0:0:444\nZ:Q1SbwIKqxx44XNZUXpqNpKXw+z+mw=\nR:timeexceeded.go\na:0:0:444\nZ:Q1pPez30h6SrvgqWxDjrwKvcwXGwk=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/idna\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q13X1DCu2jxFLSYK7ShxBq6Gn39rg=\nR:go118.go\na:0:0:444\nZ:Q1gCbFJhH4lIqaNuFGmmGiVxeXJtQ=\nR:idna10.0.0.go\na:0:0:444\nZ:Q1frOU2ZLE6+yBBAscGkbIJgf0miw=\nR:idna9.0.0.go\na:0:0:444\nZ:Q17xF/eeHM9EMfVmFJRAsLpzj0DIU=\nR:idna_test.go\na:0:0:444\nZ:Q14WFoE95TtMC1yFUX/NAOZQdTIdQ=\nR:pre_go118.go\na:0:0:444\nZ:Q1flKEnYplggvshGlFNJsD3ElUvQs=\nR:punycode.go\na:0:0:444\nZ:Q1ZYJUOmJHKmnCM1SSbdTvWq+8pwk=\nR:punycode_test.go\na:0:0:444\nZ:Q1Lv7G8kMm1ZeArdCQNV1QWbpdhxo=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1s1vMsXtEtb2MVc8hifo2Ntm311I=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1Kr1WuZG+eTt/M4LgfMAbvSCp/3I=\nR:tables12.0.0.go\na:0:0:444\nZ:Q11zWdlAW8C1CAptKx3J+fplKrxF8=\nR:tables13.0.0.go\na:0:0:444\nZ:Q1xU70D0iFIQ0O3l17O4j7pW6cvfE=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1jghDY4V0V8ltNP363cKnCSg0D1s=\nR:trie.go\na:0:0:444\nZ:Q1wSI4f29vgwoAprG6JSs6hkvNkXY=\nR:trieval.go\na:0:0:444\nZ:Q1q6ExY0eZifxeEgiZHdWKmq0I9c0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal/iana\nM:0:0:555\nR:const.go\na:0:0:444\nZ:Q1mJ8LVUewZeqcI4SnXboeK+0mQNY=\nR:gen.go\na:0:0:444\nZ:Q1PoPscaGp7spKRvqeE4UhkdGYc/A=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal/socket\nM:0:0:555\nR:cmsghdr.go\na:0:0:444\nZ:Q1Ow5jlY8POn/LKPiJ8kwc9BTJNnM=\nR:cmsghdr_bsd.go\na:0:0:444\nZ:Q1oCG6Ou4kK75z0F3jzjBdk/6jziY=\nR:cmsghdr_linux_32bit.go\na:0:0:444\nZ:Q1KfFsjKj4Yil1rb/KL7OUDPFsPcw=\nR:cmsghdr_linux_64bit.go\na:0:0:444\nZ:Q1L60tLphS+O9Ti3G6KtvTtMBy+lc=\nR:cmsghdr_solaris_64bit.go\na:0:0:444\nZ:Q1Ne/TkfnJNps4RaqVa+Yy72vA08Y=\nR:cmsghdr_stub.go\na:0:0:444\nZ:Q1MKIEGPYcoZn+zgpvdCdlAnux/jI=\nR:cmsghdr_unix.go\na:0:0:444\nZ:Q1qWeTMMlp0pKtU2qMieqAQVQnwUs=\nR:cmsghdr_zos_s390x.go\na:0:0:444\nZ:Q1TwGJXf+1A7FqgOxg1K9Fp/oWH68=\nR:complete_dontwait.go\na:0:0:444\nZ:Q1B63ma6St5lWsrToVlAwoNMox3VQ=\nR:complete_nodontwait.go\na:0:0:444\nZ:Q1nPCG8jQozroESNwInDU38aMlOvY=\nR:defs_aix.go\na:0:0:444\nZ:Q1UWF5gtfJWZG0h7OBus34ixn5lYQ=\nR:defs_darwin.go\na:0:0:444\nZ:Q19F6ICD9AH46kH3E06Ef23kyENFs=\nR:defs_dragonfly.go\na:0:0:444\nZ:Q19F6ICD9AH46kH3E06Ef23kyENFs=\nR:defs_freebsd.go\na:0:0:444\nZ:Q19F6ICD9AH46kH3E06Ef23kyENFs=\nR:defs_linux.go\na:0:0:444\nZ:Q1fLQw+4HLLki9bUZEvkSU5mYJxKU=\nR:defs_netbsd.go\na:0:0:444\nZ:Q12EIabSbHBKaABuuHD9IpQGN3iF4=\nR:defs_openbsd.go\na:0:0:444\nZ:Q19F6ICD9AH46kH3E06Ef23kyENFs=\nR:defs_solaris.go\na:0:0:444\nZ:Q19F6ICD9AH46kH3E06Ef23kyENFs=\nR:empty.s\na:0:0:444\nZ:Q11uDDnjDYUS9L9lvi1R9byj/L5bM=\nR:error_unix.go\na:0:0:444\nZ:Q12TQ9yIpYb/9uhuboYufmwVuu2NE=\nR:error_windows.go\na:0:0:444\nZ:Q1lWz5OUtgWG0Od5OcHP9fM/uCCuY=\nR:iovec_32bit.go\na:0:0:444\nZ:Q1Unky1J+reSEf8jM5NnJkQ7AESQo=\nR:iovec_64bit.go\na:0:0:444\nZ:Q17KcWGw7Q86XrK7tDDHXMgi2lqnw=\nR:iovec_solaris_64bit.go\na:0:0:444\nZ:Q138gUMGfx4fy0vBTTLd4MIcN+8RE=\nR:iovec_stub.go\na:0:0:444\nZ:Q1bZM1bpxYh7LAFMVMFCK61Q1sbhg=\nR:mmsghdr_stub.go\na:0:0:444\nZ:Q15h+yI4Ln38zydLq2EWVoy4qmEno=\nR:mmsghdr_unix.go\na:0:0:444\nZ:Q1EIaiwyqoIMZTuadfZqSfyk9hvG4=\nR:msghdr_bsd.go\na:0:0:444\nZ:Q1y3v/CTtMX5WSKax1Qicjsrx2GAs=\nR:msghdr_bsdvar.go\na:0:0:444\nZ:Q1RRm+Vtm87NedtHM/Vrqf2EPoskw=\nR:msghdr_linux.go\na:0:0:444\nZ:Q1/Ri/Hp+fFGT7Va/VAM+sIsgw0zk=\nR:msghdr_linux_32bit.go\na:0:0:444\nZ:Q1s+Lb2nfqw8dvY4efZXBXwpHBA5w=\nR:msghdr_linux_64bit.go\na:0:0:444\nZ:Q1RRAsJNBdB7ArWiwNKlRi1Kqdm2A=\nR:msghdr_openbsd.go\na:0:0:444\nZ:Q1zPrl+UfEWSXANiSPe63XZiWrvuY=\nR:msghdr_solaris_64bit.go\na:0:0:444\nZ:Q1SYdkoT6dNQfm9l+MT6Oe6RsrRgg=\nR:msghdr_stub.go\na:0:0:444\nZ:Q1CEUwnowB9TR6VcjTb6dHKilbzqw=\nR:msghdr_zos_s390x.go\na:0:0:444\nZ:Q1TV6KitBjxROb5LGWseFqE34fkho=\nR:norace.go\na:0:0:444\nZ:Q1YLiNiEZdSZm62BfX9kmjJ9ijFEk=\nR:race.go\na:0:0:444\nZ:Q1Jw6vENVuJ0k1kNgzT2vyU6JCJiE=\nR:rawconn.go\na:0:0:444\nZ:Q12AOYKGrZenXK3vMnwhie/jK5DiA=\nR:rawconn_mmsg.go\na:0:0:444\nZ:Q1V/RQw4KuMpa4eSb0SeTYp2Bm/Bc=\nR:rawconn_msg.go\na:0:0:444\nZ:Q1xA9Y3S+/yi/8qe06wWOGV6eqTAs=\nR:rawconn_nommsg.go\na:0:0:444\nZ:Q1oQVUpzIz0XH4OqcqDP1oKstXa+c=\nR:rawconn_nomsg.go\na:0:0:444\nZ:Q1Rx0lo3KkwXwmOzQ6MnOxCK87+mg=\nR:socket.go\na:0:0:444\nZ:Q1ryrPbnn0lZmMRdVGYZVUxZDDwpU=\nR:socket_dontwait_test.go\na:0:0:444\nZ:Q1tTf5HDw3x61RjQ3DGGllGe2WJaw=\nR:socket_test.go\na:0:0:444\nZ:Q1n6a9zT/MIqtlwkdUNXH1nc+ykwQ=\nR:sys.go\na:0:0:444\nZ:Q1Or3Hv/VTjyTBwklQczdXYl3B3bw=\nR:sys_bsd.go\na:0:0:444\nZ:Q1D/9HjxV/soJbhcCOmG0aO7BJGBk=\nR:sys_const_unix.go\na:0:0:444\nZ:Q181lB+MDCNKu4oXEx7aV89yIG4u8=\nR:sys_linux.go\na:0:0:444\nZ:Q1SrB8C652G6UKq/D6j2WaNPgJisE=\nR:sys_linux_386.go\na:0:0:444\nZ:Q1Lw0WAYeyI9HYwZ6VspP+sb3ReY8=\nR:sys_linux_386.s\na:0:0:444\nZ:Q1dyAwVbHEg5dlEkq89KcIYZjqRlM=\nR:sys_linux_amd64.go\na:0:0:444\nZ:Q1hg+Llg4Mn7Fpw4BF2egiUwqc7+c=\nR:sys_linux_arm.go\na:0:0:444\nZ:Q1vfZTw+BPzpnruqIx3iUjnHrl9yc=\nR:sys_linux_arm64.go\na:0:0:444\nZ:Q1wOea3laUbAYGwj/uvnIlcTRlC8k=\nR:sys_linux_loong64.go\na:0:0:444\nZ:Q1CSlzR8Qi8UicWqRmwnaN6hbqy/8=\nR:sys_linux_mips.go\na:0:0:444\nZ:Q1Dk8OAixIIpU0pX2SBAmxP2Qa9+I=\nR:sys_linux_mips64.go\na:0:0:444\nZ:Q1SXTeiHSrEfPrqtxaUkLluWDvRuU=\nR:sys_linux_mips64le.go\na:0:0:444\nZ:Q1SXTeiHSrEfPrqtxaUkLluWDvRuU=\nR:sys_linux_mipsle.go\na:0:0:444\nZ:Q1Dk8OAixIIpU0pX2SBAmxP2Qa9+I=\nR:sys_linux_ppc.go\na:0:0:444\nZ:Q1fAv6VAqHMYpqZM522JW3VkDO1x8=\nR:sys_linux_ppc64.go\na:0:0:444\nZ:Q1IVsXPGBTONTlJ5nnRfHHwsdHdVM=\nR:sys_linux_ppc64le.go\na:0:0:444\nZ:Q1IVsXPGBTONTlJ5nnRfHHwsdHdVM=\nR:sys_linux_riscv64.go\na:0:0:444\nZ:Q1stFa8tLNFCvk5+X7Ke+wWB1sGVo=\nR:sys_linux_s390x.go\na:0:0:444\nZ:Q1Lw0WAYeyI9HYwZ6VspP+sb3ReY8=\nR:sys_linux_s390x.s\na:0:0:444\nZ:Q1p4AWTkszOJ1NWBPZOrsITkOOetg=\nR:sys_netbsd.go\na:0:0:444\nZ:Q1q3sY0nMVjXqTO+MYM2LIpzl7pvo=\nR:sys_posix.go\na:0:0:444\nZ:Q10hboX+60utYgACnjtLYIvgUpK5o=\nR:sys_stub.go\na:0:0:444\nZ:Q19IpO3vX0n4zoPwg8fzqUA+m0XAk=\nR:sys_unix.go\na:0:0:444\nZ:Q1iyYht2lGzZmt0D0hnm2jngnGClM=\nR:sys_windows.go\na:0:0:444\nZ:Q1nR09fvJAt4Dm+HAzCw3T1bQWW4U=\nR:sys_zos_s390x.go\na:0:0:444\nZ:Q15W5xeYS6+I/WNcxLOXYUbqOhz7E=\nR:sys_zos_s390x.s\na:0:0:444\nZ:Q1BnUjxIxcuj0/4qrgawQ6pv3UwdE=\nR:zsys_aix_ppc64.go\na:0:0:444\nZ:Q129neIu+IHbpCNaZGz4C5NdP4eTE=\nR:zsys_darwin_amd64.go\na:0:0:444\nZ:Q1TRzssOWZAS7v1xPOMjXKet5pD+8=\nR:zsys_darwin_arm64.go\na:0:0:444\nZ:Q1TRzssOWZAS7v1xPOMjXKet5pD+8=\nR:zsys_dragonfly_amd64.go\na:0:0:444\nZ:Q1zlVIfcjSAmr5HSJDpNTe+9cO9Xc=\nR:zsys_freebsd_386.go\na:0:0:444\nZ:Q1xRqC2wBsMthHDuwoWMtK+b/e8SY=\nR:zsys_freebsd_amd64.go\na:0:0:444\nZ:Q12OBNFmaNkbzYGRHV0hlLHseSxtM=\nR:zsys_freebsd_arm.go\na:0:0:444\nZ:Q1xRqC2wBsMthHDuwoWMtK+b/e8SY=\nR:zsys_freebsd_arm64.go\na:0:0:444\nZ:Q12OBNFmaNkbzYGRHV0hlLHseSxtM=\nR:zsys_freebsd_riscv64.go\na:0:0:444\nZ:Q1j8+eiB7W6Pgla772tctO/XDcbW4=\nR:zsys_linux_386.go\na:0:0:444\nZ:Q1q6yeXiRResBL3Q+ktMNwUXh/+wg=\nR:zsys_linux_amd64.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_arm.go\na:0:0:444\nZ:Q1q6yeXiRResBL3Q+ktMNwUXh/+wg=\nR:zsys_linux_arm64.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_loong64.go\na:0:0:444\nZ:Q1768vXfGpglqpqteI0SQWlVGL4J0=\nR:zsys_linux_mips.go\na:0:0:444\nZ:Q1q6yeXiRResBL3Q+ktMNwUXh/+wg=\nR:zsys_linux_mips64.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_mips64le.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_mipsle.go\na:0:0:444\nZ:Q1q6yeXiRResBL3Q+ktMNwUXh/+wg=\nR:zsys_linux_ppc.go\na:0:0:444\nZ:Q1q6yeXiRResBL3Q+ktMNwUXh/+wg=\nR:zsys_linux_ppc64.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_ppc64le.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_linux_riscv64.go\na:0:0:444\nZ:Q1h3YoINaHQxrCr8gW55KOLSDlUz4=\nR:zsys_linux_s390x.go\na:0:0:444\nZ:Q1kSWw/Luwyzzrw0RofU3IKj4IQQ4=\nR:zsys_netbsd_386.go\na:0:0:444\nZ:Q1TeeAdDu2j5d5qWsRLgPTrdfUj4g=\nR:zsys_netbsd_amd64.go\na:0:0:444\nZ:Q1jl1+OJTXXoOfB1euWlmtvTdPDbc=\nR:zsys_netbsd_arm.go\na:0:0:444\nZ:Q1TeeAdDu2j5d5qWsRLgPTrdfUj4g=\nR:zsys_netbsd_arm64.go\na:0:0:444\nZ:Q1jl1+OJTXXoOfB1euWlmtvTdPDbc=\nR:zsys_openbsd_386.go\na:0:0:444\nZ:Q1i7IaUHW4I41GrmWwog4P5KCrM2A=\nR:zsys_openbsd_amd64.go\na:0:0:444\nZ:Q1nff55gQ/clUIwk7X0UJjbPajdWY=\nR:zsys_openbsd_arm.go\na:0:0:444\nZ:Q1i7IaUHW4I41GrmWwog4P5KCrM2A=\nR:zsys_openbsd_arm64.go\na:0:0:444\nZ:Q1nff55gQ/clUIwk7X0UJjbPajdWY=\nR:zsys_openbsd_mips64.go\na:0:0:444\nZ:Q1NMnp0EOrj8Ptqd4PoVtw12Xzpp8=\nR:zsys_openbsd_ppc64.go\na:0:0:444\nZ:Q1yGBhH7ueORRrCzeOhdaIDPZK+0Q=\nR:zsys_openbsd_riscv64.go\na:0:0:444\nZ:Q1yGBhH7ueORRrCzeOhdaIDPZK+0Q=\nR:zsys_solaris_amd64.go\na:0:0:444\nZ:Q1ssLGEXFjPk1A41AuWM53noZ6T6E=\nR:zsys_zos_s390x.go\na:0:0:444\nZ:Q1ZFcRMdSXBbm73+Sq/2YrAp1MaGM=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal/socks\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1ErJOnu+FAm+RZhiBPveQkyzbDkA=\nR:dial_test.go\na:0:0:444\nZ:Q1q5vYoV8FE5VT7shhuWJjmCJB2wg=\nR:socks.go\na:0:0:444\nZ:Q1133S/bIzRM7apgv/8xzEk7vx9z8=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal/sockstest\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1nbOyJMc6lYO40Zx+J8FRO8KW0yI=\nR:server_test.go\na:0:0:444\nZ:Q1KI+9I0vZCZ/lPBj1YUkEM68NtTA=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/internal/timeseries\nM:0:0:555\nR:timeseries.go\na:0:0:444\nZ:Q1BtxHBcnTSEeq2RVN6izdjcsa2Jk=\nR:timeseries_test.go\na:0:0:444\nZ:Q1mJP8ETfvFGsCR5OjYmw/Ik5SWoo=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/ipv4\nM:0:0:555\nR:batch.go\na:0:0:444\nZ:Q1n5nnMNpQlBAWGMdoSZWtXg472Jc=\nR:bpf_test.go\na:0:0:444\nZ:Q1/vD7G08qNvS8eANjYRdFha4qTtA=\nR:control.go\na:0:0:444\nZ:Q1I70DSoo2p7Uby64i24o7bmnBslI=\nR:control_bsd.go\na:0:0:444\nZ:Q1eOODMWUzVgGKIERqqirtf2zbBW0=\nR:control_pktinfo.go\na:0:0:444\nZ:Q1CVWt80IUx6Zmi1JIW23qrfg26aQ=\nR:control_stub.go\na:0:0:444\nZ:Q1JLn2OD+Bkys0b7Oalgt2u5mInv0=\nR:control_test.go\na:0:0:444\nZ:Q188F1x3KMyjSOvBrvTfWKwdD3k+w=\nR:control_unix.go\na:0:0:444\nZ:Q1hCnC4Uy+JWNsFaz8MI8sfm5CAbY=\nR:control_windows.go\na:0:0:444\nZ:Q1EOTPLxjtBvqoGxuw9KkakLxtEeY=\nR:control_zos.go\na:0:0:444\nZ:Q1A5JJ1OK14mQcQlyQM1lPxvfmDN0=\nR:defs_aix.go\na:0:0:444\nZ:Q1rQd5PoyZCatdjMxkVplRk3h6VUg=\nR:defs_darwin.go\na:0:0:444\nZ:Q1HJtcimhnE7g5n8i4xrWyVZipgUs=\nR:defs_dragonfly.go\na:0:0:444\nZ:Q1P3vbyKfg9thcsuf0lmCuh2O/eTg=\nR:defs_freebsd.go\na:0:0:444\nZ:Q1JMb2cTuqsbnNV33KPdVKTpSsBhk=\nR:defs_linux.go\na:0:0:444\nZ:Q1GDiljYichpZJ3oOLmlaKc5+Xpm4=\nR:defs_netbsd.go\na:0:0:444\nZ:Q1P3vbyKfg9thcsuf0lmCuh2O/eTg=\nR:defs_openbsd.go\na:0:0:444\nZ:Q1P3vbyKfg9thcsuf0lmCuh2O/eTg=\nR:defs_solaris.go\na:0:0:444\nZ:Q1HJtcimhnE7g5n8i4xrWyVZipgUs=\nR:dgramopt.go\na:0:0:444\nZ:Q1KFiMjX5MoLnC7gfRiPCv/ssusDE=\nR:doc.go\na:0:0:444\nZ:Q1+1w9vDYQZ74FL0t3y/VyhInHU4Y=\nR:endpoint.go\na:0:0:444\nZ:Q1Wo3I/ea2A4Q3XYhioi8zLrU2WDc=\nR:errors_other_test.go\na:0:0:444\nZ:Q1JIx7O+EvirXOQaXi81xKtViNER4=\nR:errors_unix_test.go\na:0:0:444\nZ:Q1GDb69RdN+IgVay/9smz7/g+fGiA=\nR:example_test.go\na:0:0:444\nZ:Q1X4HJnGlahS0t+AtnwfbfNl2Fwck=\nR:gen.go\na:0:0:444\nZ:Q1uVHH7gnA6BZmz81p9X0x3p8QmOU=\nR:genericopt.go\na:0:0:444\nZ:Q1vrOP91LZY/v8EAeWV3zo1R9h1ho=\nR:header.go\na:0:0:444\nZ:Q1TmayKSaX7PTCbVkhj2xAUXWSPpc=\nR:header_test.go\na:0:0:444\nZ:Q1EiNHHboueGMq4QMb5WiYlAihyJc=\nR:helper.go\na:0:0:444\nZ:Q1Ht0nad4EcdcTsAI4EIAG/I31AR4=\nR:helper_posix_test.go\na:0:0:444\nZ:Q1m5bYtLa8Z8yJLcan1ZaRBNRzWFM=\nR:helper_stub_test.go\na:0:0:444\nZ:Q16YCfK3+enKf8DXA0OAzGxleUJh0=\nR:iana.go\na:0:0:444\nZ:Q10CzpNMi+yDIvIUVB+D5WtDUbPgI=\nR:icmp.go\na:0:0:444\nZ:Q14xUmpMoJTA1zwZcD+Cn9jXobZLM=\nR:icmp_linux.go\na:0:0:444\nZ:Q1W71EvawI3hX1klNvacumz5OFK+8=\nR:icmp_stub.go\na:0:0:444\nZ:Q14tQMXVYw8nvTTfo9o4yd6QKPF5w=\nR:icmp_test.go\na:0:0:444\nZ:Q1odkDqsitUazpc1tT5zl0bF83EtE=\nR:multicast_test.go\na:0:0:444\nZ:Q1YCGEXd20kI5nw2oBgQh1bHrFdkc=\nR:multicastlistener_test.go\na:0:0:444\nZ:Q1i985+VnMKGkgmXDtSKvvsh4VI3E=\nR:multicastsockopt_test.go\na:0:0:444\nZ:Q1ElKebslZQwhwzFC30T1i9L/Ryys=\nR:packet.go\na:0:0:444\nZ:Q1nDTulMqR2wbuoAGQe8GAm8PCFUc=\nR:payload.go\na:0:0:444\nZ:Q1YavvhCYIZySuzCObCLAh3Tu7Z68=\nR:payload_cmsg.go\na:0:0:444\nZ:Q1MC3L+RifZxl1anKrMHE3aN7Iz/o=\nR:payload_nocmsg.go\na:0:0:444\nZ:Q1ypTYDntt+G4jpJKw0Q6OMAaUjVE=\nR:readwrite_test.go\na:0:0:444\nZ:Q1wCnNRPGpYMMIhIV5j2rkuDUO7Io=\nR:sockopt.go\na:0:0:444\nZ:Q198QFpx1cUCfOyLYovXtdrNO+/+0=\nR:sockopt_posix.go\na:0:0:444\nZ:Q1ZkyXs2tsmVF2YnGgSwYzKLlwtBY=\nR:sockopt_stub.go\na:0:0:444\nZ:Q1eaX8H2y5Vm9Gd41r8uv8mIDA+ac=\nR:sys_aix.go\na:0:0:444\nZ:Q1bkanU6cqfEzzSsqAMbktmQm8f24=\nR:sys_asmreq.go\na:0:0:444\nZ:Q1A8fRDwkSsSHBojzDbTAekEBK9jM=\nR:sys_asmreq_stub.go\na:0:0:444\nZ:Q12taUa/ZSEJoLVkpmOQRWiHeo1GI=\nR:sys_asmreqn.go\na:0:0:444\nZ:Q1kC+rtZ4smInh0JiB96nWM+jIG6s=\nR:sys_asmreqn_stub.go\na:0:0:444\nZ:Q1AirPcHElLa3zXRduo5/zkGaKIJE=\nR:sys_bpf.go\na:0:0:444\nZ:Q1f1lbCLdht8VUb+T58xxBdhtXEPU=\nR:sys_bpf_stub.go\na:0:0:444\nZ:Q1g++OMMk6mep5XrWN+rpnZWF84O8=\nR:sys_bsd.go\na:0:0:444\nZ:Q1SofIb3+Is3puUzScpRGZ56jEmPw=\nR:sys_darwin.go\na:0:0:444\nZ:Q1xC1ozPgPiHCBKgIwoZ2ebuS6MfM=\nR:sys_dragonfly.go\na:0:0:444\nZ:Q1DHRbOsb5r2P/IWb82tx1Kco9SXo=\nR:sys_freebsd.go\na:0:0:444\nZ:Q1qvG1JBScew/MF/3cgOBmLmbpHKY=\nR:sys_linux.go\na:0:0:444\nZ:Q1ULdY+YjVtZSmxxJlwyf05Oox7hU=\nR:sys_solaris.go\na:0:0:444\nZ:Q1Py50hWA4DOwEIfuXrKW0nc9VtbQ=\nR:sys_ssmreq.go\na:0:0:444\nZ:Q1lZwBBOjFGkDsMlws8RZ+uTSygFk=\nR:sys_ssmreq_stub.go\na:0:0:444\nZ:Q1afQu5T6Eb4fvBl0SxCRByGsa6TQ=\nR:sys_stub.go\na:0:0:444\nZ:Q1yr6V4R0RdQJdA7WeMh7Zou6RjU8=\nR:sys_windows.go\na:0:0:444\nZ:Q1dmvk/h65aHhVnTH4rumjJSv+/YA=\nR:sys_zos.go\na:0:0:444\nZ:Q1SSR76Xo8B4GmanK6P3eToD1diJM=\nR:unicast_test.go\na:0:0:444\nZ:Q1uDOtMJHhGEBDHyItH70h+JCWBPQ=\nR:unicastsockopt_test.go\na:0:0:444\nZ:Q1K1s6SC3PSMkLmQLu8FWaaICL2q4=\nR:zsys_aix_ppc64.go\na:0:0:444\nZ:Q1g33G8zRoDcxUpuQQr/gkhVoPyPA=\nR:zsys_darwin.go\na:0:0:444\nZ:Q1UWdOWKToFjM2a30L+gMTRSJBiSY=\nR:zsys_dragonfly.go\na:0:0:444\nZ:Q14ihhFxZV68PFI1Rci/S3+WCgZMg=\nR:zsys_freebsd_386.go\na:0:0:444\nZ:Q1qdFKTSDbumbKpK35qbQNf8wvK0Q=\nR:zsys_freebsd_amd64.go\na:0:0:444\nZ:Q1XTWY3IEqIjHFawRLYPy1+e8rePw=\nR:zsys_freebsd_arm.go\na:0:0:444\nZ:Q1XTWY3IEqIjHFawRLYPy1+e8rePw=\nR:zsys_freebsd_arm64.go\na:0:0:444\nZ:Q1ExRY6wrOXtGZT5d6GjQFnCTuqq8=\nR:zsys_freebsd_riscv64.go\na:0:0:444\nZ:Q1ExRY6wrOXtGZT5d6GjQFnCTuqq8=\nR:zsys_linux_386.go\na:0:0:444\nZ:Q1BONeYLgH0UY86KV3pHsIi0ln7nw=\nR:zsys_linux_amd64.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_arm.go\na:0:0:444\nZ:Q1BONeYLgH0UY86KV3pHsIi0ln7nw=\nR:zsys_linux_arm64.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_loong64.go\na:0:0:444\nZ:Q1Ng29INViJY15JPKafFaxRbeMqZ4=\nR:zsys_linux_mips.go\na:0:0:444\nZ:Q1BONeYLgH0UY86KV3pHsIi0ln7nw=\nR:zsys_linux_mips64.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_mips64le.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_mipsle.go\na:0:0:444\nZ:Q1BONeYLgH0UY86KV3pHsIi0ln7nw=\nR:zsys_linux_ppc.go\na:0:0:444\nZ:Q1UrTiCD6YRf6k9iy9OAanKKj3+dQ=\nR:zsys_linux_ppc64.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_ppc64le.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_linux_riscv64.go\na:0:0:444\nZ:Q1UF2edU5FgC+8boBbRq5J/Qi9Bxo=\nR:zsys_linux_s390x.go\na:0:0:444\nZ:Q1vemeeHVEUCLi04+tzPjQkHT4Djo=\nR:zsys_netbsd.go\na:0:0:444\nZ:Q1B/rL8htdphBq9eWfIngrRqtB4ng=\nR:zsys_openbsd.go\na:0:0:444\nZ:Q1ePdNSJ+EI6zHgysQw9bI3lgZSW8=\nR:zsys_solaris.go\na:0:0:444\nZ:Q13OZt3mH0ElasMlQAHMZF88PzQnY=\nR:zsys_zos_s390x.go\na:0:0:444\nZ:Q1Z5S7sTQA7KwIXzy2PuIP+FB1ZdY=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/ipv6\nM:0:0:555\nR:batch.go\na:0:0:444\nZ:Q1Rv6EIpCwAGc2c47lBuqlZiP89gc=\nR:bpf_test.go\na:0:0:444\nZ:Q1u/Iba2R/BSt7SKiIly7gsSfhqc0=\nR:control.go\na:0:0:444\nZ:Q1eYZ7tlsCSLPFuCAHzZ5NpLOMZk8=\nR:control_rfc2292_unix.go\na:0:0:444\nZ:Q1/9+IgCgThCbPgMdYCXhv9+IA4K0=\nR:control_rfc3542_unix.go\na:0:0:444\nZ:Q1EzK3FIIPy0fKbyRXzjfQoFMlUQ4=\nR:control_stub.go\na:0:0:444\nZ:Q1f126cMdXpTSDrdIG0JVvEXj29tk=\nR:control_test.go\na:0:0:444\nZ:Q1vcEKy0nLmSIitE9SES7A/3KdxCc=\nR:control_unix.go\na:0:0:444\nZ:Q1Ia4cESUhSOyFCHZis/9dhlnCdw0=\nR:control_windows.go\na:0:0:444\nZ:Q1yEwKXZJ4gHh/K0BtsuCPxQOdlIk=\nR:defs_aix.go\na:0:0:444\nZ:Q1qHAp2J5UftMW5E45HUPBeU21/l8=\nR:defs_darwin.go\na:0:0:444\nZ:Q1hVVZ3RPv0W5+Ir2S+rEmWL0zH4k=\nR:defs_dragonfly.go\na:0:0:444\nZ:Q1rJoP8ZopiffWAap9SgP70QmmrQw=\nR:defs_freebsd.go\na:0:0:444\nZ:Q1yoCURt9LHnagIMaqLJvH+YyV+TM=\nR:defs_linux.go\na:0:0:444\nZ:Q12HZKudVCUmt7xBeP8kmqlPXYOHE=\nR:defs_netbsd.go\na:0:0:444\nZ:Q1rJoP8ZopiffWAap9SgP70QmmrQw=\nR:defs_openbsd.go\na:0:0:444\nZ:Q1rJoP8ZopiffWAap9SgP70QmmrQw=\nR:defs_solaris.go\na:0:0:444\nZ:Q1fJ+dsGlzYkeCZDxB0dAdgQKnE8s=\nR:dgramopt.go\na:0:0:444\nZ:Q1jsMObhOR5a+JPu2r6U2hKrtA3i8=\nR:doc.go\na:0:0:444\nZ:Q1sljuwc7fJ0oL5znZb5+v5Igo+tg=\nR:endpoint.go\na:0:0:444\nZ:Q1yol1LUWUpyxvb5yzyn29wmmpv90=\nR:errors_other_test.go\na:0:0:444\nZ:Q1+ZcTXa07RvtC+C6IHqgyKHHkKyM=\nR:errors_unix_test.go\na:0:0:444\nZ:Q1IfBPjhyW/r25obdIMOnamjuoU2o=\nR:example_test.go\na:0:0:444\nZ:Q14HrecopxE2tBN2FuFL3nqxK7MM8=\nR:gen.go\na:0:0:444\nZ:Q1Hs/hirTH7kFrR4j90UhmrV3Vsdk=\nR:genericopt.go\na:0:0:444\nZ:Q1Xuw6VLQEAJ4mKWF5d41r7myCMzs=\nR:header.go\na:0:0:444\nZ:Q19u5fLCWvd4IbCf/XngFT6CzZPV8=\nR:header_test.go\na:0:0:444\nZ:Q13frGI7/Wi+UEJSs7/jyZaorJHnY=\nR:helper.go\na:0:0:444\nZ:Q1741FrpyuNLhKPLPRQknA8PomXmk=\nR:helper_posix_test.go\na:0:0:444\nZ:Q1jfGels+jeFoTKXMUxngpjwiVMNM=\nR:helper_stub_test.go\na:0:0:444\nZ:Q1ZKZJ506LQhsRbzQJZhsIhF1+2h4=\nR:helper_unix_test.go\na:0:0:444\nZ:Q1l35mIRaVetuP3Fa8EmnURyb7Cb8=\nR:helper_windows_test.go\na:0:0:444\nZ:Q1g7PnamtwoR4+5ici1EoM1xElt0o=\nR:iana.go\na:0:0:444\nZ:Q1mjIEWD4YtOUkEEXyJClRF5F3ieg=\nR:icmp.go\na:0:0:444\nZ:Q1GVpuNggTcGBlDR2yJ9iC8kan3OI=\nR:icmp_bsd.go\na:0:0:444\nZ:Q1GbHVmad2qeHZWjsX6h8Ae2kVvGY=\nR:icmp_linux.go\na:0:0:444\nZ:Q1tHXPar/ykUypb85DCzLiLxdGuvo=\nR:icmp_solaris.go\na:0:0:444\nZ:Q1KmUgWERhbn3aP2UrCQYvIvWnpeU=\nR:icmp_stub.go\na:0:0:444\nZ:Q1qVGUQzUWxgjZd5ewa4WPcGa3ZHI=\nR:icmp_test.go\na:0:0:444\nZ:Q1YLuV7ya1NCsdTsZkGV/KR50D0+o=\nR:icmp_windows.go\na:0:0:444\nZ:Q1+sRN76V4Zj4rE35Nk7XwiUC5jfw=\nR:icmp_zos.go\na:0:0:444\nZ:Q1l9BaEElOwdugLoxU4rG3LFsREdY=\nR:mocktransponder_test.go\na:0:0:444\nZ:Q1ZTZMSHb8Bbq4zOpjsn2PgbUUvIw=\nR:multicast_test.go\na:0:0:444\nZ:Q1jjUs7ggqoBqJ4Jq3MgC+7UzgNoM=\nR:multicastlistener_test.go\na:0:0:444\nZ:Q18Yar2y7SuTNvoWoQbbV0jOfUIIM=\nR:multicastsockopt_test.go\na:0:0:444\nZ:Q14YtjLWR7l4sSawZN9cCyVfr/NuY=\nR:payload.go\na:0:0:444\nZ:Q16zI3DuL+4phYXQOocJodY7q5sUU=\nR:payload_cmsg.go\na:0:0:444\nZ:Q1qJRTkDrSnR5K9hB7vIG5OPzPmgU=\nR:payload_nocmsg.go\na:0:0:444\nZ:Q1FVNcdzKPijJ9POvzReCNMQabGEs=\nR:readwrite_test.go\na:0:0:444\nZ:Q1tKypq6KCfaKwYkoTLy5+ajb6oRo=\nR:sockopt.go\na:0:0:444\nZ:Q1/wKhZ+MrSlSI5WG7gR1x18QfAOI=\nR:sockopt_posix.go\na:0:0:444\nZ:Q14+L8yP4QrpmfZ0lN/wlqH2hlkG4=\nR:sockopt_stub.go\na:0:0:444\nZ:Q1RYQHdenBUnRzpXSWh/m8neso2wc=\nR:sockopt_test.go\na:0:0:444\nZ:Q16Ms9QXKGrdPt4BnJb1eCAysQjCs=\nR:sys_aix.go\na:0:0:444\nZ:Q1scRAO/6T6JrukYtDHS3j5eSa5HY=\nR:sys_asmreq.go\na:0:0:444\nZ:Q17Mh5qTclGIyT2DB0ADBxpi2Q3jw=\nR:sys_asmreq_stub.go\na:0:0:444\nZ:Q1bUpypMVyYmAuBhvPUN1BeKlSoLM=\nR:sys_bpf.go\na:0:0:444\nZ:Q1XHNTA7UBEabepNNsASA+F5dLXIU=\nR:sys_bpf_stub.go\na:0:0:444\nZ:Q17zRzLXOdibMR6IL5OrsXYIvK8Z4=\nR:sys_bsd.go\na:0:0:444\nZ:Q1kUyuKUYfJQ/79wuok6ElOZ03ax8=\nR:sys_darwin.go\na:0:0:444\nZ:Q1tLJCUJOYa6/R6oxRdFybLMVDDk4=\nR:sys_freebsd.go\na:0:0:444\nZ:Q1fHrx1uzsGlT/o7vZ/2asblR8ZHk=\nR:sys_linux.go\na:0:0:444\nZ:Q1BAGnh8kAyMeXAprYAtONdeWlLOw=\nR:sys_solaris.go\na:0:0:444\nZ:Q1+3AFMPumG3ytdU9pGeL4zrLa/HQ=\nR:sys_ssmreq.go\na:0:0:444\nZ:Q1wEJmFw7+mZNnaxe3CVtGo4QIpgQ=\nR:sys_ssmreq_stub.go\na:0:0:444\nZ:Q1z47eo1dpek33OLOkfs5M1vODQ0k=\nR:sys_stub.go\na:0:0:444\nZ:Q1DF4NQP3DrSKj4tLzkitFQ9xA9to=\nR:sys_windows.go\na:0:0:444\nZ:Q1Kn4ObTgX4iDUyGUnQ8i08q35iWw=\nR:sys_zos.go\na:0:0:444\nZ:Q1PHYGI3HMA8meJcu8psih9mEd/8g=\nR:unicast_test.go\na:0:0:444\nZ:Q15EwoQ7sTWJ2XQ5DgEQVGZ+o6L5w=\nR:unicastsockopt_test.go\na:0:0:444\nZ:Q1BuVBQjuQZXNFn7OSlCO5UJ8Ep78=\nR:zsys_aix_ppc64.go\na:0:0:444\nZ:Q1ETm1fhCn+O66N07AekRUNcUQLUE=\nR:zsys_darwin.go\na:0:0:444\nZ:Q1MQzIDYILUPUL4LI4HZVzeiizmeo=\nR:zsys_dragonfly.go\na:0:0:444\nZ:Q1XDypK2K9Koypt2uhLt1HsiH5vxQ=\nR:zsys_freebsd_386.go\na:0:0:444\nZ:Q1pc4oCNvdfVwzRjFIxg79F5JOM7c=\nR:zsys_freebsd_amd64.go\na:0:0:444\nZ:Q19qLkB7Qu1RDUiFQ5nUtyK2Ef1AM=\nR:zsys_freebsd_arm.go\na:0:0:444\nZ:Q19qLkB7Qu1RDUiFQ5nUtyK2Ef1AM=\nR:zsys_freebsd_arm64.go\na:0:0:444\nZ:Q1vortGPQcfzmsxh2IRjaG/20gArg=\nR:zsys_freebsd_riscv64.go\na:0:0:444\nZ:Q1vortGPQcfzmsxh2IRjaG/20gArg=\nR:zsys_linux_386.go\na:0:0:444\nZ:Q1q0UfHxylW1oaXzz7dS3ImK6ALuY=\nR:zsys_linux_amd64.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_arm.go\na:0:0:444\nZ:Q1q0UfHxylW1oaXzz7dS3ImK6ALuY=\nR:zsys_linux_arm64.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_loong64.go\na:0:0:444\nZ:Q1C+Dcn0dcoBqU3BKP0t2RRz9E7W0=\nR:zsys_linux_mips.go\na:0:0:444\nZ:Q1q0UfHxylW1oaXzz7dS3ImK6ALuY=\nR:zsys_linux_mips64.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_mips64le.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_mipsle.go\na:0:0:444\nZ:Q1q0UfHxylW1oaXzz7dS3ImK6ALuY=\nR:zsys_linux_ppc.go\na:0:0:444\nZ:Q1pn9rzhitcXjmdia29dsLss1o/SE=\nR:zsys_linux_ppc64.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_ppc64le.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_linux_riscv64.go\na:0:0:444\nZ:Q15Nor/sbRmg4VSC1KxrzNkGCs7vA=\nR:zsys_linux_s390x.go\na:0:0:444\nZ:Q1rLNx4RsIiWcvZkzptOqHV7kZDc8=\nR:zsys_netbsd.go\na:0:0:444\nZ:Q1lMGSKHEs53JJSSTC6s4wXHsrSGE=\nR:zsys_openbsd.go\na:0:0:444\nZ:Q1vHirzRQpyY3Rc6lysNHjQuS0p4g=\nR:zsys_solaris.go\na:0:0:444\nZ:Q1mnX9yRk+L3KgHiKIQdAkVGnFMR0=\nR:zsys_zos_s390x.go\na:0:0:444\nZ:Q1PY+m1kxMA4/IPM9A0vLXDO8UdVk=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/lif\nM:0:0:555\nR:address.go\na:0:0:444\nZ:Q1OViYQPJuGQPopo7DzrwoBUBI6zk=\nR:address_test.go\na:0:0:444\nZ:Q1NtgWsHOUeJJ6Jw/flQWw88kGKrU=\nR:binary.go\na:0:0:444\nZ:Q1l5DqVXN06wWI1qpvTLDOmRGVYNg=\nR:defs_solaris.go\na:0:0:444\nZ:Q1YeIr9A1BZjHr3HnhJMeZhc4I4Mg=\nR:lif.go\na:0:0:444\nZ:Q14XbmlkPrqP3Z0POxWNoPi+L45/c=\nR:link.go\na:0:0:444\nZ:Q1i0y4Hgea8F+e76FRdctVp/A8y94=\nR:link_test.go\na:0:0:444\nZ:Q1vzPGHTAAzyRioVkWU8++gPeHQxg=\nR:sys.go\na:0:0:444\nZ:Q11LlXNWoesVPSOpuJWboNEPvie3k=\nR:sys_solaris_amd64.s\na:0:0:444\nZ:Q1YwGpfOtii62TzBqcAlqgFfnV9Vw=\nR:syscall.go\na:0:0:444\nZ:Q1ZI2gWECigpP4aKn0dw3k2mvnZ7Y=\nR:zsys_solaris_amd64.go\na:0:0:444\nZ:Q1UP5g6/RH+VwMOTCyN7HmzsdxIaY=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/nettest\nM:0:0:555\nR:conntest.go\na:0:0:444\nZ:Q1MMzn2aIBwi3nS12F1xxyxfGIno4=\nR:conntest_test.go\na:0:0:444\nZ:Q1pxiI8pNygX8oWb4L6jbGd3chdYA=\nR:nettest.go\na:0:0:444\nZ:Q1XjXQZh3BlTQcBtY/yMvvkuhIva0=\nR:nettest_stub.go\na:0:0:444\nZ:Q1CRmsF1OtVlMvwGZZjmPoVBRJ9kA=\nR:nettest_unix.go\na:0:0:444\nZ:Q1CKlEKBCwEhsaCBl3GxCO5zl1pnI=\nR:nettest_windows.go\na:0:0:444\nZ:Q1fxy5OBB4L9ix04LtTeYpQzTZWOs=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/netutil\nM:0:0:555\nR:listen.go\na:0:0:444\nZ:Q1sKwvxbDAFFxLMLeTRmamLtI60PQ=\nR:listen_test.go\na:0:0:444\nZ:Q1KLhwY3PbRcoKBkn/4TaOxohbhl0=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/proxy\nM:0:0:555\nR:dial.go\na:0:0:444\nZ:Q1E/hVDWeaAMyiHqWxcdD7Oy61T00=\nR:dial_test.go\na:0:0:444\nZ:Q1BphWFMSPzaPPcdbKIBHfV4N+TSo=\nR:direct.go\na:0:0:444\nZ:Q1JlXy7/o1Ls7jT9tLZIdcmACzFbg=\nR:per_host.go\na:0:0:444\nZ:Q1QUZ8TVPgwcSCr+7VftaAJJeD+T4=\nR:per_host_test.go\na:0:0:444\nZ:Q1USFObmklAFBI7ve0qbKrpOc+nuk=\nR:proxy.go\na:0:0:444\nZ:Q1Ig4aDiflnCZvewEoymr1iInDYK4=\nR:proxy_test.go\na:0:0:444\nZ:Q1+uXbyeVyc1KR+70JYkkzena0WwM=\nR:socks5.go\na:0:0:444\nZ:Q1GILpqeqcQ+Gt3OZP9i2GiKxK0yY=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/publicsuffix\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1WhVafnVHWC1fmyIM1Am/J8W5lno=\nR:gen.go\na:0:0:444\nZ:Q1o8ImCBZItGxsZte97cd8iCPgkq8=\nR:list.go\na:0:0:444\nZ:Q1sA7dv2X3nAYQvaETy+6aZN+UZPE=\nR:list_test.go\na:0:0:444\nZ:Q1bgAR3fYGIi1ghDjfeX4lY03YwRo=\nR:table.go\na:0:0:444\nZ:Q1+rLYYg+rRRD0c5ym5Lf4rnkBHj8=\nR:table_test.go\na:0:0:444\nZ:Q1kZ1H7WvgfxwGH9vIdRDjmCrMDxQ=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/route\nM:0:0:555\nR:address.go\na:0:0:444\nZ:Q1IuMN6LdEd3LC0zqVb4XgDCfwuOc=\nR:address_darwin_test.go\na:0:0:444\nZ:Q1f7zsM4q3DLrACVNXjwaWDHFBuq8=\nR:address_test.go\na:0:0:444\nZ:Q1mQQ6C2TpiP3rKuBJEnXH5PQmVi8=\nR:binary.go\na:0:0:444\nZ:Q1wEHIWdkS3SvRjiVtQnRKdgi9mFU=\nR:defs_darwin.go\na:0:0:444\nZ:Q1WLCtgTJ9xgvp/r32XCD8laRLy2A=\nR:defs_dragonfly.go\na:0:0:444\nZ:Q1O7t9XkFpfxBuqCGR2hl5DAyZvd4=\nR:defs_freebsd.go\na:0:0:444\nZ:Q1AHVOgVrGIPikdYC5/bXCf8veMLM=\nR:defs_netbsd.go\na:0:0:444\nZ:Q1GYisgWyGT8Sr49/wqNlJTsWlAfM=\nR:defs_openbsd.go\na:0:0:444\nZ:Q1Y2cfbxxOjiEBYRCQDYTdiGZEJXI=\nR:empty.s\na:0:0:444\nZ:Q11uDDnjDYUS9L9lvi1R9byj/L5bM=\nR:interface.go\na:0:0:444\nZ:Q16oVVGwLGmIDCT1FDpcRtC42vXDA=\nR:interface_announce.go\na:0:0:444\nZ:Q1400ovWecFJSCZvFc0+mkdZu+nEA=\nR:interface_classic.go\na:0:0:444\nZ:Q1Xj+YgY37Vy48LCtxL3WMSWPKfdU=\nR:interface_freebsd.go\na:0:0:444\nZ:Q1rggV6s4N0tTaB3qxHCjtTlQf22Q=\nR:interface_multicast.go\na:0:0:444\nZ:Q1t1aEnZAdh6mB/307onPjH8GkTRA=\nR:interface_openbsd.go\na:0:0:444\nZ:Q18ci1vo9a5l01bb+W14CJ5OI8jU0=\nR:message.go\na:0:0:444\nZ:Q15pVaitJurzP4xom3srr9Vr0NBq4=\nR:message_darwin_test.go\na:0:0:444\nZ:Q18z3TBv78jiDw1L4qZ5Fy8deVFWM=\nR:message_freebsd_test.go\na:0:0:444\nZ:Q17WvXv5RagJ33bVpq61gkqyjqEno=\nR:message_test.go\na:0:0:444\nZ:Q1mDTRedVTWmCbR1jml2CsaRMz6UQ=\nR:route.go\na:0:0:444\nZ:Q1vznorPVRybwBTg7mmsaxsTyMpYI=\nR:route_classic.go\na:0:0:444\nZ:Q13B2qshlZVAheuxK58rG/2QmAcdw=\nR:route_openbsd.go\na:0:0:444\nZ:Q1eyxwahMRqAbjrVlVGDmme0i0GoU=\nR:route_test.go\na:0:0:444\nZ:Q1muDPa9+qtHM+D/kvBMFJHQpFIiw=\nR:sys.go\na:0:0:444\nZ:Q1h7cc8Vk85rFTYDxDVb3l42qGGTs=\nR:sys_darwin.go\na:0:0:444\nZ:Q1N7jdGSBRq9YROqUZJXxZIqFiOJI=\nR:sys_dragonfly.go\na:0:0:444\nZ:Q1HO47fHjLH9y/1LC8wWbFugiiaeM=\nR:sys_freebsd.go\na:0:0:444\nZ:Q1fVKa/7ZQH23taJsO/QjKJO1TnDk=\nR:sys_netbsd.go\na:0:0:444\nZ:Q1PNK3wTAmwv0QyF21iNpWTBUzxm0=\nR:sys_openbsd.go\na:0:0:444\nZ:Q1fCV3/czJjXKyPhxhgpRT52x5Odo=\nR:syscall.go\na:0:0:444\nZ:Q1ihqWoPoceK/O3hWv9g97xfYCMhU=\nR:zsys_darwin.go\na:0:0:444\nZ:Q1SMx7FjaI3z0+LfnnQf6XlvD1EYc=\nR:zsys_dragonfly.go\na:0:0:444\nZ:Q1TMHnAohjtLlx4THsBKiK8rl+sco=\nR:zsys_freebsd_386.go\na:0:0:444\nZ:Q1VixSDr5bEMyESp28lOPNqGqfwuE=\nR:zsys_freebsd_amd64.go\na:0:0:444\nZ:Q1VBm9GSjZ8xWKhYruVTqkXcK8fs8=\nR:zsys_freebsd_arm.go\na:0:0:444\nZ:Q1OVDwzfhY1Ed2Eu/qzzBJuCZFaXI=\nR:zsys_freebsd_arm64.go\na:0:0:444\nZ:Q1VBm9GSjZ8xWKhYruVTqkXcK8fs8=\nR:zsys_freebsd_riscv64.go\na:0:0:444\nZ:Q1VBm9GSjZ8xWKhYruVTqkXcK8fs8=\nR:zsys_netbsd.go\na:0:0:444\nZ:Q1Yru0hKPljJ6wabK4buFsiXpM92M=\nR:zsys_openbsd.go\na:0:0:444\nZ:Q1kWORDPUQDS80GmcrwlIFv4nyk90=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/trace\nM:0:0:555\nR:events.go\na:0:0:444\nZ:Q1gS2rUkZzt1nMOof7QHuk7g9HCrE=\nR:histogram.go\na:0:0:444\nZ:Q1SGgSTqY4zlRgrPdJ0hulxnv9I9o=\nR:histogram_test.go\na:0:0:444\nZ:Q1W6H8wL5EO4Cp9+ld6hP/8PotYAU=\nR:trace.go\na:0:0:444\nZ:Q14Oo4gVLSQhvhcBPnC52cXToCgoo=\nR:trace_test.go\na:0:0:444\nZ:Q19Kw6WDk0ReqU7B8DY9AYK9b8gtE=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/webdav\nM:0:0:555\nR:file.go\na:0:0:444\nZ:Q1gOadwOSOtmE/C50BBnreD4ZS1GY=\nR:file_test.go\na:0:0:444\nZ:Q1xGFhu9xVsAIey1As03tAgGNgwJA=\nR:if.go\na:0:0:444\nZ:Q1PLslCtMMBHEYZtB1/VFG7n6GvxM=\nR:if_test.go\na:0:0:444\nZ:Q1tSofPlU9z28Qt5vyPVvjRtjHmMQ=\nR:litmus_test_server.go\na:0:0:444\nZ:Q1YnNXv11QLxHjV5bapXzfaT0ix9M=\nR:lock.go\na:0:0:444\nZ:Q1cV4mGJ3isX6IoOcjPpwHW2OhLgQ=\nR:lock_test.go\na:0:0:444\nZ:Q1AVMNYObFYMGxIeudx2jUII6gy54=\nR:prop.go\na:0:0:444\nZ:Q1xxVzWb/ySq2vrtKlBUNdbNQWWhk=\nR:prop_test.go\na:0:0:444\nZ:Q1yvxc+4F0u7vIo78Ybtx7K7ipp4o=\nR:webdav.go\na:0:0:444\nZ:Q1+ZsJZBHY1Liw1uYFyw1JbaA1E1c=\nR:webdav_test.go\na:0:0:444\nZ:Q11KoaG+5MRPvfOtD/PVa9JmUPXYM=\nR:xml.go\na:0:0:444\nZ:Q1bpl8Y4ll4GBTmZZqtZ41PNswZ9c=\nR:xml_test.go\na:0:0:444\nZ:Q1FYuAwNr/k3d6cEEX746HVIRdh8M=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/webdav/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/webdav/internal/xml\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1b52wLNNlMvAAPL3zGg+HQHCcoV8=\nR:atom_test.go\na:0:0:444\nZ:Q1P4MUpHN9YAYsIgGe/q5oA1cqiOE=\nR:example_test.go\na:0:0:444\nZ:Q1Qlpa4uw/vJbhWe1py99xfWFD0J4=\nR:marshal.go\na:0:0:444\nZ:Q1BDjuA1Ug55vX5/FOAoC+GO4mf2U=\nR:marshal_test.go\na:0:0:444\nZ:Q1LxCPBgf3D0rMhaNnZhL4y1rQIug=\nR:read.go\na:0:0:444\nZ:Q1zMIedOnM5/ivXTVVGKhOim7DLPg=\nR:read_test.go\na:0:0:444\nZ:Q1qFVFOT2hh2XDaP3LOaIpaUejl94=\nR:typeinfo.go\na:0:0:444\nZ:Q1JiI5NWy0uFmaSmKgzBwqkr9wil0=\nR:xml.go\na:0:0:444\nZ:Q1581+GCJbEnSX/xbvd8zATuLljR0=\nR:xml_test.go\na:0:0:444\nZ:Q1jkMCKwam0qNY7a1qND8uz75mAgE=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/websocket\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q14D1Nw8bGzQWIEJI0E57ulO8QnN4=\nR:dial.go\na:0:0:444\nZ:Q1gkqvX/KZLnPDcF7+WOmqbdM8XYY=\nR:dial_test.go\na:0:0:444\nZ:Q1yb2GuH97dDGxTG4gf4DNESSsW9g=\nR:exampledial_test.go\na:0:0:444\nZ:Q1saK2qlrB++tJoYodyw141XqvSuI=\nR:examplehandler_test.go\na:0:0:444\nZ:Q19UV+6VdGu4lEgOblMI99fWQASDc=\nR:hybi.go\na:0:0:444\nZ:Q13eAJNdUBd0eezjzCd/Yqc3ccVTI=\nR:hybi_test.go\na:0:0:444\nZ:Q1BUnQ6hbYvgdlDrpW74LeWPqzOTo=\nR:server.go\na:0:0:444\nZ:Q1+5CSfdg6nZTmg8viCrQQNa7xPcM=\nR:websocket.go\na:0:0:444\nZ:Q1jJ0CigJKysNw4BaEvGIf1hTPZNY=\nR:websocket_test.go\na:0:0:444\nZ:Q1Tl4+HGHRcyrwHAYuilbIpdnXQLY=\nF:root/go/pkg/mod/golang.org/x/net@v0.1.0/xsrftoken\nM:0:0:555\nR:xsrf.go\na:0:0:444\nZ:Q1HW+rp+O+1GF0zqHzr5n8t+14F0s=\nR:xsrf_test.go\na:0:0:444\nZ:Q1umCU97uto2FMw+/N54myj8ZPplk=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0\nM:0:0:555\nR:.travis.yml\na:0:0:444\nZ:Q1GvlKxa0cbXe8YYzYdQiPKNcXI1Y=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1MtYAfyDB2fgI1kdohRUxy52IBd0=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:README.md\na:0:0:444\nZ:Q142THPzsiUx4Kw6kH5R1p9BhfpCQ=\nR:example_test.go\na:0:0:444\nZ:Q1UkODqrp7ucvuCMRDNz4XcDP2nrc=\nR:go.mod\na:0:0:444\nZ:Q19hWzHI/4pBx8X8gXwOYFrBNC9O4=\nR:go.sum\na:0:0:444\nZ:Q1ozL0lGo9X4HduEhAATgYPCdXHNM=\nR:oauth2.go\na:0:0:444\nZ:Q16uCn9geiaIgoT4HLq3BI5Yz399o=\nR:oauth2_test.go\na:0:0:444\nZ:Q1h6UtP8U2FwPZp89SmBH4+omefVk=\nR:token.go\na:0:0:444\nZ:Q1DsPxyhDnJDrZtrTUkUJg4AwxjrA=\nR:token_test.go\na:0:0:444\nZ:Q1POidqRA4emLdRGBy1jO8c9lYGv0=\nR:transport.go\na:0:0:444\nZ:Q1elsAAe1aW4pKDUP2OBOeKPqHpJo=\nR:transport_test.go\na:0:0:444\nZ:Q1IqVLc6i+3L+JgsmX8PgQ3CzA5cs=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/amazon\nM:0:0:555\nR:amazon.go\na:0:0:444\nZ:Q1NzYPRuQCG2b5s8h9OKAeHUKUSoc=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/authhandler\nM:0:0:555\nR:authhandler.go\na:0:0:444\nZ:Q1wlbOXdgdO5BqXVUux7kTNOIt2r8=\nR:authhandler_test.go\na:0:0:444\nZ:Q1ix/0VmeHhuZEeLcLFD4duPJb6bY=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/bitbucket\nM:0:0:555\nR:bitbucket.go\na:0:0:444\nZ:Q1VD68TfU5ruKUJG4fpuATKUtEFVk=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/cern\nM:0:0:555\nR:cern.go\na:0:0:444\nZ:Q1UTyyIq61REZhr8N1tsMiKvQX+rQ=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/clientcredentials\nM:0:0:555\nR:clientcredentials.go\na:0:0:444\nZ:Q10ay1kNNNr74DWzNssitSdiR0deQ=\nR:clientcredentials_test.go\na:0:0:444\nZ:Q19n/58IphHjRuQlv5OQe7M3zfVxE=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/endpoints\nM:0:0:555\nR:endpoints.go\na:0:0:444\nZ:Q1eT7eymZWJr4aDDiPEM2nyQZ4Ozg=\nR:endpoints_test.go\na:0:0:444\nZ:Q1O5yTX2/RqkSQ3P8VRorXK/L66no=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/facebook\nM:0:0:555\nR:facebook.go\na:0:0:444\nZ:Q17QHJhzxljifWT7Ctw6F7VutzLUs=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/fitbit\nM:0:0:555\nR:fitbit.go\na:0:0:444\nZ:Q1abdr/Ibe7QrZkSSnnm93JUQI82k=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/foursquare\nM:0:0:555\nR:foursquare.go\na:0:0:444\nZ:Q1N48/NRoGJ0E17gQxVXyY8URKhRM=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/github\nM:0:0:555\nR:github.go\na:0:0:444\nZ:Q1aJdGAMA1eMvu8lHLWV5a2iFDZB8=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/gitlab\nM:0:0:555\nR:gitlab.go\na:0:0:444\nZ:Q1LbjV43hoskEb5oZiWevmAf+kAXg=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google\nM:0:0:555\nR:appengine.go\na:0:0:444\nZ:Q1hLfjmxceKH5QVsZ3kAP0pJr58A4=\nR:appengine_gen1.go\na:0:0:444\nZ:Q1CX1g31Lz4QyP5Hq9O7rNTW3LijY=\nR:appengine_gen2_flex.go\na:0:0:444\nZ:Q1yKZJsWlga3YaaylO9DjfcuLOH+g=\nR:default.go\na:0:0:444\nZ:Q1J0z6VX5FrvNxzv6UxwwSpZjy9yk=\nR:doc.go\na:0:0:444\nZ:Q1ulelG7ojZGzvujKxCP0E4InJ7Rw=\nR:error.go\na:0:0:444\nZ:Q12zhZO6yixU5HLUvmtorVX7tlJx4=\nR:error_test.go\na:0:0:444\nZ:Q1glz6eqctnIipGHHXl9PnXioLZU8=\nR:example_test.go\na:0:0:444\nZ:Q14JcLk1MR2b9cQWR+z73TDcTkNVk=\nR:google.go\na:0:0:444\nZ:Q1s9mA/k/7mkbEhzbCm/kMSwfw7S8=\nR:google_test.go\na:0:0:444\nZ:Q1ZThxy7WUNM6JHNp+8E/F3LRpTrY=\nR:jwt.go\na:0:0:444\nZ:Q1ZgjjnctKyRQdyyHK7S2ogb/+8RA=\nR:jwt_test.go\na:0:0:444\nZ:Q1pZA1FZLGEsF3T7qdZvPB+i5X+lY=\nR:sdk.go\na:0:0:444\nZ:Q1JOFpOqvpWWyfz3UBu8hLItk61bc=\nR:sdk_test.go\na:0:0:444\nZ:Q163oGs1XFKb9GaUfWCD0HqSusaxY=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/downscope\nM:0:0:555\nR:downscoping.go\na:0:0:444\nZ:Q1LPiz+UtudHqqDvPlMSMl0lL/jwc=\nR:downscoping_test.go\na:0:0:444\nZ:Q17H3CsfywmSYe9Ppd8PkRgfzr9Fs=\nR:tokenbroker_test.go\na:0:0:444\nZ:Q1gYzhKxyM+EXmMBmSYxFb/wEF8qk=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/internal/externalaccount\nM:0:0:555\nR:aws.go\na:0:0:444\nZ:Q1uZHlUTvEXmwVhQ96/s7mNgTJVcw=\nR:aws_test.go\na:0:0:444\nZ:Q1YHoO3F5BGgyeyQXlH89oo9rZmPM=\nR:basecredentials.go\na:0:0:444\nZ:Q1sjAjKfOgo4hiwj5nw+SpYlRunkk=\nR:basecredentials_test.go\na:0:0:444\nZ:Q1prxYMd/rnM3DL4NwT2IGYw3++qU=\nR:clientauth.go\na:0:0:444\nZ:Q1hEcxl7HXQDYGEUGkHa5oZPMoSB4=\nR:clientauth_test.go\na:0:0:444\nZ:Q1QKFUf1I0H3uTOrWAddwOMpRX+hM=\nR:err.go\na:0:0:444\nZ:Q1ho+rjNLo9qEBtMttXB4h3MUdBfM=\nR:err_test.go\na:0:0:444\nZ:Q1VvxnhoQukKWyCNjdHHCt7dZeehI=\nR:executablecredsource.go\na:0:0:444\nZ:Q1FmsEty+ARpwuTu6dvBAk50s6idA=\nR:executablecredsource_test.go\na:0:0:444\nZ:Q17NQoxZZlWPqFjx/smgrtEfgo8hM=\nR:filecredsource.go\na:0:0:444\nZ:Q1IH8Pf6ehQuwgw62wZb+wqLrQBAI=\nR:filecredsource_test.go\na:0:0:444\nZ:Q1cn2BuP7YpuA5fq1s1mMolaaDdv8=\nR:impersonate.go\na:0:0:444\nZ:Q1GGX8ev65qShYlp7PfKj093RCNCs=\nR:impersonate_test.go\na:0:0:444\nZ:Q175k7X4qYjg0HE1WiJM0FIlE5rgo=\nR:sts_exchange.go\na:0:0:444\nZ:Q1dDmSIKl/qmhlpb0OVRBD7vv5Drk=\nR:sts_exchange_test.go\na:0:0:444\nZ:Q1aqeVD0uymuP9DH77UfMcARPZACM=\nR:urlcredsource.go\na:0:0:444\nZ:Q1bLSxgQ69YD8ZDY9iS5iZ4JCTUvY=\nR:urlcredsource_test.go\na:0:0:444\nZ:Q1QlW2GWBtSsEJej3qlQwlJnUYO4U=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/internal/externalaccount/testdata\nM:0:0:555\nR:3pi_cred.json\na:0:0:444\nZ:Q1AZ+1PKYo7ALvSDFVmW7uWaIkvd0=\nR:3pi_cred.txt\na:0:0:444\nZ:Q1pyz9t6AxGPqrTMTBHCw96P6jpkw=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/google/testdata/gcloud\nM:0:0:555\nR:credentials\na:0:0:444\nZ:Q19hOeht5nllvKiGiA5mvUYlaeJ/o=\nR:properties\na:0:0:444\nZ:Q1knFLWZ75JXPPy1+rGAOqWczQgrM=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/heroku\nM:0:0:555\nR:heroku.go\na:0:0:444\nZ:Q140GlLLijURLP0Iugnf1/Xk6qvUg=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/hipchat\nM:0:0:555\nR:hipchat.go\na:0:0:444\nZ:Q1y+Exb6vQRcVeY3hOZRHZ0pEhIMg=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/instagram\nM:0:0:555\nR:instagram.go\na:0:0:444\nZ:Q1F2aKeB3qY4Y3bXRwesaqmRZdC14=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/internal\nM:0:0:555\nR:client_appengine.go\na:0:0:444\nZ:Q1hTpkd/6LbAesu9ii5QJ1Y5y37h4=\nR:doc.go\na:0:0:444\nZ:Q1dD3l90ZV/g7TM0lm2eI0tIm2buA=\nR:oauth2.go\na:0:0:444\nZ:Q137MkL69WY3zJs7YL3juh13+7oaQ=\nR:token.go\na:0:0:444\nZ:Q1zH3Q7m9a5jpUfyvVhKgQJ9+Zi9Q=\nR:token_test.go\na:0:0:444\nZ:Q1TtaohngYpHnVrjdX1nVoiU4K70c=\nR:transport.go\na:0:0:444\nZ:Q1ZocIgqxvkftUiBAGvjNw83+5tZs=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/jira\nM:0:0:555\nR:jira.go\na:0:0:444\nZ:Q1KtJx3An9uWVqM++AAR8kGCg6IOI=\nR:jira_test.go\na:0:0:444\nZ:Q12dW91BOcXnyMTcAT+65vK5EbDeA=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/jws\nM:0:0:555\nR:jws.go\na:0:0:444\nZ:Q15oF7glEjq0+aOMqLiugkAVSLJY8=\nR:jws_test.go\na:0:0:444\nZ:Q1kAnCXEia04QVNYmwjCbHlIxX9Cc=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/jwt\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1GgQ+Ux1f2d8917iqg+Z5ggTzSBM=\nR:jwt.go\na:0:0:444\nZ:Q1RqCWad78pEWsh5VbiamFXqgCzio=\nR:jwt_test.go\na:0:0:444\nZ:Q1vGQNUxEZWgwkxK4RfQtj5gC2kKs=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/kakao\nM:0:0:555\nR:kakao.go\na:0:0:444\nZ:Q1mCmbTwpsNmFv7jO6TExQg0kPEYQ=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/linkedin\nM:0:0:555\nR:linkedin.go\na:0:0:444\nZ:Q15pZIwGkblTilagSokl9aX4hUGiE=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/mailchimp\nM:0:0:555\nR:mailchimp.go\na:0:0:444\nZ:Q1FJUNNqWwS5iLQLOMh8wP5Quqzds=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/mailru\nM:0:0:555\nR:mailru.go\na:0:0:444\nZ:Q1mjS8wqcN3W5fBJH/EKicmZXS1Yg=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/mediamath\nM:0:0:555\nR:mediamath.go\na:0:0:444\nZ:Q1LFlXbKrsc1cmg/J8b192SdqhCsk=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/microsoft\nM:0:0:555\nR:microsoft.go\na:0:0:444\nZ:Q1lUl8rWNnjS6QL2VHA6aGuGqcD2Y=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/nokiahealth\nM:0:0:555\nR:nokiahealth.go\na:0:0:444\nZ:Q1bosucx1PPeCox0agBZ4h/l8DNW0=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/odnoklassniki\nM:0:0:555\nR:odnoklassniki.go\na:0:0:444\nZ:Q1lvU9sOi7AdX9rBuj8MCfYpszM4Y=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/paypal\nM:0:0:555\nR:paypal.go\na:0:0:444\nZ:Q1HUK3pLQoIlEIyJwoSsQWd0RCaFw=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/slack\nM:0:0:555\nR:slack.go\na:0:0:444\nZ:Q1yRiLLobLxDRTGJ3IR+ZZpVD0+hw=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/spotify\nM:0:0:555\nR:spotify.go\na:0:0:444\nZ:Q1PLg9jPzI5T6F0sZQB+IIWHH1vJw=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/stackoverflow\nM:0:0:555\nR:stackoverflow.go\na:0:0:444\nZ:Q1NvkgeIRtqtb+s92bkoGMz0fzZrw=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/twitch\nM:0:0:555\nR:twitch.go\na:0:0:444\nZ:Q1ULknnUqRTbXUSFsMefKqmb32c9w=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/uber\nM:0:0:555\nR:uber.go\na:0:0:444\nZ:Q1oHY4YGEnSn6WYHxl2JsHvvPyqCQ=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/vk\nM:0:0:555\nR:vk.go\na:0:0:444\nZ:Q1pc+M850+6qO2pzKI4e6u9FxOe/Y=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/yahoo\nM:0:0:555\nR:yahoo.go\na:0:0:444\nZ:Q1Qe7/xDK2IPQdmgbV8lRxapr1E6c=\nF:root/go/pkg/mod/golang.org/x/oauth2@v0.1.0/yandex\nM:0:0:555\nR:yandex.go\na:0:0:444\nZ:Q1cmI0+8GG8uAwIv8Ec1c/R54z5rU=\nF:root/go/pkg/mod/golang.org/x/sync@v0.1.0\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1vIqe/o+ryf1wGwZx786hKlDXDFQ=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1SNtBaIG8NbrsQDf3BLSOoEyqayA=\nF:root/go/pkg/mod/golang.org/x/sync@v0.1.0/errgroup\nM:0:0:555\nR:errgroup.go\na:0:0:444\nZ:Q19FF32fE4dNhpU/4wsslFLx1MF70=\nR:errgroup_example_md5all_test.go\na:0:0:444\nZ:Q1ShL/soqNqGm/vuVSMPHwr/MJsPY=\nR:errgroup_test.go\na:0:0:444\nZ:Q1YflGOwqIpg4CQq9qfHT9T3PbAp8=\nF:root/go/pkg/mod/golang.org/x/sync@v0.1.0/semaphore\nM:0:0:555\nR:semaphore.go\na:0:0:444\nZ:Q1r2Gy6925ZCGEu1wIuJ0OsfnVBqc=\nR:semaphore_bench_test.go\na:0:0:444\nZ:Q1OYD22Tv1eihSfRmI98eJ3QHyjJ8=\nR:semaphore_example_test.go\na:0:0:444\nZ:Q1k/zgnRlolxQHlP8O9oJc1fF7shs=\nR:semaphore_test.go\na:0:0:444\nZ:Q16aMXt/sH6r90XbWMfoeu+mzMOuQ=\nF:root/go/pkg/mod/golang.org/x/sync@v0.1.0/singleflight\nM:0:0:555\nR:singleflight.go\na:0:0:444\nZ:Q1dZVAMsvx6PYnFh6S8OMXdM0ozIk=\nR:singleflight_test.go\na:0:0:444\nZ:Q1YeWYF85COKU0EU8S+4D5SdEAYj4=\nF:root/go/pkg/mod/golang.org/x/sync@v0.1.0/syncmap\nM:0:0:555\nR:go19.go\na:0:0:444\nZ:Q1RHQbEluJWLj3e7MfrBoM1k6JdUA=\nR:map.go\na:0:0:444\nZ:Q1RSNhMtLBhgZ5AdIKY8Cc2b8H/50=\nR:map_bench_test.go\na:0:0:444\nZ:Q1Hcu3LqRb9Yay+OBL6gTBfG9bxCk=\nR:map_reference_test.go\na:0:0:444\nZ:Q1ndGSWa/KxDL8fUyWKURmLJRITPE=\nR:map_test.go\na:0:0:444\nZ:Q1UQWvvNTL30x2yINDXbAOWYFIq3c=\nR:pre_go19.go\na:0:0:444\nZ:Q19HYJqvjV1RfcGibOf1D0W8q9mEY=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1qOvpYzpzUBlYwx8N1RwwfkIaNpQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q11eiXakluVHJWyb87ZfmzxYvPHx4=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1fzR5w/LlSA7rqBaxRu8GNGvGaa8=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/cpu\nM:0:0:555\nR:asm_aix_ppc64.s\na:0:0:444\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:byteorder.go\na:0:0:444\nZ:Q1u4urq4ci617mu/pQbqqklThaov0=\nR:cpu.go\na:0:0:444\nZ:Q1Y/Su0IRIqTcIXJMRUETmRXbr6Rw=\nR:cpu_aix.go\na:0:0:444\nZ:Q1uhLCQtu3FBtMkad1UJ0mnFNnY+s=\nR:cpu_arm.go\na:0:0:444\nZ:Q1irn3/2mwv6EGwymKpMDdPA6YQCQ=\nR:cpu_arm64.go\na:0:0:444\nZ:Q19+Yvx6U66GCdX9plojrQe/ofAEQ=\nR:cpu_arm64.s\na:0:0:444\nZ:Q15cwMG8RWu2skOjBCjC+HBJ3N/PA=\nR:cpu_gc_arm64.go\na:0:0:444\nZ:Q1S5JnOwwaruSJ0LSCIc6DW1INFxA=\nR:cpu_gc_s390x.go\na:0:0:444\nZ:Q1wdthVgAljHMwiznxXU3zFaa0fws=\nR:cpu_gc_x86.go\na:0:0:444\nZ:Q1B7CG0XuhYEICx7vo/4W0NlzxthE=\nR:cpu_gccgo_arm64.go\na:0:0:444\nZ:Q1yBXhRlWbveB0KoBaSoEqQrEy6oI=\nR:cpu_gccgo_s390x.go\na:0:0:444\nZ:Q1+vNMmGhtD1uki8QtbYB0JM0c8hI=\nR:cpu_gccgo_x86.c\na:0:0:444\nZ:Q1laIv9Fh3ZtQQTfuNSrCUPurHKYk=\nR:cpu_gccgo_x86.go\na:0:0:444\nZ:Q1NDpSfvdzZ/FbekK0MMH5G1vs3W4=\nR:cpu_linux.go\na:0:0:444\nZ:Q1F42gPFumxKVdrlWMglL+12OXJOo=\nR:cpu_linux_arm.go\na:0:0:444\nZ:Q1zVieehRzOZz+QkJIg8sALTGwh8o=\nR:cpu_linux_arm64.go\na:0:0:444\nZ:Q1awXsREQO7Dw/d3hXWaH38sqJSUk=\nR:cpu_linux_mips64x.go\na:0:0:444\nZ:Q1hZndP5n4qTaEwPr2Aydd2B6ElW0=\nR:cpu_linux_noinit.go\na:0:0:444\nZ:Q1xQ6SRMj425JVZ62L0xqJhOKdZMM=\nR:cpu_linux_ppc64x.go\na:0:0:444\nZ:Q1dOcSWDNJx726siUakA7xAbLjDNA=\nR:cpu_linux_s390x.go\na:0:0:444\nZ:Q1TWiA2yUyCHZmqCg8FA41YR8fQJ0=\nR:cpu_loong64.go\na:0:0:444\nZ:Q1TjXoX2Ox/CF18ro5b2f8U9nsUa8=\nR:cpu_mips64x.go\na:0:0:444\nZ:Q1uVhLvIiMZs3KVZUWQbZEhMLBtxM=\nR:cpu_mipsx.go\na:0:0:444\nZ:Q1hBKN6JlpiZXxz7hB4w+O/8caGe8=\nR:cpu_netbsd_arm64.go\na:0:0:444\nZ:Q1wzFxhSkZwmN8k5NhtMht2zA2R1k=\nR:cpu_openbsd_arm64.go\na:0:0:444\nZ:Q1JRoj8C8wM7W1/ovfAYi2H2FfmA4=\nR:cpu_openbsd_arm64.s\na:0:0:444\nZ:Q1eQNOFZedOo2ArBk3McUdqqnDpAU=\nR:cpu_other_arm.go\na:0:0:444\nZ:Q1h5g0zpXRUCuz0fc0o63WFoU4rXM=\nR:cpu_other_arm64.go\na:0:0:444\nZ:Q1P+Ha9U7mOkj0uhTci2Q1kaRFTsQ=\nR:cpu_other_mips64x.go\na:0:0:444\nZ:Q1XwSKl7YWCsI5hamU30/1DstAW3k=\nR:cpu_other_ppc64x.go\na:0:0:444\nZ:Q1f0NVHS1BqjzkWMTHZ/LDQhPhAW4=\nR:cpu_other_riscv64.go\na:0:0:444\nZ:Q1aTOtcirpArAgYWhc30tMKswvWK4=\nR:cpu_ppc64x.go\na:0:0:444\nZ:Q1ZGHmURO/VBD2Oxfqyr1Hjcve4C4=\nR:cpu_riscv64.go\na:0:0:444\nZ:Q1A/PpmbzuyIH6ExyEon1qhZylI/w=\nR:cpu_s390x.go\na:0:0:444\nZ:Q1v3PQKQICufbOkRMM8V9X6cI5Q4M=\nR:cpu_s390x.s\na:0:0:444\nZ:Q1L7kn4bRae73MTwt6lEtKSnreOWo=\nR:cpu_s390x_test.go\na:0:0:444\nZ:Q1YOIZM5kbwPq71VVk08Z+ZE450IE=\nR:cpu_test.go\na:0:0:444\nZ:Q1XJvws6kn9T2VVRtqdT/r3KhxqFU=\nR:cpu_wasm.go\na:0:0:444\nZ:Q1mfZjjCtyLtwAu78KULyGOKDAzzY=\nR:cpu_x86.go\na:0:0:444\nZ:Q1uBsNLXf4KWoflYPY839k6r7MA8k=\nR:cpu_x86.s\na:0:0:444\nZ:Q17hFdUKkSBexknaZIZasd9hPe1lg=\nR:cpu_zos.go\na:0:0:444\nZ:Q1JU2quB8SdGMAs4NdOGiaahPk/zE=\nR:cpu_zos_s390x.go\na:0:0:444\nZ:Q1jvwZJzHb2X7ohYbe6gurdQMUt+A=\nR:hwcap_linux.go\na:0:0:444\nZ:Q1J9RAmzqNnDDFdPxdjH4hcoTkZrQ=\nR:syscall_aix_gccgo.go\na:0:0:444\nZ:Q16RAjpXZsfKFrE6/ShLkyutgPyzY=\nR:syscall_aix_ppc64_gc.go\na:0:0:444\nZ:Q1EF+8Q7xnnkSWsicmFgjhHc3QWJw=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/execabs\nM:0:0:555\nR:execabs.go\na:0:0:444\nZ:Q1aMHcNer9/3xT2U7qaZQKevngcr8=\nR:execabs_go118.go\na:0:0:444\nZ:Q1aXpcPk2ehLvOPRwVtCaANjaOqMM=\nR:execabs_go119.go\na:0:0:444\nZ:Q1UX/u2CgUk/NVOq2mFpKSoL5AwjI=\nR:execabs_test.go\na:0:0:444\nZ:Q1hUOOKwEBfUwG7C+unqltoB9J2u0=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/internal/unsafeheader\nM:0:0:555\nR:unsafeheader.go\na:0:0:444\nZ:Q1BX5iQnjfif0m1Y+1EEZTAzVBoo4=\nR:unsafeheader_test.go\na:0:0:444\nZ:Q1PCp+E3i86ZD7/shTQTy+06yArcE=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/plan9\nM:0:0:555\nR:asm.s\na:0:0:444\nZ:Q1Z0HluSSwlBM1wFtllmtS8Qq5G7A=\nR:asm_plan9_386.s\na:0:0:444\nZ:Q1T2auD+mcFXAGnFPcsXfkXbWnCh8=\nR:asm_plan9_amd64.s\na:0:0:444\nZ:Q1xWYdj+1s9aQHXnqE4b6y1wvaRCI=\nR:asm_plan9_arm.s\na:0:0:444\nZ:Q1ABJD5ec2hvBMP0Xq8xAD1g0jWHU=\nR:const_plan9.go\na:0:0:444\nZ:Q1WHf5znGMnc7JG/okShdfIOA1AFc=\nR:dir_plan9.go\na:0:0:444\nZ:Q1GJfQL0kwcZFw1ioJYqls4UZGYX0=\nR:env_plan9.go\na:0:0:444\nZ:Q1VTrcfCX7jdEacdvoU/81xmvVTOc=\nR:errors_plan9.go\na:0:0:444\nZ:Q1puh11scra3vr4xK2+S97WMy4TY0=\nR:mkall.sh\na:0:0:444\nZ:Q19pp0hAci/oEoNgBSKmXCEk4IXqs=\nR:mkerrors.sh\na:0:0:444\nZ:Q1ZgFJAhlZdocesE5+g+BMyiCA+tY=\nR:mksyscall.go\na:0:0:444\nZ:Q1iVhvUsHZO6lHtS+TTplIddm4eao=\nR:mksysnum_plan9.sh\na:0:0:444\nZ:Q1T6/okY4iEwXqcqQU2ttLmXg48Hg=\nR:pwd_go15_plan9.go\na:0:0:444\nZ:Q11lU5W3v61fRmGeeahp9yoULcQ0g=\nR:pwd_plan9.go\na:0:0:444\nZ:Q1bmeULQmUp6HWKTxoTfddsuubfgA=\nR:race.go\na:0:0:444\nZ:Q104sq3sgOBq8am46vdzwvy2+VxgE=\nR:race0.go\na:0:0:444\nZ:Q11NTSdY6YIuVtZ1t/Y+5TbBvFT38=\nR:str.go\na:0:0:444\nZ:Q1o5B5SQIycL4oxB3L9IqWDix8EiE=\nR:syscall.go\na:0:0:444\nZ:Q13xZwiIHjzA3VBiAM1hnOzknNhDk=\nR:syscall_plan9.go\na:0:0:444\nZ:Q1Urf+IdgHsQ+HpeRMqp52A7/yd6w=\nR:syscall_test.go\na:0:0:444\nZ:Q1Rah1P9Z/lEiiDFA8EUpZG6mpFag=\nR:zsyscall_plan9_386.go\na:0:0:444\nZ:Q1GMmMwSktUxolffgRspBQzEPMuFo=\nR:zsyscall_plan9_amd64.go\na:0:0:444\nZ:Q1u0llMICplCxMQZcOtSPeAcLYMwM=\nR:zsyscall_plan9_arm.go\na:0:0:444\nZ:Q18vjsdbGWCVkhq5GjUV7rVol9QfY=\nR:zsysnum_plan9.go\na:0:0:444\nZ:Q14zOUdgZI15FTJfq8h/chYJWzjbs=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/unix\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1RmYl1sv/DhjIwCRGkU6TgeZ/k0U=\nR:README.md\na:0:0:444\nZ:Q1K18QjAeFexEYp9bSZjCcj1VtJTw=\nR:affinity_linux.go\na:0:0:444\nZ:Q1cRb//LEfLtL3pUAE5dIhk0tleXQ=\nR:aliases.go\na:0:0:444\nZ:Q1RmlXgzsJ4nn1LQxSp5elx2cNVy4=\nR:asm_aix_ppc64.s\na:0:0:444\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:asm_bsd_386.s\na:0:0:444\nZ:Q1ntVe4ypT/odMI0njxRy1TCwzKxI=\nR:asm_bsd_amd64.s\na:0:0:444\nZ:Q1ki8PYduShuFOlh7MFE3jnmBiPz4=\nR:asm_bsd_arm.s\na:0:0:444\nZ:Q1ASSugWLVMunER5kjGYUOWEJEVAE=\nR:asm_bsd_arm64.s\na:0:0:444\nZ:Q1E+ecHieVb700ylzq9XbC7sdX7xI=\nR:asm_bsd_ppc64.s\na:0:0:444\nZ:Q1VmfsODKE/0Q9+enf2zJHnXXMWEY=\nR:asm_bsd_riscv64.s\na:0:0:444\nZ:Q1f8jM/+pENRWyAE2BXaRn/wC60wE=\nR:asm_linux_386.s\na:0:0:444\nZ:Q1xSkKkOpcrF+Hr+JUbvZF00CTXBk=\nR:asm_linux_amd64.s\na:0:0:444\nZ:Q1HOCcl5QEx6wd/yLa/SHBpz+HdaE=\nR:asm_linux_arm.s\na:0:0:444\nZ:Q1aFoSp4sIxSv8cgQOamN0uJdz61k=\nR:asm_linux_arm64.s\na:0:0:444\nZ:Q1vRvCogh7k1JGO6VFOI+GFl4yWXk=\nR:asm_linux_loong64.s\na:0:0:444\nZ:Q14ToPVd/DX6SvsbW5QoXg1yq5mYY=\nR:asm_linux_mips64x.s\na:0:0:444\nZ:Q1mILMdF2rnygQtbVY7ndZasSpaEE=\nR:asm_linux_mipsx.s\na:0:0:444\nZ:Q1/tqZIAbNr+H29NDfaA/0/oKmfI4=\nR:asm_linux_ppc64x.s\na:0:0:444\nZ:Q1LYjcqwOVPn7KpTjQ3+a1u4KSeiI=\nR:asm_linux_riscv64.s\na:0:0:444\nZ:Q1S3iEt/R3hxEYpqatSzrv/fdb6Ms=\nR:asm_linux_s390x.s\na:0:0:444\nZ:Q1/ZTbXVTnLNz5NQQmUpDONBQ4cPw=\nR:asm_openbsd_mips64.s\na:0:0:444\nZ:Q12/p1/qZyRMTU64SrMyMmaW1g0k8=\nR:asm_solaris_amd64.s\na:0:0:444\nZ:Q1QaZPXmYE4ECc6+AMXH7Iv784gnw=\nR:asm_zos_s390x.s\na:0:0:444\nZ:Q1P4DvJfOPn31vKPG2f8HUTA6QzqU=\nR:bluetooth_linux.go\na:0:0:444\nZ:Q15q3sGgTn/RWwwa+2yKizM6K/GgE=\nR:cap_freebsd.go\na:0:0:444\nZ:Q1z/fE2ekanafRbrfm2ahX2XE4hio=\nR:constants.go\na:0:0:444\nZ:Q1PAsnmUAkVjlx50t1lOPG9EY8fFM=\nR:creds_test.go\na:0:0:444\nZ:Q1Tv7Jwj/nEhwzakB04XjyA4FubhI=\nR:darwin_amd64_test.go\na:0:0:444\nZ:Q1J/jlno7ubpqkGpYEQrlBuUnfL34=\nR:darwin_arm64_test.go\na:0:0:444\nZ:Q1hwbV0qhxFLf6J+XeBeBNkQAjxCE=\nR:darwin_test.go\na:0:0:444\nZ:Q1Pw9Sb2WuYehcp2BTodU0KA0q0eo=\nR:dev_aix_ppc.go\na:0:0:444\nZ:Q1KFh4Gg/n3/D2TeScyBnkhc1HYpU=\nR:dev_aix_ppc64.go\na:0:0:444\nZ:Q163nbAXs6OexnrzLfhn+1NpEPsQI=\nR:dev_darwin.go\na:0:0:444\nZ:Q1zUqZmoNX2c8Lu49MZl++Y3mrD6c=\nR:dev_dragonfly.go\na:0:0:444\nZ:Q1l4gEUFS8DsNA0mm+BHwUZ+T0hhY=\nR:dev_freebsd.go\na:0:0:444\nZ:Q16mNqKKlc0be/T+M4wSDx8+9Rspk=\nR:dev_linux.go\na:0:0:444\nZ:Q1S2BMmqSjM0svxNSXckfwCNYrRrg=\nR:dev_linux_test.go\na:0:0:444\nZ:Q1erV21oE2OTxFOPeyE8V9uVX9zCk=\nR:dev_netbsd.go\na:0:0:444\nZ:Q1+8mrG/Z7p6VHusLxVC8wlpEGp20=\nR:dev_openbsd.go\na:0:0:444\nZ:Q1cMPD4nILdLEHLX6WUBt/J51+7+g=\nR:dev_zos.go\na:0:0:444\nZ:Q1hShSpEln+Y+qTrEtsTQMj9q9vj4=\nR:dev_zos_test.go\na:0:0:444\nZ:Q1HNH+DYEGhh2Wx5m0T3nmtRcNoJA=\nR:dirent.go\na:0:0:444\nZ:Q1OwzlnHc5ImSAFx/IrDqe+EhXjjY=\nR:dirent_test.go\na:0:0:444\nZ:Q1kae6xd0JTKPbE+AFfk56sk1b69o=\nR:endian_big.go\na:0:0:444\nZ:Q1oBkG9NebaxAxx9NlNSUnwyJoNKE=\nR:endian_little.go\na:0:0:444\nZ:Q13W1nBXXQCXAvDie5TJ1NC4pzeuw=\nR:env_unix.go\na:0:0:444\nZ:Q1hxD1zeslbXT4dpkb40HVXkkDgR0=\nR:epoll_zos.go\na:0:0:444\nZ:Q1lzO/+ABNcObza+Q6+wMY/81ce4Y=\nR:epoll_zos_test.go\na:0:0:444\nZ:Q1OZKkzijtY7yo9wsJ4/SI9oS3ry0=\nR:example_exec_test.go\na:0:0:444\nZ:Q1AV6+CZx5uSIgCaRcBvGwXnuqhG0=\nR:example_flock_test.go\na:0:0:444\nZ:Q1v4QLHpcUkB/MlVDVssUnN3J7QkU=\nR:example_sysvshm_test.go\na:0:0:444\nZ:Q1MhB+OeO/kbYswvzYDdJxDzWs4RI=\nR:fcntl.go\na:0:0:444\nZ:Q1saiCVFAswOZfvDmRDLftIsvhvxc=\nR:fcntl_darwin.go\na:0:0:444\nZ:Q1x9BVg8x/wLKJUrLQWQLlmA2ulkI=\nR:fcntl_linux_32bit.go\na:0:0:444\nZ:Q1eP6qF088S77Lr4srMH4qK2g3EgE=\nR:fdset.go\na:0:0:444\nZ:Q1UYIVTl2wV6JMpHGPNwyy/Fc/HCU=\nR:fdset_test.go\na:0:0:444\nZ:Q1qLNMjpwa2cDYZlbwZhLpt5hRLo0=\nR:fstatfs_zos.go\na:0:0:444\nZ:Q10UQQb/xhc3J3KVe/UE2rAI17MW0=\nR:fstatfs_zos_test.go\na:0:0:444\nZ:Q1gC+MlbVdmno7L1CzYaAeAEVAwA4=\nR:gccgo.go\na:0:0:444\nZ:Q1HcLTnYlvTqS6DMy1EwibFoecr1w=\nR:gccgo_c.c\na:0:0:444\nZ:Q1YAAQ9wRY2S7gLjgvaIDvuMkz5zY=\nR:gccgo_linux_amd64.go\na:0:0:444\nZ:Q1baJ33mTL3XzhOJ1U+5VzxtbSqvQ=\nR:getdirentries_test.go\na:0:0:444\nZ:Q1fbjxfNEb2PaNg1P0g2vq26fkwMI=\nR:getfsstat_test.go\na:0:0:444\nZ:Q1PEtdAL3WM8h9Q5M/GKJZd2L/uIk=\nR:ifreq_linux.go\na:0:0:444\nZ:Q1To+wEeaHX1pg8gFZJzO4Y++yE4M=\nR:ifreq_linux_test.go\na:0:0:444\nZ:Q1xO89z9afc1UFLussiFFN5yvcyUA=\nR:ioctl.go\na:0:0:444\nZ:Q1JXpN3DWp2AnScdEyVznUna8HwWw=\nR:ioctl_linux.go\na:0:0:444\nZ:Q17aKkih+S1RUvV17H/KHLX4I/Jv8=\nR:ioctl_zos.go\na:0:0:444\nZ:Q1+VLOYMa1AGfYwGNuAnN3Lgz3jOI=\nR:mkall.sh\na:0:0:444\nZ:Q1eAtWtxUmbIysh86zgkVjTFMDZCc=\nR:mkasm.go\na:0:0:444\nZ:Q1Oie/zAzwpoc5thJ/+qSnP6TD3mg=\nR:mkerrors.sh\na:0:0:444\nZ:Q15Wo/K3f8QTl7BCdFZK4BIuqSMZY=\nR:mkpost.go\na:0:0:444\nZ:Q1+B2dcvBVZfrU7+5zqTv7G58JwQc=\nR:mksyscall.go\na:0:0:444\nZ:Q1tzgmR2IqIw2D1hCWPQKbKpWIYIQ=\nR:mksyscall_aix_ppc.go\na:0:0:444\nZ:Q1UgmITfLmh2f0z9xZlK0QWHV+zJk=\nR:mksyscall_aix_ppc64.go\na:0:0:444\nZ:Q1R2A9/rSgIU85xxQ5xdkhdRi3arw=\nR:mksyscall_solaris.go\na:0:0:444\nZ:Q15xQ4xgGJdgdouwcobZ8CFRB0pSk=\nR:mksysctl_openbsd.go\na:0:0:444\nZ:Q1YGDSYX/2FnyvngOt771/FR0bdME=\nR:mksysnum.go\na:0:0:444\nZ:Q1+QwaiiZCI5xiZJCfgXoL21CjyCE=\nR:mmap_unix_test.go\na:0:0:444\nZ:Q1jOa+hDA47EJYOmeesd111DI9gHg=\nR:mmap_zos_test.go\na:0:0:444\nZ:Q19cfqAKfJgvtU0akE/ivTYcPr8bQ=\nR:openbsd_test.go\na:0:0:444\nZ:Q1rfZpirtXNm42n665AeIO3gM8tr0=\nR:pagesize_unix.go\na:0:0:444\nZ:Q18Tkk+8oy7/GFOQoN8TKGD6keLMY=\nR:pipe2_test.go\na:0:0:444\nZ:Q1gyIucFh4c45YIfeJMxIvASkV+jg=\nR:pledge_openbsd.go\na:0:0:444\nZ:Q15O7GCqxUwjpSo2D6+L9XfpPbrpQ=\nR:ptrace_darwin.go\na:0:0:444\nZ:Q1QcefnK6qyEyloVY5nmoI2nV6qxs=\nR:ptrace_ios.go\na:0:0:444\nZ:Q17FZBSvv2ajI4CtvN1LWgVI6fNuA=\nR:race.go\na:0:0:444\nZ:Q1fuXGhh3PV+bAD1n/f59oFvpLWqs=\nR:race0.go\na:0:0:444\nZ:Q10EjozZhHoMvPjI6fO2/jf3E1sC4=\nR:readdirent_getdents.go\na:0:0:444\nZ:Q1UnfOzetNQa7nxnbz63jaSHgEktg=\nR:readdirent_getdirentries.go\na:0:0:444\nZ:Q1ktbwBrx+6qdVszMz7dn9MFCsyPo=\nR:sendfile_test.go\na:0:0:444\nZ:Q1xR8DVj+hhlewwwddTfAFxFWn33o=\nR:sockcmsg_dragonfly.go\na:0:0:444\nZ:Q11OYqwTN6CBuFknzioaR3Qsi2itk=\nR:sockcmsg_linux.go\na:0:0:444\nZ:Q1G1T6VraeT7Sth2NITi4EO4TjA1w=\nR:sockcmsg_unix.go\na:0:0:444\nZ:Q138Wka1okrMyuC9KvKsckeCAmpI8=\nR:sockcmsg_unix_other.go\na:0:0:444\nZ:Q1n/orR94+W+J0RO2cOP1uaCafCRo=\nR:syscall.go\na:0:0:444\nZ:Q1GAUtKsbMGbIw8SY9brZKTX9Zf9Q=\nR:syscall_aix.go\na:0:0:444\nZ:Q1RNnWbQemq554n2gBS2t3N5dkqGk=\nR:syscall_aix_ppc.go\na:0:0:444\nZ:Q1weiuoqBV5xyLenZ9Ec1xO51To5g=\nR:syscall_aix_ppc64.go\na:0:0:444\nZ:Q10ileJSgMVKWqTueccbKl//ue/Qg=\nR:syscall_aix_test.go\na:0:0:444\nZ:Q1Dd2n/wNpnBbMnhGWXLrY3ml7GUA=\nR:syscall_bsd.go\na:0:0:444\nZ:Q1DIpSa/4DS03i4q5WJQ60fvE+vok=\nR:syscall_bsd_test.go\na:0:0:444\nZ:Q18RPHBnMopc3dl+zuP/4+wti16KM=\nR:syscall_darwin.go\na:0:0:444\nZ:Q1TJj5Bn1lPaWZIO5KX8MBYsGc47s=\nR:syscall_darwin_amd64.go\na:0:0:444\nZ:Q1dzVFWGYjPXw78xftjL4D6HJysqA=\nR:syscall_darwin_arm64.go\na:0:0:444\nZ:Q1bvaQ0+ASERfp3t5o4nkZIiV3GOY=\nR:syscall_darwin_libSystem.go\na:0:0:444\nZ:Q1hT9YHvpKnRvVSqoGtDWQOV15VlU=\nR:syscall_darwin_test.go\na:0:0:444\nZ:Q1L588Gm/WrF4/AbaHyKT7DSWkifo=\nR:syscall_dragonfly.go\na:0:0:444\nZ:Q183Ah1KFe8hCZsVqLW0AocPWI6UI=\nR:syscall_dragonfly_amd64.go\na:0:0:444\nZ:Q1mWk6E+dLsvIqQkCUV45wQSmaZmw=\nR:syscall_freebsd.go\na:0:0:444\nZ:Q1c8Y0+vMqpvi+4w2skhbIHAlltrc=\nR:syscall_freebsd_386.go\na:0:0:444\nZ:Q1+u2W/z7zAGvezlhk/R6h3yld45A=\nR:syscall_freebsd_amd64.go\na:0:0:444\nZ:Q1nkF75p9zS3MBCMcpc9bmIxgk6H8=\nR:syscall_freebsd_arm.go\na:0:0:444\nZ:Q1Ov4uPpZJf+NJ58T4O2tAZqN/HRo=\nR:syscall_freebsd_arm64.go\na:0:0:444\nZ:Q13Erw5b3VhnupyvX13Ef55gy1OxM=\nR:syscall_freebsd_riscv64.go\na:0:0:444\nZ:Q1POBgSs7Fw0r+Hr3GhWQxi/B+5Jo=\nR:syscall_freebsd_test.go\na:0:0:444\nZ:Q1Ib9i6JCx4sN7c7LK28REwPYagIo=\nR:syscall_illumos.go\na:0:0:444\nZ:Q1t9+vHcGjSokbHBnxC31L02wiQ8s=\nR:syscall_internal_bsd_test.go\na:0:0:444\nZ:Q1kfcUqhRVO/WiKJXY9h6Vz9IkWlA=\nR:syscall_internal_darwin_test.go\na:0:0:444\nZ:Q1Dpohd/xMaJPddEubkmAZdrhTID4=\nR:syscall_internal_linux_test.go\na:0:0:444\nZ:Q1r3zTDRxhPO12zjCTtt0cUQ0sMhE=\nR:syscall_internal_solaris_test.go\na:0:0:444\nZ:Q1m+Xee7YSLkkr8bXkxKwej9lfuUI=\nR:syscall_linux.go\na:0:0:444\nZ:Q1WgQ4A+wUkT9zLYlHdHnc7O2vU6E=\nR:syscall_linux_386.go\na:0:0:444\nZ:Q1A9j4l89S9HUC3m8h0+4wU/wxEHI=\nR:syscall_linux_alarm.go\na:0:0:444\nZ:Q1nRhxEOT/mHmGuEK7SMT49HdKWpc=\nR:syscall_linux_amd64.go\na:0:0:444\nZ:Q14xVoQbsfJ15Cy5Nr7/ahteHHH5s=\nR:syscall_linux_amd64_gc.go\na:0:0:444\nZ:Q1aSGCe2hQPXT+NPhk2fRy1GrDAJ4=\nR:syscall_linux_arm.go\na:0:0:444\nZ:Q14emaEI5kZNmuWMaaRJLXdZcMj/g=\nR:syscall_linux_arm64.go\na:0:0:444\nZ:Q1DYGA47rd0ncKNdl4EWE3l+WPoK8=\nR:syscall_linux_gc.go\na:0:0:444\nZ:Q1n+Tf1gDjY7R3oo3oNhzSVZZNiHU=\nR:syscall_linux_gc_386.go\na:0:0:444\nZ:Q17GoTKW7jK0VX0/oW9MtUolVJw9o=\nR:syscall_linux_gc_arm.go\na:0:0:444\nZ:Q1f3IlNtVRmQw/5Io81SFgubZ2vZw=\nR:syscall_linux_gccgo_386.go\na:0:0:444\nZ:Q128r2W0Dvik+lpV3zMRd/aNu7D/s=\nR:syscall_linux_gccgo_arm.go\na:0:0:444\nZ:Q1omh7kWTFH9XmqSosKF4l3qVatCU=\nR:syscall_linux_loong64.go\na:0:0:444\nZ:Q1DaOL5qKrPA/7sjBo930xMBUF7jE=\nR:syscall_linux_mips64x.go\na:0:0:444\nZ:Q1Xg0R/mXzvda2XGzTv4pgMUeIgzg=\nR:syscall_linux_mipsx.go\na:0:0:444\nZ:Q15uuqCyPPjxw6aYdsqThYkfVNP1U=\nR:syscall_linux_ppc.go\na:0:0:444\nZ:Q1iTOMKqLFbRcoC6HpUxhO9vbowoQ=\nR:syscall_linux_ppc64x.go\na:0:0:444\nZ:Q1H0CAO2Ww5ZlsOZWMPYYm4EoJUzs=\nR:syscall_linux_riscv64.go\na:0:0:444\nZ:Q1zAXcEjFJdsrVG53N1dYvdGz6sfI=\nR:syscall_linux_s390x.go\na:0:0:444\nZ:Q1W8LBQn+bqnm346FJZBUfje7k8k4=\nR:syscall_linux_sparc64.go\na:0:0:444\nZ:Q1601I70lZyAvVPyQDuQRd+ELV2ow=\nR:syscall_linux_test.go\na:0:0:444\nZ:Q1sq1uiqCtQiCQ58zNgU1hnnZSpFc=\nR:syscall_netbsd.go\na:0:0:444\nZ:Q1ZyD5JMCOq2sySEioqy5urq1K5Us=\nR:syscall_netbsd_386.go\na:0:0:444\nZ:Q1Z4rA9JRqBHKhNau2IBKCw6tI7kI=\nR:syscall_netbsd_amd64.go\na:0:0:444\nZ:Q1PkfxrcCRJztpQBUPet+VqCKTaYY=\nR:syscall_netbsd_arm.go\na:0:0:444\nZ:Q10K49RLHJDBsLpuVSAv74BwJ+DXs=\nR:syscall_netbsd_arm64.go\na:0:0:444\nZ:Q1utIHcaZdyMgfUOyHMlo+XBvDHCw=\nR:syscall_netbsd_test.go\na:0:0:444\nZ:Q1V3fpQVpRrObSiONhSauBQsNN3g4=\nR:syscall_openbsd.go\na:0:0:444\nZ:Q1bkS8C8UmGxoCerolL2fuXdj6ES4=\nR:syscall_openbsd_386.go\na:0:0:444\nZ:Q11L3leU5OqzN3DB7lB+xghJYhmHE=\nR:syscall_openbsd_amd64.go\na:0:0:444\nZ:Q1/Ht6D8fprnpAr/yKrE4muCRGiBw=\nR:syscall_openbsd_arm.go\na:0:0:444\nZ:Q10asHLgYMYZAGiAE8vJTo0b7VlX8=\nR:syscall_openbsd_arm64.go\na:0:0:444\nZ:Q1ty7QkRIWQRgv0y1CZ9sft0kUnLs=\nR:syscall_openbsd_libc.go\na:0:0:444\nZ:Q18r2QqmGdkI2w+y0Xx7PNwphyKIA=\nR:syscall_openbsd_mips64.go\na:0:0:444\nZ:Q19218EvEgLIsKgPIMTCtBzWdXSxg=\nR:syscall_openbsd_ppc64.go\na:0:0:444\nZ:Q1HcdPa+v4+tYijWiJXrp+vrCj3yM=\nR:syscall_openbsd_riscv64.go\na:0:0:444\nZ:Q1gA7O8XSVSluObSg+2WqZbhY+/pg=\nR:syscall_openbsd_test.go\na:0:0:444\nZ:Q1V/GRZ4s4Ff+2SwxeWDF4sXxvd0E=\nR:syscall_solaris.go\na:0:0:444\nZ:Q1cdwPDCDzV5mqUIHueyYz10UcEPA=\nR:syscall_solaris_amd64.go\na:0:0:444\nZ:Q125WLOkAfQZLuvpoMfceUmf4ddsM=\nR:syscall_solaris_test.go\na:0:0:444\nZ:Q1RyY1xZeamjzUDIfcZJlpxtnVZIk=\nR:syscall_test.go\na:0:0:444\nZ:Q1OJ5RM40989mwmdFIdOldNE2pdZs=\nR:syscall_unix.go\na:0:0:444\nZ:Q1r6yvr9bw3w8FVsXKLGW8C18Nz5Y=\nR:syscall_unix_gc.go\na:0:0:444\nZ:Q1VCxKiExGIaS5pA+sWyZ0nUXb2GM=\nR:syscall_unix_gc_ppc64x.go\na:0:0:444\nZ:Q1WMpIeiQvvJ9et9EwDXtr5daqBZQ=\nR:syscall_unix_test.go\na:0:0:444\nZ:Q1Z6md6HMFYXkMtKdFBr1u9PzdYLM=\nR:syscall_zos_s390x.go\na:0:0:444\nZ:Q1W26ztLn5Aw+bD+efkOm9Ze209U4=\nR:syscall_zos_test.go\na:0:0:444\nZ:Q19d5WfVBHB2Kc/fOFSlwnsoVP3EU=\nR:sysvshm_linux.go\na:0:0:444\nZ:Q1gUa50ccbN7EsE9ieUN1YAhnKX7c=\nR:sysvshm_unix.go\na:0:0:444\nZ:Q1EjP3jpaoaENLJGFVl2lAa3D43gI=\nR:sysvshm_unix_other.go\na:0:0:444\nZ:Q1sj5qlNv09XHTkOMDEUYZcoehCeY=\nR:sysvshm_unix_test.go\na:0:0:444\nZ:Q1ekKQqQqFdXSQEXV8K5yJ9trOKww=\nR:timestruct.go\na:0:0:444\nZ:Q1juC4Mir/lPOrzND1nXIviKEUjyQ=\nR:timestruct_test.go\na:0:0:444\nZ:Q1JYkVU2O2NO2ScvB0L8HI7wIuYqg=\nR:types_aix.go\na:0:0:444\nZ:Q1ZylZf4W/WwZnDvyS1NYAO/3MQIM=\nR:types_darwin.go\na:0:0:444\nZ:Q1HHUqtFJ1rytnZJSBec8hNJZOtL8=\nR:types_dragonfly.go\na:0:0:444\nZ:Q1hEOuwM4VoivXu2iwsowLIwJkh2U=\nR:types_freebsd.go\na:0:0:444\nZ:Q1+3y4Z+olcni22vSDiVUTs+Qoz8g=\nR:types_netbsd.go\na:0:0:444\nZ:Q1OyWCzTJ6TUDxSv4cg3f5mxZdazQ=\nR:types_openbsd.go\na:0:0:444\nZ:Q1P3y5b7jFfduvGLYp0d0AEVlnt9M=\nR:types_solaris.go\na:0:0:444\nZ:Q11QtB3/kw9fjCBS8tr4/dA1NvnCk=\nR:unveil_openbsd.go\na:0:0:444\nZ:Q1ORoOnVgyeTgEWOhGzcDnMVkoFOA=\nR:xattr_bsd.go\na:0:0:444\nZ:Q1Hn7aDKjhihshSR90cIzb/intJlM=\nR:xattr_test.go\na:0:0:444\nZ:Q1K7j+xMAbFexEsg7IJyO/7IJ81ZQ=\nR:zerrors_aix_ppc.go\na:0:0:444\nZ:Q1dg+T7g+xE4QH72NEnd0S2JgonHA=\nR:zerrors_aix_ppc64.go\na:0:0:444\nZ:Q1+EbqsHVLcooW6l+jMHVk9370dhA=\nR:zerrors_darwin_amd64.go\na:0:0:444\nZ:Q1ELC/tEDqs1XeoAcIJuDJhy6FIwI=\nR:zerrors_darwin_arm64.go\na:0:0:444\nZ:Q1+ah8MuWyYs/bMmS0AXUcC3huZas=\nR:zerrors_dragonfly_amd64.go\na:0:0:444\nZ:Q1cFF9V0e6+01O2kYeuzUoyEJeAiw=\nR:zerrors_freebsd_386.go\na:0:0:444\nZ:Q1k1v+PoMePhQG6IGp4ukfgRNd+10=\nR:zerrors_freebsd_amd64.go\na:0:0:444\nZ:Q1oo7VZe2l47wTZHNIT53mp6DquUM=\nR:zerrors_freebsd_arm.go\na:0:0:444\nZ:Q1AF/PdxYcANCCiI0YvyBTCoJnE7g=\nR:zerrors_freebsd_arm64.go\na:0:0:444\nZ:Q1Hl5pKaECveDsClqL0b68Up2az14=\nR:zerrors_freebsd_riscv64.go\na:0:0:444\nZ:Q1RHJk285p0VrI9RbkgSEeJgtq6xI=\nR:zerrors_linux.go\na:0:0:444\nZ:Q1flC/xTATc4x7CXvwA2yCfy3xQJA=\nR:zerrors_linux_386.go\na:0:0:444\nZ:Q1OJoy0MrDFj6wyH4OxE2+pez2lPQ=\nR:zerrors_linux_amd64.go\na:0:0:444\nZ:Q1cDq6zQ2dMeAk02rxymJJWx7UhwY=\nR:zerrors_linux_arm.go\na:0:0:444\nZ:Q1CZi73oml9fByPYnCPQpoDZp69ps=\nR:zerrors_linux_arm64.go\na:0:0:444\nZ:Q13bkT9LuBj+OphQzbGrpfDzUa/nI=\nR:zerrors_linux_loong64.go\na:0:0:444\nZ:Q1a98xKUiUXh6g52ft8l2xB2AiWiM=\nR:zerrors_linux_mips.go\na:0:0:444\nZ:Q1SMr3wjQtv1vW2+LUOJ1nyHk+vS4=\nR:zerrors_linux_mips64.go\na:0:0:444\nZ:Q1mhV0VNt+pzONaSEGVzpfTt0FBt8=\nR:zerrors_linux_mips64le.go\na:0:0:444\nZ:Q1wD5Tm3cbe+sBSe6LC3+5yWnLu4w=\nR:zerrors_linux_mipsle.go\na:0:0:444\nZ:Q12w3gbi6DwQdgOvFLbDy4+Fpg/R4=\nR:zerrors_linux_ppc.go\na:0:0:444\nZ:Q1FLn5NykqcRmvWhGOccp4MRx+RTA=\nR:zerrors_linux_ppc64.go\na:0:0:444\nZ:Q1gDzSKYMMAQsgizwYzqU7hqi3V/s=\nR:zerrors_linux_ppc64le.go\na:0:0:444\nZ:Q1DBRR2KJDTPDhVtpt0dMlwdFC6K0=\nR:zerrors_linux_riscv64.go\na:0:0:444\nZ:Q15Hb2Z7vCRvIxoh/HukS3Vcmii5U=\nR:zerrors_linux_s390x.go\na:0:0:444\nZ:Q1akYJ394ZQbN1y1UI8hO/wJc3NO0=\nR:zerrors_linux_sparc64.go\na:0:0:444\nZ:Q1oK+i6tqJv6oetKDAESH8Qv+L+og=\nR:zerrors_netbsd_386.go\na:0:0:444\nZ:Q1B5sPBNBmlv1xXYrrUxICCgFbwO0=\nR:zerrors_netbsd_amd64.go\na:0:0:444\nZ:Q1Lafvpq+O9sV4kFbObek/cCFOkJI=\nR:zerrors_netbsd_arm.go\na:0:0:444\nZ:Q1h/1JAbNQft+FnRVmGf9XEFLki6M=\nR:zerrors_netbsd_arm64.go\na:0:0:444\nZ:Q1iUtaU1N47dCYeSNPupSeaRXYT7s=\nR:zerrors_openbsd_386.go\na:0:0:444\nZ:Q1PQ9QTXzna2g7f4p6oM7ObawUqzQ=\nR:zerrors_openbsd_amd64.go\na:0:0:444\nZ:Q1xlImVmLLTyNcrLSx0rwrnfOaktQ=\nR:zerrors_openbsd_arm.go\na:0:0:444\nZ:Q1O4kjFc3mtrwr9gTgEJhVFtF6Adg=\nR:zerrors_openbsd_arm64.go\na:0:0:444\nZ:Q1YcMyIvl4rYStjP+IJmuRdE6EhwM=\nR:zerrors_openbsd_mips64.go\na:0:0:444\nZ:Q1iqar06/jbWiYAKeDoruLwO2PPeA=\nR:zerrors_openbsd_ppc64.go\na:0:0:444\nZ:Q1v5MukpV4ZCzVyMlpAcl/MZBa3BQ=\nR:zerrors_openbsd_riscv64.go\na:0:0:444\nZ:Q1ETJNBK+AuM6H74oPgmX6lk3m+M0=\nR:zerrors_solaris_amd64.go\na:0:0:444\nZ:Q10gfaFsZfG/lbI0R7C+PxMZ8Id7U=\nR:zerrors_zos_s390x.go\na:0:0:444\nZ:Q1oL0uJS64eZq1nQrltg5YKo4ZIH4=\nR:zptrace_armnn_linux.go\na:0:0:444\nZ:Q1rMg0kC0pi5+dfXL6xW+jrWcD+H8=\nR:zptrace_linux_arm64.go\na:0:0:444\nZ:Q11CbuLNUAR/NR9k/ZzwvIbBZHsaI=\nR:zptrace_mipsnn_linux.go\na:0:0:444\nZ:Q1FlXe2JJ0mWU3Rfv8AmhZzC1h52o=\nR:zptrace_mipsnnle_linux.go\na:0:0:444\nZ:Q1qoqreFtx/TOVpBugHucphnhTapk=\nR:zptrace_x86_linux.go\na:0:0:444\nZ:Q1Z7aU3zWWYsBxdwAxNCaTHzQzkOw=\nR:zsyscall_aix_ppc.go\na:0:0:444\nZ:Q17IyZPebHLxmIk2K1Gx6E1rmEgdc=\nR:zsyscall_aix_ppc64.go\na:0:0:444\nZ:Q1VpwCkRL4iEmZt8CQbAXdB2tJE58=\nR:zsyscall_aix_ppc64_gc.go\na:0:0:444\nZ:Q1HD2RxGmNgegqzAx+PBeL4XWgVpw=\nR:zsyscall_aix_ppc64_gccgo.go\na:0:0:444\nZ:Q13d82hJdOzvy9bWWHuGNdgjUa4s8=\nR:zsyscall_darwin_amd64.go\na:0:0:444\nZ:Q1pkgrhaBpakGHLXPdX2L1vDeEFFc=\nR:zsyscall_darwin_amd64.s\na:0:0:444\nZ:Q17ECZUS+ONBb5DKPYlCnoJmB3yUw=\nR:zsyscall_darwin_arm64.go\na:0:0:444\nZ:Q1q8Qx6ONKfMpGrHzzlT0zkaCYZrE=\nR:zsyscall_darwin_arm64.s\na:0:0:444\nZ:Q1gZDj5XAX//u1Z8F8zUhqqDOo90k=\nR:zsyscall_dragonfly_amd64.go\na:0:0:444\nZ:Q15mczAfRjDNhhGA+AeFxPKyaetFw=\nR:zsyscall_freebsd_386.go\na:0:0:444\nZ:Q10N0+LizaPGtUpUOKtxayYcKl1OM=\nR:zsyscall_freebsd_amd64.go\na:0:0:444\nZ:Q1Vy87f458F3PJez6XvTUVNp9rY2A=\nR:zsyscall_freebsd_arm.go\na:0:0:444\nZ:Q1DrRUwU6PJeQ3JJ75j1xBgA4RfQ4=\nR:zsyscall_freebsd_arm64.go\na:0:0:444\nZ:Q1AuiGhuTx2FVUFKbOXx+mOaBJUcc=\nR:zsyscall_freebsd_riscv64.go\na:0:0:444\nZ:Q1Pn74AwvxSpkYSWe6Bhr+EG69SmY=\nR:zsyscall_illumos_amd64.go\na:0:0:444\nZ:Q1XgKBerBOLtivpOodMwqsJoA5Eh0=\nR:zsyscall_linux.go\na:0:0:444\nZ:Q1zio8IMMPRW0L49LOsNg+Bj0QYJ8=\nR:zsyscall_linux_386.go\na:0:0:444\nZ:Q1Dz9YAWoF3/XUarGOihfFAFotRVw=\nR:zsyscall_linux_amd64.go\na:0:0:444\nZ:Q1NEsodTuTK4DTh74yVr98TeQPfQw=\nR:zsyscall_linux_arm.go\na:0:0:444\nZ:Q1f54jT7+lhhY1gI6kQT8ulGbbuqw=\nR:zsyscall_linux_arm64.go\na:0:0:444\nZ:Q1bubGXxWeavim8dgsEB6amMUcc3Y=\nR:zsyscall_linux_loong64.go\na:0:0:444\nZ:Q1ZnT53+7/EntvI9yYXssWrKPUjIg=\nR:zsyscall_linux_mips.go\na:0:0:444\nZ:Q1zHvvSw6/PjCuohQpilMKn3JdRoY=\nR:zsyscall_linux_mips64.go\na:0:0:444\nZ:Q1mg6Wv/mss//v9p0S5ILWPx4yzt0=\nR:zsyscall_linux_mips64le.go\na:0:0:444\nZ:Q1lzBwzVVlAxagZrQQQ6PWBOumpm8=\nR:zsyscall_linux_mipsle.go\na:0:0:444\nZ:Q1da+oZ51O1nz0p7ol1RAzRk6LZps=\nR:zsyscall_linux_ppc.go\na:0:0:444\nZ:Q1a+iVAoq3SoCpN9LbJjpOVRd4w9w=\nR:zsyscall_linux_ppc64.go\na:0:0:444\nZ:Q1sxSBD+ArjA0LWBvI8b3DGdfAEqk=\nR:zsyscall_linux_ppc64le.go\na:0:0:444\nZ:Q19YkukumRYDVThf770cbhTvxPxSI=\nR:zsyscall_linux_riscv64.go\na:0:0:444\nZ:Q1yzz0RFoRcDNPQL+c/MAHasp0UGw=\nR:zsyscall_linux_s390x.go\na:0:0:444\nZ:Q16gsnWlH6T1TZvHeUBvVGw+mq3+4=\nR:zsyscall_linux_sparc64.go\na:0:0:444\nZ:Q1IqMrRbF1IArGfq3nCLp4ZZIf78c=\nR:zsyscall_netbsd_386.go\na:0:0:444\nZ:Q15woiyUytGl2dN9AgPQFuEhUHlnI=\nR:zsyscall_netbsd_amd64.go\na:0:0:444\nZ:Q1ZQs9YPxX+ZMXCMjTaG8HJg4+C00=\nR:zsyscall_netbsd_arm.go\na:0:0:444\nZ:Q1DYK1rj8HmoGjJPJiua+87Yd2gfk=\nR:zsyscall_netbsd_arm64.go\na:0:0:444\nZ:Q1Bt0iJhBtrc7dqkClQ57kgi/zXss=\nR:zsyscall_openbsd_386.go\na:0:0:444\nZ:Q1Pvl7BPe1e0NZliGPIbTONwITwOk=\nR:zsyscall_openbsd_386.s\na:0:0:444\nZ:Q1LZMwK3azj+1XJMuFPe4gERB4bK8=\nR:zsyscall_openbsd_amd64.go\na:0:0:444\nZ:Q1wCf+V4+OYuehHQdM0TO9ICCb6oo=\nR:zsyscall_openbsd_amd64.s\na:0:0:444\nZ:Q1DBVGLBn/ylofsIPA2VR6iS+i2+s=\nR:zsyscall_openbsd_arm.go\na:0:0:444\nZ:Q1S0MyEiQ9qHFZPYiJMkKPX9F9Xr8=\nR:zsyscall_openbsd_arm.s\na:0:0:444\nZ:Q1LEfLagfMTV41XFxTL4kNT+XgMpE=\nR:zsyscall_openbsd_arm64.go\na:0:0:444\nZ:Q1CU/pB0IZmK0IkvvhmXnwkDIuOr0=\nR:zsyscall_openbsd_arm64.s\na:0:0:444\nZ:Q1hh45ktM0AxLD0uezFuFU2S1ITUc=\nR:zsyscall_openbsd_mips64.go\na:0:0:444\nZ:Q1BwGW8+kvgd4e1Jxr+Tv5slC7aE4=\nR:zsyscall_openbsd_ppc64.go\na:0:0:444\nZ:Q1RdGx+ZHn2Sg0+yoVJ48twNuVTds=\nR:zsyscall_openbsd_ppc64.s\na:0:0:444\nZ:Q1pu6MQ9JWtH7j3ry7tYZrnj7Crns=\nR:zsyscall_openbsd_riscv64.go\na:0:0:444\nZ:Q1+5kDIlfhn+QgzvoT30D4i6TJtgI=\nR:zsyscall_openbsd_riscv64.s\na:0:0:444\nZ:Q1xo3fHq/GEab5EMHActdJ20lDJ5I=\nR:zsyscall_solaris_amd64.go\na:0:0:444\nZ:Q1Fm/bA66087ugMxOqxhhC/gRBBGo=\nR:zsyscall_zos_s390x.go\na:0:0:444\nZ:Q1D5ksRN4Dj/sZgzCF/E6EzTybR8I=\nR:zsysctl_openbsd_386.go\na:0:0:444\nZ:Q1EOMofj5hXJWMdDy18i4/xkMgmHw=\nR:zsysctl_openbsd_amd64.go\na:0:0:444\nZ:Q1L9ZMve8M+rCeI7QHw6oO7VpPmeo=\nR:zsysctl_openbsd_arm.go\na:0:0:444\nZ:Q19W4pcfzddcJFAu5fUlNFCdfxqFY=\nR:zsysctl_openbsd_arm64.go\na:0:0:444\nZ:Q1ICVglFLQ0tC2kWjfvNOiW+o4vJg=\nR:zsysctl_openbsd_mips64.go\na:0:0:444\nZ:Q1cxs3KduW00NdvZpfW+CuWa3N+r4=\nR:zsysctl_openbsd_ppc64.go\na:0:0:444\nZ:Q1tj9pam/9cqF241kVIebc2OV9POE=\nR:zsysctl_openbsd_riscv64.go\na:0:0:444\nZ:Q1BvQSskieD69COpzhYUaGYCmlOlY=\nR:zsysnum_darwin_amd64.go\na:0:0:444\nZ:Q1rPSjDLDDeF729V54QQTiIWJLYvc=\nR:zsysnum_darwin_arm64.go\na:0:0:444\nZ:Q14hQk6vhH1Cl8fOWyKMOkkSfpPkg=\nR:zsysnum_dragonfly_amd64.go\na:0:0:444\nZ:Q1BF3JwZAur0zQxeCH/mQrq0npTUg=\nR:zsysnum_freebsd_386.go\na:0:0:444\nZ:Q1Z/BMoBRkCAEEJTvfGy8h+be6RvI=\nR:zsysnum_freebsd_amd64.go\na:0:0:444\nZ:Q1t+h9NyqyVealE/Lx3fTwPtv4+fw=\nR:zsysnum_freebsd_arm.go\na:0:0:444\nZ:Q1BUsmEnM4ZitAcJWZcIJol8VK/GA=\nR:zsysnum_freebsd_arm64.go\na:0:0:444\nZ:Q1B4vxO7A3vRUzIMBEazBPthWoryg=\nR:zsysnum_freebsd_riscv64.go\na:0:0:444\nZ:Q1f9ANUaSlnuVFFGNid9lJWMuZ8vU=\nR:zsysnum_linux_386.go\na:0:0:444\nZ:Q1gtXdj5CMll8iGtCJ2a767if0voM=\nR:zsysnum_linux_amd64.go\na:0:0:444\nZ:Q1o/LIE+qdkY6DZpuBm+XUBynSBC4=\nR:zsysnum_linux_arm.go\na:0:0:444\nZ:Q1Bja2RTLYGYf6b32qy5AIXeNKFAM=\nR:zsysnum_linux_arm64.go\na:0:0:444\nZ:Q1p5ss9JZVKMwJAYgUGQWAKRgDdPs=\nR:zsysnum_linux_loong64.go\na:0:0:444\nZ:Q1p9PWvkgRijvF9H7a/6EBEy1dFDA=\nR:zsysnum_linux_mips.go\na:0:0:444\nZ:Q18OlJxmJvBSnHgtY9oZ5+MwanY4k=\nR:zsysnum_linux_mips64.go\na:0:0:444\nZ:Q1iw/MytMpkdaztZkAF5HPvDdhhyU=\nR:zsysnum_linux_mips64le.go\na:0:0:444\nZ:Q15vSnUNpOMDf9sGV+iZ0iaLmwk18=\nR:zsysnum_linux_mipsle.go\na:0:0:444\nZ:Q10znlcTNqx34tWzuCcUu8h6IVxDU=\nR:zsysnum_linux_ppc.go\na:0:0:444\nZ:Q14g1uU+ZesRCCk0Qj9VOuwmr+slE=\nR:zsysnum_linux_ppc64.go\na:0:0:444\nZ:Q1ygK5+HWHVQE4L1s8dqDOY3TmCsM=\nR:zsysnum_linux_ppc64le.go\na:0:0:444\nZ:Q1AvldMUs9SLHIOAwgVB93gUvfzII=\nR:zsysnum_linux_riscv64.go\na:0:0:444\nZ:Q1v9aFNUFcP0wZnJT7t9SDULeQxA8=\nR:zsysnum_linux_s390x.go\na:0:0:444\nZ:Q1KrhaKOi7eeqZOrQ+UWqjaU0GyOY=\nR:zsysnum_linux_sparc64.go\na:0:0:444\nZ:Q1klcsCn00CcFTRr1VFPRynIL2BxM=\nR:zsysnum_netbsd_386.go\na:0:0:444\nZ:Q1KSqUpNtKzvSAm4gQssjUlzZXbUE=\nR:zsysnum_netbsd_amd64.go\na:0:0:444\nZ:Q1pAT5v9S+MGT9BDwux+fgC4zquYw=\nR:zsysnum_netbsd_arm.go\na:0:0:444\nZ:Q1SF2aK2Qed1TL9XTzMaD/3NFPDRw=\nR:zsysnum_netbsd_arm64.go\na:0:0:444\nZ:Q14qQReIRSjpbaF+2GsydKMvITA5Q=\nR:zsysnum_openbsd_386.go\na:0:0:444\nZ:Q13UlzVQWnUXEKfTPvAyTxjw3mwHQ=\nR:zsysnum_openbsd_amd64.go\na:0:0:444\nZ:Q1FxuL1FpSZgxSYW8NT3mpvahT74Y=\nR:zsysnum_openbsd_arm.go\na:0:0:444\nZ:Q11V/YOE6UsoPOo8vn3TIPj2aFvpk=\nR:zsysnum_openbsd_arm64.go\na:0:0:444\nZ:Q1cFihi2fS3O8hYgJDFv/0KqtYNRQ=\nR:zsysnum_openbsd_mips64.go\na:0:0:444\nZ:Q1CGGtHlAzjW5ZHxkJVMrDbydwUXo=\nR:zsysnum_openbsd_ppc64.go\na:0:0:444\nZ:Q1nGqI496kaNO9E0jgaZTcbltIh6s=\nR:zsysnum_openbsd_riscv64.go\na:0:0:444\nZ:Q14sIH0p1X9EPzuLs+n7CweL3iG+o=\nR:zsysnum_zos_s390x.go\na:0:0:444\nZ:Q1JhTRuUxXceWxLTacLPVvMfnZB5s=\nR:ztypes_aix_ppc.go\na:0:0:444\nZ:Q1oUZ7ljuMm1xx7GYeEsiHOugTRDU=\nR:ztypes_aix_ppc64.go\na:0:0:444\nZ:Q1ZguARE7Td16OMx2lsY72D9XWX0g=\nR:ztypes_darwin_amd64.go\na:0:0:444\nZ:Q1gfeRYg1NIgR3QB4XbDaYwU0Cs64=\nR:ztypes_darwin_arm64.go\na:0:0:444\nZ:Q1fwZTyUS1/t5ZxIYfQnHTwZo8ivI=\nR:ztypes_dragonfly_amd64.go\na:0:0:444\nZ:Q1kY33AmHpyyMSkk8ghF6aQ+Evydo=\nR:ztypes_freebsd_386.go\na:0:0:444\nZ:Q1sGBUUxhX2rxWJD6DgIrOsO/S8q8=\nR:ztypes_freebsd_amd64.go\na:0:0:444\nZ:Q1+u7BwZC/s+9s2LVvw6XfVujw66U=\nR:ztypes_freebsd_arm.go\na:0:0:444\nZ:Q1OlVYQSzQSWvpbVgT9/AdKResJo0=\nR:ztypes_freebsd_arm64.go\na:0:0:444\nZ:Q19IOvLLLttIZ86jh80sgkMoPello=\nR:ztypes_freebsd_riscv64.go\na:0:0:444\nZ:Q1DVfyMTzcrTgH4Aqb8mUWONCW7wY=\nR:ztypes_linux.go\na:0:0:444\nZ:Q1n5VHNhG3tdv9gUIBD1fn9o0yQuE=\nR:ztypes_linux_386.go\na:0:0:444\nZ:Q1sLuAAY88VleSb51rdfHWV7HUzNw=\nR:ztypes_linux_amd64.go\na:0:0:444\nZ:Q1Vx5NCGspOVM4prKXAg4zgm4HedA=\nR:ztypes_linux_arm.go\na:0:0:444\nZ:Q1hb4j3mfcHMbJGoB1KI3X5mLRsEw=\nR:ztypes_linux_arm64.go\na:0:0:444\nZ:Q19pJZZEaHbYwmI9pozRNystcmYnI=\nR:ztypes_linux_loong64.go\na:0:0:444\nZ:Q1zutDg4VoKhCbQQBbMNDcWvHOlfw=\nR:ztypes_linux_mips.go\na:0:0:444\nZ:Q1JDwSfNhPtJJNX7gbPl7YWyY2juU=\nR:ztypes_linux_mips64.go\na:0:0:444\nZ:Q1p/vk5y50xHVZB00r/Kc+HXxj8EA=\nR:ztypes_linux_mips64le.go\na:0:0:444\nZ:Q13RcVx5iEUYOcx4I6sHhY6qSJk0M=\nR:ztypes_linux_mipsle.go\na:0:0:444\nZ:Q1tttOIItRVAGQbXsgLiImP+4srxU=\nR:ztypes_linux_ppc.go\na:0:0:444\nZ:Q1TggH/lzJRsrb3ozl5umJ8ZhaiUs=\nR:ztypes_linux_ppc64.go\na:0:0:444\nZ:Q1Zks/cNPIwhmvcMx6uey2MIeYKz4=\nR:ztypes_linux_ppc64le.go\na:0:0:444\nZ:Q1UfUkWhs75yYhyhx2zV4w6ijPWI0=\nR:ztypes_linux_riscv64.go\na:0:0:444\nZ:Q1vyiMFDsARdy1N+sRxP2uU+sdA7w=\nR:ztypes_linux_s390x.go\na:0:0:444\nZ:Q1ICEpjTdAPe5P2mgMTpvngL6D+u0=\nR:ztypes_linux_sparc64.go\na:0:0:444\nZ:Q1eIXOEthiX/FWlmP/l6Csk6W0emI=\nR:ztypes_netbsd_386.go\na:0:0:444\nZ:Q1Usnw5E6vV+NZu1q7IUxylOST874=\nR:ztypes_netbsd_amd64.go\na:0:0:444\nZ:Q1pkb9fgQqaC/18m448S6onAtmnn8=\nR:ztypes_netbsd_arm.go\na:0:0:444\nZ:Q1dqq5T5HO0vCYbPXX8RUURYRQniI=\nR:ztypes_netbsd_arm64.go\na:0:0:444\nZ:Q1usX37BwYL26bt9Wg8hdtRowpfpk=\nR:ztypes_openbsd_386.go\na:0:0:444\nZ:Q1nO1kUVrdAZg7kBU2kDEszUs3BIk=\nR:ztypes_openbsd_amd64.go\na:0:0:444\nZ:Q1FFOCnJUVCltuG6KtlAOyyfgM5WY=\nR:ztypes_openbsd_arm.go\na:0:0:444\nZ:Q1W1cEayx07X+Ist6tCzB4i9WN3R4=\nR:ztypes_openbsd_arm64.go\na:0:0:444\nZ:Q1YaHJPi39oTdLNUv25H8mBHoTWcI=\nR:ztypes_openbsd_mips64.go\na:0:0:444\nZ:Q1WqFyCy5t8rrqDo8VkC/lqaWX+co=\nR:ztypes_openbsd_ppc64.go\na:0:0:444\nZ:Q1O/OM47gAizaLYx2smOGY6QLid7c=\nR:ztypes_openbsd_riscv64.go\na:0:0:444\nZ:Q1q47mVw+ql+U/ywabYM+4CAyYIsI=\nR:ztypes_solaris_amd64.go\na:0:0:444\nZ:Q1Vm83TXPbxdAcuTQB7L7i0vsgnfw=\nR:ztypes_zos_s390x.go\na:0:0:444\nZ:Q1w7tZx7K4EvynDqwfp8njly7uMUE=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/unix/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/unix/internal/mkmerge\nM:0:0:555\nR:mkmerge.go\na:0:0:444\nZ:Q19trUBGQuxoZrX31JRDhU5/Smor4=\nR:mkmerge_test.go\na:0:0:444\nZ:Q1PFBGw4ZrWpnx7iLIdFiFvdiUSQQ=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/unix/linux\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q17d+tReSiVYEhBlOlozver0LQH60=\nR:mkall.go\na:0:0:444\nZ:Q15ZC+zrwxY8VqaRoLcwJCSifb4tU=\nR:mksysnum.go\na:0:0:444\nZ:Q1sx1jVon6EHND+6VyHcV1tfPWTJU=\nR:types.go\na:0:0:444\nZ:Q1wrdngaomYWTHoX9i8s2cgLFFW7Y=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows\nM:0:0:555\nR:aliases.go\na:0:0:444\nZ:Q1l6MvHf50/4InuSpW1HW6kg0Z3ng=\nR:dll_windows.go\na:0:0:444\nZ:Q1zKJWnXCu85yzpWmZ3cfV3gjJn6Q=\nR:empty.s\na:0:0:444\nZ:Q1ZnvcVY/4xiAB04oQmSHw+MWWO74=\nR:env_windows.go\na:0:0:444\nZ:Q1+FAvIzrBgVeSOZR0BwrLUvmcEIY=\nR:eventlog.go\na:0:0:444\nZ:Q1GtlAYS844H62VwjmDB/i+p7W4r8=\nR:exec_windows.go\na:0:0:444\nZ:Q1ZZyEcctHtBl7EMwx+GOyXcde+Ss=\nR:memory_windows.go\na:0:0:444\nZ:Q1cK5XcHlGEqd6HGk3Jy3QWNubIn0=\nR:mkerrors.bash\na:0:0:444\nZ:Q1DIkPPvQ3qnvdG/q2H9YUcnd5Yrw=\nR:mkknownfolderids.bash\na:0:0:444\nZ:Q1R776nMpxo1Gj0vENkweTEDrxCJo=\nR:mksyscall.go\na:0:0:444\nZ:Q1rcxjy4evVcRr9MN4IwOdFxmkYbc=\nR:race.go\na:0:0:444\nZ:Q1iEXUZHW5suMetRdUTeeQ579Im6U=\nR:race0.go\na:0:0:444\nZ:Q1SuZEHA3wVMM7uFt6BWgTto18yrU=\nR:security_windows.go\na:0:0:444\nZ:Q1MQ+c23l2t9yAO6wixkRWMTYc58s=\nR:service.go\na:0:0:444\nZ:Q1LOoup2E/IToBgfqEB3h9r638QDA=\nR:setupapi_windows.go\na:0:0:444\nZ:Q1u5q/chaDR9j4rQF8yJkFjuWHhyE=\nR:str.go\na:0:0:444\nZ:Q1OhfbvwQtbNCJTlvcHlsH6GoavRE=\nR:syscall.go\na:0:0:444\nZ:Q1e3thfxxF1emkSxuxj31rpeCneiw=\nR:syscall_test.go\na:0:0:444\nZ:Q1dcEmm4OpdI3mqXRH05fMCw29gSo=\nR:syscall_windows.go\na:0:0:444\nZ:Q1gZzNVmZ+XVYHqZ5pZNSwa4LRx9Q=\nR:syscall_windows_test.go\na:0:0:444\nZ:Q11wOB1WoRR4wbxonyADNOXX2vijM=\nR:types_windows.go\na:0:0:444\nZ:Q15+DiM1ykcmYhXEXpk4hd5kdTdQ0=\nR:types_windows_386.go\na:0:0:444\nZ:Q1D5KYd9IGj0tbQbqp6cXpU1DAjI8=\nR:types_windows_amd64.go\na:0:0:444\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:types_windows_arm.go\na:0:0:444\nZ:Q1PBB9xb+Ydw4jLmiVcIL07ay75PE=\nR:types_windows_arm64.go\na:0:0:444\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:zerrors_windows.go\na:0:0:444\nZ:Q1RkB1t4C72LpQPzt/1HmOy3vqTsI=\nR:zknownfolderids_windows.go\na:0:0:444\nZ:Q1qsGjPpNqbzcDkBf/CfOuz3UEG8o=\nR:zsyscall_windows.go\na:0:0:444\nZ:Q1dhmkmgx3Ykp2UCIIu/QZX95tZ5E=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/mkwinsyscall\nM:0:0:555\nR:mkwinsyscall.go\na:0:0:444\nZ:Q15GSJrZ4oNovBjNIXkBtBGMogUn4=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/registry\nM:0:0:555\nR:export_test.go\na:0:0:444\nZ:Q16jW1/8N12LDxkf0c+CQZ0U19hfo=\nR:key.go\na:0:0:444\nZ:Q1MHVf9c9WjY2FT7yTxRFTNtg8lnk=\nR:mksyscall.go\na:0:0:444\nZ:Q1px8Uu4IeBfYkZ9coX1DHPlRvTK4=\nR:registry_test.go\na:0:0:444\nZ:Q1tRE13HtS81pVP5zvXgkJqqq/FrA=\nR:syscall.go\na:0:0:444\nZ:Q115yIwBFquYmiYgE2nr9hd+iZS2s=\nR:value.go\na:0:0:444\nZ:Q1pLh3OBfoQncZdHnG0KLKXdkcB5A=\nR:zsyscall_windows.go\na:0:0:444\nZ:Q1aVijzxPoDeiZ099c4QLRurxEi+Y=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/svc\nM:0:0:555\nR:security.go\na:0:0:444\nZ:Q1u+qJc9e6K+wIbDiLK8JILT2sGx0=\nR:service.go\na:0:0:444\nZ:Q1T+QD4tgXKm4zETREUxVR+5uN24E=\nR:svc_test.go\na:0:0:444\nZ:Q1oUhPoVEsceI76N3KXvG6k49lCAg=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/svc/debug\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1xnm9JFX82FwnJYOhyeqxVE95lqw=\nR:service.go\na:0:0:444\nZ:Q1ixDwT2gB61CZ25j3lMruw5PhwbI=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/svc/eventlog\nM:0:0:555\nR:install.go\na:0:0:444\nZ:Q1FYBeLJ0PmvLS/CYpxk4SxaJZMHI=\nR:log.go\na:0:0:444\nZ:Q1AQVwpu/icrgFlrJ49Y3tN0pZ0Ic=\nR:log_test.go\na:0:0:444\nZ:Q1W7GCC+RUK37JtmjfJ70RJdU7r2o=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/svc/example\nM:0:0:555\nR:beep.go\na:0:0:444\nZ:Q1+97UTsoyEp1nRh98NqQdPSyFyO4=\nR:install.go\na:0:0:444\nZ:Q1TPqUO4xDIxENOaIbxUsW6dTTweI=\nR:main.go\na:0:0:444\nZ:Q1tKCOwzjoxvV3DsH7rAlqJ7HOFLc=\nR:manage.go\na:0:0:444\nZ:Q19ORtWnV80SeioFupvmejBOFK5aE=\nR:service.go\na:0:0:444\nZ:Q1mBKlpJdV3iKfU5VF+v92sg+HDbA=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/svc/mgr\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1z3XdOOKLpNumidsgxC00lN1K7Ts=\nR:mgr.go\na:0:0:444\nZ:Q1/leqenBMGC7rmjStbcGkW2EKyAE=\nR:mgr_test.go\na:0:0:444\nZ:Q1ys6Vps8jUGDExPmZIAtfhzUXNFU=\nR:recovery.go\na:0:0:444\nZ:Q1Af+A0enFK/R5WPKDtzMg/gRCJJM=\nR:service.go\na:0:0:444\nZ:Q1oPmXs+Emqq27rDjSQSo5a7JVP0g=\nF:root/go/pkg/mod/golang.org/x/sys@v0.1.0/windows/testdata\nM:0:0:555\nR:README\na:0:0:444\nZ:Q14/NnhvuLO2eGHe/K7rJR8Rz2HsA=\nR:ev-signed-file.exe\na:0:0:444\nZ:Q1Xx/hKgaUiTwClRk++n6hH0fzTw8=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1qOvpYzpzUBlYwx8N1RwwfkIaNpQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q11eiXakluVHJWyb87ZfmzxYvPHx4=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1fzR5w/LlSA7rqBaxRu8GNGvGaa8=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/cpu\nM:0:0:555\nR:asm_aix_ppc64.s\na:0:0:444\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:byteorder.go\na:0:0:444\nZ:Q1u4urq4ci617mu/pQbqqklThaov0=\nR:cpu.go\na:0:0:444\nZ:Q1Y/Su0IRIqTcIXJMRUETmRXbr6Rw=\nR:cpu_aix.go\na:0:0:444\nZ:Q1uhLCQtu3FBtMkad1UJ0mnFNnY+s=\nR:cpu_arm.go\na:0:0:444\nZ:Q1irn3/2mwv6EGwymKpMDdPA6YQCQ=\nR:cpu_arm64.go\na:0:0:444\nZ:Q19+Yvx6U66GCdX9plojrQe/ofAEQ=\nR:cpu_arm64.s\na:0:0:444\nZ:Q15cwMG8RWu2skOjBCjC+HBJ3N/PA=\nR:cpu_gc_arm64.go\na:0:0:444\nZ:Q1S5JnOwwaruSJ0LSCIc6DW1INFxA=\nR:cpu_gc_s390x.go\na:0:0:444\nZ:Q1wdthVgAljHMwiznxXU3zFaa0fws=\nR:cpu_gc_x86.go\na:0:0:444\nZ:Q1B7CG0XuhYEICx7vo/4W0NlzxthE=\nR:cpu_gccgo_arm64.go\na:0:0:444\nZ:Q1yBXhRlWbveB0KoBaSoEqQrEy6oI=\nR:cpu_gccgo_s390x.go\na:0:0:444\nZ:Q1+vNMmGhtD1uki8QtbYB0JM0c8hI=\nR:cpu_gccgo_x86.c\na:0:0:444\nZ:Q1laIv9Fh3ZtQQTfuNSrCUPurHKYk=\nR:cpu_gccgo_x86.go\na:0:0:444\nZ:Q1NDpSfvdzZ/FbekK0MMH5G1vs3W4=\nR:cpu_linux.go\na:0:0:444\nZ:Q1F42gPFumxKVdrlWMglL+12OXJOo=\nR:cpu_linux_arm.go\na:0:0:444\nZ:Q1zVieehRzOZz+QkJIg8sALTGwh8o=\nR:cpu_linux_arm64.go\na:0:0:444\nZ:Q1awXsREQO7Dw/d3hXWaH38sqJSUk=\nR:cpu_linux_mips64x.go\na:0:0:444\nZ:Q1hZndP5n4qTaEwPr2Aydd2B6ElW0=\nR:cpu_linux_noinit.go\na:0:0:444\nZ:Q1xQ6SRMj425JVZ62L0xqJhOKdZMM=\nR:cpu_linux_ppc64x.go\na:0:0:444\nZ:Q1dOcSWDNJx726siUakA7xAbLjDNA=\nR:cpu_linux_s390x.go\na:0:0:444\nZ:Q1TWiA2yUyCHZmqCg8FA41YR8fQJ0=\nR:cpu_loong64.go\na:0:0:444\nZ:Q1TjXoX2Ox/CF18ro5b2f8U9nsUa8=\nR:cpu_mips64x.go\na:0:0:444\nZ:Q1uVhLvIiMZs3KVZUWQbZEhMLBtxM=\nR:cpu_mipsx.go\na:0:0:444\nZ:Q1hBKN6JlpiZXxz7hB4w+O/8caGe8=\nR:cpu_netbsd_arm64.go\na:0:0:444\nZ:Q1wzFxhSkZwmN8k5NhtMht2zA2R1k=\nR:cpu_openbsd_arm64.go\na:0:0:444\nZ:Q1JRoj8C8wM7W1/ovfAYi2H2FfmA4=\nR:cpu_openbsd_arm64.s\na:0:0:444\nZ:Q1eQNOFZedOo2ArBk3McUdqqnDpAU=\nR:cpu_other_arm.go\na:0:0:444\nZ:Q1h5g0zpXRUCuz0fc0o63WFoU4rXM=\nR:cpu_other_arm64.go\na:0:0:444\nZ:Q1P+Ha9U7mOkj0uhTci2Q1kaRFTsQ=\nR:cpu_other_mips64x.go\na:0:0:444\nZ:Q1XwSKl7YWCsI5hamU30/1DstAW3k=\nR:cpu_other_ppc64x.go\na:0:0:444\nZ:Q1f0NVHS1BqjzkWMTHZ/LDQhPhAW4=\nR:cpu_other_riscv64.go\na:0:0:444\nZ:Q1aTOtcirpArAgYWhc30tMKswvWK4=\nR:cpu_ppc64x.go\na:0:0:444\nZ:Q1ZGHmURO/VBD2Oxfqyr1Hjcve4C4=\nR:cpu_riscv64.go\na:0:0:444\nZ:Q1A/PpmbzuyIH6ExyEon1qhZylI/w=\nR:cpu_s390x.go\na:0:0:444\nZ:Q1v3PQKQICufbOkRMM8V9X6cI5Q4M=\nR:cpu_s390x.s\na:0:0:444\nZ:Q1L7kn4bRae73MTwt6lEtKSnreOWo=\nR:cpu_s390x_test.go\na:0:0:444\nZ:Q1YOIZM5kbwPq71VVk08Z+ZE450IE=\nR:cpu_test.go\na:0:0:444\nZ:Q1XJvws6kn9T2VVRtqdT/r3KhxqFU=\nR:cpu_wasm.go\na:0:0:444\nZ:Q1mfZjjCtyLtwAu78KULyGOKDAzzY=\nR:cpu_x86.go\na:0:0:444\nZ:Q1uBsNLXf4KWoflYPY839k6r7MA8k=\nR:cpu_x86.s\na:0:0:444\nZ:Q17hFdUKkSBexknaZIZasd9hPe1lg=\nR:cpu_zos.go\na:0:0:444\nZ:Q1JU2quB8SdGMAs4NdOGiaahPk/zE=\nR:cpu_zos_s390x.go\na:0:0:444\nZ:Q1jvwZJzHb2X7ohYbe6gurdQMUt+A=\nR:hwcap_linux.go\na:0:0:444\nZ:Q1J9RAmzqNnDDFdPxdjH4hcoTkZrQ=\nR:syscall_aix_gccgo.go\na:0:0:444\nZ:Q16RAjpXZsfKFrE6/ShLkyutgPyzY=\nR:syscall_aix_ppc64_gc.go\na:0:0:444\nZ:Q1EF+8Q7xnnkSWsicmFgjhHc3QWJw=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/execabs\nM:0:0:555\nR:execabs.go\na:0:0:444\nZ:Q1aMHcNer9/3xT2U7qaZQKevngcr8=\nR:execabs_go118.go\na:0:0:444\nZ:Q1aXpcPk2ehLvOPRwVtCaANjaOqMM=\nR:execabs_go119.go\na:0:0:444\nZ:Q1UX/u2CgUk/NVOq2mFpKSoL5AwjI=\nR:execabs_test.go\na:0:0:444\nZ:Q1hUOOKwEBfUwG7C+unqltoB9J2u0=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/internal/unsafeheader\nM:0:0:555\nR:unsafeheader.go\na:0:0:444\nZ:Q1BX5iQnjfif0m1Y+1EEZTAzVBoo4=\nR:unsafeheader_test.go\na:0:0:444\nZ:Q1PCp+E3i86ZD7/shTQTy+06yArcE=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/plan9\nM:0:0:555\nR:asm.s\na:0:0:444\nZ:Q1Z0HluSSwlBM1wFtllmtS8Qq5G7A=\nR:asm_plan9_386.s\na:0:0:444\nZ:Q1T2auD+mcFXAGnFPcsXfkXbWnCh8=\nR:asm_plan9_amd64.s\na:0:0:444\nZ:Q1xWYdj+1s9aQHXnqE4b6y1wvaRCI=\nR:asm_plan9_arm.s\na:0:0:444\nZ:Q1ABJD5ec2hvBMP0Xq8xAD1g0jWHU=\nR:const_plan9.go\na:0:0:444\nZ:Q1WHf5znGMnc7JG/okShdfIOA1AFc=\nR:dir_plan9.go\na:0:0:444\nZ:Q1GJfQL0kwcZFw1ioJYqls4UZGYX0=\nR:env_plan9.go\na:0:0:444\nZ:Q1VTrcfCX7jdEacdvoU/81xmvVTOc=\nR:errors_plan9.go\na:0:0:444\nZ:Q1puh11scra3vr4xK2+S97WMy4TY0=\nR:mkall.sh\na:0:0:444\nZ:Q19pp0hAci/oEoNgBSKmXCEk4IXqs=\nR:mkerrors.sh\na:0:0:444\nZ:Q1ZgFJAhlZdocesE5+g+BMyiCA+tY=\nR:mksyscall.go\na:0:0:444\nZ:Q1iVhvUsHZO6lHtS+TTplIddm4eao=\nR:mksysnum_plan9.sh\na:0:0:444\nZ:Q1T6/okY4iEwXqcqQU2ttLmXg48Hg=\nR:pwd_go15_plan9.go\na:0:0:444\nZ:Q11lU5W3v61fRmGeeahp9yoULcQ0g=\nR:pwd_plan9.go\na:0:0:444\nZ:Q1bmeULQmUp6HWKTxoTfddsuubfgA=\nR:race.go\na:0:0:444\nZ:Q104sq3sgOBq8am46vdzwvy2+VxgE=\nR:race0.go\na:0:0:444\nZ:Q11NTSdY6YIuVtZ1t/Y+5TbBvFT38=\nR:str.go\na:0:0:444\nZ:Q1o5B5SQIycL4oxB3L9IqWDix8EiE=\nR:syscall.go\na:0:0:444\nZ:Q13xZwiIHjzA3VBiAM1hnOzknNhDk=\nR:syscall_plan9.go\na:0:0:444\nZ:Q1Urf+IdgHsQ+HpeRMqp52A7/yd6w=\nR:syscall_test.go\na:0:0:444\nZ:Q1Rah1P9Z/lEiiDFA8EUpZG6mpFag=\nR:zsyscall_plan9_386.go\na:0:0:444\nZ:Q1GMmMwSktUxolffgRspBQzEPMuFo=\nR:zsyscall_plan9_amd64.go\na:0:0:444\nZ:Q1u0llMICplCxMQZcOtSPeAcLYMwM=\nR:zsyscall_plan9_arm.go\na:0:0:444\nZ:Q18vjsdbGWCVkhq5GjUV7rVol9QfY=\nR:zsysnum_plan9.go\na:0:0:444\nZ:Q14zOUdgZI15FTJfq8h/chYJWzjbs=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/unix\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1RmYl1sv/DhjIwCRGkU6TgeZ/k0U=\nR:README.md\na:0:0:444\nZ:Q1K18QjAeFexEYp9bSZjCcj1VtJTw=\nR:affinity_linux.go\na:0:0:444\nZ:Q1cRb//LEfLtL3pUAE5dIhk0tleXQ=\nR:aliases.go\na:0:0:444\nZ:Q1RmlXgzsJ4nn1LQxSp5elx2cNVy4=\nR:asm_aix_ppc64.s\na:0:0:444\nZ:Q1ta7f+req/2UjXvGVJlZkmF0OhMA=\nR:asm_bsd_386.s\na:0:0:444\nZ:Q1ntVe4ypT/odMI0njxRy1TCwzKxI=\nR:asm_bsd_amd64.s\na:0:0:444\nZ:Q1ki8PYduShuFOlh7MFE3jnmBiPz4=\nR:asm_bsd_arm.s\na:0:0:444\nZ:Q1ASSugWLVMunER5kjGYUOWEJEVAE=\nR:asm_bsd_arm64.s\na:0:0:444\nZ:Q1E+ecHieVb700ylzq9XbC7sdX7xI=\nR:asm_bsd_ppc64.s\na:0:0:444\nZ:Q1VmfsODKE/0Q9+enf2zJHnXXMWEY=\nR:asm_bsd_riscv64.s\na:0:0:444\nZ:Q1f8jM/+pENRWyAE2BXaRn/wC60wE=\nR:asm_linux_386.s\na:0:0:444\nZ:Q1xSkKkOpcrF+Hr+JUbvZF00CTXBk=\nR:asm_linux_amd64.s\na:0:0:444\nZ:Q1HOCcl5QEx6wd/yLa/SHBpz+HdaE=\nR:asm_linux_arm.s\na:0:0:444\nZ:Q1aFoSp4sIxSv8cgQOamN0uJdz61k=\nR:asm_linux_arm64.s\na:0:0:444\nZ:Q1vRvCogh7k1JGO6VFOI+GFl4yWXk=\nR:asm_linux_loong64.s\na:0:0:444\nZ:Q14ToPVd/DX6SvsbW5QoXg1yq5mYY=\nR:asm_linux_mips64x.s\na:0:0:444\nZ:Q1mILMdF2rnygQtbVY7ndZasSpaEE=\nR:asm_linux_mipsx.s\na:0:0:444\nZ:Q1/tqZIAbNr+H29NDfaA/0/oKmfI4=\nR:asm_linux_ppc64x.s\na:0:0:444\nZ:Q1LYjcqwOVPn7KpTjQ3+a1u4KSeiI=\nR:asm_linux_riscv64.s\na:0:0:444\nZ:Q1S3iEt/R3hxEYpqatSzrv/fdb6Ms=\nR:asm_linux_s390x.s\na:0:0:444\nZ:Q1/ZTbXVTnLNz5NQQmUpDONBQ4cPw=\nR:asm_openbsd_mips64.s\na:0:0:444\nZ:Q12/p1/qZyRMTU64SrMyMmaW1g0k8=\nR:asm_solaris_amd64.s\na:0:0:444\nZ:Q1QaZPXmYE4ECc6+AMXH7Iv784gnw=\nR:asm_zos_s390x.s\na:0:0:444\nZ:Q1P4DvJfOPn31vKPG2f8HUTA6QzqU=\nR:bluetooth_linux.go\na:0:0:444\nZ:Q15q3sGgTn/RWwwa+2yKizM6K/GgE=\nR:cap_freebsd.go\na:0:0:444\nZ:Q1z/fE2ekanafRbrfm2ahX2XE4hio=\nR:constants.go\na:0:0:444\nZ:Q1PAsnmUAkVjlx50t1lOPG9EY8fFM=\nR:creds_test.go\na:0:0:444\nZ:Q1Tv7Jwj/nEhwzakB04XjyA4FubhI=\nR:darwin_amd64_test.go\na:0:0:444\nZ:Q1J/jlno7ubpqkGpYEQrlBuUnfL34=\nR:darwin_arm64_test.go\na:0:0:444\nZ:Q1hwbV0qhxFLf6J+XeBeBNkQAjxCE=\nR:darwin_test.go\na:0:0:444\nZ:Q1Pw9Sb2WuYehcp2BTodU0KA0q0eo=\nR:dev_aix_ppc.go\na:0:0:444\nZ:Q1KFh4Gg/n3/D2TeScyBnkhc1HYpU=\nR:dev_aix_ppc64.go\na:0:0:444\nZ:Q163nbAXs6OexnrzLfhn+1NpEPsQI=\nR:dev_darwin.go\na:0:0:444\nZ:Q1zUqZmoNX2c8Lu49MZl++Y3mrD6c=\nR:dev_dragonfly.go\na:0:0:444\nZ:Q1l4gEUFS8DsNA0mm+BHwUZ+T0hhY=\nR:dev_freebsd.go\na:0:0:444\nZ:Q16mNqKKlc0be/T+M4wSDx8+9Rspk=\nR:dev_linux.go\na:0:0:444\nZ:Q1S2BMmqSjM0svxNSXckfwCNYrRrg=\nR:dev_linux_test.go\na:0:0:444\nZ:Q1erV21oE2OTxFOPeyE8V9uVX9zCk=\nR:dev_netbsd.go\na:0:0:444\nZ:Q1+8mrG/Z7p6VHusLxVC8wlpEGp20=\nR:dev_openbsd.go\na:0:0:444\nZ:Q1cMPD4nILdLEHLX6WUBt/J51+7+g=\nR:dev_zos.go\na:0:0:444\nZ:Q1hShSpEln+Y+qTrEtsTQMj9q9vj4=\nR:dev_zos_test.go\na:0:0:444\nZ:Q1HNH+DYEGhh2Wx5m0T3nmtRcNoJA=\nR:dirent.go\na:0:0:444\nZ:Q1OwzlnHc5ImSAFx/IrDqe+EhXjjY=\nR:dirent_test.go\na:0:0:444\nZ:Q1kae6xd0JTKPbE+AFfk56sk1b69o=\nR:endian_big.go\na:0:0:444\nZ:Q1oBkG9NebaxAxx9NlNSUnwyJoNKE=\nR:endian_little.go\na:0:0:444\nZ:Q13W1nBXXQCXAvDie5TJ1NC4pzeuw=\nR:env_unix.go\na:0:0:444\nZ:Q1hxD1zeslbXT4dpkb40HVXkkDgR0=\nR:epoll_zos.go\na:0:0:444\nZ:Q1lzO/+ABNcObza+Q6+wMY/81ce4Y=\nR:epoll_zos_test.go\na:0:0:444\nZ:Q1OZKkzijtY7yo9wsJ4/SI9oS3ry0=\nR:example_exec_test.go\na:0:0:444\nZ:Q1AV6+CZx5uSIgCaRcBvGwXnuqhG0=\nR:example_flock_test.go\na:0:0:444\nZ:Q1v4QLHpcUkB/MlVDVssUnN3J7QkU=\nR:example_sysvshm_test.go\na:0:0:444\nZ:Q1MhB+OeO/kbYswvzYDdJxDzWs4RI=\nR:fcntl.go\na:0:0:444\nZ:Q1saiCVFAswOZfvDmRDLftIsvhvxc=\nR:fcntl_darwin.go\na:0:0:444\nZ:Q1x9BVg8x/wLKJUrLQWQLlmA2ulkI=\nR:fcntl_linux_32bit.go\na:0:0:444\nZ:Q1eP6qF088S77Lr4srMH4qK2g3EgE=\nR:fdset.go\na:0:0:444\nZ:Q1UYIVTl2wV6JMpHGPNwyy/Fc/HCU=\nR:fdset_test.go\na:0:0:444\nZ:Q1qLNMjpwa2cDYZlbwZhLpt5hRLo0=\nR:fstatfs_zos.go\na:0:0:444\nZ:Q10UQQb/xhc3J3KVe/UE2rAI17MW0=\nR:fstatfs_zos_test.go\na:0:0:444\nZ:Q1gC+MlbVdmno7L1CzYaAeAEVAwA4=\nR:gccgo.go\na:0:0:444\nZ:Q1HcLTnYlvTqS6DMy1EwibFoecr1w=\nR:gccgo_c.c\na:0:0:444\nZ:Q1YAAQ9wRY2S7gLjgvaIDvuMkz5zY=\nR:gccgo_linux_amd64.go\na:0:0:444\nZ:Q1baJ33mTL3XzhOJ1U+5VzxtbSqvQ=\nR:getdirentries_test.go\na:0:0:444\nZ:Q1fbjxfNEb2PaNg1P0g2vq26fkwMI=\nR:getfsstat_test.go\na:0:0:444\nZ:Q1PEtdAL3WM8h9Q5M/GKJZd2L/uIk=\nR:ifreq_linux.go\na:0:0:444\nZ:Q1To+wEeaHX1pg8gFZJzO4Y++yE4M=\nR:ifreq_linux_test.go\na:0:0:444\nZ:Q1xO89z9afc1UFLussiFFN5yvcyUA=\nR:ioctl.go\na:0:0:444\nZ:Q1JXpN3DWp2AnScdEyVznUna8HwWw=\nR:ioctl_linux.go\na:0:0:444\nZ:Q17aKkih+S1RUvV17H/KHLX4I/Jv8=\nR:ioctl_zos.go\na:0:0:444\nZ:Q1+VLOYMa1AGfYwGNuAnN3Lgz3jOI=\nR:mkall.sh\na:0:0:444\nZ:Q1eAtWtxUmbIysh86zgkVjTFMDZCc=\nR:mkasm.go\na:0:0:444\nZ:Q1Oie/zAzwpoc5thJ/+qSnP6TD3mg=\nR:mkerrors.sh\na:0:0:444\nZ:Q15Wo/K3f8QTl7BCdFZK4BIuqSMZY=\nR:mkpost.go\na:0:0:444\nZ:Q1+B2dcvBVZfrU7+5zqTv7G58JwQc=\nR:mksyscall.go\na:0:0:444\nZ:Q1tzgmR2IqIw2D1hCWPQKbKpWIYIQ=\nR:mksyscall_aix_ppc.go\na:0:0:444\nZ:Q1UgmITfLmh2f0z9xZlK0QWHV+zJk=\nR:mksyscall_aix_ppc64.go\na:0:0:444\nZ:Q1R2A9/rSgIU85xxQ5xdkhdRi3arw=\nR:mksyscall_solaris.go\na:0:0:444\nZ:Q15xQ4xgGJdgdouwcobZ8CFRB0pSk=\nR:mksysctl_openbsd.go\na:0:0:444\nZ:Q1YGDSYX/2FnyvngOt771/FR0bdME=\nR:mksysnum.go\na:0:0:444\nZ:Q1+QwaiiZCI5xiZJCfgXoL21CjyCE=\nR:mmap_unix_test.go\na:0:0:444\nZ:Q1jOa+hDA47EJYOmeesd111DI9gHg=\nR:mmap_zos_test.go\na:0:0:444\nZ:Q19cfqAKfJgvtU0akE/ivTYcPr8bQ=\nR:openbsd_test.go\na:0:0:444\nZ:Q1rfZpirtXNm42n665AeIO3gM8tr0=\nR:pagesize_unix.go\na:0:0:444\nZ:Q18Tkk+8oy7/GFOQoN8TKGD6keLMY=\nR:pipe2_test.go\na:0:0:444\nZ:Q1gyIucFh4c45YIfeJMxIvASkV+jg=\nR:pledge_openbsd.go\na:0:0:444\nZ:Q15O7GCqxUwjpSo2D6+L9XfpPbrpQ=\nR:ptrace_darwin.go\na:0:0:444\nZ:Q1QcefnK6qyEyloVY5nmoI2nV6qxs=\nR:ptrace_ios.go\na:0:0:444\nZ:Q17FZBSvv2ajI4CtvN1LWgVI6fNuA=\nR:race.go\na:0:0:444\nZ:Q1fuXGhh3PV+bAD1n/f59oFvpLWqs=\nR:race0.go\na:0:0:444\nZ:Q10EjozZhHoMvPjI6fO2/jf3E1sC4=\nR:readdirent_getdents.go\na:0:0:444\nZ:Q1UnfOzetNQa7nxnbz63jaSHgEktg=\nR:readdirent_getdirentries.go\na:0:0:444\nZ:Q1ktbwBrx+6qdVszMz7dn9MFCsyPo=\nR:sendfile_test.go\na:0:0:444\nZ:Q1xR8DVj+hhlewwwddTfAFxFWn33o=\nR:sockcmsg_dragonfly.go\na:0:0:444\nZ:Q11OYqwTN6CBuFknzioaR3Qsi2itk=\nR:sockcmsg_linux.go\na:0:0:444\nZ:Q1G1T6VraeT7Sth2NITi4EO4TjA1w=\nR:sockcmsg_unix.go\na:0:0:444\nZ:Q1Z5v8Cuwy4cuEOQfwD+Z9pGQXdos=\nR:sockcmsg_unix_other.go\na:0:0:444\nZ:Q1n/orR94+W+J0RO2cOP1uaCafCRo=\nR:syscall.go\na:0:0:444\nZ:Q1GAUtKsbMGbIw8SY9brZKTX9Zf9Q=\nR:syscall_aix.go\na:0:0:444\nZ:Q1RNnWbQemq554n2gBS2t3N5dkqGk=\nR:syscall_aix_ppc.go\na:0:0:444\nZ:Q1weiuoqBV5xyLenZ9Ec1xO51To5g=\nR:syscall_aix_ppc64.go\na:0:0:444\nZ:Q10ileJSgMVKWqTueccbKl//ue/Qg=\nR:syscall_aix_test.go\na:0:0:444\nZ:Q1Dd2n/wNpnBbMnhGWXLrY3ml7GUA=\nR:syscall_bsd.go\na:0:0:444\nZ:Q1DIpSa/4DS03i4q5WJQ60fvE+vok=\nR:syscall_bsd_test.go\na:0:0:444\nZ:Q18RPHBnMopc3dl+zuP/4+wti16KM=\nR:syscall_darwin.go\na:0:0:444\nZ:Q1TJj5Bn1lPaWZIO5KX8MBYsGc47s=\nR:syscall_darwin_amd64.go\na:0:0:444\nZ:Q1dzVFWGYjPXw78xftjL4D6HJysqA=\nR:syscall_darwin_arm64.go\na:0:0:444\nZ:Q1bvaQ0+ASERfp3t5o4nkZIiV3GOY=\nR:syscall_darwin_libSystem.go\na:0:0:444\nZ:Q1hT9YHvpKnRvVSqoGtDWQOV15VlU=\nR:syscall_darwin_test.go\na:0:0:444\nZ:Q1L588Gm/WrF4/AbaHyKT7DSWkifo=\nR:syscall_dragonfly.go\na:0:0:444\nZ:Q183Ah1KFe8hCZsVqLW0AocPWI6UI=\nR:syscall_dragonfly_amd64.go\na:0:0:444\nZ:Q1mWk6E+dLsvIqQkCUV45wQSmaZmw=\nR:syscall_freebsd.go\na:0:0:444\nZ:Q1c8Y0+vMqpvi+4w2skhbIHAlltrc=\nR:syscall_freebsd_386.go\na:0:0:444\nZ:Q1+u2W/z7zAGvezlhk/R6h3yld45A=\nR:syscall_freebsd_amd64.go\na:0:0:444\nZ:Q1nkF75p9zS3MBCMcpc9bmIxgk6H8=\nR:syscall_freebsd_arm.go\na:0:0:444\nZ:Q1Ov4uPpZJf+NJ58T4O2tAZqN/HRo=\nR:syscall_freebsd_arm64.go\na:0:0:444\nZ:Q13Erw5b3VhnupyvX13Ef55gy1OxM=\nR:syscall_freebsd_riscv64.go\na:0:0:444\nZ:Q1POBgSs7Fw0r+Hr3GhWQxi/B+5Jo=\nR:syscall_freebsd_test.go\na:0:0:444\nZ:Q1Ib9i6JCx4sN7c7LK28REwPYagIo=\nR:syscall_illumos.go\na:0:0:444\nZ:Q1t9+vHcGjSokbHBnxC31L02wiQ8s=\nR:syscall_internal_bsd_test.go\na:0:0:444\nZ:Q1kfcUqhRVO/WiKJXY9h6Vz9IkWlA=\nR:syscall_internal_darwin_test.go\na:0:0:444\nZ:Q1Dpohd/xMaJPddEubkmAZdrhTID4=\nR:syscall_internal_linux_test.go\na:0:0:444\nZ:Q1r3zTDRxhPO12zjCTtt0cUQ0sMhE=\nR:syscall_internal_solaris_test.go\na:0:0:444\nZ:Q1m+Xee7YSLkkr8bXkxKwej9lfuUI=\nR:syscall_linux.go\na:0:0:444\nZ:Q1awB3eXSgotfXTOMVQtZF05EBHT4=\nR:syscall_linux_386.go\na:0:0:444\nZ:Q1A9j4l89S9HUC3m8h0+4wU/wxEHI=\nR:syscall_linux_alarm.go\na:0:0:444\nZ:Q1nRhxEOT/mHmGuEK7SMT49HdKWpc=\nR:syscall_linux_amd64.go\na:0:0:444\nZ:Q14xVoQbsfJ15Cy5Nr7/ahteHHH5s=\nR:syscall_linux_amd64_gc.go\na:0:0:444\nZ:Q1aSGCe2hQPXT+NPhk2fRy1GrDAJ4=\nR:syscall_linux_arm.go\na:0:0:444\nZ:Q14emaEI5kZNmuWMaaRJLXdZcMj/g=\nR:syscall_linux_arm64.go\na:0:0:444\nZ:Q1DYGA47rd0ncKNdl4EWE3l+WPoK8=\nR:syscall_linux_gc.go\na:0:0:444\nZ:Q1n+Tf1gDjY7R3oo3oNhzSVZZNiHU=\nR:syscall_linux_gc_386.go\na:0:0:444\nZ:Q17GoTKW7jK0VX0/oW9MtUolVJw9o=\nR:syscall_linux_gc_arm.go\na:0:0:444\nZ:Q1f3IlNtVRmQw/5Io81SFgubZ2vZw=\nR:syscall_linux_gccgo_386.go\na:0:0:444\nZ:Q128r2W0Dvik+lpV3zMRd/aNu7D/s=\nR:syscall_linux_gccgo_arm.go\na:0:0:444\nZ:Q1omh7kWTFH9XmqSosKF4l3qVatCU=\nR:syscall_linux_loong64.go\na:0:0:444\nZ:Q1DaOL5qKrPA/7sjBo930xMBUF7jE=\nR:syscall_linux_mips64x.go\na:0:0:444\nZ:Q1Xg0R/mXzvda2XGzTv4pgMUeIgzg=\nR:syscall_linux_mipsx.go\na:0:0:444\nZ:Q15uuqCyPPjxw6aYdsqThYkfVNP1U=\nR:syscall_linux_ppc.go\na:0:0:444\nZ:Q1iTOMKqLFbRcoC6HpUxhO9vbowoQ=\nR:syscall_linux_ppc64x.go\na:0:0:444\nZ:Q1H0CAO2Ww5ZlsOZWMPYYm4EoJUzs=\nR:syscall_linux_riscv64.go\na:0:0:444\nZ:Q1zAXcEjFJdsrVG53N1dYvdGz6sfI=\nR:syscall_linux_s390x.go\na:0:0:444\nZ:Q1W8LBQn+bqnm346FJZBUfje7k8k4=\nR:syscall_linux_sparc64.go\na:0:0:444\nZ:Q1601I70lZyAvVPyQDuQRd+ELV2ow=\nR:syscall_linux_test.go\na:0:0:444\nZ:Q1sq1uiqCtQiCQ58zNgU1hnnZSpFc=\nR:syscall_netbsd.go\na:0:0:444\nZ:Q1ZyD5JMCOq2sySEioqy5urq1K5Us=\nR:syscall_netbsd_386.go\na:0:0:444\nZ:Q1Z4rA9JRqBHKhNau2IBKCw6tI7kI=\nR:syscall_netbsd_amd64.go\na:0:0:444\nZ:Q1PkfxrcCRJztpQBUPet+VqCKTaYY=\nR:syscall_netbsd_arm.go\na:0:0:444\nZ:Q10K49RLHJDBsLpuVSAv74BwJ+DXs=\nR:syscall_netbsd_arm64.go\na:0:0:444\nZ:Q1utIHcaZdyMgfUOyHMlo+XBvDHCw=\nR:syscall_netbsd_test.go\na:0:0:444\nZ:Q1V3fpQVpRrObSiONhSauBQsNN3g4=\nR:syscall_openbsd.go\na:0:0:444\nZ:Q1bkS8C8UmGxoCerolL2fuXdj6ES4=\nR:syscall_openbsd_386.go\na:0:0:444\nZ:Q11L3leU5OqzN3DB7lB+xghJYhmHE=\nR:syscall_openbsd_amd64.go\na:0:0:444\nZ:Q1/Ht6D8fprnpAr/yKrE4muCRGiBw=\nR:syscall_openbsd_arm.go\na:0:0:444\nZ:Q10asHLgYMYZAGiAE8vJTo0b7VlX8=\nR:syscall_openbsd_arm64.go\na:0:0:444\nZ:Q1ty7QkRIWQRgv0y1CZ9sft0kUnLs=\nR:syscall_openbsd_libc.go\na:0:0:444\nZ:Q18r2QqmGdkI2w+y0Xx7PNwphyKIA=\nR:syscall_openbsd_mips64.go\na:0:0:444\nZ:Q19218EvEgLIsKgPIMTCtBzWdXSxg=\nR:syscall_openbsd_ppc64.go\na:0:0:444\nZ:Q1HcdPa+v4+tYijWiJXrp+vrCj3yM=\nR:syscall_openbsd_riscv64.go\na:0:0:444\nZ:Q1gA7O8XSVSluObSg+2WqZbhY+/pg=\nR:syscall_openbsd_test.go\na:0:0:444\nZ:Q1V/GRZ4s4Ff+2SwxeWDF4sXxvd0E=\nR:syscall_solaris.go\na:0:0:444\nZ:Q1cdwPDCDzV5mqUIHueyYz10UcEPA=\nR:syscall_solaris_amd64.go\na:0:0:444\nZ:Q125WLOkAfQZLuvpoMfceUmf4ddsM=\nR:syscall_solaris_test.go\na:0:0:444\nZ:Q1RyY1xZeamjzUDIfcZJlpxtnVZIk=\nR:syscall_test.go\na:0:0:444\nZ:Q1OJ5RM40989mwmdFIdOldNE2pdZs=\nR:syscall_unix.go\na:0:0:444\nZ:Q1r6yvr9bw3w8FVsXKLGW8C18Nz5Y=\nR:syscall_unix_gc.go\na:0:0:444\nZ:Q1VCxKiExGIaS5pA+sWyZ0nUXb2GM=\nR:syscall_unix_gc_ppc64x.go\na:0:0:444\nZ:Q1WMpIeiQvvJ9et9EwDXtr5daqBZQ=\nR:syscall_unix_test.go\na:0:0:444\nZ:Q1mj5BgDc1DZchrYo88Ltrr9Z2Ov0=\nR:syscall_zos_s390x.go\na:0:0:444\nZ:Q1W26ztLn5Aw+bD+efkOm9Ze209U4=\nR:syscall_zos_test.go\na:0:0:444\nZ:Q19d5WfVBHB2Kc/fOFSlwnsoVP3EU=\nR:sysvshm_linux.go\na:0:0:444\nZ:Q1gUa50ccbN7EsE9ieUN1YAhnKX7c=\nR:sysvshm_unix.go\na:0:0:444\nZ:Q1EjP3jpaoaENLJGFVl2lAa3D43gI=\nR:sysvshm_unix_other.go\na:0:0:444\nZ:Q1sj5qlNv09XHTkOMDEUYZcoehCeY=\nR:sysvshm_unix_test.go\na:0:0:444\nZ:Q1ekKQqQqFdXSQEXV8K5yJ9trOKww=\nR:timestruct.go\na:0:0:444\nZ:Q1juC4Mir/lPOrzND1nXIviKEUjyQ=\nR:timestruct_test.go\na:0:0:444\nZ:Q1JYkVU2O2NO2ScvB0L8HI7wIuYqg=\nR:types_aix.go\na:0:0:444\nZ:Q1ZylZf4W/WwZnDvyS1NYAO/3MQIM=\nR:types_darwin.go\na:0:0:444\nZ:Q1HHUqtFJ1rytnZJSBec8hNJZOtL8=\nR:types_dragonfly.go\na:0:0:444\nZ:Q1hEOuwM4VoivXu2iwsowLIwJkh2U=\nR:types_freebsd.go\na:0:0:444\nZ:Q1+3y4Z+olcni22vSDiVUTs+Qoz8g=\nR:types_netbsd.go\na:0:0:444\nZ:Q1OyWCzTJ6TUDxSv4cg3f5mxZdazQ=\nR:types_openbsd.go\na:0:0:444\nZ:Q1P3y5b7jFfduvGLYp0d0AEVlnt9M=\nR:types_solaris.go\na:0:0:444\nZ:Q11QtB3/kw9fjCBS8tr4/dA1NvnCk=\nR:unveil_openbsd.go\na:0:0:444\nZ:Q1ORoOnVgyeTgEWOhGzcDnMVkoFOA=\nR:xattr_bsd.go\na:0:0:444\nZ:Q1Hn7aDKjhihshSR90cIzb/intJlM=\nR:xattr_test.go\na:0:0:444\nZ:Q1K7j+xMAbFexEsg7IJyO/7IJ81ZQ=\nR:zerrors_aix_ppc.go\na:0:0:444\nZ:Q1dg+T7g+xE4QH72NEnd0S2JgonHA=\nR:zerrors_aix_ppc64.go\na:0:0:444\nZ:Q1+EbqsHVLcooW6l+jMHVk9370dhA=\nR:zerrors_darwin_amd64.go\na:0:0:444\nZ:Q1ELC/tEDqs1XeoAcIJuDJhy6FIwI=\nR:zerrors_darwin_arm64.go\na:0:0:444\nZ:Q1+ah8MuWyYs/bMmS0AXUcC3huZas=\nR:zerrors_dragonfly_amd64.go\na:0:0:444\nZ:Q1cFF9V0e6+01O2kYeuzUoyEJeAiw=\nR:zerrors_freebsd_386.go\na:0:0:444\nZ:Q1k1v+PoMePhQG6IGp4ukfgRNd+10=\nR:zerrors_freebsd_amd64.go\na:0:0:444\nZ:Q1oo7VZe2l47wTZHNIT53mp6DquUM=\nR:zerrors_freebsd_arm.go\na:0:0:444\nZ:Q1AF/PdxYcANCCiI0YvyBTCoJnE7g=\nR:zerrors_freebsd_arm64.go\na:0:0:444\nZ:Q1Hl5pKaECveDsClqL0b68Up2az14=\nR:zerrors_freebsd_riscv64.go\na:0:0:444\nZ:Q1RHJk285p0VrI9RbkgSEeJgtq6xI=\nR:zerrors_linux.go\na:0:0:444\nZ:Q1flC/xTATc4x7CXvwA2yCfy3xQJA=\nR:zerrors_linux_386.go\na:0:0:444\nZ:Q1OJoy0MrDFj6wyH4OxE2+pez2lPQ=\nR:zerrors_linux_amd64.go\na:0:0:444\nZ:Q1cDq6zQ2dMeAk02rxymJJWx7UhwY=\nR:zerrors_linux_arm.go\na:0:0:444\nZ:Q1CZi73oml9fByPYnCPQpoDZp69ps=\nR:zerrors_linux_arm64.go\na:0:0:444\nZ:Q13bkT9LuBj+OphQzbGrpfDzUa/nI=\nR:zerrors_linux_loong64.go\na:0:0:444\nZ:Q1a98xKUiUXh6g52ft8l2xB2AiWiM=\nR:zerrors_linux_mips.go\na:0:0:444\nZ:Q1SMr3wjQtv1vW2+LUOJ1nyHk+vS4=\nR:zerrors_linux_mips64.go\na:0:0:444\nZ:Q1mhV0VNt+pzONaSEGVzpfTt0FBt8=\nR:zerrors_linux_mips64le.go\na:0:0:444\nZ:Q1wD5Tm3cbe+sBSe6LC3+5yWnLu4w=\nR:zerrors_linux_mipsle.go\na:0:0:444\nZ:Q12w3gbi6DwQdgOvFLbDy4+Fpg/R4=\nR:zerrors_linux_ppc.go\na:0:0:444\nZ:Q1FLn5NykqcRmvWhGOccp4MRx+RTA=\nR:zerrors_linux_ppc64.go\na:0:0:444\nZ:Q1gDzSKYMMAQsgizwYzqU7hqi3V/s=\nR:zerrors_linux_ppc64le.go\na:0:0:444\nZ:Q1DBRR2KJDTPDhVtpt0dMlwdFC6K0=\nR:zerrors_linux_riscv64.go\na:0:0:444\nZ:Q15Hb2Z7vCRvIxoh/HukS3Vcmii5U=\nR:zerrors_linux_s390x.go\na:0:0:444\nZ:Q1akYJ394ZQbN1y1UI8hO/wJc3NO0=\nR:zerrors_linux_sparc64.go\na:0:0:444\nZ:Q1oK+i6tqJv6oetKDAESH8Qv+L+og=\nR:zerrors_netbsd_386.go\na:0:0:444\nZ:Q1B5sPBNBmlv1xXYrrUxICCgFbwO0=\nR:zerrors_netbsd_amd64.go\na:0:0:444\nZ:Q1Lafvpq+O9sV4kFbObek/cCFOkJI=\nR:zerrors_netbsd_arm.go\na:0:0:444\nZ:Q1h/1JAbNQft+FnRVmGf9XEFLki6M=\nR:zerrors_netbsd_arm64.go\na:0:0:444\nZ:Q1iUtaU1N47dCYeSNPupSeaRXYT7s=\nR:zerrors_openbsd_386.go\na:0:0:444\nZ:Q1PQ9QTXzna2g7f4p6oM7ObawUqzQ=\nR:zerrors_openbsd_amd64.go\na:0:0:444\nZ:Q1xlImVmLLTyNcrLSx0rwrnfOaktQ=\nR:zerrors_openbsd_arm.go\na:0:0:444\nZ:Q1O4kjFc3mtrwr9gTgEJhVFtF6Adg=\nR:zerrors_openbsd_arm64.go\na:0:0:444\nZ:Q1YcMyIvl4rYStjP+IJmuRdE6EhwM=\nR:zerrors_openbsd_mips64.go\na:0:0:444\nZ:Q1iqar06/jbWiYAKeDoruLwO2PPeA=\nR:zerrors_openbsd_ppc64.go\na:0:0:444\nZ:Q1v5MukpV4ZCzVyMlpAcl/MZBa3BQ=\nR:zerrors_openbsd_riscv64.go\na:0:0:444\nZ:Q1ETJNBK+AuM6H74oPgmX6lk3m+M0=\nR:zerrors_solaris_amd64.go\na:0:0:444\nZ:Q10gfaFsZfG/lbI0R7C+PxMZ8Id7U=\nR:zerrors_zos_s390x.go\na:0:0:444\nZ:Q1oL0uJS64eZq1nQrltg5YKo4ZIH4=\nR:zptrace_armnn_linux.go\na:0:0:444\nZ:Q1rMg0kC0pi5+dfXL6xW+jrWcD+H8=\nR:zptrace_linux_arm64.go\na:0:0:444\nZ:Q11CbuLNUAR/NR9k/ZzwvIbBZHsaI=\nR:zptrace_mipsnn_linux.go\na:0:0:444\nZ:Q1FlXe2JJ0mWU3Rfv8AmhZzC1h52o=\nR:zptrace_mipsnnle_linux.go\na:0:0:444\nZ:Q1qoqreFtx/TOVpBugHucphnhTapk=\nR:zptrace_x86_linux.go\na:0:0:444\nZ:Q1Z7aU3zWWYsBxdwAxNCaTHzQzkOw=\nR:zsyscall_aix_ppc.go\na:0:0:444\nZ:Q17IyZPebHLxmIk2K1Gx6E1rmEgdc=\nR:zsyscall_aix_ppc64.go\na:0:0:444\nZ:Q1VpwCkRL4iEmZt8CQbAXdB2tJE58=\nR:zsyscall_aix_ppc64_gc.go\na:0:0:444\nZ:Q1HD2RxGmNgegqzAx+PBeL4XWgVpw=\nR:zsyscall_aix_ppc64_gccgo.go\na:0:0:444\nZ:Q13d82hJdOzvy9bWWHuGNdgjUa4s8=\nR:zsyscall_darwin_amd64.go\na:0:0:444\nZ:Q1pkgrhaBpakGHLXPdX2L1vDeEFFc=\nR:zsyscall_darwin_amd64.s\na:0:0:444\nZ:Q17ECZUS+ONBb5DKPYlCnoJmB3yUw=\nR:zsyscall_darwin_arm64.go\na:0:0:444\nZ:Q1q8Qx6ONKfMpGrHzzlT0zkaCYZrE=\nR:zsyscall_darwin_arm64.s\na:0:0:444\nZ:Q1gZDj5XAX//u1Z8F8zUhqqDOo90k=\nR:zsyscall_dragonfly_amd64.go\na:0:0:444\nZ:Q15mczAfRjDNhhGA+AeFxPKyaetFw=\nR:zsyscall_freebsd_386.go\na:0:0:444\nZ:Q10N0+LizaPGtUpUOKtxayYcKl1OM=\nR:zsyscall_freebsd_amd64.go\na:0:0:444\nZ:Q1Vy87f458F3PJez6XvTUVNp9rY2A=\nR:zsyscall_freebsd_arm.go\na:0:0:444\nZ:Q1DrRUwU6PJeQ3JJ75j1xBgA4RfQ4=\nR:zsyscall_freebsd_arm64.go\na:0:0:444\nZ:Q1AuiGhuTx2FVUFKbOXx+mOaBJUcc=\nR:zsyscall_freebsd_riscv64.go\na:0:0:444\nZ:Q1Pn74AwvxSpkYSWe6Bhr+EG69SmY=\nR:zsyscall_illumos_amd64.go\na:0:0:444\nZ:Q1XgKBerBOLtivpOodMwqsJoA5Eh0=\nR:zsyscall_linux.go\na:0:0:444\nZ:Q1zio8IMMPRW0L49LOsNg+Bj0QYJ8=\nR:zsyscall_linux_386.go\na:0:0:444\nZ:Q1Dz9YAWoF3/XUarGOihfFAFotRVw=\nR:zsyscall_linux_amd64.go\na:0:0:444\nZ:Q1NEsodTuTK4DTh74yVr98TeQPfQw=\nR:zsyscall_linux_arm.go\na:0:0:444\nZ:Q1f54jT7+lhhY1gI6kQT8ulGbbuqw=\nR:zsyscall_linux_arm64.go\na:0:0:444\nZ:Q1bubGXxWeavim8dgsEB6amMUcc3Y=\nR:zsyscall_linux_loong64.go\na:0:0:444\nZ:Q1ZnT53+7/EntvI9yYXssWrKPUjIg=\nR:zsyscall_linux_mips.go\na:0:0:444\nZ:Q1zHvvSw6/PjCuohQpilMKn3JdRoY=\nR:zsyscall_linux_mips64.go\na:0:0:444\nZ:Q1mg6Wv/mss//v9p0S5ILWPx4yzt0=\nR:zsyscall_linux_mips64le.go\na:0:0:444\nZ:Q1lzBwzVVlAxagZrQQQ6PWBOumpm8=\nR:zsyscall_linux_mipsle.go\na:0:0:444\nZ:Q1da+oZ51O1nz0p7ol1RAzRk6LZps=\nR:zsyscall_linux_ppc.go\na:0:0:444\nZ:Q1a+iVAoq3SoCpN9LbJjpOVRd4w9w=\nR:zsyscall_linux_ppc64.go\na:0:0:444\nZ:Q1sxSBD+ArjA0LWBvI8b3DGdfAEqk=\nR:zsyscall_linux_ppc64le.go\na:0:0:444\nZ:Q19YkukumRYDVThf770cbhTvxPxSI=\nR:zsyscall_linux_riscv64.go\na:0:0:444\nZ:Q1yzz0RFoRcDNPQL+c/MAHasp0UGw=\nR:zsyscall_linux_s390x.go\na:0:0:444\nZ:Q16gsnWlH6T1TZvHeUBvVGw+mq3+4=\nR:zsyscall_linux_sparc64.go\na:0:0:444\nZ:Q1IqMrRbF1IArGfq3nCLp4ZZIf78c=\nR:zsyscall_netbsd_386.go\na:0:0:444\nZ:Q15woiyUytGl2dN9AgPQFuEhUHlnI=\nR:zsyscall_netbsd_amd64.go\na:0:0:444\nZ:Q1ZQs9YPxX+ZMXCMjTaG8HJg4+C00=\nR:zsyscall_netbsd_arm.go\na:0:0:444\nZ:Q1DYK1rj8HmoGjJPJiua+87Yd2gfk=\nR:zsyscall_netbsd_arm64.go\na:0:0:444\nZ:Q1Bt0iJhBtrc7dqkClQ57kgi/zXss=\nR:zsyscall_openbsd_386.go\na:0:0:444\nZ:Q1Pvl7BPe1e0NZliGPIbTONwITwOk=\nR:zsyscall_openbsd_386.s\na:0:0:444\nZ:Q1LZMwK3azj+1XJMuFPe4gERB4bK8=\nR:zsyscall_openbsd_amd64.go\na:0:0:444\nZ:Q1wCf+V4+OYuehHQdM0TO9ICCb6oo=\nR:zsyscall_openbsd_amd64.s\na:0:0:444\nZ:Q1DBVGLBn/ylofsIPA2VR6iS+i2+s=\nR:zsyscall_openbsd_arm.go\na:0:0:444\nZ:Q1S0MyEiQ9qHFZPYiJMkKPX9F9Xr8=\nR:zsyscall_openbsd_arm.s\na:0:0:444\nZ:Q1LEfLagfMTV41XFxTL4kNT+XgMpE=\nR:zsyscall_openbsd_arm64.go\na:0:0:444\nZ:Q1CU/pB0IZmK0IkvvhmXnwkDIuOr0=\nR:zsyscall_openbsd_arm64.s\na:0:0:444\nZ:Q1hh45ktM0AxLD0uezFuFU2S1ITUc=\nR:zsyscall_openbsd_mips64.go\na:0:0:444\nZ:Q1BwGW8+kvgd4e1Jxr+Tv5slC7aE4=\nR:zsyscall_openbsd_ppc64.go\na:0:0:444\nZ:Q1RdGx+ZHn2Sg0+yoVJ48twNuVTds=\nR:zsyscall_openbsd_ppc64.s\na:0:0:444\nZ:Q1pu6MQ9JWtH7j3ry7tYZrnj7Crns=\nR:zsyscall_openbsd_riscv64.go\na:0:0:444\nZ:Q1+5kDIlfhn+QgzvoT30D4i6TJtgI=\nR:zsyscall_openbsd_riscv64.s\na:0:0:444\nZ:Q1xo3fHq/GEab5EMHActdJ20lDJ5I=\nR:zsyscall_solaris_amd64.go\na:0:0:444\nZ:Q1Fm/bA66087ugMxOqxhhC/gRBBGo=\nR:zsyscall_zos_s390x.go\na:0:0:444\nZ:Q1D5ksRN4Dj/sZgzCF/E6EzTybR8I=\nR:zsysctl_openbsd_386.go\na:0:0:444\nZ:Q1EOMofj5hXJWMdDy18i4/xkMgmHw=\nR:zsysctl_openbsd_amd64.go\na:0:0:444\nZ:Q1L9ZMve8M+rCeI7QHw6oO7VpPmeo=\nR:zsysctl_openbsd_arm.go\na:0:0:444\nZ:Q19W4pcfzddcJFAu5fUlNFCdfxqFY=\nR:zsysctl_openbsd_arm64.go\na:0:0:444\nZ:Q1ICVglFLQ0tC2kWjfvNOiW+o4vJg=\nR:zsysctl_openbsd_mips64.go\na:0:0:444\nZ:Q1cxs3KduW00NdvZpfW+CuWa3N+r4=\nR:zsysctl_openbsd_ppc64.go\na:0:0:444\nZ:Q1tj9pam/9cqF241kVIebc2OV9POE=\nR:zsysctl_openbsd_riscv64.go\na:0:0:444\nZ:Q1BvQSskieD69COpzhYUaGYCmlOlY=\nR:zsysnum_darwin_amd64.go\na:0:0:444\nZ:Q1rPSjDLDDeF729V54QQTiIWJLYvc=\nR:zsysnum_darwin_arm64.go\na:0:0:444\nZ:Q14hQk6vhH1Cl8fOWyKMOkkSfpPkg=\nR:zsysnum_dragonfly_amd64.go\na:0:0:444\nZ:Q1BF3JwZAur0zQxeCH/mQrq0npTUg=\nR:zsysnum_freebsd_386.go\na:0:0:444\nZ:Q1Z/BMoBRkCAEEJTvfGy8h+be6RvI=\nR:zsysnum_freebsd_amd64.go\na:0:0:444\nZ:Q1t+h9NyqyVealE/Lx3fTwPtv4+fw=\nR:zsysnum_freebsd_arm.go\na:0:0:444\nZ:Q1BUsmEnM4ZitAcJWZcIJol8VK/GA=\nR:zsysnum_freebsd_arm64.go\na:0:0:444\nZ:Q1B4vxO7A3vRUzIMBEazBPthWoryg=\nR:zsysnum_freebsd_riscv64.go\na:0:0:444\nZ:Q1f9ANUaSlnuVFFGNid9lJWMuZ8vU=\nR:zsysnum_linux_386.go\na:0:0:444\nZ:Q1gtXdj5CMll8iGtCJ2a767if0voM=\nR:zsysnum_linux_amd64.go\na:0:0:444\nZ:Q1o/LIE+qdkY6DZpuBm+XUBynSBC4=\nR:zsysnum_linux_arm.go\na:0:0:444\nZ:Q1Bja2RTLYGYf6b32qy5AIXeNKFAM=\nR:zsysnum_linux_arm64.go\na:0:0:444\nZ:Q1p5ss9JZVKMwJAYgUGQWAKRgDdPs=\nR:zsysnum_linux_loong64.go\na:0:0:444\nZ:Q1p9PWvkgRijvF9H7a/6EBEy1dFDA=\nR:zsysnum_linux_mips.go\na:0:0:444\nZ:Q18OlJxmJvBSnHgtY9oZ5+MwanY4k=\nR:zsysnum_linux_mips64.go\na:0:0:444\nZ:Q1iw/MytMpkdaztZkAF5HPvDdhhyU=\nR:zsysnum_linux_mips64le.go\na:0:0:444\nZ:Q15vSnUNpOMDf9sGV+iZ0iaLmwk18=\nR:zsysnum_linux_mipsle.go\na:0:0:444\nZ:Q10znlcTNqx34tWzuCcUu8h6IVxDU=\nR:zsysnum_linux_ppc.go\na:0:0:444\nZ:Q14g1uU+ZesRCCk0Qj9VOuwmr+slE=\nR:zsysnum_linux_ppc64.go\na:0:0:444\nZ:Q1ygK5+HWHVQE4L1s8dqDOY3TmCsM=\nR:zsysnum_linux_ppc64le.go\na:0:0:444\nZ:Q1AvldMUs9SLHIOAwgVB93gUvfzII=\nR:zsysnum_linux_riscv64.go\na:0:0:444\nZ:Q1v9aFNUFcP0wZnJT7t9SDULeQxA8=\nR:zsysnum_linux_s390x.go\na:0:0:444\nZ:Q1KrhaKOi7eeqZOrQ+UWqjaU0GyOY=\nR:zsysnum_linux_sparc64.go\na:0:0:444\nZ:Q1klcsCn00CcFTRr1VFPRynIL2BxM=\nR:zsysnum_netbsd_386.go\na:0:0:444\nZ:Q1KSqUpNtKzvSAm4gQssjUlzZXbUE=\nR:zsysnum_netbsd_amd64.go\na:0:0:444\nZ:Q1pAT5v9S+MGT9BDwux+fgC4zquYw=\nR:zsysnum_netbsd_arm.go\na:0:0:444\nZ:Q1SF2aK2Qed1TL9XTzMaD/3NFPDRw=\nR:zsysnum_netbsd_arm64.go\na:0:0:444\nZ:Q14qQReIRSjpbaF+2GsydKMvITA5Q=\nR:zsysnum_openbsd_386.go\na:0:0:444\nZ:Q13UlzVQWnUXEKfTPvAyTxjw3mwHQ=\nR:zsysnum_openbsd_amd64.go\na:0:0:444\nZ:Q1FxuL1FpSZgxSYW8NT3mpvahT74Y=\nR:zsysnum_openbsd_arm.go\na:0:0:444\nZ:Q11V/YOE6UsoPOo8vn3TIPj2aFvpk=\nR:zsysnum_openbsd_arm64.go\na:0:0:444\nZ:Q1cFihi2fS3O8hYgJDFv/0KqtYNRQ=\nR:zsysnum_openbsd_mips64.go\na:0:0:444\nZ:Q1CGGtHlAzjW5ZHxkJVMrDbydwUXo=\nR:zsysnum_openbsd_ppc64.go\na:0:0:444\nZ:Q1nGqI496kaNO9E0jgaZTcbltIh6s=\nR:zsysnum_openbsd_riscv64.go\na:0:0:444\nZ:Q14sIH0p1X9EPzuLs+n7CweL3iG+o=\nR:zsysnum_zos_s390x.go\na:0:0:444\nZ:Q1JhTRuUxXceWxLTacLPVvMfnZB5s=\nR:ztypes_aix_ppc.go\na:0:0:444\nZ:Q1oUZ7ljuMm1xx7GYeEsiHOugTRDU=\nR:ztypes_aix_ppc64.go\na:0:0:444\nZ:Q1ZguARE7Td16OMx2lsY72D9XWX0g=\nR:ztypes_darwin_amd64.go\na:0:0:444\nZ:Q1gfeRYg1NIgR3QB4XbDaYwU0Cs64=\nR:ztypes_darwin_arm64.go\na:0:0:444\nZ:Q1fwZTyUS1/t5ZxIYfQnHTwZo8ivI=\nR:ztypes_dragonfly_amd64.go\na:0:0:444\nZ:Q1kY33AmHpyyMSkk8ghF6aQ+Evydo=\nR:ztypes_freebsd_386.go\na:0:0:444\nZ:Q1sGBUUxhX2rxWJD6DgIrOsO/S8q8=\nR:ztypes_freebsd_amd64.go\na:0:0:444\nZ:Q1+u7BwZC/s+9s2LVvw6XfVujw66U=\nR:ztypes_freebsd_arm.go\na:0:0:444\nZ:Q1OlVYQSzQSWvpbVgT9/AdKResJo0=\nR:ztypes_freebsd_arm64.go\na:0:0:444\nZ:Q19IOvLLLttIZ86jh80sgkMoPello=\nR:ztypes_freebsd_riscv64.go\na:0:0:444\nZ:Q1DVfyMTzcrTgH4Aqb8mUWONCW7wY=\nR:ztypes_linux.go\na:0:0:444\nZ:Q1n5VHNhG3tdv9gUIBD1fn9o0yQuE=\nR:ztypes_linux_386.go\na:0:0:444\nZ:Q1sLuAAY88VleSb51rdfHWV7HUzNw=\nR:ztypes_linux_amd64.go\na:0:0:444\nZ:Q1Vx5NCGspOVM4prKXAg4zgm4HedA=\nR:ztypes_linux_arm.go\na:0:0:444\nZ:Q1hb4j3mfcHMbJGoB1KI3X5mLRsEw=\nR:ztypes_linux_arm64.go\na:0:0:444\nZ:Q19pJZZEaHbYwmI9pozRNystcmYnI=\nR:ztypes_linux_loong64.go\na:0:0:444\nZ:Q1zutDg4VoKhCbQQBbMNDcWvHOlfw=\nR:ztypes_linux_mips.go\na:0:0:444\nZ:Q1JDwSfNhPtJJNX7gbPl7YWyY2juU=\nR:ztypes_linux_mips64.go\na:0:0:444\nZ:Q1p/vk5y50xHVZB00r/Kc+HXxj8EA=\nR:ztypes_linux_mips64le.go\na:0:0:444\nZ:Q13RcVx5iEUYOcx4I6sHhY6qSJk0M=\nR:ztypes_linux_mipsle.go\na:0:0:444\nZ:Q1tttOIItRVAGQbXsgLiImP+4srxU=\nR:ztypes_linux_ppc.go\na:0:0:444\nZ:Q1TggH/lzJRsrb3ozl5umJ8ZhaiUs=\nR:ztypes_linux_ppc64.go\na:0:0:444\nZ:Q1Zks/cNPIwhmvcMx6uey2MIeYKz4=\nR:ztypes_linux_ppc64le.go\na:0:0:444\nZ:Q1UfUkWhs75yYhyhx2zV4w6ijPWI0=\nR:ztypes_linux_riscv64.go\na:0:0:444\nZ:Q1vyiMFDsARdy1N+sRxP2uU+sdA7w=\nR:ztypes_linux_s390x.go\na:0:0:444\nZ:Q1ICEpjTdAPe5P2mgMTpvngL6D+u0=\nR:ztypes_linux_sparc64.go\na:0:0:444\nZ:Q1eIXOEthiX/FWlmP/l6Csk6W0emI=\nR:ztypes_netbsd_386.go\na:0:0:444\nZ:Q1Usnw5E6vV+NZu1q7IUxylOST874=\nR:ztypes_netbsd_amd64.go\na:0:0:444\nZ:Q1pkb9fgQqaC/18m448S6onAtmnn8=\nR:ztypes_netbsd_arm.go\na:0:0:444\nZ:Q1dqq5T5HO0vCYbPXX8RUURYRQniI=\nR:ztypes_netbsd_arm64.go\na:0:0:444\nZ:Q1usX37BwYL26bt9Wg8hdtRowpfpk=\nR:ztypes_openbsd_386.go\na:0:0:444\nZ:Q1nO1kUVrdAZg7kBU2kDEszUs3BIk=\nR:ztypes_openbsd_amd64.go\na:0:0:444\nZ:Q1FFOCnJUVCltuG6KtlAOyyfgM5WY=\nR:ztypes_openbsd_arm.go\na:0:0:444\nZ:Q1W1cEayx07X+Ist6tCzB4i9WN3R4=\nR:ztypes_openbsd_arm64.go\na:0:0:444\nZ:Q1YaHJPi39oTdLNUv25H8mBHoTWcI=\nR:ztypes_openbsd_mips64.go\na:0:0:444\nZ:Q1WqFyCy5t8rrqDo8VkC/lqaWX+co=\nR:ztypes_openbsd_ppc64.go\na:0:0:444\nZ:Q1O/OM47gAizaLYx2smOGY6QLid7c=\nR:ztypes_openbsd_riscv64.go\na:0:0:444\nZ:Q1q47mVw+ql+U/ywabYM+4CAyYIsI=\nR:ztypes_solaris_amd64.go\na:0:0:444\nZ:Q1Vm83TXPbxdAcuTQB7L7i0vsgnfw=\nR:ztypes_zos_s390x.go\na:0:0:444\nZ:Q1w7tZx7K4EvynDqwfp8njly7uMUE=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/unix/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/unix/internal/mkmerge\nM:0:0:555\nR:mkmerge.go\na:0:0:444\nZ:Q19trUBGQuxoZrX31JRDhU5/Smor4=\nR:mkmerge_test.go\na:0:0:444\nZ:Q1PFBGw4ZrWpnx7iLIdFiFvdiUSQQ=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/unix/linux\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q17d+tReSiVYEhBlOlozver0LQH60=\nR:mkall.go\na:0:0:444\nZ:Q15ZC+zrwxY8VqaRoLcwJCSifb4tU=\nR:mksysnum.go\na:0:0:444\nZ:Q1sx1jVon6EHND+6VyHcV1tfPWTJU=\nR:types.go\na:0:0:444\nZ:Q1wrdngaomYWTHoX9i8s2cgLFFW7Y=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows\nM:0:0:555\nR:aliases.go\na:0:0:444\nZ:Q1l6MvHf50/4InuSpW1HW6kg0Z3ng=\nR:dll_windows.go\na:0:0:444\nZ:Q1zKJWnXCu85yzpWmZ3cfV3gjJn6Q=\nR:empty.s\na:0:0:444\nZ:Q1ZnvcVY/4xiAB04oQmSHw+MWWO74=\nR:env_windows.go\na:0:0:444\nZ:Q1+FAvIzrBgVeSOZR0BwrLUvmcEIY=\nR:eventlog.go\na:0:0:444\nZ:Q1GtlAYS844H62VwjmDB/i+p7W4r8=\nR:exec_windows.go\na:0:0:444\nZ:Q1ZZyEcctHtBl7EMwx+GOyXcde+Ss=\nR:memory_windows.go\na:0:0:444\nZ:Q1cK5XcHlGEqd6HGk3Jy3QWNubIn0=\nR:mkerrors.bash\na:0:0:444\nZ:Q1DIkPPvQ3qnvdG/q2H9YUcnd5Yrw=\nR:mkknownfolderids.bash\na:0:0:444\nZ:Q1R776nMpxo1Gj0vENkweTEDrxCJo=\nR:mksyscall.go\na:0:0:444\nZ:Q1rcxjy4evVcRr9MN4IwOdFxmkYbc=\nR:race.go\na:0:0:444\nZ:Q1iEXUZHW5suMetRdUTeeQ579Im6U=\nR:race0.go\na:0:0:444\nZ:Q1SuZEHA3wVMM7uFt6BWgTto18yrU=\nR:security_windows.go\na:0:0:444\nZ:Q1MQ+c23l2t9yAO6wixkRWMTYc58s=\nR:service.go\na:0:0:444\nZ:Q1LOoup2E/IToBgfqEB3h9r638QDA=\nR:setupapi_windows.go\na:0:0:444\nZ:Q1u5q/chaDR9j4rQF8yJkFjuWHhyE=\nR:str.go\na:0:0:444\nZ:Q1OhfbvwQtbNCJTlvcHlsH6GoavRE=\nR:syscall.go\na:0:0:444\nZ:Q1e3thfxxF1emkSxuxj31rpeCneiw=\nR:syscall_test.go\na:0:0:444\nZ:Q1dcEmm4OpdI3mqXRH05fMCw29gSo=\nR:syscall_windows.go\na:0:0:444\nZ:Q1gZzNVmZ+XVYHqZ5pZNSwa4LRx9Q=\nR:syscall_windows_test.go\na:0:0:444\nZ:Q11wOB1WoRR4wbxonyADNOXX2vijM=\nR:types_windows.go\na:0:0:444\nZ:Q15+DiM1ykcmYhXEXpk4hd5kdTdQ0=\nR:types_windows_386.go\na:0:0:444\nZ:Q1D5KYd9IGj0tbQbqp6cXpU1DAjI8=\nR:types_windows_amd64.go\na:0:0:444\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:types_windows_arm.go\na:0:0:444\nZ:Q1PBB9xb+Ydw4jLmiVcIL07ay75PE=\nR:types_windows_arm64.go\na:0:0:444\nZ:Q1YNmTNpUSVS37p5DFq5BXH9QoUyM=\nR:zerrors_windows.go\na:0:0:444\nZ:Q1RkB1t4C72LpQPzt/1HmOy3vqTsI=\nR:zknownfolderids_windows.go\na:0:0:444\nZ:Q1qsGjPpNqbzcDkBf/CfOuz3UEG8o=\nR:zsyscall_windows.go\na:0:0:444\nZ:Q1dhmkmgx3Ykp2UCIIu/QZX95tZ5E=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/mkwinsyscall\nM:0:0:555\nR:mkwinsyscall.go\na:0:0:444\nZ:Q15GSJrZ4oNovBjNIXkBtBGMogUn4=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/registry\nM:0:0:555\nR:export_test.go\na:0:0:444\nZ:Q16jW1/8N12LDxkf0c+CQZ0U19hfo=\nR:key.go\na:0:0:444\nZ:Q1MHVf9c9WjY2FT7yTxRFTNtg8lnk=\nR:mksyscall.go\na:0:0:444\nZ:Q1px8Uu4IeBfYkZ9coX1DHPlRvTK4=\nR:registry_test.go\na:0:0:444\nZ:Q1tRE13HtS81pVP5zvXgkJqqq/FrA=\nR:syscall.go\na:0:0:444\nZ:Q115yIwBFquYmiYgE2nr9hd+iZS2s=\nR:value.go\na:0:0:444\nZ:Q1pLh3OBfoQncZdHnG0KLKXdkcB5A=\nR:zsyscall_windows.go\na:0:0:444\nZ:Q1aVijzxPoDeiZ099c4QLRurxEi+Y=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/svc\nM:0:0:555\nR:security.go\na:0:0:444\nZ:Q1u+qJc9e6K+wIbDiLK8JILT2sGx0=\nR:service.go\na:0:0:444\nZ:Q1T+QD4tgXKm4zETREUxVR+5uN24E=\nR:svc_test.go\na:0:0:444\nZ:Q1oUhPoVEsceI76N3KXvG6k49lCAg=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/svc/debug\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1xnm9JFX82FwnJYOhyeqxVE95lqw=\nR:service.go\na:0:0:444\nZ:Q1ixDwT2gB61CZ25j3lMruw5PhwbI=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/svc/eventlog\nM:0:0:555\nR:install.go\na:0:0:444\nZ:Q1FYBeLJ0PmvLS/CYpxk4SxaJZMHI=\nR:log.go\na:0:0:444\nZ:Q1AQVwpu/icrgFlrJ49Y3tN0pZ0Ic=\nR:log_test.go\na:0:0:444\nZ:Q1W7GCC+RUK37JtmjfJ70RJdU7r2o=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/svc/example\nM:0:0:555\nR:beep.go\na:0:0:444\nZ:Q1+97UTsoyEp1nRh98NqQdPSyFyO4=\nR:install.go\na:0:0:444\nZ:Q1TPqUO4xDIxENOaIbxUsW6dTTweI=\nR:main.go\na:0:0:444\nZ:Q1tKCOwzjoxvV3DsH7rAlqJ7HOFLc=\nR:manage.go\na:0:0:444\nZ:Q19ORtWnV80SeioFupvmejBOFK5aE=\nR:service.go\na:0:0:444\nZ:Q1mBKlpJdV3iKfU5VF+v92sg+HDbA=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/svc/mgr\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1z3XdOOKLpNumidsgxC00lN1K7Ts=\nR:mgr.go\na:0:0:444\nZ:Q1/leqenBMGC7rmjStbcGkW2EKyAE=\nR:mgr_test.go\na:0:0:444\nZ:Q1ys6Vps8jUGDExPmZIAtfhzUXNFU=\nR:recovery.go\na:0:0:444\nZ:Q1Af+A0enFK/R5WPKDtzMg/gRCJJM=\nR:service.go\na:0:0:444\nZ:Q1oPmXs+Emqq27rDjSQSo5a7JVP0g=\nF:root/go/pkg/mod/golang.org/x/sys@v0.2.0/windows/testdata\nM:0:0:555\nR:README\na:0:0:444\nZ:Q14/NnhvuLO2eGHe/K7rJR8Rz2HsA=\nR:ev-signed-file.exe\na:0:0:444\nZ:Q1Xx/hKgaUiTwClRk++n6hH0fzTw8=\nF:root/go/pkg/mod/golang.org/x/term@v0.1.0\nM:0:0:555\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q169ZL1R0q3pqVa/VMpzQ+jEicVdM=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q199TTBq2dTz/c6glI3iGdcGRs020=\nR:go.sum\na:0:0:444\nZ:Q1cc0XMmqO429bOcERo46hd43GT1s=\nR:term.go\na:0:0:444\nZ:Q13yrRyxEP6EOoUPiy+mFSq2b4qG4=\nR:term_plan9.go\na:0:0:444\nZ:Q11wHQP9et+vxD+ny65AUeLtEo96A=\nR:term_test.go\na:0:0:444\nZ:Q1pcyr0pT+//GRRNF8OGm/5fhS3OY=\nR:term_unix.go\na:0:0:444\nZ:Q1IOE2TJIMd/ObPyHTualan3rxN+c=\nR:term_unix_bsd.go\na:0:0:444\nZ:Q1SQQLMJyteCTuK8HNG/8VZUQj8Gs=\nR:term_unix_other.go\na:0:0:444\nZ:Q1yWi1/Z2J3ymREq0lbObIn/rkGdY=\nR:term_unsupported.go\na:0:0:444\nZ:Q1ZUcUa5odJc0kMKsF2RjnRtNWpMc=\nR:term_windows.go\na:0:0:444\nZ:Q1n0UYuTTMlx4KE9DrySAPVelw+pg=\nR:terminal.go\na:0:0:444\nZ:Q1z9XWWU+Qtrak3zMNN7iQJyJtYhw=\nR:terminal_test.go\na:0:0:444\nZ:Q1j4jD1yh2Es2mFg6uOJhBbgTxLsY=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1ls9dD8rH/J+J3rLYEsOL+nG0BDw=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1Tn6cdLgInCF1op/YBlhi6RcUsdo=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:doc.go\na:0:0:444\nZ:Q1fgZM9wr3qxcxcfP7l86VZgRH5B4=\nR:gen.go\na:0:0:444\nZ:Q1Nw8tQzrIUbo7h8Lfuivpg07U0cA=\nR:go.mod\na:0:0:444\nZ:Q1ajn3qJnq5fsD+bHElH1vZLBlMx0=\nR:go.sum\na:0:0:444\nZ:Q1XHSxyZqPmniPq20rvUBTxO5EmHU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cases\nM:0:0:555\nR:cases.go\na:0:0:444\nZ:Q1H3arSlmpTLnpwMYDzWowp04lMCA=\nR:context.go\na:0:0:444\nZ:Q1+5FBiJs+mXkUXlauKI4p55n4jDw=\nR:context_test.go\na:0:0:444\nZ:Q1Mb/AoAsQF4LzoP2Ofg1XAGemRSo=\nR:example_test.go\na:0:0:444\nZ:Q10jXGg+Su8QidcxJO1up4w4PpM1k=\nR:fold.go\na:0:0:444\nZ:Q1qVZBDbcUll4cXerTafZcPDwBiJ0=\nR:fold_test.go\na:0:0:444\nZ:Q1SetkNdjDtCPBla8uUCKO2p1WHM4=\nR:gen.go\na:0:0:444\nZ:Q1SuxCf+96GdqMxG3xz+/gu1ZNiZI=\nR:gen_trieval.go\na:0:0:444\nZ:Q1++MRtMnxcVIqgpldPLmCGyXlL0o=\nR:icu.go\na:0:0:444\nZ:Q1N+3pyJZ5pliV1CIPKwDrGspGi8o=\nR:icu_test.go\na:0:0:444\nZ:Q1NjrP8e1ivfUF/24sJFUDevDvqTA=\nR:info.go\na:0:0:444\nZ:Q1RIhiMvG4kVpzla+4PbJFWzECXLc=\nR:map.go\na:0:0:444\nZ:Q1fbKHJ9C0Tpy4VjLpTuaDv8x2y8s=\nR:map_test.go\na:0:0:444\nZ:Q15NaVsHd86FStOEc6GtgZp/9RGik=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1FuIg8hv63KCDQuVX3b+s1KyW2Po=\nR:tables10.0.0_test.go\na:0:0:444\nZ:Q14lcWwMN/EWeCHvLscFOIRst9Z2g=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1xCmsKFt98KzLnesw7WjSCZHyNWA=\nR:tables11.0.0_test.go\na:0:0:444\nZ:Q1STOhhyDxp2sTw/I8GTEkBCphzNk=\nR:tables12.0.0.go\na:0:0:444\nZ:Q17XlZad77rfMHywaJ+0cVq6sYtIU=\nR:tables12.0.0_test.go\na:0:0:444\nZ:Q1LfA0zS93X0C43ZfBRACjgqeoGZ0=\nR:tables13.0.0.go\na:0:0:444\nZ:Q19Dn5JUQoTe3QbpvyK5gVFIO2IBs=\nR:tables13.0.0_test.go\na:0:0:444\nZ:Q1y330f6BdqUoqBuMT1YiTefLPT/k=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1iiB49rEQFgs0BcaXtI6+KONjnMc=\nR:tables9.0.0_test.go\na:0:0:444\nZ:Q113pd+a7gfxXl8zzOPhXa5lvJW9Q=\nR:trieval.go\na:0:0:444\nZ:Q1OYrmCFyWeX8u4FowA9x75eNzK/A=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1J8MdBy3bj9c/qNzGHh1Ip2GD2tQ=\nR:doc.go\na:0:0:444\nZ:Q1WA9IEbTWIjuQWBfZXD3PGASeBaM=\nR:extract.go\na:0:0:444\nZ:Q1CgvCDGg1wrc/xA2HXw0gOZSGlYQ=\nR:generate.go\na:0:0:444\nZ:Q1AWhlWtLb1b+5uTzeizv4q2OckmE=\nR:main.go\na:0:0:444\nZ:Q1iZomSbsiFbFFvpFJ/vk4HAPBjvU=\nR:rewrite.go\na:0:0:444\nZ:Q1Dtb/GJLQb7iwrAgbbXvaaEMK990=\nR:update.go\na:0:0:444\nZ:Q1C9S6bAR1aCBQ3BjftOLRUtGnPc0=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract\nM:0:0:555\nR:catalog.go\na:0:0:444\nZ:Q1yLtPtad/Gi1ygvxuMDcbVKr3Zv8=\nR:main.go\na:0:0:444\nZ:Q1QsVDfJxnQrLSq+nbF5UHhqSqDzA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract/locales\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract/locales/de\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q1IgLhhOra5Vri8vPheUdPbIlgtZE=\nR:out.gotext.json\na:0:0:444\nZ:Q1DBKUyMdCscD0QM0GuHQkrl9M4wA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract/locales/en-US\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q1cU6B00s7Gj82qP7ENibqD88FhwY=\nR:out.gotext.json\na:0:0:444\nZ:Q1mTks4jC2u9+IyPBBrxhu2XP1QiE=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract/locales/zh\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q1IV89Oi4ShfPrCv3c48ZVcbDmzYk=\nR:out.gotext.json\na:0:0:444\nZ:Q1GUE2tVe+xegM6Wecd7wqWHlHVfU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http\nM:0:0:555\nR:catalog_gen.go\na:0:0:444\nZ:Q16EAPOXw5P8QQF/W7sNvvQs3amlU=\nR:main.go\na:0:0:444\nZ:Q1lwd0iG35oA3qJh4L/DtR2YXOOQA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/locales\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/locales/de\nM:0:0:555\nR:out.gotext.json\na:0:0:444\nZ:Q1bp7kc5OEvjctfZZTrbXemhONRAQ=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/locales/en\nM:0:0:555\nR:out.gotext.json\na:0:0:444\nZ:Q1rQZF20qgh7sC5OzEPMOGjZnpjHE=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/locales/en-US\nM:0:0:555\nR:out.gotext.json\na:0:0:444\nZ:Q13Dz/RWvjc5B+35eCPx1rKqhMjwc=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/locales/zh\nM:0:0:555\nR:out.gotext.json\na:0:0:444\nZ:Q1b2qfJoh/Rubm3b8ul5SrMwdEbrA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/extract_http/pkg\nM:0:0:555\nR:pkg.go\na:0:0:444\nZ:Q1EDEyhLInZ0za3NbJiuCsHKvMgg0=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/cmd/gotext/examples/rewrite\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1yPn9GlPIbxBKJlyX+DtvWQfwxV0=\nR:printer.go\na:0:0:444\nZ:Q1jofPn7t9JWVBZPa/3lHArgRGNJw=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/collate\nM:0:0:555\nR:collate.go\na:0:0:444\nZ:Q1GCpzFSB11qjDZIH7du0j4q0gdPE=\nR:collate_test.go\na:0:0:444\nZ:Q1DWdWE0Q8yJKY+xMLciTkIpIy7w8=\nR:example_sort_test.go\na:0:0:444\nZ:Q1GjgCCdRdyolYnKRs/WyzxWxnDt4=\nR:examples_test.go\na:0:0:444\nZ:Q1E7a/1M0+KQYIDuGiW6e8Fc0kmIY=\nR:export_test.go\na:0:0:444\nZ:Q1W/kblvSdLZoA65hYNmM18LA0Pco=\nR:index.go\na:0:0:444\nZ:Q1vzY9u+a39G8FJlzI6rrlzHwiI8E=\nR:maketables.go\na:0:0:444\nZ:Q16A76UUF+s2hMX1yCg0W7/Dxyhjs=\nR:option.go\na:0:0:444\nZ:Q134KY88zGH5Fbie40zEygEdH+//4=\nR:option_test.go\na:0:0:444\nZ:Q1uUCHTz1hjzh4RS/y4VZBGnTkE8g=\nR:reg_test.go\na:0:0:444\nZ:Q1/Rla01Cmd3DcatRjG9V90V5kUYw=\nR:sort.go\na:0:0:444\nZ:Q1zmOKAmb9md+Qs4+PsAsY2Ap8KH8=\nR:sort_test.go\na:0:0:444\nZ:Q1auZ2KNCKZfPqK75iJJIfReICYmQ=\nR:table_test.go\na:0:0:444\nZ:Q1eb6+qYNUSlMscslp8V0dRiYluWA=\nR:tables.go\na:0:0:444\nZ:Q1fbD1Z0T8CptOmvmrxDhW6lqWBiU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/collate/build\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1uo1/JVOzqhXWbw0VEXgyUHtnALI=\nR:builder_test.go\na:0:0:444\nZ:Q1K5GmfS64Zc0TBfH0jLfi8+J351M=\nR:colelem.go\na:0:0:444\nZ:Q1bh1p8SCTdm/1FlnGKuJA3XMJD4A=\nR:colelem_test.go\na:0:0:444\nZ:Q1uaeb86MTKS20PiTJ5khoVJTKAtI=\nR:contract.go\na:0:0:444\nZ:Q1SLfS8t8DVofAz07xEKVbAgMRt0Y=\nR:contract_test.go\na:0:0:444\nZ:Q1XRbDA9sC0/qHmHkI2OGab1+s0sg=\nR:order.go\na:0:0:444\nZ:Q1Ec0qIO0RgHqqJ1GTi+pBO5PSI8M=\nR:order_test.go\na:0:0:444\nZ:Q1NHV2uxNKuF92H1fquQVzjQymI6c=\nR:table.go\na:0:0:444\nZ:Q1m2CgcdecEv1PCEs8l7hsQt/edp8=\nR:trie.go\na:0:0:444\nZ:Q1mwU45YNopUj4DlNzltkeji49bP8=\nR:trie_test.go\na:0:0:444\nZ:Q1AtNikE035egZLQnIS4ZjUAA9Y6c=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/collate/tools\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/collate/tools/colcmp\nM:0:0:555\nR:Makefile\na:0:0:444\nZ:Q1xtod2hQUMtzPZE8VqpzyGZKj0GE=\nR:chars.go\na:0:0:444\nZ:Q1Tm6MVdlpsJWG/yqwo2g6El2+mGg=\nR:col.go\na:0:0:444\nZ:Q1R9Yr+JtevyC/U5JAQcd3TMn9Rqg=\nR:colcmp.go\na:0:0:444\nZ:Q1l7TtuQ4QC04ztAWcr5aSeYqBfmQ=\nR:darwin.go\na:0:0:444\nZ:Q1XCeiW2cXDlgDg8J6UWOoXYgIoBQ=\nR:gen.go\na:0:0:444\nZ:Q1vIGAfXm7NRfKXL8yaU/A2sGQKMo=\nR:icu.go\na:0:0:444\nZ:Q1QFtqE/eo6qmPgKqhKTL7RXT4BzY=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/currency\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1lGNld6ClZC0PM6iMGeckFdye41A=\nR:currency.go\na:0:0:444\nZ:Q1kfHywj4KQRM+6GSv0c+P9AFvx9A=\nR:currency_test.go\na:0:0:444\nZ:Q1aY7jgkWVTNBFqk8PFDYwFpP+zpE=\nR:example_test.go\na:0:0:444\nZ:Q1s5SoQOKYaExiZ00p6MpJjgiSFmY=\nR:format.go\na:0:0:444\nZ:Q12C/fuJ9dZUGjL0WtGx+v9nzKejo=\nR:format_test.go\na:0:0:444\nZ:Q1uk84diig5e+96EzzXRcL2Y5f9ks=\nR:gen.go\na:0:0:444\nZ:Q1l5yh2amZpFbRT2YYkBZE/qbORzw=\nR:gen_common.go\na:0:0:444\nZ:Q1G8Ifg14U2dr+/I8oc3ErppbOuFU=\nR:query.go\na:0:0:444\nZ:Q1EOAbmwn5GRwioUXJ7PSgY7G2r+k=\nR:query_test.go\na:0:0:444\nZ:Q1x3n0JlH0a0xmgqCTDeBXGqWW7co=\nR:tables.go\na:0:0:444\nZ:Q115C3pEt8g1Z6A9WYkEyCTrGgLJU=\nR:tables_test.go\na:0:0:444\nZ:Q1eXiIb+/gML0u4olen+HIsGVSqcY=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/date\nM:0:0:555\nR:data_test.go\na:0:0:444\nZ:Q1O5QJkYI0mTFZkqzuSMvl3qsHuh4=\nR:gen.go\na:0:0:444\nZ:Q1oxmhe5/3tInB3RH6xnqHE1mCIBk=\nR:gen_test.go\na:0:0:444\nZ:Q1zIVjLEBQA7rZ3XPEMRjHhM6zwDA=\nR:tables.go\na:0:0:444\nZ:Q1w0CfPzVmzPPnuiy4C3vJwVoAXNM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding\nM:0:0:555\nR:encoding.go\na:0:0:444\nZ:Q1JwdcuzAQWejK9KwJPg4Xya8SvG4=\nR:encoding_test.go\na:0:0:444\nZ:Q1969KDVBk2tq6chvS2ms7GfCrWoU=\nR:example_test.go\na:0:0:444\nZ:Q1KYZLhtpfZmY9KbkBY4wtl0EKDqA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/charmap\nM:0:0:555\nR:charmap.go\na:0:0:444\nZ:Q1xLSjPtHVUr9xMNSz1/joBr7mTrk=\nR:charmap_test.go\na:0:0:444\nZ:Q1vimn10csefQCvuyBwpujco8sNx0=\nR:maketables.go\na:0:0:444\nZ:Q142AdT9ta3yPsvYd+kAVSZkMm/70=\nR:tables.go\na:0:0:444\nZ:Q1FJpOwxT1t8ZK3H9FR1mZsLGiw14=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/htmlindex\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q15W9jTscClfX9+CFL9rHzXJ5DLxw=\nR:htmlindex.go\na:0:0:444\nZ:Q1UOocJVl/4K27YNdpWO2paWs5ey0=\nR:htmlindex_test.go\na:0:0:444\nZ:Q1GCLcvJSS/qu5/Eg06nDzKY2YZN4=\nR:map.go\na:0:0:444\nZ:Q1Kae6qqRAFfA+lxcwifINdmuhX0o=\nR:tables.go\na:0:0:444\nZ:Q1G6vWT0Oohub1e2VuJQx2GV29Heg=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/ianaindex\nM:0:0:555\nR:ascii.go\na:0:0:444\nZ:Q1rqYBfAMdpQqGam0ZfP3BscdIbfE=\nR:ascii_test.go\na:0:0:444\nZ:Q1InaIGPUydbYGCSltUJ8UvDERAEc=\nR:example_test.go\na:0:0:444\nZ:Q1wS3ThomS2i4UJqpoa1KHCR/mCm4=\nR:gen.go\na:0:0:444\nZ:Q1IPEwh2PMlhRymWrPsqvGldeYpSc=\nR:ianaindex.go\na:0:0:444\nZ:Q1Wd6QyraklL5IZi+jEtT27/MyuaU=\nR:ianaindex_test.go\na:0:0:444\nZ:Q1ZWoBM0g3ZKy63MkYc1XsaYfHJXA=\nR:tables.go\na:0:0:444\nZ:Q1UWDltCywGUEkMskQ1WGsKfK5xQM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1U0ggjrtgQe3vD7/N6QfzHW6lZMo=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/internal/enctest\nM:0:0:555\nR:enctest.go\na:0:0:444\nZ:Q1THpYTg2Kr7biDmmkfpzgq6AEYJM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/internal/identifier\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q183cPVBeg/0TiMbqoQgF3d3m5ptw=\nR:identifier.go\na:0:0:444\nZ:Q1xdmw5fSNcj58fu6AcxXBXXXGZEs=\nR:mib.go\na:0:0:444\nZ:Q1NTcIZed18t+AZiSBAA9IIz44N4g=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/japanese\nM:0:0:555\nR:all.go\na:0:0:444\nZ:Q1s8pj528RYhXu/CAQrNT8n+A6Y6U=\nR:all_test.go\na:0:0:444\nZ:Q1owWG28ms7HeolPXHKFwveclCwlQ=\nR:eucjp.go\na:0:0:444\nZ:Q1tZgl70TZhvccUtXEU9k4OAK151s=\nR:iso2022jp.go\na:0:0:444\nZ:Q15UX6mjCtrFhW1H9YhrbjUvk1PKw=\nR:maketables.go\na:0:0:444\nZ:Q1ui0XXRlyTdaZxnwwm1jVJSBksI8=\nR:shiftjis.go\na:0:0:444\nZ:Q1rPMM+F1BQsi6afg5J30EDrBoWjQ=\nR:tables.go\na:0:0:444\nZ:Q1XU/xOHqJV8qAEhQwlnYQFq20qcA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/korean\nM:0:0:555\nR:all_test.go\na:0:0:444\nZ:Q1gmxlUnUD+VzMZVbqiy/gLYLiUD8=\nR:euckr.go\na:0:0:444\nZ:Q1gGTsjCU/cLZWDQ3P9MNOlujva8A=\nR:maketables.go\na:0:0:444\nZ:Q1FXaNjgEUm33TG0qz8rha2DQAZ7s=\nR:tables.go\na:0:0:444\nZ:Q1/QYVpb7+fSw1lYBEU+1QDZdBNVU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/simplifiedchinese\nM:0:0:555\nR:all.go\na:0:0:444\nZ:Q16fyFVTjo2kbObxwzZIv5jK+48dg=\nR:all_test.go\na:0:0:444\nZ:Q1gjUqLeTYHTJGOYRoYVBgDO4iyys=\nR:gbk.go\na:0:0:444\nZ:Q1yKuFvl8wCVcaPsAoLWrEjRHAhlc=\nR:hzgb2312.go\na:0:0:444\nZ:Q1f8JNyibl+kxY5P8xOe/EaT1biVU=\nR:maketables.go\na:0:0:444\nZ:Q1quimwlDAy6U9EhLXmBEjXsjlJCs=\nR:tables.go\na:0:0:444\nZ:Q1vwvuMvuuqYsBQk5UMPxKn2VpIzk=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/testdata\nM:0:0:555\nR:candide-gb18030.txt\na:0:0:444\nZ:Q1cYJ7L+/jx7wq6dG0ohYPiIbC5yY=\nR:candide-utf-16le.txt\na:0:0:444\nZ:Q10fhehssRROUwC+bPatmpr2a3bIM=\nR:candide-utf-32be.txt\na:0:0:444\nZ:Q1sPXsnmyk17qZeKqU06lJijWzKaQ=\nR:candide-utf-8.txt\na:0:0:444\nZ:Q1PAcFO1LjYqgyhg4/CTNCgNv9yXs=\nR:candide-windows-1252.txt\na:0:0:444\nZ:Q1SelvRtlhOJejnn7EOrzR6vktUeA=\nR:rashomon-euc-jp.txt\na:0:0:444\nZ:Q1er3D4ozgKyKqKh60r/Us8kjda5A=\nR:rashomon-iso-2022-jp.txt\na:0:0:444\nZ:Q1K/gVVTy6v8MYcDRoVH4U6O+JXIk=\nR:rashomon-shift-jis.txt\na:0:0:444\nZ:Q1RUEw03umoAliDG3pgfafNIVsK7s=\nR:rashomon-utf-8.txt\na:0:0:444\nZ:Q1ODDHpsoD+nGQ9AtSf84kxEjDmT4=\nR:sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt\na:0:0:444\nZ:Q1+/ahR3wvMqj0XznuLtG/me+ByG4=\nR:sunzi-bingfa-gb-levels-1-and-2-utf-8.txt\na:0:0:444\nZ:Q1M8GBGlvlHMpBkz4RZ1u6bt25a5E=\nR:sunzi-bingfa-simplified-gbk.txt\na:0:0:444\nZ:Q1T3mYq9BQSINE/J6qMDLODWTTk0Q=\nR:sunzi-bingfa-simplified-utf-8.txt\na:0:0:444\nZ:Q1PsHIkYSDzalVluAzspr6faZZ07k=\nR:sunzi-bingfa-traditional-big5.txt\na:0:0:444\nZ:Q1eZMH44fs50n6ReKFIJulqOdLDoc=\nR:sunzi-bingfa-traditional-utf-8.txt\na:0:0:444\nZ:Q1IHdsOm6lJIgI7v5bLD69TJED4O4=\nR:unsu-joh-eun-nal-euc-kr.txt\na:0:0:444\nZ:Q1w4Rj5LQcq2ly0JiPHuengfd6bGU=\nR:unsu-joh-eun-nal-utf-8.txt\na:0:0:444\nZ:Q1X1Jnh9nekhjBOV6Uzc6fZFTgK/U=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/traditionalchinese\nM:0:0:555\nR:all_test.go\na:0:0:444\nZ:Q1keJFeM8DGRtGfUAb9v8dL8FsBWs=\nR:big5.go\na:0:0:444\nZ:Q1EGdi4GuMlniaKqRqDN/iuwwFx0Y=\nR:maketables.go\na:0:0:444\nZ:Q1g0F+EpfkuAti9CN+CCV/L3diTaY=\nR:tables.go\na:0:0:444\nZ:Q16TQQ3+y4Y4ZNF9TOaDmJn0vGd+g=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/unicode\nM:0:0:555\nR:override.go\na:0:0:444\nZ:Q1CHf+KEO+NvXHUKzZR9MOAZoW5Pw=\nR:unicode.go\na:0:0:444\nZ:Q15GppTcP1p+uHge3939fZaXfrgnM=\nR:unicode_test.go\na:0:0:444\nZ:Q19lF5nOIJo+/4viyGjz35ET+8WtM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/encoding/unicode/utf32\nM:0:0:555\nR:utf32.go\na:0:0:444\nZ:Q1NTNZGQ3h6PHg2VS9/rI9IuVgf0Q=\nR:utf32_test.go\na:0:0:444\nZ:Q1hsHKOJLgAnOoRRJXpgI671cpzOo=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/feature\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/feature/plural\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1T8Oy27zsCIoaZXTzGiCdtrAtMXk=\nR:data_test.go\na:0:0:444\nZ:Q1YfgZlA0L45RaI+q92dr0feSBtZY=\nR:example_test.go\na:0:0:444\nZ:Q1kDTdqeFGcw1qw4qf4mBgaJpDvRo=\nR:gen.go\na:0:0:444\nZ:Q1btiAH+Q1S7GfD145YWG3Yr1vUeg=\nR:gen_common.go\na:0:0:444\nZ:Q1Q6UIUT2/RWnpPiMgeUM6UoxjjPw=\nR:message.go\na:0:0:444\nZ:Q1iVAibDEdVTOPNnSu2q3KhVdCEN8=\nR:message_test.go\na:0:0:444\nZ:Q1adahyaZdJzLI6onrbFndeU7fSNg=\nR:plural.go\na:0:0:444\nZ:Q1MVU2f8cJYe7iucAdXzKawoJvz3E=\nR:plural_test.go\na:0:0:444\nZ:Q1JcLn4wbp4bV8Pu+/5OQsBD0J48o=\nR:tables.go\na:0:0:444\nZ:Q1fIq66eaG4jrlaqdF/vc+/uKnoPM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1lKJVuW5LSvXC9A4bHiPVGrjcE7I=\nR:internal_test.go\na:0:0:444\nZ:Q1lJ4D+0pezB/SpSUKn8HsVJGAg2w=\nR:match.go\na:0:0:444\nZ:Q1l1Zx82M+C9oiWYscEyj+PagW9QE=\nR:match_test.go\na:0:0:444\nZ:Q1PPmoiA9+qb1mAnjgalebJEi1/7c=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/catmsg\nM:0:0:555\nR:catmsg.go\na:0:0:444\nZ:Q1TJpaPVCtEe8HlDfx+4IbQDq4kik=\nR:catmsg_test.go\na:0:0:444\nZ:Q1kB7wE+cSUkaX1B7/4pO0SLw6H2U=\nR:codec.go\na:0:0:444\nZ:Q1D5lGrLEU5ivFSTexFwLfI9MQi+g=\nR:varint.go\na:0:0:444\nZ:Q16rZudei4ovpOIPGCbezUQ/jbP6Y=\nR:varint_test.go\na:0:0:444\nZ:Q1zUK/nfiJ2AU2l0Q8ZOExwtqqYsU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree\nM:0:0:555\nR:cldrtree.go\na:0:0:444\nZ:Q1VDIJs4idfFUupgIlvWKTeS/+bww=\nR:cldrtree_test.go\na:0:0:444\nZ:Q1j96Yi+Bo0T/l++7VsSfQq4RjBwM=\nR:generate.go\na:0:0:444\nZ:Q1Xyywp6eKyb5n/C+TjpSYIy3975c=\nR:option.go\na:0:0:444\nZ:Q1BwfVDPuIH3rlCkcUndgKA+QRztM=\nR:tree.go\na:0:0:444\nZ:Q1L7v6IEu2u+bpEXQgAg2uSiUYC2Q=\nR:type.go\na:0:0:444\nZ:Q1sqfOwTBTnN/4hvKuc3EvcnU5bXQ=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test1\nM:0:0:555\nR:output.go\na:0:0:444\nZ:Q1SjyeXPRBT64Z0bJo/1Wwen00YN8=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test1/common\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test1/common/main\nM:0:0:555\nR:root.xml\na:0:0:444\nZ:Q1VQs5+uMDcKQGeEfjTl9qSVAS1f0=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test2\nM:0:0:555\nR:output.go\na:0:0:444\nZ:Q19/3e5tlr9V2nj6mlRGYYtxn/54E=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test2/common\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/cldrtree/testdata/test2/common/main\nM:0:0:555\nR:en.xml\na:0:0:444\nZ:Q1rd33MObERofieoGZ/Wt4QUQFueA=\nR:en_001.xml\na:0:0:444\nZ:Q1S04XCxL4Ocm6kTrmHGPmSj3cS+Q=\nR:en_GB.xml\na:0:0:444\nZ:Q1CVtZbs3bhbBed1Ijxp5XOUuvCZU=\nR:root.xml\na:0:0:444\nZ:Q1p4//x/nUoMTAFtnOp1xRlILl9xI=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/colltab\nM:0:0:555\nR:collate_test.go\na:0:0:444\nZ:Q1WOqWE/EJlssIpcylPJca/RLsNa8=\nR:collelem.go\na:0:0:444\nZ:Q1WE+vfuiN0BBxEU0pyL+kAU19itA=\nR:collelem_test.go\na:0:0:444\nZ:Q1M5saeZDWv/de1ymlqlpPiYmK33I=\nR:colltab.go\na:0:0:444\nZ:Q1smn0Rd8mJswT2N0gPLqLBqMAlmY=\nR:colltab_test.go\na:0:0:444\nZ:Q1D013lTyL2WHa0n5n5CmwM+bYRRw=\nR:contract.go\na:0:0:444\nZ:Q1Ng7GH4+yV9aXNwLCBOQQRwQDOUY=\nR:contract_test.go\na:0:0:444\nZ:Q12RdWiNi3kweed/fy+GMZTvmgxY8=\nR:iter.go\na:0:0:444\nZ:Q1pRzDjtWSGaSPyp4k5Ov8NvROdes=\nR:iter_test.go\na:0:0:444\nZ:Q1oK22EHzwL0YxT6iw9JIO49+aDrk=\nR:numeric.go\na:0:0:444\nZ:Q1R21qfoKJBUHc8B2wQHTQor/xr4A=\nR:numeric_test.go\na:0:0:444\nZ:Q1EvFIlatT0fT3Q/nkbYmQCTQKTVY=\nR:table.go\na:0:0:444\nZ:Q1opwE5v5gHSmMrlQ6d69gT1meYFc=\nR:trie.go\na:0:0:444\nZ:Q1+xJAiyBJr9k9/tRRNIJ/yR/2DZY=\nR:trie_test.go\na:0:0:444\nZ:Q1bJ/IL7we3THlfC2BpOUySY0iKxY=\nR:weighter.go\na:0:0:444\nZ:Q1aw5zX2PLwF++QnIWcrqKdExdBYU=\nR:weighter_test.go\na:0:0:444\nZ:Q1sOC/2H+0Jfuha6snSwYPPCXIM+8=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/export\nM:0:0:555\nR:README\na:0:0:444\nZ:Q148B6n4+qpyUHOzfcBKRULbHrynk=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/export/idna\nM:0:0:555\nR:common_test.go\na:0:0:444\nZ:Q1K3HeeKrvL4E0g6RUErovGSVzuYw=\nR:conformance_test.go\na:0:0:444\nZ:Q1QcEpzuUWIQv+elNGg6cyqwhtJ/w=\nR:example_test.go\na:0:0:444\nZ:Q1lIsjLH2OygFQ4uSG2NKM/y/K/1I=\nR:gen.go\na:0:0:444\nZ:Q1cVw8vN2Aaxag2Y0gIxEh/2/yuWQ=\nR:gen10.0.0_test.go\na:0:0:444\nZ:Q1vI3H/WmkBlOkJbLLYLvPwWUcunk=\nR:gen9.0.0_test.go\na:0:0:444\nZ:Q1wigo7gu2NiddAES3stUSnZiVMXQ=\nR:gen_common.go\na:0:0:444\nZ:Q1hfJ3AE2hr13c5rXQ16r5Gwxz2o0=\nR:gen_trieval.go\na:0:0:444\nZ:Q1rKef5+/yA/Rpl8awT0T35dqFdog=\nR:go118.go\na:0:0:444\nZ:Q1dELtxVE6f4wiZwGd8vR1U09jtYc=\nR:idna10.0.0.go\na:0:0:444\nZ:Q1KglPD7AFGuXkC3MMcfEOGFyh42g=\nR:idna10.0.0_test.go\na:0:0:444\nZ:Q19+QglD0Ao1O03xBhwstjNawQUnw=\nR:idna9.0.0.go\na:0:0:444\nZ:Q1GaemOVssXcUKmXV4TAj84vpZZ+M=\nR:idna9.0.0_test.go\na:0:0:444\nZ:Q17YGk1giCjDmHgzPrnX0mBCguz+s=\nR:idna_test.go\na:0:0:444\nZ:Q1NmtrS306hpmrYqXJ8S4vePrr7Sg=\nR:pre_go118.go\na:0:0:444\nZ:Q1cTOwfTyK6WjqQQIG5g6DTpizkp4=\nR:punycode.go\na:0:0:444\nZ:Q1eza+C2/6uv5WQC/wq7X8/tV4u5g=\nR:punycode_test.go\na:0:0:444\nZ:Q1xWxQPS/cG9xMIf7IFRjsPCdlfCc=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1s1vMsXtEtb2MVc8hifo2Ntm311I=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1Kr1WuZG+eTt/M4LgfMAbvSCp/3I=\nR:tables12.0.0.go\na:0:0:444\nZ:Q11zWdlAW8C1CAptKx3J+fplKrxF8=\nR:tables13.0.0.go\na:0:0:444\nZ:Q1xU70D0iFIQ0O3l17O4j7pW6cvfE=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1jghDY4V0V8ltNP363cKnCSg0D1s=\nR:trie.go\na:0:0:444\nZ:Q1DjInikJfYDcCD82d/ooj7ngYufo=\nR:trieval.go\na:0:0:444\nZ:Q1q6ExY0eZifxeEgiZHdWKmq0I9c0=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/export/unicode\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q19Ex6v8qObDpcQdiPwwRsUVk5qEY=\nR:gen.go\na:0:0:444\nZ:Q11oIsiRd0r64PJoJTIUKwKxfWWms=\nR:unicode_test.go\na:0:0:444\nZ:Q1NlCVxmCnnPHj8OOaXuo/MRE+XYs=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/format\nM:0:0:555\nR:format.go\na:0:0:444\nZ:Q16Y+QH9c/z9Izp9p1PNpdNcxVtyc=\nR:parser.go\na:0:0:444\nZ:Q17pbUFTPWgUJu2Sw5Ln6NO7Xfg8M=\nR:parser_test.go\na:0:0:444\nZ:Q1TLbwn+EgzuJ4Xj27rcYZPmrB9RU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/gen\nM:0:0:555\nR:code.go\na:0:0:444\nZ:Q1e9hEe62quJ+IpSwmxCSDSDrxZKU=\nR:gen.go\na:0:0:444\nZ:Q1rIhoaFfrJkMrLXKov3Fc5mHbLf8=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/gen/bitfield\nM:0:0:555\nR:bitfield.go\na:0:0:444\nZ:Q13cvSFuly+d7OH4/Ekzp4VESipqI=\nR:bitfield_test.go\na:0:0:444\nZ:Q1yxBerM5pXY5wCWkHTdpL9RVqgg8=\nR:gen1_test.go\na:0:0:444\nZ:Q1aybsHuYtVMCb5lgvluJ5P3LEV9g=\nR:gen2_test.go\na:0:0:444\nZ:Q1XZolzopAFIV2qPsIcuX6/5vathk=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/language\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1865ZX5qEZh/gUj+nWADiWu3H29M=\nR:compact.go\na:0:0:444\nZ:Q1idVs9sf7glIDVEpdXNa5+JJUkw0=\nR:compose.go\na:0:0:444\nZ:Q1F6kirFlgfD6CU3APE4JO/DcXIic=\nR:compose_test.go\na:0:0:444\nZ:Q11bQLzZnWUTwgpyvRW6Spf+j+34A=\nR:coverage.go\na:0:0:444\nZ:Q1pgBfusGv0lGCgbfyW5k76g9hejY=\nR:gen.go\na:0:0:444\nZ:Q1WpEtW/ORwSeyQfqX3PHnvOdkrz0=\nR:gen_common.go\na:0:0:444\nZ:Q1l2gNOy6lb6WofCPWOSg1faYlkl4=\nR:language.go\na:0:0:444\nZ:Q1HghbzA7XrYaYG+R9Wq/kT5IH9JY=\nR:language_test.go\na:0:0:444\nZ:Q1lVhk2k4eoAVMOLXquI3NbfQBAwQ=\nR:lookup.go\na:0:0:444\nZ:Q1QFWL1KEBnIRqmxZJ9F/f5NLhjus=\nR:lookup_test.go\na:0:0:444\nZ:Q1XzUV9q43tQK4BRIW+64hOP4XqTQ=\nR:match.go\na:0:0:444\nZ:Q1pLKMABkqZ0RdeOlpw473WALuu2A=\nR:match_test.go\na:0:0:444\nZ:Q13U1sLdH4WqjAcKJtbNl691KB/KE=\nR:parse.go\na:0:0:444\nZ:Q1uN/EgIStdEiLN4yDUz0v5MUq9bg=\nR:parse_test.go\na:0:0:444\nZ:Q14c2n4Ky43JfhIO58AFBJAy+S7J4=\nR:tables.go\na:0:0:444\nZ:Q1hE9pyBnkz/+0gftzjgF1Fwptkgc=\nR:tags.go\na:0:0:444\nZ:Q1TEWipT9ISN7x1+g6RJozkU4B3FY=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/language/compact\nM:0:0:555\nR:compact.go\na:0:0:444\nZ:Q1ggxQ+7rcYSxz/CHozXwWTCYBTMc=\nR:gen.go\na:0:0:444\nZ:Q1xxG4GExiu+uAUmL4zpDYuYc/Gk8=\nR:gen_index.go\na:0:0:444\nZ:Q1KYy7Un1LUWl6cu+4GAKVAD6jSd8=\nR:gen_parents.go\na:0:0:444\nZ:Q1egV+ICpaQbqGQWPBptEbGx9I5Qw=\nR:gen_test.go\na:0:0:444\nZ:Q1/38BILJeAXFS0q/mJNBdi/Ba748=\nR:language.go\na:0:0:444\nZ:Q12nAjtNr+mag/xd2fNDLJhdzs3U4=\nR:language_test.go\na:0:0:444\nZ:Q17GQqugQbLtarDrCO843d1LaTbcY=\nR:parents.go\na:0:0:444\nZ:Q1sy4TbuVnGCm9hfFUiGspwa9de2k=\nR:parse_test.go\na:0:0:444\nZ:Q13VAO6oVRlF5gshSlaHnksehV6ac=\nR:tables.go\na:0:0:444\nZ:Q1QJzh0qMawOmDNt/i6p/fUiAG/CM=\nR:tags.go\na:0:0:444\nZ:Q1nvxE6Vrqo0PrVwpdmTCe50ZLvsU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/number\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1t7tt4ci1LnqXNmLoZhlqxQf8l0k=\nR:decimal.go\na:0:0:444\nZ:Q1fATAnUL/OyDmOl6olpEQfELjb64=\nR:decimal_test.go\na:0:0:444\nZ:Q1/hVL7so/vX5MZE6CSKDC/SzC/YQ=\nR:format.go\na:0:0:444\nZ:Q1+5gjfOVTbtuve37DffP7owJrVLg=\nR:format_test.go\na:0:0:444\nZ:Q1YG5Q7NBhmGyDZJ4MUAkuabMizgY=\nR:gen.go\na:0:0:444\nZ:Q1Qw7iLWehp9UgIsTL3JI/8ieCWXM=\nR:gen_common.go\na:0:0:444\nZ:Q1ncFtL0XQdTLIkYKSpT83ivbuTvE=\nR:number.go\na:0:0:444\nZ:Q1mTS656XSnN5oS9cLJy7fhEB4oo4=\nR:number_test.go\na:0:0:444\nZ:Q1ExEuzQHw8aS4r94TUTSmRGfLOtw=\nR:pattern.go\na:0:0:444\nZ:Q18uihE0ewpAs38XLRUn1yveRawxY=\nR:pattern_test.go\na:0:0:444\nZ:Q1ryXLDjs6jLst/OUit1woReHatFw=\nR:roundingmode_string.go\na:0:0:444\nZ:Q1u8ql5R0eUrQ9Scqga/0DJ3xpmC0=\nR:tables.go\na:0:0:444\nZ:Q1nYQ+IzGwTq8qkags1oje61wcyq0=\nR:tables_test.go\na:0:0:444\nZ:Q16AcvmSeF+ssf6pOqQVe6VmGREJs=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/stringset\nM:0:0:555\nR:set.go\na:0:0:444\nZ:Q1z4/WLvVQA0rzHf99EYMRWwK8aHg=\nR:set_test.go\na:0:0:444\nZ:Q1hEeROYUMw3yle6p2qVrHSc7FUr4=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/tag\nM:0:0:555\nR:tag.go\na:0:0:444\nZ:Q1wFa3bzSOD48eJYR/62FMDFmmCTU=\nR:tag_test.go\na:0:0:444\nZ:Q1sMaVY2kwosPvrTNnXDpfhjtKNyg=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/testtext\nM:0:0:555\nR:codesize.go\na:0:0:444\nZ:Q1xZuYBXl4Ckk75LsFyem6wiXGhbE=\nR:flag.go\na:0:0:444\nZ:Q18BMA0w5wDlLsVv8xP+EXDRt2DcA=\nR:gc.go\na:0:0:444\nZ:Q1K8nll22TcUT33BwgGZgL7/8lRDQ=\nR:gccgo.go\na:0:0:444\nZ:Q1KK1JyPBzlEQpeHS08JAH+xxqk9E=\nR:go1_6.go\na:0:0:444\nZ:Q1TmGL7VuufgniTaYhe+RtXHS3e5g=\nR:go1_7.go\na:0:0:444\nZ:Q178UhpXTaYSCDV2dE9ok0oioLCmE=\nR:text.go\na:0:0:444\nZ:Q1IT7BQKF1bI/uD3bC+VjoOUNoIxA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/triegen\nM:0:0:555\nR:compact.go\na:0:0:444\nZ:Q1Tsoj8v8NtqdSvh507i8Z7I+mft4=\nR:data_test.go\na:0:0:444\nZ:Q1YiqLIdH15Lz3dqR2crqeuPcuXIM=\nR:example_compact_test.go\na:0:0:444\nZ:Q19MAHRVhx56n7p8BEcL99M23Soxw=\nR:example_test.go\na:0:0:444\nZ:Q1aK076T7mi853+shYGVwIqjxOEDU=\nR:gen_test.go\na:0:0:444\nZ:Q1bI/359U2UfdD0Y3C6+G/PmQnyC4=\nR:print.go\na:0:0:444\nZ:Q19b4sk6kMvNOrldo81hzWXdk4RYE=\nR:triegen.go\na:0:0:444\nZ:Q1y9xZGpursi/If4wIiYbV1g3y308=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/ucd\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1UdK3cFzrFRQNbjUOkO6ybKirbS4=\nR:ucd.go\na:0:0:444\nZ:Q1Tgrx4SecAyFn9RlLzZymJQl+lCE=\nR:ucd_test.go\na:0:0:444\nZ:Q1S+q09/n1p8OmuMMVQuFWlIhNlYU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/internal/utf8internal\nM:0:0:555\nR:utf8internal.go\na:0:0:444\nZ:Q1wyltcWoJk0c3Gd178yxtvj9QPjU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/language\nM:0:0:555\nR:coverage.go\na:0:0:444\nZ:Q13yl17WBAFfvcR1fwp16VGzO7qqc=\nR:coverage_test.go\na:0:0:444\nZ:Q1JbblHIt+VGrUmXy3hk5drl0gEZM=\nR:doc.go\na:0:0:444\nZ:Q1TVhsRDNst2h8GiGNX7jS6nPEmtI=\nR:examples_test.go\na:0:0:444\nZ:Q1pMjM+jgrQ9nB+10PCJgMUNBMSTk=\nR:gen.go\na:0:0:444\nZ:Q10s2CsYyF4eGoEEN08WPzAxtqTZQ=\nR:httpexample_test.go\na:0:0:444\nZ:Q1Fu/YcsXh22FaQm4zzUYYyXOULfs=\nR:language.go\na:0:0:444\nZ:Q1M77n/2lF5pG5rgxYJjSoN5wfVCM=\nR:language_test.go\na:0:0:444\nZ:Q1dDeoQ6B+kSQ4Sdwtd6kB3cT0x1E=\nR:lookup_test.go\na:0:0:444\nZ:Q1+Y7Ye7KudSQrNC/WES2qyvGRaWc=\nR:match.go\na:0:0:444\nZ:Q1Gsuu7g8Ce04jK0oAegI+kqzX31o=\nR:match_test.go\na:0:0:444\nZ:Q1n9ZXZkSBQEJJzUShVW47sy1/aE8=\nR:parse.go\na:0:0:444\nZ:Q1IRYk3s2Sz7mPX1ucmYkDkwndoxw=\nR:parse_test.go\na:0:0:444\nZ:Q1/ca+lKGOjxi6ko7BlA4aumFPLsQ=\nR:tables.go\na:0:0:444\nZ:Q1hMx/sYAsdcjZ8sP4EkLBNhtAyVE=\nR:tags.go\na:0:0:444\nZ:Q1bjHbCDxPzNWqSnsGFe2Nzt5aeEM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/language/display\nM:0:0:555\nR:dict.go\na:0:0:444\nZ:Q1cp/ACxNYjB1CAApmLzar6HO8MZs=\nR:dict_test.go\na:0:0:444\nZ:Q15XNl357xmtBEAx3iHc8AryhGALc=\nR:display.go\na:0:0:444\nZ:Q17h6bO7PgkfR8rbV7P/E9DhHrOus=\nR:display_test.go\na:0:0:444\nZ:Q1IfATU09XWV74Hv+c9WHvPFC65G8=\nR:examples_test.go\na:0:0:444\nZ:Q15FQJ0BsfbkKXFukT+2WnEh9VwVo=\nR:lookup.go\na:0:0:444\nZ:Q1gO0OZs+e/G1g28p0dOEO3SD0pOY=\nR:maketables.go\na:0:0:444\nZ:Q1DYrRQE6Idj5zrksyGdfxegvjD6w=\nR:tables.go\na:0:0:444\nZ:Q1htSUD2kKOGesJuE22lD+jiWaIoI=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/language/testdata\nM:0:0:555\nR:CLDRLocaleMatcherTest.txt\na:0:0:444\nZ:Q1SuTpdEmNrnzxErG/QV5/8R9DH5A=\nR:GoLocaleMatcherTest.txt\na:0:0:444\nZ:Q1xUwPRc8pibLy2Bm+Yfd0U54nHtE=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message\nM:0:0:555\nR:catalog.go\na:0:0:444\nZ:Q1M4sTDL/QzDHKMPm8cfsoabwNnag=\nR:catalog_test.go\na:0:0:444\nZ:Q1zdHH+nan0/AcLZs+Pw1GpZ79EE4=\nR:doc.go\na:0:0:444\nZ:Q1uDuFElIjyi5VNvx66lAwQhhzCjQ=\nR:examples_test.go\na:0:0:444\nZ:Q1p84v5+Fq6z0jETpilfGBwOYGZ0A=\nR:fmt_test.go\na:0:0:444\nZ:Q1SnqNA7yx2+rux41lIMlKNtMbX8o=\nR:format.go\na:0:0:444\nZ:Q1dxj0K4131cmyGl1En4TL7018YCg=\nR:message.go\na:0:0:444\nZ:Q1B0QR1jYlqH9w/ZnCzO5qtm0nNLc=\nR:message_test.go\na:0:0:444\nZ:Q1wESDeUFm35uBpCm/NOwFjV/rbNs=\nR:print.go\na:0:0:444\nZ:Q1YtTezxGi0Fb6hXlyT2hYfz6IFnE=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/catalog\nM:0:0:555\nR:catalog.go\na:0:0:444\nZ:Q1BzVxbhBus6d/jjoMqKaNUt39tkQ=\nR:catalog_test.go\na:0:0:444\nZ:Q1A+UHw117FeDSByRQx5nZoERAC0c=\nR:dict.go\na:0:0:444\nZ:Q1L+fCngqzVDX/Oue72ComBA/PhBE=\nR:go19.go\na:0:0:444\nZ:Q122+gTme3P0FAaxdtRh37UbszTEU=\nR:gopre19.go\na:0:0:444\nZ:Q1e/R2WzHRKJJu9ngn2nH66Il6eLs=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline\nM:0:0:555\nR:extract.go\na:0:0:444\nZ:Q1FQ3YHU6W6YQhU1IsmI5JzVeZb68=\nR:generate.go\na:0:0:444\nZ:Q1Jta1l78idJRs86V0TdadxKLnDec=\nR:go19_test.go\na:0:0:444\nZ:Q190g2a6Y5hruDVzsMO2CeYh+RQFQ=\nR:message.go\na:0:0:444\nZ:Q1OXNdL500rk9plSUwQtUwQPFiR+g=\nR:pipeline.go\na:0:0:444\nZ:Q1yjZk0aJplS63ryjPc+RCyWhuXrM=\nR:pipeline_test.go\na:0:0:444\nZ:Q1lIjzL1wWwqJeqf8XtOrlSmocpF0=\nR:rewrite.go\na:0:0:444\nZ:Q1HTsTveVJijXGBrlUuiW8KflYX2g=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/ssa\nM:0:0:555\nR:catalog_gen.go\na:0:0:444\nZ:Q16vgKMQeoSId7PWpFi0SQJis28RM=\nR:extracted.gotext.json\na:0:0:444\nZ:Q1PKxGFdUZ/PDKo0uiwf1RVPrnZK4=\nR:ssa.go\na:0:0:444\nZ:Q1qCKtmDoz9gRktKpqr73067Ld+Po=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/test1\nM:0:0:555\nR:catalog_gen.go.want\na:0:0:444\nZ:Q1xeCsOQTarefljp0WjleLIsyrBSY=\nR:catalog_test.go\na:0:0:444\nZ:Q1vNS4oUF/ozv3mFvadAUr1k2Q2H4=\nR:extracted.gotext.json.want\na:0:0:444\nZ:Q1HkpoxoIpZTtl6zdGNiLZ4N+wfGM=\nR:test1.go\na:0:0:444\nZ:Q151tGLeAKZliQe41CGRsC1TjriqI=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/test1/locales\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/test1/locales/de\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q1PefDeY4UQ8Z5/S5zEHBwjJaRefM=\nR:out.gotext.json.want\na:0:0:444\nZ:Q1Urx579RKGQk4BvmxM2bsqQpA21E=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/test1/locales/en-US\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q1Ua16rVxGjSkHp+5TE1gIOdUYfc0=\nR:out.gotext.json.want\na:0:0:444\nZ:Q1ovjj9MsqepNMS8bUon1r5OeKaCA=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/message/pipeline/testdata/test1/locales/zh\nM:0:0:555\nR:messages.gotext.json\na:0:0:444\nZ:Q14IhjWwXVA2YeRZNhv8ecc8i+Dnw=\nR:out.gotext.json.want\na:0:0:444\nZ:Q1yldI8ZJuEN80lvEtRX4Qg5GAgHQ=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/number\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1KiFmPHU/6dcIoC5QXjgw4YVUHqs=\nR:examples_test.go\na:0:0:444\nZ:Q1A3XuibChXIn5FltHvxSD5sBJ/VM=\nR:format.go\na:0:0:444\nZ:Q1Xz8wKJQodCXu71fYq3aULRntPuI=\nR:format_test.go\na:0:0:444\nZ:Q1hFcZllPfID6Y/aetz/SW4ywc6Jk=\nR:number.go\na:0:0:444\nZ:Q11mWDjy5vr7POBp+2YbbtLJUZN1M=\nR:number_test.go\na:0:0:444\nZ:Q1BmjLASXHYuOm+NSfrAHj/b3d2DQ=\nR:option.go\na:0:0:444\nZ:Q1GdSl3qwOxPw7eFOsWCEgrn/xZ+s=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/runes\nM:0:0:555\nR:cond.go\na:0:0:444\nZ:Q1WwavWru34ecL5XiNDzJC5lMG7Wc=\nR:cond_test.go\na:0:0:444\nZ:Q1qvsCZpxMpz65fLkZKLEzI7keS9g=\nR:example_test.go\na:0:0:444\nZ:Q1pIxutxGCLQGtzQUsegbzJKOxaKU=\nR:runes.go\na:0:0:444\nZ:Q1PRDSNgv+fo5ztL9Tmr448IqHTxI=\nR:runes_test.go\na:0:0:444\nZ:Q1dgaw4CAsWmBsk+Dak52NS2GJYyk=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/search\nM:0:0:555\nR:index.go\na:0:0:444\nZ:Q1Q1s0AAsEhlwMp07t1Tg4IKJUr5o=\nR:pattern.go\na:0:0:444\nZ:Q1B+zqt5Dt3/k4ildOD1f2b7R28wg=\nR:pattern_test.go\na:0:0:444\nZ:Q1Bta21xpjpbshoyuEF7BfvLInCrg=\nR:search.go\na:0:0:444\nZ:Q11oXvQogt3Rfd35heVisSWefyLKI=\nR:tables.go\na:0:0:444\nZ:Q1atKMdhQ/ELWBO5/ZWfxCGyvVeZs=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/secure\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1HfSMAH2VJ/+oFHUxN0pyo7zLvgU=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/secure/bidirule\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1eVFdYo8gHSMVM5R0a2XZygc3Coo=\nR:bidirule.go\na:0:0:444\nZ:Q1BhxORRAY9bGbuR0zSj5z7VELayc=\nR:bidirule10.0.0.go\na:0:0:444\nZ:Q15W0OM4KghM9NTptvVpYDBaS9Fgg=\nR:bidirule10.0.0_test.go\na:0:0:444\nZ:Q1JwTH9GNLIrm3Iny8MXDqBQVUBag=\nR:bidirule9.0.0.go\na:0:0:444\nZ:Q1CI8tU8OFN0GNR0JX4U2Ht2/ciro=\nR:bidirule9.0.0_test.go\na:0:0:444\nZ:Q1yYyBli4iv6kIdF+tpJ83icwI20A=\nR:bidirule_test.go\na:0:0:444\nZ:Q1u7cugKVmap7EKnqSzzuB0pE2EF4=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/secure/precis\nM:0:0:555\nR:benchmark_test.go\na:0:0:444\nZ:Q1PSZMNoR19KMUS05QqF/rkJ5BqxA=\nR:class.go\na:0:0:444\nZ:Q1Qudgyb7coRwqE7+wHO3APtw0MBA=\nR:class_test.go\na:0:0:444\nZ:Q1UA0rJnnnnmm4gbZznzJsXPukdOU=\nR:context.go\na:0:0:444\nZ:Q1so79F1x7PEAYH9210CsdzpXydM4=\nR:doc.go\na:0:0:444\nZ:Q1qgDzFFNpfbTZLOvSNaf2yJcqQmM=\nR:enforce10.0.0_test.go\na:0:0:444\nZ:Q1l6hNs7vHDoRUgjghfUgvoJWaRgk=\nR:enforce9.0.0_test.go\na:0:0:444\nZ:Q1SstCN4PhtTMLNjJIhbuG9WyLHJM=\nR:enforce_test.go\na:0:0:444\nZ:Q1yTIk2icFHYTQVST54eRRRBVUMyw=\nR:gen.go\na:0:0:444\nZ:Q1HWoc6Hp0c3fodM2ER9B4ytj3W90=\nR:gen_trieval.go\na:0:0:444\nZ:Q1tnjf/lOhUHFOnhDefj+xEOl2Kc0=\nR:nickname.go\na:0:0:444\nZ:Q1Au1A5zFNy7sR1M5E//ZvzFuLSMk=\nR:options.go\na:0:0:444\nZ:Q1lUlazZwuetsMJaLjsPJivaAU3oE=\nR:profile.go\na:0:0:444\nZ:Q1t5ufhHrvIzKlAWt0LDKcyVX71zQ=\nR:profile_test.go\na:0:0:444\nZ:Q1No8B/79Q7ochC4zoP/jYSKt+57w=\nR:profiles.go\na:0:0:444\nZ:Q1PITBdi/eRLxMYFQi2LVmQuFaV4E=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1FrDIcKqfywiL9FfWLAUZN8R1+MI=\nR:tables11.0.0.go\na:0:0:444\nZ:Q16QvS8PCvMdxn+Y3kAzlsPTFsjLk=\nR:tables12.0.0.go\na:0:0:444\nZ:Q158G4TZZ2ICwoTs5F9LGkl5SDns4=\nR:tables13.0.0.go\na:0:0:444\nZ:Q18vnlMii4f7xMrMyKNwUljCEjIO8=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1MKRawhj9UJGPFpU7FLw0Ac9vBp8=\nR:tables_test.go\na:0:0:444\nZ:Q1eKAlwRfuKg+q7Q1gQgMAp2InwuU=\nR:transformer.go\na:0:0:444\nZ:Q1b/w5Nbu83n4cZkb1enS/weFNmuw=\nR:trieval.go\na:0:0:444\nZ:Q1Jx4rVwgvgrqCfi+v7uIS3xxr0zM=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/transform\nM:0:0:555\nR:examples_test.go\na:0:0:444\nZ:Q1RC2DNNc3bAlVJ+U7x+lURyuNdH4=\nR:transform.go\na:0:0:444\nZ:Q1tksUO9DeSoZrGLxM/Sm1D/yGr3Q=\nR:transform_test.go\na:0:0:444\nZ:Q1KWBvKOccRI/+L0aHo5FXh4jyPtE=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1RXvwZ4qWnD6wC6M4BGu2EU7olG8=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode/bidi\nM:0:0:555\nR:bidi.go\na:0:0:444\nZ:Q1bz9qd1P1IKX2gnZ2JofWYlPzYY8=\nR:bidi_test.go\na:0:0:444\nZ:Q1vtmoVYU5+cUqpSy1x3CNcwdR7kQ=\nR:bracket.go\na:0:0:444\nZ:Q1AsaBZfD9dbyulqSkUVInHphYQc4=\nR:core.go\na:0:0:444\nZ:Q1AAjviqAzh+bgdpGo8WQTUM4ld5w=\nR:core_test.go\na:0:0:444\nZ:Q1W4LT7z2SbqSd3koBOP+atg9KqgU=\nR:gen.go\na:0:0:444\nZ:Q1m4tQLfAhJHxFlse0R3QV+H6qUKc=\nR:gen_ranges.go\na:0:0:444\nZ:Q1U2Riy6DcczGk+igY3NaUti+i6to=\nR:gen_trieval.go\na:0:0:444\nZ:Q1Pcys1+BQfxBRlpzKkQ/ksrgc4QQ=\nR:prop.go\na:0:0:444\nZ:Q11ttZbxGQO3APKYCPjpo0scBV0GE=\nR:ranges_test.go\na:0:0:444\nZ:Q1I2eWLP5RrgoxbbhaUtepo8HFEJE=\nR:tables10.0.0.go\na:0:0:444\nZ:Q15dQ5AaKnyUS8pEAjlh9OeDCs4Jw=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1r0N8Jz01lfUZg/6kLYp4DwWMuaI=\nR:tables12.0.0.go\na:0:0:444\nZ:Q17fTuCHuui9rYDmfUYo7zTkssWko=\nR:tables13.0.0.go\na:0:0:444\nZ:Q11Ck5eOljLtRgBj9Zo7wb8UiGhyM=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1Nj0OPZXam3uXJwfH7nKNkJjpa5c=\nR:tables_test.go\na:0:0:444\nZ:Q1WRXulEVxLYSzMAIsb2sSQGu3X3c=\nR:trieval.go\na:0:0:444\nZ:Q1slOIilUawdnTLvWWQEQkG+lxwwo=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode/cldr\nM:0:0:555\nR:base.go\na:0:0:444\nZ:Q1j5Yck0Ee3sC51MLApyMwSbxYCEA=\nR:cldr.go\na:0:0:444\nZ:Q142hlXqGX3ag6wVoctGL8u9QwWS4=\nR:cldr_test.go\na:0:0:444\nZ:Q1yqUOHhcMp1ZWcyaJftYb+zk8FGg=\nR:collate.go\na:0:0:444\nZ:Q1DX5LBkfUDumdpPmJyxoABGOS2GY=\nR:collate_test.go\na:0:0:444\nZ:Q1pUg+PdxGI8zxH2UEXcsP+MbVLw0=\nR:data_test.go\na:0:0:444\nZ:Q1l3fafcGmzO3DF6Tn4trGt9ERAro=\nR:decode.go\na:0:0:444\nZ:Q1zVC9j6E0aVVWecT+Vjc+CGgFzck=\nR:examples_test.go\na:0:0:444\nZ:Q10by1csRaenYaNcAt5rM+5bAHNtE=\nR:makexml.go\na:0:0:444\nZ:Q1O5Ah7jDT4D9Gqfwu433up1tPkgU=\nR:resolve.go\na:0:0:444\nZ:Q1Jpb6aIffhN8PQkjOMT2q6X2qIfY=\nR:resolve_test.go\na:0:0:444\nZ:Q1mZn2m7n41KHZ1Ko0/+aB+y3ob+c=\nR:slice.go\na:0:0:444\nZ:Q1SOEurhvO3xBSH9JyaxNN+o/Wrd8=\nR:slice_test.go\na:0:0:444\nZ:Q1g1jhUDo5MKHoquUk40Je6yPhK2k=\nR:xml.go\na:0:0:444\nZ:Q1bALU40FmkCYEA1TvHL5VMqDnUEc=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode/norm\nM:0:0:555\nR:composition.go\na:0:0:444\nZ:Q1uqYOSffk1BtdVQLEjzYetzT+OQc=\nR:composition_test.go\na:0:0:444\nZ:Q1st4r9znXl6tSf4qjSa0UpjPv1g4=\nR:data10.0.0_test.go\na:0:0:444\nZ:Q1zzvyIQooDtXKgx1lb/wz09xtAi0=\nR:data11.0.0_test.go\na:0:0:444\nZ:Q1nKEwcFEv8n+r5WVyN5qd2EdsucQ=\nR:data12.0.0_test.go\na:0:0:444\nZ:Q1Xs+0HP7pEKRaVvAtocgTIH/Q/CU=\nR:data13.0.0_test.go\na:0:0:444\nZ:Q1zrmLo7eUkPdiRWW27VjdLmH4hlk=\nR:data9.0.0_test.go\na:0:0:444\nZ:Q1uSiKMDqmPeFKFVHW9jcnzjJiRj8=\nR:example_iter_test.go\na:0:0:444\nZ:Q1BJdKbVafx4KIdQdQX6XdyKrbcU4=\nR:example_test.go\na:0:0:444\nZ:Q1/LixyXHcxvQWZ7w/1hKZWCrZdmc=\nR:forminfo.go\na:0:0:444\nZ:Q1yAvN89tCcQjJHjDAWJavnWIV9tw=\nR:forminfo_test.go\na:0:0:444\nZ:Q1cOALdlWhYgy/a2ZbHcOqZGfanWg=\nR:input.go\na:0:0:444\nZ:Q1wPMQdYPQYMKk8IvN9zJk+IYhheo=\nR:iter.go\na:0:0:444\nZ:Q1LUSPoPuEQRvG4ZkxzNlI5J5B8b8=\nR:iter_test.go\na:0:0:444\nZ:Q1CMsYjdKtrX1iqnvG0TSDIwDtrSA=\nR:maketables.go\na:0:0:444\nZ:Q1fnK2sDeuDO0ru2EhGYu8zXwz3V4=\nR:normalize.go\na:0:0:444\nZ:Q16ZADZXi8LgpWE7WKg0Y8FbWic84=\nR:normalize_test.go\na:0:0:444\nZ:Q1aGuzjYxTVnpCHjzoZlefts6bx9o=\nR:readwriter.go\na:0:0:444\nZ:Q1IvyVznElXWlZKTpO9w+rFjFDNkc=\nR:readwriter_test.go\na:0:0:444\nZ:Q1xV1iIuW9B4axhEaPahVJjR9A7a0=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1N8LgRKI2Ai/OKu8fNWeW8TuX4zM=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1nPSMbO3Wa/OyZ5TmEfR38HnUHpY=\nR:tables12.0.0.go\na:0:0:444\nZ:Q1DzokSKe1dyyxVJZ6O1VHwd9idd8=\nR:tables13.0.0.go\na:0:0:444\nZ:Q1Rnelr43PT1Owmna49LhwOnhxU7o=\nR:tables9.0.0.go\na:0:0:444\nZ:Q13i4zkBx815rebdxgKjfSPtgngb8=\nR:transform.go\na:0:0:444\nZ:Q1jSRTpGGs6qjsaih+R47+gGuCEek=\nR:transform_test.go\na:0:0:444\nZ:Q1RrFOqXKGH3+uiinhdth6x4Zp+mI=\nR:trie.go\na:0:0:444\nZ:Q1TAa6hMso6TBp9zdYpkrVvkScC9E=\nR:triegen.go\na:0:0:444\nZ:Q1t8CoHkdZVFYh7vt6ImaXfhIbCpg=\nR:ucd_test.go\na:0:0:444\nZ:Q1Zv8AXiCOhF2eZHnmVpNIEukV5lk=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode/rangetable\nM:0:0:555\nR:gen.go\na:0:0:444\nZ:Q16tIsG1mNZzHoqNcJykdaYPFgL64=\nR:merge.go\na:0:0:444\nZ:Q1cts+MfO7sSJ3VLuXmQ8PFY4/5r0=\nR:merge_test.go\na:0:0:444\nZ:Q1ij5/YFWj/OYdBsHhNQK1E8qW9UA=\nR:rangetable.go\na:0:0:444\nZ:Q1HKVgGVGqi7aIsxjsuJWgaADhpnk=\nR:rangetable_test.go\na:0:0:444\nZ:Q1qFtF/nRxPqdT/CVzR0Z95Bs79cc=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1P18keionM5dkk1KKyaICK6+7zNw=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1bSS28kmp2vP84QuL2pwMd/qDBQ4=\nR:tables12.0.0.go\na:0:0:444\nZ:Q13qhEoul/gn5CruZhBmp9iFppG58=\nR:tables13.0.0.go\na:0:0:444\nZ:Q1WAH2lblw4kqkW1SvGW0ZRzWRkn8=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1tllCfT7zW9XENgmHx2egilE+IIc=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/unicode/runenames\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1GQHJSGX75hrun/4pvWDzGFc6K7o=\nR:gen.go\na:0:0:444\nZ:Q1qE/mJYbaKSpRNOm4hz8P2JobOqc=\nR:runenames.go\na:0:0:444\nZ:Q1eROc75L3y1gc6Zlt/oPlfZzV6+Q=\nR:runenames_test.go\na:0:0:444\nZ:Q10sdeANCE2enfsZ9iOZGr++L0m4o=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1NoF/p6PpC4jJx6+F5kR9UYv4ROQ=\nR:tables11.0.0.go\na:0:0:444\nZ:Q1BqSIMu4sszrU9DTNBPrLP3rV6uY=\nR:tables12.0.0.go\na:0:0:444\nZ:Q1ymuJlOWeat9utA8fQqbvMNggU8I=\nR:tables13.0.0.go\na:0:0:444\nZ:Q1k7vNitDFvIUpuXCd8ZeJ9oIrtF4=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1tLUfeRo74eGa/TdMG+uVx2mw93Q=\nF:root/go/pkg/mod/golang.org/x/text@v0.4.0/width\nM:0:0:555\nR:common_test.go\na:0:0:444\nZ:Q1Pmm4UnmVz2QiMWhzuYUteGGGNq8=\nR:example_test.go\na:0:0:444\nZ:Q1XGFweb3GRFHKqyJ3idtTOpjXNJo=\nR:gen.go\na:0:0:444\nZ:Q1ztXTYEz+gUEof+km3ze3BXKszGA=\nR:gen_common.go\na:0:0:444\nZ:Q11QMvs7J/KtfSPs4aBUUZ+bHHqoQ=\nR:gen_trieval.go\na:0:0:444\nZ:Q1zL1Dm7GFnZ4Ko7F+ZfVuGevLnas=\nR:kind_string.go\na:0:0:444\nZ:Q1nD/+VMgPfNhVpujhikAmNxLnGRg=\nR:runes_test.go\na:0:0:444\nZ:Q17dRcG+p5cEsOac4ryBIsBeb82io=\nR:tables10.0.0.go\na:0:0:444\nZ:Q1AWFTRLyr1kAHOum+DaknhlkVuTk=\nR:tables11.0.0.go\na:0:0:444\nZ:Q11sa11OCZ3CiikootV2RZCdYO8cg=\nR:tables12.0.0.go\na:0:0:444\nZ:Q1Ca1EtUu1p5z9VJyY32mcV2+LGMQ=\nR:tables13.0.0.go\na:0:0:444\nZ:Q16disdsesz/M4hQ/i57oVNAd6Oys=\nR:tables9.0.0.go\na:0:0:444\nZ:Q1EZNOWqiOIow1kR0CK3Hhe6B1HNM=\nR:tables_test.go\na:0:0:444\nZ:Q1hh5t9p/8FNyVR/F/o9+b5Pssx6E=\nR:transform.go\na:0:0:444\nZ:Q15XdeCmZpYDu2loL9V39RTe2s5RM=\nR:transform_test.go\na:0:0:444\nZ:Q1mwzCd4cOEEj4I5ylplH64iRutys=\nR:trieval.go\na:0:0:444\nZ:Q11jkspCNbcr0oDOXanHMz33iiQug=\nR:width.go\na:0:0:444\nZ:Q1dXOGfj6fdxCK6WIk0p3u3OLOkWM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0\nM:0:0:555\nR:.gitattributes\na:0:0:444\nZ:Q1fMcjQfPqpsvwi74t/Yx+aWMiaEo=\nR:.gitignore\na:0:0:444\nZ:Q1qOvpYzpzUBlYwx8N1RwwfkIaNpQ=\nR:.prettierrc\na:0:0:444\nZ:Q1pn1BXaJyrxg6z0Espn4mRLGk8EE=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1m3TXiO6SDEojC0bT50cU2hVGLQ4=\nR:LICENSE\na:0:0:444\nZ:Q11qXx7K7dcjwyWiBjN1s1F+gIorU=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1rdQsjZHJuZCGUXSzcgiC0OO6PaI=\nR:codereview.cfg\na:0:0:444\nZ:Q1DA5mbXDw8g3xvVw0nVP26dLTIfg=\nR:go.mod\na:0:0:444\nZ:Q1aHYZWq334/7U0MfG9A4zwvfCdkA=\nR:go.sum\na:0:0:444\nZ:Q1z0PaVmo2kRcJxXDGxw8omyKd6So=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/benchmark\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/benchmark/parse\nM:0:0:555\nR:parse.go\na:0:0:444\nZ:Q13bYaJ+wcin2GVlxSEhFMmEQNXfI=\nR:parse_test.go\na:0:0:444\nZ:Q1iP5Suh/o0WUlY9iQdJXJz/AWKHo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/blog\nM:0:0:555\nR:blog.go\na:0:0:444\nZ:Q1HLkpZC4FbagE4zsHafjJUCUtGUc=\nR:blog_test.go\na:0:0:444\nZ:Q1hDLhizUYz2offXJHdpsqiOZepV0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/blog/atom\nM:0:0:555\nR:atom.go\na:0:0:444\nZ:Q1Yet96gHV9A2j9jD2CfHgeDDOgEc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/auth\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/auth/authtest\nM:0:0:555\nR:authtest.go\na:0:0:444\nZ:Q1vPpvQW/hCZC0TavXSAK/oy454XM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/auth/cookieauth\nM:0:0:555\nR:cookieauth.go\na:0:0:444\nZ:Q1caOE2cQZZVRG50B3RJoAJ2WP6x4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/auth/gitauth\nM:0:0:555\nR:gitauth.go\na:0:0:444\nZ:Q1jX4s/piraNMVxyG9TnO7hkE1LVY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/auth/netrcauth\nM:0:0:555\nR:netrcauth.go\na:0:0:444\nZ:Q1pOMA1pi0U/cAx8y9d2AajtFtRxU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/benchcmp\nM:0:0:555\nR:benchcmp.go\na:0:0:444\nZ:Q1nLPR7fJ4DH4wXh5+UC6dkiOuKmw=\nR:benchcmp_test.go\na:0:0:444\nZ:Q1o7NMK3IAkN7AGLU9RbaKy4MHAeM=\nR:compare.go\na:0:0:444\nZ:Q1i6CBte/MZYkcyJNF5Dd9n8f3jcU=\nR:compare_test.go\na:0:0:444\nZ:Q1SGTtFxKDhxFcDMhtoV3dBVAUfL8=\nR:doc.go\na:0:0:444\nZ:Q1/TAZoBniiWrM/eLelYcIZPwc0po=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1yJooc7YPZsjreGAHO8o6xpaZSZ8=\nR:main.go\na:0:0:444\nZ:Q1t60Ob/hu2QY0POyNaCYKz4wZRzY=\nR:main_test.go\na:0:0:444\nZ:Q1MBNWQz7zdnhGgB4s2o+3HirBM7o=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle/testdata\nM:0:0:555\nR:out.golden\na:0:0:444\nZ:Q1xnMjdZNemUcU3Yf2vSniPfINdS8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle/testdata/src/domain.name\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle/testdata/src/domain.name/importdecl\nM:0:0:555\nR:p.go\na:0:0:444\nZ:Q1mZEmYGIIsrTgTJwvrsGgEGVnZ2E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/bundle/testdata/src/initial\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1try3sXnjOFENqAypMSYF1A6c1xM=\nR:b.go\na:0:0:444\nZ:Q1T+8qtqEq1mFikcKFV5sHQopSHgE=\nR:c.go\na:0:0:444\nZ:Q1GBv7rPHxOmA1NV7jzPyZXRQ9O/E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/callgraph\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1rfLReTVFJjnNXhBc5XpT5LcGI7Y=\nR:main_test.go\na:0:0:444\nZ:Q1kLQdNVmDALG+4hrnPdl3o8BQj/I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/callgraph/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/callgraph/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/callgraph/testdata/src/pkg\nM:0:0:555\nR:pkg.go\na:0:0:444\nZ:Q1MU+UGFhMuG6KF1OZRi51MhUnbMA=\nR:pkg_test.go\na:0:0:444\nZ:Q1gjahYnXhS1T35cwDwzHurh6M+y0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/compilebench\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1DLcHC4wVdi3k6zP/xg6t3wqO3dc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/cover\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q16gVXDRmfHQKj3c1WJ6xfRWU0LRY=\nR:cover.go\na:0:0:444\nZ:Q1TTAE1IiilkiOetkX59cw975hLCQ=\nR:cover_test.go\na:0:0:444\nZ:Q1fN5qynx282n7IAD82XOTPgeq0Bw=\nR:doc.go\na:0:0:444\nZ:Q17AvCLs2AbhZlwrTh0sS60RNPLDg=\nR:func.go\na:0:0:444\nZ:Q1kKwwuGmCDujLfxu1VeXwhRXFlH4=\nR:html.go\na:0:0:444\nZ:Q1JLihEW3H8ba+VOhPrkcph7o+isM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/cover/testdata\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1tzz8wgb5Faouc6M5/AdDFcnsFPY=\nR:test.go\na:0:0:444\nZ:Q1ARZ2LcgzWEQIkXdtWq8DeUDkL/o=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/digraph\nM:0:0:555\nR:digraph.go\na:0:0:444\nZ:Q1LQYvqzkm6jD9BlrdA3o468dBW7w=\nR:digraph_test.go\na:0:0:444\nZ:Q179yiP7y+qM6hDxqCQuHZNSeb414=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/eg\nM:0:0:555\nR:eg.go\na:0:0:444\nZ:Q13DfPuxMt6MZTH8NGyA/Tx9oBKok=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/file2fuzz\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1pFZUtAPaZ9bJNOElo8QsFQ0kgjI=\nR:main_test.go\na:0:0:444\nZ:Q1zYMBdgDQn8+PI6lG4Z+K36IERII=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1sv4yZjR0MkwH0l9c41B5G0fmywA=\nR:main_test.go\na:0:0:444\nZ:Q1G0dz5/cYvxD6pONLojH0mfI26WI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/fruit.io\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/fruit.io/banana\nM:0:0:555\nR:banana.go\na:0:0:444\nZ:Q18xn48uIeJQvLe+gerT2NGb7D0u8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/fruit.io/orange\nM:0:0:555\nR:orange.go\na:0:0:444\nZ:Q17o3jK9Jpi7HBY+YUENkygNHIb4E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/fruit.io/pear\nM:0:0:555\nR:pear.go\na:0:0:444\nZ:Q1UjOrq6C3d3hF13SXbX9j/bcWVwk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/new.com\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/new.com/one\nM:0:0:555\nR:one.go\na:0:0:444\nZ:Q1tmRCdtJI+guPb7qfr6r3PWo+oks=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/old.com\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/old.com/bad\nM:0:0:555\nR:bad.go\na:0:0:444\nZ:Q1yKSXuGGgZprTIh6DWDoqeC2TKn4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/old.com/one\nM:0:0:555\nR:one.go\na:0:0:444\nZ:Q1tmRCdtJI+guPb7qfr6r3PWo+oks=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/titanic.biz\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/titanic.biz/bar\nM:0:0:555\nR:bar.go\na:0:0:444\nZ:Q1AJVMcYu9/lCSkpwY1cWk3ztCty4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/fiximports/testdata/src/titanic.biz/foo\nM:0:0:555\nR:foo.go\na:0:0:444\nZ:Q1IEzR3Nq6GgQZKEk6lc3MBCJI2XQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/getgo\nM:0:0:555\nR:.dockerignore\na:0:0:444\nZ:Q1tbgyqG2MjVeqqlxt867zyryA7mY=\nR:.gitignore\na:0:0:444\nZ:Q1GETnY3OoEWkDVPCHKhHRgTYHpQc=\nR:Dockerfile\na:0:0:444\nZ:Q1L94uHXti04jU59GTaKPUY6s6UHU=\nR:LICENSE\na:0:0:444\nZ:Q1cIBlLMeM2YVdOeMkUpo7XzdF3NY=\nR:README.md\na:0:0:444\nZ:Q1ndCEcIGobn5g9CDc9i6J0AK1o9c=\nR:download.go\na:0:0:444\nZ:Q1Lu6gOW43UZGP5D4OX7xw1e3ODfo=\nR:download_test.go\na:0:0:444\nZ:Q1gRE2S1CrlEKCMw9xuGcImixon20=\nR:main.go\na:0:0:444\nZ:Q1XDqXoUa7qKbdjrg53frqZrebxDs=\nR:main_test.go\na:0:0:444\nZ:Q1PluMUeCuUW7kIxFyplc8Rxf+iJU=\nR:make.bash\na:0:0:444\nZ:Q1AidDFgiWhg1J7V6n9+qVnBu3mDI=\nR:path.go\na:0:0:444\nZ:Q1fRSO8ixvNP0+mnVO8vP7U60G5vw=\nR:path_test.go\na:0:0:444\nZ:Q1OmdmVn5Yl+JGgGiLM9zabOYnhps=\nR:steps.go\na:0:0:444\nZ:Q1d6S4ZlD5L4ggD1/Lc+hPEci8pAg=\nR:system.go\na:0:0:444\nZ:Q1RcWaffb5pyuOehZMUsY9Oxj8jWo=\nR:system_unix.go\na:0:0:444\nZ:Q1bW73yyjrM1dcLLQwzVcpYN/B7RE=\nR:system_windows.go\na:0:0:444\nZ:Q11/RBByLN8cNVw0hDeDT5QWvZpNI=\nR:upload.bash\na:0:0:444\nZ:Q1o9WTi1hZ6d1CLtjE1WS5Ux+t1sg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/getgo/server\nM:0:0:555\nR:.gcloudignore\na:0:0:444\nZ:Q1AfVEVHJ9AsS/TXZ6oBf9MvaDPC0=\nR:README.md\na:0:0:444\nZ:Q1sVkq1t+QifVq2IsqPN/ilbv1GiY=\nR:app.yaml\na:0:0:444\nZ:Q1bAtnBxfMeq+7kxQezNlOIhK46mA=\nR:main.go\na:0:0:444\nZ:Q14uTzTkg7D0ZYEk9GPrBrZQAH+M0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/go-contrib-init\nM:0:0:555\nR:contrib.go\na:0:0:444\nZ:Q1pBmUJIgjkWsI6pw7JGDiGm9rOR0=\nR:contrib_test.go\na:0:0:444\nZ:Q1fhLZQCdCgXIKee0/+6rrc3VB5V0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/godex\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1J9DNdHwOD0Fg0yMb9NKl7/O0cHA=\nR:gc.go\na:0:0:444\nZ:Q1njKs0hkj/Y8BsYRF3elqmQZ8oTg=\nR:gccgo.go\na:0:0:444\nZ:Q1OLlRtL1Txx4JIaqf7pSvit9/r3o=\nR:godex.go\na:0:0:444\nZ:Q1JVpYtd8nuvuu0ygs3Vu7p5PSxyc=\nR:isAlias18.go\na:0:0:444\nZ:Q1unyUd+M8WzTLNfAVs+VPd3/RzGI=\nR:isAlias19.go\na:0:0:444\nZ:Q1kiZRSDFsNkt38q9hWPO6FHophyQ=\nR:print.go\na:0:0:444\nZ:Q1dm2xPXaz6rNg6PENKEzhTk58R80=\nR:source.go\na:0:0:444\nZ:Q1kW14C7vsE9/W60vzmFUWr/i/B/w=\nR:writetype.go\na:0:0:444\nZ:Q14GEPM8YTxG0PCFMXukRQAvXFN3s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/godoc\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1ohg73eXbSsqhq7xsOzsuP/kV0TQ=\nR:godoc_test.go\na:0:0:444\nZ:Q1+oLk+jLoc8896fmaxMFZRJNX03Q=\nR:goroot.go\na:0:0:444\nZ:Q15fK6hQgEQcWUemyfqzXwp3LgcO0=\nR:handlers.go\na:0:0:444\nZ:Q1FgcjLLvw3bbAjN6DBm65MWGa1rY=\nR:main.go\na:0:0:444\nZ:Q1ZJZ8o9+d1rvw3CDe9CJWM2SYsSY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/goimports\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q19+2aYXgapSiyB2EkJQsZSG7oup4=\nR:goimports.go\na:0:0:444\nZ:Q1cjDF2GxjBslgNnduel9a9IX9BCM=\nR:goimports_gc.go\na:0:0:444\nZ:Q1t0I2rXpWsDdy0QAGqLTbNUxXUOM=\nR:goimports_not_gc.go\na:0:0:444\nZ:Q13btV0rOxyVdyjo+iqFh8puIoVGM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/gomvpkg\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Vw+KvMHR4fc2aHiFv528wvOAAR0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/gorename\nM:0:0:555\nR:gorename_test.go\na:0:0:444\nZ:Q1HjBTuknqBQYiSIl1AckhrJo73a8=\nR:main.go\na:0:0:444\nZ:Q1l2wrQeUXreSnbxmW57b1L+s7fLU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/gotype\nM:0:0:555\nR:gotype.go\na:0:0:444\nZ:Q18jEwN84tdbigq8QO+y1fCwBQ9U4=\nR:sizesFor18.go\na:0:0:444\nZ:Q17ZQEI8HkRibeFyczSshgCE6iyy8=\nR:sizesFor19.go\na:0:0:444\nZ:Q11S5Fm9W1SrvBXGrNpeQf1zkEmKc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/goyacc\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1J5jA/1WRbY3zG6edVzTYUvfkgVU=\nR:yacc.go\na:0:0:444\nZ:Q1aV5wuE0cD5EoPBaPscjRbPCO/f8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/goyacc/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/goyacc/testdata/expr\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1DqFUEAPeBkJiOZrkrIbSLomcsBk=\nR:expr.y\na:0:0:444\nZ:Q13mSgzd73wqSbX8CZXS5jbKsxf/Q=\nR:main.go\na:0:0:444\nZ:Q1RxXgdTLsj/PXXmyqHtGAoexNgcM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru\nM:0:0:555\nR:TODO\na:0:0:444\nZ:Q1EumBx9brt6KSxEs9xV93TsU5iVY=\nR:callees.go\na:0:0:444\nZ:Q1CLL/GlOlfMmXbJQLrOhi6yuQmXM=\nR:callers.go\na:0:0:444\nZ:Q1YefxS6tvbQhMjfqY5wP7z/eem+E=\nR:callstack.go\na:0:0:444\nZ:Q11OY0nHTVMGo3LnBlk+6BNKg8b9M=\nR:definition.go\na:0:0:444\nZ:Q1Odsi1tAae2Q0+joXzTZ3ogWBYRw=\nR:describe.go\na:0:0:444\nZ:Q1Bo29W93qWWKCQxXwhvht+2S55ng=\nR:freevars.go\na:0:0:444\nZ:Q1G53F3yEJio3xUGkzkj1l4vAw9Ik=\nR:guru.go\na:0:0:444\nZ:Q1HtFBfNuHx1bNKdSaHkhEHPX8+Ho=\nR:guru_test.go\na:0:0:444\nZ:Q1V4Soo+HVft1KCQetgd333VUeSU4=\nR:implements.go\na:0:0:444\nZ:Q1g0JifgqxW7sV0xbTIz0BRYMqtDg=\nR:isAlias18.go\na:0:0:444\nZ:Q1WE489hmdUn9jNvy7lF1Jqor7ld0=\nR:isAlias19.go\na:0:0:444\nZ:Q1K1yJcgIG1dlzJ6SJanJCxbOwoY4=\nR:main.go\na:0:0:444\nZ:Q1Lbmzo8DBppk4R5nMxBJMQGKwIO0=\nR:peers.go\na:0:0:444\nZ:Q15XyrgSsaUI8f/1D+C89mqK+nZ+c=\nR:pointsto.go\na:0:0:444\nZ:Q1kognMkOA8AjwJ/RXQmTx1Ldop3k=\nR:pos.go\na:0:0:444\nZ:Q1o8p8NOmoJub4Z3nw2eik9Lh0Nts=\nR:referrers.go\na:0:0:444\nZ:Q1g9eBUYdTKPsnzCicJDb2FPp2y2A=\nR:unit_test.go\na:0:0:444\nZ:Q1UbUGOlHDR0ETU8K9A2f1tziu8aU=\nR:what.go\na:0:0:444\nZ:Q13ZwbqJ1UGAykytShCZm7sYnmOq4=\nR:whicherrs.go\na:0:0:444\nZ:Q1uV55cDRVt6zYRpX3NoIFzdxOAdU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/serial\nM:0:0:555\nR:serial.go\na:0:0:444\nZ:Q1pM4tVvLEYHFEDiIFbSrBYPB20fI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src\nM:0:0:555\nR:README.txt\na:0:0:444\nZ:Q11cgIzBcu6IxW7bRipzVWCH0iNIc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/alias\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1ZAbIRv/BkRFuSO26ljxuL8vimOk=\nR:alias.golden\na:0:0:444\nZ:Q1JdORXsRWaWg1y68JHgIwMasfPJ4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/calls\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1uhpSiGrVycNsls673CE6zNkMUxQ=\nR:main.golden\na:0:0:444\nZ:Q1vaJ86rP/9L1tvuHNUvuQVWzGk8c=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/calls-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1NAVDSv4zgbdj8m4U4mkWt0brkVY=\nR:main.golden\na:0:0:444\nZ:Q1qyWKGF9HOOG++K6OWvRq5MVEg4Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/definition-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1NonYbQDsvFL6Hy9Ci1jU4gLmb4A=\nR:main.golden\na:0:0:444\nZ:Q1W/gHkNNhJB9vz1SJPHQRxS72thg=\nR:type.go\na:0:0:444\nZ:Q18e3PgFlpyvv07mXNvLrDoDC0ebg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/describe\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1KeXV0z/qzL47RVBSBA32M2fzSzM=\nR:main.golden\na:0:0:444\nZ:Q1B4xVuBOcUTkpfKuMN2x3mLrJwUw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/describe-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1kWya+EBO1m0sdjPz+8IxR0h8qJg=\nR:main.golden\na:0:0:444\nZ:Q1c6lFVq0i9puw1PXg2Lt5uDlLZqM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/freevars\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15dmPOeonGpAnH+HHTRMECJl3bDg=\nR:main.golden\na:0:0:444\nZ:Q1XCKJu+LTYSpjsGFWaVmWQLmFVe0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/implements\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15J44o9aJa+X9+11WULWD6csTOKg=\nR:main.golden\na:0:0:444\nZ:Q1I+yBBJHAbFvKzjsm/KKOH/5AMPM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/implements-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1FPm8dryaNKz1PZYiYd1Ztafu8m4=\nR:main.golden\na:0:0:444\nZ:Q1o7v3vj81d7kbXrR/xwBgd85vZLk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/implements-methods\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1zk9c5inFeY4eCiHWXk6y7MsnGS4=\nR:main.golden\na:0:0:444\nZ:Q1HdC7PGKRUrVNtuYrQavucPI7PkY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/implements-methods-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1D1Hupkl2BsNtVPeR26/0WWUTQ/w=\nR:main.golden\na:0:0:444\nZ:Q1Jadir6Ps3irwTlF6GwppwA1IIkA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/imports\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1M+CQ60J3DK7nmY3BryDLHSyr3wk=\nR:main.golden\na:0:0:444\nZ:Q1mDnzDAprxVLxPBl86C+WBErs2A4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/lib\nM:0:0:555\nR:lib.go\na:0:0:444\nZ:Q1Zh3XvO+aDBNJp7FlizSsfJZptT4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/lib/sublib\nM:0:0:555\nR:sublib.go\na:0:0:444\nZ:Q1JyybaKcAOiaWSH8cQdbd6zhSQZQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/main\nM:0:0:555\nR:multi.go\na:0:0:444\nZ:Q1RbrnJuKEqC/VkWetBTKstFh5F6s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/peers\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1V064MUxs53siBDekDuX/M+mOkxg=\nR:main.golden\na:0:0:444\nZ:Q1qv45vbli6YxlA7sIXttZfboaqHY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/peers-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1IyHlSO9jiIMcK4o29fgf6Mw0uFo=\nR:main.golden\na:0:0:444\nZ:Q13WVaDjFEsucCIrox7zrdPUXQFpA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/pointsto\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1C+TzhqzXI1A0OSviZs/CJmTmhzM=\nR:main.golden\na:0:0:444\nZ:Q1Vb52BW3bZFU7QKBnQxpK//rgFHg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/pointsto-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1AloAtd745o+Gr/QFOZckDHvyp2o=\nR:main.golden\na:0:0:444\nZ:Q1WA0LvMq4gYHlIYLwF9O5iXna6ZE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/referrers\nM:0:0:555\nR:ext_test.go\na:0:0:444\nZ:Q1FQ5x7EDWIX++lBTKkoRw0EqZHe8=\nR:int_test.go\na:0:0:444\nZ:Q1VX0M7yboY4qyv+uSuO6y9V+cVMU=\nR:main.go\na:0:0:444\nZ:Q1VuuWhaxDPQzTEfC+VFGBcaNzG9I=\nR:main.golden\na:0:0:444\nZ:Q1ipzDz2CkfsTVykqqAOejjhgFOhI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/referrers-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Qu+Nq7BVXn+wp+2WiW1Evl61UWo=\nR:main.golden\na:0:0:444\nZ:Q13xySV8z/WssKTLSP/TKgfhonP5A=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/reflection\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1ajx5oil1Qo32JXSj2mz8PdJ1SbM=\nR:main.golden\na:0:0:444\nZ:Q1AJOQTai8VQSyaYyNC0SFxDz+m2M=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/softerrs\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1fqHf594Vau/tFYPtHd2mxfzC8Tk=\nR:main.golden\na:0:0:444\nZ:Q1gdTUizaV01kI6OnIRq6qrg2P9sw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/what\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1XigPOy3L1sM0OTD05gKdccZ/jcI=\nR:main.golden\na:0:0:444\nZ:Q1YVMx6u8W8+S82gMFuj6jclPkHfA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/what-json\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q13IxKCTSgFMUMq9H0BxByGXNcZ+w=\nR:main.golden\na:0:0:444\nZ:Q1jbjMrcdObMx/M+0fHdgcXJSGIAY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/guru/testdata/src/whicherrs\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1mcXbQxICJDWuQ4TstFselV7xZJo=\nR:main.golden\na:0:0:444\nZ:Q1zr5rK5vtEvgoLDj023rc7JfYGH4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/html2article\nM:0:0:555\nR:conv.go\na:0:0:444\nZ:Q109JWoJXAj/bzOx8iAEWRhIsRNLc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/present\nM:0:0:555\nR:dir.go\na:0:0:444\nZ:Q1Oxi9EBvDSd01muUzYhJ18cC2v1M=\nR:doc.go\na:0:0:444\nZ:Q19V7qgbfswQHBkF3YcEicCBTMhLY=\nR:main.go\na:0:0:444\nZ:Q1nLN50BrjXCorHi5DneB2YkLHQs8=\nR:play.go\na:0:0:444\nZ:Q1V5CbY2pJXSDQ5seRNheDgqTmaxE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/present/static\nM:0:0:555\nR:article.css\na:0:0:444\nZ:Q1A+qzpi+z849qlz3rNqpq1M5VJGw=\nR:dir.css\na:0:0:444\nZ:Q19+KSR5YTayVMI+1Lj4KkKnin7tU=\nR:dir.js\na:0:0:444\nZ:Q198qN2w97rtltqSf0pvi/H0MrUZk=\nR:favicon.ico\na:0:0:444\nZ:Q1DWvG2qKAi+8Ob83wUVJuZ49HsKM=\nR:jquery-ui.js\na:0:0:444\nZ:Q1Qu1gSmviCe95+E4B6FlxhOqkyOw=\nR:notes.css\na:0:0:444\nZ:Q1VhG2jvUVfY811aOdItYs4zvU9e0=\nR:notes.js\na:0:0:444\nZ:Q1ArnqetXuuEpiAunl71pp20Sx698=\nR:slides.js\na:0:0:444\nZ:Q1LPV1g6Ly1Ubd6tNxpW5IHIkopJM=\nR:styles.css\na:0:0:444\nZ:Q13psivjAWo1VysttHIHVNCAKCA0U=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/present/templates\nM:0:0:555\nR:action.tmpl\na:0:0:444\nZ:Q1ZB38CavkWaF02VyJZMtjOHNzTTE=\nR:article.tmpl\na:0:0:444\nZ:Q1XVC/T9VHWcTtar4IogiUufNVXXo=\nR:dir.tmpl\na:0:0:444\nZ:Q1MmtyCaX5kp8G0uqYCdSPt/bkyJA=\nR:slides.tmpl\na:0:0:444\nZ:Q1O/eHt5B83/NeO6UEJNVs82MAoLw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/present2md\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1TevLmTLsd18ZuRDbnfn4mX/WlrA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1ipi8favcr0oSEDI3/brKCxyBR7w=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer/fuzz-driver\nM:0:0:555\nR:driver.go\na:0:0:444\nZ:Q1jH4qvgNsLcLQAOpG5xLPfq6RykE=\nR:drv_test.go\na:0:0:444\nZ:Q1Un0tYTZMR04+ciz1xL8cowM5oOE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer/fuzz-runner\nM:0:0:555\nR:rnr_test.go\na:0:0:444\nZ:Q1y2ER9IFqjGvz+N9JeVliEuH8zQQ=\nR:runner.go\na:0:0:444\nZ:Q15F1WN0GBqS/idw9wVsSMGr4VTvQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer/fuzz-runner/testdata\nM:0:0:555\nR:himom.go\na:0:0:444\nZ:Q17YS13RR4NQfMFjHo1PovrjLoCuQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/signature-fuzzer/internal/fuzz-generator\nM:0:0:555\nR:arrayparm.go\na:0:0:444\nZ:Q1tYowP9IbcdNSSUiVx18vrM4bolM=\nR:gen_test.go\na:0:0:444\nZ:Q1Vd5fqIM9UHSDNup1LsMeVGaoP2k=\nR:generator.go\na:0:0:444\nZ:Q1B5F/nvAGkQKsNoxNqUbB2+e5kS8=\nR:mapparm.go\na:0:0:444\nZ:Q1XhoF4nUXfe9Rt+ZbyuftxMnWTiA=\nR:numparm.go\na:0:0:444\nZ:Q1ZXVoaNK3TQr4FoZImWf6O3fFwyg=\nR:parm.go\na:0:0:444\nZ:Q1H/tMmYp/mK9P8vHRxeLh8fWlWRc=\nR:pointerparm.go\na:0:0:444\nZ:Q12jT98RK9h49IwqRkW9DAJhq1N2I=\nR:stringparm.go\na:0:0:444\nZ:Q1FF/qdspDeMAQJzXC2NnChzFMLpA=\nR:structparm.go\na:0:0:444\nZ:Q1B4dv/mHXeeNiWLw77TZviMWisdg=\nR:typedefparm.go\na:0:0:444\nZ:Q105fKehFRJejNdlkMCwH1xh0Bx+A=\nR:wraprand.go\na:0:0:444\nZ:Q1JjVt4XK6cJ7wtD1Xo4VK3tRRG6k=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/splitdwarf\nM:0:0:555\nR:splitdwarf.go\na:0:0:444\nZ:Q1LRGGlUIjsw4O1n+Q95XQA1VDzK4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/splitdwarf/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/splitdwarf/internal/macho\nM:0:0:555\nR:fat.go\na:0:0:444\nZ:Q1YUriPOplydGcu1DUlvJaDNfLb5k=\nR:file.go\na:0:0:444\nZ:Q1lFvmyf64RWYV4XSrT3HMR9zxE5s=\nR:file_test.go\na:0:0:444\nZ:Q1HJe1/HSneeRRN+T+5qhUfuhKR28=\nR:macho.go\na:0:0:444\nZ:Q1J952xguJePhXlzvbr8ipQJ+fm6Q=\nR:reloctype.go\na:0:0:444\nZ:Q1VnEvhDG+lRGejkx+rlRVVDWX5nM=\nR:reloctype_string.go\na:0:0:444\nZ:Q1NsGLKyEYJ9gNehezyxkTHcdWq1k=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/splitdwarf/internal/macho/testdata\nM:0:0:555\nR:clang-386-darwin-exec-with-rpath\na:0:0:444\nZ:Q1mkprzY3HF8TK3Lkc0/ViYBlK8Ok=\nR:clang-386-darwin.obj\na:0:0:444\nZ:Q14iK2xiFn/0FVo8AYfVj2odRwOX0=\nR:clang-amd64-darwin-exec-with-rpath\na:0:0:444\nZ:Q1i6YHNQU/sqvDFdYzGXqxY0N2cHc=\nR:clang-amd64-darwin.obj\na:0:0:444\nZ:Q1CD1CHmotxuPCRoES8Dq88T5AUkU=\nR:fat-gcc-386-amd64-darwin-exec\na:0:0:444\nZ:Q1WLmFyH7Ugzow0R38OMYp5tm4aQY=\nR:gcc-386-darwin-exec\na:0:0:444\nZ:Q12/WKi12X35f5pZ3D5sE76/gSA58=\nR:gcc-amd64-darwin-exec\na:0:0:444\nZ:Q1nLUggaYwaWs3EEBXx7y3xvFFzAY=\nR:gcc-amd64-darwin-exec-debug\na:0:0:444\nZ:Q1714UwLvQyVYlxP2k5fe4nb0jplM=\nR:hello.c\na:0:0:444\nZ:Q1zXnvoBA8b4TiUYo96OB7NmQvRpA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/ssadump\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1BeR4Uqnhj3EVLhq9Km8z1PQHd8U=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/stress\nM:0:0:555\nR:stress.go\na:0:0:444\nZ:Q19Dq01oymhm0Sf8T4VL2HokTewAw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/stringer\nM:0:0:555\nR:endtoend_test.go\na:0:0:444\nZ:Q1sIH/gfT1nJF2lBxtg8OzlWT+lSM=\nR:golden_test.go\na:0:0:444\nZ:Q1xSfNby1Zd6RxIdc848WS4oXbiHo=\nR:stringer.go\na:0:0:444\nZ:Q1i/G7CKPbana4jTYrdcMMXSA82dA=\nR:util_test.go\na:0:0:444\nZ:Q1NnkxTDaYRdZYtTYFTxS91sm2Ssw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/stringer/testdata\nM:0:0:555\nR:cgo.go\na:0:0:444\nZ:Q1sgJl0KjtMwrh6CxJikNGLEVFTGI=\nR:conv.go\na:0:0:444\nZ:Q1DxJGek86u08WJuS2JRKWMW3lWYM=\nR:day.go\na:0:0:444\nZ:Q1ger7x6AAV/IH+hun6UZQkT5sTjc=\nR:gap.go\na:0:0:444\nZ:Q11/cM94vqo/PwfYHq7bGqEf3x2QY=\nR:num.go\na:0:0:444\nZ:Q1BqnjX8zRWN8bUPJc7czyiQGyyvs=\nR:number.go\na:0:0:444\nZ:Q1+GSq8bSM8sSfe5KvILU/mP5eR3g=\nR:prime.go\na:0:0:444\nZ:Q1Mhj61YxaropkURjsbLjBEKRkets=\nR:tag_main.go\na:0:0:444\nZ:Q1d+0cY0kXRSbW0dTgg2oxS4kp/8w=\nR:tag_tag.go\na:0:0:444\nZ:Q1KUn0mXWZSXwobVbGV4wultVRnL8=\nR:unum.go\na:0:0:444\nZ:Q1VHvLkxTHRiNEGeeChndHMuOl/58=\nR:unum2.go\na:0:0:444\nZ:Q1O20fabK8l3XbAJ83bYziQeMXK7M=\nR:vary_day.go\na:0:0:444\nZ:Q1Am4QPI6nT/fWu1SOj9+I1YIcIvk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/stringer/testdata/typeparams\nM:0:0:555\nR:conv2.go\na:0:0:444\nZ:Q1Dyw0YPJmzwyW4VfRt5EI3gWCL9c=\nR:prime2.go\na:0:0:444\nZ:Q1i4IlAiOPR0XybyxtImPQJ3Sq1EE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cmd/toolstash\nM:0:0:555\nR:buildall\na:0:0:444\nZ:Q1tyi1bz3RsbK/Mzl9yjIaAyozJpo=\nR:cmp.go\na:0:0:444\nZ:Q1lbN7kH52OLyXgPqa3XAP6wZq0so=\nR:main.go\na:0:0:444\nZ:Q1m8LO5kCxaRk77+mGJanWQIcnp4A=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/container\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/container/intsets\nM:0:0:555\nR:export_test.go\na:0:0:444\nZ:Q1XXdo0PLLuBmsWAr5TwjUkaSw/2o=\nR:sparse.go\na:0:0:444\nZ:Q1Uw9LmWV2e/uyItNMJJLSKLD6j5Q=\nR:sparse_test.go\na:0:0:444\nZ:Q1hIb0AJtNlOigz+eFS1c1CT8+0sU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/copyright\nM:0:0:555\nR:copyright.go\na:0:0:444\nZ:Q1OCrXzWfjaIuL1OqVfNDGu012MGY=\nR:copyright_test.go\na:0:0:444\nZ:Q1sUNFPwN4p9AHpCmwKPj20/QsSz8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/cover\nM:0:0:555\nR:profile.go\na:0:0:444\nZ:Q1E9snWfCISCvO9hY3jRJcnVZf/mQ=\nR:profile_test.go\na:0:0:444\nZ:Q1R06eTnT40yo1RYlHhjV+Q6J48hs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis\nM:0:0:555\nR:analysis.go\na:0:0:444\nZ:Q1p0aOTODJ7JQExEjDxMSwwSIUp5k=\nR:diagnostic.go\na:0:0:444\nZ:Q1D/qcrEL5BCH1zl+TZw8AQVsLG0g=\nR:doc.go\na:0:0:444\nZ:Q17h1Tjdh5CVPMPt3pVv4uHD8wfYA=\nR:validate.go\na:0:0:444\nZ:Q1ysTYUH6K/x8PfvDaoOlCuF96iDo=\nR:validate_test.go\na:0:0:444\nZ:Q1u/A1pkKqo8D4wjDMthunrODVV0Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/analysistest\nM:0:0:555\nR:analysistest.go\na:0:0:444\nZ:Q1DLNQkvPrkSNVvSNxSZ6Mo2x12ng=\nR:analysistest_test.go\na:0:0:444\nZ:Q1lXL136q3B0sg1JGo45iXkTe+S+Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/doc\nM:0:0:555\nR:suggested_fixes.md\na:0:0:444\nZ:Q1DhLxyS5vkxA/CjAJqKtenIzFl5o=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/internal/analysisflags\nM:0:0:555\nR:flags.go\na:0:0:444\nZ:Q1Aj+NChrJ9M0KoTda3Eqs7PSYoSo=\nR:flags_test.go\na:0:0:444\nZ:Q1JtGJUSJWDr08D27YaVFXKHV11/s=\nR:help.go\na:0:0:444\nZ:Q12XwmcDJiVcjJwdNcTfiVWnKt7O0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/internal/checker\nM:0:0:555\nR:checker.go\na:0:0:444\nZ:Q1hRRpMpMj1Aue8x6rKdciVmCzJZM=\nR:checker_test.go\na:0:0:444\nZ:Q1Y7+KY6So5G2m3sqNgLny0NsrXsw=\nR:fix_test.go\na:0:0:444\nZ:Q1QoT7C8mNa6nmNiF4u3AKD7OPzWU=\nR:start_test.go\na:0:0:444\nZ:Q1OjSt7jG1jZAQ38cPPGB3m9Q3YQI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/multichecker\nM:0:0:555\nR:multichecker.go\na:0:0:444\nZ:Q1f5ISq3TQxIDAN9Ln4I0e/NMcIfI=\nR:multichecker_test.go\na:0:0:444\nZ:Q1zB8aPf7wOGXG1h2SUucfOjYlmqs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1WcqG7rfsvMh0GnbF0UcQFzQd8+Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/asmdecl\nM:0:0:555\nR:arches_go118.go\na:0:0:444\nZ:Q1JpsI6kXbslqONKYzCKBRbMNlP3w=\nR:arches_go119.go\na:0:0:444\nZ:Q1gCsfWQc3anN0SZGFXwNFWZbcc/8=\nR:asmdecl.go\na:0:0:444\nZ:Q1pli/F5MiRU2Ij+Tn7Bx440DTOrU=\nR:asmdecl_test.go\na:0:0:444\nZ:Q1BWIJfxgBc1jmtEUqIH20eAbBhqs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/asmdecl/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/asmdecl/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/asmdecl/testdata/src/a\nM:0:0:555\nR:asm.go\na:0:0:444\nZ:Q1E39EHo2zdqqkcs2BzfySSbmYCcA=\nR:asm1.s\na:0:0:444\nZ:Q1zFTPSOyxoXwTG0xrAFLtHTIx+uM=\nR:asm10.s\na:0:0:444\nZ:Q1CJZaI/XFzXrmGirBAnQIIyKQq0k=\nR:asm11.s\na:0:0:444\nZ:Q1rGLZHnTuD0HqeSQ/juo+QEvvU3M=\nR:asm2.s\na:0:0:444\nZ:Q1cJS3V/UBLDhZOIA6353atfHuOGk=\nR:asm3.s\na:0:0:444\nZ:Q1S9HizDPJqV2Yd1f0QOl03eHNFBI=\nR:asm4.s\na:0:0:444\nZ:Q1754I+bMQSjnWx+Trh+hQfaXOSCg=\nR:asm5.s\na:0:0:444\nZ:Q1SwQdeoPMs/AQ3VxUTb6vndQp6SY=\nR:asm6.s\na:0:0:444\nZ:Q1K9wwm+v7dyBqQgnEuZvLddG394w=\nR:asm7.s\na:0:0:444\nZ:Q1YrIaDv2LJHEWnwqv8XImp1FZqKQ=\nR:asm8.s\na:0:0:444\nZ:Q1qg25nZc57+SthWB70vuG0Iuom3Y=\nR:asm9.s\na:0:0:444\nZ:Q1Md1wtYo01W+TJkI7rZG/+oUTkiA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/assign\nM:0:0:555\nR:assign.go\na:0:0:444\nZ:Q18MOhkjdvsCRGW6hxZ5q2TDwy+RQ=\nR:assign_test.go\na:0:0:444\nZ:Q1aIlXanFWZQ3eSqvyOl4DRBZrgvg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/assign/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/assign/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/assign/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1czQ+1YJmNlx//1BTw8PPS+/Sw8c=\nR:a.go.golden\na:0:0:444\nZ:Q1z8hR/Ky5z02ogAUX4yTxQtwYHb0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/assign/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1pWNP74WNQk7s+lz/rJ2CLm3Izzo=\nR:typeparams.go.golden\na:0:0:444\nZ:Q1BXuaS7tho/M12fp3Gp+lBK6EGtA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomic\nM:0:0:555\nR:atomic.go\na:0:0:444\nZ:Q1SIeFyhEchOoeiH/NL0FtK1DBAAE=\nR:atomic_test.go\na:0:0:444\nZ:Q17VFnbA2NkLRYHvv18DvyTjav2rk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomic/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomic/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomic/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q14Pf5Iv9DRvwSrGsvymOu+jJuU5g=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomic/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1BeSAmDRMS4xECoDlI5eUyb/1TVw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomicalign\nM:0:0:555\nR:atomicalign.go\na:0:0:444\nZ:Q1fw6W9E/qcQ+OjWn/FH+2tsqgQ4k=\nR:atomicalign_test.go\na:0:0:444\nZ:Q1vPhLptB2vgg8rFywkaKDh2Q1muk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomicalign/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomicalign/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomicalign/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1ovXmuYBFoEMNbDglNOQU4nWyjd0=\nR:stub.go\na:0:0:444\nZ:Q1wTHcu54xSy7GNJ6L2HrfFr7Og48=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/atomicalign/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q13l4og+2uvAmx03cTCZLiv7qktYI=\nR:stub.go\na:0:0:444\nZ:Q1wTHcu54xSy7GNJ6L2HrfFr7Og48=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/bools\nM:0:0:555\nR:bools.go\na:0:0:444\nZ:Q1c/++fUHToRYdE6YTagbJnXf5u2w=\nR:bools_test.go\na:0:0:444\nZ:Q1O5EYaHwjGkDHaRg20wK+8zlzKYA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/bools/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/bools/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/bools/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1/Tu9FH+NwSDshnm+FvAnKiDOggY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/bools/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1xKAS4V1PM/EuLPOetVvRXGpuoS4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa\nM:0:0:555\nR:buildssa.go\na:0:0:444\nZ:Q103k4Kwzw0D8sh58Ti8B4ftiNh5U=\nR:buildssa_test.go\na:0:0:444\nZ:Q1qK3m4KFQzH1exEa/83zlwxAsnfI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1e1hY7gb6ITAhxhGGre4h85rdchg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1nLDG9i/K5jYJRL5fVmMC2yoXTCw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildssa/testdata/src/c\nM:0:0:555\nR:c.go\na:0:0:444\nZ:Q1x9LXlvDZ1GIGQpEhySWKWJcWftg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildtag\nM:0:0:555\nR:buildtag.go\na:0:0:444\nZ:Q1DfjWTgQLDBXf5Xb/wRkPtDIcYHU=\nR:buildtag_old.go\na:0:0:444\nZ:Q1FurGvfjzXY5qSlGudyWB/PEEutc=\nR:buildtag_test.go\na:0:0:444\nZ:Q1KIQeIPr1xxMNsuP9fsMCYVe+Vbc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildtag/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildtag/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/buildtag/testdata/src/a\nM:0:0:555\nR:buildtag.go\na:0:0:444\nZ:Q1qQKJV69rBBijjxojzQupRmT4G/Q=\nR:buildtag2.go\na:0:0:444\nZ:Q10rFsbOJINuXAftQKBjXlWGR3/2k=\nR:buildtag3.go\na:0:0:444\nZ:Q1IwAOlypQdTcImaLl3Ob1nj+VgVU=\nR:buildtag4.go\na:0:0:444\nZ:Q1rQ5GJ+SQjnAe62NqYLOnVuEGRFI=\nR:buildtag5.go\na:0:0:444\nZ:Q1pYYs5Yl7tVDgkn2EIKagyNw22Jo=\nR:buildtag6.s\na:0:0:444\nZ:Q1UUVsQQwu+m+te3XSABwTKYtjDmI=\nR:buildtag7.s\na:0:0:444\nZ:Q1akZ47SL5IqZhUUmGDCEWquwlTIU=\nR:buildtag8.s\na:0:0:444\nZ:Q1ORoD+vqJ0H163hAR/qfpS5XJRHE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall\nM:0:0:555\nR:cgocall.go\na:0:0:444\nZ:Q12ITGdlEz0Iu0v/xFL7xmxC4SfJI=\nR:cgocall_test.go\na:0:0:444\nZ:Q1GtYgeX0CBrEm2cRNh5UY5GbW5Ko=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata/src/a\nM:0:0:555\nR:cgo.go\na:0:0:444\nZ:Q1eAykL180+UvXf0RPb+6iTT/vrU8=\nR:cgo3.go\na:0:0:444\nZ:Q1z4nlHZWeSx4kbqLmNbND54sKYz8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1GG6U/b5CZylu6YbUXHoK6CfkWFg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata/src/c\nM:0:0:555\nR:c.go\na:0:0:444\nZ:Q1QZx9uRS+kl3WVl6LobIJcJ0rCjk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/cgocall/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1eWPiCycQU8QBnH+b0lzSCNXzwa8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite\nM:0:0:555\nR:composite.go\na:0:0:444\nZ:Q1c6cYg9HCftpRY0Fpkq86RQ5nMz4=\nR:composite_test.go\na:0:0:444\nZ:Q1VBKiO6gTNkoebP4quwVuUhmm0fU=\nR:whitelist.go\na:0:0:444\nZ:Q1jYbzZXFUtzpFTBVN9LI6VstZxWI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q10M+vfUocsGbD9VQAMikpQf/rYiU=\nR:a.go.golden\na:0:0:444\nZ:Q1Wg4umxTWTr8So5sRkCFFQ1QYP1U=\nR:a_fuzz_test.go\na:0:0:444\nZ:Q17WaBYnk4ZlQ6MI1x1J9ehLCypZw=\nR:a_fuzz_test.go.golden\na:0:0:444\nZ:Q17WaBYnk4ZlQ6MI1x1J9ehLCypZw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1SvdA/YpohMe4sqrGVnWmSk0w7O8=\nR:typeparams.go.golden\na:0:0:444\nZ:Q17OqETXzWIH5cytDb2jDgFlSkHkk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/composite/testdata/src/typeparams/lib\nM:0:0:555\nR:lib.go\na:0:0:444\nZ:Q11n3N8KW7glhoDS+M9OFs5VNYTi8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/copylock\nM:0:0:555\nR:copylock.go\na:0:0:444\nZ:Q1RKvKPI33zPP6ralxC3qNPrFhwhI=\nR:copylock_test.go\na:0:0:444\nZ:Q12ott7cKQRDQp+fZ1n+Y8/+cykqc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/copylock/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/copylock/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/copylock/testdata/src/a\nM:0:0:555\nR:copylock.go\na:0:0:444\nZ:Q1YhbvAyFnQt4g+ScevHToJp3RmTg=\nR:copylock_func.go\na:0:0:444\nZ:Q19985Oh5tiDSnqvse1VYP84vGUhc=\nR:copylock_range.go\na:0:0:444\nZ:Q1/ZpvLrdR/RpUvckMnYt7rSUtGVw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/copylock/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1mJs53zT0TwF0mm2cAkXVF+U0/04=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow\nM:0:0:555\nR:ctrlflow.go\na:0:0:444\nZ:Q1kmgf6h2y+b3nptdvPOTuw4TAGR0=\nR:ctrlflow_test.go\na:0:0:444\nZ:Q1XCxCNTKiHvfOnsTei9gxQH9Lz/Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1PaPWdVnqYqeyiFbCKw5K5c9wDUg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow/testdata/src/lib\nM:0:0:555\nR:lib.go\na:0:0:444\nZ:Q14x0q8fEXeddSJYAAYB7qCNn8zpM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ctrlflow/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1DTvbM5L5iApTJV4LGvRO2WG3Gx4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/deepequalerrors\nM:0:0:555\nR:deepequalerrors.go\na:0:0:444\nZ:Q1rZ1V2AzOC5ikjQfV759vZfQ8ABw=\nR:deepequalerrors_test.go\na:0:0:444\nZ:Q1iUscL9VfOBfPvE1RYxvy01i/awc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/deepequalerrors/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/deepequalerrors/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/deepequalerrors/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1nVNaxpU0+lRxg/2x+zxq2x/ZdXs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/deepequalerrors/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1mPqP0ypE1y/NJEE/dRsUWo59m/A=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/errorsas\nM:0:0:555\nR:errorsas.go\na:0:0:444\nZ:Q1AhkJ6dtYvLmXDPnwKbZSOJoo8D8=\nR:errorsas_test.go\na:0:0:444\nZ:Q1QT4GUvUP5WfhvMgCYZRvuxAWOZ8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/errorsas/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/errorsas/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/errorsas/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1SiQHXmLy7rL41Uclbx/7nNn2vEo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/errorsas/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1JebwhGB6lA+Xk2leAsXXDh1GQMY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment\nM:0:0:555\nR:fieldalignment.go\na:0:0:444\nZ:Q1JhBgVtq37AxinTo3C7vBEsRZvDM=\nR:fieldalignment_test.go\na:0:0:444\nZ:Q1KvKlNLwKp+9sG6H0qeCMqZbLenc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment/cmd/fieldalignment\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1s0gRczEEii5MPUitBOO9hMGJ7yI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/fieldalignment/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1UKBRgQshZEFq6hud/6h9cWSCujY=\nR:a.go.golden\na:0:0:444\nZ:Q143QgVOY9KXVny/XDNsBsYXdOBHU=\nR:a_386.go\na:0:0:444\nZ:Q1jB3qGzxF4g7AIjRCrZxqj565UrQ=\nR:a_386.go.golden\na:0:0:444\nZ:Q1wy5V+oy7uUNgiBDqpUYIzNU8UyY=\nR:a_amd64.go\na:0:0:444\nZ:Q1pZGsNhUHqamWKruLlpDYR2jvi0Q=\nR:a_amd64.go.golden\na:0:0:444\nZ:Q192h2jkUUofOXynLZ5W3fM1dCbxk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall\nM:0:0:555\nR:findcall.go\na:0:0:444\nZ:Q1PWgyjL6Vx182IuR6elxpslfvTK0=\nR:findcall_test.go\na:0:0:444\nZ:Q1B36+5sFea+7lvIJySVznn6RHd7k=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall/cmd/findcall\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1SEWp/N++TfrtGeBqWEgpEhCN2EM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/findcall/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1lBrNBA5qu1IZQlCEHO8+j9I9kwE=\nR:a.go.golden\na:0:0:444\nZ:Q1z0/AC3nCKmUrVpUApis8lIABWoc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/framepointer\nM:0:0:555\nR:framepointer.go\na:0:0:444\nZ:Q1ClWfSS84SyxRZf+4xwoy2mD0q+U=\nR:framepointer_test.go\na:0:0:444\nZ:Q1qNK6DTaiXuGEVLPK1lUowc5E7/U=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/framepointer/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/framepointer/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/framepointer/testdata/src/a\nM:0:0:555\nR:asm.go\na:0:0:444\nZ:Q1DZkgOyitwDtub3LbP4rQYbY35cc=\nR:asm_amd64.s\na:0:0:444\nZ:Q15UmHKBh2ctvexXTeQXr9wUegC1M=\nR:asm_darwin_amd64.s\na:0:0:444\nZ:Q1/duZsPRQbNQb0iCtG0wlFbwMrj0=\nR:asm_linux_amd64.s\na:0:0:444\nZ:Q1/duZsPRQbNQb0iCtG0wlFbwMrj0=\nR:asm_windows_amd64.s\na:0:0:444\nZ:Q15hP96DqT4TO8ntTGQ7B3FW41q9A=\nR:buildtag_amd64.s\na:0:0:444\nZ:Q1UR6oHfHO4yq8+5kFgV5FGn8JM60=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/httpresponse\nM:0:0:555\nR:httpresponse.go\na:0:0:444\nZ:Q1s1a8xEgtgrAa2B9PVP5U97iINic=\nR:httpresponse_test.go\na:0:0:444\nZ:Q1gzxcamcVLPBrhlfFt9Cd9xZ3uJ4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/httpresponse/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/httpresponse/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/httpresponse/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1wopa327ldcgK3ulpH/ioo0O6Pvo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/httpresponse/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q181cOsA5sE3uORQiMZZb7dUd79ZU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert\nM:0:0:555\nR:ifaceassert.go\na:0:0:444\nZ:Q1l0YOIRBupgQinPe6YAt+mHpqJos=\nR:ifaceassert_test.go\na:0:0:444\nZ:Q1rh8h0Ui5oLzbyrsSRZ7HBe2K/mE=\nR:parameterized.go\na:0:0:444\nZ:Q1mt7chvvWw/4Q2mDnWl/NfvxWoRg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/cmd/ifaceassert\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15B5AWX4lMuishnA0w/CZ91/6G7E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1AFWGSkCssi5h2fHTwihrXW8xQ50=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/ifaceassert/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1CpCg1xV+LX0PD4L9pZO5Uj0wJT8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/inspect\nM:0:0:555\nR:inspect.go\na:0:0:444\nZ:Q1EDggHBoTeQJGN3AaYUn3vpvJn5I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/internal/analysisutil\nM:0:0:555\nR:util.go\na:0:0:444\nZ:Q1+BaiYB+aAivXhwL8X8yOTqWmQh8=\nR:util_test.go\na:0:0:444\nZ:Q1Z4EeT4qdlIZZo/xDTuTfTXEByPM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure\nM:0:0:555\nR:loopclosure.go\na:0:0:444\nZ:Q15q31TbWBONYj2WFVeVCzn9v9Vb0=\nR:loopclosure_test.go\na:0:0:444\nZ:Q1MTp9co/Ip+VW2t2JiLaAcXuOPg4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1oD5YFWmVetndK/zWBPHYPQKfAss=\nR:b.go\na:0:0:444\nZ:Q1meNJWPZvQeHY6q/UhAiGS/1Ruww=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/golang.org\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/golang.org/x\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/golang.org/x/sync\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/golang.org/x/sync/errgroup\nM:0:0:555\nR:errgroup.go\na:0:0:444\nZ:Q1vRWAb83iEE/KfBtPrFkQIzePFWk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/subtests\nM:0:0:555\nR:subtest.go\na:0:0:444\nZ:Q1U1KzQK4Gn0DbA3Zng5KUJwOAGpI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/loopclosure/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1yOGP7Ee9abrARY4L0+0CL8tSuNI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel\nM:0:0:555\nR:lostcancel.go\na:0:0:444\nZ:Q10nWHMIhADUOYOwlGXqQW34UfVF0=\nR:lostcancel_test.go\na:0:0:444\nZ:Q1SCtUPi8938DxwexPluO7G6rjvvs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/cmd/lostcancel\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q19sU0Kj4H/e1wFOadEl6OiSi3RFE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q10TaKzb7XBxfKNv6FjJe3R6/yD6s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1d0uqirbark/E/N9kGG36JpMtIUk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/lostcancel/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1a2tNwJdtw5I1rtFOCiRxfUs+4AA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilfunc\nM:0:0:555\nR:nilfunc.go\na:0:0:444\nZ:Q1PU+kpTlOlqfjhUnslhDC6cORq1c=\nR:nilfunc_test.go\na:0:0:444\nZ:Q1anfMC4RaoCSOP0IUPzzuBlOqOjI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilfunc/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilfunc/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilfunc/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1TGAGsXz+4+fNZRcMCPwRNw/WmZM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilfunc/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1sUKdM7bOWKEUuxXEaIQQcRKKQ7Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness\nM:0:0:555\nR:nilness.go\na:0:0:444\nZ:Q1ZVZfpHLmhajeu1+l464Mi8B3beQ=\nR:nilness_go117_test.go\na:0:0:444\nZ:Q1dVlql/XBmUMfuPea9bABpjxJ6Zw=\nR:nilness_test.go\na:0:0:444\nZ:Q1c0t/IbTbxMwI07wlV4M3W+040jU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/cmd/nilness\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Jifne1XtNg+yXWfP8IPgIPE62S8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1XG7/j2kJ2CC76BzVSrbaAHC9nlc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1UNUXJs3Khg2OpuybMO7mOB8YRI8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/nilness/testdata/src/c\nM:0:0:555\nR:c.go\na:0:0:444\nZ:Q1CTXQKCH2e1vNA3zzkvFFf6WCGRw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact\nM:0:0:555\nR:pkgfact.go\na:0:0:444\nZ:Q1hWJNOv2IKN7fIxYdGDzO9HqiOzo=\nR:pkgfact_test.go\na:0:0:444\nZ:Q1m/5e9k03lQadb60acR0inRWEFzs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1itLGtqntdaV2mv0rXNpQxw9pRPE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1+AIe2+tObs9WRlYf30r002DCT60=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/pkgfact/testdata/src/c\nM:0:0:555\nR:c.go\na:0:0:444\nZ:Q1Y1UrRdEmbrAtO5Xf4M8x+cHy8eA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf\nM:0:0:555\nR:printf.go\na:0:0:444\nZ:Q1SUdXP3CpdqNTH7R1HnnAzhfmf/s=\nR:printf_test.go\na:0:0:444\nZ:Q1ixC5V3zNwoXZEGFQtyXKluKCVVY=\nR:types.go\na:0:0:444\nZ:Q1AlHrYmfOlQxBLxKVgTPqH88lGSM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1XP+incc5NLOeUm67k1U+VxPp4cM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1YJ2+UeVkdQLWXntZNja8GOa3khI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata/src/nofmt\nM:0:0:555\nR:nofmt.go\na:0:0:444\nZ:Q1fa7aZTavIicpK1pxzS8aBQC9kOE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/printf/testdata/src/typeparams\nM:0:0:555\nR:diagnostics.go\na:0:0:444\nZ:Q1Bayi8AiVQja7xNEyDC8xjE6qzN8=\nR:wrappers.go\na:0:0:444\nZ:Q1zbOK8/KOQFCE2L4jQHDg5vMnBXE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/reflectvaluecompare\nM:0:0:555\nR:reflectvaluecompare.go\na:0:0:444\nZ:Q1X6A1E+/lHh59t5iDZyENPw0gD70=\nR:reflectvaluecompare_test.go\na:0:0:444\nZ:Q1b2+KxDYvUpXpp4GonA71L1QYCEc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/reflectvaluecompare/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/reflectvaluecompare/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/reflectvaluecompare/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q12ARuuLpyPYdDOtgOlbW0WW3N3cc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow\nM:0:0:555\nR:shadow.go\na:0:0:444\nZ:Q1/BKuBaPNfOOJqb9q5RzKQ5e+SF0=\nR:shadow_test.go\na:0:0:444\nZ:Q1/nw/GBrHbqgO6TcgXyduMBSjdJ0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow/cmd/shadow\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1ia/s9dM7ccilzXaBrvkkgAgtZdU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shadow/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1ct769lv0N5FXONupQhGYAjrrwNY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shift\nM:0:0:555\nR:dead.go\na:0:0:444\nZ:Q1rpMFsZTiF+7XpJmEQQnQszp/ke4=\nR:shift.go\na:0:0:444\nZ:Q1/uD4TPA8AaVCNzfiw4Ii7kd9dPI=\nR:shift_test.go\na:0:0:444\nZ:Q1FeL5+GCUoyhc0v7F2QixE+x5b6c=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shift/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shift/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shift/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q13vbES267pvuSfHCShX7XcFFAorM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/shift/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1xtpS8Lqv2h8VNwYFQYILx1kJq3g=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sigchanyzer\nM:0:0:555\nR:sigchanyzer.go\na:0:0:444\nZ:Q10x4RiXqaGM2WQzilxGrn1RQOKf4=\nR:sigchanyzer_test.go\na:0:0:444\nZ:Q1K6QMlxH2jGB7MhmrAMYj9Q8RRx0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sigchanyzer/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sigchanyzer/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sigchanyzer/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1pYNGrH8P2cbqlR5gCGUTSAxHA1I=\nR:a.go.golden\na:0:0:444\nZ:Q1Y4BI5aA+JGrKgFPQZk8NQ+3VW8o=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sortslice\nM:0:0:555\nR:analyzer.go\na:0:0:444\nZ:Q1qnD6nn/wBf+/ZSy1E7daWJBc86o=\nR:analyzer_test.go\na:0:0:444\nZ:Q1sbloBy7s1qtZTB4YsfUVmcgWKK0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sortslice/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sortslice/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/sortslice/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1UaKDOn6Hesz4j/HinO38FOY/fa8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stdmethods\nM:0:0:555\nR:stdmethods.go\na:0:0:444\nZ:Q19K83JTLH3VIhBiCLbHpN1UEMbYc=\nR:stdmethods_test.go\na:0:0:444\nZ:Q11R37olyGwvMAy1XipiPg/B9ve30=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stdmethods/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stdmethods/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stdmethods/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1HVCUZ5/E7H8S0tySoNBnuSpexTc=\nR:b.go\na:0:0:444\nZ:Q1ekKfQXeirQ0fDwfEUgyV4VGt9js=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stdmethods/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1C1rTcRjMMORs1q0d6uBBM/Sgk4U=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv\nM:0:0:555\nR:string.go\na:0:0:444\nZ:Q13X0RRUykvJf17v7JcT3viD/Gd2w=\nR:string_test.go\na:0:0:444\nZ:Q1aJe8k+88aiYdVJeCSZRclYpAfko=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/cmd/stringintconv\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1/+hXhaeUpKy4tJb3oc16ng+5WGw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1WbaeIwzdeo9LIIDKGOoyDvW4Xsg=\nR:a.go.golden\na:0:0:444\nZ:Q1RFXgAHLv1MeCYOSeqhPPnmBORhE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/stringintconv/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1zJkPPt6MkzNsk9iMvUJp2+5kctA=\nR:typeparams.go.golden\na:0:0:444\nZ:Q1m65BuJ1hYEFNHo1MhPpUCId6ugw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/structtag\nM:0:0:555\nR:structtag.go\na:0:0:444\nZ:Q1BwRP+0a3laS79ZOb0l9VRwcLyl4=\nR:structtag_test.go\na:0:0:444\nZ:Q1ihEpROa7mH7bxT/xvFl7wNg1IWo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/structtag/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/structtag/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/structtag/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1zFW+19oMPnMUcXsCfmhPgvyxZuo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/structtag/testdata/src/a/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1FSexYG3CDDvupGo3fRD49wDagt8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/testinggoroutine\nM:0:0:555\nR:testinggoroutine.go\na:0:0:444\nZ:Q10jheLU2tqIMVRsafy9HSqexkzFg=\nR:testinggoroutine_test.go\na:0:0:444\nZ:Q14mjm0PNUSLZ5cyELK3JReyCAjMQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/testinggoroutine/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/testinggoroutine/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/testinggoroutine/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1IQTS0MuzISa8OErOOfWzxtrOCXc=\nR:b.go\na:0:0:444\nZ:Q1cfi7TbcaiODjcrpCO0Eeo6TFuvE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/testinggoroutine/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1quvwdxJnDSHfNla/syrKY+uH/gk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests\nM:0:0:555\nR:tests.go\na:0:0:444\nZ:Q1huO9wmDKmcr88TFB+H00H+T1/B8=\nR:tests_test.go\na:0:0:444\nZ:Q1vphk3qzWxN+wUbFYSMW7s5tt5kc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1sLc8CHXg1wnXur0EhMCHNyYv0tM=\nR:a_test.go\na:0:0:444\nZ:Q1lSbgnewpXYdk2PyGc0dbxn5HKVc=\nR:ax_test.go\na:0:0:444\nZ:Q19/OwSRtVWhYO8B4v+wWyyK+G9zE=\nR:go118_test.go\na:0:0:444\nZ:Q1sAUoKreyQRPZYheBLN/8FjUwA7E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1KvxxUaXfVJAELSiq5OF73Rg4U68=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src/b_x_test\nM:0:0:555\nR:b_test.go\na:0:0:444\nZ:Q1UwASPbkHas4B+Fs//PKFgMSbQ4s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src/divergent\nM:0:0:555\nR:buf.go\na:0:0:444\nZ:Q19nxpz9l9q6HcuDXO0yKg8wqwsqQ=\nR:buf_test.go\na:0:0:444\nZ:Q1/Q7ilCpx6lGAtYZBnxVJOS4aJfA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/tests/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1SHPysW9yAJ4OhRPJPoBghnn2SwE=\nR:typeparams_test.go\na:0:0:444\nZ:Q1yGD1VdneCKVD+YuzC15YGacqkYk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/timeformat\nM:0:0:555\nR:timeformat.go\na:0:0:444\nZ:Q1lGxMn7rBI9tDXaV+shF31jCSI/I=\nR:timeformat_test.go\na:0:0:444\nZ:Q1zNZ5N2hVwzBzZBHGTTqYoK77MH4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/timeformat/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/timeformat/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/timeformat/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1qVe0iugqYWmLJaNWb2M3OtfiJhA=\nR:a.go.golden\na:0:0:444\nZ:Q105MYvVCairPGSHQ8LK6oLy8XDss=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/timeformat/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1ou96Je0HlGEer9wVZoclEiLuRv4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal\nM:0:0:555\nR:unmarshal.go\na:0:0:444\nZ:Q1dKDpbFrZrA4wi30hVg4HGVkv4tw=\nR:unmarshal_test.go\na:0:0:444\nZ:Q1aRGR0KJ36uTu8mxiPZSAqbr2wkI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/cmd\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/cmd/unmarshal\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1efgQOeIz5uupZUeqqGnkgUmkvgM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1Pt/ZZuOx3qUOEsd4QFPJXY5eW4s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unmarshal/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1FKwIzAW9hTzPztMg7uHUQsv1NTM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unreachable\nM:0:0:555\nR:unreachable.go\na:0:0:444\nZ:Q1udOW7yGdqoS/b9ZBsDkg/QprsR0=\nR:unreachable_test.go\na:0:0:444\nZ:Q1TzzrKbuz6XU7Ui43b+mA7C4LuvY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unreachable/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unreachable/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unreachable/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1yHXxNRxSWDFySAl5ZG1s0i7nF+4=\nR:a.go.golden\na:0:0:444\nZ:Q1IgCizK1vGYHISiHS0D/M6YeutXA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unsafeptr\nM:0:0:555\nR:unsafeptr.go\na:0:0:444\nZ:Q1psGpcPgaTwLbcTG8Fc/x3WznzU8=\nR:unsafeptr_test.go\na:0:0:444\nZ:Q1LU6FYciRLt10k42O6ev3/ReHBwk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unsafeptr/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unsafeptr/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unsafeptr/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1A6GZBOXaZGmDrmAUPIsRVSU1EUs=\nR:issue40701.go\na:0:0:444\nZ:Q1S/eZkxHGyoAQiUbtVCYKEz5TlRI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unsafeptr/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q1NxIpoWpipItBwjdl1fNO0r3i/BI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult\nM:0:0:555\nR:unusedresult.go\na:0:0:444\nZ:Q1s3QJwBAUzvbd8Z00yGG8H9egUgs=\nR:unusedresult_test.go\na:0:0:444\nZ:Q1t6fKG8A36SDPOcpMRLdy/0yvHZE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1yR/TVtjkeJcp3yHOXgwqaM650Po=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult/testdata/src/typeparams\nM:0:0:555\nR:typeparams.go\na:0:0:444\nZ:Q18binhyPYmDRGQg0b/l1HKvrqJHw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedresult/testdata/src/typeparams/userdefs\nM:0:0:555\nR:userdefs.go\na:0:0:444\nZ:Q1cVJmb3FzOtFrJJHa6/z0sq4egOc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedwrite\nM:0:0:555\nR:unusedwrite.go\na:0:0:444\nZ:Q1lSPd4icE93N0pk8B/6jbS/WSh54=\nR:unusedwrite_test.go\na:0:0:444\nZ:Q1iYkFvY+FLIemFpo0fot01xLtyH0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedwrite/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedwrite/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/unusedwrite/testdata/src/a\nM:0:0:555\nR:unusedwrite.go\na:0:0:444\nZ:Q1Yg9wrZYGEO2YHCVw7nBWzmBx8uo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics\nM:0:0:555\nR:usesgenerics.go\na:0:0:444\nZ:Q1NfwdzkSxlM64HL4039N9f0cERMM=\nR:usesgenerics_test.go\na:0:0:444\nZ:Q1jS2p/Cql7V2Evjgq9tuXnjD9azg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata/src/a\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1TDpZZEp/7aEZjct+mNnJRAm4YgM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata/src/b\nM:0:0:555\nR:b.go\na:0:0:444\nZ:Q1CrOPiJ5ZYougH9TiVKhQ5xa+6pA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata/src/c\nM:0:0:555\nR:c.go\na:0:0:444\nZ:Q1cHNOTyIIPy6Zo0N21LHIJHdh18w=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/passes/usesgenerics/testdata/src/d\nM:0:0:555\nR:d.go\na:0:0:444\nZ:Q1Zc/lPhnulpJF9pqYjVBIOgZUEMw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/singlechecker\nM:0:0:555\nR:singlechecker.go\na:0:0:444\nZ:Q15IDqPYJmWuif9doHHydaapZVI00=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/analysis/unitchecker\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15TdNYx4eI8qF4tn/mT0WcAEV6iU=\nR:unitchecker.go\na:0:0:444\nZ:Q1POrLzKZfRgFzNXY88iQvazMSZaY=\nR:unitchecker112.go\na:0:0:444\nZ:Q1oUHoTWCEHn8IO27qcwMjvY48inE=\nR:unitchecker_test.go\na:0:0:444\nZ:Q1GaNGMJJvqngoGLMkTA2l47LJczY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ast\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ast/astutil\nM:0:0:555\nR:enclosing.go\na:0:0:444\nZ:Q1A4dA8yHhsRAYMpslQtqvp3/qhio=\nR:enclosing_test.go\na:0:0:444\nZ:Q1OwtvaznNRZ8iiAWY6EYKTdmPNd8=\nR:imports.go\na:0:0:444\nZ:Q1dP9DwtXiQnncR+0Yj+nbmUIpbpE=\nR:imports_test.go\na:0:0:444\nZ:Q1/frqKZPYNkK4CkLpipMpjnpapRo=\nR:rewrite.go\na:0:0:444\nZ:Q1XeB7QwlQJWZZRYF95/ZhWyOBSgw=\nR:rewrite_test.go\na:0:0:444\nZ:Q1ETArVG/lA8s+gbdW13Q5+poeyy0=\nR:util.go\na:0:0:444\nZ:Q1//hO3cE6Puz9mGnBqv3KPlXMY7Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ast/inspector\nM:0:0:555\nR:inspector.go\na:0:0:444\nZ:Q1NpFbLoPtpPR8kb3c6HqRo8kaDso=\nR:inspector_test.go\na:0:0:444\nZ:Q1SHbmNtmcQ/h5Rd3YwX4x+Jc9lH0=\nR:typeof.go\na:0:0:444\nZ:Q1Lw3cjAm8/CyMPsFdq2aiLdQ9zek=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/buildutil\nM:0:0:555\nR:allpackages.go\na:0:0:444\nZ:Q1L+DL1cHTP+LpBMhFgoV49Kw/jqI=\nR:allpackages_test.go\na:0:0:444\nZ:Q1/SwUqAMkDkr3MF3lcrbRtE2u8Ew=\nR:fakecontext.go\na:0:0:444\nZ:Q1WrCn1thvDxZ7dhKrwGrIwhO1uXk=\nR:overlay.go\na:0:0:444\nZ:Q1zAoGzyiFjuUXEp2kR00zLRWqIyw=\nR:overlay_test.go\na:0:0:444\nZ:Q14eGuTH6Te4hx4RbtjjGPWflplHc=\nR:tags.go\na:0:0:444\nZ:Q11pFEAL89IIQsA33Q1c9/iqbasQ8=\nR:tags_test.go\na:0:0:444\nZ:Q1k327fjZdgz8XZxNfoW4DE0Yd2zA=\nR:util.go\na:0:0:444\nZ:Q1isuK2hQ3i/blodrVbs2qTBCXhsI=\nR:util_test.go\na:0:0:444\nZ:Q1ixfWTJ5P3QVOdb++psIMUY7fLJ4=\nR:util_windows_test.go\na:0:0:444\nZ:Q1JGVumo/7aa1NWX8zQqgOfAZN638=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph\nM:0:0:555\nR:callgraph.go\na:0:0:444\nZ:Q1mIQJo2E4+FbZRAaF57MTS6FG3o8=\nR:util.go\na:0:0:444\nZ:Q1ralRK5gNoITxN/8ItibyysoemOc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/cha\nM:0:0:555\nR:cha.go\na:0:0:444\nZ:Q1X4cpXSwXXlgioWVNMk9GmcNpOBo=\nR:cha_test.go\na:0:0:444\nZ:Q1qeqx63oHXGd4hlwdFD7JN9N95p0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/cha/testdata\nM:0:0:555\nR:func.go\na:0:0:444\nZ:Q145j9RevODxUy7PSN4w6FUWpRZww=\nR:generics.go\na:0:0:444\nZ:Q1q2FgqdkrMRZN5YG6pRunTIF9tn0=\nR:iface.go\na:0:0:444\nZ:Q1/IsglcUS+/1S/Gu4delnH82kDUU=\nR:issue23925.go\na:0:0:444\nZ:Q1vNkAQTdxbZAk4fnYipZh/TyJLPQ=\nR:recv.go\na:0:0:444\nZ:Q1HuwdhORbkVe4HWiLlzSFA/PS4iw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/rta\nM:0:0:555\nR:rta.go\na:0:0:444\nZ:Q1UcZPeyQhHCuy0mMfbB27eTYc/C0=\nR:rta_test.go\na:0:0:444\nZ:Q1F/phvb6MlAP/GcexqXis/z2CPRI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/rta/testdata\nM:0:0:555\nR:func.go\na:0:0:444\nZ:Q18m6VzfanzMcT4yRc4WfDgFqM2y8=\nR:generics.go\na:0:0:444\nZ:Q1SVn94KmgL/pp4iKHzZouq0ruNbc=\nR:iface.go\na:0:0:444\nZ:Q1W3g5nOYdBar5e1Gp2nazDHFb4Pc=\nR:rtype.go\na:0:0:444\nZ:Q1XZRhg0ak428MgbhtrjaSh0yio08=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/static\nM:0:0:555\nR:static.go\na:0:0:444\nZ:Q1Qy423DJvtGvpqD95oo4UML2QFFQ=\nR:static_test.go\na:0:0:444\nZ:Q1+u30rOoLnOuzLk/UoZ3ekZjkTeE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta\nM:0:0:555\nR:graph.go\na:0:0:444\nZ:Q1WJ3ZlqYIpwcl6nStUqbNFHAvD2k=\nR:graph_test.go\na:0:0:444\nZ:Q1BaZidl18JMpzR1vioRPXec9YMRs=\nR:helpers_test.go\na:0:0:444\nZ:Q19hYX4PYijiiglOicUXLYiejM8G0=\nR:propagation.go\na:0:0:444\nZ:Q1onoA9xpODA20ATaqKrxhMuEZaAk=\nR:propagation_test.go\na:0:0:444\nZ:Q1/0xjCyR6oKEOmlXuCx9QelLFfl0=\nR:utils.go\na:0:0:444\nZ:Q1H9UXm9LnYREak3Z4x5zTE3NzjP4=\nR:vta.go\na:0:0:444\nZ:Q1DhdnFS3BXz9+bhdXmDL8+VEkiZQ=\nR:vta_go117_test.go\na:0:0:444\nZ:Q1ZhUW67T0jZkeU46S+S1hARn2qeU=\nR:vta_test.go\na:0:0:444\nZ:Q1SR3aXC2GfU6hLu9IBRqbs1MCRlY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/internal/trie\nM:0:0:555\nR:bits.go\na:0:0:444\nZ:Q182s528uYUo3MwJwNnF6VlVgMbHw=\nR:bits_test.go\na:0:0:444\nZ:Q1a+tBtlwVucziOcmSuSdY3guf6tM=\nR:builder.go\na:0:0:444\nZ:Q1XnJnAZQJ6/G5u3obZ/SufSNmJ4I=\nR:op_test.go\na:0:0:444\nZ:Q1GXEd5WVQXTAj/MTNLanH32VX15Q=\nR:scope.go\na:0:0:444\nZ:Q17tymce9NsPpx8ZZAnk64kYbR7ss=\nR:trie.go\na:0:0:444\nZ:Q1oP9Ol8wFtFqZuOWv7olFfmlWdyc=\nR:trie_test.go\na:0:0:444\nZ:Q1CMd+hUGru4+aaQskcCP7gjsnob8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/testdata/src\nM:0:0:555\nR:callgraph_collections.go\na:0:0:444\nZ:Q1yOWvF8U348NDevVBLXUS/lFzCE4=\nR:callgraph_field_funcs.go\na:0:0:444\nZ:Q1paLRKft2Gn1AXmhB4NUW93NBJ94=\nR:callgraph_fields.go\na:0:0:444\nZ:Q1d1Ga7y2Iu9DKX/7JfxNOsd3oCtE=\nR:callgraph_generics.go\na:0:0:444\nZ:Q1CdFNNTh4QwsTrXeEdI22/CFLU9Q=\nR:callgraph_ho.go\na:0:0:444\nZ:Q1p5Qv19c1fLf+cvdNhV2wCjU0AqM=\nR:callgraph_interfaces.go\na:0:0:444\nZ:Q18rG7W4NlvVWpvr44RMQgmG1joHM=\nR:callgraph_nested_ptr.go\na:0:0:444\nZ:Q1jpf2DG5tQgYUTfXZHGxQ2HJoNHo=\nR:callgraph_pointers.go\na:0:0:444\nZ:Q1iCkklmGG3kkDpQ5DMiuntJOcY3M=\nR:callgraph_recursive_types.go\na:0:0:444\nZ:Q1df6FkDY8834TsluIQXq4hunDHd8=\nR:callgraph_static.go\na:0:0:444\nZ:Q1FUL6xnfptmKKPIQCD4mi67Iv6r4=\nR:channels.go\na:0:0:444\nZ:Q1NBsnz03JC0yw1dB+9Xax3M1RxkA=\nR:closures.go\na:0:0:444\nZ:Q1B5q2zz/q5Cwfl3BnhxuGEoku9Uk=\nR:dynamic_calls.go\na:0:0:444\nZ:Q1Q0d1/q9rnpDMxGcAiHRARBiVExQ=\nR:fields.go\na:0:0:444\nZ:Q1PQThknK6QYJzId7m9OTAM6p87H8=\nR:function_alias.go\na:0:0:444\nZ:Q1IsYfvXggM8z8tGEhl700VWVfP5w=\nR:go117.go\na:0:0:444\nZ:Q1u1iLyJ1NOOkA4R+Rf5gYaQNnO/M=\nR:maps.go\na:0:0:444\nZ:Q1OzWLVV+1hjqeCXnEFiWnIRSHCAE=\nR:node_uniqueness.go\na:0:0:444\nZ:Q1sWT9ipzry2V2NtHH+uOfe2+PTeU=\nR:panic.go\na:0:0:444\nZ:Q1TnNfu/AsodQwFOn5YWJsPRf0A5o=\nR:phi.go\na:0:0:444\nZ:Q1iYk2CZxv7kGGNM5Or037xDPjR1E=\nR:phi_alias.go\na:0:0:444\nZ:Q1hBbFC5XTDhyuzzc0RUDQz3wszew=\nR:ranges.go\na:0:0:444\nZ:Q1f9YRCZ5ENgiipKbpImgscpbH3H4=\nR:returns.go\na:0:0:444\nZ:Q1BzhyFsNErqI5YcRhWqHAyDs8OUM=\nR:select.go\na:0:0:444\nZ:Q1ln5hpP+KYFqWovj0Sv/HNhFL5lg=\nR:simple.go\na:0:0:444\nZ:Q1Mrl5iIAdlhAplgdG1m2HMPknQMM=\nR:static_calls.go\na:0:0:444\nZ:Q1rjGstnCmzcGt5JZVDXX3oFEM/5c=\nR:store.go\na:0:0:444\nZ:Q1pelNrqEN8I12gH12th/++3Oy90I=\nR:store_load_alias.go\na:0:0:444\nZ:Q1CIYlNUNN149At0mpSeZSyL4ov84=\nR:stores_arrays.go\na:0:0:444\nZ:Q19ciAFS9n9sdd47tyMd3ytKZxT+k=\nR:type_assertions.go\na:0:0:444\nZ:Q1pUNPJr9bUFyvVusqaiRg/XO0FjY=\nR:type_conversions.go\na:0:0:444\nZ:Q1vAIlfnFfANfiua7Gie912edCtGs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/testdata/src/d\nM:0:0:555\nR:d.go\na:0:0:444\nZ:Q1t+Woq9z+SU9sc8ts2hdME9hzBNU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/callgraph/vta/testdata/src/t\nM:0:0:555\nR:t.go\na:0:0:444\nZ:Q1ICo4xSooFgWbK5Y/RNCiW4SfVLY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/cfg\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1gJP3tsyqmxqZpoTqe/3XRhU5id0=\nR:cfg.go\na:0:0:444\nZ:Q1N6K15UOVRo7nbme9fP9CqJFpQuQ=\nR:cfg_test.go\na:0:0:444\nZ:Q1om5p/VbPv3wlODXUQCHUl03AQCE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/expect\nM:0:0:555\nR:expect.go\na:0:0:444\nZ:Q1ttCRyrLwWnvkvLHIVUvyMwHoo+g=\nR:expect_test.go\na:0:0:444\nZ:Q1MaH8wCibponszsQcOdGCwiGzycA=\nR:extract.go\na:0:0:444\nZ:Q1tcwlnTCR5dIJixBI0wUcR5XzxUo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/gccgoexportdata\nM:0:0:555\nR:gccgoexportdata.go\na:0:0:444\nZ:Q1ftKYbkutYWUgPYwNM6dzdgIyhkA=\nR:gccgoexportdata_test.go\na:0:0:444\nZ:Q1SWtb0GsDok+MbFijfKcDrzSC3XE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/gccgoexportdata/testdata\nM:0:0:555\nR:errors.gox\na:0:0:444\nZ:Q19lr4rUelX9WmXngB0BylCrHM0Jw=\nR:long.a\na:0:0:444\nZ:Q1P/i1MxQNq2tGOhFICu5yHGAx6Z8=\nR:short.a\na:0:0:444\nZ:Q1JNSimEOemeWLjPYVB3T23k9KyHM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/gcexportdata\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1NZ4wqlF+aHZgsHhJiI5XZx1BpI8=\nR:gcexportdata.go\na:0:0:444\nZ:Q1+as8GI3hCiCB6y7+EKrA4gwN+j0=\nR:gcexportdata_test.go\na:0:0:444\nZ:Q1wy9LNCgTy+w3GoMouTSEcdqiz44=\nR:importer.go\na:0:0:444\nZ:Q1myW1MPID/daVz+pyD0ZC38j3EKs=\nR:main.go\na:0:0:444\nZ:Q1BdopAYuzTL4HT5bhWfBt5d/0JzQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/gcexportdata/testdata\nM:0:0:555\nR:errors-ae16.a\na:0:0:444\nZ:Q18KCfjbtd35fLvJOZKlAboAz9vLc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/internal/cgo\nM:0:0:555\nR:cgo.go\na:0:0:444\nZ:Q1x6br3lAayAReTacB7mkS3ubrvDM=\nR:cgo_pkgconfig.go\na:0:0:444\nZ:Q1U8+H7SiYr43aERGpTxB/vBLbaeI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/internal/gccgoimporter\nM:0:0:555\nR:ar.go\na:0:0:444\nZ:Q1lxa4bfn79wPCBhMnRSJCnDRlfqA=\nR:backdoor.go\na:0:0:444\nZ:Q1Ur9LBwQIjLS5lQAxJjmrVhgU/zQ=\nR:gccgoinstallation.go\na:0:0:444\nZ:Q1cyLkN66Ts/sRomjYWrGiAqKFRZE=\nR:gccgoinstallation_test.go\na:0:0:444\nZ:Q15g+AR6aA4AkgWAMIpLWCbPtP6vg=\nR:importer.go\na:0:0:444\nZ:Q1WJg+gkA8vuRjhERW2EtfjUWqtl8=\nR:importer_test.go\na:0:0:444\nZ:Q1iWQELZnPgd/S/H6de35TBejz2Yw=\nR:newInterface10.go\na:0:0:444\nZ:Q1WRCF+Q9Jk6wRgAfmJDxO07D9nzY=\nR:newInterface11.go\na:0:0:444\nZ:Q16KDYwiPGIoI5YAdOg8OqW/FMOUE=\nR:parser.go\na:0:0:444\nZ:Q1UISxXQmG26nGCwuvTnYBxzHYIY8=\nR:parser_test.go\na:0:0:444\nZ:Q1YMk67HD0y/o78N7A17Eq/iFs57M=\nR:testenv_test.go\na:0:0:444\nZ:Q1gtXxaDjdUEZe4iwFjP2qNb8T41c=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/internal/gccgoimporter/testdata\nM:0:0:555\nR:aliases.go\na:0:0:444\nZ:Q1Z4oQHdSb2HDYuZIA0OnvQBPO7KM=\nR:aliases.gox\na:0:0:444\nZ:Q1nsNB9X8pUuhxFAx2IlknMScb7Ek=\nR:complexnums.go\na:0:0:444\nZ:Q18rUVFJ4QiRzRDAzszGVi237RY00=\nR:complexnums.gox\na:0:0:444\nZ:Q1oMxHhPTkwjNVXSdNWV2FXewKs7c=\nR:conversions.go\na:0:0:444\nZ:Q1zOd4CQFgq+QXEkKv84UM0E9H15U=\nR:conversions.gox\na:0:0:444\nZ:Q1jUVPBtzyEYqvHOS2xv4BkArG/uE=\nR:escapeinfo.go\na:0:0:444\nZ:Q1Su9RVJri9WOJeaRjS+qH2a/cZLk=\nR:escapeinfo.gox\na:0:0:444\nZ:Q1nq1sWb9aif9mwGQ75OcTDj59BFg=\nR:imports.go\na:0:0:444\nZ:Q1G7VfmTSB3yeaQYwpLbQf6/NNyjE=\nR:imports.gox\na:0:0:444\nZ:Q1JEt/kd58o3CkS5Lb0sg3yJTZIvc=\nR:issue27856.go\na:0:0:444\nZ:Q1/Z6dDkMOIDgkhfVzsjIYX07XsQI=\nR:issue27856.gox\na:0:0:444\nZ:Q1c0znm684Azcwq5d49njFOPSDC8c=\nR:issue29198.go\na:0:0:444\nZ:Q1ix43S4096jJYj3IG4tATDtkGqYg=\nR:issue29198.gox\na:0:0:444\nZ:Q11JFBj7Sg+5AtB5EILpRMzeUbpiE=\nR:issue30628.go\na:0:0:444\nZ:Q1e/8yf2FRD1a7OxfpIZXNLcYIwL0=\nR:issue30628.gox\na:0:0:444\nZ:Q10//qWMi6s7F0gf7Z6MfY0lcLiRk=\nR:issue31540.go\na:0:0:444\nZ:Q1CpD9leN7Plye/MrbaLjzKYfYI6w=\nR:issue31540.gox\na:0:0:444\nZ:Q1hn0X2jguCwqQu+3PRumX21Zl/Do=\nR:issue34182.go\na:0:0:444\nZ:Q1oRJ1plwPqnbxuxHDN0BqNCcFzQU=\nR:issue34182.gox\na:0:0:444\nZ:Q1zlCi+IeH0jwbGEtnslWMiDjF3tE=\nR:libimportsar.a\na:0:0:444\nZ:Q1+uCfer6T/6unz1GeGMC3udiMFts=\nR:nointerface.go\na:0:0:444\nZ:Q1rZQ63TY5E4LfF0OJuA49N113DQ4=\nR:nointerface.gox\na:0:0:444\nZ:Q1QWmN5pTV2jnma6+rPuLlHjj/IBo=\nR:notinheap.go\na:0:0:444\nZ:Q1gGlTV4YCBCh2d8JnDgIBk1ezS94=\nR:notinheap.gox\na:0:0:444\nZ:Q1U+l58IRlFtjO3WooxgGFsqHd3ks=\nR:pointer.go\na:0:0:444\nZ:Q16ezMg/ekHNSKPyQs2ilDfG5srl8=\nR:pointer.gox\na:0:0:444\nZ:Q1sKZT9rLT0QHX0vbQ5A5SQQBZJx0=\nR:time.gox\na:0:0:444\nZ:Q1Ww/bSB7r0INvOAc3XW22FSaHM24=\nR:unicode.gox\na:0:0:444\nZ:Q13bdmdJMqdYiECY4MQqGE3//fifQ=\nR:v1reflect.gox\na:0:0:444\nZ:Q1iQHw+3k0ADZnJ/5LFlkoaMroupE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/internal/packagesdriver\nM:0:0:555\nR:sizes.go\na:0:0:444\nZ:Q1mjY63+X8vetnAxvkkVFQNhdYsKs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/loader\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1o30FCo2YDugAGL2IGXn2H+KaR0M=\nR:loader.go\na:0:0:444\nZ:Q1doUzKmF9upE1qRrUedgYDUF2e/0=\nR:loader_test.go\na:0:0:444\nZ:Q1p7rUNRASpYEi28/2OY8seGaqjLk=\nR:stdlib_test.go\na:0:0:444\nZ:Q1aq4/oSiGkOYniVCiktHj2/vhU9Y=\nR:util.go\na:0:0:444\nZ:Q1zSRt5Jsatp8B44Hxvo05+wPQn64=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/loader/testdata\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1qcZMDVzpVXmPQMCXLN4ucVsfuZ4=\nR:b.go\na:0:0:444\nZ:Q1qcZMDVzpVXmPQMCXLN4ucVsfuZ4=\nR:badpkgdecl.go\na:0:0:444\nZ:Q1v/4ZAjqbqk9GKDc4qRDNNS/IWwI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/loader/testdata/issue46877\nM:0:0:555\nR:x.go\na:0:0:444\nZ:Q1/FZY9V3azofsyigHygsKt9k7FsY=\nR:x.h\na:0:0:444\nZ:Q1wuWO33e6M7o2/qIu5ZzNIa0+sDY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q10r++yrv7uHpd8Bg5c2i/U3Cb4Ak=\nR:example_test.go\na:0:0:444\nZ:Q14JOFaZekhdX1UaNh6dzbksVzn7o=\nR:external.go\na:0:0:444\nZ:Q1mD9Apf0G0p5lwdSWeBaicxbBm7M=\nR:golist.go\na:0:0:444\nZ:Q11y/OXUgTQtjzoto0DZVRNKSVWJE=\nR:golist_overlay.go\na:0:0:444\nZ:Q1UIiiqJqofwf5GFVNLeCitcWRa/w=\nR:loadmode_string.go\na:0:0:444\nZ:Q14MzEHPrxba1Ud577/a1SBA+LZG4=\nR:overlay_test.go\na:0:0:444\nZ:Q1hUal3mPqMwiRH/mA1/6CipuCQYc=\nR:packages.go\na:0:0:444\nZ:Q11zraibr0Ee+Asy4fxugcg9lm8WU=\nR:packages_test.go\na:0:0:444\nZ:Q1cfRdwoZWtBjfPelBRiMUfqbFU8w=\nR:stdlib_test.go\na:0:0:444\nZ:Q1BhB/zfMytTNr7WSq3j7h5rp5DSk=\nR:visit.go\na:0:0:444\nZ:Q1hJlSmbGcWQbJPCoLtarmvAxGvM8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/gopackages\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1TPkjH12T4aGUcDf8R/2KbpCSc24=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest\nM:0:0:555\nR:expect.go\na:0:0:444\nZ:Q1hAI0lUROX/okxOHWlfjbsQkAQWE=\nR:expect_test.go\na:0:0:444\nZ:Q1AIirR1k0OeaZSljZlmun5RI3vkw=\nR:export.go\na:0:0:444\nZ:Q1nN+DBEXwmqm7yNDfRQDX/GorlI4=\nR:export_test.go\na:0:0:444\nZ:Q1jgMQ1G8ZYx/OdWexbf/8vvTcgWQ=\nR:gopath.go\na:0:0:444\nZ:Q1BajpTCvjc/nhPygkOoFZfZRvhfo=\nR:gopath_test.go\na:0:0:444\nZ:Q1ki8RV6BSQP8uTcO7i4g/H15fgqU=\nR:modules.go\na:0:0:444\nZ:Q1xByMerREZQIVtDPGXN3AunQS2QU=\nR:modules_111.go\na:0:0:444\nZ:Q1PlRus6yMAuHPOTOZC2HB9uC2ieY=\nR:modules_test.go\na:0:0:444\nZ:Q1MoQhJEp4RfcRd6ZHzlpNeSaWKvM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata\nM:0:0:555\nR:test.go\na:0:0:444\nZ:Q1KR7Kmul/s6EOmRHb0FiMvLg+rz0=\nR:test_test.go\na:0:0:444\nZ:Q1tBhkphSsoygo+AFc6voPxarl4gg=\nR:x_test.go\na:0:0:444\nZ:Q1xJ2uOhjH6BUe14oBbR7dKBVE09U=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/one\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/one/modules\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/one/modules/example.com\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/one/modules/example.com/extra\nM:0:0:555\nR:help.go\na:0:0:444\nZ:Q12o5TOlAjKcS128fY+3YmVLqG200=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/one/primarymod\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1MxUqgrQRUysG2t3kOAQ63OdstKw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/extra\nM:0:0:555\nR:yo.go\na:0:0:444\nZ:Q19I4bDge1s1F1g68yPG0gPR+ukeY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/extra/geez\nM:0:0:555\nR:help.go\na:0:0:444\nZ:Q1W+/dLwPHVySrqiFFrCU6OBbctD0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/extra/v2\nM:0:0:555\nR:me.go\na:0:0:444\nZ:Q19I4bDge1s1F1g68yPG0gPR+ukeY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/extra/v2/geez\nM:0:0:555\nR:help.go\na:0:0:444\nZ:Q1W+/dLwPHVySrqiFFrCU6OBbctD0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/tempmod\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1Y+CfaBCroyCQHNSG0Fdo++KQcuk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/what@v1.0.0\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1CoXkKn+FC1x/sZeXiTtR+/aRQXg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/modules/example.com/what@v1.1.0\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1CoXkKn+FC1x/sZeXiTtR+/aRQXg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/primarymod\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1km/iLYzoBQG38IUDvf5/v/1FQdg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/packages/packagestest/testdata/groups/two/primarymod/expect\nM:0:0:555\nR:yo.go\na:0:0:444\nZ:Q1xRfKaHteRmSrFIjLhs7xNkxYzpU=\nR:yo_test.go\na:0:0:444\nZ:Q1pIArG6bUnw44C57LmicxwxVOZKk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/pointer\nM:0:0:555\nR:TODO\na:0:0:444\nZ:Q1Ta+KTPbvXL7dGCbQ/OC8NvfxL4M=\nR:analysis.go\na:0:0:444\nZ:Q1qVEczeVzrIvS4b8OkA0H5Pgm0+8=\nR:api.go\na:0:0:444\nZ:Q1wdRF5hSbnIPDKxs04pVtxf6+2AE=\nR:callgraph.go\na:0:0:444\nZ:Q1X0nh6lFN+NVo1XdLeo/cRwblIvw=\nR:constraint.go\na:0:0:444\nZ:Q1uM+HdZt+5FDEfvoADfglIk/0bd8=\nR:doc.go\na:0:0:444\nZ:Q1iXxloXzJjHE5V3vQNvAd+ZlbuT8=\nR:example_test.go\na:0:0:444\nZ:Q11JhdhzHLQWSZrZUyLw077JPiDds=\nR:gen.go\na:0:0:444\nZ:Q1oagLZKJaerSSJ6YuJO2sSVYI9Fs=\nR:hvn.go\na:0:0:444\nZ:Q1U61QDyf+zpifS768a2sBtgmx76Q=\nR:intrinsics.go\na:0:0:444\nZ:Q1qX7VwsEuDb2x0Uvy+P3YKsSIJfA=\nR:labels.go\na:0:0:444\nZ:Q12Z8J3ZWdNYIyv7d5hdZPfgkdco8=\nR:opt.go\na:0:0:444\nZ:Q1dI7H+ogveBFfi2yhIGQIscH1jpg=\nR:pointer_go117_test.go\na:0:0:444\nZ:Q1qJlG24SgJaGBy8bOSkwpMErQc5Q=\nR:pointer_test.go\na:0:0:444\nZ:Q1Hs7I1EpYTcLK7dHj36QxzmqOpM4=\nR:print.go\na:0:0:444\nZ:Q1IeBsnIVJMaGYeWm8d0ZjI5rlVCI=\nR:query.go\na:0:0:444\nZ:Q1rIzgeyGgaIC5VIndsrZ0c4tMEr0=\nR:query_test.go\na:0:0:444\nZ:Q1lFDfwOBmCUl2tArPKfHm5GP4R20=\nR:reflect.go\na:0:0:444\nZ:Q1LRADTGijq3fmkDzcbzNxRk200XY=\nR:solve.go\na:0:0:444\nZ:Q1H78PzVDe8nE3UyHshHEf/SrwyrI=\nR:stdlib_test.go\na:0:0:444\nZ:Q1mSlbS6ifEoD22UdoRcofR1LHoOw=\nR:util.go\na:0:0:444\nZ:Q1iwY2tUPUUGxcy6Lxaw790xbTI9E=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/pointer/testdata\nM:0:0:555\nR:a_test.go\na:0:0:444\nZ:Q1N81awJnxRAkpYvu7Ar+rQhYMkB8=\nR:another.go\na:0:0:444\nZ:Q12ajzAJwCrrRDtS4EjidoxeHwoiw=\nR:arrayreflect.go\na:0:0:444\nZ:Q1EaS2Bxsk6Xkg5WVDQq904cw4WsY=\nR:arrays.go\na:0:0:444\nZ:Q1b4K730kjASkynvdIp7P+8FQ+WxE=\nR:arrays_go117.go\na:0:0:444\nZ:Q1x3qosIhPlt2gIbdurS5C/kNTEz8=\nR:channels.go\na:0:0:444\nZ:Q16shfqyfI4a1xNcj721gRIBzePq4=\nR:chanreflect.go\na:0:0:444\nZ:Q1PcywfCERO+jSFD/plISVUCeLadw=\nR:chanreflect1.go\na:0:0:444\nZ:Q1HaNjnGtgFsv+V6eRnVnsEi6Dipk=\nR:context.go\na:0:0:444\nZ:Q1Q+By/OM9QWOP9Lf0aZCsu0TBbSA=\nR:conv.go\na:0:0:444\nZ:Q1TfnFV/loKmgAGFtAgzuJZlqrv6A=\nR:extended.go\na:0:0:444\nZ:Q1CuBR07GS6EOB8J98OcHHXngTq8g=\nR:finalizer.go\na:0:0:444\nZ:Q16vOrE2P54zHGed8hYdmP8VWaFjs=\nR:flow.go\na:0:0:444\nZ:Q1V5Z5rhuhoJIxt0t+aVBZTOhabzs=\nR:fmtexcerpt.go\na:0:0:444\nZ:Q1kmhxXEXplclXMG1xdGrn3ejERr4=\nR:func.go\na:0:0:444\nZ:Q1XmDWVuDvNZA8kW0yLe0+qbhz0I0=\nR:funcreflect.go\na:0:0:444\nZ:Q1+Xo+Hdi3Vk8sdDrl9F8zBh6IsPo=\nR:hello.go\na:0:0:444\nZ:Q1LzU8V0ssV6Z5ULULwUE/lyF4+zE=\nR:interfaces.go\na:0:0:444\nZ:Q1cTA9fCPsz+uY133Kfy2WHpxrT1c=\nR:issue9002.go\na:0:0:444\nZ:Q1cg4k+RWhy7CIa9d3hEGD2EBoyrQ=\nR:mapreflect.go\na:0:0:444\nZ:Q18C3iWzfl5cOZ64cOIr5RGjJWW7E=\nR:maps.go\na:0:0:444\nZ:Q1gHpLsxCqtdtp3+dIwZ8GdOIgttk=\nR:panic.go\na:0:0:444\nZ:Q12XSBLtr+52a6bSulQehajYg6WdI=\nR:recur.go\na:0:0:444\nZ:Q17ovMdaC2XGYHR/yTMa16swT/QKQ=\nR:reflect.go\na:0:0:444\nZ:Q15nqTDrVEfpKbShJRo1XxCIjCKbM=\nR:rtti.go\na:0:0:444\nZ:Q14xxHchipt2oJe6LgfaZ3jHiN0CI=\nR:structreflect.go\na:0:0:444\nZ:Q17u2NwhsF4L+MaVLVjQuP55X7IQg=\nR:structs.go\na:0:0:444\nZ:Q1pjEaUlBNqMLqBaqkYZUWM9gyeOw=\nR:timer.go\na:0:0:444\nZ:Q1Cjy+btKzNRqGXUmENaFwlpqbA8g=\nR:typeparams.go\na:0:0:444\nZ:Q14UsYM2+VOvMGw51R6BWYKcKTSvs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa\nM:0:0:555\nR:block.go\na:0:0:444\nZ:Q135SNnkh8ggnnPbloV6bWIwl8l0k=\nR:blockopt.go\na:0:0:444\nZ:Q1CuWmxM+AbA7aJ9GWtMEGLDr6lNc=\nR:builder.go\na:0:0:444\nZ:Q1GqI8qZnTUXzcfBsrvh870SY1dl0=\nR:builder_go117_test.go\na:0:0:444\nZ:Q1aAxLSqTb4TtYuQpdv+hYO5YRD/Y=\nR:builder_go120_test.go\na:0:0:444\nZ:Q14P3u6T6etcxHBb6yho5V8dctJcA=\nR:builder_test.go\na:0:0:444\nZ:Q145/BiUG1OvlvgEyyP5WSLLC9+rw=\nR:const.go\na:0:0:444\nZ:Q1LNgpmRyMk2ph12mfz3mXWp+TBVw=\nR:create.go\na:0:0:444\nZ:Q18dWWRDWGpLKks/IWto2V3n/PiJ4=\nR:doc.go\na:0:0:444\nZ:Q1+a/PI8r6XKVVQ4lwE/HjoIglLsI=\nR:dom.go\na:0:0:444\nZ:Q17KErQtrhkUFVZfeVY9TZf6BYw+U=\nR:emit.go\na:0:0:444\nZ:Q11Ilw28cLC/buBARro498/vnhtLY=\nR:example_test.go\na:0:0:444\nZ:Q14PP1HWmBx3AhxkMxI86aPdVy7Ss=\nR:func.go\na:0:0:444\nZ:Q1/uM9NVZsz9Eqq1KL51fbv6KnnPY=\nR:identical.go\na:0:0:444\nZ:Q1+LxrsvLPrSKO32DmctqrTUn+z5Q=\nR:identical_17.go\na:0:0:444\nZ:Q1M8rEA6XynCX4dW8nCecsZ+xn8YI=\nR:identical_test.go\na:0:0:444\nZ:Q1Xy+aqyTNodt8XYdnucAgGEw4jvo=\nR:instantiate.go\na:0:0:444\nZ:Q1ID/5KcDiDeNEKIXgqdaM94CMRWc=\nR:instantiate_test.go\na:0:0:444\nZ:Q1eoFxeca04z6nLs/Q8o5Rhte0X4k=\nR:lift.go\na:0:0:444\nZ:Q1vBzFGdqlOa4r53QvUz8Sk9JGqA4=\nR:lvalue.go\na:0:0:444\nZ:Q1FA0DdOihL2KeAkdNMM+jj/t5Pqs=\nR:methods.go\na:0:0:444\nZ:Q1JVPdh/t2GI4SKZ1NZFW6evh8Gzw=\nR:methods_test.go\na:0:0:444\nZ:Q147ScLH3BR/WB6WGFVbedGJDqXFo=\nR:mode.go\na:0:0:444\nZ:Q14/WfzsuZuNr/UcWRl6w3pvaJ0Ck=\nR:parameterized.go\na:0:0:444\nZ:Q19YPxlrF4gdRtaTMWVseg75YiDQ0=\nR:parameterized_test.go\na:0:0:444\nZ:Q1n3u/kfWMlpGXwf3srovTTO1iT9A=\nR:print.go\na:0:0:444\nZ:Q1+u/1v4U7Zuq2SX46c+JKVi6UNBw=\nR:sanity.go\na:0:0:444\nZ:Q1Lurv8qVw6cQJkLeXFmtSn84YFtg=\nR:source.go\na:0:0:444\nZ:Q17vYkuosZ1xrEVYNoJcaCDH6i5f4=\nR:source_test.go\na:0:0:444\nZ:Q17B7khD3+pzvk6V+XgHa7pvQ6ff4=\nR:ssa.go\na:0:0:444\nZ:Q1PvIg7qHjUG1lJKO+fYeVkWFKNNs=\nR:stdlib_test.go\na:0:0:444\nZ:Q1IEcuitMMPClHZGLc4xztIEBnuEw=\nR:subst.go\na:0:0:444\nZ:Q1/beBmm2/XV0i7wIZm0sAJVr5eic=\nR:subst_test.go\na:0:0:444\nZ:Q1WY8Sv9rvCzHx9o6ytCdTMnCJIxs=\nR:testhelper_test.go\na:0:0:444\nZ:Q1D2ZAcQNq1ehqjpuLQ67OyfmdGFE=\nR:util.go\na:0:0:444\nZ:Q1ap/ufMDs2fwtonV7Pf+eEDb1aFE=\nR:wrappers.go\na:0:0:444\nZ:Q1EoHajfaMifByR6/HN2ef4R6OSWw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp\nM:0:0:555\nR:external.go\na:0:0:444\nZ:Q1advJWkcS4/xs2VwDlLtIEEKIgrQ=\nR:interp.go\na:0:0:444\nZ:Q1M+/pPZ4jRb3EPkh4+c8hP3mPKJo=\nR:interp_go117_test.go\na:0:0:444\nZ:Q1GwLYacY81d54yuH6jtc6u9sYFKg=\nR:interp_go120_test.go\na:0:0:444\nZ:Q1kBk7h6XyN/goGbtqNpO0wjcVeZc=\nR:interp_test.go\na:0:0:444\nZ:Q1pX8e0WDMBJiZz9GRChOfiWmBqNs=\nR:map.go\na:0:0:444\nZ:Q14rGJCcsibbjcS3RnTypY9toDh3E=\nR:ops.go\na:0:0:444\nZ:Q1ud+iZYriQj+zFic+r6CMiU0AmNg=\nR:reflect.go\na:0:0:444\nZ:Q1Ar+1724TNOm1BxNcLuuTN7Mwylc=\nR:value.go\na:0:0:444\nZ:Q1GHnEWD8NsoIq8pPCkz9myAktsYQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata\nM:0:0:555\nR:boundmeth.go\na:0:0:444\nZ:Q1pyR4ZBhasDHT6CNo/l4Ohyy1CTg=\nR:complit.go\na:0:0:444\nZ:Q1doNV2/6ZKsU8DxWsF+G0Xu7JdMs=\nR:convert.go\na:0:0:444\nZ:Q1m2w6HtwOgzHxCvcECQOEqdAOIIE=\nR:coverage.go\na:0:0:444\nZ:Q1XAE4Ylv5gLkrgraXdzUFgWt1P4I=\nR:deepequal.go\na:0:0:444\nZ:Q12lZ2fkqurr43A8l3jfDaUrtcHio=\nR:defer.go\na:0:0:444\nZ:Q1HOP+Y2ehgWlRQR/SVfl06BcRZkY=\nR:fieldprom.go\na:0:0:444\nZ:Q1SzvddVkdLPGmUCRqbWrlofRbZzw=\nR:ifaceconv.go\na:0:0:444\nZ:Q1+aJ4envzODOCbcTvAzWhEhKhK1U=\nR:ifaceprom.go\na:0:0:444\nZ:Q1Ln/4qMVtRyLZ5ictO+0QpKkawbA=\nR:initorder.go\na:0:0:444\nZ:Q1BN1WEg++U3etcyvAsq+hSuOlOBk=\nR:methprom.go\na:0:0:444\nZ:Q1kPcq4eRmCRghclsGedo969ktZm0=\nR:mrvchain.go\na:0:0:444\nZ:Q1T4sCUhofMACb35jCr8UAvxaj48U=\nR:range.go\na:0:0:444\nZ:Q1CfobYb4vmPrTKtzWH7gfOF5K2zo=\nR:recover.go\na:0:0:444\nZ:Q10xE64PubhnSJuJ4RCzdQmTYHSUc=\nR:reflect.go\na:0:0:444\nZ:Q1wqFCqucou5HB+sYyDj3PyLHf5kc=\nR:slice2array.go\na:0:0:444\nZ:Q1aikYGXiLGFheWR5CutUZ4TKTOEU=\nR:slice2arrayptr.go\na:0:0:444\nZ:Q1+piTiUxsicZdbeStQRZtSvML3BU=\nR:static.go\na:0:0:444\nZ:Q1Nm1cBJ56lQa4NKk6Z7HCMrjU660=\nR:width32.go\na:0:0:444\nZ:Q1S2wHFDYtWeoAJkde2XeM7tvMYVo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/fixedbugs\nM:0:0:555\nR:issue52342.go\na:0:0:444\nZ:Q1J0ktru1wOQX1XYbvitvPruHMgP4=\nR:issue52835.go\na:0:0:444\nZ:Q1xTznT94oZf1XxjMOqdtY7JaUf70=\nR:issue55086.go\na:0:0:444\nZ:Q1r3Pzxh1T+xGZo3j5QEqNpP0XFbA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/encoding\nM:0:0:555\nR:encoding.go\na:0:0:444\nZ:Q13/C3WxzknY/qWRp/Wq6uGMflWNw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1WTpFI1iGH0SUnkSK6OAJSnk6RSo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/fmt\nM:0:0:555\nR:fmt.go\na:0:0:444\nZ:Q1z4FvaiDisu3Uv85Od0hpRN1Y0B0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/io\nM:0:0:555\nR:io.go\na:0:0:444\nZ:Q1UuryFPQJBKfCfBGHHkZK/TxVlGk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/log\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1K1dfoEkY4/p/6CaHrx2IAmTUixU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/math\nM:0:0:555\nR:math.go\na:0:0:444\nZ:Q1dzcQDFOGpIH5TbxL4z0xTkXw0nU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/os\nM:0:0:555\nR:os.go\na:0:0:444\nZ:Q1+emoZZk5Y0/fdhOXYJvglrqstOo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/reflect\nM:0:0:555\nR:deepequal.go\na:0:0:444\nZ:Q157M+zH29Il/BApDQ/rQHyolZbO0=\nR:reflect.go\na:0:0:444\nZ:Q16D59vag6+3J0lo3P47nTy5do8qg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/runtime\nM:0:0:555\nR:runtime.go\na:0:0:444\nZ:Q1/HJLh7kNRipCQMaEIt7sJ7ojSjw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/sort\nM:0:0:555\nR:sort.go\na:0:0:444\nZ:Q1BqSTx2hSEeJJs6bsSUPzkaXlD8s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/strconv\nM:0:0:555\nR:strconv.go\na:0:0:444\nZ:Q1N2kQKlAp59I4wVwHG4ldqU3qlRw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/strings\nM:0:0:555\nR:strings.go\na:0:0:444\nZ:Q1WV5vof2rCHOuONBcNKSp4aAE1GQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/sync\nM:0:0:555\nR:sync.go\na:0:0:444\nZ:Q1cZEODgPXuFPJaY8cG045lkq9ZM0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/time\nM:0:0:555\nR:time.go\na:0:0:444\nZ:Q1SMckT+ChRIPTTzXBx55oCm1q6vY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/unicode\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/unicode/utf8\nM:0:0:555\nR:utf8.go\na:0:0:444\nZ:Q1NpA8JvBrRqbWI67/x3yxnUfOyXw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/interp/testdata/src/unsafe\nM:0:0:555\nR:unsafe.go\na:0:0:444\nZ:Q10l6ufeylCQv1mytcptxoGHAkNZM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/ssautil\nM:0:0:555\nR:load.go\na:0:0:444\nZ:Q1C/Mak4ObodHvDU0YOy1f2re4plU=\nR:load_test.go\na:0:0:444\nZ:Q1LL8+kaQCn7odVysH/VtvIVoTQO0=\nR:switch.go\na:0:0:444\nZ:Q1BWmnWcLgaMcBD/GU3cV9yieqfgo=\nR:switch_test.go\na:0:0:444\nZ:Q1nZSQAN0ZPLW3fnZuD38SHNR8qOc=\nR:visit.go\na:0:0:444\nZ:Q1BJUIWIyHgpGJQ8iJVvrxV6eg9HM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/ssautil/testdata\nM:0:0:555\nR:switches.go\na:0:0:444\nZ:Q1SecCd89QxJU7HksEGf6hyOnVVnM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata\nM:0:0:555\nR:objlookup.go\na:0:0:444\nZ:Q1wDJ3YdPi7McZWb+0svyeXemSi3k=\nR:structconv.go\na:0:0:444\nZ:Q1nB2rmurvLCoZmqBw57nv5Uhxp6Q=\nR:valueforexpr.go\na:0:0:444\nZ:Q1TsPxf3/OLFgqiD4nTmn78ym42NM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src\nM:0:0:555\nR:README.txt\na:0:0:444\nZ:Q1urYod/jrQUGbRS8JNCHHtYiNJpI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/bytes\nM:0:0:555\nR:bytes.go\na:0:0:444\nZ:Q1ibxtqnOCQtpydBg025Ot0C5OVAU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/context\nM:0:0:555\nR:context.go\na:0:0:444\nZ:Q1g9fI/93T3aAJeAujD/dIcrbUxbU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/encoding\nM:0:0:555\nR:encoding.go\na:0:0:444\nZ:Q1iSF1fCwyXKfUOIw3MUZ7Ud/j4DY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/encoding/json\nM:0:0:555\nR:json.go\na:0:0:444\nZ:Q1IrpfmWnuKnuuYLVZp+7Ym1pkEX4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/encoding/xml\nM:0:0:555\nR:xml.go\na:0:0:444\nZ:Q1xNhERRGcjNgQnmE5gg38TJ6PySQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1nY0+WZGEcq5Njm/HCnoANk6UySU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/fmt\nM:0:0:555\nR:fmt.go\na:0:0:444\nZ:Q1B3jxzR+wK+CTHw0Cq/MNo6iJU0Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/io\nM:0:0:555\nR:io.go\na:0:0:444\nZ:Q1UuryFPQJBKfCfBGHHkZK/TxVlGk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/log\nM:0:0:555\nR:log.go\na:0:0:444\nZ:Q1T/9M1j/22wcW8EsY9rWUwZHR7/4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/math\nM:0:0:555\nR:math.go\na:0:0:444\nZ:Q13YzjWfs0+rXvyjMOwvlO4B+aP8c=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/os\nM:0:0:555\nR:os.go\na:0:0:444\nZ:Q1+emoZZk5Y0/fdhOXYJvglrqstOo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/reflect\nM:0:0:555\nR:reflect.go\na:0:0:444\nZ:Q1exYXdwNUQIOdOsSSlXl4+Yy/fIM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/runtime\nM:0:0:555\nR:runtime.go\na:0:0:444\nZ:Q18rfi2YMocohAkERURGl31+7Iun8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/sort\nM:0:0:555\nR:sort.go\na:0:0:444\nZ:Q1CViaVYVkQ2MPjWO3mVvmnMDrlo8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/strconv\nM:0:0:555\nR:strconv.go\na:0:0:444\nZ:Q1N2kQKlAp59I4wVwHG4ldqU3qlRw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/strings\nM:0:0:555\nR:strings.go\na:0:0:444\nZ:Q1zWVG6gXU5J4dB5khFBGsaQWPl/s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/sync\nM:0:0:555\nR:sync.go\na:0:0:444\nZ:Q1UXGQeHBdwGQPGq1VR18xr3auxIk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/sync/atomic\nM:0:0:555\nR:atomic.go\na:0:0:444\nZ:Q1GnawUwmW7mHMzzz6oJLAXKvLGtM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/time\nM:0:0:555\nR:time.go\na:0:0:444\nZ:Q1j+9qJ7n6TBWh4LErDprRtmkwl2I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/ssa/testdata/src/unsafe\nM:0:0:555\nR:unsafe.go\na:0:0:444\nZ:Q1IgSsxqDw4D3+/m/JbAo8gV0ea/I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/types\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/types/objectpath\nM:0:0:555\nR:objectpath.go\na:0:0:444\nZ:Q1n01WOsh/DxcXo02n3tTDkR3pSX0=\nR:objectpath_go118_test.go\na:0:0:444\nZ:Q1rGpJDl5WX/ckwuMKsPgJenJLKJM=\nR:objectpath_test.go\na:0:0:444\nZ:Q1zIzEpQc90C4m5+y0qQTJx4MjNNE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/types/typeutil\nM:0:0:555\nR:callee.go\na:0:0:444\nZ:Q1JIRk600gNk4ITdod93j+wiTf5WY=\nR:callee_test.go\na:0:0:444\nZ:Q1lOWiRF0+6Sv7V9ynag4t94hl8vE=\nR:example_test.go\na:0:0:444\nZ:Q1YHoorE7TTEIJcIactg1t8YO4csk=\nR:imports.go\na:0:0:444\nZ:Q1hp7bzsC06FzCbamuh4gB0uDyNlw=\nR:imports_test.go\na:0:0:444\nZ:Q1ociFfZYXl4ewoZQbKZynY/oEPSg=\nR:map.go\na:0:0:444\nZ:Q1xFMEa/eqyxJj1wOYxsY78VUwmGQ=\nR:map_test.go\na:0:0:444\nZ:Q1q0MgrHHvvQmXWFLWEMWRaTDrw0E=\nR:methodsetcache.go\na:0:0:444\nZ:Q1XFxuywxLnaMEUCjcNGffKCvG3+I=\nR:ui.go\na:0:0:444\nZ:Q1eDyXT7bfOYoU9NWuENTAssurbiE=\nR:ui_test.go\na:0:0:444\nZ:Q1o4txU8U5ZmBghF9AzPIDFI9JnoE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/go/vcs\nM:0:0:555\nR:discovery.go\na:0:0:444\nZ:Q1LugW3LyQzjZY7GzJ8ueZ3gV56p0=\nR:env.go\na:0:0:444\nZ:Q1mYTiE9V0KfE6FviKTQB3YRnQ+Wo=\nR:http.go\na:0:0:444\nZ:Q1YIUzn6knLfxowUORs4yMqvrx4Tk=\nR:vcs.go\na:0:0:444\nZ:Q1kahjHqzautXQoDzww3hOvMo8Ka0=\nR:vcs_test.go\na:0:0:444\nZ:Q1VBLR+n1ZI8rASh+PW4ktray5kxg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1tjP1pjMT4Fhn5WnJh+4Z2JLkG4I=\nR:corpus.go\na:0:0:444\nZ:Q1xhOBAd0g1g1LWSFmQKlXechbh/0=\nR:dirtrees.go\na:0:0:444\nZ:Q1suT2aQAOnFR8QPTXALW7Ot7T3bM=\nR:dirtrees_test.go\na:0:0:444\nZ:Q1cQ7c1BcuahN2lfjOT1bSerOeD3g=\nR:format.go\na:0:0:444\nZ:Q1mvCcVyr7mA/IY+ubeJpPiLNCab8=\nR:godoc.go\na:0:0:444\nZ:Q1tYuAyFZ6ez69ks7Wo7mfTQLRulc=\nR:godoc17_test.go\na:0:0:444\nZ:Q18mj/NBh7P2+mWQ10Wd1wo862QyU=\nR:godoc_test.go\na:0:0:444\nZ:Q1PpapCtgMtMv8i4769w56DrK0Eqs=\nR:index.go\na:0:0:444\nZ:Q1MlDgEJSFTDsDlThVnnFwOp4s02Q=\nR:index_test.go\na:0:0:444\nZ:Q14zBBF5ZtV8GFQVUBitEk5JSPojo=\nR:linkify.go\na:0:0:444\nZ:Q1OqpweFeg4uMECfq8F/Vxg3Ymk/E=\nR:markdown.go\na:0:0:444\nZ:Q1kVkRXehJV2Pvmk9W0EtmHV+APa0=\nR:meta.go\na:0:0:444\nZ:Q1/VUIhY2Un3raNHYt7QiLawyaRWs=\nR:page.go\na:0:0:444\nZ:Q1RT7bwXyhufDuu760KYnlU2OItO8=\nR:parser.go\na:0:0:444\nZ:Q1ySWPZTNu5sRvhKq457smjKr3RMw=\nR:pres.go\na:0:0:444\nZ:Q1gMXmkrtw0YuPZh/livbzep6Lgdg=\nR:search.go\na:0:0:444\nZ:Q1/qNh9WybCk/hAZQUT4t9KzonfIk=\nR:server.go\na:0:0:444\nZ:Q1QVJav3W7m3muLjT5/ELr22lORGw=\nR:server_test.go\na:0:0:444\nZ:Q16sIF9e5Ni6XfCYUSAynQjLOXQMY=\nR:snippet.go\na:0:0:444\nZ:Q1CUxiHjO5L3RyrPQAOPRakxTe8DI=\nR:spec.go\na:0:0:444\nZ:Q1nxN/uM7Ma3rUelfvi3U9odHZxyY=\nR:spec_test.go\na:0:0:444\nZ:Q1RQIK+XJ3UMBoUxfl+yujLCHDBZQ=\nR:spot.go\na:0:0:444\nZ:Q1qaAzWWPO5QRte8N4+F5/kk4UYJg=\nR:tab.go\na:0:0:444\nZ:Q1YlmibR0FW/hzbLGyK1peDHV2Baw=\nR:template.go\na:0:0:444\nZ:Q10JayaDX238m6zKMGsqbBtw0RqsE=\nR:tohtml_go119.go\na:0:0:444\nZ:Q1iPTAX81Hn5cClt/mmFC5XyhVh8g=\nR:tohtml_other.go\na:0:0:444\nZ:Q1AsI7c03QwBMh6ZXvTXd55kN0YC0=\nR:versions.go\na:0:0:444\nZ:Q1A8ERlgZ2feZhDhb0whAOJc8y0gY=\nR:versions_test.go\na:0:0:444\nZ:Q15kPAGSIxnA1yqG/ifvqw7AEuEPk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/analysis\nM:0:0:555\nR:analysis.go\na:0:0:444\nZ:Q1vWTVa8uQ+V9lTGK6NZqS7Nu/LaM=\nR:json.go\na:0:0:444\nZ:Q1+ECi8mXOVSgYX7cIUIzMMiVhf88=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/redirect\nM:0:0:555\nR:redirect.go\na:0:0:444\nZ:Q1plNmcJ3C9T5RWqt4j4ZdYBTZmKw=\nR:redirect_test.go\na:0:0:444\nZ:Q1yn8VQqXQvxygf4JPqOPP0508nIs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/static\nM:0:0:555\nR:callgraph.html\na:0:0:444\nZ:Q1PeSKZZpDONcLB3y/+1oFwfem/mY=\nR:dirlist.html\na:0:0:444\nZ:Q1TolEzfKAdE7QJF+KVZppOsIGFbw=\nR:doc.go\na:0:0:444\nZ:Q191mIsH9w6+5HGJ/wbJpDjSC0ki4=\nR:error.html\na:0:0:444\nZ:Q1ynmALtdLHI9UBW/UFtomSSIn9gY=\nR:example.html\na:0:0:444\nZ:Q17i3l8n48vmfkCJLT/uRkVxWSaHc=\nR:favicon.ico\na:0:0:444\nZ:Q1mYeyTKrFlKpUYVygifTcf43ke0Y=\nR:gen.go\na:0:0:444\nZ:Q1pCE/zHCECtxhyYjK/YgiC8Llhbk=\nR:gen_test.go\na:0:0:444\nZ:Q1iFLd0R08feV113gBYdv2cuw+zAM=\nR:godoc.html\na:0:0:444\nZ:Q1gSTDGmOecqJiV9I50Lq6rdwl6HQ=\nR:godocs.js\na:0:0:444\nZ:Q1S1brsIYtL8kmZa7mzM2gU5Al1nA=\nR:implements.html\na:0:0:444\nZ:Q1dsMmK3Rcb4opRKm5Zuv++TQ564s=\nR:jquery.js\na:0:0:444\nZ:Q10J06me0l0PH75oVt6eFP/TNVclY=\nR:jquery.treeview.css\na:0:0:444\nZ:Q1gTKKaQj0xvrrlCON+6JmeGN+xmw=\nR:jquery.treeview.edit.js\na:0:0:444\nZ:Q1S+za0o3eLTVbnkpXchowW1Odusc=\nR:jquery.treeview.js\na:0:0:444\nZ:Q1K6cioOXDil1Ows1FAUMcutw7t4I=\nR:makestatic.go\na:0:0:444\nZ:Q17jeHnIzTrhcA/C8QpkEfEigVo9c=\nR:methodset.html\na:0:0:444\nZ:Q1Qd90FePzd7sTh0l5hBtA2G7Y3wM=\nR:package.html\na:0:0:444\nZ:Q1RfKjLLSQ+LcqSThVtGDBueugmwE=\nR:packageroot.html\na:0:0:444\nZ:Q1ZVH3QHyZu7KELnxYSfdGqHGV2pM=\nR:play.js\na:0:0:444\nZ:Q1gN5NQCxEIGjVorjFWfnIaQjoEQc=\nR:playground.js\na:0:0:444\nZ:Q1Z5uECahkugjq2lVR/qZcg1Ot0QY=\nR:search.html\na:0:0:444\nZ:Q126L7Q1lMXg+/SQSw2yc+KrQRlpw=\nR:searchcode.html\na:0:0:444\nZ:Q1fsQN+/sUPpKgCMSyCNHJ26kEmY8=\nR:searchdoc.html\na:0:0:444\nZ:Q1BjH9r00+0M0uogUi9IvGtne5Bn4=\nR:searchtxt.html\na:0:0:444\nZ:Q1p8G04MNmTDOFRky/2ebsD+5dNNM=\nR:static.go\na:0:0:444\nZ:Q113Dcc9+1o2pyd2QT4pVeeh+VSE0=\nR:style.css\na:0:0:444\nZ:Q1TIYcBBiTP14YWjzhTgBVrTWIsJg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/static/analysis\nM:0:0:555\nR:call-eg.png\na:0:0:444\nZ:Q1n2U9cLRB8bp6VzhQ39ovdwGiRJc=\nR:call3.png\na:0:0:444\nZ:Q17LUNoLKmovQ4lo0+TKqvxnJO17I=\nR:callers1.png\na:0:0:444\nZ:Q1OWVZgZEy3Byd9rL+3TMAH95oLb0=\nR:callers2.png\na:0:0:444\nZ:Q19rfkDTPZBRdzCdsHuDczCvO9wJY=\nR:chan1.png\na:0:0:444\nZ:Q1D0LFnZZfgD4XVP94rRAOY/l9f2c=\nR:chan2a.png\na:0:0:444\nZ:Q1zqXU3rtEYxqf8gkO0wY4EHxSdS0=\nR:chan2b.png\na:0:0:444\nZ:Q1zNccYuNzposM81AT/zt8yO9DUuk=\nR:error1.png\na:0:0:444\nZ:Q1+5L9mDv0syWyU2qXb8xDEhpa5lg=\nR:help.html\na:0:0:444\nZ:Q1D42kj7nOE9IgQ6iuOV0Yq3en/mA=\nR:ident-def.png\na:0:0:444\nZ:Q1iq1Bjp18XnFgPiFrNoXrTWHa0M4=\nR:ident-field.png\na:0:0:444\nZ:Q1V0odUOe2OV/nBw+m82snH/wkukY=\nR:ident-func.png\na:0:0:444\nZ:Q1/UO5nKS9t+w+Tqxh+Pru8QlHhRE=\nR:ipcg-func.png\na:0:0:444\nZ:Q1FSOYq8rG40Bba0PcqcWio2BbT8Q=\nR:ipcg-pkg.png\na:0:0:444\nZ:Q1dD98jiqHcZCtQla5SnwO41q6EXs=\nR:typeinfo-pkg.png\na:0:0:444\nZ:Q1OxwSIG0daZjFDOpREqxx+osV79k=\nR:typeinfo-src.png\na:0:0:444\nZ:Q1jq68Gmk3RMsUF7XokNa1A1aLVBM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/static/gopher\nM:0:0:555\nR:pkg.png\na:0:0:444\nZ:Q1CKNN9e4xrtB5nNSG67r/cy/8Tv8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/static/images\nM:0:0:555\nR:minus.gif\na:0:0:444\nZ:Q1oM5SbHYz2xpNGQhAFmd7iqzoegU=\nR:plus.gif\na:0:0:444\nZ:Q1rnlYXpMTTVqKt5x5e1Vbm26fDIs=\nR:treeview-black-line.gif\na:0:0:444\nZ:Q1rZjDANn4WHvrGCKM/3r+06IUNLA=\nR:treeview-black.gif\na:0:0:444\nZ:Q1V7yILOEZZgWVRfCxQRU7C3l5P20=\nR:treeview-default-line.gif\na:0:0:444\nZ:Q18+dRQxqhawLElOVPk+JWiNWJcI4=\nR:treeview-default.gif\na:0:0:444\nZ:Q1hmD5phtk+wfdfNLZTjeTn+Zpt94=\nR:treeview-gray-line.gif\na:0:0:444\nZ:Q12SNM1pXgSvbHa6J0mQ0gGoUiddY=\nR:treeview-gray.gif\na:0:0:444\nZ:Q1wKhItb/HcTVmjfkhCaokIBlK6S0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/util\nM:0:0:555\nR:throttle.go\na:0:0:444\nZ:Q1ceX3BaSuY+8xh9qxo6bEAMR9tHQ=\nR:util.go\na:0:0:444\nZ:Q159ZDgh0CTCgWHxAczhf3NeqY9vo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/vfs\nM:0:0:555\nR:emptyvfs.go\na:0:0:444\nZ:Q10Jo35ZS01HItmrHIHPqFCDiBsTM=\nR:fs.go\na:0:0:444\nZ:Q1PZnBbGJEXOMkGsjQaFXQ/1/AguQ=\nR:namespace.go\na:0:0:444\nZ:Q1bbOX5l5Yw3a1VUmmVSkkqSErsaA=\nR:namespace_test.go\na:0:0:444\nZ:Q1yOsrz7iLUGkekKeIAo4MtgrwGwc=\nR:os.go\na:0:0:444\nZ:Q17V0Omi+5i4YTQRWKsgWM0fi04qc=\nR:os_test.go\na:0:0:444\nZ:Q1YI6r2s3WA5sAEeLBMNf94VEdbYY=\nR:vfs.go\na:0:0:444\nZ:Q1l8jVNUbAPEvXyQVVM/0bD8j5eWo=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/vfs/gatefs\nM:0:0:555\nR:gatefs.go\na:0:0:444\nZ:Q1r9ztWNOu9C1dfewqiqpp9kzdw+4=\nR:gatefs_test.go\na:0:0:444\nZ:Q1OvpFeyu0cDlPNSiAaap2bnXmcOI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/vfs/httpfs\nM:0:0:555\nR:httpfs.go\na:0:0:444\nZ:Q1kfVZMxex3IiZVZvGXWsS+98BfGg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/vfs/mapfs\nM:0:0:555\nR:mapfs.go\na:0:0:444\nZ:Q1TChGUPxa68hq4SKPgkIw+WGD+JM=\nR:mapfs_test.go\na:0:0:444\nZ:Q1Uqm8mxlk5RB3JWmw2ikN5v+pVU4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/godoc/vfs/zipfs\nM:0:0:555\nR:zipfs.go\na:0:0:444\nZ:Q1kxsnA6E9WsgqrhPAIYks6rpJAjs=\nR:zipfs_test.go\na:0:0:444\nZ:Q19x8Yod81aVeYwNF7bhqTzfI8odM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/imports\nM:0:0:555\nR:forward.go\na:0:0:444\nZ:Q1m1KvtOFe4MKxLPrly1EQQjbTNIA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/analysisinternal\nM:0:0:555\nR:analysis.go\na:0:0:444\nZ:Q1jVItnYFYwc4A/+pFhAMSpCqk04w=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/apidiff\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1Q0JFLHxke4/Cr+0OZfLRshNf7hs=\nR:apidiff.go\na:0:0:444\nZ:Q1GJVTTSAPaihb8iu9CIUjQyiiGTY=\nR:apidiff_test.go\na:0:0:444\nZ:Q1xtglOQg0wL3ENVE5qJV2rTNphi4=\nR:compatibility.go\na:0:0:444\nZ:Q1CDjjYoUcsWNWwUwilPFYYP8/SIA=\nR:correspondence.go\na:0:0:444\nZ:Q1jPT/9938XPOImbK/8WzR1+PLanc=\nR:messageset.go\na:0:0:444\nZ:Q11mS5msmICAJmTdHE+IniwDqOXEI=\nR:report.go\na:0:0:444\nZ:Q1zz5+8Lxc2NcNxW9jMq96QdDpvNA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/apidiff/testdata\nM:0:0:555\nR:tests.go\na:0:0:444\nZ:Q1kG31UIFghtlZ55FY1yUgHTQS+fk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/apidiff/testdata/exported_fields\nM:0:0:555\nR:ef.go\na:0:0:444\nZ:Q1WpUG5IRE8hHM7a+BR+g8/Sh/3aE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/bug\nM:0:0:555\nR:bug.go\na:0:0:444\nZ:Q1++UClwWrCRL8KzcCOJ4n+T0E3vA=\nR:bug_test.go\na:0:0:444\nZ:Q1mSCrPKn+iVoh2j+gaY1g+mFEeMc=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/diff\nM:0:0:555\nR:diff.go\na:0:0:444\nZ:Q1bspmegJng8bNjd3jdxdAlg0qYig=\nR:diff_test.go\na:0:0:444\nZ:Q10E8QiYdloDro1R4ISR5Njskmfiw=\nR:export_test.go\na:0:0:444\nZ:Q1ClQscedrsapTjHNIfOAtRIexCDQ=\nR:ndiff.go\na:0:0:444\nZ:Q1kE4vHLSgPE0gcWWpq+kAvKTiPwE=\nR:unified.go\na:0:0:444\nZ:Q1IpUWykEfK/VsJkHP1/xNs91uQLY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/diff/difftest\nM:0:0:555\nR:difftest.go\na:0:0:444\nZ:Q11V1pxQ9bhdCMfvy1KOJLC1xrZGg=\nR:difftest_test.go\na:0:0:444\nZ:Q1EnRzdV62iQrsf93VcUfPjDE268Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/diff/lcs\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1fNkWmniVYEc0S7Fd3eelbjIAHYY=\nR:common_test.go\na:0:0:444\nZ:Q16rGnWwzXf0s7zdmpGRSIDXjeJVQ=\nR:doc.go\na:0:0:444\nZ:Q1VB6WPhb1VeQGdfAFSJmB1z+AlsU=\nR:git.sh\na:0:0:444\nZ:Q1bU4/SQsordI3rZMMwApkhLlzTuE=\nR:labels.go\na:0:0:444\nZ:Q1yU7AihhMX92iPVtakRcN+C0A9qM=\nR:old.go\na:0:0:444\nZ:Q1rX1mqSzvi0bnDLEfJwhGTkEvru8=\nR:old_test.go\na:0:0:444\nZ:Q1Q8f4YIQevMSlUFsacqE5mJcNO/Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/diff/myers\nM:0:0:555\nR:diff.go\na:0:0:444\nZ:Q1FmW84hKCpq807apJRyGG9azyb2k=\nR:diff_test.go\na:0:0:444\nZ:Q1eGur4VSWNdB60raFIZwzxoTJnGs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1KaLz+lNim+Wfx11Ao6uCuHYSFuE=\nR:doc.go\na:0:0:444\nZ:Q1coIIbrajgWCpYL55p4GljIzM+So=\nR:event.go\na:0:0:444\nZ:Q1ugP6t0hZSrgVGFSpHqC0eSYSMWw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/core\nM:0:0:555\nR:event.go\na:0:0:444\nZ:Q12EtBBc3rlIxsxchEAJ/kZB2F/UU=\nR:export.go\na:0:0:444\nZ:Q1BhppAq16yCjLCcsyIoGnaO5vuz0=\nR:fast.go\na:0:0:444\nZ:Q1f89zcULYvkrXHn/EEukvh+990ec=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export\nM:0:0:555\nR:id.go\na:0:0:444\nZ:Q148T0i/B9Lw0KI4nwxeSUaDsuQQ8=\nR:log.go\na:0:0:444\nZ:Q12QUf6KmjCNCXh0UgNYWxox50XFM=\nR:log_test.go\na:0:0:444\nZ:Q1ZqAAPRo5n409iR0ZmDj0RZn/QP0=\nR:printer.go\na:0:0:444\nZ:Q1OIesZJ04ACi8ijAVnop3UZaoR6c=\nR:tag.go\na:0:0:444\nZ:Q1wMbyE2iDnV3EzKkl9heVBkAJUIc=\nR:trace.go\na:0:0:444\nZ:Q1FlrNqLMmxIMVJL2qewL48+P34UU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export/eventtest\nM:0:0:555\nR:eventtest.go\na:0:0:444\nZ:Q14phWTMp95VHnDwpNMazRh5Hd0Fs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export/metric\nM:0:0:555\nR:data.go\na:0:0:444\nZ:Q1lEkXjlYVsZDO/6+Z/pr2xIfkjto=\nR:exporter.go\na:0:0:444\nZ:Q1pRjapzh8sRVfKyXJGb1tBAILwFU=\nR:info.go\na:0:0:444\nZ:Q1j91K0cXNbePu88SRojrn6JYw74Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export/ocagent\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1K4EHKTas38NQsT87xwZGuvm2UNE=\nR:metrics.go\na:0:0:444\nZ:Q1su6q+bnut+YxtlRM6Iiewph2MiA=\nR:metrics_test.go\na:0:0:444\nZ:Q1qq4lOe29UEl0eDT/10znbdBzdXQ=\nR:ocagent.go\na:0:0:444\nZ:Q1sLoJC8+ACkRMnp+qWhUDoUuDXJo=\nR:ocagent_test.go\na:0:0:444\nZ:Q1yUpIyYUeaA1mAOTxBI06B36WNZQ=\nR:trace_test.go\na:0:0:444\nZ:Q1QzoTvXcAvy/uW0TLLRtypVW6MTY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export/ocagent/wire\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1stY0zEiZ22pEGU4V9WKSWdlqw80=\nR:core.go\na:0:0:444\nZ:Q1jCrZHKLuzxU7UB9+J1OEfu455m4=\nR:metrics.go\na:0:0:444\nZ:Q18ntAzQHaUC8O61cG/x4/LkVbvuA=\nR:metrics_test.go\na:0:0:444\nZ:Q1rHw/6H90f7qzgIdTlGyrcmBF8DA=\nR:trace.go\na:0:0:444\nZ:Q1WS2q0wL+ZVx/VsbuqwF4o5thcgM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/export/prometheus\nM:0:0:555\nR:prometheus.go\na:0:0:444\nZ:Q1xcMBfSYJm3SyXvzFt2w3znXbiag=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/keys\nM:0:0:555\nR:keys.go\na:0:0:444\nZ:Q1h7KR6j6BfCMrw/WesXSykk+1djA=\nR:standard.go\na:0:0:444\nZ:Q1dft2i5/tE4j8Y9qPa3WXdZgChq0=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/label\nM:0:0:555\nR:label.go\na:0:0:444\nZ:Q1VqPyVvrn4kYgQIynwWpVnGzZLrg=\nR:label_test.go\na:0:0:444\nZ:Q1fkLR72dKejl4Ik8lwtvOvQH4t/I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/event/tag\nM:0:0:555\nR:tag.go\na:0:0:444\nZ:Q1nn9i2Se38OW1FmUHD5lUnamwbJU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/facts\nM:0:0:555\nR:facts.go\na:0:0:444\nZ:Q1Zli7iwZZIbkK1mFUXJAldUxwk28=\nR:facts_test.go\na:0:0:444\nZ:Q15tO25sZ2Mj7ihvh7FomydJeTQe4=\nR:imports.go\na:0:0:444\nZ:Q1+m0+1dJmo6H41MqJB7sH3B4PcAk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/fakenet\nM:0:0:555\nR:conn.go\na:0:0:444\nZ:Q1S8FDrl4df5VcT2aZVzmABdxW3jU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/fastwalk\nM:0:0:555\nR:fastwalk.go\na:0:0:444\nZ:Q1Sk8x/eq1EpV2l8HbFfBT/MxxVFE=\nR:fastwalk_darwin.go\na:0:0:444\nZ:Q1fJqJnc/TePva3Ub1iKFFCjhOZFI=\nR:fastwalk_dirent_fileno.go\na:0:0:444\nZ:Q1UQD4ALFTGt7kuHRkGPstaVG+RUE=\nR:fastwalk_dirent_ino.go\na:0:0:444\nZ:Q1wSSb5455wQkAEJZLB8aM7aRh/7o=\nR:fastwalk_dirent_namlen_bsd.go\na:0:0:444\nZ:Q1qnsnjPMCQvB9Dzn6LeSwi7qMU90=\nR:fastwalk_dirent_namlen_linux.go\na:0:0:444\nZ:Q1EPhmoxa8c7ew5DjM+VRV1wS6BC0=\nR:fastwalk_portable.go\na:0:0:444\nZ:Q1b8esHFqoxpkcRUQgjNzsiMUqK1o=\nR:fastwalk_test.go\na:0:0:444\nZ:Q1aPOuT0oCAi4PO6/Qhj7WMlPf+6w=\nR:fastwalk_unix.go\na:0:0:444\nZ:Q1SvZ383yCmjg5kSzeyJJdHQYOvwY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/fuzzy\nM:0:0:555\nR:input.go\na:0:0:444\nZ:Q1KLmay+BcVbBzmxwS/O9H7ASdyKQ=\nR:input_test.go\na:0:0:444\nZ:Q1HfotCvEwx4QUv4wroavMvBGCjlw=\nR:matcher.go\na:0:0:444\nZ:Q1uKJFgrQcRRy5Hn9YFwiDs8HLfQM=\nR:matcher_test.go\na:0:0:444\nZ:Q14v/sNUej2MfLCYF+eOkUwpCHJsU=\nR:symbol.go\na:0:0:444\nZ:Q1FjoWUza2H8Ym1jklXCapDS2J7eI=\nR:symbol_test.go\na:0:0:444\nZ:Q18uI30m86j6QHV/gzym0QK/Y5Eqk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gcimporter\nM:0:0:555\nR:bexport.go\na:0:0:444\nZ:Q1/gZJ4THJGfmURVnrgVFs1d3D6B4=\nR:bexport_test.go\na:0:0:444\nZ:Q1LogECKjSsQ2enUfpg551CNcb97Y=\nR:bimport.go\na:0:0:444\nZ:Q165c7xSJVT+ucIaX5RZFOImbx51k=\nR:exportdata.go\na:0:0:444\nZ:Q1cm8vWeNwwB7jOs84sof+eZq2Thc=\nR:gcimporter.go\na:0:0:444\nZ:Q1Z2lDDMtACfUSxouhLcZ6uSVJuhU=\nR:gcimporter_test.go\na:0:0:444\nZ:Q1sPI9ZCX/yVpjKEAhz5Pn4Awqm98=\nR:iexport.go\na:0:0:444\nZ:Q1NEq1taS6G0pX+VvibKLb0uzLIkQ=\nR:iexport_common_test.go\na:0:0:444\nZ:Q16wj5KNSS8STHZNHxxGmU5k93FdM=\nR:iexport_go118_test.go\na:0:0:444\nZ:Q1+SYK5ToQ8fEdUxugxt92DMWre5w=\nR:iexport_test.go\na:0:0:444\nZ:Q1gt+UC8XXMTXthsTj28ATFhSV1/I=\nR:iimport.go\na:0:0:444\nZ:Q17TfWsJ6D4qfn2Gl4bagQQ5vI/qo=\nR:israce_test.go\na:0:0:444\nZ:Q1HGEP3iTNeeZrjllUdekhAeheLXk=\nR:newInterface10.go\na:0:0:444\nZ:Q1QW2CVfefY05drEAmyFE1c/BY1i0=\nR:newInterface11.go\na:0:0:444\nZ:Q1wRvgVapDRuaTE5iLQ2z/Ai4v+Ik=\nR:shallow_test.go\na:0:0:444\nZ:Q1gWghj2B8KsChKl0mSHy+s64Njq8=\nR:stdlib_test.go\na:0:0:444\nZ:Q1/r5Cj2Ek4CoobUJcjpNqFQefJhQ=\nR:support_go117.go\na:0:0:444\nZ:Q1MW+6D3PyFhZPXSi+5UcG/uEbNk8=\nR:support_go118.go\na:0:0:444\nZ:Q1q2mglkknGsBTNItiJGCsWG7iv6s=\nR:unified_no.go\na:0:0:444\nZ:Q10sIdOor3DhZpXKIzmDz+qUsD0FU=\nR:unified_yes.go\na:0:0:444\nZ:Q1/SoIdcErahdJJBy9SnVMH2MmBhM=\nR:ureader_no.go\na:0:0:444\nZ:Q1nTCoP77sgJlAVX8h8ANzzykm2bg=\nR:ureader_yes.go\na:0:0:444\nZ:Q15ort+rA3q57PkK7eUNRdkCtf/Ys=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gcimporter/testdata\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1zVJ/mrm91MRXNJoiB8SrtpqKs1s=\nR:b.go\na:0:0:444\nZ:Q1kxKb/S0Y6Drvujkclad9qP4nWuo=\nR:exports.go\na:0:0:444\nZ:Q14pkLadpP1DZhRttFljU2peez8gs=\nR:issue15920.go\na:0:0:444\nZ:Q1RC0KSb6vSUFBbSefLvO704bK5Ro=\nR:issue20046.go\na:0:0:444\nZ:Q1WebmZT6Wj60Q209L/OWqniZrRXc=\nR:issue25301.go\na:0:0:444\nZ:Q1K4a7ZB4Ie91J3EqjrJmJCvuKjac=\nR:p.go\na:0:0:444\nZ:Q1lUYhwscE4cIofPdcBvKsixf5c4s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gcimporter/testdata/issue51836\nM:0:0:555\nR:a.go\na:0:0:444\nZ:Q1Az+n9ql76JhgbFi+yvolHWfrfZM=\nR:aa.go\na:0:0:444\nZ:Q1L5h+Alzu1cEHk8HrjdUPMDB/ruA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gcimporter/testdata/versions\nM:0:0:555\nR:test.go\na:0:0:444\nZ:Q1jRAyq8RUf/7TJZbEHdVuWd+KMxQ=\nR:test_go1.11_0i.a\na:0:0:444\nZ:Q1UEsjA6b0ABNX8b/KUjzFNSmRc2I=\nR:test_go1.11_6b.a\na:0:0:444\nZ:Q1Agy3dbU6Z/b6U3l+YBNZ/AEGaLE=\nR:test_go1.11_999b.a\na:0:0:444\nZ:Q13O1JkltNzNaPO4bpuAJ4ErrOiUg=\nR:test_go1.11_999i.a\na:0:0:444\nZ:Q1ACmhbWJMufi2bNE+KBtdWt2oB30=\nR:test_go1.7_0.a\na:0:0:444\nZ:Q1lgbaapkppAnmfYfyeygwkz+78QA=\nR:test_go1.7_1.a\na:0:0:444\nZ:Q1a3ExCoTqiLQvWL/nqFsQwjtN0jM=\nR:test_go1.8_4.a\na:0:0:444\nZ:Q1GDl5fr7vc9d+k2eexnpsqc6Kv/0=\nR:test_go1.8_5.a\na:0:0:444\nZ:Q1N9sDnnJ5HNhCNNTn7vQfn1ilX9s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gocommand\nM:0:0:555\nR:invoke.go\na:0:0:444\nZ:Q1xAkyun6UG211DmNiUqoujnexhBI=\nR:invoke_test.go\na:0:0:444\nZ:Q1mnnAxCbMmr1GhcltZTvX9wVw9/0=\nR:vendor.go\na:0:0:444\nZ:Q1NTgdrOwMp16im2FyaCKt++OMdOU=\nR:version.go\na:0:0:444\nZ:Q1m7jb0UJncAA5XFe6JK4enVaDhWg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/gopathwalk\nM:0:0:555\nR:walk.go\na:0:0:444\nZ:Q1gL4v/I/W38L9yxHxOWQ/MAtbGV4=\nR:walk_test.go\na:0:0:444\nZ:Q106nlCFZPMvL+3Dkdq3JyBiIaewI=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/goroot\nM:0:0:555\nR:importcfg.go\na:0:0:444\nZ:Q1csy+6yK+Od40sh0N9Ixx6Me/kx4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/imports\nM:0:0:555\nR:fix.go\na:0:0:444\nZ:Q1KbK+QjSZYJW+8Wh1pgvy4Gv3LsM=\nR:fix_test.go\na:0:0:444\nZ:Q18YLG1pmIHU0FLtvIeGzuVRp5bdY=\nR:imports.go\na:0:0:444\nZ:Q1fWvqdpWTdFcdkdRBdoTejjz+S1E=\nR:imports_test.go\na:0:0:444\nZ:Q1d+GkmIETSWm8FctK4Ixc7H+2wAY=\nR:mkindex.go\na:0:0:444\nZ:Q1JqtFG/HBdxMTAKD3o4mkxFDL34E=\nR:mkstdlib.go\na:0:0:444\nZ:Q1M7hWdVPUiSe/1fLCC9yxa/LSiwA=\nR:mod.go\na:0:0:444\nZ:Q1+oBmk1Zg9hV/nV4BSatjoxHbnn8=\nR:mod_cache.go\na:0:0:444\nZ:Q1wMTU3wip155A2uFJE13bX6cHclw=\nR:mod_cache_test.go\na:0:0:444\nZ:Q1H07PNSJ23DY80KTfjCdY/hPYilw=\nR:mod_test.go\na:0:0:444\nZ:Q1CX+hADp7689LhWqwa73YfK9d1CU=\nR:sortimports.go\na:0:0:444\nZ:Q1lgT6Bw83G+6U9evHGxzf2Rji2Gs=\nR:zstdlib.go\na:0:0:444\nZ:Q1+v3YW1xDOL8fjZGg4mbjUJJ0hLY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/imports/testdata\nM:0:0:555\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/imports/testdata/mod\nM:0:0:555\nR:example.com_v1.0.0.txt\na:0:0:444\nZ:Q1FjE0kuMY2gZuHyZQy0im079rs+k=\nR:golang.org_x_text_v0.0.0-20170915032832-14c0d48ead0c.txt\na:0:0:444\nZ:Q15SqL7X+V8tz4hLvZDalgmktPmXg=\nR:rsc.io_!q!u!o!t!e_v1.5.2.txt\na:0:0:444\nZ:Q1ad1vtdGVRh2z8Is9QEH23Hpi5gA=\nR:rsc.io_!q!u!o!t!e_v1.5.3-!p!r!e.txt\na:0:0:444\nZ:Q19+dBL0TR0yFPWARqhf8p6gZ8D/A=\nR:rsc.io_quote_v1.5.1.txt\na:0:0:444\nZ:Q1iBb+RIoli9xkp2WttI0ldtwBFok=\nR:rsc.io_quote_v1.5.2.txt\na:0:0:444\nZ:Q1Z66nZhg/09s/ywv2q6uep8h5h8Q=\nR:rsc.io_quote_v2_v2.0.1.txt\na:0:0:444\nZ:Q16cnpszTKGdTWgJNN8I36aA1EkN8=\nR:rsc.io_quote_v3_v3.0.0.txt\na:0:0:444\nZ:Q1BE/IKUIUmltAZK4VytYnPQJNYmw=\nR:rsc.io_sampler_v1.3.0.txt\na:0:0:444\nZ:Q1+OEWOBdVqR8Z+gzUO9u2QSsqUU4=\nR:rsc.io_sampler_v1.3.1.txt\na:0:0:444\nZ:Q1wCJmjiYZp0qKrYTMeM2FgXAaj4M=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/jsonrpc2\nM:0:0:555\nR:conn.go\na:0:0:444\nZ:Q17BJkFZgOKafH5kwwlliBgOleda0=\nR:handler.go\na:0:0:444\nZ:Q1B2G9pfL+4oGdQx7I/QAyHjYfWFw=\nR:jsonrpc2.go\na:0:0:444\nZ:Q1ke6OwdL6oH9T5GRzNEXKwQQC7g4=\nR:jsonrpc2_test.go\na:0:0:444\nZ:Q1tN8R1083BFfaPtONGC/oW7FxbSw=\nR:messages.go\na:0:0:444\nZ:Q1ErwG7geZ2SZvL+YiDDLpAYOEmlE=\nR:serve.go\na:0:0:444\nZ:Q1a5wNlRmUofTjQmuBzGtnkRfKR4o=\nR:serve_test.go\na:0:0:444\nZ:Q1jRkVEK5YhTQ3XnnjWlmP6fGeJXQ=\nR:stream.go\na:0:0:444\nZ:Q1L0Ocuwc7qaD73n1xTmcCBCo9sGc=\nR:wire.go\na:0:0:444\nZ:Q1OG+W/uh4vg37anG9UUhl3Frlcgw=\nR:wire_test.go\na:0:0:444\nZ:Q1QxLChPS6Vp+Xgi3Ee9KDIN4rzlY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/jsonrpc2/servertest\nM:0:0:555\nR:servertest.go\na:0:0:444\nZ:Q1ci5/UOYRoKp4CrfYkUIFlta/aEk=\nR:servertest_test.go\na:0:0:444\nZ:Q1Po0+V7o6XqCmO4Ju+vdMs3GdvxM=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/jsonrpc2_v2\nM:0:0:555\nR:conn.go\na:0:0:444\nZ:Q1vTRcLXdQ0LH//dN5iUveDM/jU+Q=\nR:frame.go\na:0:0:444\nZ:Q1gGK+noSzKV85USgJSTY+hdkra9Q=\nR:jsonrpc2.go\na:0:0:444\nZ:Q1ZGBHSRyvd1ib8+f9SiBhO8Gmca8=\nR:jsonrpc2_test.go\na:0:0:444\nZ:Q173ryd3ijBEybBkd2YD6y5TXxY5M=\nR:messages.go\na:0:0:444\nZ:Q1DXjT9Hpp6a6xzgTtP7hlbI/E3+U=\nR:net.go\na:0:0:444\nZ:Q1Fa4UQEd+KJCIqjWghrmrnh0Egck=\nR:serve.go\na:0:0:444\nZ:Q1k70nGF6p7FRTGgdFk3/Jl9sArbk=\nR:serve_go116.go\na:0:0:444\nZ:Q1E8OXgF9nuVdY3EC/meG3ExqkxhE=\nR:serve_pre116.go\na:0:0:444\nZ:Q1OP7OPc2Aht9my37nuIMMCgemQUo=\nR:serve_test.go\na:0:0:444\nZ:Q1nuRxVz8p2M4yap/P3ORIrqYFFmk=\nR:wire.go\na:0:0:444\nZ:Q1tr2ou0IQc97/yuJPtFdjIOGjzpc=\nR:wire_test.go\na:0:0:444\nZ:Q1/szfdbn0Yqg6CaK02BSqyBMItNg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/memoize\nM:0:0:555\nR:memoize.go\na:0:0:444\nZ:Q1wj0hoJXk1NI/RWIjLv1dwaKPIkY=\nR:memoize_test.go\na:0:0:444\nZ:Q1hjRQXYztsMSGj+DwT8VxIFA/szQ=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/packagesinternal\nM:0:0:555\nR:packages.go\na:0:0:444\nZ:Q1fmlxRmaNW05WPOP3RiS6dSMe3zk=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/persistent\nM:0:0:555\nR:map.go\na:0:0:444\nZ:Q1RC+ITfYgaKGysEfX7JIvDgyi4Wk=\nR:map_test.go\na:0:0:444\nZ:Q150gx39Uy/s4CgZ1M+fby7Ha5ZCg=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/pkgbits\nM:0:0:555\nR:codes.go\na:0:0:444\nZ:Q1qtCka+/2qcxNQfePAr3lGzxnitI=\nR:decoder.go\na:0:0:444\nZ:Q1w90qTOcoyGlpoz7Km0aEm+3yYkU=\nR:doc.go\na:0:0:444\nZ:Q14tU6LeN+NWv0ylhTf4NIwEIJNcU=\nR:encoder.go\na:0:0:444\nZ:Q1HNnFdGW/Bwacj+sLgpyz2b5a7d8=\nR:flags.go\na:0:0:444\nZ:Q1w9GmFz2NQpF1bdE94uXIi5wnjcI=\nR:frames_go1.go\na:0:0:444\nZ:Q1lmLrgKUU+PZiQYbqT6a4/87kxT0=\nR:frames_go17.go\na:0:0:444\nZ:Q1NGDZeA1zxrNltg8v4lGEtcUqGkU=\nR:reloc.go\na:0:0:444\nZ:Q1B54N4YIhh0OaD4VuP7wDcO+nY40=\nR:support.go\na:0:0:444\nZ:Q1juW7d4kCfCOe4RSDxi+2+cPUN9E=\nR:sync.go\na:0:0:444\nZ:Q1oM3nGCcqhLSuoe1uIr+KlGnwDZY=\nR:syncmarker_string.go\na:0:0:444\nZ:Q1wjSJd2BwISUEDVp8A6VcyO2EztY=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/proxydir\nM:0:0:555\nR:proxydir.go\na:0:0:444\nZ:Q17jeX2X80nuVhBWSrtUipm7VYPdE=\nR:proxydir_test.go\na:0:0:444\nZ:Q1RpvfsV8OLePfw+nuZJbRll11g9s=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/stack\nM:0:0:555\nR:parse.go\na:0:0:444\nZ:Q1c3HanyVrdBrUhjsfXkuQiSPKypA=\nR:process.go\na:0:0:444\nZ:Q19m586/xBdb49EFNvM2bGyWiIiuk=\nR:stack.go\na:0:0:444\nZ:Q13wEGjKSzqL4sRw3xDWzPzJuE+7Y=\nR:stack_test.go\na:0:0:444\nZ:Q12C110Zfq730l5DS+0g063BJJonE=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/stack/gostacks\nM:0:0:555\nR:gostacks.go\na:0:0:444\nZ:Q1fCUH1L3ZjP59PfJSwu83st6307Y=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/stack/stacktest\nM:0:0:555\nR:stacktest.go\na:0:0:444\nZ:Q1SMRx2+E/SjrJIVy1QjuCH18ccDw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/testenv\nM:0:0:555\nR:testenv.go\na:0:0:444\nZ:Q1BGA2w94thJpPR/dqoKDWsBU5L5Q=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/tool\nM:0:0:555\nR:tool.go\na:0:0:444\nZ:Q1vlu7yeR42q6ZjfQJPSXX4gPDv+I=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/typeparams\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1TlbCtp9Rmfb+nqTpZuIGHnRINEo=\nR:common_test.go\na:0:0:444\nZ:Q1b5uMnbKN5Brg/LcrBF0avBf9olY=\nR:copytermlist.go\na:0:0:444\nZ:Q187loqCpERWK5cZ0u4ep//uWFTe0=\nR:coretype.go\na:0:0:444\nZ:Q11IufE++oj0+EX0peeYMiJH2D3mc=\nR:coretype_test.go\na:0:0:444\nZ:Q1jq6m+tG2zIqZtRQqIy8oTFWeCIk=\nR:enabled_go117.go\na:0:0:444\nZ:Q1qeLtpHSTRJHhNr/C7jmLDqsf63E=\nR:enabled_go118.go\na:0:0:444\nZ:Q1vf7XYCUePsFzpWK9RAfTwbxDsB0=\nR:normalize.go\na:0:0:444\nZ:Q1GApHr+k4LlrRi0nsnCMMuR2WCPE=\nR:normalize_test.go\na:0:0:444\nZ:Q1KWsTW8Krf1IHRRbFQ/LlrADj20w=\nR:termlist.go\na:0:0:444\nZ:Q1OHtrmXsMMDqAlFxj10HtGSh+snI=\nR:typeparams_go117.go\na:0:0:444\nZ:Q1omAA5ZgQkzIuKPJoQvliy3pjVTQ=\nR:typeparams_go118.go\na:0:0:444\nZ:Q1SxLowyv/LE5hca5scOxEmIq0eC0=\nR:typeparams_test.go\na:0:0:444\nZ:Q1HrLHqO1rZbXOm5nRws68IlvRIUQ=\nR:typeterm.go\na:0:0:444\nZ:Q1lM2e/qDPwY7jlho7PGwK0ZJOTIs=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/typeparams/genericfeatures\nM:0:0:555\nR:features.go\na:0:0:444\nZ:Q1kw8E+zcspC8+aHA0bLoTWmS4fug=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/typesinternal\nM:0:0:555\nR:errorcode.go\na:0:0:444\nZ:Q1HIGnY4hOVCWNA2N5P8BwQUwHhvA=\nR:errorcode_string.go\na:0:0:444\nZ:Q1TnstK82SbZhLbjzkTXiZM/3b3XE=\nR:types.go\na:0:0:444\nZ:Q1bhtUqaapNekzRAlwZ2OEiDaWge4=\nR:types_118.go\na:0:0:444\nZ:Q1tAuWfeqAHe1x6VmpPysroqtCP60=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/internal/xcontext\nM:0:0:555\nR:xcontext.go\na:0:0:444\nZ:Q1HycbjE0qLCiqPfthD5s8hGpQ1o8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/playground\nM:0:0:555\nR:playground.go\na:0:0:444\nZ:Q1gWfackcC/Kmr83zboxGXXoXjeA4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/playground/socket\nM:0:0:555\nR:socket.go\na:0:0:444\nZ:Q1NRsUl8RLz8SayXDM0ZqyU2qe2kk=\nR:socket_test.go\na:0:0:444\nZ:Q13qoXuqY0U2aRmwaSKXbd4Lt7jK4=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/present\nM:0:0:555\nR:args.go\na:0:0:444\nZ:Q1G6eiqcA6d745HMRXpVKDGWHo0r8=\nR:caption.go\na:0:0:444\nZ:Q1k5jK19OPvLPmY2+6xwNT2GFvCag=\nR:code.go\na:0:0:444\nZ:Q1RBiy+HUhllhAm0b5QWnq5CTjbSQ=\nR:code_test.go\na:0:0:444\nZ:Q1eSYuhNCVBV2FXhcNf9D6AvcPPk0=\nR:doc.go\na:0:0:444\nZ:Q1iai4VCQOP7/bCSglykeVuhXm9EE=\nR:html.go\na:0:0:444\nZ:Q1L8CNKSM29yDasuxTk3cykySnN7k=\nR:iframe.go\na:0:0:444\nZ:Q1pkoRW9jHLibi4wBkIZE5INOdhG8=\nR:image.go\na:0:0:444\nZ:Q11yH4TxXriEjX8V7ERpzVIefHabs=\nR:link.go\na:0:0:444\nZ:Q1nV9J4txO20MMgJSXAgWlWseLgAo=\nR:link_test.go\na:0:0:444\nZ:Q15QUCMvht5NpJQdlymK1n/a/hYT4=\nR:parse.go\na:0:0:444\nZ:Q1Jqn9qEQ6bT4zBH8l6ShK7OqGwPI=\nR:parse_test.go\na:0:0:444\nZ:Q1FJT77Dxk12KctIBjwtpuDtU1YbQ=\nR:style.go\na:0:0:444\nZ:Q1enRlMKIX2i4qqwfPXqt3RLhVsmI=\nR:style_test.go\na:0:0:444\nZ:Q1giT68bDq0cXYpcp/ycOjRYJpBts=\nR:video.go\na:0:0:444\nZ:Q1aZVkEcaDpE7vWQEcOqDtmzhdGvw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/present/testdata\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1tQJT5Nk90r7WxA2E4N56wMj9B38=\nR:basic.md\na:0:0:444\nZ:Q1OAvVUgS6nA1EAS8VL0B1GCGyztw=\nR:basic.p\na:0:0:444\nZ:Q1e8LIhIrvwGsbke9PCdfMybRqmFo=\nR:code.md\na:0:0:444\nZ:Q1fuFyK1liFNKJHUubjL0vod8xn4U=\nR:code.p\na:0:0:444\nZ:Q1kzN0EnuSUBtmw/sjwIzEcfJyG5M=\nR:code.txt\na:0:0:444\nZ:Q1NUjrjskBm2jh5mVg4Q+jkH+Yrr4=\nR:list.md\na:0:0:444\nZ:Q1VixB3mX3pR8HQSBPKW0jyTeukzs=\nR:list.p\na:0:0:444\nZ:Q1j7VcYa/xtL2svxM4HUw8+GKuznQ=\nR:media.html\na:0:0:444\nZ:Q1H5ixmj6XQxwi1c8PrherO9bEt+Q=\nR:media.md\na:0:0:444\nZ:Q1O8VuSjHksA94UrL19SP/zNouYpA=\nR:media.p\na:0:0:444\nZ:Q1kKxqs7yYr/5ceAig/nQQjJXt2Eg=\nR:pre.md\na:0:0:444\nZ:Q1jehK39YmHgdpIiWf8J6i63xIGEA=\nR:pre.p\na:0:0:444\nZ:Q1ly05zgI4gfaiN8cpfcSN1cDqk/w=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor\nM:0:0:555\nR:README\na:0:0:444\nZ:Q1cLEKhFZ1oi0ZAh8OcaYdoSMySco=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor/eg\nM:0:0:555\nR:eg.go\na:0:0:444\nZ:Q10wwyceDd1pc3Zm2E0U9GC7WTeHU=\nR:eg_test.go\na:0:0:444\nZ:Q1u/1upYejcpK+ow9QD7nQRWfgiPw=\nR:match.go\na:0:0:444\nZ:Q1uWRJaPa/OAJGzSethiWdt9fhBGw=\nR:rewrite.go\na:0:0:444\nZ:Q1oAByw3fRjat3LI03hktZXNiCaWw=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor/eg/testdata\nM:0:0:555\nR:A.template\na:0:0:444\nZ:Q1h+i0uJvyguHSXuCDbz2bPWBlgxU=\nR:A1.go\na:0:0:444\nZ:Q1FpNz80TfpbzUFe6MHKQDfTaIzPA=\nR:A1.golden\na:0:0:444\nZ:Q168lY3NT2IFZJ7FTbq1+I+vGhUj0=\nR:A2.go\na:0:0:444\nZ:Q1CkKSoqNjMD2gkEgLi1ba2J6l/ig=\nR:A2.golden\na:0:0:444\nZ:Q137c5vVz8eBm0ebd2ZW9+YDwfUCg=\nR:B.template\na:0:0:444\nZ:Q14tp3+OVVJiyuU69NbOs/d4YFOAU=\nR:B1.go\na:0:0:444\nZ:Q1EJ7zQ9mqhRlkDZERyC4SYVx3m5g=\nR:B1.golden\na:0:0:444\nZ:Q1ScTZS35MuHbbHBN349o5BqizGP4=\nR:C.template\na:0:0:444\nZ:Q1YkQkuU5pbRY7591gmEToqGBncGg=\nR:C1.go\na:0:0:444\nZ:Q1plTUhBGY8rbl58defqcxTWmlmlo=\nR:C1.golden\na:0:0:444\nZ:Q1qQzfcMs9z9XEolZT2qOqCZlEXQ4=\nR:D.template\na:0:0:444\nZ:Q1KFyyrAr9kNI23X8IT+eJp6621KM=\nR:D1.go\na:0:0:444\nZ:Q1h2AUYsDEQIuOrtnuRGD5efu/B3Q=\nR:D1.golden\na:0:0:444\nZ:Q18+Ty/ccwLaeh7/3Mfgo+sCj1/bM=\nR:E.template\na:0:0:444\nZ:Q1slf0vAIFgEM7Hw2/fPrZOxGI0XQ=\nR:E1.go\na:0:0:444\nZ:Q1CTSBIgnWZZo9Mr8Y5zyiRG/2FnA=\nR:E1.golden\na:0:0:444\nZ:Q196VxjK1QXYcSU1jX9Y1CF/8T8ps=\nR:F.template\na:0:0:444\nZ:Q1jamY4JYIYPjqI17krn8biiU8Chs=\nR:F1.go\na:0:0:444\nZ:Q1QRxVFSDTb1k3iNALy7wHXd4CA8U=\nR:F1.golden\na:0:0:444\nZ:Q1k+4vGTU/UqVQD4qqrEXGxCgeMss=\nR:G.template\na:0:0:444\nZ:Q1mNrVF+VL5dtws+q0WynpZxZx5Oo=\nR:G1.go\na:0:0:444\nZ:Q1Iu2qXfyUmmS1uzIgoyEc7FZcbRI=\nR:G1.golden\na:0:0:444\nZ:Q1Aebtje7tMYfiokdMJpEBZFbLsTE=\nR:H.template\na:0:0:444\nZ:Q1QI7d6ytV0OqhtcU+RW4T6QWTltQ=\nR:H1.go\na:0:0:444\nZ:Q1hqrEvp6pMNNONQey5ZPf1FoIFOA=\nR:H1.golden\na:0:0:444\nZ:Q1UURUeRZM3BTenAxel5MlM89rKA8=\nR:I.template\na:0:0:444\nZ:Q1nJi+roGwCFdSv2P9ob0Lmbp0kIo=\nR:I1.go\na:0:0:444\nZ:Q1UkFqSD9IpP0cGWH7BiNtBh5Sr/4=\nR:I1.golden\na:0:0:444\nZ:Q1p9EBZ4fpWX8Wy4bAox54J72FEWQ=\nR:J.template\na:0:0:444\nZ:Q1sz1iU8t+kp+ZdnUgmff6Kx21Kck=\nR:J1.go\na:0:0:444\nZ:Q1e4Ho2MwsoUVwNSkrQVVpjF5k2Qo=\nR:J1.golden\na:0:0:444\nZ:Q1WrxviydfvwWk5L4y10T8lzLS1uE=\nR:bad_type.template\na:0:0:444\nZ:Q1Y0yAr89BSpy47N4brnsRpzI3/tQ=\nR:expr_type_mismatch.template\na:0:0:444\nZ:Q16QzoUnDc2pxJ9TQgoAjb/AaBXTg=\nR:no_after_return.template\na:0:0:444\nZ:Q1bKyOp2UXbyHL82lKXos2dz2aLjU=\nR:no_before.template\na:0:0:444\nZ:Q1rx4dkFcPgZfJkdx3PAK7epNHGkk=\nR:type_mismatch.template\na:0:0:444\nZ:Q1ladGzV7YcK1dh54bcIu/4favOh8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor/importgraph\nM:0:0:555\nR:graph.go\na:0:0:444\nZ:Q1IFAhlbeymHLVS3R95xrN46gDRZo=\nR:graph_test.go\na:0:0:444\nZ:Q1XFrDaLSK0SfnJ5o6s2un878+cW8=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor/rename\nM:0:0:555\nR:check.go\na:0:0:444\nZ:Q1fK9yFEiUow2JTbeHJp9I+4/AzFU=\nR:mvpkg.go\na:0:0:444\nZ:Q1A1y0bGxoai1TowF0a8eZiXO7ODI=\nR:mvpkg_test.go\na:0:0:444\nZ:Q12vas4Q5NyIFwtHUbCxMzhObTfRs=\nR:rename.go\na:0:0:444\nZ:Q1idMAs0R+yEnMDaN7rwI/Hnxk9cY=\nR:rename_test.go\na:0:0:444\nZ:Q1rP7HSczAtJhGYJPSPwdXNeq9boY=\nR:spec.go\na:0:0:444\nZ:Q10Dl7dQjJlCvu3CoXYtERJXJzx2A=\nR:util.go\na:0:0:444\nZ:Q1XDcVtERM6PREdd1iIM1fE40WQJA=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/refactor/satisfy\nM:0:0:555\nR:find.go\na:0:0:444\nZ:Q1x/0iXzdyoYHW6qaBOysl6Zx6L8s=\nR:find_test.go\na:0:0:444\nZ:Q1Hq6EY6nA7LcX1DVICtHwUPH/ttU=\nF:root/go/pkg/mod/golang.org/x/tools@v0.3.0/txtar\nM:0:0:555\nR:archive.go\na:0:0:444\nZ:Q1xKnuZiTzEW9Jo1wojt+kkzZNjPQ=\nR:archive_test.go\na:0:0:444\nZ:Q1QXitacdgoGmIG1XrLvdpR9h+e54=\nF:root/go/pkg/mod/google.golang.org\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e\nM:0:0:555\nR:CODE_OF_CONDUCT.md\na:0:0:444\nZ:Q10zD13Oh/24ERiYNPdZgb34E5wW8=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1LJcot4BqjsUDzZEEi8awnsaIcm8=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1jlCth4J97ciMn/Fic2tQBw/3c7w=\nR:RELEASING.md\na:0:0:444\nZ:Q1393JigJXpuWQGy0aJfwVT4EYZno=\nR:SECURITY.md\na:0:0:444\nZ:Q1d5v8uGmX7m9RrjtIt1bGNSeuivo=\nR:go.mod\na:0:0:444\nZ:Q1T2doBKNuMOZ4n45IfbjBdGiELDA=\nR:go.sum\na:0:0:444\nZ:Q1toODh7LrIX7AWa0pzLjI8Jhzht0=\nR:regen.txt\na:0:0:444\nZ:Q1bfjzkPo1HYBIgjSMRNuUr4fMkyA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/.github\nM:0:0:555\nR:CODEOWNERS\na:0:0:444\nZ:Q1vjbRcz1nxtQpX9Mzb65KQ2V1CPw=\nR:blunderbuss.yml\na:0:0:444\nZ:Q1fX3J/2K8I7i0Of2wckrjsYzfT44=\nR:renovate.json\na:0:0:444\nZ:Q1mVsrP4dGTzlUYqOI8bI7ILwZJkE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/.github/workflows\nM:0:0:555\nR:apidiff.yaml\na:0:0:444\nZ:Q1hHg0AH6SvfoJ5UH/vYrQKzmbtUM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/firestore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/firestore/bundle\nM:0:0:555\nR:bundle.pb.go\na:0:0:444\nZ:Q1Py6QcOMdmMIzhPtH+r1CdokggYc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk/v2\nM:0:0:555\nR:account_linking.pb.go\na:0:0:444\nZ:Q1XKSlU+MsLPJ1FIQyD4cFgjji7RQ=\nR:account_linking_secret.pb.go\na:0:0:444\nZ:Q1djGDQqGQYEwECIQ9sdV6lFdRDwY=\nR:action.pb.go\na:0:0:444\nZ:Q1qopyGv2hrLWhN0SkwR2pj+a3KFE=\nR:actions_sdk.pb.go\na:0:0:444\nZ:Q1IlMU4sN+TZ69i3rFjpFQc/vHSWY=\nR:actions_testing.pb.go\na:0:0:444\nZ:Q1Snl5R88YpKJLcT21GQ1DlNYVRe0=\nR:config_file.pb.go\na:0:0:444\nZ:Q1IAf60Ykh3rAvmLu8w5M3H1NvODs=\nR:data_file.pb.go\na:0:0:444\nZ:Q1hdAOjumf9Z0Bb6EU9zWk4D0cIoA=\nR:event_logs.pb.go\na:0:0:444\nZ:Q19sJ3PaCKoL3hfcmUsAnaUrMPM6o=\nR:files.pb.go\na:0:0:444\nZ:Q1r868Wx/xA+UeDJGCi3Dp2Go9mEY=\nR:localized_settings.pb.go\na:0:0:444\nZ:Q1eQ7x3p64T+L5DS3X7KfpU70vNu4=\nR:manifest.pb.go\na:0:0:444\nZ:Q13l8N1FT3+ocQC9ThedW1iAmNWtc=\nR:release_channel.pb.go\na:0:0:444\nZ:Q1nRNIrrMBP5exeMFkKijp/VURT4Q=\nR:settings.pb.go\na:0:0:444\nZ:Q1H2MDYgq5bkjNL2lwZ699uqeM1gE=\nR:surface.pb.go\na:0:0:444\nZ:Q1xBAPJEH8vAJYXBnTcdEhYGd6/dk=\nR:theme_customization.pb.go\na:0:0:444\nZ:Q1cXMnQ+pbhWxhOI91LjyVsBPeS00=\nR:validation_results.pb.go\na:0:0:444\nZ:Q19SOqAbyHax9hTFKpwmcphw8IR0c=\nR:version.pb.go\na:0:0:444\nZ:Q1V+HBUQv7ftPKzCikxCfBVt9KaBY=\nR:webhook.pb.go\na:0:0:444\nZ:Q1y/4RDfkV5ji4zrIeqvpLdP1AP8M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk/v2/conversation\nM:0:0:555\nR:canvas.pb.go\na:0:0:444\nZ:Q1ybsCtrYZg4B+o7F0LkgaUqtHJx8=\nR:card.pb.go\na:0:0:444\nZ:Q1KN5Yu/9KwSR1WE7sSFGrA+ut69Y=\nR:collection.pb.go\na:0:0:444\nZ:Q1GzOSdK7ngoz+LQaj7wjL/6C0JSw=\nR:content.pb.go\na:0:0:444\nZ:Q18zMcZIWrHBr5CE3X6l34xNfMZhI=\nR:image.pb.go\na:0:0:444\nZ:Q1LPQ/nmaoiFEh/m3kdd0q8S6Z6gA=\nR:intent.pb.go\na:0:0:444\nZ:Q1CzRcCXzEezLvB2xi1iEQPdUjiW4=\nR:link.pb.go\na:0:0:444\nZ:Q1hUzpTyKh24/0AlLzdv9sB6VVhLY=\nR:list.pb.go\na:0:0:444\nZ:Q1n8YHiEwUzCE5vpIkUSvfIeMXH28=\nR:media.pb.go\na:0:0:444\nZ:Q1fo/JhiduIJwl6TYmF1VjnbXfnHM=\nR:prompt.pb.go\na:0:0:444\nZ:Q1i37LnYcd3jJ5qP321PH5atN7X4Q=\nR:scene.pb.go\na:0:0:444\nZ:Q1byy+wTUUeMnz8XvwXwWYEnSI57U=\nR:simple.pb.go\na:0:0:444\nZ:Q1hVtoSb6SCXezhKBkzBfL9pwA9VM=\nR:suggestion.pb.go\na:0:0:444\nZ:Q1xl+BBH2osI1txKs6ZHF/hSTMaq4=\nR:table.pb.go\na:0:0:444\nZ:Q1X+ExPu78hYZJdYanrLCyQee05a4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk/v2/interactionmodel\nM:0:0:555\nR:conditional_event.pb.go\na:0:0:444\nZ:Q1IHyKkwlfVt5mnyrdzgtoQe3jJ7E=\nR:entity_set.pb.go\na:0:0:444\nZ:Q1lYtAlYG1DFKOQmifNEaFlxFhqjM=\nR:event_handler.pb.go\na:0:0:444\nZ:Q11x0/Sd3HW7dSEWdcZ0XbX+wmXFk=\nR:global_intent_event.pb.go\na:0:0:444\nZ:Q1op7cNgv5xAwlNOY7wyQYcVJRmT0=\nR:intent.pb.go\na:0:0:444\nZ:Q1QbYGzz34QmGBDWsl8dSo5nEr9PI=\nR:intent_event.pb.go\na:0:0:444\nZ:Q1mum1GjYrkOl3VcU6hJPfTyD6vrk=\nR:scene.pb.go\na:0:0:444\nZ:Q1Cc30u6gi5tLK+KaPXZ0xSRWfFIE=\nR:slot.pb.go\na:0:0:444\nZ:Q1uS777ORWcXD4B1yRIa15v5l+F6I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk/v2/interactionmodel/prompt\nM:0:0:555\nR:static_canvas_prompt.pb.go\na:0:0:444\nZ:Q15SbavKWBOdboPdUPpcVTmwDs1Qg=\nR:static_card_prompt.pb.go\na:0:0:444\nZ:Q1o5qoDOTGkYVUxpDopFwb+J4L5No=\nR:static_collection_browse_prompt.pb.go\na:0:0:444\nZ:Q1ZHBIbKC0hcAx7fJ8l1HIVF4vL48=\nR:static_collection_prompt.pb.go\na:0:0:444\nZ:Q1PSILpEjVPiIgCleKZk9vB65xfQw=\nR:static_content_prompt.pb.go\na:0:0:444\nZ:Q1mQuHD5K1Xp3iBLk/jCvmIOXyxlg=\nR:static_image_prompt.pb.go\na:0:0:444\nZ:Q1SBL3P7W+5PYgI74YgDhagwEOAlU=\nR:static_link_prompt.pb.go\na:0:0:444\nZ:Q1IZIgC07BrIxrz2+QOFoGBvW8mo0=\nR:static_list_prompt.pb.go\na:0:0:444\nZ:Q1sqgUwRehSKf9TLOhh5ltnpN1nSI=\nR:static_media_prompt.pb.go\na:0:0:444\nZ:Q1r7Lb4mv9nAaS0u0CAH6EZLmdXE0=\nR:static_prompt.pb.go\na:0:0:444\nZ:Q1hMGpY0BdmEWhcDd60AAMahnwQa0=\nR:static_simple_prompt.pb.go\na:0:0:444\nZ:Q11OpqDYJgO+m3rpD/2bkEftDgeA4=\nR:static_table_prompt.pb.go\na:0:0:444\nZ:Q1wm0+TJ2dGmpLtCvAPuUsnhnUZLc=\nR:suggestion.pb.go\na:0:0:444\nZ:Q1gqv/gbubrO9e6GT+uywr7r9mNqA=\nR:surface_capabilities.pb.go\na:0:0:444\nZ:Q13AFnYck4ndazxyvGMbwZz6kqIRk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/actions/sdk/v2/interactionmodel/type\nM:0:0:555\nR:class_reference.pb.go\na:0:0:444\nZ:Q1zNLu1rJeVtd5yQgh6NplbIlQYIQ=\nR:entity_display.pb.go\na:0:0:444\nZ:Q18EIpWa4J7bwdwiWRTVh5e/Lm3RU=\nR:free_text_type.pb.go\na:0:0:444\nZ:Q15L5PR8Dn7G9DYN5snfNcocMoBKw=\nR:regular_expression_type.pb.go\na:0:0:444\nZ:Q1uptRDUkX5dR+qwdyTdxNnjT6BKY=\nR:synonym_type.pb.go\na:0:0:444\nZ:Q1bIRYLw9UCaH+9igDK9fkrGO30hw=\nR:type.pb.go\na:0:0:444\nZ:Q1mJ7KMP6XQ0W24uPf9nRvfCxE1UU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/admin/v1alpha\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1Lxt/NQ66kFpSt6hKkj8GfzNXeRg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/admin/v1beta\nM:0:0:555\nR:analytics_admin.pb.go\na:0:0:444\nZ:Q17LNsdPC9y4pHP0zdHpC5QDChehc=\nR:resources.pb.go\na:0:0:444\nZ:Q176O9qADLhPPdq+DiydHfFimQYak=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/data\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/data/v1alpha\nM:0:0:555\nR:analytics_data_api.pb.go\na:0:0:444\nZ:Q1B6xpPoQ/bEVlax/wmvQcj2+l89k=\nR:data.pb.go\na:0:0:444\nZ:Q1rwFjQXUiPHtVwkcufP+99xuOpPo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/data/v1beta\nM:0:0:555\nR:analytics_data_api.pb.go\na:0:0:444\nZ:Q14kT+FmkTpmS3Rw9daJgVa0ux5UM=\nR:data.pb.go\na:0:0:444\nZ:Q10rKF6fXD47C0TtyjLacyPEmSj7k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/management\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/analytics/management/v1alpha\nM:0:0:555\nR:management_api.pb.go\na:0:0:444\nZ:Q1SD/MDUCyeGdkJErhw3EwX25w4io=\nR:resources.pb.go\na:0:0:444\nZ:Q1DXlbiJhVmMGH0hyWXndSB4IDeLc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api\nM:0:0:555\nR:launch_stage.pb.go\na:0:0:444\nZ:Q13chqqXfkpEbCaadBKc3G/w51MCA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/annotations\nM:0:0:555\nR:annotations.pb.go\na:0:0:444\nZ:Q1kxWnlxb2yPzoq/BL2JmFiX+EGLs=\nR:client.pb.go\na:0:0:444\nZ:Q1yyt1liDnrjU6RP/tzLrpgnfexkQ=\nR:field_behavior.pb.go\na:0:0:444\nZ:Q1PMMo9bUm9LOpmSXPQ8GMSAzUicM=\nR:http.pb.go\na:0:0:444\nZ:Q1iuffkyHQ/TsrSBvtmqpSYldcqck=\nR:resource.pb.go\na:0:0:444\nZ:Q1GmTeoWD5/9dvKBgYIKCxSugOVe4=\nR:routing.pb.go\na:0:0:444\nZ:Q1sXHm6XFCFnu2d/u3dJ/UiZ5aODY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/apikeys\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/apikeys/v2\nM:0:0:555\nR:apikeys.pb.go\na:0:0:444\nZ:Q1HOJ31X5hmmCV4zgGsl1knCqH+ws=\nR:resources.pb.go\na:0:0:444\nZ:Q1NjMKMOC5btdQqfcPq3oz7kw1fpg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/configchange\nM:0:0:555\nR:config_change.pb.go\na:0:0:444\nZ:Q1dOADN7UqxQe5umeiv8MN/45McKQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/distribution\nM:0:0:555\nR:distribution.pb.go\na:0:0:444\nZ:Q1c866mfjaWhG9zmBEK6RqDuC8tuo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/error_reason\nM:0:0:555\nR:error_reason.pb.go\na:0:0:444\nZ:Q1IDgXe74DRzEBO2JO8tC/c3u1E/8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/expr\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/expr/conformance\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/expr/conformance/v1alpha1\nM:0:0:555\nR:conformance_service.pb.go\na:0:0:444\nZ:Q1cNNTQQjuRtCKe+wjIZ7C2OR54O4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/expr/v1alpha1\nM:0:0:555\nR:checked.pb.go\na:0:0:444\nZ:Q1XHGlRikSha47xj6ZIw7OcnoggI0=\nR:eval.pb.go\na:0:0:444\nZ:Q1mTFzMzj8MoCouriFoPoWkKzQYew=\nR:explain.pb.go\na:0:0:444\nZ:Q1WR0petRgKHaGqQnBomiRtlNgsL4=\nR:syntax.pb.go\na:0:0:444\nZ:Q1jWTsqWVxN34gk0Ra+5BkzRHfUUk=\nR:value.pb.go\na:0:0:444\nZ:Q1TonFSqnO3OnE8PA6sACE85KWqqM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/expr/v1beta1\nM:0:0:555\nR:decl.pb.go\na:0:0:444\nZ:Q1UBiyro+o7ZwW3utZ9Yc8M1t1gs0=\nR:eval.pb.go\na:0:0:444\nZ:Q1PyBzfl1u96Eee3rVmPE2gbUV9eA=\nR:expr.pb.go\na:0:0:444\nZ:Q1mzu0e68Wu4dCnBcK2iprkygE7h4=\nR:source.pb.go\na:0:0:444\nZ:Q1hZOR23fSjEDUz8c9nfZ+M3JimTo=\nR:value.pb.go\na:0:0:444\nZ:Q12FSQTvqwvDJXndHof9xpcGxurbw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/httpbody\nM:0:0:555\nR:httpbody.pb.go\na:0:0:444\nZ:Q1mNtgfr+CirnD4SkYnyqS4+uQQ2w=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/label\nM:0:0:555\nR:label.pb.go\na:0:0:444\nZ:Q1CDXAny7/0uUXbCTF+aaiQMwAprk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/metric\nM:0:0:555\nR:metric.pb.go\na:0:0:444\nZ:Q1AWDuW+48gcrgkIHHTbbqC+9ctBk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/monitoredres\nM:0:0:555\nR:monitored_resource.pb.go\na:0:0:444\nZ:Q1arC3r7pK8ipVjzOk94gBY3QR9aA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/serviceconfig\nM:0:0:555\nR:auth.pb.go\na:0:0:444\nZ:Q1cDsjFw7MMF5CgPx3SEWoEm1YW4E=\nR:backend.pb.go\na:0:0:444\nZ:Q1l0mnjIyMkQT+PlQIw2EUy9FzXE0=\nR:billing.pb.go\na:0:0:444\nZ:Q1lc90eBmVt7j4xE3UnMPpbunkdVM=\nR:consumer.pb.go\na:0:0:444\nZ:Q1Bnmm6tkIVZtIKQy3Yx+jWX6a83g=\nR:context.pb.go\na:0:0:444\nZ:Q1108cJ0APFdaSOgf3P2pWXtf571U=\nR:control.pb.go\na:0:0:444\nZ:Q1C39C7/cZ3YHQNnI4v56LUdTWHaM=\nR:documentation.pb.go\na:0:0:444\nZ:Q1anBQ/hfl0QXuwDWswZHKEhf9z7o=\nR:endpoint.pb.go\na:0:0:444\nZ:Q1HYX42wFTTHLOJI6fkzPGoIi3A08=\nR:log.pb.go\na:0:0:444\nZ:Q1EYO+VDctWP09b1jzryjvGJx+NYo=\nR:logging.pb.go\na:0:0:444\nZ:Q15A2bl+UXGnU7IrTlHMCpHEjUCFw=\nR:monitoring.pb.go\na:0:0:444\nZ:Q10vV2ZMOlt7NmtFV+gdQmBxj+ZXA=\nR:quota.pb.go\na:0:0:444\nZ:Q1sHnCfe7n6FCAO1gTKL7puKJhvIg=\nR:service.pb.go\na:0:0:444\nZ:Q1v5RtfGIACc+ikfIyXj8/KpOtYDI=\nR:source_info.pb.go\na:0:0:444\nZ:Q1I2m0XCoWbDJK2/1n9brpE1pbTxk=\nR:system_parameter.pb.go\na:0:0:444\nZ:Q1toy8zviWlC/OtTpb6UzUPGcAl2o=\nR:usage.pb.go\na:0:0:444\nZ:Q1UUC3uk7cg6Meb3Mb/hB56/SohQw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/servicecontrol\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/servicecontrol/v1\nM:0:0:555\nR:check_error.pb.go\na:0:0:444\nZ:Q1C7b0p59fRMpk7EAABd2J3bLSmBw=\nR:distribution.pb.go\na:0:0:444\nZ:Q1WmTOqB/zArjJwZHk0GU/qMwcRLk=\nR:http_request.pb.go\na:0:0:444\nZ:Q1IylJJ7mLG/HMOnHUU9InCW3JZIM=\nR:log_entry.pb.go\na:0:0:444\nZ:Q1LOOQCjgr6cs3Vev257lu2tJCCvQ=\nR:metric_value.pb.go\na:0:0:444\nZ:Q1ennbboSs/dZZd7kmysqoLYsI4Rc=\nR:operation.pb.go\na:0:0:444\nZ:Q1FnBajtluHtJKNsSSvdA5F7MrxOc=\nR:quota_controller.pb.go\na:0:0:444\nZ:Q1TaUQA8Sro4vIKcW+JEFpvTITIw4=\nR:service_controller.pb.go\na:0:0:444\nZ:Q1HThhMksmWOFvsg44kYlCvyynfbE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/servicecontrol/v2\nM:0:0:555\nR:service_controller.pb.go\na:0:0:444\nZ:Q1uYBY9tC9AFhBUr3U2rDn6ut+87k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/servicemanagement\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/servicemanagement/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1WJJ65Rj0l+cXIHCv1DLgeup9KWw=\nR:servicemanager.pb.go\na:0:0:444\nZ:Q1nSWn3tMp6ovvMKsFS1zXsZ2w9tU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/serviceusage\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/serviceusage/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1ZVVqVc/h6euVhjonbrFdVKD8TaQ=\nR:serviceusage.pb.go\na:0:0:444\nZ:Q1Cu/PxYRiAQIKNRkK6oGRmaaMb/c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/serviceusage/v1beta1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q170+yovYTkfw0S/EKJuhoH4AmuFA=\nR:serviceusage.pb.go\na:0:0:444\nZ:Q1mqxch5nBFCn2n5lJQv9IXU+ExIc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/api/visibility\nM:0:0:555\nR:visibility.pb.go\na:0:0:444\nZ:Q1ABSVajtBBQo5rOJcpZRpoxtkRCg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine/legacy\nM:0:0:555\nR:audit_data.pb.go\na:0:0:444\nZ:Q1TYG8/JwpSXgEgumkYIqwrN/PyMU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine/logging/v1\nM:0:0:555\nR:request_log.pb.go\na:0:0:444\nZ:Q1sy/MGsMSmnbHsonnFRidAcDWTr8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine/v1\nM:0:0:555\nR:app_yaml.pb.go\na:0:0:444\nZ:Q1Q03HcNWKH4plkFLWFWqKz7RjWbQ=\nR:appengine.pb.go\na:0:0:444\nZ:Q1rTQYHnsdyC7i7RE+xinebvEegKA=\nR:application.pb.go\na:0:0:444\nZ:Q12PhTHQ2/gNnWBzDl045llFyotyE=\nR:audit_data.pb.go\na:0:0:444\nZ:Q1EV75dZ6N1OL7zKeJTkM0tTgH3aM=\nR:certificate.pb.go\na:0:0:444\nZ:Q1M41Dy0AJS4SwiY972BQ9INwFkto=\nR:deploy.pb.go\na:0:0:444\nZ:Q1GNzAqJ++aOk34ecGGxcqJk046pc=\nR:deployed_files.pb.go\na:0:0:444\nZ:Q1nXzvtym9tXE3KILTp082lixqn5k=\nR:domain.pb.go\na:0:0:444\nZ:Q1/EDPQdT4Z65LTxw94bddB4RpyqU=\nR:domain_mapping.pb.go\na:0:0:444\nZ:Q1X2z0fDCb90xXoPEFgBnYIKKTYmg=\nR:firewall.pb.go\na:0:0:444\nZ:Q1/nz/3dwzPTJOm3LIACC7XPZgiyk=\nR:instance.pb.go\na:0:0:444\nZ:Q1AmOMz9V+aBDRSj8a5av/e33dSeQ=\nR:location.pb.go\na:0:0:444\nZ:Q1bCD8N/WN1/sEDhqI56hR9d9u46o=\nR:network_settings.pb.go\na:0:0:444\nZ:Q1H/LrX/mjus9/XxV3nwLcEh0RUgk=\nR:operation.pb.go\na:0:0:444\nZ:Q1jLQIfGTOeFoBUmjXF4gFN3kRHOA=\nR:service.pb.go\na:0:0:444\nZ:Q1cf2QEtWMJCXAcWXoS6w6wbWOdAM=\nR:version.pb.go\na:0:0:444\nZ:Q1aeBZsKIs+xAAKjuhjG3IF9+a2Sk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/appengine/v1beta\nM:0:0:555\nR:app_yaml.pb.go\na:0:0:444\nZ:Q1q7BJb0Igy7UYn2ulgMx2ukNl6GI=\nR:appengine.pb.go\na:0:0:444\nZ:Q1Uc25Ifr7MrumajEuhYCX1ssPh8U=\nR:application.pb.go\na:0:0:444\nZ:Q1BPnCGQeoDMfMSduNSxnICDJr27Q=\nR:audit_data.pb.go\na:0:0:444\nZ:Q1Ee7Am9Tu3teM4bzeEJv66lGr4wE=\nR:certificate.pb.go\na:0:0:444\nZ:Q1tOpINxJ+zNSN9kbKMflrmO88JWQ=\nR:deploy.pb.go\na:0:0:444\nZ:Q1ZLL5bIxS3BsKCGPlJ3r+NH1dN7w=\nR:deployed_files.pb.go\na:0:0:444\nZ:Q1y9VG3tUzCWhtN78Ko8X9LEmwOnI=\nR:domain.pb.go\na:0:0:444\nZ:Q1rLXpWCu8eL7/410FxdHUDJU/zBo=\nR:domain_mapping.pb.go\na:0:0:444\nZ:Q1O8aNwTQy76QMbI8zRdPB/QqpDq8=\nR:firewall.pb.go\na:0:0:444\nZ:Q1RPgZJlqk8/19UWZeNamv4MIG+jc=\nR:instance.pb.go\na:0:0:444\nZ:Q1u8j5xLQ9zp6jDES2W7/NWkGHEgU=\nR:location.pb.go\na:0:0:444\nZ:Q1Bvhw4auSbwDHesj6jy/2TqwuJ1Y=\nR:network_settings.pb.go\na:0:0:444\nZ:Q1CKaTAAA6lP2HeFpl7zMvwYZRfjA=\nR:operation.pb.go\na:0:0:444\nZ:Q1CCzgk+8BHU1D6uZrtt8K8ixt6N4=\nR:service.pb.go\na:0:0:444\nZ:Q17YfL/tfOrbl5NUT1SNQ7I9cvKD8=\nR:version.pb.go\na:0:0:444\nZ:Q1mWbWoRwmB/QjMX/3fLuu/a97ggI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/alertcenter\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/alertcenter/v1beta1\nM:0:0:555\nR:alertcenter.pb.go\na:0:0:444\nZ:Q1D3sEWAsffmzRVgC60hrhvdJXEHE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/drive\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/drive/activity\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/drive/activity/v2\nM:0:0:555\nR:action.pb.go\na:0:0:444\nZ:Q1AfSD6fxb/agR2Vot+jV9SfueiMU=\nR:actor.pb.go\na:0:0:444\nZ:Q1kK52/740Y72tLO0oLsvVkRQ4WMY=\nR:common.pb.go\na:0:0:444\nZ:Q1JtgVNzNwOBTQ0nFVugYqeKeHQG4=\nR:drive_activity_service.pb.go\na:0:0:444\nZ:Q1TD52KZ7prU28WEHUR5x03W4FcIU=\nR:query_drive_activity_request.pb.go\na:0:0:444\nZ:Q1ryNRwW9/b9B/cB13lsN8ZWkxTNs=\nR:query_drive_activity_response.pb.go\na:0:0:444\nZ:Q16SXfFVW7k0RZzgkyxA9B82135M4=\nR:target.pb.go\na:0:0:444\nZ:Q1hGy6QIgKEZABFZlrj5f9pGt+O5I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type\nM:0:0:555\nR:addon_widget_set.pb.go\na:0:0:444\nZ:Q1SC7BXPkuD2wlBK2FS5gIAUEAeOo=\nR:extension_point.pb.go\na:0:0:444\nZ:Q1YhbPHj8TpsBoLdgR/Um4z2FssP4=\nR:script_manifest.pb.go\na:0:0:444\nZ:Q1FHe5DzeqXx4v18+mqNjnl5g1wU4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/calendar\nM:0:0:555\nR:calendar_addon_manifest.pb.go\na:0:0:444\nZ:Q1mlqvxZ20kM2QQs2WCXdEzaCan2E=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/docs\nM:0:0:555\nR:docs_addon_manifest.pb.go\na:0:0:444\nZ:Q1JSimarAnB3DVc5awJ2Oq4o0s1Tk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/drive\nM:0:0:555\nR:drive_addon_manifest.pb.go\na:0:0:444\nZ:Q1ztDrARsgTbRgDTizSnOolS/gI5U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/gmail\nM:0:0:555\nR:gmail_addon_manifest.pb.go\na:0:0:444\nZ:Q1Poo6DvzZSPeMYMndcGbI7ulZUOw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/sheets\nM:0:0:555\nR:sheets_addon_manifest.pb.go\na:0:0:444\nZ:Q15SbVtK6OkS1oj4C424r+qb6S/h0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/apps/script/type/slides\nM:0:0:555\nR:slides_addon_manifest.pb.go\na:0:0:444\nZ:Q1/dF2b88LOiuIZxnj+0tO7VEIHFg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/area120\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/area120/tables\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/area120/tables/v1alpha1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1gukH8BNSqO4ILCHaWfbkBo2GNCA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/assistant\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/assistant/embedded\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/assistant/embedded/v1alpha1\nM:0:0:555\nR:embedded_assistant.pb.go\na:0:0:444\nZ:Q1tEhKLuMx7rw4rxknT+zWv1g0tdk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/assistant/embedded/v1alpha2\nM:0:0:555\nR:embedded_assistant.pb.go\na:0:0:444\nZ:Q1924w2zNcWhodd1KSZE/EWOHGxZA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin/cluster\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin/cluster/v1\nM:0:0:555\nR:bigtable_cluster_data.pb.go\na:0:0:444\nZ:Q1Glwc06PPXLdXIO7BMecwaN/XNvw=\nR:bigtable_cluster_service.pb.go\na:0:0:444\nZ:Q1e3uGIvMzXTOggHPfi6G4MecKqfU=\nR:bigtable_cluster_service_messages.pb.go\na:0:0:444\nZ:Q1fmPC95Hov3/pbU5wqNEA3Q1eTRs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin/table\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin/table/v1\nM:0:0:555\nR:bigtable_table_data.pb.go\na:0:0:444\nZ:Q1rYhjpyBsL2kdRuw9uzoVnTLvLYM=\nR:bigtable_table_service.pb.go\na:0:0:444\nZ:Q1ZCu56DItwa7k7wWEnnKCgCUEVlQ=\nR:bigtable_table_service_messages.pb.go\na:0:0:444\nZ:Q1ppttuUWwSAYmc5svgxGWLVYQ9bg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/admin/v2\nM:0:0:555\nR:bigtable_instance_admin.pb.go\na:0:0:444\nZ:Q19PGicVylEozy/oe/AAeGSgQER3U=\nR:bigtable_table_admin.pb.go\na:0:0:444\nZ:Q1Ir9GYmmPwosTHxs13hkNrzEWtp8=\nR:common.pb.go\na:0:0:444\nZ:Q1NAOB9dPyK2bq2hjna/kqDCECGoY=\nR:instance.pb.go\na:0:0:444\nZ:Q1w1+IGN9ssqulaE3SITExRO6NpOI=\nR:table.pb.go\na:0:0:444\nZ:Q1nly31yrssr4Mg/FCUpGYt9ixCpk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/v1\nM:0:0:555\nR:bigtable_data.pb.go\na:0:0:444\nZ:Q1qesOi1lmHFCNnAs6QTj04T0J/Zs=\nR:bigtable_service.pb.go\na:0:0:444\nZ:Q1akz13QMnqK9bD/LDAp9eBctkkkk=\nR:bigtable_service_messages.pb.go\na:0:0:444\nZ:Q1UcIg3ve3nZR46y7vTZMrx4HI/TA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bigtable/v2\nM:0:0:555\nR:bigtable.pb.go\na:0:0:444\nZ:Q1wVqUwTxWrD2kZOCAgO//4VSXvIE=\nR:data.pb.go\na:0:0:444\nZ:Q1Ql510PUxvmE9FxgK8M+LuGAg0U8=\nR:request_stats.pb.go\na:0:0:444\nZ:Q1zPPB1H8/brgmUIWBe4Acw/eTR1A=\nR:response_params.pb.go\na:0:0:444\nZ:Q1mME8PBl4Tgg75ngiU76qL4Md0s8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/bytestream\nM:0:0:555\nR:bytestream.pb.go\na:0:0:444\nZ:Q1HyYl5vkYmJ/V7ubClEeF4+XK6aY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/ccc\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/ccc/hosted\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/ccc/hosted/marketplace\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/ccc/hosted/marketplace/v2\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1k693mLsJ9T6p3Z4DvlLF3CQZaWA=\nR:services.pb.go\na:0:0:444\nZ:Q1n9pi+slnXTD1eZHx+hjYRX7RqzE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/dynamite\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/dynamite/integration\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/dynamite/integration/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/dynamite/integration/logging/v1\nM:0:0:555\nR:dynamite_integration_log_entry.pb.go\na:0:0:444\nZ:Q1P94vEILCFjeD/Y6VxdJOL6i2qwo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chat/logging/v1\nM:0:0:555\nR:chat_app_log_entry.pb.go\na:0:0:444\nZ:Q1xcsvilGv3C9ubo0tcO9viOZOMsQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chromeos\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chromeos/moblab\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chromeos/moblab/v1beta1\nM:0:0:555\nR:build_service.pb.go\na:0:0:444\nZ:Q1748v2FPvsmlYLrdKNTLP9EHgJc4=\nR:resources.pb.go\na:0:0:444\nZ:Q1erqZg42rrHGEZE168bFBz4CHbPc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chromeos/uidetection\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/chromeos/uidetection/v1\nM:0:0:555\nR:ui_detection.pb.go\na:0:0:444\nZ:Q1DcdM7yi/nVzT5InrFbRWgOgejEY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/accessapproval\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/accessapproval/v1\nM:0:0:555\nR:accessapproval.pb.go\na:0:0:444\nZ:Q1ROgVbajppgMSOLNfckV1L87HTGs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/logging\nM:0:0:555\nR:prediction.pb.go\na:0:0:444\nZ:Q1/HxFYHe+IBPQzvkXvqAii73hJjU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1\nM:0:0:555\nR:accelerator_type.pb.go\na:0:0:444\nZ:Q1Xfz026qN570vbgQiPJ+wyoX3VCI=\nR:annotation.pb.go\na:0:0:444\nZ:Q11WV6cKwFEl41toSnNsFP9zqbBwM=\nR:annotation_spec.pb.go\na:0:0:444\nZ:Q1fltf0knYjG5RmdKh//Q/ANIBqiM=\nR:artifact.pb.go\na:0:0:444\nZ:Q1bqIEfvKZUvr0LP738J1CwbVnnPc=\nR:batch_prediction_job.pb.go\na:0:0:444\nZ:Q1dkVqYDLoEEVEC5zApbSUFBLaufY=\nR:completion_stats.pb.go\na:0:0:444\nZ:Q1TwHZahJE02aNsPHioGk2fSHPLwo=\nR:context.pb.go\na:0:0:444\nZ:Q1yS1/uZSFhunezRkh3saAavnBCm0=\nR:custom_job.pb.go\na:0:0:444\nZ:Q1iAKmHofYOc/lqc6Em+LgeO4D1Jw=\nR:data_item.pb.go\na:0:0:444\nZ:Q1dW/X7XIH9qxMlmr0QgnIudBstT8=\nR:data_labeling_job.pb.go\na:0:0:444\nZ:Q1J7TF084cdUjpbAQibI5FRbdOO3w=\nR:dataset.pb.go\na:0:0:444\nZ:Q1OZw9b7JwNTWA+mKnljLrEEpf2k8=\nR:dataset_service.pb.go\na:0:0:444\nZ:Q1Yw9eKZBNEz8bt2LHPGYml6x5muU=\nR:deployed_index_ref.pb.go\na:0:0:444\nZ:Q1AIxE3BLki52cSOSTBwEWW5N8dy8=\nR:deployed_model_ref.pb.go\na:0:0:444\nZ:Q1b9RT7X9fhVrx8Gw2ydjBoNJOPfg=\nR:encryption_spec.pb.go\na:0:0:444\nZ:Q1d5mC1Cki8+e0gXicIMHbMDA2oEw=\nR:endpoint.pb.go\na:0:0:444\nZ:Q1H946iZhJ+N/bHoJf3kUaMRLY3nI=\nR:endpoint_service.pb.go\na:0:0:444\nZ:Q1O7U4wSlylvgIUxV127hTGXrOtFA=\nR:entity_type.pb.go\na:0:0:444\nZ:Q1x/rPIHwHCyXs+agrsbsyE2HRQrI=\nR:env_var.pb.go\na:0:0:444\nZ:Q128JOcdoo9VZirxGSHa7ZfhIBnqc=\nR:event.pb.go\na:0:0:444\nZ:Q18CCB3gV7wmc9HrXNMZ0/mgFhy1s=\nR:execution.pb.go\na:0:0:444\nZ:Q1zK9+/QX/kNvt6k0MzoFB4IFjpn8=\nR:explanation.pb.go\na:0:0:444\nZ:Q1Nx0jF85lRlTCfovmDVxMytOxkMg=\nR:explanation_metadata.pb.go\na:0:0:444\nZ:Q1cJh8OKNFf9KCbgYHiWlec80IbR0=\nR:feature.pb.go\na:0:0:444\nZ:Q1SSP8IVIAaxdwDzbhlpE6lDl9QwA=\nR:feature_monitoring_stats.pb.go\na:0:0:444\nZ:Q1d02BAb33qiCKpxA+lK5TMETwmdo=\nR:feature_selector.pb.go\na:0:0:444\nZ:Q1V3JhYNp0GJhbkphLtrVdpSyqnK8=\nR:featurestore.pb.go\na:0:0:444\nZ:Q1d7lWMxifbzqG3lOjuTN8P78kV6g=\nR:featurestore_monitoring.pb.go\na:0:0:444\nZ:Q1jUPSeFL9Qf4Hi1uC66u31uYESyY=\nR:featurestore_online_service.pb.go\na:0:0:444\nZ:Q1v6Ov2u9PdaxDY5P2ZtbcZHMDnn4=\nR:featurestore_service.pb.go\na:0:0:444\nZ:Q1joYoFn7glAKNqSEB9nsUW671J+U=\nR:hyperparameter_tuning_job.pb.go\na:0:0:444\nZ:Q1OqGeCVX5STaGAJoGHBSybuShsRQ=\nR:index.pb.go\na:0:0:444\nZ:Q1uJTXA4FxY22ZXqBErHXdqvewZzA=\nR:index_endpoint.pb.go\na:0:0:444\nZ:Q1gZB3PgOxnW0dzDxdBjtdzKwEA1U=\nR:index_endpoint_service.pb.go\na:0:0:444\nZ:Q1zwfakNIxBjD1pbakcfDdMDY8khU=\nR:index_service.pb.go\na:0:0:444\nZ:Q1fNDSDLXtWR9IJaY8wG6yxuokEFU=\nR:io.pb.go\na:0:0:444\nZ:Q13b+5rQDs8wX9TVCGVfvnd2T5CYI=\nR:job_service.pb.go\na:0:0:444\nZ:Q1Jbd+N5iriz+KYPR+1ETyDDH4Mwc=\nR:job_state.pb.go\na:0:0:444\nZ:Q1KchrqHqQgEoMlkbGaAX6MQn7lyY=\nR:lineage_subgraph.pb.go\na:0:0:444\nZ:Q1hKIomaCAXttFxtz3w5zMEkMqCnM=\nR:machine_resources.pb.go\na:0:0:444\nZ:Q1ixtQrhfOhTzfxAZIJyt1BUDt7IY=\nR:manual_batch_tuning_parameters.pb.go\na:0:0:444\nZ:Q1UK7PbMB2O9nc2AFYVc1RWi51c/E=\nR:metadata_schema.pb.go\na:0:0:444\nZ:Q1lcpMFhIiLYRn239XSrBW96RAh4Y=\nR:metadata_service.pb.go\na:0:0:444\nZ:Q1FEaXG3/+3eLHerJtLmThgzGNsDo=\nR:metadata_store.pb.go\na:0:0:444\nZ:Q12BglClknsXcGvhuw1RUhgt1mNK0=\nR:migratable_resource.pb.go\na:0:0:444\nZ:Q1hVwsdbLfixigfqlysV3jCnkw4Ic=\nR:migration_service.pb.go\na:0:0:444\nZ:Q1KoLgfWyyH4gzw8EIHIPn4opgINQ=\nR:model.pb.go\na:0:0:444\nZ:Q1wTljTNoQSoXtr95ciXyPmugSNc0=\nR:model_deployment_monitoring_job.pb.go\na:0:0:444\nZ:Q138Obo5iq9Btj9EKMiGKhy0JzCrk=\nR:model_evaluation.pb.go\na:0:0:444\nZ:Q1PQoUIDHECv4CCrtXcoNM0ah6oeY=\nR:model_evaluation_slice.pb.go\na:0:0:444\nZ:Q1PORV2jz4bAhN4Cddlkf+WAMqJIw=\nR:model_monitoring.pb.go\na:0:0:444\nZ:Q1cUJ3pRYsZNBzj89lUhVJ0n/Mb/I=\nR:model_service.pb.go\na:0:0:444\nZ:Q13WK3LuQHnNdFtylxNMvyWJUhxdI=\nR:operation.pb.go\na:0:0:444\nZ:Q1+j5fxz/E1+KQ9JHreR+XWsmQzkU=\nR:pipeline_failure_policy.pb.go\na:0:0:444\nZ:Q1hAx7CcFcAW31AVcmr/sUFVm/NAs=\nR:pipeline_job.pb.go\na:0:0:444\nZ:Q1vzct/6+kJoHHCg29JHZ1ZZ4oQQg=\nR:pipeline_service.pb.go\na:0:0:444\nZ:Q1HKW8zbpCOFPUfYy58P8aM+k97mY=\nR:pipeline_state.pb.go\na:0:0:444\nZ:Q1CWn2ZJjvnnZYBwGIBFIp432+yvg=\nR:prediction_service.pb.go\na:0:0:444\nZ:Q1YDyTC7vkA11x8s4AhDg5PHjxI3g=\nR:saved_query.pb.go\na:0:0:444\nZ:Q1OOM6suhd19rho5EJMdFKDcCVQUc=\nR:specialist_pool.pb.go\na:0:0:444\nZ:Q1pjVQRbiHMem9rejAzUVtnj+uYug=\nR:specialist_pool_service.pb.go\na:0:0:444\nZ:Q1rglgrwwZBaJ4ShFYGIB4sYzssY4=\nR:study.pb.go\na:0:0:444\nZ:Q1lNwr3u+83txU60TsOcAeXrs+Xyc=\nR:tensorboard.pb.go\na:0:0:444\nZ:Q1rAW0FTmaDmV9SOymRDNlpLpGJYM=\nR:tensorboard_data.pb.go\na:0:0:444\nZ:Q1L2YQKZ/zOIVLAL5A6fLaFNx8tr0=\nR:tensorboard_experiment.pb.go\na:0:0:444\nZ:Q1IzcoVnkXGp0s7oPf8vl0h1bLEQo=\nR:tensorboard_run.pb.go\na:0:0:444\nZ:Q1HPYamaDUOrkl94Y+oPkquaWVhcM=\nR:tensorboard_service.pb.go\na:0:0:444\nZ:Q1yRx/QMa62O+CKQX8kkFUp1ZeE1g=\nR:tensorboard_time_series.pb.go\na:0:0:444\nZ:Q19pPj8F0ZTZgsEgh7YjAoMP0QI6E=\nR:training_pipeline.pb.go\na:0:0:444\nZ:Q1B0QyAMMYtxpBh5+ONBuvElY+XlY=\nR:types.pb.go\na:0:0:444\nZ:Q1EkLg6SgRUdzU6gTOaqVBuEEX8uc=\nR:unmanaged_container_model.pb.go\na:0:0:444\nZ:Q16Dtapz3Puugz9tBFUvWd2pCnRsM=\nR:user_action_reference.pb.go\na:0:0:444\nZ:Q1LRi/73kARgyWoO25S494wnSHYEw=\nR:value.pb.go\na:0:0:444\nZ:Q1Mm+0OrnIfQ19Q5VuPu38nv1+Fvs=\nR:vizier_service.pb.go\na:0:0:444\nZ:Q1eYRCotsOM0f5uFYYtrGVVmnPGz4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/predict\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/predict/instance\nM:0:0:555\nR:image_classification.pb.go\na:0:0:444\nZ:Q1He5zFYn5F/GF/LNpBIMI3vXdr1s=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1eprRVe7b2czcp2TgJqjHcHS/Ek8=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q1KODprgYoEdW8yqOs0y3J3QNJ9/Y=\nR:text_classification.pb.go\na:0:0:444\nZ:Q1NztWN58JUtIs38Jg9Bs8rSseLLI=\nR:text_extraction.pb.go\na:0:0:444\nZ:Q1c6/L3qdMIM/YOQsfreuGYKrpJQE=\nR:text_sentiment.pb.go\na:0:0:444\nZ:Q1mKirtwtWaiCL3O5LNewHjd9cGVs=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q1kTzJKXHjEkwmK75Ec7GUdYytqYs=\nR:video_classification.pb.go\na:0:0:444\nZ:Q1xc+j/kOfhcCgzk7Tjc2z06RE5uA=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1oxQ+K8YCYB624e9q75kgbN4Utvg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/predict/params\nM:0:0:555\nR:image_classification.pb.go\na:0:0:444\nZ:Q10lHyTgEZ847IOrMg9XAD57g+KNY=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1DCANNrcXq7XJcJFhuhI2krLEDpE=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q17ZEo5LwO98pVNrqRazQNlr3VW6E=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q1Dw8Lfy9Hzao13Skc9vh2YeOoHwU=\nR:video_classification.pb.go\na:0:0:444\nZ:Q1M98ur9MiXX3hlrEsC16kqbKAAZ4=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1v6Vf03I1QZnLHKUeg6JjvvzekQg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/predict/prediction\nM:0:0:555\nR:classification.pb.go\na:0:0:444\nZ:Q1DFAOF/l9XhAejY2lLOnvyAmYnOs=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1+V9roy/M0ExBNxfICwzMhKjmbwk=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q1C9XFTdrJ5n1vhm9tm77L3xBOucs=\nR:tabular_classification.pb.go\na:0:0:444\nZ:Q1uCruFbsim/mcEpkvSNWbHgO9mBs=\nR:tabular_regression.pb.go\na:0:0:444\nZ:Q11PF0/Wiqx+vn5TLtX8BzzvxVV/4=\nR:text_extraction.pb.go\na:0:0:444\nZ:Q1poAosHufjBnuUzQJGR6E8ZUwraQ=\nR:text_sentiment.pb.go\na:0:0:444\nZ:Q1wdyv/ytomXYrA0fwsANaU/HOME4=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q1jKUYYE2Fcv1YCHGqDXJ1DQ96yR8=\nR:video_classification.pb.go\na:0:0:444\nZ:Q1RBRyox0cs2O5I9Ci4CCXgpS4Q8E=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1mgDZTbLdcya/b2QFiRmd1mByf+k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/trainingjob\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1/schema/trainingjob/definition\nM:0:0:555\nR:automl_image_classification.pb.go\na:0:0:444\nZ:Q1bH6tHMfyohWXO5fRHXQifzQeyNw=\nR:automl_image_object_detection.pb.go\na:0:0:444\nZ:Q1yAA3Bd/BZGwIeRXS6ozS0uv9+7w=\nR:automl_image_segmentation.pb.go\na:0:0:444\nZ:Q12+CeN/pZ5ALZMabA/XoZvEU5xVQ=\nR:automl_tables.pb.go\na:0:0:444\nZ:Q1rGaF71kqKo34WgLFZIwk3vCAg2k=\nR:automl_text_classification.pb.go\na:0:0:444\nZ:Q16R8tdyBz7r6KlOC5elWCWwPC6Ho=\nR:automl_text_extraction.pb.go\na:0:0:444\nZ:Q1421hO9qmhkcxpU0c5Lrz706UNu0=\nR:automl_text_sentiment.pb.go\na:0:0:444\nZ:Q1Ro6LD02Faufu7ZGkb95mjGfOCfI=\nR:automl_time_series_forecasting.pb.go\na:0:0:444\nZ:Q1rqey0BgiXOpWsYtSg5aS8adE+tw=\nR:automl_video_action_recognition.pb.go\na:0:0:444\nZ:Q1FBxJMvzKTfI8fVVlM0bb9I2Xlms=\nR:automl_video_classification.pb.go\na:0:0:444\nZ:Q1jVh55NEmkMwUC2WFPSz9YMTg03U=\nR:automl_video_object_tracking.pb.go\na:0:0:444\nZ:Q18+/+mnKnxdltNIo3Q8FAHPw4Luc=\nR:export_evaluated_data_items_config.pb.go\na:0:0:444\nZ:Q1Sgx80Onw1d2LIaz6IJNxNyCT5rw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1PHfj7m7pi7gGPakaZX7omJRcKLM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema\nM:0:0:555\nR:annotation_payload.pb.go\na:0:0:444\nZ:Q1aguYIRHjRPweADqx41aKeyCd54E=\nR:annotation_spec_color.pb.go\na:0:0:444\nZ:Q1aLqc2cKNL90SQkx+yL5yHWgbi6g=\nR:data_item_payload.pb.go\na:0:0:444\nZ:Q1jSb2kL9XTnGKi+CxXsRAJtJD8J4=\nR:dataset_metadata.pb.go\na:0:0:444\nZ:Q12hCok8nfj8diVH7SeXSNOdqVZes=\nR:geometry.pb.go\na:0:0:444\nZ:Q14VIfYzp659h9QA3xzWVy27rE/v8=\nR:io_format.pb.go\na:0:0:444\nZ:Q1x7eoSNKPq4FTf6S2+sbXtXiiSWU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/predict\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/predict/instance\nM:0:0:555\nR:image_classification.pb.go\na:0:0:444\nZ:Q11WAbIH8DreLHsLxnabXrBhA8L/8=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1eM1gASYbUrSXRKQUVq1OofYm8iQ=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q1hr7laD9TurEIejeGT8RT3InkTUc=\nR:text_classification.pb.go\na:0:0:444\nZ:Q1LM1XAy40DHZPVmvAif6YGeG/eSI=\nR:text_extraction.pb.go\na:0:0:444\nZ:Q1UcesN+GKTwOsg9RBtDEZ1fn596s=\nR:text_sentiment.pb.go\na:0:0:444\nZ:Q1CnK4uZ+0EFba1yDQLTy76kMtGEQ=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q1HfZiDyzp9eO8b4uoX4lvHyB+BSg=\nR:video_classification.pb.go\na:0:0:444\nZ:Q1opLMBPlci1XgQgbySr8wIdPoVGU=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1c6vFW26y7I6z6VjJI4lQ8WFlrio=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/predict/params\nM:0:0:555\nR:image_classification.pb.go\na:0:0:444\nZ:Q1RyCgXKYiQDlnF+upPLJOiidu26Q=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1ogUjPiR5GnDdTkj24YQOeUs8ink=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q12lqF+WPHZJMbIpN/485QgQBYcnY=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q12ct+8faD8GwrOJ0eWXjZzUv0Paw=\nR:video_classification.pb.go\na:0:0:444\nZ:Q195QGMcyYY4mQ1y9Hsptx8HHZQtk=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1gHhJkKHy3Y7eFN1ljjp2zmkGhaQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/predict/prediction\nM:0:0:555\nR:classification.pb.go\na:0:0:444\nZ:Q1h59Vc2pdOWVpYHO7m77Ia6UnQFs=\nR:image_object_detection.pb.go\na:0:0:444\nZ:Q1yq2w7W6Gi1S8O/YUmokZ8ABv7ns=\nR:image_segmentation.pb.go\na:0:0:444\nZ:Q17kRVDVMQJmI1ll/cMUbR8E4QVg0=\nR:tabular_classification.pb.go\na:0:0:444\nZ:Q1amfGsNDE+MM8CbsCNeLsU80GtlM=\nR:tabular_regression.pb.go\na:0:0:444\nZ:Q1h5E3AyPSy4bAy4IFM+2apQgPkJs=\nR:text_extraction.pb.go\na:0:0:444\nZ:Q1QSLPiBrFhftzSCmC+heCXeHK+tU=\nR:text_sentiment.pb.go\na:0:0:444\nZ:Q1RZkTXjLksytcsL4kZF2V6ojukrA=\nR:time_series_forecasting.pb.go\na:0:0:444\nZ:Q1aIhTySSSlT0gb9JLShJtsJuLFrs=\nR:video_action_recognition.pb.go\na:0:0:444\nZ:Q1nfcyAxgEN3RGXjV/iJ11YsjSh1U=\nR:video_classification.pb.go\na:0:0:444\nZ:Q1YKDKdPJv9Q7YN7ebMjDOVy1IdSg=\nR:video_object_tracking.pb.go\na:0:0:444\nZ:Q1vnDEW2BzfYERZvu6wo6rQuZKNKE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/trainingjob\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/aiplatform/v1beta1/schema/trainingjob/definition\nM:0:0:555\nR:automl_image_classification.pb.go\na:0:0:444\nZ:Q1uxv0DgF1rVDbBNqWHU6737Lp0qw=\nR:automl_image_object_detection.pb.go\na:0:0:444\nZ:Q1I15njJNnoENeV7t5uDSu0lE8YJU=\nR:automl_image_segmentation.pb.go\na:0:0:444\nZ:Q1rImCetbE2hUW/o/B+PAdhBGHp70=\nR:automl_tables.pb.go\na:0:0:444\nZ:Q1wvsOHgxgGT4O6BXxWcTHKyQxUW0=\nR:automl_text_classification.pb.go\na:0:0:444\nZ:Q1yBkHAF8zJBy12gDMDy76qhiSi/s=\nR:automl_text_extraction.pb.go\na:0:0:444\nZ:Q11L0mIN8cZu1msZKLjWKGu8ZTjiY=\nR:automl_text_sentiment.pb.go\na:0:0:444\nZ:Q1yxE8U3uLYmSsCDmwBT/xoBsW/Y0=\nR:automl_time_series_forecasting.pb.go\na:0:0:444\nZ:Q1AB8AA8bv/2VY94enm88vX+VEk2U=\nR:automl_video_action_recognition.pb.go\na:0:0:444\nZ:Q1wdenTQQAdCH+RQlRUCfyXbWv4QQ=\nR:automl_video_classification.pb.go\na:0:0:444\nZ:Q1cOD51/4JAh1oFhxjEefb9iaStvM=\nR:automl_video_object_tracking.pb.go\na:0:0:444\nZ:Q1KTX2URobV8Z2GC/IMiEvVJC4v7E=\nR:export_evaluated_data_items_config.pb.go\na:0:0:444\nZ:Q1EPdGEbJ0zV0KbfTtT/rrNZ73Uk4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigateway\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigateway/v1\nM:0:0:555\nR:apigateway.pb.go\na:0:0:444\nZ:Q1y76qkWSkY1RjCYhYAg8E6B/PgEo=\nR:apigateway_service.pb.go\na:0:0:444\nZ:Q1DxsM+3jFHvfg5F9ntbZZ5kFvQhM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigeeconnect\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigeeconnect/v1\nM:0:0:555\nR:connection.pb.go\na:0:0:444\nZ:Q1fR59pg4vf9u5HDvePDyLOgQwDIY=\nR:tether.pb.go\na:0:0:444\nZ:Q1HBd7Lr2VihR/NkOwAja/cX/jWRs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigeeregistry\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/apigeeregistry/v1\nM:0:0:555\nR:provisioning_service.pb.go\na:0:0:444\nZ:Q1fuGLB6IzLh0jcBDllVbopUI+h24=\nR:registry_models.pb.go\na:0:0:444\nZ:Q1xt+/l22cqtv9DuY6yTazKbsyXvA=\nR:registry_service.pb.go\na:0:0:444\nZ:Q1XE6jb0D0X9MsaOhCGstpnEEd1+c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1\nM:0:0:555\nR:asset_service.pb.go\na:0:0:444\nZ:Q1mIFk+UGF1s2U/x3BFyNIrpTt874=\nR:assets.pb.go\na:0:0:444\nZ:Q1/rTP40p7p3OiMJidIt3qx2C7vI0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1p1beta1\nM:0:0:555\nR:asset_service.pb.go\na:0:0:444\nZ:Q1h7VyoY7Qx11aJclf6SK5iXrA6rE=\nR:assets.pb.go\na:0:0:444\nZ:Q1WHN3kmPjcLVbyc0P9AnOMmysQHs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1p2beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1W1st/b8FMFJiSaYQ6BAkf9HZ7QI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1p4beta1\nM:0:0:555\nR:asset_service.pb.go\na:0:0:444\nZ:Q1jirF05nrSKyuKpDtzSYg+6o0DeY=\nR:assets.pb.go\na:0:0:444\nZ:Q1xXPCbVu9gviYKESHFpKvd8dZaSA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1p5beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1ys0CDCHYZ3k2mpX/yXZqoIS6Qg0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/asset/v1p7beta1\nM:0:0:555\nR:asset_service.pb.go\na:0:0:444\nZ:Q1h30DqXGrjLz8PdwumATTW8rhYks=\nR:assets.pb.go\na:0:0:444\nZ:Q1MmGreNf/0iDZp4zZ6vLWbzQQMck=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads/regulatoryintercept\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads/regulatoryintercept/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads/regulatoryintercept/logging/v1\nM:0:0:555\nR:regulatory_intercept_ack_log_entry.pb.go\na:0:0:444\nZ:Q111jYQIcR5KWD0FfVqaCUBKfoLfI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads/v1\nM:0:0:555\nR:assuredworkloads.pb.go\na:0:0:444\nZ:Q1WDPoeue4bKtPylswR+ADme3ZoMw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/assuredworkloads/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1MQ70yJuhY3loitO3y7F9h0xwxGQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/audit\nM:0:0:555\nR:audit_log.pb.go\na:0:0:444\nZ:Q1qQN2/aPeONvun2lJfVmeyWDpvx0=\nR:bigquery_audit_metadata.pb.go\na:0:0:444\nZ:Q1zKptW8Tov1YujsAmUUx7LoaI+ZY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/automl\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/automl/v1\nM:0:0:555\nR:annotation_payload.pb.go\na:0:0:444\nZ:Q1fShNp4kuHU9Zcqb0uAhUC/dok4w=\nR:annotation_spec.pb.go\na:0:0:444\nZ:Q1/4JnMvB19MP2eS/Nc0koj1QIa/U=\nR:classification.pb.go\na:0:0:444\nZ:Q1R9EuFc0njT9JKnnGPqUw6hjPQm8=\nR:data_items.pb.go\na:0:0:444\nZ:Q14uPzqIhxPNNStzGn3pD2SvifQL0=\nR:dataset.pb.go\na:0:0:444\nZ:Q1gsIyL+NFesvqu143mnBTq8DiDeY=\nR:detection.pb.go\na:0:0:444\nZ:Q1bgdKkbd5mAR8E93lia1NibUT73E=\nR:geometry.pb.go\na:0:0:444\nZ:Q11+H4BtLXDQ85kAK//ZN6mrGoQds=\nR:image.pb.go\na:0:0:444\nZ:Q1X7rkUcy7sF6XEpzE9L+pfvYWS+c=\nR:io.pb.go\na:0:0:444\nZ:Q1nU8me8MBhlnAvCqpqzUgHRPA+nA=\nR:model.pb.go\na:0:0:444\nZ:Q1+1CAXiFdp1zYj9htTDYtc6t6brA=\nR:model_evaluation.pb.go\na:0:0:444\nZ:Q1CjTSZyZHd44C1mwhNkHriPJ1ayI=\nR:operations.pb.go\na:0:0:444\nZ:Q1iBVgLeytRuzhyrvJiqCe8rYMYoQ=\nR:prediction_service.pb.go\na:0:0:444\nZ:Q1IfJi7nDjO9a+jxPD/M4dzejKVZU=\nR:service.pb.go\na:0:0:444\nZ:Q1DY0PD2pc4GRD/2+t5W3/tsnLLTo=\nR:text.pb.go\na:0:0:444\nZ:Q11WKSEqHmWEbu7mkzYFfH6+G2uMc=\nR:text_extraction.pb.go\na:0:0:444\nZ:Q1g/Mi1VHLxUN3Yk6FkIjmTN0xJgs=\nR:text_segment.pb.go\na:0:0:444\nZ:Q1fKvu6I/ubH+2++GJNYQCXEnRHkI=\nR:text_sentiment.pb.go\na:0:0:444\nZ:Q10kesS77+w7RIdNQnizcCa6NOoJE=\nR:translation.pb.go\na:0:0:444\nZ:Q1M2R/EEIN1r+uN/LQze2JhcJEzBI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/automl/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1OXiQVdLXwOJhJdnJOkX1pfuI21Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/baremetalsolution\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/baremetalsolution/v2\nM:0:0:555\nR:baremetalsolution.pb.go\na:0:0:444\nZ:Q1d1m++ZDKCIGJbb3EEWKOb+8O9Eo=\nR:instance.pb.go\na:0:0:444\nZ:Q1w08CtNmzWS8eZWhM1u8tHk4hwEM=\nR:lun.pb.go\na:0:0:444\nZ:Q1cfpfFF9sHSfMcEvfLaSte9+7HMI=\nR:network.pb.go\na:0:0:444\nZ:Q1MDcsYA93IXokchNFATIAJrRR5u4=\nR:nfs_share.pb.go\na:0:0:444\nZ:Q14CHCeOFEOgx8fDihJblJLvKT00I=\nR:volume.pb.go\na:0:0:444\nZ:Q15yJ3WLsLEWoDLOwTlUYtNgY/45M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/batch\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/batch/v1\nM:0:0:555\nR:batch.pb.go\na:0:0:444\nZ:Q1TJ/VibRG/fq5o0WW4lJMIcMSzZE=\nR:job.pb.go\na:0:0:444\nZ:Q1BvGOi14ArQcN4l6Lwa8+s5CvHNc=\nR:task.pb.go\na:0:0:444\nZ:Q1cifGqku1bQox2CTMCOtiiNGAhEQ=\nR:volume.pb.go\na:0:0:444\nZ:Q1xMA+E9xr/Irj0UA8yCNyZ1h3180=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/batch/v1alpha\nM:0:0:555\nR:batch.pb.go\na:0:0:444\nZ:Q1GfV6DtNhpvcY6yP80yi08X1idHc=\nR:job.pb.go\na:0:0:444\nZ:Q1H36f/DQBfLFy9RmnklVLwDaN6qk=\nR:task.pb.go\na:0:0:444\nZ:Q1tPaBPfwqzQ6NK2Dx0uR34omOybM=\nR:volume.pb.go\na:0:0:444\nZ:Q1l1z8q7ddQTAqrqj780Opp3bQuEs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/batch/v1alpha1\nM:0:0:555\nR:batch.pb.go\na:0:0:444\nZ:Q1Kc2/JcCEiEBQtPRN5msabcAiOe4=\nR:job.pb.go\na:0:0:444\nZ:Q1iz4QI+y9H4BZPuuCs5ixsRlUhtA=\nR:task.pb.go\na:0:0:444\nZ:Q1aMgAG9xWicHZKuy5fMls01tNq0A=\nR:volume.pb.go\na:0:0:444\nZ:Q1nocemDstsBDG2psCcUunGy3Mvbo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/batch/v1main\nM:0:0:555\nR:batch.pb.go\na:0:0:444\nZ:Q1KtWSSV+D4YCYMHD32wBUcMdB014=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appconnections\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appconnections/v1\nM:0:0:555\nR:app_connections_service.pb.go\na:0:0:444\nZ:Q1lzW36NoEWYqL6vM3OhozlUv0Slg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appconnectors\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appconnectors/v1\nM:0:0:555\nR:app_connector_instance_config.pb.go\na:0:0:444\nZ:Q1hSBA0VkG+5xMs7Ran2V8ZZX/3oY=\nR:app_connectors_service.pb.go\na:0:0:444\nZ:Q1LW5Cz7nWt72zJ8Dw9XHeZgqxBFU=\nR:resource_info.pb.go\na:0:0:444\nZ:Q1sWSwNZ8WhUIu7xDKcSmroLfEz+I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appgateways\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/appgateways/v1\nM:0:0:555\nR:app_gateways_service.pb.go\na:0:0:444\nZ:Q1QzOp8xzj1PccYs0pJfwq1hTx+io=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/clientconnectorservices\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/clientconnectorservices/v1\nM:0:0:555\nR:client_connector_services_service.pb.go\na:0:0:444\nZ:Q1lxsJmn9LxIsYEmpbg9Sm2yOjbAo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/clientgateways\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/beyondcorp/clientgateways/v1\nM:0:0:555\nR:client_gateways_service.pb.go\na:0:0:444\nZ:Q1zI1EnEhY1QTzIpxm6corV1Wc8Kc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/analyticshub\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/analyticshub/v1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1/wQyJpIbIlFmB1pbOWw+ulf/hkY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/connection\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/connection/v1\nM:0:0:555\nR:connection.pb.go\na:0:0:444\nZ:Q193DJD0dVpiNLaf69dRd3jQC2FQU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/connection/v1beta1\nM:0:0:555\nR:connection.pb.go\na:0:0:444\nZ:Q1/A5DNyLwmwAAeOKGjc4y1kl3NFM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/dataexchange\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/dataexchange/common\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1V89kAS8UrIaBy78z+6kgizx5ob0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/dataexchange/v1beta1\nM:0:0:555\nR:dataexchange.pb.go\na:0:0:444\nZ:Q1JP7I9o7V1vO58qSB4J8voPrP7DU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/datapolicies\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/datapolicies/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1vUe4qoTHz8aWkqmKkkg60M0CBLI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/datatransfer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/datatransfer/v1\nM:0:0:555\nR:datasource.pb.go\na:0:0:444\nZ:Q1xZTAKPtLsRcNIrgkoTdBbnRqQr0=\nR:datatransfer.pb.go\na:0:0:444\nZ:Q14VWmXiCoG8ixZhhcAc4/Ckk9SMw=\nR:transfer.pb.go\na:0:0:444\nZ:Q1Jb2E1st5KuO8zCU+8C5H8Pkr5lU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/logging/v1\nM:0:0:555\nR:audit_data.pb.go\na:0:0:444\nZ:Q1PBaRGxnaPH/TraWTh1uEFf9Q7QM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/tasks\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/tasks/assessment\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/tasks/assessment/v2alpha\nM:0:0:555\nR:assessment.pb.go\na:0:0:444\nZ:Q13kAe4aBtjufv1XQ0QEmpyyuIwVg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/tasks/translation\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/tasks/translation/v2alpha\nM:0:0:555\nR:dataset_reference.pb.go\na:0:0:444\nZ:Q1kh8+p9yVzPzKelOYz89/WdTTW5I=\nR:translation.pb.go\na:0:0:444\nZ:Q1iSJ2Bl4obtflEmLludOx79parjw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/v2\nM:0:0:555\nR:migration_entities.pb.go\na:0:0:444\nZ:Q1gFZD0dRN2c/vItrO79kMldDxbHQ=\nR:migration_error_details.pb.go\na:0:0:444\nZ:Q1iec0hmooSwUt5OPpr90n1jGFzEE=\nR:migration_metrics.pb.go\na:0:0:444\nZ:Q1jA5aCBFdI2WVr69XlTb+2dO251A=\nR:migration_service.pb.go\na:0:0:444\nZ:Q13A9HGPSz4ndVZaYnd6LwvhK8CO4=\nR:translation_config.pb.go\na:0:0:444\nZ:Q18bxYOREPrtgv3UX0mh7gF7gU9CQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/migration/v2alpha\nM:0:0:555\nR:assessment_task.pb.go\na:0:0:444\nZ:Q1nl+lweRVhNigBaY4IuNSG0uOGPk=\nR:migration_entities.pb.go\na:0:0:444\nZ:Q1sY5l3UL+cLZ6gqR/VSSxEfemDCg=\nR:migration_error_details.pb.go\na:0:0:444\nZ:Q1uB/1vscSFHjeMnJu2DpaIC2aZOk=\nR:migration_metrics.pb.go\na:0:0:444\nZ:Q1iHjAIl/7VG1guLd136X2cjI+tnc=\nR:migration_service.pb.go\na:0:0:444\nZ:Q1BGNJHLobvo7IPdsiLf7v24V7el8=\nR:translation_service.pb.go\na:0:0:444\nZ:Q1gClKy83OjE3+wkaLOmy3qJVi/VY=\nR:translation_task.pb.go\na:0:0:444\nZ:Q1bF1IZDpTaIZby49v+jbtnZ0TSwQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/reservation\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/reservation/v1\nM:0:0:555\nR:reservation.pb.go\na:0:0:444\nZ:Q1b7rgCcmz/TqOrG4OQ2pixRmS+QU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/reservation/v1beta1\nM:0:0:555\nR:reservation.pb.go\na:0:0:444\nZ:Q17GZyXsUovh7KqnpKOSCny1irbpw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/storage\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/storage/v1\nM:0:0:555\nR:annotations.pb.go\na:0:0:444\nZ:Q1P22FNoczpvsqCzfvbUHDXMRoZEM=\nR:arrow.pb.go\na:0:0:444\nZ:Q1oA1xnlLyTbtJPS8RaBjMe4NgaFU=\nR:avro.pb.go\na:0:0:444\nZ:Q149EL71+b2j6plmYR7Tgrwz7o6AE=\nR:protobuf.pb.go\na:0:0:444\nZ:Q1WUfsn0bwe6HMgYvIfH7NC1DzsK0=\nR:storage.pb.go\na:0:0:444\nZ:Q1JweDFPEIuLL9vdKZwk71fZLL4B4=\nR:stream.pb.go\na:0:0:444\nZ:Q1jRgnSVn7uUpQmXlHUrghIaUcRI4=\nR:table.pb.go\na:0:0:444\nZ:Q1pxcouCxaPOMEKrlUDAnpGrFIatA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/storage/v1alpha2\nM:0:0:555\nR:protobuf.pb.go\na:0:0:444\nZ:Q12iHMKvJoH/VdKXeM5aQTn34c8kk=\nR:storage.pb.go\na:0:0:444\nZ:Q1kHSib7iPnpTEr4JICH7rSCUmj2I=\nR:stream.pb.go\na:0:0:444\nZ:Q1GY56y7OizvOBwg/xLIZwrHWHPsU=\nR:table.pb.go\na:0:0:444\nZ:Q1CWO9j4iEumzbMNnqvScIemyDGrs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/storage/v1beta1\nM:0:0:555\nR:arrow.pb.go\na:0:0:444\nZ:Q1o68syzCHLk52GbzskRf7SczTNr8=\nR:avro.pb.go\na:0:0:444\nZ:Q14cxMfNRbkCqjJysyPPUAYxVnHnk=\nR:read_options.pb.go\na:0:0:444\nZ:Q1js2/0PnkGfbzXS2bkgaRsxCQG30=\nR:storage.pb.go\na:0:0:444\nZ:Q1SNdzoxlrN5gey3xQ9IrdiiCPfbE=\nR:table_reference.pb.go\na:0:0:444\nZ:Q1MUpkIwwzoZDJCZSs3tMCGn59kvU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/storage/v1beta2\nM:0:0:555\nR:arrow.pb.go\na:0:0:444\nZ:Q1fAbUN+46IFfvT32Lmuz7s7Gwnnw=\nR:avro.pb.go\na:0:0:444\nZ:Q1/scnYVtehfOC/2hNZ0AyIHlrsas=\nR:protobuf.pb.go\na:0:0:444\nZ:Q1jhwBXeoILJZGLVm7JOYeQH7yDFU=\nR:storage.pb.go\na:0:0:444\nZ:Q1oduUVN4UzOJJDOg2zK4TTK6YMpE=\nR:stream.pb.go\na:0:0:444\nZ:Q1G1rxsV/zDWZ56cBTRKC+pw4sCnI=\nR:table.pb.go\na:0:0:444\nZ:Q11Dsmwo80DPO0hG1ncnLN6sWn4WE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/bigquery/v2\nM:0:0:555\nR:encryption_config.pb.go\na:0:0:444\nZ:Q1JRaFBD+c4VDo03qboWz5TLsWicI=\nR:model.pb.go\na:0:0:444\nZ:Q15MELSE21zGyjqg7LlPoRP52JOq0=\nR:model_reference.pb.go\na:0:0:444\nZ:Q15cewLMFkQtHC70IxU8uy1vVderQ=\nR:standard_sql.pb.go\na:0:0:444\nZ:Q1hPqnSu1d+wDt3w0udYMJN1RHX/c=\nR:table_reference.pb.go\na:0:0:444\nZ:Q15GsSrt60z8ZDUhxx+HBjDbKIL3c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing/budgets\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing/budgets/v1\nM:0:0:555\nR:budget_model.pb.go\na:0:0:444\nZ:Q1WWb+i1uQgCrWjREK0QyF57KQ6cI=\nR:budget_service.pb.go\na:0:0:444\nZ:Q1/nKhqkpCk+RQGe83sGrS3LdrUpg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing/budgets/v1alpha1\nM:0:0:555\nR:budget_model.pb.go\na:0:0:444\nZ:Q1X5kt1Ucd5YGWAvNb3/RtagdAxdo=\nR:budget_service.pb.go\na:0:0:444\nZ:Q1owLNdVqs8Pj8Mgf6X8C/ZqSaeVA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing/budgets/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1YSEFv2h2sl0REWd3f1vPXruLjMA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/billing/v1\nM:0:0:555\nR:cloud_billing.pb.go\na:0:0:444\nZ:Q1XXaSHBnsPX9rA8SEnOpRpvQzmB8=\nR:cloud_catalog.pb.go\na:0:0:444\nZ:Q1sTTlEUa1snIVHUocjYr//GWoNTI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/binaryauthorization\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/binaryauthorization/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1Q1yIrTBJ6mcS4KbLFIsozO17kHU=\nR:service.pb.go\na:0:0:444\nZ:Q1qtOfC3QqCYN7D7/Pbaodl0qX6Fs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/binaryauthorization/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1/wvMGjindMr1wke4qP9cwwfeN9g=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/certificatemanager\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/certificatemanager/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/certificatemanager/logging/v1\nM:0:0:555\nR:logs.pb.go\na:0:0:444\nZ:Q1gPAUqr6xeWTn72nowGhoinCt4t0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/certificatemanager/v1\nM:0:0:555\nR:certificate_issuance_config.pb.go\na:0:0:444\nZ:Q1mXLNPbv/fMfBJs+m2Zns2JLVDBw=\nR:certificate_manager.pb.go\na:0:0:444\nZ:Q1mNKuJ7jIEPYf6SwSkoNIDpuG3Hc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/channel\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/channel/v1\nM:0:0:555\nR:channel_partner_links.pb.go\na:0:0:444\nZ:Q1bfg8LgC9o011AkOye5UFqULtPCk=\nR:common.pb.go\na:0:0:444\nZ:Q16YLbFZbQqYV7D7x2H7BfYu72xNM=\nR:customers.pb.go\na:0:0:444\nZ:Q16XUFDHktmXEEJuHtZA2+7L6g6Hs=\nR:entitlements.pb.go\na:0:0:444\nZ:Q1WjjwDB5PR2WPpGVIevgbt7JH6Ng=\nR:offers.pb.go\na:0:0:444\nZ:Q1JbFH39hqoDGSVa36C7W1n2Maxrs=\nR:operations.pb.go\na:0:0:444\nZ:Q1K1YhyulWg8rBCJ5zaHLWW6pxK5k=\nR:products.pb.go\na:0:0:444\nZ:Q1XUpeR4aPSA1n+TzUY53bYpLM+cA=\nR:repricing.pb.go\na:0:0:444\nZ:Q1Y6+NMJOl6P8aHOozGWwME7/zok0=\nR:service.pb.go\na:0:0:444\nZ:Q1rmngeRPRGPsCpjz6AGHNGiUaGOo=\nR:subscriber_event.pb.go\na:0:0:444\nZ:Q1AA4XUF1Wapnt7gAU4DeGuGa4sUA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/clouddms\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/clouddms/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/clouddms/logging/v1\nM:0:0:555\nR:clouddms_platform_logs.pb.go\na:0:0:444\nZ:Q1Y65r5rcmkih8iF/yBgjd3UkP3g0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/clouddms/v1\nM:0:0:555\nR:clouddms.pb.go\na:0:0:444\nZ:Q1uRhAlIFKjq+iS5bpRy0MF0JdyiI=\nR:clouddms_resources.pb.go\na:0:0:444\nZ:Q1th2+JvELCUaEBSLEqAQJvGxSDyA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/cloudsetup\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/cloudsetup/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/cloudsetup/logging/v1\nM:0:0:555\nR:complete_deployment.pb.go\na:0:0:444\nZ:Q1gkF2+J8z2s/rmwqX4IopZPLpDSY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/commerce\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/commerce/consumer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/commerce/consumer/procurement\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/commerce/consumer/procurement/v1alpha1\nM:0:0:555\nR:order.pb.go\na:0:0:444\nZ:Q1sHPdpTdOu+VqcxBSmu6iZEJPsBs=\nR:procurement_service.pb.go\na:0:0:444\nZ:Q1QTLaFi5Yq/8DlDdCmn9UGW4PaLI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/common\nM:0:0:555\nR:operation_metadata.pb.go\na:0:0:444\nZ:Q1NorVcp9DqBiQH585n9gLyWmTFNQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/compute\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/compute/v1\nM:0:0:555\nR:compute.pb.go\na:0:0:444\nZ:Q1mkStGDT69MyMRdBnqczt9OEKfBE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/connectors\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/connectors/v1\nM:0:0:555\nR:authconfig.pb.go\na:0:0:444\nZ:Q1gvkNmbXdL1x+/qT3cBObkVfavq4=\nR:common.pb.go\na:0:0:444\nZ:Q1/raYuOeKc2gjfVtOc4Q8Q/Nuo00=\nR:connection.pb.go\na:0:0:444\nZ:Q1T4XaNdlALuS2CD1Q/TvgYw1AUHk=\nR:connector.pb.go\na:0:0:444\nZ:Q12G/UiiZInIPxzh0GzqYy/71pPac=\nR:connector_version.pb.go\na:0:0:444\nZ:Q1jKKO7t+PU6w7ytO4z9zML2NhQlE=\nR:connectors_service.pb.go\na:0:0:444\nZ:Q1+MjSp8f/LONPcOJPJoyFlGDE2Ns=\nR:destination_config.pb.go\na:0:0:444\nZ:Q1ILU+5J/vfZfQ4Yr/UXd9Ndccxv0=\nR:provider.pb.go\na:0:0:444\nZ:Q1NI2sWSSi0C0a9v5l0x2WYpcmbjs=\nR:runtime.pb.go\na:0:0:444\nZ:Q1r6j+dzL6udVNeyKo9KE6gId1cvw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/contactcenterinsights\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/contactcenterinsights/v1\nM:0:0:555\nR:contact_center_insights.pb.go\na:0:0:444\nZ:Q1KJIe0O13ByljY+b8zInBDDRhDWQ=\nR:resources.pb.go\na:0:0:444\nZ:Q1BaXTpzuFUZ36IEy/PcL9xvSoHC8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/containers\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/containers/workflow\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/containers/workflow/analysis\nM:0:0:555\nR:package.pb.go\na:0:0:444\nZ:Q13rZWbz71q63a9eX4IFZUuvJF/WY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/contentwarehouse\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/contentwarehouse/v1\nM:0:0:555\nR:async_document_service_request.pb.go\na:0:0:444\nZ:Q1GVPxDBe5E1rFQrWjMK0en3umQ7w=\nR:common.pb.go\na:0:0:444\nZ:Q1T4u0iMVNpmrHNHZQm7dii2LXW+o=\nR:document.pb.go\na:0:0:444\nZ:Q1d4Gtwg042O+ysrdhqfZ5Wjcdl7c=\nR:document_link_service.pb.go\na:0:0:444\nZ:Q1LS1QEagazrEz/dcyvBQnGu7G98w=\nR:document_schema.pb.go\na:0:0:444\nZ:Q1WxFva0tbAmvFTZxqB5xqtc9SzFk=\nR:document_schema_service.pb.go\na:0:0:444\nZ:Q1mTRN69/uu/yKWaigtfC0in8aA6o=\nR:document_service.pb.go\na:0:0:444\nZ:Q1w2nvV+KiTl5pBfvIQDMc+PjDJVU=\nR:document_service_request.pb.go\na:0:0:444\nZ:Q1upd6UtOcIvAiCx/m3+HcTRErjtM=\nR:filters.pb.go\na:0:0:444\nZ:Q1sYlcs2lquLE4KyfNoMY+F2vw2CY=\nR:histogram.pb.go\na:0:0:444\nZ:Q1CCMtbjNCwJD8mUX5JjuL1sL1ALI=\nR:rule_engine.pb.go\na:0:0:444\nZ:Q1p25nzR3wjiWOqVaCbIEfPjz0j6Q=\nR:ruleset_service.pb.go\na:0:0:444\nZ:Q1KMYDfkR0hUzFwQZKLyIhbUfTSDk=\nR:ruleset_service_request.pb.go\na:0:0:444\nZ:Q1WmWDbovHaAK87W8nijh0sS8guIg=\nR:synonymset.pb.go\na:0:0:444\nZ:Q1NHB1i4w1TqCfVpby/F4frtVwqXc=\nR:synonymset_service.pb.go\na:0:0:444\nZ:Q18caKCEGli8QnvjpquOjmyXfp/Vo=\nR:synonymset_service_request.pb.go\na:0:0:444\nZ:Q1Tz9Ke09Q4DjjVu7JzNMQ5B4h2Cw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datacatalog\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datacatalog/v1\nM:0:0:555\nR:bigquery.pb.go\na:0:0:444\nZ:Q18FIFe7Tm82rhgWCXZx4Znw8RjG0=\nR:common.pb.go\na:0:0:444\nZ:Q1Ixm4xjzpHr8IK9SGGq2JZRJoq/A=\nR:data_source.pb.go\na:0:0:444\nZ:Q1WQkSyQJ15nnPiBJzYqPI7H59H2Y=\nR:datacatalog.pb.go\na:0:0:444\nZ:Q1klClea4ymPqVXtRBsGKB7JGd+K0=\nR:dataplex_spec.pb.go\na:0:0:444\nZ:Q1EksqWmr9yeQqqYriOfYjAaqQoF8=\nR:gcs_fileset_spec.pb.go\na:0:0:444\nZ:Q1C7/izItwQu5glM0FSvxIyr/0+ms=\nR:physical_schema.pb.go\na:0:0:444\nZ:Q1gMjDSYayVx/e0oiZOk3dmu8Mfc4=\nR:policytagmanager.pb.go\na:0:0:444\nZ:Q1Xgh3n9ELJWy8QoV9kzYZstlHNFk=\nR:policytagmanagerserialization.pb.go\na:0:0:444\nZ:Q1Bx3nBMRzvE4b2KcJCUazdLGzyHc=\nR:schema.pb.go\na:0:0:444\nZ:Q1mBhUNTKLwWN8TR/z2m1W6Uxp3lE=\nR:search.pb.go\na:0:0:444\nZ:Q17n2k4Apbi/ko2h/xC8trr4llTqU=\nR:table_spec.pb.go\na:0:0:444\nZ:Q1LhZqyjnHuoljWwZKc7d1dc4w/BA=\nR:tags.pb.go\na:0:0:444\nZ:Q1g2rK35gK7EhoLPdCWOwP3edxkTc=\nR:timestamps.pb.go\na:0:0:444\nZ:Q1gwZDWJuQtSnKqeK/OxHk1WzhjMQ=\nR:usage.pb.go\na:0:0:444\nZ:Q10Dixz9ZsnbCw3s4CrPZ6p1QxwFU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datacatalog/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1cIqa1ARd6zOhe5T+8iEeFD0rxn0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataform\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataform/v1alpha2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1WSaXK0D1JmXJyKXvD9j/Y205i1U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataform/v1beta1\nM:0:0:555\nR:dataform.pb.go\na:0:0:444\nZ:Q110YqpXE8J5ft5laBgurZidAQNLQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datafusion\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datafusion/v1\nM:0:0:555\nR:datafusion.pb.go\na:0:0:444\nZ:Q1l9m1Q8E14eu1DfAXN9aLMb3+mdk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datafusion/v1beta1\nM:0:0:555\nR:v1beta1.pb.go\na:0:0:444\nZ:Q1XTKucFRkseVydx2HX4khFtulw70=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datalabeling\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datalabeling/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q15pAhTwIVYL+kDnbxcGSf+6VpaLI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataplex\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataplex/v1\nM:0:0:555\nR:analyze.pb.go\na:0:0:444\nZ:Q1tesppcCRyNzduYvO+d5U+rKJFDA=\nR:content.pb.go\na:0:0:444\nZ:Q1I3lbEV+oY3BRQpBsfh+gj+yvgAU=\nR:logs.pb.go\na:0:0:444\nZ:Q1x+xO4lv9bhkK0et021bJcTSH/tE=\nR:metadata.pb.go\na:0:0:444\nZ:Q1MzCVnF03bkDIOUMlvCOyb0tWhhw=\nR:resources.pb.go\na:0:0:444\nZ:Q1EmWHYV5yzzUpARNARD6wSbsbMtA=\nR:service.pb.go\na:0:0:444\nZ:Q1OnteUQMuNd66nA8t/YGdTYaFfVc=\nR:tasks.pb.go\na:0:0:444\nZ:Q1eozAD9jiS/tYdFM5FEtZhFBPcMI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataproc\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataproc/logging\nM:0:0:555\nR:autoscaler_log.pb.go\na:0:0:444\nZ:Q1pzrH3lQusvz/zkyAPAbrCf/sTmg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataproc/v1\nM:0:0:555\nR:autoscaling_policies.pb.go\na:0:0:444\nZ:Q1RzLDX7iWxyFYEwSPQQpSRhbOqj0=\nR:batches.pb.go\na:0:0:444\nZ:Q11DdYxVQ8YWuEdMxOz1yvypqziNg=\nR:clusters.pb.go\na:0:0:444\nZ:Q152d6bZsaM6zpX59b3e4pL621Z+k=\nR:jobs.pb.go\na:0:0:444\nZ:Q1k91ZjSUGdLeD2U+y+2tutVVWxio=\nR:operations.pb.go\na:0:0:444\nZ:Q1ByqvboSFPWinelMRWefNgi/oJMA=\nR:shared.pb.go\na:0:0:444\nZ:Q1D950tKzQtkO0nhCjqHRdPHvRNJI=\nR:workflow_templates.pb.go\na:0:0:444\nZ:Q17yROC0DUSzKeoT2sN8NlHOH1tWs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataproc/v1beta2\nM:0:0:555\nR:autoscaling_policies.pb.go\na:0:0:444\nZ:Q1aeQ/s6omzbvKhTr5S5C/glIyMW8=\nR:clusters.pb.go\na:0:0:444\nZ:Q1/esohBIABQuSJmUbZHdbvjEs0Q4=\nR:jobs.pb.go\na:0:0:444\nZ:Q1PTSsmuaULQQqXscd50G0HbGAXTQ=\nR:operations.pb.go\na:0:0:444\nZ:Q1H9bhcPZM81AbjXhvyRLjGGqwETI=\nR:shared.pb.go\na:0:0:444\nZ:Q1cjTd5xeoxi87YBq/DQPE/6TeKTI=\nR:workflow_templates.pb.go\na:0:0:444\nZ:Q1hZ+Zr91iWt22vZxY8iRIipyepYw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataqna\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dataqna/v1alpha\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1r26HDG2rRqio+snWE0btnQArJFY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datastream\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datastream/v1\nM:0:0:555\nR:datastream.pb.go\na:0:0:444\nZ:Q1cLTpRuuLnnl6h7yysETKPkPIgYY=\nR:datastream_resources.pb.go\na:0:0:444\nZ:Q1fZYjglRmANZVIbIIgi9q6pz+fJ4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/datastream/v1alpha1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1/5xry1kDqgyqILI2d0PscbTFfhA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/deploy\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/deploy/v1\nM:0:0:555\nR:cloud_deploy.pb.go\na:0:0:444\nZ:Q1nCg7bye+alBuPateXRoT7eXRelU=\nR:deliverypipeline_notification_payload.pb.go\na:0:0:444\nZ:Q18u8mIzXYz5M2LZs/rEg6v4rwC3s=\nR:jobrun_notification_payload.pb.go\na:0:0:444\nZ:Q1sBA+fl/a9JSt0zCGOCI0HDONJwE=\nR:log_enums.pb.go\na:0:0:444\nZ:Q1t2lvhZYDBSi2R3iOZ7PFpcfWT80=\nR:release_notification_payload.pb.go\na:0:0:444\nZ:Q1HBaQtTPIi4AB2ih9W6PrvvsplVg=\nR:release_render_payload.pb.go\na:0:0:444\nZ:Q1sD6Lb0I1/NSsoskz3vDZPnEPW5o=\nR:rollout_notification_payload.pb.go\na:0:0:444\nZ:Q1U/bI8yUGo7pdvMVDywR9SnaE6VA=\nR:target_notification_payload.pb.go\na:0:0:444\nZ:Q1ZU4H683XiqEag9YxAYp6zsfhewY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow/cx\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow/cx/v3\nM:0:0:555\nR:advanced_settings.pb.go\na:0:0:444\nZ:Q1xDd8SO9yDKg7g/piK/LXjD1h8Sw=\nR:agent.pb.go\na:0:0:444\nZ:Q1O7RILATElJ82T1e7Vd9gNnwayAk=\nR:audio_config.pb.go\na:0:0:444\nZ:Q1Jo8JqvKiMIZ3tbOkb68HMKiuaEg=\nR:changelog.pb.go\na:0:0:444\nZ:Q1vU3Ww23QLrW1FsFXShzsQR3dHmM=\nR:deployment.pb.go\na:0:0:444\nZ:Q1pSHlEcmLeShSOalLtpMuGfpw16A=\nR:entity_type.pb.go\na:0:0:444\nZ:Q1v9jedyGMq1uISQBpblRQjmoRMVU=\nR:environment.pb.go\na:0:0:444\nZ:Q1sZNRui+V+rhft4hr5rgdJnycfv8=\nR:experiment.pb.go\na:0:0:444\nZ:Q1KN3KoTkcEJdsCf8t3fA5Jvvgp+s=\nR:flow.pb.go\na:0:0:444\nZ:Q1Iyics4yt3z3BKqFbBKyx3/62zD4=\nR:fulfillment.pb.go\na:0:0:444\nZ:Q1FS2AuxlNmYJCVmcK+Su8eZYTOu0=\nR:intent.pb.go\na:0:0:444\nZ:Q136wadY5RWmqQk+c424wkKKPSWjY=\nR:page.pb.go\na:0:0:444\nZ:Q1DcU74fxWY3yKNXsuTozIVkMJOsE=\nR:response_message.pb.go\na:0:0:444\nZ:Q1jRWMXECOBsCXoGVTkCyJvIWdBg8=\nR:security_settings.pb.go\na:0:0:444\nZ:Q1xXyK2Bq758SD7084vm/ORet3MDc=\nR:session.pb.go\na:0:0:444\nZ:Q1k/owtjeRj5E70kOA81Dvxe2kke4=\nR:session_entity_type.pb.go\na:0:0:444\nZ:Q1j9hid0AtF9W91829Zw+2SR4JYgU=\nR:test_case.pb.go\na:0:0:444\nZ:Q113xv2Nt4WuFilCD7z5ODQ9gqkG8=\nR:transition_route_group.pb.go\na:0:0:444\nZ:Q1xFCuibh3x0rWQv1AuH3fg2k+Gxs=\nR:validation_message.pb.go\na:0:0:444\nZ:Q1R+fED/NttkrND2odO86N7WnrAEs=\nR:version.pb.go\na:0:0:444\nZ:Q16CO6IKPPHYGu73NehvEdTC8vsf4=\nR:webhook.pb.go\na:0:0:444\nZ:Q1wP4AFIoYfYVVjoBDiRY6dLZVI7g=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow/cx/v3beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1ZC/L/1Rcx7oQXesd0/JEbv0CRpU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow/v2\nM:0:0:555\nR:agent.pb.go\na:0:0:444\nZ:Q1GdO2YKQr6sJUi7aU6xPDbLnSPw4=\nR:answer_record.pb.go\na:0:0:444\nZ:Q1BsGUnLv3NxGNb1Gbbd1C7+1BkHE=\nR:audio_config.pb.go\na:0:0:444\nZ:Q1CUCMkmj2dQ1sXL+j57WuGBzNqI0=\nR:context.pb.go\na:0:0:444\nZ:Q1wB6NpgL19Ft6gEgaSg228jeljB4=\nR:conversation.pb.go\na:0:0:444\nZ:Q1oKwTxrqElsdx31Mu+3Zo7ElONZE=\nR:conversation_dataset.pb.go\na:0:0:444\nZ:Q1Mak6d7w2z+0dnausQX4qwBkHv2s=\nR:conversation_event.pb.go\na:0:0:444\nZ:Q1LZKSpy9CkbmiPVKV/OHZhL37xhs=\nR:conversation_model.pb.go\na:0:0:444\nZ:Q1k3jzCxH8DwYF/726MkNyoRkFe38=\nR:conversation_profile.pb.go\na:0:0:444\nZ:Q1Az5FdjGK5hvhQkx4VSwHnN1TQ0w=\nR:document.pb.go\na:0:0:444\nZ:Q1l0+vMFbPeMwBuvGmVu2ivoiRmGU=\nR:entity_type.pb.go\na:0:0:444\nZ:Q1uYgeRxhDNUHolVaBomEpehCpgdA=\nR:environment.pb.go\na:0:0:444\nZ:Q1QDrxmepvsrgs1F+cz5gMEvCpwGk=\nR:fulfillment.pb.go\na:0:0:444\nZ:Q1TLqEW6wkkta+HkQYAcFd/wjbAVE=\nR:gcs.pb.go\na:0:0:444\nZ:Q1XmSVV4uXcDagHoOqs1zKGXv/psw=\nR:human_agent_assistant_event.pb.go\na:0:0:444\nZ:Q19N8FJzo76QYKRKwBFUmE2UbLHHk=\nR:intent.pb.go\na:0:0:444\nZ:Q163+Nw53CuiBgkLYlOYNC8D92wkk=\nR:knowledge_base.pb.go\na:0:0:444\nZ:Q1ho7d3jKcF2jOIGnO66SZyQWu4oM=\nR:participant.pb.go\na:0:0:444\nZ:Q1l3tXZF6A31RBO/1jyunxOM/PaoU=\nR:session.pb.go\na:0:0:444\nZ:Q1RkdY6BXozXREfpSNOWSZO1O6HLM=\nR:session_entity_type.pb.go\na:0:0:444\nZ:Q1mXi9gWGF2MIGwzM1NOWqgrPHc98=\nR:validation_result.pb.go\na:0:0:444\nZ:Q18zuTdjlm6xVOS9HcV5+dBMl9CQo=\nR:version.pb.go\na:0:0:444\nZ:Q1nX0O0P+O/z0+iupptO8ipQisnq0=\nR:webhook.pb.go\na:0:0:444\nZ:Q1TBjD0HHgxIAgRKEfOTYxJf5egQs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/dialogflow/v2beta1\nM:0:0:555\nR:agent.pb.go\na:0:0:444\nZ:Q1uQHeLFKpU90mDIwiJcaCFyHpQz8=\nR:answer_record.pb.go\na:0:0:444\nZ:Q1V1KF3xKmld/SrRVH8sWDH2lKqzQ=\nR:audio_config.pb.go\na:0:0:444\nZ:Q1zaAiwHG2xqV+Irzj10gsBIG0vAc=\nR:context.pb.go\na:0:0:444\nZ:Q1VvOmpgYykrNuic2bqZNUQfhOvyY=\nR:conversation.pb.go\na:0:0:444\nZ:Q1h6q6xrqbOXgr8/BmkFQmSLi8dk8=\nR:conversation_event.pb.go\na:0:0:444\nZ:Q1pCO1dZ7Q++y+Fxz/hes8gNVgLEg=\nR:conversation_profile.pb.go\na:0:0:444\nZ:Q1W5A4celJQMpVhNTnywQU+PZOqMQ=\nR:document.pb.go\na:0:0:444\nZ:Q19PjZy7+QfXOp56tMczzKLuHDXRo=\nR:entity_type.pb.go\na:0:0:444\nZ:Q1ZyR1qP54dqgeZOXzsXu00Gc+734=\nR:environment.pb.go\na:0:0:444\nZ:Q1VZf2zPD0KUKPkqduMghizn+EqKM=\nR:fulfillment.pb.go\na:0:0:444\nZ:Q1h8d8L8Zn43ODOyP3oa77X9/7x7I=\nR:gcs.pb.go\na:0:0:444\nZ:Q1GtcFNPfSKMR2RKnFQqtquaosRe8=\nR:human_agent_assistant_event.pb.go\na:0:0:444\nZ:Q1NKS/lzuQGlTrB5OGdRTNmBBjVZ0=\nR:intent.pb.go\na:0:0:444\nZ:Q1Z0El5tmwHLFd5NnEreQUkHl1erM=\nR:knowledge_base.pb.go\na:0:0:444\nZ:Q1PzmCOWRoZw8JGZVB/u2ftoeurqw=\nR:participant.pb.go\na:0:0:444\nZ:Q1431CGmI71fus7SWjD9JWwg0qE60=\nR:session.pb.go\na:0:0:444\nZ:Q14zbGAe4750FSNF3EsFSg97lrNL4=\nR:session_entity_type.pb.go\na:0:0:444\nZ:Q1xboMVBV0ZHTRMdcGJfeYXyNRzWs=\nR:validation_result.pb.go\na:0:0:444\nZ:Q17VSk8+PXze/kqwVWWgB5efJLxKM=\nR:version.pb.go\na:0:0:444\nZ:Q1e97k3RYGvG8CjzFELDIkMInGbS8=\nR:webhook.pb.go\na:0:0:444\nZ:Q1OajUtfxUTS9juKOUnvcFnEbgAeU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/discoveryengine\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/discoveryengine/v1beta\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1yGaty/Cp1z0ZaLGbBqxplDMXIRU=\nR:document.pb.go\na:0:0:444\nZ:Q1WOZhP/ARa1exKNKtwDturjaXAhc=\nR:document_service.pb.go\na:0:0:444\nZ:Q1YZOHCNxDlveB0wtfleyhVwXaouY=\nR:import_config.pb.go\na:0:0:444\nZ:Q1gkzD80PyUT16C02BW7bkyZXHDHY=\nR:recommendation_service.pb.go\na:0:0:444\nZ:Q16gOC/f/sIU16npyeZwD7/J+zZPA=\nR:user_event.pb.go\na:0:0:444\nZ:Q145LvInent88FSLmvbXRHt03KUyA=\nR:user_event_service.pb.go\na:0:0:444\nZ:Q1Fk8sLaeztnms89ujPZL2mfCL+EE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/documentai\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/documentai/v1\nM:0:0:555\nR:barcode.pb.go\na:0:0:444\nZ:Q1cvK1vc155u5gtpyftiJjEo6z64I=\nR:document.pb.go\na:0:0:444\nZ:Q1/751mDLw1Z4iB2UBG6UAFGYO1dU=\nR:document_io.pb.go\na:0:0:444\nZ:Q13N9YglM5I79Mx76Gwlh/gakZlAk=\nR:document_processor_service.pb.go\na:0:0:444\nZ:Q12+5ajHYF8eELG+r5sDXkZHiy7PU=\nR:document_schema.pb.go\na:0:0:444\nZ:Q1umMQKkVhOvg0v30ECo81+g2IHgU=\nR:geometry.pb.go\na:0:0:444\nZ:Q1zzHfSgLM1/xTsQJaFSwZGn74CJU=\nR:operation_metadata.pb.go\na:0:0:444\nZ:Q1Bj3Pyq4jYQX24TK+w6zJE2tGMwI=\nR:processor.pb.go\na:0:0:444\nZ:Q1AZ3TI3DMvQ0rYIoxcxvtqo8IOA0=\nR:processor_type.pb.go\na:0:0:444\nZ:Q12ueXwnPVwkY5+rZqiMtOX6sEOmY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/documentai/v1beta1\nM:0:0:555\nR:document.pb.go\na:0:0:444\nZ:Q1zs7lpX45YBJz2jTyv2y86wOgnh0=\nR:document_understanding.pb.go\na:0:0:444\nZ:Q1Yl1YJ6yNQOwPvezY2ZKVtzmvQuA=\nR:geometry.pb.go\na:0:0:444\nZ:Q1EnsqI+T/+elg8ORZ9Pza7PfXyg8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/documentai/v1beta2\nM:0:0:555\nR:document.pb.go\na:0:0:444\nZ:Q1k5X5W32XSS1P8ZKrgGTEb0dFJSs=\nR:document_understanding.pb.go\na:0:0:444\nZ:Q1xx0FrUt5oW2F84JXMe7uTI/NirM=\nR:geometry.pb.go\na:0:0:444\nZ:Q1TB/l7fdrMBHaWq7V1LL5Ga6lhms=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/documentai/v1beta3\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q19x3GXn0ce1i/m4jyhOlZZrfOLUQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/domains\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/domains/v1\nM:0:0:555\nR:domains.pb.go\na:0:0:444\nZ:Q1ei0OfX3pP5iYlrHdE8nQ6J8YVAQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/domains/v1alpha2\nM:0:0:555\nR:domains.pb.go\na:0:0:444\nZ:Q1+MGXtCJwHi6IDndIjqjIpQQs3T0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/domains/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1Vb7S3zuiNruGomLSNzVGJdZ+Rxs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/edgecontainer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/edgecontainer/v1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q10mmjYlQS030Z/usA6n7cgO23Kyc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/enterpriseknowledgegraph\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/enterpriseknowledgegraph/v1\nM:0:0:555\nR:job_state.pb.go\na:0:0:444\nZ:Q1uoYdikDOVOt+w03Q/4J8D0xlOB0=\nR:operation_metadata.pb.go\na:0:0:444\nZ:Q15dKhIVKFmx9l2K6nC5K+ctr8SMo=\nR:service.pb.go\na:0:0:444\nZ:Q1gEYQD7NGBT1s/C1gcOD9NpwxFKQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/essentialcontacts\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/essentialcontacts/v1\nM:0:0:555\nR:enums.pb.go\na:0:0:444\nZ:Q1kQVFH9OXWSjZ2H/2F9UabkuGJJ0=\nR:service.pb.go\na:0:0:444\nZ:Q1UdcOZxZpHSmVwYnh4hOko63rFXA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/eventarc\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/eventarc/publishing\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/eventarc/publishing/v1\nM:0:0:555\nR:publisher.pb.go\na:0:0:444\nZ:Q1TSCLwg/G+nk/NTRT3/crS9eb3iM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/eventarc/v1\nM:0:0:555\nR:channel.pb.go\na:0:0:444\nZ:Q1BC3Nbx7m4fdRKvdyY9JxS7ltC9A=\nR:channel_connection.pb.go\na:0:0:444\nZ:Q1u7MuraRpovmd0qRkS3DZqVLp3fQ=\nR:discovery.pb.go\na:0:0:444\nZ:Q1UiSxabAsy8GkBebLXFhulbkWUj8=\nR:eventarc.pb.go\na:0:0:444\nZ:Q1p//wzTF0o2kQk4AOn1CyW/Bv69o=\nR:trigger.pb.go\na:0:0:444\nZ:Q1+rDPBd9zzXbs9Y7nAeyCo3zrSqc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/extendedops\nM:0:0:555\nR:extended_operations.pb.go\na:0:0:444\nZ:Q1lijiLHBkOsEyjIVSfsPPshfn8yc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/filestore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/filestore/v1\nM:0:0:555\nR:cloud_filestore_service.pb.go\na:0:0:444\nZ:Q1Hm/0zxcAaY/PaPNzQRrdDkynMMo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/filestore/v1beta1\nM:0:0:555\nR:cloud_filestore_service.pb.go\na:0:0:444\nZ:Q1jj6W8JtI4FIPq8f9UTSZtpH0xr8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions/v1\nM:0:0:555\nR:functions.pb.go\na:0:0:444\nZ:Q1plpBM6XqWanJddD+DhExf1o+3pU=\nR:operations.pb.go\na:0:0:444\nZ:Q1I28x/Dj+4jsW8o7jjJJ1HiqFZ8I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions/v1beta2\nM:0:0:555\nR:functions.pb.go\na:0:0:444\nZ:Q1AWXr/cFe574M2S7NsckMU8XINkw=\nR:operations.pb.go\na:0:0:444\nZ:Q1B0tHP0EV5T0XDMII0n1Q7YDEjsU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions/v2\nM:0:0:555\nR:functions.pb.go\na:0:0:444\nZ:Q1y+vzHWy0MArNnuZCu23ZrZ5JsjI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions/v2alpha\nM:0:0:555\nR:functions.pb.go\na:0:0:444\nZ:Q1VeAepPzZ/TIPmaqpkthEd2huZf8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/functions/v2beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1hh3Qrhd6f2g+DuFow5Si7cJ9Z+U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gaming\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gaming/allocationendpoint\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gaming/allocationendpoint/v1alpha\nM:0:0:555\nR:allocation_endpoint.pb.go\na:0:0:444\nZ:Q1HAZVPslTk3ePfFUVgQYrdBztnKI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gaming/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1G2yyummHl0q7Q368cUpxSIzB7h4=\nR:game_server_clusters.pb.go\na:0:0:444\nZ:Q1s7edgOYnVwvuMLBgjUQvGvPo8qA=\nR:game_server_clusters_service.pb.go\na:0:0:444\nZ:Q1c628y3o23Scq48QZ6rBp8K3zPwc=\nR:game_server_configs.pb.go\na:0:0:444\nZ:Q1dE6lnbFTMREZlwzri+wyn+bxKi4=\nR:game_server_configs_service.pb.go\na:0:0:444\nZ:Q1w8A95eLB9DJF4O831MKLsQeBYbs=\nR:game_server_deployments.pb.go\na:0:0:444\nZ:Q17lZLOvT2DWeQ2fh3hIG5YMqng7I=\nR:game_server_deployments_service.pb.go\na:0:0:444\nZ:Q108sNqjWQt3nKUhCIw7zWOdP8UT4=\nR:realms.pb.go\na:0:0:444\nZ:Q1EzwbJ4KMUSmwZVizAPwtZkf/Nrw=\nR:realms_service.pb.go\na:0:0:444\nZ:Q1NN2stkV/DfY1cVz20ejKfNe11G4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gaming/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1j1n2HKA4UV1yEoxfM2QUi3YI238=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkebackup\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkebackup/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkebackup/logging/v1\nM:0:0:555\nR:logged_backup.pb.go\na:0:0:444\nZ:Q1DABe5fVDb+WXtpJx74b1bzMlTBM=\nR:logged_backup_plan.pb.go\na:0:0:444\nZ:Q11oifcxxeEGRGS7T91IF6PdDUfsA=\nR:logged_common.pb.go\na:0:0:444\nZ:Q1JbGc4Njv+Wo2uiRfsqG1Vm2c3Qw=\nR:logged_restore.pb.go\na:0:0:444\nZ:Q1SaaKpHhn1VObJfrQhs0Mv840doI=\nR:logged_restore_plan.pb.go\na:0:0:444\nZ:Q1vyQ47JCxiN2PV6e3tU0ZMTQRRsQ=\nR:logging.pb.go\na:0:0:444\nZ:Q16u9I8g4ZHJZVlBeENne/BpplNC8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkebackup/v1\nM:0:0:555\nR:backup.pb.go\na:0:0:444\nZ:Q1UBYud4yu80bQ9HaiHdSd4rwjnV4=\nR:backup_plan.pb.go\na:0:0:444\nZ:Q113FYPmVnYBPFlFK9mR6j7sEYxSk=\nR:common.pb.go\na:0:0:444\nZ:Q1BBn7ySNgckB+Rwvp2RxZhNOflvo=\nR:gkebackup.pb.go\na:0:0:444\nZ:Q1/N2n7TrGQbZjlcqubRs/sKPErrs=\nR:restore.pb.go\na:0:0:444\nZ:Q1pk4GPGXaKCOrq9hUJIwBLRdnkac=\nR:restore_plan.pb.go\na:0:0:444\nZ:Q1grHkW5/sUoaiPMu2bg1BJWm0n1I=\nR:volume.pb.go\na:0:0:444\nZ:Q1x6sg8Tb4PWnOt4uVZuf7VR74LP0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkeconnect\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkeconnect/gateway\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkeconnect/gateway/v1\nM:0:0:555\nR:gateway.pb.go\na:0:0:444\nZ:Q1ov/OgApnJ6etHkUKJS3/DjAfKM0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkeconnect/gateway/v1alpha1\nM:0:0:555\nR:gateway.pb.go\na:0:0:444\nZ:Q1sc/haymECJCsHttCa7xl678h7yE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkeconnect/gateway/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1BqGGpKEp3+BC3nU634fPuD3H2do=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/cloudauditlogging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/cloudauditlogging/v1alpha\nM:0:0:555\nR:cloudauditlogging.pb.go\na:0:0:444\nZ:Q1sEsy1L0H+VTUdWoz9Rtc7PoSw+Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/configmanagement\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/configmanagement/v1\nM:0:0:555\nR:configmanagement.pb.go\na:0:0:444\nZ:Q11p7F/VspLWDts3BoRPa4Op9Z/x4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/configmanagement/v1alpha\nM:0:0:555\nR:configmanagement.pb.go\na:0:0:444\nZ:Q17rmuR41AolxEJ3LiDFZsRR1QlTg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/configmanagement/v1beta\nM:0:0:555\nR:configmanagement.pb.go\na:0:0:444\nZ:Q1MUPZ2Uc8gqpg+tIC7J6CxDzpHnA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/metering\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/metering/v1alpha\nM:0:0:555\nR:metering.pb.go\na:0:0:444\nZ:Q1T+BJt3EUjmJlrQNRqtz4ZdKHVgQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/metering/v1beta\nM:0:0:555\nR:metering.pb.go\na:0:0:444\nZ:Q1QvvS3Kkf+O3o5q1iQBMpSv8Xjio=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/multiclusteringress\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/multiclusteringress/v1\nM:0:0:555\nR:multiclusteringress.pb.go\na:0:0:444\nZ:Q1zIcfbOZxd9dHSZax5H64EtogM5M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/multiclusteringress/v1alpha\nM:0:0:555\nR:multiclusteringress.pb.go\na:0:0:444\nZ:Q1FbFs9EfXpEMaWwYthvD8tHk31ZI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/multiclusteringress/v1beta\nM:0:0:555\nR:multiclusteringress.pb.go\na:0:0:444\nZ:Q1Sf7J89mh7odBlc5xns40Je7prw4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/servicemesh\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/servicemesh/v1alpha\nM:0:0:555\nR:servicemesh.pb.go\na:0:0:444\nZ:Q160e1IuUP+dA5goZbWY+6DwsvoVw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/v1\nM:0:0:555\nR:feature.pb.go\na:0:0:444\nZ:Q1mdLhdhoujAPKwt+mtRNxui41vJU=\nR:membership.pb.go\na:0:0:444\nZ:Q1CInudACVLGI48gs7lUFiln9P7/A=\nR:service.pb.go\na:0:0:444\nZ:Q1BgNIqA6d8c9Z2ifB4SccYoidBII=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/v1alpha\nM:0:0:555\nR:feature.pb.go\na:0:0:444\nZ:Q1yY7LPI/qOTVCgfr/2QaFE/qcqjA=\nR:service.pb.go\na:0:0:444\nZ:Q1DECnf+0477q4GO1J6l1GFqF69dQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/v1alpha2\nM:0:0:555\nR:membership.pb.go\na:0:0:444\nZ:Q1UmDxPxeM3yKbXdY8GXXcTPUhzpU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/v1beta\nM:0:0:555\nR:feature.pb.go\na:0:0:444\nZ:Q1YZRsmSygqpM++mlmAn/gfelvATw=\nR:service.pb.go\na:0:0:444\nZ:Q1a93BOoj0tg0T93jw14VVu+FayCk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkehub/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1Qq0DjCHJm9MFTztmOMoRwwZIffQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkemulticloud\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gkemulticloud/v1\nM:0:0:555\nR:aws_resources.pb.go\na:0:0:444\nZ:Q18YiWTj7tuBydyzyOUGR79RlWaDE=\nR:aws_service.pb.go\na:0:0:444\nZ:Q1ucLjs53fmwDdY9vMt+fZ9NsDPNw=\nR:azure_resources.pb.go\na:0:0:444\nZ:Q1jB3REYoQTFsBx7r1uZAFrZkz2P8=\nR:azure_service.pb.go\na:0:0:444\nZ:Q1qL7NPwbkdk52J1IuftGlmAIeXp0=\nR:common_resources.pb.go\na:0:0:444\nZ:Q1V3M8UORIJU/OQk2i+3r/ubNarRc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gsuiteaddons\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gsuiteaddons/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gsuiteaddons/logging/v1\nM:0:0:555\nR:g_suite_add_ons_log_entry.pb.go\na:0:0:444\nZ:Q1br2ubv2/zYgTccJM+NNd1nM8WqE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/gsuiteaddons/v1\nM:0:0:555\nR:gsuiteaddons.pb.go\na:0:0:444\nZ:Q1Ncvi8sMDZuimKqRUi08pK8/yz74=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/healthcare\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/healthcare/logging\nM:0:0:555\nR:annotation.pb.go\na:0:0:444\nZ:Q1VLE7TjKDDFmNfWq8BGn/OCU+0bk=\nR:consent.pb.go\na:0:0:444\nZ:Q1aFDNJs419stxLBPai8crU88qFJI=\nR:deid.pb.go\na:0:0:444\nZ:Q1HYN7iKVQ35XRjEwm8ujVm52Rj1w=\nR:dicom.pb.go\na:0:0:444\nZ:Q1MRBBvIN2fGqUsLga2DEC/jABmik=\nR:fhir.pb.go\na:0:0:444\nZ:Q1g0WMOs0zdYb3LLvpfBZKE9A4GOM=\nR:hl7v2.pb.go\na:0:0:444\nZ:Q1wb/8AxClX1KNtV3Pukn3lAx5hng=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/iap\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/iap/v1\nM:0:0:555\nR:service.pb.go\na:0:0:444\nZ:Q12RsCBEm9Ql6tO2hqMLyDA9X4mfY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/iap/v1beta1\nM:0:0:555\nR:service.pb.go\na:0:0:444\nZ:Q1WY2F2OncI1huSUSyl0tsLVLTxDQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/identitytoolkit\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/identitytoolkit/logging\nM:0:0:555\nR:request_log.pb.go\na:0:0:444\nZ:Q1BOMkXY2t9jXpaZkGg0hXBGCVtPI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/identitytoolkit/v2\nM:0:0:555\nR:account_management_service.pb.go\na:0:0:444\nZ:Q1f3XVPSBNuICbB36NRVhiBN0k2hg=\nR:authentication_service.pb.go\na:0:0:444\nZ:Q1a6CD7HLurzcv6bTEEye6KNMDT4M=\nR:mfa_info.pb.go\na:0:0:444\nZ:Q1hebcrg+zSDX1WIjR9aHXK/r7QLY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ids\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ids/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ids/logging/v1\nM:0:0:555\nR:logging.pb.go\na:0:0:444\nZ:Q1Mk4nh9yuCwTzVd7wSmCsWWyQZIk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ids/v1\nM:0:0:555\nR:ids.pb.go\na:0:0:444\nZ:Q17ncMqLh7cNQYFYT2+RBRruOkL7c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/integrations\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/integrations/v1alpha\nM:0:0:555\nR:event_parameter.pb.go\na:0:0:444\nZ:Q113PShsFAqDGPZPm2CTex79ICfxw=\nR:json_validation.pb.go\na:0:0:444\nZ:Q1VCfIzy1ow41HhMf0DnmU5iuq2LE=\nR:log_entries.pb.go\na:0:0:444\nZ:Q1YCLdaThbQ/LEcmzWpJe6mdHRHQA=\nR:product.pb.go\na:0:0:444\nZ:Q1iLN3j7Uh5QzbY0LaSvFbu7Xkp68=\nR:task_config.pb.go\na:0:0:444\nZ:Q1oiKBhbmstbRFjoZMnICO4FNN2jg=\nR:value_type.pb.go\na:0:0:444\nZ:Q1A4SeLC4glTfoXv7Fm84Zh0c9iYo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/iot\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/iot/v1\nM:0:0:555\nR:device_manager.pb.go\na:0:0:444\nZ:Q1DDae3XRtn2oSC6ZgragN5He9uKw=\nR:resources.pb.go\na:0:0:444\nZ:Q1KgE8ITksQ04gZEb/gdt23nY+tAM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/irm\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/irm/v1alpha2\nM:0:0:555\nR:incidents.pb.go\na:0:0:444\nZ:Q1hYEGKS0peigvqNnrKPlO9+j6WvQ=\nR:incidents_service.pb.go\na:0:0:444\nZ:Q1eVCjvqbLxZPF66Cf72Le6SRYYDo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/kms\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/kms/v1\nM:0:0:555\nR:ekm_service.pb.go\na:0:0:444\nZ:Q1p3cPt+QpYPUujnUZ+ykw0xNlrlQ=\nR:resources.pb.go\na:0:0:444\nZ:Q1kidDIV+9O/D71kq5lMU77N6IwYQ=\nR:service.pb.go\na:0:0:444\nZ:Q1BchIRtqqZ+kNJExfVHG+e9ypJxo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/kubernetes\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/kubernetes/security\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/kubernetes/security/containersecurity_logging\nM:0:0:555\nR:logging.pb.go\na:0:0:444\nZ:Q18Wlh3qW7GE3C+l9Jvet4Sd/rWlg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/language\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/language/v1\nM:0:0:555\nR:language_service.pb.go\na:0:0:444\nZ:Q1l2lVQs1Ih3mS+IMggbdQzjkL2Oo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/language/v1beta1\nM:0:0:555\nR:language_service.pb.go\na:0:0:444\nZ:Q1ryvNv/6gC+GdGVNfGb/wyh7oMsE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/language/v1beta2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1I/qQOndJ5RXOmwIm8pHwqCiY1nY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/lifesciences\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/lifesciences/v2beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1tq8/sTBqJpUErh6b5bQTNG3wrds=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/location\nM:0:0:555\nR:locations.pb.go\na:0:0:444\nZ:Q1c62o0L5xshw0jXsdB6bxn71XrWc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/managedidentities\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/managedidentities/v1\nM:0:0:555\nR:managed_identities_service.pb.go\na:0:0:444\nZ:Q1r8TJG2cjVrErhqEToN8ir+2hFtk=\nR:resource.pb.go\na:0:0:444\nZ:Q1S35P+OvEICZdpuc9I2yWTohnqkg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/managedidentities/v1beta1\nM:0:0:555\nR:managed_identities_service.pb.go\na:0:0:444\nZ:Q1OwAwG1JWDrDVFl+ZzZhdlZwJFT4=\nR:resource.pb.go\na:0:0:444\nZ:Q1p0k6d7swha8uGVtpaACj+Es01BA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/mediatranslation\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/mediatranslation/v1alpha1\nM:0:0:555\nR:media_translation.pb.go\na:0:0:444\nZ:Q1WopLdXaguV2qXkWpjxKkidHdZQo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/mediatranslation/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q115G9OENGZJ0Ryswy71qX9Z2QC5U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/memcache\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/memcache/v1\nM:0:0:555\nR:cloud_memcache.pb.go\na:0:0:444\nZ:Q1+safzqnc3uO8wXwz9fFnyED3SXs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/memcache/v1beta2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1q7AW4Fa5f6ODmPFqXTLDHM4Ey5k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore/logging/v1\nM:0:0:555\nR:log_streams.pb.go\na:0:0:444\nZ:Q17td7Z9f7lk64TsLdhew4QO+QMME=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore/v1\nM:0:0:555\nR:metastore.pb.go\na:0:0:444\nZ:Q1ObFzhXXfC03CVI3hDon4LxS288Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore/v1alpha\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1dTU7Uewy62Srru1Ou+2uIFT/NZY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/metastore/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1jviniprbiHEBwmPfUdgqk9LwjbU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ml\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/ml/v1\nM:0:0:555\nR:job_service.pb.go\na:0:0:444\nZ:Q1z/KEoVFh7KQnLKfBJcvNY0dWywU=\nR:model_service.pb.go\na:0:0:444\nZ:Q1fQvbQIhVps4T3eb9EWhnUKXwyz8=\nR:operation_metadata.pb.go\na:0:0:444\nZ:Q1uQ3TcGSs1v5aK5tP/K1gObGOjlk=\nR:prediction_service.pb.go\na:0:0:444\nZ:Q1imrR6ir4ebvZUGgnhYdvt1ju2es=\nR:project_service.pb.go\na:0:0:444\nZ:Q1ZfEdp31aQ2IGQHMT0uQRISfyvV4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkanalyzer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkanalyzer/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkanalyzer/logging/v1\nM:0:0:555\nR:analyzer_log.pb.go\na:0:0:444\nZ:Q16DHk5E9vlgNKBOehIipYJOMR+fk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkconnectivity\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkconnectivity/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1Zo5vf02N3a0Hfl5BkOfujOH3P7A=\nR:hub.pb.go\na:0:0:444\nZ:Q1DevXd/yPcw81zzA46faQ6Rof5G0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkconnectivity/v1alpha1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1o9wRN9zoqpVrhO6GVc+3mdK5pC4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkmanagement\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkmanagement/v1\nM:0:0:555\nR:connectivity_test.pb.go\na:0:0:444\nZ:Q1++VA3leLK37XL3zZP1Mr4N2wdKg=\nR:reachability.pb.go\na:0:0:444\nZ:Q1E6E94iUw3k8PLMpKcpUX14GoLYQ=\nR:trace.pb.go\na:0:0:444\nZ:Q1sFSAap2ZcI/lvT7pQuOxbyFn5fQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkmanagement/v1beta1\nM:0:0:555\nR:connectivity_test.pb.go\na:0:0:444\nZ:Q1yPoKHmcGlvkScmT+bxiu4IEwZxY=\nR:reachability.pb.go\na:0:0:444\nZ:Q1vnwAdKXyNdUHH5RdJhfahJs362Y=\nR:trace.pb.go\na:0:0:444\nZ:Q1g3hACgC0n619wLOiQd8Nb4M8M9A=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networksecurity\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networksecurity/v1\nM:0:0:555\nR:authorization_policy.pb.go\na:0:0:444\nZ:Q1cVSptMEbAcKERUPLKyXl9vgq6y0=\nR:client_tls_policy.pb.go\na:0:0:444\nZ:Q1mDMhM3iiZyIaMSsBgll+YWVYHFg=\nR:common.pb.go\na:0:0:444\nZ:Q1mMuid8a/29qpOhYQiDNP+2QuUVM=\nR:network_security.pb.go\na:0:0:444\nZ:Q1QfkycFZ9YBFLOxcAOP5oz2NCRxU=\nR:server_tls_policy.pb.go\na:0:0:444\nZ:Q1aUfTb9ZRpGqK5mot8LFtVdzmSL0=\nR:tls.pb.go\na:0:0:444\nZ:Q1pDIxJIrwSG8TNp3UjT5+5j7gikE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networksecurity/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1ZS2Tly7QiKhIA//PyqGiSr5vGdI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkservices\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkservices/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1Ove8kQqXT0Y5DssFtnLfHT2u14s=\nR:endpoint_policy.pb.go\na:0:0:444\nZ:Q14ZPbIxtum4esWqu4FpYI2q0hlOU=\nR:gateway.pb.go\na:0:0:444\nZ:Q1HcB+c5J8NSz83muMNlCFxp0T10k=\nR:grpc_route.pb.go\na:0:0:444\nZ:Q1ggZrmSeJMn6d+af8BuViwge7PVE=\nR:http_route.pb.go\na:0:0:444\nZ:Q19ik0hHR7FVNXoDot9CgcBGfybfM=\nR:mesh.pb.go\na:0:0:444\nZ:Q1a215fowcxc+RaPNYo5ntqk/lHCs=\nR:network_services.pb.go\na:0:0:444\nZ:Q1rsfaIoK36SAIG/pHZn2xa4WUFIk=\nR:service_binding.pb.go\na:0:0:444\nZ:Q1s9MlH4wXP2VMRpEKGlnNEDA/Eqo=\nR:tcp_route.pb.go\na:0:0:444\nZ:Q1AggoCwUiMeXeMOdzW2H5c0ony64=\nR:tls_route.pb.go\na:0:0:444\nZ:Q1TOqaG647segk2icPrV9wYVB3oFc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/networkservices/v1beta1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q104svmu3Zp53jpPE4pJzTcjaSgYU=\nR:endpoint_policy.pb.go\na:0:0:444\nZ:Q1ConcFOmZK5Pj04HfOwoTFF2Ck7Y=\nR:network_services.pb.go\na:0:0:444\nZ:Q1Bme6JgmvGTCprE+paus/Z0y+DQk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/notebooks\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/notebooks/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/notebooks/logging/v1\nM:0:0:555\nR:runtime_log.pb.go\na:0:0:444\nZ:Q1f9ed/O1OXv23l6eVVDYzo+uu9/E=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/notebooks/v1\nM:0:0:555\nR:environment.pb.go\na:0:0:444\nZ:Q1oq+9ilsm+9c0PU7hlGoDwtZB6xw=\nR:event.pb.go\na:0:0:444\nZ:Q1Z3qsXqRmNrwCxFl0NsANa0rEsjU=\nR:execution.pb.go\na:0:0:444\nZ:Q16rjxcecLEnQtIxYatcMmwISZLYQ=\nR:instance.pb.go\na:0:0:444\nZ:Q184F6nvc8HS95bOmMx6pf9+OZgss=\nR:instance_config.pb.go\na:0:0:444\nZ:Q12fDbDJ1Rn+0ieb3jhIeYx3/Q/+s=\nR:managed_service.pb.go\na:0:0:444\nZ:Q1gAmsshXjSIhrxPido/i9awaUpEU=\nR:runtime.pb.go\na:0:0:444\nZ:Q1AdpQ5n0XDpZC2SRAbMkUGZRSw1w=\nR:schedule.pb.go\na:0:0:444\nZ:Q10nj7zCsiDMM6SUOLau2ky+tXIC0=\nR:service.pb.go\na:0:0:444\nZ:Q1LVZj6f/W/YPzKmDPCYUcutrcXkc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/notebooks/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1y5yeDW7yHROSCtbEyWamQakV9HU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/optimization\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/optimization/v1\nM:0:0:555\nR:async_model.pb.go\na:0:0:444\nZ:Q1xSXFwd4tUpoxCi6Cd4FPMmdOyTY=\nR:fleet_routing.pb.go\na:0:0:444\nZ:Q1ih+BWQcJZkORk+d0G0gpQAVy/Cs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orchestration\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orchestration/airflow\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orchestration/airflow/service\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orchestration/airflow/service/v1\nM:0:0:555\nR:environments.pb.go\na:0:0:444\nZ:Q1UHCQLAhLF8gE1NwdudqRn6gygNc=\nR:image_versions.pb.go\na:0:0:444\nZ:Q1gKDD1SyiYcVLhZnBqWNTIX042vo=\nR:operations.pb.go\na:0:0:444\nZ:Q1sQLpqV/+Cy9PPvl+09fEypo14V0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orchestration/airflow/service/v1beta1\nM:0:0:555\nR:environments.pb.go\na:0:0:444\nZ:Q19xI7xSXi0hORlBTDmakHx2fezgA=\nR:image_versions.pb.go\na:0:0:444\nZ:Q1Tt8OOv7Fph4V/rrkNoD+6BvlKW0=\nR:operations.pb.go\na:0:0:444\nZ:Q1Q7dY+fZQf6Ehs0W+P7mhhO1yAlE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orgpolicy\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orgpolicy/v1\nM:0:0:555\nR:orgpolicy.pb.go\na:0:0:444\nZ:Q11cbpGY3dvdBqq+IJykGuT7h03Gg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/orgpolicy/v2\nM:0:0:555\nR:constraint.pb.go\na:0:0:444\nZ:Q1ty6RZfKg+8iIqi/+w/NqcTeJ2hA=\nR:orgpolicy.pb.go\na:0:0:444\nZ:Q10XhyzUf+VNXBiJ9z8OZGi+qNi7w=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/agentendpoint\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/agentendpoint/v1\nM:0:0:555\nR:agentendpoint.pb.go\na:0:0:444\nZ:Q1j4l6zVOLMzjJf5+RZwBPn/tV4Gk=\nR:config_common.pb.go\na:0:0:444\nZ:Q1v/wsms7tv88wCLy1ue68nKtm74A=\nR:inventory.pb.go\na:0:0:444\nZ:Q13eBK5sjvymvdRiW2CN0n8sPtpsM=\nR:os_policy.pb.go\na:0:0:444\nZ:Q1Ez8zLbT3D8XHAg7lVhbBFzv9reE=\nR:patch_jobs.pb.go\na:0:0:444\nZ:Q1lDmDAr4+dqixQNH5eLPfWQLPX3k=\nR:tasks.pb.go\na:0:0:444\nZ:Q1F8T02cDIartZ49uodV506760Mmo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/agentendpoint/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q15ntVmgZ28QnNVQRPiWNjC2cPaO0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/v1\nM:0:0:555\nR:inventory.pb.go\na:0:0:444\nZ:Q1rGY69TTarPt6sr+Tx78tsCtnuu8=\nR:os_policy.pb.go\na:0:0:444\nZ:Q1dHbKzVzZyVJXJP+opee9tptus+w=\nR:os_policy_assignment_reports.pb.go\na:0:0:444\nZ:Q1pj8XMR7rBHZSO0Kr3iZV7k8f/pk=\nR:os_policy_assignments.pb.go\na:0:0:444\nZ:Q1Wcg47WXy/s52sKNKWxrvhw9SHmU=\nR:osconfig_common.pb.go\na:0:0:444\nZ:Q1Ezx1LbSgkFGd1FT0QI/wOf4LCVk=\nR:osconfig_service.pb.go\na:0:0:444\nZ:Q18cHNBajswpBJrkgQ0uddl1oWunk=\nR:osconfig_zonal_service.pb.go\na:0:0:444\nZ:Q1vvoFJ1bj+etKbZGp6PSzidoS370=\nR:patch_deployments.pb.go\na:0:0:444\nZ:Q1F+DxnpPeFrpXf5MZCqb5v8KyvnA=\nR:patch_jobs.pb.go\na:0:0:444\nZ:Q1meBZRxlJRjtLcSGvPUmbWDaXjoc=\nR:vulnerability.pb.go\na:0:0:444\nZ:Q1esXNUHe0R8cFRQCe5n0CUXWBXLk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/v1alpha\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1+UJ6aCesCevQhelsQ4lF55U6wDI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/osconfig/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1VXTD8PvOWuLlcC+x1WJrEXsCL4Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/oslogin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/oslogin/common\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1i+ic7XlD8z3uldjll58Itc6z2mQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/oslogin/v1\nM:0:0:555\nR:oslogin.pb.go\na:0:0:444\nZ:Q1JGGidYtDVWQj2pAH89BiZ8E8wRg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/oslogin/v1alpha\nM:0:0:555\nR:oslogin.pb.go\na:0:0:444\nZ:Q1xInrZn3CkGisyHqbGZJ+UoH+Nhk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/oslogin/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1fn046ySGeliN7vH6XnQ5HnoKTl0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/paymentgateway\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/paymentgateway/issuerswitch\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/paymentgateway/issuerswitch/v1\nM:0:0:555\nR:common_fields.pb.go\na:0:0:444\nZ:Q1g/yZYYWfWzVFU/bxOCav822M4KY=\nR:resolutions.pb.go\na:0:0:444\nZ:Q1l519Z6suGrtZlhf66paK+VEf1Fk=\nR:rules.pb.go\na:0:0:444\nZ:Q1TVottiiDh4oxBJGrnJgl/1FSRZM=\nR:transactions.pb.go\na:0:0:444\nZ:Q1VULBaxS9L0TMfCd3YW24ALRw4q4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/phishingprotection\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/phishingprotection/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1O/YuG1kLnDdqlcuPFnVao+bSsjc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/policytroubleshooter\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/policytroubleshooter/v1\nM:0:0:555\nR:checker.pb.go\na:0:0:444\nZ:Q1IOmykejD+VUFbKfjGjQ/M98QWC0=\nR:explanations.pb.go\na:0:0:444\nZ:Q1x14GGN+z8pDxOmaYIPxD0x0tt6c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/privatecatalog\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/privatecatalog/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q16c5BwfdQfh1f0qfCLNGQrrgH174=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/pubsublite\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/pubsublite/v1\nM:0:0:555\nR:admin.pb.go\na:0:0:444\nZ:Q1RmoHAz9jOb3hwKDXE7ZKzvuds1Y=\nR:common.pb.go\na:0:0:444\nZ:Q1u/U7+W5WLYg6m4qTrfApW/TTvuw=\nR:cursor.pb.go\na:0:0:444\nZ:Q1HNVw2q0GciV8sbsV5kMv6jCAQBQ=\nR:publisher.pb.go\na:0:0:444\nZ:Q1V4I57ADodauyQVhdHuoseJHCVLQ=\nR:subscriber.pb.go\na:0:0:444\nZ:Q1a0/w5HBu0HbJ9zbAe9A6Ap1Akg8=\nR:topic_stats.pb.go\na:0:0:444\nZ:Q1WCjkMaJIdomsibaaS+qQF4S0YKY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recaptchaenterprise\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recaptchaenterprise/v1\nM:0:0:555\nR:recaptchaenterprise.pb.go\na:0:0:444\nZ:Q1rAJU0/o6doY/7vbQsWDipk9elBE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recaptchaenterprise/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1V+56r8xN1HjQTaAIWL/7umNOSQo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommendationengine\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommendationengine/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1rqmA9bgBizeCy9TFJDkXslujzsY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender/logging/v1\nM:0:0:555\nR:action_log.pb.go\na:0:0:444\nZ:Q1C0xo2z5sEJPVG4OiuK+ZCMKfwwA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender/logging/v1beta1\nM:0:0:555\nR:action_log.pb.go\na:0:0:444\nZ:Q1IxX9tE/zUqIMf1MPpoanL1gvKy0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender/v1\nM:0:0:555\nR:insight.pb.go\na:0:0:444\nZ:Q1zKSU089UOUC9wPi97xttZCw1mIc=\nR:insight_type_config.pb.go\na:0:0:444\nZ:Q1/FFaYapyqzd+TQKI8WikabvSHAc=\nR:recommendation.pb.go\na:0:0:444\nZ:Q1o6Qc1bJ1D9oRT2raCwMVVltL3Ug=\nR:recommender_config.pb.go\na:0:0:444\nZ:Q1j4yjIfBtFzTxuLDsgymwmNlTTDw=\nR:recommender_service.pb.go\na:0:0:444\nZ:Q1gJ/hVvqGOWANYCPGG8pwOm/UZ+s=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/recommender/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1+6lFuz9NWt1NtUCRyReTIaxiR1c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/redis\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/redis/v1\nM:0:0:555\nR:cloud_redis.pb.go\na:0:0:444\nZ:Q1HzQVJdx77yFkmArNmLRJa84xWok=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/redis/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1WzTO3ywb99rRBgZDgv4Mm7h5Tn8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/resourcemanager\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/resourcemanager/v2\nM:0:0:555\nR:folders.pb.go\na:0:0:444\nZ:Q1vCWgjS+6InyGIwI962PcqtDW+TI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/resourcemanager/v3\nM:0:0:555\nR:folders.pb.go\na:0:0:444\nZ:Q1gKLNIGfBYyKf55PSu205HIoKWRQ=\nR:organizations.pb.go\na:0:0:444\nZ:Q12cGZqqSDWu3+DCpBLg4Xd9lNfsE=\nR:projects.pb.go\na:0:0:444\nZ:Q1F/Ee6FcswahVmF6p+3UBIf10+xQ=\nR:tag_bindings.pb.go\na:0:0:444\nZ:Q1fmNiFRO8VLnGk7u1OiLiDsC3A6o=\nR:tag_keys.pb.go\na:0:0:444\nZ:Q1FTVjGzUmJorFiE3+HIZnykcIGy8=\nR:tag_values.pb.go\na:0:0:444\nZ:Q1NsGVo+cVH1pwbp3Dg+QEkiUnzNA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/resourcesettings\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/resourcesettings/v1\nM:0:0:555\nR:resource_settings.pb.go\na:0:0:444\nZ:Q15alpDYCPkvadO4bUFEoYt2J/cu4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/retail\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/retail/logging\nM:0:0:555\nR:error_log.pb.go\na:0:0:444\nZ:Q1vRpjCiPwF1FWDcocKmGs2qelO2c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/retail/v2\nM:0:0:555\nR:catalog.pb.go\na:0:0:444\nZ:Q1we1s9OghbUIxM74FpWWsb6y6UK8=\nR:catalog_service.pb.go\na:0:0:444\nZ:Q1CXwY0Ivj8c3fbwMKwL2IVh3L5oQ=\nR:common.pb.go\na:0:0:444\nZ:Q1Dx6BpwwDFKbcl9dAktLXffTcowc=\nR:completion_service.pb.go\na:0:0:444\nZ:Q1I+k3egPoc362eNPG1xjjhKltjns=\nR:control.pb.go\na:0:0:444\nZ:Q1BGnZU57afTMNULNX5MUSQSCSAMU=\nR:control_service.pb.go\na:0:0:444\nZ:Q1rmACdq+be29rcgV2So7CuplH+go=\nR:import_config.pb.go\na:0:0:444\nZ:Q1cKJyah1dDGdKUUsDByGZ/idgdCI=\nR:prediction_service.pb.go\na:0:0:444\nZ:Q1mvr/2o/z8TfAB49nUY76mscR440=\nR:product.pb.go\na:0:0:444\nZ:Q1RtIlTGJoxHvd9AwM4z91/GuF1Ls=\nR:product_service.pb.go\na:0:0:444\nZ:Q1IWYTM0rndX+iOmNf/tda1ZAZ+rw=\nR:promotion.pb.go\na:0:0:444\nZ:Q1yVYZldyGZ+2KhNsODnwSJCHD2Vs=\nR:purge_config.pb.go\na:0:0:444\nZ:Q1aDzzyBTqLnKnKO3dZ8/JgPLtWxY=\nR:search_service.pb.go\na:0:0:444\nZ:Q1QOSR0E/hiU12Og1Gh4kyIQ9Wrrk=\nR:serving_config.pb.go\na:0:0:444\nZ:Q1x2TUGvbjUZwqSirrVyJcj1FTFjU=\nR:serving_config_service.pb.go\na:0:0:444\nZ:Q1ma6mgS7QMVg9ZXaYnlPSyRcqFV0=\nR:user_event.pb.go\na:0:0:444\nZ:Q1w8H+oxeSS4HDvoMVBwqVfUAKkOw=\nR:user_event_service.pb.go\na:0:0:444\nZ:Q12T/xFyZpd9TsJvFxIaDHZLLZ7pI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/retail/v2alpha\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1DIvGoHzi0W0DPTu/juthYw3HSlQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/retail/v2beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1hEqTvUjd/21KLqCO5VydX50hj+E=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/run\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/run/v2\nM:0:0:555\nR:condition.pb.go\na:0:0:444\nZ:Q1eo+v6kclPTPAK/4GpvDGEMcaLds=\nR:k8s.min.pb.go\na:0:0:444\nZ:Q1QXk2GRffJRROTMucOq/mnRBr7Zw=\nR:revision.pb.go\na:0:0:444\nZ:Q1xgHrFVy1QvO02DzEFXlLbiqbfEY=\nR:revision_template.pb.go\na:0:0:444\nZ:Q1cIFnFOGks0iD2igD3q0ZymGC8ec=\nR:service.pb.go\na:0:0:444\nZ:Q17305s75XSDSzNp9qx+J4XUMawx4=\nR:traffic_target.pb.go\na:0:0:444\nZ:Q1PCniT+aEfomJmhnUsXlBOtPkpo0=\nR:vendor_settings.pb.go\na:0:0:444\nZ:Q15Lu2X7tdFjNDUChB9/pHujwoC3Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/runtimeconfig\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/runtimeconfig/v1beta1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1SWEq+BLQFwQdM7lDgb02tmrirzE=\nR:runtimeconfig.pb.go\na:0:0:444\nZ:Q1vI9ArhF0SkMCus9r12UXHGfA3G4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/saasaccelerator\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/saasaccelerator/management\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/saasaccelerator/management/logs\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/saasaccelerator/management/logs/v1\nM:0:0:555\nR:notification_service_payload.pb.go\na:0:0:444\nZ:Q1JBihJZmKJAollLJ9M59OqLNfogs=\nR:saas_instance_payload.pb.go\na:0:0:444\nZ:Q1TYPdFqluy1bxJ3DkxAYl2G7aGsw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/scheduler\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/scheduler/v1\nM:0:0:555\nR:cloudscheduler.pb.go\na:0:0:444\nZ:Q1653Kfu+4KzjfsDQTd0X8lrglOaQ=\nR:job.pb.go\na:0:0:444\nZ:Q1Q6vZFb7LerbkRgMV1jXjhnZE2uU=\nR:target.pb.go\na:0:0:444\nZ:Q1xKiQsjx2ZVOcCZaePvL+t3utQMw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/scheduler/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1mBAUCd8jbQpfSsUUIF0Pn8TikBQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secretmanager\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secretmanager/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secretmanager/logging/v1\nM:0:0:555\nR:secret_event.pb.go\na:0:0:444\nZ:Q1kcc7VCx8r0tPWYIDz+469H7kjL4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secretmanager/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1O6TB3VWZYtVuSEYS2S99QTvgtNU=\nR:service.pb.go\na:0:0:444\nZ:Q1qNRQWYEKjCuUDzSu1424wPihRN8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secrets\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/secrets/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1+WYnigSMB5VvGfYwkfNL0kjqa80=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security/privateca\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security/privateca/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q17mRQKHYjAy4gq0+ca1mvYX6RmWE=\nR:service.pb.go\na:0:0:444\nZ:Q1LURsz0EMEJMIpH3y9o69+v5LaHU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security/privateca/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1hKEnqVk4lMJuvUNZvWywv9Q1L2E=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security/publicca\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/security/publicca/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1oATtubUyos+Xlw69vGLZntCWQy4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter/settings\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter/settings/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1zVBBCWBtoAOk06qYsOba6mrmSRE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter/v1\nM:0:0:555\nR:access.pb.go\na:0:0:444\nZ:Q1/EZsIPw7V4nHJPvYm4t8AP2a95E=\nR:asset.pb.go\na:0:0:444\nZ:Q18GFiZnBvp9Q/zOSqq+U+20/o1I8=\nR:bigquery_export.pb.go\na:0:0:444\nZ:Q1IVCCdiULgEboaVeE5J83AK16/lw=\nR:compliance.pb.go\na:0:0:444\nZ:Q1XmDJUCc/bqvTU4ZFNa3axdZyfp8=\nR:connection.pb.go\na:0:0:444\nZ:Q1896F2ObgMJJI+srHL+Mjbwdz+oA=\nR:contact_details.pb.go\na:0:0:444\nZ:Q1hFg76oDfYQt/sSDeOxTpNik8S00=\nR:container.pb.go\na:0:0:444\nZ:Q18fA3AJkGYEqsEtsSSxurf+2PLbI=\nR:database.pb.go\na:0:0:444\nZ:Q1bKXzTBdibL/gIYBm9KQgEgBlPuY=\nR:exfiltration.pb.go\na:0:0:444\nZ:Q1NG5hQQMLdue5zJcIjm8eNxsK4eI=\nR:external_system.pb.go\na:0:0:444\nZ:Q1qDDVZYuCtgUq91z9IIeycHNPqX8=\nR:file.pb.go\na:0:0:444\nZ:Q13UdrlC+Xi7eZpIvIVLOrQKMBI6I=\nR:finding.pb.go\na:0:0:444\nZ:Q1m3m0YEyBDhjcXI71IYK61IN1CD4=\nR:folder.pb.go\na:0:0:444\nZ:Q16ssnEMxbjaSeXi0ZFDZKTyClxqE=\nR:iam_binding.pb.go\na:0:0:444\nZ:Q14dI9CneS3zEmRJY81zBjMRv2DL8=\nR:indicator.pb.go\na:0:0:444\nZ:Q1Sz+d9zCAD5LISs0i1IIvKGWA5Nk=\nR:kubernetes.pb.go\na:0:0:444\nZ:Q1RoQVPSiWGtCCFMLyhznhEgUmfiU=\nR:label.pb.go\na:0:0:444\nZ:Q1qt6VO49OWWU/F2fWzVaD/ofx/ZA=\nR:mitre_attack.pb.go\na:0:0:444\nZ:Q1qU+eziD6Z3OE9xrOZ6hKbC76J8c=\nR:mute_config.pb.go\na:0:0:444\nZ:Q1ulZLjxy41uIMSUvNai8Sz+hSiR8=\nR:notification_config.pb.go\na:0:0:444\nZ:Q194n7V92wXMbrATLjE/dXLXfDiFc=\nR:notification_message.pb.go\na:0:0:444\nZ:Q1A0GJ2r8ZFpzCkpLftebM5QyksX0=\nR:organization_settings.pb.go\na:0:0:444\nZ:Q1Qwh5F+XKnsFQwxgbW1vhjkdLcfs=\nR:process.pb.go\na:0:0:444\nZ:Q1YksTyvuLsPxbJq0Ysow7a9GZZDE=\nR:resource.pb.go\na:0:0:444\nZ:Q1yiejCh7k9PuZi/WKBYGaelpvVS0=\nR:run_asset_discovery_response.pb.go\na:0:0:444\nZ:Q1v3xNLgicLOqVX5T+mbDKc7Ltxtg=\nR:security_marks.pb.go\na:0:0:444\nZ:Q1LPEapaqDVQnkuyrthHxlsHKWr2M=\nR:securitycenter_service.pb.go\na:0:0:444\nZ:Q1vYe4qOUNGTgZ06/LWoyvSfSPCiE=\nR:source.pb.go\na:0:0:444\nZ:Q1wSMNJL6aMgd2TU8P/o+HK941tzI=\nR:vulnerability.pb.go\na:0:0:444\nZ:Q1AQ3KdNqPjr5504Ko2qWKFqVNfmY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q128m5GuReYSh6FqF+7ArcXC/9Aog=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/securitycenter/v1p1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1oUtk5mFFmRwqEHSUFFFN8aW0IjM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sensitiveaction\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sensitiveaction/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sensitiveaction/logging/v1\nM:0:0:555\nR:sensitive_action_payload.pb.go\na:0:0:444\nZ:Q101oo4ZNPEv+3hL8v2No8nrQUnCQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/servicedirectory\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/servicedirectory/v1\nM:0:0:555\nR:endpoint.pb.go\na:0:0:444\nZ:Q13/Kr9NAqtCJGHuL5DVJYgEIqnis=\nR:lookup_service.pb.go\na:0:0:444\nZ:Q1OwSCR3FxlKVYbUi9JDTR20RSdYQ=\nR:namespace.pb.go\na:0:0:444\nZ:Q12TOtbUFykrRTAysDRsJInrnUSEM=\nR:registration_service.pb.go\na:0:0:444\nZ:Q1HDp7wvDNgmNrf1995sQn2vVo5Zk=\nR:service.pb.go\na:0:0:444\nZ:Q1YCaRBQsZxjU19ZkeCyzjpeQP3Po=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/servicedirectory/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1nNcju0Lx6KkIdY8OzKfbZZ3KV+M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/shell\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/shell/v1\nM:0:0:555\nR:cloudshell.pb.go\na:0:0:444\nZ:Q15TLgv2YJ7KfNjH+5arsQJHZNEPY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/speech\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/speech/v1\nM:0:0:555\nR:cloud_speech.pb.go\na:0:0:444\nZ:Q1gSmXets9OAEAe/RO6Yxi+j6nv2Q=\nR:cloud_speech_adaptation.pb.go\na:0:0:444\nZ:Q1nkJiLoW+qDfDmdJAWkFFw2y7pE8=\nR:resource.pb.go\na:0:0:444\nZ:Q1wES/U6dn/ghFyHCgCJkiVl2Toa4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/speech/v1p1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1XNdLeNlegg80+chhpqEM6pSF5Zk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/speech/v2\nM:0:0:555\nR:cloud_speech.pb.go\na:0:0:444\nZ:Q1x1d0am7GFL68nF6OzeWqPXqWx9I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sql\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sql/v1\nM:0:0:555\nR:cloud_sql_backup_runs.pb.go\na:0:0:444\nZ:Q1UBdsn/41mdamZJRUl9yHdiHLoI8=\nR:cloud_sql_connect.pb.go\na:0:0:444\nZ:Q1lhrUiIkqr3XiIt5LVpvLdm5oryE=\nR:cloud_sql_databases.pb.go\na:0:0:444\nZ:Q1jFDVoCnpMhFqCDxeaK7tc9A7XqY=\nR:cloud_sql_flags.pb.go\na:0:0:444\nZ:Q1z+YwmpGLXC3vBS8oOLMQGvSl8r8=\nR:cloud_sql_instance_names.pb.go\na:0:0:444\nZ:Q16ICJS/agVjl70rEDssBMcPdh/ss=\nR:cloud_sql_instances.pb.go\na:0:0:444\nZ:Q1frY28rGCxa0fZ+RcwvwR1T9FBf4=\nR:cloud_sql_operations.pb.go\na:0:0:444\nZ:Q1A/TT6wEdqieq8AZSSN8CjmmyDY0=\nR:cloud_sql_resources.pb.go\na:0:0:444\nZ:Q19WGqNA6ZlN22NyVWjpa64fVijI8=\nR:cloud_sql_ssl_certs.pb.go\na:0:0:444\nZ:Q1/2dD50R9aOM7t0r/DgmqfHJhKS0=\nR:cloud_sql_tiers.pb.go\na:0:0:444\nZ:Q14H7dUTRo7+QTgsTqy8bRpkr7LH4=\nR:cloud_sql_users.pb.go\na:0:0:444\nZ:Q1DYnLhioLCUzwzTlnltIDKiHHKb8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/sql/v1beta4\nM:0:0:555\nR:cloud_sql.pb.go\na:0:0:444\nZ:Q1pTwDzDlCJz7qSKf0NvV+8HTHYxw=\nR:cloud_sql_connect.pb.go\na:0:0:444\nZ:Q14VRN1vY7ocNYjrh6FC20lV1PBI8=\nR:cloud_sql_resources.pb.go\na:0:0:444\nZ:Q1etwm/PURCwDi/I5CWaj0HwFz0z8=\nR:cloud_sql_tiers.pb.go\na:0:0:444\nZ:Q10Da0x71IbI02WNogNoeX++AkBlk=\nR:cloud_sql_users.pb.go\na:0:0:444\nZ:Q14Ic4/6MUY1VCa6chomf6Ai24zpE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/stream\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/stream/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/stream/logging/v1\nM:0:0:555\nR:logging.pb.go\na:0:0:444\nZ:Q1tXAaHsMCUiqpK6XXGWwMKISdWGY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/support\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/support/common\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q181iAnDijl79hnCTJRHjLFDnxttM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/support/v1alpha1\nM:0:0:555\nR:cloud_support.pb.go\na:0:0:444\nZ:Q19+zLCuGJ6vPhlxsB3gbpvvzCL5M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/talent\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/talent/v4\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1mUdGipPDtLKCxGxmuPOiOmRWGro=\nR:company.pb.go\na:0:0:444\nZ:Q11Y7VbjxZ+poEaoOyxWbj+tg+yoY=\nR:company_service.pb.go\na:0:0:444\nZ:Q1gvHi2vwQuvVVnrGRCzHbajRVftY=\nR:completion_service.pb.go\na:0:0:444\nZ:Q189fpPZaRe2Enh0v11dXUfLB5tNE=\nR:event.pb.go\na:0:0:444\nZ:Q10f25/Esq2TqOVSYEipeG4NeXriE=\nR:event_service.pb.go\na:0:0:444\nZ:Q1arRrecry291y7ov9QVgYgNQa348=\nR:filters.pb.go\na:0:0:444\nZ:Q1jz3QNXYXxIltmu4xe1mqhqlIMrE=\nR:histogram.pb.go\na:0:0:444\nZ:Q1kzJcrIxkOr68Kp7jQhGYDnKZotQ=\nR:job.pb.go\na:0:0:444\nZ:Q1RclpzI4xN5yiGIhkz0a89JfXNUw=\nR:job_service.pb.go\na:0:0:444\nZ:Q1JGUVAx8K4Tt6eKA4gEh+RaqztWg=\nR:tenant.pb.go\na:0:0:444\nZ:Q1CP2wV3oitegA+7a7F16rPAYzB10=\nR:tenant_service.pb.go\na:0:0:444\nZ:Q1IkR0cjoc/p8TNnF8ClzNM7+Yb7U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/talent/v4beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1le1GCAev/zIzt+GQyCl76ICNf54=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tasks\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tasks/v2\nM:0:0:555\nR:cloudtasks.pb.go\na:0:0:444\nZ:Q1wz4NM3+CrGRE/MAs+ume7DZlG2o=\nR:queue.pb.go\na:0:0:444\nZ:Q1rVh9lfXkACfY1nezAFFgAUFQXFA=\nR:target.pb.go\na:0:0:444\nZ:Q14TGAnwDRiRCjYpnGD+lDoJuaxe4=\nR:task.pb.go\na:0:0:444\nZ:Q1/QvAlzFUB23EbGX8Y3epkOppGG0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tasks/v2beta2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1nt8aX3q0OeXtu7Nsmzn1w92OUYw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tasks/v2beta3\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1d7n1TpnPv+AuutJjZ+3yQZMNf2s=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/texttospeech\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/texttospeech/v1\nM:0:0:555\nR:cloud_tts.pb.go\na:0:0:444\nZ:Q1RKWSgzO9IA1ZdAnOI3HDJ4VyQBg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/texttospeech/v1beta1\nM:0:0:555\nR:cloud_tts.pb.go\na:0:0:444\nZ:Q1pXNtfarl+Rl9/bzAGkUUHaz4aDQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/timeseriesinsights\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/timeseriesinsights/v1\nM:0:0:555\nR:timeseries_insights.pb.go\na:0:0:444\nZ:Q19qxurh5rllhE/sgfsGRQTURV3Lk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tpu\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tpu/v1\nM:0:0:555\nR:cloud_tpu.pb.go\na:0:0:444\nZ:Q1vj4gNyI8qVG5EAvXblVXbCQBYHY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/tpu/v2alpha1\nM:0:0:555\nR:cloud_tpu.pb.go\na:0:0:444\nZ:Q1+MS42RfSCf778Z25DSkpq6JIEuw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/translate\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/translate/v3\nM:0:0:555\nR:translation_service.pb.go\na:0:0:444\nZ:Q1VqkIMu+JXepRkuRqImcsNAB5bOg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/translate/v3beta1\nM:0:0:555\nR:translation_service.pb.go\na:0:0:444\nZ:Q1NPK7F8CcQWKhoBdLX71bJRMcyN0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/livestream\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/livestream/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/livestream/logging/v1\nM:0:0:555\nR:logs.pb.go\na:0:0:444\nZ:Q1yjuwF2WrjTLqx6oaSJ4CgZRm3As=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/livestream/v1\nM:0:0:555\nR:outputs.pb.go\na:0:0:444\nZ:Q1FnzlNrmwCTmr3IZtUU1z51tSZss=\nR:resources.pb.go\na:0:0:444\nZ:Q1w/nm+Kw4KxyGqUVfwiYqjO2ven4=\nR:service.pb.go\na:0:0:444\nZ:Q1x6SpBcBTJ0nqWIwBsskbHDMDey4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/stitcher\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/stitcher/v1\nM:0:0:555\nR:ad_tag_details.pb.go\na:0:0:444\nZ:Q1elS+f+NWamRc50blDLSTNDsYtzY=\nR:cdn_keys.pb.go\na:0:0:444\nZ:Q1DsXEFUNMw0bZsjRTiTootuY/NkY=\nR:companions.pb.go\na:0:0:444\nZ:Q1Lyj7HNN079NnOLRELlR+SozQYig=\nR:events.pb.go\na:0:0:444\nZ:Q1mO++7j/mzOgFz5GLQSECxiMIT/Q=\nR:sessions.pb.go\na:0:0:444\nZ:Q1wiIYHKjTuqNJp7Sa4EqX1/LiWK4=\nR:slates.pb.go\na:0:0:444\nZ:Q1uzaqPpFX7ak1bIJamrtjLViqFpk=\nR:stitch_details.pb.go\na:0:0:444\nZ:Q1WT996MUz7sXf7I/sg8Pw/w3HLqM=\nR:video_stitcher_service.pb.go\na:0:0:444\nZ:Q1yQxyoq3XbDYfjM386s2/0zwEaLQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/transcoder\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/video/transcoder/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1Elh8XdumsnK3c7YHQtsDvzhR/FM=\nR:services.pb.go\na:0:0:444\nZ:Q1qsbPvo7RxdOZ1aYr68vR5NXPWzg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence/v1\nM:0:0:555\nR:video_intelligence.pb.go\na:0:0:444\nZ:Q12+6n9ADUYkAXYTZAS1ByDd9RHDM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence/v1beta2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1DMeBCWaKkvI94jExS6V7jbyEmPk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence/v1p1beta1\nM:0:0:555\nR:video_intelligence.pb.go\na:0:0:444\nZ:Q1pghI6H1r0k0C+9Y/K9OdQA0dGf0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence/v1p2beta1\nM:0:0:555\nR:video_intelligence.pb.go\na:0:0:444\nZ:Q1iN6ulvKPl6muS45KXg/5bcNo/7U=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/videointelligence/v1p3beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1m+LfIaV/cFTLkq1PBbyxOBHu5LU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision/v1\nM:0:0:555\nR:geometry.pb.go\na:0:0:444\nZ:Q1/gqqlqhJq8C3VzGOXSo1LUDL3sM=\nR:image_annotator.pb.go\na:0:0:444\nZ:Q1dFGDayf1UrHFAnrDtIji0fIn4h8=\nR:product_search.pb.go\na:0:0:444\nZ:Q1QKXR5B6CnZPkBumrjhMzhcemBsQ=\nR:product_search_service.pb.go\na:0:0:444\nZ:Q12TzUP+KR/7Hkkcjo9enhgtshxWc=\nR:text_annotation.pb.go\na:0:0:444\nZ:Q1+KJYKJvG1joPKQfMIZKnCIa3fnE=\nR:web_detection.pb.go\na:0:0:444\nZ:Q1RDGq2i7mv7OZBWI8Vc+/A2RlBUg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision/v1p1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1Q4wHxA3g8F73ZF9taga86KM/WuQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision/v1p2beta1\nM:0:0:555\nR:geometry.pb.go\na:0:0:444\nZ:Q1a9iSPeiOSDq6oxheYr0sS8YCM7o=\nR:image_annotator.pb.go\na:0:0:444\nZ:Q1GEeEXl1j0GPUpPWIcg8baoxGf04=\nR:text_annotation.pb.go\na:0:0:444\nZ:Q1PqQIBz2aPA2lOm59E5pM92pP/yQ=\nR:web_detection.pb.go\na:0:0:444\nZ:Q1Q6K1YKCfG8xUmKBLLlzwV+IhKcY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision/v1p3beta1\nM:0:0:555\nR:geometry.pb.go\na:0:0:444\nZ:Q1Okf+Jpge5kCc6VHu6jIMwjzjmNA=\nR:image_annotator.pb.go\na:0:0:444\nZ:Q1gJf6Me8SUmFM58jWtzP8MxotDRE=\nR:product_search.pb.go\na:0:0:444\nZ:Q16GhbTX/sZEGmFYDUgHfM6lNPalk=\nR:product_search_service.pb.go\na:0:0:444\nZ:Q18co2fk/J2LUZz4SjZ2+wYzx6zB0=\nR:text_annotation.pb.go\na:0:0:444\nZ:Q1xnvXu1Gyq0vILt6wo9TWXAjVcnI=\nR:web_detection.pb.go\na:0:0:444\nZ:Q1lqmWfkKfL9H8G1X7XIRfdNcu770=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vision/v1p4beta1\nM:0:0:555\nR:face.pb.go\na:0:0:444\nZ:Q1/2jehc0u1JXKRTnj3x6PqSaJ2hI=\nR:geometry.pb.go\na:0:0:444\nZ:Q1CYkZPr2wivQIJyGLg1vAaR8FMqY=\nR:image_annotator.pb.go\na:0:0:444\nZ:Q1/tsunDhCl9pDJyXSE7M+MGAFIXs=\nR:product_search.pb.go\na:0:0:444\nZ:Q1vgVyovxnQGY0R6wTcyVs1HDUOpk=\nR:product_search_service.pb.go\na:0:0:444\nZ:Q18fYjAvOU2RBQYLTgsdvleOPBVj4=\nR:text_annotation.pb.go\na:0:0:444\nZ:Q1dFefST0wLwVrJAUlhY33WXHyZPM=\nR:web_detection.pb.go\na:0:0:444\nZ:Q1ONCE/lzr5SRKwmKhvmYxslWi/Fs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/visualinspection\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/visualinspection/v1beta1\nM:0:0:555\nR:annotation.pb.go\na:0:0:444\nZ:Q1QNp/eYRaB/yBr8Buj6JFMocIEHo=\nR:annotation_set.pb.go\na:0:0:444\nZ:Q1S5GZMZFolPbnAKclw5nbhzN+OPo=\nR:annotation_spec.pb.go\na:0:0:444\nZ:Q1+D/TivhTJqgEMh3frAtZOZ7DeUE=\nR:common.pb.go\na:0:0:444\nZ:Q1Ci6DHD8O1XcU7ot3jSnQ2p60rPE=\nR:dataset.pb.go\na:0:0:444\nZ:Q1oSfWf7Mdb4mcd549njg/NFefpM0=\nR:geometry.pb.go\na:0:0:444\nZ:Q1LqOZ+8Xi2KIVUhFVjSEB46AAZdE=\nR:image.pb.go\na:0:0:444\nZ:Q1tUuOg/j1ywhVfMUUWKsbOk6sqQI=\nR:io.pb.go\na:0:0:444\nZ:Q1BZGapqSuowl2qcvDFJmmYFz7tAI=\nR:labeling.pb.go\na:0:0:444\nZ:Q1rFsbpFc0XXda5S0a3M4DHoN98UU=\nR:metrics.pb.go\na:0:0:444\nZ:Q13oUexptwNZKA1/aTD8FYa5NCJAM=\nR:model.pb.go\na:0:0:444\nZ:Q1i1YaNyrqCuc0kDBr0EnXYoHm+QA=\nR:model_evaluation.pb.go\na:0:0:444\nZ:Q1kCqhK1yZmSo6t0ls48+oC295P6E=\nR:module.pb.go\na:0:0:444\nZ:Q1pUFz4q3cNSzv/O9q0GJb+mXEjaI=\nR:service.pb.go\na:0:0:444\nZ:Q1B1Xg2dxnAmW4Y/vuayssTD9h6c4=\nR:solution_artifact.pb.go\na:0:0:444\nZ:Q1B6IS4/VSXPDb/Q3UW1qDo6weXYc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vmmigration\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vmmigration/v1\nM:0:0:555\nR:vmmigration.pb.go\na:0:0:444\nZ:Q1nk05Wi7DWieH3uLVF2iDMYjNZGI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vpcaccess\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/vpcaccess/v1\nM:0:0:555\nR:vpc_access.pb.go\na:0:0:444\nZ:Q1KYTFEa8+WF3sSdxyR2Aqo/dwrUQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/webrisk\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/webrisk/v1\nM:0:0:555\nR:webrisk.pb.go\na:0:0:444\nZ:Q17kW/kj9B4uHNPmtgNJo+hH14EqI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/webrisk/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q10dIfSHOAkdQ+/0GOcJ6D0PTc1Yo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/websecurityscanner\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/websecurityscanner/v1\nM:0:0:555\nR:crawled_url.pb.go\na:0:0:444\nZ:Q18ZaRHW3m6iGGp7oj0eWQbMOvUvA=\nR:finding.pb.go\na:0:0:444\nZ:Q1ZSkooppEh/QJKzEqzKvoPAkPSc8=\nR:finding_addon.pb.go\na:0:0:444\nZ:Q1mf7DvvfO2ZsPS38uLjXKINpXDGI=\nR:finding_type_stats.pb.go\na:0:0:444\nZ:Q1Hcdqrxcsnj6/HCf17EWcvbGEfxE=\nR:scan_config.pb.go\na:0:0:444\nZ:Q1jT1BBcZKydjYKFVxGrYjBriAp7U=\nR:scan_config_error.pb.go\na:0:0:444\nZ:Q1/20qNNCCXjofGAyBrNuCrK4By4g=\nR:scan_run.pb.go\na:0:0:444\nZ:Q1lS5qob/f4ilmxH8kaixeBhWamdY=\nR:scan_run_error_trace.pb.go\na:0:0:444\nZ:Q19IHeZKGezgpozl5ZgU9AkCc7rvw=\nR:scan_run_log.pb.go\na:0:0:444\nZ:Q10uzg8wQE7YqHdokzJuHxK+2lmsc=\nR:scan_run_warning_trace.pb.go\na:0:0:444\nZ:Q1q30NzuEyWdC8XGq/y9abghWu8jQ=\nR:web_security_scanner.pb.go\na:0:0:444\nZ:Q1H6CGyM3DnswbnrvUYIWf7RBDS1A=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/websecurityscanner/v1alpha\nM:0:0:555\nR:crawled_url.pb.go\na:0:0:444\nZ:Q18WkO31WG+BJg1JC58jQy+BZAzcI=\nR:finding.pb.go\na:0:0:444\nZ:Q1JWLKF2/OdnFDBXC0W0I0BluVJfc=\nR:finding_addon.pb.go\na:0:0:444\nZ:Q17ppYGi7/Q9F3e9OmX+CiNYksJCo=\nR:finding_type_stats.pb.go\na:0:0:444\nZ:Q1fzoemkpmL46iVfdGX/5QdHNUvto=\nR:scan_config.pb.go\na:0:0:444\nZ:Q1GC6P+5oxq30gw6wbFJKpH7ZRPXc=\nR:scan_run.pb.go\na:0:0:444\nZ:Q1wF0o5REHYfsqqKGBXF2UksGixrE=\nR:web_security_scanner.pb.go\na:0:0:444\nZ:Q1uc4kw6AC9RgeyigGbhDkBOinOrA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/websecurityscanner/v1beta\nM:0:0:555\nR:crawled_url.pb.go\na:0:0:444\nZ:Q1vXWPZp8XfRNaYnJB5zCclBomWqU=\nR:finding.pb.go\na:0:0:444\nZ:Q1DmnLkxapTnS/hDZ/PDi3aBXu9U8=\nR:finding_addon.pb.go\na:0:0:444\nZ:Q1dXW5CoGLrTAJl/IoRx180ZBX7s8=\nR:finding_type_stats.pb.go\na:0:0:444\nZ:Q1t5zNAkftVJFL9BubDSg2y74aRKQ=\nR:scan_config.pb.go\na:0:0:444\nZ:Q1N9LKlRl7IVnasDzi2Fny7dq50SM=\nR:scan_config_error.pb.go\na:0:0:444\nZ:Q1xdlOBYUF1o6JCsKWhiBmtk4xOKo=\nR:scan_run.pb.go\na:0:0:444\nZ:Q1ZnQlQ5+rWYjwDUKlhop1N5O/WYc=\nR:scan_run_error_trace.pb.go\na:0:0:444\nZ:Q1t6dBeO8AVdIKl2kh+WjBZoWIhz0=\nR:scan_run_warning_trace.pb.go\na:0:0:444\nZ:Q11iwM2OFgUrI/Y/f2PNrSCwjAqZk=\nR:web_security_scanner.pb.go\na:0:0:444\nZ:Q1W+DiRC0nG/68IlSKQ6/Ys932AIA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/executions\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/executions/v1\nM:0:0:555\nR:executions.pb.go\na:0:0:444\nZ:Q167XJ21gnj8GIMAFZCc4qn2eK9a8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/executions/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q17GmfxrhzTBfQjpJURsJ5qzBtwyo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/type\nM:0:0:555\nR:engine_call.pb.go\na:0:0:444\nZ:Q1J98E8PO1ZNJfiGJBNOaxkZmyP6o=\nR:executions_system.pb.go\na:0:0:444\nZ:Q15sKdGuamRQ0f70X1huEuhOQrTew=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/v1\nM:0:0:555\nR:workflows.pb.go\na:0:0:444\nZ:Q1stazXmUk9eUVwRRgAmb4XI32NVg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/cloud/workflows/v1beta\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1N7HMZXj5BHwPyCuju/FAsSw6Ltc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/container\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/container/v1\nM:0:0:555\nR:cluster_service.pb.go\na:0:0:444\nZ:Q1EiFPc1YVoc8cN2Q4P8VAmhxiNe0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/container/v1alpha1\nM:0:0:555\nR:cluster_service.pb.go\na:0:0:444\nZ:Q1uqq+PtE+FHnDYCy6tByoxtZfjbc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/container/v1beta1\nM:0:0:555\nR:cluster_service.pb.go\na:0:0:444\nZ:Q11fcjE6AtGuc37UmB+PoVM17QY9k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/dataflow\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/dataflow/v1beta3\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q17qzQ/B6rAIELP3z70ovmg05hO5o=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore/admin/v1\nM:0:0:555\nR:datastore_admin.pb.go\na:0:0:444\nZ:Q17PyBB+UvFFlwa3XNt16szn7VuI4=\nR:index.pb.go\na:0:0:444\nZ:Q19pwT3vz0LF664+8rxHOwuIFd4x4=\nR:migration.pb.go\na:0:0:444\nZ:Q1VoxL+OlXhtLCHMrdLDKx0gst9FE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore/admin/v1beta1\nM:0:0:555\nR:datastore_admin.pb.go\na:0:0:444\nZ:Q1o7FQNnPKKD8KGDgCk5DUfgOumkI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore/v1\nM:0:0:555\nR:datastore.pb.go\na:0:0:444\nZ:Q1dMAfA6e7ZjYDk7ptj7WFjcjbgSU=\nR:entity.pb.go\na:0:0:444\nZ:Q16jmvIzQMzFQeSoJ2PSDQmqJKVGc=\nR:query.pb.go\na:0:0:444\nZ:Q15WI5+ikwC1cZ5BX3UCGKRB7qtkY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/datastore/v1beta3\nM:0:0:555\nR:datastore.pb.go\na:0:0:444\nZ:Q1Aqs01CpGjS8NbnMCJZEapidWRgs=\nR:entity.pb.go\na:0:0:444\nZ:Q1po0/W1r1638Y5ITMut0s+kV161w=\nR:query.pb.go\na:0:0:444\nZ:Q17p0ciHrpmoPJHOkGNbquL7o29vk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/artifactregistry\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/artifactregistry/v1\nM:0:0:555\nR:apt_artifact.pb.go\na:0:0:444\nZ:Q1yGChdXnfFqb048+lXiq0iC27/FU=\nR:artifact.pb.go\na:0:0:444\nZ:Q10YNqfks0pNLcGXBzxksCvpFiDJg=\nR:file.pb.go\na:0:0:444\nZ:Q1UXBe86oE6oJ+/xd6zAGKqAjsRuo=\nR:package.pb.go\na:0:0:444\nZ:Q1DruR2OESKWwh5FAarq5/Y3qCmOc=\nR:repository.pb.go\na:0:0:444\nZ:Q1P1RuhM3hRRyGgKaXmEfgvlQ6oNI=\nR:service.pb.go\na:0:0:444\nZ:Q1nMgVCtWoEhRa+VLw2Q6NnZccDYU=\nR:settings.pb.go\na:0:0:444\nZ:Q1XXl8BYx5nRQT7BhqNHpSjbCawXo=\nR:tag.pb.go\na:0:0:444\nZ:Q16NQkU5GCN7M830moGJSE3sKvM5o=\nR:version.pb.go\na:0:0:444\nZ:Q1mGEMEcZNVPgGvs5wWaGR1tHbM0w=\nR:yum_artifact.pb.go\na:0:0:444\nZ:Q1DYUNKAOHcKRcjYgy/85qbv0sTrg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/artifactregistry/v1beta2\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1qirJ2Bm0vSDhFZabA9IkB4HAXw8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/build\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/build/v1\nM:0:0:555\nR:build_events.pb.go\na:0:0:444\nZ:Q1fDPAsUx2HQyaKd5bMqYQZxJIx0Y=\nR:build_status.pb.go\na:0:0:444\nZ:Q1LBUM3bXO2crxoBsb6IUhFVw6tSM=\nR:publish_build_event.pb.go\na:0:0:444\nZ:Q1yNqfZh01zpgymoC1hUhrM7xd7J8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudbuild\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudbuild/v1\nM:0:0:555\nR:cloudbuild.pb.go\na:0:0:444\nZ:Q1l5R7doQmGwHlByWc1M6mmKjHpBs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/clouddebugger\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/clouddebugger/v2\nM:0:0:555\nR:controller.pb.go\na:0:0:444\nZ:Q1nM17zPJ+E3MkEKSL1Uq4n26m4/g=\nR:data.pb.go\na:0:0:444\nZ:Q1tXZpLFVUQMO1CSCE5JsPtHhAWhs=\nR:debugger.pb.go\na:0:0:444\nZ:Q1vo2CWDKPJYkz0d6bAbzk7ZpLTeU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/clouderrorreporting\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/clouderrorreporting/v1beta1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1q+JRR2IFpdy5u3hLgGc5aiOZDC0=\nR:error_group_service.pb.go\na:0:0:444\nZ:Q1ijv4vnM/LD6LllAZ3JmGZazfKGU=\nR:error_stats_service.pb.go\na:0:0:444\nZ:Q10+LY/Tf8wRZpLUQVH7uIApAkRRo=\nR:report_errors_service.pb.go\na:0:0:444\nZ:Q1SfM7B5lm5JpzKWPKD0zjYgD5vAo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudprofiler\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudprofiler/v2\nM:0:0:555\nR:profiler.pb.go\na:0:0:444\nZ:Q16THX/gpVc/yakZ7G+ICsc2a3bM4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudtrace\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudtrace/v1\nM:0:0:555\nR:trace.pb.go\na:0:0:444\nZ:Q1fJiwNk2ICRb1u1Wh22K/69rRMXE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/cloudtrace/v2\nM:0:0:555\nR:trace.pb.go\na:0:0:444\nZ:Q1JtOxUvj+zorlfCGyZmt9Lcfhk50=\nR:tracing.pb.go\na:0:0:444\nZ:Q14KjZ1+HgYVciq+UBv6uNDZQ11UM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1\nM:0:0:555\nR:containeranalysis.pb.go\na:0:0:444\nZ:Q1TRf28Md14Acn67n714SeZxlUfpk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1alpha1\nM:0:0:555\nR:bill_of_materials.pb.go\na:0:0:444\nZ:Q1kM0aHNPqvTnPMh4+WFQ0eEa7qrY=\nR:containeranalysis.pb.go\na:0:0:444\nZ:Q1vGxyJaYay5qXDfELCicAVa7KaOM=\nR:image_basis.pb.go\na:0:0:444\nZ:Q1uAT78t3iJqajeiZV+9FJNYbyH8I=\nR:package_vulnerability.pb.go\na:0:0:444\nZ:Q1KfMR/A10rlgal6I3fiCxuCMaBO0=\nR:provenance.pb.go\na:0:0:444\nZ:Q11QI9FzbqBu3MnLAvR8dku1Kq7wg=\nR:source_context.pb.go\na:0:0:444\nZ:Q1HQ/WdhnhpB2Faslal19iRRJRm54=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q1zMkhvWOc3FjchFSOzNwBYv4MwY8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/attestation\nM:0:0:555\nR:attestation.pb.go\na:0:0:444\nZ:Q1YXYW4FPO47Bc2lN/W51GDUgcjy8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/build\nM:0:0:555\nR:build.pb.go\na:0:0:444\nZ:Q1bdYMuKziMcUKpofsuFiLYio1N8M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/common\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1040W9qBwGZSEf1t9liOpp+LdRJI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/cvss\nM:0:0:555\nR:cvss.pb.go\na:0:0:444\nZ:Q1QvAhZGjO8lwWcksKy4kgsihPBkg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/deployment\nM:0:0:555\nR:deployment.pb.go\na:0:0:444\nZ:Q1Ft94fj9TfwG7ttCUbvAfyL9smvw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/discovery\nM:0:0:555\nR:discovery.pb.go\na:0:0:444\nZ:Q137FZmOoctlLbrx0f9VwbFtI0My4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/grafeas\nM:0:0:555\nR:alias.go\na:0:0:444\nZ:Q16KMCu+mHpwYVaaST1XxEywDYnwY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/image\nM:0:0:555\nR:image.pb.go\na:0:0:444\nZ:Q1D+00Dqvp8ghkm5tT9ABDmlNtm34=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/package\nM:0:0:555\nR:package.pb.go\na:0:0:444\nZ:Q1miqj1ZAsQ/tPTclH+5YmROKV7W0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/provenance\nM:0:0:555\nR:provenance.pb.go\na:0:0:444\nZ:Q1YkwtOftwLZeoT1OVi6p/x3CUOw8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/source\nM:0:0:555\nR:source.pb.go\na:0:0:444\nZ:Q1CvdnQYtstsQM2ZbCGW63+u1qrYk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/containeranalysis/v1beta1/vulnerability\nM:0:0:555\nR:vulnerability.pb.go\na:0:0:444\nZ:Q1jlwtRKnNToRmdpbMeheku0Ztyjg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/remoteworkers\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/remoteworkers/v1test2\nM:0:0:555\nR:bots.pb.go\na:0:0:444\nZ:Q12yecFh0zugxWNOgD1XtrOpC9a3s=\nR:command.pb.go\na:0:0:444\nZ:Q1F4mYO1BvmQHZVSAZll+9eFZ5sDI=\nR:tasks.pb.go\na:0:0:444\nZ:Q1v6hdmnvSz5sIFUN+6VDAZOb2Hwc=\nR:worker.pb.go\na:0:0:444\nZ:Q1a/owoJ2c9tGouYamUHKz167aOnI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/resultstore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/resultstore/v2\nM:0:0:555\nR:action.pb.go\na:0:0:444\nZ:Q1PrawarTJaF5NoKHydmrNjlQYSDM=\nR:common.pb.go\na:0:0:444\nZ:Q1oRXMefOUJ7oB8wb3EA2YtuSTXPk=\nR:configuration.pb.go\na:0:0:444\nZ:Q1tN4JdCN/wFnk3GeCdAXlQrd5jxI=\nR:configured_target.pb.go\na:0:0:444\nZ:Q12mpKHUK2YGW1/eMr/bTrBxaforo=\nR:coverage.pb.go\na:0:0:444\nZ:Q13ts29QzQywRwG+dgIxqVVwEXwF4=\nR:coverage_summary.pb.go\na:0:0:444\nZ:Q1HxvucqO8mazFaDNJQJ3Twx176VQ=\nR:download_metadata.pb.go\na:0:0:444\nZ:Q1h+1Q3phmhmfSXCNJFYOmLqqc/2s=\nR:file.pb.go\na:0:0:444\nZ:Q1TyCKzTw0aH0a9gZwDeOmOALSERI=\nR:file_processing_error.pb.go\na:0:0:444\nZ:Q1oCSXM3u5ZhxGNwnezI4oZopKYFw=\nR:file_set.pb.go\na:0:0:444\nZ:Q1t490GcoEb9GU+ZhYzK5PK5O1KZA=\nR:invocation.pb.go\na:0:0:444\nZ:Q1hyAWZzE8F/JqYJXYjXe+RrulCjY=\nR:resultstore_download.pb.go\na:0:0:444\nZ:Q1sfhBXwrSLdvGo1qliuC0/Xr2qog=\nR:resultstore_file_download.pb.go\na:0:0:444\nZ:Q1fjPn2FS8JFTsM8myNeKFKSze36g=\nR:resultstore_upload.pb.go\na:0:0:444\nZ:Q1NGINPC0eS/GSf8En62CXUeN9tL8=\nR:target.pb.go\na:0:0:444\nZ:Q1BLUSQR05qsYW96I7lp7LxHoAdkM=\nR:test_suite.pb.go\na:0:0:444\nZ:Q11ii8V1yc6mhlk76nyq7mDcLbWyw=\nR:upload_metadata.pb.go\na:0:0:444\nZ:Q1CfAUvsGCTcE+smOu7bM7r2Q0enA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/source\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/source/v1\nM:0:0:555\nR:source_context.pb.go\na:0:0:444\nZ:Q16JUzuTAgTP8kqnQUY7gmWHFly8w=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/sourcerepo\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/sourcerepo/v1\nM:0:0:555\nR:sourcerepo.pb.go\na:0:0:444\nZ:Q1DDyDWfhqkqbjudLZqlWvOMGS2xk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/testing\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/devtools/testing/v1\nM:0:0:555\nR:application_details.pb.go\na:0:0:444\nZ:Q1tkiTJeiLhmKfwLdWYDAGyh9SN8Y=\nR:test_environment_discovery.pb.go\na:0:0:444\nZ:Q1qunAw/y2A+pSIvkfzR5bgu32d4k=\nR:test_execution.pb.go\na:0:0:444\nZ:Q1Brlj87n2tJayFpB/FFMBpANd/Ko=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/example\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/example/library\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/example/library/v1\nM:0:0:555\nR:library.pb.go\na:0:0:444\nZ:Q1nuLJpXWyK4nOEzaZ2z6JSIe4gpo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firebase\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firebase/fcm\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firebase/fcm/connection\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firebase/fcm/connection/v1alpha1\nM:0:0:555\nR:connection_api.pb.go\na:0:0:444\nZ:Q1wwKk5jta3fvxoY09B7Pw9QYWD5Y=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/admin/v1\nM:0:0:555\nR:database.pb.go\na:0:0:444\nZ:Q1i8+n11AU1NQuBiBQFfypmq0NEqg=\nR:field.pb.go\na:0:0:444\nZ:Q18J0uGpQDeiYSYAO157PmIeVzAAc=\nR:firestore_admin.pb.go\na:0:0:444\nZ:Q1Swmlpub5f65wWI+meBmoaKeJHJE=\nR:index.pb.go\na:0:0:444\nZ:Q1h+Mib7aoDDe0e5+yacLXiXz+3EI=\nR:location.pb.go\na:0:0:444\nZ:Q1sdlC2pl9QQ3ZyXgZ6SKSf2XAiEo=\nR:operation.pb.go\na:0:0:444\nZ:Q1jbhl+gvK7bumTl06DAZyKFR0jJA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/admin/v1beta1\nM:0:0:555\nR:firestore_admin.pb.go\na:0:0:444\nZ:Q1wp2hN36CXliaMGqegr7xiiQ61fw=\nR:index.pb.go\na:0:0:444\nZ:Q1csVR8bThmhVaXtvFLLzgLXI4pro=\nR:location.pb.go\na:0:0:444\nZ:Q1Ji5TKjqluBrdwaDNacrfMFbFk08=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/admin/v1beta2\nM:0:0:555\nR:field.pb.go\na:0:0:444\nZ:Q1NZANLDxdWgwyZ0xY+qO9B3r5Btg=\nR:firestore_admin.pb.go\na:0:0:444\nZ:Q1tCrRlr+GCwB7VlP8Qg4N7FzlJqI=\nR:index.pb.go\na:0:0:444\nZ:Q1SHasTAPm5/7G+XegIbYoJRd//p8=\nR:operation.pb.go\na:0:0:444\nZ:Q1IHuZGBmSro4BX3XaBSpltFYBaUg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/v1\nM:0:0:555\nR:aggregation_result.pb.go\na:0:0:444\nZ:Q1YFkjmRH3uoEf8lSTEK/KclbjP/o=\nR:common.pb.go\na:0:0:444\nZ:Q16uE2q/U64ZWB4LDEpofcSTFx6uA=\nR:document.pb.go\na:0:0:444\nZ:Q104vdet6ZvCggRXm4NXZPoUDgDQE=\nR:firestore.pb.go\na:0:0:444\nZ:Q18TkiEQYA/joJR1U30+2tDKinJaQ=\nR:query.pb.go\na:0:0:444\nZ:Q1DeZbRov4cIaXi2lyuRZ3slj8VvE=\nR:write.pb.go\na:0:0:444\nZ:Q1O2j8f3SO2d2g6XuCl2j+JSdc+7Y=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/firestore/v1beta1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1eR4abilnkZIyL3YArARWc5XemNs=\nR:document.pb.go\na:0:0:444\nZ:Q1lM91HlD0YByFM1FhLVaT9e2rD4o=\nR:firestore.pb.go\na:0:0:444\nZ:Q1A7AlFbrE79epla0DRQBPWaHo3oc=\nR:query.pb.go\na:0:0:444\nZ:Q1uFIkMZTRSWQh3OftJE5anxazyzw=\nR:write.pb.go\na:0:0:444\nZ:Q1/TgssMNuLp/38A5xT8Odo9JIwDw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/gapic\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/gapic/metadata\nM:0:0:555\nR:gapic_metadata.pb.go\na:0:0:444\nZ:Q1cZV1TeWrN0hBhJx3B6u9kSDzfHg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/genomics\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/genomics/v1\nM:0:0:555\nR:annotations.pb.go\na:0:0:444\nZ:Q1HkLS0T0xJs1nh90ibW4TuzJIltk=\nR:cigar.pb.go\na:0:0:444\nZ:Q1CcP+/321lPorQtHXOxRt7Ye9Mys=\nR:datasets.pb.go\na:0:0:444\nZ:Q1zdvV2atowznpqumq72BTYG6FP4g=\nR:operations.pb.go\na:0:0:444\nZ:Q1494yWxH0i05WpIhgdNYA+Y7HOiI=\nR:position.pb.go\na:0:0:444\nZ:Q1rNjR33HM4X0DmiCUqT5TQ9/6Flw=\nR:range.pb.go\na:0:0:444\nZ:Q1G8Pxdk2MnHNHXii7X7ZnfAhkXa4=\nR:readalignment.pb.go\na:0:0:444\nZ:Q1if/600YUNCHXMFUrFGJ5EcaaunI=\nR:readgroup.pb.go\na:0:0:444\nZ:Q1QIKNRQ/ou0I9aSNPULjAJK8sdcE=\nR:readgroupset.pb.go\na:0:0:444\nZ:Q1Yr8LUw5YVG3GXQ0olFUd5I/6/dI=\nR:reads.pb.go\na:0:0:444\nZ:Q1UzTXaqTqEZLldD0ce9a42QixI6o=\nR:references.pb.go\na:0:0:444\nZ:Q1MtzXbZfyKG5fmJxeI7L07wE2Jus=\nR:variants.pb.go\na:0:0:444\nZ:Q16X/R/OGfhd1i25oojAfTbpSyb1Y=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/genomics/v1alpha2\nM:0:0:555\nR:pipelines.pb.go\na:0:0:444\nZ:Q1XhBfO2AcAmvn5xfRbPzOMaPZOFE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/geo\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/geo/type\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/geo/type/viewport\nM:0:0:555\nR:viewport.pb.go\na:0:0:444\nZ:Q1s9iNI0aKQBh27/m0MuT256ruKf0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/grafeas\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/grafeas/v1\nM:0:0:555\nR:attestation.pb.go\na:0:0:444\nZ:Q1wwyM4Wzs/TbYlUzrm+Mh51hLOV0=\nR:build.pb.go\na:0:0:444\nZ:Q1K3DNEEdc1Z50MchiPtnJXbQtWbc=\nR:common.pb.go\na:0:0:444\nZ:Q1OjJFk7sGl3fzBllzjwDrkH+/UO0=\nR:compliance.pb.go\na:0:0:444\nZ:Q1tWKDLRGVXuRgrJGE3vtpV3zgeoY=\nR:cvss.pb.go\na:0:0:444\nZ:Q1ExDicv+LR/28DE2leR1uIrdX0IM=\nR:deployment.pb.go\na:0:0:444\nZ:Q1pHTrIhlxp7bxGkEDrRb+/bhpvIY=\nR:discovery.pb.go\na:0:0:444\nZ:Q15hgoSMStLyWZMEFzNu67mTzxD94=\nR:dsse_attestation.pb.go\na:0:0:444\nZ:Q11kuIx4O7e7/wQKzFGHdYshY8YjA=\nR:grafeas.pb.go\na:0:0:444\nZ:Q1+XVe8H52uZ1RXoXicDGvul6lbtA=\nR:image.pb.go\na:0:0:444\nZ:Q17bygB12ntpGgTW3EBxZvdPt4GjE=\nR:intoto_provenance.pb.go\na:0:0:444\nZ:Q12NgkaFfF+alirxMjHyC+tpcGSVI=\nR:intoto_statement.pb.go\na:0:0:444\nZ:Q1nq47NIrtrsu26yHF4RlTZJAnFEo=\nR:package.pb.go\na:0:0:444\nZ:Q1FiIyk02s9glmZD2shpYRAg4Pbr4=\nR:provenance.pb.go\na:0:0:444\nZ:Q1OXg2sLYRje6mIZpJeBIfF3rjQ3U=\nR:severity.pb.go\na:0:0:444\nZ:Q164ozRzMWZ3Y4JluKKe1NmoaSBcw=\nR:slsa_provenance.pb.go\na:0:0:444\nZ:Q1JD4saHwR4RYX+iscCbz6calCOcE=\nR:slsa_provenance_zero_two.pb.go\na:0:0:444\nZ:Q1PnP2TrISL7qtMBJPxh19jBzgRL4=\nR:upgrade.pb.go\na:0:0:444\nZ:Q1bKpirZ9CZb1AboNFoo2Jh8gUfpI=\nR:vulnerability.pb.go\na:0:0:444\nZ:Q1QCaV9PG05G9M9au8wBpmDuYdRAU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home/enterprise\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home/enterprise/sdm\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home/enterprise/sdm/v1\nM:0:0:555\nR:device.pb.go\na:0:0:444\nZ:Q1efpZ2FvqxPi/HEP77IS9So4Sh0o=\nR:site.pb.go\na:0:0:444\nZ:Q1tfv1UCSP8fS3Dv7jaZrCAOY36e8=\nR:smart_device_management_service.pb.go\na:0:0:444\nZ:Q1w6X5uMMSwrhgpfOalsNujJ6/iFE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home/graph\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/home/graph/v1\nM:0:0:555\nR:device.pb.go\na:0:0:444\nZ:Q16shRz2xwDf5TTjQt+nzvtzw8sLs=\nR:homegraph.pb.go\na:0:0:444\nZ:Q1gQJokS0+DaZ/LV3pRA3KqiVZ1VE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/admin/v1\nM:0:0:555\nR:audit_data.pb.go\na:0:0:444\nZ:Q1dXN9o6M7TKBmzGUrB91bf07QSO0=\nR:iam.pb.go\na:0:0:444\nZ:Q1okrWuxinlIapAAHPfKRwINflT+0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/credentials\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/credentials/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1Z8U1PmOEwPtMAv1bDZUKFJNeEUk=\nR:iamcredentials.pb.go\na:0:0:444\nZ:Q1+yFx1tqKiptAlklDPJ8a11EtP2Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/v1\nM:0:0:555\nR:iam_policy.pb.go\na:0:0:444\nZ:Q1o0i7Z774UQVdOPpQQe7gfmav/xA=\nR:options.pb.go\na:0:0:444\nZ:Q1339dAmwwDH5f8lM5sfsijTCVJSI=\nR:policy.pb.go\na:0:0:444\nZ:Q1OlmxeMX5EVuDA4K5ewQVY+IOV2s=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/v1/logging\nM:0:0:555\nR:audit_data.pb.go\na:0:0:444\nZ:Q1yBV0l1m1okYhCsE8CQiv0CaQh9c=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/v1beta\nM:0:0:555\nR:workload_identity_pool.pb.go\na:0:0:444\nZ:Q1zpdGurduWyswluGy4USoJZ3RSxw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/v2\nM:0:0:555\nR:deny.pb.go\na:0:0:444\nZ:Q1cFx3tWp2lXPdmy2zPMb4dwxgs8o=\nR:policy.pb.go\na:0:0:444\nZ:Q1LPH+Fs7/MyhaOC/rzmg82Xqp72o=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/iam/v2beta\nM:0:0:555\nR:deny.pb.go\na:0:0:444\nZ:Q1KH6/HPHBzArAW8zZaNwD7LNWRMk=\nR:policy.pb.go\na:0:0:444\nZ:Q1Wdouj2g4oE/ZFiO8Fn/hWdmaaco=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/identity\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/identity/accesscontextmanager\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/identity/accesscontextmanager/type\nM:0:0:555\nR:device_resources.pb.go\na:0:0:444\nZ:Q15W7jpM7rlGqi8DsXMY4H61i6kxA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/identity/accesscontextmanager/v1\nM:0:0:555\nR:access_context_manager.pb.go\na:0:0:444\nZ:Q1MhnxcK/Ff8//iwYveWG6nCzJJKg=\nR:access_level.pb.go\na:0:0:444\nZ:Q1GWWJqRykBVt/Yq5p5esdesaFiLw=\nR:access_policy.pb.go\na:0:0:444\nZ:Q1Abw4tV6tRrhM6AAGKFP9PODvxK0=\nR:gcp_user_access_binding.pb.go\na:0:0:444\nZ:Q1PTH8LwA5gd+8ZH5TkV9PMQjHw8o=\nR:service_perimeter.pb.go\na:0:0:444\nZ:Q1rVNmagB805Tm9YxedyJd9gfX0ak=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/logging/type\nM:0:0:555\nR:http_request.pb.go\na:0:0:444\nZ:Q1v/NWmABpQ+mc/VUDOQeMzdl065c=\nR:log_severity.pb.go\na:0:0:444\nZ:Q1LRfFgM/WdSwYeMgMTM8wmRgm/Ac=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/logging/v2\nM:0:0:555\nR:log_entry.pb.go\na:0:0:444\nZ:Q12iDiuzQWY1FZCejnjKmeu1ZUu0I=\nR:logging.pb.go\na:0:0:444\nZ:Q1zeMAXikB+L6EA8ODVU6N91cX0U0=\nR:logging_config.pb.go\na:0:0:444\nZ:Q1OOSZgKgqp9SEWrrYATWzsinCTZI=\nR:logging_metrics.pb.go\na:0:0:444\nZ:Q1Zy0Id7G7TnjV6PB88NY5nTGJIJA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/longrunning\nM:0:0:555\nR:operations.pb.go\na:0:0:444\nZ:Q1mooyS+6VE3Lw0+wsjWsi4qeRbuo=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/addressvalidation\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/addressvalidation/v1\nM:0:0:555\nR:address.pb.go\na:0:0:444\nZ:Q1icRBzwdaMT1oLWs2XPM7x3FC0kI=\nR:address_validation_service.pb.go\na:0:0:444\nZ:Q158GJ8a0QOMfxrxILpVM9VryoWxw=\nR:geocode.pb.go\na:0:0:444\nZ:Q1F3YQaUI/pmPFhXAQgxP2jbCuG6s=\nR:metadata.pb.go\na:0:0:444\nZ:Q1Z9mGEzDRXglehD5NJenI88V69M0=\nR:usps_data.pb.go\na:0:0:444\nZ:Q1qz2Sjmq90yniFjmE5/X0c1Ds7UY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/fleetengine\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/fleetengine/delivery\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/fleetengine/delivery/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1Cy46pyo7MtIQ0lv4Wbs4CUPRISo=\nR:delivery_api.pb.go\na:0:0:444\nZ:Q1OOxAB56QUjFy+RvhUsAkV0b6LGs=\nR:delivery_vehicles.pb.go\na:0:0:444\nZ:Q1XYJMMyLfIpkRGUcHVnfyF+Z+h/c=\nR:header.pb.go\na:0:0:444\nZ:Q1Zvk0aE1m8VFUMLv0L8+LUsbzTL0=\nR:tasks.pb.go\na:0:0:444\nZ:Q1zE83tZKrhD/kcjclR+XEJgvGs8A=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/fleetengine/v1\nM:0:0:555\nR:fleetengine.pb.go\na:0:0:444\nZ:Q1BQVJ5krvh0/C8/bRTAWdfgYvKio=\nR:header.pb.go\na:0:0:444\nZ:Q1Q8T5yvKLGOL3IrzqXZUtrNQPe1o=\nR:traffic.pb.go\na:0:0:444\nZ:Q1VUkRkThb2uNnVUoLEGq+mUNXrbM=\nR:trip_api.pb.go\na:0:0:444\nZ:Q1PfmLe5Dd1NYgGnBQ51Azo3uQPFA=\nR:trips.pb.go\na:0:0:444\nZ:Q1w4DA90eoTuazbfGOjLL2gJYnKSY=\nR:vehicle_api.pb.go\na:0:0:444\nZ:Q1PYosxwNOUy0oWz7bGyAu+74xSvE=\nR:vehicles.pb.go\na:0:0:444\nZ:Q1LHMVcjtqumdEfykJ3mcIAzqKVDk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/mapsplatformdatasets\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/mapsplatformdatasets/v1alpha\nM:0:0:555\nR:data_source.pb.go\na:0:0:444\nZ:Q1axqLaGXcNxZrP/2aEyTMWXDlCkg=\nR:dataset.pb.go\na:0:0:444\nZ:Q1bosMFN6odFawsP33820pD6qJ650=\nR:maps_platform_datasets.pb.go\na:0:0:444\nZ:Q1JWsQ3yNE73AXyFohyS17CzLmYAk=\nR:maps_platform_datasets_alpha_service.pb.go\na:0:0:444\nZ:Q1IwNofMPw9SceEB/TUIj9ShQbXu4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/playablelocations\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/playablelocations/v3\nM:0:0:555\nR:playablelocations.pb.go\na:0:0:444\nZ:Q1Lj+TaCdg3JLximLmjZaygRgiAuI=\nR:resources.pb.go\na:0:0:444\nZ:Q1NE2eu16wpKavJCc4WEEb87tub20=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/playablelocations/v3/sample\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1HjNBj1FCu0PQ0eoYZZDABNx0k3M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/regionlookup\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/regionlookup/v1alpha\nM:0:0:555\nR:region_identifier.pb.go\na:0:0:444\nZ:Q1YDnGHQz1aJxLbco3v7cWHalJtUg=\nR:region_lookup_service.pb.go\na:0:0:444\nZ:Q1IZN8Mu2hJbQqBrnt44dJBEtfn2g=\nR:region_match.pb.go\na:0:0:444\nZ:Q1JpzG2kPEmCg4XuhNlupT98Jk2Mo=\nR:region_search_values.pb.go\na:0:0:444\nZ:Q1ypOSohGdW0sNu4USyvGK+F194t0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/roads\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/roads/v1op\nM:0:0:555\nR:roads.pb.go\na:0:0:444\nZ:Q1bbeLQ/6tsyjXF/R8mhNhPj1SG80=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/routes\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/routes/v1\nM:0:0:555\nR:compute_custom_routes_request.pb.go\na:0:0:444\nZ:Q1I2TW0F38Tk7OqKb5ONWWshkQ3UY=\nR:compute_custom_routes_response.pb.go\na:0:0:444\nZ:Q1RL1TIXbg68lzaDoHYVTru9C7OBI=\nR:compute_route_matrix_request.pb.go\na:0:0:444\nZ:Q1OffFHwrsiBzZ8yAtsiCzDqaPACM=\nR:compute_routes_request.pb.go\na:0:0:444\nZ:Q1hzKdPi9gqZrFa7g6mpOcs3Zyi5w=\nR:compute_routes_response.pb.go\na:0:0:444\nZ:Q1coNjZmui03+ikubrfSsEf+nGdoM=\nR:custom_route.pb.go\na:0:0:444\nZ:Q1tqo3iGZGZY7nrj8VLXwFjfwTvFI=\nR:fallback_info.pb.go\na:0:0:444\nZ:Q1VCiJkYCpppO7gbJ5laxqk9eR8GQ=\nR:polyline.pb.go\na:0:0:444\nZ:Q1o7xlCg1ryLXDpNmNfk5yQ4yvpE0=\nR:route.pb.go\na:0:0:444\nZ:Q191nFYOxqmmN1ljkQ8glJnZThDjQ=\nR:route_matrix_element.pb.go\na:0:0:444\nZ:Q1CWL53fpZZMh1fHRi0wjsiERYeaI=\nR:route_service.pb.go\na:0:0:444\nZ:Q1WzbZGXXzWkZWQ0I2v+142KiuD4k=\nR:toll_passes.pb.go\na:0:0:444\nZ:Q1Iebh+EuFLkwWauTIik4P/oJImqA=\nR:vehicle_emission_type.pb.go\na:0:0:444\nZ:Q15iTPBf2qDCYeOX6o46+rcObY0kQ=\nR:waypoint.pb.go\na:0:0:444\nZ:Q1m2pdrUBZkFpEoDimgeDhSs++8Ic=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/routes/v1alpha\nM:0:0:555\nR:route_service.pb.go\na:0:0:444\nZ:Q1ZNt0T8vwMJ6E85L2/82nRY9x8XQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/routing\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/routing/v2\nM:0:0:555\nR:fallback_info.pb.go\na:0:0:444\nZ:Q1UcMWCMroWbnmm+3p07XJc9w92gU=\nR:location.pb.go\na:0:0:444\nZ:Q1YkLWTvYwSa/bCWeGvhebiiYfKQI=\nR:maneuver.pb.go\na:0:0:444\nZ:Q17rcH+nsb+fwoJLtlUHHQjQ2iF5E=\nR:navigation_instruction.pb.go\na:0:0:444\nZ:Q14FNJH7ltHHlQUotcU+TAXKP86PQ=\nR:polyline.pb.go\na:0:0:444\nZ:Q1rgrFvdZ1kdJGOMA9AGl9C7g+RZo=\nR:route.pb.go\na:0:0:444\nZ:Q1rGTbwKwSk7iid9uAc09WJg19i+I=\nR:route_modifiers.pb.go\na:0:0:444\nZ:Q1YQ5Kdh9lSHkYaloMUOMNu0cJC2Y=\nR:route_travel_mode.pb.go\na:0:0:444\nZ:Q1Nb5tQn9PNBCYf2ScvX62Bjlk+b4=\nR:routes_service.pb.go\na:0:0:444\nZ:Q1ZG1yyqtSptI1d5j/bC+9+ljf8KA=\nR:routing_preference.pb.go\na:0:0:444\nZ:Q19tzHxC7ihdkOnWlF3/Y70u4HY94=\nR:speed_reading_interval.pb.go\na:0:0:444\nZ:Q1nOrdWPDjdzlXcW2hykMjXzeb0f0=\nR:toll_info.pb.go\na:0:0:444\nZ:Q1uMT6puNXuI05Pl9b0xU7hqiK0aQ=\nR:toll_passes.pb.go\na:0:0:444\nZ:Q1/umBmsDFtaXKagywmIkb8YNNxIs=\nR:units.pb.go\na:0:0:444\nZ:Q1GEf6+zmsKHTjbcyGCxpPlUUy8Kg=\nR:vehicle_emission_type.pb.go\na:0:0:444\nZ:Q195mCVqEu3qGL9mD0Uv5EpgP07Kk=\nR:vehicle_info.pb.go\na:0:0:444\nZ:Q1hEmtlYyOo7RA9U5X1zCZL+E9QJc=\nR:waypoint.pb.go\na:0:0:444\nZ:Q1ylQXyrh0FtsfjFjpXlNG/l+C5w0=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/maps/unity\nM:0:0:555\nR:clientinfo.pb.go\na:0:0:444\nZ:Q1uppSHt10M6ip/RQcYp3nbjn0qzE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring/dashboard\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring/dashboard/v1\nM:0:0:555\nR:alertchart.pb.go\na:0:0:444\nZ:Q1EjJExEYnaXhkZOgiYZUim93UU14=\nR:collapsible_group.pb.go\na:0:0:444\nZ:Q1kY6OiwwEflCnW9nHHhFwCHEU9Og=\nR:common.pb.go\na:0:0:444\nZ:Q16O88p4nYsj3YD9AILjxxavW4v2o=\nR:dashboard.pb.go\na:0:0:444\nZ:Q1x78SHV0ieq+zk5/EAxZWKxgbDV8=\nR:dashboard_filter.pb.go\na:0:0:444\nZ:Q1Iw7EXRZ27Ek91I4LeKUbbPmxFlc=\nR:dashboards_service.pb.go\na:0:0:444\nZ:Q1a+LfrGclBe0hiXx+fwo8Xjm8cFw=\nR:drilldowns.pb.go\na:0:0:444\nZ:Q1HikOwk2li8aQ57itRWPCNT+/Uas=\nR:layouts.pb.go\na:0:0:444\nZ:Q1pxiebmyEYLrifAEnpo8MPm38UOo=\nR:logs_panel.pb.go\na:0:0:444\nZ:Q1RlTYPWK9R/Uff3JWU6Irru2DHO4=\nR:metrics.pb.go\na:0:0:444\nZ:Q1C6p0gOuppegeTPRtqy/DTkIYERQ=\nR:scorecard.pb.go\na:0:0:444\nZ:Q1htwywxhX/n9EhanxAwLk8yyMdqY=\nR:service.pb.go\na:0:0:444\nZ:Q1p2mfLK2p4/37nbU1ZVECA0dmbOE=\nR:table.pb.go\na:0:0:444\nZ:Q1pQi2HM+hLuqi5tkf/QlpkknqlPQ=\nR:table_display_options.pb.go\na:0:0:444\nZ:Q1lnk21NbrYZmDLS5A2CcOrNvEi6U=\nR:text.pb.go\na:0:0:444\nZ:Q1A720l3U+LyY8l99aVqvu+Fv7C9k=\nR:widget.pb.go\na:0:0:444\nZ:Q1Hw2/Vxp5ZejbX2+ZsUo/yaqDY/o=\nR:xychart.pb.go\na:0:0:444\nZ:Q1yA4D8azvfNfGcZKxTvX+/Jk1F1Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring/metricsscope\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring/metricsscope/v1\nM:0:0:555\nR:metrics_scope.pb.go\na:0:0:444\nZ:Q1i0JAcHyTgwKdZkg/7xnXS07GnvI=\nR:metrics_scopes.pb.go\na:0:0:444\nZ:Q194FLqsPueH7Id/pubFB1iAmFp2Q=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/monitoring/v3\nM:0:0:555\nR:alert.pb.go\na:0:0:444\nZ:Q1s7auFr8OP1ec3yYsrxSraDdQPg8=\nR:alert_service.pb.go\na:0:0:444\nZ:Q1uYOGSBhBXse2iS4EgzyfxluoGhY=\nR:common.pb.go\na:0:0:444\nZ:Q18ETZg4rNTUNmrPEEaUEZhgO0vks=\nR:dropped_labels.pb.go\na:0:0:444\nZ:Q1L1zLHcxgVwHMUScJOIQooqoXKRA=\nR:group.pb.go\na:0:0:444\nZ:Q1O0MDW8MbWQB0/v82pOcptaGvlAk=\nR:group_service.pb.go\na:0:0:444\nZ:Q19uGd4V3NMeow41iVcl+bmSWeYNw=\nR:metric.pb.go\na:0:0:444\nZ:Q1UVQ3TATMdYXTCereY1/hy7QMc9w=\nR:metric_service.pb.go\na:0:0:444\nZ:Q1MM+dtqPDYN0psUvNKue4K/qnB34=\nR:mutation_record.pb.go\na:0:0:444\nZ:Q1YdP+gGZ/pCBTrn55RET38/CgLwo=\nR:notification.pb.go\na:0:0:444\nZ:Q1gJ7YBRdp/OJoXOSZVXuhDFfXe5k=\nR:notification_service.pb.go\na:0:0:444\nZ:Q1qCjPOxU5IKhUIiVgEh4GpeMnb04=\nR:query_service.pb.go\na:0:0:444\nZ:Q16/mFKIZEQVvk1gPY9NdDvIoptdE=\nR:service.pb.go\na:0:0:444\nZ:Q1/6JCaINN/IKuqbtmogxB+/qrIP4=\nR:service_service.pb.go\na:0:0:444\nZ:Q1XVYGxVNy+OmvGdCYCoe9NvCTiH4=\nR:span_context.pb.go\na:0:0:444\nZ:Q1JVSlGeAht3zs7ymbjLYHyKxEF0M=\nR:uptime.pb.go\na:0:0:444\nZ:Q18TwYLTyfWnKRO4qkclS0LAYZlzE=\nR:uptime_service.pb.go\na:0:0:444\nZ:Q1XXH4q7xijsfO8B+81YQQvFVwS4I=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/networking\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/networking/trafficdirector\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/networking/trafficdirector/type\nM:0:0:555\nR:traffic_director_log_entry.pb.go\na:0:0:444\nZ:Q1jTVMf+bBdDZgMLfnO80XbIGFp+w=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/partner\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/partner/aistreams\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/partner/aistreams/v1alpha1\nM:0:0:555\nR:aistreams.pb.go\na:0:0:444\nZ:Q135fb8uS74mgGYTdejNgr5ZcKY6M=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/privacy\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/privacy/dlp\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/privacy/dlp/v2\nM:0:0:555\nR:dlp.pb.go\na:0:0:444\nZ:Q1zShpFU/+q2l/ZDiVzDrvYK9Ynas=\nR:storage.pb.go\na:0:0:444\nZ:Q1yMpGfGCnpffBs8UVakfmvooUAIQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/pubsub\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/pubsub/v1\nM:0:0:555\nR:pubsub.pb.go\na:0:0:444\nZ:Q1VHnz2bq5Tf0rjKdjf9zxLiWw/BY=\nR:schema.pb.go\na:0:0:444\nZ:Q1NgllkKnwQ+N+c2iP7EVKDxhfdh4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/pubsub/v1beta2\nM:0:0:555\nR:pubsub.pb.go\na:0:0:444\nZ:Q10XZPFCgUpaXbQx78J1bnYllGXXI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc/code\nM:0:0:555\nR:code.pb.go\na:0:0:444\nZ:Q1XnGmtFQmP7H4YS/lzFi9x9fjfhw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc/context\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc/context/attribute_context\nM:0:0:555\nR:attribute_context.pb.go\na:0:0:444\nZ:Q1/1lWz2DPpw0CfN4WiyeUOAK1TQg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc/errdetails\nM:0:0:555\nR:error_details.pb.go\na:0:0:444\nZ:Q17aeTlOkYVlqncN9oU4jsaIE7YlA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/rpc/status\nM:0:0:555\nR:status.pb.go\na:0:0:444\nZ:Q1VQj1IqUzjXi7NXVKkXJ/P2Krf7A=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/search\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/search/partnerdataingestion\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/search/partnerdataingestion/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/search/partnerdataingestion/logging/v1\nM:0:0:555\nR:platformlog.pb.go\na:0:0:444\nZ:Q1L5KjBj1++x0FVJCQJCAxZR1d7rM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/admin\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/admin/database\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/admin/database/v1\nM:0:0:555\nR:backup.pb.go\na:0:0:444\nZ:Q1C6eTPZGW75SAnJWv/Ojj78aTYKM=\nR:common.pb.go\na:0:0:444\nZ:Q1xSzilvbYYNruwLlBMLj5MAj70bY=\nR:spanner_database_admin.pb.go\na:0:0:444\nZ:Q1f0kNXMbs0VhsPi0JExzRSMij6Rs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/admin/instance\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/admin/instance/v1\nM:0:0:555\nR:common.pb.go\na:0:0:444\nZ:Q1kC7OQ8TO1qBshGCcjTd+/iCRUIs=\nR:spanner_instance_admin.pb.go\na:0:0:444\nZ:Q1syRABXtTikkON7tSHzf477qqoSM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/spanner/v1\nM:0:0:555\nR:commit_response.pb.go\na:0:0:444\nZ:Q1bo4+kUOFejPiQ5keJGweX1udta0=\nR:keys.pb.go\na:0:0:444\nZ:Q1MaIi0PCMyYL33fnrDKIBIRXARTA=\nR:mutation.pb.go\na:0:0:444\nZ:Q15PalxaDp4OH4oaqVYVWEVrDG6uQ=\nR:query_plan.pb.go\na:0:0:444\nZ:Q1JRjI9xJ+1c8boCc5dmOYqLa9HRg=\nR:result_set.pb.go\na:0:0:444\nZ:Q1nPXx7qnME/R0VftNvWhogIR8Ues=\nR:spanner.pb.go\na:0:0:444\nZ:Q1wdMPx/RlXpLEt+EGHlwElObiX+8=\nR:transaction.pb.go\na:0:0:444\nZ:Q1igH6s9b/lpxZFJ1Y9eHempaq52o=\nR:type.pb.go\na:0:0:444\nZ:Q1Ft6+bKWzBnYok/9HhljWEZgz1XU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage/clouddms\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage/clouddms/logging\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage/clouddms/logging/v1\nM:0:0:555\nR:clouddms_stackdriver_logs.pb.go\na:0:0:444\nZ:Q12gD1fHaOxR+ObslB4an8mNYWbQg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage/v1\nM:0:0:555\nR:storage.pb.go\na:0:0:444\nZ:Q1asvrLqIoFFgbd7sWxk+UCF61mWk=\nR:storage_resources.pb.go\na:0:0:444\nZ:Q1hkP3od3q7oq0FyIe8Xuk1JJTSNs=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storage/v2\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q1p35FB9Qy67Pa+8eFwXaI2wA5h0E=\nR:storage.pb.go\na:0:0:444\nZ:Q1ndlilrZ6TqVe+CHPLR0O70J2Tso=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storagetransfer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storagetransfer/logging\nM:0:0:555\nR:transfer_activity_log.pb.go\na:0:0:444\nZ:Q17ZwYFdOz9JNkYSC/sw1Vw+bidzI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/storagetransfer/v1\nM:0:0:555\nR:transfer.pb.go\na:0:0:444\nZ:Q1GGBytvxcJaDG9wJKkiOoqsVvNJM=\nR:transfer_types.pb.go\na:0:0:444\nZ:Q1HfChvlaZDxuwd8T3otdro7ViXm4=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/streetview\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/streetview/publish\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/streetview/publish/v1\nM:0:0:555\nR:resources.pb.go\na:0:0:444\nZ:Q1XMuONBR5v/TPeXEyEHDbuNsIVz4=\nR:rpcmessages.pb.go\na:0:0:444\nZ:Q14qSXzHOfciJfw0yd8lucTzm7KLU=\nR:streetview_publish.pb.go\na:0:0:444\nZ:Q15/e2KH/AA33nhHPTBtMjlH0TpVM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/calendarperiod\nM:0:0:555\nR:calendar_period.pb.go\na:0:0:444\nZ:Q1133eefKoQnObcq5tuIjPlSR8Y4s=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/color\nM:0:0:555\nR:color.pb.go\na:0:0:444\nZ:Q1pT48byAZwuy8vLlZm52HSI4BNMI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/date\nM:0:0:555\nR:date.pb.go\na:0:0:444\nZ:Q1Iwv4ziNQtYoZ83G3kHBfQjJhedI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/date_range\nM:0:0:555\nR:date_range.pb.go\na:0:0:444\nZ:Q14W3fibNyo69Kz6+uqfn8jxptQ38=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/date_time_range\nM:0:0:555\nR:datetime_range.pb.go\na:0:0:444\nZ:Q1INYY6w6HhPYzv+LVvnulbC2d4YI=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/datetime\nM:0:0:555\nR:datetime.pb.go\na:0:0:444\nZ:Q1ViBb9j0et4arhmYN3T1xdTSlozg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/dayofweek\nM:0:0:555\nR:dayofweek.pb.go\na:0:0:444\nZ:Q1YufM/KlRHG/KE2Og0nYQbKvWSGY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/decimal\nM:0:0:555\nR:decimal.pb.go\na:0:0:444\nZ:Q1NNFxTtg/LQnl4FCVLcbnQLO4rWk=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/expr\nM:0:0:555\nR:expr.pb.go\na:0:0:444\nZ:Q1B7yiv6x3PcG69gn1Ol2bf6yVU3k=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/fraction\nM:0:0:555\nR:fraction.pb.go\na:0:0:444\nZ:Q11uZ0/yT3HwKZ1SfXaV8HRofvEHc=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/interval\nM:0:0:555\nR:interval.pb.go\na:0:0:444\nZ:Q1n6h+AbviHpAG7g4D8d5+KIjRWok=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/latlng\nM:0:0:555\nR:latlng.pb.go\na:0:0:444\nZ:Q18IAwKx4jw94MshhlU8TrORMg+aU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/localized_text\nM:0:0:555\nR:localized_text.pb.go\na:0:0:444\nZ:Q1jWOMPONkxTTkDeh/ohkyqtu+4OY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/money\nM:0:0:555\nR:money.pb.go\na:0:0:444\nZ:Q1svM7z9xe8TXF4HXgcKZWup+OStE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/month\nM:0:0:555\nR:month.pb.go\na:0:0:444\nZ:Q1dWtn7N3ar88HIXpMy9qt+4pUIUE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/phone_number\nM:0:0:555\nR:phone_number.pb.go\na:0:0:444\nZ:Q1BoFf1PrfCmYrJLw3clHBJPnckFQ=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/postaladdress\nM:0:0:555\nR:postal_address.pb.go\na:0:0:444\nZ:Q1Ds5xsDK7DU+TCg4dxeBhGtQmGoE=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/quaternion\nM:0:0:555\nR:quaternion.pb.go\na:0:0:444\nZ:Q1vQPPILxy7I2HlKwNc68XIVhLzmM=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/type/timeofday\nM:0:0:555\nR:timeofday.pb.go\na:0:0:444\nZ:Q1tZd/RFO05iT19LYSMOat4Ns1qsA=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/watcher\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/googleapis/watcher/v1\nM:0:0:555\nR:watch.pb.go\na:0:0:444\nZ:Q1pavVepo91fpcCvl8iwBRERlxOSw=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/internal\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/internal/kokoro\nM:0:0:555\nR:test.sh\na:0:0:444\nZ:Q1JU1loiuimg6o/eXPEg+lSNijV4c=\nR:trampoline.sh\na:0:0:444\nZ:Q16azIfcC0onaRP3YaLulWRiH4/fM=\nR:vet.sh\na:0:0:444\nZ:Q1/E59jWL0M8UHKiaBn8d2lUJ7Xeg=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/protobuf\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/protobuf/api\nM:0:0:555\nR:api.go\na:0:0:444\nZ:Q1/wjPcA59rRZ1wg6iOh29Lr4P/qU=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/protobuf/field_mask\nM:0:0:555\nR:field_mask.go\na:0:0:444\nZ:Q1m7shhYRzvgLU40RMTfuFNqIhgl8=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/protobuf/ptype\nM:0:0:555\nR:type.go\na:0:0:444\nZ:Q11zAiBocVNY0e80eg9CSniKMslmY=\nF:root/go/pkg/mod/google.golang.org/genproto@v0.0.0-20221010155953-15ba04fc1c0e/protobuf/source_context\nM:0:0:555\nR:source_context.go\na:0:0:444\nZ:Q1HEIH84cqogp+C59s0CMSeWqtseM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0\nM:0:0:555\nR:AUTHORS\na:0:0:444\nZ:Q1UWXqoE8h6+V2zMt6fK+l0+1r4d8=\nR:CODE-OF-CONDUCT.md\na:0:0:444\nZ:Q1zOR66TUwh80anGmTaW/xwl8OgGg=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1AD2rPmeA8C1rwHd1E4oCJFSx64g=\nR:GOVERNANCE.md\na:0:0:444\nZ:Q1m61YsffzHmzLA2zpeXxePZVA1ZY=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:MAINTAINERS.md\na:0:0:444\nZ:Q1aefVrS1GYRZLDYZcOQouS6SDLgA=\nR:Makefile\na:0:0:444\nZ:Q1p5wfKDrbdPTAuzHkZHVeLTOWS/w=\nR:NOTICE.txt\na:0:0:444\nZ:Q16Ri/qxEEA8Wj7i7NyvPYcW/neM8=\nR:README.md\na:0:0:444\nZ:Q1KWpdjDDCvBUW2V9hBsy65bQqsBk=\nR:SECURITY.md\na:0:0:444\nZ:Q1HbHH+D7kmOwnHlyO2zcdXLgwZ+A=\nR:backoff.go\na:0:0:444\nZ:Q19fGzrp+/v3psh+v52BdHn4Meowk=\nR:balancer_conn_wrappers.go\na:0:0:444\nZ:Q101ATadlLIUoFyn32sO3fdwAEwJA=\nR:call.go\na:0:0:444\nZ:Q1j7jZ8IflRU0JSGbY/xi03XlQaRc=\nR:clientconn.go\na:0:0:444\nZ:Q17qgzZVYHK9H9zR4evSaZkupDLF8=\nR:clientconn_authority_test.go\na:0:0:444\nZ:Q1bjb3iQOBloFqWqiR8Q5ZYAthaWw=\nR:clientconn_parsed_target_test.go\na:0:0:444\nZ:Q1OjlTgPN1tTKHTfEWK+cLwUd6DO8=\nR:clientconn_test.go\na:0:0:444\nZ:Q1BmzwSH3Gd8FmtNifCnc9jMe1338=\nR:codec.go\na:0:0:444\nZ:Q1hqqb6ZOUEq/8HyFRO//zv1esALc=\nR:codec_test.go\na:0:0:444\nZ:Q1Pse2qoZ0aiXHJylL+4VbEq4Jr04=\nR:codegen.sh\na:0:0:444\nZ:Q1uczL0w1QVsdT78CuQaFuM5Js4OM=\nR:default_dial_option_server_option_test.go\na:0:0:444\nZ:Q1NDb+uKXMEd6zR/pQF1Za9guRauk=\nR:dialoptions.go\na:0:0:444\nZ:Q1UL6iVKHpvzbbnjxVywq//okJwyw=\nR:doc.go\na:0:0:444\nZ:Q1qpAFhnJHj5BuBtUsuYWGlsr3D10=\nR:go.mod\na:0:0:444\nZ:Q1/mwj55DaJ4Rz8JdfmiCXhEPxvNw=\nR:go.sum\na:0:0:444\nZ:Q1l5PGAx78qz11+rtGbr392IzpasI=\nR:grpc_test.go\na:0:0:444\nZ:Q1Q/S0Ku85BkWA2FjWbHgSPvpLY0M=\nR:interceptor.go\na:0:0:444\nZ:Q13AD+93yK+uhWSdhKez6W1MqnBqc=\nR:picker_wrapper.go\na:0:0:444\nZ:Q1XRX8FyHnXUZf3Mwzw6JU3Wj89xk=\nR:picker_wrapper_test.go\na:0:0:444\nZ:Q1R7CeWiq6rKD5D8L/GLKdbDD/iCI=\nR:pickfirst.go\na:0:0:444\nZ:Q1O1TQ+fqGv6+99X6sSuybGkqyI3g=\nR:preloader.go\na:0:0:444\nZ:Q1rkJkraf6ZpgMWGKC+KL2Dg2wdzQ=\nR:regenerate.sh\na:0:0:444\nZ:Q1KpLiXuxTh9M01VFyYwbYuu2l96U=\nR:resolver_conn_wrapper.go\na:0:0:444\nZ:Q1aprq5oMQ9LI2k7VjCN9K8cE/Xf4=\nR:rpc_util.go\na:0:0:444\nZ:Q1DBxR+lAPknfs3dtrzuRTOPMJq80=\nR:rpc_util_test.go\na:0:0:444\nZ:Q1wYOrz9RWY7J5hw8OKxTuluRqXSw=\nR:server.go\na:0:0:444\nZ:Q1lDp7Bgd+0NZV+gnYfL5ES/wBA/g=\nR:server_test.go\na:0:0:444\nZ:Q1jzhNGar7+91E0KGRyps3XTCbDvA=\nR:service_config.go\na:0:0:444\nZ:Q1dbl3lgG7NlbFgYq9YF5qkdbL8j8=\nR:service_config_test.go\na:0:0:444\nZ:Q1LeTpU+uYu8a/qI9Tpk02nHjYXzo=\nR:stream.go\na:0:0:444\nZ:Q1g2KdpqBMd7kPr0Gn3s0lJ1Rg6Z8=\nR:trace.go\na:0:0:444\nZ:Q1jTSxvhqQSF8DEQJ4UfvQI6PSk7Y=\nR:trace_test.go\na:0:0:444\nZ:Q1K194dBQJQX7Db6EvUGZ7BJCA2E4=\nR:version.go\na:0:0:444\nZ:Q1L7QDFxIA7Sjj+0YdarQLZi5Umqc=\nR:vet.sh\na:0:0:444\nZ:Q1v8I1oelCXUmuoP8Re+TMBRA7mH0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/.github\nM:0:0:555\nR:mergeable.yml\na:0:0:444\nZ:Q1XNJRrmBB+UOG7PANEW/42Y/jI9Q=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:bug.md\na:0:0:444\nZ:Q19k3E382WAARteaavZDc4q8GQMd4=\nR:feature.md\na:0:0:444\nZ:Q1PCGrwTU2QasZ71aLDJv00MZtWDU=\nR:question.md\na:0:0:444\nZ:Q1Vqja/FtM8BhmlgjKSaZ0ygmfYJg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/.github/workflows\nM:0:0:555\nR:codeql-analysis.yml\na:0:0:444\nZ:Q1/uRVqLRQpr+6mIWG9DZ0xZ/9RWQ=\nR:lock.yml\na:0:0:444\nZ:Q1x3RcNI+lWencxi1Uy1uDTSS7SMo=\nR:release.yml\na:0:0:444\nZ:Q1veA5VPfy3jgmusPYeq8Z9oo+21A=\nR:stale.yml\na:0:0:444\nZ:Q1lesJH5nOcusFT5v1pBtKvFqJRao=\nR:testing.yml\na:0:0:444\nZ:Q1YHfVVLjOi99Fy/3QZDGPzrFNWjU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/Documentation\nM:0:0:555\nR:benchmark.md\na:0:0:444\nZ:Q1JfSJsYDispKRKqrp0TTaA3wgmDg=\nR:compression.md\na:0:0:444\nZ:Q1rlpjun5gRMkH7EMTtsL9IuxR900=\nR:concurrency.md\na:0:0:444\nZ:Q1pUvMH6An/OxiBUb9u2Aqf2ATago=\nR:encoding.md\na:0:0:444\nZ:Q199Tw4+n+I7roSAJGA5a1gFPXq5A=\nR:grpc-auth-support.md\na:0:0:444\nZ:Q1aPrFAldcmPzCNY9mJtDVWsPUxr8=\nR:grpc-metadata.md\na:0:0:444\nZ:Q1AAwYLydXlnkfeemmab0un3xIV5I=\nR:keepalive.md\na:0:0:444\nZ:Q1pbcSmZEh/g9T9j4ZYiHISHMaS2w=\nR:log_levels.md\na:0:0:444\nZ:Q1U5f1/oVZEek4JfryJhGHpphk0ZI=\nR:proxy.md\na:0:0:444\nZ:Q1m57iXc3bfpo2h5PWa93Q3lvOz/U=\nR:rpc-errors.md\na:0:0:444\nZ:Q1s4xY3MqiKi2CpOOKx6F3cxwKmx8=\nR:server-reflection-tutorial.md\na:0:0:444\nZ:Q1Bgfrlh73z0AhO/ckY+wRYrp4cvo=\nR:versioning.md\na:0:0:444\nZ:Q16xvRQ5+YEuXmMvCteKbn1wqGPSs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/admin\nM:0:0:555\nR:admin.go\na:0:0:444\nZ:Q1E/yIEI3IyH+P4XrU8k9tVM2zSW4=\nR:admin_test.go\na:0:0:444\nZ:Q1YwrsBhQefUig+ZXNQmCdC7GeP4o=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/admin/test\nM:0:0:555\nR:admin_test.go\na:0:0:444\nZ:Q17zfbOgxAbAUoluOjR4oIPRtJn9Q=\nR:utils.go\na:0:0:444\nZ:Q1CjYQsJOswO+gd51SnkJrdrNRWVA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/attributes\nM:0:0:555\nR:attributes.go\na:0:0:444\nZ:Q1EtJ14xBbXIZj79rBBheOJ2RmE88=\nR:attributes_test.go\na:0:0:444\nZ:Q1euiYrXTxbPItfV50TBcmQJksxis=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/authz\nM:0:0:555\nR:grpc_authz_end2end_test.go\na:0:0:444\nZ:Q1VvxzEjgqPDpV0UdU93eZ9UDtp18=\nR:grpc_authz_server_interceptors.go\na:0:0:444\nZ:Q1fbMod0FT6Etu5LpLXXIenyQCiyY=\nR:grpc_authz_server_interceptors_test.go\na:0:0:444\nZ:Q11dsPTODLUiSuu2etiIVXyTj4RLE=\nR:rbac_translator.go\na:0:0:444\nZ:Q1TW3Dcx46tVvaRCZHbVHmr06pol8=\nR:rbac_translator_test.go\na:0:0:444\nZ:Q1bc/YDKUMfqEoK9AEYOXaRAY5JSA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/backoff\nM:0:0:555\nR:backoff.go\na:0:0:444\nZ:Q1KxlkgNplhvjzXeM5xdfkxrFLCXQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1fwmlxl7Sa0cLVYUGsvpgh7zxB4o=\nR:conn_state_evaluator.go\na:0:0:444\nZ:Q1L36RMCuUW4u7u0As9e05UWzm0po=\nR:conn_state_evaluator_test.go\na:0:0:444\nZ:Q1MZEYZ//fpYJ8eyXxBPT9XgDx09o=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/base\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1UU13Xl4kfXR7GgJwertjuqSxm28=\nR:balancer_test.go\na:0:0:444\nZ:Q1b95PbtJnNpPyDqGUaqPWDFPnJMw=\nR:base.go\na:0:0:444\nZ:Q1sD/icmMimL4S6M0XI26+yEm9D1k=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/grpclb\nM:0:0:555\nR:grpclb.go\na:0:0:444\nZ:Q1gd8UxMXovObcu9Q/BTDk1ZfrRoY=\nR:grpclb_config.go\na:0:0:444\nZ:Q1G6WPpyWPqCVjNFaFctWAyACOEZI=\nR:grpclb_config_test.go\na:0:0:444\nZ:Q165ESFEWzOxVCjdwFlE3jY6pmP54=\nR:grpclb_picker.go\na:0:0:444\nZ:Q1/5xVWYz/8LKBp1QY6udhHP1fSpo=\nR:grpclb_remote_balancer.go\na:0:0:444\nZ:Q1EYH0AB4wKe9s/h2TrI1ZVLGpLEg=\nR:grpclb_test.go\na:0:0:444\nZ:Q1z1OL75WqiE2kjJUvvuy9eCuY0R4=\nR:grpclb_util.go\na:0:0:444\nZ:Q1wqRe/7U/so1Ekl+vbAVx5bumkO8=\nR:grpclb_util_test.go\na:0:0:444\nZ:Q1lYklAmqQhnHtlV0XSmm5j9ExFFs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/grpclb/grpc_lb_v1\nM:0:0:555\nR:load_balancer.pb.go\na:0:0:444\nZ:Q1eMljR+v1m2FDieZ8sr2PCU9OaCM=\nR:load_balancer_grpc.pb.go\na:0:0:444\nZ:Q1lZ4FfqWDndx6Ai2OzuTB95DoqWw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/grpclb/state\nM:0:0:555\nR:state.go\na:0:0:444\nZ:Q13eJpNOcE0qODGjzkONb428v6yJ4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1jYWMu7970M9cq95iSpwzl/7S8iE=\nR:balancer_test.go\na:0:0:444\nZ:Q1RglxttdNSERaMQqGuEKz3hnXW04=\nR:cache.go\na:0:0:444\nZ:Q1kasx0CyYyWJZLdJO3KWkVYKzX7U=\nR:cache_test.go\na:0:0:444\nZ:Q1mvabyNhkpuN7RJQ2C9qkn8x4LjU=\nR:child_policy.go\na:0:0:444\nZ:Q1MBD/qVl66KTBUqDeTJPdKTjuSgM=\nR:config.go\na:0:0:444\nZ:Q1iBF7ccq9Oyt2eDGR7qUpzTHk8AU=\nR:config_test.go\na:0:0:444\nZ:Q1cy/0M2RQHIqfZ154xk9lOCp2fJc=\nR:control_channel.go\na:0:0:444\nZ:Q1K4zT3om6MErXPSmhcg+4Tvj/eFc=\nR:control_channel_test.go\na:0:0:444\nZ:Q1m09ykj19wduJZVr8I265fFmBmt0=\nR:helpers_test.go\na:0:0:444\nZ:Q184gCyR/SnSw+1Pv/ECuOC4oVito=\nR:picker.go\na:0:0:444\nZ:Q1m+ajEn+HBBQauqND6RGOXY5i4y4=\nR:picker_test.go\na:0:0:444\nZ:Q140aIy007tMk/4s6ApU+MFdJKPm4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls/internal\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls/internal/adaptive\nM:0:0:555\nR:adaptive.go\na:0:0:444\nZ:Q18dQ2i8swaLiG3emnU2+BKz58vzY=\nR:adaptive_test.go\na:0:0:444\nZ:Q1cGB1cAWoVwVXbHmtJunWYyESYrw=\nR:lookback.go\na:0:0:444\nZ:Q1XCuiFFArG5Q0fhmKOs0y2BS8B/k=\nR:lookback_test.go\na:0:0:444\nZ:Q1JE6fJ2EzlyVVla3if70qI4jw51Q=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls/internal/keys\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1VzwblPMvDps8ZpOqeT9FESAd+14=\nR:builder_test.go\na:0:0:444\nZ:Q1enEyFKXvhs4pUGAsMuFIYMqXHXg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls/internal/test\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/rls/internal/test/e2e\nM:0:0:555\nR:e2e.go\na:0:0:444\nZ:Q1Pn/SDd31FpzBqKrdGpNSyHswTIo=\nR:rls_child_policy.go\na:0:0:444\nZ:Q1BcQxdCaWNY4irbSsKPtupVdXYkk=\nR:rls_lb_config.go\na:0:0:444\nZ:Q1baXZNtxJQZLdQ3UJSEljc2yOk2A=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/roundrobin\nM:0:0:555\nR:roundrobin.go\na:0:0:444\nZ:Q1hkK2yQ0gKWGorKXiFs9nYMEGtk0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/weightedroundrobin\nM:0:0:555\nR:weightedroundrobin.go\na:0:0:444\nZ:Q1/XmbBVOWTyeIzGoA/wTU+6ob8EU=\nR:weightedroundrobin_test.go\na:0:0:444\nZ:Q1AJYTTYVzhVS6fxOWWLvPmu+/bZA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/weightedtarget\nM:0:0:555\nR:logging.go\na:0:0:444\nZ:Q1txcm226lbWK9okXlsQ5wMvI8WbE=\nR:weightedtarget.go\na:0:0:444\nZ:Q1KDTgzIXRLCaIQ/bEBPN2Rskqx2o=\nR:weightedtarget_config.go\na:0:0:444\nZ:Q1Iw3XEM7nqlf9fvNDy0A1njPeMvo=\nR:weightedtarget_config_test.go\na:0:0:444\nZ:Q1MeultC4BI8eu62KkSBlI2C5XD7w=\nR:weightedtarget_test.go\na:0:0:444\nZ:Q1aLXZHEElS//kMR0DWk/mWH6O9qw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/balancer/weightedtarget/weightedaggregator\nM:0:0:555\nR:aggregator.go\na:0:0:444\nZ:Q1mv+Im9A1Zt5bMeYahFFua2dCOkg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark\nM:0:0:555\nR:benchmark.go\na:0:0:444\nZ:Q1K2Myq//vVgDt3NMd6oP2IJlbM64=\nR:run_bench.sh\na:0:0:444\nZ:Q1no+5BUt6pQOIKiKVA2/oW69KWOo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/benchmain\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1mAf32yGoU84vmAXfiEpq+NYGlbQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/benchresult\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q15SOSNAHF55BYuCkr+cTfwwUciGk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/client\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q11Evqpp+l/HZbKcqLQeEIBVwVFkM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/flags\nM:0:0:555\nR:flags.go\na:0:0:444\nZ:Q1UDuq2TRMxzXWWlw3kPpaKWnpsM8=\nR:flags_test.go\na:0:0:444\nZ:Q1QTgl7L/l2+thkxubNloEjTEK4tk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/latency\nM:0:0:555\nR:latency.go\na:0:0:444\nZ:Q1YMytRtzYlfYaxd9fJTz3C7r70mE=\nR:latency_test.go\na:0:0:444\nZ:Q12gR4wsnlf+e2mDyhRND5YGFSYN4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/primitives\nM:0:0:555\nR:code_string_test.go\na:0:0:444\nZ:Q1mKwT0Sy/1CsOZRApiYgPUd9bYbE=\nR:context_test.go\na:0:0:444\nZ:Q1AjKnZE8yfcrjNxlCToMYzsml5zo=\nR:primitives_test.go\na:0:0:444\nZ:Q19lFNGVZzX7rsEBaW+/daGyvEBBQ=\nR:safe_config_selector_test.go\na:0:0:444\nZ:Q1R9NW1RFcw7TPAiBvAzXPIwZ7I+I=\nR:syncmap_test.go\na:0:0:444\nZ:Q1r9qEIoTQKDfCH/6GZDQM2iUMf3o=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/server\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1G6EiLrTFT7ct24GD/v+AJIYE240=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/stats\nM:0:0:555\nR:curve.go\na:0:0:444\nZ:Q1hiA2qexy/iu14c45gpfo5wTs4SU=\nR:histogram.go\na:0:0:444\nZ:Q1DDgoilxJJms5BHj1TbgfkS41y5w=\nR:stats.go\na:0:0:444\nZ:Q1+ozIwafFS8DJd2DKO1G+zivQ/WA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/benchmark/worker\nM:0:0:555\nR:benchmark_client.go\na:0:0:444\nZ:Q1nG/42/M2uVtIe6ycV+2dDtcCPhM=\nR:benchmark_server.go\na:0:0:444\nZ:Q1qn+nwdeuemNuM5Vol/FfpdShrh8=\nR:main.go\na:0:0:444\nZ:Q1aVRZsD4oi/fwZyJ0pmllwcTLey4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/binarylog\nM:0:0:555\nR:binarylog_end2end_test.go\na:0:0:444\nZ:Q1f16gjxeNaB77p6zS2Z6nvDhHeTs=\nR:sink.go\na:0:0:444\nZ:Q1jfTTAp+laKXgkj2H95NReJq4GOU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/binarylog/grpc_binarylog_v1\nM:0:0:555\nR:binarylog.pb.go\na:0:0:444\nZ:Q1iDgl4wHh8a4397kDKENEmNDrrgw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/channelz\nM:0:0:555\nR:channelz.go\na:0:0:444\nZ:Q1WXmMONmgnuEtDO5yN3TpB3I4ezY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/channelz/grpc_channelz_v1\nM:0:0:555\nR:channelz.pb.go\na:0:0:444\nZ:Q1iWckPhftpgZxgWIVgiHiROnHBzM=\nR:channelz_grpc.pb.go\na:0:0:444\nZ:Q1azOBZVML2HEzsEsylLb98UgxO+s=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/channelz/service\nM:0:0:555\nR:func_linux.go\na:0:0:444\nZ:Q1FORhzs9hUcPKn9Kz3Tfr67si+zc=\nR:func_nonlinux.go\na:0:0:444\nZ:Q15VgF2lMPR36r9yMZ9XTXaz+osvI=\nR:service.go\na:0:0:444\nZ:Q1goFa6ax8B39mcHK9H+aRUa+btj8=\nR:service_sktopt_test.go\na:0:0:444\nZ:Q1ohxlCJEXvkB+Cq7jDPJzCrfSXM4=\nR:service_test.go\na:0:0:444\nZ:Q16Kvu3BwMlJQwAaHfCXnvzZpYu9o=\nR:util_sktopt_386_test.go\na:0:0:444\nZ:Q1C4zjOs6fK1bUv+f7A8UdIzTutao=\nR:util_sktopt_amd64_test.go\na:0:0:444\nZ:Q121VLqjZPlxNP9i583R4VVntKFOs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/codes\nM:0:0:555\nR:code_string.go\na:0:0:444\nZ:Q1lKEXR7NcZ3svKt9hL7vQqf/wUp8=\nR:codes.go\na:0:0:444\nZ:Q1UFQvcB0MxdVR/K+Q7XcyOh4kMZA=\nR:codes_test.go\na:0:0:444\nZ:Q1jcNgFYC974mCwfPg173+5FaPYo0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/connectivity\nM:0:0:555\nR:connectivity.go\na:0:0:444\nZ:Q1UAej0KyI+vy+t+sLhOxr7bCwt5I=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials\nM:0:0:555\nR:credentials.go\na:0:0:444\nZ:Q1eP1pMfDwBOOvBkDPoKbWHd9yiMU=\nR:credentials_test.go\na:0:0:444\nZ:Q1Fn8hlIBRuDIFoav0k4HMQW0hOMU=\nR:tls.go\na:0:0:444\nZ:Q1eRiqTSi0EesO9+V1T51RhLoOLVc=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts\nM:0:0:555\nR:alts.go\na:0:0:444\nZ:Q17b6r/U3b2KpB9acCJ9n7HR4LbxY=\nR:alts_test.go\na:0:0:444\nZ:Q11PfOJVUF/+xxXXN30O+fwbRAsJI=\nR:utils.go\na:0:0:444\nZ:Q1e3nPwSAyw1qQaByZXDHBlawtX7k=\nR:utils_test.go\na:0:0:444\nZ:Q1/KSgUKgMfGhQhApo4VWCCO2fSJw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q1PeUlpRoxJVeAhk0Sq1K5Ig/MmNE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/authinfo\nM:0:0:555\nR:authinfo.go\na:0:0:444\nZ:Q1ZgfK6BhFExFp/QWiQBQwQElCjkk=\nR:authinfo_test.go\na:0:0:444\nZ:Q1+9psRmz6qHIcJO/FkRa59Pz9Qjw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/conn\nM:0:0:555\nR:aeadrekey.go\na:0:0:444\nZ:Q1L494nuX1hY3aDayNwBOxqBQNzAA=\nR:aeadrekey_test.go\na:0:0:444\nZ:Q1UzvcIkyE25YSa1OYIs390opl4Sc=\nR:aes128gcm.go\na:0:0:444\nZ:Q1lcGv9awHbolioLUz/IPsRWeNmQ4=\nR:aes128gcm_test.go\na:0:0:444\nZ:Q1HV9Ir4LgXng98xRYHC0GUjPc9Wk=\nR:aes128gcmrekey.go\na:0:0:444\nZ:Q16DWBqCDhmzXmNeXCjsouB6MezfU=\nR:aes128gcmrekey_test.go\na:0:0:444\nZ:Q1PLMxfpz17JUif6fD6IATOkStzZY=\nR:common.go\na:0:0:444\nZ:Q1yylA2RNpVTJaXzHJLoR3/CSyEDI=\nR:counter.go\na:0:0:444\nZ:Q1p6iIpU6K4HnuwcyJtFsdeIVd8Ss=\nR:counter_test.go\na:0:0:444\nZ:Q1mAxhV4cq+//CWSqZ99pApFo+08Q=\nR:record.go\na:0:0:444\nZ:Q1j+vLH4TW9MTg7sq8rPom/6WwN50=\nR:record_test.go\na:0:0:444\nZ:Q1enQqahvldvVQcm/QNfBUrHaZhtA=\nR:utils.go\na:0:0:444\nZ:Q1AXXUaPiExGRH1AOPvYVLtoniFv8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/handshaker\nM:0:0:555\nR:handshaker.go\na:0:0:444\nZ:Q1p50s42LBUR+ta7WzKuLu9KPiMfg=\nR:handshaker_test.go\na:0:0:444\nZ:Q1ERSS6zBsWO1RSbecuOGomcnHXbY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/handshaker/service\nM:0:0:555\nR:service.go\na:0:0:444\nZ:Q1e9fAli8+y9vbqh1JcmHwxNc3p7A=\nR:service_test.go\na:0:0:444\nZ:Q1sgGWDxzgw72eaXRe0khG2Yl+D5M=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/proto\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/proto/grpc_gcp\nM:0:0:555\nR:altscontext.pb.go\na:0:0:444\nZ:Q1Wqv+EBlTu+S6CKRJ0mOwVheeXfU=\nR:handshaker.pb.go\na:0:0:444\nZ:Q17Ps06Z/5X2MwaqpsOp/q/WlR9gI=\nR:handshaker_grpc.pb.go\na:0:0:444\nZ:Q1n2rbJ9qrfy91LylcWG+q6RDaDyo=\nR:transport_security_common.pb.go\na:0:0:444\nZ:Q1J5q28jXKNGuasBYSbEHmm8wKhNk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/alts/internal/testutil\nM:0:0:555\nR:testutil.go\na:0:0:444\nZ:Q1eIIzo+C7WF0nYOjCyjFgYqMbWb0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/google\nM:0:0:555\nR:google.go\na:0:0:444\nZ:Q1vlNgFOApX7a8LqF5aj03te4vhsM=\nR:google_test.go\na:0:0:444\nZ:Q1y43voBfF8QHYkPktFPIu6nXrSSc=\nR:xds.go\na:0:0:444\nZ:Q1u+WdiAuwWDF1yocUMkygzV/WbXo=\nR:xds_test.go\na:0:0:444\nZ:Q1eI2g7Go5fh9am6UkvVG6FzuaziQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/insecure\nM:0:0:555\nR:insecure.go\na:0:0:444\nZ:Q1OZR78WHlh3xSZ6cSogYB6S2l9Eo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/local\nM:0:0:555\nR:local.go\na:0:0:444\nZ:Q1fXvV3sJONJ5XvRnDl6n1Iy3GlH4=\nR:local_test.go\na:0:0:444\nZ:Q14XHK+daenqpJV+SzgsrfBlUTGLs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/oauth\nM:0:0:555\nR:oauth.go\na:0:0:444\nZ:Q1GGEPLccMW6CVey3dKwSHgstNrc4=\nR:oauth_test.go\na:0:0:444\nZ:Q1JVT9JpUnN+bgKLZ9d/OKEYMg+4U=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/sts\nM:0:0:555\nR:sts.go\na:0:0:444\nZ:Q1Lh0swOqQxzmyaYhYZboggPrgHl8=\nR:sts_test.go\na:0:0:444\nZ:Q12KQQoe+YvZUHUrqgkDMNlVH+W70=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/tls\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/tls/certprovider\nM:0:0:555\nR:distributor.go\na:0:0:444\nZ:Q1exc7xDh6H6t3NaPzqoJWVLPnTbg=\nR:distributor_test.go\na:0:0:444\nZ:Q1/kU1ONuhwoSCz4R07j/LIV94XWc=\nR:provider.go\na:0:0:444\nZ:Q1sDTOw4yyCKjSZv0AB5al5Zlq12Q=\nR:store.go\na:0:0:444\nZ:Q1MlO7VyY1zVivDnleXRrcqsfUqnE=\nR:store_test.go\na:0:0:444\nZ:Q1tt2wR7vEHacYXnPJpjuHb7TovNU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/tls/certprovider/pemfile\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1WMreeSNkwMDYlOcoAD0BSDbDcMo=\nR:builder_test.go\na:0:0:444\nZ:Q1N/Qgflj5O5bpaSWF6NTG7iTDk0I=\nR:watcher.go\na:0:0:444\nZ:Q1915JXQ6LvZUQ8N4DuiKF3kCo58A=\nR:watcher_test.go\na:0:0:444\nZ:Q1aN5IhAQbTlCJpzfRzIniPv4++l0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/credentials/xds\nM:0:0:555\nR:xds.go\na:0:0:444\nZ:Q1av635DQ2fXFeW4kR4wD2DoVRRFE=\nR:xds_client_test.go\na:0:0:444\nZ:Q1nSvMQvdXtJgvMzW10D7qfkIdaVM=\nR:xds_server_test.go\na:0:0:444\nZ:Q11B+g6vMqcGstn8tzfjSQVPmExiw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/encoding\nM:0:0:555\nR:encoding.go\na:0:0:444\nZ:Q13HTDLSPIv5fNHCqezXbUKlhO5FA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/encoding/gzip\nM:0:0:555\nR:gzip.go\na:0:0:444\nZ:Q1922/Rwwd3GxFaSShooLgv7QIJBs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/encoding/proto\nM:0:0:555\nR:proto.go\na:0:0:444\nZ:Q1C8drxmPqjnZzGrs+iOZyfODDvfg=\nR:proto_benchmark_test.go\na:0:0:444\nZ:Q1Idpnbk+igBKNtudDOcuJXQpoM9Y=\nR:proto_test.go\na:0:0:444\nZ:Q11tPlcI9YPxE3NBfJvR5gGR5EaOg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/grpclog\nM:0:0:555\nR:component.go\na:0:0:444\nZ:Q1iweQtyqUtfEVfKdMga5rOxkj+ig=\nR:grpclog.go\na:0:0:444\nZ:Q1PRzSrWqR09mAy04UsdQJfpNdzg4=\nR:logger.go\na:0:0:444\nZ:Q1gc8NCU+UoSHMaBhxj2mJYIe2M8c=\nR:loggerv2.go\na:0:0:444\nZ:Q1dfkrvLqyeP8GguNi+y4U2Ppvmxc=\nR:loggerv2_test.go\na:0:0:444\nZ:Q1w/Jh/KtwIO3NHdDeJaLXA7P9L4s=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/grpclog/glogger\nM:0:0:555\nR:glogger.go\na:0:0:444\nZ:Q1PF2j/O28ZIh9QVWNKPsth/PFjg4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/health\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1W7vaAJCxVQI1bbKA/TwPhYN1Xyk=\nR:client_test.go\na:0:0:444\nZ:Q15XCaGSPTnXSz0xOJ4zzd5lwunBw=\nR:logging.go\na:0:0:444\nZ:Q1jsMmk0nedcfCDpVqFzAdeozcyw0=\nR:server.go\na:0:0:444\nZ:Q1I7aysUfyMNMyRXPsyEePPMYCrcw=\nR:server_internal_test.go\na:0:0:444\nZ:Q13vx7YCf+T+IwFqDD4giEsR+bH8Y=\nR:server_test.go\na:0:0:444\nZ:Q1CEo8Msqf/FwOQ/fai5WopY5dSVo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/health/grpc_health_v1\nM:0:0:555\nR:health.pb.go\na:0:0:444\nZ:Q10pQojjTG4ggV4uizu1irm9VwAjs=\nR:health_grpc.pb.go\na:0:0:444\nZ:Q1nnc/AhYmWAkb1dYDU2tMD8ub8Y0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1H8PuxNsU79zhGaHXe+CQcriuidc=\nR:xds_handshake_cluster.go\na:0:0:444\nZ:Q1ojYs5o9fhIkdRmGixuqDsfitFWs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/admin\nM:0:0:555\nR:admin.go\na:0:0:444\nZ:Q1BT0623xeOShM5qpjICG14XihDqQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/backoff\nM:0:0:555\nR:backoff.go\na:0:0:444\nZ:Q1MHMGfJCz2VOXWTbWOIsn3+s1jfQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/balancer\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/balancer/gracefulswitch\nM:0:0:555\nR:gracefulswitch.go\na:0:0:444\nZ:Q1/8toQY5pCsaCPH+EUmo0sD/z+Sg=\nR:gracefulswitch_test.go\na:0:0:444\nZ:Q1ohP/V9FeqAle/kpt49iN1bfAnFM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/balancer/stub\nM:0:0:555\nR:stub.go\na:0:0:444\nZ:Q1uXh2hoBOCE65eREChHUYjEmr+TI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/balancergroup\nM:0:0:555\nR:balancergroup.go\na:0:0:444\nZ:Q1rWcME7aysL3xllyGXvvxu0SvEcU=\nR:balancergroup_test.go\na:0:0:444\nZ:Q1i5ohshLWlykS6CGtsez2EQK7ZWw=\nR:balancerstateaggregator.go\na:0:0:444\nZ:Q1H5CUWwThrzhL11mW+HZcoP3dABk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/balancerload\nM:0:0:555\nR:load.go\na:0:0:444\nZ:Q16j8E8UHAdl05qKoQooimsUBWrPA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/binarylog\nM:0:0:555\nR:binarylog.go\na:0:0:444\nZ:Q1DU+n/Wa0qkzKdOAhqLoLPbprUnc=\nR:binarylog_test.go\na:0:0:444\nZ:Q19qoFfiRdlkqgvI1CURf1i/QYaws=\nR:binarylog_testutil.go\na:0:0:444\nZ:Q1qYKSVHXepclUPII9+c5GWc/ufXE=\nR:env_config.go\na:0:0:444\nZ:Q1QQi2JTXvf3b1oFrYcn0EA3rRqdU=\nR:env_config_test.go\na:0:0:444\nZ:Q1JSbFjoNlVrVkeTydWsV6FF3P+eU=\nR:method_logger.go\na:0:0:444\nZ:Q1b3QWiAj//zKiVCwK5zJQv8bVUik=\nR:method_logger_test.go\na:0:0:444\nZ:Q1G5tlpBpK25/vZqnR5kImagJ5l+k=\nR:regexp_test.go\na:0:0:444\nZ:Q1Aq1ldW6Zz5Sa6YyLexXAgV6AZD0=\nR:sink.go\na:0:0:444\nZ:Q1FKNzSfpINppvMZ9fWWU7DFA9BbQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/buffer\nM:0:0:555\nR:unbounded.go\na:0:0:444\nZ:Q1c+6P8mpARbpmsG1BMXSMl/L+Ku8=\nR:unbounded_test.go\na:0:0:444\nZ:Q1HS++U0Zio57qwnvvrxRxTFoBzio=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/cache\nM:0:0:555\nR:timeoutCache.go\na:0:0:444\nZ:Q1vT4KOWkBFNt3Y1HhMwCYUReoR+0=\nR:timeoutCache_test.go\na:0:0:444\nZ:Q1NzwBikR++ju3P9ZIG+4ooymyAFI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/channelz\nM:0:0:555\nR:funcs.go\na:0:0:444\nZ:Q1z1cy1z6yUCgyVW9KSfAxbnrA08o=\nR:id.go\na:0:0:444\nZ:Q1gOzulBxWCXp/82eYefFYsfHVLNI=\nR:logging.go\na:0:0:444\nZ:Q1hjrNirGMfCAm4lkVTptl7l6UwFI=\nR:types.go\na:0:0:444\nZ:Q1ErK9ZhRv/QH829mtOkkI6clRqu8=\nR:types_linux.go\na:0:0:444\nZ:Q103wlA36gU8ZyHSwLwY4Eo4PMmbg=\nR:types_nonlinux.go\na:0:0:444\nZ:Q1NmufZWBFYRTOSl0+YAZPNEKCYnc=\nR:util_linux.go\na:0:0:444\nZ:Q1pIMgsdU3S6cpb5fvdUKK5Hrdsow=\nR:util_nonlinux.go\na:0:0:444\nZ:Q1NRW5SNCGCjzSuWEIQkKQnu33HvI=\nR:util_test.go\na:0:0:444\nZ:Q1HkMeIMkLr7qsZ7Ahs9YF6mT8zTQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/credentials\nM:0:0:555\nR:credentials.go\na:0:0:444\nZ:Q1clegJgv4B7fDZ5gZL1YuJ71UIMQ=\nR:spiffe.go\na:0:0:444\nZ:Q1ofkmyMS0yMZi0keVXxj9Z/eCqnQ=\nR:spiffe_test.go\na:0:0:444\nZ:Q1wzI2b+IvoASC7EFGD/Ew0iRVuBk=\nR:syscallconn.go\na:0:0:444\nZ:Q17w0WK/+BTG1P61quxRHe+OtZZzE=\nR:syscallconn_test.go\na:0:0:444\nZ:Q1UP39IKOsVNxiPacnT0NVFb35PiQ=\nR:util.go\na:0:0:444\nZ:Q1xPxJRy1qJ5Mcrz0JeDGgFjG+iUs=\nR:util_test.go\na:0:0:444\nZ:Q1GsDKYByt1Be/YO2t6TD/9uJCE2I=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/credentials/xds\nM:0:0:555\nR:handshake_info.go\na:0:0:444\nZ:Q1mssIeDB9RvovD34gZq2vQQdzf3g=\nR:handshake_info_test.go\na:0:0:444\nZ:Q1ojqkzie3DvY7XxCnGH+HP3vnzn8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/envconfig\nM:0:0:555\nR:envconfig.go\na:0:0:444\nZ:Q1wBDnhgXY811Lsl9jUNt89WsZLpY=\nR:xds.go\na:0:0:444\nZ:Q1HTx6IS1rFxWMnA6v/dTy2wUcirg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/googlecloud\nM:0:0:555\nR:googlecloud.go\na:0:0:444\nZ:Q1eWARPlSIG86Hk/YbvxNWee82BYY=\nR:googlecloud_test.go\na:0:0:444\nZ:Q1eQUBieap96+QxmME5cH+bHZssa0=\nR:manufacturer.go\na:0:0:444\nZ:Q1WOsuS4banODqZ6wZaIrrkwQkBqw=\nR:manufacturer_linux.go\na:0:0:444\nZ:Q1/m4U42su1Nd4/KpjUKtD7iknqOc=\nR:manufacturer_windows.go\na:0:0:444\nZ:Q1bmYq1j9qPhl5fI5xSKfXOy2eOXs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/grpclog\nM:0:0:555\nR:grpclog.go\na:0:0:444\nZ:Q1X+4Irncibn3No5VxxMaJeIXqB6M=\nR:prefixLogger.go\na:0:0:444\nZ:Q1CxQzFwPrYLrJtXYYX+yBSVaUtHs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/grpcrand\nM:0:0:555\nR:grpcrand.go\na:0:0:444\nZ:Q1smJS2MbKs7nKhtRZV2xxvYFjsAg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/grpcsync\nM:0:0:555\nR:event.go\na:0:0:444\nZ:Q1ImKbZ/1XWAEaw1PPj7xom1Quq2s=\nR:event_test.go\na:0:0:444\nZ:Q1WqUaS5ikhxp0FFo3eqZfbw57G5w=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/grpctest\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1Z1k1OKsktb/9WfL3XGKeUo/twHs=\nR:grpctest.go\na:0:0:444\nZ:Q1gu9ZgIfkRWy+n8hlC1268Geoyr0=\nR:grpctest_test.go\na:0:0:444\nZ:Q1QM2T1pOjRrqg5yZJjXVoT3BMGNI=\nR:tlogger.go\na:0:0:444\nZ:Q1YXjpOqY33XSZ5NxaDvaXGMqAotM=\nR:tlogger_test.go\na:0:0:444\nZ:Q1tesRzHJQ2VHPbGGzyZyDC0t2wNM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/grpcutil\nM:0:0:555\nR:encode_duration.go\na:0:0:444\nZ:Q1rRtq5HNU5+lVz0C6Q6xHRmJjbUo=\nR:encode_duration_test.go\na:0:0:444\nZ:Q1EjOWVL41n9F90qe6HXhirzWAyss=\nR:grpcutil.go\na:0:0:444\nZ:Q1cFGqUlAK3+qg//8vzE8watZz5rs=\nR:metadata.go\na:0:0:444\nZ:Q1TqXUCs498ZMi1BuC6/KFY2lCk6k=\nR:method.go\na:0:0:444\nZ:Q19mXAcY+tHMUwcQ1UtITfH6meSdA=\nR:method_test.go\na:0:0:444\nZ:Q1XWcFFCYSMU86Fum/WZHqCwIHeCw=\nR:regex.go\na:0:0:444\nZ:Q1eQsMk5S0tNk50NSTaEIxyDzPHnc=\nR:regex_test.go\na:0:0:444\nZ:Q1HqGXy0qe/nGDuZDLUWnc9ZHV4wg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/hierarchy\nM:0:0:555\nR:hierarchy.go\na:0:0:444\nZ:Q1m3xd63krPeW5LNOfUUOQjCqd1Q0=\nR:hierarchy_test.go\na:0:0:444\nZ:Q12MyvvdyyJAF62pUmOvPNjPgKidg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/leakcheck\nM:0:0:555\nR:leakcheck.go\na:0:0:444\nZ:Q13EQaD0QSMSLgAmdMCfGGGQOxkIc=\nR:leakcheck_test.go\na:0:0:444\nZ:Q1bUfiFY+0ZFexm7xAgNO6shqow40=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/metadata\nM:0:0:555\nR:metadata.go\na:0:0:444\nZ:Q11SQbjMefTGk7PZmk8oi5b8ZKg/8=\nR:metadata_test.go\na:0:0:444\nZ:Q1Srxyt2dynEhn3M3Y9MIBViob0Uw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/pretty\nM:0:0:555\nR:pretty.go\na:0:0:444\nZ:Q1jEZTzGluvxtlch/foagk3HWU7wE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/profiling\nM:0:0:555\nR:goid_modified.go\na:0:0:444\nZ:Q1+Ksw7I/paiVdsDpTvJDPDa2hTJQ=\nR:goid_regular.go\na:0:0:444\nZ:Q11f0pEmuuuIvqAC1dNevt+rbANes=\nR:profiling.go\na:0:0:444\nZ:Q1R5FG7S55HJFLybus7KJK8nnXzAA=\nR:profiling_test.go\na:0:0:444\nZ:Q1XjwtXLvksWOtkgQ7joiF5+SAn/s=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/profiling/buffer\nM:0:0:555\nR:buffer.go\na:0:0:444\nZ:Q1y7uMM9p1X3ezYTrWZ3Y0YCXajmo=\nR:buffer_test.go\na:0:0:444\nZ:Q1Yp17X0OzbM9rWr8rUOJEPLdNqlo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/proto\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/proto/grpc_lookup_v1\nM:0:0:555\nR:rls.pb.go\na:0:0:444\nZ:Q1nVToKvSFUGYHeKcgrwl0FvbsHR0=\nR:rls_config.pb.go\na:0:0:444\nZ:Q1WbfV/NSsbjv2b7qBM1IAFeWACpA=\nR:rls_grpc.pb.go\na:0:0:444\nZ:Q16AReei1ODzX6rL+p5K33yMxJNa0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/resolver\nM:0:0:555\nR:config_selector.go\na:0:0:444\nZ:Q1s2u+Rc4OdjXEbylPJb+WFXZM7tE=\nR:config_selector_test.go\na:0:0:444\nZ:Q10pULBQAGr5TQPqtwaRmL7D9TLOw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/resolver/dns\nM:0:0:555\nR:dns_resolver.go\na:0:0:444\nZ:Q1D4MM/48eWmmsNJFDnY1KMNuJzYU=\nR:dns_resolver_test.go\na:0:0:444\nZ:Q1quD8zoGmXXFINbB3xH6yqflRPeg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/resolver/passthrough\nM:0:0:555\nR:passthrough.go\na:0:0:444\nZ:Q1wMmdxtEYNc+S2f/b6oK/bB87Xb4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/resolver/unix\nM:0:0:555\nR:unix.go\na:0:0:444\nZ:Q1QvwFNWVbpBrHqh/jJJ7Nu7EA/aA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/serviceconfig\nM:0:0:555\nR:serviceconfig.go\na:0:0:444\nZ:Q16vI+x30GBHUT+08eoUjbpAgadpk=\nR:serviceconfig_test.go\na:0:0:444\nZ:Q1yXrsIAd4sJYfel/weHQ3Nf5EfRM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/status\nM:0:0:555\nR:status.go\na:0:0:444\nZ:Q1GIAK/RX2FC6do37OrZi+uPkaVrg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/stubserver\nM:0:0:555\nR:stubserver.go\na:0:0:444\nZ:Q1VPNq7Qk4L/DJULTfkDA1p5VomCs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/syscall\nM:0:0:555\nR:syscall_linux.go\na:0:0:444\nZ:Q1XTWuoUo0IV2mUX6Sc6k5+89EjxM=\nR:syscall_nonlinux.go\na:0:0:444\nZ:Q1CXHGUCw0QM+kQsOLfl9HG+oOFtg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1g/EysWns6FDY1IPOi2ql6PMH9Qs=\nR:channel.go\na:0:0:444\nZ:Q1Mjbx8kAqa1F0AjXA/D//Dfu31ik=\nR:http_client.go\na:0:0:444\nZ:Q1z3A+FQFr2RdSPEDwaLzIoe/KoDk=\nR:local_listener.go\na:0:0:444\nZ:Q123W+Yke4AWy3XuFbgw2z0fba3Aw=\nR:marshal_any.go\na:0:0:444\nZ:Q1clA7Elem1ZRTrLagdqUpgIQQp6k=\nR:pipe_listener.go\na:0:0:444\nZ:Q15kTjoMjawbKNPFL4uBQEs1JDP1c=\nR:pipe_listener_test.go\na:0:0:444\nZ:Q1YsCrcUvm0IeT13HVPlt9tXrbyac=\nR:restartable_listener.go\na:0:0:444\nZ:Q1TuFDINNvf5Zt+oh9+pkIaixPYtM=\nR:status_equal.go\na:0:0:444\nZ:Q18m5cSUTMSPn6RDZNOLAQnMeqyVQ=\nR:status_equal_test.go\na:0:0:444\nZ:Q1UIkM9bMBLvXkyiX+8n/cqtZEoZI=\nR:wrappers.go\na:0:0:444\nZ:Q1kUNpPi3CKt6x7PUd2Zis4HxVlJc=\nR:wrr.go\na:0:0:444\nZ:Q1u1Oe8Zpn3b7nZ+w/2+L1rdRXJM8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils/fakegrpclb\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1AfQAMaXntCPBFnohSgX0wWQW2fk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils/rls\nM:0:0:555\nR:fake_rls_server.go\na:0:0:444\nZ:Q1nfIdpBrHThp9RTJWRXtmv515QQc=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils/roundrobin\nM:0:0:555\nR:roundrobin.go\na:0:0:444\nZ:Q1acQ/+VDvpox0Vi6yIQt5ro8ioZw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils/xds\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/testutils/xds/e2e\nM:0:0:555\nR:bootstrap.go\na:0:0:444\nZ:Q1CrZQeWiLUv+7jEhhr7H3ihICJfA=\nR:clientresources.go\na:0:0:444\nZ:Q1QxMEtcXwIua3W7gy8bMFQUB1BZ0=\nR:logging.go\na:0:0:444\nZ:Q1+/fL55nA56lyGDUsTL6RHFxQi1o=\nR:server.go\na:0:0:444\nZ:Q1P6ofPXJ4r9mfxQ7IIN+1I1JgMDM=\nR:setup_certs.go\na:0:0:444\nZ:Q1uRNoHzH6pH7ws5aNm3JxL2bcR2Y=\nR:setup_management_server.go\na:0:0:444\nZ:Q1JN8T1oJTwMZDRcV06Qh2AQIoodU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/transport\nM:0:0:555\nR:bdp_estimator.go\na:0:0:444\nZ:Q1NUueUouo3FKhzKccRxEBWLCUKCU=\nR:controlbuf.go\na:0:0:444\nZ:Q1smp/saulQAxFZauA70JjGWEb1N0=\nR:defaults.go\na:0:0:444\nZ:Q1CEQFigyp00Nf3cHW6pLbm+oC6lY=\nR:flowcontrol.go\na:0:0:444\nZ:Q1t0SYsk9pSTKhnUTP4IsPV6KAc70=\nR:handler_server.go\na:0:0:444\nZ:Q12dWU2r9CYE9rKibwBeAhu1Dafj8=\nR:handler_server_test.go\na:0:0:444\nZ:Q1aMCIhF2xKAkVBEE5O+oiZtkhCFM=\nR:http2_client.go\na:0:0:444\nZ:Q1CbYnwO/3undQQwiu33hVHGCzJlU=\nR:http2_server.go\na:0:0:444\nZ:Q1TLZPXve9Xl71tvVs7ByC7nX3Ex0=\nR:http_util.go\na:0:0:444\nZ:Q1JkE+qLAydJiKu4sMh54R1uCNLvQ=\nR:http_util_test.go\na:0:0:444\nZ:Q1YCFbHRirwI9UqPmSV3kOATiy3gE=\nR:keepalive_test.go\na:0:0:444\nZ:Q1/hTp4Km0bQBQoiZLIqTj5KaOn6M=\nR:proxy.go\na:0:0:444\nZ:Q1fYTgS9tzFQfQhHYKEJl2WpRDQ1I=\nR:proxy_test.go\na:0:0:444\nZ:Q1+dXy3OXVsL7D61fx0Q9teMCd8TU=\nR:transport.go\na:0:0:444\nZ:Q1yyizdX4kGxxBHfKQyjGl1eqOTkU=\nR:transport_test.go\na:0:0:444\nZ:Q1LWOUWU6FqcET1j8Pxwt9jnud4l8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/transport/networktype\nM:0:0:555\nR:networktype.go\na:0:0:444\nZ:Q1mmRB2tUWZyhGBvwhJP5GP7FWEAM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/wrr\nM:0:0:555\nR:edf.go\na:0:0:444\nZ:Q1iMWtFjVo2wZb3+ieGwVacecvK2U=\nR:edf_test.go\na:0:0:444\nZ:Q1Pq0OFfLDW3clD0qLGSV4bcBVYfc=\nR:random.go\na:0:0:444\nZ:Q1bX/v/gfVKLDwMzb0BjCxjm0Lqdw=\nR:wrr.go\na:0:0:444\nZ:Q18r99zlHwlsuqP/ui1v7fpyzLVvA=\nR:wrr_test.go\na:0:0:444\nZ:Q1koL1fVgMo8M3zhtBTDPgCu/jGNY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/xds\nM:0:0:555\nR:bootstrap.go\na:0:0:444\nZ:Q1Z2p9pFarVs0p9Qr9MfmlWhZozHE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/xds/matcher\nM:0:0:555\nR:matcher_header.go\na:0:0:444\nZ:Q1BswhDAL82rDTAVLSbWapVh6sY3I=\nR:matcher_header_test.go\na:0:0:444\nZ:Q18fdP8sxQuJsNxJqpL9tCS6wj0l4=\nR:string_matcher.go\na:0:0:444\nZ:Q1Fo967JvqA2jKqCsKPgZNQu1KTnM=\nR:string_matcher_test.go\na:0:0:444\nZ:Q1ftPC4yUvlQtGdWK2FeydohGvHe8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/internal/xds/rbac\nM:0:0:555\nR:matchers.go\na:0:0:444\nZ:Q1SsS00VvgxLO+qnLUaG+8U3R8O7U=\nR:rbac_engine.go\na:0:0:444\nZ:Q1XEBuKjbg2XQtPQx6x+yOy386Q+Q=\nR:rbac_engine_test.go\na:0:0:444\nZ:Q1l7aGXHKsAag7GBAp+XwJpWNM6vU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop\nM:0:0:555\nR:interop_test.sh\na:0:0:444\nZ:Q1RB3JuJFHpNNkb8fCihigF4lzP54=\nR:test_utils.go\na:0:0:444\nZ:Q1D2sF/CG4nB4inJPWPHPEIzQf1ew=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/alts\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/alts/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1C7OlDHuIx17/ubbb9gA2zyW9Ulw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/alts/server\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1WuHQXVUwecsERRBioyzehBH0Gp8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/client\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q16yraaeKbzrJgYktA4d1JnC7hOto=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/fake_grpclb\nM:0:0:555\nR:fake_grpclb.go\na:0:0:444\nZ:Q1uvfugkjp4uouyyPV+YeMJY7r1P4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/grpc_testing\nM:0:0:555\nR:benchmark_service.pb.go\na:0:0:444\nZ:Q1uDMgIrPG+G5ynZhDmacAGIjAKyY=\nR:benchmark_service_grpc.pb.go\na:0:0:444\nZ:Q1YuFaFtBNGD6ND+zZnXKUYGkSuMY=\nR:control.pb.go\na:0:0:444\nZ:Q1KxtoauJRX3Pc2wv1TYMxSQFIZoQ=\nR:empty.pb.go\na:0:0:444\nZ:Q1HHcW3/VcFuMtVf8U86ffDoZd39E=\nR:messages.pb.go\na:0:0:444\nZ:Q1azwbG+enHnUsFTnDdNnEE+3Clhw=\nR:payloads.pb.go\na:0:0:444\nZ:Q1cGE4lHg9UxomNm5NlIbHfjEgNuk=\nR:report_qps_scenario_service.pb.go\na:0:0:444\nZ:Q1UmMen2/PGFL7prH9oru+tOGOEEs=\nR:report_qps_scenario_service_grpc.pb.go\na:0:0:444\nZ:Q1dOTNGXIb6FF7peU+8O8DKAOLrW8=\nR:stats.pb.go\na:0:0:444\nZ:Q1s4M01zTfDkmSWD+Bp+DRONlMSsE=\nR:test.pb.go\na:0:0:444\nZ:Q1sK3q5VvSmS0k2H01O/YOInqB1v4=\nR:test_grpc.pb.go\na:0:0:444\nZ:Q12LBxerTKN2hzo80aJDS/2KBsyFU=\nR:worker_service.pb.go\na:0:0:444\nZ:Q15+52g0ErMuze4F8XXPpq3PqJ8GQ=\nR:worker_service_grpc.pb.go\na:0:0:444\nZ:Q1+H3spPBbPjSnZz7+iRKcpPGOono=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/grpc_testing/core\nM:0:0:555\nR:stats.pb.go\na:0:0:444\nZ:Q1eHNCx1GCJnma0Ym44L/YUmm2h54=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/grpclb_fallback\nM:0:0:555\nR:client_linux.go\na:0:0:444\nZ:Q1USwdDOYYnPTPcVYCnFYL9KdL+pk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/http2\nM:0:0:555\nR:negative_http2_client.go\na:0:0:444\nZ:Q1UKK/cv5ckrDPf+6bHSHHOS29jek=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/server\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1bYCEh78SDlGt7CUXmKO7PdBR7+Y=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/xds\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/xds/client\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1Iz2+/Bat/SgcHwuL1gABdzYnL1s=\nR:client.go\na:0:0:444\nZ:Q1fHxfFcDlFuIa/s2atsMbYDP6Gt4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/interop/xds/server\nM:0:0:555\nR:Dockerfile\na:0:0:444\nZ:Q1tx1eYXDQADvrIqwpbLMTagI8SuU=\nR:server.go\na:0:0:444\nZ:Q1ZuqFxZkYNBLyvxa5Aa8j6xH4OOQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/keepalive\nM:0:0:555\nR:keepalive.go\na:0:0:444\nZ:Q1YbIJJNm3pzuz1HPYoZFIc3VdOq4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/metadata\nM:0:0:555\nR:metadata.go\na:0:0:444\nZ:Q1DFhvrHKMevku+7cmlkUoSiNoNX4=\nR:metadata_test.go\na:0:0:444\nZ:Q1U6EavaO/icHWLDcJ+gKvoTOD5xI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/orca\nM:0:0:555\nR:call_metric_recorder.go\na:0:0:444\nZ:Q14UKxx72vmVYmq2WzpJAuaAH3tdU=\nR:call_metric_recorder_test.go\na:0:0:444\nZ:Q1PrYhlNOuvj3rczFVbMaZOWOfVGE=\nR:orca.go\na:0:0:444\nZ:Q12k8COLAfNHyms18Vr6b4pjE/BaU=\nR:orca_test.go\na:0:0:444\nZ:Q1bIScGOUIWiDhTaQvoJn4jWXsIjE=\nR:service.go\na:0:0:444\nZ:Q1j/ehk/jxDz2gYXIvRT7/WobHnBA=\nR:service_test.go\na:0:0:444\nZ:Q1pE4yHNp+U1xKFuRp11jF7e6NnJs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/orca/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1BVFhUoU/QIOIclraweX3ichU7us=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/peer\nM:0:0:555\nR:peer.go\na:0:0:444\nZ:Q1ZYpzQkaGNWJ7ZG2SID/6z4ZQars=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/profiling\nM:0:0:555\nR:profiling.go\na:0:0:444\nZ:Q1MGoay1VLndps2teBaW0/1ef9aPg=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/profiling/cmd\nM:0:0:555\nR:catapult.go\na:0:0:444\nZ:Q18k3YDOGpz+v2GwS4KeNtFDLjVsw=\nR:flags.go\na:0:0:444\nZ:Q1wINnxg+XkkQKtTs7yQ2yd4MQGhM=\nR:local.go\na:0:0:444\nZ:Q1s7JKUF9/z+eml0B3RhzYvISKrCE=\nR:main.go\na:0:0:444\nZ:Q15NQiIy9ea3v54kBhesKhg6ijw2g=\nR:remote.go\na:0:0:444\nZ:Q1FTlMHZIpQCgwKlR6FCaZ57JPsRo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/profiling/proto\nM:0:0:555\nR:service.pb.go\na:0:0:444\nZ:Q1vCG/4sSLpWb1sXBMHxWPShhTYA8=\nR:service.proto\na:0:0:444\nZ:Q1fQ5BDmIfikExqg5nMP3iw5PNXWU=\nR:service_grpc.pb.go\na:0:0:444\nZ:Q138isEpz6lZu/jWgIlB/tH3AJaXI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/profiling/service\nM:0:0:555\nR:service.go\na:0:0:444\nZ:Q1R1LtXTK51Il+p05rJzFnz8aVb0U=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/reflection\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1pPlTerJRH63kDGevnt3G2HQRoo8=\nR:serverreflection.go\na:0:0:444\nZ:Q19FdGMUWx3o7sR7u9QcxlGaqbgC4=\nR:serverreflection_test.go\na:0:0:444\nZ:Q1NnjxI7pdBYSwqL5vsEXNJ10fqy4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/reflection/grpc_reflection_v1alpha\nM:0:0:555\nR:reflection.pb.go\na:0:0:444\nZ:Q1+jy8ZkLhbh9gYsZZVb0h4nV+/bw=\nR:reflection.proto\na:0:0:444\nZ:Q1ZY1e75l16XIFrwfeujOPGyDCBWM=\nR:reflection_grpc.pb.go\na:0:0:444\nZ:Q1VCqwEQFPMlqOm5WKDmTxax8MwNo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/reflection/grpc_testing\nM:0:0:555\nR:proto2.pb.go\na:0:0:444\nZ:Q11gmrBS/SJ0RwFdCVaOK+mlXKNMI=\nR:proto2.proto\na:0:0:444\nZ:Q1sOKaIpALNZPcyTXIeJ27QMwJsGU=\nR:proto2_ext.pb.go\na:0:0:444\nZ:Q1vMUAzNHpcJS45UKgPXp2DghceN8=\nR:proto2_ext.proto\na:0:0:444\nZ:Q14MQhcn9uVmL2UlUmHpbCzHxg6ek=\nR:proto2_ext2.pb.go\na:0:0:444\nZ:Q1bmoHfNE9SkL0Fni1QQF5hbstYdg=\nR:proto2_ext2.proto\na:0:0:444\nZ:Q1VuVNO8bbhrAVHgUQoOdsy8SyU3M=\nR:test.pb.go\na:0:0:444\nZ:Q15ZtO9+vgTWaxIYFR3FSRI2X2kqk=\nR:test.proto\na:0:0:444\nZ:Q1iMsn6QrgE2G+YmTFeprsHSSe10c=\nR:test_grpc.pb.go\na:0:0:444\nZ:Q1CdhoZZlT3UkVaJAuZkWGIAab2OU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/reflection/grpc_testing_not_regenerate\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1T5iLBNoy6cYFOuFVDFnHbOmVRy0=\nR:dynamic.pb.go\na:0:0:444\nZ:Q1q76ADEeYS8Egh3lf6/oAo87fR6k=\nR:dynamic.proto\na:0:0:444\nZ:Q1UCZRqfeW6jdQgzuy64ZP7d7D7ws=\nR:testv3.pb.go\na:0:0:444\nZ:Q1wSBdO3qsv7fZ4M/3v/vQ8Hwcy/Q=\nR:testv3.proto\na:0:0:444\nZ:Q11ktUokZ3aBREXR2BVmE5d0R8pRQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/resolver\nM:0:0:555\nR:map.go\na:0:0:444\nZ:Q1nN6Md4mJA9AZ/Ybq0XuMFs9wz2o=\nR:map_test.go\na:0:0:444\nZ:Q1Ap2TA6lywyPklkMDZw2kD+EI46M=\nR:resolver.go\na:0:0:444\nZ:Q1LKHsm1dgltQFVDRbz4xyYxxbbxs=\nR:resolver_test.go\na:0:0:444\nZ:Q1sseShvl4qNVZgCPMhqCRlzULzQE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/resolver/dns\nM:0:0:555\nR:dns_resolver.go\na:0:0:444\nZ:Q1WWuz7g6Y517XWW49wqkHbwNL45U=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/resolver/manual\nM:0:0:555\nR:manual.go\na:0:0:444\nZ:Q1gDiKcoKjUt9AwKUm+lrQhVMGZ2I=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/resolver/passthrough\nM:0:0:555\nR:passthrough.go\na:0:0:444\nZ:Q1gDAe0ikXtroOPJs0N36xtJCna4c=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/serviceconfig\nM:0:0:555\nR:serviceconfig.go\na:0:0:444\nZ:Q1dQE5JpyGxwb8fJavmWzoIwT7BFU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/stats\nM:0:0:555\nR:handlers.go\na:0:0:444\nZ:Q1xYb9DGv67qgIOl3kQYoQHh+VyBo=\nR:stats.go\na:0:0:444\nZ:Q1qXBXGshpKoBmhf3rAUcmIW4LEhA=\nR:stats_test.go\na:0:0:444\nZ:Q1VG3Y86igggOm0vhD1JeYgGbuvuk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/status\nM:0:0:555\nR:status.go\na:0:0:444\nZ:Q1+LN+88oGjgGKL6cvGaJ6lZKtSts=\nR:status_ext_test.go\na:0:0:444\nZ:Q1uk048UPcluDXB9zTJRVYFP9M/9M=\nR:status_test.go\na:0:0:444\nZ:Q1UbmpaCYafImZEHGRToqxekw+a7M=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/stress\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/stress/client\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q13uJ8KwW46pUWC/N4ymbclaWLzww=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/stress/grpc_testing\nM:0:0:555\nR:metrics.pb.go\na:0:0:444\nZ:Q1aaLQNoz98vQ8i8eOKXR/ZN+Bo7Y=\nR:metrics.proto\na:0:0:444\nZ:Q1YEuTYb7HgdL7941P38kJLR9+JXc=\nR:metrics_grpc.pb.go\na:0:0:444\nZ:Q1fm663YcQwXD1InhmpP12PNOteBQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/stress/metrics_client\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1dRE/Ny4CWeJtlhDNAEMZ3lNNJBQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/tap\nM:0:0:555\nR:tap.go\na:0:0:444\nZ:Q1H4YLup0R/Jzlssrefh89GbaO96c=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test\nM:0:0:555\nR:authority_test.go\na:0:0:444\nZ:Q1NGPMw/aMtXCBm3/I5x61BFrZLQM=\nR:balancer_switching_test.go\na:0:0:444\nZ:Q1dzOOVDPvvBMctIvbcgnOkp4vhuk=\nR:balancer_test.go\na:0:0:444\nZ:Q1LeuSTEGq8F6aCW64xhCBBHzdL4U=\nR:channelz_linux_test.go\na:0:0:444\nZ:Q1njauIGA7rj6nmBr2Aie8pB/TIqg=\nR:channelz_test.go\na:0:0:444\nZ:Q1Q82o4O4GmROZt8dqrX8ZybHyCPc=\nR:clientconn_state_transition_test.go\na:0:0:444\nZ:Q1Oc8p4BwHhREJ/JoOhE4vhFj0Nf4=\nR:clientconn_test.go\na:0:0:444\nZ:Q1jYIszQsEiMpsIi8qbsAianWfb/A=\nR:clienttester.go\na:0:0:444\nZ:Q1pWTCAfwJlLDVcceK5rJ5uJpOEmc=\nR:config_selector_test.go\na:0:0:444\nZ:Q1WySUJEVlP6RR4IShELQA7D3ecjg=\nR:context_canceled_test.go\na:0:0:444\nZ:Q1QUoPaWjRSugfKGc64mM+bVcAOGQ=\nR:creds_test.go\na:0:0:444\nZ:Q1TaggxHMSA2E0pFki5tcDgIPtRhM=\nR:end2end_test.go\na:0:0:444\nZ:Q14bJdC+FNo9xRzdopapMhoFOY7Zw=\nR:goaway_test.go\na:0:0:444\nZ:Q1TaaTt/nq7ZiSqvajUlgvaPW+SyA=\nR:gracefulstop_test.go\na:0:0:444\nZ:Q1REXolBiLJjHngJ8vTOmWCCN2fqE=\nR:healthcheck_test.go\na:0:0:444\nZ:Q1kI/MRkSTcqAJZkZpsDROouJaZ6M=\nR:insecure_creds_test.go\na:0:0:444\nZ:Q1FcLOZePz3ij8B12J5MxJjPDex54=\nR:interceptor_test.go\na:0:0:444\nZ:Q1MWszHcd5ruUZrJR7N59OCjAV87U=\nR:invoke_test.go\na:0:0:444\nZ:Q1kWqWdRgq2jDIS3eHA6M6MwNxD14=\nR:local_creds_test.go\na:0:0:444\nZ:Q1dljrqG6vAbmdmVPBdbZdAghm3fs=\nR:logging.go\na:0:0:444\nZ:Q14mKeilsPT+iFeXvNFccCKRa8gmc=\nR:metadata_test.go\na:0:0:444\nZ:Q10O+iSUhW/D2v01wr+KyaNuySh8w=\nR:parse_config.go\na:0:0:444\nZ:Q12EZe98L/JStjyLyrxEF/PJEq7v0=\nR:pickfirst_test.go\na:0:0:444\nZ:Q1Cv7bnOiiEW+vFcYM+31xoUDUHsI=\nR:race.go\na:0:0:444\nZ:Q1BgkMFdk9BZsubKl2oUkUge+cV8w=\nR:rawConnWrapper.go\na:0:0:444\nZ:Q1oIrzuZ7xvkUorQYbzOoqOXa2jlo=\nR:resolver_update_test.go\na:0:0:444\nZ:Q1DtEcWhob7Yt8kp6DzD6BlI4yHpk=\nR:retry_test.go\na:0:0:444\nZ:Q1tpOLEBhjMa9XiYCMJujWxowX7KU=\nR:roundrobin_test.go\na:0:0:444\nZ:Q1/JTFmopFt8lLhE1u99e4klA1+X0=\nR:server_test.go\na:0:0:444\nZ:Q19qHPsMs4XV0SfAz1iUfYJScCIRU=\nR:servertester.go\na:0:0:444\nZ:Q1425vLRY8kMXMirm7BEXTo8gixoY=\nR:stream_cleanup_test.go\na:0:0:444\nZ:Q1Uj9NLleqNpEOLH+6GYv+3NSK6F4=\nR:timeouts.go\na:0:0:444\nZ:Q1Moroc0W3PnL5sclmsjnLfYOTntE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test/bufconn\nM:0:0:555\nR:bufconn.go\na:0:0:444\nZ:Q1YBo1iCcg5WT2kdJ77mRnuf8PkSY=\nR:bufconn_test.go\na:0:0:444\nZ:Q1sCTyxFu1iJT15WbuAD+4XBUunZw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test/codec_perf\nM:0:0:555\nR:perf.pb.go\na:0:0:444\nZ:Q16UFKVFOdlVbvzJ3DGvyRTbT12XA=\nR:perf.proto\na:0:0:444\nZ:Q1CHxiEsVYZqb2/aBfsTdwRlEszQ0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test/grpc_testing\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q19m8HBecsoPn1ctip32PiB5dx3+Q=\nR:test.proto\na:0:0:444\nZ:Q146sbsuksLCus9OW0jgxvRNAAJS0=\nR:test_grpc.pb.go\na:0:0:444\nZ:Q1E8QayPa8zrliOrewLt3aD/W4gxc=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test/kokoro\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1V1mH8V5zzHz+V8EXjaezZFlt+uY=\nR:psm-security.cfg\na:0:0:444\nZ:Q1qIfQrukWyZoNg2bd2Oj6vzC2Hi8=\nR:psm-security.sh\na:0:0:444\nZ:Q1qv2CU8gLyGWj3beDf8HOelWSCYI=\nR:xds.cfg\na:0:0:444\nZ:Q16IY0trcoZcHKiN4F4xJ3FTIWUow=\nR:xds.sh\na:0:0:444\nZ:Q1KZ1IYPd4aY7YMZKdLFkDPN77Gsc=\nR:xds_k8s_lb.cfg\na:0:0:444\nZ:Q1syqGIM8mkTENu2wKlDfrHlNlqNk=\nR:xds_k8s_lb.sh\na:0:0:444\nZ:Q1+ojCwEWNdB6r07wVARKztorFBus=\nR:xds_url_map.cfg\na:0:0:444\nZ:Q1HeuRuPF/nxI/7eJrKXdZgfEY6DA=\nR:xds_url_map.sh\na:0:0:444\nZ:Q1SvgWZI5lRUMLACcoeBX4Hsz/Ucc=\nR:xds_v3.cfg\na:0:0:444\nZ:Q1ClbkrIwEYuh1WZidw3RCu1U9uJM=\nR:xds_v3.sh\na:0:0:444\nZ:Q1IIc3130EZ79uGGc379G1LnWQ9wo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/test/xds\nM:0:0:555\nR:xds_client_ack_nack_test.go\na:0:0:444\nZ:Q1TKuqobN56K9kRRtPt+MeX5RJwYk=\nR:xds_client_affinity_test.go\na:0:0:444\nZ:Q1wPOt/n7fDA4LpUmMHS9cGydP2lg=\nR:xds_client_federation_test.go\na:0:0:444\nZ:Q1EEOz05zvirywFaD43Uf0WaUCPbU=\nR:xds_client_integration_test.go\na:0:0:444\nZ:Q15epmDDPslbcZ48pUjoW9WtDucdQ=\nR:xds_client_outlier_detection_test.go\na:0:0:444\nZ:Q1Xaxr/gl26OYACCHD7skI6Sp51ZQ=\nR:xds_client_retry_test.go\na:0:0:444\nZ:Q1UOu7AdAzmwLSpgYVbAlbYI7poFU=\nR:xds_rls_clusterspecifier_plugin_test.go\na:0:0:444\nZ:Q1jK9jUo5QxmTQ84LwrftztQ08g4I=\nR:xds_security_config_nack_test.go\na:0:0:444\nZ:Q1Nxy+xCP1zVWOGHp0J3FFWXOn/sc=\nR:xds_server_integration_test.go\na:0:0:444\nZ:Q1c1r9bGEYpI+0Kisog4acB7j5G+w=\nR:xds_server_rbac_test.go\na:0:0:444\nZ:Q1SSx3ZkQVhgoVo1Q6Fy1YzIsU46o=\nR:xds_server_serving_mode_test.go\na:0:0:444\nZ:Q1ZGmef1OhA69LiLmbO50IUsk5p1Q=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/testdata\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1UCkGAgkuXd777i381CBwY7f9BUc=\nR:ca.pem\na:0:0:444\nZ:Q1FYTs1A50pUYLBCejQPQsTjUjlYs=\nR:server1.key\na:0:0:444\nZ:Q1iiYKfESAxm41e0joL71DsTlA+CQ=\nR:server1.pem\na:0:0:444\nZ:Q1N502kFpPwuXjlw4CSEcsS+616vk=\nR:testdata.go\na:0:0:444\nZ:Q1yDkMF0S1IOcieKjQ17cFxNQerZI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/testdata/x509\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1DXqqEzM4fgIjbZK3km+dfsmCq84=\nR:client1_cert.pem\na:0:0:444\nZ:Q101nn3dR1iXjvwP8832tJgJsEb/Q=\nR:client1_key.pem\na:0:0:444\nZ:Q13wFKvblw0naRI4W30gvXBmK9S10=\nR:client2_cert.pem\na:0:0:444\nZ:Q1fd7lt281H/LU9wztitM0JyVbXMw=\nR:client2_key.pem\na:0:0:444\nZ:Q15n59zlw2kJwm2H93OL2c4enXyAQ=\nR:client_ca_cert.pem\na:0:0:444\nZ:Q1FtRCJebecvuq+f4jDktHvHPtFvA=\nR:client_ca_key.pem\na:0:0:444\nZ:Q1+B3Nw9VZSC6plOC6hUMIZPhj3X4=\nR:create.sh\na:0:0:444\nZ:Q1xusYqNmdDzio/9P8IY2WeOp8vPQ=\nR:multiple_uri_cert.pem\na:0:0:444\nZ:Q1vGQfFaTxP3IgZunZ27IlFF1E8rA=\nR:multiple_uri_key.pem\na:0:0:444\nZ:Q1aPZxG6SYd5HmO8jXN/9lmaLL1d0=\nR:openssl.cnf\na:0:0:444\nZ:Q1E7QcyM8ZH0T7co/LPHqqSdctezM=\nR:server1_cert.pem\na:0:0:444\nZ:Q1jYJiDD5XALqZaVNNtKxs0+LeK9U=\nR:server1_key.pem\na:0:0:444\nZ:Q1VS0zrHhKfkHVaGnVL7sdS8+E/gc=\nR:server2_cert.pem\na:0:0:444\nZ:Q1lEHy8C70QsnL35oX6WQKwUykryM=\nR:server2_key.pem\na:0:0:444\nZ:Q1nzjxZfa2JsBk2/xvMbIN/ammL0s=\nR:server_ca_cert.pem\na:0:0:444\nZ:Q1G/r2258lpAcJE6leDY2NF5b7LHY=\nR:server_ca_key.pem\na:0:0:444\nZ:Q1ku5WQXuET2NI1XMY/Yr8F96tGKk=\nR:spiffe_cert.pem\na:0:0:444\nZ:Q1LK5ITRSg6WyYJf3tSmQ1jjfZqRI=\nR:spiffe_key.pem\na:0:0:444\nZ:Q1fYhar/Ni3a09HIjtF5cAtOZxve8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1wymcCtbDvE08YV96flkE93rjWtc=\nR:server_options.go\na:0:0:444\nZ:Q1eoRta5Iz81j6i9SUUEMv+Js8fQ4=\nR:server_test.go\na:0:0:444\nZ:Q1EX7K5ZKmnjVFhTwDlvpa1Thz5Q0=\nR:xds.go\na:0:0:444\nZ:Q1d0EQGdVwoFTX/emZBqMWRiPIFDY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/bootstrap\nM:0:0:555\nR:bootstrap.go\na:0:0:444\nZ:Q1KwG3j/O1dzjZIGxFOzFKpO+0zho=\nR:bootstrap_test.go\na:0:0:444\nZ:Q12sYLP+8jO70r6cvR+mEqpxfJ7HE=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/csds\nM:0:0:555\nR:csds.go\na:0:0:444\nZ:Q1nKLExuRzGqzNPVceJhLtD88T7QE=\nR:csds_test.go\na:0:0:444\nZ:Q1Z2+2BSDcp4uvFGvQsgjtnLyNNFQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/googledirectpath\nM:0:0:555\nR:googlec2p.go\na:0:0:444\nZ:Q16ah3Tpvr9YQI9jyTwrfVXokFgxs=\nR:googlec2p_test.go\na:0:0:444\nZ:Q1A+k+i+j80c7LA2k5EGOFaWwOqqY=\nR:utils.go\na:0:0:444\nZ:Q14oaw6K19CBrYfEzyABV1n2cwrA4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal\nM:0:0:555\nR:internal.go\na:0:0:444\nZ:Q1VcRWwHV+X8Gk5ZXBekXW+ukoCf0=\nR:internal_test.go\na:0:0:444\nZ:Q195niqwK/XOnZa+rve+xmLYVrX3M=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1EkY4+NBwREKGYYk51IAO/RPfXqs=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/cdsbalancer\nM:0:0:555\nR:cdsbalancer.go\na:0:0:444\nZ:Q1oQL6Xw/mgBUtg3BMeII/aPghmvs=\nR:cdsbalancer_security_test.go\na:0:0:444\nZ:Q1YRSCcfiXllIeHWuCi8hsBpCgBLA=\nR:cdsbalancer_test.go\na:0:0:444\nZ:Q1m4Rc+QT1tBELZ3DVeimFFHxrutY=\nR:cluster_handler.go\na:0:0:444\nZ:Q1SA6Yc06YXDq4I76xQlAUM+ow61A=\nR:cluster_handler_test.go\na:0:0:444\nZ:Q1W6jwcfKsnq9UZ3aIB7on29Uelxc=\nR:logging.go\na:0:0:444\nZ:Q1y6WTKmh9g+t9YaqOPyl+GbeGjTw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/clusterimpl\nM:0:0:555\nR:balancer_test.go\na:0:0:444\nZ:Q1lRt943k9a0e0FSvh0EyDg5I3bd4=\nR:clusterimpl.go\na:0:0:444\nZ:Q1Za6/xC0aUBSJn8COLU6cK4/w9wI=\nR:config.go\na:0:0:444\nZ:Q1MilHQvWO2SLY+fBTF+7fCRnnk7s=\nR:config_test.go\na:0:0:444\nZ:Q11dgEg6HGMGhOjB9aiaChz6gE+qM=\nR:logging.go\na:0:0:444\nZ:Q1/CYgWHk8pwQOLUsweHjuM9GME0s=\nR:picker.go\na:0:0:444\nZ:Q1TTYay4TZwlYqYzmhrCDneIrxE6Q=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/clustermanager\nM:0:0:555\nR:balancerstateaggregator.go\na:0:0:444\nZ:Q1VA7oVobUUb74pPCpvZd4zls5I8o=\nR:clustermanager.go\na:0:0:444\nZ:Q1Wrv11MZK+dKEMaAYlnnO9jRlw4M=\nR:clustermanager_test.go\na:0:0:444\nZ:Q1TfgfIApG4Frda+Zv4wcfcY86jz4=\nR:config.go\na:0:0:444\nZ:Q1+gzt/yaPnRPM9dL50Ri7MmoegO8=\nR:config_test.go\na:0:0:444\nZ:Q19ewrp3w0FyKSlCPffkGpvGY30Wc=\nR:picker.go\na:0:0:444\nZ:Q1tzfWsl3iKCLgph2ExCoKkVVFdAY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/clusterresolver\nM:0:0:555\nR:clusterresolver.go\na:0:0:444\nZ:Q1esFx81Gfo/OHUGAbF4rKpj8/rLw=\nR:clusterresolver_test.go\na:0:0:444\nZ:Q19gOwJpr7uVydygzU+3FmpG2lzfs=\nR:config.go\na:0:0:444\nZ:Q1fJ84e5UxO0Nc7FFva7vfcYRfh9c=\nR:config_test.go\na:0:0:444\nZ:Q1qmN3yC1UexLSA4WinJw2Tv0FSs0=\nR:configbuilder.go\na:0:0:444\nZ:Q1y4JVhleIKm6SbDj5Ab+bD7jhEM0=\nR:configbuilder_childname.go\na:0:0:444\nZ:Q1rMhg5/WghOk3iZOrvq0alFXDpG0=\nR:configbuilder_childname_test.go\na:0:0:444\nZ:Q1vzkvuw7iyYUR6eJysPT4HDJQMqE=\nR:configbuilder_test.go\na:0:0:444\nZ:Q1VTH7Yr+Z6DqVXDk24x4LGHmQ8Ns=\nR:logging.go\na:0:0:444\nZ:Q1WgvYGsZoSoS6952AfCb/4ctciXc=\nR:priority_test.go\na:0:0:444\nZ:Q1DKELCeLCeUkzpJy1gz+orS5wgm8=\nR:resource_resolver.go\na:0:0:444\nZ:Q1Ow3kFUfvlU8l7Z/I2xDs9v2PtFk=\nR:resource_resolver_dns.go\na:0:0:444\nZ:Q1Vc2qf0D9PVfINQ/T0GgJwiRu9iw=\nR:resource_resolver_test.go\na:0:0:444\nZ:Q1uAXMRTFoV5jSyKvDcqK7VHuTiEo=\nR:testutil_test.go\na:0:0:444\nZ:Q1dO89RrXZ7WR9qTl35S9CsyWQhHw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/clusterresolver/e2e_test\nM:0:0:555\nR:eds_impl_test.go\na:0:0:444\nZ:Q1wLz5QlhlpOlVnxUKqCRMRoXHpvw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/loadstore\nM:0:0:555\nR:load_store_wrapper.go\na:0:0:444\nZ:Q109EqBriRM9xZ1IE0c//PYivYfKo=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/outlierdetection\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1lELYRih2J5zjSsJwEpb43UNXevI=\nR:balancer_test.go\na:0:0:444\nZ:Q1Jm3jPOWW+u1M0TFu68vKk24ZKw0=\nR:callcounter.go\na:0:0:444\nZ:Q1ge1w4NZCI7p4Lic/clV2zhTnDkg=\nR:callcounter_test.go\na:0:0:444\nZ:Q1wVhzDXqLNpxCSjNxSo06kbM3Fyk=\nR:config.go\na:0:0:444\nZ:Q1GBZ6ybEh8M9wBU1Ry4XR+s3B1BU=\nR:config_test.go\na:0:0:444\nZ:Q1omYl7VbnUsJwXT5wgFDor+sTZb4=\nR:logging.go\na:0:0:444\nZ:Q1tu01bxGJUtxOmGjZeoVIS/+/QRg=\nR:subconn_wrapper.go\na:0:0:444\nZ:Q1/feW4ybMJKE8adlrKTYDKVVDAyc=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/outlierdetection/e2e_test\nM:0:0:555\nR:outlierdetection_test.go\na:0:0:444\nZ:Q1ocJIaV/GsJtpq8MRmlWcG9aCYhw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/priority\nM:0:0:555\nR:balancer.go\na:0:0:444\nZ:Q1nGDWsjtKYCLUebjYvnTepQxTrWo=\nR:balancer_child.go\na:0:0:444\nZ:Q1gWTpgSKLTMxH3fxx8HkrT0zv8oo=\nR:balancer_priority.go\na:0:0:444\nZ:Q11r04x5idx/jT+BGhouSapoOefg0=\nR:balancer_test.go\na:0:0:444\nZ:Q1MjHggKtaYE5Z88U+BiZGZ/279Us=\nR:config.go\na:0:0:444\nZ:Q1++sFnKP5TEppJrRbGQ1p6qvHKJE=\nR:config_test.go\na:0:0:444\nZ:Q1fHSuV49FTSZFa9L627xTYmkZXOk=\nR:ignore_resolve_now.go\na:0:0:444\nZ:Q1sIbh/l2yBUOxMKwQMOPh4PhU3WI=\nR:ignore_resolve_now_test.go\na:0:0:444\nZ:Q1BthNCS2BuNPUmcDKhkJyENIJALc=\nR:logging.go\na:0:0:444\nZ:Q18MRyaaEYkwDh12lonhhoDBy4t/c=\nR:utils.go\na:0:0:444\nZ:Q1z2BuDiltnoijlq44zlKxZj4fhhE=\nR:utils_test.go\na:0:0:444\nZ:Q15lY/ba2Tcpxna80ItFTsxfwOnoM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/ringhash\nM:0:0:555\nR:config.go\na:0:0:444\nZ:Q1wTmnNLnbUPGhmTv0+uCNW4iqPQs=\nR:config_test.go\na:0:0:444\nZ:Q18f6PY8o1HHkxiYeaVMNkNq7odjI=\nR:logging.go\na:0:0:444\nZ:Q1zlO2qZ7pa87CNIUfIE88loASPQ8=\nR:picker.go\na:0:0:444\nZ:Q1CI7hxTe70csazIbFVU0sKIb06/c=\nR:picker_test.go\na:0:0:444\nZ:Q1JIjZ0WbN/TQHTVoxsF/yC/aP5t0=\nR:ring.go\na:0:0:444\nZ:Q1IDoBAGIZikj8D7Khehe6h5itrGs=\nR:ring_test.go\na:0:0:444\nZ:Q1JFjbN1BjBuUp+Vo2vE/p9ki4Quc=\nR:ringhash.go\na:0:0:444\nZ:Q1HK/yJFTh3qVNCiW2QjvWWHCEAT8=\nR:ringhash_test.go\na:0:0:444\nZ:Q1XJLrT3SWlv83Gj+/T3EkWnkQheM=\nR:util.go\na:0:0:444\nZ:Q1WWi0EKVKKx9aLESm136F3+khAJM=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/balancer/ringhash/e2e\nM:0:0:555\nR:ringhash_balancer_test.go\na:0:0:444\nZ:Q106bQAUhGyKr75L6AjlhQ6UEQ0YQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/clusterspecifier\nM:0:0:555\nR:cluster_specifier.go\na:0:0:444\nZ:Q1yzr0feOA7pW2ZYNfSwdIttrmycQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/clusterspecifier/rls\nM:0:0:555\nR:rls.go\na:0:0:444\nZ:Q1WBx2F0xQjlftJ6dt1ozNiH9itlM=\nR:rls_test.go\na:0:0:444\nZ:Q1E3Pf/6afq1blZzlOGETdkVzXlxU=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/httpfilter\nM:0:0:555\nR:httpfilter.go\na:0:0:444\nZ:Q1Q8GJ9nmgJTrkPRdhW/PLgRMOjX4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/httpfilter/fault\nM:0:0:555\nR:fault.go\na:0:0:444\nZ:Q1XwgezpIO76vktakoCIfMLx4dkiY=\nR:fault_test.go\na:0:0:444\nZ:Q1woNSU77+su46thCxj+QxVzlcB3E=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/httpfilter/rbac\nM:0:0:555\nR:rbac.go\na:0:0:444\nZ:Q1s7A+wWhUzuD7GILGRiPsURrGbKw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/httpfilter/router\nM:0:0:555\nR:router.go\na:0:0:444\nZ:Q1nMYzkOLP3BZe1d9hMf5PM1E2Zas=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/resolver\nM:0:0:555\nR:cluster_specifier_plugin_test.go\na:0:0:444\nZ:Q1gJ2dGI2c4Yzd14iTzrYMkEf4Cc0=\nR:logging.go\na:0:0:444\nZ:Q1FQBDXzKC7Ou2rmUQ0PXhy7GzHn8=\nR:serviceconfig.go\na:0:0:444\nZ:Q1CsEWzYDWZWNz0O7Av8JCIMnIBN0=\nR:serviceconfig_test.go\na:0:0:444\nZ:Q1nksb3S1UyRTD09d4a8jy1uSJ0Y0=\nR:watch_service.go\na:0:0:444\nZ:Q1A8YetvWu+POd+gXAA4jrIsj69JI=\nR:watch_service_test.go\na:0:0:444\nZ:Q1DJqOyW/PM8ncBldbhesmcIkZhqo=\nR:xds_resolver.go\na:0:0:444\nZ:Q1JD1yoAp7qY6aT83pUBlEXamAOfQ=\nR:xds_resolver_test.go\na:0:0:444\nZ:Q1wpGIEDgFpUDPhAFsyytnW2X1N6c=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/server\nM:0:0:555\nR:conn_wrapper.go\na:0:0:444\nZ:Q1xKZESyktMaDGuztXHROsBP4DWpQ=\nR:listener_wrapper.go\na:0:0:444\nZ:Q1g9dE33wcNteGzqbNUheEnyG+1WI=\nR:listener_wrapper_test.go\na:0:0:444\nZ:Q1onRHP8fSs6d0XjM+dIsAmcfHJCk=\nR:rds_handler.go\na:0:0:444\nZ:Q1IYhh0yuTnU1Nm3ajABWeDw4S/zs=\nR:rds_handler_test.go\na:0:0:444\nZ:Q1eHYlsVEssEammd6/S7NHM7PcbQ0=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/test\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/test/e2e\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q152B6hqnErywhuLHpO+XrKk9aB04=\nR:controlplane.go\na:0:0:444\nZ:Q1eAuLgFEkacaG5Dzuc/H6z9VB3os=\nR:e2e.go\na:0:0:444\nZ:Q18L6LFevQ54Zg3XhSFbYuhjOFDEQ=\nR:e2e_test.go\na:0:0:444\nZ:Q1cBQrq+Obt/u2ByK+z6YBlY9SSTw=\nR:e2e_utils.go\na:0:0:444\nZ:Q1XCbsr5p+CHHL/06awxnMWYeU0s0=\nR:run.sh\na:0:0:444\nZ:Q1ajnxnP+X4UpeuMlnkMMRRfuYbqw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/testutils\nM:0:0:555\nR:balancer_test.go\na:0:0:444\nZ:Q1/T8DhzqoL7jlT0ZfT+eP8qBFFwI=\nR:protos.go\na:0:0:444\nZ:Q1m5U4yO58re/yQtNlO/lf8mTdfEI=\nR:testutils.go\na:0:0:444\nZ:Q17q3aTDgC51C9T12dECc5dcs0qcQ=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/testutils/fakeclient\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1II1HgHCmcSYYR2qbGO0mLqOQ940=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/testutils/fakeserver\nM:0:0:555\nR:server.go\na:0:0:444\nZ:Q1rseWJNYZXBE3LIVHhACOUeemzmk=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient\nM:0:0:555\nR:attributes.go\na:0:0:444\nZ:Q1P1y/0SGl3bejpe/QSae16lGyIHs=\nR:authority.go\na:0:0:444\nZ:Q1HwNSeZ6EgMFwcrtRiOGNPRHDvcc=\nR:authority_test.go\na:0:0:444\nZ:Q1rL7AoGWWRmwQLMBETuinCWvEOQo=\nR:client.go\na:0:0:444\nZ:Q1WEhTOj+8voQK/jvJe+jt2mrkb9I=\nR:client_new.go\na:0:0:444\nZ:Q1KYjE4NqTmzdCdB7sMzLW1KOrPJc=\nR:client_test.go\na:0:0:444\nZ:Q1JOCad4RwqF/5SUNBDZyLmamSDhI=\nR:clientimpl.go\na:0:0:444\nZ:Q1F1S45IicmJAE7DWqoN3pc4D3IkY=\nR:clientimpl_authority.go\na:0:0:444\nZ:Q1w5CUWcDXct/Ypyr2XWK8ba0oqC0=\nR:clientimpl_dump.go\na:0:0:444\nZ:Q1cJuPSM3JGrDfKXe9yp3DfjETmIM=\nR:clientimpl_loadreport.go\na:0:0:444\nZ:Q1IygxZfxr6BUaP01neyd10eJuQkY=\nR:clientimpl_validator.go\na:0:0:444\nZ:Q1sVHq1kYtFqVYZO7qFLwpV4CKygo=\nR:clientimpl_watchers.go\na:0:0:444\nZ:Q10B6FGQfMWivHuyf8VbIMXcOv+QE=\nR:dump_test.go\na:0:0:444\nZ:Q1AUT9GEGwcxstRhGJ6W/9rKJ449M=\nR:loadreport_test.go\na:0:0:444\nZ:Q1kg82DYX14Dpv7rOzJUwPLm9c+9g=\nR:logging.go\na:0:0:444\nZ:Q1l8W/DL8CTOAx9gZM1qOcdow954A=\nR:requests_counter.go\na:0:0:444\nZ:Q1MDWJCntELWzcNSgiY4bSuc2wHzk=\nR:requests_counter_test.go\na:0:0:444\nZ:Q1SL+5Cg95g82Fx6otpmMw6IKkWHU=\nR:singleton.go\na:0:0:444\nZ:Q13SeZ+V1fr1XmNz/vl9Apai0rb5U=\nR:singleton_test.go\na:0:0:444\nZ:Q1os8HqIS/yOyQlhW6nGbPb6eGqvc=\nR:watchers_cluster_test.go\na:0:0:444\nZ:Q1x+nNJi+PtJzUnsIkNDPkFFFiiYM=\nR:watchers_endpoints_test.go\na:0:0:444\nZ:Q1Z2kYLyoWMrUDDxV9km4/ApvoMq8=\nR:watchers_federation_test.go\na:0:0:444\nZ:Q1o78F6QXCII5YM8Um2rP9Cj6Xglc=\nR:watchers_route_test.go\na:0:0:444\nZ:Q1Xk+Ejg60FUJsJKKaU5rSSXRj9Yo=\nR:watchers_test.go\na:0:0:444\nZ:Q1a/f9+OLVp1y9u3L8+XEmzmvjH7I=\nR:xdsclient_test.go\na:0:0:444\nZ:Q12b0BnbSvvtMktA9G9wT7w6xl4Vw=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/bootstrap\nM:0:0:555\nR:bootstrap.go\na:0:0:444\nZ:Q17E5iilEe0pX8HP04shH5s8AThNY=\nR:bootstrap_test.go\na:0:0:444\nZ:Q1qp+QAHgpLk36akHuLNFHSaxCbuk=\nR:logging.go\na:0:0:444\nZ:Q13OY9uT3HzLbmi9KG/HFybKFQNeQ=\nR:template.go\na:0:0:444\nZ:Q1x2A264687U1wUKQ54CIVk6cv/9Y=\nR:template_test.go\na:0:0:444\nZ:Q1P5x4Yu2kvmCcUvZBA0zR3J5LtJ4=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/controller\nM:0:0:555\nR:controller.go\na:0:0:444\nZ:Q1wVDvk+AUHeYvEdW/hB8lDRzA+FE=\nR:controller_test.go\na:0:0:444\nZ:Q1aXaw7/txy2rNMh7X9cf3yEtGm6Q=\nR:loadreport.go\na:0:0:444\nZ:Q1A5R8iZBzjiXqxRje26mV9EOi1kw=\nR:transport.go\na:0:0:444\nZ:Q1Marw8hD/HKW+kMdVIudrZ4gWSyU=\nR:v2_ack_test.go\na:0:0:444\nZ:Q1QF9uQnYXAQlswewXXPp3xuXbD94=\nR:v2_cds_test.go\na:0:0:444\nZ:Q12YefGzNbpkuKNNCDOgUkHsYKWJ8=\nR:v2_client_test.go\na:0:0:444\nZ:Q1ONxwGqfBnuikh+a3rT7oFGp5IDQ=\nR:v2_eds_test.go\na:0:0:444\nZ:Q1Z2NFZUvLgaxtgLissaLh4uJLzkM=\nR:v2_lds_test.go\na:0:0:444\nZ:Q1EH5XqGx5NRmZ4s2fV9h4roOjelA=\nR:v2_rds_test.go\na:0:0:444\nZ:Q1J+WVscRABwzTbO80FsewaTZzWDo=\nR:v2_testutils_test.go\na:0:0:444\nZ:Q1l2V7dhDaHf6gzCVYsvlhkPJBB/k=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/controller/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1VCt5cos5jBaf0n7nr/1ewi7OsM8=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/controller/version/v2\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1hHXIGQiozvrhpufOKboarmgSd+c=\nR:loadreport.go\na:0:0:444\nZ:Q1LaCP+UbWZUejiLtC9hbjqmNpQSY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/controller/version/v3\nM:0:0:555\nR:client.go\na:0:0:444\nZ:Q1g/uTuvGfACQPU/Nr10kVL7EIrK0=\nR:loadreport.go\na:0:0:444\nZ:Q1LcPOi12nK4wgpKYFNpXkLKnuXsY=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/e2e_test\nM:0:0:555\nR:lds_watchers_test.go\na:0:0:444\nZ:Q12VMFzBmGAxASccz54T6m1/B5Zsc=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/load\nM:0:0:555\nR:reporter.go\na:0:0:444\nZ:Q1LKfmkdvbQ2G7t+xAA+2sG2c1f/A=\nR:store.go\na:0:0:444\nZ:Q1YHh+mjUR8GLCPScrMXj1ZPyjgcA=\nR:store_test.go\na:0:0:444\nZ:Q19/PbBjR/0aYbyTEb8xEFBoTASco=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/pubsub\nM:0:0:555\nR:dump.go\na:0:0:444\nZ:Q1iruT+xSMRsqOgr+NcYTfgEVq63I=\nR:interface.go\na:0:0:444\nZ:Q1OHxsGtFP3hLQRcaIDXmUdpqgzh0=\nR:pubsub.go\na:0:0:444\nZ:Q1j1J/FdW2iUCW1K8f5Up0lvMfsLA=\nR:update.go\na:0:0:444\nZ:Q138gtWIZn5M6bESmCNdrpOJ5Zf/M=\nR:watch.go\na:0:0:444\nZ:Q1bnT8FytmAfbb+ldRUmlUOKG4bkA=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/xdsresource\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1TIG80+XZikOUAUIvBP6XOGv5ES8=\nR:filter_chain.go\na:0:0:444\nZ:Q1Uer7nHQAPsaxPN+a142U5ocxE9I=\nR:filter_chain_test.go\na:0:0:444\nZ:Q1zYlWM4pvuLsFaq2QQCEsD7Cd7hY=\nR:matcher.go\na:0:0:444\nZ:Q1CE3pLVfaBL3VPYcrqQ9dDJyd934=\nR:matcher_path.go\na:0:0:444\nZ:Q1lECDmVyd9DiWm6owpo2m/CR3tHI=\nR:matcher_path_test.go\na:0:0:444\nZ:Q1mgOk+QMoEBK+dnBO3IbUJqhX2qo=\nR:matcher_test.go\na:0:0:444\nZ:Q1opJME3Elu6WXVYh6ddasdnJ53r0=\nR:name.go\na:0:0:444\nZ:Q1zGluW9k8LhU1hFoahHh5A0O943c=\nR:name_test.go\na:0:0:444\nZ:Q1Ss4bm1trowhrVuyLmaAjMd35WhY=\nR:test_utils_test.go\na:0:0:444\nZ:Q11aMim+mPxcb7J48VUGjmBHKbH0E=\nR:type.go\na:0:0:444\nZ:Q1SgFhVYbSnko6gBMss/3TK/5sPVE=\nR:type_cds.go\na:0:0:444\nZ:Q1pxY5kxQ1JUVZ6AU0TN1oBX0KjF8=\nR:type_eds.go\na:0:0:444\nZ:Q1/RhzePiwriC2A0QY6GzE3+D7+tE=\nR:type_lds.go\na:0:0:444\nZ:Q1SJQlo13A5BE6sxtkItG6grlmy4w=\nR:type_rds.go\na:0:0:444\nZ:Q17VBCPAI9pQtoOFBTTBZLj6VLddE=\nR:unmarshal.go\na:0:0:444\nZ:Q1mhrkYYz6ajzcwNz4s6l/jmdtGjA=\nR:unmarshal_cds.go\na:0:0:444\nZ:Q1CyVt/WfmLW6iYpxNdBAK6wIYsFE=\nR:unmarshal_cds_test.go\na:0:0:444\nZ:Q1+TxChJd9j4txHW1jhHJ0pXzDtLw=\nR:unmarshal_eds.go\na:0:0:444\nZ:Q1Ze4xgkYnAV/R178mjjRbIPj+XBI=\nR:unmarshal_eds_test.go\na:0:0:444\nZ:Q13DEhL9awixbZ2l9lRFNoSpjrvKk=\nR:unmarshal_lds.go\na:0:0:444\nZ:Q1LCL2PDS90UuEKXnxY8fXEBmGIUo=\nR:unmarshal_lds_test.go\na:0:0:444\nZ:Q1JOXJwKvDp5uRVbF5r8i/WTs2muE=\nR:unmarshal_rds.go\na:0:0:444\nZ:Q1yPvGJqTZipaPYdw4Gk87A6iZm3A=\nR:unmarshal_rds_test.go\na:0:0:444\nZ:Q1cnVrVxVKVbH1OkYVxlVI70gVBpI=\nF:root/go/pkg/mod/google.golang.org/grpc@v1.50.0/xds/internal/xdsclient/xdsresource/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q13jN5pclNTtnYI9dLZGkyqo+6P4I=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1l14slPjHqiUIkbVp7SjAEEybqlQ=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1DU+OdAuUu3FsGY8C7eteTplUcD0=\nR:LICENSE\na:0:0:444\nZ:Q1dIUKJaUxm93cDZmOuJJsGLraKCs=\nR:PATENTS\na:0:0:444\nZ:Q1TspFthL32G8vWY8jgHSg2sm3K8k=\nR:README.md\na:0:0:444\nZ:Q1Uvicc9j/vc015G98a8DnQTZYRno=\nR:go.mod\na:0:0:444\nZ:Q1pqd+nRU4hDRJJYibGQjiua7zY6k=\nR:go.sum\na:0:0:444\nZ:Q1M4S2IhaW4j16IILMt3mO37Snr2M=\nR:integration_test.go\na:0:0:444\nZ:Q15FP3jZJA7EVJ/KhXk8QdDbihBUI=\nR:regenerate.bash\na:0:0:444\nZ:Q1wBlDbDP+/N9NelqPiTcOxkIjwGw=\nR:release.bash\na:0:0:444\nZ:Q1Ymfw5eQjKKLmzkBSYefcUFfRoIU=\nR:test.bash\na:0:0:444\nZ:Q1prF+s9nE5AEg841w7stP2GiNBOM=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/.github\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/.github/workflows\nM:0:0:555\nR:test.yml\na:0:0:444\nZ:Q1k+ebiBFckT08n0vf3p1R/iu34UI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go\nM:0:0:555\nR:annotation_test.go\na:0:0:444\nZ:Q1D/CIvWn79GnWkVoEQqz96VB6MYk=\nR:main.go\na:0:0:444\nZ:Q1II5GzMGpnEYpO0DCj32hTV24M9w=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/internal_gengo\nM:0:0:555\nR:init.go\na:0:0:444\nZ:Q1Dd8qEs8GufZeMJs3nzAfS/H7mu8=\nR:main.go\na:0:0:444\nZ:Q1l96RdgVIOtshbg8uSE+kAutppTM=\nR:reflect.go\na:0:0:444\nZ:Q1S3V0N8mKF4UW2xq+iglxcWYDZ3k=\nR:well_known_types.go\na:0:0:444\nZ:Q1s34G+T3Hr4xnK2BG+Ht1KdGauDY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata\nM:0:0:555\nR:gen_test.go\na:0:0:444\nZ:Q1n2DtkKS4xBw6Wb7EVhob1UiuCpY=\nR:registry_test.go\na:0:0:444\nZ:Q1PbH+tjllN/LLkLeeNsf/LZmHhMA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/annotations\nM:0:0:555\nR:annotations.pb.go\na:0:0:444\nZ:Q1XMNf2SRkqcbBNVx75UB/wSk3OGE=\nR:annotations.pb.go.meta\na:0:0:444\nZ:Q1ylhA0iUBYj3SdmZVgxr0tBYJtEM=\nR:annotations.proto\na:0:0:444\nZ:Q10f2ig7TCBCudPu7NwR3Opn1ahEw=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/comments\nM:0:0:555\nR:comments.pb.go\na:0:0:444\nZ:Q1+gXOjgAF1ArmcecMKmmR0njto5Y=\nR:comments.proto\na:0:0:444\nZ:Q12Na8Tixm3nda4QDE3fmD2Y/LBUI=\nR:deprecated.pb.go\na:0:0:444\nZ:Q1NxAuDm2hTYJs6UyPeJGjNupW7CQ=\nR:deprecated.proto\na:0:0:444\nZ:Q1FgNm6izhEXKlwn2jb4bQN+KKBmc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/extensions\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/extensions/base\nM:0:0:555\nR:base.pb.go\na:0:0:444\nZ:Q1c1hOkPQdpHgZ/V0qkMqb1Wt8eNE=\nR:base.proto\na:0:0:444\nZ:Q12DWrlrOBtLC0PCMfn6q0iFDqUS0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/extensions/ext\nM:0:0:555\nR:ext.pb.go\na:0:0:444\nZ:Q1yzUbH766X/xJK37YH10gijP6fYw=\nR:ext.proto\na:0:0:444\nZ:Q1mA+FJL2+CkZwjwq31d+DFAm3W/o=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/extensions/extra\nM:0:0:555\nR:extra.pb.go\na:0:0:444\nZ:Q1F2m9y/IwEhERfoA+WUlS3uTOpWE=\nR:extra.proto\na:0:0:444\nZ:Q1BNsDM1yF78boiGWVlKq5cbIhkD0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/extensions/proto3\nM:0:0:555\nR:ext3.pb.go\na:0:0:444\nZ:Q1g4dsGbhkmRuCWT7msfmEZ80psfQ=\nR:ext3.proto\na:0:0:444\nZ:Q1xzqYyK7BkMNbx9eGq9gkIaK0YBU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/fieldnames\nM:0:0:555\nR:fieldnames.pb.go\na:0:0:444\nZ:Q1aC08P1LTXpZhW+irBt1eXVexTM4=\nR:fieldnames.proto\na:0:0:444\nZ:Q1xqIXPnhMR7WfjYVXJ1wrsJLTMa4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/import_public\nM:0:0:555\nR:a.pb.go\na:0:0:444\nZ:Q1z7j06wqXJEWdOJXvjk0xqdi1h/k=\nR:a.proto\na:0:0:444\nZ:Q1cs/zVtaVp9mP7+uzASZZJXUls8Q=\nR:b.pb.go\na:0:0:444\nZ:Q1JzkEGTL0vM25vxDvtyfTriEjV28=\nR:b.proto\na:0:0:444\nZ:Q1k8alzdZ1Pa+vggBZHKRV7I6mCqA=\nR:c.pb.go\na:0:0:444\nZ:Q1Z0fkMLGQJ3Xw4pcsXUXntXisnJ0=\nR:c.proto\na:0:0:444\nZ:Q1B+/Jem65MK+bAE5C7u1nQumZg+I=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/import_public/sub\nM:0:0:555\nR:a.pb.go\na:0:0:444\nZ:Q1MzjUdPLpINZY0ThUhA0bBemyEjY=\nR:a.proto\na:0:0:444\nZ:Q1RWz8WqO9zS/fZ5TxaG8t98G1up4=\nR:b.pb.go\na:0:0:444\nZ:Q1AX9EnbO2Q+/wBkh3Vx3gfU2oXpM=\nR:b.proto\na:0:0:444\nZ:Q1w/kQhG7blfzoxu/gq38LW4nwyX8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/import_public/sub2\nM:0:0:555\nR:a.pb.go\na:0:0:444\nZ:Q1KwBO7xlyBqFsbGZ/PQ2o9XGI1yk=\nR:a.proto\na:0:0:444\nZ:Q1iw/KUpxR9IRID+aDXX7jMDzIM/Q=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/imports\nM:0:0:555\nR:test_import_a1m1.pb.go\na:0:0:444\nZ:Q1O2pa0yMfapyZ564EVKB18wGogbc=\nR:test_import_a1m1.proto\na:0:0:444\nZ:Q1ed6ZhOgVpyPoTHwts6J3k42XNnU=\nR:test_import_a1m2.pb.go\na:0:0:444\nZ:Q1OYaRaj79IOUyaENOOFrneKkH+2U=\nR:test_import_a1m2.proto\na:0:0:444\nZ:Q11iL/72TMhQV6JCy0BBM0rJ0ajRo=\nR:test_import_all.pb.go\na:0:0:444\nZ:Q1E8+cviLodCCtxvmrew5oPBDwHlk=\nR:test_import_all.proto\na:0:0:444\nZ:Q1VZqN3y/J1qtm4evGibyA7Tbac7M=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/imports/fmt\nM:0:0:555\nR:m.pb.go\na:0:0:444\nZ:Q1hs2JPsMvCZ+eC+/d48yTCn0u1qw=\nR:m.proto\na:0:0:444\nZ:Q1e6URY/YbF+vThSd+1Kq8LrqBJbc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/imports/test_a_1\nM:0:0:555\nR:m1.pb.go\na:0:0:444\nZ:Q1HfsYUF1bswbYwgN/V2jywvtOWT0=\nR:m1.proto\na:0:0:444\nZ:Q1BVi2aqOMdRk4LZq2kANQyDEoOso=\nR:m2.pb.go\na:0:0:444\nZ:Q1oZMiVtAqYSQcKvBGxk+mGCRmA4k=\nR:m2.proto\na:0:0:444\nZ:Q1bpcHTjP0l90kTjWOdWAM2FuMFnI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/imports/test_a_2\nM:0:0:555\nR:m3.pb.go\na:0:0:444\nZ:Q10ZMsrE4ioyjKRaz+mnCmgKA4/oc=\nR:m3.proto\na:0:0:444\nZ:Q19EYz11z92dAjubyWae2jC6TbmqU=\nR:m4.pb.go\na:0:0:444\nZ:Q1chubHJAYnmA/QjsN55g19WHD1tY=\nR:m4.proto\na:0:0:444\nZ:Q1E731Jmna+rtMZXInVDEUSXmGZIg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/imports/test_b_1\nM:0:0:555\nR:m1.pb.go\na:0:0:444\nZ:Q1sChZk0Lsj5eWoQUVL9BWfdnVGLY=\nR:m1.proto\na:0:0:444\nZ:Q12IRxZNL+3Wr3LkdON7iVlKffZ2Y=\nR:m2.pb.go\na:0:0:444\nZ:Q1aCvcRv3p11CDRwjxcCsHO/CWi2U=\nR:m2.proto\na:0:0:444\nZ:Q14R8ZuSn/8NSoc2BmiLNTbXlb0LM=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/issue780_oneof_conflict\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q10MU9cx1b1/ZHyqikdJ8DGheesgc=\nR:test.proto\na:0:0:444\nZ:Q1r+cZDVTlGxSjcvpa6uMAX4+0xTU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/nopackage\nM:0:0:555\nR:nopackage.pb.go\na:0:0:444\nZ:Q1XgbYCIOFxhoFY5H7dhlDV9puTJE=\nR:nopackage.proto\na:0:0:444\nZ:Q1jM5vQYXaCML8mypfnwniiWS8xwU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/proto2\nM:0:0:555\nR:enum.pb.go\na:0:0:444\nZ:Q1qlJyNUJqgd4pxtaet0TUYlJnAbk=\nR:enum.proto\na:0:0:444\nZ:Q1wrrdVJjOZ2jVj049xA1Igscs/Xw=\nR:fields.pb.go\na:0:0:444\nZ:Q1deAYuvWW5qNrvIrS0hn+Hhzd79o=\nR:fields.proto\na:0:0:444\nZ:Q12S95rOo+8Ux0eZkY0Rdf3RBmKg0=\nR:nested_messages.pb.go\na:0:0:444\nZ:Q19l1VtMDtLAysp1pTCMOcL3FyoA0=\nR:nested_messages.proto\na:0:0:444\nZ:Q1Qo7h80i0gj6d5IVjcyQnylFjKBA=\nR:proto2.pb.go\na:0:0:444\nZ:Q10QoCtqz5CZz5Wu2FxdJwVNeMHpM=\nR:proto2.proto\na:0:0:444\nZ:Q1hG5aH+A8X38GFlXeTs3oiN0mkRQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/cmd/protoc-gen-go/testdata/proto3\nM:0:0:555\nR:enum.pb.go\na:0:0:444\nZ:Q1+S5ARvNrQZf8mfAy79eg6CfnZwM=\nR:enum.proto\na:0:0:444\nZ:Q1TEqQ8pFBhdqgESpLGrBd3YtBO28=\nR:fields.pb.go\na:0:0:444\nZ:Q14O2gM+LRWeDW13ha05rR+wqWl48=\nR:fields.proto\na:0:0:444\nZ:Q1023bqGCNwSXixYRxFSky8HZxtks=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/compiler\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/compiler/protogen\nM:0:0:555\nR:protogen.go\na:0:0:444\nZ:Q1su5uwwjSbsZol5q/X9gieVL9Quo=\nR:protogen_test.go\na:0:0:444\nZ:Q140Tj26XtVv1Qeyoz/BdiZ9XM6ss=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/encoding\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q11LGp1Nko8Pn6T9DhgxR5dmSrkVM=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/encoding/protojson\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1FI9Leewuo5EJVk6A/MlRIE6K8fo=\nR:decode.go\na:0:0:444\nZ:Q1y30F6vAuKVJNILjaAf6TVIDZXpA=\nR:decode_test.go\na:0:0:444\nZ:Q1pDpb+R0X6q8w8nSv6rRZZHx3oms=\nR:doc.go\na:0:0:444\nZ:Q1/bVWvMzmaMl3su16GAIN1nAmBB4=\nR:encode.go\na:0:0:444\nZ:Q1vpwr8u+Pgs2pCeWrAFj29toxuJY=\nR:encode_test.go\na:0:0:444\nZ:Q1QvE98kB0CljwdIBYkVIbQXLlvpY=\nR:well_known_types.go\na:0:0:444\nZ:Q1vzJSspxv7bdHAmz5w2AlVJk2rfU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/encoding/prototext\nM:0:0:555\nR:decode.go\na:0:0:444\nZ:Q1jF22TaddKSu7zBmHytqOAbLlpzA=\nR:decode_test.go\na:0:0:444\nZ:Q1Waz6iJ6MlhhbbHa+fUMPJvdxuTE=\nR:doc.go\na:0:0:444\nZ:Q1H9lq8mLacEAfX5Dn11cUSoSzBKA=\nR:encode.go\na:0:0:444\nZ:Q1jXSbtsVAhbfyRVw7Py1ich4IccU=\nR:encode_test.go\na:0:0:444\nZ:Q1kjN8n9BQyOpnicZHlQleMuDq5yI=\nR:other_test.go\na:0:0:444\nZ:Q1y9Aw9HsZbaluEkZ73zl9BUTuaT8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/encoding/protowire\nM:0:0:555\nR:wire.go\na:0:0:444\nZ:Q1c2qSYVXmF8b7olSbo2QFAyxQqD4=\nR:wire_test.go\na:0:0:444\nZ:Q1TOvA2msOWR/nKEwnEGyve0b0nk0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/benchmarks\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1QAfnPbegkRXGIuwzv5oS9HVMElo=\nR:download_benchdata.bash\na:0:0:444\nZ:Q1n/DveoBCn4Umdz72Imjh03nsBI4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/benchmarks/micro\nM:0:0:555\nR:micro_test.go\na:0:0:444\nZ:Q1pMIpzIcDWwJRG/PO2S7D66MX4KM=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/cmd\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/cmd/generate-corpus\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q18gDliLu8KoPEfGHv08WqIv7mH7o=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/cmd/generate-protos\nM:0:0:555\nR:main.go\na:0:0:444\nZ:Q1WmAyG4+RY3lIVRwHH2bSQ/1DcQc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/cmd/generate-types\nM:0:0:555\nR:impl.go\na:0:0:444\nZ:Q1qZeVcZ7xyEKZbbJjTdoow//Vdls=\nR:main.go\na:0:0:444\nZ:Q1u7efxr+Wb/XFzhde0xKzrkIfMbo=\nR:proto.go\na:0:0:444\nZ:Q1XPGTEzEGETjuTHZFWb2f98JSnY8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/cmd/pbdump\nM:0:0:555\nR:pbdump.go\na:0:0:444\nZ:Q1G0r5tURiRhz/PI7MuXse9tfqNxk=\nR:pbdump_test.go\na:0:0:444\nZ:Q1WNY9EbgaUgfpM/BMK4RxRmI8T+c=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/conformance\nM:0:0:555\nR:conformance_test.go\na:0:0:444\nZ:Q17kFKdN/cKe14un521vufDIQRRe4=\nR:failing_tests.txt\na:0:0:444\nZ:Q12jmj7l5rSw0yVb/vlWAYkK/YBwk=\nR:failing_tests_text_format.txt\na:0:0:444\nZ:Q1B8Y7MY4BK9mT6sBwYtHwVOdj6A0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/descfmt\nM:0:0:555\nR:desc_test.go\na:0:0:444\nZ:Q19kMBsLcg+g73hRBfw5Jiu5k3FXs=\nR:stringer.go\na:0:0:444\nZ:Q1+eMfbYkTLYtNDOU888G7kMdCNQI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/descopts\nM:0:0:555\nR:options.go\na:0:0:444\nZ:Q1HSmw3KbdA3yNuk9l4fQS4asAm/M=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/detrand\nM:0:0:555\nR:rand.go\na:0:0:444\nZ:Q1Pl55d8PiejIV2zuUEkZ2FvDCfvs=\nR:rand_test.go\na:0:0:444\nZ:Q1JHcCa1nX+EK0q6KOH++yHu+J/Y4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding/defval\nM:0:0:555\nR:default.go\na:0:0:444\nZ:Q1n5PtqybN88ANWLQT04OWKgTfmxs=\nR:default_test.go\na:0:0:444\nZ:Q1aeJWpDDMSbDzpJVIPJZ+pm3dtZA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding/json\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1RWZW7Y5uF4bQmaYjIGHEhluRzqM=\nR:decode.go\na:0:0:444\nZ:Q1yR33RwVPx6VYr32l2AZ2+4WbWGI=\nR:decode_number.go\na:0:0:444\nZ:Q1aN9ZhlDpl8dfzP1oxn+gA5JgNls=\nR:decode_string.go\na:0:0:444\nZ:Q1lYfJ3ARd7f0Kto/Tnn9KOZ+fZPE=\nR:decode_test.go\na:0:0:444\nZ:Q10//9HPJ8elZ3veSjXuGfen0EqlA=\nR:decode_token.go\na:0:0:444\nZ:Q1UDhBdeVP5BwESMN2p1fTYGbOav0=\nR:encode.go\na:0:0:444\nZ:Q1UwRYWbajg+DDIJzPWoxMcbF3Gug=\nR:encode_test.go\na:0:0:444\nZ:Q1EvUQICl534zR+9gdPuIOgBsUnVE=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding/messageset\nM:0:0:555\nR:messageset.go\na:0:0:444\nZ:Q1WgvLTXRrLSkBvfylctuHH/O74F4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding/tag\nM:0:0:555\nR:tag.go\na:0:0:444\nZ:Q15NdQvMbfLx7WFKnGzzpTxjwbpuw=\nR:tag_test.go\na:0:0:444\nZ:Q1NC/lCxYizId3hH1q0QY4M6MH7S4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/encoding/text\nM:0:0:555\nR:decode.go\na:0:0:444\nZ:Q14r/WeSOdSIJMSAFn6qKW2hCm+4w=\nR:decode_number.go\na:0:0:444\nZ:Q1+DHCE/nOKCUKF+d/sudxkSAnb10=\nR:decode_string.go\na:0:0:444\nZ:Q1h6dsNSw14wIAESb2euSYoA8PYzU=\nR:decode_test.go\na:0:0:444\nZ:Q1bv+KNPvSqddwMyrfzTa+FNKFiSM=\nR:decode_token.go\na:0:0:444\nZ:Q1e5pAmfLHWkc8B+Yd7Z/5Vy0yzQk=\nR:doc.go\na:0:0:444\nZ:Q16/6QbHTPH3fYDS+IAwaz+IREXEA=\nR:encode.go\na:0:0:444\nZ:Q1sLTORS9C3XK9EM1Tx5oKJ6LYZtc=\nR:encode_test.go\na:0:0:444\nZ:Q1oOmohmvyamZfSzU65dyX5qiie5Q=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/errors\nM:0:0:555\nR:errors.go\na:0:0:444\nZ:Q1oqVmeiJ8HJz6h8xT846xZ2n/BvI=\nR:errors_test.go\na:0:0:444\nZ:Q10+Z6qua23KFCxR2pCHPgYcQeL98=\nR:is_go112.go\na:0:0:444\nZ:Q1vkyDh8Y+aQ+ngPLCiQ6ONQrtn0g=\nR:is_go113.go\na:0:0:444\nZ:Q1RK9S2X8ibjqiWz/v9+9sU8xDFbQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/filedesc\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1qf/JMewn3mFakvvvM/hIp/uSDis=\nR:build_test.go\na:0:0:444\nZ:Q15KLppe3t6WzAn57ZAz/vsIBsMM4=\nR:desc.go\na:0:0:444\nZ:Q1IhQIFYfbTI0N5JChXKjb3+3l5Dk=\nR:desc_init.go\na:0:0:444\nZ:Q1K6Gqo2GNTf6CLLsXVeR8PHDefNs=\nR:desc_lazy.go\na:0:0:444\nZ:Q1AgC3vmkMUEEMvH7R1fNCK/n4Eko=\nR:desc_list.go\na:0:0:444\nZ:Q1r+T17GVr4MoY/Cl72oEYcx0yFzc=\nR:desc_list_gen.go\na:0:0:444\nZ:Q127IzBZuceqoPVhKckqORosVOCRA=\nR:desc_test.go\na:0:0:444\nZ:Q1BDgD5BaLjdborJM8msT3pWLd8d0=\nR:placeholder.go\na:0:0:444\nZ:Q14MUB4S1k3pChZz/Nt1UHBSzNXFc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/filetype\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1gLGph1pi4ai6VadLqwpCNyu7fFY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/flags\nM:0:0:555\nR:flags.go\na:0:0:444\nZ:Q1RmBd8UWAhP5OnYJ1/CUhFCK2LQk=\nR:proto_legacy_disable.go\na:0:0:444\nZ:Q1HRfjKcApUNp0mWX7s0/8UXG4ZJ4=\nR:proto_legacy_enable.go\na:0:0:444\nZ:Q1jpf4rALsla5s449SriWRRVd478Q=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1fCZITAkDxz8V1qgc3tWWTyeNa4o=\nR:oss-fuzz-build.sh\na:0:0:444\nZ:Q1l+x0kwYbskEUctiLaZfD76HEGh4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/jsonfuzz\nM:0:0:555\nR:fuzz.go\na:0:0:444\nZ:Q1srKoLZMyfHzDysEC9kMnVaa/L9A=\nR:fuzz_test.go\na:0:0:444\nZ:Q1iWmF/lQfCle1g4DgAutmrT9HYgI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/jsonfuzz/corpus\nM:0:0:555\nR:e619335648415cae976b3200d5a291e8da4b4866\na:0:0:444\nZ:Q15hkzVkhBXK6XazIA1aKR6NpLSGY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/textfuzz\nM:0:0:555\nR:fuzz.go\na:0:0:444\nZ:Q1l6JKR+MBIHs94zPm4yX56578d5w=\nR:fuzz_test.go\na:0:0:444\nZ:Q1WPrMk8tqgq/Kgo5JuC0Hi3bN/TA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/textfuzz/corpus\nM:0:0:555\nR:a950e4f0890f34717c5c9beffe1bd0cee33e5a2b\na:0:0:444\nZ:Q1qVDk8IkPNHF8XJvv/hvQzuM+Wis=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/wirefuzz\nM:0:0:555\nR:fuzz.go\na:0:0:444\nZ:Q16uwhQDAWuMqZgDnD8mWBCutKjzQ=\nR:fuzz_test.go\na:0:0:444\nZ:Q16942Yif9sKH6nOM2WfNLokBKLP0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzz/wirefuzz/corpus\nM:0:0:555\nR:20019c4ef10ebf8031c8d204bdd0ae1ec214bf90\na:0:0:444\nZ:Q1IAGcTvEOv4AxyNIEvdCuHsIUv5A=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/fuzztest\nM:0:0:555\nR:fuzztest.go\na:0:0:444\nZ:Q1d7Y4JrlzaeR5n/lbrmLRUzbII0g=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/genid\nM:0:0:555\nR:any_gen.go\na:0:0:444\nZ:Q1MhTlf13QfF01Tzlbf+1K50KQJQY=\nR:api_gen.go\na:0:0:444\nZ:Q113A/vzrCux4VZDNcW81jMlvDX10=\nR:descriptor_gen.go\na:0:0:444\nZ:Q1nv/yzcGE2GfcqeRPtO2/0/bg4WQ=\nR:doc.go\na:0:0:444\nZ:Q1TGO/6k9EjWY9PdhaL+/jG1448/s=\nR:duration_gen.go\na:0:0:444\nZ:Q1IotD7AwXEdpe8kWgd1DD8FxuTPY=\nR:empty_gen.go\na:0:0:444\nZ:Q1PeD1aPuy94IiY9bmaUQDNX9+hCo=\nR:field_mask_gen.go\na:0:0:444\nZ:Q1wJGIaAbsUv60kmRdF4BhWzqKF6w=\nR:goname.go\na:0:0:444\nZ:Q1NVy6KRMWEve4Qy4qyjEAbLn1PMI=\nR:map_entry.go\na:0:0:444\nZ:Q1pt5Pfk3n3C+yngeE2+N2l52LkWM=\nR:source_context_gen.go\na:0:0:444\nZ:Q1sgN/bb1HbkFEqSV5wYAnP+uGVu0=\nR:struct_gen.go\na:0:0:444\nZ:Q1AI+/VJOa1Ez7PUA/ZcF2I3z0awM=\nR:timestamp_gen.go\na:0:0:444\nZ:Q1Y/Uz2zTA4kKIpzOGYRo5rVO55kk=\nR:type_gen.go\na:0:0:444\nZ:Q1lOc+ERx8zvsrUmpJYOXNqamrLlk=\nR:wrappers.go\na:0:0:444\nZ:Q1PSX6qLp1IATabClA+kSf91q/tks=\nR:wrappers_gen.go\na:0:0:444\nZ:Q1uSEYTvYqKAl4dg2hN1DoPW4KFfc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/impl\nM:0:0:555\nR:api_export.go\na:0:0:444\nZ:Q1zu/7Uw3k8I7x6sHUJIb49osJAcQ=\nR:checkinit.go\na:0:0:444\nZ:Q1xeW5dUZWLYF2s5/y22P47YhflKI=\nR:codec_extension.go\na:0:0:444\nZ:Q1YEK/l35RsE0RVxflN/5/h0JwmUU=\nR:codec_field.go\na:0:0:444\nZ:Q1LXHhJlHXjRBQ2pPDIzAq9x+het8=\nR:codec_gen.go\na:0:0:444\nZ:Q1coqnKgqnli1JLN4t1lZjtzM0jsw=\nR:codec_map.go\na:0:0:444\nZ:Q17JabhtHBfcfgKqguTxl5JjBiUjQ=\nR:codec_map_go111.go\na:0:0:444\nZ:Q1OdV9+KBB+pLy98nPj1ed8D8FH2Q=\nR:codec_map_go112.go\na:0:0:444\nZ:Q1x9XY88H4hCs7ZOVxh1So1jUcxXY=\nR:codec_message.go\na:0:0:444\nZ:Q1Bn57f0I45M+HAwMGi6Wjv1rrVqA=\nR:codec_messageset.go\na:0:0:444\nZ:Q1+OwqyP1XEudbvT1K6UI5pQkbepo=\nR:codec_reflect.go\na:0:0:444\nZ:Q1f+JHcEJ9N5Jhwz9dxEGlhqam0mE=\nR:codec_tables.go\na:0:0:444\nZ:Q1WT8fD2YDaOYL1dlPtKGiTcQMbXs=\nR:codec_unsafe.go\na:0:0:444\nZ:Q1TIMzJ6dMr/5akO/HcexbAJJbr+c=\nR:convert.go\na:0:0:444\nZ:Q1eNnJ+nG1YHpaaHAUyzb290wwAPU=\nR:convert_list.go\na:0:0:444\nZ:Q1vNmQfczUEFth/GfAwV7jx6QcUqQ=\nR:convert_map.go\na:0:0:444\nZ:Q1BkoP1oTFq3WC/Ns5k1ClvNDgRW8=\nR:decode.go\na:0:0:444\nZ:Q1jbykd0RwzKkE+/IB3Igf273CAMk=\nR:encode.go\na:0:0:444\nZ:Q14DOnD5QvPv2QyKeO/0rCfDPAw1I=\nR:enum.go\na:0:0:444\nZ:Q1+Jo6ep3qx/E1SXudVuVPCbDlg/E=\nR:enum_test.go\na:0:0:444\nZ:Q1qSJSc8tMUjY5eymveP2itpu0dZ0=\nR:extension.go\na:0:0:444\nZ:Q1u02xxhYX90Sth6k5DON+TApgAAc=\nR:extension_test.go\na:0:0:444\nZ:Q1Zx7uACBPf0eG3n0660DkCj2z3zo=\nR:lazy_test.go\na:0:0:444\nZ:Q1xfZrsoeepxXTE0IP1Oi6UiqRVqM=\nR:legacy_aberrant_test.go\na:0:0:444\nZ:Q1spGptL+f9TqIRGpdl+eNwNUj9/0=\nR:legacy_enum.go\na:0:0:444\nZ:Q19rk4TDVkbiF/yiOi64DoTxibEwA=\nR:legacy_export.go\na:0:0:444\nZ:Q1+0ZSy1BPK5VU2tawSALaHraM3Vc=\nR:legacy_export_test.go\na:0:0:444\nZ:Q1474RRqH04bLaL29Voub932rPO7s=\nR:legacy_extension.go\na:0:0:444\nZ:Q1gNR3/+SHAAnQ8jd9Td8JBZ0qrQ8=\nR:legacy_file.go\na:0:0:444\nZ:Q1jLsI2e335th9qidEf+9X0bkVO4c=\nR:legacy_file_test.go\na:0:0:444\nZ:Q1jwYu1VK/MyxtEFT/n7npGVruAmw=\nR:legacy_message.go\na:0:0:444\nZ:Q18NWtokNPbpPapJOWj2oJYhwdlxc=\nR:legacy_test.go\na:0:0:444\nZ:Q1lnxFdV0Fc1G4iVGh6p7HJD1nw+A=\nR:merge.go\na:0:0:444\nZ:Q1eWuARh0QZ2L5GluYmmF24gEQT2Y=\nR:merge_gen.go\na:0:0:444\nZ:Q1dd9tKDE4KC9Q8eWt2Fk5573R8P0=\nR:message.go\na:0:0:444\nZ:Q15bFhTeLuNg3ZxwcrYSYyG/xHIhM=\nR:message_reflect.go\na:0:0:444\nZ:Q1Cz4+AepU0S3oahhnzwKq/EMZ3wM=\nR:message_reflect_field.go\na:0:0:444\nZ:Q1G322DehTt1YaspLYDULKdJClvq4=\nR:message_reflect_gen.go\na:0:0:444\nZ:Q17L1rcSDbLbc5Aj+CDMArpPLnlZo=\nR:message_reflect_test.go\na:0:0:444\nZ:Q1D1yX47MkMNDN2Wl4UzrmJuzUtss=\nR:pointer_reflect.go\na:0:0:444\nZ:Q1ayX8xJRC5ykcYw9vzlTFZiBGpnY=\nR:pointer_unsafe.go\na:0:0:444\nZ:Q1xQ3UADwnEzBv28rTK4iGVzzXb1Y=\nR:validate.go\na:0:0:444\nZ:Q1nake9AlTd4cKB+PUl+p1eCKvnJA=\nR:weak.go\na:0:0:444\nZ:Q16c4RXDNOZv4tPXu6ve9L3jjpyrk=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/msgfmt\nM:0:0:555\nR:format.go\na:0:0:444\nZ:Q1zXWFusv36RQLuF7S0pWEjTlKbMs=\nR:format_test.go\na:0:0:444\nZ:Q1kBVA7bk5IM8FgAUps7RySEcizkY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/order\nM:0:0:555\nR:order.go\na:0:0:444\nZ:Q14e4MaXFctxzvSjimDlL8T22F6wg=\nR:order_test.go\na:0:0:444\nZ:Q1yhoeiZ2O3X8jB5dsWmnZM8mppBI=\nR:range.go\na:0:0:444\nZ:Q1iSz/6ULkieBmglVhuCU/r47DoY4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/pragma\nM:0:0:555\nR:pragma.go\na:0:0:444\nZ:Q1W6KRzZQm/zkvXeVWIob+7E4n7Qs=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/protobuild\nM:0:0:555\nR:build.go\na:0:0:444\nZ:Q1wgxWoNq9h08Qk3Nf+9kqH0DT6Dg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/protolegacy\nM:0:0:555\nR:proto.go\na:0:0:444\nZ:Q1Wux2lnxIfAgnVBAl9NYQK/j3CYc=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/set\nM:0:0:555\nR:ints.go\na:0:0:444\nZ:Q1rTD05xJqyTcHOIAyUVmJ8ZaXRiE=\nR:ints_test.go\na:0:0:444\nZ:Q1dW21SX0A0/fwnPM+c+nWKl/KJlo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/strs\nM:0:0:555\nR:strings.go\na:0:0:444\nZ:Q1wpxJ+liVU1mmZza2XqkbsVQerM8=\nR:strings_pure.go\na:0:0:444\nZ:Q1VOfHi7iiAI137EUQ9J5qhaaVszs=\nR:strings_test.go\na:0:0:444\nZ:Q1vbpEP8Ce9zu1C7CcKNyNRzTyCe8=\nR:strings_unsafe.go\na:0:0:444\nZ:Q1cQLb4s9m6JvPMgc8oMpblr4Ph0A=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/annotation\nM:0:0:555\nR:annotation.pb.go\na:0:0:444\nZ:Q1Giz8iLBjsRRTlWyvJ3gHbDW2gD8=\nR:annotation.proto\na:0:0:444\nZ:Q1yQUW4FncesKMLWyoGrcLr12Y+l8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks\nM:0:0:555\nR:benchmarks.pb.go\na:0:0:444\nZ:Q1/9ZAz2/0DE+RoBjXa63TGBbt1eE=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message1\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message1/proto2\nM:0:0:555\nR:benchmark_message1_proto2.pb.go\na:0:0:444\nZ:Q18aHg7yEjKA71vqbVhE3yRLROcOE=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message1/proto3\nM:0:0:555\nR:benchmark_message1_proto3.pb.go\na:0:0:444\nZ:Q1gE4+7B3mRXSjRuOHzAwVPAv3L8U=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message2\nM:0:0:555\nR:benchmark_message2.pb.go\na:0:0:444\nZ:Q17z8D21pawrwKE7c82CTOBArl9wQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message3\nM:0:0:555\nR:benchmark_message3.pb.go\na:0:0:444\nZ:Q1ZVURkznA3QKogoQABmB5/fLmQxw=\nR:benchmark_message3_1.pb.go\na:0:0:444\nZ:Q17Uf7lZ1bQ23eH8XseU7hR9U9fIo=\nR:benchmark_message3_2.pb.go\na:0:0:444\nZ:Q1OpycheVinYAWqLJluvCX8f3gBOg=\nR:benchmark_message3_3.pb.go\na:0:0:444\nZ:Q1iEGlJzniR7cjNAPeG2K7CUKHVl8=\nR:benchmark_message3_4.pb.go\na:0:0:444\nZ:Q1ise5NkH9d69YWsDA9eKr8oBI34k=\nR:benchmark_message3_5.pb.go\na:0:0:444\nZ:Q1/v3vRboz3HgikZeyjWPitLpyWho=\nR:benchmark_message3_6.pb.go\na:0:0:444\nZ:Q1UL9DGz/G5N/erxsFHTLv9jELHCc=\nR:benchmark_message3_7.pb.go\na:0:0:444\nZ:Q1nMi7tBQ/l4vXbHUuTraXEJg00yI=\nR:benchmark_message3_8.pb.go\na:0:0:444\nZ:Q1XYeY5JEprvz6AvT/VQon/QCL7Lg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/datasets/google_message4\nM:0:0:555\nR:benchmark_message4.pb.go\na:0:0:444\nZ:Q1CImvJV59/ooW8XELt63uLsWEw7c=\nR:benchmark_message4_1.pb.go\na:0:0:444\nZ:Q1HfPf3EhpldQOsTY7LWwYMrHKmlU=\nR:benchmark_message4_2.pb.go\na:0:0:444\nZ:Q1IVJ5rHnionSKCklXZjSUu6lI3xo=\nR:benchmark_message4_3.pb.go\na:0:0:444\nZ:Q1K8GcLl/d0PLxxX+dAbAMjujiqXY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/benchmarks/micro\nM:0:0:555\nR:micro.pb.go\na:0:0:444\nZ:Q11qg+fK7QfjOQmgpFXqghNPZHQ3g=\nR:micro.proto\na:0:0:444\nZ:Q1rbPhQUkmC2J7tQPzAK1gKk+r4ws=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/conformance\nM:0:0:555\nR:conformance.pb.go\na:0:0:444\nZ:Q1du/YRfhfwQmvYKji1GA6JSEy2jU=\nR:test_messages_proto2.pb.go\na:0:0:444\nZ:Q1tuQcfyWvlmuKi44dOmEkI5tO78g=\nR:test_messages_proto3.pb.go\na:0:0:444\nZ:Q1KAjViujLN/Qr1aoqFsiFAVwIYrQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/enums\nM:0:0:555\nR:enums.pb.go\na:0:0:444\nZ:Q1H8rBrpQewujERAuyn77ObvOoVX8=\nR:enums.proto\na:0:0:444\nZ:Q10Oi0fDjUysQBbrAcVkGVRefob88=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/fieldtrack\nM:0:0:555\nR:fieldtrack.pb.go\na:0:0:444\nZ:Q1Mvj+Bpxv784LKztBDMBfV07QvFU=\nR:fieldtrack.proto\na:0:0:444\nZ:Q1uMW7TncZFBYeDGp98FvHHuPtJNo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/fuzz\nM:0:0:555\nR:fuzz.pb.go\na:0:0:444\nZ:Q1zQH6Kq1ca9+obCZHMLN2uemj9vU=\nR:fuzz.proto\na:0:0:444\nZ:Q1guYzgLGs6Jc511Y5wT7bVM/DpVo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/irregular\nM:0:0:555\nR:irregular.go\na:0:0:444\nZ:Q1/+cExXsR/piYvzkKunPwNjV2mmc=\nR:irregular.proto\na:0:0:444\nZ:Q18LGS1rPvRtQyOQ1Y/iFW9b5OnS0=\nR:test.pb.go\na:0:0:444\nZ:Q1l6Aoix/Pu3q4SzkoawG9oeo9M1E=\nR:test.proto\na:0:0:444\nZ:Q198RpnA5KIjy0v+5lPgPDSFSZUvs=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy\nM:0:0:555\nR:legacy.pb.go\na:0:0:444\nZ:Q1r2E1/afoam+gHfiG0xlkPKdG3wU=\nR:legacy.proto\na:0:0:444\nZ:Q1mKTRnQp0/6jmibIZJ7kFeFH5Mw8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/bug1052\nM:0:0:555\nR:bug1052.pb.go\na:0:0:444\nZ:Q1PrbeSBZgLbQeNQXE5ae31664VLY=\nR:bug1052.proto\na:0:0:444\nZ:Q1m+ug7p4Z40410z/3LGycR8+uoog=\nR:bug1052_test.go\na:0:0:444\nZ:Q1XS6Fckgvgni7BkVpIJDpkTk2bsY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20160225_2fc053c5\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1+lcj4ukCeNtlcqIEPor7jusXPc4=\nR:test.proto\na:0:0:444\nZ:Q1u9pfnbzY4U5ajznD8dyrnQjrJK4=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20160519_a4ab9ec5\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1R8aW2SBOeRK8nlqp6b/qqsx6Sis=\nR:test.proto\na:0:0:444\nZ:Q1/sxH8QfdfIaaM94HGFqTsnmwD+o=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20180125_92554152\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1Wsv4wRIEY/TyFso66wvyL6CV0VY=\nR:test.proto\na:0:0:444\nZ:Q1TzJ/A8hPN/F0CXlKyecieeyst1w=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20180430_b4deda09\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q14/NzzDU/yY3OTURa6MMfGpqvlpU=\nR:test.proto\na:0:0:444\nZ:Q1qX4jUXQYSzvo0uptX0U4lstGuiA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20180814_aa810b61\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1ooviO1H/EPWGlojDqxW/CuImKG4=\nR:test.proto\na:0:0:444\nZ:Q189OSou89ToWnuRVSWfwvg1vCoPI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto2_20190205_c823c79e\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1iBzuT95oigjsRX/h7o3Isbj9qvo=\nR:test.proto\na:0:0:444\nZ:Q1Y25sKdWNdS1BFVepOSHJsqFkeqw=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20160225_2fc053c5\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1Va6a4Fmhjx++MEPon0+MO4gpQ1Q=\nR:test.proto\na:0:0:444\nZ:Q1g0gLReDwtwi1rErxSak5ywc5ecs=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20160519_a4ab9ec5\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1A/Eh3m7VaRd7jxxft2U5jvHlvZc=\nR:test.proto\na:0:0:444\nZ:Q1LngQPpG7HGyjuLM1eS7cQP8j+1Q=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20180125_92554152\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1kjHwsd5Aehk7rn0hXYklNIZlQek=\nR:test.proto\na:0:0:444\nZ:Q1LAdxl/q1c0laTYXGdsLtQ21lCS8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20180430_b4deda09\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1nGTjQKFQSDphSc2Obc92Rmw4pzw=\nR:test.proto\na:0:0:444\nZ:Q1WXBBx1+hs175TB7yxhO7ZHiFUyQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20180814_aa810b61\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1HGJLffQYut1LbOHDIKeEhIa2ri0=\nR:test.proto\na:0:0:444\nZ:Q12/DhI+6kt2SleUmqpUED3L8+CN0=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/legacy/proto3_20190205_c823c79e\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1hrQHMNLMxvjpHi590VxoLsNFZzE=\nR:test.proto\na:0:0:444\nZ:Q1kpcpevIwTWMbV15t30MlHRzZBPA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/messageset\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/messageset/messagesetpb\nM:0:0:555\nR:message_set.pb.go\na:0:0:444\nZ:Q15I+RNdq9ekf++wiATrCv5To+04I=\nR:message_set.proto\na:0:0:444\nZ:Q1X0/QSMIS73qbjsz+lgJ4A0h7r4A=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/messageset/msetextpb\nM:0:0:555\nR:msetextpb.pb.go\na:0:0:444\nZ:Q1IZuK6G/HJhZG2z3JnFdBkD7JVLc=\nR:msetextpb.proto\na:0:0:444\nZ:Q1S03Ke0UOosqZdgMMCF5NCizaT8A=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/news\nM:0:0:555\nR:news.pb.go\na:0:0:444\nZ:Q1sglusyAGWO9YwslWIFOU7vtvgFc=\nR:news.proto\na:0:0:444\nZ:Q1CO3yu6f1cdnV3aH68L7SVVQKK8E=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/nullable\nM:0:0:555\nR:methods_test.go\na:0:0:444\nZ:Q1ICyDhyqniWM4W4MYC6yAlylMArA=\nR:nullable.go\na:0:0:444\nZ:Q1ko/UkoHYbNeFleUxjqF/uS0QlDI=\nR:nullable_test.go\na:0:0:444\nZ:Q1PQxRCN3xvf0F1SKZBNQ/9XloDsU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/order\nM:0:0:555\nR:order.pb.go\na:0:0:444\nZ:Q1tZafbPnE4Ettwd8HSFXATKNGVC4=\nR:order.proto\na:0:0:444\nZ:Q1wwUGWE4u4z3mZCB5k2+UITB7LzU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/registry\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1fiFnlwTS3OPpYhMKcqQlbt7FwWY=\nR:test.proto\na:0:0:444\nZ:Q1zFrkzDrA0tjBTIGI0a9tTLb6hEI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/required\nM:0:0:555\nR:required.pb.go\na:0:0:444\nZ:Q1IeB314xilMz3sclMhbjrZyWpTf8=\nR:required.proto\na:0:0:444\nZ:Q1TD8IREGs47/Lhg2JvGcwpsY4exo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/test\nM:0:0:555\nR:ext.pb.go\na:0:0:444\nZ:Q134Rolf1/D6ZACTGj4b3BcAzc1jo=\nR:ext.proto\na:0:0:444\nZ:Q1d6DZMUI9N8fV6TIailTSOzNO7/I=\nR:test.pb.go\na:0:0:444\nZ:Q1XyoVSx+qlwD8SB8ii8UHQcL8N7A=\nR:test.proto\na:0:0:444\nZ:Q167D6au09lIGYiAwwvstoTj6w91g=\nR:test_import.pb.go\na:0:0:444\nZ:Q1Y47pGlvV87ZgOGmmwiK3h8YCZHw=\nR:test_import.proto\na:0:0:444\nZ:Q1RHvqr3PUB4dD1rVLqikL+HrHuwk=\nR:test_public.pb.go\na:0:0:444\nZ:Q1JwMT448yi0UXJX/qyG6pJj77FA8=\nR:test_public.proto\na:0:0:444\nZ:Q10jYWjsjda3HR6VgAgIX12n24zIs=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/test/weak1\nM:0:0:555\nR:test_weak.pb.go\na:0:0:444\nZ:Q1/89lnY2WTqNYFc8Oed1jlgmaJ6I=\nR:test_weak.proto\na:0:0:444\nZ:Q1LSm69GqQb+lD8IWjqvk7WLt3sGw=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/test/weak2\nM:0:0:555\nR:test_weak.pb.go\na:0:0:444\nZ:Q1JywHIZiJ4ZkMVP35IrcpcYYgY74=\nR:test_weak.proto\na:0:0:444\nZ:Q1KEQHsr3UZdsJ0EQ2Pghdrl8dvqQ=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/test3\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1KlHCrFGEJ+Z0ngh5Eoq31zTfvlE=\nR:test.proto\na:0:0:444\nZ:Q1K2iRu3MUVdYeyPI4k9xcg9y6bUk=\nR:test_extension.pb.go\na:0:0:444\nZ:Q1Fa1HP3R5twQK/KCYOt8lPZ0VU9M=\nR:test_extension.proto\na:0:0:444\nZ:Q1B5YFOx7iClU81Bun9GKHasbruJw=\nR:test_import.pb.go\na:0:0:444\nZ:Q1OkFCWB4v6p1KCL1iBJLrxbMvkXA=\nR:test_import.proto\na:0:0:444\nZ:Q1a3Fm+17+yTdvRF4CP71lse4slbI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/textpb2\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1MkasODszkZ2C5lgAGp09mRvrRxg=\nR:test.proto\na:0:0:444\nZ:Q1LTtTaKp2scBKW98J4b7ZnoPLho8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/testprotos/textpb3\nM:0:0:555\nR:test.pb.go\na:0:0:444\nZ:Q1v4oXGnpLbiFssOtVubI58N7VeY4=\nR:test.proto\na:0:0:444\nZ:Q16dcOGeoVEbvrDzz3R2d9xA3a2UA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/version\nM:0:0:555\nR:version.go\na:0:0:444\nZ:Q1a/BTXqFJ8f5t1VH3GA1t6CADJug=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/internal/weakdeps\nM:0:0:555\nR:doc.go\na:0:0:444\nZ:Q18DHGLth6LQ0Qfr+A+qD9DAd2kbc=\nR:weakdeps.go\na:0:0:444\nZ:Q1aHHfmRI7U3v1BB5/Wksjw9dYDSo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/proto\nM:0:0:555\nR:bench_test.go\na:0:0:444\nZ:Q1H6lZkbJjkrVq8rzZwYgDqrccvY4=\nR:checkinit.go\na:0:0:444\nZ:Q1zqbfo9YWQW647xclOiYpKFWbZPQ=\nR:checkinit_test.go\na:0:0:444\nZ:Q1OSOrOFjkmDKIxexQ/vEwoFOsK3w=\nR:decode.go\na:0:0:444\nZ:Q1MIPlTS+44Lf6uwhE08nX41q1qiE=\nR:decode_gen.go\na:0:0:444\nZ:Q1DVSGF85ter68U8VjpCnHg0Sjw9E=\nR:decode_test.go\na:0:0:444\nZ:Q1r/PvjfCHgadwrvDGjO+O2rBHzqM=\nR:doc.go\na:0:0:444\nZ:Q1uOFypo4IZtMAYQ2RCyXyfpKtQ9A=\nR:encode.go\na:0:0:444\nZ:Q1eam+tjzPMUymVEH9clVqgp1gQZw=\nR:encode_gen.go\na:0:0:444\nZ:Q12Hw1roOHv5MG0vi4jRarixaMRJ0=\nR:encode_test.go\na:0:0:444\nZ:Q1+Q8KgDWLUlHyyLyhIzVlE2yYNDg=\nR:equal.go\na:0:0:444\nZ:Q1OYlV9F7SGoecN1PtqeHERCxyMVM=\nR:equal_test.go\na:0:0:444\nZ:Q1kJtbUazIiVUWBQUE0YEYT9nN3vI=\nR:extension.go\na:0:0:444\nZ:Q1uVxe3zvbRd/Yikrl0JbB7ii0q4M=\nR:extension_test.go\na:0:0:444\nZ:Q1yRRR98vrMGyHdo38x4WKQvvv8s8=\nR:merge.go\na:0:0:444\nZ:Q1DOf1dxBEi7T/rL0pLiCHcSjN/qk=\nR:merge_test.go\na:0:0:444\nZ:Q1cXOldEGJ0127J7WQvkA7cB9FtWo=\nR:messageset.go\na:0:0:444\nZ:Q16RfoXkQm8xyfm2JO50+uJGiRVRs=\nR:messageset_test.go\na:0:0:444\nZ:Q1BY95hEbHmt9eIfIpx5PA6Fh8/sA=\nR:methods_test.go\na:0:0:444\nZ:Q1jn5APYt40EeN0DaCv5nJrcvRG1o=\nR:nil_test.go\na:0:0:444\nZ:Q177fGV3011A7byiWT12UETBGeSEE=\nR:noenforceutf8_test.go\na:0:0:444\nZ:Q1SQYIDBoIiZBDzm+xKm4AHUCQqp4=\nR:proto.go\na:0:0:444\nZ:Q1pvpIbI1pitFC62kRDTUL7V/uNYY=\nR:proto_methods.go\na:0:0:444\nZ:Q1tcei4hu3s7wvoiHgLMNTB3iBrYo=\nR:proto_reflect.go\na:0:0:444\nZ:Q1anyVEB9yDILqixF8t4PfehYA8G0=\nR:reset.go\na:0:0:444\nZ:Q1gm47HavSItkf52i2MP2rBf0G8TI=\nR:reset_test.go\na:0:0:444\nZ:Q1JttOuWq/LUJ+a+B3Hov8ZP2Pw+M=\nR:size.go\na:0:0:444\nZ:Q10Th/tbDfoFHyugSxyumTwBWa83Q=\nR:size_gen.go\na:0:0:444\nZ:Q1uJNItcP46iXO8mo+6uzaqaLIeUk=\nR:testmessages_test.go\na:0:0:444\nZ:Q1Xo9/ukQeU4OmYh8v+iN2gtqhAHM=\nR:validate_test.go\na:0:0:444\nZ:Q1wHKwMPPo2xhMVmftUbUWi3B2dXQ=\nR:weak_test.go\na:0:0:444\nZ:Q1XVfvXdIHDzDT4YJX6ssLMGCV7MQ=\nR:wrappers.go\na:0:0:444\nZ:Q1l+UqlFvF8JaqoEVPFHEZHjPYQiE=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect/protodesc\nM:0:0:555\nR:desc.go\na:0:0:444\nZ:Q1znYAktwG7KHJ7WRW9gmyehxIdJ0=\nR:desc_init.go\na:0:0:444\nZ:Q1TDBO8kW0QqeY7U/jggnBAmPWE94=\nR:desc_resolve.go\na:0:0:444\nZ:Q1aFTrPyF+blhNvtNcN540+Xxtjfw=\nR:desc_validate.go\na:0:0:444\nZ:Q1VpgBJ7cP1PAGYc0jh2SBAylGKrQ=\nR:file_test.go\na:0:0:444\nZ:Q18zQaeFjxPBalnWSRbWVupx/gTYE=\nR:proto.go\na:0:0:444\nZ:Q19V8zpDT5zzTi6qzWzs1wSkskEpE=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect/protopath\nM:0:0:555\nR:path.go\na:0:0:444\nZ:Q1wnWRLTAecDPlu9rGZooVxZGhfwQ=\nR:step.go\na:0:0:444\nZ:Q1T4f5HXTAYmzRJoD40lBfWY6Lwfg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect/protorange\nM:0:0:555\nR:example_test.go\na:0:0:444\nZ:Q1jM7OS6xEuXZlE3t4O5o3Fp+HGZs=\nR:range.go\na:0:0:444\nZ:Q1ohuOY1kX3fAraCoEv4zOt3gxye0=\nR:range_test.go\na:0:0:444\nZ:Q1tN1ww3aSdm5nS+O1+41t/a6l5DY=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect/protoreflect\nM:0:0:555\nR:methods.go\na:0:0:444\nZ:Q1sV6UWSee/FgLT2zLZj9l/UXVhrk=\nR:proto.go\na:0:0:444\nZ:Q1WN50qXDpLesYnRYdXqTkgTTMOEU=\nR:proto_test.go\na:0:0:444\nZ:Q1btSJjcUnKYP088pGn70Oa2VEBto=\nR:source.go\na:0:0:444\nZ:Q10H8kDdYPbLwvRfbTwaSycn4Vpjk=\nR:source_gen.go\na:0:0:444\nZ:Q13+PKNQT6o3gUjij5xZbXe5BTat4=\nR:source_test.go\na:0:0:444\nZ:Q1yhJpN9IVE6Dw4UKaFEvdkXB12UU=\nR:type.go\na:0:0:444\nZ:Q1ZPIb2dyba0xLK+A+X3SVYPSdVM4=\nR:value.go\na:0:0:444\nZ:Q1VNf65X4DJevToveafY/dNi8l3Ls=\nR:value_pure.go\na:0:0:444\nZ:Q14RXOf+TMpPu8rVv6wW77CB9pf6c=\nR:value_test.go\na:0:0:444\nZ:Q1CHosX7DmyCF3E/AdCFmDmqTTYHM=\nR:value_union.go\na:0:0:444\nZ:Q1YZdt6dqqo/259UwnqoRA3uiExKA=\nR:value_unsafe.go\na:0:0:444\nZ:Q1FlEgO12b/VsmEa2teFo5ZQQhmT8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/reflect/protoregistry\nM:0:0:555\nR:registry.go\na:0:0:444\nZ:Q1y9L0xdw2xsrXbuTNBUarjTLrfrs=\nR:registry_test.go\na:0:0:444\nZ:Q1gFi6HFzI8gscEJwk9MNCYzWchvA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/runtime\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/runtime/protoiface\nM:0:0:555\nR:legacy.go\na:0:0:444\nZ:Q1j6SAgNFtrT5t7XmkGQb2E1te528=\nR:methods.go\na:0:0:444\nZ:Q14WaOxeyFmdA9PZOzSqUZ7ae/i9o=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/runtime/protoimpl\nM:0:0:555\nR:impl.go\na:0:0:444\nZ:Q128xLWgb7U8RmhYq3EE/kKbKrleU=\nR:version.go\na:0:0:444\nZ:Q1pxCu7ZP0km6iX3tE08vXCe82MmU=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/testing\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/testing/protocmp\nM:0:0:555\nR:reflect.go\na:0:0:444\nZ:Q1SNd4FmvW+OF+K202WpUMoxptl0E=\nR:reflect_test.go\na:0:0:444\nZ:Q1bTO3ZyksFNVW5z03kRpXV/5dhr8=\nR:util.go\na:0:0:444\nZ:Q1sIk928qNo0NaejxP6BK6RCOzdaE=\nR:util_test.go\na:0:0:444\nZ:Q1SMkqGeoexXs+edQhkkyUZUr+gvw=\nR:xform.go\na:0:0:444\nZ:Q1hPQ8yYpUuBdCyLToF7MpC3p1BSI=\nR:xform_test.go\na:0:0:444\nZ:Q1RPhZna6ZW7toUwAf7FULyWZ+zFg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/testing/protopack\nM:0:0:555\nR:pack.go\na:0:0:444\nZ:Q1GIsaAeI7cHQEeSxum7eiHWkmz4c=\nR:pack_test.go\na:0:0:444\nZ:Q1MZgJeGcj6pGFnF29+R/odu5jAqw=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/testing/prototest\nM:0:0:555\nR:enum.go\na:0:0:444\nZ:Q1SCTHhbgDjYZOjLytbGUP8gtetKw=\nR:message.go\na:0:0:444\nZ:Q1bkDFil6uXuVDP0si6pzBn5jYdJI=\nR:prototest_test.go\na:0:0:444\nZ:Q1SQhVsnUFBjgYOtIK5JOftQ1tctk=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/descriptorpb\nM:0:0:555\nR:descriptor.pb.go\na:0:0:444\nZ:Q1U4UQZ5xKnao2fqYtCplgDQdxWow=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/dynamicpb\nM:0:0:555\nR:dynamic.go\na:0:0:444\nZ:Q1g/JEcSTIreaf/PZeHCBJvQVIJ3c=\nR:dynamic_test.go\na:0:0:444\nZ:Q1jBtDbx9ylXhq2ZCn+kJBY2oKezs=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known\nM:0:0:555\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/anypb\nM:0:0:555\nR:any.pb.go\na:0:0:444\nZ:Q1FDhUyTpPXsHktKQ+grBa0WAMuuA=\nR:any_test.go\na:0:0:444\nZ:Q1/s8kiWpsSMqJ95tPJwaFn+VoJ+c=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/apipb\nM:0:0:555\nR:api.pb.go\na:0:0:444\nZ:Q1I2vy6Z0YQTCdd0V0uzi9WoRCUss=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/durationpb\nM:0:0:555\nR:duration.pb.go\na:0:0:444\nZ:Q1B13IbhraCVTVNACVkmFDfVRdv4g=\nR:duration_test.go\na:0:0:444\nZ:Q16B0PIx/GUjMDR4NFORF2aiDdIjo=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/emptypb\nM:0:0:555\nR:empty.pb.go\na:0:0:444\nZ:Q1Q7TdCupRmt64bKYGYkm5+DFBQqA=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/fieldmaskpb\nM:0:0:555\nR:field_mask.pb.go\na:0:0:444\nZ:Q1ZEgpjFn6j+WgzTRXkVN6AX/tMXs=\nR:field_mask_test.go\na:0:0:444\nZ:Q1xfz9GnoHDAjVcBhCJHqFz4Y7p9k=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/sourcecontextpb\nM:0:0:555\nR:source_context.pb.go\na:0:0:444\nZ:Q1mAwbkywzzhms/mkKuSHARqZMuXI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/structpb\nM:0:0:555\nR:struct.pb.go\na:0:0:444\nZ:Q1RN0SnrYGNCBuK4sjQW1z65NCPug=\nR:struct_test.go\na:0:0:444\nZ:Q1167lYDxZm6bqN0VXP1HCR5iTvQM=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/timestamppb\nM:0:0:555\nR:timestamp.pb.go\na:0:0:444\nZ:Q15VsVqK+rF72y7v4WfGK9nOSE4tQ=\nR:timestamp_test.go\na:0:0:444\nZ:Q1uasAlUYZ0JrqZvjuTm9jFCDljK8=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/typepb\nM:0:0:555\nR:type.pb.go\na:0:0:444\nZ:Q1a1IUt3QS/e+Q7JvCU4NOgo/usRI=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/known/wrapperspb\nM:0:0:555\nR:wrappers.pb.go\na:0:0:444\nZ:Q1QtjETpYX4ZXySnuXhXScaIO+eUg=\nF:root/go/pkg/mod/google.golang.org/protobuf@v1.28.1/types/pluginpb\nM:0:0:555\nR:plugin.pb.go\na:0:0:444\nZ:Q1wFx6Ypdzti5aNcYB4+ivBNWnGZ8=\nF:root/go/pkg/mod/gopkg.in\nF:root/go/pkg/mod/gopkg.in/ini.v1@v1.67.0\nM:0:0:555\nR:.editorconfig\na:0:0:444\nZ:Q1lwQWu0/GIv5Yf1ap3GufDC5YWVA=\nR:.gitignore\na:0:0:444\nZ:Q1rcxbNViU+s+i4UWLdfE1steaow0=\nR:.golangci.yml\na:0:0:444\nZ:Q1r4nv9pQlvHIYgtouai0cBxxvaEg=\nR:LICENSE\na:0:0:444\nZ:Q15O9U8sMGcPlQ1eGWr6CciNjvDIo=\nR:Makefile\na:0:0:444\nZ:Q19imFnZUkFRbEH2l2vfDivWt48r0=\nR:README.md\na:0:0:444\nZ:Q1kaXrppWbXpkKZAjEQmUa+w70WH4=\nR:bench_test.go\na:0:0:444\nZ:Q1Q+oLGoH1TNWbssDjkFkDRXS+Fp0=\nR:codecov.yml\na:0:0:444\nZ:Q1hp+fXexCmgMf59mqDAw81An1oFc=\nR:data_source.go\na:0:0:444\nZ:Q1MGJoUtLcJFYvliqrb0SvfUSTjic=\nR:deprecated.go\na:0:0:444\nZ:Q1zACs9ZigQj8h3isn9fXCwOEjAZ8=\nR:error.go\na:0:0:444\nZ:Q1tPL8KDXmdLsxWsOq+wvNCzJqoiY=\nR:file.go\na:0:0:444\nZ:Q182VHvhxBfCyjvQShbcY6zzbPhio=\nR:file_test.go\na:0:0:444\nZ:Q15RlyYGvUCBE9DG/CxJcvZFoyVgQ=\nR:helper.go\na:0:0:444\nZ:Q1aiTRxCyU2qiAEYb4jYvmh3KZQio=\nR:helper_test.go\na:0:0:444\nZ:Q1xrDjMFxbjz63XDydbQf+HWVVH74=\nR:ini.go\na:0:0:444\nZ:Q1ZjlMSahC5NdFicoxYsqZ/UlLFsI=\nR:ini_test.go\na:0:0:444\nZ:Q1e03Qxjok2fAULuHPmfpWSLFnvJw=\nR:key.go\na:0:0:444\nZ:Q18xsyiqpeNYZXZqQZgq4upVLcf9k=\nR:key_test.go\na:0:0:444\nZ:Q13xMkn/PdhEdDqLtIRRyTHOLH1eE=\nR:parser.go\na:0:0:444\nZ:Q180TTlmFr7TjFAe8hBw3FvtLIJZY=\nR:parser_test.go\na:0:0:444\nZ:Q1OpE8+vBw1zQ69sqRTEwLht3yq+0=\nR:section.go\na:0:0:444\nZ:Q1CUjjWoXGOiqmmbH/Tcnd0H8aKF4=\nR:section_test.go\na:0:0:444\nZ:Q1Kt+D1aoFv/xMq8iNpjmFsIR2DPI=\nR:struct.go\na:0:0:444\nZ:Q1wgGILTV062V5l8teVzaLdja6EQc=\nR:struct_test.go\na:0:0:444\nZ:Q1Ri7YcDTWkayeElFeLSAteGTXVZY=\nF:root/go/pkg/mod/gopkg.in/ini.v1@v1.67.0/.github\nM:0:0:555\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1WnMTM2yNokSqZT75h9q8TCAopxE=\nR:contributing.md\na:0:0:444\nZ:Q1xHf+H6QfJm7ZVOQmkWgccB5RZME=\nF:root/go/pkg/mod/gopkg.in/ini.v1@v1.67.0/.github/ISSUE_TEMPLATE\nM:0:0:555\nR:bug_report.yml\na:0:0:444\nZ:Q1k5HASESNbQnfmFmrlfq3bPkZTWA=\nR:config.yml\na:0:0:444\nZ:Q1aDRCY/m7/g/BlsDmwaVYGMxG3AE=\nR:documentation.yml\na:0:0:444\nZ:Q19AEhkofM0Fc2+ueUc3KgBOZu52w=\nR:feature_request.yml\na:0:0:444\nZ:Q17NuAY2ZzqRNT9WKXS3d0rt9M27M=\nF:root/go/pkg/mod/gopkg.in/ini.v1@v1.67.0/.github/workflows\nM:0:0:555\nR:go.yml\na:0:0:444\nZ:Q1rsVyeCboXU6XZ/vVKsYXIrM3Lio=\nR:lsif.yml\na:0:0:444\nZ:Q1qjba6Z19UmMUHD2aAYrEarsFKkA=\nF:root/go/pkg/mod/gopkg.in/ini.v1@v1.67.0/testdata\nM:0:0:555\nR:TestFile_WriteTo.golden\na:0:0:444\nZ:Q1YtNdfFIQy69y4CZcHd8/IkrY0+c=\nR:UTF-16-BE-BOM.ini\na:0:0:444\nZ:Q11E2kiqAPyNV8wVPVYjoLLb89BXs=\nR:UTF-16-LE-BOM.ini\na:0:0:444\nZ:Q15pynsLDnDEFYeHZs6vsruK2KocY=\nR:UTF-8-BOM.ini\na:0:0:444\nZ:Q1YxwU8ouy8zDz1fuxaXgWNiEWQ0c=\nR:full.ini\na:0:0:444\nZ:Q1CKZGuNHmo61hKG+bJd+ygbvZqeQ=\nR:minimal.ini\na:0:0:444\nZ:Q1ZwgUPZnL+PmRESmn8cBwl5uI3hM=\nR:multiline.ini\na:0:0:444\nZ:Q1yWNMIYiGxcvbRgmiC75gDehZ54o=\nR:multiline_eof.ini\na:0:0:444\nZ:Q182WWXNcZy0/muN8GyKHrJTCi5Jg=\nF:root/go/pkg/mod/gopkg.in/square\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0\nM:0:0:555\nR:.gitcookies.sh.enc\na:0:0:444\nZ:Q1NwudUYySwp06cmwob+wIGdmOeRY=\nR:.gitignore\na:0:0:444\nZ:Q1G3pbIYDt+HlF06oacU/7HAHev2E=\nR:.travis.yml\na:0:0:444\nZ:Q1jSVBgFJ7QR5t9y6yZVWSINgzlQM=\nR:BUG-BOUNTY.md\na:0:0:444\nZ:Q1AZl+QfPG4k/f4k0U7m2krU5ybdI=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1FOrQbOtguw2W/7tuhINUX0vsSxc=\nR:LICENSE\na:0:0:444\nZ:Q1K4uBUimqimHkg/tLoFiLi2xJGJA=\nR:README.md\na:0:0:444\nZ:Q1oX3UhY5ZmIkOpLsKj9l4nN2uI9U=\nR:asymmetric.go\na:0:0:444\nZ:Q1IT5HJ47BP38nI/boWkqFkwGaMfo=\nR:asymmetric_test.go\na:0:0:444\nZ:Q16Rln/1Iq5qcESH+H0+c2e1hJIp8=\nR:crypter.go\na:0:0:444\nZ:Q1y4uXf9nUdb+lbEGYLreeA2qYDmE=\nR:crypter_test.go\na:0:0:444\nZ:Q1IaI/K/sJ7/6VTzlpao4mfWHg1EM=\nR:doc.go\na:0:0:444\nZ:Q1jn3jm4JMzcFkqLfIcfSorC7ZVK4=\nR:doc_test.go\na:0:0:444\nZ:Q1qCOOCderNOZJ7XeUbDuBg15Y3hQ=\nR:encoding.go\na:0:0:444\nZ:Q1LaHkwo0WjPB+NRPAa/y2uhZkxXk=\nR:encoding_test.go\na:0:0:444\nZ:Q1P8TgopRrpT6JPc1Hn6sI/JUF814=\nR:jwe.go\na:0:0:444\nZ:Q1QMDdwJnV+1p7QMxC8cQUetVbltE=\nR:jwe_test.go\na:0:0:444\nZ:Q1y36KtflLVkcwGYCQZ6pJKl5ciIA=\nR:jwk.go\na:0:0:444\nZ:Q1mbBlPjFNFBWAGBZ3W2n1Oywn+3M=\nR:jwk_test.go\na:0:0:444\nZ:Q1e0q4niCbyAq08wbYchg/2uMqabg=\nR:jws.go\na:0:0:444\nZ:Q1xyjP45hhPOURQnr2moyJqQvJ97s=\nR:jws_test.go\na:0:0:444\nZ:Q1TLxDpuEM2ZaYT3hM49uieMtSWR8=\nR:opaque.go\na:0:0:444\nZ:Q1UzGOx2U+lXRtHgT3VbyrnFo8tDc=\nR:opaque_test.go\na:0:0:444\nZ:Q1gQXjAApifnEGs2KNWVYqs4h63cI=\nR:shared.go\na:0:0:444\nZ:Q1YAofej23mh4TPJI6dPn7TxDFrY0=\nR:signing.go\na:0:0:444\nZ:Q1sXrE7TMnZq7XO+HmGEk6SihhhxY=\nR:signing_test.go\na:0:0:444\nZ:Q1Gwmq2EwIE74lflcnKENYIVaHFEk=\nR:symmetric.go\na:0:0:444\nZ:Q18/FhWvldAroneWy7cHUrrAIKCoY=\nR:symmetric_test.go\na:0:0:444\nZ:Q14ZxlH3DUPdwTwiMSnmGzwDuVioM=\nR:utils_test.go\na:0:0:444\nZ:Q1peg0+q58Tkiopop+PCWCtCB+XNg=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/cipher\nM:0:0:555\nR:cbc_hmac.go\na:0:0:444\nZ:Q1TVIOBLsX9wTuobO2yzVa8WXO6iQ=\nR:cbc_hmac_test.go\na:0:0:444\nZ:Q1QBsQpWC5r0znYpFf8sS5udBW+7M=\nR:concat_kdf.go\na:0:0:444\nZ:Q17Rm2QHPG445eKppodlfK1XbV+x0=\nR:concat_kdf_test.go\na:0:0:444\nZ:Q1efAGOx9w0arNzNMNDd2SbCA2npc=\nR:ecdh_es.go\na:0:0:444\nZ:Q1T3sNd06US+yo6blul4DRgqcrWOE=\nR:ecdh_es_test.go\na:0:0:444\nZ:Q1Jad51ArV+Vj5jEduvQx6OqhzYVQ=\nR:key_wrap.go\na:0:0:444\nZ:Q1+Veu+CdZqekFcCDkprVVSEqMwvE=\nR:key_wrap_test.go\na:0:0:444\nZ:Q1yxWZUTXwh8VLENJfvooEsgoCk2M=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/cryptosigner\nM:0:0:555\nR:cryptosigner.go\na:0:0:444\nZ:Q15FvxTX2KLX73SbtMpm3v50elZ3o=\nR:cryptosigner_test.go\na:0:0:444\nZ:Q1xm40YgttZ72vhCuY0Iz0uKb4/1w=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/jose-util\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1fKiXVgpdcFdySVtWohiDwAwHBBE=\nR:ec.key\na:0:0:444\nZ:Q1WxiHzSK4fsfcPT5Ve/5WIxykPX0=\nR:ec.pub\na:0:0:444\nZ:Q1+487peAeHck70ZUYPxloRgiFtsk=\nR:jose-util.t\na:0:0:444\nZ:Q1wQAYa082PevM7EVvAOMawnWOcBo=\nR:main.go\na:0:0:444\nZ:Q1DwzjaTHf6Dw0NP1DvHcDzcZ5iKg=\nR:utils.go\na:0:0:444\nZ:Q1OjgEjxE9aIszzoejVlukwwE0JuU=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/jose-util/test-keys\nM:0:0:555\nR:ecdh.key\na:0:0:444\nZ:Q1WxiHzSK4fsfcPT5Ve/5WIxykPX0=\nR:ecdh.pub\na:0:0:444\nZ:Q1+487peAeHck70ZUYPxloRgiFtsk=\nR:rsa.key\na:0:0:444\nZ:Q1KACBNKgph0P8xn70hdi5nu1L7uI=\nR:rsa.pub\na:0:0:444\nZ:Q1r2rcZsxvpDhASAucnIFqqsJXFXY=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/json\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1f3oSvPwW+rJSKqGlYv09Ku5CnTs=\nR:README.md\na:0:0:444\nZ:Q1jIE3L9Rkgy65BJGuGshokMV0s+E=\nR:bench_test.go\na:0:0:444\nZ:Q1vmjYgdpm3sfzzyHlJsqO3rnJfrU=\nR:decode.go\na:0:0:444\nZ:Q1LunXpCmBUPCkvmM36vgiBrsOoqM=\nR:decode_test.go\na:0:0:444\nZ:Q1QJA92CnDQiXK05OSknnU5UNMUtk=\nR:encode.go\na:0:0:444\nZ:Q1CirKwN5c8X/3CIcVcLJxp/mNrEs=\nR:encode_test.go\na:0:0:444\nZ:Q1oX/3OtdBr8Fe7O8KV60OU7a5QRg=\nR:indent.go\na:0:0:444\nZ:Q1q0ERLQ28oqDUnqjoI+32kQNIRmg=\nR:number_test.go\na:0:0:444\nZ:Q1b3HdXRTDHyPGSTJqLXQ7luULKRQ=\nR:scanner.go\na:0:0:444\nZ:Q1deNirlUUocMFi8SDTzIVA3QyBj4=\nR:scanner_test.go\na:0:0:444\nZ:Q1x/hfgj1/Bs200yjXFA3eET+iR8Y=\nR:stream.go\na:0:0:444\nZ:Q13MJvH5/Ahqcbxxas0Jc2fXiYATM=\nR:stream_test.go\na:0:0:444\nZ:Q1kdrc60F8TKTfupzVcZVbEMdS5w8=\nR:tagkey_test.go\na:0:0:444\nZ:Q14Tlncp20p0uhi6unPN3eQZRWXQE=\nR:tags.go\na:0:0:444\nZ:Q1yCZr1vYo3DhMTNDfYFhf9WIAnck=\nR:tags_test.go\na:0:0:444\nZ:Q1PPYeNc4/tE705K3WMy24muuYcxo=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/json/testdata\nM:0:0:555\nR:code.json.gz\na:0:0:444\nZ:Q16VBt6MVGc/T26QQX25iaHgurYpI=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/jwk-keygen\nM:0:0:555\nR:README.md\na:0:0:444\nZ:Q1/7p4LZX2ktprGsxle8vCrQYLegI=\nR:main.go\na:0:0:444\nZ:Q1emfkg+36iPqbfBVw39qflgrpCjQ=\nF:root/go/pkg/mod/gopkg.in/square/go-jose.v2@v2.6.0/jwt\nM:0:0:555\nR:builder.go\na:0:0:444\nZ:Q1Sft7o/vs7rsyOGrnXfInqvDha9o=\nR:builder_test.go\na:0:0:444\nZ:Q1F6tMqjXD3BZJxYLGACXoGpV2Ecg=\nR:claims.go\na:0:0:444\nZ:Q1WPBZXJyyLWVBH5k76DGfhBH1g80=\nR:claims_test.go\na:0:0:444\nZ:Q1PJT3S3Mw6ceO4t0x+eLdiqj17oc=\nR:doc.go\na:0:0:444\nZ:Q1108GbNqwhhm7j9/MJfdRvbTCgUs=\nR:errors.go\na:0:0:444\nZ:Q1jTrzW6kE6bkWesTsooh8uQ4Y6oQ=\nR:example_test.go\na:0:0:444\nZ:Q1YxSu3ESobPVKBpffIU57A0ZYwUY=\nR:jwt.go\na:0:0:444\nZ:Q1uFiyXQiCKZu/n+l+vtE312kHPc8=\nR:jwt_test.go\na:0:0:444\nZ:Q1yukrrcrxBqphKso+p19IfNTrwzc=\nR:validation.go\na:0:0:444\nZ:Q1yZNCOKLPZHkEAVg1GqtUsLIjR/U=\nR:validation_test.go\na:0:0:444\nZ:Q1xFHBKJEXCBAPIxOXwqG4EouZUoA=\nF:root/go/pkg/mod/gopkg.in/warnings.v0@v0.1.2\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1MY3Er16pdbQm22UFO08WypE0HRU=\nR:README\na:0:0:444\nZ:Q1XrdJvce27vB3w2IHsesNxVUOEww=\nR:warnings.go\na:0:0:444\nZ:Q1XkPIXYdKVERbexYmLPFfYKAge6w=\nR:warnings_test.go\na:0:0:444\nZ:Q172PffucDehgf+3capNFxLRer4QQ=\nF:root/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1\nM:0:0:555\nR:LICENSE\na:0:0:444\nZ:Q1t0s7MbwVrV6U/BlH1oKqPYQTL84=\nR:NOTICE\na:0:0:444\nZ:Q1lSLZWyubKEKFzD+27MRFqj7l54U=\nR:README.md\na:0:0:444\nZ:Q1oAr5Cp/w4bfskLTTdUMjQCRaCVM=\nR:apic.go\na:0:0:444\nZ:Q12/OxlF0WXSRnl9XUXAJBZ44D+ps=\nR:decode.go\na:0:0:444\nZ:Q1M/2KCQ+ye+wav/KkU7qOKtDYM9M=\nR:decode_test.go\na:0:0:444\nZ:Q1HWsbVTvEKKHmv2c0j22n4thhLaI=\nR:emitterc.go\na:0:0:444\nZ:Q1bRDiWNOGBorJERNumvpVpNty78s=\nR:encode.go\na:0:0:444\nZ:Q1O6pxHDPvE06q6FVo1/TJe+fEBDE=\nR:encode_test.go\na:0:0:444\nZ:Q1f+TmzkWMHq72NyflL8WwpcvG4e8=\nR:example_embedded_test.go\na:0:0:444\nZ:Q1hpZeYVcALBp+80VZIlO7IU5FpkY=\nR:go.mod\na:0:0:444\nZ:Q1tdOkOz4p45tq7WW9BBxjJBlipRs=\nR:limit_test.go\na:0:0:444\nZ:Q1AXUJAgY8ExDfy5fZ2Pg9pEa0NkQ=\nR:node_test.go\na:0:0:444\nZ:Q1AH0LXbSFlDXWx2xV/iEr/GoEKII=\nR:parserc.go\na:0:0:444\nZ:Q1qanInR5KF7P4uOUtrty93+9vbJM=\nR:readerc.go\na:0:0:444\nZ:Q1ae2ltxKF83uqPmP5TpMqwZRWi9I=\nR:resolve.go\na:0:0:444\nZ:Q1061y36TY6ewlOM4rMhUPgZJkCaQ=\nR:scannerc.go\na:0:0:444\nZ:Q17Ypi0TLZcIP27M8joOvWc3LC6/g=\nR:sorter.go\na:0:0:444\nZ:Q1hL/3Xq4+NmMsmtbz+oNTbMCnttw=\nR:suite_test.go\na:0:0:444\nZ:Q1i3UDnWzgcEY3gPCsZFphYMiht/4=\nR:writerc.go\na:0:0:444\nZ:Q1zNQMywDtR0pXdbN94VealIhH9is=\nR:yaml.go\na:0:0:444\nZ:Q1X02NzcO9HpKdfDvTP7Vl6n1tLvk=\nR:yamlh.go\na:0:0:444\nZ:Q1iJFRWOXnswUxDDXxf8x24WITd7s=\nR:yamlprivateh.go\na:0:0:444\nZ:Q1R9Cm6YlunMT5Xm9dAJMNXppWHls=\nF:root/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/.github\nM:0:0:555\nF:root/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/.github/workflows\nM:0:0:555\nR:go.yaml\na:0:0:444\nZ:Q1z9MJ1UzI5NkMksccGXRIhtDHS00=\nF:root/go/pkg/mod/sigs.k8s.io\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3\nM:0:0:555\nR:.gitignore\na:0:0:444\nZ:Q1dVPNW4e04rJHDycJRtxWWu4gOWM=\nR:.golangci.yml\na:0:0:444\nZ:Q1dy2V18khRhJ83v4jOckL5I1tvwI=\nR:CONTRIBUTING.md\na:0:0:444\nZ:Q1cFqzSyXa7JeKI3D7YctGgYSHRuU=\nR:LICENSE\na:0:0:444\nZ:Q1khcM3ANLL/gZMj/2cNO3JmyL/80=\nR:OWNERS\na:0:0:444\nZ:Q1cmw6lgmEPcxYB53LP0AbQq3hUYo=\nR:OWNERS_ALIASES\na:0:0:444\nZ:Q1YNgy4XLvpFRSbNjwo4us6b0znlM=\nR:README.md\na:0:0:444\nZ:Q1O9JSS2dSYjxxRwqjp3zr9l5+KvU=\nR:SECURITY.md\na:0:0:444\nZ:Q1GPxb2EEIJD884fTmO+6yoqRlhzk=\nR:SECURITY_CONTACTS\na:0:0:444\nZ:Q1RbST8iur1Hj8vSA5onUgQaZFBwk=\nR:code-of-conduct.md\na:0:0:444\nZ:Q16cbgSMjpJlqoLTPHApL1n868Jss=\nR:dependencies.yaml\na:0:0:444\nZ:Q10q88O4Kug7PSeU2jPM28P3lpSmU=\nR:go.mod\na:0:0:444\nZ:Q1a1LE13XrDakjraMHJ2MU4JYXzxo=\nR:go.sum\na:0:0:444\nZ:Q1JRbPiJnMx6nSbmfjGvK7PEAatNs=\nR:mage.go\na:0:0:444\nZ:Q1ckmFzxUUAitWA7GZpELVkAtTEDI=\nR:magefile.go\na:0:0:444\nZ:Q1tkjALEo2WnIEC7y2jIqsndnPOUU=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/.github\nM:0:0:555\nR:PULL_REQUEST_TEMPLATE.md\na:0:0:444\nZ:Q1mU7Wr4v22p13Gm4rfQOUki0U6os=\nR:dependabot.yml\na:0:0:444\nZ:Q15AiHKF7qfnjOg1gPR8UimJCj6fc=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/command\nM:0:0:555\nR:command.go\na:0:0:444\nZ:Q1ES4xRmERymZlSGGHByYfErL6Nwc=\nR:command_test.go\na:0:0:444\nZ:Q1ou5mxC9f61H8efqEhzU07anZVCY=\nR:global.go\na:0:0:444\nZ:Q14ZkjtNqs+Ds6iB8mX/+4k8lagx4=\nR:global_test.go\na:0:0:444\nZ:Q1ZxnatHYBQpnADdFNkOofqP7wrq4=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/editor\nM:0:0:555\nR:editor.go\na:0:0:444\nZ:Q1kGw5nox5zTAoAqAIRYSEr37us1Q=\nR:editor_test.go\na:0:0:444\nZ:Q10dHux0zCO2M+DUPB+QXhRAZN3uc=\nR:tty.go\na:0:0:444\nZ:Q1CO/VXj4ZdfmZ+sPidgfwINX38N8=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/env\nM:0:0:555\nR:env.go\na:0:0:444\nZ:Q1HsIj4dOMuX9sLTzhnWFToWi8V4k=\nR:env_test.go\na:0:0:444\nZ:Q1hGWNFAoVHl4CtQJbubvOwL4l8P4=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/env/internal\nM:0:0:555\nR:impl.go\na:0:0:444\nZ:Q1+NLedYPD05obccDrNx+cqnlWHI4=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/env/internal/internalfakes\nM:0:0:555\nR:fake_impl.go\na:0:0:444\nZ:Q1SOBQQUxPpFk/8CuWIaaagN2o2rI=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/hash\nM:0:0:555\nR:hash.go\na:0:0:444\nZ:Q1aHxj4pigSliG9BsQ/NrQh8ffnjI=\nR:hash_test.go\na:0:0:444\nZ:Q1FJBMCQXGINSJEx2PpK/vdGRZdi8=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/http\nM:0:0:555\nR:agent.go\na:0:0:444\nZ:Q1T0T0DVIQtlaxJVrC6xt6iB2zR+g=\nR:http.go\na:0:0:444\nZ:Q1FpjkWlensZp/jQQFSI0vSL5L/mY=\nR:http_test.go\na:0:0:444\nZ:Q1qE58I7JCPA/sQwErzim9+8x+JiQ=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/http/httpfakes\nM:0:0:555\nR:fake_agent_implementation.go\na:0:0:444\nZ:Q1vin/e2AllQpfwTi5Vzt9K02lyJw=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/internal\nM:0:0:555\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/internal/tools\nM:0:0:555\nR:tools.go\na:0:0:444\nZ:Q12Ui9gmU6z58NWqxpnKjL1VpQNCw=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/log\nM:0:0:555\nR:hooks.go\na:0:0:444\nZ:Q1c7V0i6n44NGBPW9Ed5ur1b1Tqr8=\nR:log.go\na:0:0:444\nZ:Q1Om5WZD+xnxGdbt3YLM4HQ80BOrI=\nR:log_test.go\na:0:0:444\nZ:Q1sZznBlmshGObn08O5xlrTF6ZFpo=\nR:step.go\na:0:0:444\nZ:Q1qGChqcTl+lBhNoIhTpPdZ7bscfc=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/mage\nM:0:0:555\nR:boilerplate.go\na:0:0:444\nZ:Q17YNP+gXxxHXeNJzCLIgC/rCSsXo=\nR:cosign.go\na:0:0:444\nZ:Q1bZ44/C1cFOSP7OY+IZ1DB3uSVXU=\nR:dependency.go\na:0:0:444\nZ:Q15gUvuWll5N6qP60CBAyCNSlEhys=\nR:git.go\na:0:0:444\nZ:Q1xRAZU2rBCImt5j3cMw4xk3HmH9A=\nR:golang.go\na:0:0:444\nZ:Q1YXYHfyOOzArwMW+3LJLi96cTLJg=\nR:ko.go\na:0:0:444\nZ:Q1XhhTkf76f/KN4K7+RxCkxM8U2Cc=\nR:version.go\na:0:0:444\nZ:Q1BUd/FBCds8/U8i8wbs6A84K3Be4=\nR:version_test.go\na:0:0:444\nZ:Q1bYqkia5aeRZVNOEwIIAUJbazs2o=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/scripts\nM:0:0:555\nR:verify-build.sh\na:0:0:444\nZ:Q1LclrKvokZ5LUI+HqjA0E5r273LQ=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/scripts/boilerplate\nM:0:0:555\nR:boilerplate.Dockerfile.txt\na:0:0:444\nZ:Q1s9iaBvc8MkVrneT8ETcJYyIzsyQ=\nR:boilerplate.Makefile.txt\na:0:0:444\nZ:Q1s9iaBvc8MkVrneT8ETcJYyIzsyQ=\nR:boilerplate.generatego.txt\na:0:0:444\nZ:Q1ArkkX6cw9ui/+wffAmJqKY93I2g=\nR:boilerplate.go.txt\na:0:0:444\nZ:Q1jMWrDfXxsl7casciNgU3StzoMxs=\nR:boilerplate.goheader.txt\na:0:0:444\nZ:Q1uKMlzyBtgmDKbX+mGF/n3mDmn/E=\nR:boilerplate.py.txt\na:0:0:444\nZ:Q1s9iaBvc8MkVrneT8ETcJYyIzsyQ=\nR:boilerplate.sh.txt\na:0:0:444\nZ:Q1s9iaBvc8MkVrneT8ETcJYyIzsyQ=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/tar\nM:0:0:555\nR:tar.go\na:0:0:444\nZ:Q1ntaUMLeNgJMorKXk4w+b5z51erY=\nR:tar_test.go\na:0:0:444\nZ:Q13WwexEohAYLD33oFnGno+0BFeyo=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/util\nM:0:0:555\nR:common.go\na:0:0:444\nZ:Q16Dbm/M8OIXbHQGZTzD99WTPSfaE=\nR:common_test.go\na:0:0:444\nZ:Q1NdvHT0sYZQ7iijQOZOzKzBSMgEw=\nF:root/go/pkg/mod/sigs.k8s.io/release-utils@v0.7.3/version\nM:0:0:555\nR:command.go\na:0:0:444\nZ:Q11a5G7f4DDLw7yK0zJuYpUJyP6tI=\nR:command_test.go\na:0:0:444\nZ:Q1r2lqG+cQCC8Mu4NYInqq3DUrHWU=\nR:doc.go\na:0:0:444\nZ:Q13ug5AUKFtQTNsw0YQfhQ+ZvXD4A=\nR:version.go\na:0:0:444\nZ:Q1a2N7Sey1Qm68YyzCQtJ1NB3G20s=\nR:version_test.go\na:0:0:444\nZ:Q1S50pTsmD2/SjLg7hFv3CRoKpEGA=\nF:root/go/pkg/sumdb\nF:root/go/pkg/sumdb/sum.golang.org\nR:latest\nZ:Q1FSDPLf2YK1jeYG0x0gbNMKesS4g=\nF:usr\nF:usr/bin\nR:apko\na:0:0:755\nZ:Q1kCiS8L57pXG5Ls4XsOEUiD1hxiY=\nR:melange\na:0:0:755\nZ:Q1lW76CujZBqlFZvu9Xmzny3k6FCc=\nR:sdk\na:0:0:755\nZ:Q1WHA8QkAaTC6XWbVk5aYX85jdxgM=\nF:usr/share\nF:usr/share/melange\nF:usr/share/melange/pipelines\nR:fetch.yaml\nZ:Q1X52LO71R0k0P/A0r7nWRd6FYI4k=\nR:git-checkout.yaml\nZ:Q1JIrdvmx+9ysVeGgk6luMYxPnTCg=\nR:patch.yaml\nZ:Q1coKygGxXnGzCvBPSxjN+dbsNfeE=\nR:strip.yaml\nZ:Q18+3OKAHrUHOieBw2EQ7ta8qHP3c=\nF:usr/share/melange/pipelines/autoconf\nR:configure.yaml\nZ:Q1hLVi7hw5X3gPDtwNNabm7TBndIg=\nR:make-install.yaml\nZ:Q1/WAafMVxl2Lo7pbQY3idxRksNHU=\nR:make.yaml\nZ:Q1TpElfbIa8MlD0iDn0MSnuG+r6uM=\nF:usr/share/melange/pipelines/cmake\nR:build.yaml\nZ:Q1gxLRW08KoWQKHyRdugtDccRR6OE=\nR:configure.yaml\nZ:Q1WOYgfp0CUwKTYX+xDgUPGoZv/Xs=\nR:install.yaml\nZ:Q1onSqIQU3YP14sb96LNcNxe9QAI0=\nF:usr/share/melange/pipelines/meson\nR:compile.yaml\nZ:Q1g3JxkqtGjVj3+YEgpCw7Lkb0Z10=\nR:configure.yaml\nZ:Q1rrZsU9Vzn4qIUzPI9LTy02u8RX4=\nR:install.yaml\nZ:Q1ni3/dKLR1BH1G+qoc4V0XhXnVKw=\nF:usr/share/melange/pipelines/split\nR:dev.yaml\nZ:Q1gtsSJ3wfGRcyUNyxRLX5COIuLEw=\nR:infodir.yaml\nZ:Q1Wz8q2d1sNzDhp70CNTnn9BPyQzo=\nR:locales.yaml\nZ:Q13h46ZwJv50+7W8AOAc9+maQju4w=\nR:manpages.yaml\nZ:Q1/uJuv+AVfrDzLYys1rCOPCHhL20=\nR:static.yaml\nZ:Q1XzdFLUxfKi4+9ZPUJg0vk37GrTo=\n\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: alpm # MANUAL\n    name: alpm-db-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/arch/cataloger.go\n      function: NewDBCataloger\n    selectors: # AUTO-GENERATED\n      - alpm\n      - archlinux\n      - directory\n      - image\n      - installed\n      - linux\n      - os\n      - package\n      - pacman\n    parsers: # AUTO-GENERATED structure\n      - function: parseAlpmDB\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/var/lib/pacman/local/**/desc'\n        metadata_types: # AUTO-GENERATED\n          - pkg.AlpmDBEntry\n        package_types: # AUTO-GENERATED\n          - alpm\n        json_schema_types: # AUTO-GENERATED\n          - AlpmDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - AlpmDBEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - AlpmDBEntry.Files[].Digests\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/cataloger.go",
    "content": "/*\nPackage arch provides a concrete Cataloger implementations for packages relating to the Arch linux distribution.\n*/\npackage arch\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// NewDBCataloger returns a new cataloger object initialized for arch linux pacman database flat-file stores.\nfunc NewDBCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"alpm-db-cataloger\").\n\t\tWithParserByGlobs(parseAlpmDB, pkg.AlpmDBGlob).\n\t\tWithProcessors(dependency.Processor(dbEntryDependencySpecifier))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/cataloger_test.go",
    "content": "package arch\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestAlpmUnknowns(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/installed\").\n\t\tWithCompareOptions(cmpopts.IgnoreFields(pkg.AlpmFileRecord{}, \"Time\")).\n\t\tWithError().\n\t\tTestCataloger(t, NewDBCataloger())\n}\n\nfunc TestAlpmCataloger(t *testing.T) {\n\tgmpDbLocation := file.NewLocation(\"var/lib/pacman/local/gmp-6.2.1-2/desc\")\n\ttreeSitterDbLocation := file.NewLocation(\"var/lib/pacman/local/tree-sitter-0.22.6-1/desc\")\n\temacsDbLocation := file.NewLocation(\"var/lib/pacman/local/emacs-29.3-3/desc\")\n\tfuzzyDbLocation := file.NewLocation(\"var/lib/pacman/local/fuzzy-1.2-3/desc\")\n\tmadeupDbLocation := file.NewLocation(\"var/lib/pacman/local/madeup-20.30-4/desc\")\n\tctx := context.TODO()\n\n\ttreeSitterPkg := pkg.Package{\n\t\tName:    \"tree-sitter\",\n\t\tVersion: \"0.22.6-1\",\n\t\tType:    pkg.AlpmPkg,\n\t\tFoundBy: \"alpm-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", treeSitterDbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(treeSitterDbLocation),\n\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\tBasePackage:  \"tree-sitter\",\n\t\t\tPackage:      \"tree-sitter\",\n\t\t\tVersion:      \"0.22.6-1\",\n\t\t\tDescription:  \"Incremental parsing library\",\n\t\t\tArchitecture: \"x86_64\",\n\t\t\tSize:         223539,\n\t\t\tPackager:     \"Daniel M. Capella <polyzen@archlinux.org>\",\n\t\t\tURL:          \"https://github.com/tree-sitter/tree-sitter\",\n\t\t\tValidation:   \"pgp\",\n\t\t\tReason:       1,\n\t\t\tFiles:        []pkg.AlpmFileRecord{},\n\t\t\tBackup:       []pkg.AlpmFileRecord{},\n\t\t\tProvides:     []string{\"libtree-sitter.so=0-64\"},\n\t\t},\n\t}\n\n\temacsPkg := pkg.Package{\n\t\tName:    \"emacs\",\n\t\tVersion: \"29.3-3\",\n\t\tType:    pkg.AlpmPkg,\n\t\tFoundBy: \"alpm-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL3\", emacsDbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(emacsDbLocation),\n\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\tBasePackage:  \"emacs\",\n\t\t\tPackage:      \"emacs\",\n\t\t\tVersion:      \"29.3-3\",\n\t\t\tDescription:  \"The extensible, customizable, self-documenting real-time display editor\",\n\t\t\tArchitecture: \"x86_64\",\n\t\t\tSize:         126427862,\n\t\t\tPackager:     \"Frederik Schwan <freswa@archlinux.org>\",\n\t\t\tURL:          \"https://www.gnu.org/software/emacs/emacs.html\",\n\t\t\tValidation:   \"pgp\",\n\t\t\tFiles:        []pkg.AlpmFileRecord{},\n\t\t\tBackup:       []pkg.AlpmFileRecord{},\n\t\t\tDepends:      []string{\"libtree-sitter.so=0-64\"},\n\t\t},\n\t}\n\n\tfuzzyPkg := pkg.Package{\n\t\tName:    \"fuzzy\",\n\t\tVersion: \"1.2-3\",\n\t\tType:    pkg.AlpmPkg,\n\t\tFoundBy: \"alpm-db-cataloger\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfuzzyDbLocation,\n\t\t\tfile.NewLocation(\"var/lib/pacman/local/fuzzy-1.2-3/files\"),\n\t\t),\n\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\tPackage: \"fuzzy\",\n\t\t\tVersion: \"1.2-3\",\n\t\t\tFiles:   []pkg.AlpmFileRecord{},\n\t\t\tBackup: []pkg.AlpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath: \"/etc/fuzzy.conf\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"79fce043df7dfc676ae5ecb903762d8b\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDepends: []string{\"tree-sitter\"},\n\t\t},\n\t}\n\n\tmadeupPkg := pkg.Package{\n\t\tName:      \"madeup\",\n\t\tVersion:   \"20.30-4\",\n\t\tType:      pkg.AlpmPkg,\n\t\tFoundBy:   \"alpm-db-cataloger\",\n\t\tLocations: file.NewLocationSet(madeupDbLocation),\n\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\tPackage: \"madeup\",\n\t\t\tVersion: \"20.30-4\",\n\t\t\tFiles:   []pkg.AlpmFileRecord{},\n\t\t\tBackup:  []pkg.AlpmFileRecord{},\n\t\t\tDepends: []string{\"libtree-sitter.so\"},\n\t\t},\n\t}\n\n\tgmpPkg := pkg.Package{\n\t\tName:    \"gmp\",\n\t\tVersion: \"6.2.1-2\",\n\t\tType:    pkg.AlpmPkg,\n\t\tFoundBy: \"alpm-db-cataloger\",\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"LGPL3\", gmpDbLocation),\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL\", gmpDbLocation),\n\t\t),\n\t\tLocations: file.NewLocationSet(\n\t\t\tgmpDbLocation,\n\t\t\tfile.NewLocation(\"var/lib/pacman/local/gmp-6.2.1-2/files\"),\n\t\t\tfile.NewLocation(\"var/lib/pacman/local/gmp-6.2.1-2/mtree\"),\n\t\t),\n\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\tBasePackage:  \"gmp\",\n\t\t\tPackage:      \"gmp\",\n\t\t\tVersion:      \"6.2.1-2\",\n\t\t\tDescription:  \"A free library for arbitrary precision arithmetic\",\n\t\t\tArchitecture: \"x86_64\",\n\t\t\tSize:         1044438,\n\t\t\tPackager:     \"Antonio Rojas <arojas@archlinux.org>\",\n\t\t\tURL:          \"https://gmplib.org/\",\n\t\t\tValidation:   \"pgp\",\n\t\t\tReason:       1,\n\t\t\tDepends:      []string{\"gcc-libs\", \"sh\", \"libtree-sitter.so=1-64\"},\n\t\t\tFiles: []pkg.AlpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/include\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/include/gmp.h\",\n\t\t\t\t\tSize: \"84140\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"76595f70565c72550eb520809bf86856\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"91a614b9202453153fe3b7512d15e89659108b93ce8841c8e13789eb85da9e3a\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/include/gmpxx.h\",\n\t\t\t\t\tSize: \"129113\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"ea3d21de4bcf7c696799c5c55dd3655b\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"0011ae411a0bc1030e07d968b32fdc1343f5ac2a17b7d28f493e7976dde2ac82\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib/libgmp.so\",\n\t\t\t\t\tType:    \"link\",\n\t\t\t\t\tLink:    \"libgmp.so.10.4.1\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib/libgmp.so.10\",\n\t\t\t\t\tType:    \"link\",\n\t\t\t\t\tLink:    \"libgmp.so.10.4.1\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libgmp.so.10.4.1\",\n\t\t\t\t\tSize: \"663224\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"d6d03eadacdd9048d5b2adf577e9d722\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"39898bd3d8d6785222432fa8b8aef7ce3b7e5bbfc66a52b7c0da09bed4adbe6a\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib/libgmpxx.so\",\n\t\t\t\t\tType:    \"link\",\n\t\t\t\t\tLink:    \"libgmpxx.so.4.6.1\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib/libgmpxx.so.4\",\n\t\t\t\t\tType:    \"link\",\n\t\t\t\t\tLink:    \"libgmpxx.so.4.6.1\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/libgmpxx.so.4.6.1\",\n\t\t\t\t\tSize: \"30680\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"dd5f0c4d635fa599fa7f4339c0e8814d\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"0ef67cbde4841f58d2e4b41f59425eb87c9eeaf4e649c060b326342c53bedbec\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/lib/pkgconfig\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/pkgconfig/gmp.pc\",\n\t\t\t\t\tSize: \"245\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"a91a9f1b66218cb77b9cd2cdf341756d\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"4e9de547a48c4e443781e9fa702a1ec5a23ee28b4bc520306cff2541a855be37\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/lib/pkgconfig/gmpxx.pc\",\n\t\t\t\t\tSize: \"280\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"8c0f54e987934352177a6a30a811b001\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"fc5dbfbe75977057ba50953d94b9daecf696c9fdfe5b94692b832b44ecca871b\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/share\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/usr/share/info\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tDigests: []file.Digest{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/share/info/gmp.info-1.gz\",\n\t\t\t\t\tSize: \"85892\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"63304d4d2f0247fb8a999fae66a81c19\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"86288c1531a2789db5da8b9838b5cde4db07bda230ae11eba23a1f33698bd14e\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/share/info/gmp.info-2.gz\",\n\t\t\t\t\tSize: \"48484\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"4bb0dadec416d305232cac6eae712ff7\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"b7443c1b529588d98a074266087f79b595657ac7274191c34b10a9ceedfa950e\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/usr/share/info/gmp.info.gz\",\n\t\t\t\t\tSize: \"2380\",\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{Algorithm: \"md5\", Value: \"cf6880fb0d862ee1da0d13c3831b5720\"},\n\t\t\t\t\t\t{Algorithm: \"sha256\", Value: \"a13c8eecda3f3e5ad1e09773e47a9686f07d9d494eaddf326f3696bbef1548fd\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackup: []pkg.AlpmFileRecord{},\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\ttreeSitterPkg,\n\t\temacsPkg,\n\t\tfuzzyPkg,\n\t\tmadeupPkg,\n\t\tgmpPkg,\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{ // exact spec lookup\n\t\t\tFrom: treeSitterPkg,\n\t\t\tTo:   emacsPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{ // package name lookup\n\t\t\tFrom: treeSitterPkg,\n\t\t\tTo:   fuzzyPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{ // library name lookup\n\t\t\tFrom: treeSitterPkg,\n\t\t\tTo:   madeupPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/installed\").\n\t\tWithCompareOptions(cmpopts.IgnoreFields(pkg.AlpmFileRecord{}, \"Time\")).\n\t\tExpects(expectedPkgs, expectedRelationships).\n\t\tTestCataloger(t, NewDBCataloger())\n\n}\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain description files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"var/lib/pacman/local/base-1.0/desc\",\n\t\t\t\t\"var/lib/pacman/local/dive-0.10.0/desc\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tIgnoreUnfulfilledPathResponses(\"var/lib/pacman/local/base-1.0/mtree\", \"var/lib/pacman/local/dive-0.10.0/mtree\").\n\t\t\t\tTestCataloger(t, NewDBCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/dependency.go",
    "content": "package arch\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar _ dependency.Specifier = dbEntryDependencySpecifier\n\nfunc dbEntryDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.AlpmDBEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract alpm metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\tfor _, key := range meta.Provides {\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tprovides = append(provides, key, stripVersionSpecifier(key))\n\t}\n\n\tvar requires []string\n\tfor _, depSpecifier := range meta.Depends {\n\t\tif depSpecifier == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\trequires = append(requires, depSpecifier)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\nfunc stripVersionSpecifier(s string) string {\n\t// examples:\n\t// gcc-libs                  -->  gcc-libs\n\t// libtree-sitter.so=0-64    -->  libtree-sitter.so\n\n\treturn strings.TrimSpace(strings.Split(s, \"=\")[0])\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/dependency_test.go",
    "content": "package arch\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc Test_dbEntryDependencySpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"keeps given values + package name\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-c\",\n\t\t\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\t\t\tProvides: []string{\"a-thing\"},\n\t\t\t\t\tDepends:  []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-c\", \"a-thing\", \"a-thing\"}, //  note: gets deduplicated downstream\n\t\t\t\t\tRequires: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"strip version specifiers\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\t\t\tProvides: []string{\"libtree-sitter.so.me=1-64\"},\n\t\t\t\t\tDepends:  []string{\"libtree-sitter.so.thing=2-64\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\", \"libtree-sitter.so.me=1-64\", \"libtree-sitter.so.me\"},\n\t\t\t\t\tRequires: []string{\"libtree-sitter.so.thing=2-64\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty dependency data entries\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.AlpmDBEntry{\n\t\t\t\t\tProvides: []string{\"\"},\n\t\t\t\t\tDepends:  []string{\"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\"},\n\t\t\t\t\tRequires: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, dbEntryDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_stripVersionSpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tversion string\n\t\twant    string\n\t}{\n\t\t{\n\t\t\tname:    \"empty expression\",\n\t\t\tversion: \"\",\n\t\t\twant:    \"\",\n\t\t},\n\t\t{\n\t\t\tname:    \"no expression\",\n\t\t\tversion: \"gcc-libs\",\n\t\t\twant:    \"gcc-libs\",\n\t\t},\n\t\t{\n\t\t\tname:    \"=\",\n\t\t\tversion: \"libtree-sitter.so=0-64\",\n\t\t\twant:    \"libtree-sitter.so\",\n\t\t},\n\t\t{\n\t\t\tname:    \"ignores file paths\",\n\t\t\tversion: \"/bin/sh\",\n\t\t\twant:    \"/bin/sh\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, stripVersionSpecifier(tt.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/package.go",
    "content": "package arch\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackage(ctx context.Context, m *parsedData, release *linux.Release, dbLocation file.Location, otherLocations ...file.Location) pkg.Package {\n\tlicenseCandidates := strings.Split(m.Licenses, \"\\n\")\n\n\tlocs := file.NewLocationSet(dbLocation)\n\tlocs.Add(otherLocations...)\n\n\tp := pkg.Package{\n\t\tName:      m.Package,\n\t\tVersion:   m.Version,\n\t\tLocations: locs,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, dbLocation.WithoutAnnotations(), licenseCandidates...)...),\n\t\tType:      pkg.AlpmPkg,\n\t\tPURL:      packageURL(m, release),\n\t\tMetadata:  m.AlpmDBEntry,\n\t}\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURL(m *parsedData, distro *linux.Release) string {\n\tif distro == nil || distro.ID != \"arch\" {\n\t\t// note: there is no namespace variation (like with debian ID_LIKE for ubuntu ID, for example)\n\t\treturn \"\"\n\t}\n\n\tqualifiers := map[string]string{\n\t\tpkg.PURLQualifierArch: m.Architecture,\n\t}\n\n\tif m.BasePackage != \"\" {\n\t\tqualifiers[pkg.PURLQualifierUpstream] = m.BasePackage\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\t\"alpm\", // `alpm` for Arch Linux and other users of the libalpm/pacman package manager. (see https://github.com/package-url/purl-spec/pull/164)\n\t\tdistro.ID,\n\t\tm.Package,\n\t\tm.Version,\n\t\tpkg.PURLQualifiers(\n\t\t\tqualifiers,\n\t\t\tdistro,\n\t\t),\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/package_test.go",
    "content": "package arch\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_PackageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata *parsedData\n\t\tdistro   linux.Release\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"bad distro id\",\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:      \"something-else\",\n\t\t\t\tBuildID: \"rolling\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:      \"arch\",\n\t\t\t\tBuildID: \"rolling\",\n\t\t\t},\n\t\t\texpected: \"pkg:alpm/arch/p@v?arch=a&distro=arch-rolling\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing architecture\",\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage: \"p\",\n\t\t\t\t\tVersion: \"v\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID: \"arch\",\n\t\t\t},\n\t\t\texpected: \"pkg:alpm/arch/p@v?distro=arch\",\n\t\t},\n\t\t{\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage:      \"python\",\n\t\t\t\t\tVersion:      \"3.10.0\",\n\t\t\t\t\tArchitecture: \"any\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:      \"arch\",\n\t\t\t\tBuildID: \"rolling\",\n\t\t\t},\n\t\t\texpected: \"pkg:alpm/arch/python@3.10.0?arch=any&distro=arch-rolling\",\n\t\t},\n\t\t{\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage:      \"g plus plus\",\n\t\t\t\t\tVersion:      \"v84\",\n\t\t\t\t\tArchitecture: \"x86_64\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:      \"arch\",\n\t\t\t\tBuildID: \"rolling\",\n\t\t\t},\n\t\t\texpected: \"pkg:alpm/arch/g%20plus%20plus@v84?arch=x86_64&distro=arch-rolling\",\n\t\t},\n\t\t{\n\t\t\tname: \"add source information as qualifier\",\n\t\t\tmetadata: &parsedData{\n\t\t\t\tLicenses: \"\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tPackage:      \"p\",\n\t\t\t\t\tVersion:      \"v\",\n\t\t\t\t\tArchitecture: \"a\",\n\t\t\t\t\tBasePackage:  \"origin\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdistro: linux.Release{\n\t\t\t\tID:      \"arch\",\n\t\t\t\tBuildID: \"rolling\",\n\t\t\t},\n\t\t\texpected: \"pkg:alpm/arch/p@v?arch=a&distro=arch-rolling&upstream=origin\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURL(test.metadata, &test.distro)\n\t\t\tif actual != test.expected {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.expected, actual, true)\n\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\n\t\t\tif test.expected == \"\" {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// verify packageurl can parse\n\t\t\tpurl, err := packageurl.FromString(actual)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"cannot re-parse purl: %s\", actual)\n\t\t\t}\n\t\t\tif purl.Name != test.metadata.Package {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Package, purl.Name, true)\n\t\t\t\tt.Errorf(\"invalid purl name: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t\tif purl.Version != test.metadata.Version {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Version, purl.Version, true)\n\t\t\t\tt.Errorf(\"invalid purl version: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t\tif purl.Qualifiers.Map()[\"arch\"] != test.metadata.Architecture {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.metadata.Architecture, purl.Qualifiers.Map()[\"arch\"], true)\n\t\t\t\tt.Errorf(\"invalid purl architecture: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/parse_alpm_db.go",
    "content": "package arch\n\nimport (\n\t\"bufio\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\t\"github.com/vbatts/go-mtree\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseAlpmDB\n\nvar (\n\tignoredFiles = map[string]bool{\n\t\t\"/set\":       true,\n\t\t\".BUILDINFO\": true,\n\t\t\".PKGINFO\":   true,\n\t\t\"\":           true,\n\t}\n)\n\ntype parsedData struct {\n\tLicenses        string `mapstructure:\"license\"`\n\tpkg.AlpmDBEntry `mapstructure:\",squash\"`\n}\n\n// parseAlpmDB parses the arch linux pacman database flat-files and returns the packages and relationships found within.\nfunc parseAlpmDB(ctx context.Context, resolver file.Resolver, env *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar errs error\n\n\tdata, err := parseAlpmDBEntry(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif data == nil {\n\t\treturn nil, nil, nil\n\t}\n\n\tbase := path.Dir(reader.RealPath)\n\n\tvar locs []file.Location\n\n\t// replace the files found the pacman database with the files from the mtree These contain more metadata and\n\t// thus more useful.\n\tfiles, fileLoc, err := fetchPkgFiles(base, resolver)\n\terrs = unknown.Join(errs, err)\n\tif err == nil {\n\t\tlocs = append(locs, fileLoc.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t\tdata.Files = files\n\t}\n\tbackups, backupLoc, err := fetchBackupFiles(base, resolver)\n\terrs = unknown.Join(errs, err)\n\tif err == nil {\n\t\tlocs = append(locs, backupLoc.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t\tdata.Backup = backups\n\t}\n\n\tif data.Package == \"\" {\n\t\treturn nil, nil, errs\n\t}\n\n\treturn []pkg.Package{\n\t\tnewPackage(\n\t\t\tctx,\n\t\t\tdata,\n\t\t\tenv.LinuxRelease,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\tlocs...,\n\t\t),\n\t}, nil, errs\n}\n\nfunc fetchPkgFiles(base string, resolver file.Resolver) ([]pkg.AlpmFileRecord, file.Location, error) {\n\t// TODO: probably want to use MTREE and PKGINFO here\n\ttarget := path.Join(base, \"mtree\")\n\n\tloc, err := getLocation(target, resolver)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", target).Trace(\"failed to find mtree file\")\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to find mtree file: %w\", err))\n\t}\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to get contents: %w\", err))\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\tpkgFiles, err := parseMtree(reader)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", target).Trace(\"failed to parse mtree file\")\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to parse mtree: %w\", err))\n\t}\n\treturn pkgFiles, loc, nil\n}\n\nfunc fetchBackupFiles(base string, resolver file.Resolver) ([]pkg.AlpmFileRecord, file.Location, error) {\n\t// We only really do this to get any backup database entries from the files database\n\ttarget := filepath.Join(base, \"files\")\n\n\tloc, err := getLocation(target, resolver)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", target).Trace(\"failed to find alpm files\")\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to find alpm files: %w\", err))\n\t}\n\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to get contents: %w\", err))\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\tfilesMetadata, err := parseAlpmDBEntry(reader)\n\tif err != nil {\n\t\treturn []pkg.AlpmFileRecord{}, loc, unknown.New(loc, fmt.Errorf(\"failed to parse alpm db entry: %w\", err))\n\t}\n\tif filesMetadata != nil {\n\t\treturn filesMetadata.Backup, loc, nil\n\t}\n\treturn []pkg.AlpmFileRecord{}, loc, nil\n}\n\nfunc parseAlpmDBEntry(reader io.Reader) (*parsedData, error) {\n\tscanner := newScanner(reader)\n\tmetadata, err := parseDatabase(scanner)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn metadata, nil\n}\n\nfunc newScanner(reader io.Reader) *bufio.Scanner {\n\t// This is taken from the apk parser\n\t// https://github.com/anchore/syft/blob/v0.47.0/syft/pkg/cataloger/apkdb/parse_apk_db.go#L37\n\tconst maxScannerCapacity = 1024 * 1024\n\tbufScan := make([]byte, maxScannerCapacity)\n\tscanner := bufio.NewScanner(reader)\n\tscanner.Buffer(bufScan, maxScannerCapacity)\n\tonDoubleLF := func(data []byte, atEOF bool) (advance int, token []byte, err error) {\n\t\tfor i := 0; i < len(data); i++ {\n\t\t\tif i > 0 && data[i-1] == '\\n' && data[i] == '\\n' {\n\t\t\t\treturn i + 1, data[:i-1], nil\n\t\t\t}\n\t\t}\n\t\tif !atEOF {\n\t\t\treturn 0, nil, nil\n\t\t}\n\t\t// deliver the last token (which could be an empty string)\n\t\treturn 0, data, bufio.ErrFinalToken\n\t}\n\n\tscanner.Split(onDoubleLF)\n\treturn scanner\n}\n\nfunc getLocation(path string, resolver file.Resolver) (file.Location, error) {\n\tloc := file.NewLocation(path)\n\tlocs, err := resolver.FilesByPath(path)\n\tif err != nil {\n\t\treturn loc, err\n\t}\n\n\tif len(locs) == 0 {\n\t\treturn loc, fmt.Errorf(\"could not find file: %s\", path)\n\t}\n\n\tif len(locs) > 1 {\n\t\tlog.WithFields(\"path\", path).Trace(\"multiple files found for path, using first path\")\n\t}\n\treturn locs[0], nil\n}\n\nfunc parseDatabase(b *bufio.Scanner) (*parsedData, error) {\n\tvar err error\n\tpkgFields := make(map[string]interface{})\n\tfor b.Scan() {\n\t\tfields := strings.SplitN(b.Text(), \"\\n\", 2)\n\n\t\t// End of File\n\t\tif len(fields) == 1 {\n\t\t\tbreak\n\t\t}\n\n\t\t// The alpm database surrounds the keys with %.\n\t\tkey := strings.ReplaceAll(fields[0], \"%\", \"\")\n\t\tkey = strings.ToLower(key)\n\t\tvalue := strings.TrimSpace(fields[1])\n\n\t\tswitch key {\n\t\tcase \"files\":\n\t\t\tvar files []map[string]string\n\t\t\tfor _, f := range strings.Split(value, \"\\n\") {\n\t\t\t\tp := fmt.Sprintf(\"/%s\", f)\n\t\t\t\tif ok := ignoredFiles[p]; !ok {\n\t\t\t\t\tfiles = append(files, map[string]string{\"path\": p})\n\t\t\t\t}\n\t\t\t}\n\t\t\tpkgFields[key] = files\n\t\tcase \"backup\":\n\t\t\tvar backup []map[string]interface{}\n\t\t\tfor _, f := range strings.Split(value, \"\\n\") {\n\t\t\t\tfields := strings.SplitN(f, \"\\t\", 2)\n\t\t\t\tp := fmt.Sprintf(\"/%s\", fields[0])\n\t\t\t\tif ok := ignoredFiles[p]; !ok {\n\t\t\t\t\tbackup = append(backup, map[string]interface{}{\n\t\t\t\t\t\t\"path\": p,\n\t\t\t\t\t\t\"digests\": []file.Digest{{\n\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\tValue:     fields[1],\n\t\t\t\t\t\t}}})\n\t\t\t\t}\n\t\t\t}\n\t\t\tpkgFields[key] = backup\n\t\tcase \"depends\", \"provides\":\n\t\t\tpkgFields[key] = processLibrarySpecs(value)\n\t\tcase \"reason\":\n\t\t\tfallthrough\n\t\tcase \"size\":\n\t\t\tpkgFields[key], err = strconv.ParseInt(value, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to parse %s to integer\", value)\n\t\t\t}\n\t\tdefault:\n\t\t\tpkgFields[key] = value\n\t\t}\n\t}\n\n\treturn parsePkgFiles(pkgFields)\n}\n\nfunc processLibrarySpecs(value string) []string {\n\tlines := strings.Split(value, \"\\n\")\n\tlibrarySpecs := make([]string, 0)\n\tfor _, line := range lines {\n\t\tline = strings.TrimSpace(line)\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tlibrarySpecs = append(librarySpecs, line)\n\t}\n\treturn librarySpecs\n}\n\nfunc parsePkgFiles(pkgFields map[string]interface{}) (*parsedData, error) {\n\tvar entry parsedData\n\tif err := mapstructure.Decode(pkgFields, &entry); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse ALPM metadata: %w\", err)\n\t}\n\n\tif entry.Backup == nil {\n\t\tentry.Backup = make([]pkg.AlpmFileRecord, 0)\n\t}\n\n\tif entry.Files == nil {\n\t\tentry.Files = make([]pkg.AlpmFileRecord, 0)\n\t}\n\n\tif entry.Package == \"\" && len(entry.Files) == 0 && len(entry.Backup) == 0 {\n\t\treturn nil, nil\n\t}\n\treturn &entry, nil\n}\n\nfunc parseMtree(r io.Reader) ([]pkg.AlpmFileRecord, error) {\n\tvar err error\n\tvar entries []pkg.AlpmFileRecord\n\n\tr, err = gzip.NewReader(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tspecDh, err := mtree.ParseSpec(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, f := range specDh.Entries {\n\t\tvar entry pkg.AlpmFileRecord\n\t\tentry.Digests = make([]file.Digest, 0)\n\t\tfileFields := make(map[string]interface{})\n\t\tif ok := ignoredFiles[f.Name]; ok {\n\t\t\tcontinue\n\t\t}\n\t\tpath := fmt.Sprintf(\"/%s\", f.Name)\n\t\tfileFields[\"path\"] = path\n\t\tfor _, kv := range f.Keywords {\n\t\t\tkw := string(kv.Keyword())\n\t\t\tswitch kw {\n\t\t\tcase \"time\":\n\t\t\t\t// All unix timestamps have a .0 suffixs.\n\t\t\t\tv := strings.Split(kv.Value(), \".\")\n\t\t\t\ti, _ := strconv.ParseInt(v[0], 10, 64)\n\t\t\t\ttm := time.Unix(i, 0)\n\t\t\t\tfileFields[kw] = tm\n\t\t\tcase \"sha256digest\":\n\t\t\t\tentry.Digests = append(entry.Digests, file.Digest{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     kv.Value(),\n\t\t\t\t})\n\t\t\tcase \"md5digest\":\n\t\t\t\tentry.Digests = append(entry.Digests, file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     kv.Value(),\n\t\t\t\t})\n\t\t\tdefault:\n\t\t\t\tfileFields[kw] = kv.Value()\n\t\t\t}\n\t\t}\n\t\tif err := mapstructure.Decode(fileFields, &entry); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to parse ALPM mtree data: %w\", err)\n\t\t}\n\t\tentries = append(entries, entry)\n\t}\n\treturn entries, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/parse_alpm_db_test.go",
    "content": "package arch\n\nimport (\n\t\"bufio\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestDatabaseParser(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected *parsedData\n\t}{\n\t\t{\n\t\t\tname:    \"simple desc parsing\",\n\t\t\tfixture: \"testdata/files\",\n\t\t\texpected: &parsedData{\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tBackup: []pkg.AlpmFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pacman.conf\",\n\t\t\t\t\t\t\tDigests: []file.Digest{{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"de541390e52468165b96511c4665bff4\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/makepkg.conf\",\n\t\t\t\t\t\t\tDigests: []file.Digest{{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"79fce043df7dfc676ae5ecb903762d8b\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []pkg.AlpmFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/makepkg.conf\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pacman.conf\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/makepkg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/makepkg-template\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/pacman\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/usr/bin/pacman-conf\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/cache/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/cache/pacman/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/cache/pacman/pkg/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lib/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/var/lib/pacman/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"with dependencies\",\n\t\t\tfixture: \"testdata/installed/var/lib/pacman/local/gmp-6.2.1-2/desc\",\n\t\t\texpected: &parsedData{\n\t\t\t\tLicenses: \"LGPL3\\nGPL\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tBasePackage:  \"gmp\",\n\t\t\t\t\tPackage:      \"gmp\",\n\t\t\t\t\tVersion:      \"6.2.1-2\",\n\t\t\t\t\tDescription:  \"A free library for arbitrary precision arithmetic\",\n\t\t\t\t\tArchitecture: \"x86_64\",\n\t\t\t\t\tSize:         1044438,\n\t\t\t\t\tPackager:     \"Antonio Rojas <arojas@archlinux.org>\",\n\t\t\t\t\tURL:          \"https://gmplib.org/\",\n\t\t\t\t\tValidation:   \"pgp\",\n\t\t\t\t\tReason:       1,\n\t\t\t\t\tFiles:        []pkg.AlpmFileRecord{},\n\t\t\t\t\tBackup:       []pkg.AlpmFileRecord{},\n\t\t\t\t\tDepends:      []string{\"gcc-libs\", \"sh\", \"libtree-sitter.so=1-64\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"with provides\",\n\t\t\tfixture: \"testdata/installed/var/lib/pacman/local/tree-sitter-0.22.6-1/desc\",\n\t\t\texpected: &parsedData{\n\t\t\t\tLicenses: \"MIT\",\n\t\t\t\tAlpmDBEntry: pkg.AlpmDBEntry{\n\t\t\t\t\tBasePackage:  \"tree-sitter\",\n\t\t\t\t\tPackage:      \"tree-sitter\",\n\t\t\t\t\tVersion:      \"0.22.6-1\",\n\t\t\t\t\tDescription:  \"Incremental parsing library\",\n\t\t\t\t\tArchitecture: \"x86_64\",\n\t\t\t\t\tSize:         223539,\n\t\t\t\t\tPackager:     \"Daniel M. Capella <polyzen@archlinux.org>\",\n\t\t\t\t\tURL:          \"https://github.com/tree-sitter/tree-sitter\",\n\t\t\t\t\tValidation:   \"pgp\",\n\t\t\t\t\tReason:       1,\n\t\t\t\t\tFiles:        []pkg.AlpmFileRecord{},\n\t\t\t\t\tBackup:       []pkg.AlpmFileRecord{},\n\t\t\t\t\tProvides:     []string{\"libtree-sitter.so=0-64\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tf, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\treader := bufio.NewReader(f)\n\n\t\t\tentry, err := parseAlpmDBEntry(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(test.expected, entry); diff != \"\" {\n\t\t\t\tt.Errorf(\"parsed data mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc parseTime(stime string) time.Time {\n\tt, _ := time.Parse(time.RFC3339, stime)\n\treturn t\n}\n\nfunc TestMtreeParse(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\texpected []pkg.AlpmFileRecord\n\t}{\n\t\t{\n\t\t\tname: \"test mtree parsing\",\n\t\t\texpected: []pkg.AlpmFileRecord{\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/etc\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tTime:    parseTime(\"2022-04-10T14:59:52+02:00\"),\n\t\t\t\t\tDigests: make([]file.Digest, 0),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath:    \"/etc/pacman.d\",\n\t\t\t\t\tType:    \"dir\",\n\t\t\t\t\tTime:    parseTime(\"2022-04-10T14:59:52+02:00\"),\n\t\t\t\t\tDigests: make([]file.Digest, 0),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPath: \"/etc/pacman.d/mirrorlist\",\n\t\t\t\t\tSize: \"44683\",\n\t\t\t\t\tTime: parseTime(\"2022-04-10T14:59:52+02:00\"),\n\t\t\t\t\tDigests: []file.Digest{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\tValue:     \"81c39827e38c759d7e847f05db62c233\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"fc135ab26f2a227b9599b66a2f1ba325c445acb914d60e7ecf6e5997a87abe1e\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tf, err := os.Open(\"testdata/mtree\")\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\treader := bufio.NewReader(f)\n\n\t\t\tentry, err := parseMtree(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(entry, test.expected); diff != \"\" {\n\t\t\t\tt.Errorf(\"Files mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/files",
    "content": "%FILES%\netc/\netc/makepkg.conf\netc/pacman.conf\nusr/\nusr/bin/\nusr/bin/makepkg\nusr/bin/makepkg-template\nusr/bin/pacman\nusr/bin/pacman-conf\nvar/\nvar/cache/\nvar/cache/pacman/\nvar/cache/pacman/pkg/\nvar/lib/\nvar/lib/pacman/\n\n%BACKUP%\netc/pacman.conf\tde541390e52468165b96511c4665bff4\netc/makepkg.conf\t79fce043df7dfc676ae5ecb903762d8b\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/glob-paths/var/lib/pacman/local/base-1.0/desc",
    "content": "bogus desc file"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/glob-paths/var/lib/pacman/local/base-1.0/files",
    "content": "bogus files"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/glob-paths/var/lib/pacman/local/dive-0.10.0/desc",
    "content": "bogus desc file"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/corrupt-0.2.1-3/desc",
    "content": "%NME%\ntree-sitter\n\n%VER.6-1\n\n%BASE%\ntree-sitter\n\n%DESC%\nIncremental parsing library\n\n\n%BUILDDATE%\n1714945746\n\n%INSTALLDATE%\n1715026360\n\n%PACKA@archlinux.org>\n\n%SIZE%\n223539\n\n%REASON%\n1\n\n%LICENSE%\nMIT\n\n%VALIDATION%\npgp\n\n%PROVIDE\nlibtree-sitter.so=0-64\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/emacs-29.3-3/desc",
    "content": "%NAME%\nemacs\n\n%VERSION%\n29.3-3\n\n%BASE%\nemacs\n\n%DESC%\nThe extensible, customizable, self-documenting real-time display editor\n\n%URL%\nhttps://www.gnu.org/software/emacs/emacs.html\n\n%ARCH%\nx86_64\n\n%BUILDDATE%\n1714249917\n\n%INSTALLDATE%\n1715026363\n\n%PACKAGER%\nFrederik Schwan <freswa@archlinux.org>\n\n%SIZE%\n126427862\n\n%LICENSE%\nGPL3\n\n%VALIDATION%\npgp\n\n%DEPENDS%\nlibtree-sitter.so=0-64\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/fuzzy-1.2-3/desc",
    "content": "%NAME%\nfuzzy\n\n%VERSION%\n1.2-3\n\n%DEPENDS%\ntree-sitter\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/fuzzy-1.2-3/files",
    "content": "%FILES%\netc/\netc/fuzzy.conf\n\n%BACKUP%\netc/fuzzy.conf\t79fce043df7dfc676ae5ecb903762d8b\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/gmp-6.2.1-2/desc",
    "content": "%NAME%\ngmp\n\n%VERSION%\n6.2.1-2\n\n%BASE%\ngmp\n\n%DESC%\nA free library for arbitrary precision arithmetic\n\n%URL%\nhttps://gmplib.org/\n\n%ARCH%\nx86_64\n\n%BUILDDATE%\n1653121258\n\n%INSTALLDATE%\n1665878640\n\n%PACKAGER%\nAntonio Rojas <arojas@archlinux.org>\n\n%SIZE%\n1044438\n\n%REASON%\n1\n\n%LICENSE%\nLGPL3\nGPL\n\n%VALIDATION%\npgp\n\n%DEPENDS%\ngcc-libs\nsh\nlibtree-sitter.so=1-64\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/gmp-6.2.1-2/files",
    "content": "%FILES%\nusr/\nusr/include/\nusr/include/gmp.h\nusr/include/gmpxx.h\nusr/lib/\nusr/lib/libgmp.so\nusr/lib/libgmp.so.10\nusr/lib/libgmp.so.10.4.1\nusr/lib/libgmpxx.so\nusr/lib/libgmpxx.so.4\nusr/lib/libgmpxx.so.4.6.1\nusr/lib/pkgconfig/\nusr/lib/pkgconfig/gmp.pc\nusr/lib/pkgconfig/gmpxx.pc\nusr/share/\nusr/share/info/\nusr/share/info/gmp.info-1.gz\nusr/share/info/gmp.info-2.gz\nusr/share/info/gmp.info.gz\n\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/madeup-20.30-4/desc",
    "content": "%NAME%\nmadeup\n\n%VERSION%\n20.30-4\n\n%DEPENDS%\nlibtree-sitter.so\n"
  },
  {
    "path": "syft/pkg/cataloger/arch/testdata/installed/var/lib/pacman/local/tree-sitter-0.22.6-1/desc",
    "content": "%NAME%\ntree-sitter\n\n%VERSION%\n0.22.6-1\n\n%BASE%\ntree-sitter\n\n%DESC%\nIncremental parsing library\n\n%URL%\nhttps://github.com/tree-sitter/tree-sitter\n\n%ARCH%\nx86_64\n\n%BUILDDATE%\n1714945746\n\n%INSTALLDATE%\n1715026360\n\n%PACKAGER%\nDaniel M. Capella <polyzen@archlinux.org>\n\n%SIZE%\n223539\n\n%REASON%\n1\n\n%LICENSE%\nMIT\n\n%VALIDATION%\npgp\n\n%PROVIDES%\nlibtree-sitter.so=0-64\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/README.md",
    "content": "# Adding tests for the Binary classifier cataloger\n\n> [!TIP]\n> **TL;DR** to add a test for a new classifier:\n>  1. head to the correct directory: `cd testdata`\n>  2. add a new entry to `config.yaml` to track where to get the binary from (verify the entry with `make list`)\n>  3. run `make download` to get the binary\n>  4. run `make add-snippet` and follow the prompts (use `/` to search)\n>  5. add a new test case to `Test_Cataloger_PositiveCases` in `../cataloger_test.go`\n\n\nTo test the binary cataloger we run it against a set of files (\"test fixtures\"). There are two kinds of test fixtures:\n\n- **Full binaries**: files downloaded and cached at test runtime\n- **Snippets**: ~100 byte files checked into the repo\n\nThe upside with snippets is that they live with the test, don't necessarily require network access or hosting concerns, and are easy to add. The downside is that they are not the entire real binary so modifications may require recreating the snippet entirely.\n\nThe upside with full binaries is that they are the \"Real McCoy\" and allows the business logic to change without needing to update the fixture. The downside is that they require network access and take up a lot of space. For instance, downloading all binaries for testing today requires downloading ~15GB of container images and ends up being ~500MB of disk space.\n\nYou can find the test fixtures at the following locations:\n```\nsyft/pkg/cataloger/binary/testdata/\n└── classifiers/\n    ├── bin/        # full binaries\n    ├── ...\n    └── snippets/   # snippets\n```\n\nAnd use tooling to list and manage the fixtures:\n\n- `make list` - list all fixtures\n- `make download` - download binaries that are not covered by a snippet\n- `make download-all` - download all binaries\n- `go run ./manager add-snippet` - add a new snippet based off of a configured binary\n- `capture-snippet.sh` - add a new snippet based off of a binary on your local machine (not recommended, but allowed)\n\nThere is a `config.yaml` that tracks all binaries that the tests can use. This makes it possible to download it at any time from a hosted source. Today the only method allowed is to download a container image and extract files out.\n\nHere is an example entry in `config.yaml` for a binary reference from a container image:\n\n```yaml\nfrom-images:\n  \n  # note the group-name is assumed from the single binary name extracted: \"redis-server\"\n  - version: 7.2.3\n    images:\n      # note we're pulling the same binary from multiple images (representing different architectures)\n      - ref: redis:7.2.3@sha256:d4c84914b872521e215f77d8845914c2268a96b0e35bacd5691e1f5e1f88b500\n        platform: linux/amd64\n      - ref: redis:7.2.3@sha256:a0a0c38b31011b813cddf78d997f8ccba13019c27efd386984b0cfc1e4b618ff\n        platform: linux/arm64\n    # the paths to extract from the binary...\n    paths:\n      - /usr/local/bin/redis-server\n\n  # since there are multiple binaries in the image, we need to specify the group-name\n  - name: ruby-bullseye-shared-libs\n    version: 2.7.7\n    images:\n      - ref: ruby:2.7.7-bullseye@sha256:055191740a063f33fef1f09423e5ed8f91143aae62a3772a90910118464c5120\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.2.7.7\n      - /usr/local/lib/libruby.so.2.7\n```\n\n\n> [!NOTE]  \n> You will need a system with `go`, `bash`, `strings`, and `xxd` installed to capture test snippets.\n\n\n## Testing\n\nThe test cases have been setup to allow testing against full binaries or a mix of both (default).\nTo force running only against full binaries run with:\n\n```bash\ngo test -must-use-full-binaries ./syft/pkg/cataloger/binary/testdata/...\n```\n\n## Adding a new test fixture\n\n### Adding a snippet (recommended)\n\nEven if you are adding a snippet, it is best practice to:\n\n- create that snippet from a full binary (not craft a snippet by hand)\n- track where the binary is from and how to download it in `config.yaml`\n\n1. Follow the steps above to [add a full binary](#adding-a-full-binary)\n\n2. Run `go run ./manager add-snippet` and follow the prompts to create a new snippet\n   - you should see your binary in the list of binaries to choose from. If not, check step 2\n   - if the search results in no matching snippets, you can specify your own search with `--search-for <grep-pattern>`\n   - you should see a new snippet file created in `snippets/`\n\n3. Write a test that references your new snippet by `<name>/<version>/<architecture>`\n   - `<name>` is the name of the binary (e.g. `curl`) or the name in `config.yaml` if specified\n   - note that your test does not know about if it's running against a snippet or a full binary\n\n\n### Adding a full binary\n\n1. Add a new entry to `config.yaml` with the following fields\n  - if you are adding a single binary, the `name` field does not need to be specified\n  - the `name` field is useful for distinguishing a quality about the binary (e.g. `java` vs `java-jre-ibm`)\n\n2. Run `make download` and ensure your new binary is downloaded\n\n\n### Adding a custom snippet\n\nIf you need to add a snippet that is not based off of a full binary, you can use the `capture-snippet.sh` script.\n\n```bash\n./capture-snippet.sh <binary-path> <version> [--search-for <pattern>] [--length <length>] [--prefix-length <prefix_length>] [--group <name>]\n```\n\n\nThis is **not** recommended because it is not reproducible and does not allow for the test to be run against a full binary. "
  },
  {
    "path": "syft/pkg/cataloger/binary/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: binary # MANUAL\n    name: binary-classifier-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/binary/classifier_cataloger.go\n      function: NewClassifierCataloger\n    selectors: # AUTO-GENERATED\n      - binary\n      - declared\n      - directory\n      - image\n      - installed\n      - package\n    detectors: # AUTO-GENERATED\n      - method: glob\n        criteria:\n          - '**/python*'\n        packages:\n          - class: python-binary\n            name: python\n            purl: pkg:generic/python\n            cpes:\n              - cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:python:python:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libpython*.so*'\n        packages:\n          - class: python-binary-lib\n            name: python\n            purl: pkg:generic/python\n            cpes:\n              - cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:python:python:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libpypy*.so*'\n        packages:\n          - class: pypy-binary-lib\n            name: pypy\n            purl: pkg:generic/pypy\n            cpes: []\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/{go,go.exe}'\n        packages:\n          - class: go-binary\n            name: go\n            purl: pkg:generic/go\n            cpes:\n              - cpe:2.3:a:golang:go:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libjulia-internal.so'\n        packages:\n          - class: julia-binary\n            name: julia\n            purl: pkg:generic/julia\n            cpes:\n              - cpe:2.3:a:julialang:julia:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/helm'\n        packages:\n          - class: helm\n            name: helm\n            purl: pkg:golang/helm.sh/helm\n            cpes:\n              - cpe:2.3:a:helm:helm:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/redis-server'\n        packages:\n          - class: redis-binary\n            name: redis\n            purl: pkg:generic/redis\n            cpes:\n              - cpe:2.3:a:redislabs:redis:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:redis:redis:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/valkey-server'\n        packages:\n          - class: valkey-binary\n            name: valkey\n            purl: pkg:generic/valkey\n            cpes:\n              - cpe:2.3:a:lfprojects:valkey:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:linuxfoundation:valkey:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:valkey-io:valkey:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/node'\n        packages:\n          - class: nodejs-binary\n            name: node\n            purl: pkg:generic/node\n            cpes:\n              - cpe:2.3:a:nodejs:node.js:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/busybox'\n        packages:\n          - class: busybox-binary\n            name: busybox\n            purl: pkg:generic/busybox\n            cpes:\n              - cpe:2.3:a:busybox:busybox:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/getopt'\n        packages:\n          - class: util-linux-binary\n            name: util-linux\n            purl: pkg:generic/util-linux\n            cpes:\n              - cpe:2.3:a:kernel:util-linux:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/haproxy'\n        packages:\n          - class: haproxy-binary\n            name: haproxy\n            purl: pkg:generic/haproxy\n            cpes:\n              - cpe:2.3:a:haproxy:haproxy:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/perl'\n        packages:\n          - class: perl-binary\n            name: perl\n            purl: pkg:generic/perl\n            cpes:\n              - cpe:2.3:a:perl:perl:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/composer*'\n        packages:\n          - class: php-composer-binary\n            name: composer\n            purl: pkg:generic/composer\n            cpes:\n              - cpe:2.3:a:getcomposer:composer:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/httpd'\n        packages:\n          - class: httpd-binary\n            name: httpd\n            purl: pkg:generic/httpd\n            cpes:\n              - cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/memcached'\n        packages:\n          - class: memcached-binary\n            name: memcached\n            purl: pkg:generic/memcached\n            cpes:\n              - cpe:2.3:a:memcached:memcached:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/traefik'\n        packages:\n          - class: traefik-binary\n            name: traefik\n            purl: pkg:generic/traefik\n            cpes:\n              - cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/arangosh'\n        packages:\n          - class: arangodb-binary\n            name: arangodb\n            purl: pkg:generic/arangodb\n            cpes:\n              - cpe:2.3:a:arangodb:arangodb:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/postgres'\n        packages:\n          - class: postgresql-binary\n            name: postgresql\n            purl: pkg:generic/postgresql\n            cpes:\n              - cpe:2.3:a:postgresql:postgresql:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/mysql'\n        packages:\n          - class: mysql-binary\n            name: mysql\n            purl: pkg:generic/mysql\n            cpes:\n              - cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/mysql'\n        packages:\n          - class: mysql-binary\n            name: percona-server\n            purl: pkg:generic/percona-server\n            cpes:\n              - cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/mysql'\n        packages:\n          - class: mysql-binary\n            name: percona-xtradb-cluster\n            purl: pkg:generic/percona-xtradb-cluster\n            cpes:\n              - cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:percona:xtradb_cluster:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/xtrabackup'\n        packages:\n          - class: xtrabackup-binary\n            name: percona-xtrabackup\n            purl: pkg:generic/percona-xtrabackup\n            cpes:\n              - cpe:2.3:a:percona:xtrabackup:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/{mariadb,mysql}'\n        packages:\n          - class: mariadb-binary\n            name: mariadb\n            purl: pkg:generic/mariadb\n            cpes:\n              - cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libstd-????????????????.so'\n        packages:\n          - class: rust-standard-library-linux\n            name: rust\n            purl: pkg:generic/rust\n            cpes:\n              - cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libstd-????????????????.dylib'\n        packages:\n          - class: rust-standard-library-macos\n            name: rust\n            purl: pkg:generic/rust\n            cpes:\n              - cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/ruby'\n        packages:\n          - class: ruby-binary\n            name: ruby\n            purl: pkg:generic/ruby\n            cpes:\n              - cpe:2.3:a:ruby-lang:ruby:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/erlexec'\n        packages:\n          - class: erlang-binary\n            name: erlang\n            purl: pkg:generic/erlang\n            cpes:\n              - cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/beam.smp'\n        packages:\n          - class: erlang-alpine-binary\n            name: erlang\n            purl: pkg:generic/erlang\n            cpes:\n              - cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/liberts_internal.a'\n        packages:\n          - class: erlang-library\n            name: erlang\n            purl: pkg:generic/erlang\n            cpes:\n              - cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/swipl'\n        packages:\n          - class: swipl-binary\n            name: swipl\n            purl: pkg:generic/swipl\n            cpes:\n              - cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/dart'\n        packages:\n          - class: dart-binary\n            name: dart\n            purl: pkg:generic/dart\n            cpes:\n              - cpe:2.3:a:dart:dart_software_development_kit:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/ghc*'\n        packages:\n          - class: haskell-ghc-binary\n            name: haskell/ghc\n            purl: pkg:generic/haskell/ghc\n            cpes:\n              - cpe:2.3:a:haskell:ghc:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/cabal'\n        packages:\n          - class: haskell-cabal-binary\n            name: haskell/cabal\n            purl: pkg:generic/haskell/cabal\n            cpes:\n              - cpe:2.3:a:haskell:cabal:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/stack'\n        packages:\n          - class: haskell-stack-binary\n            name: haskell/stack\n            purl: pkg:generic/haskell/stack\n            cpes:\n              - cpe:2.3:a:haskell:stack:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/consul'\n        packages:\n          - class: consul-binary\n            name: consul\n            purl: pkg:golang/github.com/hashicorp/consul\n            cpes:\n              - cpe:2.3:a:hashicorp:consul:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/vault'\n        packages:\n          - class: hashicorp-vault-binary\n            name: github.com/hashicorp/vault\n            purl: pkg:golang/github.com/hashicorp/vault\n            cpes:\n              - cpe:2.3:a:hashicorp:vault:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/nginx'\n        packages:\n          - class: nginx-binary\n            name: nginx\n            purl: pkg:generic/nginx\n            cpes:\n              - cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:nginx:nginx:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/bash'\n        packages:\n          - class: bash-binary\n            name: bash\n            purl: pkg:generic/bash\n            cpes:\n              - cpe:2.3:a:gnu:bash:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/openssl'\n        packages:\n          - class: openssl-binary\n            name: openssl\n            purl: pkg:generic/openssl\n            cpes:\n              - cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libQt*Core.so*'\n        packages:\n          - class: qt-qtbase-lib\n            name: qtbase\n            purl: pkg:generic/qtbase\n            cpes:\n              - cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*\n              - cpe:2.3:a:qt:qtbase:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/gcc'\n        packages:\n          - class: gcc-binary\n            name: gcc\n            purl: pkg:generic/gcc\n            cpes:\n              - cpe:2.3:a:gnu:gcc:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/fluent-bit'\n        packages:\n          - class: fluent-bit-binary\n            name: fluent-bit\n            purl: pkg:github/fluent/fluent-bit\n            cpes:\n              - cpe:2.3:a:treasuredata:fluent_bit:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/wp'\n        packages:\n          - class: wordpress-cli-binary\n            name: wp-cli\n            purl: pkg:generic/wp-cli\n            cpes:\n              - cpe:2.3:a:wp-cli:wp-cli:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/curl'\n        packages:\n          - class: curl-binary\n            name: curl\n            purl: pkg:generic/curl\n            cpes:\n              - cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/lighttpd'\n        packages:\n          - class: lighttpd-binary\n            name: lighttpd\n            purl: pkg:generic/lighttpd\n            cpes:\n              - cpe:2.3:a:lighttpd:lighttpd:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/proftpd'\n        packages:\n          - class: proftpd-binary\n            name: proftpd\n            purl: pkg:generic/proftpd\n            cpes:\n              - cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/zstd'\n        packages:\n          - class: zstd-binary\n            name: zstd\n            purl: pkg:generic/zstd\n            cpes:\n              - cpe:2.3:a:facebook:zstandard:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/xz'\n        packages:\n          - class: xz-binary\n            name: xz\n            purl: pkg:generic/xz\n            cpes:\n              - cpe:2.3:a:tukaani:xz:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/gzip'\n        packages:\n          - class: gzip-binary\n            name: gzip\n            purl: pkg:generic/gzip\n            cpes:\n              - cpe:2.3:a:gnu:gzip:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/sqlcipher'\n        packages:\n          - class: sqlcipher-binary\n            name: sqlcipher\n            purl: pkg:generic/sqlcipher\n            cpes:\n              - cpe:2.3:a:zetetic:sqlcipher:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/jq'\n        packages:\n          - class: jq-binary\n            name: jq\n            purl: pkg:generic/jq\n            cpes:\n              - cpe:2.3:a:jqlang:jq:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/chrome'\n        packages:\n          - class: chrome-binary\n            name: chrome\n            purl: pkg:generic/chrome\n            cpes:\n              - cpe:2.3:a:google:chrome:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/ffmpeg'\n        packages:\n          - class: ffmpeg-binary\n            name: ffmpeg\n            purl: pkg:generic/ffmpeg\n            cpes:\n              - cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libav*'\n        packages:\n          - class: ffmpeg-library\n            name: ffmpeg\n            purl: pkg:generic/ffmpeg\n            cpes:\n              - cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/libswresample*'\n        packages:\n          - class: ffmpeg-library\n            name: ffmpeg\n            purl: pkg:generic/ffmpeg\n            cpes:\n              - cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/elixir'\n        packages:\n          - class: elixir-binary\n            name: elixir\n            purl: pkg:generic/elixir\n            cpes:\n              - cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/elixir/ebin/elixir.app'\n        packages:\n          - class: elixir-library\n            name: elixir\n            purl: pkg:generic/elixir\n            cpes:\n              - cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/pilot-discovery'\n        packages:\n          - class: istio-binary\n            name: pilot-discovery\n            purl: pkg:generic/istio\n            cpes:\n              - cpe:2.3:a:istio:istio:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/pilot-agent'\n        packages:\n          - class: istio-binary\n            name: pilot-agent\n            purl: pkg:generic/istio\n            cpes:\n              - cpe:2.3:a:istio:istio:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/grafana'\n        packages:\n          - class: grafana-binary\n            name: grafana\n            purl: pkg:generic/grafana\n            cpes:\n              - cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/grafana-server'\n        packages:\n          - class: grafana-binary\n            name: grafana\n            purl: pkg:generic/grafana\n            cpes:\n              - cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/envoy'\n        packages:\n          - class: envoy-binary\n            name: envoy\n            purl: pkg:generic/envoy\n            cpes:\n              - cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/mongod'\n        packages:\n          - class: mongodb-binary\n            name: mongodb\n            purl: pkg:generic/mongodb\n            cpes:\n              - cpe:2.3:a:mongodb:mongodb:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/java'\n        packages:\n          - class: java-binary\n            name: \"\"\n            purl: pkg:/\n            cpes: []\n            type: BinaryPkg\n          - class: java-binary-graalvm\n            name: graalvm\n            purl: pkg:generic/oracle/graalvm\n            cpes:\n              - cpe:2.3:a:oracle:graalvm:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-openjdk-zulu\n            name: zulu\n            purl: pkg:generic/azul/zulu\n            cpes:\n              - cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-openjdk-with-update\n            name: openjdk\n            purl: pkg:generic/oracle/openjdk\n            cpes:\n              - cpe:2.3:a:oracle:openjdk:{{.primary}}:update{{.update}}:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-openjdk\n            name: openjdk\n            purl: pkg:generic/oracle/openjdk\n            cpes:\n              - cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-ibm\n            name: java\n            purl: pkg:generic/ibm/java\n            cpes:\n              - cpe:2.3:a:ibm:java:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-openjdk-fallthrough\n            name: jre\n            purl: pkg:generic/oracle/jre\n            cpes:\n              - cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-oracle\n            name: jre\n            purl: pkg:generic/oracle/jre\n            cpes:\n              - cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n      - method: glob\n        criteria:\n          - '**/jdb'\n        packages:\n          - class: java-jdb-binary\n            name: \"\"\n            purl: pkg:/\n            cpes: []\n            type: BinaryPkg\n          - class: java-binary-graalvm\n            name: graalvm\n            purl: pkg:generic/oracle/graalvm\n            cpes:\n              - cpe:2.3:a:oracle:graalvm_for_jdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: jdb-binary-openjdk-zulu\n            name: zulu\n            purl: pkg:generic/azul/zulu\n            cpes:\n              - cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-jdb-binary-openjdk\n            name: openjdk\n            purl: pkg:generic/oracle/openjdk\n            cpes:\n              - cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-sdk-binary-ibm\n            name: java_sdk\n            purl: pkg:generic/ibm/java_sdk\n            cpes:\n              - cpe:2.3:a:ibm:java_sdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-openjdk-fallthrough\n            name: openjdk\n            purl: pkg:generic/oracle/openjdk\n            cpes:\n              - cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n          - class: java-binary-jdk\n            name: jdk\n            purl: pkg:generic/oracle/jdk\n            cpes:\n              - cpe:2.3:a:oracle:jdk:*:*:*:*:*:*:*:*\n            type: BinaryPkg\n    metadata_types: # AUTO-GENERATED\n      - pkg.BinarySignature\n    package_types: # AUTO-GENERATED\n      - binary\n    json_schema_types: # AUTO-GENERATED\n      - BinarySignature\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default: []\n      - name: dependency.edges\n        default: \"\"\n      - name: dependency.kinds\n        default: []\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: binary # MANUAL\n    name: elf-binary-package-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - binary\n      - declared\n      - directory\n      - elf\n      - elf-package\n      - image\n      - installed\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: mimetype\n        criteria:\n          - application/x-executable\n          - application/x-mach-binary\n          - application/x-elf\n          - application/x-sharedlib\n          - application/vnd.microsoft.portable-executable\n    metadata_types: # AUTO-GENERATED\n      - pkg.ELFBinaryPackageNoteJSONPayload\n    package_types: # AUTO-GENERATED\n      - apk\n      - binary\n      - rpm\n    json_schema_types: # AUTO-GENERATED\n      - ElfBinaryPackageNoteJsonPayload\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: true\n      - name: dependency.depth\n        default: []\n      - name: dependency.edges\n        default: \"\"\n      - name: dependency.kinds\n        default: []\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: binary # MANUAL\n    name: pe-binary-package-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/binary/pe_package_cataloger.go\n      function: NewPEPackageCataloger\n    selectors: # AUTO-GENERATED\n      - binary\n      - declared\n      - directory\n      - dll\n      - exe\n      - image\n      - installed\n      - package\n      - pe\n      - pe-package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePE\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.dll'\n            - '**/*.exe'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PEBinary\n        package_types: # AUTO-GENERATED\n          - binary\n        json_schema_types: # AUTO-GENERATED\n          - PeBinary\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/classifier_cataloger.go",
    "content": "/*\nPackage binary provides a concrete cataloger implementations for surfacing possible packages based on signatures found within binary files.\n*/\npackage binary\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n)\n\nconst catalogerName = \"binary-classifier-cataloger\"\n\ntype ClassifierCatalogerConfig struct {\n\tClassifiers []binutils.Classifier `yaml:\"classifiers\" json:\"classifiers\" mapstructure:\"classifiers\"`\n}\n\nfunc DefaultClassifierCatalogerConfig() ClassifierCatalogerConfig {\n\treturn ClassifierCatalogerConfig{\n\t\tClassifiers: DefaultClassifiers(),\n\t}\n}\n\nfunc NewClassifierCataloger(cfg ClassifierCatalogerConfig) pkg.Cataloger {\n\treturn &cataloger{\n\t\tclassifiers: cfg.Classifiers,\n\t}\n}\n\nfunc (cfg ClassifierCatalogerConfig) MarshalJSON() ([]byte, error) {\n\t// only keep the class names\n\tvar names []string\n\tfor _, cls := range cfg.Classifiers {\n\t\tnames = append(names, cls.Class)\n\t}\n\treturn json.Marshal(names)\n}\n\n// cataloger is the cataloger responsible for surfacing evidence of a very limited set of binary files,\n// which have been identified by the classifiers. The cataloger is _NOT_ a place to catalog any and every\n// binary, but rather the specific set that has been curated to be important, predominantly related to toolchain-\n// related runtimes like Python, Go, Java, or Node. Some exceptions can be made for widely-used binaries such\n// as busybox.\ntype cataloger struct {\n\tclassifiers []binutils.Classifier\n}\n\n// Name returns a string that uniquely describes the cataloger\nfunc (c cataloger) Name() string {\n\treturn catalogerName\n}\n\n// Catalog is given an object to resolve file references and content, this function returns any discovered Packages\n// after analyzing the catalog source.\nfunc (c cataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar packages []pkg.Package\n\tvar relationships []artifact.Relationship\n\tvar errs error\n\n\t// we do not run these classifiers in parallel currently because: when determining primary vs. supporting evidence,\n\t// we take preference to the classifier that was defined first, if we modify this to run in parallel,\n\t// we need to retain this behavior by giving precedence to the classifier defined first in the c.classifiers list;\n\t// if this is ever made parallel, we will need to account for this to have deterministic behavior\n\tfor _, cls := range c.classifiers {\n\t\tlog.WithFields(\"classifier\", cls.Class).Trace(\"cataloging binaries\")\n\t\tnewPkgs, err := catalog(resolver, cls)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"classifier\", cls.Class).Debugf(\"unable to catalog binary package: %v\", err)\n\t\t\terrs = unknown.Join(errs, fmt.Errorf(\"%s: %w\", cls.Class, err))\n\t\t\tcontinue\n\t\t}\n\tnewPackages:\n\t\tfor i := range newPkgs {\n\t\t\tnewPkg := &newPkgs[i]\n\t\t\tpurlType := pkg.TypeFromPURL(newPkg.PURL)\n\t\t\t// for certain results, such as hashicorp vault we are returning a golang PURL, so we can use Golang package type,\n\t\t\t// despite not having the known metadata, this should result in downstream grype matching to use the golang matcher\n\t\t\tif purlType != pkg.UnknownPkg {\n\t\t\t\tnewPkg.Type = purlType\n\t\t\t}\n\t\t\tfor j := range packages {\n\t\t\t\tp := &packages[j]\n\t\t\t\t// consolidate identical packages found in different locations or by different classifiers\n\t\t\t\tif packagesMatch(p, newPkg) {\n\t\t\t\t\tmergePackages(p, newPkg)\n\t\t\t\t\tcontinue newPackages\n\t\t\t\t}\n\t\t\t}\n\t\t\tpackages = append(packages, *newPkg)\n\t\t}\n\t}\n\n\treturn packages, relationships, errs\n}\n\n// mergePackages merges information from the extra package into the target package\nfunc mergePackages(target *pkg.Package, extra *pkg.Package) {\n\tif extra.Type != pkg.BinaryPkg && target.Type == pkg.BinaryPkg {\n\t\ttarget.Type = extra.Type\n\t}\n\taddedEvidence := false\n\t// when merging locations together, we need to maintain primary vs. supporting evidence -\n\t// if we are merging two packages together that have overlapping evidence, e.g. libpython\n\t// which are found by 2 different classifiers, we want to deduplicate evidence for the same\n\t// locations when merging so libpython is not considered primary evidence. This allows cases\n\t// where we find python binary with version info coming from libpython to deduplicate the libpython\n\t// entries, but also surface results for libpython separately as primary evidence when there is\n\t// no python binary referencing it\n\tfor _, location := range extra.Locations.ToSlice() {\n\t\t// if we already have the same location, don't include duplicates\n\t\tif target.Locations.Contains(location) {\n\t\t\tcontinue\n\t\t}\n\t\taddedEvidence = true\n\t\ttarget.Locations.Add(location)\n\t}\n\t// only include the additional metadata if we added evidence, as it was likely duplicated e.g. libpython\n\tif !addedEvidence {\n\t\treturn\n\t}\n\t// update the metadata to indicate which classifiers were used\n\tmeta, _ := target.Metadata.(pkg.BinarySignature)\n\tif m, ok := extra.Metadata.(pkg.BinarySignature); ok {\n\t\tmeta.Matches = append(meta.Matches, m.Matches...)\n\t}\n\ttarget.Metadata = meta\n}\n\nfunc catalog(resolver file.Resolver, cls binutils.Classifier) (packages []pkg.Package, err error) {\n\tvar errs error\n\tlocations, err := resolver.FilesByGlob(cls.FileGlob)\n\tif err != nil {\n\t\terr = unknown.ProcessPathErrors(err) // convert any file.Resolver path errors to unknowns with locations\n\t\treturn nil, err\n\t}\n\tfor _, location := range locations {\n\t\tpkgs, err := cls.EvidenceMatcher(cls, binutils.MatcherContext{Resolver: resolver, Location: location})\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\tcontinue\n\t\t}\n\t\tpackages = append(packages, pkgs...)\n\t}\n\treturn packages, errs\n}\n\n// packagesMatch returns true if the binary packages \"match\" based on basic criteria\nfunc packagesMatch(p1 *pkg.Package, p2 *pkg.Package) bool {\n\tif p1.Name != p2.Name ||\n\t\tp1.Version != p2.Version ||\n\t\tp1.Language != p2.Language ||\n\t\tp1.Type != p2.Type {\n\t\treturn false\n\t}\n\n\treturn true\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/classifier_cataloger_test.go",
    "content": "package binary\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"slices\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/testutil\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nvar mustUseOriginalBinaries = flag.Bool(\"must-use-original-binaries\", false, \"force the use of binaries for testing (instead of snippets)\")\n\nfunc Test_Cataloger_PositiveCases(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\t// logicalFixture is the logical path to the full binary or snippet. This is relative to the testdata/classifiers/snippets\n\t\t// or testdata/classifiers/bin directory . Snippets are searched for first, and if not found, then existing binaries are\n\t\t// used. If no binary or snippet is found the test will fail. If '-must-use-original-binaries' is used the only\n\t\t// full binaries are tested (no snippets), and if no binary is found the test will be skipped.\n\t\tlogicalFixture string\n\t\texpected       pkg.Package\n\t}{\n\t\t{\n\t\t\tlogicalFixture: \"arangodb/3.11.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"arangodb\",\n\t\t\t\tVersion:   \"3.11.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/arangodb@3.11.8\",\n\t\t\t\tLocations: locations(\"arangosh\"),\n\t\t\t\tMetadata:  metadata(\"arangodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"arangodb/3.12.0-2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"arangodb\",\n\t\t\t\tVersion:   \"3.12.0-2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/arangodb@3.12.0-2\",\n\t\t\t\tLocations: locations(\"arangosh\"),\n\t\t\t\tMetadata:  metadata(\"arangodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"postgres/15beta4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"postgresql\",\n\t\t\t\tVersion:   \"15beta4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/postgresql@15beta4\",\n\t\t\t\tLocations: locations(\"postgres\"),\n\t\t\t\tMetadata:  metadata(\"postgresql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"postgres/15.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"postgresql\",\n\t\t\t\tVersion:   \"15.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/postgresql@15.1\",\n\t\t\t\tLocations: locations(\"postgres\"),\n\t\t\t\tMetadata:  metadata(\"postgresql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"postgres/9.6.24/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"postgresql\",\n\t\t\t\tVersion:   \"9.6.24\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/postgresql@9.6.24\",\n\t\t\t\tLocations: locations(\"postgres\"),\n\t\t\t\tMetadata:  metadata(\"postgresql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"postgres/9.5alpha1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"postgresql\",\n\t\t\t\tVersion:   \"9.5alpha1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/postgresql@9.5alpha1\",\n\t\t\t\tLocations: locations(\"postgres\"),\n\t\t\t\tMetadata:  metadata(\"postgresql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mysql/8.0.34/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mysql\",\n\t\t\t\tVersion:   \"8.0.34\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mysql@8.0.34\",\n\t\t\t\tLocations: locations(\"mysql\"),\n\t\t\t\tMetadata:  metadata(\"mysql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mysql/8.0.37/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mysql\",\n\t\t\t\tVersion:   \"8.0.37\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mysql@8.0.37\",\n\t\t\t\tLocations: locations(\"mysql\"),\n\t\t\t\tMetadata:  metadata(\"mysql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"percona-server/8.0.35/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"percona-server\",\n\t\t\t\tVersion:   \"8.0.35\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/percona-server@8.0.35\",\n\t\t\t\tLocations: locations(\"mysql\"),\n\t\t\t\tMetadata:  metadata(\"mysql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"percona-xtradb-cluster/8.0.34/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"percona-xtradb-cluster\",\n\t\t\t\tVersion:   \"8.0.34\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/percona-xtradb-cluster@8.0.34\",\n\t\t\t\tLocations: locations(\"mysql\"),\n\t\t\t\tMetadata:  metadata(\"mysql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"percona-xtrabackup/8.0.35/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"percona-xtrabackup\",\n\t\t\t\tVersion:   \"8.0.35\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/percona-xtrabackup@8.0.35\",\n\t\t\t\tLocations: locations(\"xtrabackup\"),\n\t\t\t\tMetadata:  metadata(\"xtrabackup-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mysql/5.6.51/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mysql\",\n\t\t\t\tVersion:   \"5.6.51\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mysql@5.6.51\",\n\t\t\t\tLocations: locations(\"mysql\"),\n\t\t\t\tMetadata:  metadata(\"mysql-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mariadb/10.6.15/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mariadb\",\n\t\t\t\tVersion:   \"10.6.15\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mariadb@10.6.15\",\n\t\t\t\tLocations: locations(\"mariadb\"),\n\t\t\t\tMetadata:  metadata(\"mariadb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mongodb/8.0.17/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mongodb\",\n\t\t\t\tVersion:   \"8.0.17\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mongodb@8.0.17\",\n\t\t\t\tLocations: locations(\"mongod\"),\n\t\t\t\tMetadata:  metadata(\"mongodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mongodb/7.0.28/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mongodb\",\n\t\t\t\tVersion:   \"7.0.28\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mongodb@7.0.28\",\n\t\t\t\tLocations: locations(\"mongod\"),\n\t\t\t\tMetadata:  metadata(\"mongodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mongodb/6.0.27/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mongodb\",\n\t\t\t\tVersion:   \"6.0.27\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mongodb@6.0.27\",\n\t\t\t\tLocations: locations(\"mongod\"),\n\t\t\t\tMetadata:  metadata(\"mongodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mongodb/5.0.32/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mongodb\",\n\t\t\t\tVersion:   \"5.0.32\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mongodb@5.0.32\",\n\t\t\t\tLocations: locations(\"mongod\"),\n\t\t\t\tMetadata:  metadata(\"mongodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"mongodb/4.4.30/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"mongodb\",\n\t\t\t\tVersion:   \"4.4.30\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/mongodb@4.4.30\",\n\t\t\t\tLocations: locations(\"mongod\"),\n\t\t\t\tMetadata:  metadata(\"mongodb-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"traefik/1.7.34/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"traefik\",\n\t\t\t\tVersion:   \"1.7.34\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/traefik@1.7.34\",\n\t\t\t\tLocations: locations(\"traefik\"),\n\t\t\t\tMetadata:  metadata(\"traefik-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"traefik/2.9.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"traefik\",\n\t\t\t\tVersion:   \"2.9.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/traefik@2.9.6\",\n\t\t\t\tLocations: locations(\"traefik\"),\n\t\t\t\tMetadata:  metadata(\"traefik-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"traefik/2.10.7/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"traefik\",\n\t\t\t\tVersion:   \"2.10.7\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/traefik@2.10.7\",\n\t\t\t\tLocations: locations(\"traefik\"),\n\t\t\t\tMetadata:  metadata(\"traefik-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"traefik/3.0.4/linux-riscv64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"traefik\",\n\t\t\t\tVersion:   \"3.0.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/traefik@3.0.4\",\n\t\t\t\tLocations: locations(\"traefik\"),\n\t\t\t\tMetadata:  metadata(\"traefik-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"traefik/3.6.5/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"traefik\",\n\t\t\t\tVersion:   \"3.6.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/traefik@3.6.5\",\n\t\t\t\tLocations: locations(\"traefik\"),\n\t\t\t\tMetadata:  metadata(\"traefik-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"memcached/1.6.18/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"memcached\",\n\t\t\t\tVersion:   \"1.6.18\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/memcached@1.6.18\",\n\t\t\t\tLocations: locations(\"memcached\"),\n\t\t\t\tMetadata:  metadata(\"memcached-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"httpd/2.4.54/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"httpd\",\n\t\t\t\tVersion:   \"2.4.54\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/httpd@2.4.54\",\n\t\t\t\tLocations: locations(\"httpd\"),\n\t\t\t\tMetadata:  metadata(\"httpd-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: original binary is different than whats in config.yaml\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"perl/5.12.5/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"perl\",\n\t\t\t\tVersion:   \"5.12.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/perl@5.12.5\",\n\t\t\t\tLocations: locations(\"perl\"),\n\t\t\t\tMetadata:  metadata(\"perl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: original binary is different than whats in config.yaml\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"perl/5.20.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"perl\",\n\t\t\t\tVersion:   \"5.20.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/perl@5.20.0\",\n\t\t\t\tLocations: locations(\"perl\"),\n\t\t\t\tMetadata:  metadata(\"perl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: original binary is different than whats in config.yaml\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"perl/5.37.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"perl\",\n\t\t\t\tVersion:   \"5.37.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/perl@5.37.8\",\n\t\t\t\tLocations: locations(\"perl\"),\n\t\t\t\tMetadata:  metadata(\"perl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haproxy/1.5.14/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haproxy\",\n\t\t\t\tVersion:   \"1.5.14\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haproxy@1.5.14\",\n\t\t\t\tLocations: locations(\"haproxy\"),\n\t\t\t\tMetadata:  metadata(\"haproxy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haproxy/1.8.22/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haproxy\",\n\t\t\t\tVersion:   \"1.8.22\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haproxy@1.8.22\",\n\t\t\t\tLocations: locations(\"haproxy\"),\n\t\t\t\tMetadata:  metadata(\"haproxy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haproxy/2.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haproxy\",\n\t\t\t\tVersion:   \"2.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haproxy@2.0.0\",\n\t\t\t\tLocations: locations(\"haproxy\"),\n\t\t\t\tMetadata:  metadata(\"haproxy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haproxy/2.7.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haproxy\",\n\t\t\t\tVersion:   \"2.7.3\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haproxy@2.7.3\",\n\t\t\t\tLocations: locations(\"haproxy\"),\n\t\t\t\tMetadata:  metadata(\"haproxy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haproxy/3.1-dev0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haproxy\",\n\t\t\t\tVersion:   \"3.1-dev0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haproxy@3.1-dev0\",\n\t\t\t\tLocations: locations(\"haproxy\"),\n\t\t\t\tMetadata:  metadata(\"haproxy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"helm/3.11.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"helm\",\n\t\t\t\tVersion:   \"3.11.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:golang/helm.sh/helm@3.11.1\",\n\t\t\t\tLocations: locations(\"helm\"),\n\t\t\t\tMetadata:  metadata(\"helm\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"helm/3.10.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"helm\",\n\t\t\t\tVersion:   \"3.10.3\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:golang/helm.sh/helm@3.10.3\",\n\t\t\t\tLocations: locations(\"helm\"),\n\t\t\t\tMetadata:  metadata(\"helm\"),\n\t\t\t},\n\t\t},\n\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"redis-server/2.8.23/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"2.8.23\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@2.8.23\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"redis-server/4.0.11/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"4.0.11\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@4.0.11\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"redis-server/5.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"5.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@5.0.0\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"redis-server/6.0.16/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"6.0.16\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@6.0.16\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"redis-server/7.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"7.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@7.0.0\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"redis-server/7.0.14/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"7.0.14\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@7.0.14\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"redis-server/7.2.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"7.2.3\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@7.2.3\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"redis-server/7.2.3/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"7.2.3\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@7.2.3\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"redis-server/7.2.5/linux-386\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"redis\",\n\t\t\t\tVersion:   \"7.2.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/redis@7.2.5\",\n\t\t\t\tLocations: locations(\"redis-server\"),\n\t\t\t\tMetadata:  metadata(\"redis-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"valkey-server/9.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"valkey\",\n\t\t\t\tVersion:   \"9.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/valkey@9.0.0\",\n\t\t\t\tLocations: locations(\"valkey-server\"),\n\t\t\t\tMetadata:  metadata(\"valkey-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// no python binary, but we find libpython, which is surfaced as primary evidence\n\t\t\tlogicalFixture: \"python-shared-lib/3.7.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.7.4\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.7.4\",\n\t\t\t\tLocations: locations(\"libpython3.7m.so.1.0\"),\n\t\t\t\tMetadata:  metadata(\"python-binary-lib\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"python-slim-shared-libs/3.11/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.11.2\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.11.2\",\n\t\t\t\tLocations: locations(\"python3.11\", \"libpython3.11.so.1.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"python-binary\", \"python3.11\"),\n\t\t\t\t\t\tmatch(\"python-binary\", \"libpython3.11.so.1.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"python-rhel-shared-libs/3.9/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.9.13\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.9.13\",\n\t\t\t\tLocations: locations(\"python3.9\", \"libpython3.9.so.1.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"python-binary\", \"python3.9\"),\n\t\t\t\t\t\tmatch(\"python-binary\", \"libpython3.9.so.1.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"python3.9/3.9.16/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.9.2\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.9.2\",\n\t\t\t\tLocations: locations(\"python3.9\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"python-binary\", \"python3.9\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"python-alpine-shared-libs/3.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.4.10\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.4.10\",\n\t\t\t\tLocations: locations(\"python3.4\", \"libpython3.4m.so.1.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"python-binary\", \"python3.4\"),\n\t\t\t\t\t\tmatch(\"python-binary\", \"libpython3.4m.so.1.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"python-with-incorrect-match/3.5.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.5.3\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.5.3\",\n\t\t\t\tLocations: locations(\"python3.5\"),\n\t\t\t\tMetadata:  metadata(\"python-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"python/3.6.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.6.3\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.6.3\",\n\t\t\t\tLocations: locations(\"python3.6\"),\n\t\t\t\tMetadata:  metadata(\"python-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"python-duplicates/3.8.16/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"python\",\n\t\t\t\tVersion:   \"3.8.16\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/python@3.8.16\",\n\t\t\t\tLocations: locations(\"dir/python3.8\", \"python3.8\", \"libpython3.8.so\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"python-binary\", \"dir/python3.8\"),\n\t\t\t\t\t\tmatch(\"python-binary\", \"python3.8\"),\n\t\t\t\t\t\tmatch(\"python-binary-lib\", \"libpython3.8.so\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"pypy-shared-lib/7.3.14/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pypy\",\n\t\t\t\tVersion:   \"7.3.14\",\n\t\t\t\tPURL:      \"pkg:generic/pypy@7.3.14\",\n\t\t\t\tLocations: locations(\"libpypy3.9-c.so\"),\n\t\t\t\tMetadata:  metadata(\"pypy-binary-lib\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"go/1.21.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.21.3\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.21.3\",\n\t\t\t\tLocations: locations(\"go\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"node/0.10.48/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"node\",\n\t\t\t\tVersion:   \"0.10.48\",\n\t\t\t\tPURL:      \"pkg:generic/node@0.10.48\",\n\t\t\t\tLocations: locations(\"node\"),\n\t\t\t\tMetadata:  metadata(\"nodejs-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"node/0.12.18/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"node\",\n\t\t\t\tVersion:   \"0.12.18\",\n\t\t\t\tPURL:      \"pkg:generic/node@0.12.18\",\n\t\t\t\tLocations: locations(\"node\"),\n\t\t\t\tMetadata:  metadata(\"nodejs-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"node/4.9.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"node\",\n\t\t\t\tVersion:   \"4.9.1\",\n\t\t\t\tPURL:      \"pkg:generic/node@4.9.1\",\n\t\t\t\tLocations: locations(\"node\"),\n\t\t\t\tMetadata:  metadata(\"nodejs-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"node/19.2.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"node\",\n\t\t\t\tVersion:   \"19.2.0\",\n\t\t\t\tPURL:      \"pkg:generic/node@19.2.0\",\n\t\t\t\tLocations: locations(\"node\"),\n\t\t\t\tMetadata:  metadata(\"nodejs-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"go-version-hint/1.15/any\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.15\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.15\",\n\t\t\t\tLocations: locations(\"bin/go\", \"VERSION\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"go-version-hint/1.15w/any\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.15\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.15\",\n\t\t\t\tLocations: locations(\"bin/go.exe\", \"VERSION\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"go-version-hint/1.21/any\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.21\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.21\",\n\t\t\t\tLocations: locations(\"go\", \"VERSION\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: this is for compatability with dev version of golang tip image, which resolves the issue #3681\n\t\t\tlogicalFixture: \"go-version-hint/1.25/any\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.25-d524e1e\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.25-d524e1e\",\n\t\t\t\tLocations: locations(\"bin/go\", \"VERSION.cache\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"go-version-hint/1.25w/any\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"go\",\n\t\t\t\tVersion:   \"1.25-d524e1e\",\n\t\t\t\tPURL:      \"pkg:generic/go@1.25-d524e1e\",\n\t\t\t\tLocations: locations(\"go.exe\", \"VERSION\"),\n\t\t\t\tMetadata:  metadata(\"go-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: this is testing BUSYBOX which is typically through a link to \"[\" (in this case a symlink but in\n\t\t\t// practice this is often a hard link).\n\t\t\tlogicalFixture: `busybox/1.36.1/linux-amd64`,\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"busybox\",\n\t\t\t\tVersion:   \"1.36.1\",\n\t\t\t\tPURL:      \"pkg:generic/busybox@1.36.1\",\n\t\t\t\tLocations: locations(\"[\"), // note: busybox is a link to [\n\t\t\t\tMetadata:  metadata(\"busybox-binary\", \"[\", \"busybox\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: `util-linux/2.37.4/linux-amd64`,\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"util-linux\",\n\t\t\t\tVersion:   \"2.37.4\",\n\t\t\t\tPURL:      \"pkg:generic/util-linux@2.37.4\",\n\t\t\t\tLocations: locations(\"getopt\"),\n\t\t\t\tMetadata:  metadata(\"util-linux-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-jre-openjdk/1.8.0_352-b08/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"1.8.0_352-b08\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@1.8.0_352-b08\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-openjdk-with-update\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-jre-openjdk/11.0.17/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"11.0.17+8-LTS\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@11.0.17%2B8-LTS\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-openjdk\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-jre-openjdk-eclipse/11.0.22/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"11.0.22+7\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@11.0.22%2B7\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-openjdk\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-jre-openjdk-arm64-eclipse/11.0.22/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"11.0.22+7\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@11.0.22%2B7\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-openjdk\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-graal-openjdk/17.0.3+7-jvmci-22.1-b06/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"graalvm\",\n\t\t\t\tVersion:   \"17.0.3+7-jvmci-22.1-b06\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/graalvm@17.0.3%2B7-jvmci-22.1-b06\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-graalvm\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"java-jre-oracle/19.0.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"jre\",\n\t\t\t\tVersion:   \"19.0.1+10-21\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/jre@19.0.1%2B10-21\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-oracle\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"java-jre-oracle/19.0.1/darwin\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"jre\",\n\t\t\t\tVersion:   \"19.0.1+10-21\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/jre@19.0.1%2B10-21\",\n\t\t\t\tLocations: locations(\"java\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-oracle\", \"java\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"java-jdk-openjdk/21.0.2+13-LTS/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"21.0.2+13-LTS\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@21.0.2%2B13-LTS\",\n\t\t\t\tLocations: locations(\"jdb\"),\n\t\t\t\tMetadata:  metadata(\"java-binary-openjdk-fallthrough\", \"jdb\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"rust-libstd/1.50.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"rust\",\n\t\t\t\tVersion:   \"1.50.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/rust@1.50.0\",\n\t\t\t\tLocations: locations(\"libstd-6f77337c1826707d.so\"),\n\t\t\t\tMetadata:  metadata(\"rust-standard-library-linux\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"rust-libstd/1.50.0/darwin\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"rust\",\n\t\t\t\tVersion:   \"1.50.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/rust@1.50.0\",\n\t\t\t\tLocations: locations(\"libstd-f6f9eec1635e636a.dylib\"),\n\t\t\t\tMetadata:  metadata(\"rust-standard-library-macos\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: find original binary...\n\t\t\t// note: cannot find the original binary, using a custom snippet based on the original snippet in the repo\n\t\t\tlogicalFixture: \"rust-libstd/1.67.1/darwin\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"rust\",\n\t\t\t\tVersion:   \"1.67.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/rust@1.67.1\",\n\t\t\t\tLocations: locations(\"libstd-16f2b65e77054c42.dylib\"),\n\t\t\t\tMetadata:  metadata(\"rust-standard-library-macos\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"rust-libstd-musl/1.67.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"rust\",\n\t\t\t\tVersion:   \"1.67.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/rust@1.67.1\",\n\t\t\t\tLocations: locations(\"libstd-86aefecbddda356d.so\"),\n\t\t\t\tMetadata:  metadata(\"rust-standard-library-linux\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"rust-libstd/1.67.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"rust\",\n\t\t\t\tVersion:   \"1.67.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/rust@1.67.1\",\n\t\t\t\tLocations: locations(\"libstd-c6192dd4c4d410ac.so\"),\n\t\t\t\tMetadata:  metadata(\"rust-standard-library-linux\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\n\t\t\tname:           \"positive-ruby-3.2.1\",\n\t\t\tlogicalFixture: \"ruby-bullseye-shared-libs/3.2.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"3.2.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@3.2.1\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.3.2.1\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.3.2.1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tname:           \"positive-ruby-3.4.0-dev\",\n\t\t\tlogicalFixture: \"ruby-shared-libs/3.4.0-dev/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"3.4.0dev\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@3.4.0dev\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.3.4.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.3.4.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tname:           \"positive-ruby-3.4.0-preview1\",\n\t\t\tlogicalFixture: \"ruby-shared-libs/3.4.0-preview1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"3.4.0preview1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@3.4.0preview1\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.3.4.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.3.4.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tname:           \"positive-ruby-3.3.0-rc1\",\n\t\t\tlogicalFixture: \"ruby-shared-libs/3.3.0-rc1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"3.3.0rc1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@3.3.0rc1\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.3.3.0\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.3.3.0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"ruby-bullseye-shared-libs/2.7.7/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"2.7.7p221\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@2.7.7p221\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.2.7.7\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.2.7.7\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// note: dynamic (non-snippet) test case\n\t\t\tlogicalFixture: \"ruby-shared-libs/2.6.10/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"2.6.10p210\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@2.6.10p210\",\n\t\t\t\tLocations: locations(\"ruby\", \"libruby.so.2.6.10\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"ruby\"),\n\t\t\t\t\t\tmatch(\"ruby-binary\", \"libruby.so.2.6.10\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"ruby/1.9.3p551/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ruby\",\n\t\t\t\tVersion:   \"1.9.3p551\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ruby@1.9.3p551\",\n\t\t\t\tLocations: locations(\"ruby\"),\n\t\t\t\tMetadata:  metadata(\"ruby-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"consul/1.15.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"consul\",\n\t\t\t\tVersion:   \"1.15.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:golang/github.com/hashicorp/consul@1.15.2\",\n\t\t\t\tLocations: locations(\"consul\"),\n\t\t\t\tMetadata:  metadata(\"consul-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"vault/1.20.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"github.com/hashicorp/vault\",\n\t\t\t\tVersion:   \"1.20.2\",\n\t\t\t\tType:      \"golang\",\n\t\t\t\tPURL:      \"pkg:golang/github.com/hashicorp/vault@1.20.2\",\n\t\t\t\tLocations: locations(\"vault\"),\n\t\t\t\tMetadata:  metadata(\"hashicorp-vault-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"vault/1.19.4/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"github.com/hashicorp/vault\",\n\t\t\t\tVersion:   \"1.19.4\",\n\t\t\t\tType:      \"golang\",\n\t\t\t\tPURL:      \"pkg:golang/github.com/hashicorp/vault@1.19.4\",\n\t\t\t\tLocations: locations(\"vault\"),\n\t\t\t\tMetadata:  metadata(\"hashicorp-vault-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"erlang/25.3.2.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"erlang\",\n\t\t\t\tVersion:   \"25.3.2.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/erlang@25.3.2.6\",\n\t\t\t\tLocations: locations(\"erlexec\"),\n\t\t\t\tMetadata:  metadata(\"erlang-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"erlang/26.2.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"erlang\",\n\t\t\t\tVersion:   \"26.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/erlang@26.2\",\n\t\t\t\tLocations: locations(\"erlexec\"),\n\t\t\t\tMetadata:  metadata(\"erlang-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"erlang/26.2.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"erlang\",\n\t\t\t\tVersion:   \"26.2.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/erlang@26.2.4\",\n\t\t\t\tLocations: locations(\"liberts_internal.a\"),\n\t\t\t\tMetadata:  metadata(\"erlang-library\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"erlang/27.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"erlang\",\n\t\t\t\tVersion:   \"27.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/erlang@27.0\",\n\t\t\t\tLocations: locations(\"beam.smp\"),\n\t\t\t\tMetadata:  metadata(\"erlang-alpine-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"erlang/26.1.2/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"erlang\",\n\t\t\t\tVersion:   \"26.1.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/erlang@26.1.2\",\n\t\t\t\tLocations: locations(\"beam.smp\"),\n\t\t\t\tMetadata:  metadata(\"erlang-alpine-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"swipl/9.3.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"swipl\",\n\t\t\t\tVersion:   \"9.3.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/swipl@9.3.8\",\n\t\t\t\tLocations: locations(\"swipl\"),\n\t\t\t\tMetadata:  metadata(\"swipl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"dart/2.12.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"dart\",\n\t\t\t\tVersion:   \"2.12.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/dart@2.12.4\",\n\t\t\t\tLocations: locations(\"dart\"),\n\t\t\t\tMetadata:  metadata(\"dart-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"dart/3.0.0/linux-arm\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"dart\",\n\t\t\t\tVersion:   \"3.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/dart@3.0.0\",\n\t\t\t\tLocations: locations(\"dart\"),\n\t\t\t\tMetadata:  metadata(\"dart-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"dart/3.5.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"dart\",\n\t\t\t\tVersion:   \"3.5.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/dart@3.5.2\",\n\t\t\t\tLocations: locations(\"dart\"),\n\t\t\t\tMetadata:  metadata(\"dart-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"dart/3.6.0-216.1.beta/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"dart\",\n\t\t\t\tVersion:   \"3.6.0-216.1.beta\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/dart@3.6.0-216.1.beta\",\n\t\t\t\tLocations: locations(\"dart\"),\n\t\t\t\tMetadata:  metadata(\"dart-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haskell-ghc/9.6.5/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haskell/ghc\",\n\t\t\t\tVersion:   \"9.6.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haskell/ghc@9.6.5\",\n\t\t\t\tLocations: locations(\"ghc-9.6.5\"),\n\t\t\t\tMetadata:  metadata(\"haskell-ghc-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"haskell-cabal/3.10.3.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"haskell/cabal\",\n\t\t\t\tVersion:   \"3.10.3.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/haskell/cabal@3.10.3.0\",\n\t\t\t\tLocations: locations(\"cabal\"),\n\t\t\t\tMetadata:  metadata(\"haskell-cabal-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"nginx/1.25.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"nginx\",\n\t\t\t\tVersion:   \"1.25.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/nginx@1.25.1\",\n\t\t\t\tLocations: locations(\"nginx\"),\n\t\t\t\tMetadata:  metadata(\"nginx-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"nginx-openresty/1.21.4.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"nginx\",\n\t\t\t\tVersion:   \"1.21.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/nginx@1.21.4\",\n\t\t\t\tLocations: locations(\"nginx\"),\n\t\t\t\tMetadata:  metadata(\"nginx-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"bash/5.1.16/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"bash\",\n\t\t\t\tVersion:   \"5.1.16\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/bash@5.1.16\",\n\t\t\t\tLocations: locations(\"bash\"),\n\t\t\t\tMetadata:  metadata(\"bash-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"openssl/3.1.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openssl\",\n\t\t\t\tVersion:   \"3.1.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/openssl@3.1.4\",\n\t\t\t\tLocations: locations(\"openssl\"),\n\t\t\t\tMetadata:  metadata(\"openssl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"openssl/1.1.1w/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openssl\",\n\t\t\t\tVersion:   \"1.1.1w\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/openssl@1.1.1w\",\n\t\t\t\tLocations: locations(\"openssl\"),\n\t\t\t\tMetadata:  metadata(\"openssl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"openssl/1.1.1zb/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openssl\",\n\t\t\t\tVersion:   \"1.1.1zb\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/openssl@1.1.1zb\",\n\t\t\t\tLocations: locations(\"openssl\"),\n\t\t\t\tMetadata:  metadata(\"openssl-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"qt/4.8.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"qtbase\",\n\t\t\t\tVersion:   \"4.8.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/qtbase@4.8.6\",\n\t\t\t\tLocations: locations(\"libQtCore.so.4.8.6\"),\n\t\t\t\tMetadata:  metadata(\"qt-qtbase-lib\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"qt/5.15.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"qtbase\",\n\t\t\t\tVersion:   \"5.15.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/qtbase@5.15.2\",\n\t\t\t\tLocations: locations(\"libQt5Core.so.5.15.2\"),\n\t\t\t\tMetadata:  metadata(\"qt-qtbase-lib\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"qt/6.5.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"qtbase\",\n\t\t\t\tVersion:   \"6.5.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/qtbase@6.5.0\",\n\t\t\t\tLocations: locations(\"libQt6Core.so.6.5.0\"),\n\t\t\t\tMetadata:  metadata(\"qt-qtbase-lib\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"gcc/12.3.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"gcc\",\n\t\t\t\tVersion:   \"12.3.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/gcc@12.3.0\",\n\t\t\t\tLocations: locations(\"gcc\"),\n\t\t\t\tMetadata:  metadata(\"gcc-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"fluent-bit/3.0.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"fluent-bit\",\n\t\t\t\tVersion:   \"3.0.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:github/fluent/fluent-bit@3.0.2\",\n\t\t\t\tLocations: locations(\"fluent-bit\"),\n\t\t\t\tMetadata:  metadata(\"fluent-bit-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"fluent-bit/2.2.1/linux-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"fluent-bit\",\n\t\t\t\tVersion:   \"2.2.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:github/fluent/fluent-bit@2.2.1\",\n\t\t\t\tLocations: locations(\"fluent-bit\"),\n\t\t\t\tMetadata:  metadata(\"fluent-bit-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"fluent-bit/1.7.0-dev-3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"fluent-bit\",\n\t\t\t\tVersion:   \"1.7.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:github/fluent/fluent-bit@1.7.0\",\n\t\t\t\tLocations: locations(\"fluent-bit\"),\n\t\t\t\tMetadata:  metadata(\"fluent-bit-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"fluent-bit/1.3.10/linux-arm\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"fluent-bit\",\n\t\t\t\tVersion:   \"1.3.10\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:github/fluent/fluent-bit@1.3.10\",\n\t\t\t\tLocations: locations(\"fluent-bit\"),\n\t\t\t\tMetadata:  metadata(\"fluent-bit-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"wp/2.9.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"wp-cli\",\n\t\t\t\tVersion:   \"2.9.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/wp-cli@2.9.0\",\n\t\t\t\tLocations: locations(\"wp\"),\n\t\t\t\tMetadata:  metadata(\"wordpress-cli-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"lighttpd/1.4.76/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"lighttpd\",\n\t\t\t\tVersion:   \"1.4.76\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/lighttpd@1.4.76\",\n\t\t\t\tLocations: locations(\"lighttpd\"),\n\t\t\t\tMetadata:  metadata(\"lighttpd-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"proftpd/1.3.8b/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"proftpd\",\n\t\t\t\tVersion:   \"1.3.8b\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/proftpd@1.3.8b\",\n\t\t\t\tLocations: locations(\"proftpd\"),\n\t\t\t\tMetadata:  metadata(\"proftpd-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"zstd/1.5.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"zstd\",\n\t\t\t\tVersion:   \"1.5.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/zstd@1.5.6\",\n\t\t\t\tLocations: locations(\"zstd\"),\n\t\t\t\tMetadata:  metadata(\"zstd-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"zstd/1.5.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"zstd\",\n\t\t\t\tVersion:   \"1.5.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/zstd@1.5.6\",\n\t\t\t\tLocations: locations(\"zstd\"),\n\t\t\t\tMetadata:  metadata(\"zstd-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"xz/5.6.2/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"xz\",\n\t\t\t\tVersion:   \"5.6.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/xz@5.6.2\",\n\t\t\t\tLocations: locations(\"xz\"),\n\t\t\t\tMetadata:  metadata(\"xz-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"gzip/1.12/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"gzip\",\n\t\t\t\tVersion:   \"1.12\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/gzip@1.12\",\n\t\t\t\tLocations: locations(\"gzip\"),\n\t\t\t\tMetadata:  metadata(\"gzip-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"sqlcipher/4.5.5/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"sqlcipher\",\n\t\t\t\tVersion:   \"4.5.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/sqlcipher@4.5.5\",\n\t\t\t\tLocations: locations(\"sqlcipher\"),\n\t\t\t\tMetadata:  metadata(\"sqlcipher-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"jq/1.7.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"jq\",\n\t\t\t\tVersion:   \"1.7.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/jq@1.7.1\",\n\t\t\t\tLocations: locations(\"jq\"),\n\t\t\t\tMetadata:  metadata(\"jq-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"chrome/126.0.6478.182/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"chrome\",\n\t\t\t\tVersion:   \"126.0.6478.182\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/chrome@126.0.6478.182\",\n\t\t\t\tLocations: locations(\"chrome\"),\n\t\t\t\tMetadata:  metadata(\"chrome-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"chrome/127.0.6533.119/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"chrome\",\n\t\t\t\tVersion:   \"127.0.6533.119\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/chrome@127.0.6533.119\",\n\t\t\t\tLocations: locations(\"chrome\"),\n\t\t\t\tMetadata:  metadata(\"chrome-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"ffmpeg/7.1.1/darwin-arm64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ffmpeg\",\n\t\t\t\tVersion:   \"7.1.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ffmpeg@7.1.1\",\n\t\t\t\tLocations: locations(\"ffmpeg\"),\n\t\t\t\tMetadata:  metadata(\"ffmpeg-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"ffmpeg/6.1.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ffmpeg\",\n\t\t\t\tVersion:   \"6.1.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ffmpeg@6.1.1\",\n\t\t\t\tLocations: locations(\"ffmpeg\"),\n\t\t\t\tMetadata:  metadata(\"ffmpeg-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"ffmpeg-shared-libs/5.1.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"ffmpeg\",\n\t\t\t\tVersion:   \"5.1.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/ffmpeg@5.1.4\",\n\t\t\t\tLocations: locations(\"libavcodec-9aae324f.so.59.37.100\"),\n\t\t\t\tMetadata:  metadata(\"ffmpeg-library\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"elixir/1.19.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"elixir\",\n\t\t\t\tVersion:   \"1.19.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/elixir@1.19.1\",\n\t\t\t\tLocations: locations(\"elixir\", \"lib/elixir/ebin/elixir.app\"),\n\t\t\t\tMetadata: pkg.BinarySignature{\n\t\t\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t\t\tmatch(\"elixir-binary\", \"elixir\"),\n\t\t\t\t\t\tmatch(\"elixir-library\", \"lib/elixir/ebin/elixir.app\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-discovery/1.26.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-discovery\",\n\t\t\t\tVersion:   \"1.26.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.26.8\",\n\t\t\t\tLocations: locations(\"pilot-discovery\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-discovery/1.8.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-discovery\",\n\t\t\t\tVersion:   \"1.8.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.8.0\",\n\t\t\t\tLocations: locations(\"pilot-discovery\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-discovery/1.3.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-discovery\",\n\t\t\t\tVersion:   \"1.3.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.3.8\",\n\t\t\t\tLocations: locations(\"pilot-discovery\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-discovery/1.1.17/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-discovery\",\n\t\t\t\tVersion:   \"1.1.17\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.1.17\",\n\t\t\t\tLocations: locations(\"pilot-discovery\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-agent/1.26.8/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-agent\",\n\t\t\t\tVersion:   \"1.26.8\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.26.8\",\n\t\t\t\tLocations: locations(\"pilot-agent\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-agent/1.8.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-agent\",\n\t\t\t\tVersion:   \"1.8.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.8.0\",\n\t\t\t\tLocations: locations(\"pilot-agent\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"istio_pilot-agent/1.1.17/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"pilot-agent\",\n\t\t\t\tVersion:   \"1.1.17\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/istio@1.1.17\",\n\t\t\t\tLocations: locations(\"pilot-agent\"),\n\t\t\t\tMetadata:  metadata(\"istio-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/12.4.0-22081664032/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"12.4.0-22081664032\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@12.4.0-22081664032\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/12.3.2-security-01/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"12.3.2\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@12.3.2\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/12.3.1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"12.3.1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@12.3.1\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/12.2.0-258092/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"12.2.0-258092\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@12.2.0-258092\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/12.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"12.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@12.0.0\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/11.0.0-preview/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"11.0.0-preview\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@11.0.0-preview\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/11.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"11.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@11.0.0\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/10.4.19/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"10.4.19\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@10.4.19\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/10.3.12/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"10.3.12\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@10.3.12\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.5.21/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.5.21\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.5.21\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.4.0-beta1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.4.0-beta1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.4.0-beta1\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.3.0-beta1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.3.0-beta1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.3.0-beta1\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.2.20/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.2.20\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.2.20\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.2.13/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.2.13\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.2.13\",\n\t\t\t\tLocations: locations(\"grafana\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/9.0.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"9.0.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@9.0.0\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/7.5.17/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"7.5.17\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@7.5.17\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/6.7.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"6.7.6\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@6.7.6\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/6.7.0-test/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"6.7.0-test\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@6.7.0-test\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"grafana/6.0.0-beta1/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"grafana\",\n\t\t\t\tVersion:   \"6.0.0-beta1\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/grafana@6.0.0-beta1\",\n\t\t\t\tLocations: locations(\"grafana-server\"),\n\t\t\t\tMetadata:  metadata(\"grafana-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.36.4/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.36.4\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.36.4\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.34.5/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.34.5\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.34.5\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.28.7/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.28.7\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.28.7\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.22.11/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.22.11\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.22.11\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.20.7/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.20.7\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.20.7\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.18.6/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.18.6-dev\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.18.6-dev\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.14.3/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.14.3\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.14.3\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.11.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.11.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.11.0\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlogicalFixture: \"envoy/1.6.0/linux-amd64\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"envoy\",\n\t\t\t\tVersion:   \"1.6.0\",\n\t\t\t\tType:      \"binary\",\n\t\t\t\tPURL:      \"pkg:generic/envoy@1.6.0\",\n\t\t\t\tLocations: locations(\"envoy\"),\n\t\t\t\tMetadata:  metadata(\"envoy-binary\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.logicalFixture, func(t *testing.T) {\n\t\t\tc := NewClassifierCataloger(DefaultClassifierCatalogerConfig())\n\n\t\t\t// logicalFixture is the logical path to the full binary or snippet. This is relative to the testdata/classifiers/snippets\n\t\t\t// or testdata/classifiers/bin directory . Snippets are searched for first, and if not found, then existing binaries are\n\t\t\t// used. If no binary or snippet is found the test will fail. If '-must-use-original-binaries' is used the only\n\t\t\t// full binaries are tested (no snippets), and if no binary is found the test will be skipped.\n\t\t\tpath := testutil.SnippetOrBinary(t, test.logicalFixture, *mustUseOriginalBinaries)\n\n\t\t\tsrc, err := directorysource.NewFromPath(path)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tpackages, _, err := c.Catalog(context.Background(), resolver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Len(t, packages, 1, \"mismatched package count\")\n\n\t\t\tassertPackagesAreEqual(t, test.expected, packages[0])\n\t\t})\n\t}\n}\n\nfunc Test_Cataloger_DefaultClassifiers_PositiveCases_Image(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tfixtureImage string\n\t\texpected     pkg.Package\n\t}{\n\t\t{\n\t\t\tname:         \"busybox-regression\",\n\t\t\tfixtureImage: \"image-busybox\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"busybox\",\n\t\t\t\tVersion:   \"1.35.0\",\n\t\t\t\tPURL:      \"pkg:generic/busybox@1.35.0\",\n\t\t\t\tLocations: locations(\"/bin/[\"),\n\t\t\t\tMetadata:  metadata(\"busybox-binary\", \"/bin/[\", \"/bin/busybox\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewClassifierCataloger(DefaultClassifierCatalogerConfig())\n\n\t\t\timg := imagetest.GetFixtureImage(t, \"docker-archive\", test.fixtureImage)\n\t\t\tsrc := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\t\t\tReference: test.fixtureImage,\n\t\t\t})\n\n\t\t\tresolver, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tpackages, _, err := c.Catalog(context.Background(), resolver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfor _, p := range packages {\n\t\t\t\tassertPackagesAreEqual(t, test.expected, p)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestClassifierCataloger_DefaultClassifiers_NegativeCases(t *testing.T) {\n\tc := NewClassifierCataloger(DefaultClassifierCatalogerConfig())\n\n\tsrc, err := directorysource.NewFromPath(\"testdata/classifiers/negative\")\n\tassert.NoError(t, err)\n\n\tresolver, err := src.FileResolver(source.SquashedScope)\n\tassert.NoError(t, err)\n\n\tactualResults, _, err := c.Catalog(context.Background(), resolver)\n\tassert.NoError(t, err)\n\tassert.Equal(t, 0, len(actualResults))\n}\n\nfunc Test_Cataloger_CustomClassifiers(t *testing.T) {\n\tdefaultClassifers := DefaultClassifiers()\n\n\tgolangExpected := pkg.Package{\n\t\tName:      \"go\",\n\t\tVersion:   \"1.14\",\n\t\tPURL:      \"pkg:generic/go@1.14\",\n\t\tLocations: locations(\"go\"),\n\t\tMetadata:  metadata(\"go-binary\"),\n\t}\n\tcustomExpected := pkg.Package{\n\t\tName:      \"foo\",\n\t\tVersion:   \"1.2.3\",\n\t\tPURL:      \"pkg:generic/foo@1.2.3\",\n\t\tLocations: locations(\"foo\"),\n\t\tMetadata:  metadata(\"foo-binary\"),\n\t}\n\tfooClassifier := binutils.Classifier{\n\t\tClass:    \"foo-binary\",\n\t\tFileGlob: \"**/foo\",\n\t\tEvidenceMatcher: binutils.FileContentsVersionMatcher(\n\t\t\tcatalogerName,\n\t\t\t`(?m)foobar\\s(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`,\n\t\t),\n\t\tPackage: \"foo\",\n\t\tPURL:    mustPURL(\"pkg:generic/foo@version\"),\n\t\tCPEs:    singleCPE(\"cpe:2.3:a:foo:foo:*:*:*:*:*:*:*:*\"),\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tconfig     ClassifierCatalogerConfig\n\t\tfixtureDir string\n\t\texpected   *pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"empty-negative\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: []binutils.Classifier{},\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/go-1.14\",\n\t\t\texpected:   nil,\n\t\t},\n\t\t{\n\t\t\tname: \"default-positive\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: defaultClassifers,\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/go-1.14\",\n\t\t\texpected:   &golangExpected,\n\t\t},\n\t\t{\n\t\t\tname: \"nodefault-negative\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: []binutils.Classifier{fooClassifier},\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/go-1.14\",\n\t\t\texpected:   nil,\n\t\t},\n\t\t{\n\t\t\tname: \"default-extended-positive\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: append(\n\t\t\t\t\tappend([]binutils.Classifier{}, defaultClassifers...),\n\t\t\t\t\tfooClassifier,\n\t\t\t\t),\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/go-1.14\",\n\t\t\texpected:   &golangExpected,\n\t\t},\n\t\t{\n\t\t\tname: \"default-custom-negative\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\n\t\t\t\tClassifiers: append(\n\t\t\t\t\tappend([]binutils.Classifier{}, defaultClassifers...),\n\t\t\t\t\tbinutils.Classifier{\n\t\t\t\t\t\tClass:           \"foo-binary\",\n\t\t\t\t\t\tFileGlob:        \"**/foo\",\n\t\t\t\t\t\tEvidenceMatcher: binutils.FileContentsVersionMatcher(catalogerName, `(?m)not there`),\n\t\t\t\t\t\tPackage:         \"foo\",\n\t\t\t\t\t\tPURL:            mustPURL(\"pkg:generic/foo@version\"),\n\t\t\t\t\t\tCPEs:            singleCPE(\"cpe:2.3:a:foo:foo:*:*:*:*:*:*:*:*\"),\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/extra\",\n\t\t\texpected:   nil,\n\t\t},\n\t\t{\n\t\t\tname: \"default-cutsom-positive\",\n\t\t\tconfig: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: append(\n\t\t\t\t\tappend([]binutils.Classifier{}, defaultClassifers...),\n\t\t\t\t\tfooClassifier,\n\t\t\t\t),\n\t\t\t},\n\t\t\tfixtureDir: \"testdata/custom/extra\",\n\t\t\texpected:   &customExpected,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewClassifierCataloger(test.config)\n\n\t\t\tsrc, err := directorysource.NewFromPath(test.fixtureDir)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresolver, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tpackages, _, err := c.Catalog(context.Background(), resolver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif test.expected == nil {\n\t\t\t\tassert.Equal(t, 0, len(packages))\n\t\t\t} else {\n\t\t\t\trequire.Len(t, packages, 1)\n\n\t\t\t\tassertPackagesAreEqual(t, *test.expected, packages[0])\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc locations(locations ...string) file.LocationSet {\n\tvar locs []file.Location\n\tfor _, s := range locations {\n\t\tlocs = append(locs, file.NewLocation(s))\n\t}\n\treturn file.NewLocationSet(locs...)\n}\n\n// metadata paths are: realPath, virtualPath\nfunc metadata(classifier string, paths ...string) pkg.BinarySignature {\n\treturn pkg.BinarySignature{\n\t\tMatches: []pkg.ClassifierMatch{\n\t\t\tmatch(classifier, paths...),\n\t\t},\n\t}\n}\n\n// match paths are: realPath, virtualPath\nfunc match(classifier string, paths ...string) pkg.ClassifierMatch {\n\trealPath := \"\"\n\tif len(paths) > 0 {\n\t\trealPath = paths[0]\n\t}\n\tvirtualPath := \"\"\n\tif len(paths) > 1 {\n\t\tvirtualPath = paths[1]\n\t}\n\treturn pkg.ClassifierMatch{\n\t\tClassifier: classifier,\n\t\tLocation: file.NewVirtualLocationFromCoordinates(\n\t\t\tfile.Coordinates{\n\t\t\t\tRealPath: realPath,\n\t\t\t},\n\t\t\tvirtualPath,\n\t\t),\n\t}\n}\n\nfunc assertPackagesAreEqual(t *testing.T, expected pkg.Package, p pkg.Package) {\n\tvar failMessages []string\n\texpectedLocations := expected.Locations.ToSlice()\n\tgotLocations := p.Locations.ToSlice()\n\n\tif len(expectedLocations) != len(gotLocations) {\n\t\tfailMessages = append(failMessages, fmt.Sprintf(\"locations are not equal: %v != %v\", expectedLocations, gotLocations))\n\t} else {\n\t\tfor _, expectedLocation := range expectedLocations {\n\t\t\tif !slices.ContainsFunc(gotLocations, func(gotLocation file.Location) bool {\n\t\t\t\treturn gotLocation.RealPath == expectedLocation.RealPath\n\t\t\t}) {\n\t\t\t\tfailMessages = append(failMessages, fmt.Sprintf(\"location not found; expected: %v in set: %v\", expectedLocation.RealPath, gotLocations))\n\t\t\t}\n\t\t}\n\t}\n\n\tm1 := expected.Metadata.(pkg.BinarySignature).Matches\n\tm2 := p.Metadata.(pkg.BinarySignature).Matches\n\tmatches := true\n\tif len(m1) == len(m2) {\n\t\tfor i, m1 := range m1 {\n\t\t\tm2 := m2[i]\n\t\t\tif m1.Classifier != m2.Classifier {\n\t\t\t\tmatches = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmatches = false\n\t}\n\n\tif !matches {\n\t\tfailMessages = append(failMessages, \"classifier matches not equal\")\n\t}\n\tif expected.Name != p.Name ||\n\t\texpected.Version != p.Version ||\n\t\texpected.PURL != p.PURL {\n\t\tfailMessages = append(failMessages, \"packages do not match\")\n\t}\n\n\tif len(failMessages) > 0 {\n\t\tassert.Failf(t, strings.Join(failMessages, \"; \"), \"diff: %s\",\n\t\t\tcmp.Diff(expected, p,\n\t\t\t\tcmp.Transformer(\"Locations\", func(l file.LocationSet) []file.Location {\n\t\t\t\t\treturn l.ToSlice()\n\t\t\t\t}),\n\t\t\t\tcmpopts.IgnoreUnexported(pkg.Package{}, file.LocationData{}),\n\t\t\t\tcmpopts.IgnoreFields(pkg.Package{}, \"CPEs\", \"FoundBy\", \"Type\", \"Locations\", \"Licenses\"),\n\t\t\t),\n\t\t)\n\t}\n}\n\ntype panicyResolver struct {\n\tsearchCalled bool\n}\n\nfunc (p *panicyResolver) FilesByExtension(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FilesByBasename(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FilesByBasenameGlob(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FileContentsByLocation(_ file.Location) (io.ReadCloser, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) HasPath(_ string) bool {\n\treturn true\n}\n\nfunc (p *panicyResolver) FilesByPath(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FilesByGlob(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FilesByMIMEType(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) FilesByMediaType(_ ...string) ([]file.Location, error) {\n\tp.searchCalled = true\n\treturn nil, errors.New(\"not implemented\")\n}\n\nfunc (p *panicyResolver) RelativeFileByPath(_ file.Location, _ string) *file.Location {\n\treturn nil\n}\n\nfunc (p *panicyResolver) AllLocations(_ context.Context) <-chan file.Location {\n\treturn nil\n}\n\nfunc (p *panicyResolver) FileMetadataByLocation(_ file.Location) (file.Metadata, error) {\n\treturn file.Metadata{}, errors.New(\"not implemented\")\n}\n\nvar _ file.Resolver = (*panicyResolver)(nil)\n\nfunc Test_Cataloger_ResilientToErrors(t *testing.T) {\n\tc := NewClassifierCataloger(DefaultClassifierCatalogerConfig())\n\n\tresolver := &panicyResolver{}\n\t_, _, err := c.Catalog(context.Background(), resolver)\n\tassert.Nil(t, err) // non-coordinate-based FindBy* errors are now logged and not returned\n\tassert.True(t, resolver.searchCalled)\n}\n\nfunc TestCatalogerConfig_MarshalJSON(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     ClassifierCatalogerConfig\n\t\twant    string\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"only show names of classes\",\n\t\t\tcfg: ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: []binutils.Classifier{\n\t\t\t\t\t{\n\t\t\t\t\t\tClass:           \"class\",\n\t\t\t\t\t\tFileGlob:        \"glob\",\n\t\t\t\t\t\tEvidenceMatcher: binutils.FileContentsVersionMatcher(catalogerName, \".thing\"),\n\t\t\t\t\t\tPackage:         \"pkg\",\n\t\t\t\t\t\tPURL: packageurl.PackageURL{\n\t\t\t\t\t\t\tType:       \"type\",\n\t\t\t\t\t\t\tNamespace:  \"namespace\",\n\t\t\t\t\t\t\tName:       \"name\",\n\t\t\t\t\t\t\tVersion:    \"version\",\n\t\t\t\t\t\t\tQualifiers: nil,\n\t\t\t\t\t\t\tSubpath:    \"subpath\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCPEs: []cpe.CPE{cpe.Must(\"cpe:2.3:a:some:app:*:*:*:*:*:*:*:*\", cpe.GeneratedSource)},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: `[\"class\"]`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\tgot, err := tt.cfg.MarshalJSON()\n\t\t\tif !tt.wantErr(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, string(got))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/classifiers.go",
    "content": "package binary\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n)\n\n// in both binaries and shared libraries, the version pattern is [NUL]3.11.2[NUL]\nvar pythonVersionTemplate = `(?m)\\x00(?P<version>{{ .version }}[-._a-zA-Z0-9]*)\\x00`\n\n//nolint:funlen\nfunc DefaultClassifiers() []binutils.Classifier {\n\tm := binutils.ContextualEvidenceMatchers{CatalogerName: catalogerName}\n\n\tvar libpythonMatcher = m.FileNameTemplateVersionMatcher(\n\t\t`(?:.*/|^)libpython(?P<version>[0-9]+(?:\\.[0-9]+)+)[a-z]?\\.so.*$`,\n\t\tpythonVersionTemplate,\n\t)\n\n\tvar rubyMatcher = m.FileContentsVersionMatcher(\n\t\t// ruby 3.4.0dev (2024-09-15T01:06:11Z master 532af89e3b) [x86_64-linux]\n\t\t// ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux]\n\t\t// ruby 3.3.0rc1 (2023-12-11 master a49643340e) [x86_64-linux]\n\t\t// ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]\n\t\t// ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [x86_64-linux]\n\t\t`(?m)ruby (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+((p|preview|rc|dev)[0-9]*)?) `)\n\n\tclassifiers := []binutils.Classifier{\n\t\t{\n\t\t\tClass:    \"python-binary\",\n\t\t\tFileGlob: \"**/python*\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// try to find version information from libpython shared libraries\n\t\t\t\tbinutils.SharedLibraryLookup(\n\t\t\t\t\t`^libpython[0-9]+(?:\\.[0-9]+)+[a-z]?\\.so.*$`,\n\t\t\t\t\tlibpythonMatcher),\n\t\t\t\t// check for version information in the binary\n\t\t\t\tm.FileNameTemplateVersionMatcher(\n\t\t\t\t\t`(?:.*/|^)python(?P<version>[0-9]+(?:\\.[0-9]+)+)$`,\n\t\t\t\t\tpythonVersionTemplate),\n\t\t\t),\n\t\t\tPackage: \"python\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/python@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:python:python:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:           \"python-binary-lib\",\n\t\t\tFileGlob:        \"**/libpython*.so*\",\n\t\t\tEvidenceMatcher: libpythonMatcher,\n\t\t\tPackage:         \"python\",\n\t\t\tPURL:            mustPURL(\"pkg:generic/python@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:python:python:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"pypy-binary-lib\",\n\t\t\tFileGlob: \"**/libpypy*.so*\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\[PyPy (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"pypy\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/pypy@version\"),\n\t\t},\n\t\t{\n\t\t\tClass:    \"go-binary\",\n\t\t\tFileGlob: \"**/{go,go.exe}\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t`(?m)go(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+|beta[0-9]+|alpha[0-9]+|rc[0-9]+)?)\\x00`),\n\t\t\t\tbinutils.SupportingEvidenceMatcher(\"VERSION*\",\n\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t`(?m)go(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+|beta[0-9]+|alpha[0-9]+|rc[0-9]+|-[_0-9a-z]+)?)\\s`)),\n\t\t\t\tbinutils.SupportingEvidenceMatcher(\"../VERSION*\",\n\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t`(?m)go(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+|beta[0-9]+|alpha[0-9]+|rc[0-9]+|-[_0-9a-z]+)?)\\s`)),\n\t\t\t),\n\t\t\tPackage: \"go\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/go@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:golang:go:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"julia-binary\",\n\t\t\tFileGlob: \"**/libjulia-internal.so\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)__init__\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00verify`),\n\t\t\tPackage: \"julia\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/julia@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:julialang:julia:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"helm\",\n\t\t\tFileGlob: \"**/helm\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\x00v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`),\n\t\t\tPackage: \"helm\",\n\t\t\tPURL:    mustPURL(\"pkg:golang/helm.sh/helm@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:helm:helm:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"redis-binary\",\n\t\t\tFileGlob: \"**/redis-server\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// matches most recent versions of redis (~v7), e.g. \"7.0.14buildkitsandbox-1702957741000000000\"\n\t\t\t\tm.FileContentsVersionMatcher(`[^\\d](?P<version>\\d+.\\d+\\.\\d+)buildkitsandbox-\\d+`),\n\t\t\t\t// matches against older versions of redis (~v3 - v6), e.g. \"4.0.11841ce7054bd9-1542359302000000000\"\n\t\t\t\tm.FileContentsVersionMatcher(`[^\\d](?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\w{12}-\\d+`),\n\t\t\t\t// matches against older versions of redis (~v2), e.g. \"Server started, Redis version 2.8.23\"\n\t\t\t\tm.FileContentsVersionMatcher(`Redis version (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\t),\n\t\t\tPackage: \"redis\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/redis@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:redislabs:redis:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:redis:redis:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"valkey-binary\",\n\t\t\tFileGlob: \"**/valkey-server\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// valkey9.0.0buildkitsandbox-1764887574000000000\n\t\t\t\t`[^\\d](?P<version>\\d+.\\d+\\.\\d+)buildkitsandbox-\\d+`),\n\t\t\tPackage: \"valkey\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/valkey@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:lfprojects:valkey:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:linuxfoundation:valkey:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:valkey-io:valkey:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"nodejs-binary\",\n\t\t\tFileGlob: \"**/node\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// [NUL]node v0.10.48[NUL]\n\t\t\t\t// [NUL]v0.12.18[NUL]\n\t\t\t\t// [NUL]v4.9.1[NUL]\n\t\t\t\t// node.js/v22.9.0\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)\\x00(node )?v(?P<version>(0|4|5|6)\\.[0-9]+\\.[0-9]+)\\x00`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)node\\.js\\/v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\t),\n\t\t\tPackage: \"node\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/node@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:nodejs:node.js:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"busybox-binary\",\n\t\t\tFileGlob: \"**/busybox\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)BusyBox\\s+v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"busybox\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/busybox@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:busybox:busybox:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"util-linux-binary\",\n\t\t\tFileGlob: \"**/getopt\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00util-linux\\s(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`),\n\t\t\tPackage: \"util-linux\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/util-linux@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:kernel:util-linux:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"haproxy-binary\",\n\t\t\tFileGlob: \"**/haproxy\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)version (?P<version>[0-9]+\\.[0-9]+(\\.|-dev|-rc)[0-9]+)(-[a-z0-9]{7})?, released 20`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)HA-Proxy version (?P<version>[0-9]+\\.[0-9]+(\\.|-dev)[0-9]+)`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)(?P<version>[0-9]+\\.[0-9]+(\\.|-dev)[0-9]+)-[0-9a-zA-Z]{7}.+HAProxy version`),\n\t\t\t),\n\t\t\tPackage: \"haproxy\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/haproxy@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:haproxy:haproxy:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"perl-binary\",\n\t\t\tFileGlob: \"**/perl\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\/usr\\/local\\/lib\\/perl\\d\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"perl\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/perl@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:perl:perl:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"php-composer-binary\",\n\t\t\tFileGlob: \"**/composer*\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)'pretty_version'\\s*=>\\s*'(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(beta[0-9]+|alpha[0-9]+|RC[0-9]+)?)'`),\n\t\t\tPackage: \"composer\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/composer@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:getcomposer:composer:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"httpd-binary\",\n\t\t\tFileGlob: \"**/httpd\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)Apache\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"httpd\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/httpd@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"memcached-binary\",\n\t\t\tFileGlob: \"**/memcached\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)memcached\\s(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"memcached\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/memcached@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:memcached:memcached:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"traefik-binary\",\n\t\t\tFileGlob: \"**/traefik\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]v1.7.34[NUL]\n\t\t\t\t// [NUL]2.9.6[NUL]\n\t\t\t\t// 3.0.4[NUL]\n\t\t\t\t`(?m)(\\x00v?|\\x{FFFD}.?)(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(-alpha[0-9]|-beta[0-9]|-rc[0-9])?)\\x00`),\n\t\t\tPackage: \"traefik\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/traefik@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"arangodb-binary\",\n\t\t\tFileGlob: \"**/arangosh\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\x00*(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(-[0-9]+)?)\\s\\[linux\\]`),\n\t\t\tPackage: \"arangodb\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/arangodb@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:arangodb:arangodb:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"postgresql-binary\",\n\t\t\tFileGlob: \"**/postgres\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]PostgreSQL 15beta4\n\t\t\t\t// [NUL]PostgreSQL 15.1\n\t\t\t\t// [NUL]PostgreSQL 9.6.24\n\t\t\t\t// ?PostgreSQL 9.5alpha1\n\t\t\t\t`(?m)(\\x00|\\?)PostgreSQL (?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)`),\n\t\t\tPackage: \"postgresql\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/postgresql@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:postgresql:postgresql:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"mysql-binary\",\n\t\t\tFileGlob: \"**/mysql\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// shutdown[NUL]8.0.37[NUL][NUL][NUL][NUL][NUL]mysql_real_esc\n\t\t\t\tm.FileContentsVersionMatcher(`\\x00(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)\\x00+mysql`),\n\t\t\t\t// /export/home/pb2/build/sb_0-26781090-1516292385.58/release/mysql-8.0.4-rc/mysys_ssl/my_default.cc\n\t\t\t\tm.FileContentsVersionMatcher(`(?m).*/mysql-(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)`),\n\t\t\t),\n\t\t\tPackage: \"mysql\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/mysql@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"mysql-binary\",\n\t\t\tFileGlob: \"**/mysql\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m).*/percona-server-(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)`),\n\t\t\tPackage: \"percona-server\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/percona-server@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"mysql-binary\",\n\t\t\tFileGlob: \"**/mysql\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m).*/Percona-XtraDB-Cluster-(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)`),\n\t\t\tPackage: \"percona-xtradb-cluster\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/percona-xtradb-cluster@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:percona:xtradb_cluster:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"xtrabackup-binary\",\n\t\t\tFileGlob: \"**/xtrabackup\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m).*/percona-xtrabackup-(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)`),\n\t\t\tPackage: \"percona-xtrabackup\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/percona-xtrabackup@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:percona:xtrabackup:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"mariadb-binary\",\n\t\t\tFileGlob: \"**/{mariadb,mysql}\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// 10.6.15-MariaDB\n\t\t\t\t`(?m)(?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?(alpha[0-9]|beta[0-9]|rc[0-9])?)-MariaDB`),\n\t\t\tPackage: \"mariadb\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/mariadb@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"rust-standard-library-linux\",\n\t\t\tFileGlob: \"**/libstd-????????????????.so\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// clang LLVM (rustc version 1.48.0 (7eac88abb 2020-11-16))\n\t\t\t\t`(?m)(\\x00)clang LLVM \\(rustc version (?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)) \\(\\w+ \\d{4}\\-\\d{2}\\-\\d{2}\\)`),\n\t\t\tPackage: \"rust\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/rust@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"rust-standard-library-macos\",\n\t\t\tFileGlob: \"**/libstd-????????????????.dylib\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// c 1.48.0 (7eac88abb 2020-11-16)\n\t\t\t\t`(?m)c (?P<version>[0-9]+(\\.[0-9]+)?(\\.[0-9]+)) \\(\\w+ \\d{4}\\-\\d{2}\\-\\d{2}\\)`),\n\t\t\tPackage: \"rust\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/rust@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"ruby-binary\",\n\t\t\tFileGlob: \"**/ruby\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\trubyMatcher,\n\t\t\t\tbinutils.SharedLibraryLookup(\n\t\t\t\t\t// try to find version information from libruby shared libraries\n\t\t\t\t\t`^libruby\\.so.*$`,\n\t\t\t\t\trubyMatcher),\n\t\t\t),\n\t\t\tPackage: \"ruby\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ruby@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ruby-lang:ruby:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"erlang-binary\",\n\t\t\tFileGlob: \"**/erlexec\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/src/otp_src_25.3.2.6/erts/\n\t\t\t\t\t`(?m)/src/otp_src_(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/local/src/otp-25.3.2.7/erts/\n\t\t\t\t\t`(?m)/usr/local/src/otp-(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t),\n\t\t\tPackage: \"erlang\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/erlang@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:erlang:erlang\\\\/otp:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"erlang-alpine-binary\",\n\t\t\tFileGlob: \"**/beam.smp\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/src/otp_src_25.3.2.6/erts/\n\t\t\t\t\t`(?m)/src/otp_src_(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/local/src/otp-25.3.2.7/erts/\n\t\t\t\t\t`(?m)/usr/local/src/otp-(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// [NUL][NUL]26.1.2[NUL][NUL][NUL][NUL][NUL][NUL][NUL]NUL[NUL][NUL]Erlang/OTP\n\t\t\t\t\t`\\x00+(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)\\x00+Erlang/OTP`,\n\t\t\t\t),\n\t\t\t),\n\t\t\tPackage: \"erlang\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/erlang@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:erlang:erlang\\\\/otp:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"erlang-library\",\n\t\t\tFileGlob: \"**/liberts_internal.a\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/src/otp_src_25.3.2.6/erts/\n\t\t\t\t\t`(?m)/src/otp_src_(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t// <artificial>[NUL]/usr/local/src/otp-25.3.2.7/erts/\n\t\t\t\t\t`(?m)/usr/local/src/otp-(?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+){0,2}(-rc[0-9])?)/erts/`,\n\t\t\t\t),\n\t\t\t),\n\t\t\tPackage: \"erlang\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/erlang@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:erlang:erlang\\\\/otp:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"swipl-binary\",\n\t\t\tFileGlob: \"**/swipl\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)swipl-(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\/`,\n\t\t\t),\n\t\t\tPackage: \"swipl\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/swipl@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:erlang:erlang\\\\/otp:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"dart-binary\",\n\t\t\tFileGlob: \"**/dart\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// MathAtan[NUL]2.12.4 (stable)\n\t\t\t\t// \"%s\"[NUL]3.0.0 (stable)\n\t\t\t\t// Dart,GC\"[NUL]3.5.2 (stable)\n\t\t\t\t// Dart,GC\"[NUL]3.6.0-216.1.beta (beta)\n\t\t\t\t`(?m)\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(-[0-9]+(\\.[0-9]+)?\\.beta)?) `,\n\t\t\t),\n\t\t\tPackage: \"dart\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/dart@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:dart:dart_software_development_kit:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"haskell-ghc-binary\",\n\t\t\tFileGlob: \"**/ghc*\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\x00GHC (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"haskell/ghc\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/haskell/ghc@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:haskell:ghc:*:*:*:*:*:*:*:*\"),\n\t\t},\n\t\t{\n\t\t\tClass:    \"haskell-cabal-binary\",\n\t\t\tFileGlob: \"**/cabal\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\x00Cabal-(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(\\.[0-9]+)?)-`,\n\t\t\t),\n\t\t\tPackage: \"haskell/cabal\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/haskell/cabal@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:haskell:cabal:*:*:*:*:*:*:*:*\"),\n\t\t},\n\t\t{\n\t\t\tClass:    \"haskell-stack-binary\",\n\t\t\tFileGlob: \"**/stack\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)Version\\s*(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+),\\s*Git`,\n\t\t\t),\n\t\t\tPackage: \"haskell/stack\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/haskell/stack@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:haskell:stack:*:*:*:*:*:*:*:*\"),\n\t\t},\n\t\t{\n\t\t\tClass:    \"consul-binary\",\n\t\t\tFileGlob: \"**/consul\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// NOTE: This is brittle and may not work for past or future versions\n\t\t\t\t`CONSUL_VERSION: (?P<version>\\d+\\.\\d+\\.\\d+)`,\n\t\t\t),\n\t\t\tPackage: \"consul\",\n\t\t\tPURL:    mustPURL(\"pkg:golang/github.com/hashicorp/consul@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:hashicorp:consul:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"hashicorp-vault-binary\",\n\t\t\tFileGlob: \"**/vault\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// revoke1.18.0\n\t\t\t\t`(?m)revoke(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"github.com/hashicorp/vault\",\n\t\t\tPURL:    mustPURL(\"pkg:golang/github.com/hashicorp/vault@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:hashicorp:vault:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"nginx-binary\",\n\t\t\tFileGlob: \"**/nginx\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]nginx version: nginx/1.25.1 - fetches '1.25.1'\n\t\t\t\t// [NUL]nginx version: openresty/1.21.4.1 - fetches '1.21.4' as this is the nginx version part\n\t\t\t\t`(?m)(\\x00|\\?)nginx version: [^\\/]+\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(?:\\+\\d+)?(?:-\\d+)?)`,\n\t\t\t),\n\t\t\tPackage: \"nginx\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/nginx@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:nginx:nginx:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"bash-binary\",\n\t\t\tFileGlob: \"**/bash\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// @(#)Bash version 5.2.15(1) release GNU\n\t\t\t\t// @(#)Bash version 5.2.0(1) alpha GNU\n\t\t\t\t// @(#)Bash version 5.2.0(1) beta GNU\n\t\t\t\t// @(#)Bash version 5.2.0(1) rc4 GNU\n\t\t\t\t`(?m)@\\(#\\)Bash version (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\([0-9]\\) [a-z0-9]+ GNU`,\n\t\t\t),\n\t\t\tPackage: \"bash\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/bash@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:gnu:bash:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"openssl-binary\",\n\t\t\tFileGlob: \"**/openssl\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]OpenSSL 3.1.4'\n\t\t\t\t// [NUL]OpenSSL 1.1.1w'\n\t\t\t\t`\\x00OpenSSL (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+([a-z]+|-alpha[0-9]|-beta[0-9]|-rc[0-9])?)`,\n\t\t\t),\n\t\t\tPackage: \"openssl\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/openssl@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"qt-qtbase-lib\",\n\t\t\tFileGlob: \"**/libQt*Core.so*\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// Qt 5.x and Qt 6.x pattern [NUL][NUL]Qt 6.5.0 (x86_64-little_endian-...\n\t\t\t\tm.FileContentsVersionMatcher(`\\x00\\x00Qt (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+) \\(`),\n\t\t\t\t// Qt 4.x pattern QtCore lib ver 4.8.7\n\t\t\t\tm.FileContentsVersionMatcher(`QtCore library version (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\t),\n\t\t\tPackage: \"qtbase\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/qtbase@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:qt:qtbase:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"gcc-binary\",\n\t\t\tFileGlob: \"**/gcc\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// GCC: \\(GNU\\)  12.3.0'\n\t\t\t\t`GCC: \\(GNU\\) (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`,\n\t\t\t),\n\t\t\tPackage: \"gcc\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/gcc@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:gnu:gcc:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"fluent-bit-binary\",\n\t\t\tFileGlob: \"**/fluent-bit\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]3.0.2[NUL]%sFluent Bit\n\t\t\t\t// [NUL]2.2.3[NUL]Fluent Bit\n\t\t\t\t// [NUL]2.2.1[NUL][NUL][NUL]Fluent Bit\n\t\t\t\t// [NUL]1.7.0[NUL]\\x1b[1m[NUL]%sFluent Bit (versions 1.7.0-dev-3 through 1.7.0-dev-9 and 1.7.0-rc4 through 1.7.0-rc8)\n\t\t\t\t// [NUL][NUL]1.3.10[NUL][NUL]Fluent Bit v%s\n\t\t\t\t`\\x00(\\x00)?(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00(\\x1b\\[1m\\x00|\\x00|\\x00\\x00)?(%s)?Fluent`,\n\t\t\t),\n\t\t\tPackage: \"fluent-bit\",\n\t\t\tPURL:    mustPURL(\"pkg:github/fluent/fluent-bit@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:treasuredata:fluent_bit:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"wordpress-cli-binary\",\n\t\t\tFileGlob: \"**/wp\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// wp-cli/wp-cli 2.9.0'\n\t\t\t\t`(?m)wp-cli/wp-cli (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`,\n\t\t\t),\n\t\t\tPackage: \"wp-cli\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/wp-cli@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:wp-cli:wp-cli:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"curl-binary\",\n\t\t\tFileGlob: \"**/curl\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`curl/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`,\n\t\t\t),\n\t\t\tPackage: \"curl\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/curl@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"lighttpd-binary\",\n\t\t\tFileGlob: \"**/lighttpd\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00lighttpd/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"lighttpd\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/lighttpd@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:lighttpd:lighttpd:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"proftpd-binary\",\n\t\t\tFileGlob: \"**/proftpd\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00ProFTPD Version (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+[a-z]?)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"proftpd\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/proftpd@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"zstd-binary\",\n\t\t\tFileGlob: \"**/zstd\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"zstd\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/zstd@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:facebook:zstandard:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"xz-binary\",\n\t\t\tFileGlob: \"**/xz\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00xz \\(XZ Utils\\) (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"xz\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/xz@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:tukaani:xz:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"gzip-binary\",\n\t\t\tFileGlob: \"**/gzip\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00(?P<version>[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"gzip\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/gzip@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:gnu:gzip:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"sqlcipher-binary\",\n\t\t\tFileGlob: \"**/sqlcipher\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`[^0-9]\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"sqlcipher\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/sqlcipher@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:zetetic:sqlcipher:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"jq-binary\",\n\t\t\tFileGlob: \"**/jq\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`\\x00(?P<version>[0-9]{1,3}\\.[0-9]{1,3}(\\.[0-9]+)?)\\x00`,\n\t\t\t),\n\t\t\tPackage: \"jq\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/jq@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:jqlang:jq:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"chrome-binary\",\n\t\t\tFileGlob: \"**/chrome\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// [NUL]127.0.6533.119[NUL]Default\n\t\t\t\t`\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)\\x00Default`,\n\t\t\t),\n\t\t\tPackage: \"chrome\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/chrome@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:google:chrome:*:*:*:*:*:*:*:*\"),\n\t\t},\n\t\t{\n\t\t\tClass:    \"ffmpeg-binary\",\n\t\t\tFileGlob: \"**/ffmpeg\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// Pattern found in the binary: \"%s version 7.1.1\" or \"%s version 6.0\"\n\t\t\t\t// When executed outputs: \"ffmpeg version 7.1.1\" or \"ffmpeg version 6.0\"\n\t\t\t\t`(?m)%s version (?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+)?)`,\n\t\t\t),\n\t\t\tPackage: \"ffmpeg\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ffmpeg@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"ffmpeg-library\",\n\t\t\tFileGlob: \"**/libav*\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// Primary pattern: FFmpeg version found in most libraries\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)FFmpeg version (?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+)?)`),\n\t\t\t\t// Fallback: library-specific version patterns for libavcodec and libavformat\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)Lavc(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?m)Lavf(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\t),\n\t\t\tPackage: \"ffmpeg\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ffmpeg@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"ffmpeg-library\",\n\t\t\tFileGlob: \"**/libswresample*\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t// FFmpeg version pattern for libswresample\n\t\t\t\t`(?m)FFmpeg version (?P<version>[0-9]+\\.[0-9]+(\\.[0-9]+)?)`),\n\t\t\tPackage: \"ffmpeg\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/ffmpeg@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"elixir-binary\",\n\t\t\tFileGlob: \"**/elixir\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)ELIXIR_VERSION=(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)`),\n\t\t\tPackage: \"elixir\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/elixir@version\"),\n\t\t\tCPEs: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tClass:    \"elixir-library\",\n\t\t\tFileGlob: \"**/elixir/ebin/elixir.app\",\n\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t`(?m)\\{vsn,\"(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(-[a-z0-9]+)?)\"\\}`),\n\t\t\tPackage: \"elixir\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/elixir@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"istio-binary\",\n\t\t\tFileGlob: \"**/pilot-discovery\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// [NUL]1.26.8[NUL][NUL]1.26.8[NUL]\n\t\t\t\t// [NUL]1.3.7[NUL][NUL][NUL]1.3.8[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`[0-9]+\\.[0-9]+\\.[0-9]+\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+`),\n\t\t\t\t// Clean[NUL][NUL][NUL]1.8.0[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`Clean\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+`),\n\t\t\t\t// 1.1.17[NUL]...S=v<y5\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+.{1,100}S?=v<y5`),\n\t\t\t),\n\t\t\tPackage: \"pilot-discovery\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/istio@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:istio:istio:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"istio-binary\",\n\t\t\tFileGlob: \"**/pilot-agent\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// [NUL]1.26.8[NUL][NUL]1.26.8[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`[0-9]+\\.[0-9]+\\.[0-9]+\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+`),\n\t\t\t\t// Clean[NUL][NUL][NUL]1.8.0[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`Clean\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+`),\n\t\t\t\t// 1.1.17[NUL]...S=v<y5\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+.{1,100}S?=v<y5`),\n\t\t\t),\n\t\t\tPackage: \"pilot-agent\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/istio@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:istio:istio:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"grafana-binary\",\n\t\t\tFileGlob: \"**/grafana\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// [NUL][NUL][NUL][NUL]12.2.0-258092[NUL][NUL][NUL][NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`\\x00+(?P<version>[0-9]{2}\\.[0-9]+\\.[0-9]+\\-[0-9]{6,})\\x00+`),\n\t\t\t\t// [NUL][NUL][NUL][NUL]release-12.3.2+security-01[NUL][NUL][NUL][NUL]\n\t\t\t\t// [NUL][NUL][NUL][NUL]release-12.3.1[NUL][NUL][NUL][NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`\\x00+release-(?P<version>[0-9]{2}\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+`),\n\t\t\t\t// [NUL][NUL][NUL][NUL]go1.21.8[NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL]11.0.0-preview[NUL][NUL]...+DT\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00+go1\\.[0-9]+\\.[0-9]+\\x00+(?P<version>[0-9]{2}\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+.{1,500}\\+DT`),\n\t\t\t\t// HEAD[NUL][NUL][NUL][NUL]12.0.0[NUL][NUL]$a\n\t\t\t\t// 11.0.0[NUL][NUL]$a\n\t\t\t\tm.FileContentsVersionMatcher(`(?P<version>[0-9]{2}\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+\\$a`),\n\t\t\t\t// [NUL]0xDC0xBF10.4.19[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`\\x00.(?P<version>10\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00`),\n\t\t\t\t// 10.3.12[NUL]...[NUL]go1.22.7[NUL][NUL][NUL][NUL]...+DT\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)(?P<version>[0-9]{2}\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+.{1,100}\\x00go1\\.[0-9]+\\.[0-9]+\\x00.{1,100}\\+DT`),\n\t\t\t\t// 9.5.21[NUL][NUL]v9.5.x[NUL][NUL][NUL][NUL][NUL][NUL]$a\n\t\t\t\tm.FileContentsVersionMatcher(`(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+v[0-9]+\\.[0-9]+\\.x\\x00+`),\n\t\t\t\t// HEAD[NUL][NUL][NUL][NUL]9.2.20[NUL][NUL][NUL][NUL]\n\t\t\t\t// HEAD[NUL][NUL]:[NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL]9.2.13[NUL][NUL][NUL][NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`HEAD\\x00+.*\\x00+(?P<version>[0-9]\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+`),\n\t\t\t\t// 1b0f5f0a81[NUL][NUL][NUL][NUL][NUL][NUL]9.4.0-beta1[NUL][NUL][NUL][NUL][NUL]/usr/local/go\n\t\t\t\tm.FileContentsVersionMatcher(`[a-z0-9]+\\x00+(?P<version>[0-9]\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test|-preview)?)(\\+security-[0-9]+)?\\x00+\\/usr\\/local\\/go`),\n\t\t\t),\n\t\t\tPackage: \"grafana\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/grafana@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"grafana-binary\",\n\t\t\tFileGlob: \"**/grafana-server\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// 78f0340031[NUL][NUL][NUL][NUL][NUL][NUL]9.3.0-beta1[NUL][NUL][NUL][NUL][NUL]/usr/local/go\n\t\t\t\tm.FileContentsVersionMatcher(`[a-z0-9]+\\x00+(?P<version>[0-9]\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test)?)\\x00+\\/usr\\/local\\/go`),\n\t\t\t\t// HEAD[NUL][NUL][NUL][NUL]9.0.0[NUL]:[NUL]\n\t\t\t\t// HEAD[NUL][NUL][NUL][NUL]:[NUL][NUL][NUL][NUL][NUL][NUL][NUL]7.5.17[NUL][NUL][NUL][NUL]\n\t\t\t\t// HEAD[NUL][NUL][NUL][NUL]m[NUL]...[NUL][NUL]6.7.6[NUL][NUL][NUL].[NUL][NUL][NUL][NUL][NUL][NUL][NUL]:\n\t\t\t\tm.FileContentsVersionMatcher(`HEAD\\x00+.*\\x00+(?P<version>[0-9]\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test)?)\\x00+`),\n\t\t\t\t// [NUL][NUL][NUL][NUL][NUL]6.7.0-test[NUL][NUL][NUL]...[NUL][NUL][NUL][NUL]/usr/local/go\n\t\t\t\t// [NUL][NUL][NUL][NUL][NUL]6.0.0-beta1[NUL][NUL][NUL]...[NUL][NUL][NUL][NUL]/usr/local/go\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00+(?P<version>[0-9]\\.[0-9]+\\.[0-9]+(-beta[0-9]|-test)?)\\x00+.*\\x00+.{1,1000}\\x00+\\/u`),\n\t\t\t),\n\t\t\tPackage: \"grafana\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/grafana@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"envoy-binary\",\n\t\t\tFileGlob: \"**/envoy\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// 1.3x [NUL]1.36.4[NUL]...envoy_reloadable_features\n\t\t\t\t// 1.34.5 [NUL]1.34.5[NUL]...envoy.reloadable_features\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.3[0-9]\\.[0-9]+(-dev)?)\\x00.{0,1000}envoy_reloadable_features`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.34\\.5)\\x00.{0,200}envoy\\.reloadable_features`),\n\t\t\t\t// 1.2x envoy_quic_...[NUL]1.28.7[NUL]\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)envoy_quic_.{0,1000}\\x00(?P<version>1\\.2[0-9]\\.[0-9]+(-dev)?)\\x00`),\n\t\t\t\t// 1.2x [NUL]1.20.7[NUL]Unable to\n\t\t\t\t// 1.1x [NUL]1.18.6-dev[NUL]Unable to\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.[12][0-9]\\.[0-9]+(-dev)?)\\x00.{0,1000}Unable to`),\n\t\t\t\t// 1.2x [NUL]1.22.11[NUL]...ValidationError\n\t\t\t\t// 1.1x [NUL]1.14.3[NUL]...ValidationError\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.2[0-9]\\.[0-9]+(-dev)?)\\x00.{0,580}ValidationError`),\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.1[0-9]\\.[0-9]+(-dev)?)\\x00.{0,1000}ValidationError`),\n\t\t\t\t// 1.1x [source...[NUL]1.11.0[NUL]/\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\[source/.{0,200}\\x00(?P<version>1\\.1[0-9]\\.[0-9]+(-dev)?)\\x00`),\n\t\t\t\t// 1.x [NUL]1.6.0[NUL]RELEASE\n\t\t\t\tm.FileContentsVersionMatcher(`(?s)\\x00(?P<version>1\\.[0-9]\\.[0-9]+(-dev)?)\\x00.{0,20}RELEASE`),\n\t\t\t),\n\t\t\tPackage: \"envoy\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/envoy@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\t{\n\t\t\tClass:    \"mongodb-binary\",\n\t\t\tFileGlob: \"**/mongod\",\n\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t// mongodb 4.x, 5.x, 6.x: ber followed by tcmalloc\n\t\t\t\t// e.g 6.0.27[NUL]tcmalloc\n\t\t\t\tm.FileContentsVersionMatcher(`(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00tcmalloc`),\n\t\t\t\t// mongodb 7.x: ver followed by \"heap_size\"\n\t\t\t\t// e.g 7.0.28[NUL]heap_size\n\t\t\t\tm.FileContentsVersionMatcher(`(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+heap_size`),\n\t\t\t\t// mongodb 8.x: ber followed by \"cppdefines\"\n\t\t\t\t// e.g 8.0.17[NUL]cppdefines\n\t\t\t\tm.FileContentsVersionMatcher(`(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+cppdefines`),\n\t\t\t),\n\t\t\tPackage: \"mongodb\",\n\t\t\tPURL:    mustPURL(\"pkg:generic/mongodb@version\"),\n\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:mongodb:mongodb:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t},\n\t}\n\n\treturn append(classifiers, defaultJavaClassifiers()...)\n}\n\n// singleCPE returns a []cpe.CPE with Source: Generated based on the cpe string or panics if the\n// cpe string cannot be parsed into valid CPE Attributes\nfunc singleCPE(cpeString string, source ...cpe.Source) []cpe.CPE {\n\tsrc := cpe.GeneratedSource\n\tif len(source) > 0 {\n\t\tsrc = source[0]\n\t}\n\treturn []cpe.CPE{\n\t\tcpe.Must(cpeString, src),\n\t}\n}\n\nfunc mustPURL(purl string) packageurl.PackageURL {\n\tp, err := packageurl.FromString(purl)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid PURL: %s\", p))\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/classifiers_java.go",
    "content": "package binary\n\nimport (\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n)\n\n//nolint:funlen\nfunc defaultJavaClassifiers() []binutils.Classifier {\n\tm := binutils.ContextualEvidenceMatchers{CatalogerName: catalogerName}\n\n\treturn []binutils.Classifier{\n\t\t{\n\t\t\tClass:    \"java-binary\",\n\t\t\tFileGlob: \"**/java\",\n\t\t\tEvidenceMatcher: binutils.BranchingEvidenceMatcher([]binutils.Classifier{\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-graalvm\",\n\t\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+[.0-9]+[.0-9]+\\+[0-9]+-jvmci-[0-9]+[.0-9]+-b[0-9]+)\\x00`),\n\t\t\t\t\tPackage: \"graalvm\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/graalvm@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:graalvm:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-openjdk-zulu\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tbinutils.MatchPath(`**/*zulu*/**`),\n\t\t\t\t\t\tbinutils.MatchAny(\n\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t\t// [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL]\n\t\t\t\t\t\t\t\t`(?m)\\x00java\\x00(?P<release>[0-9]+[.0-9]*)\\x00(?P<version>[0-9]+[^\\x00]+)\\x00`),\n\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t\t// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL]\n\t\t\t\t\t\t\t\t`(?m)\\x00(?P<release>[0-9]+[.0-9]*)\\x00+(?P<version>[0-9]+[^\\x00]+)\\x00+(openjdk|java)`),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"zulu\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/azul/zulu@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-openjdk-with-update\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t`openjdk`,\n\t\t\t\t\t\t\t// [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL]\n\t\t\t\t\t\t\t`(?m)java\\x00(?P<release>[0-9]+[.0-9]*)\\x00(?P<version>(?<primary>[0-9]+[^\\x00]+)_(?<update>[^\\x00]+)-[^\\x00]+)\\x00`),\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t`openjdk`,\n\t\t\t\t\t\t\t// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]1.8.0_352-b08[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00(?P<release>[0-9]+[.0-9]*)\\x00+(?P<version>(?<primary>[0-9]+[^\\x00]+)_(?<update>[^\\x00]+)-[^\\x00]+)\\x00+openjdk\\x00java`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"openjdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:{{.primary}}:update{{.update}}:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-openjdk\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAny(\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00openjdk\\x00java\\x00(?P<release>[0-9]+[.0-9]*)\\x00(?P<version>[0-9]+[^\\x00]+)\\x00`),\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00(?P<release>[0-9]+[.0-9]*)\\x00+(?P<version>[0-9]+[^\\x00]+)\\x00+openjdk\\x00java`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"openjdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-ibm\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tbinutils.MatchAny(\n\t\t\t\t\t\t\tbinutils.MatchPath(\"**/ibm/**\"),\n\t\t\t\t\t\t\tbinutils.SharedLibraryLookup(\n\t\t\t\t\t\t\t\t`^libjli\\.so$`,\n\t\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\"IBM_JAVA\")),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// [NUL]java[NUL]1.8[NUL][NUL][NUL]1.8.0-foreman_2022_01_20_09_33-b00[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00java\\x00+(?P<release>[0-9]+[.0-9]+)\\x00+(?P<version>[0-9]+[-._a-zA-Z0-9]+)\\x00`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"java\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/ibm/java@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ibm:java:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-openjdk-fallthrough\",\n\t\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t\t\"openjdk\",\n\t\t\t\t\t\t// [NUL]19.0.1+10-21[NUL]\n\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+[.0-9]+[+][-0-9]+)\\x00`,\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"jre\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jre@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-oracle\",\n\t\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t\t// [NUL]19.0.1+10-21[NUL]\n\t\t\t\t\t\t// java[NUL]1.8[NUL]1.8.0_451-b10\n\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+\\.[0-9]+\\.[-._+a-zA-Z0-9]+)\\x00`,\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"jre\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jre@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t}...),\n\t\t},\n\t\t{\n\t\t\tClass:    \"java-jdb-binary\",\n\t\t\tFileGlob: \"**/jdb\",\n\t\t\tEvidenceMatcher: binutils.BranchingEvidenceMatcher([]binutils.Classifier{\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-graalvm\",\n\t\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+[.0-9]+[.0-9]+\\+[0-9]+-jvmci-[0-9]+[.0-9]+-b[0-9]+)\\x00`),\n\t\t\t\t\tPackage: \"graalvm\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/graalvm@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:graalvm_for_jdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"jdb-binary-openjdk-zulu\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tbinutils.MatchPath(\"**/*zulu*/**\"),\n\t\t\t\t\t\tbinutils.MatchAny(\n\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t\t// [NUL]jdb[NUL]0.0[NUL]11.0.17+8-LTS[NUL]\n\t\t\t\t\t\t\t\t`(?m)(java|jdb)\\x00(?P<release>[0-9]+[.0-9]*)\\x00(?P<version>[0-9]+[^\\x00]+)\\x00`),\n\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t\t// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]jdb[NUL]\n\t\t\t\t\t\t\t\t`(?m)\\x00(?P<release>[0-9]+[.0-9]*)\\x00+(?P<version>[0-9]+[^\\x00]+)\\x00+(java|jdb)`),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"zulu\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/azul/zulu@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-jdb-binary-openjdk\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL]\n\t\t\t\t\t\t\t// [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00openjdk\\x00java\\x00(?P<release>[0-9]+[.0-9]*)\\x00(?P<version>[0-9]+[^\\x00]+)\\x00`),\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00(?P<release>[0-9]+[.0-9]*)\\x00+(?P<version>[0-9]+[^\\x00]+)\\x00+openjdk\\x00java`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"openjdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-sdk-binary-ibm\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tbinutils.MatchAny(\n\t\t\t\t\t\t\tbinutils.MatchPath(\"**/ibm/**\"),\n\t\t\t\t\t\t\tbinutils.SharedLibraryLookup(\n\t\t\t\t\t\t\t\t`^libjli\\.so$`,\n\t\t\t\t\t\t\t\tm.FileContentsVersionMatcher(\"IBM_JAVA\")),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t// [NUL]java[NUL]./lib/tools.jar./lib/sa-jdi.jar./classes.-J-ms8m[NUL][NUL]1.8[NUL][NUL][NUL]1.8.0-foreman_2022_01_20_09_33-b00[NUL]\n\t\t\t\t\t\t\t`(?m)\\x00java\\x00.+?\\x00(?P<version>[0-9]+[-._a-zA-Z0-9]+)\\x00`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"java_sdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/ibm/java_sdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:ibm:java_sdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-openjdk-fallthrough\",\n\t\t\t\t\tEvidenceMatcher: binutils.MatchAll(\n\t\t\t\t\t\tm.FileContentsVersionMatcher(\n\t\t\t\t\t\t\t\"openjdk\",\n\t\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(\\+[0-9]+)?([-._a-zA-Z0-9]+)?)\\x00`),\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"openjdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/openjdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tClass: \"java-binary-jdk\",\n\t\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t\t`(?m)\\x00(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(\\+[0-9]+)?([-._a-zA-Z0-9]+)?)\\x00`),\n\t\t\t\t\tPackage: \"jdk\",\n\t\t\t\t\tPURL:    mustPURL(\"pkg:generic/oracle/jdk@version\"),\n\t\t\t\t\tCPEs:    singleCPE(\"cpe:2.3:a:oracle:jdk:*:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t}...),\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/classifiers_java_test.go",
    "content": "package binary\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_JavaBinaryImage(t *testing.T) {\n\ttests := []struct {\n\t\timage    string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\timage: \"image-java-binary\",\n\t\t\texpected: []string{\n\t\t\t\t\"java @ 1.8.0-foreman_2022_09_22_15_30-b00 (/staged/positive/ibm/java)\",\n\t\t\t\t\"jre @ 19.0.1+10-21 (/staged/positive/oracle-macos/java)\",\n\t\t\t\t\"openjdk @ 1.8.0_352-b08 (/staged/positive/openjdk/java)\",\n\t\t\t\t\"openjdk @ 11.0.17+8-LTS (/staged/positive/openjdk-lts/java)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\timage: \"image-java-zulu-8\",\n\t\t\texpected: []string{\n\t\t\t\t\"zulu @ 1.8.0_462-b08 (/usr/lib/jvm/zulu8-ca-amd64/bin/jdb)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\timage: \"image-java-zulu-21\",\n\t\t\texpected: []string{\n\t\t\t\t\"zulu @ 21.0.8+9-LTS (/usr/lib/jvm/zulu21-ca-amd64/bin/java)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\timage: \"image-java-ibm-8\",\n\t\t\texpected: []string{\n\t\t\t\t\"java @ 1.8.0-foreman_2023_10_12_13_27-b00 (/opt/ibm/java/jre/bin/java)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\timage: \"image-java-ibm-jre-8\",\n\t\t\texpected: []string{\n\t\t\t\t\"java @ 1.8.0-_2025_04_14_02_37-b00 (/opt/ibm/java/jre/bin/java)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\timage: \"image-java-ibm-sdk-8\",\n\t\t\texpected: []string{\n\t\t\t\t\"java_sdk @ 1.8.0-foreman_2022_01_20_09_33-b00 (/opt/ibm/java/bin/jdb)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.image, func(t *testing.T) {\n\t\t\tc := NewClassifierCataloger(ClassifierCatalogerConfig{\n\t\t\t\tClassifiers: defaultJavaClassifiers(),\n\t\t\t})\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.image).\n\t\t\t\tExpectsPackageStrings(tt.expected).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/deprecated.go",
    "content": "package binary\n\nimport \"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n\n// Note: all generic utilities for catalogers have been moved to the internal/binutils package.\n\n// Deprecated: This package is deprecated and will be removed in syft v2\ntype Classifier = binutils.Classifier\n\n// Deprecated: This package is deprecated and will be removed in syft v2\ntype EvidenceMatcher = binutils.EvidenceMatcher\n\n// Deprecated: This package is deprecated and will be removed in syft v2\nfunc FileContentsVersionMatcher(\n\tpattern string,\n) EvidenceMatcher {\n\treturn binutils.FileContentsVersionMatcher(catalogerName, pattern)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/elf_package.go",
    "content": "package binary\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newELFPackage(ctx context.Context, metadata elfBinaryPackageNotes, locations file.LocationSet) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      metadata.Name,\n\t\tVersion:   metadata.Version,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, metadata.License)),\n\t\tPURL:      elfPackageURL(metadata),\n\t\tType:      pkgType(metadata.Type),\n\t\tLocations: locations,\n\t\tMetadata:  metadata.ELFBinaryPackageNoteJSONPayload,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc elfPackageURL(metadata elfBinaryPackageNotes) string {\n\tvar qualifiers []packageurl.Qualifier\n\n\tos, osVersion := osNameAndVersionFromMetadata(metadata)\n\n\tif os != \"\" {\n\t\tosQualifier := os\n\t\tif osVersion != \"\" {\n\t\t\tosQualifier += \"-\" + osVersion\n\t\t}\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"distro\",\n\t\t\tValue: osQualifier,\n\t\t})\n\t}\n\n\tty := purlDistroType(metadata.Type)\n\n\tnamespace := os\n\n\tif ty == packageurl.TypeGeneric || os == \"\" {\n\t\tnamespace = metadata.System\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tty,\n\t\tnamespace,\n\t\tmetadata.Name,\n\t\tmetadata.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc osNameAndVersionFromMetadata(metadata elfBinaryPackageNotes) (string, string) {\n\tos := metadata.OS\n\tosVersion := metadata.OSVersion\n\n\tif os != \"\" && osVersion != \"\" {\n\t\treturn os, osVersion\n\t}\n\n\tif metadata.OSCPE == \"\" { //nolint:staticcheck\n\t\t// best-effort to get the os info\n\t\tif os != \"\" {\n\t\t\treturn os, \"\"\n\t\t}\n\t\treturn \"\", \"\"\n\t}\n\n\tattrs, err := cpe.NewAttributes(metadata.OSCPE) //nolint:staticcheck\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to parse cpe attributes for elf binary package\")\n\t\treturn \"\", \"\"\n\t}\n\treturn attrs.Product, attrs.Version\n}\n\nconst alpmType = \"alpm\"\n\nfunc purlDistroType(ty string) string {\n\tswitch ty {\n\tcase \"rpm\":\n\t\treturn packageurl.TypeRPM\n\tcase \"deb\":\n\t\treturn packageurl.TypeDebian\n\tcase \"apk\":\n\t\treturn packageurl.TypeAlpine\n\tcase alpmType:\n\t\treturn alpmType\n\t}\n\treturn packageurl.TypeGeneric\n}\n\nfunc pkgType(ty string) pkg.Type {\n\tswitch ty {\n\tcase \"rpm\":\n\t\treturn pkg.RpmPkg\n\tcase \"deb\":\n\t\treturn pkg.DebPkg\n\tcase \"apk\":\n\t\treturn pkg.ApkPkg\n\tcase alpmType:\n\t\treturn pkg.AlpmPkg\n\t}\n\treturn pkg.BinaryPkg\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/elf_package_cataloger.go",
    "content": "package binary\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"debug/elf\"\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar _ pkg.Cataloger = (*elfPackageCataloger)(nil)\n\ntype elfPackageCataloger struct {\n}\n\n// TODO: for now this accounts for a single data shape from the .note.package section of an ELF binary.\n// In the future, this should be generalized to support multiple data shapes, including non-json data.\n// For example, fedora includes an ELF section header as a prefix to the JSON payload: https://github.com/anchore/syft/issues/2713\n\ntype elfBinaryPackageNotes struct {\n\tName                                string `json:\"name\"`\n\tVersion                             string `json:\"version\"`\n\tPURL                                string `json:\"purl\"`\n\tCPE                                 string `json:\"cpe\"`\n\tLicense                             string `json:\"license\"`\n\tpkg.ELFBinaryPackageNoteJSONPayload `json:\",inline\"`\n\t// CorrectOSCPE has the corrected casing for the osCPE field relative to the systemd ELF package metadata \"spec\" https://systemd.io/ELF_PACKAGE_METADATA/ .\n\t// Ideally in syft 2.0 this field should be replaced with the pkg.ELFBinaryPackageNoteJSONPayload.OSCPE field directly (with the struct tag corrected).\n\tCorrectOSCPE string        `json:\"osCpe,omitempty\"`\n\tLocation     file.Location `json:\"-\"`\n}\n\ntype elfPackageKey struct {\n\tName    string\n\tVersion string\n\tPURL    string\n\tCPE     string\n}\n\nfunc NewELFPackageCataloger() pkg.Cataloger {\n\treturn &elfPackageCataloger{}\n}\n\nfunc (c *elfPackageCataloger) Name() string {\n\treturn \"elf-binary-package-cataloger\"\n}\n\nfunc (c *elfPackageCataloger) Catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar errs error\n\tlocations, err := resolver.FilesByMIMEType(mimetype.ExecutableMIMETypeSet.List()...)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get binary files by mime type: %w\", err)\n\t}\n\n\t// first find all ELF binaries that have notes\n\tvar notesByLocation = make(map[elfPackageKey][]elfBinaryPackageNotes)\n\tfor _, location := range locations {\n\t\tnotes, key, err := parseElfPackageNotes(resolver, location, c)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\tcontinue\n\t\t}\n\t\tif notes == nil {\n\t\t\tcontinue\n\t\t}\n\t\tnotesByLocation[key] = append(notesByLocation[key], *notes)\n\t}\n\n\t// now we have all ELF binaries that have notes, let's create packages for them.\n\t// we do this in a second pass since it is possible that we have multiple ELF binaries with the same name and version\n\t// which means the set of binaries collectively represent a single logical package.\n\tvar pkgs []pkg.Package\n\tfor _, notes := range notesByLocation {\n\t\tnoteLocations := file.NewLocationSet()\n\t\tfor _, note := range notes {\n\t\t\tnoteLocations.Add(note.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\t\t}\n\n\t\t// create a package for each unique name/version pair (based on the first note found)\n\t\tpkgs = append(pkgs, newELFPackage(ctx, notes[0], noteLocations))\n\t}\n\n\t// why not return relationships? We have an executable cataloger that will note the dynamic libraries imported by\n\t// each binary. After all files and packages are processed there is a final task that creates package-to-package\n\t// and package-to-file relationships based on the dynamic libraries imported by each binary.\n\treturn pkgs, nil, errs\n}\n\nfunc parseElfPackageNotes(resolver file.Resolver, location file.Location, c *elfPackageCataloger) (*elfBinaryPackageNotes, elfPackageKey, error) {\n\treader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\treturn nil, elfPackageKey{}, fmt.Errorf(\"unable to get binary contents %q: %w\", location.Path(), err)\n\t}\n\tdefer internal.CloseAndLogError(reader, location.AccessPath)\n\n\tnotes, err := c.parseElfNotes(file.LocationReadCloser{\n\t\tLocation:   location,\n\t\tReadCloser: reader,\n\t})\n\n\tif err != nil {\n\t\tlog.WithFields(\"file\", location.Path(), \"error\", err).Trace(\"unable to parse ELF notes\")\n\t\treturn nil, elfPackageKey{}, err\n\t}\n\n\tif notes == nil {\n\t\treturn nil, elfPackageKey{}, nil\n\t}\n\n\tnotes.Location = location\n\tkey := elfPackageKey{\n\t\tName:    notes.Name,\n\t\tVersion: notes.Version,\n\t\tPURL:    notes.PURL,\n\t\tCPE:     notes.CPE,\n\t}\n\treturn notes, key, nil\n}\n\nfunc (c *elfPackageCataloger) parseElfNotes(reader file.LocationReadCloser) (*elfBinaryPackageNotes, error) {\n\tmetadata, err := getELFNotes(reader)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to process ELF binary: %w\", err)\n\t}\n\n\tif metadata == nil || metadata.Name == \"\" || metadata.Version == \"\" {\n\t\treturn nil, nil\n\t}\n\n\treturn metadata, nil\n}\n\nfunc getELFNotes(r file.LocationReadCloser) (*elfBinaryPackageNotes, error) {\n\tunionReader, err := unionreader.GetUnionReader(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get union reader for binary: %w\", err)\n\t}\n\n\tf, err := elf.NewFile(unionReader)\n\tif f == nil || err != nil {\n\t\tlog.WithFields(\"file\", r.Location.Path(), \"error\", err).Trace(\"unable to parse binary as ELF\")\n\t\treturn nil, nil\n\t}\n\n\tnoteSection := f.Section(\".note.package\")\n\tif noteSection == nil {\n\t\treturn nil, nil\n\t}\n\n\tnotes, err := noteSection.Data()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(notes) == 0 {\n\t\treturn nil, nil\n\t}\n\n\t{\n\t\tvar metadata *elfBinaryPackageNotes\n\t\tif metadata, err = unmarshalELFPackageNotesPayload(notes); err == nil {\n\t\t\treturn metadata, nil\n\t\t}\n\t}\n\n\t{\n\t\tvar header elf64SectionHeader\n\t\theaderSize := binary.Size(header) / 4\n\t\tif len(notes) > headerSize {\n\t\t\tvar metadata *elfBinaryPackageNotes\n\t\t\tnewPayload := bytes.TrimRight(notes[headerSize:], \"\\x00\")\n\t\t\tif metadata, err = unmarshalELFPackageNotesPayload(newPayload); err == nil {\n\t\t\t\treturn metadata, nil\n\t\t\t}\n\t\t\tlog.WithFields(\"file\", r.Location.Path(), \"error\", err).Trace(\"unable to unmarshal ELF package notes as JSON\")\n\t\t}\n\t}\n\n\treturn nil, err\n}\n\nfunc unmarshalELFPackageNotesPayload(data []byte) (*elfBinaryPackageNotes, error) {\n\tvar metadata elfBinaryPackageNotes\n\tif err := json.Unmarshal(data, &metadata); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to unmarshal ELF package notes payload: %w\", err)\n\t}\n\n\t// normalize the os CPE field\n\tif metadata.OSCPE == \"\" { //nolint:staticcheck\n\t\t// ensure the public field is populated for backwards compatibility\n\t\tmetadata.OSCPE = metadata.CorrectOSCPE //nolint:staticcheck\n\t}\n\n\treturn &metadata, nil\n}\n\ntype elf64SectionHeader struct {\n\tShName      uint32\n\tShType      uint32\n\tShFlags     uint64\n\tShAddr      uint64\n\tShOffset    uint64\n\tShSize      uint64\n\tShLink      uint32\n\tShInfo      uint32\n\tShAddralign uint64\n\tShEntsize   uint64\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/elf_package_cataloger_test.go",
    "content": "package binary\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\textFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_ELFPackageCataloger(t *testing.T) {\n\n\tcases := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"go case\",\n\t\t\tfixture: \"elf-testdata\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"libhello_world.so\",\n\t\t\t\t\tVersion: \"0.01\",\n\t\t\t\t\tPURL:    \"pkg:generic/syftsys/libhello_world.so@0.01\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/local/bin/elftests/elfbinwithnestedlib/bin/lib/libhello_world.so\", \"/usr/local/bin/elftests/elfbinwithnestedlib/bin/lib/libhello_world.so\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world.so\", \"/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world.so\"),\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world2.so\", \"/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world2.so\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{Value: \"MIT\", SPDXExpression: \"MIT\", Type: \"declared\"},\n\t\t\t\t\t),\n\n\t\t\t\t\tType: pkg.BinaryPkg,\n\t\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\t\tType:       \"testfixture\",\n\t\t\t\t\t\tVendor:     \"syft\",\n\t\t\t\t\t\tSystem:     \"syftsys\",\n\t\t\t\t\t\tSourceRepo: \"https://github.com/someone/somewhere.git\",\n\t\t\t\t\t\tCommit:     \"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"syfttestfixture\",\n\t\t\t\t\tVersion: \"0.01\",\n\t\t\t\t\tPURL:    \"pkg:generic/syftsys/syfttestfixture@0.01\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/usr/local/bin/elftests/elfbinwithnestedlib/bin/elfbinwithnestedlib\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin1\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin2\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{Value: \"MIT\", SPDXExpression: \"MIT\", Type: \"declared\"},\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.BinaryPkg,\n\t\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\t\tType:       \"testfixture\",\n\t\t\t\t\t\tVendor:     \"syft\",\n\t\t\t\t\t\tSystem:     \"syftsys\",\n\t\t\t\t\t\tSourceRepo: \"https://github.com/someone/somewhere.git\",\n\t\t\t\t\t\tCommit:     \"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"fedora 64 bit binaries\",\n\t\t\tfixture: \"image-fedora-64bit\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"coreutils\",\n\t\t\t\t\tVersion: \"9.5-3.fc41\",\n\t\t\t\t\tPURL:    \"pkg:rpm/fedora/coreutils@9.5-3.fc41?distro=fedora-40\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/sha256sum\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/sha1sum\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t\t\tType:     pkg.RpmPkg,\n\t\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\t\tType:         \"rpm\",\n\t\t\t\t\t\tArchitecture: \"x86_64\",\n\t\t\t\t\t\tOSCPE:        \"cpe:/o:fedoraproject:fedora:40\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"fedora 32 bit binaries\",\n\t\t\tfixture: \"image-fedora-32bit\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"coreutils\",\n\t\t\t\t\tVersion: \"9.0-5.fc36\",\n\t\t\t\t\tPURL:    \"pkg:rpm/fedora/coreutils@9.0-5.fc36?distro=fedora-36\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/sha256sum\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/sha1sum\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t\t\tType:     pkg.RpmPkg,\n\t\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\t\tType:         \"rpm\",\n\t\t\t\t\t\tArchitecture: \"arm\",\n\t\t\t\t\t\tOSCPE:        \"cpe:/o:fedoraproject:fedora:36\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"Debian 64 bit binaries w/o os version\",\n\t\t\tfixture: \"image-wolfi-64bit-without-version\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"glibc\",\n\t\t\t\t\tVersion: \"2.43-r2\",\n\t\t\t\t\tPURL:    \"pkg:apk/wolfi/glibc@2.43-r2?distro=wolfi\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromDirectory(\"/lib/libBrokenLocale.so.1\",\n\t\t\t\t\t\t\t\"sha256:559eaef4e501b8e7a150661a94ee8b9ebc63bfca3256953a703f9f82053346f2\",\n\t\t\t\t\t\t\t*extFile.NewFileReference(\"/lib/libBrokenLocale.so.1\")).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(),\n\t\t\t\t\tType:     pkg.ApkPkg,\n\t\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\t\tType:         \"apk\",\n\t\t\t\t\t\tArchitecture: \"x86_64\",\n\t\t\t\t\t\tOS:           \"wolfi\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, v := range cases {\n\t\tt.Run(v.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, v.fixture).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpects(v.expected, nil).\n\t\t\t\tWithErrorAssertion(v.wantErr).\n\t\t\t\tTestCataloger(t, NewELFPackageCataloger())\n\t\t})\n\t}\n\n}\n\nfunc Test_unmarshalELFPackageNotesPayload(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tpayload     string\n\t\twantOSCPE   string\n\t\twantCorrect string\n\t\twantErr     require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:        \"only osCPE (incorrect) provided\",\n\t\t\tpayload:     `{\"name\":\"test\",\"version\":\"1.0\",\"osCPE\":\"cpe:/o:fedoraproject:fedora:40\"}`,\n\t\t\twantOSCPE:   \"cpe:/o:fedoraproject:fedora:40\",\n\t\t\twantCorrect: \"\",\n\t\t},\n\t\t{\n\t\t\tname:        \"only osCpe (correct) provided\",\n\t\t\tpayload:     `{\"name\":\"test\",\"version\":\"1.0\",\"osCpe\":\"cpe:/o:fedoraproject:fedora:40\"}`,\n\t\t\twantOSCPE:   \"cpe:/o:fedoraproject:fedora:40\",\n\t\t\twantCorrect: \"cpe:/o:fedoraproject:fedora:40\",\n\t\t},\n\t\t{\n\t\t\tname:        \"both osCPE and osCpe provided uses osCPE\",\n\t\t\tpayload:     `{\"name\":\"test\",\"version\":\"1.0\",\"osCPE\":\"cpe:/o:fedoraproject:fedora:40\",\"osCpe\":\"cpe:/o:redhat:rhel:9\"}`,\n\t\t\twantOSCPE:   \"cpe:/o:fedoraproject:fedora:40\",\n\t\t\twantCorrect: \"cpe:/o:redhat:rhel:9\",\n\t\t},\n\t\t{\n\t\t\tname:        \"neither osCPE nor osCpe provided\",\n\t\t\tpayload:     `{\"name\":\"test\",\"version\":\"1.0\"}`,\n\t\t\twantOSCPE:   \"\",\n\t\t\twantCorrect: \"\",\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid JSON\",\n\t\t\tpayload: `{invalid}`,\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tgot, err := unmarshalELFPackageNotesPayload([]byte(tt.payload))\n\t\t\ttt.wantErr(t, err)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.wantOSCPE, got.OSCPE)\n\t\t\trequire.Equal(t, tt.wantCorrect, got.CorrectOSCPE)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/elf_package_test.go",
    "content": "package binary\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata elfBinaryPackageNotes\n\t\twant     string\n\t}{\n\t\t{\n\t\t\tname: \"elf-binary-package-cataloger\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"github.com/anchore/syft\",\n\t\t\t\tVersion: \"v0.1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tSystem: \"syftsys\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:generic/syftsys/github.com%2Fanchore%2Fsyft@v0.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"elf binary package short name\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"go.opencensus.io\",\n\t\t\t\tVersion: \"v0.23.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tSystem: \"syftsys\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:generic/syftsys/go.opencensus.io@v0.23.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"no info\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType: \"rpm\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:rpm/test@1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"with system\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:   \"rpm\",\n\t\t\t\t\tSystem: \"system\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:rpm/system/test@1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"with os info preferred\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:      \"rpm\",\n\t\t\t\t\tOS:        \"fedora\",\n\t\t\t\t\tOSVersion: \"2.0\",\n\t\t\t\t\tOSCPE:     \"cpe:/o:someone:redhat:3.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:rpm/fedora/test@1.0?distro=fedora-2.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"with os info fallback to CPE parsing (missing version)\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:  \"rpm\",\n\t\t\t\t\tOS:    \"fedora\",\n\t\t\t\t\tOSCPE: \"cpe:/o:someone:redhat:3.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:rpm/redhat/test@1.0?distro=redhat-3.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"with os info preferred (missing OS)\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:      \"rpm\",\n\t\t\t\t\tOSVersion: \"2.0\",\n\t\t\t\t\tOSCPE:     \"cpe:/o:someone:redhat:3.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:rpm/redhat/test@1.0?distro=redhat-3.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing type\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tSystem: \"system\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:generic/system/test@1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"bad or missing OSCPE data cannot be parsed allows for correct string\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"test\",\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tSystem: \"system\",\n\t\t\t\t\tOSCPE:  \"%$#*(#*@&$(\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:generic/system/test@1.0\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.want, elfPackageURL(test.metadata))\n\t\t})\n\t}\n}\n\nfunc Test_newELFPackage(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata elfBinaryPackageNotes\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"elf-binary-package-cataloger\",\n\t\t\tmetadata: elfBinaryPackageNotes{\n\t\t\t\tName:    \"syfttestfixture\",\n\t\t\t\tVersion: \"0.01\",\n\t\t\t\tPURL:    \"pkg:generic/syftsys/syfttestfixture@0.01\",\n\t\t\t\tCPE:     \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\",\n\t\t\t\tELFBinaryPackageNoteJSONPayload: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:   \"binary\",\n\t\t\t\t\tSystem: \"syftsys\",\n\t\t\t\t},\n\t\t\t},\n\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"syfttestfixture\",\n\t\t\t\tVersion: \"0.01\",\n\t\t\t\tType:    \"binary\",\n\t\t\t\tPURL:    \"pkg:generic/syftsys/syfttestfixture@0.01\",\n\t\t\t\tMetadata: pkg.ELFBinaryPackageNoteJSONPayload{\n\t\t\t\t\tType:   \"binary\",\n\t\t\t\t\tSystem: \"syftsys\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := newELFPackage(ctx, test.metadata, file.NewLocationSet())\n\t\t\tif diff := cmp.Diff(test.expected, actual, cmpopts.IgnoreFields(pkg.Package{}, \"id\"), cmpopts.IgnoreUnexported(pkg.Package{}, file.LocationSet{}, pkg.LicenseSet{})); diff != \"\" {\n\t\t\t\tt.Errorf(\"newELFPackage() mismatch (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/cli.go",
    "content": "package cli\n\nimport (\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/cli/commands\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\n// list all managed binaries (in ./bin, organized by 'name-version/platform/binary')\n//\t\tmanager list binaries\n\n// list all managed snippets (in ./snippets, same organization as ./bin: 'name-version/platform/binary' where each bin is a snippet)\n//\t\tmanager list snippets\n\n// download all binaries (to ./bin)\n//\t\tmanager download [--name <name>] [--version <version>]\n\n// capture snippet from a binary identified by offset\n//\t\tmanager capture snippet --binary <binary> --offset <offset> --length <length>\n\nfunc New() (*cobra.Command, error) {\n\tcfgP, err := config.Read()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcfg := *cfgP\n\n\troot := commands.Root(cfg)\n\n\troot.AddCommand(\n\t\tcommands.List(cfg),\n\t\tcommands.Download(cfg),\n\t\tcommands.AddSnippet(cfg),\n\t\tcommands.WriteSnippet(cfg),\n\t)\n\n\treturn root, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/commands/add_snippet.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/anmitsu/go-shlex\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/ui\"\n)\n\nfunc AddSnippet(appConfig config.Application) *cobra.Command {\n\tvar binaryPath, searchPattern string\n\tvar length, prefixLength int\n\n\tcmd := &cobra.Command{\n\t\tUse:   \"add-snippet\",\n\t\tShort: \"capture snippets from binaries\",\n\t\tArgs:  cobra.NoArgs,\n\t\tPreRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\tcandidates, err := internal.ListAllBinaries(appConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to list binaries: %w\", err)\n\t\t\t}\n\n\t\t\t// launch the UI to pick a path\n\t\t\tvar binaryPaths []string\n\t\t\tfor _, k := range internal.NewLogicalEntryKeys(candidates) {\n\t\t\t\tinfo := candidates[k]\n\t\t\t\tif info.BinaryPath != \"\" {\n\t\t\t\t\tbinaryPaths = append(binaryPaths, info.BinaryPath)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbinaryPath, err = ui.PromptSelectBinary(binaryPaths)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn nil\n\t\t},\n\t\tRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\tname, version, _, err := inferInfoFromBinaryPath(appConfig, binaryPath)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to infer name and version from binary path: %w\", err)\n\t\t\t}\n\n\t\t\tif searchPattern == \"\" {\n\t\t\t\tsearchPattern = strings.ReplaceAll(version, \".\", `\\\\.`)\n\t\t\t}\n\n\t\t\treturn runAddSnippet(binaryPath, name, version, searchPattern, length, prefixLength)\n\t\t},\n\t}\n\n\tcmd.Flags().StringVar(&searchPattern, \"search-for\", \"\", \"the pattern to search for in the binary (defaults to the version)\")\n\tcmd.Flags().IntVar(&length, \"length\", 100, \"the length of the snippet to capture\")\n\tcmd.Flags().IntVar(&prefixLength, \"prefix-length\", 20, \"number of bytes before the search hit to capture\")\n\n\treturn cmd\n}\n\nfunc runAddSnippet(binaryPath, name, version, searchPattern string, length, prefixLength int) error {\n\t// invoke ./capture-snippet.sh <path-to-binary> <version> [--search-for <pattern>] [--length <length>] [--prefix-length <prefix_length>]\"\n\n\tcmd := exec.Command(\"./capture-snippet.sh\", binaryPath, version)\n\n\tvar args []string\n\tif searchPattern != \"\" {\n\t\targs = append(args, \"--search-for\", searchPattern)\n\t}\n\tif name != \"\" {\n\t\targs = append(args, \"--group\", name)\n\t}\n\tif length > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--length %d\", length))\n\t}\n\tif prefixLength > 0 {\n\t\targs = append(args, fmt.Sprintf(\"--prefix-length %d\", prefixLength))\n\t}\n\n\tvar err error\n\targs, err = shlex.Split(strings.Join(args, \" \"), true)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse arguments: %w\", err)\n\t}\n\tcmd.Args = append(cmd.Args, args...)\n\n\tfmt.Printf(\"running: %s\\n\", strings.Join(cmd.Args, \" \"))\n\n\tcmd.Stdout = os.Stdout\n\tcmd.Stderr = os.Stderr\n\tcmd.Stdin = os.Stdin\n\n\tif err := cmd.Start(); err != nil {\n\t\treturn fmt.Errorf(\"failed to start command: %w\", err)\n\t}\n\n\tif err := cmd.Wait(); err != nil {\n\t\treturn fmt.Errorf(\"command execution failed: %w\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/commands/download.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc Download(appConfig config.Application) *cobra.Command {\n\tvar configs []config.BinaryFromImage\n\n\tvar skipSnippets bool\n\n\tcmd := &cobra.Command{\n\t\tUse:   \"download\",\n\t\tShort: \"download binaries [name@version ...]\",\n\t\tPreRunE: func(_ *cobra.Command, args []string) error {\n\t\t\tif len(args) > 0 {\n\t\t\t\tfor _, arg := range args {\n\t\t\t\t\tbinaryFromImageCfg := appConfig.GetBinaryFromImage(arg, \"\")\n\t\t\t\t\tif binaryFromImageCfg == nil {\n\t\t\t\t\t\treturn fmt.Errorf(\"no config found for %q\", arg)\n\t\t\t\t\t}\n\t\t\t\t\tconfigs = append(configs, *binaryFromImageCfg)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconfigs = appConfig.FromImages\n\t\t\t}\n\n\t\t\tif skipSnippets {\n\t\t\t\tvar err error\n\t\t\t\tconfigs, err = configsWithoutSnippets(appConfig, configs)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nil\n\t\t},\n\t\tRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\tfor _, binaryFromImageCfg := range configs {\n\t\t\t\tif err := internal.DownloadFromImage(appConfig.DownloadPath, binaryFromImageCfg); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(configs) == 0 {\n\t\t\t\tfmt.Println(\"no binaries to download\")\n\t\t\t}\n\n\t\t\treturn nil\n\t\t},\n\t}\n\n\tcmd.Flags().BoolVarP(&skipSnippets, \"skip-if-covered-by-snippet\", \"s\", false, \"skip downloading entries already covered by snippets\")\n\n\treturn cmd\n}\n\nfunc configsWithoutSnippets(appConfig config.Application, configs []config.BinaryFromImage) ([]config.BinaryFromImage, error) {\n\tentries, err := internal.ListAllEntries(appConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar filtered []config.BinaryFromImage\n\n\tfor _, cfg := range configs {\n\t\tif entries.BinaryFromImageHasSnippet(cfg) {\n\t\t\tcontinue\n\t\t}\n\t\tfiltered = append(filtered, cfg)\n\t}\n\n\treturn filtered, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/commands/list.go",
    "content": "package commands\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/charmbracelet/lipgloss\"\n\t\"github.com/jedib0t/go-pretty/v6/table\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc List(appConfig config.Application) *cobra.Command {\n\tvar showPaths bool\n\n\tcmd := &cobra.Command{\n\t\tUse:   \"list\",\n\t\tShort: \"list managed binaries and managed/unmanaged snippets\",\n\t\tArgs:  cobra.NoArgs,\n\t\tRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\treturn runList(appConfig, showPaths)\n\t\t},\n\t}\n\n\tcmd.Flags().BoolVarP(&showPaths, \"show-paths\", \"p\", false, \"show paths to binaries and snippets\")\n\n\treturn cmd\n}\n\nfunc runList(appConfig config.Application, showPaths bool) error {\n\tmaterial, err := internal.ListAllEntries(appConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treport := renderCatalogerListTable(material, showPaths)\n\n\treport += \"\\n Legend:\\n\"\n\treport += errorStyle.Render(\"   !!  indicates there is no binary or snippet for a configured entry\") + \"\\n\"\n\treport += warningStyle.Render(\"   !   indicates that the binary is managed but there is no snippet\") + \"\\n\"\n\n\tfmt.Println(report)\n\n\treturn nil\n}\n\nconst yes = \"yes\"\n\nfunc renderCatalogerListTable(material map[internal.LogicalEntryKey]internal.EntryInfo, showPaths bool) string {\n\tt := table.NewWriter()\n\tt.SetStyle(table.StyleLight)\n\tt.AppendHeader(table.Row{\"Group\", \"Version\", \"Platform\", \"Name\", \"Configured?\", \"Binary\", \"Snippet\"})\n\n\tkeys := internal.NewLogicalEntryKeys(material)\n\n\tfor _, k := range keys {\n\t\tinfo := material[k]\n\n\t\tisConfigured := \"\"\n\t\tif info.IsConfigured {\n\t\t\tisConfigured = yes\n\t\t}\n\n\t\tbin := \"\"\n\t\tsnippet := \"\"\n\t\tif showPaths {\n\t\t\tbin = info.BinaryPath\n\t\t\tsnippet = info.SnippetPath\n\t\t} else {\n\t\t\tif info.BinaryPath != \"\" {\n\t\t\t\tbin = yes\n\t\t\t}\n\n\t\t\tif info.SnippetPath != \"\" {\n\t\t\t\tsnippet = yes\n\t\t\t}\n\t\t}\n\n\t\tvar state displayState\n\t\tif snippet == \"\" {\n\t\t\tif bin == \"\" {\n\t\t\t\tstate = displayStateError\n\t\t\t} else {\n\t\t\t\tstate = displayStateWarning\n\t\t\t}\n\t\t}\n\n\t\tt.AppendRow(table.Row{\n\t\t\trenderCell(k.OrgName, state, \"!\"),\n\t\t\trenderCell(k.Version, state),\n\t\t\trenderCell(displayPlatform(k.Platform), state),\n\t\t\trenderCell(k.Filename, state),\n\t\t\trenderCell(isConfigured, state),\n\t\t\trenderCell(bin, state),\n\t\t\trenderCell(snippet, state),\n\t\t})\n\t}\n\n\treturn t.Render()\n}\n\ntype displayState string\n\nconst (\n\tdisplayStateError   displayState = \"error\"\n\tdisplayStateWarning displayState = \"warning\"\n)\n\nvar (\n\terrorStyle   = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color(\"9\"))\n\twarningStyle = lipgloss.NewStyle().Foreground(lipgloss.Color(\"11\"))\n\tstdStyle     = lipgloss.NewStyle()\n)\n\nfunc renderCell(value string, state displayState, hints ...string) string {\n\thint := strings.Join(hints, \"\")\n\tvar prefix string\n\tswitch state {\n\tcase displayStateError:\n\t\treturn errorStyle.Render(strings.Repeat(hint, 2) + value)\n\tcase displayStateWarning:\n\t\tif hint != \"\" {\n\t\t\tprefix = \" \"\n\t\t}\n\t\treturn warningStyle.Render(hint + prefix + value)\n\t}\n\tif hint != \"\" {\n\t\tprefix = \"  \"\n\t}\n\treturn stdStyle.Render(prefix + value)\n}\n\nfunc displayPlatform(platform string) string {\n\treturn strings.ReplaceAll(platform, \"-\", \"/\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/commands/root.go",
    "content": "package commands\n\nimport (\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc Root(_ config.Application) *cobra.Command {\n\treturn &cobra.Command{\n\t\tUse:   \"manager\",\n\t\tShort: \"manager is a tool for managing binaries and snippets\",\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/cli/commands/write_snippet.go",
    "content": "package commands\n\nimport (\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"debug/pe\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/spf13/cobra\"\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc WriteSnippet(appConfig config.Application) *cobra.Command {\n\tvar offset, length int\n\tvar name, version string\n\tvar binaryPath string\n\n\tcmd := &cobra.Command{\n\t\tUse:   \"write-snippet [binary]\",\n\t\tShort: \"capture snippets from binaries\",\n\t\tArgs:  cobra.ExactArgs(1),\n\t\tPreRunE: func(_ *cobra.Command, args []string) error {\n\t\t\tif len(args) == 0 && (name != \"\" || version != \"\") {\n\t\t\t\treturn fmt.Errorf(\"cannot provide name or version without a binary path\")\n\t\t\t}\n\n\t\t\tbinaryPath = args[0]\n\t\t\tif _, err := os.Stat(binaryPath); err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to stat %q: %w\", binaryPath, err)\n\t\t\t}\n\n\t\t\treturn nil\n\t\t},\n\t\tRunE: func(_ *cobra.Command, _ []string) error {\n\t\t\tplatform, err := getPlatform(binaryPath)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to get platform: %w\", err)\n\t\t\t}\n\n\t\t\tsnippetPath, err := getSnippetPath(appConfig, binaryPath, name, version, platform)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to get snippet path: %w\", err)\n\t\t\t}\n\n\t\t\treturn runWriteSnippet(binaryPath, offset, length, snippetPath)\n\t\t},\n\t}\n\n\tcmd.Flags().IntVar(&offset, \"offset\", -1, \"the offset in the binary to start the snippet\")\n\tcmd.Flags().IntVar(&length, \"length\", 100, \"the length of the snippet to capture\")\n\tcmd.Flags().StringVar(&name, \"name\", \"\", \"the name of the snippet\")\n\tcmd.Flags().StringVar(&version, \"version\", \"\", \"the version of the snippet\")\n\n\treturn cmd\n}\n\nfunc runWriteSnippet(binaryPath string, offset, length int, snippetPath string) error {\n\tf, err := os.Open(binaryPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to open binary %q: %w\", binaryPath, err)\n\t}\n\n\tn, err := f.Seek(int64(offset), io.SeekStart)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to seek to offset %d: %w\", offset, err)\n\t}\n\n\tif n != int64(offset) {\n\t\treturn fmt.Errorf(\"unexpectd to seek value: %d != %d\", offset, n)\n\t}\n\n\tbuf := make([]byte, length)\n\tn2, err := f.Read(buf)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to read %d bytes: %w\", length, err)\n\t}\n\n\tif n2 != length {\n\t\treturn fmt.Errorf(\"unexpected read length: %d != %d\", length, n2)\n\t}\n\n\tfileDigest, err := internal.Sha256SumFile(f)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmetadata := internal.SnippetMetadata{\n\t\tName:          filepath.Base(binaryPath),\n\t\tOffset:        offset,\n\t\tLength:        length,\n\t\tSnippetSha256: internal.Sha256SumBytes(buf),\n\t\tFileSha256:    fileDigest,\n\t}\n\n\tmetadataBytes, err := yaml.Marshal(metadata)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to marshal metadata: %w\", err)\n\t}\n\n\tsplitter := []byte(\"\\n### byte snippet to follow ###\\n\")\n\n\tvar finalBuf []byte\n\tfinalBuf = append(finalBuf, metadataBytes...)\n\tfinalBuf = append(finalBuf, splitter...)\n\tfinalBuf = append(finalBuf, buf...)\n\n\tif err := os.MkdirAll(filepath.Dir(snippetPath), 0755); err != nil {\n\t\treturn fmt.Errorf(\"unable to create destination directory: %w\", err)\n\t}\n\n\tif err := os.WriteFile(snippetPath, finalBuf, 0600); err != nil {\n\t\treturn fmt.Errorf(\"unable to write snippet: %w\", err)\n\t}\n\n\tfmt.Printf(\"wrote snippet to %q\\n\", snippetPath)\n\n\treturn nil\n}\n\nfunc getSnippetPath(appConfig config.Application, binaryPath string, name, version, platform string) (string, error) {\n\tbinFilename := filepath.Base(binaryPath)\n\tplatform = config.PlatformAsValue(platform)\n\n\t// if all values provided, use them\n\tif name != \"\" && version != \"\" && platform != \"\" {\n\t\treturn filepath.Join(appConfig.SnippetPath, name, version, platform, binFilename), nil\n\t}\n\n\t// otherwise, try to infer them from the existing binary path\n\tname, version, platform, err := inferInfoFromBinaryPath(appConfig, binaryPath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn filepath.Join(appConfig.SnippetPath, name, version, platform, binFilename), nil\n}\n\nfunc inferInfoFromBinaryPath(appConfig config.Application, binaryPath string) (string, string, string, error) {\n\trelativePath, err := filepath.Rel(appConfig.DownloadPath, binaryPath)\n\tif err != nil {\n\t\treturn \"\", \"\", \"\", fmt.Errorf(\"unable to get relative path: %w\", err)\n\t}\n\n\t// otherwise, try to infer them from the existing binary path\n\titems := internal.SplitFilepath(relativePath)\n\tif len(items) != 4 {\n\t\treturn \"\", \"\", \"\", fmt.Errorf(\"too few fields: %q\", binaryPath)\n\t}\n\n\tname := items[0]\n\tversion := items[1]\n\tplatform := items[2]\n\n\treturn name, version, platform, nil\n}\n\n// getPlatform will return <os>-<arch> for the given binary path, where os can be \"linux\", \"darwin\", \"windows\",\n// and arch can be \"amd64\", \"arm64\", \"arm\", etc.\nfunc getPlatform(binaryPath string) (string, error) {\n\tf, err := os.Open(binaryPath)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to open binary %q: %w\", binaryPath, err)\n\t}\n\n\telfPlatform := getPlatformElf(f)\n\tif elfPlatform != \"\" {\n\t\treturn elfPlatform, nil\n\t}\n\n\tmacPlatform := getPlatformMac(f)\n\tif macPlatform != \"\" {\n\t\treturn macPlatform, nil\n\t}\n\n\twinPlatform := getPlatformWindows(f)\n\tif winPlatform != \"\" {\n\t\treturn winPlatform, nil\n\t}\n\n\t// attempt to infer from the path. It is possible to see invalid-looking binaries that are still something\n\t// we'd like to detect.\n\titems := internal.SplitFilepath(binaryPath)\n\tif len(items) > 2 {\n\t\tcandidate := items[len(items)-2]\n\t\tif strings.Contains(candidate, \"linux\") || strings.Contains(candidate, \"darwin\") || strings.Contains(candidate, \"windows\") {\n\t\t\treturn candidate, nil\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"unable to determine platform for %q\", binaryPath)\n}\n\nconst (\n\tamd64 = \"amd64\"\n\tarm64 = \"arm64\"\n)\n\nfunc getPlatformElf(f *os.File) string {\n\telfFile, err := elf.NewFile(f)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tvar arch string\n\tswitch elfFile.Machine {\n\tcase elf.EM_X86_64:\n\t\tarch = amd64\n\tcase elf.EM_AARCH64:\n\t\tarch = arm64\n\t// TODO...\n\tdefault:\n\t\tarch = fmt.Sprintf(\"unknown-%x\", elfFile.Machine)\n\t}\n\n\treturn fmt.Sprintf(\"linux-%s\", arch)\n}\n\nfunc getPlatformMac(f *os.File) string {\n\tmachoFile, err := macho.NewFile(f)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tvar arch string\n\tswitch machoFile.Cpu {\n\tcase macho.CpuAmd64:\n\t\tarch = amd64\n\tcase macho.CpuArm64:\n\t\tarch = arm64\n\t// TODO...\n\tdefault:\n\t\tarch = fmt.Sprintf(\"unknown-%x\", machoFile.Cpu)\n\t}\n\n\treturn fmt.Sprintf(\"darwin-%s\", arch)\n}\n\nfunc getPlatformWindows(f *os.File) string {\n\tpeFile, err := pe.NewFile(f)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tvar arch string\n\tswitch peFile.Machine {\n\tcase pe.IMAGE_FILE_MACHINE_AMD64:\n\t\tarch = amd64\n\tcase pe.IMAGE_FILE_MACHINE_ARM64:\n\t\tarch = arm64\n\t// TODO...\n\tdefault:\n\t\tarch = fmt.Sprintf(\"unknown-%x\", peFile.Machine)\n\t}\n\n\treturn fmt.Sprintf(\"windows-%s\", arch)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/application.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/hashicorp/go-multierror\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"go.yaml.in/yaml/v3\"\n)\n\nconst Path = \"config.yaml\"\n\ntype Application struct {\n\tDownloadPath string            `yaml:\"download-path\"`\n\tSnippetPath  string            `yaml:\"snippet-path\"`\n\tFromImages   []BinaryFromImage `yaml:\"from-images\"`\n}\n\nfunc DefaultApplication() Application {\n\treturn Application{\n\t\tDownloadPath: \"bin\",\n\t}\n}\n\nfunc Read() (*Application, error) {\n\treturn read(Path)\n}\n\nfunc read(path string) (*Application, error) {\n\tappConfig := DefaultApplication()\n\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = yaml.Unmarshal(data, &appConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := appConfig.Validate(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &appConfig, nil\n}\n\nfunc (c Image) Key() string {\n\treturn fmt.Sprintf(\"%s:%s\", c.Reference, c.Platform)\n}\n\nfunc (c Application) Validate() error {\n\tset := strset.New()\n\tvar err error\n\tfor i, entry := range c.FromImages {\n\t\tkey := entry.Key()\n\n\t\tif set.Has(key) {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"duplicate entry %q\", entry))\n\t\t\tcontinue\n\t\t}\n\n\t\tset.Add(entry.Key())\n\n\t\tif len(entry.PathsInImage) > 1 && entry.GenericName == \"\" {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"specified multiple paths but no name for entry %d (%s)\", i+1, key))\n\t\t}\n\t\tif entry.Name() == \"\" {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing name for entry %d\", i+1))\n\t\t}\n\t\tif entry.Version == \"\" {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing version for entry %d\", i+1))\n\t\t}\n\t\tif len(entry.Images) == 0 {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing images for entry %d (%s)\", i+1, key))\n\t\t}\n\n\t\tvar imageSet = strset.New()\n\t\tfor j, image := range entry.Images {\n\t\t\timgKey := image.Key()\n\t\t\tif imageSet.Has(imgKey) {\n\t\t\t\terr = multierror.Append(err, fmt.Errorf(\"duplicate image %q for entry %d (%s)\", image.Key(), i+1, key))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\timageSet.Add(imgKey)\n\n\t\t\tif image.Reference == \"\" {\n\t\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing ref reference for entry %d (%s) image %d\", i+1, key, j+1))\n\t\t\t}\n\t\t\tif image.Platform == \"\" {\n\t\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing platform for entry %d (%s) image %d\", i+1, key, j+1))\n\t\t\t}\n\t\t}\n\t\tif len(entry.PathsInImage) == 0 {\n\t\t\terr = multierror.Append(err, fmt.Errorf(\"missing paths for entry %d (%s)\", i+1, key))\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (c Application) GetBinaryFromImage(name, version string) *BinaryFromImage {\n\tif strings.Contains(name, \"@\") && version == \"\" {\n\t\tparts := strings.Split(name, \"@\")\n\t\tname = parts[0]\n\t\tversion = parts[1]\n\t}\n\tfor _, entry := range c.FromImages {\n\t\tif entry.Name() == name && entry.Version == version {\n\t\t\treturn &entry\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (c Application) GetBinaryFromImageByPath(storePath string) *BinaryFromImage {\n\t// each key is the store path except for the root (e.g. bin or snippet)\n\tentryByStorePath := make(map[string]BinaryFromImage)\n\n\tfor _, entry := range c.FromImages {\n\t\tfor _, path := range entry.AllStorePaths(c.DownloadPath) {\n\t\t\tpathWithoutRoot := splitFilepath(path)[1:]\n\t\t\tentryByStorePath[filepath.Join(pathWithoutRoot...)] = entry\n\t\t}\n\t}\n\n\tpathWithoutRoot := filepath.Join(splitFilepath(storePath)[1:]...)\n\tif entry, ok := entryByStorePath[pathWithoutRoot]; ok {\n\t\treturn &entry\n\t}\n\n\treturn nil\n}\n\nfunc splitFilepath(path string) []string {\n\treturn strings.Split(path, string(filepath.Separator))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/application_test.go",
    "content": "package config\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestReadAndValidate(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\texpectErr bool\n\t}{\n\t\t{\n\t\t\tname: \"valid-1.yaml\",\n\t\t},\n\t\t{\n\t\t\tname: \"valid-2.yaml\",\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-implicit-name-collision.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-missing-version.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-missing-image.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-no-name.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-missing-image-platform.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-missing-image-ref.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-image-collision.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t\t{\n\t\t\tname:      \"bad-missing-paths.yaml\",\n\t\t\texpectErr: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tappConfig, err := read(filepath.Join(\"testdata\", \"app-configs\", tt.name))\n\t\t\tif tt.expectErr {\n\t\t\t\tassert.Error(t, err)\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\tassert.NotNil(t, appConfig)\n\t\t\t\tassert.NoError(t, appConfig.Validate())\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/binary_from_image.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/OneOfOne/xxhash\"\n\t\"go.yaml.in/yaml/v3\"\n)\n\ntype BinaryFromImage struct {\n\tGenericName string `yaml:\"name\"`\n\tVersion     string `yaml:\"version\"`\n\n\tImages       []Image  `yaml:\"images\"`\n\tPathsInImage []string `yaml:\"paths\"`\n}\n\ntype Image struct {\n\tReference string `yaml:\"ref\"`\n\tPlatform  string `yaml:\"platform\"`\n}\n\nfunc (c BinaryFromImage) Key() string {\n\treturn fmt.Sprintf(\"%s:%s\", c.Name(), c.Version)\n}\n\nfunc (c BinaryFromImage) Name() string {\n\tdisplayName := c.GenericName\n\tif displayName == \"\" {\n\t\tvar path string\n\t\tif len(c.PathsInImage) > 0 {\n\t\t\tpath = c.PathsInImage[0]\n\t\t}\n\t\tif path == \"\" {\n\t\t\treturn \"\"\n\t\t}\n\t\treturn filepath.Base(path)\n\t}\n\treturn displayName\n}\n\nfunc (c BinaryFromImage) AllStorePaths(dest string) []string {\n\tvar paths []string\n\tfor _, image := range c.Images {\n\t\tpaths = append(paths, c.AllStorePathsForImage(image, dest)...)\n\t}\n\treturn paths\n}\n\nfunc (c BinaryFromImage) AllStorePathsForImage(image Image, dest string) []string {\n\tvar paths []string\n\n\tplatform := PlatformAsValue(image.Platform)\n\tfor _, path := range c.PathsInImage {\n\t\tbase := filepath.Base(path)\n\t\tif path == \"\" {\n\t\t\tbase = \"\"\n\t\t}\n\t\tpaths = append(paths, filepath.Join(dest, c.Name(), c.Version, platform, base))\n\t}\n\n\treturn paths\n}\n\nfunc PlatformAsValue(platform string) string {\n\treturn strings.ReplaceAll(platform, \"/\", \"-\")\n}\n\nfunc (c BinaryFromImage) Digest() string {\n\tby, err := yaml.Marshal(c)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\thasher := xxhash.New64()\n\t_, _ = hasher.Write(by)\n\treturn fmt.Sprintf(\"%x\", hasher.Sum(nil))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/binary_from_image_test.go",
    "content": "package config\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestKey(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tbinary   BinaryFromImage\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tGenericName: \"test\",\n\t\t\t\tVersion:     \"1.0\",\n\t\t\t},\n\t\t\texpected: \"test:1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"binary name\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"test:1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"first binary name\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tVersion: \"1.0\",\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t\t\"path/to/nothing\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"test:1.0\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, tt.binary.Key())\n\t\t})\n\t}\n}\n\nfunc TestName(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tbinary   BinaryFromImage\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"given name\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tGenericName: \"given\",\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"given\",\n\t\t},\n\t\t{\n\t\t\tname: \"binary name\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"test\",\n\t\t},\n\t\t{\n\t\t\tname: \"first binary name\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t\t\"path/to/nothing\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"test\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, tt.binary.Name())\n\t\t})\n\t}\n}\n\nfunc TestAllStorePaths(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tbinary   BinaryFromImage\n\t\tdest     string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tGenericName: \"test\",\n\t\t\t\tVersion:     \"1.0\",\n\t\t\t\tImages: []Image{\n\t\t\t\t\t{\n\t\t\t\t\t\tReference: \"ref1\",\n\t\t\t\t\t\tPlatform:  \"platform1\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tReference: \"ref2\",\n\t\t\t\t\t\tPlatform:  \"platform2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test1\",\n\t\t\t\t\t\"path/to/test2\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tdest: \"dest\",\n\t\t\texpected: []string{\n\t\t\t\t\"dest/test/1.0/platform1/test1\",\n\t\t\t\t\"dest/test/1.0/platform1/test2\",\n\t\t\t\t\"dest/test/1.0/platform2/test1\",\n\t\t\t\t\"dest/test/1.0/platform2/test2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, tt.binary.AllStorePaths(tt.dest))\n\t\t})\n\t}\n}\n\nfunc TestPlatformAsValue(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tplatform string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"gocase\",\n\t\t\tplatform: \"platform/test\",\n\t\t\texpected: \"platform-test\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, PlatformAsValue(tt.platform))\n\t\t})\n\t}\n}\n\nfunc TestDigest(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tbinary   BinaryFromImage\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tbinary: BinaryFromImage{\n\t\t\t\tGenericName: \"test\",\n\t\t\t\tVersion:     \"1.0\",\n\t\t\t\tImages: []Image{\n\t\t\t\t\t{\n\t\t\t\t\t\tReference: \"ref\",\n\t\t\t\t\t\tPlatform:  \"platform\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"path/to/test\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"fc25c48e3d2f01e3\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expected, tt.binary.Digest())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-image-collision.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-implicit-name-collision.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: bash  # !important\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n\n  - version: 1.36.1 # !important\n    images:\n      - ref: bash:5.1.16@sha256:c7a903a541d8f5fe693cbe7f5ece18a1b6a03734c76092d2b153d7e98a964927\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/bash\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-missing-image-platform.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n    paths:\n      - /bin/[\n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-missing-image-ref.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - platform: linux/amd64\n    paths:\n      - /bin/[\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-missing-image.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    paths:\n      - /bin/[\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-missing-paths.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-missing-version.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - images:\n      - ref: bash:5.1.16@sha256:c7a903a541d8f5fe693cbe7f5ece18a1b6a03734c76092d2b153d7e98a964927\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/bash\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/bad-no-name.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n      - /bin/busybox\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/valid-1.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n\n  - version: 5.1.16\n    images:\n      - ref: bash:5.1.16@sha256:c7a903a541d8f5fe693cbe7f5ece18a1b6a03734c76092d2b153d7e98a964927\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/bash\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/config/testdata/app-configs/valid-2.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\nfrom-images:\n\n  - name: bash # !important\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n\n  - version: 5.1.16\n    images:\n      - ref: bash:5.1.16@sha256:c7a903a541d8f5fe693cbe7f5ece18a1b6a03734c76092d2b153d7e98a964927\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/bash\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/download_from_image.go",
    "content": "package internal\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/google/uuid\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/ui\"\n)\n\nconst digestFileSuffix = \".xxh64\"\n\nfunc DownloadFromImage(dest string, config config.BinaryFromImage) error {\n\tt := ui.Title{Name: config.Name(), Version: config.Version}\n\tt.Start()\n\n\thostPaths := config.AllStorePaths(dest)\n\tif allPathsExist(hostPaths) {\n\t\tif !isDownloadStale(config, hostPaths) {\n\t\t\tt.Skip(\"already exists\")\n\t\t\treturn nil\n\t\t}\n\t\tt.Update(\"stale, updating...\")\n\t}\n\n\tif err := pullDockerImages(config.Images); err != nil {\n\t\treturn err\n\t}\n\n\tif err := copyBinariesFromDockerImages(config, dest); err != nil {\n\t\treturn fmt.Errorf(\"failed to copy binary for %s@%s: %v\", config.Name(), config.Version, err)\n\t}\n\n\treturn nil\n}\n\nfunc isDownloadStale(config config.BinaryFromImage, binaryPaths []string) bool {\n\tcurrentDigest := config.Digest()\n\n\tfor _, path := range binaryPaths {\n\t\tdigestPath := path + digestFileSuffix\n\t\tif _, err := os.Stat(digestPath); err != nil {\n\t\t\t// missing a fingerprint file means the download is stale\n\t\t\treturn true\n\t\t}\n\n\t\twrittenDigest, err := os.ReadFile(digestPath)\n\t\tif err != nil {\n\t\t\t// missing a fingerprint file means the download is stale\n\t\t\treturn true\n\t\t}\n\n\t\tif string(writtenDigest) != currentDigest {\n\t\t\t// the fingerprint file does not match the current fingerprint, so the download is stale\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc allPathsExist(paths []string) bool {\n\tfor _, path := range paths {\n\t\tif _, err := os.Stat(path); err != nil {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc pullDockerImages(images []config.Image) error {\n\tfor _, image := range images {\n\t\tif err := pullDockerImage(image.Reference, image.Platform); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to pull image %s for platform %s: %v\", image.Reference, image.Platform, err)\n\t\t}\n\t}\n\treturn nil\n}\n\ntype imageInspect struct {\n\tOS           string `json:\"Os\"`\n\tArchitecture string `json:\"Architecture\"`\n}\n\nfunc (i imageInspect) Platform() string {\n\treturn fmt.Sprintf(\"%s/%s\", i.OS, i.Architecture)\n}\n\nfunc pullDockerImage(imageReference, platform string) error {\n\ta := ui.Action{Msg: fmt.Sprintf(\"pull image %s (%s)\", imageReference, platform)}\n\ta.Start()\n\n\tmatches, _, _ := checkArchitecturesMatch(imageReference, platform)\n\tif matches {\n\t\ta.Skip(fmt.Sprintf(\"docker image already exists %q\", imageReference))\n\t\treturn nil\n\t}\n\n\tcmd := exec.Command(\"docker\", \"pull\", \"--platform\", platform, imageReference)\n\terr := cmd.Run()\n\tif err != nil {\n\t\t// attach stderr to output message\n\t\tvar exitErr *exec.ExitError\n\t\tif errors.As(err, &exitErr) && len(exitErr.Stderr) > 0 {\n\t\t\terr = fmt.Errorf(\"pull failed: %w:\\n%s\", err, exitErr.Stderr)\n\t\t}\n\n\t\ta.Done(err)\n\t\treturn err\n\t}\n\n\tmatches, gotPlatform, err := checkArchitecturesMatch(imageReference, platform)\n\tif !matches && err == nil {\n\t\terr = fmt.Errorf(\"image %q pulled but does not match expected platform %q != %q\", imageReference, platform, gotPlatform)\n\t}\n\n\ta.Done(err)\n\n\treturn err\n}\n\nfunc checkArchitecturesMatch(imageReference, platform string) (bool, string, error) {\n\t// first check if the image exists locally\n\tcmd := exec.Command(\"docker\", \"image\", \"inspect\", imageReference)\n\tif err := cmd.Run(); err != nil {\n\t\treturn false, \"\", err\n\t}\n\n\t// prefer the manifest list for platform info — with Docker's containerd image store,\n\t// platform metadata lives on the manifest list entry, not in the image config.\n\tif found, err := platformInManifest(imageReference, platform); err == nil {\n\t\treturn found, platform, nil\n\t}\n\n\t// fall back to image config for older Docker daemons that don't support \"docker manifest inspect\"\n\tgotPlatform, err := platformFromImageInspect(imageReference)\n\tif err != nil {\n\t\treturn false, \"\", err\n\t}\n\n\treturn gotPlatform == platform, gotPlatform, nil\n}\n\nfunc platformFromImageInspect(imageReference string) (string, error) {\n\tcmd := exec.Command(\"docker\", \"image\", \"inspect\", imageReference)\n\tout, err := cmd.CombinedOutput()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar inspect []imageInspect\n\tif err := json.Unmarshal(out, &inspect); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to unmarshal image inspect: %w\", err)\n\t}\n\n\tif len(inspect) != 1 {\n\t\treturn \"\", fmt.Errorf(\"expected 1 image inspect, got %d\", len(inspect))\n\t}\n\n\treturn inspect[0].Platform(), nil\n}\n\ntype manifestList struct {\n\tManifests []manifestEntry `json:\"manifests\"`\n}\n\ntype manifestEntry struct {\n\tPlatform manifestPlatform `json:\"platform\"`\n}\n\ntype manifestPlatform struct {\n\tArchitecture string `json:\"architecture\"`\n\tOS           string `json:\"os\"`\n}\n\n// platformInManifest checks whether the wanted platform is available in the image's manifest list.\n// With Docker's containerd image store, all images are distributed via manifest lists (indexes),\n// and platform metadata may only be on the index entry — not in the image config that\n// \"docker image inspect\" reads. \"docker manifest inspect\" reads the index directly.\nfunc platformInManifest(imageReference, wantPlatform string) (bool, error) {\n\tcmd := exec.Command(\"docker\", \"manifest\", \"inspect\", imageReference)\n\tout, err := cmd.CombinedOutput()\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"manifest inspect failed: %w\", err)\n\t}\n\n\tvar ml manifestList\n\tif err := json.Unmarshal(out, &ml); err != nil {\n\t\treturn false, fmt.Errorf(\"unable to unmarshal manifest: %w\", err)\n\t}\n\n\tfor _, m := range ml.Manifests {\n\t\tp := fmt.Sprintf(\"%s/%s\", m.Platform.OS, m.Platform.Architecture)\n\t\tif p == wantPlatform {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\nfunc copyBinariesFromDockerImages(config config.BinaryFromImage, destination string) (err error) {\n\tfor _, image := range config.Images {\n\t\tif err := copyBinariesFromDockerImage(config, destination, image); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc copyBinariesFromDockerImage(config config.BinaryFromImage, destination string, image config.Image) (err error) {\n\tcontainerName := fmt.Sprintf(\"%s-%s-%s\", config.Name(), strings.ReplaceAll(config.Version, \"+\", \"-\"), uuid.New().String())\n\n\tcmd := exec.Command(\"docker\", \"create\", \"--name\", containerName, image.Reference)\n\tif err = cmd.Run(); err != nil {\n\t\t// attach stderr to output message\n\t\tvar exitErr *exec.ExitError\n\t\tif errors.As(err, &exitErr) && len(exitErr.Stderr) > 0 {\n\t\t\terr = fmt.Errorf(\"%w:\\n%s\", err, exitErr.Stderr)\n\t\t}\n\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\tcmd := exec.Command(\"docker\", \"rm\", containerName)\n\t\tcmd.Run() //nolint:errcheck\n\t}()\n\n\tfor i, destinationPath := range config.AllStorePathsForImage(image, destination) {\n\t\tpath := config.PathsInImage[i]\n\t\tif err := copyBinaryFromContainer(containerName, path, destinationPath, config.Digest()); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc copyBinaryFromContainer(containerName, containerPath, destinationPath, digest string) (err error) {\n\ta := ui.Action{Msg: fmt.Sprintf(\"extract %s\", containerPath)}\n\ta.Start()\n\n\tdefer func() {\n\t\ta.Done(err)\n\t}()\n\n\tif err := os.MkdirAll(filepath.Dir(destinationPath), 0755); err != nil {\n\t\treturn err\n\t}\n\n\tcmd := exec.Command(\"docker\", \"cp\", fmt.Sprintf(\"%s:%s\", containerName, containerPath), destinationPath) //nolint:gosec\n\t// reason for gosec exception: this is for processing test fixtures only, not used in production\n\tif err := cmd.Run(); err != nil {\n\t\t// attach stderr to output message\n\t\tvar exitErr *exec.ExitError\n\t\tif errors.As(err, &exitErr) && len(exitErr.Stderr) > 0 {\n\t\t\terr = fmt.Errorf(\"%w:\\n%s\", err, exitErr.Stderr)\n\t\t}\n\n\t\treturn err\n\t}\n\n\t// ensure permissions are 600 for destination\n\tif err := os.Chmod(destinationPath, 0600); err != nil {\n\t\treturn fmt.Errorf(\"unable to set permissions on file %q: %w\", destinationPath, err)\n\t}\n\n\t// capture digest file\n\tdigestPath := destinationPath + digestFileSuffix\n\tif err := os.WriteFile(digestPath, []byte(digest), 0600); err != nil {\n\t\treturn fmt.Errorf(\"unable to write digest file: %w\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/download_from_image_test.go",
    "content": "package internal\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc TestIsDownloadStale(t *testing.T) {\n\n\tcases := []struct {\n\t\tname     string\n\t\tdigest   string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:     \"no digest\",\n\t\t\tdigest:   \"\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"digest matches\",\n\t\t\t// this is the digest for config in the loop body\n\t\t\tdigest:   \"c9c8007f9c55c2f1\",\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"digest does not match\",\n\t\t\tdigest:   \"bogus\",\n\t\t\texpected: true,\n\t\t},\n\t}\n\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tbinaryPath := filepath.Join(t.TempDir(), \"binary\")\n\t\t\tfh, err := os.Create(binaryPath + digestFileSuffix)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfh.Write([]byte(tt.digest))\n\t\t\trequire.NoError(t, fh.Close())\n\n\t\t\tcfg := config.BinaryFromImage{\n\t\t\t\tGenericName: \"name\",\n\t\t\t\tVersion:     \"version\",\n\t\t\t\tImages: []config.Image{{\n\t\t\t\t\tReference: \"ref\",\n\t\t\t\t\tPlatform:  \"platform\",\n\t\t\t\t}},\n\t\t\t\tPathsInImage: []string{\"path\"},\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.expected, isDownloadStale(cfg, []string{binaryPath}))\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/list_entries.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"iter\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"golang.org/x/exp/maps\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\ntype Entries map[LogicalEntryKey]EntryInfo\n\ntype EntryInfo struct {\n\tIsConfigured bool\n\tBinaryPath   string\n\tSnippetPath  string\n}\n\ntype LogicalEntryKey struct {\n\tOrgName  string\n\tVersion  string\n\tPlatform string\n\tFilename string\n}\n\nfunc (k LogicalEntryKey) Path() string {\n\treturn fmt.Sprintf(\"%s/%s/%s/%s\", k.OrgName, k.Version, k.Platform, k.Filename)\n}\n\ntype LogicalEntryKeys []LogicalEntryKey\n\nfunc (l LogicalEntryKeys) Len() int {\n\treturn len(l)\n}\n\nfunc (l LogicalEntryKeys) Less(i, j int) bool {\n\tif l[i].OrgName == l[j].OrgName {\n\t\tif l[i].Version == l[j].Version {\n\t\t\tif l[i].Platform == l[j].Platform {\n\t\t\t\treturn l[i].Filename < l[j].Filename\n\t\t\t}\n\t\t\treturn l[i].Platform < l[j].Platform\n\t\t}\n\t\treturn l[i].Version < l[j].Version\n\t}\n\treturn l[i].OrgName < l[j].OrgName\n}\n\nfunc (l LogicalEntryKeys) Swap(i, j int) {\n\tl[i], l[j] = l[j], l[i]\n}\n\nfunc NewLogicalEntryKeys(m map[LogicalEntryKey]EntryInfo) LogicalEntryKeys {\n\tvar keys LogicalEntryKeys\n\tfor k := range m {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Sort(keys)\n\treturn keys\n}\n\nfunc ListAllBinaries(appConfig config.Application) (Entries, error) {\n\tbinaries, err := allFilePaths(appConfig.DownloadPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to list binaries: %w\", err)\n\t}\n\n\tcases := make(map[LogicalEntryKey]EntryInfo)\n\tfor _, storePath := range binaries {\n\t\tisConfigured := appConfig.GetBinaryFromImageByPath(storePath) != nil\n\n\t\trelativePath, err := filepath.Rel(appConfig.DownloadPath, storePath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get relative path for %q: %w\", storePath, err)\n\t\t}\n\n\t\tkey, err := getLogicalKey(relativePath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get logical key for binary %q: %w\", storePath, err)\n\t\t}\n\t\tcases[*key] = EntryInfo{\n\t\t\tIsConfigured: isConfigured,\n\t\t\tBinaryPath:   storePath,\n\t\t}\n\t}\n\n\treturn cases, nil\n}\n\nfunc ListAllEntries(appConfig config.Application) (Entries, error) {\n\tsnippets, err := allFilePaths(appConfig.SnippetPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to list snippets: %w\", err)\n\t}\n\n\tcases, err := ListAllBinaries(appConfig)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to list binaries: %w\", err)\n\t}\n\n\t// anything configured that isn't in the binaries list?\n\tfor _, cfg := range appConfig.FromImages {\n\t\tfor _, image := range cfg.Images {\n\t\t\tfor _, path := range cfg.AllStorePathsForImage(image, appConfig.DownloadPath) {\n\t\t\t\tkey := newLogicalEntryForImage(cfg, image, path)\n\t\t\t\tif _, ok := cases[key]; ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tcases[key] = EntryInfo{\n\t\t\t\t\tIsConfigured: true,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// correlate snippets to existing binaries and configurations (and add unmanaged ones)\n\tfor _, storePath := range snippets {\n\t\trelativePath, err := filepath.Rel(appConfig.SnippetPath, storePath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get relative path for %q: %w\", storePath, err)\n\t\t}\n\t\tkey, err := getLogicalKey(relativePath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get logical key for snippet %q: %w\", storePath, err)\n\t\t}\n\n\t\tif v, ok := cases[*key]; ok {\n\t\t\tv.SnippetPath = storePath\n\t\t\tcases[*key] = v\n\n\t\t\tcontinue\n\t\t}\n\n\t\tcases[*key] = EntryInfo{\n\t\t\tIsConfigured: false,\n\t\t\tSnippetPath:  storePath,\n\t\t}\n\t}\n\n\treturn cases, nil\n}\n\nfunc newLogicalEntryForImage(cfg config.BinaryFromImage, image config.Image, storePath string) LogicalEntryKey {\n\treturn LogicalEntryKey{\n\t\tOrgName:  cfg.Name(),\n\t\tVersion:  cfg.Version,\n\t\tPlatform: config.PlatformAsValue(image.Platform),\n\t\tFilename: filepath.Base(storePath),\n\t}\n}\n\nfunc getLogicalKey(managedBinaryPath string) (*LogicalEntryKey, error) {\n\t// infer the logical key from the path alone: name/version/platform/filename\n\n\titems := SplitFilepath(managedBinaryPath)\n\tif len(items) < 4 {\n\t\treturn nil, fmt.Errorf(\"invalid managed binary path: %q\", managedBinaryPath)\n\t}\n\n\treturn &LogicalEntryKey{\n\t\tOrgName:  items[0],\n\t\tVersion:  items[1],\n\t\tPlatform: items[2],\n\t\tFilename: filepath.Join(items[3:]...),\n\t}, nil\n}\n\nfunc allFilePaths(root string) ([]string, error) {\n\tvar paths []string\n\terr := filepath.Walk(root, func(path string, info os.FileInfo, _ error) error {\n\t\tif info != nil && !info.IsDir() && !strings.HasSuffix(path, digestFileSuffix) && !strings.HasSuffix(path, \".DS_Store\") {\n\t\t\tpaths = append(paths, path)\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn paths, nil\n}\n\nfunc (e Entries) BinaryFromImageHasSnippet(cfg config.BinaryFromImage) bool {\n\t// all paths for all images must have snippets to return true\n\tfor _, image := range cfg.Images {\n\t\tfor _, storePath := range cfg.AllStorePathsForImage(image, \"\") {\n\t\t\tkey := newLogicalEntryForImage(cfg, image, storePath)\n\t\t\tif v, ok := e[key]; ok {\n\t\t\t\tif v.SnippetPath == \"\" {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (e Entries) Sorted() iter.Seq2[LogicalEntryKey, EntryInfo] {\n\tkeys := maps.Keys(e)\n\tslices.SortFunc(keys, func(a, b LogicalEntryKey) int {\n\t\treturn strings.Compare(a.Path(), b.Path())\n\t})\n\treturn func(yield func(LogicalEntryKey, EntryInfo) bool) {\n\t\tfor _, k := range keys {\n\t\t\tif !yield(k, e[k]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/list_entries_test.go",
    "content": "package internal\n\nimport (\n\t\"path/filepath\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\nfunc TestSortingLogicalEntryKeys(t *testing.T) {\n\tkeys := LogicalEntryKeys{\n\t\t{OrgName: \"Org1\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileB\"},\n\t\t{OrgName: \"Org1\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileA\"},\n\t\t{OrgName: \"Org2\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileA\"},\n\t\t{OrgName: \"Org1\", Version: \"1.1\", Platform: \"Linux\", Filename: \"fileA\"},\n\t}\n\n\texpected := LogicalEntryKeys{\n\t\t{OrgName: \"Org1\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileA\"},\n\t\t{OrgName: \"Org1\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileB\"},\n\t\t{OrgName: \"Org1\", Version: \"1.1\", Platform: \"Linux\", Filename: \"fileA\"},\n\t\t{OrgName: \"Org2\", Version: \"1.0\", Platform: \"Linux\", Filename: \"fileA\"},\n\t}\n\n\tsort.Sort(keys)\n\n\tassert.Equal(t, expected, keys)\n}\n\nfunc TestListAllBinaries(t *testing.T) {\n\n\tappConfig := config.Application{\n\t\tDownloadPath: filepath.Join(\"testdata\", \"bin\"),\n\t\tSnippetPath:  filepath.Join(\"testdata\", \"snippets\"),\n\t\tFromImages: []config.BinaryFromImage{\n\t\t\t{\n\t\t\t\tVersion: \"1.3.6\",\n\t\t\t\tImages: []config.Image{\n\t\t\t\t\t{\n\t\t\t\t\t\tReference: \"ref-1\",\n\t\t\t\t\t\tPlatform:  \"linux/amd64\",\n\t\t\t\t\t},\n\t\t\t\t\t// this makes it not configured\n\t\t\t\t\t//{\n\t\t\t\t\t//\tReference: \"ref-2\",\n\t\t\t\t\t//\tPlatform:  \"linux/arm64\",\n\t\t\t\t\t//},\n\t\t\t\t},\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"/usr/local/bin/busybox\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tentries, err := ListAllBinaries(appConfig)\n\n\trequire.NoError(t, err)\n\trequire.Len(t, entries, 2)\n\n\tassert.Equal(t,\n\t\tEntries{\n\t\t\tLogicalEntryKey{OrgName: \"busybox\", Version: \"1.3.6\", Platform: \"linux-amd64\", Filename: \"busybox\"}: EntryInfo{IsConfigured: true, BinaryPath: \"testdata/bin/busybox/1.3.6/linux-amd64/busybox\", SnippetPath: \"\"},\n\t\t\tLogicalEntryKey{OrgName: \"busybox\", Version: \"1.3.6\", Platform: \"linux-arm64\", Filename: \"busybox\"}: EntryInfo{IsConfigured: false, BinaryPath: \"testdata/bin/busybox/1.3.6/linux-arm64/busybox\", SnippetPath: \"\"},\n\t\t},\n\t\tentries,\n\t)\n\n}\n\nfunc TestListAllEntries(t *testing.T) {\n\n\tappConfig := config.Application{\n\t\tDownloadPath: filepath.Join(\"testdata\", \"bin\"),\n\t\tSnippetPath:  filepath.Join(\"testdata\", \"snippets\"),\n\t\tFromImages: []config.BinaryFromImage{\n\t\t\t{\n\t\t\t\tVersion: \"1.3.6\",\n\t\t\t\tImages: []config.Image{\n\t\t\t\t\t{\n\t\t\t\t\t\tReference: \"ref-1\",\n\t\t\t\t\t\tPlatform:  \"linux/amd64\",\n\t\t\t\t\t},\n\t\t\t\t\t// this makes it not configured\n\t\t\t\t\t//{\n\t\t\t\t\t//\tReference: \"ref-2\",\n\t\t\t\t\t//\tPlatform:  \"linux/arm64\",\n\t\t\t\t\t//},\n\t\t\t\t},\n\t\t\t\tPathsInImage: []string{\n\t\t\t\t\t\"/usr/local/bin/busybox\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tentries, err := ListAllEntries(appConfig)\n\n\trequire.NoError(t, err)\n\trequire.Len(t, entries, 3)\n\n\tassert.Equal(t,\n\t\tEntries{\n\t\t\tLogicalEntryKey{OrgName: \"busybox\", Version: \"1.3.6\", Platform: \"linux-amd64\", Filename: \"busybox\"}: EntryInfo{IsConfigured: true, BinaryPath: \"testdata/bin/busybox/1.3.6/linux-amd64/busybox\", SnippetPath: \"testdata/snippets/busybox/1.3.6/linux-amd64/busybox\"},\n\t\t\tLogicalEntryKey{OrgName: \"busybox\", Version: \"1.3.6\", Platform: \"linux-arm64\", Filename: \"busybox\"}: EntryInfo{IsConfigured: false, BinaryPath: \"testdata/bin/busybox/1.3.6/linux-arm64/busybox\", SnippetPath: \"testdata/snippets/busybox/1.3.6/linux-arm64/busybox\"},\n\t\t\t// note the standalone snippet!\n\t\t\tLogicalEntryKey{OrgName: \"postgres\", Version: \"9.6.10\", Platform: \"linux-amd64\", Filename: \"postgres\"}: EntryInfo{IsConfigured: false, BinaryPath: \"\", SnippetPath: \"testdata/snippets/postgres/9.6.10/linux-amd64/postgres\"},\n\t\t},\n\t\tentries,\n\t)\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/snippet_metadata.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"go.yaml.in/yaml/v3\"\n)\n\ntype SnippetMetadata struct {\n\tName          string `yaml:\"name\"`\n\tOffset        int    `yaml:\"offset\"`\n\tLength        int    `yaml:\"length\"`\n\tSnippetSha256 string `yaml:\"snippetSha256\"`\n\tFileSha256    string `yaml:\"fileSha256\"`\n}\n\nfunc ReadSnippetMetadata(path string) (*SnippetMetadata, error) {\n\tif path == \"\" {\n\t\treturn nil, nil\n\t}\n\n\tcontents, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfields := strings.Split(string(contents), \"\\n### byte snippet to follow ###\\n\")\n\tif len(fields) != 2 {\n\t\treturn nil, fmt.Errorf(\"this is not a snippet\")\n\t}\n\n\tvar metadata SnippetMetadata\n\tif err := yaml.Unmarshal([]byte(fields[0]), &metadata); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &metadata, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/snippet_metadata_test.go",
    "content": "package internal\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestReadSnippetMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tcontent        string\n\t\tcreateFile     bool\n\t\texpectedError  bool\n\t\texpectedResult *SnippetMetadata\n\t}{\n\t\t{\n\t\t\tname:           \"valid metadata\",\n\t\t\tcontent:        \"name: test\\noffset: 10\\nlength: 20\\nsnippetSha256: abcd\\nfileSha256: efgh\\n### byte snippet to follow ###\\n\",\n\t\t\texpectedError:  false,\n\t\t\texpectedResult: &SnippetMetadata{Name: \"test\", Offset: 10, Length: 20, SnippetSha256: \"abcd\", FileSha256: \"efgh\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"invalid format\",\n\t\t\tcontent:       \"invalid content\",\n\t\t\texpectedError: true,\n\t\t},\n\t\t{\n\t\t\tname:          \"Empty content\",\n\t\t\tcontent:       \"\",\n\t\t\tcreateFile:    true,\n\t\t\texpectedError: true,\n\t\t},\n\t\t{\n\t\t\tname:          \"no path\",\n\t\t\texpectedError: false,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tvar path string\n\t\t\tif tc.content != \"\" || tc.createFile {\n\t\t\t\tpath = createTestFile(t, tc.content)\n\t\t\t}\n\n\t\t\tresult, err := ReadSnippetMetadata(path)\n\t\t\tif tc.expectedError {\n\t\t\t\tassert.Error(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tassert.Equal(t, tc.expectedResult, result)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc createTestFile(t *testing.T, content string) string {\n\tt.Helper()\n\tfile, err := os.CreateTemp(t.TempDir(), \"syft-test-snippetMetadata\")\n\trequire.NoError(t, err)\n\tif len(content) > 0 {\n\t\t_, err = file.WriteString(content)\n\t\trequire.NoError(t, err)\n\t}\n\trequire.NoError(t, file.Close())\n\treturn file.Name()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/.gitignore",
    "content": "!bin"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/bin/busybox/1.3.6/linux-amd64/busybox",
    "content": "fake contents 1"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/bin/busybox/1.3.6/linux-arm64/busybox",
    "content": "fake contents 2"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/snippets/busybox/1.3.6/linux-amd64/busybox",
    "content": "name: busybox\noffset: 890794\nlength: 6\nsnippetSha256: 1cb0df35e77d61622940971e9dc8387719b37dbfe905034f7c89c730d45477c2\nfileSha256: 5c44a88a3eaf375f58715829fe187b6eaeb2efcd41bdb77595ae732fddfd4959\n\n### byte snippet to follow ###\nfake 1"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/snippets/busybox/1.3.6/linux-arm64/busybox",
    "content": "name: busybox\noffset: 890794\nlength: 6\nsnippetSha256: 784ed38fdb1ad0498a159b15b710563ee43d1d88e361171b764e4f191888cbc0\nfileSha256: eaf375f5db77595ae732fddfd45c44a88a39598715829fe187b6eaeb2efcd41b\n\n### byte snippet to follow ###\nfake 2"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/testdata/snippets/postgres/9.6.10/linux-amd64/postgres",
    "content": "name: postgres\noffset: 78994\nlength: 6\nsnippetSha256: 08b237bd6e2701f6c169a2ce8b293ba431c2016f5b9b28597241dffeff100941\nfileSha256: efcd41bd715829fe187b6eaeb2ddfd4959b77595ae732f5c44a88a3eaf375f58\n\n### byte snippet to follow ###\nfake 3"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/ui/action.go",
    "content": "package ui\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os/exec\"\n\t\"strings\"\n)\n\ntype Action struct {\n\tMsg string\n}\n\nfunc (a Action) Start() {\n\tfmt.Printf(\"  •  %s%s%s\\n\", purple+italic, a.Msg, reset)\n}\n\nfunc (a Action) Skip(newMsg ...string) {\n\tif len(newMsg) > 0 {\n\t\t// clear the line\n\t\tgoToPreviousLineStart()\n\t\t// add a little extra to account for ansi escape codes (hack)\n\t\tfmt.Printf(\"%s\\n\", strings.Repeat(\" \", len(a.Msg)+10))\n\t\ta.Msg = newMsg[0]\n\t}\n\tgoToPreviousLineStart()\n\tformatSkip(a.Msg)\n}\n\nfunc (a Action) Done(err error) {\n\tgoToPreviousLineStart()\n\tif err != nil {\n\t\tfmt.Printf(\"  %s✗%s  %s%s%s\\n\", red+bold, reset, red, a.Msg, reset)\n\n\t\tvar exitError *exec.ExitError\n\t\tif errors.As(err, &exitError) && len(exitError.Stderr) > 0 {\n\t\t\tfmt.Printf(\"  %s├──%s  %s%s%s\\n\", grey, reset, red, err, reset)\n\t\t\tfmt.Printf(\"  %s└──%s  %s%s%s\\n\", grey, reset, red, \"stderr:\", reset)\n\t\t\tfmt.Println(string(exitError.Stderr))\n\t\t} else {\n\t\t\tfmt.Printf(\"  %s└──%s  %s%s%s\\n\", grey, reset, red, err, reset)\n\t\t}\n\t\treturn\n\t}\n\tfmt.Printf(\"  %s✔%s  %s\\n\", green+bold, reset, a.Msg)\n}\n\nfunc formatSkip(msg string) {\n\tfmt.Printf(\"  %s⏭%s  %s%s%s\\n\", bold, reset, grey, msg, reset)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/ui/ansi.go",
    "content": "package ui\n\nimport \"fmt\"\n\nconst (\n\tgrey   = \"\\033[90m\"\n\treset  = \"\\033[0m\"\n\tbold   = \"\\033[1m\"\n\tred    = \"\\033[31m\"\n\titalic = \"\\033[3m\"\n\tpurple = \"\\033[95m\" // hi variant\n\tgreen  = \"\\033[32m\"\n)\n\nfunc goToPreviousLineStart() {\n\tfmt.Printf(\"\\033[F\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/ui/binary_list.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/charmbracelet/bubbles/list\"\n\ttea \"github.com/charmbracelet/bubbletea\"\n\t\"github.com/charmbracelet/lipgloss\"\n)\n\nvar quitTextStyle = lipgloss.NewStyle().Margin(1, 0, 2, 4)\n\ntype item string\n\nfunc (i item) Title() string       { return string(i) }\nfunc (i item) Description() string { return \"\" }\nfunc (i item) FilterValue() string { return string(i) }\n\ntype model struct {\n\tlist     list.Model\n\tchoice   string\n\tquitting bool\n}\n\nfunc PromptSelectBinary(binaryPaths []string) (string, error) {\n\tvar items []list.Item\n\tfor _, p := range binaryPaths {\n\t\titems = append(items, item(p))\n\t}\n\n\td := list.NewDefaultDelegate()\n\td.ShowDescription = false\n\td.Styles.NormalTitle = d.Styles.NormalTitle.PaddingLeft(4)\n\td.Styles.SelectedTitle = d.Styles.SelectedTitle.PaddingLeft(3)\n\td.SetSpacing(0)\n\n\tl := list.New(items, d, 80, 80)\n\tl.Title = \"Select a binary to capture a snippet from:\"\n\tl.SetShowStatusBar(false)\n\tl.SetFilteringEnabled(true)\n\tl.Styles.Title = lipgloss.NewStyle().Bold(true).MarginLeft(1)\n\tl.Styles.PaginationStyle = list.DefaultStyles().PaginationStyle.PaddingLeft(4)\n\tl.Styles.HelpStyle = list.DefaultStyles().HelpStyle.PaddingLeft(4).PaddingBottom(1)\n\n\tm := model{list: l}\n\n\tp := tea.NewProgram(m, tea.WithAltScreen())\n\n\tfm, err := p.Run()\n\tif err != nil {\n\t\tfmt.Println(\"Error running program:\", err)\n\t\tos.Exit(1)\n\t}\n\n\tm = fm.(model)\n\n\tif m.quitting {\n\t\treturn \"\", fmt.Errorf(\"cancelled\")\n\t}\n\n\tif m.choice == \"\" {\n\t\treturn \"\", fmt.Errorf(\"no binary selected\")\n\t}\n\n\treturn m.choice, nil\n}\n\nfunc (m model) Init() tea.Cmd {\n\treturn nil\n}\n\nfunc (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {\n\tswitch msg := msg.(type) {\n\tcase tea.WindowSizeMsg:\n\t\tm.list.SetWidth(msg.Width)\n\t\tm.list.SetHeight(msg.Height)\n\t\treturn m, nil\n\n\tcase tea.KeyMsg:\n\t\tswitch keypress := msg.String(); keypress {\n\t\tcase \"ctrl+c\":\n\t\t\tm.quitting = true\n\t\t\treturn m, tea.Quit\n\n\t\tcase \"enter\":\n\t\t\ti, ok := m.list.SelectedItem().(item)\n\t\t\tif ok {\n\t\t\t\tm.choice = string(i)\n\t\t\t}\n\t\t\treturn m, tea.Quit\n\t\t}\n\t}\n\n\tvar cmd tea.Cmd\n\tm.list, cmd = m.list.Update(msg)\n\treturn m, cmd\n}\n\nfunc (m model) View() string {\n\tif m.choice != \"\" {\n\t\treturn quitTextStyle.Render(fmt.Sprintf(\"Selected %q\", m.choice))\n\t}\n\tif m.quitting {\n\t\treturn quitTextStyle.Render(\"Cancelled\")\n\t}\n\treturn \"\\n\" + m.list.View()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/ui/error.go",
    "content": "package ui\n\nimport \"fmt\"\n\nfunc RenderError(err error) string {\n\treturn fmt.Sprintf(\"%s%v%s\", red, err, reset)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/ui/title.go",
    "content": "package ui\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype Title struct {\n\tName, Version string\n}\n\nfunc (t Title) Start() {\n\tt.start()\n\tfmt.Println()\n}\n\nfunc (t Title) start() {\n\tfmt.Printf(\"%s%s@%s%s\", bold, t.Name, t.Version, reset)\n}\n\nfunc (t Title) Update(msg string) {\n\tgoToPreviousLineStart()\n\tt.start()\n\tfmt.Print(strings.Repeat(\" \", 35-(len(t.Name)+len(t.Version))))\n\tfmt.Printf(\"  %s⚠%s  %s%s%s\\n\", bold, reset, italic+grey, msg, reset)\n}\n\nfunc (t Title) Skip(msg string) {\n\tgoToPreviousLineStart()\n\tt.start()\n\tfmt.Print(strings.Repeat(\" \", 35-(len(t.Name)+len(t.Version))))\n\tformatSkip(msg)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/utils.go",
    "content": "package internal\n\nimport (\n\t\"crypto/sha256\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nfunc SplitFilepath(path string) []string {\n\treturn strings.Split(path, string(filepath.Separator))\n}\n\nfunc Sha256SumFile(f io.ReadSeeker) (string, error) {\n\t_, err := f.Seek(0, io.SeekStart)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to seek to start of file: %w\", err)\n\t}\n\thasher := sha256.New()\n\t_, err = io.Copy(hasher, f)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to hash file: %w\", err)\n\t}\n\n\treturn fmt.Sprintf(\"%x\", hasher.Sum(nil)), nil\n}\n\nfunc Sha256SumBytes(buf []byte) string {\n\thasher := sha256.New()\n\thasher.Write(buf)\n\treturn fmt.Sprintf(\"%x\", hasher.Sum(nil))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/internal/utils_test.go",
    "content": "package internal\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSplitFilepath(t *testing.T) {\n\ttests := []struct {\n\t\tpath     string\n\t\texpected []string\n\t}{\n\t\t{path: \"a/b/c\", expected: []string{\"a\", \"b\", \"c\"}},\n\t}\n\n\tfor _, test := range tests {\n\t\tresult := SplitFilepath(test.path)\n\t\tassert.Equal(t, test.expected, result)\n\t}\n}\n\nfunc TestSha256SumFile(t *testing.T) {\n\tcontent := \"test content\"\n\treader := strings.NewReader(content)\n\n\thash, err := Sha256SumFile(reader)\n\trequire.NoError(t, err, \"Sha256SumFile should not return an error\")\n\n\texpectedHash := Sha256SumBytes([]byte(content))\n\tassert.Equal(t, expectedHash, hash)\n}\n\nfunc TestSha256SumBytes(t *testing.T) {\n\n\ttests := []struct {\n\t\tinput    []byte\n\t\texpected string\n\t}{\n\t\t{input: []byte(\"hello\"), expected: \"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824\"},\n\t}\n\n\tfor _, test := range tests {\n\t\tresult := Sha256SumBytes(test.input)\n\t\tassert.Equal(t, test.expected, result)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/cli\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/ui\"\n)\n\nfunc main() {\n\tcmd, err := cli.New()\n\tif err != nil {\n\t\texit(err)\n\t}\n\n\tif err := cmd.Execute(); err != nil {\n\t\texit(err)\n\t}\n}\n\nfunc exit(err error) {\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"%s\\n\", ui.RenderError(err))\n\t}\n\tos.Exit(1)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/testutil/snippet_or_binary.go",
    "content": "package testutil\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/binary/internal/manager/internal/config\"\n)\n\n// SnippetOrBinary returns the path to either the binary or the snippet for the given logical entry key.\n// Note: this is intended to be used only within the context of the binary cataloger test fixtures. Any other\n// use is unsupported. Path should be a logical path relative to the testdata/classifiers directory (but does\n// not specify the \"bin\" or \"snippets\" parent path... this is determined logically [snippets > binary unless told\n// otherwise]). Path should also be to the directory containing the binary or snippets of interest (not the binaries\n// or snippets itself).\nfunc SnippetOrBinary(t *testing.T, path string, requireBinary bool) string {\n\tt.Helper()\n\n\trequire.Len(t, internal.SplitFilepath(path), 3, \"path must be a in the form <name>/<version>/<arch>\")\n\n\t// cd to testdata directory and load the config\n\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\trequire.NoError(t, os.Chdir(\"testdata\"))\n\tdefer func() {\n\t\trequire.NoError(t, os.Chdir(cwd))\n\t}()\n\n\tappConfig, err := config.Read()\n\trequire.NoError(t, err)\n\n\t// find the first matching fixture path that matches the given requirements\n\n\tentries, err := internal.ListAllEntries(*appConfig)\n\trequire.NoError(t, err)\n\n\tvar fixturePath string\n\tfor k, v := range entries.Sorted() {\n\t\tif filepath.Dir(k.Path()) == path {\n\t\t\t// prefer the snippet over the binary\n\t\t\tif !requireBinary {\n\t\t\t\tif v.SnippetPath != \"\" {\n\t\t\t\t\tt.Logf(\"using snippet for %q\", path)\n\t\t\t\t\trequire.NoError(t, validateSnippet(v.BinaryPath, v.SnippetPath))\n\t\t\t\t\tfixturePath = v.SnippetPath\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif v.BinaryPath != \"\" {\n\t\t\t\t\tfixturePath = v.BinaryPath\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"no binary or snippet found for %q\", path)\n\t\t\t}\n\t\t\tif v.BinaryPath != \"\" {\n\t\t\t\tt.Logf(\"forcing the use of the original binary for %q\", path)\n\t\t\t\tfixturePath = v.BinaryPath\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif v.SnippetPath != \"\" && !v.IsConfigured {\n\t\t\t\tt.Skip(\"no binary found, but is covered by a snippet. Please add this case to the 'binary/testdata/config.yaml' and recreate the snippet\")\n\t\t\t}\n\n\t\t\tt.Fatalf(\"no binary found for %q\", path)\n\t\t}\n\t}\n\n\tif fixturePath == \"\" {\n\t\tt.Fatalf(\"no fixture found for %q\", path)\n\t}\n\n\t// this should be relative to the tests-fixtures directory and should be the directory containing the binary or\n\t// snippet of interest (not the path to the binary or snippet itself)\n\treturn filepath.Join(\"testdata\", filepath.Dir(fixturePath))\n}\n\nfunc validateSnippet(binaryPath, snippetPath string) error {\n\t// get a sha256 of the binary\n\tif _, err := os.Stat(binaryPath); err != nil {\n\t\t// no binary to validate against (this is ok)\n\t\treturn nil\n\t}\n\n\tmetadata, err := internal.ReadSnippetMetadata(snippetPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif metadata == nil {\n\t\treturn nil\n\t}\n\n\tf, err := os.Open(binaryPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texpected, err := internal.Sha256SumFile(f)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif expected != metadata.FileSha256 {\n\t\treturn fmt.Errorf(\"snippet shadows a binary with a different sha256 (want %q got %q)\", expected, metadata.FileSha256)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/internal/manager/testutil/snippet_or_binary_test.go",
    "content": "package testutil\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestValidateSnippet(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tbinaryContent  string\n\t\tsnippetContent string\n\t\texpectError    bool\n\t}{\n\t\t{\n\t\t\tname:          \"valid\",\n\t\t\tbinaryContent: \"testBinary\",\n\t\t\tsnippetContent: `name: bash\noffset: 992758\nlength: 100\nsnippetSha256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824\nfileSha256: 88ef99f28b69a6d8113cba62011e574a5afb1e6d8e0f884699e2ced91e4d910c\n\n### byte snippet to follow ###\nhello`,\n\t\t\texpectError: false,\n\t\t},\n\t\t{\n\t\t\tname:          \"invalid\",\n\t\t\tbinaryContent: \"testBinary\",\n\t\t\tsnippetContent: `name: bash\noffset: 992758\nlength: 100\nsnippetSha256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824\nfileSha256: 011e574a8ef9584699e2ced9189f28b69a6d8113cba62e4d910cafb1e6d8e0f8\n\n### byte snippet to follow ###\nhello`,\n\t\t\texpectError: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tbinaryFile, _ := os.CreateTemp(t.TempDir(), \"binary\")\n\t\t\tbinaryFile.WriteString(tt.binaryContent)\n\t\t\tbinaryFile.Close()\n\n\t\t\tsnippetFile, _ := os.CreateTemp(t.TempDir(), \"snippet\")\n\t\t\tsnippetFile.WriteString(tt.snippetContent)\n\t\t\tsnippetFile.Close()\n\n\t\t\terr := validateSnippet(binaryFile.Name(), snippetFile.Name())\n\t\t\tif tt.expectError {\n\t\t\t\tassert.Error(t, err)\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/pe_package.go",
    "content": "package binary\n\nimport (\n\t\"path\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\tpackageurl \"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\t// spaceRegex includes nbsp (#160) considered to be a space character\n\tspaceRegex  = regexp.MustCompile(`[\\s\\xa0]+`)\n\tnumberRegex = regexp.MustCompile(`\\d`)\n)\n\nfunc newPEPackage(versionResources map[string]string, f file.Location) pkg.Package {\n\tname := findNameFromVR(versionResources)\n\n\tif name == \"\" {\n\t\t// it's possible that the version resources are empty, so we fall back to the file name\n\t\tname = strings.TrimSuffix(strings.TrimSuffix(path.Base(f.RealPath), \".exe\"), \".dll\")\n\t}\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   findVersionFromVR(versionResources),\n\t\tLocations: file.NewLocationSet(f.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tType:      pkg.BinaryPkg,\n\t\tMetadata:  newPEBinaryVersionResourcesFromMap(versionResources),\n\t}\n\n\t// If this appears to be Ghostscript, emit a canonical generic purl\n\t// Example expected: pkg:generic/ghostscript@<version>\n\tprod := strings.ToLower(spaceNormalize(versionResources[\"ProductName\"]))\n\tif prod == \"\" {\n\t\t// fall back to FileDescription if ProductName is missing\n\t\tprod = strings.ToLower(spaceNormalize(versionResources[\"FileDescription\"]))\n\t}\n\tif p.Version != \"\" && strings.Contains(prod, \"ghostscript\") {\n\t\t// build a generic PURL for ghostscript\n\t\tpurl := packageurl.NewPackageURL(packageurl.TypeGeneric, \"\", \"ghostscript\", p.Version, nil, \"\").ToString()\n\t\tp.PURL = purl\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPEBinaryVersionResourcesFromMap(vr map[string]string) pkg.PEBinary {\n\tvar kvs pkg.KeyValues\n\tfor k, v := range vr {\n\t\tif v == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tkvs = append(kvs, pkg.KeyValue{\n\t\t\tKey:   k,\n\t\t\tValue: spaceNormalize(v),\n\t\t})\n\t}\n\n\tsort.Slice(kvs, func(i, j int) bool {\n\t\treturn kvs[i].Key < kvs[j].Key\n\t})\n\n\treturn pkg.PEBinary{\n\t\tVersionResources: kvs,\n\t}\n}\n\nfunc findNameFromVR(versionResources map[string]string) string {\n\t// PE files not authored by Microsoft tend to use ProductName as an identifier.\n\tnameFields := []string{\"ProductName\", \"FileDescription\", \"InternalName\", \"OriginalFilename\"}\n\n\tif isMicrosoftVR(versionResources) {\n\t\t// for Microsoft files, prioritize FileDescription.\n\t\tnameFields = []string{\"FileDescription\", \"InternalName\", \"OriginalFilename\", \"ProductName\"}\n\t}\n\n\tvar name string\n\tfor _, field := range nameFields {\n\t\tvalue := spaceNormalize(versionResources[field])\n\t\tif value == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tname = value\n\t\tbreak\n\t}\n\n\treturn name\n}\nfunc isMicrosoftVR(versionResources map[string]string) bool {\n\treturn strings.Contains(strings.ToLower(versionResources[\"CompanyName\"]), \"microsoft\") ||\n\t\tstrings.Contains(strings.ToLower(versionResources[\"ProductName\"]), \"microsoft\")\n}\n\n// spaceNormalize trims and normalizes whitespace in a string.\nfunc spaceNormalize(value string) string {\n\tvalue = strings.TrimSpace(value)\n\tif value == \"\" {\n\t\treturn \"\"\n\t}\n\t// ensure valid UTF-8.\n\tvalue = strings.ToValidUTF8(value, \"\")\n\t// consolidate all whitespace.\n\tvalue = spaceRegex.ReplaceAllString(value, \" \")\n\t// remove non-printable characters.\n\tvalue = regexp.MustCompile(`[\\x00-\\x1f]`).ReplaceAllString(value, \"\")\n\t// consolidate again and trim.\n\tvalue = spaceRegex.ReplaceAllString(value, \" \")\n\tvalue = strings.TrimSpace(value)\n\treturn value\n}\n\nfunc findVersionFromVR(versionResources map[string]string) string {\n\tproductVersion := extractVersionFromResourcesValue(versionResources[\"ProductVersion\"])\n\tfileVersion := extractVersionFromResourcesValue(versionResources[\"FileVersion\"])\n\n\tif productVersion != \"\" {\n\t\treturn productVersion\n\t}\n\n\treturn fileVersion\n}\n\nfunc extractVersionFromResourcesValue(version string) string {\n\tversion = strings.TrimSpace(version)\n\tout := \"\"\n\tfor i, f := range strings.Fields(version) {\n\t\tif containsNumber(out) && !containsNumber(f) {\n\t\t\treturn out\n\t\t}\n\t\tif i == 0 {\n\t\t\tout = f\n\t\t} else {\n\t\t\tout += \" \" + f\n\t\t}\n\t}\n\treturn out\n}\n\nfunc containsNumber(s string) bool {\n\treturn numberRegex.MatchString(s)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/pe_package_cataloger.go",
    "content": "package binary\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pe\"\n)\n\n// NewPEPackageCataloger returns a cataloger that interprets packages from DLL and EXE files.\nfunc NewPEPackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"pe-binary-package-cataloger\").\n\t\tWithParserByGlobs(parsePE, \"**/*.dll\", \"**/*.exe\")\n}\n\nfunc parsePE(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tf, err := pe.Read(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse PE file %q: %w\", reader.RealPath, err)\n\t}\n\n\tif f == nil {\n\t\treturn nil, nil, unknown.Newf(reader, \"unable to determine packages\")\n\t}\n\n\tif f.CLR.HasEvidenceOfCLR() {\n\t\t// this is for a .NET application, which is covered by other catalogers already\n\t\treturn nil, nil, nil\n\t}\n\n\tp := newPEPackage(f.VersionResources, f.Location)\n\n\treturn []pkg.Package{p}, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/pe_package_cataloger_test.go",
    "content": "package binary\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_PEPackageCataloger(t *testing.T) {\n\tcases := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t\twantErr  require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"non-.NET package\",\n\t\t\tfixture: \"image-jruby\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"JRuby\",\n\t\t\t\t\tVersion: \"9.3.15.0\",\n\t\t\t\t\tType:    pkg.BinaryPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/jruby_windows_9_3_15_0.exe\"),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"pe-binary-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PEBinary{\n\t\t\t\t\t\tVersionResources: pkg.KeyValues{\n\t\t\t\t\t\t\t{Key: \"CompanyName\", Value: \"JRuby Dev Team\"},\n\t\t\t\t\t\t\t{Key: \"FileDescription\", Value: \"JRuby\"},\n\t\t\t\t\t\t\t{Key: \"FileVersion\", Value: \"9.3.15.0\"},\n\t\t\t\t\t\t\t{Key: \"InternalName\", Value: \"jruby\"},\n\t\t\t\t\t\t\t{Key: \"LegalCopyright\", Value: \"JRuby Dev Team\"},\n\t\t\t\t\t\t\t{Key: \"OriginalFilename\", Value: \"jruby_windows-x32_9_3_15_0.exe\"},\n\t\t\t\t\t\t\t{Key: \"ProductName\", Value: \"JRuby\"},\n\t\t\t\t\t\t\t{Key: \"ProductVersion\", Value: \"9.3.15.0\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"ignore .NET packages\",\n\t\t\tfixture:  \"image-dotnet-app\",\n\t\t\texpected: nil, // expect nothing!\n\t\t},\n\t}\n\n\tfor _, v := range cases {\n\t\tt.Run(v.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, v.fixture).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpects(v.expected, nil).\n\t\t\t\tTestCataloger(t, NewPEPackageCataloger())\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/pe_package_test.go",
    "content": "package binary\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestGhostscriptPEGeneratesGenericPURL(t *testing.T) {\n\tvr := map[string]string{\n\t\t\"CompanyName\":     \"Artifex Software, Inc.\",\n\t\t\"ProductName\":     \"GPL Ghostscript\",\n\t\t\"FileDescription\": \"Ghostscript Interpreter\",\n\t\t\"ProductVersion\":  \"9.54.0\",\n\t}\n\n\tloc := file.NewLocation(\"/usr/bin/gswin64c.exe\")\n\tp := newPEPackage(vr, loc)\n\n\texpected := \"pkg:generic/ghostscript@9.54.0\"\n\tif p.PURL != expected {\n\t\tt.Fatalf(\"expected purl %q, got %q\", expected, p.PURL)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/.gitignore",
    "content": "classifiers/dynamic\nclassifiers/bin\n\n# allow for lb patterns (rust, pytho, php and more)\n!lib*.so\n!lib*.dylib\n\n# allow for go-hint files and binaries\n!VERSION*\n!classifiers/snippets/**/bin/\n!*.exe"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/Makefile",
    "content": "BIN=classifiers/bin\nFINGERPRINT_FILE=$(BIN).fingerprint\n\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: download\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: clean-fingerprint $(FINGERPRINT_FILE)\n\nlist: ## list all managed binaries and snippets\n\tgo run ../internal/manager list\n\ndownload: ## download only binaries that are not covered by a snippet\n\tgo run ../internal/manager download $(name) --skip-if-covered-by-snippet\n\ndownload-all: ## download all managed binaries\n\tgo run ../internal/manager download\n\nadd-snippet: ## add a new snippet from an existing binary\n\tgo run ../internal/manager add-snippet\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE): ## prints the sha256sum of the any input to the download command (to determine if there is a cache miss)\n\t@sha256sum ./config.yaml > $(FINGERPRINT_FILE)\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:  ## clean up all downloaded binaries\n\trm -rf $(BIN)\n\nclean-fingerprint: ## clean up all legacy fingerprint files\n\t@if [ -d $(BIN) ]; then find $(BIN) -name '*.fingerprint' -delete; fi\n\n\n## Halp! #################################\n\n.PHONY: help\nhelp:\n\t@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = \":.*?## \"}; {printf \"$(BOLD)$(CYAN)%-25s$(RESET)%s\\n\", $$1, $$2}'\n\n.PHONY: default list download download-all clean clean-fingerprint add-snippet fingerprint\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/capture-snippet.sh",
    "content": "#!/bin/bash\n\n# Default values for length and prefix length\nLENGTH=100\nPREFIX_LENGTH=20\nSEARCH_FOR=''\nGROUP_NAME=''\n\n# Function to show usage\nusage() {\n    echo \"Usage: $0 <path-to-binary> <version> [--search-for <pattern>] [--length <length>] [--prefix-length <prefix_length>] [--group <name>]\"\n    exit 1\n}\n\n# Parse arguments\nwhile [[ $# -gt 0 ]]; do\n    key=\"$1\"\n\n    case $key in\n\t--search-for)\n\t    SEARCH_FOR=\"$2\"\n\t    shift # past argument\n            shift # past value\n\t    ;;\n        --length)\n            LENGTH=\"$2\"\n            shift # past argument\n            shift # past value\n            ;;\n        --group)\n            GROUP_NAME=\"$2\"\n            shift # past argument\n            shift # past value\n            ;;\n        --prefix-length)\n            PREFIX_LENGTH=\"$2\"\n            shift # past argument\n            shift # past value\n            ;;\n        *)\n            if [ -z \"$BINARY_FILE\" ]; then\n                BINARY_FILE=\"$1\"\n            elif [ -z \"$VERSION\" ]; then\n                VERSION=\"$1\"\n            else\n                echo \"Unknown option: $1\"\n                usage\n            fi\n            shift # past argument\n            ;;\n    esac\ndone\n\nLENGTH=$(expr \"$LENGTH\" + \"$PREFIX_LENGTH\")\n\n# check if binary file and pattern are provided\nif [ -z \"$BINARY_FILE\" ] || [ -z \"$VERSION\" ]; then\n    usage\nfi\n\n# if group name is empty use the binary filename\nif [ -z \"$GROUP_NAME\" ]; then\n    GROUP_NAME=$(basename \"$BINARY_FILE\")\nfi\n\n# check if xxd is even installed\nif ! command -v xxd &> /dev/null; then\n    echo \"xxd not found. Please install xxd.\"\n    exit 1\nfi\n\n# check if xargs is even installed\nif ! command -v xargs &> /dev/null; then\n    echo \"xargs not found. Please install xargs.\"\n    exit 1\nfi\n\nPATTERN=${SEARCH_FOR:-$VERSION}\n\necho \"Using binary file:      $BINARY_FILE\"\necho \"Searching for pattern:  $PATTERN\"\necho \"Capture length:         $LENGTH bytes\"\necho \"Capture prefix length:  $PREFIX_LENGTH bytes\"\n\nPATTERN_RESULTS=$(strings -t d \"$BINARY_FILE\" | grep \"$PATTERN\")\nRESULT_COUNT=$(echo \"$PATTERN_RESULTS\" | wc -l)\n\nCONTINUE_LOOP=true\n\nwhile $CONTINUE_LOOP; do\n\n  # if there are multiple matches, prompt the user to select one\n  if [ $RESULT_COUNT -gt 1 ]; then\n      echo \"Multiple string matches found in the binary:\"\n      echo \"\"\n\n      # show result lines one at a time (in a numbered list)\n      # but only show everything after the first field (not the offset)\n      echo \"$PATTERN_RESULTS\" | cut -d ' ' -f 2- | nl -w 1 -s ') '\n\n\n      echo \"\"\n      read -p \"Please select a match: \" SELECTION\n\n      # if the selection is not a number, exit\n      if ! [[ \"$SELECTION\" =~ ^[0-9]+$ ]]; then\n          echo \"Invalid selection.\"\n          exit 1\n      fi\n\n      # if the selection is out of bounds, exit\n      if [ \"$SELECTION\" -gt $(echo \"$PATTERN_RESULTS\" | wc -l) ]; then\n          echo \"Invalid selection.\"\n          exit 1\n      fi\n\n      # select the line from the results\n      SELECTED_RESULT=$(echo \"$PATTERN_RESULTS\" | sed -n \"${SELECTION}p\")\n  else\n    SELECTED_RESULT=\"$PATTERN_RESULTS\"\n  fi\n\n  # search for the pattern in the binary file and capture the offset\n  OFFSET=$(echo \"${SELECTED_RESULT}\" | xargs | cut -d ' ' -f 1)\n\n  if [ -z \"$OFFSET\" ]; then\n      echo \"Pattern not found.\"\n      exit 1\n  fi\n\n  # adjust the offset to capture prefix length before the match\n  OFFSET=$(expr \"$OFFSET\" - \"$PREFIX_LENGTH\")\n\n  # use xxd to capture the specified length from the calculated offset\n  SNIPPET=$(xxd -l \"$LENGTH\" -s \"$OFFSET\" \"$BINARY_FILE\")\n\n  # display the output and prompt the user\n  echo \"\"\n  echo \"$SNIPPET\"\n  echo \"\"\n  read -p \"Does this snippet capture what you need? (Y/n/q) \" RESPONSE\n\n  RESPONSE=${RESPONSE:-y}\n\n  if [ \"$RESPONSE\" == \"y\" ]; then\n    CONTINUE_LOOP=false\n  elif [ $RESULT_COUNT -eq 1 ] || [ \"$RESPONSE\" == \"q\" ]; then\n    echo \"Exiting with no action taken.\"\n    exit 0\n  fi\n\ndone\n\ngo run ./manager write-snippet \"$BINARY_FILE\" --offset \"$OFFSET\" --length \"$LENGTH\" --name \"$GROUP_NAME\" --version \"$VERSION\"\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/negative/.gitignore",
    "content": "!libpython2.7.so"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/negative/busybox",
    "content": "another bad binary"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/negative/go",
    "content": "a bad go binary"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/negative/python2.6",
    "content": "# note: this should NOT match\n\njust some noise"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/consul/1.15.2/linux-amd64/consul",
    "content": "name: consul\noffset: 57272433\nlength: 100\nsnippetSha256: a4a955b180d6df471797a9f17f5ebf6f23b92d688d40532712683922e119dac0\nfileSha256: 5c5fed218247eaf43c3b54008b6a4c5d5cfa1b38539d6e7bfc09ac04623389fc\n\n### byte snippet to follow ###\ne%7D\" />\n\n  <!-- CONSUL_VERSION: 1.15.2\n -->\n  <link rel=\"icon\" href=\"{{.ContentPath}}assets/favicon"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/elixir/1.19.1/linux-amd64/elixir",
    "content": "#!/bin/sh\n\n# SPDX-License-Identifier: Apache-2.0\n# SPDX-FileCopyrightText: 2021 The Elixir Team\n# SPDX-FileCopyrightText: 2012 Plataformatec\n\nset -e\n\nELIXIR_VERSION=1.19.1\n\nif [ $# -eq 0 ] || { [ $# -eq 1 ] && { [ \"$1\" = \"--help\" ] || [ \"$1\" = \"-h\" ]; }; }; then\n  cat <<USAGE >&2\nUsage: $(basename \"$0\") [options] [.exs file] [data]\n\n## General options\n\n  -e \"COMMAND\"                 Evaluates the given command (*)\n  -h, --help                   Prints this message (standalone)\n  -r \"FILE\"                    Requires the given files/patterns (*)\n  -S SCRIPT                    Finds and executes the given script in \\$PATH\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/elixir/1.19.1/linux-amd64/lib/elixir/ebin/elixir.app",
    "content": "{application,elixir,\n    [{description,\"elixir\"},\n     {vsn,\"1.19.1\"},\n     {modules,\n         ['Elixir.Access','Elixir.Agent.Server','Elixir.Agent',\n          'Elixir.Application','Elixir.ArgumentError',\n          elixir_overridable,elixir_parser,elixir_quote,elixir_rewrite,\n          elixir_sup,elixir_tokenizer,elixir_utils,iex]},\n     {registered,[elixir_sup,elixir_config,elixir_code_server]},\n     {applications,[kernel,stdlib,compiler]},\n     {mod,{elixir,[]}},\n     {env,\n         [{ansi_syntax_colors,\n              [{atom,cyan},\n               {binary,default_color},\n               {operator,default_color}]},\n          {check_endianness,true},\n          {dbg_callback,{'Elixir.Macro',dbg,[]}},\n          {time_zone_database,'Elixir.Calendar.UTCOnlyTimeZoneDatabase'}]}]}.\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/erlang/27.0/linux-amd64/beam.smp",
    "content": "name: beam.smp\noffset: 6378906\nlength: 140\nsnippetSha256: 186c882decc4160bfcfbdddaee08e8364675c795d3e85697422fbd7218452ee2\nfileSha256: f84f0ffc2e397abcf5f081b865e241017b1793c2ec38f5136bff4e5e21ffdad7\n\n### byte snippet to follow ###\nied by configure */\n#define ERTS_EMU_CMDLINE_FLAGS \" -fno-strict-aliasing -fno-common -g -O2 -I/usr/src/otp_src_27.0/erts/x86_64-pc-linux-mu"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.15/any/VERSION",
    "content": "go1.15 Fri 2003"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.15w/any/VERSION",
    "content": "go1.15 Fri 2003"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.21/any/VERSION",
    "content": "go1.21 Fri 2003"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.21/any/go",
    "content": "no version in this binary"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.25/any/VERSION.cache",
    "content": "devel go1.25-d524e1e Sun Feb 16 07:23:13 2025 -0800\n3devel go1.25-d524e1e Sun Feb 16 07:23:13 2025 -0800"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/go-version-hint/1.25w/any/VERSION",
    "content": "devel go1.25-d524e1e Sun Feb 16 07:23:13 2025 -0800\n3devel go1.25-d524e1e Sun Feb 16 07:23:13 2025 -0800"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/postgres/9.5alpha1/linux-amd64/postgres",
    "content": "name: postgres\noffset: unknown\nlength: unknown\nsnippetSha256: 8f8323161ded8fd737ba7157b36b794c55354e8a9b8b6c5aa07dab9c3468886c\nfileSha256: unknown\n\n### byte snippet to follow ###\nt\nbyteain\n?PostgreSQL 9.5alpha1 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/python-duplicates/3.8.16/linux-amd64/patchlevel.h",
    "content": "#define PY_VERSION 3.8.16\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/vault/1.19.4/linux-arm64/vault",
    "content": "name: vault\noffset: 191891817\nlength: 420\nsnippetSha256: fd8eb7979e1e7bbc254f2f7a26f6a70ecb479cc4f50c804f3b0789bc0e229097\nfileSha256: a4754a343e619adef87a1d7e1368a0709ba29802fefbe8d70105c11085becd43\n\n### byte snippet to follow ###\nctstreamPragma</a>.\n:httpssocks Locked%s.logCT_LOGLOCAL0@level[INFO][WARN]env:///v1/%sDELETEcreateErrorserrorsclient/data/lookupactualAcceptregionawskmsocikmspkcs11%s%s%scloud:%s.%s:revoke1.19.4)(nil))(%#v) {...}frenchCommonArabicBrahmiCarianChakmaCopticGothicHangulHatranHebrewKaithiKhojkiLepchaLycianLydianRejangSyriacTai_LeTangsaTangutTeluguThaanaWanchoYezidiHyphen\\u%04x\\U%08xgetentpasswd390625%s\n%s\n%q: %wnumber\\uff"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/vault/1.20.2/linux-amd64/vault",
    "content": "name: vault\noffset: 213670425\nlength: 220\nsnippetSha256: d9b23916d00e8085a4066974641ef77962f2e0aae6f4244688d2c4fe4286c92b\nfileSha256: fb484f1b458e5d2fd28270b406a8b26b28d040dddcaa1d099aa9ee4ac927b730\n\n### byte snippet to follow ###\nctstreamPragma</a>.\n:httpssocks Locked%s.logCT_LOGLOCAL0@level[INFO][WARN]env:///v1/%sDELETEcreateErrorserrorsclient/data/lookupactualAcceptregionawskmsocikmspkcs11%s%s%scloud:%s.%s:revoke1.20.2)(nil))(%#v) {...}frenchCo"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/classifiers/snippets/wp/2.9.0/linux-amd64/wp",
    "content": "name: wp\noffset: 6967657\nlength: 120\nsnippetSha256: fe7afa7db1b4efc55b3099b5b1fb46a34e34b147c708be0a74d1dd9fce2b5cac\nfileSha256: af6b7ccc21ed0907cb504db5a059f0e120117905a6017bfdd4375cee3c93d864\n\n### byte snippet to follow ###\nND CERTIFICATE-----\nwp-cli/wp-cli 2.9.0 2023-10-25T09:10:40+00:00\ncomposer/ca-bundle 1.3.7 76e46335014860eec1aa5a724799a"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/config.yaml",
    "content": "download-path: classifiers/bin\nsnippet-path: classifiers/snippets\n\n# this section is for pulling entire binaries out of container images. You can pull multiple binaries from one or more\n# images, where a list of images is used to enumerate multiple platforms for the same logical image. The group name\n# for the test fixture defaults to the path of the binary extracted. If there is more than one binary extracted from\n# the image(s) then you will need to specify a group name explicitly.\nfrom-images:\n\n  # from the positive snippets...\n\n  - name: busybox\n    version: 1.36.1\n    images:\n      - ref: busybox:1.36.1@sha256:058f0df5310fbbbfea7e81a3a3e2b4bf3452438ec841138d170e170adbbd27a4\n        platform: linux/amd64\n    paths:\n      - /bin/[\n\n  - name: util-linux\n    version: 2.37.4\n    images:\n      - ref: cirros:0.6.2@sha256:7ba1f5bc57923f65c99677e53758d386320ed699b621d9630b1f2bd7ceb3a878\n        platform: linux/amd64\n    paths:\n      - /usr/bin/getopt\n\n  - version: 5.1.16\n    images:\n      - ref: bash:5.1.16@sha256:c7a903a541d8f5fe693cbe7f5ece18a1b6a03734c76092d2b153d7e98a964927\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/bash\n\n  - version: 12.3.0\n    images:\n      - ref: gcc:12.3.0-bookworm@sha256:2e3c00752fa23a0993b6618760bbc20263b272a0b34b2d4883159e3ebba9d8b6\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/gcc\n\n  - name: erlang\n    version: 25.3.2.6\n    images:\n      - ref: erlang:25.3.2.6@sha256:0d1e530ec0e8047094f0a1d841754515bad9b0554260a3147fb34df31b3064fe\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/erlang/erts-13.2.2.3/bin/erlexec\n\n  - name: erlang\n    version: 26.2.0.0\n    images:\n      - ref: erlang:26.2.0.0@sha256:31c3aa505fbe7526ca83c57b64e56ba505e62733e7e6518f4c06219de6e7396e\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/erlang/erts-14.2/bin/erlexec\n\n  - name: erlang\n    version: 26.2.4\n    images:\n      - ref: erlang:26.2.4.0@sha256:bdb5bac0612856ec85982171dcd4a11de2e08e7f7469c86f3eb936bdfd1ec204\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/erlang/erts-14.2.4/lib/internal/liberts_internal.a\n\n  - name: erlang\n    version: 27.0\n    images:\n      - ref: erlang:27.0.0.0-alpine@sha256:82064a65eb1f9901a479d8ada5f622be3bfac8b474dfc876dc00c28fdef4b1b8\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/erlang/erts-15.0/bin/beam.smp\n\n  - name: erlang\n    version: 26.1.2\n    images:\n      - ref: hexpm/elixir:1.15.6-erlang-26.1.2-alpine-3.18.4@sha256:e84f6667f4e3d2fe00fcdb9d1c2cdd614733296c39b20b28b092743f1161bc11\n        platform: linux/arm64\n    paths:\n      - /usr/local/lib/erlang/erts-14.1.1/bin/beam.smp\n\n  - version: 9.3.8\n    images:\n      - ref: swipl:9.3.8@sha256:6a15e6a03afe943228924a5502ba763e653ff28d9b3391e2b3e1fc3e991f37d4\n        platform: linux/amd64\n    paths:\n      - /usr/lib/swipl/bin/x86_64-linux/swipl\n\n  - version: 2.12.4\n    images:\n      - ref: dart:2.12.4-sdk@sha256:0da5d8c9727f5b90e585bcc55a078d981029f4e13044f206299e00f23993a4a8\n        platform: linux/amd64\n\n    paths:\n      - /usr/lib/dart/bin/dart\n\n  - version: 3.0.0\n    images:\n      - ref: dart:3.0.0-sdk@sha256:67708c6011199d59336bf6cd0f9e618e55dd3632c79a43375f5a082795f0b724\n        platform: linux/arm\n    paths:\n      - /usr/lib/dart/bin/dart\n\n  - version: 3.5.2\n    images:\n      - ref: dart:3.5.2@sha256:1fd62cb5036bdc42de89bdae747683277986639be9b0b0a0751d2c50bbd9441f\n        platform: linux/amd64\n    paths:\n      - /usr/lib/dart/bin/dart\n\n  - version: 3.6.0-216.1.beta\n    images:\n      - ref: dart:3.6.0-216.1.beta@sha256:f4211fec53f972987f5bc1dd0ffd3d3cb1fd820ac1ade4e45a7a0c7bffd71d58\n        platform: linux/amd64\n    paths:\n      - /usr/lib/dart/bin/dart\n\n  - name: haskell-ghc\n    version: 9.6.5\n    images:\n      - ref: haskell:9.6.5-slim-buster@sha256:04a7293eb792b82335dffa7f08532657517ed9b4f01d52c1b499ad22deb3c6b1\n        platform: linux/amd64\n    paths:\n      - /opt/ghc/9.6.5/lib/ghc-9.6.5/bin/ghc-9.6.5\n\n  - name: haskell-cabal\n    version: 3.10.3.0\n    images:\n      - ref: haskell:9.6.5-slim-buster@sha256:04a7293eb792b82335dffa7f08532657517ed9b4f01d52c1b499ad22deb3c6b1\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/cabal\n\n  - version: 1.21.3\n    images:\n      - ref: golang:1.21.3@sha256:3ce8313c3513515040870c55e0c041a2b94f3576a58cfd3948633604214aa811\n        platform: linux/amd64\n    paths:\n      - /usr/local/go/bin/go\n\n  - version: 1.25\n    images:\n      - ref: golang:tip@sha256:319b219d4df413ef30123a7f69bdf00032d9841af58d7b0ef6971542b29875d5\n        platform: linux/amd64\n    paths:\n      - /usr/local/go/bin/go\n  # TODO: this is no longer available from dockerhub! (the snippet is vital)\n  - version: 1.5.14\n    images:\n      - ref: haproxy:1.5.14@sha256:3d57e3921cc84e860f764e863ce729dd0765e3d28d444775127bc42d68f98e10\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/haproxy\n\n  - version: 1.8.22\n    images:\n      - ref: haproxy:1.8.22@sha256:166ea77f87599b8a679921de4aa847e776801f3f07b4f17ce4e2aec7fb54e3ea\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/haproxy\n\n  - version: 2.0.0\n    images:\n      - ref: haproxy:2.0.0@sha256:f88bca67a2782e7bd88af168d5c11216c32104d12fe9240fac54a1d3196e3f9c\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/haproxy\n\n  - version: 2.7.3\n    images:\n      - ref: haproxy:2.7.3@sha256:17d8aa6bf16882a294bdcccc757dd4002045f34b719e9f94dfd4801614801aea\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/haproxy\n\n  - version: 3.1-dev0\n    images:\n      - ref: haproxy:3.1-dev0@sha256:eba1aac9aa6ea84869bd2ecae79792a934563fd731eddf724eb3b12ef6a9b93f\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/haproxy\n\n  - version: 2.4.54\n    images:\n      - ref: httpd:2.4.54@sha256:c13feaef62bdb03e65e645f47d9780adea5a080c78eb9e4b3c32e861327262b4\n        platform: linux/amd64\n    paths:\n      - /usr/local/apache2/bin/httpd\n\n  - version: 10.6.15\n    images:\n      - ref: mariadb:10.6.15@sha256:92d499d9e02e92dc55c8160ef4004aa07f2e835197b18864ed214ca441e0dcfc\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mariadb\n\n# TODO: add pattern for mariadbd\n#  - version: 10.6.15\n#    images:\n#      - ref: mariadb:10.6.15@sha256:92d499d9e02e92dc55c8160ef4004aa07f2e835197b18864ed214ca441e0dcfc\n#        platform: linux/amd64\n#    paths:\n#      - /usr/sbin/mariadbd\n\n  - version: 1.6.18\n    images:\n      - ref: memcached:1.6.18@sha256:9af8e788d5f7f4dc82fd49cf4a7efff1a0b5b4673085bc88f3ccb8a1c772ab3e\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/memcached\n\n  - version: 5.6.51\n    images:\n      - ref: mysql:5.6.51@sha256:897086d07d1efa876224b147397ea8d3147e61dd84dce963aace1d5e9dc2802d\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mysql\n\n  - version: 8.0.34\n    images:\n      - ref: mysql:8.0.34@sha256:8b8835a2c32cd7357a5d2ea4b49ad870ff519c8c1d4add362803feddf4a0a973\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mysql\n\n  - version: 8.0.37\n    images:\n      - ref: mysql:8.0.37-bookworm@sha256:bad55a5bb69d6710927792384b5eb55669ee15dc85dca1888874e4a7993eecd8\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mysql\n\n  - name: percona-server\n    version: 8.0.35\n    images:\n      - ref: percona/percona-server:8.0.35@sha256:b76c455d3db1ae297449753b1054547b7910b3fd2ed4fd8c761cc1a6e202095a\n        platform: linux/amd64\n    paths:\n    - /usr/bin/mysql\n\n  - name: percona-xtrabackup\n    version: 8.0.35\n    images:\n      - ref: percona/percona-xtrabackup:8.0.35@sha256:7fe6514db30384145b7387efb0f5250bc1f558dc8779ee15269a81c942bf8698\n        platform: linux/amd64\n    paths:\n    - /usr/bin/xtrabackup\n\n  - name: percona-xtradb-cluster\n    version: 8.0.34\n    images:\n      - ref: percona/percona-xtradb-cluster:8.0.34@sha256:cc5ec8d61a1eb5cccc2727932f85764151aaf4c1dd17c4c20b7c522e2fea57a8\n        platform: linux/amd64\n    paths:\n    - /usr/bin/mysql\n\n# TODO: add pattern for mysqld\n#  - version: 5.6.51\n#    images:\n#      - ref: mysql:5.6.51@sha256:897086d07d1efa876224b147397ea8d3147e61dd84dce963aace1d5e9dc2802d\n#        platform: linux/amd64\n#    paths:\n#      - /usr/sbin/mysqld\n#\n#  - version: 8.0.34\n#    images:\n#      - ref: mysql:8.0.34@sha256:8b8835a2c32cd7357a5d2ea4b49ad870ff519c8c1d4add362803feddf4a0a973\n#        platform: linux/amd64\n#    paths:\n#      - /usr/sbin/mysqld\n\n  - name: mongodb\n    version: 8.0.17\n    images:\n      - ref: mongo:8.0@sha256:48432a75b23f0883e9b631af3497cbf0d477124d33a67f217c71f6e9b40fde39\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mongod\n\n  - name: mongodb\n    version: 7.0.28\n    images:\n      - ref: mongo:7.0@sha256:32b5cbf6e1075ad0f5eb2b880ee61e985d5135519a7a34a7d81712af37f27913\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mongod\n\n  - name: mongodb\n    version: 6.0.27\n    images:\n      - ref: mongo:6.0@sha256:03cda579c8caad6573cb98c2b3d5ff5ead452a6450561129b89595b4b9c18de2\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mongod\n\n  - name: mongodb\n    version: 5.0.32\n    images:\n      - ref: mongo:5.0@sha256:5e3e87afd24d75e722884d777c5713d254f7e88ba65381b5d6484f75a21b73e3\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mongod\n\n  - name: mongodb\n    version: 4.4.30\n    images:\n      - ref: mongo:4.4@sha256:4be76f674fc4b27859816811b8baa3c51830eb1dbf4ca81a51e26b79edd662ef\n        platform: linux/amd64\n    paths:\n      - /usr/bin/mongod\n\n  - version: 1.25.1\n    images:\n      - ref: nginx:1.25.1@sha256:73e957703f1266530db0aeac1fd6a3f87c1e59943f4c13eb340bb8521c6041d7\n        platform: linux/amd64\n    paths:\n      - /usr/sbin/nginx\n\n  - name: nginx-openresty\n    version: 1.21.4.3\n    images:\n      - ref: openresty/openresty:1.21.4.3-2-alpine-fat@sha256:9f9b9d86f2a0f903b1226c3e8a6790293cbb58e521a186ac0031a030ea42c39b\n        platform: linux/amd64\n    paths:\n      - /usr/local/openresty/nginx/sbin/nginx\n\n  - version: 0.10.48\n    images:\n      - ref: node:0.10.48@sha256:c32b4d56f05c69df6e87d06bf7d5f6a5c6a0e7bcdb8e5ffab0e7a1853a90008f\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/node\n\n  - version: 0.12.18\n    images:\n      - ref: node:0.12.18@sha256:02e8e9903c8d974e8874d0144413d398a41d62f54bafec4d2cf3ac2a8501dd28\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/node\n\n  - version: 4.9.1\n    images:\n      - ref: node:4.9.1@sha256:41d0ad2557ea2a9e57e1a458c1d659e92f601586e07dcffef74c9cef542f6f6e\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/node\n\n  - version: 19.2.0\n    images:\n      - ref: node:19.2.0@sha256:9bf5846b28f63acab0ccb0a39a245fbc414e6b7ecd467282f58016537c06e159\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/node\n\n  - name: java-jdk-oracle\n    version: 1.8.0_451-b10\n    images:\n      - ref: container-registry.oracle.com/java/jdk:8u451-oraclelinux8@sha256:f9c980e52853bd0a8815ad908c9a4025ed68cb52f31f3b8cd0cd442ee367bfd1\n        platform: linux/amd64\n    paths:\n      - /usr/java/jdk-8/bin/java\n      - /usr/java/jdk-8/bin/jdb\n\n  - name: java-jre-oracle-sdk\n    version: 1.8.0_451-b10\n    images:\n      - ref: container-registry.oracle.com/java/serverjre:1.8.0_451@sha256:fe78fe3efd292dceb5685882ce1b13eb78492f383ccfd52a1b88a4f755b9d996\n        platform: linux/amd64\n    paths:\n      - /usr/java/jdk-8/bin/java\n\n  - name: java-jre-openjdk\n    version: 1.8.0_352-b08\n    images:\n      # note: \"openjdk\" dockerhub repo is deprecated\n      - ref: amazoncorretto:8u352@sha256:392eb90b5f1455578f513e127c599aa4410af0c05b12b81dc7856ee316ecd5d9\n        platform: linux/amd64\n    paths:\n      - /usr/lib/jvm/java-1.8.0-amazon-corretto/bin/java\n\n  - name: java-jre-openjdk\n    version: 11.0.17\n    images:\n      # note: \"openjdk\" dockerhub repo is deprecated\n      - ref: amazoncorretto:11.0.17@sha256:792e94e61407ef28d981a0b9a9aeb309690375a61a61f17808499ff16864d0a3\n        platform: linux/amd64\n    paths:\n      - /usr/lib/jvm/java-11-amazon-corretto/bin/java\n\n  - name: java-jre-openjdk-eclipse\n    version: 11.0.22\n    images:\n      - ref: eclipse-temurin:11.0.22_7-jre@sha256:137960b9ec016cddeb366b7137546d37207d0f284f9492c23abf16a9c171dd51\n        platform: linux/amd64\n    paths:\n      - /opt/java/openjdk/bin/java\n\n  - name: java-jre-openjdk-arm64-eclipse\n    version: 11.0.22\n    images:\n      - ref: eclipse-temurin:11.0.22_7-jre@sha256:9bb82e8801e12e5377222fde83b5c91d87dc16f76c89e9f8affa678208f56797\n        platform: linux/arm64\n    paths:\n      - /opt/java/openjdk/bin/java\n\n  - name: java-graal-openjdk\n    version: 17.0.3+7-jvmci-22.1-b06\n    images:\n      - ref: springci/graalvm-ce:java17-0.12.x@sha256:110bf78b81e4e29c9217b565f10a1f11bb2ec0486d7336c047d803428e09685d\n        platform: linux/amd64\n    paths:\n      - /opt/java/bin/java\n\n  - name: java-jdk-openjdk\n    version: 21.0.2+13-LTS\n    images:\n      - ref: eclipse-temurin:21.0.2_13-jdk-alpine@sha256:b5d37df8ee5bb964bb340acca83957f9a09291d07768fba1881f6bfc8048e4f5\n        platform: linux/amd64\n    paths:\n      - opt/java/openjdk/bin/jdb\n\n\n# TODO: this is not the original binary used in the test fixture\n#  - version: 5.12.5\n#    images:\n#      - ref: perl:5.12.5@sha256:68169b63f0dc2fd481563ef02d4173979d981e43e5d36bb39af56a5959961c5e\n#        platform: linux/amd64\n#    paths:\n#      - /usr/bin/perl\n#\n  # TODO: this is not the original binary used in the test fixture\n#  - version: 5.20.0\n#    images:\n#      - ref: perl:5.20.0@sha256:f1b8d36e0be0fd426c40e478fc84ea7603d712158001d72d1b3f929f4e1543f3\n#        platform: linux/amd64\n#    paths:\n#      - /usr/bin/perl\n#\n  # TODO: this is not the original binary used in the test fixture\n#  - version: 5.37.8\n#    images:\n#      - ref: perl:5.37.8@sha256:6a432250d7bf0b736c58772a6a50e2bf9d1485cd70ac3af10eff6cfccde3957b\n#        platform: linux/amd64\n#    paths:\n#      - /usr/bin/perl\n\n  - name: arangodb\n    version: 3.11.8\n    images:\n      - ref: arangodb:3.11.8@sha256:16893e767f47d28e3297839637741e5c4023e815adf860dfc674e1a36c7c7db0\n        platform: linux/amd64\n    paths:\n      - /usr/bin/arangosh\n  - name: arangodb\n    version: 3.12.0-2\n    images:\n      - ref: arangodb:3.12.0.2@sha256:6ba2e4284cd0f4835e3ef034be90fb947c3d61225d65d07e3b2d2d893e47de25\n        platform: linux/amd64\n    paths:\n      - /usr/bin/arangosh\n  - version: 15.1\n    images:\n      - ref: postgres:15.1@sha256:b4140dd3a62f364f16a82c1bd88d28b9887ecb47f07dbe2941237d073574d428\n        platform: linux/amd64\n    paths:\n      - /usr/lib/postgresql/15/bin/postgres\n\n  - version: 15beta4\n    images:\n      - ref: postgres:15beta4@sha256:f2b4d06ac06f0f50236c39289edfd6701eb1313d2d17f3028c8df0c00f2b21db\n        platform: linux/amd64\n    paths:\n      - /usr/lib/postgresql/15/bin/postgres\n\n  - version: 9.6.24\n    images:\n      - ref: postgres:9.6.24@sha256:15055f7b681334cbf0212b58e510148b1b23973639e3904260fb41fa0761a103\n        platform: linux/amd64\n    paths:\n      - /usr/lib/postgresql/9.6/bin/postgres\n\n  - name: python-shared-lib\n    version: 3.7.4\n    images:\n      - ref: python:3.7.4@sha256:5be0532f833568d838b7b2d8726b66d0b8abe26f50a15b566aea4611d5951eac\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/libpython3.7m.so.1.0\n\n  - name: pypy-shared-lib\n    version: 7.3.14\n    images:\n      - ref: pypy:3.9-7.3.14-slim-bullseye@sha256:058f1a0c073534e535aed3d45c1982648378167901a05a0f35056006bf2e13bc\n        platform: linux/amd64\n    paths:\n      - /opt/pypy/bin/libpypy3.9-c.so\n\n  - version: 2.8.23\n    images:\n      - ref: redis:2.8.23@sha256:e507029ca6a11b85f8628ff16d7ff73ae54582f16fd757e64431f5ca6d27a13c\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 4.0.11\n    images:\n      - ref: redis:4.0.11@sha256:ee891094f0bb1a76d11cdca6e33c4fdce5cba1f13234c5896d341f6d741034b1\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 5.0.0\n    images:\n      - ref: redis:5.0.0@sha256:481678b4b5ea1cb4e8d38ed6677b2da9b9e057cf7e1b6c988ba96651c6f6eff3\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 6.0.16\n    images:\n      - ref: redis:6.0.16@sha256:4a32539b1cc25f98d8667d9854840d7bdd27596268ca1ec1e10b5391534c004b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 7.0.0\n    images:\n      - ref: redis:7.0.0@sha256:803ec2b3b74c0f95758bf680d7caa370fa8d3b6058b4d57d6485d06d8027a588\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 7.0.14\n    images:\n      - ref: redis:7.0.14@sha256:f5b0eadaa031b40ca70ab2c6517995da56f763c3929264d7f69b72a94a1b48c1\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 7.2.3\n    images:\n      - ref: redis:7.2.3@sha256:d4c84914b872521e215f77d8845914c2268a96b0e35bacd5691e1f5e1f88b500\n        platform: linux/amd64\n      - ref: redis:7.2.3@sha256:a0a0c38b31011b813cddf78d997f8ccba13019c27efd386984b0cfc1e4b618ff\n        platform: linux/arm64\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 7.2.5\n    images:\n      - ref: redis:7.2.5@sha256:3b44455ef048b5f0a3a26d874c00c0f4ffe6a71a40834f2b038f816c6ad5ca4f\n        platform: linux/386\n    paths:\n      - /usr/local/bin/redis-server\n\n  - version: 9.0.0\n    images:\n      - ref: valkey/valkey:9.0.0@sha256:42ea97850708540d4e05f6241cfbd241c1ba502e64d9a42efb2c2e277a8ca9d6\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/valkey-server\n\n  - version: 2.9.0\n    images:\n      - ref: wordpress:cli-2.9.0-php8.3@sha256:3a008aafccc6a8d2d7ec2b069722cb43b3569b61cd833f9f2f13d74a9284746e\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/wp\n\n  - version: 1.9.3p551\n    images:\n      - ref: ruby:1.9.3-p551@sha256:56b4a74e4fc2492b3b857bc94454dfa910f61e823a4bfab275d279bfa218eb05\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n\n  - name: rust-libstd\n    version: 1.50.0\n    images:\n      - ref: rust:1.50.0@sha256:a37b2a5ba365b9ad5a1b12ff924adb0c0cc27d994e076bbc488a91befb69bf0b\n        platform: linux/amd64\n    paths:\n      - /usr/local/rustup/toolchains/1.50.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6f77337c1826707d.so\n\n  - name: rust-libstd\n    version: 1.67.1\n    images:\n      - ref: rust:1.67.1@sha256:80b9716cb59872769d49f5185a346e5f859081b02338e4aaaa04a8cc7fb884ae\n        platform: linux/amd64\n    paths:\n      - /usr/local/rustup/toolchains/1.67.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-c6192dd4c4d410ac.so\n\n  - name: rust-libstd-musl\n    version: 1.67.1\n    images:\n      - ref: rust:1.67.1-alpine@sha256:555332e59c7513233b0f9b52e4fad2924e36128edcb0f80aa97fb34efee3da0e\n        platform: linux/amd64\n    paths:\n      - /usr/local/rustup/toolchains/1.67.1-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-86aefecbddda356d.so\n\n\n  - version: 1.7.34\n    images:\n      - ref: traefik:1.7.34@sha256:d7bacaf9ca8d59b0e7c304920629d98bb98a545127ca4b10e16c8b252b9351b9\n        platform: linux/amd64\n    paths:\n      - /traefik\n\n  - version: 2.9.6\n    images:\n      - ref: traefik:v2.9.6@sha256:9e76f2ec1bc470ae73a7306acce18e6ca1dbb582e7366b31cbf439f631cda12c\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/traefik\n\n  - version: 2.10.7\n    images:\n      - ref: traefik:2.10.7@sha256:a98415716a91066ef5e442969887ebb3df7d80775b5bfa7b67fcaed989833d84\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/traefik\n\n  - version: 3.0.4\n    images:\n      - ref: traefik:3.0.4@sha256:12a7cc4232b5b7fe027673da8c096144525f59a8eabc87e52260aac0ec5a1219\n        platform: linux/riscv64\n    paths:\n      - /usr/local/bin/traefik\n\n  - version: 3.6.5\n    images:\n      - ref: traefik:v3.6.5@sha256:d944e3693bbf5a361ddd2e411bb713049cfb4f5ff3da200b30ee7a347dbd6abd\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/traefik\n\n  # from the original dynamic fixtures...\n\n  - name: python-rhel-shared-libs\n    version: 3.9\n    images:\n      - ref: registry.access.redhat.com/ubi8/python-39@sha256:f3cf958b96ce016b63e3e163e488f52e42891304dafef5a0811563f22e3cbad0\n        platform: linux/amd64\n    paths:\n      - /usr/bin/python3.9\n      - /usr/lib64/libpython3.9.so.1.0\n\n  - name: python-slim-shared-libs\n    version: 3.11\n    images:\n      - ref: python:3.11-slim@sha256:0b106e1d2bf485c2a41474bc9cd5103e9eea4e179f40f10741b53b127059221e\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/python3.11\n      - /usr/local/lib/libpython3.11.so.1.0\n\n  - version: 3.9.16\n    images:\n      - ref: python:3.9.16-bullseye@sha256:93fb93c461a2e47a2176706fad1f39eaacd5dd40e19c0b018699a28c03eb2e2a\n        platform: linux/amd64\n    paths:\n      - /usr/bin/python3.9\n\n  - name: python-alpine-shared-libs\n    version: 3.4\n    images:\n      - ref: python:3.4-alpine@sha256:c210b660e2ea553a7afa23b41a6ed112f85dbce25cbcb567c75dfe05342a4c4b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/python3.4\n      - /usr/local/lib/libpython3.4m.so.1.0\n\n  - name: ruby-bullseye-shared-libs\n    version: 3.2.1\n    images:\n      - ref: ruby:3.2.1-bullseye@sha256:b4a140656b0c5d26c0a80559b228b4d343f3fdbf56682fcbe88f6db1fa9afa6b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.3.2.1\n      - /usr/local/lib/libruby.so.3.2\n\n  - name: ruby-bullseye-shared-libs\n    version: 2.7.7\n    images:\n      - ref: ruby:2.7.7-bullseye@sha256:055191740a063f33fef1f09423e5ed8f91143aae62a3772a90910118464c5120\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.2.7.7\n      - /usr/local/lib/libruby.so.2.7\n\n  - name: ruby-shared-libs\n    version: 3.4.0-dev\n    images:\n      - ref: rubylang/ruby:master-dev-nightly-20240804-focal@sha256:b5fe8b9ac1e9638a4b08bda6a6343082a07623d1c01926e637eb4bbbbf159409\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.3.4.0\n      - /usr/local/lib/libruby.so.3.4\n\n  - name: ruby-shared-libs\n    version: 3.4.0-preview1\n    images:\n      - ref: ruby:3.4.0-preview1@sha256:88cad31539e1a4ab987ac4b00c45b86d8346c25e3b08ac647ccccfb21cee5890\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.3.4.0\n      - /usr/local/lib/libruby.so.3.4\n\n  - name: ruby-shared-libs\n    version: 3.3.0-rc1\n    images:\n      - ref: ruby:3.3.0-rc1@sha256:453c8bbb9b4e3b04b94ba58db77b648222f3c92936dc12b5ae96df48076c106b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.3.3.0\n      - /usr/local/lib/libruby.so.3.3\n\n  - name: ruby-shared-libs\n    version: 2.6.10\n    images:\n      - ref: ruby:2.6.10@sha256:771a810704167e55da8a19970c5dfa6eb795dfee32547adffa29ea72703f7243\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/ruby\n      - /usr/local/lib/libruby.so.2.6.10\n      - /usr/local/lib/libruby.so.2.6\n\n  - version: 3.11.1\n    images:\n      - ref: alpine/helm:3.11.1@sha256:8628e3695fb743a8b9de89626f1b7a221280c2152c0e288c2504e59b68233e8b\n        platform: linux/amd64\n    paths:\n      - /usr/bin/helm\n\n  - version: 3.10.3\n    images:\n      - ref: argoproj/argocd:v2.6.4@sha256:61fcbba187ff53c00696cb580edf70cada59c45cf399d8477631acf43cf522ee\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/helm\n\n  - version: 1.15.2\n    images:\n      - ref: hashicorp/consul:1.15.2@sha256:c2169f3bb18dd947ae8eb5f6766896695c71fb439f050a3343e0007d895615b8\n        platform: linux/amd64\n    paths:\n      - /bin/consul\n\n  - version: 1.20.2\n    images:\n      - ref: hashicorp/vault@sha256:5cd2003247e0a574a66c66aee1916b1e9e7f99640298f2e61271a8842d2d2a19\n        platform: linux/amd64\n    paths:\n      - /bin/vault\n\n  - version: 1.19.4\n    images:\n      - ref: hashicorp/vault@sha256:b5f675b0bf681568cd7354c697fe4ce953024312d6d23ee7216deda60c192bad\n        platform: linux/arm64\n    paths:\n      - /bin/vault\n\n  - version: 3.0.2\n    images:\n      - ref: fluent/fluent-bit:3.0.2-amd64@sha256:7e6fe8efd51dda0739e355f58bf5e3b1623cbf2d4a23c06c7a365d9553e2d242\n        platform: linux/amd64\n    paths:\n      - /fluent-bit/bin/fluent-bit\n\n  - version: 2.2.1\n    images:\n      - ref: fluent/fluent-bit:2.2.1-arm64@sha256:28eb03950eb0dac0ca6faead7fdd7261291d669a2b2f010113dab2c25b52b6bf\n        platform: linux/arm64\n    paths:\n      - /fluent-bit/bin/fluent-bit\n\n  - version: 1.7.0-dev-3\n    images:\n      - ref: fluent/fluent-bit:1.7.0-dev-3@sha256:d8105ebefa27ca7d8ad2233ab0a4364ff43a9b31c484bde27f0d3d18988b34a0\n        platform: linux/amd64\n    paths:\n      - /fluent-bit/bin/fluent-bit\n\n  - version: 1.3.10\n    images:\n      - ref: fluent/fluent-bit:1.3.10@sha256:98b32ef90c3ee3f6981b2cf31b70dc7d6104c9800b7287d4758318e0c19f96a9\n        platform: linux/arm\n    paths:\n      - /fluent-bit/bin/fluent-bit\n\n  - name: openssl\n    version: 1.1.1w\n    images:\n      - ref: openresty/openresty:1.25.3.1-2-alpine@sha256:b1cb45b1556801b8cb1bc29ea78faf2eaf67926a37b052dd070866e44d7df07a\n        platform: linux/arm64\n    paths:\n      - /usr/local/openresty/openssl/bin/openssl\n\n  - name: curl\n    version: 8.9.1\n    images:\n      - ref: curlimages/curl:8.9.1@sha256:8addc281f0ea517409209f76832b6ddc2cabc3264feb1ebbec2a2521ffad24e4\n        platform: linux/amd64\n    paths:\n      - /usr/bin/curl\n\n  - name: lighttpd\n    version: 1.4.76\n    images:\n      - ref: jitesoft/lighttpd:1.4.76-cgi@sha256:f5d4500bfb992a20ca39369ae1ca1d8a7a9463bb8c59ee8dd85ddb6d96fc9fc1\n        platform: linux/amd64\n    paths:\n      - /usr/local/sbin/lighttpd\n\n  - name: proftpd\n    version: 1.3.8b\n    images:\n      - ref: mekayelanik/proftpd-server-alpine:1.3.8b-r2@sha256:a1ef73a2de04999e53bf728b548ef9922febab8f5709037e40e0141cedcd66db\n        platform: linux/amd64\n    paths:\n      - /usr/sbin/proftpd\n\n  - name: zstd\n    version: 1.5.6\n    images:\n      - ref: danysk/zstd:1.5.6@sha256:5eceba085b3a399592755dd66a37b8adfb83538af3f56b51bec6e6cc955e3b5f\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/zstd\n\n  - name: xz\n    version: 5.6.2\n    images:\n      - ref: docker:27.2.1@sha256:c51fa20028ff6590588d9ed97d3b16865d503a3d7228aa885871c5c292afa5ca\n        platform: linux/amd64\n    paths:\n      - /usr/bin/xz\n\n  - name: gzip\n    version: 1.12\n    images:\n      - ref: ubuntu:24.04@sha256:d35dfc2fe3ef66bcc085ca00d3152b482e6cafb23cdda1864154caf3b19094ba\n        platform: linux/amd64\n    paths:\n      - /usr/bin/gzip\n\n  - name: sqlcipher\n    version: 4.5.5\n    images:\n      - ref: yspreen/sqlcipher@sha256:93189cc465661f16ad23f3ace4206179bdd19967deaf08c54da5ac1e34bb6fb7\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/sqlcipher\n\n  - name: jq\n    version: 1.7.1\n    images:\n      - ref: efrecon/jq:1.7.1@sha256:0ad05e2e6d1dea5fe0852ecc23114eb768d60c4ce0985d729eb958809e7f31dd\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/jq\n\n  - name: ffmpeg\n    version: 8.0\n    images:\n      - ref: linuxserver/ffmpeg:version-8.0-cli@sha256:9d7e80710e7f11a276a4185f07e5e81db26fc7027ea70d1591f93ddf58e36ab4\n        platform: linux/amd64\n      - ref: linuxserver/ffmpeg:arm64v8-version-8.0-cli@sha256:0b6cf2e15a78094396f23a7cb3afaf7dffcad195573a2b97f190eae1ee1a0420\n        platform: linux/arm64\n    paths:\n      - /usr/local/bin/ffmpeg\n\n  - name: ffmpeg\n    version: 7.1.1\n    images:\n      - ref: linuxserver/ffmpeg:7.1.1@sha256:aea59a11c54291ac456bb2d67000445e5a8994f70bc3d96cdc29f022fbbf89fb\n        platform: linux/amd64\n      - ref: linuxserver/ffmpeg:arm64v8-7.1.1@sha256:b2aa507f205ea2dc32369c55d0f93b5649f1b39e42d9e6cd27bd53def7a63655\n        platform: linux/arm64\n    paths:\n      - /usr/local/bin/ffmpeg\n\n  - name: ffmpeg-shared-libs\n    version: 5.1.4\n    images:\n      - ref: demisto/opencv:1.0.0.111908@sha256:abba3aab213990c666900a93db03420238527b757bf5825543cf7b4c5e11ac65\n        platform: linux/amd64\n    paths:\n      - /usr/local/lib/python3.11/site-packages/opencv_contrib_python.libs/libavcodec-9aae324f.so.59.37.100\n\n  - name: istio_pilot-discovery\n    version: 1.26.8\n    images:\n      - ref: istio/pilot:1.26.8@sha256:977d7941743cde8eb4868a00d8493ea3c18bb92622d5e6d9003c5d4f95780e69\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-discovery\n\n  - name: istio_pilot-discovery\n    version: 1.8.0\n    images:\n      - ref: istio/pilot:1.8.0@sha256:2a11b6eab182a62ba44686c6cee35a6fceae782c4aa5532f4ade023c8c177bd0\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-discovery\n\n  - name: istio_pilot-discovery\n    version: 1.3.8\n    images:\n      - ref: istio/pilot:1.3.8@sha256:e86394d237e1626f117cadea3588c5182d63b6a8712f9763ee419d4c72e7669b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-discovery\n\n  - name: istio_pilot-discovery\n    version: 1.1.17\n    images:\n      - ref: istio/pilot:1.1.17@sha256:79a39ea04dbf7f9e36be80439d44f82968073eea307a58a6b073b551063ec629\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-discovery\n\n  - name: istio_pilot-agent\n    version: 1.26.8\n    images:\n      - ref: istio/proxyv2:1.26.8@sha256:a5ef82f7954bb4137244b7dbc1b4bd30382673c9425d74933da6f2de2c3a345b\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-agent\n\n  - name: istio_pilot-agent\n    version: 1.8.0\n    images:\n      - ref: istio/proxyv2:1.8.0@sha256:8721ddb5acf86dbe9d4c68993947c27d4b98a6d23ecde80246c74bf8bebd163f\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-agent\n\n  - name: istio_pilot-agent\n    version: 1.1.17\n    images:\n      - ref: istio/proxyv2:1.1.17@sha256:f97470c9b3124c19069ce9b773198da0efddbeea85dd33f88e2fb4f3b0c55e31\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/pilot-agent\n\n  - name: grafana\n    version: 12.3.1\n    images:\n      - ref: grafana/grafana:12.3.1@sha256:7c064e627d9cb50c3485c9ded5ca0222de89a08e41403322a0c3ca6f1777a8d1\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 12.4.0-22081664032\n    images:\n      - ref: grafana/grafana:12.4.0-22081664032@sha256:8650c85610349a76072bc861bf2b5d2afba81c5f8e79e549b97698a3f6d088c3\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 12.3.2-security-01\n    images:\n      - ref: grafana/grafana:12.3.2-security-01@sha256:5683be4319a6da1d6ab28c3443b3739683e367f8d72d800638390a04a2680c1c\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 12.2.0-258092\n    images:\n      - ref: grafana/grafana-oss-dev:12.2.0-258092@sha256:b76f1efbd96da374567c6ee65b3d0de11351bca4cf84afce2e28ee44ac99ea47\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 12.0.0\n    images:\n      - ref: grafana/grafana:12.0.0@sha256:884f0f140669a5b9dccee1baece011a3fa5dd1951f1ba158b03de8ad1d178380\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 11.0.0-preview\n    images:\n      - ref: grafana/grafana:11.0.0-preview@sha256:efb8bf67a99ac9afc2aaca58a01ec0dff82ac0b1499de1ecf714fcdeab83c23e\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 11.0.0\n    images:\n      - ref: grafana/grafana:11.0.0@sha256:a80bc3848cf5d4b2958ea25dbeb36fa9442ef4be8c73fe4bff11340307c32919\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 10.4.19\n    images:\n      - ref: grafana/grafana:10.4.19@sha256:388cb75aa7ab40af6766f7a8db73c90abfbfb646bf8208e86f7198d2c9530793\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 10.3.12\n    images:\n      - ref: grafana/grafana:10.3.12@sha256:0b9a007bcf831c0d9840b28588f6bcfa12d79fbf4defa8412f9f78329abe211c\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 9.5.21\n    images:\n      - ref: grafana/grafana:9.5.21@sha256:439f57822d2daa899c0a04420488fd7c638c1d41d5db417563692ed0bbbfbb9c\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 9.4.0-beta1\n    images:\n      - ref: grafana/grafana:9.4.0-beta1@sha256:d0060bcf84f0a0897e7c6c7e1b8740d89d10bf55b2dd45ba45942d36e40cdcc7\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 9.3.0-beta1\n    images:\n      - ref: grafana/grafana:9.3.0-beta1@sha256:a70d516522f4a379f3fdd906417086c173f1d123f5ca43e27c382ab30d84da90\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: grafana\n    version: 9.2.20\n    images:\n      - ref: grafana/grafana:9.2.20@sha256:7ac4a4edbd1f4664ab3451a575ee39b2af26b3d6528feecf99b47052e37a1094\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 9.2.13\n    images:\n      - ref: grafana/grafana:9.2.13@sha256:4f218199a2431783a87f35e0ffa631e070f2302935c19f856b7efae8cc117e9e\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana\n\n  - name: grafana\n    version: 9.0.0\n    images:\n      - ref: grafana/grafana:9.0.0@sha256:1fdfc1f6feb47c0007ab59abdc5310493649367d9de1be27cf0e18ff529ca463\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: grafana\n    version: 7.5.17\n    images:\n      - ref: grafana/grafana:7.5.17@sha256:6d4ab5ab5031f2725635522c28aa9917c6e614c49513a3f5c864900b868ea79a\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: grafana\n    version: 6.7.6\n    images:\n      - ref: grafana/grafana:6.7.6@sha256:7ee99c7f0835f1023b3a56c275da8bb37068ab9fcd5e33378c65435928d54dd0\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: grafana\n    version: 6.7.0-test\n    images:\n      - ref: grafana/grafana:6.7.0-test@sha256:04f5417aadbb4998ad919fc991856030418be02bc660a7b35909f13903a67caf\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: grafana\n    version: 6.0.0-beta1\n    images:\n      - ref: grafana/grafana:6.0.0-beta1@sha256:375e736fded8e07d696a2aa446cc0aecced9963dbd77e40be1a8dd820575a17a\n        platform: linux/amd64\n    paths:\n      - /usr/share/grafana/bin/grafana-server\n\n  - name: qt\n    version: 6.5.0\n    images:\n      - ref: stateoftheartio/qt6:6.5-gcc-aqt@sha256:c0dfd1cd174d855f0157ce0455270b2ee49f5eea4c7a40ffe0e848d41ae4d074\n        platform: linux/amd64\n    paths:\n      - /opt/Qt/6.5.0/gcc_64/lib/libQt6Core.so.6.5.0\n\n  - name: qt\n    version: 5.15.2\n    images:\n      - ref: rabits/qt:5.15-desktop@sha256:8dd10b4fcdece7e329dd2b9db52dafcd6590940954bc36d5018567e850d9599c\n        platform: linux/amd64\n    paths:\n      - /opt/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5.15.2\n\n  - name: qt\n    version: 4.8.6\n    images:\n      - ref: uvatbc/qt:qt4@sha256:9d6f18e000df14077f4c96e487fc84e02f1cef19c27f2a8f66f161b8a1ef6b06\n        platform: linux/amd64\n    paths:\n      - /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6\n  - version: 1.36.4\n    images:\n      - ref: envoyproxy/envoy:v1.36.4@sha256:ae31562b8cede20913a2d3d6a4f44c8479a50551e033cb8ef7bb8e38cec4b573\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.34.5\n    images:\n      - ref: envoyproxy/envoy:v1.34.5@sha256:8ed42378a045901df417eaf8dbaba8b24aead1e995bf1b0277d907ed6320322c\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.28.7\n    images:\n      - ref: envoyproxy/envoy:v1.28.7@sha256:c62d3ccc883457d5403a0f77b31cf2f6d35572f3f9c1c0dd93498c39a281dcfc\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.22.11\n    images:\n      - ref: envoyproxy/envoy:v1.22.1@sha256:1385b1f75e74aef47b2cb1bafdffa43b171cf32b70e8e97d9f5d7cbf161a390a\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.20.7\n    images:\n      - ref: envoyproxy/envoy:v1.20.7@sha256:ca581c36093f2b78d371bff49198cd2cf06753a3ae6d91699788772842e67e3c\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.18.6\n    images:\n      - ref: envoyproxy/envoy:v1.18.6@sha256:a49240deca44017155b880172f3b2919fc26d554ad301a6f9941421849337c08\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.14.3\n    images:\n      - ref: envoyproxy/envoy:v1.14.3@sha256:295522f90150dc787cc7fd4b104402c43ae53ffec82b2afcb1767cfdbfce2306\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.11.0\n    images:\n      - ref: envoyproxy/envoy:v1.11.0@sha256:3b3eb76bc74c8e36e0ed3507844b6c12f69e9efa7588a7e35a29f90ee3e90067\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n\n  - version: 1.6.0\n    images:\n      - ref: envoyproxy/envoy:v1.6.0@sha256:6d02409028d76b69bc348650e080e68fd81b863e68aa16e96c95d74ab0f16f24\n        platform: linux/amd64\n    paths:\n      - /usr/local/bin/envoy\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/custom/extra/foo",
    "content": "blah\nfoobar 1.2.3\nbaz"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/Dockerfile",
    "content": "FROM rockylinux:8 AS base\n\nRUN dnf update -y; \\\n\tdnf install make automake gcc gcc-c++ kernel-devel -y; \\\n\tdnf clean all\nRUN mkdir -p /usr/local/bin/elftests/elfbinwithnestedlib\nRUN mkdir -p /usr/local/bin/elftests/elfbinwithsisterlib\nRUN mkdir -p /usr/local/bin/elftests/elfbinwithcorrupt\n\nCOPY ./elfbinwithnestedlib /usr/local/bin/elftests/elfbinwithnestedlib\nCOPY ./elfbinwithsisterlib /usr/local/bin/elftests/elfbinwithsisterlib\nCOPY ./elfbinwithcorrupt /usr/local/bin/elftests/elfbinwithcorrupt\n\nENV LD_LIBRARY_PATH=/usr/local/bin/elftests/elfbinwithnestedlib/bin/lib\n\nWORKDIR /usr/local/bin/elftests/elfbinwithnestedlib/\nRUN make\n\nWORKDIR /usr/local/bin/elftests/elfbinwithsisterlib\nRUN make\nWORKDIR /usr/local/bin/elftests/elfbinwithcorrupt\nRUN make\n\n# let's make the test image smaller, since we only require the built binaries and supporting libraries\nFROM busybox:1.36.1-musl\n\nCOPY --from=base /usr/local/bin/elftests /usr/local/bin/elftests\nCOPY --from=base /var/lib/rpm /var/lib/rpm\nCOPY --from=base '/usr/lib64/libstdc++.so.6.0.25' '/usr/lib64/libstdc++.so.6.0.25'\nCOPY --from=base '/usr/lib64/libstdc++.so.6' '/usr/lib64/libstdc++.so.6'\nCOPY --from=base '/usr/lib64/libc.so.6' '/usr/lib64/libc.so.6'\nCOPY --from=base '/usr/lib64/libc.so' '/usr/lib64/libc.so'\n\n# prove we can operate over symlinks (/lib64 -> usr/lib64)\nRUN ln -s /usr/lib64 /lib64\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/README.md",
    "content": "## Summary\nThis image illustrates a few examples of how ELF executables can be assembled and illustrated in an SBOM.\n\n### Example 1: elf-testdata/elfbinwithsisterlib\nThis example builds two binaries with srcs found in elfsrc1 and elfsrc2.\n\n\n\n- 3 separate libs, two with the same name, 1 different, all different locations, but same output when:\n\n\n\n```\nobjdump -s -j .note.package  /usr/local/bin/elftests/elfbinwithnestedlib/bin/lib/libhello_world.so\n\n/usr/local/bin/elftests/elfbinwithnestedlib/bin/lib/libhello_world.so:     file format elf64-littleaarch64\n\nContents of section .note.package:\n 0000 7b227479 7065223a 20227465 73746669  {\"type\": \"testfi\n 0010 78747572 65222c22 6c696365 6e736522  xture\",\"license\"\n 0020 3a224d49 54222c22 636f6d6d 6974223a  :\"MIT\",\"commit\":\n 0030 22353533 34633338 64306666 65663961  \"5534c38d0ffef9a\n 0040 33663833 31353466 30623761 37666236  3f83154f0b7a7fb6\n 0050 61623061 62366462 62222c22 736f7572  ab0ab6dbb\",\"sour\n 0060 63655265 706f223a 22687474 70733a2f  ceRepo\":\"https:/\n 0070 2f676974 6875622e 636f6d2f 736f6d65  /github.com/some\n 0080 6f6e652f 736f6d65 77686572 652e6769  one/somewhere.gi\n 0090 74222c22 76656e64 6f72223a 20227379  t\",\"vendor\": \"sy\n 00a0 6674222c 22737973 74656d22 3a202273  ft\",\"system\": \"s\n 00b0 79667473 7973222c 226e616d 65223a20  yftsys\",\"name\":\n 00c0 226c6962 68656c6c 6f5f776f 726c642e  \"libhello_world.\n 00d0 736f222c 22766572 73696f6e 223a2022  so\",\"version\": \"\n 00e0 302e3031 222c2270 75726c22 3a202270  0.01\",\"purl\": \"p\n 00f0 6b673a67 656e6572 69632f73 79667473  kg:generic/syfts\n 0100 79732f73 79667474 65737466 69787475  ys/syfttestfixtu\n 0110 72654030 2e303122 2c226370 65223a20  re@0.01\",\"cpe\":\n 0120 22637065 3a2f6f3a 73796674 3a737966  \"cpe:/o:syft:syf\n 0130 74737973 5f746573 74666978 74757265  tsys_testfixture\n 0140 5f737966 74746573 74666978 74757265  _syfttestfixture\n 0150 3a302e30 31227d0a                    :0.01\"}.\n```\n\n### Binaries\n```\n/usr/local/bin/elftests/elfbinwithnestedlib/bin/elfbinwithnestedlib\n/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin2\n/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin1\n```\n\n#### Libraries\n```\n/usr/local/bin/elftests/elfbinwithnestedlib/bin/lib/libhello_world.so\n/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world.so\n/usr/local/bin/elftests/elfbinwithsisterlib/lib/libhello_world2.so\n```\n\n#### Binaries related to Libraries\nThe resulting SBOM should show the following relationships:\n```\nelfbinwithnestedlib -> libhello_world.so\nelfwithparallellibbin2 -> libhello_world.so\nelfwithparallellibbin1 -> libhello_world2.so\n```\n#### Desired State\nWe want to drop the package to file relationships and instead do package to package\n\nSingle relationship\nElfPackage `libhellp_world.so` -> ElfPackage `syfttestfixture` library\n\nAlso relationship between the binaries and the rpm packages transitive dependencies that come from the library\n\n#### Actual state\n```mermaid\nflowchart\n    nested(.../bin/elfbinwithnestedlib)\n    parallel1(.../bin/elfwithparallellibbin1)\n    parallel2(.../bin/elfwithparallellibbin2)\n    \n    nestedLib(.../nested/bin/lib/libhello_world.so)\n    sisterLib1(.../sister/lib/libhello_world.so)\n    sisterLib2(.../sister/lib/libhello_world2.so)\n    \n    libc(libc.so.6)\n    libstdc(libstdc++.so.6)\n\n    nested --> |imports ../bin/lib/libhello_world.so| nestedLib\n    nested --> |imports libhello_world.so| sisterLib1\n    nested --> |imports libstdc++.so.6| libstdc\n    nested --> |imports libc.so.6| libc\n\n    nestedLib --> |imports libc.so.6| libc\n    sisterLib1 --> |imports libc.so.6| libc\n\n    parallel1 --> nestedLib\n    parallel1 --> sisterLib1\n    parallel1 --> libstdc\n    parallel1 --> libc\n\n    parallel2 --> |imports ../lib/libhello_world2.so| sisterLib2\n    parallel2 --> |imports libhello_world2.so| sisterLib2\n    parallel2 --> libstdc\n    parallel2 --> libc\n\n\n    sisterLib2 --> libc\n```\n\n#### Desired relationships\n```mermaid\nflowchart LR\n    %% Data sync workflow...\n\n    subgraph logicalAppPackage [ELF Package - 'syfttestfixture']\n        nested(.../bin/elfbinwithnestedlib)\n        parallel1(.../bin/elfwithparallellibbin1)\n        parallel2(.../bin/elfwithparallellibbin2)\n    end\n\n\n    subgraph logicalLibPackage [ELF Package - 'libhello_world.so']\n        nestedLib(.../nested/bin/lib/libhello_world.so)\n        sisterLib1(.../sister/lib/libhello_world.so)\n        sisterLib2(.../sister/lib/libhello_world2.so)\n    end\n\n\n    logicalLibPackage --> |dependency-of| logicalAppPackage\n\n  \n    %% RPM packages\n\n    libstdc(libstdc++) --> |dependency-of| logicalAppPackage\n    glibc(glibc) --> |dependency-of| logicalAppPackage\n    glibc(glibc) --> |dependency-of| logicalLibPackage\n```\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithcorrupt/elfsrc/hello_world.cpp",
    "content": "#include <iostream>\n#include \"hello_world.h\"\n\nvoid print_hello_world() {\n    std::cout << \"Hello, World!\" << std::endl;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithcorrupt/elfsrc/hello_world.h",
    "content": "\n#ifndef HELLO_WORLD_H\n#define HELLO_WORLD_H\n\n// Function declaration for printing \"Hello, World!\" to stdout\nvoid print_hello_world();\n\n#endif // HELLO_WORLD_H\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithcorrupt/elfsrc/makefile",
    "content": "LDFLAGS := -L/lib64 -lstdc++\n\nSRC_DIR := ./\nBUILD_DIR := ../build\nBIN_DIR := ../bin\nLIB_DIR := $(BIN_DIR)/lib\n\nLIB_NAME := hello_world\nLIB_SRC := $(SRC_DIR)/hello_world.cpp\nLIB_OBJ := $(BUILD_DIR)/$(LIB_NAME).o\nLIB_SO := $(LIB_DIR)/lib$(LIB_NAME).so\n\nEXECUTABLE := elfbinwithnestedlib\nEXEC_SRC := $(SRC_DIR)/testbin.cpp\nEXEC_OBJ := $(BUILD_DIR)/$(EXECUTABLE).o\n\n\n\nall: testfixture\n\n$(LIB_SO): $(LIB_OBJ) | $(LIB_DIR)\n\t$(CC) -shared -o $@ $<\n\techo '{ corrupt json \"system\": \"syftsys\",\"name\": \"libhello_world.so\",\"version\": \"0.01\",\"pure:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\n$(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -fPIC -c $< -o $@\n\n$(EXEC_OBJ): $(EXEC_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -c $< -o $@\n\n$(BIN_DIR):\n\tmkdir -p $(BIN_DIR)\n$(BUILD_DIR):\n\tmkdir -p $(BUILD_DIR)\n$(LIB_DIR):\n\tmkdir -p $(LIB_DIR)\n\n$(BIN_DIR)/$(EXECUTABLE): $(EXEC_OBJ) $(LIB_SO) | $(BIN_DIR)\n\t$(CC) $(CFLAGS) -o $@ $^ -L$(LIB_DIR) -l$(LIB_NAME) $(LDFLAGS)\n\techo '{corrupt json ..._syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\ntestfixture: $(BIN_DIR)/$(EXECUTABLE)\n\nclean:\n\trm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR) $(EXECUTABLE)\n\n.PHONY: all clean \n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithcorrupt/elfsrc/testbin.cpp",
    "content": "#include \"hello_world.h\"\n\nint main() {\n    // Call the function from the shared library\n    print_hello_world();\n\n    return 0;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithcorrupt/makefile",
    "content": "CC = g++\nCFLAGS = -std=c++17 -Wall -Wextra -pedantic\nBUILD_DIR := ./build\nBIN_DIR := ./bin\nLIB_DIR := $(BIN_DIR)/lib\n\n\n\nall: testfixtures\n\ntestfixtures: \n\t$(MAKE) -C elfsrc\n\t\nclean:\n\trm -rf $(BUILD_DIR) $(BIN_DIR)\n\n.PHONY: all clean testfixtures\n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithnestedlib/elfsrc/hello_world.cpp",
    "content": "#include <iostream>\n#include \"hello_world.h\"\n\nvoid print_hello_world() {\n    std::cout << \"Hello, World!\" << std::endl;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithnestedlib/elfsrc/hello_world.h",
    "content": "\n#ifndef HELLO_WORLD_H\n#define HELLO_WORLD_H\n\n// Function declaration for printing \"Hello, World!\" to stdout\nvoid print_hello_world();\n\n#endif // HELLO_WORLD_H\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithnestedlib/elfsrc/makefile",
    "content": "LDFLAGS := -L/lib64 -lstdc++\n\nSRC_DIR := ./\nBUILD_DIR := ../build\nBIN_DIR := ../bin\nLIB_DIR := $(BIN_DIR)/lib\n\nLIB_NAME := hello_world\nLIB_SRC := $(SRC_DIR)/hello_world.cpp\nLIB_OBJ := $(BUILD_DIR)/$(LIB_NAME).o\nLIB_SO := $(LIB_DIR)/lib$(LIB_NAME).so\n\nEXECUTABLE := elfbinwithnestedlib\nEXEC_SRC := $(SRC_DIR)/testbin.cpp\nEXEC_OBJ := $(BUILD_DIR)/$(EXECUTABLE).o\n\n\n\nall: testfixture\n\n$(LIB_SO): $(LIB_OBJ) | $(LIB_DIR)\n\t$(CC) -shared -o $@ $<\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"libhello_world.so\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\n$(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -fPIC -c $< -o $@\n\n$(EXEC_OBJ): $(EXEC_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -c $< -o $@\n\n$(BIN_DIR):\n\tmkdir -p $(BIN_DIR)\n$(BUILD_DIR):\n\tmkdir -p $(BUILD_DIR)\n$(LIB_DIR):\n\tmkdir -p $(LIB_DIR)\n\n$(BIN_DIR)/$(EXECUTABLE): $(EXEC_OBJ) $(LIB_SO) | $(BIN_DIR)\n\t$(CC) $(CFLAGS) -o $@ $^ -L$(LIB_DIR) -l$(LIB_NAME) $(LDFLAGS)\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"syfttestfixture\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\ntestfixture: $(BIN_DIR)/$(EXECUTABLE)\n\nclean:\n\trm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR) $(EXECUTABLE)\n\n.PHONY: all clean \n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithnestedlib/elfsrc/testbin.cpp",
    "content": "#include \"hello_world.h\"\n\nint main() {\n    // Call the function from the shared library\n    print_hello_world();\n\n    return 0;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithnestedlib/makefile",
    "content": "CC = g++\nCFLAGS = -std=c++17 -Wall -Wextra -pedantic\nBUILD_DIR := ./build\nBIN_DIR := ./bin\nLIB_DIR := $(BIN_DIR)/lib\n\n\n\nall: testfixtures\n\ntestfixtures: \n\t$(MAKE) -C elfsrc\n\t\nclean:\n\trm -rf $(BUILD_DIR) $(BIN_DIR)\n\n.PHONY: all clean testfixtures\n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc1/hello_world.cpp",
    "content": "#include <iostream>\n#include \"hello_world.h\"\n\nvoid print_hello_world() {\n    std::cout << \"Hello, World!\" << std::endl;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc1/hello_world.h",
    "content": "\n#ifndef HELLO_WORLD_H\n#define HELLO_WORLD_H\n\n// Function declaration for printing \"Hello, World!\" to stdout\nvoid print_hello_world();\n\n#endif // HELLO_WORLD_H\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc1/makefile",
    "content": "LDFLAGS := -L/lib64 -lstdc++\n\nSRC_DIR := ./\nBUILD_DIR := ../build\nLIB_DIR := ../lib\nBIN_DIR := ../bin\n\nLIB_NAME := hello_world\nLIB_SRC := $(SRC_DIR)/hello_world.cpp\nLIB_OBJ := $(BUILD_DIR)/$(LIB_NAME).o\nLIB_SO := $(LIB_DIR)/lib$(LIB_NAME).so\n\nEXECUTABLE := elfwithparallellibbin1\nEXEC_SRC := $(SRC_DIR)/testbin.cpp\nEXEC_OBJ := $(BUILD_DIR)/$(EXECUTABLE).o\n\n\n\nall: testfixture\n\n$(LIB_SO): $(LIB_OBJ) | $(LIB_DIR)\n\t$(CC) -shared -o $@ $<\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"libhello_world.so\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\n$(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -fPIC -c $< -o $@\n\n$(EXEC_OBJ): $(EXEC_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -c $< -o $@\n\n$(BIN_DIR):\n\tmkdir -p $(BIN_DIR)\n$(BUILD_DIR):\n\tmkdir -p $(BUILD_DIR)\n$(LIB_DIR):\n\tmkdir -p $(LIB_DIR)\n\n$(BIN_DIR)/$(EXECUTABLE): $(EXEC_OBJ) $(LIB_SO) | $(BIN_DIR)\n\t$(CC) $(CFLAGS) -o $@ $^ -L$(LIB_DIR) -l$(LIB_NAME) $(LDFLAGS)\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"syfttestfixture\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\ntestfixture: $(BIN_DIR)/$(EXECUTABLE)\n\nclean:\n\trm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR) $(EXECUTABLE)\n\n.PHONY: all clean \n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc1/testbin.cpp",
    "content": "#include \"hello_world.h\"\n\nint main() {\n    // Call the function from the shared library\n    print_hello_world();\n\n    return 0;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc2/hello_world2.cpp",
    "content": "#include <iostream>\n#include \"hello_world2.h\"\n\nvoid print_hello_world() {\n    std::cout << \"Hello, World again!!\" << std::endl;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc2/hello_world2.h",
    "content": "\n#ifndef HELLO_WORLD2_H\n#define HELLO_WORLD2_H\n\n// Function declaration for printing \"Hello, World!\" to stdout\nvoid print_hello_world();\n\n#endif // HELLO_WORLD2_H\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc2/makefile",
    "content": "LDFLAGS := -L/lib64 -lstdc++\n\nSRC_DIR := ./\nBUILD_DIR := ../build\nLIB_DIR := ../lib\nBIN_DIR := ../bin\n\nLIB_NAME := hello_world2\nLIB_SRC := $(SRC_DIR)/hello_world2.cpp\nLIB_OBJ := $(BUILD_DIR)/$(LIB_NAME).o\nLIB_SO := $(LIB_DIR)/lib$(LIB_NAME).so\n\nEXECUTABLE := elfwithparallellibbin2\nEXEC_SRC := $(SRC_DIR)/testbin2.cpp\nEXEC_OBJ := $(BUILD_DIR)/$(EXECUTABLE).o\n\n\n\nall: testfixture\n\n$(LIB_SO): $(LIB_OBJ) | $(LIB_DIR)\n\t$(CC) -shared -o $@ $<\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"libhello_world.so\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\n$(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -fPIC -c $< -o $@\n\n$(EXEC_OBJ): $(EXEC_SRC) | $(BUILD_DIR)\n\t$(CC) $(CFLAGS) -c $< -o $@\n\n$(BIN_DIR):\n\tmkdir -p $(BIN_DIR)\n$(BUILD_DIR):\n\tmkdir -p $(BUILD_DIR)\n$(LIB_DIR):\n\tmkdir -p $(LIB_DIR)\n\n$(BIN_DIR)/$(EXECUTABLE): $(EXEC_OBJ) $(LIB_SO) | $(BIN_DIR)\n\t$(CC) $(CFLAGS) -o $@ $^ -L$(LIB_DIR) -l$(LIB_NAME) $(LDFLAGS)\n\techo '{\"type\": \"testfixture\",\"license\":\"MIT\",\"commit\":\"5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb\",\"sourceRepo\":\"https://github.com/someone/somewhere.git\",\"vendor\": \"syft\",\"system\": \"syftsys\",\"name\": \"syfttestfixture\",\"version\": \"0.01\",\"purl\": \"pkg:generic/syftsys/syfttestfixture@0.01\",\"cpe\": \"cpe:/o:syft:syftsys_testfixture_syfttestfixture:0.01\"}' | objcopy --add-section .note.package=/dev/stdin --set-section-flags .note.package=noload,readonly $@\n\ntestfixture: $(BIN_DIR)/$(EXECUTABLE)\n\nclean:\n\trm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR) $(EXECUTABLE)\n\n.PHONY: all clean \n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/elfsrc2/testbin2.cpp",
    "content": "#include \"hello_world2.h\"\n\nint main() {\n    // Call the function from the shared library\n    print_hello_world();\n\n    return 0;\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/elf-testdata/elfbinwithsisterlib/makefile",
    "content": "CC = g++\nCFLAGS = -std=c++17 -Wall -Wextra -pedantic\nBUILD_DIR := ./build\nLIB_DIR := ./lib\nBIN_DIR := ./bin\n\n\nall: testfixtures\n\ntestfixtures: \n\t$(MAKE) -C elfsrc1\n\t$(MAKE) -C elfsrc2\n\nclean:\n\trm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR)\n\n.PHONY: all clean testfixtures\n\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-busybox/Dockerfile",
    "content": "FROM busybox:1.35@sha256:7ae8447f3a7f5bccaa765926f25fc038e425cf1b2be6748727bbea9a13102094\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-dotnet-app/Dockerfile",
    "content": "FROM alpine:latest AS builder\n\nRUN apk add --no-cache wget unzip\nRUN mkdir -p /app\nRUN wget -O /app/minver.nupkg https://www.nuget.org/api/v2/package/minver-cli/4.3.0\nRUN unzip /app/minver.nupkg -d /app/minver\n\nfrom busybox:latest\n\nCOPY --from=builder /app/minver /minver\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-fedora-32bit/Dockerfile",
    "content": "FROM --platform=linux/arm arm32v7/fedora:36 AS build\n\nFROM scratch\nCOPY --from=build /bin/sha256sum /sha256sum\nCOPY --from=build /bin/sha1sum /sha1sum\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-fedora-64bit/Dockerfile",
    "content": "FROM --platform=linux/amd64 fedora:41@sha256:c05bf79137835bf5c521c58f8252d6031780ae865a0379ab57f412e0ac6b42aa AS build\n\n\nFROM scratch\nCOPY --from=build /bin/sha256sum /sha256sum\nCOPY --from=build /bin/sha1sum /sha1sum\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-binary/Dockerfile",
    "content": "FROM anchore/test_images:syft_bin-cf22714@sha256:c27b02c6322180fd8a7a3097d2b430bfdf9ea52ecf136edf258458e82f2c6f21\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-ibm-8/Dockerfile",
    "content": "FROM ibmjava:8@sha256:05ef6b0f754aa3a8cebcec36260a70c234a217b21240a998604f33459037bc08 AS builder\n\nFROM scratch\n\nCOPY --from=builder /opt/ibm/java/jre/bin/java /opt/ibm/java/jre/bin/\nCOPY --from=builder /opt/ibm/java/jre/lib/amd64/jli/libjli.so /opt/ibm/java/jre/lib/amd64/jli/\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-ibm-jre-8/Dockerfile",
    "content": "FROM ibmjava:8-jre@sha256:3588cd1cc9b8646fe03b3b15210e69b1b520f1321f8518b69c0e7013d702fd23 AS builder\n\nFROM scratch\n\nCOPY --from=builder /opt/ibm/java/jre/bin/java /opt/ibm/java/jre/bin/\nCOPY --from=builder /opt/ibm/java/jre/lib/amd64/jli/libjli.so /opt/ibm/java/jre/lib/amd64/jli/\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-ibm-sdk-8/Dockerfile",
    "content": "FROM ibmjava:8-sdk-alpine@sha256:4f8ad2029e78f7b91721745a77fc6011a7c0e09b9edeffb6b20b6ec34a6e63cd AS builder\n\nFROM scratch\n\nCOPY --from=builder /opt/ibm/java/bin/jdb /opt/ibm/java/bin/\nCOPY --from=builder /opt/ibm/java/lib/amd64/jli/libjli.so /opt/ibm/java/lib/amd64/jli/\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-zulu-21/Dockerfile",
    "content": "FROM azul/zulu-openjdk:21-jre-headless@sha256:581ebc852fcd9b52a5979b9b90dbe7cca2736bc1ecf1b9bd08ec41212d6675a4 AS builder\n\nFROM scratch\n\nCOPY --from=builder /usr/lib/jvm/zulu21-ca-amd64/bin/java /usr/lib/jvm/zulu21-ca-amd64/bin/\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-java-zulu-8/Dockerfile",
    "content": "FROM azul/zulu-openjdk:8-latest@sha256:7e3116bf36566e046b763b4a33f410f07f591bc84c391aae4f7891f5ecbb6764 AS builder\n\nFROM scratch\n\nCOPY --from=builder /usr/lib/jvm/zulu8-ca-amd64/bin/jdb /usr/lib/jvm/zulu8-ca-amd64/bin/\n"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-jruby/Dockerfile",
    "content": "FROM --platform=linux/amd64 alpine:latest AS builder\n\nRUN wget -O jruby_windows_9_3_15_0.exe https://s3.amazonaws.com/jruby.org/downloads/9.3.15.0/jruby_windows_9_3_15_0.exe\n\nFROM scratch\n\nCOPY --from=builder /jruby_windows_9_3_15_0.exe /jruby_windows_9_3_15_0.exe"
  },
  {
    "path": "syft/pkg/cataloger/binary/testdata/image-wolfi-64bit-without-version/Dockerfile",
    "content": "FROM --platform=linux/amd64 cgr.dev/chainguard/wolfi-base AS build\n\nFROM scratch\nCOPY --from=build /lib/libBrokenLocale.so.1 /lib/libBrokenLocale.so.1\n\nCMD [\"/bin/sh\"]\n\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: bitnami # MANUAL\n    name: bitnami-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/bitnami/cataloger.go\n      function: NewCataloger\n    selectors: # AUTO-GENERATED\n      - bitnami\n      - image\n      - installed\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseComponentsJSON\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - /opt/bitnami/.bitnami_components.json\n        metadata_types: # AUTO-GENERATED\n          - pkg.BitnamiSBOMEntry\n        package_types: # AUTO-GENERATED\n          - bitnami\n        json_schema_types: # AUTO-GENERATED\n          - BitnamiSbomEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n            comment: legacy components.json format does not include license information\n          - name: dependency.depth\n            default: []\n            comment: legacy format has no dependency relationships\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n            comment: digest field exists but is not captured in metadata\n      - function: parseSBOM\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - /opt/bitnami/**/.spdx-*.spdx\n        metadata_types: # AUTO-GENERATED\n          - pkg.BitnamiSBOMEntry\n        package_types: # AUTO-GENERATED\n          - bitnami\n        json_schema_types: # AUTO-GENERATED\n          - BitnamiSbomEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - BitnamiSBOMEntry.Files\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/cataloger.go",
    "content": "/*\nPackage bitnami provides a concrete Cataloger implementation for capturing packages embedded within Bitnami SBOM files.\n*/\npackage bitnami\n\nimport (\n\t\"context\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst catalogerName = \"bitnami-cataloger\"\n\n// NewCataloger returns a new SBOM cataloger object loaded from saved SBOM JSON.\nfunc NewCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\tWithParserByGlobs(parseSBOM,\n\t\t\t\"/opt/bitnami/**/.spdx-*.spdx\",\n\t\t).\n\t\tWithParserByGlobs(parseComponentsJSON,\n\t\t\t\"/opt/bitnami/.bitnami_components.json\",\n\t\t)\n}\n\nfunc parseSBOM(_ context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\ts, sFormat, _, err := format.Decode(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif s == nil {\n\t\tlog.WithFields(\"path\", reader.RealPath).Trace(\"file is not an SBOM\")\n\t\treturn nil, nil, nil\n\t}\n\n\t// Bitnami exclusively uses SPDX JSON SBOMs\n\tif sFormat != \"spdx-json\" {\n\t\tlog.WithFields(\"path\", reader.RealPath).Trace(\"file is not an SPDX JSON SBOM\")\n\t\treturn nil, nil, nil\n\t}\n\n\tvar pkgs []pkg.Package\n\tvar secondaryPkgsFiles []string\n\tmainPkgID := findMainPkgID(s.Relationships)\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t// We only want to report Bitnami packages\n\t\tif !strings.HasPrefix(p.PURL, \"pkg:bitnami\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tp.FoundBy = catalogerName\n\t\tp.Type = pkg.BitnamiPkg\n\t\t// replace all locations on the package with the location of the SBOM file.\n\t\t// Why not keep the original list of locations? Since the \"locations\" field is meant to capture\n\t\t// where there is evidence of this file, and the catalogers have not run against any file other than,\n\t\t// the SBOM, this is the only location that is relevant for this cataloger.\n\t\tp.Locations = file.NewLocationSet(\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\n\t\t// Parse the Bitnami-specific metadata\n\t\tmetadata, err := parseBitnamiPURL(p.PURL)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\t// Bitnami packages reported in a SPDX file are shipped under the same directory\n\t\t// as the SPDX file itself.\n\t\tmetadata.Path = filepath.Dir(reader.RealPath)\n\t\tif p.ID() != mainPkgID {\n\t\t\tmetadata.Files = packageFiles(s.Relationships, p, metadata.Path)\n\t\t\tsecondaryPkgsFiles = append(secondaryPkgsFiles, metadata.Files...)\n\t\t}\n\n\t\tp.Metadata = metadata\n\n\t\tpkgs = append(pkgs, p)\n\t}\n\t// If there is exactly one package, assume it is the main package\n\tif len(pkgs) == 1 && mainPkgID == \"\" {\n\t\tmainPkgID = pkgs[0].ID()\n\t}\n\n\t// Resolve all files owned by the main package in the SBOM and update the metadata\n\tif mainPkgFiles, err := mainPkgFiles(resolver, reader.RealPath, secondaryPkgsFiles); err == nil {\n\t\tfor i, p := range pkgs {\n\t\t\tif p.ID() == mainPkgID {\n\t\t\t\tmetadata, ok := p.Metadata.(*pkg.BitnamiSBOMEntry)\n\t\t\t\tif !ok {\n\t\t\t\t\tlog.WithFields(\"spdx-filepath\", reader.RealPath).Trace(\"main package in SBOM does not have Bitnami metadata\")\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tmetadata.Files = mainPkgFiles\n\t\t\t\tpkgs[i].Metadata = metadata\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlog.WithFields(\"spdx-filepath\", reader.RealPath, \"error\", err).Trace(\"unable to resolve owned files for main package in SBOM\")\n\t}\n\n\treturn pkgs, filterRelationships(s.Relationships, pkgs), nil\n}\n\n// filterRelationships filters out relationships that are not related to Bitnami packages\n// and replaces the package information with the one with completed info\nfunc filterRelationships(relationships []artifact.Relationship, pkgs []pkg.Package) []artifact.Relationship {\n\tvar result []artifact.Relationship\n\tfor _, r := range relationships {\n\t\tif value, ok := r.From.(pkg.Package); ok {\n\t\t\tfound := false\n\t\t\tfor _, p := range pkgs {\n\t\t\t\tif value.PURL == p.PURL {\n\t\t\t\t\tr.From = p\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !found {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif value, ok := r.To.(pkg.Package); ok {\n\t\t\tfound := false\n\t\t\tfor _, p := range pkgs {\n\t\t\t\tif value.PURL == p.PURL {\n\t\t\t\t\tr.To = p\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !found {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tresult = append(result, r)\n\t}\n\n\treturn result\n}\n\n// findMainPkgID goes through the list of relationships and finds the main package ID\n// which is the one that contains other packages but is not contained by any other package\nfunc findMainPkgID(relationships []artifact.Relationship) artifact.ID {\n\tcontainedByAnother := func(candidateID artifact.ID) bool {\n\t\tfor _, r := range relationships {\n\t\t\tif r.Type != artifact.ContainsRelationship {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif to, ok := r.To.(pkg.Package); ok {\n\t\t\t\tif to.ID() == candidateID {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\tfor _, r := range relationships {\n\t\tif from, ok := r.From.(pkg.Package); ok {\n\t\t\tif !strings.HasPrefix(from.PURL, \"pkg:bitnami\") {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !containedByAnother(from.ID()) {\n\t\t\t\treturn from.ID()\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/cataloger_test.go",
    "content": "package bitnami\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc mustCPEs(s ...string) (c []cpe.CPE) {\n\tfor _, i := range s {\n\t\tnewCPE := cpe.Must(i, \"\")\n\t\tnewCPE.Source = cpe.DeclaredSource\n\t\tc = append(c, newCPE)\n\t}\n\treturn\n}\n\nfunc TestBitnamiCataloger(t *testing.T) {\n\tctx := context.TODO()\n\tpostgresqlMainPkg := pkg.Package{\n\t\tName:      \"postgresql\",\n\t\tVersion:   \"17.2.0-8\",\n\t\tType:      pkg.BitnamiPkg,\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"PostgreSQL\", license.Concluded),\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"PostgreSQL\", license.Declared),\n\t\t),\n\t\tFoundBy: catalogerName,\n\t\tPURL:    \"pkg:bitnami/postgresql@17.2.0-8?arch=arm64&distro=debian-12\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:*:postgresql:postgresql:17.2.0:*:*:*:*:*:*:*\",\n\t\t),\n\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\tName:         \"postgresql\",\n\t\t\tVersion:      \"17.2.0\",\n\t\t\tRevision:     \"8\",\n\t\t\tArchitecture: \"arm64\",\n\t\t\tDistro:       \"debian-12\",\n\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\tFiles: []string{\n\t\t\t\t\"opt/bitnami/postgresql/readme.txt\",\n\t\t\t},\n\t\t},\n\t}\n\tpostgresqlSecondaryPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"geos\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-2.1-only\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-2.1-only\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/geos@3.13.0?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:libgeos:geos:3.13.0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"geos\",\n\t\t\t\tVersion:      \"3.13.0\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"proj\",\n\t\t\tVersion:   \"6.3.2\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/proj@6.3.2?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:proj:proj:6.3.2:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"proj\",\n\t\t\t\tVersion:      \"6.3.2\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"gdal\",\n\t\t\tVersion:   \"3.10.1\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/gdal@3.10.1?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:osgeo:gdal:3.10.1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"gdal\",\n\t\t\t\tVersion:      \"3.10.1\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"json-c\",\n\t\t\tVersion:   \"0.16.20220414\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/json-c@0.16.20220414?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:json-c_project:json-c:0.16.20220414:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"json-c\",\n\t\t\t\tVersion:      \"0.16.20220414\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"orafce\",\n\t\t\tVersion:   \"4.14.1\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"0BSD\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"0BSD\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/orafce@4.14.1?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:orafce:orafce:4.14.1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"orafce\",\n\t\t\t\tVersion:      \"4.14.1\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"pljava\",\n\t\t\tVersion:   \"1.6.8\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/pljava@1.6.8?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:pl/java_project:pl/java:1.6.8:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"pljava\",\n\t\t\t\tVersion:      \"1.6.8\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t\tFiles: []string{\n\t\t\t\t\t\"opt/bitnami/postgresql/share/pljava/pljava-api-1.6.8.jar\",\n\t\t\t\t\t\"opt/bitnami/postgresql/share/pljava/pljava-1.6.8.jar\",\n\t\t\t\t\t\"opt/bitnami/postgresql/share/pljava/pljava-examples-1.6.8.jar\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"unixodbc\",\n\t\t\tVersion:   \"2.3.12\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-2.1-only\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-2.1-only\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/unixodbc@2.3.12?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:unixodbc:unixodbc:2.3.12:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"unixodbc\",\n\t\t\t\tVersion:      \"2.3.12\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"psqlodbc\",\n\t\t\tVersion:   \"16.0.0\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-3.0-only\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"LGPL-3.0-only\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/psqlodbc@16.0.0?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:postgresql:psqlodbc:16.0.0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"psqlodbc\",\n\t\t\t\tVersion:      \"16.0.0\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"protobuf\",\n\t\t\tVersion:   \"3.21.12\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/protobuf@3.21.12?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:golang:protobuf:3.21.12:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"protobuf\",\n\t\t\t\tVersion:      \"3.21.12\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"protobuf-c\",\n\t\t\tVersion:   \"1.5.1\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-2-Clause\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-2-Clause\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/protobuf-c@1.5.1?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:protobuf-c:protobuf-c:1.5.1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"protobuf-c\",\n\t\t\t\tVersion:      \"1.5.1\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"postgis\",\n\t\t\tVersion:   \"3.4.4\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"GPL-2.0-or-later\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"GPL-2.0-or-later\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/postgis@3.4.4?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:postgis:postgis:3.4.4:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"postgis\",\n\t\t\t\tVersion:      \"3.4.4\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"pgaudit\",\n\t\t\tVersion:   \"17.0.0\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"PostgreSQL\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"PostgreSQL\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/pgaudit@17.0.0?arch=arm64&distro=debian-12\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"pgaudit\",\n\t\t\t\tVersion:      \"17.0.0\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"pgbackrest\",\n\t\t\tVersion:   \"2.54.2\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"MIT\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/pgbackrest@2.54.2?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:pgbackrest:pgbackrest:2.54.2:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"pgbackrest\",\n\t\t\t\tVersion:      \"2.54.2\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"wal2json\",\n\t\t\tVersion:   \"2.6.0\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/wal2json@2.6.0?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:wal2json:wal2json:2.6.0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"wal2json\",\n\t\t\t\tVersion:      \"2.6.0\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"nss-wrapper\",\n\t\t\tVersion:   \"1.1.16\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/postgresql/.spdx-postgresql.spdx\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Concluded),\n\t\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"BSD-3-Clause\", license.Declared),\n\t\t\t),\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    \"pkg:bitnami/nss_wrapper@1.1.16?arch=arm64&distro=debian-12\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:*:nss_wrapper:nss_wrapper:1.1.16:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"nss_wrapper\",\n\t\t\t\tVersion:      \"1.1.16\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t}\n\n\tpostgresqlExpectedPkgs := []pkg.Package{postgresqlMainPkg}\n\tpostgresqlExpectedPkgs = append(postgresqlExpectedPkgs, postgresqlSecondaryPkgs...)\n\tpkg.Sort(postgresqlExpectedPkgs)\n\tvar postgresqlExpectedRelationships []artifact.Relationship\n\tfor _, p := range postgresqlSecondaryPkgs {\n\t\tpostgresqlExpectedRelationships = append(postgresqlExpectedRelationships, artifact.Relationship{\n\t\t\tFrom: postgresqlMainPkg,\n\t\t\tTo:   p,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t})\n\t}\n\n\trenderTemplateMainPkg := pkg.Package{\n\t\tName:      \"render-template\",\n\t\tVersion:   \"1.0.7-4\",\n\t\tType:      pkg.BitnamiPkg,\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/render-template/.spdx-render-template.spdx\")),\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"Apache-2.0\", license.Concluded),\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"Apache-2.0\", license.Declared),\n\t\t),\n\t\tFoundBy: catalogerName,\n\t\tPURL:    \"pkg:bitnami/render-template@1.0.7-4?arch=arm64&distro=debian-12\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:*:render-template:render-template:1.0.7:*:*:*:*:*:*:*\",\n\t\t),\n\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\tName:         \"render-template\",\n\t\t\tVersion:      \"1.0.7\",\n\t\t\tRevision:     \"4\",\n\t\t\tArchitecture: \"arm64\",\n\t\t\tDistro:       \"debian-12\",\n\t\t\tPath:         \"opt/bitnami/render-template\",\n\t\t\tFiles:        []string{},\n\t\t},\n\t}\n\n\tredisMainPkg := pkg.Package{\n\t\tName:      \"redis\",\n\t\tVersion:   \"7.4.0-0\",\n\t\tType:      pkg.BitnamiPkg,\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/redis/.spdx-redis.spdx\")),\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"RSALv2\", license.Concluded),\n\t\t\tpkg.NewLicenseFromTypeWithContext(ctx, \"RSALv2\", license.Declared),\n\t\t),\n\t\tFoundBy: catalogerName,\n\t\tPURL:    \"pkg:bitnami/redis@7.4.0-0?arch=arm64&distro=debian-12\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:*:redis:redis:7.4.0:*:*:*:*:*:*:*\",\n\t\t),\n\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\tName:         \"redis\",\n\t\t\tVersion:      \"7.4.0\",\n\t\t\tRevision:     \"0\",\n\t\t\tArchitecture: \"arm64\",\n\t\t\tDistro:       \"debian-12\",\n\t\t\tPath:         \"opt/bitnami/redis\",\n\t\t\tFiles: []string{\n\t\t\t\t\"opt/bitnami/redis/.gitignore\",\n\t\t\t\t\"opt/bitnami/redis/bin/.gitignore\",\n\t\t\t\t\"opt/bitnami/redis/bin/redis-server\",\n\t\t\t},\n\t\t},\n\t}\n\n\tmongodbComponentsPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"gosu\",\n\t\t\tVersion:   \"1.14.0-1\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/gosu@1.14.0-1?arch=amd64&distro=debian-10\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"gosu\",\n\t\t\t\tVersion:      \"1.14.0\",\n\t\t\t\tRevision:     \"1\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-10\",\n\t\t\t\tPath:         \"opt/bitnami/gosu\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"mongodb\",\n\t\t\tVersion:   \"4.4.11-2\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/mongodb@4.4.11-2?arch=amd64&distro=debian-10\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"mongodb\",\n\t\t\t\tVersion:      \"4.4.11\",\n\t\t\t\tRevision:     \"2\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-10\",\n\t\t\t\tPath:         \"opt/bitnami/mongodb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"render-template\",\n\t\t\tVersion:   \"1.0.1-5\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/render-template@1.0.1-5?arch=amd64&distro=debian-10\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"render-template\",\n\t\t\t\tVersion:      \"1.0.1\",\n\t\t\t\tRevision:     \"5\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-10\",\n\t\t\t\tPath:         \"opt/bitnami/render-template\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"wait-for-port\",\n\t\t\tVersion:   \"1.0.1-5\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/wait-for-port@1.0.1-5?arch=amd64&distro=debian-10\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"wait-for-port\",\n\t\t\t\tVersion:      \"1.0.1\",\n\t\t\t\tRevision:     \"5\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-10\",\n\t\t\t\tPath:         \"opt/bitnami/wait-for-port\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"yq\",\n\t\t\tVersion:   \"4.16.2-2\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/yq@4.16.2-2?arch=amd64&distro=debian-10\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"yq\",\n\t\t\t\tVersion:      \"4.16.2\",\n\t\t\t\tRevision:     \"2\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-10\",\n\t\t\t\tPath:         \"opt/bitnami/yq\",\n\t\t\t},\n\t\t},\n\t}\n\tpkg.Sort(mongodbComponentsPkgs)\n\n\tpostgresqlComponentsPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"postgresql\",\n\t\t\tVersion:   \"11.22.0-4\",\n\t\t\tType:      pkg.BitnamiPkg,\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"opt/bitnami/.bitnami_components.json\")),\n\t\t\tFoundBy:   catalogerName,\n\t\t\tPURL:      \"pkg:bitnami/postgresql@11.22.0-4?arch=amd64&distro=debian-11\",\n\t\t\tMetadata: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"postgresql\",\n\t\t\t\tVersion:      \"11.22.0\",\n\t\t\t\tRevision:     \"4\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tDistro:       \"debian-11\",\n\t\t\t\tPath:         \"opt/bitnami/postgresql\",\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname              string\n\t\tfixture           string\n\t\twantPkgs          []pkg.Package\n\t\twantRelationships []artifact.Relationship\n\t\twantErr           require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:              \"parse valid PostgreSQL SBOM\",\n\t\t\tfixture:           \"testdata/json\",\n\t\t\twantPkgs:          postgresqlExpectedPkgs,\n\t\t\twantRelationships: postgresqlExpectedRelationships,\n\t\t\twantErr:           require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:              \"parse valid SBOM that includes both Bitnami and non-Bitnami packages\",\n\t\t\tfixture:           \"testdata/mix\",\n\t\t\twantPkgs:          []pkg.Package{renderTemplateMainPkg},\n\t\t\twantRelationships: nil,\n\t\t\twantErr:           require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:              \"Redis SBOM with not allowed tag-value format\",\n\t\t\tfixture:           \"testdata/tag-value\",\n\t\t\twantPkgs:          nil,\n\t\t\twantRelationships: nil,\n\t\t\twantErr:           require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:              \"Invalid SBOM\",\n\t\t\tfixture:           \"testdata/invalid\",\n\t\t\twantPkgs:          nil,\n\t\t\twantRelationships: nil,\n\t\t\twantErr:           require.Error,\n\t\t},\n\t\t{\n\t\t\tname:              \"SBOM with no relationships\",\n\t\t\tfixture:           \"testdata/no-rel\",\n\t\t\twantPkgs:          []pkg.Package{redisMainPkg},\n\t\t\twantRelationships: nil,\n\t\t},\n\t\t{\n\t\t\tname:              \"parse legacy .bitnami_components.json (MongoDB with multiple components)\",\n\t\t\tfixture:           \"testdata/components-json-mongodb\",\n\t\t\twantPkgs:          mongodbComponentsPkgs,\n\t\t\twantRelationships: nil,\n\t\t\twantErr:           require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:              \"parse legacy .bitnami_components.json (PostgreSQL single component, no digest)\",\n\t\t\tfixture:           \"testdata/components-json-postgresql\",\n\t\t\twantPkgs:          postgresqlComponentsPkgs,\n\t\t\twantRelationships: nil,\n\t\t\twantErr:           require.NoError,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixture).\n\t\t\t\tExpects(tt.wantPkgs, tt.wantRelationships).\n\t\t\t\tWithErrorAssertion(tt.wantErr).\n\t\t\t\tTestCataloger(t, NewCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/package.go",
    "content": "package bitnami\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/bitnami/go-version/pkg/version\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc parseBitnamiPURL(p string) (*pkg.BitnamiSBOMEntry, error) {\n\tpurl, err := packageurl.FromString(p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tv, err := version.Parse(purl.Version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tentry := pkg.BitnamiSBOMEntry{\n\t\tName:     purl.Name,\n\t\tVersion:  strings.TrimSuffix(v.String(), fmt.Sprintf(\"-%s\", v.Revision().String())),\n\t\tRevision: v.Revision().String(),\n\t}\n\n\tfor _, q := range purl.Qualifiers {\n\t\tswitch q.Key {\n\t\tcase \"arch\":\n\t\t\tentry.Architecture = q.Value\n\t\tcase \"distro\":\n\t\t\tentry.Distro = q.Value\n\t\t}\n\t}\n\n\treturn &entry, nil\n}\n\n// packageFiles goes through the list of relationships and finds the files that\n// are owned by the given package\nfunc packageFiles(relationships []artifact.Relationship, p pkg.Package, baseDirectory string) []string {\n\tvar result []string\n\tfor _, r := range relationships {\n\t\tif r.Type != artifact.ContainsRelationship {\n\t\t\tcontinue\n\t\t}\n\n\t\tif from, ok := r.From.(pkg.Package); ok {\n\t\t\tif from.PURL == p.PURL {\n\t\t\t\tif to, ok := r.To.(pkg.Package); ok {\n\t\t\t\t\tresult = append(result, packageFiles(relationships, to, baseDirectory)...)\n\t\t\t\t}\n\t\t\t\tif value, ok := r.To.(file.Location); ok {\n\t\t\t\t\t// note: the file.Location is from the SBOM, and all files within the Bitnami SBOM by convention\n\t\t\t\t\t// are relative to the /opt/bitnami/PRODUCT directory, so we need to prepend the base directory\n\t\t\t\t\t// so that it's relative to the path found within the container image.\n\t\t\t\t\tresult = append(result, path.Join(baseDirectory, value.RealPath))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n\n// mainPkgFiles returns the files owned by the main package in the SPDX file.\nfunc mainPkgFiles(resolver file.Resolver, spdxFilePath string, secondaryPkgsFiles []string) ([]string, error) {\n\townedPathGlob := fmt.Sprintf(\"%s/**\", filepath.Dir(spdxFilePath))\n\townedLocations, err := resolver.FilesByGlob(ownedPathGlob)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\townedLocationSet := file.NewLocationSet(ownedLocations...)\n\townedFiles := ownedLocationSet.CoordinateSet().Paths()\n\n\t// Remove the SPDX file and the files already assigned to other packages\n\t// from the list of owned files\n\tfiles := slices.DeleteFunc(ownedFiles, func(f string) bool {\n\t\treturn f == spdxFilePath || slices.Contains(secondaryPkgsFiles, f)\n\t})\n\n\treturn files, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/package_test.go",
    "content": "package bitnami\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_parseBitnamiPURL(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tpurl    string\n\t\twant    *pkg.BitnamiSBOMEntry\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"Valid Bitnami pURL\",\n\t\t\tpurl: \"pkg:bitnami/redis@7.4.1-0?arch=arm64&distro=debian-12\",\n\t\t\twant: &pkg.BitnamiSBOMEntry{\n\t\t\t\tName:         \"redis\",\n\t\t\t\tVersion:      \"7.4.1\",\n\t\t\t\tRevision:     \"0\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\tDistro:       \"debian-12\",\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid pURL\",\n\t\t\tpurl:    \"this/is/not/a/purl\",\n\t\t\twant:    nil,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid version\",\n\t\t\tpurl:    \"pkg:bitnami/redis@7.4.1.0?arch=arm64&distro=debian-12\",\n\t\t\twant:    nil,\n\t\t\twantErr: true,\n\t\t},\n\t}\n\tt.Parallel()\n\tfor _, testToRun := range tests {\n\t\ttest := testToRun\n\t\tt.Run(test.name, func(tt *testing.T) {\n\t\t\ttt.Parallel()\n\t\t\tgot, err := parseBitnamiPURL(test.purl)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\ttt.Errorf(\"parseBitnamiPURL() error = %v, wantErr %v\", err, test.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(got, test.want) {\n\t\t\t\ttt.Errorf(\"parseBitnamiPURL() = %v, want %v\", got, test.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/parse_components.go",
    "content": "package bitnami\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype componentEntry struct {\n\tArch    string `json:\"arch\"`\n\tDigest  string `json:\"digest,omitempty\"`\n\tDistro  string `json:\"distro\"`\n\tType    string `json:\"type\"`\n\tVersion string `json:\"version\"`\n}\n\nfunc parseComponentsJSON(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar components map[string]componentEntry\n\n\tdecoder := json.NewDecoder(reader)\n\tif err := decoder.Decode(&components); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse .bitnami_components.json: %w\", err)\n\t}\n\n\tvar pkgs []pkg.Package\n\n\tnames := make([]string, 0, len(components))\n\tfor name := range components {\n\t\tnames = append(names, name)\n\t}\n\tsort.Strings(names)\n\n\tfor _, name := range names {\n\t\tentry := components[name]\n\n\t\tversion, revision := parseVersionRevision(entry.Version)\n\n\t\tvar qualifiers []packageurl.Qualifier\n\t\tif entry.Arch != \"\" {\n\t\t\tqualifiers = append(qualifiers, packageurl.Qualifier{Key: \"arch\", Value: entry.Arch})\n\t\t}\n\t\tif entry.Distro != \"\" {\n\t\t\tqualifiers = append(qualifiers, packageurl.Qualifier{Key: \"distro\", Value: entry.Distro})\n\t\t}\n\n\t\tpurl := packageurl.NewPackageURL(\n\t\t\t\"bitnami\",\n\t\t\t\"\",\n\t\t\tname,\n\t\t\tentry.Version,\n\t\t\tqualifiers,\n\t\t\t\"\",\n\t\t).String()\n\n\t\tmetadata := &pkg.BitnamiSBOMEntry{\n\t\t\tName:         name,\n\t\t\tVersion:      version,\n\t\t\tRevision:     revision,\n\t\t\tArchitecture: entry.Arch,\n\t\t\tDistro:       entry.Distro,\n\t\t\tPath:         filepath.Join(filepath.Dir(reader.RealPath), name),\n\t\t}\n\n\t\tp := pkg.Package{\n\t\t\tName:    name,\n\t\t\tVersion: entry.Version,\n\t\t\tType:    pkg.BitnamiPkg,\n\t\t\tFoundBy: catalogerName,\n\t\t\tPURL:    purl,\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t\tMetadata: metadata,\n\t\t}\n\n\t\tp.SetID()\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\t// seems legacy format doesnt have relation between pkgs\n\treturn pkgs, nil, nil\n}\n\nfunc parseVersionRevision(fullVersion string) (version, revision string) {\n\tlastHyphen := strings.LastIndex(fullVersion, \"-\")\n\tif lastHyphen == -1 {\n\t\treturn fullVersion, \"\"\n\t}\n\n\treturn fullVersion[:lastHyphen], fullVersion[lastHyphen+1:]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/components-json-mongodb/opt/bitnami/.bitnami_components.json",
    "content": "{\n    \"gosu\": {\n        \"arch\": \"amd64\",\n        \"digest\": \"16f1a317859b06ae82e816b30f98f28b4707d18fe6cc3881bff535192a7715dc\",\n        \"distro\": \"debian-10\",\n        \"type\": \"NAMI\",\n        \"version\": \"1.14.0-1\"\n    },\n    \"mongodb\": {\n        \"arch\": \"amd64\",\n        \"digest\": \"d21fc890385eae0aaa394ce6491ef304d28a5cc43f860def6badee401fe55bc5\",\n        \"distro\": \"debian-10\",\n        \"type\": \"NAMI\",\n        \"version\": \"4.4.11-2\"\n    },\n    \"render-template\": {\n        \"arch\": \"amd64\",\n        \"digest\": \"9e312b4a7e16a55d08e67c4fd69c91000e4dcc4af149d59915c49375b83852af\",\n        \"distro\": \"debian-10\",\n        \"type\": \"NAMI\",\n        \"version\": \"1.0.1-5\"\n    },\n    \"wait-for-port\": {\n        \"arch\": \"amd64\",\n        \"digest\": \"1e34030c18f0ec2467fa5f1b1fbad24add217f671c3a61628f7b8671391f9676\",\n        \"distro\": \"debian-10\",\n        \"type\": \"NAMI\",\n        \"version\": \"1.0.1-5\"\n    },\n    \"yq\": {\n        \"arch\": \"amd64\",\n        \"digest\": \"1c135708aaa8cb69936471de63563de08e97b7d0bfb4126d41b54a149557c5c0\",\n        \"distro\": \"debian-10\",\n        \"type\": \"NAMI\",\n        \"version\": \"4.16.2-2\"\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/components-json-postgresql/opt/bitnami/.bitnami_components.json",
    "content": "{\n    \"postgresql\": {\n        \"arch\": \"amd64\",\n        \"distro\": \"debian-11\",\n        \"type\": \"NAMI\",\n        \"version\": \"11.22.0-4\"\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/invalid/opt/bitnami/redis/.spdx-redis.spdx",
    "content": "{\n    \"id\": \"invalid-id\",\n    \"name\": \"invalid-name\",\n    \"description: \"This is not a SPDX file\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/json/opt/bitnami/postgresql/.spdx-postgresql.spdx",
    "content": "{\n    \"SPDXID\": \"SPDXRef-postgresql\",\n    \"spdxVersion\": \"SPDX-2.3\",\n    \"creationInfo\": {\n        \"created\": \"2025-02-02T05:18:41.934Z\",\n        \"creators\": [\n            \"Organization: Broadcom Inc. and/or its subsidiaries.\"\n        ]\n    },\n    \"name\": \"SPDX document for PostgreSQL 17.2.0\",\n    \"dataLicense\": \"CC0-1.0\",\n    \"documentDescribes\": [\n        \"SPDXRef-postgresql\"\n    ],\n    \"documentNamespace\": \"postgresql-17.2.0\",\n    \"packages\": [\n        {\n            \"SPDXID\": \"SPDXRef-postgresql\",\n            \"name\": \"postgresql\",\n            \"versionInfo\": \"17.2.0-8\",\n            \"downloadLocation\": \"https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.gz\",\n            \"licenseConcluded\": \"PostgreSQL\",\n            \"licenseDeclared\": \"PostgreSQL\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:postgresql:postgresql:17.2.0:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/postgresql@17.2.0-8?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-geos\",\n            \"name\": \"geos\",\n            \"versionInfo\": \"3.13.0\",\n            \"downloadLocation\": \"https://github.com/libgeos/geos/archive/3.13.0.tar.gz\",\n            \"licenseConcluded\": \"LGPL-2.1-only\",\n            \"licenseDeclared\": \"LGPL-2.1-only\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:libgeos:geos:3.13.0:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/geos@3.13.0?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-proj\",\n            \"name\": \"proj\",\n            \"versionInfo\": \"6.3.2\",\n            \"downloadLocation\": \"https://github.com/OSGeo/PROJ/archive/6.3.2.tar.gz\",\n            \"licenseConcluded\": \"MIT\",\n            \"licenseDeclared\": \"MIT\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:proj:proj:6.3.2:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/proj@6.3.2?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-gdal\",\n            \"name\": \"gdal\",\n            \"versionInfo\": \"3.10.1\",\n            \"downloadLocation\": \"https://github.com/OSGeo/gdal/releases/download/v3.10.1/gdal-3.10.1.tar.gz\",\n            \"licenseConcluded\": \"MIT\",\n            \"licenseDeclared\": \"MIT\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:osgeo:gdal:3.10.1:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/gdal@3.10.1?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-json-c\",\n            \"name\": \"json-c\",\n            \"versionInfo\": \"0.16.20220414\",\n            \"downloadLocation\": \"https://github.com/json-c/json-c/archive/refs/tags/json-c-0.16-20220414.tar.gz\",\n            \"licenseConcluded\": \"MIT\",\n            \"licenseDeclared\": \"MIT\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:json-c_project:json-c:0.16.20220414:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/json-c@0.16.20220414?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-orafce\",\n            \"name\": \"orafce\",\n            \"versionInfo\": \"4.14.1\",\n            \"downloadLocation\": \"https://github.com/orafce/orafce/archive/refs/tags/VERSION_4_14_1.tar.gz\",\n            \"licenseConcluded\": \"0BSD\",\n            \"licenseDeclared\": \"0BSD\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:orafce:orafce:4.14.1:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/orafce@4.14.1?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-pljava\",\n            \"name\": \"pljava\",\n            \"versionInfo\": \"1.6.8\",\n            \"downloadLocation\": \"https://github.com/tada/pljava/archive/V1_6_8.tar.gz\",\n            \"licenseConcluded\": \"BSD-3-Clause\",\n            \"licenseDeclared\": \"BSD-3-Clause\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:pl/java_project:pl/java:1.6.8:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/pljava@1.6.8?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"org.postgresql:pljava\",\n            \"SPDXID\": \"SPDXRef-Package-551f76fc50fc5735\",\n            \"versionInfo\": \"1.6.8\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": true,\n            \"packageVerificationCode\": {\n                \"packageVerificationCodeValue\": \"8b35292054790088fc1f41fb696a993d584d17cd\"\n            },\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:maven/org.postgresql/pljava@1.6.8\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"org.postgresql:pljava-api\",\n            \"SPDXID\": \"SPDXRef-Package-2dde48fd49927020\",\n            \"versionInfo\": \"1.6.8\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": true,\n            \"packageVerificationCode\": {\n                \"packageVerificationCodeValue\": \"3aaf93e288e125481a250d50ab629d890f72e7b8\"\n            },\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:maven/org.postgresql/pljava-api@1.6.8\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"org.postgresql:pljava-examples\",\n            \"SPDXID\": \"SPDXRef-Package-f13571c8a05828cc\",\n            \"versionInfo\": \"1.6.8\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": true,\n            \"packageVerificationCode\": {\n                \"packageVerificationCodeValue\": \"6f126f1237ddd2be6196726130c014770864bcc9\"\n            },\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:maven/org.postgresql/pljava-examples@1.6.8\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-unixodbc\",\n            \"name\": \"unixodbc\",\n            \"versionInfo\": \"2.3.12\",\n            \"downloadLocation\": \"http://www.unixodbc.org/unixODBC-2.3.12.tar.gz\",\n            \"licenseConcluded\": \"LGPL-2.1-only\",\n            \"licenseDeclared\": \"LGPL-2.1-only\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:unixodbc:unixodbc:2.3.12:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/unixodbc@2.3.12?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-psqlodbc\",\n            \"name\": \"psqlodbc\",\n            \"versionInfo\": \"16.0.0\",\n            \"downloadLocation\": \"https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-16.00.0000.tar.gz\",\n            \"licenseConcluded\": \"LGPL-3.0-only\",\n            \"licenseDeclared\": \"LGPL-3.0-only\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:postgresql:psqlodbc:16.0.0:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/psqlodbc@16.0.0?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-protobuf\",\n            \"name\": \"protobuf\",\n            \"versionInfo\": \"3.21.12\",\n            \"downloadLocation\": \"https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.12.tar.gz\",\n            \"licenseConcluded\": \"BSD-3-Clause\",\n            \"licenseDeclared\": \"BSD-3-Clause\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:golang:protobuf:3.21.12:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/protobuf@3.21.12?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-protobuf-c\",\n            \"name\": \"protobuf-c\",\n            \"versionInfo\": \"1.5.1\",\n            \"downloadLocation\": \"https://github.com/protobuf-c/protobuf-c/releases/download/v1.5.1/protobuf-c-1.5.1.tar.gz\",\n            \"licenseConcluded\": \"BSD-2-Clause\",\n            \"licenseDeclared\": \"BSD-2-Clause\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:protobuf-c:protobuf-c:1.5.1:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/protobuf-c@1.5.1?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-postgis\",\n            \"name\": \"postgis\",\n            \"versionInfo\": \"3.4.4\",\n            \"downloadLocation\": \"http://download.osgeo.org/postgis/source/postgis-3.4.4.tar.gz\",\n            \"licenseConcluded\": \"GPL-2.0-or-later\",\n            \"licenseDeclared\": \"GPL-2.0-or-later\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:postgis:postgis:3.4.4:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/postgis@3.4.4?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-pgaudit\",\n            \"name\": \"pgaudit\",\n            \"versionInfo\": \"17.0.0\",\n            \"downloadLocation\": \"https://github.com/pgaudit/pgaudit/archive/17.0.tar.gz\",\n            \"licenseConcluded\": \"PostgreSQL\",\n            \"licenseDeclared\": \"PostgreSQL\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/pgaudit@17.0.0?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-pgbackrest\",\n            \"name\": \"pgbackrest\",\n            \"versionInfo\": \"2.54.2\",\n            \"downloadLocation\": \"https://github.com/pgbackrest/pgbackrest/archive/release/2.54.2.tar.gz\",\n            \"licenseConcluded\": \"MIT\",\n            \"licenseDeclared\": \"MIT\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:pgbackrest:pgbackrest:2.54.2:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/pgbackrest@2.54.2?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-wal2json\",\n            \"name\": \"wal2json\",\n            \"versionInfo\": \"2.6.0\",\n            \"downloadLocation\": \"https://github.com/eulerto/wal2json/archive/refs/tags/wal2json_2_6.tar.gz\",\n            \"licenseConcluded\": \"BSD-3-Clause\",\n            \"licenseDeclared\": \"BSD-3-Clause\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:wal2json:wal2json:2.6.0:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/wal2json@2.6.0?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"SPDXID\": \"SPDXRef-nss-wrapper\",\n            \"name\": \"nss-wrapper\",\n            \"versionInfo\": \"1.1.16\",\n            \"downloadLocation\": \"https://ftp.samba.org/pub/cwrap/nss_wrapper-1.1.16.tar.gz\",\n            \"licenseConcluded\": \"BSD-3-Clause\",\n            \"licenseDeclared\": \"BSD-3-Clause\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:nss_wrapper:nss_wrapper:1.1.16:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/nss_wrapper@1.1.16?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        }\n    ],\n    \"files\": [\n        {\n            \"fileName\": \"share/pljava/pljava-1.6.8.jar\",\n            \"SPDXID\": \"SPDXRef-File-28d7473df5d8af04-pljava\",\n            \"checksums\": [\n                {\n                    \"algorithm\": \"SHA1\",\n                    \"checksumValue\": \"b0b8f544ddefbc9ba47ed72ddce13627df919cc9\"\n                }\n            ],\n            \"copyrightText\": \"\"\n        },\n        {\n            \"fileName\": \"share/pljava/pljava-api-1.6.8.jar\",\n            \"SPDXID\": \"SPDXRef-File-3531f2e94fdf52e3-pljava\",\n            \"checksums\": [\n                {\n                    \"algorithm\": \"SHA1\",\n                    \"checksumValue\": \"a2013f3202afc8dc15a21ef7a796730df08d1a00\"\n                }\n            ],\n            \"copyrightText\": \"\"\n        },\n        {\n            \"fileName\": \"share/pljava/pljava-examples-1.6.8.jar\",\n            \"SPDXID\": \"SPDXRef-File-8f3dee04908d7a5a-pljava\",\n            \"checksums\": [\n                {\n                    \"algorithm\": \"SHA1\",\n                    \"checksumValue\": \"1c61bddc63ce4aaaa803d9c39f0740a15c19d300\"\n                }\n            ],\n            \"copyrightText\": \"\"\n        }\n    ],\n    \"relationships\": [\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-geos\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-proj\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-gdal\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-json-c\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-orafce\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-pljava\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-pljava\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-2dde48fd49927020\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-pljava\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-551f76fc50fc5735\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-pljava\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-f13571c8a05828cc\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-2dde48fd49927020\",\n            \"relatedSpdxElement\": \"SPDXRef-File-3531f2e94fdf52e3-pljava\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-551f76fc50fc5735\",\n            \"relatedSpdxElement\": \"SPDXRef-File-28d7473df5d8af04-pljava\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-f13571c8a05828cc\",\n            \"relatedSpdxElement\": \"SPDXRef-File-8f3dee04908d7a5a-pljava\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-unixodbc\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-psqlodbc\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-protobuf\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-protobuf-c\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-postgis\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-pgaudit\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-pgbackrest\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-wal2json\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-postgresql\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-nss-wrapper\"\n        }\n    ]\n}"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/json/opt/bitnami/postgresql/readme.txt",
    "content": "This file should be reported as part of the Bitnami PostgreSQL package.\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/mix/opt/bitnami/render-template/.spdx-render-template.spdx",
    "content": "{\n    \"SPDXID\": \"SPDXRef-render-template\",\n    \"spdxVersion\": \"SPDX-2.3\",\n    \"creationInfo\": {\n        \"created\": \"2024-09-05T18:51:42.225Z\",\n        \"creators\": [\n            \"Organization: VMware, Inc.\"\n        ]\n    },\n    \"name\": \"SPDX document for render-template 1.0.7\",\n    \"dataLicense\": \"CC0-1.0\",\n    \"documentDescribes\": [\n        \"SPDXRef-render-template\"\n    ],\n    \"documentNamespace\": \"render-template-1.0.7\",\n    \"packages\": [\n        {\n            \"SPDXID\": \"SPDXRef-render-template\",\n            \"name\": \"render-template\",\n            \"versionInfo\": \"1.0.7-4\",\n            \"downloadLocation\": \"https://github.com/bitnami/render-template/archive/refs/tags/v1.0.7.tar.gz\",\n            \"licenseConcluded\": \"Apache-2.0\",\n            \"licenseDeclared\": \"Apache-2.0\",\n            \"filesAnalyzed\": false,\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"SECURITY\",\n                    \"referenceType\": \"cpe23Type\",\n                    \"referenceLocator\": \"cpe:2.3:*:render-template:render-template:1.0.7:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:bitnami/render-template@1.0.7-4?arch=arm64&distro=debian-12\"\n                }\n            ],\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"opt/bitnami/common/bin/render-template\",\n            \"SPDXID\": \"SPDXRef-Application-4b412cf3f25d2574-render-template\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"primaryPackagePurpose\": \"APPLICATION\",\n            \"copyrightText\": \"NOASSERTION\",\n            \"licenseConcluded\": \"NOASSERTION\",\n            \"licenseDeclared\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"github.com/aymerick/raymond\",\n            \"SPDXID\": \"SPDXRef-Package-c77f44f540ae92a0\",\n            \"versionInfo\": \"v2.0.2+incompatible\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/github.com/aymerick/raymond@v2.0.2%2Bincompatible\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"github.com/bitnami/render-template\",\n            \"SPDXID\": \"SPDXRef-Package-8213648cad51225d\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/github.com/bitnami/render-template\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"github.com/jessevdk/go-flags\",\n            \"SPDXID\": \"SPDXRef-Package-be6fde8a3edd7caf\",\n            \"versionInfo\": \"v1.6.1\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/github.com/jessevdk/go-flags@v1.6.1\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"github.com/mmikulicic/multierror\",\n            \"SPDXID\": \"SPDXRef-Package-b08d834237b92fed\",\n            \"versionInfo\": \"v0.0.0-20170428094957-c1ad6b5ecd26\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/github.com/mmikulicic/multierror@v0.0.0-20170428094957-c1ad6b5ecd26\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"golang.org/x/sys\",\n            \"SPDXID\": \"SPDXRef-Package-644a66965f04af7f\",\n            \"versionInfo\": \"v0.21.0\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/golang.org/x/sys@v0.21.0\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        },\n        {\n            \"name\": \"stdlib\",\n            \"SPDXID\": \"SPDXRef-Package-7d9b78ebb84f1578\",\n            \"versionInfo\": \"1.22.7\",\n            \"supplier\": \"NOASSERTION\",\n            \"downloadLocation\": \"NONE\",\n            \"filesAnalyzed\": false,\n            \"sourceInfo\": \"opt/bitnami/common/package found in: opt/bitnami/common/bin/render-template\",\n            \"licenseConcluded\": \"NONE\",\n            \"licenseDeclared\": \"NONE\",\n            \"externalRefs\": [\n                {\n                    \"referenceCategory\": \"PACKAGE-MANAGER\",\n                    \"referenceType\": \"purl\",\n                    \"referenceLocator\": \"pkg:golang/stdlib@1.22.7\"\n                }\n            ],\n            \"primaryPackagePurpose\": \"LIBRARY\",\n            \"copyrightText\": \"NOASSERTION\"\n        }\n    ],\n    \"files\": [],\n    \"relationships\": [\n        {\n            \"spdxElementId\": \"SPDXRef-render-template\",\n            \"relationshipType\": \"CONTAINS\",\n            \"relatedSpdxElement\": \"SPDXRef-Application-4b412cf3f25d2574-render-template\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Application-4b412cf3f25d2574-render-template\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-render-template\",\n            \"relatedSpdxElement\": \"SPDXRef-Application-4b412cf3f25d2574-render-template\",\n            \"relationshipType\": \"CONTAINS\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-644a66965f04af7f\",\n            \"relationshipType\": \"DEPENDS_ON\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-7d9b78ebb84f1578\",\n            \"relationshipType\": \"DEPENDS_ON\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-b08d834237b92fed\",\n            \"relationshipType\": \"DEPENDS_ON\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-be6fde8a3edd7caf\",\n            \"relationshipType\": \"DEPENDS_ON\"\n        },\n        {\n            \"spdxElementId\": \"SPDXRef-Package-8213648cad51225d\",\n            \"relatedSpdxElement\": \"SPDXRef-Package-c77f44f540ae92a0\",\n            \"relationshipType\": \"DEPENDS_ON\"\n        }\n    ]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/no-rel/opt/bitnami/redis/.gitignore",
    "content": "# override root level ignores for test fixtures\n!bin/\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/no-rel/opt/bitnami/redis/.spdx-redis.spdx",
    "content": "{\r\n  \"SPDXID\": \"SPDXRef-redis\",\r\n  \"spdxVersion\": \"SPDX-2.3\",\r\n  \"creationInfo\": {\r\n    \"created\": \"2024-08-08T11:12:35.680Z\",\r\n    \"creators\": [\"Organization: VMware, Inc.\"]\r\n  },\r\n  \"name\": \"SPDX document for Redis(R) 7.4.0\",\r\n  \"dataLicense\": \"CC0-1.0\",\r\n  \"documentDescribes\": [\"SPDXRef-redis\"],\r\n  \"documentNamespace\": \"redis-7.4.0\",\r\n  \"packages\": [\r\n    {\r\n      \"SPDXID\": \"SPDXRef-redis\",\r\n      \"name\": \"redis\",\r\n      \"versionInfo\": \"7.4.0-0\",\r\n      \"downloadLocation\": \"http://download.redis.io/releases/redis-7.4.0.tar.gz\",\r\n      \"licenseConcluded\": \"RSALv2\",\r\n      \"licenseDeclared\": \"RSALv2\",\r\n      \"filesAnalyzed\": false,\r\n      \"externalRefs\": [\r\n        {\r\n          \"referenceCategory\": \"SECURITY\",\r\n          \"referenceType\": \"cpe23Type\",\r\n          \"referenceLocator\": \"cpe:2.3:*:redis:redis:7.4.0:*:*:*:*:*:*:*\"\r\n        },\r\n        {\r\n          \"referenceCategory\": \"PACKAGE-MANAGER\",\r\n          \"referenceType\": \"purl\",\r\n          \"referenceLocator\": \"pkg:bitnami/redis@7.4.0-0?arch=arm64&distro=debian-12\"\r\n        }\r\n      ],\r\n      \"copyrightText\": \"NOASSERTION\"\r\n    }\r\n  ],\r\n  \"files\": [],\r\n  \"relationships\": []\r\n}\r\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/no-rel/opt/bitnami/redis/bin/.gitignore",
    "content": "# override root level ignores for test fixtures\n!*\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/no-rel/opt/bitnami/redis/bin/redis-server",
    "content": "test fixture pretending to be redis-server\n"
  },
  {
    "path": "syft/pkg/cataloger/bitnami/testdata/tag-value/opt/bitnami/redis/.spdx-apache.spdx",
    "content": "SPDXVersion: SPDX-2.3\nDataLicense: CC0-1.0\nDocumentNamespace: redis-7.4.1\nDocumentName: SPDX document for Redis(R) 7.4.1\nSPDXID: SPDXRef-DOCUMENT\n\n## Creation Information\nCreator: Organization: VMware, Inc.\nCreated: 2024-10-02T20:17:11.692Z\n## Relationships\nRelationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-redis\n\n## Package Information\nPackageName: redis\nSPDXID: SPDXRef-redis\nPackageVersion: 7.4.1-0\nPackageDownloadLocation: http://download.redis.io/releases/redis-7.4.1.tar.gz\nPackageLicenseConcluded: RSALv2\nPackageLicenseDeclared: RSALv2\nPackageCopyrightText: NOASSERTION\nExternalRef: SECURITY cpe23Type cpe:2.3:*:redis:redis:7.4.1:*:*:*:*:*:*:*\nExternalRef: PACKAGE-MANAGER purl pkg:bitnami/redis@7.4.1-0?arch=arm64&distro=debian-12\nFilesAnalyzed: false\n"
  },
  {
    "path": "syft/pkg/cataloger/capabilities.go",
    "content": "package cataloger\n\nimport (\n\t\"embed\"\n\n\t\"github.com/anchore/syft/internal/capabilities\"\n)\n\n//go:embed */capabilities.yaml\nvar catalogerFiles embed.FS\n\nfunc init() {\n\tcapabilities.RegisterCatalogerFiles(catalogerFiles)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/common/cpe/create.go",
    "content": "package cpe\n\nimport (\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/cpegenerate\"\n)\n\nfunc Generate(p pkg.Package) []cpe.CPE {\n\treturn cpegenerate.FromPackageAttributes(p)\n}\n\nfunc DictionaryFind(p pkg.Package) ([]cpe.CPE, bool) {\n\treturn cpegenerate.FromDictionaryFind(p)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/common/cpe/target_software_to_pkg_type.go",
    "content": "package cpe\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// TargetSoftwareToPackageType is derived from looking at target_software attributes in the NVD dataset\n// TODO: ideally this would be driven from the store, where we can resolve ecosystem aliases directly\nfunc TargetSoftwareToPackageType(tsw string) pkg.Type {\n\ttsw = strings.NewReplacer(\"-\", \"_\", \" \", \"_\").Replace(strings.ToLower(tsw))\n\tswitch tsw {\n\tcase \"alpine\", \"apk\":\n\t\treturn pkg.ApkPkg\n\tcase \"debian\", \"dpkg\":\n\t\treturn pkg.DebPkg\n\tcase \"java\", \"maven\", \"ant\", \"gradle\", \"jenkins\", \"jenkins_ci\", \"kafka\", \"logstash\", \"mule\", \"nifi\", \"solr\", \"spark\", \"storm\", \"struts\", \"tomcat\", \"zookeeper\", \"log4j\":\n\t\treturn pkg.JavaPkg\n\tcase \"javascript\", \"node\", \"nodejs\", \"node.js\", \"npm\", \"yarn\", \"apache\", \"jquery\", \"next.js\", \"prismjs\":\n\t\treturn pkg.NpmPkg\n\tcase \"c\", \"c++\", \"c/c++\", \"conan\", \"gnu_c++\", \"qt\":\n\t\treturn pkg.ConanPkg\n\tcase \"dart\":\n\t\treturn pkg.DartPubPkg\n\tcase \"redhat\", \"rpm\", \"redhat_enterprise_linux\", \"rhel\", \"suse\", \"suse_linux\", \"opensuse\", \"opensuse_linux\", \"fedora\", \"centos\", \"oracle_linux\", \"ol\":\n\t\treturn pkg.RpmPkg\n\tcase \"elixir\", \"hex\":\n\t\treturn pkg.HexPkg\n\tcase \"erlang\":\n\t\treturn pkg.ErlangOTPPkg\n\tcase \".net\", \".net_framework\", \"asp\", \"asp.net\", \"dotnet\", \"dotnet_framework\", \"c#\", \"csharp\", \"nuget\":\n\t\treturn pkg.DotnetPkg\n\tcase \"ruby\", \"gem\", \"nokogiri\", \"ruby_on_rails\":\n\t\treturn pkg.GemPkg\n\tcase \"rust\", \"cargo\", \"crates\":\n\t\treturn pkg.RustPkg\n\tcase \"python\", \"pip\", \"pypi\", \"flask\":\n\t\treturn pkg.PythonPkg\n\tcase \"kb\", \"knowledgebase\", \"msrc\", \"mskb\", \"microsoft\":\n\t\treturn pkg.KbPkg\n\tcase \"portage\", \"gentoo\":\n\t\treturn pkg.PortagePkg\n\tcase \"go\", \"golang\", \"gomodule\":\n\t\treturn pkg.GoModulePkg\n\tcase \"linux_kernel\", \"linux\", \"z/linux\":\n\t\treturn pkg.LinuxKernelPkg\n\tcase \"php\":\n\t\treturn pkg.PhpComposerPkg\n\tcase \"swift\":\n\t\treturn pkg.SwiftPkg\n\tcase \"wordpress\", \"wordpress_plugin\", \"wordpress_\":\n\t\treturn pkg.WordpressPluginPkg\n\tcase \"lua\", \"luarocks\":\n\t\treturn pkg.LuaRocksPkg\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: conda # MANUAL\n    name: conda-meta-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/conda/cataloger.go\n      function: NewCondaMetaCataloger\n    selectors: # AUTO-GENERATED\n      - conda\n      - directory\n      - installed\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseCondaMetaJSON\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/conda-meta/*.json'\n        metadata_types: # AUTO-GENERATED\n          - pkg.CondaMetaPackage\n        package_types: # AUTO-GENERATED\n          - conda\n        json_schema_types: # AUTO-GENERATED\n          - CondaMetadataEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - CondaMetaPackage.Files\n              - CondaMetaPackage.PathsData.Paths\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - CondaMetaPackage.PathsData.Paths.SHA256\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - CondaMetaPackage.MD5\n              - CondaMetaPackage.SHA256\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/cataloger.go",
    "content": "/*\nPackage conda provides a concrete Cataloger implementation for packages within the Conda ecosystem.\n*/\npackage conda\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewCondaMetaCataloger returns a new cataloger object for Conda environments by parsing the package metadata files in conda-meta.\nfunc NewCondaMetaCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"conda-meta-cataloger\").\n\t\tWithParserByGlobs(parseCondaMetaJSON, \"**/conda-meta/*.json\")\n}\n\nfunc parseCondaMetaJSON(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdec := json.NewDecoder(reader)\n\tvar meta pkg.CondaMetaPackage\n\tif err := dec.Decode(&meta); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse conda-meta package file at %s: %w\", reader.RealPath, err)\n\t}\n\n\tp := pkg.Package{\n\t\tName:      meta.Name,\n\t\tVersion:   meta.Version,\n\t\tLocations: file.NewLocationSet(reader.Location),\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, meta.License, reader.Location),\n\t\t),\n\t\tLanguage: pkg.UnknownLanguage,\n\t\tType:     pkg.CondaPkg,\n\t\tMetadata: meta,\n\t}\n\tp.SetID()\n\n\treturn []pkg.Package{\n\t\tp,\n\t}, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/cataloger_test.go",
    "content": "package conda\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_CondaCataloger(t *testing.T) {\n\tctx := context.TODO()\n\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\texpectedPackages []pkg.Package\n\t\twantErr          require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"multiple packages in conda meta (python, c binaries, ...)\",\n\t\t\tfixture: \"testdata/conda-meta-python-c-etc\",\n\t\t\twantErr: require.NoError,\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"jupyterlab\",\n\t\t\t\t\tVersion: \"4.4.3\",\n\t\t\t\t\tFoundBy: \"conda-meta-cataloger\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"conda-meta/jupyterlab-4.4.3-pyhd8ed1ab_0.json\"),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.UnknownLanguage,\n\t\t\t\t\tType:     pkg.CondaPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"BSD-3-Clause\", file.NewLocation(\"conda-meta/jupyterlab-4.4.3-pyhd8ed1ab_0.json\")),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.CondaMetaPackage{\n\t\t\t\t\t\tName:                \"jupyterlab\",\n\t\t\t\t\t\tVersion:             \"4.4.3\",\n\t\t\t\t\t\tBuild:               \"pyhd8ed1ab_0\",\n\t\t\t\t\t\tBuildNumber:         0,\n\t\t\t\t\t\tChannel:             \"https://conda.anaconda.org/conda-forge/\",\n\t\t\t\t\t\tSubdir:              \"noarch\",\n\t\t\t\t\t\tNoarch:              \"python\",\n\t\t\t\t\t\tLicense:             \"BSD-3-Clause\",\n\t\t\t\t\t\tLicenseFamily:       \"BSD\",\n\t\t\t\t\t\tMD5:                 \"4861a0c2a5a5d0481a450a9dfaf9febe\",\n\t\t\t\t\t\tSHA256:              \"fc0235a71d852734fe92183a78cb91827367573450eba82465ae522c64230736\",\n\t\t\t\t\t\tSize:                8236973,\n\t\t\t\t\t\tTimestamp:           1748273017680,\n\t\t\t\t\t\tFilename:            \"jupyterlab-4.4.3-pyhd8ed1ab_0.conda\",\n\t\t\t\t\t\tURL:                 \"https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda\",\n\t\t\t\t\t\tExtractedPackageDir: \"/Users/example-user/Library/Caches/rattler/cache/pkgs/jupyterlab-4.4.3-pyhd8ed1ab_0\",\n\t\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\t\"async-lru >=1.0.0\",\n\t\t\t\t\t\t\t\"httpx >=0.25.0\",\n\t\t\t\t\t\t\t\"importlib-metadata >=4.8.3\",\n\t\t\t\t\t\t\t\"ipykernel >=6.5.0\",\n\t\t\t\t\t\t\t\"jinja2 >=3.0.3\",\n\t\t\t\t\t\t\t\"jupyter-lsp >=2.0.0\",\n\t\t\t\t\t\t\t\"jupyter_core\",\n\t\t\t\t\t\t\t\"jupyter_server >=2.4.0,<3\",\n\t\t\t\t\t\t\t\"jupyterlab_server >=2.27.1,<3\",\n\t\t\t\t\t\t\t\"notebook-shim >=0.2\",\n\t\t\t\t\t\t\t\"packaging\",\n\t\t\t\t\t\t\t\"python >=3.9\",\n\t\t\t\t\t\t\t\"setuptools >=41.1.0\",\n\t\t\t\t\t\t\t\"tomli >=1.2.2\",\n\t\t\t\t\t\t\t\"tornado >=6.2.0\",\n\t\t\t\t\t\t\t\"traitlets\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/kernels-settings.json\",\n\t\t\t\t\t\t\t\"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/notification.json\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathsData: &pkg.CondaPathsData{\n\t\t\t\t\t\t\tPathsVersion: 1,\n\t\t\t\t\t\t\tPaths: []pkg.CondaPathData{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/kernels-settings.json\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"081a7e126deffbcd596863f3349a19416fbbe1fd570ab392270315f7cf5a8c27\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"081a7e126deffbcd596863f3349a19416fbbe1fd570ab392270315f7cf5a8c27\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    935,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/notification.json\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"f9f42636592f62cdd03e3d5552b020811e3f8be6fc47c03d5a92396941b8d5d8\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"f9f42636592f62cdd03e3d5552b020811e3f8be6fc47c03d5a92396941b8d5d8\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    1565,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLink: &pkg.CondaLink{\n\t\t\t\t\t\t\tSource: \"/Users/example-user/Library/Caches/rattler/cache/pkgs/jupyterlab-4.4.3-pyhd8ed1ab_0\",\n\t\t\t\t\t\t\tType:   1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"zlib\",\n\t\t\t\t\tVersion: \"1.2.11\",\n\t\t\t\t\tFoundBy: \"conda-meta-cataloger\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"conda-meta/zlib-1.2.11-h90dfc92_1014.json\"),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.UnknownLanguage,\n\t\t\t\t\tType:     pkg.CondaPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Zlib\", file.NewLocation(\"conda-meta/zlib-1.2.11-h90dfc92_1014.json\")),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.CondaMetaPackage{\n\t\t\t\t\t\tArch:                \"arm64\",\n\t\t\t\t\t\tName:                \"zlib\",\n\t\t\t\t\t\tVersion:             \"1.2.11\",\n\t\t\t\t\t\tBuild:               \"h90dfc92_1014\",\n\t\t\t\t\t\tBuildNumber:         1014,\n\t\t\t\t\t\tChannel:             \"https://conda.anaconda.org/conda-forge/\",\n\t\t\t\t\t\tSubdir:              \"osx-arm64\",\n\t\t\t\t\t\tNoarch:              \"\",\n\t\t\t\t\t\tLicense:             \"Zlib\",\n\t\t\t\t\t\tLicenseFamily:       \"Other\",\n\t\t\t\t\t\tMD5:                 \"348a30b1350c9d91a4dbf05f5e46e0bb\",\n\t\t\t\t\t\tSHA256:              \"a70c028fd3b9af1d7ea3d7099d810f3d2588096237bb472db331a51a36f931c0\",\n\t\t\t\t\t\tSize:                86757,\n\t\t\t\t\t\tTimestamp:           1648307332172,\n\t\t\t\t\t\tFilename:            \"zlib-1.2.11-h90dfc92_1014.tar.bz2\",\n\t\t\t\t\t\tURL:                 \"https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.2.11-h90dfc92_1014.tar.bz2\",\n\t\t\t\t\t\tExtractedPackageDir: \"/Users/example-user/Library/Caches/rattler/cache/pkgs/zlib-1.2.11-h90dfc92_1014\",\n\t\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\t\"libzlib 1.2.11 h90dfc92_1014\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t\"include/zconf.h\",\n\t\t\t\t\t\t\t\"include/zlib.h\",\n\t\t\t\t\t\t\t\"lib/pkgconfig/zlib.pc\",\n\t\t\t\t\t\t\t\"lib/libz.a\",\n\t\t\t\t\t\t\t\"lib/libz.dylib\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathsData: &pkg.CondaPathsData{\n\t\t\t\t\t\t\tPathsVersion: 1,\n\t\t\t\t\t\t\tPaths: []pkg.CondaPathData{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"include/zconf.h\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"77304005ceb5f0d03ad4c37eb8386a10866e4ceeb204f7c3b6599834c7319541\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"77304005ceb5f0d03ad4c37eb8386a10866e4ceeb204f7c3b6599834c7319541\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    16262,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"include/zlib.h\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"4ddc82b4af931ab55f44d977bde81bfbc4151b5dcdccc03142831a301b5ec3c8\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"4ddc82b4af931ab55f44d977bde81bfbc4151b5dcdccc03142831a301b5ec3c8\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    96239,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"lib/pkgconfig/zlib.pc\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"357773df3c44a5ebd77fdadd0869b5b06394bbf556c2d6c9736dd53e9df3b2c2\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"5b4eb6062f97875eaadb3b6c7cf8cfeff3808798ecbf2bfc095f18dcecc509bf\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    285,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"lib/libz.a\",\n\t\t\t\t\t\t\t\t\tPathType:       \"hardlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"40c056a5d8155d9b3f42adfe35f7fc6e5fa15cc6588ffad0f09fe67517feada0\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"40c056a5d8155d9b3f42adfe35f7fc6e5fa15cc6588ffad0f09fe67517feada0\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    107128,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:           \"lib/libz.dylib\",\n\t\t\t\t\t\t\t\t\tPathType:       \"softlink\",\n\t\t\t\t\t\t\t\t\tSHA256:         \"67ed489e2f378880f72fb1c0d1cc916e184b9632eccf2b5c1b34ddf01ed1701c\",\n\t\t\t\t\t\t\t\t\tSHA256InPrefix: \"09e47dbc60aa970e153913fe84551ad7f5aa51c21907591340a0cc999adab859\",\n\t\t\t\t\t\t\t\t\tSizeInBytes:    122478,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLink: &pkg.CondaLink{\n\t\t\t\t\t\t\tSource: \"/Users/example-user/Library/Caches/rattler/cache/pkgs/zlib-1.2.11-h90dfc92_1014\",\n\t\t\t\t\t\t\tType:   1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:             \"badly formatted conda meta json file\",\n\t\t\tfixture:          \"testdata/conda-meta-bad-json\",\n\t\t\texpectedPackages: nil,\n\t\t\twantErr: func(t require.TestingT, err error, msgAndArgs ...interface{}) {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), \"failed to parse conda-meta package file at conda-meta/package-1.2.3-pyhd8ed1ab_0.json\")\n\t\t\t\trequire.Contains(t, err.Error(), \"invalid character\")\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpects(test.expectedPackages, nil).\n\t\t\t\tWithErrorAssertion(test.wantErr).\n\t\t\t\tTestCataloger(t, NewCondaMetaCataloger())\n\t\t})\n\t}\n}\n\nfunc TestCondaMetaPackageMetadata_FileOwner(t *testing.T) {\n\ttests := []struct {\n\t\tmetadata pkg.CondaMetaPackage\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tmetadata: pkg.CondaMetaPackage{\n\t\t\t\tFiles: []string{\n\t\t\t\t\t\"include/zconf.h\",\n\t\t\t\t\t\"include/zlib.h\",\n\t\t\t\t\t\"lib/pkgconfig/zlib.pc\",\n\t\t\t\t\t\"lib/libz.a\",\n\t\t\t\t\t\"lib/libz.dylib\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"include/zconf.h\",\n\t\t\t\t\"include/zlib.h\",\n\t\t\t\t\"lib/libz.a\",\n\t\t\t\t\"lib/libz.dylib\",\n\t\t\t\t\"lib/pkgconfig/zlib.pc\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.expected, \",\"), func(t *testing.T) {\n\t\t\tactual := test.metadata.OwnedFiles()\n\t\t\tfor _, d := range deep.Equal(test.expected, actual) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/testdata/conda-meta-bad-json/conda-meta/package-1.2.3-pyhd8ed1ab_0.json",
    "content": "not json, will cause a parsing error\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/testdata/conda-meta-python-c-etc/conda-meta/jupyterlab-4.4.3-pyhd8ed1ab_0.json",
    "content": "{\n  \"build\": \"pyhd8ed1ab_0\",\n  \"build_number\": 0,\n  \"depends\": [\n    \"async-lru >=1.0.0\",\n    \"httpx >=0.25.0\",\n    \"importlib-metadata >=4.8.3\",\n    \"ipykernel >=6.5.0\",\n    \"jinja2 >=3.0.3\",\n    \"jupyter-lsp >=2.0.0\",\n    \"jupyter_core\",\n    \"jupyter_server >=2.4.0,<3\",\n    \"jupyterlab_server >=2.27.1,<3\",\n    \"notebook-shim >=0.2\",\n    \"packaging\",\n    \"python >=3.9\",\n    \"setuptools >=41.1.0\",\n    \"tomli >=1.2.2\",\n    \"tornado >=6.2.0\",\n    \"traitlets\"\n  ],\n  \"license\": \"BSD-3-Clause\",\n  \"license_family\": \"BSD\",\n  \"md5\": \"4861a0c2a5a5d0481a450a9dfaf9febe\",\n  \"name\": \"jupyterlab\",\n  \"noarch\": \"python\",\n  \"sha256\": \"fc0235a71d852734fe92183a78cb91827367573450eba82465ae522c64230736\",\n  \"size\": 8236973,\n  \"subdir\": \"noarch\",\n  \"timestamp\": 1748273017680,\n  \"version\": \"4.4.3\",\n  \"fn\": \"jupyterlab-4.4.3-pyhd8ed1ab_0.conda\",\n  \"url\": \"https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda\",\n  \"channel\": \"https://conda.anaconda.org/conda-forge/\",\n  \"extracted_package_dir\": \"/Users/example-user/Library/Caches/rattler/cache/pkgs/jupyterlab-4.4.3-pyhd8ed1ab_0\",\n  \"files\": [\n    \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/kernels-settings.json\",\n    \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/notification.json\"\n  ],\n  \"paths_data\": {\n    \"paths_version\": 1,\n    \"paths\": [\n      {\n        \"_path\": \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/kernels-settings.json\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"081a7e126deffbcd596863f3349a19416fbbe1fd570ab392270315f7cf5a8c27\",\n        \"sha256_in_prefix\": \"081a7e126deffbcd596863f3349a19416fbbe1fd570ab392270315f7cf5a8c27\",\n        \"size_in_bytes\": 935\n      },\n      {\n        \"_path\": \"lib/python3.13/site-packages/jupyterlab/schemas/@jupyterlab/apputils-extension/notification.json\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"f9f42636592f62cdd03e3d5552b020811e3f8be6fc47c03d5a92396941b8d5d8\",\n        \"sha256_in_prefix\": \"f9f42636592f62cdd03e3d5552b020811e3f8be6fc47c03d5a92396941b8d5d8\",\n        \"size_in_bytes\": 1565\n      }\n    ]\n  },\n  \"link\": {\n    \"source\": \"/Users/example-user/Library/Caches/rattler/cache/pkgs/jupyterlab-4.4.3-pyhd8ed1ab_0\",\n    \"type\": 1\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/conda/testdata/conda-meta-python-c-etc/conda-meta/zlib-1.2.11-h90dfc92_1014.json",
    "content": "{\n  \"arch\": \"arm64\",\n  \"build\": \"h90dfc92_1014\",\n  \"build_number\": 1014,\n  \"depends\": [\n    \"libzlib 1.2.11 h90dfc92_1014\"\n  ],\n  \"license\": \"Zlib\",\n  \"license_family\": \"Other\",\n  \"md5\": \"348a30b1350c9d91a4dbf05f5e46e0bb\",\n  \"name\": \"zlib\",\n  \"platform\": \"osx\",\n  \"sha256\": \"a70c028fd3b9af1d7ea3d7099d810f3d2588096237bb472db331a51a36f931c0\",\n  \"size\": 86757,\n  \"subdir\": \"osx-arm64\",\n  \"timestamp\": 1648307332172,\n  \"version\": \"1.2.11\",\n  \"fn\": \"zlib-1.2.11-h90dfc92_1014.tar.bz2\",\n  \"url\": \"https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.2.11-h90dfc92_1014.tar.bz2\",\n  \"channel\": \"https://conda.anaconda.org/conda-forge/\",\n  \"extracted_package_dir\": \"/Users/example-user/Library/Caches/rattler/cache/pkgs/zlib-1.2.11-h90dfc92_1014\",\n  \"files\": [\n    \"include/zconf.h\",\n    \"include/zlib.h\",\n    \"lib/pkgconfig/zlib.pc\",\n    \"lib/libz.a\",\n    \"lib/libz.dylib\"\n  ],\n  \"paths_data\": {\n    \"paths_version\": 1,\n    \"paths\": [\n      {\n        \"_path\": \"include/zconf.h\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"77304005ceb5f0d03ad4c37eb8386a10866e4ceeb204f7c3b6599834c7319541\",\n        \"sha256_in_prefix\": \"77304005ceb5f0d03ad4c37eb8386a10866e4ceeb204f7c3b6599834c7319541\",\n        \"size_in_bytes\": 16262\n      },\n      {\n        \"_path\": \"include/zlib.h\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"4ddc82b4af931ab55f44d977bde81bfbc4151b5dcdccc03142831a301b5ec3c8\",\n        \"sha256_in_prefix\": \"4ddc82b4af931ab55f44d977bde81bfbc4151b5dcdccc03142831a301b5ec3c8\",\n        \"size_in_bytes\": 96239\n      },\n      {\n        \"_path\": \"lib/pkgconfig/zlib.pc\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"357773df3c44a5ebd77fdadd0869b5b06394bbf556c2d6c9736dd53e9df3b2c2\",\n        \"sha256_in_prefix\": \"5b4eb6062f97875eaadb3b6c7cf8cfeff3808798ecbf2bfc095f18dcecc509bf\",\n        \"size_in_bytes\": 285,\n        \"file_mode\": \"text\",\n        \"prefix_placeholder\": \"/Users/runner/miniforge3/conda-bld/zlib-split_1648307175973/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol\"\n      },\n      {\n        \"_path\": \"lib/libz.a\",\n        \"path_type\": \"hardlink\",\n        \"sha256\": \"40c056a5d8155d9b3f42adfe35f7fc6e5fa15cc6588ffad0f09fe67517feada0\",\n        \"sha256_in_prefix\": \"40c056a5d8155d9b3f42adfe35f7fc6e5fa15cc6588ffad0f09fe67517feada0\",\n        \"size_in_bytes\": 107128\n      },\n      {\n        \"_path\": \"lib/libz.dylib\",\n        \"path_type\": \"softlink\",\n        \"sha256\": \"67ed489e2f378880f72fb1c0d1cc916e184b9632eccf2b5c1b34ddf01ed1701c\",\n        \"sha256_in_prefix\": \"09e47dbc60aa970e153913fe84551ad7f5aa51c21907591340a0cc999adab859\",\n        \"size_in_bytes\": 122478\n      }\n    ]\n  },\n  \"link\": {\n    \"source\": \"/Users/example-user/Library/Caches/rattler/cache/pkgs/zlib-1.2.11-h90dfc92_1014\",\n    \"type\": 1\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: c++ # MANUAL\n    name: conan-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/cpp/cataloger.go\n      function: NewConanCataloger\n    selectors: # AUTO-GENERATED\n      - conan\n      - cpp\n      - declared\n      - directory\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseConanLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/conan.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ConanV1LockEntry\n          - pkg.ConanV2LockEntry\n        package_types: # AUTO-GENERATED\n          - conan\n        json_schema_types: # AUTO-GENERATED\n          - CConanLockEntry\n          - CConanLockV2Entry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - build\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - ConanV1LockEntry.Ref\n              - ConanV2LockEntry.RecipeRevision\n      - function: parseConanfile\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/conanfile.txt'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ConanfileEntry\n        package_types: # AUTO-GENERATED\n          - conan\n        json_schema_types: # AUTO-GENERATED\n          - CConanFileEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: c++ # MANUAL\n    name: conan-info-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/cpp/cataloger.go\n      function: NewConanInfoCataloger\n    selectors: # AUTO-GENERATED\n      - conan\n      - cpp\n      - image\n      - installed\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseConaninfo\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/conaninfo.txt'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ConaninfoEntry\n        package_types: # AUTO-GENERATED\n          - conan\n        json_schema_types: # AUTO-GENERATED\n          - CConanInfoEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: flat\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/cataloger.go",
    "content": "/*\nPackage cpp provides a concrete Cataloger implementations for the C/C++ language ecosystem.\n*/\npackage cpp\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewConanCataloger returns a new C/C++ conanfile.txt and conan.lock cataloger object.\nfunc NewConanCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"conan-cataloger\").\n\t\tWithParserByGlobs(parseConanfile, \"**/conanfile.txt\").\n\t\tWithParserByGlobs(parseConanLock, \"**/conan.lock\")\n}\n\n// NewConanInfoCataloger returns a new C/C++ conaninfo.txt cataloger object.\nfunc NewConanInfoCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"conan-info-cataloger\").\n\t\tWithParserByGlobs(parseConaninfo, \"**/conaninfo.txt\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/cataloger_test.go",
    "content": "package cpp\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain conan files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"somewhere/src/conanfile.txt\",\n\t\t\t\t\"somewhere/src/conan.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewConanCataloger())\n\t\t})\n\t}\n}\n\nfunc TestCatalogerInfo_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain conan files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"somewhere/src/conaninfo.txt\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewConanInfoCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/package.go",
    "content": "package cpp\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype conanRef struct {\n\tName      string\n\tVersion   string\n\tUser      string\n\tChannel   string\n\tRevision  string\n\tPackageID string\n\tTimestamp string\n}\n\nfunc splitConanRef(ref string) *conanRef {\n\t// ConanfileEntry ref format is:\n\t// pkg/0.1@user/channel#rrev%timestamp\n\t// This method is based on conan's ref.loads method:\n\t// https://github.com/conan-io/conan/blob/release/2.0/conans/model/recipe_ref.py#L93C21-L93C21\n\n\tvar cref conanRef\n\n\t// timestamp\n\ttokens := strings.Split(ref, \"%\")\n\ttext := tokens[0]\n\tif len(tokens) == 2 {\n\t\tcref.Timestamp = tokens[1]\n\t}\n\n\t// package_id\n\ttokens = strings.Split(text, \":\")\n\ttext = tokens[0]\n\tif len(tokens) == 2 {\n\t\tcref.PackageID = tokens[1]\n\t}\n\n\t// revision\n\ttokens = strings.Split(text, \"#\")\n\tref = tokens[0]\n\tif len(tokens) == 2 {\n\t\tcref.Revision = tokens[1]\n\t}\n\n\t// name and version are always given\n\ttokens = strings.Split(ref, \"@\")\n\tnameAndVersion := strings.Split(tokens[0], \"/\")\n\tif len(nameAndVersion) < 2 || nameAndVersion[0] == \"\" || nameAndVersion[1] == \"\" {\n\t\treturn nil\n\t}\n\tcref.Name = nameAndVersion[0]\n\tcref.Version = nameAndVersion[1]\n\t// user and channel\n\tif len(tokens) == 2 && tokens[1] != \"\" {\n\t\ttokens = strings.Split(tokens[1], \"/\")\n\t\tif len(tokens) == 2 {\n\t\t\tcref.User = tokens[0]\n\t\t\tcref.Channel = tokens[1]\n\t\t}\n\t}\n\treturn &cref\n}\n\nfunc newConanfilePackage(m pkg.ConanfileEntry, locations ...file.Location) *pkg.Package {\n\treturn newConanPackage(m.Ref, m, locations...)\n}\n\nfunc newConanlockPackage(m pkg.ConanV1LockEntry, locations ...file.Location) *pkg.Package {\n\treturn newConanPackage(m.Ref, m, locations...)\n}\n\nfunc newConanReferencePackage(m pkg.ConanV2LockEntry, locations ...file.Location) *pkg.Package {\n\treturn newConanPackage(m.Ref, m, locations...)\n}\n\nfunc newConaninfoPackage(m pkg.ConaninfoEntry, locations ...file.Location) *pkg.Package {\n\treturn newConanPackage(m.Ref, m, locations...)\n}\n\nfunc newConanPackage(refStr string, metadata any, locations ...file.Location) *pkg.Package {\n\tref := splitConanRef(refStr)\n\tif ref == nil {\n\t\treturn nil\n\t}\n\n\tp := pkg.Package{\n\t\tName:      ref.Name,\n\t\tVersion:   ref.Version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(ref),\n\t\tLanguage:  pkg.CPP,\n\t\tType:      pkg.ConanPkg,\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn &p\n}\n\nfunc packageURL(ref *conanRef) string {\n\tqualifiers := packageurl.Qualifiers{}\n\tif ref.Channel != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"channel\",\n\t\t\tValue: ref.Channel,\n\t\t})\n\t}\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeConan,\n\t\tref.User,\n\t\tref.Name,\n\t\tref.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conanfile.go",
    "content": "package cpp\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseConanfile\n\n// parseConanfile is a parser function for conanfile.txt contents, returning all packages discovered.\nfunc parseConanfile(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tr := bufio.NewReader(reader)\n\tinRequirements := false\n\tvar pkgs []pkg.Package\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tswitch {\n\t\tcase errors.Is(err, io.EOF):\n\t\t\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n\t\tcase err != nil:\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse conanfile.txt file: %w\", err)\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.Contains(line, \"[requires]\"):\n\t\t\tinRequirements = true\n\t\tcase strings.ContainsAny(line, \"[]\") || strings.HasPrefix(strings.TrimSpace(line), \"#\"):\n\t\t\tinRequirements = false\n\t\t}\n\n\t\tm := pkg.ConanfileEntry{\n\t\t\tRef: strings.TrimSpace(line),\n\t\t}\n\n\t\tif !inRequirements {\n\t\t\tcontinue\n\t\t}\n\n\t\tp := newConanfilePackage(\n\t\t\tm,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\t\tif p == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tpkgs = append(pkgs, *p)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conanfile_test.go",
    "content": "package cpp\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseConanfile(t *testing.T) {\n\tfixture := \"testdata/conanfile.txt\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"catch2\",\n\t\t\tVersion:   \"2.13.8\",\n\t\t\tPURL:      \"pkg:conan/catch2@2.13.8\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"catch2/2.13.8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"docopt.cpp\",\n\t\t\tVersion:   \"0.6.3\",\n\t\t\tPURL:      \"pkg:conan/docopt.cpp@0.6.3\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"docopt.cpp/0.6.3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"fmt\",\n\t\t\tVersion:   \"8.1.1\",\n\t\t\tPURL:      \"pkg:conan/fmt@8.1.1\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"fmt/8.1.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"spdlog\",\n\t\t\tVersion:   \"1.9.2\",\n\t\t\tPURL:      \"pkg:conan/my_user/spdlog@1.9.2?channel=my_channel\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"spdlog/1.9.2@my_user/my_channel#1234567%%987654\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"sdl\",\n\t\t\tVersion:   \"2.0.20\",\n\t\t\tPURL:      \"pkg:conan/sdl@2.0.20\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"sdl/2.0.20#1234567%%987654\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"fltk\",\n\t\t\tVersion:   \"1.3.8\",\n\t\t\tPURL:      \"pkg:conan/my_user/fltk@1.3.8?channel=my_channel\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanfileEntry{\n\t\t\t\tRef: \"fltk/1.3.8@my_user/my_channel\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseConanfile, expected, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conaninfo.go",
    "content": "package cpp\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseConaninfo\n\nfunc parseConanMetadataFromFilePath(path string) (pkg.ConaninfoEntry, error) {\n\t//\tfullFilePath = str(reader.Location.AccessPath)\n\t// Split the full patch into the folders we expect. I.e.:\n\t// $HOME/.conan/data/<pkg-name>/<pkg-version>/<user>/<channel>/package/<package_id>/conaninfo.txt\n\tre := regexp.MustCompile(`.*[/\\\\](?P<name>[^/\\\\]+)[/\\\\](?P<version>[^/\\\\]+)[/\\\\](?P<user>[^/\\\\]+)[/\\\\](?P<channel>[^/\\\\]+)[/\\\\]package[/\\\\](?P<id>[^/\\\\]+)[/\\\\]conaninfo\\.txt`)\n\tmatches := re.FindStringSubmatch(path)\n\tif len(matches) != 6 {\n\t\treturn pkg.ConaninfoEntry{}, fmt.Errorf(\"failed to get parent package info from conaninfo file path\")\n\t}\n\tmainPackageRef := fmt.Sprintf(\"%s/%s@%s/%s\", matches[1], matches[2], matches[3], matches[4])\n\treturn pkg.ConaninfoEntry{\n\t\tRef:       mainPackageRef,\n\t\tPackageID: matches[5],\n\t}, nil\n}\n\nfunc getRelationships(pkgs []pkg.Package, mainPackageRef pkg.Package) []artifact.Relationship {\n\tvar relationships []artifact.Relationship\n\tfor _, p := range pkgs {\n\t\t// this is a pkg that package \"main_package\" depends on... make a relationship\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: p,\n\t\t\tTo:   mainPackageRef,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t})\n\t}\n\treturn relationships\n}\n\nfunc parseFullRequiresLine(line string, reader file.LocationReadCloser, pkgs *[]pkg.Package) {\n\tif len(line) == 0 {\n\t\treturn\n\t}\n\n\tcref := splitConanRef(line)\n\n\tmeta := pkg.ConaninfoEntry{\n\t\tRef:       line,\n\t\tPackageID: cref.PackageID,\n\t}\n\n\tp := newConaninfoPackage(\n\t\tmeta,\n\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t)\n\tif p != nil {\n\t\t*pkgs = append(*pkgs, *p)\n\t}\n}\n\n// parseConaninfo is a parser function for conaninfo.txt contents, returning all packages discovered.\n// The conaninfo.txt file is typically present for an installed conan package under:\n// $HOME/.conan/data/<pkg-name>/<pkg-version>/<user>/<channel>/package/<package_id>/conaninfo.txt\n// Based on the relative path we can get:\n// - package name\n// - package version\n// - package id\n// - user\n// - channel\n// The conaninfo.txt gives:\n// - package requires (full_requires)\n// - recipe revision (recipe_hash)\nfunc parseConaninfo(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t// First set the base package info by checking the relative path\n\tfullFilePath := string(reader.Location.LocationData.Reference().RealPath)\n\tif len(fullFilePath) == 0 {\n\t\tfullFilePath = reader.RealPath\n\t}\n\n\tmainMetadata, err := parseConanMetadataFromFilePath(fullFilePath)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tr := bufio.NewReader(reader)\n\tinRequirements := false\n\tinRecipeHash := false\n\tvar pkgs []pkg.Package\n\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tswitch {\n\t\tcase errors.Is(err, io.EOF):\n\t\t\tmainPackage := newConaninfoPackage(\n\t\t\t\tmainMetadata,\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t)\n\n\t\t\tmainPackageRef := *mainPackage\n\t\t\trelationships := getRelationships(pkgs, mainPackageRef)\n\n\t\t\tpkgs = append(pkgs, mainPackageRef)\n\n\t\t\treturn pkgs, relationships, nil\n\t\tcase err != nil:\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse conaninfo.txt file: %w\", err)\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.Contains(line, \"[full_requires]\"):\n\t\t\tinRequirements = true\n\t\t\tinRecipeHash = false\n\t\t\tcontinue\n\t\tcase strings.Contains(line, \"[recipe_hash]\"):\n\t\t\tinRequirements = false\n\t\t\tinRecipeHash = true\n\t\t\tcontinue\n\t\tcase strings.ContainsAny(line, \"[]\") || strings.HasPrefix(strings.TrimSpace(line), \"#\"):\n\t\t\tinRequirements = false\n\t\t\tinRecipeHash = false\n\t\t\tcontinue\n\t\t}\n\n\t\tif inRequirements {\n\t\t\tparseFullRequiresLine(strings.Trim(line, \"\\n \"), reader, &pkgs)\n\t\t}\n\t\tif inRecipeHash {\n\t\t\t// add recipe hash to the metadata ref\n\t\t\tmainMetadata.Ref = mainMetadata.Ref + \"#\" + strings.Trim(line, \"\\n \")\n\t\t\tinRecipeHash = false\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conaninfo_test.go",
    "content": "package cpp\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseConaninfo(t *testing.T) {\n\tfixture := \"testdata/conaninfo/mfast/1.2.2/my_user/my_channel/package/9d1f076b471417647c2022a78d5e2c1f834289ac/conaninfo.txt\"\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"mfast\",\n\t\t\tVersion:   \"1.2.2\",\n\t\t\tPURL:      \"pkg:conan/my_user/mfast@1.2.2?channel=my_channel\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"mfast/1.2.2@my_user/my_channel#c6f6387c9b99780f0ee05e25f99d0f39\",\n\t\t\t\tPackageID: \"9d1f076b471417647c2022a78d5e2c1f834289ac\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"boost\",\n\t\t\tVersion:   \"1.75.0\",\n\t\t\tPURL:      \"pkg:conan/boost@1.75.0\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"boost/1.75.0:dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978\",\n\t\t\t\tPackageID: \"dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"zlib\",\n\t\t\tVersion:   \"1.2.13\",\n\t\t\tPURL:      \"pkg:conan/zlib@1.2.13\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"zlib/1.2.13:dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t\tPackageID: \"dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"bzip2\",\n\t\t\tVersion:   \"1.0.8\",\n\t\t\tPURL:      \"pkg:conan/bzip2@1.0.8\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"bzip2/1.0.8:c32092bf4d4bb47cf962af898e02823f499b017e\",\n\t\t\t\tPackageID: \"c32092bf4d4bb47cf962af898e02823f499b017e\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"libbacktrace\",\n\t\t\tVersion:   \"cci.20210118\",\n\t\t\tPURL:      \"pkg:conan/libbacktrace@cci.20210118\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"libbacktrace/cci.20210118:dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t\tPackageID: \"dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"tinyxml2\",\n\t\t\tVersion:   \"9.0.0\",\n\t\t\tPURL:      \"pkg:conan/tinyxml2@9.0.0\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConaninfoEntry{\n\t\t\t\tRef:       \"tinyxml2/9.0.0:6557f18ca99c0b6a233f43db00e30efaa525e27e\",\n\t\t\t\tPackageID: \"6557f18ca99c0b6a233f43db00e30efaa525e27e\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// relationships require IDs to be set to be sorted similarly\n\tfor i := range expected {\n\t\texpected[i].SetID()\n\t}\n\n\tvar expectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expected[1], // boost\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[5], // tinyxml2\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[2], // zlib\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[3], // bzip2\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[4], // libbacktrace\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseConaninfo, expected, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conanlock.go",
    "content": "package cpp\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseConanLock\n\ntype conanLock struct {\n\tGraphLock struct {\n\t\tNodes map[string]struct {\n\t\t\tRef            string   `json:\"ref\"`\n\t\t\tPackageID      string   `json:\"package_id\"`\n\t\t\tContext        string   `json:\"context\"`\n\t\t\tPrev           string   `json:\"prev\"`\n\t\t\tRequires       []string `json:\"requires\"`\n\t\t\tPythonRequires string   `json:\"py_requires\"`\n\t\t\tOptions        string   `json:\"options\"`\n\t\t\tPath           string   `json:\"path\"`\n\t\t} `json:\"nodes\"`\n\t} `json:\"graph_lock\"`\n\tVersion      string `json:\"version\"`\n\tProfileHost  string `json:\"profile_host\"`\n\tProfileBuild string `json:\"profile_build,omitempty\"`\n\t// conan v0.5+ lockfiles use \"requires\", \"build_requires\" and \"python_requires\"\n\tRequires       []string `json:\"requires,omitempty\"`\n\tBuildRequires  []string `json:\"build_requires,omitempty\"`\n\tPythonRequires []string `json:\"python_requires,omitempty\"`\n}\n\n// parseConanLock is a parser function for conan.lock (v1 and V2) contents, returning all packages discovered.\nfunc parseConanLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar cl conanLock\n\tif err := json.NewDecoder(reader).Decode(&cl); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// requires is a list of package indices. We first need to fill it, and then we can resolve the package\n\t// in a second iteration\n\tvar indexToPkgMap = map[string]pkg.Package{}\n\n\tv2Pkgs := handleConanLockV2(cl, reader, indexToPkgMap)\n\n\t// we do not want to store the index list requires in the conan metadata, because it is not useful to have it in\n\t// the SBOM. Instead, we will store it in a map and then use it to build the relationships\n\t// maps pkg.ID to a list of indices\n\tvar parsedPkgRequires = map[artifact.ID][]string{}\n\n\tv1Pkgs := handleConanLockV1(cl, reader, parsedPkgRequires, indexToPkgMap)\n\n\tvar relationships []artifact.Relationship\n\tvar pkgs []pkg.Package\n\tpkgs = append(pkgs, v1Pkgs...)\n\tpkgs = append(pkgs, v2Pkgs...)\n\n\tfor _, p := range pkgs {\n\t\trequires := parsedPkgRequires[p.ID()]\n\t\tfor _, r := range requires {\n\t\t\t// this is a pkg that package \"p\" depends on... make a relationship\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: indexToPkgMap[r],\n\t\t\t\tTo:   p,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn pkgs, relationships, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\n// handleConanLockV1 handles the parsing of conan lock v1 files (aka v0.4)\nfunc handleConanLockV1(cl conanLock, reader file.LocationReadCloser, parsedPkgRequires map[artifact.ID][]string, indexToPkgMap map[string]pkg.Package) []pkg.Package {\n\tvar pkgs []pkg.Package\n\tfor idx, node := range cl.GraphLock.Nodes {\n\t\tmetadata := pkg.ConanV1LockEntry{\n\t\t\tRef:       node.Ref,\n\t\t\tOptions:   parseOptions(node.Options),\n\t\t\tPath:      node.Path,\n\t\t\tContext:   node.Context,\n\t\t\tPackageID: node.PackageID,\n\t\t\tPrev:      node.Prev,\n\t\t}\n\n\t\tp := newConanlockPackage(\n\t\t\tmetadata,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\n\t\tif p != nil {\n\t\t\tpk := *p\n\t\t\tpkgs = append(pkgs, pk)\n\t\t\tparsedPkgRequires[pk.ID()] = node.Requires\n\t\t\tindexToPkgMap[idx] = pk\n\t\t}\n\t}\n\treturn pkgs\n}\n\n// handleConanLockV2 handles the parsing of conan lock v2 files (aka v0.5)\nfunc handleConanLockV2(cl conanLock, reader file.LocationReadCloser, indexToPkgMap map[string]pkg.Package) []pkg.Package {\n\tvar pkgs []pkg.Package\n\tfor _, ref := range cl.Requires {\n\t\treference, name := parseConanV2Reference(ref)\n\t\tif name == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tp := newConanReferencePackage(\n\t\t\treference,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\n\t\tif p != nil {\n\t\t\tpk := *p\n\t\t\tpkgs = append(pkgs, pk)\n\t\t\tindexToPkgMap[name] = pk\n\t\t}\n\t}\n\treturn pkgs\n}\n\nfunc parseOptions(options string) []pkg.KeyValue {\n\to := make([]pkg.KeyValue, 0)\n\tif len(options) == 0 {\n\t\treturn nil\n\t}\n\n\tkvps := strings.Split(options, \"\\n\")\n\tfor _, kvp := range kvps {\n\t\tkv := strings.Split(kvp, \"=\")\n\t\tif len(kv) == 2 {\n\t\t\to = append(o, pkg.KeyValue{\n\t\t\t\tKey:   kv[0],\n\t\t\t\tValue: kv[1],\n\t\t\t})\n\t\t}\n\t}\n\n\treturn o\n}\n\nfunc parseConanV2Reference(ref string) (pkg.ConanV2LockEntry, string) {\n\t// very flexible format name/version[@username[/channel]][#rrev][:pkgid[#prev]][%timestamp]\n\treference := pkg.ConanV2LockEntry{Ref: ref}\n\n\tparts := strings.SplitN(ref, \"%\", 2)\n\tif len(parts) == 2 {\n\t\tref = parts[0]\n\t\treference.TimeStamp = parts[1]\n\t}\n\n\tparts = strings.SplitN(ref, \":\", 2)\n\tif len(parts) == 2 {\n\t\tref = parts[0]\n\t\tparts = strings.SplitN(parts[1], \"#\", 2)\n\t\treference.PackageID = parts[0]\n\t\tif len(parts) == 2 {\n\t\t\treference.PackageRevision = parts[1]\n\t\t}\n\t}\n\n\tparts = strings.SplitN(ref, \"#\", 2)\n\tif len(parts) == 2 {\n\t\tref = parts[0]\n\t\treference.RecipeRevision = parts[1]\n\t}\n\n\tparts = strings.SplitN(ref, \"@\", 2)\n\tif len(parts) == 2 {\n\t\tref = parts[0]\n\t\tUsernameChannel := parts[1]\n\n\t\tparts = strings.SplitN(UsernameChannel, \"/\", 2)\n\t\treference.Username = parts[0]\n\t\tif len(parts) == 2 {\n\t\t\treference.Channel = parts[1]\n\t\t}\n\t}\n\n\tparts = strings.SplitN(ref, \"/\", 2)\n\tvar name string\n\tif len(parts) == 2 {\n\t\tname = parts[0]\n\t} else {\n\t\t// consumer conanfile.txt or conanfile.py might not have a name\n\t\tname = \"\"\n\t}\n\n\treturn reference, name\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/parse_conanlock_test.go",
    "content": "package cpp\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseConanLock(t *testing.T) {\n\tfixture := \"testdata/conan.lock\"\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"mfast\",\n\t\t\tVersion:   \"1.2.2\",\n\t\t\tPURL:      \"pkg:conan/my_user/mfast@1.2.2?channel=my_channel\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"mfast/1.2.2@my_user/my_channel#c6f6387c9b99780f0ee05e25f99d0f39\",\n\t\t\t\tOptions: pkg.KeyValues{\n\t\t\t\t\t{Key: \"fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"with_sqlite3\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:addr2line_location\", Value: \"/usr/bin/addr2line\"},\n\t\t\t\t\t{Key: \"boost:asio_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:buildid\", Value: \"None\"},\n\t\t\t\t\t{Key: \"boost:bzip2\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:debug_level\", Value: \"0\"},\n\t\t\t\t\t{Key: \"boost:diagnostic_definitions\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:error_code_header_only\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:extra_b2_flags\", Value: \"None\"},\n\t\t\t\t\t{Key: \"boost:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:filesystem_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:header_only\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:i18n_backend\", Value: \"deprecated\"},\n\t\t\t\t\t{Key: \"boost:i18n_backend_iconv\", Value: \"libc\"},\n\t\t\t\t\t{Key: \"boost:i18n_backend_icu\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:layout\", Value: \"system\"},\n\t\t\t\t\t{Key: \"boost:lzma\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:magic_autolink\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:multithreading\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:namespace\", Value: \"boost\"},\n\t\t\t\t\t{Key: \"boost:namespace_alias\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:numa\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:pch\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:python_executable\", Value: \"None\"},\n\t\t\t\t\t{Key: \"boost:python_version\", Value: \"None\"},\n\t\t\t\t\t{Key: \"boost:segmented_stacks\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:system_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:system_use_utf8\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:visibility\", Value: \"hidden\"},\n\t\t\t\t\t{Key: \"boost:with_stacktrace_backtrace\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:without_atomic\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_chrono\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_container\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_context\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_contract\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_coroutine\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_date_time\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_exception\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_fiber\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_filesystem\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_graph\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_graph_parallel\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:without_iostreams\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_json\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_locale\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_log\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_math\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_mpi\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:without_nowide\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_program_options\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_python\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:without_random\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_regex\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_serialization\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_stacktrace\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_system\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_test\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_thread\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_timer\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_type_erasure\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:without_wave\", Value: \"False\"},\n\t\t\t\t\t{Key: \"boost:zlib\", Value: \"True\"},\n\t\t\t\t\t{Key: \"boost:zstd\", Value: \"False\"},\n\t\t\t\t\t{Key: \"bzip2:build_executable\", Value: \"True\"},\n\t\t\t\t\t{Key: \"bzip2:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"bzip2:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"libbacktrace:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"libbacktrace:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"tinyxml2:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"tinyxml2:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"zlib:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"zlib:shared\", Value: \"False\"},\n\t\t\t\t},\n\t\t\t\tContext:   \"host\",\n\t\t\t\tPackageID: \"9d1f076b471417647c2022a78d5e2c1f834289ac\",\n\t\t\t\tPrev:      \"0ca9799450422cc55a92ccc6ffd57fba\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"boost\",\n\t\t\tVersion:   \"1.75.0\",\n\t\t\tPURL:      \"pkg:conan/boost@1.75.0\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"boost/1.75.0#a9c318f067216f900900e044e7af4ab1\",\n\t\t\t\tOptions: pkg.KeyValues{\n\t\t\t\t\t{Key: \"addr2line_location\", Value: \"/usr/bin/addr2line\"},\n\t\t\t\t\t{Key: \"asio_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"buildid\", Value: \"None\"},\n\t\t\t\t\t{Key: \"bzip2\", Value: \"True\"},\n\t\t\t\t\t{Key: \"debug_level\", Value: \"0\"},\n\t\t\t\t\t{Key: \"diagnostic_definitions\", Value: \"False\"},\n\t\t\t\t\t{Key: \"error_code_header_only\", Value: \"False\"},\n\t\t\t\t\t{Key: \"extra_b2_flags\", Value: \"None\"},\n\t\t\t\t\t{Key: \"fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"filesystem_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"header_only\", Value: \"False\"},\n\t\t\t\t\t{Key: \"i18n_backend\", Value: \"deprecated\"},\n\t\t\t\t\t{Key: \"i18n_backend_iconv\", Value: \"libc\"},\n\t\t\t\t\t{Key: \"i18n_backend_icu\", Value: \"False\"},\n\t\t\t\t\t{Key: \"layout\", Value: \"system\"},\n\t\t\t\t\t{Key: \"lzma\", Value: \"False\"},\n\t\t\t\t\t{Key: \"magic_autolink\", Value: \"False\"},\n\t\t\t\t\t{Key: \"multithreading\", Value: \"True\"},\n\t\t\t\t\t{Key: \"namespace\", Value: \"boost\"},\n\t\t\t\t\t{Key: \"namespace_alias\", Value: \"False\"},\n\t\t\t\t\t{Key: \"numa\", Value: \"True\"},\n\t\t\t\t\t{Key: \"pch\", Value: \"True\"},\n\t\t\t\t\t{Key: \"python_executable\", Value: \"None\"},\n\t\t\t\t\t{Key: \"python_version\", Value: \"None\"},\n\t\t\t\t\t{Key: \"segmented_stacks\", Value: \"False\"},\n\t\t\t\t\t{Key: \"shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"system_no_deprecated\", Value: \"False\"},\n\t\t\t\t\t{Key: \"system_use_utf8\", Value: \"False\"},\n\t\t\t\t\t{Key: \"visibility\", Value: \"hidden\"},\n\t\t\t\t\t{Key: \"with_stacktrace_backtrace\", Value: \"True\"},\n\t\t\t\t\t{Key: \"without_atomic\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_chrono\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_container\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_context\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_contract\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_coroutine\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_date_time\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_exception\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_fiber\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_filesystem\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_graph\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_graph_parallel\", Value: \"True\"},\n\t\t\t\t\t{Key: \"without_iostreams\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_json\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_locale\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_log\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_math\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_mpi\", Value: \"True\"},\n\t\t\t\t\t{Key: \"without_nowide\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_program_options\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_python\", Value: \"True\"},\n\t\t\t\t\t{Key: \"without_random\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_regex\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_serialization\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_stacktrace\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_system\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_test\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_thread\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_timer\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_type_erasure\", Value: \"False\"},\n\t\t\t\t\t{Key: \"without_wave\", Value: \"False\"},\n\t\t\t\t\t{Key: \"zlib\", Value: \"True\"},\n\t\t\t\t\t{Key: \"zstd\", Value: \"False\"},\n\t\t\t\t\t{Key: \"bzip2:build_executable\", Value: \"True\"},\n\t\t\t\t\t{Key: \"bzip2:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"bzip2:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"libbacktrace:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"libbacktrace:shared\", Value: \"False\"},\n\t\t\t\t\t{Key: \"zlib:fPIC\", Value: \"True\"},\n\t\t\t\t\t{Key: \"zlib:shared\", Value: \"False\"},\n\t\t\t\t},\n\t\t\t\tContext:   \"host\",\n\t\t\t\tPackageID: \"dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978\",\n\t\t\t\tPrev:      \"b9d7912e6131dfa453c725593b36c808\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"zlib\",\n\t\t\tVersion:   \"1.2.12\",\n\t\t\tPURL:      \"pkg:conan/zlib@1.2.12\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"zlib/1.2.12#c67ce17f2e96b972d42393ce50a76a1a\",\n\t\t\t\tOptions: pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"fPIC\",\n\t\t\t\t\t\tValue: \"True\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"shared\",\n\t\t\t\t\t\tValue: \"False\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContext:   \"host\",\n\t\t\t\tPackageID: \"dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t\tPrev:      \"7cd359d44f89ab08e33b5db75605002c\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"bzip2\",\n\t\t\tVersion:   \"1.0.8\",\n\t\t\tPURL:      \"pkg:conan/bzip2@1.0.8\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"bzip2/1.0.8#62a8031289639043797cf53fa876d0ef\",\n\t\t\t\tOptions: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"build_executable\",\n\t\t\t\t\t\tValue: \"True\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"fPIC\",\n\t\t\t\t\t\tValue: \"True\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"shared\",\n\t\t\t\t\t\tValue: \"False\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContext:   \"host\",\n\t\t\t\tPackageID: \"c32092bf4d4bb47cf962af898e02823f499b017e\",\n\t\t\t\tPrev:      \"b746948bc999d6f17f52a1f76e729e80\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"libbacktrace\",\n\t\t\tVersion:   \"cci.20210118\",\n\t\t\tPURL:      \"pkg:conan/libbacktrace@cci.20210118\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"libbacktrace/cci.20210118#76e40b760e0bcd602d46db56b22820ab\",\n\t\t\t\tOptions: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"fPIC\",\n\t\t\t\t\t\tValue: \"True\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"shared\",\n\t\t\t\t\t\tValue: \"False\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContext:   \"host\",\n\t\t\t\tPackageID: \"dfbe50feef7f3c6223a476cd5aeadb687084a646\",\n\t\t\t\tPrev:      \"98a976f017e894c27e9a158b807ec0c7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"tinyxml2\",\n\t\t\tVersion:   \"9.0.0\",\n\t\t\tPURL:      \"pkg:conan/tinyxml2@9.0.0\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV1LockEntry{\n\t\t\t\tRef: \"tinyxml2/9.0.0#9f13a36ebfc222cd55fe531a0a8d94d1\",\n\t\t\t\tOptions: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"fPIC\",\n\t\t\t\t\t\tValue: \"True\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"shared\",\n\t\t\t\t\t\tValue: \"False\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContext: \"host\",\n\t\t\t\t// intentionally remove to test missing PackageID and Prev\n\t\t\t\t// PackageID: \"6557f18ca99c0b6a233f43db00e30efaa525e27e\",\n\t\t\t\t// Prev:      \"548bb273d2980991baa519453d68e5cd\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// relationships require IDs to be set to be sorted similarly\n\tfor i := range expected {\n\t\texpected[i].SetID()\n\t}\n\n\tvar expectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expected[1], // boost\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[5], // tinyxml2\n\t\t\tTo:   expected[0], // mfast\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[2], // zlib\n\t\t\tTo:   expected[1], // boost\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[3], // bzip2\n\t\t\tTo:   expected[1], // boost\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t\t{\n\t\t\tFrom: expected[4], // libbacktrace\n\t\t\tTo:   expected[1], // boost\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\tData: nil,\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseConanLock, expected, expectedRelationships)\n}\n\nfunc TestParseConanLockV2(t *testing.T) {\n\tfixture := \"testdata/conanlock-v2/conan.lock\"\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"matrix\",\n\t\t\tVersion:   \"1.1\",\n\t\t\tPURL:      \"pkg:conan/matrix@1.1\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV2LockEntry{\n\t\t\t\tRef:            \"matrix/1.1#905c3f0babc520684c84127378fefdd0%1675278901.7527816\",\n\t\t\t\tRecipeRevision: \"905c3f0babc520684c84127378fefdd0\",\n\t\t\t\tTimeStamp:      \"1675278901.7527816\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"sound32\",\n\t\t\tVersion:   \"1.0\",\n\t\t\tPURL:      \"pkg:conan/sound32@1.0\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixture)),\n\t\t\tLanguage:  pkg.CPP,\n\t\t\tType:      pkg.ConanPkg,\n\t\t\tMetadata: pkg.ConanV2LockEntry{\n\t\t\t\tRef:            \"sound32/1.0#83d4b7bf607b3b60a6546f8b58b5cdd7%1675278904.0791488\",\n\t\t\t\tRecipeRevision: \"83d4b7bf607b3b60a6546f8b58b5cdd7\",\n\t\t\t\tTimeStamp:      \"1675278904.0791488\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// relationships require IDs to be set to be sorted similarly\n\tfor i := range expected {\n\t\texpected[i].SetID()\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseConanLock, expected, expectedRelationships)\n}\n\nfunc Test_corruptConanlock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/conan.lock\").\n\t\tWithError().\n\t\tTestParser(t, parseConanLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/testdata/README.md",
    "content": "# Conan test data\n\nThis folder contains the test data for the Conan package manager.\n\n## conan.lock\n\nThe conan lock file is created in the following way.\n\nWe explicitly use a package which has dependencies, which in turn also have dependencies.\nThis is necessary to verify that the dependency tree is properly parsed.\n\n1. Use `conan lock create --reference \"mfast/1.2.2#c6f6387c9b99780f0ee05e25f99d0f39\"`\n2. Manually modify the user and channel of mfast package, to be able to test that it is properly set in SBOM:  \n   `sed -i 's|mfast/1.2.2#c6f6387c9b99780f0ee05e25f99d0f39|mfast/1.2.2@my_user/my_channel#c6f6387c9b99780f0ee05e25f99d0f39|g' conan.lock`\n3. Manually delete the package id and prev from tinyxml2 entry to test conan lock parsing if they are missing:  \n   `sed -i 's|\\\"package_id\\\": \\\"6557f18ca99c0b6a233f43db00e30efaa525e27e\\\",||g' conan.lock`    \n   `sed -i 's|\\\"prev\\\": \\\"548bb273d2980991baa519453d68e5cd\\\",||g' conan.lock`"
  },
  {
    "path": "syft/pkg/cataloger/cpp/testdata/conanfile.txt",
    "content": "# Docs at https://docs.conan.io/en/latest/reference/conanfile_txt.html\n\n[requires]\ncatch2/2.13.8\ndocopt.cpp/0.6.3\nfmt/8.1.1\nspdlog/1.9.2@my_user/my_channel#1234567%%987654\nsdl/2.0.20#1234567%%987654\nfltk/1.3.8@my_user/my_channel\n\n[generators]\ncmake_find_package_multi\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/testdata/conaninfo/mfast/1.2.2/my_user/my_channel/package/9d1f076b471417647c2022a78d5e2c1f834289ac/conaninfo.txt",
    "content": "[settings]\n    arch=x86_64\n    build_type=Release\n    compiler=gcc\n    compiler.libcxx=libstdc++11\n    compiler.version=11\n    os=Linux\n\n[requires]\n    boost/1.Y.Z\n    tinyxml2/9.Y.Z\n\n[options]\n    fPIC=True\n    shared=False\n    with_sqlite3=False\n\n[full_settings]\n    arch=x86_64\n    build_type=Release\n    compiler=gcc\n    compiler.libcxx=libstdc++11\n    compiler.version=11\n    os=Linux\n\n[full_requires]\n    boost/1.75.0:dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978\n    bzip2/1.0.8:c32092bf4d4bb47cf962af898e02823f499b017e\n    libbacktrace/cci.20210118:dfbe50feef7f3c6223a476cd5aeadb687084a646\n    tinyxml2/9.0.0:6557f18ca99c0b6a233f43db00e30efaa525e27e\n    zlib/1.2.13:dfbe50feef7f3c6223a476cd5aeadb687084a646\n\n[full_options]\n    fPIC=True\n    shared=False\n    with_sqlite3=False\n    boost:addr2line_location=/usr/bin/addr2line\n    boost:asio_no_deprecated=False\n    boost:buildid=None\n    boost:bzip2=True\n    boost:debug_level=0\n    boost:diagnostic_definitions=False\n    boost:error_code_header_only=False\n    boost:extra_b2_flags=None\n    boost:fPIC=True\n    boost:filesystem_no_deprecated=False\n    boost:filesystem_use_std_fs=False\n    boost:filesystem_version=None\n    boost:header_only=False\n    boost:i18n_backend=deprecated\n    boost:i18n_backend_iconv=libc\n    boost:i18n_backend_icu=False\n    boost:layout=system\n    boost:lzma=False\n    boost:magic_autolink=False\n    boost:multithreading=True\n    boost:namespace=boost\n    boost:namespace_alias=False\n    boost:numa=True\n    boost:pch=True\n    boost:python_executable=None\n    boost:python_version=None\n    boost:segmented_stacks=False\n    boost:shared=False\n    boost:system_no_deprecated=False\n    boost:system_use_utf8=False\n    boost:visibility=hidden\n    boost:with_stacktrace_backtrace=True\n    boost:without_atomic=False\n    boost:without_chrono=False\n    boost:without_container=False\n    boost:without_context=False\n    boost:without_contract=False\n    boost:without_coroutine=False\n    boost:without_date_time=False\n    boost:without_exception=False\n    boost:without_fiber=False\n    boost:without_filesystem=False\n    boost:without_graph=False\n    boost:without_graph_parallel=True\n    boost:without_iostreams=False\n    boost:without_json=False\n    boost:without_locale=False\n    boost:without_log=False\n    boost:without_math=False\n    boost:without_mpi=True\n    boost:without_nowide=False\n    boost:without_program_options=False\n    boost:without_python=True\n    boost:without_random=False\n    boost:without_regex=False\n    boost:without_serialization=False\n    boost:without_stacktrace=False\n    boost:without_system=False\n    boost:without_test=False\n    boost:without_thread=False\n    boost:without_timer=False\n    boost:without_type_erasure=False\n    boost:without_wave=False\n    boost:zlib=True\n    boost:zstd=False\n    bzip2:build_executable=True\n    bzip2:fPIC=True\n    bzip2:shared=False\n    libbacktrace:fPIC=True\n    libbacktrace:shared=False\n    tinyxml2:fPIC=True\n    tinyxml2:shared=False\n    zlib:fPIC=True\n    zlib:shared=False\n\n[recipe_hash]\n    c6f6387c9b99780f0ee05e25f99d0f39\n\n[env]\n"
  },
  {
    "path": "syft/pkg/cataloger/cpp/testdata/glob-paths/somewhere/src/conanfile.txt",
    "content": "bogus conan file"
  },
  {
    "path": "syft/pkg/cataloger/cpp/testdata/glob-paths/somewhere/src/conaninfo.txt",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/dart/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: dart # MANUAL\n    name: dart-pubspec-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/dart/cataloger.go\n      function: NewPubspecCataloger\n    selectors: # AUTO-GENERATED\n      - dart\n      - declared\n      - directory\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePubspec\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/pubspec.yml'\n            - '**/pubspec.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.DartPubspec\n        package_types: # AUTO-GENERATED\n          - dart-pub\n        json_schema_types: # AUTO-GENERATED\n          - DartPubspec\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: dart # MANUAL\n    name: dart-pubspec-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/dart/cataloger.go\n      function: NewPubspecLockCataloger\n    selectors: # AUTO-GENERATED\n      - dart\n      - declared\n      - directory\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePubspecLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/pubspec.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.DartPubspecLockEntry\n        package_types: # AUTO-GENERATED\n          - dart-pub\n        json_schema_types: # AUTO-GENERATED\n          - DartPubspecLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/cataloger.go",
    "content": "/*\nPackage dart provides a concrete Cataloger implementations for the Dart language ecosystem.\n*/\npackage dart\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewPubspecLockCataloger returns a new Dartlang cataloger object base on pubspec lock files.\nfunc NewPubspecLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"dart-pubspec-lock-cataloger\").\n\t\tWithParserByGlobs(parsePubspecLock, \"**/pubspec.lock\")\n}\n\n// NewPubspecCataloger returns a new Dartlang cataloger object base on pubspec files.\nfunc NewPubspecCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"dart-pubspec-cataloger\").\n\t\tWithParserByGlobs(parsePubspec, \"**/pubspec.yml\", \"**/pubspec.yaml\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/cataloger_test.go",
    "content": "package dart\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestPubspecLockCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain pubspec lock files\",\n\t\t\tfixture: \"testdata/glob-paths/lock\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/pubspec.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPubspecLockCataloger())\n\t\t})\n\t}\n}\n\nfunc TestPubspecCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain pubspec files\",\n\t\t\tfixture: \"testdata/glob-paths/spec\",\n\t\t\texpected: []string{\n\t\t\t\t\"pubspec.yml\",\n\t\t\t\t\"pubspec.yaml\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPubspecCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/package.go",
    "content": "package dart\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newPubspecLockPackage(name string, raw pubspecLockPackage, locations ...file.Location) pkg.Package {\n\tmetadata := pkg.DartPubspecLockEntry{\n\t\tName:      name,\n\t\tVersion:   raw.Version,\n\t\tHostedURL: raw.getHostedURL(),\n\t\tVcsURL:    raw.getVcsURL(),\n\t}\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   raw.Version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURLFromPubspecLock(metadata),\n\t\tLanguage:  pkg.Dart,\n\t\tType:      pkg.DartPubPkg,\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPubspecPackage(ctx context.Context, resolver file.Resolver, raw pubspecPackage, locations ...file.Location) pkg.Package {\n\tvar env *pkg.DartPubspecEnvironment\n\tif raw.Environment.SDK != \"\" || raw.Environment.Flutter != \"\" {\n\t\t// this is required only after pubspec v2, but might have been optional before this\n\t\tenv = &pkg.DartPubspecEnvironment{\n\t\t\tSDK:     raw.Environment.SDK,\n\t\t\tFlutter: raw.Environment.Flutter,\n\t\t}\n\t}\n\tp := pkg.Package{\n\t\tName:      raw.Name,\n\t\tVersion:   raw.Version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURLFromPubspec(raw.Name, raw.Version),\n\t\tLanguage:  pkg.Dart,\n\t\tType:      pkg.DartPubPkg,\n\t\tMetadata: pkg.DartPubspec{\n\t\t\tHomepage:          raw.Homepage,\n\t\t\tRepository:        raw.Repository,\n\t\t\tDocumentation:     raw.Documentation,\n\t\t\tPublishTo:         raw.PublishTo,\n\t\t\tEnvironment:       env,\n\t\t\tPlatforms:         raw.Platforms,\n\t\t\tIgnoredAdvisories: raw.IgnoredAdvisories,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\n\treturn p\n}\n\nfunc packageURLFromPubspecLock(m pkg.DartPubspecLockEntry) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\tif m.HostedURL != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"hosted_url\",\n\t\t\tValue: m.HostedURL,\n\t\t})\n\t} else if m.VcsURL != \"\" { // Default to using Hosted if somehow both are provided\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"vcs_url\",\n\t\t\tValue: m.VcsURL,\n\t\t})\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypePub,\n\t\t\"\",\n\t\tm.Name,\n\t\tm.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc packageURLFromPubspec(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypePub,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/parse_pubspec.go",
    "content": "package dart\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype pubspecPackage struct {\n\tName              string                 `mapstructure:\"name\" yaml:\"name\"`\n\tVersion           string                 `mapstructure:\"version\" yaml:\"version\"`\n\tHomepage          string                 `mapstructure:\"homepage\" yaml:\"homepage\"`\n\tRepository        string                 `mapstructure:\"repository\" yaml:\"repository\"`\n\tDocumentation     string                 `mapstructure:\"documentation\" yaml:\"documentation\"`\n\tPublishTo         string                 `mapstructure:\"publish_to\" yaml:\"publish_to\"`\n\tEnvironment       dartPubspecEnvironment `mapstructure:\"environment\" yaml:\"environment\"`\n\tPlatforms         []string               `mapstructure:\"platforms\" yaml:\"platforms\"`\n\tIgnoredAdvisories []string               `mapstructure:\"ignored_advisories\" yaml:\"ignored_advisories\"`\n}\n\ntype dartPubspecEnvironment struct {\n\tSDK     string `mapstructure:\"sdk\" yaml:\"sdk\"`\n\tFlutter string `mapstructure:\"flutter\" yaml:\"flutter\"`\n}\n\nfunc parsePubspec(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\tdec := yaml.NewDecoder(reader)\n\n\tvar p pubspecPackage\n\tif err := dec.Decode(&p); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse pubspec.yml file: %w\", err)\n\t}\n\n\tpkgs = append(pkgs,\n\t\tnewPubspecPackage(\n\t\t\tctx,\n\t\t\tresolver,\n\t\t\tp,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t)\n\n\treturn pkgs, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/parse_pubspec_lock.go",
    "content": "package dart\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"sort\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parsePubspecLock\n\nconst defaultPubRegistry string = \"https://pub.dartlang.org\"\n\ntype pubspecLock struct {\n\tPackages map[string]pubspecLockPackage `yaml:\"packages\"`\n\tSdks     map[string]string             `yaml:\"sdks\"`\n}\n\ntype pubspecLockPackage struct {\n\tDependency  string                 `yaml:\"dependency\" mapstructure:\"dependency\"`\n\tDescription pubspecLockDescription `yaml:\"description\" mapstructure:\"description\"`\n\tSource      string                 `yaml:\"source\" mapstructure:\"source\"`\n\tVersion     string                 `yaml:\"version\" mapstructure:\"version\"`\n}\n\ntype pubspecLockDescription struct {\n\tName        string `yaml:\"name\" mapstructure:\"name\"`\n\tURL         string `yaml:\"url\" mapstructure:\"url\"`\n\tPath        string `yaml:\"path\" mapstructure:\"path\"`\n\tRef         string `yaml:\"ref\" mapstructure:\"ref\"`\n\tResolvedRef string `yaml:\"resolved-ref\" mapstructure:\"resolved-ref\"`\n}\n\nfunc (p *pubspecLockDescription) UnmarshalYAML(value *yaml.Node) error {\n\ttype pld pubspecLockDescription\n\tvar p2 pld\n\n\tif value.Decode(&p.Name) == nil {\n\t\treturn nil\n\t}\n\n\tif err := value.Decode(&p2); err != nil {\n\t\treturn err\n\t}\n\n\t*p = pubspecLockDescription(p2)\n\n\treturn nil\n}\n\nfunc parsePubspecLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\tdec := yaml.NewDecoder(reader)\n\n\tvar p pubspecLock\n\tif err := dec.Decode(&p); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse pubspec.lock file: %w\", err)\n\t}\n\n\tvar names []string\n\tfor name, pkg := range p.Packages {\n\t\tif pkg.Source == \"sdk\" && pkg.Version == \"0.0.0\" {\n\t\t\t// Packages that are delivered as part of an SDK (e.g. Flutter) have their\n\t\t\t// version set to \"0.0.0\" in the package definition. The actual version\n\t\t\t// should refer to the SDK version, which is defined in a dedicated section\n\t\t\t// in the pubspec.lock file and uses a version range constraint.\n\t\t\t//\n\t\t\t// If such a package is detected, look up the version range constraint of\n\t\t\t// its matching SDK, and set the minimum supported version as its new version.\n\t\t\tsdkName := pkg.Description.Name\n\t\t\tsdkVersion, err := p.getSdkVersion(sdkName)\n\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"failed to resolve %s SDK version for package %s: %v\", sdkName, name, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpkg.Version = sdkVersion\n\t\t\tp.Packages[name] = pkg\n\t\t}\n\n\t\tnames = append(names, name)\n\t}\n\n\t// always ensure there is a stable ordering of packages\n\tsort.Strings(names)\n\n\tfor _, name := range names {\n\t\tpubPkg := p.Packages[name]\n\t\tpkgs = append(pkgs,\n\t\t\tnewPubspecLockPackage(\n\t\t\t\tname,\n\t\t\t\tpubPkg,\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\n// Look up the version range constraint for a given sdk name, if found,\n// and return its lowest supported version matching that constraint.\n//\n// The sdks and their constraints are defined in the pubspec.lock file, e.g.\n//\n//\tsdks:\n//\t\tdart: \">=2.12.0 <3.0.0\"\n//\t\tflutter: \">=3.24.5\"\n//\n// and stored in the pubspecLock.Sdks map during parsing.\n//\n// Example based on the data above:\n//\n//\tgetSdkVersion(\"dart\") -> \"2.12.0\"\n//\tgetSdkVersion(\"flutter\") -> \"3.24.5\"\n//\tgetSdkVersion(\"undefined\") -> error\nfunc (psl *pubspecLock) getSdkVersion(sdk string) (string, error) {\n\tconstraint, found := psl.Sdks[sdk]\n\n\tif !found {\n\t\treturn \"\", fmt.Errorf(\"cannot find %s SDK\", sdk)\n\t}\n\n\treturn parseMinimumSdkVersion(constraint)\n}\n\n// semverRegex is a regex pattern that allows for both two-part (major.minor) and three-part (major.minor.patch) versions.\n// additionally allows for:\n//  1. start with either \"^\" or \">=\" (Dart SDK constraints only use those two)\n//  2. followed by a valid semantic version (which may be two or three components)\n//  3. followed by a space (if there's a range) or end of string\nvar semverRegex = regexp.MustCompile(`^(\\^|>=)(?P<version>(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:\\.(?:0|[1-9]\\d*))?(?:-[0-9A-Za-z\\-\\.]+)?(?:\\+[0-9A-Za-z\\-\\.]+)?)( |$)`)\n\n// Parse a given version range constraint and return its lowest supported version.\n//\n// This is intended for packages that are part of an SDK (e.g. Flutter) and don't\n// have an explicit version string set. This will take the given constraint\n// parameter, ensure it's a valid constraint string, and return the lowest version\n// within that constraint range.\n//\n// Examples:\n//\n//\tparseMinimumSdkVersion(\"^1.2.3\") -> \"1.2.3\"\n//\tparseMinimumSdkVersion(\">=1.2.3\") -> \"1.2.3\"\n//\tparseMinimumSdkVersion(\">=1.2.3 <2.0.0\") -> \"1.2.3\"\n//\tparseMinimumSdkVersion(\"1.2.3\") -> error\n//\n// see https://dart.dev/tools/pub/dependencies#version-constraints for the\n// constraint format used in Dart SDK defintions.\nfunc parseMinimumSdkVersion(constraint string) (string, error) {\n\tif !semverRegex.MatchString(constraint) {\n\t\treturn \"\", fmt.Errorf(\"unsupported or invalid constraint '%s'\", constraint)\n\t}\n\n\t// Read \"version\" subexpression into version variable\n\tvar version []byte\n\tmatchIndex := semverRegex.FindStringSubmatchIndex(constraint)\n\tversion = semverRegex.ExpandString(version, \"$version\", constraint, matchIndex)\n\n\treturn string(version), nil\n}\n\nfunc (p *pubspecLockPackage) getVcsURL() string {\n\tif p.Source == \"git\" {\n\t\tif p.Description.Path == \".\" {\n\t\t\treturn fmt.Sprintf(\"%s@%s\", p.Description.URL, p.Description.ResolvedRef)\n\t\t}\n\n\t\treturn fmt.Sprintf(\"%s@%s#%s\", p.Description.URL, p.Description.ResolvedRef, p.Description.Path)\n\t}\n\n\treturn \"\"\n}\n\nfunc (p *pubspecLockPackage) getHostedURL() string {\n\tif p.Source == \"hosted\" && p.Description.URL != defaultPubRegistry {\n\t\tu, err := url.Parse(p.Description.URL)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"Unable to parse registry url %w\", err)\n\t\t\treturn p.Description.URL\n\t\t}\n\t\treturn u.Host\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/parse_pubspec_lock_test.go",
    "content": "package dart\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePubspecLock(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPackages      []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"standard pubspec.lock\",\n\t\t\tfixture: \"testdata/pubspec_locks/pubspec.lock\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"ale\",\n\t\t\t\t\tVersion:   \"3.3.0\",\n\t\t\t\t\tPURL:      \"pkg:pub/ale@3.3.0?hosted_url=pub.hosted.org\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:      \"ale\",\n\t\t\t\t\t\tVersion:   \"3.3.0\",\n\t\t\t\t\t\tHostedURL: \"pub.hosted.org\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"analyzer\",\n\t\t\t\t\tVersion:   \"0.40.7\",\n\t\t\t\t\tPURL:      \"pkg:pub/analyzer@0.40.7\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"analyzer\",\n\t\t\t\t\t\tVersion: \"0.40.7\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"ansicolor\",\n\t\t\t\t\tVersion:   \"1.1.1\",\n\t\t\t\t\tPURL:      \"pkg:pub/ansicolor@1.1.1\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"ansicolor\",\n\t\t\t\t\t\tVersion: \"1.1.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"archive\",\n\t\t\t\t\tVersion:   \"2.0.13\",\n\t\t\t\t\tPURL:      \"pkg:pub/archive@2.0.13\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"archive\",\n\t\t\t\t\t\tVersion: \"2.0.13\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"args\",\n\t\t\t\t\tVersion:   \"1.6.0\",\n\t\t\t\t\tPURL:      \"pkg:pub/args@1.6.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"args\",\n\t\t\t\t\t\tVersion: \"1.6.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"flutter\",\n\t\t\t\t\tVersion:   \"3.24.5\",\n\t\t\t\t\tPURL:      \"pkg:pub/flutter@3.24.5\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"flutter\",\n\t\t\t\t\t\tVersion: \"3.24.5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"key_binder\",\n\t\t\t\t\tVersion:   \"1.11.20\",\n\t\t\t\t\tPURL:      \"pkg:pub/key_binder@1.11.20?vcs_url=git%40github.com%3AWorkiva%2Fkey_binder.git%403f7b3a6350e73c7dcac45301c0e18fbd42af02f7\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspec_locks/pubspec.lock\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\t\t\tName:    \"key_binder\",\n\t\t\t\t\t\tVersion: \"1.11.20\",\n\t\t\t\t\t\tVcsURL:  \"git@github.com:Workiva/key_binder.git@3f7b3a6350e73c7dcac45301c0e18fbd42af02f7\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parsePubspecLock, test.expectedPackages, test.expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_corruptPubspecLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/pubspec.lock\").\n\t\tWithError().\n\t\tTestParser(t, parsePubspecLock)\n}\n\nfunc Test_missingSdkEntryPubspecLock(t *testing.T) {\n\tfixture := \"testdata/missing-sdk/pubspec.lock\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\t// SDK version is missing, so flutter version cannot be determined and\n\t// is ignored, expecting args as only package in the list as a result.\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"args\",\n\t\t\tVersion:   \"1.6.0\",\n\t\t\tPURL:      \"pkg:pub/args@1.6.0\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.Dart,\n\t\t\tType:      pkg.DartPubPkg,\n\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\tName:    \"args\",\n\t\t\t\tVersion: \"1.6.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePubspecLock, expected, expectedRelationships)\n}\n\nfunc Test_invalidSdkEntryPubspecLock(t *testing.T) {\n\tfixture := \"testdata/invalid-sdk/pubspec.lock\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\t// SDK version is invalid, so flutter version cannot be determined and\n\t// is ignored, expecting args as only package in the list as a result.\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"args\",\n\t\t\tVersion:   \"1.6.0\",\n\t\t\tPURL:      \"pkg:pub/args@1.6.0\",\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tLanguage:  pkg.Dart,\n\t\t\tType:      pkg.DartPubPkg,\n\t\t\tMetadata: pkg.DartPubspecLockEntry{\n\t\t\t\tName:    \"args\",\n\t\t\t\tVersion: \"1.6.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePubspecLock, expected, expectedRelationships)\n}\n\nfunc Test_sdkVersionLookup(t *testing.T) {\n\tpsl := &pubspecLock{\n\t\tSdks: make(map[string]string, 5),\n\t}\n\n\tpsl.Sdks[\"minVersionSdk\"] = \">=0.1.2\"\n\tpsl.Sdks[\"rangeVersionSdk\"] = \">=1.2.3 <2.0.0\"\n\tpsl.Sdks[\"caretVersionSdk\"] = \"^2.3.4\"\n\tpsl.Sdks[\"emptyVersionSdk\"] = \"\"\n\tpsl.Sdks[\"invalidVersionSdk\"] = \"not a constraint\"\n\n\tvar version string\n\tvar err error\n\n\tversion, err = psl.getSdkVersion(\"minVersionSdk\")\n\tassert.NoError(t, err)\n\tassert.Equal(t, \"0.1.2\", version)\n\n\tversion, err = psl.getSdkVersion(\"rangeVersionSdk\")\n\tassert.NoError(t, err)\n\tassert.Equal(t, \"1.2.3\", version)\n\n\tversion, err = psl.getSdkVersion(\"caretVersionSdk\")\n\tassert.NoError(t, err)\n\tassert.Equal(t, \"2.3.4\", version)\n\n\tversion, err = psl.getSdkVersion(\"emptyVersionSdk\")\n\tassert.Error(t, err)\n\tassert.Equal(t, \"\", version)\n\n\tversion, err = psl.getSdkVersion(\"invalidVersionSdk\")\n\tassert.Error(t, err)\n\tassert.Equal(t, \"\", version)\n\n\tversion, err = psl.getSdkVersion(\"nonexistantSdk\")\n\tassert.Error(t, err)\n\tassert.Equal(t, \"\", version)\n}\n\nfunc Test_sdkVersionParser_valid(t *testing.T) {\n\tvar version string\n\tvar err error\n\n\t// map constraints to expected version\n\tpatterns := map[string]string{\n\t\t\"^0.0.0\":                \"0.0.0\",\n\t\t\">=0.0.0\":               \"0.0.0\",\n\t\t\"^1.23.4\":               \"1.23.4\",\n\t\t\">=1.23.4\":              \"1.23.4\",\n\t\t\"^11.22.33\":             \"11.22.33\",\n\t\t\">=11.22.33\":            \"11.22.33\",\n\t\t\"^123.123456.12345678\":  \"123.123456.12345678\",\n\t\t\">=123.123456.12345678\": \"123.123456.12345678\",\n\t\t\">=1.2.3 <2.3.4\":        \"1.2.3\",\n\t\t\">=1.2.3 random string\": \"1.2.3\",\n\t\t\">=1.2.3 >=0.1.2\":       \"1.2.3\",\n\t\t\"^1.2\":                  \"1.2\",\n\t\t\">=1.2\":                 \"1.2\",\n\t\t\"^1.2.3-rc4\":            \"1.2.3-rc4\",\n\t\t\">=1.2.3-rc4\":           \"1.2.3-rc4\",\n\t\t\"^2.34.5+hotfix6\":       \"2.34.5+hotfix6\",\n\t\t\">=2.34.5+hotfix6\":      \"2.34.5+hotfix6\",\n\t}\n\n\tfor constraint, expected := range patterns {\n\t\tt.Run(constraint, func(t *testing.T) {\n\t\t\tversion, err = parseMinimumSdkVersion(constraint)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, expected, version)\n\t\t})\n\t}\n}\n\nfunc Test_sdkVersionParser_invalid(t *testing.T) {\n\tvar version string\n\tvar err error\n\n\tpatterns := []string{\n\t\t\"\",\n\t\t\"abc\",\n\t\t\"^abc\",\n\t\t\">=abc\",\n\t\t\"^a.b.c\",\n\t\t\">=a.b.c\",\n\t\t\"1.2.34\",\n\t\t\">1.2.34\",\n\t\t\"<=1.2.34\",\n\t\t\"<1.2.34\",\n\t\t\"^1.2.3.4\",\n\t\t\">=1.2.3.4\",\n\t\t\"^1.x.0\",\n\t\t\">=1.x.0\",\n\t\t\"^1x2x3\",\n\t\t\">=1x2x3\",\n\t\t\"^1.-2.3\",\n\t\t\">=1.-2.3\",\n\t\t\"abc <1.2.34\",\n\t\t\"^2.3.45hotfix6\",\n\t\t\">=2.3.45hotfix6\",\n\t}\n\n\tfor _, pattern := range patterns {\n\t\tversion, err = parseMinimumSdkVersion(pattern)\n\t\tassert.Error(t, err)\n\t\tassert.Equalf(t, \"\", version, \"constraint '%s'\", pattern)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/parse_pubspec_test.go",
    "content": "package dart\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePubspec(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPackages      []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"_macros\",\n\t\t\tfixture: \"testdata/pubspecs/macros.pubspec.yaml\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"_macros\",\n\t\t\t\t\tVersion:   \"0.3.2\",\n\t\t\t\t\tPURL:      \"pkg:pub/_macros@0.3.2\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspecs/macros.pubspec.yaml\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspec{\n\t\t\t\t\t\tRepository: \"https://github.com/dart-lang/sdk/tree/main/pkg/_macros\",\n\t\t\t\t\t\tPublishTo:  \"none\",\n\t\t\t\t\t\tEnvironment: &pkg.DartPubspecEnvironment{\n\t\t\t\t\t\t\tSDK: \"^3.4.0-256.0.dev\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"_macros\",\n\t\t\tfixture: \"testdata/pubspecs/appainter.pubspec.yaml\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"appainter\",\n\t\t\t\t\tVersion:   \"2.4.8\",\n\t\t\t\t\tPURL:      \"pkg:pub/appainter@2.4.8\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/pubspecs/appainter.pubspec.yaml\")),\n\t\t\t\t\tLanguage:  pkg.Dart,\n\t\t\t\t\tType:      pkg.DartPubPkg,\n\t\t\t\t\tMetadata: pkg.DartPubspec{\n\t\t\t\t\t\tPublishTo: \"none\",\n\t\t\t\t\t\tEnvironment: &pkg.DartPubspecEnvironment{\n\t\t\t\t\t\t\tSDK:     \">=3.0.0 <4.0.0\",\n\t\t\t\t\t\t\tFlutter: \"3.29.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parsePubspec, test.expectedPackages, test.expectedRelationships)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/testdata/glob-paths/spec/pubspec.yaml",
    "content": "bogus pubspec.yml"
  },
  {
    "path": "syft/pkg/cataloger/dart/testdata/glob-paths/spec/pubspec.yml",
    "content": "bogus pubspec.yml"
  },
  {
    "path": "syft/pkg/cataloger/dart/testdata/pubspecs/appainter.pubspec.yaml",
    "content": "name: appainter\ndescription: A material theme editor and generator for Flutter to configure and\n  preview the overall visual theme of your material app\npublish_to: \"none\"\nversion: 2.4.8\n\nenvironment:\n  sdk: \">=3.0.0 <4.0.0\"\n  flutter: 3.29.3\n\ndependencies:\n  appainter_annotations:\n    path: packages/annotations\n  bloc: 9.0.0\n  collection: ^1.17.2\n  copy_with_extension: 6.0.1\n  cupertino_icons: 1.0.8\n  device_preview_plus: 2.3.5\n  dio: 5.8.0+1\n  dropdown_search: 6.0.2\n  enum_to_string: 2.2.1\n  equatable: 2.0.7\n  expandable: 5.0.1\n  file_picker: 10.1.2\n  firebase_analytics: 11.4.5\n  firebase_auth: 5.5.3\n  firebase_core: 3.13.0\n  flex_color_picker: 3.7.1\n  flutter:\n    sdk: flutter\n  flutter_bloc: 9.1.1\n  flutter_markdown: 0.7.7\n  google_fonts: 6.2.1\n  intl: 0.19.0\n  json_theme: 8.0.0\n  material_color_utilities: ^0.11.1\n  material_design_icons_flutter: 7.0.7296\n  ndialog: 4.4.1+1\n  path_provider: 2.1.5\n  pretty_json: 2.0.0\n  random_color_scheme: 0.1.4\n  sentry_flutter: 8.14.2\n  shared_preferences: 2.5.3\n  universal_html: 2.2.4\n  universal_io: 2.2.2\n  url_launcher: 6.3.1\n  window_manager: 0.4.3\n\n# have comments!\ndev_dependencies:\n  appainter_builder:\n    path: packages/builder\n  bloc_test: 10.0.0\n  build_runner: 2.4.15\n  copy_with_extension_gen: 6.0.1\n  flutter_lints: 5.0.0\n  flutter_test:\n    sdk: flutter\n  integration_test:\n    sdk: flutter\n  mocktail: 1.0.4\n  path_provider_platform_interface: 2.1.2\n  remove_from_coverage: 2.0.0\n  sentry_dart_plugin: 2.4.1\n\nflutter:\n  uses-material-design: true\n  assets:\n    - assets/icon.png\n\nsentry:\n  upload_native_symbols: true\n  upload_source_maps: true\n  include_native_sources: true\n  commits: false\n"
  },
  {
    "path": "syft/pkg/cataloger/dart/testdata/pubspecs/macros.pubspec.yaml",
    "content": "name: _macros\nversion: 0.3.2\ndescription: >-\n  This is a private SDK vendored package, which is re-exported by the public\n  `macros` package, which is a pub package. Every change to this package is\n  treated as a release, see CONTRIBUTING.md for full instructions.\npublish_to: none\nrepository: https://github.com/dart-lang/sdk/tree/main/pkg/_macros\n\nenvironment:\n  sdk: ^3.4.0-256.0.dev\n\n# Note that as an SDK vendored package, pub package dependencies are only\n# allowed in the dev_dependencies section.\ndev_dependencies:\n  test: any\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: dpkg # MANUAL\n    name: dpkg-db-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/debian/cataloger.go\n      function: NewDBCataloger\n    selectors: # AUTO-GENERATED\n      - debian\n      - directory\n      - dpkg\n      - image\n      - installed\n      - linux\n      - os\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseDpkgDB\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/lib/dpkg/status'\n            - '**/lib/dpkg/status.d/*'\n            - '**/lib/opkg/info/*.control'\n            - '**/lib/opkg/status'\n        metadata_types: # AUTO-GENERATED\n          - pkg.DpkgDBEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - DpkgDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - DpkgDBEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - DpkgDBEntry.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: dpkg # MANUAL\n    name: deb-archive-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/debian/cataloger.go\n      function: NewArchiveCataloger\n    selectors: # AUTO-GENERATED\n      - deb\n      - debian\n      - declared\n      - directory\n      - linux\n      - os\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseDebArchive\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.deb'\n        metadata_types: # AUTO-GENERATED\n          - pkg.DpkgArchiveEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - DpkgArchiveEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - DpkgArchiveEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - DpkgArchiveEntry.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/cataloger.go",
    "content": "/*\nPackage debian provides a concrete Cataloger implementation relating to packages within the Debian linux distribution.\n*/\npackage debian\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// NewDBCataloger returns a new Deb package cataloger capable of parsing DPKG status DB flat-file stores.\nfunc NewDBCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"dpkg-db-cataloger\").\n\t\t// note: these globs have been intentionally split up in order to improve search performance,\n\t\t// please do NOT combine into: \"**/var/lib/dpkg/{status,status.d/*}\"\n\t\tWithParserByGlobs(parseDpkgDB, \"**/lib/dpkg/status\", \"**/lib/dpkg/status.d/*\", \"**/lib/opkg/info/*.control\", \"**/lib/opkg/status\").\n\t\tWithProcessors(dependency.Processor(dbEntryDependencySpecifier))\n}\n\n// NewArchiveCataloger returns a new Debian package cataloger object capable of parsing .deb archive files\nfunc NewArchiveCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"deb-archive-cataloger\").\n\t\tWithParserByGlobs(parseDebArchive, \"**/*.deb\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/cataloger_test.go",
    "content": "package debian\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestDpkgCataloger(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname     string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"image-dpkg\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"libpam-runtime\",\n\t\t\t\t\tVersion: \"1.1.8-3.6\",\n\t\t\t\t\tFoundBy: \"dpkg-db-cataloger\",\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-1\", file.NewLocation(\"/usr/share/doc/libpam-runtime/copyright\")),\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-2\", file.NewLocation(\"/usr/share/doc/libpam-runtime/copyright\")),\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"LGPL-2.1\", file.NewLocation(\"/usr/share/doc/libpam-runtime/copyright\")),\n\t\t\t\t\t),\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/status\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/info/libpam-runtime.preinst\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/info/libpam-runtime.md5sums\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/info/libpam-runtime.conffiles\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/usr/share/doc/libpam-runtime/copyright\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tPURL: \"pkg:deb/debian/libpam-runtime@1.1.8-3.6?arch=all&distro=debian-12&upstream=pam\",\n\t\t\t\t\tType: pkg.DebPkg,\n\t\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\t\tPackage:       \"libpam-runtime\",\n\t\t\t\t\t\tSource:        \"pam\",\n\t\t\t\t\t\tVersion:       \"1.1.8-3.6\",\n\t\t\t\t\t\tArchitecture:  \"all\",\n\t\t\t\t\t\tMaintainer:    \"Steve Langasek <vorlon@debian.org>\",\n\t\t\t\t\t\tInstalledSize: 1016,\n\t\t\t\t\t\tDescription: `Runtime support for the PAM library\n Contains configuration files and  directories required for\n authentication  to work on Debian systems.  This package is required\n on almost all installations.`,\n\t\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\t\"debconf (>= 0.5) | debconf-2.0\",\n\t\t\t\t\t\t\t\"debconf (>= 1.5.19) | cdebconf\",\n\t\t\t\t\t\t\t\"libpam-modules (>= 1.0.1-6)\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/pam.conf\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"87fc76f18e98ee7d3848f6b81b3391e5\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/pam.d/other\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"31aa7f2181889ffb00b87df4126d1701\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{Path: \"/lib/x86_64-linux-gnu/libz.so.1.2.11\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"55f905631797551d4d936a34c7e73474\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/zlib1g/changelog.Debian.gz\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"cede84bda30d2380217f97753c8ccf3a\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/zlib1g/changelog.gz\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"f3c9dafa6da7992c47328b4464f6d122\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/zlib1g/copyright\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"a4fae96070439a5209a62ae5b8017ab2\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"image-distroless-deb\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"libsqlite3-0\",\n\t\t\t\t\tVersion: \"3.34.1-3\",\n\t\t\t\t\tFoundBy: \"dpkg-db-cataloger\",\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"public-domain\", file.NewLocation(\"/usr/share/doc/libsqlite3-0/copyright\")),\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-2+\", file.NewLocation(\"/usr/share/doc/libsqlite3-0/copyright\")),\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL-2\", file.NewLocation(\"/usr/share/doc/libsqlite3-0/copyright\")),\n\t\t\t\t\t),\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/status.d/libsqlite3-0\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/status.d/libsqlite3-0.md5sums\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/var/lib/dpkg/status.d/libsqlite3-0.preinst\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"/usr/share/doc/libsqlite3-0/copyright\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.DebPkg,\n\t\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\t\tPackage:       \"libsqlite3-0\",\n\t\t\t\t\t\tSource:        \"sqlite3\",\n\t\t\t\t\t\tVersion:       \"3.34.1-3\",\n\t\t\t\t\t\tArchitecture:  \"arm64\",\n\t\t\t\t\t\tMaintainer:    \"Laszlo Boszormenyi (GCS) <gcs@debian.org>\",\n\t\t\t\t\t\tInstalledSize: 1490,\n\t\t\t\t\t\tDescription: `SQLite 3 shared library\n SQLite is a C library that implements an SQL database engine.\n Programs that link with the SQLite library can have SQL database\n access without running a separate RDBMS process.`,\n\t\t\t\t\t\tDepends: []string{\"libc6 (>= 2.29)\"},\n\t\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t\t{Path: \"/usr/lib/aarch64-linux-gnu/libsqlite3.so.0.8.6\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"e11d70c96979a1328ae4e7e50542782b\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/libsqlite3-0/README.Debian\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"9d8facc2fa9d2df52f1c7cb4e5fa4741\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/libsqlite3-0/changelog.Debian.gz\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"a58942e742f5056be0595e6ba69a323f\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/libsqlite3-0/changelog.gz\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"52317be84c3ca44b7888c6921131e37d\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/libsqlite3-0/changelog.html.gz\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"a856310354e6c8768e85b39ae838dd0a\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t\t{Path: \"/usr/share/doc/libsqlite3-0/copyright\", Digest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"be64db3e095486e5e105652c51199358\",\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tc := NewDBCataloger()\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.name).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpects(tt.expected, nil).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n\nfunc Test_CatalogerRelationships(t *testing.T) {\n\ttests := []struct {\n\t\tname              string\n\t\tfixture           string\n\t\twantRelationships map[string][]string\n\t}{\n\t\t{\n\t\t\tname:    \"relationships for coreutils\",\n\t\t\tfixture: \"testdata/var/lib/dpkg/status.d/coreutils-relationships\",\n\t\t\twantRelationships: map[string][]string{\n\t\t\t\t\"coreutils\":    {\"libacl1\", \"libattr1\", \"libc6\", \"libgmp10\", \"libselinux1\"},\n\t\t\t\t\"libacl1\":      {\"libc6\"},\n\t\t\t\t\"libattr1\":     {\"libc6\"},\n\t\t\t\t\"libc6\":        {\"libgcc-s1\"},\n\t\t\t\t\"libgcc-s1\":    {\"gcc-12-base\", \"libc6\"},\n\t\t\t\t\"libgmp10\":     {\"libc6\"},\n\t\t\t\t\"libpcre2-8-0\": {\"libc6\"},\n\t\t\t\t\"libselinux1\":  {\"libc6\", \"libpcre2-8-0\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"relationships from dpkg example docs\",\n\t\t\tfixture: \"testdata/var/lib/dpkg/status.d/doc-examples\",\n\t\t\twantRelationships: map[string][]string{\n\t\t\t\t\"made-up-package-1\": {\"gnumach-dev\", \"hurd-dev\", \"kernel-headers-2.2.10\"},\n\t\t\t\t\"made-up-package-2\": {\"liblua5.1-dev\", \"libluajit5.1-dev\"},\n\t\t\t\t\"made-up-package-3\": {\"bar\", \"foo\"},\n\t\t\t\t// note that the \"made-up-package-4\" depends on \"made-up-package-5\" but not via the direct\n\t\t\t\t// package name, but through the \"provides\" virtual package name \"virtual-package-5\".\n\t\t\t\t\"made-up-package-4\": {\"made-up-package-5\"},\n\t\t\t\t// note that though there is a \"default-mta | mail-transport-agent | not-installed\"\n\t\t\t\t// dependency choice we raise up the packages that are installed for every choice.\n\t\t\t\t// In this case that means that \"default-mta\" and \"mail-transport-agent\".\n\t\t\t\t\"mutt\": {\"default-mta\", \"libc6\", \"mail-transport-agent\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"relationships for libpam-runtime\",\n\t\t\tfixture: \"testdata/var/lib/dpkg/status.d/libpam-runtime\",\n\t\t\twantRelationships: map[string][]string{\n\t\t\t\t\"libpam-runtime\": {\"cdebconf\", \"debconf-2.0\", \"debconf1\", \"debconf2\", \"libpam-modules\"},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgs, relationships, err := NewDBCataloger().Catalog(context.Background(), file.NewMockResolverForPaths(tt.fixture))\n\t\t\trequire.NotEmpty(t, pkgs)\n\t\t\trequire.NotEmpty(t, relationships)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif d := cmp.Diff(tt.wantRelationships, abstractRelationships(t, relationships)); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected relationships (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDpkgArchiveCataloger(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname     string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"image-single-dpkg\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"zlib1g\",\n\t\t\t\t\tVersion: \"1:1.3.dfsg-3.1ubuntu2.1\",\n\t\t\t\t\tFoundBy: \"deb-archive-cataloger\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"/zlib1g.deb\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Zlib\"),\n\t\t\t\t\t),\n\t\t\t\t\tPURL: \"pkg:deb/zlib1g@1%3A1.3.dfsg-3.1ubuntu2.1?arch=amd64&upstream=zlib\",\n\t\t\t\t\tType: pkg.DebPkg,\n\t\t\t\t\tMetadata: pkg.DpkgArchiveEntry{\n\t\t\t\t\t\tPackage:       \"zlib1g\",\n\t\t\t\t\t\tSource:        \"zlib\",\n\t\t\t\t\t\tVersion:       \"1:1.3.dfsg-3.1ubuntu2.1\",\n\t\t\t\t\t\tArchitecture:  \"amd64\",\n\t\t\t\t\t\tMaintainer:    \"Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>\",\n\t\t\t\t\t\tInstalledSize: 163,\n\t\t\t\t\t\tDescription: `compression library - runtime\n zlib is a library implementing the deflate compression method found\n in gzip and PKZIP.  This package includes the shared library.`,\n\t\t\t\t\t\tProvides: []string{\"libz1\"},\n\t\t\t\t\t\tDepends:  []string{\"libc6 (>= 2.14)\"},\n\t\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath:   \"/usr/lib/x86_64-linux-gnu/libz.so.1.3\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{Algorithm: \"md5\", Value: \"4447b36fc5cd1b044f089553b4166f09\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath:   \"/usr/share/doc/zlib1g/changelog.Debian.gz\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{Algorithm: \"md5\", Value: \"8b870c2e94c0cf780e2a65329cf11fdc\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath:   \"/usr/share/doc/zlib1g/copyright\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{Algorithm: \"md5\", Value: \"d348307d5bf18267bcbada155a715a3e\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tc := NewArchiveCataloger()\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.name).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpects(tt.expected, nil).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain db status files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"usr/lib/dpkg/status\",\n\t\t\t\t\"var/lib/dpkg/status\",\n\t\t\t\t\"usr/lib/dpkg/status.d/pkg-1.0\",\n\t\t\t\t\"var/lib/dpkg/status.d/pkg-1.0\",\n\t\t\t\t\"usr/lib/opkg/info/pkg-1.0.control\",\n\t\t\t\t\"usr/lib/opkg/status\",\n\t\t\t\t\"usr/lib/dpkg/info/libpam-runtime.conffiles\",\n\t\t\t\t\"usr/lib/dpkg/info/libpam-runtime.md5sums\",\n\t\t\t\t\"usr/share/doc/libpam-runtime/copyright\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewDBCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/dependency.go",
    "content": "package debian\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar _ dependency.Specifier = dbEntryDependencySpecifier\n\nfunc dbEntryDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.DpkgDBEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract dpkg metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\tprovides := []string{p.Name}\n\tfor _, key := range meta.Provides {\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tprovides = append(provides, stripVersionSpecifier(key))\n\t}\n\n\tvar allDeps []string\n\tallDeps = append(allDeps, meta.Depends...)\n\tallDeps = append(allDeps, meta.PreDepends...)\n\n\tvar requires []string\n\tfor _, depSpecifier := range allDeps {\n\t\tif depSpecifier == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\trequires = append(requires, splitPackageChoice(depSpecifier)...)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\nfunc stripVersionSpecifier(s string) string {\n\t// examples:\n\t// libgmp10 (>= 2:6.2.1+dfsg1)         -->  libgmp10\n\t// libgmp10                            -->  libgmp10\n\t// foo [i386]                          -->  foo\n\t// default-mta | mail-transport-agent  -->  default-mta | mail-transport-agent\n\t// kernel-headers-2.2.10 [!hurd-i386]  -->  kernel-headers-2.2.10\n\n\treturn strings.TrimSpace(internal.SplitAny(s, \"[(<>=\")[0])\n}\n\nfunc splitPackageChoice(s string) (ret []string) {\n\tfields := strings.Split(s, \"|\")\n\tfor _, field := range fields {\n\t\tfield = strings.TrimSpace(field)\n\t\tif field != \"\" {\n\t\t\tret = append(ret, stripVersionSpecifier(field))\n\t\t}\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/dependency_test.go",
    "content": "package debian\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc Test_dbEntryDependencySpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"keeps given values + package name\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-c\",\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tProvides: []string{\"a-thing\"},\n\t\t\t\t\tDepends:  []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-c\", \"a-thing\"},\n\t\t\t\t\tRequires: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"strip version specifiers + split package deps\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tProvides: []string{\"foo [i386]\"},\n\t\t\t\t\tDepends:  []string{\"libgmp10 (>= 2:6.2.1+dfsg1)\", \"default-mta | mail-transport-agent\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\", \"foo\"},\n\t\t\t\t\tRequires: []string{\"libgmp10\", \"default-mta\", \"mail-transport-agent\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty dependency data entries\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\tProvides: []string{\"\"},\n\t\t\t\t\tDepends:  []string{\"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\"},\n\t\t\t\t\tRequires: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, dbEntryDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_stripVersionSpecifier(t *testing.T) {\n\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname:  \"package name only\",\n\t\t\tinput: \"test\",\n\t\t\twant:  \"test\",\n\t\t},\n\t\t{\n\t\t\tname:  \"with version\",\n\t\t\tinput: \"test (1.2.3)\",\n\t\t\twant:  \"test\",\n\t\t},\n\t\t{\n\t\t\tname:  \"multiple packages\",\n\t\t\tinput: \"test | other\",\n\t\t\twant:  \"test | other\",\n\t\t},\n\t\t{\n\t\t\tname:  \"with architecture specifiers\",\n\t\t\tinput: \"test [amd64 i386]\",\n\t\t\twant:  \"test\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, stripVersionSpecifier(tt.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/package.go",
    "content": "package debian\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst (\n\tmd5sumsExt   = \".md5sums\"\n\tconffilesExt = \".conffiles\"\n\tdocsPath     = \"/usr/share/doc\"\n)\n\nfunc newDpkgPackage(ctx context.Context, d pkg.DpkgDBEntry, dbLocation file.Location, resolver file.Resolver, release *linux.Release, evidence ...file.Location) pkg.Package {\n\t// TODO: separate pr to license refactor, but explore extracting dpkg-specific license parsing into a separate function\n\tvar licenses []pkg.License\n\n\tlocations := file.NewLocationSet(dbLocation)\n\tlocations.Add(evidence...)\n\n\tp := pkg.Package{\n\t\tName:      d.Package,\n\t\tVersion:   d.Version,\n\t\tLicenses:  pkg.NewLicenseSet(licenses...),\n\t\tLocations: locations,\n\t\tPURL:      packageURL(d, release),\n\t\tType:      pkg.DebPkg,\n\t\tMetadata:  d,\n\t}\n\n\tif resolver != nil {\n\t\t// the current entry only has what may have been listed in the status file, however, there are additional\n\t\t// files that are listed in multiple other locations. We should retrieve them all and merge the file lists\n\t\t// together.\n\t\tmergeFileListing(resolver, dbLocation, &p)\n\n\t\t// fetch additional data from the copyright file to derive the license information\n\t\taddLicenses(ctx, resolver, dbLocation, &p)\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newDebArchivePackage(ctx context.Context, location file.Location, metadata pkg.DpkgArchiveEntry, licenseStrings []string) pkg.Package {\n\tp := pkg.Package{\n\t\tName:     metadata.Package,\n\t\tVersion:  metadata.Version,\n\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, licenseStrings...)...),\n\t\tType:     pkg.DebPkg,\n\t\tPURL: packageURL(\n\t\t\tpkg.DpkgDBEntry(metadata),\n\t\t\t// we don't know the distro information, but since this is a deb file then we can reasonably assume it is a debian-based distro\n\t\t\t&linux.Release{IDLike: []string{\"debian\"}},\n\t\t),\n\t\tMetadata:  metadata,\n\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\n// PackageURL returns the PURL for the specific Debian package (see https://github.com/package-url/purl-spec)\nfunc packageURL(m pkg.DpkgDBEntry, distro *linux.Release) string {\n\tif distro == nil {\n\t\treturn \"\"\n\t}\n\n\tif distro.ID != \"debian\" && !internal.StringInSlice(\"debian\", distro.IDLike) {\n\t\treturn \"\"\n\t}\n\n\tqualifiers := map[string]string{\n\t\tpkg.PURLQualifierArch: m.Architecture,\n\t}\n\n\tif m.Source != \"\" {\n\t\tif m.SourceVersion != \"\" {\n\t\t\tqualifiers[pkg.PURLQualifierUpstream] = fmt.Sprintf(\"%s@%s\", m.Source, m.SourceVersion)\n\t\t} else {\n\t\t\tqualifiers[pkg.PURLQualifierUpstream] = m.Source\n\t\t}\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeDebian,\n\t\tdistro.ID,\n\t\tm.Package,\n\t\tm.Version,\n\t\tpkg.PURLQualifiers(\n\t\t\tqualifiers,\n\t\t\tdistro,\n\t\t),\n\t\t\"\",\n\t).ToString()\n}\n\nfunc addLicenses(ctx context.Context, resolver file.Resolver, dbLocation file.Location, p *pkg.Package) {\n\tmetadata, ok := p.Metadata.(pkg.DpkgDBEntry)\n\tif !ok {\n\t\tlog.WithFields(\"package\", p).Trace(\"unable to extract DPKG metadata to add licenses\")\n\t\treturn\n\t}\n\n\t// get license information from the copyright file\n\tcopyrightReader, copyrightLocation := fetchCopyrightContents(resolver, dbLocation, metadata)\n\tvar licenseStrs []string\n\tif copyrightReader != nil && copyrightLocation != nil {\n\t\tdefer internal.CloseAndLogError(copyrightReader, copyrightLocation.AccessPath)\n\t\t// attach the licenses\n\t\tlicenseStrs = parseLicensesFromCopyright(copyrightReader)\n\t\tfor _, licenseStr := range licenseStrs {\n\t\t\tp.Licenses.Add(pkg.NewLicenseFromLocationsWithContext(ctx, licenseStr, copyrightLocation.WithoutAnnotations()))\n\t\t}\n\t\t// keep a record of the file where this was discovered\n\t\tp.Locations.Add(*copyrightLocation)\n\t}\n\t// try to use the license classifier if parsing the copyright file failed\n\tif len(licenseStrs) == 0 {\n\t\tsr, sl := fetchCopyrightContents(resolver, dbLocation, metadata)\n\t\tif sr != nil && sl != nil {\n\t\t\tdefer internal.CloseAndLogError(sr, sl.AccessPath)\n\t\t\tp.Licenses.Add(pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(*sl, sr))...)\n\t\t}\n\t}\n}\n\nfunc mergeFileListing(resolver file.Resolver, dbLocation file.Location, p *pkg.Package) {\n\tmetadata, ok := p.Metadata.(pkg.DpkgDBEntry)\n\tif !ok {\n\t\tlog.WithFields(\"package\", p).Trace(\"unable to extract DPKG metadata to file listing\")\n\t\treturn\n\t}\n\n\t// get file listing (package files + additional config files)\n\tfiles, infoLocations := getAdditionalFileListing(resolver, dbLocation, metadata)\nloopNewFiles:\n\tfor _, newFile := range files {\n\t\tfor _, existingFile := range metadata.Files {\n\t\t\tif existingFile.Path == newFile.Path {\n\t\t\t\t// skip adding this file since it already exists\n\t\t\t\tcontinue loopNewFiles\n\t\t\t}\n\t\t}\n\t\tmetadata.Files = append(metadata.Files, newFile)\n\t}\n\n\t// sort files by path\n\tsort.SliceStable(metadata.Files, func(i, j int) bool {\n\t\treturn metadata.Files[i].Path < metadata.Files[j].Path\n\t})\n\n\t// persist alterations\n\tp.Metadata = metadata\n\n\t// persist location information from each new source of information\n\tp.Locations.Add(infoLocations...)\n}\n\nfunc getAdditionalFileListing(resolver file.Resolver, dbLocation file.Location, m pkg.DpkgDBEntry) ([]pkg.DpkgFileRecord, []file.Location) {\n\t// ensure the default value for a collection is never nil since this may be shown as JSON\n\tvar files = make([]pkg.DpkgFileRecord, 0)\n\tvar locations []file.Location\n\n\tmd5Reader, md5Location := fetchMd5Contents(resolver, dbLocation, m)\n\n\tif md5Reader != nil && md5Location != nil {\n\t\tdefer internal.CloseAndLogError(md5Reader, md5Location.AccessPath)\n\t\t// attach the file list\n\t\tfiles = append(files, parseDpkgMD5Info(md5Reader)...)\n\n\t\t// keep a record of the file where this was discovered\n\t\tlocations = append(locations, *md5Location)\n\t}\n\n\tconffilesReader, conffilesLocation := fetchConffileContents(resolver, dbLocation, m)\n\n\tif conffilesReader != nil && conffilesLocation != nil {\n\t\tdefer internal.CloseAndLogError(conffilesReader, conffilesLocation.AccessPath)\n\t\t// attach the file list\n\t\tfiles = append(files, parseDpkgConffileInfo(conffilesReader)...)\n\n\t\t// keep a record of the file where this was discovered\n\t\tlocations = append(locations, *conffilesLocation)\n\t}\n\n\treturn files, locations\n}\n\nfunc fetchMd5Contents(resolver file.Resolver, dbLocation file.Location, m pkg.DpkgDBEntry) (io.ReadCloser, *file.Location) {\n\tvar md5Reader io.ReadCloser\n\tvar err error\n\n\tif resolver == nil {\n\t\treturn nil, nil\n\t}\n\n\t// for typical debian-base distributions, the installed package info is at /var/lib/dpkg/status\n\t// and the md5sum information is under /var/lib/dpkg/info/; however, for distroless the installed\n\t// package info is across multiple files under /var/lib/dpkg/status.d/ and the md5sums are contained in\n\t// the same directory\n\tsearchPath := filepath.Dir(dbLocation.RealPath)\n\n\tif !strings.HasSuffix(searchPath, \"status.d\") {\n\t\tsearchPath = path.Join(searchPath, \"info\")\n\t}\n\n\t// look for /var/lib/dpkg/info/NAME:ARCH.md5sums\n\tname := md5Key(m)\n\tlocation := resolver.RelativeFileByPath(dbLocation, path.Join(searchPath, name+md5sumsExt))\n\n\tif location == nil {\n\t\t// the most specific key did not work, fallback to just the name\n\t\t// look for /var/lib/dpkg/info/NAME.md5sums\n\t\tlocation = resolver.RelativeFileByPath(dbLocation, path.Join(searchPath, m.Package+md5sumsExt))\n\t}\n\n\tif location == nil {\n\t\treturn nil, nil\n\t}\n\n\t// this is unexpected, but not a show-stopper\n\tmd5Reader, err = resolver.FileContentsByLocation(*location)\n\tif err != nil {\n\t\tlog.Tracef(\"failed to fetch deb md5 contents (package=%s): %+v\", m.Package, err)\n\t}\n\n\tl := location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation)\n\n\treturn md5Reader, &l\n}\n\nfunc fetchConffileContents(resolver file.Resolver, dbLocation file.Location, m pkg.DpkgDBEntry) (io.ReadCloser, *file.Location) {\n\tvar reader io.ReadCloser\n\tvar err error\n\n\tif resolver == nil {\n\t\treturn nil, nil\n\t}\n\n\tparentPath := filepath.Dir(dbLocation.RealPath)\n\n\t// look for /var/lib/dpkg/info/NAME:ARCH.conffiles\n\tname := md5Key(m)\n\tlocation := resolver.RelativeFileByPath(dbLocation, path.Join(parentPath, \"info\", name+conffilesExt))\n\n\tif location == nil {\n\t\t// the most specific key did not work, fallback to just the name\n\t\t// look for /var/lib/dpkg/info/NAME.conffiles\n\t\tlocation = resolver.RelativeFileByPath(dbLocation, path.Join(parentPath, \"info\", m.Package+conffilesExt))\n\t}\n\n\tif location == nil {\n\t\treturn nil, nil\n\t}\n\n\t// this is unexpected, but not a show-stopper\n\treader, err = resolver.FileContentsByLocation(*location)\n\tif err != nil {\n\t\tlog.Tracef(\"failed to fetch deb conffiles contents (package=%s): %+v\", m.Package, err)\n\t}\n\n\tl := location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation)\n\n\treturn reader, &l\n}\n\nfunc fetchCopyrightContents(resolver file.Resolver, dbLocation file.Location, m pkg.DpkgDBEntry) (io.ReadCloser, *file.Location) {\n\tif resolver == nil {\n\t\treturn nil, nil\n\t}\n\n\t// look for /usr/share/docs/NAME/copyright files\n\tcopyrightPath := path.Join(docsPath, m.Package, \"copyright\")\n\tlocation := resolver.RelativeFileByPath(dbLocation, copyrightPath)\n\n\t// we may not have a copyright file for each package, ignore missing files\n\tif location == nil {\n\t\treturn nil, nil\n\t}\n\n\treader, err := resolver.FileContentsByLocation(*location) //nolint:gocritic // since we're returning the reader, it's up to the caller to close it\n\tif err != nil {\n\t\tlog.Tracef(\"failed to fetch deb copyright contents (package=%s): %s\", m.Package, err)\n\t}\n\n\tl := location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation)\n\n\treturn reader, &l\n}\n\nfunc md5Key(metadata pkg.DpkgDBEntry) string {\n\tcontentKey := metadata.Package\n\tif metadata.Architecture != \"\" && metadata.Architecture != \"all\" {\n\t\tcontentKey = contentKey + \":\" + metadata.Architecture\n\t}\n\treturn contentKey\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/package_test.go",
    "content": "package debian\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdistro   *linux.Release\n\t\tmetadata pkg.DpkgDBEntry\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"debian\",\n\t\t\t\tVersionID: \"11\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"debian\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage: \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t},\n\t\t\texpected: \"pkg:deb/debian/p@v?distro=debian-11\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing ID_LIKE\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"debian\",\n\t\t\t\tVersionID: \"11\",\n\t\t\t},\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage: \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t},\n\t\t\texpected: \"pkg:deb/debian/p@v?distro=debian-11\",\n\t\t},\n\t\t{\n\t\t\tname: \"with arch info\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID: \"ubuntu\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"debian\",\n\t\t\t\t},\n\t\t\t\tVersionID: \"16.04\",\n\t\t\t},\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage:      \"p\",\n\t\t\t\tVersion:      \"v\",\n\t\t\t\tArchitecture: \"a\",\n\t\t\t},\n\t\t\texpected: \"pkg:deb/ubuntu/p@v?arch=a&distro=ubuntu-16.04\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing distro\",\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage: \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"with upstream qualifier with source pkg name info\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"debian\",\n\t\t\t\tVersionID: \"11\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"debian\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage: \"p\",\n\t\t\t\tSource:  \"s\",\n\t\t\t\tVersion: \"v\",\n\t\t\t},\n\t\t\texpected: \"pkg:deb/debian/p@v?distro=debian-11&upstream=s\",\n\t\t},\n\t\t{\n\t\t\tname: \"with upstream qualifier with source pkg name and version info\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"debian\",\n\t\t\t\tVersionID: \"11\",\n\t\t\t\tIDLike: []string{\n\t\t\t\t\t\"debian\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tmetadata: pkg.DpkgDBEntry{\n\t\t\t\tPackage:       \"p\",\n\t\t\t\tSource:        \"s\",\n\t\t\t\tVersion:       \"v\",\n\t\t\t\tSourceVersion: \"2.3\",\n\t\t\t},\n\t\t\texpected: \"pkg:deb/debian/p@v?distro=debian-11&upstream=s%402.3\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURL(test.metadata, test.distro)\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected packageURL (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_copyright.go",
    "content": "package debian\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\n// For more information see: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/#license-syntax\n\nvar (\n\tlicensePattern                 = regexp.MustCompile(`^License: (?P<license>\\S*)`)\n\tcommonLicensePathPattern       = regexp.MustCompile(`/usr/share/common-licenses/(?P<license>[0-9A-Za-z_.\\-]+)`)\n\tlicenseAgreementHeadingPattern = regexp.MustCompile(`(?i)^\\s*(?P<license>LICENSE AGREEMENT(?: FOR .+?)?)\\s*$`)\n)\n\nfunc parseLicensesFromCopyright(reader io.Reader) []string {\n\tfindings := strset.New()\n\tscanner := bufio.NewScanner(reader)\n\n\t// State machine replacing licenseFirstSentenceAfterHeadingPattern.\n\t// That regex only matched at the start of the file: a non-empty heading,\n\t// a line of dashes, blank lines, then text up to the first period.\n\tconst (\n\t\texpectHeading = iota\n\t\texpectDashes\n\t\tskipBlanks\n\t\tcaptureLicense\n\t\theadingDone // matched or impossible — stop checking\n\t)\n\theadingState := expectHeading\n\tvar licenseText strings.Builder\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\t// per-line regex checks (applied to every line)\n\t\tif value := findLicenseClause(licensePattern, line); value != \"\" {\n\t\t\tfindings.Add(value)\n\t\t}\n\t\tif value := findLicenseClause(commonLicensePathPattern, line); value != \"\" {\n\t\t\tfindings.Add(value)\n\t\t}\n\t\tif value := findLicenseClause(licenseAgreementHeadingPattern, line); value != \"\" {\n\t\t\tfindings.Add(value)\n\t\t}\n\n\t\t// multi-line heading detection (only at start of file)\n\t\tswitch headingState {\n\t\tcase expectHeading:\n\t\t\tif strings.TrimSpace(line) != \"\" {\n\t\t\t\theadingState = expectDashes\n\t\t\t} else {\n\t\t\t\theadingState = headingDone\n\t\t\t}\n\t\tcase expectDashes:\n\t\t\ttrimmed := strings.TrimSpace(line)\n\t\t\tif len(trimmed) > 0 && strings.Trim(trimmed, \"-\") == \"\" {\n\t\t\t\theadingState = skipBlanks\n\t\t\t} else {\n\t\t\t\theadingState = headingDone\n\t\t\t}\n\t\tcase skipBlanks:\n\t\t\tif strings.TrimSpace(line) != \"\" {\n\t\t\t\theadingState = captureLicense\n\t\t\t\tlicenseText.WriteString(line)\n\t\t\t\tif value := extractUpToFirstPeriod(licenseText.String()); value != \"\" {\n\t\t\t\t\tfindings.Add(value)\n\t\t\t\t\theadingState = headingDone\n\t\t\t\t}\n\t\t\t}\n\t\tcase captureLicense:\n\t\t\tlicenseText.WriteString(\" \")\n\t\t\tlicenseText.WriteString(line)\n\t\t\tif value := extractUpToFirstPeriod(licenseText.String()); value != \"\" {\n\t\t\t\tfindings.Add(value)\n\t\t\t\theadingState = headingDone\n\t\t\t}\n\t\t}\n\t}\n\n\tresults := findings.List()\n\tsort.Strings(results)\n\n\treturn results\n}\n\n// extractUpToFirstPeriod returns the license text up to the first period,\n// processed through ensureIsSingleLicense, or \"\" if no period found yet.\nfunc extractUpToFirstPeriod(s string) string {\n\tif idx := strings.Index(s, \".\"); idx >= 0 {\n\t\treturn ensureIsSingleLicense(s[:idx+1])\n\t}\n\treturn \"\"\n}\n\nfunc findLicenseClause(pattern *regexp.Regexp, line string) string {\n\tvalueGroup := \"license\"\n\tmatchesByGroup := internal.MatchNamedCaptureGroups(pattern, line)\n\n\tcandidate, ok := matchesByGroup[valueGroup]\n\tif !ok {\n\t\treturn \"\"\n\t}\n\n\treturn ensureIsSingleLicense(candidate)\n}\n\nvar multiLicenseExceptions = []string{\n\t\"NVIDIA Software License Agreement\",\n}\n\nfunc ensureIsSingleLicense(candidate string) (license string) {\n\tcandidate = strings.TrimSpace(strings.ReplaceAll(candidate, \"\\n\", \" \"))\n\n\t// Check for exceptions first\n\tfor _, exception := range multiLicenseExceptions {\n\t\tif strings.Contains(candidate, exception) {\n\t\t\treturn strings.TrimSuffix(candidate, \".\")\n\t\t}\n\t}\n\tif strings.Contains(candidate, \" or \") || strings.Contains(candidate, \" and \") {\n\t\t// make sure this is not one of the license exceptions\n\t\t// this is a multi-license summary, ignore this as other recurrent license lines should cover this\n\t\treturn\n\t}\n\tif candidate != \"\" && strings.ToLower(candidate) != \"none\" {\n\t\t// the license may be at the end of a sentence, clean . characters\n\t\tlicense = strings.TrimSuffix(candidate, \".\")\n\t}\n\treturn license\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_copyright_test.go",
    "content": "package debian\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestParseLicensesFromCopyright(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/copyright/libc6\",\n\t\t\t// note: there are other licenses in this file that are not matched --we don't do full text license identification yet\n\t\t\texpected: []string{\"GPL-2\", \"LGPL-2.1\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/trilicense\",\n\t\t\texpected: []string{\"GPL-2\", \"LGPL-2.1\", \"MPL-1.1\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/liblzma5\",\n\t\t\texpected: []string{\"Autoconf\", \"GPL-2\", \"GPL-2+\", \"GPL-3\", \"LGPL-2\", \"LGPL-2.1\", \"LGPL-2.1+\", \"PD\", \"PD-debian\", \"config-h\", \"noderivs\", \"permissive-fsf\", \"permissive-nowarranty\", \"probably-PD\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/libaudit-common\",\n\t\t\texpected: []string{\"GPL-1\", \"GPL-2\", \"LGPL-2.1\"},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/copyright/python\",\n\t\t\t// note: this should not capture #, Permission, This, see ... however it's not clear how to fix this (this is probably good enough)\n\t\t\texpected: []string{\"#\", \"Apache\", \"Apache-2\", \"Apache-2.0\", \"Expat\", \"GPL-2\", \"ISC\", \"LGPL-2.1+\", \"PSF-2\", \"Permission\", \"Python\", \"This\", \"see\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/cuda\",\n\t\t\texpected: []string{\"NVIDIA Software License Agreement and CUDA Supplement to Software License Agreement\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/dev-kit\",\n\t\t\texpected: []string{\"LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS\"},\n\t\t},\n\t\t{\n\t\t\tfixture:  \"testdata/copyright/microsoft\",\n\t\t\texpected: []string{\"LICENSE AGREEMENT FOR MICROSOFT PRODUCTS\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tf, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\tactual := parseLicensesFromCopyright(f)\n\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected package licenses (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_deb_archive.go",
    "content": "package debian\n\nimport (\n\t\"archive/tar\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/blakesmith/ar\"\n\t\"github.com/mholt/archives\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// parseDebArchive parses a Debian package archive (.deb) file and returns the packages it contains.\n// A .deb file is an ar archive containing three main files:\n// - debian-binary: Version of the .deb format (usually \"2.0\")\n// - control.tar.gz/xz/zst: Contains package metadata (control file, md5sums, conffiles)\n// - data.tar.gz/xz/zst: Contains the actual files to be installed (not processed by this cataloger)\n//\n// This function extracts and processes the control information to create package metadata.\nfunc parseDebArchive(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tarReader := ar.NewReader(reader)\n\n\tvar metadata *pkg.DpkgArchiveEntry\n\tvar licenses []string\n\tvar unknownErr error\n\tfor {\n\t\theader, err := arReader.Next()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to read ar header: %w\", err)\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.HasPrefix(header.Name, \"control.tar\"):\n\t\t\t// Decompress the control.tar.* file\n\t\t\tdcReader, err := decompressionStream(ctx, arReader, header.Name)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"failed to decompress control.tar.* file: %w\", err))\n\t\t\t}\n\t\t\tmetadata, err = processControlTar(dcReader)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"failed to process control.tar.* file: %w\", err))\n\t\t\t}\n\t\tcase strings.HasPrefix(header.Name, \"data.tar\"):\n\t\t\t// Decompress the data.tar.* file\n\t\t\tdcReader, err := decompressionStream(ctx, arReader, header.Name)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"failed to decompress data.tar.* file: %w\", err))\n\t\t\t}\n\t\t\tlicenses, err = processDataTar(dcReader)\n\t\t\tif err != nil {\n\t\t\t\tunknownErr = unknown.Append(unknownErr, reader.Location, fmt.Errorf(\"failed to process data.tar.* file: %w\", err))\n\t\t\t}\n\t\t}\n\t}\n\n\tif metadata == nil {\n\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"no application found described in .dpkg archive\"))\n\t}\n\n\treturn []pkg.Package{\n\t\tnewDebArchivePackage(ctx, reader.Location, *metadata, licenses),\n\t}, nil, nil\n}\n\n// this is the pattern you'd expect to see in a tar header for a debian package license file ()\nvar archiveHeaderLicensePathPattern = regexp.MustCompile(`^\\.?/usr/share/doc/[^/]+/copyright$`)\n\nfunc processDataTar(dcReader io.ReadCloser) ([]string, error) {\n\tdefer internal.CloseAndLogError(dcReader, \"\")\n\tvar licenses []string\n\n\ttarReader := tar.NewReader(dcReader)\n\tfor {\n\t\theader, err := tarReader.Next()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn licenses, err\n\t\t}\n\n\t\t// look for /usr/share/docs/*/copyright files, parse each one for license claims\n\t\t// TODO: in the future we can add archive sub indexes to the locations to see where within\n\t\t// the dpkg archive the license was found\n\t\tif archiveHeaderLicensePathPattern.MatchString(header.Name) {\n\t\t\tlicenses = append(licenses, parseLicensesFromCopyright(tarReader)...)\n\t\t}\n\t}\n\n\treturn licenses, nil\n}\n\nfunc processControlTar(dcReader io.ReadCloser) (*pkg.DpkgArchiveEntry, error) {\n\tdefer internal.CloseAndLogError(dcReader, \"\")\n\n\ttarReader := tar.NewReader(dcReader)\n\n\tvar metadata *pkg.DpkgArchiveEntry\n\tvar files []pkg.DpkgFileRecord\n\tvar confFileRecords []pkg.DpkgFileRecord\n\n\tfor {\n\t\theader, err := tarReader.Next()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to read control tar: %w\", err)\n\t\t}\n\n\t\tswitch filepath.Base(header.Name) {\n\t\tcase \"control\":\n\t\t\t// parseDpkgStatus already streams via bufio.Reader\n\t\t\tentries, err := parseDpkgStatus(tarReader)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"failed to parse control file: %w\", err)\n\t\t\t}\n\t\t\tif len(entries) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"no package entries found in control file\")\n\t\t\t}\n\t\t\tentry := pkg.DpkgArchiveEntry(entries[0])\n\t\t\tmetadata = &entry\n\t\tcase \"md5sums\":\n\t\t\t// parseDpkgMD5Info already streams via bufio.Scanner\n\t\t\tfiles = parseDpkgMD5Info(tarReader)\n\t\tcase \"conffiles\":\n\t\t\t// parseDpkgConffileInfo already streams via bufio.Scanner\n\t\t\tconfFileRecords = parseDpkgConffileInfo(tarReader)\n\t\t}\n\t}\n\n\tif metadata == nil {\n\t\treturn nil, fmt.Errorf(\"control file not found in archive\")\n\t}\n\n\tif len(confFileRecords) > 0 && len(files) > 0 {\n\t\tconfigPaths := make(map[string]struct{}, len(confFileRecords))\n\t\tfor _, cf := range confFileRecords {\n\t\t\tconfigPaths[cf.Path] = struct{}{}\n\t\t}\n\t\tfor i, f := range files {\n\t\t\tif _, isConfig := configPaths[f.Path]; isConfig {\n\t\t\t\tfiles[i].IsConfigFile = true\n\t\t\t}\n\t\t}\n\t}\n\n\tmetadata.Files = files\n\treturn metadata, nil\n}\n\nfunc decompressionStream(ctx context.Context, r io.Reader, filePath string) (io.ReadCloser, error) {\n\tformat, stream, err := archives.Identify(ctx, filePath, r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to identify compression format: %w\", err)\n\t}\n\n\tdecompressor, ok := format.(archives.Decompressor)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"file format does not support decompression: %s\", filePath)\n\t}\n\n\trc, err := decompressor.OpenReader(stream)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create decompression reader: %w\", err)\n\t}\n\n\treturn rc, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_deb_archive_test.go",
    "content": "package debian\n\nimport (\n\t\"archive/tar\"\n\t\"bytes\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestProcessControlTar(t *testing.T) {\n\ttarBytes := createTestTarWithControlFiles(t)\n\n\tmetadata, err := processControlTar(io.NopCloser(bytes.NewReader(tarBytes)))\n\n\trequire.NoError(t, err)\n\trequire.NotNil(t, metadata)\n\n\tassert.Equal(t, \"test-package\", metadata.Package)\n\tassert.Equal(t, \"1.0.0\", metadata.Version)\n\n\t// md5sums should have been parsed into file records\n\trequire.Len(t, metadata.Files, 1)\n\tassert.Equal(t, \"/usr/bin/test-command\", metadata.Files[0].Path)\n\tassert.Equal(t, \"d41d8cd98f00b204e9800998ecf8427e\", metadata.Files[0].Digest.Value)\n\n\t// conffiles should have marked config files\n\tassert.True(t, metadata.Files[0].IsConfigFile, \"file listed in conffiles should be marked as config\")\n}\n\nfunc TestProcessControlTar_ConfigFileMarking(t *testing.T) {\n\t// Create a tar where conffiles lists paths that overlap with md5sums entries\n\tvar buf bytes.Buffer\n\ttw := tar.NewWriter(&buf)\n\n\tcontrolContent := \"Package: test-package\\nVersion: 1.0.0\\nArchitecture: all\\n\"\n\twriteTarEntry(t, tw, \"control\", controlContent)\n\n\tmd5Content := \"d41d8cd98f00b204e9800998ecf8427e  usr/bin/test-command\\n\" +\n\t\t\"d41d8cd98f00b204e9800998ecf8427e  etc/test/config.conf\\n\" +\n\t\t\"d41d8cd98f00b204e9800998ecf8427e  usr/bin/other-command\\n\"\n\twriteTarEntry(t, tw, \"md5sums\", md5Content)\n\n\tconffilesContent := \"/usr/bin/test-command\\n/etc/test/config.conf\\n\"\n\twriteTarEntry(t, tw, \"conffiles\", conffilesContent)\n\n\trequire.NoError(t, tw.Close())\n\n\tmetadata, err := processControlTar(io.NopCloser(bytes.NewReader(buf.Bytes())))\n\trequire.NoError(t, err)\n\trequire.Len(t, metadata.Files, 3)\n\n\tassert.True(t, metadata.Files[0].IsConfigFile, \"first file should be marked as config file\")\n\tassert.True(t, metadata.Files[1].IsConfigFile, \"second file should be marked as config file\")\n\tassert.False(t, metadata.Files[2].IsConfigFile, \"third file should not be marked as config file\")\n}\n\n// createTestTarWithControlFiles creates a simple in-memory tar file with test control files\nfunc createTestTarWithControlFiles(t *testing.T) []byte {\n\tvar buf bytes.Buffer\n\ttw := tar.NewWriter(&buf)\n\n\tcontrolContent := \"Package: test-package\\nVersion: 1.0.0\\nArchitecture: all\\nMaintainer: Test <test@example.com>\\nDescription: Test package\\n\"\n\twriteTarEntry(t, tw, \"control\", controlContent)\n\n\tmd5Content := \"d41d8cd98f00b204e9800998ecf8427e  usr/bin/test-command\\n\"\n\twriteTarEntry(t, tw, \"md5sums\", md5Content)\n\n\tconffilesContent := \"/usr/bin/test-command\\n\"\n\twriteTarEntry(t, tw, \"conffiles\", conffilesContent)\n\n\trequire.NoError(t, tw.Close())\n\treturn buf.Bytes()\n}\n\nfunc writeTarEntry(t *testing.T, tw *tar.Writer, name, content string) {\n\tt.Helper()\n\trequire.NoError(t, tw.WriteHeader(&tar.Header{\n\t\tName: name,\n\t\tMode: 0644,\n\t\tSize: int64(len(content)),\n\t}))\n\t_, err := tw.Write([]byte(content))\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_dpkg_db.go",
    "content": "package debian\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/dustin/go-humanize\"\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/go-sync\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst (\n\tdeinstallStatus string = \"deinstall\"\n)\n\nvar (\n\terrEndOfPackages = fmt.Errorf(\"no more packages to read\")\n\tsourceRegexp     = regexp.MustCompile(`(?P<name>\\S+)( \\((?P<version>.*)\\))?`)\n)\n\n// parseDpkgDB reads a dpkg database \"status\" file (and surrounding data files) and returns the packages and relationships found.\nfunc parseDpkgDB(ctx context.Context, resolver file.Resolver, env *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tmetadata, err := parseDpkgStatus(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to catalog dpkg DB=%q: %w\", reader.RealPath, err)\n\t}\n\n\tdbLoc := reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)\n\tvar pkgs []pkg.Package\n\t_ = sync.CollectSlice(&ctx, cataloging.ExecutorFile, sync.ToSeq(metadata), func(m pkg.DpkgDBEntry) (pkg.Package, error) {\n\t\treturn newDpkgPackage(ctx, m, dbLoc, resolver, env.LinuxRelease, findDpkgInfoFiles(m.Package, resolver, reader.Location)...), nil\n\t}, &pkgs)\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc findDpkgInfoFiles(name string, resolver file.Resolver, dbLocation file.Location) []file.Location {\n\tif resolver == nil {\n\t\treturn nil\n\t}\n\tif strings.TrimSpace(name) == \"\" {\n\t\treturn nil\n\t}\n\n\t// for typical debian-base distributions, the installed package info is at /var/lib/dpkg/status\n\t// and the md5sum information is under /var/lib/dpkg/info/; however, for distroless the installed\n\t// package info is across multiple files under /var/lib/dpkg/status.d/ and the md5sums are contained in\n\t// the same directory\n\tsearchPath := path.Dir(dbLocation.RealPath)\n\n\tif !strings.HasSuffix(searchPath, \"status.d\") {\n\t\tsearchPath = path.Join(searchPath, \"info\")\n\t}\n\n\t// look for /var/lib/dpkg/info/NAME.*\n\tlocations, err := resolver.FilesByGlob(path.Join(searchPath, name+\".*\"))\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"pkg\", name).Trace(\"failed to fetch related dpkg info files\")\n\t\treturn nil\n\t}\n\n\treturn locations\n}\n\n// parseDpkgStatus is a parser function for Debian DB status contents, returning all Debian packages listed.\nfunc parseDpkgStatus(reader io.Reader) ([]pkg.DpkgDBEntry, error) {\n\tbuffedReader := bufio.NewReader(reader)\n\tvar metadata []pkg.DpkgDBEntry\n\n\tcontinueProcessing := true\n\tfor continueProcessing {\n\t\tentry, err := parseDpkgStatusEntry(buffedReader)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, errEndOfPackages) {\n\t\t\t\tcontinueProcessing = false\n\t\t\t} else {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tif entry == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tmetadata = append(metadata, *entry)\n\t}\n\n\treturn metadata, nil\n}\n\n// dpkgExtractedMetadata is an adapter struct to capture the fields from the dpkg status file, however, the final\n// pkg.DpkgMetadata struct has different types for some fields (e.g. Provides, Depends, and PreDepends is []string, not a string).\ntype dpkgExtractedMetadata struct {\n\tPackage       string `mapstructure:\"Package\"`\n\tSource        string `mapstructure:\"Source\"`\n\tVersion       string `mapstructure:\"Version\"`\n\tSourceVersion string `mapstructure:\"SourceVersion\"`\n\tArchitecture  string `mapstructure:\"Architecture\"`\n\tMaintainer    string `mapstructure:\"Maintainer\"`\n\tInstalledSize int    `mapstructure:\"InstalledSize\"`\n\tDescription   string `mapstructure:\"Description\"`\n\tProvides      string `mapstructure:\"Provides\"`\n\tDepends       string `mapstructure:\"Depends\"`\n\tPreDepends    string `mapstructure:\"PreDepends\"` // note: original doc is Pre-Depends\n\tStatus        string `mapstructure:\"Status\"`\n}\n\n// parseDpkgStatusEntry returns an individual Dpkg entry, or returns errEndOfPackages if there are no more packages to parse from the reader.\nfunc parseDpkgStatusEntry(reader *bufio.Reader) (*pkg.DpkgDBEntry, error) {\n\tvar retErr error\n\tdpkgFields, err := extractAllFields(reader)\n\tif err != nil {\n\t\tif !errors.Is(err, errEndOfPackages) {\n\t\t\treturn nil, err\n\t\t}\n\t\tif len(dpkgFields) == 0 {\n\t\t\treturn nil, err\n\t\t}\n\t\tretErr = err\n\t}\n\n\traw := dpkgExtractedMetadata{}\n\terr = mapstructure.Decode(dpkgFields, &raw)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Skip entries which have been removed but not purged, e.g. \"rc\" status in dpkg -l\n\tif strings.Contains(raw.Status, deinstallStatus) {\n\t\treturn nil, nil\n\t}\n\n\tsourceName, sourceVersion := extractSourceVersion(raw.Source)\n\tif sourceVersion != \"\" {\n\t\traw.SourceVersion = sourceVersion\n\t\traw.Source = sourceName\n\t}\n\n\tif raw.Package == \"\" {\n\t\treturn nil, retErr\n\t}\n\n\tentry := pkg.DpkgDBEntry{\n\t\tPackage:       raw.Package,\n\t\tSource:        raw.Source,\n\t\tVersion:       raw.Version,\n\t\tSourceVersion: raw.SourceVersion,\n\t\tArchitecture:  raw.Architecture,\n\t\tMaintainer:    raw.Maintainer,\n\t\tInstalledSize: raw.InstalledSize,\n\t\tDescription:   raw.Description,\n\t\tProvides:      splitPkgList(raw.Provides),\n\t\tDepends:       splitPkgList(raw.Depends),\n\t\tPreDepends:    splitPkgList(raw.PreDepends),\n\t}\n\n\t// there may be an optional conffiles section that we should persist as files\n\tif conffilesSection, exists := dpkgFields[\"Conffiles\"]; exists && conffilesSection != nil {\n\t\tif sectionStr, ok := conffilesSection.(string); ok {\n\t\t\tentry.Files = parseDpkgConffileInfo(strings.NewReader(sectionStr))\n\t\t}\n\t}\n\n\tif entry.Files == nil {\n\t\t// ensure the default value for a collection is never nil since this may be shown as JSON\n\t\tentry.Files = make([]pkg.DpkgFileRecord, 0)\n\t}\n\n\treturn &entry, retErr\n}\n\nfunc splitPkgList(pkgList string) (ret []string) {\n\tfields := strings.Split(pkgList, \",\")\n\tfor _, field := range fields {\n\t\tfield = strings.TrimSpace(field)\n\t\tif field != \"\" {\n\t\t\tret = append(ret, field)\n\t\t}\n\t}\n\treturn ret\n}\n\nfunc extractAllFields(reader *bufio.Reader) (map[string]interface{}, error) {\n\tdpkgFields := make(map[string]interface{})\n\tvar key string\n\n\tfor {\n\t\tline, err := reader.ReadString('\\n')\n\t\tif err != nil {\n\t\t\tif errors.Is(err, io.EOF) {\n\t\t\t\treturn dpkgFields, errEndOfPackages\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\n\t\tline = strings.TrimRight(line, \"\\n\")\n\n\t\t// empty line indicates end of entry\n\t\tif len(line) == 0 {\n\t\t\t// if the entry has not started, keep parsing lines\n\t\t\tif len(dpkgFields) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.HasPrefix(line, \" \"):\n\t\t\t// a field-body continuation\n\t\t\tif len(key) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"no match for continuation: line: '%s'\", line)\n\t\t\t}\n\n\t\t\tval, ok := dpkgFields[key]\n\t\t\tif !ok {\n\t\t\t\treturn nil, fmt.Errorf(\"no previous key exists, expecting: %s\", key)\n\t\t\t}\n\t\t\t// concatenate onto previous value\n\t\t\tval = fmt.Sprintf(\"%s\\n %s\", val, strings.TrimSpace(line))\n\t\t\tdpkgFields[key] = val\n\t\tdefault:\n\t\t\t// parse a new key\n\t\t\tvar val interface{}\n\t\t\tkey, val, err = handleNewKeyValue(line)\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"parsing dpkg status: extracting key-value from line: %s err: %v\", line, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif _, ok := dpkgFields[key]; ok {\n\t\t\t\treturn nil, fmt.Errorf(\"duplicate key discovered: %s\", key)\n\t\t\t}\n\t\t\tdpkgFields[key] = val\n\t\t}\n\t}\n\treturn dpkgFields, nil\n}\n\n// If the source entry string is of the form \"<name> (<version>)\" then parse and return the components, if\n// of the \"<name>\" form, then return name and nil\nfunc extractSourceVersion(source string) (string, string) {\n\t// special handling for the Source field since it has formatted data\n\tmatch := internal.MatchNamedCaptureGroups(sourceRegexp, source)\n\treturn match[\"name\"], match[\"version\"]\n}\n\n// handleNewKeyValue parse a new key-value pair from the given unprocessed line\nfunc handleNewKeyValue(line string) (key string, val interface{}, err error) {\n\tif i := strings.Index(line, \":\"); i > 0 {\n\t\tkey = strings.TrimSpace(line[0:i])\n\t\t// mapstruct cant handle \"-\"\n\t\tkey = strings.ReplaceAll(key, \"-\", \"\")\n\t\tval := strings.TrimSpace(line[i+1:])\n\n\t\t// further processing of values based on the key that was discovered\n\t\tswitch key {\n\t\tcase \"InstalledSize\":\n\t\t\ts, err := humanize.ParseBytes(val)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", nil, fmt.Errorf(\"bad installed-size value=%q: %w\", val, err)\n\t\t\t}\n\t\t\treturn key, int(s), nil\n\t\tdefault:\n\t\t\treturn key, val, nil\n\t\t}\n\t}\n\n\treturn \"\", nil, fmt.Errorf(\"cannot parse field from line: '%s'\", line)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_dpkg_db_test.go",
    "content": "package debian\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parseDpkgStatus(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\texpected    []pkg.DpkgDBEntry\n\t\tfixturePath string\n\t}{\n\t\t{\n\t\t\tname:        \"single package\",\n\t\t\tfixturePath: \"testdata/var/lib/dpkg/status.d/single\",\n\t\t\texpected: []pkg.DpkgDBEntry{\n\t\t\t\t{\n\t\t\t\t\tPackage:       \"apt\",\n\t\t\t\t\tSource:        \"apt-dev\",\n\t\t\t\t\tVersion:       \"1.8.2\",\n\t\t\t\t\tArchitecture:  \"amd64\",\n\t\t\t\t\tInstalledSize: 4064,\n\t\t\t\t\tMaintainer:    \"APT Development Team <deity@lists.debian.org>\",\n\t\t\t\t\tDescription: `commandline package manager\n This package provides commandline tools for searching and\n managing as well as querying information about packages\n as a low-level access to all features of the libapt-pkg library.\n .\n These include:\n * apt-get for retrieval of packages and information about them\n from authenticated sources and for installation, upgrade and\n removal of packages together with their dependencies\n * apt-cache for querying available information about installed\n as well as installable packages\n * apt-cdrom to use removable media as a source for packages\n * apt-config as an interface to the configuration settings\n * apt-key as an interface to manage authentication keys`,\n\t\t\t\t\tProvides: []string{\"apt-transport-https (= 1.8.2)\"},\n\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\"adduser\",\n\t\t\t\t\t\t\"gpgv | gpgv2 | gpgv1\",\n\t\t\t\t\t\t\"debian-archive-keyring\",\n\t\t\t\t\t\t\"libapt-pkg5.0 (>= 1.7.0~alpha3~)\",\n\t\t\t\t\t\t\"libc6 (>= 2.15)\",\n\t\t\t\t\t\t\"libgcc1 (>= 1:3.0)\",\n\t\t\t\t\t\t\"libgnutls30 (>= 3.6.6)\",\n\t\t\t\t\t\t\"libseccomp2 (>= 1.0.1)\",\n\t\t\t\t\t\t\"libstdc++6 (>= 5.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/apt/apt.conf.d/01autoremove\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"76120d358bc9037bb6358e737b3050b5\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/cron.daily/apt-compat\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"49e9b2cfa17849700d4db735d04244f3\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/kernel/postinst.d/apt-auto-removal\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"4ad976a68f045517cf4696cec7b8aa3a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/logrotate.d/apt\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"179f2ed4f85cbaca12fa3d69c2a4a1c3\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"single package with installed size\",\n\t\t\tfixturePath: \"testdata/var/lib/dpkg/status.d/installed-size-4KB\",\n\t\t\texpected: []pkg.DpkgDBEntry{\n\t\t\t\t{\n\t\t\t\t\tPackage:       \"apt\",\n\t\t\t\t\tSource:        \"apt-dev\",\n\t\t\t\t\tVersion:       \"1.8.2\",\n\t\t\t\t\tArchitecture:  \"amd64\",\n\t\t\t\t\tInstalledSize: 4000,\n\t\t\t\t\tMaintainer:    \"APT Development Team <deity@lists.debian.org>\",\n\t\t\t\t\tDescription: `commandline package manager\n This package provides commandline tools for searching and\n managing as well as querying information about packages\n as a low-level access to all features of the libapt-pkg library.\n .\n These include:\n * apt-get for retrieval of packages and information about them\n from authenticated sources and for installation, upgrade and\n removal of packages together with their dependencies\n * apt-cache for querying available information about installed\n as well as installable packages\n * apt-cdrom to use removable media as a source for packages\n * apt-config as an interface to the configuration settings\n * apt-key as an interface to manage authentication keys`,\n\t\t\t\t\tProvides: []string{\"apt-transport-https (= 1.8.2)\"},\n\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\"adduser\",\n\t\t\t\t\t\t\"gpgv | gpgv2 | gpgv1\",\n\t\t\t\t\t\t\"debian-archive-keyring\",\n\t\t\t\t\t\t\"libapt-pkg5.0 (>= 1.7.0~alpha3~)\",\n\t\t\t\t\t\t\"libc6 (>= 2.15)\",\n\t\t\t\t\t\t\"libgcc1 (>= 1:3.0)\",\n\t\t\t\t\t\t\"libgnutls30 (>= 3.6.6)\",\n\t\t\t\t\t\t\"libseccomp2 (>= 1.0.1)\",\n\t\t\t\t\t\t\"libstdc++6 (>= 5.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []pkg.DpkgFileRecord{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"multiple entries\",\n\t\t\tfixturePath: \"testdata/var/lib/dpkg/status.d/multiple\",\n\t\t\texpected: []pkg.DpkgDBEntry{\n\t\t\t\t{\n\t\t\t\t\tPackage: \"no-version\",\n\t\t\t\t\tFiles:   []pkg.DpkgFileRecord{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPackage:       \"tzdata\",\n\t\t\t\t\tVersion:       \"2020a-0+deb10u1\",\n\t\t\t\t\tSource:        \"tzdata-dev\",\n\t\t\t\t\tArchitecture:  \"all\",\n\t\t\t\t\tInstalledSize: 3036,\n\t\t\t\t\tMaintainer:    \"GNU Libc Maintainers <debian-glibc@lists.debian.org>\",\n\t\t\t\t\tDescription: `time zone and daylight-saving time data\n This package contains data required for the implementation of\n standard local time for many representative locations around the\n globe. It is updated periodically to reflect changes made by\n political bodies to time zone boundaries, UTC offsets, and\n daylight-saving rules.`,\n\t\t\t\t\tProvides: []string{\"tzdata-buster\"},\n\t\t\t\t\tDepends:  []string{\"debconf (>= 0.5) | debconf-2.0\"},\n\t\t\t\t\tFiles:    []pkg.DpkgFileRecord{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPackage:       \"util-linux\",\n\t\t\t\t\tVersion:       \"2.33.1-0.1\",\n\t\t\t\t\tArchitecture:  \"amd64\",\n\t\t\t\t\tInstalledSize: 4327,\n\t\t\t\t\tMaintainer:    \"LaMont Jones <lamont@debian.org>\",\n\t\t\t\t\tDescription: `miscellaneous system utilities\n This package contains a number of important utilities, most of which\n are oriented towards maintenance of your system. Some of the more\n important utilities included in this package allow you to view kernel\n messages, create new filesystems, view block device information,\n interface with real time clock, etc.`,\n\t\t\t\t\tDepends: []string{\"fdisk\", \"login (>= 1:4.5-1.1~)\"},\n\t\t\t\t\tPreDepends: []string{\n\t\t\t\t\t\t\"libaudit1 (>= 1:2.2.1)\", \"libblkid1 (>= 2.31.1)\", \"libc6 (>= 2.25)\",\n\t\t\t\t\t\t\"libcap-ng0 (>= 0.7.9)\", \"libmount1 (>= 2.25)\", \"libpam0g (>= 0.99.7.1)\",\n\t\t\t\t\t\t\"libselinux1 (>= 2.6-3~)\", \"libsmartcols1 (>= 2.33)\", \"libsystemd0\",\n\t\t\t\t\t\t\"libtinfo6 (>= 6)\", \"libudev1 (>= 183)\", \"libuuid1 (>= 2.16)\",\n\t\t\t\t\t\t\"zlib1g (>= 1:1.1.4)\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []pkg.DpkgFileRecord{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/default/hwclock\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"3916544450533eca69131f894db0ca12\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/init.d/hwclock.sh\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"1ca5c0743fa797ffa364db95bb8d8d8e\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pam.d/runuser\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"b8b44b045259525e0fae9e38fdb2aeeb\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pam.d/runuser-l\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"2106ea05877e8913f34b2c77fa02be45\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pam.d/su\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"ce6dcfda3b190a27a455bb38a45ff34a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"/etc/pam.d/su-l\",\n\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\tValue:     \"756fef5687fecc0d986e5951427b0c4f\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIsConfigFile: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"deinstall status packages are ignored\",\n\t\t\tfixturePath: \"testdata/var/lib/dpkg/status.d/deinstall\",\n\t\t\texpected: []pkg.DpkgDBEntry{\n\t\t\t\t{\n\t\t\t\t\tPackage:       \"linux-image-6.14.0-1012-aws\",\n\t\t\t\t\tSource:        \"linux-signed-aws-6.14\",\n\t\t\t\t\tVersion:       \"6.14.0-1012.12~24.04.1\",\n\t\t\t\t\tArchitecture:  \"amd64\",\n\t\t\t\t\tInstalledSize: 15221,\n\t\t\t\t\tMaintainer:    \"Canonical Kernel Team <kernel-team@lists.ubuntu.com>\",\n\t\t\t\t\tDescription: `Signed kernel image aws\n A kernel image for aws.  This version of it is signed with\n Canonical's signing key.`,\n\t\t\t\t\tProvides: []string{\"fuse-module\",\n\t\t\t\t\t\t\"linux-image\",\n\t\t\t\t\t\t\"spl-dkms\",\n\t\t\t\t\t\t\"spl-modules\",\n\t\t\t\t\t\t\"v4l2loopback-dkms\",\n\t\t\t\t\t\t\"v4l2loopback-modules\",\n\t\t\t\t\t\t\"zfs-dkms\",\n\t\t\t\t\t\t\"zfs-modules\"},\n\t\t\t\t\tDepends: []string{\n\t\t\t\t\t\t\"kmod\",\n\t\t\t\t\t\t\"linux-base (>= 4.5ubuntu1~16.04.1)\",\n\t\t\t\t\t\t\"linux-modules-6.14.0-1012-aws\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []pkg.DpkgFileRecord{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tf, err := os.Open(test.fixturePath)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\treader := bufio.NewReader(f)\n\n\t\t\tentries, err := parseDpkgStatus(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif diff := cmp.Diff(test.expected, entries); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected entry (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_corruptEntry(t *testing.T) {\n\tf, err := os.Open(\"testdata/var/lib/dpkg/status.d/corrupt\")\n\trequire.NoError(t, err)\n\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\treader := bufio.NewReader(f)\n\n\t_, err = parseDpkgStatus(reader)\n\trequire.Error(t, err)\n}\n\nfunc TestSourceVersionExtract(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"name and version\",\n\t\t\tinput:    \"test (1.2.3)\",\n\t\t\texpected: []string{\"test\", \"1.2.3\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"only name\",\n\t\t\tinput:    \"test\",\n\t\t\texpected: []string{\"test\", \"\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tinput:    \"\",\n\t\t\texpected: []string{\"\", \"\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tname, version := extractSourceVersion(test.input)\n\n\t\t\tif name != test.expected[0] {\n\t\t\t\tt.Errorf(\"mismatch name for %q : %q!=%q\", test.input, name, test.expected[0])\n\t\t\t}\n\n\t\t\tif version != test.expected[1] {\n\t\t\t\tt.Errorf(\"mismatch version for %q : %q!=%q\", test.input, version, test.expected[1])\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc requireAs(expected error) require.ErrorAssertionFunc {\n\treturn func(t require.TestingT, err error, i ...interface{}) {\n\t\trequire.ErrorAs(t, err, &expected)\n\t}\n}\n\nfunc Test_parseDpkgStatus_negativeCases(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tinput   string\n\t\twant    []pkg.Package\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"no more packages\",\n\t\t\tinput:   `Package: apt`,\n\t\t\twantErr: requireAs(errors.New(\"unable to determine packages\")),\n\t\t},\n\t\t{\n\t\t\tname: \"duplicated key\",\n\t\t\tinput: `Package: apt\nPackage: apt-get\n\n`,\n\t\t\twantErr: requireAs(errors.New(\"duplicate key discovered: Package\")),\n\t\t},\n\t\t{\n\t\t\tname: \"no match for continuation\",\n\t\t\tinput: `  Package: apt\n\n`,\n\t\t\twantErr: requireAs(errors.New(\"no match for continuation: line: '  Package: apt'\")),\n\t\t},\n\t\t{\n\t\t\tname: \"find keys\",\n\t\t\tinput: `Package: apt\nStatus: install ok installed\nInstalled-Size: 10kib\n\n`,\n\t\t\twant: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"apt\",\n\t\t\t\t\tType:      \"deb\",\n\t\t\t\t\tPURL:      \"pkg:deb/debian/apt?distro=debian-10\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"place\")),\n\t\t\t\t\tMetadata: pkg.DpkgDBEntry{\n\t\t\t\t\t\tPackage:       \"apt\",\n\t\t\t\t\t\tInstalledSize: 10240,\n\t\t\t\t\t\tFiles:         []pkg.DpkgFileRecord{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromString(\"place\", tt.input).\n\t\t\t\tWithErrorAssertion(tt.wantErr).\n\t\t\t\tWithLinuxRelease(linux.Release{ID: \"debian\", VersionID: \"10\"}).\n\t\t\t\tExpects(tt.want, nil).\n\t\t\t\tTestParser(t, parseDpkgDB)\n\t\t})\n\t}\n}\n\nfunc Test_handleNewKeyValue(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tline    string\n\t\twantKey string\n\t\twantVal interface{}\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"cannot parse field\",\n\t\t\tline:    \"blabla\",\n\t\t\twantErr: requireAs(errors.New(\"cannot parse field from line: 'blabla'\")),\n\t\t},\n\t\t{\n\t\t\tname:    \"parse field\",\n\t\t\tline:    \"key: val\",\n\t\t\twantKey: \"key\",\n\t\t\twantVal: \"val\",\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"parse installed size\",\n\t\t\tline:    \"InstalledSize: 128\",\n\t\t\twantKey: \"InstalledSize\",\n\t\t\twantVal: 128,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"parse installed kib size\",\n\t\t\tline:    \"InstalledSize: 1kib\",\n\t\t\twantKey: \"InstalledSize\",\n\t\t\twantVal: 1024,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"parse installed kb size\",\n\t\t\tline:    \"InstalledSize: 1kb\",\n\t\t\twantKey: \"InstalledSize\",\n\t\t\twantVal: 1000,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"parse installed-size mb\",\n\t\t\tline:    \"Installed-Size: 1 mb\",\n\t\t\twantKey: \"InstalledSize\",\n\t\t\twantVal: 1000000,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"fail parsing installed-size\",\n\t\t\tline:    \"Installed-Size: 1bla\",\n\t\t\twantKey: \"\",\n\t\t\twantErr: requireAs(fmt.Errorf(\"unhandled size name: %s\", \"bla\")),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotKey, gotVal, err := handleNewKeyValue(tt.line)\n\t\t\ttt.wantErr(t, err, fmt.Sprintf(\"handleNewKeyValue(%v)\", tt.line))\n\n\t\t\tassert.Equalf(t, tt.wantKey, gotKey, \"handleNewKeyValue(%v)\", tt.line)\n\t\t\tassert.Equalf(t, tt.wantVal, gotVal, \"handleNewKeyValue(%v)\", tt.line)\n\t\t})\n\t}\n}\n\nfunc abstractRelationships(t testing.TB, relationships []artifact.Relationship) map[string][]string {\n\tt.Helper()\n\n\tabstracted := make(map[string][]string)\n\tfor _, relationship := range relationships {\n\t\tfromPkg, ok := relationship.From.(pkg.Package)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\ttoPkg, ok := relationship.To.(pkg.Package)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// we build this backwards since we use DependencyOfRelationship instead of DependsOn\n\t\tabstracted[toPkg.Name] = append(abstracted[toPkg.Name], fromPkg.Name)\n\t}\n\n\treturn abstracted\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_dpkg_info_files.go",
    "content": "package debian\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc parseDpkgMD5Info(reader io.Reader) (findings []pkg.DpkgFileRecord) {\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tfields := strings.SplitN(line, \" \", 2)\n\t\tif len(fields) == 2 {\n\t\t\tpath := strings.TrimSpace(fields[1])\n\t\t\tif !strings.HasPrefix(path, \"/\") {\n\t\t\t\tpath = \"/\" + path\n\t\t\t}\n\t\t\tfindings = append(findings, pkg.DpkgFileRecord{\n\t\t\t\tPath: path,\n\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     strings.TrimSpace(fields[0]),\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\treturn findings\n}\n\nfunc parseDpkgConffileInfo(reader io.Reader) (findings []pkg.DpkgFileRecord) {\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := strings.Trim(scanner.Text(), \" \\n\")\n\t\tfields := strings.SplitN(line, \" \", 2)\n\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar path string\n\t\tif len(fields) >= 1 {\n\t\t\tpath = strings.TrimSpace(fields[0])\n\t\t\tif !strings.HasPrefix(path, \"/\") {\n\t\t\t\tpath = \"/\" + path\n\t\t\t}\n\t\t}\n\n\t\tvar digest *file.Digest\n\t\tif len(fields) >= 2 {\n\t\t\tdigest = &file.Digest{\n\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\tValue:     strings.TrimSpace(fields[1]),\n\t\t\t}\n\t\t}\n\n\t\tif path != \"\" {\n\t\t\trecord := pkg.DpkgFileRecord{\n\t\t\t\tPath:         path,\n\t\t\t\tIsConfigFile: true,\n\t\t\t}\n\t\t\tif digest != nil {\n\t\t\t\trecord.Digest = digest\n\t\t\t}\n\t\t\tfindings = append(findings, record)\n\t\t}\n\t}\n\treturn findings\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/parse_dpkg_info_files_test.go",
    "content": "package debian\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestMD5SumInfoParsing(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.DpkgFileRecord\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/info/zlib1g.md5sums\",\n\t\t\texpected: []pkg.DpkgFileRecord{\n\t\t\t\t{Path: \"/lib/x86_64-linux-gnu/libz.so.1.2.11\", Digest: &file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"55f905631797551d4d936a34c7e73474\",\n\t\t\t\t}},\n\t\t\t\t{Path: \"/usr/share/doc/zlib1g/changelog.Debian.gz\", Digest: &file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"cede84bda30d2380217f97753c8ccf3a\",\n\t\t\t\t}},\n\t\t\t\t{Path: \"/usr/share/doc/zlib1g/changelog.gz\", Digest: &file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"f3c9dafa6da7992c47328b4464f6d122\",\n\t\t\t\t}},\n\t\t\t\t{Path: \"/usr/share/doc/zlib1g/copyright\", Digest: &file.Digest{\n\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\tValue:     \"a4fae96070439a5209a62ae5b8017ab2\",\n\t\t\t\t}},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tf, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\tactual := parseDpkgMD5Info(f)\n\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected md5 files (-want +got):\\n%s\", diff)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc TestConffileInfoParsing(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.DpkgFileRecord\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/info/util-linux.conffiles\",\n\t\t\texpected: []pkg.DpkgFileRecord{\n\t\t\t\t{Path: \"/etc/default/hwclock\", IsConfigFile: true},\n\t\t\t\t{Path: \"/etc/init.d/hwclock.sh\", IsConfigFile: true},\n\t\t\t\t{Path: \"/etc/pam.d/runuser\", IsConfigFile: true},\n\t\t\t\t{Path: \"/etc/pam.d/runuser-l\", IsConfigFile: true},\n\t\t\t\t{Path: \"/etc/pam.d/su\", IsConfigFile: true},\n\t\t\t\t{Path: \"/etc/pam.d/su-l\", IsConfigFile: true},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tf, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() { require.NoError(t, f.Close()) })\n\n\t\t\tactual := parseDpkgConffileInfo(f)\n\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected md5 files (-want +got):\\n%s\", diff)\n\t\t\t}\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/cuda",
    "content": "End User License Agreement\n--------------------------\n\nNVIDIA Software License Agreement and CUDA Supplement to\nSoftware License Agreement.\n\nThe CUDA Toolkit End User License Agreement applies to the\nNVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA\nDisplay Driver, NVIDIA Nsight tools (Visual Studio Edition),\nand the associated documentation on CUDA APIs, programming\nmodel and development tools. If you do not agree with the\nterms and conditions of the license agreement, then do not\ndownload or use the software.\n\nLast updated: January 12, 2024.\n\n\nPreface\n-------\n\nThe Software License Agreement in Chapter 1 and the Supplement\nin Chapter 2 contain license terms and conditions that govern\nthe use of NVIDIA toolkit. By accepting this agreement, you\nagree to comply with all the terms and conditions applicable\nto the product(s) included herein.\n\n\nNVIDIA Driver\n\n\nDescription\n\nThis package contains the operating system driver and\nfundamental system software components for NVIDIA GPUs.\n\n\nNVIDIA CUDA Toolkit\n\n\nDescription\n\nThe NVIDIA CUDA Toolkit provides command-line and graphical\ntools for building, debugging and optimizing the performance\nof applications accelerated by NVIDIA GPUs, runtime and math\nlibraries, and documentation including programming guides,\nuser manuals, and API references.\n\n\nDefault Install Location of CUDA Toolkit\n\nWindows platform:\n\n%ProgramFiles%\\NVIDIA GPU Computing Toolkit\\CUDA\\v#.#\n\nLinux platform:\n\n/usr/local/cuda-#.#\n\nMac platform:\n\n/Developer/NVIDIA/CUDA-#.#\n\n\nNVIDIA CUDA Samples\n\n\nDescription\n\nCUDA Samples are now located in\nhttps://github.com/nvidia/cuda-samples, which includes\ninstructions for obtaining, building, and running the samples.\nThey are no longer included in the CUDA toolkit.\n\n\nNVIDIA Nsight Visual Studio Edition (Windows only)\n\n\nDescription\n\nNVIDIA Nsight Development Platform, Visual Studio Edition is a\ndevelopment environment integrated into Microsoft Visual\nStudio that provides tools for debugging, profiling, analyzing\nand optimizing your GPU computing and graphics applications.\n\n\nDefault Install Location of Nsight Visual Studio Edition\n\nWindows platform:\n\n%ProgramFiles(x86)%\\NVIDIA Corporation\\Nsight Visual Studio Edition #.#\n\n\n1. License Agreement for NVIDIA Software Development Kits\n---------------------------------------------------------\n\n\nImportant Notice—Read before downloading, installing,\ncopying or using the licensed software:\n-------------------------------------------------------\n\nThis license agreement, including exhibits attached\n(\"Agreement”) is a legal agreement between you and NVIDIA\nCorporation (\"NVIDIA\") and governs your use of a NVIDIA\nsoftware development kit (“SDK”).\n\nEach SDK has its own set of software and materials, but here\nis a description of the types of items that may be included in\na SDK: source code, header files, APIs, data sets and assets\n(examples include images, textures, models, scenes, videos,\nnative API input/output files), binary software, sample code,\nlibraries, utility programs, programming code and\ndocumentation.\n\nThis Agreement can be accepted only by an adult of legal age\nof majority in the country in which the SDK is used.\n\nIf you are entering into this Agreement on behalf of a company\nor other legal entity, you represent that you have the legal\nauthority to bind the entity to this Agreement, in which case\n“you” will mean the entity you represent.\n\nIf you don’t have the required age or authority to accept\nthis Agreement, or if you don’t accept all the terms and\nconditions of this Agreement, do not download, install or use\nthe SDK.\n\nYou agree to use the SDK only for purposes that are permitted\nby (a) this Agreement, and (b) any applicable law, regulation\nor generally accepted practices or guidelines in the relevant\njurisdictions.\n\n\n1.1. License\n\n\n1.1.1. License Grant\n\nSubject to the terms of this Agreement, NVIDIA hereby grants\nyou a non-exclusive, non-transferable license, without the\nright to sublicense (except as expressly provided in this\nAgreement) to:\n\n  1. Install and use the SDK,\n\n  2. Modify and create derivativ"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/dev-kit",
    "content": "LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/libaudit-common",
    "content": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: auditd\nSource: https://people.redhat.com/sgrubb/audit/\n\nFiles: *\nCopyright: 2012-2016 Steve Grubb <sgrubb@redhat.com>\n           2006-2012 Rik Faith\nLicense: GPL-2\n\nFiles: src/libev/*\nCopyright: 2007-2009 Marc Alexamder Lehmann\nLicense: GPL-2\n\nFiles: lib/*\nCopyright: 2005-2008 Steve Grubb <sgrubb@redhat.com>\nLicense: LGPL-2.1\n  The audit daemon's library libaudit.* is released under LGPL\n  so that it may be linked with 3rd party software.\n  .\n  On Debian systems, refer to /usr/share/common-licenses/LGPL-2.1\n  for the complete text of the GNU Lesser General Public License.\n\nFiles: debian/*\nCopyright: 2007-2011 Philipp Matthias Hahn <pmhahn@debian.org>\n           2012-2016 Laurent Bigonville <bigon@debian.org>\nLicense: GPL-2\n\nLicense: GPL-2\n This package is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License version 2,\n as published by the Free Software Foundation.\n .\n This package is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU General Public License for more details.\n .\n You should have received a copy of the GNU General Public License\n along with this package; if not, write to the Free Software\n Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n .\n On Debian systems, the complete text of the GNU General\n Public License can be found in `/usr/share/common-licenses/GPL-1'.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/libc6",
    "content": "This is the Debian prepackaged version of the GNU C Library version 2.23.\n\nIt was put together by the GNU Libc Maintainers <debian-glibc@lists.debian.org>\nfrom <https://sourceware.org/git/glibc.git>\n\n* Most of the GNU C library is under the following copyright:\n\n    Copyright (C) 1991-2015 Free Software Foundation, Inc.\n\n    The GNU C Library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    The GNU C Library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with the GNU C Library; if not, write to the Free\n    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n    02110-1301 USA\n\n  On Debian systems, the complete text of the GNU Library\n  General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'.\n\n* The utilities associated with GNU C library is under the following\n  copyright:\n\n    Copyright (C) 1991-2015 Free Software Foundation, Inc.\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published\n    by the Free Software Foundation; version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software Foundation,\n    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n\n  On Debian systems, the complete text of the GNU Library\n  General Public License can be found in `/usr/share/common-licenses/GPL-2'.\n\n* All code incorporated from 4.4 BSD is distributed under the following\n  license:\n\n   Copyright (C) 1991 Regents of the University of California.\n   All rights reserved.\n\n   Redistribution and use in source and binary forms, with or without\n   modification, are permitted provided that the following conditions\n   are met:\n\n   1. Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n   2. Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n   3. [This condition was removed.]\n   4. Neither the name of the University nor the names of its contributors\n      may be used to endorse or promote products derived from this software\n      without specific prior written permission.\n\n   THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\n   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n   ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\n   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n   SUCH DAMAGE.\n\n* The DNS resolver code, taken from BIND 4.9.5, is copyrighted both by\n  UC Berkeley and by Digital Equipment Corporation.  The DEC portions\n  are under the following license:\n\n    Portions Copyright (C) 1993 by Digital Equipment Corporation.\n\n    Permission to use, copy, modify, and distribute this software for any\n    purpose with or without fee is hereby granted, provided that the above\n    copyright notice and this permission notice appear in all copies, and\n    that the name of Digital Equipment Corporation not be used in\n    advertising or publicity pertaining to distribution of the document or\n    software without specific, written prior permission.\n\n    THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP.\n    DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL\n    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL\n    DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT,\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING\n    FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\n    NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION\n    WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n* The ISC portions are under the following license:\n\n    Portions Copyright (c) 1996-1999 by Internet Software Consortium.\n\n    Permission to use, copy, modify, and distribute this software for any\n    purpose with or without fee is hereby granted, provided that the above\n    copyright notice and this permission notice appear in all copies.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS\n    ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES\n    OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE\n    CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL\n    DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR\n    PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\n    ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\n    SOFTWARE.\n\n* The Sun RPC support (from rpcsrc-4.0) is covered by the following\n  license:\n\n    Copyright (c) 2010, Oracle America, Inc.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are\n    met:\n\n        * Redistributions of source code must retain the above copyright\n          notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above\n          copyright notice, this list of conditions and the following\n          disclaimer in the documentation and/or other materials\n          provided with the distribution.\n        * Neither the name of the \"Oracle America, Inc.\" nor the names of its\n          contributors may be used to endorse or promote products derived\n          from this software without specific prior written permission.\n\n      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n      \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n      LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n      FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n      COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n      INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n      DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n      GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n      INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n      WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n      NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n      OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n* The following CMU license covers some of the support code for Mach,\n  derived from Mach 3.0:\n\n    Mach Operating System\n    Copyright (C) 1991,1990,1989 Carnegie Mellon University\n    All Rights Reserved.\n\n    Permission to use, copy, modify and distribute this software and its\n    documentation is hereby granted, provided that both the copyright\n    notice and this permission notice appear in all copies of the\n    software, derivative works or modified versions, and any portions\n    thereof, and that both notices appear in supporting documentation.\n\n    CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS''\n    CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR\n    ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.\n\n    Carnegie Mellon requests users of this software to return to\n\n     Software Distribution Coordinator\n     School of Computer Science\n     Carnegie Mellon University\n     Pittsburgh PA 15213-3890\n\n    or Software.Distribution@CS.CMU.EDU any improvements or\n    extensions that they make and grant Carnegie Mellon the rights to\n    redistribute these changes.\n\n* The file if_ppp.h is under the following CMU license:\n\n     Redistribution and use in source and binary forms, with or without\n     modification, are permitted provided that the following conditions\n     are met:\n     1. Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n     2. Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n     3. Neither the name of the University nor the names of its contributors\n        may be used to endorse or promote products derived from this software\n        without specific prior written permission.\n\n     THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND\n     CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,\n     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n     IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY\n     DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n     DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\n     IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n     IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n* The following license covers the files from Intel's \"Highly Optimized\n  Mathematical Functions for Itanium\" collection:\n\n    Intel License Agreement\n\n    Copyright (c) 2000, Intel Corporation\n\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are\n    met:\n\n    * Redistributions of source code must retain the above copyright\n    notice, this list of conditions and the following disclaimer.\n\n    * Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the\n    documentation and/or other materials provided with the distribution.\n\n    * The name of Intel Corporation may not be used to endorse or promote\n    products derived from this software without specific prior written\n    permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR\n    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n* The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright\n  (C) by Craig Metz and are distributed under the following license:\n\n    /* The Inner Net License, Version 2.00\n\n      The author(s) grant permission for redistribution and use in source and\n    binary forms, with or without modification, of the software and documentation\n    provided that the following conditions are met:\n\n    0. If you receive a version of the software that is specifically labelled\n       as not being for redistribution (check the version message and/or README),\n       you are not permitted to redistribute that version of the software in any\n       way or form.\n    1. All terms of the all other applicable copyrights and licenses must be\n       followed.\n    2. Redistributions of source code must retain the authors' copyright\n       notice(s), this list of conditions, and the following disclaimer.\n    3. Redistributions in binary form must reproduce the authors' copyright\n       notice(s), this list of conditions, and the following disclaimer in the\n       documentation and/or other materials provided with the distribution.\n    4. [The copyright holder has authorized the removal of this clause.]\n    5. Neither the name(s) of the author(s) nor the names of its contributors\n       may be used to endorse or promote products derived from this software\n       without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY\n    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n    ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n      If these license terms cause you a real problem, contact the author.  */\n\n* The file sunrpc/des_impl.c is copyright Eric Young:\n\n    Copyright (C) 1992 Eric Young\n    Collected from libdes and modified for SECURE RPC by Martin Kuck 1994\n    This file is distributed under the terms of the GNU Lesser General\n    Public License, version 2.1 or later - see the file COPYING.LIB for details.\n    If you did not receive a copy of the license with this program, please\n    see <http://www.gnu.org/licenses/> to obtain a copy.\n\n* The libidn code is copyright Simon Josefsson, with portions copyright\n  The Internet Society, Tom Tromey and Red Hat, Inc.:\n\n    Copyright (C) 2002, 2003, 2004, 2011  Simon Josefsson\n\n    This file is part of GNU Libidn.\n\n    GNU Libidn is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    GNU Libidn is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with GNU Libidn; if not, see <http://www.gnu.org/licenses/>.\n\n* The following notice applies to portions of libidn/nfkc.c:\n\n    This file contains functions from GLIB, including gutf8.c and\n    gunidecomp.c, all licensed under LGPL and copyright hold by:\n\n    Copyright (C) 1999, 2000 Tom Tromey\n    Copyright 2000 Red Hat, Inc.\n\n* The following applies to portions of libidn/punycode.c and\n  libidn/punycode.h:\n\n    This file is derived from RFC 3492bis written by Adam M. Costello.\n\n    Disclaimer and license: Regarding this entire document or any\n    portion of it (including the pseudocode and C code), the author\n    makes no guarantees and is not responsible for any damage resulting\n    from its use.  The author grants irrevocable permission to anyone\n    to use, modify, and distribute it in any way that does not diminish\n    the rights of anyone else to use, modify, and distribute it,\n    provided that redistributed derivative works do not contain\n    misleading author or version information.  Derivative works need\n    not be licensed under similar terms.\n\n    Copyright (C) The Internet Society (2003).  All Rights Reserved.\n\n    This document and translations of it may be copied and furnished to\n    others, and derivative works that comment on or otherwise explain it\n    or assist in its implementation may be prepared, copied, published\n    and distributed, in whole or in part, without restriction of any\n    kind, provided that the above copyright notice and this paragraph are\n    included on all such copies and derivative works.  However, this\n    document itself may not be modified in any way, such as by removing\n    the copyright notice or references to the Internet Society or other\n    Internet organizations, except as needed for the purpose of\n    developing Internet standards in which case the procedures for\n    copyrights defined in the Internet Standards process must be\n    followed, or as required to translate it into languages other than\n    English.\n\n    The limited permissions granted above are perpetual and will not be\n    revoked by the Internet Society or its successors or assigns.\n\n    This document and the information contained herein is provided on an\n    \"AS IS\" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\n    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\n    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\n    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\n    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n\n* The file inet/rcmd.c is under a UCB copyright and the following:\n\n    Copyright (C) 1998 WIDE Project.\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions\n    are met:\n    1. Redistributions of source code must retain the above copyright\n       notice, this list of conditions and the following disclaimer.\n    2. Redistributions in binary form must reproduce the above copyright\n       notice, this list of conditions and the following disclaimer in the\n       documentation and/or other materials provided with the distribution.\n    3. Neither the name of the project nor the names of its contributors\n       may be used to endorse or promote products derived from this software\n       without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n    ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE\n    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n    SUCH DAMAGE.\n\n    * The file posix/runtests.c is copyright Tom Lord:\n\n    Copyright 1995 by Tom Lord\n\n                            All Rights Reserved\n\n    Permission to use, copy, modify, and distribute this software and its\n    documentation for any purpose and without fee is hereby granted,\n    provided that the above copyright notice appear in all copies and that\n    both that copyright notice and this permission notice appear in\n    supporting documentation, and that the name of the copyright holder not be\n    used in advertising or publicity pertaining to distribution of the\n    software without specific, written prior permission.\n\n    Tom Lord DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\n    INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO\n    EVENT SHALL TOM LORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR\n    CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF\n    USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n    PERFORMANCE OF THIS SOFTWARE.\n\n* The posix/rxspencer tests are copyright Henry Spencer:\n\n    Copyright 1992, 1993, 1994, 1997 Henry Spencer.  All rights reserved.\n    This software is not subject to any license of the American Telephone\n    and Telegraph Company or of the Regents of the University of California.\n\n    Permission is granted to anyone to use this software for any purpose on\n    any computer system, and to alter it and redistribute it, subject\n    to the following restrictions:\n\n    1. The author is not responsible for the consequences of use of this\n       software, no matter how awful, even if they arise from flaws in it.\n\n    2. The origin of this software must not be misrepresented, either by\n       explicit claim or by omission.  Since few users ever read sources,\n       credits must appear in the documentation.\n\n    3. Altered versions must be plainly marked as such, and must not be\n       misrepresented as being the original software.  Since few users\n       ever read sources, credits must appear in the documentation.\n\n    4. This notice may not be removed or altered.\n\n* The file posix/PCRE.tests is copyright University of Cambridge:\n\n    Copyright (c) 1997-2003 University of Cambridge\n\n    Permission is granted to anyone to use this software for any purpose on any\n    computer system, and to redistribute it freely, subject to the following\n    restrictions:\n\n    1. This software is distributed in the hope that it will be useful,\n       but WITHOUT ANY WARRANTY; without even the implied warranty of\n       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n    2. The origin of this software must not be misrepresented, either by\n       explicit claim or by omission. In practice, this means that if you use\n       PCRE in software that you distribute to others, commercially or\n       otherwise, you must put a sentence like this\n\n         Regular expression support is provided by the PCRE library package,\n         which is open source software, written by Philip Hazel, and copyright\n         by the University of Cambridge, England.\n\n       somewhere reasonably visible in your documentation and in any relevant\n       files or online help data or similar. A reference to the ftp site for\n       the source, that is, to\n\n         ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/\n\n       should also be given in the documentation. However, this condition is not\n       intended to apply to whole chains of software. If package A includes PCRE,\n       it must acknowledge it, but if package B is software that includes package\n       A, the condition is not imposed on package B (unless it uses PCRE\n       independently).\n\n    3. Altered versions must be plainly marked as such, and must not be\n       misrepresented as being the original software.\n\n    4. If PCRE is embedded in any software that is released under the GNU\n      General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),\n      then the terms of that licence shall supersede any condition above with\n      which it is incompatible.\n\n* Files from Sun fdlibm are copyright Sun Microsystems, Inc.:\n\n    Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n\n    Developed at SunPro, a Sun Microsystems, Inc. business.\n    Permission to use, copy, modify, and distribute this\n    software is freely granted, provided that this notice\n    is preserved.\n\n* Part of stdio-common/tst-printf.c is copyright C E Chew:\n\n    (C) Copyright C E Chew\n\n    Feel free to copy, use and distribute this software provided:\n\n         1. you do not pretend that you wrote it\n         2. you leave this copyright notice intact.\n\n* Various long double libm functions are copyright Stephen L. Moshier:\n\n    Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>\n\n     This library is free software; you can redistribute it and/or\n     modify it under the terms of the GNU Lesser General Public\n     License as published by the Free Software Foundation; either\n     version 2.1 of the License, or (at your option) any later version.\n\n     This library is distributed in the hope that it will be useful,\n     but WITHOUT ANY WARRANTY; without even the implied warranty of\n     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n     Lesser General Public License for more details.\n\n     You should have received a copy of the GNU Lesser General Public\n     License along with this library; if not, see\n     <http://www.gnu.org/licenses/>.  */"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/liblzma5",
    "content": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: XZ Utils\nUpstream-Contact:\n Lasse Collin <lasse.collin@tukaani.org>\n http://tukaani.org/xz/lists.html\nSource:\n http://tukaani.org/xz\n http://git.tukaani.org/xz.git\nComment:\n XZ Utils is developed and maintained upstream by Lasse Collin.  Major\n portions are based on code by other authors; see AUTHORS for details.\n Most of the source has been put into the public domain, but some files\n have not (details below).\n .\n This file describes the source package.  The binary packages contain\n some files derived from other works: for example, images in the API\n documentation come from Doxygen.\nLicense:\n Different licenses apply to different files in this package. Here\n is a rough summary of which licenses apply to which parts of this\n package (but check the individual files to be sure!):\n .\n   - liblzma is in the public domain.\n .\n   - xz, xzdec, and lzmadec command line tools are in the public\n     domain unless GNU getopt_long had to be compiled and linked\n     in from the lib directory. The getopt_long code is under\n     GNU LGPLv2.1+.\n .\n   - The scripts to grep, diff, and view compressed files have been\n     adapted from gzip. These scripts and their documentation are\n     under GNU GPLv2+.\n .\n   - All the documentation in the doc directory and most of the\n     XZ Utils specific documentation files in other directories\n     are in the public domain.\n .\n   - Translated messages are in the public domain.\n .\n   - The build system contains public domain files, and files that\n     are under GNU GPLv2+ or GNU GPLv3+. None of these files end up\n     in the binaries being built.\n .\n   - Test files and test code in the tests directory, and debugging\n     utilities in the debug directory are in the public domain.\n .\n   - The extra directory may contain public domain files, and files\n     that are under various free software licenses.\n .\n You can do whatever you want with the files that have been put into\n the public domain. If you find public domain legally problematic,\n take the previous sentence as a license grant. If you still find\n the lack of copyright legally problematic, you have too many\n lawyers.\n .\n As usual, this software is provided \"as is\", without any warranty.\n .\n If you copy significant amounts of public domain code from XZ Utils\n into your project, acknowledging this somewhere in your software is\n polite (especially if it is proprietary, non-free software), but\n naturally it is not legally required. Here is an example of a good\n notice to put into \"about box\" or into documentation:\n .\n     This software includes code from XZ Utils <http://tukaani.org/xz/>.\n .\n The following license texts are included in the following files:\n   - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1\n   - COPYING.GPLv2: GNU General Public License version 2\n   - COPYING.GPLv3: GNU General Public License version 3\n .\n Note that the toolchain (compiler, linker etc.) may add some code\n pieces that are copyrighted. Thus, it is possible that e.g. liblzma\n binary wouldn't actually be in the public domain in its entirety\n even though it contains no copyrighted code from the XZ Utils source\n package.\n .\n If you have questions, don't hesitate to ask the author(s) for more\n information.\n\nFiles: *\nCopyright: 2006-2012, Lasse Collin\n           1999-2008, Igor Pavlov\n           2006, Ville Koskinen\n           1998, Steve Reid\n           2000, Wei Dai\n           2003, Kevin Springle\n           2009, Jonathan Nieder\n           2010, Anders F Björklund\nLicense: PD\n This file has been put in the public domain.\n You can do whatever you want with this file.\nComment:\n  From: Lasse Collin <lasse.collin@tukaani.org>\n  To: Jonathan Nieder <jrnieder@gmail.com>\n  Subject: Re: XZ utils for Debian\n  Date: Sun, 19 Jul 2009 13:28:23 +0300\n  Message-Id: <200907191328.23816.lasse.collin@tukaani.org>\n .\n [...]\n .\n  > AUTHORS, ChangeLog, COPYING, README, THANKS, TODO,\n  > dos/README, windows/README\n .\n  COPYING says that most docs are in the public domain. Maybe that's not\n  clear enough, but on the other hand it looks a bit stupid to put\n  copyright information in tiny and relatively small docs like README.\n .\n  I don't dare to say that _all_ XZ Utils specific docs are in the public\n  domain unless otherwise mentioned in the file. I'm including PDF files\n  generated by groff + ps2pdf, and some day I might include Doxygen-\n  generated HTML docs too. Those don't include any copyright notices, but\n  it seems likely that groff + ps2pdf or at least Doxygen put some\n  copyrighted content into the generated files.\n\nFiles: INSTALL NEWS PACKAGERS\n windows/README-Windows.txt\n windows/INSTALL-Windows.txt\nCopyright: 2009-2010, Lasse Collin\nLicense: probably-PD\n See the note on AUTHORS, README, and so on above.\n\nFiles: src/scripts/* lib/* extra/scanlzma/scanlzma.c\nCopyright: © 1993, Jean-loup Gailly\n           © 1989-1994, 1996-1999, 2001-2007, Free Software Foundation, Inc.\n           © 2006 Timo Lindfors\n           2005, Charles Levert\n           2005, 2009, Lasse Collin\n           2009, Andrew Dudman\nOther-Authors: Paul Eggert, Ulrich Drepper\nLicense: GPL-2+\n\nFiles: src/scripts/Makefile.am src/scripts/xzless.1\nCopyright: 2009, Andrew Dudman\n           2009, Lasse Collin\nLicense: PD\n This file has been put in the public domain.\n You can do whatever you want with this file.\n\nFiles: doc/examples/xz_pipe_comp.c doc/examples/xz_pipe_decomp.c\nCopyright: 2010, Daniel Mealha Cabrita\nLicense: PD\n Not copyrighted -- provided to the public domain.\n\nFiles: lib/getopt.c lib/getopt1.c lib/getopt.in.h\nCopyright: © 1987-2007 Free Software Foundation, Inc.\nOther-Authors: Ulrich Drepper\nLicense: LGPL-2.1+\n\nFiles: m4/getopt.m4 m4/posix-shell.m4\nCopyright: © 2002-2006, 2008 Free Software Foundation, Inc.\n           © 2007-2008 Free Software Foundation, Inc.\nOther-Authors: Bruno Haible, Paul Eggert\nLicense: permissive-fsf\n\nFiles: m4/acx_pthread.m4\nCopyright: © 2008, Steven G. Johnson <stevenj@alum.mit.edu>\nLicense: Autoconf\n\nFiles: Doxyfile.in\nCopyright: © 1997-2007 by Dimitri van Heesch\nOrigin: Doxygen 1.4.7\nLicense: GPL-2\n\nFiles: src/liblzma/check/crc32_table_?e.h\n src/liblzma/check/crc64_table_?e.h\n src/liblzma/lzma/fastpos_table.c\n src/liblzma/rangecoder/price_table.c\nCopyright: none, automatically generated data\nGenerated-With:\n src/liblzma/check/crc32_tablegen.c\n src/liblzma/check/crc64_tablegen.c\n src/liblzma/lzma/fastpos_tablegen.c\n src/liblzma/rangecoder/price_tablegen.c\nLicense: none\n No copyright to license.\n\nFiles: .gitignore m4/.gitignore po/.gitignore po/LINGUAS po/POTFILES.in\nCopyright: none; these are just short lists.\nLicense: none\n No copyright to license.\n\nFiles: tests/compress_prepared_bcj_*\nCopyright: 2008-2009, Lasse Collin\nSource-Code: tests/bcj_test.c\nLicense: PD\n This file has been put into the public domain.\n You can do whatever you want with this file.\nComment:\n changelog.gz (commit 975d8fd) explains:\n .\n Recreated the BCJ test files for x86 and SPARC. The old files\n were linked with crt*.o, which are copyrighted, and thus the\n old test files were not in the public domain as a whole. They\n are freely distributable though, but it is better to be careful\n and avoid including any copyrighted pieces in the test files.\n The new files are just compiled and assembled object files,\n and thus don't contain any copyrighted code.\n\nFiles: po/cs.po po/de.po po/fr.po\nCopyright: 2010, Marek Černocký\n           2010, Andre Noll\n           2011, Adrien Nader\nLicense: PD\n This file is put in the public domain.\n\nFiles: po/it.po po/pl.po\nCopyright: 2009, 2010, Gruppo traduzione italiano di Ubuntu-it\n           2010, Lorenzo De Liso\n           2009, 2010, 2011, Milo Casagrande\n           2011, Jakub Bogusz\nLicense: PD\n This file is in the public domain\n\nFiles: INSTALL.generic\nCopyright: © 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,\n             2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\nLicense: permissive-nowarranty\n\nFiles: dos/config.h\nCopyright: © 1992, 1993, 1994, 1999, 2000, 2001, 2002, 2005\n             Free Software Foundation, Inc.\n           2007-2010, Lasse Collin\nOther-Authors: Roland McGrath, Akim Demaille, Paul Eggert,\n               David Mackenzie, Bruno Haible, and many others.\nOrigin: configure.ac from XZ Utils,\n        visibility.m4 serial 1 (gettext-0.15),\n        Autoconf 2.52g\nLicense: config-h\n configure.ac:\n .\n  # Author: Lasse Collin\n  #\n  # This file has been put into the public domain.\n  # You can do whatever you want with this file.\n .\n visibility.m4:\n .\n  dnl Copyright (C) 2005 Free Software Foundation, Inc.\n  dnl This file is free software; the Free Software Foundation\n  dnl gives unlimited permission to copy and/or distribute it,\n  dnl with or without modifications, as long as this notice is preserved.\n .\n dnl From Bruno Haible.\n .\n comments from Autoconf 2.52g:\n .\n  # Copyright 1992, 1993, 1994, 1999, 2000, 2001, 2002\n  # Free Software Foundation, Inc.\n .\n [...]\n .\n  # As a special exception, the Free Software Foundation gives unlimited\n  # permission to copy, distribute and modify the configure scripts that\n  # are the output of Autoconf.  You need not follow the terms of the GNU\n  # General Public License when using or distributing such scripts, even\n  # though portions of the text of Autoconf appear in them.  The GNU\n  # General Public License (GPL) does govern all other use of the material\n  # that constitutes the Autoconf program.\n .\n On Debian systems, the complete text of the GNU General Public\n License version 2 can be found in ‘/usr/share/common-licenses/GPL-2’.\n dos/config.h was generated with autoheader, which tells Autoconf to\n output a script to generate a config.h file and then runs it.\n\nFiles: po/Makevars\nOrigin: gettext-runtime/po/Makevars (gettext-0.12)\nCopyright: © 2003 Free Software Foundation, Inc.\nAuthors: Bruno Haible\nLicense: LGPL-2.1+\n The gettext-runtime package is under the LGPL, see files intl/COPYING.LIB-2.0\n and intl/COPYING.LIB-2.1.\n .\n On Debian systems, the complete text of intl/COPYING.LIB-2.0 from\n gettext-runtime 0.12 can be found in ‘/usr/share/common-licenses/LGPL-2’\n and the text of intl/COPYING.LIB-2.1 can be found in\n ‘/usr/share/common-licenses/LGPL-2.1’.\n .\n po/Makevars consists mostly of helpful comments and does not contain a\n copyright and license notice.\n\nFiles: COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1\nCopyright: © 1989, 1991, 1999, 2007 Free Software Foundation, Inc.\nLicense: noderivs\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\nFiles: debian/*\nCopyright: 2009-2012, Jonathan Nieder\nLicense: PD-debian\n The Debian packaging files are in the public domain.\n You may freely use, modify, distribute, and relicense them.\n\nLicense: LGPL-2.1+\n This program is free software; you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation; either version 2.1, or (at your option)\n any later version.\n .\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU Lesser General Public License for more details.\n .\n You should have received a copy of the GNU Lesser General Public License along\n with this program; if not, write to the Free Software Foundation,\n Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n .\n On Debian systems, the complete text of the GNU Lesser General Public\n License version 2.1 can be found in ‘/usr/share/common-licenses/LGPL-2.1’.\n\nLicense: GPL-2\n Permission to use, copy, modify, and distribute this software and its\n documentation under the terms of the GNU General Public License is\n hereby granted. No representations are made about the suitability of\n this software for any purpose. It is provided \"as is\" without express\n or implied warranty. See the GNU General Public License for more\n details.\n .\n Documents produced by doxygen are derivative works derived from the\n input used in their production; they are not affected by this license.\n .\n On Debian systems, the complete text of the version of the GNU General\n Public License distributed with Doxygen can be found in\n ‘/usr/share/common-licenses/GPL-2’.\n\nLicense: GPL-2+\n This program is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation; either version 2, or (at your option)\n any later version.\n .\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU General Public License for more details.\n .\n You should have received a copy of the GNU General Public License along\n with this program; if not, write to the Free Software Foundation,\n Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n .\n On Debian systems, the complete text of the GNU General Public License\n version 2 can be found in ‘/usr/share/common-licenses/GPL-2’.\n\nLicense: Autoconf\n This program is free software: you can redistribute it and/or modify it\n under the terms of the GNU General Public License as published by the\n Free Software Foundation, either version 3 of the License, or (at your\n option) any later version.\n .\n This program is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n Public License for more details.\n .\n You should have received a copy of the GNU General Public License along\n with this program. If not, see <http://www.gnu.org/licenses/>.\n .\n As a special exception, the respective Autoconf Macro's copyright owner\n gives unlimited permission to copy, distribute and modify the configure\n scripts that are the output of Autoconf when processing the Macro. You\n need not follow the terms of the GNU General Public License when using\n or distributing such scripts, even though portions of the text of the\n Macro appear in them. The GNU General Public License (GPL) does govern\n all other use of the material that constitutes the Autoconf Macro.\n .\n This special exception to the GPL applies to versions of the Autoconf\n Macro released by the Autoconf Archive. When you make and distribute a\n modified version of the Autoconf Macro, you may extend this special\n exception to the GPL to apply to your modified version as well.\n .\n On Debian systems, the complete text of the GNU General Public\n License version 3 can be found in ‘/usr/share/common-licenses/GPL-3’.\n\nLicense: permissive-fsf\n This file is free software; the Free Software Foundation\n gives unlimited permission to copy and/or distribute it,\n with or without modifications, as long as this notice is preserved.\n\nLicense: permissive-nowarranty\n Copying and distribution of this file, with or without modification,\n are permitted in any medium without royalty provided the copyright\n notice and this notice are preserved.  This file is offered as-is,\n without warranty of any kind.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/microsoft",
    "content": "LICENSE AGREEMENT FOR MICROSOFT PRODUCTS"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/python",
    "content": "This package was put together by Klee Dienes <klee@debian.org> from \nsources from ftp.python.org:/pub/python, based on the Debianization by \nthe previous maintainers Bernd S. Brentrup <bsb@uni-muenster.de> and \nBruce Perens. Current maintainer is Matthias Klose <doko@debian.org>. \n\nIt was downloaded from http://python.org/\n\nCopyright:\n\nUpstream Author: Guido van Rossum <guido@cwi.nl> and others.\n\nLicense:\n\nThe following text includes the Python license and licenses and\nacknowledgements for incorporated software. The licenses can be read\nin the HTML and texinfo versions of the documentation as well, after\ninstalling the pythonx.y-doc package. Licenses for files not licensed\nunder the Python Licenses are found at the end of this file.\n\n\nPython License\n==============\n\nA. HISTORY OF THE SOFTWARE\n==========================\n\nPython was created in the early 1990s by Guido van Rossum at Stichting\nMathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands\nas a successor of a language called ABC.  Guido remains Python's\nprincipal author, although it includes many contributions from others.\n\nIn 1995, Guido continued his work on Python at the Corporation for\nNational Research Initiatives (CNRI, see http://www.cnri.reston.va.us)\nin Reston, Virginia where he released several versions of the\nsoftware.\n\nIn May 2000, Guido and the Python core development team moved to\nBeOpen.com to form the BeOpen PythonLabs team.  In October of the same\nyear, the PythonLabs team moved to Digital Creations (now Zope\nCorporation, see http://www.zope.com).  In 2001, the Python Software\nFoundation (PSF, see http://www.python.org/psf/) was formed, a\nnon-profit organization created specifically to own Python-related\nIntellectual Property.  Zope Corporation is a sponsoring member of\nthe PSF.\n\nAll Python releases are Open Source (see http://www.opensource.org for\nthe Open Source Definition).  Historically, most, but not all, Python\nreleases have also been GPL-compatible; the table below summarizes\nthe various releases.\n\n    Release         Derived     Year        Owner       GPL-\n                    from                                compatible? (1)\n\n    0.9.0 thru 1.2              1991-1995   CWI         yes\n    1.3 thru 1.5.2  1.2         1995-1999   CNRI        yes\n    1.6             1.5.2       2000        CNRI        no\n    2.0             1.6         2000        BeOpen.com  no\n    1.6.1           1.6         2001        CNRI        yes (2)\n    2.1             2.0+1.6.1   2001        PSF         no\n    2.0.1           2.0+1.6.1   2001        PSF         yes\n    2.1.1           2.1+2.0.1   2001        PSF         yes\n    2.2             2.1.1       2001        PSF         yes\n    2.1.2           2.1.1       2002        PSF         yes\n    2.1.3           2.1.2       2002        PSF         yes\n    2.2.1           2.2         2002        PSF         yes\n    2.2.2           2.2.1       2002        PSF         yes\n    2.2.3           2.2.2       2003        PSF         yes\n    2.3             2.2.2       2002-2003   PSF         yes\n    2.3.1           2.3         2002-2003   PSF         yes\n    2.3.2           2.3.1       2002-2003   PSF         yes\n    2.3.3           2.3.2       2002-2003   PSF         yes\n    2.3.4           2.3.3       2004        PSF         yes\n    2.3.5           2.3.4       2005        PSF         yes\n    2.4             2.3         2004        PSF         yes\n    2.4.1           2.4         2005        PSF         yes\n    2.4.2           2.4.1       2005        PSF         yes\n    2.4.3           2.4.2       2006        PSF         yes\n    2.5             2.4         2006        PSF         yes\n    2.5.1           2.5         2007        PSF         yes\n    2.5.2           2.5.1       2008        PSF         yes\n    2.5.3           2.5.2       2008        PSF         yes\n    2.6             2.5         2008        PSF         yes\n    2.6.1           2.6         2008        PSF         yes\n    2.6.2           2.6.1       2009        PSF         yes\n    2.6.3           2.6.2       2009        PSF         yes\n    2.6.4           2.6.3       2009        PSF         yes\n    2.6.5           2.6.4       2010        PSF         yes\n    2.7             2.6         2010        PSF         yes\n\nFootnotes:\n\n(1) GPL-compatible doesn't mean that we're distributing Python under\n    the GPL.  All Python licenses, unlike the GPL, let you distribute\n    a modified version without making your changes open source.  The\n    GPL-compatible licenses make it possible to combine Python with\n    other software that is released under the GPL; the others don't.\n\n(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,\n    because its license has a choice of law clause.  According to\n    CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1\n    is \"not incompatible\" with the GPL.\n\nThanks to the many outside volunteers who have worked under Guido's\ndirection to make these releases possible.\n\n\nB. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON\n===============================================================\n\nPYTHON SOFTWARE FOUNDATION LICENSE VERSION 2\n--------------------------------------------\n\n1. This LICENSE AGREEMENT is between the Python Software Foundation\n(\"PSF\"), and the Individual or Organization (\"Licensee\") accessing and\notherwise using this software (\"Python\") in source or binary form and\nits associated documentation.\n\n2. Subject to the terms and conditions of this License Agreement, PSF\nhereby grants Licensee a nonexclusive, royalty-free, world-wide\nlicense to reproduce, analyze, test, perform and/or display publicly,\nprepare derivative works, distribute, and otherwise use Python\nalone or in any derivative version, provided, however, that PSF's\nLicense Agreement and PSF's notice of copyright, i.e., \"Copyright (c)\n2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; \nAll Rights Reserved\" are retained in Python alone or in any derivative \nversion prepared by Licensee.\n\n3. In the event Licensee prepares a derivative work that is based on\nor incorporates Python or any part thereof, and wants to make\nthe derivative work available to others as provided herein, then\nLicensee hereby agrees to include in any such work a brief summary of\nthe changes made to Python.\n\n4. PSF is making Python available to Licensee on an \"AS IS\"\nbasis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR\nIMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND\nDISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS\nFOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT\nINFRINGE ANY THIRD PARTY RIGHTS.\n\n5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON\nFOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS\nA RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,\nOR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\n\n6. This License Agreement will automatically terminate upon a material\nbreach of its terms and conditions.\n\n7. Nothing in this License Agreement shall be deemed to create any\nrelationship of agency, partnership, or joint venture between PSF and\nLicensee.  This License Agreement does not grant permission to use PSF\ntrademarks or trade name in a trademark sense to endorse or promote\nproducts or services of Licensee, or any third party.\n\n8. By copying, installing or otherwise using Python, Licensee\nagrees to be bound by the terms and conditions of this License\nAgreement.\n\n\nBEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0\n-------------------------------------------\n\nBEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1\n\n1. This LICENSE AGREEMENT is between BeOpen.com (\"BeOpen\"), having an\noffice at 160 Saratoga Avenue, Santa Clara, CA 95051, and the\nIndividual or Organization (\"Licensee\") accessing and otherwise using\nthis software in source or binary form and its associated\ndocumentation (\"the Software\").\n\n2. Subject to the terms and conditions of this BeOpen Python License\nAgreement, BeOpen hereby grants Licensee a non-exclusive,\nroyalty-free, world-wide license to reproduce, analyze, test, perform\nand/or display publicly, prepare derivative works, distribute, and\notherwise use the Software alone or in any derivative version,\nprovided, however, that the BeOpen Python License is retained in the\nSoftware, alone or in any derivative version prepared by Licensee.\n\n3. BeOpen is making the Software available to Licensee on an \"AS IS\"\nbasis.  BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR\nIMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND\nDISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS\nFOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT\nINFRINGE ANY THIRD PARTY RIGHTS.\n\n4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE\nSOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS\nAS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY\nDERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\n\n5. This License Agreement will automatically terminate upon a material\nbreach of its terms and conditions.\n\n6. This License Agreement shall be governed by and interpreted in all\nrespects by the law of the State of California, excluding conflict of\nlaw provisions.  Nothing in this License Agreement shall be deemed to\ncreate any relationship of agency, partnership, or joint venture\nbetween BeOpen and Licensee.  This License Agreement does not grant\npermission to use BeOpen trademarks or trade names in a trademark\nsense to endorse or promote products or services of Licensee, or any\nthird party.  As an exception, the \"BeOpen Python\" logos available at\nhttp://www.pythonlabs.com/logos.html may be used according to the\npermissions granted on that web page.\n\n7. By copying, installing or otherwise using the software, Licensee\nagrees to be bound by the terms and conditions of this License\nAgreement.\n\n\nCNRI LICENSE AGREEMENT FOR PYTHON 1.6.1\n---------------------------------------\n\n1. This LICENSE AGREEMENT is between the Corporation for National\nResearch Initiatives, having an office at 1895 Preston White Drive,\nReston, VA 20191 (\"CNRI\"), and the Individual or Organization\n(\"Licensee\") accessing and otherwise using Python 1.6.1 software in\nsource or binary form and its associated documentation.\n\n2. Subject to the terms and conditions of this License Agreement, CNRI\nhereby grants Licensee a nonexclusive, royalty-free, world-wide\nlicense to reproduce, analyze, test, perform and/or display publicly,\nprepare derivative works, distribute, and otherwise use Python 1.6.1\nalone or in any derivative version, provided, however, that CNRI's\nLicense Agreement and CNRI's notice of copyright, i.e., \"Copyright (c)\n1995-2001 Corporation for National Research Initiatives; All Rights\nReserved\" are retained in Python 1.6.1 alone or in any derivative\nversion prepared by Licensee.  Alternately, in lieu of CNRI's License\nAgreement, Licensee may substitute the following text (omitting the\nquotes): \"Python 1.6.1 is made available subject to the terms and\nconditions in CNRI's License Agreement.  This Agreement together with\nPython 1.6.1 may be located on the Internet using the following\nunique, persistent identifier (known as a handle): 1895.22/1013.  This\nAgreement may also be obtained from a proxy server on the Internet\nusing the following URL: http://hdl.handle.net/1895.22/1013\".\n\n3. In the event Licensee prepares a derivative work that is based on\nor incorporates Python 1.6.1 or any part thereof, and wants to make\nthe derivative work available to others as provided herein, then\nLicensee hereby agrees to include in any such work a brief summary of\nthe changes made to Python 1.6.1.\n\n4. CNRI is making Python 1.6.1 available to Licensee on an \"AS IS\"\nbasis.  CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR\nIMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND\nDISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS\nFOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT\nINFRINGE ANY THIRD PARTY RIGHTS.\n\n5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON\n1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS\nA RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,\nOR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\n\n6. This License Agreement will automatically terminate upon a material\nbreach of its terms and conditions.\n\n7. This License Agreement shall be governed by the federal\nintellectual property law of the United States, including without\nlimitation the federal copyright law, and, to the extent such\nU.S. federal law does not apply, by the law of the Commonwealth of\nVirginia, excluding Virginia's conflict of law provisions.\nNotwithstanding the foregoing, with regard to derivative works based\non Python 1.6.1 that incorporate non-separable material that was\npreviously distributed under the GNU General Public License (GPL), the\nlaw of the Commonwealth of Virginia shall govern this License\nAgreement only as to issues arising under or with respect to\nParagraphs 4, 5, and 7 of this License Agreement.  Nothing in this\nLicense Agreement shall be deemed to create any relationship of\nagency, partnership, or joint venture between CNRI and Licensee.  This\nLicense Agreement does not grant permission to use CNRI trademarks or\ntrade name in a trademark sense to endorse or promote products or\nservices of Licensee, or any third party.\n\n8. By clicking on the \"ACCEPT\" button where indicated, or by copying,\ninstalling or otherwise using Python 1.6.1, Licensee agrees to be\nbound by the terms and conditions of this License Agreement.\n\n        ACCEPT\n\n\nCWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\n--------------------------------------------------\n\nCopyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,\nThe Netherlands.  All rights reserved.\n\nPermission to use, copy, modify, and distribute this software and its\ndocumentation for any purpose and without fee is hereby granted,\nprovided that the above copyright notice appear in all copies and that\nboth that copyright notice and this permission notice appear in\nsupporting documentation, and that the name of Stichting Mathematisch\nCentrum or CWI not be used in advertising or publicity pertaining to\ndistribution of the software without specific, written prior\npermission.\n\nSTICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO\nTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE\nFOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT\nOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n\nLicenses and Acknowledgements for Incorporated Software\n=======================================================\n\nMersenne Twister\n----------------\n\nThe `_random' module includes code based on a download from\n`http://www.math.keio.ac.jp/~matumoto/MT2002/emt19937ar.html'.  The\nfollowing are the verbatim comments from the original code:\n\n     A C-program for MT19937, with initialization improved 2002/1/26.\n     Coded by Takuji Nishimura and Makoto Matsumoto.\n\n     Before using, initialize the state by using init_genrand(seed)\n     or init_by_array(init_key, key_length).\n\n     Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n     All rights reserved.\n\n     Redistribution and use in source and binary forms, with or without\n     modification, are permitted provided that the following conditions\n     are met:\n\n      1. Redistributions of source code must retain the above copyright\n         notice, this list of conditions and the following disclaimer.\n\n      2. Redistributions in binary form must reproduce the above copyright\n         notice, this list of conditions and the following disclaimer in the\n         documentation and/or other materials provided with the distribution.\n\n      3. The names of its contributors may not be used to endorse or promote\n         products derived from this software without specific prior written\n         permission.\n\n     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n     \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n     A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT\n     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n     TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n     PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n     LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n     NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n     Any feedback is very welcome.\n     http://www.math.keio.ac.jp/matumoto/emt.html\n     email: matumoto@math.keio.ac.jp\n\n\nSockets\n-------\n\nThe `socket' module uses the functions, `getaddrinfo', and\n`getnameinfo', which are coded in separate source files from the WIDE\nProject, `http://www.wide.ad.jp/about/index.html'.\n\n     Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.\n     All rights reserved.\n\n     Redistribution and use in source and binary forms, with or without\n     modification, are permitted provided that the following conditions\n     are met:\n     1. Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n     2. Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n     3. Neither the name of the project nor the names of its contributors\n        may be used to endorse or promote products derived from this software\n        without specific prior written permission.\n\n     THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND\n     GAI_ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n     ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE\n     FOR GAI_ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n     INTERRUPTION) HOWEVER CAUSED AND ON GAI_ANY THEORY OF LIABILITY, WHETHER\n     IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n     ARISING IN GAI_ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n     OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\nFloating point exception control\n--------------------------------\n\nThe source for the `fpectl' module includes the following notice:\n\n     ---------------------------------------------------------------------  \n    /                       Copyright (c) 1996.                           \\ \n   |          The Regents of the University of California.                 |\n   |                        All rights reserved.                           |\n   |                                                                       |\n   |   Permission to use, copy, modify, and distribute this software for   |\n   |   any purpose without fee is hereby granted, provided that this en-   |\n   |   tire notice is included in all copies of any software which is or   |\n   |   includes  a  copy  or  modification  of  this software and in all   |\n   |   copies of the supporting documentation for such software.           |\n   |                                                                       |\n   |   This  work was produced at the University of California, Lawrence   |\n   |   Livermore National Laboratory under  contract  no.  W-7405-ENG-48   |\n   |   between  the  U.S.  Department  of  Energy and The Regents of the   |\n   |   University of California for the operation of UC LLNL.              |\n   |                                                                       |\n   |                              DISCLAIMER                               |\n   |                                                                       |\n   |   This  software was prepared as an account of work sponsored by an   |\n   |   agency of the United States Government. Neither the United States   |\n   |   Government  nor the University of California nor any of their em-   |\n   |   ployees, makes any warranty, express or implied, or  assumes  any   |\n   |   liability  or  responsibility  for the accuracy, completeness, or   |\n   |   usefulness of any information,  apparatus,  product,  or  process   |\n   |   disclosed,   or  represents  that  its  use  would  not  infringe   |\n   |   privately-owned rights. Reference herein to any specific  commer-   |\n   |   cial  products,  process,  or  service  by trade name, trademark,   |\n   |   manufacturer, or otherwise, does not  necessarily  constitute  or   |\n   |   imply  its endorsement, recommendation, or favoring by the United   |\n   |   States Government or the University of California. The views  and   |\n   |   opinions  of authors expressed herein do not necessarily state or   |\n   |   reflect those of the United States Government or  the  University   |\n   |   of  California,  and shall not be used for advertising or product   |\n    \\  endorsement purposes.                                              / \n     ---------------------------------------------------------------------\n\n\nCookie management\n-----------------\n\nThe `Cookie' module contains the following notice:\n\n      Copyright 2000 by Timothy O'Malley <timo@alum.mit.edu>\n\n                     All Rights Reserved\n\n      Permission to use, copy, modify, and distribute this software\n      and its documentation for any purpose and without fee is hereby\n      granted, provided that the above copyright notice appear in all\n      copies and that both that copyright notice and this permission\n      notice appear in supporting documentation, and that the name of\n      Timothy O'Malley  not be used in advertising or publicity\n      pertaining to distribution of the software without specific, written\n      prior permission.\n\n      Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS\n      SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n      AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR\n      ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n      WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\n      WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\n      ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n      PERFORMANCE OF THIS SOFTWARE.\n\n\nExecution tracing\n-----------------\n\nThe `trace' module contains the following notice:\n\n      portions copyright 2001, Autonomous Zones Industries, Inc., all rights...\n      err...  reserved and offered to the public under the terms of the\n      Python 2.2 license.\n      Author: Zooko O'Whielacronx\n      http://zooko.com/\n      mailto:zooko@zooko.com\n\n      Copyright 2000, Mojam Media, Inc., all rights reserved.\n      Author: Skip Montanaro\n\n      Copyright 1999, Bioreason, Inc., all rights reserved.\n      Author: Andrew Dalke\n\n      Copyright 1995-1997, Automatrix, Inc., all rights reserved.\n      Author: Skip Montanaro\n\n      Copyright 1991-1995, Stichting Mathematisch Centrum, all rights reserved.\n\n      Permission to use, copy, modify, and distribute this Python software and\n      its associated documentation for any purpose without fee is hereby\n      granted, provided that the above copyright notice appears in all copies,\n      and that both that copyright notice and this permission notice appear in\n      supporting documentation, and that the name of neither Automatrix,\n      Bioreason or Mojam Media be used in advertising or publicity pertaining\n      to distribution of the software without specific, written prior\n      permission.\n\n\nUUencode and UUdecode functions\n-------------------------------\n\nThe `uu' module contains the following notice:\n\n      Copyright 1994 by Lance Ellinghouse\n      Cathedral City, California Republic, United States of America.\n                             All Rights Reserved\n      Permission to use, copy, modify, and distribute this software and its\n      documentation for any purpose and without fee is hereby granted,\n      provided that the above copyright notice appear in all copies and that\n      both that copyright notice and this permission notice appear in\n      supporting documentation, and that the name of Lance Ellinghouse\n      not be used in advertising or publicity pertaining to distribution\n      of the software without specific, written prior permission.\n      LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO\n      THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n      FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE CENTRUM BE LIABLE\n      FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n      WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n      ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT\n      OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n      Modified by Jack Jansen, CWI, July 1995:\n      - Use binascii module to do the actual line-by-line conversion\n        between ascii and binary. This results in a 1000-fold speedup. The C\n        version is still 5 times faster, though.\n      - Arguments more compliant with python standard\n\n\nXML Remote Procedure Calls\n--------------------------\n\nThe `xmlrpclib' module contains the following notice:\n\n          The XML-RPC client interface is\n\n      Copyright (c) 1999-2002 by Secret Labs AB\n      Copyright (c) 1999-2002 by Fredrik Lundh\n\n      By obtaining, using, and/or copying this software and/or its\n      associated documentation, you agree that you have read, understood,\n      and will comply with the following terms and conditions:\n\n      Permission to use, copy, modify, and distribute this software and\n      its associated documentation for any purpose and without fee is\n      hereby granted, provided that the above copyright notice appears in\n      all copies, and that both that copyright notice and this permission\n      notice appear in supporting documentation, and that the name of\n      Secret Labs AB or the author not be used in advertising or publicity\n      pertaining to distribution of the software without specific, written\n      prior permission.\n\n      SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD\n      TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-\n      ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR\n      BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY\n      DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\n      WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\n      ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE\n      OF THIS SOFTWARE.\n\nLicenses for Software linked to\n===============================\n\nNote that the choice of GPL compatibility outlined above doesn't extend\nto modules linked to particular libraries, since they change the\neffective License of the module binary.\n\n\nGNU Readline\n------------\n\nThe 'readline' module makes use of GNU Readline.\n\n      The GNU Readline Library is free software; you can redistribute it\n      and/or modify it under the terms of the GNU General Public License as\n      published by the Free Software Foundation; either version 2, or (at\n      your option) any later version.\n\n      On Debian systems, you can find the complete statement in\n      /usr/share/doc/readline-common/copyright'. A copy of the GNU General\n      Public License is available in /usr/share/common-licenses/GPL-2'.\n\n\nOpenSSL\n-------\n\nThe '_ssl' module makes use of OpenSSL.\n\n      The OpenSSL toolkit stays under a dual license, i.e. both the\n      conditions of the OpenSSL License and the original SSLeay license\n      apply to the toolkit. Actually both licenses are BSD-style Open\n      Source licenses. Note that both licenses are incompatible with\n      the GPL.\n\n      On Debian systems, you can find the complete license text in\n      /usr/share/doc/openssl/copyright'.\n\n\nFiles with other licenses than the Python License\n-------------------------------------------------\n\nFiles: Lib/profile.py Lib/pstats.py\nCopyright: Disney Enterprises, Inc.  All Rights Reserved.\nLicense: # Licensed to PSF under a Contributor Agreement\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n  either express or implied.  See the License for the specific language\n  overning permissions and limitations under the License.\n\n  On Debian systems, the Apache 2.0 license can be found in\n  /usr/share/common-licenses/Apache-2.0.\n\nFiles: Modules/zlib/*\nCopyright: (C) 1995-2010 Jean-loup Gailly and Mark Adler\nLicense: This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n\n  Jean-loup Gailly        Mark Adler\n  jloup@gzip.org          madler@alumni.caltech.edu\n\n If you use the zlib library in a product, we would appreciate *not* receiving\n lengthy legal documents to sign.  The sources are provided for free but without\n warranty of any kind.  The library has been entirely written by Jean-loup\n Gailly and Mark Adler; it does not include third-party code.\n\nFiles: Modules/_ctypes/libffi/*\nCopyright: Copyright (C) 1996-2009 Red Hat, Inc and others.\nLicense: Permission is hereby granted, free of charge, to any person obtaining\n   a copy of this software and associated documentation files (the\n   ``Software''), to deal in the Software without restriction, including\n   without limitation the rights to use, copy, modify, merge, publish,\n   distribute, sublicense, and/or sell copies of the Software, and to\n   permit persons to whom the Software is furnished to do so, subject to\n   the following conditions:\n\n   The above copyright notice and this permission notice shall be included\n   in all copies or substantial portions of the Software.\n\n   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n   DEALINGS IN THE SOFTWARE.\n\n   Documentation:\n   Permission is granted to copy, distribute and/or modify this document\n   under the terms of the GNU General Public License as published by the\n   Free Software Foundation; either version 2, or (at your option) any\n   later version.  A copy of the license is included in the\n   section entitled ``GNU General Public License''.\n\nFiles: Modules/expat/*\nCopyright: Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd\n  and Clark Cooper\n  Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers\nLicense: Permission is hereby granted, free of charge, to any person obtaining\n  a copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to\n  permit persons to whom the Software is furnished to do so, subject to\n  the following conditions:\n \n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n \n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nFiles: Misc/python-mode.el\nCopyright: Copyright (C) 1992,1993,1994  Tim Peters\nLicense: This software is provided as-is, without express or implied\n        warranty.  Permission to use, copy, modify, distribute or sell this\n        software, without fee, for any purpose and by any individual or\n        organization, is hereby granted, provided that the above copyright\n        notice and this paragraph appear in all copies.\n\nFiles: PC/_subprocess.c\nCopyright: Copyright (c) 2004 by Fredrik Lundh <fredrik@pythonware.com>\n        Copyright (c) 2004 by Secret Labs AB, http://www.pythonware.com\n        Copyright (c) 2004 by Peter Astrand <astrand@lysator.liu.se>\nLicense:\n * Permission to use, copy, modify, and distribute this software and\n * its associated documentation for any purpose and without fee is\n * hereby granted, provided that the above copyright notice appears in\n * all copies, and that both that copyright notice and this permission\n * notice appear in supporting documentation, and that the name of the\n * authors not be used in advertising or publicity pertaining to\n * distribution of the software without specific, written prior\n * permission.\n *\n * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\n * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.\n * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,\n * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION\n * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\nFiles: PC/winsound.c\nCopyright: Copyright (c) 1999 Toby Dickenson\nLicense:  * Permission to use this software in any way is granted without\n * fee, provided that the copyright notice above appears in all\n * copies. This software is provided \"as is\" without any warranty.\n */\n\n/* Modified by Guido van Rossum */\n/* Beep added by Mark Hammond */\n/* Win9X Beep and platform identification added by Uncle Timmy */\n\nFiles: Lib/ensurepip/_bundled/setuptools-*.whl\nLicense: see above, some license as Python.\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl\nCopyright: Copyright © 2008-2013 The pip developers:\n    Alex Grönholm\n    Alex Morega\n    Alexandre Conrad\n    Andrey Bulgakov\n    Antti Kaihola\n    Armin Ronacher\n    Aziz Köksal\n    Ben Rosser\n    Brian Rosner\n    Carl Meyer\n    Chris McDonough\n    Christian Oudard\n    Clay McClure\n    Cody Soyland\n    Daniel Holth\n    Dave Abrahams\n    David (d1b)\n    Dmitry Gladkov\n    Donald Stufft\n    Francesco\n    Geoffrey Lehée\n    Georgi Valkov\n    Hugo Lopes Tavares\n    Ian Bicking\n    Igor Sobreira\n    Ionel Maries Cristian\n    Jakub Vysoky\n    James Cleveland\n    Jannis Leidel\n    Jay Graves\n    John-Scott Atlakson\n    Jon Parise\n    Jonas Nockert\n    Josh Bronson\n    Kamal Bin Mustafa\n    Kelsey Hightower\n    Kenneth Belitzky\n    Kumar McMillan\n    Luke Macken\n    Masklinn\n    Marc Abramowitz\n    Marcus Smith\n    Markus Hametner\n    Matt Maker\n    Maxime R.\n    Miguel Araujo\n    Nick Stenning\n    Nowell Strite\n    Oliver Tonnhofer\n    Olivier Girardot\n    Patrick Jenkins\n    Paul Moore\n    Paul Nasrat\n    Paul Oswald\n    Paul van der Linden\n    Peter Waller\n    Phil Whelan\n    Piet Delport\n    Przemek Wrzos\n    Qiangning Hong\n    Rafael Caricio\n    Rene Dudfield\n    Roey Berman\n    Ronny Pfannschmidt\n    Rory McCann\n    Simon Cross\n    Stavros Korokithakis\n    Thomas Fenzl\n    Thomas Johansson\n    Vinay Sajip\n    Vitaly Babiy\n    W Trevor King\n    Wil Tan\n    Hsiaoming Yang\nLicense: Expat\n    Permission is hereby granted, free of charge, to any person obtaining\n    a copy of this software and associated documentation files (the\n    \"Software\"), to deal in the Software without restriction, including\n    without limitation the rights to use, copy, modify, merge, publish,\n    distribute, sublicense, and/or sell copies of the Software, and to\n    permit persons to whom the Software is furnished to do so, subject to\n    the following conditions:\n    .\n    The above copyright notice and this permission notice shall be\n    included in all copies or substantial portions of the Software.\n    .\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/ipaddress.py\nCopyright: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Python Software Foundation; All Rights Reserved\n           2007 Google Inc.\nLicense: PSF-2\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/retrying.py\nCopyright: (c) 2013-2014, <ray@blacklocus.com>\n           (c) 2014, Derek Wilson <dwilson@domaintools.com>\n           (c) 2014, Alex Kuang <akuang@bizo.com>\nLicense: Apache-2\n\nLicense: Apache-2\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n .\n    http://www.apache.org/licenses/LICENSE-2.0\n .\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n .\n On Debian-based systems the full text of the Apache version 2.0 license\n can be found in /usr/share/common-licenses/Apache-2.0.\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/six.py\nCopyright: Copyright (c) 2010-2014 Benjamin Peterson\nLicense: Expat\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/cachecontrol\nCopyright: 2015 Eric Larson\nLicense: Apache-2.0\n Copyright 2015 Eric Larson\n .\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n .\n     http://www.apache.org/licenses/LICENSE-2.0\n .\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied.\n .\n See the License for the specific language governing permissions and\n limitations under the License.\n .\n On Debian systems, the license is available at\n /usr/share/common-licenses/Apache-2.0\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/colorama\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/distlib\nCopyright: Copyright (C) 2012-2013 The Python Software Foundation\n           Copyright (C) 2012-2013 Vinay Sajip\nLicense: Python\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/html5lib\nhtml5lib is Copyright (c) 2006 The Authors\nAuthors:\n  James Graham - james@hoppipolla.co.uk\n  Anne van Kesteren - annevankesteren@gmail.com\n  Lachlan Hunt - lachlan.hunt@lachy.id.au\n  Matt McDonald - kanashii@kanashii.ca\n  Sam Ruby - rubys@intertwingly.net\n  Ian Hickson (Google) - ian@hixie.ch\n  Thomas Broyer - t.broyer@gmail.com\n\nLicense:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/lockfile\nCopyright:\n    © 2014–2015 OpenStack Foundation <openstack-dev@lists.openstack.org>\n    © 2007–2012 Skip Montanaro <skip@pobox.com>\n    © 2008–2014 Ben Finney <ben+python@benfinney.id.au>\nLicense: Expat\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/packaging\nCopyright: Copyright (C) 2014 Donald Stufft\n           Copyright (C) 2012-2013 Vinay Sajip\nLicense: Apache-2.0\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/progress\nCopyright: Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com>\nLicense: ISC\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests\nCopyright: 2016, Kenneth Reitz\nLicense: Apache\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/*\nCopyright: 2008-2016, Andrey Petrov\nLicense: Expat\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py\nCopyright: 2009, Raymond Hettinger\nLicense: Expat\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py\nCopyright: 2011, Python Software Foundation\nLicense: PSF-2\n\nFiles: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/chardet/*\nCopyright: 2006-2008, Mark Pilgrim\n           2012-2013, Ian Cordasco\nLicense: LGPL-2.1+\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/copyright/trilicense",
    "content": "Files: src/js/editline/*\nCopyright: 1993, John Doe\n           1993, Joe Average\nLicense: MPL-1.1 or GPL-2 or LGPL-2.1\n\nLicense: MPL-1.1\n [LICENSE TEXT]\n\nLicense: GPL-2\n [LICENSE TEXT]\n\nLicense: LGPL-2.1\n [LICENSE TEXT]"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/dpkg/info/libpam-runtime.conffiles",
    "content": "/etc/pam.conf\n/etc/pam.d/other"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/dpkg/info/libpam-runtime.md5sums",
    "content": "55f905631797551d4d936a34c7e73474  lib/x86_64-linux-gnu/libz.so.1.2.11\ncede84bda30d2380217f97753c8ccf3a  usr/share/doc/zlib1g/changelog.Debian.gz\nf3c9dafa6da7992c47328b4464f6d122  usr/share/doc/zlib1g/changelog.gz\na4fae96070439a5209a62ae5b8017ab2  usr/share/doc/zlib1g/copyright"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/dpkg/info/libpam-runtime.preinst",
    "content": "# some shell script..."
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/dpkg/status",
    "content": "Package:\n\nPackage: libpam-runtime\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 1016\nMaintainer: Steve Langasek <vorlon@debian.org>\nArchitecture: all\nMulti-Arch: foreign\nSource: pam\nVersion: 1.1.8-3.6\nReplaces: libpam0g-dev, libpam0g-util\nDepends: debconf (>= 0.5) | debconf-2.0, debconf (>= 1.5.19) | cdebconf, libpam-modules (>= 1.0.1-6)\nConflicts: libpam0g-util\nConffiles:\n /etc/pam.conf 87fc76f18e98ee7d3848f6b81b3391e5\n /etc/pam.d/other 31aa7f2181889ffb00b87df4126d1701\nDescription: Runtime support for the PAM library\n Contains configuration files and  directories required for\n authentication  to work on Debian systems.  This package is required\n on almost all installations.\nHomepage: http://www.linux-pam.org/"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/dpkg/status.d/pkg-1.0",
    "content": "bogus package"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/opkg/info/pkg-1.0.control",
    "content": "bogus package\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/lib/opkg/status",
    "content": "bogus status\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/usr/share/doc/libpam-runtime/copyright",
    "content": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: auditd\nSource: https://people.redhat.com/sgrubb/audit/\n\nFiles: *\nCopyright: 2012-2016 Steve Grubb <sgrubb@redhat.com>\n           2006-2012 Rik Faith\nLicense: GPL-2\n\nFiles: src/libev/*\nCopyright: 2007-2009 Marc Alexamder Lehmann\nLicense: GPL-2\n\nFiles: lib/*\nCopyright: 2005-2008 Steve Grubb <sgrubb@redhat.com>\nLicense: LGPL-2.1\n  The audit daemon's library libaudit.* is released under LGPL\n  so that it may be linked with 3rd party software.\n  .\n  On Debian systems, refer to /usr/share/common-licenses/LGPL-2.1\n  for the complete text of the GNU Lesser General Public License.\n\nFiles: debian/*\nCopyright: 2007-2011 Philipp Matthias Hahn <pmhahn@debian.org>\n           2012-2016 Laurent Bigonville <bigon@debian.org>\nLicense: GPL-2\n\nLicense: GPL-2\n This package is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License version 2,\n as published by the Free Software Foundation.\n .\n This package is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU General Public License for more details.\n .\n You should have received a copy of the GNU General Public License\n along with this package; if not, write to the Free Software\n Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n .\n On Debian systems, the complete text of the GNU General\n Public License can be found in `/usr/share/common-licenses/GPL-1'.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/var/lib/dpkg/status",
    "content": "bogus status"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/glob-paths/var/lib/dpkg/status.d/pkg-1.0",
    "content": "bogus package"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-distroless-deb/Dockerfile",
    "content": "FROM scratch\nCOPY . ."
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-distroless-deb/usr/share/doc/libsqlite3-0/copyright",
    "content": "Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: sqlite3\nSource: https://www.sqlite.org/cgi/src/dir?ci=trunk\n\nFiles: *\nCopyright: D. Richard Hipp <drh@hwaci.com>\nLicense: public-domain\n The files listed have been put on the public domain by the sqlite3\n contributors.\n\nFiles: debian/*\nCopyright: 2006-     Laszlo Boszormenyi (GCS) <gcs@debian.org>,\n 2005-2006 Tomas Fasth <tomfa@debian.org>,\n 2001-2005 Andreas Rottmann <rotty@debian.org>\nLicense: GPL-2+\n This program is free software; you can redistribute it and/or modify it\n under the terms of the GNU General Public License version 2 as published\n by the Free Software Foundation.\n .\n This program is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\n for more details.\n .\n You should have received a copy of the GNU General Public License along\n with this package; if not, write to the Free Software Foundation, Inc.,\n 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n .\n On Debian systems, the full text of the GNU General Public License\n version 2 can be found in the file `/usr/share/common-licenses/GPL-2'.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-distroless-deb/var/lib/dpkg/status.d/libsqlite3-0",
    "content": "Package: libsqlite3-0\nSource: sqlite3\nVersion: 3.34.1-3\nArchitecture: arm64\nMaintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>\nInstalled-Size: 1490\nDepends: libc6 (>= 2.29)\nBreaks: python-migrate (<< 0.11.0-4~), python3-migrate (<< 0.11.0-4~)\nSection: libs\nPriority: optional\nMulti-Arch: same\nHomepage: https://www.sqlite.org/\nDescription: SQLite 3 shared library\n SQLite is a C library that implements an SQL database engine.\n Programs that link with the SQLite library can have SQL database\n access without running a separate RDBMS process.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-distroless-deb/var/lib/dpkg/status.d/libsqlite3-0.md5sums",
    "content": "e11d70c96979a1328ae4e7e50542782b  usr/lib/aarch64-linux-gnu/libsqlite3.so.0.8.6\n9d8facc2fa9d2df52f1c7cb4e5fa4741  usr/share/doc/libsqlite3-0/README.Debian\na58942e742f5056be0595e6ba69a323f  usr/share/doc/libsqlite3-0/changelog.Debian.gz\n52317be84c3ca44b7888c6921131e37d  usr/share/doc/libsqlite3-0/changelog.gz\na856310354e6c8768e85b39ae838dd0a  usr/share/doc/libsqlite3-0/changelog.html.gz\nbe64db3e095486e5e105652c51199358  usr/share/doc/libsqlite3-0/copyright"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-distroless-deb/var/lib/dpkg/status.d/libsqlite3-0.preinst",
    "content": "# some shell script..."
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/Dockerfile",
    "content": "FROM scratch\nCOPY . ."
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/etc/os-release",
    "content": "PRETTY_NAME=\"Debian GNU/Linux 12 (bookworm)\"\nNAME=\"Debian GNU/Linux\"\nVERSION_ID=\"12\"\nVERSION=\"12 (bookworm)\"\nVERSION_CODENAME=bookworm\nID=debian\nHOME_URL=\"https://www.debian.org/\"\nSUPPORT_URL=\"https://www.debian.org/support\"\nBUG_REPORT_URL=\"https://bugs.debian.org/\""
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/usr/share/doc/libpam-runtime/copyright",
    "content": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: auditd\nSource: https://people.redhat.com/sgrubb/audit/\n\nFiles: *\nCopyright: 2012-2016 Steve Grubb <sgrubb@redhat.com>\n           2006-2012 Rik Faith\nLicense: GPL-2\n\nFiles: src/libev/*\nCopyright: 2007-2009 Marc Alexamder Lehmann\nLicense: GPL-2\n\nFiles: lib/*\nCopyright: 2005-2008 Steve Grubb <sgrubb@redhat.com>\nLicense: LGPL-2.1\n  The audit daemon's library libaudit.* is released under LGPL\n  so that it may be linked with 3rd party software.\n  .\n  On Debian systems, refer to /usr/share/common-licenses/LGPL-2.1\n  for the complete text of the GNU Lesser General Public License.\n\nFiles: debian/*\nCopyright: 2007-2011 Philipp Matthias Hahn <pmhahn@debian.org>\n           2012-2016 Laurent Bigonville <bigon@debian.org>\nLicense: GPL-2\n\nLicense: GPL-2\n This package is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License version 2,\n as published by the Free Software Foundation.\n .\n This package is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n GNU General Public License for more details.\n .\n You should have received a copy of the GNU General Public License\n along with this package; if not, write to the Free Software\n Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA\n .\n On Debian systems, the complete text of the GNU General\n Public License can be found in `/usr/share/common-licenses/GPL-1'.\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/var/lib/dpkg/info/libpam-runtime.conffiles",
    "content": "/etc/pam.conf\n/etc/pam.d/other"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/var/lib/dpkg/info/libpam-runtime.md5sums",
    "content": "55f905631797551d4d936a34c7e73474  lib/x86_64-linux-gnu/libz.so.1.2.11\ncede84bda30d2380217f97753c8ccf3a  usr/share/doc/zlib1g/changelog.Debian.gz\nf3c9dafa6da7992c47328b4464f6d122  usr/share/doc/zlib1g/changelog.gz\na4fae96070439a5209a62ae5b8017ab2  usr/share/doc/zlib1g/copyright"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/var/lib/dpkg/info/libpam-runtime.preinst",
    "content": "# some shell script..."
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-dpkg/var/lib/dpkg/status",
    "content": "Package:\n\nPackage: libpam-runtime\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 1016\nMaintainer: Steve Langasek <vorlon@debian.org>\nArchitecture: all\nMulti-Arch: foreign\nSource: pam\nVersion: 1.1.8-3.6\nReplaces: libpam0g-dev, libpam0g-util\nDepends: debconf (>= 0.5) | debconf-2.0, debconf (>= 1.5.19) | cdebconf, libpam-modules (>= 1.0.1-6)\nConflicts: libpam0g-util\nConffiles:\n /etc/pam.conf 87fc76f18e98ee7d3848f6b81b3391e5\n /etc/pam.d/other 31aa7f2181889ffb00b87df4126d1701\nDescription: Runtime support for the PAM library\n Contains configuration files and  directories required for\n authentication  to work on Debian systems.  This package is required\n on almost all installations.\nHomepage: http://www.linux-pam.org/"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/image-single-dpkg/Dockerfile",
    "content": "FROM ubuntu:22.04 AS downloader\n\nRUN apt-get update && apt-get install -y curl\n\nRUN curl -o zlib1g.deb http://archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g_1.3.dfsg-3.1ubuntu2.1_amd64.deb\n\nFROM scratch\n\nCOPY --from=downloader /zlib1g.deb /zlib1g.deb\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/info/util-linux.conffiles",
    "content": "/etc/default/hwclock\n/etc/init.d/hwclock.sh\n/etc/pam.d/runuser\n/etc/pam.d/runuser-l\n/etc/pam.d/su\n/etc/pam.d/su-l"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/info/zlib1g.md5sums",
    "content": "55f905631797551d4d936a34c7e73474  lib/x86_64-linux-gnu/libz.so.1.2.11\ncede84bda30d2380217f97753c8ccf3a  usr/share/doc/zlib1g/changelog.Debian.gz\nf3c9dafa6da7992c47328b4464f6d122  usr/share/doc/zlib1g/changelog.gz\na4fae96070439a5209a62ae5b8017ab2  usr/share/doc/zlib1g/copyright"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/coreutils-relationships",
    "content": "Package: coreutils\nEssential: yes\nStatus: install ok installed\nPriority: required\nSection: utils\nInstalled-Size: 20272\nMaintainer: Michael Stone <mstone@debian.org>\nArchitecture: arm64\nMulti-Arch: foreign\nVersion: 9.1-1\nPre-Depends: libacl1 (>= 2.2.23), libattr1 (>= 1:2.4.44), libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg1), libselinux1 (>= 3.1~)\n\nPackage: libacl1\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 101\nMaintainer: Guillem Jover <guillem@debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: acl\nVersion: 2.3.1-3\nDepends: libc6 (>= 2.33)\n\nPackage: libc6\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 23127\nMaintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: glibc\nVersion: 2.36-9+deb12u1\nDepends: libgcc-s1\nRecommends: libidn2-0 (>= 2.0.5~)\nSuggests: glibc-doc, debconf | debconf-2.0, libc-l10n, locales, libnss-nis, libnss-nisplus\nBreaks: aide (<< 0.17.3-4+b3), busybox (<< 1.30.1-6), chrony (<< 4.2-3~), fakechroot (<< 2.19-3.5), firefox (<< 91~), firefox-esr (<< 91~), gnumach-image-1.8-486 (<< 2:1.8+git20210923~), gnumach-image-1.8-486-dbg (<< 2:1.8+git20210923~), gnumach-image-1.8-xen-486 (<< 2:1.8+git20210923~), gnumach-image-1.8-xen-486-dbg (<< 2:1.8+git20210923~), hurd (<< 1:0.9.git20220301-2), ioquake3 (<< 1.36+u20200211.f2c61c1~dfsg-2~), iraf-fitsutil (<< 2018.07.06-4), libgegl-0.4-0 (<< 0.4.18), libtirpc1 (<< 0.2.3), locales (<< 2.36), locales-all (<< 2.36), macs (<< 2.2.7.1-3~), nocache (<< 1.1-1~), nscd (<< 2.36), openarena (<< 0.8.8+dfsg-4~), openssh-server (<< 1:8.1p1-5), python3-iptables (<< 1.0.0-2), r-cran-later (<< 0.7.5+dfsg-2), tinydns (<< 1:1.05-14), valgrind (<< 1:3.19.0-1~), wcc (<< 0.0.2+dfsg-3)\n\nPackage: libgcc-s1\nProtected: yes\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 147\nMaintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: gcc-12\nVersion: 12.2.0-14\nReplaces: libgcc1 (<< 1:10)\nProvides: libgcc1 (= 1:12.2.0-14)\nDepends: gcc-12-base (= 12.2.0-14), libc6 (>= 2.35)\n\nPackage: gcc-12-base\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 100\nMaintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: gcc-12\nVersion: 12.2.0-14\nBreaks: gnat (<< 7)\n\nPackage: libattr1\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 99\nMaintainer: Guillem Jover <guillem@debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: attr\nVersion: 1:2.5.1-4\nDepends: libc6 (>= 2.17)\n\nPackage: libgmp10\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 855\nMaintainer: Debian Science Team <debian-science-maintainers@lists.alioth.debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: gmp\nVersion: 2:6.2.1+dfsg1-1.1\nDepends: libc6 (>= 2.17)\nBreaks: libmath-gmp-perl (<< 2.20-1), libmath-prime-util-gmp-perl (<< 0.51-2), postgresql-pgmp (<< 1.0.3-1)\n\nPackage: libselinux1\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 223\nMaintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: libselinux (3.4-1)\nVersion: 3.4-1+b6\nDepends: libc6 (>= 2.34), libpcre2-8-0 (>= 10.22)\n\nPackage: libpcre2-8-0\nStatus: install ok installed\nPriority: optional\nSection: libs\nInstalled-Size: 649\nMaintainer: Matthew Vernon <matthew@debian.org>\nArchitecture: arm64\nMulti-Arch: same\nSource: pcre2\nVersion: 10.42-1\nDepends: libc6 (>= 2.34)\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/corrupt",
    "content": "Pakij: apt\nStratus: install ok installed\nPrioority: required\nSection: admin\nInsterface to the configuration settings\n  * apt-key as an interface to manage authentication keys\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/deinstall",
    "content": "Package: linux-image-6.14.0-1012-aws\nStatus: install ok installed\nPriority: optional\nSection: kernel\nInstalled-Size: 15221\nMaintainer: Canonical Kernel Team <kernel-team@lists.ubuntu.com>\nArchitecture: amd64\nSource: linux-signed-aws-6.14\nVersion: 6.14.0-1012.12~24.04.1\nProvides: fuse-module, linux-image, spl-dkms, spl-modules, v4l2loopback-dkms, v4l2loopback-modules, zfs-dkms, zfs-modules\nDepends: kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-6.14.0-1012-aws\nRecommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo, initramfs-tools | linux-initramfs-tool\nSuggests: bpftool, linux-perf, linux-aws-6.14-doc-6.14.0 | linux-aws-6.14-source-6.14.0, linux-aws-6.14-tools, linux-headers-6.14.0-1012-aws\nConflicts: linux-image-unsigned-6.14.0-1012-aws\nDescription: Signed kernel image aws\n A kernel image for aws.  This version of it is signed with\n Canonical's signing key.\nBuilt-Using: linux-aws-6.14 (= 6.14.0-1012.12~24.04.1)\n\nPackage: linux-image-6.8.0-1029-aws\nStatus: deinstall ok config-files\nPriority: optional\nSection: kernel\nInstalled-Size: 14591\nMaintainer: Canonical Kernel Team <kernel-team@lists.ubuntu.com>\nArchitecture: amd64\nSource: linux-signed-aws\nVersion: 6.8.0-1029.31\nConfig-Version: 6.8.0-1029.31\nProvides: fuse-module, linux-image, spl-dkms, spl-modules, v4l2loopback-dkms, v4l2loopback-modules, zfs-dkms, zfs-modules\nDepends: kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-6.8.0-1029-aws\nRecommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo, initramfs-tools | linux-initramfs-tool\nSuggests: fdutils, linux-aws-doc-6.8.0 | linux-aws-source-6.8.0, linux-aws-tools, linux-headers-6.8.0-1029-aws\nConflicts: linux-image-unsigned-6.8.0-1029-aws\nDescription: Signed kernel image aws\n A kernel image for aws.  This version of it is signed with\n Canonical's signing key.\nBuilt-Using: linux-aws (= 6.8.0-1029.31)\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/doc-examples",
    "content": "Package: mutt\nVersion: 1.3.17-1\nDepends: libc6 (>= 2.2.1), default-mta | mail-transport-agent | not-installed\n\nPackage: made-up-package-1\nVersion: 1.0.0\nSource: glibc\nDepends: kernel-headers-2.2.10 [!hurd-i386],\n hurd-dev [hurd-i386], gnumach-dev [hurd-i386]\n\nPackage: made-up-package-2\nVersion: 2.0.0\nDepends:\n libluajit5.1-dev [i386 amd64 kfreebsd-i386 armel armhf powerpc mips],\n liblua5.1-dev [hurd-i386 ia64 kfreebsd-amd64 s390x sparc],\n\nPackage: made-up-package-3\nVersion: 3.0.0\nDepends: foo [i386], bar [amd64]\n\nPackage: made-up-package-4\nVersion: 3.0.0\nDepends: virtual-package-5\n\nPackage: made-up-package-5\nProvides: virtual-package-5 (=1.0)\n\nPackage: foo\n\nPackage: bar\n\nPackage: kernel-headers-2.2.10\n\nPackage: hurd-dev\n\nPackage: gnumach-dev\n\nPackage: default-mta\n\nPackage: mail-transport-agent\n\nPackage: libc6\n\nPackage: libluajit5.1-dev\n\nPackage: liblua5.1-dev\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/empty",
    "content": "Package:"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/installed-size-4KB",
    "content": "Package: apt\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 4KB\nMaintainer: APT Development Team <deity@lists.debian.org>\nArchitecture: amd64\nVersion: 1.8.2\nSource: apt-dev\nReplaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)\nProvides: apt-transport-https (= 1.8.2)\nDepends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, libapt-pkg5.0 (>= 1.7.0~alpha3~), libc6 (>= 2.15), libgcc1 (>= 1:3.0), libgnutls30 (>= 3.6.6), libseccomp2 (>= 1.0.1), libstdc++6 (>= 5.2)\nRecommends: ca-certificates\nSuggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base\nBreaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)\nConffiles:\nDescription: commandline package manager\n This package provides commandline tools for searching and\n managing as well as querying information about packages\n as a low-level access to all features of the libapt-pkg library.\n .\n These include:\n  * apt-get for retrieval of packages and information about them\n    from authenticated sources and for installation, upgrade and\n    removal of packages together with their dependencies\n  * apt-cache for querying available information about installed\n    as well as installable packages\n  * apt-cdrom to use removable media as a source for packages\n  * apt-config as an interface to the configuration settings\n  * apt-key as an interface to manage authentication keys\n\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/libpam-runtime",
    "content": "Package: libpam-runtime\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 876\nMaintainer: Sam Hartman <hartmans@debian.org>\nArchitecture: all\nMulti-Arch: foreign\nSource: pam\nVersion: 1.5.2-6+deb12u1\nReplaces: libpam0g-dev, libpam0g-util\nDepends: debconf1 (>= 0.5) | debconf-2.0, debconf2 (>= 1.5.19) | cdebconf, libpam-modules (>= 1.0.1-6)\nConflicts: libpam0g-util\n\nPackage: debconf1\n\nPackage: debconf2\n\nPackage: debconf-2.0\n\nPackage: cdebconf\n\nPackage: libpam-modules\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/multiple",
    "content": "Package:\n\nPackage: no-version\n\nPackage: tzdata\nStatus: install ok installed\nPriority: required\nSource: tzdata-dev\nSection: localization\nInstalled-Size: 3036\nMaintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>\nArchitecture: all\nMulti-Arch: foreign\nVersion: 2020a-0+deb10u1\nReplaces: libc0.1, libc0.3, libc6, libc6.1\nProvides: tzdata-buster\nDepends: debconf (>= 0.5) | debconf-2.0\nDescription: time zone and daylight-saving time data\n This package contains data required for the implementation of\n standard local time for many representative locations around the\n globe. It is updated periodically to reflect changes made by\n political bodies to time zone boundaries, UTC offsets, and\n daylight-saving rules.\nHomepage: https://www.iana.org/time-zones\n\nPackage: util-linux\nEssential: yes\nStatus: install ok installed\nPriority: required\nSection: utils\nInstalled-Size: 4327\nMaintainer: LaMont Jones <lamont@debian.org>\nArchitecture: amd64\nMulti-Arch: foreign\nVersion: 2.33.1-0.1\nReplaces: bash-completion (<< 1:2.8), initscripts (<< 2.88dsf-59.2~), login (<< 1:4.5-1.1~), mount (<< 2.29.2-3~), s390-tools (<< 2.2.0-1~), setpriv (<< 2.32.1-0.2~), sysvinit-utils (<< 2.88dsf-59.1~)\nDepends: fdisk, login (>= 1:4.5-1.1~)\nPre-Depends: libaudit1 (>= 1:2.2.1), libblkid1 (>= 2.31.1), libc6 (>= 2.25), libcap-ng0 (>= 0.7.9), libmount1 (>= 2.25), libpam0g (>= 0.99.7.1), libselinux1 (>= 2.6-3~), libsmartcols1 (>= 2.33), libsystemd0, libtinfo6 (>= 6), libudev1 (>= 183), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)\nSuggests: dosfstools, kbd | console-tools, util-linux-locales\nBreaks: bash-completion (<< 1:2.8), grml-debootstrap (<< 0.68), mount (<< 2.29.2-3~), s390-tools (<< 2.2.0-1~), setpriv (<< 2.32.1-0.2~), sysvinit-utils (<< 2.88dsf-59.4~)\nConffiles:\n /etc/default/hwclock 3916544450533eca69131f894db0ca12\n /etc/init.d/hwclock.sh 1ca5c0743fa797ffa364db95bb8d8d8e\n /etc/pam.d/runuser b8b44b045259525e0fae9e38fdb2aeeb\n /etc/pam.d/runuser-l 2106ea05877e8913f34b2c77fa02be45\n /etc/pam.d/su ce6dcfda3b190a27a455bb38a45ff34a\n /etc/pam.d/su-l 756fef5687fecc0d986e5951427b0c4f\nDescription: miscellaneous system utilities\n This package contains a number of important utilities, most of which\n are oriented towards maintenance of your system. Some of the more\n important utilities included in this package allow you to view kernel\n messages, create new filesystems, view block device information,\n interface with real time clock, etc.\n\n\n\n"
  },
  {
    "path": "syft/pkg/cataloger/debian/testdata/var/lib/dpkg/status.d/single",
    "content": "Package: apt\nStatus: install ok installed\nPriority: required\nSection: admin\nInstalled-Size: 4064\nMaintainer: APT Development Team <deity@lists.debian.org>\nArchitecture: amd64\nVersion: 1.8.2\nSource: apt-dev\nReplaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)\nProvides: apt-transport-https (= 1.8.2)\nDepends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, libapt-pkg5.0 (>= 1.7.0~alpha3~), libc6 (>= 2.15), libgcc1 (>= 1:3.0), libgnutls30 (>= 3.6.6), libseccomp2 (>= 1.0.1), libstdc++6 (>= 5.2)\nRecommends: ca-certificates\nSuggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base\nBreaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)\nConffiles:\n /etc/apt/apt.conf.d/01autoremove 76120d358bc9037bb6358e737b3050b5\n /etc/cron.daily/apt-compat 49e9b2cfa17849700d4db735d04244f3\n /etc/kernel/postinst.d/apt-auto-removal 4ad976a68f045517cf4696cec7b8aa3a\n /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3\nDescription: commandline package manager\n This package provides commandline tools for searching and\n managing as well as querying information about packages\n as a low-level access to all features of the libapt-pkg library.\n .\n These include:\n  * apt-get for retrieval of packages and information about them\n    from authenticated sources and for installation, upgrade and\n    removal of packages together with their dependencies\n  * apt-cache for querying available information about installed\n    as well as installable packages\n  * apt-cdrom to use removable media as a source for packages\n  * apt-config as an interface to the configuration settings\n  * apt-key as an interface to manage authentication keys\n\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/binary_cataloger.go",
    "content": "package dotnet\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// binary cataloger will search for .dll and .exe files and create packages based off of the version resources embedded\n// as a resource directory within the executable. If there is no evidence of a .NET runtime (a CLR header) then no\n// package will be created.\n//\n// Deprecated: use depsBinaryCataloger instead which combines the PE and deps.json data which yields more accurate results (will be removed in syft v2.0).\ntype binaryCataloger struct {\n}\n\nfunc (c binaryCataloger) Name() string {\n\treturn \"dotnet-portable-executable-cataloger\"\n}\n\nfunc (c binaryCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar unknowns error\n\tpeFiles, ldpeUnknownErr, err := findPEFiles(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif ldpeUnknownErr != nil {\n\t\tunknowns = unknown.Join(unknowns, ldpeUnknownErr)\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, pe := range peFiles {\n\t\tpkgs = append(pkgs, newDotnetBinaryPackage(pe.VersionResources, pe.Location))\n\t}\n\n\treturn pkgs, nil, unknowns\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  dotnet.CatalogerConfig:\n    fields:\n      - key: DepPackagesMustHaveDLL\n        description: DepPackagesMustHaveDLL allows for deps.json packages to be included only if there is a DLL on disk for that package.\n        app_key: dotnet.dep-packages-must-have-dll\n      - key: DepPackagesMustClaimDLL\n        description: DepPackagesMustClaimDLL allows for deps.json packages to be included only if there is a runtime/resource DLL claimed in the deps.json targets section. This does not require such claimed DLLs to exist on disk. The behavior of this\n        app_key: dotnet.dep-packages-must-claim-dll\n      - key: PropagateDLLClaimsToParents\n        description: PropagateDLLClaimsToParents allows for deps.json packages to be included if any child (transitive) package claims a DLL. This applies to both the claims configuration and evidence-on-disk configurations.\n        app_key: dotnet.propagate-dll-claims-to-parents\n      - key: RelaxDLLClaimsWhenBundlingDetected\n        description: RelaxDLLClaimsWhenBundlingDetected will look for indications of IL bundle tooling via deps.json package names and, if found (and this config option is enabled), will relax the DepPackagesMustClaimDLL value to `false` only in those cases.\n        app_key: dotnet.relax-dll-claims-when-bundling-detected\n      - key: ExcludeProjectReferences\n        description: ExcludeProjectReferences excludes packages with type \"project\" from deps.json output. These are internal project references, not external NuGet packages.\n        app_key: dotnet.exclude-project-references\ncatalogers:\n  - ecosystem: dotnet # MANUAL\n    name: dotnet-deps-binary-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - c#\n      - directory\n      - dotnet\n      - image\n      - installed\n      - language\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/*.deps.json'\n          - '**/*.dll'\n          - '**/*.exe'\n    metadata_types: # AUTO-GENERATED\n      - pkg.DotnetDepsEntry\n      - pkg.DotnetPortableExecutableEntry\n    package_types: # AUTO-GENERATED\n      - dotnet\n      - npm\n    json_schema_types: # AUTO-GENERATED\n      - DotnetDepsEntry\n      - DotnetPortableExecutableEntry\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: dotnet # MANUAL\n    name: dotnet-deps-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - deprecated\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/*.deps.json'\n    metadata_types: # AUTO-GENERATED\n      - pkg.DotnetDepsEntry\n    package_types: # AUTO-GENERATED\n      - dotnet\n    json_schema_types: # AUTO-GENERATED\n      - DotnetDepsEntry\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: dotnet # MANUAL\n    name: dotnet-packages-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/dotnet/cataloger.go\n      function: NewDotnetPackagesLockCataloger\n    selectors: # AUTO-GENERATED\n      - c#\n      - declared\n      - directory\n      - dotnet\n      - image\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseDotnetPackagesLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/packages.lock.json'\n        metadata_types: # AUTO-GENERATED\n          - pkg.DotnetPackagesLockEntry\n        package_types: # AUTO-GENERATED\n          - dotnet\n        json_schema_types: # AUTO-GENERATED\n          - DotnetPackagesLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n              - build\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - DotnetPackagesLockEntry.ContentHash\n  - ecosystem: dotnet # MANUAL\n    name: dotnet-portable-executable-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    config: dotnet.CatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - deprecated\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/*.dll'\n          - '**/*.exe'\n    metadata_types: # AUTO-GENERATED\n      - pkg.DotnetPortableExecutableEntry\n    package_types: # AUTO-GENERATED\n      - dotnet\n    json_schema_types: # AUTO-GENERATED\n      - DotnetPortableExecutableEntry\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default: []\n      - name: dependency.edges\n        default: \"\"\n      - name: dependency.kinds\n        default: []\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/cataloger.go",
    "content": "package dotnet\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewDotnetDepsBinaryCataloger returns a cataloger based on PE and deps.json file contents.\nfunc NewDotnetDepsBinaryCataloger(config CatalogerConfig) pkg.Cataloger {\n\treturn &depsBinaryCataloger{\n\t\tconfig: config,\n\t}\n}\n\n// NewDotnetDepsCataloger returns a cataloger based on deps.json file contents.\n//\n// Deprecated: use NewDotnetDepsBinaryCataloger instead which combines the PE and deps.json data which yields more accurate results (will be removed in syft v2.0).\nfunc NewDotnetDepsCataloger() pkg.Cataloger {\n\treturn &depsCataloger{}\n}\n\n// NewDotnetPortableExecutableCataloger returns a cataloger based on PE file contents.\n//\n// Deprecated: use NewDotnetDepsBinaryCataloger instead which combines the PE and deps.json data which yields more accurate results (will be removed in syft v2.0).\nfunc NewDotnetPortableExecutableCataloger() pkg.Cataloger {\n\treturn &binaryCataloger{}\n}\n\n// NewDotnetPackagesLockCataloger returns a cataloger based on packages.lock.json files.\nfunc NewDotnetPackagesLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"dotnet-packages-lock-cataloger\").\n\t\tWithParserByGlobs(parseDotnetPackagesLock, \"**/packages.lock.json\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/cataloger_test.go",
    "content": "package dotnet\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tfixture   string\n\t\tcataloger pkg.Cataloger\n\t\texpected  []string\n\t}{\n\t\t{\n\t\t\tname:      \"obtain deps.json files\",\n\t\t\tfixture:   \"testdata/glob-paths\",\n\t\t\tcataloger: NewDotnetDepsCataloger(),\n\t\t\texpected: []string{\n\t\t\t\t\"src/something.deps.json\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"obtain portable executable files\",\n\t\t\tfixture:   \"testdata/glob-paths\",\n\t\t\tcataloger: NewDotnetPortableExecutableCataloger(),\n\t\t\texpected: []string{\n\t\t\t\t\"src/something.dll\",\n\t\t\t\t\"src/something.exe\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"obtain combined files\",\n\t\t\tfixture:   \"testdata/glob-paths\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpected: []string{\n\t\t\t\t\"src/something.deps.json\",\n\t\t\t\t\"src/something.dll\",\n\t\t\t\t\"src/something.exe\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, test.cataloger)\n\t\t})\n\t}\n}\n\nfunc TestCataloger(t *testing.T) {\n\n\tnet8AppExpectedDepPkgsWithoutUnpairedDlls := []string{\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Newtonsoft.Json @ 13.0.3 (/app/dotnetapp.deps.json)\",\n\t\t\"dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t}\n\t// app packages (from deps.json)\n\tnet8AppExpectedDepPkgs := []string{\n\t\t\"Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t}\n\tnet8AppExpectedDepPkgs = append(net8AppExpectedDepPkgs, net8AppExpectedDepPkgsWithoutUnpairedDlls...)\n\n\tvar net8AppExpectedDepPkgsWithRuntime []string\n\tnet8AppExpectedDepPkgsWithRuntime = append(net8AppExpectedDepPkgsWithRuntime, net8AppExpectedDepPkgs...)\n\tnet8AppExpectedDepPkgsWithRuntime = append(net8AppExpectedDepPkgsWithRuntime, \"Microsoft.NETCore.App.Runtime.linux-x64 @ 8.0.14 (/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.14/Microsoft.NETCore.App.deps.json)\")\n\n\t// app binaries (always dlls)\n\tnet8AppBinaryOnlyPkgs := []string{\n\t\t\"Humanizer @ 2.14.1.48190 (/app/Humanizer.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/af/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ar/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/az/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/bg/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/bn-BD/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/cs/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/da/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/de/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/el/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/es/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/fa/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/fi-FI/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/fr-BE/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/fr/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/he/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/hr/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/hu/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/hy/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/id/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/is/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/it/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ja/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ku/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/lv/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/nb-NO/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/nb/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/nl/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/pl/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/pt/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ro/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ru/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/sk/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/sl/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/sr-Latn/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/sr/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/sv/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/tr/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/uk/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/uz-Cyrl-UZ/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/uz-Latn-UZ/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/vi/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/zh-CN/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/zh-Hans/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/zh-Hant/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ko-KR/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/ms-MY/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/mt/Humanizer.resources.dll)\",\n\t\t\"Humanizer @ 2.14.1.48190 (/app/th-TH/Humanizer.resources.dll)\",\n\t\t\"Json.NET @ 13.0.3.27908 (/app/Newtonsoft.Json.dll)\",\n\t\t\"dotnetapp @ 1.0.0.0 (/app/dotnetapp.dll)\",\n\t}\n\n\t// app relationships (from deps.json)\n\tnet8AppDepOnlyRelationshipsWithoutHumanizer := []string{\n\t\t\"Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\"Newtonsoft.Json @ 13.0.3 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t}\n\n\tvar net8AppDepOnlyRelationships []string\n\thumanizerToAppDepsRelationship := \"Humanizer @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\"\n\tnet8AppDepOnlyRelationships = append(net8AppDepOnlyRelationships, net8AppDepOnlyRelationshipsWithoutHumanizer...)\n\tnet8AppDepOnlyRelationships = append(net8AppDepOnlyRelationships, humanizerToAppDepsRelationship)\n\n\tvar net8AppDepOnlyRelationshipsWithRuntime []string\n\tnet8AppDepOnlyRelationshipsWithRuntime = append(net8AppDepOnlyRelationshipsWithRuntime, net8AppDepOnlyRelationships...)\n\tnet8AppDepOnlyRelationshipsWithRuntime = append(net8AppDepOnlyRelationshipsWithRuntime,\n\t\t\"Microsoft.NETCore.App.Runtime.linux-x64 @ 8.0.14 (/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.14/Microsoft.NETCore.App.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t)\n\n\tvar net8AppExpectedDepRelationships []string\n\tnet8AppExpectedDepRelationships = append(net8AppExpectedDepRelationships, net8AppDepOnlyRelationships...)\n\n\tvar net8AppExpectedDepSelfContainedPkgs []string\n\tnet8AppExpectedDepSelfContainedPkgs = append(net8AppExpectedDepSelfContainedPkgs, net8AppExpectedDepPkgs...)\n\tnet8AppExpectedDepSelfContainedPkgs = append(net8AppExpectedDepSelfContainedPkgs,\n\t\t// add the CLR runtime packages...\n\t\t\"runtimepack.Microsoft.NETCore.App.Runtime.win-x64 @ 8.0.14 (/app/dotnetapp.deps.json)\",\n\t)\n\n\tvar net8AppExpectedDepsSelfContainedPkgs []string\n\tnet8AppExpectedDepsSelfContainedPkgs = append(net8AppExpectedDepsSelfContainedPkgs, net8AppExpectedDepPkgs...)\n\tnet8AppExpectedDepsSelfContainedPkgs = append(net8AppExpectedDepsSelfContainedPkgs,\n\t\t// add the CLR runtime packages...\n\t\t\"runtimepack.Microsoft.NETCore.App.Runtime.win-x64 @ 8.0.14 (/app/dotnetapp.deps.json)\",\n\t)\n\n\tvar net8AppExpectedDepSelfContainedRelationships []string\n\tnet8AppExpectedDepSelfContainedRelationships = append(net8AppExpectedDepSelfContainedRelationships, net8AppDepOnlyRelationships...)\n\tnet8AppExpectedDepSelfContainedRelationships = append(net8AppExpectedDepSelfContainedRelationships,\n\t\t// add the CLR runtime relationships...\n\t\t\"runtimepack.Microsoft.NETCore.App.Runtime.win-x64 @ 8.0.14 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t)\n\n\tvar net8AppExpectedBinarySelfContainedPkgs []string\n\tnet8AppExpectedBinarySelfContainedPkgs = append(net8AppExpectedBinarySelfContainedPkgs, net8AppBinaryOnlyPkgs...)\n\tnet8AppExpectedBinarySelfContainedPkgs = append(net8AppExpectedBinarySelfContainedPkgs,\n\t\t// include the runtime...\n\t\t\".NET Runtime @ 8,0,1425,11118 (/app/coreclr.dll)\",\n\t\t\"Microsoft.CSharp @ 8.0.1425.11118 (/app/Microsoft.CSharp.dll)\",\n\t\t\"Microsoft.VisualBasic @ 8.0.1425.11118 (/app/Microsoft.VisualBasic.dll)\",\n\t\t\"Microsoft.VisualBasic.Core @ 13.0.1425.11118 (/app/Microsoft.VisualBasic.Core.dll)\",\n\t\t\"Microsoft.Win32.Primitives @ 8.0.1425.11118 (/app/Microsoft.Win32.Primitives.dll)\",\n\t\t\"Microsoft.Win32.Registry @ 8.0.1425.11118 (/app/Microsoft.Win32.Registry.dll)\",\n\t\t\"System @ 8.0.1425.11118 (/app/System.dll)\",\n\t\t\"System.AppContext @ 8.0.1425.11118 (/app/System.AppContext.dll)\",\n\t\t\"System.Buffers @ 8.0.1425.11118 (/app/System.Buffers.dll)\",\n\t\t\"System.Collections @ 8.0.1425.11118 (/app/System.Collections.dll)\",\n\t\t\"System.Collections.Concurrent @ 8.0.1425.11118 (/app/System.Collections.Concurrent.dll)\",\n\t\t\"System.Collections.Immutable @ 8.0.1425.11118 (/app/System.Collections.Immutable.dll)\",\n\t\t\"System.Collections.NonGeneric @ 8.0.1425.11118 (/app/System.Collections.NonGeneric.dll)\",\n\t\t\"System.Collections.Specialized @ 8.0.1425.11118 (/app/System.Collections.Specialized.dll)\",\n\t\t\"System.ComponentModel @ 8.0.1425.11118 (/app/System.ComponentModel.dll)\",\n\t\t\"System.ComponentModel.Annotations @ 8.0.1425.11118 (/app/System.ComponentModel.Annotations.dll)\",\n\t\t\"System.ComponentModel.DataAnnotations @ 8.0.1425.11118 (/app/System.ComponentModel.DataAnnotations.dll)\",\n\t\t\"System.ComponentModel.EventBasedAsync @ 8.0.1425.11118 (/app/System.ComponentModel.EventBasedAsync.dll)\",\n\t\t\"System.ComponentModel.Primitives @ 8.0.1425.11118 (/app/System.ComponentModel.Primitives.dll)\",\n\t\t\"System.ComponentModel.TypeConverter @ 8.0.1425.11118 (/app/System.ComponentModel.TypeConverter.dll)\",\n\t\t\"System.Configuration @ 8.0.1425.11118 (/app/System.Configuration.dll)\",\n\t\t\"System.Console @ 8.0.1425.11118 (/app/System.Console.dll)\",\n\t\t\"System.Core @ 8.0.1425.11118 (/app/System.Core.dll)\",\n\t\t\"System.Data @ 8.0.1425.11118 (/app/System.Data.dll)\",\n\t\t\"System.Data.Common @ 8.0.1425.11118 (/app/System.Data.Common.dll)\",\n\t\t\"System.Data.DataSetExtensions @ 8.0.1425.11118 (/app/System.Data.DataSetExtensions.dll)\",\n\t\t\"System.Diagnostics.Contracts @ 8.0.1425.11118 (/app/System.Diagnostics.Contracts.dll)\",\n\t\t\"System.Diagnostics.Debug @ 8.0.1425.11118 (/app/System.Diagnostics.Debug.dll)\",\n\t\t\"System.Diagnostics.DiagnosticSource @ 8.0.1425.11118 (/app/System.Diagnostics.DiagnosticSource.dll)\",\n\t\t\"System.Diagnostics.FileVersionInfo @ 8.0.1425.11118 (/app/System.Diagnostics.FileVersionInfo.dll)\",\n\t\t\"System.Diagnostics.Process @ 8.0.1425.11118 (/app/System.Diagnostics.Process.dll)\",\n\t\t\"System.Diagnostics.StackTrace @ 8.0.1425.11118 (/app/System.Diagnostics.StackTrace.dll)\",\n\t\t\"System.Diagnostics.TextWriterTraceListener @ 8.0.1425.11118 (/app/System.Diagnostics.TextWriterTraceListener.dll)\",\n\t\t\"System.Diagnostics.Tools @ 8.0.1425.11118 (/app/System.Diagnostics.Tools.dll)\",\n\t\t\"System.Diagnostics.TraceSource @ 8.0.1425.11118 (/app/System.Diagnostics.TraceSource.dll)\",\n\t\t\"System.Diagnostics.Tracing @ 8.0.1425.11118 (/app/System.Diagnostics.Tracing.dll)\",\n\t\t\"System.Drawing @ 8.0.1425.11118 (/app/System.Drawing.dll)\",\n\t\t\"System.Drawing.Primitives @ 8.0.1425.11118 (/app/System.Drawing.Primitives.dll)\",\n\t\t\"System.Dynamic.Runtime @ 8.0.1425.11118 (/app/System.Dynamic.Runtime.dll)\",\n\t\t\"System.Formats.Asn1 @ 8.0.1425.11118 (/app/System.Formats.Asn1.dll)\",\n\t\t\"System.Formats.Tar @ 8.0.1425.11118 (/app/System.Formats.Tar.dll)\",\n\t\t\"System.Globalization @ 8.0.1425.11118 (/app/System.Globalization.dll)\",\n\t\t\"System.Globalization.Calendars @ 8.0.1425.11118 (/app/System.Globalization.Calendars.dll)\",\n\t\t\"System.Globalization.Extensions @ 8.0.1425.11118 (/app/System.Globalization.Extensions.dll)\",\n\t\t\"System.IO @ 8.0.1425.11118 (/app/System.IO.dll)\",\n\t\t\"System.IO.Compression @ 8.0.1425.11118 (/app/System.IO.Compression.dll)\",\n\t\t\"System.IO.Compression.Brotli @ 8.0.1425.11118 (/app/System.IO.Compression.Brotli.dll)\",\n\t\t\"System.IO.Compression.FileSystem @ 8.0.1425.11118 (/app/System.IO.Compression.FileSystem.dll)\",\n\t\t\"System.IO.Compression.ZipFile @ 8.0.1425.11118 (/app/System.IO.Compression.ZipFile.dll)\",\n\t\t\"System.IO.FileSystem @ 8.0.1425.11118 (/app/System.IO.FileSystem.dll)\",\n\t\t\"System.IO.FileSystem.AccessControl @ 8.0.1425.11118 (/app/System.IO.FileSystem.AccessControl.dll)\",\n\t\t\"System.IO.FileSystem.DriveInfo @ 8.0.1425.11118 (/app/System.IO.FileSystem.DriveInfo.dll)\",\n\t\t\"System.IO.FileSystem.Primitives @ 8.0.1425.11118 (/app/System.IO.FileSystem.Primitives.dll)\",\n\t\t\"System.IO.FileSystem.Watcher @ 8.0.1425.11118 (/app/System.IO.FileSystem.Watcher.dll)\",\n\t\t\"System.IO.IsolatedStorage @ 8.0.1425.11118 (/app/System.IO.IsolatedStorage.dll)\",\n\t\t\"System.IO.MemoryMappedFiles @ 8.0.1425.11118 (/app/System.IO.MemoryMappedFiles.dll)\",\n\t\t\"System.IO.Pipes @ 8.0.1425.11118 (/app/System.IO.Pipes.dll)\",\n\t\t\"System.IO.Pipes.AccessControl @ 8.0.1425.11118 (/app/System.IO.Pipes.AccessControl.dll)\",\n\t\t\"System.IO.UnmanagedMemoryStream @ 8.0.1425.11118 (/app/System.IO.UnmanagedMemoryStream.dll)\",\n\t\t\"System.Linq @ 8.0.1425.11118 (/app/System.Linq.dll)\",\n\t\t\"System.Linq.Expressions @ 8.0.1425.11118 (/app/System.Linq.Expressions.dll)\",\n\t\t\"System.Linq.Parallel @ 8.0.1425.11118 (/app/System.Linq.Parallel.dll)\",\n\t\t\"System.Linq.Queryable @ 8.0.1425.11118 (/app/System.Linq.Queryable.dll)\",\n\t\t\"System.Memory @ 8.0.1425.11118 (/app/System.Memory.dll)\",\n\t\t\"System.Net @ 8.0.1425.11118 (/app/System.Net.dll)\",\n\t\t\"System.Net.Http @ 8.0.1425.11118 (/app/System.Net.Http.dll)\",\n\t\t\"System.Net.Http.Json @ 8.0.1425.11118 (/app/System.Net.Http.Json.dll)\",\n\t\t\"System.Net.HttpListener @ 8.0.1425.11118 (/app/System.Net.HttpListener.dll)\",\n\t\t\"System.Net.Mail @ 8.0.1425.11118 (/app/System.Net.Mail.dll)\",\n\t\t\"System.Net.NameResolution @ 8.0.1425.11118 (/app/System.Net.NameResolution.dll)\",\n\t\t\"System.Net.NetworkInformation @ 8.0.1425.11118 (/app/System.Net.NetworkInformation.dll)\",\n\t\t\"System.Net.Ping @ 8.0.1425.11118 (/app/System.Net.Ping.dll)\",\n\t\t\"System.Net.Primitives @ 8.0.1425.11118 (/app/System.Net.Primitives.dll)\",\n\t\t\"System.Net.Quic @ 8.0.1425.11118 (/app/System.Net.Quic.dll)\",\n\t\t\"System.Net.Requests @ 8.0.1425.11118 (/app/System.Net.Requests.dll)\",\n\t\t\"System.Net.Security @ 8.0.1425.11118 (/app/System.Net.Security.dll)\",\n\t\t\"System.Net.ServicePoint @ 8.0.1425.11118 (/app/System.Net.ServicePoint.dll)\",\n\t\t\"System.Net.Sockets @ 8.0.1425.11118 (/app/System.Net.Sockets.dll)\",\n\t\t\"System.Net.WebClient @ 8.0.1425.11118 (/app/System.Net.WebClient.dll)\",\n\t\t\"System.Net.WebHeaderCollection @ 8.0.1425.11118 (/app/System.Net.WebHeaderCollection.dll)\",\n\t\t\"System.Net.WebProxy @ 8.0.1425.11118 (/app/System.Net.WebProxy.dll)\",\n\t\t\"System.Net.WebSockets @ 8.0.1425.11118 (/app/System.Net.WebSockets.dll)\",\n\t\t\"System.Net.WebSockets.Client @ 8.0.1425.11118 (/app/System.Net.WebSockets.Client.dll)\",\n\t\t\"System.Numerics @ 8.0.1425.11118 (/app/System.Numerics.dll)\",\n\t\t\"System.Numerics.Vectors @ 8.0.1425.11118 (/app/System.Numerics.Vectors.dll)\",\n\t\t\"System.ObjectModel @ 8.0.1425.11118 (/app/System.ObjectModel.dll)\",\n\t\t\"System.Private.CoreLib @ 8.0.1425.11118 (/app/System.Private.CoreLib.dll)\",\n\t\t\"System.Private.DataContractSerialization @ 8.0.1425.11118 (/app/System.Private.DataContractSerialization.dll)\",\n\t\t\"System.Private.Uri @ 8.0.1425.11118 (/app/System.Private.Uri.dll)\",\n\t\t\"System.Private.Xml @ 8.0.1425.11118 (/app/System.Private.Xml.dll)\",\n\t\t\"System.Private.Xml.Linq @ 8.0.1425.11118 (/app/System.Private.Xml.Linq.dll)\",\n\t\t\"System.Reflection @ 8.0.1425.11118 (/app/System.Reflection.dll)\",\n\t\t\"System.Reflection.DispatchProxy @ 8.0.1425.11118 (/app/System.Reflection.DispatchProxy.dll)\",\n\t\t\"System.Reflection.Emit @ 8.0.1425.11118 (/app/System.Reflection.Emit.dll)\",\n\t\t\"System.Reflection.Emit.ILGeneration @ 8.0.1425.11118 (/app/System.Reflection.Emit.ILGeneration.dll)\",\n\t\t\"System.Reflection.Emit.Lightweight @ 8.0.1425.11118 (/app/System.Reflection.Emit.Lightweight.dll)\",\n\t\t\"System.Reflection.Extensions @ 8.0.1425.11118 (/app/System.Reflection.Extensions.dll)\",\n\t\t\"System.Reflection.Metadata @ 8.0.1425.11118 (/app/System.Reflection.Metadata.dll)\",\n\t\t\"System.Reflection.Primitives @ 8.0.1425.11118 (/app/System.Reflection.Primitives.dll)\",\n\t\t\"System.Reflection.TypeExtensions @ 8.0.1425.11118 (/app/System.Reflection.TypeExtensions.dll)\",\n\t\t\"System.Resources.Reader @ 8.0.1425.11118 (/app/System.Resources.Reader.dll)\",\n\t\t\"System.Resources.ResourceManager @ 8.0.1425.11118 (/app/System.Resources.ResourceManager.dll)\",\n\t\t\"System.Resources.Writer @ 8.0.1425.11118 (/app/System.Resources.Writer.dll)\",\n\t\t\"System.Runtime @ 8.0.1425.11118 (/app/System.Runtime.dll)\",\n\t\t\"System.Runtime.CompilerServices.Unsafe @ 8.0.1425.11118 (/app/System.Runtime.CompilerServices.Unsafe.dll)\",\n\t\t\"System.Runtime.CompilerServices.VisualC @ 8.0.1425.11118 (/app/System.Runtime.CompilerServices.VisualC.dll)\",\n\t\t\"System.Runtime.Extensions @ 8.0.1425.11118 (/app/System.Runtime.Extensions.dll)\",\n\t\t\"System.Runtime.Handles @ 8.0.1425.11118 (/app/System.Runtime.Handles.dll)\",\n\t\t\"System.Runtime.InteropServices @ 8.0.1425.11118 (/app/System.Runtime.InteropServices.dll)\",\n\t\t\"System.Runtime.InteropServices.JavaScript @ 8.0.1425.11118 (/app/System.Runtime.InteropServices.JavaScript.dll)\",\n\t\t\"System.Runtime.InteropServices.RuntimeInformation @ 8.0.1425.11118 (/app/System.Runtime.InteropServices.RuntimeInformation.dll)\",\n\t\t\"System.Runtime.Intrinsics @ 8.0.1425.11118 (/app/System.Runtime.Intrinsics.dll)\",\n\t\t\"System.Runtime.Loader @ 8.0.1425.11118 (/app/System.Runtime.Loader.dll)\",\n\t\t\"System.Runtime.Numerics @ 8.0.1425.11118 (/app/System.Runtime.Numerics.dll)\",\n\t\t\"System.Runtime.Serialization @ 8.0.1425.11118 (/app/System.Runtime.Serialization.dll)\",\n\t\t\"System.Runtime.Serialization.Formatters @ 8.0.1425.11118 (/app/System.Runtime.Serialization.Formatters.dll)\",\n\t\t\"System.Runtime.Serialization.Json @ 8.0.1425.11118 (/app/System.Runtime.Serialization.Json.dll)\",\n\t\t\"System.Runtime.Serialization.Primitives @ 8.0.1425.11118 (/app/System.Runtime.Serialization.Primitives.dll)\",\n\t\t\"System.Runtime.Serialization.Xml @ 8.0.1425.11118 (/app/System.Runtime.Serialization.Xml.dll)\",\n\t\t\"System.Security @ 8.0.1425.11118 (/app/System.Security.dll)\",\n\t\t\"System.Security.AccessControl @ 8.0.1425.11118 (/app/System.Security.AccessControl.dll)\",\n\t\t\"System.Security.Claims @ 8.0.1425.11118 (/app/System.Security.Claims.dll)\",\n\t\t\"System.Security.Cryptography @ 8.0.1425.11118 (/app/System.Security.Cryptography.dll)\",\n\t\t\"System.Security.Cryptography.Algorithms @ 8.0.1425.11118 (/app/System.Security.Cryptography.Algorithms.dll)\",\n\t\t\"System.Security.Cryptography.Cng @ 8.0.1425.11118 (/app/System.Security.Cryptography.Cng.dll)\",\n\t\t\"System.Security.Cryptography.Csp @ 8.0.1425.11118 (/app/System.Security.Cryptography.Csp.dll)\",\n\t\t\"System.Security.Cryptography.Encoding @ 8.0.1425.11118 (/app/System.Security.Cryptography.Encoding.dll)\",\n\t\t\"System.Security.Cryptography.OpenSsl @ 8.0.1425.11118 (/app/System.Security.Cryptography.OpenSsl.dll)\",\n\t\t\"System.Security.Cryptography.Primitives @ 8.0.1425.11118 (/app/System.Security.Cryptography.Primitives.dll)\",\n\t\t\"System.Security.Cryptography.X509Certificates @ 8.0.1425.11118 (/app/System.Security.Cryptography.X509Certificates.dll)\",\n\t\t\"System.Security.Principal @ 8.0.1425.11118 (/app/System.Security.Principal.dll)\",\n\t\t\"System.Security.Principal.Windows @ 8.0.1425.11118 (/app/System.Security.Principal.Windows.dll)\",\n\t\t\"System.Security.SecureString @ 8.0.1425.11118 (/app/System.Security.SecureString.dll)\",\n\t\t\"System.ServiceModel.Web @ 8.0.1425.11118 (/app/System.ServiceModel.Web.dll)\",\n\t\t\"System.ServiceProcess @ 8.0.1425.11118 (/app/System.ServiceProcess.dll)\",\n\t\t\"System.Text.Encoding @ 8.0.1425.11118 (/app/System.Text.Encoding.dll)\",\n\t\t\"System.Text.Encoding.CodePages @ 8.0.1425.11118 (/app/System.Text.Encoding.CodePages.dll)\",\n\t\t\"System.Text.Encoding.Extensions @ 8.0.1425.11118 (/app/System.Text.Encoding.Extensions.dll)\",\n\t\t\"System.Text.Encodings.Web @ 8.0.1425.11118 (/app/System.Text.Encodings.Web.dll)\",\n\t\t\"System.Text.Json @ 8.0.1425.11118 (/app/System.Text.Json.dll)\",\n\t\t\"System.Text.RegularExpressions @ 8.0.1425.11118 (/app/System.Text.RegularExpressions.dll)\",\n\t\t\"System.Threading @ 8.0.1425.11118 (/app/System.Threading.dll)\",\n\t\t\"System.Threading.Channels @ 8.0.1425.11118 (/app/System.Threading.Channels.dll)\",\n\t\t\"System.Threading.Overlapped @ 8.0.1425.11118 (/app/System.Threading.Overlapped.dll)\",\n\t\t\"System.Threading.Tasks @ 8.0.1425.11118 (/app/System.Threading.Tasks.dll)\",\n\t\t\"System.Threading.Tasks.Dataflow @ 8.0.1425.11118 (/app/System.Threading.Tasks.Dataflow.dll)\",\n\t\t\"System.Threading.Tasks.Extensions @ 8.0.1425.11118 (/app/System.Threading.Tasks.Extensions.dll)\",\n\t\t\"System.Threading.Tasks.Parallel @ 8.0.1425.11118 (/app/System.Threading.Tasks.Parallel.dll)\",\n\t\t\"System.Threading.Thread @ 8.0.1425.11118 (/app/System.Threading.Thread.dll)\",\n\t\t\"System.Threading.ThreadPool @ 8.0.1425.11118 (/app/System.Threading.ThreadPool.dll)\",\n\t\t\"System.Threading.Timer @ 8.0.1425.11118 (/app/System.Threading.Timer.dll)\",\n\t\t\"System.Transactions @ 8.0.1425.11118 (/app/System.Transactions.dll)\",\n\t\t\"System.Transactions.Local @ 8.0.1425.11118 (/app/System.Transactions.Local.dll)\",\n\t\t\"System.ValueTuple @ 8.0.1425.11118 (/app/System.ValueTuple.dll)\",\n\t\t\"System.Web @ 8.0.1425.11118 (/app/System.Web.dll)\",\n\t\t\"System.Web.HttpUtility @ 8.0.1425.11118 (/app/System.Web.HttpUtility.dll)\",\n\t\t\"System.Windows @ 8.0.1425.11118 (/app/System.Windows.dll)\",\n\t\t\"System.Xml @ 8.0.1425.11118 (/app/System.Xml.dll)\",\n\t\t\"System.Xml.Linq @ 8.0.1425.11118 (/app/System.Xml.Linq.dll)\",\n\t\t\"System.Xml.ReaderWriter @ 8.0.1425.11118 (/app/System.Xml.ReaderWriter.dll)\",\n\t\t\"System.Xml.Serialization @ 8.0.1425.11118 (/app/System.Xml.Serialization.dll)\",\n\t\t\"System.Xml.XDocument @ 8.0.1425.11118 (/app/System.Xml.XDocument.dll)\",\n\t\t\"System.Xml.XPath @ 8.0.1425.11118 (/app/System.Xml.XPath.dll)\",\n\t\t\"System.Xml.XPath.XDocument @ 8.0.1425.11118 (/app/System.Xml.XPath.XDocument.dll)\",\n\t\t\"System.Xml.XmlDocument @ 8.0.1425.11118 (/app/System.Xml.XmlDocument.dll)\",\n\t\t\"System.Xml.XmlSerializer @ 8.0.1425.11118 (/app/System.Xml.XmlSerializer.dll)\",\n\t\t\"WindowsBase @ 8.0.1425.11118 (/app/WindowsBase.dll)\",\n\t\t\"mscorlib @ 8.0.1425.11118 (/app/mscorlib.dll)\",\n\t\t\"netstandard @ 8.0.1425.11118 (/app/netstandard.dll)\",\n\t)\n\n\tassertAllDepEntriesInEmbeddedExecutable := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\t// assert that all packages DO NOT have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetDepsEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetDepsEntry\")\n\t\t\t}\n\t\t\tif len(m.Executables) != 0 {\n\t\t\t\tt.Errorf(\"expected no executables for package %s, found %d\", p.Name, len(m.Executables))\n\t\t\t}\n\t\t}\n\n\t\tactual := extractMatchingPackage(t, \"Newtonsoft.Json\", pkgs)\n\t\texpected := pkg.Package{\n\t\t\tName:      \"Newtonsoft.Json\",\n\t\t\tVersion:   \"13.0.3\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/app/dotnetapp.exe\")), // important! not this is an exe\n\t\t\tLanguage:  pkg.Dotnet,\n\t\t\tType:      pkg.DotnetPkg,\n\t\t\tPURL:      \"pkg:nuget/Newtonsoft.Json@13.0.3\",\n\t\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\t\tName:        \"Newtonsoft.Json\",\n\t\t\t\tVersion:     \"13.0.3\",\n\t\t\t\tPath:        \"newtonsoft.json/13.0.3\",\n\t\t\t\tSha512:      \"sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\",\n\t\t\t\tHashPath:    \"newtonsoft.json.13.0.3.nupkg.sha512\",\n\t\t\t\tType:        \"package\",\n\t\t\t\tExecutables: nil, // important!\n\t\t\t},\n\t\t}\n\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\t}\n\n\tassertAllDepEntriesWithoutExecutables := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\t// assert that all packages DO NOT have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetDepsEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetDepsEntry\")\n\t\t\t}\n\t\t\tif len(m.Executables) != 0 {\n\t\t\t\tt.Errorf(\"expected no executables for package %s, found %d\", p.Name, len(m.Executables))\n\t\t\t}\n\t\t}\n\n\t\tactual := extractMatchingPackage(t, \"Newtonsoft.Json\", pkgs)\n\t\texpected := pkg.Package{\n\t\t\tName:      \"Newtonsoft.Json\",\n\t\t\tVersion:   \"13.0.3\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/app/dotnetapp.deps.json\")),\n\t\t\tLanguage:  pkg.Dotnet,\n\t\t\tType:      pkg.DotnetPkg,\n\t\t\tPURL:      \"pkg:nuget/Newtonsoft.Json@13.0.3\",\n\t\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\t\tName:        \"Newtonsoft.Json\",\n\t\t\t\tVersion:     \"13.0.3\",\n\t\t\t\tPath:        \"newtonsoft.json/13.0.3\",\n\t\t\t\tSha512:      \"sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\",\n\t\t\t\tHashPath:    \"newtonsoft.json.13.0.3.nupkg.sha512\",\n\t\t\t\tType:        \"package\",\n\t\t\t\tExecutables: nil, // important!\n\t\t\t},\n\t\t}\n\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\t}\n\n\tassertAllDepEntriesWithExecutables := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\t// assert that all packages have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetDepsEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetDepsEntry\")\n\t\t\t}\n\t\t\tif len(m.Executables) != 1 {\n\t\t\t\tt.Errorf(\"expected exactly one executable for package %s, found %d\", p.Name, len(m.Executables))\n\t\t\t}\n\t\t}\n\t}\n\n\tassertAlmostAllDepEntriesWithExecutables := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\t// assert that all packages have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetDepsEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetDepsEntry\")\n\t\t\t}\n\t\t\tif len(m.Executables) != 1 {\n\t\t\t\tif m.Name == \"Humanizer\" {\n\t\t\t\t\t// there is only one \"virtual\" package that doesn't have an actual DLL associated\n\t\t\t\t\tassert.Empty(t, m.Executables)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tt.Errorf(\"expected exactly one executable for package %s, found %d\", p.Name, len(m.Executables))\n\t\t\t}\n\t\t}\n\n\t\tactual := extractMatchingPackage(t, \"dotnetapp\", pkgs)\n\n\t\texpected := pkg.Package{\n\t\t\tName:    \"dotnetapp\",\n\t\t\tVersion: \"1.0.0\",\n\t\t\tFoundBy: \"\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewLocation(\"/app/dotnetapp.deps.json\"),\n\t\t\t\tfile.NewLocation(\"/app/dotnetapp.dll\"),\n\t\t\t),\n\t\t\tLanguage: pkg.Dotnet,\n\t\t\tType:     pkg.DotnetPkg,\n\t\t\tPURL:     \"pkg:nuget/dotnetapp@1.0.0\",\n\t\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\t\tName:    \"dotnetapp\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\tType:    \"project\",\n\t\t\t\t// note: the main package does not have a hash/path/etc\n\t\t\t\tExecutables: map[string]pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\t\"dotnetapp.dll\": {\n\t\t\t\t\t\tAssemblyVersion: \"1.0.0.0\",\n\t\t\t\t\t\tInternalName:    \"dotnetapp.dll\",\n\t\t\t\t\t\tCompanyName:     \"dotnetapp\",\n\t\t\t\t\t\tProductName:     \"dotnetapp\",\n\t\t\t\t\t\tProductVersion:  \"1.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\t}\n\n\tassertAllBinaryEntries := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\tif p.Name == \"Microsoft.NETCore.App\" {\n\t\t\t\t// for the runtime app we created ourselves there is no metadata for\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// assert that all packages have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetPortableExecutableEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetPortableExecutableEntry\")\n\t\t\t}\n\n\t\t\tassert.NotNil(t, m, \"expected metadata to be a non-nil DotnetPortableExecutableEntry\")\n\t\t}\n\n\t\tactual := extractMatchingPackage(t, \"dotnetapp\", pkgs)\n\n\t\texpected := pkg.Package{\n\t\t\tName:    \"dotnetapp\",\n\t\t\tVersion: \"1.0.0.0\", // important: in the dep.json this is 1.0.0, now the assembly version is used\n\t\t\tFoundBy: \"\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t// important: we only have the dll as evidence\n\t\t\t\tfile.NewLocation(\"/app/dotnetapp.dll\"),\n\t\t\t),\n\t\t\tLanguage: pkg.Dotnet,\n\t\t\tType:     pkg.DotnetPkg,\n\t\t\tPURL:     \"pkg:nuget/dotnetapp@1.0.0.0\", // important: in the dep.json this is 1.0.0, now the assembly version is used\n\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\tAssemblyVersion: \"1.0.0.0\",\n\t\t\t\tInternalName:    \"dotnetapp.dll\",\n\t\t\t\tCompanyName:     \"dotnetapp\",\n\t\t\t\tProductName:     \"dotnetapp\",\n\t\t\t\tProductVersion:  \"1.0.0\",\n\t\t\t},\n\t\t}\n\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\n\t\tactual = extractMatchingPackage(t, \"Json.NET\", pkgs)\n\n\t\texpected = pkg.Package{\n\t\t\tName:      \"Json.NET\",     // TODO: could we have done this better? We expected Newtonsoft.Json\n\t\t\tVersion:   \"13.0.3.27908\", // TODO: should we use the product version here?\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/app/Newtonsoft.Json.dll\")),\n\t\t\tLanguage:  pkg.Dotnet,\n\t\t\tType:      pkg.DotnetPkg,\n\t\t\tPURL:      \"pkg:nuget/Json.NET@13.0.3.27908\", // TODO: should we use the product version here?\n\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\tAssemblyVersion: \"13.0.0.0\",\n\t\t\t\tLegalCopyright:  \"Copyright © James Newton-King 2008\",\n\t\t\t\tComments:        \"Json.NET is a popular high-performance JSON framework for .NET\",\n\t\t\t\tInternalName:    \"Newtonsoft.Json.dll\",\n\t\t\t\tCompanyName:     \"Newtonsoft\",\n\t\t\t\tProductName:     \"Json.NET\",\n\t\t\t\tProductVersion:  \"13.0.3+0a2e291c0d9c0c7675d445703e51750363a549ef\",\n\t\t\t},\n\t\t}\n\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\n\t}\n\n\tassertSingleFileDeployment := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tfor _, p := range pkgs {\n\t\t\t// assert that all packages have an executable associated with it\n\t\t\tm, ok := p.Metadata.(pkg.DotnetPortableExecutableEntry)\n\t\t\tif !ok {\n\t\t\t\tt.Fatalf(\"expected metadata to be of type DotnetPortableExecutableEntry\")\n\t\t\t}\n\n\t\t\tassert.NotNil(t, m, \"expected metadata to be a non-nil DotnetPortableExecutableEntry\")\n\t\t}\n\n\t\tactual := extractMatchingPackage(t, \"dotnetapp\", pkgs)\n\n\t\texpected := pkg.Package{\n\t\t\tName:    \"dotnetapp\",\n\t\t\tVersion: \"1.0.0.0\", // important: in the dep.json this is 1.0.0, now the assembly version is used\n\t\t\tFoundBy: \"\",\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t// important: we only have the exe as evidence\n\t\t\t\tfile.NewLocation(\"/app/dotnetapp.exe\"),\n\t\t\t),\n\t\t\tLanguage: pkg.Dotnet,\n\t\t\tType:     pkg.DotnetPkg,\n\t\t\tPURL:     \"pkg:nuget/dotnetapp@1.0.0.0\", // important: in the dep.json this is 1.0.0, now the assembly version is used\n\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\tAssemblyVersion: \"1.0.0.0\",\n\t\t\t\tInternalName:    \"dotnetapp.dll\",\n\t\t\t\tCompanyName:     \"dotnetapp\",\n\t\t\t\tProductName:     \"dotnetapp\",\n\t\t\t\tProductVersion:  \"1.0.0\",\n\t\t\t},\n\t\t}\n\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\t}\n\n\tassertAccurateNetRuntimePackage := func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t// the package with the CPE is the runtime package\n\t\tfor _, p := range pkgs {\n\t\t\tif len(p.CPEs) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tassert.Contains(t, p.Name, \"Microsoft.NETCore.App\")\n\t\t\treturn\n\t\t}\n\t\tt.Error(\"expected at least one runtime package with a CPE\")\n\t}\n\n\tcases := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\texpectedPkgs []string\n\t\texpectedRels []string\n\t\tassertion    func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship)\n\t\tcataloger    pkg.Cataloger\n\t}{\n\t\t{\n\t\t\tname:         \"deps cataloger\",\n\t\t\tfixture:      \"image-net8-app\",\n\t\t\tcataloger:    NewDotnetDepsCataloger(),\n\t\t\texpectedPkgs: net8AppExpectedDepPkgs,\n\t\t\texpectedRels: net8AppExpectedDepRelationships,\n\t\t\tassertion:    assertAllDepEntriesWithoutExecutables,\n\t\t},\n\t\t{\n\t\t\tname:         \"combined cataloger\",\n\t\t\tfixture:      \"image-net8-app\",\n\t\t\tcataloger:    NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: net8AppExpectedDepPkgs,\n\t\t\texpectedRels: net8AppDepOnlyRelationships,\n\t\t\tassertion:    assertAlmostAllDepEntriesWithExecutables, // important! this is what makes this case different from the previous one... dep entries have attached executables\n\t\t},\n\t\t{\n\t\t\tname:         \"combined cataloger (with runtime)\",\n\t\t\tfixture:      \"image-net8-app-with-runtime\",\n\t\t\tcataloger:    NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: net8AppExpectedDepPkgsWithRuntime,\n\t\t\texpectedRels: net8AppDepOnlyRelationshipsWithRuntime,\n\t\t\tassertion:    assertAccurateNetRuntimePackage,\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (with runtime, no deps.json anywhere)\",\n\t\t\tfixture:   \"image-net8-app-with-runtime-nodepsjson\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: func() []string {\n\t\t\t\t// all the same packages we found in \"image-net8-app-with-runtime\", however we create a runtime package out of all of the DLLs we found instead\n\t\t\t\tx := net8AppBinaryOnlyPkgs\n\t\t\t\tx = append(x, \"Microsoft.NETCore.App @ 8.0.14 (/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.14/Microsoft.CSharp.dll)\")\n\t\t\t\treturn x\n\t\t\t}(),\n\t\t\t// important: no relationships should be found\n\t\t\tassertion: func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t\t\tassertAllBinaryEntries(t, pkgs, relationships)\n\t\t\t\tassertAccurateNetRuntimePackage(t, pkgs, relationships)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"combined cataloger (require dll pairings)\",\n\t\t\tfixture:      \"image-net8-app\",\n\t\t\tcataloger:    NewDotnetDepsBinaryCataloger(CatalogerConfig{DepPackagesMustHaveDLL: true}),\n\t\t\texpectedPkgs: net8AppExpectedDepPkgsWithoutUnpairedDlls,\n\t\t\texpectedRels: []string{\n\t\t\t\t// the odd thing (but expected) is that the Humanizer.Core entries have a dependency to each Humanizer.Core.* locale entry\n\t\t\t\t// because we're skipping over the \"virtual\" Humanizer package which does not have any associated DLLs with it.\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\"Newtonsoft.Json @ 13.0.3 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t},\n\t\t\tassertion: assertAllDepEntriesWithExecutables, // important! we want the Humanizer package without a DLL to be ignored\n\t\t},\n\t\t{\n\t\t\tname:         \"PE cataloger\",\n\t\t\tfixture:      \"image-net8-app\",\n\t\t\tcataloger:    NewDotnetPortableExecutableCataloger(),\n\t\t\texpectedPkgs: net8AppBinaryOnlyPkgs,\n\t\t\t// important: no relationships should be found\n\t\t\tassertion: assertAllBinaryEntries,\n\t\t},\n\t\t{\n\t\t\tname:      \"deps cataloger (no deps.json)\",\n\t\t\tfixture:   \"image-net8-app-no-depjson\",\n\t\t\tcataloger: NewDotnetDepsCataloger(),\n\t\t\t// there should be no packages found!\n\t\t},\n\t\t{\n\t\t\tname:         \"combined cataloger (no deps.json)\",\n\t\t\tfixture:      \"image-net8-app-no-depjson\",\n\t\t\tcataloger:    NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: net8AppBinaryOnlyPkgs,\n\t\t\t// important: no relationships should be found\n\t\t\tassertion: assertAllBinaryEntries,\n\t\t},\n\t\t{\n\t\t\tname:         \"pe cataloger (no deps.json)\",\n\t\t\tfixture:      \"image-net8-app-no-depjson\",\n\t\t\tcataloger:    NewDotnetPortableExecutableCataloger(),\n\t\t\texpectedPkgs: net8AppBinaryOnlyPkgs,\n\t\t\t// important: no relationships should be found\n\t\t\tassertion: assertAllBinaryEntries,\n\t\t},\n\t\t{\n\t\t\tname:      \"deps cataloger (single file)\",\n\t\t\tfixture:   \"image-net8-app-single-file\",\n\t\t\tcataloger: NewDotnetDepsCataloger(),\n\t\t\t// there should be no packages found!\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (single file)\",\n\t\t\tfixture:   \"image-net8-app-single-file\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: []string{\"Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t// extracted libraries from the embedded deps.json\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Newtonsoft.Json @ 13.0.3 (/app/dotnetapp.exe)\",\n\t\t\t\t\"dotnetapp @ 1.0.0 (/app/dotnetapp.exe)\",\n\t\t\t\t\"runtimepack.Microsoft.NETCore.App.Runtime.win-x64 @ 8.0.14 (/app/dotnetapp.exe)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"Humanizer @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.af @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ar @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.az @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.bg @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.bn-BD @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.cs @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.da @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.de @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.el @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.es @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fa @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fi-FI @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fr @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.fr-BE @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.he @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hr @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hu @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.hy @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.id @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.is @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.it @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ja @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ko-KR @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ku @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.lv @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ms-MY @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.mt @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nb @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nb-NO @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.nl @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.pl @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.pt @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ro @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.ru @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sk @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sl @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sr @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sr-Latn @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.sv @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.th-TH @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.tr @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uk @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uz-Cyrl-UZ @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.uz-Latn-UZ @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.vi @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-CN @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-Hans @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Humanizer.Core.zh-Hant @ 2.14.1 (/app/dotnetapp.exe) [dependency-of] Humanizer @ 2.14.1 (/app/dotnetapp.exe)\",\n\t\t\t\t\"Newtonsoft.Json @ 13.0.3 (/app/dotnetapp.exe) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.exe)\",\n\t\t\t\t\"runtimepack.Microsoft.NETCore.App.Runtime.win-x64 @ 8.0.14 (/app/dotnetapp.exe) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.exe)\",\n\t\t\t},\n\t\t\tassertion: assertAllDepEntriesInEmbeddedExecutable,\n\t\t},\n\t\t{\n\t\t\tname:      \"pe cataloger (single file)\",\n\t\t\tfixture:   \"image-net8-app-single-file\",\n\t\t\tcataloger: NewDotnetPortableExecutableCataloger(),\n\t\t\t// important: no relationships should be found\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"dotnetapp @ 1.0.0.0 (/app/dotnetapp.exe)\",\n\t\t\t},\n\t\t\tassertion: assertSingleFileDeployment,\n\t\t},\n\t\t{\n\t\t\tname:         \"deps cataloger (self-contained)\",\n\t\t\tfixture:      \"image-net8-app-self-contained\",\n\t\t\tcataloger:    NewDotnetDepsCataloger(),\n\t\t\texpectedPkgs: net8AppExpectedDepsSelfContainedPkgs,\n\t\t\texpectedRels: net8AppExpectedDepSelfContainedRelationships,\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (self-contained)\",\n\t\t\tfixture:   \"image-net8-app-self-contained\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\t// we care about DLL claims in the deps.json, so the main application inherits all relationships to/from humarizer\n\t\t\texpectedPkgs: net8AppExpectedDepSelfContainedPkgs,\n\t\t\texpectedRels: net8AppExpectedDepSelfContainedRelationships,\n\t\t\tassertion:    assertAccurateNetRuntimePackage,\n\t\t},\n\t\t{\n\t\t\tname:      \"pe cataloger (self-contained)\",\n\t\t\tfixture:   \"image-net8-app-self-contained\",\n\t\t\tcataloger: NewDotnetPortableExecutableCataloger(),\n\t\t\t// important: no relationships should be found\n\t\t\texpectedPkgs: net8AppExpectedBinarySelfContainedPkgs,\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (private assets + require dlls)\",\n\t\t\tfixture:   \"image-net8-privateassets\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(CatalogerConfig{DepPackagesMustHaveDLL: true}),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (private assets)\",\n\t\t\tfixture:   \"image-net8-privateassets\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"combined cataloger (ilrepack + require dlls)\",\n\t\t\tfixture:   \"image-net8-ilrepack\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(CatalogerConfig{DepPackagesMustHaveDLL: true}),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// TODO: this is to help us out in the future... we can use TypeDef info from the Metadata table to determine\n\t\t\t// if package names are any \"namespace\" values of the assembly. Today we don't do this so we relax claims\n\t\t\t// when bundling is detected instead of attempting to check for namespace values in TypeDef entries\n\t\t\t// and correlate against deps.json entries (which is not a sure thing!).\n\t\t\tname:      \"combined cataloger (ilrepack)\",\n\t\t\tfixture:   \"image-net8-ilrepack\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: func() []string {\n\t\t\t\tx := net8AppExpectedDepPkgs\n\t\t\t\tx = append(x,\n\t\t\t\t\t\"ILRepack @ 2.0.33 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\t\"ILRepack.FullAuto @ 1.6.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t)\n\t\t\t\treturn x\n\t\t\t}(),\n\t\t\texpectedRels: func() []string {\n\t\t\t\tx := net8AppExpectedDepRelationships\n\t\t\t\tx = append(x,\n\t\t\t\t\t\"ILRepack @ 2.0.33 (/app/dotnetapp.deps.json) [dependency-of] ILRepack.FullAuto @ 1.6.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t\t\"ILRepack.FullAuto @ 1.6.0 (/app/dotnetapp.deps.json) [dependency-of] dotnetapp @ 1.0.0 (/app/dotnetapp.deps.json)\",\n\t\t\t\t)\n\t\t\t\treturn x\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname:      \"net2 app, combined cataloger (private assets)\",\n\t\t\tfixture:   \"image-net2-app\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t\t\"Microsoft.NETCore.DotNetHostPolicy @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t\t\"Serilog @ 2.10.0 (/app/helloworld.deps.json)\",\n\t\t\t\t\"Serilog.Sinks.Console @ 4.0.1 (/app/helloworld.deps.json)\",\n\t\t\t\t\"helloworld @ 1.0.0 (/app/helloworld.deps.json)\",\n\t\t\t\t\"runtime.linux-x64.Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t\t\"runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\", // a compile target reference\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"Microsoft.NETCore.DotNetHostPolicy @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json) [dependency-of] Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t\t\"Serilog @ 2.10.0 (/app/helloworld.deps.json) [dependency-of] Serilog.Sinks.Console @ 4.0.1 (/app/helloworld.deps.json)\",\n\t\t\t\t\"Serilog @ 2.10.0 (/app/helloworld.deps.json) [dependency-of] helloworld @ 1.0.0 (/app/helloworld.deps.json)\",\n\t\t\t\t\"Serilog.Sinks.Console @ 4.0.1 (/app/helloworld.deps.json) [dependency-of] helloworld @ 1.0.0 (/app/helloworld.deps.json)\",\n\t\t\t\t\"runtime.linux-x64.Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json) [dependency-of] Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t\t\"runtime.linux-x64.Microsoft.NETCore.App @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json) [dependency-of] helloworld @ 1.0.0 (/app/helloworld.deps.json)\",\n\t\t\t\t\"runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json) [dependency-of] Microsoft.NETCore.DotNetHostPolicy @ 2.2.8 (/usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/Microsoft.NETCore.App.deps.json)\",\n\t\t\t},\n\t\t\tassertion: assertAccurateNetRuntimePackage,\n\t\t},\n\t\t{\n\t\t\tname:      \"libman support\",\n\t\t\tfixture:   \"image-net6-asp-libman\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"LibManSample @ 1.0.0 (/app/LibManSample.deps.json)\",\n\t\t\t\t\"jquery @ 3.3.1 (/app/libman.json)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"jquery @ 3.3.1 (/app/libman.json) [dependency-of] LibManSample @ 1.0.0 (/app/LibManSample.deps.json)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.assertion == nil {\n\t\t\t\ttt.assertion = func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {}\n\t\t\t}\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpectsPackageStrings(tt.expectedPkgs).\n\t\t\t\tExpectsRelationshipStrings(tt.expectedRels).\n\t\t\t\tExpectsAssertion(tt.assertion).\n\t\t\t\tTestCataloger(t, tt.cataloger)\n\t\t})\n\t}\n}\n\nfunc TestDotnetDepsCataloger_regressions(t *testing.T) {\n\n\tassertPackages := func(mustHave []string, mustNotHave []string) func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\texpected := strset.New(mustHave...)\n\t\tnotExpected := strset.New(mustNotHave...)\n\t\treturn func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\n\t\t\tfor _, p := range pkgs {\n\t\t\t\texpected.Remove(p.Name)\n\t\t\t\tif notExpected.Has(p.Name) {\n\t\t\t\t\tt.Errorf(\"unexpected package: %s\", p.Name)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif expected.IsEmpty() {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tt.Errorf(\"missing packages: %s\", expected.List())\n\t\t}\n\t}\n\n\tcases := []struct {\n\t\tname      string\n\t\tfixture   string\n\t\tassertion func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship)\n\t\tcataloger pkg.Cataloger\n\t}{\n\t\t{\n\t\t\t// during development, these version resources tended to be corrupted\n\t\t\tname:      \"Newtonsoft dll details\",\n\t\t\tfixture:   \"image-net8-app-no-depjson\",\n\t\t\tcataloger: NewDotnetPortableExecutableCataloger(),\n\t\t\tassertion: func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t\t\t// TODO: name should be \"Newtonsoft.Json\" (bad metadata in the artifact)\n\t\t\t\tactual := extractMatchingPackage(t, \"Json.NET\", pkgs)\n\n\t\t\t\texpected := pkg.Package{\n\t\t\t\t\tName:      \"Json.NET\",\n\t\t\t\t\tVersion:   \"13.0.3.27908\", // TODO should we parse the product version to get 13.0.3?\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/app/Newtonsoft.Json.dll\")),\n\t\t\t\t\tLanguage:  pkg.Dotnet,\n\t\t\t\t\tType:      pkg.DotnetPkg,\n\t\t\t\t\tPURL:      \"pkg:nuget/Json.NET@13.0.3.27908\",\n\t\t\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\t\tAssemblyVersion: \"13.0.0.0\",\n\t\t\t\t\t\tLegalCopyright:  \"Copyright © James Newton-King 2008\",\n\t\t\t\t\t\tComments:        \"Json.NET is a popular high-performance JSON framework for .NET\",\n\t\t\t\t\t\tInternalName:    \"Newtonsoft.Json.dll\",\n\t\t\t\t\t\tCompanyName:     \"Newtonsoft\",\n\t\t\t\t\t\tProductName:     \"Json.NET\",\n\t\t\t\t\t\tProductVersion:  \"13.0.3+0a2e291c0d9c0c7675d445703e51750363a549ef\",\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tpkgtest.AssertPackagesEqualIgnoreLayers(t, expected, actual)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"indirect packages references\",\n\t\t\tfixture:   \"image-net8-compile-target\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\tassertion: assertPackages(\n\t\t\t\t[]string{\n\t\t\t\t\t\"DotNetNuke.Core\", // uses a compile target reference in the deps.json\n\t\t\t\t\t\"Umbraco.Cms\",     // this is the parent of other packages which do have DLLs included (even though it does not have any DLLs)\n\t\t\t\t},\n\t\t\t\t[]string{\n\t\t\t\t\t\"StyleCop.Analyzers\",     // this is a development tool\n\t\t\t\t\t\"Microsoft.NET.Test.Sdk\", // this is a development tool\n\t\t\t\t\t\"jQuery\",                 // has no DLLs but has javascript assets\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tname:      \"not propagating claims\",\n\t\t\tfixture:   \"image-net8-compile-target\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig().WithPropagateDLLClaimsToParents(false)),\n\t\t\tassertion: assertPackages(\n\t\t\t\t[]string{\n\t\t\t\t\t\"DotNetNuke.Core\", // uses a compile target reference in the deps.json\n\n\t\t\t\t},\n\t\t\t\t[]string{\n\t\t\t\t\t\"Umbraco.Cms\",            // this is the parent of other packages which do have DLLs included (even though it does not have any DLLs)\n\t\t\t\t\t\"StyleCop.Analyzers\",     // this is a development tool\n\t\t\t\t\t\"Microsoft.NET.Test.Sdk\", // this is a development tool under the debug configuration (we build the release configuration)\n\t\t\t\t\t\"jQuery\",                 // has no DLLs but has javascript assets -- this is bad behavior (as we want to detect this)\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tname:    \"not requiring claims finds jquery\",\n\t\t\tfixture: \"image-net8-compile-target\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(CatalogerConfig{\n\t\t\t\tDepPackagesMustHaveDLL:             false,\n\t\t\t\tDepPackagesMustClaimDLL:            false,\n\t\t\t\tPropagateDLLClaimsToParents:        false,\n\t\t\t\tRelaxDLLClaimsWhenBundlingDetected: false,\n\t\t\t}),\n\t\t\tassertion: assertPackages(\n\t\t\t\t[]string{\n\t\t\t\t\t\"jQuery\",             // has no DLLs but has javascript assets\n\t\t\t\t\t\"StyleCop.Analyzers\", // this is a development tool -- this is bad behavior (since we should not detect this), but cannot be helped\n\t\t\t\t},\n\t\t\t\t[]string{\n\t\t\t\t\t\"Microsoft.NET.Test.Sdk\", // this is a development tool under the debug configuration (we build the release configuration)\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tname:      \"libman support\",\n\t\t\tfixture:   \"image-net6-asp-libman\",\n\t\t\tcataloger: NewDotnetDepsBinaryCataloger(DefaultCatalogerConfig()),\n\t\t\tassertion: assertPackages(\n\t\t\t\t[]string{\n\t\t\t\t\t\"jquery\", // a javascript package, not the nuget package\n\t\t\t\t},\n\t\t\t\t[]string{\n\t\t\t\t\t\"vendor\", // this is the string reference for a filesystem provider\n\t\t\t\t\t\"lodash\", // this is from a filesystem provider, which is not supported\n\t\t\t\t},\n\t\t\t),\n\t\t},\n\t}\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.assertion == nil {\n\t\t\t\tt.Fatalf(\"assertion is required\")\n\t\t\t}\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\tExpectsAssertion(tt.assertion).\n\t\t\t\tTestCataloger(t, tt.cataloger)\n\t\t})\n\t}\n}\n\nfunc Test_corruptDotnetPE(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/glob-paths/src\").\n\t\tExpects(nil, nil). // we shouldn't find packages nor error out\n\t\tTestCataloger(t, NewDotnetPortableExecutableCataloger())\n}\n\nfunc Test_corruptDotnetDeps(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/glob-paths/src\").\n\t\tExpects(nil, nil). // we shouldn't find packages nor error out\n\t\tTestCataloger(t, NewDotnetDepsCataloger())\n}\n\nfunc TestParseDotnetDeps(t *testing.T) {\n\tfixture := \"testdata/dir-example-1\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(\"TestLibrary.deps.json\"))\n\trootPkg := pkg.Package{\n\t\tName:      \"TestLibrary\",\n\t\tVersion:   \"1.0.0\",\n\t\tPURL:      \"pkg:nuget/TestLibrary@1.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:    \"TestLibrary\",\n\t\t\tVersion: \"1.0.0\",\n\t\t\tType:    \"project\",\n\t\t},\n\t}\n\ttestCommon := pkg.Package{\n\t\tName:      \"TestCommon\",\n\t\tVersion:   \"1.0.0\",\n\t\tPURL:      \"pkg:nuget/TestCommon@1.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:    \"TestCommon\",\n\t\t\tVersion: \"1.0.0\",\n\t\t\tType:    \"project\",\n\t\t},\n\t}\n\tawssdkcore := pkg.Package{\n\t\tName:      \"AWSSDK.Core\",\n\t\tVersion:   \"3.7.10.6\",\n\t\tPURL:      \"pkg:nuget/AWSSDK.Core@3.7.10.6\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"AWSSDK.Core\",\n\t\t\tVersion:  \"3.7.10.6\",\n\t\t\tSha512:   \"sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==\",\n\t\t\tPath:     \"awssdk.core/3.7.10.6\",\n\t\t\tHashPath: \"awssdk.core.3.7.10.6.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftDependencyInjectionAbstractions := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.DependencyInjection.Abstractions\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.DependencyInjection.Abstractions\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==\",\n\t\t\tPath:     \"microsoft.extensions.dependencyinjection.abstractions/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftDependencyInjection := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.DependencyInjection\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.DependencyInjection\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==\",\n\t\t\tPath:     \"microsoft.extensions.dependencyinjection/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftLoggingAbstractions := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Logging.Abstractions\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.Logging.Abstractions\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==\",\n\t\t\tPath:     \"microsoft.extensions.logging.abstractions/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftExtensionsLogging := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Logging\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Logging@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.Logging\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==\",\n\t\t\tPath:     \"microsoft.extensions.logging/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.logging.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftExtensionsOptions := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Options\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Options@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.Options\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==\",\n\t\t\tPath:     \"microsoft.extensions.options/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.options.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tmsftExtensionsPrimitives := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Primitives\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Primitives@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Microsoft.Extensions.Primitives\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==\",\n\t\t\tPath:     \"microsoft.extensions.primitives/6.0.0\",\n\t\t\tHashPath: \"microsoft.extensions.primitives.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tnewtonsoftJson := pkg.Package{\n\t\tName:      \"Newtonsoft.Json\",\n\t\tVersion:   \"13.0.1\",\n\t\tPURL:      \"pkg:nuget/Newtonsoft.Json@13.0.1\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Newtonsoft.Json\",\n\t\t\tVersion:  \"13.0.1\",\n\t\t\tSha512:   \"sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==\",\n\t\t\tPath:     \"newtonsoft.json/13.0.1\",\n\t\t\tHashPath: \"newtonsoft.json.13.0.1.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tserilogSinksConsole := pkg.Package{\n\t\tName:      \"Serilog.Sinks.Console\",\n\t\tVersion:   \"4.0.1\",\n\t\tPURL:      \"pkg:nuget/Serilog.Sinks.Console@4.0.1\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Serilog.Sinks.Console\",\n\t\t\tVersion:  \"4.0.1\",\n\t\t\tSha512:   \"sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==\",\n\t\t\tPath:     \"serilog.sinks.console/4.0.1\",\n\t\t\tHashPath: \"serilog.sinks.console.4.0.1.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tserilog := pkg.Package{\n\t\tName:      \"Serilog\",\n\t\tVersion:   \"2.10.0\",\n\t\tPURL:      \"pkg:nuget/Serilog@2.10.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"Serilog\",\n\t\t\tVersion:  \"2.10.0\",\n\t\t\tSha512:   \"sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==\",\n\t\t\tPath:     \"serilog/2.10.0\",\n\t\t\tHashPath: \"serilog.2.10.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tsystemDiagnosticsDiagnosticsource := pkg.Package{\n\t\tName:      \"System.Diagnostics.DiagnosticSource\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"System.Diagnostics.DiagnosticSource\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==\",\n\t\t\tPath:     \"system.diagnostics.diagnosticsource/6.0.0\",\n\t\t\tHashPath: \"system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t},\n\t}\n\tsystemRuntimeCompilerServicesUnsafe := pkg.Package{\n\t\tName:      \"System.Runtime.CompilerServices.Unsafe\",\n\t\tVersion:   \"6.0.0\",\n\t\tPURL:      \"pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\tName:     \"System.Runtime.CompilerServices.Unsafe\",\n\t\t\tVersion:  \"6.0.0\",\n\t\t\tSha512:   \"sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==\",\n\t\t\tPath:     \"system.runtime.compilerservices.unsafe/6.0.0\",\n\t\t\tHashPath: \"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512\",\n\t\t\tType:     \"package\",\n\t\t}}\n\n\texpectedPkgs := []pkg.Package{\n\t\tawssdkcore,\n\t\tmsftDependencyInjection,\n\t\tmsftDependencyInjectionAbstractions,\n\t\tmsftExtensionsLogging,\n\t\tmsftLoggingAbstractions,\n\t\tmsftExtensionsOptions,\n\t\tmsftExtensionsPrimitives,\n\t\tnewtonsoftJson,\n\t\tserilog,\n\t\tserilogSinksConsole,\n\t\tsystemDiagnosticsDiagnosticsource,\n\t\tsystemRuntimeCompilerServicesUnsafe,\n\t\ttestCommon,\n\t\trootPkg,\n\t}\n\n\t// ┌── (✓ = is represented in the test)\n\t// ↓\n\t//\n\t// ✓ TestLibrary/1.0.0 (project)\n\t// ✓  ├── [a] Microsoft.Extensions.DependencyInjection/6.0.0                     [file version: 6.0.21.52210]\n\t// ✓  │    ├── [b] Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0   [file version: 6.0.21.52210]\n\t// ✓  │    └── [c!] System.Runtime.CompilerServices.Unsafe/6.0.0                 [NO TARGET INFO]\n\t// ✓  ├── Microsoft.Extensions.Logging/6.0.0                                     [file version: 6.0.21.52210]\n\t// ✓  │    ├── Microsoft.Extensions.DependencyInjection/6.0.0                    ...to [a]\n\t// ✓  │    ├── Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0       ...to [b]\n\t// ✓  │    ├── Microsoft.Extensions.Logging.Abstractions/6.0.0                   [file version: 6.0.21.52210]\n\t// ✓  │    ├── Microsoft.Extensions.Options/6.0.0                                [file version: 6.0.21.52210]\n\t// ✓  │    │    ├── Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0  ...to [b]\n\t// ✓  │    │    └── Microsoft.Extensions.Primitives/6.0.0                        [file version: 6.0.21.52210]\n\t// ✓  │    │         └── System.Runtime.CompilerServices.Unsafe/6.0.0            ...to [c!]\n\t// ✓  │    └── System.Diagnostics.DiagnosticSource/6.0.0                         [NO RUNTIME INFO]\n\t// ✓  │         └── System.Runtime.CompilerServices.Unsafe/6.0.0                 ...to [c!]\n\t// ✓  ├── Newtonsoft.Json/13.0.1                                                 [file version: 13.0.1.25517]\n\t// ✓  ├── [d] Serilog/2.10.0                                                     [file version: 2.10.0.0]\n\t// ✓  ├── Serilog.Sinks.Console/4.0.1                                            [file version: 4.0.1.0]\n\t// ✓  │    └── Serilog/2.10.0                                                    ...to [d]\n\t// ✓  └── [e!] TestCommon/1.0.0                                                  [NOT SERVICEABLE / NO SHA]\n\t// ✓       └── AWSSDK.Core/3.7.10.6                                              [file version: 3.7.10.6]\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: awssdkcore,\n\t\t\tTo:   testCommon,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftDependencyInjection,\n\t\t\tTo:   msftExtensionsLogging,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftDependencyInjection,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftDependencyInjectionAbstractions,\n\t\t\tTo:   msftDependencyInjection,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftDependencyInjectionAbstractions,\n\t\t\tTo:   msftExtensionsLogging,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftDependencyInjectionAbstractions,\n\t\t\tTo:   msftExtensionsOptions,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftExtensionsLogging,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftLoggingAbstractions,\n\t\t\tTo:   msftExtensionsLogging,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftExtensionsOptions,\n\t\t\tTo:   msftExtensionsLogging,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: msftExtensionsPrimitives,\n\t\t\tTo:   msftExtensionsOptions,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: newtonsoftJson,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: serilog,\n\t\t\tTo:   serilogSinksConsole,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: serilog,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: serilogSinksConsole,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: systemDiagnosticsDiagnosticsource,\n\t\t\tTo:   msftExtensionsLogging,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: systemRuntimeCompilerServicesUnsafe,\n\t\t\tTo:   msftDependencyInjection,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: systemRuntimeCompilerServicesUnsafe,\n\t\t\tTo:   msftExtensionsPrimitives,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: systemRuntimeCompilerServicesUnsafe,\n\t\t\tTo:   systemDiagnosticsDiagnosticsource,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: testCommon,\n\t\t\tTo:   rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.TestCataloger(t, fixture, NewDotnetDepsCataloger(), expectedPkgs, expectedRelationships)\n}\n\nfunc extractMatchingPackage(t *testing.T, name string, pkgs []pkg.Package) pkg.Package {\n\tt.Helper()\n\tfor _, p := range pkgs {\n\t\tif p.Name == name {\n\t\t\treturn p\n\t\t}\n\t}\n\tt.Fatalf(\"expected to find package %s\", name)\n\treturn pkg.Package{}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/config.go",
    "content": "package dotnet\n\ntype CatalogerConfig struct {\n\t// DepPackagesMustHaveDLL allows for deps.json packages to be included only if there is a DLL on disk for that package.\n\t// app-config: dotnet.dep-packages-must-have-dll\n\tDepPackagesMustHaveDLL bool `mapstructure:\"dep-packages-must-have-dll\" json:\"dep-packages-must-have-dll\" yaml:\"dep-packages-must-have-dll\"`\n\n\t// DepPackagesMustClaimDLL allows for deps.json packages to be included only if there is a runtime/resource DLL claimed in the deps.json targets section.\n\t// This does not require such claimed DLLs to exist on disk. The behavior of this\n\t// app-config: dotnet.dep-packages-must-claim-dll\n\tDepPackagesMustClaimDLL bool `mapstructure:\"dep-packages-must-claim-dll\" json:\"dep-packages-must-claim-dll\" yaml:\"dep-packages-must-claim-dll\"`\n\n\t// PropagateDLLClaimsToParents allows for deps.json packages to be included if any child (transitive) package claims a DLL. This applies to both the claims configuration and evidence-on-disk configurations.\n\t// app-config: dotnet.propagate-dll-claims-to-parents\n\tPropagateDLLClaimsToParents bool `mapstructure:\"propagate-dll-claims-to-parents\" json:\"propagate-dll-claims-to-parents\" yaml:\"propagate-dll-claims-to-parents\"`\n\n\t// RelaxDLLClaimsWhenBundlingDetected will look for indications of IL bundle tooling via deps.json package names\n\t// and, if found (and this config option is enabled), will relax the DepPackagesMustClaimDLL value to `false` only in those cases.\n\t// app-config: dotnet.relax-dll-claims-when-bundling-detected\n\tRelaxDLLClaimsWhenBundlingDetected bool `mapstructure:\"relax-dll-claims-when-bundling-detected\" json:\"relax-dll-claims-when-bundling-detected\" yaml:\"relax-dll-claims-when-bundling-detected\"`\n\n\t// ExcludeProjectReferences excludes packages with type \"project\" from deps.json output.\n\t// These are internal project references, not external NuGet packages.\n\t// app-config: dotnet.exclude-project-references\n\tExcludeProjectReferences bool `mapstructure:\"exclude-project-references\" json:\"exclude-project-references\" yaml:\"exclude-project-references\"`\n}\n\nfunc (c CatalogerConfig) WithDepPackagesMustHaveDLL(requireDlls bool) CatalogerConfig {\n\tc.DepPackagesMustHaveDLL = requireDlls\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithDepPackagesMustClaimDLL(requireDlls bool) CatalogerConfig {\n\tc.DepPackagesMustClaimDLL = requireDlls\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithRelaxDLLClaimsWhenBundlingDetected(relax bool) CatalogerConfig {\n\tc.RelaxDLLClaimsWhenBundlingDetected = relax\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithPropagateDLLClaimsToParents(propagate bool) CatalogerConfig {\n\tc.PropagateDLLClaimsToParents = propagate\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithExcludeProjectReferences(exclude bool) CatalogerConfig {\n\tc.ExcludeProjectReferences = exclude\n\treturn c\n}\n\nfunc DefaultCatalogerConfig() CatalogerConfig {\n\treturn CatalogerConfig{\n\t\tDepPackagesMustHaveDLL:             false,\n\t\tDepPackagesMustClaimDLL:            true,\n\t\tPropagateDLLClaimsToParents:        true,\n\t\tRelaxDLLClaimsWhenBundlingDetected: true,\n\t\tExcludeProjectReferences:           true,\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/deps_binary_cataloger.go",
    "content": "package dotnet\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst (\n\tdepsJSONGlob = \"**/*.deps.json\"\n\tdllGlob      = \"**/*.dll\"\n\texeGlob      = \"**/*.exe\"\n)\n\n// depsBinaryCataloger will search for both deps.json evidence and PE file evidence to create packages. All packages\n// from both sources are raised up, but with one merge operation applied; If a deps.json package reference can be\n// correlated with a PE file, the PE file is attached to the package as supporting evidence.\ntype depsBinaryCataloger struct {\n\tconfig CatalogerConfig\n}\n\nfunc (c depsBinaryCataloger) Name() string {\n\treturn \"dotnet-deps-binary-cataloger\"\n}\n\nfunc (c depsBinaryCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) { //nolint:funlen\n\tdepJSONDocs, unknowns, err := findDepsJSON(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tpeFiles, ldpeUnknownErr, err := findPEFiles(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif ldpeUnknownErr != nil {\n\t\tunknowns = unknown.Join(unknowns, ldpeUnknownErr)\n\t}\n\n\t// partition the logical PE files by location and pair them with the logicalDepsJSON\n\tpairedDepsJSONs, remainingPeFiles, remainingDepsJSONs := partitionPEs(depJSONDocs, peFiles)\n\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\tdepDocGroups := [][]logicalDepsJSON{pairedDepsJSONs}\n\n\tif !c.config.DepPackagesMustHaveDLL {\n\t\tdepDocGroups = append(depDocGroups, remainingDepsJSONs)\n\t}\n\n\tvar roots []*pkg.Package\n\tfor _, docs := range depDocGroups {\n\t\tfor _, doc := range docs {\n\t\t\trts, ps, rs := packagesFromLogicalDepsJSON(doc, c.config)\n\t\t\tif rts != nil {\n\t\t\t\troots = append(roots, rts)\n\t\t\t}\n\t\t\tpkgs = append(pkgs, ps...)\n\t\t\trelationships = append(relationships, rs...)\n\t\t}\n\t}\n\n\t// track existing runtime packages so we don't create duplicates\n\texistingRuntimeVersions := strset.New()\n\tvar runtimePkgs []*pkg.Package\n\tfor i := range pkgs {\n\t\tp := &pkgs[i]\n\t\tif p.Type != pkg.DotnetPkg {\n\t\t\tcontinue\n\t\t}\n\t\tif isRuntime(p.Name) {\n\t\t\texistingRuntimeVersions.Add(p.Version)\n\t\t\truntimePkgs = append(runtimePkgs, p)\n\t\t}\n\t}\n\n\truntimes := make(map[string][]file.Location)\n\tfor _, pe := range remainingPeFiles {\n\t\truntimeVer, isRuntimePkg := isRuntimePackageLocation(pe.Location)\n\t\tif isRuntimePkg {\n\t\t\truntimes[runtimeVer] = append(runtimes[runtimeVer], pe.Location)\n\t\t\t// we should never catalog runtime DLLs as packages themselves, instead there should be a single logical package\n\t\t\tcontinue\n\t\t}\n\t\tpkgs = append(pkgs, newDotnetBinaryPackage(pe.VersionResources, pe.Location))\n\t}\n\n\t// if we found any runtime DLLs we ignored, then make packages for each version found\n\tfor version, locs := range runtimes {\n\t\tif len(locs) == 0 || existingRuntimeVersions.Has(version) {\n\t\t\tcontinue\n\t\t}\n\t\trtp := pkg.Package{\n\t\t\tName:      \"Microsoft.NETCore.App\",\n\t\t\tVersion:   version,\n\t\t\tType:      pkg.DotnetPkg,\n\t\t\tCPEs:      runtimeCPEs(version),\n\t\t\tLocations: file.NewLocationSet(locs...),\n\t\t}\n\t\tpkgs = append(pkgs, rtp)\n\t\truntimePkgs = append(runtimePkgs, &rtp)\n\t}\n\n\t// create a relationship from every runtime package to every root package...\n\tfor _, root := range roots {\n\t\tfor _, runtimePkg := range runtimePkgs {\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: *runtimePkg,\n\t\t\t\tTo:   *root,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\t// in the process of creating root-to-runtime relationships, we may have created duplicate relationships. Use the relationship index to deduplicate.\n\treturn pkgs, relationship.NewIndex(relationships...).All(), unknowns\n}\n\nvar runtimeDLLPathPattern = regexp.MustCompile(`/Microsoft\\.NETCore\\.App/(?P<version>\\d+\\.\\d+\\.\\d+)/[^/]+\\.dll`)\n\nfunc isRuntimePackageLocation(loc file.Location) (string, bool) {\n\t// we should look at the realpath to see if it is a \"**/Microsoft.NETCore.App/\\d+.\\d+.\\d+/*.dll\"\n\t// and if so treat it as a runtime package\n\tif match := runtimeDLLPathPattern.FindStringSubmatch(loc.RealPath); match != nil {\n\t\tversionIndex := runtimeDLLPathPattern.SubexpIndex(\"version\")\n\t\tif versionIndex != -1 {\n\t\t\tversion := match[versionIndex]\n\t\t\treturn version, true\n\t\t}\n\t}\n\n\treturn \"\", false\n}\n\n// partitionPEs pairs PE files with the deps.json based on directory containment.\nfunc partitionPEs(depJsons []logicalDepsJSON, peFiles []logicalPE) ([]logicalDepsJSON, []logicalPE, []logicalDepsJSON) {\n\t// if there are any embedded deps.json files in PE files, extract them and add them to the list of deps.json files to process.\n\tconsideredPEs := file.NewCoordinateSet()\n\tfor _, pe := range peFiles {\n\t\tif pe.EmbeddedDepsJSON != \"\" {\n\t\t\tdep := extractEmbeddedDeps(pe)\n\t\t\tif dep != nil {\n\t\t\t\tdepJsons = append(depJsons, *dep)\n\t\t\t\tconsideredPEs.Add(pe.Location.Coordinates) // mark this PE as already considered\n\t\t\t}\n\t\t}\n\t}\n\n\t// sort deps.json paths from longest to shortest. This is so we are processing the most specific match first.\n\tsort.Slice(depJsons, func(i, j int) bool {\n\t\treturn depJsons[i].Location.RealPath > depJsons[j].Location.RealPath\n\t})\n\n\t// we should be processing PE files in a stable order\n\tsort.Slice(peFiles, func(i, j int) bool {\n\t\treturn peFiles[i].Location.RealPath > peFiles[j].Location.RealPath\n\t})\n\n\tpeFilesByPath := make(map[file.Coordinates][]logicalPE)\n\tvar remainingPeFiles []logicalPE\n\tfor _, pe := range peFiles {\n\t\tvar found bool\n\t\tfor i := range depJsons {\n\t\t\tdep := &depJsons[i]\n\t\t\tif isParentOf(dep.Location.RealPath, pe.Location.RealPath) && attachAssociatedExecutables(dep, pe) {\n\t\t\t\tpeFilesByPath[dep.Location.Coordinates] = append(peFilesByPath[dep.Location.Coordinates], pe)\n\t\t\t\tfound = true\n\t\t\t\t// note: we cannot break from the dep JSON search since the same binary could be associated with multiple packages\n\t\t\t\t// across multiple deps.json files.\n\t\t\t}\n\t\t}\n\t\t// if we did not find a deps.json to associate this PE with, keep track of it for later processing.\n\t\t// also, if we have already considered this PE because it had an embedded deps.json, skip it.\n\t\tif !found && !consideredPEs.Contains(pe.Location.Coordinates) {\n\t\t\tremainingPeFiles = append(remainingPeFiles, pe)\n\t\t}\n\t}\n\n\tvar pairedDepsJSON []logicalDepsJSON\n\tvar remainingDepsJSON []logicalDepsJSON\n\n\tfor _, dep := range depJsons {\n\t\tif _, ok := peFilesByPath[dep.Location.Coordinates]; !ok {\n\t\t\tremainingDepsJSON = append(remainingDepsJSON, dep)\n\t\t} else {\n\t\t\tpairedDepsJSON = append(pairedDepsJSON, dep)\n\t\t}\n\t}\n\n\treturn pairedDepsJSON, remainingPeFiles, remainingDepsJSON\n}\n\n// attachAssociatedExecutables looks for PE files matching runtime or resource entries\n// and attaches them to the appropriate package.\nfunc attachAssociatedExecutables(dep *logicalDepsJSON, pe logicalPE) bool {\n\tappDir := path.Dir(dep.Location.RealPath)\n\trelativeDllPath := strings.TrimPrefix(strings.TrimPrefix(pe.Location.RealPath, appDir), \"/\")\n\n\tvar found bool\n\tfor key, p := range dep.PackagesByNameVersion {\n\t\tif targetPath, ok := p.RuntimePathsByRelativeDLLPath[relativeDllPath]; ok {\n\t\t\tpe.TargetPath = targetPath\n\t\t\tp.Executables = append(p.Executables, pe)\n\t\t\tdep.PackagesByNameVersion[key] = p // update the map with the modified package\n\t\t\tfound = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif targetPath, ok := p.ResourcePathsByRelativeDLLPath[relativeDllPath]; ok {\n\t\t\tpe.TargetPath = targetPath\n\t\t\tp.Executables = append(p.Executables, pe)\n\t\t\tdep.PackagesByNameVersion[key] = p // update the map with the modified package\n\t\t\tfound = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif targetPath, ok := p.CompilePathsByRelativeDLLPath[relativeDllPath]; ok {\n\t\t\tpe.TargetPath = targetPath\n\t\t\tp.Executables = append(p.Executables, pe)\n\t\t\tdep.PackagesByNameVersion[key] = p // update the map with the modified package\n\t\t\tfound = true\n\t\t\tcontinue\n\t\t}\n\n\t\tif p.NativePaths.Has(relativeDllPath) {\n\t\t\tpe.TargetPath = relativeDllPath\n\t\t\tp.Executables = append(p.Executables, pe)\n\t\t\tdep.PackagesByNameVersion[key] = p // update the map with the modified package\n\t\t\tfound = true\n\t\t\tcontinue\n\t\t}\n\t}\n\treturn found\n}\n\n// isParentOf checks if parentFile's directory is a prefix of childFile's directory.\nfunc isParentOf(parentFile, childFile string) bool {\n\tparentDir := path.Dir(parentFile)\n\tchildDir := path.Dir(childFile)\n\treturn strings.HasPrefix(childDir, parentDir)\n}\n\n// packagesFromDepsJSON creates packages from a list of logicalDepsJSON documents.\nfunc packagesFromDepsJSON(docs []logicalDepsJSON, config CatalogerConfig) ([]pkg.Package, []artifact.Relationship) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\tfor _, ldj := range docs {\n\t\t_, ps, rs := packagesFromLogicalDepsJSON(ldj, config)\n\t\tpkgs = append(pkgs, ps...)\n\t\trelationships = append(relationships, rs...)\n\t}\n\treturn pkgs, relationships\n}\n\n// packagesFromLogicalDepsJSON converts a logicalDepsJSON (using the new map type) into catalog packages.\nfunc packagesFromLogicalDepsJSON(doc logicalDepsJSON, config CatalogerConfig) (*pkg.Package, []pkg.Package, []artifact.Relationship) {\n\tvar rootPkg *pkg.Package\n\tif rootLpkg, hasRoot := doc.RootPackage(); hasRoot {\n\t\trootPkg = newDotnetDepsPackage(rootLpkg, doc.Location)\n\t}\n\n\tvar pkgs []pkg.Package\n\tpkgMap := make(map[string]pkg.Package)\n\tif rootPkg != nil {\n\t\tpkgs = append(pkgs, *rootPkg)\n\t\tpkgMap[createNameAndVersion(rootPkg.Name, rootPkg.Version)] = *rootPkg\n\t}\n\n\tnameVersions := doc.PackageNameVersions.List()\n\tsort.Strings(nameVersions)\n\n\t// process each non-root package\n\tskippedDepPkgs := make(map[string]logicalDepsJSONPackage)\n\tfor _, nameVersion := range nameVersions {\n\t\tname, version := extractNameAndVersion(nameVersion)\n\t\tif rootPkg != nil && name == rootPkg.Name && version == rootPkg.Version {\n\t\t\tcontinue\n\t\t}\n\t\tlp := doc.PackagesByNameVersion[nameVersion]\n\n\t\tif config.ExcludeProjectReferences && lp.Library != nil && lp.Library.Type == \"project\" {\n\t\t\tskippedDepPkgs[nameVersion] = lp\n\t\t\tcontinue\n\t\t}\n\n\t\tif config.DepPackagesMustHaveDLL && !lp.FoundDLLs(config.PropagateDLLClaimsToParents) {\n\t\t\t// could not find a paired DLL and the user required this...\n\t\t\tskippedDepPkgs[nameVersion] = lp\n\t\t\tcontinue\n\t\t}\n\n\t\t// check to see if we should skip this package because it does not claim a DLL (or has not dependency that claims a DLL)\n\t\tif config.DepPackagesMustClaimDLL && !lp.ClaimsDLLs(config.PropagateDLLClaimsToParents) {\n\t\t\tif config.RelaxDLLClaimsWhenBundlingDetected && !doc.BundlingDetected || !config.RelaxDLLClaimsWhenBundlingDetected {\n\t\t\t\t// could not find a runtime or resource path and the user required this...\n\t\t\t\t// and there is no evidence of a bundler in the dependencies (e.g. ILRepack)\n\t\t\t\tskippedDepPkgs[nameVersion] = lp\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tdotnetPkg := newDotnetDepsPackage(lp, doc.Location)\n\t\tif dotnetPkg != nil {\n\t\t\tpkgs = append(pkgs, *dotnetPkg)\n\t\t\tpkgMap[nameVersion] = *dotnetPkg\n\t\t}\n\t}\n\trels := relationshipsFromLogicalDepsJSON(doc, pkgMap, skippedDepPkgs)\n\n\t// ensure that any libman packages are associated with the all root packages\n\tfor _, libmanPkg := range doc.LibmanPackages {\n\t\tpkgs = append(pkgs, libmanPkg)\n\t\tif rootPkg == nil {\n\t\t\tcontinue\n\t\t}\n\t\trels = append(rels, artifact.Relationship{\n\t\t\tFrom: libmanPkg,\n\t\t\tTo:   *rootPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t})\n\t}\n\n\treturn rootPkg, pkgs, rels\n}\n\n// relationshipsFromLogicalDepsJSON creates relationships from a logicalDepsJSON document for only the given syft packages.\n// It is possible that the document describes more packages than that is provided as syft packages, in which cases\n// those relationships will not be created. If there are any skipped packages, we still want to logically represent\n// dependency relationships, jumping over the skipped packages.\nfunc relationshipsFromLogicalDepsJSON(doc logicalDepsJSON, pkgMap map[string]pkg.Package, skipped map[string]logicalDepsJSONPackage) []artifact.Relationship {\n\tvar relationships []artifact.Relationship\n\tfor _, lp := range doc.PackagesByNameVersion {\n\t\tif lp.Targets == nil {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, depNameVersion := range lp.dependencyNameVersions() {\n\t\t\tthisPkg, ok := pkgMap[lp.NameVersion]\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar depPkgs []pkg.Package\n\t\t\tdepPkg, ok := pkgMap[depNameVersion]\n\t\t\tif !ok {\n\t\t\t\tskippedDepPkg, ok := skipped[depNameVersion]\n\t\t\t\tif !ok {\n\t\t\t\t\t// this package wasn't explicitly skipped, so it could be a malformed deps.json file\n\t\t\t\t\t// ignore this case and do not create a relationships\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// we have a skipped package, so we need to create a relationship but looking a the nearest\n\t\t\t\t// package with an associated PE file for even dependency listed on the skipped package.\n\t\t\t\t// Take note that the skipped dependency's dependency could also be skipped, so we need to\n\t\t\t\t// do this recursively.\n\t\t\t\tdepPkgs = findNearestDependencyPackages(skippedDepPkg, pkgMap, skipped, strset.New())\n\t\t\t} else {\n\t\t\t\tdepPkgs = append(depPkgs, depPkg)\n\t\t\t}\n\n\t\t\tfor _, d := range depPkgs {\n\t\t\t\trel := artifact.Relationship{\n\t\t\t\t\tFrom: d,\n\t\t\t\t\tTo:   thisPkg,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t}\n\t\t\t\trelationships = append(relationships, rel)\n\t\t\t}\n\t\t}\n\t}\n\n\trelationship.Sort(relationships)\n\treturn relationships\n}\n\nfunc findNearestDependencyPackages(skippedDep logicalDepsJSONPackage, pkgMap map[string]pkg.Package, skipped map[string]logicalDepsJSONPackage, processed *strset.Set) []pkg.Package {\n\tvar nearestPkgs []pkg.Package\n\n\t// if we have already processed this package, skip it to avoid infinite recursion\n\tif processed.Has(skippedDep.NameVersion) {\n\t\treturn nearestPkgs\n\t}\n\n\tprocessed.Add(skippedDep.NameVersion)\n\n\tfor _, depNameVersion := range skippedDep.dependencyNameVersions() {\n\t\tdepPkg, ok := pkgMap[depNameVersion]\n\t\tif !ok {\n\t\t\tskippedDepPkg, ok := skipped[depNameVersion]\n\t\t\tif !ok {\n\t\t\t\t// this package wasn't explicitly skipped, so it could be a malformed deps.json file\n\t\t\t\t// ignore this case and do not create a relationships\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tnearestPkgs = append(nearestPkgs, findNearestDependencyPackages(skippedDepPkg, pkgMap, skipped, processed)...)\n\t\t} else {\n\t\t\tnearestPkgs = append(nearestPkgs, depPkg)\n\t\t}\n\t}\n\treturn nearestPkgs\n}\n\n// findDepsJSON locates and parses all deps.json files.\nfunc findDepsJSON(resolver file.Resolver) ([]logicalDepsJSON, error, error) {\n\tlocs, err := resolver.FilesByGlob(depsJSONGlob)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to find deps.json files: %w\", err)\n\t}\n\n\tvar depsJSONs []logicalDepsJSON\n\tvar unknownErr error\n\tfor _, loc := range locs {\n\t\tdj, err := readDepsJSON(resolver, loc)\n\t\tif err != nil {\n\t\t\tunknownErr = unknown.Append(unknownErr, loc, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tlibman, err := findLibmanJSON(resolver, loc)\n\t\tif err != nil {\n\t\t\tunknownErr = unknown.Append(unknownErr, loc, err)\n\t\t\tlibman = nil\n\t\t}\n\n\t\tdepsJSONs = append(depsJSONs, getLogicalDepsJSON(*dj, libman))\n\t}\n\n\treturn depsJSONs, unknownErr, nil\n}\n\n// readDepsJSON reads and parses a single deps.json file.\nfunc readDepsJSON(resolver file.Resolver, loc file.Location) (*depsJSON, error) {\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\treturn nil, unknown.New(loc, fmt.Errorf(\"unable to read deps.json file: %w\", err))\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\tdj, err := newDepsJSON(file.NewLocationReadCloser(loc, reader))\n\tif err != nil {\n\t\treturn nil, unknown.New(loc, fmt.Errorf(\"unable to parse deps.json file: %w\", err))\n\t}\n\n\tif dj == nil {\n\t\treturn nil, unknown.New(loc, fmt.Errorf(\"expected to find packages in deps.json but did not: %q\", loc.RealPath))\n\t}\n\n\treturn dj, nil\n}\n\n// findPEFiles locates and parses all PE files (dll/exe).\nfunc findPEFiles(resolver file.Resolver) ([]logicalPE, error, error) {\n\tpeLocs, err := resolver.FilesByGlob(dllGlob, exeGlob)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to find PE files: %w\", err)\n\t}\n\n\tvar peFiles []logicalPE\n\tvar unknownErr error\n\tfor _, loc := range peLocs {\n\t\tldpe, err := readPEFile(resolver, loc)\n\t\tif err != nil {\n\t\t\tunknownErr = unknown.Append(unknownErr, loc, err)\n\t\t\tcontinue\n\t\t}\n\t\tif ldpe == nil {\n\t\t\tcontinue\n\t\t}\n\t\tpeFiles = append(peFiles, *ldpe)\n\t}\n\n\treturn peFiles, unknownErr, nil\n}\n\n// readPEFile reads and parses a single PE file.\nfunc readPEFile(resolver file.Resolver, loc file.Location) (*logicalPE, error) {\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\treturn nil, unknown.New(loc, fmt.Errorf(\"unable to read PE file: %w\", err))\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\tldpe, err := readLogicalPE(file.NewLocationReadCloser(loc, reader))\n\tif err != nil {\n\t\treturn nil, unknown.New(loc, fmt.Errorf(\"unable to parse PE file: %w\", err))\n\t}\n\n\tif ldpe == nil {\n\t\treturn nil, nil\n\t}\n\n\tif !ldpe.CLR.HasEvidenceOfCLR() {\n\t\t// this is not a .NET binary\n\t\treturn nil, nil\n\t}\n\n\treturn ldpe, nil\n}\n\nfunc extractEmbeddedDeps(pe logicalPE) *logicalDepsJSON {\n\tdoc, err := newDepsJSON(file.NewLocationReadCloser(pe.Location, io.NopCloser(strings.NewReader(pe.EmbeddedDepsJSON))))\n\tif err != nil || doc == nil {\n\t\treturn nil\n\t}\n\n\tdoc.Location = pe.Location\n\tlDoc := getLogicalDepsJSON(*doc, nil)\n\treturn &lDoc\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/deps_cataloger.go",
    "content": "package dotnet\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// depsCataloger will search for deps.json file contents.\n//\n// Deprecated: use depsBinaryCataloger instead which combines the PE and deps.json data which yields more accurate results (will be removed in syft v2.0).\ntype depsCataloger struct {\n}\n\nfunc (c depsCataloger) Name() string {\n\treturn \"dotnet-deps-cataloger\"\n}\n\nfunc (c depsCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tdepJSONDocs, unknowns, err := findDepsJSON(resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tpkgs, rels := packagesFromDepsJSON(depJSONDocs, CatalogerConfig{\n\t\tDepPackagesMustHaveDLL:  false,\n\t\tDepPackagesMustClaimDLL: false,\n\t})\n\treturn pkgs, rels, unknowns\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/deps_json.go",
    "content": "package dotnet\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype depsJSON struct {\n\tLocation      file.Location\n\tRuntimeTarget runtimeTarget                    `json:\"runtimeTarget\"`\n\tTargets       map[string]map[string]depsTarget `json:\"targets\"`\n\tLibraries     map[string]depsLibrary           `json:\"libraries\"`\n}\n\ntype runtimeTarget struct {\n\tName string `json:\"name\"`\n}\n\ntype depsTarget struct {\n\tDependencies map[string]string            `json:\"dependencies\"`\n\tRuntime      map[string]map[string]string `json:\"runtime\"`\n\tResources    map[string]map[string]string `json:\"resources\"`\n\tCompile      map[string]map[string]string `json:\"compile\"`\n\tNative       map[string]map[string]string `json:\"native\"`\n}\n\nfunc (t depsTarget) nativePaths() *strset.Set {\n\tresults := strset.New()\n\tfor path := range t.Native {\n\t\tresults.Add(path)\n\t}\n\treturn results\n}\n\nfunc (t depsTarget) compilePaths() map[string]string {\n\tresult := make(map[string]string)\n\tfor path := range t.Compile {\n\t\ttrimmedPath := trimLibPrefix(path)\n\t\tif _, exists := result[trimmedPath]; exists {\n\t\t\tcontinue\n\t\t}\n\t\tresult[trimmedPath] = path\n\t}\n\treturn result\n}\n\nfunc (t depsTarget) resourcePaths() map[string]string {\n\tresult := make(map[string]string)\n\tfor path := range t.Resources {\n\t\ttrimmedPath := trimLibPrefix(path)\n\t\tif _, exists := result[trimmedPath]; exists {\n\t\t\tcontinue\n\t\t}\n\t\tresult[trimmedPath] = path\n\t}\n\treturn result\n}\n\nfunc (t depsTarget) runtimePaths() map[string]string {\n\tresult := make(map[string]string)\n\tfor path := range t.Runtime {\n\t\ttrimmedPath := trimLibPrefix(path)\n\t\tif _, exists := result[trimmedPath]; exists {\n\t\t\tcontinue\n\t\t}\n\t\tresult[trimmedPath] = path\n\t}\n\treturn result\n}\n\ntype depsLibrary struct {\n\tType     string `json:\"type\"`\n\tPath     string `json:\"path\"`\n\tSha512   string `json:\"sha512\"`\n\tHashPath string `json:\"hashPath\"`\n}\n\n// logicalDepsJSONPackage merges target and library information for a given package from all dep.json entries.\n// Note: this is not a real construct of the deps.json, just a useful reorganization of the data for downstream processing.\ntype logicalDepsJSONPackage struct {\n\tNameVersion string\n\tTargets     []depsTarget\n\tLibrary     *depsLibrary\n\n\t// AnyChildClaimsDLLs is a flag that indicates if any of the children of this package claim a DLL associated with them in the deps.json.\n\tAnyChildClaimsDLLs bool\n\n\t// AnyChildHasDLLs is a flag that indicates if any of the children of this package have a DLL associated with them (found on disk).\n\tAnyChildHasDLLs bool\n\n\t// RuntimePathsByRelativeDLLPath is a map of the relative path to the DLL relative to the deps.json file\n\t// to the target path as described in the deps.json target entry under \"runtime\".\n\tRuntimePathsByRelativeDLLPath map[string]string\n\n\t// ResourcePathsByRelativeDLLPath is a map of the relative path to the DLL relative to the deps.json file\n\t// to the target path as described in the deps.json target entry under \"resource\".\n\tResourcePathsByRelativeDLLPath map[string]string\n\n\t// CompilePathsByRelativeDLLPath is a map of the relative path to the DLL relative to the deps.json file\n\t// to the target path as described in the deps.json target entry under \"compile\".\n\tCompilePathsByRelativeDLLPath map[string]string\n\n\t// NativePaths is a map of the relative path to the DLL relative to the deps.json file\n\t// to the target path as described in the deps.json target entry under \"native\". These should not have\n\t// any runtime references to trim from the front of the path.\n\tNativePaths *strset.Set\n\n\t// Executables is a list of all the executables that are part of this package. This is populated by the PE cataloger\n\t// and not something that is found in the deps.json file. This allows us to associate the PE files with this package\n\t// based on the relative path to the DLL.\n\tExecutables []logicalPE\n}\n\nfunc (l *logicalDepsJSONPackage) dependencyNameVersions() []string {\n\tif l.Targets == nil {\n\t\treturn nil\n\t}\n\tresults := strset.New()\n\tfor _, t := range l.Targets {\n\t\tfor name, version := range t.Dependencies {\n\t\t\tresults.Add(createNameAndVersion(name, version))\n\t\t}\n\t}\n\tr := results.List()\n\tsort.Strings(r)\n\treturn r\n}\n\n// ClaimsDLLs indicates if this package has any DLLs associated with it (directly or indirectly with a dependency).\nfunc (l *logicalDepsJSONPackage) ClaimsDLLs(includeChildren bool) bool {\n\tselfClaim := len(l.RuntimePathsByRelativeDLLPath) > 0 || len(l.ResourcePathsByRelativeDLLPath) > 0 || len(l.CompilePathsByRelativeDLLPath) > 0 || len(l.NativePaths.List()) > 0\n\tif !includeChildren {\n\t\treturn selfClaim\n\t}\n\treturn selfClaim || l.AnyChildClaimsDLLs\n}\n\nfunc (l *logicalDepsJSONPackage) FoundDLLs(includeChildren bool) bool {\n\tselfClaim := len(l.Executables) > 0\n\tif !includeChildren {\n\t\treturn selfClaim\n\t}\n\treturn selfClaim || l.AnyChildHasDLLs\n}\n\ntype logicalDepsJSON struct {\n\tLocation              file.Location\n\tRuntimeTarget         runtimeTarget\n\tPackagesByNameVersion map[string]logicalDepsJSONPackage\n\tPackageNameVersions   *strset.Set\n\tBundlingDetected      bool\n\tLibmanPackages        []pkg.Package\n}\n\nfunc (l logicalDepsJSON) RootPackage() (logicalDepsJSONPackage, bool) {\n\trootName := getDepsJSONFilePrefix(l.Location.RealPath)\n\tif rootName == \"\" {\n\t\treturn logicalDepsJSONPackage{}, false\n\t}\n\n\t// iterate over the map to find the root package. If we don't find the root package, that's ok! We still want to\n\t// get all of the packages that are defined in this deps.json file.\n\tfor _, p := range l.PackagesByNameVersion {\n\t\tname, _ := extractNameAndVersion(p.NameVersion)\n\t\t// there can be multiple projects defined in a deps.json and only by convention is the root project the same name as the deps.json file\n\t\t// however there are other configurations that can lead to differences (e.g. \"tool_fsc\" vs \"fsc.deps.json\").\n\t\tif p.Library != nil && p.Library.Type == \"project\" && name == rootName {\n\t\t\treturn p, true\n\t\t}\n\t}\n\treturn logicalDepsJSONPackage{}, false\n}\n\nfunc newDepsJSON(reader file.LocationReadCloser) (*depsJSON, error) {\n\tvar doc depsJSON\n\tdec := json.NewDecoder(reader)\n\tif err := dec.Decode(&doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse deps.json file: %w\", err)\n\t}\n\tdoc.Location = reader.Location\n\treturn &doc, nil\n}\n\nvar knownBundlers = strset.New(\n\t\"ILRepack.Lib.MSBuild.Task\", // The most official use of ILRepack https://github.com/gluck/il-repack\n\t\"ILRepack.Lib\",              // library interface for ILRepack\n\t\"ILRepack.Lib.MSBuild\",      // uses Cecil 0.10\n\t\"ILRepack.Lib.NET\",          // uses ModuleDefinitions instead of filenames\n\t\"ILRepack.NETStandard\",      // .NET Standard compatible version\n\t\"ILRepack.FullAuto\",         // https://github.com/kekyo/ILRepack.FullAuto\n\t\"ILMerge\",                   // deprecated, but still used in some projects https://github.com/dotnet/ILMerge\n\t\"JetBrains.Build.ILRepack\",  // generally from https://www.nuget.org/packages?q=ilrepack&sortBy=relevance\n\n\t// other bundling/modification tools found in results\n\t\"PostSharp.Community.Packer\", // Embeds dependencies as resources\n\t\"Brokenevent.ILStrip\",        // assembly cleaner (removes unused parts)\n\t\"Brokenevent.ILStrip.CLI\",    // command-line/MSBuild variant\n\t\"Costura.Fody\",               // referenced in MSBuildRazorCompiler.Lib\n\t\"Fody\",                       // IL weaving framework\n)\n\nfunc getLogicalDepsJSON(deps depsJSON, lm *libmanJSON) logicalDepsJSON {\n\tpackageMap := make(map[string]*logicalDepsJSONPackage)\n\tnameVersions := strset.New()\n\n\tfor _, targets := range deps.Targets {\n\t\tfor libName, target := range targets {\n\t\t\t_, exists := packageMap[libName]\n\t\t\tif exists {\n\t\t\t\t// merge this with existing targets (multiple targets can exist for the same library)\n\t\t\t\tp := packageMap[libName]\n\t\t\t\tp.Targets = append(p.Targets, target)\n\t\t\t\tp.RuntimePathsByRelativeDLLPath = mergeMaps(p.RuntimePathsByRelativeDLLPath, target.runtimePaths())\n\t\t\t\tp.ResourcePathsByRelativeDLLPath = mergeMaps(p.ResourcePathsByRelativeDLLPath, target.resourcePaths())\n\t\t\t\tp.CompilePathsByRelativeDLLPath = mergeMaps(p.CompilePathsByRelativeDLLPath, target.compilePaths())\n\t\t\t\tp.NativePaths = mergeSets(p.NativePaths, target.nativePaths())\n\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar lib *depsLibrary\n\t\t\tl, ok := deps.Libraries[libName]\n\t\t\tif ok {\n\t\t\t\tlib = &l\n\t\t\t}\n\n\t\t\tp := &logicalDepsJSONPackage{\n\t\t\t\tNameVersion:                    libName,\n\t\t\t\tLibrary:                        lib,\n\t\t\t\tTargets:                        []depsTarget{target},\n\t\t\t\tRuntimePathsByRelativeDLLPath:  target.runtimePaths(),\n\t\t\t\tResourcePathsByRelativeDLLPath: target.resourcePaths(),\n\t\t\t\tCompilePathsByRelativeDLLPath:  target.compilePaths(),\n\t\t\t\tNativePaths:                    target.nativePaths(),\n\t\t\t}\n\t\t\tpackageMap[libName] = p\n\t\t\tnameVersions.Add(libName)\n\t\t}\n\t}\n\tpackages := make(map[string]logicalDepsJSONPackage)\n\tvar bundlingDetected bool\n\tfor _, p := range packageMap {\n\t\tname := strings.Split(p.NameVersion, \"/\")[0]\n\t\tif !bundlingDetected && knownBundlers.Has(name) {\n\t\t\tbundlingDetected = true\n\t\t}\n\t\tp.AnyChildClaimsDLLs = searchForDLLClaims(packageMap, strset.New(), p.dependencyNameVersions()...)\n\t\tp.AnyChildHasDLLs = searchForDLLEvidence(packageMap, strset.New(), p.dependencyNameVersions()...)\n\t\tpackages[p.NameVersion] = *p\n\t}\n\n\treturn logicalDepsJSON{\n\t\tLocation:              deps.Location,\n\t\tRuntimeTarget:         deps.RuntimeTarget,\n\t\tPackagesByNameVersion: packages,\n\t\tPackageNameVersions:   nameVersions,\n\t\tBundlingDetected:      bundlingDetected,\n\t\tLibmanPackages:        lm.packages(),\n\t}\n}\n\nfunc mergeMaps(m1, m2 map[string]string) map[string]string {\n\tif m1 == nil {\n\t\tm1 = make(map[string]string)\n\t}\n\tfor k, v := range m2 {\n\t\tif _, exists := m1[k]; !exists {\n\t\t\tm1[k] = v\n\t\t}\n\t}\n\treturn m1\n}\n\nfunc mergeSets(s1, s2 *strset.Set) *strset.Set {\n\treturn strset.Union(s1, s2)\n}\n\ntype visitorFunc func(p *logicalDepsJSONPackage) bool\n\n// searchForDLLEvidence recursively searches for executables found for any of the given nameVersions and children recursively.\nfunc searchForDLLEvidence(packageMap map[string]*logicalDepsJSONPackage, visited *strset.Set, nameVersions ...string) bool {\n\treturn traverseDependencies(packageMap, func(p *logicalDepsJSONPackage) bool {\n\t\treturn p.FoundDLLs(true)\n\t}, visited, nameVersions...)\n}\n\n// searchForDLLClaims recursively searches for DLL claims in the deps.json for any of the given nameVersions and children recursively.\nfunc searchForDLLClaims(packageMap map[string]*logicalDepsJSONPackage, visited *strset.Set, nameVersions ...string) bool {\n\treturn traverseDependencies(packageMap, func(p *logicalDepsJSONPackage) bool {\n\t\treturn p.ClaimsDLLs(true)\n\t}, visited, nameVersions...)\n}\n\nfunc traverseDependencies(packageMap map[string]*logicalDepsJSONPackage, visitor visitorFunc, visited *strset.Set, nameVersions ...string) bool {\n\tif len(nameVersions) == 0 {\n\t\treturn false\n\t}\n\n\tfor _, nameVersion := range nameVersions {\n\t\tif visited.Has(nameVersion) {\n\t\t\tcontinue\n\t\t}\n\t\tvisited.Add(nameVersion)\n\t\tif p, ok := packageMap[nameVersion]; ok {\n\t\t\tif visitor(p) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tif traverseDependencies(packageMap, visitor, visited, p.dependencyNameVersions()...) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\nvar libPathPattern = regexp.MustCompile(`^(?:runtimes/[^/]+/)?lib/net[^/]+/(?P<targetPath>.+)`)\n\n// trimLibPrefix removes prefixes like \"lib/net6.0/\" or \"runtimes/linux-arm/lib/netcoreapp2.2/\" from a path.\n// It captures and returns everything after the framework version section using a named capture group.\nfunc trimLibPrefix(s string) string {\n\tif match := libPathPattern.FindStringSubmatch(s); len(match) > 1 {\n\t\t// Get the index of the named capture group\n\t\ttargetPathIndex := libPathPattern.SubexpIndex(\"targetPath\")\n\t\tif targetPathIndex != -1 {\n\t\t\treturn match[targetPathIndex]\n\t\t}\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/deps_json_test.go",
    "content": "package dotnet\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestTrimLibPrefix(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"Empty path\",\n\t\t\tinput:    \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"simple .NET 6.0 path\",\n\t\t\tinput:    \"lib/net6.0/Humanizer.dll\",\n\t\t\texpected: \"Humanizer.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"locale-specific resource path\",\n\t\t\tinput:    \"lib/net6.0/af/Humanizer.resources.dll\",\n\t\t\texpected: \"af/Humanizer.resources.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"netstandard path\",\n\t\t\tinput:    \"lib/netstandard2.0/Serilog.Sinks.Console.dll\",\n\t\t\texpected: \"Serilog.Sinks.Console.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"runtime-specific path\",\n\t\t\tinput:    \"runtimes/linux-arm/lib/netcoreapp2.2/System.Collections.Concurrent.dll\",\n\t\t\texpected: \"System.Collections.Concurrent.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"runtime-specific path with locale\",\n\t\t\tinput:    \"runtimes/win/lib/net6.0/fr-ME/re/Microsoft.Data.SqlClient.resources.dll\",\n\t\t\texpected: \"fr-ME/re/Microsoft.Data.SqlClient.resources.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"subdirectories\",\n\t\t\tinput:    \"lib/net7.0/Microsoft/Extensions/Logging.dll\",\n\t\t\texpected: \"Microsoft/Extensions/Logging.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"doesn't match the pattern\",\n\t\t\tinput:    \"content/styles/main.css\",\n\t\t\texpected: \"content/styles/main.css\",\n\t\t},\n\t\t{\n\t\t\tname:     \"different framework format\",\n\t\t\tinput:    \"lib/net472/Newtonsoft.Json.dll\",\n\t\t\texpected: \"Newtonsoft.Json.dll\",\n\t\t},\n\t\t{\n\t\t\tname:     \"frameworkless lib\",\n\t\t\tinput:    \"lib/Newtonsoft.Json.dll\",\n\t\t\texpected: \"lib/Newtonsoft.Json.dll\", // should not match our pattern\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult := trimLibPrefix(tc.input)\n\t\t\tif result != tc.expected {\n\t\t\t\tt.Errorf(\"trimLibPrefix(%q) = %q; want %q\", tc.input, result, tc.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetLogicalDepsJSON_MergeTargets(t *testing.T) {\n\tdeps := depsJSON{\n\t\tLocation: file.NewLocation(\"/path/to/deps.json\"),\n\t\tRuntimeTarget: runtimeTarget{\n\t\t\tName: \".NETCoreApp,Version=v6.0\",\n\t\t},\n\t\t// note: for this test we have two targets with the same name, which will be merged when creating a logical deps\n\t\tTargets: map[string]map[string]depsTarget{\n\t\t\t\".NETCoreApp,Version=v6.0\": {\n\t\t\t\t\"Microsoft.CodeAnalysis.CSharp/4.0.0\": {\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"Microsoft.CodeAnalysis.Common\": \"4.0.0\",\n\t\t\t\t\t},\n\t\t\t\t\tRuntime: map[string]map[string]string{\n\t\t\t\t\t\t\"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll\": {\n\t\t\t\t\t\t\t\"assemblyVersion\": \"4.0.0.0\",\n\t\t\t\t\t\t\t\"fileVersion\":     \"4.0.21.51404\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tResources: map[string]map[string]string{\n\t\t\t\t\t\t\"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"cs\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"de\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"es\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"fr\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"it\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"ja\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"ko\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"pl\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"pt-BR\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"ru\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"tr\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"zh-Hans\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll\": {\n\t\t\t\t\t\t\t\"locale\": \"zh-Hant\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"net6.0\": {\n\t\t\t\t\"Microsoft.CodeAnalysis.CSharp/4.0.0\": {\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"Microsoft.CodeAnalysis.Common\": \"4.0.0\",\n\t\t\t\t\t},\n\t\t\t\t\tCompile: map[string]map[string]string{\n\t\t\t\t\t\t\"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll\": {},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"Microsoft.CodeAnalysis.Common/4.0.0\": {\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"Microsoft.CodeAnalysis.CSharp\": \"4.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tLibraries: map[string]depsLibrary{\n\t\t\t\"Microsoft.CodeAnalysis.CSharp/4.0.0\": {\n\t\t\t\tType:     \"package\",\n\t\t\t\tPath:     \"microsoft.codeanalysis.csharp/4.0.0\",\n\t\t\t\tSha512:   \"sha512-example-hash\",\n\t\t\t\tHashPath: \"microsoft.codeanalysis.csharp.4.0.0.nupkg.sha512\",\n\t\t\t},\n\t\t},\n\t}\n\n\tresult := getLogicalDepsJSON(deps, &libmanJSON{})\n\n\tassert.Equal(t, \"/path/to/deps.json\", result.Location.RealPath)\n\tassert.Equal(t, \".NETCoreApp,Version=v6.0\", result.RuntimeTarget.Name)\n\n\tlibPackage, exists := result.PackagesByNameVersion[\"Microsoft.CodeAnalysis.CSharp/4.0.0\"]\n\trequire.True(t, exists, \"Expected to find the merged package\")\n\n\tassert.NotNil(t, libPackage.Library)\n\tassert.Equal(t, \"package\", libPackage.Library.Type)\n\tassert.Equal(t, \"microsoft.codeanalysis.csharp/4.0.0\", libPackage.Library.Path)\n\tassert.Equal(t, \"sha512-example-hash\", libPackage.Library.Sha512)\n\tassert.Equal(t, \"microsoft.codeanalysis.csharp.4.0.0.nupkg.sha512\", libPackage.Library.HashPath)\n\n\trequire.Equal(t, 2, len(libPackage.Targets), \"Expected 2 targets to be merged\")\n\n\texpectedRuntimePaths := map[string]string{\n\t\t\"Microsoft.CodeAnalysis.CSharp.dll\": \"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll\",\n\t}\n\tif diff := cmp.Diff(expectedRuntimePaths, libPackage.RuntimePathsByRelativeDLLPath); diff != \"\" {\n\t\tt.Errorf(\"RuntimePathsByRelativeDLLPath mismatch (-expected +actual):\\n%s\", diff)\n\t}\n\n\texpectedResourcePaths := map[string]string{\n\t\t\"cs/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"de/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"es/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"fr/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"it/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"ja/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"ko/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"pl/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll\":   \"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"ru/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"tr/Microsoft.CodeAnalysis.CSharp.resources.dll\":      \"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll\": \"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t\t\"zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll\": \"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll\",\n\t}\n\tif diff := cmp.Diff(expectedResourcePaths, libPackage.ResourcePathsByRelativeDLLPath); diff != \"\" {\n\t\tt.Errorf(\"ResourcePathsByRelativeDLLPath mismatch (-expected +actual):\\n%s\", diff)\n\t}\n\n\texpectedCompilePaths := map[string]string{\n\t\t\"Microsoft.CodeAnalysis.CSharp.dll\": \"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll\",\n\t}\n\tif diff := cmp.Diff(expectedCompilePaths, libPackage.CompilePathsByRelativeDLLPath); diff != \"\" {\n\t\tt.Errorf(\"CompilePathsByRelativeDLLPath mismatch (-expected +actual):\\n%s\", diff)\n\t}\n\n\tassert.Equal(t, 0, libPackage.NativePaths.Size(), \"Expected no native paths\")\n\n\tassert.True(t, result.PackageNameVersions.Has(\"Microsoft.CodeAnalysis.CSharp/4.0.0\"))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/libman_json.go",
    "content": "package dotnet\n\nimport (\n\t\"encoding/json\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// libmanJSON represents the libman.json file format in ASP.NET projects for describing javascript assets to be downloaded and bundled\n// see https://github.com/aspnet/LibraryManager/wiki/libman.json-reference\ntype libmanJSON struct {\n\tLocation        file.Location `json:\"-\"`\n\tVersion         string        `json:\"version\"`\n\tDefaultProvider string        `json:\"defaultProvider\"`\n\tLibraries       []struct {\n\t\tLibrary     string   `json:\"library\"`\n\t\tFiles       []string `json:\"files\"`\n\t\tDestination string   `json:\"destination\"`\n\t\tProvider    string   `json:\"provider,omitempty\"`\n\t} `json:\"libraries\"`\n}\n\nfunc (l *libmanJSON) packages() []pkg.Package {\n\tif l == nil {\n\t\treturn nil\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, lib := range l.Libraries {\n\t\tif lib.Provider == \"filesystem\" {\n\t\t\t// there is no name and version with filesystem providers\n\t\t\tcontinue\n\t\t}\n\t\tfields := strings.Split(lib.Library, \"@\")\n\t\tif len(fields) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tname := fields[0]\n\t\tversion := fields[1]\n\n\t\tp := pkg.Package{\n\t\t\tName:      name,\n\t\t\tVersion:   version,\n\t\t\tLocations: file.NewLocationSet(l.Location),\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tPURL: packageurl.NewPackageURL(\n\t\t\t\tpackageurl.TypeNPM,\n\t\t\t\t\"\",\n\t\t\t\tname,\n\t\t\t\tversion,\n\t\t\t\tnil,\n\t\t\t\t\"\",\n\t\t\t).ToString(),\n\t\t\tLanguage: pkg.JavaScript,\n\t\t}\n\n\t\tp.SetID()\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\treturn pkgs\n}\n\nfunc newLibmanJSON(reader file.LocationReadCloser) (*libmanJSON, error) {\n\tvar doc libmanJSON\n\tdec := json.NewDecoder(reader)\n\tif err := dec.Decode(&doc); err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor i := range doc.Libraries {\n\t\tl := &doc.Libraries[i]\n\t\tif l.Provider == \"\" {\n\t\t\tl.Provider = doc.DefaultProvider\n\t\t}\n\t}\n\n\tdoc.Location = reader.Location\n\n\treturn &doc, nil\n}\n\nfunc findLibmanJSON(resolver file.Resolver, depsJSON file.Location) (*libmanJSON, error) {\n\tparent := path.Dir(depsJSON.RealPath)\n\tloc := resolver.RelativeFileByPath(depsJSON, path.Join(parent, \"libman.json\"))\n\tif loc == nil {\n\t\treturn nil, nil\n\t}\n\n\treader, err := resolver.FileContentsByLocation(*loc)\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlj, err := newLibmanJSON(file.NewLocationReadCloser(*loc, reader))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn lj, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/package.go",
    "content": "package dotnet\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/go-version\"\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\t// spaceRegex includes nbsp (#160) considered to be a space character\n\tspaceRegex              = regexp.MustCompile(`[\\s\\xa0]+`)\n\tnumberRegex             = regexp.MustCompile(`\\d`)\n\tversionPunctuationRegex = regexp.MustCompile(`[.,]+`)\n)\n\n// newDotnetDepsPackage creates a new Dotnet dependency package from a logicalDepsJSONPackage.\n// Note that the new logicalDepsJSONPackage now directly holds library and executable information.\nfunc newDotnetDepsPackage(lp logicalDepsJSONPackage, depsLocation file.Location) *pkg.Package {\n\tname, ver := extractNameAndVersion(lp.NameVersion)\n\tlocs := file.NewLocationSet(depsLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\tfor _, pe := range lp.Executables {\n\t\tlocs.Add(pe.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t}\n\n\tm := newDotnetDepsEntry(lp)\n\n\tvar cpes []cpe.CPE\n\tif isRuntime(name) {\n\t\tcpes = runtimeCPEs(ver)\n\t}\n\n\tp := &pkg.Package{\n\t\tName:      name,\n\t\tVersion:   ver,\n\t\tLocations: locs,\n\t\tPURL:      packageURL(m),\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tCPEs:      cpes,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc isRuntime(name string) bool {\n\t// found in a self-contained net8 app in the deps.json for the application\n\tselfContainedRuntimeDependency := strings.HasPrefix(name, \"runtimepack.Microsoft.NETCore.App.Runtime\")\n\t// found in net8 apps in the deps.json for the runtime\n\texplicitRuntimeDependency := strings.HasPrefix(name, \"Microsoft.NETCore.App.Runtime\")\n\t// found in net2 apps in the deps.json for the runtime\n\tproducesARuntime := strings.HasPrefix(name, \"runtime\") && strings.HasSuffix(name, \"Microsoft.NETCore.App\")\n\treturn selfContainedRuntimeDependency || explicitRuntimeDependency || producesARuntime\n}\n\nfunc runtimeCPEs(ver string) []cpe.CPE {\n\t// .NET Core Versions\n\t// 2016: .NET Core 1.0, cpe:2.3:a:microsoft:dotnet_core:1.0:*:*:*:*:*:*:*\n\t// 2016: .NET Core 1.1, cpe:2.3:a:microsoft:dotnet_core:1.1:*:*:*:*:*:*:*\n\t// 2017: .NET Core 2.0, cpe:2.3:a:microsoft:dotnet_core:2.0:*:*:*:*:*:*:*\n\t// 2018: .NET Core 2.1, cpe:2.3:a:microsoft:dotnet_core:2.1:*:*:*:*:*:*:*\n\t// 2018: .NET Core 2.2, cpe:2.3:a:microsoft:dotnet_core:2.2:*:*:*:*:*:*:*\n\t// 2019: .NET Core 3.0, cpe:2.3:a:microsoft:dotnet_core:3.0:*:*:*:*:*:*:*\n\t// 2019: .NET Core 3.1, cpe:2.3:a:microsoft:dotnet_core:3.1:*:*:*:*:*:*:*\n\n\t// Unified .NET Versions\n\t// 2020: .NET 5.0, cpe:2.3:a:microsoft:dotnet:5.0:*:*:*:*:*:*:*\n\t// 2021: .NET 6.0, cpe:2.3:a:microsoft:dotnet:6.0:*:*:*:*:*:*:*\n\t// 2022: .NET 7.0, cpe:2.3:a:microsoft:dotnet:7.0:*:*:*:*:*:*:*\n\t// 2023: .NET 8.0, cpe:2.3:a:microsoft:dotnet:8.0:*:*:*:*:*:*:*\n\t// 2024: .NET 9.0, cpe:2.3:a:microsoft:dotnet:9.0:*:*:*:*:*:*:*\n\t// 2025 ...?\n\n\tfields := strings.Split(ver, \".\")\n\tmajorVersion, err := strconv.Atoi(fields[0])\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Tracef(\"failed to parse .NET major version from %q\", ver)\n\t\treturn nil\n\t}\n\n\tvar minorVersion int\n\tif len(fields) > 1 {\n\t\tminorVersion, err = strconv.Atoi(fields[1])\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Tracef(\"failed to parse .NET minor version from %q\", ver)\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tproductName := \"dotnet\"\n\tif majorVersion < 5 {\n\t\tproductName = \"dotnet_core\"\n\t}\n\n\treturn []cpe.CPE{\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\tProduct: productName,\n\t\t\t\tVersion: fmt.Sprintf(\"%d.%d\", majorVersion, minorVersion),\n\t\t\t},\n\t\t\t// we didn't find this in the underlying material, but this is the convention in NVD and we are certain this is a runtime package\n\t\t\tSource: cpe.DeclaredSource,\n\t\t},\n\t}\n}\n\n// newDotnetDepsEntry creates a Dotnet dependency entry using the new logicalDepsJSONPackage.\nfunc newDotnetDepsEntry(lp logicalDepsJSONPackage) pkg.DotnetDepsEntry {\n\tname, ver := extractNameAndVersion(lp.NameVersion)\n\n\t// since this is a metadata type, we should not allocate this collection unless there are entries; otherwise\n\t// the JSON serialization will produce an empty object instead of omitting the field.\n\tvar pes map[string]pkg.DotnetPortableExecutableEntry\n\tif len(lp.Executables) > 0 {\n\t\tpes = make(map[string]pkg.DotnetPortableExecutableEntry)\n\t\tfor _, pe := range lp.Executables {\n\t\t\tpes[pe.TargetPath] = newDotnetPortableExecutableEntry(pe)\n\t\t}\n\t}\n\n\tvar path, sha, hashPath, libType string\n\tlib := lp.Library\n\tif lib != nil {\n\t\tpath = lib.Path\n\t\tsha = lib.Sha512\n\t\thashPath = lib.HashPath\n\t\tlibType = lib.Type\n\t}\n\n\treturn pkg.DotnetDepsEntry{\n\t\tName:        name,\n\t\tVersion:     ver,\n\t\tPath:        path,\n\t\tSha512:      sha,\n\t\tHashPath:    hashPath,\n\t\tType:        libType,\n\t\tExecutables: pes,\n\t}\n}\n\n// newDotnetPortableExecutableEntry creates a portable executable entry from a File.\nfunc newDotnetPortableExecutableEntry(pe logicalPE) pkg.DotnetPortableExecutableEntry {\n\treturn newDotnetPortableExecutableEntryFromMap(pe.VersionResources)\n}\n\nfunc newDotnetPortableExecutableEntryFromMap(vr map[string]string) pkg.DotnetPortableExecutableEntry {\n\treturn pkg.DotnetPortableExecutableEntry{\n\t\t// for some reason, the assembly version is sometimes stored as \"Assembly Version\" and sometimes as \"AssemblyVersion\"\n\t\tAssemblyVersion: cleanVersionResourceField(vr[\"Assembly Version\"], vr[\"AssemblyVersion\"]),\n\t\tLegalCopyright:  cleanVersionResourceField(vr[\"LegalCopyright\"]),\n\t\tComments:        cleanVersionResourceField(vr[\"Comments\"]),\n\t\tInternalName:    cleanVersionResourceField(vr[\"InternalName\"]),\n\t\tCompanyName:     cleanVersionResourceField(vr[\"CompanyName\"]),\n\t\tProductName:     cleanVersionResourceField(vr[\"ProductName\"]),\n\t\tProductVersion:  cleanVersionResourceField(vr[\"ProductVersion\"]),\n\t}\n}\n\nfunc cleanVersionResourceField(values ...string) string {\n\tfor _, value := range values {\n\t\tif value == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\treturn strings.TrimSpace(value)\n\t}\n\treturn \"\"\n}\n\nfunc getDepsJSONFilePrefix(p string) string {\n\tr := regexp.MustCompile(`([^\\\\\\/]+)\\.deps\\.json$`)\n\tmatch := r.FindStringSubmatch(p)\n\tif len(match) > 1 {\n\t\treturn match[1]\n\t}\n\n\tr = regexp.MustCompile(`([^\\\\\\/]+)\\.exe$`)\n\tmatch = r.FindStringSubmatch(p)\n\tif len(match) > 1 {\n\t\treturn match[1]\n\t}\n\treturn \"\"\n}\n\nfunc extractNameAndVersion(nameVersion string) (name, version string) {\n\tfields := strings.Split(nameVersion, \"/\")\n\tname = fields[0]\n\tif len(fields) > 1 {\n\t\tversion = fields[1]\n\t}\n\treturn\n}\n\nfunc createNameAndVersion(name, version string) string {\n\treturn fmt.Sprintf(\"%s/%s\", name, version)\n}\n\nfunc packageURL(m pkg.DotnetDepsEntry) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\t// Although we use TypeNuget here due to historical reasons, note that it does not necessarily\n\t\t// mean the package is a NuGet package.\n\t\tpackageurl.TypeNuget,\n\t\t\"\",\n\t\tm.Name,\n\t\tm.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc newDotnetBinaryPackage(versionResources map[string]string, f file.Location) pkg.Package {\n\t// TODO: we may decide to use the runtime information in the metadata, but that is not captured today\n\tname, _ := findNameAndRuntimeFromVersionResources(versionResources)\n\n\tif name == \"\" {\n\t\t// older .NET runtime dlls may not have any version resources\n\t\tname = strings.TrimSuffix(strings.TrimSuffix(path.Base(f.RealPath), \".exe\"), \".dll\")\n\t}\n\n\tver := findVersionFromVersionResources(versionResources)\n\n\tmetadata := newDotnetPortableExecutableEntryFromMap(versionResources)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   ver,\n\t\tLocations: file.NewLocationSet(f.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tType:      pkg.DotnetPkg,\n\t\tLanguage:  pkg.Dotnet,\n\t\tPURL:      binaryPackageURL(name, ver),\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc binaryPackageURL(name, version string) string {\n\tif name == \"\" {\n\t\treturn \"\"\n\t}\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeNuget,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t).ToString()\n}\n\nvar binRuntimeSuffixPattern = regexp.MustCompile(`\\s*\\((?P<runtime>net[^)]*[0-9]+(\\.[0-9]+)?)\\)$`)\n\nfunc findNameAndRuntimeFromVersionResources(versionResources map[string]string) (string, string) {\n\t// PE files not authored by Microsoft tend to use ProductName as an identifier.\n\tnameFields := []string{\"ProductName\", \"FileDescription\", \"InternalName\", \"OriginalFilename\"}\n\n\tif isMicrosoftVersionResource(versionResources) {\n\t\t// for Microsoft files, prioritize FileDescription.\n\t\tnameFields = []string{\"FileDescription\", \"InternalName\", \"OriginalFilename\", \"ProductName\"}\n\t}\n\n\tvar name string\n\tfor _, field := range nameFields {\n\t\tvalue := spaceNormalize(versionResources[field])\n\t\tif value == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tname = value\n\t\tbreak\n\t}\n\n\tvar runtime string\n\t// look for indications of the runtime, such as \"(net8.0)\" or \"(netstandard2.2)\" suffixes\n\truntimes := binRuntimeSuffixPattern.FindStringSubmatch(name)\n\tif len(runtimes) > 1 {\n\t\truntime = strings.TrimSpace(runtimes[1])\n\t\tname = strings.TrimSpace(strings.TrimSuffix(name, runtimes[0]))\n\t}\n\n\treturn name, runtime\n}\nfunc isMicrosoftVersionResource(versionResources map[string]string) bool {\n\treturn strings.Contains(strings.ToLower(versionResources[\"CompanyName\"]), \"microsoft\") ||\n\t\tstrings.Contains(strings.ToLower(versionResources[\"ProductName\"]), \"microsoft\")\n}\n\n// spaceNormalize trims and normalizes whitespace in a string.\nfunc spaceNormalize(value string) string {\n\tvalue = strings.TrimSpace(value)\n\tif value == \"\" {\n\t\treturn \"\"\n\t}\n\t// Ensure valid UTF-8.\n\tvalue = strings.ToValidUTF8(value, \"\")\n\t// Consolidate all whitespace.\n\tvalue = spaceRegex.ReplaceAllString(value, \" \")\n\t// Remove non-printable characters.\n\tvalue = regexp.MustCompile(`[\\x00-\\x1f]`).ReplaceAllString(value, \"\")\n\t// Consolidate again and trim.\n\tvalue = spaceRegex.ReplaceAllString(value, \" \")\n\tvalue = strings.TrimSpace(value)\n\treturn value\n}\n\nfunc findVersionFromVersionResources(versionResources map[string]string) string {\n\tproductVersion := extractVersionFromResourcesValue(versionResources[\"ProductVersion\"])\n\tfileVersion := extractVersionFromResourcesValue(versionResources[\"FileVersion\"])\n\n\tsemanticVersionCompareResult := keepGreaterSemanticVersion(productVersion, fileVersion)\n\tif semanticVersionCompareResult != \"\" {\n\t\treturn semanticVersionCompareResult\n\t}\n\n\tproductVersionDetail := punctuationCount(productVersion)\n\tfileVersionDetail := punctuationCount(fileVersion)\n\n\tif containsNumber(productVersion) && productVersionDetail >= fileVersionDetail {\n\t\treturn productVersion\n\t}\n\tif containsNumber(fileVersion) && fileVersionDetail > 0 {\n\t\treturn fileVersion\n\t}\n\tif containsNumber(productVersion) {\n\t\treturn productVersion\n\t}\n\tif containsNumber(fileVersion) {\n\t\treturn fileVersion\n\t}\n\n\treturn productVersion\n}\n\nfunc extractVersionFromResourcesValue(version string) string {\n\tversion = strings.TrimSpace(version)\n\tout := \"\"\n\tfor i, f := range strings.Fields(version) {\n\t\tif containsNumber(out) && !containsNumber(f) {\n\t\t\treturn out\n\t\t}\n\t\tif i == 0 {\n\t\t\tout = f\n\t\t} else {\n\t\t\tout += \" \" + f\n\t\t}\n\t}\n\treturn out\n}\n\nfunc keepGreaterSemanticVersion(productVersion string, fileVersion string) string {\n\tsemanticProductVersion, err := version.NewVersion(productVersion)\n\tif err != nil || semanticProductVersion == nil {\n\t\tlog.Tracef(\"Unable to create semantic version from product version %s\", productVersion)\n\t\treturn \"\"\n\t}\n\n\tsemanticFileVersion, err := version.NewVersion(fileVersion)\n\tif err != nil || semanticFileVersion == nil {\n\t\tlog.Tracef(\"Unable to create semantic version from file version %s\", fileVersion)\n\t\treturn productVersion\n\t}\n\n\tif semanticProductVersion.Equal(semanticFileVersion) {\n\t\treturn \"\"\n\t}\n\tif semanticFileVersion.GreaterThan(semanticProductVersion) {\n\t\treturn fileVersion\n\t}\n\treturn productVersion\n}\n\nfunc containsNumber(s string) bool {\n\treturn numberRegex.MatchString(s)\n}\n\nfunc punctuationCount(s string) int {\n\treturn len(versionPunctuationRegex.FindAllString(s, -1))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/package_test.go",
    "content": "package dotnet\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_getDepsJSONFilePrefix(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tpath string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"windows-style full path\",\n\t\t\tpath: `C:\\Code\\Projects\\My-Project\\My.Rest.Project.deps.json`,\n\t\t\twant: \"My.Rest.Project\",\n\t\t},\n\t\t{\n\t\t\tname: \"leading backslash\",\n\t\t\tpath: `\\My.Project.deps.json`,\n\t\t\twant: \"My.Project\",\n\t\t},\n\t\t{\n\t\t\tname: \"unix-style path with lots of prefixes\",\n\t\t\tpath: \"/my/cool/project/cool-project.deps.json\",\n\t\t\twant: \"cool-project\",\n\t\t},\n\t\t{\n\t\t\tname: \"unix-style relative path\",\n\t\t\tpath: \"cool-project/my-dotnet-project.deps.json\",\n\t\t\twant: \"my-dotnet-project\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equalf(t, tt.want, getDepsJSONFilePrefix(tt.path), \"getDepsJSONFilePrefix(%v)\", tt.path)\n\t\t})\n\t}\n}\n\nfunc Test_NewDotnetBinaryPackage(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tversionResources map[string]string\n\t\texpectedPackage  pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"dotnet package with extra version info\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"InternalName\":     \"Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll\",\n\t\t\t\t\"FileVersion\":      \"3.14.40721.0918    xxxfffdddjjjj\",\n\t\t\t\t\"FileDescription\":  \"Active Directory Authentication Library\",\n\t\t\t\t\"ProductName\":      \"Active Directory Authentication Library\",\n\t\t\t\t\"Comments\":         \"\",\n\t\t\t\t\"CompanyName\":      \"Microsoft Corporation\",\n\t\t\t\t\"LegalTrademarks\":  \"\",\n\t\t\t\t\"LegalCopyright\":   \"Copyright (c) Microsoft Corporation. All rights reserved.\",\n\t\t\t\t\"OriginalFilename\": \"Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll\",\n\t\t\t\t\"ProductVersion\":   \"c61f043686a544863efc014114c42e844f905336\",\n\t\t\t\t\"Assembly Version\": \"3.14.2.11\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Active Directory Authentication Library\",\n\t\t\t\tVersion: \"3.14.40721.0918\",\n\t\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\tAssemblyVersion: \"3.14.2.11\",\n\t\t\t\t\tLegalCopyright:  \"Copyright (c) Microsoft Corporation. All rights reserved.\",\n\t\t\t\t\tInternalName:    \"Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll\",\n\t\t\t\t\tCompanyName:     \"Microsoft Corporation\",\n\t\t\t\t\tProductName:     \"Active Directory Authentication Library\",\n\t\t\t\t\tProductVersion:  \"c61f043686a544863efc014114c42e844f905336\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// show we can do a best effort to make a package from bad data\n\t\t\tname: \"dotnet package with malformed field and extended version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"CompanyName\":      \"Microsoft Corporation\",\n\t\t\t\t\"FileDescription\":  \"äb\u0001File\\xa0\\xa1Versi on\",\n\t\t\t\t\"FileVersion\":      \"4.6.25512.01 built by: dlab-DDVSOWINAGE016. Commit Hash: d0d5c7b49271cadb6d97de26d8e623e98abdc8db\",\n\t\t\t\t\"InternalName\":     \"äb\u0001FileVersion\",\n\t\t\t\t\"LegalCopyright\":   \"© Microsoft Corporation.  All rights reserved.\",\n\t\t\t\t\"OriginalFilename\": \"T\u001a\u0001ProductName\",\n\t\t\t\t\"ProductName\":      \"Microsoft® .NET Framework\",\n\t\t\t\t\"ProductVersion\":   \"4.6.25512.01 built by: dlab-DDVSOWINAGE016. Commit Hash: d0d5c7b49271cadb6d97de26d8e623e98abdc8db\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"äbFileVersi on\",\n\t\t\t\tVersion: \"4.6.25512.01\",\n\t\t\t\tPURL:    \"pkg:nuget/%C3%A4bFileVersi%20on@4.6.25512.01\",\n\t\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\tLegalCopyright: \"© Microsoft Corporation.  All rights reserved.\",\n\t\t\t\t\tInternalName:   \"äb\\x01FileVersion\",\n\t\t\t\t\tCompanyName:    \"Microsoft Corporation\",\n\t\t\t\t\tProductName:    \"Microsoft® .NET Framework\",\n\t\t\t\t\tProductVersion: \"4.6.25512.01 built by: dlab-DDVSOWINAGE016. Commit Hash: d0d5c7b49271cadb6d97de26d8e623e98abdc8db\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"System.Data.Linq.dll\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"CompanyName\":      \"Microsoft Corporation\",\n\t\t\t\t\"FileDescription\":  \"System.Data.Linq.dll\",\n\t\t\t\t\"FileVersion\":      \"4.7.3190.0 built by: NET472REL1LAST_C\",\n\t\t\t\t\"InternalName\":     \"System.Data.Linq.dll\",\n\t\t\t\t\"LegalCopyright\":   \"© Microsoft Corporation.  All rights reserved.\",\n\t\t\t\t\"OriginalFilename\": \"System.Data.Linq.dll\",\n\t\t\t\t\"ProductName\":      \"Microsoft® .NET Framework\",\n\t\t\t\t\"ProductVersion\":   \"4.7.3190.0\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"System.Data.Linq.dll\",\n\t\t\t\tVersion: \"4.7.3190.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"curl\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"CompanyName\":      \"curl, https://curl.se/\",\n\t\t\t\t\"FileDescription\":  \"The curl executable\",\n\t\t\t\t\"FileVersion\":      \"8.4.0\",\n\t\t\t\t\"InternalName\":     \"curl\",\n\t\t\t\t\"LegalCopyright\":   \"© Daniel Stenberg, <daniel@haxx.se>.\",\n\t\t\t\t\"OriginalFilename\": \"curl.exe\",\n\t\t\t\t\"ProductName\":      \"The curl executable\",\n\t\t\t\t\"ProductVersion\":   \"8.4.0\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"The curl executable\",\n\t\t\t\tVersion: \"8.4.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Prometheus\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"AssemblyVersion\":  \"8.0.0.0\",\n\t\t\t\t\"CompanyName\":      \"\",\n\t\t\t\t\"FileDescription\":  \"\",\n\t\t\t\t\"FileVersion\":      \"8.0.1\",\n\t\t\t\t\"InternalName\":     \"Prometheus.AspNetCore.dll\",\n\t\t\t\t\"OriginalFilename\": \"Prometheus.AspNetCore.dll\",\n\t\t\t\t\"ProductName\":      \"\",\n\t\t\t\t\"ProductVersion\":   \"8.0.1\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Prometheus.AspNetCore.dll\",\n\t\t\t\tVersion: \"8.0.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Hidden Input\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\":  \"Reads from stdin without leaking info to the terminal and outputs back to stdout\",\n\t\t\t\t\"FileVersion\":      \"1, 0, 0, 0\",\n\t\t\t\t\"InternalName\":     \"hiddeninput\",\n\t\t\t\t\"LegalCopyright\":   \"Jordi Boggiano - 2012\",\n\t\t\t\t\"OriginalFilename\": \"hiddeninput.exe\",\n\t\t\t\t\"ProductName\":      \"Hidden Input\",\n\t\t\t\t\"ProductVersion\":   \"1, 0, 0, 0\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Hidden Input\",\n\t\t\t\tVersion: \"1, 0, 0, 0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"SQLite3\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"CompanyName\":     \"SQLite Development Team\",\n\t\t\t\t\"FileDescription\": \"SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.\",\n\t\t\t\t\"FileVersion\":     \"3.23.2\",\n\t\t\t\t\"InternalName\":    \"sqlite3\",\n\t\t\t\t\"LegalCopyright\":  \"http://www.sqlite.org/copyright.html\",\n\t\t\t\t\"ProductName\":     \"SQLite\",\n\t\t\t\t\"ProductVersion\":  \"3.23.2\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"SQLite\",\n\t\t\t\tVersion: \"3.23.2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Brave Browser\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"CompanyName\":      \"Brave Software, Inc.\",\n\t\t\t\t\"FileDescription\":  \"Brave Browser\",\n\t\t\t\t\"FileVersion\":      \"80.1.7.92\",\n\t\t\t\t\"InternalName\":     \"chrome_exe\",\n\t\t\t\t\"LegalCopyright\":   \"Copyright 2016 The Brave Authors. All rights reserved.\",\n\t\t\t\t\"OriginalFilename\": \"chrome.exe\",\n\t\t\t\t\"ProductName\":      \"Brave Browser\",\n\t\t\t\t\"ProductVersion\":   \"80.1.7.92\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Brave Browser\",\n\t\t\t\tVersion: \"80.1.7.92\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Better product version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Better version\",\n\t\t\t\t\"FileVersion\":     \"80.1.7\",\n\t\t\t\t\"ProductVersion\":  \"80.1.7.92\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Better version\",\n\t\t\t\tVersion: \"80.1.7.92\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Better file version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Better version\",\n\t\t\t\t\"FileVersion\":     \"80.1.7.92\",\n\t\t\t\t\"ProductVersion\":  \"80.1.7\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Better version\",\n\t\t\t\tVersion: \"80.1.7.92\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Higher semantic version Product Version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Higher semantic version Product Version\",\n\t\t\t\t\"FileVersion\":     \"3.0.0.0\",\n\t\t\t\t\"ProductVersion\":  \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Higher semantic version Product Version\",\n\t\t\t\tVersion: \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Higher semantic version File Version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Higher semantic version File Version\",\n\t\t\t\t\"FileVersion\":     \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t\t\"ProductVersion\":  \"3.0.0\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Higher semantic version File Version\",\n\t\t\t\tVersion: \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Invalid semantic version File Version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Invalid semantic version File Version\",\n\t\t\t\t\"FileVersion\":     \"A\",\n\t\t\t\t\"ProductVersion\":  \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Invalid semantic version File Version\",\n\t\t\t\tVersion: \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Invalid semantic version File Version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Invalid semantic version File Version\",\n\t\t\t\t\"FileVersion\":     \"A\",\n\t\t\t\t\"ProductVersion\":  \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Invalid semantic version File Version\",\n\t\t\t\tVersion: \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Invalid semantic version Product Version\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Invalid semantic version Product Version\",\n\t\t\t\t\"FileVersion\":     \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t\t\"ProductVersion\":  \"A\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Invalid semantic version Product Version\",\n\t\t\t\tVersion: \"3.0.1+b86b61bf676163639795b163d8d753b20aad6207\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Semantically equal falls through, chooses File Version with more components\",\n\t\t\tversionResources: map[string]string{\n\t\t\t\t\"FileDescription\": \"Semantically equal falls through, chooses File Version with more components\",\n\t\t\t\t\"FileVersion\":     \"3.0.0.0\",\n\t\t\t\t\"ProductVersion\":  \"3.0.0\",\n\t\t\t},\n\t\t\texpectedPackage: pkg.Package{\n\t\t\t\tName:    \"Semantically equal falls through, chooses File Version with more components\",\n\t\t\t\tVersion: \"3.0.0.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tlocation := file.NewLocation(\"\")\n\t\t\tgot := newDotnetBinaryPackage(tc.versionResources, location)\n\n\t\t\t// ignore certain metadata\n\t\t\tif tc.expectedPackage.Metadata == nil {\n\t\t\t\tgot.Metadata = nil\n\t\t\t}\n\t\t\t// set known defaults\n\t\t\tif tc.expectedPackage.Type == \"\" {\n\t\t\t\ttc.expectedPackage.Type = pkg.DotnetPkg\n\t\t\t}\n\t\t\tif tc.expectedPackage.Language == \"\" {\n\t\t\t\ttc.expectedPackage.Language = pkg.Dotnet\n\t\t\t}\n\t\t\tif tc.expectedPackage.PURL == \"\" {\n\t\t\t\ttc.expectedPackage.PURL = binaryPackageURL(tc.expectedPackage.Name, tc.expectedPackage.Version)\n\t\t\t}\n\t\t\ttc.expectedPackage.Locations = file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\t\t\tpkgtest.AssertPackagesEqual(t, tc.expectedPackage, got)\n\t\t})\n\t}\n}\n\nfunc Test_extractVersion(t *testing.T) {\n\ttests := []struct {\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tinput:    \"1, 0, 0, 0\",\n\t\t\texpected: \"1, 0, 0, 0\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"Release 73\",\n\t\t\texpected: \"Release 73\",\n\t\t},\n\t\t{\n\t\t\tinput:    \"4.7.4076.0 built by: NET472REL1LAST_B\",\n\t\t\texpected: \"4.7.4076.0\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.input, func(t *testing.T) {\n\t\t\tgot := extractVersionFromResourcesValue(test.input)\n\t\t\tassert.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_spaceNormalize(t *testing.T) {\n\ttests := []struct {\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\texpected: \"some spaces apart\",\n\t\t\tinput:    \" some \tspaces\\n\\t\\t \\n\\rapart\\n\",\n\t\t},\n\t\t{\n\t\t\texpected: \"söme ¡nvalid characters\",\n\t\t\tinput:    \"\\rsöme \\u0001¡nvalid\\t characters\\n\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.expected, func(t *testing.T) {\n\t\t\tgot := spaceNormalize(test.input)\n\t\t\tassert.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc TestRuntimeCPEs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tversion  string\n\t\texpected []cpe.CPE\n\t}{\n\t\t{\n\t\t\tname:    \".NET Core 1.0\",\n\t\t\tversion: \"1.0\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet_core\",\n\t\t\t\t\t\tVersion: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET Core 2.1\",\n\t\t\tversion: \"2.1\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet_core\",\n\t\t\t\t\t\tVersion: \"2.1\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET Core 3.1\",\n\t\t\tversion: \"3.1\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet_core\",\n\t\t\t\t\t\tVersion: \"3.1\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET Core 4.9 (hypothetical)\",\n\t\t\tversion: \"4.9\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet_core\",\n\t\t\t\t\t\tVersion: \"4.9\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET 5.0\",\n\t\t\tversion: \"5.0\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"5.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET 6.0\",\n\t\t\tversion: \"6.0\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"6.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET 8.0\",\n\t\t\tversion: \"8.0\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"8.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \".NET 10.0 (future version)\",\n\t\t\tversion: \"10.0\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"10.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"Patch version should not be included\",\n\t\t\tversion: \"6.0.21\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"6.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"Assumed minor version\",\n\t\t\tversion: \"6\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"microsoft\",\n\t\t\t\t\t\tProduct: \"dotnet\",\n\t\t\t\t\t\tVersion: \"6.0\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"Invalid version format\",\n\t\t\tversion:  \"invalid\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"Empty version\",\n\t\t\tversion:  \"\",\n\t\t\texpected: nil,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tresult := runtimeCPEs(tc.version)\n\n\t\t\tif !reflect.DeepEqual(result, tc.expected) {\n\t\t\t\tt.Errorf(\"runtimeCPEs(%q) = %+v; want %+v\",\n\t\t\t\t\ttc.version, result, tc.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/parse_packages_lock.go",
    "content": "package dotnet\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"slices\"\n\t\"sort\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseDotnetPackagesLock\n\ntype dotnetPackagesLock struct {\n\tVersion      int                                         `json:\"version\"`\n\tDependencies map[string]map[string]dotnetPackagesLockDep `json:\"dependencies\"`\n}\n\ntype dotnetPackagesLockDep struct {\n\tType         string            `json:\"type\"`\n\tRequested    string            `json:\"requested\"`\n\tResolved     string            `json:\"resolved\"`\n\tContentHash  string            `json:\"contentHash\"`\n\tDependencies map[string]string `json:\"dependencies,omitempty\"`\n}\n\nfunc parseDotnetPackagesLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) { //nolint:funlen\n\tvar pkgs []pkg.Package\n\tvar pkgMap = make(map[string]pkg.Package)\n\tvar relationships []artifact.Relationship\n\n\tdec := json.NewDecoder(reader)\n\n\t// unmarshal file\n\tvar lockFile dotnetPackagesLock\n\tif err := dec.Decode(&lockFile); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse packages.lock.json file: %w\", err)\n\t}\n\n\t// collect all deps here\n\tallDependencies := make(map[string]dotnetPackagesLockDep)\n\n\tvar names []string\n\tfor _, dependencies := range lockFile.Dependencies {\n\t\tfor name, dep := range dependencies {\n\t\t\tdepNameVersion := createNameAndVersion(name, dep.Resolved)\n\n\t\t\tif slices.Contains(names, depNameVersion) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tnames = append(names, depNameVersion)\n\t\t\tallDependencies[depNameVersion] = dep\n\t\t}\n\t}\n\n\t// sort the names so that the order of the packages is deterministic\n\tsort.Strings(names)\n\n\t// create artifact for each pkg\n\tfor _, nameVersion := range names {\n\t\tname, _ := extractNameAndVersion(nameVersion)\n\n\t\tdep := allDependencies[nameVersion]\n\t\tdotnetPkg := newDotnetPackagesLockPackage(name, dep, reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\t\tif dotnetPkg != nil {\n\t\t\tpkgs = append(pkgs, *dotnetPkg)\n\t\t\tpkgMap[nameVersion] = *dotnetPkg\n\t\t}\n\t}\n\n\t// fill up relationships\n\tfor depNameVersion, dep := range allDependencies {\n\t\tparentPkg, ok := pkgMap[depNameVersion]\n\t\tif !ok {\n\t\t\tlog.Debugf(\"package \\\"%s\\\" not found in map of all pacakges\", depNameVersion)\n\t\t\tcontinue\n\t\t}\n\n\t\tfor childDepName, childDepVersion := range dep.Dependencies {\n\t\t\tchildDepNameVersion := createNameAndVersion(childDepName, childDepVersion)\n\n\t\t\t// try and find pkg for dependency with exact name and version\n\t\t\tchildPkg, ok := pkgMap[childDepNameVersion]\n\t\t\tif !ok {\n\t\t\t\t// no exact match found, lets match on name only, lockfile will contain other version of pkg\n\t\t\t\tcpkg, ok := findPkgByName(childDepName, pkgMap)\n\t\t\t\tif !ok {\n\t\t\t\t\tlog.Debugf(\"dependency \\\"%s\\\" of package \\\"%s\\\" not found in map of all packages\", childDepNameVersion, depNameVersion)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tchildPkg = *cpkg\n\t\t\t}\n\n\t\t\trel := artifact.Relationship{\n\t\t\t\tFrom: parentPkg,\n\t\t\t\tTo:   childPkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t}\n\t\t\trelationships = append(relationships, rel)\n\t\t}\n\t}\n\n\t// sort the relationships for deterministic output\n\trelationship.Sort(relationships)\n\n\treturn pkgs, relationships, nil\n}\n\nfunc newDotnetPackagesLockPackage(name string, dep dotnetPackagesLockDep, locations ...file.Location) *pkg.Package {\n\tmetadata := pkg.DotnetPackagesLockEntry{\n\t\tName:        name,\n\t\tVersion:     dep.Resolved,\n\t\tContentHash: dep.ContentHash,\n\t\tType:        dep.Type,\n\t}\n\n\tp := &pkg.Package{\n\t\tName:      name,\n\t\tVersion:   dep.Resolved,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata:  metadata,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tLanguage:  pkg.Dotnet,\n\t\tPURL:      packagesLockPackageURL(name, dep.Resolved),\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packagesLockPackageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeNuget, // See explanation in syft/pkg/cataloger/dotnet/package.go as to why this was chosen.\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc findPkgByName(pkgName string, pkgMap map[string]pkg.Package) (*pkg.Package, bool) {\n\tfor pkgNameVersion, pkg := range pkgMap {\n\t\tname, _ := extractNameAndVersion(pkgNameVersion)\n\t\tif name == pkgName {\n\t\t\treturn &pkg, true\n\t\t}\n\t}\n\n\treturn nil, false\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/parse_packages_lock_test.go",
    "content": "package dotnet\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_corruptDotnetPackagesLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/packages.lock.json\").\n\t\tWithError().\n\t\tTestParser(t, parseDotnetPackagesLock)\n}\n\nfunc TestParseDotnetPackagesLock(t *testing.T) {\n\tfixture := \"testdata/packages.lock.json\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\tautoMapperPkg := pkg.Package{\n\t\tName:      \"AutoMapper\",\n\t\tVersion:   \"13.0.1\",\n\t\tPURL:      \"pkg:nuget/AutoMapper@13.0.1\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"AutoMapper\",\n\t\t\tVersion:     \"13.0.1\",\n\t\t\tContentHash: \"/Fx1SbJ16qS7dU4i604Sle+U9VLX+WSNVJggk6MupKVkYvvBm4XqYaeFuf67diHefHKHs50uQIS2YEDFhPCakQ==\",\n\t\t\tType:        \"Direct\",\n\t\t},\n\t}\n\n\tbootstrapPkg := pkg.Package{\n\t\tName:      \"bootstrap\",\n\t\tVersion:   \"5.0.0\",\n\t\tPURL:      \"pkg:nuget/bootstrap@5.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"bootstrap\",\n\t\t\tVersion:     \"5.0.0\",\n\t\t\tContentHash: \"NKQFzFwrfWOMjTwr+X/2iJyCveuAGF+fNzkxyB0YW45+InVhcE9PUxoL1a8Vmc/Lq9E/CQd4DjO8kU32P4w/Gg==\",\n\t\t\tType:        \"Direct\",\n\t\t},\n\t}\n\n\tlog4netPkg := pkg.Package{\n\t\tName:      \"log4net\",\n\t\tVersion:   \"2.0.5\",\n\t\tPURL:      \"pkg:nuget/log4net@2.0.5\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"log4net\",\n\t\t\tVersion:     \"2.0.5\",\n\t\t\tContentHash: \"AEqPZz+v+OikfnR2SqRVdQPnSaLq5y9Iz1CfRQZ9kTKPYCXHG6zYmDHb7wJotICpDLMr/JqokyjiqKAjUKp0ng==\",\n\t\t\tType:        \"Direct\",\n\t\t},\n\t}\n\n\tlog4net1Pkg := pkg.Package{\n\t\tName:      \"log4net\",\n\t\tVersion:   \"1.2.15\",\n\t\tPURL:      \"pkg:nuget/log4net@1.2.15\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"log4net\",\n\t\t\tVersion:     \"1.2.15\",\n\t\t\tContentHash: \"KPajjkU1rbF6uY2rnakbh36LB9z9FVcYlciyOi6C5SJ3AMNywxjCGxBTN/Hl5nQEinRLuWvHWPF8W7YHh9sONw==\",\n\t\t\tType:        \"Direct\",\n\t\t},\n\t}\n\n\tdependencyInjectionAbstractionsPkg := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.DependencyInjection.Abstractions\",\n\t\tVersion:   \"9.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@9.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"Microsoft.Extensions.DependencyInjection.Abstractions\",\n\t\t\tVersion:     \"9.0.0\",\n\t\t\tContentHash: \"xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==\",\n\t\t\tType:        \"Transitive\",\n\t\t},\n\t}\n\n\textensionOptionsPkg := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Options\",\n\t\tVersion:   \"9.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Options@9.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"Microsoft.Extensions.Options\",\n\t\t\tVersion:     \"9.0.0\",\n\t\t\tContentHash: \"dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==\",\n\t\t\tType:        \"Transitive\",\n\t\t},\n\t}\n\n\textensionPrimitivesPkg := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Primitives\",\n\t\tVersion:   \"9.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Primitives@9.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"Microsoft.Extensions.Primitives\",\n\t\t\tVersion:     \"9.0.0\",\n\t\t\tContentHash: \"9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==\",\n\t\t\tType:        \"Transitive\",\n\t\t},\n\t}\n\n\tcompilerServicesUnsafePkg := pkg.Package{\n\t\tName:      \"System.Runtime.CompilerServices.Unsafe\",\n\t\tVersion:   \"9.0.0\",\n\t\tPURL:      \"pkg:nuget/System.Runtime.CompilerServices.Unsafe@9.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"System.Runtime.CompilerServices.Unsafe\",\n\t\t\tVersion:     \"9.0.0\",\n\t\t\tContentHash: \"/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==\",\n\t\t\tType:        \"Transitive\",\n\t\t},\n\t}\n\n\tmicrosoftLoggingPkg := pkg.Package{\n\t\tName:      \"Microsoft.Extensions.Logging\",\n\t\tVersion:   \"9.0.0\",\n\t\tPURL:      \"pkg:nuget/Microsoft.Extensions.Logging@9.0.0\",\n\t\tLocations: fixtureLocationSet,\n\t\tLanguage:  pkg.Dotnet,\n\t\tType:      pkg.DotnetPkg,\n\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\tName:        \"Microsoft.Extensions.Logging\",\n\t\t\tVersion:     \"9.0.0\",\n\t\t\tContentHash: \"crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==\",\n\t\t\tType:        \"Direct\",\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\tautoMapperPkg,\n\t\tcompilerServicesUnsafePkg,\n\t\tdependencyInjectionAbstractionsPkg,\n\t\tmicrosoftLoggingPkg,\n\t\textensionOptionsPkg,\n\t\textensionPrimitivesPkg,\n\t\tbootstrapPkg,\n\t\tlog4net1Pkg,\n\t\tlog4netPkg,\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: autoMapperPkg,\n\t\t\tTo:   extensionOptionsPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: extensionOptionsPkg,\n\t\t\tTo:   dependencyInjectionAbstractionsPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: extensionOptionsPkg,\n\t\t\tTo:   extensionPrimitivesPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: extensionPrimitivesPkg,\n\t\t\tTo:   compilerServicesUnsafePkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: microsoftLoggingPkg,\n\t\t\tTo:   extensionOptionsPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseDotnetPackagesLock, expectedPkgs, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/pe.go",
    "content": "package dotnet\n\nimport (\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pe\"\n)\n\n// logicalPE represents a PE file within the context of a .NET project (considering the deps.json file).\ntype logicalPE struct {\n\tpe.File\n\n\t// TargetPath is the path is the deps.json target entry. This is not present in the PE file\n\t// but instead is used in downstream processing to track associations between the PE file and the deps.json file.\n\tTargetPath string\n}\n\nfunc readLogicalPE(reader file.LocationReadCloser) (*logicalPE, error) {\n\tpeFile, err := pe.Read(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif peFile == nil {\n\t\treturn nil, nil\n\t}\n\n\treturn &logicalPE{\n\t\tFile: *peFile,\n\t}, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/.gitignore",
    "content": "!*.dll\n!*.exe\n/cache"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/Makefile",
    "content": "FINGERPRINT_FILE=cache.fingerprint\n\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures:\n\t@echo \"nothing to do\"\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find Makefile **/Dockerfile **/src/** -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:\n\trm -f $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/dir-example-1/TestLibrary.deps.json",
    "content": "{\n  \"runtimeTarget\": {\n    \"name\": \".NETCoreApp,Version=v6.0\",\n    \"signature\": \"\"\n  },\n  \"compilationOptions\": {},\n  \"targets\": {\n    \".NETCoreApp,Version=v6.0\": {\n      \"TestLibrary/1.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection\": \"6.0.0\",\n          \"Microsoft.Extensions.Logging\": \"6.0.0\",\n          \"Newtonsoft.Json\": \"13.0.1\",\n          \"Serilog\": \"2.10.0\",\n          \"Serilog.Sinks.Console\": \"4.0.1\",\n          \"TestCommon\": \"1.0.0\"\n        },\n        \"runtime\": {\n          \"TestLibrary.dll\": {}\n        }\n      },\n      \"AWSSDK.Core/3.7.10.6\": {\n        \"runtime\": {\n          \"lib/netcoreapp3.1/AWSSDK.Core.dll\": {\n            \"assemblyVersion\": \"3.3.0.0\",\n            \"fileVersion\": \"3.7.10.6\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.DependencyInjection/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0\": {\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Logging/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection\": \"6.0.0\",\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Logging.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Options\": \"6.0.0\",\n          \"System.Diagnostics.DiagnosticSource\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/netstandard2.1/Microsoft.Extensions.Logging.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Logging.Abstractions/6.0.0\": {\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Options/6.0.0\": {\n        \"dependencies\": {\n          \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"6.0.0\",\n          \"Microsoft.Extensions.Primitives\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/netstandard2.1/Microsoft.Extensions.Options.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Microsoft.Extensions.Primitives/6.0.0\": {\n        \"dependencies\": {\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        },\n        \"runtime\": {\n          \"lib/net6.0/Microsoft.Extensions.Primitives.dll\": {\n            \"assemblyVersion\": \"6.0.0.0\",\n            \"fileVersion\": \"6.0.21.52210\"\n          }\n        }\n      },\n      \"Newtonsoft.Json/13.0.1\": {\n        \"runtime\": {\n          \"lib/netstandard2.0/Newtonsoft.Json.dll\": {\n            \"assemblyVersion\": \"13.0.0.0\",\n            \"fileVersion\": \"13.0.1.25517\"\n          }\n        }\n      },\n      \"Serilog/2.10.0\": {\n        \"runtime\": {\n          \"lib/netstandard2.1/Serilog.dll\": {\n            \"assemblyVersion\": \"2.0.0.0\",\n            \"fileVersion\": \"2.10.0.0\"\n          }\n        }\n      },\n      \"Serilog.Sinks.Console/4.0.1\": {\n        \"dependencies\": {\n          \"Serilog\": \"2.10.0\"\n        },\n        \"runtime\": {\n          \"lib/net5.0/Serilog.Sinks.Console.dll\": {\n            \"assemblyVersion\": \"4.0.1.0\",\n            \"fileVersion\": \"4.0.1.0\"\n          }\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/6.0.0\": {\n        \"dependencies\": {\n          \"System.Runtime.CompilerServices.Unsafe\": \"6.0.0\"\n        }\n      },\n      \"System.Runtime.CompilerServices.Unsafe/6.0.0\": {},\n      \"TestCommon/1.0.0\": {\n        \"dependencies\": {\n          \"AWSSDK.Core\": \"3.7.10.6\"\n        },\n        \"runtime\": {\n          \"TestCommon.dll\": {}\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"TestLibrary/1.0.0\": {\n      \"type\": \"project\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    },\n    \"AWSSDK.Core/3.7.10.6\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==\",\n      \"path\": \"awssdk.core/3.7.10.6\",\n      \"hashPath\": \"awssdk.core.3.7.10.6.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.DependencyInjection/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==\",\n      \"path\": \"microsoft.extensions.dependencyinjection/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==\",\n      \"path\": \"microsoft.extensions.dependencyinjection.abstractions/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Logging/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==\",\n      \"path\": \"microsoft.extensions.logging/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.logging.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Logging.Abstractions/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==\",\n      \"path\": \"microsoft.extensions.logging.abstractions/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Options/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==\",\n      \"path\": \"microsoft.extensions.options/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.options.6.0.0.nupkg.sha512\"\n    },\n    \"Microsoft.Extensions.Primitives/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==\",\n      \"path\": \"microsoft.extensions.primitives/6.0.0\",\n      \"hashPath\": \"microsoft.extensions.primitives.6.0.0.nupkg.sha512\"\n    },\n    \"Newtonsoft.Json/13.0.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==\",\n      \"path\": \"newtonsoft.json/13.0.1\",\n      \"hashPath\": \"newtonsoft.json.13.0.1.nupkg.sha512\"\n    },\n    \"Serilog/2.10.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==\",\n      \"path\": \"serilog/2.10.0\",\n      \"hashPath\": \"serilog.2.10.0.nupkg.sha512\"\n    },\n    \"Serilog.Sinks.Console/4.0.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==\",\n      \"path\": \"serilog.sinks.console/4.0.1\",\n      \"hashPath\": \"serilog.sinks.console.4.0.1.nupkg.sha512\"\n    },\n    \"System.Diagnostics.DiagnosticSource/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==\",\n      \"path\": \"system.diagnostics.diagnosticsource/6.0.0\",\n      \"hashPath\": \"system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512\"\n    },\n    \"System.Runtime.CompilerServices.Unsafe/6.0.0\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==\",\n      \"path\": \"system.runtime.compilerservices.unsafe/6.0.0\",\n      \"hashPath\": \"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512\"\n    },\n    \"TestCommon/1.0.0\": {\n      \"type\": \"project\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    }\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/glob-paths/src/packages.lock.json",
    "content": "\"i am bogus\""
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/glob-paths/src/something.deps.json",
    "content": "bogus deps.json"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net2-app/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net2-app/Dockerfile",
    "content": "FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/core/sdk:2.2 AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\nCOPY src/helloworld.csproj .\nRUN dotnet restore -r $RUNTIME\n\nCOPY src/*.cs .\n\nRUN dotnet publish -c Release --no-restore -o /app\n\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/core/runtime:2.2\nWORKDIR /app\nCOPY --from=build /app .\n\n# this is a realistic application image since the runtime is with the app\nENTRYPOINT [\"dotnet\", \"HelloWorld.dll\"]\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net2-app/src/Program.cs",
    "content": "using System;\nusing Serilog;\n\nnamespace HelloWorld\n{\n    /// <summary>\n    /// Main program class!\n    /// </summary>\n    public class Program\n    {\n        /// <summary>\n        /// Entry point for the application!\n        /// </summary>\n        /// <param name=\"args\">Command line arguments!</param>\n        public static void Main(string[] args)\n        {\n            // configure Serilog\n            Log.Logger = new LoggerConfiguration()\n                .MinimumLevel.Information()\n                .WriteTo.Console()\n                .CreateLogger();\n\n            try\n            {\n                Log.Information(\"Starting up the application\");\n                Console.WriteLine(\"Hello World!\");\n                Log.Information(\"Application completed successfully\");\n            }\n            catch (Exception ex)\n            {\n                Log.Fatal(ex, \"Application terminated unexpectedly\");\n            }\n            finally\n            {\n                Log.CloseAndFlush();\n            }\n\n            Console.WriteLine(\"Press any key to exit...\");\n            Console.ReadKey();\n        }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net2-app/src/helloworld.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>netcoreapp2.2</TargetFramework>\n    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Serilog\" Version=\"2.10.0\" />\n    <PackageReference Include=\"Serilog.Sinks.Console\" Version=\"4.0.1\" />\n    <PackageReference Include=\"StyleCop.Analyzers\" Version=\"1.1.118\">\n      <PrivateAssets>all</PrivateAssets>\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n    </PackageReference>\n  </ItemGroup>\n\n</Project>"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/.dockerignore",
    "content": ".gitignore\nDockerfile"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/Dockerfile",
    "content": "FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build\nARG RUNTIME=win-x64\n\nCOPY . .\nWORKDIR /src\nRUN dotnet restore -r $RUNTIME\nRUN dotnet publish -c Release --no-restore -o /app\n\nFROM busybox:latest\nWORKDIR /app\nCOPY --from=build /app .\n\n\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/.gitignore",
    "content": "wwwroot/lib/"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/LibManSample.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <!-- A PackageReference to Microsoft.AspNetCore.App is not necessary when targeting .NET Core 3.0 or higher. If Microsoft.NET.Sdk.Web is used, the shared framework will be referenced automatically (or override with FrameworkReference) -->\n    <!--  <PackageReference Include=\"Microsoft.AspNetCore.App\" /> -->\n    <PackageReference Include=\"Microsoft.Web.LibraryManager.Build\" Version=\"2.1.175\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/Program.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Logging;\n\nnamespace LibManSample\n{\n    public class Program\n    {\n        public static void Main(string[] args)\n        {\n            CreateWebHostBuilder(args).Build().Run();\n        }\n\n        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>\n            WebHost.CreateDefaultBuilder(args)\n                .UseStartup<Startup>();\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/Startup.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace LibManSample\n{\n    public class Startup\n    {\n        // This method gets called by the runtime. Use this method to add services to the container.\n        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940\n        public void ConfigureServices(IServiceCollection services)\n        {\n        }\n\n        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.\n        public void Configure(IApplicationBuilder app, IHostingEnvironment env)\n        {\n            if (env.IsDevelopment())\n            {\n                app.UseDeveloperExceptionPage();\n            }\n\n            app.Run(async (context) =>\n            {\n                await context.Response.WriteAsync(\"Hello World!\");\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/libman.json",
    "content": "{\n  \"version\": \"1.0\",\n  \"defaultProvider\": \"cdnjs\",\n  \"libraries\": [\n    {\n      \"library\": \"jquery@3.3.1\",\n      \"files\": [\n        \"jquery.min.js\",\n        \"jquery.js\",\n        \"jquery.min.map\"\n      ],\n      \"destination\": \"wwwroot/lib/jquery/\"\n    },\n    {\n      \"provider\": \"filesystem\",\n      \"library\": \"vendor\",\n      \"files\": [\n        \"lodash.js\",\n        \"lodash.min.js\"\n      ],\n      \"destination\": \"wwwroot/lib/lodash/\"\n    }\n  ]\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net6-asp-libman/src/vendor/lodash.js",
    "content": "// jk! nothing to see here!"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app/Dockerfile",
    "content": "# This represents a basic .NET project build where the project dependencies are downloaded and the project is built.\n# The output is a directory tree of DLLs, a project.lock.json (not used in these tests), a .deps.json file, and\n# a .runtimeconfig.json file (not used in these tests). With this deployment strategy there is no bundled runtime.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\n# $ dotnet list package --include-transitive\n# Project 'dotnetapp' has the following package references\n#   [net8.0]:\n#   Top-level Package      Requested   Resolved\n#   > Humanizer            2.14.1      2.14.1\n#   > Newtonsoft.Json      13.0.3      13.0.3\n#\n#   Transitive Package               Resolved\n#   > Humanizer.Core                 2.14.1\n#   > Humanizer.Core.af              2.14.1\n#   > Humanizer.Core.ar              2.14.1\n#   > Humanizer.Core.az              2.14.1\n#   > Humanizer.Core.bg              2.14.1\n#   > Humanizer.Core.bn-BD           2.14.1\n#   > Humanizer.Core.cs              2.14.1\n#   > Humanizer.Core.da              2.14.1\n#   > Humanizer.Core.de              2.14.1\n#   > Humanizer.Core.el              2.14.1\n#   > Humanizer.Core.es              2.14.1\n#   > Humanizer.Core.fa              2.14.1\n#   > Humanizer.Core.fi-FI           2.14.1\n#   > Humanizer.Core.fr              2.14.1\n#   > Humanizer.Core.fr-BE           2.14.1\n#   > Humanizer.Core.he              2.14.1\n#   > Humanizer.Core.hr              2.14.1\n#   > Humanizer.Core.hu              2.14.1\n#   > Humanizer.Core.hy              2.14.1\n#   > Humanizer.Core.id              2.14.1\n#   > Humanizer.Core.is              2.14.1\n#   > Humanizer.Core.it              2.14.1\n#   > Humanizer.Core.ja              2.14.1\n#   > Humanizer.Core.ko-KR           2.14.1\n#   > Humanizer.Core.ku              2.14.1\n#   > Humanizer.Core.lv              2.14.1\n#   > Humanizer.Core.ms-MY           2.14.1\n#   > Humanizer.Core.mt              2.14.1\n#   > Humanizer.Core.nb              2.14.1\n#   > Humanizer.Core.nb-NO           2.14.1\n#   > Humanizer.Core.nl              2.14.1\n#   > Humanizer.Core.pl              2.14.1\n#   > Humanizer.Core.pt              2.14.1\n#   > Humanizer.Core.ro              2.14.1\n#   > Humanizer.Core.ru              2.14.1\n#   > Humanizer.Core.sk              2.14.1\n#   > Humanizer.Core.sl              2.14.1\n#   > Humanizer.Core.sr              2.14.1\n#   > Humanizer.Core.sr-Latn         2.14.1\n#   > Humanizer.Core.sv              2.14.1\n#   > Humanizer.Core.th-TH           2.14.1\n#   > Humanizer.Core.tr              2.14.1\n#   > Humanizer.Core.uk              2.14.1\n#   > Humanizer.Core.uz-Cyrl-UZ      2.14.1\n#   > Humanizer.Core.uz-Latn-UZ      2.14.1\n#   > Humanizer.Core.vi              2.14.1\n#   > Humanizer.Core.zh-CN           2.14.1\n#   > Humanizer.Core.zh-Hans         2.14.1\n#   > Humanizer.Core.zh-Hant         2.14.1\n\n# lets pull in a file that is not related at all and in fact is not a .NET binary either (this should be ignored)\nRUN wget -O /app/jruby_windows_9_3_15_0.exe https://s3.amazonaws.com/jruby.org/downloads/9.3.15.0/jruby_windows_9_3_15_0.exe\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json .\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app/src/Program.cs",
    "content": "using System;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing static System.Console;\n\nWriteLine(\"Runtime and Environment Information\");\n\n// OS and .NET information\nWriteLine($\"{nameof(RuntimeInformation.OSArchitecture)}: {RuntimeInformation.OSArchitecture}\");\nWriteLine($\"{nameof(RuntimeInformation.OSDescription)}: {RuntimeInformation.OSDescription}\");\nWriteLine($\"{nameof(RuntimeInformation.FrameworkDescription)}: {RuntimeInformation.FrameworkDescription}\");\nWriteLine();\n\n// Environment information\nWriteLine($\"{nameof(Environment.UserName)}: {Environment.UserName}\");\nWriteLine($\"HostName: {Dns.GetHostName()}\");\nWriteLine($\"{nameof(Environment.ProcessorCount)}: {Environment.ProcessorCount}\");\nWriteLine();\n\n// Memory information\nWriteLine($\"Available Memory (GC): {GetInBestUnit(GC.GetGCMemoryInfo().TotalAvailableMemoryBytes)}\");\n\nstring GetInBestUnit(long size)\n{\n    const double Mebi = 1024 * 1024;\n    const double Gibi = Mebi * 1024;\n\n    if (size < Mebi) return $\"{size} bytes\";\n    if (size < Gibi) return $\"{size / Mebi:F} MiB\";\n    return $\"{size / Gibi:F} GiB\";\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-no-depjson/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-no-depjson/Dockerfile",
    "content": "# This is the same as the net8-app image, but without the .deps.json file.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\n# important!\nRUN rm /app/*.deps.json\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json ."
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-no-depjson/src/Program.cs",
    "content": "using System;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing static System.Console;\n\nWriteLine(\"Runtime and Environment Information\");\n\n// OS and .NET information\nWriteLine($\"{nameof(RuntimeInformation.OSArchitecture)}: {RuntimeInformation.OSArchitecture}\");\nWriteLine($\"{nameof(RuntimeInformation.OSDescription)}: {RuntimeInformation.OSDescription}\");\nWriteLine($\"{nameof(RuntimeInformation.FrameworkDescription)}: {RuntimeInformation.FrameworkDescription}\");\nWriteLine();\n\n// Environment information\nWriteLine($\"{nameof(Environment.UserName)}: {Environment.UserName}\");\nWriteLine($\"HostName: {Dns.GetHostName()}\");\nWriteLine($\"{nameof(Environment.ProcessorCount)}: {Environment.ProcessorCount}\");\nWriteLine();\n\n// Memory information\nWriteLine($\"Available Memory (GC): {GetInBestUnit(GC.GetGCMemoryInfo().TotalAvailableMemoryBytes)}\");\n\nstring GetInBestUnit(long size)\n{\n    const double Mebi = 1024 * 1024;\n    const double Gibi = Mebi * 1024;\n\n    if (size < Mebi) return $\"{size} bytes\";\n    if (size < Gibi) return $\"{size / Mebi:F} MiB\";\n    return $\"{size / Gibi:F} GiB\";\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-no-depjson/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-no-depjson/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-self-contained/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-self-contained/Dockerfile",
    "content": "# This is the same as the net8-app image, however, the .NET runtime is copied to the target directory tree. There\n# is no bundling to include the runtime within a single archive/binary.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries (self-contained!)\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --self-contained --no-restore -o /app\n\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json ."
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-self-contained/src/Program.cs",
    "content": "using System;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing static System.Console;\n\nWriteLine(\"Runtime and Environment Information\");\n\n// OS and .NET information\nWriteLine($\"{nameof(RuntimeInformation.OSArchitecture)}: {RuntimeInformation.OSArchitecture}\");\nWriteLine($\"{nameof(RuntimeInformation.OSDescription)}: {RuntimeInformation.OSDescription}\");\nWriteLine($\"{nameof(RuntimeInformation.FrameworkDescription)}: {RuntimeInformation.FrameworkDescription}\");\nWriteLine();\n\n// Environment information\nWriteLine($\"{nameof(Environment.UserName)}: {Environment.UserName}\");\nWriteLine($\"HostName: {Dns.GetHostName()}\");\nWriteLine($\"{nameof(Environment.ProcessorCount)}: {Environment.ProcessorCount}\");\nWriteLine();\n\n// Memory information\nWriteLine($\"Available Memory (GC): {GetInBestUnit(GC.GetGCMemoryInfo().TotalAvailableMemoryBytes)}\");\n\nstring GetInBestUnit(long size)\n{\n    const double Mebi = 1024 * 1024;\n    const double Gibi = Mebi * 1024;\n\n    if (size < Mebi) return $\"{size} bytes\";\n    if (size < Gibi) return $\"{size / Mebi:F} MiB\";\n    return $\"{size / Gibi:F} GiB\";\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-self-contained/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-self-contained/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-single-file/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-single-file/Dockerfile",
    "content": "# This is the same as the net8-app image, however, the entire .NET runtime is compiled into a single binary, residing with the application.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries (single file)\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME -p:IncludeNativeLibrariesForSelfExtract=true -p:PublishReadyToRun=false -p:PublishSingleFile=true -p:PublishTrimmed=true --no-restore -o /app\n\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json ."
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-single-file/src/Program.cs",
    "content": "using System;\nusing Humanizer;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\n\nnamespace IndirectDependencyExample\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            string runtimeInfo = \"hello world!\\n\";\n            Console.WriteLine(runtimeInfo);\n\n\n            Console.WriteLine($\"\\\"this_is_a_test\\\" to title case: {\"this_is_a_test\".Humanize(LetterCasing.Title)}\");\n\n            const string jsonString = @\"\n            {\n                \"\"message\"\": \"\"Hello from JSON!\"\",\n                \"\"details\"\": {\n                    \"\"timestamp\"\": \"\"2025-03-26T12:00:00Z\"\",\n                    \"\"version\"\": \"\"1.0.0\"\",\n                    \"\"metadata\"\": {\n                        \"\"author\"\": \"\"Claude\"\",\n                        \"\"environment\"\": \"\"Development\"\"\n                    }\n                },\n                \"\"items\"\": [\n                    {\n                        \"\"id\"\": 1,\n                        \"\"name\"\": \"\"Item One\"\"\n                    },\n                    {\n                        \"\"id\"\": 2,\n                        \"\"name\"\": \"\"Item Two\"\"\n                    }\n                ]\n            }\";\n\n            JObject jsonObject = JObject.Parse(jsonString);\n\n            string message = (string)jsonObject[\"message\"];\n            Console.WriteLine($\"Message: {message}\");\n        }\n    }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-single-file/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-single-file/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime/Dockerfile",
    "content": "# This represents a basic .NET project build where the project dependencies are downloaded and the project is built.\n# The output is a directory tree of DLLs, a project.lock.json (not used in these tests), a .deps.json file, and\n# a .runtimeconfig.json file (not used in these tests).\n# With this deployment strategy there IS a bundled runtime.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/runtime:8.0@sha256:a6fc92280fbf2149cd6846d39c5bf7b9b535184e470aa68ef2847b9a02f6b99e\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json .\n\n# this is a more realistic application image since the runtime is with the app\nENTRYPOINT [\"dotnet\", \"dotnetapp.dll\"]\n\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime/src/Program.cs",
    "content": "using System;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing static System.Console;\n\nWriteLine(\"Runtime and Environment Information\");\n\n// OS and .NET information\nWriteLine($\"{nameof(RuntimeInformation.OSArchitecture)}: {RuntimeInformation.OSArchitecture}\");\nWriteLine($\"{nameof(RuntimeInformation.OSDescription)}: {RuntimeInformation.OSDescription}\");\nWriteLine($\"{nameof(RuntimeInformation.FrameworkDescription)}: {RuntimeInformation.FrameworkDescription}\");\nWriteLine();\n\n// Environment information\nWriteLine($\"{nameof(Environment.UserName)}: {Environment.UserName}\");\nWriteLine($\"HostName: {Dns.GetHostName()}\");\nWriteLine($\"{nameof(Environment.ProcessorCount)}: {Environment.ProcessorCount}\");\nWriteLine();\n\n// Memory information\nWriteLine($\"Available Memory (GC): {GetInBestUnit(GC.GetGCMemoryInfo().TotalAvailableMemoryBytes)}\");\n\nstring GetInBestUnit(long size)\n{\n    const double Mebi = 1024 * 1024;\n    const double Gibi = Mebi * 1024;\n\n    if (size < Mebi) return $\"{size} bytes\";\n    if (size < Gibi) return $\"{size / Mebi:F} MiB\";\n    return $\"{size / Gibi:F} GiB\";\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime-nodepsjson/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime-nodepsjson/Dockerfile",
    "content": "# This represents a basic .NET project build where the project dependencies are downloaded and the project is built.\n# The output is a directory tree of DLLs, a project.lock.json (not used in these tests), a .deps.json file, and\n# a .runtimeconfig.json file (not used in these tests).\n# With this deployment strategy there IS a bundled runtime.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nCOPY src/packages.lock.json .\nRUN dotnet restore -r $RUNTIME --verbosity normal --locked-mode\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\n# remove the deps.json ... important!\nRUN rm -f /app/dotnetapp.deps.json\n\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/runtime:8.0@sha256:a6fc92280fbf2149cd6846d39c5bf7b9b535184e470aa68ef2847b9a02f6b99e\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json .\n\n# this is an odd choice, but possible\nRUN rm -f /usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.14/Microsoft.NETCore.App.deps.json\n\n# this is a more realistic application image since the runtime is with the app\nENTRYPOINT [\"dotnet\", \"dotnetapp.dll\"]\n\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime-nodepsjson/src/Program.cs",
    "content": "using System;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing static System.Console;\n\nWriteLine(\"Runtime and Environment Information\");\n\n// OS and .NET information\nWriteLine($\"{nameof(RuntimeInformation.OSArchitecture)}: {RuntimeInformation.OSArchitecture}\");\nWriteLine($\"{nameof(RuntimeInformation.OSDescription)}: {RuntimeInformation.OSDescription}\");\nWriteLine($\"{nameof(RuntimeInformation.FrameworkDescription)}: {RuntimeInformation.FrameworkDescription}\");\nWriteLine();\n\n// Environment information\nWriteLine($\"{nameof(Environment.UserName)}: {Environment.UserName}\");\nWriteLine($\"HostName: {Dns.GetHostName()}\");\nWriteLine($\"{nameof(Environment.ProcessorCount)}: {Environment.ProcessorCount}\");\nWriteLine();\n\n// Memory information\nWriteLine($\"Available Memory (GC): {GetInBestUnit(GC.GetGCMemoryInfo().TotalAvailableMemoryBytes)}\");\n\nstring GetInBestUnit(long size)\n{\n    const double Mebi = 1024 * 1024;\n    const double Gibi = Mebi * 1024;\n\n    if (size < Mebi) return $\"{size} bytes\";\n    if (size < Gibi) return $\"{size / Mebi:F} MiB\";\n    return $\"{size / Gibi:F} GiB\";\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime-nodepsjson/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-app-with-runtime-nodepsjson/src/packages.lock.json",
    "content": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net8.0\": {\n      \"Humanizer\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[2.14.1, )\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Newtonsoft.Json\": {\n        \"type\": \"Direct\",\n        \"requested\": \"[13.0.3, )\",\n        \"resolved\": \"13.0.3\",\n        \"contentHash\": \"HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\"\n      },\n      \"Humanizer.Core\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\"\n      },\n      \"Humanizer.Core.af\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ar\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.az\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bg\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.bn-BD\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.cs\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.da\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.de\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.el\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.es\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fa\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fi-FI\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.fr-BE\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.he\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hu\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.hy\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.id\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.is\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.it\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ja\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ko-KR\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ku\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.lv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ms-MY\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.mt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nb-NO\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.nl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.pt\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ro\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.ru\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sl\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sr-Latn\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.sv\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.th-TH\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.tr\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uk\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.vi\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-CN\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hans\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      },\n      \"Humanizer.Core.zh-Hant\": {\n        \"type\": \"Transitive\",\n        \"resolved\": \"2.14.1\",\n        \"contentHash\": \"VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n        \"dependencies\": {\n          \"Humanizer.Core\": \"[2.14.1]\"\n        }\n      }\n    },\n    \"net8.0/win-x64\": {}\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-compile-target/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-compile-target/Dockerfile",
    "content": "FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:3f93439f47fea888d94e6e228d0d0de841f4122ef46f8bfd04f8bd78cbce7ddb AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\nCOPY src/helloworld.csproj .\nRUN dotnet restore -r $RUNTIME\n\nCOPY src/*.cs .\nRUN dotnet publish -c Release -r $RUNTIME --self-contained false -o /app\n\n# note: we're not using a runtime here to make testing easier... so you cannot run this container and expect it to work\n# we do this to keep the test assertions small since the don't want to include the several other runtime packages\nFROM busybox:latest\n\nWORKDIR /app\n\nCOPY --from=build /app .\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-compile-target/src/Program.cs",
    "content": "using System;\nusing Microsoft.AspNetCore.Builder;\nusing Microsoft.Extensions.Hosting;\n\nnamespace HelloWorld\n{\n    public class Program\n    {\n        public static void Main(string[] args)\n        {\n            var builder = WebApplication.CreateBuilder(args);\n            var app = builder.Build();\n\n            // configure the HTTP request pipeline\n            if (!app.Environment.IsDevelopment())\n            {\n                app.UseExceptionHandler(\"/Error\");\n            }\n\n            // enable serving static files (including jQuery)\n            app.UseStaticFiles();\n\n            app.MapGet(\"/\", () => \"Hello World!\");\n\n            Console.WriteLine(\"Application starting...\");\n            app.Run();\n        }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-compile-target/src/helloworld.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <Nullable>enable</Nullable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"DotNetNuke.Core\" Version=\"9.9.1\"/>\n\n    <!-- jQuery wraps the javascript library, so no DLLs -->\n    <PackageReference Include=\"jQuery\" Version=\"3.4.1\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Razor\" Version=\"2.2.0\" />\n\n    <!-- ChakraCore is an open source Javascript engine with a C API -->\n    <PackageReference Include=\"Microsoft.ChakraCore\" Version=\"1.11.24\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <!-- Nuget.CommandLine is a command line tool for managing NuGet packages -->\n    <PackageReference Include=\"Nuget.CommandLine\" Version=\"6.3.1\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <!-- Umbraco.Cms has dependencies with software, but itself has no DLLs -->\n    <PackageReference Include=\"Umbraco.Cms\" Version=\"11.3.0\" />\n\n    <!-- For code analysis/style checking, only needed during development -->\n    <PackageReference Include=\"StyleCop.Analyzers\" Version=\"1.2.0-beta.435\" PrivateAssets=\"All\" />\n\n    <!-- For unit testing, only needed during development -->\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.8.0\" Condition=\"'$(Configuration)' == 'Debug'\" PrivateAssets=\"All\" />\n\n  </ItemGroup>\n\n  <!-- create directories if they don't exist -->\n  <Target Name=\"CreateWwwroot\" BeforeTargets=\"PrepareForPublish\">\n    <MakeDir Directories=\"$(PublishDir)wwwroot\\lib\\jquery\" />\n  </Target>\n\n  <!-- explicitly copy jQuery files during publish phase -->\n  <Target Name=\"CopyJQueryToPublishOutput\" AfterTargets=\"CreateWwwroot\" BeforeTargets=\"ComputeFilesToPublish\">\n    <ItemGroup>\n      <!-- find jQuery files in the packages folder -->\n      <JQueryFiles Include=\"$(NuGetPackageRoot)\\jquery\\3.4.1\\Content\\Scripts\\*.js\" />\n\n      <!-- add these to the publish output -->\n      <ResolvedFileToPublish Include=\"@(JQueryFiles)\">\n        <RelativePath>wwwroot\\lib\\jquery\\%(Filename)%(Extension)</RelativePath>\n        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>\n      </ResolvedFileToPublish>\n    </ItemGroup>\n  </Target>\n\n</Project>"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-ilrepack/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-ilrepack/Dockerfile",
    "content": "# This is the same as the net8-app image, but without the .deps.json file.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nRUN dotnet restore -r $RUNTIME --verbosity normal\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json ."
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-ilrepack/src/.gitignore",
    "content": "/bin\n/obj\n/app"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-ilrepack/src/Program.cs",
    "content": "using System;\nusing Humanizer;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\n\nnamespace IndirectDependencyExample\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            string runtimeInfo = \"hello world!\\n\";\n            Console.WriteLine(runtimeInfo);\n\n\n            Console.WriteLine($\"\\\"this_is_a_test\\\" to title case: {\"this_is_a_test\".Humanize(LetterCasing.Title)}\");\n\n            const string jsonString = @\"\n            {\n                \"\"message\"\": \"\"Hello from JSON!\"\",\n                \"\"details\"\": {\n                    \"\"timestamp\"\": \"\"2025-03-26T12:00:00Z\"\",\n                    \"\"version\"\": \"\"1.0.0\"\",\n                    \"\"metadata\"\": {\n                        \"\"author\"\": \"\"Claude\"\",\n                        \"\"environment\"\": \"\"Development\"\"\n                    }\n                },\n                \"\"items\"\": [\n                    {\n                        \"\"id\"\": 1,\n                        \"\"name\"\": \"\"Item One\"\"\n                    },\n                    {\n                        \"\"id\"\": 2,\n                        \"\"name\"\": \"\"Item Two\"\"\n                    }\n                ]\n            }\";\n\n            JObject jsonObject = JObject.Parse(jsonString);\n\n            string message = (string)jsonObject[\"message\"];\n            Console.WriteLine($\"Message: {message}\");\n        }\n    }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-ilrepack/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n    <ILRepackTargetConfigurations>Debug;Release</ILRepackTargetConfigurations>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" PrivateAssets=\"all\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" PrivateAssets=\"all\"  />\n    <PackageReference Include=\"ILRepack.FullAuto\" Version=\"1.6.0\" PrivateAssets=\"all\" />\n  </ItemGroup>\n\n</Project>"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-privateassets/.gitignore",
    "content": "/app\n/extract.sh"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-privateassets/Dockerfile",
    "content": "# This is the same as the net8-app image, but without the .deps.json file.\nFROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-alpine@sha256:7d3a75ca5c8ac4679908ef7a2591b9bc257c62bd530167de32bba105148bb7be AS build\nARG RUNTIME=win-x64\nWORKDIR /src\n\n# copy csproj and restore as distinct layers\nCOPY src/*.csproj .\nRUN dotnet restore -r $RUNTIME --verbosity normal\n\n# copy and publish app and libraries\nCOPY src/ .\nRUN dotnet publish -r $RUNTIME --no-restore -o /app\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app .\n# just a nice to have for later...\n#COPY --from=build /src/packages.lock.json ."
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-privateassets/src/.gitignore",
    "content": "/bin\n/obj\n/app"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-privateassets/src/Program.cs",
    "content": "using System;\nusing Humanizer;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\n\nnamespace IndirectDependencyExample\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            string runtimeInfo = \"hello world!\\n\";\n            Console.WriteLine(runtimeInfo);\n\n\n            Console.WriteLine($\"\\\"this_is_a_test\\\" to title case: {\"this_is_a_test\".Humanize(LetterCasing.Title)}\");\n\n            const string jsonString = @\"\n            {\n                \"\"message\"\": \"\"Hello from JSON!\"\",\n                \"\"details\"\": {\n                    \"\"timestamp\"\": \"\"2025-03-26T12:00:00Z\"\",\n                    \"\"version\"\": \"\"1.0.0\"\",\n                    \"\"metadata\"\": {\n                        \"\"author\"\": \"\"Claude\"\",\n                        \"\"environment\"\": \"\"Development\"\"\n                    }\n                },\n                \"\"items\"\": [\n                    {\n                        \"\"id\"\": 1,\n                        \"\"name\"\": \"\"Item One\"\"\n                    },\n                    {\n                        \"\"id\"\": 2,\n                        \"\"name\"\": \"\"Item Two\"\"\n                    }\n                ]\n            }\";\n\n            JObject jsonObject = JObject.Parse(jsonString);\n\n            string message = (string)jsonObject[\"message\"];\n            Console.WriteLine($\"Message: {message}\");\n        }\n    }\n}"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/image-net8-privateassets/src/dotnetapp.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</TargetFramework>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" PrivateAssets=\"all\" />\n    <PackageReference Include=\"Humanizer\" Version=\"2.14.1\" PrivateAssets=\"all\"  />\n  </ItemGroup>\n\n</Project>"
  },
  {
    "path": "syft/pkg/cataloger/dotnet/testdata/packages.lock.json",
    "content": "{\n    \"version\": 1,\n    \"dependencies\": {\n        \"net8.0\": {\n            \"AutoMapper\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[13.0.1, )\",\n                \"resolved\": \"13.0.1\",\n                \"contentHash\": \"/Fx1SbJ16qS7dU4i604Sle+U9VLX+WSNVJggk6MupKVkYvvBm4XqYaeFuf67diHefHKHs50uQIS2YEDFhPCakQ==\",\n                \"dependencies\": {\n                    \"Microsoft.Extensions.Options\": \"6.0.0\"\n                }\n            },\n            \"bootstrap\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[5.0.0, )\",\n                \"resolved\": \"5.0.0\",\n                \"contentHash\": \"NKQFzFwrfWOMjTwr+X/2iJyCveuAGF+fNzkxyB0YW45+InVhcE9PUxoL1a8Vmc/Lq9E/CQd4DjO8kU32P4w/Gg==\"\n            },\n            \"log4net\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[2.0.5, )\",\n                \"resolved\": \"2.0.5\",\n                \"contentHash\": \"AEqPZz+v+OikfnR2SqRVdQPnSaLq5y9Iz1CfRQZ9kTKPYCXHG6zYmDHb7wJotICpDLMr/JqokyjiqKAjUKp0ng==\"\n            },\n            \"Microsoft.Extensions.DependencyInjection.Abstractions\": {\n                \"type\": \"Transitive\",\n                \"resolved\": \"9.0.0\",\n                \"contentHash\": \"xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==\"\n            },\n            \"Microsoft.Extensions.Logging\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[9.0.0, )\",\n                \"resolved\": \"9.0.0\",\n                \"contentHash\": \"crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==\",\n                \"dependencies\": {\n                    \"Microsoft.Extensions.Options\": \"9.0.0\"\n                }\n            },\n            \"Microsoft.Extensions.Options\": {\n                \"type\": \"Transitive\",\n                \"resolved\": \"9.0.0\",\n                \"contentHash\": \"dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==\",\n                \"dependencies\": {\n                    \"Microsoft.Extensions.DependencyInjection.Abstractions\": \"9.0.0\",\n                    \"Microsoft.Extensions.Primitives\": \"9.0.0\"\n                }\n            },\n            \"Microsoft.Extensions.Primitives\": {\n                \"type\": \"Transitive\",\n                \"resolved\": \"9.0.0\",\n                \"contentHash\": \"9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==\",\n                \"dependencies\": {\n                    \"System.Runtime.CompilerServices.Unsafe\": \"9.0.0\"\n                }\n            },\n            \"System.Runtime.CompilerServices.Unsafe\": {\n                \"type\": \"Transitive\",\n                \"resolved\": \"9.0.0\",\n                \"contentHash\": \"/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==\"\n            }\n        },\n        \".netcore2.0\": {\n            \"bootstrap\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[5.0.0, )\",\n                \"resolved\": \"5.0.0\",\n                \"contentHash\": \"NKQFzFwrfWOMjTwr+X/2iJyCveuAGF+fNzkxyB0YW45+InVhcE9PUxoL1a8Vmc/Lq9E/CQd4DjO8kU32P4w/Gg==\"\n            },\n            \"log4net\": {\n                \"type\": \"Direct\",\n                \"requested\": \"[1.2.15, )\",\n                \"resolved\": \"1.2.15\",\n                \"contentHash\": \"KPajjkU1rbF6uY2rnakbh36LB9z9FVcYlciyOi6C5SJ3AMNywxjCGxBTN/Hl5nQEinRLuWvHWPF8W7YHh9sONw==\"\n            }\n        }\n    }\n}"
  },
  {
    "path": "syft/pkg/cataloger/elixir/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: elixir # MANUAL\n    name: elixir-mix-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/elixir/cataloger.go\n      function: NewMixLockCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - elixir\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseMixLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/mix.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ElixirMixLockEntry\n        package_types: # AUTO-GENERATED\n          - hex\n        json_schema_types: # AUTO-GENERATED\n          - ElixirMixLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - ElixirMixLockEntry.PkgHash\n              - ElixirMixLockEntry.PkgHashExt\n"
  },
  {
    "path": "syft/pkg/cataloger/elixir/cataloger.go",
    "content": "/*\nPackage elixir provides a concrete Cataloger implementation relating to packages within the Elixir language ecosystem.\n*/\npackage elixir\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewMixLockCataloger returns a cataloger object for Elixir mix.lock files.\nfunc NewMixLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"elixir-mix-lock-cataloger\").\n\t\tWithParserByGlobs(parseMixLock, \"**/mix.lock\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/elixir/cataloger_test.go",
    "content": "package elixir\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain mix.lock files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/mix.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewMixLockCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/elixir/package.go",
    "content": "package elixir\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackage(d pkg.ElixirMixLockEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      d.Name,\n\t\tVersion:   d.Version,\n\t\tLanguage:  pkg.Elixir,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(d),\n\t\tType:      pkg.HexPkg,\n\t\tMetadata:  d,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURL(m pkg.ElixirMixLockEntry) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeHex,\n\t\t\"\",\n\t\tm.Name,\n\t\tm.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/elixir/parse_mix_lock.go",
    "content": "package elixir\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// integrity check\nvar _ generic.Parser = parseMixLock\n\nvar mixLockDelimiter = regexp.MustCompile(`[%{}\\n\" ,:]+`)\n\n// parseMixLock parses a mix.lock and returns the discovered Elixir packages.\nfunc parseMixLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar errs error\n\tr := bufio.NewReader(reader)\n\n\tvar packages []pkg.Package\n\tlineNum := 0\n\tfor {\n\t\tlineNum++\n\t\tline, err := r.ReadString('\\n')\n\t\tswitch {\n\t\tcase errors.Is(err, io.EOF):\n\t\t\tif errs == nil {\n\t\t\t\terrs = unknown.IfEmptyf(packages, \"unable to determine packages\")\n\t\t\t}\n\t\t\treturn packages, nil, errs\n\t\tcase err != nil:\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse mix.lock file: %w\", err)\n\t\t}\n\t\ttokens := mixLockDelimiter.Split(line, -1)\n\t\tif len(tokens) < 6 {\n\t\t\terrs = unknown.Appendf(errs, reader, \"unable to read mix lock line %d: %s\", lineNum, line)\n\t\t\tcontinue\n\t\t}\n\t\tname, version, hash, hashExt := tokens[1], tokens[4], tokens[5], tokens[len(tokens)-2]\n\n\t\tif name == \"\" {\n\t\t\tlog.WithFields(\"path\", reader.RealPath).Debug(\"skipping empty package name from mix.lock file\")\n\t\t\terrs = unknown.Appendf(errs, reader, \"skipping empty package name from mix.lock file, for line: %d: %s\", lineNum, line)\n\t\t\tcontinue\n\t\t}\n\n\t\tpackages = append(packages,\n\t\t\tnewPackage(\n\t\t\t\tpkg.ElixirMixLockEntry{\n\t\t\t\t\tName:       name,\n\t\t\t\t\tVersion:    version,\n\t\t\t\t\tPkgHash:    hash,\n\t\t\t\t\tPkgHashExt: hashExt,\n\t\t\t\t},\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/elixir/parse_mix_lock_test.go",
    "content": "package elixir\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseMixLock(t *testing.T) {\n\tlocations := file.NewLocationSet(file.NewLocation(\"testdata/mix.lock\"))\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"castore\",\n\t\t\tVersion:   \"0.1.17\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/castore@0.1.17\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"castore\",\n\t\t\t\tVersion:    \"0.1.17\",\n\t\t\t\tPkgHash:    \"ba672681de4e51ed8ec1f74ed624d104c0db72742ea1a5e74edbc770c815182f\",\n\t\t\t\tPkgHashExt: \"d9844227ed52d26e7519224525cb6868650c272d4a3d327ce3ca5570c12163f9\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"connection\",\n\t\t\tVersion:   \"1.1.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/connection@1.1.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"connection\",\n\t\t\t\tVersion:    \"1.1.0\",\n\t\t\t\tPkgHash:    \"ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68\",\n\t\t\t\tPkgHashExt: \"722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"cowboy\",\n\t\t\tVersion:   \"2.9.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/cowboy@2.9.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"cowboy\",\n\t\t\t\tVersion:    \"2.9.0\",\n\t\t\t\tPkgHash:    \"865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452\",\n\t\t\t\tPkgHashExt: \"2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"cowboy_telemetry\",\n\t\t\tVersion:   \"0.4.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/cowboy_telemetry@0.4.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"cowboy_telemetry\",\n\t\t\t\tVersion:    \"0.4.0\",\n\t\t\t\tPkgHash:    \"f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c\",\n\t\t\t\tPkgHashExt: \"7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"cowlib\",\n\t\t\tVersion:   \"2.11.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/cowlib@2.11.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"cowlib\",\n\t\t\t\tVersion:    \"2.11.0\",\n\t\t\t\tPkgHash:    \"0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063\",\n\t\t\t\tPkgHashExt: \"2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"db_connection\",\n\t\t\tVersion:   \"2.4.2\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/db_connection@2.4.2\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"db_connection\",\n\t\t\t\tVersion:    \"2.4.2\",\n\t\t\t\tPkgHash:    \"f92e79aff2375299a16bcb069a14ee8615c3414863a6fef93156aee8e86c2ff3\",\n\t\t\t\tPkgHashExt: \"4fe53ca91b99f55ea249693a0229356a08f4d1a7931d8ffa79289b145fe83668\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"decimal\",\n\t\t\tVersion:   \"2.0.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/decimal@2.0.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"decimal\",\n\t\t\t\tVersion:    \"2.0.0\",\n\t\t\t\tPkgHash:    \"a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697\",\n\t\t\t\tPkgHashExt: \"34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"earmark_parser\",\n\t\t\tVersion:   \"1.4.25\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/earmark_parser@1.4.25\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"earmark_parser\",\n\t\t\t\tVersion:    \"1.4.25\",\n\t\t\t\tPkgHash:    \"2024618731c55ebfcc5439d756852ec4e85978a39d0d58593763924d9a15916f\",\n\t\t\t\tPkgHashExt: \"56749c5e1c59447f7b7a23ddb235e4b3defe276afc220a6227237f3efe83f51e\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ecto\",\n\t\t\tVersion:   \"3.8.1\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/ecto@3.8.1\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"ecto\",\n\t\t\t\tVersion:    \"3.8.1\",\n\t\t\t\tPkgHash:    \"35e0bd8c8eb772e14a5191a538cd079706ecb45164ea08a7523b4fc69ab70f56\",\n\t\t\t\tPkgHashExt: \"f1b68f8d5fe3ab89e24f57c03db5b5d0aed3602077972098b3a6006a1be4b69b\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ecto_sql\",\n\t\t\tVersion:   \"3.8.1\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/ecto_sql@3.8.1\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"ecto_sql\",\n\t\t\t\tVersion:    \"3.8.1\",\n\t\t\t\tPkgHash:    \"1acaaba32ca0551fd19e492fc7c80414e72fc1a7140fc9395aaa53c2e8629798\",\n\t\t\t\tPkgHashExt: \"ba7fc75882edce6f2ceca047315d5db27ead773cafea47f1724e35f1e7964525\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"esbuild\",\n\t\t\tVersion:   \"0.5.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/esbuild@0.5.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"esbuild\",\n\t\t\t\tVersion:    \"0.5.0\",\n\t\t\t\tPkgHash:    \"d5bb08ff049d7880ee3609ed5c4b864bd2f46445ea40b16b4acead724fb4c4a3\",\n\t\t\t\tPkgHashExt: \"f183a0b332d963c4cfaf585477695ea59eef9a6f2204fdd0efa00e099694ffe5\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ex_doc\",\n\t\t\tVersion:   \"0.28.4\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/ex_doc@0.28.4\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"ex_doc\",\n\t\t\t\tVersion:    \"0.28.4\",\n\t\t\t\tPkgHash:    \"001a0ea6beac2f810f1abc3dbf4b123e9593eaa5f00dd13ded024eae7c523298\",\n\t\t\t\tPkgHashExt: \"bf85d003dd34911d89c8ddb8bda1a958af3471a274a4c2150a9c01c78ac3f8ed\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"gettext\",\n\t\t\tVersion:   \"0.19.1\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/gettext@0.19.1\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"gettext\",\n\t\t\t\tVersion:    \"0.19.1\",\n\t\t\t\tPkgHash:    \"564953fd21f29358e68b91634799d9d26989f8d039d7512622efb3c3b1c97892\",\n\t\t\t\tPkgHashExt: \"10c656c0912b8299adba9b061c06947511e3f109ab0d18b44a866a4498e77222\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hpax\",\n\t\t\tVersion:   \"0.1.1\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/hpax@0.1.1\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"hpax\",\n\t\t\t\tVersion:    \"0.1.1\",\n\t\t\t\tPkgHash:    \"2396c313683ada39e98c20a75a82911592b47e5c24391363343bde74f82396ca\",\n\t\t\t\tPkgHashExt: \"0ae7d5a0b04a8a60caf7a39fcf3ec476f35cc2cc16c05abea730d3ce6ac6c826\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"jason\",\n\t\t\tVersion:   \"1.3.0\",\n\t\t\tLanguage:  pkg.Elixir,\n\t\t\tType:      pkg.HexPkg,\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:hex/jason@1.3.0\",\n\t\t\tMetadata: pkg.ElixirMixLockEntry{\n\t\t\t\tName:       \"jason\",\n\t\t\t\tVersion:    \"1.3.0\",\n\t\t\t\tPkgHash:    \"fa6b82a934feb176263ad2df0dbd91bf633d4a46ebfdffea0c8ae82953714946\",\n\t\t\t\tPkgHashExt: \"53fc1f51255390e0ec7e50f9cb41e751c260d065dcba2bf0d08dc51a4002c2ac\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfixture := \"testdata/mix.lock\"\n\n\t// TODO: relationships are not under test\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseMixLock, expected, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: erlang # MANUAL\n    name: erlang-otp-application-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/erlang/cataloger.go\n      function: NewOTPCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - erlang\n      - language\n      - otp\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseOTPApp\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.app'\n        package_types: # AUTO-GENERATED\n          - erlang-otp\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: erlang # MANUAL\n    name: erlang-rebar-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/erlang/cataloger.go\n      function: NewRebarLockCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - erlang\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseRebarLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/rebar.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ErlangRebarLockEntry\n        package_types: # AUTO-GENERATED\n          - hex\n        json_schema_types: # AUTO-GENERATED\n          - ErlangRebarLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - ErlangRebarLockEntry.PkgHash\n              - ErlangRebarLockEntry.PkgHashExt\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/cataloger.go",
    "content": "/*\nPackage erlang provides concrete Catalogers implementation relating to packages within the Erlang language ecosystem.\n*/\npackage erlang\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewRebarLockCataloger returns a new cataloger instance for Erlang rebar.lock files.\nfunc NewRebarLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"erlang-rebar-lock-cataloger\").\n\t\tWithParserByGlobs(parseRebarLock, \"**/rebar.lock\")\n}\n\nfunc NewOTPCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"erlang-otp-application-cataloger\").\n\t\tWithParserByGlobs(parseOTPApp, \"**/*.app\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/cataloger_test.go",
    "content": "package erlang\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCatalogerRebar_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain rebar.lock files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/rebar.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewRebarLockCataloger())\n\t\t})\n\t}\n}\n\nfunc TestCatalogerOTP_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain OTP resource files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/rabbitmq.app\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewOTPCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/erlang_parser.go",
    "content": "package erlang\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/internal/parsing\"\n)\n\ntype erlangNode struct {\n\tvalue interface{}\n}\n\nvar errSkipComments = errors.New(\"\")\n\nfunc (e erlangNode) Slice() []erlangNode {\n\tout, ok := e.value.([]erlangNode)\n\tif ok {\n\t\treturn out\n\t}\n\treturn []erlangNode{}\n}\n\nfunc (e erlangNode) String() string {\n\tout, ok := e.value.(string)\n\tif ok {\n\t\treturn out\n\t}\n\treturn \"\"\n}\n\nfunc (e erlangNode) Get(index int) erlangNode {\n\ts := e.Slice()\n\tif len(s) > index {\n\t\treturn s[index]\n\t}\n\treturn erlangNode{}\n}\n\nfunc node(value interface{}) erlangNode {\n\treturn erlangNode{\n\t\tvalue: value,\n\t}\n}\n\n// parseErlang basic parser for erlang, used by rebar.lock\nfunc parseErlang(reader io.Reader) (erlangNode, error) {\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // custom parser requires []byte\n\tif err != nil {\n\t\treturn node(nil), err\n\t}\n\n\tout := erlangNode{\n\t\tvalue: []erlangNode{},\n\t}\n\n\ti := 0\n\tfor i < len(data) {\n\t\titem, err := parseErlangBlock(data, &i)\n\t\tif err == errSkipComments {\n\t\t\tparsing.SkipWhitespace(data, &i)\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn node(nil), fmt.Errorf(\"%w\\n%s\", err, parsing.PrintError(data, i))\n\t\t}\n\n\t\tparsing.SkipWhitespace(data, &i)\n\n\t\tif i, ok := item.value.(string); ok && i == \".\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tout.value = append(out.value.([]erlangNode), item)\n\t}\n\treturn out, nil\n}\n\nfunc parseErlangBlock(data []byte, i *int) (erlangNode, error) {\n\tblock, err := parseErlangNode(data, i)\n\tif err != nil {\n\t\treturn node(nil), err\n\t}\n\n\tparsing.SkipWhitespace(data, i)\n\t*i++ // skip the trailing .\n\treturn block, nil\n}\n\nfunc parseErlangNode(data []byte, i *int) (erlangNode, error) {\n\tparsing.SkipWhitespace(data, i)\n\tc := data[*i]\n\tswitch c {\n\tcase '[', '{':\n\t\toffset := *i + 1\n\t\tparsing.SkipWhitespace(data, &offset)\n\t\tc2 := data[offset]\n\n\t\t// Add support for empty lists\n\t\tif (c == '[' && c2 == ']') || (c == '{' && c2 == '}') {\n\t\t\t*i = offset + 1\n\t\t\treturn node(nil), nil\n\t\t}\n\n\t\treturn parseErlangList(data, i)\n\tcase '\"':\n\t\tfallthrough\n\tcase '\\'':\n\t\treturn parseErlangString(data, i)\n\tcase '<':\n\t\treturn parseErlangAngleString(data, i)\n\tcase '%':\n\t\tparseErlangComment(data, i)\n\t\treturn node(nil), errSkipComments\n\t}\n\n\tif parsing.IsLiteral(c) {\n\t\treturn parseErlangLiteral(data, i)\n\t}\n\n\treturn erlangNode{}, fmt.Errorf(\"invalid literal character: %s\", string(c))\n}\n\nfunc parseErlangLiteral(data []byte, i *int) (erlangNode, error) {\n\tvar buf bytes.Buffer\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\t\tif parsing.IsLiteral(c) {\n\t\t\tbuf.WriteByte(c)\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t\t*i++\n\t}\n\treturn node(buf.String()), nil\n}\n\nfunc parseErlangAngleString(data []byte, i *int) (erlangNode, error) {\n\t*i += 2\n\tout, err := parseErlangString(data, i)\n\t*i += 2\n\treturn out, err\n}\n\nfunc parseErlangString(data []byte, i *int) (erlangNode, error) {\n\tdelim := data[*i]\n\t*i++\n\tvar buf bytes.Buffer\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\t\tif c == delim {\n\t\t\t*i++\n\t\t\treturn node(buf.String()), nil\n\t\t}\n\t\tif c == '\\\\' {\n\t\t\t*i++\n\t\t\tif len(data) >= *i {\n\t\t\t\treturn node(nil), fmt.Errorf(\"invalid escape without closed string at %d\", *i)\n\t\t\t}\n\t\t\tc = data[*i]\n\t\t}\n\t\tbuf.WriteByte(c)\n\t\t*i++\n\t}\n\treturn node(nil), fmt.Errorf(\"unterminated string at %d\", *i)\n}\n\nfunc parseErlangList(data []byte, i *int) (erlangNode, error) {\n\t*i++\n\tout := erlangNode{\n\t\tvalue: []erlangNode{},\n\t}\n\tfor *i < len(data) {\n\t\titem, err := parseErlangNode(data, i)\n\t\tif err != nil {\n\t\t\tif err == errSkipComments {\n\t\t\t\tparsing.SkipWhitespace(data, i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn node(nil), err\n\t\t}\n\t\tout.value = append(out.value.([]erlangNode), item)\n\t\tparsing.SkipWhitespace(data, i)\n\t\tc := data[*i]\n\t\tswitch c {\n\t\tcase ',':\n\t\t\t*i++\n\t\t\tcontinue\n\t\tcase '%':\n\t\t\t// Starts a new comment node\n\t\t\tcontinue\n\t\tcase ']', '}':\n\t\t\t*i++\n\t\t\treturn out, nil\n\t\tdefault:\n\t\t\treturn node(nil), fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\t}\n\treturn out, nil\n}\n\nfunc parseErlangComment(data []byte, i *int) {\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\n\t\t*i++\n\n\t\t// Rest of a line is a comment. Deals with CR, LF and CR/LF\n\t\tif c == '\\n' {\n\t\t\tbreak\n\t\t} else if c == '\\r' && data[*i] == '\\n' {\n\t\t\t*i++\n\t\t\tbreak\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/erlang_parser_test.go",
    "content": "package erlang\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_parseErlang(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcontent string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"basic valid content\",\n\t\t\tcontent: `\n{\"1.2.0\",\n[{<<\"bcrypt\">>,{pkg,<<\"bcrypt\">>,<<\"1.1.5\">>},0},\n {<<\"bson\">>,\n  {git,\"https://github.com/comtihon/bson-erlang\",\n       {ref,\"14308ab927cfa69324742c3de720578094e0bb19\"}},\n  1},\n {<<\"syslog\">>,{pkg,<<\"syslog\">>,<<\"1.1.0\">>},0},\n {<<\"unicode_util_compat\">>,{pkg,<<\"unicode_util_compat\">>,<<\"0.7.0\">>},1},\n {<<\"vernemq_dev\">>,\n  {git,\"https://github.com/vernemq/vernemq_dev.git\",\n       {ref,\"6d622aa8c901ae7777433aef2bd049e380c474a6\"}},\n  0}]\n}.\n[\n{pkg_hash,[\n {<<\"bcrypt\">>, <<\"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386\">>},\n {<<\"unicode_util_compat\">>, <<\"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78\">>}]},\n{pkg_hash_ext,[\n {<<\"bcrypt\">>, <<\"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352\">>},\n {<<\"unicode_util_compat\">>, <<\"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521\">>}]}\n].`,\n\t\t},\n\t\t{\n\t\t\tname: \"empty list\",\n\t\t\tcontent: `\n{test, [\n {with_space, [ ]},\n {without_space, []}\n]}`,\n\t\t},\n\t\t{\n\t\t\tname: \"valid strings\",\n\t\t\tcontent: `\n{strings, [\n \"foo\", 'bar'\n]}`,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid string content\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\n{\"1.2.0\n\">>},\n].`,\n\t\t},\n\t\t{\n\t\t\tname:    \"string mismach\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\n{bad_string, [\n 'foo\"\n ]}`,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid content\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\n{\"1.2.0\"}.\n].`,\n\t\t},\n\t\t{\n\t\t\tname: \"valid comments\",\n\t\t\tcontent: `\n{ comments, [\n\t{ foo, bar },\n\t%% this is a comment\n\t% this is also a comment\n\t{ hello, 'bar' }, %%inline comment\n\t{ baz }\n]}`,\n\t\t},\n\t\t{\n\t\t\tname: \"starts with a comments\",\n\t\t\tcontent: `\n%% starts with comment\n{ comments, [\n\t{ foo, bar }\n]}`,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tvalue, err := parseErlang(bytes.NewReader([]byte(test.content)))\n\n\t\t\tif test.wantErr == nil {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t}\n\n\t\t\tassert.IsType(t, erlangNode{}, value)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/package.go",
    "content": "package erlang\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackageFromRebar(d pkg.ErlangRebarLockEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      d.Name,\n\t\tVersion:   d.Version,\n\t\tLanguage:  pkg.Erlang,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURLFromRebar(d),\n\t\tType:      pkg.HexPkg,\n\t\tMetadata:  d,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURLFromRebar(m pkg.ErlangRebarLockEntry) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeHex,\n\t\t\"\",\n\t\tm.Name,\n\t\tm.Version,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc newPackageFromOTP(name, version string, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLanguage:  pkg.Erlang,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURLFromOTP(name, version),\n\t\tType:      pkg.ErlangOTPPkg,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURLFromOTP(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeOTP,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/parse_otp_app.go",
    "content": "package erlang\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// parseOTPApp parses a OTP *.app files to a package objects\nfunc parseOTPApp(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdoc, err := parseErlang(reader)\n\tif err != nil {\n\t\t// there are multiple file formats that use the *.app extension, so it's possible that this is not an OTP app file at all\n\t\t// ... which means we should not return an error here\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to parse Erlang OTP app\")\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse Erlang OTP app\")\n\t}\n\n\tvar packages []pkg.Package\n\n\troot := doc.Get(0)\n\n\tname := root.Get(1).String()\n\n\tkeys := root.Get(2)\n\n\tfor _, key := range keys.Slice() {\n\t\tif key.Get(0).String() == \"vsn\" {\n\t\t\tversion := key.Get(1).String()\n\n\t\t\tp := newPackageFromOTP(\n\t\t\t\tname, version,\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t)\n\n\t\t\tpackages = append(packages, p)\n\t\t}\n\t}\n\n\treturn packages, nil, nil\n}\n\n// integrity check\nvar _ generic.Parser = parseOTPApp\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/parse_otp_app_test.go",
    "content": "package erlang\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseOTPApplication(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/rabbitmq.app\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"rabbit\",\n\t\t\t\t\tVersion:  \"3.12.10\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.ErlangOTPPkg,\n\t\t\t\t\tPURL:     \"pkg:otp/rabbit@3.12.10\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\t// TODO: relationships are not under test\n\t\t\tvar expectedRelationships []artifact.Relationship\n\n\t\t\tfor idx := range test.expected {\n\t\t\t\ttest.expected[idx].Locations = file.NewLocationSet(file.NewLocation(test.fixture))\n\t\t\t}\n\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parseOTPApp, test.expected, expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_corruptOtpApp(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/rabbitmq.app\").\n\t\tWithError().\n\t\tTestParser(t, parseOTPApp)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/parse_rebar_lock.go",
    "content": "package erlang\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// parseRebarLock parses a rebar.lock and returns the discovered Elixir packages.\n//\n\nfunc parseRebarLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdoc, err := parseErlang(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tpkgMap := make(map[string]*pkg.Package)\n\n\t// rebar.lock structure is:\n\t// [\n\t//   [\"version\", [\n\t//     [<<\"package-name\">>, [\"version-type\", \"version\"]...\n\t//   ],\n\t//   [\n\t//     [pkg_hash, [\n\t//       [<<\"package-name\">>, <<\"package-hash\">>]\n\t//     ],\n\t//     [pkg_hash_ext, [\n\t//       [<<\"package-name\">>, <<\"package-hash\">>]\n\t//     ]\n\t//   ]\n\t// ]\n\n\tversions := doc.Get(0)\n\tdeps := versions.Get(1)\n\n\tfor _, dep := range deps.Slice() {\n\t\tname := dep.Get(0).String()\n\t\tversionNode := dep.Get(1)\n\t\tversionType := versionNode.Get(0).String()\n\t\tversion := versionNode.Get(2).String()\n\n\t\t// capture git hashes if no version specified\n\t\tif versionType == \"git\" {\n\t\t\tversion = versionNode.Get(2).Get(1).String()\n\t\t}\n\n\t\tp := newPackageFromRebar(\n\t\t\tpkg.ErlangRebarLockEntry{\n\t\t\t\tName:    name,\n\t\t\t\tVersion: version,\n\t\t\t},\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\n\t\tpkgMap[name] = &p\n\t}\n\n\thashes := doc.Get(1)\n\tfor _, hashStruct := range hashes.Slice() {\n\t\thashType := hashStruct.Get(0).String()\n\n\t\tfor _, hashValue := range hashStruct.Get(1).Slice() {\n\t\t\tname := hashValue.Get(0).String()\n\t\t\thash := hashValue.Get(1).String()\n\n\t\t\tsourcePkg := pkgMap[name]\n\t\t\tif sourcePkg == nil {\n\t\t\t\tlog.WithFields(\"package\", name).Debug(\"unable find source package\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tmetadata, ok := sourcePkg.Metadata.(pkg.ErlangRebarLockEntry)\n\t\t\tif !ok {\n\t\t\t\tlog.WithFields(\"package\", name).Debug(\"unable to extract rebar.lock metadata to add hash metadata\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tswitch hashType {\n\t\t\tcase \"pkg_hash\":\n\t\t\t\tmetadata.PkgHash = hash\n\t\t\tcase \"pkg_hash_ext\":\n\t\t\t\tmetadata.PkgHashExt = hash\n\t\t\t}\n\t\t\tsourcePkg.Metadata = metadata\n\t\t}\n\t}\n\n\tvar packages []pkg.Package\n\tfor _, p := range pkgMap {\n\t\tp.SetID()\n\t\tpackages = append(packages, *p)\n\t}\n\treturn packages, nil, unknown.IfEmptyf(packages, \"unable to determine packages\")\n}\n\n// integrity check\nvar _ generic.Parser = parseRebarLock\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/parse_rebar_lock_test.go",
    "content": "package erlang\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseRebarLock(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/rebar.lock\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"certifi\",\n\t\t\t\t\tVersion:  \"2.9.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/certifi@2.9.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"certifi\",\n\t\t\t\t\t\tVersion:    \"2.9.0\",\n\t\t\t\t\t\tPkgHash:    \"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21\",\n\t\t\t\t\t\tPkgHashExt: \"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"idna\",\n\t\t\t\t\tVersion:  \"6.1.1\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/idna@6.1.1\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"idna\",\n\t\t\t\t\t\tVersion:    \"6.1.1\",\n\t\t\t\t\t\tPkgHash:    \"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D\",\n\t\t\t\t\t\tPkgHashExt: \"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"metrics\",\n\t\t\t\t\tVersion:  \"1.0.1\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/metrics@1.0.1\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"metrics\",\n\t\t\t\t\t\tVersion:    \"1.0.1\",\n\t\t\t\t\t\tPkgHash:    \"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486\",\n\t\t\t\t\t\tPkgHashExt: \"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mimerl\",\n\t\t\t\t\tVersion:  \"1.2.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/mimerl@1.2.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"mimerl\",\n\t\t\t\t\t\tVersion:    \"1.2.0\",\n\t\t\t\t\t\tPkgHash:    \"67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3\",\n\t\t\t\t\t\tPkgHashExt: \"F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"parse_trans\",\n\t\t\t\t\tVersion:  \"3.3.1\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/parse_trans@3.3.1\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"parse_trans\",\n\t\t\t\t\t\tVersion:    \"3.3.1\",\n\t\t\t\t\t\tPkgHash:    \"16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8\",\n\t\t\t\t\t\tPkgHashExt: \"07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"ssl_verify_fun\",\n\t\t\t\t\tVersion:  \"1.1.6\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/ssl_verify_fun@1.1.6\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"ssl_verify_fun\",\n\t\t\t\t\t\tVersion:    \"1.1.6\",\n\t\t\t\t\t\tPkgHash:    \"CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0\",\n\t\t\t\t\t\tPkgHashExt: \"BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"unicode_util_compat\",\n\t\t\t\t\tVersion:  \"0.7.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/unicode_util_compat@0.7.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"unicode_util_compat\",\n\t\t\t\t\t\tVersion:    \"0.7.0\",\n\t\t\t\t\t\tPkgHash:    \"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78\",\n\t\t\t\t\t\tPkgHashExt: \"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/rebar-2.lock\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t//[{<<\"bcrypt\">>,{pkg,<<\"bcrypt\">>,<<\"1.1.5\">>},0},\n\t\t\t\t// {<<\"bcrypt\">>, <<\"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386\">>},\n\t\t\t\t// {<<\"bcrypt\">>, <<\"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352\">>},\n\t\t\t\t{\n\t\t\t\t\tName:     \"bcrypt\",\n\t\t\t\t\tVersion:  \"1.1.5\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/bcrypt@1.1.5\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"bcrypt\",\n\t\t\t\t\t\tVersion:    \"1.1.5\",\n\t\t\t\t\t\tPkgHash:    \"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386\",\n\t\t\t\t\t\tPkgHashExt: \"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"bson\">>,\n\t\t\t\t//  {git,\"https://github.com/comtihon/bson-erlang\",\n\t\t\t\t//       {ref,\"14308ab927cfa69324742c3de720578094e0bb19\"}},\n\t\t\t\t//  1},\n\t\t\t\t{\n\t\t\t\t\tName:     \"bson\",\n\t\t\t\t\tVersion:  \"14308ab927cfa69324742c3de720578094e0bb19\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/bson@14308ab927cfa69324742c3de720578094e0bb19\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:    \"bson\",\n\t\t\t\t\t\tVersion: \"14308ab927cfa69324742c3de720578094e0bb19\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"certifi\">>,{pkg,<<\"certifi\">>,<<\"2.9.0\">>},1},\n\t\t\t\t// {<<\"certifi\">>, <<\"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21\">>}, {<<\"stdout_formatter\">>, <<\"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A\">>},\n\t\t\t\t// {<<\"certifi\">>, <<\"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641\">>},\n\t\t\t\t{\n\t\t\t\t\tName:     \"certifi\",\n\t\t\t\t\tVersion:  \"2.9.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/certifi@2.9.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"certifi\",\n\t\t\t\t\t\tVersion:    \"2.9.0\",\n\t\t\t\t\t\tPkgHash:    \"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21\",\n\t\t\t\t\t\tPkgHashExt: \"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"stdout_formatter\">>,{pkg,<<\"stdout_formatter\">>,<<\"0.2.3\">>},0},\n\t\t\t\t// {<<\"stdout_formatter\">>, <<\"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A\">>},\n\t\t\t\t// {<<\"stdout_formatter\">>, <<\"6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5\">>},\n\t\t\t\t{\n\t\t\t\t\tName:     \"stdout_formatter\",\n\t\t\t\t\tVersion:  \"0.2.3\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/stdout_formatter@0.2.3\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"stdout_formatter\",\n\t\t\t\t\t\tVersion:    \"0.2.3\",\n\t\t\t\t\t\tPkgHash:    \"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A\",\n\t\t\t\t\t\tPkgHashExt: \"6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"swc\">>,\n\t\t\t\t//  {git,\"https://github.com/vernemq/ServerWideClocks.git\",\n\t\t\t\t//       {ref,\"4835239dca5a5f4ac7202dd94d7effcaa617d575\"}},\n\t\t\t\t//  0},\n\t\t\t\t{\n\t\t\t\t\tName:     \"swc\",\n\t\t\t\t\tVersion:  \"4835239dca5a5f4ac7202dd94d7effcaa617d575\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/swc@4835239dca5a5f4ac7202dd94d7effcaa617d575\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:    \"swc\",\n\t\t\t\t\t\tVersion: \"4835239dca5a5f4ac7202dd94d7effcaa617d575\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"syslog\">>,{pkg,<<\"syslog\">>,<<\"1.1.0\">>},0},\n\t\t\t\t// {<<\"syslog\">>, <<\"6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2\">>},\n\t\t\t\t// {<<\"syslog\">>, <<\"4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1\">>},\n\t\t\t\t{\n\t\t\t\t\tName:     \"syslog\",\n\t\t\t\t\tVersion:  \"1.1.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/syslog@1.1.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"syslog\",\n\t\t\t\t\t\tVersion:    \"1.1.0\",\n\t\t\t\t\t\tPkgHash:    \"6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2\",\n\t\t\t\t\t\tPkgHashExt: \"4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"unicode_util_compat\">>,{pkg,<<\"unicode_util_compat\">>,<<\"0.7.0\">>},1},\n\t\t\t\t// {<<\"unicode_util_compat\">>, <<\"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78\">>}]},\n\t\t\t\t// {<<\"unicode_util_compat\">>, <<\"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521\">>}]}\n\t\t\t\t{\n\t\t\t\t\tName:     \"unicode_util_compat\",\n\t\t\t\t\tVersion:  \"0.7.0\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/unicode_util_compat@0.7.0\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:       \"unicode_util_compat\",\n\t\t\t\t\t\tVersion:    \"0.7.0\",\n\t\t\t\t\t\tPkgHash:    \"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78\",\n\t\t\t\t\t\tPkgHashExt: \"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t// {<<\"vernemq_dev\">>,\n\t\t\t\t//  {git,\"https://github.com/vernemq/vernemq_dev.git\",\n\t\t\t\t//       {ref,\"6d622aa8c901ae7777433aef2bd049e380c474a6\"}},\n\t\t\t\t//  0}]}.\n\t\t\t\t{\n\t\t\t\t\tName:     \"vernemq_dev\",\n\t\t\t\t\tVersion:  \"6d622aa8c901ae7777433aef2bd049e380c474a6\",\n\t\t\t\t\tLanguage: pkg.Erlang,\n\t\t\t\t\tType:     pkg.HexPkg,\n\t\t\t\t\tPURL:     \"pkg:hex/vernemq_dev@6d622aa8c901ae7777433aef2bd049e380c474a6\",\n\t\t\t\t\tMetadata: pkg.ErlangRebarLockEntry{\n\t\t\t\t\t\tName:    \"vernemq_dev\",\n\t\t\t\t\t\tVersion: \"6d622aa8c901ae7777433aef2bd049e380c474a6\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\t// TODO: relationships are not under test\n\t\t\tvar expectedRelationships []artifact.Relationship\n\n\t\t\tfor idx := range test.expected {\n\t\t\t\ttest.expected[idx].Locations = file.NewLocationSet(file.NewLocation(test.fixture))\n\t\t\t}\n\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parseRebarLock, test.expected, expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_corruptRebarLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/rebar.lock\").\n\t\tWithError().\n\t\tTestParser(t, parseRebarLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/erlang/testdata/corrupt/rabbitmq.app",
    "content": "cation, 'rabbit', [\n\t{description, \"RabbitMQ\"},\n\t{vsn, \"3.12.10\"},\n\t{id, \"v3.12.9-9-g1f61ca8\"},\n\t{modules, ['amqqueue','background_gc']},\n\t{optional_itmq-server#1593\n\t    {channel_max, 2047}\n\t  ]}\n]}."
  },
  {
    "path": "syft/pkg/cataloger/erlang/testdata/glob-paths/src/rabbitmq.app",
    "content": "bogus erlang file"
  },
  {
    "path": "syft/pkg/cataloger/erlang/testdata/rabbitmq.app",
    "content": "{application, 'rabbit', [\n\t{description, \"RabbitMQ\"},\n\t{vsn, \"3.12.10\"},\n\t{id, \"v3.12.9-9-g1f61ca8\"},\n\t{modules, ['amqqueue','background_gc']},\n\t{optional_applications, []},\n\t{env, [\n\t    {memory_monitor_interval, 2500},\n\t    {disk_free_limit, 50000000}, %% 50MB\n\t    {msg_store_index_module, rabbit_msg_store_ets_index},\n\t    {backing_queue_module, rabbit_variable_queue},\n\t    %% 0 (\"no limit\") would make a better default, but that\n\t    %% breaks the QPid Java client\n\t    {frame_max, 131072},\n\t    %% see rabbitmq-server#1593\n\t    {channel_max, 2047}\n\t  ]}\n]}."
  },
  {
    "path": "syft/pkg/cataloger/generic/cataloger.go",
    "content": "package generic\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/go-logger\"\n\t\"github.com/anchore/go-sync\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// Processor is a function that can filter or augment existing packages and relationships based on existing material.\ntype Processor func([]pkg.Package, []artifact.Relationship, error) ([]pkg.Package, []artifact.Relationship, error)\n\n// ResolvingProcessor is a Processor with the additional behavior of being able to reference additional material from a file resolver.\ntype ResolvingProcessor func(context.Context, file.Resolver, []pkg.Package, []artifact.Relationship, error) ([]pkg.Package, []artifact.Relationship, error)\n\ntype requester func(resolver file.Resolver, env Environment) []request\n\ntype request struct {\n\tfile.Location\n\tParser\n}\n\ntype processExecutor interface {\n\tprocess(ctx context.Context, resolver file.Resolver, pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error)\n}\n\ntype processorWrapper struct {\n\tProcessor\n}\n\nfunc (p processorWrapper) process(_ context.Context, _ file.Resolver, pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn p.Processor(pkgs, rels, err)\n}\n\ntype resolvingProcessorWrapper struct {\n\tResolvingProcessor\n}\n\nfunc (p resolvingProcessorWrapper) process(ctx context.Context, resolver file.Resolver, pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn p.ResolvingProcessor(ctx, resolver, pkgs, rels, err)\n}\n\n// Cataloger implements the Catalog interface and is responsible for dispatching the proper parser function for\n// a given path or glob pattern. This is intended to be reusable across many package cataloger types.\ntype Cataloger struct {\n\tprocessors        []processExecutor\n\trequesters        []requester\n\tchecks            []func() error\n\tupstreamCataloger string\n}\n\nfunc (c *Cataloger) WithParserByGlobs(parser Parser, globs ...string) *Cataloger {\n\tc.requesters = append(c.requesters,\n\t\tfunc(resolver file.Resolver, _ Environment) []request {\n\t\t\tvar requests []request\n\t\t\tfor _, g := range globs {\n\t\t\t\tlog.WithFields(\"glob\", g).Trace(\"searching for paths matching glob\")\n\n\t\t\t\tmatches, err := resolver.FilesByGlob(g)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Debugf(\"unable to process glob=%q: %+v\", g, err)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\trequests = append(requests, makeRequests(parser, matches)...)\n\t\t\t}\n\t\t\treturn requests\n\t\t},\n\t)\n\treturn c\n}\n\nfunc (c *Cataloger) WithParserByMimeTypes(parser Parser, types ...string) *Cataloger {\n\tc.requesters = append(c.requesters,\n\t\tfunc(resolver file.Resolver, _ Environment) []request {\n\t\t\tvar requests []request\n\t\t\tlog.WithFields(\"mimetypes\", types).Trace(\"searching for paths matching mimetype\")\n\t\t\tmatches, err := resolver.FilesByMIMEType(types...)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to process mimetypes=%+v: %+v\", types, err)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\trequests = append(requests, makeRequests(parser, matches)...)\n\t\t\treturn requests\n\t\t},\n\t)\n\treturn c\n}\n\nfunc (c *Cataloger) WithParserByPath(parser Parser, paths ...string) *Cataloger {\n\tc.requesters = append(c.requesters,\n\t\tfunc(resolver file.Resolver, _ Environment) []request {\n\t\t\tvar requests []request\n\t\t\tfor _, p := range paths {\n\t\t\t\tlog.WithFields(\"path\", p).Trace(\"searching for path\")\n\n\t\t\t\tmatches, err := resolver.FilesByPath(p)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Debugf(\"unable to process path=%q: %+v\", p, err)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\trequests = append(requests, makeRequests(parser, matches)...)\n\t\t\t}\n\t\t\treturn requests\n\t\t},\n\t)\n\treturn c\n}\n\nfunc (c *Cataloger) WithParserByMediaType(parser Parser, types ...string) *Cataloger {\n\tc.requesters = append(c.requesters,\n\t\tfunc(resolver file.Resolver, _ Environment) []request {\n\t\t\tvar requests []request\n\t\t\tlog.WithFields(\"mediatypes\", types).Trace(\"searching content matching mediatypes\")\n\t\t\tociResolver, ok := resolver.(file.OCIMediaTypeResolver)\n\t\t\tif !ok {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tmatches, err := ociResolver.FilesByMediaType(types...)\n\t\t\tif err != nil {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\trequests = append(requests, makeRequests(parser, matches)...)\n\t\t\treturn requests\n\t\t},\n\t)\n\treturn c\n}\n\nfunc (c *Cataloger) WithProcessors(processors ...Processor) *Cataloger {\n\tfor _, p := range processors {\n\t\tc.processors = append(c.processors, processorWrapper{Processor: p})\n\t}\n\treturn c\n}\n\nfunc (c *Cataloger) WithResolvingProcessors(processors ...ResolvingProcessor) *Cataloger {\n\tfor _, p := range processors {\n\t\tc.processors = append(c.processors, resolvingProcessorWrapper{ResolvingProcessor: p})\n\t}\n\treturn c\n}\n\nfunc (c *Cataloger) WithChecks(checks ...func() error) *Cataloger {\n\tc.checks = append(c.checks, checks...)\n\treturn c\n}\n\nfunc makeRequests(parser Parser, locations []file.Location) []request {\n\tvar requests []request\n\tfor _, l := range locations {\n\t\trequests = append(requests, request{\n\t\t\tLocation: l,\n\t\t\tParser:   parser,\n\t\t})\n\t}\n\treturn requests\n}\n\n// NewCataloger if provided path-to-parser-function and glob-to-parser-function lookups creates a Cataloger\nfunc NewCataloger(upstreamCataloger string) *Cataloger {\n\treturn &Cataloger{\n\t\tupstreamCataloger: upstreamCataloger,\n\t}\n}\n\n// Name returns a string that uniquely describes the upstream cataloger that this Generic Cataloger represents.\nfunc (c *Cataloger) Name() string {\n\treturn c.upstreamCataloger\n}\n\n// Catalog is given an object to resolve file references and content, this function returns any discovered Packages after analyzing the catalog source.\nfunc (c *Cataloger) Catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tfor _, check := range c.checks {\n\t\tif err := check(); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tvar packages []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\tlgr := log.Nested(\"cataloger\", c.upstreamCataloger)\n\n\tenv := Environment{\n\t\t// TODO: consider passing into the cataloger, this would affect the cataloger interface (and all implementations). This can be deferred until later.\n\t\tLinuxRelease: linux.IdentifyRelease(resolver),\n\t}\n\n\ttype result struct {\n\t\tpkgs []pkg.Package\n\t\trels []artifact.Relationship\n\t}\n\terrs := sync.Collect(&ctx, cataloging.ExecutorFile, sync.ToSeq(c.selectFiles(resolver)), func(req request) (result, error) {\n\t\tlocation, parser := req.Location, req.Parser\n\n\t\tlog.WithFields(\"path\", location.RealPath).Trace(\"parsing file contents\")\n\n\t\tdiscoveredPackages, discoveredRelationships, err := invokeParser(ctx, resolver, location, lgr, parser, &env)\n\t\tif err != nil {\n\t\t\t// parsers may return errors and valid packages / relationships\n\t\t\terr = unknown.New(location, err)\n\t\t}\n\t\treturn result{discoveredPackages, discoveredRelationships}, err\n\t}, func(_ request, res result) {\n\t\tfor _, p := range res.pkgs {\n\t\t\tp.FoundBy = c.upstreamCataloger\n\t\t\tpackages = append(packages, p)\n\t\t}\n\t\trelationships = append(relationships, res.rels...)\n\t})\n\treturn c.process(ctx, resolver, packages, relationships, errs)\n}\n\nfunc (c *Cataloger) process(ctx context.Context, resolver file.Resolver, pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\tfor _, p := range c.processors {\n\t\tpkgs, rels, err = p.process(ctx, resolver, pkgs, rels, err)\n\t}\n\treturn pkgs, rels, err\n}\n\nfunc invokeParser(ctx context.Context, resolver file.Resolver, location file.Location, logger logger.Logger, parser Parser, env *Environment) ([]pkg.Package, []artifact.Relationship, error) {\n\tcontentReader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\tlogger.WithFields(\"location\", location.RealPath, \"error\", err).Debug(\"unable to fetch contents\")\n\t\treturn nil, nil, err\n\t}\n\tdefer internal.CloseAndLogError(contentReader, location.AccessPath)\n\n\tdiscoveredPackages, discoveredRelationships, err := parser(ctx, resolver, env, file.NewLocationReadCloser(location, contentReader))\n\tif err != nil {\n\t\t// these errors are propagated up, and are likely to be coordinate errors\n\t\tlogger.WithFields(\"location\", location.RealPath, \"error\", err).Trace(\"cataloger returned errors\")\n\t}\n\n\treturn discoveredPackages, discoveredRelationships, err\n}\n\n// selectFiles takes a set of file trees and resolves and file references of interest for future cataloging\nfunc (c *Cataloger) selectFiles(resolver file.Resolver) []request {\n\tvar requests []request\n\tfor _, proc := range c.requesters {\n\t\trequests = append(requests, proc(resolver, Environment{})...)\n\t}\n\treturn requests\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/generic/cataloger_test.go",
    "content": "package generic\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_Cataloger(t *testing.T) {\n\tallParsedPaths := make(map[string]bool)\n\tparser := func(_ context.Context, resolver file.Resolver, env *Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t\tallParsedPaths[reader.Path()] = true\n\t\tcontents, err := io.ReadAll(reader)\n\t\trequire.NoError(t, err)\n\n\t\tif len(contents) == 0 {\n\t\t\treturn nil, nil, nil\n\t\t}\n\n\t\tp := pkg.Package{\n\t\t\tName:      string(contents),\n\t\t\tLocations: file.NewLocationSet(reader.Location),\n\t\t}\n\t\tr := artifact.Relationship{\n\t\t\tFrom: p,\n\t\t\tTo:   p,\n\t\t\tType: artifact.ContainsRelationship,\n\t\t}\n\n\t\treturn []pkg.Package{p}, []artifact.Relationship{r}, nil\n\t}\n\n\tupstream := \"some-other-cataloger\"\n\n\texpectedSelection := []string{\"testdata/last/path.txt\", \"testdata/another-path.txt\", \"testdata/a-path.txt\", \"testdata/empty.txt\"}\n\tresolver := file.NewMockResolverForPaths(expectedSelection...)\n\tcataloger := NewCataloger(upstream).\n\t\tWithParserByPath(parser, \"testdata/another-path.txt\", \"testdata/last/path.txt\").\n\t\tWithParserByGlobs(parser, \"**/a-path.txt\", \"**/empty.txt\")\n\n\tactualPkgs, relationships, err := cataloger.Catalog(context.Background(), resolver)\n\tassert.NoError(t, err)\n\n\texpectedPkgs := make(map[string]pkg.Package)\n\tfor _, path := range expectedSelection {\n\t\trequire.True(t, allParsedPaths[path])\n\t\tif path == \"testdata/empty.txt\" {\n\t\t\tcontinue // note: empty.txt won't become a package\n\t\t}\n\t\texpectedPkgs[path] = pkg.Package{\n\t\t\tFoundBy: upstream,\n\t\t\tName:    fmt.Sprintf(\"%s file contents!\", path),\n\t\t}\n\t}\n\n\tassert.Len(t, allParsedPaths, len(expectedSelection))\n\tassert.Len(t, actualPkgs, len(expectedPkgs))\n\tassert.Len(t, relationships, len(actualPkgs))\n\n\tfor _, p := range actualPkgs {\n\t\tls := p.Locations.ToSlice()\n\t\trequire.NotEmpty(t, ls)\n\t\tref := ls[0]\n\t\texP, ok := expectedPkgs[ref.RealPath]\n\t\tif !ok {\n\t\t\tt.Errorf(\"missing expected pkg: ref=%+v\", ref)\n\t\t\tcontinue\n\t\t}\n\n\t\t// assigned by the generic cataloger\n\t\tif p.FoundBy != exP.FoundBy {\n\t\t\tt.Errorf(\"bad upstream: %s\", p.FoundBy)\n\t\t}\n\n\t\t// assigned by the parser\n\t\tif exP.Name != p.Name {\n\t\t\tt.Errorf(\"bad contents mapping: %+v\", p.Locations)\n\t\t}\n\t}\n}\n\ntype spyReturningFileResolver struct {\n\tm *file.MockResolver\n\ts *spyingIoReadCloser\n}\n\ntype spyingIoReadCloser struct {\n\trc     io.ReadCloser\n\tclosed bool\n}\n\nfunc newSpyReturningFileResolver(s *spyingIoReadCloser, paths ...string) file.Resolver {\n\tm := file.NewMockResolverForPaths(paths...)\n\treturn spyReturningFileResolver{\n\t\tm: m,\n\t\ts: s,\n\t}\n}\n\nfunc (s *spyingIoReadCloser) Read(p []byte) (n int, err error) {\n\treturn s.rc.Read(p)\n}\n\nfunc (s *spyingIoReadCloser) Close() error {\n\ts.closed = true\n\treturn s.rc.Close()\n}\n\nvar _ io.ReadCloser = (*spyingIoReadCloser)(nil)\n\nfunc (m spyReturningFileResolver) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\treturn m.s, nil\n}\n\nfunc (m spyReturningFileResolver) HasPath(path string) bool {\n\treturn m.m.HasPath(path)\n}\n\nfunc (m spyReturningFileResolver) FilesByPath(paths ...string) ([]file.Location, error) {\n\treturn m.m.FilesByPath(paths...)\n}\n\nfunc (m spyReturningFileResolver) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\treturn m.m.FilesByGlob(patterns...)\n}\n\nfunc (m spyReturningFileResolver) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\treturn m.m.FilesByMIMEType(types...)\n}\n\nfunc (m spyReturningFileResolver) FilesByMediaType(types ...string) ([]file.Location, error) {\n\treturn m.m.FilesByMediaType(types...)\n}\n\nfunc (m spyReturningFileResolver) RelativeFileByPath(f file.Location, path string) *file.Location {\n\treturn m.m.RelativeFileByPath(f, path)\n}\n\nfunc (m spyReturningFileResolver) AllLocations(ctx context.Context) <-chan file.Location {\n\treturn m.m.AllLocations(ctx)\n}\n\nfunc (m spyReturningFileResolver) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\treturn m.m.FileMetadataByLocation(location)\n}\n\nvar _ file.Resolver = (*spyReturningFileResolver)(nil)\n\nfunc TestClosesFileOnParserPanic(t *testing.T) {\n\trc := io.NopCloser(strings.NewReader(\"some string\"))\n\tspy := spyingIoReadCloser{\n\t\trc: rc,\n\t}\n\tresolver := newSpyReturningFileResolver(&spy, \"testdata/another-path.txt\")\n\tctx := context.TODO()\n\n\tprocessors := []requester{\n\t\tfunc(resolver file.Resolver, env Environment) []request {\n\t\t\treturn []request{\n\t\t\t\t{\n\t\t\t\t\tLocation: file.Location{\n\t\t\t\t\t\tLocationData: file.LocationData{\n\t\t\t\t\t\t\tCoordinates: file.Coordinates{},\n\t\t\t\t\t\t\tAccessPath:  \"/some/access/path\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tParser: func(context.Context, file.Resolver, *Environment, file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t\t\t\t\t\tpanic(\"panic!\")\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t}\n\n\tc := Cataloger{\n\t\trequesters:        processors,\n\t\tupstreamCataloger: \"unit-test-cataloger\",\n\t}\n\n\tassert.PanicsWithValue(t, \"panic!\", func() {\n\t\t_, _, _ = c.Catalog(ctx, resolver)\n\t})\n\trequire.True(t, spy.closed)\n}\n\nfunc Test_CatalogerWithParserByMediaType(t *testing.T) {\n\tallParsedPaths := make(map[string]bool)\n\tparser := func(_ context.Context, resolver file.Resolver, env *Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t\tallParsedPaths[reader.Path()] = true\n\t\tcontents, err := io.ReadAll(reader)\n\t\trequire.NoError(t, err)\n\n\t\tif len(contents) == 0 {\n\t\t\treturn nil, nil, nil\n\t\t}\n\n\t\tp := pkg.Package{\n\t\t\tName:      string(contents),\n\t\t\tLocations: file.NewLocationSet(reader.Location),\n\t\t}\n\n\t\treturn []pkg.Package{p}, nil, nil\n\t}\n\n\tupstream := \"media-type-cataloger\"\n\n\t// Create locations with test fixtures that exist on disk\n\tloc1 := file.NewLocation(\"testdata/a-path.txt\")\n\tloc2 := file.NewLocation(\"testdata/another-path.txt\")\n\n\t// Create a mock resolver that maps media types to locations\n\tresolver := file.NewMockResolverForMediaTypes(map[string][]file.Location{\n\t\t\"application/vnd.test.model\": {loc1, loc2},\n\t})\n\n\tcataloger := NewCataloger(upstream).\n\t\tWithParserByMediaType(parser, \"application/vnd.test.model\")\n\n\tactualPkgs, _, err := cataloger.Catalog(context.Background(), resolver)\n\tassert.NoError(t, err)\n\n\t// Verify both files were parsed\n\tassert.True(t, allParsedPaths[\"testdata/a-path.txt\"], \"expected a-path.txt to be parsed\")\n\tassert.True(t, allParsedPaths[\"testdata/another-path.txt\"], \"expected another-path.txt to be parsed\")\n\n\t// Verify packages were created\n\tassert.Len(t, actualPkgs, 2)\n\n\t// Verify FoundBy is set correctly\n\tfor _, p := range actualPkgs {\n\t\tassert.Equal(t, upstream, p.FoundBy)\n\t}\n}\n\nfunc Test_genericCatalogerReturnsErrors(t *testing.T) {\n\tgenericErrorReturning := NewCataloger(\"error returning\").WithParserByGlobs(func(ctx context.Context, resolver file.Resolver, environment *Environment, locationReader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t\treturn []pkg.Package{\n\t\t\t{\n\t\t\t\tName: \"some-package-\" + locationReader.Path(),\n\t\t\t},\n\t\t}, nil, unknown.Newf(locationReader, \"unable to read\")\n\t}, \"**/*\")\n\n\tm := file.NewMockResolverForPaths(\n\t\t\"testdata/a-path.txt\",\n\t\t\"testdata/empty.txt\",\n\t)\n\n\tgot, _, errs := genericErrorReturning.Catalog(context.TODO(), m)\n\n\t// require packages and errors\n\trequire.NotEmpty(t, got)\n\n\tunknowns, others := unknown.ExtractCoordinateErrors(errs)\n\trequire.NotEmpty(t, unknowns)\n\trequire.Empty(t, others)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/generic/parser.go",
    "content": "package generic\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype Environment struct {\n\tLinuxRelease *linux.Release\n}\n\ntype Parser func(context.Context, file.Resolver, *Environment, file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error)\n"
  },
  {
    "path": "syft/pkg/cataloger/generic/testdata/a-path.txt",
    "content": "testdata/a-path.txt file contents!"
  },
  {
    "path": "syft/pkg/cataloger/generic/testdata/another-path.txt",
    "content": "testdata/another-path.txt file contents!"
  },
  {
    "path": "syft/pkg/cataloger/generic/testdata/empty.txt",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/generic/testdata/last/path.txt",
    "content": "testdata/last/path.txt file contents!"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: portage # MANUAL\n    name: portage-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/gentoo/cataloger.go\n      function: NewPortageCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - gentoo\n      - image\n      - installed\n      - linux\n      - os\n      - package\n      - portage\n    parsers: # AUTO-GENERATED structure\n      - function: parsePortageContents\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/var/db/pkg/*/*/CONTENTS'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PortageEntry\n        package_types: # AUTO-GENERATED\n          - portage\n        json_schema_types: # AUTO-GENERATED\n          - PortageDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - PortageEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - PortageEntry.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/cataloger.go",
    "content": "/*\nPackage gentoo provides a concrete Cataloger implementation related to packages within the Gentoo linux ecosystem.\n*/\npackage gentoo\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewPortageCataloger returns a new cataloger object initialized for Gentoo Portage package manager files (a flat-file store).\nfunc NewPortageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"portage-cataloger\").\n\t\tWithParserByGlobs(parsePortageContents, \"**/var/db/pkg/*/*/CONTENTS\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/cataloger_test.go",
    "content": "package gentoo\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestPortageCataloger(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPackages      []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"standard skopeo package\",\n\t\t\tfixture: \"testdata/layout\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"app-containers/skopeo\",\n\t\t\t\t\tVersion: \"1.5.1\",\n\t\t\t\t\tFoundBy: \"portage-cataloger\",\n\t\t\t\t\tPURL:    \"pkg:ebuild/app-containers%2Fskopeo@1.5.1\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS\"),\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/SIZE\"),\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/LICENSE\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocation(\n\t\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/LICENSE\"),\n\t\t\t\t\t\t\t\"Apache-2.0 AND BSD AND BSD-2 AND CC-BY-SA-4.0 AND ISC AND MIT\")...,\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.PortagePkg,\n\t\t\t\t\tMetadata: pkg.PortageEntry{\n\t\t\t\t\t\tInstalledSize: 27937835,\n\t\t\t\t\t\tLicenses:      \"Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT\",\n\t\t\t\t\t\tFiles: []pkg.PortageFileRecord{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/usr/bin/skopeo\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"376c02bd3b22804df8fdfdc895e7dbfb\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/containers/policy.json\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"c01eb6950f03419e09d4fc88cb42ff6f\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/containers/registries.d/default.yaml\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"e6e66cd3c24623e0667f26542e0e08f6\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/var/lib/atomic/sigstore/.keep_app-containers_skopeo-0\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"d41d8cd98f00b204e9800998ecf8427e\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// not supported at this time\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"standard skopeo package with license groups\",\n\t\t\tfixture: \"testdata/layout-license-groups\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"app-containers/skopeo\",\n\t\t\t\t\tVersion: \"1.5.1\",\n\t\t\t\t\tFoundBy: \"portage-cataloger\",\n\t\t\t\t\tPURL:    \"pkg:ebuild/app-containers%2Fskopeo@1.5.1\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS\"),\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/SIZE\"),\n\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/LICENSE\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocation(\n\t\t\t\t\t\t\tfile.NewLocation(\"var/db/pkg/app-containers/skopeo-1.5.1/LICENSE\"),\n\t\t\t\t\t\t\t\"Apache-2.0 AND BSD AND BSD-2 AND CC-BY-SA-4.0 AND ISC AND MIT\")...,\n\t\t\t\t\t),\n\t\t\t\t\tType: pkg.PortagePkg,\n\t\t\t\t\tMetadata: pkg.PortageEntry{\n\t\t\t\t\t\tInstalledSize: 27937835,\n\t\t\t\t\t\tLicenses:      \"@GROUP1 @MIT-LIKE\",\n\t\t\t\t\t\tFiles: []pkg.PortageFileRecord{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/usr/bin/skopeo\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"376c02bd3b22804df8fdfdc895e7dbfb\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/containers/policy.json\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"c01eb6950f03419e09d4fc88cb42ff6f\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/etc/containers/registries.d/default.yaml\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"e6e66cd3c24623e0667f26542e0e08f6\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/var/lib/atomic/sigstore/.keep_app-containers_skopeo-0\",\n\t\t\t\t\t\t\t\tDigest: &file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\t\t\t\t\t\tValue:     \"d41d8cd98f00b204e9800998ecf8427e\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// not supported at this time\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpects(test.expectedPackages, test.expectedRelationships).\n\t\t\t\tTestCataloger(t, NewPortageCataloger())\n\t\t})\n\t}\n}\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain portage contents file\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"var/db/pkg/x/y/CONTENTS\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPortageCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/license.go",
    "content": "package gentoo\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// the licenses files seems to conform to a custom format that is common to gentoo packages.\n// see more details:\n//  - https://www.gentoo.org/glep/glep-0023.html#id9\n//  - https://devmanual.gentoo.org/general-concepts/licenses/index.html\n//\n// in short, the format is:\n//\n//   mandatory-license\n//      || ( choosable-licence1 chooseable-license-2 )\n//      useflag? ( optional-component-license )\n//\n//   \"License names may contain [a-zA-Z0-9] (english alphanumeric characters), _ (underscore), - (hyphen), .\n//   (dot) and + (plus sign). They must not begin with a hyphen, a dot or a plus sign.\"\n//\n// this does not conform to SPDX license expressions, which would be a great enhancement in the future.\n\n// extractLicenses attempts to parse the license field into a valid SPDX license expression\nfunc extractLicenses(resolver file.Resolver, closestLocation *file.Location, reader io.Reader) (string, string) {\n\tfindings := strset.New()\n\tcontentsWriter := bytes.Buffer{}\n\tscanner := bufio.NewScanner(io.TeeReader(reader, &contentsWriter))\n\tscanner.Split(bufio.ScanWords)\n\tvar (\n\t\tmandatoryLicenses, conditionalLicenses, useflagLicenses []string\n\t\tusesGroups                                              bool\n\t\tpipe                                                    bool\n\t\tuseflag                                                 bool\n\t)\n\n\tfor scanner.Scan() {\n\t\ttoken := scanner.Text()\n\t\tif token == \"||\" {\n\t\t\tpipe = true\n\t\t\tcontinue\n\t\t}\n\t\t// useflag\n\t\tif strings.Contains(token, \"?\") {\n\t\t\tuseflag = true\n\t\t\tcontinue\n\t\t}\n\t\tif !strings.ContainsAny(token, \"()|?\") {\n\t\t\tswitch {\n\t\t\tcase useflag:\n\t\t\t\tuseflagLicenses = append(useflagLicenses, token)\n\t\t\tcase pipe:\n\t\t\t\tconditionalLicenses = append(conditionalLicenses, token)\n\t\t\tdefault:\n\t\t\t\tmandatoryLicenses = append(mandatoryLicenses, token)\n\t\t\t}\n\t\t\tif strings.HasPrefix(token, \"@\") {\n\t\t\t\tusesGroups = true\n\t\t\t}\n\t\t}\n\t}\n\n\tvar licenseGroups map[string][]string\n\tif usesGroups {\n\t\tlicenseGroups = readLicenseGroups(resolver, closestLocation)\n\t}\n\tmandatoryLicenses = replaceLicenseGroups(mandatoryLicenses, licenseGroups)\n\tconditionalLicenses = replaceLicenseGroups(conditionalLicenses, licenseGroups)\n\tfindings.Add(mandatoryLicenses...)\n\tfindings.Add(conditionalLicenses...)\n\tfindings.Add(useflagLicenses...)\n\n\tvar mandatoryStatement, conditionalStatement string\n\n\t// attempt to build valid SPDX license expression\n\tif len(mandatoryLicenses) > 0 {\n\t\tmandatoryStatement = strings.Join(mandatoryLicenses, \" AND \")\n\t}\n\tif len(conditionalLicenses) > 0 {\n\t\tconditionalStatement = strings.Join(conditionalLicenses, \" OR \")\n\t}\n\n\tcontents := strings.TrimSpace(contentsWriter.String())\n\n\tif mandatoryStatement != \"\" && conditionalStatement != \"\" {\n\t\treturn contents, mandatoryStatement + \" AND (\" + conditionalStatement + \")\"\n\t}\n\n\tif mandatoryStatement != \"\" {\n\t\treturn contents, mandatoryStatement\n\t}\n\n\tif conditionalStatement != \"\" {\n\t\treturn contents, conditionalStatement\n\t}\n\n\treturn contents, \"\"\n}\n\nfunc readLicenseGroups(resolver file.Resolver, closestLocation *file.Location) map[string][]string {\n\tif resolver == nil || closestLocation == nil {\n\t\treturn nil\n\t}\n\tvar licenseGroups map[string][]string\n\tgroupLocation := resolver.RelativeFileByPath(*closestLocation, \"/etc/portage/license_groups\")\n\tif groupLocation == nil {\n\t\treturn nil\n\t}\n\n\tgroupReader, err := resolver.FileContentsByLocation(*groupLocation)\n\tdefer internal.CloseAndLogError(groupReader, groupLocation.RealPath)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", groupLocation.RealPath, \"error\", err).Debug(\"failed to fetch portage LICENSE\")\n\t\treturn nil\n\t}\n\n\tif groupReader == nil {\n\t\treturn nil\n\t}\n\n\tlicenseGroups, err = parseLicenseGroups(groupReader)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", groupLocation.RealPath, \"error\", err).Debug(\"failed to parse portage LICENSE\")\n\t}\n\n\treturn licenseGroups\n}\n\nfunc replaceLicenseGroups(licenses []string, groups map[string][]string) []string {\n\tif groups == nil {\n\t\treturn licenses\n\t}\n\n\tresult := make([]string, 0, len(licenses))\n\tfor _, license := range licenses {\n\t\tif strings.HasPrefix(license, \"@\") {\n\t\t\t// this is a license group...\n\t\t\tname := strings.TrimPrefix(license, \"@\")\n\t\t\tif expandedLicenses, ok := groups[name]; ok {\n\t\t\t\tresult = append(result, expandedLicenses...)\n\t\t\t} else {\n\t\t\t\t// unable to expand, use the original license group value (including the '@')\n\t\t\t\tresult = append(result, license)\n\t\t\t}\n\t\t} else {\n\t\t\t// this is a license...\n\t\t\tresult = append(result, license)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc parseLicenseGroups(reader io.Reader) (map[string][]string, error) {\n\tresult := make(map[string][]string)\n\trawGroups := make(map[string][]string)\n\n\tscanner := bufio.NewScanner(reader)\n\n\t// first collect all raw groups\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\n\t\tif line == \"\" || strings.HasPrefix(line, \"#\") {\n\t\t\t// skip empty lines and comments\n\t\t\tcontinue\n\t\t}\n\n\t\tparts := strings.Fields(line)\n\t\tif len(parts) < 2 {\n\t\t\treturn nil, fmt.Errorf(\"invalid line format: %s\", line)\n\t\t}\n\n\t\tgroupName := parts[0]\n\t\tlicenses := parts[1:]\n\n\t\trawGroups[groupName] = licenses\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// next process each group to expand nested references\n\tfor groupName, licenses := range rawGroups {\n\t\texpanded, err := expandLicenses(groupName, licenses, rawGroups, make(map[string]bool))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tresult[groupName] = expanded\n\t}\n\n\treturn result, nil\n}\n\n// expandLicenses handles the recursive expansion of license groups, 'visited' is used to detect cycles. We are always\n// in terms of slices instead of sets to ensure original ordering is preserved.\nfunc expandLicenses(currentGroup string, licenses []string, rawGroups map[string][]string, visited map[string]bool) ([]string, error) {\n\tif visited[currentGroup] {\n\t\treturn nil, fmt.Errorf(\"cycle detected in license group definitions for group: %s\", currentGroup)\n\t}\n\n\tvisited[currentGroup] = true\n\n\tresult := make([]string, 0)\n\n\tfor _, item := range licenses {\n\t\tif strings.HasPrefix(item, \"@\") {\n\t\t\t// this is a reference to another group\n\t\t\trefGroupName := item[1:] // remove '@' prefix\n\n\t\t\trefLicenses, exists := rawGroups[refGroupName]\n\t\t\tif !exists {\n\t\t\t\treturn nil, fmt.Errorf(\"referenced group not found: %s\", refGroupName)\n\t\t\t}\n\n\t\t\tnewVisited := make(map[string]bool)\n\t\t\tfor k, v := range visited {\n\t\t\t\tnewVisited[k] = v\n\t\t\t}\n\n\t\t\texpanded, err := expandLicenses(refGroupName, refLicenses, rawGroups, newVisited)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tfor _, license := range expanded {\n\t\t\t\tif !slices.Contains(result, license) {\n\t\t\t\t\tresult = append(result, license)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if !slices.Contains(result, item) {\n\t\t\t// ...this is a regular license\n\t\t\tresult = append(result, item)\n\t\t}\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/license_test.go",
    "content": "package gentoo\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// you can get a good sense of test fixtures with:\n//   docker run --rm -it gentoo/stage3 bash -c 'find var/db/pkg/ | grep LICENSE | xargs cat'\n\nfunc Test_extractLicenses(t *testing.T) {\n\n\ttests := []struct {\n\t\tname           string\n\t\tlicense        string\n\t\twantExpression string\n\t}{\n\t\t{\n\t\t\tname:           \"empty\",\n\t\t\tlicense:        \"\",\n\t\t\twantExpression: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"single\",\n\t\t\tlicense:        \"GPL-2\",\n\t\t\twantExpression: \"GPL-2\",\n\t\t},\n\t\t{\n\t\t\tname:           \"multiple\",\n\t\t\tlicense:        \"GPL-2 GPL-3 \", // note the extra space\n\t\t\twantExpression: \"GPL-2 AND GPL-3\",\n\t\t},\n\t\t{\n\t\t\tname:           \"license choices\",\n\t\t\tlicense:        \"|| ( GPL-2 GPL-3 )\\n\", // note the newline\n\t\t\twantExpression: \"GPL-2 OR GPL-3\",\n\t\t},\n\t\t{\n\t\t\t// this might not be correct behavior, but we do our best with missing info\n\t\t\tname:           \"license choices with missing useflag suffix\",\n\t\t\tlicense:        \"GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+\",                // no use flag so what do we do with FDL here?\n\t\t\twantExpression: \"GPL-3+ AND LGPL-3+ AND (GPL-3+ OR libgcc OR libstdc++ OR gcc-runtime-library-exception-3.1 OR FDL-1.3+)\", // \"OR FDL-1.3+\" is probably wrong at the end...\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\traw, expression := extractLicenses(nil, nil, strings.NewReader(tt.license))\n\t\t\tassert.Equalf(t, tt.wantExpression, expression, \"unexpected expression for %v\", tt.license)\n\t\t\tassert.Equalf(t, strings.TrimSpace(tt.license), raw, \"unexpected raw for %v\", tt.license)\n\t\t})\n\t}\n}\n\nfunc TestParseLicenseGroups(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tinput       string\n\t\texpected    map[string][]string\n\t\texpectError require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:  \"basic nesting example\",\n\t\t\tinput: \"testdata/license-groups/example1\",\n\t\t\texpected: map[string][]string{\n\t\t\t\t\"FSF-APPROVED\": {\n\t\t\t\t\t\"Apache-2.0\", \"BSD\", \"BSD-2\", \"GPL-2\", \"GPL-3\", \"LGPL-2.1\", \"LGPL-3\", \"X11\", \"ZLIB\",\n\t\t\t\t\t\"Apache-1.1\", \"BSD-4\", \"MPL-1.0\", \"MPL-1.1\", \"PSF-2.0\",\n\t\t\t\t},\n\t\t\t\t\"GPL-COMPATIBLE\": {\n\t\t\t\t\t\"Apache-2.0\", \"BSD\", \"BSD-2\", \"GPL-2\", \"GPL-3\", \"LGPL-2.1\", \"LGPL-3\", \"X11\", \"ZLIB\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"error on cycles\",\n\t\t\tinput:       \"testdata/license-groups/cycle\",\n\t\t\texpectError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:        \"error on self references\",\n\t\t\tinput:       \"testdata/license-groups/self\",\n\t\t\texpectError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:        \"error on missing reference\",\n\t\t\tinput:       \"testdata/license-groups/missing\",\n\t\t\texpectError: require.Error,\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif tc.expectError == nil {\n\t\t\t\ttc.expectError = require.NoError\n\t\t\t}\n\n\t\t\tcontents, err := os.ReadFile(tc.input)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual, err := parseLicenseGroups(bytes.NewReader(contents))\n\t\t\ttc.expectError(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif d := cmp.Diff(tc.expected, actual); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected license groups (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestReplaceLicenseGroups(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tlicenses []string\n\t\tgroups   map[string][]string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"nil groups\",\n\t\t\tlicenses: []string{\"MIT\", \"Apache-2.0\", \"@GPL\"},\n\t\t\tgroups:   nil,\n\t\t\texpected: []string{\"MIT\", \"Apache-2.0\", \"@GPL\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"empty groups\",\n\t\t\tlicenses: []string{\"MIT\", \"Apache-2.0\", \"@GPL\"},\n\t\t\tgroups:   map[string][]string{},\n\t\t\texpected: []string{\"MIT\", \"Apache-2.0\", \"@GPL\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"no group references\",\n\t\t\tlicenses: []string{\"MIT\", \"Apache-2.0\", \"GPL-2.0\"},\n\t\t\tgroups:   map[string][]string{\"GPL\": {\"GPL-2.0\", \"GPL-3.0\"}},\n\t\t\texpected: []string{\"MIT\", \"Apache-2.0\", \"GPL-2.0\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"single group reference\",\n\t\t\tlicenses: []string{\"MIT\", \"@GPL\", \"Apache-2.0\"},\n\t\t\tgroups:   map[string][]string{\"GPL\": {\"GPL-2.0\", \"GPL-3.0\"}},\n\t\t\texpected: []string{\"MIT\", \"GPL-2.0\", \"GPL-3.0\", \"Apache-2.0\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"multiple group references\",\n\t\t\tlicenses: []string{\"@MIT-LIKE\", \"@GPL\", \"BSD-3\"},\n\t\t\tgroups: map[string][]string{\n\t\t\t\t\"MIT-LIKE\": {\"MIT\", \"ISC\"},\n\t\t\t\t\"GPL\":      {\"GPL-2.0\", \"GPL-3.0\"},\n\t\t\t},\n\t\t\texpected: []string{\"MIT\", \"ISC\", \"GPL-2.0\", \"GPL-3.0\", \"BSD-3\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"unknown group reference\",\n\t\t\tlicenses: []string{\"MIT\", \"@UNKNOWN\", \"Apache-2.0\"},\n\t\t\tgroups:   map[string][]string{\"GPL\": {\"GPL-2.0\", \"GPL-3.0\"}},\n\t\t\texpected: []string{\"MIT\", \"@UNKNOWN\", \"Apache-2.0\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"reference at end\",\n\t\t\tlicenses: []string{\"MIT\", \"Apache-2.0\", \"@GPL\"},\n\t\t\tgroups:   map[string][]string{\"GPL\": {\"GPL-2.0\", \"GPL-3.0\"}},\n\t\t\texpected: []string{\"MIT\", \"Apache-2.0\", \"GPL-2.0\", \"GPL-3.0\"},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tinputLicenses := make([]string, len(tc.licenses))\n\t\t\tcopy(inputLicenses, tc.licenses)\n\n\t\t\tactual := replaceLicenseGroups(inputLicenses, tc.groups)\n\n\t\t\tassert.Equal(t, tc.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/parse_portage_contents.go",
    "content": "package gentoo\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar (\n\tcpvRe                = regexp.MustCompile(`/([^/]*/[\\w+][\\w+-]*)-((\\d+)((\\.\\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\\d*)*)(-r\\d+)?)/CONTENTS$`)\n\t_     generic.Parser = parsePortageContents\n)\n\n// parses individual CONTENTS files from the portage flat-file store (e.g. /var/db/pkg/*/*/CONTENTS).\nfunc parsePortageContents(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tcpvMatch := cpvRe.FindStringSubmatch(reader.RealPath)\n\tif cpvMatch == nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to match package and version in %s\", reader.RealPath)\n\t}\n\n\tname, version := cpvMatch[1], cpvMatch[2]\n\tif name == \"\" || version == \"\" {\n\t\tlog.WithFields(\"path\", reader.RealPath).Debug(\"failed to parse portage name and version\")\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse portage name and version\")\n\t}\n\n\tm := pkg.PortageEntry{\n\t\t// ensure the default value for a collection is never nil since this may be shown as JSON\n\t\tFiles: make([]pkg.PortageFileRecord, 0),\n\t}\n\n\tlocations := file.NewLocationSet(reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\tlicenses, licenseLocations := addLicenses(ctx, resolver, reader.Location, &m)\n\tlocations.Add(licenseLocations...)\n\tlocations.Add(addSize(resolver, reader.Location, &m)...)\n\taddFiles(resolver, reader.Location, &m)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tPURL:      packageURL(name, version),\n\t\tLocations: locations,\n\t\tLicenses:  licenses,\n\t\tType:      pkg.PortagePkg,\n\t\tMetadata:  m,\n\t}\n\tp.SetID()\n\n\treturn []pkg.Package{p}, nil, nil\n}\n\nfunc addFiles(resolver file.Resolver, dbLocation file.Location, entry *pkg.PortageEntry) {\n\tcontentsReader, err := resolver.FileContentsByLocation(dbLocation)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", dbLocation.RealPath, \"error\", err).Debug(\"failed to fetch portage contents\")\n\t\treturn\n\t}\n\tdefer internal.CloseAndLogError(contentsReader, dbLocation.RealPath)\n\n\tscanner := bufio.NewScanner(contentsReader)\n\tfor scanner.Scan() {\n\t\tline := strings.Trim(scanner.Text(), \"\\n\")\n\t\tfields := strings.Split(line, \" \")\n\n\t\tif fields[0] == \"obj\" {\n\t\t\trecord := pkg.PortageFileRecord{\n\t\t\t\tPath: fields[1],\n\t\t\t}\n\t\t\trecord.Digest = &file.Digest{\n\t\t\t\tAlgorithm: \"md5\",\n\t\t\t\tValue:     fields[2],\n\t\t\t}\n\t\t\tentry.Files = append(entry.Files, record)\n\t\t}\n\t}\n}\n\nfunc addLicenses(ctx context.Context, resolver file.Resolver, dbLocation file.Location, entry *pkg.PortageEntry) (pkg.LicenseSet, []file.Location) {\n\tparentPath := filepath.Dir(dbLocation.RealPath)\n\n\tlocation := resolver.RelativeFileByPath(dbLocation, path.Join(parentPath, \"LICENSE\"))\n\n\tif location == nil {\n\t\treturn pkg.NewLicenseSet(), nil\n\t}\n\n\tlicenseReader, err := resolver.FileContentsByLocation(*location)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", dbLocation.RealPath, \"error\", err).Debug(\"failed to fetch portage LICENSE\")\n\t\treturn pkg.NewLicenseSet(), nil\n\t}\n\tdefer internal.CloseAndLogError(licenseReader, location.RealPath)\n\n\tog, spdxExpression := extractLicenses(resolver, location, licenseReader)\n\tentry.Licenses = og\n\n\treturn pkg.NewLicenseSet(pkg.NewLicenseFromLocationsWithContext(ctx, spdxExpression, *location)), []file.Location{\n\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation)}\n}\n\nfunc addSize(resolver file.Resolver, dbLocation file.Location, entry *pkg.PortageEntry) []file.Location {\n\tparentPath := filepath.Dir(dbLocation.RealPath)\n\n\tlocation := resolver.RelativeFileByPath(dbLocation, path.Join(parentPath, \"SIZE\"))\n\n\tif location == nil {\n\t\treturn nil\n\t}\n\n\tsizeReader, err := resolver.FileContentsByLocation(*location)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", dbLocation.RealPath, \"error\", err).Debug(\"failed to fetch portage SIZE\")\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(sizeReader, location.RealPath)\n\n\tscanner := bufio.NewScanner(sizeReader)\n\tfor scanner.Scan() {\n\t\tline := strings.Trim(scanner.Text(), \"\\n\")\n\t\tsize, err := strconv.Atoi(line)\n\t\tif err == nil {\n\t\t\tentry.InstalledSize = size\n\t\t}\n\t}\n\n\treturn []file.Location{location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation)}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/purl.go",
    "content": "package gentoo\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n)\n\nfunc packageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\t\"ebuild\", // currently this is the proposed type for portage packages at https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/purl_test.go",
    "content": "package gentoo\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tversion string\n\t\twant    string\n\t}{\n\t\t{\n\t\t\t\"app-admin/eselect\",\n\t\t\t\"1.4.15\",\n\t\t\t\"pkg:ebuild/app-admin%2Feselect@1.4.15\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(fmt.Sprintf(\"%s@%s\", tt.name, tt.version), func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, packageURL(tt.name, tt.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/glob-paths/var/db/pkg/x/y/CONTENTS",
    "content": "bogus contents"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS",
    "content": "dir /usr\ndir /usr/bin\nobj /usr/bin/skopeo 376c02bd3b22804df8fdfdc895e7dbfb 1649284374\ndir /etc\ndir /etc/containers\nobj /etc/containers/policy.json c01eb6950f03419e09d4fc88cb42ff6f 1649284375\ndir /etc/containers/registries.d\nobj /etc/containers/registries.d/default.yaml e6e66cd3c24623e0667f26542e0e08f6 1649284375\ndir /var\ndir /var/lib\ndir /var/lib/atomic\ndir /var/lib/atomic/sigstore\nobj /var/lib/atomic/sigstore/.keep_app-containers_skopeo-0 d41d8cd98f00b204e9800998ecf8427e 1649284375\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE",
    "content": "Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout/var/db/pkg/app-containers/skopeo-1.5.1/SIZE",
    "content": "27937835\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout-license-groups/etc/portage/license_groups",
    "content": "# The FSF-APPROVED group includes the entire GPL-COMPATIBLE group and more.\nFSF-APPROVED @GPL-COMPATIBLE Apache-1.1 BSD-4 MPL-1.0 MPL-1.1 PSF-2.0\n# The GPL-COMPATIBLE group includes all licenses compatible with the GNU GPL.\nGPL-COMPATIBLE Apache-2.0 BSD BSD-2 GPL-2 GPL-3 LGPL-2.1 LGPL-3 X11 ZLIB\n# for skopeo\nGROUP1 Apache-2.0 @BSD-COMPATIBLE CC-BY-SA-4.0\nBSD-COMPATIBLE BSD BSD-2\nMIT-LIKE ISC MIT"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout-license-groups/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS",
    "content": "dir /usr\ndir /usr/bin\nobj /usr/bin/skopeo 376c02bd3b22804df8fdfdc895e7dbfb 1649284374\ndir /etc\ndir /etc/containers\nobj /etc/containers/policy.json c01eb6950f03419e09d4fc88cb42ff6f 1649284375\ndir /etc/containers/registries.d\nobj /etc/containers/registries.d/default.yaml e6e66cd3c24623e0667f26542e0e08f6 1649284375\ndir /var\ndir /var/lib\ndir /var/lib/atomic\ndir /var/lib/atomic/sigstore\nobj /var/lib/atomic/sigstore/.keep_app-containers_skopeo-0 d41d8cd98f00b204e9800998ecf8427e 1649284375\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout-license-groups/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE",
    "content": "@GROUP1 @MIT-LIKE\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/layout-license-groups/var/db/pkg/app-containers/skopeo-1.5.1/SIZE",
    "content": "27937835\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/license-groups/cycle",
    "content": "FSF-APPROVED @GPL-COMPATIBLE Apache-1.1\nGPL-COMPATIBLE Apache-2.0 @FSF-APPROVED\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/license-groups/example1",
    "content": "# The FSF-APPROVED group includes the entire GPL-COMPATIBLE group and more.\nFSF-APPROVED @GPL-COMPATIBLE Apache-1.1 BSD-4 MPL-1.0 MPL-1.1 PSF-2.0\n\n# The GPL-COMPATIBLE group includes all licenses compatible with the GNU GPL.\nGPL-COMPATIBLE Apache-2.0 BSD BSD-2 GPL-2 GPL-3 LGPL-2.1 LGPL-3 X11 ZLIB\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/license-groups/missing",
    "content": "FSF-APPROVED @GPL-COMPATIBLE Apache-1.1\n\nGPL-COMPATIBLE Apache-2.0 @MISSING\n"
  },
  {
    "path": "syft/pkg/cataloger/gentoo/testdata/license-groups/self",
    "content": "FSF-APPROVED Apache-1.1\nGPL-COMPATIBLE Apache-2.0 @GPL-COMPATIBLE\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: github-actions # MANUAL\n    name: github-action-workflow-usage-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/githubactions/cataloger.go\n      function: NewWorkflowUsageCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - github\n      - github-actions\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseWorkflowForWorkflowUsage\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/.github/workflows/*.yaml'\n            - '**/.github/workflows/*.yml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.GitHubActionsUseStatement\n        package_types: # AUTO-GENERATED\n          - github-action-workflow\n        json_schema_types: # AUTO-GENERATED\n          - GithubActionsUseStatement\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: github-actions # MANUAL\n    name: github-actions-usage-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/githubactions/cataloger.go\n      function: NewActionUsageCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - github\n      - github-actions\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseCompositeActionForActionUsage\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/.github/actions/*/action.yml'\n            - '**/.github/actions/*/action.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.GitHubActionsUseStatement\n        package_types: # AUTO-GENERATED\n          - github-action\n        json_schema_types: # AUTO-GENERATED\n          - GithubActionsUseStatement\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseWorkflowForActionUsage\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/.github/workflows/*.yaml'\n            - '**/.github/workflows/*.yml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.GitHubActionsUseStatement\n        package_types: # AUTO-GENERATED\n          - github-action\n        json_schema_types: # AUTO-GENERATED\n          - GithubActionsUseStatement\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/cataloger.go",
    "content": "/*\nPackage githubactions provides a concrete Cataloger implementation for GitHub Actions packages (both actions and workflows).\n*/\npackage githubactions\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewActionUsageCataloger returns GitHub Actions used within workflows and composite actions.\nfunc NewActionUsageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"github-actions-usage-cataloger\").\n\t\tWithParserByGlobs(parseWorkflowForActionUsage, \"**/.github/workflows/*.yaml\", \"**/.github/workflows/*.yml\").\n\t\tWithParserByGlobs(parseCompositeActionForActionUsage, \"**/.github/actions/*/action.yml\", \"**/.github/actions/*/action.yaml\")\n}\n\n// NewWorkflowUsageCataloger returns shared workflows used within workflows.\nfunc NewWorkflowUsageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"github-action-workflow-usage-cataloger\").\n\t\tWithParserByGlobs(parseWorkflowForWorkflowUsage, \"**/.github/workflows/*.yaml\", \"**/.github/workflows/*.yml\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/cataloger_test.go",
    "content": "package githubactions\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tfixture   string\n\t\tcataloger pkg.Cataloger\n\t\texpected  []string\n\t}{\n\t\t{\n\t\t\tname:      \"obtain all workflow and composite action files\",\n\t\t\tfixture:   \"testdata/glob\",\n\t\t\tcataloger: NewActionUsageCataloger(),\n\t\t\texpected: []string{\n\t\t\t\t// composite actions\n\t\t\t\t\".github/actions/bootstrap/action.yaml\",\n\t\t\t\t\".github/actions/unbootstrap/action.yml\",\n\t\t\t\t// workflows\n\t\t\t\t\".github/workflows/release.yml\",\n\t\t\t\t\".github/workflows/validations.yaml\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"obtain all workflow files\",\n\t\t\tfixture:   \"testdata/glob\",\n\t\t\tcataloger: NewWorkflowUsageCataloger(),\n\t\t\texpected: []string{\n\t\t\t\t// workflows\n\t\t\t\t\".github/workflows/release.yml\",\n\t\t\t\t\".github/workflows/validations.yaml\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, test.cataloger)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/package.go",
    "content": "package githubactions\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackageFromUsageStatement(use, comment string, location file.Location) (*pkg.Package, error) {\n\tname, version := parseStepUsageStatement(use, comment)\n\n\tif name == \"\" {\n\t\tlog.WithFields(\"file\", location.RealPath, \"statement\", use).Trace(\"unable to parse github action usage statement\")\n\t\treturn nil, fmt.Errorf(\"unable to parse github action usage statement\")\n\t}\n\n\tif strings.Contains(name, \".github/workflows/\") {\n\t\treturn newGithubActionWorkflowPackageUsage(name, version, location, pkg.GitHubActionsUseStatement{Value: use, Comment: comment}), nil\n\t}\n\n\treturn newGithubActionPackageUsage(name, version, location, pkg.GitHubActionsUseStatement{Value: use, Comment: comment}), nil\n}\n\nfunc newGithubActionWorkflowPackageUsage(name, version string, workflowLocation file.Location, m pkg.GitHubActionsUseStatement) *pkg.Package {\n\tp := &pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(workflowLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tPURL:      packageURL(name, version),\n\t\tType:      pkg.GithubActionWorkflowPkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newGithubActionPackageUsage(name, version string, workflowLocation file.Location, m pkg.GitHubActionsUseStatement) *pkg.Package {\n\tp := &pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(workflowLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tPURL:      packageURL(name, version),\n\t\tType:      pkg.GithubActionPkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc parseStepUsageStatement(use, comment string) (string, string) {\n\t// from \"octo-org/another-repo/.github/workflows/workflow.yml@v1\" get octo-org/another-repo/.github/workflows/workflow.yml and v1\n\t// from \"./.github/workflows/workflow-2.yml\" interpret as only the name\n\t// from \"actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2\" get actions/checkout and v4.2.2\n\t// from \"actions/cache@v3\" get actions/cache and v3\n\n\tfields := strings.Split(use, \"@\")\n\tname := use\n\tversion := \"\"\n\n\tif len(fields) == 2 {\n\t\tname = fields[0]\n\t\tversion = fields[1]\n\t}\n\n\t// if version looks like a commit hash and we have a comment, try to extract version from comment\n\tif version != \"\" && regexp.MustCompile(`^[0-9a-f]{7,}$`).MatchString(version) && comment != \"\" {\n\t\tversionRegex := regexp.MustCompile(`v?\\d+\\.\\d+\\.\\d+`)\n\t\tmatches := versionRegex.FindStringSubmatch(comment)\n\n\t\tif len(matches) >= 1 {\n\t\t\treturn name, matches[0]\n\t\t}\n\t}\n\n\treturn name, version\n}\n\nfunc packageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\tvar subPath string\n\tvar namespace string\n\n\tfields := strings.SplitN(name, \"/\", 3)\n\tswitch len(fields) {\n\tcase 1:\n\t\treturn \"\"\n\tcase 2:\n\t\tnamespace = fields[0]\n\t\tname = fields[1]\n\tcase 3:\n\t\tnamespace = fields[0]\n\t\tname = fields[1]\n\t\tsubPath = fields[2]\n\t}\n\tif namespace == \".\" {\n\t\t// this is a local composite action, which is unclear how to represent in a PURL without more information\n\t\treturn \"\"\n\t}\n\n\t// there isn't a github actions PURL but there is a github PURL type for referencing github repos, which is the\n\t// next best thing until there is a supported type.\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeGithub,\n\t\tnamespace,\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\tsubPath,\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/parse_composite_action.go",
    "content": "package githubactions\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseCompositeActionForActionUsage\n\ntype compositeActionDef struct {\n\tRuns compositeActionRunsDef `yaml:\"runs\"`\n}\n\ntype compositeActionRunsDef struct {\n\tSteps []stepDef `yaml:\"steps\"`\n}\n\nfunc parseCompositeActionForActionUsage(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar ca compositeActionDef\n\tvar errs error\n\tif errs = yaml.NewDecoder(reader).Decode(&ca); errs != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse yaml composite action file: %w\", errs)\n\t}\n\n\t// we use a collection to help with deduplication before raising to higher level processing\n\tpkgs := pkg.NewCollection()\n\n\tfor _, step := range ca.Runs.Steps {\n\t\tif step.Uses == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tp, err := newPackageFromUsageStatement(step.Uses, step.UsesComment, reader.Location)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, reader, err)\n\t\t}\n\t\tif p != nil {\n\t\t\tpkgs.Add(*p)\n\t\t}\n\t}\n\n\treturn pkgs.Sorted(), nil, errs\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/parse_composite_action_test.go",
    "content": "package githubactions\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parseCompositeActionForActionUsage(t *testing.T) {\n\tfixture := \"testdata/composite-action.yaml\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"actions/setup-go\",\n\t\t\tVersion:   \"v4\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/setup-go@v4\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/setup-go@v4\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/cache\",\n\t\t\tVersion:   \"v3\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/cache@v3\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/cache@v3\"},\n\t\t},\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\tpkgtest.TestFileParser(t, fixture, parseCompositeActionForActionUsage, expected, expectedRelationships)\n}\n\nfunc Test_corruptCompositeAction(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/composite-action.yaml\").\n\t\tWithError().\n\t\tTestParser(t, parseCompositeActionForActionUsage)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/parse_workflow.go",
    "content": "package githubactions\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar (\n\t_ generic.Parser = parseWorkflowForActionUsage\n\t_ generic.Parser = parseWorkflowForWorkflowUsage\n)\n\ntype workflowDef struct {\n\tJobs map[string]workflowJobDef `yaml:\"jobs\"`\n}\n\ntype workflowJobDef struct {\n\tUses        string    `yaml:\"uses\"`\n\tUsesComment string    `yaml:\"-\"`\n\tSteps       []stepDef `yaml:\"steps\"`\n}\n\ntype stepDef struct {\n\tName        string `yaml:\"name\"`\n\tUses        string `yaml:\"uses\"`\n\tUsesComment string `yaml:\"-\"`\n\tWith        struct {\n\t\tPath string `yaml:\"path\"`\n\t\tKey  string `yaml:\"key\"`\n\t} `yaml:\"with\"`\n}\n\nfunc parseWorkflowForWorkflowUsage(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t// parse the yaml file into a generic node to preserve comments\n\tvar node yaml.Node\n\tvar errs error\n\tif errs = yaml.NewDecoder(reader).Decode(&node); errs != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse yaml workflow file: %w\", errs)\n\t}\n\n\t// unmarshal the node into a workflowDef struct\n\tvar wf workflowDef\n\tif errs = node.Decode(&wf); errs != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to decode workflow: %w\", errs)\n\t}\n\n\tattachUsageComments(&node, &wf)\n\n\t// we use a collection to help with deduplication before raising to higher level processing\n\tpkgs := pkg.NewCollection()\n\n\tfor _, job := range wf.Jobs {\n\t\tif job.Uses != \"\" {\n\t\t\tp, err := newPackageFromUsageStatement(job.Uses, job.UsesComment, reader.Location)\n\t\t\tif err != nil {\n\t\t\t\terrs = unknown.Append(errs, reader, err)\n\t\t\t}\n\t\t\tif p != nil {\n\t\t\t\tpkgs.Add(*p)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pkgs.Sorted(), nil, errs\n}\n\nfunc parseWorkflowForActionUsage(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t// parse the yaml file into a generic node to preserve comments\n\tvar node yaml.Node\n\tvar errs error\n\tif errs = yaml.NewDecoder(reader).Decode(&node); errs != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse yaml workflow file: %w\", errs)\n\t}\n\n\t// unmarshal the node into a workflowDef struct\n\tvar wf workflowDef\n\tif errs = node.Decode(&wf); errs != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to decode workflow: %w\", errs)\n\t}\n\n\tattachUsageComments(&node, &wf)\n\n\t// we use a collection to help with deduplication before raising to higher level processing\n\tpkgs := pkg.NewCollection()\n\n\tfor _, job := range wf.Jobs {\n\t\tfor _, step := range job.Steps {\n\t\t\tif step.Uses == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tp, err := newPackageFromUsageStatement(step.Uses, step.UsesComment, reader.Location)\n\t\t\tif err != nil {\n\t\t\t\terrs = unknown.Append(errs, reader, err)\n\t\t\t}\n\t\t\tif p != nil {\n\t\t\t\tpkgs.Add(*p)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pkgs.Sorted(), nil, errs\n}\n\n// attachUsageComments traverses the yaml node tree and attaches usage comments to the workflowDef job strcuts and step structs.\n// This is a best-effort approach to attach comments to the correct job or step.\nfunc attachUsageComments(node *yaml.Node, wf *workflowDef) {\n\t// for a document node, process its content (usually a single mapping node)\n\tif node.Kind == yaml.DocumentNode && len(node.Content) > 0 {\n\t\tprocessNode(node.Content[0], wf, nil, nil, nil)\n\t} else {\n\t\tprocessNode(node, wf, nil, nil, nil)\n\t}\n}\n\nfunc processNode(node *yaml.Node, wf *workflowDef, currentJob *string, currentStep *int, inJobsSection *bool) {\n\tswitch node.Kind {\n\tcase yaml.MappingNode:\n\t\tfor i := 0; i < len(node.Content); i += 2 {\n\t\t\tkey := node.Content[i]\n\t\t\tvalue := node.Content[i+1]\n\n\t\t\t// track if we're in the jobs section...\n\t\t\tif key.Value == \"jobs\" && inJobsSection == nil {\n\t\t\t\tinJobs := true\n\t\t\t\tinJobsSection = &inJobs\n\t\t\t\tprocessNode(value, wf, nil, nil, inJobsSection)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// if we're in jobs section, and this is a job key...\n\t\t\tif inJobsSection != nil && *inJobsSection && currentJob == nil {\n\t\t\t\tjob := key.Value\n\t\t\t\tcurrentJob = &job\n\t\t\t\tprocessNode(value, wf, currentJob, nil, inJobsSection)\n\t\t\t\tcurrentJob = nil\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// if this is a \"uses\" key...\n\t\t\tif key.Value == \"uses\" {\n\t\t\t\tprocessUsesNode(value, wf, currentJob, currentStep)\n\t\t\t}\n\n\t\t\t// if this is a \"steps\" key inside a job...\n\t\t\tif key.Value == \"steps\" && currentJob != nil {\n\t\t\t\tfor j, stepNode := range value.Content {\n\t\t\t\t\tstepIndex := j\n\t\t\t\t\tprocessNode(stepNode, wf, currentJob, &stepIndex, inJobsSection)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tprocessNode(key, wf, currentJob, currentStep, inJobsSection)\n\t\t\tprocessNode(value, wf, currentJob, currentStep, inJobsSection)\n\t\t}\n\n\tcase yaml.SequenceNode:\n\t\tfor i, item := range node.Content {\n\t\t\tidx := i\n\t\t\tprocessNode(item, wf, currentJob, &idx, inJobsSection)\n\t\t}\n\t}\n}\n\nfunc processUsesNode(node *yaml.Node, wf *workflowDef, currentJob *string, currentStep *int) {\n\tif node.Kind != yaml.ScalarNode {\n\t\treturn\n\t}\n\n\tcomment := node.LineComment\n\tif comment == \"\" {\n\t\tcomment = node.HeadComment\n\t}\n\tif comment == \"\" {\n\t\tcomment = node.FootComment\n\t}\n\n\tif comment != \"\" {\n\t\tversionRegex := regexp.MustCompile(`v?\\d+(\\.\\d+)*`)\n\t\tversionMatch := versionRegex.FindString(comment)\n\n\t\tif versionMatch != \"\" {\n\t\t\tif currentJob != nil && currentStep == nil {\n\t\t\t\t// this is a job level \"uses\"\n\t\t\t\tif job, ok := wf.Jobs[*currentJob]; ok {\n\t\t\t\t\tjob.UsesComment = versionMatch\n\t\t\t\t\twf.Jobs[*currentJob] = job\n\t\t\t\t}\n\t\t\t} else if currentJob != nil && currentStep != nil {\n\t\t\t\t// this is a step level \"uses\"\n\t\t\t\tif job, ok := wf.Jobs[*currentJob]; ok {\n\t\t\t\t\tif *currentStep < len(job.Steps) {\n\t\t\t\t\t\tjob.Steps[*currentStep].UsesComment = versionMatch\n\t\t\t\t\t\twf.Jobs[*currentJob] = job\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/parse_workflow_test.go",
    "content": "package githubactions\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parseWorkflowForActionUsage(t *testing.T) {\n\tfixture := \"testdata/workflow-multi-job.yaml\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"./.github/actions/bootstrap\",\n\t\t\tVersion:   \"\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"\", // don't have enough context without parsing the git origin, which still may not be accurate\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"./.github/actions/bootstrap\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/cache\",\n\t\t\tVersion:   \"v3\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/cache@v3\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/cache@v3\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/cache/restore\",\n\t\t\tVersion:   \"v3\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/cache@v3#restore\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/cache/restore@v3\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/cache/save\",\n\t\t\tVersion:   \"v3\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/cache@v3#save\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/cache/save@v3\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/checkout\",\n\t\t\tVersion:   \"v4\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/checkout@v4\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"actions/checkout@v4\"},\n\t\t},\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\tpkgtest.TestFileParser(t, fixture, parseWorkflowForActionUsage, expected, expectedRelationships)\n}\n\nfunc Test_parseWorkflowForWorkflowUsage(t *testing.T) {\n\tfixture := \"testdata/call-shared-workflow.yaml\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"octo-org/this-repo/.github/workflows/workflow-1.yml\",\n\t\t\tVersion:   \"172239021f7ba04fe7327647b213799853a9eb89\",\n\t\t\tType:      pkg.GithubActionWorkflowPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/octo-org/this-repo@172239021f7ba04fe7327647b213799853a9eb89#.github/workflows/workflow-1.yml\",\n\t\t\tMetadata: pkg.GitHubActionsUseStatement{\n\t\t\t\tValue: \"octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"./.github/workflows/workflow-2.yml\",\n\t\t\tVersion:   \"\",\n\t\t\tType:      pkg.GithubActionWorkflowPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"\", // don't have enough context without parsing the git origin, which still may not be accurate\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"./.github/workflows/workflow-2.yml\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"octo-org/another-repo/.github/workflows/workflow.yml\",\n\t\t\tVersion:   \"v1\",\n\t\t\tType:      pkg.GithubActionWorkflowPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/octo-org/another-repo@v1#.github/workflows/workflow.yml\",\n\t\t\tMetadata:  pkg.GitHubActionsUseStatement{Value: \"octo-org/another-repo/.github/workflows/workflow.yml@v1\"},\n\t\t},\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\tpkgtest.TestFileParser(t, fixture, parseWorkflowForWorkflowUsage, expected, expectedRelationships)\n}\n\nfunc Test_parseWorkflowForVersionComments(t *testing.T) {\n\tfixture := \"testdata/workflow-with-version-comments.yaml\"\n\tfixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"./.github/actions/bootstrap\",\n\t\t\tVersion:   \"\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"\", // don't have enough context without parsing the git origin, which still may not be accurate\n\t\t\tMetadata: pkg.GitHubActionsUseStatement{\n\t\t\t\tValue: \"./.github/actions/bootstrap\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"actions/checkout\",\n\t\t\tVersion:   \"v4.2.2\",\n\t\t\tType:      pkg.GithubActionPkg,\n\t\t\tLocations: fixtureLocationSet,\n\t\t\tPURL:      \"pkg:github/actions/checkout@v4.2.2\",\n\t\t\tMetadata: pkg.GitHubActionsUseStatement{\n\t\t\t\tValue:   \"actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683\",\n\t\t\t\tComment: \"v4.2.2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\tpkgtest.TestFileParser(t, fixture, parseWorkflowForActionUsage, expected, expectedRelationships)\n}\n\nfunc Test_corruptActionWorkflow(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/workflow-multi-job.yaml\").\n\t\tWithError().\n\t\tTestParser(t, parseWorkflowForActionUsage)\n}\n\nfunc Test_corruptWorkflowWorkflow(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/workflow-multi-job.yaml\").\n\t\tWithError().\n\t\tTestParser(t, parseWorkflowForWorkflowUsage)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/call-shared-workflow.yaml",
    "content": "jobs:\n\n  call-workflow-1-in-local-repo:\n    uses: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89\n\n  call-workflow-2-in-local-repo:\n    uses: ./.github/workflows/workflow-2.yml\n\n  call-workflow-in-another-repo:\n    uses: octo-org/another-repo/.github/workflows/workflow.yml@v1\n\n\n  unit-test:\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        run: make unit\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/composite-action.yaml",
    "content": "name: \"Bootstrap\"\ndescription: \"Bootstrap all tools and dependencies\"\ninputs:\n  go-version:\n    description: \"Go version to install\"\n    required: true\n    default: \"1.21.x\"\n  use-go-cache:\n    description: \"Restore go cache\"\n    required: true\n    default: \"true\"\n  cache-key-prefix:\n    description: \"Prefix all cache keys with this value\"\n    required: true\n    default: \"831180ac25\"\n  build-cache-key-prefix:\n    description: \"Prefix build cache key with this value\"\n    required: true\n    default: \"f8b6d31dea\"\n  bootstrap-apt-packages:\n    description: \"Space delimited list of tools to install via apt\"\n    default: \"libxml2-utils\"\n\nruns:\n  using: \"composite\"\n  steps:\n    - uses: actions/setup-go@v4\n      with:\n        go-version: ${{ inputs.go-version }}\n\n    - name: Restore tool cache\n      id: tool-cache\n      uses: actions/cache@v3\n      with:\n        path: ${{ github.workspace }}/.tmp\n        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('Makefile') }}\n\n    # note: we need to keep restoring the go mod cache before bootstrapping tools since `go install` is used in\n    # some installations of project tools.\n    - name: Restore go module cache\n      id: go-mod-cache\n      if: inputs.use-go-cache == 'true'\n      uses: actions/cache@v3\n      with:\n        path: |\n          ~/go/pkg/mod\n        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}\n        restore-keys: |\n          ${{ inputs.cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-\n\n    - name: (cache-miss) Bootstrap project tools\n      shell: bash\n      if: steps.tool-cache.outputs.cache-hit != 'true'\n      run: make bootstrap-tools\n\n    - name: Restore go build cache\n      id: go-cache\n      if: inputs.use-go-cache == 'true'\n      uses: actions/cache@v3\n      with:\n        path: |\n          ~/.cache/go-build\n        key: ${{ inputs.cache-key-prefix }}-${{ inputs.build-cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}\n        restore-keys: |\n          ${{ inputs.cache-key-prefix }}-${{ inputs.build-cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-\n\n    - name: (cache-miss) Bootstrap go dependencies\n      shell: bash\n      if: steps.go-mod-cache.outputs.cache-hit != 'true' && inputs.use-go-cache == 'true'\n      run: make bootstrap-go\n\n    - name: Install apt packages\n      if: inputs.bootstrap-apt-packages != ''\n      shell: bash\n      run: |\n        DEBIAN_FRONTEND=noninteractive sudo apt update && sudo -E apt install -y ${{ inputs.bootstrap-apt-packages }}\n\n    - name: Create all cache fingerprints\n      shell: bash\n      run: make fingerprints\n\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/corrupt/composite-action.yaml",
    "content": "name: \"Bootstrap\"\ndescription: \"Bootstrap all tools and dependencies\"\nints:\n  go-version:\n    descrapt-packages:\n    description: \"Space delimited list of tools to install via apt\"\n    default: \"libxml2-utils\"\n\nrns:\n  us all cache fingerprints\n      shell: bash\n      run: make fingerprints\n\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/corrupt/workflow-multi-job.yaml",
    "content": "name: \"Validations\"\n\non:\n  workflow_dispatch:\n  pull_request:\n  push:\n    branches:\n      - main\n\njbs\n\n  Statnapshot\n          key: snapshot-build-${{ github.run_id }}\n\n      - name: Run CLI Tests (Linux)\n        run: make cli\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/glob/.github/actions/bootstrap/action.yaml",
    "content": "# fake"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/glob/.github/actions/unbootstrap/action.yml",
    "content": "# fake"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/glob/.github/workflows/release.yml",
    "content": "# fake"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/glob/.github/workflows/validations.yaml",
    "content": "# fake"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/workflow-multi-job.yaml",
    "content": "name: \"Validations\"\n\non:\n  workflow_dispatch:\n  pull_request:\n  push:\n    branches:\n      - main\n\njobs:\n\n  Static-Analysis:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Static analysis\"\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Run static analysis\n        run: make static-analysis\n\n\n  Unit-Test:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Unit tests\"\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Restore Java test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: syft/pkg/cataloger/java/test-fixtures/java-builds/packages\n          key: ${{ runner.os }}-unit-java-cache-${{ hashFiles( 'syft/pkg/cataloger/java/test-fixtures/java-builds/cache.fingerprint' ) }}\n\n      - name: Restore RPM test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: syft/pkg/cataloger/redhat/test-fixtures/rpms\n          key: ${{ runner.os }}-unit-rpm-cache-${{ hashFiles( 'syft/pkg/cataloger/redhat/test-fixtures/rpms.fingerprint' ) }}\n\n      - name: Restore go binary test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: syft/pkg/cataloger/golang/test-fixtures/archs/binaries\n          key: ${{ runner.os }}-unit-go-binaries-cache-${{ hashFiles( 'syft/pkg/cataloger/golang/test-fixtures/archs/binaries.fingerprint' ) }}\n\n      - name: Restore binary cataloger test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: syft/pkg/cataloger/binary/test-fixtures/classifiers/dynamic\n          key: ${{ runner.os }}-unit-binary-cataloger-cache-${{ hashFiles( 'syft/pkg/cataloger/binary/test-fixtures/cache.fingerprint' ) }}\n\n      - name: Restore Kernel test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: syft/pkg/cataloger/kernel/test-fixtures/cache\n          key: ${{ runner.os }}-unit-kernel-cache-${{ hashFiles( 'syft/pkg/cataloger/kernel/test-fixtures/cache.fingerprint' ) }}\n\n      - name: Run unit tests\n        run: make unit\n\n\n  Integration-Test:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Integration tests\"\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Validate syft output against the CycloneDX schema\n        run: make validate-cyclonedx-schema\n\n      - name: Restore integration test cache\n        uses: actions/cache@v3\n        with:\n          path: ${{ github.workspace }}/test/integration/test-fixtures/cache\n          key: ${{ runner.os }}-integration-test-cache-${{ hashFiles('test/integration/test-fixtures/cache.fingerprint') }}\n\n      - name: Run integration tests\n        run: make integration\n\n\n  Build-Snapshot-Artifacts:\n    name: \"Build snapshot artifacts\"\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n        with:\n          # why have another build cache key? We don't want unit/integration/etc test build caches to replace\n          # the snapshot build cache, which includes builds for all OSs and architectures. As long as this key is\n          # unique from the build-cache-key-prefix in other CI jobs, we should be fine.\n          #\n          # note: ideally this value should match what is used in release (just to help with build times).\n          build-cache-key-prefix: \"snapshot\"\n          bootstrap-apt-packages: \"\"\n\n      - name: Build snapshot artifacts\n        run: make snapshot\n\n      # why not use actions/upload-artifact? It is very slow (3 minutes to upload ~600MB of data, vs 10 seconds with this approach).\n      # see https://github.com/actions/upload-artifact/issues/199 for more info\n      - name: Upload snapshot artifacts\n        uses: actions/cache/save@v3\n        with:\n          path: snapshot\n          key: snapshot-build-${{ github.run_id }}\n\n\n  Acceptance-Linux:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Acceptance tests (Linux)\"\n    needs: [Build-Snapshot-Artifacts]\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Download snapshot build\n        uses: actions/cache/restore@v3\n        with:\n          path: snapshot\n          key: snapshot-build-${{ github.run_id }}\n\n      - name: Run comparison tests (Linux)\n        run: make compare-linux\n\n      - name: Restore install.sh test image cache\n        id: install-test-image-cache\n        uses: actions/cache@v3\n        with:\n          path: ${{ github.workspace }}/test/install/cache\n          key: ${{ runner.os }}-install-test-image-cache-${{ hashFiles('test/install/cache.fingerprint') }}\n\n      - name: Load test image cache\n        if: steps.install-test-image-cache.outputs.cache-hit == 'true'\n        run: make install-test-cache-load\n\n      - name: Run install.sh tests (Linux)\n        run: make install-test\n\n      - name: (cache-miss) Create test image cache\n        if: steps.install-test-image-cache.outputs.cache-hit != 'true'\n        run: make install-test-cache-save\n\n\n  Acceptance-Mac:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"Acceptance tests (Mac)\"\n    needs: [Build-Snapshot-Artifacts]\n    runs-on: macos-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Download snapshot build\n        uses: actions/cache/restore@v3\n        with:\n          path: snapshot\n          key: snapshot-build-${{ github.run_id }}\n\n      - name: Restore docker image cache for compare testing\n        id: mac-compare-testing-cache\n        uses: actions/cache@v3\n        with:\n          path: image.tar\n          key: ${{ runner.os }}-${{ hashFiles('test/compare/mac.sh') }}\n\n      - name: Run comparison tests (Mac)\n        run: make compare-mac\n\n      - name: Run install.sh tests (Mac)\n        run: make install-test-ci-mac\n\n\n  Cli-Linux:\n    # Note: changing this job name requires making the same update in the .github/workflows/release.yaml pipeline\n    name: \"CLI tests (Linux)\"\n    needs: [Build-Snapshot-Artifacts]\n    runs-on: ubuntu-20.04\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Restore CLI test-fixture cache\n        uses: actions/cache@v3\n        with:\n          path: ${{ github.workspace }}/test/cli/test-fixtures/cache\n          key: ${{ runner.os }}-cli-test-cache-${{ hashFiles('test/cli/test-fixtures/cache.fingerprint') }}\n\n      - name: Download snapshot build\n        uses: actions/cache/restore@v3\n        with:\n          path: snapshot\n          key: snapshot-build-${{ github.run_id }}\n\n      - name: Run CLI Tests (Linux)\n        run: make cli\n"
  },
  {
    "path": "syft/pkg/cataloger/githubactions/testdata/workflow-with-version-comments.yaml",
    "content": "name: \"Validations\"\n\non:\n  workflow_dispatch:\n  pull_request:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: read\n\njobs:\n\n  call-workflow-1-in-local-repo:\n    uses: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89  #v1.0.0\n\n  Static-Analysis:\n    name: \"Static analysis\"\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2\n\n      - name: Bootstrap environment\n        uses: ./.github/actions/bootstrap\n\n      - name: Run static analysis\n        run: make static-analysis\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/billy_adapter.go",
    "content": "package golang\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\n\t\"github.com/go-git/go-billy/v5\"\n)\n\n// billyFSAdapter is a fs.FS, fs.ReadDirFS, and fs.StatFS wrapping what billyfs returns\ntype billyFSAdapter struct {\n\tfs billy.Filesystem\n}\n\nfunc (b billyFSAdapter) Stat(name string) (fs.FileInfo, error) {\n\treturn b.fs.Stat(name)\n}\n\nfunc (b billyFSAdapter) ReadDir(name string) (out []fs.DirEntry, _ error) {\n\tentries, err := b.fs.ReadDir(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, e := range entries {\n\t\tout = append(out, billyDirEntry{fi: e})\n\t}\n\treturn\n}\n\nfunc (b billyFSAdapter) Open(name string) (fs.File, error) {\n\tf, err := b.fs.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfi, err := b.Stat(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn billyFile{f: f, fi: fi}, nil\n}\n\nvar _ fs.FS = (*billyFSAdapter)(nil)\nvar _ fs.ReadDirFS = (*billyFSAdapter)(nil)\nvar _ fs.StatFS = (*billyFSAdapter)(nil)\n\n// billyFile is a fs.File wrapping what billyfs returns\ntype billyFile struct {\n\tf  billy.File\n\tfi fs.FileInfo\n}\n\nfunc (b billyFile) Stat() (fs.FileInfo, error) {\n\treturn b.fi, nil\n}\n\nfunc (b billyFile) Read(i []byte) (int, error) {\n\treturn b.f.Read(i)\n}\n\nfunc (b billyFile) Close() error {\n\treturn b.f.Close()\n}\n\nvar _ fs.File = (*billyFile)(nil)\n\n// billyDirEntry is a fs.DirEntry wrapping what billyfs returns\ntype billyDirEntry struct {\n\tfi os.FileInfo\n}\n\nfunc (b billyDirEntry) Name() string {\n\treturn b.fi.Name()\n}\n\nfunc (b billyDirEntry) IsDir() bool {\n\treturn b.fi.IsDir()\n}\n\nfunc (b billyDirEntry) Type() fs.FileMode {\n\treturn b.fi.Mode()\n}\n\nfunc (b billyDirEntry) Info() (fs.FileInfo, error) {\n\treturn b.fi, nil\n}\n\nvar _ fs.DirEntry = (*billyDirEntry)(nil)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/billy_adapter_test.go",
    "content": "package golang\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_billyFSAdapter(t *testing.T) {\n\tr, err := git.PlainInit(\"testdata/repo\", false)\n\n\tt.Cleanup(func() {\n\t\t_ = os.RemoveAll(\"testdata/repo/.git\")\n\t})\n\n\twt, err := r.Worktree()\n\trequire.NoError(t, err)\n\tf := billyFSAdapter{\n\t\tfs: wt.Filesystem,\n\t}\n\n\tfound := \"\"\n\terr = fs.WalkDir(f, \".\", func(path string, d fs.DirEntry, err error) error {\n\t\tfound = path\n\t\treturn nil\n\t})\n\trequire.NoError(t, err)\n\n\trequire.Equal(t, \"LICENSE\", found)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  golang.CatalogerConfig:\n    fields:\n      - key: SearchLocalModCacheLicenses\n        description: SearchLocalModCacheLicenses enables searching for go package licenses in the local GOPATH mod cache.\n        app_key: golang.search-local-mod-cache-licenses\n      - key: LocalModCacheDir\n        description: LocalModCacheDir specifies the location of the local go module cache directory. When not set, syft will attempt to discover the GOPATH env or default to $HOME/go.\n        app_key: golang.local-mod-cache-dir\n      - key: SearchLocalVendorLicenses\n        description: SearchLocalVendorLicenses enables searching for go package licenses in the local vendor directory relative to the go.mod file.\n        app_key: golang.search-local-vendor-licenses\n      - key: LocalVendorDir\n        description: LocalVendorDir specifies the location of the local vendor directory. When not set, syft will search for a vendor directory relative to the go.mod file.\n        app_key: golang.local-vendor-dir\n      - key: SearchRemoteLicenses\n        description: SearchRemoteLicenses enables downloading go package licenses from the upstream go proxy (typically proxy.golang.org).\n        app_key: golang.search-remote-licenses\n      - key: Proxies\n        description: Proxies is a list of go module proxies to use when fetching go module metadata and licenses. When not set, syft will use the GOPROXY env or default to https://proxy.golang.org,direct.\n        app_key: golang.proxy\n      - key: NoProxy\n        description: NoProxy is a list of glob patterns that match go module names that should not be fetched from the go proxy. When not set, syft will use the GOPRIVATE and GONOPROXY env vars.\n        app_key: golang.no-proxy\ncatalogers:\n  - ecosystem: go # MANUAL\n    name: go-module-binary-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/golang/cataloger.go\n      function: NewGoModuleBinaryCataloger\n    config: golang.CatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - binary\n      - directory\n      - go\n      - golang\n      - gomod\n      - image\n      - installed\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseGoBinary\n        detector: # AUTO-GENERATED\n          method: mimetype # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - application/x-executable\n            - application/x-mach-binary\n            - application/x-elf\n            - application/x-sharedlib\n            - application/vnd.microsoft.portable-executable\n            - application/x-executable\n        metadata_types: # AUTO-GENERATED\n          - pkg.GolangBinaryBuildinfoEntry\n        package_types: # AUTO-GENERATED\n          - go-module\n        json_schema_types: # AUTO-GENERATED\n          - GoModuleBuildinfoEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n            conditions:\n              - when:\n                  SearchLocalModCacheLicenses: true\n                value: true\n              - when:\n                  SearchRemoteLicenses: true\n                value: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: flat\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - GolangBinaryBuildinfoEntry.H1Digest\n  - ecosystem: go # MANUAL\n    name: go-module-file-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/golang/cataloger.go\n      function: NewGoModuleFileCataloger\n    config: golang.CatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - go\n      - golang\n      - gomod\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseGoModFile\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/go.mod'\n        metadata_types: # AUTO-GENERATED\n          - pkg.GolangModuleEntry\n          - pkg.GolangSourceEntry\n        package_types: # AUTO-GENERATED\n          - go-module\n        json_schema_types: # AUTO-GENERATED\n          - GoModuleEntry\n          - GoSourceEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n            conditions:\n              - when:\n                  SearchLocalModCacheLicenses: true\n                value: true\n              - when:\n                  SearchRemoteLicenses: true\n                value: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: flat\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - GolangModuleEntry.H1Digest\n              - GolangSourceEntry.H1Digest\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/cataloger.go",
    "content": "/*\nPackage golang provides a concrete Cataloger implementation relating to packages within the Go language ecosystem.\n*/\npackage golang\n\nimport (\n\t\"regexp\"\n\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar versionCandidateGroups = regexp.MustCompile(`(?P<version>\\d+(\\.\\d+)?(\\.\\d+)?)(?P<candidate>\\w*)`)\n\nconst (\n\tmodFileCatalogerName = \"go-module-file-cataloger\"\n\tbinaryCatalogerName  = \"go-module-binary-cataloger\"\n)\n\n// NewGoModuleFileCataloger returns a new cataloger object that searches within go.mod files.\nfunc NewGoModuleFileCataloger(opts CatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(modFileCatalogerName).\n\t\tWithParserByGlobs(newGoModCataloger(opts).parseGoModFile, \"**/go.mod\")\n}\n\n// NewGoModuleBinaryCataloger returns a new cataloger object that searches within binaries built by the go compiler.\nfunc NewGoModuleBinaryCataloger(opts CatalogerConfig) pkg.Cataloger {\n\treturn generic.NewCataloger(binaryCatalogerName).\n\t\tWithParserByMimeTypes(\n\t\t\tnewGoBinaryCataloger(opts).parseGoBinary,\n\t\t\tmimetype.ExecutableMIMETypeSet.List()...,\n\t\t).\n\t\tWithResolvingProcessors(stdlibProcessor)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/cataloger_test.go",
    "content": "package golang\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_PackageCataloger_Binary(t *testing.T) {\n\n\ttests := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\texpectedPkgs []string\n\t\texpectedRels []string\n\t}{\n\t\t{\n\t\t\tname:    \"simple module with dependencies\",\n\t\t\tfixture: \"image-small\",\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me)\",\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"upx compressed binary\",\n\t\t\tfixture: \"image-small-upx\",\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me)\",\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me) [dependency-of] anchore.io/not/real @ v1.0.0 (/run-me)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"partially built binary\",\n\t\t\t// the difference is the build flags used to build the binary... they will not reference the module directly\n\t\t\t// see the dockerfile for details\n\t\t\tfixture: \"image-not-a-module\",\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"command-line-arguments @  (/run-me)\", // this is the difference!\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me)\",\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"github.com/anchore/archiver/v3 @ v3.5.3-0.20241210171143-5b1d8d1c7c51 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/andybalholm/brotli @ v1.1.1 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/dsnet/compress @ v0.0.2-0.20210315054119-f66993602bf5 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/golang/snappy @ v0.0.4 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/klauspost/compress @ v1.17.11 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/klauspost/pgzip @ v1.2.6 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/nwaples/rardecode @ v1.1.3 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/pierrec/lz4/v4 @ v4.1.21 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/ulikunitz/xz @ v0.5.12 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"github.com/xi2/xz @ v0.0.0-20171230120015-48954b6210f8 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t\t\"stdlib @ go1.23.2 (/run-me) [dependency-of] command-line-arguments @  (/run-me)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, test.fixture).\n\t\t\t\tExpectsPackageStrings(test.expectedPkgs).\n\t\t\t\tExpectsRelationshipStrings(test.expectedRels).\n\t\t\t\tTestCataloger(t, NewGoModuleBinaryCataloger(DefaultCatalogerConfig()))\n\t\t})\n\t}\n\n}\n\nfunc Test_Mod_Cataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain go.mod files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/go.mod\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tIgnoreUnfulfilledPathResponses(\"src/go.sum\").\n\t\t\t\tTestCataloger(t, NewGoModuleFileCataloger(CatalogerConfig{}))\n\t\t})\n\t}\n}\n\nfunc Test_Binary_Cataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain binary files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"partial-binary\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewGoModuleBinaryCataloger(CatalogerConfig{}))\n\t\t})\n\t}\n}\n\nfunc Test_Binary_Cataloger_Stdlib_Cpe(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tcandidate string\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname:      \"generateStdlibCpe generates a cpe with a - for a major version\",\n\t\t\tcandidate: \"go1.21.0\",\n\t\t\twant:      \"cpe:2.3:a:golang:go:1.21.0:-:*:*:*:*:*:*\",\n\t\t},\n\t\t{\n\t\t\tname:      \"generateStdlibCpe generates a cpe with an rc candidate for a major rc version\",\n\t\t\tcandidate: \"go1.21rc2\",\n\t\t\twant:      \"cpe:2.3:a:golang:go:1.21:rc2:*:*:*:*:*:*\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tgot, err := generateStdlibCpe(tc.candidate)\n\t\t\tassert.NoError(t, err, \"expected no err; got %v\", err)\n\t\t\tassert.Equal(t, got.Attributes.String(), tc.want)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/config.go",
    "content": "package golang\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst (\n\tdefaultProxies  = \"https://proxy.golang.org,direct\"\n\tdirectProxyOnly = \"direct\"\n)\n\nvar (\n\tdirectProxiesOnly = []string{directProxyOnly}\n)\n\ntype CatalogerConfig struct {\n\t// SearchLocalModCacheLicenses enables searching for go package licenses in the local GOPATH mod cache.\n\t// app-config: golang.search-local-mod-cache-licenses\n\tSearchLocalModCacheLicenses bool `yaml:\"search-local-mod-cache-licenses\" json:\"search-local-mod-cache-licenses\" mapstructure:\"search-local-mod-cache-licenses\"`\n\n\t// LocalModCacheDir specifies the location of the local go module cache directory. When not set, syft will attempt to discover the GOPATH env or default to $HOME/go.\n\t// app-config: golang.local-mod-cache-dir\n\tLocalModCacheDir string `yaml:\"local-mod-cache-dir\" json:\"local-mod-cache-dir\" mapstructure:\"local-mod-cache-dir\"`\n\n\t// SearchLocalVendorLicenses enables searching for go package licenses in the local vendor directory relative to the go.mod file.\n\t// app-config: golang.search-local-vendor-licenses\n\tSearchLocalVendorLicenses bool `yaml:\"search-local-vendor-licenses\" json:\"search-local-vendor-licenses\" mapstructure:\"search-local-vendor-licenses\"`\n\n\t// LocalVendorDir specifies the location of the local vendor directory. When not set, syft will search for a vendor directory relative to the go.mod file.\n\t// app-config: golang.local-vendor-dir\n\tLocalVendorDir string `yaml:\"local-vendor-dir\" json:\"local-vendor-dir\" mapstructure:\"local-vendor-dir\"`\n\n\t// SearchRemoteLicenses enables downloading go package licenses from the upstream go proxy (typically proxy.golang.org).\n\t// app-config: golang.search-remote-licenses\n\tSearchRemoteLicenses bool `yaml:\"search-remote-licenses\" json:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\n\t// Proxies is a list of go module proxies to use when fetching go module metadata and licenses. When not set, syft will use the GOPROXY env or default to https://proxy.golang.org,direct.\n\t// app-config: golang.proxy\n\tProxies []string `yaml:\"proxies,omitempty\" json:\"proxies,omitempty\" mapstructure:\"proxies\"`\n\n\t// NoProxy is a list of glob patterns that match go module names that should not be fetched from the go proxy. When not set, syft will use the GOPRIVATE and GONOPROXY env vars.\n\t// app-config: golang.no-proxy\n\tNoProxy []string `yaml:\"no-proxy,omitempty\" json:\"no-proxy,omitempty\" mapstructure:\"no-proxy\"`\n\n\tMainModuleVersion MainModuleVersionConfig `yaml:\"main-module-version\" json:\"main-module-version\" mapstructure:\"main-module-version\"`\n\n\t// Whether to use the golang.org/x/tools/go/packages, which executes golang tooling found on the path in addition to potential network access\n\tUsePackagesLib bool `json:\"use-packages-lib\" yaml:\"use-packages-lib\" mapstructure:\"use-packages-lib\"`\n}\n\ntype MainModuleVersionConfig struct {\n\t// FromLDFlags enables parsing the main module version from the -ldflags build settings.\n\t// app-config: golang.main-module-version.from-ld-flags\n\tFromLDFlags bool `yaml:\"from-ld-flags\" json:\"from-ld-flags\" mapstructure:\"from-ld-flags\"`\n\n\t// FromContents enables parsing the main module version from the binary contents. This is useful when the version is embedded in the binary but not in the build settings.\n\t// app-config: golang.main-module-version.from-contents\n\tFromContents bool `yaml:\"from-contents\" json:\"from-contents\" mapstructure:\"from-contents\"`\n\n\t// FromBuildSettings enables parsing the main module version from the go build settings.\n\t// app-config: golang.main-module-version.from-build-settings\n\tFromBuildSettings bool `yaml:\"from-build-settings\" json:\"from-build-settings\" mapstructure:\"from-build-settings\"`\n}\n\n// DefaultCatalogerConfig create a CatalogerConfig with default options, which includes:\n// - setting the default remote proxy if none is provided\n// - setting the default no proxy if none is provided\n// - setting the default local module cache dir if none is provided\nfunc DefaultCatalogerConfig() CatalogerConfig {\n\tg := CatalogerConfig{\n\t\tUsePackagesLib:    true,\n\t\tMainModuleVersion: DefaultMainModuleVersionConfig(),\n\t\tLocalModCacheDir:  defaultGoModDir(),\n\t}\n\n\t// first process the proxy settings\n\tif len(g.Proxies) == 0 {\n\t\tgoProxy := os.Getenv(\"GOPROXY\")\n\t\tif goProxy == \"\" {\n\t\t\tgoProxy = defaultProxies\n\t\t}\n\t\tg = g.WithProxy(goProxy)\n\t}\n\n\t// next process the gonoproxy settings\n\tif len(g.NoProxy) == 0 {\n\t\tgoPrivate := os.Getenv(\"GOPRIVATE\")\n\t\tgoNoProxy := os.Getenv(\"GONOPROXY\")\n\t\t// we only use the env var if it was not set explicitly\n\t\tif goPrivate != \"\" {\n\t\t\tg.NoProxy = append(g.NoProxy, strings.Split(goPrivate, \",\")...)\n\t\t}\n\n\t\t// next process the goprivate settings; we always add those\n\t\tif goNoProxy != \"\" {\n\t\t\tg.NoProxy = append(g.NoProxy, strings.Split(goNoProxy, \",\")...)\n\t\t}\n\t}\n\n\treturn g\n}\n\n// defaultGoModDir returns $GOPATH/pkg/mod or $HOME/go/pkg/mod based on environment variables available\nfunc defaultGoModDir() string {\n\tgoPath := os.Getenv(\"GOPATH\")\n\n\tif goPath == \"\" {\n\t\thomeDir, err := homedir.Dir()\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to determine GOPATH or user home dir: %w\", err)\n\t\t\treturn \"\"\n\t\t}\n\t\tgoPath = filepath.Join(homeDir, \"go\")\n\t}\n\n\treturn filepath.Join(goPath, \"pkg\", \"mod\")\n}\n\nfunc DefaultMainModuleVersionConfig() MainModuleVersionConfig {\n\treturn MainModuleVersionConfig{\n\t\tFromLDFlags:       true,\n\t\tFromContents:      false,\n\t\tFromBuildSettings: true,\n\t}\n}\n\nfunc (g CatalogerConfig) WithSearchLocalModCacheLicenses(input bool) CatalogerConfig {\n\tg.SearchLocalModCacheLicenses = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithLocalModCacheDir(input string) CatalogerConfig {\n\tif input == \"\" {\n\t\treturn g\n\t}\n\tg.LocalModCacheDir = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithSearchLocalVendorLicenses(input bool) CatalogerConfig {\n\tg.SearchLocalVendorLicenses = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithLocalVendorDir(input string) CatalogerConfig {\n\tif input == \"\" {\n\t\treturn g\n\t}\n\tg.LocalVendorDir = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithSearchRemoteLicenses(input bool) CatalogerConfig {\n\tg.SearchRemoteLicenses = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithProxy(input string) CatalogerConfig {\n\tif input == \"\" {\n\t\treturn g\n\t}\n\tif input == \"off\" {\n\t\tinput = directProxyOnly\n\t}\n\tg.Proxies = strings.Split(input, \",\")\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithNoProxy(input string) CatalogerConfig {\n\tif input == \"\" {\n\t\treturn g\n\t}\n\tg.NoProxy = strings.Split(input, \",\")\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithMainModuleVersion(input MainModuleVersionConfig) CatalogerConfig {\n\tg.MainModuleVersion = input\n\treturn g\n}\n\nfunc (g CatalogerConfig) WithUsePackagesLib(useLib bool) CatalogerConfig {\n\tg.UsePackagesLib = useLib\n\treturn g\n}\n\nfunc (g MainModuleVersionConfig) WithFromLDFlags(input bool) MainModuleVersionConfig {\n\tg.FromLDFlags = input\n\treturn g\n}\n\nfunc (g MainModuleVersionConfig) WithFromContents(input bool) MainModuleVersionConfig {\n\tg.FromContents = input\n\treturn g\n}\n\nfunc (g MainModuleVersionConfig) WithFromBuildSettings(input bool) MainModuleVersionConfig {\n\tg.FromBuildSettings = input\n\treturn g\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/config_test.go",
    "content": "package golang\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/go-homedir\"\n)\n\nfunc Test_Config(t *testing.T) {\n\ttype opts struct {\n\t\tlocal     bool\n\t\tcacheDir  string\n\t\tvendorDir string\n\t\tremote    bool\n\t\tproxy     string\n\t\tnoProxy   string\n\t}\n\n\trestoreCache(t)\n\thomedir.SetCacheEnable(false)\n\n\tallEnv := map[string]string{\n\t\t\"HOME\":      \"/usr/home\",\n\t\t\"GOPATH\":    \"\",\n\t\t\"GOPROXY\":   \"\",\n\t\t\"GOPRIVATE\": \"\",\n\t\t\"GONOPROXY\": \"\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tenv      map[string]string\n\t\topts     opts\n\t\texpected CatalogerConfig\n\t}{\n\t\t{\n\t\t\tname: \"set via env defaults\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"GOPATH\":    \"/go\",\n\t\t\t\t\"GOPROXY\":   \"https://my.proxy\",\n\t\t\t\t\"GOPRIVATE\": \"my.private\",\n\t\t\t\t\"GONOPROXY\": \"no.proxy\",\n\t\t\t},\n\t\t\topts: opts{\n\t\t\t\t// defaults to $cwd/vendor, we need to set it to make the output predictable\n\t\t\t\tvendorDir: \"/vendor\",\n\t\t\t},\n\t\t\texpected: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: false,\n\t\t\t\tLocalModCacheDir:            filepath.Join(\"/go\", \"pkg\", \"mod\"),\n\t\t\t\tSearchLocalVendorLicenses:   false,\n\t\t\t\tLocalVendorDir:              \"/vendor\",\n\t\t\t\tSearchRemoteLicenses:        false,\n\t\t\t\tProxies:                     []string{\"https://my.proxy\"},\n\t\t\t\tNoProxy:                     []string{\"my.private\", \"no.proxy\"},\n\t\t\t\tMainModuleVersion:           DefaultMainModuleVersionConfig(),\n\t\t\t\tUsePackagesLib:              true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"set via configuration\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"GOPATH\":    \"/go\",\n\t\t\t\t\"GOPROXY\":   \"https://my.proxy\",\n\t\t\t\t\"GOPRIVATE\": \"my.private\",\n\t\t\t\t\"GONOPROXY\": \"no.proxy\",\n\t\t\t},\n\t\t\topts: opts{\n\t\t\t\tlocal:     true,\n\t\t\t\tcacheDir:  \"/go-cache\",\n\t\t\t\tvendorDir: \"/vendor\",\n\t\t\t\tremote:    true,\n\t\t\t\tproxy:     \"https://alt.proxy,direct\",\n\t\t\t\tnoProxy:   \"alt.no.proxy\",\n\t\t\t},\n\t\t\texpected: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            \"/go-cache\",\n\t\t\t\tSearchLocalVendorLicenses:   true,\n\t\t\t\tLocalVendorDir:              \"/vendor\",\n\t\t\t\tSearchRemoteLicenses:        true,\n\t\t\t\tProxies:                     []string{\"https://alt.proxy\", \"direct\"},\n\t\t\t\tNoProxy:                     []string{\"alt.no.proxy\"},\n\t\t\t\tMainModuleVersion:           DefaultMainModuleVersionConfig(),\n\t\t\t\tUsePackagesLib:              true,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfor k, v := range allEnv {\n\t\t\t\tt.Setenv(k, v)\n\t\t\t}\n\t\t\tfor k, v := range test.env {\n\t\t\t\tt.Setenv(k, v)\n\t\t\t}\n\t\t\tgot := DefaultCatalogerConfig().\n\t\t\t\tWithSearchLocalModCacheLicenses(test.opts.local).\n\t\t\t\tWithLocalModCacheDir(test.opts.cacheDir).\n\t\t\t\tWithSearchLocalVendorLicenses(test.opts.local).\n\t\t\t\tWithLocalVendorDir(test.opts.vendorDir).\n\t\t\t\tWithSearchRemoteLicenses(test.opts.remote).\n\t\t\t\tWithProxy(test.opts.proxy).\n\t\t\t\tWithNoProxy(test.opts.noProxy)\n\n\t\t\tassert.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\n// restoreCache ensures cache settings are restored after test\nfunc restoreCache(t testing.TB) {\n\tt.Helper()\n\torigEnabled := homedir.CacheEnabled()\n\n\tt.Cleanup(func() {\n\t\thomedir.SetCacheEnable(origEnabled)\n\t\thomedir.Reset()\n\t})\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/README.md",
    "content": "xcoff\n-----\n\nThe code in this package comes from: https://github.com/golang/go/tree/master/src/internal/xcoff -- it was copied over to add support for [xcoff](https://en.wikipedia.org/wiki/XCOFF) binaries. Golang keeps this package as internal, forbidding its external use.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/README.md",
    "content": "# gotestdata\n\nThis directory contains test fixtures that require Go tooling to process them.\n\n## Why `internal/`?\n\nThis directory is inside `internal/` to prevent external packages from importing anything\nfrom here. Go's import restrictions on `internal/` directories ensure these fixtures are\nonly accessible to tests within this package.\n\n## Why not use `testdata`?\n\nGo's build system and module tooling **explicitly ignores directories named `testdata`**. This is documented behavior - when running commands like `go list`, `go mod`, or using `golang.org/x/tools/go/packages`, Go skips any directory named `testdata`.\n\nThis becomes a problem for tests that:\n- Use `packages.Load()` to resolve Go module dependencies\n- Need `go mod` commands to work on fixture `go.mod` files\n- Rely on any Go tooling that traverses the module graph\n\n## What goes here?\n\nPlace fixtures here that contain `go.mod` files and need Go's module resolution to work. For example:\n- `go-source/` - fixtures for testing Go source cataloging with dependency resolution\n- Any fixture that uses `WithUsePackagesLib(true)` in tests\n\n## What stays in `testdata`?\n\nFixtures that don't require Go tooling can remain in `testdata`:\n- Static file parsing tests (e.g., parsing `go.mod` without resolution)\n- Binary fixtures\n- Golden files and snapshots\n- Any test using `WithUsePackagesLib(false)`\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/cmd/bin1/main.go",
    "content": "package main\n\nimport (\n\t\"anchore.io/not/real/pk1\"\n\t\"anchore.io/not/real/pk2\"\n)\n\nfunc main() {\n\tpk1.Test()\n\tpk2.Test()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/cmd/bin2/main.go",
    "content": "package main\n\nimport (\n\t\"anchore.io/not/real/pk1\"\n\t\"anchore.io/not/real/pk3\"\n)\n\nfunc main() {\n\tpk1.Test()\n\tpk3.Zap()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/go.mod",
    "content": "module anchore.io/not/real\n\ngo 1.24.3\n\nrequire (\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/sirupsen/logrus v1.9.3\n\tgithub.com/spf13/viper v1.20.1\n\tgithub.com/stretchr/testify v1.10.0\n\tgo.uber.org/zap v1.27.0\n)\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/fsnotify/fsnotify v1.8.0 // indirect\n\tgithub.com/go-viper/mapstructure/v2 v2.2.1 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.2.3 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/sagikazarmark/locafero v0.7.0 // indirect\n\tgithub.com/sourcegraph/conc v0.3.0 // indirect\n\tgithub.com/spf13/afero v1.12.0 // indirect\n\tgithub.com/spf13/cast v1.7.1 // indirect\n\tgithub.com/spf13/pflag v1.0.6 // indirect\n\tgithub.com/subosito/gotenv v1.6.0 // indirect\n\tgo.uber.org/multierr v1.10.0 // indirect\n\tgolang.org/x/sys v0.33.0 // indirect\n\tgolang.org/x/text v0.21.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/go.sum",
    "content": "github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=\ngithub.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=\ngithub.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=\ngithub.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=\ngithub.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=\ngithub.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=\ngithub.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=\ngithub.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=\ngithub.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=\ngithub.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=\ngithub.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=\ngithub.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=\ngithub.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=\ngithub.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=\ngithub.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs=\ngithub.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4=\ngithub.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=\ngithub.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=\ngithub.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=\ngithub.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4=\ngithub.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=\ngithub.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=\ngithub.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=\ngithub.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=\ngo.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=\ngo.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=\ngolang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=\ngolang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=\ngolang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/pk1/pk1.go",
    "content": "package pk1\n\nimport (\n\t\"github.com/google/uuid\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc Test() {\n\treturn\n}\n\nfunc NewID() string {\n\tlog.WithFields(log.Fields{\n\t\t\"animal\": \"walrus\",\n\t}).Info(\"A walrus appears\")\n\treturn uuid.New().String()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/pk1/pk1_test.go",
    "content": "package pk1\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestNewID(t *testing.T) {\n\tid := NewID()\n\tassert.NotEmpty(t, id)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/pk2/pk2.go",
    "content": "package pk2\n\nfunc Test() {\n\treturn\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/gotestdata/go-source/pk3/pk3.go",
    "content": "package pk3\n\nimport (\n\t\"time\"\n\n\t\"github.com/spf13/viper\"\n\t\"go.uber.org/zap\"\n)\n\nfunc Zap() {\n\tsugar := zap.NewExample().Sugar()\n\tdefer sugar.Sync()\n\tsugar.Infow(\"failed to fetch URL\",\n\t\t\"url\", \"http://example.com\",\n\t\t\"attempt\", 3,\n\t\t\"backoff\", time.Second,\n\t)\n\tsugar.Infof(\"failed to fetch URL: %s\", \"http://example.com\")\n\tviper.SetDefault(\"ContentDir\", \"content\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/xcoff/file.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package xcoff implements access to XCOFF (Extended Common Object File Format) files.\n\n//nolint:all\npackage xcoff\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\n// SectionHeader holds information about an XCOFF section header.\ntype SectionHeader struct {\n\tName           string\n\tVirtualAddress uint64\n\tSize           uint64\n\tType           uint32\n\tRelptr         uint64\n\tNreloc         uint32\n}\n\ntype Section struct {\n\tSectionHeader\n\tRelocs []Reloc\n\tio.ReaderAt\n\tsr *io.SectionReader\n}\n\n// AuxiliaryCSect holds information about an XCOFF symbol in an AUX_CSECT entry.\ntype AuxiliaryCSect struct {\n\tLength              int64\n\tStorageMappingClass int\n\tSymbolType          int\n}\n\n// AuxiliaryFcn holds information about an XCOFF symbol in an AUX_FCN entry.\ntype AuxiliaryFcn struct {\n\tSize int64\n}\n\ntype Symbol struct {\n\tName          string\n\tValue         uint64\n\tSectionNumber int\n\tStorageClass  int\n\tAuxFcn        AuxiliaryFcn\n\tAuxCSect      AuxiliaryCSect\n}\n\ntype Reloc struct {\n\tVirtualAddress   uint64\n\tSymbol           *Symbol\n\tSigned           bool\n\tInstructionFixed bool\n\tLength           uint8\n\tType             uint8\n}\n\n// ImportedSymbol holds information about an imported XCOFF symbol.\ntype ImportedSymbol struct {\n\tName    string\n\tLibrary string\n}\n\n// FileHeader holds information about an XCOFF file header.\ntype FileHeader struct {\n\tTargetMachine uint16\n}\n\n// A File represents an open XCOFF file.\ntype File struct {\n\tFileHeader\n\tSections     []*Section\n\tSymbols      []*Symbol\n\tStringTable  []byte\n\tLibraryPaths []string\n\n\tcloser io.Closer\n}\n\n// Open opens the named file using os.Open and prepares it for use as an XCOFF binary.\nfunc Open(name string) (*File, error) {\n\tf, err := os.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tff, err := NewFile(f)\n\tif err != nil {\n\t\tf.Close()\n\t\treturn nil, err\n\t}\n\tff.closer = f\n\treturn ff, nil\n}\n\n// Close closes the File.\n// If the File was created using NewFile directly instead of Open,\n// Close has no effect.\nfunc (f *File) Close() error {\n\tvar err error\n\tif f.closer != nil {\n\t\terr = f.closer.Close()\n\t\tf.closer = nil\n\t}\n\treturn err\n}\n\n// Section returns the first section with the given name, or nil if no such\n// section exists.\n// Xcoff have section's name limited to 8 bytes. Some sections like .gosymtab\n// can be trunked but this method will still find them.\nfunc (f *File) Section(name string) *Section {\n\tfor _, s := range f.Sections {\n\t\tif s.Name == name || (len(name) > 8 && s.Name == name[:8]) {\n\t\t\treturn s\n\t\t}\n\t}\n\treturn nil\n}\n\n// SectionByType returns the first section in f with the\n// given type, or nil if there is no such section.\nfunc (f *File) SectionByType(typ uint32) *Section {\n\tfor _, s := range f.Sections {\n\t\tif s.Type == typ {\n\t\t\treturn s\n\t\t}\n\t}\n\treturn nil\n}\n\n// cstring converts ASCII byte sequence b to string.\n// It stops once it finds 0 or reaches end of b.\nfunc cstring(b []byte) string {\n\tvar i int\n\tfor i = 0; i < len(b) && b[i] != 0; i++ {\n\t}\n\treturn string(b[:i])\n}\n\n// getString extracts a string from an XCOFF string table.\nfunc getString(st []byte, offset uint32) (string, bool) {\n\tif offset < 4 || int(offset) >= len(st) {\n\t\treturn \"\", false\n\t}\n\treturn cstring(st[offset:]), true\n}\n\n// NewFile creates a new File for accessing an XCOFF binary in an underlying reader.\nfunc NewFile(r io.ReaderAt) (*File, error) {\n\tsr := io.NewSectionReader(r, 0, 1<<63-1)\n\t// Read XCOFF target machine\n\tvar magic uint16\n\tif err := binary.Read(sr, binary.BigEndian, &magic); err != nil {\n\t\treturn nil, err\n\t}\n\tif magic != U802TOCMAGIC && magic != U64_TOCMAGIC {\n\t\treturn nil, fmt.Errorf(\"unrecognised XCOFF magic: 0x%x\", magic)\n\t}\n\n\tf := new(File)\n\tf.TargetMachine = magic\n\n\t// Read XCOFF file header\n\tif _, err := sr.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tvar nscns uint16\n\tvar symptr uint64\n\tvar nsyms int32\n\tvar opthdr uint16\n\tvar hdrsz int\n\tswitch f.TargetMachine {\n\tcase U802TOCMAGIC:\n\t\tfhdr := new(FileHeader32)\n\t\tif err := binary.Read(sr, binary.BigEndian, fhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnscns = fhdr.Fnscns\n\t\tsymptr = uint64(fhdr.Fsymptr)\n\t\tnsyms = fhdr.Fnsyms\n\t\topthdr = fhdr.Fopthdr\n\t\thdrsz = FILHSZ_32\n\tcase U64_TOCMAGIC:\n\t\tfhdr := new(FileHeader64)\n\t\tif err := binary.Read(sr, binary.BigEndian, fhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tnscns = fhdr.Fnscns\n\t\tsymptr = fhdr.Fsymptr\n\t\tnsyms = fhdr.Fnsyms\n\t\topthdr = fhdr.Fopthdr\n\t\thdrsz = FILHSZ_64\n\t}\n\n\tif symptr == 0 || nsyms <= 0 {\n\t\treturn nil, fmt.Errorf(\"no symbol table\")\n\t}\n\n\t// Read string table (located right after symbol table).\n\toffset := symptr + uint64(nsyms)*SYMESZ\n\tif _, err := sr.Seek(int64(offset), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\t// The first 4 bytes contain the length (in bytes).\n\tvar l uint32\n\tif err := binary.Read(sr, binary.BigEndian, &l); err != nil {\n\t\treturn nil, err\n\t}\n\tif l > 4 {\n\t\tif _, err := sr.Seek(int64(offset), io.SeekStart); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tf.StringTable = make([]byte, l)\n\t\tif _, err := io.ReadFull(sr, f.StringTable); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Read section headers\n\tif _, err := sr.Seek(int64(hdrsz)+int64(opthdr), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tf.Sections = make([]*Section, nscns)\n\tfor i := 0; i < int(nscns); i++ {\n\t\tvar scnptr uint64\n\t\ts := new(Section)\n\t\tswitch f.TargetMachine {\n\t\tcase U802TOCMAGIC:\n\t\t\tshdr := new(SectionHeader32)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, shdr); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ts.Name = cstring(shdr.Sname[:])\n\t\t\ts.VirtualAddress = uint64(shdr.Svaddr)\n\t\t\ts.Size = uint64(shdr.Ssize)\n\t\t\tscnptr = uint64(shdr.Sscnptr)\n\t\t\ts.Type = shdr.Sflags\n\t\t\ts.Relptr = uint64(shdr.Srelptr)\n\t\t\ts.Nreloc = uint32(shdr.Snreloc)\n\t\tcase U64_TOCMAGIC:\n\t\t\tshdr := new(SectionHeader64)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, shdr); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ts.Name = cstring(shdr.Sname[:])\n\t\t\ts.VirtualAddress = shdr.Svaddr\n\t\t\ts.Size = shdr.Ssize\n\t\t\tscnptr = shdr.Sscnptr\n\t\t\ts.Type = shdr.Sflags\n\t\t\ts.Relptr = shdr.Srelptr\n\t\t\ts.Nreloc = shdr.Snreloc\n\t\t}\n\t\tr2 := r\n\t\tif scnptr == 0 { // .bss must have all 0s\n\t\t\tr2 = zeroReaderAt{}\n\t\t}\n\t\ts.sr = io.NewSectionReader(r2, int64(scnptr), int64(s.Size))\n\t\ts.ReaderAt = s.sr\n\t\tf.Sections[i] = s\n\t}\n\n\t// Symbol map needed by relocation\n\tvar idxToSym = make(map[int]*Symbol)\n\n\t// Read symbol table\n\tif _, err := sr.Seek(int64(symptr), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tf.Symbols = make([]*Symbol, 0)\n\tfor i := 0; i < int(nsyms); i++ {\n\t\tvar numaux int\n\t\tvar ok, needAuxFcn bool\n\t\tsym := new(Symbol)\n\t\tswitch f.TargetMachine {\n\t\tcase U802TOCMAGIC:\n\t\t\tse := new(SymEnt32)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, se); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tnumaux = int(se.Nnumaux)\n\t\t\tsym.SectionNumber = int(se.Nscnum)\n\t\t\tsym.StorageClass = int(se.Nsclass)\n\t\t\tsym.Value = uint64(se.Nvalue)\n\t\t\tneedAuxFcn = se.Ntype&SYM_TYPE_FUNC != 0 && numaux > 1\n\t\t\tzeroes := binary.BigEndian.Uint32(se.Nname[:4])\n\t\t\tif zeroes != 0 {\n\t\t\t\tsym.Name = cstring(se.Nname[:])\n\t\t\t} else {\n\t\t\t\toffset := binary.BigEndian.Uint32(se.Nname[4:])\n\t\t\t\tsym.Name, ok = getString(f.StringTable, offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tgoto skip\n\t\t\t\t}\n\t\t\t}\n\t\tcase U64_TOCMAGIC:\n\t\t\tse := new(SymEnt64)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, se); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tnumaux = int(se.Nnumaux)\n\t\t\tsym.SectionNumber = int(se.Nscnum)\n\t\t\tsym.StorageClass = int(se.Nsclass)\n\t\t\tsym.Value = se.Nvalue\n\t\t\tneedAuxFcn = se.Ntype&SYM_TYPE_FUNC != 0 && numaux > 1\n\t\t\tsym.Name, ok = getString(f.StringTable, se.Noffset)\n\t\t\tif !ok {\n\t\t\t\tgoto skip\n\t\t\t}\n\t\t}\n\t\tif sym.StorageClass != C_EXT && sym.StorageClass != C_WEAKEXT && sym.StorageClass != C_HIDEXT {\n\t\t\tgoto skip\n\t\t}\n\t\t// Must have at least one csect auxiliary entry.\n\t\tif numaux < 1 || i+numaux >= int(nsyms) {\n\t\t\tgoto skip\n\t\t}\n\n\t\tif sym.SectionNumber > int(nscns) {\n\t\t\tgoto skip\n\t\t}\n\t\tif sym.SectionNumber == 0 {\n\t\t\tsym.Value = 0\n\t\t} else {\n\t\t\tsym.Value -= f.Sections[sym.SectionNumber-1].VirtualAddress\n\t\t}\n\n\t\tidxToSym[i] = sym\n\n\t\t// If this symbol is a function, it must retrieve its size from\n\t\t// its AUX_FCN entry.\n\t\t// It can happen that a function symbol doesn't have any AUX_FCN.\n\t\t// In this case, needAuxFcn is false and their size will be set to 0.\n\t\tif needAuxFcn {\n\t\t\tswitch f.TargetMachine {\n\t\t\tcase U802TOCMAGIC:\n\t\t\t\taux := new(AuxFcn32)\n\t\t\t\tif err := binary.Read(sr, binary.BigEndian, aux); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsym.AuxFcn.Size = int64(aux.Xfsize)\n\t\t\tcase U64_TOCMAGIC:\n\t\t\t\taux := new(AuxFcn64)\n\t\t\t\tif err := binary.Read(sr, binary.BigEndian, aux); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsym.AuxFcn.Size = int64(aux.Xfsize)\n\t\t\t}\n\t\t}\n\n\t\t// Read csect auxiliary entry (by convention, it is the last).\n\t\tif !needAuxFcn {\n\t\t\tif _, err := sr.Seek(int64(numaux-1)*SYMESZ, io.SeekCurrent); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\ti += numaux\n\t\tnumaux = 0\n\t\tswitch f.TargetMachine {\n\t\tcase U802TOCMAGIC:\n\t\t\taux := new(AuxCSect32)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, aux); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tsym.AuxCSect.SymbolType = int(aux.Xsmtyp & 0x7)\n\t\t\tsym.AuxCSect.StorageMappingClass = int(aux.Xsmclas)\n\t\t\tsym.AuxCSect.Length = int64(aux.Xscnlen)\n\t\tcase U64_TOCMAGIC:\n\t\t\taux := new(AuxCSect64)\n\t\t\tif err := binary.Read(sr, binary.BigEndian, aux); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tsym.AuxCSect.SymbolType = int(aux.Xsmtyp & 0x7)\n\t\t\tsym.AuxCSect.StorageMappingClass = int(aux.Xsmclas)\n\t\t\tsym.AuxCSect.Length = int64(aux.Xscnlenhi)<<32 | int64(aux.Xscnlenlo)\n\t\t}\n\t\tf.Symbols = append(f.Symbols, sym)\n\tskip:\n\t\ti += numaux // Skip auxiliary entries\n\t\tif _, err := sr.Seek(int64(numaux)*SYMESZ, io.SeekCurrent); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Read relocations\n\t// Only for .data or .text section\n\tfor _, sect := range f.Sections {\n\t\tif sect.Type != STYP_TEXT && sect.Type != STYP_DATA {\n\t\t\tcontinue\n\t\t}\n\t\tsect.Relocs = make([]Reloc, sect.Nreloc)\n\t\tif sect.Relptr == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif _, err := sr.Seek(int64(sect.Relptr), io.SeekStart); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor i := uint32(0); i < sect.Nreloc; i++ {\n\t\t\tswitch f.TargetMachine {\n\t\t\tcase U802TOCMAGIC:\n\t\t\t\trel := new(Reloc32)\n\t\t\t\tif err := binary.Read(sr, binary.BigEndian, rel); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsect.Relocs[i].VirtualAddress = uint64(rel.Rvaddr)\n\t\t\t\tsect.Relocs[i].Symbol = idxToSym[int(rel.Rsymndx)]\n\t\t\t\tsect.Relocs[i].Type = rel.Rtype\n\t\t\t\tsect.Relocs[i].Length = rel.Rsize&0x3F + 1\n\n\t\t\t\tif rel.Rsize&0x80 != 0 {\n\t\t\t\t\tsect.Relocs[i].Signed = true\n\t\t\t\t}\n\t\t\t\tif rel.Rsize&0x40 != 0 {\n\t\t\t\t\tsect.Relocs[i].InstructionFixed = true\n\t\t\t\t}\n\n\t\t\tcase U64_TOCMAGIC:\n\t\t\t\trel := new(Reloc64)\n\t\t\t\tif err := binary.Read(sr, binary.BigEndian, rel); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tsect.Relocs[i].VirtualAddress = rel.Rvaddr\n\t\t\t\tsect.Relocs[i].Symbol = idxToSym[int(rel.Rsymndx)]\n\t\t\t\tsect.Relocs[i].Type = rel.Rtype\n\t\t\t\tsect.Relocs[i].Length = rel.Rsize&0x3F + 1\n\t\t\t\tif rel.Rsize&0x80 != 0 {\n\t\t\t\t\tsect.Relocs[i].Signed = true\n\t\t\t\t}\n\t\t\t\tif rel.Rsize&0x40 != 0 {\n\t\t\t\t\tsect.Relocs[i].InstructionFixed = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn f, nil\n}\n\n// zeroReaderAt is ReaderAt that reads 0s.\ntype zeroReaderAt struct{}\n\n// ReadAt writes len(p) 0s into p.\nfunc (w zeroReaderAt) ReadAt(p []byte, off int64) (n int, err error) {\n\tfor i := range p {\n\t\tp[i] = 0\n\t}\n\treturn len(p), nil\n}\n\n// Data reads and returns the contents of the XCOFF section s.\nfunc (s *Section) Data() ([]byte, error) {\n\tdat := make([]byte, s.sr.Size())\n\tn, err := s.sr.ReadAt(dat, 0)\n\tif n == len(dat) {\n\t\terr = nil\n\t}\n\treturn dat[:n], err\n}\n\n// CSect reads and returns the contents of a csect.\n// func (f *File) CSect(name string) []byte {\n// \tfor _, sym := range f.Symbols {\n// \t\tif sym.Name == name && sym.AuxCSect.SymbolType == XTY_SD {\n// \t\t\tif i := sym.SectionNumber - 1; 0 <= i && i < len(f.Sections) {\n// \t\t\t\ts := f.Sections[i]\n// \t\t\t\tif sym.Value+uint64(sym.AuxCSect.Length) <= s.Size {\n// \t\t\t\t\tdat := make([]byte, sym.AuxCSect.Length)\n// \t\t\t\t\t_, err := s.sr.ReadAt(dat, int64(sym.Value))\n// \t\t\t\t\tif err != nil {\n// \t\t\t\t\t\treturn nil\n// \t\t\t\t\t}\n// \t\t\t\t\treturn dat\n// \t\t\t\t}\n// \t\t\t}\n// \t\t\tbreak\n// \t\t}\n// \t}\n// \treturn nil\n// }\n\n// func (f *File) DWARF() (*dwarf.Data, error) {\n// \t// There are many other DWARF sections, but these\n// \t// are the ones the debug/dwarf package uses.\n// \t// Don't bother loading others.\n// \tvar subtypes = [...]uint32{SSUBTYP_DWABREV, SSUBTYP_DWINFO, SSUBTYP_DWLINE, SSUBTYP_DWRNGES, SSUBTYP_DWSTR}\n// \tvar dat [len(subtypes)][]byte\n// \tfor i, subtype := range subtypes {\n// \t\ts := f.SectionByType(STYP_DWARF | subtype)\n// \t\tif s != nil {\n// \t\t\tb, err := s.Data()\n// \t\t\tif err != nil && uint64(len(b)) < s.Size {\n// \t\t\t\treturn nil, err\n// \t\t\t}\n// \t\t\tdat[i] = b\n// \t\t}\n// \t}\n\n// \tabbrev, info, line, ranges, str := dat[0], dat[1], dat[2], dat[3], dat[4]\n// \treturn dwarf.New(abbrev, nil, nil, info, line, nil, ranges, str)\n// }\n\n// readImportIDs returns the import file IDs stored inside the .loader section.\n// Library name pattern is either path/base/member or base/member\nfunc (f *File) readImportIDs(s *Section) ([]string, error) {\n\t// Read loader header\n\tif _, err := s.sr.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tvar istlen uint32\n\tvar nimpid int32\n\tvar impoff uint64\n\tswitch f.TargetMachine {\n\tcase U802TOCMAGIC:\n\t\tlhdr := new(LoaderHeader32)\n\t\tif err := binary.Read(s.sr, binary.BigEndian, lhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tistlen = lhdr.Listlen\n\t\tnimpid = lhdr.Lnimpid\n\t\timpoff = uint64(lhdr.Limpoff)\n\tcase U64_TOCMAGIC:\n\t\tlhdr := new(LoaderHeader64)\n\t\tif err := binary.Read(s.sr, binary.BigEndian, lhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tistlen = lhdr.Listlen\n\t\tnimpid = lhdr.Lnimpid\n\t\timpoff = lhdr.Limpoff\n\t}\n\n\t// Read loader import file ID table\n\tif _, err := s.sr.Seek(int64(impoff), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\ttable := make([]byte, istlen)\n\tif _, err := io.ReadFull(s.sr, table); err != nil {\n\t\treturn nil, err\n\t}\n\n\toffset := 0\n\t// First import file ID is the default LIBPATH value\n\tlibpath := cstring(table[offset:])\n\tf.LibraryPaths = strings.Split(libpath, \":\")\n\toffset += len(libpath) + 3 // 3 null bytes\n\tall := make([]string, 0)\n\tfor i := 1; i < int(nimpid); i++ {\n\t\timpidpath := cstring(table[offset:])\n\t\toffset += len(impidpath) + 1\n\t\timpidbase := cstring(table[offset:])\n\t\toffset += len(impidbase) + 1\n\t\timpidmem := cstring(table[offset:])\n\t\toffset += len(impidmem) + 1\n\t\tvar path string\n\t\tif len(impidpath) > 0 {\n\t\t\tpath = impidpath + \"/\" + impidbase + \"/\" + impidmem\n\t\t} else {\n\t\t\tpath = impidbase + \"/\" + impidmem\n\t\t}\n\t\tall = append(all, path)\n\t}\n\n\treturn all, nil\n}\n\n// ImportedSymbols returns the names of all symbols\n// referred to by the binary f that are expected to be\n// satisfied by other libraries at dynamic load time.\n// It does not return weak symbols.\nfunc (f *File) ImportedSymbols() ([]ImportedSymbol, error) {\n\ts := f.SectionByType(STYP_LOADER)\n\tif s == nil {\n\t\treturn nil, nil\n\t}\n\t// Read loader header\n\tif _, err := s.sr.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tvar stlen uint32\n\tvar stoff uint64\n\tvar nsyms int32\n\tvar symoff uint64\n\tswitch f.TargetMachine {\n\tcase U802TOCMAGIC:\n\t\tlhdr := new(LoaderHeader32)\n\t\tif err := binary.Read(s.sr, binary.BigEndian, lhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tstlen = lhdr.Lstlen\n\t\tstoff = uint64(lhdr.Lstoff)\n\t\tnsyms = lhdr.Lnsyms\n\t\tsymoff = LDHDRSZ_32\n\tcase U64_TOCMAGIC:\n\t\tlhdr := new(LoaderHeader64)\n\t\tif err := binary.Read(s.sr, binary.BigEndian, lhdr); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tstlen = lhdr.Lstlen\n\t\tstoff = lhdr.Lstoff\n\t\tnsyms = lhdr.Lnsyms\n\t\tsymoff = lhdr.Lsymoff\n\t}\n\n\t// Read loader section string table\n\tif _, err := s.sr.Seek(int64(stoff), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tst := make([]byte, stlen)\n\tif _, err := io.ReadFull(s.sr, st); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Read imported libraries\n\tlibs, err := f.readImportIDs(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Read loader symbol table\n\tif _, err := s.sr.Seek(int64(symoff), io.SeekStart); err != nil {\n\t\treturn nil, err\n\t}\n\tall := make([]ImportedSymbol, 0)\n\tfor i := 0; i < int(nsyms); i++ {\n\t\tvar name string\n\t\tvar ifile int32\n\t\tvar ok bool\n\t\tswitch f.TargetMachine {\n\t\tcase U802TOCMAGIC:\n\t\t\tldsym := new(LoaderSymbol32)\n\t\t\tif err := binary.Read(s.sr, binary.BigEndian, ldsym); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif ldsym.Lsmtype&0x40 == 0 {\n\t\t\t\tcontinue // Imported symbols only\n\t\t\t}\n\t\t\tzeroes := binary.BigEndian.Uint32(ldsym.Lname[:4])\n\t\t\tif zeroes != 0 {\n\t\t\t\tname = cstring(ldsym.Lname[:])\n\t\t\t} else {\n\t\t\t\toffset := binary.BigEndian.Uint32(ldsym.Lname[4:])\n\t\t\t\tname, ok = getString(st, offset)\n\t\t\t\tif !ok {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tifile = ldsym.Lifile\n\t\tcase U64_TOCMAGIC:\n\t\t\tldsym := new(LoaderSymbol64)\n\t\t\tif err := binary.Read(s.sr, binary.BigEndian, ldsym); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif ldsym.Lsmtype&0x40 == 0 {\n\t\t\t\tcontinue // Imported symbols only\n\t\t\t}\n\t\t\tname, ok = getString(st, ldsym.Loffset)\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tifile = ldsym.Lifile\n\t\t}\n\t\tvar sym ImportedSymbol\n\t\tsym.Name = name\n\t\tif ifile >= 1 && int(ifile) <= len(libs) {\n\t\t\tsym.Library = libs[ifile-1]\n\t\t}\n\t\tall = append(all, sym)\n\t}\n\n\treturn all, nil\n}\n\n// ImportedLibraries returns the names of all libraries\n// referred to by the binary f that are expected to be\n// linked with the binary at dynamic link time.\nfunc (f *File) ImportedLibraries() ([]string, error) {\n\ts := f.SectionByType(STYP_LOADER)\n\tif s == nil {\n\t\treturn nil, nil\n\t}\n\tall, err := f.readImportIDs(s)\n\treturn all, err\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/xcoff/file_test.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage xcoff\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\ntype fileTest struct {\n\tfile     string\n\thdr      FileHeader\n\tsections []*SectionHeader\n\tneeded   []string\n}\n\nvar fileTests = []fileTest{\n\t{\n\t\t\"testdata/gcc-ppc32-aix-dwarf2-exec\",\n\t\tFileHeader{U802TOCMAGIC},\n\t\t[]*SectionHeader{\n\t\t\t{\".text\", 0x10000290, 0x00000bbd, STYP_TEXT, 0x7ae6, 0x36},\n\t\t\t{\".data\", 0x20000e4d, 0x00000437, STYP_DATA, 0x7d02, 0x2b},\n\t\t\t{\".bss\", 0x20001284, 0x0000021c, STYP_BSS, 0, 0},\n\t\t\t{\".loader\", 0x00000000, 0x000004b3, STYP_LOADER, 0, 0},\n\t\t\t{\".dwline\", 0x00000000, 0x000000df, STYP_DWARF | SSUBTYP_DWLINE, 0x7eb0, 0x7},\n\t\t\t{\".dwinfo\", 0x00000000, 0x00000314, STYP_DWARF | SSUBTYP_DWINFO, 0x7ef6, 0xa},\n\t\t\t{\".dwabrev\", 0x00000000, 0x000000d6, STYP_DWARF | SSUBTYP_DWABREV, 0, 0},\n\t\t\t{\".dwarnge\", 0x00000000, 0x00000020, STYP_DWARF | SSUBTYP_DWARNGE, 0x7f5a, 0x2},\n\t\t\t{\".dwloc\", 0x00000000, 0x00000074, STYP_DWARF | SSUBTYP_DWLOC, 0, 0},\n\t\t\t{\".debug\", 0x00000000, 0x00005e4f, STYP_DEBUG, 0, 0},\n\t\t},\n\t\t[]string{\"libc.a/shr.o\"},\n\t},\n\t{\n\t\t\"testdata/gcc-ppc64-aix-dwarf2-exec\",\n\t\tFileHeader{U64_TOCMAGIC},\n\t\t[]*SectionHeader{\n\t\t\t{\".text\", 0x10000480, 0x00000afd, STYP_TEXT, 0x8322, 0x34},\n\t\t\t{\".data\", 0x20000f7d, 0x000002f3, STYP_DATA, 0x85fa, 0x25},\n\t\t\t{\".bss\", 0x20001270, 0x00000428, STYP_BSS, 0, 0},\n\t\t\t{\".loader\", 0x00000000, 0x00000535, STYP_LOADER, 0, 0},\n\t\t\t{\".dwline\", 0x00000000, 0x000000b4, STYP_DWARF | SSUBTYP_DWLINE, 0x8800, 0x4},\n\t\t\t{\".dwinfo\", 0x00000000, 0x0000036a, STYP_DWARF | SSUBTYP_DWINFO, 0x8838, 0x7},\n\t\t\t{\".dwabrev\", 0x00000000, 0x000000b5, STYP_DWARF | SSUBTYP_DWABREV, 0, 0},\n\t\t\t{\".dwarnge\", 0x00000000, 0x00000040, STYP_DWARF | SSUBTYP_DWARNGE, 0x889a, 0x2},\n\t\t\t{\".dwloc\", 0x00000000, 0x00000062, STYP_DWARF | SSUBTYP_DWLOC, 0, 0},\n\t\t\t{\".debug\", 0x00000000, 0x00006605, STYP_DEBUG, 0, 0},\n\t\t},\n\t\t[]string{\"libc.a/shr_64.o\"},\n\t},\n}\n\nfunc TestOpen(t *testing.T) {\n\tfor i := range fileTests {\n\t\ttt := &fileTests[i]\n\n\t\tf, err := Open(tt.file)\n\t\tif err != nil {\n\t\t\tt.Error(err)\n\t\t\tcontinue\n\t\t}\n\t\tif !reflect.DeepEqual(f.FileHeader, tt.hdr) {\n\t\t\tt.Errorf(\"open %s:\\n\\thave %#v\\n\\twant %#v\\n\", tt.file, f.FileHeader, tt.hdr)\n\t\t\tcontinue\n\t\t}\n\n\t\tfor i, sh := range f.Sections {\n\t\t\tif i >= len(tt.sections) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\thave := &sh.SectionHeader\n\t\t\twant := tt.sections[i]\n\t\t\tif !reflect.DeepEqual(have, want) {\n\t\t\t\tt.Errorf(\"open %s, section %d:\\n\\thave %#v\\n\\twant %#v\\n\", tt.file, i, have, want)\n\t\t\t}\n\t\t}\n\t\ttn := len(tt.sections)\n\t\tfn := len(f.Sections)\n\t\tif tn != fn {\n\t\t\tt.Errorf(\"open %s: len(Sections) = %d, want %d\", tt.file, fn, tn)\n\t\t}\n\t\ttl := tt.needed\n\t\tfl, err := f.ImportedLibraries()\n\t\tif err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t\tif !reflect.DeepEqual(tl, fl) {\n\t\t\tt.Errorf(\"open %s: loader import = %v, want %v\", tt.file, tl, fl)\n\t\t}\n\t}\n}\n\nfunc TestOpenFailure(t *testing.T) {\n\tfilename := \"file.go\"    // not an XCOFF object file\n\t_, err := Open(filename) // don't crash\n\tif err == nil {\n\t\tt.Errorf(\"open %s: succeeded unexpectedly\", filename)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/internal/xcoff/xcoff.go",
    "content": "// The code in this package comes from:\n// https://github.com/golang/go/tree/master/src/internal/xcoff\n// it was copied over to add support for xcoff binaries.\n// Golang keeps this package as internal, forbidding its external use.\n\n// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//nolint:all\npackage xcoff\n\n// File Header.\ntype FileHeader32 struct {\n\tFmagic   uint16 // Target machine\n\tFnscns   uint16 // Number of sections\n\tFtimedat int32  // Time and date of file creation\n\tFsymptr  uint32 // Byte offset to symbol table start\n\tFnsyms   int32  // Number of entries in symbol table\n\tFopthdr  uint16 // Number of bytes in optional header\n\tFflags   uint16 // Flags\n}\n\ntype FileHeader64 struct {\n\tFmagic   uint16 // Target machine\n\tFnscns   uint16 // Number of sections\n\tFtimedat int32  // Time and date of file creation\n\tFsymptr  uint64 // Byte offset to symbol table start\n\tFopthdr  uint16 // Number of bytes in optional header\n\tFflags   uint16 // Flags\n\tFnsyms   int32  // Number of entries in symbol table\n}\n\nconst (\n\tFILHSZ_32 = 20\n\tFILHSZ_64 = 24\n)\nconst (\n\tU802TOCMAGIC = 0737 // AIX 32-bit XCOFF\n\tU64_TOCMAGIC = 0767 // AIX 64-bit XCOFF\n)\n\n// Flags that describe the type of the object file.\nconst (\n\tF_RELFLG    = 0x0001\n\tF_EXEC      = 0x0002\n\tF_LNNO      = 0x0004\n\tF_FDPR_PROF = 0x0010\n\tF_FDPR_OPTI = 0x0020\n\tF_DSA       = 0x0040\n\tF_VARPG     = 0x0100\n\tF_DYNLOAD   = 0x1000\n\tF_SHROBJ    = 0x2000\n\tF_LOADONLY  = 0x4000\n)\n\n// Section Header.\ntype SectionHeader32 struct {\n\tSname    [8]byte // Section name\n\tSpaddr   uint32  // Physical address\n\tSvaddr   uint32  // Virtual address\n\tSsize    uint32  // Section size\n\tSscnptr  uint32  // Offset in file to raw data for section\n\tSrelptr  uint32  // Offset in file to relocation entries for section\n\tSlnnoptr uint32  // Offset in file to line number entries for section\n\tSnreloc  uint16  // Number of relocation entries\n\tSnlnno   uint16  // Number of line number entries\n\tSflags   uint32  // Flags to define the section type\n}\n\ntype SectionHeader64 struct {\n\tSname    [8]byte // Section name\n\tSpaddr   uint64  // Physical address\n\tSvaddr   uint64  // Virtual address\n\tSsize    uint64  // Section size\n\tSscnptr  uint64  // Offset in file to raw data for section\n\tSrelptr  uint64  // Offset in file to relocation entries for section\n\tSlnnoptr uint64  // Offset in file to line number entries for section\n\tSnreloc  uint32  // Number of relocation entries\n\tSnlnno   uint32  // Number of line number entries\n\tSflags   uint32  // Flags to define the section type\n\tSpad     uint32  // Needs to be 72 bytes long\n}\n\n// Flags defining the section type.\nconst (\n\tSTYP_DWARF  = 0x0010\n\tSTYP_TEXT   = 0x0020\n\tSTYP_DATA   = 0x0040\n\tSTYP_BSS    = 0x0080\n\tSTYP_EXCEPT = 0x0100\n\tSTYP_INFO   = 0x0200\n\tSTYP_TDATA  = 0x0400\n\tSTYP_TBSS   = 0x0800\n\tSTYP_LOADER = 0x1000\n\tSTYP_DEBUG  = 0x2000\n\tSTYP_TYPCHK = 0x4000\n\tSTYP_OVRFLO = 0x8000\n)\nconst (\n\tSSUBTYP_DWINFO  = 0x10000 // DWARF info section\n\tSSUBTYP_DWLINE  = 0x20000 // DWARF line-number section\n\tSSUBTYP_DWPBNMS = 0x30000 // DWARF public names section\n\tSSUBTYP_DWPBTYP = 0x40000 // DWARF public types section\n\tSSUBTYP_DWARNGE = 0x50000 // DWARF aranges section\n\tSSUBTYP_DWABREV = 0x60000 // DWARF abbreviation section\n\tSSUBTYP_DWSTR   = 0x70000 // DWARF strings section\n\tSSUBTYP_DWRNGES = 0x80000 // DWARF ranges section\n\tSSUBTYP_DWLOC   = 0x90000 // DWARF location lists section\n\tSSUBTYP_DWFRAME = 0xA0000 // DWARF frames section\n\tSSUBTYP_DWMAC   = 0xB0000 // DWARF macros section\n)\n\n// Symbol Table Entry.\ntype SymEnt32 struct {\n\tNname   [8]byte // Symbol name\n\tNvalue  uint32  // Symbol value\n\tNscnum  int16   // Section number of symbol\n\tNtype   uint16  // Basic and derived type specification\n\tNsclass int8    // Storage class of symbol\n\tNnumaux int8    // Number of auxiliary entries\n}\n\ntype SymEnt64 struct {\n\tNvalue  uint64 // Symbol value\n\tNoffset uint32 // Offset of the name in string table or .debug section\n\tNscnum  int16  // Section number of symbol\n\tNtype   uint16 // Basic and derived type specification\n\tNsclass int8   // Storage class of symbol\n\tNnumaux int8   // Number of auxiliary entries\n}\n\nconst SYMESZ = 18\n\nconst (\n\t// Nscnum\n\tN_DEBUG = -2\n\tN_ABS   = -1\n\tN_UNDEF = 0\n\n\t//Ntype\n\tSYM_V_INTERNAL  = 0x1000\n\tSYM_V_HIDDEN    = 0x2000\n\tSYM_V_PROTECTED = 0x3000\n\tSYM_V_EXPORTED  = 0x4000\n\tSYM_TYPE_FUNC   = 0x0020 // is function\n)\n\n// Storage Class.\nconst (\n\tC_NULL    = 0   // Symbol table entry marked for deletion\n\tC_EXT     = 2   // External symbol\n\tC_STAT    = 3   // Static symbol\n\tC_BLOCK   = 100 // Beginning or end of inner block\n\tC_FCN     = 101 // Beginning or end of function\n\tC_FILE    = 103 // Source file name and compiler information\n\tC_HIDEXT  = 107 // Unnamed external symbol\n\tC_BINCL   = 108 // Beginning of include file\n\tC_EINCL   = 109 // End of include file\n\tC_WEAKEXT = 111 // Weak external symbol\n\tC_DWARF   = 112 // DWARF symbol\n\tC_GSYM    = 128 // Global variable\n\tC_LSYM    = 129 // Automatic variable allocated on stack\n\tC_PSYM    = 130 // Argument to subroutine allocated on stack\n\tC_RSYM    = 131 // Register variable\n\tC_RPSYM   = 132 // Argument to function or procedure stored in register\n\tC_STSYM   = 133 // Statically allocated symbol\n\tC_BCOMM   = 135 // Beginning of common block\n\tC_ECOML   = 136 // Local member of common block\n\tC_ECOMM   = 137 // End of common block\n\tC_DECL    = 140 // Declaration of object\n\tC_ENTRY   = 141 // Alternate entry\n\tC_FUN     = 142 // Function or procedure\n\tC_BSTAT   = 143 // Beginning of static block\n\tC_ESTAT   = 144 // End of static block\n\tC_GTLS    = 145 // Global thread-local variable\n\tC_STTLS   = 146 // Static thread-local variable\n)\n\n// File Auxiliary Entry\ntype AuxFile64 struct {\n\tXfname   [8]byte // Name or offset inside string table\n\tXftype   uint8   // Source file string type\n\tXauxtype uint8   // Type of auxiliary entry\n}\n\n// Function Auxiliary Entry\ntype AuxFcn32 struct {\n\tXexptr   uint32 // File offset to exception table entry\n\tXfsize   uint32 // Size of function in bytes\n\tXlnnoptr uint32 // File pointer to line number\n\tXendndx  uint32 // Symbol table index of next entry\n\tXpad     uint16 // Unused\n}\ntype AuxFcn64 struct {\n\tXlnnoptr uint64 // File pointer to line number\n\tXfsize   uint32 // Size of function in bytes\n\tXendndx  uint32 // Symbol table index of next entry\n\tXpad     uint8  // Unused\n\tXauxtype uint8  // Type of auxiliary entry\n}\n\ntype AuxSect64 struct {\n\tXscnlen  uint64 // section length\n\tXnreloc  uint64 // Num RLDs\n\tpad      uint8\n\tXauxtype uint8 // Type of auxiliary entry\n}\n\n// csect Auxiliary Entry.\ntype AuxCSect32 struct {\n\tXscnlen   int32  // Length or symbol table index\n\tXparmhash uint32 // Offset of parameter type-check string\n\tXsnhash   uint16 // .typchk section number\n\tXsmtyp    uint8  // Symbol alignment and type\n\tXsmclas   uint8  // Storage-mapping class\n\tXstab     uint32 // Reserved\n\tXsnstab   uint16 // Reserved\n}\n\ntype AuxCSect64 struct {\n\tXscnlenlo uint32 // Lower 4 bytes of length or symbol table index\n\tXparmhash uint32 // Offset of parameter type-check string\n\tXsnhash   uint16 // .typchk section number\n\tXsmtyp    uint8  // Symbol alignment and type\n\tXsmclas   uint8  // Storage-mapping class\n\tXscnlenhi int32  // Upper 4 bytes of length or symbol table index\n\tXpad      uint8  // Unused\n\tXauxtype  uint8  // Type of auxiliary entry\n}\n\n// Auxiliary type\n// const (\n// \t_AUX_EXCEPT = 255\n// \t_AUX_FCN    = 254\n// \t_AUX_SYM    = 253\n// \t_AUX_FILE   = 252\n// \t_AUX_CSECT  = 251\n// \t_AUX_SECT   = 250\n// )\n\n// Symbol type field.\nconst (\n\tXTY_ER = 0 // External reference\n\tXTY_SD = 1 // Section definition\n\tXTY_LD = 2 // Label definition\n\tXTY_CM = 3 // Common csect definition\n)\n\n// Defines for File auxiliary definitions: x_ftype field of x_file\nconst (\n\tXFT_FN = 0   // Source File Name\n\tXFT_CT = 1   // Compile Time Stamp\n\tXFT_CV = 2   // Compiler Version Number\n\tXFT_CD = 128 // Compiler Defined Information\n)\n\n// Storage-mapping class.\nconst (\n\tXMC_PR     = 0  // Program code\n\tXMC_RO     = 1  // Read-only constant\n\tXMC_DB     = 2  // Debug dictionary table\n\tXMC_TC     = 3  // TOC entry\n\tXMC_UA     = 4  // Unclassified\n\tXMC_RW     = 5  // Read/Write data\n\tXMC_GL     = 6  // Global linkage\n\tXMC_XO     = 7  // Extended operation\n\tXMC_SV     = 8  // 32-bit supervisor call descriptor\n\tXMC_BS     = 9  // BSS class\n\tXMC_DS     = 10 // Function descriptor\n\tXMC_UC     = 11 // Unnamed FORTRAN common\n\tXMC_TC0    = 15 // TOC anchor\n\tXMC_TD     = 16 // Scalar data entry in the TOC\n\tXMC_SV64   = 17 // 64-bit supervisor call descriptor\n\tXMC_SV3264 = 18 // Supervisor call descriptor for both 32-bit and 64-bit\n\tXMC_TL     = 20 // Read/Write thread-local data\n\tXMC_UL     = 21 // Read/Write thread-local data (.tbss)\n\tXMC_TE     = 22 // TOC entry\n)\n\n// Loader Header.\ntype LoaderHeader32 struct {\n\tLversion int32  // Loader section version number\n\tLnsyms   int32  // Number of symbol table entries\n\tLnreloc  int32  // Number of relocation table entries\n\tListlen  uint32 // Length of import file ID string table\n\tLnimpid  int32  // Number of import file IDs\n\tLimpoff  uint32 // Offset to start of import file IDs\n\tLstlen   uint32 // Length of string table\n\tLstoff   uint32 // Offset to start of string table\n}\n\ntype LoaderHeader64 struct {\n\tLversion int32  // Loader section version number\n\tLnsyms   int32  // Number of symbol table entries\n\tLnreloc  int32  // Number of relocation table entries\n\tListlen  uint32 // Length of import file ID string table\n\tLnimpid  int32  // Number of import file IDs\n\tLstlen   uint32 // Length of string table\n\tLimpoff  uint64 // Offset to start of import file IDs\n\tLstoff   uint64 // Offset to start of string table\n\tLsymoff  uint64 // Offset to start of symbol table\n\tLrldoff  uint64 // Offset to start of relocation entries\n}\n\nconst (\n\tLDHDRSZ_32 = 32\n\tLDHDRSZ_64 = 56\n)\n\n// Loader Symbol.\ntype LoaderSymbol32 struct {\n\tLname   [8]byte // Symbol name or byte offset into string table\n\tLvalue  uint32  // Address field\n\tLscnum  int16   // Section number containing symbol\n\tLsmtype int8    // Symbol type, export, import flags\n\tLsmclas int8    // Symbol storage class\n\tLifile  int32   // Import file ID; ordinal of import file IDs\n\tLparm   uint32  // Parameter type-check field\n}\n\ntype LoaderSymbol64 struct {\n\tLvalue  uint64 // Address field\n\tLoffset uint32 // Byte offset into string table of symbol name\n\tLscnum  int16  // Section number containing symbol\n\tLsmtype int8   // Symbol type, export, import flags\n\tLsmclas int8   // Symbol storage class\n\tLifile  int32  // Import file ID; ordinal of import file IDs\n\tLparm   uint32 // Parameter type-check field\n}\n\ntype Reloc32 struct {\n\tRvaddr  uint32 // (virtual) address of reference\n\tRsymndx uint32 // Index into symbol table\n\tRsize   uint8  // Sign and reloc bit len\n\tRtype   uint8  // Toc relocation type\n}\n\ntype Reloc64 struct {\n\tRvaddr  uint64 // (virtual) address of reference\n\tRsymndx uint32 // Index into symbol table\n\tRsize   uint8  // Sign and reloc bit len\n\tRtype   uint8  // Toc relocation type\n}\n\nconst (\n\tR_POS = 0x00 // A(sym) Positive Relocation\n\tR_NEG = 0x01 // -A(sym) Negative Relocation\n\tR_REL = 0x02 // A(sym-*) Relative to self\n\tR_TOC = 0x03 // A(sym-TOC) Relative to TOC\n\tR_TRL = 0x12 // A(sym-TOC) TOC Relative indirect load.\n\n\tR_TRLA = 0x13 // A(sym-TOC) TOC Rel load address. modifiable inst\n\tR_GL   = 0x05 // A(external TOC of sym) Global Linkage\n\tR_TCL  = 0x06 // A(local TOC of sym) Local object TOC address\n\tR_RL   = 0x0C // A(sym) Pos indirect load. modifiable instruction\n\tR_RLA  = 0x0D // A(sym) Pos Load Address. modifiable instruction\n\tR_REF  = 0x0F // AL0(sym) Non relocating ref. No garbage collect\n\tR_BA   = 0x08 // A(sym) Branch absolute. Cannot modify instruction\n\tR_RBA  = 0x18 // A(sym) Branch absolute. modifiable instruction\n\tR_BR   = 0x0A // A(sym-*) Branch rel to self. non modifiable\n\tR_RBR  = 0x1A // A(sym-*) Branch rel to self. modifiable instr\n\n\tR_TLS    = 0x20 // General-dynamic reference to TLS symbol\n\tR_TLS_IE = 0x21 // Initial-exec reference to TLS symbol\n\tR_TLS_LD = 0x22 // Local-dynamic reference to TLS symbol\n\tR_TLS_LE = 0x23 // Local-exec reference to TLS symbol\n\tR_TLSM   = 0x24 // Module reference to TLS symbol\n\tR_TLSML  = 0x25 // Module reference to local (own) module\n\n\tR_TOCU = 0x30 // Relative to TOC - high order bits\n\tR_TOCL = 0x31 // Relative to TOC - low order bits\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/license_finder.go",
    "content": "package golang\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\n// resolveModuleLicenses finds and parses license files for Go modules\nfunc resolveModuleLicenses(ctx context.Context, scanRoot string, pkgInfos []pkgInfo, fs afero.Fs) pkg.LicenseSet {\n\tout := pkg.NewLicenseSet()\n\n\tfor _, info := range pkgInfos {\n\t\tmodDir, pkgDir, err := getAbsolutePkgPaths(info)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tlicenseFiles, err := findAllLicenseCandidatesUpwards(pkgDir, modDir, fs)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor _, f := range licenseFiles {\n\t\t\tout.Add(readLicenses(ctx, scanRoot, fs, f)...)\n\t\t}\n\t}\n\n\treturn out\n}\n\nfunc readLicenses(ctx context.Context, scanRoot string, fs afero.Fs, f string) []pkg.License {\n\tcontents, err := fs.Open(f)\n\tif err != nil {\n\t\tlog.WithFields(\"file\", f, \"error\", err).Debug(\"unable to read license file\")\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(contents, f)\n\tlocation := file.Location{}\n\tif scanRoot != \"\" && strings.HasPrefix(f, scanRoot) {\n\t\t// include location when licenses are found within the scan target\n\t\tlocation = file.NewLocation(strings.TrimPrefix(f, scanRoot))\n\t}\n\treturn pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(location, contents))\n}\n\n/*\nfindAllLicenseCandidatesUpwards performs a bubble-up search per package:\n1. pkgInfos represents a sparse vertical distribution of packages within modules\n2. we get more pkgInfos for free when the build configuration is updated\n\nThe recursion terminates via two conditions:\n- When dir is outside stopAt boundary (happy case)\n- When reaching filesystem root where parent == dir (edge case)\n\nNote: The code does NOT follow symlinks. It returns a slice of absolute paths that\nrepresent license file matches that are resolved independently of the bubble-up.\n\nWhen we should consider redesign tip to stem:\n- Reduced filesystem calls: Single traversal vs multiple per-package\n- Path deduplication: Avoids re-scanning common parent directories\n- Better for wide module structures: Efficient when many packages share parent paths\n- We need to consider the case here where nested modules are visited by accident and licenses\nare erroneously associated to a 'parent module'; bubble up currently prevents this\n*/\nfunc findAllLicenseCandidatesUpwards(dir string, stopAt string, fs afero.Fs) ([]string, error) {\n\t// Validate that both paths are absolute\n\tif !filepath.IsAbs(dir) {\n\t\treturn nil, fmt.Errorf(\"dir must be an absolute path, got: %s\", dir)\n\t}\n\tif !filepath.IsAbs(stopAt) {\n\t\treturn nil, fmt.Errorf(\"stopAt must be an absolute path, got: %s\", stopAt)\n\t}\n\n\treturn findLicenseCandidates(dir, stopAt, fs)\n}\n\nfunc findLicenseCandidates(dir string, stopAt string, fs afero.Fs) ([]string, error) {\n\t// stop if we've gone outside the stopAt directory\n\tif !strings.HasPrefix(dir, stopAt) {\n\t\treturn []string{}, nil\n\t}\n\n\tout, err := findLicensesInDir(dir, fs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tparent := filepath.Dir(dir)\n\t// can't go any higher up the directory tree: \"/\" case\n\tif parent == dir {\n\t\treturn out, nil\n\t}\n\n\t// search parent directory and combine results\n\tparentLicenses, err := findLicenseCandidates(parent, stopAt, fs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Combine current directory licenses with parent directory licenses\n\treturn append(out, parentLicenses...), nil\n}\n\nfunc getAbsolutePkgPaths(info pkgInfo) (modDir string, pkgDir string, err error) {\n\tpkgDir, err = filepath.Abs(info.pkgDir)\n\tif err != nil {\n\t\treturn modDir, pkgDir, err\n\t}\n\n\tmodDir, err = filepath.Abs(info.moduleDir)\n\tif err != nil {\n\t\treturn modDir, pkgDir, err\n\t}\n\n\tif !strings.HasPrefix(pkgDir, modDir) {\n\t\treturn modDir, pkgDir, fmt.Errorf(\"modDir %s should contain pkgDir %s\", modDir, pkgDir)\n\t}\n\n\treturn modDir, pkgDir, nil\n}\n\nfunc findLicensesInDir(dir string, fs afero.Fs) ([]string, error) {\n\tvar out []string\n\n\tdirContents, err := afero.ReadDir(fs, dir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, f := range dirContents {\n\t\tif f.IsDir() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif licenses.IsLicenseFile(f.Name()) {\n\t\t\tpath := filepath.Join(dir, f.Name())\n\t\t\tout = append(out, path)\n\t\t}\n\t}\n\n\treturn out, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/license_finder_test.go",
    "content": "package golang\n\nimport (\n\t\"testing\"\n\n\t\"github.com/spf13/afero\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestFindAllLicenseCandidatesUpwards(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tsetupFS       func(afero.Fs)\n\t\tstartDir      string\n\t\tstopAt        string\n\t\texpectedFiles []string\n\t\texpectedError bool\n\t\tdescription   string\n\t}{\n\t\t{\n\t\t\tname:     \"normal traversal up to root\",\n\t\t\tstartDir: \"/project/subdir/deeper\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir/deeper\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/project/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/project/foobar\", []byte(\"MIT\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/project/subdir/LICENSE.txt\", []byte(\"Apache\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/project/subdir/deeper/COPYING\", []byte(\"GPL\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\n\t\t\t\t\"/project/subdir/deeper/COPYING\",\n\t\t\t\t\"/project/subdir/LICENSE.txt\",\n\t\t\t\t\"/project/LICENSE\",\n\t\t\t},\n\t\t\tdescription: \"Should find all license files traversing upward\",\n\t\t},\n\t\t{\n\t\t\tname:     \"stops at boundary directory\",\n\t\t\tstartDir: \"/project/subdir/deeper\",\n\t\t\tstopAt:   \"/project/subdir\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir/deeper\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/project/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/project/subdir/LICENSE.txt\", []byte(\"Apache\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/project/subdir/deeper/COPYING\", []byte(\"GPL\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\n\t\t\t\t\"/project/subdir/deeper/COPYING\",\n\t\t\t\t\"/project/subdir/LICENSE.txt\",\n\t\t\t},\n\t\t\tdescription: \"Should stop at stopAt boundary and not find LICENSE in /project\",\n\t\t},\n\t\t{\n\t\t\tname:     \"handles non-existent directory\",\n\t\t\tstartDir: \"/nonexistent\",\n\t\t\tstopAt:   \"/\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\t// Don't create the directory\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t\tdescription:   \"Should return error for non-existent directory\",\n\t\t},\n\t\t{\n\t\t\tname:     \"handles empty directory tree\",\n\t\t\tstartDir: \"/empty/dir/tree\",\n\t\t\tstopAt:   \"/empty\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/empty/dir/tree\", 0755)\n\t\t\t\t// No license files\n\t\t\t},\n\t\t\texpectedFiles: nil,\n\t\t\tdescription:   \"Should return nil when no license files found\",\n\t\t},\n\t\t{\n\t\t\tname:     \"handles directory at filesystem root\",\n\t\t\tstartDir: \"/\",\n\t\t\tstopAt:   \"/\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tafero.WriteFile(fs, \"/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\"/LICENSE\"},\n\t\t\tdescription:   \"Should handle traversal starting at root\",\n\t\t},\n\t\t{\n\t\t\tname:     \"ignores directories with license-like names\",\n\t\t\tstartDir: \"/project/subdir\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir\", 0755)\n\t\t\t\tfs.MkdirAll(\"/project/LICENSE_DIR\", 0755) // Directory, should be ignored\n\t\t\t\tafero.WriteFile(fs, \"/project/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\"/project/LICENSE\"},\n\t\t\tdescription:   \"Should ignore directories even if they match license pattern\",\n\t\t},\n\t\t{\n\t\t\tname:     \"startDir equals stopAt\",\n\t\t\tstartDir: \"/project\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/project/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\"/project/LICENSE\"},\n\t\t\tdescription:   \"Should handle case where start equals stop directory\",\n\t\t},\n\t\t{\n\t\t\tname:     \"startDir is parent of stopAt (returns empty)\",\n\t\t\tstartDir: \"/\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{},\n\t\t\tdescription:   \"Should return empty when startDir is above stopAt\",\n\t\t},\n\t\t{\n\t\t\tname:     \"very deep nesting\",\n\t\t\tstartDir: \"/a/b/c/d/e/f/g/h/i/j\",\n\t\t\tstopAt:   \"/a\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/a/b/c/d/e/f/g/h/i/j\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/a/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/a/b/c/d/e/NOTICE\", []byte(\"Notice\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{\n\t\t\t\t\"/a/b/c/d/e/NOTICE\",\n\t\t\t\t\"/a/LICENSE\",\n\t\t\t},\n\t\t\tdescription: \"Should handle deep directory nesting without stack overflow\",\n\t\t},\n\t\t{\n\t\t\tname:     \"relative dir path rejected\",\n\t\t\tstartDir: \"project/subdir\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir\", 0755)\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t\tdescription:   \"Should reject relative dir path\",\n\t\t},\n\t\t{\n\t\t\tname:     \"relative stopAt path rejected\",\n\t\t\tstartDir: \"/project/subdir\",\n\t\t\tstopAt:   \"project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir\", 0755)\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t\tdescription:   \"Should reject relative stopAt path\",\n\t\t},\n\t\t{\n\t\t\tname:     \"stopAt is descendant of startDir\",\n\t\t\tstartDir: \"/project\",\n\t\t\tstopAt:   \"/project/subdir/deeper\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/subdir/deeper\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/project/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{},\n\t\t\tdescription:   \"Should return empty when stopAt is below startDir\",\n\t\t},\n\t\t{\n\t\t\tname:     \"disjoint paths\",\n\t\t\tstartDir: \"/foo/bar\",\n\t\t\tstopAt:   \"/baz/qux\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/foo/bar\", 0755)\n\t\t\t\tfs.MkdirAll(\"/baz/qux\", 0755)\n\t\t\t\tafero.WriteFile(fs, \"/foo/bar/LICENSE\", []byte(\"MIT\"), 0644)\n\t\t\t\tafero.WriteFile(fs, \"/LICENSE\", []byte(\"Root\"), 0644)\n\t\t\t},\n\t\t\texpectedFiles: []string{},\n\t\t\tdescription:   \"Should return empty for completely disjoint paths\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty stopAt rejected\",\n\t\t\tstartDir: \"/project/deep/path\",\n\t\t\tstopAt:   \"\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project/deep/path\", 0755)\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t\tdescription:   \"Should reject empty stopAt string\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty startDir rejected\",\n\t\t\tstartDir: \"\",\n\t\t\tstopAt:   \"/project\",\n\t\t\tsetupFS: func(fs afero.Fs) {\n\t\t\t\tfs.MkdirAll(\"/project\", 0755)\n\t\t\t},\n\t\t\texpectedError: true,\n\t\t\tdescription:   \"Should reject empty startDir string\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// Create in-memory filesystem\n\t\t\tfs := afero.NewMemMapFs()\n\t\t\ttt.setupFS(fs)\n\n\t\t\t// Run the function\n\t\t\tresult, err := findAllLicenseCandidatesUpwards(tt.startDir, tt.stopAt, fs)\n\n\t\t\t// Check error expectation\n\t\t\tif tt.expectedError {\n\t\t\t\tassert.Error(t, err, tt.description)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err, tt.description)\n\t\t\tassert.Equal(t, tt.expectedFiles, result, tt.description)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/licenses.go",
    "content": "package golang\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/go-git/go-billy/v5/memfs\"\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/plumbing\"\n\t\"github.com/go-git/go-git/v5/storage/memory\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/cache\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\ntype goLicenseResolver struct {\n\tcatalogerName    string\n\topts             CatalogerConfig\n\tlocalModCacheDir fs.FS\n\tlocalVendorDir   fs.FS\n\tlicenseCache     cache.Resolver[[]pkg.License]\n}\n\nfunc newGoLicenseResolver(catalogerName string, opts CatalogerConfig) goLicenseResolver {\n\tvar localModCacheDir fs.FS\n\tif opts.SearchLocalModCacheLicenses {\n\t\tlocalModCacheDir = os.DirFS(opts.LocalModCacheDir)\n\t}\n\n\tvar localVendorDir fs.FS\n\tif opts.SearchLocalVendorLicenses {\n\t\tvendorDir := opts.LocalVendorDir\n\t\tif vendorDir == \"\" {\n\t\t\twd, err := os.Getwd()\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to get CWD while resolving the local go vendor dir: %v\", err)\n\t\t\t} else {\n\t\t\t\tvendorDir = filepath.Join(wd, \"vendor\")\n\t\t\t}\n\t\t}\n\t\tlocalVendorDir = os.DirFS(vendorDir)\n\t}\n\n\treturn goLicenseResolver{\n\t\tcatalogerName:    catalogerName,\n\t\topts:             opts,\n\t\tlocalModCacheDir: localModCacheDir,\n\t\tlocalVendorDir:   localVendorDir,\n\t\tlicenseCache:     cache.GetResolverCachingErrors[[]pkg.License](\"golang\", \"v2\"),\n\t}\n}\n\nfunc remotesForModule(proxies []string, noProxy []string, module string) []string {\n\tfor _, pattern := range noProxy {\n\t\tif matched, err := path.Match(pattern, module); err == nil && matched {\n\t\t\t// matched to be direct for this module\n\t\t\treturn directProxiesOnly\n\t\t}\n\t}\n\n\treturn proxies\n}\n\nfunc (c *goLicenseResolver) getLicenses(ctx context.Context, resolver file.Resolver, moduleName, moduleVersion string) []pkg.License {\n\t// search the scan target first, ignoring local and remote sources\n\tpkgLicenses, err := c.findLicensesInSource(ctx, resolver,\n\t\tfmt.Sprintf(`**/go/pkg/mod/%s@%s/*`, processCaps(moduleName), moduleVersion),\n\t)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"module\", moduleName, \"version\", moduleVersion).Trace(\"unable to read golang licenses from source\")\n\t}\n\tif len(pkgLicenses) > 0 {\n\t\treturn pkgLicenses\n\t}\n\n\t// look in the local host mod directory...\n\tif c.opts.SearchLocalModCacheLicenses {\n\t\tpkgLicenses, err = c.getLicensesFromLocal(ctx, moduleName, moduleVersion)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"module\", moduleName, \"version\", moduleVersion).Trace(\"unable to read golang licenses local\")\n\t\t}\n\t\tif len(pkgLicenses) > 0 {\n\t\t\treturn pkgLicenses\n\t\t}\n\t}\n\n\t// look in the local vendor directory...\n\tif c.opts.SearchLocalVendorLicenses {\n\t\tpkgLicenses, err = c.getLicensesFromLocalVendor(ctx, moduleName)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"module\", moduleName, \"version\", moduleVersion).Trace(\"unable to read golang licenses vendor\")\n\t\t}\n\t\tif len(pkgLicenses) > 0 {\n\t\t\treturn pkgLicenses\n\t\t}\n\t}\n\n\t// download from remote sources\n\tif c.opts.SearchRemoteLicenses {\n\t\tpkgLicenses, err = c.getLicensesFromRemote(ctx, moduleName, moduleVersion)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"module\", moduleName, \"version\", moduleVersion).Debug(\"unable to read golang licenses remote\")\n\t\t}\n\t}\n\n\treturn pkgLicenses\n}\n\nfunc (c *goLicenseResolver) getLicensesFromLocal(ctx context.Context, moduleName, moduleVersion string) ([]pkg.License, error) {\n\tif c.localModCacheDir == nil {\n\t\treturn nil, nil\n\t}\n\n\tsubdir := moduleDir(moduleName, moduleVersion)\n\n\t// get the local subdirectory containing the specific go module\n\tdir, err := fs.Sub(c.localModCacheDir, subdir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// if we're running against a directory on the filesystem, it may not include the\n\t// user's homedir / GOPATH, so we defer to using the localModCacheResolver\n\t// we use $GOPATH/pkg/mod to avoid leaking information about the user's system\n\treturn c.findLicensesInFS(ctx, \"file://$GOPATH/pkg/mod/\"+subdir+\"/\", dir)\n}\n\nfunc (c *goLicenseResolver) getLicensesFromLocalVendor(ctx context.Context, moduleName string) ([]pkg.License, error) {\n\tif c.localVendorDir == nil {\n\t\treturn nil, nil\n\t}\n\n\tsubdir := processCaps(moduleName)\n\n\t// get the local subdirectory containing the specific go module\n\tdir, err := fs.Sub(c.localVendorDir, subdir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// if we're running against a directory on the filesystem, it may not include the\n\t// user's homedir / GOPATH, so we defer to using the localModCacheResolver\n\t// we use $GOPATH/pkg/mod to avoid leaking information about the user's system\n\treturn c.findLicensesInFS(ctx, \"file://$GO_VENDOR/\"+subdir+\"/\", dir)\n}\n\nfunc (c *goLicenseResolver) getLicensesFromRemote(ctx context.Context, moduleName, moduleVersion string) ([]pkg.License, error) {\n\treturn c.licenseCache.Resolve(fmt.Sprintf(\"%s/%s\", moduleName, moduleVersion), func() ([]pkg.License, error) {\n\t\tproxies := remotesForModule(c.opts.Proxies, c.opts.NoProxy, moduleName)\n\n\t\turlPrefix, fsys, cleanup, err := getModule(ctx, proxies, moduleName, moduleVersion)\n\t\tif cleanup != nil {\n\t\t\tdefer cleanup()\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn c.findLicensesInFS(ctx, urlPrefix, fsys)\n\t})\n}\n\nfunc (c *goLicenseResolver) findLicensesInFS(ctx context.Context, urlPrefix string, fsys fs.FS) ([]pkg.License, error) {\n\tvar out []pkg.License\n\terr := fs.WalkDir(fsys, \".\", func(filePath string, d fs.DirEntry, err error) error {\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"error reading %s#%s: %v\", urlPrefix, filePath, err)\n\t\t\treturn err\n\t\t}\n\t\tif d == nil {\n\t\t\tlog.Debugf(\"nil entry for %s#%s\", urlPrefix, filePath)\n\t\t\treturn nil\n\t\t}\n\t\tif !licenses.IsLicenseFile(d.Name()) {\n\t\t\treturn nil\n\t\t}\n\t\trdr, err := fsys.Open(filePath)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"error opening license file %s: %v\", filePath, err)\n\t\t\treturn nil\n\t\t}\n\t\tdefer internal.CloseAndLogError(rdr, filePath)\n\t\tfoundLicenses := pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(file.NewLocation(filePath), rdr))\n\t\t// since these licenses are found in an external fs.FS, not in the scanned source,\n\t\t// get rid of the locations but keep information about the where the license was found\n\t\t// by prepending the urlPrefix to the internal path for an accurate representation\n\t\tfor _, l := range foundLicenses {\n\t\t\tl.URLs = []string{urlPrefix + filePath}\n\t\t\tl.Locations = file.NewLocationSet()\n\t\t\tout = append(out, l)\n\t\t}\n\t\treturn nil\n\t})\n\treturn out, err\n}\n\nfunc (c *goLicenseResolver) findLicensesInSource(ctx context.Context, resolver file.Resolver, globMatch string) ([]pkg.License, error) {\n\tvar out []pkg.License\n\tlocations, err := resolver.FilesByGlob(globMatch)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, l := range locations {\n\t\tparsed, err := c.parseLicenseFromLocation(ctx, l, resolver)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tout = append(out, parsed...)\n\t}\n\n\t// if we have a directory but simply don't have any found license files, indicate this so we\n\t// don't re-download modules continually\n\tif len(locations) > 0 && len(out) == 0 {\n\t\treturn nil, noLicensesFound{\n\t\t\tglob: globMatch,\n\t\t}\n\t}\n\n\treturn out, nil\n}\n\nfunc (c *goLicenseResolver) parseLicenseFromLocation(ctx context.Context, l file.Location, resolver file.Resolver) ([]pkg.License, error) {\n\tvar out []pkg.License\n\tfileName := path.Base(l.RealPath)\n\tif licenses.IsLicenseFile(fileName) {\n\t\tcontents, err := resolver.FileContentsByLocation(l)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer internal.CloseAndLogError(contents, l.RealPath)\n\t\tout = pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(l, contents))\n\t}\n\treturn out, nil\n}\n\nfunc moduleDir(moduleName, moduleVersion string) string {\n\treturn fmt.Sprintf(\"%s@%s\", processCaps(moduleName), moduleVersion)\n}\n\nvar capReplacer = regexp.MustCompile(\"[A-Z]\")\n\nfunc processCaps(s string) string {\n\treturn capReplacer.ReplaceAllStringFunc(s, func(s string) string {\n\t\treturn \"!\" + strings.ToLower(s)\n\t})\n}\n\nfunc getModule(ctx context.Context, proxies []string, moduleName, moduleVersion string) (urlPrefix string, fsys fs.FS, cleanup func(), err error) {\n\tfor _, proxy := range proxies {\n\t\tu, _ := url.Parse(proxy)\n\t\tif proxy == \"direct\" {\n\t\t\turlPrefix, fsys, err = getModuleRepository(moduleName, moduleVersion)\n\t\t\tcontinue\n\t\t}\n\t\tswitch u.Scheme {\n\t\tcase \"https\", \"http\":\n\t\t\turlPrefix, fsys, cleanup, err = getModuleProxy(ctx, proxy, moduleName, moduleVersion)\n\t\tcase \"file\":\n\t\t\tp := filepath.Join(u.Path, moduleName, \"@v\", moduleVersion)\n\t\t\turlPrefix = path.Join(\"file://\", p) + \"/\"\n\t\t\tlog.WithFields(\"path\", p).Info(\"looking for go module in filesystem\")\n\t\t\tfsys = os.DirFS(p)\n\t\t}\n\t\tif fsys != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn\n}\n\n// getModuleProxy downloads a Go module zip from the given proxy and returns a filesystem view of its contents.\n// The returned cleanup function closes the underlying temp file and removes it; callers must not use the\n// returned fs.FS after calling cleanup.\nfunc getModuleProxy(ctx context.Context, proxy string, moduleName string, moduleVersion string) (moduleURL string, out fs.FS, cleanup func(), _ error) {\n\tu := fmt.Sprintf(\"%s/%s/@v/%s.zip\", proxy, moduleName, moduleVersion)\n\n\t// get the module zip\n\tlog.WithFields(\"url\", u).Info(\"downloading go module from proxy\")\n\tresp, err := http.Get(u) //nolint:gosec\n\tif err != nil {\n\t\treturn \"\", nil, nil, err\n\t}\n\tdefer func() { _ = resp.Body.Close() }()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\t// close the first response before retrying with a lowercased module name\n\t\t_ = resp.Body.Close()\n\n\t\tu = fmt.Sprintf(\"%s/%s/@v/%s.zip\", proxy, strings.ToLower(moduleName), moduleVersion)\n\n\t\t// try lowercasing it; some packages have mixed casing that really messes up the proxy\n\t\tresp, err = http.Get(u) //nolint:gosec\n\t\tif err != nil {\n\t\t\treturn \"\", nil, nil, err\n\t\t}\n\t\tdefer func() { _ = resp.Body.Close() }()\n\t\tif resp.StatusCode != http.StatusOK {\n\t\t\treturn \"\", nil, nil, fmt.Errorf(\"failed to get module zip: %s\", resp.Status)\n\t\t}\n\t}\n\n\t// stream the zip to a temp file to avoid unbounded memory usage\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn \"\", nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\ttmpFile, cleanupFile, err := td.NewFile(\"gomodule-*.zip\") //nolint:gocritic // cleanup is returned to caller, not deferred here\n\tif err != nil {\n\t\treturn \"\", nil, nil, fmt.Errorf(\"failed to create temp file for module zip: %w\", err)\n\t}\n\n\tcleanup = func() {\n\t\t_ = tmpFile.Close()\n\t\tcleanupFile()\n\t}\n\n\t// cap downloads at 500MB to prevent disk exhaustion from malicious proxies\n\tconst maxModuleZipSize = 500 * 1024 * 1024\n\tsize, err := io.Copy(tmpFile, io.LimitReader(resp.Body, maxModuleZipSize))\n\tif err != nil {\n\t\tcleanup()\n\t\treturn \"\", nil, nil, fmt.Errorf(\"failed to download module zip: %w\", err)\n\t}\n\tif size >= maxModuleZipSize {\n\t\tcleanup()\n\t\treturn \"\", nil, nil, fmt.Errorf(\"module zip exceeds %d byte size limit\", maxModuleZipSize)\n\t}\n\n\tif _, err := tmpFile.Seek(0, io.SeekStart); err != nil {\n\t\tcleanup()\n\t\treturn \"\", nil, nil, fmt.Errorf(\"failed to seek module zip: %w\", err)\n\t}\n\n\tout, err = zip.NewReader(tmpFile, size)\n\tif err != nil {\n\t\tcleanup()\n\t\treturn \"\", nil, nil, fmt.Errorf(\"failed to read module zip: %w\", err)\n\t}\n\tversionPath := findVersionPath(out, \".\")\n\tout = getSubFS(out, versionPath)\n\n\treturn u + \"#\" + versionPath + \"/\", out, cleanup, err\n}\n\nfunc findVersionPath(f fs.FS, dir string) string {\n\tlist, _ := fs.ReadDir(f, dir)\n\n\tfor _, entry := range list {\n\t\tname := entry.Name()\n\t\tif strings.Contains(name, \"@\") {\n\t\t\treturn name\n\t\t}\n\t\tfound := findVersionPath(f, path.Join(dir, name))\n\t\tif found != \"\" {\n\t\t\treturn path.Join(name, found)\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc getModuleRepository(moduleName string, moduleVersion string) (string, fs.FS, error) {\n\trepoName := moduleName\n\tparts := strings.Split(moduleName, \"/\")\n\tif len(parts) > 2 {\n\t\trepoName = fmt.Sprintf(\"%s/%s/%s\", parts[0], parts[1], parts[2])\n\t}\n\n\t// see if there's a hash and use that if so, otherwise use a tag\n\tsplitVersion := strings.Split(moduleVersion, \"-\")\n\tvar cloneRefName plumbing.ReferenceName\n\trefPath := \"\"\n\tif len(splitVersion) < 3 {\n\t\ttagName := splitVersion[0]\n\t\tcloneRefName = plumbing.NewTagReferenceName(tagName)\n\t\trefPath = \"/tags/\" + tagName\n\t}\n\n\tf := memfs.New()\n\tbuf := &bytes.Buffer{}\n\trepoURL := fmt.Sprintf(\"https://%s\", repoName)\n\n\tlog.WithFields(\"repoURL\", repoURL, \"ref\", cloneRefName).Info(\"cloning go module repository\")\n\tr, err := git.Clone(memory.NewStorage(), f, &git.CloneOptions{\n\t\tURL:           repoURL,\n\t\tReferenceName: cloneRefName,\n\t\tSingleBranch:  true,\n\t\tDepth:         1,\n\t\tProgress:      buf,\n\t})\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"%w -- %s\", err, buf.String())\n\t}\n\n\tif len(splitVersion) > 2 {\n\t\tsha := splitVersion[len(splitVersion)-1]\n\t\thash, err := r.ResolveRevision(plumbing.Revision(sha))\n\t\tif err != nil || hash == nil {\n\t\t\tlog.Tracef(\"unable to resolve hash %s: %v\", sha, err)\n\t\t} else {\n\t\t\tw, err := r.Worktree()\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"unable to get worktree, using default: %v\", err)\n\t\t\t}\n\t\t\terr = w.Checkout(&git.CheckoutOptions{\n\t\t\t\tHash: *hash,\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"unable to checkout commit, using default: %v\", err)\n\t\t\t} else {\n\t\t\t\trefPath = \"/refs/\" + hash.String()\n\t\t\t}\n\t\t}\n\t}\n\n\treturn repoURL + refPath + \"/\", billyFSAdapter{fs: f}, err\n}\n\ntype noLicensesFound struct {\n\tglob string\n}\n\nfunc (l noLicensesFound) Error() string {\n\treturn fmt.Sprintf(\"unable to find license information matching: %s\", l.glob)\n}\n\nvar _ error = (*noLicensesFound)(nil)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/licenses_test.go",
    "content": "package golang\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_LicenseSearch(t *testing.T) {\n\tctx := pkgtest.Context(t)\n\n\tloc1 := file.NewLocation(\"github.com/someorg/somename@v0.3.2/LICENSE\")\n\tloc2 := file.NewLocation(\"github.com/!cap!o!r!g/!cap!project@v4.111.5/LICENSE.txt\")\n\tloc3 := file.NewLocation(\"github.com/someorg/strangelicense@v1.2.3/LiCeNsE.tXt\")\n\n\tserver := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tbuf := &bytes.Buffer{}\n\t\turi := strings.TrimPrefix(strings.TrimSuffix(r.RequestURI, \".zip\"), \"/\")\n\n\t\tparts := strings.Split(uri, \"/@v/\")\n\t\tmodPath := parts[0]\n\t\tmodVersion := parts[1]\n\n\t\twd, err := os.Getwd()\n\t\trequire.NoError(t, err)\n\t\ttestDir := filepath.Join(wd, \"testdata\", \"licenses\", \"pkg\", \"mod\", processCaps(modPath)+\"@\"+modVersion)\n\n\t\tarchive := zip.NewWriter(buf)\n\n\t\tentries, err := os.ReadDir(testDir)\n\t\trequire.NoError(t, err)\n\t\tfor _, f := range entries {\n\t\t\t// the zip files downloaded contain a path to the repo that somewhat matches where it ends up on disk,\n\t\t\t// so prefix entries with something similar\n\t\t\twriter, err := archive.Create(path.Join(moduleDir(modPath, modVersion), f.Name()))\n\t\t\trequire.NoError(t, err)\n\t\t\tcontents, err := os.ReadFile(filepath.Join(testDir, f.Name()))\n\t\t\trequire.NoError(t, err)\n\t\t\t_, err = writer.Write(contents)\n\t\t\trequire.NoError(t, err)\n\t\t}\n\n\t\terr = archive.Close()\n\t\trequire.NoError(t, err)\n\n\t\tw.Header().Add(\"Content-Length\", fmt.Sprintf(\"%d\", buf.Len()))\n\n\t\t_, err = w.Write(buf.Bytes())\n\t\trequire.NoError(t, err)\n\t}))\n\tdefer server.Close()\n\n\twd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tlocalVendorDir := filepath.Join(wd, \"testdata\", \"licenses-vendor\")\n\n\ttests := []struct {\n\t\tname     string\n\t\tversion  string\n\t\tconfig   CatalogerConfig\n\t\texpected []pkg.License\n\t}{\n\t\t{\n\t\t\tname:    \"github.com/someorg/somename\",\n\t\t\tversion: \"v0.3.2\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            filepath.Join(wd, \"testdata\", \"licenses\", \"pkg\", \"mod\"),\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tContents:       mustContentsFromLocation(t, loc1),\n\t\t\t\tURLs:           []string{\"file://$GOPATH/pkg/mod/\" + loc1.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/CapORG/CapProject\",\n\t\t\tversion: \"v4.111.5\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            filepath.Join(wd, \"testdata\", \"licenses\", \"pkg\", \"mod\"),\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tContents:       mustContentsFromLocation(t, loc2, 23, 1105),\n\t\t\t\tURLs:           []string{\"file://$GOPATH/pkg/mod/\" + loc2.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/someorg/strangelicense\",\n\t\t\tversion: \"v1.2.3\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            filepath.Join(wd, \"testdata\", \"licenses\", \"pkg\", \"mod\"),\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tContents:       mustContentsFromLocation(t, loc3),\n\t\t\t\tURLs:           []string{\"file://$GOPATH/pkg/mod/\" + loc3.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/someorg/somename\",\n\t\t\tversion: \"v0.3.2\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchRemoteLicenses: true,\n\t\t\t\tProxies:              []string{server.URL},\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tContents:       mustContentsFromLocation(t, loc1),\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs:           []string{server.URL + \"/github.com/someorg/somename/@v/v0.3.2.zip#\" + loc1.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/CapORG/CapProject\",\n\t\t\tversion: \"v4.111.5\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchRemoteLicenses: true,\n\t\t\t\tProxies:              []string{server.URL},\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tContents:       mustContentsFromLocation(t, loc2, 23, 1105), // offset for correct scanner contents\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs:           []string{server.URL + \"/github.com/CapORG/CapProject/@v/v4.111.5.zip#\" + loc2.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/CapORG/CapProject\",\n\t\t\tversion: \"v4.111.5\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            filepath.Join(wd, \"testdata\"), // valid dir but does not find modules\n\t\t\t\tSearchRemoteLicenses:        true,\n\t\t\t\tProxies:                     []string{server.URL},\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tContents:       mustContentsFromLocation(t, loc2, 23, 1105), // offset for correct scanner contents\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs:           []string{server.URL + \"/github.com/CapORG/CapProject/@v/v4.111.5.zip#\" + loc2.RealPath},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/someorg/somename\",\n\t\t\tversion: \"v0.3.2\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalVendorLicenses: true,\n\t\t\t\tLocalVendorDir:            localVendorDir,\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tContents:       mustContentsFromLocation(t, loc1),\n\t\t\t\tURLs:           []string{\"file://$GO_VENDOR/github.com/someorg/somename/LICENSE\"},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/CapORG/CapProject\",\n\t\t\tversion: \"v4.111.5\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalVendorLicenses: true,\n\t\t\t\tLocalVendorDir:            localVendorDir,\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tContents:       mustContentsFromLocation(t, loc2, 23, 1105), // offset for correct scanner contents\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs:           []string{\"file://$GO_VENDOR/github.com/!cap!o!r!g/!cap!project/LICENSE.txt\"},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname:    \"github.com/someorg/strangelicense\",\n\t\t\tversion: \"v1.2.3\",\n\t\t\tconfig: CatalogerConfig{\n\t\t\t\tSearchLocalVendorLicenses: true,\n\t\t\t\tLocalVendorDir:            localVendorDir,\n\t\t\t},\n\t\t\texpected: []pkg.License{{\n\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\tContents:       mustContentsFromLocation(t, loc1),\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs:           []string{\"file://$GO_VENDOR/github.com/someorg/strangelicense/LiCeNsE.tXt\"},\n\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t}},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tl := newGoLicenseResolver(\"\", test.config)\n\t\t\tlics := l.getLicenses(ctx, fileresolver.Empty{}, test.name, test.version)\n\t\t\trequire.EqualValues(t, test.expected, lics)\n\t\t})\n\t}\n}\n\nfunc Test_processCaps(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"CycloneDX\",\n\t\t\texpected: \"!cyclone!d!x\",\n\t\t},\n\t\t{\n\t\t\tname:     \"Azure\",\n\t\t\texpected: \"!azure\",\n\t\t},\n\t\t{\n\t\t\tname:     \"xkcd\",\n\t\t\texpected: \"xkcd\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := processCaps(test.name)\n\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_remotesForModule(t *testing.T) {\n\tallProxies := []string{\"https://somewhere.org\", \"direct\"}\n\tdirectProxy := []string{\"direct\"}\n\n\ttests := []struct {\n\t\tmodule   string\n\t\tnoProxy  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tmodule:   \"github.com/anchore/syft\",\n\t\t\texpected: allProxies,\n\t\t},\n\t\t{\n\t\t\tmodule:   \"github.com/anchore/sbom-action\",\n\t\t\tnoProxy:  \"*/anchore/*\",\n\t\t\texpected: directProxy,\n\t\t},\n\t\t{\n\t\t\tmodule:   \"github.com/anchore/sbom-action\",\n\t\t\tnoProxy:  \"*/user/mod,*/anchore/sbom-action\",\n\t\t\texpected: directProxy,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.module, func(t *testing.T) {\n\t\t\tgot := remotesForModule(allProxies, strings.Split(test.noProxy, \",\"), test.module)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_findVersionPath(t *testing.T) {\n\tf := os.DirFS(\"testdata/zip-fs\")\n\tvp := findVersionPath(f, \".\")\n\trequire.Equal(t, \"github.com/someorg/somepkg@version\", vp)\n}\n\nfunc Test_walkDirErrors(t *testing.T) {\n\tresolver := newGoLicenseResolver(\"\", CatalogerConfig{})\n\t_, err := resolver.findLicensesInFS(context.Background(), \"somewhere\", badFS{})\n\trequire.Error(t, err)\n}\n\ntype badFS struct{}\n\nfunc (b badFS) Open(_ string) (fs.File, error) {\n\treturn nil, fmt.Errorf(\"error\")\n}\n\nvar _ fs.FS = (*badFS)(nil)\n\nfunc Test_noLocalGoModDir(t *testing.T) {\n\temptyTmp := t.TempDir()\n\n\tvalidTmp := t.TempDir()\n\trequire.NoError(t, os.MkdirAll(filepath.Join(validTmp, \"mod@ver\"), 0700|os.ModeDir))\n\tctx := pkgtest.Context(t)\n\ttests := []struct {\n\t\tname    string\n\t\tdir     string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"empty\",\n\t\t\tdir:     \"\",\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid dir\",\n\t\t\tdir:     filepath.Join(emptyTmp, \"invalid-dir\"),\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"missing mod dir\",\n\t\t\tdir:     emptyTmp,\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"valid mod dir\",\n\t\t\tdir:     validTmp,\n\t\t\twantErr: require.NoError,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := newGoLicenseResolver(\"\", CatalogerConfig{\n\t\t\t\tSearchLocalModCacheLicenses: true,\n\t\t\t\tLocalModCacheDir:            test.dir,\n\t\t\t})\n\t\t\t_, err := resolver.getLicensesFromLocal(ctx, \"mod\", \"ver\")\n\t\t\ttest.wantErr(t, err)\n\t\t})\n\t}\n}\n\nfunc mustContentsFromLocation(t *testing.T, loc file.Location, offset ...int) string {\n\tt.Helper()\n\n\tcontentsPath := \"testdata/licenses/pkg/mod/\" + loc.RealPath\n\tcontents, err := os.ReadFile(contentsPath)\n\trequire.NoErrorf(t, err, \"could not open contents for fixture at %s\", contentsPath)\n\n\tif len(offset) == 0 {\n\t\treturn string(contents)\n\t}\n\n\trequire.Equal(t, 2, len(offset), \"invalid offset provided, expected two integers: start and end\")\n\n\tstart, end := offset[0], offset[1]\n\trequire.GreaterOrEqual(t, start, 0, \"offset start must be >= 0\")\n\trequire.LessOrEqual(t, end, len(contents), \"offset end must be <= content length\")\n\trequire.LessOrEqual(t, start, end, \"offset start must be <= end\")\n\n\treturn string(contents[start:end])\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/package.go",
    "content": "package golang\n\nimport (\n\t\"runtime/debug\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc (c *goBinaryCataloger) newGoBinaryPackage(dep *debug.Module, m pkg.GolangBinaryBuildinfoEntry, licenses []pkg.License, locations ...file.Location) pkg.Package {\n\t// Similar to syft/pkg/cataloger/golang/parse_go_mod.go logic - use original path for relative replacements\n\tfinalPath := dep.Path\n\tif dep.Replace != nil {\n\t\tif strings.HasPrefix(dep.Replace.Path, \".\") || strings.HasPrefix(dep.Replace.Path, \"/\") {\n\t\t\tfinalPath = dep.Path\n\t\t} else {\n\t\t\tfinalPath = dep.Replace.Path\n\t\t}\n\t\tdep = dep.Replace\n\t}\n\n\tversion := dep.Version\n\tif version == devel {\n\t\t// this is a special case for the \"devel\" version, which is used when the module is built from source\n\t\t// and there is no vcs tag info available. In this case, we remove the placeholder to indicate\n\t\t// we don't know the version.\n\t\tversion = \"\"\n\t}\n\n\tp := pkg.Package{\n\t\tName:      finalPath,\n\t\tVersion:   version,\n\t\tLicenses:  pkg.NewLicenseSet(licenses...),\n\t\tPURL:      packageURL(finalPath, version),\n\t\tLanguage:  pkg.Go,\n\t\tType:      pkg.GoModulePkg,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newBinaryMetadata(dep *debug.Module, mainModule, goVersion, architecture string, buildSettings pkg.KeyValues, cryptoSettings, experiments []string) pkg.GolangBinaryBuildinfoEntry {\n\tif dep.Replace != nil {\n\t\tdep = dep.Replace\n\t}\n\n\treturn pkg.GolangBinaryBuildinfoEntry{\n\t\tGoCompiledVersion: goVersion,\n\t\tH1Digest:          dep.Sum,\n\t\tArchitecture:      architecture,\n\t\tBuildSettings:     buildSettings,\n\t\tMainModule:        mainModule,\n\t\tGoCryptoSettings:  cryptoSettings,\n\t\tGoExperiments:     experiments,\n\t}\n}\n\nfunc packageURL(moduleName, moduleVersion string) string {\n\t// source: https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst#golang\n\t// note: \"The version is often empty when a commit is not specified and should be the commit in most cases when available.\"\n\tif moduleName == \"\" {\n\t\treturn \"\"\n\t}\n\n\tnamespace := \"\"\n\tname := moduleName\n\n\t// golang PURLs from _modules_ are constructed as pkg:golang/<module>@version, where\n\t// the full module name often includes multiple segments including `/v#`-type versions, for example:\n\t//  pkg:golang/github.com/cli/cli/v2@2.63.0\n\t// see: https://github.com/package-url/purl-spec/issues/63\n\t// and: https://github.com/package-url/purl-spec/blob/main/types-doc/golang-definition.md#subpath-definition\n\t// by setting the namespace this way, it does not escape the slashes:\n\tlastSlash := strings.LastIndex(moduleName, \"/\")\n\tif lastSlash > 0 && lastSlash < len(moduleName)-1 {\n\t\tname = moduleName[lastSlash+1:]\n\t\tnamespace = moduleName[0:lastSlash]\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeGolang,\n\t\tnamespace,\n\t\tname,\n\t\tmoduleVersion,\n\t\tnil,\n\t\t\"\", // subpath is used to reference a specific _package_ within the module\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/package_test.go",
    "content": "package golang\n\nimport (\n\t\"runtime/debug\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"github.com/anchore/syft\",\n\t\t\t\tVersion: \"v0.1.0\",\n\t\t\t},\n\t\t\texpected: \"pkg:golang/github.com/anchore/syft@v0.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"golang short name\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"go.opencensus.io\",\n\t\t\t\tVersion: \"v0.23.0\",\n\t\t\t},\n\t\t\texpected: \"pkg:golang/go.opencensus.io@v0.23.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"golang with subpath\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"github.com/coreos/go-systemd/v22\",\n\t\t\t\tVersion: \"v22.1.0\",\n\t\t\t},\n\t\t\texpected: \"pkg:golang/github.com/coreos/go-systemd/v22@v22.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"golang with subpath deep\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"google.golang.org/genproto/googleapis/api/annotations\",\n\t\t\t},\n\t\t\texpected: \"pkg:golang/google.golang.org/genproto/googleapis/api/annotations\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, packageURL(test.pkg.Name, test.pkg.Version))\n\t\t})\n\t}\n}\n\nfunc Test_newGoBinaryPackage_relativeReplace(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tdep          *debug.Module\n\t\texpectedName string\n\t}{\n\t\t{\n\t\t\tname: \"relative replace with ../\",\n\t\t\tdep: &debug.Module{\n\t\t\t\tPath:    \"github.com/aws/aws-sdk-go-v2\",\n\t\t\t\tVersion: \"(devel)\",\n\t\t\t\tReplace: &debug.Module{\n\t\t\t\t\tPath:    \"../../\",\n\t\t\t\t\tVersion: \"(devel)\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedName: \"github.com/aws/aws-sdk-go-v2\", // should use original path, not relative\n\t\t},\n\t\t{\n\t\t\tname: \"relative replace with ./\",\n\t\t\tdep: &debug.Module{\n\t\t\t\tPath:    \"github.com/example/module\",\n\t\t\t\tVersion: \"v1.0.0\",\n\t\t\t\tReplace: &debug.Module{\n\t\t\t\t\tPath:    \"./local\",\n\t\t\t\t\tVersion: \"v0.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedName: \"github.com/example/module\", // should use original path\n\t\t},\n\t\t{\n\t\t\tname: \"absolute replace\",\n\t\t\tdep: &debug.Module{\n\t\t\t\tPath:    \"github.com/old/module\",\n\t\t\t\tVersion: \"v1.0.0\",\n\t\t\t\tReplace: &debug.Module{\n\t\t\t\t\tPath:    \"github.com/new/module\",\n\t\t\t\t\tVersion: \"v2.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedName: \"github.com/new/module\", // should use replacement path\n\t\t},\n\t\t{\n\t\t\tname: \"no replace\",\n\t\t\tdep: &debug.Module{\n\t\t\t\tPath:    \"github.com/normal/module\",\n\t\t\t\tVersion: \"v1.0.0\",\n\t\t\t},\n\t\t\texpectedName: \"github.com/normal/module\", // should use original path\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcataloger := &goBinaryCataloger{}\n\t\t\tresult := cataloger.newGoBinaryPackage(test.dep, pkg.GolangBinaryBuildinfoEntry{}, nil)\n\n\t\t\tassert.Equal(t, test.expectedName, result.Name)\n\t\t\tassert.Equal(t, pkg.Go, result.Language)\n\t\t\tassert.Equal(t, pkg.GoModulePkg, result.Type)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/parse_go_binary.go",
    "content": "package golang\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"debug/pe\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"runtime/debug\"\n\t\"slices\"\n\t\"strings\"\n\t\"time\"\n\n\t\"golang.org/x/mod/module\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/golang/internal/xcoff\"\n)\n\nconst goArch = \"GOARCH\"\n\nvar (\n\t// errUnrecognizedFormat is returned when a given executable file doesn't\n\t// appear to be in a known format, or it breaks the rules of that format,\n\t// or when there are I/O errors reading the file.\n\terrUnrecognizedFormat = errors.New(\"unrecognized file format\")\n\t// devel is used to recognize the current default version when a golang main distribution is built\n\t// https://github.com/golang/go/issues/29228 this issue has more details on the progress of being able to\n\t// inject the correct version into the main module of the build process\n\n\tknownBuildFlagPatterns = []*regexp.Regexp{\n\t\tregexp.MustCompile(`(?m)\\.[a-zA-Z0-9]*([rR]elease)?([gG]it)?([bB]uild)?[vV]er(sion)?=(\\S+/)*(?P<version>v?\\d+.\\d+.\\d+[-\\w]*)`),\n\t\tregexp.MustCompile(`(?m)\\.[a-zA-Z0-9]*([tT]ag)=(\\S+/)*(?P<version>v?\\d+.\\d+.\\d+[-\\w]*)`),\n\t}\n)\n\nconst devel = \"(devel)\"\n\ntype goBinaryCataloger struct {\n\tlicenseResolver   goLicenseResolver\n\tmainModuleVersion MainModuleVersionConfig\n}\n\nfunc newGoBinaryCataloger(opts CatalogerConfig) *goBinaryCataloger {\n\treturn &goBinaryCataloger{\n\t\tlicenseResolver:   newGoLicenseResolver(binaryCatalogerName, opts),\n\t\tmainModuleVersion: opts.MainModuleVersion,\n\t}\n}\n\n// parseGoBinary catalogs packages found in the \"buildinfo\" section of a binary built by the go compiler.\nfunc (c *goBinaryCataloger) parseGoBinary(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\tunionReader, err := unionreader.GetUnionReader(reader.ReadCloser)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer internal.CloseAndLogError(reader.ReadCloser, reader.RealPath)\n\n\tmods, errs := scanFile(reader.Location, unionReader)\n\n\tvar rels []artifact.Relationship\n\tfor _, mod := range mods {\n\t\tvar depPkgs []pkg.Package\n\t\tmainPkg, depPkgs := c.buildGoPkgInfo(ctx, resolver, reader.Location, mod, mod.arch, unionReader)\n\t\tif mainPkg != nil {\n\t\t\trels = createModuleRelationships(*mainPkg, depPkgs)\n\t\t\tpkgs = append(pkgs, *mainPkg)\n\t\t}\n\t\tpkgs = append(pkgs, depPkgs...)\n\t}\n\n\treturn pkgs, rels, errs\n}\n\nfunc createModuleRelationships(main pkg.Package, deps []pkg.Package) []artifact.Relationship {\n\tvar relationships []artifact.Relationship\n\n\tfor _, dep := range deps {\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: dep,\n\t\t\tTo:   main,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t})\n\t}\n\n\treturn relationships\n}\n\n// moduleEqual is used to deduplicate go modules especially the sub module may be identical to the main one\nfunc moduleEqual(lhs, rhs *debug.Module) bool {\n\tif lhs == rhs {\n\t\treturn true\n\t}\n\tif lhs == nil || rhs == nil {\n\t\treturn false\n\t}\n\n\tif lhs.Path != rhs.Path ||\n\t\tlhs.Version != rhs.Version ||\n\t\tlhs.Sum != rhs.Sum {\n\t\treturn false\n\t}\n\n\treturn moduleEqual(lhs.Replace, rhs.Replace)\n}\n\nvar emptyModule debug.Module\nvar moduleFromPartialPackageBuild = debug.Module{Path: \"command-line-arguments\"}\n\nfunc (c *goBinaryCataloger) buildGoPkgInfo(ctx context.Context, resolver file.Resolver, location file.Location, mod *extendedBuildInfo, arch string, reader io.ReadSeekCloser) (*pkg.Package, []pkg.Package) {\n\tif mod == nil {\n\t\treturn nil, nil\n\t}\n\n\tif missingMainModule(mod) {\n\t\tmod.Main = createMainModuleFromPath(mod)\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, dep := range mod.Deps {\n\t\tif dep == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif moduleEqual(dep, &mod.Main) {\n\t\t\tcontinue\n\t\t}\n\t\tlics := c.licenseResolver.getLicenses(ctx, resolver, dep.Path, dep.Version)\n\t\tgover, experiments := getExperimentsFromVersion(mod.GoVersion)\n\n\t\tm := newBinaryMetadata(\n\t\t\tdep,\n\t\t\tmod.Main.Path,\n\t\t\tgover,\n\t\t\tarch,\n\t\t\tnil,\n\t\t\tmod.cryptoSettings,\n\t\t\texperiments,\n\t\t)\n\n\t\tp := c.newGoBinaryPackage(\n\t\t\tdep,\n\t\t\tm,\n\t\t\tlics,\n\t\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\t\tif pkg.IsValid(&p) {\n\t\t\tpkgs = append(pkgs, p)\n\t\t}\n\t}\n\n\tif mod.Main == emptyModule {\n\t\treturn nil, pkgs\n\t}\n\n\tmain := c.makeGoMainPackage(ctx, resolver, mod, arch, location, reader)\n\n\treturn &main, pkgs\n}\n\nfunc missingMainModule(mod *extendedBuildInfo) bool {\n\tif mod.Main == emptyModule && mod.Path != \"\" {\n\t\treturn true\n\t}\n\t// special case: when invoking go build with a source file and not a package (directory) then you will\n\t// see \"command-line-arguments\" as the main module path... even though that's not the main module. In this\n\t// circumstance, we should treat the main module as missing and search for it within the dependencies.\n\treturn mod.Main == moduleFromPartialPackageBuild\n}\n\nfunc (c *goBinaryCataloger) makeGoMainPackage(ctx context.Context, resolver file.Resolver, mod *extendedBuildInfo, arch string, location file.Location, reader io.ReadSeekCloser) pkg.Package {\n\tgbs := getBuildSettings(mod.Settings)\n\tlics := c.licenseResolver.getLicenses(ctx, resolver, mod.Main.Path, mod.Main.Version)\n\tgover, experiments := getExperimentsFromVersion(mod.GoVersion)\n\n\tm := newBinaryMetadata(\n\t\t&mod.Main,\n\t\tmod.Main.Path,\n\t\tgover,\n\t\tarch,\n\t\tgbs,\n\t\tmod.cryptoSettings,\n\t\texperiments,\n\t)\n\n\tif mod.Main.Version == devel {\n\t\tversion := c.findMainModuleVersion(&m, gbs, reader)\n\n\t\tif version != \"\" {\n\t\t\t// make sure version is prefixed with v as some build systems parsed\n\t\t\t// during `findMainModuleVersion` can include incomplete semver\n\t\t\t// vx.x.x is correct\n\t\t\tversion = ensurePrefix(version, \"v\")\n\t\t}\n\t\tmod.Main.Version = version\n\t}\n\n\tmain := c.newGoBinaryPackage(\n\t\t&mod.Main,\n\t\tm,\n\t\tlics,\n\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t)\n\n\treturn main\n}\n\n// this is checking for (.L)? because at least one binary seems to have \\xA0L preceding the version string, but for some reason\n// this is unable to be matched by the regex here as \\x00\\xA0L;\n// the only thing that seems to work is to just look for version strings following both \\x00 and \\x00.L for now\nvar semverPattern = regexp.MustCompile(`(\\x00|\\x{FFFD})(.L)?(?P<version>v?(\\d+\\.\\d+\\.\\d+[-\\w]*[+\\w]*))\\x00`)\n\nfunc (c *goBinaryCataloger) findMainModuleVersion(metadata *pkg.GolangBinaryBuildinfoEntry, gbs pkg.KeyValues, reader io.ReadSeekCloser) string {\n\tvcsVersion, hasVersion := gbs.Get(\"vcs.revision\")\n\ttimestamp, hasTimestamp := gbs.Get(\"vcs.time\")\n\n\tvar ldflags, majorVersion, fullVersion string\n\tif c.mainModuleVersion.FromLDFlags && metadata != nil {\n\t\t// we've found a specific version from the ldflags! use it as the version.\n\t\t// why not combine that with the pseudo version (e.g. v1.2.3-0.20210101000000-abcdef123456)?\n\t\t// short answer: we're assuming that if a specific semver was provided in the ldflags that\n\t\t// there is a matching vcs tag to match that could be referenced. This assumption could\n\t\t// be incorrect in terms of the go.mod contents, but is not incorrect in terms of the logical\n\t\t// version of the package.\n\t\tldflags, _ = metadata.BuildSettings.Get(\"-ldflags\")\n\n\t\tmajorVersion, fullVersion = extractVersionFromLDFlags(ldflags, metadata.MainModule)\n\t\tif fullVersion != \"\" {\n\t\t\treturn fullVersion\n\t\t}\n\t}\n\n\t// guess the version from pattern matching in the binary (can result in false positives)\n\tif c.mainModuleVersion.FromContents {\n\t\t_, err := reader.Seek(0, io.SeekStart)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Trace(\"unable to seek to start of go binary reader\")\n\t\t} else {\n\t\t\tif v := extractVersionFromContents(reader); v != \"\" {\n\t\t\t\treturn v\n\t\t\t}\n\t\t}\n\t}\n\n\t// fallback to using the go standard pseudo v0.0.0 version\n\tif c.mainModuleVersion.FromBuildSettings && hasVersion && hasTimestamp {\n\t\tversion := vcsVersion\n\t\t//NOTE: err is ignored, because if parsing fails\n\t\t// we still use the empty Time{} struct to generate an empty date, like 00010101000000\n\t\t// for consistency with the pseudo-version format: https://go.dev/ref/mod#pseudo-versions\n\t\tts, _ := time.Parse(time.RFC3339, timestamp)\n\t\tif len(vcsVersion) >= 12 {\n\t\t\tversion = vcsVersion[:12]\n\t\t}\n\n\t\treturn module.PseudoVersion(majorVersion, fullVersion, ts, version)\n\t}\n\n\treturn \"\"\n}\n\nfunc extractVersionFromContents(reader io.Reader) string {\n\tmatchMetadata, err := internal.MatchNamedCaptureGroupsFromReader(semverPattern, reader)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to extract version from go binary reader\")\n\t\treturn \"\"\n\t}\n\n\tversion, ok := matchMetadata[\"version\"]\n\tif ok {\n\t\treturn version\n\t}\n\treturn \"\"\n}\n\nfunc extractVersionFromLDFlags(ldflags string, maimModule string) (majorVersion string, fullVersion string) {\n\tif ldflags == \"\" {\n\t\treturn \"\", \"\"\n\t}\n\n\tfor _, pattern := range knownBuildFlagPatterns {\n\t\tnewPattern := regexp.MustCompile(fmt.Sprintf(`(main|%s\\/[^\\s]*)%s`, strings.ReplaceAll(maimModule, \"/\", \"\\\\/\"), pattern.String()))\n\t\tgroups := internal.MatchNamedCaptureGroups(newPattern, ldflags)\n\t\tv, ok := groups[\"version\"]\n\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tfullVersion = v\n\t\tif !strings.HasPrefix(v, \"v\") {\n\t\t\tfullVersion = fmt.Sprintf(\"v%s\", v)\n\t\t}\n\t\tcomponents := strings.Split(v, \".\")\n\n\t\tif len(components) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tmajorVersion = strings.TrimPrefix(components[0], \"v\")\n\t\treturn majorVersion, fullVersion\n\t}\n\n\treturn \"\", \"\"\n}\n\nfunc getGOARCH(settings []debug.BuildSetting) string {\n\tfor _, s := range settings {\n\t\tif s.Key == goArch {\n\t\t\treturn s.Value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc getGOARCHFromBin(r io.ReaderAt) (string, error) {\n\t// Read the first bytes of the file to identify the format, then delegate to\n\t// a format-specific function to load segment and section headers.\n\tident := make([]byte, 16)\n\tif n, err := r.ReadAt(ident, 0); n < len(ident) || err != nil {\n\t\treturn \"\", fmt.Errorf(\"unrecognized file format: %w\", err)\n\t}\n\n\tvar arch string\n\tswitch {\n\tcase bytes.HasPrefix(ident, []byte(\"\\x7FELF\")):\n\t\tf, err := elf.NewFile(r)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unrecognized file format: %w\", err)\n\t\t}\n\t\tarch = f.Machine.String()\n\tcase bytes.HasPrefix(ident, []byte(\"MZ\")):\n\t\tf, err := pe.NewFile(r)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unrecognized file format: %w\", err)\n\t\t}\n\t\tarch = fmt.Sprintf(\"%d\", f.Machine)\n\tcase bytes.HasPrefix(ident, []byte(\"\\xFE\\xED\\xFA\")) || bytes.HasPrefix(ident[1:], []byte(\"\\xFA\\xED\\xFE\")):\n\t\tf, err := macho.NewFile(r)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unrecognized file format: %w\", err)\n\t\t}\n\t\tarch = f.Cpu.String()\n\tcase bytes.HasPrefix(ident, []byte{0x01, 0xDF}) || bytes.HasPrefix(ident, []byte{0x01, 0xF7}):\n\t\tf, err := xcoff.NewFile(r)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unrecognized file format: %w\", err)\n\t\t}\n\t\tarch = fmt.Sprintf(\"%d\", f.TargetMachine)\n\tdefault:\n\t\treturn \"\", errUnrecognizedFormat\n\t}\n\n\tarch = strings.Replace(arch, \"EM_\", \"\", 1)\n\tarch = strings.Replace(arch, \"Cpu\", \"\", 1)\n\tarch = strings.ToLower(arch)\n\n\treturn arch, nil\n}\n\nfunc getBuildSettings(settings []debug.BuildSetting) pkg.KeyValues {\n\tm := make(pkg.KeyValues, 0)\n\tfor _, s := range settings {\n\t\tm = append(m, pkg.KeyValue{\n\t\t\tKey:   s.Key,\n\t\t\tValue: s.Value,\n\t\t})\n\t}\n\treturn m\n}\n\nfunc getExperimentsFromVersion(version string) (string, []string) {\n\t// See: https://github.com/anchore/grype/issues/1851\n\tvar experiments []string\n\tversion, rest, ok := strings.Cut(version, \" \")\n\tif ok {\n\t\t// Assume they may add more non-version chunks in the future, so only look for \"X:\".\n\t\tfor _, chunk := range strings.Split(rest, \" \") {\n\t\t\tif strings.HasPrefix(rest, \"X:\") {\n\t\t\t\tcsv := strings.TrimPrefix(chunk, \"X:\")\n\t\t\t\texperiments = append(experiments, strings.Split(csv, \",\")...)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn version, experiments\n}\n\nfunc createMainModuleFromPath(existing *extendedBuildInfo) debug.Module {\n\t// search for a main module candidate within the dependencies\n\tvar mainModuleCandidates []debug.Module\n\tvar usedIndex int\n\tfor i, dep := range existing.Deps {\n\t\tif dep == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif dep.Version == devel {\n\t\t\tusedIndex = i\n\t\t\tmainModuleCandidates = append(mainModuleCandidates, *dep)\n\t\t}\n\t}\n\tif len(mainModuleCandidates) == 1 {\n\t\t// we need to prune the dependency from module list\n\t\texisting.Deps = slices.Delete(existing.Deps, usedIndex, usedIndex+1)\n\t\treturn mainModuleCandidates[0]\n\t}\n\n\t// otherwise craft a main module from the path (a bit of a cop out, but allows us to have a main module)\n\treturn debug.Module{\n\t\tPath:    existing.Path,\n\t\tVersion: devel,\n\t}\n}\n\nfunc ensurePrefix(s, prefix string) string {\n\tif !strings.HasPrefix(s, prefix) {\n\t\treturn prefix + s\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/parse_go_binary_test.go",
    "content": "package golang\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime/debug\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\n// make will run the default make target for the given test fixture path\nfunc runMakeTarget(t *testing.T, fixtureName string) {\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\tfixtureDir := filepath.Join(cwd, \"testdata/\", fixtureName)\n\n\tt.Logf(\"Generating Fixture in %q\", fixtureDir)\n\n\tcmd := exec.Command(\"make\")\n\tcmd.Dir = fixtureDir\n\n\tstderr, err := cmd.StderrPipe()\n\trequire.NoError(t, err)\n\n\tstdout, err := cmd.StdoutPipe()\n\trequire.NoError(t, err)\n\n\terr = cmd.Start()\n\trequire.NoError(t, err)\n\n\tshow := func(label string, reader io.ReadCloser) {\n\t\tscanner := bufio.NewScanner(reader)\n\t\tscanner.Split(bufio.ScanLines)\n\t\tfor scanner.Scan() {\n\t\t\tt.Logf(\"%s: %s\", label, scanner.Text())\n\t\t}\n\t}\n\tgo show(\"out\", stdout)\n\tgo show(\"err\", stderr)\n\n\tif err := cmd.Wait(); err != nil {\n\t\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\t\t// The program has exited with an exit code != 0\n\n\t\t\t// This works on both Unix and Windows. Although package\n\t\t\t// syscall is generally platform dependent, WaitStatus is\n\t\t\t// defined for both Unix and Windows and in both cases has\n\t\t\t// an ExitStatus() method with the same signature.\n\t\t\tif status, ok := exiterr.Sys().(syscall.WaitStatus); ok {\n\t\t\t\tif status.ExitStatus() != 0 {\n\t\t\t\t\tt.Fatalf(\"failed to generate fixture: rc=%d\", status.ExitStatus())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tt.Fatalf(\"unable to get generate fixture result: %+v\", err)\n\t\t}\n\t}\n}\n\nfunc Test_getGOARCHFromBin(t *testing.T) {\n\trunMakeTarget(t, \"archs\")\n\n\ttests := []struct {\n\t\tname     string\n\t\tfilepath string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"pe\",\n\t\t\tfilepath: \"testdata/archs/binaries/hello-win-amd64\",\n\t\t\t// see: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types\n\t\t\texpected: strconv.Itoa(0x8664),\n\t\t},\n\t\t{\n\t\t\tname:     \"elf-ppc64\",\n\t\t\tfilepath: \"testdata/archs/binaries/hello-linux-ppc64le\",\n\t\t\texpected: \"ppc64\",\n\t\t},\n\t\t{\n\t\t\tname:     \"mach-o-arm64\",\n\t\t\tfilepath: \"testdata/archs/binaries/hello-mach-o-arm64\",\n\t\t\texpected: \"arm64\",\n\t\t},\n\t\t{\n\t\t\tname:     \"linux-arm\",\n\t\t\tfilepath: \"testdata/archs/binaries/hello-linux-arm\",\n\t\t\texpected: \"arm\",\n\t\t},\n\t\t{\n\t\t\tname:     \"xcoff-32bit\",\n\t\t\tfilepath: \"internal/xcoff/testdata/gcc-ppc32-aix-dwarf2-exec\",\n\t\t\texpected: strconv.Itoa(0x1DF),\n\t\t},\n\t\t{\n\t\t\tname:     \"xcoff-64bit\",\n\t\t\tfilepath: \"internal/xcoff/testdata/gcc-ppc64-aix-dwarf2-exec\",\n\t\t\texpected: strconv.Itoa(0x1F7),\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tf, err := os.Open(tt.filepath)\n\t\trequire.NoError(t, err)\n\t\tarch, err := getGOARCHFromBin(f)\n\t\trequire.NoError(t, err, \"test name: %s\", tt.name)\n\t\tassert.Equal(t, tt.expected, arch)\n\t}\n\n}\n\nfunc TestBuildGoPkgInfo(t *testing.T) {\n\tconst (\n\t\tgoCompiledVersion = \"1.18\"\n\t\tarchDetails       = \"amd64\"\n\t)\n\n\tdefaultBuildSettings := []pkg.KeyValue{\n\t\t{\n\t\t\tKey:   \"GOARCH\",\n\t\t\tValue: \"amd64\",\n\t\t},\n\t\t{\n\t\t\tKey:   \"GOOS\",\n\t\t\tValue: \"darwin\",\n\t\t},\n\t\t{\n\t\t\tKey:   \"GOAMD64\",\n\t\t\tValue: \"v1\",\n\t\t},\n\t}\n\n\tunmodifiedMain := pkg.Package{\n\t\tName:     \"github.com/anchore/syft\",\n\t\tLanguage: pkg.Go,\n\t\tType:     pkg.GoModulePkg,\n\t\tVersion:  \"\", // this was (devel) but we cleared it explicitly\n\t\tPURL:     \"pkg:golang/github.com/anchore/syft\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\tfile.Coordinates{\n\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t},\n\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\tArchitecture:      archDetails,\n\t\t\tBuildSettings:     defaultBuildSettings,\n\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname          string\n\t\tmod           *extendedBuildInfo\n\t\texpected      []pkg.Package\n\t\tcfg           *CatalogerConfig\n\t\tbinaryContent string\n\t}{\n\t\t{\n\t\t\tname: \"package without name\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath: \"github.com/adrg/xdg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"\",\n\t\t\t\t\t\t\tVersion: \"v0.2.1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           \"\",\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/adrg/xdg\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/adrg/xdg\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"buildGoPkgInfo parses a blank mod and returns no packages\",\n\t\t\tmod:      &extendedBuildInfo{BuildInfo: &debug.BuildInfo{}, cryptoSettings: nil, arch: \"\"},\n\t\t\texpected: []pkg.Package(nil),\n\t\t},\n\t\t{\n\t\t\tname: \"parse a mod without main module\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"github.com/adrg/xdg\",\n\t\t\t\t\t\t\tVersion: \"v0.2.1\",\n\t\t\t\t\t\t\tSum:     \"h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/adrg/xdg\",\n\t\t\t\t\tVersion:  \"v0.2.1\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/adrg/xdg@v0.2.1\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a mod with path but no main module\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tPath: \"github.com/a/b/c\",\n\t\t\t\t},\n\t\t\t\tcryptoSettings: []string{\"boringcrypto + fips\"},\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/a/b/c\",\n\t\t\t\t\tVersion:  \"\", // this was (devel) but we cleared it explicitly\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/a/b/c\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"\",\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule:       \"github.com/a/b/c\",\n\t\t\t\t\t\tGoCryptoSettings: []string{\"boringcrypto + fips\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a mod without packages\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{unmodifiedMain},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel pseudo version and ldflags exists (but contains no version)\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"vcs.revision\", Value: \"41bc6bb410352845f22766e27dd48ba93aa825a4\"},\n\t\t\t\t\t\t{Key: \"vcs.time\", Value: \"2022-10-14T19:54:57Z\"},\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X blah=foobar`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.0.0-20221014195457-41bc6bb41035\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.0.0-20221014195457-41bc6bb41035\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.revision\",\n\t\t\t\t\t\t\t\tValue: \"41bc6bb410352845f22766e27dd48ba93aa825a4\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.time\",\n\t\t\t\t\t\t\t\tValue: \"2022-10-14T19:54:57Z\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X blah=foobar`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel version with one from ldflags with vcs. build settings\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"vcs.revision\", Value: \"41bc6bb410352845f22766e27dd48ba93aa825a4\"},\n\t\t\t\t\t\t{Key: \"vcs.time\", Value: \"2022-10-14T19:54:57Z\"},\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X github.com/anchore/syft/internal/version.version=0.79.0`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.79.0\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.79.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.revision\",\n\t\t\t\t\t\t\t\tValue: \"41bc6bb410352845f22766e27dd48ba93aa825a4\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.time\",\n\t\t\t\t\t\t\t\tValue: \"2022-10-14T19:54:57Z\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X github.com/anchore/syft/internal/version.version=0.79.0`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel version with one from ldflags without any vcs. build settings\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X github.com/anchore/syft/internal/version.version=0.79.0`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.79.0\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.79.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X github.com/anchore/syft/internal/version.version=0.79.0`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel version with one from ldflags main.version without any vcs. build settings\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X main.version=0.79.0`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.79.0\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.79.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X main.version=0.79.0`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel version with one from ldflags main.Version without any vcs. build settings\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X main.Version=0.79.0`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.79.0\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.79.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X main.Version=0.79.0`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel version with a pseudo version\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"vcs.revision\", Value: \"41bc6bb410352845f22766e27dd48ba93aa825a4\"},\n\t\t\t\t\t\t{Key: \"vcs.time\", Value: \"2022-10-14T19:54:57Z\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v0.0.0-20221014195457-41bc6bb41035\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v0.0.0-20221014195457-41bc6bb41035\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.revision\",\n\t\t\t\t\t\t\t\tValue: \"41bc6bb410352845f22766e27dd48ba93aa825a4\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.time\",\n\t\t\t\t\t\t\t\tValue: \"2022-10-14T19:54:57Z\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a populated mod string and returns packages but no source info\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"github.com/adrg/xdg\",\n\t\t\t\t\t\t\tVersion: \"v0.2.1\",\n\t\t\t\t\t\t\tSum:     \"h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"github.com/anchore/client-go\",\n\t\t\t\t\t\t\tVersion: \"v0.0.0-20210222170800-9c70f9b80bcf\",\n\t\t\t\t\t\t\tSum:     \"h1:DYssiUV1pBmKqzKsm4mqXx8artqC0Q8HgZsVI3lMsAg=\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/adrg/xdg\",\n\t\t\t\t\tVersion:  \"v0.2.1\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/adrg/xdg@v0.2.1\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"h1:VSVdnH7cQ7V+B33qSJHTCRlNgra1607Q8PzEmnvb2Ic=\",\n\t\t\t\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/client-go\",\n\t\t\t\t\tVersion:  \"v0.0.0-20210222170800-9c70f9b80bcf\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/client-go@v0.0.0-20210222170800-9c70f9b80bcf\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"h1:DYssiUV1pBmKqzKsm4mqXx8artqC0Q8HgZsVI3lMsAg=\",\n\t\t\t\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tunmodifiedMain,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a populated mod string and returns packages when a replace directive exists\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"golang.org/x/sys\",\n\t\t\t\t\t\t\tVersion: \"v0.0.0-20211006194710-c8a6f5223071\",\n\t\t\t\t\t\t\tSum:     \"h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"golang.org/x/term\",\n\t\t\t\t\t\t\tVersion: \"v0.0.0-20210927222741-03fcf44c2211\",\n\t\t\t\t\t\t\tSum:     \"h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=\",\n\t\t\t\t\t\t\tReplace: &debug.Module{\n\t\t\t\t\t\t\t\tPath:    \"golang.org/x/term\",\n\t\t\t\t\t\t\t\tVersion: \"v0.0.0-20210916214954-140adaaadfaf\",\n\t\t\t\t\t\t\t\tSum:     \"h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI=\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"golang.org/x/sys\",\n\t\t\t\t\tVersion:  \"v0.0.0-20211006194710-c8a6f5223071\",\n\t\t\t\t\tPURL:     \"pkg:golang/golang.org/x/sys@v0.0.0-20211006194710-c8a6f5223071\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=\",\n\t\t\t\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t\t\t\t}},\n\t\t\t\t{\n\t\t\t\t\tName:     \"golang.org/x/term\",\n\t\t\t\t\tVersion:  \"v0.0.0-20210916214954-140adaaadfaf\",\n\t\t\t\t\tPURL:     \"pkg:golang/golang.org/x/term@v0.0.0-20210916214954-140adaaadfaf\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI=\",\n\t\t\t\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tunmodifiedMain,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a populated mod string and returns packages when a replace directive and synthetic main module 'command line arguments' exists\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"command-line-arguments\", Version: devel},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"linux\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tPath: \"command-line-arguments\",\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"example.com/mylib\",\n\t\t\t\t\t\t\tVersion: \"v0.0.0\",\n\t\t\t\t\t\t\tReplace: &debug.Module{\n\t\t\t\t\t\t\t\tPath:    \"./mylib\",\n\t\t\t\t\t\t\t\tVersion: devel,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"command-line-arguments\",\n\t\t\t\t\t\t\tVersion: devel,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"example.com/mylib\",\n\t\t\t\t\tVersion:  \"\",\n\t\t\t\t\tPURL:     \"pkg:golang/example.com/mylib\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"\",\n\t\t\t\t\t\tMainModule:        \"command-line-arguments\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"command-line-arguments\",\n\t\t\t\t\tVersion:  \"\",\n\t\t\t\t\tPURL:     \"pkg:golang/command-line-arguments\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tBuildSettings: pkg.KeyValues{\n\t\t\t\t\t\t\t{Key: \"GOARCH\", Value: \"amd64\"},\n\t\t\t\t\t\t\t{Key: \"GOOS\", Value: \"linux\"},\n\t\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tH1Digest:          \"\",\n\t\t\t\t\t\tMainModule:        \"command-line-arguments\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse main mod and replace devel with pattern from binary contents\",\n\t\t\tcfg: func() *CatalogerConfig {\n\t\t\t\tc := DefaultCatalogerConfig()\n\t\t\t\t// off by default\n\t\t\t\tassert.False(t, c.MainModuleVersion.FromContents)\n\t\t\t\t// override to true for this test\n\t\t\t\tc.MainModuleVersion.FromContents = true\n\t\t\t\treturn &c\n\t\t\t}(),\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: goCompiledVersion,\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t\t{Key: \"vcs.time\", Value: \"2022-10-14T19:54:57Z\"}, // important! missing revision\n\t\t\t\t\t\t{Key: \"-ldflags\", Value: `build\t-ldflags=\"-w -s -extldflags '-static' -X blah=foobar`},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\tbinaryContent: \"\\x00v1.0.0-somethingelse+incompatible\\x00\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v1.0.0-somethingelse+incompatible\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft@v1.0.0-somethingelse%2Bincompatible\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: goCompiledVersion,\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: archDetails,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"vcs.time\",\n\t\t\t\t\t\t\t\tValue: \"2022-10-14T19:54:57Z\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s -extldflags '-static' -X blah=foobar`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMainModule: \"github.com/anchore/syft\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a mod with go experiments\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: \"go1.22.2 X:nocoverageredesign,noallocheaders,noexectracer2\",\n\t\t\t\t\tMain:      debug.Module{Path: \"github.com/anchore/syft\", Version: \"(devel)\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcryptoSettings: nil,\n\t\t\t\tarch:           archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{{\n\t\t\t\tName:     \"github.com/anchore/syft\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\tVersion:  \"\", // this was (devel) but we cleared it explicitly\n\t\t\t\tPURL:     \"pkg:golang/github.com/anchore/syft\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t},\n\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\tBuildSettings:     defaultBuildSettings,\n\t\t\t\t\tMainModule:        \"github.com/anchore/syft\",\n\t\t\t\t\tGoExperiments:     []string{\"nocoverageredesign\", \"noallocheaders\", \"noexectracer2\"},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname: \"parse a mod from path (partial build of package)\",\n\t\t\tmod: &extendedBuildInfo{\n\t\t\t\tBuildInfo: &debug.BuildInfo{\n\t\t\t\t\tGoVersion: \"go1.22.2\",\n\t\t\t\t\tMain:      debug.Module{Path: \"command-line-arguments\"},\n\t\t\t\t\tSettings: []debug.BuildSetting{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s     -X github.com/kuskoman/logstash-exporter/config.Version=v1.7.0     -X github.com/kuskoman/logstash-exporter/config.GitCommit=db696dbcfe5a91d288d5ad44ce8ccbea97e65978     -X github.com/kuskoman/logstash-exporter/config.BuildDate=2024-07-17T08:12:17Z\"`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{Key: \"GOARCH\", Value: archDetails},\n\t\t\t\t\t\t{Key: \"GOOS\", Value: \"darwin\"},\n\t\t\t\t\t\t{Key: \"GOAMD64\", Value: \"v1\"},\n\t\t\t\t\t},\n\t\t\t\t\tDeps: []*debug.Module{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"github.com/kuskoman/something-else\",\n\t\t\t\t\t\t\tVersion: \"v1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tPath:    \"github.com/kuskoman/logstash-exporter\",\n\t\t\t\t\t\t\tVersion: \"(devel)\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tarch: archDetails,\n\t\t\t},\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/kuskoman/something-else\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v1.2.3\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/kuskoman/something-else@v1.2.3\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\t\t\t\tArchitecture:      archDetails,\n\t\t\t\t\t\tMainModule:        \"github.com/kuskoman/logstash-exporter\", // correctly attached the main module\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"github.com/kuskoman/logstash-exporter\",\n\t\t\t\t\tLanguage: pkg.Go,\n\t\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t\t\tVersion:  \"v1.7.0\",\n\t\t\t\t\tPURL:     \"pkg:golang/github.com/kuskoman/logstash-exporter@v1.7.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\t\t\t\tBuildSettings: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"-ldflags\",\n\t\t\t\t\t\t\t\tValue: `build\t-ldflags=\"-w -s     -X github.com/kuskoman/logstash-exporter/config.Version=v1.7.0     -X github.com/kuskoman/logstash-exporter/config.GitCommit=db696dbcfe5a91d288d5ad44ce8ccbea97e65978     -X github.com/kuskoman/logstash-exporter/config.BuildDate=2024-07-17T08:12:17Z\"`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOARCH\",\n\t\t\t\t\t\t\t\tValue: \"amd64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOOS\",\n\t\t\t\t\t\t\t\tValue: \"darwin\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"GOAMD64\",\n\t\t\t\t\t\t\t\tValue: \"v1\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tArchitecture: archDetails,\n\t\t\t\t\t\tMainModule:   \"github.com/kuskoman/logstash-exporter\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfor i := range test.expected {\n\t\t\t\tp := &test.expected[i]\n\t\t\t\tp.SetID()\n\t\t\t}\n\t\t\tlocation := file.NewLocationFromCoordinates(\n\t\t\t\tfile.Coordinates{\n\t\t\t\t\tRealPath:     \"/a-path\",\n\t\t\t\t\tFileSystemID: \"layer-id\",\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tif test.cfg == nil {\n\t\t\t\tc := DefaultCatalogerConfig()\n\t\t\t\ttest.cfg = &c\n\t\t\t}\n\n\t\t\tc := newGoBinaryCataloger(*test.cfg)\n\t\t\treader, err := unionreader.GetUnionReader(io.NopCloser(strings.NewReader(test.binaryContent)))\n\t\t\trequire.NoError(t, err)\n\t\t\tmainPkg, pkgs := c.buildGoPkgInfo(context.Background(), fileresolver.Empty{}, location, test.mod, test.mod.arch, reader)\n\t\t\tif mainPkg != nil {\n\t\t\t\tpkgs = append(pkgs, *mainPkg)\n\t\t\t}\n\t\t\trequire.Len(t, pkgs, len(test.expected))\n\t\t\tfor i, p := range pkgs {\n\t\t\t\tpkgtest.AssertPackagesEqual(t, test.expected[i], p)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_extractVersionFromLDFlags(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tmainModule       string\n\t\tldflags          string\n\t\twantMajorVersion string\n\t\twantFullVersion  string\n\t}{\n\t\t{\n\t\t\tname:    \"empty ldflags\",\n\t\t\tldflags: \"\",\n\t\t},\n\t\t{\n\t\t\tname:             \"syft ldflags\",\n\t\t\tmainModule:       \"github.com/anchore/syft\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-w -s -extldflags '-static' -X github.com/anchore/syft/internal/version.version=0.79.0 -X github.com/anchore/syft/internal/version.gitCommit=b2b332e8b2b66af0905e98b54ebd713a922be1a8 -X github.com/anchore/syft/internal/version.buildDate=2023-04-21T16:20:25Z -X github.com/anchore/syft/internal/version.gitDescription=v0.79.0 \"`,\n\t\t\twantMajorVersion: \"0\",\n\t\t\twantFullVersion:  \"v0.79.0\",\n\t\t},\n\t\t{\n\t\t\tname:       \"kubectl ldflags\",\n\t\t\tmainModule: \"k8s.io/kubernetes/vendor/k8s.io/client-go\",\n\t\t\tldflags: `\tbuild\t-asmflags=all=-trimpath=/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes\n\tbuild\t-compiler=gc\n\tbuild\t-gcflags=\"all=-trimpath=/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes \"\n\tbuild\t-ldflags=\"all=-X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.buildDate=2023-04-12T12:16:51Z' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.buildDate=2023-04-12T12:16:51Z' -X 'k8s.io/client-go/pkg/version.buildDate=2023-04-12T12:16:51Z' -X 'k8s.io/component-base/version.buildDate=2023-04-12T12:16:51Z' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitCommit=a1a87a0a2bcd605820920c6b0e618a8ab7d117d4' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitCommit=a1a87a0a2bcd605820920c6b0e618a8ab7d117d4' -X 'k8s.io/client-go/pkg/version.gitCommit=a1a87a0a2bcd605820920c6b0e618a8ab7d117d4' -X 'k8s.io/component-base/version.gitCommit=a1a87a0a2bcd605820920c6b0e618a8ab7d117d4' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitTreeState=clean' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitTreeState=clean' -X 'k8s.io/client-go/pkg/version.gitTreeState=clean' -X 'k8s.io/component-base/version.gitTreeState=clean' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitVersion=v1.25.9' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitVersion=v1.25.9' -X 'k8s.io/client-go/pkg/version.gitVersion=v1.25.9' -X 'k8s.io/component-base/version.gitVersion=v1.25.9' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMajor=1' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMajor=1' -X 'k8s.io/client-go/pkg/version.gitMajor=1' -X 'k8s.io/component-base/version.gitMajor=1' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMinor=25' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMinor=25' -X 'k8s.io/client-go/pkg/version.gitMinor=25' -X 'k8s.io/component-base/version.gitMinor=25'  -s -w\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.25.9\",\n\t\t},\n\t\t{\n\t\t\tname:             \"nerdctl ldflags\",\n\t\t\tmainModule:       \"github.com/containerd/nerdctl\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-s -w -X github.com/containerd/nerdctl/pkg/version.Version=v1.3.1 -X github.com/containerd/nerdctl/pkg/version.Revision=b224b280ff3086516763c7335fc0e0997aca617a\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.3.1\",\n\t\t},\n\t\t{\n\t\t\tname:             \"limactl ldflags\",\n\t\t\tmainModule:       \"github.com/lima-vm/lima\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-s -w -X github.com/lima-vm/lima/pkg/version.Version=v0.15.1\"`,\n\t\t\twantMajorVersion: \"0\",\n\t\t\twantFullVersion:  \"v0.15.1\",\n\t\t},\n\t\t{\n\t\t\tname:             \"terraform ldflags\",\n\t\t\tmainModule:       \"github.com/hashicorp/terraform\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-w -s -X 'github.com/hashicorp/terraform/version.Version=1.4.6' -X 'github.com/hashicorp/terraform/version.Prerelease='\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.4.6\",\n\t\t},\n\t\t{\n\t\t\tname:       \"kube-apiserver ldflags\",\n\t\t\tmainModule: \"k8s.io/kubernetes/vendor/k8s.io/client-go\",\n\t\t\tldflags: `\tbuild\t-asmflags=all=-trimpath=/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes\n\tbuild\t-buildmode=exe\n\tbuild\t-compiler=gc\n\tbuild\t-gcflags=\"all=-trimpath=/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes \"\n\tbuild\t-ldflags=\"all=-X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.buildDate=2023-04-14T13:14:42Z' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.buildDate=2023-04-14T13:14:42Z' -X 'k8s.io/client-go/pkg/version.buildDate=2023-04-14T13:14:42Z' -X 'k8s.io/component-base/version.buildDate=2023-04-14T13:14:42Z' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitCommit=4c9411232e10168d7b050c49a1b59f6df9d7ea4b' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitCommit=4c9411232e10168d7b050c49a1b59f6df9d7ea4b' -X 'k8s.io/client-go/pkg/version.gitCommit=4c9411232e10168d7b050c49a1b59f6df9d7ea4b' -X 'k8s.io/component-base/version.gitCommit=4c9411232e10168d7b050c49a1b59f6df9d7ea4b' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitTreeState=clean' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitTreeState=clean' -X 'k8s.io/client-go/pkg/version.gitTreeState=clean' -X 'k8s.io/component-base/version.gitTreeState=clean' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitVersion=v1.27.1' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitVersion=v1.27.1' -X 'k8s.io/client-go/pkg/version.gitVersion=v1.27.1' -X 'k8s.io/component-base/version.gitVersion=v1.27.1' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMajor=1' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMajor=1' -X 'k8s.io/client-go/pkg/version.gitMajor=1' -X 'k8s.io/component-base/version.gitMajor=1' -X 'k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMinor=27' -X 'k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMinor=27' -X 'k8s.io/client-go/pkg/version.gitMinor=27' -X 'k8s.io/component-base/version.gitMinor=27'  -s -w\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.27.1\",\n\t\t},\n\t\t{\n\t\t\tname:       \"prometheus ldflags\",\n\t\t\tmainModule: \"github.com/prometheus/common\",\n\t\t\tldflags: `\tbuild\t-ldflags=\"-X github.com/prometheus/common/version.Version=2.44.0 -X github.com/prometheus/common/version.Revision=1ac5131f698ebc60f13fe2727f89b115a41f6558 -X github.com/prometheus/common/version.Branch=HEAD -X github.com/prometheus/common/version.BuildUser=root@739e8181c5db -X github.com/prometheus/common/version.BuildDate=20230514-06:18:11  -extldflags '-static'\"\n\tbuild\t-tags=netgo,builtinassets,stringlabels`,\n\t\t\twantMajorVersion: \"2\",\n\t\t\twantFullVersion:  \"v2.44.0\",\n\t\t},\n\t\t{\n\t\t\tname:       \"influxdb ldflags\",\n\t\t\tmainModule: \"github.com/influxdata/influxdb-client-go/v2\",\n\t\t\tldflags: `\tbuild\t-ldflags=\"-s -w -X main.version=v2.7.1 -X main.commit=407fa622e9 -X main.date=2023-04-28T13:24:27Z -linkmode=external -extld=/musl/x86_64/bin/musl-gcc -extldflags '-fno-PIC -static-pie -Wl,-z,stack-size=8388608'\"\n\tbuild\t-tags=assets,sqlite_foreign_keys,sqlite_json,static_build,noasm`,\n\t\t\twantMajorVersion: \"2\",\n\t\t\twantFullVersion:  \"v2.7.1\",\n\t\t},\n\t\t{\n\t\t\tname:             \"gitea ldflags\",\n\t\t\tmainModule:       \"code.gitea.io/gitea\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\" -X \\\"main.MakeVersion=GNU Make 4.1\\\" -X \\\"main.Version=1.19.3\\\" -X \\\"main.Tags=bindata sqlite sqlite_unlock_notify\\\" \"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.19.3\",\n\t\t},\n\t\t{\n\t\t\tname:             \"docker sbom cli ldflags\",\n\t\t\tmainModule:       \"github.com/docker/sbom-cli-plugin\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-w -s -extldflags '-static' -X github.com/docker/sbom-cli-plugin/internal/version.version=0.6.1-SNAPSHOT-02cf1c8 -X github.com/docker/sbom-cli-plugin/internal/version.gitCommit=02cf1c888ad6662109ac6e3be618392514a56316 -X github.com/docker/sbom-cli-plugin/internal/version.gitDescription=v0.6.1-dirty \"`,\n\t\t\twantMajorVersion: \"0\",\n\t\t\twantFullVersion:  \"v0.6.1-SNAPSHOT-02cf1c8\",\n\t\t},\n\t\t{\n\t\t\tname:             \"docker scout ldflags\",\n\t\t\tmainModule:       \"github.com/docker/scout-cli-plugin\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-w -s -extldflags '-static' -X github.com/docker/scout-cli-plugin/internal.version=0.10.0 \"`,\n\t\t\twantMajorVersion: \"0\",\n\t\t\twantFullVersion:  \"v0.10.0\",\n\t\t},\n\t\t{\n\t\t\tname:             \"influx telegraf ldflags\",\n\t\t\tmainModule:       \"github.com/influxdata/telegraf\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-w -s -X github.com/influxdata/telegraf/internal.Commit=a3a884a1 -X github.com/influxdata/telegraf/internal.Branch=HEAD -X github.com/influxdata/telegraf/internal.Version=1.26.2\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.26.2\",\n\t\t},\n\t\t{\n\t\t\tname:             \"argocd ldflags\",\n\t\t\tmainModule:       \"github.com/argoproj/argo-cd/v2\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-X github.com/argoproj/argo-cd/v2/common.version=2.7.2 -X github.com/argoproj/argo-cd/v2/common.buildDate=2023-05-12T14:06:49Z -X github.com/argoproj/argo-cd/v2/common.gitCommit=cbee7e6011407ed2d1066c482db74e97e0cc6bdb -X github.com/argoproj/argo-cd/v2/common.gitTreeState=clean -X github.com/argoproj/argo-cd/v2/common.kubectlVersion=v0.24.2 -extldflags=\\\"-static\\\"\"`,\n\t\t\twantMajorVersion: \"2\",\n\t\t\twantFullVersion:  \"v2.7.2\",\n\t\t},\n\t\t{\n\t\t\tname:             \"kustomize ldflags\",\n\t\t\tmainModule:       \"sigs.k8s.io/kustomize/api\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-s -X sigs.k8s.io/kustomize/api/provenance.version=kustomize/v4.5.7 -X sigs.k8s.io/kustomize/api/provenance.gitCommit=56d82a8378dfc8dc3b3b1085e5a6e67b82966bd7 -X sigs.k8s.io/kustomize/api/provenance.buildDate=2022-08-02T16:35:54Z \"`,\n\t\t\twantMajorVersion: \"4\",\n\t\t\twantFullVersion:  \"v4.5.7\",\n\t\t},\n\t\t{\n\t\t\tname:             \"TiDB 7.5.0 ldflags\",\n\t\t\tmainModule:       \"github.com/pingcap/tidb\",\n\t\t\tldflags:          `build\t-ldflags=\"-X \\\"github.com/pingcap/tidb/pkg/parser/mysql.TiDBReleaseVersion=v7.5.0\\\" -X \\\"github.com/pingcap/tidb/pkg/util/versioninfo.TiDBBuildTS=2023-11-24 08:51:04\\\" -X \\\"github.com/pingcap/tidb/pkg/util/versioninfo.TiDBGitHash=069631e2ecfedc000ffb92c67207bea81380f020\\\" -X \\\"github.com/pingcap/tidb/pkg/util/versioninfo.TiDBGitBranch=heads/refs/tags/v7.5.0\\\" -X \\\"github.com/pingcap/tidb/pkg/util/versioninfo.TiDBEdition=Community\\\" \"`,\n\t\t\twantMajorVersion: \"7\",\n\t\t\twantFullVersion:  \"v7.5.0\",\n\t\t},\n\t\t{\n\t\t\tname:             \"TiDB 6.1.7 ldflags\",\n\t\t\tmainModule:       \"github.com/pingcap/tidb\",\n\t\t\tldflags:          `build\t-ldflags=\"-X \\\"github.com/pingcap/tidb/parser/mysql.TiDBReleaseVersion=v6.1.7\\\" -X \\\"github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS=2023-07-04 12:06:03\\\" -X \\\"github.com/pingcap/tidb/util/versioninfo.TiDBGitHash=613ecc5f731b2843e1d53a43915e2cd8da795936\\\" -X \\\"github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch=heads/refs/tags/v6.1.7\\\" -X \\\"github.com/pingcap/tidb/util/versioninfo.TiDBEdition=Community\\\" \"`,\n\t\t\twantMajorVersion: \"6\",\n\t\t\twantFullVersion:  \"v6.1.7\",\n\t\t},\n\t\t{\n\t\t\tname:             \"logstash-exporter\",\n\t\t\tldflags:          `build\t-ldflags=\"-w -s     -X github.com/kuskoman/logstash-exporter/config.Version=v1.7.0     -X github.com/kuskoman/logstash-exporter/config.GitCommit=db696dbcfe5a91d288d5ad44ce8ccbea97e65978     -X github.com/kuskoman/logstash-exporter/config.BuildDate=2024-07-17T08:12:17Z\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.7.0\",\n\t\t},\n\t\t//////////////////////////////////////////////////////////////////\n\t\t// negative cases\n\t\t{\n\t\t\tname:       \"hugo ldflags\",\n\t\t\tmainModule: \"github.com/gohugoio/hugo\",\n\t\t\tldflags:    `\tbuild\t-ldflags=\"-s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio\"`,\n\t\t},\n\t\t{\n\t\t\tname:       \"ghostunnel ldflags\",\n\t\t\tmainModule: \"github.com/ghostunnel/ghostunnel\",\n\t\t\tldflags:    `\tbuild\t-ldflags=\"-X main.version=77d9aaa\"`,\n\t\t},\n\t\t{\n\t\t\tname:       \"opa ldflags\",\n\t\t\tmainModule: \"github.com/open-policy-agent/opa\",\n\t\t\tldflags:    `build\t-ldflags=\" -X github.com/open-policy-agent/opa/version.Hostname=9549178459bc\"`,\n\t\t},\n\t\t///////////////////////////////////////////////////////////////////\n\t\t// trickier cases\n\t\t{\n\t\t\tname:             \"macvlan plugin for cri-o ldflags\",\n\t\t\tmainModule:       \"github.com/containernetworking/plugins\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-extldflags -static -X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=v1.2.0\"`,\n\t\t\twantMajorVersion: \"1\",\n\t\t\twantFullVersion:  \"v1.2.0\",\n\t\t},\n\t\t{\n\t\t\tname:             \"coder ldflags\",\n\t\t\tmainModule:       \"github.com/coder/coder\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-s -w -X 'github.com/coder/coder/buildinfo.tag=0.23.4'\"`,\n\t\t\twantMajorVersion: \"0\",\n\t\t\twantFullVersion:  \"v0.23.4\",\n\t\t},\n\t\t{\n\t\t\tname:             \"hypothetical multiple versions in ldflags\",\n\t\t\tmainModule:       \"github.com/foo/baz\",\n\t\t\tldflags:          `\tbuild\t-ldflags=\"-extldflags -static -X github.com/foo/bar/buildversion.BuildVersion=v1.2.0 -X github.com/foo/baz/buildversion.BuildVersion=v2.4.5\"`,\n\t\t\twantMajorVersion: \"2\",\n\t\t\twantFullVersion:  \"v2.4.5\",\n\t\t},\n\t\t///////////////////////////////////////////////////////////////////\n\t\t// don't know how to handle these... yet\n\t\t//{\n\t\t//\t// package name: pkgName: \"github.com/krakendio/krakend-ce/v2\",\n\t\t//\tname:             \"krakenD ldflags\",\n\t\t//\tldflags:          `\tbuild\t-ldflags=\"-X github.com/luraproject/lura/v2/core.KrakendVersion=2.3.2 -X github.com/luraproject/lura/v2/core.GoVersion=1.20.4 -X github.com/luraproject/lura/v2/core.GlibcVersion=GLIBC-2.31_(debian-11) \"`,\n\t\t//\twantMajorVersion: \"2.3.2\",\n\t\t//\twantFullVersion:  \"v2.3.2\",\n\t\t//},\n\t\t//{\n\t\t//\t// package name: pkgName: \"github.com/krakendio/krakend-ce/v2\",\n\t\t//\tname:             \"krakenD ldflags -- answer embedded in the middle\",\n\t\t//\tldflags:          `\tbuild\t-ldflags=\" -X github.com/luraproject/lura/v2/core.GoVersion=1.20.4 -X github.com/luraproject/lura/v2/core.KrakendVersion=2.3.2 -X github.com/luraproject/lura/v2/core.GlibcVersion=GLIBC-2.31_(debian-11) \"`,\n\t\t//\twantMajorVersion: \"2.3.2\",\n\t\t//\twantFullVersion:  \"v2.3.2\",\n\t\t//},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotMajorVersion, gotFullVersion := extractVersionFromLDFlags(tt.ldflags, tt.mainModule)\n\t\t\tassert.Equal(t, tt.wantMajorVersion, gotMajorVersion, \"unexpected major version\")\n\t\t\tassert.Equal(t, tt.wantFullVersion, gotFullVersion, \"unexpected full version\")\n\t\t})\n\t}\n}\n\nfunc Test_extractVersionFromContents(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcontents io.Reader\n\t\twant     string\n\t}{\n\t\t{\n\t\t\tname:     \"empty string on error\",\n\t\t\tcontents: &alwaysErrorReader{},\n\t\t\twant:     \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty string on empty reader\",\n\t\t\tcontents: bytes.NewReader([]byte{}),\n\t\t\twant:     \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"null-byte delimited semver\",\n\t\t\tcontents: strings.NewReader(\"\\x001.2.3\\x00\"),\n\t\t\twant:     \"1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname:     \"null-byte delimited semver with v prefix\",\n\t\t\tcontents: strings.NewReader(\"\\x00v1.2.3\\x00\"),\n\t\t\twant:     \"v1.2.3\",\n\t\t},\n\t\t{\n\t\t\t// 01a0bfc8: 0e74 5a3b 0000 a04c 7631 2e39 2e35 0000  .tZ;...Lv1.9.5.. from nginx-ingress-controller\n\t\t\t// at /nginx-ingress-controller in registry.k8s.io/ingress-nginx/controller:v1.9.5\n\t\t\t// digest: sha256:b3aba22b1da80e7acfc52b115cae1d4c687172cbf2b742d5b502419c25ff340e\n\t\t\t// TODO: eventually use something for managing snippets, similar to what's used with binary classifier tests\n\t\t\tname:     \"null byte, then random byte, then L then semver\",\n\t\t\tcontents: strings.NewReader(\"\\x0e\\x74\\x5a\\x3b\\x00\\x00\\xa0\\x4cv1.9.5\\x00\\x00\"),\n\t\t\twant:     \"v1.9.5\",\n\t\t},\n\t\t{\n\t\t\t// 06168a34: f98f b0be 332e 312e 3200 0000 636f 6d74  ....3.1.2...comt from /usr/local/bin/traefik\n\t\t\t// in traefik:v3.1.2@sha256:3f92eba47bd4bfda91d47b72d16fef2d7ae15db61a92b2057cf0cb389f8938f6\n\t\t\t// TODO: eventually use something for managing snippets, similar to what's used with binary classifier tests\n\t\t\tname:     \"parse traefik version\",\n\t\t\tcontents: strings.NewReader(\"\\xf9\\x8f\\xb0\\xbe\\x33\\x2e\\x31\\x2e\\x32\\x00\\x00\\x00\\x63\\x6f\\x6d\\x74\"),\n\t\t\twant:     \"3.1.2\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := extractVersionFromContents(tt.contents)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\ntype alwaysErrorReader struct{}\n\nfunc (alwaysErrorReader) Read(_ []byte) (int, error) {\n\treturn 0, errors.New(\"read from always error reader\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/parse_go_mod.go",
    "content": "package golang\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"go/build\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/spf13/afero\"\n\t\"golang.org/x/mod/modfile\"\n\t\"golang.org/x/tools/go/packages\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype goModCataloger struct {\n\tusePackagesLib  bool\n\tlicenseResolver goLicenseResolver\n}\n\nfunc newGoModCataloger(opts CatalogerConfig) *goModCataloger {\n\treturn &goModCataloger{\n\t\tusePackagesLib:  opts.UsePackagesLib,\n\t\tlicenseResolver: newGoLicenseResolver(modFileCatalogerName, opts),\n\t}\n}\n\n// parseGoModFile takes a go.mod and tries to resolve and lists all packages discovered.\nfunc (c *goModCataloger) parseGoModFile(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) (pkgs []pkg.Package, relationships []artifact.Relationship, err error) {\n\tmodDir := filepath.Dir(string(reader.Location.Reference().RealPath))\n\tdigests, err := parseGoSumFile(resolver, reader)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to get go.sum: %v\", err)\n\t}\n\n\tscanRoot := \"\"\n\tif dir, ok := resolver.(*fileresolver.Directory); ok && dir != nil {\n\t\tscanRoot = dir.Chroot.Base()\n\t}\n\n\t// base case go.mod file parsing\n\tmodFile, err := c.parseModFileContents(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// source analysis using go toolchain if available\n\tvar sourceModules map[string]*packages.Module\n\tvar catalogedModules []pkg.Package\n\n\tif c.usePackagesLib {\n\t\tvar sourcePackages map[string][]pkgInfo\n\t\tvar sourceDependencies map[string][]string\n\t\tvar sourceModuleToPkg map[string]artifact.Identifiable\n\n\t\tsourcePackages, sourceModules, sourceDependencies, err = c.loadPackages(modDir, reader.Location)\n\t\tcatalogedModules, sourceModuleToPkg = c.catalogModules(ctx, scanRoot, sourcePackages, sourceModules, reader, digests)\n\t\trelationships = buildModuleRelationships(catalogedModules, sourceDependencies, sourceModuleToPkg)\n\t}\n\n\t// only use go.mod packages NOT found in source analysis\n\tgoModPackages := c.createGoModPackages(ctx, resolver, modFile, sourceModules, reader, digests)\n\tc.applyReplaceDirectives(ctx, resolver, modFile, goModPackages, reader, digests)\n\tc.applyExcludeDirectives(modFile, goModPackages)\n\n\tpkgs = c.assembleResults(catalogedModules, goModPackages)\n\n\treturn pkgs, relationships, err\n}\n\n// loadPackages uses golang.org/x/tools/go/packages to get dependency information.\nfunc (c *goModCataloger) loadPackages(modDir string, loc file.Location) (pkgs map[string][]pkgInfo, modules map[string]*packages.Module, dependencies map[string][]string, unknownErr error) {\n\tcfg := &packages.Config{\n\t\t// Mode flags control what information is loaded for each package.\n\t\t// Performance impact increases significantly with each additional flag:\n\t\t//\n\t\t// packages.NeedModule - Required for module metadata (path, version, replace directives).\n\t\t//   Essential for SBOM generation. Minimal performance impact.\n\t\t//\n\t\t// packages.NeedName - Required for package names & package Path. Minimal performance impact.\n\t\t//   Needed to identify packages and filter out standard library packages.\n\t\t//\n\t\t// packages.NeedFiles - Loads source file paths for each package.\n\t\t//   Moderate performance impact as it requires filesystem traversal.\n\t\t//   Required for license discovery.\n\t\t//\n\t\t// packages.NeedDeps - Loads the dependency graph between packages.\n\t\t//   High performance impact as it builds the complete import graph.\n\t\t//   Critical for generating accurate dependency relationships in SBOM.\n\t\t//\n\t\t// packages.NeedImports - Loads import information for each package.\n\t\t//   High performance impact, especially with large codebases.\n\t\t//   Required for building module-to-module dependency mappings.\n\t\t//\n\t\t// Adding flags like NeedTypes, NeedSyntax, or NeedTypesInfo would dramatically\n\t\t// increase memory usage and processing time (10x+ slower) but are not needed\n\t\t// for SBOM generation as we only require dependency and module metadata.\n\t\tMode:  packages.NeedModule | packages.NeedName | packages.NeedFiles | packages.NeedDeps | packages.NeedImports,\n\t\tDir:   modDir,\n\t\tTests: true,\n\t\t// disable workspace mode so that we only use the go.mod in the target directory,\n\t\t// not any parent go.work file that may exist\n\t\tEnv: append(os.Environ(), \"GOWORK=off\"),\n\t}\n\n\t// From Go documentation: \"all\" expands to all packages in the main module\n\t// and their dependencies, including dependencies needed by tests.\n\t//\n\t// The special pattern \"all\" specifies all the active modules,\n\t// first the main module and then dependencies sorted by module path.\n\t// A pattern containing \"...\" specifies the active modules whose module paths match the pattern.\n\t// On implementation we could not find a test case that differentiated between all and ...\n\t// There may be a case where ... is non inclusive so we default to all for the inclusive guarantee\n\trootPkgs, err := packages.Load(cfg, \"all\")\n\tif err != nil {\n\t\tlog.Debugf(\"error loading packages: %v\", err)\n\t}\n\n\t// Check for any errors in loading\n\tfor _, p := range rootPkgs {\n\t\tif len(p.Errors) > 0 {\n\t\t\t// Log errors but continue processing\n\t\t\tfor _, e := range p.Errors {\n\t\t\t\tlog.Debugf(\"package load error for %s: %v\", p.PkgPath, e)\n\t\t\t\tunknownErr = unknown.Append(unknownErr, loc, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// note: dependencies have already pruned local imports and only focuses on module => module dependencies\n\treturn c.visitPackages(rootPkgs, loc, unknownErr)\n}\n\ntype pkgInfo struct {\n\t// pkgPath is the import path of the package.\n\tpkgPath string\n\t// modulePath is the module path of the package.\n\tmodulePath string\n\t// pkgDir is the directory containing the package's source code.\n\tpkgDir string\n\t// moduleDir is the directory containing the module's source code.\n\tmoduleDir string\n}\n\n// visitPackages processes Go module import graphs to get all modules\nfunc (c *goModCataloger) visitPackages(\n\trootPkgs []*packages.Package,\n\tloc file.Location,\n\tuke error,\n) (pkgs map[string][]pkgInfo, modules map[string]*packages.Module, dependencies map[string][]string, unknownErr error) {\n\tmodules = make(map[string]*packages.Module)\n\t// note: packages are specific to inside the module - they do not include transitive pkgInfo\n\t// packages is used for identifying licensing documents for modules that could contain multiple licenses\n\t// dependencies cover transitive module imports; see p.Imports array in packages.Visit\n\tpkgs = make(map[string][]pkgInfo)\n\t// dependencies are module => module dependencies\n\tdependencies = make(map[string][]string)\n\t// persist unknown errs from previous parts of the catalog\n\tunknownErr = uke\n\t// closure (p *Package) bool\n\t// return bool determines whether the imports of package p are visited.\n\tpackages.Visit(rootPkgs, func(p *packages.Package) bool {\n\t\tif len(p.Errors) > 0 {\n\t\t\tfor _, err := range p.Errors {\n\t\t\t\tunknownErr = unknown.Append(unknownErr, loc, err)\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\t// skip for common causes\n\t\tif shouldSkipVisit(p) {\n\t\t\treturn false\n\t\t}\n\n\t\t// different from above; we still might want to visit imports\n\t\t// ignoring a package shouldn't end walking the tree\n\t\t// since we need to get the full picture for license discovery\n\t\t// for _, prefix := range c.config.IgnorePaths {\n\t\t//\tif strings.HasPrefix(p.PkgPath, prefix) {\n\t\t//\t\treturn c.config.IncludeIgnoredDeps\n\t\t//\t}\n\t\t//}\n\t\tpkgDir := resolvePkgDir(p)\n\t\tif pkgDir == \"\" {\n\t\t\treturn true\n\t\t}\n\n\t\tmodule := newModule(p.Module)\n\t\tif module.Dir == \"\" {\n\t\t\t// We continue processing even when module.Dir is empty because we still want to:\n\t\t\t// 1. Extract module dependencies from p.Imports for dependency graph construction\n\t\t\t// 2. Create syft packages with available metadata (name, version, etc.)\n\t\t\t// 3. Build relationships between modules even without complete filesystem info\n\t\t\t// Not having the DIR here just means that we're not going to process the licenses\n\n\t\t\t// Common causes for module.Dir being empty:\n\t\t\t// - Vendored dependencies where Go toolchain loses some module metadata\n\t\t\t// - Replace directives pointing to non-existent or inaccessible paths\n\t\t\t// A known cause is that the module is vendored, so some information is lost.\n\t\t\tisVendored := strings.Contains(pkgDir, \"/vendor/\")\n\t\t\tif !isVendored {\n\t\t\t\tlog.Debugf(\"module %s does not have dir and it's not vendored\", module.Path)\n\t\t\t}\n\t\t}\n\n\t\t// extract module dependencies\n\t\tfor _, imp := range p.Imports {\n\t\t\tif imp.Module != nil && imp.Module.Path != module.Path {\n\t\t\t\tif dependencies[module.Path] == nil {\n\t\t\t\t\tdependencies[module.Path] = []string{imp.Module.Path}\n\t\t\t\t} else {\n\t\t\t\t\tdependencies[module.Path] = append(dependencies[module.Path], imp.Module.Path)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinfo := pkgInfo{\n\t\t\tpkgPath:    p.PkgPath,\n\t\t\tmodulePath: module.Path,\n\t\t\tpkgDir:     pkgDir,\n\t\t\tmoduleDir:  module.Dir,\n\t\t}\n\t\tif !slices.Contains(pkgs[module.Path], info) { // avoid duplicates\n\t\t\tpkgs[module.Path] = append(pkgs[module.Path], info)\n\t\t}\n\t\tmodules[p.Module.Path] = module\n\n\t\treturn true\n\t}, nil)\n\treturn pkgs, modules, dependencies, unknownErr\n}\n\n// create syft packages from Go modules found by the go toolchain\nfunc (c *goModCataloger) catalogModules(\n\tctx context.Context,\n\tscanRoot string,\n\tpkgs map[string][]pkgInfo,\n\tmodules map[string]*packages.Module,\n\treader file.LocationReadCloser,\n\tdigests map[string]string,\n) ([]pkg.Package, map[string]artifact.Identifiable) {\n\tsyftPackages := make([]pkg.Package, 0)\n\tmoduleToPackage := make(map[string]artifact.Identifiable)\n\n\tfor _, m := range modules {\n\t\tif isRelativeImportOrMain(m.Path) {\n\t\t\t// relativeImport modules are already accounted for by their full module paths at other portions of syft's cataloging\n\t\t\t// example: something like ../../ found as a module for go.mod b, which is sub to go.mod a is accounted for\n\t\t\t// in another call to the goModCataloger when go.mod a is parsed\n\t\t\t// local modules that use a \"main\" heuristic, no module naming (sometimes common pre go module support)\n\t\t\t// are also not built as syft packages\n\t\t\tcontinue\n\t\t}\n\n\t\tpkgInfos := pkgs[m.Path]\n\t\tmoduleLicenses := resolveModuleLicenses(ctx, scanRoot, pkgInfos, afero.NewOsFs())\n\t\t// we do out of source lookups for module parsing\n\t\t// locations are NOT included in the SBOM because of this\n\t\tgoModulePkg := pkg.Package{\n\t\t\tName:      m.Path,\n\t\t\tVersion:   m.Version,\n\t\t\tLocations: file.NewLocationSet(reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tLicenses:  moduleLicenses,\n\t\t\tLanguage:  pkg.Go,\n\t\t\tType:      pkg.GoModulePkg,\n\t\t\tPURL:      packageURL(m.Path, m.Version),\n\t\t\tMetadata:  createSourceMetadata(digests[fmt.Sprintf(\"%s %s\", m.Path, m.Version)]),\n\t\t}\n\t\tgoModulePkg.SetID()\n\n\t\tmoduleToPackage[m.Path] = goModulePkg\n\t\tsyftPackages = append(syftPackages, goModulePkg)\n\t}\n\n\treturn syftPackages, moduleToPackage\n}\n\n// buildModuleRelationships creates artifact relationships between Go modules.\nfunc buildModuleRelationships(\n\tsyftPkgs []pkg.Package,\n\tdependencies map[string][]string,\n\tmoduleToPkg map[string]artifact.Identifiable,\n) []artifact.Relationship {\n\tvar rels []artifact.Relationship\n\tseen := make(map[string]struct{})\n\n\tfor _, fromPkg := range syftPkgs {\n\t\tfor _, dep := range dependencies[fromPkg.Name] {\n\t\t\tif dep == fromPkg.Name {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttoPkg, ok := moduleToPkg[dep]\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tkey := string(fromPkg.ID()) + string(toPkg.ID())\n\t\t\tif _, exists := seen[key]; exists {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trels = append(rels, artifact.Relationship{\n\t\t\t\tFrom: toPkg,   // dep\n\t\t\t\tTo:   fromPkg, // parent\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t\tseen[key] = struct{}{}\n\t\t}\n\t}\n\n\treturn rels\n}\n\nfunc (c *goModCataloger) parseModFileContents(reader file.LocationReadCloser) (*modfile.File, error) {\n\tcontents, err := io.ReadAll(reader) //nolint:gocritic // modfile.Parse requires []byte\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read go module: %w\", err)\n\t}\n\n\tf, err := modfile.Parse(reader.RealPath, contents, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse go module: %w\", err)\n\t}\n\n\treturn f, nil\n}\n\n// note this handles the deduplication from source by checking if the mod path exists in the sourceModules map\nfunc (c *goModCataloger) createGoModPackages(ctx context.Context, resolver file.Resolver, modFile *modfile.File, sourceModules map[string]*packages.Module, reader file.LocationReadCloser, digests map[string]string) map[string]pkg.Package {\n\tgoModPackages := make(map[string]pkg.Package)\n\n\tfor _, m := range modFile.Require {\n\t\tif sourceModules == nil || sourceModules[m.Mod.Path] == nil {\n\t\t\tlics := c.licenseResolver.getLicenses(ctx, resolver, m.Mod.Path, m.Mod.Version)\n\t\t\tgoModPkg := pkg.Package{\n\t\t\t\tName:      m.Mod.Path,\n\t\t\t\tVersion:   m.Mod.Version,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(lics...),\n\t\t\t\tLocations: file.NewLocationSet(reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\t\tPURL:      packageURL(m.Mod.Path, m.Mod.Version),\n\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\tMetadata: pkg.GolangModuleEntry{\n\t\t\t\t\tH1Digest: digests[fmt.Sprintf(\"%s %s\", m.Mod.Path, m.Mod.Version)],\n\t\t\t\t},\n\t\t\t}\n\t\t\tgoModPkg.SetID()\n\t\t\tgoModPackages[m.Mod.Path] = goModPkg\n\t\t}\n\t}\n\n\treturn goModPackages\n}\n\n// applyReplaceDirectives processes replace directives from go.mod\nfunc (c *goModCataloger) applyReplaceDirectives(ctx context.Context, resolver file.Resolver, modFile *modfile.File, goModPackages map[string]pkg.Package, reader file.LocationReadCloser, digests map[string]string) {\n\tfor _, m := range modFile.Replace {\n\t\tlics := c.licenseResolver.getLicenses(ctx, resolver, m.New.Path, m.New.Version)\n\t\tvar finalPath string\n\t\tif !strings.HasPrefix(m.New.Path, \".\") && !strings.HasPrefix(m.New.Path, \"/\") {\n\t\t\tfinalPath = m.New.Path\n\t\t\tdelete(goModPackages, m.Old.Path)\n\t\t} else {\n\t\t\tfinalPath = m.Old.Path\n\t\t}\n\t\tgoModPkg := pkg.Package{\n\t\t\tName:      finalPath,\n\t\t\tVersion:   m.New.Version,\n\t\t\tLicenses:  pkg.NewLicenseSet(lics...),\n\t\t\tLocations: file.NewLocationSet(reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tPURL:      packageURL(finalPath, m.New.Version),\n\t\t\tLanguage:  pkg.Go,\n\t\t\tType:      pkg.GoModulePkg,\n\t\t\tMetadata: pkg.GolangModuleEntry{\n\t\t\t\tH1Digest: digests[fmt.Sprintf(\"%s %s\", finalPath, m.New.Version)],\n\t\t\t},\n\t\t}\n\t\tgoModPkg.SetID()\n\t\tgoModPackages[finalPath] = goModPkg\n\t}\n}\n\nfunc (c *goModCataloger) applyExcludeDirectives(modFile *modfile.File, goModPackages map[string]pkg.Package) {\n\tfor _, m := range modFile.Exclude {\n\t\tdelete(goModPackages, m.Mod.Path)\n\t}\n}\n\nfunc (c *goModCataloger) assembleResults(catalogedPkgs []pkg.Package, goModPackages map[string]pkg.Package) []pkg.Package {\n\tpkgsSlice := make([]pkg.Package, 0)\n\n\tpkgsSlice = append(pkgsSlice, catalogedPkgs...)\n\n\tfor _, p := range goModPackages {\n\t\tpkgsSlice = append(pkgsSlice, p)\n\t}\n\n\tpkg.Sort(pkgsSlice)\n\n\treturn pkgsSlice\n}\n\nfunc parseGoSumFile(resolver file.Resolver, reader file.LocationReadCloser) (map[string]string, error) {\n\tout := map[string]string{}\n\n\tif resolver == nil {\n\t\treturn out, fmt.Errorf(\"no resolver provided\")\n\t}\n\n\tgoSumPath := strings.TrimSuffix(reader.RealPath, \".mod\") + \".sum\"\n\tgoSumLocation := resolver.RelativeFileByPath(reader.Location, goSumPath)\n\tif goSumLocation == nil {\n\t\treturn nil, fmt.Errorf(\"unable to resolve: %s\", goSumPath)\n\t}\n\tcontents, err := resolver.FileContentsByLocation(*goSumLocation)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contents, goSumLocation.AccessPath)\n\n\t// go.sum has the format like:\n\t// github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\n\t// github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=\n\t// github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=\n\tscanner := bufio.NewScanner(contents)\n\t// optionally, resize scanner's capacity for lines over 64K, see next example\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tparts := strings.Split(line, \" \")\n\t\tif len(parts) < 3 {\n\t\t\tcontinue\n\t\t}\n\t\tnameVersion := fmt.Sprintf(\"%s %s\", parts[0], parts[1])\n\t\thash := parts[2]\n\t\tout[nameVersion] = hash\n\t}\n\n\treturn out, nil\n}\n\n// createSourceMetadata creates metadata for packages found through source analysis using build.Default\nfunc createSourceMetadata(h1Digest string) pkg.GolangSourceEntry {\n\treturn pkg.GolangSourceEntry{\n\t\tH1Digest:        h1Digest,\n\t\tOperatingSystem: build.Default.GOOS,\n\t\tArchitecture:    build.Default.GOARCH,\n\t\tBuildTags:       strings.Join(build.Default.BuildTags, \",\"),\n\t\tCgoEnabled:      build.Default.CgoEnabled,\n\t}\n}\n\nfunc resolvePkgDir(p *packages.Package) string {\n\tswitch {\n\tcase len(p.GoFiles) > 0:\n\t\treturn filepath.Dir(p.GoFiles[0])\n\tcase len(p.CompiledGoFiles) > 0:\n\t\treturn filepath.Dir(p.CompiledGoFiles[0])\n\tcase len(p.OtherFiles) > 0:\n\t\treturn filepath.Dir(p.OtherFiles[0])\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc shouldSkipVisit(p *packages.Package) bool {\n\t// skip packages that don't have module info\n\tif p.Module == nil {\n\t\treturn true\n\t}\n\n\t// skip stdlib\n\tif isStdLib(p) {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// isStdLib returns true if this package is part of the Go standard library.\nfunc isStdLib(pkg *packages.Package) bool {\n\tif pkg.Name == \"unsafe\" {\n\t\t// Special case unsafe stdlib, because it does not contain go files.\n\t\treturn true\n\t}\n\tif len(pkg.GoFiles) == 0 {\n\t\treturn false\n\t}\n\tprefix := build.Default.GOROOT\n\tsep := string(filepath.Separator)\n\tif !strings.HasSuffix(prefix, sep) {\n\t\tprefix += sep\n\t}\n\treturn strings.HasPrefix(pkg.GoFiles[0], prefix)\n}\n\n// handle replace directives\nfunc newModule(mod *packages.Module) *packages.Module {\n\t// Example of a module with replace directive: \tk8s.io/kubernetes => k8s.io/kubernetes v1.11.1\n\t// {\n\t//         \"Path\": \"k8s.io/kubernetes\",\n\t//         \"Version\": \"v0.17.9\",\n\t//         \"Replace\": {\n\t//                 \"Path\": \"k8s.io/kubernetes\",\n\t//                 \"Version\": \"v1.11.1\",\n\t//                 \"Time\": \"2018-07-17T04:20:29Z\",\n\t//                 \"Dir\": \"/home/gongyuan_kubeflow_org/go/pkg/mod/k8s.io/kubernetes@v1.11.1\",\n\t//                 \"GoMod\": \"/home/gongyuan_kubeflow_org/go/pkg/mod/cache/download/k8s.io/kubernetes/@v/v1.11.1.mod\"\n\t//         },\n\t//         \"Dir\": \"/home/gongyuan_kubeflow_org/go/pkg/mod/k8s.io/kubernetes@v1.11.1\",\n\t//         \"GoMod\": \"/home/gongyuan_kubeflow_org/go/pkg/mod/cache/download/k8s.io/kubernetes/@v/v1.11.1.mod\"\n\t// }\n\t// handle replace directives\n\t// Note, we specifically want to replace version field.\n\t// Haven't confirmed, but we may also need to override the\n\t// entire struct when using replace directive with local folders.\n\ttmp := *mod\n\tif tmp.Replace != nil {\n\t\ttmp = *tmp.Replace\n\t}\n\n\treturn &tmp\n}\n\nfunc isRelativeImportOrMain(p string) bool {\n\tif p == \"main\" {\n\t\treturn true\n\t}\n\t// true for \".\", \"..\", \"./...\", \"../...\"\n\treturn build.IsLocalImport(p)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/parse_go_mod_test.go",
    "content": "package golang\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseGoMod(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/go-mod-fixtures/one-package/go.mod\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/bmatcuk/doublestar\",\n\t\t\t\t\tVersion:   \"v1.3.1\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/bmatcuk/doublestar@v1.3.1\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/one-package/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/go-mod-fixtures/relative-replace/go.mod\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/aws/aws-sdk-go-v2\",\n\t\t\t\t\tVersion:   \"\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/aws/aws-sdk-go-v2\",\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/relative-replace/go.mod\")),\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\n\t\t\tfixture: \"testdata/go-mod-fixtures/many-packages/go.mod\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/anchore/archiver/v3\",\n\t\t\t\t\tVersion:   \"v3.5.2\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/anchore/archiver/v3@v3.5.2\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/anchore/go-testutils\",\n\t\t\t\t\tVersion:   \"v0.0.0-20200624184116-66aa578126db\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/anchore/go-testutils@v0.0.0-20200624184116-66aa578126db\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/anchore/go-version\",\n\t\t\t\t\tVersion:   \"v1.2.2-0.20200701162849-18adb9c92b9b\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/anchore/go-version@v1.2.2-0.20200701162849-18adb9c92b9b\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/anchore/stereoscope\",\n\t\t\t\t\tVersion:   \"v0.0.0-20200706164556-7cf39d7f4639\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/anchore/stereoscope@v0.0.0-20200706164556-7cf39d7f4639\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/bmatcuk/doublestar\",\n\t\t\t\t\tVersion:   \"v8.8.8\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/bmatcuk/doublestar@v8.8.8\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/go-test/deep\",\n\t\t\t\t\tVersion:   \"v1.0.6\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/go-test/deep@v1.0.6\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/go-mod-fixtures/many-packages/go.mod\")),\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tc := newGoModCataloger(DefaultCatalogerConfig().WithUsePackagesLib(false))\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromFile(t, test.fixture).\n\t\t\t\tExpects(test.expected, nil).\n\t\t\t\tWithResolver(fileresolver.Empty{}).\n\t\t\t\tTestParser(t, c.parseGoModFile)\n\t\t})\n\t}\n}\n\nfunc Test_GoSumHashes(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/go-sum-hashes\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/CycloneDX/cyclonedx-go\",\n\t\t\t\t\tVersion:   \"v0.6.0\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/CycloneDX/cyclonedx-go@v0.6.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"go.mod\")),\n\t\t\t\t\tFoundBy:   \"go-module-file-cataloger\",\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata:  pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/acarl005/stripansi\",\n\t\t\t\t\tVersion:   \"v0.0.0-20180116102854-5a71ef0e047d\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/acarl005/stripansi@v0.0.0-20180116102854-5a71ef0e047d\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"go.mod\")),\n\t\t\t\t\tFoundBy:   \"go-module-file-cataloger\",\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata: pkg.GolangModuleEntry{\n\t\t\t\t\t\tH1Digest: \"h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/mgutz/ansi\",\n\t\t\t\t\tVersion:   \"v0.0.0-20200706080929-d51e80ef957d\",\n\t\t\t\t\tPURL:      \"pkg:golang/github.com/mgutz/ansi@v0.0.0-20200706080929-d51e80ef957d\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"go.mod\")),\n\t\t\t\t\tFoundBy:   \"go-module-file-cataloger\",\n\t\t\t\t\tLanguage:  pkg.Go,\n\t\t\t\t\tType:      pkg.GoModulePkg,\n\t\t\t\t\tMetadata: pkg.GolangModuleEntry{\n\t\t\t\t\t\tH1Digest: \"h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpects(test.expected, nil).\n\t\t\t\tTestCataloger(t, NewGoModuleFileCataloger(CatalogerConfig{\n\t\t\t\t\tUsePackagesLib: false,\n\t\t\t\t}))\n\t\t})\n\t}\n}\n\nfunc Test_corruptGoMod(t *testing.T) {\n\tc := NewGoModuleFileCataloger(DefaultCatalogerConfig().WithSearchRemoteLicenses(false))\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/corrupt\").\n\t\tWithError().\n\t\tTestCataloger(t, c)\n}\n\nfunc Test_parseGoSource_packageResolution(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tfixturePath      string\n\t\texpectedPkgs     []string\n\t\texpectedRels     []string\n\t\texpectedLicenses map[string][]string\n\t}{\n\t\t{\n\t\t\tname:        \"go-source with direct, transitive, and deps of transitive\",\n\t\t\tfixturePath: filepath.Join(\"internal\", \"gotestdata\", \"go-source\"),\n\t\t\texpectedPkgs: []string{\n\t\t\t\t\"anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"github.com/davecgh/go-spew @ v1.1.1 (go.mod)\",\n\t\t\t\t\"github.com/go-viper/mapstructure/v2 @ v2.2.1 (go.mod)\",\n\t\t\t\t\"github.com/google/uuid @ v1.6.0 (go.mod)\",\n\t\t\t\t\"github.com/pmezard/go-difflib @ v1.0.0 (go.mod)\",\n\t\t\t\t\"github.com/sagikazarmark/locafero @ v0.7.0 (go.mod)\",\n\t\t\t\t\"github.com/sirupsen/logrus @ v1.9.3 (go.mod)\",\n\t\t\t\t\"github.com/sourcegraph/conc @ v0.3.0 (go.mod)\",\n\t\t\t\t\"github.com/spf13/afero @ v1.12.0 (go.mod)\",\n\t\t\t\t\"github.com/spf13/cast @ v1.7.1 (go.mod)\",\n\t\t\t\t\"github.com/spf13/pflag @ v1.0.6 (go.mod)\",\n\t\t\t\t\"github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod)\",\n\t\t\t\t\"github.com/subosito/gotenv @ v1.6.0 (go.mod)\",\n\t\t\t\t\"go.uber.org/multierr @ v1.10.0 (go.mod)\",\n\t\t\t\t\"go.uber.org/zap @ v1.27.0 (go.mod)\",\n\t\t\t\t\"golang.org/x/sys @ v0.33.0 (go.mod)\",\n\t\t\t\t\"golang.org/x/text @ v0.21.0 (go.mod)\",\n\t\t\t\t\"gopkg.in/yaml.v3 @ v3.0.1 (go.mod)\",\n\t\t\t\t\"github.com/fsnotify/fsnotify @ v1.8.0 (go.mod)\",\n\t\t\t\t\"github.com/pelletier/go-toml/v2 @ v2.2.3 (go.mod)\",\n\t\t\t\t\"github.com/frankban/quicktest @ v1.14.6 (go.mod)\",\n\t\t\t\t\"github.com/google/go-cmp @ v0.6.0 (go.mod)\",\n\t\t\t\t\"github.com/kr/pretty @ v0.3.1 (go.mod)\",\n\t\t\t\t\"github.com/kr/text @ v0.2.0 (go.mod)\",\n\t\t\t\t\"github.com/rogpeppe/go-internal @ v1.9.0 (go.mod)\",\n\t\t\t\t\"go.uber.org/goleak @ v1.3.0 (go.mod)\",\n\t\t\t\t\"gopkg.in/check.v1 @ v1.0.0-20190902080502-41f04d3bba15 (go.mod)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"github.com/davecgh/go-spew @ v1.1.1 (go.mod) [dependency-of] github.com/stretchr/testify @ v1.10.0 (go.mod)\",\n\t\t\t\t\"github.com/frankban/quicktest @ v1.14.6 (go.mod) [dependency-of] github.com/spf13/cast @ v1.7.1 (go.mod)\",\n\t\t\t\t\"github.com/fsnotify/fsnotify @ v1.8.0 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/go-viper/mapstructure/v2 @ v2.2.1 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/google/go-cmp @ v0.6.0 (go.mod) [dependency-of] github.com/frankban/quicktest @ v1.14.6 (go.mod)\",\n\t\t\t\t\"github.com/google/uuid @ v1.6.0 (go.mod) [dependency-of] anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"github.com/kr/pretty @ v0.3.1 (go.mod) [dependency-of] github.com/frankban/quicktest @ v1.14.6 (go.mod)\",\n\t\t\t\t\"github.com/kr/pretty @ v0.3.1 (go.mod) [dependency-of] gopkg.in/check.v1 @ v1.0.0-20190902080502-41f04d3bba15 (go.mod)\",\n\t\t\t\t\"github.com/kr/text @ v0.2.0 (go.mod) [dependency-of] github.com/kr/pretty @ v0.3.1 (go.mod)\",\n\t\t\t\t\"github.com/pelletier/go-toml/v2 @ v2.2.3 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/pmezard/go-difflib @ v1.0.0 (go.mod) [dependency-of] github.com/stretchr/testify @ v1.10.0 (go.mod)\",\n\t\t\t\t\"github.com/rogpeppe/go-internal @ v1.9.0 (go.mod) [dependency-of] github.com/kr/pretty @ v0.3.1 (go.mod)\",\n\t\t\t\t\"github.com/sagikazarmark/locafero @ v0.7.0 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/sirupsen/logrus @ v1.9.3 (go.mod) [dependency-of] anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"github.com/sourcegraph/conc @ v0.3.0 (go.mod) [dependency-of] github.com/sagikazarmark/locafero @ v0.7.0 (go.mod)\",\n\t\t\t\t\"github.com/spf13/afero @ v1.12.0 (go.mod) [dependency-of] github.com/sagikazarmark/locafero @ v0.7.0 (go.mod)\",\n\t\t\t\t\"github.com/spf13/afero @ v1.12.0 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/spf13/cast @ v1.7.1 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/spf13/pflag @ v1.0.6 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/spf13/viper @ v1.20.1 (go.mod) [dependency-of] anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/pelletier/go-toml/v2 @ v2.2.3 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/sagikazarmark/locafero @ v0.7.0 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/sirupsen/logrus @ v1.9.3 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/sourcegraph/conc @ v0.3.0 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] github.com/subosito/gotenv @ v1.6.0 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] go.uber.org/multierr @ v1.10.0 (go.mod)\",\n\t\t\t\t\"github.com/stretchr/testify @ v1.10.0 (go.mod) [dependency-of] go.uber.org/zap @ v1.27.0 (go.mod)\",\n\t\t\t\t\"github.com/subosito/gotenv @ v1.6.0 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"go.uber.org/goleak @ v1.3.0 (go.mod) [dependency-of] go.uber.org/zap @ v1.27.0 (go.mod)\",\n\t\t\t\t\"go.uber.org/multierr @ v1.10.0 (go.mod) [dependency-of] go.uber.org/zap @ v1.27.0 (go.mod)\",\n\t\t\t\t\"go.uber.org/zap @ v1.27.0 (go.mod) [dependency-of] anchore.io/not/real @  (go.mod)\",\n\t\t\t\t\"golang.org/x/sys @ v0.33.0 (go.mod) [dependency-of] github.com/fsnotify/fsnotify @ v1.8.0 (go.mod)\",\n\t\t\t\t\"golang.org/x/sys @ v0.33.0 (go.mod) [dependency-of] github.com/sirupsen/logrus @ v1.9.3 (go.mod)\",\n\t\t\t\t\"golang.org/x/text @ v0.21.0 (go.mod) [dependency-of] github.com/spf13/afero @ v1.12.0 (go.mod)\",\n\t\t\t\t\"golang.org/x/text @ v0.21.0 (go.mod) [dependency-of] github.com/subosito/gotenv @ v1.6.0 (go.mod)\",\n\t\t\t\t\"gopkg.in/check.v1 @ v1.0.0-20190902080502-41f04d3bba15 (go.mod) [dependency-of] gopkg.in/yaml.v3 @ v3.0.1 (go.mod)\",\n\t\t\t\t\"gopkg.in/yaml.v3 @ v3.0.1 (go.mod) [dependency-of] github.com/spf13/viper @ v1.20.1 (go.mod)\",\n\t\t\t\t\"gopkg.in/yaml.v3 @ v3.0.1 (go.mod) [dependency-of] github.com/stretchr/testify @ v1.10.0 (go.mod)\",\n\t\t\t\t\"gopkg.in/yaml.v3 @ v3.0.1 (go.mod) [dependency-of] go.uber.org/zap @ v1.27.0 (go.mod)\",\n\t\t\t},\n\t\t\texpectedLicenses: map[string][]string{\n\t\t\t\t\"github.com/fsnotify/fsnotify\":        {\"BSD-3-Clause\"},\n\t\t\t\t\"github.com/go-viper/mapstructure/v2\": {\"MIT\"},\n\t\t\t\t\"github.com/google/uuid\":              {\"BSD-3-Clause\"},\n\t\t\t\t\"github.com/pelletier/go-toml/v2\":     {\"MIT\"},\n\t\t\t\t\"github.com/sagikazarmark/locafero\":   {\"MIT\"},\n\t\t\t\t\"github.com/sirupsen/logrus\":          {\"MIT\"},\n\t\t\t\t\"github.com/sourcegraph/conc\":         {\"MIT\"},\n\t\t\t\t\"github.com/spf13/afero\":              {\"Apache-2.0\"},\n\t\t\t\t\"github.com/spf13/cast\":               {\"MIT\"},\n\t\t\t\t\"github.com/spf13/pflag\":              {\"BSD-3-Clause\"},\n\t\t\t\t\"github.com/spf13/viper\":              {\"MIT\"},\n\t\t\t\t\"github.com/subosito/gotenv\":          {\"MIT\"},\n\t\t\t\t\"go.uber.org/multierr\":                {\"MIT\"},\n\t\t\t\t\"go.uber.org/zap\":                     {\"MIT\"},\n\t\t\t\t\"golang.org/x/sys\":                    {\"BSD-3-Clause\"},\n\t\t\t\t\"golang.org/x/text\":                   {\"BSD-3-Clause\"},\n\t\t\t\t\"gopkg.in/yaml.v3\":                    {\"Apache-2.0\", \"MIT\"},\n\t\t\t\t\"github.com/davecgh/go-spew\":          {\"ISC\"},\n\t\t\t\t\"github.com/pmezard/go-difflib\":       {\"BSD-3-Clause\"},\n\t\t\t\t\"github.com/stretchr/testify\":         {\"MIT\"},\n\t\t\t\t\"github.com/frankban/quicktest\":       {\"MIT\"},\n\t\t\t\t\"github.com/google/go-cmp\":            {\"BSD-3-Clause\"},\n\t\t\t\t\"github.com/kr/text\":                  {\"MIT\"},\n\t\t\t\t\"github.com/kr/pretty\":                {\"MIT\"},\n\t\t\t\t\"github.com/rogpeppe/go-internal\":     {\"BSD-3-Clause\"},\n\t\t\t\t\"go.uber.org/goleak\":                  {\"MIT\"},\n\t\t\t\t\"gopkg.in/check.v1\":                   {\"BSD-2-Clause\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixturePath).\n\t\t\t\tExpectsPackageStrings(tt.expectedPkgs).\n\t\t\t\tExpectsRelationshipStrings(tt.expectedRels).\n\t\t\t\tExpectsAssertion(func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t\t\t\tfor _, p := range pkgs {\n\t\t\t\t\t\tif metadata, ok := p.Metadata.(pkg.GolangSourceEntry); ok {\n\t\t\t\t\t\t\t// Validate that GolangSourceEntry metadata is present but don't assert on specific field values\n\t\t\t\t\t\t\t// since these might vary across development machines\n\t\t\t\t\t\t\trequire.IsType(t, pkg.GolangSourceEntry{}, metadata, \"expected GolangSourceEntry metadata for package %s\", p.Name)\n\t\t\t\t\t\t\t// Verify that the metadata struct is populated (non-zero values indicate go source method was used)\n\t\t\t\t\t\t\trequire.NotEmpty(t, metadata, \"GolangSourceEntry metadata should not be empty for package %s\", p.Name)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).\n\t\t\t\tExpectsAssertion(func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t\t\t\tactualLicenses := make(map[string][]string)\n\t\t\t\t\tfor _, p := range pkgs {\n\t\t\t\t\t\tfor _, l := range p.Licenses.ToSlice() {\n\t\t\t\t\t\t\tif actualLicenses[p.Name] == nil {\n\t\t\t\t\t\t\t\tactualLicenses[p.Name] = make([]string, 0)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tactualLicenses[p.Name] = append(actualLicenses[p.Name], l.Value)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif diff := cmp.Diff(tt.expectedLicenses, actualLicenses); diff != \"\" {\n\t\t\t\t\t\tt.Errorf(\"mismatch in licenses (-want +got):\\n%s\", diff)\n\t\t\t\t\t}\n\t\t\t\t}).\n\t\t\t\tTestCataloger(t, NewGoModuleFileCataloger(DefaultCatalogerConfig().WithUsePackagesLib(true)))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/scan_binary.go",
    "content": "package golang\n\nimport (\n\t\"debug/buildinfo\"\n\t\"fmt\"\n\t\"io\"\n\t\"runtime/debug\"\n\n\t\"github.com/kastenhq/goversion/version\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\ntype extendedBuildInfo struct {\n\t*debug.BuildInfo\n\tcryptoSettings []string\n\tarch           string\n}\n\n// scanFile scans file to try to report the Go and module versions.\nfunc scanFile(location file.Location, reader unionreader.UnionReader) ([]*extendedBuildInfo, error) {\n\t// NOTE: multiple readers are returned to cover universal binaries, which are files\n\t// with more than one binary\n\treaders, errs := unionreader.GetReaders(reader)\n\tif errs != nil {\n\t\tlog.WithFields(\"error\", errs).Debug(\"failed to open a golang binary\")\n\t\treturn nil, fmt.Errorf(\"failed to open a golang binary: %w\", errs)\n\t}\n\n\tvar builds []*extendedBuildInfo\n\tfor _, r := range readers {\n\t\tbi, err := getBuildInfo(r, location)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"file\", location.RealPath, \"error\", err).Trace(\"unable to read golang buildinfo\")\n\n\t\t\tcontinue\n\t\t}\n\t\t// it's possible the reader just isn't a go binary, in which case just skip it\n\t\tif bi == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tv, err := getCryptoInformation(r)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"file\", location.RealPath, \"error\", err).Trace(\"unable to read golang version info\")\n\t\t\t// don't skip this build info.\n\t\t\t// we can still catalog packages, even if we can't get the crypto information\n\t\t\terrs = unknown.Appendf(errs, location, \"unable to read golang version info: %w\", err)\n\t\t}\n\t\tarch := getGOARCH(bi.Settings)\n\t\tif arch == \"\" {\n\t\t\tarch, err = getGOARCHFromBin(r)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"file\", location.RealPath, \"error\", err).Trace(\"unable to read golang arch info\")\n\t\t\t\t// don't skip this build info.\n\t\t\t\t// we can still catalog packages, even if we can't get the arch information\n\t\t\t\terrs = unknown.Appendf(errs, location, \"unable to read golang arch info: %w\", err)\n\t\t\t}\n\t\t}\n\n\t\tbuilds = append(builds, &extendedBuildInfo{BuildInfo: bi, cryptoSettings: v, arch: arch})\n\t}\n\treturn builds, errs\n}\n\nfunc getCryptoInformation(reader io.ReaderAt) ([]string, error) {\n\tv, err := version.ReadExeFromReader(reader)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn getCryptoSettingsFromVersion(v), nil\n}\n\nfunc getCryptoSettingsFromVersion(v version.Version) []string {\n\tcryptoSettings := []string{}\n\tif v.StandardCrypto {\n\t\tcryptoSettings = append(cryptoSettings, \"standard-crypto\")\n\t}\n\tif v.BoringCrypto {\n\t\tcryptoSettings = append(cryptoSettings, \"boring-crypto\")\n\t}\n\tif v.FIPSOnly {\n\t\tcryptoSettings = append(cryptoSettings, \"crypto/tls/fipsonly\")\n\t}\n\treturn cryptoSettings\n}\n\nfunc getBuildInfo(r io.ReaderAt, location file.Location) (bi *debug.BuildInfo, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// this can happen in cases where a malformed binary is passed in can be initially parsed, but not\n\t\t\t// used without error later down the line. This is the case with :\n\t\t\t// https://github.com/llvm/llvm-project/blob/llvmorg-15.0.6/llvm/test/Object/Inputs/macho-invalid-dysymtab-bad-size\n\t\t\terr = fmt.Errorf(\"recovered from panic: %v\", r)\n\t\t}\n\t}()\n\n\t// try to read buildinfo from the binary directly\n\tbi, err = buildinfo.Read(r)\n\tif err == nil {\n\t\treturn bi, nil\n\t}\n\n\t// if direct read fails and this looks like a UPX-compressed binary,\n\t// try to decompress and read the buildinfo from the decompressed data\n\tif isUPXCompressed(r) {\n\t\tlog.WithFields(\"path\", location.RealPath).Trace(\"detected UPX-compressed Go binary, attempting decompression to read the build info\")\n\t\tdecompressed, decompErr := decompressUPX(r)\n\t\tif decompErr == nil {\n\t\t\tbi, err = buildinfo.Read(decompressed)\n\t\t\tif err == nil {\n\t\t\t\treturn bi, nil\n\t\t\t}\n\t\t}\n\t}\n\n\t// note: the stdlib does not export the error we need to check for\n\tif err != nil {\n\t\tif err.Error() == \"not a Go executable\" {\n\t\t\t// since the cataloger can only select executables and not distinguish if they are a go-compiled\n\t\t\t// binary, we should not show warnings/logs in this case. For this reason we nil-out err here.\n\t\t\terr = nil\n\t\t\treturn bi, err\n\t\t}\n\t\t// in this case we could not read the or parse the file, but not explicitly because it is not a\n\t\t// go-compiled binary (though it still might be).\n\t\treturn bi, err\n\t}\n\treturn bi, err\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/scan_binary_test.go",
    "content": "package golang\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"runtime/debug\"\n\t\"testing\"\n\n\t\"github.com/kastenhq/goversion/version\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_getBuildInfo(t *testing.T) {\n\ttype args struct {\n\t\tr io.ReaderAt\n\t}\n\ttests := []struct {\n\t\tname    string\n\t\targs    args\n\t\twantBi  *debug.BuildInfo\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"recover from panic\",\n\t\t\targs: args{\n\t\t\t\tr: nil, // trying to use a nil reader will cause a panic\n\t\t\t},\n\t\t\twantBi:  nil, // we should not return anything useful\n\t\t\twantErr: assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotBi, err := getBuildInfo(tt.args.r, file.Location{})\n\t\t\tif !tt.wantErr(t, err, fmt.Sprintf(\"getBuildInfo(%v)\", tt.args.r)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equalf(t, tt.wantBi, gotBi, \"getBuildInfo(%v)\", tt.args.r)\n\t\t})\n\t}\n}\n\nfunc Test_getCryptoSettingsFromVersion(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tname    string\n\t\tversion version.Version\n\t\tresult  []string\n\t}{\n\t\t{\n\t\t\tname: \"standard crypto\",\n\t\t\tversion: version.Version{\n\t\t\t\tStandardCrypto: true,\n\t\t\t},\n\t\t\tresult: []string{\"standard-crypto\"},\n\t\t},\n\t\t{\n\t\t\tname: \"boring crypto\",\n\t\t\tversion: version.Version{\n\t\t\t\tBoringCrypto: true,\n\t\t\t},\n\t\t\tresult: []string{\"boring-crypto\"},\n\t\t},\n\t\t{ // Should never see this. Boring crypto is required for fipsonly\n\t\t\tname: \"fipsonly\",\n\t\t\tversion: version.Version{\n\t\t\t\tFIPSOnly: true,\n\t\t\t},\n\t\t\tresult: []string{\"crypto/tls/fipsonly\"},\n\t\t},\n\t\t{\n\t\t\tname: \"boring crypto and fipsonly\",\n\t\t\tversion: version.Version{\n\t\t\t\tBoringCrypto: true,\n\t\t\t\tFIPSOnly:     true,\n\t\t\t},\n\t\t\tresult: []string{\"boring-crypto\", \"crypto/tls/fipsonly\"},\n\t\t},\n\t\t{ // Should never see this.\n\t\t\tname: \"boring and standard crypto!\",\n\t\t\tversion: version.Version{\n\t\t\t\tBoringCrypto:   true,\n\t\t\t\tStandardCrypto: true,\n\t\t\t},\n\t\t\tresult: []string{\"boring-crypto\", \"standard-crypto\"},\n\t\t},\n\t\t{ // Should never see this. Boring crypto is required for fipsonly\n\t\t\tname: \"fipsonly and standard crypto!\",\n\t\t\tversion: version.Version{\n\t\t\t\tFIPSOnly:       true,\n\t\t\t\tStandardCrypto: true,\n\t\t\t},\n\t\t\tresult: []string{\"crypto/tls/fipsonly\", \"standard-crypto\"},\n\t\t},\n\n\t\t{ // Should never see this. Boring crypto is required for fipsonly\n\t\t\tname: \"fipsonly boringcrypto and standard crypto!\",\n\t\t\tversion: version.Version{\n\t\t\t\tFIPSOnly:       true,\n\t\t\t\tStandardCrypto: true,\n\t\t\t\tBoringCrypto:   true,\n\t\t\t},\n\t\t\tresult: []string{\"crypto/tls/fipsonly\", \"standard-crypto\", \"boring-crypto\"},\n\t\t},\n\t} {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tres := getCryptoSettingsFromVersion(tt.version)\n\t\t\tassert.ElementsMatch(t, res, tt.result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/stdlib_package.go",
    "content": "package golang\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc stdlibProcessor(ctx context.Context, _ file.Resolver, pkgs []pkg.Package, relationships []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\tcompilerPkgs, newRelationships := stdlibPackageAndRelationships(ctx, pkgs)\n\treturn append(pkgs, compilerPkgs...), append(relationships, newRelationships...), err\n}\n\nfunc stdlibPackageAndRelationships(ctx context.Context, pkgs []pkg.Package) ([]pkg.Package, []artifact.Relationship) {\n\tvar goCompilerPkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\ttotalLocations := file.NewLocationSet()\n\tfor _, goPkg := range pkgs {\n\t\tmValue, ok := goPkg.Metadata.(pkg.GolangBinaryBuildinfoEntry)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// go binary packages should only contain a single location\n\t\tfor _, location := range goPkg.Locations.ToSlice() {\n\t\t\tif totalLocations.Contains(location) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tstdLibPkg := newGoStdLib(ctx, mValue.GoCompiledVersion, goPkg.Locations)\n\t\t\tif stdLibPkg == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgoCompilerPkgs = append(goCompilerPkgs, *stdLibPkg)\n\t\t\ttotalLocations.Add(location)\n\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: *stdLibPkg,\n\t\t\t\tTo:   goPkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\treturn goCompilerPkgs, relationships\n}\n\nfunc newGoStdLib(ctx context.Context, version string, location file.LocationSet) *pkg.Package {\n\tstdlibCpe, err := generateStdlibCpe(version)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tgoCompilerPkg := &pkg.Package{\n\t\tName:      \"stdlib\",\n\t\tVersion:   version,\n\t\tPURL:      packageURL(\"stdlib\", strings.TrimPrefix(version, \"go\")),\n\t\tCPEs:      []cpe.CPE{stdlibCpe},\n\t\tLocations: location,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"BSD-3-Clause\")),\n\t\tLanguage:  pkg.Go,\n\t\tType:      pkg.GoModulePkg,\n\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\tGoCompiledVersion: version,\n\t\t},\n\t}\n\tgoCompilerPkg.SetID()\n\n\treturn goCompilerPkg\n}\n\nfunc generateStdlibCpe(version string) (stdlibCpe cpe.CPE, err error) {\n\t// GoCompiledVersion when pulled from a binary is prefixed by go\n\tversion = strings.TrimPrefix(version, \"go\")\n\n\t// we also need to trim starting from the first +<metadata>  to\n\t// correctly extract potential rc candidate information for cpe generation\n\t// ex: 2.0.0-rc.1+build.123 -> 2.0.0-rc.1; if no + is found then + is returned\n\tafter, _, found := strings.Cut(\"+\", version)\n\tif found {\n\t\tversion = after\n\t}\n\n\t// extracting <version> and <candidate>\n\t// https://regex101.com/r/985GsI/1\n\tcaptureGroups := internal.MatchNamedCaptureGroups(versionCandidateGroups, version)\n\tvr, ok := captureGroups[\"version\"]\n\tif !ok || vr == \"\" {\n\t\treturn stdlibCpe, fmt.Errorf(\"could not match candidate version for: %s\", version)\n\t}\n\n\tcpeString := fmt.Sprintf(\"cpe:2.3:a:golang:go:%s:-:*:*:*:*:*:*\", captureGroups[\"version\"])\n\tif candidate, ok := captureGroups[\"candidate\"]; ok && candidate != \"\" {\n\t\tcpeString = fmt.Sprintf(\"cpe:2.3:a:golang:go:%s:%s:*:*:*:*:*:*\", vr, candidate)\n\t}\n\n\treturn cpe.New(cpeString, cpe.GeneratedSource)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/stdlib_package_test.go",
    "content": "package golang\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/cmptest\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_stdlibPackageAndRelationships(t *testing.T) {\n\tctx := context.Background()\n\ttests := []struct {\n\t\tname     string\n\t\tpkgs     []pkg.Package\n\t\twantPkgs int\n\t\twantRels int\n\t}{\n\t\t{\n\t\t\tname: \"no packages\",\n\t\t},\n\t\t{\n\t\t\tname: \"ignore non-go-binary packages\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"not-go\",\n\t\t\t\t\tVersion:  \"1.0.0\",\n\t\t\t\t\tMetadata: pkg.GolangModuleEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs: 0,\n\t\t\twantRels: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"with go-binary packages -- missing location\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"github.com/something/go\",\n\t\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\t\t\t\tMainModule:        \"github.com/something/go\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs: 0,\n\t\t\twantRels: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"with go-binary packages\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/something/go\",\n\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/bin/my-app\")),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\t\t\t\tMainModule:        \"github.com/something/go\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs: 1,\n\t\t\twantRels: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"go binary package with devel stdlib\",\n\t\t\tpkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"github.com/something/go\",\n\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/bin/my-app\")),\n\t\t\t\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\t\t\t\tGoCompiledVersion: \"devel\",\n\t\t\t\t\t\tMainModule:        \"github.com/something/go\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs: 0,\n\t\t\twantRels: 0,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotPkgs, gotRels := stdlibPackageAndRelationships(ctx, tt.pkgs)\n\t\t\tassert.Len(t, gotPkgs, tt.wantPkgs)\n\t\t\tassert.Len(t, gotRels, tt.wantRels)\n\t\t})\n\t}\n}\n\nfunc Test_stdlibPackageAndRelationships_values(t *testing.T) {\n\tloc := file.NewLocation(\"/bin/my-app\")\n\tlocSet := file.NewLocationSet(loc)\n\tctx := context.TODO()\n\tp := pkg.Package{\n\t\tName:      \"github.com/something/go\",\n\t\tVersion:   \"1.0.0\",\n\t\tLocations: locSet,\n\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t\tMainModule:        \"github.com/something/go\",\n\t\t},\n\t}\n\tp.SetID()\n\n\texpectedPkg := pkg.Package{\n\t\tName:     \"stdlib\",\n\t\tVersion:  \"go1.22.2\",\n\t\tPURL:     packageURL(\"stdlib\", \"1.22.2\"),\n\t\tLanguage: pkg.Go,\n\t\tType:     pkg.GoModulePkg,\n\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"BSD-3-Clause\")),\n\t\tCPEs: []cpe.CPE{\n\t\t\t{\n\t\t\t\tAttributes: cpe.MustAttributes(\"cpe:2.3:a:golang:go:1.22.2:-:*:*:*:*:*:*\"),\n\t\t\t\tSource:     \"syft-generated\",\n\t\t\t},\n\t\t},\n\t\tLocations: locSet,\n\t\tMetadata: pkg.GolangBinaryBuildinfoEntry{\n\t\t\tGoCompiledVersion: \"go1.22.2\",\n\t\t},\n\t}\n\n\texpectedPkg.SetID()\n\n\texpectedRel := artifact.Relationship{\n\t\tFrom: expectedPkg,\n\t\tTo:   p,\n\t\tType: artifact.DependencyOfRelationship,\n\t}\n\n\tgotPkgs, gotRels := stdlibPackageAndRelationships(ctx, []pkg.Package{p})\n\trequire.Len(t, gotPkgs, 1)\n\n\tgotPkg := gotPkgs[0]\n\tif d := cmp.Diff(expectedPkg, gotPkg, cmptest.DefaultOptions()...); d != \"\" {\n\t\tt.Errorf(\"unexpected package (-want +got): %s\", d)\n\t}\n\n\trequire.Len(t, gotRels, 1)\n\tgotRel := gotRels[0]\n\n\tif d := cmp.Diff(expectedRel, gotRel, cmptest.DefaultOptions()...); d != \"\" {\n\t\tt.Errorf(\"unexpected relationship (-want +got): %s\", d)\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/subfs.go",
    "content": "package golang\n\nimport (\n\t\"io/fs\"\n\t\"path\"\n\t\"time\"\n)\n\ntype subFS struct {\n\troot string\n\tf    fs.FS\n}\n\nfunc getSubFS(f fs.FS, root string) fs.FS {\n\tif s, ok := f.(fs.SubFS); ok {\n\t\ts, err := s.Sub(root)\n\t\tif err != nil {\n\t\t\treturn s\n\t\t}\n\t}\n\n\treturn newSubFS(f, root)\n}\n\nfunc newSubFS(f fs.FS, root string) fs.FS {\n\treturn subFS{\n\t\troot: root,\n\t\tf:    f,\n\t}\n}\n\nfunc (s subFS) Open(name string) (fs.File, error) {\n\tif name == \".\" {\n\t\treturn rootFile{\n\t\t\ts: s,\n\t\t}, nil\n\t}\n\treturn s.f.Open(path.Join(s.root, name))\n}\n\ntype rootFile struct {\n\ts subFS\n}\n\nfunc (r rootFile) Name() string {\n\treturn \".\"\n}\n\nfunc (r rootFile) Size() int64 {\n\treturn 0\n}\n\nfunc (r rootFile) Mode() fs.FileMode {\n\treturn fs.ModePerm\n}\n\nfunc (r rootFile) ModTime() time.Time {\n\treturn time.Now()\n}\n\nfunc (r rootFile) IsDir() bool {\n\treturn true\n}\n\nfunc (r rootFile) Sys() any {\n\treturn nil\n}\n\nfunc (r rootFile) ReadDir(_ int) ([]fs.DirEntry, error) {\n\treturn fs.ReadDir(r.s.f, r.s.root)\n}\n\nfunc (r rootFile) Stat() (fs.FileInfo, error) {\n\treturn r, nil\n}\n\nfunc (r rootFile) Read(_ []byte) (int, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rootFile) Close() error {\n\treturn nil\n}\n\nvar _ fs.File = (*rootFile)(nil)\nvar _ fs.ReadDirFile = (*rootFile)(nil)\nvar _ fs.FileInfo = (*rootFile)(nil)\n\ntype subFsFileInfo struct {\n\tfi fs.FileInfo\n}\n\nfunc (s subFsFileInfo) Name() string {\n\treturn s.fi.Name()\n}\n\nfunc (s subFsFileInfo) Size() int64 {\n\treturn s.fi.Size()\n}\n\nfunc (s subFsFileInfo) Mode() fs.FileMode {\n\treturn s.fi.Mode()\n}\n\nfunc (s subFsFileInfo) ModTime() time.Time {\n\treturn s.fi.ModTime()\n}\n\nfunc (s subFsFileInfo) IsDir() bool {\n\treturn s.fi.IsDir()\n}\n\nfunc (s subFsFileInfo) Sys() any {\n\treturn s.fi.Sys()\n}\n\nvar _ fs.FileInfo = (*subFsFileInfo)(nil)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/subfs_test.go",
    "content": "package golang\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_NewSubFS(t *testing.T) {\n\tf := os.DirFS(\"testdata/zip-fs\")\n\tf = newSubFS(f, \"github.com/someorg/somepkg@version\")\n\tvar names []string\n\terr := fs.WalkDir(f, \".\", func(path string, d fs.DirEntry, err error) error {\n\t\tnames = append(names, path)\n\t\treturn nil\n\t})\n\trequire.NoError(t, err)\n\texpected := []string{\n\t\t\".\",\n\t\t\"a-file\",\n\t\t\"subdir\",\n\t\t\"subdir/subfile\",\n\t}\n\trequire.Equal(t, expected, names)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/Makefile",
    "content": ".DEFAULT_GOAL := default\n\ndefault:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir || exit 1; \\\n\t\tfi; \\\n\tdone\n\n%:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir $@ || exit 1; \\\n\t\tfi; \\\n\tdone\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/archs/.gitignore",
    "content": "binaries/"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/archs/Makefile",
    "content": "DESTINATION=binaries\nFINGERPRINT_FILE=$(DESTINATION).fingerprint\n\nifndef DESTINATION\n    $(error DESTINATION is not set)\nendif\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: $(DESTINATION)\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(DESTINATION).fingerprint\n\n$(DESTINATION): $(DESTINATION)/hello-mach-o-arm64 $(DESTINATION)/hello-linux-arm $(DESTINATION)/hello-linux-ppc64le $(DESTINATION)/hello-win-amd64\n\n$(DESTINATION)/hello-mach-o-arm64:\n\tGOARCH=arm64 GOOS=darwin ./src/build.sh $(DESTINATION)/hello-mach-o-arm64\n\n$(DESTINATION)/hello-linux-arm:\n\tGOARCH=arm GOOS=linux ./src/build.sh $(DESTINATION)/hello-linux-arm\n\n$(DESTINATION)/hello-linux-ppc64le:\n\tGOARCH=ppc64le GOOS=linux ./src/build.sh $(DESTINATION)/hello-linux-ppc64le\n\n$(DESTINATION)/hello-win-amd64:\n\tGOARCH=amd64 GOOS=windows ./src/build.sh $(DESTINATION)/hello-win-amd64\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find src -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\n.PHONY: clean\nclean:\n\trm -rf $(DESTINATION)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/archs/src/build.sh",
    "content": "#!/usr/bin/env bash\nset -ue\n\n# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible)\n# note: gocache override is so we can run docker build not as root in a container without permission issues\n\nBINARY=$1\n\nmkdir -p \"$(dirname \"$BINARY\")\"\n\nCTRID=$(docker create -e GOOS=\"${GOOS}\" -e GOARCH=\"${GOARCH}\" -u \"$(id -u):$(id -g)\" -e GOCACHE=/tmp -w /src golang:1.17 go build -o main main.go)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\nset +e\n\n# note: pwd = parent directory (archs)\ndocker cp \"$(pwd)/src\" \"${CTRID}:/\"\ndocker start -a \"${CTRID}\"\ndocker cp \"${CTRID}:/src/main\" \"$BINARY\"\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/archs/src/go.mod",
    "content": "module arch/v1\n\ngo 1.17\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/archs/src/main.go",
    "content": "package main\n\nfunc main() {\n\tprintln(\"свобода!\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/corrupt/go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.18\n\nruire (\n\tgithub.com/CycloneDX/cyclonedx-go v0.7.0\n\tgithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d\n\tgithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect\n)\n\nreplace github.com/CycloneDX/cyclonedx-go => github.com/CycloneDX/cyclonedx-go v0.6.0\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/corrupt/go.sum",
    "content": "github.com/CycloneDX/cyclonedx-go v0.6.0/go.mod h1:nQCiF4Tvrg5Ieu8qPhYMvzPGMu5I7fANZkrSsJjl5mg=\ngithub.com/Cycpansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=\ngithub6IF\ngithub.com/stretchr/test4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/glob-paths/partial-binary",
    "content": "\u0007"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/glob-paths/src/go.mod",
    "content": "module bogus\n\ngo 1.22.1\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-mod-fixtures/many-packages/go.mod",
    "content": "module (\n    github.com/anchore/syft\n)\n\ngo 1.14\n\n// github.com/bogus/package v10.10.10\n\nrequire (\n\tgithub.com/adrg/xdg v0.2.1\n\tgithub.com/anchore/go-testutils v0.0.0-20200624184116-66aa578126db // github.com/bogus/package v10.10.10\n\tgithub.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b\n\tgithub.com/anchore/stereoscope v0.0.0-20200706164556-7cf39d7f4639\n\tgithub.com/anchore/archiver/v3 v3.5.1\n\t//github.com/ignore/this v9.9.9  // indirect\n\tgithub.com/bmatcuk/doublestar v1.3.1  // indirect\n\tgithub.com/go-test/deep v1.0.6  // a comment\n)\n\nreplace github.com/bmatcuk/doublestar => github.com/bmatcuk/doublestar v8.8.8\n\nreplace github.com/anchore/archiver/v3 v3.5.1 => github.com/anchore/archiver/v3 v3.5.2\n\nexclude github.com/adrg/xdg v0.2.1\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-mod-fixtures/one-package/go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.14\n\nrequire (\n\tgithub.com/bmatcuk/doublestar v1.3.1\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-mod-fixtures/one-package/go.sum",
    "content": "github.com/bmatcuk/doublestar v1.3.1/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-mod-fixtures/relative-replace/go.mod",
    "content": "module github.com/aws/aws-sdk-go-v2/feature/ec2/imds\n\ngo 1.22\n\nrequire github.com/aws/aws-sdk-go-v2 v1.36.3\n\nreplace github.com/aws/aws-sdk-go-v2 => ../../../\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-sum-hashes/go.mod",
    "content": "module github.com/anchore/syft\n\ngo 1.18\n\nrequire (\n\tgithub.com/CycloneDX/cyclonedx-go v0.7.0\n\tgithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d\n\tgithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect\n)\n\nreplace github.com/CycloneDX/cyclonedx-go => github.com/CycloneDX/cyclonedx-go v0.6.0\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/go-sum-hashes/go.sum",
    "content": "github.com/CycloneDX/cyclonedx-go v0.6.0/go.mod h1:nQCiF4Tvrg5Ieu8qPhYMvzPGMu5I7fANZkrSsJjl5mg=\ngithub.com/CycloneDX/cyclonedx-go v0.7.0 h1:jNxp8hL7UpcvPDFXjY+Y1ibFtsW+e5zyF9QoSmhK/zg=\ngithub.com/CycloneDX/cyclonedx-go v0.7.0/go.mod h1:W5Z9w8pTTL+t+yG3PCiFRGlr8PUlE0pGWzKSJbsyXkg=\ngithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=\ngithub.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=\ngithub.com/bradleyjkemp/cupaloy/v2 v2.7.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=\ngithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=\ngithub.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-not-a-module/.gitignore",
    "content": "/run-me"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-not-a-module/Dockerfile",
    "content": "FROM --platform=linux/amd64 golang:1.23.2 AS builder\n\nRUN mkdir /app\nWORKDIR /app\n\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY main.go main.go\n\n# building with \".\" vs \"main.go\" is a difference in the buildinfo section\n# specifically with main.go the buildinfo section will contain the following:\n#\n#   path command-line-arguments\n#\n# instead of\n#\n#  mod anchore.io/not/real\n#\nRUN CGO_ENABLED=0 GOOS=linux go build -o run-me main.go\n\n\nFROM scratch\n\nCOPY --from=builder /app/run-me /run-me\nENTRYPOINT [\"/run-me\"]"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-not-a-module/go.mod",
    "content": "module anchore.io/not/real\n\ngo 1.23\n\ntoolchain go1.23.2\n\nrequire github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.1.1 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/klauspost/compress v1.17.11 // indirect\n\tgithub.com/klauspost/pgzip v1.2.6 // indirect\n\tgithub.com/nwaples/rardecode v1.1.3 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.21 // indirect\n\tgithub.com/ulikunitz/xz v0.5.12 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-not-a-module/go.sum",
    "content": "github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51 h1:yhk+P8lF3ZiROjmaVRao9WGTRo4b/wYjoKEiAHWrKwc=\ngithub.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51/go.mod h1:nwuGSd7aZp0rtYt79YggCGafz1RYsclE7pi3fhLwvuw=\ngithub.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=\ngithub.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=\ngithub.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=\ngithub.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=\ngithub.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=\ngithub.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=\ngithub.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=\ngithub.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=\ngithub.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=\ngithub.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=\ngithub.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=\ngithub.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=\ngithub.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=\ngithub.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=\ngithub.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-not-a-module/main.go",
    "content": "package main\n\nimport \"github.com/anchore/archiver/v3\"\n\nfunc main() {\n\n\tz := archiver.Zip{\n\t\tMkdirAll:               true,\n\t\tSelectiveCompression:   true,\n\t\tContinueOnError:        false,\n\t\tOverwriteExisting:      false,\n\t\tImplicitTopLevelFolder: false,\n\t}\n\n\terr := z.Archive([]string{\"main.go\"}, \"test.zip\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small/.gitignore",
    "content": "/run-me"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small/Dockerfile",
    "content": "FROM --platform=linux/amd64 golang:1.23.2 AS builder\n\nRUN mkdir /app\nWORKDIR /app\n\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY main.go main.go\n\nRUN CGO_ENABLED=0 GOOS=linux go build -ldflags \"-X main.Version=1.0.0\" -o run-me .\n\nFROM scratch\n\nCOPY --from=builder /app/run-me /run-me\nENTRYPOINT [\"/run-me\"]"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small/go.mod",
    "content": "module anchore.io/not/real\n\ngo 1.23\n\ntoolchain go1.23.2\n\nrequire github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.1.1 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/klauspost/compress v1.17.11 // indirect\n\tgithub.com/klauspost/pgzip v1.2.6 // indirect\n\tgithub.com/nwaples/rardecode v1.1.3 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.21 // indirect\n\tgithub.com/ulikunitz/xz v0.5.12 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small/go.sum",
    "content": "github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51 h1:yhk+P8lF3ZiROjmaVRao9WGTRo4b/wYjoKEiAHWrKwc=\ngithub.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51/go.mod h1:nwuGSd7aZp0rtYt79YggCGafz1RYsclE7pi3fhLwvuw=\ngithub.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=\ngithub.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=\ngithub.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=\ngithub.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=\ngithub.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=\ngithub.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=\ngithub.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=\ngithub.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=\ngithub.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=\ngithub.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=\ngithub.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=\ngithub.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=\ngithub.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=\ngithub.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=\ngithub.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small/main.go",
    "content": "package main\n\nimport \"github.com/anchore/archiver/v3\"\n\nfunc main() {\n\n\tz := archiver.Zip{\n\t\tMkdirAll:               true,\n\t\tSelectiveCompression:   true,\n\t\tContinueOnError:        false,\n\t\tOverwriteExisting:      false,\n\t\tImplicitTopLevelFolder: false,\n\t}\n\n\terr := z.Archive([]string{\"main.go\"}, \"test.zip\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small-upx/.gitignore",
    "content": "/run-me\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small-upx/Dockerfile",
    "content": "FROM --platform=linux/amd64 golang:1.23.2-alpine AS builder\n\nRUN apk add --no-cache upx\n\nRUN mkdir /app\nWORKDIR /app\n\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY main.go main.go\n\nRUN CGO_ENABLED=0 GOOS=linux go build -ldflags \"-X main.Version=1.0.0\" -o run-me .\nRUN upx --best --lzma --exact run-me\n\nFROM scratch\n\nCOPY --from=builder /app/run-me /run-me\nENTRYPOINT [\"/run-me\"]\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small-upx/go.mod",
    "content": "module anchore.io/not/real\n\ngo 1.23\n\ntoolchain go1.23.2\n\nrequire github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.1.1 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/klauspost/compress v1.17.11 // indirect\n\tgithub.com/klauspost/pgzip v1.2.6 // indirect\n\tgithub.com/nwaples/rardecode v1.1.3 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.21 // indirect\n\tgithub.com/ulikunitz/xz v0.5.12 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small-upx/go.sum",
    "content": "github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51 h1:yhk+P8lF3ZiROjmaVRao9WGTRo4b/wYjoKEiAHWrKwc=\ngithub.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51/go.mod h1:nwuGSd7aZp0rtYt79YggCGafz1RYsclE7pi3fhLwvuw=\ngithub.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=\ngithub.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY=\ngithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=\ngithub.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=\ngithub.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=\ngithub.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=\ngithub.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=\ngithub.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=\ngithub.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=\ngithub.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=\ngithub.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=\ngithub.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=\ngithub.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=\ngithub.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=\ngithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=\ngithub.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=\ngithub.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/image-small-upx/main.go",
    "content": "package main\n\nimport \"github.com/anchore/archiver/v3\"\n\nfunc main() {\n\n\tz := archiver.Zip{\n\t\tMkdirAll:               true,\n\t\tSelectiveCompression:   true,\n\t\tContinueOnError:        false,\n\t\tOverwriteExisting:      false,\n\t\tImplicitTopLevelFolder: false,\n\t}\n\n\terr := z.Archive([]string{\"main.go\"}, \"test.zip\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses/pkg/mod/github.com/!cap!o!r!g/!cap!project@v4.111.5/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Someone Cool <someone@cool.net.com.exe>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses/pkg/mod/github.com/someorg/somename@v0.3.2/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright (c) 2009-present, Alibaba Cloud All rights reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses/pkg/mod/github.com/someorg/strangelicense@v1.2.3/LiCeNsE.tXt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright (c) 2009-present, Alibaba Cloud All rights reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses-vendor/github.com/!cap!o!r!g/!cap!project/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Someone Cool <someone@cool.net.com.exe>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses-vendor/github.com/someorg/somename/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright (c) 2009-present, Alibaba Cloud All rights reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/licenses-vendor/github.com/someorg/strangelicense/LiCeNsE.tXt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright (c) 2009-present, Alibaba Cloud All rights reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/repo/LICENSE",
    "content": "Copyright (c) 2022\nAcme, inc.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\nTHIS SOFTWARE IS PROVIDED BY [Name of Organization] “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 [Name of Organisation] 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.\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/zip-fs/github.com/someorg/somepkg@version/a-file",
    "content": "a file"
  },
  {
    "path": "syft/pkg/cataloger/golang/testdata/zip-fs/github.com/someorg/somepkg@version/subdir/subfile",
    "content": "another file"
  },
  {
    "path": "syft/pkg/cataloger/golang/upx.go",
    "content": "package golang\n\n// UPX Decompression Support\n//\n// this file implements decompression of UPX-compressed ELF binaries to enable\n// extraction of Go build information (.go.buildinfo) from packed executables.\n//\n// UPX (Ultimate Packer for eXecutables) is a popular executable packer that\n// compresses binaries to reduce file size. When a Go binary is compressed with\n// UPX, the standard debug/buildinfo.Read() fails because the .go.buildinfo\n// section is compressed. This code decompresses the binary in-memory to allow\n// buildinfo extraction.\n//\n// # Supported Compression Methods\n//\n// Currently only LZMA (method 14) is supported, which is used by:\n//\n//\tupx --best --lzma <binary>\n//\n// Other UPX methods (NRV2B, NRV2D, NRV2E, etc.) are not yet implemented but\n// could be added via the upxDecompressors dispatch map.\n//\n// # Key Functions\n//\n//   - isUPXCompressed: detects UPX magic bytes (\"UPX!\") in the binary\n//   - decompressUPX: main entry point; decompresses all blocks and reconstructs the ELF\n//   - decompressLZMA: handles UPX's custom 2-byte LZMA header format\n//   - unfilter49: reverses the CTO (call trick optimization) filter for x86/x64 code\n//   - parseELFPTLoadOffsets: extracts PT_LOAD segment offsets for proper block placement\n//\n// # UPX Binary Format\n//\n// UPX-compressed binaries contain several header structures followed by compressed blocks:\n//\n//\tl_info (at \"UPX!\" magic):\n//\t  - l_checksum (4 bytes before magic)\n//\t  - l_magic \"UPX!\" (4 bytes)\n//\t  - l_lsize (2 bytes) - loader size\n//\t  - l_version (1 byte)\n//\t  - l_format (1 byte)\n//\n//\tp_info (12 bytes, follows l_info):\n//\t  - p_progid (4 bytes)\n//\t  - p_filesize (4 bytes) - original uncompressed file size\n//\t  - p_blocksize (4 bytes)\n//\n//\tb_info (12 bytes each, one per compressed block):\n//\t  - sz_unc (4 bytes) - uncompressed size\n//\t  - sz_cpr (4 bytes) - compressed size\n//\t  - b_method (1 byte) - compression method (14 = LZMA)\n//\t  - b_ftid (1 byte) - filter ID (0x49 = CTO filter)\n//\t  - b_cto8 (1 byte) - filter parameter\n//\t  - unused (1 byte)\n//\n// # LZMA Header Format\n//\n// UPX uses a 2-byte custom header, NOT the standard 13-byte LZMA format:\n//\n//\tByte 0: (t << 3) | pb, where t = lc + lp\n//\tByte 1: (lp << 4) | lc\n//\tByte 2+: raw LZMA stream\n//\n// This is converted to standard LZMA props: props = lc + lp*9 + pb*9*5\n//\n// # ELF Segment Placement\n//\n// Decompressed blocks must be placed at specific file offsets according to the\n// ELF PT_LOAD segments parsed from the first decompressed block. Simply\n// concatenating blocks produces invalid output.\n//\n// # References\n//\n//   - UPX source: https://github.com/upx/upx\n//   - LZMA format: https://github.com/upx/upx/blob/devel/src/compress/compress_lzma.cpp\n//   - CTO filter: https://github.com/upx/upx/blob/master/src/filter/cto.h\n//\n// note: no code was copied from the UPX repo, this is an independent implementation based on format description.\n//\n// # Anti-Unpacking / Obfuscation (Not Currently Supported)\n//\n// Malware commonly modifies UPX binaries to evade analysis. This implementation\n// does not currently handle obfuscated binaries, but these techniques could be\n// addressed in the future:\n//\n//   - Magic modification: \"UPX!\" replaced with custom bytes (e.g., \"YTS!\", \"MOZI\").\n//     Recovery: scan for decompression stub code patterns instead of magic bytes.\n//\n//   - Zeroed p_info fields: p_filesize and p_blocksize set to 0.\n//     Recovery: read original size from PackHeader at EOF (last 36 bytes, offset 0x18).\n//\n//   - Header corruption: checksums or version fields modified.\n//     Recovery: ignore validation and use PackHeader values as authoritative source.\n//\n// This would require parsing of the PackHeader, located in the final 36 bytes of the file, contains\n// metadata recoverable even if p_info is corrupted (not parsed today):\n//\n//   Offset  Size   Field           Description\n//   ──────────────────────────────────────────────────────────\n//   0x00    4      UPX magic       \"UPX!\" (0x21585055)\n//   0x04    1      version         UPX version\n//   0x05    1      format          Executable format\n//   0x06    1      method          Compression method\n//   0x07    1      level           Compression level (1-10)\n//   0x08    4      u_adler         Uncompressed data checksum\n//   0x0C    4      c_adler         Compressed data checksum\n//   0x10    4      u_len           Uncompressed length\n//   0x14    4      c_len           Compressed length\n//   0x18    4      u_file_size     Original file size  ← Recovery point\n//   0x1C    1      filter          Filter ID\n//   0x1D    1      filter_cto      Filter CTO parameter\n//   0x1E    1      n_mru           MRU parameter\n//   0x1F    1      header_checksum Header checksum\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/ulikunitz/xz/lzma\"\n)\n\n// UPX compression method constants\nconst (\n\tupxMethodLZMA uint8 = 14 // M_LZMA in UPX source\n)\n\n// UPX filter constants\nconst (\n\tupxFilterCTO uint8 = 0x49 // CTO (call trick optimization) filter for x86/x64\n)\n\nvar (\n\t// upxMagic is the magic bytes that identify a UPX-packed binary\n\tupxMagic = []byte(\"UPX!\")\n\n\terrNotUPX               = errors.New(\"not a UPX-compressed binary\")\n\terrUnsupportedUPXMethod = errors.New(\"unsupported UPX compression method\")\n)\n\n// upxInfo contains parsed UPX header information\ntype upxInfo struct {\n\tmagicOffset   int64\n\tversion       uint8\n\tformat        uint8\n\toriginalSize  uint32 // p_filesize - original uncompressed file size\n\tblockSize     uint32 // p_blocksize - size of each compression block\n\tfirstBlockOff int64  // offset to first b_info structure\n}\n\n// blockInfo contains information about a single compressed block\ntype blockInfo struct {\n\tuncompressedSize uint32\n\tcompressedSize   uint32\n\tmethod           uint8\n\tfilterID         uint8\n\tfilterCTO        uint8\n\tdataOffset       int64\n}\n\n// upxDecompressor is a function that decompresses data using a specific method\ntype upxDecompressor func(compressedData []byte, uncompressedSize uint32) ([]byte, error)\n\n// upxDecompressors maps compression methods to their decompressor functions\nvar upxDecompressors = map[uint8]upxDecompressor{\n\tupxMethodLZMA: decompressLZMA,\n\n\t// note: the NRV algorithms are from the UCL library, an open-source implementation based on the NRV (Not Really Vanished) algorithm.\n\t// TODO: future methods can be added here\n\t// upxMethodNRV2B: decompressNRV2B,\n\t// upxMethodNRV2D: decompressNRV2D,\n\t// upxMethodNRV2E: decompressNRV2E,\n}\n\n// unfilter49 reverses UPX filter 0x49 (CTO / call trick optimization).\n// The filter transforms CALL (0xE8) and JMP (0xE9) instruction addresses in x86/x64 code to improve compression.\n// The filtered format stores addresses as big-endian with cto8 as the high byte marker (the `cto8` parameter,\n// stored in `b_cto8`, marks transformed instructions):\n//\n//\toriginal:  E8 xx xx xx xx  (CALL rel32, little-endian offset)\n//\tfiltered:  E8 CC yy yy yy  (big-endian, CC = cto8 marker)\nfunc unfilter49(data []byte, cto8 byte) {\n\tcto := uint32(cto8) << 24\n\n\tfor pos := uint32(0); pos+5 <= uint32(len(data)); pos++ {\n\t\topcode := data[pos]\n\n\t\t// check for E8 (CALL) or E9 (JMP)\n\t\tif opcode == 0xE8 || opcode == 0xE9 {\n\t\t\t// check if first byte after opcode matches cto8 marker\n\t\t\tif data[pos+1] == cto8 {\n\t\t\t\t// read operand as big-endian\n\t\t\t\tjc := binary.BigEndian.Uint32(data[pos+1 : pos+5])\n\t\t\t\t// subtract cto and position to get original relative address\n\t\t\t\tresult := jc - (pos + 1) - cto\n\t\t\t\t// write back as little-endian\n\t\t\t\tbinary.LittleEndian.PutUint32(data[pos+1:pos+5], result)\n\t\t\t}\n\t\t}\n\n\t\t// check for conditional jumps (0F 80-8F)\n\t\tif opcode == 0x0F && pos+6 <= uint32(len(data)) {\n\t\t\topcode2 := data[pos+1]\n\t\t\tif opcode2 >= 0x80 && opcode2 <= 0x8F && data[pos+2] == cto8 {\n\t\t\t\tjc := binary.BigEndian.Uint32(data[pos+2 : pos+6])\n\t\t\t\tresult := jc - (pos + 2) - cto\n\t\t\t\tbinary.LittleEndian.PutUint32(data[pos+2:pos+6], result)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// isUPXCompressed checks if the reader contains a UPX-compressed binary\nfunc isUPXCompressed(r io.ReaderAt) bool {\n\t// UPX magic can be at various offsets depending on the binary format\n\t// scan the first 4KB for the magic bytes\n\tbuf := make([]byte, 4096)\n\tn, err := r.ReadAt(buf, 0)\n\tif err != nil && !errors.Is(err, io.EOF) {\n\t\treturn false\n\t}\n\treturn bytes.Contains(buf[:n], upxMagic)\n}\n\n// decompressUPX attempts to decompress a UPX-compressed ELF binary.\n// It reads blocks and places them at correct file offsets based on ELF PT_LOAD segments.\n//\n// The first decompressed block contains the original ELF headers. Parse them to get PT_LOAD segment\n// file offsets for proper block placement:\n//\n//   - After decompressing block 1, parse its ELF headers:\n//     ptLoadOffsets := parseELFPTLoadOffsets(block1Data)\n//\n// - Block 1: placed at offset 0 (contains ELF header + program headers)\n// - Block 2: placed at offset 0 (overwrites/extends)\n// - Block 3+: placed at ptLoadOffsets[blockNum-2]\n//\n// Why this matters: Simply concatenating decompressed blocks produces invalid output.\n// Each block corresponds to a PT_LOAD segment and must be placed at its correct file offset.\n//\n// Returns the decompressed binary as a bytes.Reader (implements io.ReaderAt).\nfunc decompressUPX(r io.ReaderAt) (io.ReaderAt, error) {\n\tinfo, err := parseUPXInfo(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// allocate buffer for the full decompressed output\n\toutput := make([]byte, info.originalSize)\n\n\tcurrentOffset := info.firstBlockOff\n\toutputOffset := uint64(0)\n\tblockNum := 0\n\n\t// track PT_LOAD segment offsets for proper block placement\n\tvar ptLoadOffsets []uint64\n\n\tfor {\n\t\tblock, err := readBlockInfo(r, currentOffset)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to read block info at offset %d: %w\", currentOffset, err)\n\t\t}\n\n\t\t// check for end marker (sz_unc == 0)\n\t\tif block.uncompressedSize == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// non-LZMA method on first block is an error; on subsequent blocks it indicates end of data\n\t\tif block.method != upxMethodLZMA {\n\t\t\tif blockNum == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"%w: method %d\", errUnsupportedUPXMethod, block.method)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tblockNum++\n\n\t\tdecompressor, ok := upxDecompressors[block.method]\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"%w: method %d\", errUnsupportedUPXMethod, block.method)\n\t\t}\n\n\t\t// read compressed data for this block\n\t\tcompressedData := make([]byte, block.compressedSize)\n\t\t_, err = r.ReadAt(compressedData, block.dataOffset)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to read compressed data: %w\", err)\n\t\t}\n\n\t\t// decompress this block\n\t\tblockData, err := decompressor(compressedData, block.uncompressedSize)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to decompress block: %w\", err)\n\t\t}\n\n\t\t// apply CTO filter reversal if needed\n\t\tif block.filterID == upxFilterCTO {\n\t\t\tunfilter49(blockData, block.filterCTO)\n\t\t}\n\n\t\t// first block contains ELF headers - parse PT_LOAD segments for subsequent blocks\n\t\tif blockNum == 1 {\n\t\t\tptLoadOffsets = parseELFPTLoadOffsets(blockData)\n\t\t}\n\n\t\t// determine where to place this block in the output\n\t\tdestOffset := outputOffset\n\t\tif blockNum > 2 && len(ptLoadOffsets) > blockNum-2 {\n\t\t\t// blocks 3+ go to their respective PT_LOAD segment offsets\n\t\t\tdestOffset = ptLoadOffsets[blockNum-2]\n\t\t}\n\n\t\t// copy block data to output at correct offset\n\t\tif destOffset+uint64(len(blockData)) <= uint64(len(output)) {\n\t\t\tcopy(output[destOffset:], blockData)\n\t\t}\n\n\t\toutputOffset = destOffset + uint64(block.uncompressedSize)\n\t\tcurrentOffset = block.dataOffset + int64(block.compressedSize)\n\t}\n\n\treturn bytes.NewReader(output), nil\n}\n\n// parseELFPTLoadOffsets extracts PT_LOAD segment file offsets from ELF headers.\n// These offsets determine where each decompressed block should be placed.\nfunc parseELFPTLoadOffsets(elfHeader []byte) []uint64 {\n\tif len(elfHeader) < 64 {\n\t\treturn nil\n\t}\n\n\t// verify ELF magic\n\tif !bytes.HasPrefix(elfHeader, []byte{0x7f, 'E', 'L', 'F'}) {\n\t\treturn nil\n\t}\n\n\t// only support 64-bit ELF\n\tif elfHeader[4] != 2 {\n\t\treturn nil\n\t}\n\n\t// parse ELF64 header fields\n\tphoff := binary.LittleEndian.Uint64(elfHeader[0x20:0x28])\n\tphentsize := binary.LittleEndian.Uint16(elfHeader[0x36:0x38])\n\tphnum := binary.LittleEndian.Uint16(elfHeader[0x38:0x3a])\n\n\tvar offsets []uint64\n\tfor i := uint16(0); i < phnum; i++ {\n\t\tphStart := phoff + uint64(i)*uint64(phentsize)\n\t\tif phStart+uint64(phentsize) > uint64(len(elfHeader)) {\n\t\t\tbreak\n\t\t}\n\n\t\tph := elfHeader[phStart:]\n\t\tptype := binary.LittleEndian.Uint32(ph[0:4])\n\n\t\t// PT_LOAD = 1\n\t\tif ptype == 1 {\n\t\t\tpoffset := binary.LittleEndian.Uint64(ph[8:16])\n\t\t\toffsets = append(offsets, poffset)\n\t\t}\n\t}\n\n\treturn offsets\n}\n\n// parseUPXInfo locates and parses the UPX header information\nfunc parseUPXInfo(r io.ReaderAt) (*upxInfo, error) {\n\t// scan for the UPX! magic in the first 8KB\n\tbuf := make([]byte, 8192)\n\tn, err := r.ReadAt(buf, 0)\n\tif err != nil && !errors.Is(err, io.EOF) {\n\t\treturn nil, fmt.Errorf(\"failed to read header: %w\", err)\n\t}\n\n\tmagicIdx := bytes.Index(buf[:n], upxMagic)\n\tif magicIdx == -1 {\n\t\treturn nil, errNotUPX\n\t}\n\n\t// UPX header structure (after finding \"UPX!\" magic):\n\t// l_info structure (magic is at offset 4 within l_info):\n\t//   offset -4: l_checksum (4 bytes) - checksum of following data\n\t//   offset 0:  l_magic \"UPX!\" (4 bytes)\n\t//   offset 4:  l_lsize (2 bytes) - loader size\n\t//   offset 6:  l_version (1 byte)\n\t//   offset 7:  l_format (1 byte)\n\t//\n\t// p_info structure (12 bytes, starts at magic+8):\n\t//   offset 0: p_progid (4 bytes)\n\t//   offset 4: p_filesize (4 bytes) - original file size\n\t//   offset 8: p_blocksize (4 bytes)\n\t//\n\t// b_info structures follow (12 bytes each):\n\t//   offset 0: sz_unc (4 bytes) - uncompressed size of this block\n\t//   offset 4: sz_cpr (4 bytes) - compressed size (may have filter bits)\n\t//   offset 8: b_method (1 byte)\n\t//   offset 9: b_ftid (1 byte) - filter id\n\t//   offset 10: b_cto8 (1 byte) - filter parameter\n\t//   offset 11: unused (1 byte)\n\n\tif magicIdx+32 > n {\n\t\treturn nil, fmt.Errorf(\"UPX header truncated\")\n\t}\n\n\tlInfoBase := buf[magicIdx:]\n\tpInfoBase := buf[magicIdx+8:] // p_info starts 8 bytes after magic\n\n\tinfo := &upxInfo{\n\t\tmagicOffset:   int64(magicIdx),\n\t\tversion:       lInfoBase[6],\n\t\tformat:        lInfoBase[7],\n\t\toriginalSize:  binary.LittleEndian.Uint32(pInfoBase[4:8]),\n\t\tblockSize:     binary.LittleEndian.Uint32(pInfoBase[8:12]),\n\t\tfirstBlockOff: int64(magicIdx + 8 + 12), // magic + l_info remainder + p_info\n\t}\n\n\t// sanity check\n\tif info.originalSize == 0 || info.originalSize > 500*1024*1024 {\n\t\treturn nil, fmt.Errorf(\"invalid original size: %d\", info.originalSize)\n\t}\n\n\treturn info, nil\n}\n\n// readBlockInfo reads a b_info structure at the given offset\nfunc readBlockInfo(r io.ReaderAt, offset int64) (*blockInfo, error) {\n\tbuf := make([]byte, 12)\n\t_, err := r.ReadAt(buf, offset)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tszUnc := binary.LittleEndian.Uint32(buf[0:4])\n\tszCpr := binary.LittleEndian.Uint32(buf[4:8])\n\n\t// the compressed size may have filter info in the high bits\n\t// for some formats, but for LZMA it's typically clean\n\tblock := &blockInfo{\n\t\tuncompressedSize: szUnc,\n\t\tcompressedSize:   szCpr & 0x00ffffff, // lower 24 bits\n\t\tmethod:           buf[8],\n\t\tfilterID:         buf[9],\n\t\tfilterCTO:        buf[10],\n\t\tdataOffset:       offset + 12, // data starts right after b_info\n\t}\n\n\treturn block, nil\n}\n\n// nextPowerOf2 returns the smallest power of 2 >= n\nfunc nextPowerOf2(n uint32) uint32 {\n\tif n == 0 {\n\t\treturn 1\n\t}\n\t// if already a power of 2, return it\n\tif n&(n-1) == 0 {\n\t\treturn n\n\t}\n\t// find the highest set bit and shift left by 1\n\tn--\n\tn |= n >> 1\n\tn |= n >> 2\n\tn |= n >> 4\n\tn |= n >> 8\n\tn |= n >> 16\n\treturn n + 1\n}\n\n// decompressLZMA decompresses LZMA-compressed data as used by UPX.\n// UPX uses a 2-byte custom header format, not the standard 13-byte LZMA format.\n//\n// UPX 2-byte header encoding:\n//   - Byte 0: (t << 3) | pb, where t = lc + lp\n//   - Byte 1: (lp << 4) | lc\n//   - Byte 2+: raw LZMA stream (starts with 0x00 for range decoder init)\n//\n// Standard LZMA props encoding: props = lc + lp*9 + pb*9*5\nfunc decompressLZMA(compressedData []byte, uncompressedSize uint32) ([]byte, error) {\n\tif len(compressedData) < 3 {\n\t\treturn nil, fmt.Errorf(\"compressed data too short\")\n\t}\n\n\t// parse UPX's 2-byte LZMA header\n\tpb := compressedData[0] & 0x07\n\tlp := compressedData[1] >> 4\n\tlc := compressedData[1] & 0x0f\n\n\t// convert to standard LZMA properties byte\n\tprops := lc + lp*9 + pb*9*5\n\n\t// raw LZMA stream starts at byte 2 (includes 0x00 init byte)\n\tlzmaStream := compressedData[2:]\n\n\t// compute dictionary size: must be at least as large as uncompressed size\n\t// use next power of 2 for efficiency, with reasonable min/max bounds.\n\t// note: if you're seeing that testing small binaries works and large ones don't,\n\t// it may be that the dictionary size was not considered properly in this code.\n\tconst minDictSize = 64 * 1024         // 64KB minimum\n\tconst maxDictSize = 128 * 1024 * 1024 // 128MB maximum\n\tdictSize := nextPowerOf2(uncompressedSize)\n\tif dictSize < minDictSize {\n\t\tdictSize = minDictSize\n\t}\n\tif dictSize > maxDictSize {\n\t\tdictSize = maxDictSize\n\t}\n\n\t// construct standard 13-byte LZMA header\n\theader := make([]byte, 13)\n\theader[0] = props\n\tbinary.LittleEndian.PutUint32(header[1:5], dictSize)\n\tbinary.LittleEndian.PutUint64(header[5:13], uint64(uncompressedSize))\n\n\t// combine header + raw stream\n\tvar fullStream []byte\n\tfullStream = append(fullStream, header...)\n\tfullStream = append(fullStream, lzmaStream...)\n\n\treader, err := lzma.NewReader(bytes.NewReader(fullStream))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create LZMA reader: %w\", err)\n\t}\n\n\tdecompressed := make([]byte, uncompressedSize)\n\t_, err = io.ReadFull(reader, decompressed)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to decompress LZMA data: %w\", err)\n\t}\n\n\treturn decompressed, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/golang/upx_test.go",
    "content": "package golang\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIsUPXCompressed(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdata     []byte\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname:     \"contains UPX magic at start\",\n\t\t\tdata:     append([]byte(\"UPX!\"), make([]byte, 100)...),\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"contains UPX magic with offset\",\n\t\t\tdata:     append(append(make([]byte, 500), []byte(\"UPX!\")...), make([]byte, 100)...),\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"no UPX magic\",\n\t\t\tdata:     []byte(\"\\x7FELF\" + string(make([]byte, 100))),\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty data\",\n\t\t\tdata:     []byte{},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname:     \"partial UPX magic\",\n\t\t\tdata:     []byte(\"UPX\"),\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\treader := bytes.NewReader(tt.data)\n\t\t\tresult := isUPXCompressed(reader)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestParseUPXInfo_NotUPX(t *testing.T) {\n\tdata := []byte(\"\\x7FELF\" + string(make([]byte, 100)))\n\treader := bytes.NewReader(data)\n\n\t_, err := parseUPXInfo(reader)\n\trequire.Error(t, err)\n\tassert.ErrorIs(t, err, errNotUPX)\n}\n\nfunc TestParseUPXInfo_ValidHeader(t *testing.T) {\n\t// construct a minimal valid UPX header matching actual format\n\t// l_info: checksum (4) + magic (4) + lsize (2) + version (1) + format (1)\n\tlInfo := []byte{\n\t\t0, 0, 0, 0, // l_checksum (before magic)\n\t\t'U', 'P', 'X', '!', // magic\n\t\t0, 0, // l_lsize\n\t\t14, // l_version\n\t\t22, // l_format (ELF)\n\t}\n\n\t// p_info (12 bytes): progid + filesize + blocksize\n\tpInfo := []byte{\n\t\t0, 0, 0, 0, // p_progid\n\t\t0, 0, 0x10, 0, // p_filesize = 0x100000 (1MB) little-endian\n\t\t0, 0, 0x10, 0, // p_blocksize\n\t}\n\n\t// b_info (12 bytes): sz_unc + sz_cpr + method + filter info\n\tbInfo := []byte{\n\t\t0, 0, 0x10, 0, // sz_unc = 1MB\n\t\t0, 0, 0x08, 0, // sz_cpr = 512KB (compressed)\n\t\t14, 0, 0, 0, // method=LZMA, filter info\n\t}\n\n\tdata := append(append(lInfo, pInfo...), bInfo...)\n\tdata = append(data, make([]byte, 100)...) // padding\n\n\treader := bytes.NewReader(data)\n\tinfo, err := parseUPXInfo(reader)\n\n\trequire.NoError(t, err)\n\tassert.Equal(t, uint8(14), info.version)\n\tassert.Equal(t, uint8(22), info.format)\n\tassert.Equal(t, uint32(0x100000), info.originalSize)\n}\n\nfunc TestDecompressUPX_UnsupportedMethod(t *testing.T) {\n\t// construct a header with an unsupported compression method\n\tlInfo := []byte{\n\t\t0, 0, 0, 0, // l_checksum\n\t\t'U', 'P', 'X', '!',\n\t\t0, 0, // l_lsize\n\t\t14, 22, // version, format\n\t}\n\n\tpInfo := []byte{\n\t\t0, 0, 0, 0, // p_progid\n\t\t0x00, 0x01, 0x00, 0x00, // p_filesize = 256 bytes (small for test)\n\t\t0, 0, 0x10, 0, // p_blocksize\n\t}\n\n\tbInfo := []byte{\n\t\t0x00, 0x01, 0x00, 0x00, // sz_unc = 256\n\t\t0x80, 0x00, 0x00, 0x00, // sz_cpr = 128\n\t\t99, 0, 0, 0, // unsupported method\n\t}\n\n\tdata := append(append(lInfo, pInfo...), bInfo...)\n\tdata = append(data, make([]byte, 1000)...)\n\n\treader := bytes.NewReader(data)\n\t_, err := decompressUPX(reader)\n\n\trequire.Error(t, err)\n\tassert.ErrorIs(t, err, errUnsupportedUPXMethod)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: haskell # MANUAL\n    name: haskell-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/haskell/cataloger.go\n      function: NewHackageCataloger\n    selectors: # AUTO-GENERATED\n      - cabal\n      - declared\n      - directory\n      - hackage\n      - haskell\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseCabalFreeze\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/cabal.project.freeze'\n        package_types: # AUTO-GENERATED\n          - hackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseStackLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/stack.yaml.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.HackageStackYamlLockEntry\n        package_types: # AUTO-GENERATED\n          - hackage\n        json_schema_types: # AUTO-GENERATED\n          - HaskellHackageStackLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - HackageStackYamlLockEntry.PkgHash\n      - function: parseStackYaml\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/stack.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.HackageStackYamlEntry\n        package_types: # AUTO-GENERATED\n          - hackage\n        json_schema_types: # AUTO-GENERATED\n          - HaskellHackageStackEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - HackageStackYamlEntry.PkgHash\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/cataloger.go",
    "content": "/*\nPackage haskell provides a concrete Cataloger implementation relating to packages within the Haskell language ecosystem.\n*/\npackage haskell\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// TODO: it seems that the stack.yaml/stack.lock/cabal.project.freeze have different purposes and could have different installation intentions\n// (some describe intent and are meant to be used by a tool to resolve more dependencies while others describe the actual installed state).\n// This hints at splitting these into multiple catalogers, but for now we'll keep them together.\n\n// NewHackageCataloger returns a new Haskell cataloger object.\nfunc NewHackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"haskell-cataloger\").\n\t\tWithParserByGlobs(parseStackYaml, \"**/stack.yaml\").\n\t\tWithParserByGlobs(parseStackLock, \"**/stack.yaml.lock\").\n\t\tWithParserByGlobs(parseCabalFreeze, \"**/cabal.project.freeze\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/cataloger_test.go",
    "content": "package haskell\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain stack and cabal files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/stack.yaml\",\n\t\t\t\t\"src/stack.yaml.lock\",\n\t\t\t\t\"src/cabal.project.freeze\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewHackageCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/package.go",
    "content": "package haskell\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackage(name, version string, m any, location file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tPURL:      packageURL(name, version),\n\t\tLanguage:  pkg.Haskell,\n\t\tType:      pkg.HackagePkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeHackage,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_cabal_freeze.go",
    "content": "package haskell\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseCabalFreeze\n\n// parseCabalFreeze is a parser function for cabal.project.freeze contents, returning all packages discovered.\nfunc parseCabalFreeze(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tr := bufio.NewReader(reader)\n\tvar pkgs []pkg.Package\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tswitch {\n\t\tcase errors.Is(err, io.EOF):\n\t\t\treturn pkgs, nil, nil\n\t\tcase err != nil:\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse cabal.project.freeze file: %w\", err)\n\t\t}\n\n\t\tif !strings.Contains(line, \"any.\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tline = strings.TrimSpace(line)\n\t\tstartPkgEncoding, endPkgEncoding := strings.Index(line, \"any.\")+4, strings.Index(line, \",\")\n\t\t// case where comma not found for last package in constraint list\n\t\tif endPkgEncoding == -1 {\n\t\t\tendPkgEncoding = len(line)\n\t\t}\n\t\tif startPkgEncoding >= endPkgEncoding || startPkgEncoding < 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tline = line[startPkgEncoding:endPkgEncoding]\n\t\tfields := strings.Split(line, \" ==\")\n\n\t\tpkgName, pkgVersion := fields[0], fields[1]\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPackage(\n\t\t\t\tpkgName,\n\t\t\t\tpkgVersion,\n\t\t\t\tnil,\n\t\t\t\treader.Location,\n\t\t\t),\n\t\t)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_cabal_freeze_test.go",
    "content": "package haskell\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseCabalFreeze(t *testing.T) {\n\tfixture := \"testdata/cabal.project.freeze\"\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"Cabal\",\n\t\t\tVersion:   \"3.2.1.0\",\n\t\t\tPURL:      \"pkg:hackage/Cabal@3.2.1.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"Diff\",\n\t\t\tVersion:   \"0.4.1\",\n\t\t\tPURL:      \"pkg:hackage/Diff@0.4.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"HTTP\",\n\t\t\tVersion:   \"4000.3.16\",\n\t\t\tPURL:      \"pkg:hackage/HTTP@4000.3.16\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"HUnit\",\n\t\t\tVersion:   \"1.6.2.0\",\n\t\t\tPURL:      \"pkg:hackage/HUnit@1.6.2.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"OneTuple\",\n\t\t\tVersion:   \"0.3.1\",\n\t\t\tPURL:      \"pkg:hackage/OneTuple@0.3.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"Only\",\n\t\t\tVersion:   \"0.1\",\n\t\t\tPURL:      \"pkg:hackage/Only@0.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"PyF\",\n\t\t\tVersion:   \"0.10.2.0\",\n\t\t\tPURL:      \"pkg:hackage/PyF@0.10.2.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"QuickCheck\",\n\t\t\tVersion:   \"2.14.2\",\n\t\t\tPURL:      \"pkg:hackage/QuickCheck@2.14.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"RSA\",\n\t\t\tVersion:   \"2.4.1\",\n\t\t\tPURL:      \"pkg:hackage/RSA@2.4.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"SHA\",\n\t\t\tVersion:   \"1.6.4.4\",\n\t\t\tPURL:      \"pkg:hackage/SHA@1.6.4.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t\t{\n\t\t\tName:      \"Spock\",\n\t\t\tVersion:   \"0.14.0.0\",\n\t\t\tPURL:      \"pkg:hackage/Spock@0.14.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseCabalFreeze, expectedPkgs, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_stack_lock.go",
    "content": "package haskell\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseStackLock\n\ntype stackLock struct {\n\tPackages  []stackPackage  `yaml:\"packages\"`\n\tSnapshots []stackSnapshot `yaml:\"snapshots\"`\n}\n\ntype stackPackage struct {\n\tCompleted completedPackage `yaml:\"completed\"`\n}\n\ntype completedPackage struct {\n\tHackage string `yaml:\"hackage\"`\n}\n\ntype stackSnapshot struct {\n\tCompleted completedSnapshot `yaml:\"completed\"`\n}\n\ntype completedSnapshot struct {\n\tURL string `yaml:\"url\"`\n\tSha string `yaml:\"sha256\"`\n}\n\n// parseStackLock is a parser function for stack.yaml.lock contents, returning all packages discovered.\nfunc parseStackLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar lockFile stackLock\n\n\tif err := yaml.NewDecoder(reader).Decode(&lockFile); err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", reader.RealPath).Trace(\"failed to parse stack.yaml.lock\")\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse stack.yaml.lock file: %w\", err)\n\t}\n\n\tvar (\n\t\tpkgs        []pkg.Package\n\t\tsnapshotURL string\n\t)\n\n\tfor _, snap := range lockFile.Snapshots {\n\t\t// TODO: handle multiple snapshots (split the metadata struct into more distinct structs and types)\n\t\tsnapshotURL = snap.Completed.URL\n\t}\n\n\tfor _, pack := range lockFile.Packages {\n\t\tif pack.Completed.Hackage == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tpkgName, pkgVersion, pkgHash := parseStackPackageEncoding(pack.Completed.Hackage)\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPackage(\n\t\t\t\tpkgName,\n\t\t\t\tpkgVersion,\n\t\t\t\tpkg.HackageStackYamlLockEntry{\n\t\t\t\t\tPkgHash:     pkgHash,\n\t\t\t\t\tSnapshotURL: snapshotURL,\n\t\t\t\t},\n\t\t\t\treader.Location,\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc parseStackPackageEncoding(pkgEncoding string) (name, version, hash string) {\n\tlastDashIdx := strings.LastIndex(pkgEncoding, \"-\")\n\tif lastDashIdx == -1 {\n\t\tname = pkgEncoding\n\t\treturn\n\t}\n\tname = pkgEncoding[:lastDashIdx]\n\tremainingEncoding := pkgEncoding[lastDashIdx+1:]\n\tencodingSplits := strings.Split(remainingEncoding, \"@\")\n\tversion = encodingSplits[0]\n\tif len(encodingSplits) > 1 {\n\t\tstartHash, endHash := strings.Index(encodingSplits[1], \":\")+1, strings.Index(encodingSplits[1], \",\")\n\t\thash = encodingSplits[1][startHash:endHash]\n\t}\n\treturn\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_stack_lock_test.go",
    "content": "package haskell\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseStackLock(t *testing.T) {\n\turl := \"https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/14.yaml\"\n\tfixture := \"testdata/stack.yaml.lock\"\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"HTTP\",\n\t\t\tVersion:   \"4000.3.16\",\n\t\t\tPURL:      \"pkg:hackage/HTTP@4000.3.16\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"configurator-pg\",\n\t\t\tVersion:   \"0.2.6\",\n\t\t\tPURL:      \"pkg:hackage/configurator-pg@0.2.6\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hasql-dynamic-statements\",\n\t\t\tVersion:   \"0.3.1.1\",\n\t\t\tPURL:      \"pkg:hackage/hasql-dynamic-statements@0.3.1.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"2cfe6e75990e690f595a87cbe553f2e90fcd738610f6c66749c81cc4396b2cc4\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hasql-implicits\",\n\t\t\tVersion:   \"0.1.0.4\",\n\t\t\tPURL:      \"pkg:hackage/hasql-implicits@0.1.0.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"0848d3cbc9d94e1e539948fa0be4d0326b26335034161bf8076785293444ca6f\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hasql-pool\",\n\t\t\tVersion:   \"0.5.2.2\",\n\t\t\tPURL:      \"pkg:hackage/hasql-pool@0.5.2.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"b56d4dea112d97a2ef4b2749508c0ca646828cb2d77b827e8dc433d249bb2062\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"lens-aeson\",\n\t\t\tVersion:   \"1.1.3\",\n\t\t\tPURL:      \"pkg:hackage/lens-aeson@1.1.3\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"optparse-applicative\",\n\t\t\tVersion:   \"0.16.1.0\",\n\t\t\tPURL:      \"pkg:hackage/optparse-applicative@0.16.1.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"protolude\",\n\t\t\tVersion:   \"0.3.2\",\n\t\t\tPURL:      \"pkg:hackage/protolude@0.3.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ptr\",\n\t\t\tVersion:   \"0.16.8.2\",\n\t\t\tPURL:      \"pkg:hackage/ptr@0.16.8.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlLockEntry{\n\t\t\t\tPkgHash:     \"708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac\",\n\t\t\t\tSnapshotURL: url,\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseStackLock, expectedPkgs, expectedRelationships)\n}\n\nfunc Test_corruptStackLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/stack.yaml.lock\").\n\t\tWithError().\n\t\tTestParser(t, parseStackLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_stack_yaml.go",
    "content": "package haskell\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseStackYaml\n\ntype stackYaml struct {\n\tExtraDeps []string `yaml:\"extra-deps\"`\n}\n\n// parseStackYaml is a parser function for stack.yaml contents, returning all packages discovered.\nfunc parseStackYaml(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar stackFile stackYaml\n\n\tif err := yaml.NewDecoder(reader).Decode(&stackFile); err != nil {\n\t\tlog.WithFields(\"error\", err, \"path\", reader.RealPath).Trace(\"failed to parse stack.yaml\")\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse stack.yaml file: %w\", err)\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, dep := range stackFile.ExtraDeps {\n\t\tpkgName, pkgVersion, pkgHash := parseStackPackageEncoding(dep)\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPackage(\n\t\t\t\tpkgName,\n\t\t\t\tpkgVersion,\n\t\t\t\tpkg.HackageStackYamlEntry{\n\t\t\t\t\tPkgHash: pkgHash,\n\t\t\t\t},\n\t\t\t\treader.Location,\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/parse_stack_yaml_test.go",
    "content": "package haskell\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseStackYaml(t *testing.T) {\n\tfixture := \"testdata/stack.yaml\"\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"ShellCheck\",\n\t\t\tVersion:   \"0.8.0\",\n\t\t\tPURL:      \"pkg:hackage/ShellCheck@0.8.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"353c9322847b661e4c6f7c83c2acf8e5c08b682fbe516c7d46c29605937543df\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"colourista\",\n\t\t\tVersion:   \"0.1.0.1\",\n\t\t\tPURL:      \"pkg:hackage/colourista@0.1.0.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"98353ee0e2f5d97d2148513f084c1cd37dfda03e48aa9dd7a017c9d9c0ba710e\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"language-docker\",\n\t\t\tVersion:   \"11.0.0\",\n\t\t\tPURL:      \"pkg:hackage/language-docker@11.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"3406ff0c1d592490f53ead8cf2cd22bdf3d79fd125ccaf3add683f6d71c24d55\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"spdx\",\n\t\t\tVersion:   \"1.0.0.2\",\n\t\t\tPURL:      \"pkg:hackage/spdx@1.0.0.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"7dfac9b454ff2da0abb7560f0ffbe00ae442dd5cb76e8be469f77e6988a70fed\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hspec\",\n\t\t\tVersion:   \"2.9.4\",\n\t\t\tPURL:      \"pkg:hackage/hspec@2.9.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"658a6a74d5a70c040edd6df2a12228c6d9e63082adaad1ed4d0438ad082a0ef3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hspec-core\",\n\t\t\tVersion:   \"2.9.4\",\n\t\t\tPURL:      \"pkg:hackage/hspec-core@2.9.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"a126e9087409fef8dcafcd2f8656456527ac7bb163ed4d9cb3a57589042a5fe8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"hspec-discover\",\n\t\t\tVersion:   \"2.9.4\",\n\t\t\tPURL:      \"pkg:hackage/hspec-discover@2.9.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"stm\",\n\t\t\tVersion:   \"2.5.0.2\",\n\t\t\tPURL:      \"pkg:hackage/stm@2.5.0.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.Haskell,\n\t\t\tType:      pkg.HackagePkg,\n\t\t\tMetadata: pkg.HackageStackYamlEntry{\n\t\t\t\tPkgHash: \"e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parseStackYaml, expectedPkgs, expectedRelationships)\n\n}\n\nfunc Test_corruptStackYaml(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/stack.yaml\").\n\t\tWithError().\n\t\tTestParser(t, parseStackYaml)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/testdata/cabal.project.freeze",
    "content": "active-repositories: hackage.haskell.org:merge\nconstraints: any.Cabal ==3.2.1.0,\n             any.Diff ==0.4.1,\n             any.HTTP ==4000.3.16,\n             any.HUnit ==1.6.2.0,\n             any.OneTuple ==0.3.1,\n             tls +compat -hans +network,\n             any.Only ==0.1,\n             any.PyF ==0.10.2.0,\n             any.QuickCheck ==2.14.2,\n             semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers,\n             any.RSA ==2.4.1,\n             any.SHA ==1.6.4.4,\n             void -safe,\n             any.Spock ==0.14.0.0\n\nindex-state: hackage.haskell.org 2022-07-07T01:01:53Z\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/testdata/corrupt/stack.yaml",
    "content": "flag\nextra-package-dbs: []\npacka@sha256:fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6,2165\n  - stm-2.5.0.2@sha256:e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55,2314\nghc-options:\n  \"$everything\": -haddock\n"
  },
  {
    "path": "syft/pkg/cataloger/haskell/testdata/glob-paths/src/cabal.project.freeze",
    "content": "cabal.project.freeze"
  },
  {
    "path": "syft/pkg/cataloger/haskell/testdata/glob-paths/src/stack.yaml",
    "content": "bogus stack.yaml"
  },
  {
    "path": "syft/pkg/cataloger/haskell/testdata/stack.yaml",
    "content": "flags: {}\nextra-package-dbs: []\npackages:\n  - .\nresolver: lts-18.28\nextra-deps:\n  - ShellCheck-0.8.0@sha256:353c9322847b661e4c6f7c83c2acf8e5c08b682fbe516c7d46c29605937543df,3297\n  - colourista-0.1.0.1@sha256:98353ee0e2f5d97d2148513f084c1cd37dfda03e48aa9dd7a017c9d9c0ba710e,3307\n  - language-docker-11.0.0@sha256:3406ff0c1d592490f53ead8cf2cd22bdf3d79fd125ccaf3add683f6d71c24d55,3883\n  - spdx-1.0.0.2@sha256:7dfac9b454ff2da0abb7560f0ffbe00ae442dd5cb76e8be469f77e6988a70fed,2008\n  - hspec-2.9.4@sha256:658a6a74d5a70c040edd6df2a12228c6d9e63082adaad1ed4d0438ad082a0ef3,1709\n  - hspec-core-2.9.4@sha256:a126e9087409fef8dcafcd2f8656456527ac7bb163ed4d9cb3a57589042a5fe8,6498\n  - hspec-discover-2.9.4@sha256:fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6,2165\n  - stm-2.5.0.2@sha256:e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55,2314\nghc-options:\n  \"$everything\": -haddock\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: homebrew # MANUAL\n    name: homebrew-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/homebrew/cataloger.go\n      function: NewCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - homebrew\n      - image\n      - installed\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseHomebrewFormula\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Cellar/*/*/.brew/*.rb'\n            - '**/Library/Taps/*/*/Formula/*.rb'\n        metadata_types: # AUTO-GENERATED\n          - pkg.HomebrewFormula\n        package_types: # AUTO-GENERATED\n          - homebrew\n        json_schema_types: # AUTO-GENERATED\n          - HomebrewFormula\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/cataloger.go",
    "content": "package homebrew\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc NewCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"homebrew-cataloger\").\n\t\tWithParserByGlobs(\n\t\t\tparseHomebrewFormula,\n\t\t\t// forumulas are located at $(brew --repository)/Cellar\n\t\t\t\"**/Cellar/*/*/.brew/*.rb\",\n\t\t\t// taps are located at $(brew --repository)/Library/Taps\n\t\t\t\"**/Library/Taps/*/*/Formula/*.rb\",\n\t\t)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/cataloger_test.go",
    "content": "package homebrew\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_HomebrewCataloger_Globs(t *testing.T) {\n\tfixture := \"testdata/install-example\"\n\n\texpected := []string{\n\t\t\"opt/homebrew/Cellar/foo/1.2.3/.brew/foo.rb\",\n\t\t\"opt/homebrew/Library/Taps/testorg/sometap/Formula/bar.rb\",\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, fixture).\n\t\tExpectsResolverContentQueries(expected).\n\t\tTestCataloger(t, NewCataloger())\n}\n\nfunc Test_HomebrewCataloger(t *testing.T) {\n\n\ttests := []struct {\n\t\tname         string\n\t\tpath         string\n\t\texpected     []pkg.Package\n\t\texpectedRels []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tpath: \"testdata/install-example\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"bar\",\n\t\t\t\t\tVersion: \"4.5.6\",\n\t\t\t\t\tType:    pkg.HomebrewPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"opt/homebrew/Library/Taps/testorg/sometap/Formula/bar.rb\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValues(\"MIT\")...),\n\t\t\t\t\tFoundBy:  \"homebrew-cataloger\",\n\t\t\t\t\tPURL:     \"pkg:brew/bar@4.5.6\",\n\t\t\t\t\tMetadata: pkg.HomebrewFormula{\n\t\t\t\t\t\tTap:         \"testorg/sometap\",\n\t\t\t\t\t\tHomepage:    \"https://example.com/bar\",\n\t\t\t\t\t\tDescription: \"A test Homebrew formula for bar\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"foo\",\n\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t\tType:    pkg.HomebrewPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"opt/homebrew/Cellar/foo/1.2.3/.brew/foo.rb\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValues(\"Apache 2.0\")...),\n\t\t\t\t\tFoundBy:  \"homebrew-cataloger\",\n\t\t\t\t\tPURL:     \"pkg:brew/foo@1.2.3\",\n\t\t\t\t\tMetadata: pkg.HomebrewFormula{\n\t\t\t\t\t\tHomepage:    \"https://example.com/foo\",\n\t\t\t\t\t\tDescription: \"A test Homebrew formula for Foo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.path).\n\t\t\t\tExpects(tt.expected, tt.expectedRels).\n\t\t\t\tTestCataloger(t, NewCataloger())\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/package.go",
    "content": "package homebrew\n\nimport (\n\t\"context\"\n\t\"path\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newHomebrewPackage(ctx context.Context, resolver file.Resolver, pd parsedHomebrewData, formulaLocation file.Location) pkg.Package {\n\tvar lics []pkg.License\n\tif pd.License != \"\" {\n\t\tlics = append(lics, pkg.NewLicensesFromValues(pd.License)...)\n\t} else {\n\t\t// sometimes licenses are included in the parent directory\n\t\tlics = licenses.FindInDirs(ctx, resolver, path.Dir(formulaLocation.Path()))\n\t}\n\n\tp := pkg.Package{\n\t\tName:      pd.Name,\n\t\tVersion:   pd.Version,\n\t\tType:      pkg.HomebrewPkg,\n\t\tLocations: file.NewLocationSet(formulaLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(lics...),\n\t\tFoundBy:   \"homebrew-cataloger\",\n\t\tPURL:      packageURL(pd.Name, pd.Version),\n\t\tMetadata: pkg.HomebrewFormula{\n\t\t\tTap:         pd.Tap,\n\t\t\tHomepage:    pd.Homepage,\n\t\t\tDescription: pd.Desc,\n\t\t},\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc packageURL(name, version string) string {\n\tpurl := packageurl.NewPackageURL(\n\t\t\"brew\",\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t)\n\treturn purl.ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/package_test.go",
    "content": "package homebrew\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tpackageName    string\n\t\tpackageVersion string\n\t\texpected       string\n\t}{\n\t\t// preemptive based on https://github.com/package-url/purl-spec/pull/281\n\t\t{\n\t\t\tname:           \"standard homebrew package URL\",\n\t\t\tpackageName:    \"foo\",\n\t\t\tpackageVersion: \"1.2.3\",\n\t\t\texpected:       \"pkg:brew/foo@1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname:           \"another example\",\n\t\t\tpackageName:    \"bar\",\n\t\t\tpackageVersion: \"9.8.7\",\n\t\t\texpected:       \"pkg:brew/bar@9.8.7\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURL(test.packageName, test.packageVersion)\n\t\t\tassert.Equal(t, test.expected, actual, \"expected package URL to match\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/parse_homebrew_formula.go",
    "content": "package homebrew\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype parsedHomebrewData struct {\n\tTap      string\n\tName     string\n\tVersion  string\n\tDesc     string\n\tHomepage string\n\tLicense  string\n}\n\nfunc parseHomebrewFormula(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpd, err := parseFormulaFile(reader)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", reader.RealPath).Trace(\"failed to parse formula\")\n\t\treturn nil, nil, err\n\t}\n\n\tif pd == nil {\n\t\treturn nil, nil, nil\n\t}\n\n\treturn []pkg.Package{\n\t\tnewHomebrewPackage(\n\t\t\tctx,\n\t\t\tresolver,\n\t\t\t*pd,\n\t\t\treader.Location,\n\t\t),\n\t}, nil, nil\n}\n\nfunc parseFormulaFile(reader file.LocationReadCloser) (*parsedHomebrewData, error) {\n\tpd := parsedHomebrewData{}\n\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\tline := strings.TrimSpace(scanner.Text())\n\t\tif strings.Contains(line, \"class \") && strings.Contains(line, \" < Formula\") {\n\t\t\t// this is the start of the class declaration, ignore anything before this\n\t\t\tpd = parsedHomebrewData{}\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase matchesVariable(line, \"desc\"):\n\t\t\tpd.Desc = getQuotedValue(line)\n\t\tcase matchesVariable(line, \"homepage\"):\n\t\t\tpd.Homepage = getQuotedValue(line)\n\t\tcase matchesVariable(line, \"license\"):\n\t\t\tpd.License = getQuotedValue(line)\n\t\tcase matchesVariable(line, \"name\"):\n\t\t\tpd.Name = getQuotedValue(line)\n\t\tcase matchesVariable(line, \"version\"):\n\t\t\tpd.Version = getQuotedValue(line)\n\t\t}\n\t}\n\n\tpd.Tap = getTapFromPath(reader.RealPath)\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif pd.Name != \"\" && pd.Version != \"\" {\n\t\treturn &pd, nil\n\t}\n\n\tpd.Name, pd.Version = getNameAndVersionFromPath(reader.RealPath)\n\n\treturn &pd, nil\n}\n\nfunc matchesVariable(line, name string) bool {\n\t// should return true if the line starts with \"name<space>\" or \"name<tab>\"\n\treturn strings.HasPrefix(line, name+\" \") || strings.HasPrefix(line, name+\"\\t\")\n}\n\nfunc getNameAndVersionFromPath(p string) (string, string) {\n\tif p == \"\" {\n\t\treturn \"\", \"\"\n\t}\n\n\tpathParts := strings.Split(p, \"/\")\n\n\t// extract from a formula path...\n\t// e.g. /opt/homebrew/Cellar/foo/1.0.0/.brew/foo.rb\n\tvar name, ver string\n\tfor i := len(pathParts) - 1; i >= 0; i-- {\n\t\tif pathParts[i] == \".brew\" && i-2 >= 0 {\n\t\t\tname = pathParts[i-2]\n\t\t\tver = pathParts[i-1]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif name == \"\" {\n\t\t// get it from the filename\n\t\tname = strings.TrimSuffix(path.Base(p), \".rb\")\n\t}\n\n\treturn name, ver\n}\n\nfunc getTapFromPath(path string) string {\n\t// get testorg/sometap from opt/homebrew/Library/Taps/testorg/sometap/Formula/bar.rb\n\t// key off of Library/Taps/ as the path just before the org/tap name\n\n\tpaths := strings.Split(path, \"Library/Taps/\")\n\tif len(paths) < 2 {\n\t\treturn \"\"\n\t}\n\n\tpaths = strings.Split(paths[1], \"/\")\n\tif len(paths) < 2 {\n\t\treturn \"\"\n\t}\n\treturn strings.Join(paths[0:2], \"/\")\n}\n\nfunc getQuotedValue(s string) string {\n\ts = strings.TrimSpace(s)\n\tif s == \"\" {\n\t\treturn \"\"\n\t}\n\n\tstart := strings.Index(s, \"\\\"\")\n\tif start == -1 {\n\t\treturn \"\"\n\t}\n\n\tend := strings.LastIndex(s, \"\\\"\")\n\tif end == -1 || end <= start {\n\t\treturn \"\"\n\t}\n\n\treturn s[start+1 : end]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/parse_homebrew_formula_test.go",
    "content": "package homebrew\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_ParseHomebrewPackage(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname:    \"syft example\",\n\t\t\tfixture: \"testdata/formulas/syft/1.23.1/.brew/syft.rb\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"syft\",\n\t\t\t\tVersion: \"1.23.1\",\n\t\t\t\tType:    pkg.HomebrewPkg,\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewLocation(\"testdata/formulas/syft/1.23.1/.brew/syft.rb\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t),\n\t\t\t\tLicenses: pkg.NewLicenseSet(pkg.NewLicensesFromValues(\"Apache License 2.0\")...),\n\t\t\t\tFoundBy:  \"homebrew-cataloger\",\n\t\t\t\tPURL:     \"pkg:brew/syft@1.23.1\",\n\t\t\t\tMetadata: pkg.HomebrewFormula{\n\t\t\t\t\tHomepage:    \"https://github.com/anchore/syft\",\n\t\t\t\t\tDescription: \"A tool that generates a Software Bill Of Materials (SBOM) from container images and filesystems\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"crazy example\",\n\t\t\tfixture: \"testdata/formulas/crazy/1.0.0/.brew/crazy.rb\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:    \"crazy\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t\tType:    pkg.HomebrewPkg,\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tfile.NewLocation(\"testdata/formulas/crazy/1.0.0/.brew/crazy.rb\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t),\n\t\t\t\tFoundBy: \"homebrew-cataloger\",\n\t\t\t\tPURL:    \"pkg:brew/crazy@1.0.0\",\n\t\t\t\tMetadata: pkg.HomebrewFormula{\n\t\t\t\t\tHomepage: \"https://www.example.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.TestFileParser(t, test.fixture, parseHomebrewFormula, []pkg.Package{test.expected}, nil)\n\t\t})\n\t}\n}\n\nfunc TestGetTapFromPath(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpath     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"valid path\",\n\t\t\tpath:     \"/opt/homebrew/Library/Taps/testorg/sometap/Formula/bar.rb\",\n\t\t\texpected: \"testorg/sometap\",\n\t\t},\n\t\t{\n\t\t\tname:     \"valid path with different prefix\",\n\t\t\tpath:     \"/usr/local/Library/Taps/otherorg/anothertap/Formula/foo.rb\",\n\t\t\texpected: \"otherorg/anothertap\",\n\t\t},\n\t\t{\n\t\t\tname:     \"missing Library/Taps\",\n\t\t\tpath:     \"/opt/homebrew/Cellar/formula.rb\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"incomplete path after Taps\",\n\t\t\tpath:     \"/opt/homebrew/Library/Taps/testorg\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty path\",\n\t\t\tpath:     \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := getTapFromPath(tt.path)\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"getTapFromPath(%q) = %q, want %q\", tt.path, result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetNameAndVersionFromPath(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tpath         string\n\t\texpectedName string\n\t\texpectedVer  string\n\t}{\n\t\t{\n\t\t\tname:         \"formula path\",\n\t\t\tpath:         \"/opt/homebrew/Cellar/foo/1.0.0/.brew/foo.rb\",\n\t\t\texpectedName: \"foo\",\n\t\t\texpectedVer:  \"1.0.0\",\n\t\t},\n\t\t{\n\t\t\tname:         \"formula path with different version\",\n\t\t\tpath:         \"/opt/homebrew/Cellar/bar/2.3.4/.brew/bar.rb\",\n\t\t\texpectedName: \"bar\",\n\t\t\texpectedVer:  \"2.3.4\",\n\t\t},\n\t\t{\n\t\t\tname:         \"path without .brew directory\",\n\t\t\tpath:         \"/opt/homebrew/Formula/baz.rb\",\n\t\t\texpectedName: \"baz\",\n\t\t\texpectedVer:  \"\",\n\t\t},\n\t\t{\n\t\t\tname:         \"path with file extension different than filename\",\n\t\t\tpath:         \"/opt/homebrew/Cellar/qux-tool/5.0.1/.brew/qux.rb\",\n\t\t\texpectedName: \"qux-tool\",\n\t\t\texpectedVer:  \"5.0.1\",\n\t\t},\n\t\t{\n\t\t\tname:         \"empty path\",\n\t\t\tpath:         \"\",\n\t\t\texpectedName: \"\",\n\t\t\texpectedVer:  \"\",\n\t\t},\n\t\t{\n\t\t\tname:         \"path with no extension\",\n\t\t\tpath:         \"/opt/homebrew/Formula/quux\",\n\t\t\texpectedName: \"quux\",\n\t\t\texpectedVer:  \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tname, ver := getNameAndVersionFromPath(tt.path)\n\t\t\tif name != tt.expectedName {\n\t\t\t\tt.Errorf(\"getNameAndVersionFromPath(%q) name = %q, want %q\", tt.path, name, tt.expectedName)\n\t\t\t}\n\t\t\tif ver != tt.expectedVer {\n\t\t\t\tt.Errorf(\"getNameAndVersionFromPath(%q) version = %q, want %q\", tt.path, ver, tt.expectedVer)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestGetQuotedValue(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"simple quoted string\",\n\t\t\tinput:    \"\\\"hello\\\"\",\n\t\t\texpected: \"hello\",\n\t\t},\n\t\t{\n\t\t\tname:     \"quoted string with whitespace outside\",\n\t\t\tinput:    \"  \\\"hello world\\\"  \",\n\t\t\texpected: \"hello world\",\n\t\t},\n\t\t{\n\t\t\tname:     \"quoted string with content before and after\",\n\t\t\tinput:    \"prefix \\\"extracted value\\\" suffix\",\n\t\t\texpected: \"extracted value\",\n\t\t},\n\t\t{\n\t\t\tname:     \"multiple quotes - extract first to last\",\n\t\t\tinput:    \"\\\"first\\\" something \\\"last\\\"\",\n\t\t\texpected: \"first\\\" something \\\"last\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nested quotes\",\n\t\t\tinput:    \"\\\"outer \\\"inner\\\" outer\\\"\",\n\t\t\texpected: \"outer \\\"inner\\\" outer\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty quoted string\",\n\t\t\tinput:    \"\\\"\\\"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"only opening quote\",\n\t\t\tinput:    \"\\\"unbalanced\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"only closing quote\",\n\t\t\tinput:    \"unbalanced\\\"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty string\",\n\t\t\tinput:    \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"whitespace only\",\n\t\t\tinput:    \"   \",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"no quotes\",\n\t\t\tinput:    \"hello world\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := getQuotedValue(tt.input)\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"getQuotedValue(%q) = %q, want %q\", tt.input, result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMatchesVariable(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tline         string\n\t\tvariableName string\n\t\texpected     bool\n\t}{\n\t\t{\n\t\t\tname:         \"matches with space\",\n\t\t\tline:         \"foo = bar\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     true,\n\t\t},\n\t\t{\n\t\t\tname:         \"matches with tab\",\n\t\t\tline:         \"bar\\tvalue\",\n\t\t\tvariableName: \"bar\",\n\t\t\texpected:     true,\n\t\t},\n\t\t{\n\t\t\tname:         \"no match - different variable\",\n\t\t\tline:         \"baz = value\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     false,\n\t\t},\n\t\t{\n\t\t\tname:         \"no match - substring\",\n\t\t\tline:         \"foobar = value\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     false,\n\t\t},\n\t\t{\n\t\t\tname:         \"no match - no space or tab\",\n\t\t\tline:         \"foo=value\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     false,\n\t\t},\n\t\t{\n\t\t\tname:         \"no match - empty line\",\n\t\t\tline:         \"\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     false,\n\t\t},\n\t\t{\n\t\t\tname:         \"matches with space and complex value\",\n\t\t\tline:         \"complex_var complex value with spaces\",\n\t\t\tvariableName: \"complex_var\",\n\t\t\texpected:     true,\n\t\t},\n\t\t{\n\t\t\tname:         \"case sensitive - different case\",\n\t\t\tline:         \"FOO = value\",\n\t\t\tvariableName: \"foo\",\n\t\t\texpected:     false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := matchesVariable(tt.line, tt.variableName)\n\t\t\tif result != tt.expected {\n\t\t\t\tt.Errorf(\"matchesVariable(%q, %q) = %v, want %v\",\n\t\t\t\t\ttt.line, tt.variableName, result, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/testdata/formulas/crazy/1.0.0/.brew/crazy.rb",
    "content": "# source: https://github.com/syhw/homebrew/blob/174cc1183a7d45e4c87efbc7715ea1016234715c/Library/Contributions/example-formula.rb\n\n# This is a non-functional example formula to showcase all features and\n# therefore, it's overly complex and dupes stuff just to comment on it.\n# You may want to use `brew create` to start your own new formula!\n# Documentation: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md\n\n## Naming -- Every Homebrew formula is a class of the type `Formula`.\n# Ruby classes have to start Upper case and dashes are not allowed.\n# So we transform: `example-formula.rb` into `ExampleFormula`. Further,\n# Homebrew does enforce that the name of the file and the class correspond.\n# Check with `brew search` that the name is free.\n# name = \"FALSE POSITIVE comment\"\n# version = \"ALSO FALSE POSITIVE comment\"\n\nname = \"FALSE POSITIVE global\"\nversion = \"ALSO FALSE POSITIVE global\"\n\nclass ExampleFormula < Formula\n  homepage \"https://www.example.com\" # used by `brew home example-formula`.\n  revision 1 # This is used when there's no new version but it needs recompiling for another reason.\n             # 0 is default & unwritten.\n\n  # The url of the archive. Prefer https (security and proxy issues):\n  url \"https://packed.sources.and.we.prefer.https.example.com/archive-1.2.3.tar.bz2\"\n  mirror \"https://in.case.the.host.is.down.example.com\" # `mirror` is optional.\n  mirror \"https://in.case.the.mirror.is.down.example.com\" # Mirrors are limitless, but don't go too wild.\n\n  # Optionally specify the download strategy `:using => ...`\n  #     `:git`, `:hg`, `:svn`, `:bzr`, `:cvs`,\n  #     `:curl` (normal file download. Will also extract.)\n  #     `:nounzip` (without extracting)\n  #     `:post` (download via an HTTP POST)\n  #     `S3DownloadStrategy` (download from S3 using signed request)\n  url \"https://some.dont.provide.archives.example.com\", :using => :git, :tag => \"1.2.3\"\n\n  # version is seldom needed, because it's usually autodetected from the URL/tag.\n  # version \"1.2-final\"\n\n  # For integrity and security, we verify the hash (`openssl dgst -sha1 <FILE>`)\n  # You may also use sha256 if the software uses sha256 on their homepage. Do not use md5.\n  # Either generate the sha locally or leave it empty & `brew install` will tell you the expected.\n  sha1 \"cafebabe78901234567890123456789012345678\"\n\n  # Stable-only dependencies should be nested inside a `stable` block rather than\n  # using a conditional. It is preferrable to also pull the URL and checksum into\n  # the block if one is necessary.\n  stable do\n    url \"https://example.com/foo-1.0.tar.gz\"\n    sha1 \"cafebabe78901234567890123456789012345678\"\n\n    depends_on \"libxml2\"\n    depends_on \"libffi\"\n  end\n\n  # Optionally, specify a repository to be used. Brew then generates a\n  # `--HEAD` option. Remember to also test it.\n  # The download strategies (:using =>) are the same as for `url`.\n  # \"master\" is the default branch and doesn't need stating with a :branch conditional\n  head \"https://we.prefer.https.over.git.example.com/.git\"\n  head \"https://example.com/.git\", :branch => \"name_of_branch\", :revision => \"abc123\"\n  head \"https://hg.is.awesome.but.git.has.won.example.com/\", :using => :hg # If autodetect fails.\n\n  head do\n    url \"https://example.com/repo.git\"\n\n    depends_on \"autoconf\" => :build\n    depends_on \"automake\" => :build\n    depends_on \"libtool\" => :build\n  end\n\n  # The optional devel block is only executed if the user passes `--devel`.\n  # Use this to specify a not-yet-released version of a software.\n  devel do\n    url \"https://example.com/archive-2.0-beta.tar.gz\"\n    sha1 \"1234567890123456789012345678901234567890\"\n\n    depends_on \"cairo\"\n    depends_on \"pixman\"\n  end\n\n\n  ## Options\n\n  # Options can be used as arguments to `brew install`.\n  # To switch features on/off: `\"with-something\"` or `\"with-otherthing\"`.\n  # To use another software: `\"with-other-software\"` or `\"without-foo\"`\n  # Note, that for dependencies that are `:optional` or `:recommended`, options\n  # are generated automatically.\n  # Build a universal (On newer intel Macs this means a combined 32bit and\n  # 64bit binary/library). LATER: better explain what this means for PPC.\n  option :universal\n  option \"with-spam\", \"The description goes here without a dot at the end\"\n  option \"with-qt\", \"Text here overwrites the autogenerated one from `depends_on 'qt'`\"\n\n  ## Bottles\n\n  # Bottles are pre-built and added by the Homebrew maintainers for you.\n  # If you maintain your own repository, you can add your own bottle links.\n  # https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Bottles.md\n  # You can ignore this block entirely if submitting to Homebrew/Homebrew, It'll be\n  # handled for you by the Brew Test Bot.\n  bottle do\n    root_url \"http://mikemcquaid.com\" # Optional root to calculate bottle URLs\n    prefix \"/opt/homebrew\" # Optional HOMEBREW_PREFIX in which the bottles were built.\n    cellar \"/opt/homebrew/Cellar\" # Optional HOMEBREW_CELLAR in which the bottles were built.\n    revision 1 # Making the old bottle outdated without bumping the version of the formula.\n    sha1 \"d3d13fe6f42416765207503a946db01378131d7b\" => :yosemite\n    sha1 \"cdc48e79de2dee796bb4ba1ad987f6b35ce1c1ee\" => :mavericks\n    sha1 \"a19b544c8c645d7daad1d39a070a0eb86dfe9b9c\" => :mountain_lion\n  end\n\n  def pour_bottle?\n    # Only needed if this formula has to check if using the pre-built\n    # bottle is fine.\n    true\n  end\n\n  ## keg_only\n\n  # Software that will not be sym-linked into the `brew --prefix` will only\n  # live in it's Cellar. Other formulae can depend on it and then brew will\n  # add the necessary includes and libs (etc.) during the brewing of that\n  # other formula. But generally, keg_only formulae are not in your PATH\n  # and not seen by compilers if you build your own software outside of\n  # Homebrew. This way, we don't shadow software provided by OS X.\n  keg_only :provided_by_osx\n  keg_only \"because I want it so\"\n\n\n  ## Dependencies\n\n  # The dependencies for this formula. Use strings for the names of other\n  # formulae. Homebrew provides some :special dependencies for stuff that\n  # requires certain extra handling (often changing some ENV vars or\n  # deciding if to use the system provided version or not.)\n\n  # `:build` means this dep is only needed during build.\n  depends_on \"cmake\" => :build\n  # Explictly name formulae in other taps. Non-optional tap dependencies won't\n  # be accepted in core.\n  depends_on \"homebrew/dupes/tcl-tk\" => :optional\n  # `:recommended` dependencies are built by default. But a `--without-...`\n  # option is generated to opt-out.\n  depends_on \"readline\" => :recommended\n  # `:optional` dependencies are NOT built by default but a `--with-...`\n  # options is generated.\n  depends_on \"glib\" => :optional\n  # If you need to specify that another formula has to be built with/out\n  # certain options (note, no `--` needed before the option):\n  depends_on \"zeromq\" => \"with-pgm\"\n  depends_on \"qt\" => [\"with-qtdbus\", \"developer\"] # Multiple options.\n  # Optional and enforce that boost is built with `--with-c++11`.\n  depends_on \"boost\" => [:optional, \"with-c++11\"]\n  # If a dependency is only needed in certain cases:\n  depends_on \"sqlite\" if MacOS.version == :leopard\n  depends_on :xcode # If the formula really needs full Xcode.\n  depends_on :tex # Homebrew does not provide a Tex Distribution.\n  depends_on :fortran # Checks that `gfortran` is available or `FC` is set.\n  depends_on :mpi => :cc # Needs MPI with `cc`\n  depends_on :mpi => [:cc, :cxx, :optional] # Is optional. MPI with `cc` and `cxx`.\n  depends_on :macos => :lion # Needs at least Mac OS X \"Lion\" aka. 10.7.\n  depends_on :apr # If a formula requires the CLT-provided apr library to exist.\n  depends_on :arch => :intel # If this formula only builds on intel architecture.\n  depends_on :arch => :x86_64 # If this formula only build on intel x86 64bit.\n  depends_on :arch => :ppc # Only builds on PowerPC?\n  depends_on :ld64 # Sometimes ld fails on `MacOS.version < :leopard`. Then use this.\n  depends_on :x11 # X11/XQuartz components. Non-optional X11 deps should go in Homebrew/Homebrew-x11\n  depends_on :osxfuse # Permits the use of the upstream signed binary or our source package.\n  depends_on :tuntap # Does the same thing as above. This is vital for Yosemite and above.\n  depends_on :mysql => :recommended\n  # It is possible to only depend on something if\n  # `build.with?` or `build.without? \"another_formula\"`:\n  depends_on :mysql # allows brewed or external mysql to be used\n  depends_on :postgresql if build.without? \"sqlite\"\n  depends_on :hg # Mercurial (external or brewed) is needed\n\n  # If any Python >= 2.7 < 3.x is okay (either from OS X or brewed):\n  depends_on :python\n  # to depend on Python >= 2.7 but use system Python where possible\n  depends_on :python if MacOS.version <= :snow_leopard\n  # Python 3.x if the `--with-python3` is given to `brew install example`\n  depends_on :python3 => :optional\n\n  # Modules/Packages from other languages, such as :chicken, :jruby, :lua,\n  # :node, :ocaml, :perl, :python, :rbx, :ruby, can be specified by\n  depends_on \"some_module\" => :lua\n\n  ## Conflicts\n\n  # If this formula conflicts with another one:\n  conflicts_with \"imagemagick\", :because => \"because this is just a stupid example\"\n\n\n  ## Failing with a certain compiler?\n\n  # If it is failing for certain compiler:\n  fails_with :llvm do # :llvm is really llvm-gcc\n    build 2334\n    cause \"Segmentation fault during linking.\"\n  end\n\n  fails_with :clang do\n    build 600\n    cause \"multiple configure and compile errors\"\n  end\n\n  ## Resources\n\n  # Additional downloads can be defined as resources and accessed in the\n  # install method. Resources can also be defined inside a stable, devel, or\n  # head block. This mechanism replaces ad-hoc \"subformula\" classes.\n  resource \"additional_files\" do\n    url \"https://example.com/additional-stuff.tar.gz\"\n    sha1 \"deadbeef7890123456789012345678901234567890\"\n  end\n\n\n  ## Patches\n\n  # External patches can be declared using resource-style blocks.\n  patch do\n    url \"https://example.com/example_patch.diff\"\n    sha1 \"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"\n  end\n\n  # A strip level of -p1 is assumed. It can be overridden using a symbol\n  # argument:\n  patch :p0 do\n    url \"https://example.com/example_patch.diff\"\n    sha1 \"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"\n  end\n\n  # Patches can be declared in stable, devel, and head blocks. This form is\n  # preferred over using conditionals.\n  stable do\n    patch do\n      url \"https://example.com/example_patch.diff\"\n      sha1 \"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"\n    end\n  end\n\n  # Embedded (__END__) patches are declared like so:\n  patch :DATA\n  patch :p0, :DATA\n\n  # Patches can also be embedded by passing a string. This makes it possible\n  # to provide multiple embedded patches while making only some of them\n  # conditional.\n  patch :p0, \"...\"\n\n  ## The install method.\n\n  def install\n    # Now the sources (from `url`) are downloaded, hash-checked and\n    # Homebrew has changed into a temporary directory where the\n    # archive has been unpacked or the repository has been cloned.\n\n    # Print a warning (do this rarely)\n    opoo \"Dtrace features are experimental!\" if build.with? \"dtrace\"\n\n    # Sometimes we have to change a bit before we install. Mostly we\n    # prefer a patch but if you need the `prefix` of this formula in the\n    # patch you have to resort to `inreplace`, because in the patch\n    # you don't have access to any var defined by the formula. Only\n    # HOMEBREW_PREFIX is available in the embedded patch.\n    # inreplace supports regular expressions.\n    inreplace \"somefile.cfg\", /look[for]what?/, \"replace by #{bin}/tool\"\n\n    # To call out to the system, we use the `system` method and we prefer\n    # you give the args separately as in the line below, otherwise a subshell\n    # has to be opened first.\n    system \"./bootstrap.sh\", \"--arg1\", \"--prefix=#{prefix}\"\n\n    # For Cmake, we have some necessary defaults in `std_cmake_args`:\n    system \"cmake\", \".\", *std_cmake_args\n\n    # If the arguments given to configure (or make or cmake) are depending\n    # on options defined above, we usually make a list first and then\n    # use the `args << if <condition>` to append to:\n    args = [\"--option1\", \"--option2\"]\n    args << \"--i-want-spam\" if build.with? \"spam\"\n    args << \"--qt-gui\" if build.with? \"qt\" # \"--with-qt\" ==> build.with? \"qt\"\n    args << \"--some-new-stuff\" if build.head? # if head is used instead of url.\n    args << \"--universal-binary\" if build.universal?\n\n    # If there are multiple conditional arguments use a block instead of lines.\n    if build.head?\n      args << \"--i-want-pizza\"\n      args << \"--and-a-cold-beer\" if build.with? \"cold-beer\"\n    end\n\n    # If a formula presents a user with a choice, but the choice must be fulfilled:\n    if build.with? \"example2\"\n      args << \"--with-example2\"\n    else\n      args << \"--with-example1\"\n    end\n\n    # The `build.with?` and `build.without?` are smart enough to do the\n    # right thing with respect to defaults defined via `:optional` and\n    # `:recommended` dependencies.\n\n    # If you need to give the path to lib/include of another brewed formula\n    # please use the `opt_prefix` instead of the `prefix` of that other\n    # formula. The reasoning behind this is that `prefix` has the exact\n    # version number and if you update that other formula, things might\n    # break if they remember that exact path. In contrast to that, the\n    # `$(brew --prefix)/opt/formula` is the same path for all future\n    # versions of the formula!\n    args << \"--with-readline=#{Formula[\"readline\"].opt_prefix}\" if build.with? \"readline\"\n\n    # Most software still uses `configure` and `make`.\n    # Check with `./configure --help` what our options are.\n    system \"./configure\", \"--disable-debug\", \"--disable-dependency-tracking\",\n                          \"--disable-silent-rules\", \"--prefix=#{prefix}\",\n                          *args # our custom arg list (needs `*` to unpack)\n\n    # If your formula's build system is not thread safe:\n    ENV.deparallelize\n\n    # A general note: The commands here are executed line by line, so if\n    # you change some variable or call a method like ENV.deparallelize, it\n    # only affects the lines after that command.\n\n    # Do something only for clang\n    if ENV.compiler == :clang\n      # modify CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS in one go:\n      ENV.append_to_cflags \"-I ./missing/includes\"\n    end\n\n    # Overwriting any env var:\n    ENV[\"LDFLAGS\"] = \"--tag CC\"\n    # Is the formula struggling to find the pkgconfig file? Point it to it.\n    # This is done automatically for `keg_only` formulae.\n    ENV.prepend_path \"PKG_CONFIG_PATH\", \"#{Formula[\"glib\"].opt_lib}/pkgconfig\"\n\n    # Need to install into the bin but the makefile doesn't mkdir -p prefix/bin?\n    bin.mkpath\n    # A custom directory?\n    mkdir_p share/\"example\"\n    # And then move something from the buildpath to that directory?\n    mv \"ducks.txt\", share/\"example/ducks.txt\"\n    # No \"make\", \"install\" available?\n    bin.install \"binary1\"\n    include.install \"example.h\"\n    lib.install \"example.dylib\"\n    man1.install \"example.1\"\n    man3.install \"example.3\"\n    # All that README/LICENSE/NOTES/CHANGELOG stuff? Use \"metafiles\"\n    prefix.install_metafiles\n    # Maybe you'd like to remove a broken or unnecessary element?\n    # Empty directories will be removed by Homebrew automatically post-install!\n    rm \"bin/example\"\n    rm_rf \"share/pointless\"\n\n    # If there is a \"make\", \"install\" available, please use it!\n    system \"make\", \"install\"\n\n    # We are in a temporary directory and don't have to care about cleanup.\n\n    # Instead of `system \"cp\"` or something, call `install` on the Pathname\n    # objects as they are smarter with respect to correcting access rights.\n    # (`install` is a Homebrew mixin into Ruby's Pathname)\n\n    # The pathnames defined in the formula\n    prefix # == HOMEBREW_PREFIX+\"Cellar\"+name+version\n    bin # == prefix+\"bin\"\n    doc # == share+\"doc\"+name\n    include # == prefix+\"include\"\n    info # == share+\"info\"\n    lib # == prefix+\"lib\"\n    libexec # == prefix+\"libexec\"\n    buildpath # The temporary directory where build occurs.\n\n    man # share+\"man\"\n    man1 # man+\"man1\"\n    man2 # man+\"man2\"\n    man3 # man+\"man3\"\n    man4 # man+\"man4\"\n    man5 # man+\"man5\"\n    man6 # man+\"man6\"\n    man7 # man+\"man7\"\n    man8 # man+\"man8\"\n    sbin # prefix+\"sbin\"\n    share # prefix+\"share\"\n    frameworks # prefix+\"Frameworks\"\n    kext_prefix # prefix+\"Library/Extensions\"\n    # Configuration stuff that will survive formula updates\n    etc # HOMEBREW_PREFIX+\"etc\"\n    # Generally we don't want var stuff inside the keg\n    var # HOMEBREW_PREFIX+\"var\"\n    bash_completion # prefix+\"etc/bash_completion.d\"\n    zsh_completion # share+\"zsh/site-functions\"\n    # Further possibilities with the pathnames:\n    # http://www.ruby-doc.org/stdlib-1.8.7/libdoc/pathname/rdoc/Pathname.html\n\n    # Copy `./example_code/simple/ones` to share/demos\n    (share/\"demos\").install \"example_code/simple/ones\"\n    # Copy `./example_code/simple/ones` to share/demos/examples\n    (share/\"demos\").install \"example_code/simple/ones\" => \"examples\"\n\n    # Additional downloads can be defined as resources (see above).\n    # The stage method will create a temporary directory and yield\n    # to a block.\n    resource(\"additional_files\").stage { bin.install \"my/extra/tool\" }\n\n    # `name` and `version` are accessible too, if you need them.\n  end\n\n\n  ## Caveats\n\n  def caveats\n    \"Are optional. Something the user should know?\"\n  end\n\n  def caveats\n    s = <<-EOS.undent\n      Print some important notice to the user when `brew info <formula>` is\n      called or when brewing a formula.\n      This is optional. You can use all the vars like #{version} here.\n    EOS\n    s += \"Some issue only on older systems\" if MacOS.version < :mountain_lion\n    s\n  end\n\n\n  ## Test (is optional but makes us happy)\n\n  test do\n    # `test do` will create, run in, and delete a temporary directory.\n\n    # We are fine if the executable does not error out, so we know linking\n    # and building the software was ok.\n    system bin/\"foobar\", \"--version\"\n\n    (testpath/\"Test.file\").write <<-EOS.undent\n      writing some test file, if you need to\n    EOS\n    # To capture the output of a command, we use backtics:\n    assert_equal \"OK\", ` test.file`.strip\n\n    # Need complete control over stdin, stdout?\n    require \"open3\"\n    Open3.popen3(\"#{bin}/example\", \"argument\") do |stdin, stdout, _|\n      stdin.write(\"some text\")\n      stdin.close\n      assert_equal \"result\", stdout.read\n    end\n\n    # The test will fail if it returns false, or if an exception is raised.\n    # Failed assertions and failed `system` commands will raise exceptions.\n  end\n\n\n  ## Plist handling\n\n  # Does your plist need to be loaded at startup?\n  plist_options :startup => true\n  # Or only when necessary or desired by the user?\n  plist_options :manual => \"foo\"\n  # Or perhaps you'd like to give the user a choice? Ooh fancy.\n  plist_options :startup => \"true\", :manual => \"foo start\"\n\n  # Define this method to provide a plist.\n  # Looking for another example? Check out Apple's handy manpage =>\n  # https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/plist.5.html\n  def plist; <<-EOS.undent\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n    <plist version=\"1.0\">\n    <dict>\n      <key>Label</key>\n        <string>#{plist_name}</string>\n      <key>ProgramArguments</key>\n      <array>\n        <string>#{bin}/example</string>\n        <string>--do-this</string>\n      </array>\n      <key>RunAtLoad</key>\n      <true/>\n      <key>KeepAlive</key>\n      <true/>\n      <key>StandardErrorPath</key>\n      <string>/dev/null</string>\n      <key>StandardOutPath</key>\n      <string>/dev/null</string>\n    </plist>\n    EOS\n  end\nend\n\n__END__\n# Room for a patch after the `__END__`\n# Read about how to get a patch in here:\n#    https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md\n# In short, `brew install --interactive --git <formula>` and make your edits.\n# Then `git diff >> path/to/your/formula.rb`\n# Note, that HOMEBREW_PREFIX will be replaced in the path before it is\n# applied. A patch can consit of several hunks."
  },
  {
    "path": "syft/pkg/cataloger/homebrew/testdata/formulas/syft/1.23.1/.brew/syft.rb",
    "content": "# typed: false\n# frozen_string_literal: true\n\n# This file was generated by GoReleaser. DO NOT EDIT.\nclass Syft < Formula\n  desc \"A tool that generates a Software Bill Of Materials (SBOM) from container images and filesystems\"\n  homepage \"https://github.com/anchore/syft\"\n  version \"1.23.1\"\n  license \"Apache License 2.0\"\n\n  on_macos do\n    if Hardware::CPU.intel?\n      url \"https://github.com/anchore/syft/releases/download/v1.23.1/syft_1.23.1_darwin_amd64.tar.gz\"\n      sha256 \"76fed9a16fec65c2b13f30e2db6128f625aaf54b82302b427a0e2bbb554c6ab7\"\n\n      def install\n        bin.install \"syft\"\n      end\n    end\n    if Hardware::CPU.arm?\n      url \"https://github.com/anchore/syft/releases/download/v1.23.1/syft_1.23.1_darwin_arm64.tar.gz\"\n      sha256 \"099f506860bcb5d85d4a981b4fca7a732978d0eeff79876648cc1a5350974f33\"\n\n      def install\n        bin.install \"syft\"\n      end\n    end\n  end\n\n  on_linux do\n    if Hardware::CPU.intel?\n      if Hardware::CPU.is_64_bit?\n        url \"https://github.com/anchore/syft/releases/download/v1.23.1/syft_1.23.1_linux_amd64.tar.gz\"\n        sha256 \"42f3e01b64f054d0caee42073cb94e3ac3e61be6f0100e7ecda96e6a2abf7e22\"\n\n        def install\n          bin.install \"syft\"\n        end\n      end\n    end\n    if Hardware::CPU.arm?\n      if Hardware::CPU.is_64_bit?\n        url \"https://github.com/anchore/syft/releases/download/v1.23.1/syft_1.23.1_linux_arm64.tar.gz\"\n        sha256 \"6172794c95aebb5c3e84760d6489d1c149762822e254a2e3d413923c1b4263e4\"\n\n        def install\n          bin.install \"syft\"\n        end\n      end\n    end\n  end\nend"
  },
  {
    "path": "syft/pkg/cataloger/homebrew/testdata/install-example/opt/homebrew/Cellar/foo/1.2.3/.brew/foo.rb",
    "content": "desc \"A test Homebrew formula for Foo\"\nhomepage \"https://example.com/foo\"\nlicense \"Apache 2.0\""
  },
  {
    "path": "syft/pkg/cataloger/homebrew/testdata/install-example/opt/homebrew/Library/Taps/testorg/sometap/Formula/bar.rb",
    "content": "\ndesc \"A test Homebrew formula for bar\"\nhomepage \"https://example.com/bar\"\nlicense \"MIT\"\nname \"bar\"\nversion \"4.5.6\""
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/branching_matcher.go",
    "content": "package binutils\n\nimport (\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// BranchingEvidenceMatcher loads the contents of the reader into memory, assuming that all\n// classifier matchers are going to be reading the same file, e.g. a \"java\" binary, continuing to\n// try classifier EvidenceMatcher until the first set of packages is found\nfunc BranchingEvidenceMatcher(classifiers ...Classifier) EvidenceMatcher {\n\treturn func(_ Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\t// we are scanning the same contents multiple times, so read it into memory for a reader that can reset\n\t\trdr, err := getReader(context)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer internal.CloseAndLogError(rdr, context.Location.RealPath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, c := range classifiers {\n\t\t\tpkgs, err := c.EvidenceMatcher(c, MatcherContext{\n\t\t\t\tResolver: context.Resolver,\n\t\t\t\tLocation: context.Location,\n\t\t\t\tGetReader: func(_ MatcherContext) (unionreader.UnionReader, error) {\n\t\t\t\t\t_, err := rdr.Seek(0, io.SeekStart)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\treturn &nonClosingUnionReader{rdr}, nil\n\t\t\t\t},\n\t\t\t})\n\t\t\tif len(pkgs) > 0 || err != nil {\n\t\t\t\treturn pkgs, err\n\t\t\t}\n\t\t}\n\t\treturn nil, nil\n\t}\n}\n\ntype nonClosingUnionReader struct {\n\tunionreader.UnionReader\n}\n\nfunc (c *nonClosingUnionReader) Close() error {\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/branching_matcher_test.go",
    "content": "package binutils\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nfunc Test_BranchingMatcher(t *testing.T) {\n\tmatchingTest := FileContentsVersionMatcher(\"\", `my-version:(?<version>\\d+\\.\\d+)`)\n\tnotMatchingTest := MatchPath(\"**/not-version*\")\n\n\ttests := []struct {\n\t\tname                 string\n\t\tmatcher              EvidenceMatcher\n\t\texpectedPackageNames []string\n\t}{\n\t\t{\n\t\t\tname: \"not matching\",\n\t\t\tmatcher: BranchingEvidenceMatcher(\n\t\t\t\tClassifier{\n\t\t\t\t\tEvidenceMatcher: MatchAll(\n\t\t\t\t\t\tnotMatchingTest,\n\t\t\t\t\t\tmatchingTest,\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"a-pkg\",\n\t\t\t\t},\n\t\t\t),\n\t\t\texpectedPackageNames: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"both match\",\n\t\t\tmatcher: BranchingEvidenceMatcher(\n\t\t\t\tClassifier{\n\t\t\t\t\tEvidenceMatcher: matchingTest,\n\t\t\t\t\tPackage:         \"a-pkg\",\n\t\t\t\t},\n\t\t\t\tClassifier{\n\t\t\t\t\tEvidenceMatcher: matchingTest,\n\t\t\t\t\tPackage:         \"b-pkg\",\n\t\t\t\t},\n\t\t\t),\n\t\t\texpectedPackageNames: []string{\"a-pkg\"},\n\t\t},\n\t\t{\n\t\t\tname: \"first-does-not-match\",\n\t\t\tmatcher: BranchingEvidenceMatcher(\n\t\t\t\tClassifier{\n\t\t\t\t\tEvidenceMatcher: MatchAll(\n\t\t\t\t\t\tnotMatchingTest,\n\t\t\t\t\t\tmatchingTest,\n\t\t\t\t\t),\n\t\t\t\t\tPackage: \"b-pkg\",\n\t\t\t\t},\n\t\t\t\tClassifier{\n\t\t\t\t\tEvidenceMatcher: matchingTest,\n\t\t\t\t\tPackage:         \"c-pkg\",\n\t\t\t\t},\n\t\t\t),\n\t\t\texpectedPackageNames: []string{\"c-pkg\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := file.NewMockResolverForPaths(\"testdata/version.txt\", \"testdata/version-parts.txt\")\n\t\t\tlocs, err := resolver.FilesByGlob(\"**/version.txt\")\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, locs, 1)\n\t\t\tloc := locs[0]\n\t\t\trdr, err := resolver.FileContentsByLocation(loc)\n\t\t\trequire.NoError(t, err)\n\t\t\turdr, err := unionreader.GetUnionReader(rdr)\n\t\t\trequire.NoError(t, err)\n\t\t\tpkgs, err := test.matcher(Classifier{\n\t\t\t\tPackage: \"a-pkg\",\n\t\t\t}, MatcherContext{\n\t\t\t\tResolver: resolver,\n\t\t\t\tLocation: loc,\n\t\t\t\tGetReader: func(resolver MatcherContext) (unionreader.UnionReader, error) {\n\t\t\t\t\treturn urdr, nil\n\t\t\t\t},\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\t\t\tvar got []string\n\t\t\tfor i := range pkgs {\n\t\t\t\tgot = append(got, pkgs[i].Name)\n\t\t\t}\n\t\t\trequire.EqualValues(t, test.expectedPackageNames, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/classifier.go",
    "content": "package binutils\n\nimport (\n\t\"bytes\"\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"debug/pe\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"maps\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// Classifier is a generic package classifier that can be used to match a package definition\n// to a file that meets the given content criteria of the EvidenceMatcher.\ntype Classifier struct {\n\tClass string `json:\"class\"`\n\n\t// FileGlob is a selector to narrow down file inspection using the **/glob* syntax\n\tFileGlob string `json:\"fileGlob\"`\n\n\t// EvidenceMatcher is what will be used to match against the file in the source\n\t// location. If the matcher returns a package, the file will be considered a candidate.\n\tEvidenceMatcher EvidenceMatcher `json:\"-\"`\n\n\t// The information below is used to specify the Package information when returned\n\n\t// Package is the name to use for the package\n\tPackage string `json:\"package\"`\n\n\t// PURL is the Package URL to use when generating a package\n\tPURL packageurl.PackageURL `json:\"purl\"`\n\n\t// CPEs are the specific CPEs we want to include for this binary with updated version information\n\tCPEs []cpe.CPE `json:\"cpes\"`\n}\n\nfunc (cfg Classifier) MarshalJSON() ([]byte, error) {\n\ttype marshalled struct {\n\t\tClass    string   `json:\"class\"`\n\t\tFileGlob string   `json:\"fileGlob\"`\n\t\tPackage  string   `json:\"package\"`\n\t\tPURL     string   `json:\"purl\"`\n\t\tCPEs     []string `json:\"cpes\"`\n\t}\n\n\tvar marshalledCPEs []string\n\tfor _, c := range cfg.CPEs {\n\t\tmarshalledCPEs = append(marshalledCPEs, c.Attributes.BindToFmtString())\n\t}\n\n\tm := marshalled{\n\t\tClass:    cfg.Class,\n\t\tFileGlob: cfg.FileGlob,\n\t\tPackage:  cfg.Package,\n\t\tPURL:     cfg.PURL.String(),\n\t\tCPEs:     marshalledCPEs,\n\t}\n\n\treturn json.Marshal(m)\n}\n\n// EvidenceMatcher is a function called to identify based on some sort of evidence in the filesystem contents.\n// A non-nil return value indicates a successful match, regardless of packages being returned.\ntype EvidenceMatcher func(classifier Classifier, context MatcherContext) ([]pkg.Package, error)\n\ntype MatcherContext struct {\n\tResolver  file.Resolver\n\tLocation  file.Location\n\tGetReader func(resolver MatcherContext) (unionreader.UnionReader, error)\n}\n\n// MatchAny returns a combined evidence matcher that returns results from the first\n// matcher that returns results\nfunc MatchAny(matchers ...EvidenceMatcher) EvidenceMatcher {\n\treturn func(classifier Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tfor _, matcher := range matchers {\n\t\t\tmatch, err := matcher(classifier, context)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// only return when results\n\t\t\tif match != nil {\n\t\t\t\treturn match, nil\n\t\t\t}\n\t\t}\n\t\treturn nil, nil\n\t}\n}\n\n// MatchAll executes all matchers until one returns nil results, only returning the final results\nfunc MatchAll(matchers ...EvidenceMatcher) EvidenceMatcher {\n\treturn func(classifier Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tvar out []pkg.Package\n\t\tfor _, matcher := range matchers {\n\t\t\tmatch, err := matcher(classifier, context)\n\t\t\tif match == nil || err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif len(match) > 0 {\n\t\t\t\tout = match\n\t\t\t}\n\t\t}\n\t\treturn out, nil\n\t}\n}\n\ntype ContextualEvidenceMatchers struct {\n\tCatalogerName string\n}\n\nfunc (c ContextualEvidenceMatchers) FileNameTemplateVersionMatcher(fileNamePattern string, contentTemplate string) EvidenceMatcher {\n\treturn FileNameTemplateVersionMatcher(fileNamePattern, contentTemplate, c.CatalogerName)\n}\n\nfunc (c ContextualEvidenceMatchers) FileContentsVersionMatcher(patterns ...string) EvidenceMatcher {\n\treturn FileContentsVersionMatcher(c.CatalogerName, patterns...)\n}\n\nfunc FileNameTemplateVersionMatcher(fileNamePattern, contentTemplate, catalogerName string) EvidenceMatcher {\n\tpat := regexp.MustCompile(fileNamePattern)\n\treturn func(classifier Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tif !pat.MatchString(context.Location.RealPath) {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\tfilepathNamedGroupValues := internal.MatchNamedCaptureGroups(pat, context.Location.RealPath)\n\n\t\t// versions like 3.5 should not match any character, but explicit dot\n\t\tfor k, v := range filepathNamedGroupValues {\n\t\t\tfilepathNamedGroupValues[k] = strings.ReplaceAll(v, \".\", \"\\\\.\")\n\t\t}\n\n\t\ttmpl, err := template.New(\"\").Parse(contentTemplate)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to parse classifier template=%q : %w\", contentTemplate, err)\n\t\t}\n\n\t\tpatternBuf := &bytes.Buffer{}\n\t\terr = tmpl.Execute(patternBuf, filepathNamedGroupValues)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to render template: %w\", err)\n\t\t}\n\n\t\ttmplPattern, err := regexp.Compile(patternBuf.String())\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to compile rendered regex=%q: %w\", patternBuf.String(), err)\n\t\t}\n\n\t\tcontents, err := getReader(context)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get read contents for file: %w\", err)\n\t\t}\n\n\t\tmatchMetadata, err := internal.MatchNamedCaptureGroupsFromReader(tmplPattern, contents)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to match version: %w\", err)\n\t\t}\n\n\t\tp := NewClassifierPackage(classifier, context.Location, matchMetadata, catalogerName)\n\t\tif p == nil {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\treturn []pkg.Package{*p}, nil\n\t}\n}\n\n// FileContentsVersionMatcher will match all provided patterns, extracting named capture groups from each pattern, overwriting earlier results\nfunc FileContentsVersionMatcher(catalogerName string, patterns ...string) EvidenceMatcher {\n\tif len(patterns) == 0 {\n\t\tpanic(\"must specify at least one pattern\")\n\t}\n\tvar pats []*regexp.Regexp\n\tfor _, pattern := range patterns {\n\t\tpats = append(pats, regexp.MustCompile(pattern))\n\t}\n\treturn func(classifier Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tvar matchMetadata map[string]string\n\n\t\tfor _, pat := range pats {\n\t\t\tcontents, err := getReader(context)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to get read contents for file: %w\", err)\n\t\t\t}\n\n\t\t\tmatch, err := internal.MatchNamedCaptureGroupsFromReader(pat, contents)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to match version: %w\", err)\n\t\t\t}\n\t\t\tif match == nil {\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t\tif matchMetadata == nil {\n\t\t\t\tmatchMetadata = match\n\t\t\t} else {\n\t\t\t\tmaps.Copy(matchMetadata, match)\n\t\t\t}\n\t\t}\n\n\t\t// Convert {major: 1, minor: 2, patch: 3} to \"1.2.3\"\n\t\t_, versionOk := matchMetadata[\"version\"]\n\t\tmajorStr, majorOk := matchMetadata[\"major\"]\n\t\tminorStr, minorOk := matchMetadata[\"minor\"]\n\t\tpatchStr, patchOk := matchMetadata[\"patch\"]\n\n\t\tif !versionOk && majorOk && minorOk && patchOk {\n\t\t\tmajor, majorErr := strconv.Atoi(majorStr)\n\t\t\tminor, minorErr := strconv.Atoi(minorStr)\n\t\t\tpatch, patchErr := strconv.Atoi(patchStr)\n\n\t\t\tif majorErr == nil && minorErr == nil && patchErr == nil {\n\t\t\t\tmatchMetadata[\"version\"] = fmt.Sprintf(\"%d.%d.%d\", major, minor, patch)\n\t\t\t}\n\t\t}\n\n\t\tp := NewClassifierPackage(classifier, context.Location, matchMetadata, catalogerName)\n\t\tif p == nil {\n\t\t\tif matchMetadata != nil {\n\t\t\t\t// if we had a successful metadata match, but no packages, return a successful match result\n\t\t\t\treturn []pkg.Package{}, nil\n\t\t\t}\n\t\t\treturn nil, nil\n\t\t}\n\n\t\treturn []pkg.Package{*p}, nil\n\t}\n}\n\nfunc SharedLibraryLookup(sharedLibraryPattern string, sharedLibraryMatcher EvidenceMatcher) EvidenceMatcher {\n\tpat := regexp.MustCompile(sharedLibraryPattern)\n\treturn func(classifier Classifier, context MatcherContext) (packages []pkg.Package, _ error) {\n\t\tlibs, err := sharedLibraries(context)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, lib := range libs {\n\t\t\tif !pat.MatchString(lib) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tlocations, err := context.Resolver.FilesByGlob(\"**/\" + lib)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tfor _, libraryLocation := range locations {\n\t\t\t\t// create a new resolver without the cached context lookup -- this is decidedly a different file\n\t\t\t\tnewResolver := MatcherContext{\n\t\t\t\t\tResolver: context.Resolver,\n\t\t\t\t\tLocation: libraryLocation,\n\t\t\t\t}\n\t\t\t\tpkgs, err := sharedLibraryMatcher(classifier, newResolver)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\t// not a successful match\n\t\t\t\tif pkgs == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfor _, p := range pkgs {\n\t\t\t\t\t// set the source binary as the first location\n\t\t\t\t\tmakePrimaryLocation(&p, context.Location)\n\t\t\t\t\tmeta, _ := p.Metadata.(pkg.BinarySignature)\n\t\t\t\t\tp.Metadata = pkg.BinarySignature{\n\t\t\t\t\t\tMatches: append([]pkg.ClassifierMatch{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tClassifier: classifier.Class,\n\t\t\t\t\t\t\t\tLocation:   context.Location,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, meta.Matches...),\n\t\t\t\t\t}\n\t\t\t\t\tpackages = append(packages, p)\n\t\t\t\t}\n\t\t\t\t// return non-nil package results as a successful match indication if the evidence matcher returned a successful match indication\n\t\t\t\tif packages == nil {\n\t\t\t\t\tpackages = pkgs\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn packages, nil\n\t}\n}\n\nfunc MatchPath(path string) EvidenceMatcher {\n\tif !doublestar.ValidatePattern(path) {\n\t\tpanic(\"invalid pattern\")\n\t}\n\treturn func(_ Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tif doublestar.MatchUnvalidated(path, context.Location.RealPath) {\n\t\t\treturn []pkg.Package{}, nil // return non-nil\n\t\t}\n\t\treturn nil, nil\n\t}\n}\n\n// SupportingEvidenceMatcher defines an evidence matcher that searches for secondary evidence with path globs\n// relative to a primary file, for example: a VERSION file in the same or a parent directory to another binary\nfunc SupportingEvidenceMatcher(relativePathGlob string, evidenceMatcher EvidenceMatcher) EvidenceMatcher {\n\treturn func(classifier Classifier, context MatcherContext) ([]pkg.Package, error) {\n\t\tf := path.Dir(context.Location.RealPath)\n\t\tf = path.Join(f, relativePathGlob)\n\t\tf = path.Clean(f)\n\t\t// this would ideally be RelativeFileByPath but with a glob search:\n\t\trelativeFiles, err := context.Resolver.FilesByGlob(f)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, relativeFile := range relativeFiles {\n\t\t\tevidence, err := collectSupportingEvidence(classifier, context, relativeFile, evidenceMatcher)\n\t\t\tif evidence != nil || err != nil {\n\t\t\t\treturn evidence, err\n\t\t\t}\n\t\t}\n\t\treturn nil, nil\n\t}\n}\n\nfunc getReader(context MatcherContext) (unionreader.UnionReader, error) {\n\tif context.GetReader != nil {\n\t\treturn context.GetReader(context)\n\t}\n\treader, err := context.Resolver.FileContentsByLocation(context.Location) //nolint:gocritic\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn unionreader.GetUnionReader(reader)\n}\n\n// sharedLibraries returns a list of all shared libraries found within a binary, currently\n// supporting: elf, macho, and windows pe\nfunc sharedLibraries(context MatcherContext) ([]string, error) {\n\tcontents, err := getReader(context)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contents, context.Location.RealPath)\n\n\te, _ := elf.NewFile(contents)\n\tif e != nil {\n\t\tsymbols, err := e.ImportedLibraries()\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to read elf binary at: %s -- %s\", context.Location.RealPath, err)\n\t\t}\n\t\treturn symbols, nil\n\t}\n\tif _, err := contents.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to seek to beginning of file: %w\", err)\n\t}\n\n\tm, _ := macho.NewFile(contents)\n\tif m != nil {\n\t\tsymbols, err := m.ImportedLibraries()\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to read macho binary at: %s -- %s\", context.Location.RealPath, err)\n\t\t}\n\t\treturn symbols, nil\n\t}\n\tif _, err := contents.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to seek to beginning of file: %w\", err)\n\t}\n\n\tp, _ := pe.NewFile(contents)\n\tif p != nil {\n\t\tsymbols, err := p.ImportedLibraries()\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to read pe binary at: %s -- %s\", context.Location.RealPath, err)\n\t\t}\n\t\treturn symbols, nil\n\t}\n\tif _, err := contents.Seek(0, io.SeekStart); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to seek to beginning of file: %w\", err)\n\t}\n\n\treturn nil, nil\n}\n\nfunc makePrimaryLocation(p *pkg.Package, primaryLocation file.Location) {\n\tlocationSet := file.NewLocationSet(primaryLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\tfor _, l := range p.Locations.ToSlice() {\n\t\tif locationSet.Contains(l) { // no need for duplicate locations\n\t\t\tcontinue\n\t\t}\n\t\tlocationSet.Add(l.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t}\n\tp.Locations = locationSet\n}\n\nfunc collectSupportingEvidence(classifier Classifier, context MatcherContext, relativeFile file.Location, evidenceMatcher EvidenceMatcher) ([]pkg.Package, error) {\n\trdr, err := context.Resolver.FileContentsByLocation(relativeFile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(rdr, relativeFile.Path())\n\tur, err := unionreader.GetUnionReader(rdr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnewContext := MatcherContext{\n\t\tResolver: context.Resolver,\n\t\tLocation: relativeFile,\n\t\tGetReader: func(_ MatcherContext) (unionreader.UnionReader, error) {\n\t\t\treturn ur, nil\n\t\t},\n\t}\n\tpackages, err := evidenceMatcher(classifier, newContext)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor i := range packages {\n\t\tp := &(packages[i])\n\t\t// relative files are supporting evidence, like a VERSION file near a go binary, mark the results as supporting\n\t\tmakePrimaryLocation(p, context.Location)\n\t}\n\treturn packages, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/classifier_package.go",
    "content": "package binutils\n\nimport (\n\t\"bytes\"\n\t\"reflect\"\n\t\"text/template\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar emptyPURL = packageurl.PackageURL{}\n\nfunc NewClassifierPackage(classifier Classifier, location file.Location, matchMetadata map[string]string, catalogerName string) *pkg.Package {\n\tversion, ok := matchMetadata[\"version\"]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tupdate := matchMetadata[\"update\"]\n\n\tvar cpes []cpe.CPE\n\tfor _, c := range classifier.CPEs {\n\t\tc.Attributes.Version = templatedUpdate(c.Attributes.Version, matchMetadata, version)\n\t\tc.Attributes.Update = templatedUpdate(c.Attributes.Update, matchMetadata, update)\n\t\tcpes = append(cpes, c)\n\t}\n\n\tp := pkg.Package{\n\t\tName:    classifier.Package,\n\t\tVersion: version,\n\t\tLocations: file.NewLocationSet(\n\t\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tType:    pkg.BinaryPkg,\n\t\tCPEs:    cpes,\n\t\tFoundBy: catalogerName,\n\t\tMetadata: pkg.BinarySignature{\n\t\t\tMatches: []pkg.ClassifierMatch{\n\t\t\t\t{\n\t\t\t\t\tClassifier: classifier.Class,\n\t\t\t\t\tLocation:   location,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tif !reflect.DeepEqual(classifier.PURL, emptyPURL) {\n\t\tpurl := classifier.PURL\n\t\tpurl.Version = version\n\t\tp.PURL = purl.ToString()\n\t}\n\n\tp.SetID()\n\n\treturn &p\n}\n\nfunc templatedUpdate(providedValue string, matchMetadata map[string]string, defaultValue string) string {\n\t// if no template provided, just use the value directly\n\tif providedValue == \"\" {\n\t\treturn defaultValue\n\t}\n\t// support templated updates\n\tt, err := template.New(\"\").Option(\"missingkey=zero\").Parse(providedValue)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to parse classifier template=%q : %w\", providedValue, err)\n\t} else {\n\t\tupdate := bytes.Buffer{}\n\t\terr = t.Execute(&update, matchMetadata)\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to render template: %w\", err)\n\t\t} else {\n\t\t\t// only use the template result if it's non-empty\n\t\t\tprovidedValue = update.String()\n\t\t\tif providedValue != \"\" {\n\t\t\t\treturn providedValue\n\t\t\t}\n\t\t}\n\t}\n\treturn defaultValue\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/classifier_test.go",
    "content": "package binutils\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n)\n\nfunc Test_ClassifierCPEs(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tfixture    string\n\t\tclassifier Classifier\n\t\tcpes       []string\n\t}{\n\t\t{\n\t\t\tname:    \"no CPEs\",\n\t\t\tfixture: \"testdata/version.txt\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tPackage:         \"some-app\",\n\t\t\t\tFileGlob:        \"**/version.txt\",\n\t\t\t\tEvidenceMatcher: FileContentsVersionMatcher(\"cataloger-name\", `(?m)my-version:(?P<version>[0-9.]+)`),\n\t\t\t\tCPEs:            []cpe.CPE{},\n\t\t\t},\n\t\t\tcpes: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"one Attributes\",\n\t\t\tfixture: \"testdata/version.txt\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tPackage:         \"some-app\",\n\t\t\t\tFileGlob:        \"**/version.txt\",\n\t\t\t\tEvidenceMatcher: FileContentsVersionMatcher(\"cataloger-name\", `(?m)my-version:(?P<version>[0-9.]+)`),\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:some:app:*:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\t\t},\n\t\t\t},\n\t\t\tcpes: []string{\n\t\t\t\t\"cpe:2.3:a:some:app:1.8:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"multiple CPEs\",\n\t\t\tfixture: \"testdata/version.txt\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tPackage:         \"some-app\",\n\t\t\t\tFileGlob:        \"**/version.txt\",\n\t\t\t\tEvidenceMatcher: FileContentsVersionMatcher(\"cataloger-name\", `(?m)my-version:(?P<version>[0-9.]+)`),\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:some:app:*:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:some:apps:*:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\t\t},\n\t\t\t},\n\t\t\tcpes: []string{\n\t\t\t\t\"cpe:2.3:a:some:app:1.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some:apps:1.8:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"version in parts\",\n\t\t\tfixture: \"testdata/version-parts.txt\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tPackage:         \"some-app\",\n\t\t\t\tFileGlob:        \"**/version-parts.txt\",\n\t\t\t\tEvidenceMatcher: FileContentsVersionMatcher(\"cataloger-name\", `(?m)\\x00(?P<major>[0-9.]+)\\x00(?P<minor>[0-9.]+)\\x00(?P<patch>[0-9.]+)\\x00`),\n\t\t\t\tCPEs:            []cpe.CPE{},\n\t\t\t},\n\t\t\tcpes: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresolver := file.NewMockResolverForPaths(test.fixture)\n\t\t\tls, err := resolver.FilesByPath(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, ls, 1)\n\n\t\t\tpkgs, err := test.classifier.EvidenceMatcher(test.classifier, MatcherContext{Resolver: resolver, Location: ls[0]})\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Len(t, pkgs, 1)\n\n\t\t\tp := pkgs[0]\n\n\t\t\tvar cpes []string\n\t\t\tfor _, c := range p.CPEs {\n\t\t\t\tcpes = append(cpes, c.Attributes.String())\n\t\t\t}\n\t\t\trequire.Equal(t, test.cpes, cpes)\n\t\t})\n\t}\n}\n\nfunc TestClassifier_MarshalJSON(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\tclassifier Classifier\n\t\twant       string\n\t\twantErr    assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tClass:           \"class\",\n\t\t\t\tFileGlob:        \"glob\",\n\t\t\t\tEvidenceMatcher: FileContentsVersionMatcher(\"cataloger-name\", \".thing\"),\n\t\t\t\tPackage:         \"pkg\",\n\t\t\t\tPURL: packageurl.PackageURL{\n\t\t\t\t\tType:       \"type\",\n\t\t\t\t\tNamespace:  \"namespace\",\n\t\t\t\t\tName:       \"name\",\n\t\t\t\t\tVersion:    \"version\",\n\t\t\t\t\tQualifiers: nil,\n\t\t\t\t\tSubpath:    \"subpath\",\n\t\t\t\t},\n\t\t\t\tCPEs: []cpe.CPE{cpe.Must(\"cpe:2.3:a:some:app:*:*:*:*:*:*:*:*\", cpe.GeneratedSource)},\n\t\t\t},\n\t\t\twant: `{\"class\":\"class\",\"fileGlob\":\"glob\",\"package\":\"pkg\",\"purl\":\"pkg:type/namespace/name@version#subpath\",\"cpes\":[\"cpe:2.3:a:some:app:*:*:*:*:*:*:*:*\"]}`,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\tcfg := tt.classifier\n\t\t\tgot, err := cfg.MarshalJSON()\n\t\t\tif !tt.wantErr(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, string(got))\n\t\t})\n\t}\n}\n\nfunc TestFileContentsVersionMatcher(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpattern  string\n\t\tdata     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"simple version string regexp\",\n\t\t\tpattern:  `some data (?P<version>[0-9]+\\.[0-9]+\\.[0-9]+) some data`,\n\t\t\tdata:     \"some data 1.2.3 some data\",\n\t\t\texpected: \"1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname:     \"version parts regexp\",\n\t\t\tpattern:  `\\x00\\x23(?P<major>[0-9]+)\\x00\\x23(?P<minor>[0-9]+)\\x00\\x23(?P<patch>[0-9]+)\\x00\\x23`,\n\t\t\tdata:     \"\\x00\\x239\\x00\\x239\\x00\\x239\\x00\\x23\",\n\t\t\texpected: \"9.9.9\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tmockGetContent := func(context MatcherContext) (unionreader.UnionReader, error) {\n\t\t\t\treturn unionreader.GetUnionReader(io.NopCloser(bytes.NewBufferString(tt.data)))\n\t\t\t}\n\t\t\tfn := FileContentsVersionMatcher(\"cataloger-name\", tt.pattern)\n\t\t\tp, err := fn(Classifier{}, MatcherContext{\n\t\t\t\tGetReader: mockGetContent,\n\t\t\t})\n\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"Unexpected error %#v\", err)\n\t\t\t}\n\n\t\t\tif p[0].Version != tt.expected {\n\t\t\t\tt.Errorf(\"Versions don't match.\\ngot\\n%q\\n\\nexpected\\n%q\", p[0].Version, tt.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_SupportingEvidenceMatcher(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\tclassifier Classifier\n\t\texpected   string\n\t}{\n\t\t{\n\t\t\tname: \"simple version string regexp\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tFileGlob: \"**/some-binary\",\n\t\t\t\tEvidenceMatcher: SupportingEvidenceMatcher(\"../version.txt\",\n\t\t\t\t\tFileContentsVersionMatcher(\"cataloger-name\", `(?m)my-version:(?P<version>[0-9.]+)`)),\n\t\t\t\tPackage: \"some-binary\",\n\t\t\t},\n\t\t\texpected: \"1.8\",\n\t\t},\n\t\t{\n\t\t\tname: \"not matching version string regexp\",\n\t\t\tclassifier: Classifier{\n\t\t\t\tFileGlob: \"**/some-binary\",\n\t\t\t\tEvidenceMatcher: SupportingEvidenceMatcher(\"../version.txt\",\n\t\t\t\t\tFileContentsVersionMatcher(\"cataloger-name\", `(?m)my-version:(?P<version>abdd)`)),\n\t\t\t\tPackage: \"some-binary\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts, err := directorysource.NewFromPath(\"testdata\")\n\t\t\trequire.NoError(t, err)\n\t\t\tr, err := s.FileResolver(source.AllLayersScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresults, err := r.FilesByGlob(tt.classifier.FileGlob)\n\t\t\trequire.NoError(t, err)\n\t\t\tfor _, result := range results {\n\t\t\t\tgot, err := tt.classifier.EvidenceMatcher(tt.classifier, MatcherContext{\n\t\t\t\t\tResolver: r,\n\t\t\t\t\tLocation: result,\n\t\t\t\t\tGetReader: func(ctx MatcherContext) (unionreader.UnionReader, error) {\n\t\t\t\t\t\treturn getReader(ctx)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tif tt.expected != \"\" {\n\t\t\t\t\trequire.NotEmpty(t, got)\n\t\t\t\t\trequire.Equal(t, tt.expected, got[0].Version)\n\t\t\t\t} else {\n\t\t\t\t\trequire.Empty(t, got)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/testdata/subdir/some-binary",
    "content": "a binary"
  },
  {
    "path": "syft/pkg/cataloger/internal/binutils/testdata/version.txt",
    "content": "my-version:1.8"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/README.md",
    "content": "# CPE Generation\n\nThis package generates Common Platform Enumeration (CPE) identifiers for software packages discovered by Syft.\nCPEs are standardized identifiers that enable vulnerability matching by linking packages to known vulnerabilities in databases like the National Vulnerability Database (NVD).\n\n## Overview\n\nCPE generation in Syft uses a **two-tier approach** to balance accuracy and coverage:\n\n1. **Dictionary Lookups** (Authoritative): Pre-validated CPEs from the official NIST CPE dictionary\n2. **Heuristic Generation** (Fallback): Intelligent generation based on package metadata and ecosystem-specific patterns\n\nThis dual approach ensures:\n- **High accuracy** for packages in the NIST dictionary (no false positives)\n- **Broad coverage** for packages not yet in the dictionary (maximizes vulnerability detection)\n- **Fast performance** with an embedded, indexed CPE dictionary (~814KB)\n\n## Why It Matters\n\nCPEs link discovered packages to security vulnerabilities (CVEs) in tools like Grype. Without accurate CPE generation, vulnerability scanning misses security issues.\n\n## How It Works\n\n### Architecture\n\n```\n┌─────────────────────────────────────────────────────────┐\n│  Syft Package Discovery                                 │\n└──────────────────┬──────────────────────────────────────┘\n                   │\n                   ▼\n         ┌─────────────────────┐\n         │  CPE Generation     │\n         │  (this package)     │\n         └──────────┬──────────┘\n                    │\n        ┌───────────┴────────────┐\n        │                        │\n        ▼                        ▼\n┌──────────────────┐    ┌─────────────────────┐\n│ Dictionary       │    │ Heuristic           │\n│ Lookup           │    │ Generation          │\n│                  │    │                     │\n│ • Embedded index │    │ • Ecosystem rules   │\n│ • ~22K entries   │    │ • Vendor/product    │\n│ • 11 ecosystems  │    │   candidates        │\n└──────────────────┘    │ • Curated mappings  │\n                        │ • Smart filters     │\n                        └─────────────────────┘\n```\n\n### Dictionary Generation Process\n\nThe dictionary is generated offline and embedded into the Syft binary for fast, offline lookups.\n\n**Location**: `dictionary/index-generator/`\n\n**Process**:\n1. **Fetch**: Retrieves CPE data from NVD Products API using incremental updates\n2. **Cache**: Stores raw API responses in ORAS registry for reuse (`.cpe-cache/`)\n3. **Filter**:\n   - Removes CPEs without reference URLs\n   - Excludes hardware (`h`) and OS (`o`) CPEs (keeps only applications `a`)\n4. **Index by Ecosystem**:\n   - Extracts package names from reference URLs (npm, pypi, rubygems, etc.)\n   - Creates index: `ecosystem → package_name → [CPE strings]`\n5. **Embed**: Generates `data/cpe-index.json` embedded via `go:embed` directive\n\n### Runtime CPE Lookup/Generation\n\n**Entry Point**: `generate.go`\n\nWhen Syft discovers a package:\n\n1. **Check for Declared CPEs**: If package metadata already contains CPEs (from SBOM imports), skip generation\n2. **Try Dictionary Lookup** (`FromDictionaryFind`):\n   - Loads embedded CPE index (singleton, loaded once)\n   - Looks up by ecosystem + package name\n   - Returns pre-validated CPEs if found\n   - Marks source as `NVDDictionaryLookupSource`\n3. **Fallback to Heuristic Generation** (`FromPackageAttributes`):\n   - Generates vendor/product/targetSW candidates using ecosystem-specific logic\n   - Creates CPE permutations from candidates\n   - Applies filters to remove known false positives\n   - Marks source as `GeneratedSource`\n\n### Supported Ecosystems\n\n**Dictionary Lookups** (11 ecosystems):\nnpm, RubyGems, PyPI, Jenkins Plugins, crates.io, PHP, Go Modules, WordPress Plugins/Themes\n\n**Heuristic Generation** (all package types):\nAll dictionary ecosystems plus Java, .NET/NuGet, Alpine APK, Debian/RPM, and any other package type Syft discovers\n\n### Ecosystem-Specific Intelligence\n\nThe heuristic generator uses per-ecosystem strategies:\n\n- **Java**: Extracts vendor from groupId, product from artifactId\n- **Python**: Parses author fields, adds `_project` suffix variants\n- **Go**: Extracts org/repo from module paths (`github.com/org/repo`)\n- **JavaScript**: Handles npm scope patterns (`@scope/package`)\n\n### Curated Mappings & Filters\n\n- **500+ curated mappings**: `curl` → `haxx`, `spring-boot` → `pivotal`, etc.\n- **Filters**: Prevent false positives (Jenkins plugins vs. core, Jira client vs. server)\n- **Validation**: Ensures CPE syntax correctness before returning\n\n## Implementation Details\n\n### Embedded Index Format\n\n```json\n{\n  \"ecosystems\": {\n    \"npm\": {\n      \"lodash\": [\"cpe:2.3:a:lodash:lodash:*:*:*:*:*:node.js:*:*\"]\n    },\n    \"pypi\": {\n      \"Django\": [\"cpe:2.3:a:djangoproject:django:*:*:*:*:*:python:*:*\"]\n    }\n  }\n}\n```\n\nThe dictionary generator maps packages to ecosystems using reference URL patterns (npmjs.com, pypi.org, rubygems.org, etc.).\n\n## Maintenance\n\n### Updating the CPE Dictionary\n\nThe CPE dictionary should be updated periodically to include new packages:\n\n```bash\n# Full workflow: pull cache → update from NVD → build index\nmake generate:cpe-index\n\n# Or run individual steps:\nmake generate:cpe-index:cache:pull     # Pull cached CPE data from ORAS\nmake generate:cpe-index:cache:update   # Fetch updates from NVD Products API\nmake generate:cpe-index:build          # Generate cpe-index.json from cache\n```\n\n**Optional**: Set `NVD_API_KEY` for faster updates (50 req/30s vs 5 req/30s)\n\nThis workflow:\n1. Pulls existing cache from ORAS registry (avoids re-fetching all ~1.5M CPEs)\n2. Fetches only products modified since last update from NVD Products API\n3. Builds indexed dictionary (~814KB, ~22K entries)\n4. Pushes updated cache for team reuse\n\n### Extending CPE Generation\n\n**Add dictionary support for a new ecosystem:**\n1. Add URL pattern in `index-generator/generate.go`\n2. Regenerate index with `make generate:cpe-index`\n\n**Improve heuristic generation:**\n1. Modify ecosystem-specific file (e.g., `java.go`, `python.go`)\n2. Add curated mappings to `candidate_by_package_type.go`\n\n**Key files:**\n- `generate.go` - Main generation logic\n- `dictionary/` - Dictionary generator and embedded index\n- `candidate_by_package_type.go` - Ecosystem-specific candidates\n- `filter.go` - Filtering rules\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/apk.go",
    "content": "package cpegenerate\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\tprefixesToPackageType = map[string]pkg.Type{\n\t\t\"py-\":   pkg.PythonPkg,\n\t\t\"ruby-\": pkg.GemPkg,\n\t}\n\tstreamVersionPkgNamePattern = regexp.MustCompile(`^(?P<stream>[a-zA-Z][\\w-]*?)(?P<streamVersion>\\-?\\d[\\d\\.]*?)($|-(?P<subPackage>[a-zA-Z][\\w-]*?)?)$`)\n)\n\ntype upstreamCandidate struct {\n\tName string\n\tType pkg.Type\n}\n\nfunc upstreamCandidates(m pkg.ApkDBEntry) (candidates []upstreamCandidate) {\n\t// Do not consider OriginPackage variations when generating CPE Attributes candidates for the child package\n\t// because doing so will result in false positives when matching to vulnerabilities in Grype since\n\t// it won't know to lookup apk fix entries using the OriginPackage name.\n\n\tname := m.Package\n\tgroups := internal.MatchNamedCaptureGroups(streamVersionPkgNamePattern, m.Package)\n\tstream, ok := groups[\"stream\"]\n\n\tif ok && stream != \"\" {\n\t\tsub, ok := groups[\"subPackage\"]\n\n\t\tif ok && sub != \"\" {\n\t\t\tname = fmt.Sprintf(\"%s-%s\", stream, sub)\n\t\t} else {\n\t\t\tname = stream\n\t\t}\n\t}\n\n\tfor prefix, typ := range prefixesToPackageType {\n\t\tif strings.HasPrefix(name, prefix) {\n\t\t\tt := strings.TrimPrefix(name, prefix)\n\t\t\tif t != \"\" {\n\t\t\t\tcandidates = append(candidates, upstreamCandidate{Name: t, Type: typ})\n\t\t\t\treturn candidates\n\t\t\t}\n\t\t}\n\t}\n\n\tif name != \"\" {\n\t\tcandidates = append(candidates, upstreamCandidate{Name: name, Type: pkg.UnknownPkg})\n\t\treturn candidates\n\t}\n\n\treturn candidates\n}\n\nfunc candidateVendorsForAPK(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.ApkDBEntry)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tvendors := newFieldCandidateSet()\n\tcandidates := upstreamCandidates(metadata)\n\n\tfor _, c := range candidates {\n\t\tswitch c.Type {\n\t\tcase pkg.UnknownPkg:\n\t\t\tvendors.addValue(c.Name)\n\t\t\tvendors.addValue(findAdditionalVendors(defaultCandidateAdditions, pkg.ApkPkg, c.Name, c.Name)...)\n\t\t\tvendors.removeByValue(findVendorsToRemove(defaultCandidateRemovals, pkg.ApkPkg, c.Name)...)\n\t\tcase pkg.PythonPkg:\n\t\t\tvendors.addValue(c.Name)\n\t\t\tvendors.addValue(findAdditionalVendors(defaultCandidateAdditions, c.Type, c.Name, c.Name)...)\n\t\t\tvendors.removeByValue(findVendorsToRemove(defaultCandidateRemovals, c.Type, c.Name)...)\n\t\t\tfor _, av := range additionalVendorsForPython(c.Name) {\n\t\t\t\tvendors.addValue(av)\n\t\t\t\tvendors.addValue(findAdditionalVendors(defaultCandidateAdditions, pkg.PythonPkg, av, av)...)\n\t\t\t\tvendors.removeByValue(findVendorsToRemove(defaultCandidateRemovals, pkg.PythonPkg, av)...)\n\t\t\t}\n\t\tdefault:\n\t\t\tvendors.addValue(c.Name)\n\t\t\tvendors.addValue(findAdditionalVendors(defaultCandidateAdditions, c.Type, c.Name, c.Name)...)\n\t\t\tvendors.removeByValue(findVendorsToRemove(defaultCandidateRemovals, c.Type, c.Name)...)\n\t\t}\n\t}\n\n\tvendors.union(candidateVendorsFromURL(metadata.URL))\n\n\tfor v := range vendors {\n\t\tv.disallowDelimiterVariations = true\n\t\tv.disallowSubSelections = true\n\t}\n\n\treturn vendors\n}\n\nfunc candidateProductsForAPK(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.ApkDBEntry)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tproducts := newFieldCandidateSet()\n\tcandidates := upstreamCandidates(metadata)\n\n\tfor _, c := range candidates {\n\t\tswitch c.Type {\n\t\tcase pkg.UnknownPkg:\n\t\t\tproducts.addValue(c.Name)\n\t\t\tproducts.addValue(findAdditionalProducts(defaultCandidateAdditions, pkg.ApkPkg, c.Name)...)\n\t\t\tproducts.removeByValue(findProductsToRemove(defaultCandidateRemovals, pkg.ApkPkg, c.Name)...)\n\t\tdefault:\n\t\t\tproducts.addValue(c.Name)\n\t\t\tproducts.addValue(findAdditionalProducts(defaultCandidateAdditions, c.Type, c.Name)...)\n\t\t\tproducts.removeByValue(findProductsToRemove(defaultCandidateRemovals, c.Type, c.Name)...)\n\t\t}\n\t}\n\n\tfor p := range products {\n\t\tp.disallowDelimiterVariations = true\n\t\tp.disallowSubSelections = true\n\t}\n\n\treturn products\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/apk_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_candidateVendorsForAPK(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"py3-cryptography Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"py3-cryptography\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"python-cryptography_project\", \"cryptography\", \"cryptographyproject\", \"cryptography_project\"},\n\t\t},\n\t\t{\n\t\t\tname: \"py2-pypdf with explicit different origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"py2-pypdf\",\n\t\t\t\t\tOriginPackage: \"abcdefg\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"pypdf\", \"pypdfproject\", \"pypdf_project\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-armadillo Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"ruby-armadillo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"armadillo\"},\n\t\t},\n\t\t{\n\t\t\tname: \"python-3.6\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"python-3.6\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"python\", \"python_software_foundation\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-3.6\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"ruby-3.6\",\n\t\t\t\t\tURL:     \"https://www.ruby-lang.org/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"ruby\", \"ruby-lang\"},\n\t\t},\n\t\t{\n\t\t\tname: \"make\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"make\",\n\t\t\t\t\tURL:     \"https://www.gnu.org/software/make\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"gnu\", \"make\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-rake with matching origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"ruby-rake\",\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"ruby-rake\",\n\t\t\t\t\tURL:           \"https://github.com/ruby/rake\",\n\t\t\t\t\tOriginPackage: \"ruby-rake\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"rake\", \"ruby-lang\", \"ruby\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-rake with non-matching origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"ruby-rake\",\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"ruby-rake\",\n\t\t\t\t\tURL:           \"https://www.ruby-lang.org/\",\n\t\t\t\t\tOriginPackage: \"ruby\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"rake\", \"ruby-lang\"},\n\t\t},\n\t\t{\n\t\t\tname: \"libavif\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"libavif\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"aomedia\", \"libavif\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateVendorsForAPK(test.pkg).uniqueValues(), \"different vendors\")\n\t\t})\n\t}\n}\n\nfunc Test_candidateProductsForAPK(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"py3-cryptography Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"py3-cryptography\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"cryptography\", \"python-cryptography\"},\n\t\t},\n\t\t{\n\t\t\tname: \"py2-pypdf with explicit different origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"py2-pypdf\",\n\t\t\t\t\tOriginPackage: \"abcdefg\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"pypdf\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-armadillo Package\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"ruby-armadillo\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"armadillo\"},\n\t\t},\n\t\t{\n\t\t\tname: \"python-3.6\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"python-3.6\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"python\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-3.6\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"ruby-3.6\",\n\t\t\t\t\tURL:     \"https://www.ruby-lang.org/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"ruby\"},\n\t\t},\n\t\t{\n\t\t\tname: \"make\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage: \"make\",\n\t\t\t\t\tURL:     \"https://www.gnu.org/software/make\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"make\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-rake with matching origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"ruby-rake\",\n\t\t\t\t\tURL:           \"https://github.com/ruby/rake\",\n\t\t\t\t\tOriginPackage: \"ruby-rake\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"rake\"},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-rake with non-matching origin\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"ruby-rake\",\n\t\t\t\tType: pkg.ApkPkg,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"ruby-rake\",\n\t\t\t\t\tURL:           \"https://www.ruby-lang.org/\",\n\t\t\t\t\tOriginPackage: \"ruby\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"rake\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateProductsForAPK(test.pkg).uniqueValues(), \"different products\")\n\t\t})\n\t}\n}\n\nfunc Test_upstreamCandidates(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmetadata pkg.ApkDBEntry\n\t\texpected []upstreamCandidate\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"p\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"p\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"same package and origin simple case\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"p\",\n\t\t\t\tOriginPackage: \"p\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"p\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"different package and origin\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"p\",\n\t\t\t\tOriginPackage: \"origin\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"p\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"upstream python package information as qualifier py- prefix\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"py-potatoes\",\n\t\t\t\tOriginPackage: \"py-potatoes\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"potatoes\", Type: pkg.PythonPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"upstream python package information as qualifier py3- prefix\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"py3-potatoes\",\n\t\t\t\tOriginPackage: \"py3-potatoes\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"potatoes\", Type: pkg.PythonPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"python package with distinct origin package\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"py3-non-existant\",\n\t\t\t\tOriginPackage: \"abcdefg\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"non-existant\", Type: pkg.PythonPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"upstream ruby package information as qualifier\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"ruby-something\",\n\t\t\t\tOriginPackage: \"ruby-something\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"something\", Type: pkg.GemPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby package with distinct origin package\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage:       \"ruby-something\",\n\t\t\t\tOriginPackage: \"1234567\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"something\", Type: pkg.GemPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"postgesql-15 upstream postgresql\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"postgresql-15\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"postgresql\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"postgesql15 upstream postgresql\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"postgresql15\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"postgresql\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"go-1.19 upstream go\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"go-1.19\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"go\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"go1.143 upstream go\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"go1.143\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"go\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"abc-101.191.23456 upstream abc\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"abc-101.191.23456\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"abc\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"abc101.191.23456 upstream abc\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"abc101.191.23456\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"abc\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"abc101-12345-1045 upstream abc101-12345\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"abc101-12345-1045\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"abc101-12345\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"abc101-a12345-1045 upstream abc101-a12345\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"abc101-a12345-1045\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"abc-a12345-1045\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package starting with single digit\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"3proxy\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"3proxy\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package starting with multiple digits\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"356proxy\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"356proxy\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package composed of only digits\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"123456\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"123456\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-3.6 upstream ruby\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"ruby-3.6\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"ruby\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby3.6 upstream ruby\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"ruby3.6\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"ruby\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby3.6-tacos upstream tacos\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"ruby3.6-tacos\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"tacos\", Type: pkg.GemPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby-3.6-tacos upstream tacos\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"ruby-3.6-tacos\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"tacos\", Type: pkg.GemPkg},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"abc1234jksajflksa\",\n\t\t\tmetadata: pkg.ApkDBEntry{\n\t\t\t\tPackage: \"abc1234jksajflksa\",\n\t\t\t},\n\t\t\texpected: []upstreamCandidate{\n\t\t\t\t{Name: \"abc1234jksajflksa\", Type: pkg.UnknownPkg},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := upstreamCandidates(test.metadata)\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/candidate_by_package_type.go",
    "content": "package cpegenerate\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// candidateComposite is a convenience when creating the defaultCandidateAdditions set\ntype candidateComposite struct {\n\tpkg.Type\n\tcandidateKey\n\tcandidateAddition\n}\n\ntype candidateRemovalComposite struct {\n\tpkg.Type\n\tcandidateKey\n\tcandidateRemovals\n}\n\n// defaultCandidateAdditions is all of the known cases for product and vendor field values that should be used when\n// select package information is discovered\nvar defaultCandidateAdditions = buildCandidateLookup(\n\t[]candidateComposite{\n\t\t// Binary packages\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"curl\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"haxx\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"go\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"golang\"}},\n\t\t},\n\t\t// Not including the various java ones for now since the raised\n\t\t// binary package classifier name is the same but there are different CPEs\n\t\t// for different distributions of OpenJDK.  Also, it is unlikely this name will collide\n\t\t// with whatever might be raised by an ELF notes section, so these are unlikely to\n\t\t// be of much use here anyways\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"julia\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"julialang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"python\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"python_software_foundation\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"redislabs\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"node\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"node.js\"}, AdditionalVendors: []string{\"nodejs\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"util-linux\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"kernel\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"composer\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"getcomposer\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"httpd\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"http_server\"}, AdditionalVendors: []string{\"apache\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"mysql\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"oracle\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"php-cli\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"php\"}, AdditionalVendors: []string{\"php\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"php-fpm\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"php\"}, AdditionalVendors: []string{\"php\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"libphp\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"php\"}, AdditionalVendors: []string{\"php\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"percona-server\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"percona_server\", \"mysql\"}, AdditionalVendors: []string{\"oracle\", \"percona\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"percona-xtradb-cluster\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"percona_server\", \"mysql\", \"xtradb_cluster\"}, AdditionalVendors: []string{\"oracle\", \"percona\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"percona-xtrabackup\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"xtrabackup\"}, AdditionalVendors: []string{\"percona\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"rust\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"rust-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"ruby\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"erlang\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"erlang/otp\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"swipl\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"erlang/otp\"}, AdditionalVendors: []string{\"erlang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"consule\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"hashicorp\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"nginx\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"f5\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"bash\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnu\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"gcc\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnu\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"fluent-bit\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"fluent_bit\"}, AdditionalVendors: []string{\"treasuredata\"}},\n\t\t},\n\t\t// Java packages\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"springframework\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"spring_framework\", \"springsource_spring_framework\"}, AdditionalVendors: []string{\"pivotal_software\", \"springsource\", \"vmware\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"spring-core\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"spring_framework\", \"springsource_spring_framework\"}, AdditionalVendors: []string{\"pivotal_software\", \"springsource\", \"vmware\"}},\n\t\t},\n\t\t{\n\t\t\t// example image: docker.io/jenkins/jenkins:latest\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"spring-security-core\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"spring_security\"}, AdditionalVendors: []string{\"vmware\"}},\n\t\t},\n\t\t{\n\t\t\t// example image: docker.io/nuxeo:latest\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"elasticsearch\"}, // , Vendor: \"elasticsearch\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"elastic\"}},\n\t\t},\n\t\t{\n\t\t\t// example image: docker.io/kaazing-gateway:latest\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"log4j\"}, // , Vendor: \"apache-software-foundation\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"apache\"}},\n\t\t},\n\n\t\t{\n\t\t\t// example image: cassandra:latest\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"apache-cassandra\"}, // , Vendor: \"apache\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"cassandra\"}},\n\t\t},\n\t\t{\n\t\t\t// example image: cloudbees/cloudbees-core-mm:2.319.3.4\n\t\t\t// this is a wrapped packaging of the handlebars.js node module\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"handlebars\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"handlebarsjs\"}},\n\t\t},\n\t\t// NPM packages\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"next\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"next.js\"}, AdditionalVendors: []string{\"vercel\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"hapi\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"hapi_server_framework\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"handlebars.js\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"handlebars\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"is-my-json-valid\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"is_my_json_valid\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"mustache\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"mustache.js\"}},\n\t\t},\n\n\t\t// Gem packages\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"Arabic-Prawn\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"arabic_prawn\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"bio-basespace-sdk\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"basespace_ruby_sdk\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"cremefraiche\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"creme_fraiche\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"html-sanitizer\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"html_sanitizer\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"sentry-raven\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"raven-ruby\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"RedCloth\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"redcloth_library\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"VladTheEnterprising\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"vladtheenterprising\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"yajl-ruby\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"yajl-ruby_gem\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"cgi\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"date\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"openssl\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"rake\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"rdoc\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"rexml\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"trunk\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"webrick\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t// Python packages\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"python-rrdtool\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"rrdtool\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"cryptography\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"python-cryptography\"}, AdditionalVendors: []string{\"python-cryptography_project\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"pip\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"pypa\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"Django\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"djangoproject\"}},\n\t\t},\n\t\t// Alpine packages\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"curl\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"haxx\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"python3\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"python\"}, AdditionalVendors: []string{\"python\", \"python_software_foundation\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"python\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"python_software_foundation\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"nodejs\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"node.js\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"nodejs-current\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"node.js\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"go\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"golang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"ruby\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"ruby-lang\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"bazel\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"google\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"clang\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"llvm\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"openjdk\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"oracle\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"glibc\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnu\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"glib\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnome\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"bash\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnu\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"alsa-lib\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"alsa-project\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"alsa\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"alsa-project\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"make\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"gnu\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"git\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"git-scm\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"libavif\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"aomedia\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"bind\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"isc\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"libxpm\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"libxpm_project\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"musl\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"musl-libc\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"firefox\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"mozilla\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"firefox-esr\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"mozilla\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"thunderbird\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"mozilla\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"chromium\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"google\"}, AdditionalProducts: []string{\"chrome\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"apache\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"http_server\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"tiff\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"libtiff\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"ghostscript\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"artifex\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"openjpeg\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"uclouvain\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"xorg-server\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"x.org\"}, AdditionalProducts: []string{\"x_server\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"podofo\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"podofo_project\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"wpa_supplicant\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"w1.fi\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.ApkPkg,\n\t\t\tcandidateKey{PkgName: \"dnsmasq\", Vendor: \"dnsmasq\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"thekelleys\"}},\n\t\t},\n\t\t// Debian packages\n\t\t{\n\t\t\tpkg.DebPkg,\n\t\t\tcandidateKey{PkgName: \"dnsmasq\", Vendor: \"dnsmasq\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"thekelleys\"}},\n\t\t},\n\t\t// Binary packages\n\t\t{\n\t\t\tpkg.BinaryPkg,\n\t\t\tcandidateKey{PkgName: \"node\"},\n\t\t\tcandidateAddition{AdditionalProducts: []string{\"nodejs\", \"node.js\"}},\n\t\t},\n\t\t// Conan packages\n\t\t{\n\t\t\tpkg.ConanPkg,\n\t\t\tcandidateKey{PkgName: \"poco\"},\n\t\t\tcandidateAddition{AdditionalVendors: []string{\"pocoproject\"}},\n\t\t},\n\t})\n\nvar defaultCandidateRemovals = buildCandidateRemovalLookup(\n\t[]candidateRemovalComposite{\n\t\t// Python packages\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"redis\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.PythonPkg,\n\t\t\tcandidateKey{PkgName: \"kubernetes\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"kubernetes\"}},\n\t\t},\n\t\t// NPM packages\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"redis\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"php\"},\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"php\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"delegate\"},\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"delegate\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.NpmPkg,\n\t\t\tcandidateKey{PkgName: \"docker\"},\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"docker\"}},\n\t\t},\n\t\t// Java packages\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-builder-support\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-model\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-repository-metadata\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-settings\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-settings-builder\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-api\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-connector-basic\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-impl\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-named-locks\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-spi\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-transport-file\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-transport-http\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-transport-wagon\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-resolver-util\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"maven-shared-utils\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"maven\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.JavaPkg,\n\t\t\tcandidateKey{PkgName: \"gradle-enterprise\"},\n\t\t\tcandidateRemovals{\n\t\t\t\tProductsToRemove: []string{\"gradle-enterprise\"},\n\t\t\t\tVendorsToRemove:  []string{\"gradle\"},\n\t\t\t},\n\t\t},\n\t\t// Ruby packages\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"redis\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.GemPkg,\n\t\t\tcandidateKey{PkgName: \"grpc\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"grpc\"}},\n\t\t},\n\t\t// Rust packages\n\t\t{\n\t\t\tpkg.RustPkg,\n\t\t\tcandidateKey{PkgName: \"hyper\"},\n\t\t\t// Avoid matching CVE-2024-23741\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"vercel\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.RustPkg,\n\t\t\tcandidateKey{PkgName: \"opentelemetry\"},\n\t\t\t// Avoid matching CVE-2023-45142\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"opentelemetry\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.RustPkg,\n\t\t\tcandidateKey{PkgName: \"prometheus\"},\n\t\t\t// Avoid matching CVE-2019-3826\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"prometheus\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.RustPkg,\n\t\t\tcandidateKey{PkgName: \"phf\"},\n\t\t\t// Avoid matching CVE-2000-1186\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"phf\"}},\n\t\t},\n\t\t{\n\t\t\tpkg.RustPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\t// Avoid matching CVE-2022-24735\n\t\t\tcandidateRemovals{VendorsToRemove: []string{\"redis\"}},\n\t\t},\n\t\t// PHP packages\n\t\t{\n\t\t\tpkg.PhpPearPkg,\n\t\t\tcandidateKey{PkgName: \"redis\"},\n\t\t\tcandidateRemovals{ProductsToRemove: []string{\"redis\"}},\n\t\t},\n\t})\n\n// buildCandidateLookup is a convenience function for creating the defaultCandidateAdditions set\nfunc buildCandidateLookup(cc []candidateComposite) (ca map[pkg.Type]map[candidateKey]candidateAddition) {\n\tca = make(map[pkg.Type]map[candidateKey]candidateAddition)\n\tfor _, c := range cc {\n\t\tif _, ok := ca[c.Type]; !ok {\n\t\t\tca[c.Type] = make(map[candidateKey]candidateAddition)\n\t\t}\n\t\tca[c.Type][c.candidateKey] = c.candidateAddition\n\t}\n\n\treturn ca\n}\n\n// buildCandidateRemovalLookup is a convenience function for creating the defaultCandidateRemovals set\nfunc buildCandidateRemovalLookup(cc []candidateRemovalComposite) (ca map[pkg.Type]map[candidateKey]candidateRemovals) {\n\tca = make(map[pkg.Type]map[candidateKey]candidateRemovals)\n\tfor _, c := range cc {\n\t\tif _, ok := ca[c.Type]; !ok {\n\t\t\tca[c.Type] = make(map[candidateKey]candidateRemovals)\n\t\t}\n\t\tca[c.Type][c.candidateKey] = c.candidateRemovals\n\t}\n\treturn ca\n}\n\n// candidateKey represents the set of inputs that should be matched on in order to signal more candidate additions to be used.\ntype candidateKey struct {\n\tVendor  string\n\tPkgName string\n}\n\n// candidateRemovals are the specific removals that should be considered during CPE generation (given a specific candidateKey)\ntype candidateRemovals struct {\n\tProductsToRemove []string\n\tVendorsToRemove  []string\n}\n\n// candidateAddition are the specific additions that should be considered during CPE generation (given a specific candidateKey)\ntype candidateAddition struct {\n\tAdditionalProducts []string\n\tAdditionalVendors  []string\n}\n\n// findAdditionalVendors searches all possible vendor additions that could be added during the CPE generation process (given package info + a vendor candidate)\nfunc findAdditionalVendors(allAdditions map[pkg.Type]map[candidateKey]candidateAddition, ty pkg.Type, pkgName, vendor string) (vendors []string) {\n\tadditions, ok := allAdditions[ty]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif addition, ok := additions[candidateKey{\n\t\tVendor:  vendor,\n\t\tPkgName: pkgName,\n\t}]; ok {\n\t\tvendors = append(vendors, addition.AdditionalVendors...)\n\t}\n\n\tif addition, ok := additions[candidateKey{\n\t\tPkgName: pkgName,\n\t}]; ok {\n\t\tvendors = append(vendors, addition.AdditionalVendors...)\n\t}\n\n\tif addition, ok := additions[candidateKey{\n\t\tVendor: vendor,\n\t}]; ok {\n\t\tvendors = append(vendors, addition.AdditionalVendors...)\n\t}\n\n\treturn vendors\n}\n\n// findAdditionalProducts searches all possible product additions that could be added during the CPE generation process (given package info)\nfunc findAdditionalProducts(allAdditions map[pkg.Type]map[candidateKey]candidateAddition, ty pkg.Type, pkgName string) (products []string) {\n\tadditions, ok := allAdditions[ty]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif addition, ok := additions[candidateKey{\n\t\tPkgName: pkgName,\n\t}]; ok {\n\t\tproducts = append(products, addition.AdditionalProducts...)\n\t}\n\n\treturn products\n}\n\n// findVendorsToRemove searches all possible vendor removals that could be removed during the CPE generation process (given package info + a vendor candidate)\nfunc findVendorsToRemove(allRemovals map[pkg.Type]map[candidateKey]candidateRemovals, ty pkg.Type, pkgName string) (vendors []string) {\n\tremovals, ok := allRemovals[ty]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif removal, ok := removals[candidateKey{\n\t\tPkgName: pkgName,\n\t}]; ok {\n\t\tvendors = append(vendors, removal.VendorsToRemove...)\n\t}\n\n\treturn vendors\n}\n\n// findProductsToRemove searches all possible product removals that could be removed during the CPE generation process (given package info)\nfunc findProductsToRemove(allRemovals map[pkg.Type]map[candidateKey]candidateRemovals, ty pkg.Type, pkgName string) (products []string) {\n\tremovals, ok := allRemovals[ty]\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif removal, ok := removals[candidateKey{\n\t\tPkgName: pkgName,\n\t}]; ok {\n\t\tproducts = append(products, removal.ProductsToRemove...)\n\t}\n\n\treturn products\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/candidate_by_package_type_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_additionalProducts(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tallAdditions map[pkg.Type]map[candidateKey]candidateAddition\n\t\tty           pkg.Type\n\t\tpkgName      string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname: \"product name addition\",\n\t\t\tallAdditions: map[pkg.Type]map[candidateKey]candidateAddition{\n\t\t\t\tpkg.JavaPkg: {\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"spring-core\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalProducts: []string{\"spring_framework\", \"springsource_spring_framework\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"spring-core\",\n\t\t\texpected: []string{\"spring_framework\", \"springsource_spring_framework\"},\n\t\t},\n\t\t{\n\t\t\tname: \"no addition found\",\n\t\t\tallAdditions: map[pkg.Type]map[candidateKey]candidateAddition{\n\t\t\t\tpkg.JavaPkg: {\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"spring-core\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalProducts: []string{\"spring_framework\", \"springsource_spring_framework\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"nothing\",\n\t\t\texpected: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, findAdditionalProducts(test.allAdditions, test.ty, test.pkgName))\n\t\t})\n\t}\n}\n\nfunc Test_additionalVendors(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tallAdditions map[pkg.Type]map[candidateKey]candidateAddition\n\t\tty           pkg.Type\n\t\tpkgName      string\n\t\tvendor       string\n\t\texpected     []string\n\t}{\n\t\t{\n\t\t\tname: \"vendor addition by input vendor\",\n\t\t\tallAdditions: map[pkg.Type]map[candidateKey]candidateAddition{\n\t\t\t\tpkg.JavaPkg: {\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tVendor: \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"awesome-vendor-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\t// note: the below keys should not be matched\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t\tVendor:  \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"bad-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"bad-addition\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"NOT-MY-PACKAGE\",\n\t\t\tvendor:   \"my-vendor\",\n\t\t\texpected: []string{\"awesome-vendor-addition\"},\n\t\t},\n\t\t{\n\t\t\tname: \"vendor addition by input package name\",\n\t\t\tallAdditions: map[pkg.Type]map[candidateKey]candidateAddition{\n\t\t\t\tpkg.JavaPkg: {\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"awesome-vendor-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\t// note: the below keys should not be matched\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t\tVendor:  \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"bad-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tVendor: \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"bad-addition\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"my-package-name\",\n\t\t\tvendor:   \"NOT-MY-VENDOR\",\n\t\t\texpected: []string{\"awesome-vendor-addition\"},\n\t\t},\n\t\t{\n\t\t\tname: \"vendor addition by input package name + vendor\",\n\t\t\tallAdditions: map[pkg.Type]map[candidateKey]candidateAddition{\n\t\t\t\tpkg.JavaPkg: {\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t\tVendor:  \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"awesome-vendor-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\t// note: the below keys should not be matched\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"one-good-addition\"},\n\t\t\t\t\t},\n\t\t\t\t\tcandidateKey{\n\t\t\t\t\t\tVendor: \"my-vendor\",\n\t\t\t\t\t}: {\n\t\t\t\t\t\tAdditionalVendors: []string{\"another-good-addition\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"my-package-name\",\n\t\t\tvendor:   \"my-vendor\",\n\t\t\texpected: []string{\"awesome-vendor-addition\", \"one-good-addition\", \"another-good-addition\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, findAdditionalVendors(test.allAdditions, test.ty, test.pkgName, test.vendor))\n\t\t})\n\t}\n}\n\nfunc Test_findVendorsToRemove(t *testing.T) {\n\t//GIVEN\n\ttests := []struct {\n\t\tname     string\n\t\tty       pkg.Type\n\t\tpkgName  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"vendor removal match by input package name\",\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"my-package-name\",\n\t\t\texpected: []string{\"awesome-vendor-addition\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"vendor removal miss by input package name\",\n\t\t\tty:      pkg.JavaPkg,\n\t\t\tpkgName: \"my-package-name-1\",\n\t\t},\n\t}\n\n\tallRemovals := map[pkg.Type]map[candidateKey]candidateRemovals{\n\t\tpkg.JavaPkg: {\n\t\t\tcandidateKey{\n\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t}: {\n\t\t\t\tVendorsToRemove: []string{\"awesome-vendor-addition\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t//WHEN + THEN\n\t\t\tassert.Equal(t, test.expected, findVendorsToRemove(allRemovals, test.ty, test.pkgName))\n\t\t})\n\t}\n}\n\nfunc Test_findProductsToRemove(t *testing.T) {\n\t//GIVEN\n\ttests := []struct {\n\t\tname     string\n\t\tty       pkg.Type\n\t\tpkgName  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"vendor removal match by input package name\",\n\t\t\tty:       pkg.JavaPkg,\n\t\t\tpkgName:  \"my-package-name\",\n\t\t\texpected: []string{\"awesome-vendor-addition\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"vendor removal miss by input package name\",\n\t\t\tty:      pkg.JavaPkg,\n\t\t\tpkgName: \"my-package-name-1\",\n\t\t},\n\t}\n\n\tallRemovals := map[pkg.Type]map[candidateKey]candidateRemovals{\n\t\tpkg.JavaPkg: {\n\t\t\tcandidateKey{\n\t\t\t\tPkgName: \"my-package-name\",\n\t\t\t}: {\n\t\t\t\tProductsToRemove: []string{\"awesome-vendor-addition\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t//WHEN + THEN\n\t\t\tassert.Equal(t, test.expected, findProductsToRemove(allRemovals, test.ty, test.pkgName))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/candidate_for_pe.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// candidateVendorsForPE returns vendor candidates for PE (BinaryPkg) packages based on common metadata hints.\n// Specifically, normalize Ghostscript binaries to vendor \"artifex\" when detected.\nfunc candidateVendorsForPE(p pkg.Package) fieldCandidateSet {\n\tcandidates := newFieldCandidateSet()\n\n\tmeta, ok := p.Metadata.(pkg.PEBinary)\n\tif !ok {\n\t\treturn candidates\n\t}\n\n\tvar company, product, fileDesc string\n\tfor _, kv := range meta.VersionResources {\n\t\tswitch strings.ToLower(kv.Key) {\n\t\tcase \"companyname\":\n\t\t\tcompany = strings.ToLower(kv.Value)\n\t\tcase \"productname\":\n\t\t\tproduct = strings.ToLower(kv.Value)\n\t\tcase \"filedescription\":\n\t\t\tfileDesc = strings.ToLower(kv.Value)\n\t\t}\n\t}\n\n\tif strings.Contains(product, \"ghostscript\") || strings.Contains(fileDesc, \"ghostscript\") || strings.Contains(company, \"artifex\") {\n\t\tcandidates.addValue(\"artifex\")\n\t}\n\n\treturn candidates\n}\n\n// candidateProductsForPE returns product candidates for PE (BinaryPkg) packages based on common metadata hints.\n// Specifically, normalize Ghostscript binaries to product \"ghostscript\" when detected.\nfunc candidateProductsForPE(p pkg.Package) fieldCandidateSet {\n\tcandidates := newFieldCandidateSet()\n\n\tmeta, ok := p.Metadata.(pkg.PEBinary)\n\tif !ok {\n\t\treturn candidates\n\t}\n\n\tvar product, fileDesc string\n\tfor _, kv := range meta.VersionResources {\n\t\tswitch strings.ToLower(kv.Key) {\n\t\tcase \"productname\":\n\t\t\tproduct = strings.ToLower(kv.Value)\n\t\tcase \"filedescription\":\n\t\t\tfileDesc = strings.ToLower(kv.Value)\n\t\t}\n\t}\n\n\tif strings.Contains(product, \"ghostscript\") || strings.Contains(fileDesc, \"ghostscript\") {\n\t\tcandidates.addValue(\"ghostscript\")\n\t}\n\n\treturn candidates\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/dictionary/data/cpe-index.json",
    "content": "{\n  \"ecosystems\": {\n    \"go_modules\": {\n      \"aahframe.work\": [\n        \"cpe:2.3:a:aahframework:aah:*:*:*:*:*:go:*:*\"\n      ],\n      \"chainguard.dev/apko\": [\n        \"cpe:2.3:a:chainguard:apko:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/ClickHouse/ch-go\": [\n        \"cpe:2.3:a:clickhouse:ch:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/Masterminds/goutils\": [\n        \"cpe:2.3:a:goutils_project:goutils:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/SimonWaldherr/zplgfa\": [\n        \"cpe:2.3:a:simonwaldherr:zplgfa:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/anchore/stereoscope\": [\n        \"cpe:2.3:a:anchore:stereoscope:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/apptainer/apptainer\": [\n        \"cpe:2.3:a:lfprojects:apptainer:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/argoproj/argo-workflows/v3\": [\n        \"cpe:2.3:a:argoproj:argo_workflows:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/aws/aws-sdk-go\": [\n        \"cpe:2.3:a:amazon:aws_software_development_kit:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/b3log/wide\": [\n        \"cpe:2.3:a:wide_project:wide:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/charmbracelet/soft-serve\": [\n        \"cpe:2.3:a:charm:soft_serve:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/containers/podman\": [\n        \"cpe:2.3:a:podman_project:podman:*:*:*:*:*:*:*:*\"\n      ],\n      \"github.com/containers/psgo\": [\n        \"cpe:2.3:a:psgo_project:psgo:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/crewjam/saml\": [\n        \"cpe:2.3:a:saml_project:saml:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/deis/workflow-manager#section-readme\": [\n        \"cpe:2.3:a:deis:workflow_manager:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/disintegration/imaging\": [\n        \"cpe:2.3:a:disintegration:imaging:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/ecnepsnai/web\": [\n        \"cpe:2.3:a:web_project:web:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/free5gc/smf\": [\n        \"cpe:2.3:a:free5gc:smf:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/free5gc/udm\": [\n        \"cpe:2.3:a:free5gc:udm:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/ginuerzh/gost\": [\n        \"cpe:2.3:a:go_simple_tunnel_project:go_simple_tunnel:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/go-git/go-git\": [\n        \"cpe:2.3:a:go-git_project:go-git:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/go-resty/resty/v2\": [\n        \"cpe:2.3:a:resty_project:resty:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/gofiber/template/django\": [\n        \"cpe:2.3:a:gofiber:django:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/gofiber/template/django/v2\": [\n        \"cpe:2.3:a:gofiber:django:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/gofiber/template/django/v3\": [\n        \"cpe:2.3:a:gofiber:django:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/google/nftables\": [\n        \"cpe:2.3:a:google:nftables:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/gookit/goutil\": [\n        \"cpe:2.3:a:go_util_project:go_util:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/hamba/avro/v2\": [\n        \"cpe:2.3:a:avro_project:avro:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/hashicorp/go-retryablehttp\": [\n        \"cpe:2.3:a:hashicorp:retryablehttp:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/hashicorp/go-slug\": [\n        \"cpe:2.3:a:hashicorp:go-slug:*:*:*:*:*:*:*:*\"\n      ],\n      \"github.com/jumpserver/koko/pkg/koko\": [\n        \"cpe:2.3:a:fit2cloud:koko:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/libp2p/go-libp2p\": [\n        \"cpe:2.3:a:protocol:libp2p:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mccutchen/go-httpbin\": [\n        \"cpe:2.3:a:httpbingo:go-httpbin:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mccutchen/go-httpbin/v2\": [\n        \"cpe:2.3:a:httpbingo:go-httpbin:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mholt/archiver\": [\n        \"cpe:2.3:a:mholt:archiver:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mholt/archives\": [\n        \"cpe:2.3:a:mholt:archives:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mindersec/minder\": [\n        \"cpe:2.3:a:lfprojects:minder:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mojocn/base64Captcha\": [\n        \"cpe:2.3:a:mojotv:base64captcha:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/moov-io/signedxml\": [\n        \"cpe:2.3:a:moov:signedxml:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/mukul-shaunik/play-with-docker\": [\n        \"cpe:2.3:a:play-with-docker:play_with_docker:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/nektos/act/pkg/model\": [\n        \"cpe:2.3:a:act_project:act:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/notaryproject/notation-go\": [\n        \"cpe:2.3:a:notaryproject:notation-go:*:*:*:*:*:*:*:*\"\n      ],\n      \"github.com/ntbosscher/gobase\": [\n        \"cpe:2.3:a:gobase_project:gobase:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/proglottis/gpgme\": [\n        \"cpe:2.3:a:gpgme_project:gpgme:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/quic-go/webtransport-go#section-readme\": [\n        \"cpe:2.3:a:quic-go:webtransport-go:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/rezmoss/axios4go\": [\n        \"cpe:2.3:a:rezmoss:axios4go:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/sap/cloud-security-client-go\": [\n        \"cpe:2.3:a:sap:cloud-security-client-go:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/satori/go.uuid\": [\n        \"cpe:2.3:a:satori:uuid:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/sigstore/gitsign\": [\n        \"cpe:2.3:a:sigstore:gitsign:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/sirupsen/logrus\": [\n        \"cpe:2.3:a:turbopuffer:logrus:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/square/squalor\": [\n        \"cpe:2.3:a:squaredup:squalor:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/stacklok/minder\": [\n        \"cpe:2.3:a:lfprojects:minder:*:*:*:*:*:go:*:*\"\n      ],\n      \"github.com/valyala/fasthttp\": [\n        \"cpe:2.3:a:fasthttp_project:fasthttp:*:*:*:*:*:*:*:*\"\n      ],\n      \"github.com/whilp/git-urls\": [\n        \"cpe:2.3:a:git-urls_project:git-urls:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/crypto\": [\n        \"cpe:2.3:a:go:ssh:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/crypto/ssh\": [\n        \"cpe:2.3:a:golang:package_ssh:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:golang:ssh:*:*:*:*:*:*:*:*\"\n      ],\n      \"golang.org/x/crypto/ssh/agent\": [\n        \"cpe:2.3:a:golang:crypto:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:golang:crypto:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/image\": [\n        \"cpe:2.3:a:golang:image:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/image/tiff\": [\n        \"cpe:2.3:a:golang:tiff:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/net\": [\n        \"cpe:2.3:a:golang:networking:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/net/html\": [\n        \"cpe:2.3:a:go:html:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/net/http2\": [\n        \"cpe:2.3:a:golang:http2:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:golang:http2:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/net/http2/h2c\": [\n        \"cpe:2.3:a:golang:h2c:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/net/http2/hpack\": [\n        \"cpe:2.3:a:golang:hpack:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/oauth2/jws\": [\n        \"cpe:2.3:a:go:jws:*:*:*:*:*:go:*:*\"\n      ],\n      \"golang.org/x/text\": [\n        \"cpe:2.3:a:golang:text:*:*:*:*:*:*:*:*\"\n      ],\n      \"gopkg.in/yaml.v3\": [\n        \"cpe:2.3:a:yaml_project:yaml:*:*:*:*:*:go:*:*\"\n      ]\n    },\n    \"jenkins_plugins\": {\n      \"AnchorChain\": [\n        \"cpe:2.3:a:jenkins:anchorchain:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ApicaLoadtest\": [\n        \"cpe:2.3:a:jenkins:apica_loadtest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"DotCi\": [\n        \"cpe:2.3:a:jenkins:dotci:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"JDK_Parameter_Plugin\": [\n        \"cpe:2.3:a:jenkins:jdk_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"JiraTestResultReporter\": [\n        \"cpe:2.3:a:jenkins:jiratestresultreporter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"Parameterized-Remote-Trigger\": [\n        \"cpe:2.3:a:jenkins:parameterized_remote_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"TestComplete\": [\n        \"cpe:2.3:a:jenkins:testcomplete_support:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"TestFairy\": [\n        \"cpe:2.3:a:jenkins:testfairy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"absint-a3\": [\n        \"cpe:2.3:a:jenkins:absint_a3:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"absint-astree\": [\n        \"cpe:2.3:a:jenkins:absint_astree:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"accurev\": [\n        \"cpe:2.3:a:jenkins:accurev:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:microfocus:accurev:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"active-choices\": [\n        \"cpe:2.3:a:jenkins:active_choices:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"active-directory\": [\n        \"cpe:2.3:a:jenkins:active_directory:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"agent-server-parameter\": [\n        \"cpe:2.3:a:jenkins:agent_server_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"alauda-kubernetes-support\": [\n        \"cpe:2.3:a:jenkins:alauda_kubernetes_support:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"analysis-core\": [\n        \"cpe:2.3:a:jenkins:static_analysis_utilities:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"anchore-container-scanner\": [\n        \"cpe:2.3:a:anchore:container_image_scanner:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:anchore_container_image_scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"android-lint\": [\n        \"cpe:2.3:a:jenkins:android_lint:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ansible\": [\n        \"cpe:2.3:a:jenkins:ansible:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ansible-tower\": [\n        \"cpe:2.3:a:jenkins:ansible_tower:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"app-detector\": [\n        \"cpe:2.3:a:jenkins:application_detector:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"appdynamics\": [\n        \"cpe:2.3:a:jenkins:appdynamics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"applatix\": [\n        \"cpe:2.3:a:jenkins:applatix:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"applitools-eyes\": [\n        \"cpe:2.3:a:jenkins:applitools_eyes:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"apprenda\": [\n        \"cpe:2.3:a:jenkins:apprenda:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aqua-microscanner\": [\n        \"cpe:2.3:a:jenkins:aqua_microscanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aqua-security-scanner\": [\n        \"cpe:2.3:a:jenkins:aqua_security_scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aqua-serverless\": [\n        \"cpe:2.3:a:jenkins:aqua_security_severless_scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"artifact-repository-parameter\": [\n        \"cpe:2.3:a:jenkins:artifact_repository_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"asakusa-satellite-plugin\": [\n        \"cpe:2.3:a:jenkins:asakusasatellite:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"assembla\": [\n        \"cpe:2.3:a:jenkins:assembla:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"assembla-auth\": [\n        \"cpe:2.3:a:jenkins:assembla_auth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"assembla-merge-request-builder\": [\n        \"cpe:2.3:a:jenkins:assembla_merge_request_builder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"atlassian-bitbucket-server-integration\": [\n        \"cpe:2.3:a:jenkins:bitbucket_server_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"audit-trail\": [\n        \"cpe:2.3:a:jenkins:audit_trail:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"audit2db\": [\n        \"cpe:2.3:a:jenkins:audit_to_database:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"autocomplete-parameter\": [\n        \"cpe:2.3:a:jenkins:autocomplete_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"autonomiq\": [\n        \"cpe:2.3:a:jenkins:autonomiq:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"avatar\": [\n        \"cpe:2.3:a:jenkins:avatar:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-beanstalk-publisher\": [\n        \"cpe:2.3:a:jenkins:aws_elastic_beanstalk_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-beanstalk-publisher-plugin\": [\n        \"cpe:2.3:a:jenkins:aws_elastic_beanstalk_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-cloudwatch-logs-publisher\": [\n        \"cpe:2.3:a:jenkins:aws_cloudwatch_logs_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-codebuild\": [\n        \"cpe:2.3:a:jenkins:aws_codebuild:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-codecommit-trigger\": [\n        \"cpe:2.3:a:jenkins:aws_codecommit_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-codedeploy\": [\n        \"cpe:2.3:a:jenkins:aws_codedeploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-codepipeline\": [\n        \"cpe:2.3:a:jenkins:aws_codepipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-credentials\": [\n        \"cpe:2.3:a:jenkins:cloudbees_aws_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-device-farm\": [\n        \"cpe:2.3:a:jenkins:aws-device-farm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-global-configuration\": [\n        \"cpe:2.3:a:jenkins:aws_global_configuration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"aws-sam\": [\n        \"cpe:2.3:a:jenkins:amazon_web_services_serverless_application_model:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:amazon_web_services_service_application_model:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"awseb-deployment\": [\n        \"cpe:2.3:a:jenkins:awseb_deployment:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-acs\": [\n        \"cpe:2.3:a:jenkins:azure_container_service:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-ad\": [\n        \"cpe:2.3:a:jenkins:azure_ad:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-container-agents\": [\n        \"cpe:2.3:a:jenkins:azure_container_service:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-credentials\": [\n        \"cpe:2.3:a:jenkins:azure_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-keyvault\": [\n        \"cpe:2.3:a:jenkins:azure_key_vault:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-publishersettings-credentials\": [\n        \"cpe:2.3:a:jenkins:azure_publishersettings_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"azure-vm-agents\": [\n        \"cpe:2.3:a:jenkins:azure_vm_agents:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"backlog\": [\n        \"cpe:2.3:a:jenkins:backlog:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"badge\": [\n        \"cpe:2.3:a:jenkins:badge:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bart\": [\n        \"cpe:2.3:a:jenkins:bart:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"batch-task\": [\n        \"cpe:2.3:a:jenkins:batch_task:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bazaar\": [\n        \"cpe:2.3:a:jenkins:bazaar:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"beaker-builder\": [\n        \"cpe:2.3:a:jenkins:beaker_builder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bearychat\": [\n        \"cpe:2.3:a:jenkins:bearychat:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"benchmark-evaluator\": [\n        \"cpe:2.3:a:jenkins:benchmark_evaluator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bigpanda-jenkins\": [\n        \"cpe:2.3:a:jenkins:bigpanda_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bitbucket-approve\": [\n        \"cpe:2.3:a:jenkins:bitbucket_approve:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bitbucket-branch-source\": [\n        \"cpe:2.3:a:jenkins:bitbucket_branch_source:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bitbucket-oauth\": [\n        \"cpe:2.3:a:jenkins:bitbucket_oauth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bitbucket-push-and-pull-request\": [\n        \"cpe:2.3:a:jenkins:bitbucket_push_and_pull_request:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"blackduck-detect\": [\n        \"cpe:2.3:a:jenkins:synopsys_detect:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"blackduck-hub\": [\n        \"cpe:2.3:a:jenkins:black_duck_hub:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"blueocean\": [\n        \"cpe:2.3:a:jenkins:blue_ocean:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bmc-rpd\": [\n        \"cpe:2.3:a:jenkins:bmc_release_package_and_deployment:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"brakeman\": [\n        \"cpe:2.3:a:jenkins:brakeman:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bugzilla\": [\n        \"cpe:2.3:a:jenkins:bugzilla:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:bugzilla_plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-failure-analyzer\": [\n        \"cpe:2.3:a:jenkins:build_failure_analyzer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-metrics\": [\n        \"cpe:2.3:a:jenkins:build-metrics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-monitor\": [\n        \"cpe:2.3:a:jenkins:build_monitor_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-monitor-plugin\": [\n        \"cpe:2.3:a:jenkins:build_monitor_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-notifications\": [\n        \"cpe:2.3:a:jenkins:build_notifications:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-pipeline\": [\n        \"cpe:2.3:a:jenkins:build_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-publisher\": [\n        \"cpe:2.3:a:jenkins:build-publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"build-with-parameters\": [\n        \"cpe:2.3:a:jenkins:build_with_parameters:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"buildgraph-view\": [\n        \"cpe:2.3:a:jenkins:buildgraph-view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"bumblebee\": [\n        \"cpe:2.3:a:jenkins:bumblebee_hp_alm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"byteguard-build-actions\": [\n        \"cpe:2.3:a:jenkins:byteguard_build_actions:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cas\": [\n        \"cpe:2.3:a:jenkins:cas:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cas-plugin\": [\n        \"cpe:2.3:a:jenkins:cas:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"catalogic-ecx\": [\n        \"cpe:2.3:a:jenkins:ecx_copy_data_management:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cavisson-ns-nd-integration\": [\n        \"cpe:2.3:a:jenkins:ns-nd_integration_performance_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cccc\": [\n        \"cpe:2.3:a:jenkins:cccc:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ccm\": [\n        \"cpe:2.3:a:jenkins:ccm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"chaos-monkey\": [\n        \"cpe:2.3:a:netflix:chaos_monkey:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"checkmarx\": [\n        \"cpe:2.3:a:jenkins:checkmarx:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"checkstyle\": [\n        \"cpe:2.3:a:jenkins:checkstyle:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"chef-identity\": [\n        \"cpe:2.3:a:jenkins:chef_identity:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"chosen-views-tabbar\": [\n        \"cpe:2.3:a:jenkins:chosen-views-tabbar:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ci-with-toad-edge\": [\n        \"cpe:2.3:a:jenkins:continuous_integration_with_toad_edge:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cisco-spark\": [\n        \"cpe:2.3:a:jenkins:cisco_spark:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"claim\": [\n        \"cpe:2.3:a:jenkins:claim:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"clearcase-release\": [\n        \"cpe:2.3:a:jenkins:clearcase_release:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"clif-performance-testing\": [\n        \"cpe:2.3:a:jenkins:clif_performance_testing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloud-stats\": [\n        \"cpe:2.3:a:jenkins:cloud_statistics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudbees-bitbucket-branch-source\": [\n        \"cpe:2.3:a:jenkins:bitbucket_branch_source:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudbees-folder\": [\n        \"cpe:2.3:a:jenkins:folders:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudbees-jenkins-advisor\": [\n        \"cpe:2.3:a:jenkins:health_advisor_by_cloudbees:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudcoreo-deploytime\": [\n        \"cpe:2.3:a:jenkins:cloudcoreo_deploytime:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudfoundry\": [\n        \"cpe:2.3:a:jenkins:cloud_foundry:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudshare-docker\": [\n        \"cpe:2.3:a:jenkins:cloudshare_docker-machine:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cloudtest\": [\n        \"cpe:2.3:a:jenkins:soasta_cloudtest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cobertura\": [\n        \"cpe:2.3:a:jenkins:cobertura:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"code-coverage-api\": [\n        \"cpe:2.3:a:jenkins:code_coverage_api:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"codefresh\": [\n        \"cpe:2.3:a:jenkins:codefresh_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"codescan\": [\n        \"cpe:2.3:a:jenkins:codescan:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"collabnet\": [\n        \"cpe:2.3:a:jenkins:collabnet:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compact-columns\": [\n        \"cpe:2.3:a:jenkins:compact_columns:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compatibility-action-storage\": [\n        \"cpe:2.3:a:praqma:compatibility_action_storage:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"computer-queue\": [\n        \"cpe:2.3:a:jenkins:computer_queue:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compuware-common-configuration\": [\n        \"cpe:2.3:a:jenkins:compuware_common_configuration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compuware-ispw-operations\": [\n        \"cpe:2.3:a:jenkins:compuware_ispw_operations:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compuware-topaz-for-total-test\": [\n        \"cpe:2.3:a:jenkins:compuware_topaz_for_total_test:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compuware-topaz-utilities\": [\n        \"cpe:2.3:a:jenkins:compuware_topaz_utilities:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"compuware-xpediter-code-coverage\": [\n        \"cpe:2.3:a:jenkins:compuware_xpediter_code_coverage:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"config-file-provider\": [\n        \"cpe:2.3:a:jenkins:config_file_provider:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"configuration-as-code\": [\n        \"cpe:2.3:a:jenkins:configuration_as_code:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"configurationslicing\": [\n        \"cpe:2.3:a:jenkins:configuration_slicing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"confluence-publisher\": [\n        \"cpe:2.3:a:jenkins:confluence_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"conjur-credentials\": [\n        \"cpe:2.3:a:jenkins:conjur_secrets:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cons3rt\": [\n        \"cpe:2.3:a:jenkins:cons3rt:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"consul-kv-builder\": [\n        \"cpe:2.3:a:jenkins:consul_kv_builder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"contrast-continuous-application-security\": [\n        \"cpe:2.3:a:jenkins:contrast_continuous_application_security:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"convert-to-pipeline\": [\n        \"cpe:2.3:a:jenkins:convert_to_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"convertigo-mobile-platform\": [\n        \"cpe:2.3:a:jenkins:convertigo_mobile_platform:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"copr\": [\n        \"cpe:2.3:a:jenkins:copr:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"copy-data-to-workspace\": [\n        \"cpe:2.3:a:jenkins:copy_data_to_workspace:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"copy-data-to-workspace-plugin\": [\n        \"cpe:2.3:a:jenkins:copy_data_to_workspace:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"copy-to-slave\": [\n        \"cpe:2.3:a:jenkins:copy_to_slave:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"copyartifact\": [\n        \"cpe:2.3:a:jenkins:copy_artifact:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"couchdb-statistics\": [\n        \"cpe:2.3:a:jenkins:couchdb-statistics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"covcomplplot\": [\n        \"cpe:2.3:a:jenkins:coverage\\\\/complexity_scatter_plot:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"coverity\": [\n        \"cpe:2.3:a:jenkins:coverity:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cppcheck\": [\n        \"cpe:2.3:a:jenkins:cppcheck:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cppncss\": [\n        \"cpe:2.3:a:jenkins:cppncss:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"crap4j\": [\n        \"cpe:2.3:a:jenkins:crap4j:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"credentials\": [\n        \"cpe:2.3:a:jenkins:credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"credentials-binding\": [\n        \"cpe:2.3:a:jenkins:credentials_binding:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"crittercism-dsym\": [\n        \"cpe:2.3:a:jenkins:crittercism-dsym:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"crowd\": [\n        \"cpe:2.3:a:jenkins:crowd_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"crowd2\": [\n        \"cpe:2.3:a:atlassian:crowd2:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:crowd_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"crx-content-package-deployer\": [\n        \"cpe:2.3:a:jenkins:crx_content_package_deployer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cryptomove\": [\n        \"cpe:2.3:a:jenkins:cryptomove:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cucumber-living-documentation\": [\n        \"cpe:2.3:a:jenkins:cucumber_living_documentation:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"curseforge-publisher\": [\n        \"cpe:2.3:a:jenkins:curseforge_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"custom-build-properties\": [\n        \"cpe:2.3:a:jenkins:custom_build_properties:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"custom-checkbox-parameter\": [\n        \"cpe:2.3:a:jenkins:custom_checkbox_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"custom-job-icon\": [\n        \"cpe:2.3:a:jenkins:custom_job_icon:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"cvs\": [\n        \"cpe:2.3:a:jenkins:current_versions_systems:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:cvs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dashboard-view\": [\n        \"cpe:2.3:a:jenkins:dashboard_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"database\": [\n        \"cpe:2.3:a:jenkins:database:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"datadog\": [\n        \"cpe:2.3:a:jenkins:datadog:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"date-parameter\": [\n        \"cpe:2.3:a:jenkins:date_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dbCharts\": [\n        \"cpe:2.3:a:jenkins:dbcharts:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"deadmanssnitch\": [\n        \"cpe:2.3:a:jenkins:dead_man\\\\'s_snitch:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"debian-package-builder\": [\n        \"cpe:2.3:a:jenkins:debian_package_builder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"delivery-pipeline-plugin\": [\n        \"cpe:2.3:a:jenkins:delivery_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"delphix\": [\n        \"cpe:2.3:a:jenkins:delphix:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dependency-check\": [\n        \"cpe:2.3:a:jenkins:owasp_dependency-check:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dependency-check-jenkins-plugin\": [\n        \"cpe:2.3:a:jenkins:owasp_dependency-check:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dependency-track\": [\n        \"cpe:2.3:a:jenkins:owasp_dependency-track:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"depgraph-view\": [\n        \"cpe:2.3:a:jenkins:dependency_graph_viewer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"deploy\": [\n        \"cpe:2.3:a:jenkins:deploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"deployer-framework\": [\n        \"cpe:2.3:a:jenkins:deployer_framework:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"deployhub\": [\n        \"cpe:2.3:a:jenkins:deployhub:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"deployit-plugin\": [\n        \"cpe:2.3:a:jenkins:xebialabs_xl_deploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"description-column\": [\n        \"cpe:2.3:a:jenkins:description_column:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"description-column-plugin\": [\n        \"cpe:2.3:a:jenkins:description_column:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"diawi-upload\": [\n        \"cpe:2.3:a:jenkins:diawi_upload:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"digitalocean\": [\n        \"cpe:2.3:a:jenkins:digitalocean:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"digitalocean-plugin\": [\n        \"cpe:2.3:a:jenkins:digitalocean:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dimensionsscm\": [\n        \"cpe:2.3:a:microfocus:dimensions_cm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dingding-json-pusher\": [\n        \"cpe:2.3:a:jenkins:dingding_json_pusher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dingding-notifications\": [\n        \"cpe:2.3:a:jenkins:dingding:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:dingtalk:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dingtalk\": [\n        \"cpe:2.3:a:jenkins:dingtalk:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"distfork\": [\n        \"cpe:2.3:a:jenkins:distributed_fork:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"docker\": [\n        \"cpe:2.3:a:jenkins:docker:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"docker-commons\": [\n        \"cpe:2.3:a:jenkins:docker_commons:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"docker-swarm\": [\n        \"cpe:2.3:a:jenkins:docker_swarm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"doktor\": [\n        \"cpe:2.3:a:jenkins:doktor:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dry\": [\n        \"cpe:2.3:a:jenkins:dry:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dynamic-extended-choice-parameter\": [\n        \"cpe:2.3:a:jenkins:dynamic_extended_choice_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dynamic_extended_choice_parameter\": [\n        \"cpe:2.3:a:jenkins:dynamic_extended_choice_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dynatrace\": [\n        \"cpe:2.3:a:jenkins:dynatrace_application_monitoring:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"dynatrace-dashboard\": [\n        \"cpe:2.3:a:jenkins:dynatrace_application_monitoring:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"eagle-tester\": [\n        \"cpe:2.3:a:jenkins:eagle_tester:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ease-plugin\": [\n        \"cpe:2.3:a:jenkins:digital.ai_app_management_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"easyqa\": [\n        \"cpe:2.3:a:jenkins:easyqa:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ec2\": [\n        \"cpe:2.3:a:jenkins:amazon_ec2:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:ec2:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ec2-deployment-dashboard\": [\n        \"cpe:2.3:a:jenkins:deployment_dashboard:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"echarts-api\": [\n        \"cpe:2.3:a:jenkins:echarts_api:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ecs-publisher\": [\n        \"cpe:2.3:a:trustsource:ecs_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ecutest\": [\n        \"cpe:2.3:a:jenkins:tracetronic_ecu-test:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"eggplant\": [\n        \"cpe:2.3:a:jenkins:eggplant:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"elastest\": [\n        \"cpe:2.3:a:jenkins:elastest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"elasticbox\": [\n        \"cpe:2.3:a:jenkins:elasticbox_ci:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"elasticsearch-query\": [\n        \"cpe:2.3:a:jenkins:elasticsearch_query:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"electricflow\": [\n        \"cpe:2.3:a:jenkins:cloudbees_cd:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:electricflow:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"eloyente\": [\n        \"cpe:2.3:a:jenkins:eloyente:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"email-ext\": [\n        \"cpe:2.3:a:jenkins:email_extension:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"emailext-template\": [\n        \"cpe:2.3:a:jenkins:email_extension_template:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"embeddable-build-status\": [\n        \"cpe:2.3:a:jenkins:embeddable_build_status:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"embotics-vcommander\": [\n        \"cpe:2.3:a:jenkins:snow_commander:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"environment-dashboard\": [\n        \"cpe:2.3:a:jenkins:environment_dashboard:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"environment-manager\": [\n        \"cpe:2.3:a:jenkins:parasoft_environment_manager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"environment-manager-tools\": [\n        \"cpe:2.3:a:jenkins:parasoft_environment_manager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"extended-choice-parameter\": [\n        \"cpe:2.3:a:jenkins:extended_choice_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"extensivetesting\": [\n        \"cpe:2.3:a:jenkins:extensive_testing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"external-monitor-job\": [\n        \"cpe:2.3:a:jenkins:external_monitor_job_type:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"extra-columns\": [\n        \"cpe:2.3:a:jenkins:extra_columns:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"extreme-feedback\": [\n        \"cpe:2.3:a:jenkins:extreme-feedback:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fabric-beta-publisher\": [\n        \"cpe:2.3:a:jenkins:fabric_beta_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"failedJobDeactivator\": [\n        \"cpe:2.3:a:jenkins:failed_job_deactivator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"favorite\": [\n        \"cpe:2.3:a:jenkins:favorite:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:favorite_plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"files-found-trigger\": [\n        \"cpe:2.3:a:jenkins:files_found_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"filesystem-list-parameter-plugin\": [\n        \"cpe:2.3:a:jenkins:filesystem_list_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"filesystem_scm\": [\n        \"cpe:2.3:a:jenkins:file_system_scm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"findbugs\": [\n        \"cpe:2.3:a:jenkins:findbugs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fireline\": [\n        \"cpe:2.3:a:jenkins:360_fireline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fitnesse\": [\n        \"cpe:2.3:a:jenkins:fitnesse:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"flaky-test-handler\": [\n        \"cpe:2.3:a:jenkins:flaky_test_handler:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:jenkins:flaky_test_handler:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fogbugz\": [\n        \"cpe:2.3:a:jenkins:fogbugz:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"folder-auth\": [\n        \"cpe:2.3:a:jenkins:folder-based_authorization_strategy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fortify\": [\n        \"cpe:2.3:a:jenkins:fortify:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fortify-cloudscan\": [\n        \"cpe:2.3:a:jenkins:fortify_cloudscan:*:*:*:*:*:jenkins:*:.\"\n      ],\n      \"fortify-cloudscan-jenkins-plugin\": [\n        \"cpe:2.3:a:jenkins:fortify_cloudscan:*:*:*:*:*:jenkins:*:.\"\n      ],\n      \"fortify-on-demand-uploader\": [\n        \"cpe:2.3:a:jenkins:fortify_on_demand:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:fortify_on_demand:*:*:*:*:*:jenkins:*:.\",\n        \"cpe:2.3:a:jenkins:fortify_on_demand_uploader:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"frugal-testing\": [\n        \"cpe:2.3:a:jenkins:frugal_testing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"fstrigger\": [\n        \"cpe:2.3:a:jenkins:filesystem_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ftppublisher\": [\n        \"cpe:2.3:a:jenkins:ftp_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gatling\": [\n        \"cpe:2.3:a:jenkins:gatling:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gcm-notification\": [\n        \"cpe:2.3:a:google:cloud_messaging_notification:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gearman-plugin\": [\n        \"cpe:2.3:a:jenkins:gearman:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gem-publisher\": [\n        \"cpe:2.3:a:jenkins:gem_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"generic-webhook-trigger\": [\n        \"cpe:2.3:a:jenkins:generic_webhook_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gerrit-trigger\": [\n        \"cpe:2.3:a:jenkins:gerrit_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ghprb\": [\n        \"cpe:2.3:a:jenkins:github_pull_request_builder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"git\": [\n        \"cpe:2.3:a:jenkins:git:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"git-changelog\": [\n        \"cpe:2.3:a:jenkins:git_changelog:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"git-client\": [\n        \"cpe:2.3:a:jenkins:git_client:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"git-parameter\": [\n        \"cpe:2.3:a:jenkins:git_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"git-server\": [\n        \"cpe:2.3:a:jenkins:git_server:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gitea\": [\n        \"cpe:2.3:a:gitea:gitea:*:*:*:*:*:-:*:*\",\n        \"cpe:2.3:a:gitea:gitea:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"github\": [\n        \"cpe:2.3:a:jenkins:github:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"github-branch-source\": [\n        \"cpe:2.3:a:jenkins:github_branch_source:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"github-coverage-reporter\": [\n        \"cpe:2.3:a:jenkins:github_coverage_reporter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"github-oauth\": [\n        \"cpe:2.3:a:jenkins:github_authentication:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:github_oauth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"github-pr-coverage-status\": [\n        \"cpe:2.3:a:jenkins:github_pull_request_coverage_status:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gitlab\": [\n        \"cpe:2.3:a:jenkins:gitlab:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gitlab-hook\": [\n        \"cpe:2.3:a:jenkins:gitlab_hook:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gitlab-oauth\": [\n        \"cpe:2.3:a:jenkins:gitlab_authentication:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:gitlab_oauth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gitlab-plugin\": [\n        \"cpe:2.3:a:jenkins:gitlab:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"global-build-stats\": [\n        \"cpe:2.3:a:jenkins:global-build-stats:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"global-post-script\": [\n        \"cpe:2.3:a:jenkins:global_post_script:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"global-variable-string-parameter\": [\n        \"cpe:2.3:a:jenkins:global_variable_string_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gogs-webhook\": [\n        \"cpe:2.3:a:jenkins:gogs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"google-compute-engine\": [\n        \"cpe:2.3:a:jenkins:google_compute_engine:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"google-kubernetes-engine\": [\n        \"cpe:2.3:a:google:kubernetes_engine:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:google_kubernetes_engine:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"google-login\": [\n        \"cpe:2.3:a:jenkins:google_login:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"google-oauth\": [\n        \"cpe:2.3:a:jenkins:google_oauth_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"google-play-android-publisher\": [\n        \"cpe:2.3:a:jenkins:google-play-android-publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"gradle\": [\n        \"cpe:2.3:a:jenkins:gradle:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"groovy\": [\n        \"cpe:2.3:a:jenkins:groovy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"groovy-postbuild\": [\n        \"cpe:2.3:a:jenkins:groovy_postbuild:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"harvest\": [\n        \"cpe:2.3:a:jenkins:harvest_scm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hashicorp-vault-plugin\": [\n        \"cpe:2.3:a:jenkins:hashicorp_vault:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hidden-parameter\": [\n        \"cpe:2.3:a:jenkins:hidden_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hipchat\": [\n        \"cpe:2.3:a:atlassian:hipchat:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hockeyapp\": [\n        \"cpe:2.3:a:jenkins:hockeyapp:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hp-application-automation-tools-plugin\": [\n        \"cpe:2.3:a:microfocus:application_automation_tools:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hp-quality-center\": [\n        \"cpe:2.3:a:hp_application_lifecycle_management_quality_center_project:hp_application_lifecycle_management_quality_center:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hpe-network-virtualization\": [\n        \"cpe:2.3:a:jenkins:hpe_network_virtualization:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"htmlpublisher\": [\n        \"cpe:2.3:a:jenkins:html_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"htmlresource\": [\n        \"cpe:2.3:a:jenkins:html_resource:*:*:*:*:*:*:*:*\"\n      ],\n      \"http-request\": [\n        \"cpe:2.3:a:jenkins:http_request:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"http_request\": [\n        \"cpe:2.3:a:jenkins:http_request:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"hyper-commons\": [\n        \"cpe:2.3:a:jenkins:hyper.sh_commons:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ibm-application-security\": [\n        \"cpe:2.3:a:jenkins:ibm_application_security_on_cloud:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ibm-asoc\": [\n        \"cpe:2.3:a:jenkins:ibm_application_security_on_cloud:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ibm-cloud-devops\": [\n        \"cpe:2.3:a:jenkins:ibm_cloud_devops:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"icescrum\": [\n        \"cpe:2.3:a:jenkins:icescrum:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ifttt-build-notifier\": [\n        \"cpe:2.3:a:jenkins:ifttt_build_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"image-gallery\": [\n        \"cpe:2.3:a:jenkins:image_gallery:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"image-tag-parameter\": [\n        \"cpe:2.3:a:jenkins:image_tag_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"implied-labels\": [\n        \"cpe:2.3:a:jenkins:implied_labels:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"incapptic-connect-uploader\": [\n        \"cpe:2.3:a:jenkins:incapptic_connect_uploader:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"inedo-buildmaster\": [\n        \"cpe:2.3:a:jenkins:inedo_buildmaster:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"inedo-proget\": [\n        \"cpe:2.3:a:jenkins:inedo_proget:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"influxdb\": [\n        \"cpe:2.3:a:eficode:influxdb:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"instant-messaging\": [\n        \"cpe:2.3:a:jenkins:instant-messaging:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ircbot\": [\n        \"cpe:2.3:a:jenkins:irc:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ivy\": [\n        \"cpe:2.3:a:jenkins:ivy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jabber\": [\n        \"cpe:2.3:a:jenkins:jabber_\\\\(xmpp\\\\)_notifier_and_control:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jabber-server-plugin\": [\n        \"cpe:2.3:a:jenkins:jabber_server:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jacoco\": [\n        \"cpe:2.3:a:jenkins:jacoco:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jclouds\": [\n        \"cpe:2.3:a:jenkins:jclouds:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jdepend\": [\n        \"cpe:2.3:a:jenkins:jdepend:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jenkins-cloudformation\": [\n        \"cpe:2.3:a:jenkins:jenkins-cloudformation-plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jenkins-multijob-plugin\": [\n        \"cpe:2.3:a:jenkins:multijob:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jenkins-reviewbot\": [\n        \"cpe:2.3:a:jenkins:jenkins-reviewbot:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jenkinsci-appspider-plugin\": [\n        \"cpe:2.3:a:jenkins:appspider:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jianliao\": [\n        \"cpe:2.3:a:jenkins:jianliao_notification:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jigomerge\": [\n        \"cpe:2.3:a:jenkins:jigomerge:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jira\": [\n        \"cpe:2.3:a:jenkins:jira:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:jenkins:jira:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jira-ext\": [\n        \"cpe:2.3:a:jenkins:jira-ext:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jira-issue-updater\": [\n        \"cpe:2.3:a:jenkins:jira_issue_updater:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jira-steps\": [\n        \"cpe:2.3:a:jenkins:jira_pipeline_steps:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jms-messaging\": [\n        \"cpe:2.3:a:jenkins:jms_messaging:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"job-dsl\": [\n        \"cpe:2.3:a:jenkins:job_dsl:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"job-import\": [\n        \"cpe:2.3:a:jenkins:job_import:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"job-import-plugin\": [\n        \"cpe:2.3:a:jenkins:job_import:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jobConfigHistory\": [\n        \"cpe:2.3:a:jenkins:job_configuration_history:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jobconfighistory_project:jobconfighistory:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jobgenerator\": [\n        \"cpe:2.3:a:jenkins:job_generator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jsgames\": [\n        \"cpe:2.3:a:jenkins:jsgames:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"junit\": [\n        \"cpe:2.3:a:jenkins:junit:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"jx-resources\": [\n        \"cpe:2.3:a:jenkins:jx_resources:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kanboard\": [\n        \"cpe:2.3:a:jenkins:kanboard:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"katalon\": [\n        \"cpe:2.3:a:jenkins:katalon:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kiuwanJenkinsPlugin\": [\n        \"cpe:2.3:a:jenkins:kiuwan:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"klaros-testmanagement\": [\n        \"cpe:2.3:a:jenkins:klaros-testmanagement:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"klocwork\": [\n        \"cpe:2.3:a:jenkins:klocwork_analysis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kmap\": [\n        \"cpe:2.3:a:jenkins:kmap:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kmap-jenkins\": [\n        \"cpe:2.3:a:jenkins:kmap:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"koji\": [\n        \"cpe:2.3:a:jenkins:koji:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kubernetes\": [\n        \"cpe:2.3:a:jenkins:kubernetes:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kubernetes-cd\": [\n        \"cpe:2.3:a:jenkins:kubernetes_continuous_deploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kubernetes-ci\": [\n        \"cpe:2.3:a:jenkins:kubernetes_ci:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kubernetes-credentials-provider\": [\n        \"cpe:2.3:a:jenkins:kubernetes_credentials_provider:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"kubernetes-pipeline\": [\n        \"cpe:2.3:a:jenkins:kubernetes_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"labmanager\": [\n        \"cpe:2.3:a:jenkins:vmware_lab_manager_slaves:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"lambdatest-automation\": [\n        \"cpe:2.3:a:jenkins:lambdatest-automation:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"libvirt-slave\": [\n        \"cpe:2.3:a:jenkins:libvirt_agents:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:libvirt_slaves:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"link-column\": [\n        \"cpe:2.3:a:jenkins:link_column:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"liquibase-runner\": [\n        \"cpe:2.3:a:jenkins:liquibase_runner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"list-git-branches-parameter\": [\n        \"cpe:2.3:a:jenkins:list_git_branches_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"literate\": [\n        \"cpe:2.3:a:jenkins:literate:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"lockable-resources\": [\n        \"cpe:2.3:a:jenkins:lockable_resources:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"locked-files-report\": [\n        \"cpe:2.3:a:jenkins:locked_files_report:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"log-parser\": [\n        \"cpe:2.3:a:jenkins:log_parser:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"logstash\": [\n        \"cpe:2.3:a:jenkins:logstash:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"lucene-search\": [\n        \"cpe:2.3:a:jenkins:lucene-search:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"m2release\": [\n        \"cpe:2.3:a:jenkins:m2_release:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:m2release:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mabl-integration\": [\n        \"cpe:2.3:a:jenkins:mabl:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mac\": [\n        \"cpe:2.3:a:jenkins:mac:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"macstadium-orka\": [\n        \"cpe:2.3:a:jenkins:orka_by_macstadium:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mail-commander\": [\n        \"cpe:2.3:a:jenkins:mail_commander:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mailcommander\": [\n        \"cpe:2.3:a:jenkins:mail_commander:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mailer\": [\n        \"cpe:2.3:a:jenkins:mailer:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:jenkins:mailer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mantis\": [\n        \"cpe:2.3:a:jenkins:mantis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"markdown-formatter\": [\n        \"cpe:2.3:a:jenkins:markdown_formatter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mashup-portlets\": [\n        \"cpe:2.3:a:jenkins:mashup_portlets:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mask-passwords\": [\n        \"cpe:2.3:a:jenkins:mask_passwords:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mathworks-polyspace\": [\n        \"cpe:2.3:a:jenkins:mathworks_polyspace:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"matlab\": [\n        \"cpe:2.3:a:jenkins:matlab:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"matrix-auth\": [\n        \"cpe:2.3:a:jenkins:matrix_authorization_strategy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"matrix-project\": [\n        \"cpe:2.3:a:jenkins:matrix_project:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"matrix-reloaded\": [\n        \"cpe:2.3:a:jenkins:matrix_reloaded:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mattermost\": [\n        \"cpe:2.3:a:jenkins:mattermost:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:mattermost_notification:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"maven\": [\n        \"cpe:2.3:a:jenkins:maven:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"maven-artifact-choicelistprovider\": [\n        \"cpe:2.3:a:jenkins:maven_artifact_choicelistprovider_\\\\(nexus\\\\):*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"maven-metadata-plugin\": [\n        \"cpe:2.3:a:jenkins:maven_metadata:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"maven-release-cascade\": [\n        \"cpe:2.3:a:barchart:maven_cascade_release:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"meliora-testlab\": [\n        \"cpe:2.3:a:jenkins:meliora_testlab:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:melioratestlab:melioratestlab:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mercurial\": [\n        \"cpe:2.3:a:jenkins:mercurial:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mesos\": [\n        \"cpe:2.3:a:apache:mesos:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"metrics\": [\n        \"cpe:2.3:a:jenkins:metrics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"minio-storage\": [\n        \"cpe:2.3:a:jenkins:minio_storage:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"miniorange-saml-sp\": [\n        \"cpe:2.3:a:jenkins:saml_single_sign_on:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mongodb\": [\n        \"cpe:2.3:a:jenkins:mongodb:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"monitoring\": [\n        \"cpe:2.3:a:jenkins:monitoring:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mq-notifier\": [\n        \"cpe:2.3:a:jenkins:mq_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"mstest\": [\n        \"cpe:2.3:a:jenkins:mstest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"neoload\": [\n        \"cpe:2.3:a:jenkins:neoload:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nerrvana\": [\n        \"cpe:2.3:a:jenkins:nerrvana:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nested-view\": [\n        \"cpe:2.3:a:jenkins:nested_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"netsparker-cloud-scan\": [\n        \"cpe:2.3:a:jenkins:netsparker_cloud_scan:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"neuvector-vulnerability-scanner\": [\n        \"cpe:2.3:a:jenkins:neuvector_vulnerability_scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nexus-platform\": [\n        \"cpe:2.3:a:jenkins:nexus_platform:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nexus-task-runner\": [\n        \"cpe:2.3:a:jenkins:nexus_task_runner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nodejs\": [\n        \"cpe:2.3:a:jenkins:nodejs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nodelabelparameter\": [\n        \"cpe:2.3:a:jenkins:node_and_label_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nomad\": [\n        \"cpe:2.3:a:jenkins:nomad:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nouvola-divecloud\": [\n        \"cpe:2.3:a:jenkins:nouvola_divecloud:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nuget\": [\n        \"cpe:2.3:a:jenkins:nuget:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"nunit\": [\n        \"cpe:2.3:a:jenkins:nunit:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"octoperf\": [\n        \"cpe:2.3:a:jenkins:octoperf_load_testing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"oic-auth\": [\n        \"cpe:2.3:a:jenkins:openid_connect_authentication:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"oidc-provider\": [\n        \"cpe:2.3:a:jenkins:openid_connect_provider:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ontrack\": [\n        \"cpe:2.3:a:jenkins:ontrack:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"open-stf\": [\n        \"cpe:2.3:a:jenkins:open_stf:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"openid\": [\n        \"cpe:2.3:a:jenkins:openid:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:openid_connect_authentication:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"openshift-deployer\": [\n        \"cpe:2.3:a:jenkins:openshift_deployer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"openshift-login\": [\n        \"cpe:2.3:a:jenkins:openshift_login:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"openshift-pipeline\": [\n        \"cpe:2.3:a:jenkins:openshift_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"openstack-cloud\": [\n        \"cpe:2.3:a:jenkins:openstack_cloud:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"opsgenie\": [\n        \"cpe:2.3:a:jenkins:opsgenie:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"oracle-cloud-infrastructure-compute-classic\": [\n        \"cpe:2.3:a:jenkins:oracle_cloud_infrastructure_compute_classic:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ownership\": [\n        \"cpe:2.3:a:jenkins:job_and_node_ownership:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"p4\": [\n        \"cpe:2.3:a:jenkins:p4:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"packageversion\": [\n        \"cpe:2.3:a:jenkins:package_version:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pam-auth\": [\n        \"cpe:2.3:a:jenkins:pluggable_authentication_module:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pangolin-testrail-connector\": [\n        \"cpe:2.3:a:agiletestware:pangolin_connector_for_testrail:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"parameterized-remote-trigger\": [\n        \"cpe:2.3:a:jenkins:parameterized_remote_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"parameterized-trigger\": [\n        \"cpe:2.3:a:jenkins:parameterized_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"parasoft-findings\": [\n        \"cpe:2.3:a:jenkins:parasoft_findings:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pegdown-formatter\": [\n        \"cpe:2.3:a:jenkins:pegdown_formatter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"perfecto\": [\n        \"cpe:2.3:a:jenkins:perfecto:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"perfectomobile\": [\n        \"cpe:2.3:a:jenkins:perfecto_mobile:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"perforce\": [\n        \"cpe:2.3:a:jenkins:perforce:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"performance\": [\n        \"cpe:2.3:a:jenkins:performance:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"perfpublisher\": [\n        \"cpe:2.3:a:jenkins:performance_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"periodicbackup\": [\n        \"cpe:2.3:a:jenkins:periodic_backup:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"persona\": [\n        \"cpe:2.3:a:jenkins:persona:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"phabricator-plugin\": [\n        \"cpe:2.3:a:jenkins:phabricator_differential:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"phoenix-autotest\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_phoenix_autotest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-aggregator-view\": [\n        \"cpe:2.3:a:jenkins:pipeline_aggregator_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-aws\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_aws_steps:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-build-step\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_build_step:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-githubnotify-step\": [\n        \"cpe:2.3:a:jenkins:pipeline_github_notify_step:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-input-step\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_input_step:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:pipeline\\\\:input_step:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-maven\": [\n        \"cpe:2.3:a:jenkins:pipeline_maven_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-model-definition\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_declarative:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-restful-api\": [\n        \"cpe:2.3:a:jenkins:pipeline_restful_api:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pipeline-stage-view\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:stage_view:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:stage_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"plain-credentials\": [\n        \"cpe:2.3:a:jenkins:plain_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"play\": [\n        \"cpe:2.3:a:jenkins:play_framework:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"plot\": [\n        \"cpe:2.3:a:jenkins:plot:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pmd\": [\n        \"cpe:2.3:a:jenkins:pmd:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pollscm\": [\n        \"cpe:2.3:a:jenkins:poll_scm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pom2config\": [\n        \"cpe:2.3:a:jenkins:pom2config:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"port-allocator\": [\n        \"cpe:2.3:a:jenkins:port_allocator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"project-inheritance\": [\n        \"cpe:2.3:a:jenkins:project_inheritance:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"promoted-builds\": [\n        \"cpe:2.3:a:jenkins:promoted_builds:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"promoted-builds-simple\": [\n        \"cpe:2.3:a:jenkins:promoted_builds_\\\\(simple\\\\):*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"proxmox\": [\n        \"cpe:2.3:a:jenkins:proxmox:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"prqa\": [\n        \"cpe:2.3:a:jenkins:prqa:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"prqa-plugin\": [\n        \"cpe:2.3:a:jenkins:prqa:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"publish-over-cifs\": [\n        \"cpe:2.3:a:jenkins:publish_over_cifs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"publish-over-ftp\": [\n        \"cpe:2.3:a:jenkins:publish_over_ftp:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"publish-over-ssh\": [\n        \"cpe:2.3:a:jenkins:publish_over_ssh:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"publish-to-bitbucket\": [\n        \"cpe:2.3:a:jenkins:publish_to_bitbucket:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"puppet-enterprise-pipeline\": [\n        \"cpe:2.3:a:jenkins:puppet_enterprise_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"pwauth\": [\n        \"cpe:2.3:a:jenkins:pwauth_security_realm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"qmetry-test-management\": [\n        \"cpe:2.3:a:jenkins:qmetry_test_management:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"quality-gates\": [\n        \"cpe:2.3:a:jenkins:quality_gates:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"qualys-pc\": [\n        \"cpe:2.3:a:qualys:policy_compliance:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"qualys-was\": [\n        \"cpe:2.3:a:qualys:web_application_screening:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"quayio-trigger\": [\n        \"cpe:2.3:a:jenkins:quay.io_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"queue-cleanup\": [\n        \"cpe:2.3:a:jenkins:queue_cleanup:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rabbitmq-consumer\": [\n        \"cpe:2.3:a:jenkins:rabbitmq_consumer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"radargun\": [\n        \"cpe:2.3:a:jenkins:radargun:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"radiatorview\": [\n        \"cpe:2.3:a:jenkins:radiator_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"radiatorviewplugin\": [\n        \"cpe:2.3:a:jenkins:radiator_view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"random-string-parameter\": [\n        \"cpe:2.3:a:jenkins:random_string_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rapiddeploy\": [\n        \"cpe:2.3:a:jenkins:rapiddeploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rapiddeploy-jenkins\": [\n        \"cpe:2.3:a:jenkins:rapiddeploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rebuild\": [\n        \"cpe:2.3:a:rebuild_project:rebuild:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"recipe\": [\n        \"cpe:2.3:a:jenkins:recipe:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"redgate-sql-ci\": [\n        \"cpe:2.3:a:jenkins:redgate_sql_change_automation:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"redhat-dependency-analytics\": [\n        \"cpe:2.3:a:jenkins:red_hat_dependency_analytics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"release-helper\": [\n        \"cpe:2.3:a:jenkins:release_helper:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"relution-publisher\": [\n        \"cpe:2.3:a:jenkins:relution_enterprise_appstore_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"remote-jobs-view\": [\n        \"cpe:2.3:a:jenkins:remote-jobs-view:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"repo\": [\n        \"cpe:2.3:a:jenkins:repo:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"reportportal\": [\n        \"cpe:2.3:a:jenkins:report_portal:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"repository-connector\": [\n        \"cpe:2.3:a:jenkins:repository_connector:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"requests\": [\n        \"cpe:2.3:a:jenkins:requests:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"resource-disposer\": [\n        \"cpe:2.3:a:jenkins:resource_disposer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rest-list-parameter\": [\n        \"cpe:2.3:a:jenkins:rest_list_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"reverse-proxy-auth\": [\n        \"cpe:2.3:a:jenkins:reverse_proxy_auth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"reverse-proxy-auth-plugin\": [\n        \"cpe:2.3:a:jenkins:reverse_proxy_auth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rhnpush-plugin\": [\n        \"cpe:2.3:a:jenkins:rhnpush-plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rich-text-publisher-plugin\": [\n        \"cpe:2.3:a:jenkins:rich_text_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"robot\": [\n        \"cpe:2.3:a:jenkins:robot_framework:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rocketchatnotifier\": [\n        \"cpe:2.3:a:jenkins:rocketchat_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"role-strategy\": [\n        \"cpe:2.3:a:jenkins:role-based_authorization_strategy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rpmsign\": [\n        \"cpe:2.3:a:jenkins:rpmsign-plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rpmsign-plugin\": [\n        \"cpe:2.3:a:jenkins:rpmsign-plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rqm-plugin\": [\n        \"cpe:2.3:a:jenkins:rqm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rrod\": [\n        \"cpe:2.3:a:jenkins:request_rename_or_delete:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"rundeck\": [\n        \"cpe:2.3:a:jenkins:rundeck:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"s3\": [\n        \"cpe:2.3:a:jenkins:s3_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"s3explorer\": [\n        \"cpe:2.3:a:jenkins:s3_explorer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"saltstack\": [\n        \"cpe:2.3:a:jenkins:saltstack:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sametime\": [\n        \"cpe:2.3:a:jenkins:sametime:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"saml\": [\n        \"cpe:2.3:a:jenkins:saml:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sauce-ondemand\": [\n        \"cpe:2.3:a:jenkins:sauce_ondemand:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"scm-filter-jervis\": [\n        \"cpe:2.3:a:jenkins:source_code_management_filter_jervis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"scm-httpclient\": [\n        \"cpe:2.3:a:jenkins:scm_httpclient:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"scp\": [\n        \"cpe:2.3:a:jenkins:scp_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"script-security\": [\n        \"cpe:2.3:a:jenkins:script_security:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"scriptler\": [\n        \"cpe:2.3:a:jenkins:scriptler:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"security-inspector\": [\n        \"cpe:2.3:a:jenkins:security_inspector:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"selected-tests-executor\": [\n        \"cpe:2.3:a:jenkins:tests_selector:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"selection-tasks\": [\n        \"cpe:2.3:a:jenkins:selection_tasks:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"selection-tasks-plugin\": [\n        \"cpe:2.3:a:jenkins:selection_tasks:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"selenium\": [\n        \"cpe:2.3:a:jenkins:selenium:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"seleniumhtmlreport\": [\n        \"cpe:2.3:a:jenkins:selenium_html_report:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"semantic-versioning\": [\n        \"cpe:2.3:a:jenkins:semantic_versioning:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"semantic-versioning-plugin\": [\n        \"cpe:2.3:a:jenkins:semantic_versioning:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sensedia-api-platform\": [\n        \"cpe:2.3:a:jenkins:sensedia_api_platform_tools:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"servicenow-devops\": [\n        \"cpe:2.3:a:jenkins:servicenow_devops:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"shared-library-version-override\": [\n        \"cpe:2.3:a:jenkins:shared_library_version_override:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"shared-objects\": [\n        \"cpe:2.3:a:jenkins:shared_objects:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"shelve-project\": [\n        \"cpe:2.3:a:jenkins:shelve_project:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"shelve-project-plugin\": [\n        \"cpe:2.3:a:jenkins:shelve_project:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"shortcut-job\": [\n        \"cpe:2.3:a:jenkins:shortcut_job:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sidebar-link\": [\n        \"cpe:2.3:a:jenkins:sidebar_link:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"simple-queue\": [\n        \"cpe:2.3:a:jenkins:simple_queue:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"simple-travis-runner\": [\n        \"cpe:2.3:a:jenkins:simple_travis_pipeline_runner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sinatra-chef-builder\": [\n        \"cpe:2.3:a:jenkins:chef_sinatra:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sitemonitor\": [\n        \"cpe:2.3:a:jenkins:sitemonitor:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"skype-notifier\": [\n        \"cpe:2.3:a:jenkins:skype_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"skytap-cloud\": [\n        \"cpe:2.3:a:jenkins:skytap_cloud_ci:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"slack\": [\n        \"cpe:2.3:a:jenkins:slack:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:slack_notification:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"slack-uploader\": [\n        \"cpe:2.3:a:jenkins:slack_upload:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"smalltest\": [\n        \"cpe:2.3:a:jenkins:smalltest:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sms\": [\n        \"cpe:2.3:a:jenkins:sms_notification:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"snsnotify\": [\n        \"cpe:2.3:a:jenkins:amazon_sns_build_notifier:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"soapui-pro-functional-testing\": [\n        \"cpe:2.3:a:jenkins:readyapi_functional_testing:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:soapui_pro_functional_testing:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sofy-ai\": [\n        \"cpe:2.3:a:jenkins:sofy.ai:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sonar-gerrit\": [\n        \"cpe:2.3:a:jenkins:sonar_gerrit:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sonar-quality-gates\": [\n        \"cpe:2.3:a:jenkins:sonar_quality_gates:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sonargraph-integration\": [\n        \"cpe:2.3:a:jenkins:sonargraph_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sonarqube\": [\n        \"cpe:2.3:a:sonarsource:sonarqube_scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sounds\": [\n        \"cpe:2.3:a:jenkins:sounds:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"speaks\": [\n        \"cpe:2.3:a:jenkins:speaks\\\\!:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"splunk-devops\": [\n        \"cpe:2.3:a:jenkins:splunk:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"spoonscript\": [\n        \"cpe:2.3:a:jenkins:turboscript:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sqlplus-script-runner\": [\n        \"cpe:2.3:a:jenkins:sqlplus_script_runner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sra-deploy\": [\n        \"cpe:2.3:a:jenkins:serena_sra_deploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ssh\": [\n        \"cpe:2.3:a:jenkins:ssh:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ssh-agent\": [\n        \"cpe:2.3:a:jenkins:ssh_agent:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ssh-credentials\": [\n        \"cpe:2.3:a:jenkins:ssh_credentials:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ssh-slaves\": [\n        \"cpe:2.3:a:jenkins:ssh_slaves:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ssh2easy\": [\n        \"cpe:2.3:a:jenkins:ssh2_easy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"stackhammer\": [\n        \"cpe:2.3:a:jenkins:stack_hammer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"starteam\": [\n        \"cpe:2.3:a:jenkins:starteam:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"statistics-gatherer\": [\n        \"cpe:2.3:a:jenkins:statistics_gatherer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"storable-configs\": [\n        \"cpe:2.3:a:jenkins:storable_configs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"storable-configs-plugin\": [\n        \"cpe:2.3:a:jenkins:storable_configs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"structs\": [\n        \"cpe:2.3:a:jenkins:structs:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"subversion\": [\n        \"cpe:2.3:a:jenkins-ci:subversion-plugin:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:jenkins:subversion:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"sumologic-publisher\": [\n        \"cpe:2.3:a:jenkins:sumologic_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"support-core\": [\n        \"cpe:2.3:a:jenkins:support_core:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"svn-partial-release-mgr\": [\n        \"cpe:2.3:a:jenkins:subversion_partial_release_manager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"svn-release-mgr\": [\n        \"cpe:2.3:a:jenkins:subversion_release_manager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"swamp\": [\n        \"cpe:2.3:a:jenkins:swamp:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"swarm\": [\n        \"cpe:2.3:a:jenkins:self-organizing_swarm_modules:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:swarm:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"synopsys-coverity\": [\n        \"cpe:2.3:a:jenkins:synopsys_coverity:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tag-profiler\": [\n        \"cpe:2.3:a:jenkins:tag_profiler:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tap\": [\n        \"cpe:2.3:a:jenkins:tap:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"team-views\": [\n        \"cpe:2.3:a:jenkins:team_views:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"teams-webhook-trigger\": [\n        \"cpe:2.3:a:jenkins:msteams_webhook_trigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"template-workflows\": [\n        \"cpe:2.3:a:jenkins:template_workflows:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"templating-engine\": [\n        \"cpe:2.3:a:jenkins:templating_engine:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"test-results-aggregator\": [\n        \"cpe:2.3:a:jenkins:test_results_aggregator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testcomplete\": [\n        \"cpe:2.3:a:jenkins:testcomplete_support:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testfairy\": [\n        \"cpe:2.3:a:jenkins:testfairy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testlink\": [\n        \"cpe:2.3:a:jenkins:testlink:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testng-plugin\": [\n        \"cpe:2.3:a:jenkins:testng_results:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testquality-updater\": [\n        \"cpe:2.3:a:jenkins:testquality_updater:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"testsigma\": [\n        \"cpe:2.3:a:jenkins:testsigma_test_plan_run:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tfs\": [\n        \"cpe:2.3:a:jenkins:team_foundation_server:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"themis\": [\n        \"cpe:2.3:a:jenkins:themis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"threadfix\": [\n        \"cpe:2.3:a:jenkins:threadfix:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"thycotic-devops-secrets-vault\": [\n        \"cpe:2.3:a:jenkins:thycotic_devops_secrets_vault:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"thycotic-secret-server\": [\n        \"cpe:2.3:a:jenkins:thycotic_secret_server:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tics\": [\n        \"cpe:2.3:a:jenkins:tics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tikal-multijob\": [\n        \"cpe:2.3:a:jenkins:multijob:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"timestamper\": [\n        \"cpe:2.3:a:jenkins:timestamper:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tinfoil-scan\": [\n        \"cpe:2.3:a:jenkins:tinfoil_security:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"token-macro\": [\n        \"cpe:2.3:a:jenkins:token_macro:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"trac-publisher-plugin\": [\n        \"cpe:2.3:a:jenkins:trac_publisher:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"translation\": [\n        \"cpe:2.3:a:jenkins:translation_assistance:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tuleap-git-branch-source\": [\n        \"cpe:2.3:a:jenkins:tuleap_git_branch_source:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"tuleap-oauth\": [\n        \"cpe:2.3:a:jenkins:tuleap_authentication:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"twitter\": [\n        \"cpe:2.3:a:jenkins:twitter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"uno-choice\": [\n        \"cpe:2.3:a:jenkins:active_choices:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"upload-pgyer\": [\n        \"cpe:2.3:a:jenkins:upload_to_pgyer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"urltrigger\": [\n        \"cpe:2.3:a:jenkins:urltrigger:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"usemango-runner\": [\n        \"cpe:2.3:a:jenkins:usemango_runner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vaddy-plugin\": [\n        \"cpe:2.3:a:jenkins:vaddy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"valgrind\": [\n        \"cpe:2.3:a:jenkins:valgrind:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"validating-email-parameter\": [\n        \"cpe:2.3:a:jenkins:validating_email_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"validating-string-parameter\": [\n        \"cpe:2.3:a:jenkins:validating_string_parameter:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vault-scm-plugin\": [\n        \"cpe:2.3:a:jenkins:sourcegear_vault:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vboxwrapper\": [\n        \"cpe:2.3:a:jenkins:vboxwrapper:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"veracode-scanner\": [\n        \"cpe:2.3:a:jenkins:veracode-scanner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"view-cloner\": [\n        \"cpe:2.3:a:jenkins:view-cloner:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"view26\": [\n        \"cpe:2.3:a:jenkins:view26_test-reporting:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"violation-comments-to-gitlab\": [\n        \"cpe:2.3:a:jenkins:violation_comments_to_gitlab:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"visualexpert\": [\n        \"cpe:2.3:a:jenkins:visual_expert:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:visualexpert:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"visualworks-store\": [\n        \"cpe:2.3:a:jenkins:visualworks_store:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vmanager\": [\n        \"cpe:2.3:a:jenkins:cadence_vmanager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vmanager-plugin\": [\n        \"cpe:2.3:a:jenkins:cadence_vmanager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vmware-vrealize-automation-plugin\": [\n        \"cpe:2.3:a:jenkins:vmware_vrealize_automation:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vmware-vrealize-orchestrator\": [\n        \"cpe:2.3:a:jenkins:vrealize_orchestrator:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vncrecorder\": [\n        \"cpe:2.3:a:jenkins:vncrecorder:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vncviewer\": [\n        \"cpe:2.3:a:jenkins:vncviewer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vs-code-metrics\": [\n        \"cpe:2.3:a:jenkins:visual_studio_code_metrics:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vsphere-cloud\": [\n        \"cpe:2.3:a:jenkins:vsphere:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"vsts-cd\": [\n        \"cpe:2.3:a:jenkins:vs_team_services_continuous_deployment:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"walldisplay\": [\n        \"cpe:2.3:a:jenkins:wall_display:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"walti\": [\n        \"cpe:2.3:a:jenkins:walti:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"warnings\": [\n        \"cpe:2.3:a:jenkins:warnings:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"warnings-ng\": [\n        \"cpe:2.3:a:jenkins:warnings_next_generation:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"weblogic-deployer\": [\n        \"cpe:2.3:a:jenkins:deploy_weblogic:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"weblogic-deployer-plugin\": [\n        \"cpe:2.3:a:jenkins:deploy_weblogic:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"websphere-deployer\": [\n        \"cpe:2.3:a:jenkins:websphere_deployer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"whitesource\": [\n        \"cpe:2.3:a:jenkins:white_source:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"wildfly-deployer\": [\n        \"cpe:2.3:a:jenkins:wildfly_deployer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"windocks-start-container\": [\n        \"cpe:2.3:a:jenkins:start_windocks_container:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"windows-slaves\": [\n        \"cpe:2.3:a:jenkins:wmi_windows_agents:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"workflow-cps\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_groovy:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_groovy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"workflow-cps-global-lib\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_shared_groovy_libraries:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:pipeline\\\\:shared_groovy_libraries:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"workflow-multibranch\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_multibranch:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"workflow-remote-loader\": [\n        \"cpe:2.3:a:jenkins:pipeline_remote_loader:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"workflow-support\": [\n        \"cpe:2.3:a:jenkins:pipeline\\\\:_supporting_apis:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:pipeline_supporting_apis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"ws-execution-manager\": [\n        \"cpe:2.3:a:jenkins:worksoft_execution_manager:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"wso2id-oauth\": [\n        \"cpe:2.3:a:jenkins:wso2_oauth:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xcode\": [\n        \"cpe:2.3:a:jenkins:xcode_integration:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xfpanel\": [\n        \"cpe:2.3:a:jenkins:extreme_feedback_panel:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xldeploy\": [\n        \"cpe:2.3:a:jenkins:xebialabs_xl_deploy:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xlrelease-plugin\": [\n        \"cpe:2.3:a:jenkins:xebialabs_xl_release:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xltestview\": [\n        \"cpe:2.3:a:jenkins:xl_testview:*:*:*:*:*:jenkins:*:*\",\n        \"cpe:2.3:a:jenkins:xl_testviews:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xpath-config-viewer\": [\n        \"cpe:2.3:a:jenkins:xpath_configuration_viewer:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xray-connector\": [\n        \"cpe:2.3:a:jenkins:xray_-_test_management_for_jira:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"xunit\": [\n        \"cpe:2.3:a:jenkins:xunit:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"yaml-axis\": [\n        \"cpe:2.3:a:jenkins:yaml_axis:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"yet-another-build-visualizer\": [\n        \"cpe:2.3:a:jenkins:yet_another_build_visualizer:*:*:*:*:*:*:*:*\"\n      ],\n      \"youtrack\": [\n        \"cpe:2.3:a:jenkins:youtrack-plugin:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zap\": [\n        \"cpe:2.3:a:jenkins:official_owasp_zap:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zap-pipeline\": [\n        \"cpe:2.3:a:jenkins:zap_pipeline:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zephyr-enterprise-test-management\": [\n        \"cpe:2.3:a:jenkins:zephyr_enterprise_test_management:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zephyr-for-jira-test-management\": [\n        \"cpe:2.3:a:jenkins:zephyr_for_jira_test_management:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zohoqengine\": [\n        \"cpe:2.3:a:jenkins:zoho_qengine:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zos-connector\": [\n        \"cpe:2.3:a:jenkins:z\\\\/os_connector:*:*:*:*:*:jenkins:*:*\"\n      ],\n      \"zulip\": [\n        \"cpe:2.3:a:jenkins:zulip:*:*:*:*:*:jenkins:*:*\"\n      ]\n    },\n    \"npm\": {\n      \"%40perfood/couch-auth\": [\n        \"cpe:2.3:a:perfood:couchauth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"11xiaoli\": [\n        \"cpe:2.3:a:11xiaoli_project:11xiaoli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"22lixian\": [\n        \"cpe:2.3:a:22lixian_project:22lixian:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"360class.jansenhm\": [\n        \"cpe:2.3:a:360class.jansenhm_project:360class.jansenhm:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"626\": [\n        \"cpe:2.3:a:626_project:626:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@actions/artifact\": [\n        \"cpe:2.3:a:github:actions\\\\/artifact:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@actions/core\": [\n        \"cpe:2.3:a:github:toolkit:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:toolkit_project:toolkit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@adobe/css-tools\": [\n        \"cpe:2.3:a:adobe:css-tools:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@aedart/js-service-provider\": [\n        \"cpe:2.3:a:aedart:ion:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ais-ltd/strategyen\": [\n        \"cpe:2.3:a:ais-ltd:strategyen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@angular/core\": [\n        \"cpe:2.3:a:angular:angular:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:angularjs:angularjs:*:*:*:*:*:*:*:*\"\n      ],\n      \"@antfu/utils\": [\n        \"cpe:2.3:a:antfu:utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@anthropic-ai/claude-code\": [\n        \"cpe:2.3:a:anthropic:claude_code:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@apollo/gateway\": [\n        \"cpe:2.3:a:apollographql:apollo_gateway:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@apollo/query-planner\": [\n        \"cpe:2.3:a:apollographql:apollo_query-planner:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@apollosproject/data-connector-rock\": [\n        \"cpe:2.3:a:apollosapp:data-connector-rock:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@astrojs/cloudflare\": [\n        \"cpe:2.3:a:astro:\\\\@astrojs\\\\/cloudflare:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@astrojs/node\": [\n        \"cpe:2.3:a:astro:\\\\@astrojs\\\\/node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@asyncapi/java-spring-cloud-stream-template\": [\n        \"cpe:2.3:a:asyncapi:java-spring-cloud-stream-template:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@asyncapi/modelina\": [\n        \"cpe:2.3:a:lfprojects:modelina:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@atlaskit/editor-core\": [\n        \"cpe:2.3:a:atlassian:editor-core:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@auth0/nextjs-auth0\": [\n        \"cpe:2.3:a:auth0:nextjs-auth0:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@awsui/components-react\": [\n        \"cpe:2.3:a:amazon:awsui\\\\/components-react:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@azure/ms-rest-nodeauth\": [\n        \"cpe:2.3:a:microsoft:ms-rest-nodeauth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@backstage/backend-common\": [\n        \"cpe:2.3:a:linuxfoundation:backstage_backend-common:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@backstage/plugin-auth-backend\": [\n        \"cpe:2.3:a:linuxfoundation:auth_backend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@backstage/plugin-techdocs\": [\n        \"cpe:2.3:a:linuxfoundation:\\\\@backstage\\\\/plugin-techdocs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@backstage/techdocs-common\": [\n        \"cpe:2.3:a:linuxfoundation:\\\\@backstage\\\\/techdocs-common:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@braintree/sanitize-url\": [\n        \"cpe:2.3:a:paypal:braintree\\\\/sanitize-url:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@builder.io/qwik\": [\n        \"cpe:2.3:a:qwik:qwik:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@canva/cli\": [\n        \"cpe:2.3:a:canva:canva_cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@chainsafe/libp2p-noise\": [\n        \"cpe:2.3:a:chainsafe:js-libp2p-noise:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-engine\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-engine:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-font\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-font:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-image\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-image:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-list\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-list:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-markdown-gfm\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-markdown-gfm:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-media-embed\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-media-embed:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-paste-from-office\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-paste-from-office:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@ckeditor/ckeditor5-widget\": [\n        \"cpe:2.3:a:ckeditor:ckeditor5-widget:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@cookiex/deep\": [\n        \"cpe:2.3:a:cookiex-deep_project:cookiex-deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@cubejs-backend/api-gateway\": [\n        \"cpe:2.3:a:cube:cube.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@curveball/a12n-server\": [\n        \"cpe:2.3:a:curveballjs:a12n-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@diez/generation\": [\n        \"cpe:2.3:a:haikuforteams:diez:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@electron/packager\": [\n        \"cpe:2.3:a:electron:packager:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@evershop/evershop\": [\n        \"cpe:2.3:a:evershop:evershop:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@fastly/js-compute\": [\n        \"cpe:2.3:a:fastly:js-compute:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@feathersjs/feathers\": [\n        \"cpe:2.3:a:feathersjs:feathers:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@finastra/ssr-pages\": [\n        \"cpe:2.3:a:finastra:ssr-pages:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@firebase/util\": [\n        \"cpe:2.3:a:google:firebase\\\\/util:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@flourish/sdk\": [\n        \"cpe:2.3:a:canva:flourish_sdk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@github/paste-markdown\": [\n        \"cpe:2.3:a:paste-markdown_project:paste-markdown:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@google-cloud/firestore\": [\n        \"cpe:2.3:a:google:cloud_firestore:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@graphprotocol/contracts\": [\n        \"cpe:2.3:a:thegraph:graph_protocol_contracts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@grpc/grpc-js\": [\n        \"cpe:2.3:a:grpc:grpc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@hapi/crumb\": [\n        \"cpe:2.3:a:sideway:hapi_crumb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@hotwired/turbo\": [\n        \"cpe:2.3:a:hotwired:turbo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@irrelon/path\": [\n        \"cpe:2.3:a:irrelon:\\\\@irrelon\\\\/path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@joeattardi/emoji-button\": [\n        \"cpe:2.3:a:emoji_button_project:emoji_button:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@keystonejs/keystone\": [\n        \"cpe:2.3:a:keystonejs:keystone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@knight-lab/timelinejs\": [\n        \"cpe:2.3:a:northwestern:timelinejs:*:*:*:*:*:*:*:*\"\n      ],\n      \"@langchain/core\": [\n        \"cpe:2.3:a:langchain:langchain\\\\/core:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@lionello/secp256k1-js\": [\n        \"cpe:2.3:a:secp256k1-js_project:secp256k1-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@mattkrick/sanitize-svg\": [\n        \"cpe:2.3:a:sanitize-svg_project:sanitize-svg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@misskey-dev/summaly\": [\n        \"cpe:2.3:a:misskey:summaly:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@nestjs/core\": [\n        \"cpe:2.3:a:nestjs:nest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@nextcloud/dialogs\": [\n        \"cpe:2.3:a:nextcloud\\\\/dialogs_project:nextcloud\\\\/dialogs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@node-saml/node-saml\": [\n        \"cpe:2.3:a:node_saml_project:node_saml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@npmcli/arborist\": [\n        \"cpe:2.3:a:npmjs:arborist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@nubosoftware/node-static\": [\n        \"cpe:2.3:a:\\\\@nubosoftware\\\\/node-static_project:\\\\@nubosoftware\\\\/node-static:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@nuxt/devalue\": [\n        \"cpe:2.3:a:nuxtjs:\\\\@nuxt\\\\/devalue:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@nyariv/sandboxjs\": [\n        \"cpe:2.3:a:nyariv:sandboxjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@octokit/webhooks\": [\n        \"cpe:2.3:a:octokit:webhooks:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@openzeppelin/contracts\": [\n        \"cpe:2.3:a:openzeppelin:contracts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@openzeppelin/contracts-upgradeable\": [\n        \"cpe:2.3:a:openzeppelin:contracts_upgradeable:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@parse/push-adapter\": [\n        \"cpe:2.3:a:parseplatform:parse_server_push_adapter:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@perfood/couch-auth\": [\n        \"cpe:2.3:a:perfood:couchauth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@pkgr/core\": [\n        \"cpe:2.3:a:un-ts:pkgr\\\\/core:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@podium/layout\": [\n        \"cpe:2.3:a:finn:podium_layout:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:finn:podium_proxy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@progfay/scrapbox-parser\": [\n        \"cpe:2.3:a:scrapbox-parser_project:scrapbox-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@rkesters/gnuplot\": [\n        \"cpe:2.3:a:gnuplot_project:gnuplot:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@sap/xssec\": [\n        \"cpe:2.3:a:sap:\\\\@sap\\\\/xssec:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@scandipwa/magento-scripts\": [\n        \"cpe:2.3:a:scandipwa:magento-scripts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@sentry/astro\": [\n        \"cpe:2.3:a:sentry:astro:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@shopify/hydrogen\": [\n        \"cpe:2.3:a:shopify:hydrogen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@simonsmith/cypress-image-snapshot\": [\n        \"cpe:2.3:a:simonsmith:cypress_image_snapshot:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@soketi/soketi\": [\n        \"cpe:2.3:a:soketi_project:soketi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@solana/pay\": [\n        \"cpe:2.3:a:solanalabs:pay:*:*:*:*:*:*:*:*\"\n      ],\n      \"@strikeentco/set\": [\n        \"cpe:2.3:a:set_project:set:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@sveltejs/adapter-node\": [\n        \"cpe:2.3:a:svelte:adapter-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@sveltejs/kit\": [\n        \"cpe:2.3:a:svelte:kit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@tanstack/react-query-next-experimental\": [\n        \"cpe:2.3:a:tanstack:react-query-next-experimental:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@tarojs/taro\": [\n        \"cpe:2.3:a:taro:taro:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@thi.ng/egf\": [\n        \"cpe:2.3:a:\\\\@thi.ng\\\\/egf_project:\\\\@thi.ng\\\\/egf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@tiptap/extension-link\": [\n        \"cpe:2.3:a:tiptap:tiptap\\\\/extension-link:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@tryghost/portal\": [\n        \"cpe:2.3:a:ghost:portal:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@vue/devtools\": [\n        \"cpe:2.3:a:vuejs:devtools:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@web3-react/coinbase-wallet\": [\n        \"cpe:2.3:a:uniswap:web3-react_coinbase-wallet:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@web3-react/eip1193\": [\n        \"cpe:2.3:a:uniswap:web3-react_eip1193:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@web3-react/metamask\": [\n        \"cpe:2.3:a:uniswap:web3-react_metamask:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@web3-react/walletconnect\": [\n        \"cpe:2.3:a:uniswap:web3-react_walletconnect:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@workos-inc/authkit-nextjs\": [\n        \"cpe:2.3:a:workos:authkit-nextjs:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:workos:authkit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"@zxcvbn-ts/core\": [\n        \"cpe:2.3:a:zxcvbn-ts_project:zxcvbn-ts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ContentTools\": [\n        \"cpe:2.3:a:getme:contenttools:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"Proto\": [\n        \"cpe:2.3:a:proto_project:proto:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"Templ8\": [\n        \"cpe:2.3:a:templ8_project:templ8:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"aaptjs\": [\n        \"cpe:2.3:a:aaptjs_project:aaptjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"abacus-ext-cmdline\": [\n        \"cpe:2.3:a:abacus-ext-cmdline_project:abacus-ext-cmdline:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"access-policy\": [\n        \"cpe:2.3:a:access-policy_project:access-policy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"accesslog\": [\n        \"cpe:2.3:a:accesslog_project:accesslog:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"adamvr-geoip-lite\": [\n        \"cpe:2.3:a:adamvr-geoip-lite_project:adamvr-geoip-lite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"adb-driver\": [\n        \"cpe:2.3:a:adb-driver_project:adb-driver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"adm-zip\": [\n        \"cpe:2.3:a:adm-zip_project:adm-zip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"aegir\": [\n        \"cpe:2.3:a:aegir_project:aegir:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"air-sdk\": [\n        \"cpe:2.3:a:air-sdk_project:air-sdk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"airbrake\": [\n        \"cpe:2.3:a:airbrake:airbrake:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"airtable\": [\n        \"cpe:2.3:a:airtable:airtable:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"algoliasearch-helper\": [\n        \"cpe:2.3:a:algolia:algoliasearch-helper:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"alto-saxophone\": [\n        \"cpe:2.3:a:alto-saxophone_project:alto-saxophone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"anchorme\": [\n        \"cpe:2.3:a:anchorme_project:anchorme:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"angular\": [\n        \"cpe:2.3:a:angular:angular:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:angularjs:angularjs:*:*:*:*:*:*:*:*\"\n      ],\n      \"angular-expressions\": [\n        \"cpe:2.3:a:peerigon:angular-expressions:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"angular-http-server\": [\n        \"cpe:2.3:a:angular-http-server_project:angular-http-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ansi-html\": [\n        \"cpe:2.3:a:ansi-html_project:ansi-html:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ansi-regex\": [\n        \"cpe:2.3:a:ansi-regex_project:ansi-regex:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ansi2html\": [\n        \"cpe:2.3:a:ansi2html_project:ansi2html:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ansi_up\": [\n        \"cpe:2.3:a:ansi_up_project:ansi_up:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"anymatch\": [\n        \"cpe:2.3:a:jonschlinkert:anymatch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apex-publish-static-files\": [\n        \"cpe:2.3:a:apex-publish-static-files_project:apex-publish-static-files:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apexcharts\": [\n        \"cpe:2.3:a:fusioncharts:apexcharts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apiconnect-cli-plugins\": [\n        \"cpe:2.3:a:apiconnect-cli-plugins_project:apiconnect-cli-plugins:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apk-parser\": [\n        \"cpe:2.3:a:apk-parser_project:apk-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apk-parser2\": [\n        \"cpe:2.3:a:apk-parser2_project:apk-parser2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"apk-parser3\": [\n        \"cpe:2.3:a:apk-parser3_project:apk-parser3:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"appium-chromedriver\": [\n        \"cpe:2.3:a:appium:appium-chromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"arcanist\": [\n        \"cpe:2.3:a:hujiang:arcanist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"argencoders-notevil\": [\n        \"cpe:2.3:a:argencoders-notevil_project:argencoders-notevil:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"arr-flatten-unflatten\": [\n        \"cpe:2.3:a:arr-flatten-unflatten_project:arr-flatten-unflatten:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"arrayfire-js\": [\n        \"cpe:2.3:a:arrayfire-js_project:arrayfire-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"asciitable.js\": [\n        \"cpe:2.3:a:asciitable.js_project:asciitable.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"asn1-ts\": [\n        \"cpe:2.3:a:jonathanwilbur:asn1-ts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"assign-deep\": [\n        \"cpe:2.3:a:assign-deep_project:assign-deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"astro\": [\n        \"cpe:2.3:a:astro:astro:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"async-git\": [\n        \"cpe:2.3:a:async-git_project:async-git:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"atlassian-connect-express\": [\n        \"cpe:2.3:a:atlassian:connect_express:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"atob\": [\n        \"cpe:2.3:a:atob_project:atob:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"atom-node-module-installer\": [\n        \"cpe:2.3:a:atom-node-module-installer_project:atom-node-module-installer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"augustine\": [\n        \"cpe:2.3:a:augustine_project:augustine:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"aurelia-path\": [\n        \"cpe:2.3:a:bluespire:aurelia-path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"auth0-js\": [\n        \"cpe:2.3:a:auth0:auth0.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"aws-lambda-multipart-parser\": [\n        \"cpe:2.3:a:aws-lambda-multipart-parser_project:aws-lambda-multipart-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"aws-sdk\": [\n        \"cpe:2.3:a:amazon:aws_sdk_for_javascipt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"axios\": [\n        \"cpe:2.3:a:axios:axios:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"axios-cache-interceptor\": [\n        \"cpe:2.3:a:axios-cache-interceptor:axios_cache_interceptor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"babelcli\": [\n        \"cpe:2.3:a:babelcli_project:babelcli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"backbone\": [\n        \"cpe:2.3:a:backbone_project:backbone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"badjs-sourcemap-server\": [\n        \"cpe:2.3:a:badjs-sourcemap-server_project:badjs-sourcemap-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"baryton-saxophone\": [\n        \"cpe:2.3:a:baryton-saxophone_project:baryton-saxophone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"basic-ftp\": [\n        \"cpe:2.3:a:patrickjuchli:basic-ftp:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bassmaster\": [\n        \"cpe:2.3:a:bassmaster_project:bassmaster:*:*:*:*:*:*:*:*\"\n      ],\n      \"bestzip\": [\n        \"cpe:2.3:a:bestzip_project:bestzip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"better-aut\": [\n        \"cpe:2.3:a:better-auth:better_auth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"better-auth\": [\n        \"cpe:2.3:a:better-auth:better_auth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"binary-parser\": [\n        \"cpe:2.3:a:keichi:binary-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bionode-sra\": [\n        \"cpe:2.3:a:bionode:bionode-sra:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bittorrent-dht\": [\n        \"cpe:2.3:a:webtorrent:bittorrent-dht:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bitty\": [\n        \"cpe:2.3:a:bitty_project:bitty:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bkjs-wand\": [\n        \"cpe:2.3:a:bkjs-wand_project:bkjs-wand:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"blamer\": [\n        \"cpe:2.3:a:blamer_project:blamer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bmoor\": [\n        \"cpe:2.3:a:bmoor_project:bmoor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"body-parser\": [\n        \"cpe:2.3:a:openjsf:body-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bodymen\": [\n        \"cpe:2.3:a:bodymen_project:bodymen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bootbox\": [\n        \"cpe:2.3:a:bootboxjs:bootbox:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bootstrap-select\": [\n        \"cpe:2.3:a:snapappointments:bootstrap-select:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"botbait\": [\n        \"cpe:2.3:a:botbait_project:botbait:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"box2d-native\": [\n        \"cpe:2.3:a:box2d-native_project:box2d-native:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"braces\": [\n        \"cpe:2.3:a:braces_project:braces:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:jonschlinkert:braces:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bracket-template\": [\n        \"cpe:2.3:a:bracket-template_project:bracket-template:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"broccoli-closure\": [\n        \"cpe:2.3:a:broccoli-closure_project:broccoli-closure:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"broccoli-compass\": [\n        \"cpe:2.3:a:broccoli-compass_project:broccoli-compass:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"browserify-shim\": [\n        \"cpe:2.3:a:browserify-shim_project:browserify-shim:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"browserify-sign\": [\n        \"cpe:2.3:a:browserify:browserify-sign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"browserless-chrome\": [\n        \"cpe:2.3:a:browserless:chrome:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"browserslist\": [\n        \"cpe:2.3:a:browserslist_project:browserslist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"bson-objectid\": [\n        \"cpe:2.3:a:bson-objectid_project:bson-objectid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"buns\": [\n        \"cpe:2.3:a:buns_project:buns:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"buttercms\": [\n        \"cpe:2.3:a:buttercms:buttercms:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"butterfly-button\": [\n        \"cpe:2.3:a:butterfly-button_project:butterfly-button:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"buttle\": [\n        \"cpe:2.3:a:buttle_project:buttle:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"byucslabsix\": [\n        \"cpe:2.3:a:byucslabsix_project:byucslabsix:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cache-base\": [\n        \"cpe:2.3:a:cache-base_project:cache-base:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cached-path-relative\": [\n        \"cpe:2.3:a:cached-path-relative_project:cached-path-relative:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"call\": [\n        \"cpe:2.3:a:call_project:call:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"calmquist.static-server\": [\n        \"cpe:2.3:a:calmquist.static-server_project:calmquist.static-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"canvas\": [\n        \"cpe:2.3:a:automattic:canvas:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"caolilinode\": [\n        \"cpe:2.3:a:caolilinode_project:caolilinode:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cd-messenger\": [\n        \"cpe:2.3:a:cd-messenger_project:cd-messenger:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ced\": [\n        \"cpe:2.3:a:ced_project:ced:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"censorify.tanisjr\": [\n        \"cpe:2.3:a:censorify.tanisjr_project:censorify.tanisjr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"changeset\": [\n        \"cpe:2.3:a:changeset_project:changeset:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"charset\": [\n        \"cpe:2.3:a:charset_project:charset:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chart.js\": [\n        \"cpe:2.3:a:chartjs:chart.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chartist\": [\n        \"cpe:2.3:a:chartist:chartist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chatbyvista\": [\n        \"cpe:2.3:a:chatbyvista_project:chatbyvista:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chrome-launcher\": [\n        \"cpe:2.3:a:google:chrome-launcher:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chromedriver\": [\n        \"cpe:2.3:a:chromedriver_project:chromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chromedriver126\": [\n        \"cpe:2.3:a:chromedriver126_project:chromedriver126:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"chrono-node\": [\n        \"cpe:2.3:a:chrono-node_project:chrono-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"citypredict.whauwiller\": [\n        \"cpe:2.3:a:citypredict.whauwiller_project:citypredict.whauwiller:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ckeditor-wordcount-plugin\": [\n        \"cpe:2.3:a:ckeditor-wordcount-plugin_project:ckeditor-wordcount-plugin:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:herbote-services:ckeditor-wordcount-plugin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"clang-extra\": [\n        \"cpe:2.3:a:clang-extra_project:clang-extra:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"class-transformer\": [\n        \"cpe:2.3:a:class-transformer_project:class-transformer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cli\": [\n        \"cpe:2.3:a:cli_project:cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"closure-compiler-stream\": [\n        \"cpe:2.3:a:closure-compiler-stream_project:closure-compiler-stream:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"closure-util\": [\n        \"cpe:2.3:a:openlayers:closure-util:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"closurecompiler\": [\n        \"cpe:2.3:a:closurecompiler_project:closurecompiler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cloudpub-redis\": [\n        \"cpe:2.3:a:cloudpub-redis_project:cloudpub-redis:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cmake\": [\n        \"cpe:2.3:a:cmake_project:cmake:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"co-cli-installer\": [\n        \"cpe:2.3:a:co-cli-installer_project:co-cli-installer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cobalt-cli\": [\n        \"cpe:2.3:a:cobalt-cli_project:cobalt-cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"codecov\": [\n        \"cpe:2.3:a:codecov:codecov:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cofeescript\": [\n        \"cpe:2.3:a:cofeescript_project:cofeescript:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"collection.js\": [\n        \"cpe:2.3:a:collection.js_project:collection.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"color-string\": [\n        \"cpe:2.3:a:color-string_project:color-string:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"comb\": [\n        \"cpe:2.3:a:c2fo:comb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"commentapp.stetsonwood\": [\n        \"cpe:2.3:a:commentapp.stetsonwood_project:commentapp.stetsonwood:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"compass-compile\": [\n        \"cpe:2.3:a:compass-compile_project:compass-compile:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"compile-sass\": [\n        \"cpe:2.3:a:compile-sass_project:compile-sass:*:*:*:*:*:*:*:*\"\n      ],\n      \"component-flatten\": [\n        \"cpe:2.3:a:component-flatten_project:component-flatten:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"compressing\": [\n        \"cpe:2.3:a:node-modules:compressing:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"conf-cfg-ini\": [\n        \"cpe:2.3:a:conf-cfg-ini_project:conf-cfg-ini:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"confinit\": [\n        \"cpe:2.3:a:confinit_project:confinit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"confucious\": [\n        \"cpe:2.3:a:realseriousgames:confucious:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"connect\": [\n        \"cpe:2.3:a:sencha:connect:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"connect-multiparty\": [\n        \"cpe:2.3:a:connect-multiparty_project:connect-multiparty:*:*:*:*:*:*:*:*\"\n      ],\n      \"connect-pg-simple\": [\n        \"cpe:2.3:a:connect-pg-simple_project:connect-pg-simple:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"connection-tester\": [\n        \"cpe:2.3:a:connection-tester_project:connection-tester:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"console-io\": [\n        \"cpe:2.3:a:console-io_project:console-io:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"content\": [\n        \"cpe:2.3:a:content_project:content:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"controlled-merge\": [\n        \"cpe:2.3:a:controlled-merge_project:controlled-merge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"convert-svg-core\": [\n        \"cpe:2.3:a:convert-svg-core_project:convert-svg-core:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"convict\": [\n        \"cpe:2.3:a:mozilla:convict:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cookie-signature\": [\n        \"cpe:2.3:a:cookie-signature_project:cookie-signature:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"copy-props\": [\n        \"cpe:2.3:a:gulpjs:copy-props:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cordova-plugin-file-transfer\": [\n        \"cpe:2.3:a:apache:cordova_file_transfer:*:*:*:*:*:android:*:*\"\n      ],\n      \"corenlp-js-interface\": [\n        \"cpe:2.3:a:corenlp-js-interface_project:corenlp-js-interface:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"corenlp-js-prefab\": [\n        \"cpe:2.3:a:corenlp-js-prefab_project:corenlp-js-prefab:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"create-choo-app3\": [\n        \"cpe:2.3:a:create-choo-app3_project:create-choo-app3:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"create-choo-electron\": [\n        \"cpe:2.3:a:create-choo-electron_project:create-choo-electron:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cross-env.js\": [\n        \"cpe:2.3:a:cross-env.js_project:cross-env.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cross-fetch\": [\n        \"cpe:2.3:a:cross-fetch_project:cross-fetch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"crossenv\": [\n        \"cpe:2.3:a:crossenv_project:crossenv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"crud-file-server\": [\n        \"cpe:2.3:a:crud-file-server_project:crud-file-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"csrf-lite\": [\n        \"cpe:2.3:a:csrf-lite_project:csrf-lite:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:negotiator_project:negotiator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"css-what\": [\n        \"cpe:2.3:a:css-what_project:css-what:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"csv-parse\": [\n        \"cpe:2.3:a:csv-parse_project:csv-parse:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cuciuci\": [\n        \"cpe:2.3:a:cuciuci_project:cuciuci:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cue-sdk-node\": [\n        \"cpe:2.3:a:cue-sdk-node_project:cue-sdk-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cumulative-distribution-function\": [\n        \"cpe:2.3:a:cumulative-distribution-function_project:cumulative-distribution-function:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"curling\": [\n        \"cpe:2.3:a:curling_project:curling:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"curljs\": [\n        \"cpe:2.3:a:curljs_project:curljs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"curlrequest\": [\n        \"cpe:2.3:a:curlrequest_project:curlrequest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"curly-bracket-parser\": [\n        \"cpe:2.3:a:curly-bracket-parser_project:curly-bracket-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"curses\": [\n        \"cpe:2.3:a:curses_project:curses:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cyber-js\": [\n        \"cpe:2.3:a:cyber-js_project:cyber-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"cypserver\": [\n        \"cpe:2.3:a:cypserver_project:cypserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"d3.js\": [\n        \"cpe:2.3:a:d3.js_project:d3.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dasafio\": [\n        \"cpe:2.3:a:dasafio_project:dasafio:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"datachannel-client\": [\n        \"cpe:2.3:a:datachannel-client_project:datachannel-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"datatables.net\": [\n        \"cpe:2.3:a:datatables:datatables.net:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"date-and-time\": [\n        \"cpe:2.3:a:date-and-time_project:date-and-time:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dawnsparks-node-tesseract\": [\n        \"cpe:2.3:a:dawnsparks-node-tesseract_project:dawnsparks-node-tesseract:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dcdcdcdcdc\": [\n        \"cpe:2.3:a:dcdcdcdcdc_project:dcdcdcdcdc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dcserver\": [\n        \"cpe:2.3:a:dcserver_project:dcserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deap\": [\n        \"cpe:2.3:a:deap_project:deap:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"debug\": [\n        \"cpe:2.3:a:debug_project:debug:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"decal\": [\n        \"cpe:2.3:a:decal_project:decal:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"decode-uri-component\": [\n        \"cpe:2.3:a:decode-uri-component_project:decode-uri-component:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"decompress\": [\n        \"cpe:2.3:a:decompress_project:decompress:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-defaults\": [\n        \"cpe:2.3:a:deep-defaults_project:deep-defaults:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-extend\": [\n        \"cpe:2.3:a:deep_extend_project:deep_extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-get-set\": [\n        \"cpe:2.3:a:deep-get-set_project:deep-get-set:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-object-diff\": [\n        \"cpe:2.3:a:deep-object-diff_project:deep-object-diff:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-parse-json\": [\n        \"cpe:2.3:a:deep-parse-json_project:deep-parse-json:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep-set\": [\n        \"cpe:2.3:a:deep-set_project:deep-set:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deep.assign\": [\n        \"cpe:2.3:a:deep.assign_project:deep.assign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deephas\": [\n        \"cpe:2.3:a:deephas_project:deephas:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deeply\": [\n        \"cpe:2.3:a:deeply_project:deeply:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deepmergefn\": [\n        \"cpe:2.3:a:deepmergefn_project:deepmergefn:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deepref\": [\n        \"cpe:2.3:a:deepref_project:deepref:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"deeps\": [\n        \"cpe:2.3:a:invertase:deeps:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"defaults-deep\": [\n        \"cpe:2.3:a:defaults-deep_project:defaults-deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"desafio\": [\n        \"cpe:2.3:a:desafio_project:desafio:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"devcert\": [\n        \"cpe:2.3:a:devcert_project:devcert:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dexie\": [\n        \"cpe:2.3:a:dexie:dexie:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:dexie:dexie:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dgard8.lab6\": [\n        \"cpe:2.3:a:dgard8.lab6_project:dgard8.lab6:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dicer\": [\n        \"cpe:2.3:a:dicer_project:dicer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"diff\": [\n        \"cpe:2.3:a:kpdecker:jsdiff:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"directus\": [\n        \"cpe:2.3:a:monospace:directus:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"discordi.js\": [\n        \"cpe:2.3:a:discordi.js_project:discordi.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"diskusage-ng\": [\n        \"cpe:2.3:a:diskusage-ng_project:diskusage-ng:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"djv\": [\n        \"cpe:2.3:a:djv_project:djv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dmmcquay.lab6\": [\n        \"cpe:2.3:a:dmmcquay.lab6_project:dmmcquay.lab6:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dns-packet\": [\n        \"cpe:2.3:a:dns-packet_project:dns-packet:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dns-sync\": [\n        \"cpe:2.3:a:dns-sync_project:dns-sync:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"docker-cli-js\": [\n        \"cpe:2.3:a:quobject:docker-cli-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"docker-compose-remote-api\": [\n        \"cpe:2.3:a:docker-compose-remote-api_project:docker-compose-remote-api:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"docker-tester\": [\n        \"cpe:2.3:a:docker-tester_project:docker-tester:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"docsify\": [\n        \"cpe:2.3:a:docsifyjs:docsify:*:*:*:*:*:*:*:*\"\n      ],\n      \"dojo\": [\n        \"cpe:2.3:a:linuxfoundation:dojo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dojox\": [\n        \"cpe:2.3:a:linuxfoundation:dojox:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dom-iterator\": [\n        \"cpe:2.3:a:matthewmueller:dom-iterator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dot-lens\": [\n        \"cpe:2.3:a:dot-lens_project:dot-lens:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dot-notes\": [\n        \"cpe:2.3:a:dot-notes_project:dot-notes:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dot-object\": [\n        \"cpe:2.3:a:dot-object_project:dot-object:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dot-prop\": [\n        \"cpe:2.3:a:dot-prop_project:dot-prop:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dottie\": [\n        \"cpe:2.3:a:dottie_project:dottie:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dotty\": [\n        \"cpe:2.3:a:dotty_project:dotty:*:*:*:*:*:*:*:*\"\n      ],\n      \"droppy\": [\n        \"cpe:2.3:a:droppy_project:droppy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dwebp-bin\": [\n        \"cpe:2.3:a:dwebp-bin_project:dwebp-bin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dylmomo\": [\n        \"cpe:2.3:a:dylmomo_project:dylmomo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"dynamoose\": [\n        \"cpe:2.3:a:dynamoosejs:dynamoose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"earlybird\": [\n        \"cpe:2.3:a:earlybird_project:earlybird:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"easy-email-editor\": [\n        \"cpe:2.3:a:zalify:easy_email:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"easy-static-server\": [\n        \"cpe:2.3:a:easy-static-server_project:easy-static-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"easyquick\": [\n        \"cpe:2.3:a:easyquick_project:easyquick:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ecdh\": [\n        \"cpe:2.3:a:ecdh_project:ecdh:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ecstatic\": [\n        \"cpe:2.3:a:ecstatic_project:ecstatic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"edge.js\": [\n        \"cpe:2.3:a:adonisjs:edge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"effect\": [\n        \"cpe:2.3:a:effect_project:effect:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"egg-scripts\": [\n        \"cpe:2.3:a:eggjs:egg-scripts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ejs\": [\n        \"cpe:2.3:a:ejs:ejs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"elding\": [\n        \"cpe:2.3:a:elding_project:elding:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"electron\": [\n        \"cpe:2.3:a:electronjs:electron:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"electron-builder\": [\n        \"cpe:2.3:a:electron:electron-builder:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"electron-packager\": [\n        \"cpe:2.3:a:electron-packager_project:electron-packager:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"electron-pdf\": [\n        \"cpe:2.3:a:fraserxu:electron-pdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"elliptic\": [\n        \"cpe:2.3:a:indutny:elliptic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"elysia\": [\n        \"cpe:2.3:a:elysiajs:elysia:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"embedza\": [\n        \"cpe:2.3:a:embedza_project:embedza:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"engine.io\": [\n        \"cpe:2.3:a:socket:engine.io:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"engine.io-client\": [\n        \"cpe:2.3:a:socket:engine.io-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"enserver\": [\n        \"cpe:2.3:a:enserver_project:enserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"es5-ext\": [\n        \"cpe:2.3:a:medikoo:es5-ext:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"es6-crawler-detect\": [\n        \"cpe:2.3:a:crawlerdetect_project:crawlerdetect:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"eslint-config-prettier\": [\n        \"cpe:2.3:a:prettier:eslint-config-prettier:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"eslint-fixer\": [\n        \"cpe:2.3:a:eslint-fixer_project:eslint-fixer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"eslint-plugin-prettier\": [\n        \"cpe:2.3:a:prettier:eslint-plugin-prettier:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"eslint-utils\": [\n        \"cpe:2.3:a:eslint-utils_project:eslint-utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ewgaddis.lab6\": [\n        \"cpe:2.3:a:ewgaddis.lab6_project:ewgaddis.lab6:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"exceljs\": [\n        \"cpe:2.3:a:exceljs_project:exceljs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"exec-local-bin\": [\n        \"cpe:2.3:a:exec-local-bin_project:exec-local-bin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"expr-eval\": [\n        \"cpe:2.3:a:silentmatt:javascript_expression_evaluator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express\": [\n        \"cpe:2.3:a:openjsf:express:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-cart\": [\n        \"cpe:2.3:a:express-cart_project:express-cart:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:expresscart_project:expresscart:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-fileupload\": [\n        \"cpe:2.3:a:express-fileupload_project:express-fileupload:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-handlebars\": [\n        \"cpe:2.3:a:express_handlebars_project:express_handlebars:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-jwt\": [\n        \"cpe:2.3:a:auth0:express-jwt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-openid-connect\": [\n        \"cpe:2.3:a:auth0:express_openid_connect:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-restify-mongoose\": [\n        \"cpe:2.3:a:express-restify-mongoose_project:express-restify-mongoose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-validators\": [\n        \"cpe:2.3:a:express-validators_project:express-validators:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"express-xss-sanitizer\": [\n        \"cpe:2.3:a:express_xss_sanitizer_project:express_xss_sanitizer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"extend\": [\n        \"cpe:2.3:a:extend_project:extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"extend2\": [\n        \"cpe:2.3:a:eggjs:extend2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"external-svg-loader\": [\n        \"cpe:2.3:a:shubhamjain:svg_loader:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"exxxxxxxxxxx\": [\n        \"cpe:2.3:a:exxxxxxxxxxx_project:exxxxxxxxxxx:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"f2e-server\": [\n        \"cpe:2.3:a:f2e-server_project:f2e-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fabric\": [\n        \"cpe:2.3:a:fabricjs:fabric.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fabric-js\": [\n        \"cpe:2.3:a:fabric-js_project:fabric-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fancy-server\": [\n        \"cpe:2.3:a:fancy-server_project:fancy-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fast-csv\": [\n        \"cpe:2.3:a:c2fo:fast-csv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fast-http\": [\n        \"cpe:2.3:a:fast-http_project:fast-http:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fast-http-cli\": [\n        \"cpe:2.3:a:fast-http-cli_project:fast-http-cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fast-string-search\": [\n        \"cpe:2.3:a:fast_string_search_project:fast_string_search:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fast-xml-parser\": [\n        \"cpe:2.3:a:naturalintelligence:fast-xml-parser:*:*:*:*:*:*:*:*\"\n      ],\n      \"fastest-json-copy\": [\n        \"cpe:2.3:a:fastest-json-copy_project:fastest-json-copy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fastify\": [\n        \"cpe:2.3:a:fastify:fastify:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fastify-csrf\": [\n        \"cpe:2.3:a:fastify:fastify-csrf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fastify-http-proxy\": [\n        \"cpe:2.3:a:fastify-http-proxy_project:fastify-http-proxy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fastify-reply-from\": [\n        \"cpe:2.3:a:fastify-reply-from_project:fastify-reply-from:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"faye\": [\n        \"cpe:2.3:a:faye_project:faye:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fbr-client\": [\n        \"cpe:2.3:a:webrtc-experiment:fbr-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"feathers-sequelize\": [\n        \"cpe:2.3:a:feathersjs:feathers-sequelize:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ffmepg\": [\n        \"cpe:2.3:a:ffmepg_project:ffmepg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ffmpegdotjs\": [\n        \"cpe:2.3:a:ffmpegdotjs_project:ffmpegdotjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fibjs\": [\n        \"cpe:2.3:a:fibjs_project:fibjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"file-type\": [\n        \"cpe:2.3:a:file-type_project:file-type:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"file-upload-with-preview\": [\n        \"cpe:2.3:a:johndatserakis:file-upload-with-preview:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fis-kernel\": [\n        \"cpe:2.3:a:baidu:fis-kernel:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fis-parser-sass-bin\": [\n        \"cpe:2.3:a:fis-parser-sass-bin_project:fis-parser-sass-bin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fis-sass-all\": [\n        \"cpe:2.3:a:fis-sass-all_project:fis-sass-all:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"flattenizer\": [\n        \"cpe:2.3:a:flattenizer_project:flattenizer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fleetctl\": [\n        \"cpe:2.3:a:fleetdm:fleet:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fluture-node\": [\n        \"cpe:2.3:a:fluture-node_project:fluture-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"follow-redirects\": [\n        \"cpe:2.3:a:follow-redirects:follow_redirects:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"forms\": [\n        \"cpe:2.3:a:forms_project:forms:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"forwarded\": [\n        \"cpe:2.3:a:forwarded_project:forwarded:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"frames-compiler\": [\n        \"cpe:2.3:a:frames-compiler_project:frames-compiler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"freediskspace\": [\n        \"cpe:2.3:a:freediskspace_project:freediskproject:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fresh\": [\n        \"cpe:2.3:a:fresh_project:fresh:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"frourio\": [\n        \"cpe:2.3:a:frourio:frourio:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fs-path\": [\n        \"cpe:2.3:a:fs-path_project:fs-path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fsk-server\": [\n        \"cpe:2.3:a:fsk-server_project:fsk-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ftp-srv\": [\n        \"cpe:2.3:a:ftp-srv_project:ftp-srv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"fuseki\": [\n        \"cpe:2.3:a:fuseki_project:fuseki:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"galenframework-cli\": [\n        \"cpe:2.3:a:galenframework:galenframework-cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gammautils\": [\n        \"cpe:2.3:a:gammautils_project:gammautils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gaoxiaotingtingting\": [\n        \"cpe:2.3:a:gaoxiaotingtingting_project:gaoxiaotingtingting:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gaoxuyan\": [\n        \"cpe:2.3:a:gaoxuyan_project:gaoxuyan:*:*:*:*:*:*:*:*\"\n      ],\n      \"gatsby-plugin-mdx\": [\n        \"cpe:2.3:a:gatsbyjs:gatsby:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gatsby-source-wordpress\": [\n        \"cpe:2.3:a:gatsbyjs:gatsby-source-wordpress:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gedi\": [\n        \"cpe:2.3:a:gedi_project:gedi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"general-file-server\": [\n        \"cpe:2.3:a:general-file-server_project:general-file-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"generator-hottowel\": [\n        \"cpe:2.3:a:generator-hottowel_project:generator-hottowel:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"geoip-lite-country\": [\n        \"cpe:2.3:a:geoip-lite-country_project:geoip-lite-country:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"geojson2kml\": [\n        \"cpe:2.3:a:geojson2kml_project:geojson2kml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"get-ip-range\": [\n        \"cpe:2.3:a:get-ip-range_project:get-ip-range:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"get-npm-package-version\": [\n        \"cpe:2.3:a:get-npm-package-version_project:get-npm-package-version:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"getcityapi.yoehoehne\": [\n        \"cpe:2.3:a:getcityapi.yoehoehne_project:getcityapi.yoehoehne:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"getobject\": [\n        \"cpe:2.3:a:getobject_project:getobject:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gfe-sass\": [\n        \"cpe:2.3:a:gfe-sass_project:gfe-sass:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ghost\": [\n        \"cpe:2.3:a:ghost:ghost:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git\": [\n        \"cpe:2.3:a:git_project:git:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-add-remote\": [\n        \"cpe:2.3:a:git-add-remote_project:git-add-remote:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-archive\": [\n        \"cpe:2.3:a:git-archive_project:git-archive:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-dummy-commit\": [\n        \"cpe:2.3:a:git-dummy-commit_project:git-dummy-commit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-parse\": [\n        \"cpe:2.3:a:wayfair:git-parse:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-promise\": [\n        \"cpe:2.3:a:git-promise_project:git-promise:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"git-pull-or-clone\": [\n        \"cpe:2.3:a:git-pull-or-clone_project:git-pull-or-clone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitblame\": [\n        \"cpe:2.3:a:gitblame_project:gitblame:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitbook\": [\n        \"cpe:2.3:a:gitbook:gitbook:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitlabhook\": [\n        \"cpe:2.3:a:gitlabhook_project:gitlabhook:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitlog\": [\n        \"cpe:2.3:a:gitlog_project:gitlog:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitlogplus\": [\n        \"cpe:2.3:a:gitlogplus_project:gitlogplus:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gitsome\": [\n        \"cpe:2.3:a:gitsome_project:gitsome:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"glob\": [\n        \"cpe:2.3:a:isaacs:glob:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"glob-parent\": [\n        \"cpe:2.3:a:gulpjs:glob-parent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"go-ipfs-dep\": [\n        \"cpe:2.3:a:ipfs:go-ipfs-dep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gomeplus-h5-proxy\": [\n        \"cpe:2.3:a:gomeplus-h5-proxy_project:gomeplus-h5-proxy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"google-closure-tools-latest\": [\n        \"cpe:2.3:a:google-closure-tools-latest_project:google-closure-tools-latest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"google-it\": [\n        \"cpe:2.3:a:google-it_project:google-it:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"goserv\": [\n        \"cpe:2.3:a:goserv_project:goserv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"got-fetch\": [\n        \"cpe:2.3:a:alexghr:got-fetch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grapesjs\": [\n        \"cpe:2.3:a:grapesjs:grapesjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql\": [\n        \"cpe:2.3:a:graphql:graphql:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-playground-html\": [\n        \"cpe:2.3:a:prisma:graphql-playground-html:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-playground-middleware-express\": [\n        \"cpe:2.3:a:prisma:graphql-playground-middleware-express:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-playground-middleware-hapi\": [\n        \"cpe:2.3:a:prisma:graphql-playground-middleware-hapi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-playground-middleware-koa\": [\n        \"cpe:2.3:a:prisma:graphql-playground-middleware-koa:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-playground-middleware-lambda\": [\n        \"cpe:2.3:a:prisma:graphql-playground-middleware-lambda:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"graphql-upload\": [\n        \"cpe:2.3:a:graphql-upload_project:graphql-upload:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:graphql-upload_project:graphql-upload:*:*:*:*:*:npmjs:*:*\"\n      ],\n      \"growl\": [\n        \"cpe:2.3:a:growl_project:growl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-ccompiler\": [\n        \"cpe:2.3:a:grunt-ccompiler_project:grunt-ccompiler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-gh-pages\": [\n        \"cpe:2.3:a:grunt-gh-pages_project:grunt-gh-pages:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-images\": [\n        \"cpe:2.3:a:grunt-images_project:grunt-images:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-karma\": [\n        \"cpe:2.3:a:grunt-karma_project:grunt-karma:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-util-property\": [\n        \"cpe:2.3:a:grunt-util-property_project:grunt-util-property:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"grunt-webdriver-qunit\": [\n        \"cpe:2.3:a:grunt-webdriver-qunit_project:grunt-webdriver-qunit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gruntcli\": [\n        \"cpe:2.3:a:gruntcli_project:gruntcli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gry\": [\n        \"cpe:2.3:a:gry_project:gry:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gsap\": [\n        \"cpe:2.3:a:greensock:greensock_animation_platform:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gulp-styledocco\": [\n        \"cpe:2.3:a:gulp-styledocco_project:gulp-styledocco:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"gulp-tape\": [\n        \"cpe:2.3:a:gulp-tape_project:gulp-tape:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"h3\": [\n        \"cpe:2.3:a:h3:h3:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"haml-coffee\": [\n        \"cpe:2.3:a:haml-coffee_project:haml-coffee:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"handlebars\": [\n        \"cpe:2.3:a:handlebars.js_project:handlebars.js:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"handsontable\": [\n        \"cpe:2.3:a:handsontable:handsontable:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hapi\": [\n        \"cpe:2.3:a:hapijs:hapi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hapi-auth-jwt2\": [\n        \"cpe:2.3:a:hapi-auth-jwt2_project:hapi-auth-jwt2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"harp\": [\n        \"cpe:2.3:a:npmjs:harp:*:*:*:*:*:*:*:*\"\n      ],\n      \"haxe\": [\n        \"cpe:2.3:a:haxe:haxe:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"haxe-dev\": [\n        \"cpe:2.3:a:haxe:haxe-dev:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"haxe3\": [\n        \"cpe:2.3:a:haxe:haxe:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"haxeshim\": [\n        \"cpe:2.3:a:haxeshim_project:haxeshim:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hbs\": [\n        \"cpe:2.3:a:hbs_project:hbs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hcbserver\": [\n        \"cpe:2.3:a:hcbserver_project:hcbserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"headless-browser-lite\": [\n        \"cpe:2.3:a:headless-browser-lite_project:headless-browser-lite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"healthcenter\": [\n        \"cpe:2.3:a:healthcenter_project:healthcenter:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hekto\": [\n        \"cpe:2.3:a:hekto_project:hekto:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hello.js\": [\n        \"cpe:2.3:a:hello.js_project:hello.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"herbivore\": [\n        \"cpe:2.3:a:herbivore_project:herbivore:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"heroku-addonpool\": [\n        \"cpe:2.3:a:heroku-addonpool_project:heroku-addonpool:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"heroku-env\": [\n        \"cpe:2.3:a:heroku-env_project:heroku-env:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hexo\": [\n        \"cpe:2.3:a:hexo:hexo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hftp\": [\n        \"cpe:2.3:a:hftp_project:hftp:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"highlight.js\": [\n        \"cpe:2.3:a:highlightjs:highlight.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"highlight.run\": [\n        \"cpe:2.3:a:highlight:highlight:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"home-assistant-js-websocket\": [\n        \"cpe:2.3:a:home-assistant:home-assistant-js-websocket:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hono\": [\n        \"cpe:2.3:a:hono:hono:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hostr\": [\n        \"cpe:2.3:a:hostr_project:hostr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hot-formula-parser\": [\n        \"cpe:2.3:a:hot-formula-parser_project:hot-formula-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"html-janitor\": [\n        \"cpe:2.3:a:html-janitor_project:html-janitor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"html-minifier\": [\n        \"cpe:2.3:a:kangax:html-minifier:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"html-minifier-terser\": [\n        \"cpe:2.3:a:terser:html-minifier-terser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"html-pages\": [\n        \"cpe:2.3:a:html-pages_project:html-pages:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"html-pdf\": [\n        \"cpe:2.3:a:html-pdf_project:html-pdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-cache-semantics\": [\n        \"cpe:2.3:a:http-cache-semantics_project:http-cache-semantics:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-client\": [\n        \"cpe:2.3:a:http-client_project:http-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-file-server\": [\n        \"cpe:2.3:a:http-file-server_project:http-file-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-live-simulator\": [\n        \"cpe:2.3:a:http-live-simulator_project:http-live-simulator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-proxy\": [\n        \"cpe:2.3:a:http-proxy_project:http-proxy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-proxy.js\": [\n        \"cpe:2.3:a:http-proxy.js_project:http-proxy.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-server-node\": [\n        \"cpe:2.3:a:http-server-node_project:http-server-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http-signature\": [\n        \"cpe:2.3:a:joyent:http-signature:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http_server\": [\n        \"cpe:2.3:a:http_server_project:http_server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"http_static_simple\": [\n        \"cpe:2.3:a:http_static_simple_project:http_static_simple:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"https-proxy-agent\": [\n        \"cpe:2.3:a:https-proxy-agent_project:https-proxy-agent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"httpster\": [\n        \"cpe:2.3:a:httpster_project:httpster:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"httpsync\": [\n        \"cpe:2.3:a:httpsync_project:httpsync:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hubl-server\": [\n        \"cpe:2.3:a:hubspot:hubl-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"hummus\": [\n        \"cpe:2.3:a:hummus_project:hummus:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"i18n\": [\n        \"cpe:2.3:a:i18n_project:i18n:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"i18n-node-angular\": [\n        \"cpe:2.3:a:i18n-node-angular_project:i18n-node-angular:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ibapi\": [\n        \"cpe:2.3:a:interactivebrokers:ibapi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ibm_db\": [\n        \"cpe:2.3:a:ibm:ibm_db:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"iedriver\": [\n        \"cpe:2.3:a:iedriver_project:iedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"igniteui\": [\n        \"cpe:2.3:a:infragistics:igniteui:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ikst\": [\n        \"cpe:2.3:a:ikst_project:ikst:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"image-tiler\": [\n        \"cpe:2.3:a:image-tiler_project:image-tiler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"imageoptim\": [\n        \"cpe:2.3:a:imageoptim_project:imageoptim:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"immer\": [\n        \"cpe:2.3:a:immer_project:immer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"import-in-the-middle\": [\n        \"cpe:2.3:a:datadoghq:import-in-the-middle:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"inert\": [\n        \"cpe:2.3:a:hapi:inert:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"infraserver\": [\n        \"cpe:2.3:a:infraserver_project:infraserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ini\": [\n        \"cpe:2.3:a:ini_project:ini:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ini-parser\": [\n        \"cpe:2.3:a:ini-parser_project:ini-parser:*:*:*:*:*:*:*:*\"\n      ],\n      \"iniparserjs\": [\n        \"cpe:2.3:a:iniparserjs_project:iniparserjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"install-g-test\": [\n        \"cpe:2.3:a:install-g-test_project:install-g-test:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"install-package\": [\n        \"cpe:2.3:a:install-package_project:install-package:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"intsol-package\": [\n        \"cpe:2.3:a:intsol-package_project:intsol-package:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"iobroker.admin\": [\n        \"cpe:2.3:a:iobroker:iobroker.admin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"iobroker.web\": [\n        \"cpe:2.3:a:iobroker:iobroker.web:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ip\": [\n        \"cpe:2.3:a:fedorindutny:ip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ipip\": [\n        \"cpe:2.3:a:ipip_project:ipip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ipip-coffee\": [\n        \"cpe:2.3:a:ipip:ipip-coffee:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"irrelon-path\": [\n        \"cpe:2.3:a:irrelon:irrelon-path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"is-email\": [\n        \"cpe:2.3:a:segment:is-email:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"is-http2\": [\n        \"cpe:2.3:a:is-http2_project:is-http2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"is-my-json-valid\": [\n        \"cpe:2.3:a:is-my-json-valid_project:is-my-json-valid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"is-user-valid\": [\n        \"cpe:2.3:a:is-user-valid_project:is-user-valid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"isolated-vm\": [\n        \"cpe:2.3:a:isolated-vm_project:isolated-vm:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"iter-http\": [\n        \"cpe:2.3:a:iter-http_project:iter-http:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"iter-server\": [\n        \"cpe:2.3:a:iter-server_project:iter-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jadedown\": [\n        \"cpe:2.3:a:jadedown_project:jadedown:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jailed\": [\n        \"cpe:2.3:a:jailed_project:jailed:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jansenstuffpleasework\": [\n        \"cpe:2.3:a:jansenstuffpleasework_project:jansenstuffpleasework:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jdf-sass\": [\n        \"cpe:2.3:a:jdf-sass_project:jdf-sass:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jikes\": [\n        \"cpe:2.3:a:jikes_project:jikes:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jison\": [\n        \"cpe:2.3:a:jison_project:jison:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jn_jj_server\": [\n        \"cpe:2.3:a:jn_jj_server_project:jn_jj_server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jointjs\": [\n        \"cpe:2.3:a:client:jointjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"joplin\": [\n        \"cpe:2.3:a:joplin_project:joplin:*:*:*:*:*:-:*:*\",\n        \"cpe:2.3:a:joplin_project:joplin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jose\": [\n        \"cpe:2.3:a:jose_project:jose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jpeg-js\": [\n        \"cpe:2.3:a:jpeg-js_project:jpeg-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jpv\": [\n        \"cpe:2.3:a:json_pattern_validator_project:json_pattern_validator:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:json_pattern_validator_project:json_pattern_validator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery\": [\n        \"cpe:2.3:a:jquery:jquery:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery-file-upload\": [\n        \"cpe:2.3:a:jquery_file_upload_project:jquery_file_upload:*:*:*:*:*:*:*:*\"\n      ],\n      \"jquery-validation\": [\n        \"cpe:2.3:a:jqueryvalidation:jquery_validation:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery.cookie\": [\n        \"cpe:2.3:a:jquery.cookie_project:jquery.cookie:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery.js\": [\n        \"cpe:2.3:a:jquery.js_project:jquery.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery.json-viewer\": [\n        \"cpe:2.3:a:jquery_json-viewer_project:jquery_json-viewer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquery.terminal\": [\n        \"cpe:2.3:a:jquery.terminal_project:jquery.terminal:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jquey\": [\n        \"cpe:2.3:a:jquey_project:jquey:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"js-given\": [\n        \"cpe:2.3:a:js-given_project:js-given:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"js-yaml\": [\n        \"cpe:2.3:a:nodeca:js-yaml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jscover\": [\n        \"cpe:2.3:a:jscover_project:jscover:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsen\": [\n        \"cpe:2.3:a:jsen_project:jsen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jser-stat\": [\n        \"cpe:2.3:a:jser-stat_project:jser-stat:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jshamcrest\": [\n        \"cpe:2.3:a:jshamcrest_project:jshamcrest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json\": [\n        \"cpe:2.3:a:joyent:json:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json-bigint\": [\n        \"cpe:2.3:a:json-bigint_project:json-bigint:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json-pointer\": [\n        \"cpe:2.3:a:manuelstofer:json-pointer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json-web-token\": [\n        \"cpe:2.3:a:joaquimserafim:json_web_token:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json5\": [\n        \"cpe:2.3:a:json5:json5:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"json8-merge-patch\": [\n        \"cpe:2.3:a:json8-merge-patch_project:json8-merge-patch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsonpointer\": [\n        \"cpe:2.3:a:janl:jsonpointer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsonwebtoken\": [\n        \"cpe:2.3:a:auth0:jsonwebtoken:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jspdf\": [\n        \"cpe:2.3:a:parall:jspdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsreport\": [\n        \"cpe:2.3:a:jsreport:jsreport:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsrsasign\": [\n        \"cpe:2.3:a:jsrsasign_project:jsrsasign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jstestdriver\": [\n        \"cpe:2.3:a:jstestdriver_project:jstestdriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jsx-slack\": [\n        \"cpe:2.3:a:jsx-slack_project:jsx-slack:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jszip\": [\n        \"cpe:2.3:a:jszip_project:jszip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"just-extend\": [\n        \"cpe:2.3:a:just-extend_project:just-extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"just-safe-set\": [\n        \"cpe:2.3:a:just-safe-set_project:just-safe-set:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jvminstall\": [\n        \"cpe:2.3:a:jvminstall_project:jvminstall:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"jwt-simple\": [\n        \"cpe:2.3:a:jwt-simple_project:jwt-simple:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"karma\": [\n        \"cpe:2.3:a:karma_project:karma:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"karma-mojo\": [\n        \"cpe:2.3:a:karma-mojo_project:karma-mojo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kerberos\": [\n        \"cpe:2.3:a:kerberos_project:kerberos:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"keyget\": [\n        \"cpe:2.3:a:keyget_project:keyget:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"keystone\": [\n        \"cpe:2.3:a:keystonejs:keystone:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kill-by-port\": [\n        \"cpe:2.3:a:kill-by-port_project:kill-by-port:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kill-port\": [\n        \"cpe:2.3:a:kill-port_project:kill-port:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kill-port-process\": [\n        \"cpe:2.3:a:kill-port-process_project:kill-port-process:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kill-process-by-name\": [\n        \"cpe:2.3:a:kill-process-by-name_project:kill-process-by-name:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kill-process-on-port\": [\n        \"cpe:2.3:a:kill-process-on-port_project:kill-process-on-port:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"killing\": [\n        \"cpe:2.3:a:killing_project:killing:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"killport\": [\n        \"cpe:2.3:a:killport_project:killport:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"kindlegen\": [\n        \"cpe:2.3:a:hakatashi:kindlegen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"klona\": [\n        \"cpe:2.3:a:klona_project:klona:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"knightjs\": [\n        \"cpe:2.3:a:knight_project:knight:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"koa\": [\n        \"cpe:2.3:a:koajs:koa:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"koa-remove-trailing-slashes\": [\n        \"cpe:2.3:a:koa-remove-trailing-slashes_project:koa-remove-trailing-slashes:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lab6.brit95\": [\n        \"cpe:2.3:a:lab6.brit95_project:lab6.brit95:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lab6drewfusbyu\": [\n        \"cpe:2.3:a:lab6drewfusbyu_project:lab6drewfusbyu:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"langchain\": [\n        \"cpe:2.3:a:langchain:langchain.js:*:*:*:*:*:*:*:*\"\n      ],\n      \"larvitbase-api\": [\n        \"cpe:2.3:a:larvit:larvitbase:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"launchpad\": [\n        \"cpe:2.3:a:bitovi:launchpad:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"less-openui5\": [\n        \"cpe:2.3:a:less-openui5_project:less-openui5:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lessindex\": [\n        \"cpe:2.3:a:lessindex_project:lessindex:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lettermint\": [\n        \"cpe:2.3:a:lettermint:lettermint:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lettersanitizer\": [\n        \"cpe:2.3:a:lettersanitizer_project:lettersanitizer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libnested\": [\n        \"cpe:2.3:a:libnested_project:libnested:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libnmap\": [\n        \"cpe:2.3:a:libnmap_project:libnmap:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libp2p\": [\n        \"cpe:2.3:a:protocol:libp2p:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libsbml\": [\n        \"cpe:2.3:a:libsbml_project:libsbml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libsbmlsim\": [\n        \"cpe:2.3:a:libsbmlsim_project:libsbmlsim:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"libxl\": [\n        \"cpe:2.3:a:libxl_project:libxl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lifion-verify-deps\": [\n        \"cpe:2.3:a:adp:lifion-verifiy-dependencies:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"limbus-buildgen\": [\n        \"cpe:2.3:a:limbus-buildgen_project:limbus-buildgen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"limdu\": [\n        \"cpe:2.3:a:limdu_project:limdu:*:*:*:*:*:*:*:*\"\n      ],\n      \"link-preview-js\": [\n        \"cpe:2.3:a:link-preview-js_project:link-preview-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"liquidjs\": [\n        \"cpe:2.3:a:liquidjs:liquidjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"list-n-stream\": [\n        \"cpe:2.3:a:list-n-stream_project:list-n-stream:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lite-server\": [\n        \"cpe:2.3:a:lite-server_project:lite-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lite-web-server\": [\n        \"cpe:2.3:a:lite-web-server_project:lite-web-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"litespeed.js\": [\n        \"cpe:2.3:a:litespeed.js_project:litespeed.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"liuyaserver\": [\n        \"cpe:2.3:a:liuyaserver_project:liuyaserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"liyujing\": [\n        \"cpe:2.3:a:liyujing_project:liyujing:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"localhost-now\": [\n        \"cpe:2.3:a:localhost-now_project:localhost-now:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lockfile-lint-api\": [\n        \"cpe:2.3:a:lirantal:lockfile-lint-api:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"locutus\": [\n        \"cpe:2.3:a:locutus:locutus:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lodahs\": [\n        \"cpe:2.3:a:lodahs_project:lodahs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lodash\": [\n        \"cpe:2.3:a:lodash:lodash:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"log4js\": [\n        \"cpe:2.3:a:log4js_project:log4js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"logkitty\": [\n        \"cpe:2.3:a:logkitty_project:logkitty:*:*:*:*:*:*:*:*\"\n      ],\n      \"loopback-connector-postgresql\": [\n        \"cpe:2.3:a:linuxfoundation:loopback-connector-postgresql:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"looppake\": [\n        \"cpe:2.3:a:looppake_project:looppake:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lru-cache\": [\n        \"cpe:2.3:a:isaacs:lru-cache:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lsof\": [\n        \"cpe:2.3:a:isof_project:isof:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ltt\": [\n        \"cpe:2.3:a:ltt_project:ltt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"lutils\": [\n        \"cpe:2.3:a:lutils_project:lutils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"m-server\": [\n        \"cpe:2.3:a:m-server_project:m-server:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:npmjs:m-server:*:*:*:*:*:*:*:*\"\n      ],\n      \"m.static\": [\n        \"cpe:2.3:a:m.static_project:m.static:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"macaca-chromedriver\": [\n        \"cpe:2.3:a:macacajs:macaca-chromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"macaca-chromedriver-zxa\": [\n        \"cpe:2.3:a:macaca-chromedriver-zxa_project:macaca-chromedriver-zxa:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"macfromip\": [\n        \"cpe:2.3:a:macfromip_project:macfromip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"madge\": [\n        \"cpe:2.3:a:madge_project:madge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"madlib-object-utils\": [\n        \"cpe:2.3:a:springtree:madlib-object-utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"makerjs\": [\n        \"cpe:2.3:a:microsoft:maker.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mapbox.js\": [\n        \"cpe:2.3:a:mapbox:mapbox.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mariadb\": [\n        \"cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"marionette-socket-host\": [\n        \"cpe:2.3:a:marionette-socket-host_project:marionette-socket-host:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"markdown-it\": [\n        \"cpe:2.3:a:markdown-it_project:markdown-it:*:*:*:*:*:*:*:*\"\n      ],\n      \"markdown-it-highlightjs\": [\n        \"cpe:2.3:a:markdown-it-highlightjs_project:markdown-it-highlightjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"markdown-link-extractor\": [\n        \"cpe:2.3:a:markdown-link-extractor_project:markdown-link-extractor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"markdown-pdf\": [\n        \"cpe:2.3:a:markdown-pdf_project:markdown-pdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"marked\": [\n        \"cpe:2.3:a:marked_project:marked:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"marked-tree\": [\n        \"cpe:2.3:a:marked-tree_project:marked-tree:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"marscode\": [\n        \"cpe:2.3:a:indo-mars:marscode:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"massif\": [\n        \"cpe:2.3:a:massif_project:massif:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"materialize-css\": [\n        \"cpe:2.3:a:materializecss:materialize:*:*:*:*:*:*:node.js:*\"\n      ],\n      \"matrix-appservice-bridge\": [\n        \"cpe:2.3:a:matrix:matrix-appservice-bridge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"matrix-appservice-irc\": [\n        \"cpe:2.3:a:matrix:matrix_irc_bridge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"matrix-react-sdk\": [\n        \"cpe:2.3:a:matrix-react-sdk_project:matrix-react-sdk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mc-kill-port\": [\n        \"cpe:2.3:a:mc-kill-port_project:mc-kill-port:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mcp-server-kubernetes\": [\n        \"cpe:2.3:a:suyogs:mcp-server-kubernetes:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mcstatic\": [\n        \"cpe:2.3:a:mcstatic_project:mcstatic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"md-to-pdf\": [\n        \"cpe:2.3:a:markdown_to_pdf_project:markdown_to_pdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mdx-mermaid\": [\n        \"cpe:2.3:a:mdx-mermaid_project:mdx-mermaid:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:mdx-mermaid_project:mdx-mermaid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"memjs\": [\n        \"cpe:2.3:a:memcachier:memjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mercurius\": [\n        \"cpe:2.3:a:mercurius_project:mercurius:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge\": [\n        \"cpe:2.3:a:merge_project:merge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge-change\": [\n        \"cpe:2.3:a:merge-change_project:merge-change:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge-deep\": [\n        \"cpe:2.3:a:merge-deep_project:merge-deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge-object\": [\n        \"cpe:2.3:a:merge-object_project:merge-object:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge-options\": [\n        \"cpe:2.3:a:merge-options_project:merge-options:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"merge-recursive\": [\n        \"cpe:2.3:a:umbraengineering:merge-recursive:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mermaid\": [\n        \"cpe:2.3:a:mermaid_project:mermaid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"metascraper\": [\n        \"cpe:2.3:a:metascrape_project:metascrape:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"method-override\": [\n        \"cpe:2.3:a:expressjs:method-override:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mfrserver\": [\n        \"cpe:2.3:a:mfrserver_project:mfrserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"micromatch\": [\n        \"cpe:2.3:a:jonschlinkert:micromatch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mime\": [\n        \"cpe:2.3:a:mime_project:mime:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"min-http-server\": [\n        \"cpe:2.3:a:min-http-server_project:min-http-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mind-elixir\": [\n        \"cpe:2.3:a:mind-elixir_project:mind-elixir:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"miniflare\": [\n        \"cpe:2.3:a:cloudflare:miniflare:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"minimatch\": [\n        \"cpe:2.3:a:minimatch_project:minimatch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mixin-deep\": [\n        \"cpe:2.3:a:mixin-deep_project:mixin-deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mixme\": [\n        \"cpe:2.3:a:adaltas:mixme:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mocha\": [\n        \"cpe:2.3:a:mochajs:mocha:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mock2easy\": [\n        \"cpe:2.3:a:mock2easy_project:mock2easy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mockery\": [\n        \"cpe:2.3:a:mockery_project:mockery:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mockjs\": [\n        \"cpe:2.3:a:mockjs:mock.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mockserve\": [\n        \"cpe:2.3:a:mockserve_project:mockserve:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"modern-async\": [\n        \"cpe:2.3:a:modern-async_project:modern-async:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"moment\": [\n        \"cpe:2.3:a:momentjs:moment:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mongo-express\": [\n        \"cpe:2.3:a:mongo-express_project:mongo-express:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mongodb-client-encryption\": [\n        \"cpe:2.3:a:mongodb:libmongocrypt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mongodb-instance\": [\n        \"cpe:2.3:a:mongodb-instance_project:mongodb-instance:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mongoose\": [\n        \"cpe:2.3:a:mongoosejs:mongoose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mongose\": [\n        \"cpe:2.3:a:mongose_project:mongose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"monorepo-build\": [\n        \"cpe:2.3:a:monorepo-build_project:monorepo-build:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mootools\": [\n        \"cpe:2.3:a:mootools_project:mootools:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"morgan\": [\n        \"cpe:2.3:a:morgan_project:morgan:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"morgan-json\": [\n        \"cpe:2.3:a:morgan-json_project:morgan-json:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"morris.js\": [\n        \"cpe:2.3:a:morris.js_project:morris.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mout\": [\n        \"cpe:2.3:a:moutjs:mout:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mpath\": [\n        \"cpe:2.3:a:mpath_project:mpath:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mqtt-packet\": [\n        \"cpe:2.3:a:mqtt-packet_project:mqtt-packet:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ms\": [\n        \"cpe:2.3:a:vercel:ms:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"msgpack\": [\n        \"cpe:2.3:a:msgpack:msgpack:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"msgpack5\": [\n        \"cpe:2.3:a:msgpack5_project:msgpack5:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mssql-node\": [\n        \"cpe:2.3:a:mssql-node_project:mssql-node:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mssql.js\": [\n        \"cpe:2.3:a:mssql.js_project:mssql.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mt7688-wiscan\": [\n        \"cpe:2.3:a:mt7688-wiscan_project:mt7688-wiscan:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"muhammara\": [\n        \"cpe:2.3:a:muhammara_project:muhammara:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"multi-ini\": [\n        \"cpe:2.3:a:multi-ini_project:multi-ini:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mversion\": [\n        \"cpe:2.3:a:mversion_project:mversion:*:*:*:*:*:*:*:*\"\n      ],\n      \"myprolyz\": [\n        \"cpe:2.3:a:myprolyz_project:myprolyz:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"myserver.alexcthomas18\": [\n        \"cpe:2.3:a:myserver.alexcthomas18_project:myserver.alexcthomas18:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mysql\": [\n        \"cpe:2.3:a:mysql_project:mysql:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:mysql_project:mysql:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:mysqljs:mysql:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mysql2\": [\n        \"cpe:2.3:a:sidorares:mysql2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mysqljs\": [\n        \"cpe:2.3:a:mysqljs_project:mysqljs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mystem\": [\n        \"cpe:2.3:a:mystem_project:mystem:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mystem-fix\": [\n        \"cpe:2.3:a:mystem-fix_project:mystem-fix:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mystem-wrapper\": [\n        \"cpe:2.3:a:mystem-wrapper_project:mystem-wrapper:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"mystem3\": [\n        \"cpe:2.3:a:mystem3_project:mystem3:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"n8n\": [\n        \"cpe:2.3:a:n8n:n8n:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nanoid\": [\n        \"cpe:2.3:a:nanoid_project:nanoid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"napi-postinstall\": [\n        \"cpe:2.3:a:un-ts:napi-postinstall:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"native-opencv\": [\n        \"cpe:2.3:a:native-opencv_project:native-opencv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nats\": [\n        \"cpe:2.3:a:linuxfoundation:nats.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nave\": [\n        \"cpe:2.3:a:isaacs:nave:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nbdime\": [\n        \"cpe:2.3:a:jupyter:nbdime:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nbdime-jupyterlab\": [\n        \"cpe:2.3:a:jupyter:nbdime-jupyterlab:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nconf\": [\n        \"cpe:2.3:a:nconf_project:nconf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nconf-toml\": [\n        \"cpe:2.3:a:nconf-toml_project:nconf-toml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nedb\": [\n        \"cpe:2.3:a:nedb_project:nedb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nested-object-assign\": [\n        \"cpe:2.3:a:getadigital:nested-object-assign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nestie\": [\n        \"cpe:2.3:a:nestie_project:nestie:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"netmask\": [\n        \"cpe:2.3:a:netmask_project:netmask:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"network\": [\n        \"cpe:2.3:a:forkhq:network:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"network-manager\": [\n        \"cpe:2.3:a:network-manager_project:network-manager:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"next\": [\n        \"cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"next-auth\": [\n        \"cpe:2.3:a:nextauth.js:next-auth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nis-utils\": [\n        \"cpe:2.3:a:nis-utils_project:nis-utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nitrado.js\": [\n        \"cpe:2.3:a:nitrado.js_project:nitrado.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"no-case\": [\n        \"cpe:2.3:a:no-case_project:no-case:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-air-sdk\": [\n        \"cpe:2.3:a:node-air-sdk_project:node-air-sdk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-bluetooth\": [\n        \"cpe:2.3:a:node-bluetooth_project:node-bluetooth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-bluetooth-serial-port\": [\n        \"cpe:2.3:a:node-bluetooth-serial-port_project:node-bluetooth-serial-port:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-browser\": [\n        \"cpe:2.3:a:node-browser_project:node-browser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-bsdiff-android\": [\n        \"cpe:2.3:a:node-bsdiff-android_project:node-bsdiff-android:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-cli\": [\n        \"cpe:2.3:a:node-cli_project:node-cli:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-df\": [\n        \"cpe:2.3:a:node-df_project:node-df:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-etsy-client\": [\n        \"cpe:2.3:a:node-etsy-client_project:node-etsy-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-extend\": [\n        \"cpe:2.3:a:node-extend_project:node-extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-fetch\": [\n        \"cpe:2.3:a:node-fetch_project:node-fetch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-forge\": [\n        \"cpe:2.3:a:digitalbazaar:forge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-ipc\": [\n        \"cpe:2.3:a:node-ipc_project:node-ipc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-jose\": [\n        \"cpe:2.3:a:cisco:node-jose:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-key-sender\": [\n        \"cpe:2.3:a:node-key-sender_project:node-key-sender:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-latex-pdf\": [\n        \"cpe:2.3:a:node-latex-pdf_project:node-latex-pdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-lmdb\": [\n        \"cpe:2.3:a:node-lmdb_project:node-lmdb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-macaddress\": [\n        \"cpe:2.3:a:node-macaddress_project:node-macaddress:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-mpv\": [\n        \"cpe:2.3:a:node-mpv_project:node-mpv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-mydomoathome\": [\n        \"cpe:2.3:a:domoticz:mydomoathome:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:romanes:mydomoathome:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-notifier\": [\n        \"cpe:2.3:a:node-notifier_project:node-notifier:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-oojs\": [\n        \"cpe:2.3:a:node-oojs_project:node-oojs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-opcua\": [\n        \"cpe:2.3:a:node-opcua_project:node-opcua:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-opencv\": [\n        \"cpe:2.3:a:node-opencv_project:node-opencv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-opensl\": [\n        \"cpe:2.3:a:node-opensl_project:node-opensl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-openssl\": [\n        \"cpe:2.3:a:node-openssl_project:node-openssl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-printer\": [\n        \"cpe:2.3:a:node-printer_project:node-printer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-ps\": [\n        \"cpe:2.3:a:node-ps_project:node-ps:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-red-contrib-huemagic\": [\n        \"cpe:2.3:a:dgtl:huemagic:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:node-red-contrib-huemagic_project:node-red-contrib-huemagic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-serialize\": [\n        \"cpe:2.3:a:node-serialize_project:node-serialize:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-server-forfront\": [\n        \"cpe:2.3:a:node-server-forfront_project:node-server-forfront:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-simple-router\": [\n        \"cpe:2.3:a:node-simple-router:node-simple-router:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-sqlite\": [\n        \"cpe:2.3:a:node-sqlite_project:node-sqlite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-srv\": [\n        \"cpe:2.3:a:node-srv_project:node-srv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-static\": [\n        \"cpe:2.3:a:node-static_project:node-static:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-stringbuilder\": [\n        \"cpe:2.3:a:magiclen:stringbuilder:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-thulac\": [\n        \"cpe:2.3:a:geohey:node-thulac:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-tkinter\": [\n        \"cpe:2.3:a:node-tkinter_project:node-tkinter:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-uuid\": [\n        \"cpe:2.3:a:node-uuid_project:node-uuid:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node-windows\": [\n        \"cpe:2.3:a:node-windows_project:node-windows:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"node.extend\": [\n        \"cpe:2.3:a:dreamerslab:node.extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodeaaaaa\": [\n        \"cpe:2.3:a:nodeaaaaa_project:nodeaaaaa:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodebb-plugin-blog-comments\": [\n        \"cpe:2.3:a:nodebb:blog_comments:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodecaffe\": [\n        \"cpe:2.3:a:nodecaffe_project:nodecaffe:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodee-utils\": [\n        \"cpe:2.3:a:nodee-utils_project:nodee-utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodefabric\": [\n        \"cpe:2.3:a:nodefabric_project:nodefabric:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodeffmpeg\": [\n        \"cpe:2.3:a:nodeffmpeg_project:nodeffmpeg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodemailer\": [\n        \"cpe:2.3:a:nodemailer:nodemailer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodemailer-js\": [\n        \"cpe:2.3:a:nodemailer-js_project:nodemailer-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodemailer.js\": [\n        \"cpe:2.3:a:nodemailer.js_project:nodemailer.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodemssql\": [\n        \"cpe:2.3:a:nodemssql_project:nodemssql:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodepdf\": [\n        \"cpe:2.3:a:nodepdf_project:nodepdf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"noderequest\": [\n        \"cpe:2.3:a:noderequest_project:noderequest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodesass\": [\n        \"cpe:2.3:a:nodesass_project:nodesass:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodeschnaps\": [\n        \"cpe:2.3:a:nodeschnaps_project:nodeschnaps:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodesqlite\": [\n        \"cpe:2.3:a:nodesqlite_project:nodesqlite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nodewebkit\": [\n        \"cpe:2.3:a:nodewebkit_project:nodewebkit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"normalize-url\": [\n        \"cpe:2.3:a:normalize-url_project:normalize-url:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"notevil\": [\n        \"cpe:2.3:a:notevil_project:notevil:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npm\": [\n        \"cpe:2.3:a:node_packaged_modules_project:node_packaged_modules:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npm-dependency-versions\": [\n        \"cpe:2.3:a:npm-dependency-versions_project:npm-dependency-versions:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npm-lockfile\": [\n        \"cpe:2.3:a:npm-lockfile_project:npm-lockfile:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npm-script-demo\": [\n        \"cpe:2.3:a:npm-script-demo_project:npm-script-demo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npm-test-sqlite3-trunk\": [\n        \"cpe:2.3:a:mapbox:npm-test-sqlite3-trunk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"npos-tesseract\": [\n        \"cpe:2.3:a:npos-tesseract_project:npos-tesseract:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nuxt-api-party\": [\n        \"cpe:2.3:a:johannschopplich:nuxt_api_party:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nw\": [\n        \"cpe:2.3:a:nwjs:nw:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"nw-with-arm\": [\n        \"cpe:2.3:a:nw-with-arm_project:nw-with-arm:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"oauth2-server\": [\n        \"cpe:2.3:a:oauth2-server_project:oauth2-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"object-collider\": [\n        \"cpe:2.3:a:fireblink:object-collider:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"object-extend\": [\n        \"cpe:2.3:a:object-extend_project:object-extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"object-path\": [\n        \"cpe:2.3:a:object-path_project:object-path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"objection\": [\n        \"cpe:2.3:a:objection_project:objection:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"octocat\": [\n        \"cpe:2.3:a:octocat_project:octocat:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"octokit\": [\n        \"cpe:2.3:a:octokit:octokit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"onion-oled-js\": [\n        \"cpe:2.3:a:onion-oled-js_project:onion-oled-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"op-browser\": [\n        \"cpe:2.3:a:op-browser_project:op-browser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"open-device\": [\n        \"cpe:2.3:a:open-device_project:open-device:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"open-graph\": [\n        \"cpe:2.3:a:open-graph_project:open-graph:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"opencv\": [\n        \"cpe:2.3:a:node-opencv_project:node-opencv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"opencv.js\": [\n        \"cpe:2.3:a:opencv.js_project:opencv.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openframe-ascii-image\": [\n        \"cpe:2.3:a:openframe-ascii-image_project:openframe-ascii-image:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openframe-glslviewer\": [\n        \"cpe:2.3:a:openframe-glslviewer_project:openframe-glslviewer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openframe-image\": [\n        \"cpe:2.3:a:openframe-image_project:openframe-image:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openlit\": [\n        \"cpe:2.3:a:openlit:openlit_software_development_kit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openssl.js\": [\n        \"cpe:2.3:a:openssl.js_project:openssl.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openzeppelin-eth\": [\n        \"cpe:2.3:a:openzeppelin:openzeppelin-eth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"openzeppelin-solidity\": [\n        \"cpe:2.3:a:openzeppelin:openzeppelin-solidity:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"operadriver\": [\n        \"cpe:2.3:a:cnpmjs:operadriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"orejime\": [\n        \"cpe:2.3:a:boscop:orejime:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"orval\": [\n        \"cpe:2.3:a:orval:orval:*:*:*:*:*:*:*:*\"\n      ],\n      \"osm-static-maps\": [\n        \"cpe:2.3:a:osm-static-maps_project:osm-static-maps:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"outray\": [\n        \"cpe:2.3:a:outray:outray:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"p4\": [\n        \"cpe:2.3:a:p4_project:p4:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pac-resolver\": [\n        \"cpe:2.3:a:pac-resolver_project:pac-resolver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pandora-doomsday\": [\n        \"cpe:2.3:a:pandora-doomsday_project:pandora-doomsday:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"parse-dashboard\": [\n        \"cpe:2.3:a:parseplatform:parse_dashboard:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"parse-link-header\": [\n        \"cpe:2.3:a:parse-link-header_project:parse-link-header:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"parse-server\": [\n        \"cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"parsejson\": [\n        \"cpe:2.3:a:parsejson_project:parsejson:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"passport\": [\n        \"cpe:2.3:a:passport_project:passport:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"passport-oauth2\": [\n        \"cpe:2.3:a:passportjs:passport-oauth2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"passport-saml\": [\n        \"cpe:2.3:a:passport-saml_project:passport-saml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"patchmerge\": [\n        \"cpe:2.3:a:patchmerge_project:patchmerge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"path-parse\": [\n        \"cpe:2.3:a:path-parse_project:path-parse:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pathval\": [\n        \"cpe:2.3:a:chaijis:pathval:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"payload\": [\n        \"cpe:2.3:a:payloadcms:payload:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"paypal-adaptive\": [\n        \"cpe:2.3:a:idea:paypal-adaptive:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"paypal-ipn\": [\n        \"cpe:2.3:a:paypal-ipn_project:paypal-ipn:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pdf-image\": [\n        \"cpe:2.3:a:pdf-image_project:pdf-image:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pdfinfojs\": [\n        \"cpe:2.3:a:pdfinfojs_project:pdfinfojs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"peiserver\": [\n        \"cpe:2.3:a:peiserver_project:peiserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pekeupload\": [\n        \"cpe:2.3:a:pekeupload_project:pekeupload:*:*:*:*:*:*:*:*\"\n      ],\n      \"pennyworth\": [\n        \"cpe:2.3:a:pennyworth_project:pennyworth:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pg\": [\n        \"cpe:2.3:a:node-postgres:pg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"phantomjs-cheniu\": [\n        \"cpe:2.3:a:phantomjs-cheniu_project:phantomjs-cheniu:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"phantomjs-seo\": [\n        \"cpe:2.3:a:phantomjs-seo_project:phantomjs-seo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"phpjs\": [\n        \"cpe:2.3:a:php.js_project:php.js:*:*:*:*:*:*:*:*\"\n      ],\n      \"picard\": [\n        \"cpe:2.3:a:picard_project:picard:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"picomatch\": [\n        \"cpe:2.3:a:jonschlinkert:picomatch:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"picotts\": [\n        \"cpe:2.3:a:picotts_project:picotts:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pixl-class\": [\n        \"cpe:2.3:a:pixlcore:pixl-class:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pk-app-wonderbox\": [\n        \"cpe:2.3:a:pk-app-wonderbox_project:pk-app-wonderbox:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pkg\": [\n        \"cpe:2.3:a:vercel:pkg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"plist\": [\n        \"cpe:2.3:a:plist_project:plist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"plupload\": [\n        \"cpe:2.3:a:tiny:plupload:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pm2\": [\n        \"cpe:2.3:a:keymetric:pm2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pm2-kafka\": [\n        \"cpe:2.3:a:pm2-kafka_project:pm2-kafka:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pngcrush-installer\": [\n        \"cpe:2.3:a:pngcrush-installer_project:pngcrush-installer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pnpm\": [\n        \"cpe:2.3:a:pnpm:pnpm:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pomelo-monitor\": [\n        \"cpe:2.3:a:netease:pomelo-monitor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pooledwebsocket\": [\n        \"cpe:2.3:a:pooledwebsocket_project:pooledwebsocket:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"port-killer\": [\n        \"cpe:2.3:a:port-killer_project:port-killer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"portkiller\": [\n        \"cpe:2.3:a:portkiller_project:portkiller:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"portprocesses\": [\n        \"cpe:2.3:a:portprocesses_project:portprocesses:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"posix\": [\n        \"cpe:2.3:a:posix_project:posix:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"post-loader\": [\n        \"cpe:2.3:a:post-loader_project:post-loader:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"postcss\": [\n        \"cpe:2.3:a:postcss:postcss:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pouchdb\": [\n        \"cpe:2.3:a:pouchdb:pouchdb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"prebuild-lwip\": [\n        \"cpe:2.3:a:prebuild-lwip_project:prebuild-lwip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"prince\": [\n        \"cpe:2.3:a:prince_project:prince:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"printf\": [\n        \"cpe:2.3:a:adaltas:printf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"prismjs\": [\n        \"cpe:2.3:a:prismjs:prism:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"private-ip\": [\n        \"cpe:2.3:a:private-ip_project:private-ip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"probot\": [\n        \"cpe:2.3:a:probot:probot:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"proctree\": [\n        \"cpe:2.3:a:proctree_project:proctree:*:*:*:*:*:*:*:*\"\n      ],\n      \"product-monitor\": [\n        \"cpe:2.3:a:product-monitor_project:product-monitor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"progressbar.js\": [\n        \"cpe:2.3:a:progressbar.js_project:progressbar.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"projen\": [\n        \"cpe:2.3:a:projen_project:projen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"promise-probe\": [\n        \"cpe:2.3:a:promise-probe_project:promise-probe:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"promisehelpers\": [\n        \"cpe:2.3:a:yola:promisehelpers:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"property-expr\": [\n        \"cpe:2.3:a:property-expr_project:property-expr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"protobufjs\": [\n        \"cpe:2.3:a:protobufjs_project:protobufjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"proxy\": [\n        \"cpe:2.3:a:proxy_project:proxy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"proxy.js\": [\n        \"cpe:2.3:a:proxy.js_project:proxy.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ps\": [\n        \"cpe:2.3:a:umbraengineering:ps:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ps-kill\": [\n        \"cpe:2.3:a:ps-kill_project:ps-kill:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ps-visitor\": [\n        \"cpe:2.3:a:ps-visitor_project:ps-visitor:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"psnode\": [\n        \"cpe:2.3:a:psnode_project:psnode:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"public\": [\n        \"cpe:2.3:a:public.js_project:public.js:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:public_project:public:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pug\": [\n        \"cpe:2.3:a:pugjs:pug:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pug-code-gen\": [\n        \"cpe:2.3:a:pugjs:pug-code-gen:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pullit\": [\n        \"cpe:2.3:a:pull_it_project:pull_it:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"pulverizr\": [\n        \"cpe:2.3:a:pulverizr_project:pulverizr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"push-dir\": [\n        \"cpe:2.3:a:push-dir_project:push-dir:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"putil-merge\": [\n        \"cpe:2.3:a:putil-merge_project:putil-merge:*:*:*:*:*:*:*:*\"\n      ],\n      \"pytservce\": [\n        \"cpe:2.3:a:pytservce_project:pytservce:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"qbs\": [\n        \"cpe:2.3:a:qbs_project:qbs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"qinserve\": [\n        \"cpe:2.3:a:qinserve_project:qinserve:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"qs\": [\n        \"cpe:2.3:a:qs_project:qs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"query-mysql\": [\n        \"cpe:2.3:a:query-mysql_project:query-mysql:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"quickserver\": [\n        \"cpe:2.3:a:quickserver_project:quickserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"quill-mention\": [\n        \"cpe:2.3:a:quill-mention:quill_mention:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ra-ui-materialui\": [\n        \"cpe:2.3:a:marmelab:ra-ui-materialui:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"randomatic\": [\n        \"cpe:2.3:a:randomatic_project:randomatic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"raneto\": [\n        \"cpe:2.3:a:raneto_project:raneto:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rdf-graph-array\": [\n        \"cpe:2.3:a:rdf-graph-array_project:rdf-graph-array:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"react-adal\": [\n        \"cpe:2.3:a:react-adal_project:react-adal:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"react-draft-wysiwyg\": [\n        \"cpe:2.3:a:react_draft_wysiwyg_project:react_draft_wysiwyg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"react-native-baidu-voice-synthesizer\": [\n        \"cpe:2.3:a:react-native-baidu-voice-synthesizer_project:react-native-baidu-voice-synthesizer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"react-native-mmkv\": [\n        \"cpe:2.3:a:mrousavy:react-native-mmkv:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"react-router\": [\n        \"cpe:2.3:a:shopify:react-router:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"realms-shim\": [\n        \"cpe:2.3:a:agoric:realms-shim:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"record-like-deep-assign\": [\n        \"cpe:2.3:a:record-like-deep-assign_project:record-like-deep-assign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"redis-srvr\": [\n        \"cpe:2.3:a:redis-srvr_project:redis-srvr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"reduce-css-calc\": [\n        \"cpe:2.3:a:reduce-css-calc_project:reduce-css-calc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"reecerver\": [\n        \"cpe:2.3:a:reecerver_project:reecerver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"reg-keygen-git-hash-plugin\": [\n        \"cpe:2.3:a:reg-keygen-git-hash_project:reg-keygen-git-hash:*:*:*:*:*:reg-suit:*:*\"\n      ],\n      \"regexfn\": [\n        \"cpe:2.3:a:regexfn_project:regexfn:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"remark-html\": [\n        \"cpe:2.3:a:remark:remark-html:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"remarkable\": [\n        \"cpe:2.3:a:remarkable_project:remarkable:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"repo-git-downloader\": [\n        \"cpe:2.3:a:repo-git-downloader_project:repo-git-downloader:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"request\": [\n        \"cpe:2.3:a:request_project:request:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"resolve-path\": [\n        \"cpe:2.3:a:resolve-path_project:resolve-path:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"resourcehacker\": [\n        \"cpe:2.3:a:resourcehacker_project:resourcehacker:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"restafary\": [\n        \"cpe:2.3:a:restafary_project:restafary:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"restify-paginate\": [\n        \"cpe:2.3:a:restify-paginate_project:restify-paginate:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rimraf\": [\n        \"cpe:2.3:a:isaacs:rimraf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"riot-compiler\": [\n        \"cpe:2.3:a:riot.js:riot-compiler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ritp\": [\n        \"cpe:2.3:a:ritp_project:ritp:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"roar-pidusage\": [\n        \"cpe:2.3:a:roar-pidusage_project:roar-pidusage:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"robot-js\": [\n        \"cpe:2.3:a:getrobot:robot-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rollup-plugin-dev-server\": [\n        \"cpe:2.3:a:rollup-plugin-dev-server_project:rollup-plugin-dev-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rollup-plugin-serve\": [\n        \"cpe:2.3:a:rollup-plugin-serve_project:rollup-plugin-serve:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rollup-plugin-server\": [\n        \"cpe:2.3:a:rollup-plugin-server_project:rollup-plugin-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rpi-gpio\": [\n        \"cpe:2.3:a:rpi_project:rpi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rs-brightcove\": [\n        \"cpe:2.3:a:rs-brightcove_project:rs-brightcove:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rsshub\": [\n        \"cpe:2.3:a:rsshub:rsshub:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"rtcmulticonnection-client\": [\n        \"cpe:2.3:a:rtcmulticonnection-client_project:rtcmulticonnection-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"s3-uploader\": [\n        \"cpe:2.3:a:s3-uploader_project:s3-uploader:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"safe-eval\": [\n        \"cpe:2.3:a:safe-eval_project:safe-eval:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"safe-flat\": [\n        \"cpe:2.3:a:safe-flat_project:safe-flat:*:*:*:*:*:*:*:*\"\n      ],\n      \"safe-object2\": [\n        \"cpe:2.3:a:safe-object2_project:safe-object2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"safer-eval\": [\n        \"cpe:2.3:a:safer-eval_project:safer-eval:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"safetydance\": [\n        \"cpe:2.3:a:safetydance_project:safetydance:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sails\": [\n        \"cpe:2.3:a:sailsjs:sails:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"samba-client\": [\n        \"cpe:2.3:a:samba-client_project:samba-client:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sanitize-html\": [\n        \"cpe:2.3:a:apostrophecms:sanitize-html:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:punkave:sanitize-html:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"save-server\": [\n        \"cpe:2.3:a:save-server_project:save-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scaffold-helper\": [\n        \"cpe:2.3:a:scaffold-helper_project:scaffold-helper:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scalajs-standalone-bin\": [\n        \"cpe:2.3:a:scalajs-standalone-bin_project:scalajs-standalone-bin:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scniro-validator\": [\n        \"cpe:2.3:a:scniro-validator_project:scniro-validator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scott-blanch-weather-app\": [\n        \"cpe:2.3:a:scott-blanch-weather-app_project:scott-blanch-weather-app:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scratch-svg-renderer\": [\n        \"cpe:2.3:a:mit:scratch-svg-renderer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"script-manager\": [\n        \"cpe:2.3:a:script-manager_project:script-manager:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"scss-tokenizer\": [\n        \"cpe:2.3:a:scss-tokenizer_project:scss-tokenizer:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sds\": [\n        \"cpe:2.3:a:sds_project:sds:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"section2.madisonjbrooks12\": [\n        \"cpe:2.3:a:section2.madisonjbrooks12_project:section2.madisonjbrooks12:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"secure-compare\": [\n        \"cpe:2.3:a:secure-compare_project:secure-compare:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"seeftl\": [\n        \"cpe:2.3:a:seeftl_project:seeftl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"selectize-plugin-a11y\": [\n        \"cpe:2.3:a:selectize-plugin-a11y_project:selectize-plugin-a11y:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"selenium-chromedriver\": [\n        \"cpe:2.3:a:selenium-chromedriver_project:selenium-chromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"selenium-standalone-painful\": [\n        \"cpe:2.3:a:selenium-standalone-painful_project:selenium-standalone-painful:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"selenium-wrapper\": [\n        \"cpe:2.3:a:selenium-wrapper_project:selenium-wrapper:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"semver\": [\n        \"cpe:2.3:a:npmjs:semver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"semver-regex\": [\n        \"cpe:2.3:a:semver-regex_project:semver-regex:*:*:*:*:*:*:*:*\"\n      ],\n      \"semver-tags\": [\n        \"cpe:2.3:a:semver-tags_project:semver-tags:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sencisho\": [\n        \"cpe:2.3:a:sencisho_project:sencisho:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"send\": [\n        \"cpe:2.3:a:send_project:send:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sequelize\": [\n        \"cpe:2.3:a:sequelizejs:sequelize:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serc.js\": [\n        \"cpe:2.3:a:serc.js_project:serc.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serialize-javascript\": [\n        \"cpe:2.3:a:verizon:serialize-javascript:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serialize-to-js\": [\n        \"cpe:2.3:a:serialize-to-js_project:serialize-to-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serve-here.js\": [\n        \"cpe:2.3:a:serve-here.js_project:serve-here.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serve-lite\": [\n        \"cpe:2.3:a:serve-lite_project:serve-lite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serve46\": [\n        \"cpe:2.3:a:serve46_project:serve46:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverabc\": [\n        \"cpe:2.3:a:serverabc_project:serverabc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverhuwenhui\": [\n        \"cpe:2.3:a:serverhuwenhui_project:serverhuwenhui:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverliujiayi1\": [\n        \"cpe:2.3:a:serverliujiayi1_project:serverliujiayi1:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverlyr\": [\n        \"cpe:2.3:a:serverlyr_project:serverlyr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverwg\": [\n        \"cpe:2.3:a:serverwg_project:serverwg:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverwzl\": [\n        \"cpe:2.3:a:serverwzl_project:serverwzl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverxxx\": [\n        \"cpe:2.3:a:serverxxx_project:serverxxx:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serveryaozeyan\": [\n        \"cpe:2.3:a:serveryaozeyan_project:serveryaozeyan:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serveryztyzt\": [\n        \"cpe:2.3:a:serveryztyzt_project:serveryztyzt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"serverzyy\": [\n        \"cpe:2.3:a:serverzyy_project:serverzyy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"servey\": [\n        \"cpe:2.3:a:servey_project:servey:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ses\": [\n        \"cpe:2.3:a:agoric:ses:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"set-object-value\": [\n        \"cpe:2.3:a:set-object-value_project:set-object-value:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"set-or-get\": [\n        \"cpe:2.3:a:set-or-get_project:set-or-get:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"set-value\": [\n        \"cpe:2.3:a:set-value_project:set-value:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sexstatic\": [\n        \"cpe:2.3:a:sexstatic_project:sexstatic:*:*:*:*:*:*:*:*\"\n      ],\n      \"sey\": [\n        \"cpe:2.3:a:sey_project:sey:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sfml\": [\n        \"cpe:2.3:a:sfml_project:sfml:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sgqserve\": [\n        \"cpe:2.3:a:sgqserve_project:sgqserve:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shadowsock\": [\n        \"cpe:2.3:a:shadowsock_project:shadowsock:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sharp\": [\n        \"cpe:2.3:a:sharp_project:sharp:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shell-quote\": [\n        \"cpe:2.3:a:shell-quote_project:shell-quote:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shenliru\": [\n        \"cpe:2.3:a:shenliru_project:shenliru:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shescape\": [\n        \"cpe:2.3:a:shescape_project:shescape:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shit-server\": [\n        \"cpe:2.3:a:shit-server_project:shit-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"shout\": [\n        \"cpe:2.3:a:shout_project:shout:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sillytavern\": [\n        \"cpe:2.3:a:sillytavern:sillytavern:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"simple-get\": [\n        \"cpe:2.3:a:simple-get_project:simple-get:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"simple-git\": [\n        \"cpe:2.3:a:simple-git_project:simple-git:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"simple-markdown\": [\n        \"cpe:2.3:a:khanacademy:simple-markdown:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"simple-npm-registry\": [\n        \"cpe:2.3:a:simple-npm-registry_project:simple-npm-registry:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"simple-plist\": [\n        \"cpe:2.3:a:simple-plist_project:simple-plist:*:*:*:*:*:*:*:*\"\n      ],\n      \"simplehttpserver\": [\n        \"cpe:2.3:a:simplehttpserver_project:simplehttpserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"skywalking-backend-js\": [\n        \"cpe:2.3:a:apache:skywalking:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:apache:skywalking_nodejs_agent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"slashify\": [\n        \"cpe:2.3:a:google:slashify:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"slim-select\": [\n        \"cpe:2.3:a:slimselectjs:slim_select:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"slimerjs-edge\": [\n        \"cpe:2.3:a:slimerjs-edge_project:slimerjs-edge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"slug\": [\n        \"cpe:2.3:a:slug_project:slug:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sly07\": [\n        \"cpe:2.3:a:sly07_project:sly07:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"smb\": [\n        \"cpe:2.3:a:smb_project:smb:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"soci\": [\n        \"cpe:2.3:a:soci_project:soci:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"socket.io\": [\n        \"cpe:2.3:a:socket:socket.io:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"socket.io-file\": [\n        \"cpe:2.3:a:socket.io-file_project:socket.io-file:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"socket.io-parser\": [\n        \"cpe:2.3:a:socket:socket.io-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sockjs\": [\n        \"cpe:2.3:a:sockjs_project:sockjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"split-html-to-chars\": [\n        \"cpe:2.3:a:split-html-to-chars_project:split-html-to-chars:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"spritesheet-js\": [\n        \"cpe:2.3:a:spritesheet-js_project:spritesheet-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sqlite.js\": [\n        \"cpe:2.3:a:sqlite.js_project:sqlite.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sqlite3\": [\n        \"cpe:2.3:a:ghost:sqlite3:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sqliter\": [\n        \"cpe:2.3:a:sqliter_project:sqliter:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sqlserver\": [\n        \"cpe:2.3:a:sqlserver_project:sqlserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"squirrelly\": [\n        \"cpe:2.3:a:squirrelly:squirrelly:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ssh2\": [\n        \"cpe:2.3:a:ssh2_project:ssh2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sshpk\": [\n        \"cpe:2.3:a:joyent:sshpk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ssl-utils\": [\n        \"cpe:2.3:a:ssl-utils_project:ssl-utils:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sspa\": [\n        \"cpe:2.3:a:sspa_project:sspa:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ssrf-agent\": [\n        \"cpe:2.3:a:ssrf-agent_project:ssrf-agent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ssri\": [\n        \"cpe:2.3:a:ssri_project:ssri:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"st\": [\n        \"cpe:2.3:a:st_project:st:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"startserver\": [\n        \"cpe:2.3:a:startserver_project:startserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"static-dev-server\": [\n        \"cpe:2.3:a:static-dev-server_project:static-dev-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"static-eval\": [\n        \"cpe:2.3:a:static-eval_project:static-eval:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"static-html-server\": [\n        \"cpe:2.3:a:static-html-server_project:static-html-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"static-resource-server\": [\n        \"cpe:2.3:a:static-resource-server_project:static-resource-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"static-server\": [\n        \"cpe:2.3:a:nbluis:static-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"statichttpserver\": [\n        \"cpe:2.3:a:statichttpserver_project:statichttpserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"statics-server\": [\n        \"cpe:2.3:a:statics-server_project:statics-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"stattic\": [\n        \"cpe:2.3:a:stattic_project:stattic:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"stimulsoft-dashboards-js\": [\n        \"cpe:2.3:a:stimulsoft:dashboard.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"storybook\": [\n        \"cpe:2.3:a:storybook:storybook:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"strapi\": [\n        \"cpe:2.3:a:strapi:strapi:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:strapi:strapi:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"strider-sauce\": [\n        \"cpe:2.3:a:strider-sauce_project:strider-sauce:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"string\": [\n        \"cpe:2.3:a:string_project:string:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"string-kit\": [\n        \"cpe:2.3:a:string_kit_project:string_kit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"striptags\": [\n        \"cpe:2.3:a:striptags_project:striptags:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"summit\": [\n        \"cpe:2.3:a:summit_project:summit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"superagent\": [\n        \"cpe:2.3:a:superagent_project:superagent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"superjson\": [\n        \"cpe:2.3:a:blitzjs:superjson:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"susu-sum\": [\n        \"cpe:2.3:a:susu-sum_project:susu-sum:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"svelecte\": [\n        \"cpe:2.3:a:mskocik:svelecte:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"svelte\": [\n        \"cpe:2.3:a:svelte:svelte:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"swagger-ui-dist\": [\n        \"cpe:2.3:a:smartbear:swagger-ui-dist:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"sync-exec\": [\n        \"cpe:2.3:a:sync-exec_project:sync-exec:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"synckit\": [\n        \"cpe:2.3:a:un-ts:synckit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"systeminformation\": [\n        \"cpe:2.3:a:systeminformation:systeminformation:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"taffy\": [\n        \"cpe:2.3:a:taffydb:taffy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"takeapeek\": [\n        \"cpe:2.3:a:takeapeek_project:takeapeek:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:takeapeek_project:takeapeek:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tar\": [\n        \"cpe:2.3:a:isaacs:tar:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:tar_project:tar:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"teddy\": [\n        \"cpe:2.3:a:teddy_project:teddy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tencent-server\": [\n        \"cpe:2.3:a:tencent-server_project:tencent-server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"terminal-kit\": [\n        \"cpe:2.3:a:terminal-kit_project:terminal-kit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"terser\": [\n        \"cpe:2.3:a:terser:terser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"that-value\": [\n        \"cpe:2.3:a:that-value_project:that-value:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"three\": [\n        \"cpe:2.3:a:three_project:three:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tianma-static\": [\n        \"cpe:2.3:a:tianma-static_project:tianma-static:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"timespan\": [\n        \"cpe:2.3:a:timespan_project:timespan:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tiny-conf\": [\n        \"cpe:2.3:a:tiny-conf_project:tiny-conf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tiny-csrf\": [\n        \"cpe:2.3:a:tiny-csrf_project:tiny-csrf:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tiny-http\": [\n        \"cpe:2.3:a:tiny-http_project:tiny-http:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tinyserver2\": [\n        \"cpe:2.3:a:tinyserver2_project:tinyserver2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tmock\": [\n        \"cpe:2.3:a:tmock_project:tmock:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tmpl\": [\n        \"cpe:2.3:a:tmpl_project:tmpl:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"todo-regex\": [\n        \"cpe:2.3:a:todo-regex_project:todo-regex:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"toggle-array\": [\n        \"cpe:2.3:a:jonschlinkert:toggle-array:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tomita\": [\n        \"cpe:2.3:a:tomita_project:tomita:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tomita-parser\": [\n        \"cpe:2.3:a:yandex:tomita-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"total.js\": [\n        \"cpe:2.3:a:totaljs:total.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"total4\": [\n        \"cpe:2.3:a:totaljs:total4:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tough-cookie\": [\n        \"cpe:2.3:a:salesforce:tough-cookie:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"traceroute\": [\n        \"cpe:2.3:a:traceroute_project:traceroute:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"trailing-slash\": [\n        \"cpe:2.3:a:trailing-slash_project:trailing-slash:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"transpile\": [\n        \"cpe:2.3:a:transpile_project:transpile:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tree-kill\": [\n        \"cpe:2.3:a:tree-kill_project:tree-kill:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"treekill\": [\n        \"cpe:2.3:a:treekill_project:treekill:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"trim-newlines\": [\n        \"cpe:2.3:a:trim-newlines_project:trim-newlines:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"trim-off-newlines\": [\n        \"cpe:2.3:a:trim-off-newlines_project:trim-off-newlines:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ts-deepmerge\": [\n        \"cpe:2.3:a:typescript_deep_merge_project:typescript_deep_merge:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ts-nodash\": [\n        \"cpe:2.3:a:ts-nodash_project:ts-nodash:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ts-process-promises\": [\n        \"cpe:2.3:a:ts-process-promises_project:ts-process-promises:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"tsup\": [\n        \"cpe:2.3:a:egoist:tsup:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ua-parser\": [\n        \"cpe:2.3:a:ua-parser_project:ua-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ua-parser-js\": [\n        \"cpe:2.3:a:ua-parser-js_project:ua-parser-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uap-core\": [\n        \"cpe:2.3:a:uap-core_project:uap-core:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uekw1511server\": [\n        \"cpe:2.3:a:uekw1511server_project:uekw1511server:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uglify-js\": [\n        \"cpe:2.3:a:uglifyjs_project:uglifyjs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"umount\": [\n        \"cpe:2.3:a:umount_project:umount:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"undefsafe\": [\n        \"cpe:2.3:a:undefsafe_project:undefsafe:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"underscore\": [\n        \"cpe:2.3:a:underscorejs:underscore:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"underscore-99xp\": [\n        \"cpe:2.3:a:underscore-99xp_project:underscore-99xp:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"underscore.deep\": [\n        \"cpe:2.3:a:clever:underscore.deep:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"undici\": [\n        \"cpe:2.3:a:nodejs:undici:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ungit\": [\n        \"cpe:2.3:a:ungit_project:ungit:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"unicode\": [\n        \"cpe:2.3:a:unicode_project:unicode:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"unicode-json\": [\n        \"cpe:2.3:a:unicode:unicode-json:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"unicorn-list\": [\n        \"cpe:2.3:a:unicorn-list_project:unicorn-list:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"unzipper\": [\n        \"cpe:2.3:a:unzipper_project:unzipper:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uppy\": [\n        \"cpe:2.3:a:transloadit:uppy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uri-js\": [\n        \"cpe:2.3:a:garycourt:uri-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uri-template-lite\": [\n        \"cpe:2.3:a:litejs:uri-template-lite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"urijs\": [\n        \"cpe:2.3:a:urijs_project:urijs:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"url-js\": [\n        \"cpe:2.3:a:url-js_project:url-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"url-parse\": [\n        \"cpe:2.3:a:url-parse_project:url-parse:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"urlite\": [\n        \"cpe:2.3:a:alanclarke:urlite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"useragent\": [\n        \"cpe:2.3:a:useragent_project:useragent:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"utahcityfinder\": [\n        \"cpe:2.3:a:utahcityfinder_project:utahcityfinder:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"utilities\": [\n        \"cpe:2.3:a:utilities_project:utilities:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"utils-extend\": [\n        \"cpe:2.3:a:utils-extend_project:utils-extend:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uv-tj-demo\": [\n        \"cpe:2.3:a:uv-tj-demo_project:uv-tj-demo:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"uws\": [\n        \"cpe:2.3:a:uws_project:uws:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"valib\": [\n        \"cpe:2.3:a:sideralis:valib.js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"validate-color\": [\n        \"cpe:2.3:a:validate_color_project:validate_color:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"validate-data\": [\n        \"cpe:2.3:a:validate_data_project:validate_data:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"validator\": [\n        \"cpe:2.3:a:validator_project:validator:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vega\": [\n        \"cpe:2.3:a:vega_project:vega:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vega-functions\": [\n        \"cpe:2.3:a:vega-functions_project:vega-functions:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vite\": [\n        \"cpe:2.3:a:vitejs:vite:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vm2\": [\n        \"cpe:2.3:a:vm2_project:vm2:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vmd\": [\n        \"cpe:2.3:a:vmd_project:vmd:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"vuelidate\": [\n        \"cpe:2.3:a:vuelidate_project:vuelidate:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:vuelidate_project:vuelidate:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"w-zip\": [\n        \"cpe:2.3:a:w-zip_project:w-zip:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wangguojing123\": [\n        \"cpe:2.3:a:wanggoujing123_project:wanggoujing123:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wasdk\": [\n        \"cpe:2.3:a:wasdk_project:wasdk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"waterline-sequel\": [\n        \"cpe:2.3:a:balderdash:waterline-sequel:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wc-cmd\": [\n        \"cpe:2.3:a:wc-cmd_project:wc-cmd:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"weather.swlyons\": [\n        \"cpe:2.3:a:weather.swlyons_project:weather.swlyons:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webcrack\": [\n        \"cpe:2.3:a:j4k0xb:webcrack:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webdriver-launcher\": [\n        \"cpe:2.3:a:webdriver-launcher_project:webdriver-launcher:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webdrvr\": [\n        \"cpe:2.3:a:webdrvr_project:webdrvr:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webpack\": [\n        \"cpe:2.3:a:webpack.js:webpack:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webpack-subresource-integrity\": [\n        \"cpe:2.3:a:webpack-subresource-integrity_project:webpack-subresource-integrity:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"webrtc-native\": [\n        \"cpe:2.3:a:webrtc:webrtc-native:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"websocket-extensions\": [\n        \"cpe:2.3:a:websocket-extensions_project:websocket-extensions:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"welcomyzt\": [\n        \"cpe:2.3:a:welcomyzt_project:welcomyzt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wffserve\": [\n        \"cpe:2.3:a:wffserve_project:wffserve:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"whatsapp-api-js\": [\n        \"cpe:2.3:a:secreto31126:whatsapp-api-js:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"whereis\": [\n        \"cpe:2.3:a:whereis_project:whereis:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"whispercast\": [\n        \"cpe:2.3:a:whispercast_project:whispercast:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"whois\": [\n        \"cpe:2.3:a:furqansofware:node_whois:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wifey\": [\n        \"cpe:2.3:a:wifey_project:wifey:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wifiscanner\": [\n        \"cpe:2.3:a:thingssdk:wifiscanner:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wincred\": [\n        \"cpe:2.3:a:wincred_project:wincred:*:*:*:*:*:*:*:*\"\n      ],\n      \"wind-mvc\": [\n        \"cpe:2.3:a:wind-mvc_project:wind-mvc:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-build-tools\": [\n        \"cpe:2.3:a:windows-build-tools_project:windows-build-tools:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-iedriver\": [\n        \"cpe:2.3:a:windows-iedriver_project:windows-iedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-latestchromedriver\": [\n        \"cpe:2.3:a:windows-latestchromedriver_project:windows-latestchromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-selenium-chromedriver\": [\n        \"cpe:2.3:a:windows-selenium-chromedriver_project:windows-selenium-chromedriver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-seleniumjar\": [\n        \"cpe:2.3:a:windows-seleniumjar_project:windows-seleniumjar:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"windows-seleniumjar-mirror\": [\n        \"cpe:2.3:a:windows-seleniumjar-mirror_project:windows-seleniumjar-mirror:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wintiwebdev\": [\n        \"cpe:2.3:a:wintiwebdev_project:wintiwebdev:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wixtoolset\": [\n        \"cpe:2.3:a:node-wixtoolset_project:node-wixtoolset:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:wixtoolset_project:wixtoolset:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"word-wrap\": [\n        \"cpe:2.3:a:word-wrap_project:word-wrap:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"worksmith\": [\n        \"cpe:2.3:a:guidesmiths:worksmith:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"wrangler\": [\n        \"cpe:2.3:a:cloudflare:wrangler:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"ws\": [\n        \"cpe:2.3:a:ws_project:ws:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"x-assign\": [\n        \"cpe:2.3:a:binaryops:x-assign:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"x-data-spreadsheet\": [\n        \"cpe:2.3:a:x-data-spreadsheet_project:x-data-spreadsheet:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"xd-testing\": [\n        \"cpe:2.3:a:xd-testing_project:xd-testing:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"xmldom\": [\n        \"cpe:2.3:a:xmldom_project:xmldom:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"xmlhttprequest\": [\n        \"cpe:2.3:a:xmlhttprequest_project:xmlhttprequest:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"xtalk\": [\n        \"cpe:2.3:a:xtalk_project:xtalk:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"y18n\": [\n        \"cpe:2.3:a:y18n_project:y18n:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"yargs-parser\": [\n        \"cpe:2.3:a:yargs:yargs-parser:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"yttivy\": [\n        \"cpe:2.3:a:yttivy_project:yttivy:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"yyooopack\": [\n        \"cpe:2.3:a:yyooopack_project:yyooopack:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"yzt\": [\n        \"cpe:2.3:a:yzt_project:yzt:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"zjjserver\": [\n        \"cpe:2.3:a:zjjserver_project:zjjserver:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"zwserver\": [\n        \"cpe:2.3:a:zwserver_project:zwserver:*:*:*:*:*:node.js:*:*\"\n      ]\n    },\n    \"php_composer\": {\n      \"alfnru/password_recovery\": [\n        \"cpe:2.3:a:password_recovery_project:password_recovery:*:*:*:*:*:roundcube:*:*\"\n      ],\n      \"couleurcitron/tarteaucitron-wp\": [\n        \"cpe:2.3:a:couleurcitron:tarteaucitron-wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dev-lancer/minecraft-motd-parser\": [\n        \"cpe:2.3:a:jgniecki:minecraft_motd_parser:*:*:*:*:*:*:*:*\"\n      ],\n      \"fineuploader/php-traditional-server\": [\n        \"cpe:2.3:a:php-traditional-server_project:php-traditional-server:*:*:*:*:*:*:*:*\"\n      ],\n      \"frappant/frp-form-answers\": [\n        \"cpe:2.3:a:frappant:forms_export:*:*:*:*:*:typo3:*:*\"\n      ],\n      \"joomla/session\": [\n        \"cpe:2.3:a:joomla:session:*:*:*:*:*:*:*:*\"\n      ],\n      \"mustache/mustache\": [\n        \"cpe:2.3:a:mustache_project:mustache:*:*:*:*:*:php:*:*\"\n      ],\n      \"nitsan/ns-backup\": [\n        \"cpe:2.3:a:nitsantech:ns-backup:*:*:*:*:*:typo3:*:*\"\n      ],\n      \"phpfastcache/phpfastcache\": [\n        \"cpe:2.3:a:phpfastcache:phpfastcache:*:*:*:*:*:*:*:*\"\n      ],\n      \"shopware/shopware\": [\n        \"cpe:2.3:a:shopware:shopware:*:*:*:*:*:*:*:*\"\n      ],\n      \"typo3/html-sanitizer\": [\n        \"cpe:2.3:a:typo3:html_sanitizer:*:*:*:*:*:*:*:*\"\n      ],\n      \"typo3/phar-stream-wrapper\": [\n        \"cpe:2.3:a:typo3:pharstreamwrapper:*:*:*:*:*:*:*:*\"\n      ],\n      \"yab/quarx\": [\n        \"cpe:2.3:a:quarx_cms_project:quarx_cms:*:*:*:*:*:*:*:*\"\n      ]\n    },\n    \"php_pear\": {\n      \"Archive_Tar\": [\n        \"cpe:2.3:a:php:archive_tar:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:php:pear_archive_tar:*:*:*:*:*:*:*:*\"\n      ],\n      \"HTML_AJAX\": [\n        \"cpe:2.3:a:pear:html_ajax:*:*:*:*:*:*:*:*\"\n      ],\n      \"HTML_QuickForm\": [\n        \"cpe:2.3:a:html_quickform_project:html_quickform:*:*:*:*:*:*:*:*\"\n      ],\n      \"PEAR\": [\n        \"cpe:2.3:a:php:pear:*:*:*:*:*:*:*:*\"\n      ],\n      \"XML_RPC\": [\n        \"cpe:2.3:a:php:xml_rpc:*:*:*:*:*:pear:*:*\"\n      ],\n      \"pearweb\": [\n        \"cpe:2.3:a:pear:pearweb:*:*:*:*:*:*:*:*\"\n      ]\n    },\n    \"php_pecl\": {\n      \"imagick\": [\n        \"cpe:2.3:a:php:imagick:*:*:*:*:*:*:*:*\"\n      ],\n      \"memcached\": [\n        \"cpe:2.3:a:php:memcached:*:*:*:*:*:*:*:*\"\n      ],\n      \"pecl_http\": [\n        \"cpe:2.3:a:php:pecl_http:*:*:*:*:*:*:*:*\"\n      ],\n      \"xhprof\": [\n        \"cpe:2.3:a:php:xhprof:*:*:*:*:*:*:*:*\"\n      ]\n    },\n    \"pypi\": {\n      \"0.0.1\": [\n        \"cpe:2.3:a:pypi:pypi:*:*:*:*:*:*:*:*\"\n      ],\n      \"AAmiles\": [\n        \"cpe:2.3:a:pypi:aamiles:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:pypi:aamiles:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"Beaker\": [\n        \"cpe:2.3:a:beakerbrowser:beaker:*:*:*:*:*:python:*:*\"\n      ],\n      \"Flask\": [\n        \"cpe:2.3:a:palletsprojects:flask:*:*:*:*:*:*:*:*\"\n      ],\n      \"Flask-Caching\": [\n        \"cpe:2.3:a:flask-caching_project:flask-caching:*:*:*:*:*:flask:*:*\"\n      ],\n      \"Flask-Security-Too\": [\n        \"cpe:2.3:a:flask-security-too_project:flask-security-too:*:*:*:*:*:*:*:*\"\n      ],\n      \"GitPython\": [\n        \"cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:python:*:*\"\n      ],\n      \"MechanicalSoup\": [\n        \"cpe:2.3:a:mechanicalsoup_project:mechanicalsoup:*:*:*:*:*:python:*:*\"\n      ],\n      \"Mezzanine\": [\n        \"cpe:2.3:a:jupo:mezzanine:*:*:*:*:*:*:*:*\"\n      ],\n      \"Pillow\": [\n        \"cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*\"\n      ],\n      \"PyAMF\": [\n        \"cpe:2.3:a:pyamf:pyamf:*:*:*:*:*:*:*:*\"\n      ],\n      \"PyPDF2\": [\n        \"cpe:2.3:a:pypdf2_project:pypdf2:*:*:*:*:*:*:*:*\"\n      ],\n      \"PyXML\": [\n        \"cpe:2.3:a:python:pyxml:*:*:*:*:*:*:*:*\"\n      ],\n      \"Red-Dashboard\": [\n        \"cpe:2.3:a:cogboard:red-dashboard:*:*:*:*:*:*:*:*\"\n      ],\n      \"SilverCity\": [\n        \"cpe:2.3:a:silvercity_project:silvercity:*:*:*:*:*:*:*:*\"\n      ],\n      \"TGCaptcha\": [\n        \"cpe:2.3:a:python:tgcaptcha2:*:*:*:*:*:*:*:*\"\n      ],\n      \"XML2Dict\": [\n        \"cpe:2.3:a:xml2dict_project:xml2dict:*:*:*:*:*:python:*:*\"\n      ],\n      \"aiohttp-session\": [\n        \"cpe:2.3:a:aio-libs:aiohttp_session:*:*:*:*:*:*:*:*\"\n      ],\n      \"aniso8601\": [\n        \"cpe:2.3:a:aniso8601_project:aniso8601:*:*:*:*:*:*:*:*\"\n      ],\n      \"api-res-py\": [\n        \"cpe:2.3:a:api-res-py_project:api-res-py:*:*:*:*:*:python:*:*\"\n      ],\n      \"aries-cloudagent\": [\n        \"cpe:2.3:a:hyperledger:aries_cloud_agent:*:*:*:*:*:python:*:*\"\n      ],\n      \"asyncua\": [\n        \"cpe:2.3:a:freeopcua:opcua-asyncio:*:*:*:*:*:python:*:*\"\n      ],\n      \"autobahn\": [\n        \"cpe:2.3:a:crossbar:autobahn:*:*:*:*:*:*:*:*\"\n      ],\n      \"azure-core\": [\n        \"cpe:2.3:a:microsoft:azure_core_shared_client_library:*:*:*:*:*:python:*:*\"\n      ],\n      \"b2sdk\": [\n        \"cpe:2.3:a:backblaze:b2-sdk-python:*:*:*:*:*:*:*:*\"\n      ],\n      \"blackduck\": [\n        \"cpe:2.3:a:synopsys:hub-rest-api-python:*:*:*:*:*:*:*:*\"\n      ],\n      \"bottle\": [\n        \"cpe:2.3:a:bottlepy:bottle:*:*:*:*:*:*:*:*\"\n      ],\n      \"case-utils\": [\n        \"cpe:2.3:a:lfprojects:case_python_utilities:*:*:*:*:*:python:*:*\"\n      ],\n      \"cbor2\": [\n        \"cpe:2.3:a:agronholm:cbor2:*:*:*:*:*:python:*:*\"\n      ],\n      \"cdo-local-uuid\": [\n        \"cpe:2.3:a:lfprojects:cdo_local_uuid_utility:*:*:*:*:*:python:*:*\"\n      ],\n      \"celery\": [\n        \"cpe:2.3:a:celeryproject:celery:*:*:*:*:*:python:*:*\"\n      ],\n      \"certifi\": [\n        \"cpe:2.3:a:certifi:certifi:*:*:*:*:*:python:*:*\"\n      ],\n      \"cleo\": [\n        \"cpe:2.3:a:python-poetry:cleo:*:*:*:*:*:*:*:*\"\n      ],\n      \"cloudlabeling\": [\n        \"cpe:2.3:a:pypi:cloudlabeling:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"cloudtoken\": [\n        \"cpe:2.3:a:atlassian:cloudtoken:*:*:*:*:*:*:*:*\"\n      ],\n      \"conference-scheduler-cli\": [\n        \"cpe:2.3:a:pyconuk:conference-scheduler-cli:*:*:*:*:*:*:*:*\"\n      ],\n      \"copier\": [\n        \"cpe:2.3:a:copier-org:copier:*:*:*:*:*:python:*:*\"\n      ],\n      \"copyparty\": [\n        \"cpe:2.3:a:9001:copyparty:*:*:*:*:*:*:*:*\"\n      ],\n      \"cryptidy\": [\n        \"cpe:2.3:a:netinvent:cryptidy:*:*:*:*:*:python:*:*\"\n      ],\n      \"cryptography\": [\n        \"cpe:2.3:a:cryptography.io:cryptography:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:cryptography.io:cryptography:*:*:*:*:*:python:*:*\"\n      ],\n      \"cvxopt\": [\n        \"cpe:2.3:a:cvxopt_project:cvxopt:*:*:*:*:*:python:*:*\"\n      ],\n      \"d8s-domains\": [\n        \"cpe:2.3:a:democritus_domains_project:democritus_domains:*:*:*:*:*:python:*:*\"\n      ],\n      \"d8s-ip-addresses\": [\n        \"cpe:2.3:a:democritus_ip_addresses_project:democritus_ip_addresses:*:*:*:*:*:python:*:*\"\n      ],\n      \"d8s-pdfs\": [\n        \"cpe:2.3:a:democritus_pdfs_project:democritus_pdfs:*:*:*:*:*:python:*:*\"\n      ],\n      \"d8s-urls\": [\n        \"cpe:2.3:a:democritus_urls_project:democritus_urls:*:*:*:*:*:python:*:*\"\n      ],\n      \"d8s-uuids\": [\n        \"cpe:2.3:a:democritus_uuids_project:democritus_uuids:*:*:*:*:*:python:*:*\"\n      ],\n      \"datapizza-ai\": [\n        \"cpe:2.3:a:datapizza:datapizza_ai:*:*:*:*:*:*:*:*\"\n      ],\n      \"decorator\": [\n        \"cpe:2.3:a:python:decorator:*:*:*:*:*:*:*:*\"\n      ],\n      \"django-filter\": [\n        \"cpe:2.3:a:django-filter_project:django-filter:*:*:*:*:*:*:*:*\"\n      ],\n      \"django-user-sessions\": [\n        \"cpe:2.3:a:django-user-sessions_project:django-user-sessions:*:*:*:*:*:*:*:*\"\n      ],\n      \"drf-jwt\": [\n        \"cpe:2.3:a:styria:django-rest-framework-json_web_tokens:*:*:*:*:*:*:*:*\"\n      ],\n      \"drxhello\": [\n        \"cpe:2.3:a:pypi:aamiles:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:pypi:cloudlabeling:*:*:*:*:*:pypi:*:*\",\n        \"cpe:2.3:a:pypi:dr-web-engine:*:*:*:*:*:pypi:*:*\",\n        \"cpe:2.3:a:pypi:drxhello:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"easy-parse\": [\n        \"cpe:2.3:a:easy-parse_project:easy-parse:*:*:*:*:*:python:*:*\"\n      ],\n      \"easy-xml\": [\n        \"cpe:2.3:a:easyxml_project:easyxml:*:*:*:*:*:python:*:*\"\n      ],\n      \"ecdsa\": [\n        \"cpe:2.3:a:tlsfuzzer:ecdsa:*:*:*:*:*:python:*:*\"\n      ],\n      \"enum34\": [\n        \"cpe:2.3:a:python:enum34:*:*:*:*:*:*:*:*\"\n      ],\n      \"eth-account\": [\n        \"cpe:2.3:a:ethereum:eth-account:*:*:*:*:*:python:*:*\"\n      ],\n      \"exotel\": [\n        \"cpe:2.3:a:exotel_project:exotel:*:*:*:*:*:python:*:*\"\n      ],\n      \"fastapi-api-key\": [\n        \"cpe:2.3:a:athroniaeth:fastapi_api_key:*:*:*:*:*:python:*:*\"\n      ],\n      \"feedgen\": [\n        \"cpe:2.3:a:feedgen_project:feedgen:*:*:*:*:*:python:*:*\"\n      ],\n      \"fickling\": [\n        \"cpe:2.3:a:trailofbits:fickling:*:*:*:*:*:python:*:*\"\n      ],\n      \"flask-restx\": [\n        \"cpe:2.3:a:flask-restx_project:flask-restx:*:*:*:*:*:python:*:*\"\n      ],\n      \"flower\": [\n        \"cpe:2.3:a:flower_project:flower:*:*:*:*:*:*:*:*\"\n      ],\n      \"fonttools\": [\n        \"cpe:2.3:a:fonttools:fonttools:*:*:*:*:*:python:*:*\"\n      ],\n      \"geopandas\": [\n        \"cpe:2.3:a:geopandas:geopandas:*:*:*:*:*:python:*:*\"\n      ],\n      \"global-workqueue\": [\n        \"cpe:2.3:a:global-workqueue_project:global-workqueue:*:*:*:*:*:python:*:*\"\n      ],\n      \"gradio\": [\n        \"cpe:2.3:a:gradio_project:gradio:*:*:*:*:*:python:*:*\"\n      ],\n      \"guarddog\": [\n        \"cpe:2.3:a:datadoghq:guarddog:*:*:*:*:*:python:*:*\"\n      ],\n      \"hail\": [\n        \"cpe:2.3:a:hail:hail:*:*:*:*:*:python:*:*\"\n      ],\n      \"horus\": [\n        \"cpe:2.3:a:pylonsproject:horus:*:*:*:*:*:pyramid:*:*\"\n      ],\n      \"html-to-csv\": [\n        \"cpe:2.3:a:html-to-csv_project:html-to-csv:*:*:*:*:*:python:*:*\"\n      ],\n      \"html2csv\": [\n        \"cpe:2.3:a:html2csv_project:html2csv:*:*:*:*:*:python:*:*\"\n      ],\n      \"httplib2\": [\n        \"cpe:2.3:a:httplib2_project:httplib2:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:httplib2_project:httplib2:*:*:*:*:*:python:*:*\"\n      ],\n      \"httpx\": [\n        \"cpe:2.3:a:encode:httpx:*:*:*:*:*:python:*:*\"\n      ],\n      \"hyper-bump-it\": [\n        \"cpe:2.3:a:plannigan:hyper_bump_it:*:*:*:*:*:python:*:*\"\n      ],\n      \"invenio-records\": [\n        \"cpe:2.3:a:inveniosoftware:invenio-records:*:*:*:*:*:*:*:*\"\n      ],\n      \"jupyterhub-systemdspawner\": [\n        \"cpe:2.3:a:jupyterhub:systemdspawner:*:*:*:*:*:*:*:*\"\n      ],\n      \"jw.util\": [\n        \"cpe:2.3:a:python:jw.util:*:*:*:*:*:python:*:*\"\n      ],\n      \"jwcrypto\": [\n        \"cpe:2.3:a:latchset:jwcrypto:*:*:*:*:*:*:*:*\"\n      ],\n      \"keep\": [\n        \"cpe:2.3:a:keep_project:keep:*:*:*:*:*:*:*:*\"\n      ],\n      \"keymaker\": [\n        \"cpe:2.3:a:keymaker_project:keymaker:*:*:*:*:*:*:*:*\"\n      ],\n      \"ladon\": [\n        \"cpe:2.3:a:ladon_project:ladon:*:*:*:*:*:*:*:*\"\n      ],\n      \"langchain-core\": [\n        \"cpe:2.3:a:langchain:langchain_core:*:*:*:*:*:python:*:*\"\n      ],\n      \"langchain-experimental\": [\n        \"cpe:2.3:a:langchain:langchain_experimental:*:*:*:*:*:python:*:*\"\n      ],\n      \"loguru\": [\n        \"cpe:2.3:a:loguru_project:loguru:*:*:*:*:*:python:*:*\"\n      ],\n      \"lxml\": [\n        \"cpe:2.3:a:lxml:lxml:*:*:*:*:*:*:*:*\"\n      ],\n      \"lxml-html-clean\": [\n        \"cpe:2.3:a:fedoralovespython:lxml_html_clean:*:*:*:*:*:python:*:*\"\n      ],\n      \"mad-proxy\": [\n        \"cpe:2.3:a:machphy:mad-proxy:*:*:*:*:*:python:*:*\"\n      ],\n      \"mage-ai\": [\n        \"cpe:2.3:a:mage:mage-ai:*:*:*:*:*:python:*:*\"\n      ],\n      \"marshmallow\": [\n        \"cpe:2.3:a:marshmallow_project:marshmallow:*:*:*:*:*:python:*:*\"\n      ],\n      \"mltable\": [\n        \"cpe:2.3:a:microsoft:azure_machine_learning_software_development_kit:*:*:*:*:*:*:*:*\"\n      ],\n      \"mpxj\": [\n        \"cpe:2.3:a:mpxj:mpxj:*:*:*:*:*:python:*:*\"\n      ],\n      \"nbconvert\": [\n        \"cpe:2.3:a:jupyter:nbconvert:*:*:*:*:*:python:*:*\"\n      ],\n      \"nbdime\": [\n        \"cpe:2.3:a:jupyter:nbdime:*:*:*:*:*:python:*:*\"\n      ],\n      \"networkx\": [\n        \"cpe:2.3:a:python:networkx:*:*:*:*:*:*:*:*\"\n      ],\n      \"novajoin\": [\n        \"cpe:2.3:a:python:novajoin:*:*:*:*:*:*:*:*\"\n      ],\n      \"oncall\": [\n        \"cpe:2.3:a:linkedin:oncall:*:*:*:*:*:*:*:*\"\n      ],\n      \"openapi-python-client\": [\n        \"cpe:2.3:a:openapi-python-client_project:openapi-python-client:*:*:*:*:*:*:*:*\"\n      ],\n      \"openlit\": [\n        \"cpe:2.3:a:openlit:openlit_software_development_kit:*:*:*:*:*:python:*:*\"\n      ],\n      \"openpyxl\": [\n        \"cpe:2.3:a:python:openpyxl:*:*:*:*:*:*:*:*\"\n      ],\n      \"openssh-key-parser\": [\n        \"cpe:2.3:a:openssh_key_parser_project:openssh_key_parser:*:*:*:*:*:python:*:*\"\n      ],\n      \"ormar\": [\n        \"cpe:2.3:a:collerek:ormar:*:*:*:*:*:python:*:*\"\n      ],\n      \"ovirt-engine-sdk-python\": [\n        \"cpe:2.3:a:ovirt-engine-sdk-python_project:ovirt-engine-sdk-python:*:*:*:*:*:*:*:*\"\n      ],\n      \"pandasai\": [\n        \"cpe:2.3:a:gabrieleventuri:pandasai:*:*:*:*:*:python:*:*\"\n      ],\n      \"parsl\": [\n        \"cpe:2.3:a:uchicago:parsl:*:*:*:*:*:python:*:*\"\n      ],\n      \"passeo\": [\n        \"cpe:2.3:a:passeo_project:passeo:*:*:*:*:*:python:*:*\"\n      ],\n      \"pdm\": [\n        \"cpe:2.3:a:frostming:pdm:*:*:*:*:*:python:*:*\"\n      ],\n      \"pillow-heif\": [\n        \"cpe:2.3:a:bigcat88:pillow-heif:*:*:*:*:*:python:*:*\"\n      ],\n      \"pipreqs\": [\n        \"cpe:2.3:a:pipreqs_project:pipreqs:*:*:*:*:*:python:*:*\"\n      ],\n      \"plone.namedfile\": [\n        \"cpe:2.3:a:plone:namedfile:*:*:*:*:*:*:*:*\"\n      ],\n      \"poetry\": [\n        \"cpe:2.3:a:python-poetry:poetry:*:*:*:*:*:python:*:*\"\n      ],\n      \"pretix\": [\n        \"cpe:2.3:a:rami:pretix:*:*:*:*:*:*:*:*\"\n      ],\n      \"promptflow-tools\": [\n        \"cpe:2.3:a:microsoft:azure_promptflow_tools:*:*:*:*:*:*:*:*\"\n      ],\n      \"protobuf\": [\n        \"cpe:2.3:a:google:protobuf-python:*:*:*:*:*:*:*:*\"\n      ],\n      \"proxy.py\": [\n        \"cpe:2.3:a:proxy.py_project:proxy.py:*:*:*:*:*:*:*:*\"\n      ],\n      \"py-bcrypt\": [\n        \"cpe:2.3:a:python:py-bcrypt:*:*:*:*:*:*:*:*\"\n      ],\n      \"py-xml\": [\n        \"cpe:2.3:a:py-xml_project:py-xml:*:*:*:*:*:python:*:*\"\n      ],\n      \"py7zr\": [\n        \"cpe:2.3:a:py7zr_project:py7zr:*:*:*:*:*:python:*:*\"\n      ],\n      \"pyRdfa3\": [\n        \"cpe:2.3:a:pyrdfa3_project:pyrdfa3:*:*:*:*:*:python:*:*\"\n      ],\n      \"pyanxdns\": [\n        \"cpe:2.3:a:pyanxdns_project:pyanxdns:*:*:*:*:*:*:*:*\"\n      ],\n      \"pyanyapi\": [\n        \"cpe:2.3:a:pyanyapi_project:pyanyapi:*:*:*:*:*:*:*:*\"\n      ],\n      \"pybluemonday\": [\n        \"cpe:2.3:a:python:pybluemonday:*:*:*:*:*:*:*:*\"\n      ],\n      \"pycel\": [\n        \"cpe:2.3:a:dgorissen:pycel:*:*:*:*:*:python:*:*\"\n      ],\n      \"pycryptodome\": [\n        \"cpe:2.3:a:pycryptodome:pycryptodome:*:*:*:*:*:python:*:*\"\n      ],\n      \"pycryptodomex\": [\n        \"cpe:2.3:a:pycryptodome:pycryptodomex:*:*:*:*:*:python:*:*\"\n      ],\n      \"pydantic-ai\": [\n        \"cpe:2.3:a:pydantic:pydantic_ai:*:*:*:*:*:python:*:*\"\n      ],\n      \"pydash\": [\n        \"cpe:2.3:a:derrickgilland:pydash:*:*:*:*:*:python:*:*\"\n      ],\n      \"pyesasky\": [\n        \"cpe:2.3:a:esa:pyesasky:*:*:*:*:*:python:*:*\"\n      ],\n      \"pyload-ng\": [\n        \"cpe:2.3:a:pyload-ng_project:pyload-ng:*:*:*:*:*:python:*:*\"\n      ],\n      \"pymatgen\": [\n        \"cpe:2.3:a:materialsvirtuallab:pymatgen:*:*:*:*:*:*:*:*\"\n      ],\n      \"pymdown-extensions\": [\n        \"cpe:2.3:a:facelessuser:pymdown_extensions:*:*:*:*:*:*:*:*\"\n      ],\n      \"pyo\": [\n        \"cpe:2.3:a:pyo_project:pyo:*:*:*:*:*:*:*:*\"\n      ],\n      \"pypdf\": [\n        \"cpe:2.3:a:pypdf_project:pypdf:*:*:*:*:*:*:*:*\"\n      ],\n      \"pypiserver\": [\n        \"cpe:2.3:a:python:pypiserver:*:*:*:*:*:*:*:*\"\n      ],\n      \"pypolicyd-spf\": [\n        \"cpe:2.3:a:pypolicyd-spf_project:pypolicyd-spf:*:*:*:*:*:*:*:*\"\n      ],\n      \"python-gnupg\": [\n        \"cpe:2.3:a:python:python-gnupg:*:*:*:*:*:*:*:*\"\n      ],\n      \"python-json-logger\": [\n        \"cpe:2.3:a:nhairs:python_json_logger:*:*:*:*:*:*:*:*\"\n      ],\n      \"python-jwt\": [\n        \"cpe:2.3:a:python-jwt_project:python-jwt:*:*:*:*:*:*:*:*\"\n      ],\n      \"python-libnmap\": [\n        \"cpe:2.3:a:python-libnmap_project:python-libnmap:*:*:*:*:*:python:*:*\"\n      ],\n      \"python-multipart\": [\n        \"cpe:2.3:a:fastapiexpert:python-multipart:*:*:*:*:*:python:*:*\"\n      ],\n      \"python-scciclient\": [\n        \"cpe:2.3:a:python-scciclient_project:python-scciclient:*:*:*:*:*:python:*:*\"\n      ],\n      \"pytorch-lightning\": [\n        \"cpe:2.3:a:lightningai:pytorch_lightning:*:*:*:*:*:python:*:*\"\n      ],\n      \"pywin32\": [\n        \"cpe:2.3:a:mhammond:pywin32:*:*:*:*:*:*:*:*\"\n      ],\n      \"rencode\": [\n        \"cpe:2.3:a:rencode_project:rencode:*:*:*:*:*:python:*:*\"\n      ],\n      \"reportlab\": [\n        \"cpe:2.3:a:reportlab:reportlab:*:*:*:*:*:*:*:*\"\n      ],\n      \"reqmgr2\": [\n        \"cpe:2.3:a:reqmgr2_project:reqmgr2:*:*:*:*:*:python:*:*\"\n      ],\n      \"reqmon\": [\n        \"cpe:2.3:a:reqmon_project:reqmon:*:*:*:*:*:python:*:*\"\n      ],\n      \"requests\": [\n        \"cpe:2.3:a:python:requests:*:*:*:*:*:*:*:*\"\n      ],\n      \"requests-xml\": [\n        \"cpe:2.3:a:requests-xml_project:requests-xml:*:*:*:*:*:python:*:*\"\n      ],\n      \"rondolu-yt-concate\": [\n        \"cpe:2.3:a:rondolu-yt-concate_project:rondolu-yt-concate:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"rope\": [\n        \"cpe:2.3:a:rope_project:rope:*:*:*:*:*:python:*:*\"\n      ],\n      \"rply\": [\n        \"cpe:2.3:a:rply_project:rply:*:*:*:*:*:*:*:*\"\n      ],\n      \"rsa\": [\n        \"cpe:2.3:a:python:rsa:*:*:*:*:*:python:*:*\"\n      ],\n      \"ruamel.yaml\": [\n        \"cpe:2.3:a:ruamel.yaml_project:ruamel.yaml:*:*:*:*:*:*:*:*\"\n      ],\n      \"sap-xssec\": [\n        \"cpe:2.3:a:sap:sap-xssec:*:*:*:*:*:python:*:*\"\n      ],\n      \"scoptrial\": [\n        \"cpe:2.3:a:scoptrial_project:scoptrial:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"sentry-sdk\": [\n        \"cpe:2.3:a:sentry:sentry_software_development_kit:*:*:*:*:*:python:*:*\"\n      ],\n      \"setuptools\": [\n        \"cpe:2.3:a:python:setuptools:*:*:*:*:*:*:*:*\"\n      ],\n      \"simiki\": [\n        \"cpe:2.3:a:simiki_project:simiki:*:*:*:*:*:*:*:*\"\n      ],\n      \"sixfab-power-python-api\": [\n        \"cpe:2.3:a:sixfab-tool_project:sixfab-tool:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"slashify\": [\n        \"cpe:2.3:a:google:slashify:*:*:*:*:*:node.js:*:*\"\n      ],\n      \"snowflake-connector-python\": [\n        \"cpe:2.3:a:snowflake:snowflake-connector-python:*:*:*:*:*:*:*:*\"\n      ],\n      \"sockeye\": [\n        \"cpe:2.3:a:amazon:sockeye:*:*:*:*:*:python:*:*\"\n      ],\n      \"sopel-plugins.channelmgnt\": [\n        \"cpe:2.3:a:mirahezebots:channelmgnt:*:*:*:*:*:sopel:*:*\"\n      ],\n      \"spacy\": [\n        \"cpe:2.3:a:explosion:spacy:*:*:*:*:*:python:*:*\"\n      ],\n      \"sqlparse\": [\n        \"cpe:2.3:a:sqlparse_project:sqlparse:*:*:*:*:*:python:*:*\"\n      ],\n      \"starlette\": [\n        \"cpe:2.3:a:encode:starlette:*:*:*:*:*:python:*:*\"\n      ],\n      \"tablib\": [\n        \"cpe:2.3:a:python:tablib:*:*:*:*:*:*:*:*\"\n      ],\n      \"taguette\": [\n        \"cpe:2.3:a:taguette:taguette:*:*:*:*:*:*:*:*\"\n      ],\n      \"tkvideoplayer\": [\n        \"cpe:2.3:a:python:tkvideoplayer:*:*:*:*:*:*:*:*\"\n      ],\n      \"togglee\": [\n        \"cpe:2.3:a:togglee:togglee:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"tuf\": [\n        \"cpe:2.3:a:linuxfoundation:the_update_framework:*:*:*:*:*:python:*:*\"\n      ],\n      \"uamqp\": [\n        \"cpe:2.3:a:microsoft:azure_uamqp:*:*:*:*:*:python:*:*\"\n      ],\n      \"unearth\": [\n        \"cpe:2.3:a:frostming:unearth:*:*:*:*:*:python:*:*\"\n      ],\n      \"untangle\": [\n        \"cpe:2.3:a:untangle_project:untangle:*:*:*:*:*:python:*:*\"\n      ],\n      \"urllib3\": [\n        \"cpe:2.3:a:python:urllib3:*:*:*:*:*:*:*:*\"\n      ],\n      \"validators\": [\n        \"cpe:2.3:a:validators_project:validators:*:*:*:*:*:python:*:*\"\n      ],\n      \"vault-cli\": [\n        \"cpe:2.3:a:vault-cli_project:vault-cli:*:*:*:*:*:python:*:*\"\n      ],\n      \"vyper\": [\n        \"cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:python:*:*\"\n      ],\n      \"wikifaces\": [\n        \"cpe:2.3:a:wikifaces_project:wikifaces:*:*:*:*:*:pypi:*:*\"\n      ],\n      \"wmagent\": [\n        \"cpe:2.3:a:wmagent_project:wmagent:*:*:*:*:*:python:*:*\"\n      ],\n      \"xmpp-http-upload\": [\n        \"cpe:2.3:a:xmpp-http-upload_project:xmpp-http-upload:*:*:*:*:*:*:*:*\"\n      ],\n      \"zibalPlatform\": [\n        \"cpe:2.3:a:zibal_project:zibal:*:*:*:*:*:pypi:*:*\"\n      ]\n    },\n    \"rubygems\": {\n      \"Arabic-Prawn\": [\n        \"cpe:2.3:a:dynamixsolutions:arabic_prawn:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"VladTheEnterprising\": [\n        \"cpe:2.3:a:vladtheenterprising_project:vladtheenterprising:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"actionpack\": [\n        \"cpe:2.3:a:actionpack_project:actionpack:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"actionview\": [\n        \"cpe:2.3:a:action_view_project:action_view:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"activerecord\": [\n        \"cpe:2.3:a:activerecord_project:activerecord:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"activesupport\": [\n        \"cpe:2.3:a:activesupport_project:activesupport:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"arvados\": [\n        \"cpe:2.3:a:arvados:arvados:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"avo\": [\n        \"cpe:2.3:a:avohq:avo:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"backup-agoddard\": [\n        \"cpe:2.3:a:backup-agoddard_project:backup-agoddard:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"backup_checksum\": [\n        \"cpe:2.3:a:backup_checksum_project:backup_checksum:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"better_errors\": [\n        \"cpe:2.3:a:better_errors_project:better_errors:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"bindata\": [\n        \"cpe:2.3:a:bindata_project:bindata:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"bio-basespace-sdk\": [\n        \"cpe:2.3:a:basespace_ruby_sdk_project:basespace_ruby_sdk:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"brbackup\": [\n        \"cpe:2.3:a:brbackup_project:brbackup:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"bson\": [\n        \"cpe:2.3:a:bson_project:bson:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"cap-strap\": [\n        \"cpe:2.3:a:cap-strap_project:cap-strap:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"carrierwave\": [\n        \"cpe:2.3:a:carrierwave_project:carrierwave:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"cgi\": [\n        \"cpe:2.3:a:ruby-lang:cgi:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"ciborg\": [\n        \"cpe:2.3:a:ciborg_project:ciborg:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"cocoapods-downloader\": [\n        \"cpe:2.3:a:cocoapods:cocoapods-downloader:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"codders-dataset\": [\n        \"cpe:2.3:a:codders-dataset_project:codders-dataset:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"codecov\": [\n        \"cpe:2.3:a:codecov:codecov:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"colorscore\": [\n        \"cpe:2.3:a:colorscore_project:colorscore:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"commonmarker\": [\n        \"cpe:2.3:a:gjtorikian:commonmarker:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"consul\": [\n        \"cpe:2.3:a:makandra:consul:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"cremefraiche\": [\n        \"cpe:2.3:a:uplawski:creme_fraiche:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"csv-safe\": [\n        \"cpe:2.3:a:csv-safe_project:csv-safe:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"csv_sniffer\": [\n        \"cpe:2.3:a:csv-sniffer_project:csv-sniffer:*:*:*:*:*:rust:*:*\"\n      ],\n      \"curl\": [\n        \"cpe:2.3:a:curl_project:curl:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"datagrid\": [\n        \"cpe:2.3:a:datagrid_project:datagrid:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"date\": [\n        \"cpe:2.3:a:ruby-lang:date:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"decidim\": [\n        \"cpe:2.3:a:decidim:decidim:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"devise\": [\n        \"cpe:2.3:a:heartcombo:devise:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"devise_invitable\": [\n        \"cpe:2.3:a:scambra:devise_invitable:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"diffy\": [\n        \"cpe:2.3:a:diffy_project:diffy:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"discordrb\": [\n        \"cpe:2.3:a:discordrb_project:discordrb:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"dragonfly\": [\n        \"cpe:2.3:a:dragonfly_project:dragonfly:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"easymon\": [\n        \"cpe:2.3:a:basecamp:easymon:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"echor\": [\n        \"cpe:2.3:a:echor_project:echor:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"encoded_id-rails\": [\n        \"cpe:2.3:a:diaconou:encodedid\\\\:\\\\:rails:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"faye\": [\n        \"cpe:2.3:a:faye_project:faye:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"field_test\": [\n        \"cpe:2.3:a:field_test_project:field_test:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"fileutils\": [\n        \"cpe:2.3:a:fileutils_project:fileutils:*:*:*:*:*:ruby:*:*\",\n        \"cpe:2.3:a:ruby:fileutils:*:*:*:*:*:*:*:*\"\n      ],\n      \"flash_tool\": [\n        \"cpe:2.3:a:milboj:flash_tool:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"fog-dragonfly\": [\n        \"cpe:2.3:a:mark_evans:fog-dragonfly:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"ftpd\": [\n        \"cpe:2.3:a:ftpd_project:ftpd:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"fugit\": [\n        \"cpe:2.3:a:floraison:fugit:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"geminabox\": [\n        \"cpe:2.3:a:geminabox_project:geminabox:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"gemirro\": [\n        \"cpe:2.3:a:gemirro_project:gemirro:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"geokit-rails\": [\n        \"cpe:2.3:a:geokit:geokit-rails:*:*:*:*:*:rails:*:*\"\n      ],\n      \"gibbon\": [\n        \"cpe:2.3:a:gibbon_project:gibbon:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"globalid\": [\n        \"cpe:2.3:a:rubyonrails:globalid:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"goliath\": [\n        \"cpe:2.3:a:goliath_project:goliath:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"gollum-grit_adapter\": [\n        \"cpe:2.3:a:gollum_project:grit_adapter:*:*:*:*:*:*:*:*\"\n      ],\n      \"gon\": [\n        \"cpe:2.3:a:gon_project:gon:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"gyazo\": [\n        \"cpe:2.3:a:gyazo_project:gyazo:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"haml\": [\n        \"cpe:2.3:a:haml:haml:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"httparty\": [\n        \"cpe:2.3:a:jnunemaker:httparty:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"iodine\": [\n        \"cpe:2.3:a:boazsegev:iodine:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"json\": [\n        \"cpe:2.3:a:json_project:json:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"json-jwt\": [\n        \"cpe:2.3:a:json-jwt_project:json-jwt:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"kafo\": [\n        \"cpe:2.3:a:theforeman:kafo:*:*:*:*:*:*:*:*\"\n      ],\n      \"kajam\": [\n        \"cpe:2.3:a:kajam_project:kajam:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"karo\": [\n        \"cpe:2.3:a:karo_project:karo:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"kcapifony\": [\n        \"cpe:2.3:a:kcapifony_project:kcapifony:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"keynote\": [\n        \"cpe:2.3:a:keynote_project:keynote:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"kitchen-terraform\": [\n        \"cpe:2.3:a:kitchen-terraform_project:kitchen-terraform:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"kramdown\": [\n        \"cpe:2.3:a:kramdown_project:kramdown:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"lawn-login\": [\n        \"cpe:2.3:a:lawn-login_project:lawn-login:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"lean-ruport\": [\n        \"cpe:2.3:a:lean-ruport_project:lean-ruport:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"loofah\": [\n        \"cpe:2.3:a:loofah_project:loofah:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"lynx\": [\n        \"cpe:2.3:a:lynx_project:lynx:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"mechanize\": [\n        \"cpe:2.3:a:mechanize_project:mechanize:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"message_bus\": [\n        \"cpe:2.3:a:discourse:message_bus:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"minitar\": [\n        \"cpe:2.3:a:minitar:archive-tar-minitar:*:*:*:*:*:ruby:*:*\",\n        \"cpe:2.3:a:minitar:minitar:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"moped\": [\n        \"cpe:2.3:a:moped_project:moped:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"mpxj\": [\n        \"cpe:2.3:a:mpxj:mpxj:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"net-imap\": [\n        \"cpe:2.3:a:ruby-lang:net\\\\:\\\\:imap:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"net-ldap\": [\n        \"cpe:2.3:a:net-ldap_project:net-ldap:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"net-ssh\": [\n        \"cpe:2.3:a:net-ssh:net-ssh:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"netaddr\": [\n        \"cpe:2.3:a:netaddr_project:netaddr:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"nokogiri\": [\n        \"cpe:2.3:a:nokogiri:nokogiri:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:nokogiri:nokogiri:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"octokit\": [\n        \"cpe:2.3:a:octokit_project:octokit:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"octopoller\": [\n        \"cpe:2.3:a:octopoller_project:octopoller:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth\": [\n        \"cpe:2.3:a:omniauth:omniauth:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth-apple\": [\n        \"cpe:2.3:a:omniauth-apple_project:omniauth-apple:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth-auth0\": [\n        \"cpe:2.3:a:auth0:omniauth-auth0:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth-facebook\": [\n        \"cpe:2.3:a:omniauth-facebook_project:omniauth-facebook:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth-oauth2\": [\n        \"cpe:2.3:a:omniauth-oauth2_project:omniauth-oauth2:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"omniauth-saml\": [\n        \"cpe:2.3:a:omniauth:omniauth_saml:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"open-uri-cached\": [\n        \"cpe:2.3:a:open-uri-cached_project:open-uri-cached:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"openshift-origin-controller\": [\n        \"cpe:2.3:a:openshift-origin-controller_project:openshift-origin-controller:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"openshift-origin-node\": [\n        \"cpe:2.3:a:redhat:openshift_origin:*:*:*:*:*:*:*:*\"\n      ],\n      \"openssl\": [\n        \"cpe:2.3:a:ruby-lang:openssl:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:ruby-lang:openssl:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"ox\": [\n        \"cpe:2.3:a:ox_project:ox:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"papercrop\": [\n        \"cpe:2.3:a:papercrop_project:papercrop:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"paranoid2\": [\n        \"cpe:2.3:a:anjlab:paranoid2:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"paratrooper-pingdom\": [\n        \"cpe:2.3:a:tobias_maier:paratrooper-pingdom:*:*:-:*:-:ruby:*:*\"\n      ],\n      \"pay\": [\n        \"cpe:2.3:a:pay_project:pay:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"pdf_info\": [\n        \"cpe:2.3:a:newspaperclub:pdf_info:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"pdfkit\": [\n        \"cpe:2.3:a:pdfkit_project:pdfkit:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"pghero\": [\n        \"cpe:2.3:a:pghero_project:pghero:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"phlex\": [\n        \"cpe:2.3:a:phlex:phlex:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"point-cli\": [\n        \"cpe:2.3:a:point-cli_project:point-cli:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"private_address_check\": [\n        \"cpe:2.3:a:private_address_check_project:private_address_check:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"publify_core\": [\n        \"cpe:2.3:a:publify:publify_core:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"puma\": [\n        \"cpe:2.3:a:puma:puma:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rack\": [\n        \"cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rack-cors\": [\n        \"cpe:2.3:a:rack-cors_project:rack-cors:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rack-ssl\": [\n        \"cpe:2.3:a:joshua_peek:rack-ssl:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rails\": [\n        \"cpe:2.3:a:rubyonrails:rails:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:rubyonrails:ruby_on_rails:*:*:*:*:*:*:*:*\"\n      ],\n      \"rails-html-sanitizer\": [\n        \"cpe:2.3:a:rubyonrails:rails_html_sanitizers:*:*:*:*:*:rails:*:*\"\n      ],\n      \"rails_multisite\": [\n        \"cpe:2.3:a:discourse:rails_multisite:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rake\": [\n        \"cpe:2.3:a:ruby-lang:rake:*:*:*:*:*:*:*:*\"\n      ],\n      \"random_password_generator\": [\n        \"cpe:2.3:a:random_password_generator_project:random_password_generator:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rbovirt\": [\n        \"cpe:2.3:a:amos_benari:rbovirt:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rdoc\": [\n        \"cpe:2.3:a:ruby-lang:rdoc:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"redcarpet\": [\n        \"cpe:2.3:a:redcarpet_project:redcarpet:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"resque\": [\n        \"cpe:2.3:a:resque:resque:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"resque-scheduler\": [\n        \"cpe:2.3:a:resque-scheduler_project:resque-scheduler:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rest-client\": [\n        \"cpe:2.3:a:rest-client_project:rest-client:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rexml\": [\n        \"cpe:2.3:a:ruby-lang:rexml:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rgpg\": [\n        \"cpe:2.3:a:richard_cook:rgpg:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rmagick\": [\n        \"cpe:2.3:a:rmagick:rmagick:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"ruby\": [\n        \"cpe:2.3:a:ruby-lang:ruby:*:*:*:*:*:*:*:*\"\n      ],\n      \"ruby-jss\": [\n        \"cpe:2.3:a:pixar:ruby-jss:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"ruby-mysql\": [\n        \"cpe:2.3:a:ruby-mysql_project:ruby-mysql:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"rubygems-update\": [\n        \"cpe:2.3:a:rubygems:rubygems:*:*:*:*:*:*:*:*\"\n      ],\n      \"safemode\": [\n        \"cpe:2.3:a:safemode_project:safemode:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sanitize\": [\n        \"cpe:2.3:a:sanitize_project:sanitize:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"secure_headers\": [\n        \"cpe:2.3:a:twitter:secure_headers:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sequenceserver\": [\n        \"cpe:2.3:a:wurmlab:sequenceserver:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sfpagent\": [\n        \"cpe:2.3:a:herry:sfpagent:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"show_in_browser\": [\n        \"cpe:2.3:a:jonathan_leung:show_in_browser:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sidekiq-unique-jobs\": [\n        \"cpe:2.3:a:mhenrixon:sidekiq-unique-jobs:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"simple_captcha2\": [\n        \"cpe:2.3:a:simple_captcha2_project:simple_captcha2:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"solidus_auth_devise\": [\n        \"cpe:2.3:a:nebulab:solidus_auth_devise:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sounder\": [\n        \"cpe:2.3:a:adam_zaninovich:sounder:*:*:*:*:*:*:*:*\"\n      ],\n      \"spree_auth_devise\": [\n        \"cpe:2.3:a:spreecommerce:spree_auth_devise:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"sprockets\": [\n        \"cpe:2.3:a:sprockets_project:sprockets:*:*:*:*:*:*:*:*\"\n      ],\n      \"sprockets-rails\": [\n        \"cpe:2.3:a:sprockets_project:sprockets:*:*:*:*:*:*:*:*\"\n      ],\n      \"sprout\": [\n        \"cpe:2.3:a:projectsprouts:sprout:*:*:-:*:-:ruby:*:*\"\n      ],\n      \"strong_password\": [\n        \"cpe:2.3:a:strong_password_project:strong_password:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"time\": [\n        \"cpe:2.3:a:ruby-lang:time:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"trestle-auth\": [\n        \"cpe:2.3:a:trestle-auth_project:trestle-auth:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"trilogy\": [\n        \"cpe:2.3:a:trilogy_project:trilogy:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"tweetstream\": [\n        \"cpe:2.3:a:tweetstream_project:tweetstream:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"typo\": [\n        \"cpe:2.3:a:typosphere:typo:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"update_by_case\": [\n        \"cpe:2.3:a:update_by_case_project:update_by_case:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"uri\": [\n        \"cpe:2.3:a:ruby-lang:uri:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"view_component\": [\n        \"cpe:2.3:a:viewcomponent:view_component:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"webbynode\": [\n        \"cpe:2.3:a:webbynode:webbynode:*:*:-:*:-:ruby:*:*\"\n      ],\n      \"webrick\": [\n        \"cpe:2.3:a:ruby-lang:webrick:*:*:*:*:*:ruby:*:*\"\n      ],\n      \"websocket-extensions\": [\n        \"cpe:2.3:a:websocket-extensions_project:websocket-extensions:*:*:*:*:*:ruby:*:*\"\n      ]\n    },\n    \"rust_crates\": {\n      \"abomonation\": [\n        \"cpe:2.3:a:abomonation_project:abomonation:*:*:*:*:*:rust:*:*\"\n      ],\n      \"abox\": [\n        \"cpe:2.3:a:abox_project:abox:*:*:*:*:*:rust:*:*\"\n      ],\n      \"acc_reader\": [\n        \"cpe:2.3:a:acc_reader_project:acc_reader:*:*:*:*:*:rust:*:*\"\n      ],\n      \"actix-codec\": [\n        \"cpe:2.3:a:actix:actix-codec:*:*:*:*:*:rust:*:*\"\n      ],\n      \"actix-http\": [\n        \"cpe:2.3:a:actix:actix-http:*:*:*:*:*:rust:*:*\"\n      ],\n      \"actix-service\": [\n        \"cpe:2.3:a:actix:actix-service:*:*:*:*:*:rust:*:*\"\n      ],\n      \"actix-utils\": [\n        \"cpe:2.3:a:actix:actix-utils:*:*:*:*:*:rust:*:*\"\n      ],\n      \"actix-web\": [\n        \"cpe:2.3:a:actix:actix-web:*:*:*:*:*:rust:*:*\"\n      ],\n      \"adtensor\": [\n        \"cpe:2.3:a:adtensor_project:adtensor:*:*:*:*:*:rust:*:*\"\n      ],\n      \"algorithmica\": [\n        \"cpe:2.3:a:algorithmica_project:algorithmica:*:*:*:*:*:rust:*:*\"\n      ],\n      \"alpm-rs\": [\n        \"cpe:2.3:a:alpm-rs_project:alpm-rs:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ammonia\": [\n        \"cpe:2.3:a:ammonia_project:ammonia:*:*:*:*:*:rust:*:*\"\n      ],\n      \"anymap\": [\n        \"cpe:2.3:a:anymap_project:anymap:*:*:*:*:*:rust:*:*\"\n      ],\n      \"aovec\": [\n        \"cpe:2.3:a:aovec_project:aovec:*:*:*:*:*:rust:*:*\"\n      ],\n      \"apollo-router\": [\n        \"cpe:2.3:a:apollographql:apollo-router:*:*:*:*:*:rust:*:*\"\n      ],\n      \"arenavec\": [\n        \"cpe:2.3:a:arenavec_project:arenavec:*:*:*:*:*:rust:*:*\"\n      ],\n      \"arr\": [\n        \"cpe:2.3:a:arr_project:arr:*:*:*:*:*:rust:*:*\"\n      ],\n      \"array-queue\": [\n        \"cpe:2.3:a:array-queue_project:array-queue:*:*:*:*:*:rust:*:*\"\n      ],\n      \"array-tools\": [\n        \"cpe:2.3:a:array-tools_project:array-tools:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ash\": [\n        \"cpe:2.3:a:ash_project:ash:*:*:*:*:*:rust:*:*\"\n      ],\n      \"asn1_der\": [\n        \"cpe:2.3:a:asn1_der_project:asn1_der:*:*:*:*:*:*:*:*\"\n      ],\n      \"async-h1\": [\n        \"cpe:2.3:a:rust-lang:async-h1:*:*:*:*:*:rust:*:*\"\n      ],\n      \"atom\": [\n        \"cpe:2.3:a:atom_project:atom:*:*:*:*:*:rust:*:*\"\n      ],\n      \"atomic-option\": [\n        \"cpe:2.3:a:atomic-option_project:atomic-option:*:*:*:*:*:rust:*:*\"\n      ],\n      \"autorand\": [\n        \"cpe:2.3:a:autorand_project:autorand:*:*:*:*:*:rust:*:*\"\n      ],\n      \"aws-lc-fips-sys\": [\n        \"cpe:2.3:a:amazon:aws-lc-fips-sys:*:*:*:*:*:rust:*:*\"\n      ],\n      \"axum-core\": [\n        \"cpe:2.3:a:axum-core_project:axum-core:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bam\": [\n        \"cpe:2.3:a:bam_project:bam:*:*:*:*:*:rust:*:*\"\n      ],\n      \"basic_dsp_matrix\": [\n        \"cpe:2.3:a:basic_dsp_matrix_project:basic_dsp_matrix:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bat\": [\n        \"cpe:2.3:a:bat_project:bat:*:*:*:*:*:rust:*:*\"\n      ],\n      \"beef\": [\n        \"cpe:2.3:a:beef_project:beef:*:*:*:*:*:rust:*:*\"\n      ],\n      \"below\": [\n        \"cpe:2.3:a:facebook:below:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bigint\": [\n        \"cpe:2.3:a:bigint_project:bigint:*:*:*:*:*:rust:*:*\"\n      ],\n      \"binjs_io\": [\n        \"cpe:2.3:a:binjs_io_project:binjs_io:*:*:*:*:*:rust:*:*\"\n      ],\n      \"biscuit-auth\": [\n        \"cpe:2.3:a:biscuitsec:biscuit-auth:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bite\": [\n        \"cpe:2.3:a:bite_project:bite:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bitvec\": [\n        \"cpe:2.3:a:bitvec_project:bitvec:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bra\": [\n        \"cpe:2.3:a:bra_project:bra:*:*:*:*:*:rust:*:*\"\n      ],\n      \"branca\": [\n        \"cpe:2.3:a:hakobaito:branca:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bronzedb-protocol\": [\n        \"cpe:2.3:a:bronzedb-protocol_project:bronzedb-protocol:*:*:*:*:*:rust:*:*\"\n      ],\n      \"buffoon\": [\n        \"cpe:2.3:a:buffoon_project:buffoon:*:*:*:*:*:rust:*:*\"\n      ],\n      \"buttplug\": [\n        \"cpe:2.3:a:nonpolynomial:buttplug:*:*:*:*:*:rust:*:*\"\n      ],\n      \"bzip2\": [\n        \"cpe:2.3:a:bzip2_project:bzip2:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cache\": [\n        \"cpe:2.3:a:cache_project:cache:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cached\": [\n        \"cpe:2.3:a:cached_project:cached:*:*:*:*:*:rust:*:*\"\n      ],\n      \"candid\": [\n        \"cpe:2.3:a:dfinity:candid:*:*:*:*:*:rust:*:*\"\n      ],\n      \"capnp\": [\n        \"cpe:2.3:a:capnproto:capnp:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cbox\": [\n        \"cpe:2.3:a:cbox_project:cbox:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cdr\": [\n        \"cpe:2.3:a:cdr_project:cdr:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ckb\": [\n        \"cpe:2.3:a:nervos:ckb:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cmov\": [\n        \"cpe:2.3:a:rustcrypto:cmov:*:*:*:*:*:rust:*:*\"\n      ],\n      \"columnar\": [\n        \"cpe:2.3:a:columnar_project:columnar:*:*:*:*:*:rust:*:*\"\n      ],\n      \"comrak\": [\n        \"cpe:2.3:a:comrak_project:comrak:*:*:*:*:*:rust:*:*\"\n      ],\n      \"concread\": [\n        \"cpe:2.3:a:concread_project:concread:*:*:*:*:*:rust:*:*\"\n      ],\n      \"conduit-hyper\": [\n        \"cpe:2.3:a:conduit-hyper_project:conduit-hyper:*:*:*:*:*:rust:*:*\"\n      ],\n      \"conqueue\": [\n        \"cpe:2.3:a:conqueue_project:conqueue:*:*:*:*:*:rust:*:*\"\n      ],\n      \"containers\": [\n        \"cpe:2.3:a:containers_project:containers:*:*:*:*:*:rust:*:*\"\n      ],\n      \"cranelift-codegen\": [\n        \"cpe:2.3:a:bytecodealliance:cranelift-codegen:*:*:*:*:*:rust:*:*\"\n      ],\n      \"crossbeam\": [\n        \"cpe:2.3:a:crossbeam_project:crossbeam:*:*:*:*:*:rust:*:*\"\n      ],\n      \"crossbeam-channel\": [\n        \"cpe:2.3:a:crossbeam-channel_project:crossbeam-channel:*:*:*:*:*:rust:*:*\"\n      ],\n      \"crypto2\": [\n        \"cpe:2.3:a:crypto2_project:crypto2:*:*:*:*:*:rust:*:*\"\n      ],\n      \"derive-com-impl\": [\n        \"cpe:2.3:a:derive-com-impl_project:derive-com-impl:*:*:*:*:*:rust:*:*\"\n      ],\n      \"diesel\": [\n        \"cpe:2.3:a:diesel:diesel:*:*:*:*:*:rust:*:*\"\n      ],\n      \"dync\": [\n        \"cpe:2.3:a:dync_project:dync:*:*:*:*:*:rust:*:*\"\n      ],\n      \"endian_trait\": [\n        \"cpe:2.3:a:endian_trait_project:endian_trait:*:*:*:*:*:rust:*:*\"\n      ],\n      \"eventio\": [\n        \"cpe:2.3:a:petabi:eventio:*:*:*:*:*:rust:*:*\"\n      ],\n      \"evm\": [\n        \"cpe:2.3:a:evm_project:evm:*:*:*:*:*:rust:*:*\"\n      ],\n      \"failure\": [\n        \"cpe:2.3:a:failure_project:failure:*:*:*:*:*:rust:*:*\"\n      ],\n      \"fil-ocl\": [\n        \"cpe:2.3:a:fil-ocl_project:fil-ocl:*:*:*:*:*:rust:*:*\"\n      ],\n      \"flatbuffers\": [\n        \"cpe:2.3:a:google:flatbuffers:*:*:*:*:*:rust:*:*\"\n      ],\n      \"flumedb\": [\n        \"cpe:2.3:a:flumedb_project:flumedb:*:*:*:*:*:rust:*:*\"\n      ],\n      \"fruity\": [\n        \"cpe:2.3:a:fruity_project:fruity:*:*:*:*:*:rust:*:*\"\n      ],\n      \"futures-intrusive\": [\n        \"cpe:2.3:a:futures-intrusive_project:futures-intrusive:*:*:*:*:*:rust:*:*\"\n      ],\n      \"futures-task\": [\n        \"cpe:2.3:a:rust-lang:futures-task:*:*:*:*:*:rust:*:*\"\n      ],\n      \"generator\": [\n        \"cpe:2.3:a:generator_project:generator:*:*:*:*:*:rust:*:*\"\n      ],\n      \"generic-array\": [\n        \"cpe:2.3:a:generic-array_project:generic-array:*:*:*:*:*:rust:*:*\"\n      ],\n      \"getrandom\": [\n        \"cpe:2.3:a:getrandom_project:getrandom:*:*:*:*:*:rust:*:*\"\n      ],\n      \"gfx-auxil\": [\n        \"cpe:2.3:a:gfx-auxil_project:gfx-auxil:*:*:*:*:*:rust:*:*\"\n      ],\n      \"gix-date\": [\n        \"cpe:2.3:a:gitoxidelabs:gix-date:*:*:*:*:*:rust:*:*\"\n      ],\n      \"glsl-layout\": [\n        \"cpe:2.3:a:glsl-layout_project:glsl-layout:*:*:*:*:*:rust:*:*\"\n      ],\n      \"hashconsing\": [\n        \"cpe:2.3:a:hashconsing_project:hashconsing:*:*:*:*:*:rust:*:*\"\n      ],\n      \"heapless\": [\n        \"cpe:2.3:a:heapless_project:heapless:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ic-stable-structures\": [\n        \"cpe:2.3:a:dfinity:stable_structures:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ic_cdk\": [\n        \"cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*\"\n      ],\n      \"iced-x86\": [\n        \"cpe:2.3:a:iced-x86_project:iced-x86:*:*:*:*:*:rust:*:*\"\n      ],\n      \"id-map\": [\n        \"cpe:2.3:a:id-map_project:id-map:*:*:*:*:*:rust:*:*\"\n      ],\n      \"idna\": [\n        \"cpe:2.3:a:servo:idna:*:*:*:*:*:rust:*:*\"\n      ],\n      \"insert_many\": [\n        \"cpe:2.3:a:insert_many_project:insert_many:*:*:*:*:*:rust:*:*\"\n      ],\n      \"internment\": [\n        \"cpe:2.3:a:internment_project:internment:*:*:*:*:*:rust:*:*\"\n      ],\n      \"juniper\": [\n        \"cpe:2.3:a:juniper_project:juniper:*:*:*:*:*:rust:*:*\"\n      ],\n      \"kamadak-exif\": [\n        \"cpe:2.3:a:kamadak-exif_project:kamadak-exif:*:*:*:*:*:rust:*:*\"\n      ],\n      \"kekbit\": [\n        \"cpe:2.3:a:kekbit_project:kekbit:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lazy-init\": [\n        \"cpe:2.3:a:lazy-init_project:lazy-init:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lettre\": [\n        \"cpe:2.3:a:lettre:lettre:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lever\": [\n        \"cpe:2.3:a:lever_project:lever:*:*:*:*:*:rust:*:*\"\n      ],\n      \"libp2p\": [\n        \"cpe:2.3:a:protocol:libp2p:*:*:*:*:*:rust:*:*\"\n      ],\n      \"libp2p-deflate\": [\n        \"cpe:2.3:a:libp2p:libp2p-deflate:*:*:*:*:*:rust:*:*\"\n      ],\n      \"libpulse-binding\": [\n        \"cpe:2.3:a:libpulse-binding_project:libpulse-binding:*:*:*:*:*:rust:*:*\"\n      ],\n      \"libsbc\": [\n        \"cpe:2.3:a:libsbc_project:libsbc:*:*:*:*:*:rust:*:*\"\n      ],\n      \"libsecp256k1\": [\n        \"cpe:2.3:a:parity:libsecp256k1:*:*:*:*:*:rust:*:*\"\n      ],\n      \"linked-list-allocator\": [\n        \"cpe:2.3:a:rust-osdev:linked-list-allocator:*:*:*:*:*:rust:*:*\"\n      ],\n      \"linux-loader\": [\n        \"cpe:2.3:a:linux-loader_project:linux-loader:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lock_api\": [\n        \"cpe:2.3:a:lock_api_project:lock_api:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lru\": [\n        \"cpe:2.3:a:lru_project:lru:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lru-cache\": [\n        \"cpe:2.3:a:lru-cache_project:lru-cache:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lucet-runtime\": [\n        \"cpe:2.3:a:bytecodealliance:lucet:*:*:*:*:*:rust:*:*\"\n      ],\n      \"lucet-runtime-internals\": [\n        \"cpe:2.3:a:lucet-runtime-internals_project:lucet-runtime-internals:*:*:*:*:*:rust:*:*\"\n      ],\n      \"magnetic\": [\n        \"cpe:2.3:a:magnetic_project:magnetic:*:*:*:*:*:rust:*:*\"\n      ],\n      \"may\": [\n        \"cpe:2.3:a:may_project:may:*:*:*:*:*:rust:*:*\"\n      ],\n      \"mdbook\": [\n        \"cpe:2.3:a:rust-lang:mdbook:*:*:*:*:*:rust:*:*\"\n      ],\n      \"messagepack-rs\": [\n        \"cpe:2.3:a:messagepack-rs_project:messagepack-rs:*:*:*:*:*:rust:*:*\"\n      ],\n      \"metrics-util\": [\n        \"cpe:2.3:a:metrics-util_project:metrics-util:*:*:*:*:*:rust:*:*\"\n      ],\n      \"molecule\": [\n        \"cpe:2.3:a:nervos:molecule:*:*:*:*:*:rust:*:*\"\n      ],\n      \"mopa\": [\n        \"cpe:2.3:a:mopa_project:mopa:*:*:*:*:*:rust:*:*\"\n      ],\n      \"mozwire\": [\n        \"cpe:2.3:a:mozwire_project:mozwire:*:*:*:*:*:rust:*:*\"\n      ],\n      \"multiqueue2\": [\n        \"cpe:2.3:a:multiqueue2_project:multiqueue2:*:*:*:*:*:rust:*:*\"\n      ],\n      \"naga\": [\n        \"cpe:2.3:a:gfx-rs:naga:*:*:*:*:*:rust:*:*\"\n      ],\n      \"nalgebra\": [\n        \"cpe:2.3:a:dimforge:nalgebra:*:*:*:*:*:rust:*:*\"\n      ],\n      \"nano_arena\": [\n        \"cpe:2.3:a:nano_arena_project:nano_arena:*:*:*:*:*:rust:*:*\"\n      ],\n      \"nanorand\": [\n        \"cpe:2.3:a:nanorand_project:nanorand:*:*:*:*:*:rust:*:*\"\n      ],\n      \"nb-connect\": [\n        \"cpe:2.3:a:nb-connect_project:nb-connect:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ncurses\": [\n        \"cpe:2.3:a:ncurses_project:ncurses:*:*:*:*:*:rust:*:*\"\n      ],\n      \"nix\": [\n        \"cpe:2.3:a:nix_project:nix:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ntpd\": [\n        \"cpe:2.3:a:tweedegolf:ntpd-rs:*:*:*:*:*:rust:*:*\"\n      ],\n      \"obstack\": [\n        \"cpe:2.3:a:obstack_project:obstack:*:*:*:*:*:rust:*:*\"\n      ],\n      \"outer_cgi\": [\n        \"cpe:2.3:a:outer_cgi_project:outer_cgi:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ozone\": [\n        \"cpe:2.3:a:ozone_project:ozone:*:*:*:*:*:rust:*:*\"\n      ],\n      \"pancurses\": [\n        \"cpe:2.3:a:pancurses_project:pancurses:*:*:*:*:*:rust:*:*\"\n      ],\n      \"parc\": [\n        \"cpe:2.3:a:parc_project:parc:*:*:*:*:*:rust:*:*\"\n      ],\n      \"parse_duration\": [\n        \"cpe:2.3:a:parse_duration_project:parse_duration:*:*:*:*:*:rust:*:*\"\n      ],\n      \"phonenumber\": [\n        \"cpe:2.3:a:whisperfish:phonenumber:*:*:*:*:*:rust:*:*\"\n      ],\n      \"pnet\": [\n        \"cpe:2.3:a:pnet_project:pnet:*:*:*:*:*:rust:*:*\"\n      ],\n      \"pomsky\": [\n        \"cpe:2.3:a:pomsky-lang:pomsky:*:*:*:*:*:rust:*:*\"\n      ],\n      \"portaudio-rs\": [\n        \"cpe:2.3:a:portaudio-rs_project:portaudio-rs:*:*:*:*:*:*:*:*\"\n      ],\n      \"postscript\": [\n        \"cpe:2.3:a:postscript_project:postscript:*:*:*:*:*:rust:*:*\"\n      ],\n      \"quinn\": [\n        \"cpe:2.3:a:quinn_project:quinn:*:*:*:*:*:rust:*:*\"\n      ],\n      \"qwutils\": [\n        \"cpe:2.3:a:qwutils_project:qwutils:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rand\": [\n        \"cpe:2.3:a:rand_project:rand:*:*:*:*:*:*:*:*\"\n      ],\n      \"rand_core\": [\n        \"cpe:2.3:a:rand_core_project:rand_core:*:*:*:*:*:rust:*:*\"\n      ],\n      \"raw-cpuid\": [\n        \"cpe:2.3:a:raw-cpuid_project:raw-cpuid:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rdiff\": [\n        \"cpe:2.3:a:rdiff_project:rdiff:*:*:*:*:*:rust:*:*\"\n      ],\n      \"reorder\": [\n        \"cpe:2.3:a:reorder_project:reorder:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rio\": [\n        \"cpe:2.3:a:rio_project:rio:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rkyv\": [\n        \"cpe:2.3:a:rkyv_project:rkyv:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rsa\": [\n        \"cpe:2.3:a:rustcrypto:rsa:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rulinalg\": [\n        \"cpe:2.3:a:rulinalg_project:rulinalg:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rusqlite\": [\n        \"cpe:2.3:a:rusqlite_project:rusqlite:*:*:*:*:*:rust:*:*\"\n      ],\n      \"rust-embed\": [\n        \"cpe:2.3:a:rust-embed_project:rust-embed:*:*:*:*:*:rust:*:*\"\n      ],\n      \"salvo\": [\n        \"cpe:2.3:a:salvo:salvo:*:*:*:*:*:rust:*:*\"\n      ],\n      \"scratchpad\": [\n        \"cpe:2.3:a:scratchpad_project:scratchpad:*:*:*:*:*:rust:*:*\"\n      ],\n      \"serde_v8\": [\n        \"cpe:2.3:a:deno:serde_v8:*:*:*:*:*:rust:*:*\"\n      ],\n      \"sgx_tstd\": [\n        \"cpe:2.3:a:sgx_tstd_project:sgx_tstd:*:*:*:*:*:rust:*:*\"\n      ],\n      \"sha2\": [\n        \"cpe:2.3:a:sha2_project:sha2:*:*:*:*:*:rust:*:*\"\n      ],\n      \"simple_asn1\": [\n        \"cpe:2.3:a:simple_asn1_project:simple_asn1:*:*:*:*:*:rust:*:*\"\n      ],\n      \"slack_morphism\": [\n        \"cpe:2.3:a:slack_morphism_project:slack_morphism:*:*:*:*:*:rust:*:*\"\n      ],\n      \"slice-deque\": [\n        \"cpe:2.3:a:slice-deque_project:slice-deque:*:*:*:*:*:rust:*:*\"\n      ],\n      \"sm2\": [\n        \"cpe:2.3:a:rustcrypto:sm2_elliptic_curve:*:*:*:*:*:rust:*:*\"\n      ],\n      \"smallvec\": [\n        \"cpe:2.3:a:servo:smallvec:*:*:*:*:*:rust:*:*\"\n      ],\n      \"stack\": [\n        \"cpe:2.3:a:stack_project:stack:*:*:*:*:*:rust:*:*\"\n      ],\n      \"stack_dst\": [\n        \"cpe:2.3:a:stack_dst_project:stack_dst:*:*:*:*:*:rust:*:*\"\n      ],\n      \"stackvector\": [\n        \"cpe:2.3:a:stackvector_project:stackvector:*:*:*:*:*:rust:*:*\"\n      ],\n      \"syncpool\": [\n        \"cpe:2.3:a:syncpool_project:syncpool:*:*:*:*:*:rust:*:*\"\n      ],\n      \"sys-info\": [\n        \"cpe:2.3:a:sys-info_project:sys-info:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tar\": [\n        \"cpe:2.3:a:tar_project:tar:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tectonic_xdv\": [\n        \"cpe:2.3:a:tectonic_xdv_project:tectonic_xdv:*:*:*:*:*:rust:*:*\"\n      ],\n      \"telemetry\": [\n        \"cpe:2.3:a:telemetry_project:telemetry:*:*:*:*:*:rust:*:*\"\n      ],\n      \"thex\": [\n        \"cpe:2.3:a:thex_project:thex:*:*:*:*:*:rust:*:*\"\n      ],\n      \"through\": [\n        \"cpe:2.3:a:through_project:through:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ticketed_lock\": [\n        \"cpe:2.3:a:ticketed_lock_project:ticketed_lock:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tiny_future\": [\n        \"cpe:2.3:a:tiny_future_project:tiny_future:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tiny_http\": [\n        \"cpe:2.3:a:tiny-http_project:tiny-http:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tokio\": [\n        \"cpe:2.3:a:tokio:tokio:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tokio-rustls\": [\n        \"cpe:2.3:a:tokio:tokio-rustls:*:*:*:*:*:rust:*:*\"\n      ],\n      \"toodee\": [\n        \"cpe:2.3:a:toodee_project:toodee:*:*:*:*:*:rust:*:*\"\n      ],\n      \"totp-rs\": [\n        \"cpe:2.3:a:totp-rs_project:totp-rs:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tough\": [\n        \"cpe:2.3:a:amazon:tough:*:*:*:*:*:rust:*:*\"\n      ],\n      \"traitobject\": [\n        \"cpe:2.3:a:traitobject_project:traitobject:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tremor-script\": [\n        \"cpe:2.3:a:linuxfoundation:tremor-script:*:*:*:*:*:rust:*:*\"\n      ],\n      \"truetype\": [\n        \"cpe:2.3:a:truetype_project:truetype:*:*:*:*:*:rust:*:*\"\n      ],\n      \"trust-dns-proto\": [\n        \"cpe:2.3:a:trust-dns-proto_project:trust-dns-proto:*:*:*:*:*:*:*:*\"\n      ],\n      \"trust-dns-server\": [\n        \"cpe:2.3:a:trust-dns-server_project:trust-dns-server:*:*:*:*:*:rust:*:*\"\n      ],\n      \"try-mutex\": [\n        \"cpe:2.3:a:try-mutex_project:try-mutex:*:*:*:*:*:rust:*:*\"\n      ],\n      \"tungstenite\": [\n        \"cpe:2.3:a:snapview:tungstenite:*:*:*:*:*:rust:*:*\"\n      ],\n      \"unicycle\": [\n        \"cpe:2.3:a:unicycle_project:unicycle:*:*:*:*:*:rust:*:*\"\n      ],\n      \"uu_od\": [\n        \"cpe:2.3:a:uu_od_project:uu_od:*:*:*:*:*:rust:*:*\"\n      ],\n      \"v9\": [\n        \"cpe:2.3:a:v9_project:v9:*:*:*:*:*:rust:*:*\"\n      ],\n      \"va-ts\": [\n        \"cpe:2.3:a:va-ts_project:va-ts:*:*:*:*:*:rust:*:*\"\n      ],\n      \"vec-const\": [\n        \"cpe:2.3:a:vec-const_project:vec-const:*:*:*:*:*:rust:*:*\"\n      ],\n      \"versionize\": [\n        \"cpe:2.3:a:versionize_project:versionize:*:*:*:*:*:rust:*:*\"\n      ],\n      \"wasmi\": [\n        \"cpe:2.3:a:wasmi-labs:wasmi:*:*:*:*:*:rust:*:*\"\n      ],\n      \"wasmtime\": [\n        \"cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:rust:*:*\"\n      ],\n      \"ws\": [\n        \"cpe:2.3:a:ws-rs_project:ws-rs:*:*:*:*:*:rust:*:*\"\n      ],\n      \"yottadb\": [\n        \"cpe:2.3:a:yottadb:yottadb:*:*:*:*:*:rust:*:*\"\n      ],\n      \"youki\": [\n        \"cpe:2.3:a:youki-dev:youki:*:*:*:*:*:rust:*:*\"\n      ],\n      \"zeroize_derive\": [\n        \"cpe:2.3:a:zeroize_derive_project:zeroize_derive:*:*:*:*:*:rust:*:*\"\n      ]\n    },\n    \"wordpress_plugins\": {\n      \"0mk-shortener\": [\n        \"cpe:2.3:a:0mk_shortener_project:0mk_shortener:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"1-click-migration\": [\n        \"cpe:2.3:a:1clickmigration:1_click_migration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"1003-mortgage-application\": [\n        \"cpe:2.3:a:lenderd:1003_mortgage_application:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"10to8-online-booking\": [\n        \"cpe:2.3:a:10to8:sign_in_scheduling_online_appointment_booking_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"12-step-meeting-list\": [\n        \"cpe:2.3:a:code4recovery:12_step_meeting_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"123-chat-videochat\": [\n        \"cpe:2.3:a:123.chat:123.chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"1app-business-forms\": [\n        \"cpe:2.3:a:1app:1app_business_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"2j-slideshow\": [\n        \"cpe:2.3:a:2joomla:2j_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"2kb-amazon-affiliates-store\": [\n        \"cpe:2.3:a:2kblater:2kb_amazon_affiliates_store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"360-product-rotation\": [\n        \"cpe:2.3:a:yofla:360_product_rotation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3com-asesor-de-cookies\": [\n        \"cpe:2.3:a:3commarketing:3com-asesor-de-cookies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3d-cover-carousel\": [\n        \"cpe:2.3:a:3d_cover_carousel_project:3d_cover_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3d-flipbook-dflip-lite\": [\n        \"cpe:2.3:a:dearhive:dearflip:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3d-photo-gallery\": [\n        \"cpe:2.3:a:webdevocean:3d_photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3d-presentation\": [\n        \"cpe:2.3:a:lucapaggetti:3d_presentation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3dprint-lite\": [\n        \"cpe:2.3:a:wp3dprinting:3dprint_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"3xsocializer\": [\n        \"cpe:2.3:a:3xsocializer_project:3xsocializer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"404-solution\": [\n        \"cpe:2.3:a:ajexperience:404_solution:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"404-to-301\": [\n        \"cpe:2.3:a:duckdev:404_to_301:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"404-to-start\": [\n        \"cpe:2.3:a:404_to_start_project:404_to_start:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"404like\": [\n        \"cpe:2.3:a:404like_project:404like:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"404page\": [\n        \"cpe:2.3:a:nerdpress:smart_custom_404_error_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"4ecps-webforms\": [\n        \"cpe:2.3:a:jumpdemand:4ecps_web_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"5-anker-connect\": [\n        \"cpe:2.3:a:5-anker:5_anker_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"59sec-lite-contact-form-7-push-notifications-on-ios-and-android\": [\n        \"cpe:2.3:a:59sec:the_leads_management_system\\\\:_59sec_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"8-degree-notification-bar\": [\n        \"cpe:2.3:a:8degreethemes:notification_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"99fy-core\": [\n        \"cpe:2.3:a:hasthemes:free_woocommerce_theme_99fy_extension:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"Ultimate_VC_Addons\": [\n        \"cpe:2.3:a:brainstormforce:ultimate_addons_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"a-forms\": [\n        \"cpe:2.3:a:a-forms_project:a-forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"a2-optimized-wp\": [\n        \"cpe:2.3:a:a2hosting:a2_optimized:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"a4-barcode-generator\": [\n        \"cpe:2.3:a:ukrsolution:print_labels_with_barcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aajoda-testimonials\": [\n        \"cpe:2.3:a:aajoda:aajoda_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ab-categories-search-widget\": [\n        \"cpe:2.3:a:agustinberasategui:ab_categories_search_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ab-google-map-travel\": [\n        \"cpe:2.3:a:ab_google_map_travel_project:ab_google_map_travel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ab-press-optimizer-lite\": [\n        \"cpe:2.3:a:abpressoptimizer:ab_press_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"abitgone-commentsafe\": [\n        \"cpe:2.3:a:abitgone:abitgone_commentsafe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"about-me\": [\n        \"cpe:2.3:a:about-me_project:about-me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"about-me-3000\": [\n        \"cpe:2.3:a:wpmaniax:about_me_3000_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"about-rentals\": [\n        \"cpe:2.3:a:about-rentals_project:about-rentals:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"absolute-privacy\": [\n        \"cpe:2.3:a:johnkolbert:absolute_privacy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"absolute-reviews\": [\n        \"cpe:2.3:a:codesupply:absolute_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"abwp-simple-counter\": [\n        \"cpe:2.3:a:ab-wp:simple_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"academy\": [\n        \"cpe:2.3:a:creativeitem:academy_lms:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:kodezen:academy_lms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accelerated-mobile-pages\": [\n        \"cpe:2.3:a:ampforwp:accelerated_mobile_pages:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:magazine3:amp_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"access-demo-importer\": [\n        \"cpe:2.3:a:accesspressthemes:access_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accessibility\": [\n        \"cpe:2.3:a:accessibility_project:accessibility:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accessibility-help-button\": [\n        \"cpe:2.3:a:stpetedesign:call_now_accessibility_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-anonymous-post\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_anonymous_post:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:accesspressthemes:frontend_post_wordpress_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-custom-css\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_custom_css:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-custom-post-type\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_custom_post_type:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-facebook-auto-post\": [\n        \"cpe:2.3:a:accesspressthemes:social_auto_poster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-instagram-feed\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_ifeeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-pinterest\": [\n        \"cpe:2.3:a:accesspressthemes:pi_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-social-counter\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_social_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-social-icons\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_social_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-social-login-lite\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_social_login_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-social-share\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_social_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-twitter-feed\": [\n        \"cpe:2.3:a:accesspressthemes:wp_tfeed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accommodation-system\": [\n        \"cpe:2.3:a:accommodation-system_project:accommodation-system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordion-image-menu\": [\n        \"cpe:2.3:a:alaingonzalez:accordion_image_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordion-slider\": [\n        \"cpe:2.3:a:bqworks:accordion_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordion-title-for-elementor\": [\n        \"cpe:2.3:a:migaweb:accordion_title_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordions\": [\n        \"cpe:2.3:a:pickplugins:accordion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordions-or-faqs\": [\n        \"cpe:2.3:a:oxilab:accordions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accordions-wp\": [\n        \"cpe:2.3:a:themepoints:accordion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accredible-certificates\": [\n        \"cpe:2.3:a:accredible:accredible_certificates_\\\\\\u0026_open_badges:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accurate-form-data-real-time-form-validation\": [\n        \"cpe:2.3:a:wp_accurate_form_data_project:wp_accurate_form_data:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aceide\": [\n        \"cpe:2.3:a:aceide_project:aceide:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-better-search\": [\n        \"cpe:2.3:a:acf-better-search_project:acf-better-search:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:acf\\\\:_better_search_project:acf\\\\:_better_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-extended\": [\n        \"cpe:2.3:a:acf-extended:advanced_custom_fields\\\\:extended:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:acf-extended:advanced_custom_fields\\\\:extended:*:*:*:*:basic:wordpress:*:*\",\n        \"cpe:2.3:a:acf-extended:advanced_custom_fields\\\\:extended:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:acf-extended:advanced_custom_fields\\\\:extended:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:acfextended:advanced_custom_fields_extended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-frontend-display\": [\n        \"cpe:2.3:a:advancedcustomfields:acf_fronted_display:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-frontend-form-element\": [\n        \"cpe:2.3:a:dynamiapps:frontend_admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-image-crop-add-on\": [\n        \"cpe:2.3:a:andersthorborg:advanced_custom_fields\\\\:image_crop_add-on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acf-to-rest-api\": [\n        \"cpe:2.3:a:acf_to_rest_api_project:acf_to_rest_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acl-floating-cart-for-woocommerce\": [\n        \"cpe:2.3:a:amadercode:acl_floating_cart_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acnoo-flutter-api\": [\n        \"cpe:2.3:a:acnoo:flutter_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aco-product-labels-for-woocommerce\": [\n        \"cpe:2.3:a:acowebs:product_labels_for_woocommerce_\\\\(sale_badges\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aco-woo-dynamic-pricing\": [\n        \"cpe:2.3:a:acowebs:dynamic_pricing_with_discount_rules_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"actionwear-products-sync\": [\n        \"cpe:2.3:a:marcoingraiti:actionwear_products_sync:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activecampaign-for-woocommerce\": [\n        \"cpe:2.3:a:activecampaign:activecampaign_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activecampaign-subscription-forms\": [\n        \"cpe:2.3:a:activecampaign:activecampaign:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activedemand\": [\n        \"cpe:2.3:a:jumpdemand:activedemand:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activity-link-preview-for-buddypress\": [\n        \"cpe:2.3:a:wbcomdesigns:activity_link_preview_for_buddypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activity-reactions-for-buddypress\": [\n        \"cpe:2.3:a:areteit:activity_reactions_for_buddypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activitypub\": [\n        \"cpe:2.3:a:automattic:activitypub:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acurax-social-media-widget\": [\n        \"cpe:2.3:a:acurax:social_media_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"acymailing\": [\n        \"cpe:2.3:a:acymailing:acymailing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ad-blocking-detector\": [\n        \"cpe:2.3:a:getadmiral:ad_blocking_detector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ad-buttons\": [\n        \"cpe:2.3:a:ad_buttons_project:ad_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ad-injection\": [\n        \"cpe:2.3:a:ad_injection_project:ad_injection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ad-inserter\": [\n        \"cpe:2.3:a:ad_inserter_project:ad_inserter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ad_inserter_project:ad_inserter:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"ad-invalid-click-protector\": [\n        \"cpe:2.3:a:acnam:ad_invalid_click_protector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ad-manager-for-wp\": [\n        \"cpe:2.3:a:ad-manager_project:ad-manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adamrob-parallax-scroll\": [\n        \"cpe:2.3:a:parallax_scroll_project:parallax_scroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adaptive-images\": [\n        \"cpe:2.3:a:nevma:adaptive_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-actions-and-filters\": [\n        \"cpe:2.3:a:add_shortcodes_actions_and_filters_project:add_shortcodes_actions_and_filters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-any-extension-to-pages\": [\n        \"cpe:2.3:a:infolific:add_any_extension_to_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-comments\": [\n        \"cpe:2.3:a:add_comments_project:add_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-custom-body-class\": [\n        \"cpe:2.3:a:anilankola:add_custom_body_class:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-customer-for-woocommerce\": [\n        \"cpe:2.3:a:dans-art:add_customer_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-facebook\": [\n        \"cpe:2.3:a:web-settler:social_feed:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-settler:social_feed_\\\\|_all_social_media_in_one_place:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-from-server\": [\n        \"cpe:2.3:a:add_from_server_project:add_from_server:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-link-to-facebook\": [\n        \"cpe:2.3:a:add_link_to_facebook_project:add_link_to_facebook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-local-avatar\": [\n        \"cpe:2.3:a:petersterling:add_local_avatar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-multiple-marker\": [\n        \"cpe:2.3:a:krishaweb:add_multiple_marker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-posts-to-pages\": [\n        \"cpe:2.3:a:webmechanix:add_posts_to_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-search-to-menu\": [\n        \"cpe:2.3:a:ivorysearch:ivory_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-social-share-buttons\": [\n        \"cpe:2.3:a:dotstore:add_social_share_messenger_buttons_whatsapp_and_viber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-subtitle\": [\n        \"cpe:2.3:a:viitorcloud:add_subtitle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-to-any\": [\n        \"cpe:2.3:a:addtoany:addtoany_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-to-calendar-button\": [\n        \"cpe:2.3:a:add-to-calendar-button-pro:add_to_calendar_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-to-cart-button-labels-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:change_add_to_cart_button_text_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-to-cart-direct-checkout-for-woocommerce\": [\n        \"cpe:2.3:a:piwebsolution:add-to-cart-direct-checkout-for-woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"add-widget-after-content\": [\n        \"cpe:2.3:a:arelthiaphillips:add_widget_after_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"addon-elements-for-elementor-page-builder\": [\n        \"cpe:2.3:a:webtechstreet:elementor_addon_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"addons-for-beaver-builder\": [\n        \"cpe:2.3:a:livemesh:beaver_builder_addons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:livemesh:livemesh_addons_for_beaver_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"addons-for-elementor\": [\n        \"cpe:2.3:a:livemesh:elementor_addons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:livemeshelementor:addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"addons-for-visual-composer\": [\n        \"cpe:2.3:a:livemeshthemes:wpbakery_page_builder_addons:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"addthis\": [\n        \"cpe:2.3:a:addthis:addthis:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adfoxly\": [\n        \"cpe:2.3:a:wpfoxly:adfoxly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adif-log-search-widget\": [\n        \"cpe:2.3:a:dh9sb.dx-info:adif_log_search_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adirectory\": [\n        \"cpe:2.3:a:quomodosoft:adirectory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adl-team\": [\n        \"cpe:2.3:a:wpwax:team:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-bar-dashboard-control\": [\n        \"cpe:2.3:a:properfraction:admin_bar_\\\\\\u0026_dashboard_access_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-block-country\": [\n        \"cpe:2.3:a:admin_block_country_project:admin_block_country:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-css-mu\": [\n        \"cpe:2.3:a:millionclues:admin_css_mu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-custom-login\": [\n        \"cpe:2.3:a:weblizar:admin_custom_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-management-xtended\": [\n        \"cpe:2.3:a:admin_management_xtended_project:admin_management_xtended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-menu\": [\n        \"cpe:2.3:a:admin_menu_project:admin_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-renamer-extended\": [\n        \"cpe:2.3:a:mijnpress:admin-renamer-extended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-side-data-storage-for-contact-form-7\": [\n        \"cpe:2.3:a:zestard:admin_side_data_storage_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admin-site-enhancements\": [\n        \"cpe:2.3:a:wpase:admin_and_site_enhancements:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wpase:admin_and_site_enhancements:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"adminer\": [\n        \"cpe:2.3:a:adminer_login_project:adminer_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adminify\": [\n        \"cpe:2.3:a:wpadminify:wp_adminify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adminpad\": [\n        \"cpe:2.3:a:adminpad_project:adminpad:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"admire-extra\": [\n        \"cpe:2.3:a:sktthemes:admire_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adrotate\": [\n        \"cpe:2.3:a:adrotate_banner_manager_project:adrotate_banner_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:adrotate_project:adrotate:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ajdg:adrotate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ads-by-datafeedrcom\": [\n        \"cpe:2.3:a:datafeedr:ads_by_datafeedr.com:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ads-invalid-click-protection\": [\n        \"cpe:2.3:a:impactpixel:ads_invalid_click_protection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adsense-click-fraud-monitoring\": [\n        \"cpe:2.3:a:clickfraud-monitoring:adsense-click-fraud-monitoring:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"adsense-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:google_adsense:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:google_adsense_project:google_adsense:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advance-search\": [\n        \"cpe:2.3:a:advance_search_project:advance_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-access-manager\": [\n        \"cpe:2.3:a:vasyltech:advanced_access_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-admin-search\": [\n        \"cpe:2.3:a:kuroit:advanced_admin_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-ads\": [\n        \"cpe:2.3:a:wpadvancedads:advanced_ads_-_ad_manager_\\\\\\u0026_adsense:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-ajax-page-loader\": [\n        \"cpe:2.3:a:advanced_ajax_page_loader_project:advanced_ajax_page_loader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-backgrounds\": [\n        \"cpe:2.3:a:wpbackgrounds:advanced_wordpress_backgrounds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-blocks-pro\": [\n        \"cpe:2.3:a:essamamdani:advanced_blocks_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-booking-calendar\": [\n        \"cpe:2.3:a:elbtide:advanced_booking_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-category-and-custom-taxonomy-image\": [\n        \"cpe:2.3:a:sajjadhsagor:advanced_category_and_custom_taxonomy_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-category-template\": [\n        \"cpe:2.3:a:praveengoswami:advanced_category_template:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-cf7-db\": [\n        \"cpe:2.3:a:vsourz:advanced_cf7_db:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-cron-manager\": [\n        \"cpe:2.3:a:bracketspace:advanced_cron_manager:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"advanced-custom-fields\": [\n        \"cpe:2.3:a:advancedcustomfields:advanced_custom_fields:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:advancedcustomfields:advanced_custom_fields:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:advancedcustomfields:advanced_custom_fields:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:advancedcustomfields:advanced_custom_fields:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"advanced-database-cleaner\": [\n        \"cpe:2.3:a:sigmaplugin:advanced_database_cleaner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-dynamic-pricing-for-woocommerce\": [\n        \"cpe:2.3:a:algolplus:advanced_dynamic_pricing_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-flamingo\": [\n        \"cpe:2.3:a:bluecoral:advanced_flamingo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-form-integration\": [\n        \"cpe:2.3:a:advancedformintegration:advanced_form_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-free-flat-shipping-woocommerce\": [\n        \"cpe:2.3:a:piwebsolution:advanced-free-flat-shipping-woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-iframe\": [\n        \"cpe:2.3:a:tinywebgallery:advanced_iframe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-import\": [\n        \"cpe:2.3:a:addonspress:advanced_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-local-pickup-for-woocommerce\": [\n        \"cpe:2.3:a:zorem:advanced_local_pickup_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-menu-widget\": [\n        \"cpe:2.3:a:bocinec:advanced_menu_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-nocaptcha-recaptcha\": [\n        \"cpe:2.3:a:wpwhitesecurity:captcha_4wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-online-ordering-and-delivery-platform\": [\n        \"cpe:2.3:a:buynowdepot:advanced_online_ordering_and_delivery_platform:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-page-visit-counter\": [\n        \"cpe:2.3:a:advanced_page_visit_counter_project:advanced_page_visit_counter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:pagevisitcounter:advanced_page_visit_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-popups\": [\n        \"cpe:2.3:a:ashstonestudios:advanced_popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-quiz\": [\n        \"cpe:2.3:a:markusbegerow:wp-adv-quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-recent-posts\": [\n        \"cpe:2.3:a:advanced_recent_posts_project:advanced_recent_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-sermons\": [\n        \"cpe:2.3:a:wpcodeus:advanced_sermons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-uploader\": [\n        \"cpe:2.3:a:advanced_uploader_project:advanced_uploader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-woo-labels\": [\n        \"cpe:2.3:a:advanced-woo-labels:advanced_woo_labels:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-woo-search\": [\n        \"cpe:2.3:a:advanced-woo-search:advanced_woo_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-wp-columns\": [\n        \"cpe:2.3:a:advanced_wp_columns_project:advanced_wp_columns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"advanced-wp-reset\": [\n        \"cpe:2.3:a:sigmaplugin:advanced_wordpress_reset:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aeropage-sync-for-airtable\": [\n        \"cpe:2.3:a:aeropage:aeropage_sync_for_airtable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliate-ads-builder-for-clickbank-products\": [\n        \"cpe:2.3:a:clickbank:affiliate_ads_for_clickbank_products:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliate-toolkit-starter\": [\n        \"cpe:2.3:a:servit:affiliate-toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliatebooster-blocks\": [\n        \"cpe:2.3:a:affiliatebooster:affiliate_booster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliateimportereb\": [\n        \"cpe:2.3:a:cr1000:affiliateimportereb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliates-manager\": [\n        \"cpe:2.3:a:wpaffiliatemanager:affiliates_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affiliatex\": [\n        \"cpe:2.3:a:affiliatexblocks:affiliatex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"afterpay-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:afterpay:afterpay_gateway_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ag-custom-admin\": [\n        \"cpe:2.3:a:cusmin:absolutely_glamorous_custom_admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"agenteasy-properties\": [\n        \"cpe:2.3:a:agenteasy_properties_project:agenteasy_properties:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aggregator-advanced-settings\": [\n        \"cpe:2.3:a:miguelmello:aggregator_advanced_settings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"agile-store-locator\": [\n        \"cpe:2.3:a:agilelogix:store_locator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"agp-font-awesome-collection\": [\n        \"cpe:2.3:a:profosbox:agp_font_awesome_collection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ai-assistant-by-10web\": [\n        \"cpe:2.3:a:10web:ai_assistant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ai-contact-us\": [\n        \"cpe:2.3:a:ai_contact_us_form_project:ai_contact_us_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ai-engine\": [\n        \"cpe:2.3:a:meowapps:ai_engine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ai-image-alt-text-generator-for-wp\": [\n        \"cpe:2.3:a:wpmessiah:ai_image_alt_text_generator_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ai-post-generator\": [\n        \"cpe:2.3:a:autowriter:ai_post_generator_\\\\|_autowriter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aio-time-clock-lite\": [\n        \"cpe:2.3:a:codebangers:all_in_one_time_clock_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aiomatic-automatic-ai-content-writer\": [\n        \"cpe:2.3:a:coderevolution:aiomatic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-archive-calendar\": [\n        \"cpe:2.3:a:osmansorkar:ajax_archive_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-bootmodal-login\": [\n        \"cpe:2.3:a:ajax_bootmodal_login_project:ajax_bootmodal_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-filter-posts\": [\n        \"cpe:2.3:a:addonmaster:post_grid_master:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-load-more\": [\n        \"cpe:2.3:a:connekthq:ajax_load_more:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-load-more-anything\": [\n        \"cpe:2.3:a:addonmaster:load_more_anything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-pagination\": [\n        \"cpe:2.3:a:ajax-pagination_project:ajax-pagination:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-random-post\": [\n        \"cpe:2.3:a:ajax-random-post_project:ajax-random-post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-search-for-woocommerce\": [\n        \"cpe:2.3:a:fibosearch:fibosearch:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ajax-search-lite\": [\n        \"cpe:2.3:a:wp-dreams:ajax_search:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"ajax-upload-for-gravity-forms\": [\n        \"cpe:2.3:a:ajax_upload_for_gravity_forms_project:ajax_upload_for_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"akismet\": [\n        \"cpe:2.3:a:automattic:akismet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"akismet-privacy-policies\": [\n        \"cpe:2.3:a:inpsyde:akismet_privacy_policies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aklamator-infeed\": [\n        \"cpe:2.3:a:aklamator:infeed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"albo-pretorio-on-line\": [\n        \"cpe:2.3:a:albo_pretorio_on_line_project:albo_pretorio_on_line:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"album-and-image-gallery-plus-lightbox\": [\n        \"cpe:2.3:a:essentialplugin:album_and_image_gallery_plus_lightbox:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"alfred-click-collect\": [\n        \"cpe:2.3:a:alfred24_click_\\\\\\u0026_collect_project:alfred24_click_\\\\\\u0026_collect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ali2woo-lite\": [\n        \"cpe:2.3:a:ali2woo:ali2woo:*:*:*:*:lite:wordpress:*:*\",\n        \"cpe:2.3:a:ali2woo:aliexpress_dropshipping_with_alinext:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"alipay\": [\n        \"cpe:2.3:a:alipay_project:alipay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-404-redirect-to-homepage\": [\n        \"cpe:2.3:a:clogica:all_404_redirect_to_homepage:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:geekcodelab:all_404_pages_redirect_to_homepage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-bootstrap-blocks\": [\n        \"cpe:2.3:a:areoi:all_bootstrap_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-contact-form-integration-for-elementor\": [\n        \"cpe:2.3:a:theinnovs:eleforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-in-one-favicon\": [\n        \"cpe:2.3:a:techotronic:all_in_one_favicon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-in-one-redirection\": [\n        \"cpe:2.3:a:vsourz:all_in_one_redirection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-in-one-schemaorg-rich-snippets\": [\n        \"cpe:2.3:a:brainstormforce:schema:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"all-in-one-seo-pack\": [\n        \"cpe:2.3:a:aioseo:all_in_one_seo:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:semperplugins:all_in_one_seo_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-in-one-video-gallery\": [\n        \"cpe:2.3:a:plugins360:all-in-one_video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"all-in-one-wp-migration\": [\n        \"cpe:2.3:a:servmask:all-in-one_wp_migration:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"all-in-one-wp-security-and-firewall\": [\n        \"cpe:2.3:a:tips_and_tricks_hq:all_in_one_wordpress_security_and_firewall:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tipsandtricks-hq:all_in_one_wp_security_\\\\\\u0026_firewall:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tipsandtricks-hq:wp_security_\\\\\\u0026_firewall:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:updraftplus:all-in-one_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"allow-php-in-posts-and-pages\": [\n        \"cpe:2.3:a:hitreach:allow_php_in_posts_and_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"allpost-contactform\": [\n        \"cpe:2.3:a:rainbow-link:all_post_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alma-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:almapay:alma:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alo-easymail\": [\n        \"cpe:2.3:a:alo-easymail_project:alo-easymail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alojapro-widget\": [\n        \"cpe:2.3:a:alojapro:alojapro_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alpine-photo-tile-for-instagram\": [\n        \"cpe:2.3:a:thealpinepress:alpine-photo-tile-for-instagram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alpine-photo-tile-for-pinterest\": [\n        \"cpe:2.3:a:thealpinepress:alpine_phototile_for_pinterest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alter\": [\n        \"cpe:2.3:a:altersoftware:alter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"altos-connect\": [\n        \"cpe:2.3:a:altosresearch:altos-connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"alttext-ai\": [\n        \"cpe:2.3:a:alttext:alt_text_ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"am-hili-affiliate-manager-for-publishers\": [\n        \"cpe:2.3:a:am-hili_project:am-hili:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amadiscount\": [\n        \"cpe:2.3:a:pluginhandy:amadiscount:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amazon-auto-links\": [\n        \"cpe:2.3:a:michaeluno:auto_amazon_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amazon-link\": [\n        \"cpe:2.3:a:amazon_link_project:amazon_link:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amazonify\": [\n        \"cpe:2.3:a:gara:amazonify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amazonjs\": [\n        \"cpe:2.3:a:amazonjs_project:amazonjs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amazonsimpleadmin\": [\n        \"cpe:2.3:a:ifeelweb:affiliate_super_assistent:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ifeelweb:post_status_notifier_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amcharts-charts-and-maps\": [\n        \"cpe:2.3:a:amcharts:amcharts\\\\:_charts_and_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ameliabooking\": [\n        \"cpe:2.3:a:tms-outsource:amelia:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amen\": [\n        \"cpe:2.3:a:amen_project:amen:*:*:*:*:*:*:wordpress:*\",\n        \"cpe:2.3:a:joshua_vandercar:amen:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amilia-store\": [\n        \"cpe:2.3:a:amilia:store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amministrazione-aperta\": [\n        \"cpe:2.3:a:amministrazione_aperta_project:amministrazione_aperta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amministrazione-trasparente\": [\n        \"cpe:2.3:a:amministrazione_trasparente_project:amministrazione_trasparente:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amo-team-showcase\": [\n        \"cpe:2.3:a:amothemo:amo_team_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amount-left-free-shipping-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:free_shipping_bar:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"amp-img-shortcode\": [\n        \"cpe:2.3:a:wpza:amp_img_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amp-plus\": [\n        \"cpe:2.3:a:amp-cloud:amp_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amp-toolbox\": [\n        \"cpe:2.3:a:deano:amp_toolbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ampedsense-adsense-split-tester\": [\n        \"cpe:2.3:a:ezoic:ampedsense:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amr-ical-events-list\": [\n        \"cpe:2.3:a:amr-ical-events-list_project:amr-ical-events-list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amr-shortcode-any-widget\": [\n        \"cpe:2.3:a:amr-shortcode-any-widget_project:amr-shortcode-any-widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amr-users\": [\n        \"cpe:2.3:a:anmari:amr_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amty-thumb-recent-post\": [\n        \"cpe:2.3:a:amtythumb_project:amtythumb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"amtythumb\": [\n        \"cpe:2.3:a:amtythumb_project:amtythumb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"an-gradebook\": [\n        \"cpe:2.3:a:an_gradebook_project:an_gradebook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"analogwp-templates\": [\n        \"cpe:2.3:a:analogwp:style_kits:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"analytics-cat\": [\n        \"cpe:2.3:a:fatcatapps:analytics_cat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"analytics-insights\": [\n        \"cpe:2.3:a:deconf:analytics_insights:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"analytics-tracker\": [\n        \"cpe:2.3:a:analytics_tracker_project:analytics_tracker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"analyticswp\": [\n        \"cpe:2.3:a:analyticswp:analyticswp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anchor-episodes-index\": [\n        \"cpe:2.3:a:jesweb:anchor_episodes_index:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"animate-it\": [\n        \"cpe:2.3:a:eleopard:animate_it\\\\!:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"animated-al-list\": [\n        \"cpe:2.3:a:alexdtn:animated_al_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"animated-counters\": [\n        \"cpe:2.3:a:eralion:animated_counters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"animated-number-counters\": [\n        \"cpe:2.3:a:wpmart:animated_number_counters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"animategl\": [\n        \"cpe:2.3:a:creativeinteractivemedia:animategl_animations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"announcer\": [\n        \"cpe:2.3:a:aakashweb:announcer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anonymous-restricted-content\": [\n        \"cpe:2.3:a:cayenne:anonymous_restricted_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"another-wordpress-classifieds-plugin\": [\n        \"cpe:2.3:a:strategy11:awp_classifieds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anspress-question-answer\": [\n        \"cpe:2.3:a:rahularyan:anspress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anthologize\": [\n        \"cpe:2.3:a:anthologize_project:anthologize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"antihacker\": [\n        \"cpe:2.3:a:antihacker_project:antihacker:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:billminozzi:anti_hacker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anual-archive\": [\n        \"cpe:2.3:a:twinpictures:annual_archive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"any-hostname\": [\n        \"cpe:2.3:a:any_hostname_project:any_hostname:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anycomment\": [\n        \"cpe:2.3:a:bologer:anycomment:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"anywhere-flash-embed\": [\n        \"cpe:2.3:a:sureshkumarmukhiya:anywhere_flash_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ap-contact-form\": [\n        \"cpe:2.3:a:accesspressthemes:ap_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ap-custom-testimonial\": [\n        \"cpe:2.3:a:accesspressthemes:ap_custom_testimonial:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ap-mega-menu\": [\n        \"cpe:2.3:a:accesspressthemes:ap_mega_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ap-pricing-tables-lite\": [\n        \"cpe:2.3:a:accesspressthemes:ap_pricing_tables_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apa-banner-slider\": [\n        \"cpe:2.3:a:apa:apa_banner_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apa-register-newsletter-form\": [\n        \"cpe:2.3:a:apa:apa_register_newsletter_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apex-notification-bar-lite\": [\n        \"cpe:2.3:a:accesspressthemes:apex_notification_bar_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"api-bearer-auth\": [\n        \"cpe:2.3:a:api_bearer_auth_project:api_bearer_auth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"api-key-for-google-maps\": [\n        \"cpe:2.3:a:ayecode:api_key_for_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"api2cart-bridge-connector\": [\n        \"cpe:2.3:a:api2cart:api2cart_bridge_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apollo13-framework-extensions\": [\n        \"cpe:2.3:a:apollo13themes:apollo13_framework_extensions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"app-builder\": [\n        \"cpe:2.3:a:appcheap:app_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apply-online\": [\n        \"cpe:2.3:a:spiderteams:applyonline_-_application_form_builder_and_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"appmysite\": [\n        \"cpe:2.3:a:appmysite:appmysite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"appointment-booking-calendar\": [\n        \"cpe:2.3:a:codepeople:appointment_booking_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"appointment-calendar\": [\n        \"cpe:2.3:a:apointzilla:appointment_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"appointment-hour-booking\": [\n        \"cpe:2.3:a:dwbooster:appointment_hour_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"appointmind\": [\n        \"cpe:2.3:a:appointmind:appointmind:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apppresser\": [\n        \"cpe:2.3:a:apppresser:apppresser:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apptivo-business-site\": [\n        \"cpe:2.3:a:apptivo:apptivo_business_site_crm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aprils-super-functions-pack\": [\n        \"cpe:2.3:a:april\\\\'s_super_functions_pack_project:april\\\\'s_super_functions_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"apus-framework\": [\n        \"cpe:2.3:a:apusthemes:superio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ar-for-wordpress\": [\n        \"cpe:2.3:a:webandprint:ar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"archivist-custom-archive-templates\": [\n        \"cpe:2.3:a:archivist_-_custom_archive_templates_project:archivist_-_custom_archive_templates:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ericteubert:archivist:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ericteubert:archivist_-_custom_archive_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arconix-faq\": [\n        \"cpe:2.3:a:tychesoftwares:arconix_faq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arconix-shortcodes\": [\n        \"cpe:2.3:a:tychesoftwares:arconix_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arena-liveblog-and-chat-tool\": [\n        \"cpe:2.3:a:arena.im:arena.im:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arforms-form-builder\": [\n        \"cpe:2.3:a:reputeinfosystems:arforms_form_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:reputeinfosystems:contact_form\\\\,_survey_\\\\\\u0026_popup_form_plugin_for_wordpress_-_arforms_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ari-adminer\": [\n        \"cpe:2.3:a:ari-soft:ari_adminer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ari-cf7-connector\": [\n        \"cpe:2.3:a:ari-soft:contact_form_7_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ari-fancy-lightbox\": [\n        \"cpe:2.3:a:ari-soft:ari_fancy_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ari-stream-quiz\": [\n        \"cpe:2.3:a:ari-soft:ari_stream_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"armember-membership\": [\n        \"cpe:2.3:a:armemberplugin:armember:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:reputeinfosystems:armember:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arprice-responsive-pricing-table\": [\n        \"cpe:2.3:a:reputeinfosystems:arprice_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"artibot\": [\n        \"cpe:2.3:a:artibot:artibot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"article-directory\": [\n        \"cpe:2.3:a:article_directory_project:article_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"article-directory-redux\": [\n        \"cpe:2.3:a:icontrolwp:article_directory_redux:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"article2pdf\": [\n        \"cpe:2.3:a:article2pdf_project:article2pdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"artplacer-widget\": [\n        \"cpe:2.3:a:artplacer:artplacer_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aruba-hispeed-cache\": [\n        \"cpe:2.3:a:aruba:aruba_hispeed_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aryo-activity-log\": [\n        \"cpe:2.3:a:pojo:activity_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"asf-allow-svg-files\": [\n        \"cpe:2.3:a:allow_svg_files_project:allow_svg_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"asgaros-forum\": [\n        \"cpe:2.3:a:asgaros:asgaros_forum:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"asmember\": [\n        \"cpe:2.3:a:asmember_project:asmember:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"assistant\": [\n        \"cpe:2.3:a:fastlinemedia:assistant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"astra-import-export\": [\n        \"cpe:2.3:a:brainstormforce:import_\\\\/_export_customizer_settings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"astra-sites\": [\n        \"cpe:2.3:a:brainstormforce:starter_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"astra-widgets\": [\n        \"cpe:2.3:a:brainstormforce:astra_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"atarim-visual-collaboration\": [\n        \"cpe:2.3:a:atarim:atarim:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"athemes-addons-for-elementor-lite\": [\n        \"cpe:2.3:a:athemes:athemes_addons_for_elementor:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"attendance-manager\": [\n        \"cpe:2.3:a:sukimalab:attendance_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"attire-blocks\": [\n        \"cpe:2.3:a:wpattire:attire_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"attributes-for-blocks\": [\n        \"cpe:2.3:a:websevendev:attributes_for_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"audio-merchant\": [\n        \"cpe:2.3:a:myaudiomerchant:audio_merchant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"audio-player-with-playlist-ultimate\": [\n        \"cpe:2.3:a:essentialplugin:audio_player_with_playlist_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"authldap\": [\n        \"cpe:2.3:a:heiglandreas:authldap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"author-avatars\": [\n        \"cpe:2.3:a:bearne:author_avatars_list\\\\/block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"author-bio-box\": [\n        \"cpe:2.3:a:author_bio_box_project:author_bio_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"author-discussion\": [\n        \"cpe:2.3:a:brandonwhite:author_discussion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"authorizenet-payment-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:ithemes:authorize.net:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"authors-list\": [\n        \"cpe:2.3:a:wpkube:authors_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-delete-posts\": [\n        \"cpe:2.3:a:auto_delete_posts_project:auto_delete_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-excerpt-everywhere\": [\n        \"cpe:2.3:a:josie:auto_excerpt_everywhere:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-featured-image\": [\n        \"cpe:2.3:a:kayueyeung:auto_featured_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-hyperlink-urls\": [\n        \"cpe:2.3:a:auto-hyperlink_urls_project:auto-hyperlink_urls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-iframe\": [\n        \"cpe:2.3:a:toolstack:auto_iframe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-limit-posts-reloaded\": [\n        \"cpe:2.3:a:thefreewindows:auto_limit_posts_reloaded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-listings\": [\n        \"cpe:2.3:a:wpautolistings:auto_listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-login-new-user-after-registration\": [\n        \"cpe:2.3:a:auto_login_new_user_after_registration_project:auto_login_new_user_after_registration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-login-when-resister\": [\n        \"cpe:2.3:a:enable\\\\/disable_auto_login_when_register_project:enable\\\\/disable_auto_login_when_register:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-more-tag\": [\n        \"cpe:2.3:a:auto_more_tag_project:auto_more_tag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-post-thumbnail\": [\n        \"cpe:2.3:a:cm-wp:auto_featured_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-prune-posts\": [\n        \"cpe:2.3:a:klarned:auto_prune_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-refresh-single-page\": [\n        \"cpe:2.3:a:rymera:auto_refresh_single_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-rename-media-on-upload\": [\n        \"cpe:2.3:a:auto_rename_media_on_upload_project:auto_rename_media_on_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-thickbox-plus\": [\n        \"cpe:2.3:a:attosoft:auto_thickbox_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-upload-images\": [\n        \"cpe:2.3:a:auto_upload_images_project:auto_upload_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auto-youtube-importer\": [\n        \"cpe:2.3:a:secondlinethemes:auto_youtube_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"autolinks\": [\n        \"cpe:2.3:a:autolinks_project:autolinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"automatic-youtube-video-posts\": [\n        \"cpe:2.3:a:ternstyle:automatic_youtube_video_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"automatorwp\": [\n        \"cpe:2.3:a:automatorwp:automatorwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"autoptimize\": [\n        \"cpe:2.3:a:autoptimize:autoptimize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"autotitle-for-wordpress\": [\n        \"cpe:2.3:a:unalignedcode:autotitle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auxin-elements\": [\n        \"cpe:2.3:a:averta:shortcodes_and_extra_features_for_phlox_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auxin-portfolio\": [\n        \"cpe:2.3:a:averta:auxinportfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auyautochat-for-wp\": [\n        \"cpe:2.3:a:autochat:automatic_conversation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"availability-calendar\": [\n        \"cpe:2.3:a:offshorewebmaster:availability_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"avalex\": [\n        \"cpe:2.3:a:avalex:avalex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"avartan-slider-lite\": [\n        \"cpe:2.3:a:solwininfotech:avartan-slider-lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"avchat-3\": [\n        \"cpe:2.3:a:avchat.net:avchat_video_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"avcp\": [\n        \"cpe:2.3:a:wpgov:anac_xml_bandi_di_gara:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"avenirsoft-directdownload\": [\n        \"cpe:2.3:a:avenirsoft:directdownload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aviary-image-editor-add-on-for-gravity-forms\": [\n        \"cpe:2.3:a:aviary_image_editor_add-on_for_gravity_forms_project:aviary_image_editor_add-on_for_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"aweber-web-form-widget\": [\n        \"cpe:2.3:a:aweber:aweber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awesome-filterable-portfolio\": [\n        \"cpe:2.3:a:awesome_filterable_portfolio_project:awesome_filterable_portfolio:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:brinidesigner:awesome_filterable_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awesome-support\": [\n        \"cpe:2.3:a:awesomesupport:awesome_support_wordpress_helpdesk_\\\\\\u0026_support:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:getawesomesupport:awesome_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awesome-weather\": [\n        \"cpe:2.3:a:awesome_weather_widget_project:awesome_weather_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awin-advertiser-tracking\": [\n        \"cpe:2.3:a:awin:awin_-_advertiser_tracking_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awin-data-feed\": [\n        \"cpe:2.3:a:awin:awin_data_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"awsm-team\": [\n        \"cpe:2.3:a:awsm:awsm_team:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"axle-demo-importer\": [\n        \"cpe:2.3:a:axlethemes:axle_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ays-chatgpt-assistant\": [\n        \"cpe:2.3:a:ays-pro:chatgpt_assistant:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"ays-facebook-popup-likebox\": [\n        \"cpe:2.3:a:ays-pro:popup_box:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:aysproextensions:popup_like:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ays-popup-box\": [\n        \"cpe:2.3:a:ays-pro:popup_box:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ays-pro:popup_box:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"azan\": [\n        \"cpe:2.3:a:wp-master:azan:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"azindex\": [\n        \"cpe:2.3:a:azindex_project:azindex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"azurecurve-toggle-showhide\": [\n        \"cpe:2.3:a:azurecurve:toggle_show\\\\/hide:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"b2bking-wholesale-for-woocommerce\": [\n        \"cpe:2.3:a:webwizards:b2bking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ba-book-everything\": [\n        \"cpe:2.3:a:ba-booking:ba_book_everything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ba-plus-before-after-image-slider-free\": [\n        \"cpe:2.3:a:aluka:ba_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"back-button-widget\": [\n        \"cpe:2.3:a:wpfactory:back_button_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"back-link-tracker\": [\n        \"cpe:2.3:a:bhaskardhote:back_link_tracker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"back-to-the-top-button\": [\n        \"cpe:2.3:a:yydevelopment:back_to_the_top_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backup\": [\n        \"cpe:2.3:a:backup-guard:backup_guard:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:jetbackup:jetbackup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backup-backup\": [\n        \"cpe:2.3:a:backupbliss:backup_migration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backup-bolt\": [\n        \"cpe:2.3:a:backupbolt:backup_bolt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backup-wd\": [\n        \"cpe:2.3:a:web-dorado:backup-wd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backuply\": [\n        \"cpe:2.3:a:softaculous:backuply:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backupwordpress\": [\n        \"cpe:2.3:a:xibodevelopment:backupwordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"backwpup\": [\n        \"cpe:2.3:a:inpsyde:backwpup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"badgeos\": [\n        \"cpe:2.3:a:badgeos:badgeos:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:badgeos:badgos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"baidu-submit-link\": [\n        \"cpe:2.3:a:wbolt:all-in-one_search_automatic_push_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"baidu-tongji-generator\": [\n        \"cpe:2.3:a:baidu-tongji-generator_project:baidu-tongji-generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bamazoo-button-generator\": [\n        \"cpe:2.3:a:bamazoo:button_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bamboo-columns\": [\n        \"cpe:2.3:a:bamboo_mcr:bamboo_columns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bandsintown\": [\n        \"cpe:2.3:a:bandsintown:bandsintown_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bank-mellat\": [\n        \"cpe:2.3:a:bank_mellat_project:bank_mellat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"banner-cycler\": [\n        \"cpe:2.3:a:banner_cycler_project:banner_cycler:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"banner-effect-header\": [\n        \"cpe:2.3:a:banner_effect_header_project:banner_effect_header:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"banner-management-for-woocommerce\": [\n        \"cpe:2.3:a:dotstore:woocommerce_category_banner_management:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:multidots:banner_management_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bannerlid\": [\n        \"cpe:2.3:a:web_lid:bannerlid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"barcode-scanner-lite-pos-to-manage-products-inventory-and-orders\": [\n        \"cpe:2.3:a:ukrsolution:barcode_scanner_and_inventory_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"basic-interactive-world-map\": [\n        \"cpe:2.3:a:wpmapplugins:basic_interactive_world_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"baslider\": [\n        \"cpe:2.3:a:nextcode:image_slider_by_nextcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"basticom-framework\": [\n        \"cpe:2.3:a:basticom:framework:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"batch-cat\": [\n        \"cpe:2.3:a:batch_cat_project:batch_cat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bb-bootstrap-cards\": [\n        \"cpe:2.3:a:brainstormforce:cards_for_beaver_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ultimateaddons:cards_for_beaver_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bb-plugin\": [\n        \"cpe:2.3:a:fastlinemedia:beaver_builder:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"bbp-core\": [\n        \"cpe:2.3:a:spider-themes:bbp_core:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbp-move-topics\": [\n        \"cpe:2.3:a:bbpress_move_topics_project:bbpress_move_topics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbp-style-pack\": [\n        \"cpe:2.3:a:rewweb:bbp_style_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbp-toolkit\": [\n        \"cpe:2.3:a:bbp-toolkit_project:bbp-toolkit:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:casier:bbpress_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbp-voting\": [\n        \"cpe:2.3:a:wpforthewin:bbpress_voting:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbpress\": [\n        \"cpe:2.3:a:bbpress:bbpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbpress-notify-nospam\": [\n        \"cpe:2.3:a:usestrict:bbpress_notify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bbs-e-popup\": [\n        \"cpe:2.3:a:bbsetheme:bbs_e-popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bcorp-shortcodes\": [\n        \"cpe:2.3:a:bcorp_shortcodes_project:bcorp_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bdthemes-element-pack-lite\": [\n        \"cpe:2.3:a:bdthemes:element_pack:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"bdthemes-element-pack-lite#tags\": [\n        \"cpe:2.3:a:bdthemes:element_pack:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"bdthemes-prime-slider-lite\": [\n        \"cpe:2.3:a:bdthemes:prime_slider:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"bdvs-password-reset\": [\n        \"cpe:2.3:a:bedevious:password_reset_with_code_for_wordpress_rest_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"be-popia-compliant\": [\n        \"cpe:2.3:a:web-x:be-popia-compliant:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-x:be_popia_compliant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"beaf-before-and-after-gallery\": [\n        \"cpe:2.3:a:themefic:ultimate_before_after_image_slider_\\\\\\u0026_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"beam-me-up-scotty\": [\n        \"cpe:2.3:a:outtheboxthemes:beam_me_up_scotty:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"beautiful-and-responsive-cookie-consent\": [\n        \"cpe:2.3:a:beautiful-cookie-banner:beautiful_cookie_consent_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"beaver-builder-lite-version\": [\n        \"cpe:2.3:a:fastlinemedia:beaver_builder:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"beds24-online-booking\": [\n        \"cpe:2.3:a:beds24:online_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bee-layer-slider\": [\n        \"cpe:2.3:a:aumsrini:bee_layer_slider:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"beeteam368-extensions\": [\n        \"cpe:2.3:a:beeteam368:vidmov:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"before-after-image-slider\": [\n        \"cpe:2.3:a:swadeshswain:before_after_image_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bellows-accordion-menu\": [\n        \"cpe:2.3:a:sevenspark:bellows_accordion_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bertha-ai-free\": [\n        \"cpe:2.3:a:bertha:bertha_ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"best-restaurant-menu-by-pricelisto\": [\n        \"cpe:2.3:a:pricelisto:great_restaurant_menu_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bestbooks\": [\n        \"cpe:2.3:a:presspage:bestbooks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-anchor-links\": [\n        \"cpe:2.3:a:ludek:better_anchor_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-elementor-addons\": [\n        \"cpe:2.3:a:kitforest:better_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-follow-button-for-jetpack\": [\n        \"cpe:2.3:a:antonpug:better_flow_button_for_jetpack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-font-awesome\": [\n        \"cpe:2.3:a:better_font_awesome_project:better_font_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-robots-txt\": [\n        \"cpe:2.3:a:pagup:better_robots.txt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-search\": [\n        \"cpe:2.3:a:webberzone:better_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-search-replace\": [\n        \"cpe:2.3:a:deliciousbrains:better_search_replace:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpengine:better_search_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"better-wp-security\": [\n        \"cpe:2.3:a:ithemes:ithemes_security:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ithemes:security:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:solidwp:solid_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"betterdocs\": [\n        \"cpe:2.3:a:wpdeveloper:betterdocs:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdeveloper:betterdocs:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"betterlinks\": [\n        \"cpe:2.3:a:wpdeveloper:betterlinks:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"bft-autoresponder\": [\n        \"cpe:2.3:a:kibokolabs:arigato_autoresponder_and_newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bg-biblie-references\": [\n        \"cpe:2.3:a:bg_bible_references_project:bg_bible_references:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bible-text\": [\n        \"cpe:2.3:a:mark8barnes:bible_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bigbluebutton\": [\n        \"cpe:2.3:a:blindsidenetworks:bigbluebutton:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bigbuy-wc-dropshipping-connector\": [\n        \"cpe:2.3:a:bigbuy:dropshipping_connector_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bigcommerce\": [\n        \"cpe:2.3:a:bigcommerce:bigcommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bigcontact\": [\n        \"cpe:2.3:a:bigcontact_contact_page_project:bigcontact_contact_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bigmart-elements\": [\n        \"cpe:2.3:a:wpcirqle:bigmart_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bilingual-linker\": [\n        \"cpe:2.3:a:ylefebvre:bilingual_linker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"billingo\": [\n        \"cpe:2.3:a:official_integration_for_billingo_project:official_integration_for_billingo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bing-site-verification-using-meta-tag\": [\n        \"cpe:2.3:a:bing_site_verification_plugin_using_meta_tag_project:bing_site_verification_plugin_using_meta_tag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"birthdays-widget\": [\n        \"cpe:2.3:a:birthdays_widget_project:birthdays_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bit-assist\": [\n        \"cpe:2.3:a:bitapps:bit_assist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bit-form\": [\n        \"cpe:2.3:a:bitapps:bit_form:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:bitapps:contact_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bit-social\": [\n        \"cpe:2.3:a:bitapps:bit_social:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bitcoin-faucet\": [\n        \"cpe:2.3:a:bitcoin\\\\/altcoin_faucet_project:bitcoin\\\\/altcoin_faucet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"biteship\": [\n        \"cpe:2.3:a:biteship:biteship:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bj-lazy-load\": [\n        \"cpe:2.3:a:angrycreative:bj_lazy_load:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"black-widgets\": [\n        \"cpe:2.3:a:modernaweb:black_widgets_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blackhole-bad-bots\": [\n        \"cpe:2.3:a:plugin-planet:blackhole_for_bad_bots:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"block-for-font-awesome\": [\n        \"cpe:2.3:a:getbutterfly:block_for_font_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"block-options\": [\n        \"cpe:2.3:a:extendify:editorskit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"block-spam-by-math-reloaded\": [\n        \"cpe:2.3:a:jwpegram:block_spam_by_math_reloaded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"block-specific-plugin-updates\": [\n        \"cpe:2.3:a:dineshkarki:block_plugin_update:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blockart-blocks\": [\n        \"cpe:2.3:a:wpblockart:blockart_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blockonomics-bitcoin-payments\": [\n        \"cpe:2.3:a:blockonomics:blockonomics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blockspare\": [\n        \"cpe:2.3:a:blockspare:blockspare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blocksy-companion\": [\n        \"cpe:2.3:a:creativethemes:blocksy_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog-designer-pack\": [\n        \"cpe:2.3:a:infornweb:news_\\\\\\u0026_blog_designer_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog-filter\": [\n        \"cpe:2.3:a:awplife:blog_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog-floating-button\": [\n        \"cpe:2.3:a:meril:blog_floating_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog-in-blog\": [\n        \"cpe:2.3:a:blog-in-blog_project:blog-in-blog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog-posts-and-category-for-elementor\": [\n        \"cpe:2.3:a:plugin-devs:blog\\\\,_posts_and_category_filter_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blog2social\": [\n        \"cpe:2.3:a:adenion:blog2social:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blogger-importer\": [\n        \"cpe:2.3:a:wordpress:blogger_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blogintroduction-wordpress-plugin\": [\n        \"cpe:2.3:a:kimhuebel:blog_introduction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blogmentor\": [\n        \"cpe:2.3:a:auburnforest:blogmentor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blossomthemes-email-newsletter\": [\n        \"cpe:2.3:a:blossomthemes:blossomthemes_email_newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blrt-wp-embed\": [\n        \"cpe:2.3:a:blrt:blrt_wp_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blue-admin\": [\n        \"cpe:2.3:a:blue-admin_project:blue-admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bluet-keywords-tooltip-generator\": [\n        \"cpe:2.3:a:tooltipy:tooltipy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bmi-bmr-calculator\": [\n        \"cpe:2.3:a:bmi_bmr_calculator_project:bmi_bmr_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bmi-calculator-shortcode\": [\n        \"cpe:2.3:a:bmicalculator:bmi-calculator-shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bmlt-meeting-map\": [\n        \"cpe:2.3:a:bmlt:meeting_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bmlt-wordpress-satellite-plugin\": [\n        \"cpe:2.3:a:bmlt:meeting_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bne-testimonials\": [\n        \"cpe:2.3:a:bnecreative:bne_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bnfw\": [\n        \"cpe:2.3:a:madewithfuel:better_notifications_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bold-page-builder\": [\n        \"cpe:2.3:a:bold-themes:bold_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boldgrid-backup\": [\n        \"cpe:2.3:a:boldgrid:total_upkeep:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boldgrid-easy-seo\": [\n        \"cpe:2.3:a:boldgrid:easy_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bonus-for-woo\": [\n        \"cpe:2.3:a:computy:bonus_for_woo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"book-appointment-online\": [\n        \"cpe:2.3:a:oz-plugin:book_appointment_online:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking\": [\n        \"cpe:2.3:a:booking_calendar_project:booking_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbookingcalendar:booking_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbookingcalendar:wp_booking_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-and-rental-manager-for-woocommerce\": [\n        \"cpe:2.3:a:magepeople:booking_\\\\\\u0026_rental_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-calendar\": [\n        \"cpe:2.3:a:wpdevart:booking_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-calendar-contact-form\": [\n        \"cpe:2.3:a:codepeople:booking_calendar_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-manager\": [\n        \"cpe:2.3:a:oplugins:booking_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-package\": [\n        \"cpe:2.3:a:saasproject:booking_package:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-sms\": [\n        \"cpe:2.3:a:mediaburst:booking_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mediaburst:booking_calendar_sms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"booking-system\": [\n        \"cpe:2.3:a:pinpoint:pinpoint_booking_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookingcom-banner-creator\": [\n        \"cpe:2.3:a:booking:banner_creator:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bookingholdings:booking.com_banner_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookingcom-product-helper\": [\n        \"cpe:2.3:a:bookingholdings:booking.com_product_helper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookingpress-appointment-booking\": [\n        \"cpe:2.3:a:reputeinfosystems:bookingpress:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"bookit\": [\n        \"cpe:2.3:a:stylemixthemes:bookit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookly-responsive-appointment-booking-tool\": [\n        \"cpe:2.3:a:booking-wp-plugin:bookly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookmarkify\": [\n        \"cpe:2.3:a:bookmarkify_project:bookmarkify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookshelf\": [\n        \"cpe:2.3:a:bookshelf_project:bookshelf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bookster\": [\n        \"cpe:2.3:a:wpbookster:bookster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boom-fest\": [\n        \"cpe:2.3:a:ibsofts:boom_fest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boostify-header-footer-builder\": [\n        \"cpe:2.3:a:woostify:boostify_header_footer_builder_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"border-loading-bar\": [\n        \"cpe:2.3:a:border_loading_bar_project:border_loading_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"borderless\": [\n        \"cpe:2.3:a:visualmodo:borderless:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bosa-elementor-for-woocommerce\": [\n        \"cpe:2.3:a:bosathemes:bosa_elementor_addons_and_templates_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boxzilla\": [\n        \"cpe:2.3:a:ibericode:boxzilla:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-activity-plus-reloaded\": [\n        \"cpe:2.3:a:buddydev:activity_plus_reloaded_for_buddypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-better-messages\": [\n        \"cpe:2.3:a:wordplus:better_messages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-cover\": [\n        \"cpe:2.3:a:buddypress_cover_project:buddypress_cover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-email-assign-templates\": [\n        \"cpe:2.3:a:shanebp:bp_email_assign_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-profile-search\": [\n        \"cpe:2.3:a:dontdream:bp_profile_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-profile-shortcodes-extra\": [\n        \"cpe:2.3:a:venutius:bp_profile_shortcodes_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bp-social-connect\": [\n        \"cpe:2.3:a:vibethemes:bp_social_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bpmnio\": [\n        \"cpe:2.3:a:camunda:bpmn.io:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bradmax-player\": [\n        \"cpe:2.3:a:bradmax:bradmax_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"branda-white-labeling\": [\n        \"cpe:2.3:a:wpmudev:branda:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"brave-popup-builder\": [\n        \"cpe:2.3:a:getbrave:brave:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bravo-translate\": [\n        \"cpe:2.3:a:guelbetech:bravo_translate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"breadcrumbs-by-menu\": [\n        \"cpe:2.3:a:holest:breadcrumbs_by_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bricksable\": [\n        \"cpe:2.3:a:bricksable:bricksable_for_bricks_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"brizy\": [\n        \"cpe:2.3:a:brizy:brizy-page_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:brizy:brizy:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:brizy:brizy:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:brizy:brizy:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"broadstreet\": [\n        \"cpe:2.3:a:broadstreetads:broadstreet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"broken-link-checker\": [\n        \"cpe:2.3:a:managewp:broken_link_checker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"broken-link-checker-for-youtube\": [\n        \"cpe:2.3:a:superblogme:broken_link_checker_for_youtube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"broken-link-manager\": [\n        \"cpe:2.3:a:broken_link_manager_project:broken_link_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:k-78:broken_link_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"broken-link-notifier\": [\n        \"cpe:2.3:a:pluginrx:broken_link_notifier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"browser-shots\": [\n        \"cpe:2.3:a:prothemedesign:browser_screenshots:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"brute-force-login-protection\": [\n        \"cpe:2.3:a:fresh-media:brute_force_login_protection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"brutebank\": [\n        \"cpe:2.3:a:brutebank:brutebank:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bs-shortcode-ultimate\": [\n        \"cpe:2.3:a:addonmaster:bootstrap_shortcodes_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bsk-contact-form-7-blacklist\": [\n        \"cpe:2.3:a:bannersky:bsk_contact_form_7_blacklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bsk-gravityforms-blacklist\": [\n        \"cpe:2.3:a:bannersky:bsk_forms_blacklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bsk-pdf-manager\": [\n        \"cpe:2.3:a:bannersky:bsk_pdf_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bsuite\": [\n        \"cpe:2.3:a:bsuite_project:bsuite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bubble-menu\": [\n        \"cpe:2.3:a:wow-company:bubble_menu:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"buddybadges\": [\n        \"cpe:2.3:a:buddybadges_project:buddybadges:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddyforms\": [\n        \"cpe:2.3:a:themekraft:buddyforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddymeet\": [\n        \"cpe:2.3:a:cytechmobile:buddymeet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress\": [\n        \"cpe:2.3:a:buddypress:buddypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress-activity-plus\": [\n        \"cpe:2.3:a:incsub:buddypress-activity-plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress-docs\": [\n        \"cpe:2.3:a:boonebgorges:buddypress_docs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress-global-search\": [\n        \"cpe:2.3:a:buddyboss:buddypress_global_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress-media\": [\n        \"cpe:2.3:a:rtcamp:rtmedia:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buddypress-members-only\": [\n        \"cpe:2.3:a:membersonly:buddypress_members_only:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bug-library\": [\n        \"cpe:2.3:a:bug_library_project:bug_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"build-app-online\": [\n        \"cpe:2.3:a:buildapp:build_app_online:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulgarisation-for-woocommerce\": [\n        \"cpe:2.3:a:autopolis:bulgarisation_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-comment-remove\": [\n        \"cpe:2.3:a:supremo:bulk_comment_remove:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-delete-users-by-email\": [\n        \"cpe:2.3:a:speakdigital:bulk_delete_users_by_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-edit-user-profiles-in-spreadsheet\": [\n        \"cpe:2.3:a:vegacorp:bulk_edit_and_create_user_profiles_-_wp_sheet_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-editor\": [\n        \"cpe:2.3:a:pluginus:wolf_-_wordpress_posts_bulk_editor_and_products_manager_professional:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-image-resizer\": [\n        \"cpe:2.3:a:giuliopanda:bulk_images_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-noindex-nofollow-toolkit-by-mad-fish\": [\n        \"cpe:2.3:a:madfishdigital:bulk_noindex_\\\\\\u0026_nofollow_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulk-page-creator\": [\n        \"cpe:2.3:a:bulk_page_creator_project:bulk_page_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulletin-announcements\": [\n        \"cpe:2.3:a:bulletin:announcement_\\\\\\u0026_notification_banner_-_bulletin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bulletproof-security\": [\n        \"cpe:2.3:a:ait-pro:bulletproof_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"burst-statistics\": [\n        \"cpe:2.3:a:burst-statistics:burst_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bus-ticket-booking-with-seat-reservation\": [\n        \"cpe:2.3:a:mage-people:bus_ticket_booking_with_seat_reservation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business\": [\n        \"cpe:2.3:a:snilesh:business:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business-directory-plugin\": [\n        \"cpe:2.3:a:businessdirectoryplugin:business_directory:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:strategy11:business_directory_plugin_-_easy_listing_directories:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business-hours-indicator\": [\n        \"cpe:2.3:a:business_hours_indicator_project:business_hours_indicator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business-manager\": [\n        \"cpe:2.3:a:bzmngr:business_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business-reviews-wp\": [\n        \"cpe:2.3:a:radiustheme:widget_for_google_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"button-block\": [\n        \"cpe:2.3:a:bplugins:button_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"button-contact-vr\": [\n        \"cpe:2.3:a:buttonizer:call_\\\\/_chat_\\\\/_contact_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"button-generation\": [\n        \"cpe:2.3:a:wow-company:button_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buttonizer-multifunctional-button\": [\n        \"cpe:2.3:a:buttonizer:buttonizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buttons-shortcode-and-widget\": [\n        \"cpe:2.3:a:otwthemes:buttons_shortcode_and_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buymeacoffee\": [\n        \"cpe:2.3:a:buymeacoffee:buy_me_a_coffee:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"buzzsprout-podcasting\": [\n        \"cpe:2.3:a:buzzsprout:buzzsprout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bverse-convert\": [\n        \"cpe:2.3:a:crossedcode:bverse_convert:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bwp-google-xml-sitemaps\": [\n        \"cpe:2.3:a:bwp-google-xml-sitemaps_project:bwp-google-xml-sitemaps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-featured-posts\": [\n        \"cpe:2.3:a:bestwebsoft:featured_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-google-analytics\": [\n        \"cpe:2.3:a:bestwebsoft:google_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-google-maps\": [\n        \"cpe:2.3:a:bestwebsoft:google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-latest-posts\": [\n        \"cpe:2.3:a:bestwebsoft:latest_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-linkedin\": [\n        \"cpe:2.3:a:bestwebsoft:linkedin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-pinterest\": [\n        \"cpe:2.3:a:bestwebsoft:pinterest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-popular-posts\": [\n        \"cpe:2.3:a:bestwebsoft:popular_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-smtp\": [\n        \"cpe:2.3:a:bestwebsoft:smtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bws-testimonials\": [\n        \"cpe:2.3:a:bestwebsoft:google_maps:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bxslider-wp\": [\n        \"cpe:2.3:a:bxslider_wp_project:bxslider_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"byconsole-woo-order-delivery-time\": [\n        \"cpe:2.3:a:byconsole:wooodt_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"c9-admin-dashboard\": [\n        \"cpe:2.3:a:covertnine:c9_admin_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"c9-blocks\": [\n        \"cpe:2.3:a:covertnine:c9_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cab-fare-calculator\": [\n        \"cpe:2.3:a:kanev:cab_fare_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cache-images\": [\n        \"cpe:2.3:a:cache_images_project:cache_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"caddy\": [\n        \"cpe:2.3:a:madebytribe:caddy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cafe-lite\": [\n        \"cpe:2.3:a:clever-soft:clever_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cleversoft:clever_addons_for_elementor:*:*:*:*:lite:wordpress:*:*\",\n        \"cpe:2.3:a:download_clever_addons_for_elementor_project:download_clever_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calculated-fields-form\": [\n        \"cpe:2.3:a:codepeople:calculated_fields_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calculator-builder\": [\n        \"cpe:2.3:a:wow-company:calculator-builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calculatorpro-calculators\": [\n        \"cpe:2.3:a:jgadbois:calculatorpro_calculators:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"caldera-forms\": [\n        \"cpe:2.3:a:calderaforms:caldera_forms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:calderalabs:caldera_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calendar\": [\n        \"cpe:2.3:a:kieranoshea:calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calendar-booking\": [\n        \"cpe:2.3:a:startbooking:scheduling_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calendar-plugin\": [\n        \"cpe:2.3:a:calendar_plugin_project:calendar_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calendarista-basic-edition\": [\n        \"cpe:2.3:a:typps:calendarista:*:*:*:*:basic:wordpress:*:*\"\n      ],\n      \"call-now-button\": [\n        \"cpe:2.3:a:callnowbutton:call_now_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"callbook-mobile-bar\": [\n        \"cpe:2.3:a:call\\\\\\u0026book_mobile_bar_project:call\\\\\\u0026book_mobile_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"callrail-phone-call-tracking\": [\n        \"cpe:2.3:a:callrail:callrail_phone_call_tracking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"campaign-monitor-wp\": [\n        \"cpe:2.3:a:fatcatapps:campaign_monitor_optin_cat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"campaign-url-builder\": [\n        \"cpe:2.3:a:campaign_url_builder_project:campaign_url_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"camptix\": [\n        \"cpe:2.3:a:automattic:camptix:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:automattic:camptix_event_ticketing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"campus-explorer-widget\": [\n        \"cpe:2.3:a:campusexplorer:widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cancel-order-request-woocommerce\": [\n        \"cpe:2.3:a:piwebsolution:cancel_order_request_\\\\/_return_order_\\\\/_repeat_order_\\\\/_reorder_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"candidate-application-form\": [\n        \"cpe:2.3:a:candidate-application-form_project:candidate-application-form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"canto\": [\n        \"cpe:2.3:a:canto:canto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"canvasflow\": [\n        \"cpe:2.3:a:canvasflow:canvasflow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"canvasio3d-light\": [\n        \"cpe:2.3:a:virtuellwerk:canvasio3d_light:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"capability-manager-enhanced\": [\n        \"cpe:2.3:a:publishpress:capabilities:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"captain-slider\": [\n        \"cpe:2.3:a:captain-slider_project:captain-slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"captainform\": [\n        \"cpe:2.3:a:captainform:captainform:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"captcha\": [\n        \"cpe:2.3:a:bestwebsoft:captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"captchinoo-captcha-for-login-form-protection\": [\n        \"cpe:2.3:a:wp-buy:captchinoo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"car-rental\": [\n        \"cpe:2.3:a:bestwebsoft:car_rental:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cardealer\": [\n        \"cpe:2.3:a:car_dealer_project:car_dealer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cardoza-ajax-search\": [\n        \"cpe:2.3:a:vinojcardoza:ajax_post_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cardoza-facebook-like-box\": [\n        \"cpe:2.3:a:facebook_like_box_project:facebook_like_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cardoza-wordpress-poll\": [\n        \"cpe:2.3:a:cardozatechnologies:wordpress_poll:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wordpress_poll_project:wordpress_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"caret-country-access-limit\": [\n        \"cpe:2.3:a:caret:country_access_limit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"carousel-anything\": [\n        \"cpe:2.3:a:webdevocean:carousel_anything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"carousel-ck\": [\n        \"cpe:2.3:a:ceikay:carousel_ck:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"carousel-slider\": [\n        \"cpe:2.3:a:majeedraza:carousel_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"carrrot\": [\n        \"cpe:2.3:a:carrrot:carrrot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cars-seller-auto-classifieds-script\": [\n        \"cpe:2.3:a:cars-seller-auto-classifieds-script_project:cars-seller-auto-classifieds-script:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cart-tracking-for-woocommerce\": [\n        \"cpe:2.3:a:wpdever:cart_tracking_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cart66-lite\": [\n        \"cpe:2.3:a:reality66:cart66_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cartflows\": [\n        \"cpe:2.3:a:cartflows:cartflows:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:cartflows:cartflows:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"cashtomer\": [\n        \"cpe:2.3:a:cashtomer_project:cashtomer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catalog\": [\n        \"cpe:2.3:a:web-dorado:spidercatalog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catalyst-connect-client-portal\": [\n        \"cpe:2.3:a:catalystconnect:catalyst_connect_zoho_crm_client_portal:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:catalystconnect:zoho_crm_client_portal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-breadcrumb\": [\n        \"cpe:2.3:a:catchplugins:catch_breadcrumb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-dark-mode\": [\n        \"cpe:2.3:a:catchthemes:catch_dark_mode:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"catch-scroll-progress-bar\": [\n        \"cpe:2.3:a:catchplugins:catch_scroll_progress_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-sticky-menu\": [\n        \"cpe:2.3:a:catchplugins:catch_sticky_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-themes-demo-import\": [\n        \"cpe:2.3:a:catchplugins:catch_themes_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-under-construction\": [\n        \"cpe:2.3:a:catchplugins:catch_under_construction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-web-tools\": [\n        \"cpe:2.3:a:catchplugins:catch_web_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"categorify\": [\n        \"cpe:2.3:a:frenify:categorify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"category-post-list-widget\": [\n        \"cpe:2.3:a:starkdigital:category_post_list_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"category-posts\": [\n        \"cpe:2.3:a:zephyrwest:category_posts_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"category-seo-meta-tags\": [\n        \"cpe:2.3:a:bala-krishna:category_seo_meta_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"category-specific-rss-feed-menu\": [\n        \"cpe:2.3:a:tipsandtricks-hq:category_specific_rss_feed_subscription:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cats-job-listings\": [\n        \"cpe:2.3:a:catsone:cats_job_listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cbxgooglemap\": [\n        \"cpe:2.3:a:codeboxr:cbx_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cbxpetition\": [\n        \"cpe:2.3:a:codeboxr:cbx_petition_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cc-bmi-calculator\": [\n        \"cpe:2.3:a:calculatorsworld:cc_bmi_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cc-custom-taxonmy\": [\n        \"cpe:2.3:a:cc_custom_taxonomy_project:cc_custom_taxonomy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cds-simple-seo\": [\n        \"cpe:2.3:a:coleds:simple_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ce21-suite\": [\n        \"cpe:2.3:a:ce21:ce21_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf-geoplugin\": [\n        \"cpe:2.3:a:infinitumform:geo_controller:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-constant-contact\": [\n        \"cpe:2.3:a:crmperks:integration_for_constant_contact_and_contact_form_7\\\\,_wpforms\\\\,_elementor\\\\,_ninja:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-email-add-on\": [\n        \"cpe:2.3:a:krishaweb:contact_form_7_email_add_on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-google-sheets-connector\": [\n        \"cpe:2.3:a:gsheetconnector:cf7_google_sheets_connector:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"cf7-invisible-recaptcha\": [\n        \"cpe:2.3:a:vsourz:cf7_invisible_recaptcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-message-filter\": [\n        \"cpe:2.3:a:kofimokome:message_filter_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-redirect-thank-you-page\": [\n        \"cpe:2.3:a:wpplugin:contact_form_7_redirect_\\\\\\u0026_thank_you_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-repeatable-fields\": [\n        \"cpe:2.3:a:felipeelia:contact_form_7_repeatable_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-salesforce\": [\n        \"cpe:2.3:a:crmperks:integration_for_salesforce_and_contact_form_7\\\\,_wpforms\\\\,_elementor\\\\,_ninja_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-store-to-db-lite\": [\n        \"cpe:2.3:a:accesspressthemes:form_store_to_db:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-submission-dom-tracking\": [\n        \"cpe:2.3:a:apasionados:submission_dom_tracking_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-widget-elementor\": [\n        \"cpe:2.3:a:voidcoders:void_contact_form_7_widget_for_elementor_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cf7-zoho\": [\n        \"cpe:2.3:a:crmperks:integration_for_contact_form_7_and_zoho_crm\\\\,_bigin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cforms2\": [\n        \"cpe:2.3:a:cformsii_project:cformsii:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chained-quiz\": [\n        \"cpe:2.3:a:kibokolabs:chained_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chalet-montagne-com-tools\": [\n        \"cpe:2.3:a:alpium:chalet-montagne.com_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chamber-dashboard-business-directory\": [\n        \"cpe:2.3:a:chamber_dashboard_business_directory_project:chamber_dashboard_business_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chameleon\": [\n        \"cpe:2.3:a:chameleon_project:chameleon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chameleon-css\": [\n        \"cpe:2.3:a:chameleon_css_project:chameleon_css:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"change-memory-limit\": [\n        \"cpe:2.3:a:simon99:change_memory_limit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"change-table-prefix\": [\n        \"cpe:2.3:a:youngtechleads:change_table_prefix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"change-uploaded-file-permissions\": [\n        \"cpe:2.3:a:change_uploaded_file_permissions_project:change_uploaded_file_permissions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"change-wp-admin-login\": [\n        \"cpe:2.3:a:wpexperts:all_in_one_login:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"charitable\": [\n        \"cpe:2.3:a:wpbeginner:charitable:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:wpcharitable:charitable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"charity-addon-for-elementor\": [\n        \"cpe:2.3:a:nicheaddons:charity_addon_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chart-builder\": [\n        \"cpe:2.3:a:ays-pro:chartify:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"chat-bee\": [\n        \"cpe:2.3:a:chat_bee_project:chat_bee:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chat-bubble\": [\n        \"cpe:2.3:a:bluecoral:chat_bubble:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chatbot\": [\n        \"cpe:2.3:a:quantumcloud:wpbot:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"chatbot-chatgpt\": [\n        \"cpe:2.3:a:kognetics:kognetiks_chatbot:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:kognetiks:chatbot:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:kognetiks:kognetiks_chatbot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chatbot-support-ai\": [\n        \"cpe:2.3:a:mansurahamed:chatbot_support_ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chatplusjp\": [\n        \"cpe:2.3:a:chatplus:chatplusjp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chaty\": [\n        \"cpe:2.3:a:premio:chaty:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:premio:floating_chat_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"check-email\": [\n        \"cpe:2.3:a:check_email_project:check_email:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:check_\\\\\\u0026_log_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"checklist\": [\n        \"cpe:2.3:a:checklist:checklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"checkout-for-paypal\": [\n        \"cpe:2.3:a:noorsplugin:checkout_for_paypal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"checkout-plugins-stripe-woo\": [\n        \"cpe:2.3:a:checkoutplugins:stripe_payments_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chp-ads-block-detector\": [\n        \"cpe:2.3:a:sureshchand:chp_ads_block_detector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"christian-science-bible-lesson-subjects\": [\n        \"cpe:2.3:a:sharethepractice:christian_science_bible_lesson_subjects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"chronosly-events-calendar\": [\n        \"cpe:2.3:a:chronosly-events-calendar_project:chronosly-events-calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"church-admin\": [\n        \"cpe:2.3:a:church_admin_project:church_admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"circle-image-slider-with-lightbox\": [\n        \"cpe:2.3:a:i13websolution:team_circle_image_slider_with_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"circles-gallery\": [\n        \"cpe:2.3:a:greentreelabs:circles_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cits-support-svg-webp-media-upload\": [\n        \"cpe:2.3:a:ashik:cits_support_svg\\\\,_webp_media_and_ttf\\\\,otf_file_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ckeditor-for-wordpress\": [\n        \"cpe:2.3:a:cksource:ckeditor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"classic-editor-and-classic-widgets\": [\n        \"cpe:2.3:a:wpgrim:classic_editor_and_classic_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"classified-listing\": [\n        \"cpe:2.3:a:radiustheme:classified_listing:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:radiustheme:classified_listing:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"classyfrieds\": [\n        \"cpe:2.3:a:classyfrieds_project:classyfrieds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clean-login\": [\n        \"cpe:2.3:a:codection:clean_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cleantalk-spam-protect\": [\n        \"cpe:2.3:a:cleantalk:anti-spam:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cleantalk:spam_protection\\\\,_antispam\\\\,_firewall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clearfy\": [\n        \"cpe:2.3:a:cm-wp:clearfy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clerkio\": [\n        \"cpe:2.3:a:clerk:clerk.io:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clever-fox\": [\n        \"cpe:2.3:a:nayrathemes:clever_fox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"click-datos-lopd\": [\n        \"cpe:2.3:a:clickdatos:proteccion_de_datos_rgpd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"click-pledge-wpjobboard\": [\n        \"cpe:2.3:a:wpjobboard:wpjobboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"click-to-call-or-chat-buttons\": [\n        \"cpe:2.3:a:digitalblue:click_to_call_or_chat_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"click-to-chat-for-whatsapp\": [\n        \"cpe:2.3:a:holithemes:click_to_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"click-to-tweet\": [\n        \"cpe:2.3:a:clicktotweet:click_to_tweet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clickdesk-live-support-chat-plugin\": [\n        \"cpe:2.3:a:clickdesk:clickdesk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clickwhale\": [\n        \"cpe:2.3:a:flowdee:clickwhale:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clictracker\": [\n        \"cpe:2.3:a:wp_clictracker_project:wp_clictracker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"client-dash\": [\n        \"cpe:2.3:a:realbigplugins:client_dash:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"client-portal\": [\n        \"cpe:2.3:a:cozmoslabs:client_portal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"client-portal-suitedash-login\": [\n        \"cpe:2.3:a:suitedash:client_portal_\\\\:suitedash_direct_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clio-grow-form\": [\n        \"cpe:2.3:a:clio:clio_grow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cliptakes\": [\n        \"cpe:2.3:a:cliptakes:cliptakes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clockwork-two-factor-authentication\": [\n        \"cpe:2.3:a:mediaburst:two-factor_authentication:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clone-menu\": [\n        \"cpe:2.3:a:afzalmultani:wp_clone_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cloudnet-sync\": [\n        \"cpe:2.3:a:cloudnet360:cloudnet360:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"clover-online-orders\": [\n        \"cpe:2.3:a:zaytech:smart_online_order_for_clover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"club-management-software\": [\n        \"cpe:2.3:a:swiftcrm:club-management-software:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cluevo-lms\": [\n        \"cpe:2.3:a:cluevo:learning_management_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-ad-changer\": [\n        \"cpe:2.3:a:cminds:cm_ad_changer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-answers\": [\n        \"cpe:2.3:a:cminds:cm_answers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-download-manager\": [\n        \"cpe:2.3:a:cminds:cm_download_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-email-blacklist\": [\n        \"cpe:2.3:a:cminds:cm_e-mail_blacklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-on-demand-search-and-replace\": [\n        \"cpe:2.3:a:cminds:cm_search_and_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-pop-up-banners\": [\n        \"cpe:2.3:a:cminds:cm_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-table-of-content\": [\n        \"cpe:2.3:a:cminds:cm_table_of_contents:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cm-video-lesson-manager\": [\n        \"cpe:2.3:a:cminds:video_lessons_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:creativemindssolutions:video_lessons_manager_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cmp-coming-soon-maintenance\": [\n        \"cpe:2.3:a:niteothemes:cmp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cms-commander-client\": [\n        \"cpe:2.3:a:cmscommander:cms_commander:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cms-press\": [\n        \"cpe:2.3:a:cms_press_project:cms_press:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cmyee-momentopress\": [\n        \"cpe:2.3:a:chrisyee:momentopress_for_momento360:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coblocks\": [\n        \"cpe:2.3:a:godaddy:coblocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"code-explorer\": [\n        \"cpe:2.3:a:bowo:code_explorer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"code-snippets\": [\n        \"cpe:2.3:a:code_snippets:code_snippets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codesnippets:code_snippets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"code-snippets-extended\": [\n        \"cpe:2.3:a:code_snippets_extended_project:code_snippets_extended:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codesnippets:code_snippets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"codebard-help-desk\": [\n        \"cpe:2.3:a:codebard:codebard_help_desk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"codecolorer\": [\n        \"cpe:2.3:a:codecolorer_project:codecolorer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"codelights-shortcodes-and-widgets\": [\n        \"cpe:2.3:a:codelights-shortcodes-and-widgets_project:codelights-shortcodes-and-widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"codepen-embedded-pen-shortcode\": [\n        \"cpe:2.3:a:codepen:codepen:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"codepress-admin-columns\": [\n        \"cpe:2.3:a:admincolumns:admin_columns:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:admincolumns:admin_columns:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"codestyling-localization\": [\n        \"cpe:2.3:a:codestyling_localization_project:codestyling_localization:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colibri-page-builder\": [\n        \"cpe:2.3:a:extendthemes:colibri_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"collectchat\": [\n        \"cpe:2.3:a:micro.company:collect.chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colorful-categories\": [\n        \"cpe:2.3:a:gesundheit-bewegt:colorful_categories:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colorlib-coming-soon-maintenance\": [\n        \"cpe:2.3:a:colorlib:coming_soon_\\\\\\u0026_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"column-matic\": [\n        \"cpe:2.3:a:column-matic_project:column-matic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comicbookmanagementsystemweeklypicks\": [\n        \"cpe:2.3:a:inksplat:comic_book_management_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soon\": [\n        \"cpe:2.3:a:seedprod:coming_soon_page\\\\,_under_construction_\\\\\\u0026_maintenance_mode:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:seedprod:website_builder_by_seedprod:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soon-maintenance-mode\": [\n        \"cpe:2.3:a:awplife:coming_soon_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soon-maintenance-mode-from-acurax\": [\n        \"cpe:2.3:a:acurax:under_construction_\\\\/_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soon-page\": [\n        \"cpe:2.3:a:wpdevart:coming_soon_and_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soon-wp\": [\n        \"cpe:2.3:a:dazzlersoftware:coming_soon\\\\,_under_construction_\\\\\\u0026_maintenance_mode_by_dazzler:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coming-soons\": [\n        \"cpe:2.3:a:rich_web:coming_soon_-_under_construction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comment-form\": [\n        \"cpe:2.3:a:webgilde:advanced_comment_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comment-highlighter\": [\n        \"cpe:2.3:a:comment_highlighter_project:comment_highlighter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comment-license\": [\n        \"cpe:2.3:a:comment_license_project:comment_license:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comment-link-remove\": [\n        \"cpe:2.3:a:quantumcloud:comment_link_remove_and_other_comment_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comment-reply-notification\": [\n        \"cpe:2.3:a:comment_reply_notification_project:comment_reply_notification:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comments-disable-accesspress\": [\n        \"cpe:2.3:a:accesspressthemes:comments_disable_-_accesspress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comments-import-export-woocommerce\": [\n        \"cpe:2.3:a:webtoffee:wordpress_comments_import_and_export:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comments-like-dislike\": [\n        \"cpe:2.3:a:wphappycoders:comments_like_dislike:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comments-ratings\": [\n        \"cpe:2.3:a:pixelgrade:comments_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"commenttweets\": [\n        \"cpe:2.3:a:theresehansen:commenttweets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"common-tools-for-site\": [\n        \"cpe:2.3:a:chetanvaghela:common_tools_for_site:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"commonsbooking\": [\n        \"cpe:2.3:a:wielebenwir:commonsbooking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"community-events\": [\n        \"cpe:2.3:a:community_events_project:community_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"compact-wp-audio-player\": [\n        \"cpe:2.3:a:tipsandtricks-hq:compact_wp_audio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"companion-auto-update\": [\n        \"cpe:2.3:a:codeermeneer:companion_auto_update:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"companion-sitemap-generator\": [\n        \"cpe:2.3:a:codeermeneer:companion_sitemap_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"comparison-slider\": [\n        \"cpe:2.3:a:comparisonslider:comparison_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"complete-open-graph\": [\n        \"cpe:2.3:a:alexmacarthur:complete_open_graph:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"complianz-gdpr\": [\n        \"cpe:2.3:a:really-simple-plugins:complianz:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:really-simple-plugins:complianz:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"conditional-extra-fees-for-woocommerce\": [\n        \"cpe:2.3:a:piwebsolution:conditional_cart_fee_\\\\/_extra_charge_rule_for_woocommerce_extra_fees:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conditional-marketing-mailer\": [\n        \"cpe:2.3:a:wp-buy:woocommerce_conditional_marketing_mailer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conditional-shipping-for-woocommerce\": [\n        \"cpe:2.3:a:wptrio:conditional_shipping_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conference-scheduler\": [\n        \"cpe:2.3:a:myceliumdesign:conference_scheduler:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"confetti-fall-animation\": [\n        \"cpe:2.3:a:wpdeveloperr:confetti_fall_animation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"configurable-tag-cloud-widget\": [\n        \"cpe:2.3:a:configurable_tag_cloud_project:configurable_tag_cloud:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"confirm-data\": [\n        \"cpe:2.3:a:unihost:confirm_data:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"connect-daily-web-calendar\": [\n        \"cpe:2.3:a:mhsoftware:wordpress_events_calendar_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"connections\": [\n        \"cpe:2.3:a:connections-pro:connections_business_directory:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zahmit_design:connections_business_directory_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"constant-contact-forms\": [\n        \"cpe:2.3:a:constantcontact:constant_contact_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"constant-contact-forms-by-mailmunch\": [\n        \"cpe:2.3:a:mailmunch:constant_contact_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-bank\": [\n        \"cpe:2.3:a:tech-banker:contact_bank:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7\": [\n        \"cpe:2.3:a:rocklobster:contact_form_7:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:rocklobster:contact_form_7_custom_validation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-datepicker\": [\n        \"cpe:2.3:a:contact-form-7-datepicker_project:contact-form-7-datepicker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-dynamic-text-extension\": [\n        \"cpe:2.3:a:sevenspark:contact_form_7_-_dynamic_text_extension:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-integrations\": [\n        \"cpe:2.3:a:contactus:contact_form_7_integrations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-mailchimp-extension\": [\n        \"cpe:2.3:a:renzojohnson:contact_form_7_extension_for_mailchimp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-paypal-add-on\": [\n        \"cpe:2.3:a:wpplugin:paypal_\\\\\\u0026_stripe_add-on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-simple-recaptcha\": [\n        \"cpe:2.3:a:contact_form_7_captcha_project:contact_form_7_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-skins\": [\n        \"cpe:2.3:a:cf7skins:contact_form_7_skins:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-sms-addon\": [\n        \"cpe:2.3:a:mediaburst:contact_form_7_-_clockwork_sms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mediaburst:contact_form_7_sms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-style\": [\n        \"cpe:2.3:a:c7style:contact_form_7_style:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cf7style:contact_form_7_style:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-7-to-database-extension\": [\n        \"cpe:2.3:a:cfdbplugin:contact_form_db:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-add\": [\n        \"cpe:2.3:a:web-settler:form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-advanced-database\": [\n        \"cpe:2.3:a:contact_form_advanced_database_project:contact_form_advanced_database:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-builder\": [\n        \"cpe:2.3:a:web-dorado:wp_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-cfdb7\": [\n        \"cpe:2.3:a:ciphercoin:contact_form_7_database_addon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-entries\": [\n        \"cpe:2.3:a:crmperks:database_for_contact_form_7\\\\,_wpforms\\\\,_elementor_forms:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:crmperks:database_for_contact_form_7\\\\,_wpforms\\\\,_elementor_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-generator\": [\n        \"cpe:2.3:a:creative-solutions:contact_form_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-integrated-with-google-maps\": [\n        \"cpe:2.3:a:formget:contact_form_integrated_with_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-lite\": [\n        \"cpe:2.3:a:ghozylab:contact_form:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"contact-form-maker\": [\n        \"cpe:2.3:a:web-dorado:contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-dorado:contact_form_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-manager\": [\n        \"cpe:2.3:a:xyzscripts:contact_form_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-multi\": [\n        \"cpe:2.3:a:bestwebsoft:contact_form_multi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:contact_form_with_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-ready\": [\n        \"cpe:2.3:a:nickduncan:contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-submissions\": [\n        \"cpe:2.3:a:contact_form_submissions_project:contact_form_submissions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-to-any-api\": [\n        \"cpe:2.3:a:itpathsolutions:contact_form_to_any_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-to-db\": [\n        \"cpe:2.3:a:bestwebsoft:contact_form_to_db:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-to-email\": [\n        \"cpe:2.3:a:codepeople:contact_form_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-with-a-meeting-scheduler-by-vcita\": [\n        \"cpe:2.3:a:vcita:contact_form_builder_by_vcita:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-with-captcha\": [\n        \"cpe:2.3:a:contact_form_with_captcha_project:contact_form_with_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-form-x\": [\n        \"cpe:2.3:a:contact_form_x_project:contact_form_x:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-forms\": [\n        \"cpe:2.3:a:cimatti:contact_forms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cimatti:wordpress_contact_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-forms-anti-spam\": [\n        \"cpe:2.3:a:wpmaspik:maspik:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-forms-builder\": [\n        \"cpe:2.3:a:wpdevart:contact_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-list\": [\n        \"cpe:2.3:a:tammersoft:contact_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contact-us-page-contact-people\": [\n        \"cpe:2.3:a:a3rev:contact_us_page_-_contact_people:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-audit\": [\n        \"cpe:2.3:a:content_audit_project:content_audit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-cards\": [\n        \"cpe:2.3:a:content_cards_project:content_cards:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-control\": [\n        \"cpe:2.3:a:code-atlantic:content_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-egg\": [\n        \"cpe:2.3:a:keywordrush:content_egg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-grabber\": [\n        \"cpe:2.3:a:cybercraftit:content-grabber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-mask\": [\n        \"cpe:2.3:a:content_mask_project:content_mask:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-protector\": [\n        \"cpe:2.3:a:passster_project:passter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:passster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-repeater\": [\n        \"cpe:2.3:a:content-repeater_project:content-repeater:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-staging\": [\n        \"cpe:2.3:a:content_staging_project:content_staging:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-text-slider-on-post\": [\n        \"cpe:2.3:a:content_text_slider_on_post_project:content_text_slider_on_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"content-views-query-and-display-post-page\": [\n        \"cpe:2.3:a:contentviewspro:content_views:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contentlock\": [\n        \"cpe:2.3:a:adamsolymosi:contentlock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contentstudio\": [\n        \"cpe:2.3:a:contentstudio:contentstudio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contest-gallery\": [\n        \"cpe:2.3:a:contest-gallery:contest_gallery:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:contest-gallery:contest_gallery:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:contest_gallery:contest_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contexture-page-security\": [\n        \"cpe:2.3:a:contextureintl:page_security_\\\\\\u0026_membership:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"continuous-image-carousel-with-lightbox\": [\n        \"cpe:2.3:a:i13websolution:continuous_image_carosel_with_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"controlled-admin-access\": [\n        \"cpe:2.3:a:wpruby:controlled_admin_access:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contus-hd-flv-player\": [\n        \"cpe:2.3:a:contus:hd_flv_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contus-video-comments\": [\n        \"cpe:2.3:a:contussupport:contus-video-comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"contus-video-gallery\": [\n        \"cpe:2.3:a:apptha:contus_video_gallery:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:apptha:wordpress_video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conversador\": [\n        \"cpe:2.3:a:conversador_project:conversador:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conversation-watson\": [\n        \"cpe:2.3:a:ibm:chatbot_with_ibm_watson:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"conversational-forms\": [\n        \"cpe:2.3:a:quantumcloud:conversational_forms_for_chatbot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"convertbox-auto-embed\": [\n        \"cpe:2.3:a:convertbox:convertbox_auto_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"convertkit\": [\n        \"cpe:2.3:a:convertkit:convertkit_-_email_marketing\\\\,_email_newsletter_and_landing_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cooked\": [\n        \"cpe:2.3:a:boxystudio:cooked:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"cookie-bar\": [\n        \"cpe:2.3:a:brontobytes:cookie_bar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cookie-bar_project:cookie-bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-law-info\": [\n        \"cpe:2.3:a:cookielawinfo:gdpr_cookie_consent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-notice\": [\n        \"cpe:2.3:a:hu-manity:cookie_notice_\\\\\\u0026_compliance_for_gdpr_\\\\/_ccpa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-notice-and-consent-banner\": [\n        \"cpe:2.3:a:gdprinfo:cookie_notice_\\\\\\u0026_consent_banner_for_gdpr_\\\\\\u0026_ccpa_compliance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-notice-bar\": [\n        \"cpe:2.3:a:dcurasi:cookie_notice_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-notice-consent\": [\n        \"cpe:2.3:a:christophrado:cookie_notice_\\\\\\u0026_consent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookie-scanner\": [\n        \"cpe:2.3:a:cookie-scanner:cookie_scanner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookiemonster\": [\n        \"cpe:2.3:a:cookie_monster_project:cookie_monster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cookies-and-content-security-policy\": [\n        \"cpe:2.3:a:followmedarling:cookies_and_content_security_policy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cool-tag-cloud\": [\n        \"cpe:2.3:a:wpkube:cool_tag_cloud:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cool-timeline\": [\n        \"cpe:2.3:a:coolplugins:cool_timeline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coolclock\": [\n        \"cpe:2.3:a:status301:coolclock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"copy-delete-posts\": [\n        \"cpe:2.3:a:copy-delete-posts:duplicate_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"copy-me\": [\n        \"cpe:2.3:a:copy-me_project:copy-me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"copy-or-move-comments\": [\n        \"cpe:2.3:a:appjetty:copy_or_move_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"copy-the-code\": [\n        \"cpe:2.3:a:maheshwaghmare:copy_anything_to_clipboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"copymatic\": [\n        \"cpe:2.3:a:copymatic:copymatic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"core-control\": [\n        \"cpe:2.3:a:dd32:core_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"core-web-vitals-pagespeed-booster\": [\n        \"cpe:2.3:a:magazine3:core_web_vitals_\\\\\\u0026_pagespeed_booster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coreactivity\": [\n        \"cpe:2.3:a:dev4press:coreactivity:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"corner-ad\": [\n        \"cpe:2.3:a:dwbooster:corner_ad:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"correos-express\": [\n        \"cpe:2.3:a:correosexpress_project:correosexpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coru-lfmember\": [\n        \"cpe:2.3:a:marcorulicke:coru_lfmember:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cost-calculator-builder\": [\n        \"cpe:2.3:a:stylemixthemes:cost_calculator_builder:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"countdown-block\": [\n        \"cpe:2.3:a:wpdeveloper:countdown_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"countdown-builder\": [\n        \"cpe:2.3:a:edmonsoft:countdown_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"countdown-timer-for-elementor\": [\n        \"cpe:2.3:a:flickdevs:countdown_timer_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"countdown-wpdevart-extended\": [\n        \"cpe:2.3:a:wpdevart:countdown_and_countup\\\\,_woocommerce_sales_timer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"counter-box\": [\n        \"cpe:2.3:a:wow-company:counter_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coupon-creator\": [\n        \"cpe:2.3:a:jesseeproductions:coupon_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"coupon-zen\": [\n        \"cpe:2.3:a:hasthemes:coupon_zen:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cowidgets-elementor-addons\": [\n        \"cpe:2.3:a:codeless:cowidgets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codeless:cowidgets_-_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codeless:cowidgets_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cozy-addons\": [\n        \"cpe:2.3:a:cozythemes:cozy_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-appointment-calendar\": [\n        \"cpe:2.3:a:codepeople:cp_appointment_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-blocks\": [\n        \"cpe:2.3:a:dwbooster:cp_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-contact-form-with-paypal\": [\n        \"cpe:2.3:a:codepeople:cp_contact_form_with_paypal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-easy-form-builder\": [\n        \"cpe:2.3:a:codepeople:form_builder_cp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-image-store\": [\n        \"cpe:2.3:a:dwbooster:cp_image_store_with_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-multi-view-calendar\": [\n        \"cpe:2.3:a:cp_multi_view_event_calendar_project:cp_multi_view_event_calendar:*:*:*:*:wordpress:*:*:*\",\n        \"cpe:2.3:a:dwbooster:calendar_event_multi_view:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cp-polls\": [\n        \"cpe:2.3:a:codepeople:polls_cp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cpo-companion\": [\n        \"cpe:2.3:a:machothemes:cpo_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cpo-content-types\": [\n        \"cpe:2.3:a:wpchill:cpo_content_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cpt-shortcode\": [\n        \"cpe:2.3:a:anuragdeshmukh:cpt_shortcode_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cpt-speakers\": [\n        \"cpe:2.3:a:9seeds:cpt_-_speakers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crafty-social-buttons\": [\n        \"cpe:2.3:a:crafty_social_buttons_project:crafty_social_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crayon-syntax-highlighter\": [\n        \"cpe:2.3:a:crayon_syntax_highlighter_project:crayon_syntax_highlighter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crazy-bone\": [\n        \"cpe:2.3:a:crazy_bone_project:crazy_bone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crazy-call-to-action-box\": [\n        \"cpe:2.3:a:hafizuddinahmed:crazy_call_to_action_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"creative-mail-by-constant-contact\": [\n        \"cpe:2.3:a:constantcontact:creative_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"credit-tracker\": [\n        \"cpe:2.3:a:labs64:credit_tracker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"credova-financial\": [\n        \"cpe:2.3:a:credova:financial:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crelly-slider\": [\n        \"cpe:2.3:a:crelly_slider_project:crelly_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cresta-addons-for-elementor\": [\n        \"cpe:2.3:a:crestaproject:cresta_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crisp\": [\n        \"cpe:2.3:a:crisp:crisp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crm-customer-relationship-management-by-vcita\": [\n        \"cpe:2.3:a:vcita:crm_and_lead_management_by_vcita:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crm-memberships\": [\n        \"cpe:2.3:a:ntzapps:crm_memberships:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crm-perks-forms\": [\n        \"cpe:2.3:a:crmperks:crm_perks_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crm2go\": [\n        \"cpe:2.3:a:crm2go:crm2go:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crony\": [\n        \"cpe:2.3:a:crony_cronjob_manager_project:crony_cronjob_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cross-linker\": [\n        \"cpe:2.3:a:cross-linker_project:cross-linker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crossslide-jquery-plugin-for-wordpress\": [\n        \"cpe:2.3:a:crossslide_jquery_project:crossslide_jquery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cryout-serious-slider\": [\n        \"cpe:2.3:a:cryoutcreations:serious_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crypto\": [\n        \"cpe:2.3:a:odude:crypto_tool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"crypto-converter-widget\": [\n        \"cpe:2.3:a:currencyratetoday:crypto_converter_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cryptocurrency-donation-box\": [\n        \"cpe:2.3:a:adastracrypto:cryptocurrency_payment_\\\\\\u0026_donation_box:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cryptocurrency_payment_\\\\\\u0026_donation_box_plugins:cryptocurrency_payment_\\\\\\u0026_donation_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cryptocurrency-price-ticker-widget\": [\n        \"cpe:2.3:a:coolplugins:cryptocurrency_widgets:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"cryptocurrency-pricing-list\": [\n        \"cpe:2.3:a:premium-themes:cryptocurrency_pricing_list_and_ticker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cryptocurrency-widgets-for-elementor\": [\n        \"cpe:2.3:a:coolplugins:cryptocurrency_widgets_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cryptocurrency-widgets-pack\": [\n        \"cpe:2.3:a:blocksera:cryptocurrency_widgets_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"css-adder-by-agence-press\": [\n        \"cpe:2.3:a:agence-press:css_adder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"css-javascript-toolbox\": [\n        \"cpe:2.3:a:wipeoutmedia:css_\\\\\\u0026_javascript_toolbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cssable-countdown\": [\n        \"cpe:2.3:a:dmonnier:cssable_countdown:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cssjockey-add-ons\": [\n        \"cpe:2.3:a:cssjockey:wp_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"csv-import-export\": [\n        \"cpe:2.3:a:csv-import-export_project:csv-import-export:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"csv-importer\": [\n        \"cpe:2.3:a:deniskobozev:csv_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"csv-mass-importer\": [\n        \"cpe:2.3:a:aleapp:csv_mass_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ct-commerce\": [\n        \"cpe:2.3:a:ujwolbastakoti:ct_commerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ct-ultimate-gdpr\": [\n        \"cpe:2.3:a:createit:ultimate_gdpr_\\\\\\u0026_ccpa_compliance_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cta\": [\n        \"cpe:2.3:a:inboundnow:call_to_action:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:inboundwp:calls_to_action:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ctt-expresso-para-woocommerce\": [\n        \"cpe:2.3:a:thisfunctional:ctt_expresso_para_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cube-slider\": [\n        \"cpe:2.3:a:webpsilon:cube_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cubewp-framework\": [\n        \"cpe:2.3:a:cubewp:cubewp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"curatorio\": [\n        \"cpe:2.3:a:curator:curator.io:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"currency-converter-calculator\": [\n        \"cpe:2.3:a:currencyratetoday:currency_converter_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"currency-converter-widget\": [\n        \"cpe:2.3:a:currencywiki:currency_converter_widget_-_exchange_rates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"currency-switcher\": [\n        \"cpe:2.3:a:pluginus:wordpress_currency_switcher:*:*:*:*:professional:wordpress:*:*\"\n      ],\n      \"currency-switcher-woocommerce\": [\n        \"cpe:2.3:a:wpwham:currency_switcher_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"current-menu-item-for-custom-post-types\": [\n        \"cpe:2.3:a:rolandmurg:current_menu_item_for_custom_post_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"curtain\": [\n        \"cpe:2.3:a:curtain_project:curtain:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-404-pro\": [\n        \"cpe:2.3:a:kunalnagar:custom_404_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-admin-login-styler-wpzest\": [\n        \"cpe:2.3:a:wpzest:custom_admin_login_page_\\\\|_wpzest_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-admin-page\": [\n        \"cpe:2.3:a:bestwebsoft:custom_admin:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:custom_admin_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-banners\": [\n        \"cpe:2.3:a:goldplugins:custom_banners:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-content-shortcode\": [\n        \"cpe:2.3:a:custom_content_shortcode_project:custom_content_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-content-type-manager\": [\n        \"cpe:2.3:a:custom_content_type_manager_project:custom_content_type_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-css\": [\n        \"cpe:2.3:a:wpfactory:custom_css\\\\,_js_\\\\\\u0026_php:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-css-js\": [\n        \"cpe:2.3:a:silkypress:simple_custom_css_and_js:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-css-js-php\": [\n        \"cpe:2.3:a:flippercode:custom_css-js-php:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-css-pro\": [\n        \"cpe:2.3:a:yellowpencil:custom_css_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-dash\": [\n        \"cpe:2.3:a:imarun:custom_dash:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-dashboard-widgets\": [\n        \"cpe:2.3:a:custom_dashboard_widgets_project:custom_dashboard_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-facebook-feed\": [\n        \"cpe:2.3:a:smashballoon:smash_balloon_social_post_feed:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbeginner:smash_balloon_social_post_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-field-for-wp-job-manager\": [\n        \"cpe:2.3:a:custom_field_for_wp_job_manager_project:custom_field_for_wp_job_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-field-suite\": [\n        \"cpe:2.3:a:custom_field_suite_project:custom_field_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-field-template\": [\n        \"cpe:2.3:a:wpgogo:custom_field_template:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-fields-search\": [\n        \"cpe:2.3:a:bestwebsoft:custom_fields_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-font-uploader\": [\n        \"cpe:2.3:a:wbcomdesigns:custom_font_uploader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-fonts\": [\n        \"cpe:2.3:a:brainstormforce:custom_fonts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-global-variables\": [\n        \"cpe:2.3:a:newtarget:custom_global_variables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-header-images\": [\n        \"cpe:2.3:a:blackbam:custom_header_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-landing-pages-leadmagic\": [\n        \"cpe:2.3:a:metagauss:leadmagic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-login-admin-front-end-css-with-multisite-support\": [\n        \"cpe:2.3:a:millionclues:custom_login_admin_front-end_css:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-map\": [\n        \"cpe:2.3:a:webdesi9:custom_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-my-account-for-woocommerce\": [\n        \"cpe:2.3:a:phoeniixx:custom_my_account_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-options-plus\": [\n        \"cpe:2.3:a:leocaseiro:custom_options_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-permalinks\": [\n        \"cpe:2.3:a:samiahmedsiddiqui:custom_permalinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-limits\": [\n        \"cpe:2.3:a:coffee2code:custom_post_limits:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-type-cpt-cusom-taxonomy-ct-manager\": [\n        \"cpe:2.3:a:custom_post_type_and_taxonomy_gui_manager_project:custom_post_type_and_taxonomy_gui_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-type-generator\": [\n        \"cpe:2.3:a:custom_post_type_generator_project:custom_post_type_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-type-relations\": [\n        \"cpe:2.3:a:custom_post_type_relations_project:custom_post_type_relations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-type-templates-for-elementor\": [\n        \"cpe:2.3:a:migaweb:custom_post_type_templates_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-type-ui\": [\n        \"cpe:2.3:a:webdevstudios:custom_post_type_ui:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-view-generator\": [\n        \"cpe:2.3:a:custom_post_view_generator_project:custom_post_view_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-post-widget\": [\n        \"cpe:2.3:a:vanderwijk:content_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-registration-form-builder-with-submission-manager\": [\n        \"cpe:2.3:a:metagauss:registrationmagic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-related-posts\": [\n        \"cpe:2.3:a:brechtvds:custom_related_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-search-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:custom_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-searchable-data-entry-system\": [\n        \"cpe:2.3:a:custom_searchable_data_entry_system_project:custom_searchable_data_entry_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-share-buttons-with-floating-sidebar\": [\n        \"cpe:2.3:a:wp-experts:custom_share_buttons_with_floating_sidebar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-sidebars\": [\n        \"cpe:2.3:a:wpmudev:custom_sidebars:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-simple-rss\": [\n        \"cpe:2.3:a:custom_simple_rss_project:custom_simple_rss:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-sub-menus\": [\n        \"cpe:2.3:a:custom-sub-menus_project:custom-sub-menus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-tinymce-shortcode-button\": [\n        \"cpe:2.3:a:custom_tinymce_shortcode_button_project:custom_tinymce_shortcode_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"custom-twitter-feeds\": [\n        \"cpe:2.3:a:smashballoon:custom_twitter_feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"customer-area\": [\n        \"cpe:2.3:a:marvinlabs:wp_customer_area:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-customerarea:wp_customer_area:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"customer-reviews-woocommerce\": [\n        \"cpe:2.3:a:cusrev:customer_reviews_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"customize-login-image\": [\n        \"cpe:2.3:a:apasionados:customize_login_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"customize-my-account-for-woocommerce\": [\n        \"cpe:2.3:a:sysbasics:customize_my_account:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"customizer-export-import\": [\n        \"cpe:2.3:a:fastlinemedia:customizer_export\\\\/import:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbeaverbuilder:customizer_export\\\\/import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cww-companion\": [\n        \"cpe:2.3:a:codeworkweb:cww_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cyan-backup\": [\n        \"cpe:2.3:a:toolstack:cyan_backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cybersoldier\": [\n        \"cpe:2.3:a:webbigt:cybersoldier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cyberus-key\": [\n        \"cpe:2.3:a:cyberuslabs:cyberus_key:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cyr3lat\": [\n        \"cpe:2.3:a:cyr_to_lat_project:cyr_to_lat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cysteme-finder\": [\n        \"cpe:2.3:a:cysteme:cysteme-finder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"daext-autolinks-manager\": [\n        \"cpe:2.3:a:daext:autolinks_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"daggerhart-openid-connect-generic\": [\n        \"cpe:2.3:a:daggerhartlab:openid_connect_generic_client:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"daily-prayer-time-for-mosques\": [\n        \"cpe:2.3:a:mmrs151:daily_prayer_time:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dans-gcal\": [\n        \"cpe:2.3:a:dandulaney:dan\\\\'s_embedder_for_google_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dark-mode\": [\n        \"cpe:2.3:a:dark_mode_project:dark_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dark-mode-for-wp-dashboard\": [\n        \"cpe:2.3:a:naiches:dark_mode_for_wp_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"darkmysite\": [\n        \"cpe:2.3:a:darkmysite:darkmysite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dashboard-to-do-list\": [\n        \"cpe:2.3:a:arwebdesign:dashboard_to-do_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dashboard-widgets-suite\": [\n        \"cpe:2.3:a:plugin-planet:dashboard_widget_suite:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:plugin-planet:dashboard_widgets_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dashicons-cpt\": [\n        \"cpe:2.3:a:halgatewood:dashicons_\\\\+_custom_post_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"data-tables-generator-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:data_tables_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"database-backups\": [\n        \"cpe:2.3:a:database-backups_project:database-backups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"database-cleaner\": [\n        \"cpe:2.3:a:meowapps:database_cleaner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"database-collation-fix\": [\n        \"cpe:2.3:a:database_collation_fix_project:database_collation_fix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"database-peek\": [\n        \"cpe:2.3:a:database_peek_project:database_peek:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dc-woocommerce-multi-vendor\": [\n        \"cpe:2.3:a:multivendorx:multivendorx:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wc-marketplace:multivendor_marketplace_solution_for_woocommerce_-_wc_marketplace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dd-post-carousel\": [\n        \"cpe:2.3:a:howardehrenberg:custom_post_carousels_with_owl:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dearpdf-lite\": [\n        \"cpe:2.3:a:dearhive:dearpdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debounce-io-email-validator\": [\n        \"cpe:2.3:a:debounce:email_validator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debrandify\": [\n        \"cpe:2.3:a:tahoe:debrandify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debug\": [\n        \"cpe:2.3:a:soninow:debug:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debug-assistant\": [\n        \"cpe:2.3:a:wpindeed:debug_assistant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debug-bar\": [\n        \"cpe:2.3:a:wordpress:debug_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debug-log-manager\": [\n        \"cpe:2.3:a:bowo:debug_log_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"debug-meta-data\": [\n        \"cpe:2.3:a:debug_meta_data_project:debug_meta_data:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"decon-wp-sms\": [\n        \"cpe:2.3:a:decondigital:decon_wp_sms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"decorator-woocommerce-email-customizer\": [\n        \"cpe:2.3:a:webtoffee:decorator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"defender-security\": [\n        \"cpe:2.3:a:wpmudev:defender:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpmudev:defender:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wpmudev:defender_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"definitive-addons-for-elementor\": [\n        \"cpe:2.3:a:softfirm:definitive_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-all-comments-easily\": [\n        \"cpe:2.3:a:delete_all_comments_easily_project:delete_all_comments_easily:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-duplicate-posts\": [\n        \"cpe:2.3:a:cleverplugins:delete_duplicate_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-me\": [\n        \"cpe:2.3:a:cmc3215:delete_me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-old-orders\": [\n        \"cpe:2.3:a:deleteoldorders_project:delete_old_orders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-post-revisions-on-single-click\": [\n        \"cpe:2.3:a:wapnepal:delete_post_revisions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delete-usermetas\": [\n        \"cpe:2.3:a:joselazo:delete_usermeta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delhivery-logistics-courier\": [\n        \"cpe:2.3:a:delhivery:logistics_courier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delicious-recipes\": [\n        \"cpe:2.3:a:wpdelicious:wp_delicious:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delucks-seo\": [\n        \"cpe:2.3:a:delucks:delucks_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"demo-awesome\": [\n        \"cpe:2.3:a:theme4press:demo_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"demo-importer-plus\": [\n        \"cpe:2.3:a:kraftplugins:demo_importer_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"democracy-poll\": [\n        \"cpe:2.3:a:wp-kama:democracy_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"demomentsomtres-wp-export\": [\n        \"cpe:2.3:a:demomentsomtres:export_posts_with_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"demon-image-annotation\": [\n        \"cpe:2.3:a:superwhite:demon_image_annotation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"deny-all-firewall\": [\n        \"cpe:2.3:a:deny_all_firewall_project:deny_all_firewall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"depicter\": [\n        \"cpe:2.3:a:averta:depicter_slider:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:depicter:depicter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dethemekit-for-elementor\": [\n        \"cpe:2.3:a:detheme:dethemekit_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:dethemekit_for_elementor_project:dethemekit_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"diary-availability-calendar\": [\n        \"cpe:2.3:a:roosty:diary-availability-calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"digiproveblog\": [\n        \"cpe:2.3:a:digiprove:copyright_proof:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"digirisk\": [\n        \"cpe:2.3:a:evarisk:digirisk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"digital-publications-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:digital_publications_by_supsystic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dimage-360\": [\n        \"cpe:2.3:a:darteweb:dimage_360:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dino-game\": [\n        \"cpe:2.3:a:tahmid-ul:dino_game:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"directorist\": [\n        \"cpe:2.3:a:wpwax:directorist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"directorypress\": [\n        \"cpe:2.3:a:designinvento:directorypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"directorypress-frontend\": [\n        \"cpe:2.3:a:designinvento:directorypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"disable-comments\": [\n        \"cpe:2.3:a:disable_comments:disable_comments_project:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"disable-update-notifications\": [\n        \"cpe:2.3:a:disable_wordpress_update_notifications_and_auto-update_email_notifications_project:disable_wordpress_update_notifications_and_auto-update_email_notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"display-custom-post\": [\n        \"cpe:2.3:a:vikasvatsa:display_custom_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"display-medium-posts\": [\n        \"cpe:2.3:a:acekyd:display_medium_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"display-metadata\": [\n        \"cpe:2.3:a:display_post_meta\\\\,_term_meta\\\\,_comment_meta\\\\,_and_user_meta_project:display_post_meta\\\\,_term_meta\\\\,_comment_meta\\\\,_and_user_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"display-post-metadata\": [\n        \"cpe:2.3:a:display_post_metadata_project:display_post_metadata:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"display-widgets\": [\n        \"cpe:2.3:a:display-widgets_project:display-widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"disqus-comment-system\": [\n        \"cpe:2.3:a:disqus:disqus_comment_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"disqus-conditional-load\": [\n        \"cpe:2.3:a:disqus_conditional_load_project:disqus_conditional_load:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ditty-news-ticker\": [\n        \"cpe:2.3:a:metaphorcreations:ditty:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"divebook\": [\n        \"cpe:2.3:a:divebook_project:divebook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dj-email-publish\": [\n        \"cpe:2.3:a:dj_emailpublish_project:dj_emailpublish:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dk-pricr-responsive-pricing-table\": [\n        \"cpe:2.3:a:wpdarko:responsive_pricing_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dmsguestbook\": [\n        \"cpe:2.3:a:dmsguestbook_project:dmsguestbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dn-footer-contacts\": [\n        \"cpe:2.3:a:digireturn:footer_contacts_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dn-popup\": [\n        \"cpe:2.3:a:digireturn:dn_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dn-shipping-by-weight\": [\n        \"cpe:2.3:a:digireturn:shipping_by_weight_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"document-emberdder\": [\n        \"cpe:2.3:a:bplugins:document_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"documentor-lite\": [\n        \"cpe:2.3:a:documentor_project:documentor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"documentpress-display-any-document-on-your-site\": [\n        \"cpe:2.3:a:abdullahirfan:documentpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dofollow-case-by-case\": [\n        \"cpe:2.3:a:apasionados:dofollow_case_by_case:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dokan-lite\": [\n        \"cpe:2.3:a:dokan:dokan:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"dokan-pro\": [\n        \"cpe:2.3:a:dokan:dokan:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"dologin\": [\n        \"cpe:2.3:a:wpdo:dologin_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"domain-check\": [\n        \"cpe:2.3:a:domaincheckplugin:domain_check:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"don8\": [\n        \"cpe:2.3:a:don8_project:don8:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donate-button\": [\n        \"cpe:2.3:a:bestwebsoft:donate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donate-extra\": [\n        \"cpe:2.3:a:donate_extra_project:donate_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donation-button\": [\n        \"cpe:2.3:a:donation_button_project:donation_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donation-thermometer\": [\n        \"cpe:2.3:a:donation_thermometer_project:donation_thermometer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donations-for-woocommerce\": [\n        \"cpe:2.3:a:wpzone:potent_donations_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"donorbox-donation-form\": [\n        \"cpe:2.3:a:donorbox:donorbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"doofinder-for-woocommerce\": [\n        \"cpe:2.3:a:doofinder:doofinder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dop-shortcodes\": [\n        \"cpe:2.3:a:dotonpaper:dot_on_paper_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"double-opt-in-for-download\": [\n        \"cpe:2.3:a:labwebdevelopment:double_opt-in_for_download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dovetail\": [\n        \"cpe:2.3:a:rigorous-digital:dovetail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-attachments\": [\n        \"cpe:2.3:a:dfactory:download_attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-manager\": [\n        \"cpe:2.3:a:w3eden:download_manager:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wpdownloadmanager:download_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdownloadmanager:wordpress_download_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-monitor\": [\n        \"cpe:2.3:a:never5:download_monitor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:download_monitor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-plugin\": [\n        \"cpe:2.3:a:metagauss:download_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-plugins-dashboard\": [\n        \"cpe:2.3:a:wpfactory:download_plugins_and_themes_from_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-theme\": [\n        \"cpe:2.3:a:metagauss:download_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"download-zip-attachments\": [\n        \"cpe:2.3:a:download_zip_attachments_project:download_zip_attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drag-and-drop-multiple-file-upload-contact-form-7\": [\n        \"cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_-_contact_form_7:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_-_contact_form_7:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_-_contact_form_7:*:*:*:*:standard:wordpress:*:*\",\n        \"cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_for_contact_form_7:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"drag-and-drop-multiple-file-upload-for-woocommerce\": [\n        \"cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drawblog\": [\n        \"cpe:2.3:a:drawblog_project:drawblog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drive-folder-embeder\": [\n        \"cpe:2.3:a:azumbro:drive_folder_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"droit-dark-mode\": [\n        \"cpe:2.3:a:droitthemes:droit_dark_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"droit-elementor-addons\": [\n        \"cpe:2.3:a:droitthemes:droit_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drop-shadow-boxes\": [\n        \"cpe:2.3:a:stevenhenty:drop_shadow_boxes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dropbox-folder-share\": [\n        \"cpe:2.3:a:hynotech:dropbox_folder_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dropdown-and-scrollable-text\": [\n        \"cpe:2.3:a:webodid:dropdown_and_scrollable_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dropdown-menu-widget\": [\n        \"cpe:2.3:a:dropdown_menu_widget_project:dropdown_menu_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drozd-addons-for-elementor\": [\n        \"cpe:2.3:a:urchenko:drozd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ds-cf7-math-captcha\": [\n        \"cpe:2.3:a:dotsquares:contact_form_7_math_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dsgvo-all-in-one-for-wp\": [\n        \"cpe:2.3:a:dsgvo-for-wp:dsgvo_all_in_one_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dtabs\": [\n        \"cpe:2.3:a:dtabs_project:dtabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duitku-social-payment-gateway\": [\n        \"cpe:2.3:a:duitku:duitku_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dukapress\": [\n        \"cpe:2.3:a:dukapress:dukapress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dupeoff\": [\n        \"cpe:2.3:a:dupeoff_project:dupeoff:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicate-page\": [\n        \"cpe:2.3:a:duplicatepro:duplicate_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicate-post\": [\n        \"cpe:2.3:a:duplicate_post_project:duplicate_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicate-post-page-menu-custom-post-type\": [\n        \"cpe:2.3:a:inqsys:duplicate_post_page_menu_\\\\\\u0026_custom_post_type:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicate-theme\": [\n        \"cpe:2.3:a:mullerdigital:duplicate_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicate-wp-page-post\": [\n        \"cpe:2.3:a:duplicate_page_and_post_project:duplicate_page_and_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"duplicator\": [\n        \"cpe:2.3:a:awesomemotive:duplicator:*:*:*:*:lite:wordpress:*:*\",\n        \"cpe:2.3:a:awesomemotive:duplicator:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"duracelltomi-google-tag-manager\": [\n        \"cpe:2.3:a:gtm4wp:google_tag_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dvk-social-sharing\": [\n        \"cpe:2.3:a:ibericode:social_sharing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dw-promobar\": [\n        \"cpe:2.3:a:designwall:dw_promobar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dw-question-answer\": [\n        \"cpe:2.3:a:designwall:dw_question_\\\\\\u0026_answer:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"dwnldr\": [\n        \"cpe:2.3:a:findshorty:dwnldr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dx-auto-save-images\": [\n        \"cpe:2.3:a:daxiawp:dx-auto-save-images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dx-share-selection\": [\n        \"cpe:2.3:a:devrix:dx_share_selection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dynamic-featured-image\": [\n        \"cpe:2.3:a:ankitpokhrel:dynamic_featured_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"dynamic-widgets\": [\n        \"cpe:2.3:a:vivwebsolutions:dynamic_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"e-unlocked-student-result\": [\n        \"cpe:2.3:a:e_unlocked_-_student_result_project:e_unlocked_-_student_result:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"e2pdf\": [\n        \"cpe:2.3:a:e2pdf:e2pdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ean-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:ean_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easing-slider\": [\n        \"cpe:2.3:a:easing_slider:easing_slider:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:easing_slider_project:easing_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-accordion-free\": [\n        \"cpe:2.3:a:techearty:easy_accordion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-addons-for-elementor\": [\n        \"cpe:2.3:a:mdakader:easy_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-age-verify\": [\n        \"cpe:2.3:a:5starplugins:easy_age_verify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-appointments\": [\n        \"cpe:2.3:a:easy-appointments:easy_appointments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-bootstrap-shortcodes\": [\n        \"cpe:2.3:a:easy_bootstrap_shortcode_project:easy_bootstrap_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-call-now\": [\n        \"cpe:2.3:a:dangngocbinh:easy_call_now_by_thikshare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-captcha\": [\n        \"cpe:2.3:a:easy_captcha_project:easy_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-career-openings\": [\n        \"cpe:2.3:a:easy_career_openings_project:easy_career_openings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-contact-form-solution\": [\n        \"cpe:2.3:a:formget:easy_contact_form_solution:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-custom-auto-excerpt\": [\n        \"cpe:2.3:a:tonjoostudio:easy_custom_auto_excerpt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-custom-code\": [\n        \"cpe:2.3:a:web357:easy_custom_code:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-demo-importer\": [\n        \"cpe:2.3:a:sigmadevs:easy_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-digital-downloads\": [\n        \"cpe:2.3:a:awesomemotive:easy_digital_downloads:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:sandhillsdev:easy_digital_downloads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-event-calendar\": [\n        \"cpe:2.3:a:easy_event_calendar_project:easy_event_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-facebook-like-box\": [\n        \"cpe:2.3:a:easy_social_box_project:easy_social_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-facebook-likebox\": [\n        \"cpe:2.3:a:easysocialfeed:easy_social_feed:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"easy-fancybox\": [\n        \"cpe:2.3:a:firelightwp:firelight_lightbox:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:status301:easy_fancybox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-faq-with-expanding-text\": [\n        \"cpe:2.3:a:easy_faq_with_expanding_text_project:easy_faq_with_expanding_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-form-builder\": [\n        \"cpe:2.3:a:whitestudio:easy_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-form-builder-by-bitware\": [\n        \"cpe:2.3:a:easy-form-builder-by-bitware_project:easy-form-builder-by-bitware:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-hide-login\": [\n        \"cpe:2.3:a:ciphercoin:easy_hide_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-login-woocommerce\": [\n        \"cpe:2.3:a:xootix:login\\\\/signup_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-media-download\": [\n        \"cpe:2.3:a:easy_media_download_project:easy_media_download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-media-gallery\": [\n        \"cpe:2.3:a:ghozylab:gallery_-_photo_albums_-_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-menu-manager-wpzest\": [\n        \"cpe:2.3:a:wpzest:easy_menu_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-mls-listings-import\": [\n        \"cpe:2.3:a:homeasap:easy_mls_listings_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-modal\": [\n        \"cpe:2.3:a:easy_modal_project:easy_modal:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:easymodal_project:easy_modal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-newsletter-signups\": [\n        \"cpe:2.3:a:alphabpo:easy_newsletter_signups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-notify-lite\": [\n        \"cpe:2.3:a:ghozylab:popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-paypal-donation\": [\n        \"cpe:2.3:a:wpplugin:accept_donations_with_paypal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-paypal-events-tickets\": [\n        \"cpe:2.3:a:wpplugin:easy_paypal_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-pdf-restaurant-menu-upload\": [\n        \"cpe:2.3:a:easy_pdf_restaurant_menu_upload_project:easy_pdf_restaurant_menu_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-pie-coming-soon\": [\n        \"cpe:2.3:a:snapcreek:ezp_coming_soon_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-pricing-tables\": [\n        \"cpe:2.3:a:fatcatapps:easy_pricing_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-property-listings\": [\n        \"cpe:2.3:a:realestateconnected:easy_property_listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-registration-forms\": [\n        \"cpe:2.3:a:easyregistrationforms:easy_registration_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-side-tab-cta\": [\n        \"cpe:2.3:a:accesspressthemes:easy_side_tab:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-smooth-scroll-links\": [\n        \"cpe:2.3:a:pootlepress:easy_smooth_scroll_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-social-icons\": [\n        \"cpe:2.3:a:cybernetikz:easy_social_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-social-share-buttons\": [\n        \"cpe:2.3:a:idiom:easy_social_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-student-results\": [\n        \"cpe:2.3:a:easy_student_results_project:easy_student_results:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-svg\": [\n        \"cpe:2.3:a:benjaminzekavica:easy_svg_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-svg-upload\": [\n        \"cpe:2.3:a:delowerhossain:easy_svg_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-table\": [\n        \"cpe:2.3:a:easy_table_project:easy_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-table-of-contents\": [\n        \"cpe:2.3:a:magazine3:easy_table_of_contents:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-testimonial-manager\": [\n        \"cpe:2.3:a:easy_testimonial_manager_project:easy_testimonial_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-testimonial-rotator\": [\n        \"cpe:2.3:a:i13websolution:easy_testimonial_slider_and_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-testimonials\": [\n        \"cpe:2.3:a:goldplugins:easy_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-twitter-feeds\": [\n        \"cpe:2.3:a:bplugins:easy_twitter_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-video-player\": [\n        \"cpe:2.3:a:noorsplugin:easy_video_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-wp-cleaner\": [\n        \"cpe:2.3:a:nikunjsoni:easy_wp_cleaner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy-wp-smtp\": [\n        \"cpe:2.3:a:wp-ecommerce:easy_wp_smtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy2map\": [\n        \"cpe:2.3:a:easy2map:easy2map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easy2map-photos\": [\n        \"cpe:2.3:a:easy2map-photos_project:easy2map-photos:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:easy2map:easy2map-photos:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:steven_ellis:easy2map_photos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easyappointments\": [\n        \"cpe:2.3:a:easyappointments:easy\\\\!appointments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easyazon\": [\n        \"cpe:2.3:a:flowdee:easyazon:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:getaawp:easyazon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easyjobs\": [\n        \"cpe:2.3:a:easy.jobs:easy.jobs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easync-booking\": [\n        \"cpe:2.3:a:syntacticsinc:easync:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"easyrecipe\": [\n        \"cpe:2.3:a:easyrecipe_project:easyrecipe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eazydocs\": [\n        \"cpe:2.3:a:spider-themes:eazydocs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ebay-feeds-for-wordpress\": [\n        \"cpe:2.3:a:winwar:wp_ebay_product_feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ebook-download\": [\n        \"cpe:2.3:a:zedna_ebook_download_project:zedna_ebook_download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ebook-downloader\": [\n        \"cpe:2.3:a:infoway:ebook_downloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ebook-store\": [\n        \"cpe:2.3:a:shopfiles:ebook_store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ecab-taxi-booking-manager\": [\n        \"cpe:2.3:a:mage-people:ecab_taxi_booking_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"echosign\": [\n        \"cpe:2.3:a:smackcoders:echo_sign:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ecommerce-product-catalog\": [\n        \"cpe:2.3:a:implecode:ecommerce_product_catalog:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:implecode:ecommerce_product_catalog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ecpay-ecommerce-for-woocommerce\": [\n        \"cpe:2.3:a:ecpay:ecpay_ecommerce_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ecwid-shopping-cart\": [\n        \"cpe:2.3:a:lightspeedhq:ecwid_ecommerce_shopping_cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"edd-recent-purchases\": [\n        \"cpe:2.3:a:wow-company:easy_digital_downloads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"edit-comments\": [\n        \"cpe:2.3:a:edit_comments_project:edit_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"edit-comments-xt\": [\n        \"cpe:2.3:a:sw-guide:edit_comments_xt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"editorial-calendar\": [\n        \"cpe:2.3:a:editorial_calendar_project:editorial_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zackgrossbart:editorial_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"educare\": [\n        \"cpe:2.3:a:fixbd:educare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"education-addon\": [\n        \"cpe:2.3:a:nicheaddons:education_addon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"edwiser-bridge\": [\n        \"cpe:2.3:a:edwiser:bridge:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eelv-newsletter\": [\n        \"cpe:2.3:a:eelv_newsletter_project:eelv_newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eexamhall\": [\n        \"cpe:2.3:a:online_exam_software_\\\\:_eexamhall_project:online_exam_software_\\\\:_eexamhall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eg-attachments\": [\n        \"cpe:2.3:a:egeorjon:eg-attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ekc-tournament-manager\": [\n        \"cpe:2.3:a:lukashuser:ekc_tournament_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elastic-email-sender\": [\n        \"cpe:2.3:a:elasticemail:elastic_email_sender:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elasticpress\": [\n        \"cpe:2.3:a:10up:elasticpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"electric-studio-client-login\": [\n        \"cpe:2.3:a:electric_studio_client_login_project:electric_studio_client_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elegant-custom-fonts\": [\n        \"cpe:2.3:a:breakdance:elegant_custom_fonts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elegant-themes-icons\": [\n        \"cpe:2.3:a:wpai:elegant_themes_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elemenda\": [\n        \"cpe:2.3:a:dankedev:elemenda:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"element-ready-lite\": [\n        \"cpe:2.3:a:quomodosoft:elementsready:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"elementary-addons\": [\n        \"cpe:2.3:a:camilluskillus:elementary_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elementinvader-addons-for-elementor\": [\n        \"cpe:2.3:a:elementinvader:elementinvader_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elementor\": [\n        \"cpe:2.3:a:elementor:elementor_page_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:elementor_page_builder:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:page_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:website_builder:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:website_builder:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"elementor-pro\": [\n        \"cpe:2.3:a:elementor:elementor_page_builder:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:elementor_pro:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:elementor:website_builder:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"elementskit\": [\n        \"cpe:2.3:a:wpmet:elementskit:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"elementskit-lite\": [\n        \"cpe:2.3:a:plugin-devs:post_carousel_slider_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpmet:elements_kit_elementor_addons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpmet:elementskit_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elespare\": [\n        \"cpe:2.3:a:elespare:elespare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elex-helpdesk-customer-support-ticket-system\": [\n        \"cpe:2.3:a:elula:wsdesk:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"elisqlreports\": [\n        \"cpe:2.3:a:ieonly:ez_sql_reports_shortcode_widget_and_db_backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elo-rating-shortcode\": [\n        \"cpe:2.3:a:timelord:elo_rating_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"emag-marketplace-connector\": [\n        \"cpe:2.3:a:zitec:emag_marketplace_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-address-encoder\": [\n        \"cpe:2.3:a:tillkruss:email_address_encoder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-artillery\": [\n        \"cpe:2.3:a:email_artillery_project:email_artillery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-before-download\": [\n        \"cpe:2.3:a:mandsconsulting:email_before_download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-encoder-bundle\": [\n        \"cpe:2.3:a:jannisthuemmig:email_encoder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-webhooks:email_encoder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-log\": [\n        \"cpe:2.3:a:email_log_project:email_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-newsletter\": [\n        \"cpe:2.3:a:email-newsletter_project:email-newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-posts-to-subscribers\": [\n        \"cpe:2.3:a:gopiplus:email_posts_to_subscribers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-queue\": [\n        \"cpe:2.3:a:bestwebsoft:email_queue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-subscribe\": [\n        \"cpe:2.3:a:i13websolution:email_subscription_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-subscriber\": [\n        \"cpe:2.3:a:email-subscriber_project:email-subscriber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-subscribers\": [\n        \"cpe:2.3:a:icegram:email_subscribers_\\\\\\u0026_newsletters:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:icegram:icegram_express:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-template-customizer-for-woo\": [\n        \"cpe:2.3:a:villatheme:woocommerce_email_template_customizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"email-users\": [\n        \"cpe:2.3:a:email_users_project:email_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"emails-verification-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:customer_email_verification_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-any-document\": [\n        \"cpe:2.3:a:awsm:embed_any_document:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-calendly-scheduling\": [\n        \"cpe:2.3:a:embedcalendly:embed_calendly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-comment-images\": [\n        \"cpe:2.3:a:embed_images_in_comments_project:embed_images_in_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-power-bi\": [\n        \"cpe:2.3:a:atlaspolicy:power_bi_embedded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-swagger\": [\n        \"cpe:2.3:a:embed_swagger_project:embed_swagger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embed-youtube-video\": [\n        \"cpe:2.3:a:geekwebsolution:embed_youtube_video:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"embedpress\": [\n        \"cpe:2.3:a:wpdeveloper:embedpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"emoji-shortcode\": [\n        \"cpe:2.3:a:elsner:emoji_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-accessibility\": [\n        \"cpe:2.3:a:upress:enable_accessibility:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-media-replace\": [\n        \"cpe:2.3:a:shortpixel:enable_media_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-shortcodes-inside-widgetscomments-and-experts\": [\n        \"cpe:2.3:a:aftabhusain:enable_shortcodes_inside_widgets\\\\,comments_and_experts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-svg\": [\n        \"cpe:2.3:a:room_34_creative_services:enable_svg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-svg-uploads\": [\n        \"cpe:2.3:a:enable_svg_uploads_project:enable_svg_uploads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enable-svg-webp-ico-upload\": [\n        \"cpe:2.3:a:ideastocode:enable_svg\\\\,_webp_\\\\\\u0026_ico_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"endless-posts-navigation\": [\n        \"cpe:2.3:a:androidbubbles:endless_posts_navigation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"english-wp-admin\": [\n        \"cpe:2.3:a:english_wordpress_admin_project:english_wordpress_admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enhanced-e-commerce-for-woocommerce-store\": [\n        \"cpe:2.3:a:conversios:conversios:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:conversios:google_analytics_integration_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enhanced-plugin-admin\": [\n        \"cpe:2.3:a:infolific:enhanced_plugin_admin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enhanced-text-widget\": [\n        \"cpe:2.3:a:inisev:enhanced_text_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enhanced-tooltipglossary\": [\n        \"cpe:2.3:a:cminds:cm_tooltip_glossary:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cminds:tooltip_glossary:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enqueue-anything\": [\n        \"cpe:2.3:a:enqueue_anything_project:enqueue_anything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enquiry-quotation-for-woocommerce\": [\n        \"cpe:2.3:a:piwebsolution:product_enquiry_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enteraddons\": [\n        \"cpe:2.3:a:themelooks:enter_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"envato-elements\": [\n        \"cpe:2.3:a:envato:envato_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"envialosimple-email-marketing-y-newsletters-gratis\": [\n        \"cpe:2.3:a:donweb:envialosimple:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"envira-gallery-lite\": [\n        \"cpe:2.3:a:enviragallery:envira_gallery:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"envo-elementor-for-woocommerce\": [\n        \"cpe:2.3:a:envothemes:envo\\\\'s_elementor_templates_\\\\\\u0026_widgets_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"envo-extra\": [\n        \"cpe:2.3:a:envothemes:envo_extra:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:envothemes:envo_extra:*:*:*:*:wordpress:*:*:*\"\n      ],\n      \"eonet-manual-user-approve\": [\n        \"cpe:2.3:a:xtendify:eonet_manual_user_approve:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"epoll-wp-voting\": [\n        \"cpe:2.3:a:infotheme:wp_poll_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eps-301-redirects\": [\n        \"cpe:2.3:a:webfactoryltd:301_redirects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ere-recently-viewed\": [\n        \"cpe:2.3:a:g5plus:ere_recently_viewed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"erident-custom-login-and-dashboard\": [\n        \"cpe:2.3:a:erident_custom_login_and_dashboard_project:erident_custom_login_and_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"erp\": [\n        \"cpe:2.3:a:wedevs:wp_erp:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"error-log-viewer\": [\n        \"cpe:2.3:a:bestwebsoft:error_log_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eshop\": [\n        \"cpe:2.3:a:elfden:eshop_plugin:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:eshop_project:eshop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"essential-addons-for-elementor-lite\": [\n        \"cpe:2.3:a:wpdeveloper:essential_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdeveloper:essential_addons_for_elementor:*:*:*:*:lite:wordpress:*:*\",\n        \"cpe:2.3:a:wpdeveloper:essential_addons_for_elementor:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"essential-blocks\": [\n        \"cpe:2.3:a:wpdeveloper:essential_blocks:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdeveloper:essential_blocks:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"essential-content-types\": [\n        \"cpe:2.3:a:catchplugins:essential_content_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"essential-real-estate\": [\n        \"cpe:2.3:a:g5plus:essential_real_estate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"essential-widgets\": [\n        \"cpe:2.3:a:catchplugins:essential_widgets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:catchthemes:essential_widgets:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"essential-wp-real-estate\": [\n        \"cpe:2.3:a:smartdatasoft:essential_wp_real_estate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"estatik\": [\n        \"cpe:2.3:a:estatik:estatik:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"estatik-mortgage-calculator\": [\n        \"cpe:2.3:a:estatik:estatik_mortgage_calculator:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:estatik:mortgage_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"etsy-shop\": [\n        \"cpe:2.3:a:etsy_shop_project:etsy_shop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eu-cookie-law\": [\n        \"cpe:2.3:a:eu_cookie_law_project:eu_cookie_law:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eu-vat-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:eu\\\\/uk_vat_manager_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eupago-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:eupago:eupago_gateway_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"evaluate\": [\n        \"cpe:2.3:a:evaluate_project:evaluate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-calendar-wd\": [\n        \"cpe:2.3:a:web-dorado:event_calendar_wd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-espresso-decaf\": [\n        \"cpe:2.3:a:eventespresso:event_espresso:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:eventespresso:event_espresso_4_decaf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-espresso-free\": [\n        \"cpe:2.3:a:eventespresso:event_espresso:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:eventespresso:event_espresso:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:eventespresso:event_espresso_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-geek\": [\n        \"cpe:2.3:a:event_geek_project:event_geek:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-list\": [\n        \"cpe:2.3:a:event_list_project:event_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-monster\": [\n        \"cpe:2.3:a:awplife:event_monster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-notifier\": [\n        \"cpe:2.3:a:event_notifier_project:event_notifier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-post\": [\n        \"cpe:2.3:a:avecnous:event_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-registration-calendar-by-vcita\": [\n        \"cpe:2.3:a:vcita:event_registration_calendar_by_vcita:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"event-tickets\": [\n        \"cpe:2.3:a:liquidweb:event_tickets:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"event-tickets-with-ticket-scanner\": [\n        \"cpe:2.3:a:vollstart:event_tickets_with_ticket_scanner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eventify\": [\n        \"cpe:2.3:a:eventify_project:eventify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eventon-lite\": [\n        \"cpe:2.3:a:myeventon:eventon-lite:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:myeventon:eventon:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"eventprime-event-calendar-management\": [\n        \"cpe:2.3:a:metagauss:eventprime:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eventr\": [\n        \"cpe:2.3:a:eventr_project:eventr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"events-addon-for-elementor\": [\n        \"cpe:2.3:a:nicheaddons:events_addon_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"events-made-easy\": [\n        \"cpe:2.3:a:e-dynamics:events_made_easy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"events-manager\": [\n        \"cpe:2.3:a:pixelite:events_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ever-compare\": [\n        \"cpe:2.3:a:hasthemes:ever_compare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-admin-theme-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_admin_theme_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-backup\": [\n        \"cpe:2.3:a:everestthemes:everest_backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-coming-soon-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_coming_soon_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-comment-rating-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_comment_rating_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-counter-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_counter_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-faq-manager-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_faq_manager_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-forms\": [\n        \"cpe:2.3:a:wpeverest:everest_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-gallery-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_gallery_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-google-places-reviews-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_gplaces_business_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-review-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_review_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-tab-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_tab_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"everest-timeline-lite\": [\n        \"cpe:2.3:a:accesspressthemes:everest_timeline_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ewww-image-optimizer\": [\n        \"cpe:2.3:a:ewww:image_optimizer:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ewww_image_optimizer_plugin_project:ewww_image_optimizer_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exchange-addon-exporter\": [\n        \"cpe:2.3:a:ithemes:ithemes_exchange:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exclusive-addons-for-elementor\": [\n        \"cpe:2.3:a:devscred:exclusive_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:exclusiveaddons:exclusive_addons_for_elementor:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"exit-intent-popups-by-optimonk\": [\n        \"cpe:2.3:a:optimonk:optimonk\\\\:popups\\\\,_personalization_\\\\\\u0026_a\\\\/b_testing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exit-notifier\": [\n        \"cpe:2.3:a:cvstech:exit_notifier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exmage-wp-image-links\": [\n        \"cpe:2.3:a:villatheme:exmage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"expand-maker\": [\n        \"cpe:2.3:a:edmonsoft:read_more_\\\\\\u0026_accordion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"expert-invoice\": [\n        \"cpe:2.3:a:expert_invoice_project:expert_invoice:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"export-all-urls\": [\n        \"cpe:2.3:a:atlasgondal:export_all_urls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"export-post-info\": [\n        \"cpe:2.3:a:apasionados:export_post_info:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"export-users-to-csv\": [\n        \"cpe:2.3:a:export_users_to_csv_project:export_users_to_csv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"export-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:products\\\\,_order_\\\\\\u0026_customers_export_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"export-woocommerce-customer-list\": [\n        \"cpe:2.3:a:piwebsolution:export_customers_list_csv_for_woocommerce:*:*:*:*:*:*:*:*\"\n      ],\n      \"export-wp-page-to-static-html\": [\n        \"cpe:2.3:a:myrecorp:export_wp_page_to_static_html\\\\/css:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exportfeed-for-woocommerce-google-product-feed\": [\n        \"cpe:2.3:a:dpl:sync_woocommerce_product_feed_to_google_shopping:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exportfeed-for-woocommerce-product-to-etsy\": [\n        \"cpe:2.3:a:exportfeed:woocommerce_etsy_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exports-and-reports\": [\n        \"cpe:2.3:a:exports_and_reports_project:exports_and_reports:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"exquisite-paypal-donation\": [\n        \"cpe:2.3:a:exquisite_paypal_donation_project:exquisite_paypal_donation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extended-search-plugin\": [\n        \"cpe:2.3:a:jakesnyder:enhanced_search_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extensions-for-cf7\": [\n        \"cpe:2.3:a:hasthemes:extensions_for_cf7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extensions-for-elementor\": [\n        \"cpe:2.3:a:idioweb:extensions_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extensive-vc-addon\": [\n        \"cpe:2.3:a:wprealize:extensive_vc_addons_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"external-database-based-actions\": [\n        \"cpe:2.3:a:cmorillas1:external_database_based_actions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"external-media\": [\n        \"cpe:2.3:a:external_media_project:external_media:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"external-videos\": [\n        \"cpe:2.3:a:gingertech:external_videos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extra-product-options-for-woocommerce\": [\n        \"cpe:2.3:a:actpro:extra_product_options_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"extra-user-details\": [\n        \"cpe:2.3:a:vadimk:extra_user_details:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ezoic-integration\": [\n        \"cpe:2.3:a:ezoic:ezoic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ezpz-one-click-backup\": [\n        \"cpe:2.3:a:ezpz-one-click-backup_project:ezpz-one-click-backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"f4-improvements\": [\n        \"cpe:2.3:a:f4dev:f4_improvements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-button-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:facebook_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-by-weblizar\": [\n        \"cpe:2.3:a:weblizar:social_likebox_\\\\\\u0026_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-conversion-pixel\": [\n        \"cpe:2.3:a:fatcatapps:pixel_cat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-for-woocommerce\": [\n        \"cpe:2.3:a:facebook:facebook_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-likebox-widget-and-shortcode\": [\n        \"cpe:2.3:a:awplife:profile_box_shortcode_and_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-page-feed-graph-api\": [\n        \"cpe:2.3:a:mongoosemarketplace:mongoose_page_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-pagelike-widget\": [\n        \"cpe:2.3:a:patelmilap:widget_for_social_page_feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"facebook-wall-and-social-integration\": [\n        \"cpe:2.3:a:facebook-wall-and-social-integration_project:facebook-wall-and-social-integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"falang\": [\n        \"cpe:2.3:a:faboba:falang:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fancier-author-box\": [\n        \"cpe:2.3:a:thematosoup:fancier_author_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fancy-facebook-comments\": [\n        \"cpe:2.3:a:heateor:fancy_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fancy-gallery\": [\n        \"cpe:2.3:a:fancy_gallery_project:fancy_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fancybox-for-wordpress\": [\n        \"cpe:2.3:a:colorlib:fancybox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"faq-builder-ays\": [\n        \"cpe:2.3:a:ays-pro:faq_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"far-future-expiry-header\": [\n        \"cpe:2.3:a:tipsandtricks-hq:far_future_expiry_header:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fareharbor\": [\n        \"cpe:2.3:a:fareharbor:fareharbor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-custom-social-share-by-codebard\": [\n        \"cpe:2.3:a:codebard:fast_custom_social_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-flow-dashboard\": [\n        \"cpe:2.3:a:fastflow:fastflow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-search-powered-by-solr\": [\n        \"cpe:2.3:a:fast-search-powered-by-solr_project:fast-search-powered-by-solr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-tube\": [\n        \"cpe:2.3:a:caspie:fast_tube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-velocity-minify\": [\n        \"cpe:2.3:a:fastvelocity:minify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fast-wp-speed\": [\n        \"cpe:2.3:a:fastwpspeed:fast_wp_speed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fastdup\": [\n        \"cpe:2.3:a:ninjateam:fastdup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fastly\": [\n        \"cpe:2.3:a:fastly:fastly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fatal-error-notify\": [\n        \"cpe:2.3:a:verygoodplugins:fatal_error_notify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fathom-analytics\": [\n        \"cpe:2.3:a:conva:fathom_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fattura24\": [\n        \"cpe:2.3:a:fattura24:fattura24:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"favicon-by-realfavicongenerator\": [\n        \"cpe:2.3:a:realfavicongenerator:favicon_by_realfavicongenerator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"favicon-generator\": [\n        \"cpe:2.3:a:pixeljar:favicon_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"favicon-switcher\": [\n        \"cpe:2.3:a:favicon-switcher_project:favicon-switcher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"favorites\": [\n        \"cpe:2.3:a:favoriteposts:favorites:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feather-login-page\": [\n        \"cpe:2.3:a:featherplugins:custom_login_page_\\\\|_temporary_users_\\\\|_rebrand_login_\\\\|_login_captcha:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:featherplugins:feather_login_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feature-comments\": [\n        \"cpe:2.3:a:pippinsplugins:featured_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"featured-image-caption\": [\n        \"cpe:2.3:a:christiaanconover:featured_image_caption:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"featured-image-from-url\": [\n        \"cpe:2.3:a:fifu:featured_image_from_url:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"featured-image-plus\": [\n        \"cpe:2.3:a:krasenslavov:featured_image_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feed-changer\": [\n        \"cpe:2.3:a:wp-master:feed_changer_\\\\\\u0026_remover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feed-instagram-lite\": [\n        \"cpe:2.3:a:ghozylab:gallery_for_social_photo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feed-them-social\": [\n        \"cpe:2.3:a:slickremix:feed_them_social:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feedburner-alternative-and-rss-redirect\": [\n        \"cpe:2.3:a:inisev:rss_redirect_\\\\\\u0026_feedburner_alternative:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feeds-for-youtube\": [\n        \"cpe:2.3:a:smashballoon:feeds_for_youtube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feedwordpress\": [\n        \"cpe:2.3:a:feedwordpress_project:feedwordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"feedzy-rss-feeds\": [\n        \"cpe:2.3:a:themeisle:rss_aggregator_by_feedzy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fetch-jft\": [\n        \"cpe:2.3:a:pjaudiomv:fetch_jft:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fg-drupal-to-wp\": [\n        \"cpe:2.3:a:fredericgilles:fg_drupal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fgallery\": [\n        \"cpe:2.3:a:fgallery_project:fgallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fifthsegment-whitelist\": [\n        \"cpe:2.3:a:abdullahirfan:whitelist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-away\": [\n        \"cpe:2.3:a:file_away_project:file_away:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-gallery\": [\n        \"cpe:2.3:a:file_gallery_project:file_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-manager\": [\n        \"cpe:2.3:a:bitapps:file_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:giribaz:file_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpjos:library_file_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-manager-advanced\": [\n        \"cpe:2.3:a:advancedfilemanager:advanced_file_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-manager-advanced-shortcode-2\": [\n        \"cpe:2.3:a:advancedfilemanager:file_manager_advanced_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"file-provider\": [\n        \"cpe:2.3:a:dimdavid:file_provider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filebird\": [\n        \"cpe:2.3:a:ninjateam:filebird:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filedownload\": [\n        \"cpe:2.3:a:filedownload_project:filedownload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fileorganizer\": [\n        \"cpe:2.3:a:fileorganizer:fileorganizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filester\": [\n        \"cpe:2.3:a:ninjateam:filester:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fileviewer\": [\n        \"cpe:2.3:a:fileviewer_project:fileviewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filr-protection\": [\n        \"cpe:2.3:a:filr_project:filr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filter-custom-fields-taxonomies-light\": [\n        \"cpe:2.3:a:websupporter_filter_custom_fields_\\\\\\u0026_taxonomies_light_project:websupporter_filter_custom_fields_\\\\\\u0026_taxonomies_light:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"filter-portfolio-gallery\": [\n        \"cpe:2.3:a:phoeniixx:filter_portfolio_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"final-tiles-grid-gallery-lite\": [\n        \"cpe:2.3:a:machothemes:image_photo_gallery_final_tiles_grid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"finale-woocommerce-sales-countdown-timer-discount\": [\n        \"cpe:2.3:a:xlplugins:finale:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"find-and-replace-all\": [\n        \"cpe:2.3:a:find_and_replace_all_project:find_and_replace_all:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"find-any-think\": [\n        \"cpe:2.3:a:wpmk_ajax_finder_project:wpmk_ajax_finder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"find-my-blocks\": [\n        \"cpe:2.3:a:find_my_blocks_project:find_my_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"first-graders-toolbox\": [\n        \"cpe:2.3:a:atakanau:1_click_disable_all:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:atakanau:one_click_disable_all:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fish-and-ships\": [\n        \"cpe:2.3:a:wp-centrics:fish_and_ships:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fitness-calculators\": [\n        \"cpe:2.3:a:codeinitiator:fitness_calculators:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codeinitiator:fitness_calculators_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"five-minute-webshop\": [\n        \"cpe:2.3:a:five_minute_webshop_project:five_minute_webshop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fl3r-feelbox\": [\n        \"cpe:2.3:a:armandofiore:fl3r_feelbox:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:fl3r-feelbox_project:fl3r-feelbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flash-album-gallery\": [\n        \"cpe:2.3:a:codeasily:grand_flagallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flat-preloader\": [\n        \"cpe:2.3:a:flat_preloader_project:flat_preloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flatpm-wp\": [\n        \"cpe:2.3:a:mehanoid:flatpm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flattr\": [\n        \"cpe:2.3:a:fkrauthan:wp-mpdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flexi\": [\n        \"cpe:2.3:a:odude:flexi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flexi-quote-rotator\": [\n        \"cpe:2.3:a:flexi_quote_rotator_project:flexi_quote_rotator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flexible-checkout-fields\": [\n        \"cpe:2.3:a:wpdesk:flexible_checkout_fields:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"flexible-elementor-panel\": [\n        \"cpe:2.3:a:webmat:flexible_elementor_panel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flexible-shipping-ups\": [\n        \"cpe:2.3:a:octolize:woocommerce_ups_shipping:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:octolize:woocommerce_ups_shipping:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"flickr-justified-gallery\": [\n        \"cpe:2.3:a:flickr_justified_gallery_project:flickr_justified_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flickr-rss\": [\n        \"cpe:2.3:a:flickrrss_project:flickrrss:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flightlog\": [\n        \"cpe:2.3:a:zavedil:flightlog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flipping-cards\": [\n        \"cpe:2.3:a:info-d-74:flipping_cards:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"float-menu\": [\n        \"cpe:2.3:a:wow-company:float_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-action-button\": [\n        \"cpe:2.3:a:floating_action_button_project:floating_action_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-button\": [\n        \"cpe:2.3:a:wow-company:floating_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-contact\": [\n        \"cpe:2.3:a:just-a-web-developer:floating_contact_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-div\": [\n        \"cpe:2.3:a:floating_div_project:floating_div:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-social-bar\": [\n        \"cpe:2.3:a:floating_social_bar_project:floating_social_bar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbeginner:floating_social_bar:*:*:*:*:wordpress:*:*:*\"\n      ],\n      \"floating-social-buttons\": [\n        \"cpe:2.3:a:click2check:floating_social_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-social-media-icon\": [\n        \"cpe:2.3:a:acurax:floating_social_media_icon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"floating-social-media-links\": [\n        \"cpe:2.3:a:celloexpressions:floating_social_media_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flog\": [\n        \"cpe:2.3:a:flog_project:flog:*:*:*:*:*:*:*:*\"\n      ],\n      \"flower-delivery-by-florist-one\": [\n        \"cpe:2.3:a:floristone:flower_delivery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flowpaper-lite-pdf-flipbook\": [\n        \"cpe:2.3:a:flowpaper:flowpaper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flowplayer6-video-player\": [\n        \"cpe:2.3:a:wphowto:flowplayer_video_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluent-crm\": [\n        \"cpe:2.3:a:wpmanageninja:fluentcrm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluent-security\": [\n        \"cpe:2.3:a:wpmanageninja:fluentauth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluent-smtp\": [\n        \"cpe:2.3:a:wpmanageninja:fluentsmtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluent-support\": [\n        \"cpe:2.3:a:wpmanageninja:fluent_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluentform\": [\n        \"cpe:2.3:a:fluentforms:contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluentforms-pdf\": [\n        \"cpe:2.3:a:wpmanageninja:pdf_generator_for_fluent_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluid-responsive-slideshow\": [\n        \"cpe:2.3:a:tonjoostudio:fluid-responsive-slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flynax-bridge\": [\n        \"cpe:2.3:a:flynax:flynax_bridge:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"folders\": [\n        \"cpe:2.3:a:premio:folders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"follow-me\": [\n        \"cpe:2.3:a:follow_me_plugin_project:follow_me_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"font\": [\n        \"cpe:2.3:a:font_project:font:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"font-awesome\": [\n        \"cpe:2.3:a:fontawesome:font_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"font-awesome-4-menus\": [\n        \"cpe:2.3:a:newnine:font_awesome_4_menus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fontific\": [\n        \"cpe:2.3:a:andrei_ivasiuc:fontific:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fontmeister\": [\n        \"cpe:2.3:a:fontmeister_project:fontmeister:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fontsy\": [\n        \"cpe:2.3:a:fontsy_project:fontsy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"foobox-image-lightbox\": [\n        \"cpe:2.3:a:fooplugins:foobox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"food-and-drink-menu\": [\n        \"cpe:2.3:a:fivestarplugins:five_star_restaurant_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"foogallery\": [\n        \"cpe:2.3:a:fooplugins:foogallery:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:fooplugins:foogallery:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"foogallery-premium\": [\n        \"cpe:2.3:a:fooplugins:foogallery:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:fooplugins:foogallery:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"football-leagues-by-anwppro\": [\n        \"cpe:2.3:a:anwp:football_leagues:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:anwp:football_leagues:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"football-pool\": [\n        \"cpe:2.3:a:antoineh:football_pool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"footer-putter\": [\n        \"cpe:2.3:a:diywebmastery:footer_putter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"footer-text\": [\n        \"cpe:2.3:a:footer-text_project:footer-text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"for-the-visually-impaired\": [\n        \"cpe:2.3:a:984.ru:for_the_visually_impaired:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"force-first-last\": [\n        \"cpe:2.3:a:strangerstudios:force_display_name:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forget-about-shortcode-buttons\": [\n        \"cpe:2.3:a:designsandcode:forget_about_shortcode_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"form-maker\": [\n        \"cpe:2.3:a:10web:form_maker:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-dorado:form_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"form-vibes\": [\n        \"cpe:2.3:a:wpvibes:form_vibes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formality\": [\n        \"cpe:2.3:a:giorgi:formality:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formbuilder\": [\n        \"cpe:2.3:a:formbuilder_project:formbuilder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formcraft-form-builder\": [\n        \"cpe:2.3:a:formcrafts:formcraft:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ncrafts:formcraft:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formfacade\": [\n        \"cpe:2.3:a:formfacade:formfacade:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formforall\": [\n        \"cpe:2.3:a:formforall:formforall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formget-contact-form\": [\n        \"cpe:2.3:a:formget:contact_form_by_formget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formidable\": [\n        \"cpe:2.3:a:strategy11:formidable_form_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:strategy11:formidable_forms:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"formidable-sms\": [\n        \"cpe:2.3:a:mediaburst:formidable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formidablepro-2-pdf\": [\n        \"cpe:2.3:a:formidablepro2pdf:formidable_pro2pdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formilla-live-chat\": [\n        \"cpe:2.3:a:formilla:live_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forminator\": [\n        \"cpe:2.3:a:incsub:forminator:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wpmudev:forminator_forms:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"formlift\": [\n        \"cpe:2.3:a:formlift:formlift_for_infusionsoft_web_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forms-ada-form-builder\": [\n        \"cpe:2.3:a:monitorclick:forms_ada:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forms-by-made-it\": [\n        \"cpe:2.3:a:madeit:forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forms-for-campaign-monitor\": [\n        \"cpe:2.3:a:campaignmonitor:campaign_monitor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forms-gutenberg\": [\n        \"cpe:2.3:a:gutenbergforms:gutenberg_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formzu-wp\": [\n        \"cpe:2.3:a:formzu:formzu_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"forumwp\": [\n        \"cpe:2.3:a:ultimatemember:forumwp:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:ultimatemember:forumwp:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"fossura-tag-miner\": [\n        \"cpe:2.3:a:fossura:tag_miner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fotobook\": [\n        \"cpe:2.3:a:fotobook_project:fotobook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"foxyshop\": [\n        \"cpe:2.3:a:foxy:foxyshop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"free-comments-for-wordpress-vuukle\": [\n        \"cpe:2.3:a:vuukle:vuukle_comments\\\\,_reactions\\\\,_share_bar\\\\,_revenue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"free-sales-funnel-squeeze-pages-landing-page-builder-templates-make\": [\n        \"cpe:2.3:a:wpleadplus:wp_lead_plus_x:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"freemind-wp-browser\": [\n        \"cpe:2.3:a:freemind_wp_browser_project:freemind_wp_browser:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"freshdesk-support\": [\n        \"cpe:2.3:a:freshworks:freshdesk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"freshmail-newsletter\": [\n        \"cpe:2.3:a:borbis:freshmail_for_wordpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:freshmail:freshmail-newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"friends\": [\n        \"cpe:2.3:a:alex.kirk:friends:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"front-end-only-users\": [\n        \"cpe:2.3:a:etoilewebdesign:front_end_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"front-end-pm\": [\n        \"cpe:2.3:a:shamimsplugins:front_end_pm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"frontend-checklist\": [\n        \"cpe:2.3:a:j-breuer:frontend_checklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"frontend-dashboard\": [\n        \"cpe:2.3:a:buffercode:frontend_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"frontend-uploader\": [\n        \"cpe:2.3:a:frontend_uploader_project:frontend_uploader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"frontier-post\": [\n        \"cpe:2.3:a:wpfrontier:frontier_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fs-product-inquiry\": [\n        \"cpe:2.3:a:fudugo:fs_product_inquiry:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fs-shopping-cart\": [\n        \"cpe:2.3:a:firestormplugins:fs-shopping-cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fscf-sms\": [\n        \"cpe:2.3:a:mediaburst:fast_secure_contact_form_sms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fsflex-local-fonts\": [\n        \"cpe:2.3:a:flex_local_fonts_project:flex_local_fonts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ftp-access\": [\n        \"cpe:2.3:a:danialhatami:ftp_access:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"full-customer\": [\n        \"cpe:2.3:a:full:full_-_customer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"full-site-editing\": [\n        \"cpe:2.3:a:automattic:wordpress.com_editing_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"funnel-builder\": [\n        \"cpe:2.3:a:funnelkit:funnel_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"funnel-builder-pro\": [\n        \"cpe:2.3:a:funnelkit:funnel_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"funnelforms-free\": [\n        \"cpe:2.3:a:funnelforms:funnelforms_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"furikake\": [\n        \"cpe:2.3:a:furikake_project:furikake:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fusedesk\": [\n        \"cpe:2.3:a:jeremyshapiro:fusedesk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fusion\": [\n        \"cpe:2.3:a:avada:fusion_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fusion-builder\": [\n        \"cpe:2.3:a:theme-fusion:avada:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fusion-slider\": [\n        \"cpe:2.3:a:webhuntinfotech:universal_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"futurio-extra\": [\n        \"cpe:2.3:a:futuriowp:futurio_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fv-wordpress-flowplayer\": [\n        \"cpe:2.3:a:foliovision:fv_flowplayer_video_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"g-auto-hyperlink\": [\n        \"cpe:2.3:a:g_auto-hyperlink_project:g_auto-hyperlink:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"galleria\": [\n        \"cpe:2.3:a:galleria_project:galleria:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-album\": [\n        \"cpe:2.3:a:wpdevart:gallery:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdevart:responsive_image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-bank\": [\n        \"cpe:2.3:a:tech-banker:gallery_bank:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-categories\": [\n        \"cpe:2.3:a:bestwebsoft:gallery_categories:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-image-gallery-photo\": [\n        \"cpe:2.3:a:rich-web:image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-images\": [\n        \"cpe:2.3:a:huge-it:image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-images-ape\": [\n        \"cpe:2.3:a:robogallery:gallery_images_ape:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-metabox\": [\n        \"cpe:2.3:a:gallery-metabox_project:gallery-metabox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-photo-gallery\": [\n        \"cpe:2.3:a:ays-pro:photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-videos\": [\n        \"cpe:2.3:a:total-soft:video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gallery-with-thumbnail-slider\": [\n        \"cpe:2.3:a:galaxyweblinks:gallery_with_thumbnail_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"game-server-status\": [\n        \"cpe:2.3:a:game-server-status_project:game-server-status:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gamepress\": [\n        \"cpe:2.3:a:gamepress_project:gamepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gamipress\": [\n        \"cpe:2.3:a:gamipress:gamipress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gamipress-link\": [\n        \"cpe:2.3:a:gamipress:gamipress_-_link:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"garden-gnome-package\": [\n        \"cpe:2.3:a:ggnome:garden_gnome_package:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gc-testimonials\": [\n        \"cpe:2.3:a:gc_testimonials_project:gc_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gd-bbpress-attachments\": [\n        \"cpe:2.3:a:dev4press:gd_bbpress_attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gd-mail-queue\": [\n        \"cpe:2.3:a:dev4press:gd_mail_queue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gd-mylist\": [\n        \"cpe:2.3:a:gd-mylist_project:gd-mylist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gd-rating-system\": [\n        \"cpe:2.3:a:dev4press:gd_rating_system:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"gd-security-headers\": [\n        \"cpe:2.3:a:dev4press:gd_security_headers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gdpr-compliance-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:gdpr_cookie_consent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gdpr-compliance-cookie-consent\": [\n        \"cpe:2.3:a:stylemixthemes:gdpr_compliance_\\\\\\u0026_cookie_consent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gdpr-cookie-compliance\": [\n        \"cpe:2.3:a:mooveagency:gdpr_cookie_compliance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gdpr-cookie-consent\": [\n        \"cpe:2.3:a:wpeka:wp_cookie_consent:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"gdpr-data-request-form\": [\n        \"cpe:2.3:a:whodunit:gdpr_data_request_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gdpr-framework\": [\n        \"cpe:2.3:a:data443:gdpr_framework:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gecka-terms-thumbnails\": [\n        \"cpe:2.3:a:gecka:terms_thumbnails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"generate-child-theme\": [\n        \"cpe:2.3:a:catchplugins:generate_child_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"generate-pdf-using-contact-form-7\": [\n        \"cpe:2.3:a:zealousweb:generate_pdf_using_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"generatepress-premium\": [\n        \"cpe:2.3:a:generatepress:generatepress:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"genesis-blocks\": [\n        \"cpe:2.3:a:wpengine:genesis_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"genesis-columns-advanced\": [\n        \"cpe:2.3:a:genesis_columns_advanced_project:genesis_columns_advanced:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"genesis-simple-love\": [\n        \"cpe:2.3:a:phpbits:genesis_simple_love:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"genie-wp-favicon\": [\n        \"cpe:2.3:a:genie_wp_favicon_project:genie_wp_favicon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"genki-pre-publish-reminder\": [\n        \"cpe:2.3:a:genki_pre-publish_reminder_project:genki_pre-publish_reminder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"genoo\": [\n        \"cpe:2.3:a:genoo:genoo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"geo-mashup\": [\n        \"cpe:2.3:a:cyberhobo:geo_mashup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"geo-my-wp\": [\n        \"cpe:2.3:a:geomywp:geo_my_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"geodirectory\": [\n        \"cpe:2.3:a:ayecode:geodirectory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gerryworks-post-by-mail\": [\n        \"cpe:2.3:a:gerryntabuhashe:gerryworks_post_by_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"get-custom-field-values\": [\n        \"cpe:2.3:a:get_custom_field_values_project:get_custom_field_values:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"get-site-to-phone-by-qr-code\": [\n        \"cpe:2.3:a:showing_url_in_qr_code_project:showing_url_in_qr_code:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"get-your-number\": [\n        \"cpe:2.3:a:punchcreative:get_your_number:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"getresponse\": [\n        \"cpe:2.3:a:fatcatapps:getresponse_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"getresponse-integration\": [\n        \"cpe:2.3:a:getresponse:getresponse:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gettext-override-translations\": [\n        \"cpe:2.3:a:gettext_override_translations_project:gettext_override_translations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"getwid\": [\n        \"cpe:2.3:a:motopress:getwid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"getyourguide-ticketing\": [\n        \"cpe:2.3:a:getyourguide_ticketing_project:getyourguide_ticketing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gf-block-ips\": [\n        \"cpe:2.3:a:brightplugins:block_ips_for_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gf-custom-style\": [\n        \"cpe:2.3:a:alefypimentel:gf_custom_style:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gg-woo-feed\": [\n        \"cpe:2.3:a:gutengeek:gg_woo_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ghost\": [\n        \"cpe:2.3:a:ghost:ghost:*:*:*:*:*:node.js:*:*\",\n        \"cpe:2.3:a:ghost:ghost:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gianism\": [\n        \"cpe:2.3:a:takahashifumiki:gianism:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gift-certificate-creator\": [\n        \"cpe:2.3:a:bobcares:gift-certificate-creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gift-up\": [\n        \"cpe:2.3:a:giftup:gift_up_gift_cards_for_wordpress_and_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gift-voucher\": [\n        \"cpe:2.3:a:codemenschen:gift_vouchers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gigpress\": [\n        \"cpe:2.3:a:tri:gigpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"give\": [\n        \"cpe:2.3:a:givewp:givewp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"giveasap\": [\n        \"cpe:2.3:a:ibenic:simple_giveaways:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"giveaway\": [\n        \"cpe:2.3:a:satollo:giveaway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"giveaway-boost\": [\n        \"cpe:2.3:a:giveawayboost:giveaway_boost:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gixaw-chat\": [\n        \"cpe:2.3:a:adeelraza:gixaw_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"glass\": [\n        \"cpe:2.3:a:codeblab:glass:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"global-content-blocks\": [\n        \"cpe:2.3:a:global_content_blocks_project:global_content_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"global-gallery\": [\n        \"cpe:2.3:a:lcweb:global_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"glossary-by-codeat\": [\n        \"cpe:2.3:a:codeat:glossary:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"glossy\": [\n        \"cpe:2.3:a:croberts:glossy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gm-woocommerce-quote-popup\": [\n        \"cpe:2.3:a:gravitymaster:product_enquiry_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gmace\": [\n        \"cpe:2.3:a:gmace_project:gmace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gmap-embed\": [\n        \"cpe:2.3:a:wpgooglemap:wp_google_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gn-publisher\": [\n        \"cpe:2.3:a:gnpublisher:gn_publisher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gnu-mailman-integration\": [\n        \"cpe:2.3:a:gnu-mailman_integration_project:gnu-mailman_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gnucommerce\": [\n        \"cpe:2.3:a:sir:gnucommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gocodes\": [\n        \"cpe:2.3:a:webmaster-source:gocodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"godaddy-email-marketing-sign-up-forms\": [\n        \"cpe:2.3:a:godaddy:godaddy_email_marketing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gold-price-chart-widget\": [\n        \"cpe:2.3:a:goldbroker:live_gold_price_\\\\\\u0026_silver_price_charts_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"good-bad-comments\": [\n        \"cpe:2.3:a:good-bad-comments_project:good-bad-comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analyticator\": [\n        \"cpe:2.3:a:sumo:google_analyticator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analytics-dashboard\": [\n        \"cpe:2.3:a:yoast:google_analytics_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analytics-dashboard-for-wp\": [\n        \"cpe:2.3:a:monsterinsights:exactmetrics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analytics-for-wordpress\": [\n        \"cpe:2.3:a:monsterinsights:monsterinsights:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analytics-opt-out\": [\n        \"cpe:2.3:a:wp-buddy:google_analytics_opt-out:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-analytics-top-posts-widget\": [\n        \"cpe:2.3:a:google_analytics_top_content_widget_project:google_analytics_top_content_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-apps-login\": [\n        \"cpe:2.3:a:wp-glogin:login_for_google_apps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-authenticator\": [\n        \"cpe:2.3:a:miniorange:google_authenticator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-calendar-events\": [\n        \"cpe:2.3:a:google_calendar_events_project:google_calendar_events:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:xtendify:simple_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-captcha\": [\n        \"cpe:2.3:a:bestwebsoft:google_captcha:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:google_captcha_\\\\(recaptcha\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-cse\": [\n        \"cpe:2.3:a:erikeng:google_cse:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-document-embedder\": [\n        \"cpe:2.3:a:google_doc_embedder:google_doc_embedder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:google_doc_embedder_project:google_doc_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-drive-embedder\": [\n        \"cpe:2.3:a:google_doc_embedder_project:google_doc_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-language-translator\": [\n        \"cpe:2.3:a:gtranslate:google_language_translator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-map-locations\": [\n        \"cpe:2.3:a:dotsquares:google_map_locations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-map-shortcode\": [\n        \"cpe:2.3:a:web-argument:google-map-shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-maps-advanced\": [\n        \"cpe:2.3:a:inline_google_maps_project:inline_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-maps-anywhere\": [\n        \"cpe:2.3:a:google_maps_anywhere_project:google_maps_anywhere:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-maps-easy\": [\n        \"cpe:2.3:a:supsystic:easy_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-maps-v3-shortcode\": [\n        \"cpe:2.3:a:google_maps_v3_shortcode_project:google_maps_v3_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-maps-widget\": [\n        \"cpe:2.3:a:webfactoryltd:maps_widget_for_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-mobile-sitemap\": [\n        \"cpe:2.3:a:digitalinspiration:google_xml_sitemap_for_mobile:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-news-sitemap\": [\n        \"cpe:2.3:a:google-news-sitemap_project:google-news-sitemap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-one\": [\n        \"cpe:2.3:a:bestwebsoft:google_\\\\+1:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-pagespeed-insights\": [\n        \"cpe:2.3:a:insights_from_google_pagespeed_project:insights_from_google_pagespeed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-picasa-albums-viewer\": [\n        \"cpe:2.3:a:nakunakifi:google_photos_gallery_with_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-shortlink\": [\n        \"cpe:2.3:a:bestwebsoft:google_shortlink:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-site-kit\": [\n        \"cpe:2.3:a:google:site_kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-site-verification-using-meta-tag\": [\n        \"cpe:2.3:a:himanshuparashar:google_site_verification_plugin_using_meta_tag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-sitemap-generator\": [\n        \"cpe:2.3:a:google_xml_sitemaps_project:google_xml_sitemaps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-sitemap-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:google_sitemap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"google-website-translator\": [\n        \"cpe:2.3:a:prisna:google_website_translator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"googleanalytics\": [\n        \"cpe:2.3:a:sharethis:dashboard_for_google_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"googmonify\": [\n        \"cpe:2.3:a:googmonify_project:googmonify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"goolytics-simple-google-analytics\": [\n        \"cpe:2.3:a:goolytics_project:goolytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gotmls\": [\n        \"cpe:2.3:a:anti-malware_security_and_brute-force_firewall_project:anti-malware_security_and_brute-force_firewall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gotowp\": [\n        \"cpe:2.3:a:gotowp:gotowp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gourl-bitcoin-payment-gateway-paid-downloads-membership\": [\n        \"cpe:2.3:a:gorul:gourl:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gpt3-ai-content-generator\": [\n        \"cpe:2.3:a:aipower:aipower:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:gptaipower:gpt_ai_power:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gracemedia-media-player\": [\n        \"cpe:2.3:a:gracemedia_media_player_project:gracemedia_media_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"grand-media\": [\n        \"cpe:2.3:a:codeasily:gmedia_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"graphicsly\": [\n        \"cpe:2.3:a:graphicsly:graphicsly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gravitate-qa-tracker\": [\n        \"cpe:2.3:a:gravitatedesign:gravitate_qa_tracker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gravity-forms-dps-pxpay\": [\n        \"cpe:2.3:a:webaware:gf_windcave_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gravity-forms-sms-notifications\": [\n        \"cpe:2.3:a:mediaburst:gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"great-quotes\": [\n        \"cpe:2.3:a:great-quotes_project:great-quotes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"greeklish-permalink\": [\n        \"cpe:2.3:a:greeklish-permalink_project:greeklish-permalink:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"greenshift-animation-and-page-builder-blocks\": [\n        \"cpe:2.3:a:wpsoul:greenshift:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"greenwallet-gateway\": [\n        \"cpe:2.3:a:envision\\\\\\u0026company:woocommerce_green_wallet_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gregs-high-performance-seo\": [\n        \"cpe:2.3:a:greg\\\\'s_high_performance_seo_project:greg\\\\'s_high_performance_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"grid-plus\": [\n        \"cpe:2.3:a:g5theme:grid_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"groundhogg\": [\n        \"cpe:2.3:a:groundhogg:groundhogg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gs-logo-slider\": [\n        \"cpe:2.3:a:gsplugins:gs_logo_slider:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:gsplugins:logo_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gs-pinterest-portfolio\": [\n        \"cpe:2.3:a:gsplugins:gs_pinterest_portfolio:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"gs-portfolio\": [\n        \"cpe:2.3:a:gsplugins:gs_filterable_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gs-testimonial\": [\n        \"cpe:2.3:a:gsplugins:gs_testimonial_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gs-woo-brands\": [\n        \"cpe:2.3:a:gsplugins:woocommerce_brands:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gs-woocommerce-products-slider\": [\n        \"cpe:2.3:a:gsplugins:gs_products_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gseor\": [\n        \"cpe:2.3:a:bestiaweb:gseor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gsheetconnector-caldera-forms\": [\n        \"cpe:2.3:a:gsheetconnector:caldera_forms_google_sheets_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gsheetconnector-forminator\": [\n        \"cpe:2.3:a:gsheetconnector:gsheetconnector_for_forminator_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gsheetconnector-gravity-forms\": [\n        \"cpe:2.3:a:gsheetconnector:gravity_forms_google_sheets_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gsheetconnector-ninja-forms\": [\n        \"cpe:2.3:a:gsheetconnector:ninja_forms_google_sheet_connector:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"gsheetconnector-wpforms\": [\n        \"cpe:2.3:a:gsheetconnector:wpforms_google_sheet_connector:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"gtbabel\": [\n        \"cpe:2.3:a:gtbabel:gtbabel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gtg-advanced-blocks\": [\n        \"cpe:2.3:a:gutengeek:free_gutenberg_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gtm-server-side\": [\n        \"cpe:2.3:a:stape:gtm_server_side:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gtmetrix-for-wordpress\": [\n        \"cpe:2.3:a:gtmetrix:gtmetrix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gtranslate\": [\n        \"cpe:2.3:a:gtranslate:gtranslate:*:*:*:*:enterprise:wordpress:*:*\",\n        \"cpe:2.3:a:gtranslate:gtranslate:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:gtranslate:translate_wordpress_with_gtranslate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"guardgiant\": [\n        \"cpe:2.3:a:guardgiant:guardgiant:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:guardgiant:wordpress_brute_force_protection_-_stop_brute_force_attacks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"guest-author\": [\n        \"cpe:2.3:a:webfactoryltd:guest_author:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"guest-author-name\": [\n        \"cpe:2.3:a:shooflysolutions:\\\\(simply\\\\)_guest_author_name:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gum-elementor-addon\": [\n        \"cpe:2.3:a:celomitan:gum_elementor_addon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gumlet-video\": [\n        \"cpe:2.3:a:gumlet:video:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"guruwalk-affiliates\": [\n        \"cpe:2.3:a:guruwalk:guruwalk_affiliates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gutenberg\": [\n        \"cpe:2.3:a:wordpress:gutenberg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gutenkit-blocks-addon\": [\n        \"cpe:2.3:a:wpmet:gutenkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gutenslider\": [\n        \"cpe:2.3:a:gutenslider:gutenslider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gutentor\": [\n        \"cpe:2.3:a:gutentor:gutentor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gutenverse\": [\n        \"cpe:2.3:a:jegstudio:gutenverse:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"gutenverse-news\": [\n        \"cpe:2.3:a:jegstudio:gutenverse_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gwa-autoresponder\": [\n        \"cpe:2.3:a:\\\\[gwa\\\\]_autoresponder_project:\\\\[gwa\\\\]_autoresponder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gwolle-gb\": [\n        \"cpe:2.3:a:gwolle_guestbook_project:gwolle_guestbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gwyns-imagemap-selector\": [\n        \"cpe:2.3:a:gwyn\\\\'s_imagemap_selector_project:gwyn\\\\'s_imagemap_selector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"h5p\": [\n        \"cpe:2.3:a:h5p:h5p:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hal\": [\n        \"cpe:2.3:a:cnrs:hal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hana-flv-player\": [\n        \"cpe:2.3:a:hana_flv_player_project:hana_flv_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"handl-utm-grabber\": [\n        \"cpe:2.3:a:haktansuren:handl_utm_grabber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"handsome-testimonials\": [\n        \"cpe:2.3:a:handsome_testimonials_\\\\\\u0026_reviews_project:handsome_testimonials_\\\\\\u0026_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"happy-elementor-addons\": [\n        \"cpe:2.3:a:leevio:happy_addons_for_elementor:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wedevs:happy_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wedevs:happy_addons_for_elementor:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"happyforms\": [\n        \"cpe:2.3:a:happyforms:happyforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hash-elements\": [\n        \"cpe:2.3:a:hashthemes:hash_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hash-form\": [\n        \"cpe:2.3:a:hashthemes:hash_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hashbar-wp-notification-bar\": [\n        \"cpe:2.3:a:hasthemes:hashbar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hashthemes-demo-importer\": [\n        \"cpe:2.3:a:hashthemes:hashthemes_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hc-custom-wp-admin-url\": [\n        \"cpe:2.3:a:hc_custom_wp-admin_url_project:hc_custom_wp-admin_url:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hd-quiz\": [\n        \"cpe:2.3:a:harmonicdesign:hd_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hdw-player-video-player-video-gallery\": [\n        \"cpe:2.3:a:hdwplayer:hdw_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"header-enhancement\": [\n        \"cpe:2.3:a:catchplugins:header_enhancement:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"header-footer-code\": [\n        \"cpe:2.3:a:ninjateam:header_footer_custom_code:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"header-footer-code-manager\": [\n        \"cpe:2.3:a:draftpress:header_footer_code_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"header-footer-elementor\": [\n        \"cpe:2.3:a:brainstormforce:elementor_-_header\\\\,_footer_\\\\\\u0026_blocks_template:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:brainstormforce:elementor_header_\\\\\\u0026_footer_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"heat-trackr\": [\n        \"cpe:2.3:a:heat-trackr_project:heat-trackr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"heateor-social-comments\": [\n        \"cpe:2.3:a:heateor:social_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"heateor-social-login\": [\n        \"cpe:2.3:a:heateor:social_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hello-world\": [\n        \"cpe:2.3:a:kau-boys:hello_world:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"helloasso\": [\n        \"cpe:2.3:a:helloasso:helloasso:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"helloprint\": [\n        \"cpe:2.3:a:helloprint:helloprint:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"helpie-faq\": [\n        \"cpe:2.3:a:helpiewp:accordion_\\\\\\u0026_faq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hermit\": [\n        \"cpe:2.3:a:hermit_project:hermit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hero-banner-ultimate\": [\n        \"cpe:2.3:a:essentialplugin:hero_banner_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"heureka\": [\n        \"cpe:2.3:a:heureka:heureka:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hide-my-wp\": [\n        \"cpe:2.3:a:wpplugins:hide_my_wp_ghost:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"high-compress\": [\n        \"cpe:2.3:a:himalayasaxena:highcompress_image_compressor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"highlight\": [\n        \"cpe:2.3:a:dna88:highlight:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"highlight-focus\": [\n        \"cpe:2.3:a:highlight_focus_project:highlight_focus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hiweb-migration-simple\": [\n        \"cpe:2.3:a:hiweb:migration_simple:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hk-exif-tags\": [\n        \"cpe:2.3:a:hk_exif_tags_project:hk_exif_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hk-filter-and-search\": [\n        \"cpe:2.3:a:jonashjalmarsson:html_filter_and_csv-file_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hkdev-maintenance-mode\": [\n        \"cpe:2.3:a:helderk:maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hms-testimonials\": [\n        \"cpe:2.3:a:hitmyserver:hms_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"homepage-product-organizer-for-woocommerce\": [\n        \"cpe:2.3:a:homepage_product_organizer_for_woocommerce_project:homepage_product_organizer_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"homerunner-smartcheckout\": [\n        \"cpe:2.3:a:coolrunner:homerunner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"honeypot\": [\n        \"cpe:2.3:a:dineshkarki:wp_armour:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"honeypot-for-wp-comment\": [\n        \"cpe:2.3:a:prasidhdamalla:honeypot_for_wp_comment:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hoo-addons-for-elementor\": [\n        \"cpe:2.3:a:hoosoft:hoo_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"horizontal-scrolling-announcement\": [\n        \"cpe:2.3:a:gopiplus:horizontal_scrolling_announcement:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"host-analyticsjs-local\": [\n        \"cpe:2.3:a:daan:complete_analytics_optimization_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"host-webfonts-local\": [\n        \"cpe:2.3:a:daan:omgf:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ffw:optimize_my_google_fonts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hostel\": [\n        \"cpe:2.3:a:kibokolabs:hostel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hostinger\": [\n        \"cpe:2.3:a:hostinger:hostinger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hot-linked-image-cacher\": [\n        \"cpe:2.3:a:hot_linked_image_cacher_project:hot_linked_image_cacher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hot-random-image\": [\n        \"cpe:2.3:a:hot-themes:hot_random_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hotjar\": [\n        \"cpe:2.3:a:hotjar:hotjar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hotjar-connecticator\": [\n        \"cpe:2.3:a:bluemedicinelabs:hotjar_connecticator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hotscot-contact-form\": [\n        \"cpe:2.3:a:hotscot:contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hover-image\": [\n        \"cpe:2.3:a:hover-image_project:hover-image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hpbtool\": [\n        \"cpe:2.3:a:justsystems:hpb_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hreflang-tags-by-dcgws\": [\n        \"cpe:2.3:a:dcgws:hreflang_tags_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hrm\": [\n        \"cpe:2.3:a:mishubd:wp_human_resource_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-builder\": [\n        \"cpe:2.3:a:hasthemes:ht_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-contactform\": [\n        \"cpe:2.3:a:hasthemes:download_contact_form_7_widget_for_elementor_page_builder_\\\\\\u0026_gutenberg_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-easy-google-analytics\": [\n        \"cpe:2.3:a:hasthemes:ht_easy_ga4_\\\\(google_analytics_4\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-event\": [\n        \"cpe:2.3:a:hasthemes:ht_event:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-instagram\": [\n        \"cpe:2.3:a:hasthemes:ht_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-mega-for-elementor\": [\n        \"cpe:2.3:a:hasthemes:ht_mega:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"ht-menu-lite\": [\n        \"cpe:2.3:a:hasthemes:ht_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-portfolio\": [\n        \"cpe:2.3:a:hasthemes:ht_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ht-slider-for-elementor\": [\n        \"cpe:2.3:a:hasthemes:ht_slider_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"htaccess\": [\n        \"cpe:2.3:a:bestwebsoft:htaccess:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"htaccess-file-editor\": [\n        \"cpe:2.3:a:wpchill:htaccess_file_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html-forms\": [\n        \"cpe:2.3:a:linksoftwarellc:html_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html5-audio-player\": [\n        \"cpe:2.3:a:bplugins:html5_audio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html5-maps\": [\n        \"cpe:2.3:a:fla-shop:html5_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html5-mp3-player-with-playlist\": [\n        \"cpe:2.3:a:svnlabs:html5_mp3_player_with_playlist_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html5-soundcloud-player-with-playlist\": [\n        \"cpe:2.3:a:svnlabs:html5_soundcloud_player_with_playlist_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"html5-video-player\": [\n        \"cpe:2.3:a:bplugins:html5_video_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"http-auth\": [\n        \"cpe:2.3:a:yasglobal:http_auth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"http-headers\": [\n        \"cpe:2.3:a:riverside:http_headers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"http-https-remover\": [\n        \"cpe:2.3:a:inisev:ssl_mixed_content_fix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hummingbird-performance\": [\n        \"cpe:2.3:a:incsub:hummingbird:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hungarian-pickup-points-for-woocommerce\": [\n        \"cpe:2.3:a:visztpeter:package_points_and_shipping_labels_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hunk-companion\": [\n        \"cpe:2.3:a:themehunk:hunk_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hurrytimer\": [\n        \"cpe:2.3:a:nabillemsieh:hurrytimer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hyphenator\": [\n        \"cpe:2.3:a:benedictb\\\\/maciejgryniuk:hyphenator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"i-recommend-this\": [\n        \"cpe:2.3:a:themeist:i_recommend_this:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"i2-pro-cons\": [\n        \"cpe:2.3:a:i2_pros_\\\\\\u0026_cons_project:i2_pros_\\\\\\u0026_cons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ibs-mappro\": [\n        \"cpe:2.3:a:ibs_mappro_project:ibs_mappro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ibtana-visual-editor\": [\n        \"cpe:2.3:a:vowelweb:ibtana:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"icegram\": [\n        \"cpe:2.3:a:icegram:icegram_engage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"icons-font-loader\": [\n        \"cpe:2.3:a:bplugins:icons_font_loader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"icons-for-features\": [\n        \"cpe:2.3:a:woocommerce:icons_for_features:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"idbbee\": [\n        \"cpe:2.3:a:dbbee:idbbee:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ideapush\": [\n        \"cpe:2.3:a:northernbeacheswebsites:ideapush:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"idonate\": [\n        \"cpe:2.3:a:themeatelier:idonate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"idx-broker-platinum\": [\n        \"cpe:2.3:a:idxbroker:idx_broker:*:*:*:*:platinum:wordpress:*:*\",\n        \"cpe:2.3:a:idxbroker:impress_for_idx_broker:*:*:*:*:platinum:wordpress:*:*\"\n      ],\n      \"if-so\": [\n        \"cpe:2.3:a:if-so:dynamic_content_personalization:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:if-so:if-so:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ifeature-slider\": [\n        \"cpe:2.3:a:cyberchimps:ifeature_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iflychat\": [\n        \"cpe:2.3:a:iflychat:iflychat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ifolders\": [\n        \"cpe:2.3:a:avirtum:ifolders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iframe\": [\n        \"cpe:2.3:a:iframe_project:iframe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iframe-forms\": [\n        \"cpe:2.3:a:jrbecart:iframe_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iframe-shortcode\": [\n        \"cpe:2.3:a:jacksonwhelan:iframe_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"igniteup\": [\n        \"cpe:2.3:a:getigniteup:igniteup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"igumbi-online-booking\": [\n        \"cpe:2.3:a:igumbi:igumbi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iksweb\": [\n        \"cpe:2.3:a:iksweb:wordpress_ctapt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-export\": [\n        \"cpe:2.3:a:image-export_project:image-export:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-gallery\": [\n        \"cpe:2.3:a:getbutterfly:imagepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-gallery-with-slideshow\": [\n        \"cpe:2.3:a:anblik:image-gallery-with-slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-horizontal-reel-scroll-slideshow\": [\n        \"cpe:2.3:a:gopiplus:image_horizontal_reel_scroll_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects\": [\n        \"cpe:2.3:a:webdevocean:image_hover_effects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects-addon-for-elementor\": [\n        \"cpe:2.3:a:blocksera:image_hover_effects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects-css3\": [\n        \"cpe:2.3:a:image_hover_effects_css3_project:image_hover_effects_css3:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects-ultimate\": [\n        \"cpe:2.3:a:oxilab:image_hover_effects_ultimate:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:oxilab:image_hover_effects_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects-visual-composer-extension\": [\n        \"cpe:2.3:a:webdevocean:image_hover_effects_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-hover-effects-with-carousel\": [\n        \"cpe:2.3:a:oxilab:image_hover_effects_for_elementor_with_lightbox_and_flipbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-map-pro-lite\": [\n        \"cpe:2.3:a:webcraftplugins:image_map_pro:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"image-metadata-cruncher\": [\n        \"cpe:2.3:a:image_metadata_cruncher_project:image_metadata_cruncher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-over-image-vc-extension\": [\n        \"cpe:2.3:a:image_over_image_for_wpbakery_page_builder_project:image_over_image_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-protector\": [\n        \"cpe:2.3:a:image_protector_project:image_protector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-regenerate-select-crop\": [\n        \"cpe:2.3:a:iuliacazan:image_regenerate_\\\\\\u0026_select_crop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-slider-widget\": [\n        \"cpe:2.3:a:ghozylab:image_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-source-control-isc\": [\n        \"cpe:2.3:a:imagesourcecontrol:image_source_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-tag-manager\": [\n        \"cpe:2.3:a:bradleybdalina:image_tag_manager:*:*:*:*:*:*:*:*\"\n      ],\n      \"image-upload-for-bbpress\": [\n        \"cpe:2.3:a:wpzone:inline_image_upload_for_bbpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-vertical-reel-scroll-slideshow\": [\n        \"cpe:2.3:a:gopiplus:image_vertical_reel_scroll_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"image-widget\": [\n        \"cpe:2.3:a:stellarwp:image_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imageboss\": [\n        \"cpe:2.3:a:imageboss:imageboss:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imagelinks-interactive-image-builder-lite\": [\n        \"cpe:2.3:a:avirtum:imagelinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imagemagick-engine\": [\n        \"cpe:2.3:a:orangelab:imagemagick_engine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imagemapper\": [\n        \"cpe:2.3:a:imagemapper_project:imagemapper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imagements\": [\n        \"cpe:2.3:a:imagements_project:imagements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imagerecycle-pdf-image-compression\": [\n        \"cpe:2.3:a:imagerecycle:imagerecycle_pdf_\\\\\\u0026_image_compression:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"images-optimize-and-upload-cf7\": [\n        \"cpe:2.3:a:images_optimize_and_upload_cf7_project:images_optimize_and_upload_cf7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"images-optimizer\": [\n        \"cpe:2.3:a:pluginab:plugin_a\\\\/b_image_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"images-to-webp\": [\n        \"cpe:2.3:a:imagestowebp_project:images_to_webp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imageseo\": [\n        \"cpe:2.3:a:imageseo:optimize_images_alt_text_\\\\(alt_tag\\\\)_\\\\\\u0026_names_for_seo_using_ai:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:optimize_images_alt_text_\\\\(alt_tag\\\\)_\\\\\\u0026_names_for_seo_using_ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imdb-info-box\": [\n        \"cpe:2.3:a:99webtools:imdb_info_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imdb-widget\": [\n        \"cpe:2.3:a:imdb-widget_project:imdb-widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"imgspider\": [\n        \"cpe:2.3:a:wbolt:imgspider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"import-export-for-woocommerce\": [\n        \"cpe:2.3:a:sidngr:import_export_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"import-legacy-media\": [\n        \"cpe:2.3:a:import_legacy_media_project:import_legacy_media:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"import-shopify-to-woocommerce\": [\n        \"cpe:2.3:a:villatheme:s2w_-_import_shopify_to_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"import-users-from-csv-with-meta\": [\n        \"cpe:2.3:a:codection:import_and_export_users_and_customers:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codection:import_users_from_csv_with_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"import-xml-feed\": [\n        \"cpe:2.3:a:mooveagency:import_xml_and_rss_feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"improved-include-page\": [\n        \"cpe:2.3:a:improved_include_page_project:improved_include_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inactive-user-deleter\": [\n        \"cpe:2.3:a:inactive_user_deleter_project:inactive_user_deleter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"include-lottie-animation-for-elementor\": [\n        \"cpe:2.3:a:kapasias:lottiefiles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"include-me\": [\n        \"cpe:2.3:a:include_me_project:include_me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"incoming-links\": [\n        \"cpe:2.3:a:monitorbacklinks:incoming_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"indeed-job-importer\": [\n        \"cpe:2.3:a:indeed-job-importer_project:indeed-job-importer:*:*:*:*:*:*:*:*\"\n      ],\n      \"index-wp-mysql-for-speed\": [\n        \"cpe:2.3:a:plumislandmedia:index_wp_mysql_for_speed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"indieblocks\": [\n        \"cpe:2.3:a:janboddez:indieblocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"indieweb-post-kinds\": [\n        \"cpe:2.3:a:indieweb_post_kinds_project:indieweb_post_kinds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infility-global\": [\n        \"cpe:2.3:a:infility:infility_global:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infinite-scroll\": [\n        \"cpe:2.3:a:infinite-scroll:infinite-scroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infogram\": [\n        \"cpe:2.3:a:torbjon:infogram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infographic-and-list-builder-ilist\": [\n        \"cpe:2.3:a:quantumcloud:infographic_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infolinks-ad-wrap\": [\n        \"cpe:2.3:a:rubayathasan:infolinks_ad_wrap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"information-reel\": [\n        \"cpe:2.3:a:gopiplus:information_reel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"infusionsoft\": [\n        \"cpe:2.3:a:infusionsoft_gravity_forms_project:infusionsoft_gravity_forms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:infusionsoft_project:infusionsoft:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:katz:infusionsoft_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inline-google-spreadsheet-viewer\": [\n        \"cpe:2.3:a:inline_google_spreadsheet_viewer_project:inline_google_spreadsheet_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inline-svg-elementor\": [\n        \"cpe:2.3:a:namogo:elementor_inline_svg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inline-tweet-sharer\": [\n        \"cpe:2.3:a:winwar:inline_tweet_sharer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inlinks\": [\n        \"cpe:2.3:a:inlinks_project:inlinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inlocation\": [\n        \"cpe:2.3:a:gabrieldarezzo:inlocation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"innovs-hr-manager\": [\n        \"cpe:2.3:a:theinnovs:innovs_hr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inpost-gallery\": [\n        \"cpe:2.3:a:pluginus:inpost_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-estimated-reading-time\": [\n        \"cpe:2.3:a:nigauri:insert_estimated_reading_time:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-headers-and-footers\": [\n        \"cpe:2.3:a:wpcode:wpcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-or-embed-articulate-content-into-wordpress\": [\n        \"cpe:2.3:a:elearningfreak:insert_or_embed_articulate_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-pages\": [\n        \"cpe:2.3:a:insert_pages_project:insert_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-php\": [\n        \"cpe:2.3:a:cm-wp:woody_ad_snippets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cm-wp:woody_code_snippets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webcraftic:woody_ad_snippets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insert-php-code-snippet\": [\n        \"cpe:2.3:a:f1logic:insert_php_code_snippet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insight-core\": [\n        \"cpe:2.3:a:thememove:insight_core:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inspirational-quote-rotator\": [\n        \"cpe:2.3:a:inspirational_quote_rotator_project:inspirational_quote_rotator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"insta-gallery\": [\n        \"cpe:2.3:a:quadlayers:wp_social_feed_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instagram-for-wordpress\": [\n        \"cpe:2.3:a:ink361:instagram_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instagram-slider-widget\": [\n        \"cpe:2.3:a:cm-wp:social_slider_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instalinker\": [\n        \"cpe:2.3:a:elfsight:instalinker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instant-css\": [\n        \"cpe:2.3:a:dylanblokhuis:instant_css:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instant-images\": [\n        \"cpe:2.3:a:connekthq:instant_images_-_one_click_unsplash_uploads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instantio\": [\n        \"cpe:2.3:a:themefic:instantio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"instawp-connect\": [\n        \"cpe:2.3:a:instawp:instawp_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integracao-rd-station\": [\n        \"cpe:2.3:a:rdstation:rd_station:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integrar-getnet-con-woo\": [\n        \"cpe:2.3:a:getnet_argentina_para_woocommerce_project:getnet_argentina_para_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integrate-google-drive\": [\n        \"cpe:2.3:a:softlabbd:integrate_google_drive:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:softlabdb:integrate_google_drive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integration-for-billingo-gravity-forms\": [\n        \"cpe:2.3:a:integration_for_billingo_\\\\\\u0026_gravity_forms_project:integration_for_billingo_\\\\\\u0026_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integration-for-szamlazz-hu-gravity-forms\": [\n        \"cpe:2.3:a:integration_for_szamlazz.hu_\\\\\\u0026_gravity_forms_project:integration_for_szamlazz.hu_\\\\\\u0026_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integration-for-szamlazzhu-woocommerce\": [\n        \"cpe:2.3:a:visztpeter:integration_for_szamlazz.hu_\\\\\\u0026_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"integromat-connector\": [\n        \"cpe:2.3:a:celonis:make_connector:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:make:make_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"intelly-related-posts\": [\n        \"cpe:2.3:a:data443:inline_related_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-3d-flipbook-powered-physics-engine\": [\n        \"cpe:2.3:a:3dflipbook:3d_flipbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-geo-maps\": [\n        \"cpe:2.3:a:interactive_geo_maps_project:interactive_geo_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-image-map-builder\": [\n        \"cpe:2.3:a:wpmart:interactive_svg_image_map_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-medical-drawing-of-human-body\": [\n        \"cpe:2.3:a:humananatomyillustrations:interactive_medical_drawing_of_human_body:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-polish-map\": [\n        \"cpe:2.3:a:interactive_polish_map_project:interactive_polish_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interactive-world-map\": [\n        \"cpe:2.3:a:fla-shop:interactive_world_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"intercom\": [\n        \"cpe:2.3:a:intercom:intercom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"intergeo-maps\": [\n        \"cpe:2.3:a:themeisle:google_maps_plugin_by_intergeo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"internal-link-building-plugin\": [\n        \"cpe:2.3:a:internetmarketingninjas:internal_link_building:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"internal-links\": [\n        \"cpe:2.3:a:internallinkjuicer:internal_link_juicer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"inventorypress\": [\n        \"cpe:2.3:a:inventorypress_project:inventorypress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"invitation-based-registrations\": [\n        \"cpe:2.3:a:securebit:invitation_based_registrations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"invite-anyone\": [\n        \"cpe:2.3:a:invite_anyone_project:invite_anyone:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:teleogistic:invite_anyone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"invoicing\": [\n        \"cpe:2.3:a:ayecode:getpaid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ip-address-blocker\": [\n        \"cpe:2.3:a:lionscripts:ip_blocker_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ip-based-login\": [\n        \"cpe:2.3:a:brijeshk89:ip_based_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ip-blacklist-cloud\": [\n        \"cpe:2.3:a:ad33lx:ip_blacklist_cloud:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ip-vault-wp-firewall\": [\n        \"cpe:2.3:a:youtag:two-factor_authentication:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ip2location-country-blocker\": [\n        \"cpe:2.3:a:ip2location:country_blocker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ipages-flipbook\": [\n        \"cpe:2.3:a:avirtum:ipages_flipbook:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ipages_flipbook_project:ipages_flipbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ipanorama-360-virtual-tour-builder-lite\": [\n        \"cpe:2.3:a:ipanorama_360_wordpress_virtual_tour_builder_project:ipanorama_360_wordpress_virtual_tour_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iq-block-country\": [\n        \"cpe:2.3:a:webence:iq_block_country:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"irm-newsroom\": [\n        \"cpe:2.3:a:irmau:irm_newsroom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ithemelandco-woo-report\": [\n        \"cpe:2.3:a:ithemelandco:woocommerce_report:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iubenda-cookie-law-solution\": [\n        \"cpe:2.3:a:iubenda:iubenda-cookie-law-solution:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iworks-pwa\": [\n        \"cpe:2.3:a:iworks:pwa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iwp-client\": [\n        \"cpe:2.3:a:revmakx:infinitewp_client:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"iws-geo-form-fields\": [\n        \"cpe:2.3:a:iws-geo-form-fields_project:iws-geo-form-fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jayj-quicktag\": [\n        \"cpe:2.3:a:jayj_quicktag_project:jayj_quicktag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jazz-popups\": [\n        \"cpe:2.3:a:crudlab:jazz_popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jazzcash-woocommerce-gateway\": [\n        \"cpe:2.3:a:jazzcash:woocommerce_jazzcash_gateway_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jc-importer\": [\n        \"cpe:2.3:a:importwp:import_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jch-optimize\": [\n        \"cpe:2.3:a:jch_optimize_project:jch_optimize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jeeng-push-notifications\": [\n        \"cpe:2.3:a:jeeng_push_notifications_project:jeeng_push_notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jeg-elementor-kit\": [\n        \"cpe:2.3:a:jegtheme:jeg_elementor_kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jet-elements\": [\n        \"cpe:2.3:a:crocoblock:jetelements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jetformbuilder\": [\n        \"cpe:2.3:a:crocoblock:jetformbuilder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jetpack\": [\n        \"cpe:2.3:a:automattic:jetpack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jetpack-boost\": [\n        \"cpe:2.3:a:automattic:jetpack_boost:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jetwidgets-for-elementor\": [\n        \"cpe:2.3:a:crocoblock:jetwidgets_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jh-404-logger\": [\n        \"cpe:2.3:a:jh_404_logger_project:jh_404_logger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jiangqie-official-website-mini-program\": [\n        \"cpe:2.3:a:jiangqie:official_website_mini_program:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jivochat\": [\n        \"cpe:2.3:a:jivochat:jivochat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jm-twitter-cards\": [\n        \"cpe:2.3:a:jmlapam:jm_twitter_cards:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-board\": [\n        \"cpe:2.3:a:bestwebsoft:job_board:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-board-vanilla\": [\n        \"cpe:2.3:a:perceptionsystem:job_board_vanila:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-manager\": [\n        \"cpe:2.3:a:job_manager_project:job_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-jobmanager:job_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-manager-career\": [\n        \"cpe:2.3:a:themehigh:job_manager_\\\\\\u0026_career:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-portal\": [\n        \"cpe:2.3:a:job-portal_project:job-portal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"job-postings\": [\n        \"cpe:2.3:a:blueglass:jobs_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jobboardwp\": [\n        \"cpe:2.3:a:ultimatemember:jobboardwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jobcareer\": [\n        \"cpe:2.3:a:chimpgroup:jobcareer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jobwp\": [\n        \"cpe:2.3:a:hmplugin:jobwp:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:hmplugin:wordpress_job_board_and_recruitment_plugin_-_jobwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"joli-table-of-contents\": [\n        \"cpe:2.3:a:wpjoli:joli_table_of_contents:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"joomsport-sports-league-results-management\": [\n        \"cpe:2.3:a:beardev:joomsport:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jp-staticpagex\": [\n        \"cpe:2.3:a:static_page_extended_project:static_page_extended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-accordion-slideshow\": [\n        \"cpe:2.3:a:gopiplus:jquery_accordion_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-collapse-o-matic\": [\n        \"cpe:2.3:a:twinpictures:collapse-o-matic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-news-ticker\": [\n        \"cpe:2.3:a:gopiplus:jquery_news_ticker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-reply-to-comment\": [\n        \"cpe:2.3:a:jquery-reply-to-comment_project:jquery-reply-to-comment:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-tagline-rotator\": [\n        \"cpe:2.3:a:arvtard:jquery_tagline_rotator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jquery-vertical-accordion-menu\": [\n        \"cpe:2.3:a:designchemical:jquery_accordion_menu_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"js-css-script-optimizer\": [\n        \"cpe:2.3:a:yevhenkotelnytskyi:js_\\\\\\u0026_css_script_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"js-jobs\": [\n        \"cpe:2.3:a:joomsky:js_job_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"js-support-ticket\": [\n        \"cpe:2.3:a:joomsky:js_help_desk:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wiselyhub:js_help_desk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"js_composer\": [\n        \"cpe:2.3:a:wpbakery:page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jsfiddle-shortcode\": [\n        \"cpe:2.3:a:wvega:jsfiddle_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jsmol2wp\": [\n        \"cpe:2.3:a:jsmol2wp_project:jsmol2wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"json-api-user\": [\n        \"cpe:2.3:a:parorrey:json_api_user:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"json-content-importer\": [\n        \"cpe:2.3:a:json-content-importer:json_content_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jtrt-responsive-tables\": [\n        \"cpe:2.3:a:jtrt_responsive_tables_project:jtrt_responsive_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"judgeme-product-reviews-woocommerce\": [\n        \"cpe:2.3:a:judge:product_reviews_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"juicer\": [\n        \"cpe:2.3:a:saas.group:juicer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jupiterx-core\": [\n        \"cpe:2.3:a:artbees:jupiter_x_core:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"just-tables\": [\n        \"cpe:2.3:a:hasthemes:justtables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"justrows-free\": [\n        \"cpe:2.3:a:canaveralstudio:justrows_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jvm-rich-text-icons\": [\n        \"cpe:2.3:a:jorisvm:jvm_gutenberg_rich_text_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kadence-blocks\": [\n        \"cpe:2.3:a:kadencewp:gutenberg_blocks_with_ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kadence-starter-templates\": [\n        \"cpe:2.3:a:kadencewp:starter_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kadence-woocommerce-email-designer\": [\n        \"cpe:2.3:a:kadencewp:kadence_woocommerce_email_designer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kali-forms\": [\n        \"cpe:2.3:a:kaliforms:kali_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kama-clic-counter\": [\n        \"cpe:2.3:a:wp-kama:kama_click_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kanban\": [\n        \"cpe:2.3:a:kanbanwp:kanban_boards_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kangu\": [\n        \"cpe:2.3:a:kangu:kangu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kata-plus\": [\n        \"cpe:2.3:a:climaxthemes:kata_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kau-boys-backend-localization\": [\n        \"cpe:2.3:a:kau-boys:backend_localization:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kb-support\": [\n        \"cpe:2.3:a:logon:kb_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kbucket\": [\n        \"cpe:2.3:a:optimalaccess:kbucket:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kd-coming-soon\": [\n        \"cpe:2.3:a:kallidan:kd_coming_soon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"keep-backup-daily\": [\n        \"cpe:2.3:a:androidbubbles:keep_backup_daily:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kento-ads-rotator\": [\n        \"cpe:2.3:a:pluginspoint:kento_ads_rotator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kento-post-view-counter\": [\n        \"cpe:2.3:a:kentothemes:kento-post-view-counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ketchup-restaurant-reservations\": [\n        \"cpe:2.3:a:ketchup_restaurant_reservations_project:ketchup_restaurant_reservations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ketchup-shortcodes-pack\": [\n        \"cpe:2.3:a:ayecode:ketchup_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"keydatas\": [\n        \"cpe:2.3:a:keydatas:keydatas:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"keyword-meta\": [\n        \"cpe:2.3:a:keyword_meta_project:keyword_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kimili-flash-embed\": [\n        \"cpe:2.3:a:kimili:kimili_flash_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"king-ie\": [\n        \"cpe:2.3:a:kingblack:king_ie:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kitestudio-core\": [\n        \"cpe:2.3:a:kitestudio:core_plugin_for_kitestudio_themes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kivicare-clinic-management-system\": [\n        \"cpe:2.3:a:iqonic:kivicare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kiwi-logo-carousel\": [\n        \"cpe:2.3:a:kiwi-logo-carousel_project:kiwi-logo-carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kjm-admin-notices\": [\n        \"cpe:2.3:a:kajoom:kjm_admin_notices:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kk-star-ratings\": [\n        \"cpe:2.3:a:kamalkhan:kk_star_ratings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kkprogressbar\": [\n        \"cpe:2.3:a:krzysztof-furtak:kkprogressbar2:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"klarna-checkout-for-woocommerce\": [\n        \"cpe:2.3:a:klarna:klarna_checkout_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"klarna-payments-for-woocommerce\": [\n        \"cpe:2.3:a:klarna:klarna_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"klaviyo\": [\n        \"cpe:2.3:a:klaviyo:klavio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"knowledgebase\": [\n        \"cpe:2.3:a:webberzone:knowledge_base:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kodex-posts-likes\": [\n        \"cpe:2.3:a:pierros:kodex_posts_likes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"koko-analytics\": [\n        \"cpe:2.3:a:ibericode:koko_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kona-instagram-feed-for-gutenberg\": [\n        \"cpe:2.3:a:gubbigubbi:kona_gallery_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"konnichiwa\": [\n        \"cpe:2.3:a:calendarscripts:konnichiwa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"korea-sns\": [\n        \"cpe:2.3:a:icansoft:korea_sns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kp-fastest-tawk-to-chat\": [\n        \"cpe:2.3:a:kreativopro:kp_fastest_tawk.to_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kraken-image-optimizer\": [\n        \"cpe:2.3:a:kraken:kraken.io_image_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kudos-donations\": [\n        \"cpe:2.3:a:iseard.media:kudos_donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kunze-law\": [\n        \"cpe:2.3:a:kunze-medien:kunze_law:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kwayy-html-sitemap\": [\n        \"cpe:2.3:a:kwayyinfotech:kwayy_html_sitemap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"labtools\": [\n        \"cpe:2.3:a:creativityjuice:labtools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ladipage\": [\n        \"cpe:2.3:a:ladipage:ladipage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lana-downloads-manager\": [\n        \"cpe:2.3:a:lana:lana_downloads_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lana-email-logger\": [\n        \"cpe:2.3:a:lanacodes:lana_email_logger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lana-text-to-image\": [\n        \"cpe:2.3:a:lanacodes:lana_text_to_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"landing-page-cat\": [\n        \"cpe:2.3:a:fatcatapps:landing_page_cat:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"landing-pages\": [\n        \"cpe:2.3:a:inboundnow:landing-pages:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:inboundnow:wordpress_landing_pages:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:landing_pages_project:landing_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"language-bar-flags\": [\n        \"cpe:2.3:a:language_bar_flags_project:language_bar_flags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"laposta-signup-basic\": [\n        \"cpe:2.3:a:laposta:laposta_signup_basic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lara-google-analytics\": [\n        \"cpe:2.3:a:lara\\\\'s_google_analytics_project:lara\\\\'s_google_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lastudio-element-kit\": [\n        \"cpe:2.3:a:la-studioweb:element_kit_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:la-studioweb:la-studio_element_kit_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lastunes\": [\n        \"cpe:2.3:a:calenfretts:lastunes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"latest-tweets-widget\": [\n        \"cpe:2.3:a:latest_tweets_widget_project:latest_tweets_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"launcher\": [\n        \"cpe:2.3:a:mythemeshop:launcher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"launchpad-by-obox\": [\n        \"cpe:2.3:a:obox:launchpad_-_coming_soon_\\\\\\u0026_maintenance_mode_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lava-directory-manager\": [\n        \"cpe:2.3:a:lava-code:lava_directory_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"laybuy-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:laybuy:laybuy_payment_extension_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lazy-blocks\": [\n        \"cpe:2.3:a:thedevoice:lazy_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lazy-facebook-comments\": [\n        \"cpe:2.3:a:lazy_social_comments_project:lazy_social_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lazy-load-for-videos\": [\n        \"cpe:2.3:a:kevinweber:lazy_load_for_videos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lbstopattack\": [\n        \"cpe:2.3:a:laubrotel:lbstopattack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ldap-ad-staff-employee-directory-search\": [\n        \"cpe:2.3:a:miniorange:staff_\\\\/_employee_business_directory_for_active_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ldap-login-for-intranet-sites\": [\n        \"cpe:2.3:a:miniorange:active_directory_integration_\\\\/_ldap_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ldap-wp-login-integration-with-active-directory\": [\n        \"cpe:2.3:a:ldap_wp_login_\\\\/_active_directory_integration_project:ldap_wp_login_\\\\/_active_directory_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lead-capturing-call-to-actions-by-vcita\": [\n        \"cpe:2.3:a:vcita:contact_form_and_calls_to_action_by_vcita:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lead-form-builder\": [\n        \"cpe:2.3:a:themehunk:contact_form_\\\\\\u0026_lead_form_elementor_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lead-generated\": [\n        \"cpe:2.3:a:leadgenerated:lead_generated:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leadin\": [\n        \"cpe:2.3:a:hubspot:hubspot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leadsquared-suite\": [\n        \"cpe:2.3:a:leadsquared:leadsquared_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leadster-marketing-conversacional\": [\n        \"cpe:2.3:a:leadster:leadster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leaflet-map\": [\n        \"cpe:2.3:a:bozdoz:leaflet_map:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:leaflet_map_project:leaflet_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leaflet-maps-marker\": [\n        \"cpe:2.3:a:mapsmarker:leaflet_maps_marker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"league-table-lite\": [\n        \"cpe:2.3:a:daext:league_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leaky-paywall\": [\n        \"cpe:2.3:a:zeen101:leaky_paywall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"learn-manager\": [\n        \"cpe:2.3:a:wplearnmanager:wp_learn_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"learning-management-system\": [\n        \"cpe:2.3:a:themegrill:masteriyo:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:themegrill:masteriyo:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"learnpress\": [\n        \"cpe:2.3:a:thimpress:learnpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:thimpress:wp_hotel_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"learnpress-import-export\": [\n        \"cpe:2.3:a:thimpress:learnpress_export_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leenkme\": [\n        \"cpe:2.3:a:leenk:leenk.me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"left-right-image-slideshow-gallery\": [\n        \"cpe:2.3:a:gopiplus:left_right_image_slideshow_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"legal-pages\": [\n        \"cpe:2.3:a:wpwax:legal_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"legoeso-pdf-manager\": [\n        \"cpe:2.3:a:legoeso:pdf_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"legull\": [\n        \"cpe:2.3:a:alwayscurious:legull:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leira-cron-jobs\": [\n        \"cpe:2.3:a:leira:cron_jobs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leira-roles\": [\n        \"cpe:2.3:a:leira:roles_\\\\\\u0026_capabilities:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lenix-elementor-leads-addon\": [\n        \"cpe:2.3:a:wpmaspik:lenix_leads_collector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"letterpress\": [\n        \"cpe:2.3:a:themeqx:letterpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"leyka\": [\n        \"cpe:2.3:a:te-st:leyka:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lgx-owl-carousel\": [\n        \"cpe:2.3:a:logichunt:owl_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lh-copy-media-file\": [\n        \"cpe:2.3:a:petershaw:lh_copy_media_file:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lh-password-changer\": [\n        \"cpe:2.3:a:shawfactor:lh-password-changer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"library-viewer\": [\n        \"cpe:2.3:a:pexlechris:library_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"libsyn-podcasting\": [\n        \"cpe:2.3:a:libsyn:libsyn_publisher_hub:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"license-manager-for-woocommerce\": [\n        \"cpe:2.3:a:wpexperts:license_manager_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lifeline-donation\": [\n        \"cpe:2.3:a:webinane:lifeline_donation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lifterlms\": [\n        \"cpe:2.3:a:lifterlms:lifterlms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"light-messages\": [\n        \"cpe:2.3:a:light_messages_project:light_messages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"light-poll\": [\n        \"cpe:2.3:a:dmytropopov:light_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lightbox-gallery\": [\n        \"cpe:2.3:a:wpgogo:lightbox-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lightbox-plus\": [\n        \"cpe:2.3:a:23systems:lightbox_plus_colorbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lightbox-popup\": [\n        \"cpe:2.3:a:wpdevart:download_image_and_video_lightbox\\\\,_image_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lightweight-accordion\": [\n        \"cpe:2.3:a:smartwp:lightweight_accordion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"likebtn-like-button\": [\n        \"cpe:2.3:a:likebtn:like_button_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"limb-gallery\": [\n        \"cpe:2.3:a:limbcode:limb-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"limit-attempts\": [\n        \"cpe:2.3:a:bestwebsoft:limit_attempts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"limit-login-attempts\": [\n        \"cpe:2.3:a:limit_login_attempts_project:limit_login_attempts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"limit-login-attempts-reloaded\": [\n        \"cpe:2.3:a:limitloginattempts:limit_login_attempts_reloaded:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:miniorange:limit_login_attempts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"linear\": [\n        \"cpe:2.3:a:linear:linear:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"link-juice-keeper\": [\n        \"cpe:2.3:a:link_juice_keeper_project:link_juice_keeper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"link-library\": [\n        \"cpe:2.3:a:ylefebvre:link_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"link-log\": [\n        \"cpe:2.3:a:perafox:link_log:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:petersplugins:link_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"link-optimizer-lite\": [\n        \"cpe:2.3:a:link_optimizer_lite_project:link_optimizer_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"link-to-bible\": [\n        \"cpe:2.3:a:bibleserver:link_to_bible:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"linked-variation\": [\n        \"cpe:2.3:a:multidots:advanced_linked_variations_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"linker\": [\n        \"cpe:2.3:a:pojo:linker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"linkworth-wp-plugin\": [\n        \"cpe:2.3:a:linkworth:linkworth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"linkz-ai\": [\n        \"cpe:2.3:a:linkz:linkz.ai:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"liquid-blocks\": [\n        \"cpe:2.3:a:lqd:liquid_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"liquid-speech-balloon\": [\n        \"cpe:2.3:a:lqd:liquid_speech_balloon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lis-video-gallery\": [\n        \"cpe:2.3:a:lis:video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"list-all-posts-by-authors-nested-categories-and-titles\": [\n        \"cpe:2.3:a:marzocca:list_all_posts_by_authors_nested_categories_and_titles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"list-category-posts\": [\n        \"cpe:2.3:a:fernandobriano:list_category_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"list-children\": [\n        \"cpe:2.3:a:sizeable:list_children:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"list-last-changes\": [\n        \"cpe:2.3:a:rolandbaer:list_last_changes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"listamester\": [\n        \"cpe:2.3:a:listamester:listamester:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"litespeed-cache\": [\n        \"cpe:2.3:a:litespeedtech:litespeed_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"live-composer-page-builder\": [\n        \"cpe:2.3:a:blueastral:page_builder\\\\:_live_composer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"live-news-lite\": [\n        \"cpe:2.3:a:daext:live_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"liveforms\": [\n        \"cpe:2.3:a:w3eden:live_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"localize-my-post\": [\n        \"cpe:2.3:a:localize_my_post_project:localize_my_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"localize-remote-images\": [\n        \"cpe:2.3:a:buildfail:localize_remote_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"location-weather\": [\n        \"cpe:2.3:a:shapedplugin:location_weather:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"locations\": [\n        \"cpe:2.3:a:goldplugins:locations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"locations-and-areas\": [\n        \"cpe:2.3:a:100plugins:locations_and_areas:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"locatoraid\": [\n        \"cpe:2.3:a:plainware:locatoraid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"loco-translate\": [\n        \"cpe:2.3:a:loco_translate_project:loco_translate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logdash-activity-log\": [\n        \"cpe:2.3:a:deryckoe:logdash_activity_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"loggedin\": [\n        \"cpe:2.3:a:duckdev:loggedin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-as-customer-or-user\": [\n        \"cpe:2.3:a:wp-buy:login_as_user_or_customer_\\\\(user_switching\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-as-users\": [\n        \"cpe:2.3:a:geekcodelab:login_as_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-block-ips\": [\n        \"cpe:2.3:a:gunkastudios:login_block_ips:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-configurator\": [\n        \"cpe:2.3:a:login_configurator_project:login_configurator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-form-recaptcha\": [\n        \"cpe:2.3:a:recaptcha_project:recaptcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-lockdown\": [\n        \"cpe:2.3:a:webfactoryltd:wp_login_lockdown:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-logo-editor-by-oizuled\": [\n        \"cpe:2.3:a:amplifyplugins:login_logo_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-logout-menu\": [\n        \"cpe:2.3:a:wpbrigade:login_logout_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-or-logout-menu-item\": [\n        \"cpe:2.3:a:login_or_logout_menu_item_project:login_or_logout_menu_item:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-screen-manager\": [\n        \"cpe:2.3:a:nazmulhossainnihal:login_screen_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-sidebar-widget\": [\n        \"cpe:2.3:a:login_widget_with_shortcode_project:login_widget_with_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"login-with-phone-number\": [\n        \"cpe:2.3:a:idehweb:login_with_phone_number:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"loginizer\": [\n        \"cpe:2.3:a:loginizer:loginizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"loginpress\": [\n        \"cpe:2.3:a:wpbrigade:loginpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-carousel-free\": [\n        \"cpe:2.3:a:shapedplugin:logo_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-manager-for-enamad\": [\n        \"cpe:2.3:a:wp-master:logo_manager_for_enamad:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-scheduler-great-for-holidays-events-and-more\": [\n        \"cpe:2.3:a:allmywebneeds:logo_scheduler:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-showcase-with-slick-slider\": [\n        \"cpe:2.3:a:infornweb:logo_showcase_with_slick_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-slider\": [\n        \"cpe:2.3:a:logo_slider_project:logo_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logo-slider-wp\": [\n        \"cpe:2.3:a:logichunt:logo_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"logwpmail\": [\n        \"cpe:2.3:a:premierethemes:log_wp_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lokalyze-call-now\": [\n        \"cpe:2.3:a:lokalyze:call_me_now:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-abf-freight-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:abf:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:abf_freight:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-globaltranz-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:globaltranz:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:ups:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-odfl-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:odfl:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-purolator-freight-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:purolator:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-saia-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:saia:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-sefl-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:sefl:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:southeastern_freight_lines:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-unishippers-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:unishippers:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-ups-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:tforce:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:ups:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-worldwide-express-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:worldwide_express:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:worldwide_express:wordpress:*:*\"\n      ],\n      \"ltl-freight-quotes-xpo-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:xpo:wordpress:*:*\"\n      ],\n      \"lucas-string-replace\": [\n        \"cpe:2.3:a:lucasstad:lucas_string_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"luckywp-table-of-contents\": [\n        \"cpe:2.3:a:theluckywp:luckywp_table_of_contents:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lupsonline-link-netwerk\": [\n        \"cpe:2.3:a:lupsonline:seo_flow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lws-affiliation\": [\n        \"cpe:2.3:a:lws:affiliation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lws-cleaner\": [\n        \"cpe:2.3:a:lws:lws_cleaner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lws-hide-login\": [\n        \"cpe:2.3:a:lws:lws_hide_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lws-tools\": [\n        \"cpe:2.3:a:lws:lws_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"m-chart\": [\n        \"cpe:2.3:a:m_chart_project:m_chart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"m-vslider\": [\n        \"cpe:2.3:a:nimble3:m-vslider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"m-wp-popup\": [\n        \"cpe:2.3:a:custom_popup_builder_project:custom_popup_builder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:popup_\\\\|_custom_popup_builder_project:popup_\\\\|_custom_popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"magazine-blocks\": [\n        \"cpe:2.3:a:themegrill:magazine_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mage-eventpress\": [\n        \"cpe:2.3:a:mage-people:event_manager_and_tickets_selling_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"magee-shortcodes\": [\n        \"cpe:2.3:a:hoosoft:magee_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"magic-action-box\": [\n        \"cpe:2.3:a:pogidude:magic_action_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"magic-post-thumbnail\": [\n        \"cpe:2.3:a:magic-post-thumbnail:magic_post_thumbnail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"magical-addons-for-elementor\": [\n        \"cpe:2.3:a:wpthemespace:magical_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mail-control\": [\n        \"cpe:2.3:a:instareza:mail_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mail-integration-365\": [\n        \"cpe:2.3:a:wpo365:mail_integration_for_office_365_\\\\/_outlook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mail-queue\": [\n        \"cpe:2.3:a:webdesignmunich:mail_queue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mail-subscribe-list\": [\n        \"cpe:2.3:a:webfwd:mail_subscribe_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailarchiver\": [\n        \"cpe:2.3:a:perfopsone:mailarchiver:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailchimp-for-woocommerce\": [\n        \"cpe:2.3:a:mailchimp:mailchimp_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailchimp-for-wp\": [\n        \"cpe:2.3:a:ibericode:mailchimp:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ibericode:mailchimp_for_wordpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mailchimp_for_wordpress_project:mailchimp_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailchimp-forms-by-mailmunch\": [\n        \"cpe:2.3:a:mailmunch:mailchimp_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailchimp-subscribe-sm\": [\n        \"cpe:2.3:a:pluginops:mailchimp_subscribe_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailchimp-top-bar\": [\n        \"cpe:2.3:a:ibericode:mailchimp_top_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailcwp\": [\n        \"cpe:2.3:a:mailcwp_project:mailcwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailin\": [\n        \"cpe:2.3:a:brevo:newsletter\\\\,_smtp\\\\,_email_marketing_and_subscribe:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:sendinblue:newsletter\\\\,_smtp\\\\,_email_marketing_and_subscribe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailmunch\": [\n        \"cpe:2.3:a:mailmunch:mailmunch:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailoptin\": [\n        \"cpe:2.3:a:mailoptin:mailoptin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mailpoet\": [\n        \"cpe:2.3:a:automattic:mailpoet:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"mailtree-log-mail\": [\n        \"cpe:2.3:a:oacstudio:mailtree_log_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maintenance\": [\n        \"cpe:2.3:a:webfactoryltd:maintenance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maintenance-notice\": [\n        \"cpe:2.3:a:codevibrant:maintenance_notice:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maintenance-page\": [\n        \"cpe:2.3:a:themegrill:maintenance_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mainwp\": [\n        \"cpe:2.3:a:mainwp:mainwp_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mainwp-child\": [\n        \"cpe:2.3:a:mainwp:mainwp_child:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mainwp-child-reports\": [\n        \"cpe:2.3:a:mainwp:mainwp_child_reports:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"majestic-support\": [\n        \"cpe:2.3:a:majesticsupport:majestic_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"make-paths-relative\": [\n        \"cpe:2.3:a:yasglobal:make_paths_relative:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"makecommerce\": [\n        \"cpe:2.3:a:makecommerce:makecommerce_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"makestories-helper\": [\n        \"cpe:2.3:a:makestories:makestories_\\\\(for_google_web_stories\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"makewebbetter-hubspot-for-woocommerce\": [\n        \"cpe:2.3:a:makewebbetter:hubspot_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"malinky-ajax-pagination\": [\n        \"cpe:2.3:a:malinky:malinky-ajax-pagination:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"manage-notification-emails\": [\n        \"cpe:2.3:a:freeamigos:manage_notification_e-mails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"manage-shipyaari-shipping\": [\n        \"cpe:2.3:a:shipyaari:shipping_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mangboard\": [\n        \"cpe:2.3:a:mangboard:mang_board:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mangboard:mangboard_wp:*:*:*:*:basic:wordpress:*:*\"\n      ],\n      \"mantenimiento-web\": [\n        \"cpe:2.3:a:webartesanal:mantenimiento_web:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"manual-image-crop\": [\n        \"cpe:2.3:a:manual_image_crop_project:manual_image_crop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapfig-studio\": [\n        \"cpe:2.3:a:acugis:mapfig_studio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapping-multiple-urls-redirect-same-page\": [\n        \"cpe:2.3:a:mapping_multiple_urls_redirect_same_page_project:mapping_multiple_urls_redirect_same_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapplic-lite\": [\n        \"cpe:2.3:a:mapplic:mapplic:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"mappress-google-maps-for-wordpress\": [\n        \"cpe:2.3:a:mappresspro:mappress:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:mappresspro:mappress:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:mappresspro:mappress_maps_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maps-for-wp\": [\n        \"cpe:2.3:a:icopydoc:maps_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapster-wp-maps\": [\n        \"cpe:2.3:a:mapster:mapster_wp_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapsvg-lite-interactive-vector-maps\": [\n        \"cpe:2.3:a:mapsvg:mapsvg_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mapwiz\": [\n        \"cpe:2.3:a:conceptbeans:mapwiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mark-posts\": [\n        \"cpe:2.3:a:mark_posts_project:mark_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mark-user-as-spammer\": [\n        \"cpe:2.3:a:mark_user_as_spammer_project:mark_user_as_spammer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"markdown-on-save-improved\": [\n        \"cpe:2.3:a:markdown_on_save_improved_project:markdown_on_save_improved:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:markdown_on_saved_improved_project:markdown_on_saved_improved:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"market-exporter\": [\n        \"cpe:2.3:a:vanyukov:market_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"marketo-forms-and-tracking\": [\n        \"cpe:2.3:a:hutchhouse:marketo_forms_and_tracking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"marmoset-viewer\": [\n        \"cpe:2.3:a:marmoset:marmoset_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"marquee-elementor\": [\n        \"cpe:2.3:a:anasedreesi:marquee_elementor_with_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"martins-link-network\": [\n        \"cpe:2.3:a:martinstools:free_\\\\\\u0026_easy_link_building:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mas-addons-for-elementor\": [\n        \"cpe:2.3:a:madrasthemes:mas_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mas-static-content\": [\n        \"cpe:2.3:a:madrasthemes:mas_static_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mas-wp-job-manager-company\": [\n        \"cpe:2.3:a:madrasthemes:mas_companies_for_wp_job_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mashsharer\": [\n        \"cpe:2.3:a:social_media_share_buttons_project:social_media_share_buttons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:mashshare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mass-pagesposts-creator\": [\n        \"cpe:2.3:a:dotstore:mass_pages\\\\/posts_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"master-addons\": [\n        \"cpe:2.3:a:master-addons:master_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"master-slider\": [\n        \"cpe:2.3:a:averta:master_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"masterstudy-lms-learning-management-system\": [\n        \"cpe:2.3:a:stylemixthemes:masterstudy_lms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"material-design-for-contact-form-7\": [\n        \"cpe:2.3:a:material_design_for_contact_form_7_project:material_design_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"material-design-icons\": [\n        \"cpe:2.3:a:braginteractive:material_design_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"material-design-icons-for-elementor\": [\n        \"cpe:2.3:a:material_design_icons_for_page_builders_project:material_design_icons_for_page_builders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"materialis-companion\": [\n        \"cpe:2.3:a:extendthemes:materialis_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"matrix-pre-loader\": [\n        \"cpe:2.3:a:nkb-bd:preloader_matrix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maxbuttons\": [\n        \"cpe:2.3:a:maxfoundry:maxbuttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"maximum-products-per-user-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:maximum_products_per_user_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"maz-loader\": [\n        \"cpe:2.3:a:feataholic:maz_loader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mb-custom-post-type\": [\n        \"cpe:2.3:a:deluxeblogtips:mb_custom_post_types_\\\\\\u0026_custom_taxonomies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mdc-youtube-downloader\": [\n        \"cpe:2.3:a:mdc_youtube_downloader_project:mdc_youtube_downloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-downloader\": [\n        \"cpe:2.3:a:media_downloader_project:media_downloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-file-manager\": [\n        \"cpe:2.3:a:media_file_manager_project:media_file_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-file-organizer\": [\n        \"cpe:2.3:a:media_file_organizer_project:media_file_organizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-file-renamer\": [\n        \"cpe:2.3:a:meowapps:media_file_renamer_-_auto_\\\\\\u0026_manual_rename:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-from-ftp\": [\n        \"cpe:2.3:a:media_from_ftp_project:media_from_ftp:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:riverforest-wp:media_from_ftp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-library-assistant\": [\n        \"cpe:2.3:a:davidlingren:media_library_assistant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-library-plus\": [\n        \"cpe:2.3:a:maxfoundry:media_library_folders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-library-tools\": [\n        \"cpe:2.3:a:wptinysolutions:media_library_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-list\": [\n        \"cpe:2.3:a:drelton:medialist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-modal\": [\n        \"cpe:2.3:a:jumpstartcreatives:media_modal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-slider\": [\n        \"cpe:2.3:a:awplife:media_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"media-usage\": [\n        \"cpe:2.3:a:meowapps:media_usage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mediaburst-ecommerce-sms-notifications\": [\n        \"cpe:2.3:a:mediaburst:wp_e-commerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mediaburst-email-to-sms\": [\n        \"cpe:2.3:a:mediaburst:clockwork_sms_notfications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mediamatic\": [\n        \"cpe:2.3:a:frenify:mediamatic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mediavine-control-panel\": [\n        \"cpe:2.3:a:mediavine:mediavine_control_panel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mediavine-create\": [\n        \"cpe:2.3:a:mediavine:create:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meeting-scheduler-by-vcita\": [\n        \"cpe:2.3:a:vcita:online_booking_\\\\\\u0026_scheduling_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mega-addons-for-visual-composer\": [\n        \"cpe:2.3:a:topdigitaltrends:mega_addons_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mega-elements-addons-for-elementor\": [\n        \"cpe:2.3:a:kraftplugins:mega_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"megamenu\": [\n        \"cpe:2.3:a:megamenu:max_mega_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mejorcluster\": [\n        \"cpe:2.3:a:javierloureiro:el_mejor_cluster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-audio-player\": [\n        \"cpe:2.3:a:mekshq:meks_audio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-easy-ads-widget\": [\n        \"cpe:2.3:a:mekshq:meks_easy_ads_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-easy-instagram-widget\": [\n        \"cpe:2.3:a:mekshq:meks_easy_photo_feed_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-flexible-shortcodes\": [\n        \"cpe:2.3:a:mekshq:meks_flexible_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-smart-author-widget\": [\n        \"cpe:2.3:a:mekshq:meks_smart_author_widget:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mekshq:smart_author_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meks-smart-social-widget\": [\n        \"cpe:2.3:a:mekshq:meks_smart_social_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"melapress-login-security\": [\n        \"cpe:2.3:a:melapress:melapress_login_security:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"member-hero\": [\n        \"cpe:2.3:a:memberhero:member_hero:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"memberful-wp\": [\n        \"cpe:2.3:a:memberful:memberful:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"memberlite-shortcodes\": [\n        \"cpe:2.3:a:strangerstudios:memberlite_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"members-import\": [\n        \"cpe:2.3:a:youngtechleads:members_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"membership-simplified-for-oap-members-only\": [\n        \"cpe:2.3:a:membership_simplified_project:membership_simplified:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"memberspace\": [\n        \"cpe:2.3:a:memberspace:memberspace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"memphis-documents-library\": [\n        \"cpe:2.3:a:memphis_documents_library_project:memphis_documents_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mendeleyplugin\": [\n        \"cpe:2.3:a:kochm:mendeley_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menu-image\": [\n        \"cpe:2.3:a:freshlightlab:menu_image\\\\,_icons_made_easy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menu-items-visibility-control\": [\n        \"cpe:2.3:a:menu_item_visibility_control_project:menu_item_visibility_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menu-ordering-reservations\": [\n        \"cpe:2.3:a:oracle:restaurant_menu_-_food_ordering_system_-_table_reservation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menu-shortcode\": [\n        \"cpe:2.3:a:menu_shortcode_project:menu_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menu-swapper\": [\n        \"cpe:2.3:a:menu_swapper_project:menu_swapper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"menubar\": [\n        \"cpe:2.3:a:dontdream:menubar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meow-gallery\": [\n        \"cpe:2.3:a:meowapps:meow_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mesmerize-companion\": [\n        \"cpe:2.3:a:extendthemes:mesmerize_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"message-ticker\": [\n        \"cpe:2.3:a:gopiplus:message_ticker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meta-box\": [\n        \"cpe:2.3:a:metabox:meta_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meta-store-elements\": [\n        \"cpe:2.3:a:mysticalthemes:meta_store_elements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meteor-slides\": [\n        \"cpe:2.3:a:meteor_slides_project:meteor_slides:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"metform\": [\n        \"cpe:2.3:a:wpmet:metform_elementor_contact_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"metricool\": [\n        \"cpe:2.3:a:metricool:metricool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"metronet-profile-picture\": [\n        \"cpe:2.3:a:cozmoslabs:user_profile_picture:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"metronet-tag-manager\": [\n        \"cpe:2.3:a:mediaron:metronet_tag_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mf-gig-calendar\": [\n        \"cpe:2.3:a:mf_gig_calendar_project:mf_gig_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mfolio-lite\": [\n        \"cpe:2.3:a:themelooks:mfolio:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"microblog-poster\": [\n        \"cpe:2.3:a:efficientscripts:microblog_poster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"microcopy\": [\n        \"cpe:2.3:a:activemedia:microcopy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"microsoft-advertising-universal-event-tracking-uet\": [\n        \"cpe:2.3:a:microsoft:microsoft_advertising_universal_event_tracking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"microsoft-clarity\": [\n        \"cpe:2.3:a:microsoft:clarity:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mighty-builder\": [\n        \"cpe:2.3:a:mightyplugins:mighty_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mightyforms\": [\n        \"cpe:2.3:a:mightyforms:mightyforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mihdan-index-now\": [\n        \"cpe:2.3:a:kobzarev:index_now:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mini-mail-dashboard-widget\": [\n        \"cpe:2.3:a:mini_mail_dashboard_widget_project:mini_mail_dashboard_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"minimal-coming-soon-maintenance-mode\": [\n        \"cpe:2.3:a:webfactoryltd:minimal_coming_soon_\\\\\\u0026_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-2-factor-authentication\": [\n        \"cpe:2.3:a:miniorange:google_authenticator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-firebase-sms-otp-verification\": [\n        \"cpe:2.3:a:miniorange:otp_verification_with_firebase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-login-openid\": [\n        \"cpe:2.3:a:miniorange:wordpress_social_login_and_register_\\\\(discord\\\\,_google\\\\,_twitter\\\\,_linkedin\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-login-with-eve-online-google-facebook\": [\n        \"cpe:2.3:a:miniorange:oauth_single_sign_on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-malware-protection\": [\n        \"cpe:2.3:a:miniorange:malware_scanner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-oauth-20-server\": [\n        \"cpe:2.3:a:miniorange:wp_oauth_server:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-saml-20-single-sign-on\": [\n        \"cpe:2.3:a:miniorange:saml_sp_single_sign_on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"miniorange-wp-as-saml-idp\": [\n        \"cpe:2.3:a:miniorange:login_using_wordpress_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ml-slider\": [\n        \"cpe:2.3:a:metaslider:slider\\\\,_gallery\\\\,_and_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mmm-file-list\": [\n        \"cpe:2.3:a:mediamanifesto:mmm_simple_file_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-address-bar-changer\": [\n        \"cpe:2.3:a:anshullabs:mobile_address_bar_changer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-app-builder-by-wappress\": [\n        \"cpe:2.3:a:mobile-app-builder-by-wappress_project:mobile-app-builder-by-wappress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-banner\": [\n        \"cpe:2.3:a:robinphillips:mobile_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-browser-color-select\": [\n        \"cpe:2.3:a:script:mobile_browser_color_select:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-contact-bar\": [\n        \"cpe:2.3:a:annabansaghi:mobile_contact_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-events-manager\": [\n        \"cpe:2.3:a:mobile_events_manager_project:mobile_events_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mobileeventsmanager:mobile_events_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-login-woocommerce\": [\n        \"cpe:2.3:a:xootix:otp_login_woocommerce_\\\\\\u0026_gravity_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mobile-menu\": [\n        \"cpe:2.3:a:freshlightlab:wp_mobile_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modal-dialog\": [\n        \"cpe:2.3:a:ylefebvre:modal_dialog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modal-portfolio\": [\n        \"cpe:2.3:a:internet-formation:modal_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modal-window\": [\n        \"cpe:2.3:a:wow-company:modal_window:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modern-events-calendar-lite\": [\n        \"cpe:2.3:a:webnus:modern_events_calendar_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modern-footnotes\": [\n        \"cpe:2.3:a:prismtechstudios:modern_footnotes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"modula-best-grid-gallery\": [\n        \"cpe:2.3:a:wpchill:customizable_wordpress_gallery_plugin_-_modula_image_gallery:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:modula_image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"molie-instructure-canvas-linking-tool\": [\n        \"cpe:2.3:a:molie_instructure_canvas_linking_tool_project:molie_instructure_canvas_linking_tool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mollie-forms\": [\n        \"cpe:2.3:a:wobbie:mollie_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mollie-payments-for-woocommerce\": [\n        \"cpe:2.3:a:mollie:mollie_payments_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"molongui-authorship\": [\n        \"cpe:2.3:a:amitzy:molongui_authorship:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"monetize\": [\n        \"cpe:2.3:a:monetize_project:monetize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"monitor-chat\": [\n        \"cpe:2.3:a:edwardstoever:monitor.chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"month-name-translation-benaceur\": [\n        \"cpe:2.3:a:benaceur-php:month_name_translation_benaceur:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"montonio-for-woocommerce\": [\n        \"cpe:2.3:a:montonio:montonio_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"moolamojo\": [\n        \"cpe:2.3:a:kibokolabs:moolamojo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"moova-for-woocommerce\": [\n        \"cpe:2.3:a:moova:moova_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"moreads-se\": [\n        \"cpe:2.3:a:lamp-solutions:moreads_se:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"morpheus-slider\": [\n        \"cpe:2.3:a:webpsilon:responsive_3d_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mortgage-calculators-wp\": [\n        \"cpe:2.3:a:lenderd:mortgage_calculators_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"most-and-least-read-posts-widget\": [\n        \"cpe:2.3:a:whiletrue:most_and_least_read_posts_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"most-popular-posts-widget-lite\": [\n        \"cpe:2.3:a:smartfan:most_popular_posts_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"motopress-hotel-booking-lite\": [\n        \"cpe:2.3:a:motopress:hotel_booking_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"motopress-slider-lite\": [\n        \"cpe:2.3:a:motopress:motopress-slider-lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"motor-racing-league\": [\n        \"cpe:2.3:a:motor_racing_league_project:motor_racing_league:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"motors-car-dealership-classified-listings\": [\n        \"cpe:2.3:a:stylemixthemes:motors_-_car_dealer\\\\,_classifieds_\\\\\\u0026_listing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mousewheel-smooth-scroll\": [\n        \"cpe:2.3:a:mousewheel_smooth_scroll_project:mousewheel_smooth_scroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"move-addons\": [\n        \"cpe:2.3:a:moveaddons:move_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"movies\": [\n        \"cpe:2.3:a:movies_project:movies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mp-restaurant-menu\": [\n        \"cpe:2.3:a:motopress:restaurant_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mp-timetable\": [\n        \"cpe:2.3:a:motopress:timetable_and_event_schedule:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mp3-jplayer\": [\n        \"cpe:2.3:a:mp3-jplayer_project:mp3-jplayer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mp3-music-player-by-sonaar\": [\n        \"cpe:2.3:a:sonaar:mp3_audio_player_for_music\\\\,_radio_\\\\\\u0026_podcast:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mpl-publisher\": [\n        \"cpe:2.3:a:mpl-publisher:mpl-publisher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mpoperationlogs\": [\n        \"cpe:2.3:a:mrpeng:mpoperationlogs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mq-woocommerce-products-price-bulk-edit\": [\n        \"cpe:2.3:a:mq-woocommerce-products-price-bulk-edit_project:mq-woocommerce-products-price-bulk-edit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ms-registration\": [\n        \"cpe:2.3:a:alphaefficiencyteam:custom_login_and_registration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ms-reviews\": [\n        \"cpe:2.3:a:ms-reviews_project:ms-reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mshop-mysite\": [\n        \"cpe:2.3:a:codemshop:mshop_my_site:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mstore-api\": [\n        \"cpe:2.3:a:inspireui:mstore_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mtouch-quiz\": [\n        \"cpe:2.3:a:mtouch_quiz_project:mtouch_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mts-url-shortener\": [\n        \"cpe:2.3:a:mythemeshop:url_shortener:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multi-column-tag-map\": [\n        \"cpe:2.3:a:multi-column_tag_map_project:multi-column_tag_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multi-feed-reader\": [\n        \"cpe:2.3:a:multi_feed_reader_project:multi_feed_reader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multi-page-toolkit\": [\n        \"cpe:2.3:a:multi-page_toolkit_project:multi-page_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multi-rating\": [\n        \"cpe:2.3:a:danielpowney:multi_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multi-step-form\": [\n        \"cpe:2.3:a:mondula:multi_step_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multicons\": [\n        \"cpe:2.3:a:doc4design:multicons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multilanguage\": [\n        \"cpe:2.3:a:bestwebsoft:multilanguage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multimanager-wp\": [\n        \"cpe:2.3:a:icdsoft:multimanager_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multiparcels-shipping-for-woocommerce\": [\n        \"cpe:2.3:a:multiparcels:multiparcels_shipping_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multiplayer-plugin\": [\n        \"cpe:2.3:a:multiplayer-plugin_project:multiplayer-plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multiple-pages-generator-by-porthas\": [\n        \"cpe:2.3:a:themeisle:multiple_page_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multiple-post-passwords\": [\n        \"cpe:2.3:a:andreasmuench:multiple_post_passwords:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multiple-roles\": [\n        \"cpe:2.3:a:multiple_roles_project:multiple_roles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multisafepay\": [\n        \"cpe:2.3:a:multisafepay:multisafepay_plugin_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"multisite-post-duplicator\": [\n        \"cpe:2.3:a:wpmaz:multisite_post_duplicator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"music-player-for-elementor\": [\n        \"cpe:2.3:a:smartwpress:music_player_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"music-store\": [\n        \"cpe:2.3:a:codepeople:music_store:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:musicstore:music_store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"muslim-prayer-time-bd\": [\n        \"cpe:2.3:a:realwebcare:muslim_prayer_time_bd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mw-wp-form\": [\n        \"cpe:2.3:a:web-soudan:mw_wp_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mwp-countdown\": [\n        \"cpe:2.3:a:wow-company:wow_countdowns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mwp-forms\": [\n        \"cpe:2.3:a:wow-company:wow_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mwp-herd-effect\": [\n        \"cpe:2.3:a:wow-company:herd_effects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mwp-skype\": [\n        \"cpe:2.3:a:wow-company:wow_skype_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mww-disclaimer-buttons\": [\n        \"cpe:2.3:a:mosswebworks:mww_disclaimer_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mx-time-zone-clocks\": [\n        \"cpe:2.3:a:mx_time_zone_clocks_project:mx_time_zone_clocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-calendar\": [\n        \"cpe:2.3:a:joedolson:my_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:my_calendar_project:my_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-contador-wp\": [\n        \"cpe:2.3:a:nes360:my_contador_lesr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-content-management\": [\n        \"cpe:2.3:a:joedolson:my_content_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-favorites\": [\n        \"cpe:2.3:a:takashimatsuyama:my_favorites:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-geo-posts-free\": [\n        \"cpe:2.3:a:mindstien:my_geo_posts_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-tickets\": [\n        \"cpe:2.3:a:my_tickets_project:my_tickets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-wish-list\": [\n        \"cpe:2.3:a:nlb-creationst:my_wish_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-wp-health-check\": [\n        \"cpe:2.3:a:sitealert:sitealert:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-wp-translate\": [\n        \"cpe:2.3:a:mythemeshop:my_wp_translate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"my-wpdb\": [\n        \"cpe:2.3:a:my_wpdb_project:my_wpdb:*:*:*:*:*:*:*:*\"\n      ],\n      \"myagileprivacy\": [\n        \"cpe:2.3:a:myagileprivacy:my_agile_privacy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mybb-cross-poster\": [\n        \"cpe:2.3:a:mybb_cross-poster_project:mybb_cross-poster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mybooktable\": [\n        \"cpe:2.3:a:stormhillmedia:mybook_table_bookstore:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mycred\": [\n        \"cpe:2.3:a:wpexperts:mycred:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mycryptocheckout\": [\n        \"cpe:2.3:a:plainviewplugins:mycryptocheckout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mycurator\": [\n        \"cpe:2.3:a:target-info:mycurator_content_curation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mypixs\": [\n        \"cpe:2.3:a:mypixs_project:mypixs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mystickyelements\": [\n        \"cpe:2.3:a:premio:mystickyelements:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mystickymenu\": [\n        \"cpe:2.3:a:premio:my_sticky_bar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:premio:mystickymenu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"n-media-woocommerce-checkout-fields\": [\n        \"cpe:2.3:a:najeebmedia:woocommerce_checkout_field_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"n-media-wp-simple-quiz\": [\n        \"cpe:2.3:a:najeebmedia:easy_quiz_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"namasha-by-mdesign\": [\n        \"cpe:2.3:a:mdezign:namasha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"namaste-lms\": [\n        \"cpe:2.3:a:kibokolabs:namaste\\\\!_lms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"name-directory\": [\n        \"cpe:2.3:a:name_directory_project:name_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"navz-photo-gallery\": [\n        \"cpe:2.3:a:navz:acf_photo_gallery_field:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-booking\": [\n        \"cpe:2.3:a:booking_project:booking:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:nicdark:hotel_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-donations\": [\n        \"cpe:2.3:a:donations_project:donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-learning\": [\n        \"cpe:2.3:a:learning_courses_project:learning_courses:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-projects\": [\n        \"cpe:2.3:a:nicdark:cost_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-restaurant-reservations\": [\n        \"cpe:2.3:a:restaurant_reservations_project:restaurant_reservations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-shortcodes\": [\n        \"cpe:2.3:a:components_for_wp_bakery_page_builder_project:components_for_wp_bakery_page_builder:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:nicdark:nd_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nd-travel\": [\n        \"cpe:2.3:a:travel_management_project:travel_management_:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nelio-ab-testing\": [\n        \"cpe:2.3:a:neliosoftware:nelio_ab_testing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"neon-text\": [\n        \"cpe:2.3:a:eralion:neon_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"neshan-maps\": [\n        \"cpe:2.3:a:neshan:neshan_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"netgsm\": [\n        \"cpe:2.3:a:netgsm:netgsm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"netreviews\": [\n        \"cpe:2.3:a:skeepers:verified_reviews_\\\\(avis_verifies\\\\):*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"neuvoo-jobroll\": [\n        \"cpe:2.3:a:neuvoo:neuvoo-jobroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-adman\": [\n        \"cpe:2.3:a:new_adman_project:new_adman:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-album-gallery\": [\n        \"cpe:2.3:a:awplife:album_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-contact-form-widget\": [\n        \"cpe:2.3:a:awplife:contact_form_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-grid-gallery\": [\n        \"cpe:2.3:a:awplife:grid_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-image-gallery\": [\n        \"cpe:2.3:a:awplife:image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-order-notification-for-woocommerce\": [\n        \"cpe:2.3:a:mrebabi:new_order_notification_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-user-approve\": [\n        \"cpe:2.3:a:wpexperts:new_user_approve:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"new-user-email-set-up\": [\n        \"cpe:2.3:a:new_user_email_set_up_project:new_user_email_set_up:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newpost-catch\": [\n        \"cpe:2.3:a:imamura:newpost_catch:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"news-announcement-scroll\": [\n        \"cpe:2.3:a:storeapps:news_announcement_scroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"news-kit-elementor-addons\": [\n        \"cpe:2.3:a:blazethemes:news_kit_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletter\": [\n        \"cpe:2.3:a:thenewsletterplugin:newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletter-bulk-email\": [\n        \"cpe:2.3:a:happybox:newsletter_\\\\\\u0026_bulk_email_sender:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletter-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:newsletter_by_supsystic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletter-optin-box\": [\n        \"cpe:2.3:a:noptin:noptin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletter-popup\": [\n        \"cpe:2.3:a:mndpsingh287:newsletter_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsletters-lite\": [\n        \"cpe:2.3:a:tribulant:newsletters:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tribulant:newsletters:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"newsplugin\": [\n        \"cpe:2.3:a:ipdgroup:newsplugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newstatpress\": [\n        \"cpe:2.3:a:newstatpress_project:newstatpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nex-forms-express-wp-form-builder\": [\n        \"cpe:2.3:a:basixonline:nex-forms:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:basixonline:nex-forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"next-page\": [\n        \"cpe:2.3:a:stephanieleary:next_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nextend-facebook-connect\": [\n        \"cpe:2.3:a:nextendweb:facebook_connect:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:nextendweb:nextend_facebook_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nextend-twitter-connect\": [\n        \"cpe:2.3:a:nextendweb:nextend_twitter_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nexter-extension\": [\n        \"cpe:2.3:a:posimyth:nexter_extension:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nextgen-gallery\": [\n        \"cpe:2.3:a:imagely:nextgen_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ni-purchase-orderpo-for-woocommerce\": [\n        \"cpe:2.3:a:naziinfotech:ni_purchase_order\\\\(po\\\\)_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ni-woocommerce-custom-order-status\": [\n        \"cpe:2.3:a:ni_woocommerce_custom_order_status_project:ni_woocommerce_custom_order_status:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nice-paypal-button-lite\": [\n        \"cpe:2.3:a:trinitronic:nice_paypal_button_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nicebackgrounds\": [\n        \"cpe:2.3:a:brx8r:nice_backgrounds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nifty-coming-soon-and-under-construction-page\": [\n        \"cpe:2.3:a:wpconcern:coming_soon_\\\\\\u0026_maintenance_mode_page:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpconcern:nifty_coming_soon_\\\\\\u0026_maintenance_mode_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninja-beaver-lite-addons-for-beaver-builder\": [\n        \"cpe:2.3:a:ninjateam:ninja_beaver_add-ons_for_beaver_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninja-forms\": [\n        \"cpe:2.3:a:ninjaforms:contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ninjaforms:ninja_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninja-gdpr-compliance\": [\n        \"cpe:2.3:a:ninjateam:gdpr_ccpa_compliance_\\\\\\u0026_cookie_consent_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninja-job-board\": [\n        \"cpe:2.3:a:wpmanageninja:ninja_job_board:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninja-tables\": [\n        \"cpe:2.3:a:wpmanageninja:ninja_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninjafirewall\": [\n        \"cpe:2.3:a:nintechnet:ninjafirewall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ninjateam-telegram\": [\n        \"cpe:2.3:a:ninjateam:chat_for_telegram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nirweb-support\": [\n        \"cpe:2.3:a:nirweb:nirweb_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nitropack\": [\n        \"cpe:2.3:a:nitropack:nitropack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nix-anti-spam-light\": [\n        \"cpe:2.3:a:nixsolutions:nix_anti-spam_light:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nktagcloud\": [\n        \"cpe:2.3:a:better_tag_cloud_project:better_tag_cloud:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nm-visitors\": [\n        \"cpe:2.3:a:nitinmaurya:wordpress_visitors:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nmedia-user-file-uploader\": [\n        \"cpe:2.3:a:najeebmedia:frontend_file_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:najeebmedia:frontend_file_manager_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nmr-strava-activities\": [\n        \"cpe:2.3:a:mirceatm:nmr_strava_activities:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"no-future-posts\": [\n        \"cpe:2.3:a:no_future_posts_project:no_future_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"no-update-nag\": [\n        \"cpe:2.3:a:coffee2code:no_update_nag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nofollow\": [\n        \"cpe:2.3:a:ultimate_nofollow_project:ultimate_nofollow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nofollow-links\": [\n        \"cpe:2.3:a:nofollow_links_project:nofollow_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nokia-mapsplaces\": [\n        \"cpe:2.3:a:nokia_maps_\\\\\\u0026_places_project:nokia_maps_\\\\\\u0026_places:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nooz\": [\n        \"cpe:2.3:a:nooz_project:nooz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"note-press\": [\n        \"cpe:2.3:a:datainterlock:note_press:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"notice-faq\": [\n        \"cpe:2.3:a:notice:notice_faq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"notices\": [\n        \"cpe:2.3:a:notices_project:notices:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"notification\": [\n        \"cpe:2.3:a:bracketspace:notification:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"notification-for-telegram\": [\n        \"cpe:2.3:a:andreamarinucci:notification_for_telegram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"notificationx\": [\n        \"cpe:2.3:a:wpdeveloper:notificationx:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdeveloper:notificationx:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"notifier\": [\n        \"cpe:2.3:a:wanotifier:wanotifier:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nova-blocks\": [\n        \"cpe:2.3:a:pixelgrade:nova_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"novelist\": [\n        \"cpe:2.3:a:nosegraze:novelist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"novo-map\": [\n        \"cpe:2.3:a:novo-media:novo-map\\\\:your_wp_posts_on_custom_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nps-computy\": [\n        \"cpe:2.3:a:computy:nps_computy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ns-coupon-to-become-customer\": [\n        \"cpe:2.3:a:nsthemes:ns_coupon_to_become_customer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ns-facebook-pixel-for-wp\": [\n        \"cpe:2.3:a:nsthemes:advanced_social_pixel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ns-woocommerce-watermark\": [\n        \"cpe:2.3:a:nsthemes:ns_watermark_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oauth-client\": [\n        \"cpe:2.3:a:miniorange:oauth_2.0_client_for_sso:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oauth-client-for-user-authentication\": [\n        \"cpe:2.3:a:oauth_client_single_sign_on_project:oauth_client_single_sign_on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oauth-twitter-feed-for-developers\": [\n        \"cpe:2.3:a:stormconsultancy:oauth_twitter_feed_for_developers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oauth2-provider\": [\n        \"cpe:2.3:a:dash10:oauth_server:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-oauth:wp_oauth_server:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oauth2-server\": [\n        \"cpe:2.3:a:codexshaper:wp_oauth2_server:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ocean-extra\": [\n        \"cpe:2.3:a:oceanwp:ocean_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oembed-gist\": [\n        \"cpe:2.3:a:takayukimiyauchi:oembed_gist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"official-facebook-pixel\": [\n        \"cpe:2.3:a:facebook:facebook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"official-mailerlite-sign-up-forms\": [\n        \"cpe:2.3:a:mailerlite:mailerlite_signup_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"official-sendle-shipping-method\": [\n        \"cpe:2.3:a:joovii:sendle_shipping:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"og-tags\": [\n        \"cpe:2.3:a:og_tags_project:og_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oi-yamaps\": [\n        \"cpe:2.3:a:oi_yandex.maps_for_wordpress_project:oi_yandex.maps_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oik\": [\n        \"cpe:2.3:a:bobbingwide:oik:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"olevmedia-shortcodes\": [\n        \"cpe:2.3:a:olevmedia:olevmedia_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"olimometer\": [\n        \"cpe:2.3:a:olimometer_project:olimometer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"olive-one-click-demo-import\": [\n        \"cpe:2.3:a:olivethemes:olive_one_click_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"olympus-google-fonts\": [\n        \"cpe:2.3:a:fontsplugin:fonts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"omnisend-connect\": [\n        \"cpe:2.3:a:omnisend:email_marketing_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"onclick-show-popup\": [\n        \"cpe:2.3:a:gopiplus:onclick_show_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-click-demo-import\": [\n        \"cpe:2.3:a:ocdi:one_click_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-click-order-reorder\": [\n        \"cpe:2.3:a:cedcommerce:one_click_order_re-order:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-click-plugin-updater\": [\n        \"cpe:2.3:a:one_click_plugin_updater_project:one_click_plugin_updater:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-click-ssl\": [\n        \"cpe:2.3:a:tribulant:one_click_ssl:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-page-express-companion\": [\n        \"cpe:2.3:a:horea_radu:one_page_express_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"one-user-avatar\": [\n        \"cpe:2.3:a:onedesigns:one_user_avatar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oneclick-whatsapp-order\": [\n        \"cpe:2.3:a:onlinestorekit:oneclick_chat_to_order:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"onelogin-saml-sso\": [\n        \"cpe:2.3:a:onelogin:onelogin_saml_sso:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"onesignal-free-web-push-notifications\": [\n        \"cpe:2.3:a:onesignal:onesignal-free-web-push-notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"online-accessibility\": [\n        \"cpe:2.3:a:adaplugin:accessibility_suite_by_online_ada:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"online-appointment-scheduling-software\": [\n        \"cpe:2.3:a:swiftcloud:swift_calendar_online_appointment_scheduling:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"online-lesson-booking-system\": [\n        \"cpe:2.3:a:sukimalab:online_lesson_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"onwebchat\": [\n        \"cpe:2.3:a:onwebchat:live_chat_-_live_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ooohboi-steroids-for-elementor\": [\n        \"cpe:2.3:a:ooohboi_steroids_for_elementor_project:ooohboi_steroids_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oopspam-anti-spam\": [\n        \"cpe:2.3:a:oopspam:oopspam_anti-spam:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"opal-estate\": [\n        \"cpe:2.3:a:wpopal:opal_estate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"opcache\": [\n        \"cpe:2.3:a:extendwings:opcache_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"open-external-links-in-a-new-window\": [\n        \"cpe:2.3:a:webfactoryltd:external_links_in_new_window_\\\\/_new_tab:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"open-graph-metabox\": [\n        \"cpe:2.3:a:underdock:open_graph_metabox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"open-rdw-kenteken-voertuiginformatie\": [\n        \"cpe:2.3:a:tussendoor:open_rdw_kenteken_voertuiginformatie:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"open-user-map\": [\n        \"cpe:2.3:a:100plugins:open_user_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"opengraph\": [\n        \"cpe:2.3:a:willnorris:open_graph:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"opening-hours\": [\n        \"cpe:2.3:a:designextreme:we\\\\'re_open\\\\!:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"openpgp-form-encryption\": [\n        \"cpe:2.3:a:arnesonium:openpgp_form_encryption:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"opensheetmusicdisplay\": [\n        \"cpe:2.3:a:opensheetmusicdisplay:opensheetmusicdisplay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ops-robots-txt\": [\n        \"cpe:2.3:a:ops-robots-txt_project:ops-robots-txt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"optima-express\": [\n        \"cpe:2.3:a:ihomefinder:optima_express_\\\\+_marketboost_idx:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"optimole-wp\": [\n        \"cpe:2.3:a:vertistudio:image_optimization_\\\\\\u0026_lazy_load_by_optimole:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"optin-forms\": [\n        \"cpe:2.3:a:fancythemes:optin_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"optinly\": [\n        \"cpe:2.3:a:optinly:optinly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"optinmonster\": [\n        \"cpe:2.3:a:optinmonster:optinmonster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"option-editor\": [\n        \"cpe:2.3:a:backie:option_editor:*:*:*:*:*:*:*:*\"\n      ],\n      \"option-tree\": [\n        \"cpe:2.3:a:optiontree_project:optiontree:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"options-for-twenty-seventeen\": [\n        \"cpe:2.3:a:webd:options_for_twenty_seventeen:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"orbisius-child-theme-creator\": [\n        \"cpe:2.3:a:orbisius:child_theme_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-attachments-for-woocommerce\": [\n        \"cpe:2.3:a:directsoftware:order_attachments_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-auto-complete-for-woocommerce\": [\n        \"cpe:2.3:a:order_auto_complete_for_woocommerce_project:order_auto_complete_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-delivery-date-for-woocommerce\": [\n        \"cpe:2.3:a:tychesoftwares:order_delivery_date_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tychesoftwares:order_delivery_date_for_wp_e-commerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-hours-scheduler-for-woocommerce\": [\n        \"cpe:2.3:a:bizswoop:store_hours_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-import-export-for-woocommerce\": [\n        \"cpe:2.3:a:webtoffee:order_export_\\\\\\u0026_order_import_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-notification-for-telegram\": [\n        \"cpe:2.3:a:choplugins:order_notification_for_telegram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"order-tracking\": [\n        \"cpe:2.3:a:etoilewebdesign:order_tracking:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:etoilewebdesign:order_tracking:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"organization-chart\": [\n        \"cpe:2.3:a:wpdevart:organization_chart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"organizer\": [\n        \"cpe:2.3:a:organizer_project:organizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"osd-subscribe\": [\n        \"cpe:2.3:a:outsidesource:osd_subscribe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"osm\": [\n        \"cpe:2.3:a:hyumika:openstreetmap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"osmapper\": [\n        \"cpe:2.3:a:b4after:osmapper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"osomblocks\": [\n        \"cpe:2.3:a:osompress:osom_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ota-sync-booking-engine-widget\": [\n        \"cpe:2.3:a:otasync:ota_sync_booking_engine_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"otter-blocks\": [\n        \"cpe:2.3:a:themeisle:otter_blocks:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:themeisle:otter_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"our-team-enhanced\": [\n        \"cpe:2.3:a:smartcat:our_team_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"outbound-link-manager\": [\n        \"cpe:2.3:a:sparro:outbound_link_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ovic-import-demo\": [\n        \"cpe:2.3:a:ovic_importer_project:ovic_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ovic-vc-addon\": [\n        \"cpe:2.3:a:kutethemes:ovic_responsive_wpbakery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"owl-carousel\": [\n        \"cpe:2.3:a:pierre-jehan:owl_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"owm-weather\": [\n        \"cpe:2.3:a:ujsoftware:owm_weather:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-and-post-restriction\": [\n        \"cpe:2.3:a:miniorange:page_restriction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-builder-add\": [\n        \"cpe:2.3:a:pluginops:landing_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-builder-by-azexo\": [\n        \"cpe:2.3:a:azexo:page_builder_with_image_map_by_azexo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-builder-sandwich\": [\n        \"cpe:2.3:a:pagebuildersandwich:page_builder_sandwich:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-generator\": [\n        \"cpe:2.3:a:wpzinc:page_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-layout-builder\": [\n        \"cpe:2.3:a:page-layout-builder_project:page-layout-builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-list\": [\n        \"cpe:2.3:a:page-list_project:page-list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-or-post-clone\": [\n        \"cpe:2.3:a:carlosfazenda:page_and_post_clone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-parts\": [\n        \"cpe:2.3:a:benhuson:page_parts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-scroll-to-id\": [\n        \"cpe:2.3:a:page_scroll_to_id_project:page_scroll_to_id:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"page-views-count\": [\n        \"cpe:2.3:a:a3rev:page_view_count:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pagebar\": [\n        \"cpe:2.3:a:pagebar_project:pagebar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pagelayer\": [\n        \"cpe:2.3:a:pagelayer:pagelayer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pagepost-content-shortcode\": [\n        \"cpe:2.3:a:page\\\\/post_content_shortcode_project:page\\\\/post_content_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pagerank-tools\": [\n        \"cpe:2.3:a:mahype:pagerank_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pagination\": [\n        \"cpe:2.3:a:bestwebsoft:pagination:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paid-member-subscriptions\": [\n        \"cpe:2.3:a:cozmoslabs:membership_\\\\\\u0026_content_restriction_-_paid_member_subscriptions:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cozmoslabs:paid_membership_subscriptions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paid-membership\": [\n        \"cpe:2.3:a:videowhisper:micropayments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paid-memberships-pro\": [\n        \"cpe:2.3:a:strangerstudios:paid_memberships_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pandavideo\": [\n        \"cpe:2.3:a:pandavideo:panda_video:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"parallax-image\": [\n        \"cpe:2.3:a:duckdiverllc:parallax_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"parallax-slider-block\": [\n        \"cpe:2.3:a:wpdeveloper:parallax_slider_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pardakht-delkhah\": [\n        \"cpe:2.3:a:wp-master:pardakht-delkhah:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"parsi-font\": [\n        \"cpe:2.3:a:parsi-font_project:parsi-font:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"participants-database\": [\n        \"cpe:2.3:a:xnau:participants_database:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"password-protect-page\": [\n        \"cpe:2.3:a:passwordprotectwp:password_protect_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"password-protected\": [\n        \"cpe:2.3:a:wpexperts:password_protected:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"passwords-manager\": [\n        \"cpe:2.3:a:hirewebxperts:passwords_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"patreon-connect\": [\n        \"cpe:2.3:a:patreon:patreon_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"patron-button-and-widgets-by-codebard\": [\n        \"cpe:2.3:a:codebard:codebard\\\\'s_patron_button_and_widgets_for_patreon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paygreen-woocommerce\": [\n        \"cpe:2.3:a:paygreen:paygreen_-_ancienne:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"payment-form-for-paypal-pro\": [\n        \"cpe:2.3:a:codepeople:payment_form_for_paypal_pro:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ithemes:paypal_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"payment-forms-for-paystack\": [\n        \"cpe:2.3:a:paystack:payment_forms_for_paystack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"payment-gateway-for-telcell\": [\n        \"cpe:2.3:a:hkdigital:payment_gateway_for_telcell:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"payment-gateway-stripe-and-woocommerce-integration\": [\n        \"cpe:2.3:a:webtoffee:stripe_payment_plugin_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paypal-donations\": [\n        \"cpe:2.3:a:tipsandtricks-hq:donations_via_paypal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paypal-pay-buy-donation-and-cart-buttons-shortcode\": [\n        \"cpe:2.3:a:mohsinrasool:paypal_pay_now\\\\,_buy_now\\\\,_donation_and_cart_buttons_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paypal-payment-button-by-vcita\": [\n        \"cpe:2.3:a:vcita:online_payments_-_get_paid_with_paypal\\\\,_square_\\\\\\u0026_stripe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"payplus-payment-gateway\": [\n        \"cpe:2.3:a:payplus:payplus_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paytium\": [\n        \"cpe:2.3:a:paytium:paytium:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paytm-payments\": [\n        \"cpe:2.3:a:paytm:payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"paytr-taksit-tablosu-woocommerce\": [\n        \"cpe:2.3:a:paytr:paytr_taksit_tablosu_-_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pb-oembed-html5-audio-with-cache-support\": [\n        \"cpe:2.3:a:bajorat-media:pb_oembed_html5_audio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-block\": [\n        \"cpe:2.3:a:henryholtgeerts:pdf_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-embedder\": [\n        \"cpe:2.3:a:wp-pdf:pdf_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-generator-addon-for-elementor-page-builder\": [\n        \"cpe:2.3:a:redefiningtheweb:pdf_generator_addon_for_elementor_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-generator-for-wp\": [\n        \"cpe:2.3:a:wpswings:pdf_generator_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-image-generator\": [\n        \"cpe:2.3:a:contempo:pdf_image_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-invoices-and-packing-slips-for-woocommerce\": [\n        \"cpe:2.3:a:acowebs:pdf_invoices_and_packing_slips_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"pdf-light-viewer\": [\n        \"cpe:2.3:a:teamlead:pdf-light-viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-poster\": [\n        \"cpe:2.3:a:bplugins:pdf_poster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-print\": [\n        \"cpe:2.3:a:bestwebsoft:pdf_\\\\\\u0026_print:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-thumbnail-generator\": [\n        \"cpe:2.3:a:kubiq:pdf_thumbnail_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-viewer-block\": [\n        \"cpe:2.3:a:gutenberg_pdf_viewer_block_project:gutenberg_pdf_viewer_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf-viewer-for-elementor\": [\n        \"cpe:2.3:a:redlettuce:pdf_viewer_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdf24-posts-to-pdf\": [\n        \"cpe:2.3:a:pdf24_articles_to_pdf_project:pdf24_articles_to_pdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdfjs-viewer-shortcode\": [\n        \"cpe:2.3:a:pdf.js_viewer_project:pdf.js_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pdq-csv\": [\n        \"cpe:2.3:a:ransomchristofferson:pdq_csv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pedalo-connector\": [\n        \"cpe:2.3:a:pedalo:pedalo_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"peepso-core\": [\n        \"cpe:2.3:a:peepso:peepso:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pepro-cf7-database\": [\n        \"cpe:2.3:a:peprodev:peprodev_cf7_database:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"per-page-add-to\": [\n        \"cpe:2.3:a:evona:per_page_add_to_head:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"perelink\": [\n        \"cpe:2.3:a:perelink_pro_project:perelink_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"perfect-woocommerce-brands\": [\n        \"cpe:2.3:a:quadlayers:perfect_brands_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"performance-lab\": [\n        \"cpe:2.3:a:wordpress:performance_lab:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"permalink-manager\": [\n        \"cpe:2.3:a:permalink_manager_lite_project:permalink_manager_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"permalinks-customizer\": [\n        \"cpe:2.3:a:yasglobal:permalinks_customizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"persian-woocommerce\": [\n        \"cpe:2.3:a:woocommerce:persian-woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"persian-woocommerce-sms\": [\n        \"cpe:2.3:a:woocommerce:persian_woocommerce_sms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"personalize-woocommerce-cart-page\": [\n        \"cpe:2.3:a:najeebmedia:personalized_woocommerce_cart_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"peters-collaboration-e-mails\": [\n        \"cpe:2.3:a:peter\\\\'s_collaboration_e-mails_project:peter\\\\'s_collaboration_e-mails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"peters-custom-anti-spam-image\": [\n        \"cpe:2.3:a:peterkeung:peter\\\\'s_custom_anti-spam:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:peterkeung:peters_custom_anti-spam:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"peters-login-redirect\": [\n        \"cpe:2.3:a:profilepress:loginwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"petfinder-listings\": [\n        \"cpe:2.3:a:unboxinteractive:petfinder-listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phastpress\": [\n        \"cpe:2.3:a:kiboit:phastpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phoenix-media-rename\": [\n        \"cpe:2.3:a:phoenix_media_rename_project:phoenix_media_rename:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phone-orders-for-woocommerce\": [\n        \"cpe:2.3:a:algolplus:phone_orders_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phonepe-payment-solutions\": [\n        \"cpe:2.3:a:phonepe:phonepe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phonetrack-meu-site-manager\": [\n        \"cpe:2.3:a:phonetrack:phonetrack_meu_site_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photo-contest\": [\n        \"cpe:2.3:a:flippercode:photo_gallery_-_image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photo-gallery\": [\n        \"cpe:2.3:a:10web:photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photo-gallery-builder\": [\n        \"cpe:2.3:a:wpdiscover:photo_gallery_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photo-video-gallery-master\": [\n        \"cpe:2.3:a:webhuntinfotech:photo_video_gallery_master:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photoblocks-grid-gallery\": [\n        \"cpe:2.3:a:greentreelabs:gallery_photoblocks:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:gallery_photoblocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photokit\": [\n        \"cpe:2.3:a:jackzhu:photokit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photoshow\": [\n        \"cpe:2.3:a:codepeople:smart_image_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photospace\": [\n        \"cpe:2.3:a:photospace_gallery_project:photospace_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photospace-responsive\": [\n        \"cpe:2.3:a:deanoakley:photospace_responsive_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photoswipe-masonry\": [\n        \"cpe:2.3:a:thriveweb:photoswipe_masonry_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"photoxhibit\": [\n        \"cpe:2.3:a:photoxhibit_project:photoxhibit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"php-compatibility-checker\": [\n        \"cpe:2.3:a:wpengine:php_compatibility_checker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"php-everywhere\": [\n        \"cpe:2.3:a:php_everywhere_project:php_everywhere:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"php-execution-plugin\": [\n        \"cpe:2.3:a:php_execution_project:php_execution:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"php-to-page\": [\n        \"cpe:2.3:a:php_to_page_project:php_to_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phpfreechat\": [\n        \"cpe:2.3:a:frumph:phpfreechat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pi-woocommerce-order-date-time-and-type\": [\n        \"cpe:2.3:a:piwebsolution:pi-woocommerce-order-date-time-and-type:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"picture-gallery\": [\n        \"cpe:2.3:a:videowhisper:picture_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pie-forms-for-wp\": [\n        \"cpe:2.3:a:pieforms:drag_\\\\\\u0026_drop_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pie-register\": [\n        \"cpe:2.3:a:genetechsolutions:pie_register:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pilotpress\": [\n        \"cpe:2.3:a:ontraport:pilotpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pinterest-rss-widget\": [\n        \"cpe:2.3:a:bkmacdaddy:pinterest_rss_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"piotnetforms\": [\n        \"cpe:2.3:a:piotnet:piotnet_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pixabay-images\": [\n        \"cpe:2.3:a:pixabay_images_project:pixabay_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pixelyoursite\": [\n        \"cpe:2.3:a:pixelyoursite:pixelyoursite:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"pixtypes\": [\n        \"cpe:2.3:a:pixelgrade:pixtypes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plainview-activity-monitor\": [\n        \"cpe:2.3:a:plainview_activity_monitor_project:plainview_activity_monitor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plainview-protect-passwords\": [\n        \"cpe:2.3:a:plainviewplugins:plainview_protect_passwords:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"planso-forms\": [\n        \"cpe:2.3:a:planso:planso_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plausible-analytics\": [\n        \"cpe:2.3:a:plausible:plausible_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"play-ht\": [\n        \"cpe:2.3:a:hammadh:play.ht:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"player\": [\n        \"cpe:2.3:a:web-dorado:spidervplayer:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-dorado:web-dorado_spider_video_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plexx-elementor-extension\": [\n        \"cpe:2.3:a:themeworm:plexx_elementor_extension:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plugin-logic\": [\n        \"cpe:2.3:a:plugin_logic_project:plugin_logic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plugin-organizer\": [\n        \"cpe:2.3:a:plugin-organizer_project:plugin-organizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plugins-list\": [\n        \"cpe:2.3:a:artiss:plugins_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plugmatter-optin-feature-box-lite\": [\n        \"cpe:2.3:a:sizmic:plugmatter_optin_feature_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"plugmatter-pricing-table\": [\n        \"cpe:2.3:a:sizmic:plugmatter_pricing_table:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"plugnedit\": [\n        \"cpe:2.3:a:simplysymphony:plugnedit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pocket-news-generator\": [\n        \"cpe:2.3:a:logicore:pocket_news_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"podcast-channels\": [\n        \"cpe:2.3:a:podcast_channels_project:podcast_channels:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"podcast-importer-secondline\": [\n        \"cpe:2.3:a:secondline:podcast_importer_secondline:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:secondlinethemes:podcast_importer_secondline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"podcast-subscribe-buttons\": [\n        \"cpe:2.3:a:secondlinethemes:podcast_subscribe_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"podlove-podcasting-plugin-for-wordpress\": [\n        \"cpe:2.3:a:podlove:podlove_podcast_publisher:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:podlove:podlove_podcast_publisher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"podlove-subscribe-button\": [\n        \"cpe:2.3:a:podlove:podlove_subscribe_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pods\": [\n        \"cpe:2.3:a:podsfoundation:pods:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"poeditor\": [\n        \"cpe:2.3:a:poeditor:poeditor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"points-and-rewards-for-woocommerce\": [\n        \"cpe:2.3:a:wpswings:points_and_rewards_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"poll-maker\": [\n        \"cpe:2.3:a:ays-pro:poll_maker:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"poll-wp\": [\n        \"cpe:2.3:a:total-soft:responsive_poll:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:total-soft:ts_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"polldaddy\": [\n        \"cpe:2.3:a:automattic:crowdsignal_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pollin\": [\n        \"cpe:2.3:a:bin-co:pollin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"polls-widget\": [\n        \"cpe:2.3:a:wpdevart:poll\\\\,_survey\\\\,_questionnaire_and_voting_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"polo-video-gallery\": [\n        \"cpe:2.3:a:bplugins:polo_video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pootle-button\": [\n        \"cpe:2.3:a:pootlepress:pootle_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pop-up\": [\n        \"cpe:2.3:a:chop-chop:pop-up_chop_chop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pop-up-pop-up\": [\n        \"cpe:2.3:a:mypopups:pop-up:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popcashnet-code-integration-tool\": [\n        \"cpe:2.3:a:popcash:popcash.net_code_integration_tool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"poptin\": [\n        \"cpe:2.3:a:poptin:popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popularis-extra\": [\n        \"cpe:2.3:a:themes4wp:popularis_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-anything-on-click\": [\n        \"cpe:2.3:a:essentialplugin:popup_anything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-box\": [\n        \"cpe:2.3:a:wow-company:popup_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-builder\": [\n        \"cpe:2.3:a:sygnoos:popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-contact-form\": [\n        \"cpe:2.3:a:gopiplus:popup_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-maker\": [\n        \"cpe:2.3:a:code-atlantic:popup_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-manager\": [\n        \"cpe:2.3:a:popup_manager_project:popup_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-more\": [\n        \"cpe:2.3:a:felixmoira:ai_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popup-zyrex\": [\n        \"cpe:2.3:a:zyrex:popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popupally\": [\n        \"cpe:2.3:a:accessally:popupally:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"popups\": [\n        \"cpe:2.3:a:timersys:popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portable-phpmyadmin\": [\n        \"cpe:2.3:a:getbutterfly:portable-phpmyadmin:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:portable_phpmyadmin_project:portable_phpmyadmin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio\": [\n        \"cpe:2.3:a:bestwebsoft:portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-by-lisa-westlund\": [\n        \"cpe:2.3:a:portfolio_project:portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-elementor\": [\n        \"cpe:2.3:a:pwrplugins:powerfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-gallery\": [\n        \"cpe:2.3:a:huge-it:portfolio_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-responsive-gallery\": [\n        \"cpe:2.3:a:ays-pro:portfolio_responsive_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-slideshow\": [\n        \"cpe:2.3:a:portfolio_slideshow_project:portfolio_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portfolio-wp\": [\n        \"cpe:2.3:a:wpsofts:portfolio_gallery\\\\,_product_catalog_-_grid_kit_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"portugal-ctt-tracking-woocommerce\": [\n        \"cpe:2.3:a:webdados:portugal_ctt_tracking_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-and-page-builder\": [\n        \"cpe:2.3:a:boldgrid:post_and_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-carousel\": [\n        \"cpe:2.3:a:shapedplugin:smart_post_show:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-carousel-slider-for-elementor\": [\n        \"cpe:2.3:a:plugin-devs:post_carousel_slider_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-connector\": [\n        \"cpe:2.3:a:never5:post_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-content-xmlrpc\": [\n        \"cpe:2.3:a:post_content_xmlrpc_project:post_content_xmlrpc:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-duplicator\": [\n        \"cpe:2.3:a:metaphorcreations:post_duplicator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-expirator\": [\n        \"cpe:2.3:a:publishpress:post_expirator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-grid\": [\n        \"cpe:2.3:a:pickplugins:post_grid:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:pickplugins:post_grid_combo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-grid-carousel-ultimate\": [\n        \"cpe:2.3:a:wpwax:post_grid\\\\,_slider_\\\\\\u0026_carousel_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-highlights\": [\n        \"cpe:2.3:a:post_highlights_projects:post_highlights:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-in-page-for-elementor\": [\n        \"cpe:2.3:a:migaweb:post_in_page_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-index\": [\n        \"cpe:2.3:a:post_index_project:post_index:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-list-designer\": [\n        \"cpe:2.3:a:infornweb:posts_list_designer_by_category:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-lockdown\": [\n        \"cpe:2.3:a:andypalmer:post_lockdown:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-meta-data-manager\": [\n        \"cpe:2.3:a:wpexpertplugins:post_meta_data_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-pay-counter\": [\n        \"cpe:2.3:a:post_pay_counter_project:post_pay_counter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:thecrowned:post_pay_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-rating-and-review\": [\n        \"cpe:2.3:a:bourgesloic:post_rating_and_review:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-slider-and-carousel\": [\n        \"cpe:2.3:a:infornweb:post_slider_and_post_carousel:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"post-slider-carousel\": [\n        \"cpe:2.3:a:i13websolution:post_sliders_\\\\\\u0026_post_grids:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-smtp\": [\n        \"cpe:2.3:a:wpexperts:post_smtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-snippets\": [\n        \"cpe:2.3:a:postsnippets:post_snippets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-state-tags\": [\n        \"cpe:2.3:a:brandbrilliance:post_state_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-status-notifier-lite\": [\n        \"cpe:2.3:a:ifeelweb:post_status_notifier_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-timeline\": [\n        \"cpe:2.3:a:agilelogix:post_timeline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-title-counter\": [\n        \"cpe:2.3:a:wpleet:post_title_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-to-csv\": [\n        \"cpe:2.3:a:bestwebsoft:post_to_csv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-type-archive-mapping\": [\n        \"cpe:2.3:a:mediaron:custom_query_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-type-x\": [\n        \"cpe:2.3:a:implecode:product_catalog_simple:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-views-counter\": [\n        \"cpe:2.3:a:dfactory:post_views_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"post-views-stats\": [\n        \"cpe:2.3:a:cybernetikz:post_views_stats:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postaffiliatepro\": [\n        \"cpe:2.3:a:qualityunit:post_affiliate_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postie\": [\n        \"cpe:2.3:a:postieplugin:postie:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postmagthemes-demo-import\": [\n        \"cpe:2.3:a:postmagthemes:postmagthemes_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postman-smtp\": [\n        \"cpe:2.3:a:postman-smtp_project:postman-smtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postmash\": [\n        \"cpe:2.3:a:jmash:postmash:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"postmatic\": [\n        \"cpe:2.3:a:gopostmatic:replyable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posts-and-users-stats\": [\n        \"cpe:2.3:a:patrick-robrecht:posts_and_user_stats:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posts-in-page\": [\n        \"cpe:2.3:a:ivycat:posts_in_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posts-reminder\": [\n        \"cpe:2.3:a:lucasgarcia:posts_reminder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posts-table-filterable\": [\n        \"cpe:2.3:a:pluginus:tableon_-_wordpress_posts_table_filterable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posttabs\": [\n        \"cpe:2.3:a:posttabs_project:posttabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"powerpack-addon-for-beaver-builder\": [\n        \"cpe:2.3:a:ideabox:powerpack_for_beaver_builder:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"powerpack-elements\": [\n        \"cpe:2.3:a:ideabox:powerpack_addons_for_elementor:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"powerpack-lite-for-elementor\": [\n        \"cpe:2.3:a:ideabox:powerpack_addons_for_elementor:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"powerpress\": [\n        \"cpe:2.3:a:blubrry:powerpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pray-for-me\": [\n        \"cpe:2.3:a:projectcaruso:pray_for_me:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pre-orders-for-woocommerce\": [\n        \"cpe:2.3:a:brightplugins:pre-orders_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pre-party-browser-hints\": [\n        \"cpe:2.3:a:samperrow:party_resource_hints:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:samperrow:pre_party_resource_hints:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pre-publish-checklist\": [\n        \"cpe:2.3:a:brainstormforce:pre-publish_checklist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"preloader-plus\": [\n        \"cpe:2.3:a:wp-brandtheme:preloader_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"premium-addons-for-elementor\": [\n        \"cpe:2.3:a:leap13:premium_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:leap13:premium_addons_for_elementor:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"premium-blocks-for-gutenberg\": [\n        \"cpe:2.3:a:leap13:premium_blocks_for_gutenburg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"premium-seo-pack\": [\n        \"cpe:2.3:a:squirrly:premium_seo_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"premmerce\": [\n        \"cpe:2.3:a:premmerce:premmerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"premmerce-redirect-manager\": [\n        \"cpe:2.3:a:premmerce:redirect_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"premmerce-woocommerce-product-filter\": [\n        \"cpe:2.3:a:premmerce:premmerce_product_filter_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"prepost-seo\": [\n        \"cpe:2.3:a:enzipe:prepost_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pressference-exporter\": [\n        \"cpe:2.3:a:pressference:pressference_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pressforward\": [\n        \"cpe:2.3:a:pressforward:pressforward:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"presto-player\": [\n        \"cpe:2.3:a:prestoplayer:presto_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pretty-link\": [\n        \"cpe:2.3:a:caseproof:prettylinks:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"pretty-simple-popup-builder\": [\n        \"cpe:2.3:a:5starplugins:pretty_simple_popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"prettyphoto\": [\n        \"cpe:2.3:a:master-addons:prettyphoto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"preview-link-generator\": [\n        \"cpe:2.3:a:hasthemes:preview_link_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pricetable\": [\n        \"cpe:2.3:a:price_table_project:price_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pricing-deals-for-woocommerce\": [\n        \"cpe:2.3:a:varktech:pricing_deals_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pricing-table\": [\n        \"cpe:2.3:a:w3eden:pricing_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pricing-table-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:pricing_table_by_supsystic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pricing-tables-for-wpbakery-page-builder\": [\n        \"cpe:2.3:a:pricing_tables_for_wpbakery_page_builder_project:pricing_tables_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"primary-addon-for-elementor\": [\n        \"cpe:2.3:a:nicheaddons:primary_addon_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"prime-mover\": [\n        \"cpe:2.3:a:codexonics:prime_mover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"print-invoices-packing-slip-labels-for-woocommerce\": [\n        \"cpe:2.3:a:webtoffee:woocommerce_pdf_invoices\\\\,_packing_slips\\\\,_delivery_notes_and_shipping_labels:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"print-my-blog\": [\n        \"cpe:2.3:a:print_my_blog_project:print_my_blog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"print-o-matic\": [\n        \"cpe:2.3:a:print-o-matic_project:print-o-matic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"printfriendly\": [\n        \"cpe:2.3:a:printfriendly:print\\\\,_pdf\\\\,_email_by_printfriendly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"prismatic\": [\n        \"cpe:2.3:a:plugin-planet:prismatic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"private-content\": [\n        \"cpe:2.3:a:lcweb:privatecontent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"private-google-calendars\": [\n        \"cpe:2.3:a:michielvaneerd:private_google_calendars:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"private-messages-for-wordpress\": [\n        \"cpe:2.3:a:private_messages_project:private_messages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"private-only\": [\n        \"cpe:2.3:a:private_only_project:private_only:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pro-mime-types\": [\n        \"cpe:2.3:a:cyberwire:pro_mime_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"process-steps-template-designer\": [\n        \"cpe:2.3:a:coolplugins:process_steps_template_designer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-blocks\": [\n        \"cpe:2.3:a:wpxpo:wowstore:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"product-carousel-slider-for-woocommerce\": [\n        \"cpe:2.3:a:aazztech:woocommerce_product_carousel_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-catalog-feed\": [\n        \"cpe:2.3:a:pixelyoursite:product_catalog_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-category-tree\": [\n        \"cpe:2.3:a:awesometogi:product-category-tree:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:awesometogi:product_category_tree:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-delivery-date-for-woocommerce-lite\": [\n        \"cpe:2.3:a:tychesoftwares:product_delivery_date_for_woocommerce:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"product-designer\": [\n        \"cpe:2.3:a:pickplugins:product_designer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-enquiry-for-woocommerce\": [\n        \"cpe:2.3:a:wisdmlabs:product_enquiry_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-expiry-for-woocommerce\": [\n        \"cpe:2.3:a:webcodingplace:product_expiry_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-gtin-ean-upc-isbn-for-woocommerce\": [\n        \"cpe:2.3:a:product_gtin_\\\\(ean\\\\,_upc\\\\,_isbn\\\\)_for_woocommerce_project:product_gtin_\\\\(ean\\\\,_upc\\\\,_isbn\\\\)_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-import-export-for-woo\": [\n        \"cpe:2.3:a:webtoffee:product_import_export_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-input-fields-for-woocommerce\": [\n        \"cpe:2.3:a:tychesoftwares:product_input_fields_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-reviews-import-export-for-woocommerce\": [\n        \"cpe:2.3:a:webtoffee:product_reviews_import_export_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"product-visibility-by-country-for-woocommerce\": [\n        \"cpe:2.3:a:wpwham:product_visibility_by_country_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"profile-builder\": [\n        \"cpe:2.3:a:cozmoslabs:profile_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"profile-extra-fields\": [\n        \"cpe:2.3:a:bestwebsoft:profile_extra:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:profile_extra_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"profilegrid-user-profiles-groups-and-communities\": [\n        \"cpe:2.3:a:metagauss:profilegrid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"profilepress-pro\": [\n        \"cpe:2.3:a:properfraction:profilepress:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"profit-products-tables-for-woocommerce\": [\n        \"cpe:2.3:a:pluginus:woot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"progress-bar\": [\n        \"cpe:2.3:a:progress_bar_project:progress_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"progress-planner\": [\n        \"cpe:2.3:a:emilia:progress_planner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"progressive-license\": [\n        \"cpe:2.3:a:crowdfavorite:progressive_license:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"project-source-code-download\": [\n        \"cpe:2.3:a:project-source-code-download_project:project-source-code-download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"project-status\": [\n        \"cpe:2.3:a:3.7designs:project_status:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"projecthuddle-child-site\": [\n        \"cpe:2.3:a:brainstormforce:surefeedback:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"projectopia-core\": [\n        \"cpe:2.3:a:projectopia:projectopia:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"promobar\": [\n        \"cpe:2.3:a:bestwebsoft:promobar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"promolayer-popup-builder\": [\n        \"cpe:2.3:a:promolayer:popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"promotion-slider\": [\n        \"cpe:2.3:a:promotion_slider_project:promotion_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"proofreading\": [\n        \"cpe:2.3:a:scribit:proofreading:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"propertyhive\": [\n        \"cpe:2.3:a:wp-property-hive:propertyhive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ps-phpcaptcha\": [\n        \"cpe:2.3:a:ps_phpcaptcha_wp_project:ps_phpcaptcha_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ptypeconverter\": [\n        \"cpe:2.3:a:briandgoad:ptypeconverter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"publish-post-email-notification\": [\n        \"cpe:2.3:a:i13websolution:wordpress_publish_post_email_notification:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"publish-to-schedule\": [\n        \"cpe:2.3:a:publish_to_schedule_project:publish_to_schedule:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pubsubhubbub\": [\n        \"cpe:2.3:a:pubsubhubbub:websub:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pure-chat\": [\n        \"cpe:2.3:a:purechat:pure_chat:*:*:*:*:*:*:*:*\"\n      ],\n      \"pure-css-circle-progress-bar\": [\n        \"cpe:2.3:a:shafayat:pure_css_circle_progress_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"purple-xmls-google-product-feed-for-woocommerce\": [\n        \"cpe:2.3:a:dpl:product_feed_on_woocommerce_for_google\\\\,_awin\\\\,_shareasale\\\\,_bing\\\\,_and_more:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"push-notification-by-feedify\": [\n        \"cpe:2.3:a:feedify:web_push_notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"push-notifications-for-wp\": [\n        \"cpe:2.3:a:delitestudio:push_notifications_for_wordpress:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"pwa-for-wp\": [\n        \"cpe:2.3:a:magazine3:pwa_for_wp_\\\\\\u0026_amp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pz-frontend-manager\": [\n        \"cpe:2.3:a:projectzealous:pz_frontend_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pz-linkcard\": [\n        \"cpe:2.3:a:popozure:pz-linkcard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"q2w3-post-order\": [\n        \"cpe:2.3:a:q2w3:q2w3_post_order:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qa-heatmap-analytics\": [\n        \"cpe:2.3:a:quarka:qa_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qi-addons-for-elementor\": [\n        \"cpe:2.3:a:qodeinteractive:qi_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qi-blocks\": [\n        \"cpe:2.3:a:qodeinteractive:qi_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qode-essential-addons\": [\n        \"cpe:2.3:a:qodeinteractive:qode_essential_addons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:qodeinteractive:qode_essential_addons:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"qr-code-tag\": [\n        \"cpe:2.3:a:spreendigital:qr_code_tag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qr-redirector\": [\n        \"cpe:2.3:a:qr_redirector_project:qr_redirector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qr-twitter-widget\": [\n        \"cpe:2.3:a:qrokes:qr_twitter_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qtranslate-slug\": [\n        \"cpe:2.3:a:qtranslate_slug_project:qtranslate_slug:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qtranslate-x\": [\n        \"cpe:2.3:a:qtranslate_x_project:qtranslate_x:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qubely\": [\n        \"cpe:2.3:a:themeum:qubely:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"querlo-chatbots\": [\n        \"cpe:2.3:a:querlo:chatbot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-adsense-reloaded\": [\n        \"cpe:2.3:a:wpquads:ads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-chat\": [\n        \"cpe:2.3:a:quick_chat_project:quick_chat:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:techytalk:quick_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-code\": [\n        \"cpe:2.3:a:gwycon:quick_code:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-contact-form\": [\n        \"cpe:2.3:a:fullworksplugins:quick_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-edit-template-link\": [\n        \"cpe:2.3:a:template_debugger_project:template_debugger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-event-manager\": [\n        \"cpe:2.3:a:fullworksplugins:quick_event_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-interest-slider\": [\n        \"cpe:2.3:a:quick-plugins:loan_repayment_calculator_and_application_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-pagepost-redirect-plugin\": [\n        \"cpe:2.3:a:anadnet:quick_page\\\\/post_redirect_plugin:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:quick_page\\\\/post_redirect_project:quick_page\\\\/post_redirect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-paypal-payments\": [\n        \"cpe:2.3:a:fullworksplugins:quick_paypal_payments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-restaurant-menu\": [\n        \"cpe:2.3:a:thingsforrestaurants:quick_restaurant_reservations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-restaurant-reservations\": [\n        \"cpe:2.3:a:thingsforrestaurants:quick_restaurant_reservations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quick-subscribe\": [\n        \"cpe:2.3:a:quick_subscribe_project:quick_subscribe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quickswish\": [\n        \"cpe:2.3:a:hasthemes:quickswish:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quillforms\": [\n        \"cpe:2.3:a:mdmag:quill_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quiz-expert\": [\n        \"cpe:2.3:a:wepupil:quiz_expert_-_easy_quiz_maker\\\\,_exam_and_test_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quiz-maker\": [\n        \"cpe:2.3:a:ays-pro:quiz_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quiz-master-next\": [\n        \"cpe:2.3:a:expresstech:quiz_and_survey_master:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:quizandsurveymaster:quiz_and_survey_master:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quiz-tool-lite\": [\n        \"cpe:2.3:a:quiz_tool_lite_project:quiz_tool_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quizlord\": [\n        \"cpe:2.3:a:vms-studio:quizlord:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quotes-and-tips\": [\n        \"cpe:2.3:a:bestwebsoft:quotes_and_tips:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quotes-collection\": [\n        \"cpe:2.3:a:quotes_collection_project:quotes_collection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quotes-for-woocommerce\": [\n        \"cpe:2.3:a:technovama:quotes_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quotes-llama\": [\n        \"cpe:2.3:a:quotes_llama_project:quotes_llama:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"quttera-web-malware-scanner\": [\n        \"cpe:2.3:a:quttera:quttera_web_malware_scanner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qwiz-online-quizzes-and-flashcards\": [\n        \"cpe:2.3:a:qwizcards_project:qwizcards:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"qyrr-code\": [\n        \"cpe:2.3:a:patrickposner:qyrr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rabbit-loader\": [\n        \"cpe:2.3:a:yoginetwork:rabbitloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"radio-buttons-for-taxonomies\": [\n        \"cpe:2.3:a:radio_buttons_for_taxonomies_project:radio_buttons_for_taxonomies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"radio-forge\": [\n        \"cpe:2.3:a:radioforge:radio_forge_muses_player_with_skins:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"radio-player\": [\n        \"cpe:2.3:a:softlabbd:radio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rafflepress\": [\n        \"cpe:2.3:a:rafflepress:rafflepress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:seedprod:rafflepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"random-banner\": [\n        \"cpe:2.3:a:buffercode:random_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"randomize\": [\n        \"cpe:2.3:a:javik:randomize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"randomtext\": [\n        \"cpe:2.3:a:random_text_project:random_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rapid-cache\": [\n        \"cpe:2.3:a:megaoptim:rapid_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rara-one-click-demo-import\": [\n        \"cpe:2.3:a:rarathemes:rara_one_click_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rate-my-post\": [\n        \"cpe:2.3:a:blazzdev:rate_my_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rate-star-review\": [\n        \"cpe:2.3:a:videowhisper:rate_star_review:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rating-bws\": [\n        \"cpe:2.3:a:bestwebsoft:rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rating-widget\": [\n        \"cpe:2.3:a:rating-widget:ratingwidget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ratings-shorttags\": [\n        \"cpe:2.3:a:moc:review_ratings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ravpage\": [\n        \"cpe:2.3:a:matiskiba:ravpage:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ravpage_project:ravpage:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"raygun4wp\": [\n        \"cpe:2.3:a:raygun:raygun4wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rays-grid\": [\n        \"cpe:2.3:a:rays_grid_project:rays_grid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rb-internal-links\": [\n        \"cpe:2.3:a:rb_internal_links_project:rb_internal_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rduplicator\": [\n        \"cpe:2.3:a:wpspeedx:rduplicator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"re-attacher\": [\n        \"cpe:2.3:a:bestwebsoft:re-attacher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"react-webcam\": [\n        \"cpe:2.3:a:react_webcam_project:react_webcam:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reaction-buttons\": [\n        \"cpe:2.3:a:jakob42:reaction_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"read-and-understood\": [\n        \"cpe:2.3:a:read_and_understood_project:read_and_understood:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"read-more-without-refresh\": [\n        \"cpe:2.3:a:8web:read_more_without_refresh:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-cookie-banner\": [\n        \"cpe:2.3:a:devowl:wordpress_real_cookie_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-estate-manager\": [\n        \"cpe:2.3:a:webcodingplace:real_estate_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-kit\": [\n        \"cpe:2.3:a:real.kit_project:real.kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-media-library-lite\": [\n        \"cpe:2.3:a:devowl:real_media_library:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:devowl:wordpress_real_media_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-time-auto-find-and-replace\": [\n        \"cpe:2.3:a:codesolz:better_find_and_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real-time-find-and-replace\": [\n        \"cpe:2.3:a:infolific:real-time_find_and_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"real3d-flipbook-lite\": [\n        \"cpe:2.3:a:creativeinteractivemedia:real3d_flipbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"realia\": [\n        \"cpe:2.3:a:pragmaticmates:realia:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"really-simple-google-tag-manager\": [\n        \"cpe:2.3:a:hasthemes:really_simple_google_tag_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"realty\": [\n        \"cpe:2.3:a:bestwebsoft:realty:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"realty-workstation\": [\n        \"cpe:2.3:a:realty_workstation:realty_workstation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rearrange-woocommerce-products\": [\n        \"cpe:2.3:a:rearrange_woocommerce_products_project:rearrange_woocommerce_products:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recall-products\": [\n        \"cpe:2.3:a:recall-products_project:recall-products:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recaptcha-jetpack\": [\n        \"cpe:2.3:a:bozdoz:recaptcha_jetpack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recent-backups\": [\n        \"cpe:2.3:a:recent-backups_project:recent-backups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recent-posts-slider\": [\n        \"cpe:2.3:a:recent_posts_slider_project:recent_posts_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recently-viewed-products\": [\n        \"cpe:2.3:a:rajarora795:recently_viewed_products:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recipe-card-blocks-by-wpzoom\": [\n        \"cpe:2.3:a:wpzoom:recipe_card_blocks_for_gutenberg_\\\\\\u0026_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reciply\": [\n        \"cpe:2.3:a:reciply_project:reciply:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recover-wc-abandoned-cart\": [\n        \"cpe:2.3:a:sktthemes:recover_abandoned_cart_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"recurring-donation\": [\n        \"cpe:2.3:a:wp-ecommerce:recurring_paypal_donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redi-restaurant-reservation\": [\n        \"cpe:2.3:a:catzsoft:redi_restaurant_reservation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redirect-404-error-page-to-homepage-or-custom-page\": [\n        \"cpe:2.3:a:wpvibes:redirect_404_error_page_to_homepage_or_custom_page_with_logs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redirect-404-to-parent\": [\n        \"cpe:2.3:a:mooveagency:redirect_404_to_parent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redirect-redirection\": [\n        \"cpe:2.3:a:inisev:redirection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redirection\": [\n        \"cpe:2.3:a:redirection:redirection:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:redirection_project:redirection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"redux-framework\": [\n        \"cpe:2.3:a:redux:gutenberg_template_library_\\\\\\u0026_redux_framework:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"refer-a-friend-widget-for-wp\": [\n        \"cpe:2.3:a:invitebox:invitebox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reflex-gallery\": [\n        \"cpe:2.3:a:reflex_gallery_project:reflex_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"regenerate-thumbnails\": [\n        \"cpe:2.3:a:regenerate_thumbnails_project:regenerate_thumbnails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"registrations-for-the-events-calendar\": [\n        \"cpe:2.3:a:roundupwp:registrations_for_the_events_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"related-posts-for-wp\": [\n        \"cpe:2.3:a:never5:related_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"related-youtube-videos\": [\n        \"cpe:2.3:a:meomundo:related_youtube_videos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"relevanssi\": [\n        \"cpe:2.3:a:relevanssi:relevanssi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"relevant\": [\n        \"cpe:2.3:a:bestwebsoft:relevant:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:relevant_-_related_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"remember-me-controls\": [\n        \"cpe:2.3:a:coffee2code:remember_me_controls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"remote-content-shortcode\": [\n        \"cpe:2.3:a:doublesharp:remote_content_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"remove-footer-credit\": [\n        \"cpe:2.3:a:wpchill:remove_footer_credit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"remove-schema\": [\n        \"cpe:2.3:a:websitescanner:remove_schema:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"removehide-author-date-category-like-entry-meta\": [\n        \"cpe:2.3:a:remove\\\\/hide_author\\\\,_date\\\\,_category_like_entry-meta_project:remove\\\\/hide_author\\\\,_date\\\\,_category_like_entry-meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rename-media-files\": [\n        \"cpe:2.3:a:milandinic:rename_media_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rename-wp-login\": [\n        \"cpe:2.3:a:rename_wp-login_project:rename_wp-login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rencontre\": [\n        \"cpe:2.3:a:boiteasite:download_rencontre_-_dating_site:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:boiteasite:rencontre:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rentpress\": [\n        \"cpe:2.3:a:30lines:rentpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"republish-old-posts\": [\n        \"cpe:2.3:a:mariosalexandrou:republish_old_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"request-a-quote\": [\n        \"cpe:2.3:a:emarketdesign:request_a_quote:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"resads\": [\n        \"cpe:2.3:a:web-mv:resads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rescue-shortcodes\": [\n        \"cpe:2.3:a:rescuethemes:rescue_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"resend-welcome-email\": [\n        \"cpe:2.3:a:resend_welcome_email_project:resend_welcome_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reservation-studio-widget\": [\n        \"cpe:2.3:a:pvmg:reservation.studio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reset\": [\n        \"cpe:2.3:a:smartzminds:reset:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"resize-at-upload-plus\": [\n        \"cpe:2.3:a:resize_at_upload_plus_project:resize_at_upload_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"resmushit-image-optimizer\": [\n        \"cpe:2.3:a:resmush.it:resmush.it_image_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-add-ons\": [\n        \"cpe:2.3:a:cyberchimps:gutenberg_\\\\\\u0026_elementor_templates_importer_for_responsive:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cyberchimps:responsive_addons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:cyberchimps:responsive_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-addons-for-elementor\": [\n        \"cpe:2.3:a:cyberchimps:responsive_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-block-editor-addons\": [\n        \"cpe:2.3:a:cyberchimps:responsive_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-column-widgets\": [\n        \"cpe:2.3:a:michaeluno:responsive_column_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-coming-soon\": [\n        \"cpe:2.3:a:wpshopmart:coming_soon_page_\\\\\\u0026_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-coming-soon-page\": [\n        \"cpe:2.3:a:responsive_coming_soon_page_project:responsive_coming_soon_page:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:weblizar:responsive_coming_soon_\\\\\\u0026_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-css-editor\": [\n        \"cpe:2.3:a:wpwox:responsive_css_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-gallery-grid\": [\n        \"cpe:2.3:a:bdwm:responsive_gallery_grid:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:responsive_gallery_grid_project:responsive_gallery_grid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-header-image-slider\": [\n        \"cpe:2.3:a:wponlinesupport:wp_responsive_header_image_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-horizontal-vertical-and-accordion-tabs\": [\n        \"cpe:2.3:a:i13websolution:wp_responsive_tabs:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:i13websolution:wp_responsive_tabs_horizontal_vertical_and_accordion_tabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-lightbox\": [\n        \"cpe:2.3:a:dfactory:responsive_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-lightbox2\": [\n        \"cpe:2.3:a:noorsplugin:responsive_lightbox2:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-menu\": [\n        \"cpe:2.3:a:expresstech:responsive_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-tabs\": [\n        \"cpe:2.3:a:wpdarko:responsive_tabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive-vector-maps\": [\n        \"cpe:2.3:a:thinkupthemes:responsive_vector_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restaurant-cafe-addon-for-elementor\": [\n        \"cpe:2.3:a:nicheaddons:restaurant_\\\\\\u0026_cafe_addon_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restaurant-pickup-delivery-dine-in\": [\n        \"cpe:2.3:a:byconsole:pickup_\\\\|_delivery_\\\\|_dine-in_date_time:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restaurant-reservations\": [\n        \"cpe:2.3:a:fivestarplugins:five_star_restaurant_reservations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restrict-content\": [\n        \"cpe:2.3:a:liquidweb:restrict_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restrict-for-elementor\": [\n        \"cpe:2.3:a:tickera:restrict_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restrict-user-access\": [\n        \"cpe:2.3:a:dev.institute:restrict_user_access:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restrict-usernames-emails-characters\": [\n        \"cpe:2.3:a:benaceur-php:restrict_usernames_emails_characters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restricted-content\": [\n        \"cpe:2.3:a:tickera:restrict:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restricted-site-access\": [\n        \"cpe:2.3:a:10up:restricted_site_access:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restropress\": [\n        \"cpe:2.3:a:magnigenie:restropress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"resume-builder\": [\n        \"cpe:2.3:a:resumebuilder:resume_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reusable-blocks-extended\": [\n        \"cpe:2.3:a:jeanbaptisteaudras:reusable_blocks_extended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"review-buddypress-groups\": [\n        \"cpe:2.3:a:wbcomdesigns:buddypress_group_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"review-schema\": [\n        \"cpe:2.3:a:radiustheme:review_schema:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reviews-feed\": [\n        \"cpe:2.3:a:smashballoon:reviews_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reviews-plus\": [\n        \"cpe:2.3:a:implecode:reviews_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"reviewx\": [\n        \"cpe:2.3:a:wpdeveloper:reviewx:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"revision-manager-tmc\": [\n        \"cpe:2.3:a:jetplugs:revision_manager_tmc:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"revolut-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:revolut:revolut_gateway_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rewp\": [\n        \"cpe:2.3:a:remilia:re\\\\:wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rezgo\": [\n        \"cpe:2.3:a:rezgo:rezgo_online_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rich-counter\": [\n        \"cpe:2.3:a:saschart:rich_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rich-event-timeline\": [\n        \"cpe:2.3:a:rich-web:event_timeline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rich-reviews\": [\n        \"cpe:2.3:a:starfish:rich_review:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rich-table-of-content\": [\n        \"cpe:2.3:a:croover:rich_table_of_contents:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rife-elementor-extensions\": [\n        \"cpe:2.3:a:apollo13themes:rife_elementor_extensions_\\\\\\u0026_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rimons-twitter-widget\": [\n        \"cpe:2.3:a:rimons_twitter_widget_project:rimons_twitter_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rise-blocks\": [\n        \"cpe:2.3:a:eaglevisionit:rise_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"risk-warning-bar\": [\n        \"cpe:2.3:a:aliazlan:risk_warning_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rk-responsive-contact-form\": [\n        \"cpe:2.3:a:rkdownload:rk-responsive-contact-form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"robo-gallery\": [\n        \"cpe:2.3:a:robogallery:robo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rock-convert\": [\n        \"cpe:2.3:a:rockcontent:rock_convert:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rocket-font\": [\n        \"cpe:2.3:a:qwerty23:rocket_font:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rocket-maintenance-mode\": [\n        \"cpe:2.3:a:wpexperts:rocket_maintenance_mode_\\\\\\u0026_coming_soon_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"role-scoper\": [\n        \"cpe:2.3:a:role_scoper_project:role_scoper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rometheme-for-elementor\": [\n        \"cpe:2.3:a:rometheme:romethemekit_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"roomcloud\": [\n        \"cpe:2.3:a:roomcloud:roomcloud:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rotatingtweets\": [\n        \"cpe:2.3:a:martintod:rotating_tweets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rough-chart\": [\n        \"cpe:2.3:a:rough_chart_project:rough_chart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rover-idx\": [\n        \"cpe:2.3:a:roveridx:rover_idx:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"royal-elementor-addons\": [\n        \"cpe:2.3:a:royal-elementor-addons:royal_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rsfirewall\": [\n        \"cpe:2.3:a:rsjoomla:rsfirewall\\\\!:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rss-feed-post-generator-echo\": [\n        \"cpe:2.3:a:coderevolution:echo_rss_feed_post_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rss-feed-widget\": [\n        \"cpe:2.3:a:fahadmahmood:rss_feed_widget:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:rss_feed_widget_project:rss_feed_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rss-for-yandex-turbo\": [\n        \"cpe:2.3:a:wpuslugi:rss_for_yandex_turbo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rsvp\": [\n        \"cpe:2.3:a:swimordiesoftware:rsvp:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:rsvp_and_event_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rsvpmaker\": [\n        \"cpe:2.3:a:carrcommunications:rsvpmaker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rsvpmaker-excel\": [\n        \"cpe:2.3:a:carrcommunications:rsvpmaker_excel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rt-easy-builder-advanced-addons-for-elementor\": [\n        \"cpe:2.3:a:risethemes:rt_easy_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rt-prettyphoto\": [\n        \"cpe:2.3:a:royaltechbd:royal_prettyphoto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ruby-help-desk\": [\n        \"cpe:2.3:a:wpruby:ruby_help_desk:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rucy\": [\n        \"cpe:2.3:a:rucy_project:rucy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rustolat\": [\n        \"cpe:2.3:a:rus-to-lat_project:rus-to-lat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ruven-toolkit\": [\n        \"cpe:2.3:a:ruven-toolkit_project:ruven-toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"s2member\": [\n        \"cpe:2.3:a:wpsharks:s2member:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"s3bubble-amazon-s3-audio-streaming\": [\n        \"cpe:2.3:a:s3bubble:s3bubble-amazon-s3-audio-streaming:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"s3bubble-amazon-s3-html-5-video-with-adverts\": [\n        \"cpe:2.3:a:s3bubble:s3bubble-amazon-s3-html-5-video-with-adverts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"saan-world-clock\": [\n        \"cpe:2.3:a:saan:world_clock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"safe-ai-malware-protection-for-wp\": [\n        \"cpe:2.3:a:wpmessiah:safe_ai_malware_protection_for_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"safe-editor\": [\n        \"cpe:2.3:a:kodebyraaet:safe_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"safe-svg\": [\n        \"cpe:2.3:a:10up:safe_svg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sagepay-server-gateway-for-woocommerce\": [\n        \"cpe:2.3:a:patsatech:sagepay_server_gateway_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sailthru-triggermail\": [\n        \"cpe:2.3:a:jontasc:sailthru_triggermail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"salat-times\": [\n        \"cpe:2.3:a:salat_times_project:salat_times:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sales-page-addon\": [\n        \"cpe:2.3:a:nicheaddons:sales_page_addon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"salesmanago\": [\n        \"cpe:2.3:a:salesmanago:salesmanago:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"salon-booking-system\": [\n        \"cpe:2.3:a:salonbookingsystem:salon_booking_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sassy-social-share\": [\n        \"cpe:2.3:a:heateor:sassy_social_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"save-as-pdf-by-pdfcrowd\": [\n        \"cpe:2.3:a:pdfcrowd:save_as_pdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"save-grab\": [\n        \"cpe:2.3:a:neobie:grab_\\\\\\u0026_save:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sayfa-sayac\": [\n        \"cpe:2.3:a:dmry:sayfa_sayac:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sb-child-list\": [\n        \"cpe:2.3:a:sean-barton:sb_child_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sb-elementor-contact-form-db\": [\n        \"cpe:2.3:a:sean-barton:elementor_contact_form_db:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webacetechs:contact_form_db_-_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"schedule-posts-calendar\": [\n        \"cpe:2.3:a:toolstack:schedule_posts_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scheduled-announcements-widget\": [\n        \"cpe:2.3:a:nlb-creations:scheduled_announcements_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"schedulicity-online-appointment-booking\": [\n        \"cpe:2.3:a:schedulicity:schedulicity:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"schema-and-structured-data-for-wp\": [\n        \"cpe:2.3:a:magazine3:schema_\\\\\\u0026_structured_data_for_wp_\\\\\\u0026_amp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"schema-app-structured-data-for-schemaorg\": [\n        \"cpe:2.3:a:schemaapp:schema_app_structured_data:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"school-management-system\": [\n        \"cpe:2.3:a:weblizar:school_management_-_education_\\\\\\u0026_learning_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"schreikasten\": [\n        \"cpe:2.3:a:schreikasten_project:schreikasten:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scoutnet-kalender\": [\n        \"cpe:2.3:a:scoutnet:kalender:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scratch-win-giveaways-for-website-facebook\": [\n        \"cpe:2.3:a:akashmalik:scratch_\\\\\\u0026_win:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:appsmav:scratch_\\\\\\u0026_win:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scribble-maps\": [\n        \"cpe:2.3:a:scribblemaps:scribble_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scriptless-social-sharing\": [\n        \"cpe:2.3:a:robincornett:scriptless_social_sharing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scroll-post-excerpt\": [\n        \"cpe:2.3:a:gopiplus:scroll_post_excerpt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"scw-seat-reservation\": [\n        \"cpe:2.3:a:smartcmsmarket:advance_seat_reservation_management_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"se-html5-album-audio-player\": [\n        \"cpe:2.3:a:se_html5_album_audio_player_project:se_html5_album_audio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seamless-donations\": [\n        \"cpe:2.3:a:seamless_donations_project:seamless_donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-analytics\": [\n        \"cpe:2.3:a:cornelraiu:wp_search_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-and-replace\": [\n        \"cpe:2.3:a:wp-media:search_\\\\\\u0026_replace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-everything\": [\n        \"cpe:2.3:a:search_everything_project:search_everything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-exclude\": [\n        \"cpe:2.3:a:search_exclude_project:search_exclude:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-filter\": [\n        \"cpe:2.3:a:codeamp:search_\\\\\\u0026_filter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:search_\\\\\\u0026_filter_project:search_\\\\\\u0026_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-meter\": [\n        \"cpe:2.3:a:search_meter_project:search_meter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"search-with-typesense\": [\n        \"cpe:2.3:a:codemanas:search_with_typesense:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"searchiq\": [\n        \"cpe:2.3:a:searchiq:searchiq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"searchpro\": [\n        \"cpe:2.3:a:berqier:berqwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"searchterms-tagging-2\": [\n        \"cpe:2.3:a:seo_searchterms_tagging_2_project:seo_searchterms_tagging_2:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"searchwp-live-ajax-search\": [\n        \"cpe:2.3:a:searchwp:searchwp_live_ajax_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"secondary-title\": [\n        \"cpe:2.3:a:secondary_title_project:secondary_title:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"secupress\": [\n        \"cpe:2.3:a:secupress:secupress:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"secure-copy-content-protection\": [\n        \"cpe:2.3:a:ays-pro:secure_copy_content_protection_and_content_locking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"secure-downloads\": [\n        \"cpe:2.3:a:wpbookingcalendar:secure_downloads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"secure-file-manager\": [\n        \"cpe:2.3:a:themexa:secure_file_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"secure-files\": [\n        \"cpe:2.3:a:wp-plugins:secure_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"securemoz-security-audit\": [\n        \"cpe:2.3:a:securemoz:security_audit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"securimage-wp-fixed\": [\n        \"cpe:2.3:a:securimage-wp-fixed_project:securimage-wp-fixed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"security-force\": [\n        \"cpe:2.3:a:hedge3:crypto_and_defi_widgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"security-malware-firewall\": [\n        \"cpe:2.3:a:cleantalk:security_\\\\\\u0026_malware_scan:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seed-social\": [\n        \"cpe:2.3:a:seedwebs:seed_social:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"selar-co-widget\": [\n        \"cpe:2.3:a:kendysond:selar.co_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"select-all-categories-and-taxonomies-change-checkbox-to-radio-buttons\": [\n        \"cpe:2.3:a:mooveagency:select_all_categories_and_taxonomies\\\\,_change_checkbox_to_radio_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"selection-lite\": [\n        \"cpe:2.3:a:merkulove:selection_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sell-downloads\": [\n        \"cpe:2.3:a:codepeople:sell_downloads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sell-media\": [\n        \"cpe:2.3:a:graphpaperpress:sell_media:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sellkit\": [\n        \"cpe:2.3:a:artbees:sellkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"send-email-only-on-reply-to-my-comment\": [\n        \"cpe:2.3:a:yasirwazir:send_email_only_on_reply_to_my_comment:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"send-emails-with-mandrill\": [\n        \"cpe:2.3:a:millermedia:mandrill:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"send-users-email\": [\n        \"cpe:2.3:a:sumanbhattarai:send_users_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sender\": [\n        \"cpe:2.3:a:bestwebsoft:sender:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sendgrid-email-delivery-simplified\": [\n        \"cpe:2.3:a:sendgrid:sendgrid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sendit\": [\n        \"cpe:2.3:a:sendit_project:sendit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sendpress\": [\n        \"cpe:2.3:a:pressified:sendpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sendpulse-email-marketing-newsletter\": [\n        \"cpe:2.3:a:sendpulse:sendpulse_email_marketing_newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sendpulse-web-push\": [\n        \"cpe:2.3:a:sendpulse:free_web_push:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sensei-lms\": [\n        \"cpe:2.3:a:automattic:sensei_lms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-301-meta\": [\n        \"cpe:2.3:a:seo-301-meta_project:seo-301-meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-backlinks\": [\n        \"cpe:2.3:a:seo_backlinks_project:seo_backlinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-booster\": [\n        \"cpe:2.3:a:cleverplugins:seo_booster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-by-10web\": [\n        \"cpe:2.3:a:10web:seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-by-rank-math\": [\n        \"cpe:2.3:a:rankmath:seo:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"seo-redirection\": [\n        \"cpe:2.3:a:clogica:seo_redirection:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:clogica:seo_redirection_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seo-slider\": [\n        \"cpe:2.3:a:seothemes:seo_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seos-contact-form\": [\n        \"cpe:2.3:a:seosthemes:seos_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seraphinite-accelerator\": [\n        \"cpe:2.3:a:s-sols:seraphinite_accelerator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seraphinite-post-docx-source\": [\n        \"cpe:2.3:a:s-sols:seraphinite_post_.docx_source:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"serial-codes-generator-and-validator\": [\n        \"cpe:2.3:a:nikolov:serial_codes_generator_and_validator_with_woocommerce_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seriously-simple-podcasting\": [\n        \"cpe:2.3:a:castos:seriously_simple_podcasting:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seriously-simple-stats\": [\n        \"cpe:2.3:a:castos:seriously_simple_stats:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sermon-browser\": [\n        \"cpe:2.3:a:sermon_browser_project:sermon_browser:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sermone-online-sermons-management\": [\n        \"cpe:2.3:a:bearthemes:sermon\\\\'e_-_sermons_online:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"server-status-by-hostnameip\": [\n        \"cpe:2.3:a:xpertsol:server_status_by_hostname\\\\/ip:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"service-area-postcode-checker\": [\n        \"cpe:2.3:a:plustime:service_area_postcode_checker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"seur\": [\n        \"cpe:2.3:a:seur_oficial_project:seur_oficial:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sexy-contact-form\": [\n        \"cpe:2.3:a:creative-solutions:creative_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sg-security\": [\n        \"cpe:2.3:a:siteground:security_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shapepress-dsgvo\": [\n        \"cpe:2.3:a:legalweb:wp_dsgvo_tools:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:shapepress:wp_dsgvo_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sharable-password-protected-posts\": [\n        \"cpe:2.3:a:fabiantodt:private_post_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"share-buttons\": [\n        \"cpe:2.3:a:artlosk:social_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"share-on-diaspora\": [\n        \"cpe:2.3:a:share_on_diaspora_project:share_on_diaspora:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"share-this-image\": [\n        \"cpe:2.3:a:wp-unit:share_this_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shareaholic\": [\n        \"cpe:2.3:a:shareaholic:shareaholic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sharebar\": [\n        \"cpe:2.3:a:sharebar_project:sharebar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shared-files\": [\n        \"cpe:2.3:a:tammersoft:shared_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shariff\": [\n        \"cpe:2.3:a:datenverwurstungszentrale:shariff_wrapper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sheets-to-wp-table-live-sync\": [\n        \"cpe:2.3:a:wppool:sheets_to_wp_table_live_sync:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shibboleth\": [\n        \"cpe:2.3:a:shibboleth_project:shibboleth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shiftcontroller\": [\n        \"cpe:2.3:a:plainware:shiftcontroller:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shiftnav-responsive-mobile-menu\": [\n        \"cpe:2.3:a:sevenspark:shiftnav:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shiny-buttons\": [\n        \"cpe:2.3:a:wpeden:shiny_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shipengine-shipping-quotes\": [\n        \"cpe:2.3:a:eniture:shipengine_shipping_quotes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shopello\": [\n        \"cpe:2.3:a:shopello_api_project:shopello_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shopengine\": [\n        \"cpe:2.3:a:wpmet:shopengine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shopp\": [\n        \"cpe:2.3:a:ingenesis:shopp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shopping-pages\": [\n        \"cpe:2.3:a:cmscommander:wp_shopping_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-addons\": [\n        \"cpe:2.3:a:oxilab:shortcode_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-factory\": [\n        \"cpe:2.3:a:wpmadeasy:shortcode_factory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-gallery-for-matterport-showcase\": [\n        \"cpe:2.3:a:mpembed:wp_matterport_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-imdb\": [\n        \"cpe:2.3:a:kemalyazici:shortcode_imdb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-menu\": [\n        \"cpe:2.3:a:shortcode_menu_project:shortcod_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-to-display-post-and-user-data\": [\n        \"cpe:2.3:a:vegacorp:display_custom_fields_in_the_frontend_-_post_and_user_profile_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcode-variables\": [\n        \"cpe:2.3:a:yeken:snippet_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcodes-anywhere\": [\n        \"cpe:2.3:a:happyplugins:shortcodes_anywhere:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcodes-finder\": [\n        \"cpe:2.3:a:scribit:shortcodes_finder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcodes-for-amp-web-stories-and-elementor-widget\": [\n        \"cpe:2.3:a:coolplugins:web_stories_widgets_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcodes-ui\": [\n        \"cpe:2.3:a:bainternet:shortcodes_ui:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortcodes-ultimate\": [\n        \"cpe:2.3:a:getshortcodes:shortcodes_ultimate:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:getshortcodes:shortcodes_ultimate:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:getshortcodes:shortcodes_ultimate:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"shortcut-macros\": [\n        \"cpe:2.3:a:shortcut_macros_project:shortcut_macros:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shorten-url\": [\n        \"cpe:2.3:a:kaizencoders:short_url:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortpixel-adaptive-images\": [\n        \"cpe:2.3:a:shortpixel:shortpixel_adaptive_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shortpixel-image-optimiser\": [\n        \"cpe:2.3:a:shortpixel:image_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"show-all-comments-in-one-page\": [\n        \"cpe:2.3:a:appjetty:show_all_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"show-posts\": [\n        \"cpe:2.3:a:weavertheme:weaver_show_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"show-website-content-in-wordpress-page-or-post\": [\n        \"cpe:2.3:a:matteoenna:website_content_in_page_or_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"si-contact-form\": [\n        \"cpe:2.3:a:fast_secure_contact_form_project:fast_secure_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"side-cart-woocommerce\": [\n        \"cpe:2.3:a:xootix:side_cart_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"side-menu\": [\n        \"cpe:2.3:a:wow-estore:side_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"side-menu-lite\": [\n        \"cpe:2.3:a:wow-company:side_menu_lite:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wow-estore:side_menu:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"sidebar-adder\": [\n        \"cpe:2.3:a:add_sidebar_project:add_sidebar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sidebar-manager\": [\n        \"cpe:2.3:a:brainstormforce:lightweight_sidebar_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sideblog\": [\n        \"cpe:2.3:a:sideblog_project:sideblog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sight\": [\n        \"cpe:2.3:a:codesupply:sight:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sign-up-sheets\": [\n        \"cpe:2.3:a:fetchdesigns:sign-up_sheets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"similar-posts\": [\n        \"cpe:2.3:a:shareaholic:similar_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"similarity\": [\n        \"cpe:2.3:a:davidjmiller:similarity:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-301-redirects-addon-bulk-uploader\": [\n        \"cpe:2.3:a:webcraftic:simple_301_redirects-addon-bulk_uploader:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webcraftic:simple_301_redirects:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-add-pages-or-posts\": [\n        \"cpe:2.3:a:mijnpress:simple_add_pages_or_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-ads-manager\": [\n        \"cpe:2.3:a:simple_ads_manager_project:simple_ads_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-ajax-chat\": [\n        \"cpe:2.3:a:plugin-planet:simple_ajax_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-al-slider\": [\n        \"cpe:2.3:a:alexdtn:simple_al_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-author-box\": [\n        \"cpe:2.3:a:webfactoryltd:simple_author_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-banner\": [\n        \"cpe:2.3:a:simple_banner_project:simple_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-basic-contact-form\": [\n        \"cpe:2.3:a:megnicholas:clean_and_simple_contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpkube:simple_basic_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-behace-portfolio\": [\n        \"cpe:2.3:a:simple-behace-portfolio_project:simple-behace-portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-bitcoin-faucets\": [\n        \"cpe:2.3:a:simple_bitcoin_faucets_project:simple_bitcoin_faucets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-buttons-creator\": [\n        \"cpe:2.3:a:robbychen:simple_buttons_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-calendar-for-elementor\": [\n        \"cpe:2.3:a:migaweb:simple_calendar_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-catalogue\": [\n        \"cpe:2.3:a:fb-creations:simple_catalogue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-certain-time-to-show-content\": [\n        \"cpe:2.3:a:elementengage:simple_certain_time_to_show_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-cloudflare-turnstile\": [\n        \"cpe:2.3:a:replywp:simple_cloudfare_turnstile:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-cod-fee-for-woocommerce\": [\n        \"cpe:2.3:a:83pixel:simple_cod_fees_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-code-insert-shortcode\": [\n        \"cpe:2.3:a:lodelgeraldo:simple_code_insert_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-csv-xls-exporter\": [\n        \"cpe:2.3:a:shambix:simple_csv\\\\/xls_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-custom-author-profiles\": [\n        \"cpe:2.3:a:usbmemorydirect:simple_custom_author_profiles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-custom-post-order\": [\n        \"cpe:2.3:a:colorlib:simple_custom_post_order:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-custom-website-data\": [\n        \"cpe:2.3:a:custom_website_data_project:custom_website_data:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-download-button-shortcode\": [\n        \"cpe:2.3:a:halulu:simple-download-button-shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-download-counter\": [\n        \"cpe:2.3:a:plugin-planet:simple_download_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-download-monitor\": [\n        \"cpe:2.3:a:tipsandtricks-hq:simple_download_monitor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-e-commerce-shopping-cart\": [\n        \"cpe:2.3:a:simple-e-commerce-shopping-cart_project:simple-e-commerce-shopping-cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-embed-code\": [\n        \"cpe:2.3:a:davidartiss:code_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-event-planner\": [\n        \"cpe:2.3:a:press_tigers:simple_event_planner:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:presstigers:simple_event_planner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-events-calendar\": [\n        \"cpe:2.3:a:simple_events_calendar_project:simple_events_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-facebook-plugin\": [\n        \"cpe:2.3:a:illia:simple_like_page:*:*:*:*:*:*:*:*\"\n      ],\n      \"simple-fields\": [\n        \"cpe:2.3:a:simple_fields_project:simple_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-file-list\": [\n        \"cpe:2.3:a:simplefilelist:simple-file-list:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:simplefilelist:simple_file_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-form\": [\n        \"cpe:2.3:a:devsabbirahmed:simple_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-gallery-with-filter\": [\n        \"cpe:2.3:a:come2theweb:simple_gallery_with_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-history\": [\n        \"cpe:2.3:a:simple_history_project:simple_history:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-icons\": [\n        \"cpe:2.3:a:thememason:popular_brand_icons_-_simple_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-iframe\": [\n        \"cpe:2.3:a:simple_iframe_project:simple_iframe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-image-manipulator\": [\n        \"cpe:2.3:a:simple-image-manipulator_project:simple-image-manipulator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-image-popup-shortcode\": [\n        \"cpe:2.3:a:purvabathe:simple_image_popup_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-ip-ban\": [\n        \"cpe:2.3:a:ip_ban_project:ip_ban:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-job-board\": [\n        \"cpe:2.3:a:presstigers:simple_board_job:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:presstigers:simple_job_board:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-jwt-login\": [\n        \"cpe:2.3:a:simple_jwt_login_project:simple_jwt_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-ldap-login\": [\n        \"cpe:2.3:a:objectiv:simple_ldap_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-lightbox\": [\n        \"cpe:2.3:a:archetyped:simple_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-link-directory\": [\n        \"cpe:2.3:a:quantumcloud:simple_link_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-local-avatars\": [\n        \"cpe:2.3:a:10up:simple_local_avatars:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-login-log\": [\n        \"cpe:2.3:a:simplerealtytheme:simple_login_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-long-form\": [\n        \"cpe:2.3:a:ohmybox:simple_long_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-mail-address-encoder\": [\n        \"cpe:2.3:a:simple_mail_address_encoder_project:simple_mail_address_encoder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-map-no-api\": [\n        \"cpe:2.3:a:shaonback2:simple_map_no_api:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-matted-thumbnails\": [\n        \"cpe:2.3:a:devondev:simple_matted_thumbnails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-media-directory\": [\n        \"cpe:2.3:a:quantumcloud:simple_video_directory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-membership\": [\n        \"cpe:2.3:a:simple-membership-plugin:simple_membership:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-membership-wp-user-import\": [\n        \"cpe:2.3:a:simple-membership-plugin:simple_membership_wp_user_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-mobile-url-redirect\": [\n        \"cpe:2.3:a:ozette:simple_mobile_url_redirect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-page-access-restriction\": [\n        \"cpe:2.3:a:pluginsandsnippets:simple_page_access_restriction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-page-transition\": [\n        \"cpe:2.3:a:simple_page_transition_project:simple_page_transition:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-payment\": [\n        \"cpe:2.3:a:idokd:simple_payment:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-pdf-viewer\": [\n        \"cpe:2.3:a:simple_pdf_viewer_project:simple_pdf_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-photo-gallery\": [\n        \"cpe:2.3:a:tipsandtricks-hq:simple_photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-popup\": [\n        \"cpe:2.3:a:simple_popup_project:simple_popup:*:*:-:*:-:wordpress:*:*\"\n      ],\n      \"simple-popup-newsletter\": [\n        \"cpe:2.3:a:keszites:simple_popup_newsletter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-popup-plugin\": [\n        \"cpe:2.3:a:garrettgrimm:simple_popup_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-portfolio-gallery\": [\n        \"cpe:2.3:a:simple_portfolio_gallery_project:simple_portfolio_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-post\": [\n        \"cpe:2.3:a:nickmomrik:simple_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-posts-ticker\": [\n        \"cpe:2.3:a:sayandatta:simple_posts_ticker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-pricing-tables-vc-extension\": [\n        \"cpe:2.3:a:webdevocean:pricing_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-quotation\": [\n        \"cpe:2.3:a:sedlex:simple_quotation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-real-estate-pack-4\": [\n        \"cpe:2.3:a:simple_real_estate_pack_project:simple_real_estate_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-responsive-slider\": [\n        \"cpe:2.3:a:marcelotorres:simple_responsive_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-revisions-delete\": [\n        \"cpe:2.3:a:b-website:simple_revisions_delete:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-share-buttons-adder\": [\n        \"cpe:2.3:a:sharethis:simple_share_buttons_adder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:simplesharebuttons:simple_share_buttons_adder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-side-tab\": [\n        \"cpe:2.3:a:rumspeed:simple_side_tab:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-site-verify\": [\n        \"cpe:2.3:a:idoweb:simple_site_verify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-sitemap\": [\n        \"cpe:2.3:a:wpgoplugins:simple_sitemap:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"simple-slug-translate\": [\n        \"cpe:2.3:a:simple_slug_translate_project:simple_slug_translate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-social-buttons\": [\n        \"cpe:2.3:a:wpbrigade:simple_social_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-social-share\": [\n        \"cpe:2.3:a:perials:simple_social_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-sortsearch\": [\n        \"cpe:2.3:a:yukimichi:simple_sort\\\\\\u0026search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-spoiler\": [\n        \"cpe:2.3:a:webliberty:simple_spoiler:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-staff-list\": [\n        \"cpe:2.3:a:simple_staff_list_project:simple_staff_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-sticky-footer\": [\n        \"cpe:2.3:a:simple_sticky_footer_project:simple_sticky_footer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-student-result\": [\n        \"cpe:2.3:a:saadamin:simple_student_result:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:student_result_or_employee_database_project:student_result_or_employee_database:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-support-ticket-system\": [\n        \"cpe:2.3:a:support_ticket_system_project:support_ticket_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-table-manager\": [\n        \"cpe:2.3:a:topcode:simple_table_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-tags\": [\n        \"cpe:2.3:a:taxopress:taxopress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-testimonials-showcase\": [\n        \"cpe:2.3:a:presstigers:simple_testimonials_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-theme-options\": [\n        \"cpe:2.3:a:chrsinteractive:simple_tracking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-tweet\": [\n        \"cpe:2.3:a:wokamoto:simple_tweet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-urls\": [\n        \"cpe:2.3:a:getlasso:simple_urls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-video-embedder\": [\n        \"cpe:2.3:a:simple_video_embedder_project:simple_video_embedder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-yearly-archive\": [\n        \"cpe:2.3:a:simple_yearly_archive_project:simple_yearly_archive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simple-youtube-responsive\": [\n        \"cpe:2.3:a:simple_youtube_responsive_project:simple_youtube_responsive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplemap\": [\n        \"cpe:2.3:a:simplemap-plugin:simplemap_store_locator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplemodal-contact-form-smcf\": [\n        \"cpe:2.3:a:simplemodal_contact_form_project:simplemodal_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplepress\": [\n        \"cpe:2.3:a:simple-press:simple\\\\:press:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplesamlphp-authentication\": [\n        \"cpe:2.3:a:simplesamlphp_authentication_project:simplesamlphp_authentication:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplified-content\": [\n        \"cpe:2.3:a:oxil:simplified-content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simply-excerpts\": [\n        \"cpe:2.3:a:shooflysolutions:simply_excerpts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simply-exclude\": [\n        \"cpe:2.3:a:codehooligans:simply_exclude:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simply-gallery-block\": [\n        \"cpe:2.3:a:simplygallery:simply_gallery_blocks_with_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simply-schedule-appointments\": [\n        \"cpe:2.3:a:nsqua:simply_schedule_appointments:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:nsquared:simply_schedule_appointments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sina-extension-for-elementor\": [\n        \"cpe:2.3:a:sinaextra:sina_extension_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"single-post-exporter\": [\n        \"cpe:2.3:a:single_post_exporter_project:single_post_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"single-sign-on-client\": [\n        \"cpe:2.3:a:simple_sign_on_project:simple_sign_on:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"single-user-chat\": [\n        \"cpe:2.3:a:aakashbhagat:single_user_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sirv\": [\n        \"cpe:2.3:a:sirv:sirv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"site-editor\": [\n        \"cpe:2.3:a:siteeditor:site_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"site-mailer\": [\n        \"cpe:2.3:a:elementor:site_mailer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"site-offline\": [\n        \"cpe:2.3:a:freehtmldesigns:site_offline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"site-reviews\": [\n        \"cpe:2.3:a:geminilabs:site_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"site-search-360\": [\n        \"cpe:2.3:a:sitesearch360:site_search_360:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitebuilder-dynamic-components\": [\n        \"cpe:2.3:a:brandonclark:sitebuilder_dynamic_components:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:sitebuilder_dynamic_components_project:sitebuilder_dynamic_components:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitekit\": [\n        \"cpe:2.3:a:sitekit_project:sitekit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitemap\": [\n        \"cpe:2.3:a:sitemap_project:sitemap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitemap-by-click5\": [\n        \"cpe:2.3:a:click5interactive:sitemap_by_click5:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitemap-index\": [\n        \"cpe:2.3:a:sitemap_index_project:sitemap_index:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"siteorigin-panels\": [\n        \"cpe:2.3:a:siteorigin:page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitepact-klaviyo-contact-form-7\": [\n        \"cpe:2.3:a:sitepact:contact_form_7_extension_for_klaviyo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitepress-multilingual-cms\": [\n        \"cpe:2.3:a:onthegosystems:sitepress-multilingual-cms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpml:wpml:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitesupercharger\": [\n        \"cpe:2.3:a:marketingheroes:sitesupercharger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sitewide-notice-wp\": [\n        \"cpe:2.3:a:yoohooplugins:sitewide_notice_wp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"skaut-bazar\": [\n        \"cpe:2.3:a:skaut-bazar_project:skaut-bazar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sketchfab-oembed\": [\n        \"cpe:2.3:a:generatewp:sketchfab_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sksdev-toolkit\": [\n        \"cpe:2.3:a:sksdev:sksdev_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"skt-addons-for-elementor\": [\n        \"cpe:2.3:a:sktthemes:skt_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"skt-blocks\": [\n        \"cpe:2.3:a:sktthemes:skt_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"skt-templates\": [\n        \"cpe:2.3:a:sktthemes:skt_templates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sky-elementor-addons\": [\n        \"cpe:2.3:a:wowdevs:sky_addons_for_elementor:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wowdevs:sky_addons_for_elementor:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"skype-online-status\": [\n        \"cpe:2.3:a:ravanh:skype_legacy_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sliced-invoices\": [\n        \"cpe:2.3:a:slicedinvoices:sliced_invoices:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slicewp\": [\n        \"cpe:2.3:a:slicewp:affiliate_program_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slick-contact-forms\": [\n        \"cpe:2.3:a:leechesnutt:slick_contact_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slick-popup\": [\n        \"cpe:2.3:a:omaksolutions:slick-popup:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:omaksolutions:slick_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slick-social-share-buttons\": [\n        \"cpe:2.3:a:leechesnutt:slick_social_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slicko-for-elementor\": [\n        \"cpe:2.3:a:wpgrids:slicko:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slickquiz\": [\n        \"cpe:2.3:a:slickquiz_project:slickquiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slickr-flickr\": [\n        \"cpe:2.3:a:diywebmastery:slickr_flickr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slide-anything\": [\n        \"cpe:2.3:a:simonpedge:slide_anything:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slidedeck2\": [\n        \"cpe:2.3:a:hbwsl:slidedeck_2:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"slider-blocks\": [\n        \"cpe:2.3:a:makegutenblock:gutslider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-comparison-image-before-and-after\": [\n        \"cpe:2.3:a:artembovkun:slider_comparison_image_before_and_after:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-hero\": [\n        \"cpe:2.3:a:quantumcloud:slider_hero:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-range-htapps\": [\n        \"cpe:2.3:a:ht_slider_range_for_amazon_affiliates_project:ht_slider_range_for_amazon_affiliates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-responsive-slideshow\": [\n        \"cpe:2.3:a:awplife:slider_responsive_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-slideshow\": [\n        \"cpe:2.3:a:web-settler:layer_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slider-wd\": [\n        \"cpe:2.3:a:10web:slider:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:10web:sliderby10web:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slideshow-ck\": [\n        \"cpe:2.3:a:ceikay:slideshow_ck:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slideshow-gallery\": [\n        \"cpe:2.3:a:tribulant:slideshow_gallery:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tribulant:tibulant_slideshow_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slideshow-jquery-image-gallery\": [\n        \"cpe:2.3:a:slideshow_project:slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"slideshow-se\": [\n        \"cpe:2.3:a:slideshow_se_project:slideshow_se:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"small-package-quotes-fedex-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:fedex:wordpress:*:*\"\n      ],\n      \"small-package-quotes-purolator-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:purolator:wordpress:*:*\"\n      ],\n      \"small-package-quotes-unishippers-edition\": [\n        \"cpe:2.3:a:eniture:ltl_freight_quotes:*:*:*:*:unishippers:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:unishippers:wordpress:*:*\"\n      ],\n      \"small-package-quotes-ups-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:ups:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:usps:wordpress:*:*\",\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:wee:wordpress:*:*\",\n        \"cpe:2.3:a:enituretechnology:small_package_quotes:*:*:*:*:ups:wordpress:*:*\"\n      ],\n      \"small-package-quotes-usps-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:usps:wordpress:*:*\"\n      ],\n      \"small-package-quotes-wwe-edition\": [\n        \"cpe:2.3:a:eniture:small_package_quotes:*:*:*:*:wee:wordpress:*:*\"\n      ],\n      \"smart-app-banner\": [\n        \"cpe:2.3:a:wandlesoftware:smart_app_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-cookie-kit\": [\n        \"cpe:2.3:a:nicolamodugno:smart_cookie_kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-donations\": [\n        \"cpe:2.3:a:rednao:donations_made_easy_-_smart_donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-email-alerts\": [\n        \"cpe:2.3:a:followistic:smart_email_alerts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-forms\": [\n        \"cpe:2.3:a:rednao:smart_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-google-code-inserter\": [\n        \"cpe:2.3:a:oturia:smart_google_code_inserter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-grid-gallery\": [\n        \"cpe:2.3:a:origincode:smart-grid-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-id\": [\n        \"cpe:2.3:a:eideasy:eid_easy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-logo-showcase-lite\": [\n        \"cpe:2.3:a:accesspressthemes:smart_logo_showcase_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-maintenance-mode\": [\n        \"cpe:2.3:a:brijeshk89:smart_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-manager-for-wp-e-commerce\": [\n        \"cpe:2.3:a:storeapps:smart_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-marketing-for-wp\": [\n        \"cpe:2.3:a:e-goi:smart_marketing_sms_and_newsletters_forms:*:*:*:*:*:*:*:*\"\n      ],\n      \"smart-seo-tool\": [\n        \"cpe:2.3:a:wbolt:smart_seo_tool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-slider-3\": [\n        \"cpe:2.3:a:nextendweb:smart_slider_3:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-wishlist-for-more-convert\": [\n        \"cpe:2.3:a:moreconvert:woocommerce_wishlist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smart-youtube\": [\n        \"cpe:2.3:a:smart_youtube_pro_project:smart_youtube_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smartcrawl-seo\": [\n        \"cpe:2.3:a:wpmudev:smartcrawl:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smartpay\": [\n        \"cpe:2.3:a:themesgrove:wp_smartpay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smartsearchwp\": [\n        \"cpe:2.3:a:webdigit:chatbot_with_chatgpt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smartsoftbutton-widget-de-botones-de-chat\": [\n        \"cpe:2.3:a:smartsoft:button_widget_smartsoft:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smarty-for-wordpress\": [\n        \"cpe:2.3:a:presspage:smarty_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smokesignal\": [\n        \"cpe:2.3:a:smokesignal_project:smokesignal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smooth-page-scroll-updown-buttons\": [\n        \"cpe:2.3:a:smooth_scroll_page_up\\\\/down_buttons_project:smooth_scroll_page_up\\\\/down_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smooth-scrolling-links-ssl\": [\n        \"cpe:2.3:a:chetangole:smooth_scroll_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smooth-slider\": [\n        \"cpe:2.3:a:slidervilla:smooth_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smpl-shortcodes\": [\n        \"cpe:2.3:a:simple_shortcodes_project:simple_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sms-alert\": [\n        \"cpe:2.3:a:cozyvision:sms_alert_order_notifications:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"sms-ovh\": [\n        \"cpe:2.3:a:elyazalee:sms-ovh:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smtp-mail\": [\n        \"cpe:2.3:a:photoboxone:smtp_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smtp-mailing-queue\": [\n        \"cpe:2.3:a:smtp_mailing_queue_project:smtp_mailing_queue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"smtp2go\": [\n        \"cpe:2.3:a:smtp2go:smtp2go:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"snap-pixel\": [\n        \"cpe:2.3:a:hassanali:snap_pixel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"snazzy-maps\": [\n        \"cpe:2.3:a:atmist:snazzy_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"so-pinyin-slugs\": [\n        \"cpe:2.3:a:so-wp:pinyin_slugs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"so-widgets-bundle\": [\n        \"cpe:2.3:a:siteorigin:siteorigin_widgets_bundle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sociable\": [\n        \"cpe:2.3:a:sociable_project:sociable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-buttons-pack\": [\n        \"cpe:2.3:a:bestwebsoft:social_buttons_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-icons-widget-by-wpzoom\": [\n        \"cpe:2.3:a:wpzoom:social_icons_widget:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"social-link-groups\": [\n        \"cpe:2.3:a:acespritech:social_link_groups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-locker\": [\n        \"cpe:2.3:a:byonepress:social_locker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-login-bws\": [\n        \"cpe:2.3:a:bestwebsoft:social_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-media-builder\": [\n        \"cpe:2.3:a:sygnoos:social_media_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-media-feather\": [\n        \"cpe:2.3:a:sharethis:social_media_feather:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-media-widget\": [\n        \"cpe:2.3:a:bmwebproperties:social_media_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-networks-auto-poster-facebook-twitter-g\": [\n        \"cpe:2.3:a:nextscripts:social_networks_auto_poster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-photo-gallery\": [\n        \"cpe:2.3:a:infoway:social_photo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-pixel\": [\n        \"cpe:2.3:a:labschool:social_pixel:*:*:*:*:*:*:wordpress:*\"\n      ],\n      \"social-polls-by-opinionstage\": [\n        \"cpe:2.3:a:opinionstage:poll\\\\,_survey_\\\\\\u0026_quiz_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-proof-testimonials-slider\": [\n        \"cpe:2.3:a:brandid:social_proof_\\\\(testimonial\\\\)_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-pug\": [\n        \"cpe:2.3:a:devpups:social_pug:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-rocket\": [\n        \"cpe:2.3:a:wpsocialrocket:social_rocket:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpsocialrocket:social_sharing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-share-boost\": [\n        \"cpe:2.3:a:sumo:social_share_boost:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-share-buttons-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:social_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-slider\": [\n        \"cpe:2.3:a:social_slider_project:social_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-warfare\": [\n        \"cpe:2.3:a:warfareplugins:social_warfare:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"social-web-suite\": [\n        \"cpe:2.3:a:hypestudio:social_web_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"socialsnap\": [\n        \"cpe:2.3:a:socialsnap:social_snap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sodahead-polls\": [\n        \"cpe:2.3:a:sodahead:sodahead_polls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"software-license-manager\": [\n        \"cpe:2.3:a:tipsandtricks-hq:software_license_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"soisy-pagamento-rateale\": [\n        \"cpe:2.3:a:soisy:soisy_pagamento_rateale:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sola-newsletters\": [\n        \"cpe:2.3:a:sola-newsletters_project:sola-newsletters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sola-support-tickets\": [\n        \"cpe:2.3:a:solaplugins:sola_support_tickets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sola-testimonials\": [\n        \"cpe:2.3:a:codecabin:super_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"solidres\": [\n        \"cpe:2.3:a:solidres:solidres:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"soundcloud-is-gold\": [\n        \"cpe:2.3:a:mightymess:soundcloud_is_gold:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"soundcloud-shortcode\": [\n        \"cpe:2.3:a:soundcloud:soundcloud_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"soundy-audio-playlist\": [\n        \"cpe:2.3:a:webartisan:soundy_audio_playlist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"soundy-background-music\": [\n        \"cpe:2.3:a:webartisan:soundy_background_music:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sp-client-document-manager\": [\n        \"cpe:2.3:a:smartypantsplugins:sp_project_\\\\\\u0026_document_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sp-rental-manager\": [\n        \"cpe:2.3:a:smartypantsplugins:sp_rental_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spacer\": [\n        \"cpe:2.3:a:clevelandwebdeveloper:spacer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spam-byebye\": [\n        \"cpe:2.3:a:ohtanz:spam-byebye:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spamreferrerblock\": [\n        \"cpe:2.3:a:spamreferrerblock_project:spamreferrerblock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sparkle-demo-importer\": [\n        \"cpe:2.3:a:wpneuron:sparkle_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"special-feed-items\": [\n        \"cpe:2.3:a:moc:special_feed_items:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"speed-booster-pack\": [\n        \"cpe:2.3:a:optimocha:speed_booster_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"speedycache\": [\n        \"cpe:2.3:a:softaculous:speedycache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spice-post-slider\": [\n        \"cpe:2.3:a:spicethemes:carousel\\\\,_recent_post_slider_and_banner_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spice-starter-sites\": [\n        \"cpe:2.3:a:spicethemes:spice_starter_sites:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spider-contacts\": [\n        \"cpe:2.3:a:10web:spidercontacts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spider-event-calendar\": [\n        \"cpe:2.3:a:web-dorado:spider_calendar:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-dorado:spider_event_calendar:*:*:*:*:*:*:*:*\"\n      ],\n      \"spider-facebook\": [\n        \"cpe:2.3:a:web-dorado:spider_facebook:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-dorado:wdsocialwidgets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spideranalyse\": [\n        \"cpe:2.3:a:spideranalyse_project:spideranalyse:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spiffy-calendar\": [\n        \"cpe:2.3:a:spiffyplugins:spiffy_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"splash-header\": [\n        \"cpe:2.3:a:zeesweb:splash_header:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"splashscreen\": [\n        \"cpe:2.3:a:cochinoman:splashscreen:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sponsors-carousel\": [\n        \"cpe:2.3:a:sponsors_carousel_project:sponsors_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sportspress\": [\n        \"cpe:2.3:a:themeboy:sportspress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spotify-play-button-for-wordpress\": [\n        \"cpe:2.3:a:followmedarling:spotify-play-button-for-wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spotim-comments\": [\n        \"cpe:2.3:a:spot:spot.im_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spotlight-social-photo-feeds\": [\n        \"cpe:2.3:a:rebelcode:spotlight_social_feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spreadshirt-rss-3d-cube-flash-gallery\": [\n        \"cpe:2.3:a:spreadshirt-rss-3d-cube-flash-gallery_project:spreadshirt-rss-3d-cube-flash-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spreadshop\": [\n        \"cpe:2.3:a:spreadshop:spreadshop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sprout-invoices\": [\n        \"cpe:2.3:a:webventures:client_invoicing_by_sprout_invoices:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"squeeze\": [\n        \"cpe:2.3:a:squeeze_project:squeeze:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"squirrly-seo\": [\n        \"cpe:2.3:a:squirrly:seo_plugin_by_squirrly_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"srbtranslatin\": [\n        \"cpe:2.3:a:srbtranslatin_project:srbtranslatin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"st-daily-tip\": [\n        \"cpe:2.3:a:sanskruti:st-daily-tip:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stackable-ultimate-gutenberg-blocks\": [\n        \"cpe:2.3:a:gambit:stackable:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"staff-directory-pro\": [\n        \"cpe:2.3:a:goldplugins:staff_directory_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stafflist\": [\n        \"cpe:2.3:a:era404:stafflist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stageshow\": [\n        \"cpe:2.3:a:stageshow_project:stageshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stagtools\": [\n        \"cpe:2.3:a:codestag:stagtools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"star-cloudprnt-for-woocommerce\": [\n        \"cpe:2.3:a:star-emea:star-cloudprnt-for-woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:star-emea:star_cloudprnt_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"starbox\": [\n        \"cpe:2.3:a:squirrly:starbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stars-rating\": [\n        \"cpe:2.3:a:stars_rating_project:stars_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"startklar-elmentor-forms-extwidgets\": [\n        \"cpe:2.3:a:web-shop-host:startklar_elmentor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stats-counter\": [\n        \"cpe:2.3:a:analytics_stats_counter_statistics_project:analytics_stats_counter_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stax-addons-for-elementor\": [\n        \"cpe:2.3:a:staxwp:stax:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stax-buddy-builder\": [\n        \"cpe:2.3:a:staxwp:buddybuilder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stellissimo-text-box\": [\n        \"cpe:2.3:a:overclokk:stellissimo_text_box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stetic\": [\n        \"cpe:2.3:a:stetic:stetic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sticky-buttons\": [\n        \"cpe:2.3:a:wow-company:sticky_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sticky-chat-widget\": [\n        \"cpe:2.3:a:gingerplugins:sticky_chat_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sticky-header-oceanwp\": [\n        \"cpe:2.3:a:oceanwp:sticky_header:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sticky-popup\": [\n        \"cpe:2.3:a:sticky_popup_project:sticky_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stock-in\": [\n        \"cpe:2.3:a:stock_in_\\\\\\u0026_out_project:stock_in_\\\\\\u0026_out:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stock-locations-for-woocommerce\": [\n        \"cpe:2.3:a:fahadmahmood8:stock_locations_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stock-market-charts-from-finviz\": [\n        \"cpe:2.3:a:finviz:stock_market_charts_from_finviz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stock-sync-for-woocommerce\": [\n        \"cpe:2.3:a:wptrio:stock_sync_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stock-ticker\": [\n        \"cpe:2.3:a:urosevic:stock_ticker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stockdio-historical-chart\": [\n        \"cpe:2.3:a:stockdio:stockdio_historical_chart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stockists-manager\": [\n        \"cpe:2.3:a:berocket:stockists_manager_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stop-referrer-spam\": [\n        \"cpe:2.3:a:wielogorski:stop_referrer_spam:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stop-spam-comments\": [\n        \"cpe:2.3:a:stop_spam_comments_project:stop_spam_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stop-spammer-registrations-plugin\": [\n        \"cpe:2.3:a:trumani:stop_spammers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stop-user-enumeration\": [\n        \"cpe:2.3:a:fullworksplugins:stop_user_enumeration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stopbadbots\": [\n        \"cpe:2.3:a:billminozzi:stop_bad_bots:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:stopbadbots_project:stopbadbots:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stops-core-theme-and-plugin-updates\": [\n        \"cpe:2.3:a:easyupdatesmanager:easy_updates_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"store-locator\": [\n        \"cpe:2.3:a:store_locator_project:store_locator:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:viadat:store_locator_for_wordpress_with_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"store-manager-connector\": [\n        \"cpe:2.3:a:emagicone:emagicone_store_manager_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"storefront-footer-text\": [\n        \"cpe:2.3:a:wooassist:storefront_footer_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"strategery-migrations\": [\n        \"cpe:2.3:a:strategery_migrations_project:strategery_migrations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stray-quotes\": [\n        \"cpe:2.3:a:unalignedcode:stray_random_quotes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stream\": [\n        \"cpe:2.3:a:xwp:stream:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"streamcast\": [\n        \"cpe:2.3:a:bplugins:streamcast_radio_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"string-locator\": [\n        \"cpe:2.3:a:instawp:string_locator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"strong-testimonials\": [\n        \"cpe:2.3:a:wpchill:strong_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"structured-content\": [\n        \"cpe:2.3:a:wpsc-plugin:structured_content:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stylish-cost-calculator\": [\n        \"cpe:2.3:a:stylishcostcalculator:stylish_cost_calculator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stylish-price-list\": [\n        \"cpe:2.3:a:stylishpricelist:stylish_price_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"stylist\": [\n        \"cpe:2.3:a:stylist_project:stylist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subaccounts-for-woocommerce\": [\n        \"cpe:2.3:a:mediaticus:subaccounts_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribe-sidebar\": [\n        \"cpe:2.3:a:blubrry:subscribe_sidebar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribe-to-category\": [\n        \"cpe:2.3:a:subscribe_to_category_project:subscribe_to_category:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribe-to-comments\": [\n        \"cpe:2.3:a:markjaquith:subscribe_to_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribe-to-comments-reloaded\": [\n        \"cpe:2.3:a:wpkube:subscribe_to_comments_reloaded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribe2\": [\n        \"cpe:2.3:a:subscribe2_project:subscribe2:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscriber\": [\n        \"cpe:2.3:a:bestwebsoft:contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:subscriber:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"subscribers-com\": [\n        \"cpe:2.3:a:hellobar:subscribers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sucuri-scanner\": [\n        \"cpe:2.3:a:sucuri:security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sugar-calendar-lite\": [\n        \"cpe:2.3:a:wpbeginner:sugar_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sully\": [\n        \"cpe:2.3:a:toolstack:sully:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sunshine-photo-cart\": [\n        \"cpe:2.3:a:sunshinephotocart:sunshine_photo_cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"super-addons-for-elementor\": [\n        \"cpe:2.3:a:themehat:super_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"super-socializer\": [\n        \"cpe:2.3:a:heateor:super_socializer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"super-testimonial\": [\n        \"cpe:2.3:a:themepoints:super_testimonials:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"superb-slideshow-gallery\": [\n        \"cpe:2.3:a:gopiplus:superb_slideshow_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"superb-social-share-and-follow-buttons\": [\n        \"cpe:2.3:a:superbthemes:superb_social_media_share_buttons_and_follow_buttons_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"supersaas-appointment-scheduling\": [\n        \"cpe:2.3:a:supersaas:supersaas:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"support-chat\": [\n        \"cpe:2.3:a:ninjateam:click_to_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"support-svg\": [\n        \"cpe:2.3:a:sayedulsayem:support_svg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"supportboard\": [\n        \"cpe:2.3:a:schiocco:support_board:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"supportcandy\": [\n        \"cpe:2.3:a:supportcandy:supportcandy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"supportflow\": [\n        \"cpe:2.3:a:supportflow_project:supportflow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"supra-csv-parser\": [\n        \"cpe:2.3:a:supra-csv-parser_project:supra-csv-parser:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"surbma-gdpr-proof-google-analytics\": [\n        \"cpe:2.3:a:surbma:gdpr_proof_cookie_consent_\\\\\\u0026_notice_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"surecart\": [\n        \"cpe:2.3:a:surecart:surecart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sureforms\": [\n        \"cpe:2.3:a:brainstormforce:sureforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"suretriggers\": [\n        \"cpe:2.3:a:suretriggers:suretriggers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"survey-maker\": [\n        \"cpe:2.3:a:ays-pro:survey_maker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"surveys\": [\n        \"cpe:2.3:a:surveys_project:surveys:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svg-block\": [\n        \"cpe:2.3:a:boldblocks:svg_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svg-support\": [\n        \"cpe:2.3:a:benbodhi:svg_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svg-uploads-support\": [\n        \"cpe:2.3:a:ablyperu:svg_uploads_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svg-vector-icon-plugin\": [\n        \"cpe:2.3:a:wp_svg_icons_project:wp_svg_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svgator\": [\n        \"cpe:2.3:a:svgator:svgator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svgmagic\": [\n        \"cpe:2.3:a:andibauer:svgmagic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"svs-pricing-tables\": [\n        \"cpe:2.3:a:svs-websoft:svs_pricing_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"swatchly\": [\n        \"cpe:2.3:a:hasthemes:swatchly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"swifty-bar\": [\n        \"cpe:2.3:a:wpgens:swifty_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"swifty-page-manager\": [\n        \"cpe:2.3:a:swifty_page_manager_project:swifty_page_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"swipehq-payment-gateway-woocommerce\": [\n        \"cpe:2.3:a:cybercompany:swipehq-payment-gateway-woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"swipehq-payment-gateway-wp-e-commerce\": [\n        \"cpe:2.3:a:cybercompay:swipehq-payment-gateway-wp-e-commerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sydney-toolbox\": [\n        \"cpe:2.3:a:athemes:sydney_toolbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"symbiostock\": [\n        \"cpe:2.3:a:symbiostock:symbiostock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sync-post-with-other-site\": [\n        \"cpe:2.3:a:syncpostwithothersite:sync_post_with_other_site:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sync-qcloud-cos\": [\n        \"cpe:2.3:a:sync_qcloud_cos_project:sync_qcloud_cos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"syncee-global-dropshipping\": [\n        \"cpe:2.3:a:syncee:syncee_-_global_dropshipping:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"syndication-links\": [\n        \"cpe:2.3:a:syndication_links_project:syndication_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"synved-shortcodes\": [\n        \"cpe:2.3:a:synved:wordpress_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"system-dashboard\": [\n        \"cpe:2.3:a:bowo:system_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tabbed\": [\n        \"cpe:2.3:a:rich-web:tab:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"table-addons-for-elementor\": [\n        \"cpe:2.3:a:fusionplugin:table_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"table-of-contents-plus\": [\n        \"cpe:2.3:a:dublue:table_of_contents_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tablepress\": [\n        \"cpe:2.3:a:tablepress:tablepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tabs-pro\": [\n        \"cpe:2.3:a:themepoints:tab_ultimate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tabs-responsive\": [\n        \"cpe:2.3:a:wpshopmart:tabs_responsive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tagregator\": [\n        \"cpe:2.3:a:tagregator_project:tagregator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tags-cloud-manager\": [\n        \"cpe:2.3:a:tags_cloud_manager_project:tags_cloud_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tainacan\": [\n        \"cpe:2.3:a:tainacan:tainacan:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tarteaucitronjs\": [\n        \"cpe:2.3:a:amauri:tarteaucitron.io:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tarteaucitron.js_-_cookies_legislation_\\\\\\u0026_gdpr_project:tarteaucitron.js_-_cookies_legislation_\\\\\\u0026_gdpr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"taskbuilder\": [\n        \"cpe:2.3:a:taskbuilder:taskbuilder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tawkto-live-chat\": [\n        \"cpe:2.3:a:tawk:tawk.to_live_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"taxonomy-filter\": [\n        \"cpe:2.3:a:andrealandonio:taxonomy_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tc-custom-javascript\": [\n        \"cpe:2.3:a:tc_custom_javascript_project:tc_custom_javascript:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tcd-google-maps\": [\n        \"cpe:2.3:a:tcd-theme:tcd_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"teachpress\": [\n        \"cpe:2.3:a:mtrv:teachpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:teachpress_project:teachpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"team\": [\n        \"cpe:2.3:a:pickplugins:team_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"team-members\": [\n        \"cpe:2.3:a:wpdarko:team_members:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"team-showcase\": [\n        \"cpe:2.3:a:themepoints:team_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"teamleader-form-integration\": [\n        \"cpe:2.3:a:teamleade:teamleader_crm_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"telephone-number-linker\": [\n        \"cpe:2.3:a:gravitydesign:telephone_number_linker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"template-events-calendar\": [\n        \"cpe:2.3:a:coolplugins:events_shortcodes_for_the_events_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"template-kit-export\": [\n        \"cpe:2.3:a:envato:template_kit_-_export:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"templately\": [\n        \"cpe:2.3:a:templately:templately:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"templates-patterns-collection\": [\n        \"cpe:2.3:a:themeisle:cloud_templates_\\\\\\u0026_patterns_collection:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"templatesnext-toolkit\": [\n        \"cpe:2.3:a:templatesnext:templatesnext_toolkit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"temporary-login-without-password\": [\n        \"cpe:2.3:a:storeapps:temporary_login_without_password:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tenweb-speed-optimizer\": [\n        \"cpe:2.3:a:10web:10web_booster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"terms-descriptions\": [\n        \"cpe:2.3:a:simplecoding:terms_descriptions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-add\": [\n        \"cpe:2.3:a:web-settler:testimonial_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-builder\": [\n        \"cpe:2.3:a:wpshopmart:testimonial_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-free\": [\n        \"cpe:2.3:a:shapedplugin:real_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-rotator\": [\n        \"cpe:2.3:a:testimonial_rotator_project:testimonial_rotator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-slider\": [\n        \"cpe:2.3:a:slidervilla:testimonial_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-slider-and-showcase\": [\n        \"cpe:2.3:a:radiustheme:testimonial_slider_and_showcase:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"testimonial-slider-shortcode\": [\n        \"cpe:2.3:a:sazzadh:testimonial_slider_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonial-widgets\": [\n        \"cpe:2.3:a:fetchdesigns:sign-up_sheets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:trustindex:wp_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonials\": [\n        \"cpe:2.3:a:testimonials_project:testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonials-carousel-elementor\": [\n        \"cpe:2.3:a:uapp:testimonial_carousel_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"testimonials-widget\": [\n        \"cpe:2.3:a:axelerant:testimonials_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"text-hover\": [\n        \"cpe:2.3:a:text_hover_project:text_hover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tf-numbers-number-counter-animaton\": [\n        \"cpe:2.3:a:metagauss:themeflection_numbers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"th-advance-product-search\": [\n        \"cpe:2.3:a:themehunk:advance_product_search:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"th-variation-swatches\": [\n        \"cpe:2.3:a:themehunk:variation_swatches:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"thank-me-later\": [\n        \"cpe:2.3:a:thank_me_later_project:thank_me_later:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-events-calendar\": [\n        \"cpe:2.3:a:stellarwp:the_events_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-hackers-diet\": [\n        \"cpe:2.3:a:wp-plugins:the_hackers_diet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-holiday-calendar\": [\n        \"cpe:2.3:a:theholidaycalendar:the_holiday_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-moneytizer\": [\n        \"cpe:2.3:a:themoneytizer:the_moneytizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-pack-addon\": [\n        \"cpe:2.3:a:webangon:the_pack_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-plus-addons-for-block-editor\": [\n        \"cpe:2.3:a:posimyth:nexter_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-plus-addons-for-elementor-page-builder\": [\n        \"cpe:2.3:a:posimyth:the_plus_addons_for_elementor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:posimyth:the_plus_addons_for_elementor:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:posimyth:the_plus_addons_for_elementor:*:*:*:*:pro:wordpress:*:*\",\n        \"cpe:2.3:a:posimyth:the_plus_addons_for_elementor_page_builder_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-post-grid\": [\n        \"cpe:2.3:a:radiustheme:the_post_grid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-sorter\": [\n        \"cpe:2.3:a:ombu:the_sorter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-very-simple-vimeo-shortcode\": [\n        \"cpe:2.3:a:simple_vimeo_shortcode_project:simple_vimeo_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theatre\": [\n        \"cpe:2.3:a:slimndap:theater_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thecartpress\": [\n        \"cpe:2.3:a:thecartpress:thecartpress_ecommerce_shopping_cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-blvd-responsive-google-maps\": [\n        \"cpe:2.3:a:theme_blvd_responsive_google_maps_project:theme_blvd_responsive_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-blvd-shortcodes\": [\n        \"cpe:2.3:a:themeblvd:theme_blvd_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-demo-import\": [\n        \"cpe:2.3:a:themely:theme_demo_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-editor\": [\n        \"cpe:2.3:a:themeeditor:theme_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-junkie-shortcodes\": [\n        \"cpe:2.3:a:themejunkie:tj_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-per-user\": [\n        \"cpe:2.3:a:presslabs:theme_per_user:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-switcha\": [\n        \"cpe:2.3:a:plugin-planet:theme_switcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"theme-translation-for-polylang\": [\n        \"cpe:2.3:a:theme_and_plugin_translation_for_polylang_project:theme_and_plugin_translation_for_polylang:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themedy-toolbox\": [\n        \"cpe:2.3:a:themedy:toolbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themegrill-demo-importer\": [\n        \"cpe:2.3:a:themegrill:themegrill_demo_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themehigh-multiple-addresses\": [\n        \"cpe:2.3:a:themehigh:multiple_shipping_addresses:*:*:*:*:*:*:*:*\"\n      ],\n      \"themehunk-megamenu-plus\": [\n        \"cpe:2.3:a:themehunk:mega_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themeisle-companion\": [\n        \"cpe:2.3:a:themeisle:orbit_fox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themesflat-addons-for-elementor\": [\n        \"cpe:2.3:a:themesflat:themesflat_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themeshark-elementor\": [\n        \"cpe:2.3:a:brandevolutionco:themeshark_templates_\\\\\\u0026_widgets_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themify-builder\": [\n        \"cpe:2.3:a:themify:builder:*:*:*:*:-:wordpress:*:*\"\n      ],\n      \"themify-portfolio-post\": [\n        \"cpe:2.3:a:themify:portfolio_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themify-shortcodes\": [\n        \"cpe:2.3:a:themify:themify_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themify-store-locator\": [\n        \"cpe:2.3:a:themify:store_locator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"themify-wc-product-filter\": [\n        \"cpe:2.3:a:themify:product_filter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:themify:woocommerce_product_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thesography\": [\n        \"cpe:2.3:a:kristarella:exifography:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thinkific-uploader\": [\n        \"cpe:2.3:a:thinkific:thinkific_uploader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thinktwit\": [\n        \"cpe:2.3:a:thinktwit_project:thinktwit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thirstyaffiliates\": [\n        \"cpe:2.3:a:caseproof:thirstyaffiliates_affiliate_link_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"threepress\": [\n        \"cpe:2.3:a:kerryoco:threepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"thumbs-rating\": [\n        \"cpe:2.3:a:quicoto:thumbs_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ti-woocommerce-wishlist\": [\n        \"cpe:2.3:a:templateinvaders:ti_woocommerce_wishlist:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"tickera-event-ticketing-system\": [\n        \"cpe:2.3:a:tickera:tickera:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"time-clock\": [\n        \"cpe:2.3:a:wpplugin:time_clock:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:wpplugin:time_clock:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"time-sheets\": [\n        \"cpe:2.3:a:dcac:time_sheets:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:time_sheets_project:time_sheets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timeline-awesome\": [\n        \"cpe:2.3:a:themesawesome:timeline_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timeline-calendar\": [\n        \"cpe:2.3:a:timeline_calendar_project:timeline_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timeline-widget-addon-for-elementor\": [\n        \"cpe:2.3:a:coolplugins:timeline_widget_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timer-countdown\": [\n        \"cpe:2.3:a:yaidier:countdown_timer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timesheet\": [\n        \"cpe:2.3:a:bestwebsoft:timesheet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timetics\": [\n        \"cpe:2.3:a:arraytics:wp_timetics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"timthumb-vulnerability-scanner\": [\n        \"cpe:2.3:a:peterbutler:timthumb_vulnerability_scanner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tinychat-roomspy\": [\n        \"cpe:2.3:a:tinychat:room_spy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tinymce-custom-styles\": [\n        \"cpe:2.3:a:tinymce_custom_styles_project:tinymce_custom_styles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"titan-framework\": [\n        \"cpe:2.3:a:gambit:titan_framework:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:titan_framework_project:titan_framework:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tk-google-fonts\": [\n        \"cpe:2.3:a:themekraft:tk_google_fonts_gdpr_compliant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tlp-portfolio\": [\n        \"cpe:2.3:a:radiustheme:portfolio:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"tlp-team\": [\n        \"cpe:2.3:a:radiustheme:team_-_wordpress_team_members_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"to-top\": [\n        \"cpe:2.3:a:catchplugins:to_top:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"todo-custom-field\": [\n        \"cpe:2.3:a:rafasashi:todo_custom_field:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"toggle-the-title\": [\n        \"cpe:2.3:a:toggle-the-title_project:toggle-the-title:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"toolbar-to-share\": [\n        \"cpe:2.3:a:toolbar_to_share_project:toolbar_to_share:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tooltip-ck\": [\n        \"cpe:2.3:a:ceikay:tooltip_ck:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"top-10\": [\n        \"cpe:2.3:a:top_10_project:top_10:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webberzone:top_10:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"top-25-social-icons\": [\n        \"cpe:2.3:a:vyasdipen:top_25_social_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"top-bar\": [\n        \"cpe:2.3:a:wpdarko:top_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"torro-forms\": [\n        \"cpe:2.3:a:awesome:torro_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"total-donations\": [\n        \"cpe:2.3:a:calmar-webmedia:total_donations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"total-security\": [\n        \"cpe:2.3:a:fabrix:total_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"total-team-lite\": [\n        \"cpe:2.3:a:accesspressthemes:total_team_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"totop-link\": [\n        \"cpe:2.3:a:nocean:totop_link:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tour-operator\": [\n        \"cpe:2.3:a:lightspeedwp:lsx_tour_operator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tourfic\": [\n        \"cpe:2.3:a:themefic:tourfic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tourmaster\": [\n        \"cpe:2.3:a:goodlayers:tour_master:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tournamatch\": [\n        \"cpe:2.3:a:tournamatch:tournamatch:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tp-education\": [\n        \"cpe:2.3:a:themepalace:tp_education:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tpg-redirect\": [\n        \"cpe:2.3:a:tpginc:tpg_redirect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"track-geolocation-of-users-using-contact-form-7\": [\n        \"cpe:2.3:a:zealousweb:track_geolocation_of_users_using_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"track-the-click\": [\n        \"cpe:2.3:a:tracktheclick:track_the_click:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tracking-code-manager\": [\n        \"cpe:2.3:a:data443:tracking_code_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tradedoubler-affiliate-tracker\": [\n        \"cpe:2.3:a:tradedoubler:grow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tradetracker-store\": [\n        \"cpe:2.3:a:wpaffiliatefeed:tradetracker-store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"traffic-manager\": [\n        \"cpe:2.3:a:sedlex:traffic_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"training\": [\n        \"cpe:2.3:a:rudrainnovative:training_-_courses:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transbank-webpay-plus-rest\": [\n        \"cpe:2.3:a:transbank:transbank_webpay_rest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transfinanz\": [\n        \"cpe:2.3:a:kwmsources:transfinanz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transients-manager\": [\n        \"cpe:2.3:a:wpbeginner:transients_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transition-slider-lite\": [\n        \"cpe:2.3:a:creativeinteractivemedia:transition_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"translatepress-multilingual\": [\n        \"cpe:2.3:a:cozmoslabs:translatepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transposh-translation-filter-for-wordpress\": [\n        \"cpe:2.3:a:transposh:transposh_wordpress_translation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"travelmap-blog\": [\n        \"cpe:2.3:a:travelmap:travelmap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"travelpayouts\": [\n        \"cpe:2.3:a:travelpayouts:travelpayouts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"treepress\": [\n        \"cpe:2.3:a:blackandwhitedigital:treepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"triberr-wordpress-plugin\": [\n        \"cpe:2.3:a:triberr:triberr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tripay-payment-gateway\": [\n        \"cpe:2.3:a:tripay:payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tripetto\": [\n        \"cpe:2.3:a:tripetto:tripetto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tripplan\": [\n        \"cpe:2.3:a:checklist:trip_plan:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"truebooker-appointment-booking\": [\n        \"cpe:2.3:a:themetechmount:truebooker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"trx_addons\": [\n        \"cpe:2.3:a:themerex:addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ts-webfonts-for-conoha\": [\n        \"cpe:2.3:a:gmo:typesquare_webfonts_for_conoha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ts-webfonts-for-sakura\": [\n        \"cpe:2.3:a:sakura:ts_webfonts_for_sakura:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ttv-easy-embed-player\": [\n        \"cpe:2.3:a:streamweasels:twitch_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tubepress\": [\n        \"cpe:2.3:a:tubepress:tubepress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tumult-hype-animations\": [\n        \"cpe:2.3:a:tumult:tumult_hype_animations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tune-library\": [\n        \"cpe:2.3:a:tune_library_project:tune_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"turn-off-comments-for-all-posts\": [\n        \"cpe:2.3:a:turn_off_all_comments_project:turn_off_all_comments:*:*:*:*:*:*:*:*\"\n      ],\n      \"tutor\": [\n        \"cpe:2.3:a:themeum:tutor_lms:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"tutor-lms-elementor-addons\": [\n        \"cpe:2.3:a:themeum:tutor_lms_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tutor-lms-migration-tool\": [\n        \"cpe:2.3:a:themeum:tutor_lms_-_migration_tool:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tutor-pro\": [\n        \"cpe:2.3:a:themeum:tutor_lms:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"tuxedo-big-file-uploads\": [\n        \"cpe:2.3:a:infiniteuploads:big_file_uploads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tweeple\": [\n        \"cpe:2.3:a:themeblvd:tweeple:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tweet-wheel\": [\n        \"cpe:2.3:a:nerdcow:tweet_wheel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twenty20\": [\n        \"cpe:2.3:a:twenty20_project:twenty20:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twitget\": [\n        \"cpe:2.3:a:twitget_project:twitget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twittee-text-tweet\": [\n        \"cpe:2.3:a:johnniejodelljr:twittee_text_tweet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twitter-cards-meta\": [\n        \"cpe:2.3:a:wpdeveloper:twitter_cards_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twitter-friends-widget\": [\n        \"cpe:2.3:a:twitter_friends_widget_project:twitter_friends_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"twitter-plugin\": [\n        \"cpe:2.3:a:bestwebsoft:twitter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:bestwebsoft:twitter_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"two-factor-authentication\": [\n        \"cpe:2.3:a:simbahosting:two-factor-authentication:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"two-factor-login-telegram\": [\n        \"cpe:2.3:a:dueclic:wp_2fa_with_telegram:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"typebot\": [\n        \"cpe:2.3:a:typebot:typebot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"typing-text\": [\n        \"cpe:2.3:a:wpdeveloper:typing_text:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"typofr\": [\n        \"cpe:2.3:a:typofr_project:typofr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ubermenu\": [\n        \"cpe:2.3:a:sevenspark:ubermenu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ucontext\": [\n        \"cpe:2.3:a:summitmediaconcepts:ucontext_for_clickbank:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ucontext-for-amazon\": [\n        \"cpe:2.3:a:summitmediaconcepts:ucontext_for_amazon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uipress-lite\": [\n        \"cpe:2.3:a:uipress:uipress_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uji-countdown\": [\n        \"cpe:2.3:a:wpmanage:uji_countdown:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uji-popup\": [\n        \"cpe:2.3:a:wpmanage:uji_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uk-cookie-consent\": [\n        \"cpe:2.3:a:termly:gdpr_cookie_consent_banner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ukrainian-currency\": [\n        \"cpe:2.3:a:glopium:ukrainian-currency:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uleak-security-dashboard\": [\n        \"cpe:2.3:a:uleak-security-dashboard_project:uleak-security-dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ulisting\": [\n        \"cpe:2.3:a:stylemixthemes:ulisting:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-addons-for-beaver-builder-lite\": [\n        \"cpe:2.3:a:brainstormforce:ultimate_addons_for_beaver_builder:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"ultimate-addons-for-contact-form-7\": [\n        \"cpe:2.3:a:themefic:ultimate_addons_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-addons-for-gutenberg\": [\n        \"cpe:2.3:a:brainstormforce:spectra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-appointment-scheduling\": [\n        \"cpe:2.3:a:etoilewebdesign:ultimate_appointment_booking_\\\\\\u0026_scheduling:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-auction\": [\n        \"cpe:2.3:a:auctionplugin:ultimate_wordpress_auction_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-author-box-lite\": [\n        \"cpe:2.3:a:accesspressthemes:ultimate_author_box_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-blocks\": [\n        \"cpe:2.3:a:dotcamp:ultimate_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-bootstrap-elements-for-elementor\": [\n        \"cpe:2.3:a:g5plus:ultimate_bootstrap_elements_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-carousel-for-elementor\": [\n        \"cpe:2.3:a:topdigitaltrends:ultimate_carousel_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-carousel-for-visual-composer\": [\n        \"cpe:2.3:a:topdigitaltrends:ultimate_carousel_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-category-excluder\": [\n        \"cpe:2.3:a:infolific:ultimate_category_excluder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-classified-listings\": [\n        \"cpe:2.3:a:webcodingplace:ultimate_classified_listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-coming-soon\": [\n        \"cpe:2.3:a:rstheme:ultimate_coming_soon_\\\\\\u0026_maintenance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-dashboard\": [\n        \"cpe:2.3:a:davidvongries:ultimate_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-faqs\": [\n        \"cpe:2.3:a:etoilewebdesign:ultimate_faq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-form-builder-lite\": [\n        \"cpe:2.3:a:accesspressthemes:ultimate-form-builder-lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-instagram-feed\": [\n        \"cpe:2.3:a:ultimate_instagram_feed_project:ultimate_instagram_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-maps-by-supsystic\": [\n        \"cpe:2.3:a:supsystic:ultimate_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-member\": [\n        \"cpe:2.3:a:ultimatemember:ultimate_member:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ultimatemember:user_profile_\\\\\\u0026_membership:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-noindex-nofollow-tool-ii\": [\n        \"cpe:2.3:a:ultimate_noindex_nofollow_tool_ii_project:ultimate_noindex_nofollow_tool_ii:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-post\": [\n        \"cpe:2.3:a:wpxpo:postx:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-posts-widget\": [\n        \"cpe:2.3:a:inisev:ultimate_posts_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-product-catalogue\": [\n        \"cpe:2.3:a:etoilewebdesign:ultimate_product_catalog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-reviews\": [\n        \"cpe:2.3:a:etoilewebdesign:ultimate_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-sms-notifications\": [\n        \"cpe:2.3:a:homescript:ultimate_sms_notifications:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ultimatesmsnotifications:ultimate_sms_notifications_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-social-media-icons\": [\n        \"cpe:2.3:a:inisev:social_media_share_buttons_\\\\\\u0026_social_sharing_icons:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:ultimatelysocial:social_media_share_buttons_\\\\\\u0026_social_sharing_icons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-social-media-plus\": [\n        \"cpe:2.3:a:socialshare:social_share_icons_\\\\\\u0026_social_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-store-kit\": [\n        \"cpe:2.3:a:bdthemes:ultimate_store_kit:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"ultimate-tables\": [\n        \"cpe:2.3:a:webpsilon:ultimate_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-taxonomy-manager\": [\n        \"cpe:2.3:a:xydac:ultimate_taxonomy_manager:*:*:*:*:*:*:*:*\"\n      ],\n      \"ultimate-tinymce\": [\n        \"cpe:2.3:a:joshlobe:ultimate_tinymce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-weather-plugin\": [\n        \"cpe:2.3:a:ultimate-weather_project:ultimate-weather:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-woocommerce-auction-pro\": [\n        \"cpe:2.3:a:auctionplugin:ultimate_wordpress_auction_plugin:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"ultimate-wp-query-search-filter\": [\n        \"cpe:2.3:a:ultimate_wp_query_search_filter_project:ultimate_wp_query_search_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultimate-youtube-video-player\": [\n        \"cpe:2.3:a:codelizar:ultimate_youtube_video_\\\\\\u0026_shorts_player_with_vimeo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultra-companion\": [\n        \"cpe:2.3:a:wpoperation:ultra_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ultraaddons-elementor-lite\": [\n        \"cpe:2.3:a:codeastrology:ultraaddons:*:*:*:*:*:*:*:*\"\n      ],\n      \"uncanny-automator\": [\n        \"cpe:2.3:a:uncannyowl:uncanny_automator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uncanny-learndash-groups\": [\n        \"cpe:2.3:a:uncannyowl:uncanny_groups_for_learndash:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uncanny-learndash-toolkit\": [\n        \"cpe:2.3:a:uncannyowl:uncanny_toolkit_for_learndash:*:*:*:*:*:*:*:*\",\n        \"cpe:2.3:a:uncannyowl:uncanny_toolkit_for_learndash:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unconfirmed\": [\n        \"cpe:2.3:a:unconfirmed_project:unconfirmed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"under-construction-page\": [\n        \"cpe:2.3:a:webfactoryltd:under_construction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"underconstruction\": [\n        \"cpe:2.3:a:underconstruction_project:underconstruction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ungallery\": [\n        \"cpe:2.3:a:mmond:ungallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uninstall\": [\n        \"cpe:2.3:a:wordpress_uninstall_project:wordpress_uninstall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unite-gallery-lite\": [\n        \"cpe:2.3:a:unitegallery:unite_gallery_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"universal-analytics\": [\n        \"cpe:2.3:a:matchboxdesigngroup:universal_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"universal-star-rating\": [\n        \"cpe:2.3:a:universal_star_rating_project:universal_star_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unlimited-addons-for-wpbakery-page-builder\": [\n        \"cpe:2.3:a:unitecms:unlimited_addons_for_wpbakery_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unlimited-blocks\": [\n        \"cpe:2.3:a:themehunk:gutenberg_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unlimited-elements-for-elementor\": [\n        \"cpe:2.3:a:unlimited-elements:unlimited_elements_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unlimited-popups\": [\n        \"cpe:2.3:a:unlimited_popups_project:unlimited_popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unusedcss\": [\n        \"cpe:2.3:a:rapidload:rapidload_power-up_for_autoptimize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"unyson\": [\n        \"cpe:2.3:a:brizy:unyson:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"up-down-image-slideshow-gallery\": [\n        \"cpe:2.3:a:gopiplus:up_down_image_slideshow_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"updater\": [\n        \"cpe:2.3:a:bestwebsoft:updater:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"updraftplus\": [\n        \"cpe:2.3:a:updraftplus:updraftplus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"upload-fields-for-wpforms\": [\n        \"cpe:2.3:a:softlabbd:upload_fields_for_wpforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"upload-file-type-settings-plugin\": [\n        \"cpe:2.3:a:upload_file_type_settings_plugin_project:upload_file_type_settings_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"uploading-svgwebp-and-ico-files\": [\n        \"cpe:2.3:a:uploading_svg\\\\,_webp_and_ico_files_project:uploading_svg\\\\,_webp_and_ico_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"upunzipper\": [\n        \"cpe:2.3:a:upunzipper_project:upunzipper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"url-shortify\": [\n        \"cpe:2.3:a:kaizencoders:url_shortify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"usc-e-shop\": [\n        \"cpe:2.3:a:collne:welcart_e-commerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:welcart:welcart_e-commerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"use-any-font\": [\n        \"cpe:2.3:a:anyfont_plugin_project:anyfont:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:dineshkarki:use_any_font:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"useful-banner-manager\": [\n        \"cpe:2.3:a:useful_banner_manager_project:useful_banner_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-access-manager\": [\n        \"cpe:2.3:a:user_access_manager_project:user_access_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-activation-email\": [\n        \"cpe:2.3:a:user-activation-email_project:user-activation-email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-activity-log\": [\n        \"cpe:2.3:a:solwininfotech:user_activity_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-activity-tracking-and-log\": [\n        \"cpe:2.3:a:mooveagency:user_activity_tracking_and_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-avatar-reloaded\": [\n        \"cpe:2.3:a:wpexperts:user_avatar-reloaded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-blocker\": [\n        \"cpe:2.3:a:solwininfotech:user_blocker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-domain-whitelist\": [\n        \"cpe:2.3:a:user_domain_whitelist_project:user_domain_whitelist:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-export-with-their-meta-data\": [\n        \"cpe:2.3:a:export_users_with_meta_project:export_users_with_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-location-and-ip\": [\n        \"cpe:2.3:a:user_location_and_ip_project:user_location_and_ip:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-login-history\": [\n        \"cpe:2.3:a:user-login-history_project:user-login-history:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-login-log\": [\n        \"cpe:2.3:a:intechnosoftware:user_login_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-meta\": [\n        \"cpe:2.3:a:user-meta:user_meta_user_profile_builder_and_user_management:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-meta-manager\": [\n        \"cpe:2.3:a:user_meta_manager_project:user_meta_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-meta-shortcodes\": [\n        \"cpe:2.3:a:user_meta_shortcodes_project:user_meta_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-photo\": [\n        \"cpe:2.3:a:user_photo_project:user_photo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-private-files\": [\n        \"cpe:2.3:a:mediajedi:user_private_files:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:userprivatefiles:wordpress_file_sharing_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-registration\": [\n        \"cpe:2.3:a:wpeverest:user_registration:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpeverest:user_registration_\\\\\\u0026_membership:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"user-role\": [\n        \"cpe:2.3:a:bestwebsoft:user_role:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-spam-remover\": [\n        \"cpe:2.3:a:joelhardi:user_spam_remover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-submitted-posts\": [\n        \"cpe:2.3:a:plugin-planet:user_submitted_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"user-verification\": [\n        \"cpe:2.3:a:pickplugins:user_verification:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userback\": [\n        \"cpe:2.3:a:userback:userback:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userfeedback-lite\": [\n        \"cpe:2.3:a:monsterinsights:userfeedback:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"userheat\": [\n        \"cpe:2.3:a:userlocal:userheat_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userlike\": [\n        \"cpe:2.3:a:userlike:userlike:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userplus\": [\n        \"cpe:2.3:a:wpuserplus:userplus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userpro\": [\n        \"cpe:2.3:a:userproplugin:userpro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"users-customers-import-export-for-wp-woocommerce\": [\n        \"cpe:2.3:a:webtoffee:import_export_wordpress_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"users-ultra\": [\n        \"cpe:2.3:a:usersultra:users_ultra_membership:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"userswp\": [\n        \"cpe:2.3:a:ayecode:userswp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ut-shortcodes\": [\n        \"cpe:2.3:a:unitedthemes:shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"utubevideo-gallery\": [\n        \"cpe:2.3:a:utubevideo_gallery_project:utubevideo_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"v-form\": [\n        \"cpe:2.3:a:vikasratudi:lifetime_free_drag_\\\\\\u0026_drop_contact_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vaultpress\": [\n        \"cpe:2.3:a:automattic:vaultpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vayu-blocks\": [\n        \"cpe:2.3:a:themehunk:vayu_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vc-tabs\": [\n        \"cpe:2.3:a:oxilab:responsive_tabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"verge3d\": [\n        \"cpe:2.3:a:soft8soft:verge3d:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"verse-o-matic\": [\n        \"cpe:2.3:a:verse-o-matic_project:verse-o-matic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vertical-marquee-plugin\": [\n        \"cpe:2.3:a:gopiplus:vertical_marquee_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vertical-scroll-recent-registered-user\": [\n        \"cpe:2.3:a:gopiplus:vertical_scroll_recent_registered_user:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"very-simple-contact-form\": [\n        \"cpe:2.3:a:very_simple_contact_form_project:very_simple_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"very-simple-google-maps\": [\n        \"cpe:2.3:a:very_simple_google_maps_project:very_simple_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-background\": [\n        \"cpe:2.3:a:pushlabs:video_background:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-central\": [\n        \"cpe:2.3:a:video_central_project:video_central:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-comments-webcam-recorder\": [\n        \"cpe:2.3:a:videowhisper:video_comments_webcam_recorder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-conferencing-with-zoom-api\": [\n        \"cpe:2.3:a:imdpen:video_conferencing_with_zoom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-embed-box\": [\n        \"cpe:2.3:a:video-embed-box_project:video-embed-box:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-playlist-and-gallery-plugin\": [\n        \"cpe:2.3:a:cincopa:video_and_media_plug-in:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-slider-with-thumbnails\": [\n        \"cpe:2.3:a:i13websolution:video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-thumbnails\": [\n        \"cpe:2.3:a:video_thumbnails_project:video_thumbnails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-wc-gallery\": [\n        \"cpe:2.3:a:martinvalchev:video_gallery_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"video-widget\": [\n        \"cpe:2.3:a:nikodev:video_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"videojs-html5-player\": [\n        \"cpe:2.3:a:wphowto:videojs_html5_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"videowhisper-live-streaming-integration\": [\n        \"cpe:2.3:a:videowhisper:videowhisper_live_streaming_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"videowhisper-video-conference-integration\": [\n        \"cpe:2.3:a:videowhisper:video_conference:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"videowhisper-video-presentation\": [\n        \"cpe:2.3:a:videowhisper:video_presentation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"view-all-posts-pages\": [\n        \"cpe:2.3:a:oomphinc:view_all_post\\\\'s_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"views-for-wpforms-lite\": [\n        \"cpe:2.3:a:formviewswp:views_for_wpforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vikbooking\": [\n        \"cpe:2.3:a:vikwp:vikbooking_hotel_booking_engine_\\\\\\u0026_pms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vikrentcar\": [\n        \"cpe:2.3:a:e4jconnect:vikrentcar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vikrestaurants\": [\n        \"cpe:2.3:a:e4jconnect:vikrestaurants_table_reservations_and_take-away:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vimeography\": [\n        \"cpe:2.3:a:davekiss:vimeography:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"viral-signup\": [\n        \"cpe:2.3:a:wow-company:viral_signup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vision\": [\n        \"cpe:2.3:a:vision_interactive_project:vision_interactive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visitors-online\": [\n        \"cpe:2.3:a:bestwebsoft:visitors_online:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visitors-traffic-real-time-statistics\": [\n        \"cpe:2.3:a:wp-buy:visitor_traffic_real_time_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visual-form-builder\": [\n        \"cpe:2.3:a:vfbpro:visual_form_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visual-link-preview\": [\n        \"cpe:2.3:a:bootstrapped:visual_link_preview:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visual-portfolio\": [\n        \"cpe:2.3:a:visualportfolio:visual_portfolio\\\\,_photo_gallery_\\\\\\u0026_post_grid:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visualcomposer\": [\n        \"cpe:2.3:a:visualcomposer:visual_composer_website_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"visualizer\": [\n        \"cpe:2.3:a:themeisle:visualizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vk-all-in-one-expansion-unit\": [\n        \"cpe:2.3:a:vektor-inc:vk_all_in_one_expansion_unit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vk-block-patterns\": [\n        \"cpe:2.3:a:vektor-inc:vk_block_patterns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vk-blocks\": [\n        \"cpe:2.3:a:vektor-inc:vk_blocks:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:vektor-inc:vk_blocks:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:vektor-inc:vk_blocks:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"vk-filter-search\": [\n        \"cpe:2.3:a:vektor-inc:vk_filter_search:*:*:*:*:*:*:*:*\"\n      ],\n      \"vk-poster-group\": [\n        \"cpe:2.3:a:zixn:vk_poster_group:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vm-backups\": [\n        \"cpe:2.3:a:vm_backups_project:vm_backups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vod-infomaniak\": [\n        \"cpe:2.3:a:infomaniak:vod_infomaniak:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vospari-forms\": [\n        \"cpe:2.3:a:vospari_forms_project:vospari_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"voting-record\": [\n        \"cpe:2.3:a:voting_record_project:voting_record:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vr-calendar-sync\": [\n        \"cpe:2.3:a:vr_calendar_project:vr_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vrm360\": [\n        \"cpe:2.3:a:maurice:vrm360:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vslider\": [\n        \"cpe:2.3:a:vibethemes:vslider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"w-dalil\": [\n        \"cpe:2.3:a:w-dalil_project:w-dalil:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"w2s-migrate-woo-to-shopify\": [\n        \"cpe:2.3:a:villatheme:w2s:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"w3-total-cache\": [\n        \"cpe:2.3:a:boldgrid:w3_total_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"w3speedster-wp\": [\n        \"cpe:2.3:a:w3speedster:w3speedster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"w4-post-list\": [\n        \"cpe:2.3:a:w4_post_list_project:w4_post_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wa-sticky-button\": [\n        \"cpe:2.3:a:okapitech:wp_sticky_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"waiting\": [\n        \"cpe:2.3:a:plugin:waiting:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"waitlist-woocommerce\": [\n        \"cpe:2.3:a:xootix:waitlist_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wassup\": [\n        \"cpe:2.3:a:wassup_real_time_analytics_project:wassup_real_time_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"watcheezy\": [\n        \"cpe:2.3:a:targetfirst:watcheezy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"watchtowerhq\": [\n        \"cpe:2.3:a:watchtowerhq:watchtower:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wats\": [\n        \"cpe:2.3:a:ticket-system:wordpress_advanced_ticket_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"watu\": [\n        \"cpe:2.3:a:kibokolabs:watu_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-affiliate\": [\n        \"cpe:2.3:a:codexpert:wc_affiliate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-builder\": [\n        \"cpe:2.3:a:hasthemes:wc_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-checkout-getnet\": [\n        \"cpe:2.3:a:coffee-code:plugin_oficial:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-dynamic-pricing-and-discounts\": [\n        \"cpe:2.3:a:rightpress:woocommerce_dynamic_pricing_\\\\\\u0026_discounts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-frontend-manager\": [\n        \"cpe:2.3:a:wclovers:frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-gsheetconnector\": [\n        \"cpe:2.3:a:gsheetconnector:woocommerce_google_sheet_connector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-multivendor-marketplace\": [\n        \"cpe:2.3:a:wclovers:wcfm_marketplace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-multivendor-membership\": [\n        \"cpe:2.3:a:wclovers:wcfm_membership:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-out-of-stock-message\": [\n        \"cpe:2.3:a:coderstimes:out_of_stock_message_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-product-table-lite\": [\n        \"cpe:2.3:a:wcproducttable:woocommerce_product_table:*:*:*:*:lite:wordpress:*:*\",\n        \"cpe:2.3:a:wcproducttable:woocommerce_product_table_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-return-warrranty\": [\n        \"cpe:2.3:a:return_and_warranty_management_system_for_woocommerce_project:return_and_warranty_management_system_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-sales-notification\": [\n        \"cpe:2.3:a:hasthemes:wc_sales_notification:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-serial-numbers\": [\n        \"cpe:2.3:a:pluginever:wc_serial_numbers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-support-system\": [\n        \"cpe:2.3:a:ilghera:woocommerce_support_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc-vendors\": [\n        \"cpe:2.3:a:rymera:wc_vendors:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wcvendors:woocommerce_multi-vendor\\\\,_woocommerce_marketplace\\\\,_product_vendors:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wc4bp\": [\n        \"cpe:2.3:a:themekraft:buddypress_woocommerce_my_account_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wck-custom-fields-and-custom-post-types-creator\": [\n        \"cpe:2.3:a:cozmoslabs:custom_post_types_and_custom_fields_creator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wcp-contact-form\": [\n        \"cpe:2.3:a:webcodin:wcp_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wd-facebook-feed\": [\n        \"cpe:2.3:a:10web:10web_social_post_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wd-google-analytics\": [\n        \"cpe:2.3:a:10web:10webanalytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wd-google-maps\": [\n        \"cpe:2.3:a:10web:map_builder_for_google_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wd-instagram-feed\": [\n        \"cpe:2.3:a:10web:10websocial:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:10web:social_feed_for_instagram:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"wds-multisite-aggregate\": [\n        \"cpe:2.3:a:webdevstudios:wds_multisite_aggregate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weather-effect\": [\n        \"cpe:2.3:a:awplife:weather_effect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weather-in-any-city-widget\": [\n        \"cpe:2.3:a:eltiempoen:weather_widget_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weaverx-theme-support\": [\n        \"cpe:2.3:a:weavertheme:weaver_xtreme_theme_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web-directory-free\": [\n        \"cpe:2.3:a:salephpscripts:web_directory_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web-invoice\": [\n        \"cpe:2.3:a:mohanjith:web_invoice:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web-stat\": [\n        \"cpe:2.3:a:web-stat:web-stat:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:web-stat_project:web-stat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web-stories\": [\n        \"cpe:2.3:a:google:web_stories:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web-stories-enhancer\": [\n        \"cpe:2.3:a:magazine3:web_stories_enhancer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"web3-authentication\": [\n        \"cpe:2.3:a:miniorange:web3_-_crypto_wallet_login_\\\\\\u0026_nft_token_gating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webapp-builder\": [\n        \"cpe:2.3:a:webapp-builder_project:webapp-builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webappick-product-feed-for-woocommerce\": [\n        \"cpe:2.3:a:webappick:woocommerce_product_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webba-booking-lite\": [\n        \"cpe:2.3:a:webba-booking:webba_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webcam-2way-videochat\": [\n        \"cpe:2.3:a:videowhisper:2way_videocalls_and_random_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webful-simple-grocery-shop\": [\n        \"cpe:2.3:a:wordpress_simple_shop_project:wordpress_simple_shop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webinar-ignition\": [\n        \"cpe:2.3:a:saleswonder:webinarignition:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weblibrarian\": [\n        \"cpe:2.3:a:deepsoft:weblibrarian:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weblizar-pinterest-feeds\": [\n        \"cpe:2.3:a:weblizar:pinterest-feeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webo-facto-connector\": [\n        \"cpe:2.3:a:medialibs:webo-facto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webp-converter-for-media\": [\n        \"cpe:2.3:a:webp_converter_for_media_project:webp_converter_for_media:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webp-express\": [\n        \"cpe:2.3:a:bitwise-it:webp_express:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webp_express_project:webp_express:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webpushr-web-push-notifications\": [\n        \"cpe:2.3:a:webpushr:web_push_notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webriti-smtp-mail\": [\n        \"cpe:2.3:a:webriti:webriti_smtp_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"websimon-tables\": [\n        \"cpe:2.3:a:websimon-tables_project:websimon-tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"website-article-monetization-by-magenet\": [\n        \"cpe:2.3:a:magenet:website_article_monetization:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"website-file-changes-monitor\": [\n        \"cpe:2.3:a:melapress:melapress_file_monitor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"website-monetization-by-magenet\": [\n        \"cpe:2.3:a:magenet:website_monetization:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webtexttool\": [\n        \"cpe:2.3:a:textmetrics:textmetrics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"webwinkelkeur\": [\n        \"cpe:2.3:a:webwinkelkeur_project:webwinkelkeur:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wechat-broadcast\": [\n        \"cpe:2.3:a:wechat_broadcast_project:wechat_broadcast:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wedevs-project-manager\": [\n        \"cpe:2.3:a:wedevs:wp_project_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weekly-schedule\": [\n        \"cpe:2.3:a:weekly_schedule_project:weekly_schedule:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weforms\": [\n        \"cpe:2.3:a:weformspro:weforms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weixin-robot-advanced\": [\n        \"cpe:2.3:a:wpjam:wechat_robot:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"wemail\": [\n        \"cpe:2.3:a:wedevs:wemail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wf-cookie-consent\": [\n        \"cpe:2.3:a:wunderfarm:wf_cookie_consent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wh-testimonials\": [\n        \"cpe:2.3:a:webhostings:wh_testimonials:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wha-puzzle\": [\n        \"cpe:2.3:a:webhelpagency:wha_puzzle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"whatsapp\": [\n        \"cpe:2.3:a:firecask:whatsapp_share_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"whatshelp-chat-button\": [\n        \"cpe:2.3:a:getbutton:chat_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wheel-of-life\": [\n        \"cpe:2.3:a:kraftplugins:wheel_of_life:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"which-template-file\": [\n        \"cpe:2.3:a:gillesdumas:which_template_file:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"white-label\": [\n        \"cpe:2.3:a:linksoftwarellc:white_label:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"white-label-branding-elementor\": [\n        \"cpe:2.3:a:white_label_branding_for_elementor_page_builder_project:white_label_branding_for_elementor_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"white-label-cms\": [\n        \"cpe:2.3:a:videousermanuals:white_label_cms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"whizz\": [\n        \"cpe:2.3:a:browserweb:whizz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"whizzy\": [\n        \"cpe:2.3:a:upqode:whizzy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wholesale-market\": [\n        \"cpe:2.3:a:cedcommerce:wholesale_market:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wholesale-pricing-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:quantity_dynamic_pricing_\\\\\\u0026_bulk_discounts_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wholesalex\": [\n        \"cpe:2.3:a:wpxpo:wholesalex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"whydowork-adsense\": [\n        \"cpe:2.3:a:whydowork_adsense_project:whydowork_adsense:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wicked-folders\": [\n        \"cpe:2.3:a:wickedplugins:wicked_folders:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget-google-reviews\": [\n        \"cpe:2.3:a:richplugins:plugin_for_google_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget-logic\": [\n        \"cpe:2.3:a:wpchef:widget_logic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget-settings-importexport\": [\n        \"cpe:2.3:a:porternovelli:widget_settings_importer\\\\/exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget-shortcode\": [\n        \"cpe:2.3:a:widget-shortcode_project:widget-shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget-twitter\": [\n        \"cpe:2.3:a:web-dorado:wd_widgettwitter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widget4call\": [\n        \"cpe:2.3:a:apidaze:widget4call:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widgetkit-for-elementor\": [\n        \"cpe:2.3:a:themesgrove:all-in-one_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"widgets-on-pages\": [\n        \"cpe:2.3:a:widgets-on-pages_project:widgets-on-pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"winterlock\": [\n        \"cpe:2.3:a:wp_system_log_project:wp_system_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wip-custom-login\": [\n        \"cpe:2.3:a:themeinprogress:wip_custom_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wise-chat\": [\n        \"cpe:2.3:a:kaine:wise_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wiseagentleadform\": [\n        \"cpe:2.3:a:wiseagent:wise_agent_capture_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wish-list-for-woocommerce\": [\n        \"cpe:2.3:a:wpfactory:wishlist_for_woocommerce\\\\:_multi_wishlists_per_customer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wishsuite\": [\n        \"cpe:2.3:a:hasthemes:wishsuite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wonderm00ns-simple-facebook-open-graph-tags\": [\n        \"cpe:2.3:a:webdados:open_graph_for_facebook\\\\,_google\\\\+_and_twitter_card_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wonderplugin-slider-lite\": [\n        \"cpe:2.3:a:wonderplugin:wonder_slider_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-abandoned-cart-recovery\": [\n        \"cpe:2.3:a:villatheme:abandoned_cart_recovery_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-addon-uploads\": [\n        \"cpe:2.3:a:imaginate-solutions:file_uploads_addon_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"woo-address-book\": [\n        \"cpe:2.3:a:hallme:woocommerce_address_book:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-advance-search\": [\n        \"cpe:2.3:a:dotstore:advance_search_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-advanced-sales-report-email\": [\n        \"cpe:2.3:a:zorem:sales_report_email_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-alidropship\": [\n        \"cpe:2.3:a:villatheme:dropshipping_and_fulfillment_for_aliexpress_and_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-altcoin-payment-gateway\": [\n        \"cpe:2.3:a:coinmarketstats:bitcoin_\\\\/_altcoin_payment_gateway_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-auto-coupons\": [\n        \"cpe:2.3:a:richardlerma:auto_coupons_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-badge-designer-lite\": [\n        \"cpe:2.3:a:accesspressthemes:badge_designer_lite_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-billing-with-invoicexpress\": [\n        \"cpe:2.3:a:ptwooplugins:invoicing_with_invoicexpress_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-billingo-plus\": [\n        \"cpe:2.3:a:woo_billingo_plus_project:woo_billingo_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-blocker-lite-prevent-fake-orders-and-blacklist-fraud-customers\": [\n        \"cpe:2.3:a:multidots:fraud_prevention_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-bought-together\": [\n        \"cpe:2.3:a:wpclever:wpc_frequently_bought_together_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"woo-bulk-editor\": [\n        \"cpe:2.3:a:pluginus:bear_-_woocommerce_bulk_editor_and_products_manager_professional:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-bulk-price-update\": [\n        \"cpe:2.3:a:technocrackers:bulk_price_update_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-cart-abandonment-recovery\": [\n        \"cpe:2.3:a:cartflows:woocommerce_cart_abandonment_recovery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-cart-all-in-one\": [\n        \"cpe:2.3:a:villatheme:cart_all_in_one_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-checkout-field-editor-pro\": [\n        \"cpe:2.3:a:themehigh:checkout_field_editor_for_woocommerce:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:themehigh:checkout_field_editor_for_woocommerce:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"woo-checkout-for-digital-goods\": [\n        \"cpe:2.3:a:dotstore:woocommerce_checkout_for_digital_goods:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-conditional-discount-rules-for-checkout\": [\n        \"cpe:2.3:a:multidots:dynamic_pricing_and_discount_rules_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-confirmation-email\": [\n        \"cpe:2.3:a:wisetr:user_email_verification_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:xlplugins:woo-confirmation-email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-coupon-usage\": [\n        \"cpe:2.3:a:relywp:coupon_affiliates:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-currency\": [\n        \"cpe:2.3:a:woobewoo:wbw_currency_switcher_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-custom-and-sequential-order-number\": [\n        \"cpe:2.3:a:vjinfotech:woo_custom_and_sequential_order_number:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-custom-emails\": [\n        \"cpe:2.3:a:wp3sixty:woo_custom_emails:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-discount-rules\": [\n        \"cpe:2.3:a:flycart:discount_rules_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-ecommerce-tracking-for-google-and-facebook\": [\n        \"cpe:2.3:a:multidots:enhanced_ecommerce_google_analytics_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-esto\": [\n        \"cpe:2.3:a:rebing:woocommerce_esto:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-exfood\": [\n        \"cpe:2.3:a:exthemes:woocommerce_food:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-floating-cart-lite\": [\n        \"cpe:2.3:a:xplodedthemes:xt_floating_cart_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-gift-cards-lite\": [\n        \"cpe:2.3:a:wpswings:ultimate_gift_cards_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-gutenberg-products-block\": [\n        \"cpe:2.3:a:automattic:woocommerce_blocks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-moneybird\": [\n        \"cpe:2.3:a:techastha:integration_of_moneybird_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-order-export-lite\": [\n        \"cpe:2.3:a:algolplus:advanced_order_export_for_woocommerce:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"woo-orders-tracking\": [\n        \"cpe:2.3:a:villatheme:orders_tracking_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-parcel-pro\": [\n        \"cpe:2.3:a:parcelpro:parcel_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-pdf-invoice-builder\": [\n        \"cpe:2.3:a:rednao:woocommerce_pdf_invoice_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-popup\": [\n        \"cpe:2.3:a:woo-popup_project:woo-popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-preview-emails\": [\n        \"cpe:2.3:a:preview_e-mails_for_woocommerce_project:preview_e-mails_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-bundle\": [\n        \"cpe:2.3:a:wpclever:wpc_product_bundles_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-category-discount\": [\n        \"cpe:2.3:a:quanticedgesolutions:category_discount_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-feed-pro\": [\n        \"cpe:2.3:a:adtribes:product_feed_pro_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-slider\": [\n        \"cpe:2.3:a:shapedplugin:product_slider_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-table\": [\n        \"cpe:2.3:a:codeastrology:woo_product_table:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-product-variation-gallery\": [\n        \"cpe:2.3:a:radiustheme:variation_images_gallery_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-products-widgets-for-elementor\": [\n        \"cpe:2.3:a:themelocation:widgets_for_woocommerce_products_on_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-qiwi-payment-gateway\": [\n        \"cpe:2.3:a:qiwi:woo-qiwi-payment-gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-quick-reports\": [\n        \"cpe:2.3:a:dotstore:woocommerce_quick_reports:*:*:*:*:*:*:*:*\"\n      ],\n      \"woo-refund-and-exchange-lite\": [\n        \"cpe:2.3:a:wpswings:return_refund_and_exchange_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-related-products-refresh-on-reload\": [\n        \"cpe:2.3:a:peachpay:related_products_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-save-abandoned-carts\": [\n        \"cpe:2.3:a:majas-lapu-izstrade:cartbounty:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-shipping-dpd-baltic\": [\n        \"cpe:2.3:a:dpdgroup:woocommerce_shipping:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-slider-pro-drag-drop-slider-builder-for-woocommerce\": [\n        \"cpe:2.3:a:binarycarpenter:woo_slider_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-smart-compare\": [\n        \"cpe:2.3:a:wpclever:wpc_smart_compare_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-smart-quick-view\": [\n        \"cpe:2.3:a:wpclever:wpc_smart_quick_view_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-smart-wishlist\": [\n        \"cpe:2.3:a:wpclever:wpc_smart_wishlist_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-social-login\": [\n        \"cpe:2.3:a:wpwebelite:woocommerce_social_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-stripe-payment\": [\n        \"cpe:2.3:a:paymentplugins:stripe_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-thank-you-page-customizer\": [\n        \"cpe:2.3:a:villatheme:woocommerce_thank_you_page_customizer:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:villatheme:woocommerce_thank_you_page_customizer:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"woo-thank-you-page-nextmove-lite\": [\n        \"cpe:2.3:a:xlplugins:nextmove:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"woo-tools\": [\n        \"cpe:2.3:a:themefarmer:woocommerce_tools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-tranzila-gateway\": [\n        \"cpe:2.3:a:antonbond:woocommerce_tranzila_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-ups-pickup\": [\n        \"cpe:2.3:a:ashamil:opsi_israel_domestic_shipments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-variation-gallery\": [\n        \"cpe:2.3:a:getwooplugins:additional_variation_images_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-variation-swatches\": [\n        \"cpe:2.3:a:getwooplugins:woo-variation-swatches:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:variation_swatches_for_woocommerce_project:variation_swatches_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-vietnam-checkout\": [\n        \"cpe:2.3:a:levantoan:woocommerce_vietnam_checkout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-vipps\": [\n        \"cpe:2.3:a:wp-hosting:pay_with_vipps_and_mobilepay_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-wallet\": [\n        \"cpe:2.3:a:standalonetech:terawallet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woo-wholesale-pricing\": [\n        \"cpe:2.3:a:wpexperts:wholesale_for_woocommerce:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"woo-zoho\": [\n        \"cpe:2.3:a:crmperks:integration_for_woocommerce_and_zoho_crm\\\\,_books\\\\,_invoice\\\\,_inventory\\\\,_bigin:*:*:*:*:*:*:*:*\"\n      ],\n      \"wooCommerce-order-proposal\": [\n        \"cpe:2.3:a:wpovernight:woocommerce_order_proposal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce\": [\n        \"cpe:2.3:a:woocommerce:woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:woocommerce:woocommerce:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:woothemes:woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-abandoned-cart\": [\n        \"cpe:2.3:a:tychesoftwares:abandoned_cart_lite_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-add-to-cart-custom-redirect\": [\n        \"cpe:2.3:a:renventura:woocommerce_add_to_cart_custom_redirect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-ajax-filters\": [\n        \"cpe:2.3:a:berocket:advanced_ajax_product_filters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-amazon-affiliates-light-version\": [\n        \"cpe:2.3:a:wzone_project:wzone:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"woocommerce-and-wp-emember-integration\": [\n        \"cpe:2.3:a:tipsandtricks-hq:wp_emember:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-catalog-enquiry\": [\n        \"cpe:2.3:a:multivendorx:product_catalog_mode_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wc-marketplace:wc_catalog_enquiry:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-currency-switcher\": [\n        \"cpe:2.3:a:pluginus:fox_-_currency_switcher_professional_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:pluginus:woocommerce_currency_switcher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-cvr-payment-gateway\": [\n        \"cpe:2.3:a:yanco:woocommerce_cvr_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-delivery-notes\": [\n        \"cpe:2.3:a:tychesoftwares:print_invoice_\\\\\\u0026_delivery_notes_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-exporter\": [\n        \"cpe:2.3:a:visser:store_exporter_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-for-japan\": [\n        \"cpe:2.3:a:artisanworkshop:japanized_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-gateway-paypal-express-checkout\": [\n        \"cpe:2.3:a:woocommerce:paypal_checkout_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-gateway-stripe\": [\n        \"cpe:2.3:a:woocommerce:stripe_payment_gateway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-jetpack\": [\n        \"cpe:2.3:a:booster:booster_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:booster:booster_for_woocommerce:*:*:*:*:elite:wordpress:*:*\"\n      ],\n      \"woocommerce-maintenance-mode\": [\n        \"cpe:2.3:a:mattroyal:woocommerce_maintenance_mode:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"woocommerce-menu-extension\": [\n        \"cpe:2.3:a:augustinfotech:woocommerce_menu_extension:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-mercadopago\": [\n        \"cpe:2.3:a:mercadopago:mercado_pago_payments_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-multi-currency\": [\n        \"cpe:2.3:a:villatheme:woocommerce_multi_currency:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-multilingual\": [\n        \"cpe:2.3:a:onthegosystems:woocommerce_multilingual_\\\\\\u0026_multicurrency:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-payments\": [\n        \"cpe:2.3:a:automattic:woopayments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-pdf-invoices-packing-slips\": [\n        \"cpe:2.3:a:wpovernight:woocommerce_pdf_invoices\\\\\\u0026_packing_slips:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-product-addon\": [\n        \"cpe:2.3:a:najeebmedia:ppom_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:themeisle:product_addons_\\\\\\u0026_fields_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-product-importer\": [\n        \"cpe:2.3:a:visser:woocommerce_-_product_importer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-product-stock-alert\": [\n        \"cpe:2.3:a:multivendorx:product_stock_manager_\\\\\\u0026_notifier_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-products-designer\": [\n        \"cpe:2.3:a:orion:woocommerce_products_designer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-products-filter\": [\n        \"cpe:2.3:a:pluginus:husky_-_products_filter_professional_for_woocommerce:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:pluginus:woocommerce_products_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-products-slider\": [\n        \"cpe:2.3:a:pickplugins:product_slider_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-square\": [\n        \"cpe:2.3:a:automattic:woocommerce_square:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-stock-manager\": [\n        \"cpe:2.3:a:storeapps:stock_manager_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-store-toolkit\": [\n        \"cpe:2.3:a:visser:store_toolkit_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-superfaktura\": [\n        \"cpe:2.3:a:superfaktura:superfaktura_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-wholesale-prices\": [\n        \"cpe:2.3:a:rymera:wholesale_suite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woocommerce-wholesale-pricing\": [\n        \"cpe:2.3:a:wpexperts:wholesale_for_woocommerce:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"woodiscuz-woocommerce-comments\": [\n        \"cpe:2.3:a:gvectors:woodiscuz_-_woocommerce_comments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wooemailreport\": [\n        \"cpe:2.3:a:eggemplo:woocommerce_email_report:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wooframework-tweaks\": [\n        \"cpe:2.3:a:woocommerce:wooframework_tweaks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woolentor-addons\": [\n        \"cpe:2.3:a:hasthemes:shoplentor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:hasthemes:woolentor_-_woocommerce_elementor_addons_\\\\+_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woosidebars\": [\n        \"cpe:2.3:a:woocommerce:woosidebars:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woostagram-connect\": [\n        \"cpe:2.3:a:asepbagjapriandana:woostagram_connect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woostify-sites-library\": [\n        \"cpe:2.3:a:woostify:sites_library:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woosupply\": [\n        \"cpe:2.3:a:longwatchstudio:woosupply:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wooswipe\": [\n        \"cpe:2.3:a:thriveweb:wooswipe_woocommerce_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woovip\": [\n        \"cpe:2.3:a:longwatchstudio:woovip:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woovirtualwallet\": [\n        \"cpe:2.3:a:longwatchstudio:woovirtualwallet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"woozone\": [\n        \"cpe:2.3:a:aa-team:wzone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"word-balloon\": [\n        \"cpe:2.3:a:back2nature:word_balloon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"word-replacer-ultra\": [\n        \"cpe:2.3:a:charlestsmith:word_replacer_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordapp\": [\n        \"cpe:2.3:a:wordapp:wordapp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordfence\": [\n        \"cpe:2.3:a:wordfence:wordfence_security:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wordfence_security_project:wordfence_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordlift\": [\n        \"cpe:2.3:a:wordlift:wordlift:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-23-related-posts-plugin\": [\n        \"cpe:2.3:a:sovrn:wordpress_related_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-access-control\": [\n        \"cpe:2.3:a:brandonwamboldt:wordpress_access_control:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-backup-to-dropbox\": [\n        \"cpe:2.3:a:wordpress_backup_to_dropbox_project:wordpress_backup_to_dropbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-database-reset\": [\n        \"cpe:2.3:a:webfactoryltd:wp_database_reset:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-easy-paypal-payment-or-donation-accept-plugin\": [\n        \"cpe:2.3:a:tipsandtricks-hq:easy_accept_payments_for_paypal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-feed-statistics\": [\n        \"cpe:2.3:a:feed_statistics_project:feed_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-flash-uploader\": [\n        \"cpe:2.3:a:tinywebgallery:wordpress_flash_uploader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-form-manager\": [\n        \"cpe:2.3:a:form_manager_project:form_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-gallery-plugin\": [\n        \"cpe:2.3:a:gallery_project:gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-meta-robots\": [\n        \"cpe:2.3:a:typomedia:wordpress_meta_robots:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-mobile-pack\": [\n        \"cpe:2.3:a:wpmobilepack:wordpress_mobile_pack:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-nextgen-galleryview\": [\n        \"cpe:2.3:a:wordpress_nextgen_galleryview_project:wordpress_nextgen_galleryview:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-notification-bar\": [\n        \"cpe:2.3:a:seedprod:wordpress_notification_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-ping-optimizer\": [\n        \"cpe:2.3:a:wordpress_ping_optimizer_project:wordpress_ping_optimizer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-popular-posts\": [\n        \"cpe:2.3:a:wordpress_popular_posts_project:wordpress_popular_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-popup\": [\n        \"cpe:2.3:a:incsub:hustle:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpmudev:hustle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-seo\": [\n        \"cpe:2.3:a:yoast:wordpress_seo:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yoast:yoast_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-simple-paypal-shopping-cart\": [\n        \"cpe:2.3:a:tipsandtricks-hq:wordpress_simple_paypal_shopping_cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-social-login\": [\n        \"cpe:2.3:a:wordpress_social_login_project:wordpress_social_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wordpress-toolbar\": [\n        \"cpe:2.3:a:abhinavsingh:wordpress_toolbar:*:*:*:*:*:*:wordpress:*\"\n      ],\n      \"wordpress-tooltips\": [\n        \"cpe:2.3:a:tooltips:wordpress_tooltips:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wordpress-users\": [\n        \"cpe:2.3:a:jonathonkemp:wordpress_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"workreap\": [\n        \"cpe:2.3:a:amentotech:workreap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wow-moodboard-lite\": [\n        \"cpe:2.3:a:wownmedia:wow_moodboard:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wowpth\": [\n        \"cpe:2.3:a:andreafarracani:wowpth:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-2fa\": [\n        \"cpe:2.3:a:melapress:wp_2fa:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpwhitesecurity:wp_2fa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-404-auto-redirect-to-similar-post\": [\n        \"cpe:2.3:a:hwk:wp_404_auto_redirect_to_similar_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-abstracts-manuscripts-manager\": [\n        \"cpe:2.3:a:kevonadonis:wp_abstracts:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-academic-people\": [\n        \"cpe:2.3:a:wp_academic_people_list_project:wp_academic_people_list:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-accessibility-helper\": [\n        \"cpe:2.3:a:volkov:wp_accessibility_helper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-admin-logo-changer\": [\n        \"cpe:2.3:a:wp_admin_logo_changer_project:wp_admin_logo_changer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-advanced-search\": [\n        \"cpe:2.3:a:internet-formation:wp-advanced-search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-airbnb-review-slider\": [\n        \"cpe:2.3:a:ljapps:wp_airbnb_review_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-all-export\": [\n        \"cpe:2.3:a:soflyy:export_any_wordpress_data_to_xml\\\\/csv:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:soflyy:wp_all_export:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"wp-all-import\": [\n        \"cpe:2.3:a:soflyy:import_any_wordpress_data_to_xml\\\\/csv:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:soflyy:wp_all_import:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpallimport:wp_all_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-amazon-shop\": [\n        \"cpe:2.3:a:amadercode:dropshipping_\\\\\\u0026_affiliation_with_amazon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-analytify\": [\n        \"cpe:2.3:a:analytify:analytify_-_google_analytics_dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-appbox\": [\n        \"cpe:2.3:a:wp-appbox_project:wp-appbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-asset-clean-up\": [\n        \"cpe:2.3:a:asset_cleanup\\\\:_page_speed_booster_project:asset_cleanup\\\\:_page_speed_booster:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:gabelivan:asset_cleanup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-athletics\": [\n        \"cpe:2.3:a:wp_athletics_project:wp_athletics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-attachment-export\": [\n        \"cpe:2.3:a:wp_attachment_export_project:wp_attachment_export:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-attachments\": [\n        \"cpe:2.3:a:marcomilesi:wp_attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-auto-affiliate-links\": [\n        \"cpe:2.3:a:flamescorpion:auto_affiliate_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-backgrounds-lite\": [\n        \"cpe:2.3:a:inoplugs:wp-backgrounds_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-backitup\": [\n        \"cpe:2.3:a:wpbackitup:backup_and_restore_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-baidu-submit\": [\n        \"cpe:2.3:a:wp_baidu_submit_project:wp_baidu_submit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ban\": [\n        \"cpe:2.3:a:wp-ban_project:wp-ban:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-base-booking-of-appointments-services-and-events\": [\n        \"cpe:2.3:a:wp-base:wp_base_booking_of_appointments\\\\,_services_and_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-best-quiz\": [\n        \"cpe:2.3:a:subina:wp_best_quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-better-permalinks\": [\n        \"cpe:2.3:a:wp_better_permalinks_project:wp_better_permalinks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-bibtex\": [\n        \"cpe:2.3:a:infinitescript:wp-bibtex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-bitly\": [\n        \"cpe:2.3:a:bitly:bitly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-blocks-hub\": [\n        \"cpe:2.3:a:wpblockshub:wp_blocks_hub:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-blog-post-layouts\": [\n        \"cpe:2.3:a:codevibrant:wp_blog_post_layouts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-blogs-planetarium\": [\n        \"cpe:2.3:a:wp-blogs-planetarium_project:wp-blogs-planetarium:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-board\": [\n        \"cpe:2.3:a:wp-board_project:wp-board:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-booking-system\": [\n        \"cpe:2.3:a:wpbookingsystem:wp_booking_system:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpbookingsystem:wp_booking_system:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wpbookingsystem:wp_booking_system:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"wp-booklet\": [\n        \"cpe:2.3:a:binarystash:wp_booklet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-books-gallery\": [\n        \"cpe:2.3:a:hmplugin:wordpress_books_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-born-babies\": [\n        \"cpe:2.3:a:wp_born_babies_project:wp_born_babies:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-browser-update\": [\n        \"cpe:2.3:a:browserupdate:wp_browserupdate:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:marcosteinbrecher:wp_browserupdate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-bulk-delete\": [\n        \"cpe:2.3:a:xylusthemes:wp_bulk_delete:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-business-intelligence-lite\": [\n        \"cpe:2.3:a:wpbusinessintelligence:wp_business_intelligence:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wp-cachecom\": [\n        \"cpe:2.3:a:kenthhagstrom:wp-cachecom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cafe\": [\n        \"cpe:2.3:a:themewinter:wpcafe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-calendar\": [\n        \"cpe:2.3:a:wp_calendar_project:wp_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-captcha\": [\n        \"cpe:2.3:a:devnath_verma:wp_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-carousel-free\": [\n        \"cpe:2.3:a:techearty:carousel\\\\,_slider\\\\,_gallery_by_wp_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-catalogue\": [\n        \"cpe:2.3:a:maevelander:wp_catalogue:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-categories-widget\": [\n        \"cpe:2.3:a:wp-experts:wp-categories-widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-category-dropdown\": [\n        \"cpe:2.3:a:gcsdesign:wp_category_dropdown:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-category-meta\": [\n        \"cpe:2.3:a:randyhoyt:category_meta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-category-posts-list\": [\n        \"cpe:2.3:a:swashata:wp_category_post_list_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-central\": [\n        \"cpe:2.3:a:wpcentral:wpcentral:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cerber\": [\n        \"cpe:2.3:a:cerber:wp_cerber_security\\\\,_anti-spam_\\\\\\u0026_malware_scan:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpcerber:cerber_security_antispam_\\\\\\u0026_malware_scan:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cfm\": [\n        \"cpe:2.3:a:forumone:wp-cfm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-championship\": [\n        \"cpe:2.3:a:wp-championship_project:wp-championship:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-charts\": [\n        \"cpe:2.3:a:wpartisan:wordpress_charts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-chgfontsize\": [\n        \"cpe:2.3:a:wp-chgfontsize_project:wp-chgfontsize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-child-theme-generator\": [\n        \"cpe:2.3:a:wensolutions:wp_child_theme_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cirrus\": [\n        \"cpe:2.3:a:wp-cirrus_project:wp-cirrus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-clean-up\": [\n        \"cpe:2.3:a:wp_clean_up_project:wp_clean_up:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cleanfix\": [\n        \"cpe:2.3:a:undolog:wp_cleanfix:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-client-logo-carousel\": [\n        \"cpe:2.3:a:client_logo_carousel_project:client_logo_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-client-reports\": [\n        \"cpe:2.3:a:switchwp:wp_client_reports:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-clone-by-wp-academy\": [\n        \"cpe:2.3:a:backupbliss:clone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cloudflare-page-cache\": [\n        \"cpe:2.3:a:optimole:super_page_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-club-manager\": [\n        \"cpe:2.3:a:wpclubmanager:wp_club_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-code-highlightjs\": [\n        \"cpe:2.3:a:wp-code-highlightjs_project:wp-code-highlightjs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-coder\": [\n        \"cpe:2.3:a:wow-company:wp_coder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-comment-fields\": [\n        \"cpe:2.3:a:najeebmedia:wordpress_comments_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-commentnavi\": [\n        \"cpe:2.3:a:wp-commentnavi_project:wp-commentnavi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-compress-image-optimizer\": [\n        \"cpe:2.3:a:wpcompress:wp_compress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-concours\": [\n        \"cpe:2.3:a:olyos:wp-concours:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-consultant\": [\n        \"cpe:2.3:a:wp_consultant_project:wp_consultant:*:*:-:*:-:wordpress:*:*\"\n      ],\n      \"wp-contact-slider\": [\n        \"cpe:2.3:a:wpexperts:wp_contact_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-contacts-manager\": [\n        \"cpe:2.3:a:labarta:wp_contacts_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-content-copy-protector\": [\n        \"cpe:2.3:a:wp-buy:wp_content_copy_protection_\\\\\\u0026_no_right_click:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-content-filter\": [\n        \"cpe:2.3:a:wp_content_filter_-_censor_all_offensive_content_from_your_site_project:wp_content_filter_-_censor_all_offensive_content_from_your_site:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-contest\": [\n        \"cpe:2.3:a:andsonsdesign:wp-contest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-cookie-user-info\": [\n        \"cpe:2.3:a:accesspressthemes:wp_cookie_user_info:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-copyprotect\": [\n        \"cpe:2.3:a:wp-copyprotect_project:wp-copyprotect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-copysafe-web\": [\n        \"cpe:2.3:a:artistscope:copysafe_web_protection:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-ecommerce:easy_wp_smtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-courses\": [\n        \"cpe:2.3:a:stratospheredigital:wp_courses_lms:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpcoursesplugin:wp-courses:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-crm\": [\n        \"cpe:2.3:a:usabilitydynamics:wp-crm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-crowdfunding\": [\n        \"cpe:2.3:a:themeum:wp_crowdfunding:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-csv\": [\n        \"cpe:2.3:a:cpkwebsolutions:wp_csv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-csv-exporter\": [\n        \"cpe:2.3:a:kigurumi:csv_exporter:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_csv_exporter_project:wp_csv_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-curriculo-vitae\": [\n        \"cpe:2.3:a:williamluis:wp-curriculo_vitae_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-admin-interface\": [\n        \"cpe:2.3:a:wp_custom_admin_interface_project:wp_custom_admin_interface:*:*:*:*:*:*:*:*\"\n      ],\n      \"wp-custom-author-url\": [\n        \"cpe:2.3:a:wp_custom_author_url_project:wp_custom_author_url:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-body-class\": [\n        \"cpe:2.3:a:custom_body_class_project:custom_body_class:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-cursors\": [\n        \"cpe:2.3:a:hamidrezasepehr:wp_custom_cursors_\\\\|_wordpress_cursor_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-fields-search\": [\n        \"cpe:2.3:a:webhammer:wp_custom_fields_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-login-page\": [\n        \"cpe:2.3:a:custom_login_page_project:custom_login_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-post-template\": [\n        \"cpe:2.3:a:dotsquares:wp_custom_post_template:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-taxonomy-image\": [\n        \"cpe:2.3:a:aftabhusain:category_and_taxonomy_image:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-taxonomy-meta\": [\n        \"cpe:2.3:a:aftabhusain:category_and_taxonomy_meta_fields:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-custom-widget-area\": [\n        \"cpe:2.3:a:kishorkhambu:wp_custom_widget_area:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-customer-reviews\": [\n        \"cpe:2.3:a:gowebsolutions:wp_customer_reviews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-d3\": [\n        \"cpe:2.3:a:wp-d3_project:wp-d3:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-dark-mode\": [\n        \"cpe:2.3:a:wppool:wp_dark_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-dashboard-notes\": [\n        \"cpe:2.3:a:jeroensormani:wp_dashboard_notes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-data-access\": [\n        \"cpe:2.3:a:wpdataaccess:wp_data_access:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-database-backup\": [\n        \"cpe:2.3:a:wpseeds:wp_database_backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-datepicker\": [\n        \"cpe:2.3:a:androidbubbles:wp_datepicker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-db-backup\": [\n        \"cpe:2.3:a:deliciousbrains:database_backup:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-db-backup_project:wp-db-backup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-dbmanager\": [\n        \"cpe:2.3:a:wp-dbmanager_project:wp-dbmanager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-debugging\": [\n        \"cpe:2.3:a:wp_debugging_project:wp_debugging:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-design-maps-places\": [\n        \"cpe:2.3:a:amazingweb:wp-design-maps-places:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-discord-invite\": [\n        \"cpe:2.3:a:sarveshmrao:wp_discord_invite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-display-users\": [\n        \"cpe:2.3:a:display_users_project:display_users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-docs\": [\n        \"cpe:2.3:a:androidbubble:wp_docs:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:fahadmahmood:wp_docs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-domain-redirect\": [\n        \"cpe:2.3:a:wp_domain_redirect_project:wp_domain_redirect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-donate\": [\n        \"cpe:2.3:a:wp_donate_project:wp_donate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-downgrade\": [\n        \"cpe:2.3:a:wp_downgrade_project:wp_downgrade:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-downloadmanager\": [\n        \"cpe:2.3:a:lesterchan:wp-downloadmanager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-downloadmanager_project:wp-downloadmanager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ds-blog-map\": [\n        \"cpe:2.3:a:wp_ds_blog_map_project:wp_ds_blog_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-dummy-content-generator\": [\n        \"cpe:2.3:a:wp_dummy_content_generator_project:wp_dummy_content_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-duplicate-page\": [\n        \"cpe:2.3:a:ninjateam:wp_duplicate_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-e-commerce\": [\n        \"cpe:2.3:a:zao:wp_ecommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-easy-contact\": [\n        \"cpe:2.3:a:emarketdesign:wp_easy_contact:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-easy-gallery\": [\n        \"cpe:2.3:a:plugingarden:wp_easy_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-easy-pay\": [\n        \"cpe:2.3:a:wpeasypay:wp_easypay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-easycart\": [\n        \"cpe:2.3:a:wpeasycart:wp_easycart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ecommerce-paypal\": [\n        \"cpe:2.3:a:wpplugin:easy_paypal_\\\\\\u0026_stripe_buy_now_button:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpplugin:easy_paypal_buy_now_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-edit-menu\": [\n        \"cpe:2.3:a:wp_edit_menu_project:wp_edit_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-edit-username\": [\n        \"cpe:2.3:a:sajjadhsagor:wp_edit_username:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-editor\": [\n        \"cpe:2.3:a:benjaminrojas:wp_editor:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_editor_project:wp_editor:*:*:*:*:*:*:*:*\"\n      ],\n      \"wp-editormd\": [\n        \"cpe:2.3:a:iiong:wp_editor.md:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_editor.md_project:wp_editor.md:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-education\": [\n        \"cpe:2.3:a:hasthemes:wp_education:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-eggdrop\": [\n        \"cpe:2.3:a:backie:wp-eggdrop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-email\": [\n        \"cpe:2.3:a:wp-email_project:wp-email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-email-capture\": [\n        \"cpe:2.3:a:winwar:wp_email_capture:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-email-users\": [\n        \"cpe:2.3:a:techspawn:wp-email-users:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-embed-facebook\": [\n        \"cpe:2.3:a:wpembedfb:magic_embeds:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-emoji-one\": [\n        \"cpe:2.3:a:monchito:wp_emoji_one:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-event-aggregator\": [\n        \"cpe:2.3:a:xylusthemes:wp_event_aggregator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-event-manager\": [\n        \"cpe:2.3:a:wp-eventmanager:wp_event_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-event-solution\": [\n        \"cpe:2.3:a:themewinter:eventin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-events-manager\": [\n        \"cpe:2.3:a:thimpress:wp_events_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-expand-tabs-free\": [\n        \"cpe:2.3:a:shapedplugin:wp_tabs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-express-checkout\": [\n        \"cpe:2.3:a:tipsandtricks-hq:wp_express_checkout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-extra\": [\n        \"cpe:2.3:a:wpvnteam:wp_extra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-extra-file-types\": [\n        \"cpe:2.3:a:wp_extra_file_types_project:wp_extra_file_types:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-facebook-feed\": [\n        \"cpe:2.3:a:arrowplugins:the_awesome_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-facebook-reviews\": [\n        \"cpe:2.3:a:ljapps:wp_review_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fade-in-text-news\": [\n        \"cpe:2.3:a:gopiplus:wp_fade_in_text_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fastest-cache\": [\n        \"cpe:2.3:a:wpfastestcache:wp_fastest_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-favorite-posts\": [\n        \"cpe:2.3:a:wp_favorite_posts_project:wp_favorite_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fb-autoconnect\": [\n        \"cpe:2.3:a:wp_social_autoconnect_project:wp_social_autoconnect:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fevents-book\": [\n        \"cpe:2.3:a:wp_fevents_book_project:wp_fevents_book:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-file-checker\": [\n        \"cpe:2.3:a:sc_filechecker_project:sc_filechecker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-file-get-contents\": [\n        \"cpe:2.3:a:surniaulula:jsm_file_get_contents\\\\(\\\\)_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-file-manager\": [\n        \"cpe:2.3:a:filemanagerpro:file_manager:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:webdesi9:file_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-file-manager-pro\": [\n        \"cpe:2.3:a:filemanagerpro:file_manager:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"wp-file-upload\": [\n        \"cpe:2.3:a:iptanus:wordpress_file_upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-filebase\": [\n        \"cpe:2.3:a:wp-filebase_download_manager_project:wp-filebase_download_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-film-studio\": [\n        \"cpe:2.3:a:hasthemes:wp_film_studio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-finance\": [\n        \"cpe:2.3:a:mch0lic:wp_finance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-flipclock\": [\n        \"cpe:2.3:a:winwar:wp_flipclock:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-floating-menu\": [\n        \"cpe:2.3:a:accesspressthemes:wp_floating_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-flybox\": [\n        \"cpe:2.3:a:wp-flybox_project:wp-flybox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-font-awesome\": [\n        \"cpe:2.3:a:wp_font_awesome_project:wp_font_awesome:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-food-manager\": [\n        \"cpe:2.3:a:wpfoodmanager:wp_food_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-football\": [\n        \"cpe:2.3:a:wp-football_project:wp-football:*:*:*:*:*:*:*:*\"\n      ],\n      \"wp-force-ssl\": [\n        \"cpe:2.3:a:webfactoryltd:wp_force_ssl:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-forms-puzzle-captcha\": [\n        \"cpe:2.3:a:nitinrathod:wp_forms_puzzle_captcha:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fountain\": [\n        \"cpe:2.3:a:wp_fountain_project:wp_fountain:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-front-end-profile\": [\n        \"cpe:2.3:a:wp_front_end_profile_project:wp_front_end_profile:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-full-auto-tags-manager\": [\n        \"cpe:2.3:a:guillemantdavid:full_auto_tags_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-full-stripe-free\": [\n        \"cpe:2.3:a:paymentsplugin:wp_full_stripe_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fullcalendar\": [\n        \"cpe:2.3:a:pixelite:wp_fullcalendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-fundraising-donation\": [\n        \"cpe:2.3:a:wpmet:fundengine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gallery-metabox\": [\n        \"cpe:2.3:a:wp_gallery_metabox_project:wp_gallery_metabox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gdpr-compliance\": [\n        \"cpe:2.3:a:cookieinformation:wp-gdpr-compliance:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:van-ons:wp-gdpr-compliance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gdpr-core\": [\n        \"cpe:2.3:a:appsaloon:wp-gdpr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-githuber-md\": [\n        \"cpe:2.3:a:terryl:wp_githuber_md:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-glossary\": [\n        \"cpe:2.3:a:wp_glossary_project:wp_glossary:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gmappity-easy-google-maps\": [\n        \"cpe:2.3:a:matthewschwartz:google_maps_made_simple:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-google-analytics-events\": [\n        \"cpe:2.3:a:wpgoaltracker:wp_google_analytics_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-google-fonts\": [\n        \"cpe:2.3:a:wp_google_fonts_project:wp_google_fonts:*:*:*:*:*:*:*:*\"\n      ],\n      \"wp-google-map-plugin\": [\n        \"cpe:2.3:a:flippercode:wp_google_map:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:weplugins:wp_maps:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wp-google-maps\": [\n        \"cpe:2.3:a:codecabin:wp_go_maps:*:*:*:*:basic:wordpress:*:*\",\n        \"cpe:2.3:a:codecabin:wp_go_maps:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"wp-google-my-business-auto-publish\": [\n        \"cpe:2.3:a:auto_publish_for_google_my_business_project:auto_publish_for_google_my_business:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-google-places-review-slider\": [\n        \"cpe:2.3:a:ljapps:wp_google_review_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-google-tag-manager\": [\n        \"cpe:2.3:a:conlabz:wp_google_tag_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gotowebinar\": [\n        \"cpe:2.3:a:northernbeacheswebsites:wp_gotowebinar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-gpx-maps\": [\n        \"cpe:2.3:a:devfarm:wp_gpx_maps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-graphql\": [\n        \"cpe:2.3:a:wpengine:wpgraphql:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-header-images\": [\n        \"cpe:2.3:a:androidbubbles:wp_header_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-helper-lite\": [\n        \"cpe:2.3:a:matbao:wp_helper_premium:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-hide\": [\n        \"cpe:2.3:a:weberge:wp_hide:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-hide-backed-notices\": [\n        \"cpe:2.3:a:wprepublic:hide_dashboard_notifications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-hide-pages\": [\n        \"cpe:2.3:a:nxsn:wp_hide_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-home-page-menu\": [\n        \"cpe:2.3:a:wp_home_page_menu_project:wp_home_page_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-hotel-booking\": [\n        \"cpe:2.3:a:thimpress:wp_hotel_booking:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-html-author-bio-by-ahmad-awais\": [\n        \"cpe:2.3:a:wp_html_author_bio_project:wp_html_author_bio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-html-mail\": [\n        \"cpe:2.3:a:codemiq:wordpress_email_template_designer:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:codemiq:wp_html_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-html-sitemap\": [\n        \"cpe:2.3:a:wp-html-sitemap_project:wp-html-sitemap:*:*:*:*:*:*:*:*\"\n      ],\n      \"wp-htpasswd\": [\n        \"cpe:2.3:a:wp_htpasswd_project:wp_htpasswd:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-humanstxt\": [\n        \"cpe:2.3:a:wp_humans.txt_project:wp_humans.txt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ical-availability\": [\n        \"cpe:2.3:a:wpicalavailability:wp_ical_availability:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-icommerce\": [\n        \"cpe:2.3:a:solvercircle:wp_icommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-image-carousel\": [\n        \"cpe:2.3:a:itzoovim:wp_image_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-image-seo\": [\n        \"cpe:2.3:a:noorsplugin:wordpress_image_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-image-slideshow\": [\n        \"cpe:2.3:a:gopiplus:wp_image_slideshow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-image-zoooom\": [\n        \"cpe:2.3:a:silkypress:wp_image_zoom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-imageflow2\": [\n        \"cpe:2.3:a:spiffyplugins:wp_flow_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-imagezoom\": [\n        \"cpe:2.3:a:aueda:wp-imagezoom:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-import-export-lite\": [\n        \"cpe:2.3:a:vjinfotech:wp_import_export_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-inject\": [\n        \"cpe:2.3:a:wpscoop:imageinject:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-insert\": [\n        \"cpe:2.3:a:smartlogix:wp-insert:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-instance-rename\": [\n        \"cpe:2.3:a:rename_project:rename:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-insurance\": [\n        \"cpe:2.3:a:hasthemes:wp_insurance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-inventory-manager\": [\n        \"cpe:2.3:a:wpinventory:wp_inventory_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-invoice\": [\n        \"cpe:2.3:a:usabilitydynamics:wp-invoice:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-jitsi-shortcodes\": [\n        \"cpe:2.3:a:andrewabarber:wordpress_jitsi_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-job-openings\": [\n        \"cpe:2.3:a:awsm:wp_job_openings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-job-portal\": [\n        \"cpe:2.3:a:wpjobportal:wp_job_portal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-jobs\": [\n        \"cpe:2.3:a:intensewp:wp_jobs:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-jquery-lightbox\": [\n        \"cpe:2.3:a:lightpress:lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-js\": [\n        \"cpe:2.3:a:wp-js_project:wp-js:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-knowledgebase\": [\n        \"cpe:2.3:a:wpknowledgebase:wordpress_knowledge_base_\\\\\\u0026_documentation_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-last-modified-info\": [\n        \"cpe:2.3:a:sayandatta:wp_last_modified_info:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-latest-posts\": [\n        \"cpe:2.3:a:joomunited:wp_latest_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-leads-builder-any-crm\": [\n        \"cpe:2.3:a:smackcoders:lead_form_data_collection_to_crm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-libre-form\": [\n        \"cpe:2.3:a:wp_libre_form_project:wp_libre_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-lightbox-2\": [\n        \"cpe:2.3:a:syedbalkhi:wp_lightbox_2:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-like-button\": [\n        \"cpe:2.3:a:crudlab:wp_like_button:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-limit-failed-login-attempts\": [\n        \"cpe:2.3:a:wp-buy:login_protection_-_limit_failed_login_attempts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-limit-login-attempts\": [\n        \"cpe:2.3:a:ciphercoin:wp_limit_login_attempts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-limits\": [\n        \"cpe:2.3:a:wp_limits_project:wp_limits:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-line-notify\": [\n        \"cpe:2.3:a:simonchuang:wp_line_notify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-links-page\": [\n        \"cpe:2.3:a:wplinkspage:wp_links_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-lister-for-amazon\": [\n        \"cpe:2.3:a:wplab:wp-lister_lite_for_amazon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-lister-for-ebay\": [\n        \"cpe:2.3:a:wplab:wp-lister_lite_for_ebay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-listings\": [\n        \"cpe:2.3:a:agentevolution:impress_listings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-live-chat-software-for-wordpress\": [\n        \"cpe:2.3:a:livechat:live_chat:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:livechat:livechat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-live-chat-support\": [\n        \"cpe:2.3:a:3cx:live_chat:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:3cx:wp-live_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-login-security-and-history\": [\n        \"cpe:2.3:a:clogica:wp_login_security_and_history:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-logo-showcase\": [\n        \"cpe:2.3:a:radiustheme:logo_slider_and_showcase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-logs-book\": [\n        \"cpe:2.3:a:onetarek:wp_logs_book:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mail\": [\n        \"cpe:2.3:a:wp_mail_project:wp_mail:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mail-catcher\": [\n        \"cpe:2.3:a:jamesward:wp_mail_catcher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mail-log\": [\n        \"cpe:2.3:a:wpvibes:wp_mail_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mail-logging\": [\n        \"cpe:2.3:a:awesomemotive:wp_mail_logging:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mailster\": [\n        \"cpe:2.3:a:wpmailster:wp_mailster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mailto-links\": [\n        \"cpe:2.3:a:ironikus:wp_mailto_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-maintenance\": [\n        \"cpe:2.3:a:wp_maintenance_project:wp_maintenance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-maintenance-mode\": [\n        \"cpe:2.3:a:designmodo:wp_maintenance_mode:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:themeisle:lightstart:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:themeisle:wp_maintenance_mode_\\\\\\u0026_coming_soon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-map-block\": [\n        \"cpe:2.3:a:wp_map_block_project:wp_map_block:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mapit\": [\n        \"cpe:2.3:a:chandnipatel:wp_mapit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-markdown-editor\": [\n        \"cpe:2.3:a:wp_markdown_editor_project:wp_markdown_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-marketing-automations\": [\n        \"cpe:2.3:a:funnelkit:funnelkit_automations:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-masonry-infinite-scroll\": [\n        \"cpe:2.3:a:wporbit:wp_masonry_\\\\\\u0026_infinite_scroll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-media-cleaner\": [\n        \"cpe:2.3:a:wp_media_cleaner_project:wp_media_cleaner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-media-library-categories\": [\n        \"cpe:2.3:a:jeffrey-wp:media_library_categories:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-members\": [\n        \"cpe:2.3:a:butlerblog:wp-members:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-memory\": [\n        \"cpe:2.3:a:wp-memory_project:wp-memory:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-meta-and-date-remover\": [\n        \"cpe:2.3:a:prasadkirpekar:wp_meta_and_date_remover:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-meta-data-filter-and-taxonomy-filter\": [\n        \"cpe:2.3:a:pluginus:wordpress_meta_data_and_taxonomies_filter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-meta-seo\": [\n        \"cpe:2.3:a:joomunited:wp_meta_seo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-meteor\": [\n        \"cpe:2.3:a:wp-meteor:wp_meteor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-migration-duplicator\": [\n        \"cpe:2.3:a:webtoffee:backup_and_migration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-miniaudioplayer\": [\n        \"cpe:2.3:a:mb.miniaudioplayer_project:mb.miniaudioplayer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-mpdf\": [\n        \"cpe:2.3:a:wp-mpdf_project:wp-mpdf:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-multi-store-locator\": [\n        \"cpe:2.3:a:wpexperts:wp_multi_store_locator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-nested-pages\": [\n        \"cpe:2.3:a:kylephillips:nested_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-news-magazine\": [\n        \"cpe:2.3:a:hasthemes:wp_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-noexternallinks\": [\n        \"cpe:2.3:a:wp_no_external_links_project:wp_no_external_links:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-olivecart\": [\n        \"cpe:2.3:a:wp-olivecart_project:wp-olivecart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-open-graph\": [\n        \"cpe:2.3:a:custom4web:wp_open_graph:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-open-street-map\": [\n        \"cpe:2.3:a:info-d-74:open_street_map:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-opt-in\": [\n        \"cpe:2.3:a:wp_opt-in_project:wp_opt-in:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-optimize\": [\n        \"cpe:2.3:a:updraftplus:wp-optimize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-optin-wheel\": [\n        \"cpe:2.3:a:studiowombat:wp_optin_wheel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-original-media-path\": [\n        \"cpe:2.3:a:rvola:wp_original_media_path:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-page-widget\": [\n        \"cpe:2.3:a:codeandmore:wp_page_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-pagebuilder\": [\n        \"cpe:2.3:a:themeum:wp_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-paginate\": [\n        \"cpe:2.3:a:maxfoundry:wp-paginate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-payeezy-pay\": [\n        \"cpe:2.3:a:payeezy:wp_payeezy_pay:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-payment-form\": [\n        \"cpe:2.3:a:paymattic:simple_payment_donations_\\\\\\u0026_subscriptions:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-paytm-pay\": [\n        \"cpe:2.3:a:freelancetoindia:paytm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-pdf-generator\": [\n        \"cpe:2.3:a:wpexperts:wp_pdf_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-performance-score-booster\": [\n        \"cpe:2.3:a:wp_performance_score_booster_project:wp_performance_score_booster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-photo-album-plus\": [\n        \"cpe:2.3:a:wp_photo_album_plus_project:wp_photo_album_plus:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wppa.opajaap:wp-photo-album-plus:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wppa:wp_photo_album_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-photo-text-slider-50\": [\n        \"cpe:2.3:a:gopiplus:wp_photo_text_slider_50:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-phpmyadmin-extension\": [\n        \"cpe:2.3:a:puvox:wp_phpmyadmin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-pipes\": [\n        \"cpe:2.3:a:thimpress:wp_pipes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-piwik\": [\n        \"cpe:2.3:a:braekling:connect_matomo:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-piwik_project:wp-piwik:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-planet\": [\n        \"cpe:2.3:a:czepol:wp-planet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-plotly\": [\n        \"cpe:2.3:a:plot:plotly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-plugin-lister\": [\n        \"cpe:2.3:a:paulgriffinpetty:wp_plugin_lister:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-plugin-manager\": [\n        \"cpe:2.3:a:hasthemes:wp_plugin_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-pocket-urls\": [\n        \"cpe:2.3:a:coderevolution:wp_pocket_urls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-politic\": [\n        \"cpe:2.3:a:hasthemes:ht_politic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-polls\": [\n        \"cpe:2.3:a:wp-polls_project:wp-polls:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-popup-banners\": [\n        \"cpe:2.3:a:accesspressthemes:wp_popup_banners:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-popup-builder\": [\n        \"cpe:2.3:a:themehunk:wp_popup_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-popups-lite\": [\n        \"cpe:2.3:a:timersys:wp_popups:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-post-author\": [\n        \"cpe:2.3:a:afthemes:wp_post_author:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-post-columns\": [\n        \"cpe:2.3:a:wp_post_columns_project:wp_post_columns:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-post-frontend\": [\n        \"cpe:2.3:a:najeebmedia:post_front-end_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-post-page-clone\": [\n        \"cpe:2.3:a:wp_post_page_clone_project:wp_post_page_clone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-postratings\": [\n        \"cpe:2.3:a:lesterchan:wp-postratings:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-powerplaygallery\": [\n        \"cpe:2.3:a:powerplay_gallery_project:powerplay_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-prayer\": [\n        \"cpe:2.3:a:goprayer:wp_prayer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-prayers-request\": [\n        \"cpe:2.3:a:goprayer:prayer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-print-friendly\": [\n        \"cpe:2.3:a:oomphinc:wp_print_friendly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-private-content-plus\": [\n        \"cpe:2.3:a:wpexpertdeveloper:wp_private_content_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-pro-quiz\": [\n        \"cpe:2.3:a:wp-pro-quiz_project:wp-pro-quiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-product-feed-manager\": [\n        \"cpe:2.3:a:wpmarketingrobot:woocommerce_google_feed_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-product-gallery-lite\": [\n        \"cpe:2.3:a:accesspressthemes:wp_product_gallery_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-propagator\": [\n        \"cpe:2.3:a:widgilabs:plugin_propagator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-publications\": [\n        \"cpe:2.3:a:wp-publications_project:wp-publications:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-query-console\": [\n        \"cpe:2.3:a:lubus:wp_query_console:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-quick-setup\": [\n        \"cpe:2.3:a:antonhoelstad:wp_quick_setup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-quicklatex\": [\n        \"cpe:2.3:a:holoborodko:wp_quicklatex:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-radio\": [\n        \"cpe:2.3:a:wpmilitary:wp_radio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-reactions-lite\": [\n        \"cpe:2.3:a:wpreactions:wp_reactions_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-recall\": [\n        \"cpe:2.3:a:plechevandrey:wp-recall:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-recaptcha-integration\": [\n        \"cpe:2.3:a:wedevs:recaptcha_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-recipe-maker\": [\n        \"cpe:2.3:a:bootstrapped:wp_recipe_maker:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-registration\": [\n        \"cpe:2.3:a:najeebmedia:simple_user_registration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-remote-site-search\": [\n        \"cpe:2.3:a:brainstormforce:wp_remote_site_search:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-remote-users-sync\": [\n        \"cpe:2.3:a:froger:wp_remote_users_sync:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-report-post\": [\n        \"cpe:2.3:a:alexraven:wp_report_post:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:esiteq:wp_report_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-reroute-email\": [\n        \"cpe:2.3:a:wp_reroute_email_project:wp_reroute_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-reset\": [\n        \"cpe:2.3:a:webfactoryltd:wp_reset:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-responsive-photo-gallery\": [\n        \"cpe:2.3:a:i13websolution:photo_gallery_slideshow_\\\\\\u0026_masonry_tiled_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-responsive-slider-with-lightbox\": [\n        \"cpe:2.3:a:i13websolution:thumbnail_slider_with_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-responsive-thumbnail-slider\": [\n        \"cpe:2.3:a:i13websolution:thumbnail_carousel_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-responsive-video-gallery-with-lightbox\": [\n        \"cpe:2.3:a:i13websolution:video_carousel_slider_with_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-rest-api-authentication\": [\n        \"cpe:2.3:a:miniorange:wordpress_rest_api_authentication:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-retina-2x\": [\n        \"cpe:2.3:a:meowapps:perfect_images:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:meowapps:wp_retina_2x:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-roadmap\": [\n        \"cpe:2.3:a:iqonic:wp_roadmap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-roles-at-registration\": [\n        \"cpe:2.3:a:hyscaler:wp_roles_at_registration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-rollback\": [\n        \"cpe:2.3:a:impress:wp_rollback:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-rss-aggregator\": [\n        \"cpe:2.3:a:wprssaggregator:wp_rss_aggregator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-rss-images\": [\n        \"cpe:2.3:a:wp_rss_images_project:wp_rss_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-s3\": [\n        \"cpe:2.3:a:wordpress_amazon_s3_project:wordpress_amazon_s3:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-scrippets\": [\n        \"cpe:2.3:a:wp_scrippets_project:wp_scrippets:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-secure-maintainance\": [\n        \"cpe:2.3:a:wpexperts:wp_secure_maintenance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-security-audit-log\": [\n        \"cpe:2.3:a:melapress:wp_activity_log:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-security-hardening\": [\n        \"cpe:2.3:a:getastra:wp_hardening:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-security-questions\": [\n        \"cpe:2.3:a:flippercode:wp_security_question:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-seo-redirect-301\": [\n        \"cpe:2.3:a:wp_seo_redirect_301_project:wp_seo_redirect_301:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-seo-structured-data-schema\": [\n        \"cpe:2.3:a:wpsemplugins:wp_seo_structured_data_schema:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-seo-tags\": [\n        \"cpe:2.3:a:wp_seo_tags_project:wp_seo_tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-seopress\": [\n        \"cpe:2.3:a:seopress:seopress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ses\": [\n        \"cpe:2.3:a:deliciousbrains:wp_offload_ses_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-shamsi\": [\n        \"cpe:2.3:a:wpvar:wp_shamsi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-share-buttons-analytics-by-getsocial\": [\n        \"cpe:2.3:a:getsocial:social_share_buttons_\\\\\\u0026_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-shieldon\": [\n        \"cpe:2.3:a:terryl:wp_shieldon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-shopify\": [\n        \"cpe:2.3:a:fahadmahmood:external_store_for_shopify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-shortcode\": [\n        \"cpe:2.3:a:mythemeshop:wp_shortcode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-shoutbox-live-chat\": [\n        \"cpe:2.3:a:wp_live_chat_shoutbox_project:wp_live_chat_shoutbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-show-more\": [\n        \"cpe:2.3:a:jamos:wp_show_more:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-show-posts\": [\n        \"cpe:2.3:a:generatepress:wp_show_posts:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_show_posts_project:wp_show_posts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-simple-booking-calendar\": [\n        \"cpe:2.3:a:wpsimplebookingcalendar:wp_simple_booking_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-simple-events\": [\n        \"cpe:2.3:a:wp_simple_events_project:wp_simple_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-simple-firewall\": [\n        \"cpe:2.3:a:getshieldsecurity:shield_security:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-simple-galleries\": [\n        \"cpe:2.3:a:maca134:wp_simple_galleries:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-simple-html-sitemap\": [\n        \"cpe:2.3:a:freelancer-coder:wordpress_simple_html_sitemap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-site-protector\": [\n        \"cpe:2.3:a:moriyan_jay:wp_site_protector:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-sitemap-page\": [\n        \"cpe:2.3:a:wp_sitemap_page_project:wp_sitemap_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-slimstat\": [\n        \"cpe:2.3:a:getusedtoit:wp_slimstat:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-slimstat:slimstat_analytics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-smart-contracts\": [\n        \"cpe:2.3:a:wpsmartcontracts:wpsmartcontracts:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-smart-crm-invoices-free\": [\n        \"cpe:2.3:a:softrade:wp_smart_crm_\\\\\\u0026_invoices:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-smart-editor\": [\n        \"cpe:2.3:a:joomunited:wp-smart-editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-smart-import\": [\n        \"cpe:2.3:a:xylusthemes:wp_smart_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-smart-preloader\": [\n        \"cpe:2.3:a:catchsquare:wp_smart_preloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-smiley\": [\n        \"cpe:2.3:a:wp_smiley_project:wp_smiley:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-sms\": [\n        \"cpe:2.3:a:veronalabs:wp_sms:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-smushit\": [\n        \"cpe:2.3:a:wpmudev:smush_image_compression_and_optimization:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-social\": [\n        \"cpe:2.3:a:wpmet:wp_social_login_and_register_social_counter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-social-bookmarking-light\": [\n        \"cpe:2.3:a:wp_social_bookmarking_light_project:wp_social_bookmarking_light:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-social-feed\": [\n        \"cpe:2.3:a:arrowplugins:social_feed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-social-widget\": [\n        \"cpe:2.3:a:catchsquare:wp_social_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-socializer\": [\n        \"cpe:2.3:a:wp_socializer_project:wp_socializer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-songbook\": [\n        \"cpe:2.3:a:wp_songbook_project:wp_songbook:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-sort-order\": [\n        \"cpe:2.3:a:androidbubble:wp_sort_order:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-source-control\": [\n        \"cpe:2.3:a:wp_content_source_control_project:wp_content_source_control:*:*:-:-:-:wordpress:*:*\"\n      ],\n      \"wp-special-textboxes\": [\n        \"cpe:2.3:a:simplelib:special_text_boxes:*:*:*:*:free:wordpress:*:*\",\n        \"cpe:2.3:a:wp-special-textboxes_project:wp-special-textboxes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-spell-check\": [\n        \"cpe:2.3:a:wpspellcheck:wpspellcheck:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-splashing-images\": [\n        \"cpe:2.3:a:splashing_images_project:splashing_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-sponsors\": [\n        \"cpe:2.3:a:wpsimplesponsorships:sponsors:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-staging\": [\n        \"cpe:2.3:a:wp-staging:wp_staging:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stateless\": [\n        \"cpe:2.3:a:udx:wp-stateless:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-statistics\": [\n        \"cpe:2.3:a:veronalabs:wp_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stats\": [\n        \"cpe:2.3:a:wp-stats_project:wp-stats:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stats-dashboard\": [\n        \"cpe:2.3:a:trivetechnology:wp-stats-dashboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stats-manager\": [\n        \"cpe:2.3:a:codepress:visitor_statistics:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:wp_visitor_statistics_\\\\(real_time_traffic\\\\)_project:wp_visitor_statistics_\\\\(real_time_traffic\\\\):*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_visitor_statistics_project:wp_visitor_statistics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-sticky-social\": [\n        \"cpe:2.3:a:wp_sticky_social_project:wp_sticky_social:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stripe-checkout\": [\n        \"cpe:2.3:a:noorsplugin:wp_stripe_checkout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-stripe-donation\": [\n        \"cpe:2.3:a:hmplugin:aidwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-structuring-markup\": [\n        \"cpe:2.3:a:terakoya:markup_\\\\(json-ld\\\\)_structured_in_schema.org:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-subtitle\": [\n        \"cpe:2.3:a:wp_subtitle_project:wp_subtitle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-super-cache\": [\n        \"cpe:2.3:a:automattic:wp_super_cache:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-super-minify\": [\n        \"cpe:2.3:a:dipakgajjar:wp_super_minify:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-super-popup\": [\n        \"cpe:2.3:a:wp_super_popup_project:wp_super_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-support-plus-responsive-ticket-system\": [\n        \"cpe:2.3:a:wpsupportplus:wp_support_plus_responsive_ticket_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-survey-and-poll\": [\n        \"cpe:2.3:a:modalsurvey:wordpress_survey_and_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-survey-plus\": [\n        \"cpe:2.3:a:wp_survey_plus_project:wp_survey_plus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-svg-images\": [\n        \"cpe:2.3:a:kubiq:wp_svg_images:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-swimteam\": [\n        \"cpe:2.3:a:swim_team_project:swim_team:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-symposium\": [\n        \"cpe:2.3:a:wpsymposiumpro:wp-symposium:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpsymposiumpro:wp_symposium:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-symposium-pro\": [\n        \"cpe:2.3:a:wpsymposiumpro:wp_symposium_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-t-wap\": [\n        \"cpe:2.3:a:wp-t-wap_project:wp-t-wap:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-table-builder\": [\n        \"cpe:2.3:a:dotcamp:wp_table_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-table-manager\": [\n        \"cpe:2.3:a:joomunited:wp_table_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-table-reloaded\": [\n        \"cpe:2.3:a:wp-table_reloaded_project:wp-table_reloaded:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-taxonomy-import\": [\n        \"cpe:2.3:a:wp_taxonomy_import_project:wp_taxonomy_import:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-tell-a-friend-popup-form\": [\n        \"cpe:2.3:a:gopiplus:wp-tell-a-friend-popup-form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-terms-popup\": [\n        \"cpe:2.3:a:linksoftwarellc:wp_terms_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-test-email\": [\n        \"cpe:2.3:a:boopathirajan:wp_test_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-testimonial-widget\": [\n        \"cpe:2.3:a:starkdigital:wp_testimonial_widget:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-testing\": [\n        \"cpe:2.3:a:psychological_tests_\\\\\\u0026_quizzes_project:psychological_tests_\\\\\\u0026_quizzes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ticket\": [\n        \"cpe:2.3:a:emarketdesign:customer_service_software_\\\\\\u0026_support_ticket_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-tiles\": [\n        \"cpe:2.3:a:keetrax:wp_tiles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-time-capsule\": [\n        \"cpe:2.3:a:revmakx:backup_and_staging_by_wp_time_capsule:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-time-slots-booking-form\": [\n        \"cpe:2.3:a:codepeople:wp_time_slots_booking_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-timed-popup\": [\n        \"cpe:2.3:a:timed_popup_project:timed_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-todo\": [\n        \"cpe:2.3:a:delower:wp_to_do:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-total-hacks\": [\n        \"cpe:2.3:a:wp_total_hacks_project:wp_total_hacks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-travel\": [\n        \"cpe:2.3:a:wensolutions:wp_travel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-travel-engine\": [\n        \"cpe:2.3:a:wptravelengine:wp_travel_engine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-tripadvisor-review-slider\": [\n        \"cpe:2.3:a:ljapps:wp_tripadvisor_review_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ulike\": [\n        \"cpe:2.3:a:technowich:wp_ulike:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpulike:wp_ulike:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ultimate-csv-importer\": [\n        \"cpe:2.3:a:smackcoders:import_all_pages\\\\,_post_types\\\\,_products\\\\,_orders\\\\,_and_users_as_xml_\\\\\\u0026_csv:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ultimate-exporter\": [\n        \"cpe:2.3:a:smackcoders:export_all_posts\\\\,_products\\\\,_orders\\\\,_refunds_\\\\\\u0026_users:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:smackcoders:ultimate_encoder:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:smackcoders:ultimate_exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ultimate-recipe\": [\n        \"cpe:2.3:a:bootstrapped:wp_ultimate_recipe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ultimate-review\": [\n        \"cpe:2.3:a:wpmet:wp_ultimate_review:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-ultra-simple-paypal-shopping-cart\": [\n        \"cpe:2.3:a:ultra-prod:wordpress_ultra_simple_paypal_shopping_cart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-upload-restriction\": [\n        \"cpe:2.3:a:wp-upload-restriction_project:wp-upload-restriction:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-user\": [\n        \"cpe:2.3:a:wp_user_project:wp_user:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-user-avatar\": [\n        \"cpe:2.3:a:profilepress:profilepress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:profilepress:user_registration\\\\,_login_form\\\\,_user_profile_\\\\\\u0026_membership:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:properfraction:profilepress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:properfraction:profilepress:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wp-user-frontend\": [\n        \"cpe:2.3:a:wedevs:wp_user_frontend:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-user-manager\": [\n        \"cpe:2.3:a:wpusermanager:wp_user_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-user-merger\": [\n        \"cpe:2.3:a:wp_user_merger_project:wp_user_merger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-user-profile-avatar\": [\n        \"cpe:2.3:a:wpeventsmanager:user_profile_avatar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-useronline\": [\n        \"cpe:2.3:a:lesterchan:wp-useronline:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp-useronline_project:wp-useronline:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-users-disable\": [\n        \"cpe:2.3:a:brainvire:disable_user_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-users-exporter\": [\n        \"cpe:2.3:a:wp-users-exporter_project:wp-users-exporter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-users-masquerade\": [\n        \"cpe:2.3:a:lagunaisw:wp_users_masquerade:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-vertical-image-slider\": [\n        \"cpe:2.3:a:i13websolution:wordpress_vertical_image_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-video-lightbox\": [\n        \"cpe:2.3:a:tipsandtricks-hq:wp_video_lightbox:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-vipergb\": [\n        \"cpe:2.3:a:wp-vipergb_project:wp-vipergb:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-visual-slidebox-builder\": [\n        \"cpe:2.3:a:visual_slide_box_builder_project:visual_slide_box_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-voting-contest\": [\n        \"cpe:2.3:a:ohiowebtech:wp_voting_contest:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-wc-affiliate-program\": [\n        \"cpe:2.3:a:redefiningtheweb:affiliate_pro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-webauthn\": [\n        \"cpe:2.3:a:axton:wp-webauthn:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-webinarsystem\": [\n        \"cpe:2.3:a:webinarpress:webinarpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:webinarpress:webinarpress:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wp-whatsapp\": [\n        \"cpe:2.3:a:ninjateam:wp_chat_app:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-whatsapp-chat\": [\n        \"cpe:2.3:a:quadlayers:wp_social_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-whois-domain\": [\n        \"cpe:2.3:a:netattingo:wp-whois-domain:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-widget-bundle\": [\n        \"cpe:2.3:a:devnath_verma:widget_bundle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-woocommerce-quickbooks\": [\n        \"cpe:2.3:a:crmperks:integration_for_woocommerce_and_quickbooks:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-word-count\": [\n        \"cpe:2.3:a:redlettuce:wp_word_count:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-worthy\": [\n        \"cpe:2.3:a:tiggerswelt:worthy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-yadisk-files\": [\n        \"cpe:2.3:a:antongorodezkiy:yadisk_files:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-yelp-review-slider\": [\n        \"cpe:2.3:a:ljapps:wp_yelp_review_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-youtube-live\": [\n        \"cpe:2.3:a:andrewrminion:wp_youtube_live:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wp_youtube_live_project:wp_youtube_live:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-youtube-lyte\": [\n        \"cpe:2.3:a:wp_youtube_lyte_project:wp_youtube_lyte:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp2android-turn-wp-site-into-android-app\": [\n        \"cpe:2.3:a:wp2android-turn-wp-site-into-android-app_project:wp2android-turn-wp-site-into-android-app:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp2syslog\": [\n        \"cpe:2.3:a:wp2syslog_project:wp2syslog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpadcenter\": [\n        \"cpe:2.3:a:wpeka:wp_adcenter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpagecontact\": [\n        \"cpe:2.3:a:wordpress_page_contact_project:wordpress_page_contact:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpappninja\": [\n        \"cpe:2.3:a:amauri:wpmobile.app:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpaudio-mp3-player\": [\n        \"cpe:2.3:a:wpaudio_mp3_player_project:wpaudio_mp3_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpb-advanced-faq\": [\n        \"cpe:2.3:a:wpbean:wpb_advanced_faq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpb-elementor-addons\": [\n        \"cpe:2.3:a:wpbean:wpb_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpb-popup-for-contact-form-7\": [\n        \"cpe:2.3:a:wpbean:wpb_popup_for_contact_form_7:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wpb-show-core\": [\n        \"cpe:2.3:a:wpb_show_core_project:wpb_show_core:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpbits-addons-for-elementor\": [\n        \"cpe:2.3:a:wpbits:wpbits_addons_for_elementor_page_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpbookit\": [\n        \"cpe:2.3:a:iqonic:wpbookit:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wpbulky-wp-bulk-edit-post-types\": [\n        \"cpe:2.3:a:villatheme:wpbulky:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpc-badge-management\": [\n        \"cpe:2.3:a:wpclever:wpc_badge_management_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpc-shop-as-customer\": [\n        \"cpe:2.3:a:wpclever:wpc_shop_as_a_customer_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcalc\": [\n        \"cpe:2.3:a:wow-company:wpcalc:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcargo\": [\n        \"cpe:2.3:a:wptaskforce:track_\\\\\\u0026_trace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcf7-redirect\": [\n        \"cpe:2.3:a:redirection-for-contact-form7:redirection_for_contact_form_7:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcodefactory-helper\": [\n        \"cpe:2.3:a:wpfactory:wpfactory_helper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcom-member\": [\n        \"cpe:2.3:a:wpcom:wpcom_member:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcommenttwit\": [\n        \"cpe:2.3:a:wpcommenttwit_project:wpcommenttwit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpcomplete\": [\n        \"cpe:2.3:a:liquidweb:wpcomplete:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdatatables\": [\n        \"cpe:2.3:a:tms-outsource:wpdatatables:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:tms-outsource:wpdatatables_lite:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpdatatables:wpdatatables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdeepl\": [\n        \"cpe:2.3:a:fluenx:deepl_pro_api_translation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdevart-pricing-table\": [\n        \"cpe:2.3:a:wpdevart:pricing_table_builder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdevart-vertical-menu\": [\n        \"cpe:2.3:a:wpdevart:responsive_vertical_icon_menu:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdirectorykit\": [\n        \"cpe:2.3:a:wpdirectorykit:wp_directory_kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdiscuz\": [\n        \"cpe:2.3:a:gvectors:wpdiscuz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdm-gutenberg-blocks\": [\n        \"cpe:2.3:a:wpdownloadmanager:gutenberg_blocks_for_wordpress_download_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpdm-premium-packages\": [\n        \"cpe:2.3:a:wpdownloadmanager:premium_packages_-_sell_digital_products_securely:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpematico\": [\n        \"cpe:2.3:a:etruel:wpematico_rss_feed_fetcher:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpextended\": [\n        \"cpe:2.3:a:wpextended:wp_extended:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpforms\": [\n        \"cpe:2.3:a:wpforms:wpforms:*:*:*:*:pro:wordpress:*:*\"\n      ],\n      \"wpforms-lite\": [\n        \"cpe:2.3:a:wpforms:contact_form:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpforms:wpforms:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wpforo\": [\n        \"cpe:2.3:a:gvectors:wpforo:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:gvectors:wpforo_forum:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpfrom-email\": [\n        \"cpe:2.3:a:wpfrom_email_project:wpfrom_email:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpfront-notification-bar\": [\n        \"cpe:2.3:a:wpfront:wpfront_notification_bar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpfront-scroll-top\": [\n        \"cpe:2.3:a:wpfront:scroll_top:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpfront-user-role-editor\": [\n        \"cpe:2.3:a:wpfront:wpfront_user_role_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpfunnels\": [\n        \"cpe:2.3:a:getwpfunnels:wpfunnels:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpgenious-job-listing\": [\n        \"cpe:2.3:a:wpgenious:wpgenius_job_listing:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpgform\": [\n        \"cpe:2.3:a:google_forms_project:google_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpglobus\": [\n        \"cpe:2.3:a:wpglobus:wpglobus:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpglobus-translate-options\": [\n        \"cpe:2.3:a:wpglobus:wpglobus_translate_options:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpgsi\": [\n        \"cpe:2.3:a:javmah:spreadsheet_integration:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpide\": [\n        \"cpe:2.3:a:xplodedthemes:wpide:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:xplodedthemes:wpide_-_file_manager_\\\\\\u0026_code_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpify-woo\": [\n        \"cpe:2.3:a:wpify:woo_czech:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpjam-basic\": [\n        \"cpe:2.3:a:wpjam_basic_project:wpjam_basic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpjqp-datepicker\": [\n        \"cpe:2.3:a:bhzad:wp_jquery_persian_datepicker:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wplegalpages\": [\n        \"cpe:2.3:a:wpeka:wplegalpages:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wplegalpages:wp_legal_pages:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wplms_plugin\": [\n        \"cpe:2.3:a:vibethemes:wordpress_learning_management_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wplr-sync\": [\n        \"cpe:2.3:a:meowapps:photo_engine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpmarketplace\": [\n        \"cpe:2.3:a:wpmarketplace_project:wpmarketplace:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpmovielibrary\": [\n        \"cpe:2.3:a:caercam:wpmovielibrary:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpo365-login\": [\n        \"cpe:2.3:a:wpo365:wordpress_\\\\+_azure_ad_\\\\/_microsoft_office_365:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpopal-core-features\": [\n        \"cpe:2.3:a:wpopal:wpopal_core_features:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wppageflip\": [\n        \"cpe:2.3:a:agence_web_360:page_flip_book:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wppizza\": [\n        \"cpe:2.3:a:wp-pizza:wppizza:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpquiz\": [\n        \"cpe:2.3:a:bauc:wpquiz:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wprequal\": [\n        \"cpe:2.3:a:kevinbrent:wprequal:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wps-child-theme-generator\": [\n        \"cpe:2.3:a:wpserveur:wps_child_theme_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wps-hide-login\": [\n        \"cpe:2.3:a:wpserveur:wps_hide_login:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wps-telegram-chat\": [\n        \"cpe:2.3:a:wps:wps_telegram_chat:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpschoolpress\": [\n        \"cpe:2.3:a:igexsolutions:wpschoolpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpshopgermany-it-recht-kanzlei\": [\n        \"cpe:2.3:a:maennchen1:wpshopgermany_it-recht_kanzlei:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpshopgermany-protectedshops\": [\n        \"cpe:2.3:a:maennchen1:wpshopgermany_-_protected_shops:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpsimpletools-log-viewer\": [\n        \"cpe:2.3:a:wpsimpletools:basic_log_viewer:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpsimpletools-upload-limit\": [\n        \"cpe:2.3:a:manage_upload_limit_project:manage_upload_limit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpsolr-search-engine\": [\n        \"cpe:2.3:a:wpsolr:wpsolr-search-engine:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpstickybar-sticky-bar-sticky-header\": [\n        \"cpe:2.3:a:a17lab:wpstickybar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpstream\": [\n        \"cpe:2.3:a:wpstream:wpstream:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wptemplata\": [\n        \"cpe:2.3:a:hasthemes:wp_templata:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wptools\": [\n        \"cpe:2.3:a:billminozzi:wp_tools:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wptools_project:wptools:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wptouch\": [\n        \"cpe:2.3:a:bravenewcode:wptouch:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpupper-share-buttons\": [\n        \"cpe:2.3:a:wpupper_share_buttons_project:wpupper_share_buttons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpvivid-backup-mainwp\": [\n        \"cpe:2.3:a:wpvivid:wpvivid_backup_for_mainwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpvivid-backuprestore\": [\n        \"cpe:2.3:a:wpvivid:migration\\\\,_backup\\\\,_staging:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpvr\": [\n        \"cpe:2.3:a:rextheme:wp_vr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpzoom-addons-for-beaver-builder\": [\n        \"cpe:2.3:a:wpzoom:beaver_builder_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpzoom-elementor-addons\": [\n        \"cpe:2.3:a:wpzoom:wpzoom_elementor_addons:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpzoom-portfolio\": [\n        \"cpe:2.3:a:wpzoom:wpzoom_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wpzoom-shortcodes\": [\n        \"cpe:2.3:a:wpzoom:wpzoom_shortcodes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wrc-pricing-tables\": [\n        \"cpe:2.3:a:realwebcare:wrc_pricing_tables:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ws-contact-form\": [\n        \"cpe:2.3:a:uusweb:ws_contact_form:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ws-form\": [\n        \"cpe:2.3:a:westguardsolutions:ws_form:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wsecure\": [\n        \"cpe:2.3:a:joomlaserviceprovider:wsecure:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"wsm-downloader\": [\n        \"cpe:2.3:a:wsm_downloader_project:wsm_downloader:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wti-like-post\": [\n        \"cpe:2.3:a:webtechideas:wti_like_post:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"www-xml-sitemap-generator-org\": [\n        \"cpe:2.3:a:xmlsitemapgenerator:xml_sitemap_generator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wxsync\": [\n        \"cpe:2.3:a:tencent:wxsync:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wysija-newsletters\": [\n        \"cpe:2.3:a:mailpoet:mailpoet_newsletters:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:mailpoet:mailpoet_newsletters:*:*:-:-:-:wordpress:*:*\"\n      ],\n      \"x-forms-express\": [\n        \"cpe:2.3:a:nex-forms_lite_project:nex-forms_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xcloner-backup-and-restore\": [\n        \"cpe:2.3:a:xcloner:xcloner:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xili-tidy-tags\": [\n        \"cpe:2.3:a:xiligroup:xili-tidy-tags:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xllentech-english-islamic-calendar\": [\n        \"cpe:2.3:a:xllentech:english_islamic_calendar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xml-for-google-merchant-center\": [\n        \"cpe:2.3:a:icopydoc:xml_for_google_merchant_center:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xml-sitemap-generator-for-google\": [\n        \"cpe:2.3:a:wpgrim:dynamic_xml_sitemaps_generator_for_google:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xml-sitemaps-for-videos\": [\n        \"cpe:2.3:a:digitalinspiration:google_xml_sitemap_for_videos:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xo-liteslider\": [\n        \"cpe:2.3:a:xakuro:xo_slider:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xo-security\": [\n        \"cpe:2.3:a:xakuro:xo_security:*:*:*:*:*:*:*:*\"\n      ],\n      \"xpinner-lite\": [\n        \"cpe:2.3:a:cyberseo:xpinner_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xpro-elementor-addons\": [\n        \"cpe:2.3:a:wpxpro:xpro_addons_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xqueue-maileon\": [\n        \"cpe:2.3:a:maileon:maileon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xt-facebook-events\": [\n        \"cpe:2.3:a:xylusthemes:xt_event_widget_for_social_events:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xt-woo-ajax-add-to-cart\": [\n        \"cpe:2.3:a:xplodedthemes:xt_ajax_add_to_cart_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xtremelocator\": [\n        \"cpe:2.3:a:xtremelocator:xtremelocator:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"xv-random-quotes\": [\n        \"cpe:2.3:a:xavivars:xv_random_quotes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yabp\": [\n        \"cpe:2.3:a:tromit:yabp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yada-wiki\": [\n        \"cpe:2.3:a:yada_wiki_project:yada_wiki:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yamaps\": [\n        \"cpe:2.3:a:yamaps_project:yamaps:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yandexnews-feed-by-teplitsa\": [\n        \"cpe:2.3:a:te-st:yandex.news_feed_by_teplitsa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yaysmtp\": [\n        \"cpe:2.3:a:yaycommerce:yaysmtp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yds-support-ticket-system\": [\n        \"cpe:2.3:a:ydesignservices:yds_support_ticket_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yellow-pencil-visual-theme-customizer\": [\n        \"cpe:2.3:a:yellowpencil:visual_css_style_editor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yellow-yard\": [\n        \"cpe:2.3:a:yellowyard:yellow_yard_searchbar:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yesno\": [\n        \"cpe:2.3:a:kohsei-works:yes\\\\/no_chart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yet-another-related-posts-plugin\": [\n        \"cpe:2.3:a:yarpp:yet_another_related_posts_plugin:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yet-another-stars-rating\": [\n        \"cpe:2.3:a:yet_another_stars_rating_project:yet_another_stars_rating:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yikes-inc-easy-custom-woocommerce-product-tabs\": [\n        \"cpe:2.3:a:yikesinc:custom_product_tabs_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yikes-inc-easy-mailchimp-extender\": [\n        \"cpe:2.3:a:codeparrots:easy_forms_for_mailchimp:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yikesinc:easy_forms_for_mailchimp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yith-custom-login\": [\n        \"cpe:2.3:a:yithemes:yith_custom_login:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yithemes:yith_custom_login:*:*:*:*:wordpress:*:*:*\"\n      ],\n      \"yith-desktop-notifications-for-woocommerce\": [\n        \"cpe:2.3:a:yithemes:yith_desktop_notifications_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yith-essential-kit-for-woocommerce-1\": [\n        \"cpe:2.3:a:yithemes:yith_essential_kit_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yith-maintenance-mode\": [\n        \"cpe:2.3:a:yithemes:yith_maintenance_mode:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yith-woocommerce-ajax-search\": [\n        \"cpe:2.3:a:yithemes:yith_woocommerce_ajax_search:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yithemes:yith_woocommerce_ajax_search:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"yith-woocommerce-gift-cards\": [\n        \"cpe:2.3:a:yithemes:yith_woocommerce_gift_cards:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yithemes:yith_woocommerce_gift_cards:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"yith-woocommerce-product-add-ons\": [\n        \"cpe:2.3:a:yithemes:yith_woocommerce_product_add-ons:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"yith-woocommerce-tab-manager\": [\n        \"cpe:2.3:a:yithemes:yith_woocommerce_tab_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ymc-smart-filter\": [\n        \"cpe:2.3:a:ymc-22:filter_\\\\\\u0026_grids:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yml-for-yandex-market\": [\n        \"cpe:2.3:a:icopydoc:yml_for_yandex_market:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yookassa\": [\n        \"cpe:2.3:a:yookassa:yukassa_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yop-poll\": [\n        \"cpe:2.3:a:yop-poll:yop-poll:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:yop-poll:yop_poll:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yotpo-reviews-for-woocommerce\": [\n        \"cpe:2.3:a:yotpo_reviews_for_woocommerce_project:yotpo_reviews_for_woocommerce:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yotpo-social-reviews-for-woocommerce\": [\n        \"cpe:2.3:a:yotpo:yotpo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yotuwp-easy-youtube-embed\": [\n        \"cpe:2.3:a:yotuwp:video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yourchannel\": [\n        \"cpe:2.3:a:plugin:yourchannel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-channel\": [\n        \"cpe:2.3:a:my_youtube_channel_project:my_youtube_channel:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:urosevic:my_youtube_channel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-channel-gallery\": [\n        \"cpe:2.3:a:poselab:youtube-channel-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-embed\": [\n        \"cpe:2.3:a:youtube_embed_project:youtube_embed:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-embed-plus\": [\n        \"cpe:2.3:a:embedplus:youtube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-feeder\": [\n        \"cpe:2.3:a:youtube_feeder_project:youtube_feeder:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-playlist-player\": [\n        \"cpe:2.3:a:getbutterfly:youtube_playlist_player:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-showcase\": [\n        \"cpe:2.3:a:emarketdesign:youtube_video_gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-speedload\": [\n        \"cpe:2.3:a:alexufo:youtube_speedload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-video-inserter\": [\n        \"cpe:2.3:a:ueberhamm-design:youtube_video_inserter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-video-player\": [\n        \"cpe:2.3:a:wpdevart:youtube_embed\\\\,_playlist_and_popup:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youtube-widget-responsive\": [\n        \"cpe:2.3:a:stefanoai:widget_responsive_for_youtube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"youzify\": [\n        \"cpe:2.3:a:kainelabs:youzify:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"yt-player\": [\n        \"cpe:2.3:a:video_player_for_youtube_project:video_player_for_youtube:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yurl-retwitt\": [\n        \"cpe:2.3:a:yurl_retwitt_project:yurl_retwitt:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yuzo-related-post\": [\n        \"cpe:2.3:a:yuzopro:yuzo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"z-companion\": [\n        \"cpe:2.3:a:wpzita:z_companion:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"z-downloads\": [\n        \"cpe:2.3:a:urbanbase:z-downloads:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"z-url-preview\": [\n        \"cpe:2.3:a:z-url_preview_project:z-url_preview:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zarinpal-paid-downloads\": [\n        \"cpe:2.3:a:amini7:zarinpal_paid_download:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zen-carousel\": [\n        \"cpe:2.3:a:xen_carousel_plugin_project:xen_carousel:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zen-mobile-app-native\": [\n        \"cpe:2.3:a:zen_mobile_app_native_project:zen_mobile_app_native:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zendesk-help-center\": [\n        \"cpe:2.3:a:bestwebsoft:zendesk_help_center:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zendrop-dropshipping-and-fulfillment\": [\n        \"cpe:2.3:a:zendrop:zendrop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zephyr-project-manager\": [\n        \"cpe:2.3:a:dylanjkotze:zephyr_project_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zephyr-one:zephyr_project_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zephyr_project_manager_project:zephyr_project_manager:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zephyrproject:zephyr_project_manager:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zero-bs-crm\": [\n        \"cpe:2.3:a:automattic:jetpack_crm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zero-spam\": [\n        \"cpe:2.3:a:highfivery:zero-spam:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:highfivery:zero_spam_for_wordpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zerobounce\": [\n        \"cpe:2.3:a:zerobounce:zerobounce_email_verification_\\\\\\u0026_validation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ziggeo\": [\n        \"cpe:2.3:a:oliverfriedmann:ziggeo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zip-attachments\": [\n        \"cpe:2.3:a:zip_attachments_project:zip_attachments:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zip-recipes\": [\n        \"cpe:2.3:a:really-simple-plugins:recipe_maker_for_your_food_blog_from_zip_recipes:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zippy\": [\n        \"cpe:2.3:a:gesundheit-bewegt:zippy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"ziteboard-online-whiteboard\": [\n        \"cpe:2.3:a:ziteboard:ziteboard:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zm-ajax-login-register\": [\n        \"cpe:2.3:a:zanematthew:zm_ajax_login_\\\\\\u0026_register:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zm_ajax_login_\\\\\\u0026_register_project:zm_ajax_login_\\\\\\u0026_register:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zm-gallery\": [\n        \"cpe:2.3:a:zm-gallery_project:zm-gallery:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zoho-campaigns\": [\n        \"cpe:2.3:a:zoho:zoho_campaigns:*:*:*:*:*:*:*:*\"\n      ],\n      \"zoho-crm-forms\": [\n        \"cpe:2.3:a:zoho:lead_magnet:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zohocorp:zoho_crm_lead_magnet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zoho-forms\": [\n        \"cpe:2.3:a:zohocorp:zoho_forms:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zoho-marketinghub\": [\n        \"cpe:2.3:a:zoho:zoho_marketing_automation:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zoho-salesiq\": [\n        \"cpe:2.3:a:zoho:salesiq:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zotpress\": [\n        \"cpe:2.3:a:katieseaborn:zotpress:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:zotpress_project:zotpress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zstore-manager-basic\": [\n        \"cpe:2.3:a:ikjweb:zstore_manager_basic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zx-csv-upload\": [\n        \"cpe:2.3:a:zx-csv-upload_project:zx-csv-upload:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zynith-seo\": [\n        \"cpe:2.3:a:zynith:zynith:*:*:*:*:*:wordpress:*:*\"\n      ]\n    },\n    \"wordpress_themes\": {\n      \"Divi\": [\n        \"cpe:2.3:a:elegantthemes:divi:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-basic\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_basic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-lite\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-mag\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_mag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-parallax\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_parallax:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"accesspress-root\": [\n        \"cpe:2.3:a:accesspressthemes:accesspress_root:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"activello\": [\n        \"cpe:2.3:a:colorlib:activello:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"affluent\": [\n        \"cpe:2.3:a:cpothemes:affluent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"allegiant\": [\n        \"cpe:2.3:a:cpothemes:allegiant:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"antreas\": [\n        \"cpe:2.3:a:machothemes:antreas:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"arya-multipurpose\": [\n        \"cpe:2.3:a:everestthemes:arya_multipurpose:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"atahualpa\": [\n        \"cpe:2.3:a:bytesforall:atahualpa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"attorney\": [\n        \"cpe:2.3:a:hennessey:attorney:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"auberge\": [\n        \"cpe:2.3:a:webmandesign:auberge_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"author\": [\n        \"cpe:2.3:a:sinatrateam:sinatra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"beauty\": [\n        \"cpe:2.3:a:allprices:beauty:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"benevolent\": [\n        \"cpe:2.3:a:rarathemes:benevolent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"big-store\": [\n        \"cpe:2.3:a:themehunk:big_store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bingle\": [\n        \"cpe:2.3:a:accesspressthemes:bingle:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blockbooster\": [\n        \"cpe:2.3:a:cozythemes:blockbooster:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blocksy\": [\n        \"cpe:2.3:a:creativethemes:blocksy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bloger\": [\n        \"cpe:2.3:a:accesspressthemes:bloger:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blogpoet\": [\n        \"cpe:2.3:a:websiteinwp:blogpoet:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"blossom-shop\": [\n        \"cpe:2.3:a:blossomthemes:blossom_shop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bonkers\": [\n        \"cpe:2.3:a:colorlib:bonkers:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"book-landing-page\": [\n        \"cpe:2.3:a:rarathemes:book_landing_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"boot-store\": [\n        \"cpe:2.3:a:thecartpress:boot_store:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"bootstrap-ultimate\": [\n        \"cpe:2.3:a:g5plus:ultimate_bootstrap_elements_for_elementor:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"brilliance\": [\n        \"cpe:2.3:a:cpothemes:brilliance:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:wpchill:brilliance:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"business-one-page\": [\n        \"cpe:2.3:a:rarathemes:business_one_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cakifo\": [\n        \"cpe:2.3:a:jayj:cakifo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"calliope\": [\n        \"cpe:2.3:a:extendthemes:calliope:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"campress\": [\n        \"cpe:2.3:a:apuswp:campress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"carspot\": [\n        \"cpe:2.3:a:scriptsbundle:carspot:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"catch-base\": [\n        \"cpe:2.3:a:catchthemes:catch_base:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"chic-lite\": [\n        \"cpe:2.3:a:rarathemes:chic:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"clean-retina\": [\n        \"cpe:2.3:a:themehorse:clean_retina:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"click-mag\": [\n        \"cpe:2.3:a:mvpthemes:click_mag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colibri-wp\": [\n        \"cpe:2.3:a:colibriwp:colibri:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colormag\": [\n        \"cpe:2.3:a:themegrill:colormag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"colorway\": [\n        \"cpe:2.3:a:inkthemes:colorway:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"construction-landing-page\": [\n        \"cpe:2.3:a:rarathemes:construction_landing_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"construction-lite\": [\n        \"cpe:2.3:a:accesspressthemes:construction_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"cozipress\": [\n        \"cpe:2.3:a:burgersoftwares:cozipress:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"create\": [\n        \"cpe:2.3:a:catchthemes:create:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"customizr\": [\n        \"cpe:2.3:a:presscustomizr:customizr:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"darcie\": [\n        \"cpe:2.3:a:catchthemes:darcie:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"delicate\": [\n        \"cpe:2.3:a:nattywp:delicate:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"digital-newspaper\": [\n        \"cpe:2.3:a:blazethemes:digital_newspaper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"digitally\": [\n        \"cpe:2.3:a:omarfolgheraiter:digitally:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"doko\": [\n        \"cpe:2.3:a:accesspressthemes:doko:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"drop\": [\n        \"cpe:2.3:a:competethemes:drop:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"education-zone\": [\n        \"cpe:2.3:a:rarathemes:education_zone:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"eightstore-lite\": [\n        \"cpe:2.3:a:accesspressthemes:eightstore-lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"elegant-pink\": [\n        \"cpe:2.3:a:rarathemes:elegant_pink:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"empowerwp\": [\n        \"cpe:2.3:a:extendthemes:empowerwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"enlighten\": [\n        \"cpe:2.3:a:accesspressthemes:enlighten:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"esteem\": [\n        \"cpe:2.3:a:themegrill:esteem:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:themegrill:esteem:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"everest-news\": [\n        \"cpe:2.3:a:everestthemes:everest_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"excellent\": [\n        \"cpe:2.3:a:themefreesia:excellent:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"flashy\": [\n        \"cpe:2.3:a:flashy_project:flashy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"fluida\": [\n        \"cpe:2.3:a:cryoutcreations:fluida:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"formula\": [\n        \"cpe:2.3:a:awplife:formula:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"fotawp\": [\n        \"cpe:2.3:a:cozythemes:fotawp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"full-frame\": [\n        \"cpe:2.3:a:catchthemes:full_frame:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"fullbase\": [\n        \"cpe:2.3:a:marchettidesign:fullbase:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gaga-corp\": [\n        \"cpe:2.3:a:accesspressthemes:gaga_corp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gaga-lite\": [\n        \"cpe:2.3:a:accesspressthemes:gaga_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"generatepress\": [\n        \"cpe:2.3:a:generatepress:generatepress:*:*:*:*:-:wordpress:*:*\",\n        \"cpe:2.3:a:generatepress:generatepress:*:*:*:*:premium:wordpress:*:*\"\n      ],\n      \"grey-opaque\": [\n        \"cpe:2.3:a:grey_opaque_project:grey_opaque:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"gucherry-blog\": [\n        \"cpe:2.3:a:everestthemes:gucherry_blog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hello-agency\": [\n        \"cpe:2.3:a:cozythemes:hello_agency:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hotel-galaxy\": [\n        \"cpe:2.3:a:webdzier:hotel_galaxy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"hueman\": [\n        \"cpe:2.3:a:presscustomizr:hueman:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"idyllic\": [\n        \"cpe:2.3:a:themefreesia:idyllic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"illdy\": [\n        \"cpe:2.3:a:colorlib:illdy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"interface\": [\n        \"cpe:2.3:a:themehorse:interface:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jobeleon-wpjobboard\": [\n        \"cpe:2.3:a:wpjobboard:jobeleon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"jobscout\": [\n        \"cpe:2.3:a:rarathemes:jobscout:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kahuna\": [\n        \"cpe:2.3:a:cryoutcreations:kahuna:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"kata\": [\n        \"cpe:2.3:a:climaxthemes:kata:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:climaxthemes:kata_apps:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:climaxthemes:kata_business:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"lawyer-landing-page\": [\n        \"cpe:2.3:a:rarathemes:lawyer_landing_page:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"liquido\": [\n        \"cpe:2.3:a:cryoutcreations:liquido:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mags\": [\n        \"cpe:2.3:a:themehorse:mags:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"mantra\": [\n        \"cpe:2.3:a:cryoutcreations:mantra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"materialis\": [\n        \"cpe:2.3:a:extendthemes:materialis:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"medzone-lite\": [\n        \"cpe:2.3:a:machothemes:medzone_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mesmerize\": [\n        \"cpe:2.3:a:extendthemes:mesmerize:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"meta-news\": [\n        \"cpe:2.3:a:themehorse:meta_news:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"modern\": [\n        \"cpe:2.3:a:webmandesign:modern_theme:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"morning-coffee\": [\n        \"cpe:2.3:a:adazing:morning_coffee:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mosaic\": [\n        \"cpe:2.3:a:wildweblab:mosaic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"mystique\": [\n        \"cpe:2.3:a:digitalnature:mystique:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"neighborly\": [\n        \"cpe:2.3:a:arnoldgoodway:neighborly:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newscard\": [\n        \"cpe:2.3:a:themehorse:newscard:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"newsmag\": [\n        \"cpe:2.3:a:machothemes:newsmag:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newsmatic\": [\n        \"cpe:2.3:a:blazethemes:newsmatic:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newspaper\": [\n        \"cpe:2.3:a:tagdiv:newspaper:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"newspaper-x\": [\n        \"cpe:2.3:a:colorlib:newspaper_x:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nexter\": [\n        \"cpe:2.3:a:posimyth:nexter:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nioland\": [\n        \"cpe:2.3:a:steelthemes:nioland:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nirvana\": [\n        \"cpe:2.3:a:cryoutcreations:nirvana:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nova-lite\": [\n        \"cpe:2.3:a:themeinprogress:nova_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"nsc\": [\n        \"cpe:2.3:a:saleswizard:nsc:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"oceanwp\": [\n        \"cpe:2.3:a:oceanwp:oceanwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"parabola\": [\n        \"cpe:2.3:a:cryoutcreations:parabola:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"perfect-portfolio\": [\n        \"cpe:2.3:a:rarathemes:perfect_portfolio:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"phlox\": [\n        \"cpe:2.3:a:averta:phlox:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"pinzolo\": [\n        \"cpe:2.3:a:thriveweb:pinzolo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pixgraphy\": [\n        \"cpe:2.3:a:themefreesia:pixgraphy:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pixova-lite\": [\n        \"cpe:2.3:a:colorlib:pixova_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"posterity\": [\n        \"cpe:2.3:a:sktthemes:posterity:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"preschool-and-kindergarten\": [\n        \"cpe:2.3:a:rarathemes:preschool_and_kindergarten:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"pressmart\": [\n        \"cpe:2.3:a:presslayouts:pressmart:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"puzzles\": [\n        \"cpe:2.3:a:themerex:puzzles:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rara-business\": [\n        \"cpe:2.3:a:rarathemes:rara_business:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"regina-lite\": [\n        \"cpe:2.3:a:machothemes:regina_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"responsive\": [\n        \"cpe:2.3:a:cyberchimps:responsive:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"restaurant-and-cafe\": [\n        \"cpe:2.3:a:rarathemes:restaurant_and_cafe:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"revivenews\": [\n        \"cpe:2.3:a:cozythemes:revivenews:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"rife-free\": [\n        \"cpe:2.3:a:apollo13themes:rife_free:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"roseta\": [\n        \"cpe:2.3:a:cryoutcreations:roseta:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"royal-elementor-kit\": [\n        \"cpe:2.3:a:royal-elementor-addons:royal_elementor_kit:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sarada-lite\": [\n        \"cpe:2.3:a:blossomthemes:sarada:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"septera\": [\n        \"cpe:2.3:a:cryoutcreations:septera:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"shapely\": [\n        \"cpe:2.3:a:colorlib:shapely:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"simplecharm\": [\n        \"cpe:2.3:a:kmfoysal06:simplecharm:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sinatra\": [\n        \"cpe:2.3:a:sinatrateam:sinatra:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sliding-door\": [\n        \"cpe:2.3:a:wayneconnor:sliding_door:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"spa-and-salon\": [\n        \"cpe:2.3:a:rarathemes:spa_and_salon:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"sparkling\": [\n        \"cpe:2.3:a:colorlib:sparklinkg:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"teluro\": [\n        \"cpe:2.3:a:extendthemes:teluro:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-conference\": [\n        \"cpe:2.3:a:rarathemes:the_conference:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"the-ultralight\": [\n        \"cpe:2.3:a:rarathemes:the_ultralight:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tijaji\": [\n        \"cpe:2.3:a:tijaji:tijaji:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"transcend\": [\n        \"cpe:2.3:a:cpothemes:transcend:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"travel-agency\": [\n        \"cpe:2.3:a:rarathemes:travel_agency:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"tweaker5\": [\n        \"cpe:2.3:a:arnoldgoodway:tweaker5:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"upfrontwp\": [\n        \"cpe:2.3:a:wpazure:upfrontwp:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vandana-lite\": [\n        \"cpe:2.3:a:blossomthemes:vandana:*:*:*:*:lite:wordpress:*:*\"\n      ],\n      \"verbosa\": [\n        \"cpe:2.3:a:cryoutcreations:verbosa:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"viala\": [\n        \"cpe:2.3:a:davidgarlitz:viala:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vilva\": [\n        \"cpe:2.3:a:blossomthemes:vilva:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"vireo\": [\n        \"cpe:2.3:a:extendthemes:vireo:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"weaver-xtreme\": [\n        \"cpe:2.3:a:weavertheme:weaver_xtreme_theme:*:*:*:*:*:wordpress:*:*\",\n        \"cpe:2.3:a:weavertheme:weaver_xtreme_theme_support:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"winters\": [\n        \"cpe:2.3:a:myshopkit:winters:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wishful-blog\": [\n        \"cpe:2.3:a:wishfulthemes:wishful_blog:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wlow\": [\n        \"cpe:2.3:a:marchettidesign:wlow:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"wp-portfolio\": [\n        \"cpe:2.3:a:themehorse:wp_portfolio:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"wplms\": [\n        \"cpe:2.3:a:vibethemes:wordpress_learning_management_system:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yourjourney\": [\n        \"cpe:2.3:a:wiloke:your_journey:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"yuki\": [\n        \"cpe:2.3:a:wpmoose:yuki:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zbench\": [\n        \"cpe:2.3:a:zww:zbench:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zigcy-baby\": [\n        \"cpe:2.3:a:accesspressthemes:zigcy_baby:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zigcy-cosmetics\": [\n        \"cpe:2.3:a:accesspressthemes:zigcy_cosmetics:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zigcy-lite\": [\n        \"cpe:2.3:a:accesspressthemes:zigcy_lite:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zita\": [\n        \"cpe:2.3:a:themehunk:zita:*:*:*:*:free:wordpress:*:*\"\n      ],\n      \"zox-news\": [\n        \"cpe:2.3:a:mvpthemes:zox_news:*:*:*:*:*:wordpress:*:*\"\n      ],\n      \"zoxpress\": [\n        \"cpe:2.3:a:mvpthemes:zoxpress:*:*:*:*:*:wordpress:*:*\"\n      ]\n    }\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/dictionary/types.go",
    "content": "package dictionary\n\nimport (\n\t\"encoding/json\"\n\t\"slices\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\nconst (\n\tEcosystemNPM              = \"npm\"\n\tEcosystemRubyGems         = \"rubygems\"\n\tEcosystemPyPI             = \"pypi\"\n\tEcosystemPHPPear          = \"php_pear\"\n\tEcosystemPHPPecl          = \"php_pecl\"\n\tEcosystemPHPComposer      = \"php_composer\"\n\tEcosystemJenkinsPlugins   = \"jenkins_plugins\"\n\tEcosystemRustCrates       = \"rust_crates\"\n\tEcosystemGoModules        = \"go_modules\"\n\tEcosystemWordpressPlugins = \"wordpress_plugins\"\n\tEcosystemWordpressThemes  = \"wordpress_themes\"\n)\n\ntype Indexed struct {\n\tEcosystemPackages map[string]Packages `json:\"ecosystems\"`\n}\n\ntype Set struct {\n\t*strset.Set\n}\n\ntype Packages map[string]*Set\n\nfunc NewSet(ts ...string) *Set {\n\treturn &Set{strset.New(ts...)}\n}\n\nfunc (s *Set) MarshalJSON() ([]byte, error) {\n\tl := s.List()\n\tslices.Sort(l)\n\treturn json.Marshal(l)\n}\n\nfunc (s *Set) UnmarshalJSON(data []byte) error {\n\tvar strSlice []string\n\n\tif err := json.Unmarshal(data, &strSlice); err == nil {\n\t\t*s = *NewSet(strSlice...)\n\t} else {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/dotnet.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc candidateProductsForDotnet(p pkg.Package) fieldCandidateSet {\n\tproducts := newFieldCandidateSet()\n\n\tswitch m := p.Metadata.(type) {\n\tcase pkg.DotnetDepsEntry:\n\t\tproducts.add(dotnetProductVariants(m.Name)...)\n\t\tfor _, pe := range m.Executables {\n\t\t\tif pe.ProductName == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tproducts.add(dotnetProductVariants(pe.ProductName)...)\n\t\t}\n\tcase pkg.DotnetPortableExecutableEntry:\n\t\tif m.ProductName != \"\" {\n\t\t\tproducts.add(dotnetProductVariants(m.ProductName)...)\n\t\t}\n\tcase pkg.DotnetPackagesLockEntry:\n\t\tproducts.add(dotnetProductVariants(m.Name)...)\n\t}\n\n\treturn products\n}\n\nfunc dotnetProductVariants(names ...string) []fieldCandidate {\n\tvar variants []fieldCandidate\n\tfor _, suff := range []string{\"\", \"_.net\"} {\n\t\tfor _, name := range names {\n\t\t\tif name == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif suff != \"\" && strings.HasSuffix(name, suff) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvariants = append(variants, fieldCandidate{\n\t\t\t\tvalue:                       normalizeDotnetReference(name) + suff,\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\t\t}\n\t}\n\treturn variants\n}\n\nfunc normalizeDotnetReference(name string) string {\n\tname = strings.TrimSpace(strings.ToLower(name))\n\tname = strings.TrimSuffix(name, \".dll\")\n\tname = strings.ReplaceAll(name, \"-\", \"_\")\n\tname = strings.ReplaceAll(name, \" \", \"_\")\n\tname = strings.ReplaceAll(name, \".\", \"_\")\n\treturn name\n}\n\nfunc candidateVendorsForDotnet(p pkg.Package) fieldCandidateSet {\n\tvendors := newFieldCandidateSet()\n\n\tswitch m := p.Metadata.(type) {\n\tcase pkg.DotnetDepsEntry:\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                       normalizeDotnetReference(m.Name),\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t})\n\t\tfor _, pe := range m.Executables {\n\t\t\tif pe.CompanyName == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                       normalizeDotnetReference(pe.CompanyName),\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\t\t}\n\tcase pkg.DotnetPortableExecutableEntry:\n\t\tif m.CompanyName != \"\" {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                       normalizeDotnetReference(m.CompanyName),\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\t\t}\n\tcase pkg.DotnetPackagesLockEntry:\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                       normalizeDotnetReference(m.Name),\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t})\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/field_candidate.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\n// fieldCandidate represents a single \"guess\" for a specific field in a future CPE (vendor, product, target SW, etc).\n// When generating these candidates depending on the field the value was sourced from there may be only a subset of\n// transforms that should be applied (downstream of extraction). Expressing candidates in this struct allows for this\n// flexibility such that downstream transforms can be elected into or skipped over.\ntype fieldCandidate struct {\n\tvalue                       string\n\tdisallowSubSelections       bool\n\tdisallowDelimiterVariations bool\n}\n\ntype fieldCandidateSet map[fieldCandidate]struct{}\n\nfunc newFieldCandidateSetFromSets(sets ...fieldCandidateSet) fieldCandidateSet {\n\ts := newFieldCandidateSet()\n\tfor _, set := range sets {\n\t\ts.add(set.list()...)\n\t}\n\treturn s\n}\n\nfunc newFieldCandidateSet(values ...string) fieldCandidateSet {\n\ts := make(fieldCandidateSet)\n\ts.addValue(values...)\n\treturn s\n}\n\nfunc (s fieldCandidateSet) addValue(values ...string) {\n\tfor _, value := range values {\n\t\t// default candidate as an allow-all\n\t\tcandidate := fieldCandidate{\n\t\t\tvalue: cleanCandidateField(value),\n\t\t}\n\t\ts[candidate] = struct{}{}\n\t}\n}\n\nfunc (s fieldCandidateSet) add(candidates ...fieldCandidate) {\n\tfor _, candidate := range candidates {\n\t\tcandidate.value = cleanCandidateField(candidate.value)\n\t\ts[candidate] = struct{}{}\n\t}\n}\n\nfunc (s fieldCandidateSet) removeByValue(values ...string) {\n\tfor _, value := range values {\n\t\ts.removeWhere(valueEquals(value))\n\t}\n}\n\n// removeWhere removes all entries from the fieldCandidateSet for which the condition function returns true.\nfunc (s fieldCandidateSet) removeWhere(condition fieldCandidateCondition) {\n\tfor candidate := range s {\n\t\tif condition(candidate) {\n\t\t\tdelete(s, candidate)\n\t\t}\n\t}\n}\n\nfunc (s fieldCandidateSet) clear() {\n\tfor k := range s {\n\t\tdelete(s, k)\n\t}\n}\n\nfunc (s fieldCandidateSet) union(others ...fieldCandidateSet) {\n\tfor _, other := range others {\n\t\ts.add(other.list()...)\n\t}\n}\n\nfunc (s fieldCandidateSet) list() (results []fieldCandidate) {\n\tfor c := range s {\n\t\tresults = append(results, c)\n\t}\n\n\treturn results\n}\n\nfunc (s fieldCandidateSet) values() (results []string) {\n\tfor _, c := range s.list() {\n\t\tresults = append(results, c.value)\n\t}\n\n\treturn results\n}\n\nfunc (s fieldCandidateSet) uniqueValues() []string {\n\treturn strset.New(s.values()...).List()\n}\n\nfunc (s fieldCandidateSet) copy() fieldCandidateSet {\n\tnewSet := newFieldCandidateSet()\n\tnewSet.add(s.list()...)\n\n\treturn newSet\n}\n\nfunc cleanCandidateField(field string) string {\n\tcleanedValue, err := strconv.Unquote(field)\n\tif err != nil {\n\t\treturn field\n\t}\n\treturn cleanedValue\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/field_candidate_filter.go",
    "content": "package cpegenerate\n\n// A fieldCandidateCondition returns true if the condition is true for a given fieldCandidate.\ntype fieldCandidateCondition func(fieldCandidate) bool\n\nfunc subSelectionsDisallowed(c fieldCandidate) bool {\n\treturn c.disallowSubSelections\n}\n\nfunc delimiterVariationsDisallowed(c fieldCandidate) bool {\n\treturn c.disallowDelimiterVariations\n}\n\nfunc valueEquals(v string) fieldCandidateCondition {\n\treturn func(candidate fieldCandidate) bool {\n\t\treturn candidate.value == v\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/field_candidate_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_cpeCandidateValues_filter(t *testing.T) {\n\ttests := []struct {\n\t\tname                string\n\t\tinput               []fieldCandidate\n\t\texclusionConditions []fieldCandidateCondition\n\t\texpect              []string\n\t}{\n\t\t{\n\t\t\tname: \"gocase\",\n\t\t\tinput: []fieldCandidate{\n\t\t\t\t{\n\t\t\t\t\tvalue: \"allow anything\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                 \"no-sub-selections\",\n\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"no-delimiter-variations\",\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"allow nothing\",\n\t\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: []string{\n\t\t\t\t\"allow anything\",\n\t\t\t\t\"no-sub-selections\",\n\t\t\t\t\"no-delimiter-variations\",\n\t\t\t\t\"allow nothing\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"filter out sub-selections\",\n\t\t\tinput: []fieldCandidate{\n\t\t\t\t{\n\t\t\t\t\tvalue: \"allow anything\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                 \"no-sub-selections\",\n\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"no-delimiter-variations\",\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"allow nothing\",\n\t\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texclusionConditions: []fieldCandidateCondition{\n\t\t\t\tsubSelectionsDisallowed,\n\t\t\t},\n\t\t\texpect: []string{\n\t\t\t\t\"allow anything\",\n\t\t\t\t\"no-delimiter-variations\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"filter out delimiter-variations\",\n\t\t\tinput: []fieldCandidate{\n\t\t\t\t{\n\t\t\t\t\tvalue: \"allow anything\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                 \"no-sub-selections\",\n\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"no-delimiter-variations\",\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"allow nothing\",\n\t\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texclusionConditions: []fieldCandidateCondition{\n\t\t\t\tdelimiterVariationsDisallowed,\n\t\t\t},\n\t\t\texpect: []string{\n\t\t\t\t\"allow anything\",\n\t\t\t\t\"no-sub-selections\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"all exclusionConditions\",\n\t\t\tinput: []fieldCandidate{\n\t\t\t\t{\n\t\t\t\t\tvalue: \"allow anything\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                 \"no-sub-selections\",\n\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"no-delimiter-variations\",\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue:                       \"allow nothing\",\n\t\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\texclusionConditions: []fieldCandidateCondition{\n\t\t\t\tdelimiterVariationsDisallowed,\n\t\t\t\tsubSelectionsDisallowed,\n\t\t\t},\n\t\t\texpect: []string{\n\t\t\t\t\"allow anything\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tset := newFieldCandidateSet()\n\t\t\tset.add(test.input...)\n\n\t\t\tfor _, condition := range test.exclusionConditions {\n\t\t\t\tset.removeWhere(condition)\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.expect, set.values())\n\t\t})\n\t}\n}\n\nfunc Test_cpeFieldCandidateSet_addValue(t *testing.T) {\n\ts := newFieldCandidateSet()\n\t// we should clean all values (unquote strings)\n\ts.addValue(`\"string!\"`)\n\tassert.ElementsMatch(t, []string{\"string!\"}, s.values())\n}\n\nfunc Test_cpeFieldCandidateSet_add(t *testing.T) {\n\ts := newFieldCandidateSet()\n\t// we should clean all values (unquote strings)\n\ts.add(fieldCandidate{\n\t\tvalue: `\"string!\"`,\n\t})\n\tassert.ElementsMatch(t, []string{\"string!\"}, s.values())\n}\n\nfunc Test_cpeFieldCandidateSet_clear(t *testing.T) {\n\ts := newFieldCandidateSet(\"1\", \"2\")\n\tassert.NotEmpty(t, s.values())\n\ts.clear()\n\tassert.Empty(t, s.values())\n}\n\nfunc Test_cpeFieldCandidateSet_union(t *testing.T) {\n\ts1 := newFieldCandidateSet(\"1\", \"2\")\n\tassert.Len(t, s1.list(), 2)\n\ts2 := newFieldCandidateSet(\"2\", \"3\", \"4\")\n\tassert.Len(t, s2.list(), 3)\n\ts3 := newFieldCandidateSet()\n\ts3.add(\n\t\tfieldCandidate{\n\t\t\tvalue:                       \"1\",\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: false,\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue:                       \"4\",\n\t\t\tdisallowSubSelections:       false,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue:                       \"5\",\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t)\n\tassert.Len(t, s3.list(), 3)\n\n\ts1.union(s2, s3)\n\n\t// 1 & 4 have duplicate entries since there are candidate conditions set\n\tassert.ElementsMatch(t, s1.values(), []string{\"1\", \"1\", \"2\", \"3\", \"4\", \"4\", \"5\"})\n\n\tassert.ElementsMatch(t, s1.list(), []fieldCandidate{\n\t\t{\n\t\t\tvalue: \"1\",\n\t\t},\n\t\t{\n\t\t\tvalue:                       \"1\",\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: false,\n\t\t},\n\t\t{\n\t\t\tvalue: \"2\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"3\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"4\",\n\t\t},\n\t\t{\n\t\t\tvalue:                       \"4\",\n\t\t\tdisallowSubSelections:       false,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t\t{\n\t\t\tvalue:                       \"5\",\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t})\n}\n\nfunc Test_cpeFieldCandidateSet_union_byValue(t *testing.T) {\n\ts1 := newFieldCandidateSet(\"1\", \"2\")\n\tassert.Len(t, s1.list(), 2)\n\ts2 := newFieldCandidateSet(\"2\", \"3\", \"4\")\n\tassert.Len(t, s2.list(), 3)\n\ts3 := newFieldCandidateSet(\"1\", \"4\", \"5\")\n\tassert.Len(t, s3.list(), 3)\n\n\ts1.union(s2, s3)\n\n\tassert.ElementsMatch(t, s1.values(), []string{\"1\", \"2\", \"3\", \"4\", \"5\"})\n\n\tassert.ElementsMatch(t, s1.list(), []fieldCandidate{\n\t\t{\n\t\t\tvalue: \"1\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"2\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"3\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"4\",\n\t\t},\n\t\t{\n\t\t\tvalue: \"5\",\n\t\t},\n\t})\n}\n\nfunc Test_cpeFieldCandidateSet_uniqueValues(t *testing.T) {\n\tset := newFieldCandidateSet()\n\tset.add(\n\t\tfieldCandidate{\n\t\t\tvalue: \"1\",\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue:                 \"1\",\n\t\t\tdisallowSubSelections: true,\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue:                       \"2\",\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue: \"2\",\n\t\t},\n\t\tfieldCandidate{\n\t\t\tvalue:                       \"3\",\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t},\n\t)\n\n\tassert.ElementsMatch(t, []string{\"1\", \"2\", \"3\"}, set.uniqueValues())\n\n}\n\nfunc Test_cpeFieldCandidateSet_removeByValue(t *testing.T) {\n\ts := newFieldCandidateSet()\n\n\t// should be removed\n\ts.add(fieldCandidate{\n\t\tvalue:                       \"1\",\n\t\tdisallowSubSelections:       true,\n\t\tdisallowDelimiterVariations: true,\n\t})\n\ts.add(fieldCandidate{\n\t\tvalue:                 \"1\",\n\t\tdisallowSubSelections: true,\n\t})\n\ts.add(fieldCandidate{\n\t\tvalue:                       \"1\",\n\t\tdisallowDelimiterVariations: true,\n\t})\n\ts.add(fieldCandidate{\n\t\tvalue: \"1\",\n\t})\n\n\t// should not be removed\n\ts.add(fieldCandidate{\n\t\tvalue: \"2\",\n\t})\n\n\tassert.Len(t, s.values(), 5)\n\n\ts.removeByValue(\"1\")\n\n\tassert.Len(t, s.values(), 1)\n}\n\nfunc Test_cpeFieldCandidateSet_removeByCondition(t *testing.T) {\n\ts := newFieldCandidateSet()\n\n\t// should be removed\n\ts.add(fieldCandidate{\n\t\tvalue:                 \"1\",\n\t\tdisallowSubSelections: true,\n\t})\n\ts.add(fieldCandidate{\n\t\tvalue: \"hello-world\",\n\t})\n\n\t// should not be removed\n\ts.add(fieldCandidate{\n\t\tvalue: \"2\",\n\t})\n\n\tassert.Len(t, s.values(), 3)\n\n\ts.removeWhere(func(candidate fieldCandidate) bool {\n\t\treturn candidate.disallowSubSelections == true\n\t})\n\n\tassert.Len(t, s.values(), 2)\n\n\ts.removeWhere(func(candidate fieldCandidate) bool {\n\t\treturn strings.Contains(candidate.value, \"-\")\n\t})\n\n\tassert.Len(t, s.values(), 1)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/filter.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst jenkinsName = \"jenkins\"\n\n// filterFn instances should return true if the given CPE attributes should be removed from a collection for the given package\ntype filterFn func(cpe cpe.Attributes, p pkg.Package) bool\n\nvar cpeFilters = []filterFn{\n\tdisallowJiraClientServerMismatch,\n\tdisallowJenkinsServerCPEForPluginPackage,\n\tdisallowJenkinsCPEsNotAssociatedWithJenkins,\n\tdisallowNonParseableCPEs,\n}\n\nfunc filter(cpes []cpe.Attributes, p pkg.Package, filters ...filterFn) (result []cpe.Attributes) {\ncpeLoop:\n\tfor _, c := range cpes {\n\t\tfor _, fn := range filters {\n\t\t\tif fn(c, p) {\n\t\t\t\tcontinue cpeLoop\n\t\t\t}\n\t\t}\n\t\t// all filter functions passed on filtering this CPE\n\t\tresult = append(result, c)\n\t}\n\treturn result\n}\n\nfunc disallowNonParseableCPEs(c cpe.Attributes, _ pkg.Package) bool {\n\tv := c.String()\n\t_, err := cpe.NewAttributes(v)\n\n\tcannotParse := err != nil\n\n\treturn cannotParse\n}\n\n// jenkins plugins should not match against jenkins\nfunc disallowJenkinsServerCPEForPluginPackage(c cpe.Attributes, p pkg.Package) bool {\n\tif p.Type == pkg.JenkinsPluginPkg && c.Product == jenkinsName {\n\t\treturn true\n\t}\n\treturn false\n}\n\n// filter to account that packages that are not for jenkins but have a Attributes generated that will match against jenkins\nfunc disallowJenkinsCPEsNotAssociatedWithJenkins(c cpe.Attributes, p pkg.Package) bool {\n\t// jenkins server should only match against a product with the name jenkins\n\tif c.Product == jenkinsName && !strings.Contains(strings.ToLower(p.Name), jenkinsName) {\n\t\tif c.Vendor == cpe.Any || c.Vendor == jenkinsName || c.Vendor == \"cloudbees\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// filter to account for packages which are jira client packages but have a Attributes that will match against jira\nfunc disallowJiraClientServerMismatch(c cpe.Attributes, p pkg.Package) bool {\n\t// jira / atlassian should not apply to clients\n\tif c.Product == \"jira\" && strings.Contains(strings.ToLower(p.Name), \"client\") {\n\t\tif c.Vendor == cpe.Any || c.Vendor == \"jira\" || c.Vendor == \"atlassian\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/filter_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_disallowJenkinsServerCPEForPluginPackage(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcpe      cpe.CPE\n\t\tpkg      pkg.Package\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"go case (filter out)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:name:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tType: pkg.JenkinsPluginPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore jenkins plugins with unique name\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:name:ci-jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tType: pkg.JenkinsPluginPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore java packages\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:name:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, disallowJenkinsServerCPEForPluginPackage(test.cpe.Attributes, test.pkg))\n\t\t})\n\t}\n}\n\nfunc Test_disallowJenkinsCPEsNotAssociatedWithJenkins(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcpe      cpe.CPE\n\t\tpkg      pkg.Package\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"filter out mismatched name (cloudbees vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:cloudbees:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"not-j*nkins\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"filter out mismatched name (jenkins vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:jenkins:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"not-j*nkins\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"filter out mismatched name (any vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"not-j*nkins\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore packages with the name jenkins\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jenkins:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"jenkins-thing\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore product names that are not exactly 'jenkins'\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jenkins-something-else:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"not-j*nkins\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, disallowJenkinsCPEsNotAssociatedWithJenkins(test.cpe.Attributes, test.pkg))\n\t\t})\n\t}\n}\n\nfunc Test_disallowJiraClientServerMismatch(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcpe      cpe.CPE\n\t\tpkg      pkg.Package\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"filter out mismatched name (atlassian vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:atlassian:jira:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"something-client\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"filter out mismatched name (jira vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:jira:jira:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"something-client\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"filter out mismatched name (any vendor)\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jira:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"something-client\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore package names that do not have 'client'\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jira:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"jira-thing\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"ignore product names that are not exactly 'jira'\",\n\t\t\tcpe:  cpe.Must(\"cpe:2.3:a:*:jira-something-else:3.2:*:*:*:*:*:*:*\", cpe.GeneratedSource),\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"not-j*ra\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, disallowJiraClientServerMismatch(test.cpe.Attributes, test.pkg))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/generate.go",
    "content": "package cpegenerate\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/cpegenerate/dictionary\"\n)\n\n// knownVendors contains vendor strings that are known to exist in\n// the CPE database, so they will be preferred over other candidates:\nvar knownVendors = strset.New(\"apache\")\n\nfunc newCPE(product, vendor, version, targetSW string) *cpe.Attributes {\n\tc := cpe.NewWithAny()\n\tc.Part = \"a\"\n\tc.Product = product\n\tc.Vendor = vendor\n\tc.Version = version\n\tc.TargetSW = targetSW\n\tif cpe.ValidateString(c.String()) != nil {\n\t\treturn nil\n\t}\n\treturn &c\n}\n\n//go:embed dictionary/data/cpe-index.json\nvar indexedCPEDictionaryData []byte\n\nvar indexedCPEDictionary *dictionary.Indexed\nvar indexedCPEDictionaryOnce sync.Once\n\nfunc GetIndexedDictionary() (_ *dictionary.Indexed, err error) {\n\tindexedCPEDictionaryOnce.Do(func() {\n\t\terr = json.Unmarshal(indexedCPEDictionaryData, &indexedCPEDictionary)\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif indexedCPEDictionary == nil {\n\t\terr = fmt.Errorf(\"failed to unmarshal indexed CPE dictionary\")\n\t\treturn\n\t}\n\n\treturn indexedCPEDictionary, err\n}\n\nfunc FromDictionaryFind(p pkg.Package) ([]cpe.CPE, bool) {\n\tdict, err := GetIndexedDictionary()\n\tif err != nil {\n\t\tlog.Debugf(\"CPE dictionary lookup not available: %+v\", err)\n\t\treturn []cpe.CPE{}, false\n\t}\n\n\tvar cpes *dictionary.Set\n\tvar ok bool\n\n\tswitch p.Type {\n\tcase pkg.NpmPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemNPM][p.Name]\n\n\tcase pkg.GemPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemRubyGems][p.Name]\n\n\tcase pkg.PythonPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemPyPI][p.Name]\n\n\tcase pkg.JenkinsPluginPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemJenkinsPlugins][p.Name]\n\n\tcase pkg.RustPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemRustCrates][p.Name]\n\n\tcase pkg.PhpComposerPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemPHPComposer][p.Name]\n\n\tcase pkg.PhpPeclPkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemPHPPecl][p.Name]\n\n\tcase pkg.GoModulePkg:\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemGoModules][p.Name]\n\n\tcase pkg.WordpressPluginPkg:\n\t\tmetadata, valid := p.Metadata.(pkg.WordpressPluginEntry)\n\t\tif !valid {\n\t\t\treturn nil, false\n\t\t}\n\t\tcpes, ok = dict.EcosystemPackages[dictionary.EcosystemWordpressPlugins][metadata.PluginInstallDirectory]\n\n\tcase pkg.ModelPkg:\n\t\t// ML models should not have CPEs as they are not traditional software packages\n\t\t// and don't fit the vulnerability model used for software packages.\n\t\treturn nil, false\n\tdefault:\n\t\t// The dictionary doesn't support this package type yet.\n\t\treturn nil, false\n\t}\n\n\tif !ok {\n\t\t// The dictionary doesn't have a CPE for this package.\n\t\treturn []cpe.CPE{}, false\n\t}\n\n\tparsedCPEs := []cpe.CPE{}\n\tfor _, c := range cpes.List() {\n\t\tparsedCPE, err := cpe.New(c, cpe.NVDDictionaryLookupSource)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tparsedCPE.Attributes.Version = p.Version\n\t\tparsedCPEs = append(parsedCPEs, parsedCPE)\n\t}\n\n\tif len(parsedCPEs) == 0 {\n\t\treturn nil, false\n\t}\n\n\tsort.Sort(cpe.BySourceThenSpecificity(parsedCPEs))\n\treturn parsedCPEs, true\n}\n\n// FromPackageAttributes Create a list of CPEs for a given package, trying to guess the vendor, product tuple. We should be trying to\n// generate the minimal set of representative CPEs, which implies that optional fields should not be included\n// (such as target SW).\nfunc FromPackageAttributes(p pkg.Package) []cpe.CPE {\n\t// ML models should not have CPEs as they are not traditional software packages\n\t// and don't fit the vulnerability model used for software packages.\n\tif p.Type == pkg.ModelPkg {\n\t\treturn nil\n\t}\n\n\tvendors := candidateVendors(p)\n\tproducts := candidateProducts(p)\n\ttargetSWs := candidateTargetSw(p)\n\tif len(products) == 0 {\n\t\treturn nil\n\t}\n\n\tkeys := strset.New()\n\tcpes := make([]cpe.Attributes, 0)\n\tfor _, ts := range targetSWs {\n\t\tfor _, product := range products {\n\t\t\tfor _, vendor := range vendors {\n\t\t\t\t// prevent duplicate entries...\n\t\t\t\tkey := fmt.Sprintf(\"%s|%s|%s|%s\", product, vendor, p.Version, ts)\n\t\t\t\tif keys.Has(key) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tkeys.Add(key)\n\t\t\t\t// add a new entry...\n\t\t\t\tif c := newCPE(product, vendor, p.Version, ts); c != nil {\n\t\t\t\t\tcpes = append(cpes, *c)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// filter out any known combinations that don't accurately represent this package\n\tcpes = filter(cpes, p, cpeFilters...)\n\n\tvar result []cpe.CPE\n\tfor _, c := range cpes {\n\t\tresult = append(result, cpe.CPE{Attributes: c, Source: cpe.GeneratedSource})\n\t}\n\n\tsort.Sort(cpe.BySourceThenSpecificity(result))\n\treturn result\n}\n\nfunc candidateTargetSw(p pkg.Package) []string {\n\tif p.Type == pkg.WordpressPluginPkg {\n\t\treturn []string{\"wordpress\"}\n\t}\n\treturn []string{cpe.Any}\n}\n\nfunc candidateVendors(p pkg.Package) []string {\n\t// in ecosystems where the packaging metadata does not have a clear field to indicate a vendor (or a field that\n\t// could be interpreted indirectly as such) the project name tends to be a common stand in. Examples of this\n\t// are the elasticsearch gem, xstream jar, and rack gem... all of these cases you can find vulnerabilities\n\t// with CPEs where the vendor is the product name and doesn't appear to be derived from any available package\n\t// metadata.\n\tvendors := newFieldCandidateSet()\n\tvendors.union(candidateProductSet(p))\n\n\tswitch p.Language {\n\tcase pkg.JavaScript:\n\t\t// for JavaScript if we find node.js as a package then the vendor is \"nodejs\"\n\t\tif p.Name == \"node.js\" {\n\t\t\tvendors.addValue(\"nodejs\")\n\t\t}\n\tcase pkg.Ruby:\n\t\tvendors.addValue(\"ruby-lang\")\n\tcase pkg.Go:\n\t\t// replace all candidates with only the golang-specific helper\n\t\tvendors.clear()\n\n\t\tvendor := candidateVendorForGo(p.Name)\n\t\tif vendor != \"\" {\n\t\t\tvendors.addValue(vendor)\n\t\t}\n\t}\n\n\tswitch p.Metadata.(type) {\n\tcase pkg.DotnetDepsEntry, pkg.DotnetPackagesLockEntry, pkg.DotnetPortableExecutableEntry:\n\t\tvendors.clear()\n\t\tvendors.union(candidateVendorsForDotnet(p))\n\tcase pkg.RpmDBEntry, pkg.RpmArchive:\n\t\tvendors.union(candidateVendorsForRPM(p))\n\tcase pkg.RubyGemspec:\n\t\tvendors.union(candidateVendorsForRuby(p))\n\tcase pkg.PythonPackage:\n\t\tvendors.union(candidateVendorsForPython(p))\n\tcase pkg.JavaArchive:\n\t\tvendors.union(candidateVendorsForJava(p))\n\tcase pkg.ApkDBEntry:\n\t\tvendors.union(candidateVendorsForAPK(p))\n\tcase pkg.NpmPackage:\n\t\tvendors.union(candidateVendorsForJavascript(p))\n\tcase pkg.PEBinary:\n\t\t// Add PE-specific vendor hints (e.g. ghostscript -> artifex)\n\t\tvendors.union(candidateVendorsForPE(p))\n\tcase pkg.WordpressPluginEntry:\n\t\tvendors.clear()\n\t\tvendors.union(candidateVendorsForWordpressPlugin(p))\n\t}\n\n\tif p.Type == pkg.BinaryPkg && endsWithNumber(p.Name) {\n\t\t// add binary package digit-suffix variations (e.g. Qt5 -> Qt)\n\t\taddBinaryPackageDigitVariations(vendors)\n\t}\n\n\t// We should no longer be generating vendor candidates with these values [\"\" and \"*\"]\n\t// (since CPEs will match any other value)\n\tvendors.removeByValue(\"\")\n\tvendors.removeByValue(\"*\")\n\n\t// try swapping hyphens for underscores, vice versa, and removing separators altogether\n\taddDelimiterVariations(vendors)\n\n\t// generate sub-selections of each candidate based on separators (e.g. jenkins-ci -> [jenkins, jenkins-ci])\n\taddAllSubSelections(vendors)\n\n\t// add more candidates based on the package info for each vendor candidate\n\tfor _, vendor := range vendors.uniqueValues() {\n\t\tvendors.addValue(findAdditionalVendors(defaultCandidateAdditions, p.Type, p.Name, vendor)...)\n\t}\n\n\t// remove known mis\n\tvendors.removeByValue(findVendorsToRemove(defaultCandidateRemovals, p.Type, p.Name)...)\n\n\tuniqueVendors := vendors.uniqueValues()\n\n\t// if any known vendor was detected, pick that one.\n\tfor _, vendor := range uniqueVendors {\n\t\tif knownVendors.Has(vendor) {\n\t\t\treturn []string{vendor}\n\t\t}\n\t}\n\n\treturn uniqueVendors\n}\n\nfunc candidateProducts(p pkg.Package) []string {\n\treturn candidateProductSet(p).uniqueValues()\n}\n\nfunc candidateProductSet(p pkg.Package) fieldCandidateSet {\n\tproducts := newFieldCandidateSet(p.Name)\n\n\t_, hasJavaMetadata := p.Metadata.(pkg.JavaArchive)\n\n\tswitch {\n\tcase p.Language == pkg.Dotnet || p.Type == pkg.DotnetPkg:\n\t\tproducts.clear()\n\t\tproducts.union(candidateProductsForDotnet(p))\n\tcase p.Language == pkg.Python || p.Type == pkg.PythonPkg:\n\t\tif !strings.HasPrefix(p.Name, \"python\") {\n\t\t\tproducts.addValue(\"python-\" + p.Name)\n\t\t}\n\tcase p.Language == pkg.Java || hasJavaMetadata || p.Type == pkg.JavaPkg:\n\t\tproducts.addValue(candidateProductsForJava(p)...)\n\tcase p.Language == pkg.Go || p.Type == pkg.GoModulePkg:\n\t\t// replace all candidates with only the golang-specific helper\n\t\tproducts.clear()\n\n\t\tprod := candidateProductForGo(p.Name)\n\t\tif prod != \"\" {\n\t\t\tproducts.addValue(prod)\n\t\t}\n\tcase p.Type == pkg.BinaryPkg && endsWithNumber(p.Name):\n\t\t// add binary package digit-suffix variations (e.g. Qt5 -> Qt)\n\t\taddBinaryPackageDigitVariations(products)\n\t}\n\n\tswitch p.Metadata.(type) {\n\tcase pkg.ApkDBEntry:\n\t\tproducts.union(candidateProductsForAPK(p))\n\tcase pkg.PEBinary:\n\t\t// Add PE-specific product hints (e.g. ghostscript)\n\t\tproducts.union(candidateProductsForPE(p))\n\tcase pkg.WordpressPluginEntry:\n\t\tproducts.clear()\n\t\tproducts.union(candidateProductsForWordpressPlugin(p))\n\t}\n\n\t// it is never OK to have candidates with these values [\"\" and \"*\"] (since CPEs will match any other value)\n\tproducts.removeByValue(\"\")\n\tproducts.removeByValue(\"*\")\n\n\t// try swapping hyphens for underscores, vice versa, and removing separators altogether\n\taddDelimiterVariations(products)\n\n\t// add known candidate additions\n\tproducts.addValue(findAdditionalProducts(defaultCandidateAdditions, p.Type, p.Name)...)\n\n\t// remove known candidate removals\n\tproducts.removeByValue(findProductsToRemove(defaultCandidateRemovals, p.Type, p.Name)...)\n\n\treturn products\n}\n\nfunc addAllSubSelections(fields fieldCandidateSet) {\n\tcandidatesForVariations := fields.copy()\n\tcandidatesForVariations.removeWhere(subSelectionsDisallowed)\n\n\tfor _, candidate := range candidatesForVariations.values() {\n\t\tfields.addValue(generateSubSelections(candidate)...)\n\t}\n}\n\n// generateSubSelections attempts to split a field by hyphens and underscores and return a list of sensible sub-selections\n// that can be used as product or vendor candidates. E.g. jenkins-ci-tools -> [jenkins-ci-tools, jenkins-ci, jenkins].\nfunc generateSubSelections(field string) (results []string) {\n\tscanner := bufio.NewScanner(strings.NewReader(field))\n\tscanner.Split(scanByHyphenOrUnderscore)\n\tvar lastToken uint8\n\tfor scanner.Scan() {\n\t\trawCandidate := scanner.Text()\n\t\tif len(rawCandidate) == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// trim any number of hyphen or underscore that is prefixed/suffixed on the given candidate. Since\n\t\t// scanByHyphenOrUnderscore preserves delimiters (hyphens and underscores) they are guaranteed to be at least\n\t\t// prefixed.\n\t\tcandidate := strings.TrimFunc(rawCandidate, trimHyphenOrUnderscore)\n\n\t\t// capture the result (if there is content)\n\t\tif len(candidate) > 0 {\n\t\t\tif len(results) > 0 {\n\t\t\t\tresults = append(results, results[len(results)-1]+string(lastToken)+candidate)\n\t\t\t} else {\n\t\t\t\tresults = append(results, candidate)\n\t\t\t}\n\t\t}\n\n\t\t// keep track of the trailing separator for the next loop\n\t\tlastToken = rawCandidate[len(rawCandidate)-1]\n\t}\n\treturn results\n}\n\n// trimHyphenOrUnderscore is a character filter function for use with strings.TrimFunc in order to remove any hyphen or underscores.\nfunc trimHyphenOrUnderscore(r rune) bool {\n\tswitch r {\n\tcase '-', '_':\n\t\treturn true\n\t}\n\treturn false\n}\n\n// scanByHyphenOrUnderscore splits on hyphen or underscore and includes the separator in the split\nfunc scanByHyphenOrUnderscore(data []byte, atEOF bool) (advance int, token []byte, err error) {\n\tif atEOF && len(data) == 0 {\n\t\treturn 0, nil, nil\n\t}\n\tif i := bytes.IndexAny(data, \"-_\"); i >= 0 {\n\t\treturn i + 1, data[0 : i+1], nil\n\t}\n\n\tif atEOF {\n\t\treturn len(data), data, nil\n\t}\n\n\treturn 0, nil, nil\n}\n\nfunc addDelimiterVariations(fields fieldCandidateSet) {\n\tcandidatesForVariations := fields.copy()\n\tcandidatesForVariations.removeWhere(delimiterVariationsDisallowed)\n\n\tfor _, candidate := range candidatesForVariations.list() {\n\t\tfield := candidate.value\n\t\thasHyphen := strings.Contains(field, \"-\")\n\t\thasUnderscore := strings.Contains(field, \"_\")\n\n\t\tif hasHyphen {\n\t\t\t// provide variations of hyphen candidates with an underscore\n\t\t\tnewValue := strings.ReplaceAll(field, \"-\", \"_\")\n\t\t\tunderscoreCandidate := candidate\n\t\t\tunderscoreCandidate.value = newValue\n\t\t\tfields.add(underscoreCandidate)\n\t\t}\n\n\t\tif hasUnderscore {\n\t\t\t// provide variations of underscore candidates with a hyphen\n\t\t\tnewValue := strings.ReplaceAll(field, \"_\", \"-\")\n\t\t\thyphenCandidate := candidate\n\t\t\thyphenCandidate.value = newValue\n\t\t\tfields.add(hyphenCandidate)\n\t\t}\n\t}\n}\n\n// removeTrailingDigits removes all trailing digits from a string\nfunc removeTrailingDigits(s string) string {\n\tre := regexp.MustCompile(`\\d+$`)\n\treturn re.ReplaceAllString(s, \"\")\n}\n\n// addBinaryPackageDigitVariations adds variations with trailing digits removed for binary packages.For binary package types only, when the name ends with a digit, add a new variation with all suffix-digits removed (e.g. Qt5 -> Qt). This helps generate additional CPE permutations for better vulnerability matching.\nfunc addBinaryPackageDigitVariations(fields fieldCandidateSet) {\n\tcandidatesForVariations := fields.copy()\n\tfor _, candidate := range candidatesForVariations.values() {\n\t\t// Check if the candidate ends with a digit\n\t\tif len(candidate) > 0 && candidate[len(candidate)-1] >= '0' && candidate[len(candidate)-1] <= '9' {\n\t\t\t// Create variation with all suffix digits removed\n\t\t\twithoutDigits := removeTrailingDigits(candidate)\n\t\t\tif withoutDigits != \"\" && withoutDigits != candidate {\n\t\t\t\tfields.addValue(withoutDigits)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc endsWithNumber(s string) bool {\n\tif len(s) == 0 {\n\t\treturn false\n\t}\n\tr := []rune(s)\n\tlast := r[len(r)-1]\n\treturn unicode.IsDigit(last)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/generate_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc keyValues(m map[string]string) []pkg.KeyValue {\n\tvar kvs []pkg.KeyValue\n\tfor k, v := range m {\n\t\tkvs = append(kvs, pkg.KeyValue{\n\t\t\tKey:   k,\n\t\t\tValue: v,\n\t\t})\n\t}\n\treturn kvs\n}\n\nfunc TestGeneratePackageCPEs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tp        pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"hyphen replacement\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name-part\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Python,\n\t\t\t\tType:     pkg.DebPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name-part:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name-part:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name-part:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name-part:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name_part:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name_part:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name_part:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name_part:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name-part:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name-part:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name-part:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name-part:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name_part:name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name_part:name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name_part:python-name-part:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name_part:python_name_part:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"python language\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Python,\n\t\t\t\tType:     pkg.DebPkg,\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tAuthor:      \"alex goodman\",\n\t\t\t\t\tAuthorEmail: \"william.goodman@anchore.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-name:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_name:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william-goodman:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william-goodman:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william-goodman:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman_project:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman_project:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodman_project:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodmanproject:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodmanproject:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alex_goodmanproject:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman_project:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman_project:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodman_project:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodmanproject:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodmanproject:python-name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:william_goodmanproject:python_name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"javascript language\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tAuthor: \"jon\",\n\t\t\t\t\tURL:    \"https://github.com/bob/npm-name\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:bob:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ruby language\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Ruby,\n\t\t\t\tType:     pkg.DebPkg,\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tAuthors: []string{\n\t\t\t\t\t\t\"someones name\",\n\t\t\t\t\t\t\"someones.elses.name@gmail.com\",\n\t\t\t\t\t},\n\t\t\t\t\tHomepage: \"https://github.com/tom/ruby-name\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-lang:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_lang:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:someones-elses-name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:someones-name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:someones_elses_name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:someones_name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:tom:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"java language\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"java language with groupID\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"org.sonatype.nexus\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:nexus:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:nexus:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:nexus:nexus:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:sonatype:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:sonatype:nexus:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.sonatype.nexus:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.sonatype.nexus:nexus:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"java with URL in metadata\", // regression: https://github.com/anchore/grype/issues/417\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"wstx-asl\",\n\t\t\t\tVersion: \"3.2.7\",\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: keyValues(map[string]string{\n\t\t\t\t\t\t\t\"Ant-Version\":            \"Apache Ant 1.6.5\",\n\t\t\t\t\t\t\t\"Built-By\":               \"tatu\",\n\t\t\t\t\t\t\t\"Created-By\":             \"1.4.2_03-b02 (Sun Microsystems Inc.)\",\n\t\t\t\t\t\t\t\"Implementation-Title\":   \"WoodSToX XML-processor\",\n\t\t\t\t\t\t\t\"Implementation-Vendor\":  \"woodstox.codehaus.org\",\n\t\t\t\t\t\t\t\"Implementation-Version\": \"3.2.7\",\n\t\t\t\t\t\t\t\"Manifest-Version\":       \"1.0\",\n\t\t\t\t\t\t\t\"Specification-Title\":    \"StAX 1.0 API\",\n\t\t\t\t\t\t\t\"Specification-Vendor\":   \"http://jcp.org/en/jsr/detail?id=173\",\n\t\t\t\t\t\t\t\"Specification-Version\":  \"1.0\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:woodstox_codehaus_org:wstx-asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:woodstox_codehaus_org:wstx_asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:woodstox-codehaus-org:wstx_asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:woodstox-codehaus-org:wstx-asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx_asl:wstx-asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx-asl:wstx-asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx-asl:wstx_asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx_asl:wstx_asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx:wstx_asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:wstx:wstx-asl:3.2.7:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins package identified via pkg type\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"java language - multi tier manifest fields\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"cxf-rt-bindings-xml\",\n\t\t\t\tVersion:  \"3.3.10\",\n\t\t\t\tFoundBy:  \"java-cataloger\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"/opt/jboss/keycloak/modules/system/layers/base/org/apache/cxf/impl/main/cxf-rt-bindings-xml-3.3.10.jar\",\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: keyValues(map[string]string{\n\t\t\t\t\t\t\t\"Automatic-Module-Name\":    \"org.apache.cxf.binding.xml\",\n\t\t\t\t\t\t\t\"Bnd-LastModified\":         \"1615836524860\",\n\t\t\t\t\t\t\t\"Build-Jdk\":                \"1.8.0_261\",\n\t\t\t\t\t\t\t\"Built-By\":                 \"dkulp\",\n\t\t\t\t\t\t\t\"Bundle-ActivationPolicy\":  \"lazy\",\n\t\t\t\t\t\t\t\"Bundle-Description\":       \"Apache CXF Runtime XML Binding\",\n\t\t\t\t\t\t\t\"Bundle-DocURL\":            \"http://cxf.apache.org\",\n\t\t\t\t\t\t\t\"Bundle-License\":           \"https://www.apache.org/licenses/LICENSE-2.0.txt\",\n\t\t\t\t\t\t\t\"Bundle-ManifestVersion\":   \"2\",\n\t\t\t\t\t\t\t\"Bundle-Name\":              \"Apache CXF Runtime XML Binding\",\n\t\t\t\t\t\t\t\"Bundle-SymbolicName\":      \"org.apache.cxf.cxf-rt-bindings-xml\",\n\t\t\t\t\t\t\t\"Bundle-Vendor\":            \"The Apache Software Foundation\",\n\t\t\t\t\t\t\t\"Bundle-Version\":           \"3.3.10\",\n\t\t\t\t\t\t\t\"Created-By\":               \"Apache Maven Bundle Plugin\",\n\t\t\t\t\t\t\t\"Export-Package\":           \"org.apache.cxf.binding.xml;version=\\\"3.3.10\\\",org.apache.cxf.binding.xml.wsdl11;version=\\\"3.3.10\\\",org.apache.cxf.binding.xml.interceptor;version=\\\"3.3.10\\\",org.apache.cxf.bindings.xformat;version=\\\"3.3.10\\\"\",\n\t\t\t\t\t\t\t\"Implementation-Vendor\":    \"The Apache Software Foundation\",\n\t\t\t\t\t\t\t\"Implementation-Vendor-Id\": \"org.apache\",\n\t\t\t\t\t\t\t\"Implementation-Version\":   \"3.3.10\",\n\t\t\t\t\t\t\t\"Import-Package\":           \"javax.xml.bind;version=\\\"[0,3)\\\",javax.xml.bind.annotation;version=\\\"[0,3)\\\",javax.wsdl;resolution:=optional,javax.wsdl.extensions;resolution:=optional,javax.wsdl.extensions.http;resolution:=optional,javax.xml.namespace,javax.xml.stream,org.apache.cxf;version=\\\"[3.3,4)\\\",org.apache.cxf.binding;version=\\\"[3.3,4)\\\",org.apache.cxf.binding.xml,org.apache.cxf.binding.xml.interceptor,org.apache.cxf.bindings.xformat,org.apache.cxf.common.i18n;version=\\\"[3.3,4)\\\",org.apache.cxf.common.injection;version=\\\"[3.3,4)\\\",org.apache.cxf.common.logging;version=\\\"[3.3,4)\\\",org.apache.cxf.common.util;version=\\\"[3.3,4)\\\",org.apache.cxf.endpoint;version=\\\"[3.3,4)\\\",org.apache.cxf.helpers;version=\\\"[3.3,4)\\\",org.apache.cxf.interceptor;version=\\\"[3.3,4)\\\",org.apache.cxf.message;version=\\\"[3.3,4)\\\",org.apache.cxf.service.model;version=\\\"[3.3,4)\\\",org.apache.cxf.staxutils;version=\\\"[3.3,4)\\\",org.apache.cxf.tools.common;version=\\\"[3.3,4)\\\";resolution:=optional,org.apache.cxf.tools.validator;version=\\\"[3.3,4)\\\";resolution:=optional,org.apache.cxf.transport;version=\\\"[3.3,4)\\\",org.apache.cxf.wsdl;version=\\\"[3.3,4)\\\";resolution:=optional,org.apache.cxf.wsdl.http;version=\\\"[3.3,4)\\\",org.apache.cxf.wsdl.interceptors;version=\\\"[3.3,4)\\\";resolution:=optional,org.w3c.dom\",\n\t\t\t\t\t\t\t\"Manifest-Version\":         \"1.0\",\n\t\t\t\t\t\t\t\"Require-Capability\":       \"osgi.ee;filter:=\\\"(&(osgi.ee=JavaSE)(version=1.8))\\\"\",\n\t\t\t\t\t\t\t\"Specification-Vendor\":     \"The Apache Software Foundation\",\n\t\t\t\t\t\t\t\"Specification-Version\":    \"3.3.10\",\n\t\t\t\t\t\t\t\"Tool\":                     \"Bnd-4.2.0.201903051501\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tPath:       \"META-INF/maven/org.apache.cxf/cxf-rt-bindings-xml/pom.properties\",\n\t\t\t\t\t\tGroupID:    \"org.apache.cxf\",\n\t\t\t\t\t\tArtifactID: \"cxf-rt-bindings-xml\",\n\t\t\t\t\t\tVersion:    \"3.3.10\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:apache:cxf-rt-bindings-xml:3.3.10:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apache:cxf:3.3.10:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apache:cxf_rt_bindings_xml:3.3.10:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm archive vendor selection\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"3.2\",\n\t\t\t\tFoundBy: \"some-analyzer\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tMetadata: pkg.RpmArchive{\n\t\t\t\t\tVendor: \"some-vendor\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some-vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some_vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm vendor selection\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"3.2\",\n\t\t\t\tFoundBy: \"some-analyzer\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tVendor: \"some-vendor\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some-vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some_vendor:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"rpm with epoch\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"name\",\n\t\t\t\tVersion: \"1:3.2\",\n\t\t\t\tFoundBy: \"some-analyzer\",\n\t\t\t\tType:    pkg.RpmPkg,\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tVendor: \"some-vendor\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:1\\\\:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some-vendor:name:1\\\\:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:some_vendor:name:1\\\\:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"deb with epoch\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"1:3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tType:     pkg.DebPkg,\n\t\t\t\tMetadata: pkg.DpkgDBEntry{},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:1\\\\:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cloudbees jenkins package identified via groupId\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"com.cloudbees.jenkins.plugins\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:com.cloudbees.jenkins.plugins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins.io package identified via groupId prefix\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"io.jenkins.plugins.name.something\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:name:something:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something:something:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:something:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:io.jenkins.plugins.name.something:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:io.jenkins.plugins.name.something:something:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins.io package identified via groupId\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"io.jenkins.plugins\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:io.jenkins.plugins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins-ci.io package identified via groupId\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"io.jenkins-ci.plugins\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins-ci:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins_ci:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:io.jenkins-ci.plugins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins-ci.org package identified via groupId\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"name\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"org.jenkins-ci.plugins\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:name:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins-ci:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins_ci:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.jenkins-ci.plugins:name:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jira-atlassian filtering\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"jira_client_core\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID:    \"org.atlassian.jira\",\n\t\t\t\t\t\tArtifactID: \"jira_client_core\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:atlassian:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:atlassian:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client-core:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client-core:jira:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client-core:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client:jira:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira-client:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client:jira:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client_core:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client_core:jira:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jira_client_core:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.atlassian.jira:jira:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.atlassian.jira:jira_client_core:3.2:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.atlassian.jira:jira-client-core:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins filtering\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"cloudbees-installation-manager\",\n\t\t\t\tVersion:  \"2.89.0.33\",\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID:    \"com.cloudbees.jenkins.modules\",\n\t\t\t\t\t\tArtifactID: \"cloudbees-installation-manager\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:cloudbees-installation-manager:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees-installation-manager:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees-installation:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees-installation:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees_installation:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees_installation:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees_installation_manager:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:cloudbees_installation_manager:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:modules:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:modules:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:com.cloudbees.jenkins.modules:cloudbees_installation_manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:com.cloudbees.jenkins.modules:cloudbees-installation-manager:2.89.0.33:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"go product and vendor candidates are wired up\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"github.com/someone/something\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"go-cataloger\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:someone:something:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"go product with vendor candidates and an extra sub-item\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"github.com/someone/something/more\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"go-cataloger\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:someone:something\\\\/more:3.2:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"generate no CPEs for indeterminate golang package name\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"github.com/what\",\n\t\t\t\tVersion:  \"3.2\",\n\t\t\t\tFoundBy:  \"go-cataloger\",\n\t\t\t\tLanguage: pkg.Go,\n\t\t\t\tType:     pkg.GoModulePkg,\n\t\t\t},\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname: \"regression: handlebars within java archive\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"handlebars\",\n\t\t\t\tVersion:  \"3.0.8\",\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tFoundBy:  \"java-cataloger\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: keyValues(map[string]string{\n\t\t\t\t\t\t\t\"Extension-Name\":         \"handlebars\",\n\t\t\t\t\t\t\t\"Group-Id\":               \"org.jenkins-ci.ui\",\n\t\t\t\t\t\t\t\"Hudson-Version\":         \"2.204\",\n\t\t\t\t\t\t\t\"Implementation-Title\":   \"handlebars\",\n\t\t\t\t\t\t\t\"Implementation-Version\": \"3.0.8\",\n\t\t\t\t\t\t\t\"Plugin-Version\":         \"3.0.8\",\n\t\t\t\t\t\t\t\"Short-Name\":             \"handlebars\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID:    \"org.jenkins-ci.ui\",\n\t\t\t\t\t\tArtifactID: \"handlebars\",\n\t\t\t\t\t\tVersion:    \"3.0.8\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:handlebars:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:handlebarsjs:handlebars:3.0.8:*:*:*:*:*:*:*\", // important!\n\t\t\t\t\"cpe:2.3:a:jenkins-ci:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins_ci:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ui:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.jenkins-ci.ui:handlebars:3.0.8:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regression: jenkins plugin active-directory\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"active-directory\",\n\t\t\t\tVersion:  \"2.25.1\",\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tFoundBy:  \"java-cataloger\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: keyValues(map[string]string{\n\t\t\t\t\t\t\t\"Extension-Name\": \"active-directory\",\n\t\t\t\t\t\t\t\"Group-Id\":       \"org.jenkins-ci.plugins\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID:    \"org.jenkins-ci.plugins\",\n\t\t\t\t\t\tArtifactID: \"org.jenkins-ci.plugins\",\n\t\t\t\t\t\tVersion:    \"2.25.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:active-directory:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:active-directory:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:active:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:active:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:active_directory:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:active_directory:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins-ci:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins-ci:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins:active-directory:2.25.1:*:*:*:*:*:*:*\", // important!\n\t\t\t\t\"cpe:2.3:a:jenkins:active_directory:2.25.1:*:*:*:*:*:*:*\", // important!\n\t\t\t\t\"cpe:2.3:a:jenkins_ci:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jenkins_ci:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.jenkins-ci.plugins:active-directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:org.jenkins-ci.plugins:active_directory:2.25.1:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regression: special characters in CPE should result in no generation\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"bundler\",\n\t\t\t\tVersion:  \"2.1.4\",\n\t\t\t\tType:     pkg.GemPkg,\n\t\t\t\tFoundBy:  \"gem-cataloger\",\n\t\t\t\tLanguage: pkg.Ruby,\n\t\t\t\tMetadata: pkg.RubyGemspec{\n\t\t\t\t\tName:    \"bundler\",\n\t\t\t\t\tVersion: \"2.1.4\",\n\t\t\t\t\tAuthors: []string{\n\t\t\t\t\t\t\"jessica lynn suttles\",\n\t\t\t\t\t\t\"stephanie morillo\",\n\t\t\t\t\t\t\"david rodríguez\",\n\t\t\t\t\t\t\"andré medeiros\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:bundler:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-lang:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_lang:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jessica-lynn-suttles:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:jessica_lynn_suttles:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:stephanie-morillo:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:stephanie_morillo:bundler:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regression: python redis shadows normal redis\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"redis\",\n\t\t\t\tVersion:  \"2.1.4\",\n\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\tFoundBy:  \"some-analyzer\",\n\t\t\t\tLanguage: pkg.Python,\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:python-redis:python-redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-redis:python_redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python-redis:redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python-redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:python_redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python:redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_redis:python-redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_redis:python_redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:python_redis:redis:2.1.4:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regression: ruby-rake apk missing expected ruby-lang:rake CPE\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"ruby-rake\",\n\t\t\t\tVersion:  \"2.7.6-r0\",\n\t\t\t\tType:     pkg.ApkPkg,\n\t\t\t\tFoundBy:  \"apk-db-analyzer\",\n\t\t\t\tLanguage: pkg.UnknownLanguage,\n\t\t\t\tMetadata: pkg.ApkDBEntry{\n\t\t\t\t\tPackage:       \"ruby-rake\",\n\t\t\t\t\tURL:           \"https://www.ruby-lang.org/\",\n\t\t\t\t\tOriginPackage: \"ruby\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:ruby-lang:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:rake:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:rake:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:rake:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-lang:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-lang:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-rake:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-rake:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby-rake:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_lang:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_lang:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_lang:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_rake:rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_rake:ruby-rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ruby_rake:ruby_rake:2.7.6-r0:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"wordpress plugin\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"WP Coder\",\n\t\t\t\tVersion: \"2.5.1\",\n\t\t\t\tType:    pkg.WordpressPluginPkg,\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"wp-coder\",\n\t\t\t\t\tAuthor:                 \"Wow-Company\",\n\t\t\t\t\tAuthorURI:              \"https://wow-estore.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:wow-company:wp-coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow-company:wp_coder:2.5.1:*:*:*:*:wordpress:*:*\", // this is the correct CPE relative to CVE-2021-25053\n\t\t\t\t\"cpe:2.3:a:wow-estore:wp-coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow-estore:wp_coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow:wp-coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow:wp_coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow_company:wp-coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow_company:wp_coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow_estore:wp-coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t\t\"cpe:2.3:a:wow_estore:wp_coder:2.5.1:*:*:*:*:wordpress:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dotnet deps.json\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"Something\",\n\t\t\t\tVersion: \"2.5.1\",\n\t\t\t\tType:    pkg.DotnetPkg,\n\t\t\t\tMetadata: pkg.DotnetDepsEntry{\n\t\t\t\t\tName: \"Something-Else\",\n\n\t\t\t\t\tExecutables: map[string]pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\tAssemblyVersion: \"assembly-version!\",\n\t\t\t\t\t\t\tLegalCopyright:  \"copyright!\",\n\t\t\t\t\t\t\tComments:        \"comments!\",\n\t\t\t\t\t\t\tInternalName:    \"internal!\",\n\t\t\t\t\t\t\tCompanyName:     \"company!\",\n\t\t\t\t\t\t\tProductName:     \"product!\",\n\t\t\t\t\t\t\tProductVersion:  \"version!\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:company\\\\!:product\\\\!:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:company\\\\!:product\\\\!_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:company\\\\!:something_else:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:company\\\\!:something_else_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something_else:product\\\\!:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something_else:product\\\\!_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something_else:something_else:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something_else:something_else_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dotnet executable\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"Something\",\n\t\t\t\tVersion: \"2.5.1\",\n\t\t\t\tType:    pkg.DotnetPkg,\n\t\t\t\tMetadata: pkg.DotnetPortableExecutableEntry{\n\t\t\t\t\tAssemblyVersion: \"assembly-version!\",\n\t\t\t\t\tLegalCopyright:  \"copyright!\",\n\t\t\t\t\tComments:        \"comments!\",\n\t\t\t\t\tInternalName:    \"internal!\",\n\t\t\t\t\tCompanyName:     \"company!\",\n\t\t\t\t\tProductName:     \"product!\",\n\t\t\t\t\tProductVersion:  \"version!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:company\\\\!:product\\\\!:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:company\\\\!:product\\\\!_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dotnet package.lock\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"Something\",\n\t\t\t\tVersion: \"2.5.1\",\n\t\t\t\tType:    pkg.DotnetPkg,\n\t\t\t\tMetadata: pkg.DotnetPackagesLockEntry{\n\t\t\t\t\tName: \"Something-Else\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"cpe:2.3:a:something_else:something_else:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:something_else:something_else_.net:2.5.1:*:*:*:*:*:*:*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"ML model package should generate no CPEs\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:    \"llama3-8b\",\n\t\t\t\tVersion: \"3.0\",\n\t\t\t\tType:    pkg.ModelPkg,\n\t\t\t},\n\t\t\texpected: []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := FromPackageAttributes(test.p)\n\t\t\texpectedCpeSet := set.NewStringSet()\n\t\t\tfor _, cpeStr := range test.expected {\n\t\t\t\texpectedCpeSet.Add(\"syft-generated:\" + cpeStr)\n\t\t\t}\n\n\t\t\tactualCpeSet := set.NewStringSet()\n\t\t\tfor _, a := range actual {\n\t\t\t\tactualCpeSet.Add(fmt.Sprintf(\"%s:%s\", a.Source.String(), a.Attributes.String()))\n\t\t\t}\n\n\t\t\textra := strset.Difference(actualCpeSet, expectedCpeSet).List()\n\t\t\tsort.Strings(extra)\n\t\t\tif len(extra) > 0 {\n\t\t\t\tt.Errorf(\"found extra CPEs:\")\n\t\t\t\tfor _, d := range extra {\n\t\t\t\t\tt.Logf(\"   %q,\\n\", d)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmissing := strset.Difference(expectedCpeSet, actualCpeSet).List()\n\t\t\tsort.Strings(missing)\n\t\t\tif len(missing) > 0 {\n\t\t\t\tt.Errorf(\"missing CPEs:\")\n\t\t\t\tfor _, d := range missing {\n\t\t\t\t\tt.Logf(\"   %q,\\n\", d)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCandidateProducts(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tp        pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"apache-cassandra\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"apache-cassandra\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"cassandra\" /* <-- known good names | default guess --> */, \"apache-cassandra\", \"apache_cassandra\"},\n\t\t},\n\t\t{\n\t\t\tname: \"springframework\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"springframework\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"spring_framework\", \"springsource_spring_framework\" /* <-- known good names | default guess --> */, \"springframework\"},\n\t\t},\n\t\t{\n\t\t\tname: \"spring-security-core\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"spring-security-core\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"spring-security-core\", \"spring_security\", \"spring_security_core\"},\n\t\t},\n\t\t{\n\t\t\tname: \"java\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"some-java-package-with-group-id\",\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"com.apple.itunes\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"itunes\", \"some-java-package-with-group-id\", \"some_java_package_with_group_id\"},\n\t\t},\n\t\t{\n\t\t\tname: \"java-with-asterisk\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"some-java-package-with-group-id\",\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"com.apple.itunes.*\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"itunes\", \"some-java-package-with-group-id\", \"some_java_package_with_group_id\"},\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins-plugin\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:     \"some-jenkins-plugin\",\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"com.cloudbees.jenkins.plugins\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"some-jenkins-plugin\", \"some_jenkins_plugin\", \"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tname: \"javascript\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"handlebars.js\",\n\t\t\t\tType: pkg.NpmPkg,\n\t\t\t},\n\t\t\texpected: []string{\"handlebars\" /* <-- known good names | default guess --> */, \"handlebars.js\"},\n\t\t},\n\t\t{\n\t\t\tname: \"gem\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"RedCloth\",\n\t\t\t\tType: pkg.GemPkg,\n\t\t\t},\n\t\t\texpected: []string{\"redcloth_library\" /* <-- known good names | default guess --> */, \"RedCloth\"},\n\t\t},\n\t\t{\n\t\t\tname: \"python\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"python-rrdtool\",\n\t\t\t\tType: pkg.PythonPkg,\n\t\t\t},\n\t\t\texpected: []string{\"rrdtool\" /* <-- known good names | default guess --> */, \"python-rrdtool\", \"python_rrdtool\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateProducts(test.p))\n\t\t})\n\t}\n}\n\nfunc TestCandidateVendor(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tp        pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"elasticsearch\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"elasticsearch\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"elastic\" /* <-- known good names | default guess --> */, \"elasticsearch\"},\n\t\t},\n\t\t{\n\t\t\tname: \"spring-security\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"spring-security-core\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"vmware\" /* <-- known good names | default guess --> */, \"spring\", \"spring-security\", \"spring-security-core\", \"spring_security_core\", \"spring_security\"},\n\t\t},\n\t\t{\n\t\t\tname: \"log4j\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"log4j\",\n\t\t\t\tType: pkg.JavaPkg,\n\t\t\t},\n\t\t\texpected: []string{\"apache\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Django\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"Django\",\n\t\t\t\tType: pkg.PythonPkg,\n\t\t\t},\n\t\t\texpected: []string{\"djangoproject\", \"python-Django\", \"python_Django\" /* <-- known good names | default guess --> */, \"python\", \"Django\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateVendors(test.p))\n\t\t})\n\t}\n}\n\nfunc Test_generateSubSelections(t *testing.T) {\n\ttests := []struct {\n\t\tfield    string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tfield:    \"jenkins\",\n\t\t\texpected: []string{\"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"jenkins-ci\",\n\t\t\texpected: []string{\"jenkins\", \"jenkins-ci\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"jenkins--ci\",\n\t\t\texpected: []string{\"jenkins\", \"jenkins-ci\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"jenkins_ci_tools\",\n\t\t\texpected: []string{\"jenkins\", \"jenkins_ci\", \"jenkins_ci_tools\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"-jenkins\",\n\t\t\texpected: []string{\"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"jenkins_\",\n\t\t\texpected: []string{\"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tfield:    \"\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tfield:    \"-\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tfield:    \"_\",\n\t\t\texpected: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.field, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, generateSubSelections(test.field))\n\t\t})\n\t}\n}\n\nfunc Test_addSeparatorVariations(t *testing.T) {\n\ttests := []struct {\n\t\tinput    []string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tinput:    []string{\"jenkins-ci\"},\n\t\t\texpected: []string{\"jenkins-ci\", \"jenkins_ci\"}, //, \"jenkinsci\"},\n\t\t},\n\t\t{\n\t\t\tinput:    []string{\"jenkins_ci\"},\n\t\t\texpected: []string{\"jenkins_ci\", \"jenkins-ci\"}, //, \"jenkinsci\"},\n\t\t},\n\t\t{\n\t\t\tinput:    []string{\"jenkins\"},\n\t\t\texpected: []string{\"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tinput:    []string{\"jenkins-ci\", \"circle-ci\"},\n\t\t\texpected: []string{\"jenkins-ci\", \"jenkins_ci\", \"circle-ci\", \"circle_ci\"}, //, \"jenkinsci\", \"circleci\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.input, \",\"), func(t *testing.T) {\n\t\t\tval := newFieldCandidateSet(test.input...)\n\t\t\taddDelimiterVariations(val)\n\t\t\tassert.ElementsMatch(t, test.expected, val.values())\n\t\t})\n\t}\n}\n\nfunc TestDictionaryFindIsWired(t *testing.T) {\n\n\ttests := []struct {\n\t\tname       string\n\t\tpkg        pkg.Package\n\t\twant       []cpe.CPE\n\t\twantExists bool\n\t}{\n\t\t{\n\t\t\tname: \"sanity check that cpe data is wired up\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"openssl\",\n\t\t\t\tVersion: \"1.0.2k\",\n\t\t\t\tType:    pkg.GemPkg,\n\t\t\t},\n\t\t\twant: []cpe.CPE{\n\t\t\t\tcpe.Must(\"cpe:2.3:a:ruby-lang:openssl:1.0.2k:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t\tcpe.Must(\"cpe:2.3:a:ruby-lang:openssl:1.0.2k:*:*:*:*:ruby:*:*\", cpe.NVDDictionaryLookupSource),\n\t\t\t},\n\t\t\t// without the cpe data wired up, this would be empty (generation also creates cpe:2.3:a:openssl:openssl:1.0.2k:*:*:*:*:*:*:*)\n\t\t\twantExists: true,\n\t\t},\n\t\t{\n\t\t\tname: \"ML model packages should not have dictionary CPEs\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:    \"llama3-8b\",\n\t\t\t\tVersion: \"3.0\",\n\t\t\t\tType:    pkg.ModelPkg,\n\t\t\t},\n\t\t\twant:       []cpe.CPE{},\n\t\t\twantExists: false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot, gotExists := FromDictionaryFind(tt.pkg)\n\t\t\tassert.ElementsMatch(t, tt.want, got)\n\t\t\tassert.Equal(t, tt.wantExists, gotExists)\n\t\t})\n\t}\n}\n\n// TestAddBinaryPackageDigitVariations tests the heuristic for binary package types\n// where names ending with digits get variations with all suffix-digits removed (e.g. Qt5 -> Qt).\n// This improves vulnerability matching for binary packages like Qt6, libfoo123, etc.\nfunc TestAddBinaryPackageDigitVariations(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tpackageType     pkg.Type\n\t\tinputCandidates []string\n\t\texpectedPresent []string // These should be present in the result\n\t\texpectedAbsent  []string // These should NOT be present in the result\n\t}{\n\t\t{\n\t\t\tname:            \"Qt5 binary package example\",\n\t\t\tpackageType:     pkg.BinaryPkg,\n\t\t\tinputCandidates: []string{\"Qt5\"},\n\t\t\texpectedPresent: []string{\"Qt5\", \"Qt\"},\n\t\t\texpectedAbsent:  []string{},\n\t\t},\n\t\t{\n\t\t\tname:            \"package with trailing digits\",\n\t\t\tpackageType:     pkg.BinaryPkg,\n\t\t\tinputCandidates: []string{\"Qt5\", \"libfoo123\", \"bar42\", \"baz\"},\n\t\t\texpectedPresent: []string{\"Qt5\", \"Qt\", \"libfoo123\", \"libfoo\", \"bar42\", \"bar\", \"baz\"},\n\t\t\texpectedAbsent:  []string{},\n\t\t},\n\t\t{\n\t\t\tname:            \"multiple trailing digits\",\n\t\t\tinputCandidates: []string{\"Qt872\", \"package999\"},\n\t\t\texpectedPresent: []string{\"Qt872\", \"Qt\", \"package999\", \"package\"},\n\t\t\texpectedAbsent:  []string{},\n\t\t},\n\t\t{\n\t\t\tname:            \"package without trailing digits\",\n\t\t\tinputCandidates: []string{\"QtCore\", \"libfoo\", \"bar\"},\n\t\t\texpectedPresent: []string{\"QtCore\", \"libfoo\", \"bar\"},\n\t\t\texpectedAbsent:  []string{\"QtCor\", \"libfo\", \"ba\"},\n\t\t},\n\t\t{\n\t\t\tname:            \"empty candidate set\",\n\t\t\tpackageType:     pkg.BinaryPkg,\n\t\t\tinputCandidates: []string{},\n\t\t\texpectedPresent: []string{},\n\t\t\texpectedAbsent:  []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfields := newFieldCandidateSet(test.inputCandidates...)\n\t\t\taddBinaryPackageDigitVariations(fields)\n\n\t\t\tvalues := fields.uniqueValues()\n\n\t\t\tfor _, expected := range test.expectedPresent {\n\t\t\t\tassert.Contains(t, values, expected, \"expected %q to be present\", expected)\n\t\t\t}\n\n\t\t\tfor _, notExpected := range test.expectedAbsent {\n\t\t\t\tassert.NotContains(t, values, notExpected, \"expected %q to be absent\", notExpected)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/go.go",
    "content": "package cpegenerate\n\nimport (\n\t\"net/url\"\n\t\"strings\"\n)\n\n// candidateProductForGo attempts to find a single product name in a best-effort attempt. This implementation prefers\n// to return no vendor over returning potentially nonsensical results.\nfunc candidateProductForGo(name string) string {\n\t// note: url.Parse requires a scheme for correct processing, which a golang module will not have, so one is provided.\n\tu, err := url.Parse(\"http://\" + name)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tcleanPath := strings.Trim(u.Path, \"/\")\n\tpathElements := strings.Split(cleanPath, \"/\")\n\n\tswitch u.Host {\n\tcase \"golang.org\", \"gopkg.in\":\n\t\treturn cleanPath\n\tcase \"google.golang.org\":\n\t\treturn pathElements[0]\n\t}\n\n\tif len(pathElements) < 2 {\n\t\treturn \"\"\n\t}\n\n\t// returning the rest of the path here means longer CPEs, it helps avoiding false-positives\n\t// ref: https://github.com/anchore/grype/issues/676\n\treturn strings.Join(pathElements[1:], \"/\")\n}\n\n// candidateVendorForGo attempts to find a single vendor name in a best-effort attempt. This implementation prefers\n// to return no vendor over returning potentially nonsensical results.\nfunc candidateVendorForGo(name string) string {\n\t// note: url.Parse requires a scheme for correct processing, which a golang module will not have, so one is provided.\n\tu, err := url.Parse(\"http://\" + name)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tcleanPath := strings.Trim(u.Path, \"/\")\n\n\tswitch u.Host {\n\tcase \"google.golang.org\":\n\t\treturn \"google\"\n\tcase \"golang.org\":\n\t\treturn \"golang\"\n\tcase \"gopkg.in\":\n\t\treturn \"\"\n\t}\n\n\tpathElements := strings.Split(cleanPath, \"/\")\n\tif len(pathElements) < 2 {\n\t\treturn \"\"\n\t}\n\treturn pathElements[0]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/go_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestCandidateProductForGo(t *testing.T) {\n\ttests := []struct {\n\t\tpkg      string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tpkg:      \"github.com/someone/something\",\n\t\t\texpected: \"something\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"golang.org/x/xerrors\",\n\t\t\texpected: \"x/xerrors\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"gopkg.in/yaml.v2\",\n\t\t\texpected: \"yaml.v2\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place.com/\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place.com/someone-or-thing\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"google.golang.org/genproto/googleapis/rpc/status\",\n\t\t\texpected: \"genproto\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"github.com/someone/something/long/package/name\",\n\t\t\texpected: \"something/long/package/name\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.pkg, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, candidateProductForGo(test.pkg))\n\t\t})\n\t}\n}\n\nfunc TestCandidateVendorForGo(t *testing.T) {\n\ttests := []struct {\n\t\tpkg      string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tpkg:      \"github.com/someone/something\",\n\t\t\texpected: \"someone\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"golang.org/x/xerrors\",\n\t\t\texpected: \"golang\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"gopkg.in/yaml.v2\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place.com/\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"place.com/someone-or-thing\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"google.golang.org/genproto/googleapis/rpc/status\",\n\t\t\texpected: \"google\",\n\t\t},\n\t\t{\n\t\t\tpkg:      \"github.com/someone/something/long/package/name\",\n\t\t\texpected: \"someone\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.pkg, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, candidateVendorForGo(test.pkg))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/java.go",
    "content": "package cpegenerate\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\tforbiddenProductGroupIDFields = strset.New(\"plugin\", \"plugins\", \"client\")\n\tforbiddenVendorGroupIDFields  = strset.New(\"plugin\", \"plugins\")\n\n\tdomains = []string{\n\t\t\"com\",\n\t\t\"org\",\n\t\t\"net\",\n\t\t\"io\",\n\t\t\"be\",\n\t}\n\n\tPrimaryJavaManifestGroupIDFields = []string{\n\t\t\"Group-Id\",\n\t\t\"Bundle-SymbolicName\",\n\t\t\"Extension-Name\",\n\t\t\"Specification-Vendor\",\n\t\t\"Implementation-Vendor\",\n\t\t\"Implementation-Vendor-Id\",\n\t\t\"Implementation-Title\",\n\t\t\"Bundle-Activator\",\n\t}\n\tSecondaryJavaManifestGroupIDFields = []string{\n\t\t\"Automatic-Module-Name\",\n\t\t\"Main-Class\",\n\t\t\"Package\",\n\t}\n\tjavaManifestNameFields = []string{\n\t\t\"Specification-Vendor\",\n\t\t\"Implementation-Vendor\",\n\t}\n)\n\nfunc candidateProductsForJava(p pkg.Package) []string {\n\treturn productsFromArtifactAndGroupIDs(artifactIDFromJavaPackage(p), GroupIDsFromJavaPackage(p))\n}\n\nfunc candidateVendorsForJava(p pkg.Package) fieldCandidateSet {\n\tgidVendors := vendorsFromGroupIDs(GroupIDsFromJavaPackage(p))\n\tnameVendors := vendorsFromJavaManifestNames(p)\n\treturn newFieldCandidateSetFromSets(gidVendors, nameVendors)\n}\n\nfunc vendorsFromJavaManifestNames(p pkg.Package) fieldCandidateSet {\n\tvendors := newFieldCandidateSet()\n\n\tmetadata, ok := p.Metadata.(pkg.JavaArchive)\n\tif !ok {\n\t\treturn vendors\n\t}\n\n\tif metadata.Manifest == nil {\n\t\treturn vendors\n\t}\n\n\tfor _, name := range javaManifestNameFields {\n\t\tif metadata.Manifest.Main != nil {\n\t\t\tif value, exists := metadata.Manifest.Main.Get(name); exists {\n\t\t\t\tif !startsWithTopLevelDomain(value) {\n\t\t\t\t\tvendors.add(fieldCandidate{\n\t\t\t\t\t\tvalue:                 normalizePersonName(value),\n\t\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif metadata.Manifest.Sections != nil {\n\t\t\tfor _, section := range metadata.Manifest.Sections {\n\t\t\t\tif section == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif value, exists := section.Get(name); exists {\n\t\t\t\t\tif !startsWithTopLevelDomain(value) {\n\t\t\t\t\t\tvendors.add(fieldCandidate{\n\t\t\t\t\t\t\tvalue:                 normalizePersonName(value),\n\t\t\t\t\t\t\tdisallowSubSelections: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vendors\n}\n\nfunc vendorsFromGroupIDs(groupIDs []string) fieldCandidateSet {\n\tvendors := newFieldCandidateSet()\n\tfor _, groupID := range groupIDs {\n\t\t// always include the groupId as a vendor -- the Grype database may include alternate matches with these\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                       groupID,\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t})\n\n\t\tfor i, field := range strings.Split(groupID, \".\") {\n\t\t\tfield = strings.TrimSpace(field)\n\n\t\t\tif len(field) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif forbiddenVendorGroupIDFields.Has(strings.ToLower(field)) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif i == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvendors.addValue(field)\n\t\t}\n\t}\n\n\treturn vendors\n}\n\nfunc productsFromArtifactAndGroupIDs(artifactID string, groupIDs []string) []string {\n\tproducts := strset.New()\n\tif artifactID != \"\" {\n\t\tproducts.Add(artifactID)\n\t}\n\n\tfor _, groupID := range groupIDs {\n\t\tisPlugin := strings.Contains(artifactID, \"plugin\") || strings.Contains(groupID, \"plugin\")\n\n\t\tfor i, field := range strings.Split(groupID, \".\") {\n\t\t\tfield = strings.TrimSpace(field)\n\n\t\t\tif len(field) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// don't add this field as a name if the name is implying the package is a plugin or client\n\t\t\tif forbiddenProductGroupIDFields.Has(strings.ToLower(field)) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif i <= 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// umbrella projects tend to have sub components that either start or end with the project name. We expect\n\t\t\t// to identify fields that may represent the umbrella project, and not fields that indicate auxiliary\n\t\t\t// information about the package.\n\t\t\tcouldBeProjectName := strings.HasPrefix(artifactID, field) || strings.HasSuffix(artifactID, field)\n\t\t\tif artifactID == \"\" || (couldBeProjectName && !isPlugin) {\n\t\t\t\tproducts.Add(field)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn products.List()\n}\n\nfunc artifactIDFromJavaPackage(p pkg.Package) string {\n\tmetadata, ok := p.Metadata.(pkg.JavaArchive)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\n\tif metadata.PomProperties == nil {\n\t\treturn \"\"\n\t}\n\n\tartifactID := strings.TrimSpace(metadata.PomProperties.ArtifactID)\n\tif looksLikeGroupID(artifactID) && len(strings.Split(artifactID, \".\")) > 1 {\n\t\t// there is a strong indication that the artifact ID is really a group ID, don't use it\n\t\treturn \"\"\n\t}\n\treturn artifactID\n}\n\nfunc GroupIDsFromJavaPackage(p pkg.Package) (groupIDs []string) {\n\tmetadata, ok := p.Metadata.(pkg.JavaArchive)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\treturn GroupIDsFromJavaMetadata(p.Name, metadata)\n}\n\n// GroupIDsFromJavaMetadata returns the possible group IDs for a Java package\n// This function is similar to GroupIDFromJavaPackage, but returns all possible group IDs and is less strict\n// It is used as a way to generate possible candidates for CPE matching.\nfunc GroupIDsFromJavaMetadata(pkgName string, metadata pkg.JavaArchive) (groupIDs []string) {\n\tgroupIDs = append(groupIDs, groupIDsFromPomProperties(metadata.PomProperties)...)\n\tgroupIDs = append(groupIDs, groupIDsFromPomProject(metadata.PomProject)...)\n\tgroupIDs = append(groupIDs, groupIDsFromJavaManifest(pkgName, metadata.Manifest)...)\n\n\treturn groupIDs\n}\n\nfunc groupIDsFromPomProperties(properties *pkg.JavaPomProperties) (groupIDs []string) {\n\tif properties == nil {\n\t\treturn nil\n\t}\n\n\tif startsWithTopLevelDomain(properties.GroupID) {\n\t\tgroupIDs = append(groupIDs, cleanGroupID(properties.GroupID))\n\t}\n\n\t// sometimes the publisher puts the group ID in the artifact ID field unintentionally\n\tif startsWithTopLevelDomain(properties.ArtifactID) && len(strings.Split(properties.ArtifactID, \".\")) > 1 {\n\t\t// there is a strong indication that the artifact ID is really a group ID\n\t\tgroupIDs = append(groupIDs, cleanGroupID(properties.ArtifactID))\n\t}\n\n\treturn groupIDs\n}\n\nfunc groupIDsFromPomProject(project *pkg.JavaPomProject) (groupIDs []string) {\n\tif project == nil {\n\t\treturn nil\n\t}\n\n\t// extract the project info...\n\tgroupIDs = addGroupIDsFromGroupIDsAndArtifactID(project.GroupID, project.ArtifactID)\n\n\tif project.Parent == nil {\n\t\treturn groupIDs\n\t}\n\n\t// extract the parent project info...\n\tgroupIDs = append(groupIDs, addGroupIDsFromGroupIDsAndArtifactID(project.Parent.GroupID, project.Parent.ArtifactID)...)\n\n\treturn groupIDs\n}\n\nfunc addGroupIDsFromGroupIDsAndArtifactID(groupID, artifactID string) (groupIDs []string) {\n\tif startsWithTopLevelDomain(groupID) {\n\t\tgroupIDs = append(groupIDs, cleanGroupID(groupID))\n\t}\n\n\t// sometimes the publisher puts the group ID in the artifact ID field unintentionally\n\tif startsWithTopLevelDomain(artifactID) && len(strings.Split(artifactID, \".\")) > 1 {\n\t\t// there is a strong indication that the artifact ID is really a group ID\n\t\tgroupIDs = append(groupIDs, cleanGroupID(artifactID))\n\t}\n\treturn groupIDs\n}\n\nfunc groupIDsFromJavaManifest(pkgName string, manifest *pkg.JavaManifest) []string {\n\tif groupID, ok := DefaultArtifactIDToGroupID[pkgName]; ok {\n\t\treturn []string{groupID}\n\t}\n\n\tif manifest == nil {\n\t\treturn nil\n\t}\n\n\t// try the common manifest fields first for a set of candidates\n\tgroupIDs := GetManifestFieldGroupIDs(manifest, PrimaryJavaManifestGroupIDFields)\n\n\tif len(groupIDs) != 0 {\n\t\treturn groupIDs\n\t}\n\n\t// if we haven't found anything yet, let's try a last ditch effort:\n\t// attempt to get group-id-like info from the MANIFEST.MF \"Automatic-Module-Name\" and \"Extension-Name\" field.\n\t// for more info see pkg:maven/commons-io/commons-io@2.8.0 within cloudbees/cloudbees-core-mm:2.263.4.2\n\t// at /usr/share/jenkins/jenkins.war:WEB-INF/plugins/analysis-model-api.hpi:WEB-INF/lib/commons-io-2.8.0.jar\n\t// as well as the ant package from cloudbees/cloudbees-core-mm:2.277.2.4-ra.\n\treturn GetManifestFieldGroupIDs(manifest, SecondaryJavaManifestGroupIDFields)\n}\n\nfunc GetManifestFieldGroupIDs(manifest *pkg.JavaManifest, fields []string) (groupIDs []string) {\n\tif manifest == nil {\n\t\treturn nil\n\t}\n\n\tfor _, name := range fields {\n\t\tif value, exists := manifest.Main.Get(name); exists {\n\t\t\tif startsWithTopLevelDomain(value) {\n\t\t\t\tgroupIDs = append(groupIDs, cleanGroupID(value))\n\t\t\t}\n\t\t}\n\t\tfor _, section := range manifest.Sections {\n\t\t\tif value, exists := section.Get(name); exists {\n\t\t\t\tif startsWithTopLevelDomain(value) {\n\t\t\t\t\tgroupIDs = append(groupIDs, cleanGroupID(value))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tsort.Strings(groupIDs)\n\n\treturn groupIDs\n}\n\nfunc cleanGroupID(groupID string) string {\n\tgroupID = strings.TrimSpace(strings.Split(removeOSCIDirectives(groupID), \"#\")[0])\n\tif replacement, ok := GroupIDCorrections[groupID]; ok {\n\t\treturn replacement\n\t}\n\treturn groupID\n}\n\nfunc removeOSCIDirectives(groupID string) string {\n\t// for example:\n\t// \t\torg.bar;uses:=“org.foo”\t\t-> \torg.bar\n\t// more about OSGI directives see https://spring.io/blog/2008/10/20/understanding-the-osgi-uses-directive/\n\treturn strings.Split(groupID, \";\")[0]\n}\n\nfunc startsWithTopLevelDomain(value string) bool {\n\treturn internal.HasAnyOfPrefixes(value, domains...)\n}\n\nfunc looksLikeGroupID(value string) bool {\n\treturn strings.Contains(value, \".\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/java_groupid_map.go",
    "content": "package cpegenerate\n\nvar GroupIDCorrections = map[string]string{\n\t\"org.lz4.java\": \"org.lz4\",\n}\n\nvar DefaultArtifactIDToGroupID = map[string]string{\n\t\"ant\":                                         \"org.apache.ant\",\n\t\"ant-antlr\":                                   \"org.apache.ant\",\n\t\"ant-antunit\":                                 \"org.apache.ant\",\n\t\"ant-apache-bcel\":                             \"org.apache.ant\",\n\t\"ant-apache-bsf\":                              \"org.apache.ant\",\n\t\"ant-apache-log4j\":                            \"org.apache.ant\",\n\t\"ant-apache-oro\":                              \"org.apache.ant\",\n\t\"ant-apache-regexp\":                           \"org.apache.ant\",\n\t\"ant-apache-resolver\":                         \"org.apache.ant\",\n\t\"ant-apache-xalan2\":                           \"org.apache.ant\",\n\t\"ant-commons-logging\":                         \"org.apache.ant\",\n\t\"ant-commons-net\":                             \"org.apache.ant\",\n\t\"ant-compress\":                                \"org.apache.ant\",\n\t\"ant-dotnet\":                                  \"org.apache.ant\",\n\t\"ant-imageio\":                                 \"org.apache.ant\",\n\t\"ant-jai\":                                     \"org.apache.ant\",\n\t\"ant-jakartamail\":                             \"org.apache.ant\",\n\t\"ant-javamail\":                                \"org.apache.ant\",\n\t\"ant-jdepend\":                                 \"org.apache.ant\",\n\t\"ant-jmf\":                                     \"org.apache.ant\",\n\t\"ant-jsch\":                                    \"org.apache.ant\",\n\t\"ant-junit\":                                   \"org.apache.ant\",\n\t\"ant-junit4\":                                  \"org.apache.ant\",\n\t\"ant-junitlauncher\":                           \"org.apache.ant\",\n\t\"ant-launcher\":                                \"org.apache.ant\",\n\t\"ant-netrexx\":                                 \"org.apache.ant\",\n\t\"ant-nodeps\":                                  \"org.apache.ant\",\n\t\"ant-parent\":                                  \"org.apache.ant\",\n\t\"ant-starteam\":                                \"org.apache.ant\",\n\t\"ant-stylebook\":                               \"org.apache.ant\",\n\t\"ant-swing\":                                   \"org.apache.ant\",\n\t\"ant-testutil\":                                \"org.apache.ant\",\n\t\"ant-trax\":                                    \"org.apache.ant\",\n\t\"ant-weblogic\":                                \"org.apache.ant\",\n\t\"ant-xz\":                                      \"org.apache.ant\",\n\t\"commons-codec\":                               \"commons-codec\",\n\t\"commons-logging\":                             \"commons-logging\", // see e.g. https://mvnrepository.com/artifact/commons-logging/commons-logging/1.1.1\n\t\"okhttp\":                                      \"com.squareup.okhttp3\",\n\t\"okio\":                                        \"com.squareup.okio\",\n\t\"cassandra-all\":                               \"org.apache.cassandra\",\n\t\"cassandra-clientutil\":                        \"org.apache.cassandra\",\n\t\"cassandra-javautils\":                         \"org.apache.cassandra\",\n\t\"cassandra-parent\":                            \"org.apache.cassandra\",\n\t\"cassandra-thrift\":                            \"org.apache.cassandra\",\n\t\"apache-geode\":                                \"org.apache.geode\",\n\t\"geode-all-bom\":                               \"org.apache.geode\",\n\t\"geode-apis-compatible-with-redis\":            \"org.apache.geode\",\n\t\"geode-client-bom\":                            \"org.apache.geode\",\n\t\"geode-client-protocol\":                       \"org.apache.geode\",\n\t\"geode-common\":                                \"org.apache.geode\",\n\t\"geode-concurrency-test\":                      \"org.apache.geode\",\n\t\"geode-connectors\":                            \"org.apache.geode\",\n\t\"geode-core\":                                  \"org.apache.geode\",\n\t\"geode-cq\":                                    \"org.apache.geode\",\n\t\"geode-deployment-legacy\":                     \"org.apache.geode\",\n\t\"geode-dunit\":                                 \"org.apache.geode\",\n\t\"geode-experimental-driver\":                   \"org.apache.geode\",\n\t\"geode-gfsh\":                                  \"org.apache.geode\",\n\t\"geode-http-service\":                          \"org.apache.geode\",\n\t\"geode-jmh\":                                   \"org.apache.geode\",\n\t\"geode-joptsimple\":                            \"org.apache.geode\",\n\t\"geode-json\":                                  \"org.apache.geode\",\n\t\"geode-junit\":                                 \"org.apache.geode\",\n\t\"geode-log4j\":                                 \"org.apache.geode\",\n\t\"geode-logging\":                               \"org.apache.geode\",\n\t\"geode-lucene\":                                \"org.apache.geode\",\n\t\"geode-management\":                            \"org.apache.geode\",\n\t\"geode-membership\":                            \"org.apache.geode\",\n\t\"geode-memcached\":                             \"org.apache.geode\",\n\t\"geode-modules\":                               \"org.apache.geode\",\n\t\"geode-modules-hibernate\":                     \"org.apache.geode\",\n\t\"geode-modules-session\":                       \"org.apache.geode\",\n\t\"geode-modules-session-internal\":              \"org.apache.geode\",\n\t\"geode-modules-tomcat7\":                       \"org.apache.geode\",\n\t\"geode-modules-tomcat8\":                       \"org.apache.geode\",\n\t\"geode-modules-tomcat9\":                       \"org.apache.geode\",\n\t\"geode-old-client-support\":                    \"org.apache.geode\",\n\t\"geode-protobuf\":                              \"org.apache.geode\",\n\t\"geode-protobuf-messages\":                     \"org.apache.geode\",\n\t\"geode-pulse\":                                 \"org.apache.geode\",\n\t\"geode-rebalancer\":                            \"org.apache.geode\",\n\t\"geode-redis\":                                 \"org.apache.geode\",\n\t\"geode-serialization\":                         \"org.apache.geode\",\n\t\"geode-server-all\":                            \"org.apache.geode\",\n\t\"geode-tcp-server\":                            \"org.apache.geode\",\n\t\"geode-unsafe\":                                \"org.apache.geode\",\n\t\"geode-wan\":                                   \"org.apache.geode\",\n\t\"geode-web\":                                   \"org.apache.geode\",\n\t\"geode-web-api\":                               \"org.apache.geode\",\n\t\"geode-web-management\":                        \"org.apache.geode\",\n\t\"spring-velocity-support\":                     \"org.apache.velocity\",\n\t\"velocity\":                                    \"org.apache.velocity\",\n\t\"velocity-engine-core\":                        \"org.apache.velocity\",\n\t\"velocity-engine-parent\":                      \"org.apache.velocity\",\n\t\"velocity-engine-scripting\":                   \"org.apache.velocity\",\n\t\"velocity-tools\":                              \"org.apache.velocity\",\n\t\"tapestry-TimeTracker\":                        \"org.apache.tapestry\",\n\t\"tapestry-Vlib\":                               \"org.apache.tapestry\",\n\t\"tapestry-VlibBeans\":                          \"org.apache.tapestry\",\n\t\"tapestry-Workbench\":                          \"org.apache.tapestry\",\n\t\"tapestry-annotations\":                        \"org.apache.tapestry\",\n\t\"tapestry-archetype\":                          \"org.apache.tapestry\",\n\t\"tapestry-beanvalidator\":                      \"org.apache.tapestry\",\n\t\"tapestry-clojure\":                            \"org.apache.tapestry\",\n\t\"tapestry-component-report\":                   \"org.apache.tapestry\",\n\t\"tapestry-contrib\":                            \"org.apache.tapestry\",\n\t\"tapestry-core\":                               \"org.apache.tapestry\",\n\t\"tapestry-examples\":                           \"org.apache.tapestry\",\n\t\"tapestry-framework\":                          \"org.apache.tapestry\",\n\t\"tapestry-func\":                               \"org.apache.tapestry\",\n\t\"tapestry-hibernate\":                          \"org.apache.tapestry\",\n\t\"tapestry-hibernate-core\":                     \"org.apache.tapestry\",\n\t\"tapestry-http\":                               \"org.apache.tapestry\",\n\t\"tapestry-internal-test\":                      \"org.apache.tapestry\",\n\t\"tapestry-ioc\":                                \"org.apache.tapestry\",\n\t\"tapestry-ioc-jcache\":                         \"org.apache.tapestry\",\n\t\"tapestry-ioc-junit\":                          \"org.apache.tapestry\",\n\t\"tapestry-ioc-test\":                           \"org.apache.tapestry\",\n\t\"tapestry-javadoc\":                            \"org.apache.tapestry\",\n\t\"tapestry-jmx\":                                \"org.apache.tapestry\",\n\t\"tapestry-jpa\":                                \"org.apache.tapestry\",\n\t\"tapestry-json\":                               \"org.apache.tapestry\",\n\t\"tapestry-kaptcha\":                            \"org.apache.tapestry\",\n\t\"tapestry-mongodb\":                            \"org.apache.tapestry\",\n\t\"tapestry-openapi-viewer\":                     \"org.apache.tapestry\",\n\t\"tapestry-portlet\":                            \"org.apache.tapestry\",\n\t\"tapestry-project\":                            \"org.apache.tapestry\",\n\t\"tapestry-rest-jackson\":                       \"org.apache.tapestry\",\n\t\"tapestry-runner\":                             \"org.apache.tapestry\",\n\t\"tapestry-simple\":                             \"org.apache.tapestry\",\n\t\"tapestry-site\":                               \"org.apache.tapestry\",\n\t\"tapestry-spock\":                              \"org.apache.tapestry\",\n\t\"tapestry-spring\":                             \"org.apache.tapestry\",\n\t\"tapestry-test\":                               \"org.apache.tapestry\",\n\t\"tapestry-test-constants\":                     \"org.apache.tapestry\",\n\t\"tapestry-test-data\":                          \"org.apache.tapestry\",\n\t\"tapestry-upload\":                             \"org.apache.tapestry\",\n\t\"tapestry-version-migrator\":                   \"org.apache.tapestry\",\n\t\"tapestry-webflow\":                            \"org.apache.tapestry\",\n\t\"tapestry-webresources\":                       \"org.apache.tapestry\",\n\t\"tapestry-yuicompressor\":                      \"org.apache.tapestry\",\n\t\"tapestry5-annotations\":                       \"org.apache.tapestry\",\n\t\"tomcat\":                                      \"org.apache.tomcat\",\n\t\"tomcat-annotations-api\":                      \"org.apache.tomcat\",\n\t\"tomcat-api\":                                  \"org.apache.tomcat\",\n\t\"tomcat-catalina\":                             \"org.apache.tomcat\",\n\t\"tomcat-catalina-ant\":                         \"org.apache.tomcat\",\n\t\"tomcat-catalina-ha\":                          \"org.apache.tomcat\",\n\t\"tomcat-catalina-jmx-remote\":                  \"org.apache.tomcat\",\n\t\"tomcat-catalina-ws\":                          \"org.apache.tomcat\",\n\t\"tomcat-coyote\":                               \"org.apache.tomcat\",\n\t\"tomcat-dbcp\":                                 \"org.apache.tomcat\",\n\t\"tomcat-el-api\":                               \"org.apache.tomcat\",\n\t\"tomcat-i18n-cs\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-de\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-es\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-fr\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-ja\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-ko\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-pt-BR\":                           \"org.apache.tomcat\",\n\t\"tomcat-i18n-ru\":                              \"org.apache.tomcat\",\n\t\"tomcat-i18n-zh-CN\":                           \"org.apache.tomcat\",\n\t\"tomcat-jasper\":                               \"org.apache.tomcat\",\n\t\"tomcat-jasper-el\":                            \"org.apache.tomcat\",\n\t\"tomcat-jaspic-api\":                           \"org.apache.tomcat\",\n\t\"tomcat-jdbc\":                                 \"org.apache.tomcat\",\n\t\"tomcat-jni\":                                  \"org.apache.tomcat\",\n\t\"tomcat-jsp-api\":                              \"org.apache.tomcat\",\n\t\"tomcat-juli\":                                 \"org.apache.tomcat\",\n\t\"tomcat-servlet-api\":                          \"org.apache.tomcat\",\n\t\"tomcat-spdy\":                                 \"org.apache.tomcat\",\n\t\"tomcat-ssi\":                                  \"org.apache.tomcat\",\n\t\"tomcat-storeconfig\":                          \"org.apache.tomcat\",\n\t\"tomcat-tribes\":                               \"org.apache.tomcat\",\n\t\"tomcat-util\":                                 \"org.apache.tomcat\",\n\t\"tomcat-util-scan\":                            \"org.apache.tomcat\",\n\t\"tomcat-websocket\":                            \"org.apache.tomcat\",\n\t\"tomcat-websocket-api\":                        \"org.apache.tomcat\",\n\t\"tomcat-websocket-client-api\":                 \"org.apache.tomcat\",\n\t\"tomcat7-websocket\":                           \"org.apache.tomcat\",\n\t\"tomcat-embed-core\":                           \"org.apache.tomcat.embed\",\n\t\"tomcat-embed-el\":                             \"org.apache.tomcat.embed\",\n\t\"tomcat-embed-jasper\":                         \"org.apache.tomcat.embed\",\n\t\"tomcat-embed-logging-juli\":                   \"org.apache.tomcat.embed\",\n\t\"tomcat-embed-logging-log4j\":                  \"org.apache.tomcat.embed\",\n\t\"tomcat-embed-websocket\":                      \"org.apache.tomcat.embed\",\n\t\"bc-fips\":                                     \"org.bouncycastle\",\n\t\"bc-fips-debug\":                               \"org.bouncycastle\",\n\t\"bcjmail-debug-jdk15to18\":                     \"org.bouncycastle\",\n\t\"bcjmail-debug-jdk18on\":                       \"org.bouncycastle\",\n\t\"bcjmail-jdk15on\":                             \"org.bouncycastle\",\n\t\"bcjmail-jdk15to18\":                           \"org.bouncycastle\",\n\t\"bcjmail-jdk18on\":                             \"org.bouncycastle\",\n\t\"bcjmail-lts8on\":                              \"org.bouncycastle\",\n\t\"bcmail-debug-jdk15to18\":                      \"org.bouncycastle\",\n\t\"bcmail-debug-jdk18on\":                        \"org.bouncycastle\",\n\t\"bcmail-fips\":                                 \"org.bouncycastle\",\n\t\"bcmail-jdk14\":                                \"org.bouncycastle\",\n\t\"bcmail-jdk15\":                                \"org.bouncycastle\",\n\t\"bcmail-jdk15+\":                               \"org.bouncycastle\",\n\t\"bcmail-jdk15on\":                              \"org.bouncycastle\",\n\t\"bcmail-jdk15to18\":                            \"org.bouncycastle\",\n\t\"bcmail-jdk16\":                                \"org.bouncycastle\",\n\t\"bcmail-jdk18on\":                              \"org.bouncycastle\",\n\t\"bcmail-lts8on\":                               \"org.bouncycastle\",\n\t\"bcpg-debug-jdk15to18\":                        \"org.bouncycastle\",\n\t\"bcpg-debug-jdk18on\":                          \"org.bouncycastle\",\n\t\"bcpg-fips\":                                   \"org.bouncycastle\",\n\t\"bcpg-jdk12\":                                  \"org.bouncycastle\",\n\t\"bcpg-jdk14\":                                  \"org.bouncycastle\",\n\t\"bcpg-jdk15\":                                  \"org.bouncycastle\",\n\t\"bcpg-jdk15+\":                                 \"org.bouncycastle\",\n\t\"bcpg-jdk15on\":                                \"org.bouncycastle\",\n\t\"bcpg-jdk15to18\":                              \"org.bouncycastle\",\n\t\"bcpg-jdk16\":                                  \"org.bouncycastle\",\n\t\"bcpg-jdk18on\":                                \"org.bouncycastle\",\n\t\"bcpg-lts8on\":                                 \"org.bouncycastle\",\n\t\"bcpkix-debug-jdk15to18\":                      \"org.bouncycastle\",\n\t\"bcpkix-debug-jdk18on\":                        \"org.bouncycastle\",\n\t\"bcpkix-fips\":                                 \"org.bouncycastle\",\n\t\"bcpkix-jdk14\":                                \"org.bouncycastle\",\n\t\"bcpkix-jdk15on\":                              \"org.bouncycastle\",\n\t\"bcpkix-jdk15to18\":                            \"org.bouncycastle\",\n\t\"bcpkix-jdk18on\":                              \"org.bouncycastle\",\n\t\"bcpkix-lts8on\":                               \"org.bouncycastle\",\n\t\"bcpqc-addon-fips\":                            \"org.bouncycastle\",\n\t\"bcprov-debug-jdk14\":                          \"org.bouncycastle\",\n\t\"bcprov-debug-jdk15on\":                        \"org.bouncycastle\",\n\t\"bcprov-debug-jdk15to18\":                      \"org.bouncycastle\",\n\t\"bcprov-debug-jdk18on\":                        \"org.bouncycastle\",\n\t\"bcprov-ext-debug-jdk14\":                      \"org.bouncycastle\",\n\t\"bcprov-ext-debug-jdk15on\":                    \"org.bouncycastle\",\n\t\"bcprov-ext-debug-jdk15to18\":                  \"org.bouncycastle\",\n\t\"bcprov-ext-debug-jdk18on\":                    \"org.bouncycastle\",\n\t\"bcprov-ext-jdk14\":                            \"org.bouncycastle\",\n\t\"bcprov-ext-jdk15\":                            \"org.bouncycastle\",\n\t\"bcprov-ext-jdk15on\":                          \"org.bouncycastle\",\n\t\"bcprov-ext-jdk15to18\":                        \"org.bouncycastle\",\n\t\"bcprov-ext-jdk16\":                            \"org.bouncycastle\",\n\t\"bcprov-ext-jdk18on\":                          \"org.bouncycastle\",\n\t\"bcprov-jdk12\":                                \"org.bouncycastle\",\n\t\"bcprov-jdk14\":                                \"org.bouncycastle\",\n\t\"bcprov-jdk15\":                                \"org.bouncycastle\",\n\t\"bcprov-jdk15+\":                               \"org.bouncycastle\",\n\t\"bcprov-jdk15on\":                              \"org.bouncycastle\",\n\t\"bcprov-jdk15to18\":                            \"org.bouncycastle\",\n\t\"bcprov-jdk16\":                                \"org.bouncycastle\",\n\t\"bcprov-jdk18on\":                              \"org.bouncycastle\",\n\t\"bcprov-lts8on\":                               \"org.bouncycastle\",\n\t\"bctls-debug-jdk15to18\":                       \"org.bouncycastle\",\n\t\"bctls-debug-jdk18on\":                         \"org.bouncycastle\",\n\t\"bctls-fips\":                                  \"org.bouncycastle\",\n\t\"bctls-jdk14\":                                 \"org.bouncycastle\",\n\t\"bctls-jdk15on\":                               \"org.bouncycastle\",\n\t\"bctls-jdk15to18\":                             \"org.bouncycastle\",\n\t\"bctls-jdk18on\":                               \"org.bouncycastle\",\n\t\"bctls-lts8on\":                                \"org.bouncycastle\",\n\t\"bctsp-jdk14\":                                 \"org.bouncycastle\",\n\t\"bctsp-jdk15\":                                 \"org.bouncycastle\",\n\t\"bctsp-jdk15+\":                                \"org.bouncycastle\",\n\t\"bctsp-jdk15on\":                               \"org.bouncycastle\",\n\t\"bctsp-jdk16\":                                 \"org.bouncycastle\",\n\t\"bcutil-debug-jdk15to18\":                      \"org.bouncycastle\",\n\t\"bcutil-debug-jdk18on\":                        \"org.bouncycastle\",\n\t\"bcutil-jdk14\":                                \"org.bouncycastle\",\n\t\"bcutil-jdk15on\":                              \"org.bouncycastle\",\n\t\"bcutil-jdk15to18\":                            \"org.bouncycastle\",\n\t\"bcutil-jdk18on\":                              \"org.bouncycastle\",\n\t\"bcutil-lts8on\":                               \"org.bouncycastle\",\n\t\"elasticsearch\":                               \"org.elasticsearch\",\n\t\"elasticsearch-analysis-icu\":                  \"org.elasticsearch\",\n\t\"elasticsearch-analysis-ik\":                   \"org.elasticsearch\",\n\t\"elasticsearch-analysis-kuromoji\":             \"org.elasticsearch\",\n\t\"elasticsearch-analysis-mmseg\":                \"org.elasticsearch\",\n\t\"elasticsearch-analysis-phonetic\":             \"org.elasticsearch\",\n\t\"elasticsearch-analysis-pinyin\":               \"org.elasticsearch\",\n\t\"elasticsearch-analysis-smartcn\":              \"org.elasticsearch\",\n\t\"elasticsearch-analysis-stconvert\":            \"org.elasticsearch\",\n\t\"elasticsearch-analysis-stempel\":              \"org.elasticsearch\",\n\t\"elasticsearch-attachments\":                   \"org.elasticsearch\",\n\t\"elasticsearch-benchmarks\":                    \"org.elasticsearch\",\n\t\"elasticsearch-cli\":                           \"org.elasticsearch\",\n\t\"elasticsearch-client-groovy\":                 \"org.elasticsearch\",\n\t\"elasticsearch-cloud\":                         \"org.elasticsearch\",\n\t\"elasticsearch-cloud-aws\":                     \"org.elasticsearch\",\n\t\"elasticsearch-cloud-azure\":                   \"org.elasticsearch\",\n\t\"elasticsearch-cloud-gce\":                     \"org.elasticsearch\",\n\t\"elasticsearch-core\":                          \"org.elasticsearch\",\n\t\"elasticsearch-discovery-jgroups\":             \"org.elasticsearch\",\n\t\"elasticsearch-geo\":                           \"org.elasticsearch\",\n\t\"elasticsearch-grok\":                          \"org.elasticsearch\",\n\t\"elasticsearch-groovy\":                        \"org.elasticsearch\",\n\t\"elasticsearch-h3\":                            \"org.elasticsearch\",\n\t\"elasticsearch-hadoop\":                        \"org.elasticsearch\",\n\t\"elasticsearch-hadoop-cascading\":              \"org.elasticsearch\",\n\t\"elasticsearch-hadoop-hive\":                   \"org.elasticsearch\",\n\t\"elasticsearch-hadoop-mr\":                     \"org.elasticsearch\",\n\t\"elasticsearch-hadoop-pig\":                    \"org.elasticsearch\",\n\t\"elasticsearch-lang-groovy\":                   \"org.elasticsearch\",\n\t\"elasticsearch-lang-javascript\":               \"org.elasticsearch\",\n\t\"elasticsearch-lang-mvel\":                     \"org.elasticsearch\",\n\t\"elasticsearch-lang-python\":                   \"org.elasticsearch\",\n\t\"elasticsearch-logging\":                       \"org.elasticsearch\",\n\t\"elasticsearch-lz4\":                           \"org.elasticsearch\",\n\t\"elasticsearch-mapper-attachments\":            \"org.elasticsearch\",\n\t\"elasticsearch-nio\":                           \"org.elasticsearch\",\n\t\"elasticsearch-parent\":                        \"org.elasticsearch\",\n\t\"elasticsearch-plugin-analysis-api\":           \"org.elasticsearch\",\n\t\"elasticsearch-plugin-api\":                    \"org.elasticsearch\",\n\t\"elasticsearch-plugin-classloader\":            \"org.elasticsearch\",\n\t\"elasticsearch-plugin-scanner\":                \"org.elasticsearch\",\n\t\"elasticsearch-preallocate\":                   \"org.elasticsearch\",\n\t\"elasticsearch-repository-hdfs\":               \"org.elasticsearch\",\n\t\"elasticsearch-river-couchdb\":                 \"org.elasticsearch\",\n\t\"elasticsearch-river-rabbitmq\":                \"org.elasticsearch\",\n\t\"elasticsearch-river-twitter\":                 \"org.elasticsearch\",\n\t\"elasticsearch-river-wikipedia\":               \"org.elasticsearch\",\n\t\"elasticsearch-secure-sm\":                     \"org.elasticsearch\",\n\t\"elasticsearch-spark-1.2\":                     \"org.elasticsearch\",\n\t\"elasticsearch-spark-1.2_2.10\":                \"org.elasticsearch\",\n\t\"elasticsearch-spark-1.2_2.11\":                \"org.elasticsearch\",\n\t\"elasticsearch-spark-13_2.10\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-13_2.11\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-20_2.10\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-20_2.11\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-20_2.12\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-30_2.12\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark-30_2.13\":                 \"org.elasticsearch\",\n\t\"elasticsearch-spark_2.10\":                    \"org.elasticsearch\",\n\t\"elasticsearch-spark_2.11\":                    \"org.elasticsearch\",\n\t\"elasticsearch-ssl-config\":                    \"org.elasticsearch\",\n\t\"elasticsearch-storm\":                         \"org.elasticsearch\",\n\t\"elasticsearch-tdigest\":                       \"org.elasticsearch\",\n\t\"elasticsearch-transport-memcached\":           \"org.elasticsearch\",\n\t\"elasticsearch-transport-thrift\":              \"org.elasticsearch\",\n\t\"elasticsearch-transport-wares\":               \"org.elasticsearch\",\n\t\"elasticsearch-x-content\":                     \"org.elasticsearch\",\n\t\"elasticsearch-yarn\":                          \"org.elasticsearch\",\n\t\"elasticsearch-rest-client\":                   \"org.elasticsearch.client\",\n\t\"elasticsearch-rest-client-sniffer\":           \"org.elasticsearch.client\",\n\t\"elasticsearch-rest-high-level-client\":        \"org.elasticsearch.client\",\n\t\"apoc\":                                        \"org.neo4j.procedure\",\n\t\"apoc-common\":                                 \"org.neo4j.procedure\",\n\t\"apoc-core\":                                   \"org.neo4j.procedure\",\n\t\"apoc-extended\":                               \"org.neo4j.procedure\",\n\t\"apoc-processor\":                              \"org.neo4j.procedure\",\n\t\"apoc-test-utils\":                             \"org.neo4j.procedure\",\n\t\"spring\":                                      \"org.springframework\",\n\t\"spring-agent\":                                \"org.springframework\",\n\t\"spring-aop\":                                  \"org.springframework\",\n\t\"spring-asm\":                                  \"org.springframework\",\n\t\"spring-aspects\":                              \"org.springframework\",\n\t\"spring-beandoc\":                              \"org.springframework\",\n\t\"spring-beans\":                                \"org.springframework\",\n\t\"spring-context\":                              \"org.springframework\",\n\t\"spring-context-indexer\":                      \"org.springframework\",\n\t\"spring-context-support\":                      \"org.springframework\",\n\t\"spring-core\":                                 \"org.springframework\",\n\t\"spring-core-test\":                            \"org.springframework\",\n\t\"spring-dao\":                                  \"org.springframework\",\n\t\"spring-expression\":                           \"org.springframework\",\n\t\"spring-framework-bom\":                        \"org.springframework\",\n\t\"spring-full\":                                 \"org.springframework\",\n\t\"spring-hibernate\":                            \"org.springframework\",\n\t\"spring-hibernate2\":                           \"org.springframework\",\n\t\"spring-hibernate3\":                           \"org.springframework\",\n\t\"spring-ibatis\":                               \"org.springframework\",\n\t\"spring-instrument\":                           \"org.springframework\",\n\t\"spring-instrument-tomcat\":                    \"org.springframework\",\n\t\"spring-jca\":                                  \"org.springframework\",\n\t\"spring-jcl\":                                  \"org.springframework\",\n\t\"spring-jdbc\":                                 \"org.springframework\",\n\t\"spring-jdo\":                                  \"org.springframework\",\n\t\"spring-jms\":                                  \"org.springframework\",\n\t\"spring-jmx\":                                  \"org.springframework\",\n\t\"spring-jpa\":                                  \"org.springframework\",\n\t\"spring-ldap\":                                 \"org.springframework\",\n\t\"spring-messaging\":                            \"org.springframework\",\n\t\"spring-mock\":                                 \"org.springframework\",\n\t\"spring-ojb\":                                  \"org.springframework\",\n\t\"spring-orm\":                                  \"org.springframework\",\n\t\"spring-oxm\":                                  \"org.springframework\",\n\t\"spring-parent\":                               \"org.springframework\",\n\t\"spring-portlet\":                              \"org.springframework\",\n\t\"spring-r2dbc\":                                \"org.springframework\",\n\t\"spring-remoting\":                             \"org.springframework\",\n\t\"spring-struts\":                               \"org.springframework\",\n\t\"spring-support\":                              \"org.springframework\",\n\t\"spring-test\":                                 \"org.springframework\",\n\t\"spring-tomcat-weaver\":                        \"org.springframework\",\n\t\"spring-toplink\":                              \"org.springframework\",\n\t\"spring-tuple\":                                \"org.springframework\",\n\t\"spring-tuple-parent\":                         \"org.springframework\",\n\t\"spring-tx\":                                   \"org.springframework\",\n\t\"spring-web\":                                  \"org.springframework\",\n\t\"spring-webflux\":                              \"org.springframework\",\n\t\"spring-webmvc\":                               \"org.springframework\",\n\t\"spring-webmvc-portlet\":                       \"org.springframework\",\n\t\"spring-webmvc-struts\":                        \"org.springframework\",\n\t\"spring-websocket\":                            \"org.springframework\",\n\t\"spring-amqp\":                                 \"org.springframework.amqp\",\n\t\"spring-amqp-bom\":                             \"org.springframework.amqp\",\n\t\"spring-amqp-dist\":                            \"org.springframework.amqp\",\n\t\"spring-amqp-parent\":                          \"org.springframework.amqp\",\n\t\"spring-erlang\":                               \"org.springframework.amqp\",\n\t\"spring-rabbit\":                               \"org.springframework.amqp\",\n\t\"spring-rabbit-junit\":                         \"org.springframework.amqp\",\n\t\"spring-rabbit-stream\":                        \"org.springframework.amqp\",\n\t\"spring-rabbit-test\":                          \"org.springframework.amqp\",\n\t\"spring-analytics\":                            \"org.springframework.analytics\",\n\t\"spring-batch\":                                \"org.springframework.batch\",\n\t\"spring-batch-admin-manager\":                  \"org.springframework.batch\",\n\t\"spring-batch-admin-parent\":                   \"org.springframework.batch\",\n\t\"spring-batch-admin-resources\":                \"org.springframework.batch\",\n\t\"spring-batch-archetypes\":                     \"org.springframework.batch\",\n\t\"spring-batch-bom\":                            \"org.springframework.batch\",\n\t\"spring-batch-core\":                           \"org.springframework.batch\",\n\t\"spring-batch-docs\":                           \"org.springframework.batch\",\n\t\"spring-batch-infrastructure\":                 \"org.springframework.batch\",\n\t\"spring-batch-infrastructure-tests\":           \"org.springframework.batch\",\n\t\"spring-batch-integration\":                    \"org.springframework.batch\",\n\t\"spring-batch-parent\":                         \"org.springframework.batch\",\n\t\"spring-batch-samples\":                        \"org.springframework.batch\",\n\t\"spring-batch-test\":                           \"org.springframework.batch\",\n\t\"spring-batch-tuple\":                          \"org.springframework.batch\",\n\t\"spring-boot\":                                 \"org.springframework.boot\",\n\t\"spring-boot-actuator\":                        \"org.springframework.boot\",\n\t\"spring-boot-actuator-autoconfigure\":          \"org.springframework.boot\",\n\t\"spring-boot-actuator-docs\":                   \"org.springframework.boot\",\n\t\"spring-boot-antlib\":                          \"org.springframework.boot\",\n\t\"spring-boot-archetypes\":                      \"org.springframework.boot\",\n\t\"spring-boot-autoconfigure\":                   \"org.springframework.boot\",\n\t\"spring-boot-autoconfigure-processor\":         \"org.springframework.boot\",\n\t\"spring-boot-build\":                           \"org.springframework.boot\",\n\t\"spring-boot-buildpack-platform\":              \"org.springframework.boot\",\n\t\"spring-boot-cli\":                             \"org.springframework.boot\",\n\t\"spring-boot-configuration-metadata\":          \"org.springframework.boot\",\n\t\"spring-boot-configuration-processor\":         \"org.springframework.boot\",\n\t\"spring-boot-dependencies\":                    \"org.springframework.boot\",\n\t\"spring-boot-dependency-tools\":                \"org.springframework.boot\",\n\t\"spring-boot-deployment-test-glassfish\":       \"org.springframework.boot\",\n\t\"spring-boot-deployment-test-tomcat\":          \"org.springframework.boot\",\n\t\"spring-boot-deployment-test-tomee\":           \"org.springframework.boot\",\n\t\"spring-boot-deployment-test-wildfly\":         \"org.springframework.boot\",\n\t\"spring-boot-deployment-test-wlp\":             \"org.springframework.boot\",\n\t\"spring-boot-deployment-tests\":                \"org.springframework.boot\",\n\t\"spring-boot-devtools\":                        \"org.springframework.boot\",\n\t\"spring-boot-devtools-tests\":                  \"org.springframework.boot\",\n\t\"spring-boot-docker-compose\":                  \"org.springframework.boot\",\n\t\"spring-boot-docs\":                            \"org.springframework.boot\",\n\t\"spring-boot-full-build\":                      \"org.springframework.boot\",\n\t\"spring-boot-gradle-plugin\":                   \"org.springframework.boot\",\n\t\"spring-boot-gradle-tests\":                    \"org.springframework.boot\",\n\t\"spring-boot-jarmode-layertools\":              \"org.springframework.boot\",\n\t\"spring-boot-launch-script-tests\":             \"org.springframework.boot\",\n\t\"spring-boot-legacy\":                          \"org.springframework.boot\",\n\t\"spring-boot-loader\":                          \"org.springframework.boot\",\n\t\"spring-boot-loader-tools\":                    \"org.springframework.boot\",\n\t\"spring-boot-maven-plugin\":                    \"org.springframework.boot\",\n\t\"spring-boot-parent\":                          \"org.springframework.boot\",\n\t\"spring-boot-project\":                         \"org.springframework.boot\",\n\t\"spring-boot-properties-migrator\":             \"org.springframework.boot\",\n\t\"spring-boot-sample-actuator-archetype\":       \"org.springframework.boot\",\n\t\"spring-boot-sample-actuator-log4j-archetype\": \"org.springframework.boot\",\n\t\"spring-boot-sample-actuator-noweb-archetype\": \"org.springframework.boot\",\n\t\"spring-boot-sample-actuator-ui-archetype\":    \"org.springframework.boot\",\n\t\"spring-boot-sample-amqp-archetype\":           \"org.springframework.boot\",\n\t\"spring-boot-sample-aop-archetype\":            \"org.springframework.boot\",\n\t\"spring-boot-sample-batch-archetype\":          \"org.springframework.boot\",\n\t\"spring-boot-sample-data-jpa-archetype\":       \"org.springframework.boot\",\n\t\"spring-boot-sample-data-mongodb-archetype\":   \"org.springframework.boot\",\n\t\"spring-boot-sample-data-redis-archetype\":     \"org.springframework.boot\",\n\t\"spring-boot-sample-data-rest-archetype\":      \"org.springframework.boot\",\n\t\"spring-boot-sample-integration-archetype\":    \"org.springframework.boot\",\n\t\"spring-boot-sample-jetty-archetype\":          \"org.springframework.boot\",\n\t\"spring-boot-sample-profile-archetype\":        \"org.springframework.boot\",\n\t\"spring-boot-sample-secure-archetype\":         \"org.springframework.boot\",\n\t\"spring-boot-sample-servlet-archetype\":        \"org.springframework.boot\",\n\t\"spring-boot-sample-simple-archetype\":         \"org.springframework.boot\",\n\t\"spring-boot-sample-tomcat-archetype\":         \"org.springframework.boot\",\n\t\"spring-boot-sample-traditional-archetype\":    \"org.springframework.boot\",\n\t\"spring-boot-sample-web-jsp-archetype\":        \"org.springframework.boot\",\n\t\"spring-boot-sample-web-method-security-archetype\":         \"org.springframework.boot\",\n\t\"spring-boot-sample-web-secure-archetype\":                  \"org.springframework.boot\",\n\t\"spring-boot-sample-web-static-archetype\":                  \"org.springframework.boot\",\n\t\"spring-boot-sample-web-ui-archetype\":                      \"org.springframework.boot\",\n\t\"spring-boot-sample-websocket-archetype\":                   \"org.springframework.boot\",\n\t\"spring-boot-sample-xml-archetype\":                         \"org.springframework.boot\",\n\t\"spring-boot-security-test-web-helloworld\":                 \"org.springframework.boot\",\n\t\"spring-boot-security-tests\":                               \"org.springframework.boot\",\n\t\"spring-boot-security-tests-web-helloworld\":                \"org.springframework.boot\",\n\t\"spring-boot-starter\":                                      \"org.springframework.boot\",\n\t\"spring-boot-starter-activemq\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-actuator\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-amqp\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-aop\":                                  \"org.springframework.boot\",\n\t\"spring-boot-starter-artemis\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-batch\":                                \"org.springframework.boot\",\n\t\"spring-boot-starter-cache\":                                \"org.springframework.boot\",\n\t\"spring-boot-starter-cloud-connectors\":                     \"org.springframework.boot\",\n\t\"spring-boot-starter-data-cassandra\":                       \"org.springframework.boot\",\n\t\"spring-boot-starter-data-cassandra-reactive\":              \"org.springframework.boot\",\n\t\"spring-boot-starter-data-couchbase\":                       \"org.springframework.boot\",\n\t\"spring-boot-starter-data-couchbase-reactive\":              \"org.springframework.boot\",\n\t\"spring-boot-starter-data-elasticsearch\":                   \"org.springframework.boot\",\n\t\"spring-boot-starter-data-gemfire\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-data-jdbc\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-data-jpa\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-data-ldap\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-data-mongodb\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-data-mongodb-reactive\":                \"org.springframework.boot\",\n\t\"spring-boot-starter-data-neo4j\":                           \"org.springframework.boot\",\n\t\"spring-boot-starter-data-r2dbc\":                           \"org.springframework.boot\",\n\t\"spring-boot-starter-data-redis\":                           \"org.springframework.boot\",\n\t\"spring-boot-starter-data-redis-reactive\":                  \"org.springframework.boot\",\n\t\"spring-boot-starter-data-rest\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-data-solr\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-freemarker\":                           \"org.springframework.boot\",\n\t\"spring-boot-starter-graphql\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-groovy-templates\":                     \"org.springframework.boot\",\n\t\"spring-boot-starter-hateoas\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-hornetq\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-integration\":                          \"org.springframework.boot\",\n\t\"spring-boot-starter-jdbc\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-jersey\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-jetty\":                                \"org.springframework.boot\",\n\t\"spring-boot-starter-jooq\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-json\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-jta-atomikos\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-jta-bitronix\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-jta-narayana\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-log4j\":                                \"org.springframework.boot\",\n\t\"spring-boot-starter-log4j2\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-logging\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-mail\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-mobile\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-mustache\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-oauth2-authorization-server\":          \"org.springframework.boot\",\n\t\"spring-boot-starter-oauth2-client\":                        \"org.springframework.boot\",\n\t\"spring-boot-starter-oauth2-resource-server\":               \"org.springframework.boot\",\n\t\"spring-boot-starter-parent\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-quartz\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-reactor-netty\":                        \"org.springframework.boot\",\n\t\"spring-boot-starter-redis\":                                \"org.springframework.boot\",\n\t\"spring-boot-starter-remote-shell\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-rsocket\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-security\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-social-facebook\":                      \"org.springframework.boot\",\n\t\"spring-boot-starter-social-linkedin\":                      \"org.springframework.boot\",\n\t\"spring-boot-starter-social-twitter\":                       \"org.springframework.boot\",\n\t\"spring-boot-starter-test\":                                 \"org.springframework.boot\",\n\t\"spring-boot-starter-thymeleaf\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-tomcat\":                               \"org.springframework.boot\",\n\t\"spring-boot-starter-undertow\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-validation\":                           \"org.springframework.boot\",\n\t\"spring-boot-starter-velocity\":                             \"org.springframework.boot\",\n\t\"spring-boot-starter-web\":                                  \"org.springframework.boot\",\n\t\"spring-boot-starter-web-services\":                         \"org.springframework.boot\",\n\t\"spring-boot-starter-webflux\":                              \"org.springframework.boot\",\n\t\"spring-boot-starter-websocket\":                            \"org.springframework.boot\",\n\t\"spring-boot-starter-ws\":                                   \"org.springframework.boot\",\n\t\"spring-boot-starters\":                                     \"org.springframework.boot\",\n\t\"spring-boot-test\":                                         \"org.springframework.boot\",\n\t\"spring-boot-test-autoconfigure\":                           \"org.springframework.boot\",\n\t\"spring-boot-testcontainers\":                               \"org.springframework.boot\",\n\t\"spring-boot-tools\":                                        \"org.springframework.boot\",\n\t\"spring-boot-versions\":                                     \"org.springframework.boot\",\n\t\"spring-cloud-alibaba\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-dubbo\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-nacos-config\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-nacos-config-server\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-nacos-discovery\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-seata\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-sentinel\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-sentinel-datasource\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-alibaba-sentinel-zuul\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-acm\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-ans\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-context\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-oss\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-schedulerx\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-alicloud-sms\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-autoconfigure\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-core\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-deployer\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-deployer-cloudfoundry\":            \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-docs\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-logging\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-app-broker-security-credhub\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-app-starter-doc-maven-plugin\":                \"org.springframework.cloud\",\n\t\"spring-cloud-app-starter-metadata-maven-plugin\":           \"org.springframework.cloud\",\n\t\"spring-cloud-aws\":                                         \"org.springframework.cloud\",\n\t\"spring-cloud-aws-actuator\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-aws-autoconfigure\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-aws-context\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-aws-core\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-aws-depednencies\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-aws-dependencies\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-aws-docs\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-aws-integration-test\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-aws-jdbc\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-aws-messaging\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-aws-parameter-store-config\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-aws-secrets-manager-config\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-bindings\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-bindings-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-build\":                                       \"org.springframework.cloud\",\n\t\"spring-cloud-build-dependencies\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-build-docs\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-build-tools\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-bus\":                                         \"org.springframework.cloud\",\n\t\"spring-cloud-bus-dependencies\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-bus-docs\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-bus-parent\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-bus-rsocket\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-bus-tests\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-circuitbreaker\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-circuitbreaker-dependencies\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-circuitbreaker-docs\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-circuitbreaker-resilience4j\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-circuitbreaker-spring-retry\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-cli\":                                         \"org.springframework.cloud\",\n\t\"spring-cloud-cli-docs\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-cli-parent\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-commons\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-connector\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-dependencies\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-discovery\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-docs\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-service-broker\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-cloudfoundry-web\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-cluster\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-autoconfigure\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-core\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-etcd\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-hazelcast\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-redis\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-cluster-zookeeper\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-common-security-config\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-common-security-config-core\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-common-security-config-web\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-commons\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-commons-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-commons-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-commons-parent\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-config\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-config-client\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-config-client-tls-tests\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-config-dependencies\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-config-docs\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-config-monitor\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-config-server\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-connectors-core\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-consul\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-consul-binder\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-consul-config\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-consul-core\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-consul-dependencies\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-consul-discovery\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-consul-docs\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-consul-integration-tests\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-context\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-contract-converters\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-contract-dependencies\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-contract-docs\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-contract-gradle-plugin\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-contract-maven-plugin\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-contract-pact\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-contract-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-contract-shade\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-contract-spec\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-contract-spec-groovy\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-contract-spec-java\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-contract-spec-kotlin\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-contract-spec-pact\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-contract-starters\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-contract-stub-runner\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-contract-stub-runner-boot\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-contract-stub-runner-moco-contract-jar\":      \"org.springframework.cloud\",\n\t\"spring-cloud-contract-tools\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-contract-verifier\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-contract-wiremock\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-core\":                                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-aggregate-task\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-apps-docs-plugin\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-apps-generator-plugin\":              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-apps-metadata-plugin\":               \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-apps-plugin-parent\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-audit\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-autoconfigure\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-build\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-build-dependencies\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-build-tools\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-classic-docs\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-collector-metrics-docs\":             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-dependencies\":                \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-flyway\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-parent\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-persistence\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-test-docker\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-common-test-docker-junit5\":          \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-completion\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-composed-task-runner\":               \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-configuration-metadata\":             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-container-registry\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-core\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-core-dsl\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-dependencies\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-dependencies-parent\":                \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-docs\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-metrics-collector-build\":            \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-metrics-collector-dependencies\":     \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-package\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-platform-cloudfoundry\":              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-platform-kubernetes\":                \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-registry\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-rest-client\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-rest-resource\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-scheduler-task-launcher\":            \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-schema\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-schema-core\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-cloudfoundry\":                \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-cloudfoundry-autoconfig\":     \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-cloudfoundry-docs\":           \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-cloudfoundry-parent\":         \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-core\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-kubernetes\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-kubernetes-autoconfig\":       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-kubernetes-docs\":             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-kubernetes-parent\":           \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-local\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-local-autoconfig\":            \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-mesos\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-mesos-docs\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-mesos-parent\":                \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-autoconfig\":             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-client\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-docs\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-h2\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-parent\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-shell\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-server-yarn-shell-core\":             \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-shell\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-shell-core\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-single-step-batch-job\":              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-skipper-docs\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher-function\":              \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher-sink\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher-sink-dependencies\":     \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher-sink-kafka\":            \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-tasklauncher-sink-rabbit\":           \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-test\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-dataflow-ui\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-dependencies\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-dependencies-parent\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-autoconfigure\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-cloudfoundry\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-dependencies\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-kubernetes\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-local\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-local-parent\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-mesos\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-resource-docker\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-resource-maven\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-resource-support\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-sample-stream\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-sample-task\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-spi\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-spi-scheduler-test-app\":             \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-spi-test\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-spi-test-app\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-thin\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn-appdeployerappmaster\":          \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn-autoconfig\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn-build-tests\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn-parent\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-deployer-yarn-tasklauncherappmaster\":         \"org.springframework.cloud\",\n\t\"spring-cloud-docs\":                                        \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-aws\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-aws-web\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-azure\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-azure-web\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-gcp\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-openwhisk\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-function-adapter-parent\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-function-compiler\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-function-context\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-function-core\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-function-dependencies\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-function-deployer\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-function-docs\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-function-grpc\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-function-grpc-cloudevent-ext\":                \"org.springframework.cloud\",\n\t\"spring-cloud-function-integration\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-function-kotlin\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-function-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-function-rsocket\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-function-samples\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-function-serverless-web\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-function-stream\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-function-task\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-function-web\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-gateway\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-core\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-mvc\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-server\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-gateway-webflux\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-gcp\":                                         \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-autoconfigure\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-bigquery\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-cloudfoundry\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-core\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-data-datastore\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-data-firestore\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-data-spanner\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-dependencies\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-docs\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-logging\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-pubsub\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-pubsub-stream-binder\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-secretmanager\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-security-firebase\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-security-iap\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-bigquery\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-bus-pubsub\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-cloudfoundry\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-data-datastore\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-data-firestore\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-data-spanner\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-firestore\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-logging\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-metrics\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-pubsub\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-secretmanager\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-security-firebase\":               \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-security-iap\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-sql-mysql\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-sql-postgresql\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-storage\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-trace\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starter-vision\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-starters\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-storage\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-gcp-vision\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-heroku-connector\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-archaius\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-client-autoconfig\":                \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-client-config\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-client-discovery\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-client-loadbalancer\":              \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-commons\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-config\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-configserver\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-configuration-watcher\":            \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-controllers\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-core\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-dependencies\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-discovery\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-discoveryserver\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-docs\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-autoconfig\":               \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-config\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-discovery\":                \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-istio\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-leader\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-fabric8-loadbalancer\":             \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-hystrix\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-istio\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-leader\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-loadbalancer\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-ribbon\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-test-support\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-kubernetes-zipkin\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-launcher\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-loadbalancer\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-localconfig-connector\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-netflix\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-archaius\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-concurrency-limits\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-core\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-eureka-client\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-eureka-client-tls-tests\":             \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-eureka-server\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-hystrix\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-hystrix-amqp\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-hystrix-dashboard\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-hystrix-stream\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-ribbon\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-sidecar\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-spectator\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-turbine\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-turbine-amqp\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-turbine-stream\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-netflix-zuul\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-open-service-broker\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-open-service-broker-autoconfigure\":           \"org.springframework.cloud\",\n\t\"spring-cloud-open-service-broker-contract-tests\":          \"org.springframework.cloud\",\n\t\"spring-cloud-open-service-broker-core\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-open-service-broker-docs\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-openfeign\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-openfeign-core\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-openfeign-dependencies\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-openfeign-docs\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-parent\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-scheam-registry-parent\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-cloudfoundry\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-kubernetes\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-parent\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-spi\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-spi-test\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-scheduler-spi-test-app\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-schema-registry-client\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-schema-registry-core\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-schema-registry-parent\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-schema-registry-server\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-security\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-security-dependencies\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-security-docs\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-security-parent\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-skipper\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-autoconfigure\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-client\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-dependencies\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-parent\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-platform-cloudfoundry\":               \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-platform-kubernetes\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-server\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-server-core\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-shell\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-skipper-shell-commands\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-api\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-autoconfigure\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-brave\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-core\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-dependencies\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-docs\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-instrumentation\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel-autoconfigure\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel-dependencies\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel-docs\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel-parent\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-otel-tests-parent\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-reactor\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-sample-test-core\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-stream\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-tests\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-tests-common\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-tests-otel-common\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-zipkin\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-zipkin-legacy\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-sleuth-zipkin-stream\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-spinnaker\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-spring-service-connector\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-square\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-square-dependencies\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-square-docs\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-square-okhttp\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-square-retrofit\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-square-retrofit-core\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-square-retrofit-webclient\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter\":                                     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba-nacos-config\":                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba-nacos-config-server\":         \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba-nacos-discovery\":             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba-seata\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alibaba-sentinel\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud-acm\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud-ans\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud-oss\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud-schedulerx\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-starter-alicloud-sms\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-app-broker\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-app-broker-cloudfoundry\":             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-app-broker-logging\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-starter-archaius\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-atlas\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-aws\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-starter-aws-jdbc\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-aws-messaging\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-aws-parameter-store-config\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-aws-secrets-manager-config\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-bootstrap\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-build\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-bus-amqp\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-bus-kafka\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-bus-rocketmq\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-bus-stream\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-circuitbreaker\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-circuitbreaker-reactor-resilience4j\": \"org.springframework.cloud\",\n\t\"spring-cloud-starter-circuitbreaker-resilience4j\":         \"org.springframework.cloud\",\n\t\"spring-cloud-starter-circuitbreaker-spring-retry\":         \"org.springframework.cloud\",\n\t\"spring-cloud-starter-cloudfoundry\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-common-security-config-web\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-config\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-consul\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-consul-all\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-consul-bus\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-consul-config\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-consul-discovery\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-starter-contract-stub-runner\":                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-contract-stub-runner-jetty\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-contract-verifier\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-metrics-collector\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server-cloudfoundry\":        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server-kubernetes\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server-local\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server-mesos\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-server-yarn\":                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dataflow-ui\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-starter-deployer-yarn\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-docs\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-dubbo\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-eureka\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-eureka-server\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-feign\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-function-web\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-function-webflux\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-starter-gateway\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-hystrix\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-hystrix-dashboard\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-all\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-client\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-client-all\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-client-config\":            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-client-loadbalancer\":      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-config\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-discoveryclient\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-fabric8\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-fabric8-all\":              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-fabric8-config\":           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-fabric8-loadbalancer\":     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-loadbalancer\":             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-netflix\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-ribbon\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-kubernetes-zipkin\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-loadbalancer\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-archaius\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-atlas\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-eureka-client\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-eureka-server\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-hystrix\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-hystrix-dashboard\":           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-ribbon\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-spectator\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-turbine\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-turbine-amqp\":                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-turbine-stream\":              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-netflix-zuul\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-oauth2\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-open-service-broker\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-starter-open-service-broker-webmvc\":          \"org.springframework.cloud\",\n\t\"spring-cloud-starter-openfeign\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-parent\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-ribbon\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-security\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-starter-single-step-batch-job\":               \"org.springframework.cloud\",\n\t\"spring-cloud-starter-skipper-server\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-sleuth\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-spectator\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-stream-kafka\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-stream-kafka11\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-stream-rabbit\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-stream-redis\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-stream-rocketmq\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-starter-task\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-starter-turbine\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-starter-turbine-amqp\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-turbine-stream\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-starter-vault-config\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zipkin\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zipkin-legacy\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zookeeper\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zookeeper-all\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zookeeper-config\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zookeeper-discovery\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-starter-zuul\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-stream\":                                      \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.10-test\":               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.10.0-test\":             \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.10.1-test\":             \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.10.2-test\":             \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.11-test\":               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-0.9\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-core\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-docs\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-parent\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-reactive\":                \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-streams\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka-test-support\":            \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka11\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka11-core\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka11-docs\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kafka11-parent\":                \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kinesis\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kinesis-docs\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kinesis-parent\":                \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kstream\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-kstream11\":                     \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rabbit\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rabbit-core\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rabbit-docs\":                   \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rabbit-parent\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rabbit-test-support\":           \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-redis\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-redis-parent\":                  \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-rocketmq\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-servlet\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binder-test\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binders\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-stream-binders-parent\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-codec\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-stream-core\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-stream-core-docs\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-stream-dependencies\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-stream-docs\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-stream-integration-tests\":                    \"org.springframework.cloud\",\n\t\"spring-cloud-stream-metrics\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-stream-parent\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-reactive\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-stream-rxjava\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema\":                               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema-registry\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema-registry-client\":               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema-registry-core\":                 \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema-registry-server\":               \"org.springframework.cloud\",\n\t\"spring-cloud-stream-schema-server\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-stream-starter-build\":                        \"org.springframework.cloud\",\n\t\"spring-cloud-stream-starter-parent\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-stream-starters\":                             \"org.springframework.cloud\",\n\t\"spring-cloud-stream-test-binder\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-stream-test-support\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-stream-test-support-internal\":                \"org.springframework.cloud\",\n\t\"spring-cloud-stream-tools\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-task-batch\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-task-core\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-task-dependencies\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-task-docs\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-task-integration-tests\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-task-parent\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-task-samples\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-task-starter\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-task-stream\":                                 \"org.springframework.cloud\",\n\t\"spring-cloud-test-support\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config-aws\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config-consul\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config-databases\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config-docs\":                           \"org.springframework.cloud\",\n\t\"spring-cloud-vault-config-rabbitmq\":                       \"org.springframework.cloud\",\n\t\"spring-cloud-vault-dependencies\":                          \"org.springframework.cloud\",\n\t\"spring-cloud-vault-docs\":                                  \"org.springframework.cloud\",\n\t\"spring-cloud-vault-parent\":                                \"org.springframework.cloud\",\n\t\"spring-cloud-versions\":                                    \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper\":                                   \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper-config\":                            \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper-core\":                              \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper-dependencies\":                      \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper-discovery\":                         \"org.springframework.cloud\",\n\t\"spring-cloud-zookeeper-docs\":                              \"org.springframework.cloud\",\n\t\"spring-credhub-core\":                                      \"org.springframework.credhub\",\n\t\"spring-cql\":                                               \"org.springframework.data\",\n\t\"spring-data-bom\":                                          \"org.springframework.data\",\n\t\"spring-data-cassandra\":                                    \"org.springframework.data\",\n\t\"spring-data-cassandra-distribution\":                       \"org.springframework.data\",\n\t\"spring-data-cassandra-parent\":                             \"org.springframework.data\",\n\t\"spring-data-commons\":                                      \"org.springframework.data\",\n\t\"spring-data-commons-core\":                                 \"org.springframework.data\",\n\t\"spring-data-commons-dist\":                                 \"org.springframework.data\",\n\t\"spring-data-commons-parent\":                               \"org.springframework.data\",\n\t\"spring-data-couchbase\":                                    \"org.springframework.data\",\n\t\"spring-data-elasticsearch\":                                \"org.springframework.data\",\n\t\"spring-data-envers\":                                       \"org.springframework.data\",\n\t\"spring-data-gemfire\":                                      \"org.springframework.data\",\n\t\"spring-data-gemfire-test\":                                 \"org.springframework.data\",\n\t\"spring-data-geode\":                                        \"org.springframework.data\",\n\t\"spring-data-geode-distribution\":                           \"org.springframework.data\",\n\t\"spring-data-geode-parent\":                                 \"org.springframework.data\",\n\t\"spring-data-geode-test\":                                   \"org.springframework.data\",\n\t\"spring-data-graph-core\":                                   \"org.springframework.data\",\n\t\"spring-data-graph-dist\":                                   \"org.springframework.data\",\n\t\"spring-data-graph-parent\":                                 \"org.springframework.data\",\n\t\"spring-data-hadoop\":                                       \"org.springframework.data\",\n\t\"spring-data-hadoop-batch\":                                 \"org.springframework.data\",\n\t\"spring-data-hadoop-boot\":                                  \"org.springframework.data\",\n\t\"spring-data-hadoop-build-tests\":                           \"org.springframework.data\",\n\t\"spring-data-hadoop-cluster-tests\":                         \"org.springframework.data\",\n\t\"spring-data-hadoop-config\":                                \"org.springframework.data\",\n\t\"spring-data-hadoop-core\":                                  \"org.springframework.data\",\n\t\"spring-data-hadoop-hbase\":                                 \"org.springframework.data\",\n\t\"spring-data-hadoop-hive\":                                  \"org.springframework.data\",\n\t\"spring-data-hadoop-pig\":                                   \"org.springframework.data\",\n\t\"spring-data-hadoop-spark\":                                 \"org.springframework.data\",\n\t\"spring-data-hadoop-sqoop2\":                                \"org.springframework.data\",\n\t\"spring-data-hadoop-store\":                                 \"org.springframework.data\",\n\t\"spring-data-hadoop-test\":                                  \"org.springframework.data\",\n\t\"spring-data-hadoop-util\":                                  \"org.springframework.data\",\n\t\"spring-data-jdbc\":                                         \"org.springframework.data\",\n\t\"spring-data-jdbc-core\":                                    \"org.springframework.data\",\n\t\"spring-data-jdbc-distribution\":                            \"org.springframework.data\",\n\t\"spring-data-jpa\":                                          \"org.springframework.data\",\n\t\"spring-data-jpa-distribution\":                             \"org.springframework.data\",\n\t\"spring-data-jpa-parent\":                                   \"org.springframework.data\",\n\t\"spring-data-keyvalue\":                                     \"org.springframework.data\",\n\t\"spring-data-ldap\":                                         \"org.springframework.data\",\n\t\"spring-data-mongodb\":                                      \"org.springframework.data\",\n\t\"spring-data-mongodb-cross-store\":                          \"org.springframework.data\",\n\t\"spring-data-mongodb-dist\":                                 \"org.springframework.data\",\n\t\"spring-data-mongodb-distribution\":                         \"org.springframework.data\",\n\t\"spring-data-mongodb-log4j\":                                \"org.springframework.data\",\n\t\"spring-data-mongodb-parent\":                               \"org.springframework.data\",\n\t\"spring-data-neo4j\":                                        \"org.springframework.data\",\n\t\"spring-data-neo4j-aspects\":                                \"org.springframework.data\",\n\t\"spring-data-neo4j-cross-store\":                            \"org.springframework.data\",\n\t\"spring-data-neo4j-dist\":                                   \"org.springframework.data\",\n\t\"spring-data-neo4j-distribution\":                           \"org.springframework.data\",\n\t\"spring-data-neo4j-parent\":                                 \"org.springframework.data\",\n\t\"spring-data-neo4j-rest\":                                   \"org.springframework.data\",\n\t\"spring-data-neo4j-tx\":                                     \"org.springframework.data\",\n\t\"spring-data-oracle\":                                       \"org.springframework.data\",\n\t\"spring-data-r2dbc\":                                        \"org.springframework.data\",\n\t\"spring-data-redis\":                                        \"org.springframework.data\",\n\t\"spring-data-relational\":                                   \"org.springframework.data\",\n\t\"spring-data-relational-parent\":                            \"org.springframework.data\",\n\t\"spring-data-releasetrain\":                                 \"org.springframework.data\",\n\t\"spring-data-rest-core\":                                    \"org.springframework.data\",\n\t\"spring-data-rest-distribution\":                            \"org.springframework.data\",\n\t\"spring-data-rest-hal-browser\":                             \"org.springframework.data\",\n\t\"spring-data-rest-hal-explorer\":                            \"org.springframework.data\",\n\t\"spring-data-rest-parent\":                                  \"org.springframework.data\",\n\t\"spring-data-rest-repository\":                              \"org.springframework.data\",\n\t\"spring-data-rest-webmvc\":                                  \"org.springframework.data\",\n\t\"spring-data-solr\":                                         \"org.springframework.data\",\n\t\"spring-yarn\":                                              \"org.springframework.data\",\n\t\"spring-yarn-batch\":                                        \"org.springframework.data\",\n\t\"spring-yarn-boot\":                                         \"org.springframework.data\",\n\t\"spring-yarn-boot-build-tests\":                             \"org.springframework.data\",\n\t\"spring-yarn-boot-cli\":                                     \"org.springframework.data\",\n\t\"spring-yarn-boot-test\":                                    \"org.springframework.data\",\n\t\"spring-yarn-build-tests\":                                  \"org.springframework.data\",\n\t\"spring-yarn-core\":                                         \"org.springframework.data\",\n\t\"spring-yarn-integration\":                                  \"org.springframework.data\",\n\t\"spring-yarn-test\":                                         \"org.springframework.data\",\n\t\"spring-flex\":                                              \"org.springframework.flex\",\n\t\"spring-graphql\":                                           \"org.springframework.graphql\",\n\t\"spring-hateoas\":                                           \"org.springframework.hateoas\",\n\t\"spring-integration\":                                       \"org.springframework.integration\",\n\t\"spring-integration-adapter\":                               \"org.springframework.integration\",\n\t\"spring-integration-amqp\":                                  \"org.springframework.integration\",\n\t\"spring-integration-aws\":                                   \"org.springframework.integration\",\n\t\"spring-integration-bom\":                                   \"org.springframework.integration\",\n\t\"spring-integration-camel\":                                 \"org.springframework.integration\",\n\t\"spring-integration-cassandra\":                             \"org.springframework.integration\",\n\t\"spring-integration-core\":                                  \"org.springframework.integration\",\n\t\"spring-integration-event\":                                 \"org.springframework.integration\",\n\t\"spring-integration-feed\":                                  \"org.springframework.integration\",\n\t\"spring-integration-file\":                                  \"org.springframework.integration\",\n\t\"spring-integration-flow\":                                  \"org.springframework.integration\",\n\t\"spring-integration-ftp\":                                   \"org.springframework.integration\",\n\t\"spring-integration-gemfire\":                               \"org.springframework.integration\",\n\t\"spring-integration-graphql\":                               \"org.springframework.integration\",\n\t\"spring-integration-groovy\":                                \"org.springframework.integration\",\n\t\"spring-integration-groovy-dsl\":                            \"org.springframework.integration\",\n\t\"spring-integration-hazelcast\":                             \"org.springframework.integration\",\n\t\"spring-integration-http\":                                  \"org.springframework.integration\",\n\t\"spring-integration-httpinvoker\":                           \"org.springframework.integration\",\n\t\"spring-integration-ip\":                                    \"org.springframework.integration\",\n\t\"spring-integration-java-dsl\":                              \"org.springframework.integration\",\n\t\"spring-integration-jdbc\":                                  \"org.springframework.integration\",\n\t\"spring-integration-jms\":                                   \"org.springframework.integration\",\n\t\"spring-integration-jmx\":                                   \"org.springframework.integration\",\n\t\"spring-integration-jpa\":                                   \"org.springframework.integration\",\n\t\"spring-integration-kafka\":                                 \"org.springframework.integration\",\n\t\"spring-integration-kotlin-dsl\":                            \"org.springframework.integration\",\n\t\"spring-integration-mail\":                                  \"org.springframework.integration\",\n\t\"spring-integration-mongodb\":                               \"org.springframework.integration\",\n\t\"spring-integration-mqtt\":                                  \"org.springframework.integration\",\n\t\"spring-integration-parent\":                                \"org.springframework.integration\",\n\t\"spring-integration-r2dbc\":                                 \"org.springframework.integration\",\n\t\"spring-integration-redis\":                                 \"org.springframework.integration\",\n\t\"spring-integration-rmi\":                                   \"org.springframework.integration\",\n\t\"spring-integration-rsocket\":                               \"org.springframework.integration\",\n\t\"spring-integration-samples\":                               \"org.springframework.integration\",\n\t\"spring-integration-scripting\":                             \"org.springframework.integration\",\n\t\"spring-integration-security\":                              \"org.springframework.integration\",\n\t\"spring-integration-sftp\":                                  \"org.springframework.integration\",\n\t\"spring-integration-smb\":                                   \"org.springframework.integration\",\n\t\"spring-integration-smpp\":                                  \"org.springframework.integration\",\n\t\"spring-integration-social-twitter\":                        \"org.springframework.integration\",\n\t\"spring-integration-splunk\":                                \"org.springframework.integration\",\n\t\"spring-integration-stomp\":                                 \"org.springframework.integration\",\n\t\"spring-integration-stream\":                                \"org.springframework.integration\",\n\t\"spring-integration-syslog\":                                \"org.springframework.integration\",\n\t\"spring-integration-test\":                                  \"org.springframework.integration\",\n\t\"spring-integration-test-support\":                          \"org.springframework.integration\",\n\t\"spring-integration-tuple\":                                 \"org.springframework.integration\",\n\t\"spring-integration-twitter\":                               \"org.springframework.integration\",\n\t\"spring-integration-webflux\":                               \"org.springframework.integration\",\n\t\"spring-integration-websocket\":                             \"org.springframework.integration\",\n\t\"spring-integration-ws\":                                    \"org.springframework.integration\",\n\t\"spring-integration-xml\":                                   \"org.springframework.integration\",\n\t\"spring-integration-xmpp\":                                  \"org.springframework.integration\",\n\t\"spring-integration-zeromq\":                                \"org.springframework.integration\",\n\t\"spring-integration-zip\":                                   \"org.springframework.integration\",\n\t\"spring-integration-zookeeper\":                             \"org.springframework.integration\",\n\t\"spring-kafka\":                                             \"org.springframework.kafka\",\n\t\"spring-social-core\":                                       \"org.springframework.social\",\n\t\"spring-security\":                                          \"org.springframework.security\",\n\t\"spring-security-acl\":                                      \"org.springframework.security\",\n\t\"spring-security-adapters\":                                 \"org.springframework.security\",\n\t\"spring-security-aspects\":                                  \"org.springframework.security\",\n\t\"spring-security-bom\":                                      \"org.springframework.security\",\n\t\"spring-security-cas\":                                      \"org.springframework.security\",\n\t\"spring-security-cas-client\":                               \"org.springframework.security\",\n\t\"spring-security-catalina\":                                 \"org.springframework.security\",\n\t\"spring-security-config\":                                   \"org.springframework.security\",\n\t\"spring-security-core\":                                     \"org.springframework.security\",\n\t\"spring-security-core-tiger\":                               \"org.springframework.security\",\n\t\"spring-security-crypto\":                                   \"org.springframework.security\",\n\t\"spring-security-data\":                                     \"org.springframework.security\",\n\t\"spring-security-jboss\":                                    \"org.springframework.security\",\n\t\"spring-security-jetty\":                                    \"org.springframework.security\",\n\t\"spring-security-jwt\":                                      \"org.springframework.security\",\n\t\"spring-security-ldap\":                                     \"org.springframework.security\",\n\t\"spring-security-messaging\":                                \"org.springframework.security\",\n\t\"spring-security-ntlm\":                                     \"org.springframework.security\",\n\t\"spring-security-oauth2-authorization-server\":              \"org.springframework.security\",\n\t\"spring-security-oauth2-client\":                            \"org.springframework.security\",\n\t\"spring-security-oauth2-core\":                              \"org.springframework.security\",\n\t\"spring-security-oauth2-jose\":                              \"org.springframework.security\",\n\t\"spring-security-oauth2-resource-server\":                   \"org.springframework.security\",\n\t\"spring-security-openid\":                                   \"org.springframework.security\",\n\t\"spring-security-parent\":                                   \"org.springframework.security\",\n\t\"spring-security-portlet\":                                  \"org.springframework.security\",\n\t\"spring-security-remoting\":                                 \"org.springframework.security\",\n\t\"spring-security-resin\":                                    \"org.springframework.security\",\n\t\"spring-security-rsa\":                                      \"org.springframework.security\",\n\t\"spring-security-rsocket\":                                  \"org.springframework.security\",\n\t\"spring-security-saml2-service-provider\":                   \"org.springframework.security\",\n\t\"spring-security-samples\":                                  \"org.springframework.security\",\n\t\"spring-security-samples-aspectj\":                          \"org.springframework.security\",\n\t\"spring-security-samples-cas\":                              \"org.springframework.security\",\n\t\"spring-security-samples-cas-client\":                       \"org.springframework.security\",\n\t\"spring-security-samples-cas-server\":                       \"org.springframework.security\",\n\t\"spring-security-samples-contacts\":                         \"org.springframework.security\",\n\t\"spring-security-samples-dms\":                              \"org.springframework.security\",\n\t\"spring-security-samples-javaconfig-messages\":              \"org.springframework.security\",\n\t\"spring-security-samples-ldap\":                             \"org.springframework.security\",\n\t\"spring-security-samples-messages-jc\":                      \"org.springframework.security\",\n\t\"spring-security-samples-openid\":                           \"org.springframework.security\",\n\t\"spring-security-samples-portlet\":                          \"org.springframework.security\",\n\t\"spring-security-samples-preauth\":                          \"org.springframework.security\",\n\t\"spring-security-samples-tutorial\":                         \"org.springframework.security\",\n\t\"spring-security-taglibs\":                                  \"org.springframework.security\",\n\t\"spring-security-test\":                                     \"org.springframework.security\",\n\t\"spring-security-web\":                                      \"org.springframework.security\",\n\t\"spring-security-oauth\":                                    \"org.springframework.security.oauth\",\n\t\"spring-security-oauth-parent\":                             \"org.springframework.security.oauth\",\n\t\"spring-security-oauth2\":                                   \"org.springframework.security.oauth\",\n\t\"spring-security-oauth2-autoconfigure\":                     \"org.springframework.security.oauth.boot\",\n\t\"spring-security-kerberos-bom\":                             \"org.springframework.security.kerberos\",\n\t\"spring-security-kerberos-client\":                          \"org.springframework.security.kerberos\",\n\t\"spring-security-kerberos-core\":                            \"org.springframework.security.kerberos\",\n\t\"spring-security-kerberos-test\":                            \"org.springframework.security.kerberos\",\n\t\"spring-security-kerberos-web\":                             \"org.springframework.security.kerberos\",\n\t\"spring-security-saml-dsl-core\":                            \"org.springframework.security.extensions\",\n\t\"spring-security-saml2-core\":                               \"org.springframework.security.extensions\",\n\t\"spring-session\":                                           \"org.springframework.session\",\n\t\"spring-session-bom\":                                       \"org.springframework.session\",\n\t\"spring-session-core\":                                      \"org.springframework.session\",\n\t\"spring-session-data-gemfire\":                              \"org.springframework.session\",\n\t\"spring-session-data-geode\":                                \"org.springframework.session\",\n\t\"spring-session-data-mongo\":                                \"org.springframework.session\",\n\t\"spring-session-data-mongodb\":                              \"org.springframework.session\",\n\t\"spring-session-data-redis\":                                \"org.springframework.session\",\n\t\"spring-session-hazelcast\":                                 \"org.springframework.session\",\n\t\"spring-session-jdbc\":                                      \"org.springframework.session\",\n\t\"spring-vault-core\":                                        \"org.springframework.vault\",\n\t\"org.springframework.binding\":                              \"org.springframework.webflow\",\n\t\"org.springframework.faces\":                                \"org.springframework.webflow\",\n\t\"org.springframework.js\":                                   \"org.springframework.webflow\",\n\t\"org.springframework.webflow\":                              \"org.springframework.webflow\",\n\t\"spring-binding\":                                           \"org.springframework.webflow\",\n\t\"spring-build-src\":                                         \"org.springframework.webflow\",\n\t\"spring-faces\":                                             \"org.springframework.webflow\",\n\t\"spring-js\":                                                \"org.springframework.webflow\",\n\t\"spring-js-resources\":                                      \"org.springframework.webflow\",\n\t\"spring-webflow\":                                           \"org.springframework.webflow\",\n\t\"spring-ws\":                                                \"org.springframework.ws\",\n\t\"spring-xml\":                                               \"org.springframework.ws\",\n\t\"xalan\":                                                    \"xalan\", // see https://mvnrepository.com/artifact/xalan/xalan/2.7.2\n\t\"org.eclipse.ant.core\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ant.launching\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.ant.optional.junit\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.ant.ui\":                                       \"org.eclipse.platform\",\n\t\"org.eclipse.compare\":                                      \"org.eclipse.platform\",\n\t\"org.eclipse.compare.core\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.compare.examples\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.compare.examples.xml\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.compare.win32\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.core.commands\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.core.contenttype\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.core.databinding\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.core.databinding.beans\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.core.databinding.observable\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.core.databinding.property\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.expressions\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.core.externaltools\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.core.filebuffers\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.aix.ppc\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.aix.ppc64\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.hpux.ia64\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.aarch64\":                \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.ppc\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.ppc64\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.ppc64le\":                \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.x86\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.linux.x86_64\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.macosx\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.win32.x86\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.filesystem.win32.x86_64\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.core.jobs\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.core.net\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.linux\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.linux.x86\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.linux.x86_64\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.win32\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.win32.x86\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.core.net.win32.x86_64\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.core.resources\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.core.resources.win32.x86\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.core.resources.win32.x86_64\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.core.runtime\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.core.variables\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.cvs\":                                          \"org.eclipse.platform\",\n\t\"org.eclipse.debug.core\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.debug.examples.core\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.debug.examples.ui\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.debug.ui\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.debug.ui.launchview\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.commands\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.contexts\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.di\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.di.annotations\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.di.extensions\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.di.extensions.supplier\":               \"org.eclipse.platform\",\n\t\"org.eclipse.e4.core.services\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.e4.emf.xpath\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.compat\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.compatibility.migration\":             \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.emf.editor3x\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.emf.ui\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.jdt.templates\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.persistence\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.e4.tools.services\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.bindings\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.css.core\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.css.swt\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.css.swt.theme\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.di\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.dialogs\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.ide\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.model.workbench\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.progress\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.services\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.swt.gtk\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.swt.win32\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.widgets\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench.addons.swt\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench.renderers.swt\":                \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench.renderers.swt.cocoa\":          \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench.swt\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.e4.ui.workbench3\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.app\":                                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.bidi\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.cm\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.common\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.concurrent\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.console\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.console.jaas.fragment\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.console.ssh\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.coordinator\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.device\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.ds\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.event\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.frameworkadmin\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.frameworkadmin.equinox\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.http.jetty\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.http.registry\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.http.servlet\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.http.servletbridge\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.io\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.ip\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.jsp.jasper\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.jsp.jasper.registry\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.cocoa.macosx\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.cocoa.macosx.aarch64\":        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.cocoa.macosx.x86_64\":         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.aix.ppc\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.aix.ppc64\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.hpux.ia64\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.aarch64\":           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.ppc\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.ppc64\":             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.ppc64le\":           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.s390\":              \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.s390x\":             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.x86\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.linux.x86_64\":            \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.solaris.sparcv9\":         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.gtk.solaris.x86_64\":          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.win32.win32.x86\":             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.launcher.win32.win32.x86_64\":          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.log.stream\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.metatype\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.artifact.repository\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.console\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.core\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.director\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.director.app\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.directorywatcher\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.discovery\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.discovery.compatibility\":           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.engine\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.extensionlocation\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.garbagecollector\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.installer\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.jarprocessor\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.metadata\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.metadata.repository\":               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.operations\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.publisher\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.publisher.eclipse\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.reconciler.dropins\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.repository\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.repository.tools\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.touchpoint.eclipse\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.touchpoint.natives\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.transport.ecf\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.admin\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.admin.rcp\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.discovery\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.importexport\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.sdk\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.ui.sdk.scheduler\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.updatechecker\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.p2.updatesite\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.preferences\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.region\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.registry\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.linux\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.linux.x86_64\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.macosx\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.ui\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.win32.x86\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.security.win32.x86_64\":                \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.servletbridge\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.simpleconfigurator\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.simpleconfigurator.manipulator\":       \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.supplement\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.transforms.hook\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.transforms.xslt\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.useradmin\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.util\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.weaving.caching\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.weaving.caching.j9\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.weaving.hook\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.equinox.wireadmin\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.help\":                                         \"org.eclipse.platform\",\n\t\"org.eclipse.help.base\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.help.ui\":                                      \"org.eclipse.platform\",\n\t\"org.eclipse.help.webapp\":                                  \"org.eclipse.platform\",\n\t\"org.eclipse.jface\":                                        \"org.eclipse.platform\",\n\t\"org.eclipse.jface.databinding\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.jface.examples.databinding\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.jface.notifications\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.jface.text\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.jsch.core\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.jsch.ui\":                                      \"org.eclipse.platform\",\n\t\"org.eclipse.ltk.core.refactoring\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.ltk.ui.refactoring\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.osgi\":                                         \"org.eclipse.platform\",\n\t\"org.eclipse.osgi.compatibility.plugins\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.osgi.compatibility.state\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.osgi.services\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.osgi.util\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.platform\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.platform.doc.isv\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.platform.doc.user\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.rcp\":                                          \"org.eclipse.platform\",\n\t\"org.eclipse.releng.tools\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.sdk\":                                          \"org.eclipse.platform\",\n\t\"org.eclipse.sdk.examples\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.search\":                                       \"org.eclipse.platform\",\n\t\"org.eclipse.swt\":                                          \"org.eclipse.platform\",\n\t\"org.eclipse.swt.browser.chromium.cocoa.macosx.x86_64\":     \"org.eclipse.platform\",\n\t\"org.eclipse.swt.browser.chromium.gtk.linux.x86_64\":        \"org.eclipse.platform\",\n\t\"org.eclipse.swt.browser.chromium.win32.win32.x86_64\":      \"org.eclipse.platform\",\n\t\"org.eclipse.swt.cocoa.macosx.aarch64\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.swt.cocoa.macosx.x86_64\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.swt.examples\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.swt.examples.browser.demos\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.swt.examples.launcher\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.swt.examples.ole.win32\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.swt.examples.views\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.aix.ppc\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.aix.ppc64\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.hpux.ia64\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.aarch64\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.ppc\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.ppc64\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.ppc64le\":                        \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.s390\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.s390x\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.x86\":                            \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.linux.x86_64\":                         \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.solaris.sparcv9\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.swt.gtk.solaris.x86_64\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.swt.tools\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.swt.tools.base\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.swt.tools.spies\":                              \"org.eclipse.platform\",\n\t\"org.eclipse.swt.win32.win32.x86\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.swt.win32.win32.x86_64\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.team.core\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.team.cvs.core\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.team.cvs.ssh2\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.team.cvs.ui\":                                  \"org.eclipse.platform\",\n\t\"org.eclipse.team.examples.filesystem\":                     \"org.eclipse.platform\",\n\t\"org.eclipse.team.genericeditor.diff.extension\":            \"org.eclipse.platform\",\n\t\"org.eclipse.team.ui\":                                      \"org.eclipse.platform\",\n\t\"org.eclipse.text\":                                         \"org.eclipse.platform\",\n\t\"org.eclipse.text.quicksearch\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.tips.core\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.tips.ide\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.tips.json\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.tips.ui\":                                      \"org.eclipse.platform\",\n\t\"org.eclipse.tools.layout.spy\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.ui\":                                           \"org.eclipse.platform\",\n\t\"org.eclipse.ui.browser\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.ui.cheatsheets\":                               \"org.eclipse.platform\",\n\t\"org.eclipse.ui.cocoa\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.console\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.ui.editors\":                                   \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.contributions\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.fieldassist\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.filesystem\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.javaeditor\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.multipageeditor\":                  \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.propertysheet\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.readmetool\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.undo\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.uriSchemeHandler\":                 \"org.eclipse.platform\",\n\t\"org.eclipse.ui.examples.views.properties.tabbed.article\":  \"org.eclipse.platform\",\n\t\"org.eclipse.ui.externaltools\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.ui.forms\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.genericeditor\":                             \"org.eclipse.platform\",\n\t\"org.eclipse.ui.genericeditor.examples\":                    \"org.eclipse.platform\",\n\t\"org.eclipse.ui.ide\":                                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.ide.application\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.ui.intro\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.intro.quicklinks\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.ui.intro.universal\":                           \"org.eclipse.platform\",\n\t\"org.eclipse.ui.monitoring\":                                \"org.eclipse.platform\",\n\t\"org.eclipse.ui.navigator\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.ui.navigator.resources\":                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.net\":                                       \"org.eclipse.platform\",\n\t\"org.eclipse.ui.themes\":                                    \"org.eclipse.platform\",\n\t\"org.eclipse.ui.trace\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.views\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.views.log\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.ui.views.properties.tabbed\":                   \"org.eclipse.platform\",\n\t\"org.eclipse.ui.win32\":                                     \"org.eclipse.platform\",\n\t\"org.eclipse.ui.workbench\":                                 \"org.eclipse.platform\",\n\t\"org.eclipse.ui.workbench.texteditor\":                      \"org.eclipse.platform\",\n\t\"org.eclipse.update.configurator\":                          \"org.eclipse.platform\",\n\t\"org.eclipse.update.core\":                                  \"org.eclipse.platform\",\n\t\"org.eclipse.urischeme\":                                    \"org.eclipse.platform\",\n\t\"reactor-netty\":                                            \"io.projectreactor.netty\",\n\t\"reactor-netty-core\":                                       \"io.projectreactor.netty\",\n\t\"reactor-netty-http\":                                       \"io.projectreactor.netty\",\n\t\"reactor-netty-http-brave\":                                 \"io.projectreactor.netty\",\n\t\"reactor-netty-incubator-quic\":                             \"io.projectreactor.netty.incubator\",\n\t\"ratpack-base\":                                             \"io.ratpack\",\n\t\"ratpack-codahale-metrics\":                                 \"io.ratpack\",\n\t\"ratpack-config\":                                           \"io.ratpack\",\n\t\"ratpack-consul\":                                           \"io.ratpack\",\n\t\"ratpack-core\":                                             \"io.ratpack\",\n\t\"ratpack-dropwizard-metrics\":                               \"io.ratpack\",\n\t\"ratpack-exec\":                                             \"io.ratpack\",\n\t\"ratpack-func\":                                             \"io.ratpack\",\n\t\"ratpack-gradle\":                                           \"io.ratpack\",\n\t\"ratpack-groovy\":                                           \"io.ratpack\",\n\t\"ratpack-groovy-test\":                                      \"io.ratpack\",\n\t\"ratpack-gson\":                                             \"io.ratpack\",\n\t\"ratpack-guice\":                                            \"io.ratpack\",\n\t\"ratpack-h2\":                                               \"io.ratpack\",\n\t\"ratpack-handlebars\":                                       \"io.ratpack\",\n\t\"ratpack-hikari\":                                           \"io.ratpack\",\n\t\"ratpack-hystrix\":                                          \"io.ratpack\",\n\t\"ratpack-jackson\":                                          \"io.ratpack\",\n\t\"ratpack-jackson-guice\":                                    \"io.ratpack\",\n\t\"ratpack-jdbc-tx\":                                          \"io.ratpack\",\n\t\"ratpack-manual\":                                           \"io.ratpack\",\n\t\"ratpack-newrelic\":                                         \"io.ratpack\",\n\t\"ratpack-pac4j\":                                            \"io.ratpack\",\n\t\"ratpack-reactor\":                                          \"io.ratpack\",\n\t\"ratpack-remote\":                                           \"io.ratpack\",\n\t\"ratpack-remote-test\":                                      \"io.ratpack\",\n\t\"ratpack-retrofit2\":                                        \"io.ratpack\",\n\t\"ratpack-rocker\":                                           \"io.ratpack\",\n\t\"ratpack-rx\":                                               \"io.ratpack\",\n\t\"ratpack-rx2\":                                              \"io.ratpack\",\n\t\"ratpack-session\":                                          \"io.ratpack\",\n\t\"ratpack-session-redis\":                                    \"io.ratpack\",\n\t\"ratpack-session-serialization-kryo\":                       \"io.ratpack\",\n\t\"ratpack-spring-boot\":                                      \"io.ratpack\",\n\t\"ratpack-spring-boot-starter\":                              \"io.ratpack\",\n\t\"ratpack-test\":                                             \"io.ratpack\",\n\t\"ratpack-thymeleaf\":                                        \"io.ratpack\",\n\t\"ratpack-thymeleaf3\":                                       \"io.ratpack\",\n\t\"graphiql-spring-boot-autoconfigure\":                       \"com.graphql-java\",\n\t\"graphiql-spring-boot-starter\":                             \"com.graphql-java\",\n\t\"graphql-java\":                                             \"com.graphql-java\",\n\t\"graphql-java-annotations\":                                 \"com.graphql-java\",\n\t\"graphql-java-extended-scalars\":                            \"com.graphql-java\",\n\t\"graphql-java-extended-validation\":                         \"com.graphql-java\",\n\t\"graphql-java-servlet\":                                     \"com.graphql-java\",\n\t\"graphql-java-spring-boot-starter-webflux\":                 \"com.graphql-java\",\n\t\"graphql-java-spring-boot-starter-webmvc\":                  \"com.graphql-java\",\n\t\"graphql-java-spring-webflux\":                              \"com.graphql-java\",\n\t\"graphql-java-spring-webmvc\":                               \"com.graphql-java\",\n\t\"graphql-java-tools\":                                       \"com.graphql-java\",\n\t\"graphql-rxjava\":                                           \"com.graphql-java\",\n\t\"graphql-spring-boot-autoconfigure\":                        \"com.graphql-java\",\n\t\"graphql-spring-boot-starter\":                              \"com.graphql-java\",\n\t\"graphql-spring-boot-starter-test\":                         \"com.graphql-java\",\n\t\"graphql-spring-boot-test\":                                 \"com.graphql-java\",\n\t\"graphql-spring-boot-test-autoconfigure\":                   \"com.graphql-java\",\n\t\"java-dataloader\":                                          \"com.graphql-java\",\n\t\"voyager-spring-boot-autoconfigure\":                        \"com.graphql-java\",\n\t\"voyager-spring-boot-starter\":                              \"com.graphql-java\",\n\t\"minio\":                                                    \"io.minio\",\n\t\"minio-admin\":                                              \"io.minio\",\n\t\"minio-java\":                                               \"io.minio\",\n\t\"commons-jelly\":                                            \"commons-jelly\",\n\t\"commons-jelly-avalon\":                                     \"commons-jelly\",\n\t\"commons-jelly-tags-ant\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-antlr\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-avalon\":                                \"commons-jelly\",\n\t\"commons-jelly-tags-bean\":                                  \"commons-jelly\",\n\t\"commons-jelly-tags-beanshell\":                             \"commons-jelly\",\n\t\"commons-jelly-tags-betwixt\":                               \"commons-jelly\",\n\t\"commons-jelly-tags-bsf\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-define\":                                \"commons-jelly\",\n\t\"commons-jelly-tags-dynabean\":                              \"commons-jelly\",\n\t\"commons-jelly-tags-email\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-fmt\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-html\":                                  \"commons-jelly\",\n\t\"commons-jelly-tags-http\":                                  \"commons-jelly\",\n\t\"commons-jelly-tags-interaction\":                           \"commons-jelly\",\n\t\"commons-jelly-tags-jaxme\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-jetty\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-jface\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-jms\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-jmx\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-jsl\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-junit\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-log\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-ojb\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-quartz\":                                \"commons-jelly\",\n\t\"commons-jelly-tags-regexp\":                                \"commons-jelly\",\n\t\"commons-jelly-tags-soap\":                                  \"commons-jelly\",\n\t\"commons-jelly-tags-sql\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-swing\":                                 \"commons-jelly\",\n\t\"commons-jelly-tags-swt\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-threads\":                               \"commons-jelly\",\n\t\"commons-jelly-tags-util\":                                  \"commons-jelly\",\n\t\"commons-jelly-tags-validate\":                              \"commons-jelly\",\n\t\"commons-jelly-tags-velocity\":                              \"commons-jelly\",\n\t\"commons-jelly-tags-xml\":                                   \"commons-jelly\",\n\t\"commons-jelly-tags-xmlunit\":                               \"commons-jelly\",\n\t\"groovy\":                                                   \"org.codehaus.groovy\",\n\t\"groovy-all\":                                               \"org.codehaus.groovy\",\n\t\"groovy-all-jdk14\":                                         \"org.codehaus.groovy\",\n\t\"groovy-all-minimal\":                                       \"org.codehaus.groovy\",\n\t\"groovy-all-tests\":                                         \"org.codehaus.groovy\",\n\t\"groovy-ant\":                                               \"org.codehaus.groovy\",\n\t\"groovy-astbuilder\":                                        \"org.codehaus.groovy\",\n\t\"groovy-backports-compat23\":                                \"org.codehaus.groovy\",\n\t\"groovy-binary\":                                            \"org.codehaus.groovy\",\n\t\"groovy-bom\":                                               \"org.codehaus.groovy\",\n\t\"groovy-bsf\":                                               \"org.codehaus.groovy\",\n\t\"groovy-cli-commons\":                                       \"org.codehaus.groovy\",\n\t\"groovy-cli-picocli\":                                       \"org.codehaus.groovy\",\n\t\"groovy-console\":                                           \"org.codehaus.groovy\",\n\t\"groovy-datetime\":                                          \"org.codehaus.groovy\",\n\t\"groovy-dateutil\":                                          \"org.codehaus.groovy\",\n\t\"groovy-docgenerator\":                                      \"org.codehaus.groovy\",\n\t\"groovy-eclipse-batch\":                                     \"org.codehaus.groovy\",\n\t\"groovy-eclipse-compiler\":                                  \"org.codehaus.groovy\",\n\t\"groovy-groovydoc\":                                         \"org.codehaus.groovy\",\n\t\"groovy-groovysh\":                                          \"org.codehaus.groovy\",\n\t\"groovy-jaxb\":                                              \"org.codehaus.groovy\",\n\t\"groovy-jdk14\":                                             \"org.codehaus.groovy\",\n\t\"groovy-jmx\":                                               \"org.codehaus.groovy\",\n\t\"groovy-json\":                                              \"org.codehaus.groovy\",\n\t\"groovy-json-direct\":                                       \"org.codehaus.groovy\",\n\t\"groovy-jsr223\":                                            \"org.codehaus.groovy\",\n\t\"groovy-macro\":                                             \"org.codehaus.groovy\",\n\t\"groovy-nio\":                                               \"org.codehaus.groovy\",\n\t\"groovy-servlet\":                                           \"org.codehaus.groovy\",\n\t\"groovy-sql\":                                               \"org.codehaus.groovy\",\n\t\"groovy-swing\":                                             \"org.codehaus.groovy\",\n\t\"groovy-templates\":                                         \"org.codehaus.groovy\",\n\t\"groovy-test\":                                              \"org.codehaus.groovy\",\n\t\"groovy-test-junit5\":                                       \"org.codehaus.groovy\",\n\t\"groovy-testng\":                                            \"org.codehaus.groovy\",\n\t\"groovy-tests-vm8\":                                         \"org.codehaus.groovy\",\n\t\"groovy-xml\":                                               \"org.codehaus.groovy\",\n\t\"groovy-xmlrpc\":                                            \"org.codehaus.groovy\",\n\t\"groovy-yaml\":                                              \"org.codehaus.groovy\",\n\t\"kafka-clients\":                                            \"org.apache.kafka\",\n\t\"kafka-examples\":                                           \"org.apache.kafka\",\n\t\"kafka-group-coordinator\":                                  \"org.apache.kafka\",\n\t\"kafka-hadoop-consumer\":                                    \"org.apache.kafka\",\n\t\"kafka-hadoop-producer\":                                    \"org.apache.kafka\",\n\t\"kafka-java-examples\":                                      \"org.apache.kafka\",\n\t\"kafka-log4j-appender\":                                     \"org.apache.kafka\",\n\t\"kafka-metadata\":                                           \"org.apache.kafka\",\n\t\"kafka-perf_2.10\":                                          \"org.apache.kafka\",\n\t\"kafka-perf_2.8.0\":                                         \"org.apache.kafka\",\n\t\"kafka-perf_2.8.2\":                                         \"org.apache.kafka\",\n\t\"kafka-perf_2.9.1\":                                         \"org.apache.kafka\",\n\t\"kafka-perf_2.9.2\":                                         \"org.apache.kafka\",\n\t\"kafka-raft\":                                               \"org.apache.kafka\",\n\t\"kafka-server-common\":                                      \"org.apache.kafka\",\n\t\"kafka-shell\":                                              \"org.apache.kafka\",\n\t\"kafka-storage\":                                            \"org.apache.kafka\",\n\t\"kafka-storage-api\":                                        \"org.apache.kafka\",\n\t\"kafka-streams\":                                            \"org.apache.kafka\",\n\t\"kafka-streams-examples\":                                   \"org.apache.kafka\",\n\t\"kafka-streams-scala_2.11\":                                 \"org.apache.kafka\",\n\t\"kafka-streams-scala_2.12\":                                 \"org.apache.kafka\",\n\t\"kafka-streams-scala_2.13\":                                 \"org.apache.kafka\",\n\t\"kafka-streams-test-utils\":                                 \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-0100\":                  \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-0101\":                  \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-0102\":                  \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-0110\":                  \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-10\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-11\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-20\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-21\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-22\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-23\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-24\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-25\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-26\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-27\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-28\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-30\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-31\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-32\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-33\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-34\":                    \"org.apache.kafka\",\n\t\"kafka-streams-upgrade-system-tests-35\":                    \"org.apache.kafka\",\n\t\"kafka-tools\":                                              \"org.apache.kafka\",\n\t\"kafka-tools-api\":                                          \"org.apache.kafka\",\n\t\"kafka_2.10\":                                               \"org.apache.kafka\",\n\t\"kafka_2.11\":                                               \"org.apache.kafka\",\n\t\"kafka_2.12\":                                               \"org.apache.kafka\",\n\t\"kafka_2.13\":                                               \"org.apache.kafka\",\n\t\"kafka_2.8.0\":                                              \"org.apache.kafka\",\n\t\"kafka_2.8.2\":                                              \"org.apache.kafka\",\n\t\"kafka_2.9.1\":                                              \"org.apache.kafka\",\n\t\"kafka_2.9.2\":                                              \"org.apache.kafka\",\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/java_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_productsFromArtifactAndGroupIDs(t *testing.T) {\n\ttests := []struct {\n\t\tgroupIDs   []string\n\t\tartifactID string\n\t\texpected   []string\n\t}{\n\t\t{\n\t\t\tgroupIDs:   []string{\"org.sonatype.nexus\"},\n\t\t\tartifactID: \"nexus-extender\",\n\t\t\texpected:   []string{\"nexus\", \"nexus-extender\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs: []string{\"org.sonatype.nexus\"},\n\t\t\texpected: []string{\"nexus\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"org.jenkins-ci.plugins\"},\n\t\t\tartifactID: \"ant\",\n\t\t\texpected:   []string{\"ant\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"org.jenkins-ci.plugins\"},\n\t\t\tartifactID: \"antisamy-markup-formatter\",\n\t\t\texpected:   []string{\"antisamy-markup-formatter\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"io.jenkins.plugins\"},\n\t\t\tartifactID: \"aws-global-configuration\",\n\t\t\texpected:   []string{\"aws-global-configuration\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"com.cloudbees.jenkins.plugins\"},\n\t\t\tartifactID: \"cloudbees-servicenow-jenkins-plugin\",\n\t\t\texpected:   []string{\"cloudbees-servicenow-jenkins-plugin\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"com.atlassian.confluence.plugins\"},\n\t\t\tartifactID: \"confluence-mobile-plugin\",\n\t\t\texpected:   []string{\"confluence-mobile-plugin\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"com.atlassian.confluence.plugins\"},\n\t\t\tartifactID: \"confluence-view-file-macro\",\n\t\t\texpected:   []string{\"confluence-view-file-macro\"},\n\t\t},\n\t\t{\n\t\t\tgroupIDs:   []string{\"com.google.guava\"},\n\t\t\tartifactID: \"failureaccess\",\n\t\t\texpected:   []string{\"failureaccess\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.groupIDs, \",\")+\":\"+test.artifactID, func(t *testing.T) {\n\t\t\tactual := productsFromArtifactAndGroupIDs(test.artifactID, test.groupIDs)\n\t\t\tassert.ElementsMatch(t, test.expected, actual, \"different products\")\n\t\t})\n\t}\n}\n\nfunc Test_candidateProductsForJava(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"duplicate groupID in artifactID field\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID:    \"org.sonatype.nexus\",\n\t\t\t\t\t\tArtifactID: \"org.sonatype.nexus\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"nexus\"},\n\t\t},\n\t\t{\n\t\t\tname: \"detect groupID-like value in artifactID field\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tArtifactID: \"org.sonatype.nexus\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"nexus\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := candidateProductsForJava(test.pkg)\n\t\t\tassert.ElementsMatch(t, test.expected, actual, \"different products\")\n\t\t})\n\t}\n}\n\nfunc Test_vendorsFromGroupIDs(t *testing.T) {\n\ttests := []struct {\n\t\tgroupID  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tgroupID:  \"org.sonatype.nexus\",\n\t\t\texpected: []string{\"sonatype\", \"nexus\"},\n\t\t},\n\t\t{\n\t\t\tgroupID:  \"org.jenkins-ci.plugins\",\n\t\t\texpected: []string{\"jenkins-ci\"},\n\t\t},\n\t\t{\n\t\t\tgroupID:  \"io.jenkins.plugins\",\n\t\t\texpected: []string{\"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tgroupID:  \"com.cloudbees.jenkins.plugins\",\n\t\t\texpected: []string{\"cloudbees\", \"jenkins\"},\n\t\t},\n\t\t{\n\t\t\tgroupID:  \"com.atlassian.confluence.plugins\",\n\t\t\texpected: []string{\"atlassian\", \"confluence\"},\n\t\t},\n\t\t{\n\t\t\tgroupID:  \"com.google.guava\",\n\t\t\texpected: []string{\"google\", \"guava\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.groupID, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, append(test.expected, test.groupID), vendorsFromGroupIDs([]string{test.groupID}).values(), \"different vendors\")\n\t\t})\n\t}\n}\n\nfunc Test_groupIDsFromJavaPackage(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tpkg     pkg.Package\n\t\texpects []string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"io.jenkins-ci.plugin.thing;version='[2,3)'\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"io.jenkins-ci.plugin.thing\"},\n\t\t},\n\t\t{\n\t\t\tname: \"clean # suffixes\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tGroupID: \"org.elasticsearch.plugin#parent-join;6.8.15\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"org.elasticsearch.plugin\"},\n\t\t},\n\t\t{\n\t\t\tname: \"from artifactID\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tArtifactID: \"io.jenkins-ci.plugin.thing; version='[2,3)' ; org.something.else\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"io.jenkins-ci.plugin.thing\"},\n\t\t},\n\t\t{\n\t\t\tname: \"groupId correction properly applied\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Automatic-Module-Name\",\n\t\t\t\t\t\t\t\tValue: \"org.lz4.java\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"org.lz4\"},\n\t\t},\n\t\t{\n\t\t\tname: \"from main Extension-Name field\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Extension-Name\",\n\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.thing\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"io.jenkins-ci.plugin.thing\"},\n\t\t},\n\t\t{\n\t\t\tname: \"from named section Extension-Name field\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\t\t\tValue: \"section\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Extension-Name\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.thing\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"io.jenkins-ci.plugin.thing\"},\n\t\t},\n\t\t{\n\t\t\tname: \"from main field - tier 1\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t// positive cases\n\t\t\t\t\t\t\t// tier 1\n\t\t\t\t\t\t\t{Key: \"Extension-Name\", Value: \"io.jenkins-ci.plugin.1\"},\n\t\t\t\t\t\t\t{Key: \"Specification-Vendor\", Value: \"io.jenkins-ci.plugin.2\"},\n\t\t\t\t\t\t\t{Key: \"Implementation-Vendor\", Value: \"io.jenkins-ci.plugin.3\"},\n\t\t\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"io.jenkins-ci.plugin.4\"},\n\t\t\t\t\t\t\t{Key: \"Implementation-Vendor-Id\", Value: \"io.jenkins-ci.plugin.5\"},\n\t\t\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"io.jenkins-ci.plugin.6\"},\n\t\t\t\t\t\t\t{Key: \"Bundle-Activator\", Value: \"io.jenkins-ci.plugin.7\"},\n\t\t\t\t\t\t\t// tier 2\n\t\t\t\t\t\t\t{Key: \"Automatic-Module-Name\", Value: \"io.jenkins-ci.plugin.8\"},\n\t\t\t\t\t\t\t{Key: \"Main-Class\", Value: \"io.jenkins-ci.plugin.9\"},\n\t\t\t\t\t\t\t{Key: \"Package\", Value: \"io.jenkins-ci.plugin.10\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\n\t\t\t\t\"io.jenkins-ci.plugin.1\",\n\t\t\t\t\"io.jenkins-ci.plugin.2\",\n\t\t\t\t\"io.jenkins-ci.plugin.3\",\n\t\t\t\t\"io.jenkins-ci.plugin.4\",\n\t\t\t\t\"io.jenkins-ci.plugin.5\",\n\t\t\t\t\"io.jenkins-ci.plugin.6\",\n\t\t\t\t\"io.jenkins-ci.plugin.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from main field - tier 2\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t// positive cases\n\t\t\t\t\t\t\t{Key: \"Automatic-Module-Name\", Value: \"io.jenkins-ci.plugin.8\"},\n\t\t\t\t\t\t\t{Key: \"Main-Class\", Value: \"io.jenkins-ci.plugin.9\"},\n\t\t\t\t\t\t\t{Key: \"Package\", Value: \"io.jenkins-ci.plugin.10\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\n\t\t\t\t\"io.jenkins-ci.plugin.8\",\n\t\t\t\t\"io.jenkins-ci.plugin.9\",\n\t\t\t\t\"io.jenkins-ci.plugin.10\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from main field - negative cases\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t// negative cases\n\t\t\t\t\t\t\t{Key: \"Extension-Name\", Value: \"not.a-group.id\"},\n\t\t\t\t\t\t\t{Key: \"bogus\", Value: \"io.jenkins-ci.plugin.please-dont-find-me\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"from named section field - tier 1\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\t\t\tValue: \"section\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// positive cases\n\t\t\t\t\t\t\t\t// tier 1\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Extension-Name\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.1\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Specification-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.2\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.3\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Bundle-SymbolicName\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.4\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor-Id\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.5\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Title\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.6\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Bundle-Activator\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.7\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// tier 2\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Automatic-Module-Name\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.8\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Main-Class\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.9\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Package\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.10\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\n\t\t\t\t\"io.jenkins-ci.plugin.1\",\n\t\t\t\t\"io.jenkins-ci.plugin.2\",\n\t\t\t\t\"io.jenkins-ci.plugin.3\",\n\t\t\t\t\"io.jenkins-ci.plugin.4\",\n\t\t\t\t\"io.jenkins-ci.plugin.5\",\n\t\t\t\t\"io.jenkins-ci.plugin.6\",\n\t\t\t\t\"io.jenkins-ci.plugin.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"from named section field - negative cases\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\t\t\tValue: \"section\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Extension-Name\",\n\t\t\t\t\t\t\t\t\tValue: \"not.a-group.id\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"bogus\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.please-dont-find-me\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"no manifest or pom info\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{},\n\t\t\t},\n\t\t\texpects: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"no java info\",\n\t\t\tpkg:     pkg.Package{},\n\t\t\texpects: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expects, GroupIDsFromJavaPackage(test.pkg))\n\t\t})\n\t}\n}\n\nfunc Test_artifactIDFromJavaPackage(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tpkg     pkg.Package\n\t\texpects string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tArtifactID: \"cloudbees-installation-manager\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: \"cloudbees-installation-manager\",\n\t\t},\n\t\t{\n\t\t\tname: \"ignore groupID-like things\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tArtifactID: \"io.jenkins-ci.plugin.thing\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: \"\",\n\t\t},\n\t\t{\n\t\t\tname:    \"no java info\",\n\t\t\tpkg:     pkg.Package{},\n\t\t\texpects: \"\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expects, artifactIDFromJavaPackage(test.pkg))\n\t\t})\n\t}\n}\n\nfunc Test_vendorsFromJavaManifestNames(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tpkg     pkg.Package\n\t\texpects []string\n\t}{\n\t\t{\n\t\t\tname: \"from manifest named section fields\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\t\t\tValue: \"section\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// positive cases\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Specification-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"Alex Goodman\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"William Goodman\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: []string{\"alex_goodman\", \"william_goodman\"},\n\t\t},\n\t\t{\n\t\t\tname: \"from manifest named section fields - negative cases\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\t\t\tValue: \"section\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// negative cases\n\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Specification-Vendor\",\n\t\t\t\t\t\t\t\t\tValue: \"io.jenkins-ci.plugin.thing\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Implementation-Vendor-ID\",\n\t\t\t\t\t\t\t\t\tValue: \"William Goodman\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpects: nil,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expects, vendorsFromJavaManifestNames(test.pkg).values())\n\t\t})\n\t}\n}\n\nfunc Test_groupIDsFromJavaManifest(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmanifest pkg.JavaManifest\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"spring-security-core\",\n\t\t\tmanifest: pkg.JavaManifest{},\n\t\t\texpected: []string{\"org.springframework.security\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"spring-web\",\n\t\t\tmanifest: pkg.JavaManifest{},\n\t\t\texpected: []string{\"org.springframework\"},\n\t\t},\n\t\t{\n\t\t\tname: \"spring-foo\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\tValue: \"org.foo\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"org.foo\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := groupIDsFromJavaManifest(test.name, &test.manifest)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/javascript.go",
    "content": "package cpegenerate\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc candidateVendorsForJavascript(p pkg.Package) fieldCandidateSet {\n\tif _, ok := p.Metadata.(pkg.NpmPackage); !ok {\n\t\treturn nil\n\t}\n\n\tvendors := newFieldCandidateSet()\n\tmetadata, ok := p.Metadata.(pkg.NpmPackage)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif metadata.URL != \"\" {\n\t\tvendors.union(candidateVendorsFromURL(metadata.URL))\n\t}\n\n\tif metadata.Homepage != \"\" {\n\t\tvendors.union(candidateVendorsFromURL(metadata.Homepage))\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/pe_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestGhostscriptPEGeneratesArtifexCPE(t *testing.T) {\n\t// construct a BinaryPkg with PE metadata resembling Ghostscript\n\tp := pkg.Package{\n\t\tName:    \"GPL Ghostscript\",\n\t\tVersion: \"9.54.0\",\n\t\tType:    pkg.BinaryPkg,\n\t\tMetadata: pkg.PEBinary{\n\t\t\tVersionResources: pkg.KeyValues{\n\t\t\t\t{Key: \"CompanyName\", Value: \"Artifex Software, Inc.\"},\n\t\t\t\t{Key: \"ProductName\", Value: \"GPL Ghostscript\"},\n\t\t\t\t{Key: \"FileDescription\", Value: \"Ghostscript Interpreter\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tcpes := FromPackageAttributes(p)\n\tif len(cpes) == 0 {\n\t\tt.Fatalf(\"expected at least one CPE, got none\")\n\t}\n\n\tfound := false\n\tfor _, c := range cpes {\n\t\tif c.Attributes.Vendor == \"artifex\" && c.Attributes.Product == \"ghostscript\" && c.Attributes.Version == p.Version {\n\t\t\tfound = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif !found {\n\t\tt.Fatalf(\"expected to find CPE with vendor 'artifex' and product 'ghostscript' for Ghostscript PE binary; got: %+v\", cpes)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/python.go",
    "content": "package cpegenerate\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc additionalVendorsForPython(v string) (vendors []string) {\n\tif !strings.HasSuffix(v, \"project\") {\n\t\tvendors = append(vendors, fmt.Sprintf(\"%sproject\", v), fmt.Sprintf(\"%s_project\", v))\n\t}\n\n\treturn vendors\n}\n\nfunc candidateVendorsForPython(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.PythonPackage)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tvendors := newFieldCandidateSet()\n\n\tif metadata.Author != \"\" {\n\t\tname := normalizePersonName(metadata.Author)\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                       name,\n\t\t\tdisallowSubSelections:       true,\n\t\t\tdisallowDelimiterVariations: true,\n\t\t})\n\n\t\tfor _, v := range additionalVendorsForPython(name) {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                       v,\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\t\t}\n\t}\n\n\tif metadata.AuthorEmail != \"\" {\n\t\tname := normalizePersonName(stripEmailSuffix(metadata.AuthorEmail))\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                 name,\n\t\t\tdisallowSubSelections: true,\n\t\t})\n\n\t\tfor _, v := range additionalVendorsForPython(name) {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                       v,\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/rpm.go",
    "content": "package cpegenerate\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc candidateVendorsForRPM(p pkg.Package) fieldCandidateSet {\n\tvendors := newFieldCandidateSet()\n\n\tswitch m := p.Metadata.(type) {\n\tcase pkg.RpmDBEntry:\n\t\tif m.Vendor != \"\" {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                 normalizeName(m.Vendor),\n\t\t\t\tdisallowSubSelections: true,\n\t\t\t})\n\t\t}\n\tcase pkg.RpmArchive:\n\t\tif m.Vendor != \"\" {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                 normalizeName(m.Vendor),\n\t\t\t\tdisallowSubSelections: true,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/ruby.go",
    "content": "package cpegenerate\n\nimport \"github.com/anchore/syft/syft/pkg\"\n\nfunc candidateVendorsForRuby(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.RubyGemspec)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tvendors := newFieldCandidateSet()\n\n\tfor _, author := range metadata.Authors {\n\t\t// author could be a name or an email\n\t\tvendors.add(fieldCandidate{\n\t\t\tvalue:                 normalizePersonName(stripEmailSuffix(author)),\n\t\t\tdisallowSubSelections: true,\n\t\t})\n\t}\n\n\tif metadata.Homepage != \"\" {\n\t\tvendors.union(candidateVendorsFromURL(metadata.Homepage))\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/utils.go",
    "content": "package cpegenerate\n\nimport \"strings\"\n\nfunc stripEmailSuffix(email string) string {\n\treturn strings.Split(email, \"@\")[0]\n}\n\nfunc normalizePersonName(name string) string {\n\tname = strings.TrimSpace(strings.ToLower(name))\n\tfor _, value := range []string{\"-\", \" \", \".\"} {\n\t\tname = strings.ReplaceAll(name, value, \"_\")\n\t}\n\treturn strings.TrimPrefix(name, \"the_\")\n}\n\nfunc normalizeName(name string) string {\n\tname = strings.Split(name, \",\")[0]\n\tname = strings.TrimSpace(strings.ToLower(name))\n\treturn strings.ReplaceAll(name, \" \", \"\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/utils_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_normalizeName(t *testing.T) {\n\ttests := []struct {\n\t\tinput   string\n\t\texpects string\n\t}{\n\t\t{\n\t\t\t// note: extra spaces\n\t\t\tinput:   \"  Alex Goodman  \",\n\t\t\texpects: \"alexgoodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"Alex Goodman, LLC\",\n\t\t\texpects: \"alexgoodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"alex.goodman\",\n\t\t\texpects: \"alex.goodman\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.input, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expects, normalizeName(test.input))\n\t\t})\n\t}\n}\n\nfunc Test_normalizePersonName(t *testing.T) {\n\ttests := []struct {\n\t\tinput   string\n\t\texpects string\n\t}{\n\t\t{\n\t\t\t// note: extra spaces\n\t\t\tinput:   \"  Alex Goodman  \",\n\t\t\texpects: \"alex_goodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"Alex Goodman\",\n\t\t\texpects: \"alex_goodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"Alex.Goodman\",\n\t\t\texpects: \"alex_goodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"Alex.Goodman\",\n\t\t\texpects: \"alex_goodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"AlexGoodman\",\n\t\t\texpects: \"alexgoodman\",\n\t\t},\n\t\t{\n\t\t\tinput:   \"The Apache Software Foundation\",\n\t\t\texpects: \"apache_software_foundation\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.input, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expects, normalizePersonName(test.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/vendors_from_url.go",
    "content": "package cpegenerate\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\nvar (\n\turlPrefixToVendors = map[string][]string{\n\t\t\"https://www.gnu.org/\":         {\"gnu\"},\n\t\t\"https://developer.gnome.org/\": {\"gnome\"},\n\t\t\"https://www.ruby-lang.org/\":   {\"ruby-lang\"},\n\t\t\"https://llvm.org/\":            {\"llvm\"},\n\t\t\"https://www.isc.org/\":         {\"isc\"},\n\t\t\"https://musl.libc.org/\":       {\"musl-libc\"},\n\t\t\"https://www.mozilla.org/\":     {\"mozilla\"},\n\t\t\"https://www.x.org/\":           {\"x.org\"},\n\t\t\"https://w1.fi/\":               {\"w1.fi\"},\n\t}\n\n\tvendorExtractionPatterns = []*regexp.Regexp{\n\t\tregexp.MustCompile(`^(?:https|http|git)://(?:github|gitlab)\\.com/(?P<vendor>[\\w\\-]*?)/.*$`),\n\t}\n)\n\nfunc candidateVendorsFromURL(url string) fieldCandidateSet {\n\tvendors := newFieldCandidateSet()\n\n\tfor urlPrefix, additionalVendors := range urlPrefixToVendors {\n\t\tif strings.HasPrefix(url, urlPrefix) {\n\t\t\tfor _, v := range additionalVendors {\n\t\t\t\tvendors.add(fieldCandidate{\n\t\t\t\t\tvalue:                       v,\n\t\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t\t})\n\n\t\t\t\treturn vendors\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, p := range vendorExtractionPatterns {\n\t\tgroups := internal.MatchNamedCaptureGroups(p, url)\n\n\t\tif v, ok := groups[\"vendor\"]; ok {\n\t\t\tvendors.add(fieldCandidate{\n\t\t\t\tvalue:                       v,\n\t\t\t\tdisallowSubSelections:       true,\n\t\t\t\tdisallowDelimiterVariations: true,\n\t\t\t})\n\n\t\t\treturn vendors\n\t\t}\n\t}\n\n\treturn vendors\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/vendors_from_url_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_candidateVendorsFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\turl      string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\turl:      \"\",\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname:     \"no known vendors\",\n\t\t\turl:      \"https://something-unknown.com/126374623876/12345\",\n\t\t\texpected: []string{},\n\t\t},\n\t\t{\n\t\t\tname:     \"gnu vendor from url\",\n\t\t\turl:      \"https://www.gnu.org/software/make\",\n\t\t\texpected: []string{\"gnu\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"github username as vendor\",\n\t\t\turl:      \"https://github.com/armadillo/abcxyz-12345\",\n\t\t\texpected: []string{\"armadillo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"github username with - as vendor\",\n\t\t\turl:      \"https://github.com/1234-abc-xyz/hello\",\n\t\t\texpected: []string{\"1234-abc-xyz\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"gitlab username as vendor\",\n\t\t\turl:      \"https://gitlab.com/armadillo/abcxyz-12345\",\n\t\t\texpected: []string{\"armadillo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"gitlab username with - as vendor\",\n\t\t\turl:      \"https://gitlab.com/1234-abc-xyz/hello\",\n\t\t\texpected: []string{\"1234-abc-xyz\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"github username as vendor from longer url\",\n\t\t\turl:      \"https://github.com/armadillo/abcxyz-12345/a/b/c/d/e/f/g\",\n\t\t\texpected: []string{\"armadillo\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"github username from git://\",\n\t\t\turl:      \"git://github.com/abc/xyz.git\",\n\t\t\texpected: []string{\"abc\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"github username from http://\",\n\t\t\turl:      \"http://github.com/abc/xyz.git\",\n\t\t\texpected: []string{\"abc\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateVendorsFromURL(test.url).uniqueValues(), \"different vendors\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/wordpress.go",
    "content": "package cpegenerate\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\tvendorFromURLRegexp = regexp.MustCompile(`^https?://(www.)?(?P<vendor>.+)\\.\\w/?`)\n)\n\nfunc candidateVendorsForWordpressPlugin(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.WordpressPluginEntry)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tvendors := newFieldCandidateSet()\n\n\tif metadata.Author != \"\" {\n\t\tvendors.addValue(strings.ToLower(metadata.Author))\n\t}\n\n\tif metadata.AuthorURI != \"\" {\n\t\tmatchMap := internal.MatchNamedCaptureGroups(vendorFromURLRegexp, metadata.AuthorURI)\n\t\tif vendor, ok := matchMap[\"vendor\"]; ok && vendor != \"\" {\n\t\t\tvendors.addValue(strings.ToLower(vendor))\n\t\t}\n\t}\n\n\tif len(vendors) == 0 {\n\t\t// add plugin_name + _project as a vendor if no Author URI found\n\t\tvendors.addValue(fmt.Sprintf(\"%s_project\", normalizeWordpressPluginName(p.Name)))\n\t}\n\n\treturn vendors\n}\n\nfunc candidateProductsForWordpressPlugin(p pkg.Package) fieldCandidateSet {\n\tmetadata, ok := p.Metadata.(pkg.WordpressPluginEntry)\n\tif !ok {\n\t\treturn nil\n\t}\n\tproducts := newFieldCandidateSet()\n\n\tproducts.addValue(normalizeWordpressPluginName(p.Name))\n\tproducts.addValue(normalizeWordpressPluginName(metadata.PluginInstallDirectory))\n\n\treturn products\n}\n\nfunc normalizeWordpressPluginName(name string) string {\n\tname = strings.TrimSpace(strings.ToLower(name))\n\tfor _, value := range []string{\" \"} {\n\t\tname = strings.ReplaceAll(name, value, \"_\")\n\t}\n\treturn name\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/cpegenerate/wordpress_test.go",
    "content": "package cpegenerate\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_candidateVendorsForWordpressPlugin(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"Akismet Anti-spam: Spam Protection\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"Akismet Anti-spam: Spam Protection\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"akismet\",\n\t\t\t\t\tAuthor:                 \"Automattic - Anti-spam Team\",\n\t\t\t\t\tAuthorURI:              \"https://automattic.com/wordpress-plugins/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"automattic - anti-spam team\", \"automattic\"},\n\t\t},\n\t\t{\n\t\t\tname: \"All-in-One WP Migration\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"All-in-One WP Migration\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"all-in-one-wp-migration\",\n\t\t\t\t\tAuthorURI:              \"https://servmask.com\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"servmask\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Booking Ultra Pro Appointments Booking Calendar\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"Booking Ultra Pro Appointments Booking Calendar\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"booking-ultra-pro\",\n\t\t\t\t\tAuthor:                 \"Booking Ultra Pro\",\n\t\t\t\t\tAuthorURI:              \"https://bookingultrapro.com/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"booking ultra pro\", \"bookingultrapro\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Coming Soon Chop Chop\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"cc-coming-soon\",\n\t\t\t\t\tAuthor:                 \"Chop-Chop.org\",\n\t\t\t\t\tAuthorURI:              \"https://www.chop-chop.org\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"chop-chop.org\", \"chop-chop\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Access Code Feeder\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"Access Code Feeder\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"access-code-feeder\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t// When a plugin as no `Author URI` use plugin_name + _project as a vendor\n\t\t\texpected: []string{\"access_code_feeder_project\"},\n\t\t},\n\t\t{\n\t\t\tname: \"WP Coder\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"WP Coder\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"wp-coder\",\n\t\t\t\t\tAuthor:                 \"Wow-Company\",\n\t\t\t\t\tAuthorURI:              \"https://wow-estore.com/\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t// found in the wild https://plugins.trac.wordpress.org/browser/wp-coder/tags/2.5.1/wp-coder.php\n\t\t\texpected: []string{\n\t\t\t\t\"wow-company\", // this is the correct answer relative to CPEs registered on CVE-2021-25053\n\t\t\t\t\"wow-estore\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := candidateVendorsForWordpressPlugin(test.pkg).uniqueValues()\n\t\t\tassert.ElementsMatch(t, test.expected, actual, \"different vendors\")\n\t\t})\n\t}\n}\n\nfunc Test_candidateProductsWordpressPlugin(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkg      pkg.Package\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"All-in-One WP Migration\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"All-in-One WP Migration\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"all-in-one-wp-migration\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"all-in-one_wp_migration\", \"all-in-one-wp-migration\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Akismet Anti-spam: Spam Protection\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"Akismet Anti-spam: Spam Protection\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"akismet\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"akismet_anti-spam:_spam_protection\", \"akismet\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Access Code Feeder\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"Access Code Feeder\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"access-code-feeder\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"access_code_feeder\", \"access-code-feeder\"},\n\t\t},\n\t\t{\n\t\t\tname: \"CampTix Event Ticketing\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName: \"CampTix Event Ticketing\",\n\t\t\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\t\t\tPluginInstallDirectory: \"camptix\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\"camptix_event_ticketing\", \"camptix\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.ElementsMatch(t, test.expected, candidateProductsForWordpressPlugin(test.pkg).uniqueValues(), \"different products\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/dependency/resolver.go",
    "content": "package dependency\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// Specification holds strings that indicate abstract resources that a package provides for other packages and\n// requires for itself. These strings can represent anything from file paths, package names, or any other concept\n// that is useful for dependency resolution within that packing ecosystem.\ntype Specification struct {\n\tProvidesRequires\n\n\t// Variants allows for specifying multiple sets of provides/requires for a single package. This is useful\n\t// in cases when you have conditional optional dependencies for a package.\n\tVariants []ProvidesRequires\n}\n\ntype ProvidesRequires struct {\n\t// Provides holds a list of abstract resources that this package provides for other packages.\n\tProvides []string\n\n\t// Requires holds a list of abstract resources that this package requires from other packages.\n\tRequires []string\n}\n\n// Specifier is a function that takes a package and extracts a Specification, describing resources\n// the package provides and needs.\ntype Specifier func(pkg.Package) Specification\n\n// Processor returns a generic processor that will resolve relationships between packages based on the dependency claims.\nfunc Processor(s Specifier) generic.Processor {\n\treturn func(pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\t\t// we can't move forward unless all package IDs have been set\n\t\tfor idx, p := range pkgs {\n\t\t\tid := p.ID()\n\t\t\tif id == \"\" {\n\t\t\t\tp.SetID()\n\t\t\t\tpkgs[idx] = p\n\t\t\t}\n\t\t}\n\n\t\trels = append(rels, Resolve(s, pkgs)...)\n\t\treturn pkgs, rels, err\n\t}\n}\n\n// Resolve will create relationships between packages based on the dependency claims of each package.\nfunc Resolve(specifier Specifier, pkgs []pkg.Package) (relationships []artifact.Relationship) {\n\tpkgsProvidingResource := make(map[string]internal.Set[artifact.ID])\n\n\tpkgsByID := make(map[artifact.ID]pkg.Package)\n\tspecsByPkg := make(map[artifact.ID][]ProvidesRequires)\n\n\tfor _, p := range pkgs {\n\t\tid := p.ID()\n\t\tpkgsByID[id] = p\n\t\tspecsByPkg[id] = allProvides(pkgsProvidingResource, id, specifier(p))\n\t}\n\n\tseen := strset.New()\n\tfor _, dependantPkg := range pkgs {\n\t\tspecs := specsByPkg[dependantPkg.ID()]\n\t\tfor _, spec := range specs {\n\t\t\tfor _, resource := range deduplicate(spec.Requires) {\n\t\t\t\tfor providingPkgID := range pkgsProvidingResource[resource] {\n\t\t\t\t\t// prevent creating duplicate relationships\n\t\t\t\t\tpairKey := string(providingPkgID) + \"-\" + string(dependantPkg.ID())\n\t\t\t\t\tif seen.Has(pairKey) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tprovidingPkg := pkgsByID[providingPkgID]\n\n\t\t\t\t\trelationships = append(relationships,\n\t\t\t\t\t\tartifact.Relationship{\n\t\t\t\t\t\t\tFrom: providingPkg,\n\t\t\t\t\t\t\tTo:   dependantPkg,\n\t\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\tseen.Add(pairKey)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn relationships\n}\n\nfunc allProvides(pkgsProvidingResource map[string]internal.Set[artifact.ID], id artifact.ID, spec Specification) []ProvidesRequires {\n\tprs := []ProvidesRequires{spec.ProvidesRequires}\n\tprs = append(prs, spec.Variants...)\n\n\tfor _, pr := range prs {\n\t\tfor _, resource := range deduplicate(pr.Provides) {\n\t\t\tif pkgsProvidingResource[resource] == nil {\n\t\t\t\tpkgsProvidingResource[resource] = internal.NewSet[artifact.ID]()\n\t\t\t}\n\t\t\tpkgsProvidingResource[resource].Add(id)\n\t\t}\n\t}\n\n\treturn prs\n}\n\nfunc deduplicate(ss []string) []string {\n\t// note: we sort the set such that multiple invocations of this function will be deterministic\n\tset := strset.New(ss...)\n\tlist := set.List()\n\tsort.Strings(list)\n\treturn list\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/dependency/resolver_test.go",
    "content": "package dependency\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_resolve(t *testing.T) {\n\ta := pkg.Package{\n\t\tName: \"a\",\n\t}\n\ta.SetID()\n\n\tb := pkg.Package{\n\t\tName: \"b\",\n\t}\n\tb.SetID()\n\n\tc := pkg.Package{\n\t\tName: \"c\",\n\t}\n\tc.SetID()\n\n\tsubjects := []pkg.Package{a, b, c}\n\n\ttests := []struct {\n\t\tname string\n\t\ts    Specifier\n\t\twant map[string][]string\n\t}{\n\t\t{\n\t\t\tname: \"find relationships between packages\",\n\t\t\ts: newSpecifierBuilder().\n\t\t\t\tWithProvides(a /* provides */, \"a-resource\").\n\t\t\t\tWithRequires(b /* requires */, \"a-resource\").\n\t\t\t\tSpecifier(),\n\t\t\twant: map[string][]string{\n\t\t\t\t\"b\": /* depends on */ {\"a\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"find relationships between packages with variants\",\n\t\t\ts: newSpecifierBuilder().\n\t\t\t\tWithProvides(a /* provides */, \"a-resource\").\n\t\t\t\tWithRequires(b /* requires */, \"a[variant]\").\n\t\t\t\tWithProvides(c /* provides */, \"c-resource\").\n\t\t\t\tWithVariant(a /* provides */, \"variant\" /* which requires */, \"c-resource\").\n\t\t\t\tSpecifier(),\n\t\t\twant: map[string][]string{\n\t\t\t\t\"b\":/* depends on */ {\"a\"},\n\t\t\t\t\"a\":/* depends on */ {\"c\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"deduplicates provider keys\",\n\t\t\ts: newSpecifierBuilder().\n\t\t\t\tWithProvides(a /* provides */, \"a-resource\", \"a-resource\", \"a-resource\").\n\t\t\t\tWithRequires(b /* requires */, \"a-resource\", \"a-resource\", \"a-resource\").\n\t\t\t\tSpecifier(),\n\t\t\twant: map[string][]string{\n\t\t\t\t\"b\": /* depends on */ {\"a\"},\n\t\t\t\t// note: we're NOT seeing:\n\t\t\t\t// \"b\": /* depends on */ {\"a\", \"a\", \"a\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"deduplicates crafted relationships\",\n\t\t\ts: newSpecifierBuilder().\n\t\t\t\tWithProvides(a /* provides */, \"a1-resource\", \"a2-resource\", \"a3-resource\").\n\t\t\t\tWithRequires(b /* requires */, \"a1-resource\", \"a2-resource\").\n\t\t\t\tSpecifier(),\n\t\t\twant: map[string][]string{\n\t\t\t\t\"b\": /* depends on */ {\"a\"},\n\t\t\t\t// note: we're NOT seeing:\n\t\t\t\t// \"b\": /* depends on */ {\"a\", \"a\"},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\trelationships := Resolve(tt.s, subjects)\n\t\t\tif d := cmp.Diff(tt.want, abstractRelationships(t, relationships)); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected relationships (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype specifierBuilder struct {\n\tprovides map[string][]string\n\trequires map[string][]string\n\tvariants map[string]map[string][]string\n}\n\nfunc newSpecifierBuilder() *specifierBuilder {\n\treturn &specifierBuilder{\n\t\tprovides: make(map[string][]string),\n\t\trequires: make(map[string][]string),\n\t\tvariants: make(map[string]map[string][]string),\n\t}\n}\n\nfunc (m *specifierBuilder) WithProvides(p pkg.Package, provides ...string) *specifierBuilder {\n\tm.provides[p.Name] = append(m.provides[p.Name], provides...)\n\treturn m\n}\n\nfunc (m *specifierBuilder) WithRequires(p pkg.Package, requires ...string) *specifierBuilder {\n\tm.requires[p.Name] = append(m.requires[p.Name], requires...)\n\treturn m\n}\n\nfunc (m *specifierBuilder) WithVariant(p pkg.Package, variantName string, requires ...string) *specifierBuilder {\n\tif _, ok := m.variants[p.Name]; !ok {\n\t\tm.variants[p.Name] = make(map[string][]string)\n\t}\n\tm.variants[p.Name][variantName] = append(m.variants[p.Name][variantName], requires...)\n\treturn m\n}\n\nfunc (m specifierBuilder) Specifier() Specifier {\n\treturn func(p pkg.Package) Specification {\n\t\tvar prs []ProvidesRequires\n\t\tfor variantName, requires := range m.variants[p.Name] {\n\t\t\tprs = append(prs, ProvidesRequires{\n\t\t\t\tProvides: []string{p.Name + \"[\" + variantName + \"]\"},\n\t\t\t\tRequires: requires,\n\t\t\t})\n\t\t}\n\n\t\treturn Specification{\n\t\t\tProvidesRequires: ProvidesRequires{\n\t\t\t\tProvides: m.provides[p.Name],\n\t\t\t\tRequires: m.requires[p.Name],\n\t\t\t},\n\t\t\tVariants: prs,\n\t\t}\n\t}\n}\n\nfunc abstractRelationships(t testing.TB, relationships []artifact.Relationship) map[string][]string {\n\tt.Helper()\n\n\tabstracted := make(map[string][]string)\n\tfor _, relationship := range relationships {\n\t\tfromPkg, ok := relationship.From.(pkg.Package)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\ttoPkg, ok := relationship.To.(pkg.Package)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t// we build this backwards since we use DependencyOfRelationship instead of DependsOn\n\t\tabstracted[toPkg.Name] = append(abstracted[toPkg.Name], fromPkg.Name)\n\t}\n\n\treturn abstracted\n}\n\nfunc Test_Processor(t *testing.T) {\n\ta := pkg.Package{\n\t\tName: \"a\",\n\t}\n\ta.SetID()\n\n\tb := pkg.Package{\n\t\tName: \"b\",\n\t}\n\tb.SetID()\n\n\tc := pkg.Package{\n\t\tName: \"c\",\n\t}\n\tc.SetID()\n\n\ttests := []struct {\n\t\tname         string\n\t\tsp           Specifier\n\t\tpkgs         []pkg.Package\n\t\trels         []artifact.Relationship\n\t\terr          error\n\t\twantPkgCount int\n\t\twantRelCount int\n\t\twantErr      assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"happy path preserves decorated values\",\n\t\t\tsp: newSpecifierBuilder().\n\t\t\t\tWithProvides(b, \"b-resource\").\n\t\t\t\tWithRequires(c, \"b-resource\").\n\t\t\t\tSpecifier(),\n\t\t\tpkgs: []pkg.Package{a, b, c},\n\t\t\trels: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   b,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\twantPkgCount: 3,\n\t\t\twantRelCount: 2, // original + new\n\t\t},\n\t\t{\n\t\t\tname: \"error from cataloger is propagated\",\n\t\t\tsp: newSpecifierBuilder().\n\t\t\t\tWithProvides(b, \"b-resource\").\n\t\t\t\tWithRequires(c, \"b-resource\").\n\t\t\t\tSpecifier(),\n\t\t\terr:  errors.New(\"surprise!\"),\n\t\t\tpkgs: []pkg.Package{a, b, c},\n\t\t\trels: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   b,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgCount: 3,\n\t\t\twantRelCount: 2, // original + new\n\t\t\twantErr:      assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\n\t\t\tgotPkgs, gotRels, err := Processor(tt.sp)(tt.pkgs, tt.rels, tt.err)\n\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Len(t, gotPkgs, tt.wantPkgCount)\n\t\t\tassert.Len(t, gotRels, tt.wantRelCount)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/find_licenses.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"path\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// RelativeToPackage searches for licenses in the same directory as primary evidence locations\n// on the package and returns the package with licenses set and ID reset if the package has no licenses already\nfunc RelativeToPackage(ctx context.Context, resolver file.Resolver, p pkg.Package) pkg.Package {\n\t// if licenses were already found, don't search for more\n\tif !p.Licenses.Empty() {\n\t\treturn p\n\t}\n\tvar out []pkg.License\n\tfor _, l := range p.Locations.ToUnorderedSlice() {\n\t\tif evidenceType, ok := l.Annotations[pkg.EvidenceAnnotationKey]; ok && evidenceType != pkg.PrimaryEvidenceAnnotation {\n\t\t\tcontinue\n\t\t}\n\t\t// search for license files relative to any primary evidence on the package\n\t\tout = append(out, FindRelativeToLocations(ctx, resolver, l)...)\n\t}\n\tif len(out) > 0 {\n\t\tp.Licenses = pkg.NewLicenseSet(out...)\n\t\tp.SetID()\n\t}\n\treturn p\n}\n\n// FindAtLocations creates License objects by reading license files directly the provided locations\nfunc FindAtLocations(ctx context.Context, resolver file.Resolver, locations ...file.Location) []pkg.License {\n\tvar out []pkg.License\n\tfor _, loc := range locations {\n\t\tout = append(out, readFromResolver(ctx, resolver, loc)...)\n\t}\n\treturn out\n}\n\n// FindAtPaths creates License objects by reading license files directly at the provided paths\nfunc FindAtPaths(ctx context.Context, resolver file.Resolver, paths ...string) []pkg.License {\n\tvar out []pkg.License\n\tfor _, p := range paths {\n\t\tlocs, err := resolver.FilesByPath(p)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", p).Trace(\"unable to resolve license path\")\n\t\t\tcontinue\n\t\t}\n\t\tfor _, loc := range locs {\n\t\t\tout = append(out, readFromResolver(ctx, resolver, loc)...)\n\t\t}\n\t}\n\treturn out\n}\n\n// FindInDirs creates License objects by searching for known license files in the provided directories\nfunc FindInDirs(ctx context.Context, resolver file.Resolver, dirs ...string) []pkg.License {\n\tvar out []pkg.License\n\tfor _, dir := range dirs {\n\t\tglob := path.Join(dir, \"*\") // only search in the directory\n\t\tout = append(out, FindByGlob(ctx, resolver, glob)...)\n\t}\n\treturn out\n}\n\n// FindRelativeToLocations creates License objects by searching for known license files relative to the provided locations, in the same directory path\nfunc FindRelativeToLocations(ctx context.Context, resolver file.Resolver, locations ...file.Location) []pkg.License {\n\tvar out []pkg.License\n\tfor _, location := range locations {\n\t\tdir := path.Dir(location.AccessPath)\n\t\tout = append(out, FindInDirs(ctx, resolver, dir)...)\n\t}\n\treturn out\n}\n\n// FindByGlob creates License objects by searching for license files with the provided glob.\n// only file names which match licenses.LowerFileNames() case-insensitive will be included,\n// so a recursive glob search such as: `<path>/**/*` will only attempt to read LICENSE files it finds, for example\nfunc FindByGlob(ctx context.Context, resolver file.Resolver, glob string) []pkg.License {\n\tlocs, err := resolver.FilesByGlob(glob)\n\tif err != nil {\n\t\tlog.WithFields(\"glob\", glob, \"error\", err).Debug(\"error searching for license files\")\n\t\treturn nil\n\t}\n\tvar out []pkg.License\n\tfor _, l := range locs {\n\t\tfileName := path.Base(l.Path())\n\t\tif IsLicenseFile(fileName) {\n\t\t\tout = append(out, readFromResolver(ctx, resolver, l)...)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc NewFromValues(ctx context.Context, locations []file.Location, values ...string) []pkg.License {\n\tif len(locations) == 0 {\n\t\treturn pkg.NewLicensesFromValuesWithContext(ctx, values...)\n\t}\n\n\tvar out []pkg.License\n\tfor _, value := range values {\n\t\tif value == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, pkg.NewLicenseFromLocationsWithContext(ctx, value, locations...))\n\t}\n\n\treturn out\n}\n\nfunc readFromResolver(ctx context.Context, resolver file.Resolver, location file.Location) []pkg.License {\n\tmetadataContents, err := resolver.FileContentsByLocation(location)\n\tif err != nil || metadataContents == nil {\n\t\tlog.WithFields(\"error\", err, \"path\", location.Path()).Trace(\"unable to license file contents\")\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(metadataContents, location.Path())\n\treturn pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(location, metadataContents))\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/find_licenses_test.go",
    "content": "package licenses\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// scanner is used by all tests\nvar scanner = getScanner()\n\nfunc Test_FindRelativeLicenses(t *testing.T) {\n\tresolver := fileresolver.NewFromUnindexedDirectory(\"testdata\")\n\tsourceTxtResolved, err := resolver.FilesByPath(\"source.txt\")\n\trequire.NoError(t, err)\n\n\tsourceTxt := file.NewLocationSet(sourceTxtResolved[0].WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\ttests := []struct {\n\t\tname     string\n\t\tresolver file.Resolver\n\t\tp        pkg.Package\n\t\texpected pkg.LicenseSet\n\t}{\n\t\t{\n\t\t\tname:     \"existing license\",\n\t\t\tresolver: resolver,\n\t\t\tp: pkg.Package{\n\t\t\t\tLocations: sourceTxt,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicense(\"GPL-2.0\")),\n\t\t\t},\n\t\t\texpected: pkg.NewLicenseSet(pkg.NewLicense(\"GPL-2.0\")),\n\t\t},\n\t\t{\n\t\t\tname:     \"no licenses\",\n\t\t\tresolver: fileresolver.Empty{},\n\t\t\tp: pkg.Package{\n\t\t\t\tLocations: sourceTxt,\n\t\t\t},\n\t\t\texpected: pkg.NewLicenseSet(),\n\t\t},\n\t\t{\n\t\t\tname:     \"found relative license\",\n\t\t\tresolver: resolver,\n\t\t\tp: pkg.Package{\n\t\t\t\tLocations: sourceTxt,\n\t\t\t},\n\t\t\texpected: pkg.NewLicenseSet(pkg.NewLicense(\"MIT\")),\n\t\t},\n\t}\n\n\tctx := context.TODO()\n\tctx = licenses.SetContextLicenseScanner(ctx, scanner)\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := RelativeToPackage(ctx, tt.resolver, tt.p)\n\t\t\trequire.Equal(t, licenseNames(tt.expected.ToSlice()), licenseNames(got.Licenses.ToSlice()))\n\t\t})\n\t}\n}\n\nfunc Test_Finders(t *testing.T) {\n\tresolver := fileresolver.NewFromUnindexedDirectory(\"testdata\")\n\n\t// prepare context with license scanner\n\tctx := context.TODO()\n\tctx = licenses.SetContextLicenseScanner(ctx, scanner)\n\n\t// resolve known files\n\tlicenseLocs, err := resolver.FilesByPath(\"LICENSE\")\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, licenseLocs)\n\tlicenseLoc := licenseLocs[0]\n\n\tsourceLocs, err := resolver.FilesByPath(\"source.txt\")\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, sourceLocs)\n\tsourceLoc := sourceLocs[0]\n\n\ttests := []struct {\n\t\tname     string\n\t\tfinder   func(t *testing.T) []pkg.License\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"FindAtLocations finds LICENSE content\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindAtLocations(ctx, resolver, licenseLoc)\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"FindAtLocations with empty resolver returns none\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindAtLocations(ctx, fileresolver.Empty{}, licenseLoc)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"FindAtPaths finds LICENSE by path\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindAtPaths(ctx, resolver, \"LICENSE\")\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"FindInDirs finds LICENSE in directory\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindInDirs(ctx, resolver, \".\")\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"FindRelativeToLocations finds LICENSE relative to source.txt\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindRelativeToLocations(ctx, resolver, sourceLoc)\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"FindByGlob finds LICENSE with glob\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindByGlob(ctx, resolver, \"*\")\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"FindByGlob finds LICENSE with recursive glob\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn FindByGlob(ctx, resolver, \"**/*\")\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t\t{\n\t\t\tname: \"NewFromValues with locations returns license values\",\n\t\t\tfinder: func(t *testing.T) []pkg.License {\n\t\t\t\treturn NewFromValues(ctx, []file.Location{licenseLoc}, \"MIT\")\n\t\t\t},\n\t\t\texpected: []string{\"MIT\"},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := tt.finder(t)\n\t\t\trequire.Equal(t, tt.expected, licenseNames(got))\n\t\t})\n\t}\n}\n\nfunc licenseNames(slice []pkg.License) []string {\n\tvar out []string\n\tfor _, l := range slice {\n\t\tout = append(out, l.SPDXExpression)\n\t}\n\treturn out\n}\n\nfunc getScanner() licenses.Scanner {\n\ts, err := licenses.NewDefaultScanner()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn s\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/names.go",
    "content": "package licenses\n\nimport (\n\t\"math\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/licenses\"\n)\n\nvar licenseRegexp = regexp.MustCompile(`^(?i)(?:(?:UN|MIT-)?LICEN[S|C]E|COPYING|NOTICE).*$`)\n\n// lowerFileNames is a strset.Set of lowercased filenames\nvar lowerFileNames = func() *strset.Set {\n\tlowerNames := strset.New()\n\tfor _, fileName := range licenses.FileNames() {\n\t\tlowerNames.Add(strings.ToLower(fileName))\n\t}\n\treturn lowerNames\n}()\n\n// lowerFileNamesSorted is a sorted slice of lowercased filenames\nvar lowerFileNamesSorted = func() []string {\n\tout := lowerFileNames.List()\n\tslices.Sort(out)\n\treturn out\n}()\n\n// remove duplicate names that match the regex, keep any extras to test after regex check\nvar minLength, extraFileNames = func() (int, []string) {\n\tminSize := math.MaxInt\n\tvar extras []string\n\tfor _, name := range lowerFileNamesSorted {\n\t\tif len(name) < minSize {\n\t\t\tminSize = len(name)\n\t\t}\n\t\tif licenseRegexp.MatchString(name) {\n\t\t\tcontinue\n\t\t}\n\t\textras = append(extras, name)\n\t}\n\treturn minSize, extras\n}()\n\n// IsLicenseFile returns true if the name matches known license file name patterns\nfunc IsLicenseFile(name string) bool {\n\tif len(name) < minLength {\n\t\treturn false\n\t}\n\tif licenseRegexp.MatchString(name) {\n\t\treturn true\n\t}\n\tfor _, licenseFile := range extraFileNames {\n\t\tif strings.EqualFold(licenseFile, name) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/names_test.go",
    "content": "package licenses\n\nimport (\n\t\"testing\"\n)\n\nfunc Test_IsLicenseFile(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  bool\n\t}{\n\t\t// positive cases (should be detected as license files)\n\t\t{\"plain LICENSE\", \"LICENSE\", true},\n\t\t{\"lowercase license\", \"license\", true},\n\t\t{\"license with extension\", \"LICENSE.txt\", true},\n\t\t{\"mixed case\", \"LiCeNsE\", true},\n\t\t{\"copying\", \"COPYING\", true},\n\t\t{\"AL2.0\", \"AL2.0\", true},\n\t\t{\"notice\", \"NOTICE\", true},\n\t\t{\"mit-license\", \"MIT-License\", true},\n\t\t{\"unlicense\", \"UNLICENSE\", true},\n\t\t{\"licence variant\", \"LICENCE\", true},\n\t\t{\"license markdown\", \"license.md\", true},\n\n\t\t// negative cases (should NOT be detected)\n\t\t{\"AL1.0\", \"AL1.0\", false},\n\t\t{\"readme\", \"README\", false},\n\t\t{\"readme with ext\", \"README.md\", false},\n\t\t{\"not a license\", \"not_a_license\", false},\n\t\t{\"licensor (prefix-like but not)\", \"LICENSOR\", false},\n\t\t{\"too short (below minLength)\", \"a\", false},\n\t}\n\n\tfor _, tt := range tests {\n\t\ttt := tt\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tt.Parallel()\n\t\t\tgot := IsLicenseFile(tt.input)\n\t\t\tif got != tt.want {\n\t\t\t\tt.Fatalf(\"IsLicenseFile(%q) = %v, want %v\", tt.input, got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/testdata/LICENSE",
    "content": "Copyright 2025 Some Place, Inc.\n\nPermission 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:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE 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.\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/licenses/testdata/source.txt",
    "content": "a source file"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/bundle.go",
    "content": "package pe\n\nimport (\n\t\"bytes\"\n\t\"debug/pe\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n)\n\n// dotNetBundleSignature is the SHA-256 hash of \".net core bundle\" used to identify single-file bundles.\nvar dotNetBundleSignature = []byte{\n\t0x8b, 0x12, 0x02, 0xb9, 0x6a, 0x61, 0x20, 0x38,\n\t0x72, 0x7b, 0x93, 0x02, 0x14, 0xd7, 0xa0, 0x32,\n\t0x13, 0xf5, 0xb9, 0xe6, 0xef, 0xae, 0x33, 0x18,\n\t0xee, 0x3b, 0x2d, 0xce, 0x24, 0xb3, 0x6a, 0xae,\n}\n\n// dotNetBundleHeader represents the fixed portion of the bundle header (version 1+)\ntype dotNetBundleHeader struct {\n\tMajorVersion     uint32\n\tMinorVersion     uint32\n\tNumEmbeddedFiles int32\n}\n\n// dotNetBundleHeaderV2 represents additional fields in V2+ bundles (.NET 5+)\ntype dotNetBundleHeaderV2 struct {\n\tDepsJSONOffset          int64\n\tDepsJSONSize            int64\n\tRuntimeConfigJSONOffset int64\n\tRuntimeConfigJSONSize   int64\n\tFlags                   uint64\n}\n\n// dotNetFileType represents the type of bundled file in the manifest\ntype dotNetFileType uint8\n\nconst (\n\tdotNetFileTypeUnknown dotNetFileType = iota\n\tdotNetFileTypeAssembly\n\tdotNetFileTypeNativeBinary\n\tdotNetFileTypeDepsJSON\n\tdotNetFileTypeRuntimeConfigJSON\n\tdotNetFileTypeSymbols\n)\n\n// extractDepsJSONFromBundle searches for an embedded deps.json file in a .NET single-file bundle.\n// When built with PublishSingleFile=true, .NET embeds the application and all dependencies into\n// the AppHost executable. The bundle marker (8-byte header offset + 32-byte signature) is placed\n// in a placeholder location within the PE structure, pointing to the bundle header which contains\n// file entry metadata. For V2+ bundles (.NET 5+), the header includes direct offsets to deps.json;\n// for V1 bundles (.NET Core 3.x), we parse the manifest to locate it.\n//\n//\t┌──────────────────────────────────┐\n//\t│ PE AppHost Binary                │  Standard PE structure\n//\t│   ...                            │\n//\t│   [8B offset][32B signature]     │  Bundle marker (in placeholder within PE)\n//\t│   ...                            │\n//\t├──────────────────────────────────┤\n//\t│ Bundled Files                    │  Raw file contents (assemblies, deps.json, etc.)\n//\t├──────────────────────────────────┤\n//\t│ Bundle Header                    │  Version info, file count, deps.json offset (V2+)\n//\t│ File Manifest                    │  Per-file: offset, size, type, path\n//\t└──────────────────────────────────┘\n//\n// Parsing strategy:\n//  1. Search only the PE portion (using section headers) for the bundle signature\n//  2. Read 8 bytes before signature to get header offset\n//  3. Parse header to get deps.json location (V2+) or scan manifest entries (V1)\n//\n// See related documentation for more information:\n// - https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/design.md\n// - https://github.com/dotnet/designs/blob/main/accepted/2020/single-file/bundler.md\n// - https://github.com/dotnet/runtime/blob/main/src/installer/managed/Microsoft.NET.HostModel/Bundle/Manifest.cs\n// - https://github.com/dotnet/runtime/blob/main/src/installer/managed/Microsoft.NET.HostModel/Bundle/Bundler.cs\n// - https://github.com/dotnet/runtime/blob/main/src/native/corehost/bundle/header.h\n// - https://github.com/dotnet/runtime/blob/main/src/native/corehost/bundle/file_entry.h\n// - https://github.com/dotnet/runtime/blob/main/src/native/corehost/bundle/file_type.h\nfunc extractDepsJSONFromBundle(r io.ReadSeeker, sections []pe.SectionHeader32) (string, error) {\n\theaderOffset, err := findBundleHeaderOffset(r, sections)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif headerOffset == 0 {\n\t\treturn \"\", nil // not a .NET single-file bundle\n\t}\n\n\treturn readDepsJSONFromBundleHeader(r, headerOffset)\n}\n\n// findBundleHeaderOffset locates the bundle marker within the PE structure and returns the header offset.\n// Returns 0 if no bundle marker is found (not a single-file bundle).\nfunc findBundleHeaderOffset(r io.ReadSeeker, sections []pe.SectionHeader32) (int64, error) {\n\tpeEndOffset := calculatePEEndOffset(sections)\n\n\tif _, err := r.Seek(0, io.SeekStart); err != nil {\n\t\treturn 0, err\n\t}\n\n\tpeData := make([]byte, peEndOffset)\n\tn, err := io.ReadFull(r, peData)\n\tif err != nil && !errors.Is(err, io.ErrUnexpectedEOF) {\n\t\treturn 0, err\n\t}\n\tpeData = peData[:n]\n\n\tidx := bytes.Index(peData, dotNetBundleSignature)\n\tif idx == -1 || idx < 8 {\n\t\treturn 0, nil\n\t}\n\n\t// the header offset is stored in the 8 bytes immediately before the signature\n\theaderOffset := int64(binary.LittleEndian.Uint64(peData[idx-8 : idx]))\n\treturn headerOffset, nil\n}\n\n// calculatePEEndOffset determines where the PE structure ends based on section headers,\n// adding padding for alignment. This bounds our search for the bundle marker.\nfunc calculatePEEndOffset(sections []pe.SectionHeader32) int64 {\n\tvar peEndOffset int64\n\tfor _, sec := range sections {\n\t\tendOfSection := int64(sec.PointerToRawData) + int64(sec.SizeOfRawData)\n\t\tif endOfSection > peEndOffset {\n\t\t\tpeEndOffset = endOfSection\n\t\t}\n\t}\n\t// add buffer for alignment padding after sections\n\treturn peEndOffset + 4096\n}\n\n// readDepsJSONFromBundleHeader parses the bundle header at the given offset and extracts deps.json content.\nfunc readDepsJSONFromBundleHeader(r io.ReadSeeker, headerOffset int64) (string, error) {\n\tif _, err := r.Seek(headerOffset, io.SeekStart); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar header dotNetBundleHeader\n\tif err := binary.Read(r, binary.LittleEndian, &header); err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// skip bundle ID (7-bit length-prefixed string)\n\tif err := skipDotNetString(r); err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// for V2+ bundles (.NET 5+), read deps.json location directly from header\n\tif header.MajorVersion >= 2 {\n\t\tvar headerV2 dotNetBundleHeaderV2\n\t\tif err := binary.Read(r, binary.LittleEndian, &headerV2); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tif headerV2.DepsJSONSize > 0 && headerV2.DepsJSONOffset > 0 {\n\t\t\treturn readDepsJSONAtOffset(r, headerV2.DepsJSONOffset, headerV2.DepsJSONSize)\n\t\t}\n\t}\n\n\t// for V1 bundles (.NET Core 3.x) or if V2 header doesn't have deps.json, parse manifest\n\treturn findDepsJSONInManifest(r, header.NumEmbeddedFiles, header.MajorVersion)\n}\n\n// skipDotNetString skips a 7-bit length-prefixed string (.NET BinaryWriter format)\nfunc skipDotNetString(r io.ReadSeeker) error {\n\tlength, err := read7BitEncodedInt(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = r.Seek(int64(length), io.SeekCurrent)\n\treturn err\n}\n\n// read7BitEncodedInt reads a .NET 7-bit encoded integer (variable-length encoding used by BinaryWriter)\nfunc read7BitEncodedInt(r io.Reader) (int, error) {\n\tresult := 0\n\tshift := 0\n\tfor {\n\t\tvar b [1]byte\n\t\tif _, err := r.Read(b[:]); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tresult |= int(b[0]&0x7F) << shift\n\t\tif b[0]&0x80 == 0 {\n\t\t\tbreak\n\t\t}\n\t\tshift += 7\n\t\tif shift >= 35 { // prevent overflow\n\t\t\treturn 0, errors.New(\"invalid 7-bit encoded int\")\n\t\t}\n\t}\n\treturn result, nil\n}\n\n// readDepsJSONAtOffset reads deps.json content at a specific offset using seeks (avoiding loading entire file)\nfunc readDepsJSONAtOffset(r io.ReadSeeker, offset, size int64) (string, error) {\n\tif _, err := r.Seek(offset, io.SeekStart); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to seek to deps.json at offset %d: %w\", offset, err)\n\t}\n\tdata := make([]byte, size)\n\tif _, err := io.ReadFull(r, data); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to read deps.json (%d bytes): %w\", size, err)\n\t}\n\treturn string(data), nil\n}\n\n// findDepsJSONInManifest parses manifest entries to find deps.json (for V1 bundles or fallback)\nfunc findDepsJSONInManifest(r io.ReadSeeker, numFiles int32, majorVersion uint32) (string, error) {\n\tfor i := int32(0); i < numFiles; i++ {\n\t\tvar offset, size int64\n\n\t\tif err := binary.Read(r, binary.LittleEndian, &offset); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif err := binary.Read(r, binary.LittleEndian, &size); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// V6+ bundles (.NET 6+) have compressed size field\n\t\tif majorVersion >= 6 {\n\t\t\tvar compressedSize int64\n\t\t\tif err := binary.Read(r, binary.LittleEndian, &compressedSize); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\n\t\tvar fileType dotNetFileType\n\t\tif err := binary.Read(r, binary.LittleEndian, &fileType); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// skip relativePath string\n\t\tif err := skipDotNetString(r); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tif fileType == dotNetFileTypeDepsJSON && size > 0 {\n\t\t\t// save current position to resume manifest parsing if needed\n\t\t\tcurrentPos, err := r.Seek(0, io.SeekCurrent)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\n\t\t\t// read deps.json content\n\t\t\tcontent, err := readDepsJSONAtOffset(r, offset, size)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\n\t\t\t// restore position (in case caller needs to continue)\n\t\t\tif _, err := r.Seek(currentPos, io.SeekStart); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\n\t\t\treturn content, nil\n\t\t}\n\t}\n\treturn \"\", nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/bundle_test.go",
    "content": "package pe\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_extractDepsJSONFromBundle_Versions(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tfixture         string\n\t\tpath            string\n\t\twantDepsJSON    bool   // true if deps.json should be found\n\t\twantJSONContain string // string that should be in the JSON (varies by .NET version)\n\t}{\n\t\t{\n\t\t\tname:            \"V1 bundle (.NET Core 3.1)\",\n\t\t\tfixture:         \"image-dotnet31-single-file\",\n\t\t\tpath:            \"/app/hello.exe\",\n\t\t\twantDepsJSON:    true,\n\t\t\twantJSONContain: \"runtimeOptions\", // .NET Core 3.1 uses runtimeOptions\n\t\t},\n\t\t{\n\t\t\tname:            \"V2 bundle (.NET 5)\",\n\t\t\tfixture:         \"image-dotnet5-single-file\",\n\t\t\tpath:            \"/app/hello.exe\",\n\t\t\twantDepsJSON:    true,\n\t\t\twantJSONContain: \"runtimeTarget\", // .NET 5+ uses runtimeTarget\n\t\t},\n\t\t{\n\t\t\tname:            \"V6 bundle (.NET 6)\",\n\t\t\tfixture:         \"image-dotnet6-single-file\",\n\t\t\tpath:            \"/app/hello.exe\",\n\t\t\twantDepsJSON:    true,\n\t\t\twantJSONContain: \"runtimeTarget\", // .NET 6+ uses runtimeTarget\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\treader := fixtureFile(t, tt.fixture, tt.path)\n\t\t\tdefer reader.Close()\n\n\t\t\tgot, err := Read(reader)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif tt.wantDepsJSON {\n\t\t\t\tassert.NotEmpty(t, got.EmbeddedDepsJSON, \"expected deps.json to be extracted from bundle\")\n\t\t\t\t// verify it looks like valid JSON for this .NET version\n\t\t\t\tassert.Contains(t, got.EmbeddedDepsJSON, tt.wantJSONContain, \"deps.json should contain expected field\")\n\t\t\t} else {\n\t\t\t\tassert.Empty(t, got.EmbeddedDepsJSON, \"expected no deps.json in non-bundle file\")\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/pe.go",
    "content": "package pe\n\nimport (\n\t\"bytes\"\n\t\"debug/pe\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"unicode/utf16\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/scylladb/go-set/u32set\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n)\n\nconst peMaxAllowedDirectoryEntries = 0x1000\n\nvar imageDirectoryEntryIndexes = []int{\n\tpe.IMAGE_DIRECTORY_ENTRY_RESOURCE,       // where version resources are stored\n\tpe.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // where info about the CLR is stored\n}\n\n// File does not directly represent a binary shape to be parsed, instead it represents the\n// information of interest extracted from a PE file.\ntype File struct {\n\t// Location is where the PE file was found\n\tLocation file.Location\n\n\t// CLR is the information about the CLR (common language runtime) version found in the PE file which helps\n\t// understand if this executable is even a .NET application.\n\tCLR *CLREvidence\n\n\t// EmbeddedDepsJSON is the contents of an embedded deps.json file found within the PE file, if any.\n\t// This is typical when using the PublishSingleFile build option.\n\tEmbeddedDepsJSON string\n\n\t// VersionResources is a map of version resource keys to their values found in the VERSIONINFO resource directory.\n\tVersionResources map[string]string\n}\n\n// CLREvidence is basic info about the CLR (common language runtime) version from the COM descriptor.\n// This is not a complete representation of the CLR version, but rather a subset of the information that is\n// useful to us.\ntype CLREvidence struct {\n\t// HasClrResourceNames is true if there are CLR resource names found in the PE file (e.g. \"CLRDEBUGINFO\").\n\tHasClrResourceNames bool\n\n\t// MajorVersion is the minimum supported major version of the CLR.\n\tMajorVersion uint16\n\n\t// MinorVersion is the minimum supported minor version of the CLR.\n\tMinorVersion uint16\n}\n\n// HasEvidenceOfCLR returns true if the PE file has evidence of a CLR (common language runtime) version.\nfunc (c *CLREvidence) HasEvidenceOfCLR() bool {\n\treturn c != nil && (c.MajorVersion != 0 && c.MinorVersion != 0 || c.HasClrResourceNames)\n}\n\ntype peDosHeader struct {\n\tMagic                 [2]byte // \"MZ\"\n\tUnused                [58]byte\n\tAddressOfNewEXEHeader uint32 // offset to PE header\n}\n\n// peImageCore20 represents the .NET Core 2.0 header structure.\n// Source: https://github.com/dotnet/msbuild/blob/9fa9d800dabce3bfcf8365f651f3a713e01f8a85/src/Tasks/NativeMethods.cs#L761-L775\ntype peImageCore20 struct {\n\tCb                  uint32\n\tMajorRuntimeVersion uint16\n\tMinorRuntimeVersion uint16\n}\n\n// peImageResourceDirectory represents the resource directory structure.\ntype peImageResourceDirectory struct {\n\tCharacteristics      uint32\n\tTimeDateStamp        uint32\n\tMajorVersion         uint16\n\tMinorVersion         uint16\n\tNumberOfNamedEntries uint16\n\tNumberOfIDEntries    uint16\n}\n\n// peImageResourceDirectoryEntry represents an entry in the resource directory entries.\ntype peImageResourceDirectoryEntry struct {\n\tName         uint32\n\tOffsetToData uint32\n}\n\n// peImageResourceDataEntry is the unit of raw data in the Resource Data area.\ntype peImageResourceDataEntry struct {\n\tOffsetToData uint32\n\tSize         uint32\n\tCodePage     uint32\n\tReserved     uint32\n}\n\n// peVsFixedFileInfo represents the fixed file information structure.\ntype peVsFixedFileInfo struct {\n\tSignature        uint32\n\tStructVersion    uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype peVsVersionInfo peLenValLenType\n\ntype peStringFileInfo peLenValLenType\n\ntype peStringTable peLenValLenType\n\ntype peString peLenValLenType\n\ntype peLenValLenType struct {\n\tLength      uint16\n\tValueLength uint16\n\tType        uint16\n}\n\ntype extractedSection struct {\n\tRVA     uint32\n\tBaseRVA uint32\n\tSize    uint32\n\tReader  *bytes.Reader\n}\n\nfunc (s extractedSection) exists() bool {\n\treturn s.RVA != 0 && s.Size != 0\n}\n\nfunc directoryName(i int) string {\n\tswitch i {\n\tcase pe.IMAGE_DIRECTORY_ENTRY_RESOURCE:\n\t\treturn \"Resource\"\n\tcase pe.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR:\n\t\treturn \"COM Descriptor\"\n\t}\n\treturn fmt.Sprintf(\"Unknown (%d)\", i)\n}\n\nfunc Read(f file.LocationReadCloser) (*File, error) {\n\tr, err := unionreader.GetUnionReader(f)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsections, sectionHeaders, err := parsePEFile(r)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse PE sections: %w\", err)\n\t}\n\n\tdirs := u32set.New()                        // keep track of the RVAs we have already parsed (prevent infinite recursion edge cases)\n\tversionResources := make(map[string]string) // map of version resource keys to their values\n\tresourceNames := strset.New()               // set of resource names found in the PE file\n\terr = parseResourceDirectory(sections[pe.IMAGE_DIRECTORY_ENTRY_RESOURCE], dirs, versionResources, resourceNames)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc, err := parseCLR(sections[pe.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR], resourceNames)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse PE CLR directory: %w\", err)\n\t}\n\n\tembeddedDepsJSON, err := extractDepsJSONFromBundle(r, sectionHeaders)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract embedded deps.json: %w\", err)\n\t}\n\n\treturn &File{\n\t\tLocation:         f.Location,\n\t\tCLR:              c,\n\t\tEmbeddedDepsJSON: embeddedDepsJSON,\n\t\tVersionResources: versionResources,\n\t}, nil\n}\n\n// parsePEFile creates readers for targeted sections of the binary used by downstream processing.\nfunc parsePEFile(file unionreader.UnionReader) (map[int]*extractedSection, []pe.SectionHeader32, error) {\n\tfileHeader, magic, err := parsePEHeader(file)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"error parsing PE header: %w\", err)\n\t}\n\n\tsoi, headers, err := parseSectionHeaders(file, magic, fileHeader.NumberOfSections)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"error parsing section headers: %w\", err)\n\t}\n\n\tfor i, sec := range soi {\n\t\tif !sec.exists() {\n\t\t\tcontinue\n\t\t}\n\t\tdata, err := readDataFromRVA(file, sec.RVA, sec.Size, headers)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"error reading %q section data: %w\", directoryName(i), err)\n\t\t}\n\t\tsec.Reader = data\n\t}\n\n\treturn soi, headers, nil\n}\n\n// parsePEHeader reads the beginning of a PE formatted file, returning the file header and \"magic\" indicator\n// for downstream logic to determine 32/64 bit parsing.\nfunc parsePEHeader(file unionreader.UnionReader) (*pe.FileHeader, uint16, error) {\n\tvar dosHeader peDosHeader\n\tif err := binary.Read(file, binary.LittleEndian, &dosHeader); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error reading DOS header: %w\", err)\n\t}\n\tif string(dosHeader.Magic[:]) != \"MZ\" {\n\t\treturn nil, 0, fmt.Errorf(\"invalid DOS header magic\")\n\t}\n\n\tpeOffset := int64(dosHeader.AddressOfNewEXEHeader)\n\tif _, err := file.Seek(peOffset, io.SeekStart); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error seeking to PE header: %w\", err)\n\t}\n\n\tvar signature [4]byte\n\tif err := binary.Read(file, binary.LittleEndian, &signature); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error reading PE signature: %w\", err)\n\t}\n\tif !bytes.Equal(signature[:], []byte(\"PE\\x00\\x00\")) {\n\t\treturn nil, 0, fmt.Errorf(\"invalid PE signature\")\n\t}\n\n\tvar fileHeader pe.FileHeader\n\tif err := binary.Read(file, binary.LittleEndian, &fileHeader); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error reading file header: %w\", err)\n\t}\n\n\tvar magic uint16\n\tif err := binary.Read(file, binary.LittleEndian, &magic); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error reading optional header magic: %w\", err)\n\t}\n\n\t// seek back to before reading magic (since that value is in the header)\n\tif _, err := file.Seek(-2, io.SeekCurrent); err != nil {\n\t\treturn nil, 0, fmt.Errorf(\"error seeking back to before reading magic: %w\", err)\n\t}\n\n\treturn &fileHeader, magic, nil\n}\n\n// parseSectionHeaders reads the section headers from the PE file and extracts the virtual addresses + section size\n// information for the sections of interest. Additionally, all section headers are returned to aid in downstream processing.\nfunc parseSectionHeaders(file unionreader.UnionReader, magic uint16, numberOfSections uint16) (map[int]*extractedSection, []pe.SectionHeader32, error) {\n\tsoi := make(map[int]*extractedSection)\n\tswitch magic {\n\tcase 0x10B: // PE32\n\t\tvar optHeader pe.OptionalHeader32\n\t\tif err := binary.Read(file, binary.LittleEndian, &optHeader); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"error reading optional header (PE32): %w\", err)\n\t\t}\n\n\t\tfor _, i := range imageDirectoryEntryIndexes {\n\t\t\tsectionHeader := optHeader.DataDirectory[i]\n\t\t\tif sectionHeader.Size == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsoi[i] = &extractedSection{\n\t\t\t\tRVA:  sectionHeader.VirtualAddress,\n\t\t\t\tSize: sectionHeader.Size,\n\t\t\t}\n\t\t}\n\tcase 0x20B: // PE32+ (64 bit)\n\t\tvar optHeader pe.OptionalHeader64\n\t\tif err := binary.Read(file, binary.LittleEndian, &optHeader); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"error reading optional header (PE32+): %w\", err)\n\t\t}\n\n\t\tfor _, i := range imageDirectoryEntryIndexes {\n\t\t\tsectionHeader := optHeader.DataDirectory[i]\n\t\t\tif sectionHeader.Size == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsoi[i] = &extractedSection{\n\t\t\t\tRVA:  sectionHeader.VirtualAddress,\n\t\t\t\tSize: sectionHeader.Size,\n\t\t\t}\n\t\t}\n\tdefault:\n\t\treturn nil, nil, fmt.Errorf(\"unknown optional header magic: 0x%x\", magic)\n\t}\n\n\t// read section headers\n\theaders := make([]pe.SectionHeader32, numberOfSections)\n\tfor i := 0; i < int(numberOfSections); i++ {\n\t\tif err := binary.Read(file, binary.LittleEndian, &headers[i]); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"error reading section header: %w\", err)\n\t\t}\n\t}\n\n\treturn soi, headers, nil\n}\n\n// parseCLR extracts the CLR (common language runtime) version information from the COM descriptor and makes\n// present/not-present determination based on the presence of CLR resource names.\nfunc parseCLR(sec *extractedSection, resourceNames *strset.Set) (*CLREvidence, error) {\n\thasCLRDebugResourceNames := resourceNames.HasAny(\"CLRDEBUGINFO\")\n\tif sec == nil || sec.Reader == nil {\n\t\treturn &CLREvidence{\n\t\t\tHasClrResourceNames: hasCLRDebugResourceNames,\n\t\t}, nil\n\t}\n\n\treader := sec.Reader\n\tvar c peImageCore20\n\tif err := binary.Read(reader, binary.LittleEndian, &c); err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading CLR header: %w\", err)\n\t}\n\n\treturn &CLREvidence{\n\t\tHasClrResourceNames: hasCLRDebugResourceNames,\n\t\tMajorVersion:        c.MajorRuntimeVersion,\n\t\tMinorVersion:        c.MinorRuntimeVersion,\n\t}, nil\n}\n\n// rvaToFileOffset is a helper function to convert RVA to file offset using section headers\nfunc rvaToFileOffset(rva uint32, sections []pe.SectionHeader32) (uint32, error) {\n\tfor _, section := range sections {\n\t\tif rva >= section.VirtualAddress && rva < section.VirtualAddress+section.VirtualSize {\n\t\t\treturn section.PointerToRawData + (rva - section.VirtualAddress), nil\n\t\t}\n\t}\n\treturn 0, fmt.Errorf(\"RVA 0x%x not found in any section\", rva)\n}\n\n// readDataFromRVA will read data from a specific RVA in the PE file\nfunc readDataFromRVA(file io.ReadSeeker, rva, size uint32, sections []pe.SectionHeader32) (*bytes.Reader, error) {\n\tif size == 0 {\n\t\treturn nil, fmt.Errorf(\"zero size specified\")\n\t}\n\n\toffset, err := rvaToFileOffset(rva, sections)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif _, err := file.Seek(int64(offset), io.SeekStart); err != nil {\n\t\treturn nil, fmt.Errorf(\"error seeking to data: %w\", err)\n\t}\n\n\tdata := make([]byte, size)\n\tif _, err := io.ReadFull(file, data); err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading data: %w\", err)\n\t}\n\n\treturn bytes.NewReader(data), nil\n}\n\n// parseResourceDirectory recursively parses a PE resource directory. This takes a relative virtual address (offset of\n// a piece of data or code relative to the base address), the size of the resource directory, the set of RVAs already\n// parsed, and the map to populate discovered version resource values.\n//\n// .rsrc Section\n// +------------------------------+\n// | Resource Directory Table     |\n// +------------------------------+\n// | Resource Directory Entries   |\n// |  +------------------------+  |\n// |  | Subdirectory or Data   |  |\n// |  +------------------------+  |\n// +------------------------------+\n// | Resource Data Entries        |\n// |  +------------------------+  |\n// |  | Resource Data          |  |\n// |  +------------------------+  |\n// +------------------------------+\n// | Actual Resource Data         |\n// +------------------------------+\n//\n// sources:\n// - https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-rsrc-section\n// - https://learn.microsoft.com/en-us/previous-versions/ms809762(v=msdn.10)#pe-file-resources\nfunc parseResourceDirectory(sec *extractedSection, dirs *u32set.Set, fields map[string]string, names *strset.Set) error {\n\tif sec == nil || sec.Size <= 0 {\n\t\treturn nil\n\t}\n\n\tif sec.Reader == nil {\n\t\treturn errors.New(\"resource section not found\")\n\t}\n\n\tbaseRVA := sec.BaseRVA\n\tif baseRVA == 0 {\n\t\tbaseRVA = sec.RVA\n\t}\n\n\toffset := int64(sec.RVA - baseRVA)\n\tif _, err := sec.Reader.Seek(offset, io.SeekStart); err != nil {\n\t\treturn fmt.Errorf(\"error seeking to directory offset: %w\", err)\n\t}\n\n\tvar directoryHeader peImageResourceDirectory\n\tif err := readIntoStruct(sec.Reader, &directoryHeader); err != nil {\n\t\treturn fmt.Errorf(\"error reading directory header: %w\", err)\n\t}\n\n\tnumEntries := int(directoryHeader.NumberOfNamedEntries + directoryHeader.NumberOfIDEntries)\n\tswitch {\n\tcase numEntries > peMaxAllowedDirectoryEntries:\n\t\treturn fmt.Errorf(\"too many entries in resource directory: %d\", numEntries)\n\tcase numEntries == 0:\n\t\treturn fmt.Errorf(\"no entries in resource directory\")\n\tcase numEntries < 0:\n\t\treturn fmt.Errorf(\"invalid number of entries in resource directory: %d\", numEntries)\n\t}\n\n\tfor i := 0; i < numEntries; i++ {\n\t\tvar entry peImageResourceDirectoryEntry\n\n\t\tentryOffset := offset + int64(binary.Size(directoryHeader)) + int64(i*binary.Size(entry))\n\t\tif _, err := sec.Reader.Seek(entryOffset, io.SeekStart); err != nil {\n\t\t\tlog.Tracef(\"error seeking to PE entry offset: %v\", err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := readIntoStruct(sec.Reader, &entry); err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := processResourceEntry(entry, baseRVA, sec, dirs, fields, names); err != nil {\n\t\t\tlog.Tracef(\"error processing resource entry: %v\", err)\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc processResourceEntry(entry peImageResourceDirectoryEntry, baseRVA uint32, sec *extractedSection, dirs *u32set.Set, fields map[string]string, names *strset.Set) error {\n\t// if the high bit is set, this is a directory entry, otherwise it is a data entry\n\tisDirectory := entry.OffsetToData&0x80000000 != 0\n\n\t// note: the offset is relative to the beginning of the resource section, not an RVA\n\tentryOffsetToData := entry.OffsetToData & 0x7FFFFFFF\n\n\tnameIsString := entry.Name&0x80000000 != 0\n\tnameOffset := entry.Name & 0x7FFFFFFF\n\n\t// read the string name of the resource directory\n\tif nameIsString {\n\t\tcurrentPos, err := sec.Reader.Seek(0, io.SeekCurrent)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error getting current reader position: %w\", err)\n\t\t}\n\n\t\tif _, err := sec.Reader.Seek(int64(nameOffset), io.SeekStart); err != nil {\n\t\t\treturn fmt.Errorf(\"error restoring reader position: %w\", err)\n\t\t}\n\n\t\tname, err := readUTF16WithLength(sec.Reader)\n\t\tif err == nil {\n\t\t\tnames.Add(name)\n\t\t}\n\n\t\tif _, err := sec.Reader.Seek(currentPos, io.SeekStart); err != nil {\n\t\t\treturn fmt.Errorf(\"error restoring reader position: %w\", err)\n\t\t}\n\t}\n\n\tif isDirectory {\n\t\tsubRVA := baseRVA + entryOffsetToData\n\t\tif dirs.Has(subRVA) {\n\t\t\t// some malware uses recursive PE references to evade analysis\n\t\t\treturn fmt.Errorf(\"recursive PE reference detected; skipping directory at baseRVA=0x%x subRVA=0x%x\", baseRVA, subRVA)\n\t\t}\n\n\t\tdirs.Add(subRVA)\n\t\terr := parseResourceDirectory(\n\t\t\t&extractedSection{\n\t\t\t\tRVA:     subRVA,\n\t\t\t\tBaseRVA: baseRVA,\n\t\t\t\tSize:    sec.Size - (sec.RVA - baseRVA),\n\t\t\t\tReader:  sec.Reader,\n\t\t\t},\n\t\t\tdirs, fields, names)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\treturn parseResourceDataEntry(sec.Reader, baseRVA, baseRVA+entryOffsetToData, sec.Size, fields)\n}\n\nfunc parseResourceDataEntry(reader *bytes.Reader, baseRVA, rva, remainingSize uint32, fields map[string]string) error {\n\tvar dataEntry peImageResourceDataEntry\n\toffset := int64(rva - baseRVA)\n\n\tif _, err := reader.Seek(offset, io.SeekStart); err != nil {\n\t\treturn fmt.Errorf(\"error seeking to data entry offset: %w\", err)\n\t}\n\n\tif err := readIntoStruct(reader, &dataEntry); err != nil {\n\t\treturn fmt.Errorf(\"error reading resource data entry: %w\", err)\n\t}\n\n\tif remainingSize < dataEntry.Size {\n\t\treturn fmt.Errorf(\"resource data entry size exceeds remaining size\")\n\t}\n\n\tdata := make([]byte, dataEntry.Size)\n\tif _, err := reader.Seek(int64(dataEntry.OffsetToData-baseRVA), io.SeekStart); err != nil {\n\t\treturn fmt.Errorf(\"error seeking to resource data: %w\", err)\n\t}\n\n\tif _, err := reader.Read(data); err != nil {\n\t\treturn fmt.Errorf(\"error reading resource data: %w\", err)\n\t}\n\n\treturn parseVersionResourceSection(bytes.NewReader(data), fields)\n}\n\n// parseVersionResourceSection parses a PE version resource section from within a resource directory.\n//\n//\t\"The main structure in a version resource is the VS_FIXEDFILEINFO structure. Additional structures include the\n//\tVarFileInfo structure to store language information data, and StringFileInfo for user-defined string information.\n//\tAll strings in a version resource are in Unicode format. Each block of information is aligned on a DWORD boundary.\"\n//\n//\t\"VS_VERSIONINFO\" (utf16)\n//\t+---------------------------------------------------+\n//\t| wLength (2 bytes)                                 |\n//\t| wValueLength (2 bytes)                            |\n//\t| wType (2 bytes)                                   |\n//\t| szKey (\"VS_VERSION_INFO\") (utf16)                 |\n//\t| Padding (to DWORD)                                |\n//\t+---------------------------------------------------+\n//\t| VS_FIXEDFILEINFO (52 bytes)                       |\n//\t+---------------------------------------------------+\n//\t| \"StringFileInfo\" (utf16)                          |\n//\t+---------------------------------------------------+\n//\t| wLength (2 bytes)                                 |\n//\t| wValueLength (2 bytes)                            |\n//\t| wType (2 bytes)                                   |\n//\t| szKey (\"StringFileInfo\") (utf16)                  |\n//\t| Padding (to DWORD)                                |\n//\t| StringTable                                       |\n//\t|   +--------------------------------------------+  |\n//\t|   | wLength (2 bytes)                          |  |\n//\t|   | wValueLength (2 bytes)                     |  |\n//\t|   | wType (2 bytes)                            |  |\n//\t|   | szKey (\"040904b0\")                         |  |\n//\t|   | Padding (to DWORD)                         |  |\n//\t|   | String                                     |  |\n//\t|   | +--------------------------------------+   |  |\n//\t|   | | wLength (2 bytes)                    |   |  |\n//\t|   | | wValueLength (2 bytes)               |   |  |\n//\t|   | | wType (2 bytes)                      |   |  |\n//\t|   | | szKey (\"FileVersion\")                |   |  |\n//\t|   | | Padding (to DWORD)                   |   |  |\n//\t|   | | szValue (\"15.00.0913.015\")           |   |  |\n//\t|   | | Padding (to DWORD)                   |   |  |\n//\t|   +--------------------------------------------+  |\n//\t+---------------------------------------------------+\n//\t| VarFileInfo  (utf16)                              |\n//\t+---------------------------------------------------+\n//\t| (skip!)                                           |\n//\t+---------------------------------------------------+\n//\n// sources:\n//   - https://learn.microsoft.com/en-us/windows/win32/menurc/resource-file-formats\n//   - https://learn.microsoft.com/en-us/windows/win32/menurc/vs-versioninfo\n//   - https://learn.microsoft.com/en-us/windows/win32/api/verrsrc/ns-verrsrc-vs_fixedfileinfo\n//   - https://learn.microsoft.com/en-us/windows/win32/menurc/varfileinfo\n//   - https://learn.microsoft.com/en-us/windows/win32/menurc/stringfileinfo\n//   - https://learn.microsoft.com/en-us/windows/win32/menurc/stringtable\nfunc parseVersionResourceSection(reader *bytes.Reader, fields map[string]string) error {\n\toffset := 0\n\n\tvar info peVsVersionInfo\n\tif szKey, err := readIntoStructAndSzKey(reader, &info, &offset); err != nil {\n\t\treturn fmt.Errorf(\"error reading PE version info: %v\", err)\n\t} else if szKey != \"VS_VERSION_INFO\" {\n\t\t// this is a resource section, but not the version resources\n\t\treturn nil\n\t}\n\n\tif err := alignAndSeek(reader, &offset); err != nil {\n\t\treturn fmt.Errorf(\"error aligning past PE version info: %w\", err)\n\t}\n\n\tvar fixedFileInfo peVsFixedFileInfo\n\tif err := readIntoStruct(reader, &fixedFileInfo, &offset); err != nil {\n\t\treturn fmt.Errorf(\"error reading PE FixedFileInfo: %v\", err)\n\t}\n\n\tfor reader.Len() > 0 {\n\t\tif err := alignAndSeek(reader, &offset); err != nil {\n\t\t\treturn fmt.Errorf(\"error seeking to PE StringFileInfo: %w\", err)\n\t\t}\n\n\t\tvar sfiHeader peStringFileInfo\n\t\tif szKey, err := readIntoStructAndSzKey(reader, &sfiHeader, &offset); err != nil {\n\t\t\treturn fmt.Errorf(\"error reading PE string file info header: %v\", err)\n\t\t} else if szKey != \"StringFileInfo\" {\n\t\t\t// we only care about extracting strings from any string tables, skip this\n\t\t\toffset += int(sfiHeader.ValueLength)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar stOffset int\n\n\t\t// note: the szKey for the prStringTable is the language\n\t\tvar stHeader peStringTable\n\t\tif _, err := readIntoStructAndSzKey(reader, &stHeader, &offset, &stOffset); err != nil {\n\t\t\treturn fmt.Errorf(\"error reading PE string table header: %v\", err)\n\t\t}\n\n\t\tfor stOffset < int(stHeader.Length) {\n\t\t\tvar stringHeader peString\n\t\t\tif err := readIntoStruct(reader, &stringHeader, &offset, &stOffset); err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tkey := readUTF16(reader, &offset, &stOffset)\n\n\t\t\tif err := alignAndSeek(reader, &offset, &stOffset); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error aligning to next PE string table value: %w\", err)\n\t\t\t}\n\n\t\t\tvar value string\n\t\t\tif stringHeader.ValueLength > 0 {\n\t\t\t\tvalue = readUTF16(reader, &offset, &stOffset)\n\t\t\t}\n\n\t\t\tfields[key] = value\n\n\t\t\tif err := alignAndSeek(reader, &offset, &stOffset); err != nil {\n\t\t\t\treturn fmt.Errorf(\"error aligning to next PE string table key: %w\", err)\n\t\t\t}\n\t\t}\n\t}\n\n\tif fields[\"FileVersion\"] == \"\" {\n\t\t// we can derive the file version from the fixed file info if it is not already specified as a string entry... neat!\n\t\tfields[\"FileVersion\"] = fmt.Sprintf(\"%d.%d.%d.%d\",\n\t\t\tfixedFileInfo.FileVersionMS>>16, fixedFileInfo.FileVersionMS&0xFFFF,\n\t\t\tfixedFileInfo.FileVersionLS>>16, fixedFileInfo.FileVersionLS&0xFFFF)\n\t}\n\n\treturn nil\n}\n\n// readIntoStructAndSzKey reads a struct from the reader and updates the offsets if provided, returning the szKey value.\n// This is only useful in the context of the resource directory parsing in narrow cases (this is invalid to use outside of that context).\nfunc readIntoStructAndSzKey[T any](reader *bytes.Reader, data *T, offsets ...*int) (string, error) {\n\tif err := readIntoStruct(reader, data, offsets...); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn readUTF16(reader, offsets...), nil\n}\n\n// readIntoStruct reads a struct from the reader and updates the offsets if provided.\nfunc readIntoStruct[T any](reader io.Reader, data *T, offsets ...*int) error {\n\tif err := binary.Read(reader, binary.LittleEndian, data); err != nil {\n\t\tif errors.Is(err, io.EOF) {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\n\tfor i := range offsets {\n\t\t*offsets[i] += binary.Size(*data)\n\t}\n\treturn nil\n}\n\n// alignAndSeek aligns the reader to the next DWORD boundary and seeks to the new offset (updating any provided trackOffsets).\nfunc alignAndSeek(reader io.Seeker, offset *int, trackOffsets ...*int) error {\n\togOffset := *offset\n\t*offset = alignToDWORD(*offset)\n\tdiff := *offset - ogOffset\n\tfor i := range trackOffsets {\n\t\t*trackOffsets[i] += diff\n\t}\n\t_, err := reader.Seek(int64(*offset), io.SeekStart)\n\treturn err\n}\n\n// alignToDWORD aligns the offset to the next DWORD boundary (4 byte boundary)\nfunc alignToDWORD(offset int) int {\n\treturn (offset + 3) & ^3\n}\n\n// readUTF16 is a helper function to read a null-terminated UTF16 string\nfunc readUTF16(reader *bytes.Reader, offsets ...*int) string {\n\tstartPos, err := reader.Seek(0, io.SeekCurrent)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tvar result []rune\n\tfor {\n\t\tvar char uint16\n\t\terr := binary.Read(reader, binary.LittleEndian, &char)\n\t\tif err != nil || char == 0 {\n\t\t\tbreak\n\t\t}\n\t\tresult = append(result, rune(char))\n\t}\n\n\t// calculate how many bytes we've actually read (including null terminator)\n\tendPos, _ := reader.Seek(0, io.SeekCurrent)\n\tbytesRead := int(endPos - startPos)\n\n\tfor i := range offsets {\n\t\t*offsets[i] += bytesRead\n\t}\n\n\treturn string(result)\n}\n\n// readUTF16WithLength reads a length-prefixed UTF-16 string from reader.\n// The first 2 bytes represent the number of UTF-16 code units.\nfunc readUTF16WithLength(reader *bytes.Reader) (string, error) {\n\tvar length uint16\n\tif err := binary.Read(reader, binary.LittleEndian, &length); err != nil {\n\t\treturn \"\", err\n\t}\n\tif length == 0 {\n\t\treturn \"\", nil\n\t}\n\n\t// read length UTF-16 code units.\n\tcodes := make([]uint16, length)\n\tif err := binary.Read(reader, binary.LittleEndian, &codes); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn string(utf16.Decode(codes)), nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/pe_test.go",
    "content": "package pe\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nfunc Test_Read_DotNetDetection(t *testing.T) {\n\tsingleFileDepsJSON, err := os.ReadFile(\"testdata/net8-app-single-file.deps.json\")\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\tpath         string\n\t\twantVR       map[string]string\n\t\twantCLR      bool\n\t\twantDepsJSON string\n\t\twantErr      require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"newtonsoft\",\n\t\t\tpath:    \"/app/Newtonsoft.Json.dll\",\n\t\t\tfixture: \"image-net8-app\",\n\t\t\twantCLR: true,\n\t\t\twantVR: map[string]string{\n\t\t\t\t// the numbers are the field parse order, which helped for debugging and understanding corrupted fields\n\t\t\t\t\"Comments\":         \"Json.NET is a popular high-performance JSON framework for .NET\", // 1\n\t\t\t\t\"CompanyName\":      \"Newtonsoft\",                                                     // 2\n\t\t\t\t\"FileDescription\":  \"Json.NET .NET 6.0\",                                              // 3\n\t\t\t\t\"FileVersion\":      \"13.0.3.27908\",                                                   // 4\n\t\t\t\t\"InternalName\":     \"Newtonsoft.Json.dll\",                                            // 5\n\t\t\t\t\"LegalCopyright\":   \"Copyright © James Newton-King 2008\",                             // 6\n\t\t\t\t\"LegalTrademarks\":  \"\",                                                               // 7 (empty value actually exists in the string table)\n\t\t\t\t\"OriginalFilename\": \"Newtonsoft.Json.dll\",                                            // 8\n\t\t\t\t\"ProductName\":      \"Json.NET\",                                                       // 9\n\t\t\t\t\"ProductVersion\":   \"13.0.3+0a2e291c0d9c0c7675d445703e51750363a549ef\",                // 10\n\t\t\t\t\"Assembly Version\": \"13.0.0.0\",                                                       // 11\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"humanizer\",\n\t\t\tpath:    \"/app/Humanizer.dll\",\n\t\t\tfixture: \"image-net8-app\",\n\t\t\twantCLR: true,\n\t\t\twantVR: map[string]string{\n\t\t\t\t\"Comments\":         \"A micro-framework that turns your normal strings, type names, enum fields, date fields ETC into a human friendly format\",\n\t\t\t\t\"CompanyName\":      \"Mehdi Khalili, Claire Novotny\",\n\t\t\t\t\"FileDescription\":  \"Humanizer\",\n\t\t\t\t\"FileVersion\":      \"2.14.1.48190\",\n\t\t\t\t\"InternalName\":     \"Humanizer.dll\",\n\t\t\t\t\"LegalCopyright\":   \"Copyright © .NET Foundation and Contributors\",\n\t\t\t\t\"OriginalFilename\": \"Humanizer.dll\",\n\t\t\t\t\"ProductName\":      \"Humanizer (net6.0)\",\n\t\t\t\t\"ProductVersion\":   \"2.14.1+3ebc38de58\",\n\t\t\t\t\"Assembly Version\": \"2.14.0.0\",\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"dotnetapp\",\n\t\t\tpath:    \"/app/dotnetapp.dll\",\n\t\t\tfixture: \"image-net8-app\",\n\t\t\twantCLR: true,\n\t\t\twantVR: map[string]string{\n\t\t\t\t\"CompanyName\":      \"dotnetapp\",\n\t\t\t\t\"FileDescription\":  \"dotnetapp\",\n\t\t\t\t\"FileVersion\":      \"1.0.0.0\",\n\t\t\t\t\"InternalName\":     \"dotnetapp.dll\",\n\t\t\t\t\"LegalCopyright\":   \" \",\n\t\t\t\t\"OriginalFilename\": \"dotnetapp.dll\",\n\t\t\t\t\"ProductName\":      \"dotnetapp\",\n\t\t\t\t\"ProductVersion\":   \"1.0.0\",\n\t\t\t\t\"Assembly Version\": \"1.0.0.0\",\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"jruby\",\n\t\t\tpath:    \"/app/jruby_windows_9_3_15_0.exe\",\n\t\t\tfixture: \"image-net8-app\",\n\t\t\twantCLR: false, // important!\n\t\t\twantVR: map[string]string{\n\t\t\t\t\"CompanyName\":      \"JRuby Dev Team\",\n\t\t\t\t\"FileDescription\":  \"JRuby\",\n\t\t\t\t\"FileVersion\":      \"9.3.15.0\",\n\t\t\t\t\"InternalName\":     \"jruby\",\n\t\t\t\t\"LegalCopyright\":   \"JRuby Dev Team\",\n\t\t\t\t\"OriginalFilename\": \"jruby_windows-x32_9_3_15_0.exe\",\n\t\t\t\t\"ProductName\":      \"JRuby\",\n\t\t\t\t\"ProductVersion\":   \"9.3.15.0\",\n\t\t\t},\n\t\t\twantErr: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:    \"single file deployment\",\n\t\t\tpath:    \"/app/dotnetapp.exe\",\n\t\t\tfixture: \"image-net8-app-single-file\",\n\t\t\t// single file deployment does not have CLR metadata embedded in the COM descriptor. Instead we need\n\t\t\t// to look for evidence of the CLR in other resources directory names, specifically for \"CLRDEBUGINFO\".\n\t\t\twantCLR: true,\n\t\t\twantVR: map[string]string{\n\t\t\t\t\"CompanyName\":      \"dotnetapp\",\n\t\t\t\t\"FileDescription\":  \"dotnetapp\",\n\t\t\t\t\"FileVersion\":      \"1.0.0.0\",\n\t\t\t\t\"InternalName\":     \"dotnetapp.dll\",\n\t\t\t\t\"LegalCopyright\":   \" \",\n\t\t\t\t\"OriginalFilename\": \"dotnetapp.dll\",\n\t\t\t\t\"ProductName\":      \"dotnetapp\",\n\t\t\t\t\"ProductVersion\":   \"1.0.0\",\n\t\t\t\t\"Assembly Version\": \"1.0.0.0\",\n\t\t\t},\n\t\t\twantDepsJSON: string(singleFileDepsJSON),\n\t\t\twantErr:      require.NoError,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\treader := fixtureFile(t, tt.fixture, tt.path)\n\n\t\t\tgot, err := Read(reader)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif d := cmp.Diff(tt.wantVR, got.VersionResources); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected version resources (-want +got): %s\", d)\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.wantCLR, got.CLR.HasEvidenceOfCLR())\n\n\t\t\tif d := cmp.Diff(tt.wantDepsJSON, got.EmbeddedDepsJSON); d != \"\" {\n\t\t\t\tfmt.Printf(\"got embedded deps.json: %s\\n\", got.EmbeddedDepsJSON)\n\t\t\t\tt.Errorf(\"unexpected deps.json location (-want +got): %s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc fixtureFile(t *testing.T, fixture, path string) file.LocationReadCloser {\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", fixture)\n\n\ts := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: fixture,\n\t})\n\n\tr, err := s.FileResolver(source.SquashedScope)\n\trequire.NoError(t, err)\n\n\tlocs, err := r.FilesByPath(path)\n\trequire.NoError(t, err)\n\n\trequire.Len(t, locs, 1)\n\tloc := locs[0]\n\n\treader, err := r.FileContentsByLocation(loc)\n\trequire.NoError(t, err)\n\treturn file.NewLocationReadCloser(loc, reader)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/Makefile",
    "content": "FINGERPRINT_FILE=cache.fingerprint\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures:\n\t@echo \"nothing to do\"\n\n# requirement 2: 'fingerprint' goal to determine if cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n# requirement 3: always recalculate fingerprint based on source\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find Makefile **/Dockerfile **/src/** -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\n# requirement 4: 'clean' goal to remove generated test fixtures\nclean:\n\trm -f $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet31-single-file/Dockerfile",
    "content": "FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/core/sdk:3.1 AS build\nWORKDIR /src\nCOPY src/ .\nRUN dotnet publish -c Release -r win-x64 \\\n    -p:PublishSingleFile=true \\\n    -p:SelfContained=true \\\n    -o /app\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app/hello.exe .\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet31-single-file/src/Program.cs",
    "content": "using System;\n\nnamespace Hello\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            Console.WriteLine(\"Hello\");\n        }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet31-single-file/src/hello.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>netcoreapp3.1</TargetFramework>\n  </PropertyGroup>\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet5-single-file/Dockerfile",
    "content": "FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:5.0 AS build\nWORKDIR /src\nCOPY src/ .\nRUN dotnet publish -c Release -r win-x64 \\\n    -p:PublishSingleFile=true \\\n    -p:SelfContained=true \\\n    -o /app\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app/hello.exe .\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet5-single-file/src/Program.cs",
    "content": "System.Console.WriteLine(\"Hello\");\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet5-single-file/src/hello.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net5.0</TargetFramework>\n  </PropertyGroup>\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet6-single-file/Dockerfile",
    "content": "FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:6.0 AS build\nWORKDIR /src\nCOPY src/ .\nRUN dotnet publish -c Release -r win-x64 \\\n    -p:PublishSingleFile=true \\\n    -p:SelfContained=true \\\n    -o /app\n\nFROM busybox\nWORKDIR /app\nCOPY --from=build /app/hello.exe .\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet6-single-file/src/Program.cs",
    "content": "System.Console.WriteLine(\"Hello\");\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/image-dotnet6-single-file/src/hello.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net6.0</TargetFramework>\n  </PropertyGroup>\n</Project>\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pe/testdata/net8-app-single-file.deps.json",
    "content": "{\n  \"runtimeTarget\": {\n    \"name\": \".NETCoreApp,Version=v8.0/win-x64\",\n    \"signature\": \"\"\n  },\n  \"compilationOptions\": {},\n  \"targets\": {\n    \".NETCoreApp,Version=v8.0\": {},\n    \".NETCoreApp,Version=v8.0/win-x64\": {\n      \"dotnetapp/1.0.0\": {\n        \"dependencies\": {\n          \"Humanizer\": \"2.14.1\",\n          \"Newtonsoft.Json\": \"13.0.3\",\n          \"runtimepack.Microsoft.NETCore.App.Runtime.win-x64\": \"8.0.14\"\n        },\n        \"runtime\": {\n          \"dotnetapp.dll\": {}\n        }\n      },\n      \"runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.14\": {\n        \"runtime\": {\n          \"Microsoft.CSharp.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"Microsoft.VisualBasic.Core.dll\": {\n            \"assemblyVersion\": \"13.0.0.0\",\n            \"fileVersion\": \"13.0.1425.11118\"\n          },\n          \"Microsoft.VisualBasic.dll\": {\n            \"assemblyVersion\": \"10.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"Microsoft.Win32.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"Microsoft.Win32.Registry.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.AppContext.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Buffers.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Collections.Concurrent.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Collections.Immutable.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Collections.NonGeneric.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Collections.Specialized.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Collections.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.Annotations.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.DataAnnotations.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.EventBasedAsync.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.TypeConverter.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ComponentModel.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Configuration.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Console.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Core.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Data.Common.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Data.DataSetExtensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Data.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.Contracts.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.Debug.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.DiagnosticSource.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.FileVersionInfo.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.Process.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.StackTrace.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.TextWriterTraceListener.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.Tools.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.TraceSource.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Diagnostics.Tracing.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Drawing.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Drawing.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Dynamic.Runtime.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Formats.Asn1.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Formats.Tar.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Globalization.Calendars.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Globalization.Extensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Globalization.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Compression.Brotli.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Compression.FileSystem.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Compression.ZipFile.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Compression.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.FileSystem.AccessControl.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.FileSystem.DriveInfo.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.FileSystem.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.FileSystem.Watcher.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.FileSystem.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.IsolatedStorage.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.MemoryMappedFiles.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Pipes.AccessControl.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.Pipes.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.UnmanagedMemoryStream.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.IO.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Linq.Expressions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Linq.Parallel.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Linq.Queryable.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Linq.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Memory.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Http.Json.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Http.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.HttpListener.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Mail.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.NameResolution.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.NetworkInformation.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Ping.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Quic.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Requests.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Security.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.ServicePoint.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.Sockets.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.WebClient.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.WebHeaderCollection.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.WebProxy.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.WebSockets.Client.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.WebSockets.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Net.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Numerics.Vectors.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Numerics.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ObjectModel.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Private.CoreLib.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Private.DataContractSerialization.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Private.Uri.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Private.Xml.Linq.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Private.Xml.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.DispatchProxy.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Emit.ILGeneration.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Emit.Lightweight.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Emit.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Extensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Metadata.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.TypeExtensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Reflection.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Resources.Reader.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Resources.ResourceManager.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Resources.Writer.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.CompilerServices.Unsafe.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.CompilerServices.VisualC.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Extensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Handles.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.InteropServices.JavaScript.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.InteropServices.RuntimeInformation.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.InteropServices.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Intrinsics.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Loader.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Numerics.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Serialization.Formatters.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Serialization.Json.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Serialization.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Serialization.Xml.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.Serialization.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Runtime.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.AccessControl.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Claims.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.Algorithms.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.Cng.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.Csp.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.Encoding.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.OpenSsl.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.Primitives.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.X509Certificates.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Cryptography.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Principal.Windows.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.Principal.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.SecureString.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Security.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ServiceModel.Web.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ServiceProcess.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.Encoding.CodePages.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.Encoding.Extensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.Encoding.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.Encodings.Web.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.Json.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Text.RegularExpressions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Channels.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Overlapped.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Tasks.Dataflow.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Tasks.Extensions.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Tasks.Parallel.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Tasks.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Thread.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.ThreadPool.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.Timer.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Threading.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Transactions.Local.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Transactions.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.ValueTuple.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Web.HttpUtility.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Web.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Windows.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.Linq.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.ReaderWriter.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.Serialization.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.XDocument.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.XPath.XDocument.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.XPath.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.XmlDocument.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.XmlSerializer.dll\": {\n            \"assemblyVersion\": \"8.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.Xml.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"System.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"WindowsBase.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"mscorlib.dll\": {\n            \"assemblyVersion\": \"4.0.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          },\n          \"netstandard.dll\": {\n            \"assemblyVersion\": \"2.1.0.0\",\n            \"fileVersion\": \"8.0.1425.11118\"\n          }\n        }\n      },\n      \"Humanizer/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core.af\": \"2.14.1\",\n          \"Humanizer.Core.ar\": \"2.14.1\",\n          \"Humanizer.Core.az\": \"2.14.1\",\n          \"Humanizer.Core.bg\": \"2.14.1\",\n          \"Humanizer.Core.bn-BD\": \"2.14.1\",\n          \"Humanizer.Core.cs\": \"2.14.1\",\n          \"Humanizer.Core.da\": \"2.14.1\",\n          \"Humanizer.Core.de\": \"2.14.1\",\n          \"Humanizer.Core.el\": \"2.14.1\",\n          \"Humanizer.Core.es\": \"2.14.1\",\n          \"Humanizer.Core.fa\": \"2.14.1\",\n          \"Humanizer.Core.fi-FI\": \"2.14.1\",\n          \"Humanizer.Core.fr\": \"2.14.1\",\n          \"Humanizer.Core.fr-BE\": \"2.14.1\",\n          \"Humanizer.Core.he\": \"2.14.1\",\n          \"Humanizer.Core.hr\": \"2.14.1\",\n          \"Humanizer.Core.hu\": \"2.14.1\",\n          \"Humanizer.Core.hy\": \"2.14.1\",\n          \"Humanizer.Core.id\": \"2.14.1\",\n          \"Humanizer.Core.is\": \"2.14.1\",\n          \"Humanizer.Core.it\": \"2.14.1\",\n          \"Humanizer.Core.ja\": \"2.14.1\",\n          \"Humanizer.Core.ko-KR\": \"2.14.1\",\n          \"Humanizer.Core.ku\": \"2.14.1\",\n          \"Humanizer.Core.lv\": \"2.14.1\",\n          \"Humanizer.Core.ms-MY\": \"2.14.1\",\n          \"Humanizer.Core.mt\": \"2.14.1\",\n          \"Humanizer.Core.nb\": \"2.14.1\",\n          \"Humanizer.Core.nb-NO\": \"2.14.1\",\n          \"Humanizer.Core.nl\": \"2.14.1\",\n          \"Humanizer.Core.pl\": \"2.14.1\",\n          \"Humanizer.Core.pt\": \"2.14.1\",\n          \"Humanizer.Core.ro\": \"2.14.1\",\n          \"Humanizer.Core.ru\": \"2.14.1\",\n          \"Humanizer.Core.sk\": \"2.14.1\",\n          \"Humanizer.Core.sl\": \"2.14.1\",\n          \"Humanizer.Core.sr\": \"2.14.1\",\n          \"Humanizer.Core.sr-Latn\": \"2.14.1\",\n          \"Humanizer.Core.sv\": \"2.14.1\",\n          \"Humanizer.Core.th-TH\": \"2.14.1\",\n          \"Humanizer.Core.tr\": \"2.14.1\",\n          \"Humanizer.Core.uk\": \"2.14.1\",\n          \"Humanizer.Core.uz-Cyrl-UZ\": \"2.14.1\",\n          \"Humanizer.Core.uz-Latn-UZ\": \"2.14.1\",\n          \"Humanizer.Core.vi\": \"2.14.1\",\n          \"Humanizer.Core.zh-CN\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hans\": \"2.14.1\",\n          \"Humanizer.Core.zh-Hant\": \"2.14.1\"\n        }\n      },\n      \"Humanizer.Core/2.14.1\": {\n        \"runtime\": {\n          \"lib/net6.0/Humanizer.dll\": {\n            \"assemblyVersion\": \"2.14.0.0\",\n            \"fileVersion\": \"2.14.1.48190\"\n          }\n        }\n      },\n      \"Humanizer.Core.af/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/af/Humanizer.resources.dll\": {\n            \"locale\": \"af\"\n          }\n        }\n      },\n      \"Humanizer.Core.ar/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/ar/Humanizer.resources.dll\": {\n            \"locale\": \"ar\"\n          }\n        }\n      },\n      \"Humanizer.Core.az/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/az/Humanizer.resources.dll\": {\n            \"locale\": \"az\"\n          }\n        }\n      },\n      \"Humanizer.Core.bg/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/bg/Humanizer.resources.dll\": {\n            \"locale\": \"bg\"\n          }\n        }\n      },\n      \"Humanizer.Core.bn-BD/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/bn-BD/Humanizer.resources.dll\": {\n            \"locale\": \"bn-BD\"\n          }\n        }\n      },\n      \"Humanizer.Core.cs/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/cs/Humanizer.resources.dll\": {\n            \"locale\": \"cs\"\n          }\n        }\n      },\n      \"Humanizer.Core.da/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/da/Humanizer.resources.dll\": {\n            \"locale\": \"da\"\n          }\n        }\n      },\n      \"Humanizer.Core.de/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/de/Humanizer.resources.dll\": {\n            \"locale\": \"de\"\n          }\n        }\n      },\n      \"Humanizer.Core.el/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/el/Humanizer.resources.dll\": {\n            \"locale\": \"el\"\n          }\n        }\n      },\n      \"Humanizer.Core.es/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/es/Humanizer.resources.dll\": {\n            \"locale\": \"es\"\n          }\n        }\n      },\n      \"Humanizer.Core.fa/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/fa/Humanizer.resources.dll\": {\n            \"locale\": \"fa\"\n          }\n        }\n      },\n      \"Humanizer.Core.fi-FI/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/fi-FI/Humanizer.resources.dll\": {\n            \"locale\": \"fi-FI\"\n          }\n        }\n      },\n      \"Humanizer.Core.fr/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/fr/Humanizer.resources.dll\": {\n            \"locale\": \"fr\"\n          }\n        }\n      },\n      \"Humanizer.Core.fr-BE/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/fr-BE/Humanizer.resources.dll\": {\n            \"locale\": \"fr-BE\"\n          }\n        }\n      },\n      \"Humanizer.Core.he/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/he/Humanizer.resources.dll\": {\n            \"locale\": \"he\"\n          }\n        }\n      },\n      \"Humanizer.Core.hr/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/hr/Humanizer.resources.dll\": {\n            \"locale\": \"hr\"\n          }\n        }\n      },\n      \"Humanizer.Core.hu/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/hu/Humanizer.resources.dll\": {\n            \"locale\": \"hu\"\n          }\n        }\n      },\n      \"Humanizer.Core.hy/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/hy/Humanizer.resources.dll\": {\n            \"locale\": \"hy\"\n          }\n        }\n      },\n      \"Humanizer.Core.id/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/id/Humanizer.resources.dll\": {\n            \"locale\": \"id\"\n          }\n        }\n      },\n      \"Humanizer.Core.is/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/is/Humanizer.resources.dll\": {\n            \"locale\": \"is\"\n          }\n        }\n      },\n      \"Humanizer.Core.it/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/it/Humanizer.resources.dll\": {\n            \"locale\": \"it\"\n          }\n        }\n      },\n      \"Humanizer.Core.ja/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/ja/Humanizer.resources.dll\": {\n            \"locale\": \"ja\"\n          }\n        }\n      },\n      \"Humanizer.Core.ko-KR/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/netstandard2.0/ko-KR/Humanizer.resources.dll\": {\n            \"locale\": \"ko-KR\"\n          }\n        }\n      },\n      \"Humanizer.Core.ku/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/ku/Humanizer.resources.dll\": {\n            \"locale\": \"ku\"\n          }\n        }\n      },\n      \"Humanizer.Core.lv/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/lv/Humanizer.resources.dll\": {\n            \"locale\": \"lv\"\n          }\n        }\n      },\n      \"Humanizer.Core.ms-MY/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/netstandard2.0/ms-MY/Humanizer.resources.dll\": {\n            \"locale\": \"ms-MY\"\n          }\n        }\n      },\n      \"Humanizer.Core.mt/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/netstandard2.0/mt/Humanizer.resources.dll\": {\n            \"locale\": \"mt\"\n          }\n        }\n      },\n      \"Humanizer.Core.nb/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/nb/Humanizer.resources.dll\": {\n            \"locale\": \"nb\"\n          }\n        }\n      },\n      \"Humanizer.Core.nb-NO/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/nb-NO/Humanizer.resources.dll\": {\n            \"locale\": \"nb-NO\"\n          }\n        }\n      },\n      \"Humanizer.Core.nl/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/nl/Humanizer.resources.dll\": {\n            \"locale\": \"nl\"\n          }\n        }\n      },\n      \"Humanizer.Core.pl/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/pl/Humanizer.resources.dll\": {\n            \"locale\": \"pl\"\n          }\n        }\n      },\n      \"Humanizer.Core.pt/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/pt/Humanizer.resources.dll\": {\n            \"locale\": \"pt\"\n          }\n        }\n      },\n      \"Humanizer.Core.ro/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/ro/Humanizer.resources.dll\": {\n            \"locale\": \"ro\"\n          }\n        }\n      },\n      \"Humanizer.Core.ru/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/ru/Humanizer.resources.dll\": {\n            \"locale\": \"ru\"\n          }\n        }\n      },\n      \"Humanizer.Core.sk/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/sk/Humanizer.resources.dll\": {\n            \"locale\": \"sk\"\n          }\n        }\n      },\n      \"Humanizer.Core.sl/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/sl/Humanizer.resources.dll\": {\n            \"locale\": \"sl\"\n          }\n        }\n      },\n      \"Humanizer.Core.sr/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/sr/Humanizer.resources.dll\": {\n            \"locale\": \"sr\"\n          }\n        }\n      },\n      \"Humanizer.Core.sr-Latn/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/sr-Latn/Humanizer.resources.dll\": {\n            \"locale\": \"sr-Latn\"\n          }\n        }\n      },\n      \"Humanizer.Core.sv/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/sv/Humanizer.resources.dll\": {\n            \"locale\": \"sv\"\n          }\n        }\n      },\n      \"Humanizer.Core.th-TH/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/netstandard2.0/th-TH/Humanizer.resources.dll\": {\n            \"locale\": \"th-TH\"\n          }\n        }\n      },\n      \"Humanizer.Core.tr/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/tr/Humanizer.resources.dll\": {\n            \"locale\": \"tr\"\n          }\n        }\n      },\n      \"Humanizer.Core.uk/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/uk/Humanizer.resources.dll\": {\n            \"locale\": \"uk\"\n          }\n        }\n      },\n      \"Humanizer.Core.uz-Cyrl-UZ/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/uz-Cyrl-UZ/Humanizer.resources.dll\": {\n            \"locale\": \"uz-Cyrl-UZ\"\n          }\n        }\n      },\n      \"Humanizer.Core.uz-Latn-UZ/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/uz-Latn-UZ/Humanizer.resources.dll\": {\n            \"locale\": \"uz-Latn-UZ\"\n          }\n        }\n      },\n      \"Humanizer.Core.vi/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/vi/Humanizer.resources.dll\": {\n            \"locale\": \"vi\"\n          }\n        }\n      },\n      \"Humanizer.Core.zh-CN/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/zh-CN/Humanizer.resources.dll\": {\n            \"locale\": \"zh-CN\"\n          }\n        }\n      },\n      \"Humanizer.Core.zh-Hans/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/zh-Hans/Humanizer.resources.dll\": {\n            \"locale\": \"zh-Hans\"\n          }\n        }\n      },\n      \"Humanizer.Core.zh-Hant/2.14.1\": {\n        \"dependencies\": {\n          \"Humanizer.Core\": \"2.14.1\"\n        },\n        \"resources\": {\n          \"lib/net6.0/zh-Hant/Humanizer.resources.dll\": {\n            \"locale\": \"zh-Hant\"\n          }\n        }\n      },\n      \"Newtonsoft.Json/13.0.3\": {\n        \"runtime\": {\n          \"lib/net6.0/Newtonsoft.Json.dll\": {\n            \"assemblyVersion\": \"13.0.0.0\",\n            \"fileVersion\": \"13.0.3.27908\"\n          }\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"dotnetapp/1.0.0\": {\n      \"type\": \"project\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    },\n    \"runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.14\": {\n      \"type\": \"runtimepack\",\n      \"serviceable\": false,\n      \"sha512\": \"\"\n    },\n    \"Humanizer/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/FUTD3cEceAAmJSCPN9+J+VhGwmL/C12jvwlyM1DFXShEMsBzvLzLqSrJ2rb+k/W2znKw7JyflZgZpyE+tI7lA==\",\n      \"path\": \"humanizer/2.14.1\",\n      \"hashPath\": \"humanizer.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==\",\n      \"path\": \"humanizer.core/2.14.1\",\n      \"hashPath\": \"humanizer.core.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.af/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-BoQHyu5le+xxKOw+/AUM7CLXneM/Bh3++0qh1u0+D95n6f9eGt9kNc8LcAHLIOwId7Sd5hiAaaav0Nimj3peNw==\",\n      \"path\": \"humanizer.core.af/2.14.1\",\n      \"hashPath\": \"humanizer.core.af.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ar/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-3d1V10LDtmqg5bZjWkA/EkmGFeSfNBcyCH+TiHcHP+HGQQmRq3eBaLcLnOJbVQVn3Z6Ak8GOte4RX4kVCxQlFA==\",\n      \"path\": \"humanizer.core.ar/2.14.1\",\n      \"hashPath\": \"humanizer.core.ar.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.az/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-8Z/tp9PdHr/K2Stve2Qs/7uqWPWLUK9D8sOZDNzyv42e20bSoJkHFn7SFoxhmaoVLJwku2jp6P7HuwrfkrP18Q==\",\n      \"path\": \"humanizer.core.az/2.14.1\",\n      \"hashPath\": \"humanizer.core.az.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.bg/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-S+hIEHicrOcbV2TBtyoPp1AVIGsBzlarOGThhQYCnP6QzEYo/5imtok6LMmhZeTnBFoKhM8yJqRfvJ5yqVQKSQ==\",\n      \"path\": \"humanizer.core.bg/2.14.1\",\n      \"hashPath\": \"humanizer.core.bg.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.bn-BD/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-U3bfj90tnUDRKlL1ZFlzhCHoVgpTcqUlTQxjvGCaFKb+734TTu3nkHUWVZltA1E/swTvimo/aXLtkxnLFrc0EQ==\",\n      \"path\": \"humanizer.core.bn-bd/2.14.1\",\n      \"hashPath\": \"humanizer.core.bn-bd.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.cs/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-jWrQkiCTy3L2u1T86cFkgijX6k7hoB0pdcFMWYaSZnm6rvG/XJE40tfhYyKhYYgIc1x9P2GO5AC7xXvFnFdqMQ==\",\n      \"path\": \"humanizer.core.cs/2.14.1\",\n      \"hashPath\": \"humanizer.core.cs.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.da/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-5o0rJyE/2wWUUphC79rgYDnif/21MKTTx9LIzRVz9cjCIVFrJ2bDyR2gapvI9D6fjoyvD1NAfkN18SHBsO8S9g==\",\n      \"path\": \"humanizer.core.da/2.14.1\",\n      \"hashPath\": \"humanizer.core.da.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.de/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-9JD/p+rqjb8f5RdZ3aEJqbjMYkbk4VFii2QDnnOdNo6ywEfg/A5YeOQ55CaBJmy7KvV4tOK4+qHJnX/tg3Z54A==\",\n      \"path\": \"humanizer.core.de/2.14.1\",\n      \"hashPath\": \"humanizer.core.de.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.el/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-Xmv6sTL5mqjOWGGpqY7bvbfK5RngaUHSa8fYDGSLyxY9mGdNbDcasnRnMOvi0SxJS9gAqBCn21Xi90n2SHZbFA==\",\n      \"path\": \"humanizer.core.el/2.14.1\",\n      \"hashPath\": \"humanizer.core.el.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.es/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-e//OIAeMB7pjBV1HqqI4pM2Bcw3Jwgpyz9G5Fi4c+RJvhqFwztoWxW57PzTnNJE2lbhGGLQZihFZjsbTUsbczA==\",\n      \"path\": \"humanizer.core.es/2.14.1\",\n      \"hashPath\": \"humanizer.core.es.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.fa/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-nzDOj1x0NgjXMjsQxrET21t1FbdoRYujzbmZoR8u8ou5CBWY1UNca0j6n/PEJR/iUbt4IxstpszRy41wL/BrpA==\",\n      \"path\": \"humanizer.core.fa/2.14.1\",\n      \"hashPath\": \"humanizer.core.fa.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.fi-FI/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-Vnxxx4LUhp3AzowYi6lZLAA9Lh8UqkdwRh4IE2qDXiVpbo08rSbokATaEzFS+o+/jCNZBmoyyyph3vgmcSzhhQ==\",\n      \"path\": \"humanizer.core.fi-fi/2.14.1\",\n      \"hashPath\": \"humanizer.core.fi-fi.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.fr/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-2p4g0BYNzFS3u9SOIDByp2VClYKO0K1ecDV4BkB9EYdEPWfFODYnF+8CH8LpUrpxL2TuWo2fiFx/4Jcmrnkbpg==\",\n      \"path\": \"humanizer.core.fr/2.14.1\",\n      \"hashPath\": \"humanizer.core.fr.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.fr-BE/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-o6R3SerxCRn5Ij8nCihDNMGXlaJ/1AqefteAssgmU2qXYlSAGdhxmnrQAXZUDlE4YWt/XQ6VkNLtH7oMqsSPFQ==\",\n      \"path\": \"humanizer.core.fr-be/2.14.1\",\n      \"hashPath\": \"humanizer.core.fr-be.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.he/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-FPsAhy7Iw6hb+ZitLgYC26xNcgGAHXb0V823yFAzcyoL5ozM+DCJtYfDPYiOpsJhEZmKFTM9No0jUn1M89WGvg==\",\n      \"path\": \"humanizer.core.he/2.14.1\",\n      \"hashPath\": \"humanizer.core.he.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.hr/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-chnaD89yOlST142AMkAKLuzRcV5df3yyhDyRU5rypDiqrq2HN8y1UR3h1IicEAEtXLoOEQyjSAkAQ6QuXkn7aw==\",\n      \"path\": \"humanizer.core.hr/2.14.1\",\n      \"hashPath\": \"humanizer.core.hr.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.hu/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-hAfnaoF9LTGU/CmFdbnvugN4tIs8ppevVMe3e5bD24+tuKsggMc5hYta9aiydI8JH9JnuVmxvNI4DJee1tK05A==\",\n      \"path\": \"humanizer.core.hu/2.14.1\",\n      \"hashPath\": \"humanizer.core.hu.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.hy/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-sVIKxOiSBUb4gStRHo9XwwAg9w7TNvAXbjy176gyTtaTiZkcjr9aCPziUlYAF07oNz6SdwdC2mwJBGgvZ0Sl2g==\",\n      \"path\": \"humanizer.core.hy/2.14.1\",\n      \"hashPath\": \"humanizer.core.hy.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.id/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-4Zl3GTvk3a49Ia/WDNQ97eCupjjQRs2iCIZEQdmkiqyaLWttfb+cYXDMGthP42nufUL0SRsvBctN67oSpnXtsg==\",\n      \"path\": \"humanizer.core.id/2.14.1\",\n      \"hashPath\": \"humanizer.core.id.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.is/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-R67A9j/nNgcWzU7gZy1AJ07ABSLvogRbqOWvfRDn4q6hNdbg/mjGjZBp4qCTPnB2mHQQTCKo3oeCUayBCNIBCw==\",\n      \"path\": \"humanizer.core.is/2.14.1\",\n      \"hashPath\": \"humanizer.core.is.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.it/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-jYxGeN4XIKHVND02FZ+Woir3CUTyBhLsqxu9iqR/9BISArkMf1Px6i5pRZnvq4fc5Zn1qw71GKKoCaHDJBsLFw==\",\n      \"path\": \"humanizer.core.it/2.14.1\",\n      \"hashPath\": \"humanizer.core.it.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ja/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-TM3ablFNoYx4cYJybmRgpDioHpiKSD7q0QtMrmpsqwtiiEsdW5zz/q4PolwAczFnvrKpN6nBXdjnPPKVet93ng==\",\n      \"path\": \"humanizer.core.ja/2.14.1\",\n      \"hashPath\": \"humanizer.core.ja.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ko-KR/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-CtvwvK941k/U0r8PGdEuBEMdW6jv/rBiA9tUhakC7Zd2rA/HCnDcbr1DiNZ+/tRshnhzxy/qwmpY8h4qcAYCtQ==\",\n      \"path\": \"humanizer.core.ko-kr/2.14.1\",\n      \"hashPath\": \"humanizer.core.ko-kr.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ku/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-vHmzXcVMe+LNrF9txpdHzpG7XJX65SiN9GQd/Zkt6gsGIIEeECHrkwCN5Jnlkddw2M/b0HS4SNxdR1GrSn7uCA==\",\n      \"path\": \"humanizer.core.ku/2.14.1\",\n      \"hashPath\": \"humanizer.core.ku.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.lv/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-E1/KUVnYBS1bdOTMNDD7LV/jdoZv/fbWTLPtvwdMtSdqLyRTllv6PGM9xVQoFDYlpvVGtEl/09glCojPHw8ffA==\",\n      \"path\": \"humanizer.core.lv/2.14.1\",\n      \"hashPath\": \"humanizer.core.lv.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ms-MY/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-vX8oq9HnYmAF7bek4aGgGFJficHDRTLgp/EOiPv9mBZq0i4SA96qVMYSjJ2YTaxs7Eljqit7pfpE2nmBhY5Fnw==\",\n      \"path\": \"humanizer.core.ms-my/2.14.1\",\n      \"hashPath\": \"humanizer.core.ms-my.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.mt/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-pEgTBzUI9hzemF7xrIZigl44LidTUhNu4x/P6M9sAwZjkUF0mMkbpxKkaasOql7lLafKrnszs0xFfaxQyzeuZQ==\",\n      \"path\": \"humanizer.core.mt/2.14.1\",\n      \"hashPath\": \"humanizer.core.mt.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.nb/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-mbs3m6JJq53ssLqVPxNfqSdTxAcZN3njlG8yhJVx83XVedpTe1ECK9aCa8FKVOXv93Gl+yRHF82Hw9T9LWv2hw==\",\n      \"path\": \"humanizer.core.nb/2.14.1\",\n      \"hashPath\": \"humanizer.core.nb.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.nb-NO/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-AsJxrrVYmIMbKDGe8W6Z6//wKv9dhWH7RsTcEHSr4tQt/80pcNvLi0hgD3fqfTtg0tWKtgch2cLf4prorEV+5A==\",\n      \"path\": \"humanizer.core.nb-no/2.14.1\",\n      \"hashPath\": \"humanizer.core.nb-no.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.nl/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-24b0OUdzJxfoqiHPCtYnR5Y4l/s4Oh7KW7uDp+qX25NMAHLCGog2eRfA7p2kRJp8LvnynwwQxm2p534V9m55wQ==\",\n      \"path\": \"humanizer.core.nl/2.14.1\",\n      \"hashPath\": \"humanizer.core.nl.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.pl/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-17mJNYaBssENVZyQHduiq+bvdXS0nhZJGEXtPKoMhKv3GD//WO0mEfd9wjEBsWCSmWI7bjRqhCidxzN+YtJmsg==\",\n      \"path\": \"humanizer.core.pl/2.14.1\",\n      \"hashPath\": \"humanizer.core.pl.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.pt/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-8HB8qavcVp2la1GJX6t+G9nDYtylPKzyhxr9LAooIei9MnQvNsjEiIE4QvHoeDZ4weuQ9CsPg1c211XUMVEZ4A==\",\n      \"path\": \"humanizer.core.pt/2.14.1\",\n      \"hashPath\": \"humanizer.core.pt.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ro/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-psXNOcA6R8fSHoQYhpBTtTTYiOk8OBoN3PKCEDgsJKIyeY5xuK81IBdGi77qGZMu/OwBRQjQCBMtPJb0f4O1+A==\",\n      \"path\": \"humanizer.core.ro/2.14.1\",\n      \"hashPath\": \"humanizer.core.ro.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.ru/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-zm245xUWrajSN2t9H7BTf84/2APbUkKlUJpcdgsvTdAysr1ag9fi1APu6JEok39RRBXDfNRVZHawQ/U8X0pSvQ==\",\n      \"path\": \"humanizer.core.ru/2.14.1\",\n      \"hashPath\": \"humanizer.core.ru.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.sk/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-Ncw24Vf3ioRnbU4MsMFHafkyYi8JOnTqvK741GftlQvAbULBoTz2+e7JByOaasqeSi0KfTXeegJO+5Wk1c0Mbw==\",\n      \"path\": \"humanizer.core.sk/2.14.1\",\n      \"hashPath\": \"humanizer.core.sk.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.sl/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-l8sUy4ciAIbVThWNL0atzTS2HWtv8qJrsGWNlqrEKmPwA4SdKolSqnTes9V89fyZTc2Q43jK8fgzVE2C7t009A==\",\n      \"path\": \"humanizer.core.sl/2.14.1\",\n      \"hashPath\": \"humanizer.core.sl.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.sr/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-rnNvhpkOrWEymy7R/MiFv7uef8YO5HuXDyvojZ7JpijHWA5dXuVXooCOiA/3E93fYa3pxDuG2OQe4M/olXbQ7w==\",\n      \"path\": \"humanizer.core.sr/2.14.1\",\n      \"hashPath\": \"humanizer.core.sr.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.sr-Latn/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-nuy/ykpk974F8ItoQMS00kJPr2dFNjOSjgzCwfysbu7+gjqHmbLcYs7G4kshLwdA4AsVncxp99LYeJgoh1JF5g==\",\n      \"path\": \"humanizer.core.sr-latn/2.14.1\",\n      \"hashPath\": \"humanizer.core.sr-latn.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.sv/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-E53+tpAG0RCp+cSSI7TfBPC+NnsEqUuoSV0sU+rWRXWr9MbRWx1+Zj02XMojqjGzHjjOrBFBBio6m74seFl0AA==\",\n      \"path\": \"humanizer.core.sv/2.14.1\",\n      \"hashPath\": \"humanizer.core.sv.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.th-TH/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-eSevlJtvs1r4vQarNPfZ2kKDp/xMhuD00tVVzRXkSh1IAZbBJI/x2ydxUOwfK9bEwEp+YjvL1Djx2+kw7ziu7g==\",\n      \"path\": \"humanizer.core.th-th/2.14.1\",\n      \"hashPath\": \"humanizer.core.th-th.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.tr/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-rQ8N+o7yFcFqdbtu1mmbrXFi8TQ+uy+fVH9OPI0CI3Cu1om5hUU/GOMC3hXsTCI6d79y4XX+0HbnD7FT5khegA==\",\n      \"path\": \"humanizer.core.tr/2.14.1\",\n      \"hashPath\": \"humanizer.core.tr.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.uk/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-2uEfujwXKNm6bdpukaLtEJD+04uUtQD65nSGCetA1fYNizItEaIBUboNfr3GzJxSMQotNwGVM3+nSn8jTd0VSg==\",\n      \"path\": \"humanizer.core.uk/2.14.1\",\n      \"hashPath\": \"humanizer.core.uk.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.uz-Cyrl-UZ/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-TD3ME2sprAvFqk9tkWrvSKx5XxEMlAn1sjk+cYClSWZlIMhQQ2Bp/w0VjX1Kc5oeKjxRAnR7vFcLUFLiZIDk9Q==\",\n      \"path\": \"humanizer.core.uz-cyrl-uz/2.14.1\",\n      \"hashPath\": \"humanizer.core.uz-cyrl-uz.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.uz-Latn-UZ/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-/kHAoF4g0GahnugZiEMpaHlxb+W6jCEbWIdsq9/I1k48ULOsl/J0pxZj93lXC3omGzVF1BTVIeAtv5fW06Phsg==\",\n      \"path\": \"humanizer.core.uz-latn-uz/2.14.1\",\n      \"hashPath\": \"humanizer.core.uz-latn-uz.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.vi/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-rsQNh9rmHMBtnsUUlJbShMsIMGflZtPmrMM6JNDw20nhsvqfrdcoDD8cMnLAbuSovtc3dP+swRmLQzKmXDTVPA==\",\n      \"path\": \"humanizer.core.vi/2.14.1\",\n      \"hashPath\": \"humanizer.core.vi.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.zh-CN/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-uH2dWhrgugkCjDmduLdAFO9w1Mo0q07EuvM0QiIZCVm6FMCu/lGv2fpMu4GX+4HLZ6h5T2Pg9FIdDLCPN2a67w==\",\n      \"path\": \"humanizer.core.zh-cn/2.14.1\",\n      \"hashPath\": \"humanizer.core.zh-cn.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.zh-Hans/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-WH6IhJ8V1UBG7rZXQk3dZUoP2gsi8a0WkL8xL0sN6WGiv695s8nVcmab9tWz20ySQbuzp0UkSxUQFi5jJHIpOQ==\",\n      \"path\": \"humanizer.core.zh-hans/2.14.1\",\n      \"hashPath\": \"humanizer.core.zh-hans.2.14.1.nupkg.sha512\"\n    },\n    \"Humanizer.Core.zh-Hant/2.14.1\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-VIXB7HCUC34OoaGnO3HJVtSv2/wljPhjV7eKH4+TFPgQdJj2lvHNKY41Dtg0Bphu7X5UaXFR4zrYYyo+GNOjbA==\",\n      \"path\": \"humanizer.core.zh-hant/2.14.1\",\n      \"hashPath\": \"humanizer.core.zh-hant.2.14.1.nupkg.sha512\"\n    },\n    \"Newtonsoft.Json/13.0.3\": {\n      \"type\": \"package\",\n      \"serviceable\": true,\n      \"sha512\": \"sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==\",\n      \"path\": \"newtonsoft.json/13.0.3\",\n      \"hashPath\": \"newtonsoft.json.13.0.3.nupkg.sha512\"\n    }\n  },\n  \"runtimes\": {\n    \"win-x64\": [\n      \"win\",\n      \"any\",\n      \"base\"\n    ]\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/internal/pkgtest/metadata_tracker.go",
    "content": "// Package pkgtest provides test helpers for cataloger and parser testing,\n// including automatic observation tracking for capability documentation.\npackage pkgtest\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"sort\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/anchore/syft/internal/capabilities/pkgtestobservation\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar (\n\tglobalTracker     *MetadataTracker\n\tglobalTrackerOnce sync.Once\n\n\t// commonPackageIntegrityFields are common field names used to store integrity hashes in package metadata.\n\t// TODO: this is a best-effort list and may need to be expanded as new package types are added. Don't depend on this list to catch everything - it's only for test validation.\n\tcommonPackageIntegrityFields = []string{\n\t\t\"Integrity\", \"Checksum\", \"H1Digest\",\n\t\t\"OutputHash\", \"PkgHash\", \"ContentHash\",\n\t\t\"PkgHashExt\", \"Hash\", \"IntegrityHash\",\n\t}\n)\n\n// MetadataTracker collects metadata type and package type usage during test execution\ntype MetadataTracker struct {\n\tmu                    sync.Mutex\n\tparserData            map[string]map[string]map[string]bool // package -> parser -> metadata types (set)\n\tcatalogerData         map[string]map[string]bool            // cataloger -> metadata types (set)\n\tparserPackageTypes    map[string]map[string]map[string]bool // package -> parser -> package types (set)\n\tcatalogerPackageTypes map[string]map[string]bool            // cataloger -> package types (set)\n\n\t// unified observations for the current test package\n\tobservations *pkgtestobservation.Test\n}\n\n// getTracker returns the singleton metadata tracker\nfunc getTracker() *MetadataTracker {\n\tglobalTrackerOnce.Do(func() {\n\t\tglobalTracker = &MetadataTracker{\n\t\t\tparserData:            make(map[string]map[string]map[string]bool),\n\t\t\tcatalogerData:         make(map[string]map[string]bool),\n\t\t\tparserPackageTypes:    make(map[string]map[string]map[string]bool),\n\t\t\tcatalogerPackageTypes: make(map[string]map[string]bool),\n\t\t}\n\t})\n\treturn globalTracker\n}\n\n// RecordParser records a metadata type usage for a parser function\nfunc (t *MetadataTracker) RecordParser(packageName, parserFunction, metadataType string) {\n\tif packageName == \"\" || parserFunction == \"\" || metadataType == \"\" {\n\t\treturn\n\t}\n\n\t// filter out non-metadata types\n\tif metadataType == \"pkg.Package\" || metadataType == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif t.parserData[packageName] == nil {\n\t\tt.parserData[packageName] = make(map[string]map[string]bool)\n\t}\n\n\tif t.parserData[packageName][parserFunction] == nil {\n\t\tt.parserData[packageName][parserFunction] = make(map[string]bool)\n\t}\n\n\tt.parserData[packageName][parserFunction][metadataType] = true\n}\n\n// RecordCataloger records a metadata type usage for a cataloger\nfunc (t *MetadataTracker) RecordCataloger(catalogerName, metadataType string) {\n\tif catalogerName == \"\" || metadataType == \"\" {\n\t\treturn\n\t}\n\n\t// filter out non-metadata types\n\tif metadataType == \"pkg.Package\" || metadataType == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif t.catalogerData[catalogerName] == nil {\n\t\tt.catalogerData[catalogerName] = make(map[string]bool)\n\t}\n\n\tt.catalogerData[catalogerName][metadataType] = true\n}\n\n// RecordParserPackageType records a package type usage for a parser function\nfunc (t *MetadataTracker) RecordParserPackageType(packageName, parserFunction, pkgType string) {\n\tif packageName == \"\" || parserFunction == \"\" || pkgType == \"\" {\n\t\treturn\n\t}\n\n\t// filter out unknown types\n\tif pkgType == pkg.UnknownPkg.String() || pkgType == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif t.parserPackageTypes[packageName] == nil {\n\t\tt.parserPackageTypes[packageName] = make(map[string]map[string]bool)\n\t}\n\n\tif t.parserPackageTypes[packageName][parserFunction] == nil {\n\t\tt.parserPackageTypes[packageName][parserFunction] = make(map[string]bool)\n\t}\n\n\tt.parserPackageTypes[packageName][parserFunction][pkgType] = true\n}\n\n// RecordCatalogerPackageType records a package type usage for a cataloger\nfunc (t *MetadataTracker) RecordCatalogerPackageType(catalogerName, pkgType string) {\n\tif catalogerName == \"\" || pkgType == \"\" {\n\t\treturn\n\t}\n\n\t// filter out unknown types\n\tif pkgType == pkg.UnknownPkg.String() || pkgType == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif t.catalogerPackageTypes[catalogerName] == nil {\n\t\tt.catalogerPackageTypes[catalogerName] = make(map[string]bool)\n\t}\n\n\tt.catalogerPackageTypes[catalogerName][pkgType] = true\n}\n\n// RecordParserPackageMetadata extracts and records metadata type and package type from a package for a parser\nfunc (t *MetadataTracker) RecordParserPackageMetadata(packageName, parserFunction string, p pkg.Package) {\n\tif p.Metadata != nil {\n\t\tmetadataType := getMetadataTypeName(p.Metadata)\n\t\tif metadataType != \"\" {\n\t\t\tt.RecordParser(packageName, parserFunction, metadataType)\n\t\t}\n\t}\n\n\t// record package type\n\tt.RecordParserPackageType(packageName, parserFunction, string(p.Type))\n}\n\n// RecordCatalogerPackageMetadata extracts and records metadata type and package type from a package for a cataloger\nfunc (t *MetadataTracker) RecordCatalogerPackageMetadata(catalogerName string, p pkg.Package) {\n\tif p.Metadata != nil {\n\t\tmetadataType := getMetadataTypeName(p.Metadata)\n\t\tif metadataType != \"\" {\n\t\t\tt.RecordCataloger(catalogerName, metadataType)\n\t\t}\n\t}\n\n\t// record package type\n\tt.RecordCatalogerPackageType(catalogerName, string(p.Type))\n}\n\n// aggregateObservations aggregates package and relationship observations into metadata types, package types, and observations.\n// this is used by both parser and cataloger observation recording.\nfunc aggregateObservations(\n\tmetadataTypes *[]string,\n\tpackageTypes *[]string,\n\tobs *pkgtestobservation.Observations,\n\tpkgs []pkg.Package,\n\trelationships []artifact.Relationship,\n) {\n\t// aggregate observations from packages\n\tfor _, p := range pkgs {\n\t\t// metadata types\n\t\tif p.Metadata != nil {\n\t\t\tmetadataType := getMetadataTypeName(p.Metadata)\n\t\t\tif metadataType != \"\" && !contains(*metadataTypes, metadataType) {\n\t\t\t\t*metadataTypes = append(*metadataTypes, metadataType)\n\t\t\t}\n\t\t}\n\n\t\t// package types\n\t\tpkgType := string(p.Type)\n\t\tif pkgType != \"\" && pkgType != pkg.UnknownPkg.String() && !contains(*packageTypes, pkgType) {\n\t\t\t*packageTypes = append(*packageTypes, pkgType)\n\t\t}\n\n\t\t// license observation\n\t\tif !p.Licenses.Empty() {\n\t\t\tobs.License = true\n\t\t}\n\n\t\t// file listing observation\n\t\tif fileOwner, ok := p.Metadata.(pkg.FileOwner); ok {\n\t\t\tfiles := fileOwner.OwnedFiles()\n\t\t\tif len(files) > 0 {\n\t\t\t\tobs.FileListing.Found = true\n\t\t\t\tobs.FileListing.Count += len(files)\n\t\t\t}\n\t\t}\n\n\t\t// file digests observation\n\t\tif hasFileDigests(p.Metadata) {\n\t\t\tobs.FileDigests.Found = true\n\t\t\tobs.FileDigests.Count++\n\t\t}\n\n\t\t// integrity hash observation\n\t\tif hasIntegrityHash(p.Metadata) {\n\t\t\tobs.IntegrityHash.Found = true\n\t\t\tobs.IntegrityHash.Count++\n\t\t}\n\t}\n\n\t// relationship observations\n\tdepCount := countDependencyRelationships(relationships)\n\tif depCount > 0 {\n\t\tobs.Relationships.Found = true\n\t\tobs.Relationships.Count = depCount\n\t}\n\n\t// sort arrays for consistency\n\tsort.Strings(*metadataTypes)\n\tsort.Strings(*packageTypes)\n}\n\n// ensureObservationsInitialized ensures t.observations is initialized and package name is set.\n// must be called with t.mu locked.\nfunc (t *MetadataTracker) ensureObservationsInitialized(packageName string) {\n\tif t.observations == nil {\n\t\tt.observations = &pkgtestobservation.Test{\n\t\t\tPackage:    packageName,\n\t\t\tCatalogers: make(map[string]*pkgtestobservation.Cataloger),\n\t\t\tParsers:    make(map[string]*pkgtestobservation.Parser),\n\t\t}\n\t\treturn\n\t}\n\n\t// update package name if not set (for the first test) or if it matches (for subsequent tests in same package)\n\tif t.observations.Package == \"\" || t.observations.Package == packageName {\n\t\tt.observations.Package = packageName\n\t}\n}\n\n// getOrCreateParser gets an existing parser observation or creates a new one.\n// must be called with t.mu locked.\nfunc (t *MetadataTracker) getOrCreateParser(parserFunction string) *pkgtestobservation.Parser {\n\tif t.observations.Parsers[parserFunction] == nil {\n\t\tt.observations.Parsers[parserFunction] = &pkgtestobservation.Parser{\n\t\t\tMetadataTypes: []string{},\n\t\t\tPackageTypes:  []string{},\n\t\t\tObservations:  pkgtestobservation.Observations{},\n\t\t}\n\t}\n\treturn t.observations.Parsers[parserFunction]\n}\n\n// getOrCreateCataloger gets an existing cataloger observation or creates a new one.\n// must be called with t.mu locked.\nfunc (t *MetadataTracker) getOrCreateCataloger(catalogerName string) *pkgtestobservation.Cataloger {\n\tif t.observations.Catalogers[catalogerName] == nil {\n\t\tt.observations.Catalogers[catalogerName] = &pkgtestobservation.Cataloger{\n\t\t\tMetadataTypes: []string{},\n\t\t\tPackageTypes:  []string{},\n\t\t\tObservations:  pkgtestobservation.Observations{},\n\t\t}\n\t}\n\treturn t.observations.Catalogers[catalogerName]\n}\n\n// RecordParserObservations records comprehensive observations for a parser.\nfunc (t *MetadataTracker) RecordParserObservations(\n\tpackageName, parserFunction string,\n\tpkgs []pkg.Package,\n\trelationships []artifact.Relationship,\n) {\n\tif packageName == \"\" || parserFunction == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tt.ensureObservationsInitialized(packageName)\n\tparser := t.getOrCreateParser(parserFunction)\n\taggregateObservations(&parser.MetadataTypes, &parser.PackageTypes, &parser.Observations, pkgs, relationships)\n}\n\n// RecordCatalogerObservations records comprehensive observations for a cataloger.\nfunc (t *MetadataTracker) RecordCatalogerObservations(\n\tpackageName, catalogerName string,\n\tpkgs []pkg.Package,\n\trelationships []artifact.Relationship,\n) {\n\tif packageName == \"\" || catalogerName == \"\" {\n\t\treturn\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tt.ensureObservationsInitialized(packageName)\n\tcataloger := t.getOrCreateCataloger(catalogerName)\n\taggregateObservations(&cataloger.MetadataTypes, &cataloger.PackageTypes, &cataloger.Observations, pkgs, relationships)\n}\n\n// ===== Metadata Type and Capability Detection =====\n// These functions use reflection to inspect package metadata and detect capabilities.\n// They are best-effort and may not catch all cases.\n\n// getMetadataTypeName returns the fully qualified type name of metadata (e.g., \"pkg.ApkDBEntry\").\n// extracts just the last package path segment to keep names concise.\nfunc getMetadataTypeName(metadata interface{}) string {\n\tif metadata == nil {\n\t\treturn \"\"\n\t}\n\n\tt := reflect.TypeOf(metadata)\n\tif t == nil {\n\t\treturn \"\"\n\t}\n\n\t// handle pointers\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\n\t// return pkg path + type name (e.g., \"pkg.ApkDBEntry\")\n\tif t.PkgPath() != \"\" {\n\t\t// extract just \"pkg\" from \"github.com/anchore/syft/syft/pkg\"\n\t\tpkgPath := lastPathSegment(t.PkgPath())\n\t\treturn pkgPath + \".\" + t.Name()\n\t}\n\n\treturn t.Name()\n}\n\n// lastPathSegment extracts the last segment from a package path.\n// for example: \"github.com/anchore/syft/syft/pkg\" -> \"pkg\"\nfunc lastPathSegment(path string) string {\n\tfor i := len(path) - 1; i >= 0; i-- {\n\t\tif path[i] == '/' {\n\t\t\treturn path[i+1:]\n\t\t}\n\t}\n\treturn path\n}\n\n// hasIntegrityHash checks if metadata contains an integrity hash field.\n// note: this uses a best-effort approach checking common field names.\n// DO NOT depend on these values in auto-generated capabilities definitions - use for test validation only.\nfunc hasIntegrityHash(metadata interface{}) bool {\n\tv := dereferenceToStruct(metadata)\n\tif !v.IsValid() || v.Kind() != reflect.Struct {\n\t\treturn false\n\t}\n\n\tfor _, fieldName := range commonPackageIntegrityFields {\n\t\tif hasPopulatedStringField(v, fieldName) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// hasFileDigests checks if metadata contains file records with digests.\n// note: uses a best-effort approach for detection.\n// DO NOT depend on these values in auto-generated capabilities definitions - use for test validation only.\nfunc hasFileDigests(metadata interface{}) bool {\n\tv := dereferenceToStruct(metadata)\n\tif !v.IsValid() || v.Kind() != reflect.Struct {\n\t\treturn false\n\t}\n\n\tfilesField := v.FieldByName(\"Files\")\n\tif !filesField.IsValid() || filesField.Kind() != reflect.Slice {\n\t\treturn false\n\t}\n\n\t// check if any file record has a Digest field populated\n\tfor i := 0; i < filesField.Len(); i++ {\n\t\tif hasPopulatedDigest(filesField.Index(i)) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// dereferenceToStruct handles pointer dereferencing and returns the underlying value.\n// returns an invalid value if the input is nil or not convertible to a struct.\nfunc dereferenceToStruct(v interface{}) reflect.Value {\n\tif v == nil {\n\t\treturn reflect.Value{}\n\t}\n\n\tval := reflect.ValueOf(v)\n\tif val.Kind() == reflect.Ptr {\n\t\tif val.IsNil() {\n\t\t\treturn reflect.Value{}\n\t\t}\n\t\tval = val.Elem()\n\t}\n\treturn val\n}\n\n// hasPopulatedStringField checks if a struct has a non-empty string field with the given name.\nfunc hasPopulatedStringField(v reflect.Value, fieldName string) bool {\n\tfield := v.FieldByName(fieldName)\n\treturn field.IsValid() && field.Kind() == reflect.String && field.String() != \"\"\n}\n\n// hasPopulatedDigest checks if a file record has a populated Digest field.\nfunc hasPopulatedDigest(fileRecord reflect.Value) bool {\n\tfileRecord = dereferenceToStruct(fileRecord.Interface())\n\tif !fileRecord.IsValid() || fileRecord.Kind() != reflect.Struct {\n\t\treturn false\n\t}\n\n\tdigestField := fileRecord.FieldByName(\"Digest\")\n\tif !digestField.IsValid() {\n\t\treturn false\n\t}\n\n\t// check if digest is a pointer and not nil, or a non-zero value\n\tswitch digestField.Kind() {\n\tcase reflect.Ptr:\n\t\treturn !digestField.IsNil()\n\tcase reflect.String:\n\t\treturn digestField.String() != \"\"\n\tcase reflect.Struct:\n\t\treturn !digestField.IsZero()\n\t}\n\treturn false\n}\n\n// ===== Utility Functions =====\n\n// countDependencyRelationships counts the number of dependency relationships.\nfunc countDependencyRelationships(relationships []artifact.Relationship) int {\n\tcount := 0\n\tfor _, rel := range relationships {\n\t\tif rel.Type == artifact.DependencyOfRelationship {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n\n// contains checks if a string slice contains a specific string.\nfunc contains(slice []string, item string) bool {\n\tfor _, s := range slice {\n\t\tif s == item {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ===== Result Writing =====\n\n// WriteResults writes the collected observation data to testdata/test-observations.json.\nfunc (t *MetadataTracker) WriteResults() error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif t.observations == nil {\n\t\t// no data to write\n\t\treturn nil\n\t}\n\n\t// create output directory\n\toutDir := \"testdata\"\n\tif err := os.MkdirAll(outDir, 0755); err != nil {\n\t\treturn err\n\t}\n\n\t// write unified test-observations.json\n\tt.observations.UpdatedAt = time.Now().UTC()\n\n\tfilename := filepath.Join(outDir, \"test-observations.json\")\n\treturn writeJSONFile(filename, t.observations)\n}\n\n// writeJSONFile writes data as pretty-printed JSON to the specified path.\nfunc writeJSONFile(path string, data interface{}) error {\n\tfile, err := os.Create(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\n\tencoder := json.NewEncoder(file)\n\tencoder.SetIndent(\"\", \"  \")\n\treturn encoder.Encode(data)\n}\n\n// WriteResultsIfEnabled writes results if tracking is enabled.\n// this is typically called via t.Cleanup() in tests.\nfunc WriteResultsIfEnabled() error {\n\ttracker := getTracker()\n\treturn tracker.WriteResults()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pkgtest/observing_resolver.go",
    "content": "// Package pkgtest provides test helpers for cataloger and parser testing,\n// including resolver decorators that track file access patterns.\npackage pkgtest\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ file.Resolver = (*ObservingResolver)(nil)\n\n// ObservingResolver wraps a file.Resolver to observe and track all file access patterns.\n// it records what paths were queried, what was returned, and what file contents were read.\n// this is useful for validating that catalogers use appropriate glob patterns and don't over-read files.\ntype ObservingResolver struct {\n\tdecorated          file.Resolver\n\tpathQueries        map[string][]string // method name -> list of query patterns\n\tpathResponses      []file.Location     // all locations successfully returned\n\tcontentQueries     []file.Location     // all locations whose content was read\n\temptyPathResponses map[string][]string // method name -> paths that returned empty results\n}\n\n// NewObservingResolver creates a new ObservingResolver that wraps the given resolver.\nfunc NewObservingResolver(resolver file.Resolver) *ObservingResolver {\n\treturn &ObservingResolver{\n\t\tdecorated:          resolver,\n\t\tpathQueries:        make(map[string][]string),\n\t\tpathResponses:      make([]file.Location, 0),\n\t\tcontentQueries:     make([]file.Location, 0),\n\t\temptyPathResponses: make(map[string][]string),\n\t}\n}\n\n// ===== Test Assertion Helpers =====\n// these methods are used by tests to validate expected file access patterns.\n\n// ObservedPathQuery checks if a specific path pattern was queried.\nfunc (r *ObservingResolver) ObservedPathQuery(input string) bool {\n\tfor _, queries := range r.pathQueries {\n\t\tfor _, query := range queries {\n\t\t\tif query == input {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// ObservedPathResponses checks if a specific path was returned in any response.\nfunc (r *ObservingResolver) ObservedPathResponses(path string) bool {\n\tfor _, loc := range r.pathResponses {\n\t\tif loc.RealPath == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ObservedContentQueries checks if a specific file's content was read.\nfunc (r *ObservingResolver) ObservedContentQueries(path string) bool {\n\tfor _, loc := range r.contentQueries {\n\t\tif loc.RealPath == path {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// AllContentQueries returns a deduplicated list of all file paths whose content was read.\nfunc (r *ObservingResolver) AllContentQueries() []string {\n\tobserved := strset.New()\n\tfor _, loc := range r.contentQueries {\n\t\tobserved.Add(loc.RealPath)\n\t}\n\treturn observed.List()\n}\n\n// AllPathQueries returns all path query patterns grouped by method name.\nfunc (r *ObservingResolver) AllPathQueries() map[string][]string {\n\treturn r.pathQueries\n}\n\n// PruneUnfulfilledPathResponses removes specified paths from the unfulfilled requests tracking.\n// ignore maps method names to paths that should be ignored for that method.\n// ignorePaths lists paths that should be ignored for all methods.\nfunc (r *ObservingResolver) PruneUnfulfilledPathResponses(ignore map[string][]string, ignorePaths ...string) {\n\t// remove paths ignored for specific methods\n\tfor methodName, pathsToIgnore := range ignore {\n\t\tr.emptyPathResponses[methodName] = removeStrings(r.emptyPathResponses[methodName], pathsToIgnore)\n\t\tif len(r.emptyPathResponses[methodName]) == 0 {\n\t\t\tdelete(r.emptyPathResponses, methodName)\n\t\t}\n\t}\n\n\t// remove paths ignored for all methods\n\tif len(ignorePaths) > 0 {\n\t\tfor methodName := range r.emptyPathResponses {\n\t\t\tr.emptyPathResponses[methodName] = removeStrings(r.emptyPathResponses[methodName], ignorePaths)\n\t\t\tif len(r.emptyPathResponses[methodName]) == 0 {\n\t\t\t\tdelete(r.emptyPathResponses, methodName)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// HasUnfulfilledPathRequests returns true if there are any paths that were queried but returned empty.\nfunc (r *ObservingResolver) HasUnfulfilledPathRequests() bool {\n\treturn len(r.emptyPathResponses) > 0\n}\n\n// PrettyUnfulfilledPathRequests returns a formatted string of all unfulfilled path requests.\nfunc (r *ObservingResolver) PrettyUnfulfilledPathRequests() string {\n\tif len(r.emptyPathResponses) == 0 {\n\t\treturn \"\"\n\t}\n\n\tvar keys []string\n\tfor k := range r.emptyPathResponses {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\n\tvar result string\n\tfor _, k := range keys {\n\t\tresult += fmt.Sprintf(\"   %s: %+v\\n\", k, r.emptyPathResponses[k])\n\t}\n\treturn result\n}\n\n// removeStrings removes all occurrences of toRemove from slice.\nfunc removeStrings(slice []string, toRemove []string) []string {\n\tif len(toRemove) == 0 {\n\t\treturn slice\n\t}\n\n\t// create a set for O(1) lookup\n\tremoveSet := make(map[string]bool)\n\tfor _, s := range toRemove {\n\t\tremoveSet[s] = true\n\t}\n\n\t// filter the slice\n\tresult := make([]string, 0, len(slice))\n\tfor _, s := range slice {\n\t\tif !removeSet[s] {\n\t\t\tresult = append(result, s)\n\t\t}\n\t}\n\treturn result\n}\n\n// ===== Internal Tracking Helpers =====\n\n// recordQuery records a path query for a given method.\nfunc (r *ObservingResolver) recordQuery(methodName string, queries ...string) {\n\tr.pathQueries[methodName] = append(r.pathQueries[methodName], queries...)\n}\n\n// recordResponses records successful path responses and tracks any unfulfilled queries.\nfunc (r *ObservingResolver) recordResponses(methodName string, locs []file.Location, queriedPaths ...string) {\n\tr.pathResponses = append(r.pathResponses, locs...)\n\n\t// track paths that returned no results\n\tif len(locs) == 0 && len(queriedPaths) > 0 {\n\t\tr.emptyPathResponses[methodName] = append(r.emptyPathResponses[methodName], queriedPaths...)\n\t}\n}\n\n// ===== file.Resolver Implementation =====\n// these methods delegate to the wrapped resolver while recording observations.\n\n// FilesByPath returns files matching the given paths.\nfunc (r *ObservingResolver) FilesByPath(paths ...string) ([]file.Location, error) {\n\tconst methodName = \"FilesByPath\"\n\tr.recordQuery(methodName, paths...)\n\n\tlocs, err := r.decorated.FilesByPath(paths...)\n\tr.recordResponses(methodName, locs, paths...)\n\n\treturn locs, err\n}\n\n// FilesByGlob returns files matching the given glob patterns.\nfunc (r *ObservingResolver) FilesByGlob(patterns ...string) ([]file.Location, error) {\n\tconst methodName = \"FilesByGlob\"\n\tr.recordQuery(methodName, patterns...)\n\n\tlocs, err := r.decorated.FilesByGlob(patterns...)\n\tr.recordResponses(methodName, locs, patterns...)\n\n\treturn locs, err\n}\n\n// FilesByMIMEType returns files matching the given MIME types.\nfunc (r *ObservingResolver) FilesByMIMEType(types ...string) ([]file.Location, error) {\n\tconst methodName = \"FilesByMIMEType\"\n\tr.recordQuery(methodName, types...)\n\n\tlocs, err := r.decorated.FilesByMIMEType(types...)\n\tr.recordResponses(methodName, locs, types...)\n\n\treturn locs, err\n}\n\n// FilesByMediaType returns files matching the given media types.\nfunc (r *ObservingResolver) FilesByMediaType(_ ...string) ([]file.Location, error) {\n\treturn nil, nil\n}\n\n// RelativeFileByPath returns a file at a path relative to the given location.\nfunc (r *ObservingResolver) RelativeFileByPath(location file.Location, path string) *file.Location {\n\tconst methodName = \"RelativeFileByPath\"\n\tr.recordQuery(methodName, path)\n\n\tloc := r.decorated.RelativeFileByPath(location, path)\n\n\tif loc != nil {\n\t\tr.pathResponses = append(r.pathResponses, *loc)\n\t} else {\n\t\tr.emptyPathResponses[methodName] = append(r.emptyPathResponses[methodName], path)\n\t}\n\n\treturn loc\n}\n\n// FileContentsByLocation returns a reader for the contents of the file at the given location.\nfunc (r *ObservingResolver) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tr.contentQueries = append(r.contentQueries, location)\n\treturn r.decorated.FileContentsByLocation(location)\n}\n\n// AllLocations returns all file locations known to the resolver.\nfunc (r *ObservingResolver) AllLocations(ctx context.Context) <-chan file.Location {\n\treturn r.decorated.AllLocations(ctx)\n}\n\n// HasPath returns true if the resolver knows about the given path.\nfunc (r *ObservingResolver) HasPath(path string) bool {\n\treturn r.decorated.HasPath(path)\n}\n\n// FileMetadataByLocation returns metadata for the file at the given location.\nfunc (r *ObservingResolver) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\treturn r.decorated.FileMetadataByLocation(location)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/internal/pkgtest/test_generic_parser.go",
    "content": "package pkgtest\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/google/licensecheck\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstereofile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/internal/cmptest\"\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/filesource\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nvar (\n\tonce           sync.Once\n\tlicenseScanner *licenses.Scanner\n)\n\ntype CatalogTester struct {\n\texpectedPkgs                   []pkg.Package\n\texpectedRelationships          []artifact.Relationship\n\tassertResultExpectations       bool\n\texpectedPathResponses          []string // this is a minimum set, the resolver may return more that just this list\n\texpectedContentQueries         []string // this is a full set, any other queries are unexpected (and will fail the test)\n\tignoreUnfulfilledPathResponses map[string][]string\n\tignoreAnyUnfulfilledPaths      []string\n\tenv                            *generic.Environment\n\treader                         file.LocationReadCloser\n\tresolver                       file.Resolver\n\twantErr                        require.ErrorAssertionFunc\n\tcompareOptions                 []cmp.Option\n\tlocationComparer               cmptest.LocationComparer\n\tlicenseComparer                cmptest.LicenseComparer\n\tpackageStringer                func(pkg.Package) string\n\tcustomAssertions               []func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship)\n\tcontext                        context.Context\n\tskipTestObservations           bool\n}\n\nfunc initLicenseScanner() {\n\tonce.Do(func() {\n\t\t// most of the time in testing is initializing the scanner. Let's do that just once\n\t\tsc := &licenses.ScannerConfig{Scanner: licensecheck.Scan, CoverageThreshold: 75}\n\t\tscanner, err := licenses.NewScanner(sc)\n\t\tif err != nil {\n\t\t\tpanic(\"unable to setup licences scanner for testing\")\n\t\t}\n\t\tlicenseScanner = &scanner\n\t})\n}\n\n// Context returns a context with a shared license scanner and a TempDir backed by t.TempDir(),\n// so cleanup is handled automatically when the test finishes.\nfunc Context(t *testing.T) context.Context {\n\tt.Helper()\n\tinitLicenseScanner()\n\ttd := tmpdir.FromPath(t.TempDir())\n\tctx := tmpdir.WithValue(context.Background(), td)\n\treturn licenses.SetContextLicenseScanner(ctx, *licenseScanner)\n}\n\nfunc NewCatalogTester() *CatalogTester {\n\treturn &CatalogTester{\n\t\tlocationComparer: cmptest.DefaultLocationComparer,\n\t\tlicenseComparer:  cmptest.DefaultLicenseComparer,\n\t\tpackageStringer:  stringPackage,\n\t\tresolver:         fileresolver.Empty{},\n\t\tignoreUnfulfilledPathResponses: map[string][]string{\n\t\t\t\"FilesByPath\": {\n\t\t\t\t// most catalogers search for a linux release, which will not be fulfilled in testing\n\t\t\t\t\"/etc/os-release\",\n\t\t\t\t\"/usr/lib/os-release\",\n\t\t\t\t\"/etc/system-release-cpe\",\n\t\t\t\t\"/etc/redhat-release\",\n\t\t\t\t\"/bin/busybox\",\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc (p *CatalogTester) WithContext(ctx context.Context) *CatalogTester {\n\tp.context = ctx\n\treturn p\n}\n\nfunc (p *CatalogTester) FromDirectory(t *testing.T, path string) *CatalogTester {\n\tt.Helper()\n\n\tif path == \"\" {\n\t\treturn p\n\t}\n\n\ts, err := directorysource.NewFromPath(path)\n\trequire.NoError(t, err)\n\n\tresolver, err := s.FileResolver(source.AllLayersScope)\n\trequire.NoError(t, err)\n\n\tp.resolver = resolver\n\treturn p\n}\n\nfunc (p *CatalogTester) FromFileSource(t *testing.T, path string) *CatalogTester {\n\tt.Helper()\n\n\ts, err := filesource.NewFromPath(path)\n\trequire.NoError(t, err)\n\tresolver, err := s.FileResolver(source.AllLayersScope)\n\trequire.NoError(t, err)\n\n\tp.resolver = resolver\n\treturn p\n}\n\nfunc (p *CatalogTester) FromFile(t *testing.T, path string) *CatalogTester {\n\tt.Helper()\n\n\tif path == \"\" {\n\t\treturn p\n\t}\n\n\tabsPath, err := filepath.Abs(path)\n\trequire.NoError(t, err)\n\n\tfixture, err := os.Open(path)\n\trequire.NoError(t, err)\n\n\tp.reader = file.LocationReadCloser{\n\t\tLocation:   file.NewVirtualLocationFromDirectory(fixture.Name(), fixture.Name(), *stereofile.NewFileReference(stereofile.Path(absPath))),\n\t\tReadCloser: fixture,\n\t}\n\treturn p\n}\n\nfunc (p *CatalogTester) FromString(location, data string) *CatalogTester {\n\tp.reader = file.LocationReadCloser{\n\t\tLocation:   file.NewLocation(location),\n\t\tReadCloser: io.NopCloser(strings.NewReader(data)),\n\t}\n\treturn p\n}\n\nfunc (p *CatalogTester) WithLinuxRelease(r linux.Release) *CatalogTester {\n\tif p.env == nil {\n\t\tp.env = &generic.Environment{}\n\t}\n\tp.env.LinuxRelease = &r\n\treturn p\n}\n\nfunc (p *CatalogTester) WithEnv(env *generic.Environment) *CatalogTester {\n\tp.env = env\n\treturn p\n}\n\nfunc (p *CatalogTester) WithError() *CatalogTester {\n\tp.wantErr = require.Error\n\treturn p\n}\n\nfunc (p *CatalogTester) WithErrorAssertion(a require.ErrorAssertionFunc) *CatalogTester {\n\tp.wantErr = a\n\treturn p\n}\n\nfunc (p *CatalogTester) WithResolver(r file.Resolver) *CatalogTester {\n\tp.resolver = r\n\treturn p\n}\n\nfunc (p *CatalogTester) WithImageResolver(t *testing.T, fixtureName string) *CatalogTester {\n\tt.Helper()\n\n\tif fixtureName == \"\" {\n\t\treturn p\n\t}\n\n\timg := imagetest.GetFixtureImage(t, \"docker-archive\", fixtureName)\n\n\ts := stereoscopesource.New(img, stereoscopesource.ImageConfig{\n\t\tReference: fixtureName,\n\t})\n\n\tr, err := s.FileResolver(source.SquashedScope)\n\trequire.NoError(t, err)\n\tp.resolver = r\n\treturn p\n}\n\nfunc (p *CatalogTester) ExpectsAssertion(a func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship)) *CatalogTester {\n\tp.customAssertions = append(p.customAssertions, a)\n\treturn p\n}\n\nfunc (p *CatalogTester) IgnoreLocationLayer() *CatalogTester {\n\tp.locationComparer = cmptest.LocationComparerWithoutLayer\n\tp.licenseComparer = cmptest.LicenseComparerWithoutLocationLayer\n\treturn p\n}\n\nfunc (p *CatalogTester) IgnorePackageFields(fields ...string) *CatalogTester {\n\tp.compareOptions = append(p.compareOptions, cmpopts.IgnoreFields(pkg.Package{}, fields...))\n\treturn p\n}\n\nfunc (p *CatalogTester) WithCompareOptions(opts ...cmp.Option) *CatalogTester {\n\tp.compareOptions = append(p.compareOptions, opts...)\n\treturn p\n}\n\nfunc (p *CatalogTester) Expects(pkgs []pkg.Package, relationships []artifact.Relationship) *CatalogTester {\n\tp.assertResultExpectations = true\n\tp.expectedPkgs = pkgs\n\tp.expectedRelationships = relationships\n\treturn p\n}\n\nfunc (p *CatalogTester) WithPackageStringer(fn func(pkg.Package) string) *CatalogTester {\n\tp.packageStringer = fn\n\treturn p\n}\n\nfunc (p *CatalogTester) ExpectsPackageStrings(expected []string) *CatalogTester {\n\treturn p.ExpectsAssertion(func(t *testing.T, pkgs []pkg.Package, _ []artifact.Relationship) {\n\t\tt.Helper()\n\t\tdiffPackages(t, expected, pkgs, p.packageStringer)\n\t})\n}\n\nfunc (p *CatalogTester) ExpectsRelationshipStrings(expected []string) *CatalogTester {\n\treturn p.ExpectsAssertion(func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\tt.Helper()\n\t\tdiffRelationships(t, expected, relationships, pkgs, p.packageStringer)\n\t})\n}\n\nfunc (p *CatalogTester) ExpectsResolverPathResponses(locations []string) *CatalogTester {\n\tp.expectedPathResponses = locations\n\treturn p\n}\n\nfunc (p *CatalogTester) ExpectsResolverContentQueries(locations []string) *CatalogTester {\n\tp.expectedContentQueries = locations\n\treturn p\n}\n\nfunc (p *CatalogTester) IgnoreUnfulfilledPathResponses(paths ...string) *CatalogTester {\n\tp.ignoreAnyUnfulfilledPaths = append(p.ignoreAnyUnfulfilledPaths, paths...)\n\treturn p\n}\n\nfunc (p *CatalogTester) WithoutTestObserver() *CatalogTester {\n\tp.skipTestObservations = true\n\treturn p\n}\n\nfunc (p *CatalogTester) ensureContext(t *testing.T) context.Context {\n\tt.Helper()\n\tif p.context != nil {\n\t\treturn p.context\n\t}\n\treturn Context(t)\n}\n\nfunc (p *CatalogTester) TestParser(t *testing.T, parser generic.Parser) {\n\tt.Helper()\n\tctx := p.ensureContext(t)\n\tpkgs, relationships, err := parser(ctx, p.resolver, p.env, p.reader)\n\n\t// only test for errors if explicitly requested\n\tif p.wantErr != nil {\n\t\tp.wantErr(t, err)\n\t}\n\n\t// track metadata types for cataloger discovery\n\tp.trackParserMetadata(t, parser, pkgs, relationships)\n\n\tp.assertPkgs(t, pkgs, relationships)\n}\n\nfunc (p *CatalogTester) TestCataloger(t *testing.T, cataloger pkg.Cataloger) {\n\tt.Helper()\n\tctx := p.ensureContext(t)\n\n\tresolver := NewObservingResolver(p.resolver)\n\n\tpkgs, relationships, err := cataloger.Catalog(ctx, resolver)\n\n\t// this is a minimum set, the resolver may return more that just this list\n\tfor _, path := range p.expectedPathResponses {\n\t\tassert.Truef(t, resolver.ObservedPathResponses(path), \"expected path query for %q was not observed\", path)\n\t}\n\n\t// this is a full set, any other queries are unexpected (and will fail the test)\n\tif len(p.expectedContentQueries) > 0 {\n\t\tassert.ElementsMatchf(t, p.expectedContentQueries, resolver.AllContentQueries(), \"unexpected content queries observed: diff %s\", cmp.Diff(p.expectedContentQueries, resolver.AllContentQueries()))\n\t}\n\n\t// only test for errors if explicitly requested\n\tif p.wantErr != nil {\n\t\tp.wantErr(t, err)\n\t}\n\n\t// track metadata types for cataloger discovery\n\tp.trackCatalogerMetadata(t, cataloger, pkgs, relationships)\n\n\tif p.assertResultExpectations {\n\t\tp.assertPkgs(t, pkgs, relationships)\n\t}\n\n\tfor _, a := range p.customAssertions {\n\t\ta(t, pkgs, relationships)\n\t}\n\n\tif !p.assertResultExpectations && len(p.customAssertions) == 0 && p.wantErr == nil {\n\t\tresolver.PruneUnfulfilledPathResponses(p.ignoreUnfulfilledPathResponses, p.ignoreAnyUnfulfilledPaths...)\n\n\t\t// if we aren't testing the results, we should focus on what was searched for (for glob-centric tests)\n\t\tassert.Falsef(t, resolver.HasUnfulfilledPathRequests(), \"unfulfilled path requests: \\n%v\", resolver.PrettyUnfulfilledPathRequests())\n\t}\n}\n\nfunc (p *CatalogTester) assertPkgs(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\tt.Helper()\n\n\tp.compareOptions = append(p.compareOptions, cmptest.BuildOptions(p.licenseComparer, p.locationComparer)...)\n\n\t{\n\t\tr := cmptest.NewDiffReporter()\n\t\tvar opts []cmp.Option\n\n\t\topts = append(opts, p.compareOptions...)\n\t\topts = append(opts, cmp.Reporter(&r))\n\n\t\t// order should not matter\n\t\tpkg.Sort(p.expectedPkgs)\n\t\tpkg.Sort(pkgs)\n\n\t\tif diff := cmp.Diff(p.expectedPkgs, pkgs, opts...); diff != \"\" {\n\t\t\tt.Log(\"Specific Differences:\\n\" + r.String())\n\t\t\tt.Errorf(\"unexpected packages from parsing (-expected +actual)\\n%s\", diff)\n\t\t}\n\t}\n\t{\n\t\tr := cmptest.NewDiffReporter()\n\t\tvar opts []cmp.Option\n\n\t\topts = append(opts, p.compareOptions...)\n\t\topts = append(opts, cmp.Reporter(&r))\n\n\t\t// ignore the \"FoundBy\" field on relationships as it is set in the generic cataloger before it's presence on the relationship\n\t\topts = append(opts, cmpopts.IgnoreFields(pkg.Package{}, \"FoundBy\"))\n\n\t\t// order should not matter\n\t\trelationship.Sort(p.expectedRelationships)\n\t\trelationship.Sort(relationships)\n\n\t\tif diff := cmp.Diff(p.expectedRelationships, relationships, opts...); diff != \"\" {\n\t\t\tt.Log(\"Specific Differences:\\n\" + r.String())\n\n\t\t\tt.Errorf(\"unexpected relationships from parsing (-expected +actual)\\n%s\", diff)\n\t\t}\n\t}\n}\n\nfunc TestFileParser(t *testing.T, fixturePath string, parser generic.Parser, expectedPkgs []pkg.Package, expectedRelationships []artifact.Relationship) {\n\tt.Helper()\n\tNewCatalogTester().FromFile(t, fixturePath).Expects(expectedPkgs, expectedRelationships).TestParser(t, parser)\n}\n\nfunc TestCataloger(t *testing.T, fixtureDir string, cataloger pkg.Cataloger, expectedPkgs []pkg.Package, expectedRelationships []artifact.Relationship) {\n\tt.Helper()\n\tNewCatalogTester().FromDirectory(t, fixtureDir).Expects(expectedPkgs, expectedRelationships).TestCataloger(t, cataloger)\n}\n\nfunc TestCatalogerFromFileSource(t *testing.T, fixturePath string, cataloger pkg.Cataloger, expectedPkgs []pkg.Package, expectedRelationships []artifact.Relationship) {\n\tt.Helper()\n\tNewCatalogTester().FromFileSource(t, fixturePath).Expects(expectedPkgs, expectedRelationships).TestCataloger(t, cataloger)\n}\n\nfunc TestFileParserWithEnv(t *testing.T, fixturePath string, parser generic.Parser, env *generic.Environment, expectedPkgs []pkg.Package, expectedRelationships []artifact.Relationship) {\n\tt.Helper()\n\n\tNewCatalogTester().FromFile(t, fixturePath).WithEnv(env).Expects(expectedPkgs, expectedRelationships).TestParser(t, parser)\n}\n\nfunc AssertPackagesEqual(t *testing.T, a, b pkg.Package, userOpts ...cmp.Option) {\n\tt.Helper()\n\topts := cmptest.DefaultOptions()\n\topts = append(opts, userOpts...)\n\n\tif diff := cmp.Diff(a, b, opts...); diff != \"\" {\n\t\tt.Errorf(\"unexpected packages from parsing (-expected +actual)\\n%s\", diff)\n\t}\n}\n\nfunc AssertPackagesEqualIgnoreLayers(t *testing.T, a, b pkg.Package, userOpts ...cmp.Option) {\n\tt.Helper()\n\topts := cmptest.DefaultIgnoreLocationLayerOptions()\n\topts = append(opts, userOpts...)\n\n\tif diff := cmp.Diff(a, b, opts...); diff != \"\" {\n\t\tt.Errorf(\"unexpected packages from parsing (-expected +actual)\\n%s\", diff)\n\t}\n}\n\nfunc diffPackages(t *testing.T, expected []string, actual []pkg.Package, pkgStringer func(pkg.Package) string) {\n\tt.Helper()\n\tsort.Strings(expected)\n\tif d := cmp.Diff(expected, stringPackages(actual, pkgStringer)); d != \"\" {\n\t\tt.Errorf(\"unexpected package strings (-want, +got): %s\", d)\n\t}\n}\n\nfunc diffRelationships(t *testing.T, expected []string, actual []artifact.Relationship, pkgs []pkg.Package, pkgStringer func(pkg.Package) string) {\n\tt.Helper()\n\tpkgsByID := make(map[artifact.ID]pkg.Package)\n\tfor _, p := range pkgs {\n\t\tpkgsByID[p.ID()] = p\n\t}\n\tsort.Strings(expected)\n\tif d := cmp.Diff(expected, stringRelationships(actual, pkgsByID, pkgStringer)); d != \"\" {\n\t\tt.Errorf(\"unexpected relationship strings (-want, +got): %s\", d)\n\t}\n}\n\nfunc stringRelationships(relationships []artifact.Relationship, nameLookup map[artifact.ID]pkg.Package, pkgStringer func(pkg.Package) string) []string {\n\tvar result []string\n\tfor _, r := range relationships {\n\t\tvar fromName, toName string\n\t\t{\n\t\t\tfromPkg, ok := nameLookup[r.From.ID()]\n\t\t\tif !ok {\n\t\t\t\tfromName = string(r.From.ID())\n\t\t\t} else {\n\t\t\t\tfromName = pkgStringer(fromPkg)\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\ttoPkg, ok := nameLookup[r.To.ID()]\n\t\t\tif !ok {\n\t\t\t\ttoName = string(r.To.ID())\n\t\t\t} else {\n\t\t\t\ttoName = pkgStringer(toPkg)\n\t\t\t}\n\t\t}\n\n\t\tresult = append(result, fromName+\" [\"+string(r.Type)+\"] \"+toName)\n\t}\n\tsort.Strings(result)\n\treturn result\n}\n\nfunc stringPackages(pkgs []pkg.Package, pkgStringer func(pkg.Package) string) []string {\n\tvar result []string\n\tfor _, p := range pkgs {\n\t\tresult = append(result, pkgStringer(p))\n\t}\n\tsort.Strings(result)\n\treturn result\n}\n\nfunc stringPackage(p pkg.Package) string {\n\tlocs := p.Locations.ToSlice()\n\tvar loc string\n\tif len(locs) > 0 {\n\t\tloc = p.Locations.ToSlice()[0].RealPath\n\t}\n\n\treturn fmt.Sprintf(\"%s @ %s (%s)\", p.Name, p.Version, loc)\n}\n\n// getFunctionName extracts the function name from a function pointer using reflection\nfunc getFunctionName(fn interface{}) string {\n\t// get the function pointer\n\tptr := reflect.ValueOf(fn).Pointer()\n\n\t// get the function details\n\tfuncForPC := runtime.FuncForPC(ptr)\n\tif funcForPC == nil {\n\t\treturn \"\"\n\t}\n\n\tfullName := funcForPC.Name()\n\n\t// extract just the function name from the full path\n\t// e.g., \"github.com/anchore/syft/syft/pkg/cataloger/python.parseRequirementsTxt\"\n\t//   -> \"parseRequirementsTxt\"\n\tparts := strings.Split(fullName, \".\")\n\tif len(parts) > 0 {\n\t\tname := parts[len(parts)-1]\n\t\t// strip the -fm suffix that Go's reflection adds for methods\n\t\t// e.g., \"parsePackageLock-fm\" -> \"parsePackageLock\"\n\t\treturn strings.TrimSuffix(name, \"-fm\")\n\t}\n\n\treturn fullName\n}\n\n// getCatalogerName extracts the cataloger name from the test context or cataloger name\nfunc getCatalogerName(_ *testing.T, cataloger pkg.Cataloger) string {\n\t// use the cataloger's name method if available\n\treturn cataloger.Name()\n}\n\n// getPackagePath extracts the package path from a function name\n// e.g., \"github.com/anchore/syft/syft/pkg/cataloger/python.parseRequirementsTxt\" -> \"python\"\nfunc getPackagePath(fn interface{}) string {\n\tptr := reflect.ValueOf(fn).Pointer()\n\tfuncForPC := runtime.FuncForPC(ptr)\n\tif funcForPC == nil {\n\t\treturn \"\"\n\t}\n\n\tfullName := funcForPC.Name()\n\n\t// extract package name from path\n\t// e.g., \"github.com/anchore/syft/syft/pkg/cataloger/python.parseRequirementsTxt\"\n\t//   -> \"python\"\n\tif strings.Contains(fullName, \"/cataloger/\") {\n\t\tparts := strings.Split(fullName, \"/cataloger/\")\n\t\tif len(parts) > 1 {\n\t\t\t// get the next segment after \"/cataloger/\"\n\t\t\tremaining := parts[1]\n\t\t\t// split by \".\" to get package name\n\t\t\tpkgParts := strings.Split(remaining, \".\")\n\t\t\tif len(pkgParts) > 0 {\n\t\t\t\treturn pkgParts[0]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// getPackagePathFromCataloger extracts the package path from the caller's file path\n// For generic catalogers, the cataloger type is from the generic package, but we need\n// the package where the test is defined (e.g., rust, python, etc.)\nfunc getPackagePathFromCataloger(_ pkg.Cataloger) string {\n\t// walk up the call stack to find the test file\n\t// we're looking for a file in the cataloger directory structure\n\tfor i := 0; i < 10; i++ {\n\t\t_, file, _, ok := runtime.Caller(i)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\n\t\t// extract package name from file path\n\t\t// e.g., \"/Users/.../syft/pkg/cataloger/rust/cataloger_test.go\" -> \"rust\"\n\t\tif strings.Contains(file, \"/cataloger/\") {\n\t\t\tparts := strings.Split(file, \"/cataloger/\")\n\t\t\tif len(parts) > 1 {\n\t\t\t\t// get the next segment after \"/cataloger/\"\n\t\t\t\tremaining := parts[1]\n\t\t\t\t// split by \"/\" to get package name\n\t\t\t\tpkgParts := strings.Split(remaining, \"/\")\n\t\t\t\tif len(pkgParts) > 0 && pkgParts[0] != \"internal\" {\n\t\t\t\t\treturn pkgParts[0]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// trackParserMetadata records metadata types for a parser function\nfunc (p *CatalogTester) trackParserMetadata(t *testing.T, parser generic.Parser, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\tif p.skipTestObservations {\n\t\treturn\n\t}\n\n\tparserName := getFunctionName(parser)\n\tif parserName == \"\" {\n\t\treturn\n\t}\n\n\t// try to infer package name from function path\n\tpackageName := getPackagePath(parser)\n\tif packageName == \"\" {\n\t\treturn\n\t}\n\n\ttracker := getTracker()\n\n\t// old tracking (still used by metadata discovery)\n\tfor _, pkg := range pkgs {\n\t\ttracker.RecordParserPackageMetadata(packageName, parserName, pkg)\n\t}\n\n\t// new unified observations with capability tracking\n\ttracker.RecordParserObservations(packageName, parserName, pkgs, relationships)\n\n\t// ensure results are written when tests complete\n\tt.Cleanup(func() {\n\t\t_ = WriteResultsIfEnabled()\n\t})\n}\n\n// trackCatalogerMetadata records metadata types for a cataloger\nfunc (p *CatalogTester) trackCatalogerMetadata(t *testing.T, cataloger pkg.Cataloger, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\tif p.skipTestObservations {\n\t\treturn\n\t}\n\n\tcatalogerName := getCatalogerName(t, cataloger)\n\tif catalogerName == \"\" {\n\t\treturn\n\t}\n\n\t// try to infer package name from cataloger type\n\tpackageName := getPackagePathFromCataloger(cataloger)\n\tif packageName == \"\" {\n\t\treturn\n\t}\n\n\ttracker := getTracker()\n\n\t// old tracking (still used by metadata discovery)\n\tfor _, pkg := range pkgs {\n\t\ttracker.RecordCatalogerPackageMetadata(catalogerName, pkg)\n\t}\n\n\t// new unified observations with capability tracking\n\ttracker.RecordCatalogerObservations(packageName, catalogerName, pkgs, relationships)\n\n\t// ensure results are written when tests complete\n\tt.Cleanup(func() {\n\t\t_ = WriteResultsIfEnabled()\n\t})\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/archive_filename.go",
    "content": "package java\n\nimport (\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// nameAndVersionPattern finds the package name and version (as named capture\n// groups) in a string. The pattern's strategy is to start at the beginning of\n// the string, and for every next dash-delimited group, consider the group to be\n// a continuation of the package name, unless the group begins with a number or\n// matches any of a specified set of \"version-indicating\" patterns. When a given\n// group meets this criterion, consider the group and the remainder of the\n// string to be the package version.\n//\n// Regex components of note:\n//\n// (?Ui)\t\t\t\t\t\t\t\t\t\t\t\t\t...\tSets the \"U\" and the \"i\" options for this Regex —— (ungreedy,\n// and case-insensitive, respectively). \"Ungreedy\" is important so that the '*' that trails the package name\n// component doesn't consume the rest of the string.\n//\n// [[:alpha:]][[:word:].]*\t\t\t\t\t\t\t\t\t...\tMatches any word, and the word can include \"word\" characters (\n// which includes numbers and underscores), and periods, but the first character of the word MUST be a letter.\n//\n// (?:\\.[[:alpha:]][[:word:].]*)* \t\t\t\t\t\t\t... This looks redundant, but it's not. It\n// extends the previous pattern such that the net effect of both components is\n// that words can also include a period and more words (thus, when combined, not\n// only is \"something\" matched, but so is \"com.prefix.thing\"\n//\n// (?:\\d.*|(?:build\\d*.*)|(?:rc?\\d+(?:^[[:alpha:]].*)?))\t...\n// This match group covers the \"version-indicating\" patterns mentioned in the above description. Given the pipes (\n// '|'), this functions as a series of 'OR'-joined conditions:\n//\n//\t\\d.*\t\t\t\t\t\t...\t\"If it starts with a numeric digit, this is a version, no matter what follows.\"\n//\tbuild\\d*.*\t\t\t\t\t...\t\"If it starts with \"build\" and then a numeric digit immediately after, this is a version.\"\n//\trc?\\d+(?:^[[:alpha:]].*)?\t...\t\"If it starts with \"r\" or \"rc\" and then one or more numeric digits immediately\n//\t\t\t\t\t\t\t\t\tafter, but no alpha characters right after that (in the same word), this is a version.\"\n//\n// Match examples:\n//\n//\tsome-package-4.0.1\t\t--> name=\"some-package\", version=\"4.0.1\"\n//\tprefix.thing-4\t\t\t-->\tname=\"prefix.thing\", version=\"4\"\n//\tmy-http2-server-5\t\t-->\tname=\"my-http2-server\", version=\"5\"\n//\tjetpack-build235-rc5\t-->\tname=\"jetpack\", version=\"build2.0-rc5\"\n//\tironman-r4-2009\t\t\t--> name=\"ironman\", version=\"r4-2009\"\nvar nameAndVersionPattern = regexp.MustCompile(`(?Ui)^(?P<name>(?:[[:alpha:]][[:word:].]*(?:\\.[[:alpha:]][[:word:].]*)*-?)+)(?:-(?P<version>(\\d.*|(build\\d+.*)|(rc?\\d+(?:^[[:alpha:]].*)?))))?$`)\nvar secondaryVersionPattern = regexp.MustCompile(`(?:[._-](?P<version>(\\d.*|(build\\d+.*)|(rc?\\d+(?:^[[:alpha:]].*)?))))?$`)\n\ntype archiveFilename struct {\n\traw     string\n\tname    string\n\tversion string\n}\n\nfunc getSubexp(matches []string, subexpName string, re *regexp.Regexp, raw string) string {\n\tif len(matches) < 1 {\n\t\tlog.Tracef(\"unexpectedly empty matches for Java archive '%s'\", raw)\n\t\treturn \"\"\n\t}\n\n\tindex := re.SubexpIndex(subexpName)\n\tif index < 1 {\n\t\tlog.Tracef(\"unexpected index of '%s' capture group for Java archive '%s'\", subexpName, raw)\n\t\treturn \"\"\n\t}\n\n\t// Prevent out-of-range panic\n\tif len(matches) < index+1 {\n\t\tlog.Tracef(\"no match found for '%s' in '%s' for Java archive\", subexpName, matches[0])\n\t\treturn \"\"\n\t}\n\n\treturn matches[index]\n}\n\nfunc newJavaArchiveFilename(raw string) archiveFilename {\n\t// trim the file extension and remove any path prefixes\n\tcleanedFileName := strings.TrimSuffix(filepath.Base(raw), filepath.Ext(raw))\n\n\tmatches := nameAndVersionPattern.FindStringSubmatch(cleanedFileName)\n\n\tname := getSubexp(matches, \"name\", nameAndVersionPattern, raw)\n\tversion := getSubexp(matches, \"version\", nameAndVersionPattern, raw)\n\n\t// some jars get named with different conventions, like `_<version>` or `.<version>`\n\tif version == \"\" {\n\t\tmatches = secondaryVersionPattern.FindStringSubmatch(name)\n\t\tversion = getSubexp(matches, \"version\", secondaryVersionPattern, raw)\n\t\tif version != \"\" {\n\t\t\tname = name[0 : len(name)-len(version)-1]\n\t\t}\n\t}\n\n\treturn archiveFilename{\n\t\traw:     raw,\n\t\tname:    name,\n\t\tversion: version,\n\t}\n}\n\nfunc (a archiveFilename) extension() string {\n\treturn strings.TrimPrefix(filepath.Ext(a.raw), \".\")\n}\n\nfunc (a archiveFilename) pkgType() pkg.Type {\n\tswitch strings.ToLower(a.extension()) {\n\tcase \"jar\", \"war\", \"ear\", \"lpkg\", \"par\", \"sar\", \"nar\", \"kar\", \"rar\":\n\t\treturn pkg.JavaPkg\n\tcase \"jpi\", \"hpi\":\n\t\treturn pkg.JenkinsPluginPkg\n\tdefault:\n\t\treturn pkg.UnknownPkg\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/archive_filename_test.go",
    "content": "package java\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestExtractInfoFromJavaArchiveFilename(t *testing.T) {\n\ttests := []struct {\n\t\tfilename  string\n\t\tversion   string\n\t\textension string\n\t\tname      string\n\t\tty        pkg.Type\n\t}{\n\t\t{\n\t\t\tfilename:  \"pkg-maven-4.3.2.blerg\",\n\t\t\tversion:   \"4.3.2\",\n\t\t\textension: \"blerg\",\n\t\t\tname:      \"pkg-maven\",\n\t\t\tty:        pkg.UnknownPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-maven.4.3.2.blerg\",\n\t\t\tversion:   \"4.3.2\",\n\t\t\textension: \"blerg\",\n\t\t\tname:      \"pkg-maven\",\n\t\t\tty:        pkg.UnknownPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-maven_4.3.2.blerg\",\n\t\t\tversion:   \"4.3.2\",\n\t\t\textension: \"blerg\",\n\t\t\tname:      \"pkg-maven\",\n\t\t\tty:        pkg.UnknownPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-maven-4.3.2.jar\",\n\t\t\tversion:   \"4.3.2\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"pkg-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2.war\",\n\t\t\tversion:   \"4.3.2\",\n\t\t\textension: \"war\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"liferay-package.lpkg\",\n\t\t\tversion:   \"\",\n\t\t\textension: \"lpkg\",\n\t\t\tname:      \"liferay-package\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.ear\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"ear\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.par\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"par\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.sar\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"sar\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.nar\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"nar\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.kar\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"kar\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path/pkg-extra-field-maven-4.3.2-rc1.jpi\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"jpi\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path-with-version-5.4.3/pkg-extra-field-maven-4.3.2-rc1.hpi\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"hpi\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path-with-version-5.4.3/wagon-webdav-1.0.2-beta-2.2.3a-hudson.jar\",\n\t\t\tversion:   \"1.0.2-beta-2.2.3a-hudson\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"wagon-webdav\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path-with-version-5.4.3/wagon-webdav-1.0.2-beta-2.2.3-hudson.jar\",\n\t\t\tversion:   \"1.0.2-beta-2.2.3-hudson\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"wagon-webdav\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path-with-version-5.4.3/windows-remote-command-1.0.jar\",\n\t\t\tversion:   \"1.0\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"windows-remote-command\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/some/path-with-version-5.4.3/wagon-http-lightweight-1.0.5-beta-2.jar\",\n\t\t\tversion:   \"1.0.5-beta-2\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"wagon-http-lightweight\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/hudson.war:WEB-INF/lib/commons-jelly-1.1-hudson-20100305.jar\",\n\t\t\tversion:   \"1.1-hudson-20100305\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"commons-jelly\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/hudson.war:WEB-INF/lib/jtidy-4aug2000r7-dev-hudson-1.jar\",\n\t\t\tversion:   \"4aug2000r7-dev-hudson-1\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"jtidy\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/hudson.war:WEB-INF/lib/trilead-ssh2-build212-hudson-5.jar\",\n\t\t\tversion:   \"build212-hudson-5\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"trilead-ssh2\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/hudson.war:WEB-INF/lib/guava-r06.jar\",\n\t\t\tversion:   \"r06\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"guava\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\t// regression: https://github.com/anchore/syft/issues/255\n\t\t\tfilename:  \"BOOT-INF/lib/spring-data-r2dbc-1.1.0.RELEASE.jar\",\n\t\t\tversion:   \"1.1.0.RELEASE\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"spring-data-r2dbc\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\t// regression for artifact of the same name within jboss/keycloak:13.0.1 docker image\n\t\t\t// which covers package name components with periods in them\n\t\t\tfilename:  \"jboss-saaj-api_1.4_spec-1.0.2.Final.jar\",\n\t\t\tversion:   \"1.0.2.Final\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"jboss-saaj-api_1.4_spec\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"/usr/share/java/gradle/lib/gradle-build-cache-8.1.1.jar\",\n\t\t\tversion:   \"8.1.1\",\n\t\t\textension: \"jar\",\n\t\t\tname:      \"gradle-build-cache\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t\t{\n\t\t\tfilename:  \"pkg-extra-field-maven-4.3.2-rc1.rar\",\n\t\t\tversion:   \"4.3.2-rc1\",\n\t\t\textension: \"rar\",\n\t\t\tname:      \"pkg-extra-field-maven\",\n\t\t\tty:        pkg.JavaPkg,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.filename, func(t *testing.T) {\n\t\t\tobj := newJavaArchiveFilename(test.filename)\n\n\t\t\tty := obj.pkgType()\n\t\t\tif ty != test.ty {\n\t\t\t\tt.Errorf(\"mismatched type: %+v != %v\", ty, test.ty)\n\t\t\t}\n\n\t\t\tversion := obj.version\n\t\t\tif version != test.version {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.version, version, true)\n\t\t\t\tt.Errorf(\"mismatched version:\\n%s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\n\t\t\textension := obj.extension()\n\t\t\tif extension != test.extension {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.extension, extension, true)\n\t\t\t\tt.Errorf(\"mismatched extension:\\n%s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\n\t\t\tname := obj.name\n\t\t\tif name != test.name {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.name, name, true)\n\t\t\t\tt.Errorf(\"mismatched name:\\n%s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/archive_parser.go",
    "content": "package java\n\nimport (\n\t\"cmp\"\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"io\"\n\t\"iter\"\n\t\"os\"\n\t\"path\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"golang.org/x/exp/maps\"\n\n\t\"github.com/anchore/syft/internal\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven\"\n)\n\nvar archiveFormatGlobs = []string{\n\t\"**/*.jar\",\n\t\"**/*.war\",\n\t\"**/*.ear\",\n\t\"**/*.par\",\n\t\"**/*.sar\",\n\t\"**/*.nar\",\n\t\"**/*.jpi\",\n\t\"**/*.hpi\",\n\t\"**/*.kar\",\n\t\"**/*.far\",\n\t\"**/*.lpkg\", // Zip-compressed package used to deploy applications\n\t// (aka plugins) to Liferay Portal server. Those files contains .JAR(s) and a .PROPERTIES file, the latter\n\t// has information about the application and installation requirements.\n\t// NOTE(jonasagx): If you would like to test it with lpkg file,\n\t// use: https://web.liferay.com/marketplace/-/mp/download/25019275/7403\n\t// LifeRay makes it pretty cumbersome to make a such plugins; their docs are\n\t// out of date, and they charge for their IDE. If you find an example\n\t// project that we can build in CI feel free to include it\n\t\"**/*.rar\", // Java Resource Adapter Archive\n}\n\n// javaArchiveHashes are all the current hash algorithms used to calculate archive digests\nvar javaArchiveHashes = []crypto.Hash{\n\tcrypto.SHA1,\n}\n\ntype archiveParser struct {\n\tfileManifest intFile.ZipFileManifest\n\tlocation     file.Location\n\tarchivePath  string\n\tcontentPath  string\n\tfileInfo     archiveFilename\n\tdetectNested bool\n\tcfg          ArchiveCatalogerConfig\n\tmaven        *maven.Resolver\n}\n\ntype genericArchiveParserAdapter struct {\n\tcfg ArchiveCatalogerConfig\n}\n\nfunc newGenericArchiveParserAdapter(cfg ArchiveCatalogerConfig) genericArchiveParserAdapter {\n\treturn genericArchiveParserAdapter{cfg: cfg}\n}\n\n// parseJavaArchive is a parser function for java archive contents, returning all Java libraries and nested archives\nfunc (gap genericArchiveParserAdapter) parseJavaArchive(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treturn gap.processJavaArchive(ctx, reader, nil)\n}\n\n// processJavaArchive processes an archive for java contents, returning all Java libraries and nested archives\nfunc (gap genericArchiveParserAdapter) processJavaArchive(ctx context.Context, reader file.LocationReadCloser, parentPkg *pkg.Package) ([]pkg.Package, []artifact.Relationship, error) {\n\tparser, cleanupFn, err := newJavaArchiveParser(ctx, reader, true, gap.cfg)\n\t// note: even on error, we should always run cleanup functions\n\tdefer cleanupFn()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn parser.parse(ctx, parentPkg)\n}\n\n// uniquePkgKey creates a unique string to identify the given package.\nfunc uniquePkgKey(groupID string, p *pkg.Package) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\treturn fmt.Sprintf(\"%s|%s|%s\", groupID, p.Name, p.Version)\n}\n\n// newJavaArchiveParser returns a new java archive parser object for the given archive. Can be configured to discover\n// and parse nested archives or ignore them.\nfunc newJavaArchiveParser(ctx context.Context, reader file.LocationReadCloser, detectNested bool, cfg ArchiveCatalogerConfig) (*archiveParser, func(), error) {\n\t// fetch the last element of the virtual path\n\tvirtualElements := strings.Split(reader.Path(), \":\")\n\tcurrentFilepath := virtualElements[len(virtualElements)-1]\n\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, func() {}, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\tcontentPath, archivePath, cleanupFn, err := saveArchiveToTmp(td, currentFilepath, reader)\n\tif err != nil {\n\t\treturn nil, cleanupFn, fmt.Errorf(\"unable to process java archive: %w\", err)\n\t}\n\n\tfileManifest, err := intFile.NewZipFileManifest(ctx, archivePath)\n\tif err != nil {\n\t\treturn nil, cleanupFn, fmt.Errorf(\"unable to read files from java archive: %w\", err)\n\t}\n\n\treturn &archiveParser{\n\t\tfileManifest: fileManifest,\n\t\tlocation:     reader.Location,\n\t\tarchivePath:  archivePath,\n\t\tcontentPath:  contentPath,\n\t\tfileInfo:     newJavaArchiveFilename(currentFilepath),\n\t\tdetectNested: detectNested,\n\t\tcfg:          cfg,\n\t\tmaven:        maven.NewResolver(nil, cfg.mavenConfig()),\n\t}, cleanupFn, nil\n}\n\n// parse the loaded archive and return all packages found.\nfunc (j *archiveParser) parse(ctx context.Context, parentPkg *pkg.Package) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\t// find the parent package from the java manifest\n\tmainPkg, err := j.discoverMainPackage(ctx)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not generate package from %s: %w\", j.location, err)\n\t}\n\n\t// find aux packages from pom.properties/pom.xml and potentially modify the existing parentPkg\n\t// NOTE: we cannot generate sha1 digests from packages discovered via pom.properties/pom.xml\n\t// IMPORTANT!: discoverPkgsFromAllMavenFiles may change mainPkg information, so needs to be called before SetID and before copying for relationships, etc.\n\tauxPkgs, err := j.discoverPkgsFromAllMavenFiles(ctx, mainPkg)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif mainPkg != nil {\n\t\tfinalizePackage(mainPkg)\n\t\tpkgs = append(pkgs, *mainPkg)\n\n\t\tif parentPkg != nil {\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: *mainPkg,\n\t\t\t\tTo:   *parentPkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\tfor i := range auxPkgs {\n\t\tauxPkg := &auxPkgs[i]\n\n\t\tfinalizePackage(auxPkg)\n\t\tpkgs = append(pkgs, *auxPkg)\n\n\t\tif mainPkg != nil {\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: *auxPkg,\n\t\t\t\tTo:   *mainPkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\tvar errs error\n\tif j.detectNested {\n\t\t// find nested java archive packages\n\t\tnestedPkgs, nestedRelationships, err := j.discoverPkgsFromNestedArchives(ctx, mainPkg)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, j.location, err)\n\t\t}\n\t\tpkgs = append(pkgs, nestedPkgs...)\n\t\trelationships = append(relationships, nestedRelationships...)\n\t} else {\n\t\t// .jar and .war files are present in archives, are others? or generally just consider them top-level?\n\t\tnestedArchives := j.fileManifest.GlobMatch(true, \"**/*.jar\", \"**/*.war\")\n\t\tif len(nestedArchives) > 0 {\n\t\t\tslices.Sort(nestedArchives)\n\t\t\terrs = unknown.Appendf(errs, j.location, \"nested archives not cataloged: %v\", strings.Join(nestedArchives, \", \"))\n\t\t}\n\t}\n\n\tif len(pkgs) == 0 {\n\t\terrs = unknown.Appendf(errs, j.location, \"no package identified in archive\")\n\t}\n\n\treturn pkgs, relationships, errs\n}\n\n// finalizePackage potentially updates some package information such as classifying the package as a Jenkins plugin,\n// sets the PURL, and calls p.SetID()\nfunc finalizePackage(p *pkg.Package) {\n\tif m, ok := p.Metadata.(pkg.JavaArchive); ok {\n\t\tp.PURL = packageURL(p.Name, p.Version, m)\n\n\t\tif strings.Contains(p.PURL, \"io.jenkins.plugins\") || strings.Contains(p.PURL, \"org.jenkins-ci.plugins\") {\n\t\t\tp.Type = pkg.JenkinsPluginPkg\n\t\t}\n\t} else {\n\t\tlog.WithFields(\"package\", p.String()).Debug(\"unable to extract java metadata to generate purl\")\n\t}\n\n\tp.SetID()\n}\n\n// discoverMainPackage parses the root Java manifest used as the parent package to all discovered nested packages.\nfunc (j *archiveParser) discoverMainPackage(ctx context.Context) (*pkg.Package, error) {\n\t// search and parse java manifest files\n\tmanifestMatches := j.fileManifest.GlobMatch(false, manifestGlob)\n\tif len(manifestMatches) > 1 {\n\t\treturn nil, fmt.Errorf(\"found multiple manifests in the jar: %+v\", manifestMatches)\n\t} else if len(manifestMatches) == 0 {\n\t\t// we did not find any manifests, but that may not be a problem (there may be other information to generate packages for)\n\t\treturn nil, nil\n\t}\n\n\t// fetch the manifest file\n\tcontents, err := intFile.ContentsFromZip(ctx, j.archivePath, manifestMatches...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract java manifests (%s): %w\", j.location, err)\n\t}\n\n\t// parse the manifest file into a rich object\n\tmanifestContents := contents[manifestMatches[0]]\n\tmanifest, err := parseJavaManifest(j.archivePath, strings.NewReader(manifestContents))\n\tif err != nil {\n\t\tlog.Debugf(\"failed to parse java manifest (%s): %+v\", j.location, err)\n\t\treturn nil, nil\n\t}\n\n\t// check for existence of Weave-Classes manifest key in order to exclude jars getting misrepresented as\n\t// their targeted counterparts, e.g. newrelic spring and tomcat instrumentation\n\tif _, ok := manifest.Main.Get(\"Weave-Classes\"); ok {\n\t\tlog.Debugf(\"excluding archive due to Weave-Classes manifest entry: %s\", j.location)\n\t\treturn nil, nil\n\t}\n\n\t// grab and assign digest for the entire archive\n\tdigests, err := getDigestsFromArchive(ctx, j.archivePath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tname, version, lics, parsedPom := j.discoverNameVersionLicense(ctx, manifest)\n\tvar pkgPomProject *pkg.JavaPomProject\n\tif parsedPom != nil {\n\t\tpkgPomProject = newPomProject(ctx, j.maven, parsedPom.path, parsedPom.project)\n\t}\n\n\treturn &pkg.Package{\n\t\t// TODO: maybe select name should just have a pom properties in it?\n\t\tName:     name,\n\t\tVersion:  version,\n\t\tLanguage: pkg.Java,\n\t\tLicenses: pkg.NewLicenseSet(lics...),\n\t\tLocations: file.NewLocationSet(\n\t\t\tj.location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tType: j.fileInfo.pkgType(),\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tVirtualPath:    j.location.Path(),\n\t\t\tManifest:       manifest,\n\t\t\tPomProject:     pkgPomProject,\n\t\t\tArchiveDigests: digests,\n\t\t},\n\t}, nil\n}\n\nfunc (j *archiveParser) discoverNameVersionLicense(ctx context.Context, manifest *pkg.JavaManifest) (string, string, []pkg.License, *parsedPomProject) {\n\t// we use j.location because we want to associate the license declaration with where we discovered the contents in the manifest\n\t// TODO: when we support locations of paths within archives we should start passing the specific manifest location object instead of the top jar\n\tlics := pkg.NewLicensesFromLocationWithContext(ctx, j.location, selectLicenses(manifest)...)\n\t/*\n\t\tWe should name and version from, in this order:\n\t\t1. pom.properties if we find exactly 1\n\t\t2. pom.xml if we find exactly 1\n\t\t3. manifest\n\t\t4. filename\n\t*/\n\tgroupID, artifactID, version, parsedPom := j.discoverMainPackageFromPomInfo(ctx)\n\tif artifactID == \"\" {\n\t\tartifactID = selectName(manifest, j.fileInfo)\n\t}\n\tif version == \"\" {\n\t\tversion = selectVersion(manifest, j.fileInfo)\n\t}\n\n\tif len(lics) == 0 {\n\t\tfileLicenses := j.getLicenseFromFileInArchive(ctx)\n\t\tif fileLicenses != nil {\n\t\t\tlics = append(lics, fileLicenses...)\n\t\t}\n\t}\n\n\t// If we didn't find any licenses in the archive so far, we'll try again in Maven Central using groupIDFromJavaMetadata\n\tif len(lics) == 0 {\n\t\t// Today we don't have a way to distinguish between licenses from the manifest and licenses from the pom.xml\n\t\t// until the file.Location object can support sub-paths (i.e. paths within archives, recursively; issue https://github.com/anchore/syft/issues/2211).\n\t\t// Until then it's less confusing to use the licenses from the pom.xml only if the manifest did not list any.\n\t\tlics = j.findLicenseFromJavaMetadata(ctx, groupID, artifactID, version, parsedPom, manifest)\n\t}\n\n\treturn artifactID, version, lics, parsedPom\n}\n\n// findLicenseFromJavaMetadata attempts to find license information from all available maven metadata properties and pom info\nfunc (j *archiveParser) findLicenseFromJavaMetadata(ctx context.Context, groupID, artifactID, version string, parsedPom *parsedPomProject, manifest *pkg.JavaManifest) []pkg.License {\n\tif groupID == \"\" {\n\t\tif gID := groupIDFromJavaMetadata(artifactID, pkg.JavaArchive{Manifest: manifest}); gID != \"\" {\n\t\t\tgroupID = gID\n\t\t}\n\t}\n\n\tvar err error\n\tvar pomLicenses []maven.License\n\tif parsedPom != nil {\n\t\tpomLicenses, err = j.maven.ResolveLicenses(ctx, parsedPom.project)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"mavenID\", j.maven.ResolveID(ctx, parsedPom.project)).Trace(\"error attempting to resolve pom licenses\")\n\t\t}\n\t}\n\n\tif err == nil && len(pomLicenses) == 0 {\n\t\tpomLicenses, err = j.maven.FindLicenses(ctx, groupID, artifactID, version)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"mavenID\", maven.NewID(groupID, artifactID, version)).Trace(\"error attempting to find licenses\")\n\t\t}\n\t}\n\n\tif len(pomLicenses) == 0 {\n\t\t// Try removing the last part of the groupId, as sometimes it duplicates the artifactId\n\t\tpackages := strings.Split(groupID, \".\")\n\t\tgroupID = strings.Join(packages[:len(packages)-1], \".\")\n\t\tpomLicenses, err = j.maven.FindLicenses(ctx, groupID, artifactID, version)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"mavenID\", maven.NewID(groupID, artifactID, version)).Trace(\"error attempting to find sub-group licenses\")\n\t\t}\n\t}\n\n\treturn toPkgLicenses(ctx, &j.location, pomLicenses)\n}\n\nfunc toPkgLicenses(ctx context.Context, location *file.Location, licenses []maven.License) []pkg.License {\n\tvar out []pkg.License\n\tfor _, license := range licenses {\n\t\tname := \"\"\n\t\tif license.Name != nil {\n\t\t\tname = *license.Name\n\t\t}\n\t\turl := \"\"\n\t\tif license.URL != nil {\n\t\t\turl = *license.URL\n\t\t}\n\t\t// note: it is possible to:\n\t\t// - have a license without a URL\n\t\t// - have license and a URL\n\t\t// - have a URL without a license (this is weird, but can happen)\n\t\tif name == \"\" && url == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tout = append(out, pkg.NewLicenseFromFieldsWithContext(ctx, name, url, location))\n\t}\n\treturn out\n}\n\ntype parsedPomProject struct {\n\tpath    string\n\tproject *maven.Project\n}\n\n// discoverMainPackageFromPomInfo attempts to resolve maven groupId, artifactId, version and other info from found pom information\nfunc (j *archiveParser) discoverMainPackageFromPomInfo(ctx context.Context) (group, name, version string, parsedPom *parsedPomProject) {\n\t// Find the pom.properties/pom.xml if the names seem like a plausible match\n\tproperties, _ := pomPropertiesByParentPath(ctx, j.archivePath, j.location, j.fileManifest.GlobMatch(false, pomPropertiesGlob))\n\tprojects, _ := pomProjectByParentPath(ctx, j.archivePath, j.location, j.fileManifest.GlobMatch(false, pomXMLGlob))\n\n\tartifactsMap := j.buildArtifactsMap(properties)\n\tpomProperties, parsedPom := j.findBestPomMatch(properties, projects, artifactsMap)\n\n\tparsedPom = j.handleSinglePomXML(properties, projects, parsedPom)\n\n\treturn j.resolveIdentity(ctx, pomProperties, parsedPom)\n}\n\nfunc (j *archiveParser) buildArtifactsMap(properties map[string]pkg.JavaPomProperties) *strset.Set {\n\tartifactsMap := strset.New()\n\tfor _, propertiesObj := range properties {\n\t\tartifactsMap.Add(propertiesObj.ArtifactID)\n\t}\n\treturn artifactsMap\n}\n\nfunc (j *archiveParser) findBestPomMatch(properties map[string]pkg.JavaPomProperties,\n\tprojects map[string]*parsedPomProject, artifactsMap *strset.Set) (pkg.JavaPomProperties, *parsedPomProject) {\n\tvar pomProperties pkg.JavaPomProperties\n\tvar parsedPom *parsedPomProject\n\n\tfor parentPath, propertiesObj := range sortedIter(properties) {\n\t\tif !artifactIDMatchesFilename(propertiesObj.ArtifactID, j.fileInfo.name, artifactsMap) {\n\t\t\tcontinue\n\t\t}\n\n\t\tpomProperties, parsedPom = j.updateMatchIfBetter(pomProperties, parsedPom, propertiesObj, parentPath, projects)\n\n\t\tif j.isExactMatch(propertiesObj, parsedPom) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn pomProperties, parsedPom\n}\n\nfunc (j *archiveParser) updateMatchIfBetter(currentProps pkg.JavaPomProperties, currentPom *parsedPomProject,\n\tnewProps pkg.JavaPomProperties, parentPath string, projects map[string]*parsedPomProject) (pkg.JavaPomProperties, *parsedPomProject) {\n\t// Keep the first match\n\tif currentProps.ArtifactID == \"\" {\n\t\tproj, hasProject := projects[parentPath]\n\t\tif hasProject {\n\t\t\treturn newProps, proj\n\t\t}\n\t\treturn newProps, currentPom\n\t}\n\n\tproj, hasProject := projects[parentPath]\n\tif !hasProject {\n\t\treturn currentProps, currentPom\n\t}\n\n\t// Keep the first matching artifact with a pom.xml\n\tif currentPom == nil {\n\t\treturn newProps, proj\n\t}\n\n\t// Prefer exact matches\n\tif j.isExactMatch(newProps, proj) {\n\t\treturn newProps, proj\n\t}\n\n\treturn currentProps, currentPom\n}\n\nfunc (j *archiveParser) isExactMatch(props pkg.JavaPomProperties, pom *parsedPomProject) bool {\n\tif pom == nil {\n\t\treturn false\n\t}\n\treturn strings.Contains(j.fileInfo.name, props.GroupID) || j.fileInfo.name == props.ArtifactID\n}\n\nfunc (j *archiveParser) handleSinglePomXML(properties map[string]pkg.JavaPomProperties,\n\tprojects map[string]*parsedPomProject, currentPom *parsedPomProject) *parsedPomProject {\n\tif len(properties) == 0 && len(projects) == 1 {\n\t\tfor _, projectsObj := range projects {\n\t\t\treturn projectsObj\n\t\t}\n\t}\n\treturn currentPom\n}\n\nfunc (j *archiveParser) resolveIdentity(ctx context.Context, pomProperties pkg.JavaPomProperties,\n\tparsedPom *parsedPomProject) (group, name, version string, pom *parsedPomProject) {\n\tgroup = pomProperties.GroupID\n\tname = pomProperties.ArtifactID\n\tversion = pomProperties.Version\n\n\tif parsedPom != nil && parsedPom.project != nil {\n\t\tid := j.maven.ResolveID(ctx, parsedPom.project)\n\t\tif group == \"\" {\n\t\t\tgroup = id.GroupID\n\t\t}\n\t\tif name == \"\" {\n\t\t\tname = id.ArtifactID\n\t\t}\n\t\tif version == \"\" {\n\t\t\tversion = id.Version\n\t\t}\n\t}\n\n\treturn group, name, version, parsedPom\n}\n\n// artifactIDMatchesFilename returns true if one starts with the other\nfunc artifactIDMatchesFilename(artifactID, fileName string, artifactsMap *strset.Set) bool {\n\tif artifactID == \"\" || fileName == \"\" {\n\t\treturn false\n\t}\n\t// Ensure true is returned when filename matches the artifact ID, prevent random retrieval by checking prefix and suffix\n\tif artifactsMap.Has(fileName) {\n\t\treturn artifactID == fileName\n\t}\n\t// Use fallback check with suffix and prefix if no POM properties file matches the exact artifact name\n\treturn strings.HasPrefix(artifactID, fileName) || strings.HasSuffix(fileName, artifactID)\n}\n\n// discoverPkgsFromAllMavenFiles parses Maven POM properties/xml for a given\n// parent package, returning all listed Java packages found for each pom\n// properties discovered and potentially updating the given parentPkg with new\n// data.\nfunc (j *archiveParser) discoverPkgsFromAllMavenFiles(ctx context.Context, parentPkg *pkg.Package) ([]pkg.Package, error) {\n\tif parentPkg == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar pkgs []pkg.Package\n\n\t// pom.properties\n\tproperties, err := pomPropertiesByParentPath(ctx, j.archivePath, j.location, j.fileManifest.GlobMatch(false, pomPropertiesGlob))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// pom.xml\n\tprojects, err := pomProjectByParentPath(ctx, j.archivePath, j.location, j.fileManifest.GlobMatch(false, pomXMLGlob))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor parentPath, propertiesObj := range sortedIter(properties) {\n\t\tvar parsedPom *parsedPomProject\n\t\tif proj, exists := projects[parentPath]; exists {\n\t\t\tparsedPom = proj\n\t\t}\n\n\t\tpkgFromPom := newPackageFromMavenData(ctx, j.maven, propertiesObj, parsedPom, parentPkg, j.location)\n\t\tif pkgFromPom != nil {\n\t\t\tpkgs = append(pkgs, *pkgFromPom)\n\t\t}\n\t}\n\n\treturn pkgs, nil\n}\n\nfunc getDigestsFromArchive(ctx context.Context, archivePath string) ([]file.Digest, error) {\n\tarchiveCloser, err := os.Open(archivePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to open archive path (%s): %w\", archivePath, err)\n\t}\n\tdefer internal.CloseAndLogError(archiveCloser, archivePath)\n\n\t// grab and assign digest for the entire archive\n\tdigests, err := intFile.NewDigestsFromFile(ctx, archiveCloser, javaArchiveHashes)\n\tif err != nil {\n\t\tlog.Debugf(\"failed to create digest for file=%q: %+v\", archivePath, err)\n\t}\n\n\treturn digests, nil\n}\n\nfunc (j *archiveParser) getLicenseFromFileInArchive(ctx context.Context) []pkg.License {\n\t// prefer identified licenses, fall back to unknown\n\tvar identified []pkg.License\n\tvar unidentified []pkg.License\n\n\tfor _, glob := range []string{\"/META-INF/*\", \"/*\"} {\n\t\tvar licenseMatches []string\n\t\tfor _, f := range j.fileManifest.GlobMatch(true, glob) {\n\t\t\tif licenses.IsLicenseFile(path.Base(f)) {\n\t\t\t\tlicenseMatches = append(licenseMatches, f)\n\t\t\t}\n\t\t}\n\n\t\tif len(licenseMatches) > 0 {\n\t\t\tcontents, err := intFile.ContentsFromZip(ctx, j.archivePath, licenseMatches...)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to extract java license (%s): %w\", j.location, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor _, licenseMatch := range licenseMatches {\n\t\t\t\tlicenseContents := contents[licenseMatch]\n\t\t\t\tr := strings.NewReader(licenseContents)\n\t\t\t\tfoundLicenses := pkg.NewLicensesFromReadCloserWithContext(ctx, file.NewLocationReadCloser(j.location, io.NopCloser(r)))\n\t\t\t\tfor _, l := range foundLicenses {\n\t\t\t\t\tif l.SPDXExpression != \"\" {\n\t\t\t\t\t\tidentified = append(identified, l)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunidentified = append(unidentified, l)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prefer licenses found in /META-INF\n\t\t\tif len(identified) > 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(identified) == 0 {\n\t\treturn unidentified\n\t}\n\n\treturn identified\n}\n\nfunc (j *archiveParser) discoverPkgsFromNestedArchives(ctx context.Context, parentPkg *pkg.Package) ([]pkg.Package, []artifact.Relationship, error) {\n\t// we know that all java archives are zip formatted files, so we can use the shared zip helper\n\treturn discoverPkgsFromZip(ctx, j.location, j.archivePath, j.contentPath, j.fileManifest, parentPkg, j.cfg)\n}\n\n// discoverPkgsFromZip finds Java archives within Java archives, returning all listed Java packages found and\n// associating each discovered package to the given parent package.\nfunc discoverPkgsFromZip(ctx context.Context, location file.Location, archivePath, contentPath string, fileManifest intFile.ZipFileManifest, parentPkg *pkg.Package, cfg ArchiveCatalogerConfig) ([]pkg.Package, []artifact.Relationship, error) {\n\t// search and parse pom.properties files & fetch the contents\n\topeners, err := intFile.ExtractFromZipToUniqueTempFile(ctx, archivePath, contentPath, fileManifest.GlobMatch(false, archiveFormatGlobs...)...)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to extract files from zip: %w\", err)\n\t}\n\n\treturn discoverPkgsFromOpeners(ctx, location, openers, parentPkg, cfg)\n}\n\n// discoverPkgsFromOpeners finds Java archives within the given files and associates them with the given parent package.\nfunc discoverPkgsFromOpeners(ctx context.Context, location file.Location, openers map[string]intFile.Opener, parentPkg *pkg.Package, cfg ArchiveCatalogerConfig) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\tfor pathWithinArchive, archiveOpener := range sortedIter(openers) {\n\t\tnestedPkgs, nestedRelationships, err := discoverPkgsFromOpener(ctx, location, pathWithinArchive, archiveOpener, cfg, parentPkg)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"location\", location.Path(), \"error\", err).Debug(\"unable to discover java packages from opener\")\n\t\t\tcontinue\n\t\t}\n\n\t\t// attach the parent package to all discovered packages that are not already associated with a java archive\n\t\tfor _, p := range nestedPkgs {\n\t\t\tif metadata, ok := p.Metadata.(pkg.JavaArchive); ok {\n\t\t\t\tif metadata.Parent == nil {\n\t\t\t\t\tmetadata.Parent = parentPkg\n\t\t\t\t}\n\t\t\t\tp.Metadata = metadata\n\t\t\t}\n\t\t\tpkgs = append(pkgs, p)\n\t\t}\n\n\t\trelationships = append(relationships, nestedRelationships...)\n\t}\n\n\treturn pkgs, relationships, nil\n}\n\n// discoverPkgsFromOpener finds Java archives within the given file.\nfunc discoverPkgsFromOpener(ctx context.Context, location file.Location, pathWithinArchive string, archiveOpener intFile.Opener, cfg ArchiveCatalogerConfig, parentPkg *pkg.Package) ([]pkg.Package, []artifact.Relationship, error) {\n\tarchiveReadCloser, err := archiveOpener.Open()\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to open archived file from tempdir: %w\", err)\n\t}\n\tdefer func() {\n\t\tif closeErr := archiveReadCloser.Close(); closeErr != nil {\n\t\t\tlog.Debugf(\"unable to close archived file from tempdir: %+v\", closeErr)\n\t\t}\n\t}()\n\n\tnestedPath := fmt.Sprintf(\"%s:%s\", location.Path(), pathWithinArchive)\n\tnestedLocation := file.NewLocationFromCoordinates(location.Coordinates)\n\tnestedLocation.AccessPath = nestedPath\n\tgap := newGenericArchiveParserAdapter(cfg)\n\tnestedPkgs, nestedRelationships, err := gap.processJavaArchive(ctx, file.LocationReadCloser{\n\t\tLocation:   nestedLocation,\n\t\tReadCloser: archiveReadCloser,\n\t}, parentPkg)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to process nested java archive (%s): %w\", pathWithinArchive, err)\n\t}\n\n\treturn nestedPkgs, nestedRelationships, nil\n}\n\nfunc pomPropertiesByParentPath(ctx context.Context, archivePath string, location file.Location, extractPaths []string) (map[string]pkg.JavaPomProperties, error) {\n\tcontentsOfMavenPropertiesFiles, err := intFile.ContentsFromZip(ctx, archivePath, extractPaths...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract maven files: %w\", err)\n\t}\n\n\tpropertiesByParentPath := make(map[string]pkg.JavaPomProperties)\n\tfor filePath, fileContents := range sortedIter(contentsOfMavenPropertiesFiles) {\n\t\tpomProperties, err := parsePomProperties(filePath, strings.NewReader(fileContents))\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"contents-path\", filePath, \"location\", location.Path(), \"error\", err).Debug(\"failed to parse pom.properties\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif pomProperties == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif pomProperties.Version == \"\" || pomProperties.ArtifactID == \"\" {\n\t\t\t// TODO: if there is no parentPkg (no java manifest) one of these poms could be the parent. We should discover the right parent and attach the correct info accordingly to each discovered package\n\t\t\tcontinue\n\t\t}\n\n\t\tpropertiesByParentPath[path.Dir(filePath)] = *pomProperties\n\t}\n\n\treturn propertiesByParentPath, nil\n}\n\nfunc pomProjectByParentPath(ctx context.Context, archivePath string, location file.Location, extractPaths []string) (map[string]*parsedPomProject, error) {\n\tcontentsOfMavenProjectFiles, err := intFile.ContentsFromZip(ctx, archivePath, extractPaths...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to extract maven files: %w\", err)\n\t}\n\n\tprojectByParentPath := make(map[string]*parsedPomProject)\n\tfor filePath, fileContents := range sortedIter(contentsOfMavenProjectFiles) {\n\t\t// TODO: when we support locations of paths within archives we should start passing the specific pom.xml location object instead of the top jar\n\t\tpom, err := maven.ParsePomXML(strings.NewReader(fileContents))\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"contents-path\", filePath, \"location\", location.Path(), \"error\", err).Debug(\"failed to parse pom.xml\")\n\t\t\tcontinue\n\t\t}\n\t\tif pom == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tprojectByParentPath[path.Dir(filePath)] = &parsedPomProject{\n\t\t\tpath:    filePath,\n\t\t\tproject: pom,\n\t\t}\n\t}\n\treturn projectByParentPath, nil\n}\n\n// newPackageFromMavenData processes a single Maven POM properties for a given parent package, returning all listed Java packages found and\n// associating each discovered package to the given parent package. Note the pom.xml is optional, the pom.properties is not.\nfunc newPackageFromMavenData(ctx context.Context, r *maven.Resolver, pomProperties pkg.JavaPomProperties, parsedPom *parsedPomProject, parentPkg *pkg.Package, location file.Location) *pkg.Package {\n\t// keep the artifact name within the virtual path if this package does not match the parent package\n\tvPathSuffix := \"\"\n\tgroupID := \"\"\n\tif parentMetadata, ok := parentPkg.Metadata.(pkg.JavaArchive); ok {\n\t\tgroupID = groupIDFromJavaMetadata(parentPkg.Name, parentMetadata)\n\t}\n\n\tparentKey := fmt.Sprintf(\"%s:%s:%s\", groupID, parentPkg.Name, parentPkg.Version)\n\t// Since we don't have a package yet, it's important to use the same `field: value` association that we used when creating the parent package\n\t// See below where Name => pomProperties.ArtifactID and Version => pomProperties.Version. We want to check for potentially nested identical\n\t// packages and create equal virtual paths so they are de duped in the future\n\tpomProjectKey := fmt.Sprintf(\"%s:%s:%s\", pomProperties.GroupID, pomProperties.ArtifactID, pomProperties.Version)\n\tif parentKey != pomProjectKey {\n\t\t// build a new virtual path suffix for the package that is different from the parent package\n\t\t// we want to use the GroupID and ArtifactID here to preserve uniqueness\n\t\t// Some packages have the same name but different group IDs (e.g. \"org.glassfish.jaxb/jaxb-core\", \"com.sun.xml.bind/jaxb-core\")\n\t\t// https://github.com/anchore/syft/issues/1944\n\t\tvPathSuffix += \":\" + pomProperties.GroupID + \":\" + pomProperties.ArtifactID\n\t}\n\tvirtualPath := location.Path() + vPathSuffix\n\n\tvar pkgPomProject *pkg.JavaPomProject\n\n\tvar err error\n\tvar pomLicenses []maven.License\n\tif parsedPom == nil {\n\t\t// If we have no pom.xml, check maven central using pom.properties\n\t\tpomLicenses, err = r.FindLicenses(ctx, pomProperties.GroupID, pomProperties.ArtifactID, pomProperties.Version)\n\t} else {\n\t\tpkgPomProject = newPomProject(ctx, r, parsedPom.path, parsedPom.project)\n\t\tpomLicenses, err = r.ResolveLicenses(ctx, parsedPom.project)\n\t}\n\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"mavenID\", maven.NewID(pomProperties.GroupID, pomProperties.ArtifactID, pomProperties.Version)).Trace(\"error attempting to resolve licenses\")\n\t}\n\n\tlicenseSet := pkg.NewLicenseSet(toPkgLicenses(ctx, &location, pomLicenses)...)\n\n\tp := pkg.Package{\n\t\tName:    pomProperties.ArtifactID,\n\t\tVersion: pomProperties.Version,\n\t\tLocations: file.NewLocationSet(\n\t\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tLicenses: licenseSet,\n\t\tLanguage: pkg.Java,\n\t\tType:     pomProperties.PkgTypeIndicated(),\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tVirtualPath:   virtualPath,\n\t\t\tPomProperties: &pomProperties,\n\t\t\tPomProject:    pkgPomProject,\n\t\t\tParent:        parentPkg,\n\t\t},\n\t}\n\n\tif packageIdentitiesMatch(p, parentPkg) {\n\t\tupdateParentPackage(p, parentPkg)\n\t\treturn nil\n\t}\n\n\treturn &p\n}\n\nfunc packageIdentitiesMatch(p pkg.Package, parentPkg *pkg.Package) bool {\n\tmetadata, ok := p.Metadata.(pkg.JavaArchive)\n\tparentMetadata, parentOk := parentPkg.Metadata.(pkg.JavaArchive)\n\tif !ok || !parentOk {\n\t\tswitch {\n\t\tcase !ok:\n\t\t\tlog.WithFields(\"package\", p.String()).Trace(\"unable to extract java metadata to check for matching package identity for package: %s\", p.Name)\n\t\tdefault: // !parentOk\n\t\t\tlog.WithFields(\"package\", parentPkg.String()).Trace(\"unable to extract java metadata to check for matching package identity for package: %s\", parentPkg.Name)\n\t\t}\n\t\t// if we can't extract metadata, we can check for matching identities via the package name\n\t\t// this is not ideal, but it's better than nothing - this should not be used if we have Metadata\n\n\t\treturn uniquePkgKey(\"\", &p) == uniquePkgKey(\"\", parentPkg)\n\t}\n\n\t// try to determine identity with the metadata\n\tgroupID := groupIDFromJavaMetadata(p.Name, metadata)\n\tparentGroupID := groupIDFromJavaMetadata(parentPkg.Name, parentMetadata)\n\tif uniquePkgKey(groupID, &p) == uniquePkgKey(parentGroupID, parentPkg) {\n\t\treturn true\n\t}\n\n\t// the virtual path matches...\n\tif parentMetadata.VirtualPath == metadata.VirtualPath {\n\t\treturn true\n\t}\n\n\t// the pom artifactId is the parent name\n\t// note: you CANNOT use name-is-subset-of-artifact-id or vice versa --this is too generic. Shaded jars are a good\n\t// example of this: where the package name is \"cloudbees-analytics-segment-driver\" and a child is \"analytics\", but\n\t// they do not indicate the same package.\n\t// NOTE: artifactId might not be a good indicator of uniqueness since archives can contain forks with the same name\n\t// from different groups (e.g. \"org.glassfish.jaxb.jaxb-core\" and \"com.sun.xml.bind.jaxb-core\")\n\t// we will use this check as a last resort\n\tif metadata.PomProperties != nil {\n\t\tif metadata.PomProperties.ArtifactID != \"\" && parentPkg.Name == metadata.PomProperties.ArtifactID {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc updateParentPackage(p pkg.Package, parentPkg *pkg.Package) {\n\t// we've run across more information about our parent package, add this info to the parent package metadata\n\t// the pom properties is typically a better source of information for name and version than the manifest\n\tparentPkg.Name = p.Name\n\tparentPkg.Version = p.Version\n\n\t// we may have learned more about the type via data in the pom properties\n\tparentPkg.Type = p.Type\n\n\tmetadata, ok := p.Metadata.(pkg.JavaArchive)\n\tif !ok {\n\t\treturn\n\t}\n\tpomPropertiesCopy := *metadata.PomProperties\n\n\t// keep the pom properties, but don't overwrite existing pom properties\n\tparentMetadata, ok := parentPkg.Metadata.(pkg.JavaArchive)\n\tif ok && parentMetadata.PomProperties == nil {\n\t\tparentMetadata.PomProperties = &pomPropertiesCopy\n\t\tparentPkg.Metadata = parentMetadata\n\t}\n}\n\nfunc sortedIter[K cmp.Ordered, V any](values map[K]V) iter.Seq2[K, V] {\n\treturn func(yield func(K, V) bool) {\n\t\tkeys := maps.Keys(values)\n\t\tslices.Sort(keys)\n\t\tfor _, key := range keys {\n\t\t\tif !yield(key, values[key]) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/archive_parser_test.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/gookit/color\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven\"\n\tmaventest \"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven/test\"\n)\n\nfunc TestSearchMavenForLicenses(t *testing.T) {\n\turl := maventest.MockRepo(t, \"internal/maven/testdata/maven-repo\")\n\tctx := pkgtest.Context(t)\n\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tdetectNested     bool\n\t\tconfig           ArchiveCatalogerConfig\n\t\texpectedLicenses []pkg.License\n\t}{\n\t\t{\n\t\t\tname:         \"searchMavenForLicenses returns the expected licenses when search is set to true\",\n\t\t\tfixture:      \"opensaml-core-3.4.6\",\n\t\t\tdetectNested: false,\n\t\t\tconfig: ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:              true,\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t\tMavenBaseURL:            url,\n\t\t\t},\n\t\t\texpectedLicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tType:  license.Declared,\n\t\t\t\t\tValue: `The Apache Software License, Version 2.0`,\n\t\t\t\t\tURLs: []string{\n\t\t\t\t\t\t\"http://www.apache.org/licenses/LICENSE-2.0.txt\",\n\t\t\t\t\t},\n\t\t\t\t\tSPDXExpression: ``,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// setup metadata fixture; note:\n\t\t\t// this fixture has a pomProjectObject and has a parent object\n\t\t\t// it has no licenses on either which is the condition for testing\n\t\t\t// the searchMavenForLicenses functionality\n\t\t\tjarName := generateJavaMetadataJarFixture(t, tc.fixture, \"jar\")\n\t\t\tfixture, err := os.Open(jarName)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// setup parser\n\t\t\tap, cleanupFn, err := newJavaArchiveParser(pkgtest.Context(t),\n\t\t\t\tfile.LocationReadCloser{\n\t\t\t\t\tLocation:   file.NewLocation(fixture.Name()),\n\t\t\t\t\tReadCloser: fixture,\n\t\t\t\t}, tc.detectNested, tc.config)\n\t\t\tdefer cleanupFn()\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// assert licenses are discovered from upstream\n\t\t\t_, _, _, parsedPom := ap.discoverMainPackageFromPomInfo(pkgtest.Context(t))\n\t\t\trequire.NotNil(t, parsedPom, \"expected to find pom information in the fixture\")\n\t\t\trequire.NotNil(t, parsedPom.project, \"expected parsedPom to have a project\")\n\t\t\tresolvedLicenses, _ := ap.maven.ResolveLicenses(pkgtest.Context(t), parsedPom.project)\n\t\t\tassert.Equal(t, tc.expectedLicenses, toPkgLicenses(ctx, nil, resolvedLicenses))\n\t\t})\n\t}\n}\n\nfunc TestParseJar(t *testing.T) {\n\tctx := pkgtest.Context(t)\n\ttests := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\texpected     map[string]pkg.Package\n\t\tignoreExtras []string\n\t\twantErr      require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"example-jenkins-plugin\",\n\t\t\tfixture: \"testdata/java-builds/packages/example-jenkins-plugin.hpi\",\n\t\t\twantErr: require.Error, // there are nested jars, which are not scanned and result in unknown errors\n\t\t\tignoreExtras: []string{\n\t\t\t\t\"Plugin-Version\", // has dynamic date\n\t\t\t\t\"Built-By\",       // podman returns the real UID\n\t\t\t\t\"Build-Jdk\",      // can't guarantee the JDK used at build time\n\t\t\t},\n\t\t\texpected: map[string]pkg.Package{\n\t\t\t\t\"example-jenkins-plugin\": {\n\t\t\t\t\tName:    \"example-jenkins-plugin\",\n\t\t\t\t\tVersion: \"1.0-SNAPSHOT\",\n\t\t\t\t\tPURL:    \"pkg:maven/io.jenkins.plugins/example-jenkins-plugin@1.0-SNAPSHOT\",\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT License\", file.NewLocation(\"testdata/java-builds/packages/example-jenkins-plugin.hpi\")),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-jenkins-plugin.hpi\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Created-By\", Value: \"Maven Archiver 3.6.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Build-Jdk-Spec\", Value: \"18\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Title\", Value: \"Example Jenkins Plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"Example Jenkins Plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"1.0-SNAPSHOT\"},\n\t\t\t\t\t\t\t\t{Key: \"Group-Id\", Value: \"io.jenkins.plugins\"},\n\t\t\t\t\t\t\t\t{Key: \"Short-Name\", Value: \"example-jenkins-plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Long-Name\", Value: \"Example Jenkins Plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Hudson-Version\", Value: \"2.204\"},\n\t\t\t\t\t\t\t\t{Key: \"Jenkins-Version\", Value: \"2.204\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-Dependencies\", Value: \"structs:1.20\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-Developers\", Value: \"\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-License-Name\", Value: \"MIT License\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-License-Url\", Value: \"https://opensource.org/licenses/MIT\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-ScmUrl\", Value: \"https://github.com/jenkinsci/plugin-pom/example-jenkins-plugin\"},\n\t\t\t\t\t\t\t\t// extra fields...\n\t\t\t\t\t\t\t\t//{Key: \"Minimum-Java-Version\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t//{Key: \"Archiver-Version\", Value: \"Plexus Archiver\"},\n\t\t\t\t\t\t\t\t//{Key: \"Built-By\", Value: \"?\"},\n\t\t\t\t\t\t\t\t//{Key: \"Build-Jdk\", Value: \"14.0.1\"},\n\t\t\t\t\t\t\t\t//{Key: \"Extension-Name\", Value: \"example-jenkins-plugin\"},\n\t\t\t\t\t\t\t\t//{Key: \"Plugin-Version\", Value: \"1.0-SNAPSHOT (private-07/09/2020 13:30-?)\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/io.jenkins.plugins/example-jenkins-plugin/pom.properties\",\n\t\t\t\t\t\t\tName:       \"\",\n\t\t\t\t\t\t\tGroupID:    \"io.jenkins.plugins\",\n\t\t\t\t\t\t\tArtifactID: \"example-jenkins-plugin\",\n\t\t\t\t\t\t\tVersion:    \"1.0-SNAPSHOT\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/io.jenkins.plugins/example-jenkins-plugin/pom.xml\",\n\t\t\t\t\t\t\tName:       \"Example Jenkins Plugin\",\n\t\t\t\t\t\t\tGroupID:    \"io.jenkins.plugins\",\n\t\t\t\t\t\t\tArtifactID: \"example-jenkins-plugin\",\n\t\t\t\t\t\t\tVersion:    \"1.0-SNAPSHOT\",\n\t\t\t\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\t\t\t\tGroupID:    \"org.jenkins-ci.plugins\",\n\t\t\t\t\t\t\t\tArtifactID: \"plugin\",\n\t\t\t\t\t\t\t\tVersion:    \"4.46\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"example-java-app-gradle\",\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-gradle-0.1.0.jar\",\n\t\t\twantErr: require.NoError, // no nested jars\n\t\t\texpected: map[string]pkg.Package{\n\t\t\t\t\"example-java-app-gradle\": {\n\t\t\t\t\tName:     \"example-java-app-gradle\",\n\t\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\t\tPURL:     \"pkg:maven/example-java-app-gradle/example-java-app-gradle@0.1.0\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{\n\t\t\t\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\t\t\t\tType:           license.Concluded,\n\t\t\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"testdata/java-builds/packages/example-java-app-gradle-0.1.0.jar\")),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-gradle-0.1.0.jar\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Main-Class\",\n\t\t\t\t\t\t\t\t\tValue: \"hello.HelloWorld\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// PomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t// \tPath:       \"META-INF/maven/io.jenkins.plugins/example-jenkins-plugin/pom.xml\",\n\t\t\t\t\t\t// \tParent:     &pkg.JavaPomParent{GroupID: \"org.jenkins-ci.plugins\", ArtifactID: \"plugin\", Version: \"4.46\"},\n\t\t\t\t\t\t// \tGroupID:    \"io.jenkins.plugins\",\n\t\t\t\t\t\t// \tArtifactID: \"example-jenkins-plugin\",\n\t\t\t\t\t\t// \tVersion:    \"1.0-SNAPSHOT\",\n\t\t\t\t\t\t// \tName:       \"Example Jenkins Plugin\",\n\t\t\t\t\t\t// },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"joda-time\": {\n\t\t\t\t\tName:     \"joda-time\",\n\t\t\t\t\tVersion:  \"2.2\",\n\t\t\t\t\tPURL:     \"pkg:maven/joda-time/joda-time@2.2\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromFieldsWithContext(ctx, \"Apache 2\", \"http://www.apache.org/licenses/LICENSE-2.0.txt\", func() *file.Location {\n\t\t\t\t\t\t\tl := file.NewLocation(\"testdata/java-builds/packages/example-java-app-gradle-0.1.0.jar\")\n\t\t\t\t\t\t\treturn &l\n\t\t\t\t\t\t}()),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\t// ensure that nested packages with different names than that of the parent are appended as\n\t\t\t\t\t\t// a suffix on the virtual path with a colon separator between group name and artifact name\n\t\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-gradle-0.1.0.jar:joda-time:joda-time\",\n\t\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/joda-time/joda-time/pom.properties\",\n\t\t\t\t\t\t\tGroupID:    \"joda-time\",\n\t\t\t\t\t\t\tArtifactID: \"joda-time\",\n\t\t\t\t\t\t\tVersion:    \"2.2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:        \"META-INF/maven/joda-time/joda-time/pom.xml\",\n\t\t\t\t\t\t\tGroupID:     \"joda-time\",\n\t\t\t\t\t\t\tArtifactID:  \"joda-time\",\n\t\t\t\t\t\t\tVersion:     \"2.2\",\n\t\t\t\t\t\t\tName:        \"Joda time\",\n\t\t\t\t\t\t\tDescription: \"Date and time library to replace JDK date handling\",\n\t\t\t\t\t\t\tURL:         \"http://joda-time.sourceforge.net\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"example-java-app-maven\",\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\twantErr: require.NoError, // no nested jars\n\t\t\tignoreExtras: []string{\n\t\t\t\t\"Build-Jdk\", // can't guarantee the JDK used at build time\n\t\t\t\t\"Built-By\",  // podman returns the real UID\n\t\t\t},\n\t\t\texpected: map[string]pkg.Package{\n\t\t\t\t\"example-java-app-maven\": {\n\t\t\t\t\tName:     \"example-java-app-maven\",\n\t\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\t\tPURL:     \"pkg:maven/org.anchore/example-java-app-maven@0.1.0\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{\n\t\t\t\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\t\t\t\tType:           license.Concluded,\n\t\t\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\")),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// extra fields...\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Archiver-Version\",\n\t\t\t\t\t\t\t\t\tValue: \"Plexus Archiver\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Created-By\",\n\t\t\t\t\t\t\t\t\tValue: \"Apache Maven 3.8.6\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t//{\n\t\t\t\t\t\t\t\t//  Key:   \"Built-By\",\n\t\t\t\t\t\t\t\t//  Value: \"?\",\n\t\t\t\t\t\t\t\t//},\n\t\t\t\t\t\t\t\t//{\n\t\t\t\t\t\t\t\t//\tKey:   \"Build-Jdk\",\n\t\t\t\t\t\t\t\t//\tValue: \"14.0.1\",\n\t\t\t\t\t\t\t\t//},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Main-Class\",\n\t\t\t\t\t\t\t\t\tValue: \"hello.HelloWorld\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.properties\",\n\t\t\t\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.xml\",\n\t\t\t\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"joda-time\": {\n\t\t\t\t\tName:    \"joda-time\",\n\t\t\t\t\tVersion: \"2.9.2\",\n\t\t\t\t\tPURL:    \"pkg:maven/joda-time/joda-time@2.9.2\",\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromFieldsWithContext(ctx, \"Apache 2\", \"http://www.apache.org/licenses/LICENSE-2.0.txt\", func() *file.Location {\n\t\t\t\t\t\t\tl := file.NewLocation(\"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\")\n\t\t\t\t\t\t\treturn &l\n\t\t\t\t\t\t}()),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\t// ensure that nested packages with different names than that of the parent are appended as\n\t\t\t\t\t\t// a suffix on the virtual path\n\t\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar:joda-time:joda-time\",\n\t\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\t\tPath:       \"META-INF/maven/joda-time/joda-time/pom.properties\",\n\t\t\t\t\t\t\tGroupID:    \"joda-time\",\n\t\t\t\t\t\t\tArtifactID: \"joda-time\",\n\t\t\t\t\t\t\tVersion:    \"2.9.2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:        \"META-INF/maven/joda-time/joda-time/pom.xml\",\n\t\t\t\t\t\t\tGroupID:     \"joda-time\",\n\t\t\t\t\t\t\tArtifactID:  \"joda-time\",\n\t\t\t\t\t\t\tVersion:     \"2.9.2\",\n\t\t\t\t\t\t\tName:        \"Joda-Time\",\n\t\t\t\t\t\t\tDescription: \"Date and time library to replace JDK date handling\",\n\t\t\t\t\t\t\tURL:         \"http://www.joda.org/joda-time/\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\n\t\t\tgenerateJavaBuildFixture(t, test.fixture)\n\n\t\t\tfixture, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfor k := range test.expected {\n\t\t\t\tp := test.expected[k]\n\t\t\t\tp.Locations.Add(file.NewLocation(test.fixture))\n\t\t\t\ttest.expected[k] = p\n\t\t\t}\n\n\t\t\tcfg := ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t}\n\t\t\tparser, cleanupFn, err := newJavaArchiveParser(pkgtest.Context(t),\n\t\t\t\tfile.LocationReadCloser{\n\t\t\t\t\tLocation:   file.NewLocation(fixture.Name()),\n\t\t\t\t\tReadCloser: fixture,\n\t\t\t\t}, false, cfg)\n\t\t\tdefer cleanupFn()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual, _, err := parser.parse(ctx, nil)\n\t\t\tif test.wantErr != nil {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tif len(actual) != len(test.expected) {\n\t\t\t\tfor _, a := range actual {\n\t\t\t\t\tt.Log(\"   \", a)\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected package count; expected: %d got: %d\", len(test.expected), len(actual))\n\t\t\t}\n\n\t\t\tvar parent *pkg.Package\n\t\t\tfor _, a := range actual {\n\t\t\t\ta := a\n\t\t\t\tif strings.Contains(a.Name, \"example-\") {\n\t\t\t\t\tparent = &a\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif parent == nil {\n\t\t\t\tt.Fatal(\"could not find the parent pkg\")\n\t\t\t}\n\n\t\t\tfor _, a := range actual {\n\t\t\t\tif a.ID() == \"\" {\n\t\t\t\t\tt.Fatalf(\"empty package ID: %+v\", a)\n\t\t\t\t}\n\n\t\t\t\te, ok := test.expected[a.Name]\n\t\t\t\tif !ok {\n\t\t\t\t\tt.Errorf(\"entry not found: %s\", a.Name)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif a.Name != parent.Name && a.Metadata.(pkg.JavaArchive).Parent != nil && a.Metadata.(pkg.JavaArchive).Parent.Name != parent.Name {\n\t\t\t\t\tt.Errorf(\"mismatched parent: %+v\", a.Metadata.(pkg.JavaArchive).Parent)\n\t\t\t\t}\n\n\t\t\t\t// we need to compare the other fields without parent attached\n\t\t\t\tmetadata := a.Metadata.(pkg.JavaArchive)\n\t\t\t\tmetadata.Parent = nil\n\n\t\t\t\t// redact Digest which is computed differently between CI and local\n\t\t\t\tif len(metadata.ArchiveDigests) > 0 {\n\t\t\t\t\tmetadata.ArchiveDigests = nil\n\t\t\t\t}\n\n\t\t\t\t// ignore select fields (only works for the main section)\n\t\t\t\tfor _, field := range test.ignoreExtras {\n\t\t\t\t\tif metadata.Manifest != nil && metadata.Manifest.Main != nil {\n\t\t\t\t\t\tnewMain := make(pkg.KeyValues, 0)\n\t\t\t\t\t\tfor i, kv := range metadata.Manifest.Main {\n\t\t\t\t\t\t\tif kv.Key == field {\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnewMain = append(newMain, metadata.Manifest.Main[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmetadata.Manifest.Main = newMain\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// write censored data back\n\t\t\t\ta.Metadata = metadata\n\n\t\t\t\t// we can't use cmpopts.IgnoreFields for the license contents because of the set structure\n\t\t\t\t// drop the license contents from the comparison\n\t\t\t\tlicenses := a.Licenses.ToSlice()\n\t\t\t\tfor i := range licenses {\n\t\t\t\t\tlicenses[i].Contents = \"\"\n\t\t\t\t}\n\t\t\t\ta.Licenses = pkg.NewLicenseSet(licenses...)\n\n\t\t\t\tpkgtest.AssertPackagesEqual(t, e, a, cmpopts.IgnoreFields(pkg.License{}, \"Contents\"))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseNestedJar(t *testing.T) {\n\ttests := []struct {\n\t\tfixture      string\n\t\texpected     []pkg.Package\n\t\tignoreExtras []string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/java-builds/packages/spring-boot-0.0.1-SNAPSHOT.jar\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot\",\n\t\t\t\t\tVersion: \"0.0.1-SNAPSHOT\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jul-to-slf4j\",\n\t\t\t\t\tVersion: \"1.7.29\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"tomcat-embed-websocket\",\n\t\t\t\t\tVersion: \"9.0.29\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-validation\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"hibernate-validator\",\n\t\t\t\t\tVersion: \"6.0.18.Final\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jboss-logging\",\n\t\t\t\t\tVersion: \"3.4.1.Final\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-expression\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jakarta.validation-api\",\n\t\t\t\t\tVersion: \"2.0.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-web\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-actuator\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"log4j-api\",\n\t\t\t\t\tVersion: \"2.12.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"snakeyaml\",\n\t\t\t\t\tVersion: \"1.25\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-core\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-datatype-jsr310\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-aop\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-actuator-autoconfigure\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-jcl\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-logging\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jakarta.annotation-api\",\n\t\t\t\t\tVersion: \"1.3.5\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-webmvc\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"HdrHistogram\",\n\t\t\t\t\tVersion: \"2.1.11\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-web\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"logback-classic\",\n\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"log4j-to-slf4j\",\n\t\t\t\t\tVersion: \"2.12.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-json\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-databind\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-module-parameter-names\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"LatencyUtils\",\n\t\t\t\t\tVersion: \"2.0.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-autoconfigure\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-datatype-jdk8\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"tomcat-embed-core\",\n\t\t\t\t\tVersion: \"9.0.29\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"tomcat-embed-el\",\n\t\t\t\t\tVersion: \"9.0.29\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-beans\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-actuator\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"slf4j-api\",\n\t\t\t\t\tVersion: \"1.7.29\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-core\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"logback-core\",\n\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"micrometer-core\",\n\t\t\t\t\tVersion: \"1.3.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"pcollections\",\n\t\t\t\t\tVersion: \"3.1.0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"jackson-annotations\",\n\t\t\t\t\tVersion: \"2.10.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-boot-starter-tomcat\",\n\t\t\t\t\tVersion: \"2.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"classmate\",\n\t\t\t\t\tVersion: \"1.5.1\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:    \"spring-context\",\n\t\t\t\t\tVersion: \"5.2.2.RELEASE\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\n\t\t\tgenerateJavaBuildFixture(t, test.fixture)\n\n\t\t\tfixture, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tgap := newGenericArchiveParserAdapter(ArchiveCatalogerConfig{})\n\n\t\t\tactual, _, err := gap.processJavaArchive(pkgtest.Context(t), file.LocationReadCloser{\n\t\t\t\tLocation:   file.NewLocation(fixture.Name()),\n\t\t\t\tReadCloser: fixture,\n\t\t\t}, nil)\n\t\t\trequire.NoError(t, err)\n\n\t\t\texpectedNameVersionPairSet := strset.New()\n\n\t\t\tmakeKey := func(p *pkg.Package) string {\n\t\t\t\tif p == nil {\n\t\t\t\t\tt.Fatal(\"cannot make key for nil pkg\")\n\t\t\t\t}\n\t\t\t\treturn fmt.Sprintf(\"%s|%s\", p.Name, p.Version)\n\t\t\t}\n\n\t\t\tfor _, e := range test.expected {\n\t\t\t\texpectedNameVersionPairSet.Add(makeKey(&e))\n\t\t\t}\n\n\t\t\tactualNameVersionPairSet := strset.New()\n\t\t\tfor _, a := range actual {\n\t\t\t\ta := a\n\t\t\t\tkey := makeKey(&a)\n\t\t\t\tactualNameVersionPairSet.Add(key)\n\t\t\t\tif !expectedNameVersionPairSet.Has(key) {\n\t\t\t\t\tt.Errorf(\"extra package: %s\", a)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, key := range expectedNameVersionPairSet.List() {\n\t\t\t\tif !actualNameVersionPairSet.Has(key) {\n\t\t\t\t\tt.Errorf(\"missing package: %s\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(actual) != expectedNameVersionPairSet.Size() {\n\t\t\t\tt.Fatalf(\"unexpected package count: %d!=%d\", len(actual), expectedNameVersionPairSet.Size())\n\t\t\t}\n\n\t\t\tfor _, a := range actual {\n\t\t\t\ta := a\n\t\t\t\tactualKey := makeKey(&a)\n\n\t\t\t\tmetadata := a.Metadata.(pkg.JavaArchive)\n\t\t\t\tif actualKey == \"spring-boot|0.0.1-SNAPSHOT\" {\n\t\t\t\t\tif metadata.Parent != nil {\n\t\t\t\t\t\tt.Errorf(\"expected no parent for root pkg, got %q\", makeKey(metadata.Parent))\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif metadata.Parent == nil {\n\t\t\t\t\t\tt.Errorf(\"unassigned error for pkg=%q\", actualKey)\n\t\t\t\t\t} else if makeKey(metadata.Parent) != \"spring-boot|0.0.1-SNAPSHOT\" {\n\t\t\t\t\t\t// NB: this is a hard-coded condition to simplify the test harness to account for https://github.com/micrometer-metrics/micrometer/issues/1785\n\t\t\t\t\t\tif a.Name == \"pcollections\" {\n\t\t\t\t\t\t\tif metadata.Parent.Name != \"micrometer-core\" {\n\t\t\t\t\t\t\t\tt.Errorf(\"nested 'pcollections' pkg has wrong parent: %q\", metadata.Parent.Name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt.Errorf(\"bad parent for pkg=%q parent=%q\", actualKey, makeKey(metadata.Parent))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_newPackageFromMavenData(t *testing.T) {\n\tvirtualPath := \"given/virtual/path\"\n\ttests := []struct {\n\t\tname            string\n\t\tprops           pkg.JavaPomProperties\n\t\tproject         *parsedPomProject\n\t\tparent          *pkg.Package\n\t\texpectedParent  pkg.Package\n\t\texpectedPackage *pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"go case: get a single package from pom properties\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\tVersion:    \"1.0\",\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: the SAME as the original parent values\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: &pkg.Package{\n\t\t\t\tName:     \"some-artifact-id\",\n\t\t\t\tVersion:  \"1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: virtualPath + \":\" + \"some-group-id\" + \":\" + \"some-artifact-id\",\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\t\t\tVersion:    \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\tParent: &pkg.Package{\n\t\t\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\t\t\tVersion: \"2.0\",\n\t\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\t\t\tManifest:      nil,\n\t\t\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\t\t\tParent:        nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get a single package from pom properties + project\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\tVersion:    \"1.0\",\n\t\t\t},\n\t\t\tproject: &parsedPomProject{\n\t\t\t\tproject: &maven.Project{\n\t\t\t\t\tParent: &maven.Parent{\n\t\t\t\t\t\tGroupID:    ptr(\"some-parent-group-id\"),\n\t\t\t\t\t\tArtifactID: ptr(\"some-parent-artifact-id\"),\n\t\t\t\t\t\tVersion:    ptr(\"1.0-parent\"),\n\t\t\t\t\t},\n\t\t\t\t\tName:        ptr(\"some-name\"),\n\t\t\t\t\tGroupID:     ptr(\"some-group-id\"),\n\t\t\t\t\tArtifactID:  ptr(\"some-artifact-id\"),\n\t\t\t\t\tVersion:     ptr(\"1.0\"),\n\t\t\t\t\tDescription: ptr(\"desc\"),\n\t\t\t\t\tURL:         ptr(\"aweso.me\"),\n\t\t\t\t\tLicenses: &[]maven.License{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: ptr(\"MIT\"),\n\t\t\t\t\t\t\tURL:  ptr(\"https://opensource.org/licenses/MIT\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: the SAME as the original parent values\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: &pkg.Package{\n\t\t\t\tName:     \"some-artifact-id\",\n\t\t\t\tVersion:  \"1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.License{\n\t\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\t\tURLs:           []string{\"https://opensource.org/licenses/MIT\"},\n\t\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"given/virtual/path\")),\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: virtualPath + \":\" + \"some-group-id\" + \":\" + \"some-artifact-id\",\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\t\t\tVersion:    \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\t\t\tGroupID:    \"some-parent-group-id\",\n\t\t\t\t\t\t\tArtifactID: \"some-parent-artifact-id\",\n\t\t\t\t\t\t\tVersion:    \"1.0-parent\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tName:        \"some-name\",\n\t\t\t\t\t\tGroupID:     \"some-group-id\",\n\t\t\t\t\t\tArtifactID:  \"some-artifact-id\",\n\t\t\t\t\t\tVersion:     \"1.0\",\n\t\t\t\t\t\tDescription: \"desc\",\n\t\t\t\t\t\tURL:         \"aweso.me\",\n\t\t\t\t\t},\n\t\t\t\t\tParent: &pkg.Package{\n\t\t\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\t\t\tVersion: \"2.0\",\n\t\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\t\t\tManifest:      nil,\n\t\t\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\t\t\tParent:        nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single package from pom properties that's a Jenkins plugin\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins\",\n\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\tVersion:    \"1.0\",\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: the SAME as the original parent values\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: &pkg.Package{\n\t\t\t\tName:     \"some-artifact-id\",\n\t\t\t\tVersion:  \"1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: virtualPath + \":\" + \"com.cloudbees.jenkins.plugins\" + \":\" + \"some-artifact-id\",\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins\",\n\t\t\t\t\t\tArtifactID: \"some-artifact-id\",\n\t\t\t\t\t\tVersion:    \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\tParent: &pkg.Package{\n\t\t\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\t\t\tVersion: \"2.0\",\n\t\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\t\t\tManifest:      nil,\n\t\t\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\t\t\tParent:        nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"child matches parent by key\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\tArtifactID: \"some-parent-name\", // note: matches parent package\n\t\t\t\tVersion:    \"2.0\",              // note: matches parent package\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: the SAME as the original parent values\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:    nil,\n\t\t\t\t\t// note: we attach the discovered pom properties data\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\t\t\tArtifactID: \"some-parent-name\", // note: matches parent package\n\t\t\t\t\t\tVersion:    \"2.0\",              // note: matches parent package\n\t\t\t\t\t},\n\t\t\t\t\tParent: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"child matches parent by key and is Jenkins plugin\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins\",\n\t\t\t\tArtifactID: \"some-parent-name\", // note: matches parent package\n\t\t\t\tVersion:    \"2.0\",              // note: matches parent package\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tType:    pkg.JenkinsPluginPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"some-parent-virtual-path\",\n\t\t\t\t\tManifest:    nil,\n\t\t\t\t\t// note: we attach the discovered pom properties data\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins\",\n\t\t\t\t\t\tArtifactID: \"some-parent-name\", // note: matches parent package\n\t\t\t\t\t\tVersion:    \"2.0\",              // note: matches parent package\n\t\t\t\t\t},\n\t\t\t\t\tParent: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"child matches parent by artifact id\",\n\t\t\tprops: pkg.JavaPomProperties{\n\t\t\t\tName:       \"some-name\",\n\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\tArtifactID: \"some-parent-name\",       // note: matches parent package\n\t\t\t\tVersion:    \"NOT_THE_PARENT_VERSION\", // note: DOES NOT match parent package\n\t\t\t},\n\t\t\tparent: &pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"2.0\",\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath:   virtualPath + \":NEW_VIRTUAL_PATH\", // note: DOES NOT match the existing virtual path\n\t\t\t\t\tManifest:      nil,\n\t\t\t\t\tPomProperties: nil,\n\t\t\t\t\tParent:        nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: the SAME as the original parent values\n\t\t\texpectedParent: pkg.Package{\n\t\t\t\tName:    \"some-parent-name\",\n\t\t\t\tVersion: \"NOT_THE_PARENT_VERSION\", // note: the version is updated from pom properties\n\t\t\t\tType:    pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: virtualPath + \":NEW_VIRTUAL_PATH\",\n\t\t\t\t\tManifest:    nil,\n\t\t\t\t\t// note: we attach the discovered pom properties data\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tName:       \"some-name\",\n\t\t\t\t\t\tGroupID:    \"some-group-id\",\n\t\t\t\t\t\tArtifactID: \"some-parent-name\",\n\t\t\t\t\t\tVersion:    \"NOT_THE_PARENT_VERSION\",\n\t\t\t\t\t},\n\t\t\t\t\tParent: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackage: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tlocations := file.NewLocationSet(file.NewLocation(virtualPath))\n\t\t\tif test.expectedPackage != nil {\n\t\t\t\ttest.expectedPackage.Locations = locations\n\t\t\t\tif test.expectedPackage.Metadata.(pkg.JavaArchive).Parent != nil {\n\t\t\t\t\ttest.expectedPackage.Metadata.(pkg.JavaArchive).Parent.Locations = locations\n\t\t\t\t}\n\t\t\t}\n\t\t\tif test.parent != nil {\n\t\t\t\ttest.parent.Locations = locations\n\t\t\t}\n\t\t\ttest.expectedParent.Locations = locations\n\n\t\t\tr := maven.NewResolver(nil, maven.DefaultConfig())\n\t\t\tactualPackage := newPackageFromMavenData(pkgtest.Context(t), r, test.props, test.project, test.parent, file.NewLocation(virtualPath))\n\t\t\tif test.expectedPackage == nil {\n\t\t\t\trequire.Nil(t, actualPackage)\n\t\t\t} else {\n\t\t\t\tpkgtest.AssertPackagesEqual(t, *test.expectedPackage, *actualPackage)\n\t\t\t}\n\n\t\t\tpkgtest.AssertPackagesEqual(t, test.expectedParent, *test.parent)\n\t\t})\n\t}\n}\n\nfunc Test_artifactIDMatchesFilename(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tartifactID string\n\t\tfileName   string // without version or extension\n\t\twant       bool\n\t}{\n\t\t{\n\t\t\tname:       \"artifact id within file name\",\n\t\t\tartifactID: \"atlassian-extras-api\",\n\t\t\tfileName:   \"com.atlassian.extras_atlassian-extras-api\",\n\t\t\twant:       true,\n\t\t},\n\t\t{\n\t\t\tname:       \"file name within artifact id\",\n\t\t\tartifactID: \"atlassian-extras-api-something\",\n\t\t\tfileName:   \"atlassian-extras-api\",\n\t\t\twant:       true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, artifactIDMatchesFilename(tt.artifactID, tt.fileName, strset.New()))\n\t\t})\n\t}\n}\n\nfunc Test_parseJavaArchive_regressions(t *testing.T) {\n\tctx := pkgtest.Context(t)\n\tapiAll := pkg.Package{\n\t\tName:      \"api-all\",\n\t\tVersion:   \"2.0.0\",\n\t\tType:      pkg.JavaPkg,\n\t\tLanguage:  pkg.Java,\n\t\tPURL:      \"pkg:maven/org.apache.directory.api/api-all@2.0.0\",\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/api-all-2.0.0-sources.jar\")),\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tVirtualPath: \"testdata/jar-metadata/cache/api-all-2.0.0-sources.jar\",\n\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Built-By\",\n\t\t\t\t\t\tValue: \"elecharny\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Created-By\",\n\t\t\t\t\t\tValue: \"Apache Maven 3.6.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Build-Jdk\",\n\t\t\t\t\t\tValue: \"1.8.0_191\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tPath:       \"META-INF/maven/org.apache.directory.api/api-all/pom.properties\",\n\t\t\t\tGroupID:    \"org.apache.directory.api\",\n\t\t\t\tArtifactID: \"api-all\",\n\t\t\t\tVersion:    \"2.0.0\",\n\t\t\t}, PomProject: &pkg.JavaPomProject{\n\t\t\t\tPath:       \"META-INF/maven/org.apache.directory.api/api-all/pom.xml\",\n\t\t\t\tArtifactID: \"api-all\",\n\t\t\t\tGroupID:    \"org.apache.directory.api\",\n\t\t\t\tVersion:    \"2.0.0\",\n\t\t\t\tName:       \"Apache Directory API All\",\n\t\t\t\tParent:     &pkg.JavaPomParent{GroupID: \"org.apache.directory.api\", ArtifactID: \"api-parent\", Version: \"2.0.0\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tapiAsn1Api := pkg.Package{\n\t\tName:      \"api-asn1-api\",\n\t\tVersion:   \"2.0.0\",\n\t\tPURL:      \"pkg:maven/org.apache.directory.api/api-asn1-api@2.0.0\",\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/api-all-2.0.0-sources.jar\")),\n\t\tType:      pkg.JavaPkg,\n\t\tLanguage:  pkg.Java,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tVirtualPath: \"testdata/jar-metadata/cache/api-all-2.0.0-sources.jar:org.apache.directory.api:api-asn1-api\",\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tPath:       \"META-INF/maven/org.apache.directory.api/api-asn1-api/pom.properties\",\n\t\t\t\tGroupID:    \"org.apache.directory.api\",\n\t\t\t\tArtifactID: \"api-asn1-api\",\n\t\t\t\tVersion:    \"2.0.0\",\n\t\t\t},\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tPath:        \"META-INF/maven/org.apache.directory.api/api-asn1-api/pom.xml\",\n\t\t\t\tArtifactID:  \"api-asn1-api\",\n\t\t\t\tGroupID:     \"org.apache.directory.api\",\n\t\t\t\tVersion:     \"2.0.0\",\n\t\t\t\tName:        \"Apache Directory API ASN.1 API\",\n\t\t\t\tDescription: \"ASN.1 API\",\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"org.apache.directory.api\",\n\t\t\t\t\tArtifactID: \"api-asn1-parent\",\n\t\t\t\t\tVersion:    \"2.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tParent: &apiAll,\n\t\t},\n\t}\n\n\tmicronautAop := pkg.Package{\n\t\tName:      \"micronaut-aop\",\n\t\tVersion:   \"4.9.11\",\n\t\tPURL:      \"pkg:maven/io.micronaut/micronaut-aop@4.9.11\",\n\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/micronaut-aop-4.9.11.jar\")),\n\t\tType:      pkg.JavaPkg,\n\t\tLanguage:  pkg.Java,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tVirtualPath: \"testdata/jar-metadata/cache/micronaut-aop-4.9.11.jar\",\n\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Automatic-Module-Name\",\n\t\t\t\t\t\tValue: \"io.micronaut.micronaut_aop\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Version\",\n\t\t\t\t\t\tValue: \"4.9.11\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Title\",\n\t\t\t\t\t\tValue: \"Micronaut Core\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}, PomProject: &pkg.JavaPomProject{\n\t\t\t\tPath:        \"META-INF/maven/io.micronaut/micronaut-aop/pom.xml\",\n\t\t\t\tArtifactID:  \"micronaut-aop\",\n\t\t\t\tGroupID:     \"io.micronaut\",\n\t\t\t\tVersion:     \"4.9.11\",\n\t\t\t\tName:        \"Micronaut Core\",\n\t\t\t\tDescription: \"Core components supporting the Micronaut Framework\",\n\t\t\t\tURL:         \"https://micronaut.io\",\n\t\t\t},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname                  string\n\t\tfixtureName           string\n\t\tfileExtension         string\n\t\texpectedPkgs          []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t\tassignParent          bool\n\t}{\n\t\t{\n\t\t\tname:        \"duplicate jar regression - go case (issue #2130)\",\n\t\t\tfixtureName: \"jackson-core-2.15.2\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"jackson-core\",\n\t\t\t\t\tVersion:   \"2.15.2\",\n\t\t\t\t\tType:      pkg.JavaPkg,\n\t\t\t\t\tLanguage:  pkg.Java,\n\t\t\t\t\tPURL:      \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.2\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/jackson-core-2.15.2.jar\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocationWithContext(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tfile.NewLocation(\"testdata/jar-metadata/cache/jackson-core-2.15.2.jar\"),\n\t\t\t\t\t\t\t\"https://www.apache.org/licenses/LICENSE-2.0.txt\",\n\t\t\t\t\t\t)...,\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/jar-metadata/cache/jackson-core-2.15.2.jar\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-License\", Value: \"https://www.apache.org/licenses/LICENSE-2.0.txt\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"com.fasterxml.jackson.core.jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Vendor-Id\", Value: \"com.fasterxml.jackson.core\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Title\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-DocURL\", Value: \"https://github.com/FasterXML/jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Import-Package\", Value: \"com.fasterxml.jackson.core;version=...snip\"},\n\t\t\t\t\t\t\t\t{Key: \"Require-Capability\", Value: `osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.8))\"`},\n\t\t\t\t\t\t\t\t{Key: \"Export-Package\", Value: \"com.fasterxml.jackson.core;version...snip\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Name\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Multi-Release\", Value: \"true\"},\n\t\t\t\t\t\t\t\t{Key: \"Build-Jdk-Spec\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Description\", Value: \"Core Jackson processing abstractions\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-ManifestVersion\", Value: \"2\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Tool\", Value: \"Bnd-6.3.1.202206071316\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t\t{Key: \"X-Compile-Target-JDK\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"X-Compile-Source-JDK\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Created-By\", Value: \"Apache Maven Bundle Plugin 5.1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:        \"META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml\",\n\t\t\t\t\t\t\tArtifactID:  \"jackson-core\",\n\t\t\t\t\t\t\tGroupID:     \"com.fasterxml.jackson.core\",\n\t\t\t\t\t\t\tVersion:     \"2.15.2\",\n\t\t\t\t\t\t\tName:        \"Jackson-core\",\n\t\t\t\t\t\t\tDescription: \"Core Jackson processing abstractions (aka Streaming API), implementation for JSON\",\n\t\t\t\t\t\t\tURL:         \"https://github.com/FasterXML/jackson-core\",\n\t\t\t\t\t\t\tParent:      &pkg.JavaPomParent{GroupID: \"com.fasterxml.jackson\", ArtifactID: \"jackson-base\", Version: \"2.15.2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// not under test\n\t\t\t\t\t\t//ArchiveDigests: []file.Digest{{Algorithm: \"sha1\", Value: \"d8bc1d9c428c96fe447e2c429fc4304d141024df\"}},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"duplicate jar regression - bad case (issue #2130)\",\n\t\t\tfixtureName: \"com.fasterxml.jackson.core.jackson-core-2.15.2\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"jackson-core\",\n\t\t\t\t\tVersion:   \"2.15.2\",\n\t\t\t\t\tType:      pkg.JavaPkg,\n\t\t\t\t\tLanguage:  pkg.Java,\n\t\t\t\t\tPURL:      \"pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.2\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/com.fasterxml.jackson.core.jackson-core-2.15.2.jar\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocationWithContext(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tfile.NewLocation(\"testdata/jar-metadata/cache/com.fasterxml.jackson.core.jackson-core-2.15.2.jar\"),\n\t\t\t\t\t\t\t\"https://www.apache.org/licenses/LICENSE-2.0.txt\",\n\t\t\t\t\t\t)...,\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/jar-metadata/cache/com.fasterxml.jackson.core.jackson-core-2.15.2.jar\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-License\", Value: \"https://www.apache.org/licenses/LICENSE-2.0.txt\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"com.fasterxml.jackson.core.jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Vendor-Id\", Value: \"com.fasterxml.jackson.core\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Title\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-DocURL\", Value: \"https://github.com/FasterXML/jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Import-Package\", Value: \"com.fasterxml.jackson.core;version=...snip\"},\n\t\t\t\t\t\t\t\t{Key: \"Require-Capability\", Value: `osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.8))\"`},\n\t\t\t\t\t\t\t\t{Key: \"Export-Package\", Value: \"com.fasterxml.jackson.core;version...snip\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Name\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Multi-Release\", Value: \"true\"},\n\t\t\t\t\t\t\t\t{Key: \"Build-Jdk-Spec\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Description\", Value: \"Core Jackson processing abstractions\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"Jackson-core\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-ManifestVersion\", Value: \"2\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Tool\", Value: \"Bnd-6.3.1.202206071316\"},\n\t\t\t\t\t\t\t\t{Key: \"Implementation-Vendor\", Value: \"FasterXML\"},\n\t\t\t\t\t\t\t\t{Key: \"Bundle-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t\t{Key: \"X-Compile-Target-JDK\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"X-Compile-Source-JDK\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Created-By\", Value: \"Apache Maven Bundle Plugin 5.1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Specification-Version\", Value: \"2.15.2\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\t\tPath:        \"META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml\",\n\t\t\t\t\t\t\tArtifactID:  \"jackson-core\",\n\t\t\t\t\t\t\tGroupID:     \"com.fasterxml.jackson.core\",\n\t\t\t\t\t\t\tVersion:     \"2.15.2\",\n\t\t\t\t\t\t\tName:        \"Jackson-core\",\n\t\t\t\t\t\t\tDescription: \"Core Jackson processing abstractions (aka Streaming API), implementation for JSON\",\n\t\t\t\t\t\t\tURL:         \"https://github.com/FasterXML/jackson-core\",\n\t\t\t\t\t\t\tParent:      &pkg.JavaPomParent{GroupID: \"com.fasterxml.jackson\", ArtifactID: \"jackson-base\", Version: \"2.15.2\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// not under test\n\t\t\t\t\t\t//ArchiveDigests: []file.Digest{{Algorithm: \"sha1\", Value: \"abd3e329270fc54a2acaceb45420fd5710ecefd5\"}},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"multiple pom for parent selection regression (pr 2231)\",\n\t\t\tfixtureName:  \"api-all-2.0.0-sources\",\n\t\t\tassignParent: true,\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\tapiAll,\n\t\t\t\tapiAsn1Api,\n\t\t\t},\n\t\t\texpectedRelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: apiAsn1Api,\n\t\t\t\t\tTo:   apiAll,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:         \"exclude instrumentation jars with Weave-Classes in manifest\",\n\t\t\tfixtureName:  \"spring-instrumentation-4.3.0-1.0\",\n\t\t\texpectedPkgs: nil, // we expect no packages to be discovered when Weave-Classes present in the manifest\n\t\t},\n\t\t{\n\t\t\tname:          \"Jenkins plugins assigned jenkins-plugin package type\",\n\t\t\tfixtureName:   \"gradle\",\n\t\t\tfileExtension: \"hpi\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"gradle\",\n\t\t\t\t\tVersion:   \"2.11\",\n\t\t\t\t\tType:      pkg.JenkinsPluginPkg,\n\t\t\t\t\tLanguage:  pkg.Java,\n\t\t\t\t\tPURL:      \"pkg:maven/org.jenkins-ci.plugins/gradle@2.11\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/jar-metadata/cache/gradle.hpi\")),\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tVirtualPath: \"testdata/jar-metadata/cache/gradle.hpi\",\n\t\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tKey:   \"Plugin-Dependencies\",\n\t\t\t\t\t\t\t\t\tValue: \"maven-plugin:3.14;resolution:=optional...snip\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{Key: \"Group-Id\", Value: \"org.jenkins-ci.plugins\"},\n\t\t\t\t\t\t\t\t{Key: \"Minimum-Java-Version\", Value: \"1.8\"},\n\t\t\t\t\t\t\t\t{Key: \"Short-Name\", Value: \"gradle\"},\n\t\t\t\t\t\t\t\t{Key: \"Extension-Name\", Value: \"gradle\"},\n\t\t\t\t\t\t\t\t{Key: \"Long-Name\", Value: \"Gradle Plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Jenkins-Version\", Value: \"2.303.3\"},\n\t\t\t\t\t\t\t\t{Key: \"Url\", Value: \"https://github.com/jenkinsci/gradle-plugin\"},\n\t\t\t\t\t\t\t\t{Key: \"Compatible-Since-Version\", Value: \"1.0\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-Version\", Value: \"2.11\"},\n\t\t\t\t\t\t\t\t{Key: \"Plugin-Developers\", Value: \"Stefan Wolf:wolfs:\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// not under test\n\t\t\t\t\t\t//ArchiveDigests: []file.Digest{{Algorithm: \"sha1\", Value: \"d8bc1d9c428c96fe447e2c429fc4304d141024df\"}},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:          \"micronaut-aop\",\n\t\t\tfixtureName:   \"micronaut-aop-4.9.11\",\n\t\t\tfileExtension: \"jar\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\tmicronautAop,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgap := newGenericArchiveParserAdapter(ArchiveCatalogerConfig{})\n\t\t\tif tt.assignParent {\n\t\t\t\tassignParent(&tt.expectedPkgs[0], tt.expectedPkgs[1:]...)\n\t\t\t}\n\t\t\tfor i := range tt.expectedPkgs {\n\t\t\t\ttt.expectedPkgs[i].SetID()\n\t\t\t}\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromFile(t, generateJavaMetadataJarFixture(t, tt.fixtureName, tt.fileExtension)).\n\t\t\t\tExpects(tt.expectedPkgs, tt.expectedRelationships).\n\t\t\t\tWithCompareOptions(\n\t\t\t\t\tcmpopts.IgnoreFields(pkg.JavaArchive{}, \"ArchiveDigests\"),\n\t\t\t\t\tcmp.Comparer(func(x, y pkg.KeyValue) bool {\n\t\t\t\t\t\tif x.Key != y.Key {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif x.Value != y.Value {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}),\n\t\t\t\t).\n\t\t\t\tTestParser(t, gap.parseJavaArchive)\n\t\t})\n\t}\n}\n\nfunc Test_deterministicMatchingPomProperties(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected maven.ID\n\t}{\n\t\t{\n\t\t\tfixture:  \"multiple-matching-2.11.5\",\n\t\t\texpected: maven.NewID(\"org.multiple\", \"multiple-matching-1\", \"2.11.5\"),\n\t\t},\n\t\t{\n\t\t\tfixture:  \"org.multiple-thename\",\n\t\t\texpected: maven.NewID(\"org.multiple\", \"thename\", \"10.11.12\"),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tfixturePath := generateJavaMetadataJarFixture(t, test.fixture, \"jar\")\n\n\t\t\tfor i := 0; i < 5; i++ {\n\t\t\t\tfunc() {\n\t\t\t\t\tfixture, err := os.Open(fixturePath)\n\t\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t\tparser, cleanupFn, err := newJavaArchiveParser(pkgtest.Context(t),\n\t\t\t\t\t\tfile.LocationReadCloser{\n\t\t\t\t\t\t\tLocation:   file.NewLocation(fixture.Name()),\n\t\t\t\t\t\t\tReadCloser: fixture,\n\t\t\t\t\t\t}, false, ArchiveCatalogerConfig{UseNetwork: false})\n\t\t\t\t\tdefer cleanupFn()\n\t\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t\tgroupID, artifactID, version, _ := parser.discoverMainPackageFromPomInfo(pkgtest.Context(t))\n\t\t\t\t\trequire.Equal(t, test.expected, maven.NewID(groupID, artifactID, version))\n\t\t\t\t}()\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc assignParent(parent *pkg.Package, childPackages ...pkg.Package) {\n\tfor i, jp := range childPackages {\n\t\tif v, ok := jp.Metadata.(pkg.JavaArchive); ok {\n\t\t\tv.Parent = parent\n\t\t\tchildPackages[i].Metadata = v\n\t\t}\n\t}\n}\n\nfunc generateJavaBuildFixture(t *testing.T, fixturePath string) {\n\tif _, err := os.Stat(fixturePath); !os.IsNotExist(err) {\n\t\t// fixture already exists...\n\t\treturn\n\t}\n\n\tmakeTask := strings.TrimPrefix(fixturePath, \"testdata/java-builds/\")\n\tt.Log(color.Bold.Sprintf(\"Generating Fixture from 'make %s'\", makeTask))\n\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Errorf(\"unable to get cwd: %+v\", err)\n\t}\n\n\tcmd := exec.Command(\"make\", makeTask)\n\tcmd.Dir = filepath.Join(cwd, \"testdata/java-builds/\")\n\n\trun(t, cmd)\n}\n\nfunc generateJavaMetadataJarFixture(t *testing.T, fixtureName string, fileExtension string) string {\n\tif fileExtension == \"\" {\n\t\tfileExtension = \"jar\"\n\t}\n\n\tfixturePath := filepath.Join(\"testdata/jar-metadata/cache/\", fixtureName+\".\"+fileExtension)\n\tif _, err := os.Stat(fixturePath); !os.IsNotExist(err) {\n\t\t// fixture already exists...\n\t\treturn fixturePath\n\t}\n\n\tmakeTask := filepath.Join(\"cache\", fixtureName+\".\"+fileExtension)\n\tt.Log(color.Bold.Sprintf(\"Generating Fixture from 'make %s'\", makeTask))\n\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Errorf(\"unable to get cwd: %+v\", err)\n\t}\n\n\tcmd := exec.Command(\"make\", makeTask)\n\tcmd.Dir = filepath.Join(cwd, \"testdata/jar-metadata\")\n\n\trun(t, cmd)\n\n\treturn fixturePath\n}\n\nfunc run(t testing.TB, cmd *exec.Cmd) {\n\n\tstderr, err := cmd.StderrPipe()\n\tif err != nil {\n\t\tt.Fatalf(\"could not get stderr: %+v\", err)\n\t}\n\tstdout, err := cmd.StdoutPipe()\n\tif err != nil {\n\t\tt.Fatalf(\"could not get stdout: %+v\", err)\n\t}\n\n\terr = cmd.Start()\n\tif err != nil {\n\t\tt.Fatalf(\"failed to start cmd: %+v\", err)\n\t}\n\n\tshow := func(label string, reader io.ReadCloser) {\n\t\tscanner := bufio.NewScanner(reader)\n\t\tscanner.Split(bufio.ScanLines)\n\t\tfor scanner.Scan() {\n\t\t\tt.Logf(\"%s: %s\", label, scanner.Text())\n\t\t}\n\t}\n\tgo show(\"out\", stdout)\n\tgo show(\"err\", stderr)\n\n\tif err := cmd.Wait(); err != nil {\n\t\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\t\t// The program has exited with an exit code != 0\n\n\t\t\t// This works on both Unix and Windows. Although package\n\t\t\t// syscall is generally platform dependent, WaitStatus is\n\t\t\t// defined for both Unix and Windows and in both cases has\n\t\t\t// an ExitStatus() method with the same signature.\n\t\t\tif status, ok := exiterr.Sys().(syscall.WaitStatus); ok {\n\t\t\t\tif status.ExitStatus() != 0 {\n\t\t\t\t\tt.Fatalf(\"failed to generate fixture: rc=%d\", status.ExitStatus())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tt.Fatalf(\"unable to get generate fixture result: %+v\", err)\n\t\t}\n\t}\n}\n\n// ptr returns a pointer to the given value\nfunc ptr[T any](value T) *T {\n\treturn &value\n}\n\nfunc Test_corruptJarArchive(t *testing.T) {\n\tap := newGenericArchiveParserAdapter(DefaultArchiveCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/example.jar\").\n\t\tWithError().\n\t\tTestParser(t, ap.parseJavaArchive)\n}\n\nfunc Test_jarPomPropertyResolutionDoesNotPanic(t *testing.T) {\n\tjarName := generateJavaMetadataJarFixture(t, \"commons-lang3-3.12.0\", \"jar\")\n\tfixture, err := os.Open(jarName)\n\trequire.NoError(t, err)\n\n\tctx := pkgtest.Context(t)\n\t// setup parser\n\tap, cleanupFn, err := newJavaArchiveParser(pkgtest.Context(t),\n\t\tfile.LocationReadCloser{\n\t\t\tLocation:   file.NewLocation(fixture.Name()),\n\t\t\tReadCloser: fixture,\n\t\t}, false, ArchiveCatalogerConfig{\n\t\t\tUseMavenLocalRepository: true,\n\t\t\tMavenLocalRepositoryDir: \"internal/maven/testdata/maven-repo\",\n\t\t})\n\tdefer cleanupFn()\n\trequire.NoError(t, err)\n\n\t_, _, err = ap.parse(ctx, nil)\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  java.ArchiveCatalogerConfig:\n    fields:\n      - key: IncludeIndexedArchives\n        description: IncludeIndexedArchives indicates whether to search within indexed archive files (e.g., .zip).\n      - key: IncludeUnindexedArchives\n        description: IncludeUnindexedArchives indicates whether to search within unindexed archive files (e.g., .tar*).\n      - key: UseNetwork\n        description: UseNetwork enables network operations for java package metadata enrichment, such as fetching parent POMs and license information.\n        app_key: java.use-network\n      - key: UseMavenLocalRepository\n        description: UseMavenLocalRepository enables searching the local maven repository (`~/.m2/repository` by default) for parent POMs and other metadata.\n        app_key: java.use-maven-local-repository\n      - key: MavenLocalRepositoryDir\n        description: MavenLocalRepositoryDir specifies the location of the local maven repository. When not set, defaults to `~/.m2/repository`.\n        app_key: java.maven-local-repository-dir\n      - key: MavenBaseURL\n        description: MavenBaseURL specifies the base URL(s) to use for fetching POMs and metadata from maven central or other repositories. When not set, defaults to `https://repo1.maven.org/maven2`.\n        app_key: java.maven-url\n      - key: MaxParentRecursiveDepth\n        description: MaxParentRecursiveDepth limits how many parent POMs will be fetched recursively before stopping. This prevents fetching excessively deep parent graphs.\n        app_key: java.max-parent-recursive-depth\n      - key: ResolveTransitiveDependencies\n        description: ResolveTransitiveDependencies enables resolving transitive dependencies for java packages found within archives.\n        app_key: java.resolve-transitive-dependencies\ncatalogers:\n  - ecosystem: java # MANUAL\n    name: java-archive-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/java/cataloger.go\n      function: NewArchiveCataloger\n    config: java.ArchiveCatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - java\n      - language\n      - maven\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/*.jar'\n          - '**/*.war'\n          - '**/*.ear'\n          - '**/*.par'\n          - '**/*.sar'\n          - '**/*.nar'\n          - '**/*.jpi'\n          - '**/*.hpi'\n          - '**/*.kar'\n          - '**/*.lpkg'\n        comment: JAR-based archives - always active\n      - method: glob\n        criteria:\n          - '**/*.zip'\n        conditions:\n          - when:\n              IncludeIndexedArchives: true\n        comment: ZIP archives require indexed archive support\n      - method: glob\n        criteria:\n          - '**/*.tar'\n          - '**/*.tar.gz'\n          - '**/*.tgz'\n          - '**/*.tar.bz'\n          - '**/*.tar.bz2'\n          - '**/*.tbz'\n          - '**/*.tbz2'\n          - '**/*.tar.br'\n          - '**/*.tbr'\n          - '**/*.tar.lz4'\n          - '**/*.tlz4'\n          - '**/*.tar.sz'\n          - '**/*.tsz'\n          - '**/*.tar.xz'\n          - '**/*.txz'\n          - '**/*.tar.zst'\n          - '**/*.tzst'\n          - '**/*.tar.zstd'\n          - '**/*.tzstd'\n        conditions:\n          - when:\n              IncludeUnindexedArchives: true\n        comment: TAR archives require unindexed archive support\n    metadata_types: # AUTO-GENERATED\n      - pkg.JavaArchive\n    package_types: # AUTO-GENERATED\n      - java-archive\n    json_schema_types: # AUTO-GENERATED\n      - JavaArchive\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: true\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n          - dev\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: true\n        evidence:\n          - JavaArchive.ArchiveDigests\n  - ecosystem: java # MANUAL\n    name: java-gradle-lockfile-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/java/cataloger.go\n      function: NewGradleLockfileCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - gradle\n      - java\n      - language\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseGradleLockfile\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/gradle.lockfile*'\n        metadata_types: # AUTO-GENERATED\n          - pkg.JavaArchive\n        package_types: # AUTO-GENERATED\n          - java-archive\n        json_schema_types: # AUTO-GENERATED\n          - JavaArchive\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: java # MANUAL\n    name: java-pom-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - java\n      - language\n      - maven\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '*pom.xml'\n    metadata_types: # AUTO-GENERATED\n      - pkg.JavaArchive\n    package_types: # AUTO-GENERATED\n      - java-archive\n    json_schema_types: # AUTO-GENERATED\n      - JavaArchive\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: true\n      - name: dependency.depth\n        default:\n          - direct\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n          - dev\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: java # MANUAL\n    name: java-jvm-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/java/cataloger.go\n      function: NewJvmDistributionCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - image\n      - installed\n      - java\n      - jdk\n      - jre\n      - jvm\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseJVMRelease\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/release'\n        metadata_types: # AUTO-GENERATED\n          - pkg.JavaVMInstallation\n        package_types: # AUTO-GENERATED\n          - binary\n        json_schema_types: # AUTO-GENERATED\n          - JavaJvmInstallation\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: null\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: null\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - JavaVMInstallation.Files\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: java # MANUAL\n    name: graalvm-native-image-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - java\n      - language\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: mimetype\n        criteria:\n          - application/x-executable\n          - application/x-mach-binary\n          - application/x-elf\n          - application/x-sharedlib\n          - application/vnd.microsoft.portable-executable\n    package_types: # AUTO-GENERATED\n      - graalvm-native-image\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: true\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n        comment: the dependencies ultimately depends on the quality of the embedded SBOM\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n          - dev\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/java/cataloger.go",
    "content": "/*\nPackage java provides a concrete Cataloger implementation for packages relating to the Java language ecosystem.\n*/\npackage java\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewArchiveCataloger returns a new Java archive cataloger object for detecting packages with archives (jar, war, ear, par, sar, jpi, hpi, and native-image formats)\nfunc NewArchiveCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger {\n\tgap := newGenericArchiveParserAdapter(cfg)\n\n\tc := generic.NewCataloger(\"java-archive-cataloger\").\n\t\tWithParserByGlobs(gap.parseJavaArchive, archiveFormatGlobs...)\n\n\tif cfg.IncludeIndexedArchives {\n\t\t// java archives wrapped within zip files\n\t\tgzp := newGenericZipWrappedJavaArchiveParser(cfg)\n\t\tc.WithParserByGlobs(gzp.parseZipWrappedJavaArchive, genericZipGlobs...)\n\t}\n\n\tif cfg.IncludeUnindexedArchives {\n\t\t// java archives wrapped within tar files\n\t\tgtp := newGenericTarWrappedJavaArchiveParser(cfg)\n\t\tc.WithParserByGlobs(gtp.parseTarWrappedJavaArchive, genericTarGlobs...)\n\t}\n\treturn c\n}\n\n// NewPomCataloger returns a cataloger capable of parsing dependencies from a pom.xml file.\n// Pom files list dependencies that maybe not be locally installed yet.\nfunc NewPomCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger {\n\treturn pomXMLCataloger{\n\t\tcfg: cfg,\n\t}\n}\n\n// NewGradleLockfileCataloger returns a cataloger capable of parsing dependencies from a gradle.lockfile file.\n// Note: Older versions of lockfiles aren't supported yet\nfunc NewGradleLockfileCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"java-gradle-lockfile-cataloger\").\n\t\tWithParserByGlobs(parseGradleLockfile, \"**/gradle.lockfile*\")\n}\n\n// NewJvmDistributionCataloger returns packages representing JDK/JRE installations (of multiple distribution types).\nfunc NewJvmDistributionCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"java-jvm-cataloger\").\n\t\t// this is a very permissive glob that will match more than just the JVM release file.\n\t\t// we started with \"**/{java,jvm}/*/release\", but this prevents scanning JVM archive contents (e.g. jdk8u402.zip).\n\t\t// this approach lets us check more files for JVM release info, but be rather silent about errors.\n\t\tWithParserByGlobs(parseJVMRelease, \"**/release\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/cataloger_test.go",
    "content": "package java\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_ArchiveCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain java archive files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"java-archives/example.jar\",\n\t\t\t\t\"java-archives/example.war\",\n\t\t\t\t\"java-archives/example.ear\",\n\t\t\t\t\"java-archives/example.par\",\n\t\t\t\t\"java-archives/example.sar\",\n\t\t\t\t\"java-archives/example.nar\",\n\t\t\t\t\"java-archives/example.kar\",\n\t\t\t\t\"java-archives/example.jpi\",\n\t\t\t\t\"java-archives/example.hpi\",\n\t\t\t\t\"java-archives/example.far\",\n\t\t\t\t\"java-archives/example.lpkg\",\n\t\t\t\t\"java-archives/example.rar\",\n\t\t\t\t\"archives/example.zip\",\n\t\t\t\t\"archives/example.tar\",\n\t\t\t\t\"archives/example.tar.gz\",\n\t\t\t\t\"archives/example.tgz\",\n\t\t\t\t\"archives/example.tar.bz\",\n\t\t\t\t\"archives/example.tar.bz2\",\n\t\t\t\t\"archives/example.tbz\",\n\t\t\t\t\"archives/example.tbz2\",\n\t\t\t\t\"archives/example.tar.br\",\n\t\t\t\t\"archives/example.tbr\",\n\t\t\t\t\"archives/example.tar.lz4\",\n\t\t\t\t\"archives/example.tlz4\",\n\t\t\t\t\"archives/example.tar.sz\",\n\t\t\t\t\"archives/example.tsz\",\n\t\t\t\t\"archives/example.tar.xz\",\n\t\t\t\t\"archives/example.txz\",\n\t\t\t\t\"archives/example.tar.zst\",\n\t\t\t\t\"archives/example.tzst\",\n\t\t\t\t\"archives/example.tar.zstd\",\n\t\t\t\t\"archives/example.tzstd\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t,\n\t\t\t\t\tNewArchiveCataloger(\n\t\t\t\t\t\tArchiveCatalogerConfig{\n\t\t\t\t\t\t\tArchiveSearchConfig: cataloging.ArchiveSearchConfig{\n\t\t\t\t\t\t\t\tIncludeIndexedArchives:   true,\n\t\t\t\t\t\t\t\tIncludeUnindexedArchives: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t})\n\t}\n}\n\nfunc Test_POMCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain java pom files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/pom.xml\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t,\n\t\t\t\t\tNewPomCataloger(\n\t\t\t\t\t\tArchiveCatalogerConfig{\n\t\t\t\t\t\t\tArchiveSearchConfig: cataloging.ArchiveSearchConfig{\n\t\t\t\t\t\t\t\tIncludeIndexedArchives:   true,\n\t\t\t\t\t\t\t\tIncludeUnindexedArchives: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t))\n\t\t})\n\t}\n}\n\nfunc TestJvmDistributionCataloger(t *testing.T) {\n\n\tcases := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname:    \"valid 1.8.0\",\n\t\t\tfixture: \"testdata/jvm-installs/oracle-jdk-se-8\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"jdk\",\n\t\t\t\tVersion:   \"1.8.0_411-b25\",\n\t\t\t\tFoundBy:   \"java-jvm-cataloger\",\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"usr/lib/jvm/jdk-1.8-oracle-x64/release\")),\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tType:      pkg.BinaryPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:java_se:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:jre:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:jdk:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:generic/oracle/jdk@1.8.0_411-b25\",\n\t\t\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\t\t\tRelease: pkg.JavaVMRelease{\n\t\t\t\t\t\tJavaRuntimeVersion: \"1.8.0_411-b25\",\n\t\t\t\t\t\tJavaVersion:        \"1.8.0_411\",\n\t\t\t\t\t\tOsArch:             \"amd64\",\n\t\t\t\t\t\tOsName:             \"Linux\",\n\t\t\t\t\t\tOsVersion:          \"2.6\",\n\t\t\t\t\t\tSource:             \".:git:71ec2089cf8c+\",\n\t\t\t\t\t\tBuildType:          \"commercial\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\"usr/lib/jvm/jdk-1.8-oracle-x64/bin/javac\",\n\t\t\t\t\t\t\"usr/lib/jvm/jdk-1.8-oracle-x64/release\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"valid post-jep223\",\n\t\t\tfixture: \"testdata/jvm-installs/valid-post-jep223\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"21.0.4+7-LTS\",\n\t\t\t\tFoundBy:   \"java-jvm-cataloger\",\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"jvm/openjdk/release\")),\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tType:      pkg.BinaryPkg,\n\t\t\t\tCPEs:      []cpe.CPE{cpe.Must(\"cpe:2.3:a:oracle:openjdk:21.0.4:*:*:*:*:*:*:*\", cpe.DeclaredSource)},\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@21.0.4%2B7-LTS?repository_url=https%3A%2F%2Fgithub.com%2Fadoptium%2Fjdk21u.git\",\n\t\t\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\t\t\tRelease: pkg.JavaVMRelease{\n\t\t\t\t\t\tImplementor:        \"Eclipse Adoptium\",\n\t\t\t\t\t\tImplementorVersion: \"Temurin-21.0.4+7\",\n\t\t\t\t\t\tJavaRuntimeVersion: \"21.0.4+7-LTS\",\n\t\t\t\t\t\tJavaVersion:        \"21.0.4\",\n\t\t\t\t\t\tJavaVersionDate:    \"2024-07-16\",\n\t\t\t\t\t\tLibc:               \"gnu\",\n\t\t\t\t\t\tModules: []string{\n\t\t\t\t\t\t\t\"java.base\", \"java.compiler\", \"java.datatransfer\", \"java.xml\", \"java.prefs\",\n\t\t\t\t\t\t\t\"java.desktop\", \"java.instrument\", \"java.logging\", \"java.management\",\n\t\t\t\t\t\t\t\"java.security.sasl\", \"java.naming\", \"java.rmi\", \"java.management.rmi\",\n\t\t\t\t\t\t\t\"java.net.http\", \"java.scripting\", \"java.security.jgss\",\n\t\t\t\t\t\t\t\"java.transaction.xa\", \"java.sql\", \"java.sql.rowset\", \"java.xml.crypto\", \"java.se\",\n\t\t\t\t\t\t\t\"java.smartcardio\", \"jdk.accessibility\", \"jdk.internal.jvmstat\", \"jdk.attach\",\n\t\t\t\t\t\t\t\"jdk.charsets\", \"jdk.internal.opt\", \"jdk.zipfs\", \"jdk.compiler\", \"jdk.crypto.ec\",\n\t\t\t\t\t\t\t\"jdk.crypto.cryptoki\", \"jdk.dynalink\", \"jdk.internal.ed\", \"jdk.editpad\", \"jdk.hotspot.agent\",\n\t\t\t\t\t\t\t\"jdk.httpserver\", \"jdk.incubator.vector\", \"jdk.internal.le\", \"jdk.internal.vm.ci\",\n\t\t\t\t\t\t\t\"jdk.internal.vm.compiler\", \"jdk.internal.vm.compiler.management\", \"jdk.jartool\",\n\t\t\t\t\t\t\t\"jdk.javadoc\", \"jdk.jcmd\", \"jdk.management\", \"jdk.management.agent\", \"jdk.jconsole\",\n\t\t\t\t\t\t\t\"jdk.jdeps\", \"jdk.jdwp.agent\", \"jdk.jdi\", \"jdk.jfr\", \"jdk.jlink\", \"jdk.jpackage\", \"jdk.jshell\",\n\t\t\t\t\t\t\t\"jdk.jsobject\", \"jdk.jstatd\", \"jdk.localedata\", \"jdk.management.jfr\", \"jdk.naming.dns\",\n\t\t\t\t\t\t\t\"jdk.naming.rmi\", \"jdk.net\", \"jdk.nio.mapmode\", \"jdk.random\", \"jdk.sctp\", \"jdk.security.auth\",\n\t\t\t\t\t\t\t\"jdk.security.jgss\", \"jdk.unsupported\", \"jdk.unsupported.desktop\", \"jdk.xml.dom\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOsArch:          \"aarch64\",\n\t\t\t\t\t\tOsName:          \"Linux\",\n\t\t\t\t\t\tSource:          \".:git:13710926b798\",\n\t\t\t\t\t\tBuildSource:     \"git:1271f10a26c47e1489a814dd2731f936a588d621\",\n\t\t\t\t\t\tBuildSourceRepo: \"https://github.com/adoptium/temurin-build.git\",\n\t\t\t\t\t\tSourceRepo:      \"https://github.com/adoptium/jdk21u.git\",\n\t\t\t\t\t\tFullVersion:     \"21.0.4+7-LTS\",\n\t\t\t\t\t\tSemanticVersion: \"21.0.4+7\",\n\t\t\t\t\t\tBuildInfo:       \"OS: Linux Version: 5.4.0-150-generic\",\n\t\t\t\t\t\tJvmVariant:      \"Hotspot\",\n\t\t\t\t\t\tJvmVersion:      \"21.0.4+7-LTS\",\n\t\t\t\t\t\tImageType:       \"JDK\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\"jvm/openjdk/release\",\n\t\t\t\t\t\t\"jvm/openjdk/sibling/child/file1.txt\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tp := tt.expected\n\t\t\tp.SetID()\n\n\t\t\tpkgtest.TestCataloger(t, tt.fixture, NewJvmDistributionCataloger(), []pkg.Package{p}, nil)\n\t\t})\n\t}\n\n}\n\nfunc TestJvmDistributionCatalogerFromFile(t *testing.T) {\n\n\tcases := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected pkg.Package\n\t}{\n\t\t{\n\t\t\tname:    \"valid 1.8.0\",\n\t\t\tfixture: \"testdata/jvm-installs/oracle-jdk-se-8/usr/lib/jvm/jdk-1.8-oracle-x64/release\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"jdk\",\n\t\t\t\tVersion:   \"1.8.0_411-b25\",\n\t\t\t\tFoundBy:   \"java-jvm-cataloger\",\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/release\")),\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tType:      pkg.BinaryPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:java_se:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:jre:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t\tcpe.Must(\"cpe:2.3:a:oracle:jdk:1.8.0:update411:*:*:*:*:*:*\", cpe.DeclaredSource),\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:generic/oracle/jdk@1.8.0_411-b25\",\n\t\t\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\t\t\tRelease: pkg.JavaVMRelease{\n\t\t\t\t\t\tJavaRuntimeVersion: \"1.8.0_411-b25\",\n\t\t\t\t\t\tJavaVersion:        \"1.8.0_411\",\n\t\t\t\t\t\tOsArch:             \"amd64\",\n\t\t\t\t\t\tOsName:             \"Linux\",\n\t\t\t\t\t\tOsVersion:          \"2.6\",\n\t\t\t\t\t\tSource:             \".:git:71ec2089cf8c+\",\n\t\t\t\t\t\tBuildType:          \"commercial\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\"/release\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"valid post-jep223\",\n\t\t\tfixture: \"testdata/jvm-installs/valid-post-jep223/jvm/openjdk/release\",\n\t\t\texpected: pkg.Package{\n\t\t\t\tName:      \"openjdk\",\n\t\t\t\tVersion:   \"21.0.4+7-LTS\",\n\t\t\t\tFoundBy:   \"java-jvm-cataloger\",\n\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/release\")),\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tType:      pkg.BinaryPkg,\n\t\t\t\tCPEs:      []cpe.CPE{cpe.Must(\"cpe:2.3:a:oracle:openjdk:21.0.4:*:*:*:*:*:*:*\", cpe.DeclaredSource)},\n\t\t\t\tPURL:      \"pkg:generic/oracle/openjdk@21.0.4%2B7-LTS?repository_url=https%3A%2F%2Fgithub.com%2Fadoptium%2Fjdk21u.git\",\n\t\t\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\t\t\tRelease: pkg.JavaVMRelease{\n\t\t\t\t\t\tImplementor:        \"Eclipse Adoptium\",\n\t\t\t\t\t\tImplementorVersion: \"Temurin-21.0.4+7\",\n\t\t\t\t\t\tJavaRuntimeVersion: \"21.0.4+7-LTS\",\n\t\t\t\t\t\tJavaVersion:        \"21.0.4\",\n\t\t\t\t\t\tJavaVersionDate:    \"2024-07-16\",\n\t\t\t\t\t\tLibc:               \"gnu\",\n\t\t\t\t\t\tModules: []string{\n\t\t\t\t\t\t\t\"java.base\", \"java.compiler\", \"java.datatransfer\", \"java.xml\", \"java.prefs\",\n\t\t\t\t\t\t\t\"java.desktop\", \"java.instrument\", \"java.logging\", \"java.management\",\n\t\t\t\t\t\t\t\"java.security.sasl\", \"java.naming\", \"java.rmi\", \"java.management.rmi\",\n\t\t\t\t\t\t\t\"java.net.http\", \"java.scripting\", \"java.security.jgss\",\n\t\t\t\t\t\t\t\"java.transaction.xa\", \"java.sql\", \"java.sql.rowset\", \"java.xml.crypto\", \"java.se\",\n\t\t\t\t\t\t\t\"java.smartcardio\", \"jdk.accessibility\", \"jdk.internal.jvmstat\", \"jdk.attach\",\n\t\t\t\t\t\t\t\"jdk.charsets\", \"jdk.internal.opt\", \"jdk.zipfs\", \"jdk.compiler\", \"jdk.crypto.ec\",\n\t\t\t\t\t\t\t\"jdk.crypto.cryptoki\", \"jdk.dynalink\", \"jdk.internal.ed\", \"jdk.editpad\", \"jdk.hotspot.agent\",\n\t\t\t\t\t\t\t\"jdk.httpserver\", \"jdk.incubator.vector\", \"jdk.internal.le\", \"jdk.internal.vm.ci\",\n\t\t\t\t\t\t\t\"jdk.internal.vm.compiler\", \"jdk.internal.vm.compiler.management\", \"jdk.jartool\",\n\t\t\t\t\t\t\t\"jdk.javadoc\", \"jdk.jcmd\", \"jdk.management\", \"jdk.management.agent\", \"jdk.jconsole\",\n\t\t\t\t\t\t\t\"jdk.jdeps\", \"jdk.jdwp.agent\", \"jdk.jdi\", \"jdk.jfr\", \"jdk.jlink\", \"jdk.jpackage\", \"jdk.jshell\",\n\t\t\t\t\t\t\t\"jdk.jsobject\", \"jdk.jstatd\", \"jdk.localedata\", \"jdk.management.jfr\", \"jdk.naming.dns\",\n\t\t\t\t\t\t\t\"jdk.naming.rmi\", \"jdk.net\", \"jdk.nio.mapmode\", \"jdk.random\", \"jdk.sctp\", \"jdk.security.auth\",\n\t\t\t\t\t\t\t\"jdk.security.jgss\", \"jdk.unsupported\", \"jdk.unsupported.desktop\", \"jdk.xml.dom\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOsArch:          \"aarch64\",\n\t\t\t\t\t\tOsName:          \"Linux\",\n\t\t\t\t\t\tSource:          \".:git:13710926b798\",\n\t\t\t\t\t\tBuildSource:     \"git:1271f10a26c47e1489a814dd2731f936a588d621\",\n\t\t\t\t\t\tBuildSourceRepo: \"https://github.com/adoptium/temurin-build.git\",\n\t\t\t\t\t\tSourceRepo:      \"https://github.com/adoptium/jdk21u.git\",\n\t\t\t\t\t\tFullVersion:     \"21.0.4+7-LTS\",\n\t\t\t\t\t\tSemanticVersion: \"21.0.4+7\",\n\t\t\t\t\t\tBuildInfo:       \"OS: Linux Version: 5.4.0-150-generic\",\n\t\t\t\t\t\tJvmVariant:      \"Hotspot\",\n\t\t\t\t\t\tJvmVersion:      \"21.0.4+7-LTS\",\n\t\t\t\t\t\tImageType:       \"JDK\",\n\t\t\t\t\t},\n\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\"/release\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range cases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tp := tt.expected\n\t\t\tp.SetID()\n\n\t\t\tpkgtest.TestCatalogerFromFileSource(t, tt.fixture, NewJvmDistributionCataloger(), []pkg.Package{p}, nil)\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/config.go",
    "content": "package java\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven\"\n)\n\ntype ArchiveCatalogerConfig struct {\n\tcataloging.ArchiveSearchConfig `yaml:\",inline\" json:\"\" mapstructure:\",squash\"`\n\n\t// \tUseNetwork enables network operations for java package metadata enrichment, such as fetching parent POMs and license information.\n\t// app-config: java.use-network\n\tUseNetwork bool `yaml:\"use-network\" json:\"use-network\" mapstructure:\"use-network\"`\n\n\t// UseMavenLocalRepository enables searching the local maven repository (`~/.m2/repository` by default) for parent POMs and other metadata.\n\t// app-config: java.use-maven-local-repository\n\tUseMavenLocalRepository bool `yaml:\"use-maven-localrepository\" json:\"use-maven-localrepository\" mapstructure:\"use-maven-localrepository\"`\n\n\t// MavenLocalRepositoryDir specifies the location of the local maven repository. When not set, defaults to `~/.m2/repository`.\n\t// app-config: java.maven-local-repository-dir\n\tMavenLocalRepositoryDir string `yaml:\"maven-localrepository-dir\" json:\"maven-localrepository-dir\" mapstructure:\"maven-localrepository-dir\"`\n\n\t// MavenBaseURL specifies the base URL(s) to use for fetching POMs and metadata from maven central or other repositories. When not set, defaults to `https://repo1.maven.org/maven2`.\n\t// app-config: java.maven-url\n\tMavenBaseURL string `yaml:\"maven-base-url\" json:\"maven-base-url\" mapstructure:\"maven-base-url\"`\n\n\t// MaxParentRecursiveDepth limits how many parent POMs will be fetched recursively before stopping. This prevents fetching excessively deep parent graphs.\n\t// app-config: java.max-parent-recursive-depth\n\tMaxParentRecursiveDepth int `yaml:\"max-parent-recursive-depth\" json:\"max-parent-recursive-depth\" mapstructure:\"max-parent-recursive-depth\"`\n\n\t// ResolveTransitiveDependencies enables resolving transitive dependencies for java packages found within archives.\n\t// app-config: java.resolve-transitive-dependencies\n\tResolveTransitiveDependencies bool `yaml:\"resolve-transitive-dependencies\" json:\"resolve-transitive-dependencies\" mapstructure:\"resolve-transitive-dependencies\"`\n}\n\nfunc DefaultArchiveCatalogerConfig() ArchiveCatalogerConfig {\n\tmavenCfg := maven.DefaultConfig()\n\treturn ArchiveCatalogerConfig{\n\t\tArchiveSearchConfig:           cataloging.DefaultArchiveSearchConfig(),\n\t\tUseNetwork:                    mavenCfg.UseNetwork,\n\t\tUseMavenLocalRepository:       mavenCfg.UseLocalRepository,\n\t\tMavenLocalRepositoryDir:       mavenCfg.LocalRepositoryDir,\n\t\tMavenBaseURL:                  strings.Join(mavenCfg.Repositories, \",\"),\n\t\tMaxParentRecursiveDepth:       mavenCfg.MaxParentRecursiveDepth,\n\t\tResolveTransitiveDependencies: false,\n\t}\n}\n\nfunc (j ArchiveCatalogerConfig) WithUseNetwork(input bool) ArchiveCatalogerConfig {\n\tj.UseNetwork = input\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) WithUseMavenLocalRepository(input bool) ArchiveCatalogerConfig {\n\tj.UseMavenLocalRepository = input\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) WithMavenLocalRepositoryDir(input string) ArchiveCatalogerConfig {\n\tj.MavenLocalRepositoryDir = input\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) WithMavenBaseURL(input string) ArchiveCatalogerConfig {\n\tif input != \"\" {\n\t\tj.MavenBaseURL = input\n\t}\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) WithResolveTransitiveDependencies(resolveTransitiveDependencies bool) ArchiveCatalogerConfig {\n\tj.ResolveTransitiveDependencies = resolveTransitiveDependencies\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) WithArchiveTraversal(search cataloging.ArchiveSearchConfig, maxDepth int) ArchiveCatalogerConfig {\n\tj.MaxParentRecursiveDepth = maxDepth\n\tj.ArchiveSearchConfig = search\n\treturn j\n}\n\nfunc (j ArchiveCatalogerConfig) mavenConfig() maven.Config {\n\treturn maven.Config{\n\t\tUseNetwork:              j.UseNetwork,\n\t\tUseLocalRepository:      j.UseMavenLocalRepository,\n\t\tLocalRepositoryDir:      j.MavenLocalRepositoryDir,\n\t\tRepositories:            strings.Split(j.MavenBaseURL, \",\"),\n\t\tMaxParentRecursiveDepth: j.MaxParentRecursiveDepth,\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/graalvm_native_image_cataloger.go",
    "content": "package java\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"debug/pe\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"unsafe\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype nativeImage interface {\n\tfetchPkgs() ([]pkg.Package, []artifact.Relationship, error)\n}\n\ntype nativeImageElf struct {\n\tfile *elf.File\n}\n\ntype nativeImageMachO struct {\n\tfile *macho.File\n}\n\ntype exportTypesPE struct {\n\tfunctionPointer uint32\n\tnamePointer     uint32\n\theaderAttribute uint32\n}\n\ntype exportPrefixPE struct {\n\tcharacteristics uint32\n\ttimeDateStamp   uint32\n\tmajorVersion    uint16\n\tminorVersion    uint16\n\tname            uint32\n\tbase            uint32\n}\n\ntype exportContentPE struct {\n\t// Directory Entry Contents for finding SBOM symbols\n\tnumberOfFunctions  uint32\n\tnumberOfNames      uint32\n\taddressOfFunctions uint32\n\taddressOfNames     uint32\n\t// Locations of SBOM symbols in the .data section\n\taddressOfSbom       uint32\n\taddressOfSbomLength uint32\n\taddressOfSvmVersion uint32\n}\n\n// A nativeImagePE must maintain the underlying reader to fetch information unavailable in the Golang API.\ntype nativeImagePE struct {\n\tfile          *pe.File\n\treader        io.ReaderAt\n\texportSymbols pe.DataDirectory\n\texports       []byte\n\tt             exportTypesPE\n\theader        exportPrefixPE\n}\n\ntype nativeImageCataloger struct{}\n\nconst nativeImageCatalogerName = \"graalvm-native-image-cataloger\"\nconst nativeImageSbomSymbol = \"sbom\"\nconst nativeImageSbomLengthSymbol = \"sbom_length\"\nconst nativeImageSbomVersionSymbol = \"__svm_version_info\"\nconst nativeImageMissingSymbolsError = \"one or more symbols are missing from the native image executable\"\nconst nativeImageInvalidIndexError = \"parsing the executable file generated an invalid index\"\nconst nativeImageMissingExportedDataDirectoryError = \"exported data directory is missing\"\n\n// NewNativeImageCataloger returns a new Native Image cataloger object.\nfunc NewNativeImageCataloger() pkg.Cataloger {\n\treturn &nativeImageCataloger{}\n}\n\n// Name returns a string that uniquely describes a native image cataloger\nfunc (c *nativeImageCataloger) Name() string {\n\treturn nativeImageCatalogerName\n}\n\n// decompressSbom returns the packages given within a native image executable's SBOM.\nfunc decompressSbom(dataBuf []byte, sbomStart uint64, lengthStart uint64) ([]pkg.Package, []artifact.Relationship, error) {\n\tlengthEnd := lengthStart + 8\n\tbufLen := len(dataBuf)\n\tif lengthEnd > uint64(bufLen) {\n\t\treturn nil, nil, errors.New(\"the 'sbom_length' symbol overflows the binary\")\n\t}\n\n\tlength := dataBuf[lengthStart:lengthEnd]\n\tp := bytes.NewBuffer(length)\n\tvar storedLength uint64\n\terr := binary.Read(p, binary.LittleEndian, &storedLength)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not read from binary file: %w\", err)\n\t}\n\n\tlog.WithFields(\"len\", storedLength).Trace(\"found java native-image SBOM\")\n\tsbomEnd := sbomStart + storedLength\n\tif sbomEnd > uint64(bufLen) {\n\t\treturn nil, nil, errors.New(\"the sbom symbol overflows the binary\")\n\t}\n\n\tsbomCompressed := dataBuf[sbomStart:sbomEnd]\n\tp = bytes.NewBuffer(sbomCompressed)\n\tgzreader, err := gzip.NewReader(p)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not decompress the java native-image SBOM: %w\", err)\n\t}\n\n\tsbom, _, _, err := cyclonedxjson.NewFormatDecoder().Decode(gzreader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not unmarshal the java native-image SBOM: %w\", err)\n\t}\n\tvar pkgs []pkg.Package\n\tfor p := range sbom.Artifacts.Packages.Enumerate() {\n\t\tpkgs = append(pkgs, p)\n\t}\n\treturn pkgs, sbom.Relationships, nil\n}\n\n// fileError logs an error message when an executable cannot be read.\nfunc fileError(filename string, err error) (nativeImage, error) {\n\t// We could not read the file as a binary for the desired platform, but it may still be a native-image executable.\n\treturn nil, fmt.Errorf(\"unable to read executable (file=%q): %w\", filename, err)\n}\n\n// newElf reads a Native Image from an ELF executable.\nfunc newElf(filename string, r io.ReaderAt) (nativeImage, error) {\n\t// First attempt to read an ELF file.\n\tbi, err := elf.NewFile(r)\n\n\tif err != nil {\n\t\tvar fmtErr *elf.FormatError\n\t\tif errors.As(err, &fmtErr) {\n\t\t\t// this is not an elf file\n\t\t\tlog.WithFields(\"filename\", filename, \"error\", err).Trace(\"not an ELF binary\")\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn fileError(filename, err)\n\t}\n\tif bi == nil {\n\t\treturn nil, nil\n\t}\n\treturn nativeImageElf{\n\t\tfile: bi,\n\t}, nil\n}\n\n// newMachO reads a Native Image from a Mach O executable.\nfunc newMachO(filename string, r io.ReaderAt) (nativeImage, error) {\n\t// First attempt to read an ELF file.\n\tbi, err := macho.NewFile(r)\n\n\tif err != nil {\n\t\tvar fmtErr *macho.FormatError\n\t\tif errors.As(err, &fmtErr) {\n\t\t\t// this is not a MachO file\n\t\t\tlog.WithFields(\"filename\", filename, \"error\", err).Trace(\"not a MachO binary\")\n\t\t\treturn nil, nil\n\t\t}\n\t}\n\tif bi == nil {\n\t\treturn nil, nil\n\t}\n\treturn nativeImageMachO{\n\t\tfile: bi,\n\t}, nil\n}\n\n// newPE reads a Native Image from a Portable Executable file.\nfunc newPE(filename string, r io.ReaderAt) (nativeImage, error) {\n\t// First attempt to read an PE file.\n\tbi, err := pe.NewFile(r)\n\n\t// The reader does not refer to a PE file.\n\tif err != nil {\n\t\t// note: there isn't a good way to distinguish between a format error and other kinds of errors\n\t\tlog.WithFields(\"filename\", filename, \"error\", err).Trace(\"not a PE binary\")\n\t\treturn nil, nil\n\t}\n\tif bi == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar exportSymbolsDataDirectory pe.DataDirectory\n\tswitch h := bi.OptionalHeader.(type) {\n\tcase *pe.OptionalHeader32:\n\t\texportSymbolsDataDirectory = h.DataDirectory[0]\n\tcase *pe.OptionalHeader64:\n\t\texportSymbolsDataDirectory = h.DataDirectory[0]\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unable to get 'exportSymbolsDataDirectory' from binary: %s\", filename)\n\t}\n\t// If we have no exported symbols it is not a Native Image\n\tif exportSymbolsDataDirectory.Size == 0 {\n\t\treturn fileError(filename, errors.New(nativeImageMissingExportedDataDirectoryError))\n\t}\n\texportSymbolsOffset := uint64(exportSymbolsDataDirectory.VirtualAddress)\n\texports := make([]byte, exportSymbolsDataDirectory.Size)\n\t_, err = r.ReadAt(exports, int64(exportSymbolsOffset))\n\tif err != nil {\n\t\treturn fileError(filename, fmt.Errorf(\"could not read the exported symbols data directory: %w\", err))\n\t}\n\treturn nativeImagePE{\n\t\tfile:          bi,\n\t\treader:        r,\n\t\texportSymbols: exportSymbolsDataDirectory,\n\t\texports:       exports,\n\t\tt: exportTypesPE{\n\t\t\tfunctionPointer: 0,\n\t\t\tnamePointer:     0,\n\t\t\theaderAttribute: 0,\n\t\t},\n\t\theader: exportPrefixPE{\n\t\t\tcharacteristics: 0,\n\t\t\ttimeDateStamp:   0,\n\t\t\tmajorVersion:    0,\n\t\t\tminorVersion:    0,\n\t\t\tname:            0,\n\t\t\tbase:            0,\n\t\t},\n\t}, nil\n}\n\n// fetchPkgs obtains the packages given in the binary.\nfunc (ni nativeImageElf) fetchPkgs() (pkgs []pkg.Package, relationships []artifact.Relationship, retErr error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// this can happen in cases where a malformed binary is passed in can be initially parsed, but not\n\t\t\t// used without error later down the line.\n\t\t\tretErr = fmt.Errorf(\"recovered from panic: %v\", r)\n\t\t}\n\t}()\n\n\tbi := ni.file\n\tvar sbom elf.Symbol\n\tvar sbomLength elf.Symbol\n\tvar svmVersion elf.Symbol\n\n\tsi, err := ni.getSymbols()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif len(si) == 0 {\n\t\treturn nil, nil, errors.New(nativeImageMissingSymbolsError)\n\t}\n\tfor _, s := range si {\n\t\tswitch s.Name {\n\t\tcase nativeImageSbomSymbol:\n\t\t\tsbom = s\n\t\tcase nativeImageSbomLengthSymbol:\n\t\t\tsbomLength = s\n\t\tcase nativeImageSbomVersionSymbol:\n\t\t\tsvmVersion = s\n\t\t}\n\t}\n\tif sbom.Value == 0 || sbomLength.Value == 0 || svmVersion.Value == 0 {\n\t\treturn nil, nil, errors.New(nativeImageMissingSymbolsError)\n\t}\n\tdataSection := bi.Section(\".data\")\n\tif dataSection == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no .data section found in binary: %w\", err)\n\t}\n\tdataSectionBase := dataSection.Addr\n\tdata, err := dataSection.Data()\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"cannot read the .data section: %w\", err)\n\t}\n\tsbomLocation := sbom.Value - dataSectionBase\n\tlengthLocation := sbomLength.Value - dataSectionBase\n\n\treturn decompressSbom(data, sbomLocation, lengthLocation)\n}\n\n// getSymbols obtains the union of the symbols in the .symtab and .dynsym sections of the ELF file\nfunc (ni nativeImageElf) getSymbols() ([]elf.Symbol, error) {\n\tvar symbols []elf.Symbol\n\tsymsErr := error(nil)\n\tdynErr := error(nil)\n\n\tif syms, err := ni.file.Symbols(); err == nil {\n\t\tsymbols = append(symbols, syms...)\n\t} else {\n\t\tsymsErr = err\n\t}\n\n\tif dynSyms, err := ni.file.DynamicSymbols(); err == nil {\n\t\tsymbols = append(symbols, dynSyms...)\n\t} else {\n\t\tdynErr = err\n\t}\n\n\tif symsErr != nil && dynErr != nil {\n\t\treturn nil, fmt.Errorf(\"could not retrieve symbols from binary: SHT_SYMTAB error: %v, SHT_DYNSYM error: %v\", symsErr, dynErr)\n\t}\n\n\treturn symbols, nil\n}\n\n// fetchPkgs obtains the packages from a Native Image given as a Mach O file.\nfunc (ni nativeImageMachO) fetchPkgs() (pkgs []pkg.Package, relationships []artifact.Relationship, retErr error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// this can happen in cases where a malformed binary is passed in can be initially parsed, but not\n\t\t\t// used without error later down the line.\n\t\t\tretErr = fmt.Errorf(\"recovered from panic: %v\", r)\n\t\t}\n\t}()\n\n\tvar sbom macho.Symbol\n\tvar sbomLength macho.Symbol\n\tvar svmVersion macho.Symbol\n\n\tbi := ni.file\n\tif bi.Symtab == nil {\n\t\treturn nil, nil, errors.New(nativeImageMissingSymbolsError)\n\t}\n\tfor _, s := range bi.Symtab.Syms {\n\t\tswitch s.Name {\n\t\tcase \"_\" + nativeImageSbomSymbol:\n\t\t\tsbom = s\n\t\tcase \"_\" + nativeImageSbomLengthSymbol:\n\t\t\tsbomLength = s\n\t\tcase \"_\" + nativeImageSbomVersionSymbol:\n\t\t\tsvmVersion = s\n\t\t}\n\t}\n\tif sbom.Value == 0 || sbomLength.Value == 0 || svmVersion.Value == 0 {\n\t\treturn nil, nil, errors.New(nativeImageMissingSymbolsError)\n\t}\n\n\tdataSegment := bi.Segment(\"__DATA\")\n\tif dataSegment == nil {\n\t\treturn nil, nil, nil\n\t}\n\tdataBuf, err := dataSegment.Data()\n\tif err != nil {\n\t\tlog.Tracef(\"cannot obtain buffer from data segment\")\n\t\treturn nil, nil, nil\n\t}\n\tsbomLocation := sbom.Value - dataSegment.Addr\n\tlengthLocation := sbomLength.Value - dataSegment.Addr\n\n\treturn decompressSbom(dataBuf, sbomLocation, lengthLocation)\n}\n\n// fetchExportAttribute obtains an attribute from the exported symbols directory entry.\nfunc (ni nativeImagePE) fetchExportAttribute(i int) (uint32, error) {\n\tvar attribute uint32\n\tn := len(ni.exports)\n\tj := int(unsafe.Sizeof(ni.header)) + i*int(unsafe.Sizeof(ni.t.headerAttribute))\n\tif j+4 >= n {\n\t\tlog.Tracef(\"invalid index to export directory entry attribute: %v\", j)\n\t\treturn uint32(0), errors.New(nativeImageInvalidIndexError)\n\t}\n\tp := bytes.NewBuffer(ni.exports[j : j+4])\n\terr := binary.Read(p, binary.LittleEndian, &attribute)\n\tif err != nil {\n\t\tlog.Tracef(\"error fetching export directory entry attribute: %v\", err)\n\t\treturn uint32(0), err\n\t}\n\treturn attribute, nil\n}\n\n// fetchExportFunctionPointer obtains a function pointer from the exported symbols directory entry.\nfunc (ni nativeImagePE) fetchExportFunctionPointer(functionsBase uint32, i uint32) (uint32, error) {\n\tvar pointer uint32\n\n\tn := uint32(len(ni.exports))\n\tsz := uint32(unsafe.Sizeof(ni.t.functionPointer))\n\tj := functionsBase + i*sz\n\tif j+sz >= n {\n\t\tlog.Tracef(\"invalid index to exported function: %v\", j)\n\t\treturn uint32(0), errors.New(nativeImageInvalidIndexError)\n\t}\n\tp := bytes.NewBuffer(ni.exports[j : j+sz])\n\terr := binary.Read(p, binary.LittleEndian, &pointer)\n\tif err != nil {\n\t\tlog.Tracef(\"error fetching exported function: %v\", err)\n\t\treturn uint32(0), err\n\t}\n\treturn pointer, nil\n}\n\n// fetchExportContent obtains the content of the export directory entry relevant to the SBOM.\nfunc (ni nativeImagePE) fetchExportContent() (*exportContentPE, error) {\n\tcontent := new(exportContentPE)\n\tvar err error\n\tcontent.numberOfFunctions, err = ni.fetchExportAttribute(0)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not find the number of exported 'number of functions' attribute: %w\", err)\n\t}\n\tcontent.numberOfNames, err = ni.fetchExportAttribute(1)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not find the number of exported 'number of names' attribute: %w\", err)\n\t}\n\tcontent.addressOfFunctions, err = ni.fetchExportAttribute(2)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not find the exported 'address of functions' attribute: %w\", err)\n\t}\n\tcontent.addressOfNames, err = ni.fetchExportAttribute(3)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not find the exported 'address of names' attribute: %w\", err)\n\t}\n\treturn content, nil\n}\n\n// fetchSbomSymbols enumerates the symbols exported by a binary to detect Native Image's SBOM symbols.\nfunc (ni nativeImagePE) fetchSbomSymbols(content *exportContentPE) {\n\t// Appending NULL bytes to symbol names simplifies finding them in the export data directory\n\tsbomBytes := []byte(nativeImageSbomSymbol + \"\\x00\")\n\tsbomLengthBytes := []byte(nativeImageSbomLengthSymbol + \"\\x00\")\n\tsvmVersionInfoBytes := []byte(nativeImageSbomVersionSymbol + \"\\x00\")\n\tn := uint32(len(ni.exports))\n\n\t// Find SBOM, SBOM Length, and SVM Version Symbol\n\tfor i := uint32(0); i < content.numberOfNames; i++ {\n\t\tj := i * uint32(unsafe.Sizeof(ni.t.namePointer))\n\t\taddressBase := content.addressOfNames - ni.exportSymbols.VirtualAddress\n\t\tk := addressBase + j\n\t\tsz := uint32(unsafe.Sizeof(ni.t.namePointer))\n\t\tif k+sz >= n {\n\t\t\tlog.Tracef(\"invalid index to exported function: %v\", k)\n\t\t\t// If we are at the end of exports, stop looking\n\t\t\treturn\n\t\t}\n\t\tvar symbolAddress uint32\n\t\tp := bytes.NewBuffer(ni.exports[k : k+sz])\n\t\terr := binary.Read(p, binary.LittleEndian, &symbolAddress)\n\t\tif err != nil {\n\t\t\tlog.Tracef(\"error fetching address of symbol %v\", err)\n\t\t\treturn\n\t\t}\n\t\tsymbolBase := symbolAddress - ni.exportSymbols.VirtualAddress\n\t\tif symbolBase >= n {\n\t\t\tlog.Tracef(\"invalid index to exported symbol: %v\", symbolBase)\n\t\t\treturn\n\t\t}\n\t\tswitch {\n\t\tcase bytes.HasPrefix(ni.exports[symbolBase:], sbomBytes):\n\t\t\tcontent.addressOfSbom = i\n\t\tcase bytes.HasPrefix(ni.exports[symbolBase:], sbomLengthBytes):\n\t\t\tcontent.addressOfSbomLength = i\n\t\tcase bytes.HasPrefix(ni.exports[symbolBase:], svmVersionInfoBytes):\n\t\t\tcontent.addressOfSvmVersion = i\n\t\t}\n\t}\n}\n\n// fetchPkgs obtains the packages from a Native Image given as a PE file.\nfunc (ni nativeImagePE) fetchPkgs() (pkgs []pkg.Package, relationships []artifact.Relationship, retErr error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// this can happen in cases where a malformed binary is passed in can be initially parsed, but not\n\t\t\t// used without error later down the line.\n\t\t\tretErr = fmt.Errorf(\"recovered from panic: %v\", r)\n\t\t}\n\t}()\n\n\tcontent, err := ni.fetchExportContent()\n\tif err != nil {\n\t\tlog.Debugf(\"could not fetch the content of the export directory entry: %v\", err)\n\t\treturn nil, nil, err\n\t}\n\tni.fetchSbomSymbols(content)\n\tif content.addressOfSbom == uint32(0) || content.addressOfSbomLength == uint32(0) || content.addressOfSvmVersion == uint32(0) {\n\t\treturn nil, nil, errors.New(nativeImageMissingSymbolsError)\n\t}\n\tfunctionsBase := content.addressOfFunctions - ni.exportSymbols.VirtualAddress\n\tsbomOffset := content.addressOfSbom\n\tsbomAddress, err := ni.fetchExportFunctionPointer(functionsBase, sbomOffset)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not fetch SBOM pointer from exported functions: %w\", err)\n\t}\n\tsbomLengthOffset := content.addressOfSbomLength\n\tsbomLengthAddress, err := ni.fetchExportFunctionPointer(functionsBase, sbomLengthOffset)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"could not fetch SBOM length pointer from exported functions: %w\", err)\n\t}\n\tbi := ni.file\n\tdataSection := bi.Section(\".data\")\n\tif dataSection == nil {\n\t\treturn nil, nil, nil\n\t}\n\tdataBuf, err := dataSection.Data()\n\tif err != nil {\n\t\tlog.Tracef(\"cannot obtain buffer from the java native-image .data section\")\n\t\treturn nil, nil, nil\n\t}\n\tsbomLocation := sbomAddress - dataSection.VirtualAddress\n\tlengthLocation := sbomLengthAddress - dataSection.VirtualAddress\n\n\treturn decompressSbom(dataBuf, uint64(sbomLocation), uint64(lengthLocation))\n}\n\n// fetchPkgs provides the packages available in a UnionReader.\nfunc fetchPkgs(reader unionreader.UnionReader, location file.Location) ([]pkg.Package, []artifact.Relationship) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\timageFormats := []func(string, io.ReaderAt) (nativeImage, error){newElf, newMachO, newPE}\n\n\t// NOTE: multiple readers are returned to cover universal binaries, which are files\n\t// with more than one binary\n\treaders, err := unionreader.GetReaders(reader)\n\tif err != nil {\n\t\tlog.Debugf(\"failed to open the java native-image binary: %v\", err)\n\t\treturn nil, nil\n\t}\n\tfilename := location.RealPath\n\tfor _, r := range readers {\n\t\tfor _, makeNativeImage := range imageFormats {\n\t\t\tni, err := makeNativeImage(filename, r)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif ni == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnewPkgs, newRelationships, err := ni.fetchPkgs()\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"unable to extract SBOM from possible java native-image %s: %v\", filename, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// Associate extracted packages with the native image location\n\t\t\tfor i := range newPkgs {\n\t\t\t\tnewPkgs[i].Locations.Add(location)\n\t\t\t}\n\t\t\tpkgs = append(pkgs, newPkgs...)\n\t\t\trelationships = append(relationships, newRelationships...)\n\t\t}\n\t}\n\treturn pkgs, relationships\n}\n\n// Catalog attempts to find any native image executables reachable from a resolver.\nfunc (c *nativeImageCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\tfileMatches, err := resolver.FilesByMIMEType(mimetype.ExecutableMIMETypeSet.List()...)\n\tif err != nil {\n\t\treturn pkgs, nil, fmt.Errorf(\"failed to find binaries by mime types: %w\", err)\n\t}\n\n\tfor _, location := range fileMatches {\n\t\tnewPkgs, newRelationships, err := processLocation(location, resolver)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tpkgs = append(pkgs, newPkgs...)\n\t\trelationships = append(relationships, newRelationships...)\n\t}\n\n\treturn pkgs, relationships, nil\n}\n\nfunc processLocation(location file.Location, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\treaderCloser, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\tlog.Debugf(\"error opening file: %v\", err)\n\t\treturn nil, nil, nil\n\t}\n\tdefer internal.CloseAndLogError(readerCloser, location.RealPath)\n\n\treader, err := unionreader.GetUnionReader(readerCloser)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tpkgs, relationships := fetchPkgs(reader, location)\n\treturn pkgs, relationships, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/graalvm_native_image_cataloger_test.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestParseNativeImage(t *testing.T) {\n\ttests := []struct {\n\t\tfixture string\n\t\tnewFn   func(filename string, r io.ReaderAt) (nativeImage, error)\n\t}{\n\t\t{\n\t\t\tfixture: \"example-java-app\",\n\t\t\tnewFn:   newElf,\n\t\t},\n\t\t{\n\t\t\tfixture: \"gcc-amd64-darwin-exec-debug\",\n\t\t\tnewFn:   newMachO,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tf, err := os.Open(\"testdata/java-builds/packages/\" + test.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\treaderCloser := io.NopCloser(f)\n\t\t\treader, err := unionreader.GetUnionReader(readerCloser)\n\t\t\trequire.NoError(t, err)\n\t\t\tparsed := false\n\t\t\treaders, err := unionreader.GetReaders(reader)\n\t\t\trequire.NoError(t, err)\n\t\t\tfor _, r := range readers {\n\t\t\t\tni, err := test.newFn(test.fixture, r)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\t_, _, err = ni.fetchPkgs()\n\t\t\t\tif err == nil {\n\t\t\t\t\tt.Fatalf(\"should have failed to extract SBOM.\")\n\t\t\t\t}\n\t\t\t\t// If we can enumerate the symbols in the binary, we can parse the binary.\n\t\t\t\tif err.Error() == nativeImageMissingSymbolsError {\n\t\t\t\t\tparsed = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !parsed {\n\t\t\t\tt.Fatalf(\"Could not parse the Native Image executable: %v\", test.fixture)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseNativeImageSbom(t *testing.T) {\n\tconst (\n\t\tnettyPurl     = \"pkg:maven/io.netty/netty-codec-http2@4.1.104.Final\"\n\t\tmicronautPurl = \"pkg:maven/io.micronaut/core@4.2.3\"\n\t\tmainAppPurl   = \"pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT\"\n\t)\n\n\tmainAppPkg := makePackage(\"main-test-app\", \"1.0-SNAPSHOT\", mainAppPurl, []cpe.CPE{\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"app\",\n\t\t\t\tProduct: \"main-test-app\",\n\t\t\t\tVersion: \"1.0-SNAPSHOT\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t})\n\n\tnettyPkg := makePackage(\"netty-codec-http2\", \"4.1.73.Final\", nettyPurl, []cpe.CPE{\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"codec\",\n\t\t\t\tProduct: \"codec\",\n\t\t\t\tVersion: \"4.1.73.Final\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"codec\",\n\t\t\t\tProduct: \"netty-codec-http2\",\n\t\t\t\tVersion: \"4.1.73.Final\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"codec\",\n\t\t\t\tProduct: \"netty_codec_http2\",\n\t\t\t\tVersion: \"4.1.73.Final\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t})\n\n\tmicronautPkg := makePackage(\"core\", \"4.2.3\", micronautPurl, []cpe.CPE{\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"core\",\n\t\t\t\tProduct: \"core\",\n\t\t\t\tVersion: \"4.2.3\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t\t{\n\t\t\tAttributes: cpe.Attributes{\n\t\t\t\tPart:    \"a\",\n\t\t\t\tVendor:  \"micronaut\",\n\t\t\t\tProduct: \"core\",\n\t\t\t\tVersion: \"4.2.3\",\n\t\t\t},\n\t\t\tSource: \"declared\",\n\t\t},\n\t})\n\n\tbasicPkg := makePackage(\"basic-lib\", \"1.0\", \"\", nil)\n\n\ttests := []struct {\n\t\tfixture           string\n\t\texpectedPackages  []pkg.Package\n\t\texpectedRelations []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tfixture:          \"testdata/graalvm-sbom/micronaut.json\",\n\t\t\texpectedPackages: []pkg.Package{nettyPkg, micronautPkg, basicPkg, mainAppPkg},\n\t\t\texpectedRelations: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: nettyPkg,\n\t\t\t\t\tTo:   micronautPkg,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(path.Base(test.fixture), func(t *testing.T) {\n\t\t\tcompressed, length := createCompressedSbom(t, test.fixture)\n\t\t\tactualPkgs, actualRels, err := decompressSbom(compressed, 0, length)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\n\t\t\tverifyPackages(t, test.expectedPackages, actualPkgs)\n\t\t\tverifyRelationships(t, test.expectedRelations, actualRels)\n\t\t})\n\t}\n}\n\n// makePackage makes a package using the data that we know must be in the parsed package\nfunc makePackage(name, version, purl string, cpes []cpe.CPE) pkg.Package {\n\tp := pkg.Package{\n\t\tName:    name,\n\t\tVersion: version,\n\t\tCPEs:    cpes,\n\t\tPURL:    purl,\n\t}\n\treturn p\n}\n\n// createCompressedSbom creates a compressed a buffer to resemble a compressed SBOM in a native image.\nfunc createCompressedSbom(t *testing.T, filename string) ([]byte, uint64) {\n\tsbom, err := os.ReadFile(filename)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar b bytes.Buffer\n\tw := bufio.NewWriter(&b)\n\tz := gzip.NewWriter(w)\n\n\tif _, err := z.Write(sbom); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tz.Close()\n\tw.Flush()\n\n\tcompressedSbom := b.Bytes()\n\tsbomLength := uint64(len(compressedSbom))\n\n\tif err := binary.Write(w, binary.LittleEndian, sbomLength); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tw.Flush()\n\n\treturn b.Bytes(), sbomLength\n}\n\nfunc verifyPackages(t *testing.T, expected, actual []pkg.Package) {\n\texpectedPkgMap := buildPackageMap(expected)\n\tactualPkgMap := buildPackageMap(actual)\n\n\tfor name, expectedPkg := range expectedPkgMap {\n\t\tactualPkg, exists := actualPkgMap[name]\n\t\tif !exists {\n\t\t\tt.Errorf(\"Expected package %s not found in actual packages\", name)\n\t\t\tcontinue\n\t\t}\n\t\tverifyPackageFields(t, expectedPkg, actualPkg)\n\t}\n}\n\nfunc buildPackageMap(packages []pkg.Package) map[string]pkg.Package {\n\tpkgMap := make(map[string]pkg.Package)\n\tfor _, p := range packages {\n\t\tpkgMap[p.Name] = p\n\t}\n\treturn pkgMap\n}\n\nfunc verifyPackageFields(t *testing.T, expected, actual pkg.Package) {\n\trequire.Equal(t, expected.Name, actual.Name)\n\trequire.Equal(t, expected.Version, actual.Version)\n\trequire.Equal(t, expected.FoundBy, actual.FoundBy)\n\trequire.Equal(t, expected.PURL, actual.PURL)\n\trequire.ElementsMatch(t, expected.CPEs, actual.CPEs)\n}\n\nfunc verifyRelationships(t *testing.T, expected, actual []artifact.Relationship) {\n\texpectedRelMap := buildRelationshipMap(expected)\n\tactualRelMap := buildRelationshipMap(actual)\n\n\tfor key, expectedRels := range expectedRelMap {\n\t\tactualRels, exists := actualRelMap[key]\n\t\tif !exists {\n\t\t\tt.Errorf(\"Expected relationship %s not found in actual relationships\", key)\n\t\t\tcontinue\n\t\t}\n\t\tverifyRelationshipFields(t, expectedRels, actualRels)\n\t}\n}\n\nfunc buildRelationshipMap(relationships []artifact.Relationship) map[string][]artifact.Relationship {\n\trelMap := make(map[string][]artifact.Relationship)\n\tfor _, rel := range relationships {\n\t\t// we cannot control the id, so use the names instead\n\t\tkey := fmt.Sprintf(\"%s->%s\", rel.From.(pkg.Package).Name, rel.To.(pkg.Package).Name)\n\t\trelMap[key] = append(relMap[key], rel)\n\t}\n\treturn relMap\n}\n\nfunc verifyRelationshipFields(t *testing.T, expected, actual []artifact.Relationship) {\n\trequire.Equal(t, len(expected), len(actual))\n\tfor i := range expected {\n\t\trequire.Equal(t, expected[i].Type, actual[i].Type)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/config.go",
    "content": "package maven\n\nimport (\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst mavenBaseURL = \"https://repo1.maven.org/maven2\"\n\ntype Config struct {\n\t// UseNetwork instructs the maven resolver to use network operations to resolve maven artifacts\n\tUseNetwork bool `yaml:\"use-network\" json:\"use-network\" mapstructure:\"use-network\"`\n\n\t// Repositories are the set of remote repositories the network resolution should use\n\tRepositories []string `yaml:\"maven-repositories\" json:\"maven-repositories\" mapstructure:\"maven-repositories\"`\n\n\t// UseLocalRepository instructs the maven resolver to look in the host maven cache, usually ~/.m2/repository\n\tUseLocalRepository bool `yaml:\"use-maven-local-repository\" json:\"use-maven-local-repository\" mapstructure:\"use-maven-local-repository\"`\n\n\t// LocalRepositoryDir is an alternate directory to use to look up the local repository\n\tLocalRepositoryDir string `yaml:\"maven-local-repository-dir\" json:\"maven-local-repository-dir\" mapstructure:\"maven-local-repository-dir\"`\n\n\t// MaxParentRecursiveDepth allows for a maximum depth to use when recursively resolving parent poms and other information, 0 disables any maximum\n\tMaxParentRecursiveDepth int `yaml:\"max-parent-recursive-depth\" json:\"max-parent-recursive-depth\" mapstructure:\"max-parent-recursive-depth\"`\n}\n\nfunc DefaultConfig() Config {\n\treturn Config{\n\t\tUseNetwork:              false,\n\t\tRepositories:            []string{mavenBaseURL},\n\t\tUseLocalRepository:      false,\n\t\tLocalRepositoryDir:      defaultMavenLocalRepoDir(),\n\t\tMaxParentRecursiveDepth: 0, // unlimited\n\t}\n}\n\n// defaultMavenLocalRepoDir gets default location of the Maven local repository, generally at <USER HOME DIR>/.m2/repository\nfunc defaultMavenLocalRepoDir() string {\n\thomeDir, err := homedir.Dir()\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\n\tmavenHome := filepath.Join(homeDir, \".m2\")\n\n\tsettingsXML := filepath.Join(mavenHome, \"settings.xml\")\n\tsettings, err := os.Open(settingsXML)\n\tif err == nil && settings != nil {\n\t\tdefer internal.CloseAndLogError(settings, settingsXML)\n\t\tlocalRepository := getSettingsXMLLocalRepository(settings)\n\t\tif localRepository != \"\" {\n\t\t\treturn localRepository\n\t\t}\n\t}\n\treturn filepath.Join(mavenHome, \"repository\")\n}\n\n// getSettingsXMLLocalRepository reads the provided settings.xml and parses the localRepository, if present\nfunc getSettingsXMLLocalRepository(settingsXML io.Reader) string {\n\ttype settings struct {\n\t\tLocalRepository string `xml:\"localRepository\"`\n\t}\n\ts := settings{}\n\terr := xml.NewDecoder(settingsXML).Decode(&s)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Debug(\"unable to read maven settings.xml\")\n\t}\n\treturn s.LocalRepository\n}\n\n// remotePomURL returns a URL to download a POM from a remote repository\nfunc remotePomURL(repoURL, groupID, artifactID, version string) (requestURL string, err error) {\n\t// groupID needs to go from maven.org -> maven/org\n\turlPath := strings.Split(groupID, \".\")\n\tartifactPom := fmt.Sprintf(\"%s-%s.pom\", artifactID, version)\n\turlPath = append(urlPath, artifactID, version, artifactPom)\n\n\t// ex: https://repo1.maven.org/maven2/groupID/artifactID/artifactPom\n\trequestURL, err = url.JoinPath(repoURL, urlPath...)\n\tif err != nil {\n\t\treturn requestURL, fmt.Errorf(\"could not construct maven url: %w\", err)\n\t}\n\treturn requestURL, err\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/config_test.go",
    "content": "package maven\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/internal\"\n)\n\nfunc Test_defaultMavenLocalRepoDir(t *testing.T) {\n\thome, err := homedir.Dir()\n\trequire.NoError(t, err)\n\n\tfixtures, err := filepath.Abs(\"testdata\")\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname     string\n\t\thome     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"default\",\n\t\t\texpected: filepath.Join(home, \".m2\", \"repository\"),\n\t\t\thome:     \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"alternate dir\",\n\t\t\texpected: \"/some/other/repo\",\n\t\t\thome:     \"testdata/local-repository-settings\",\n\t\t},\n\t\t{\n\t\t\tname:     \"explicit home\",\n\t\t\texpected: filepath.Join(fixtures, \".m2\", \"repository\"),\n\t\t\thome:     \"testdata\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\thomedir.Reset()\n\t\t\tdefer homedir.Reset()\n\t\t\tif test.home != \"\" {\n\t\t\t\thome, err := filepath.Abs(test.home)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tt.Setenv(\"HOME\", home)\n\t\t\t}\n\t\t\tgot := defaultMavenLocalRepoDir()\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_getSettingsXmlLocalRepository(t *testing.T) {\n\ttests := []struct {\n\t\tfile     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\texpected: \"/some/other/repo\",\n\t\t\tfile:     \"testdata/local-repository-settings/.m2/settings.xml\",\n\t\t},\n\t\t{\n\t\t\texpected: \"\",\n\t\t\tfile:     \"invalid\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.expected, func(t *testing.T) {\n\t\t\tf, _ := os.Open(test.file)\n\t\t\tdefer internal.CloseAndLogError(f, test.file)\n\t\t\tgot := getSettingsXMLLocalRepository(f)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_remotePomURL(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tgroupID    string\n\t\tartifactID string\n\t\tversion    string\n\t\texpected   string\n\t}{\n\t\t{\n\t\t\tname:       \"remotePomURL correctly assembles the pom URL\",\n\t\t\tgroupID:    \"org.springframework.boot\",\n\t\t\tartifactID: \"spring-boot-starter-test\",\n\t\t\tversion:    \"3.1.5\",\n\t\t\texpected:   \"https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-test/3.1.5/spring-boot-starter-test-3.1.5.pom\",\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\trequestURL, err := remotePomURL(mavenBaseURL, tc.groupID, tc.artifactID, tc.version)\n\t\t\trequire.NoError(t, err, \"expected no err; got %w\", err)\n\t\t\trequire.Equal(t, tc.expected, requestURL)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/pom_parser.go",
    "content": "package maven\n\nimport (\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/saintfish/chardet\"\n\t\"github.com/vifraa/gopom\"\n\t\"golang.org/x/net/html/charset\"\n)\n\ntype (\n\tProject    = gopom.Project\n\tProperties = gopom.Properties\n\tParent     = gopom.Parent\n\tDependency = gopom.Dependency\n\tLicense    = gopom.License\n)\n\n// ParsePomXML decodes a pom XML file, detecting and converting non-UTF-8 charsets. this DOES NOT perform any logic to resolve properties such as groupID, artifactID, and version\nfunc ParsePomXML(content io.Reader) (project *Project, err error) {\n\tinputReader, err := getUtf8Reader(content)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read pom.xml: %w\", err)\n\t}\n\n\tdecoder := xml.NewDecoder(inputReader)\n\t// when an xml file has a character set declaration (e.g. '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>') read that and use the correct decoder\n\tdecoder.CharsetReader = charset.NewReaderLabel\n\n\tproject = &Project{}\n\tif err := decoder.Decode(project); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to unmarshal pom.xml: %w\", err)\n\t}\n\n\treturn project, nil\n}\n\nfunc getUtf8Reader(content io.Reader) (io.Reader, error) {\n\tpomContents, err := io.ReadAll(content) //nolint:gocritic // charset detection requires full buffer\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdetector := chardet.NewTextDetector()\n\tdetection, err := detector.DetectBest(pomContents)\n\n\tvar inputReader io.Reader\n\tif err == nil && detection != nil {\n\t\tif detection.Charset == \"UTF-8\" {\n\t\t\tinputReader = bytes.NewReader(pomContents)\n\t\t} else {\n\t\t\tinputReader, err = charset.NewReaderLabel(detection.Charset, bytes.NewReader(pomContents))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"unable to get encoding: %w\", err)\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// we could not detect the encoding, but we want a valid file to read. Replace unreadable\n\t\t// characters with the UTF-8 replacement character.\n\t\tinputReader = strings.NewReader(strings.ToValidUTF8(string(pomContents), \"�\"))\n\t}\n\treturn inputReader, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/pom_parser_test.go",
    "content": "package maven\n\nimport (\n\t\"encoding/base64\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\nfunc Test_getUtf8Reader(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tcontents string\n\t}{\n\t\t{\n\t\t\tname: \"unknown encoding\",\n\t\t\t// random binary contents\n\t\t\tcontents: \"BkiJz02JyEWE0nXR6TH///9NicpJweEETIucJIgAAABJicxPjQwhTY1JCE05WQh0BU2J0eunTYshTIusJIAAAAAPHwBNOeV1BUUx2+tWTIlUJDhMiUwkSEyJRCQgSIl8JFBMiQ==\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tdecoder := base64.NewDecoder(base64.StdEncoding, strings.NewReader(tt.contents))\n\n\t\t\tgot, err := getUtf8Reader(decoder)\n\t\t\trequire.NoError(t, err)\n\t\t\tgotBytes, err := io.ReadAll(got)\n\t\t\trequire.NoError(t, err)\n\t\t\t// if we couldn't decode the section as UTF-8, we should get a replacement character\n\t\t\tassert.Contains(t, string(gotBytes), \"�\")\n\t\t})\n\t}\n}\n\nfunc Test_decodePomXML_surviveNonUtf8Encoding(t *testing.T) {\n\t// regression for https://github.com/anchore/syft/issues/2044\n\n\t// we are storing the base64 contents of the pom.xml file. We are doing this to prevent accidental changes to the\n\t// file, which is extremely important for this test.\n\n\t// for instance, even changing a single character in the file and saving in an IntelliJ IDE will automatically\n\t// convert the file to UTF-8, which will break this test:\n\n\t// xxd with the original pom.xml\n\t// 00000780: 6964 3e0d 0a20 2020 2020 2020 2020 2020  id>..\n\t// 00000790: 203c 6e61 6d65 3e4a e972 f46d 6520 4d69   <name>J.r.me Mi\n\t// 000007a0: 7263 3c2f 6e61 6d65 3e0d 0a20 2020 2020  rc</name>..\n\n\t// xxd with the pom.xml converted to UTF-8 (from a simple change with IntelliJ)\n\t// 00000780: 6964 3e0d 0a20 2020 2020 2020 2020 2020  id>..\n\t// 00000790: 203c 6e61 6d65 3e4a efbf bd72 efbf bd6d   <name>J...r...m\n\t// 000007a0: 6520 4d69 7263 3c2f 6e61 6d65 3e0d 0a20  e Mirc</name>..\n\n\t// Note that the name \"Jérôme Mirc\" was originally interpreted as \"J.r.me Mi\" and after the save\n\t// is now encoded as \"J...r...m\" which is not what we want (note the extra bytes for each non UTF-8 character.\n\t// The original 0xe9 byte (é) was converted to 0xefbfbd (�) which is the UTF-8 replacement character.\n\t// This is quite silly on the part of IntelliJ, but it is what it is.\n\n\tcases := []struct {\n\t\tname    string\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tname:    \"undeclared encoding\",\n\t\t\tfixture: \"testdata/undeclared-iso-8859-encoded-pom.xml.base64\",\n\t\t},\n\t\t{\n\t\t\tname:    \"declared encoding\",\n\t\t\tfixture: \"testdata/declared-iso-8859-encoded-pom.xml.base64\",\n\t\t},\n\t}\n\n\tfor _, c := range cases {\n\t\tt.Run(c.name, func(t *testing.T) {\n\t\t\tfh, err := os.Open(c.fixture)\n\t\t\trequire.NoError(t, err)\n\t\t\tdefer internal.CloseAndLogError(fh, c.fixture)\n\n\t\t\tdecoder := base64.NewDecoder(base64.StdEncoding, fh)\n\n\t\t\tproj, err := ParsePomXML(decoder)\n\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotEmpty(t, proj.Developers)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/resolver.go",
    "content": "package maven\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/vifraa/gopom\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/cache\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// ID is the unique identifier for a package in Maven\ntype ID struct {\n\tGroupID    string\n\tArtifactID string\n\tVersion    string\n}\n\nfunc NewID(groupID, artifactID, version string) ID {\n\treturn ID{\n\t\tGroupID:    groupID,\n\t\tArtifactID: artifactID,\n\t\tVersion:    version,\n\t}\n}\n\nfunc (m ID) String() string {\n\treturn fmt.Sprintf(\"(groupId: %s artifactId: %s version: %s)\", m.GroupID, m.ArtifactID, m.Version)\n}\n\n// Valid indicates that the given maven ID has values for groupId, artifactId, and version\nfunc (m ID) Valid() bool {\n\treturn m.GroupID != \"\" && m.ArtifactID != \"\" && m.Version != \"\"\n}\n\nvar expressionMatcher = regexp.MustCompile(\"[$][{][^}]+[}]\")\n\n// Resolver is a short-lived utility to resolve maven poms from multiple sources, including:\n// the scanned filesystem, local maven cache directories, remote maven repositories, and the syft cache\ntype Resolver struct {\n\tcfg                  Config\n\tcache                cache.Cache\n\tresolved             map[ID]*Project\n\tremoteRequestTimeout time.Duration\n\tcheckedLocalRepo     bool\n\t// fileResolver and pomLocations are used to resolve parent poms by relativePath\n\tfileResolver file.Resolver\n\tpomLocations map[*Project]file.Location\n}\n\n// NewResolver constructs a new Resolver with the given configuration.\n// NOTE: the fileResolver is optional and if provided will be used to resolve parent poms by relative path\nfunc NewResolver(fileResolver file.Resolver, cfg Config) *Resolver {\n\treturn &Resolver{\n\t\tcfg:                  cfg,\n\t\tcache:                cache.GetManager().GetCache(\"java/maven/repo\", \"v1\"),\n\t\tresolved:             map[ID]*Project{},\n\t\tremoteRequestTimeout: time.Second * 10,\n\t\tfileResolver:         fileResolver,\n\t\tpomLocations:         map[*Project]file.Location{},\n\t}\n}\n\n// ResolveProperty gets property values by emulating maven property resolution logic, looking in the project's variables\n// as well as supporting the project expressions like ${project.parent.groupId}.\n// Properties which are not resolved result in empty string \"\"\nfunc (r *Resolver) ResolveProperty(ctx context.Context, pom *Project, propertyValue *string) string {\n\treturn r.resolvePropertyValue(ctx, propertyValue, nil, pom)\n}\n\n// resolvePropertyValue resolves property values by emulating maven property resolution logic, looking in the project's variables\n// as well as supporting the project expressions like ${project.parent.groupId}.\n// Properties which are not resolved result in empty string \"\"\nfunc (r *Resolver) resolvePropertyValue(ctx context.Context, propertyValue *string, resolvingProperties []string, resolutionContext ...*Project) string {\n\tif propertyValue == nil {\n\t\treturn \"\"\n\t}\n\tresolved, err := r.resolveExpression(ctx, resolutionContext, *propertyValue, resolvingProperties)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"propertyValue\", *propertyValue).Trace(\"error resolving maven property\")\n\t\treturn \"\"\n\t}\n\treturn resolved\n}\n\n// resolveExpression resolves an expression, which may be a plain string or a string with ${ property.references }\nfunc (r *Resolver) resolveExpression(ctx context.Context, resolutionContext []*Project, expression string, resolvingProperties []string) (string, error) {\n\tlog.Tracef(\"resolving expression: '%v' in context: %v\", expression, resolutionContext)\n\n\tvar errs error\n\treturn expressionMatcher.ReplaceAllStringFunc(expression, func(match string) string {\n\t\tlog.Tracef(\"resolving property: '%v' in context: %v\", expression, resolutionContext)\n\t\tpropertyExpression := strings.TrimSpace(match[2 : len(match)-1]) // remove leading ${ and trailing }\n\t\tresolved, err := r.resolveProperty(ctx, resolutionContext, propertyExpression, resolvingProperties)\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t\treturn \"\"\n\t\t}\n\t\treturn resolved\n\t}), errs\n}\n\n// resolveProperty resolves properties recursively from the root project\nfunc (r *Resolver) resolveProperty(ctx context.Context, resolutionContext []*Project, propertyExpression string, resolvingProperties []string) (string, error) {\n\t// prevent cycles\n\tif slices.Contains(resolvingProperties, propertyExpression) {\n\t\treturn \"\", fmt.Errorf(\"cycle detected resolving: %s\", propertyExpression)\n\t}\n\tif len(resolutionContext) == 0 {\n\t\treturn \"\", fmt.Errorf(\"no project variable resolution context provided for expression: '%s'\", propertyExpression)\n\t}\n\tresolvingProperties = append(resolvingProperties, propertyExpression)\n\n\t// only resolve project. properties in the context of the current project pom\n\tvalue, err := r.resolveProjectProperty(ctx, resolutionContext, resolutionContext[len(resolutionContext)-1], propertyExpression, resolvingProperties)\n\tif err != nil {\n\t\treturn value, err\n\t}\n\tif value != \"\" {\n\t\treturn value, nil\n\t}\n\n\tvar resolvingParents []*Project\n\tfor _, pom := range resolutionContext {\n\t\tcurrent := pom\n\t\tfor parentDepth := 0; current != nil; parentDepth++ {\n\t\t\tif slices.Contains(resolvingParents, current) {\n\t\t\t\tlog.WithFields(\"property\", propertyExpression, \"mavenID\", r.resolveID(ctx, resolvingProperties, resolvingParents...)).Error(\"got circular reference while resolving property\")\n\t\t\t\tbreak // some sort of circular reference -- we've already seen this project\n\t\t\t}\n\t\t\tif r.cfg.MaxParentRecursiveDepth > 0 && parentDepth > r.cfg.MaxParentRecursiveDepth {\n\t\t\t\treturn \"\", fmt.Errorf(\"maximum parent recursive depth (%v) reached resolving property: %v\", r.cfg.MaxParentRecursiveDepth, propertyExpression)\n\t\t\t}\n\t\t\tif current.Properties != nil && current.Properties.Entries != nil {\n\t\t\t\tif value, ok := current.Properties.Entries[propertyExpression]; ok {\n\t\t\t\t\treturn r.resolveExpression(ctx, resolutionContext, value, resolvingProperties) // property values can contain expressions\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolvingParents = append(resolvingParents, current)\n\t\t\tcurrent, err = r.resolveParent(ctx, current, resolvingProperties...)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\", fmt.Errorf(\"unable to resolve property: %s\", propertyExpression)\n}\n\n// resolveProjectProperty resolves properties on the project\n//\n//nolint:gocognit\nfunc (r *Resolver) resolveProjectProperty(ctx context.Context, resolutionContext []*Project, pom *Project, propertyExpression string, resolving []string) (string, error) {\n\t// see if we have a project.x expression and process this based\n\t// on the xml tags in gopom\n\tparts := strings.Split(propertyExpression, \".\")\n\tnumParts := len(parts)\n\tif numParts > 1 && strings.TrimSpace(parts[0]) == \"project\" {\n\t\tpomValue := reflect.ValueOf(pom).Elem()\n\t\tpomValueType := pomValue.Type()\n\t\tfor partNum := 1; partNum < numParts; partNum++ {\n\t\t\tif pomValueType.Kind() != reflect.Struct {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tpart := parts[partNum]\n\t\t\t// these two fields are directly inherited from the pom parent values\n\t\t\tif partNum == 1 && pom.Parent != nil {\n\t\t\t\tswitch part {\n\t\t\t\tcase \"version\":\n\t\t\t\t\tif pom.Version == nil && pom.Parent.Version != nil {\n\t\t\t\t\t\treturn r.resolveExpression(ctx, resolutionContext, *pom.Parent.Version, resolving)\n\t\t\t\t\t}\n\t\t\t\tcase \"groupID\":\n\t\t\t\t\tif pom.GroupID == nil && pom.Parent.GroupID != nil {\n\t\t\t\t\t\treturn r.resolveExpression(ctx, resolutionContext, *pom.Parent.GroupID, resolving)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor fieldNum := 0; fieldNum < pomValueType.NumField(); fieldNum++ {\n\t\t\t\tf := pomValueType.Field(fieldNum)\n\t\t\t\ttag := f.Tag.Get(\"xml\")\n\t\t\t\ttag = strings.Split(tag, \",\")[0]\n\t\t\t\t// a segment of the property name matches the xml tag for the field,\n\t\t\t\t// so we need to recurse down the nested structs or return a match\n\t\t\t\t// if we're done.\n\t\t\t\tif part != tag {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tpomValue = pomValue.Field(fieldNum)\n\t\t\t\tpomValueType = pomValue.Type()\n\t\t\t\tif pomValueType.Kind() == reflect.Ptr {\n\t\t\t\t\t// we were recursing down the nested structs, but one of the steps\n\t\t\t\t\t// we need to take is a nil pointer, so give up\n\t\t\t\t\tif pomValue.IsNil() {\n\t\t\t\t\t\treturn \"\", fmt.Errorf(\"property undefined: %s\", propertyExpression)\n\t\t\t\t\t}\n\t\t\t\t\tpomValue = pomValue.Elem()\n\t\t\t\t\tif !pomValue.IsZero() {\n\t\t\t\t\t\t// we found a non-zero value whose tag matches this part of the property name\n\t\t\t\t\t\tpomValueType = pomValue.Type()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If this was the last part of the property name, return the value\n\t\t\t\tif partNum == numParts-1 {\n\t\t\t\t\tvalue := fmt.Sprintf(\"%v\", pomValue.Interface())\n\t\t\t\t\treturn r.resolveExpression(ctx, resolutionContext, value, resolving)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", nil\n}\n\n// ResolveParent resolves the parent definition, and returns a POM for the parent, which is possibly incomplete, or nil\nfunc (r *Resolver) ResolveParent(ctx context.Context, pom *Project) (*Project, error) {\n\tif pom == nil || pom.Parent == nil {\n\t\treturn nil, nil\n\t}\n\n\tparent, err := r.resolveParent(ctx, pom)\n\tif parent != nil {\n\t\treturn parent, err\n\t}\n\n\tgroupID := r.ResolveProperty(ctx, pom, pom.Parent.GroupID)\n\tif groupID == \"\" {\n\t\tgroupID = r.ResolveProperty(ctx, pom, pom.GroupID)\n\t}\n\tartifactID := r.ResolveProperty(ctx, pom, pom.Parent.ArtifactID)\n\tversion := r.ResolveProperty(ctx, pom, pom.Parent.Version)\n\n\tif artifactID != \"\" && version != \"\" {\n\t\treturn &Project{\n\t\t\tGroupID:    &groupID,\n\t\t\tArtifactID: &artifactID,\n\t\t\tVersion:    &version,\n\t\t}, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"unsufficient information to create a parent pom project, id: %s\", NewID(groupID, artifactID, version))\n}\n\n// ResolveID creates an ID from a pom, resolving parent information as necessary\nfunc (r *Resolver) ResolveID(ctx context.Context, pom *Project) ID {\n\treturn r.resolveID(ctx, nil, pom)\n}\n\n// resolveID creates a new ID from a pom, resolving parent information as necessary\nfunc (r *Resolver) resolveID(ctx context.Context, resolvingProperties []string, resolutionContext ...*Project) ID {\n\tif len(resolutionContext) == 0 || resolutionContext[0] == nil {\n\t\treturn ID{}\n\t}\n\tpom := resolutionContext[len(resolutionContext)-1] // get topmost pom\n\tif pom == nil {\n\t\treturn ID{}\n\t}\n\n\tgroupID := r.resolvePropertyValue(ctx, pom.GroupID, resolvingProperties, resolutionContext...)\n\tartifactID := r.resolvePropertyValue(ctx, pom.ArtifactID, resolvingProperties, resolutionContext...)\n\tversion := r.resolvePropertyValue(ctx, pom.Version, resolvingProperties, resolutionContext...)\n\tif pom.Parent != nil {\n\t\t// groupId and version are able to be inherited from the parent, but importantly: not artifactId. see:\n\t\t// https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#the-solution\n\t\tif groupID == \"\" && deref(pom.GroupID) == \"\" {\n\t\t\tgroupID = r.resolvePropertyValue(ctx, pom.Parent.GroupID, resolvingProperties, resolutionContext...)\n\t\t}\n\t\tif version == \"\" && deref(pom.Version) == \"\" {\n\t\t\tversion = r.resolvePropertyValue(ctx, pom.Parent.Version, resolvingProperties, resolutionContext...)\n\t\t}\n\t}\n\treturn ID{groupID, artifactID, version}\n}\n\n// ResolveDependencyID creates an ID from a dependency element in a pom, resolving information as necessary\nfunc (r *Resolver) ResolveDependencyID(ctx context.Context, pom *Project, dep Dependency) ID {\n\tif pom == nil {\n\t\treturn ID{}\n\t}\n\n\tgroupID := r.resolvePropertyValue(ctx, dep.GroupID, nil, pom)\n\tartifactID := r.resolvePropertyValue(ctx, dep.ArtifactID, nil, pom)\n\tversion := r.resolvePropertyValue(ctx, dep.Version, nil, pom)\n\n\tvar err error\n\tif version == \"\" {\n\t\tversion, err = r.resolveInheritedVersion(ctx, pom, groupID, artifactID)\n\t}\n\n\tdepID := ID{groupID, artifactID, version}\n\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"ID\", r.ResolveID(ctx, pom), \"dependencyID\", depID)\n\t}\n\n\treturn depID\n}\n\n// FindPom gets a pom from cache, local repository, or from a remote Maven repository depending on configuration\nfunc (r *Resolver) FindPom(ctx context.Context, groupID, artifactID, version string) (*Project, error) {\n\tif groupID == \"\" || artifactID == \"\" || version == \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid maven pom specification, require non-empty values for groupID: '%s', artifactID: '%s', version: '%s'\", groupID, artifactID, version)\n\t}\n\n\tid := ID{groupID, artifactID, version}\n\texistingPom := r.resolved[id]\n\n\tif existingPom != nil {\n\t\treturn existingPom, nil\n\t}\n\n\tvar errs error\n\n\t// try to resolve first from local maven repo\n\tif r.cfg.UseLocalRepository {\n\t\tpom, err := r.findPomInLocalRepository(groupID, artifactID, version)\n\t\tif pom != nil {\n\t\t\tr.resolved[id] = pom\n\t\t\treturn pom, nil\n\t\t}\n\t\terrs = errors.Join(errs, err)\n\t}\n\n\t// resolve via network maven repository\n\tif r.cfg.UseNetwork {\n\t\tpom, err := r.findPomInRemotes(ctx, groupID, artifactID, version)\n\t\tif pom != nil {\n\t\t\tr.resolved[id] = pom\n\t\t\treturn pom, nil\n\t\t}\n\t\terrs = errors.Join(errs, err)\n\t}\n\n\treturn nil, fmt.Errorf(\"unable to resolve pom %s %s %s: %w\", groupID, artifactID, version, errs)\n}\n\n// findPomInLocalRepository attempts to get the POM from the users local maven repository\nfunc (r *Resolver) findPomInLocalRepository(groupID, artifactID, version string) (*Project, error) {\n\tgroupPath := filepath.Join(strings.Split(groupID, \".\")...)\n\tpomFilePath := filepath.Join(r.cfg.LocalRepositoryDir, groupPath, artifactID, version, artifactID+\"-\"+version+\".pom\")\n\tpomFile, err := os.Open(pomFilePath)\n\tif err != nil {\n\t\tif !r.checkedLocalRepo && errors.Is(err, os.ErrNotExist) {\n\t\t\tr.checkedLocalRepo = true\n\t\t\t// check if the directory exists at all, and if not just stop trying to resolve local maven files\n\t\t\tfi, err := os.Stat(r.cfg.LocalRepositoryDir)\n\t\t\tif errors.Is(err, os.ErrNotExist) || !fi.IsDir() {\n\t\t\t\tlog.WithFields(\"error\", err, \"repositoryDir\", r.cfg.LocalRepositoryDir).\n\t\t\t\t\tInfo(\"local maven repository is not a readable directory, stopping local resolution\")\n\t\t\t\tr.cfg.UseLocalRepository = false\n\t\t\t}\n\t\t}\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(pomFile, pomFilePath)\n\n\treturn ParsePomXML(pomFile)\n}\n\n// findPomInRemotes download the pom file from all configured Maven repositories over HTTP\nfunc (r *Resolver) findPomInRemotes(ctx context.Context, groupID, artifactID, version string) (*Project, error) {\n\tvar errs error\n\tfor _, repo := range r.cfg.Repositories {\n\t\tpom, err := r.findPomInRemoteRepository(ctx, repo, groupID, artifactID, version)\n\t\tif err != nil {\n\t\t\terrs = errors.Join(errs, err)\n\t\t}\n\t\tif pom != nil {\n\t\t\treturn pom, err\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"pom for %v not found in any remote repository: %w\", ID{groupID, artifactID, version}, errs)\n}\n\n// findPomInRemoteRepository download the pom file from a (remote) Maven repository over HTTP\nfunc (r *Resolver) findPomInRemoteRepository(ctx context.Context, repo string, groupID, artifactID, version string) (*Project, error) {\n\tif groupID == \"\" || artifactID == \"\" || version == \"\" {\n\t\treturn nil, fmt.Errorf(\"missing/incomplete maven artifact coordinates -- groupId: '%s' artifactId: '%s', version: '%s'\", groupID, artifactID, version)\n\t}\n\n\trequestURL, err := remotePomURL(repo, groupID, artifactID, version)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to find pom in remote due to: %w\", err)\n\t}\n\n\t// Downloading snapshots requires additional steps to determine the latest snapshot version.\n\t// See: https://maven.apache.org/ref/3-LATEST/maven-repository-metadata/\n\tif strings.HasSuffix(version, \"-SNAPSHOT\") {\n\t\treturn nil, fmt.Errorf(\"downloading snapshot artifacts is not supported, got: %s\", requestURL)\n\t}\n\n\tcacheKey := strings.TrimPrefix(strings.TrimPrefix(requestURL, \"http://\"), \"https://\")\n\treader, err := r.cacheResolveReader(cacheKey, func() (io.ReadCloser, error) {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tlog.WithFields(\"url\", requestURL).Info(\"fetching parent pom from remote maven repository\")\n\n\t\treq, err := http.NewRequest(http.MethodGet, requestURL, nil)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to create request for Maven central: %w\", err)\n\t\t}\n\n\t\treq = req.WithContext(ctx)\n\n\t\tclient := http.Client{\n\t\t\tTimeout: r.remoteRequestTimeout,\n\t\t}\n\n\t\tresp, err := client.Do(req)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to get pom from Maven repository %v: %w\", requestURL, err)\n\t\t}\n\t\tif resp.StatusCode == http.StatusNotFound {\n\t\t\treturn nil, fmt.Errorf(\"pom not found in Maven repository at: %v\", requestURL)\n\t\t}\n\t\treturn resp.Body, err\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif reader, ok := reader.(io.Closer); ok {\n\t\tdefer internal.CloseAndLogError(reader, requestURL)\n\t}\n\tpom, err := ParsePomXML(reader)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse pom from Maven repository url %v: %w\", requestURL, err)\n\t}\n\treturn pom, nil\n}\n\n// cacheResolveReader attempts to get a reader from cache, otherwise caches the contents of the resolve() function.\n// this function is guaranteed to return an unread reader for the correct contents.\n// NOTE: this could be promoted to the internal cache package as a specialized version of the cache.Resolver\n// if there are more users of this functionality\nfunc (r *Resolver) cacheResolveReader(key string, resolve func() (io.ReadCloser, error)) (io.Reader, error) {\n\treader, err := r.cache.Read(key)\n\tif err == nil && reader != nil {\n\t\treturn reader, err\n\t}\n\n\tcontentReader, err := resolve()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contentReader, key)\n\n\t// store the contents to return a new reader with the same content\n\tcontents, err := io.ReadAll(contentReader) //nolint:gocritic // caching requires full buffer\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = r.cache.Write(key, bytes.NewBuffer(contents))\n\treturn bytes.NewBuffer(contents), err\n}\n\n// resolveParent attempts to resolve the parent for the given pom\nfunc (r *Resolver) resolveParent(ctx context.Context, pom *Project, resolvingProperties ...string) (*Project, error) {\n\tif pom == nil || pom.Parent == nil {\n\t\treturn nil, nil\n\t}\n\tparent := pom.Parent\n\tpomWithoutParent := *pom\n\tpomWithoutParent.Parent = nil\n\tgroupID := r.resolvePropertyValue(ctx, parent.GroupID, resolvingProperties, &pomWithoutParent)\n\tartifactID := r.resolvePropertyValue(ctx, parent.ArtifactID, resolvingProperties, &pomWithoutParent)\n\tversion := r.resolvePropertyValue(ctx, parent.Version, resolvingProperties, &pomWithoutParent)\n\n\t// check cache before resolving\n\tparentID := ID{groupID, artifactID, version}\n\tif resolvedParent, ok := r.resolved[parentID]; ok {\n\t\treturn resolvedParent, nil\n\t}\n\n\t// check if the pom exists in the fileResolver\n\tparentPom := r.findParentPomByRelativePath(ctx, pom, parentID, resolvingProperties)\n\tif parentPom != nil {\n\t\treturn parentPom, nil\n\t}\n\n\t// find POM normally\n\treturn r.FindPom(ctx, groupID, artifactID, version)\n}\n\n// resolveInheritedVersion attempts to find the version of a dependency (groupID, artifactID) by searching all parent poms and imported managed dependencies\n//\n//nolint:gocognit\nfunc (r *Resolver) resolveInheritedVersion(ctx context.Context, pom *Project, groupID, artifactID string, resolutionContext ...*Project) (string, error) {\n\tif pom == nil {\n\t\treturn \"\", fmt.Errorf(\"nil pom provided to findInheritedVersion\")\n\t}\n\tif r.cfg.MaxParentRecursiveDepth > 0 && len(resolutionContext) > r.cfg.MaxParentRecursiveDepth {\n\t\treturn \"\", fmt.Errorf(\"maximum depth reached attempting to resolve version for: %s:%s at: %v\", groupID, artifactID, r.ResolveID(ctx, pom))\n\t}\n\tif slices.Contains(resolutionContext, pom) {\n\t\treturn \"\", fmt.Errorf(\"cycle detected attempting to resolve version for: %s:%s at: %v\", groupID, artifactID, r.ResolveID(ctx, pom))\n\t}\n\tresolutionContext = append(resolutionContext, pom)\n\n\tvar err error\n\tvar version string\n\n\t// check for entries in dependencyManagement first\n\tfor _, dep := range pomManagedDependencies(pom) {\n\t\tdepGroupID := r.resolvePropertyValue(ctx, dep.GroupID, nil, resolutionContext...)\n\t\tdepArtifactID := r.resolvePropertyValue(ctx, dep.ArtifactID, nil, resolutionContext...)\n\t\tif depGroupID == groupID && depArtifactID == artifactID {\n\t\t\tversion = r.resolvePropertyValue(ctx, dep.Version, nil, resolutionContext...)\n\t\t\tif version != \"\" {\n\t\t\t\treturn version, nil\n\t\t\t}\n\t\t}\n\n\t\t// imported pom files should be treated just like parent poms, they are used to define versions of dependencies\n\t\tif deref(dep.Type) == \"pom\" && deref(dep.Scope) == \"import\" {\n\t\t\tdepVersion := r.resolvePropertyValue(ctx, dep.Version, nil, resolutionContext...)\n\n\t\t\tdepPom, err := r.FindPom(ctx, depGroupID, depArtifactID, depVersion)\n\t\t\tif err != nil || depPom == nil {\n\t\t\t\tlog.WithFields(\"error\", err, \"ID\", r.ResolveID(ctx, pom), \"dependencyID\", ID{depGroupID, depArtifactID, depVersion}).\n\t\t\t\t\tDebug(\"unable to find imported pom looking for managed dependencies\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tversion, err = r.resolveInheritedVersion(ctx, depPom, groupID, artifactID, resolutionContext...)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"error\", err, \"ID\", r.ResolveID(ctx, pom), \"dependencyID\", ID{depGroupID, depArtifactID, depVersion}).\n\t\t\t\t\tDebug(\"error during findInheritedVersion\")\n\t\t\t}\n\t\t\tif version != \"\" {\n\t\t\t\treturn version, nil\n\t\t\t}\n\t\t}\n\t}\n\n\t// recursively check parents\n\tparent, err := r.resolveParent(ctx, pom)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif parent != nil {\n\t\tversion, err = r.resolveInheritedVersion(ctx, parent, groupID, artifactID, resolutionContext...)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif version != \"\" {\n\t\t\treturn version, nil\n\t\t}\n\t}\n\n\t// check for inherited dependencies\n\tfor _, dep := range DirectPomDependencies(pom) {\n\t\tdepGroupID := r.resolvePropertyValue(ctx, dep.GroupID, nil, resolutionContext...)\n\t\tdepArtifactID := r.resolvePropertyValue(ctx, dep.ArtifactID, nil, resolutionContext...)\n\t\tif depGroupID == groupID && depArtifactID == artifactID {\n\t\t\tversion = r.resolvePropertyValue(ctx, dep.Version, nil, resolutionContext...)\n\t\t\tif version != \"\" {\n\t\t\t\treturn version, nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\", nil\n}\n\n// FindLicenses attempts to find a pom, and once found attempts to resolve licenses traversing\n// parent poms as necessary\nfunc (r *Resolver) FindLicenses(ctx context.Context, groupID, artifactID, version string) ([]gopom.License, error) {\n\tpom, err := r.FindPom(ctx, groupID, artifactID, version)\n\tif pom == nil || err != nil {\n\t\treturn nil, err\n\t}\n\treturn r.resolveLicenses(ctx, pom)\n}\n\n// ResolveLicenses searches the pom for license, resolving and traversing parent poms if needed\nfunc (r *Resolver) ResolveLicenses(ctx context.Context, pom *Project) ([]License, error) {\n\treturn r.resolveLicenses(ctx, pom)\n}\n\n// resolveLicenses searches the pom for license, traversing parent poms if needed\nfunc (r *Resolver) resolveLicenses(ctx context.Context, pom *Project, processing ...ID) ([]License, error) {\n\tid := r.ResolveID(ctx, pom)\n\tif slices.Contains(processing, id) {\n\t\treturn nil, fmt.Errorf(\"cycle detected resolving licenses for: %v\", id)\n\t}\n\tif r.cfg.MaxParentRecursiveDepth > 0 && len(processing) > r.cfg.MaxParentRecursiveDepth {\n\t\treturn nil, fmt.Errorf(\"maximum parent recursive depth (%v) reached: %v\", r.cfg.MaxParentRecursiveDepth, processing)\n\t}\n\n\tdirectLicenses := r.pomLicenses(ctx, pom)\n\tif len(directLicenses) > 0 {\n\t\treturn directLicenses, nil\n\t}\n\n\tparent, err := r.resolveParent(ctx, pom)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif parent == nil {\n\t\treturn nil, nil\n\t}\n\treturn r.resolveLicenses(ctx, parent, append(processing, id)...)\n}\n\n// pomLicenses appends the directly specified licenses with non-empty name or url\nfunc (r *Resolver) pomLicenses(ctx context.Context, pom *Project) []License {\n\tvar out []License\n\tfor _, license := range deref(pom.Licenses) {\n\t\t// if we find non-empty licenses, return them\n\t\tname := r.resolvePropertyValue(ctx, license.Name, nil, pom)\n\t\turl := r.resolvePropertyValue(ctx, license.URL, nil, pom)\n\t\tif name != \"\" || url != \"\" {\n\t\t\tout = append(out, license)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc (r *Resolver) findParentPomByRelativePath(ctx context.Context, pom *Project, parentID ID, resolvingProperties []string) *Project {\n\t// can't resolve without a file resolver\n\tif r.fileResolver == nil {\n\t\treturn nil\n\t}\n\n\tpomLocation, hasPomLocation := r.pomLocations[pom]\n\tif !hasPomLocation || pom == nil || pom.Parent == nil {\n\t\treturn nil\n\t}\n\trelativePath := r.resolvePropertyValue(ctx, pom.Parent.RelativePath, resolvingProperties, pom)\n\tif relativePath == \"\" {\n\t\treturn nil\n\t}\n\tp := pomLocation.Path()\n\tp = path.Dir(p)\n\tp = path.Join(p, relativePath)\n\tp = path.Clean(p)\n\tif !strings.HasSuffix(p, \".xml\") {\n\t\tp = path.Join(p, \"pom.xml\")\n\t}\n\tparentLocations, err := r.fileResolver.FilesByPath(p)\n\tif err != nil || len(parentLocations) == 0 {\n\t\tlog.WithFields(\"error\", err, \"mavenID\", r.resolveID(ctx, resolvingProperties, pom), \"parentID\", parentID, \"relativePath\", relativePath).\n\t\t\tTrace(\"parent pom not found by relative path\")\n\t\treturn nil\n\t}\n\tparentLocation := parentLocations[0]\n\n\tparentContents, err := r.fileResolver.FileContentsByLocation(parentLocation)\n\tif err != nil || parentContents == nil {\n\t\tlog.WithFields(\"error\", err, \"mavenID\", r.resolveID(ctx, resolvingProperties, pom), \"parentID\", parentID, \"parentLocation\", parentLocation).\n\t\t\tDebug(\"unable to get contents of parent pom by relative path\")\n\t\treturn nil\n\t}\n\tdefer internal.CloseAndLogError(parentContents, parentLocation.RealPath)\n\tparentPom, err := ParsePomXML(parentContents)\n\tif err != nil || parentPom == nil {\n\t\tlog.WithFields(\"error\", err, \"mavenID\", r.resolveID(ctx, resolvingProperties, pom), \"parentID\", parentID, \"parentLocation\", parentLocation).\n\t\t\tDebug(\"unable to parse parent pom\")\n\t\treturn nil\n\t}\n\t// ensure parent matches\n\tnewParentID := r.resolveID(ctx, resolvingProperties, parentPom)\n\tif newParentID.ArtifactID != parentID.ArtifactID {\n\t\tlog.WithFields(\"newParentID\", newParentID, \"mavenID\", r.resolveID(ctx, resolvingProperties, pom), \"parentID\", parentID, \"parentLocation\", parentLocation).\n\t\t\tDebug(\"parent IDs do not match resolving parent by relative path\")\n\t\treturn nil\n\t}\n\n\tr.resolved[parentID] = parentPom\n\tr.pomLocations[parentPom] = parentLocation // for any future parent relativePath lookups\n\n\treturn parentPom\n}\n\n// AddPom allows for adding known pom files with locations within the file resolver, these locations may be used\n// while resolving parent poms by relative path\nfunc (r *Resolver) AddPom(ctx context.Context, pom *Project, location file.Location) {\n\tr.pomLocations[pom] = location\n\t// by calling resolve ID here, this will lookup necessary parent poms by relative path, and\n\t// track any poms we found with complete version information if enough is available to resolve\n\tid := r.ResolveID(ctx, pom)\n\tif id.Valid() {\n\t\t_, existing := r.resolved[id]\n\t\tif !existing {\n\t\t\tr.resolved[id] = pom\n\t\t}\n\t}\n}\n\n// DirectPomDependencies returns all dependencies directly defined in a project, including all defined in profiles.\n// This does not resolve any parent or transitive dependencies\nfunc DirectPomDependencies(pom *Project) []Dependency {\n\tdependencies := deref(pom.Dependencies)\n\tfor _, profile := range deref(pom.Profiles) {\n\t\tdependencies = append(dependencies, deref(profile.Dependencies)...)\n\t}\n\treturn dependencies\n}\n\n// pomManagedDependencies returns all directly defined managed dependencies in a project pom, including all defined in profiles.\n// does not resolve parent managed dependencies\nfunc pomManagedDependencies(pom *Project) []Dependency {\n\tvar dependencies []Dependency\n\tif pom.DependencyManagement != nil {\n\t\tdependencies = append(dependencies, deref(pom.DependencyManagement.Dependencies)...)\n\t}\n\tfor _, profile := range deref(pom.Profiles) {\n\t\tif profile.DependencyManagement != nil {\n\t\t\tdependencies = append(dependencies, deref(profile.DependencyManagement.Dependencies)...)\n\t\t}\n\t}\n\treturn dependencies\n}\n\n// deref dereferences ptr if not nil, or returns the type default value if ptr is nil\nfunc deref[T any](ptr *T) T {\n\tif ptr == nil {\n\t\tvar t T\n\t\treturn t\n\t}\n\treturn *ptr\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/resolver_test.go",
    "content": "package maven\n\nimport (\n\t\"context\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\tmaventest \"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven/test\"\n)\n\nfunc Test_resolveProperty(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tproperty string\n\t\tpom      Project\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"property\",\n\t\t\tproperty: \"${version.number}\",\n\t\t\tpom: Project{\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"version.number\": \"12.5.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"12.5.0\",\n\t\t},\n\t\t{\n\t\t\tname:     \"groupId\",\n\t\t\tproperty: \"${project.groupId}\",\n\t\t\tpom: Project{\n\t\t\t\tGroupID: ptr(\"org.some.group\"),\n\t\t\t},\n\t\t\texpected: \"org.some.group\",\n\t\t},\n\t\t{\n\t\t\tname:     \"parent groupId\",\n\t\t\tproperty: \"${project.parent.groupId}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tGroupID: ptr(\"org.some.parent\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"org.some.parent\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nil pointer halts search\",\n\t\t\tproperty: \"${project.parent.groupId}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: nil,\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nil string pointer halts search\",\n\t\t\tproperty: \"${project.parent.groupId}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tGroupID: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"double dereference\",\n\t\t\tproperty: \"${springboot.version}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tVersion: ptr(\"1.2.3\"),\n\t\t\t\t},\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"springboot.version\": \"${project.parent.version}\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"1.2.3\",\n\t\t},\n\t\t{\n\t\t\tname:     \"map missing stops double dereference\",\n\t\t\tproperty: \"${springboot.version}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tVersion: ptr(\"1.2.3\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"resolution halts even if it resolves to a variable\",\n\t\t\tproperty: \"${springboot.version}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tVersion: ptr(\"${undefined.version}\"),\n\t\t\t\t},\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"springboot.version\": \"${project.parent.version}\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"resolution halts even if cyclic\",\n\t\t\tproperty: \"${springboot.version}\",\n\t\t\tpom: Project{\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"springboot.version\": \"${springboot.version}\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"resolution halts even if cyclic more steps\",\n\t\t\tproperty: \"${cyclic.version}\",\n\t\t\tpom: Project{\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"other.version\":      \"${cyclic.version}\",\n\t\t\t\t\t\t\"springboot.version\": \"${other.version}\",\n\t\t\t\t\t\t\"cyclic.version\":     \"${springboot.version}\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"resolution halts even if cyclic involving parent\",\n\t\t\tproperty: \"${cyclic.version}\",\n\t\t\tpom: Project{\n\t\t\t\tParent: &Parent{\n\t\t\t\t\tVersion: ptr(\"${cyclic.version}\"),\n\t\t\t\t},\n\t\t\t\tProperties: &Properties{\n\t\t\t\t\tEntries: map[string]string{\n\t\t\t\t\t\t\"other.version\":      \"${parent.version}\",\n\t\t\t\t\t\t\"springboot.version\": \"${other.version}\",\n\t\t\t\t\t\t\"cyclic.version\":     \"${springboot.version}\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tr := NewResolver(nil, DefaultConfig())\n\t\t\tresolved := r.ResolveProperty(context.Background(), &test.pom, ptr(test.property))\n\t\t\trequire.Equal(t, test.expected, resolved)\n\t\t})\n\t}\n}\n\nfunc Test_mavenResolverLocal(t *testing.T) {\n\tdir, err := filepath.Abs(\"testdata/maven-repo\")\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname       string\n\t\tgroupID    string\n\t\tartifactID string\n\t\tversion    string\n\t\tmaxDepth   int\n\t\texpression string\n\t\texpected   string\n\t\twantErr    require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:       \"artifact id with variable from 2nd parent\",\n\t\t\tgroupID:    \"my.org\",\n\t\t\tartifactID: \"child-one\",\n\t\t\tversion:    \"1.3.6\",\n\t\t\texpression: \"${project.one}\",\n\t\t\texpected:   \"1\",\n\t\t},\n\t\t{\n\t\t\tname:       \"depth limited large enough\",\n\t\t\tgroupID:    \"my.org\",\n\t\t\tartifactID: \"child-one\",\n\t\t\tversion:    \"1.3.6\",\n\t\t\texpression: \"${project.one}\",\n\t\t\texpected:   \"1\",\n\t\t\tmaxDepth:   2,\n\t\t},\n\t\t{\n\t\t\tname:       \"depth limited should not resolve\",\n\t\t\tgroupID:    \"my.org\",\n\t\t\tartifactID: \"child-one\",\n\t\t\tversion:    \"1.3.6\",\n\t\t\texpression: \"${project.one}\",\n\t\t\texpected:   \"\",\n\t\t\tmaxDepth:   1,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\t\t\tr := NewResolver(nil, Config{\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tUseLocalRepository:      true,\n\t\t\t\tLocalRepositoryDir:      dir,\n\t\t\t\tMaxParentRecursiveDepth: test.maxDepth,\n\t\t\t})\n\t\t\tpom, err := r.FindPom(ctx, test.groupID, test.artifactID, test.version)\n\t\t\tif test.wantErr != nil {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\tgot := r.ResolveProperty(context.Background(), pom, &test.expression)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_mavenResolverRemote(t *testing.T) {\n\turl := maventest.MockRepo(t, \"testdata/maven-repo\")\n\n\ttests := []struct {\n\t\tgroupID    string\n\t\tartifactID string\n\t\tversion    string\n\t\texpression string\n\t\texpected   string\n\t\twantErr    require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tgroupID:    \"my.org\",\n\t\t\tartifactID: \"child-one\",\n\t\t\tversion:    \"1.3.6\",\n\t\t\texpression: \"${project.one}\",\n\t\t\texpected:   \"1\",\n\t\t},\n\t\t{\n\t\t\tgroupID:    \"my.org\", // this particular package has a circular reference\n\t\t\tartifactID: \"circular\",\n\t\t\tversion:    \"1.2.3\",\n\t\t\texpression: \"${unresolved}\",\n\t\t\texpected:   \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.artifactID, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\t\t\tr := NewResolver(nil, Config{\n\t\t\t\tUseNetwork:         true,\n\t\t\t\tUseLocalRepository: false,\n\t\t\t\tRepositories:       strings.Split(url, \",\"),\n\t\t\t})\n\t\t\tpom, err := r.FindPom(ctx, test.groupID, test.artifactID, test.version)\n\t\t\tif test.wantErr != nil {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\tgot := r.ResolveProperty(context.Background(), pom, &test.expression)\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_relativePathParent(t *testing.T) {\n\tresolver, err := fileresolver.NewFromDirectory(\"testdata/local\", \"\")\n\trequire.NoError(t, err)\n\n\tctx := context.Background()\n\n\ttests := []struct {\n\t\tname     string\n\t\tpom      string\n\t\tvalidate func(t *testing.T, r *Resolver, pom *Project)\n\t}{\n\t\t{\n\t\t\tname: \"basic\",\n\t\t\tpom:  \"child-1/pom.xml\",\n\t\t\tvalidate: func(t *testing.T, r *Resolver, pom *Project) {\n\t\t\t\tparent, err := r.resolveParent(ctx, pom)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, r.pomLocations, parent)\n\n\t\t\t\tparent, err = r.resolveParent(ctx, parent)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.Contains(t, r.pomLocations, parent)\n\n\t\t\t\tgot := r.ResolveProperty(ctx, pom, ptr(\"${commons-exec_subversion}\"))\n\t\t\t\trequire.Equal(t, \"3\", got)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parent property\",\n\t\t\tpom:  \"child-2/pom.xml\",\n\t\t\tvalidate: func(t *testing.T, r *Resolver, pom *Project) {\n\t\t\t\tid := r.ResolveID(ctx, pom)\n\t\t\t\t// child.parent.version = ${revision}\n\t\t\t\t// parent.revision = 3.3.3\n\t\t\t\trequire.Equal(t, id.Version, \"3.3.3\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid parent\",\n\t\t\tpom:  \"child-3/pom.xml\",\n\t\t\tvalidate: func(t *testing.T, r *Resolver, pom *Project) {\n\t\t\t\trequire.NotNil(t, pom)\n\t\t\t\tid := r.ResolveID(ctx, pom)\n\t\t\t\t// version should not be resolved to anything\n\t\t\t\trequire.Equal(t, \"\", id.Version)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"circular resolving ID variables\",\n\t\t\tpom:  \"circular-1/pom.xml\",\n\t\t\tvalidate: func(t *testing.T, r *Resolver, pom *Project) {\n\t\t\t\trequire.NotNil(t, pom)\n\t\t\t\tid := r.ResolveID(ctx, pom)\n\t\t\t\t// version should be resolved, but not artifactId\n\t\t\t\trequire.Equal(t, \"1.2.3\", id.Version)\n\t\t\t\trequire.Equal(t, \"\", id.ArtifactID)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"circular parent only\",\n\t\t\tpom:  \"circular-2/pom.xml\",\n\t\t\tvalidate: func(t *testing.T, r *Resolver, pom *Project) {\n\t\t\t\trequire.NotNil(t, pom)\n\t\t\t\tid := r.ResolveID(ctx, pom)\n\t\t\t\trequire.Equal(t, \"\", id.Version)\n\t\t\t\trequire.Equal(t, \"something\", id.ArtifactID)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tr := NewResolver(resolver, DefaultConfig())\n\t\t\tlocs, err := resolver.FilesByPath(test.pom)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, locs, 1)\n\n\t\t\tloc := locs[0]\n\t\t\tcontents, err := resolver.FileContentsByLocation(loc)\n\t\t\trequire.NoError(t, err)\n\t\t\tdefer internal.CloseAndLogError(contents, loc.RealPath)\n\n\t\t\tpom, err := ParsePomXML(contents)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tr.pomLocations[pom] = loc\n\n\t\t\ttest.validate(t, r, pom)\n\t\t})\n\t}\n}\n\n// ptr returns a pointer to the given value\nfunc ptr[T any](value T) *T {\n\treturn &value\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/test/mock_repo.go",
    "content": "package maventest\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal\"\n)\n\n// MockRepo starts a remote maven repo serving all the pom files found in a maven-structured directory\nfunc MockRepo(t *testing.T, dir string) (url string) {\n\tt.Helper()\n\n\t// mux is the HTTP request multiplexer used with the test server.\n\tmux := http.NewServeMux()\n\n\t// We want to ensure that tests catch mistakes where the endpoint URL is\n\t// specified as absolute rather than relative. It only makes a difference\n\t// when there's a non-empty base URL path. So, use that. See issue #752.\n\tapiHandler := http.NewServeMux()\n\tapiHandler.Handle(\"/\", mux)\n\t// server is a test HTTP server used to provide mock API responses.\n\tserver := httptest.NewServer(apiHandler)\n\n\tt.Cleanup(server.Close)\n\n\tmatches, err := doublestar.Glob(os.DirFS(dir), filepath.Join(\"**\", \"*.pom\"))\n\trequire.NoError(t, err)\n\n\tfor _, match := range matches {\n\t\tfullPath, err := filepath.Abs(filepath.Join(dir, match))\n\t\trequire.NoError(t, err)\n\t\tmatch = \"/\" + filepath.ToSlash(match)\n\t\tmux.HandleFunc(match, mockMavenHandler(fullPath))\n\t}\n\n\treturn server.URL\n}\n\nfunc mockMavenHandler(responseFixture string) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, _ *http.Request) {\n\t\tw.WriteHeader(http.StatusOK)\n\t\t// Set the Content-Type header to indicate that the response is XML\n\t\tw.Header().Set(\"Content-Type\", \"application/xml\")\n\t\t// Copy the file's content to the response writer\n\t\tf, err := os.Open(responseFixture)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdefer internal.CloseAndLogError(f, responseFixture)\n\t\t_, err = io.Copy(w, f)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/declared-iso-8859-encoded-pom.xml.base64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/PgoKPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvbWF2ZW4tdjRfMF8wLnhzZCI+DQogICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KDQogICAgPG5hbWU+Q2FtZWxlb240SmF2YSAtIENvbnRlbnRTREs8L25hbWU+DQoNCiAgICA8Z3JvdXBJZD5jb20uYWxvZ2llbnQuY2FtZWxlb24uamF2YS5zZGs8L2dyb3VwSWQ+DQogICAgPGFydGlmYWN0SWQ+Y2FtZWxlb240amF2YS1zZGs8L2FydGlmYWN0SWQ+DQoNCiAgICA8dmVyc2lvbj4xLjEyLjI8L3ZlcnNpb24+DQoNCiAgICA8cGFja2FnaW5nPmphcjwvcGFja2FnaW5nPg0KDQogICAgPHNjbT4NCiAgICAgICAgPGNvbm5lY3Rpb24+c2NtOmdpdDpzc2g6Ly9naXRAZ2l0aHViLmNvbS9BbG9naWVudC9DT1M1LVNESy5naXQ8L2Nvbm5lY3Rpb24+DQogICAgICAgIDxkZXZlbG9wZXJDb25uZWN0aW9uPnNjbTpnaXQ6c3NoOi8vZ2l0QGdpdGh1Yi5jb20vQWxvZ2llbnQvQ09TNS1TREsuZ2l0PC9kZXZlbG9wZXJDb25uZWN0aW9uPg0KICAgICAgICA8dXJsPmdpdEBnaXRodWIuY29tOkFsb2dpZW50L0NPUzUtU0RLLmdpdDwvdXJsPg0KICAgIDwvc2NtPg0KDQogICAgPGRlc2NyaXB0aW9uPkNhbWVsZW9uIGlzIGEgQ01TIGRlZGljYXRlZCB0byBkZXZlbG9wZXJzIGFzIHdlbGwgYXMgbm9uLUlUIGNvbnRyaWJ1dG9ycy48L2Rlc2NyaXB0aW9uPg0KICAgIA0KICAgIDxvcmdhbml6YXRpb24+DQogICAgICAgIDxuYW1lPkFsb2dpZW50PC9uYW1lPg0KICAgICAgICA8dXJsPmh0dHA6Ly93d3cuYWxvZ2llbnQuY29tPC91cmw+DQogICAgPC9vcmdhbml6YXRpb24+DQoNCiAgICA8dXJsPmh0dHA6Ly93d3cuY2FtZWxlb25jbXMuY29tPC91cmw+DQoNCiAgICA8ZGV2ZWxvcGVycz4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5hbW9yaW48L2lkPg0KICAgICAgICAgICAgPG5hbWU+QXJuYXVkIE1vcmluPC9uYW1lPg0KICAgICAgICAgICAgPGVtYWlsPmFtb3JpbkBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5hbG9yZDwvaWQ+DQogICAgICAgICAgICA8bmFtZT5BbGV4YW5kcmUgTG9yZDwvbmFtZT4NCiAgICAgICAgICAgIDxlbWFpbD5hbG9yZEBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5kam9tcGhlPC9pZD4NCiAgICAgICAgICAgIDxuYW1lPkRhbmllbCBKb21waGU8L25hbWU+DQogICAgICAgICAgICA8ZW1haWw+ZGpvbXBoZUBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5qbWlyYzwvaWQ+DQogICAgICAgICAgICA8bmFtZT5K6XL0bWUgTWlyYzwvbmFtZT4NCiAgICAgICAgICAgIDxlbWFpbD5qbWlyY0BhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5wbHZlaWxsZXV4PC9pZD4NCiAgICAgICAgICAgIDxuYW1lPlBpZXJyZS1MdWMgVmVpbGxldXg8L25hbWU+DQogICAgICAgICAgICA8ZW1haWw+cGx2ZWlsbGV1eEBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICA8L2RldmVsb3BlcnM+DQoNCg0KICAgIDxsaWNlbnNlcz4NCiAgICAgICAgPGxpY2Vuc2U+DQogICAgICAgICAgICA8bmFtZT5UaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9uYW1lPg0KICAgICAgICAgICAgPHVybD5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAudHh0PC91cmw+DQogICAgICAgICAgICA8ZGlzdHJpYnV0aW9uPnJlcG88L2Rpc3RyaWJ1dGlvbj4NCiAgICAgICAgPC9saWNlbnNlPg0KICAgIDwvbGljZW5zZXM+DQoNCiAgICA8YnVpbGQ+DQoNCiAgICAgICAgPHJlc291cmNlcz4NCiAgICAgICAgICAgIDxyZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvbWFpbi9yZXNvdXJjZXM8L2RpcmVjdG9yeT4NCiAgICAgICAgICAgIDwvcmVzb3VyY2U+DQogICAgICAgICAgICA8cmVzb3VyY2U+DQogICAgICAgICAgICAgICAgPGZpbHRlcmluZz5mYWxzZTwvZmlsdGVyaW5nPg0KICAgICAgICAgICAgICAgIDxkaXJlY3Rvcnk+c3JjL21haW4vamF2YTwvZGlyZWN0b3J5Pg0KICAgICAgICAgICAgICAgIDxpbmNsdWRlcz4NCiAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+Kio8L2luY2x1ZGU+DQogICAgICAgICAgICAgICAgPC9pbmNsdWRlcz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVkZXM+DQogICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPioqLyouamF2YTwvZXhjbHVkZT4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1ZGVzPg0KICAgICAgICAgICAgPC9yZXNvdXJjZT4NCiAgICAgICAgPC9yZXNvdXJjZXM+DQogICAgICAgIDx0ZXN0UmVzb3VyY2VzPg0KICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvdGVzdC9yZXNvdXJjZXM8L2RpcmVjdG9yeT4NCiAgICAgICAgICAgIDwvdGVzdFJlc291cmNlPg0KICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvdGVzdC9qYXZhPC9kaXJlY3Rvcnk+DQogICAgICAgICAgICAgICAgPGluY2x1ZGVzPg0KICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKjwvaW5jbHVkZT4NCiAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPg0KICAgICAgICAgICAgICAgIDxleGNsdWRlcz4NCiAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKi5qYXZhPC9leGNsdWRlPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVkZXM+DQogICAgICAgICAgICA8L3Rlc3RSZXNvdXJjZT4NCiAgICAgICAgPC90ZXN0UmVzb3VyY2VzPg0KDQogICAgICAgIDxwbHVnaW5zPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIuMy4yPC92ZXJzaW9uPg0KICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8c291cmNlPjEuNjwvc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8dGFyZ2V0PjEuNjwvdGFyZ2V0Pg0KICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4NCiAgICAgICAgICAgIDwvcGx1Z2luPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tc291cmNlLXBsdWdpbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjEuMjwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5hdHRhY2gtc291cmNlczwvaWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5qYXI8L2dvYWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPg0KICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+DQogICAgICAgICAgICA8L3BsdWdpbj4NCiAgICAgICAgICAgIDxwbHVnaW4+DQogICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWphdmFkb2MtcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIuNzwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5hdHRhY2gtamF2YWRvY3M8L2lkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmphcjwvZ29hbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+DQogICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPg0KICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCiAgICAgICAgICAgIDwvcGx1Z2luPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tcmVsZWFzZS1wbHVnaW48L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgPHZlcnNpb24+Mi4xPC92ZXJzaW9uPg0KICAgICAgICAgICAgPC9wbHVnaW4+DQoJCQkJICAgIDxwbHVnaW4+DQogICAgICAJCQkJICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgIAkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1yZXBvc2l0b3J5LXBsdWdpbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgCQkJCTx2ZXJzaW9uPjIuMy4xPC92ZXJzaW9uPg0KICAgICAgCQkJPC9wbHVnaW4+DQogICAgICAgICAgICA8cGx1Z2luPg0KICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1ncGctcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEuMTwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5zaWduLWFydGlmYWN0czwvaWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5zaWduPC9nb2FsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+DQogICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPg0KICAgICAgICAgICAgPC9wbHVnaW4+DQogICAgICAJIDwvcGx1Z2lucz4NCiAgICA8L2J1aWxkPg0KDQogICAgPGRlcGVuZGVuY2llcz4NCg0KICAgICAgICA8IS0tIFNQUklORyBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1jb3JlPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4wLjQuUkVMRUFTRTwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxleGNsdXNpb25zPg0KICAgICAgICAgICAgICAgIDxleGNsdXNpb24+DQogICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy13ZWI8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuNC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1vcm08L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuNC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1hc3BlY3RzPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4wLjQuUkVMRUFTRTwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcms8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5zcHJpbmctZXhwcmVzc2lvbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjMuMC40LlJFTEVBU0U8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLnNlY3VyaXR5PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nLXNlY3VyaXR5LWNvcmU8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5zZWN1cml0eTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1zZWN1cml0eS1jb25maWc8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5zZWN1cml0eTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1zZWN1cml0eS13ZWI8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb20uc3ByaW5nc291cmNlLmluc2lnaHQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5pbnNpZ2h0LWFubm90YXRpb248L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjAuMC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gU0VSVkxFVCBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+amF2YXguc2VydmxldDwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNlcnZsZXQtYXBpPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi41PC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gTE9HR0lORyBERVBFTkRFTkNJRVMgLSBMT0c0SiAtLT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jaC5xb3MubG9nYmFjazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZ2JhY2stY2xhc3NpYzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjAuOS4yNjwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gQVBBQ0hFIENPTU1PTlMgREVQRU5ERU5DSUVTIC0tPg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi4wPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sYW5nPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1sYW5nPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi41PC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1lbWFpbDwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuMjwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtYmVhbnV0aWxzPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1iZWFudXRpbHM8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjguMzwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxleGNsdXNpb25zPg0KICAgICAgICAgICAgICAgIDxleGNsdXNpb24+DQogICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jb2RlYzwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29kZWM8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjQ8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbmZpZ3VyYXRpb248L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvbmZpZ3VyYXRpb248L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjY8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCg0KICAgICAgICA8IS0tIEhJQkVSTkFURSBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmhpYmVybmF0ZTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmhpYmVybmF0ZS1jb3JlPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My42LjAuRmluYWw8L3ZlcnNpb24+DQogICAgICAgICAgICA8ZXhjbHVzaW9ucz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+amF2YXNzaXN0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+amF2YXNzaXN0PC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4xMS4wLkdBPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+aHNxbGRiPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+aHNxbGRiPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS44LjAuMTA8L3ZlcnNpb24+DQogICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb20ubWljcm9zb2Z0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3FsamRiYzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjIuMDwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gVU5JVCBURVNUSU5HIC0tPg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy51bml0aWxzPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+dW5pdGlsczwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjIuNDwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj40LjguMjwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5kYnVuaXQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5kYnVuaXQ8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4yLjQuODwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5tb2NraXRvPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+bW9ja2l0by1hbGw8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjguNTwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPnhtbHVuaXQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD54bWx1bml0PC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS4zPC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICAgICAgPCEtLSBPVEhFUiAtLT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnNvbHI8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5zb2xyLXNvbHJqPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS40LjE8L3ZlcnNpb24+DQogICAgICAgICAgICA8ZXhjbHVzaW9ucz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4NCiAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5jb3MuY29tbW9uPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29zLXZhbGlkYXRvcjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuMC4wPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+cjA3PC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICA8L2RlcGVuZGVuY2llcz4NCg0KICAgIDxwcm9maWxlcz4NCiAgICAgICAgPHByb2ZpbGU+DQogICAgICAgICAgICA8aWQ+anJlYmVsPC9pZD4NCiAgICAgICAgICAgIDxhY3RpdmF0aW9uPg0KICAgICAgICAgICAgICAgIDxhY3RpdmVCeURlZmF1bHQ+ZmFsc2U8L2FjdGl2ZUJ5RGVmYXVsdD4NCiAgICAgICAgICAgIDwvYWN0aXZhdGlvbj4NCiAgICAgICAgICAgIDxidWlsZD4NCiAgICAgICAgICAgICAgICA8cGx1Z2lucz4NCiAgICAgICAgICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy56ZXJvdHVybmFyb3VuZDwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphdmFyZWJlbC1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xLjAuNTwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5nZW5lcmF0ZS1yZWJlbC14bWw8L2lkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+cHJvY2Vzcy1yZXNvdXJjZXM8L3BoYXNlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPC9wbHVnaW4+DQogICAgICAgICAgICAgICAgPC9wbHVnaW5zPg0KICAgICAgICAgICAgPC9idWlsZD4NCiAgICAgICAgICAgIDxwcm9wZXJ0aWVzPg0KICAgICAgICAgICAgICAgIDxqZXR0eS1zY2FuSW50ZXJ2YWxTZWNvbmRzPjA8L2pldHR5LXNjYW5JbnRlcnZhbFNlY29uZHM+DQogICAgICAgICAgICA8L3Byb3BlcnRpZXM+DQogICAgICAgIDwvcHJvZmlsZT4NCiAgICA8L3Byb2ZpbGVzPg0KPC9wcm9qZWN0Pg0K\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/child-1/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <!--\n        $ docker run -it -\\-rm -v \"$HOME/.m2:/root/.m2\" -v \"$(pwd)\":/wd -w /wd/child-1 maven:3.3-jdk-8 mvn dependency:tree\n        ...\n        [INFO] my.org:child-one:jar:1.3.6\n        [INFO] +- org.apache.commons:commons-lang3:jar:3.12.0:compile\n        [INFO] +- org.apache.commons:commons-text:jar:1.12.0:compile\n        [INFO] +- org.apache.commons:commons-collections4:jar:4.2:compile\n        [INFO] \\- junit:junit:jar:4.12:test\n        [INFO]    \\- org.hamcrest:hamcrest-core:jar:1.3:test\n    -->\n\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-one</artifactId>\n        <version>3.11.0</version>\n        <relativePath>../parent-1/pom.xml</relativePath>\n    </parent>\n\n    <artifactId>child-one</artifactId>\n    <!-- maven warns about this, but resolves the property -->\n    <version>${project.one}.3.6</version>\n    <packaging>jar</packaging>\n\n    <properties>\n        <commons.lang3.version>3.12.0</commons.lang3.version>\n        <commons.collections4.version>4.2</commons.collections4.version>\n        <commons.junit.version>4.12</commons.junit.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/child-2/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-three</artifactId>\n        <version>${revision}</version>\n        <relativePath>../parent-3</relativePath>\n    </parent>\n\n    <artifactId>child-two</artifactId>\n    <packaging>jar</packaging>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/child-3/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-three</artifactId>\n        <version>${revision}</version>\n        <relativePath>../invalid</relativePath>\n    </parent>\n\n    <artifactId>child-three</artifactId>\n    <packaging>jar</packaging>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/circular-1/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <groupId>${groupId}</groupId>\n  <artifactId>${artifactId}</artifactId>\n\n  <parent>\n    <groupId>my.org</groupId>\n    <artifactId>circular</artifactId>\n    <version>1.2.3</version>\n  </parent>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/circular-2/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <artifactId>something</artifactId>\n  <version>${unresolvable}</version>\n\n  <parent>\n    <groupId>my.org</groupId>\n    <artifactId>circular</artifactId>\n    <version>1.2.3</version>\n  </parent>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/contains-child-1/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <artifactId>contains-child-one</artifactId>\n    <version>5</version>\n    <packaging>jar</packaging>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>my.org</groupId>\n                <artifactId>child-one</artifactId>\n                <version>1.3.6</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>my.org</groupId>\n            <artifactId>child-one</artifactId>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/parent-1/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-two</artifactId>\n        <version>13.7.8</version>\n        <relativePath>../parent-2/pom.xml</relativePath>\n    </parent>\n\n    <artifactId>parent-one</artifactId>\n    <version>3.11.0</version>\n    <packaging>pom</packaging>\n\n    <properties>\n        <!-- maven resolves project.parent.version from the _child_ project root context -->\n        <commons.lang3.version>3.1${project.parent.version}.0</commons.lang3.version>\n        <commons.collections4.version>4.3</commons.collections4.version>\n    </properties>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>${commons.lang3.version}</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-text</artifactId>\n            <version>${commons.text.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n            <version>${commons.collections4.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${commons.junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/parent-2/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>my.org</groupId>\n    <artifactId>parent-two</artifactId>\n    <version>13.7.8</version>\n    <packaging>pom</packaging>\n\n    <properties>\n        <commons.lang3.version>3.14.0</commons.lang3.version>\n        <commons.collections4.version>4.4</commons.collections4.version>\n        <commons.text.version>1.12.0</commons.text.version>\n        <commons.junit.version>4.13.2</commons.junit.version>\n        <commons-exec_subversion>3</commons-exec_subversion>\n        <project.one>1</project.one>\n    </properties>\n\n    <licenses>\n        <license>\n            <name>Eclipse Public License v2.0</name>\n            <url>https://www.eclipse.org/legal/epl-v20.html</url>\n        </license>\n    </licenses>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>${commons.lang3.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-text</artifactId>\n                <version>${commons.text.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>junit</groupId>\n                <artifactId>junit</artifactId>\n                <version>${commons.junit.version}</version>\n                <scope>test</scope>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-text</artifactId>\n            <version>${commons.text.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n            <version>${commons.collections4.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${commons.junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local/parent-3/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>my.org</groupId>\n    <artifactId>parent-three</artifactId>\n    <version>${revision}</version>\n    <packaging>pom</packaging>\n\n    <properties>\n        <revision>3.3.3</revision>\n    </properties>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/local-repository-settings/.m2/settings.xml",
    "content": "<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n          xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd\">\n    <localRepository>/some/other/repo</localRepository>\n</settings>"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/my/org/child-one/1.3.6/child-one-1.3.6.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <!--\n        $ docker run -it -\\-rm -v \"$(pwd)\":/wd -w /wd/child-1 maven:3.3-jdk-8 mvn dependency:tree\n        ...\n        [INFO] my.org:child-1:jar:1.3.6\n        [INFO] +- org.apache.commons:commons-lang3:jar:3.12.0:compile\n        [INFO] +- org.apache.commons:commons-text:jar:1.12.0:compile\n        [INFO] +- org.apache.commons:commons-collections4:jar:4.2:compile\n        [INFO] \\- junit:junit:jar:4.12:test\n        [INFO]    \\- org.hamcrest:hamcrest-core:jar:1.3:test\n    -->\n\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-one</artifactId>\n        <version>3.11.0</version>\n    </parent>\n\n    <artifactId>child-one</artifactId>\n    <!-- maven warns about this, but resolves the property -->\n    <version>${project.one}.3.6</version>\n    <packaging>jar</packaging>\n\n    <properties>\n        <commons.lang3.version>3.12.0</commons.lang3.version>\n        <commons.collections4.version>4.2</commons.collections4.version>\n        <commons.junit.version>4.12</commons.junit.version>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/my/org/child-two/2.1.90/child-two-2.1.90.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <!--\n        $ docker run -it -\\-rm -v \"$(pwd)\":/wd -w /wd/child-2 maven:3.3-jdk-8 mvn dependency:tree\n        ...\n        [INFO] my.org:child-2:jar:2.1.90\n        [INFO] +- org.apache.commons:commons-lang3:jar:3.13.0:compile\n        [INFO] +- org.apache.commons:commons-math3:jar:3.5:compile\n        [INFO] +- org.apache.commons:commons-exec:jar:1.3:compile\n        [INFO] +- org.apache.commons:commons-text:jar:1.12.0:compile\n        [INFO] +- org.apache.commons:commons-collections4:jar:4.2:compile\n        [INFO] \\- junit:junit:jar:4.12:test\n        [INFO]    \\- org.hamcrest:hamcrest-core:jar:1.3:test\n    -->\n\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-one</artifactId>\n        <version>3.11.0</version>\n    </parent>\n\n    <groupId>${project.parent.groupId}</groupId>\n    <artifactId>child-two</artifactId>\n    <version>2.1.90</version>\n    <packaging>jar</packaging>\n\n    <properties>\n        <commons.collections4.version>4.2</commons.collections4.version>\n        <commons.junit.version>4.12</commons.junit.version>\n        <project.parent.groupId>my.other.org</project.parent.groupId>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-math${project.parent.version}</artifactId>\n            <version>3.5</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-exec</artifactId>\n            <version>1.${commons-exec_subversion}</version>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/my/org/circular/1.2.3/circular-1.2.3.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <artifactId>circular</artifactId>\n  <version>1.2.3</version>\n\n  <parent>\n    <groupId>my.org</groupId>\n    <artifactId>circular</artifactId>\n    <version>1.2.3</version>\n  </parent>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/my/org/parent-one/3.11.0/parent-one-3.11.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>my.org</groupId>\n        <artifactId>parent-two</artifactId>\n        <version>13.7.8</version>\n    </parent>\n\n    <groupId>my.org</groupId>\n    <artifactId>parent-one</artifactId>\n    <version>3.11.0</version>\n    <packaging>pom</packaging>\n\n    <properties>\n        <!-- maven resolves project.parent.version from the _child_ project root context -->\n        <commons.lang3.version>3.1${project.parent.version}.0</commons.lang3.version>\n        <commons.collections4.version>4.3</commons.collections4.version>\n    </properties>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>${commons.lang3.version}</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-text</artifactId>\n            <version>${commons.text.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n            <version>${commons.collections4.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${commons.junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/my/org/parent-two/13.7.8/parent-two-13.7.8.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>my.org</groupId>\n    <artifactId>parent-two</artifactId>\n    <version>13.7.8</version>\n    <packaging>pom</packaging>\n\n    <licenses>\n        <license>\n            <name>Eclipse Public License v2.0</name>\n            <url>https://www.eclipse.org/legal/epl-v20.html</url>\n        </license>\n    </licenses>\n\n    <properties>\n        <commons.lang3.version>3.14.0</commons.lang3.version>\n        <commons.collections4.version>4.4</commons.collections4.version>\n        <commons.text.version>1.12.0</commons.text.version>\n        <commons.junit.version>4.13.2</commons.junit.version>\n        <commons-exec_subversion>3</commons-exec_subversion>\n        <project.one>1</project.one>\n    </properties>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>${commons.lang3.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-text</artifactId>\n                <version>${commons.text.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>junit</groupId>\n                <artifactId>junit</artifactId>\n                <version>${commons.junit.version}</version>\n                <scope>test</scope>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-text</artifactId>\n            <version>${commons.text.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n            <version>${commons.collections4.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${commons.junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/net/shibboleth/parent/7.11.2/parent-7.11.2.pom",
    "content": "<?xml version=\"1.0\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>net.shibboleth</groupId>\n    <artifactId>parent</artifactId>\n    <version>7.11.2</version>\n    <packaging>pom</packaging>\n\n    <name>Shibboleth Project V3 Super POM</name>\n    <description>\n        A POM containing properties, profiles, plugin configurations, etc. that are common across all Shibboleth V3 projects.\n    </description>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <maven.compiler.source>1.7</maven.compiler.source>\n        <maven.compiler.target>1.7</maven.compiler.target>\n\n        <bouncycastle.version>1.59</bouncycastle.version>\n        <cryptacular.version>1.1.4</cryptacular.version>\n        <!-- IMPORTANT: httpclient and httpcore versions need to be updated together.  -->\n        <httpclient.groupId>org.apache.httpcomponents</httpclient.groupId>\n        <httpclient.version>4.5.13</httpclient.version>\n        <httpclient.httpcore.version>4.4.14</httpclient.httpcore.version>\n        <guava.version>20.0</guava.version>\n        <jetty.groupId>org.eclipse.jetty</jetty.groupId>\n        <jetty.version>9.2.14.v20151106</jetty.version>\n        <ldaptive.version>1.0.13</ldaptive.version>\n        <logback.version>1.2.3</logback.version>\n        <metrics.version>3.1.5</metrics.version>\n        <jackson.version>2.10.4</jackson.version>\n        <slf4j.groupId>org.slf4j</slf4j.groupId>\n        <slf4j.version>1.7.30</slf4j.version>\n        <spring.groupId>org.springframework</spring.groupId>\n        <spring.version>4.3.30.RELEASE</spring.version>\n        <spring-webflow.groupId>org.springframework.webflow</spring-webflow.groupId>\n        <spring-webflow.version>2.4.8.RELEASE</spring-webflow.version>\n        <xmlsec.version>2.0.10</xmlsec.version>\n        <xmlunit.version>2.5.1</xmlunit.version>\n\n        <checkstyle.version>8.26</checkstyle.version>\n        <checkstyle-plugin.version>3.1.0</checkstyle-plugin.version>\n        <checkstyle.configLocation>checkstyle.xml</checkstyle.configLocation>\n\n        <maven-javadoc-plugin.version>3.0.0</maven-javadoc-plugin.version>\n\n        <maven.central.url>https://repo1.maven.org/maven2</maven.central.url>\n        <shibboleth.site.url>https://build.shibboleth.net/nexus/content/sites/site/</shibboleth.site.url>\n\n        <shibboleth.scm.connection>scm:git:https://git.shibboleth.net/git/</shibboleth.scm.connection>\n        <shibboleth.scm.developerConnection>scm:git:git@git.shibboleth.net:</shibboleth.scm.developerConnection>\n        <shibboleth.scm.url>https://git.shibboleth.net/view/?p=</shibboleth.scm.url>\n\n    </properties>\n\n    <!-- The Maven version prerequisite applies to the maven-versions-plugin:display-plugin-updates goal only. -->\n    <prerequisites>\n        <maven>3.3.1</maven>\n    </prerequisites>\n\n    <!-- Dependencies set for all projects. Be certain anything added here really should apply to every single project. -->\n    <dependencies>\n    </dependencies>\n\n    <!-- Dependencies with fixed versions and excludes that may be used by projects. -->\n    <dependencyManagement>\n    </dependencyManagement>\n\n    <distributionManagement>\n    </distributionManagement>\n\n    <build>\n    </build>\n\n    <reporting>\n    </reporting>\n\n    <profiles>\n    </profiles>\n\n\n    <!-- Project Metadata -->\n    <url>http://shibboleth.net/</url>\n\n    <inceptionYear>1999</inceptionYear>\n\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n\n    <mailingLists>\n\n    </mailingLists>\n\n    <issueManagement>\n    </issueManagement>\n\n    <scm>\n        <connection>${shibboleth.scm.connection}java-parent-project-v3</connection>\n        <developerConnection>${shibboleth.scm.developerConnection}java-parent-project-v3</developerConnection>\n        <url>${shibboleth.scm.url}java-parent-project-v3.git</url>\n    </scm>\n\n    <developers>\n    </developers>\n\n    <contributors>\n    </contributors>\n\n    <organization>\n    </organization>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/org/apache/commons/commons-parent/54/commons-parent-54.pom",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<!--\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements... http://www.apache.org/licenses/LICENSE-2.0\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache</groupId>\n    <artifactId>apache</artifactId>\n    <version>27</version>\n  </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-parent</artifactId>\n  <version>54</version>\n  <packaging>pom</packaging>\n  <name>Apache Commons Parent</name>\n  <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description>\n  <inceptionYear>2006</inceptionYear>\n  <url>https://commons.apache.org/commons-parent-pom.html</url>\n\n  <properties>\n    <minimalMavenBuildVersion>3.3.9</minimalMavenBuildVersion>\n    <commons.release.version>${project.version}</commons.release.version>\n    <commons.release.isDistModule>true</commons.release.isDistModule>\n    <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>    \n    <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>\n\n    <maven.compiler.source>1.3</maven.compiler.source>\n    <maven.compiler.target>1.3</maven.compiler.target>\n    <commons.compiler.fork>false</commons.compiler.fork>\n    <commons.compiler.compilerVersion />\n    <commons.compiler.javac />\n    <commons.compiler.javadoc />\n\n    <commons.animal-sniffer.version>1.22</commons.animal-sniffer.version>\n    <commons.animal-sniffer.signature.version>1.0</commons.animal-sniffer.signature.version>\n    <commons.assembly-plugin.version>3.4.2</commons.assembly-plugin.version>\n    <commons.build-helper.version>3.3.0</commons.build-helper.version>\n    <commons.build-plugin.version>1.12</commons.build-plugin.version>\n    <commons.changes.version>2.12.1</commons.changes.version>\n    <commons.checkstyle-plugin.version>3.2.0</commons.checkstyle-plugin.version>\n    <commons.checkstyle.version>9.3</commons.checkstyle.version>\n    <commons.cobertura.version>2.7</commons.cobertura.version>\n    <commons.compiler.version>3.10.1</commons.compiler.version>\n    <commons.coveralls.version>4.3.0</commons.coveralls.version>\n    <commons.coveralls.timestampFormat>EpochMillis</commons.coveralls.timestampFormat>\n    <commons.cyclonedx.version>2.7.1</commons.cyclonedx.version>\n    <commons.spdx.version>0.5.5</commons.spdx.version>\n    <commons.junit.version>5.9.0</commons.junit.version>\n\n    <commons.site-plugin.version>3.12.1</commons.site-plugin.version>\n    <commons.source-plugin.version>3.2.1</commons.source-plugin.version>\n    <commons.spotbugs.plugin.version>4.7.2.0</commons.spotbugs.plugin.version>\n    <commons.wagon-ssh.version>3.5.2</commons.wagon-ssh.version>\n\n    <!-- Default values for the download-page generation by commons-build-plugin -->\n    <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name>\n    <commons.release.desc />\n    <commons.binary.suffix>-bin</commons.binary.suffix>\n    <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name>\n    <commons.release.2.desc />\n    <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix>\n    <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name>\n    <commons.release.3.desc />\n    <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix>\n    <commons.release.4.desc />\n    <commons.release.4.binary.suffix>-bin</commons.release.4.binary.suffix>\n\n    <!-- Default values for the jacoco-maven-plugin reports -->\n    <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio>\n    <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio>\n    <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio>\n    <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio>\n    <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio>\n    <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio>\n    <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure>\n\n    <commons.componentid>${project.artifactId}</commons.componentid>\n\n    <commons.packageId>${project.artifactId}</commons.packageId>\n\n    <!-- Configuration properties for the OSGi maven-bundle-plugin -->\n    <commons.osgi.symbolicName>org.apache.commons.${commons.packageId}</commons.osgi.symbolicName>\n    <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>\n    <commons.osgi.import>*</commons.osgi.import>\n    <commons.osgi.dynamicImport />\n    <commons.osgi.private />\n    <commons.osgi.excludeDependencies>true</commons.osgi.excludeDependencies>\n\n    <!-- location of any manifest file used by maven-jar-plugin -->\n    <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile>\n\n    <commons.deployment.protocol>scp</commons.deployment.protocol>\n\n    <commons.encoding>iso-8859-1</commons.encoding>\n    <commons.docEncoding>${commons.encoding}</commons.docEncoding>\n    <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding>\n    <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding>\n    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format>\n    <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build>\n  </properties>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit</groupId>\n        <artifactId>junit-bom</artifactId>\n        <version>${commons.junit.version}</version>\n        <type>pom</type>\n        <scope>import</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <profiles>\n    <profile>\n      <id>site-basic</id>\n      <properties>\n        <skipTests>true</skipTests>\n        <maven.javadoc.skip>true</maven.javadoc.skip>\n        <cobertura.skip>true</cobertura.skip>\n        <spotbugs.skip>true</spotbugs.skip>\n        <checkstyle.skip>true</checkstyle.skip>\n        <rat.skip>true</rat.skip> <!-- from version 0.12 -->\n        <jacoco.skip>true</jacoco.skip>\n        <skipSurefireReport>true</skipSurefireReport>\n      </properties>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/org/junit/junit-bom/5.9.0/junit-bom-5.9.0.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.junit</groupId>\n  <artifactId>junit-bom</artifactId>\n  <version>5.9.0</version>\n  <packaging>pom</packaging>\n  <licenses>\n    <license>\n      <name>Eclipse Public License v2.0</name>\n      <url>https://www.eclipse.org/legal/epl-v20.html</url>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>bechte</id>\n      <name>Stefan Bechtold</name>\n      <email>stefan.bechtold@me.com</email>\n    </developer>\n    <developer>\n      <id>jlink</id>\n      <name>Johannes Link</name>\n      <email>business@johanneslink.net</email>\n    </developer>\n    <developer>\n      <id>marcphilipp</id>\n      <name>Marc Philipp</name>\n      <email>mail@marcphilipp.de</email>\n    </developer>\n    <developer>\n      <id>mmerdes</id>\n      <name>Matthias Merdes</name>\n      <email>matthias.merdes@heidelpay.com</email>\n    </developer>\n    <developer>\n      <id>sbrannen</id>\n      <name>Sam Brannen</name>\n      <email>sam@sambrannen.com</email>\n    </developer>\n    <developer>\n      <id>sormuras</id>\n      <name>Christian Stein</name>\n      <email>sormuras@gmail.com</email>\n    </developer>\n    <developer>\n      <id>juliette-derancourt</id>\n      <name>Juliette de Rancourt</name>\n      <email>derancourt.juliette@gmail.com</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/junit-team/junit5.git</connection>\n    <developerConnection>scm:git:git://github.com/junit-team/junit5.git</developerConnection>\n    <url>https://github.com/junit-team/junit5</url>\n  </scm>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-api</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-engine</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-migrationsupport</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-params</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-commons</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-console</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-engine</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-jfr</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-launcher</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-reporting</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-runner</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-api</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-commons</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-engine</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-testkit</artifactId>\n        <version>1.9.0</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.vintage</groupId>\n        <artifactId>junit-vintage-engine</artifactId>\n        <version>5.9.0</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/org/junit/junit-bom/5.9.1/junit-bom-5.9.1.pom",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>org.junit</groupId>\n  <artifactId>junit-bom</artifactId>\n  <version>5.9.1</version>\n  <packaging>pom</packaging>\n  <name>JUnit 5 (Bill of Materials)</name>\n  <licenses>\n    <license>\n      <name>Eclipse Public License v2.0</name>\n      <url>https://www.eclipse.org/legal/epl-v20.html</url>\n    </license>\n  </licenses>\n  <developers>\n    <developer>\n      <id>bechte</id>\n      <name>Stefan Bechtold</name>\n      <email>stefan.bechtold@me.com</email>\n    </developer>\n    <developer>\n      <id>jlink</id>\n      <name>Johannes Link</name>\n      <email>business@johanneslink.net</email>\n    </developer>\n    <developer>\n      <id>marcphilipp</id>\n      <name>Marc Philipp</name>\n      <email>mail@marcphilipp.de</email>\n    </developer>\n    <developer>\n      <id>mmerdes</id>\n      <name>Matthias Merdes</name>\n      <email>matthias.merdes@heidelpay.com</email>\n    </developer>\n    <developer>\n      <id>sbrannen</id>\n      <name>Sam Brannen</name>\n      <email>sam@sambrannen.com</email>\n    </developer>\n    <developer>\n      <id>sormuras</id>\n      <name>Christian Stein</name>\n      <email>sormuras@gmail.com</email>\n    </developer>\n    <developer>\n      <id>juliette-derancourt</id>\n      <name>Juliette de Rancourt</name>\n      <email>derancourt.juliette@gmail.com</email>\n    </developer>\n  </developers>\n  <scm>\n    <connection>scm:git:git://github.com/junit-team/junit5.git</connection>\n    <developerConnection>scm:git:git://github.com/junit-team/junit5.git</developerConnection>\n    <url>https://github.com/junit-team/junit5</url>\n  </scm>\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-api</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-engine</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-migrationsupport</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter-params</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-commons</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-console</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-engine</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-jfr</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-launcher</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-reporting</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-runner</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-api</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-commons</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-suite-engine</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.platform</groupId>\n        <artifactId>junit-platform-testkit</artifactId>\n        <version>1.9.1</version>\n      </dependency>\n      <dependency>\n        <groupId>org.junit.vintage</groupId>\n        <artifactId>junit-vintage-engine</artifactId>\n        <version>5.9.1</version>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/maven-repo/org/opensaml/opensaml-parent/3.4.6/opensaml-parent-3.4.6.pom",
    "content": "<?xml version=\"1.0\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>net.shibboleth</groupId>\n        <artifactId>parent</artifactId>\n        <version>7.11.2</version>\n    </parent>\n\n    <name>OpenSAML</name>\n    <description>\n        A library for creating, reading, writing and performing some processing of SAML messages.\n\n        For further information see https://wiki.shibboleth.net/confluence/display/OS30/Home\n    </description>\n\n    <groupId>org.opensaml</groupId>\n    <artifactId>opensaml-parent</artifactId>\n    <version>3.4.6</version>\n    <packaging>pom</packaging>\n\n    <modules>\n        <module>../opensaml-core</module>\n        <module>../opensaml-storage-api</module>\n        <module>../opensaml-security-api</module>\n        <module>../opensaml-xmlsec-api</module>\n        <module>../opensaml-messaging-api</module>\n        <module>../opensaml-soap-api</module>\n        <module>../opensaml-saml-api</module>\n        <module>../opensaml-xacml-api</module>\n        <module>../opensaml-xacml-saml-api</module>\n\n        <module>../opensaml-storage-impl</module>\n        <module>../opensaml-security-impl</module>\n        <module>../opensaml-xmlsec-impl</module>\n        <module>../opensaml-messaging-impl</module>\n        <module>../opensaml-soap-impl</module>\n        <module>../opensaml-saml-impl</module>\n        <module>../opensaml-xacml-impl</module>\n        <module>../opensaml-xacml-saml-impl</module>\n        <module>../opensaml-profile-api</module>\n        <module>../opensaml-profile-impl</module>\n\n        <module>../opensaml-bom</module>\n        <module>../opensaml-tests-bom</module>\n    </modules>\n\n    <properties>\n        <java-support.version>7.5.2</java-support.version>\n        <spring-extensions.version>5.4.2</spring-extensions.version>\n        <checkstyle.configLocation>${project.basedir}/../opensaml-parent/resources/checkstyle/checkstyle.xml</checkstyle.configLocation>\n        <opensaml-parent.site.url>${shibboleth.site.url}java-opensaml/${project.version}/</opensaml-parent.site.url>\n        <opensaml-module.site.url>${opensaml-parent.site.url}${project.artifactId}</opensaml-module.site.url>\n    </properties>\n\n\n\n    <!-- Dependencies which are required by every single project module should go here and will be inherited by all modules. -->\n    <dependencies>\n        <!-- Compile Dependencies -->\n        <dependency>\n            <groupId>net.shibboleth.utilities</groupId>\n            <artifactId>java-support</artifactId>\n            <version>${java-support.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>commons-codec</groupId>\n            <artifactId>commons-codec</artifactId>\n        </dependency>\n\n        <!-- Provided Dependencies -->\n\n        <!-- Runtime Dependencies -->\n\n        <!-- Test Dependencies -->\n        <dependency>\n            <groupId>net.shibboleth.utilities</groupId>\n            <artifactId>java-support</artifactId>\n            <version>${java-support.version}</version>\n            <type>test-jar</type>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.xmlunit</groupId>\n            <artifactId>xmlunit-legacy</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n    </dependencies>\n\n    <!-- Dependencies which are not required by every project module but for which every module should use the same version\n        of the dependency should go here. That is to say, placing a dependency here allows one to \"peg\" the version of the artifact\n        used by all project modules. -->\n    <dependencyManagement>\n        <dependencies>\n            <!-- Compile Dependencies -->\n          <dependency>\n              <groupId>javax.xml.bind</groupId>\n              <artifactId>jaxb-api</artifactId>\n              <version>2.3.1</version>\n          </dependency>\n          <dependency>\n              <groupId>org.hibernate</groupId>\n              <artifactId>hibernate-entitymanager</artifactId>\n              <version>4.3.5.Final</version>\n              <exclusions>\n                  <exclusion>\n                      <groupId>xml-apis</groupId>\n                      <artifactId>xml-apis</artifactId>\n                  </exclusion>\n              </exclusions>\n          </dependency>\n          <dependency>\n              <groupId>org.hibernate.javax.persistence</groupId>\n              <artifactId>hibernate-jpa-2.1-api</artifactId>\n              <version>1.0.0.Final</version>\n          </dependency>\n          <dependency>\n              <groupId>net.spy</groupId>\n              <artifactId>spymemcached</artifactId>\n              <version>2.12.3</version>\n          </dependency>\n\n            <!-- Provided Dependencies -->\n\n            <!-- Runtime Dependencies -->\n\n            <!-- Test Dependencies -->\n          <dependency>\n              <groupId>net.shibboleth.ext</groupId>\n              <artifactId>spring-extensions</artifactId>\n              <version>${spring-extensions.version}</version>\n              <scope>test</scope>\n          </dependency>\n\n        </dependencies>\n    </dependencyManagement>\n\n    <scm>\n        <connection>${shibboleth.scm.connection}java-opensaml</connection>\n        <developerConnection>${shibboleth.scm.developerConnection}java-opensaml</developerConnection>\n        <url>${shibboleth.scm.url}java-opensaml.git</url>\n    </scm>\n\n    <distributionManagement>\n        <site>\n            <id>site</id>\n            <url>dav:${opensaml-parent.site.url}</url>\n        </site>\n    </distributionManagement>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>attach-descriptor</id>\n                        <goals>\n                            <goal>attach-descriptor</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <siteDirectory>../opensaml-parent/src/site</siteDirectory>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <configuration>\n                    <archive>\n                        <manifestEntries>\n                            <Automatic-Module-Name>${automatic.module.name}</Automatic-Module-Name>\n                        </manifestEntries>\n                    </archive>\n                </configuration>\n             </plugin>\n        </plugins>\n    </build>\n\n</project>"
  },
  {
    "path": "syft/pkg/cataloger/java/internal/maven/testdata/undeclared-iso-8859-encoded-pom.xml.base64",
    "content": "PHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvbWF2ZW4tdjRfMF8wLnhzZCI+DQogICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KDQogICAgPG5hbWU+Q2FtZWxlb240SmF2YSAtIENvbnRlbnRTREs8L25hbWU+DQoNCiAgICA8Z3JvdXBJZD5jb20uYWxvZ2llbnQuY2FtZWxlb24uamF2YS5zZGs8L2dyb3VwSWQ+DQogICAgPGFydGlmYWN0SWQ+Y2FtZWxlb240amF2YS1zZGs8L2FydGlmYWN0SWQ+DQoNCiAgICA8dmVyc2lvbj4xLjEyLjI8L3ZlcnNpb24+DQoNCiAgICA8cGFja2FnaW5nPmphcjwvcGFja2FnaW5nPg0KDQogICAgPHNjbT4NCiAgICAgICAgPGNvbm5lY3Rpb24+c2NtOmdpdDpzc2g6Ly9naXRAZ2l0aHViLmNvbS9BbG9naWVudC9DT1M1LVNESy5naXQ8L2Nvbm5lY3Rpb24+DQogICAgICAgIDxkZXZlbG9wZXJDb25uZWN0aW9uPnNjbTpnaXQ6c3NoOi8vZ2l0QGdpdGh1Yi5jb20vQWxvZ2llbnQvQ09TNS1TREsuZ2l0PC9kZXZlbG9wZXJDb25uZWN0aW9uPg0KICAgICAgICA8dXJsPmdpdEBnaXRodWIuY29tOkFsb2dpZW50L0NPUzUtU0RLLmdpdDwvdXJsPg0KICAgIDwvc2NtPg0KDQogICAgPGRlc2NyaXB0aW9uPkNhbWVsZW9uIGlzIGEgQ01TIGRlZGljYXRlZCB0byBkZXZlbG9wZXJzIGFzIHdlbGwgYXMgbm9uLUlUIGNvbnRyaWJ1dG9ycy48L2Rlc2NyaXB0aW9uPg0KICAgIA0KICAgIDxvcmdhbml6YXRpb24+DQogICAgICAgIDxuYW1lPkFsb2dpZW50PC9uYW1lPg0KICAgICAgICA8dXJsPmh0dHA6Ly93d3cuYWxvZ2llbnQuY29tPC91cmw+DQogICAgPC9vcmdhbml6YXRpb24+DQoNCiAgICA8dXJsPmh0dHA6Ly93d3cuY2FtZWxlb25jbXMuY29tPC91cmw+DQoNCiAgICA8ZGV2ZWxvcGVycz4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5hbW9yaW48L2lkPg0KICAgICAgICAgICAgPG5hbWU+QXJuYXVkIE1vcmluPC9uYW1lPg0KICAgICAgICAgICAgPGVtYWlsPmFtb3JpbkBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5hbG9yZDwvaWQ+DQogICAgICAgICAgICA8bmFtZT5BbGV4YW5kcmUgTG9yZDwvbmFtZT4NCiAgICAgICAgICAgIDxlbWFpbD5hbG9yZEBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5kam9tcGhlPC9pZD4NCiAgICAgICAgICAgIDxuYW1lPkRhbmllbCBKb21waGU8L25hbWU+DQogICAgICAgICAgICA8ZW1haWw+ZGpvbXBoZUBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5qbWlyYzwvaWQ+DQogICAgICAgICAgICA8bmFtZT5K6XL0bWUgTWlyYzwvbmFtZT4NCiAgICAgICAgICAgIDxlbWFpbD5qbWlyY0BhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICAgICAgPGRldmVsb3Blcj4NCiAgICAgICAgICAgIDxpZD5wbHZlaWxsZXV4PC9pZD4NCiAgICAgICAgICAgIDxuYW1lPlBpZXJyZS1MdWMgVmVpbGxldXg8L25hbWU+DQogICAgICAgICAgICA8ZW1haWw+cGx2ZWlsbGV1eEBhbG9naWVudC5jb208L2VtYWlsPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvbj5BbG9naWVudDwvb3JnYW5pemF0aW9uPg0KICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd3d3LmFsb2dpZW50LmNvbTwvb3JnYW5pemF0aW9uVXJsPg0KICAgICAgICA8L2RldmVsb3Blcj4NCiAgICA8L2RldmVsb3BlcnM+DQoNCg0KICAgIDxsaWNlbnNlcz4NCiAgICAgICAgPGxpY2Vuc2U+DQogICAgICAgICAgICA8bmFtZT5UaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9uYW1lPg0KICAgICAgICAgICAgPHVybD5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAudHh0PC91cmw+DQogICAgICAgICAgICA8ZGlzdHJpYnV0aW9uPnJlcG88L2Rpc3RyaWJ1dGlvbj4NCiAgICAgICAgPC9saWNlbnNlPg0KICAgIDwvbGljZW5zZXM+DQoNCiAgICA8YnVpbGQ+DQoNCiAgICAgICAgPHJlc291cmNlcz4NCiAgICAgICAgICAgIDxyZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvbWFpbi9yZXNvdXJjZXM8L2RpcmVjdG9yeT4NCiAgICAgICAgICAgIDwvcmVzb3VyY2U+DQogICAgICAgICAgICA8cmVzb3VyY2U+DQogICAgICAgICAgICAgICAgPGZpbHRlcmluZz5mYWxzZTwvZmlsdGVyaW5nPg0KICAgICAgICAgICAgICAgIDxkaXJlY3Rvcnk+c3JjL21haW4vamF2YTwvZGlyZWN0b3J5Pg0KICAgICAgICAgICAgICAgIDxpbmNsdWRlcz4NCiAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+Kio8L2luY2x1ZGU+DQogICAgICAgICAgICAgICAgPC9pbmNsdWRlcz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVkZXM+DQogICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPioqLyouamF2YTwvZXhjbHVkZT4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1ZGVzPg0KICAgICAgICAgICAgPC9yZXNvdXJjZT4NCiAgICAgICAgPC9yZXNvdXJjZXM+DQogICAgICAgIDx0ZXN0UmVzb3VyY2VzPg0KICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvdGVzdC9yZXNvdXJjZXM8L2RpcmVjdG9yeT4NCiAgICAgICAgICAgIDwvdGVzdFJlc291cmNlPg0KICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4NCiAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPmZhbHNlPC9maWx0ZXJpbmc+DQogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvdGVzdC9qYXZhPC9kaXJlY3Rvcnk+DQogICAgICAgICAgICAgICAgPGluY2x1ZGVzPg0KICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKjwvaW5jbHVkZT4NCiAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPg0KICAgICAgICAgICAgICAgIDxleGNsdWRlcz4NCiAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKi5qYXZhPC9leGNsdWRlPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVkZXM+DQogICAgICAgICAgICA8L3Rlc3RSZXNvdXJjZT4NCiAgICAgICAgPC90ZXN0UmVzb3VyY2VzPg0KDQogICAgICAgIDxwbHVnaW5zPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIuMy4yPC92ZXJzaW9uPg0KICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8c291cmNlPjEuNjwvc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8dGFyZ2V0PjEuNjwvdGFyZ2V0Pg0KICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4NCiAgICAgICAgICAgIDwvcGx1Z2luPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tc291cmNlLXBsdWdpbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjEuMjwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5hdHRhY2gtc291cmNlczwvaWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5qYXI8L2dvYWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPg0KICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+DQogICAgICAgICAgICA8L3BsdWdpbj4NCiAgICAgICAgICAgIDxwbHVnaW4+DQogICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWphdmFkb2MtcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIuNzwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5hdHRhY2gtamF2YWRvY3M8L2lkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmphcjwvZ29hbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+DQogICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPg0KICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCiAgICAgICAgICAgIDwvcGx1Z2luPg0KICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tcmVsZWFzZS1wbHVnaW48L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgPHZlcnNpb24+Mi4xPC92ZXJzaW9uPg0KICAgICAgICAgICAgPC9wbHVnaW4+DQoJCQkJICAgIDxwbHVnaW4+DQogICAgICAJCQkJICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQogICAgICAgIAkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1yZXBvc2l0b3J5LXBsdWdpbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgCQkJCTx2ZXJzaW9uPjIuMy4xPC92ZXJzaW9uPg0KICAgICAgCQkJPC9wbHVnaW4+DQogICAgICAgICAgICA8cGx1Z2luPg0KICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1ncGctcGx1Z2luPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEuMTwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5zaWduLWFydGlmYWN0czwvaWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dmVyaWZ5PC9waGFzZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5zaWduPC9nb2FsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+DQogICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPg0KICAgICAgICAgICAgPC9wbHVnaW4+DQogICAgICAJIDwvcGx1Z2lucz4NCiAgICA8L2J1aWxkPg0KDQogICAgPGRlcGVuZGVuY2llcz4NCg0KICAgICAgICA8IS0tIFNQUklORyBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1jb3JlPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4wLjQuUkVMRUFTRTwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxleGNsdXNpb25zPg0KICAgICAgICAgICAgICAgIDxleGNsdXNpb24+DQogICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy13ZWI8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuNC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1vcm08L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuNC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1hc3BlY3RzPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4wLjQuUkVMRUFTRTwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcms8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5zcHJpbmctZXhwcmVzc2lvbjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjMuMC40LlJFTEVBU0U8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLnNlY3VyaXR5PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nLXNlY3VyaXR5LWNvcmU8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5zZWN1cml0eTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1zZWN1cml0eS1jb25maWc8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5zZWN1cml0eTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1zZWN1cml0eS13ZWI8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4zLjAuMy5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb20uc3ByaW5nc291cmNlLmluc2lnaHQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5pbnNpZ2h0LWFubm90YXRpb248L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjAuMC5SRUxFQVNFPC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gU0VSVkxFVCBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+amF2YXguc2VydmxldDwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPnNlcnZsZXQtYXBpPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi41PC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gTE9HR0lORyBERVBFTkRFTkNJRVMgLSBMT0c0SiAtLT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jaC5xb3MubG9nYmFjazwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZ2JhY2stY2xhc3NpYzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjAuOS4yNjwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gQVBBQ0hFIENPTU1PTlMgREVQRU5ERU5DSUVTIC0tPg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi4wPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sYW5nPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1sYW5nPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+Mi41PC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1lbWFpbDwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuMjwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtYmVhbnV0aWxzPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1iZWFudXRpbHM8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjguMzwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxleGNsdXNpb25zPg0KICAgICAgICAgICAgICAgIDxleGNsdXNpb24+DQogICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jb2RlYzwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29kZWM8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjQ8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbmZpZ3VyYXRpb248L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvbmZpZ3VyYXRpb248L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjY8L3ZlcnNpb24+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCg0KICAgICAgICA8IS0tIEhJQkVSTkFURSBERVBFTkRFTkNJRVMgLS0+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmhpYmVybmF0ZTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmhpYmVybmF0ZS1jb3JlPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My42LjAuRmluYWw8L3ZlcnNpb24+DQogICAgICAgICAgICA8ZXhjbHVzaW9ucz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9ncm91cElkPg0KICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KICAgICAgICAgICAgPC9leGNsdXNpb25zPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+amF2YXNzaXN0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+amF2YXNzaXN0PC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+My4xMS4wLkdBPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+aHNxbGRiPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+aHNxbGRiPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS44LjAuMTA8L3ZlcnNpb24+DQogICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+DQogICAgICAgIDwvZGVwZW5kZW5jeT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5jb20ubWljcm9zb2Z0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3FsamRiYzwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjIuMDwvdmVyc2lvbj4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KDQogICAgICAgIDwhLS0gVU5JVCBURVNUSU5HIC0tPg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy51bml0aWxzPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+dW5pdGlsczwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjIuNDwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj40LjguMjwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5kYnVuaXQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5kYnVuaXQ8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4yLjQuODwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5tb2NraXRvPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+bW9ja2l0by1hbGw8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICA8dmVyc2lvbj4xLjguNTwvdmVyc2lvbj4NCiAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPnhtbHVuaXQ8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD54bWx1bml0PC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS4zPC92ZXJzaW9uPg0KICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICAgICAgPCEtLSBPVEhFUiAtLT4NCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnNvbHI8L2dyb3VwSWQ+DQogICAgICAgICAgICA8YXJ0aWZhY3RJZD5zb2xyLXNvbHJqPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+MS40LjE8L3ZlcnNpb24+DQogICAgICAgICAgICA8ZXhjbHVzaW9ucz4NCiAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPg0KICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4NCiAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4NCiAgICAgICAgPC9kZXBlbmRlbmN5Pg0KICAgICAgICA8ZGVwZW5kZW5jeT4NCiAgICAgICAgICAgIDxncm91cElkPm9yZy5jb3MuY29tbW9uPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29zLXZhbGlkYXRvcjwvYXJ0aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjEuMC4wPC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQogICAgICAgIDxkZXBlbmRlbmN5Pg0KICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4NCiAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPg0KICAgICAgICAgICAgPHZlcnNpb24+cjA3PC92ZXJzaW9uPg0KICAgICAgICA8L2RlcGVuZGVuY3k+DQoNCiAgICA8L2RlcGVuZGVuY2llcz4NCg0KICAgIDxwcm9maWxlcz4NCiAgICAgICAgPHByb2ZpbGU+DQogICAgICAgICAgICA8aWQ+anJlYmVsPC9pZD4NCiAgICAgICAgICAgIDxhY3RpdmF0aW9uPg0KICAgICAgICAgICAgICAgIDxhY3RpdmVCeURlZmF1bHQ+ZmFsc2U8L2FjdGl2ZUJ5RGVmYXVsdD4NCiAgICAgICAgICAgIDwvYWN0aXZhdGlvbj4NCiAgICAgICAgICAgIDxidWlsZD4NCiAgICAgICAgICAgICAgICA8cGx1Z2lucz4NCiAgICAgICAgICAgICAgICAgICAgPHBsdWdpbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy56ZXJvdHVybmFyb3VuZDwvZ3JvdXBJZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphdmFyZWJlbC1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xLjAuNTwvdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5nZW5lcmF0ZS1yZWJlbC14bWw8L2lkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+cHJvY2Vzcy1yZXNvdXJjZXM8L3BoYXNlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCiAgICAgICAgICAgICAgICAgICAgPC9wbHVnaW4+DQogICAgICAgICAgICAgICAgPC9wbHVnaW5zPg0KICAgICAgICAgICAgPC9idWlsZD4NCiAgICAgICAgICAgIDxwcm9wZXJ0aWVzPg0KICAgICAgICAgICAgICAgIDxqZXR0eS1zY2FuSW50ZXJ2YWxTZWNvbmRzPjA8L2pldHR5LXNjYW5JbnRlcnZhbFNlY29uZHM+DQogICAgICAgICAgICA8L3Byb3BlcnRpZXM+DQogICAgICAgIDwvcHJvZmlsZT4NCiAgICA8L3Byb2ZpbGVzPg0KPC9wcm9qZWN0Pg0K\n"
  },
  {
    "path": "syft/pkg/cataloger/java/package_url.go",
    "content": "package java\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/cpegenerate\"\n)\n\n// PackageURL returns the PURL for the specific java package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, version string, metadata pkg.JavaArchive) string {\n\tvar groupID = name\n\n\tif gID := groupIDFromJavaMetadata(name, metadata); gID != \"\" {\n\t\tgroupID = gID\n\t}\n\n\tpURL := packageurl.NewPackageURL(\n\t\tpackageurl.TypeMaven, // TODO: should we filter down by package types here?\n\t\tgroupID,\n\t\tname,\n\t\tversion,\n\t\tnil, // TODO: there are probably several qualifiers that can be specified here\n\t\t\"\")\n\treturn pURL.ToString()\n}\n\n// groupIDFromJavaMetadata returns the authoritative group ID for a Java package.\n// The order of precedence is:\n// 1. The group ID from the POM properties\n// 2. The group ID from the POM project\n// 3. The group ID from a select map of known group IDs\n// 4. The group ID from the Java manifest\nfunc groupIDFromJavaMetadata(pkgName string, metadata pkg.JavaArchive) (groupID string) {\n\tif groupID = groupIDFromPomProperties(metadata.PomProperties); groupID != \"\" {\n\t\treturn groupID\n\t}\n\n\tif groupID = groupIDFromPomProject(metadata.PomProject); groupID != \"\" {\n\t\treturn groupID\n\t}\n\n\tif groupID = groupIDFromKnownPackageList(pkgName); groupID != \"\" {\n\t\treturn groupID\n\t}\n\n\tif groupID = groupIDFromJavaManifest(metadata.Manifest); groupID != \"\" {\n\t\treturn groupID\n\t}\n\n\treturn groupID\n}\n\nfunc groupIDFromKnownPackageList(pkgName string) (groupID string) {\n\tif groupID, ok := cpegenerate.DefaultArtifactIDToGroupID[pkgName]; ok {\n\t\treturn groupID\n\t}\n\treturn groupID\n}\n\nfunc groupIDFromJavaManifest(manifest *pkg.JavaManifest) (groupID string) {\n\tif manifest == nil {\n\t\treturn groupID\n\t}\n\n\tgroupIDs := cpegenerate.GetManifestFieldGroupIDs(manifest, cpegenerate.PrimaryJavaManifestGroupIDFields)\n\t// assumes that primaryJavaManifestNameFields are ordered by priority\n\tif len(groupIDs) != 0 {\n\t\treturn groupIDs[0]\n\t}\n\n\tgroupIDs = cpegenerate.GetManifestFieldGroupIDs(manifest, cpegenerate.SecondaryJavaManifestGroupIDFields)\n\n\tif len(groupIDs) != 0 {\n\t\treturn groupIDs[0]\n\t}\n\n\treturn groupID\n}\n\nfunc groupIDFromPomProperties(properties *pkg.JavaPomProperties) (groupID string) {\n\tif properties == nil {\n\t\treturn groupID\n\t}\n\n\tif properties.GroupID != \"\" {\n\t\treturn cleanGroupID(properties.GroupID)\n\t}\n\n\t// sometimes the publisher puts the group ID in the artifact ID field unintentionally\n\tif looksLikeGroupID(properties.ArtifactID) {\n\t\t// there is a strong indication that the artifact ID is really a group ID\n\t\treturn cleanGroupID(properties.ArtifactID)\n\t}\n\n\treturn groupID\n}\n\nfunc groupIDFromPomProject(project *pkg.JavaPomProject) (groupID string) {\n\tif project == nil {\n\t\treturn groupID\n\t}\n\n\t// check the project details\n\tif project.GroupID != \"\" {\n\t\treturn cleanGroupID(project.GroupID)\n\t}\n\n\t// sometimes the publisher puts the group ID in the artifact ID field unintentionally\n\tif looksLikeGroupID(project.ArtifactID) {\n\t\t// there is a strong indication that the artifact ID is really a group ID\n\t\treturn cleanGroupID(project.ArtifactID)\n\t}\n\n\t// let's check the parent details\n\t// if the current project does not have a group ID, but the parent does, we'll use the parent's group ID\n\tif project.Parent != nil {\n\t\tif project.Parent.GroupID != \"\" {\n\t\t\treturn cleanGroupID(project.Parent.GroupID)\n\t\t}\n\n\t\t// sometimes the publisher puts the group ID in the artifact ID field unintentionally\n\t\tif looksLikeGroupID(project.Parent.ArtifactID) {\n\t\t\t// there is a strong indication that the artifact ID is really a group ID\n\t\t\treturn cleanGroupID(project.Parent.ArtifactID)\n\t\t}\n\t}\n\n\treturn groupID\n}\nfunc looksLikeGroupID(value string) bool {\n\treturn strings.Contains(value, \".\")\n}\n\nfunc cleanGroupID(groupID string) string {\n\treturn strings.TrimSpace(removeOSCIDirectives(groupID))\n}\n\nfunc removeOSCIDirectives(groupID string) string {\n\t// for example:\n\t// \t\torg.bar;uses:=“org.foo”\t\t-> \torg.bar\n\t// more about OSGI directives see https://spring.io/blog/2008/10/20/understanding-the-osgi-uses-directive/\n\treturn strings.Split(groupID, \";\")[0]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/package_url_test.go",
    "content": "package java\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tpkg    pkg.Package\n\t\texpect string\n\t}{\n\t\t{\n\t\t\tname: \"maven\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"example-java-app-maven\",\n\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.properties\",\n\t\t\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\tExtra:      make(map[string]string),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"pkg:maven/org.anchore/example-java-app-maven@0.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"POM properties have explicit group ID without . in it\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"example-java-app-maven\",\n\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.properties\",\n\t\t\t\t\t\tGroupID:    \"commons\",\n\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\tExtra:      make(map[string]string),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"pkg:maven/commons/example-java-app-maven@0.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"POM project has explicit group ID without . in it\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"example-java-app-maven\",\n\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.properties\",\n\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\tExtra:      make(map[string]string),\n\t\t\t\t\t},\n\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\tGroupID: \"commons\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"pkg:maven/commons/example-java-app-maven@0.1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"POM project has explicit group ID without . in it\",\n\t\t\tpkg: pkg.Package{\n\t\t\t\tName:     \"example-java-app-maven\",\n\t\t\t\tVersion:  \"0.1.0\",\n\t\t\t\tLanguage: pkg.Java,\n\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\tVirtualPath: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.jar\",\n\t\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\t\tPath:       \"META-INF/maven/org.anchore/example-java-app-maven/pom.properties\",\n\t\t\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\t\t\tExtra:      make(map[string]string),\n\t\t\t\t\t},\n\t\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\t\t\tGroupID: \"parent\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"pkg:maven/parent/example-java-app-maven@0.1.0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.expect, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expect, packageURL(tt.pkg.Name, tt.pkg.Version, tt.pkg.Metadata.(pkg.JavaArchive)))\n\t\t})\n\t}\n}\n\nfunc Test_groupIDFromJavaMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tpkgName  string\n\t\tmetadata pkg.JavaArchive\n\t\texpect   string\n\t}{\n\t\t{\n\t\t\tname: \"pom properties\",\n\t\t\tmetadata: pkg.JavaArchive{\n\t\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\t\tGroupID: \"org.anchore\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"org.anchore\",\n\t\t},\n\t\t{\n\t\t\tname: \"pom project\",\n\t\t\tmetadata: pkg.JavaArchive{\n\t\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\t\tGroupID: \"org.anchore\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"org.anchore\",\n\t\t},\n\t\t{\n\t\t\tname:     \"known package list\",\n\t\t\tpkgName:  \"ant-antlr\",\n\t\t\tmetadata: pkg.JavaArchive{},\n\t\t\texpect:   \"org.apache.ant\",\n\t\t},\n\t\t{\n\t\t\tname: \"java manifest\",\n\t\t\tmetadata: pkg.JavaArchive{\n\t\t\t\tManifest: &pkg.JavaManifest{\n\t\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Implementation-Vendor\",\n\t\t\t\t\t\t\tValue: \"org.anchore\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpect: \"org.anchore\",\n\t\t},\n\t\t{\n\t\t\tname:     \"no group id\",\n\t\t\tmetadata: pkg.JavaArchive{},\n\t\t\texpect:   \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.expect, groupIDFromJavaMetadata(tt.pkgName, tt.metadata))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_gradle_lockfile.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// lockfileDependency represents a single dependency in the gradle.lockfile file\ntype lockfileDependency struct {\n\tGroup   string\n\tName    string\n\tVersion string\n}\n\nfunc parseGradleLockfile(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\t// Create a new scanner to read the file\n\tscanner := bufio.NewScanner(reader)\n\n\t// Create slices to hold the dependencies and plugins\n\tdependencies := []lockfileDependency{}\n\n\t// Loop over all lines in the file\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\t// Trim leading and trailing whitespace from the line\n\t\tline = strings.TrimSpace(line)\n\n\t\tgroupNameVersion := line\n\t\tgroupNameVersion = strings.Split(groupNameVersion, \"=\")[0]\n\t\tparts := strings.Split(groupNameVersion, \":\")\n\n\t\t// we have a version directly specified\n\t\tif len(parts) == 3 {\n\t\t\t// Create a new Dependency struct and add it to the dependencies slice\n\t\t\tdep := lockfileDependency{Group: parts[0], Name: parts[1], Version: parts[2]}\n\t\t\tdependencies = append(dependencies, dep)\n\t\t}\n\t}\n\n\t// map the dependencies\n\tfor _, dep := range dependencies {\n\t\tarchive := pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tGroupID:    dep.Group,\n\t\t\t\tArtifactID: dep.Name,\n\t\t\t\tVersion:    dep.Version,\n\t\t\t\tName:       dep.Name,\n\t\t\t},\n\t\t}\n\n\t\tmappedPkg := pkg.Package{\n\t\t\tName:    dep.Name,\n\t\t\tVersion: dep.Version,\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t\tLanguage: pkg.Java,\n\t\t\tType:     pkg.JavaPkg,\n\t\t\tPURL:     packageURL(dep.Name, dep.Version, archive),\n\t\t\tMetadata: archive,\n\t\t}\n\t\tmappedPkg.SetID()\n\t\tpkgs = append(pkgs, mappedPkg)\n\t}\n\n\treturn pkgs, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_gradle_lockfile_test.go",
    "content": "package java\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parserGradleLockfile(t *testing.T) {\n\ttests := []struct {\n\t\tinput    string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tinput: \"testdata/gradle/gradle.lockfile\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"commons-text\",\n\t\t\t\t\tVersion:  \"1.8\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tPURL:     \"pkg:maven/org.apache.commons/commons-text@1.8\",\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{GroupID: \"org.apache.commons\", ArtifactID: \"commons-text\", Version: \"1.8\", Name: \"commons-text\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"hamcrest-core\",\n\t\t\t\t\tVersion:  \"1.3\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tPURL:     \"pkg:maven/org.hamcrest/hamcrest-core@1.3\",\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{GroupID: \"org.hamcrest\", ArtifactID: \"hamcrest-core\", Version: \"1.3\", Name: \"hamcrest-core\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"joda-time\",\n\t\t\t\t\tVersion:  \"2.2\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tPURL:     \"pkg:maven/joda-time/joda-time@2.2\",\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{GroupID: \"joda-time\", ArtifactID: \"joda-time\", Version: \"2.2\", Name: \"joda-time\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"junit\",\n\t\t\t\t\tVersion:  \"4.12\",\n\t\t\t\t\tLanguage: pkg.Java,\n\t\t\t\t\tType:     pkg.JavaPkg,\n\t\t\t\t\tPURL:     \"pkg:maven/junit/junit@4.12\",\n\t\t\t\t\tMetadata: pkg.JavaArchive{\n\t\t\t\t\t\tPomProject: &pkg.JavaPomProject{GroupID: \"junit\", ArtifactID: \"junit\", Version: \"4.12\", Name: \"junit\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.input, func(t *testing.T) {\n\t\t\tfor i := range test.expected {\n\t\t\t\ttest.expected[i].Locations.Add(file.NewLocation(test.input))\n\t\t\t}\n\t\t\tpkgtest.TestFileParser(t, test.input, parseGradleLockfile, test.expected, nil)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_java_manifest.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"unicode\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst manifestGlob = \"/META-INF/MANIFEST.MF\"\n\n// parseJavaManifest takes MANIFEST.MF file content and returns sections of parsed key/value pairs.\n// For more information: https://docs.oracle.com/en/java/javase/11/docs/specs/jar/jar.html#jar-manifest\n//\n//nolint:funlen\nfunc parseJavaManifest(path string, reader io.Reader) (*pkg.JavaManifest, error) {\n\tvar manifest pkg.JavaManifest\n\tsections := make([]pkg.KeyValues, 0)\n\n\tcurrentSection := func() int {\n\t\treturn len(sections) - 1\n\t}\n\n\tvar lastKey string\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\t// empty lines denote section separators\n\t\tif line == \"\" {\n\t\t\t// we don't want to allocate a new section map that won't necessarily be used, do that once there is\n\t\t\t// a non-empty line to process\n\n\t\t\t// do not process line continuations after this\n\t\t\tlastKey = \"\"\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif line[0] == ' ' {\n\t\t\t// this is a continuation\n\n\t\t\tif lastKey == \"\" {\n\t\t\t\tlog.Debugf(\"java manifest %q: found continuation with no previous key: %q\", path, line)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tlastSection := sections[currentSection()]\n\n\t\t\tsections[currentSection()][len(lastSection)-1].Value += strings.TrimSpace(line)\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// this is a new key-value pair\n\t\tidx := strings.Index(line, \":\")\n\t\tif idx == -1 {\n\t\t\tlog.Debugf(\"java manifest %q: unable to split java manifest key-value pairs: %q\", path, line)\n\t\t\tcontinue\n\t\t}\n\n\t\tkey := strings.TrimSpace(line[0:idx])\n\t\tvalue := strings.TrimSpace(line[idx+1:])\n\n\t\tif key == \"\" {\n\t\t\t// don't attempt to add new keys or sections unless there is a non-empty key\n\t\t\tcontinue\n\t\t}\n\n\t\tif lastKey == \"\" {\n\t\t\t// we're entering a new section\n\t\t\tsections = append(sections, make(pkg.KeyValues, 0))\n\t\t}\n\n\t\tsections[currentSection()] = append(sections[currentSection()], pkg.KeyValue{\n\t\t\tKey:   key,\n\t\t\tValue: value,\n\t\t})\n\n\t\t// keep track of key for potential future continuations\n\t\tlastKey = key\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read java manifest: %w\", err)\n\t}\n\n\tif len(sections) > 0 {\n\t\tmanifest.Main = sections[0]\n\t\tif len(sections) > 1 {\n\t\t\tmanifest.Sections = sections[1:]\n\t\t}\n\t}\n\n\treturn &manifest, nil\n}\n\nfunc extractNameFromApacheMavenBundlePlugin(manifest *pkg.JavaManifest) string {\n\t// special case: from https://svn.apache.org/repos/asf/felix/releases/maven-bundle-plugin-1.2.0/doc/maven-bundle-plugin-bnd.html\n\t// \"<Bundle-SymbolicName> is assumed to be \"${groupId}.${artifactId}\".\"\n\t//\n\t// documentation from https://felix.apache.org/documentation/subprojects/apache-felix-maven-bundle-plugin-bnd.html\n\t// agrees this is the default behavior:\n\t//\n\t// - [1] if artifact.getFile is not null and the jar contains a OSGi Manifest with Bundle-SymbolicName property then that value is returned\n\t//\n\t// - [2] if groupId has only one section (no dots) and artifact.getFile is not null then the first package name with classes\n\t//   is returned. eg. commons-logging:commons-logging -> org.apache.commons.logging\n\t//\n\t// - [3] if artifactId is equal to last section of groupId then groupId is returned. eg. org.apache.maven:maven -> org.apache.maven\n\t//\n\t// - [4] if artifactId starts with last section of groupId that portion is removed. eg. org.apache.maven:maven-core -> org.apache.maven.core\n\t//   The computed symbolic name is also stored in the $(maven-symbolicname) property in case you want to add attributes or directives to it.\n\t//\n\tif manifest != nil {\n\t\tif strings.Contains(manifest.Main.MustGet(\"Created-By\"), \"Apache Maven Bundle Plugin\") {\n\t\t\tif symbolicName := manifest.Main.MustGet(\"Bundle-SymbolicName\"); symbolicName != \"\" {\n\t\t\t\t// It is possible that `Bundle-SymbolicName` is just the groupID (like in the case of\n\t\t\t\t// https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.25.0/google-oauth-client-1.25.0.jar),\n\t\t\t\t// so if `Implementation-Vendor-Id` is equal to `Bundle-SymbolicName`, bail on this logic\n\t\t\t\tif vendorID := manifest.Main.MustGet(\"Implementation-Vendor-Id\"); vendorID != \"\" && vendorID == symbolicName {\n\t\t\t\t\treturn \"\"\n\t\t\t\t}\n\n\t\t\t\t// the problem with this approach is that we don't have a strong indication of the artifactId\n\t\t\t\t// not having a \".\" in it. However, by convention it is unlikely that an artifactId would have a \".\".\n\t\t\t\tfields := strings.Split(symbolicName, \".\")\n\n\t\t\t\t// grab the last field, this is the artifactId. Note: because of [3] we do not know if this value is\n\t\t\t\t// correct. That is, a group id of \"commons-logging\" may have caused BND to swap out the reference to\n\t\t\t\t// \"org.apache.commons.logging\", which means we'd interpret this as an artifact id of \"logging\",\n\t\t\t\t// which is not correct.\n\t\t\t\t// [correct]         https://mvnrepository.com/artifact/commons-logging/commons-logging\n\t\t\t\t// [still incorrect] https://mvnrepository.com/artifact/org.apache.commons.logging/org.apache.commons.logging\n\t\t\t\treturn fields[len(fields)-1]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc extractNameFromArchiveFilename(a archiveFilename) string {\n\tif strings.Contains(a.name, \".\") {\n\t\t// special case: this *might* be a group id + artifact id. By convention artifact ids do not have \".\" in them;\n\t\t// however, there are some specific exceptions like with the artifacts under\n\t\t// https://repo1.maven.org/maven2/org/eclipse/platform/\n\t\tif strings.HasPrefix(a.name, \"org.eclipse.\") {\n\t\t\treturn a.name\n\t\t}\n\n\t\t// Maybe the filename is like groupid + . + artifactid. If so, return artifact id.\n\t\tfields := strings.Split(a.name, \".\")\n\t\tmaybeGroupID := true\n\t\tfor _, f := range fields {\n\t\t\tif !isValidJavaIdentifier(f) {\n\t\t\t\tmaybeGroupID = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif maybeGroupID {\n\t\t\treturn fields[len(fields)-1]\n\t\t}\n\t}\n\n\treturn a.name\n}\n\nfunc isValidJavaIdentifier(field string) bool {\n\trunes := []rune(field)\n\tif len(runes) == 0 {\n\t\treturn false\n\t}\n\t// check whether first rune can start an identifier name in Java\n\t// Java identifier start = [Lu]|[Ll]|[Lt]|[Lm]|[Lo]|[Nl]|[Sc]|[Pc]\n\t// see https://developer.classpath.org/doc/java/lang/Character-source.html\n\t// line 3295\n\tr := runes[0]\n\treturn unicode.Is(unicode.Lu, r) ||\n\t\tunicode.Is(unicode.Ll, r) || unicode.Is(unicode.Lt, r) ||\n\t\tunicode.Is(unicode.Lm, r) || unicode.Is(unicode.Lo, r) ||\n\t\tunicode.Is(unicode.Nl, r) ||\n\t\tunicode.Is(unicode.Sc, r) || unicode.Is(unicode.Pc, r)\n}\n\nfunc selectName(manifest *pkg.JavaManifest, filenameObj archiveFilename) string {\n\tname := extractNameFromApacheMavenBundlePlugin(manifest)\n\tif name != \"\" {\n\t\treturn name\n\t}\n\n\t// the filename tends to be the next-best reference for the package name\n\tname = extractNameFromArchiveFilename(filenameObj)\n\tif name != \"\" {\n\t\treturn name\n\t}\n\n\t// remaining fields in the manifest is a bit of a free-for-all depending on the build tooling used and package maintainer preferences\n\tif manifest != nil {\n\t\tswitch {\n\t\tcase manifest.Main.MustGet(\"Name\") != \"\":\n\t\t\t// Manifest original spec...\n\t\t\treturn manifest.Main.MustGet(\"Name\")\n\t\tcase manifest.Main.MustGet(\"Bundle-Name\") != \"\":\n\t\t\t// BND tooling... TODO: this does not seem accurate (I don't see a reference in the BND tooling docs for this)\n\t\t\treturn manifest.Main.MustGet(\"Bundle-Name\")\n\t\tcase manifest.Main.MustGet(\"Short-Name\") != \"\":\n\t\t\t// Jenkins...\n\t\t\treturn manifest.Main.MustGet(\"Short-Name\")\n\t\tcase manifest.Main.MustGet(\"Extension-Name\") != \"\":\n\t\t\t// Jenkins...\n\t\t\treturn manifest.Main.MustGet(\"Extension-Name\")\n\t\tcase manifest.Main.MustGet(\"Implementation-Title\") != \"\":\n\t\t\t// last ditch effort...\n\t\t\treturn manifest.Main.MustGet(\"Implementation-Title\")\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc selectVersion(manifest *pkg.JavaManifest, filenameObj archiveFilename) string {\n\tif v := filenameObj.version; v != \"\" {\n\t\treturn v\n\t}\n\n\tif manifest == nil {\n\t\treturn \"\"\n\t}\n\n\tfieldNames := []string{\n\t\t\"Implementation-Version\",\n\t\t\"Specification-Version\",\n\t\t\"Plugin-Version\",\n\t\t\"Bundle-Version\",\n\t}\n\n\tfor _, fieldName := range fieldNames {\n\t\tif v := fieldValueFromManifest(*manifest, fieldName); v != \"\" {\n\t\t\treturn v\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc selectLicenses(manifest *pkg.JavaManifest) []string {\n\tresult := []string{}\n\tif manifest == nil {\n\t\treturn result\n\t}\n\n\tfieldNames := []string{\n\t\t\"Bundle-License\",\n\t\t\"Plugin-License-Name\",\n\t}\n\n\tfor _, fieldName := range fieldNames {\n\t\tif v := fieldValueFromManifest(*manifest, fieldName); v != \"\" {\n\t\t\tresult = append(result, v)\n\t\t}\n\t}\n\n\treturn result\n}\n\nfunc fieldValueFromManifest(manifest pkg.JavaManifest, fieldName string) string {\n\tif value := manifest.Main.MustGet(fieldName); value != \"\" {\n\t\treturn value\n\t}\n\n\tfor _, section := range manifest.Sections {\n\t\tif value := section.MustGet(fieldName); value != \"\" {\n\t\t\treturn value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_java_manifest_test.go",
    "content": "package java\n\nimport (\n\t\"encoding/json\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestParseJavaManifest(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected pkg.JavaManifest\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/manifest/small\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/manifest/standard-info\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t{Key: \"Name\", Value: \"the-best-name\"},\n\t\t\t\t\t{Key: \"Specification-Title\", Value: \"the-spec-title\"},\n\t\t\t\t\t{Key: \"Specification-Vendor\", Value: \"the-spec-vendor\"},\n\t\t\t\t\t{Key: \"Specification-Version\", Value: \"the-spec-version\"},\n\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"the-impl-title\"},\n\t\t\t\t\t{Key: \"Implementation-Vendor\", Value: \"the-impl-vendor\"},\n\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"the-impl-version\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/manifest/extra-info\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Archiver-Version\",\n\t\t\t\t\t\tValue: \"Plexus Archiver\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Created-By\",\n\t\t\t\t\t\tValue: \"Apache Maven 3.6.3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\tValue: \"thing-1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Built-By\",\n\t\t\t\t\t\t\tValue: \"?\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Build-Jdk\",\n\t\t\t\t\t\t\tValue: \"14.0.1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Main-Class\",\n\t\t\t\t\t\t\tValue: \"hello.HelloWorld\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/manifest/extra-empty-lines\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Archiver-Version\",\n\t\t\t\t\t\tValue: \"Plexus Archiver\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Created-By\",\n\t\t\t\t\t\tValue: \"Apache Maven 3.6.3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Name\", Value: \"thing-1\"},\n\t\t\t\t\t\t{Key: \"Built-By\", Value: \"?\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Name\", Value: \"thing-2\"},\n\t\t\t\t\t\t{Key: \"Built-By\", Value: \"someone!\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Other\", Value: \"things\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Last\", Value: \"item\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/manifest/continuation\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Plugin-ScmUrl\",\n\t\t\t\t\t\tValue: \"https://github.com/jenkinsci/plugin-pom/example-jenkins-plugin\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// regression test, we should always keep the full version\n\t\t\tfixture: \"testdata/manifest/version-with-date\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Version\",\n\t\t\t\t\t\tValue: \"1.3 2244 October 5 2005\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// regression test, we should not trim space and choke of empty space\n\t\t\t// https://github.com/anchore/syft/issues/2179\n\t\t\tfixture: \"testdata/manifest/leading-space\",\n\t\t\texpected: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Key-keykeykey\",\n\t\t\t\t\t\tValue: \"initialconfig:com$    # aka not empty line\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"should\",\n\t\t\t\t\t\tValue: \"parse\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"could not open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tactual, err := parseJavaManifest(test.fixture, fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse manifest: %+v\", err)\n\t\t\t}\n\n\t\t\tdiffs := deep.Equal(actual, &test.expected)\n\t\t\tif len(diffs) > 0 {\n\t\t\t\tfor _, d := range diffs {\n\t\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t\t}\n\n\t\t\t\tb, err := json.MarshalIndent(actual, \"\", \"  \")\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"can't show results: %+v\", err)\n\t\t\t\t}\n\n\t\t\t\tt.Errorf(\"full result: %s\", string(b))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSelectName(t *testing.T) {\n\ttests := []struct {\n\t\tdesc     string\n\t\tmanifest pkg.JavaManifest\n\t\tarchive  archiveFilename\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tdesc:    \"Get name from Implementation-Title\",\n\t\t\tarchive: archiveFilename{},\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Title\",\n\t\t\t\t\t\tValue: \"maven-wrapper\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"maven-wrapper\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"Implementation-Title does not override name from filename\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\tValue: \"foo\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Title\",\n\t\t\t\t\t\tValue: \"maven-wrapper\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/omg.jar\"),\n\t\t\texpected: \"omg\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"Use the artifact ID baked by the Apache Maven Bundle Plugin\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Created-By\", Value: \"Apache Maven Bundle Plugin\"},\n\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"com.atlassian.gadgets.atlassian-gadgets-api\"},\n\t\t\t\t\t{Key: \"Name\", Value: \"foo\"},\n\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"maven-wrapper\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/omg.jar\"),\n\t\t\texpected: \"atlassian-gadgets-api\",\n\t\t},\n\t\t{\n\t\t\t// example: pkg:maven/org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans@5.3.26_1\n\t\t\tdesc: \"Apache Maven Bundle Plugin might bake a version in the created-by field\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Created-By\", Value: \"Apache Maven Bundle Plugin 5.1.6\"},\n\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"com.atlassian.gadgets.atlassian-gadgets-api\"},\n\t\t\t\t\t{Key: \"Name\", Value: \"foo\"},\n\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"maven-wrapper\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/omg.jar\"),\n\t\t\texpected: \"atlassian-gadgets-api\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"Filename looks like a groupid + artifact id\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\tValue: \"foo\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Title\",\n\t\t\t\t\t\tValue: \"maven-wrapper\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/com.atlassian.gadgets.atlassian-gadgets-api.jar\"),\n\t\t\texpected: \"atlassian-gadgets-api\",\n\t\t},\n\t\t{\n\t\t\tdesc:     \"Filename has period that is not groupid + artifact id\",\n\t\t\tmanifest: pkg.JavaManifest{},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/http4s-crypto_2.12-0.1.0.jar\"),\n\t\t\texpected: \"http4s-crypto_2.12\",\n\t\t},\n\t\t{\n\t\t\tdesc:     \"Filename has period that is not groupid + artifact id, kafka\",\n\t\t\tmanifest: pkg.JavaManifest{},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something//kafka_2.13-3.2.2.jar\"),\n\t\t\texpected: \"kafka_2.13\", // see https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.13/3.2.2\n\t\t},\n\t\t{\n\t\t\tdesc: \"Skip stripping groupId prefix from archive filename for org.eclipse\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Automatic-Module-Name\",\n\t\t\t\t\t\tValue: \"org.eclipse.ant.core\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/org.eclipse.ant.core-3.7.0.jar\"),\n\t\t\texpected: \"org.eclipse.ant.core\",\n\t\t},\n\t\t{\n\t\t\t// example: pkg:maven/com.google.oauth-client/google-oauth-client@1.25.0\n\t\t\tdesc: \"skip Apache Maven Bundle Plugin logic if symbolic name is same as vendor id\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Bundle-DocURL\", Value: \"http://www.google.com/\"},\n\t\t\t\t\t{Key: \"Bundle-License\", Value: \"http://www.apache.org/licenses/LICENSE-2.0.txt\"},\n\t\t\t\t\t{Key: \"Bundle-ManifestVersion\", Value: \"2\"},\n\t\t\t\t\t{Key: \"Bundle-Name\", Value: \"Google OAuth Client Library for Java\"},\n\t\t\t\t\t{Key: \"Bundle-RequiredExecutionEnvironment\", Value: \"JavaSE-1.6\"},\n\t\t\t\t\t{Key: \"Bundle-SymbolicName\", Value: \"com.google.oauth-client\"},\n\t\t\t\t\t{Key: \"Bundle-Vendor\", Value: \"Google\"},\n\t\t\t\t\t{Key: \"Bundle-Version\", Value: \"1.25.0\"},\n\t\t\t\t\t{Key: \"Created-By\", Value: \"Apache Maven Bundle Plugin\"},\n\t\t\t\t\t{Key: \"Export-Package\", Value: \"com.google.api.client.auth.openidconnect;uses:=\\\"com.google.api.client.auth.oauth2,com.google.api.client.json,com.google.api.client.json.webtoken,com.google.api.client.util\\\";version=\\\"1.25.0\\\",com.google.api.client.auth.oauth;uses:=\\\"com.google.api.client.http,com.google.api.client.util\\\";version=\\\"1.25.0\\\",com.google.api.client.auth.oauth2;uses:=\\\"com.google.api.client.http,com.google.api.client.json,com.google.api.client.util,com.google.api.client.util.store\\\";version=\\\"1.25.0\\\"\"},\n\t\t\t\t\t{Key: \"Implementation-Title\", Value: \"Google OAuth Client Library for Java\"},\n\t\t\t\t\t{Key: \"Implementation-Vendor\", Value: \"Google\"},\n\t\t\t\t\t{Key: \"Implementation-Vendor-Id\", Value: \"com.google.oauth-client\"},\n\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"1.25.0\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\tarchive:  newJavaArchiveFilename(\"/something/google-oauth-client-1.25.0.jar\"),\n\t\t\texpected: \"google-oauth-client\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tresult := selectName(&test.manifest, test.archive)\n\n\t\t\tif result != test.expected {\n\t\t\t\tt.Errorf(\"mismatch in names: '%s' != '%s'\", result, test.expected)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSelectVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmanifest pkg.JavaManifest\n\t\tarchive  archiveFilename\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:    \"Get name from Implementation-Version\",\n\t\t\tarchive: archiveFilename{},\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Version\",\n\t\t\t\t\t\tValue: \"1.8.2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"1.8.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"Implementation-Version takes precedence over Specification-Version\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Implementation-Version\",\n\t\t\t\t\t\tValue: \"1.8.2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Specification-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"1.8.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"Implementation-Version found outside the main section\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t{Key: \"Ant-Version\", Value: \"Apache Ant 1.8.2\"},\n\t\t\t\t\t{Key: \"Created-By\", Value: \"1.5.0_22-b03 (Sun Microsystems Inc.)\"},\n\t\t\t\t},\n\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Name\", Value: \"org/apache/tools/ant/taskdefs/optional/\"},\n\t\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"1.8.2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"1.8.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"Implementation-Version takes precedence over Specification-Version in subsequent section\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: pkg.KeyValues{\n\t\t\t\t\t{Key: \"Manifest-Version\", Value: \"1.0\"},\n\t\t\t\t\t{Key: \"Ant-Version\", Value: \"Apache Ant 1.8.2\"},\n\t\t\t\t\t{Key: \"Created-By\", Value: \"1.5.0_22-b03 (Sun Microsystems Inc.)\"},\n\t\t\t\t\t{Key: \"Specification-Version\", Value: \"2.0\"},\n\t\t\t\t},\n\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Name\", Value: \"org/apache/tools/ant/taskdefs/optional/\"},\n\t\t\t\t\t\t{Key: \"Specification-Version\", Value: \"1.8\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t{Key: \"Name\", Value: \"some-other-section\"},\n\t\t\t\t\t\t{Key: \"Implementation-Version\", Value: \"1.8.2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\texpected: \"1.8.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"Implementation-Version takes precedence over Specification-Version in subsequent section\",\n\t\t\tmanifest: pkg.JavaManifest{\n\t\t\t\tMain: []pkg.KeyValue{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Manifest-Version\",\n\t\t\t\t\t\tValue: \"1.0\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Ant-Version\",\n\t\t\t\t\t\tValue: \"Apache Ant 1.8.2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Created-By\",\n\t\t\t\t\t\tValue: \"1.5.0_22-b03 (Sun Microsystems Inc.)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSections: []pkg.KeyValues{\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\t\tValue: \"some-other-section\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   \"Bundle-Version\",\n\t\t\t\t\t\t\tValue: \"1.11.28\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"1.11.28\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresult := selectVersion(&test.manifest, test.archive)\n\n\t\t\tassert.Equal(t, test.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_jvm_release.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"path\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/packageurl-go\"\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst (\n\toracleVendor   = \"oracle\"\n\topenJdkProduct = \"openjdk\"\n\tjre            = \"jre\"\n\tjdk            = \"jdk\"\n)\n\n// the /opt/java/openjdk/release file (and similar paths) is a file that is present in the multiple OpenJDK distributions\n// here's an example of the contents of the file:\n//\n// IMPLEMENTOR=\"Eclipse Adoptium\"\n// IMPLEMENTOR_VERSION=\"Temurin-21.0.4+7\"\n// JAVA_RUNTIME_VERSION=\"21.0.4+7-LTS\"\n// JAVA_VERSION=\"21.0.4\"\n// JAVA_VERSION_DATE=\"2024-07-16\"\n// LIBC=\"gnu\"\n// MODULES=\"java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.internal.opt jdk.zipfs jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.vector jdk.internal.le jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom\"\n// OS_ARCH=\"aarch64\"\n// OS_NAME=\"Linux\"\n// SOURCE=\".:git:13710926b798\"\n// BUILD_SOURCE=\"git:1271f10a26c47e1489a814dd2731f936a588d621\"\n// BUILD_SOURCE_REPO=\"https://github.com/adoptium/temurin-build.git\"\n// SOURCE_REPO=\"https://github.com/adoptium/jdk21u.git\"\n// FULL_VERSION=\"21.0.4+7-LTS\"\n// SEMANTIC_VERSION=\"21.0.4+7\"\n// BUILD_INFO=\"OS: Linux Version: 5.4.0-150-generic\"\n// JVM_VARIANT=\"Hotspot\"\n// JVM_VERSION=\"21.0.4+7-LTS\"\n// IMAGE_TYPE=\"JDK\"\n//\n// In terms of the temurin flavor, these are controlled by:\n// - config: https://github.com/adoptium/temurin-build/blob/v2023.01.03/sbin/common/config_init.sh\n// - build script: https://github.com/adoptium/temurin-build/blob/v2023.01.03/sbin/build.sh#L1584-L1796\n\ntype jvmCpeInfo struct {\n\tvendor, product, version string\n}\n\nfunc parseJVMRelease(_ context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tri, err := parseJvmReleaseInfo(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse JVM release info %q: %w\", reader.Path(), err)\n\t}\n\n\tif ri == nil {\n\t\t// TODO: known-unknown: expected JDK installation package\n\t\treturn nil, nil, nil\n\t}\n\n\tversion := jvmPackageVersion(ri)\n\t// TODO: detect old and new version format from multiple fields\n\n\tlicenses := jvmLicenses(resolver, ri)\n\n\tlocations := file.NewLocationSet(reader.Location)\n\n\tfor _, lic := range licenses.ToSlice() {\n\t\tlocations.Add(lic.Locations.ToSlice()...)\n\t}\n\n\tinstallDir := path.Dir(reader.Path())\n\tfiles, hasJdk := findJvmFiles(resolver, installDir)\n\n\t// the reason we use the reference to get the real path is in cases where the file cataloger is involved\n\t// (thus the real path is not available except for in the original file reference). This is important\n\t// since the path is critical for distinguishing between different JVM vendors.\n\tvendor, product := jvmPrimaryVendorProduct(ri, string(reader.Reference().RealPath), hasJdk)\n\n\tp := pkg.Package{\n\t\tName:      product,\n\t\tLocations: locations,\n\t\tVersion:   version,\n\t\tCPEs:      jvmCpes(version, vendor, product, ri.ImageType, hasJdk),\n\t\tPURL:      jvmPurl(*ri, version, vendor, product),\n\t\tLicenses:  licenses,\n\t\tType:      pkg.BinaryPkg,\n\t\tMetadata: pkg.JavaVMInstallation{\n\t\t\tRelease: *ri,\n\t\t\tFiles:   files,\n\t\t},\n\t}\n\tp.SetID()\n\n\treturn []pkg.Package{p}, nil, nil\n}\n\nfunc jvmLicenses(_ file.Resolver, _ *pkg.JavaVMRelease) pkg.LicenseSet {\n\t// TODO: get this from the dir(<RELEASE>)/legal/**/LICENSE files when we start cataloging license content\n\t// see https://github.com/anchore/syft/issues/656\n\treturn pkg.NewLicenseSet()\n}\n\nfunc findJvmFiles(resolver file.Resolver, installDir string) ([]string, bool) {\n\townedLocations, err := resolver.FilesByGlob(installDir + \"/**\")\n\tif err != nil {\n\t\t// TODO: known-unknowns\n\t\tlog.WithFields(\"path\", installDir, \"error\", err).Trace(\"unable to find installed JVM files\")\n\t}\n\n\tvar results []string\n\tvar hasJdk bool\n\tfor _, loc := range ownedLocations {\n\t\tp := loc.Path()\n\t\tresults = append(results, p)\n\t\tif !hasJdk && strings.HasSuffix(p, \"bin/javac\") {\n\t\t\thasJdk = true\n\t\t}\n\t}\n\n\tsort.Strings(results)\n\n\treturn results, hasJdk\n}\n\nfunc jvmPurl(ri pkg.JavaVMRelease, version, vendor, product string) string {\n\tvar qualifiers []packageurl.Qualifier\n\tif ri.SourceRepo != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"repository_url\",\n\t\t\tValue: ri.SourceRepo,\n\t\t})\n\t} else if ri.BuildSourceRepo != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"repository_url\",\n\t\t\tValue: ri.BuildSourceRepo,\n\t\t})\n\t}\n\n\tpURL := packageurl.NewPackageURL(\n\t\tpackageurl.TypeGeneric,\n\t\tvendor,\n\t\tproduct,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\")\n\treturn pURL.ToString()\n}\n\nfunc jvmPrimaryVendorProduct(ri *pkg.JavaVMRelease, path string, hasJdk bool) (string, string) {\n\timplementor := strings.ReplaceAll(strings.ToLower(ri.Implementor), \" \", \"\")\n\n\tpickProduct := func() string {\n\t\tif hasJdk || jvmProjectByType(ri.ImageType) == jdk {\n\t\t\treturn jdk\n\t\t}\n\t\treturn jre\n\t}\n\n\tswitch {\n\tcase strings.Contains(implementor, \"azul\") || strings.Contains(path, \"zulu\"):\n\t\treturn \"azul\", \"zulu\"\n\n\tcase strings.Contains(implementor, \"sun\"):\n\t\treturn \"sun\", pickProduct()\n\n\tcase strings.Contains(implementor, \"ibm\") || strings.Contains(path, \"/ibm\"):\n\t\tif hasJdk {\n\t\t\treturn \"ibm\", \"java_sdk\"\n\t\t}\n\t\treturn \"ibm\", \"java\"\n\n\tcase strings.Contains(implementor, \"oracle\") || strings.Contains(path, \"oracle\") || strings.Contains(ri.BuildType, \"commercial\"):\n\t\treturn oracleVendor, pickProduct()\n\t}\n\treturn oracleVendor, openJdkProduct\n}\n\nfunc jvmCpes(version, primaryVendor, primaryProduct, imageType string, hasJdk bool) []cpe.CPE {\n\t// see https://github.com/anchore/syft/issues/2422 for more context\n\n\tvar candidates []jvmCpeInfo\n\n\tnewCandidate := func(ven, prod, ver string) {\n\t\tcandidates = append(candidates, jvmCpeInfo{\n\t\t\tvendor:  ven,\n\t\t\tproduct: prod,\n\t\t\tversion: ver,\n\t\t})\n\t}\n\n\tnewEnterpriseCandidate := func(ven, ver string) {\n\t\tnewCandidate(ven, jre, ver)\n\t\tif hasJdk || jvmProjectByType(imageType) == jdk {\n\t\t\tnewCandidate(ven, jdk, ver)\n\t\t}\n\t}\n\n\tswitch {\n\tcase primaryVendor == \"azul\":\n\t\tnewCandidate(primaryVendor, \"zulu\", version)\n\t\tnewCandidate(oracleVendor, openJdkProduct, version)\n\n\tcase primaryVendor == \"sun\":\n\t\tnewEnterpriseCandidate(primaryVendor, version)\n\n\tcase primaryVendor == oracleVendor && primaryProduct != openJdkProduct:\n\t\tnewCandidate(primaryVendor, \"java_se\", version)\n\t\tnewEnterpriseCandidate(primaryVendor, version)\n\tdefault:\n\t\tnewCandidate(primaryVendor, primaryProduct, version)\n\t}\n\n\tvar cpes []cpe.CPE\n\tfor _, candidate := range candidates {\n\t\tc := newJvmCpe(candidate)\n\t\tif c == nil {\n\t\t\tcontinue\n\t\t}\n\t\tcpes = append(cpes, *c)\n\t}\n\n\treturn cpes\n}\n\nfunc getJVMVersionAndUpdate(version string) (string, string) {\n\thasPlus := strings.Contains(version, \"+\")\n\thasUnderscore := strings.Contains(version, \"_\")\n\n\tswitch {\n\tcase hasUnderscore:\n\t\t// assume legacy version strings are provided\n\t\t// example: 1.8.0_302-b08\n\t\tfields := strings.Split(version, \"_\")\n\t\tif len(fields) == 2 {\n\t\t\tshortVer := fields[0]\n\t\t\tfields = strings.Split(fields[1], \"-\")\n\t\t\treturn shortVer, fields[0]\n\t\t}\n\tcase hasPlus:\n\t\t// assume JEP 223 version strings are provided\n\t\t// example: 9.0.1+20\n\t\tfields := strings.Split(version, \"+\")\n\t\treturn fields[0], \"\"\n\t}\n\n\t// this could be a legacy or modern string that does not have an update\n\treturn version, \"\"\n}\n\nfunc newJvmCpe(candidate jvmCpeInfo) *cpe.CPE {\n\tif candidate.vendor == \"\" || candidate.product == \"\" || candidate.version == \"\" {\n\t\treturn nil\n\t}\n\n\tshortVer, update := getJVMVersionAndUpdate(candidate.version)\n\n\tif shortVer == \"\" {\n\t\treturn nil\n\t}\n\n\tif update != \"\" && !strings.Contains(strings.ToLower(update), \"update\") {\n\t\tupdate = \"update\" + trim0sFromLeft(update)\n\t}\n\n\treturn &cpe.CPE{\n\t\tAttributes: cpe.Attributes{\n\t\t\tPart:    \"a\",\n\t\t\tVendor:  candidate.vendor,\n\t\t\tProduct: candidate.product,\n\t\t\tVersion: shortVer,\n\t\t\tUpdate:  update,\n\t\t},\n\t\t// note: we must use a declared source here. Though we are not directly raising up raw CPEs from cataloged material,\n\t\t// these are vastly more reliable and accurate than what would be generated from the cpe generator logic.\n\t\t// We want these CPEs to override any generated CPEs (and in fact prevent the generation of CPEs for these packages altogether).\n\t\tSource: cpe.DeclaredSource,\n\t}\n}\n\nfunc jvmProjectByType(ty string) string {\n\tif strings.Contains(strings.ToLower(ty), jre) {\n\t\treturn jre\n\t}\n\treturn jdk\n}\n\n// jvmPackageVersion attempts to extract the correct version value for the JVM given a platter of version strings to choose\n// from, and makes special consideration to what a valid version is relative to JEP 223.\n//\n// example version values (openjdk >8):\n//\n//\tIMPLEMENTOR_VERSION   \"Temurin-21.0.4+7\"\n//\tJAVA_RUNTIME_VERSION  \"21.0.4+7-LTS\"\n//\tFULL_VERSION          \"21.0.4+7-LTS\"\n//\tSEMANTIC_VERSION      \"21.0.4+7\"\n//\tJAVA_VERSION          \"21.0.4\"\n//\n// example version values (openjdk 8):\n//\n//\tJAVA_VERSION       \"1.8.0_422\"\n//\tFULL_VERSION       \"1.8.0_422-b05\"\n//\tSEMANTIC_VERSION   \"8.0.422+5\"\n//\n// example version values (openjdk 8, but older):\n//\n//\tJAVA_VERSION       \"1.8.0_302\"\n//\tFULL_VERSION       \"1.8.0_302-b08\"\n//\tSEMANTIC_VERSION   \"8.0.302+8\"\n//\n// example version values (oracle):\n//\n//\tIMPLEMENTOR_VERSION   (missing)\n//\tJAVA_RUNTIME_VERSION  \"22.0.2+9-70\"\n//\tJAVA_VERSION          \"22.0.2\"\n//\n// example version values (mariner):\n//\n//\tIMPLEMENTOR_VERSION   \"Microsoft-9889599\"\n//\tJAVA_RUNTIME_VERSION  \"17.0.12+7-LTS\"\n//\tJAVA_VERSION          \"17.0.12\"\n//\n// example version values (amazon):\n//\n//\tIMPLEMENTOR_VERSION    \"Corretto-17.0.12.7.1\"\n//\tJAVA_RUNTIME_VERSION   \"17.0.12+7-LTS\"\n//\tJAVA_VERSION           \"17.0.12\"\n//\n// JEP 223 changes to JVM version string in the following way:\n//\n//\t                     Pre JEP 223             Post JEP 223\n//\tRelease Type    long           short    long           short\n//\t------------    --------------------    --------------------\n//\tEarly Access    1.9.0-ea-b19    9-ea    9-ea+19        9-ea\n//\tMajor           1.9.0-b100      9       9+100          9\n//\tSecurity #1     1.9.0_5-b20     9u5     9.0.1+20       9.0.1\n//\tSecurity #2     1.9.0_11-b12    9u11    9.0.2+12       9.0.2\n//\tMinor #1        1.9.0_20-b62    9u20    9.1.2+62       9.1.2\n//\tSecurity #3     1.9.0_25-b15    9u25    9.1.3+15       9.1.3\n//\tSecurity #4     1.9.0_31-b08    9u31    9.1.4+8        9.1.4\n//\tMinor #2        1.9.0_40-b45    9u40    9.2.4+45       9.2.4\n//\n// What does this mean for us? In terms of the version selected, use semver-compliant strings when available.\n//\n// In terms of where to get the version:\n//\n//\tSEMANTIC_VERSION      Reasonably prevalent, but most accurate in terms of comparable versions\n//\tJAVA_RUNTIME_VERSION  Reasonable prevalent, but difficult to distinguish pre-release info vs aux info (jep 223 sensitive)\n//\tFULL_VERSION          Reasonable prevalent, but difficult to distinguish pre-release info vs aux info (jep 223 sensitive)\n//\tJAVA_VERSION          Most prevalent, but least specific (jep 223 sensitive)\n//\tIMPLEMENTOR_VERSION   Unusable or missing in some cases\nfunc jvmPackageVersion(ri *pkg.JavaVMRelease) string {\n\tvar version string\n\tswitch {\n\tcase ri.JavaRuntimeVersion != \"\":\n\t\treturn ri.JavaRuntimeVersion\n\tcase ri.FullVersion != \"\":\n\t\t// if the full version major version matches the java version major version, then use the full version\n\t\tfullMajor := strings.Split(ri.FullVersion, \".\")[0]\n\t\tjavaMajor := strings.Split(ri.JavaVersion, \".\")[0]\n\t\tif fullMajor == javaMajor {\n\t\t\treturn ri.FullVersion\n\t\t}\n\t\tfallthrough\n\tcase ri.JavaVersion != \"\":\n\t\treturn ri.JavaVersion\n\t}\n\n\treturn version\n}\n\nfunc trim0sFromLeft(v string) string {\n\tif v == \"0\" {\n\t\treturn v\n\t}\n\treturn strings.TrimLeft(v, \"0\")\n}\n\nfunc parseJvmReleaseInfo(r io.ReadCloser) (*pkg.JavaVMRelease, error) {\n\tdefer r.Close()\n\n\tdata := make(map[string]any)\n\tscanner := bufio.NewScanner(io.LimitReader(r, 500*stereoFile.KB))\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tparts := strings.SplitN(line, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\tcontinue\n\t\t}\n\t\tkey := parts[0]\n\t\tvalue := strings.Trim(parts[1], `\"`)\n\n\t\tif key == \"MODULES\" {\n\t\t\tdata[key] = strings.Split(value, \" \")\n\t\t} else {\n\t\t\tdata[key] = value\n\t\t}\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// if we're missing key fields, then we don't have a JVM release file\n\tif data[\"JAVA_VERSION\"] == nil && data[\"JAVA_RUNTIME_VERSION\"] == nil {\n\t\treturn nil, nil\n\t}\n\n\tvar ri pkg.JavaVMRelease\n\tif err := mapstructure.Decode(data, &ri); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &ri, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_jvm_release_test.go",
    "content": "package java\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestJvmCpes(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tpkgVersion     string\n\t\tprimaryVendor  string\n\t\tprimaryProduct string\n\t\timageType      string\n\t\thasJdk         bool\n\t\texpected       []cpe.CPE\n\t}{\n\t\t{\n\t\t\tname:           \"zulu release\",\n\t\t\tpkgVersion:     \"9.0.1+20\",\n\t\t\tprimaryVendor:  \"azul\",\n\t\t\tprimaryProduct: \"zulu\",\n\t\t\timageType:      \"jdk\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"azul\",\n\t\t\t\t\t\tProduct: \"zulu\",\n\t\t\t\t\t\tVersion: \"9.0.1\",\n\t\t\t\t\t\tUpdate:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"openjdk\",\n\t\t\t\t\t\tVersion: \"9.0.1\",\n\t\t\t\t\t\tUpdate:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"sun release\",\n\t\t\tpkgVersion:     \"1.6.0_322-b002\",\n\t\t\tprimaryVendor:  \"sun\",\n\t\t\tprimaryProduct: \"jre\",\n\t\t\timageType:      \"jre\",\n\t\t\thasJdk:         true,\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"sun\",\n\t\t\t\t\t\tProduct: \"jre\",\n\t\t\t\t\t\tVersion: \"1.6.0\",\n\t\t\t\t\t\tUpdate:  \"update322\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"sun\",\n\t\t\t\t\t\tProduct: \"jdk\",\n\t\t\t\t\t\tVersion: \"1.6.0\",\n\t\t\t\t\t\tUpdate:  \"update322\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"oracle se release\",\n\t\t\tpkgVersion:     \"1.8.0_322-b02\",\n\t\t\tprimaryVendor:  \"oracle\",\n\t\t\tprimaryProduct: \"java_se\",\n\t\t\timageType:      \"jdk\",\n\t\t\thasJdk:         true,\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"java_se\",\n\t\t\t\t\t\tVersion: \"1.8.0\",\n\t\t\t\t\t\tUpdate:  \"update322\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"jre\",\n\t\t\t\t\t\tVersion: \"1.8.0\",\n\t\t\t\t\t\tUpdate:  \"update322\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"jdk\",\n\t\t\t\t\t\tVersion: \"1.8.0\",\n\t\t\t\t\t\tUpdate:  \"update322\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"JEP 223 version with build info\",\n\t\t\tpkgVersion:     \"9.0.1+20\",\n\t\t\tprimaryVendor:  \"oracle\",\n\t\t\tprimaryProduct: \"openjdk\",\n\t\t\timageType:      \"openjdk\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"openjdk\",\n\t\t\t\t\t\tVersion: \"9.0.1\",\n\t\t\t\t\t\tUpdate:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"JEP 223 version without build info\",\n\t\t\tpkgVersion:     \"11.0.9\",\n\t\t\tprimaryVendor:  \"oracle\",\n\t\t\tprimaryProduct: \"openjdk\",\n\t\t\timageType:      \"openjdk\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"openjdk\",\n\t\t\t\t\t\tVersion: \"11.0.9\",\n\t\t\t\t\t\tUpdate:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"no plus sign in version string\",\n\t\t\tpkgVersion:     \"1.8.0\",\n\t\t\tprimaryVendor:  \"oracle\",\n\t\t\tprimaryProduct: \"openjdk\",\n\t\t\timageType:      \"openjdk\",\n\t\t\texpected: []cpe.CPE{\n\t\t\t\t{\n\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\tVendor:  \"oracle\",\n\t\t\t\t\t\tProduct: \"openjdk\",\n\t\t\t\t\t\tVersion: \"1.8.0\",\n\t\t\t\t\t\tUpdate:  \"\",\n\t\t\t\t\t},\n\t\t\t\t\tSource: cpe.DeclaredSource,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:           \"empty version string\",\n\t\t\tpkgVersion:     \"\",\n\t\t\tprimaryVendor:  \"oracle\",\n\t\t\tprimaryProduct: \"\",\n\t\t\timageType:      \"\",\n\t\t\texpected:       nil,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := jvmCpes(tt.pkgVersion, tt.primaryVendor, tt.primaryProduct, tt.imageType, tt.hasJdk)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestJvmVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    *pkg.JavaVMRelease\n\t\texpected string\n\t}{\n\n\t\t{\n\t\t\tname: \"JavaRuntimeVersion fallback\",\n\t\t\tinput: &pkg.JavaVMRelease{\n\t\t\t\tJavaRuntimeVersion: \"21.0.4+7-LTS\",\n\t\t\t\tJavaVersion:        \"bogus\",\n\t\t\t\tFullVersion:        \"bogus\",\n\t\t\t\tSemanticVersion:    \"bogus\",\n\t\t\t},\n\t\t\texpected: \"21.0.4+7-LTS\",\n\t\t},\n\t\t{\n\t\t\tname: \"JavaVersion fallback\",\n\t\t\tinput: &pkg.JavaVMRelease{\n\t\t\t\tJavaVersion:     \"21.0.4\",\n\t\t\t\tFullVersion:     \"bogus\",\n\t\t\t\tSemanticVersion: \"bogus\",\n\t\t\t},\n\t\t\texpected: \"21.0.4\",\n\t\t},\n\t\t{\n\t\t\t// there is an example of this in eclipse-temurin:8u312-b07-jdk\n\t\t\tname: \"FullVersion is more accurate\",\n\t\t\tinput: &pkg.JavaVMRelease{\n\t\t\t\tJavaVersion: \"1.8.0_131\",\n\t\t\t\tFullVersion: \"1.8.0_131+b08\",\n\t\t\t},\n\t\t\texpected: \"1.8.0_131+b08\",\n\t\t},\n\t\t{\n\t\t\tname:     \"empty input fields\",\n\t\t\tinput:    &pkg.JavaVMRelease{},\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := jvmPackageVersion(tt.input)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestGetJVMVersionAndUpdate(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tversion        string\n\t\texpectedVer    string\n\t\texpectedUpdate string\n\t}{\n\t\t{\n\t\t\tname:           \"legacy version with underscore and build\",\n\t\t\tversion:        \"1.8.0_302-b08\",\n\t\t\texpectedVer:    \"1.8.0\",\n\t\t\texpectedUpdate: \"302\",\n\t\t},\n\t\t{\n\t\t\tname:           \"legacy version with underscore but no build\",\n\t\t\tversion:        \"1.8.0_302\",\n\t\t\texpectedVer:    \"1.8.0\",\n\t\t\texpectedUpdate: \"302\",\n\t\t},\n\t\t{\n\t\t\tname:           \"JEP 223 version with plus sign\",\n\t\t\tversion:        \"9.0.1+20\",\n\t\t\texpectedVer:    \"9.0.1\",\n\t\t\texpectedUpdate: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"JEP 223 version with plus but no update\",\n\t\t\tversion:        \"11.0.9+\",\n\t\t\texpectedVer:    \"11.0.9\",\n\t\t\texpectedUpdate: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"modern version without plus or underscore\",\n\t\t\tversion:        \"11.0.9\",\n\t\t\texpectedVer:    \"11.0.9\",\n\t\t\texpectedUpdate: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"legacy version without underscore or plus\",\n\t\t\tversion:        \"1.7.0\",\n\t\t\texpectedVer:    \"1.7.0\",\n\t\t\texpectedUpdate: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"empty version string\",\n\t\t\tversion:        \"\",\n\t\t\texpectedVer:    \"\",\n\t\t\texpectedUpdate: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tver, update := getJVMVersionAndUpdate(tt.version)\n\t\t\tassert.Equal(t, tt.expectedVer, ver)\n\t\t\tassert.Equal(t, tt.expectedUpdate, update)\n\t\t})\n\t}\n}\n\nfunc TestJvmPrimaryVendorProduct(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\timplementor     string\n\t\tbuildType       string\n\t\tpath            string\n\t\timageType       string\n\t\thasJdk          bool\n\t\texpectedVendor  string\n\t\texpectedProduct string\n\t}{\n\t\t{\n\t\t\tname:            \"Azul implementor with Zulu in path\",\n\t\t\timplementor:     \"Azul Systems\",\n\t\t\tpath:            \"/usr/lib/jvm/zulu-11-amd64/release\",\n\t\t\timageType:       \"JDK\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"azul\",\n\t\t\texpectedProduct: \"zulu\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Sun implementor with JDK\",\n\t\t\timplementor:     \"Sun Microsystems\",\n\t\t\tpath:            \"/usr/lib/jvm/jdk-1.8-sun-amd64/release\",\n\t\t\timageType:       \"JDK\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"sun\",\n\t\t\texpectedProduct: \"jdk\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Oracle implementor with JRE\",\n\t\t\timplementor:     \"Oracle Corporation\",\n\t\t\tpath:            \"/usr/lib/jvm/jdk-1.8-oracle-x64/release\",\n\t\t\timageType:       \"JRE\",\n\t\t\thasJdk:          false,\n\t\t\texpectedVendor:  \"oracle\",\n\t\t\texpectedProduct: \"jre\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Oracle commercial build type with JRE\",\n\t\t\timplementor:     \"\",\n\t\t\tbuildType:       \"commercial\",\n\t\t\tpath:            \"/usr/lib/jvm/jdk8/release\",\n\t\t\timageType:       \"JRE\",\n\t\t\thasJdk:          false,\n\t\t\texpectedVendor:  \"oracle\",\n\t\t\texpectedProduct: \"jre\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Oracle commercial build type with JDK\",\n\t\t\timplementor:     \"\",\n\t\t\tbuildType:       \"commercial\",\n\t\t\tpath:            \"/usr/lib/jvm/jdk8/release\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"oracle\",\n\t\t\texpectedProduct: \"jdk\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Oracle vendor with JDK in path\",\n\t\t\timplementor:     \"\",\n\t\t\tpath:            \"/usr/lib/jvm/jdk-1.8-oracle-x64/release\",\n\t\t\timageType:       \"JDK\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"oracle\",\n\t\t\texpectedProduct: \"jdk\",\n\t\t},\n\t\t{\n\t\t\tname:            \"OpenJDK with JDK\",\n\t\t\timplementor:     \"OpenJDK\",\n\t\t\tpath:            \"/opt/java/openjdk/release\",\n\t\t\timageType:       \"JDK\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"oracle\", // like temurin\n\t\t\texpectedProduct: \"openjdk\",\n\t\t},\n\t\t{\n\t\t\tname:            \"Amazon Corretto with JDK\",\n\t\t\timplementor:     \"Amazon Corretto\",\n\t\t\tpath:            \"/usr/lib/jvm/java-17-amazon-corretto/release\",\n\t\t\timageType:       \"JDK\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"oracle\", // corretto upstream is oracle openjdk\n\t\t\texpectedProduct: \"openjdk\",\n\t\t},\n\t\t{\n\t\t\tname:            \"IBM JRE\",\n\t\t\tpath:            \"/opt/ibm/java/release\",\n\t\t\texpectedVendor:  \"ibm\",\n\t\t\texpectedProduct: \"java\",\n\t\t},\n\t\t{\n\t\t\tname:            \"IBM JDK\",\n\t\t\tpath:            \"/opt/ibm/java/release\",\n\t\t\thasJdk:          true,\n\t\t\texpectedVendor:  \"ibm\",\n\t\t\texpectedProduct: \"java_sdk\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tri := pkg.JavaVMRelease{\n\t\t\t\tImplementor: tt.implementor,\n\t\t\t\tBuildType:   tt.buildType,\n\t\t\t\tImageType:   tt.imageType,\n\t\t\t}\n\t\t\tvendor, product := jvmPrimaryVendorProduct(&ri, tt.path, tt.hasJdk)\n\t\t\tassert.Equal(t, tt.expectedVendor, vendor)\n\t\t\tassert.Equal(t, tt.expectedProduct, product)\n\t\t})\n\t}\n}\n\nfunc TestJvmPurl(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tri           pkg.JavaVMRelease\n\t\tversion      string\n\t\tvendor       string\n\t\tproduct      string\n\t\texpectedPURL string\n\t}{\n\t\t{\n\t\t\tname: \"build source repo provided\",\n\t\t\tri: pkg.JavaVMRelease{\n\t\t\t\tBuildSourceRepo: \"https://github.com/adoptium/temurin-build.git\",\n\t\t\t},\n\t\t\tversion:      \"21.0.4\",\n\t\t\tvendor:       \"oracle\",\n\t\t\tproduct:      \"jdk\",\n\t\t\texpectedPURL: \"pkg:generic/oracle/jdk@21.0.4?repository_url=https%3A%2F%2Fgithub.com%2Fadoptium%2Ftemurin-build.git\",\n\t\t},\n\t\t{\n\t\t\tname: \"source repo provided, no build source repo\",\n\t\t\tri: pkg.JavaVMRelease{\n\t\t\t\tSourceRepo: \"https://github.com/adoptium/jdk21u.git\",\n\t\t\t},\n\t\t\tversion:      \"21.0.4\",\n\t\t\tvendor:       \"azul\",\n\t\t\tproduct:      \"zulu\",\n\t\t\texpectedPURL: \"pkg:generic/azul/zulu@21.0.4?repository_url=https%3A%2F%2Fgithub.com%2Fadoptium%2Fjdk21u.git\",\n\t\t},\n\t\t{\n\t\t\tname: \"no repository URLs provided\",\n\t\t\tri:   pkg.JavaVMRelease{\n\t\t\t\t// No repository URLs provided\n\t\t\t},\n\t\t\tversion:      \"17.0.2\",\n\t\t\tvendor:       \"oracle\",\n\t\t\tproduct:      \"jdk\",\n\t\t\texpectedPURL: \"pkg:generic/oracle/jdk@17.0.2\",\n\t\t},\n\t\t{\n\t\t\tname: \"JRE with source repo\",\n\t\t\tri: pkg.JavaVMRelease{\n\t\t\t\tSourceRepo: \"https://github.com/adoptium/jre-repo.git\",\n\t\t\t},\n\t\t\tversion:      \"1.8.0_302\",\n\t\t\tvendor:       \"oracle\",\n\t\t\tproduct:      \"jre\",\n\t\t\texpectedPURL: \"pkg:generic/oracle/jre@1.8.0_302?repository_url=https%3A%2F%2Fgithub.com%2Fadoptium%2Fjre-repo.git\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactualPURL := jvmPurl(tt.ri, tt.version, tt.vendor, tt.product)\n\t\t\tassert.Equal(t, tt.expectedPURL, actualPURL)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_pom_properties.go",
    "content": "package java\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst pomPropertiesGlob = \"**/*pom.properties\"\n\nfunc parsePomProperties(path string, reader io.Reader) (*pkg.JavaPomProperties, error) {\n\tvar props pkg.JavaPomProperties\n\tpropMap := make(map[string]string)\n\tscanner := bufio.NewScanner(reader)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\t// ignore empty lines and comments\n\t\tif strings.TrimSpace(line) == \"\" || strings.HasPrefix(strings.TrimLeft(line, \" \"), \"#\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tidx := strings.IndexAny(line, \"=:\")\n\t\tif idx == -1 {\n\t\t\treturn nil, fmt.Errorf(\"unable to split pom.properties key-value pairs: %q\", line)\n\t\t}\n\n\t\tkey := strings.TrimSpace(line[0:idx])\n\t\tvalue := strings.TrimSpace(line[idx+1:])\n\t\tpropMap[key] = value\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read pom.properties: %w\", err)\n\t}\n\n\tif err := mapstructure.Decode(propMap, &props); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse pom.properties: %w\", err)\n\t}\n\n\tprops.Path = path\n\n\treturn &props, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_pom_properties_test.go",
    "content": "package java\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestParseJavaPomProperties(t *testing.T) {\n\ttests := []struct {\n\t\texpected pkg.JavaPomProperties\n\t}{\n\t\t{\n\t\t\texpected: pkg.JavaPomProperties{\n\t\t\t\tPath:       \"testdata/pom/small.pom.properties\",\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\texpected: pkg.JavaPomProperties{\n\t\t\t\tPath:       \"testdata/pom/extra.pom.properties\",\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t\tName:       \"something-here\",\n\t\t\t\tExtra: map[string]string{\n\t\t\t\t\t\"another\": \"thing\",\n\t\t\t\t\t\"sweet\":   \"work\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\texpected: pkg.JavaPomProperties{\n\t\t\t\tPath:       \"testdata/pom/colon-delimited.pom.properties\",\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\texpected: pkg.JavaPomProperties{\n\t\t\t\tPath:       \"testdata/pom/equals-delimited-with-colons.pom.properties\",\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java:app-maven\",\n\t\t\t\tVersion:    \"0.1.0:something\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\texpected: pkg.JavaPomProperties{\n\t\t\t\tPath:       \"testdata/pom/colon-delimited-with-equals.pom.properties\",\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java=app-maven\",\n\t\t\t\tVersion:    \"0.1.0=something\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.expected.Path, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.expected.Path)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tactual, err := parsePomProperties(fixture.Name(), fixture)\n\t\t\tassert.NoError(t, err)\n\n\t\t\tassert.Equal(t, &test.expected, actual)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_pom_xml.go",
    "content": "package java\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven\"\n)\n\nconst (\n\tpomXMLGlob       = \"**/*pom.xml\"\n\tpomCatalogerName = \"java-pom-cataloger\"\n)\n\ntype pomXMLCataloger struct {\n\tcfg ArchiveCatalogerConfig\n}\n\nfunc (p pomXMLCataloger) Name() string {\n\treturn pomCatalogerName\n}\n\nfunc (p pomXMLCataloger) Catalog(ctx context.Context, fileResolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tlocations, err := fileResolver.FilesByGlob(\"**/pom.xml\")\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tr := maven.NewResolver(fileResolver, p.cfg.mavenConfig())\n\n\tvar errs error\n\tvar poms []*maven.Project\n\tpomLocations := map[*maven.Project]file.Location{}\n\tfor _, pomLocation := range locations {\n\t\tpom, err := readPomFromLocation(fileResolver, pomLocation)\n\t\tif err != nil || pom == nil {\n\t\t\tlog.WithFields(\"error\", err, \"pomLocation\", pomLocation).Debug(\"error while reading pom\")\n\t\t\terrs = unknown.Appendf(errs, pomLocation, \"error reading pom.xml: %w\", err)\n\t\t\tcontinue\n\t\t}\n\n\t\tpoms = append(poms, pom)\n\t\tpomLocations[pom] = pomLocation\n\t\tr.AddPom(ctx, pom, pomLocation)\n\t}\n\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\tresolved := map[maven.ID]*pkg.Package{}\n\n\t// catalog all the main packages first so these can be referenced later when building the dependency graph\n\tfor _, pom := range poms {\n\t\tlocation := pomLocations[pom] // should always exist\n\n\t\tid := r.ResolveID(ctx, pom)\n\t\tmainPkg := newPackageFromMavenPom(ctx, r, pom, location)\n\t\tif mainPkg == nil {\n\t\t\tcontinue\n\t\t}\n\t\tresolved[id] = mainPkg\n\t\tpkgs = append(pkgs, licenses.RelativeToPackage(ctx, fileResolver, *mainPkg))\n\t}\n\n\t// catalog all dependencies\n\tfor _, pom := range poms {\n\t\tlocation := pomLocations[pom] // should always exist\n\n\t\tid := r.ResolveID(ctx, pom)\n\t\tmainPkg := resolved[id]\n\n\t\tnewPkgs, newRelationships, newErrs := collectDependencies(ctx, r, resolved, mainPkg, pom, location, p.cfg.ResolveTransitiveDependencies)\n\t\tpkgs = append(pkgs, newPkgs...)\n\t\trelationships = append(relationships, newRelationships...)\n\t\terrs = unknown.Join(errs, newErrs)\n\t}\n\n\treturn pkgs, relationships, errs\n}\n\nfunc readPomFromLocation(fileResolver file.Resolver, pomLocation file.Location) (*maven.Project, error) {\n\tcontents, err := fileResolver.FileContentsByLocation(pomLocation)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contents, pomLocation.RealPath)\n\treturn maven.ParsePomXML(contents)\n}\n\n// newPackageFromMavenPom processes a single Maven POM for a given parent package, returning only the main package from the pom\nfunc newPackageFromMavenPom(ctx context.Context, r *maven.Resolver, pom *maven.Project, location file.Location) *pkg.Package {\n\tid := r.ResolveID(ctx, pom)\n\tparent, err := r.ResolveParent(ctx, pom)\n\tif err != nil {\n\t\t// this is expected in many cases, there will be no network access and the maven resolver is unable to\n\t\t// look up information, so we can continue with what little information we have\n\t\tlog.Tracef(\"unable to resolve parent due to: %v\", err)\n\t}\n\n\tvar javaPomParent *pkg.JavaPomParent\n\tif parent != nil { // parent is returned in both cases: when it is resolved or synthesized from the pom.parent info\n\t\tparentID := r.ResolveID(ctx, parent)\n\t\tjavaPomParent = &pkg.JavaPomParent{\n\t\t\tGroupID:    parentID.GroupID,\n\t\t\tArtifactID: parentID.ArtifactID,\n\t\t\tVersion:    parentID.Version,\n\t\t}\n\t}\n\n\tpomLicenses, err := r.ResolveLicenses(ctx, pom)\n\tif err != nil {\n\t\tlog.Tracef(\"error resolving licenses: %v\", err)\n\t}\n\tpkgLicenses := toPkgLicenses(ctx, &location, pomLicenses)\n\n\tm := pkg.JavaArchive{\n\t\tPomProject: &pkg.JavaPomProject{\n\t\t\tParent:      javaPomParent,\n\t\t\tGroupID:     id.GroupID,\n\t\t\tArtifactID:  id.ArtifactID,\n\t\t\tVersion:     id.Version,\n\t\t\tName:        r.ResolveProperty(ctx, pom, pom.Name),\n\t\t\tDescription: r.ResolveProperty(ctx, pom, pom.Description),\n\t\t\tURL:         r.ResolveProperty(ctx, pom, pom.URL),\n\t\t},\n\t}\n\n\tp := &pkg.Package{\n\t\tName:    id.ArtifactID,\n\t\tVersion: id.Version,\n\t\tLocations: file.NewLocationSet(\n\t\t\tlocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t\tLicenses: pkg.NewLicenseSet(pkgLicenses...),\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tPURL:     packageURL(id.ArtifactID, id.Version, m),\n\t\tMetadata: m,\n\t}\n\n\tfinalizePackage(p)\n\n\treturn p\n}\n\nfunc collectDependencies(ctx context.Context, r *maven.Resolver, resolved map[maven.ID]*pkg.Package, parentPkg *pkg.Package, pom *maven.Project, loc file.Location, includeTransitiveDependencies bool) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar errs error\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\tpomID := r.ResolveID(ctx, pom)\n\tfor _, dep := range maven.DirectPomDependencies(pom) {\n\t\tdepID := r.ResolveDependencyID(ctx, pom, dep)\n\t\tlog.WithFields(\"pomLocation\", loc, \"mavenID\", pomID, \"dependencyID\", depID).Trace(\"adding maven pom dependency\")\n\n\t\t// we may have a reference to a package pointing to an existing pom on the filesystem, but we don't want to duplicate these entries\n\t\tdepPkg := resolved[depID]\n\t\tif depPkg == nil {\n\t\t\tp, err := newPackageFromDependency(\n\t\t\t\tctx,\n\t\t\t\tr,\n\t\t\t\tpom,\n\t\t\t\tdep,\n\t\t\t\tloc.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"error\", err, \"pomLocation\", loc, \"mavenID\", pomID, \"dependencyID\", depID).Debugf(\"error adding dependency\")\n\t\t\t}\n\n\t\t\tif p == nil {\n\t\t\t\t// we don't have a valid package, just continue to the next dependency\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdepPkg = p\n\t\t\tresolved[depID] = depPkg\n\n\t\t\t// only resolve transitive dependencies if we're not already looking these up for the specific package\n\t\t\tif includeTransitiveDependencies && depID.Valid() {\n\t\t\t\tdepPom, err := r.FindPom(ctx, depID.GroupID, depID.ArtifactID, depID.Version)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.WithFields(\"mavenID\", depID, \"error\", err).Debug(\"error finding pom\")\n\t\t\t\t}\n\t\t\t\tif depPom != nil {\n\t\t\t\t\ttransitivePkgs, transitiveRelationships, transitiveErrs := collectDependencies(ctx, r, resolved, depPkg, depPom, loc, includeTransitiveDependencies)\n\t\t\t\t\tpkgs = append(pkgs, transitivePkgs...)\n\t\t\t\t\trelationships = append(relationships, transitiveRelationships...)\n\t\t\t\t\terrs = unknown.Join(errs, transitiveErrs)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpkgs = append(pkgs, *depPkg)\n\t\tif parentPkg != nil {\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: *depPkg,\n\t\t\t\tTo:   *parentPkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn pkgs, relationships, errs\n}\n\nfunc newPomProject(ctx context.Context, r *maven.Resolver, path string, pom *maven.Project) *pkg.JavaPomProject {\n\tid := r.ResolveID(ctx, pom)\n\tname := r.ResolveProperty(ctx, pom, pom.Name)\n\tprojectURL := r.ResolveProperty(ctx, pom, pom.URL)\n\n\tlog.WithFields(\"path\", path, \"artifactID\", id.ArtifactID, \"name\", name, \"projectURL\", projectURL).Trace(\"parsing pom.xml\")\n\treturn &pkg.JavaPomProject{\n\t\tPath:        path,\n\t\tParent:      pomParent(ctx, r, pom),\n\t\tGroupID:     id.GroupID,\n\t\tArtifactID:  id.ArtifactID,\n\t\tVersion:     id.Version,\n\t\tName:        name,\n\t\tDescription: cleanDescription(r.ResolveProperty(ctx, pom, pom.Description)),\n\t\tURL:         projectURL,\n\t}\n}\n\nfunc newPackageFromDependency(ctx context.Context, r *maven.Resolver, pom *maven.Project, dep maven.Dependency, locations ...file.Location) (*pkg.Package, error) {\n\tid := r.ResolveDependencyID(ctx, pom, dep)\n\n\tvar err error\n\tvar pkgLicenses []pkg.License\n\tdependencyPom, depErr := r.FindPom(ctx, id.GroupID, id.ArtifactID, id.Version)\n\tif depErr != nil {\n\t\terr = errors.Join(err, depErr)\n\t}\n\n\tvar pomProject *pkg.JavaPomProject\n\tif dependencyPom != nil {\n\t\tdepLicenses, _ := r.ResolveLicenses(ctx, dependencyPom)\n\t\tpkgLicenses = append(pkgLicenses, toPkgLicenses(ctx, nil, depLicenses)...)\n\t\tpomProject = &pkg.JavaPomProject{\n\t\t\tParent:      pomParent(ctx, r, dependencyPom),\n\t\t\tGroupID:     id.GroupID,\n\t\t\tArtifactID:  id.ArtifactID,\n\t\t\tVersion:     id.Version,\n\t\t\tName:        r.ResolveProperty(ctx, pom, pom.Name),\n\t\t\tDescription: r.ResolveProperty(ctx, pom, pom.Description),\n\t\t\tURL:         r.ResolveProperty(ctx, pom, pom.URL),\n\t\t}\n\t}\n\n\tm := pkg.JavaArchive{\n\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\tGroupID:    id.GroupID,\n\t\t\tArtifactID: id.ArtifactID,\n\t\t\tScope:      r.ResolveProperty(ctx, pom, dep.Scope),\n\t\t},\n\t\tPomProject: pomProject,\n\t}\n\n\tp := &pkg.Package{\n\t\tName:      id.ArtifactID,\n\t\tVersion:   id.Version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tLicenses:  pkg.NewLicenseSet(pkgLicenses...),\n\t\tPURL:      packageURL(id.ArtifactID, id.Version, m),\n\t\tLanguage:  pkg.Java,\n\t\tType:      pkg.JavaPkg, // TODO: should we differentiate between packages from jar/war/zip versus packages from a pom.xml that were not installed yet?\n\t\tFoundBy:   pomCatalogerName,\n\t\tMetadata:  m,\n\t}\n\n\tfinalizePackage(p)\n\n\treturn p, err\n}\n\nfunc pomParent(ctx context.Context, r *maven.Resolver, pom *maven.Project) *pkg.JavaPomParent {\n\tif pom == nil || pom.Parent == nil {\n\t\treturn nil\n\t}\n\n\tgroupID := r.ResolveProperty(ctx, pom, pom.Parent.GroupID)\n\tartifactID := r.ResolveProperty(ctx, pom, pom.Parent.ArtifactID)\n\tversion := r.ResolveProperty(ctx, pom, pom.Parent.Version)\n\n\tif groupID == \"\" && artifactID == \"\" && version == \"\" {\n\t\treturn nil\n\t}\n\n\treturn &pkg.JavaPomParent{\n\t\tGroupID:    groupID,\n\t\tArtifactID: artifactID,\n\t\tVersion:    version,\n\t}\n}\n\nfunc cleanDescription(original string) (cleaned string) {\n\tdescriptionLines := strings.Split(original, \"\\n\")\n\tfor _, line := range descriptionLines {\n\t\tline = strings.TrimSpace(line)\n\t\tif len(line) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tcleaned += line + \" \"\n\t}\n\treturn strings.TrimSpace(cleaned)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/parse_pom_xml_test.go",
    "content": "package java\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cataloging\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven\"\n\tmaventest \"github.com/anchore/syft/syft/pkg/cataloger/java/internal/maven/test\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n)\n\nfunc Test_parsePomXML(t *testing.T) {\n\tpomLocation := file.NewLocationSet(file.NewLocation(\"pom.xml\"))\n\n\texampleJavaAppMaven := pkg.Package{\n\t\tName:      \"example-java-app-maven\",\n\t\tVersion:   \"0.1.0\",\n\t\tPURL:      \"pkg:maven/org.anchore/example-java-app-maven@0.1.0\",\n\t\tLanguage:  pkg.Java,\n\t\tType:      pkg.JavaPkg,\n\t\tFoundBy:   pomCatalogerName,\n\t\tLocations: pomLocation,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tGroupID:    \"org.anchore\",\n\t\t\t\tArtifactID: \"example-java-app-maven\",\n\t\t\t\tVersion:    \"0.1.0\",\n\t\t\t},\n\t\t},\n\t}\n\tfinalizePackage(&exampleJavaAppMaven)\n\n\tjodaTime := pkg.Package{\n\t\tName:      \"joda-time\",\n\t\tVersion:   \"2.9.2\",\n\t\tPURL:      \"pkg:maven/com.joda/joda-time@2.9.2\",\n\t\tLanguage:  pkg.Java,\n\t\tType:      pkg.JavaPkg,\n\t\tFoundBy:   pomCatalogerName,\n\t\tLocations: pomLocation,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"com.joda\",\n\t\t\t\tArtifactID: \"joda-time\",\n\t\t\t},\n\t\t},\n\t}\n\tfinalizePackage(&jodaTime)\n\n\tjunit := pkg.Package{\n\t\tName:      \"junit\",\n\t\tVersion:   \"4.12\",\n\t\tPURL:      \"pkg:maven/junit/junit@4.12\",\n\t\tLanguage:  pkg.Java,\n\t\tType:      pkg.JavaPkg,\n\t\tFoundBy:   pomCatalogerName,\n\t\tLocations: pomLocation,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"junit\",\n\t\t\t\tArtifactID: \"junit\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\tfinalizePackage(&junit)\n\n\ttests := []struct {\n\t\tdir                   string\n\t\texpected              []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tdir: \"testdata/pom/example-java-app-maven\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\texampleJavaAppMaven,\n\t\t\t\tjodaTime,\n\t\t\t\tjunit,\n\t\t\t},\n\t\t\texpectedRelationships: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: jodaTime,\n\t\t\t\t\tTo:   exampleJavaAppMaven,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: junit,\n\t\t\t\t\tTo:   exampleJavaAppMaven,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.dir, func(t *testing.T) {\n\t\t\tfor i := range test.expected {\n\t\t\t\ttest.expected[i].Locations.Add(file.NewLocation(\"pom.xml\"))\n\t\t\t}\n\n\t\t\tcat := NewPomCataloger(ArchiveCatalogerConfig{\n\t\t\t\tArchiveSearchConfig: cataloging.ArchiveSearchConfig{\n\t\t\t\t\tIncludeIndexedArchives:   true,\n\t\t\t\t\tIncludeUnindexedArchives: true,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tpkgtest.TestCataloger(t, test.dir, cat, test.expected, test.expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_parseCommonsTextPomXMLProject(t *testing.T) {\n\tmavenLocalRepoDir := \"internal/maven/testdata/maven-repo\"\n\tmavenBaseURL := maventest.MockRepo(t, \"internal/maven/testdata/maven-repo\")\n\n\ttests := []struct {\n\t\tname     string\n\t\tdir      string\n\t\tconfig   ArchiveCatalogerConfig\n\t\texpected expected\n\t}{\n\t\t{\n\t\t\tname: \"no resolution\",\n\t\t\tdir:  \"testdata/pom/commons-text-1.10.0\",\n\t\t\tconfig: ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t},\n\t\t\texpected: getCommonsTextExpectedPackages(false),\n\t\t},\n\t\t{\n\t\t\tname: \"use network\",\n\t\t\tdir:  \"testdata/pom/commons-text-1.10.0\",\n\t\t\tconfig: ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:              true,\n\t\t\t\tMavenBaseURL:            mavenBaseURL,\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t},\n\t\t\texpected: getCommonsTextExpectedPackages(true),\n\t\t},\n\t\t{\n\t\t\tname: \"use local repository\",\n\t\t\tdir:  \"testdata/pom/commons-text-1.10.0\",\n\t\t\tconfig: ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tUseMavenLocalRepository: true,\n\t\t\t\tMavenLocalRepositoryDir: mavenLocalRepoDir,\n\t\t\t},\n\t\t\texpected: getCommonsTextExpectedPackages(true),\n\t\t},\n\t\t{\n\t\t\tname: \"transitive dependencies\",\n\t\t\tdir:  \"testdata/pom/transitive-top-level\",\n\t\t\tconfig: ArchiveCatalogerConfig{\n\t\t\t\tUseNetwork:                    false,\n\t\t\t\tUseMavenLocalRepository:       true,\n\t\t\t\tMavenLocalRepositoryDir:       mavenLocalRepoDir,\n\t\t\t\tResolveTransitiveDependencies: true,\n\t\t\t},\n\t\t\texpected: expectedTransientPackageData(),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcat := NewPomCataloger(ArchiveCatalogerConfig{\n\t\t\t\tArchiveSearchConfig: cataloging.ArchiveSearchConfig{\n\t\t\t\t\tIncludeIndexedArchives:   true,\n\t\t\t\t\tIncludeUnindexedArchives: true,\n\t\t\t\t},\n\t\t\t\tUseNetwork:                    test.config.UseNetwork,\n\t\t\t\tMavenBaseURL:                  test.config.MavenBaseURL,\n\t\t\t\tUseMavenLocalRepository:       test.config.UseMavenLocalRepository,\n\t\t\t\tMavenLocalRepositoryDir:       test.config.MavenLocalRepositoryDir,\n\t\t\t\tResolveTransitiveDependencies: test.config.ResolveTransitiveDependencies,\n\t\t\t})\n\t\t\tpkgtest.TestCataloger(t, test.dir, cat, test.expected.packages, test.expected.relationships)\n\t\t})\n\t}\n}\n\nfunc Test_parsePomXMLProject(t *testing.T) {\n\t// TODO: ideally we would have the path to the contained pom.xml, not the jar\n\tjarLocation := file.NewLocation(\"path/to/archive.jar\")\n\tctx := pkgtest.Context(t)\n\ttests := []struct {\n\t\tname     string\n\t\tproject  *pkg.JavaPomProject\n\t\tlicenses []pkg.License\n\t}{\n\t\t{\n\t\t\tname: \"no license info\",\n\t\t\tproject: &pkg.JavaPomProject{\n\t\t\t\tPath: \"testdata/pom/commons-codec.pom.xml\",\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\t\tArtifactID: \"commons-parent\",\n\t\t\t\t\tVersion:    \"42\",\n\t\t\t\t},\n\t\t\t\tGroupID:     \"commons-codec\",\n\t\t\t\tArtifactID:  \"commons-codec\",\n\t\t\t\tVersion:     \"1.11\",\n\t\t\t\tName:        \"Apache Commons Codec\",\n\t\t\t\tDescription: \"The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal.  In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.\",\n\t\t\t\tURL:         \"http://commons.apache.org/proper/commons-codec/\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with license data\",\n\t\t\tproject: &pkg.JavaPomProject{\n\t\t\t\tPath: \"testdata/pom/neo4j-license-maven-plugin.pom.xml\",\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"org.sonatype.oss\",\n\t\t\t\t\tArtifactID: \"oss-parent\",\n\t\t\t\t\tVersion:    \"7\",\n\t\t\t\t},\n\t\t\t\tGroupID:     \"org.neo4j.build.plugins\",\n\t\t\t\tArtifactID:  \"license-maven-plugin\",\n\t\t\t\tVersion:     \"4-SNAPSHOT\",\n\t\t\t\tName:        \"license-maven-plugin\",\n\t\t\t\tDescription: \"Maven 2 plugin to check and update license headers in source files\",\n\t\t\t\tURL:         \"http://components.neo4j.org/license-maven-plugin/4-SNAPSHOT\",\n\t\t\t},\n\t\t\tlicenses: []pkg.License{\n\t\t\t\t{\n\t\t\t\t\tValue:          \"The Apache Software License, Version 2.0\",\n\t\t\t\t\tSPDXExpression: \"\", // TODO: ideally we would parse this title to get Apache-2.0 (created issue #2210 https://github.com/anchore/syft/issues/2210)\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\tURLs:           []string{\"http://www.apache.org/licenses/LICENSE-2.0.txt\"},\n\t\t\t\t\tLocations:      file.NewLocationSet(jarLocation),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\tLocations:      file.NewLocationSet(jarLocation),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tType:      license.Declared,\n\t\t\t\t\tURLs:      []string{\"https://opensource.org/license/unlicense/\"},\n\t\t\t\t\tLocations: file.NewLocationSet(jarLocation),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.project.Path)\n\t\t\tassert.NoError(t, err)\n\t\t\tr := maven.NewResolver(nil, maven.Config{})\n\n\t\t\tpom, err := maven.ParsePomXML(fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tactual := newPomProject(pkgtest.Context(t), r, fixture.Name(), pom)\n\t\t\tassert.NoError(t, err)\n\t\t\tassert.Equal(t, test.project, actual)\n\n\t\t\tlicenses, err := r.ResolveLicenses(pkgtest.Context(t), pom)\n\t\t\t//assert.NoError(t, err)\n\t\t\tassert.Equal(t, test.licenses, toPkgLicenses(ctx, &jarLocation, licenses))\n\t\t})\n\t}\n}\n\nfunc Test_pomParent(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    *maven.Parent\n\t\texpected *pkg.JavaPomParent\n\t}{\n\t\t{\n\t\t\tname: \"only group ID\",\n\t\t\tinput: &maven.Parent{\n\t\t\t\tGroupID: ptr(\"org.something\"),\n\t\t\t},\n\t\t\texpected: &pkg.JavaPomParent{\n\t\t\t\tGroupID: \"org.something\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"only artifact ID\",\n\t\t\tinput: &maven.Parent{\n\t\t\t\tArtifactID: ptr(\"something\"),\n\t\t\t},\n\t\t\texpected: &pkg.JavaPomParent{\n\t\t\t\tArtifactID: \"something\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"only Version\",\n\t\t\tinput: &maven.Parent{\n\t\t\t\tVersion: ptr(\"something\"),\n\t\t\t},\n\t\t\texpected: &pkg.JavaPomParent{\n\t\t\t\tVersion: \"something\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"nil\",\n\t\t\tinput:    nil,\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tinput:    &maven.Parent{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"unused field\",\n\t\t\tinput: &maven.Parent{\n\t\t\t\tRelativePath: ptr(\"something\"),\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tr := maven.NewResolver(nil, maven.DefaultConfig())\n\t\t\tassert.Equal(t, test.expected, pomParent(pkgtest.Context(t), r, &maven.Project{Parent: test.input}))\n\t\t})\n\t}\n}\n\nfunc Test_cleanDescription(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"indent + multiline\",\n\t\t\tinput: `        The Apache Commons Codec package contains simple encoder and decoders for\n        various formats such as Base64 and Hexadecimal.  In addition to these\n        widely used encoders and decoders, the codec package also maintains a\n        collection of phonetic encoding utilities.`,\n\t\t\texpected: \"The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal.  In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, cleanDescription(test.input))\n\t\t})\n\t}\n}\n\nfunc Test_resolveLicenses(t *testing.T) {\n\tmavenURL := maventest.MockRepo(t, \"internal/maven/testdata/maven-repo\")\n\tlocalM2 := \"internal/maven/testdata/maven-repo\"\n\tlocalDir := \"internal/maven/testdata/local\"\n\tcontainingDir := \"internal/maven/testdata/local/contains-child-1\"\n\n\texpectedLicenses := []pkg.License{\n\t\t{\n\t\t\tValue:          \"Eclipse Public License v2.0\",\n\t\t\tSPDXExpression: \"\",\n\t\t\tType:           license.Declared,\n\t\t\tURLs:           []string{\"https://www.eclipse.org/legal/epl-v20.html\"},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tscanDir  string\n\t\tcfg      ArchiveCatalogerConfig\n\t\texpected []pkg.License\n\t}{\n\t\t{\n\t\t\tname:    \"local no resolution\",\n\t\t\tscanDir: containingDir,\n\t\t\tcfg: ArchiveCatalogerConfig{\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tMavenLocalRepositoryDir: \"\",\n\t\t\t\tMavenBaseURL:            \"\",\n\t\t\t},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"local all poms\",\n\t\t\tscanDir: localDir,\n\t\t\tcfg: ArchiveCatalogerConfig{\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t\tUseNetwork:              false,\n\t\t\t},\n\t\t\texpected: expectedLicenses,\n\t\t},\n\t\t{\n\t\t\tname:    \"local m2 cache\",\n\t\t\tscanDir: containingDir,\n\t\t\tcfg: ArchiveCatalogerConfig{\n\t\t\t\tUseMavenLocalRepository: true,\n\t\t\t\tMavenLocalRepositoryDir: localM2,\n\t\t\t\tUseNetwork:              false,\n\t\t\t\tMavenBaseURL:            \"\",\n\t\t\t},\n\t\t\texpected: expectedLicenses,\n\t\t},\n\t\t{\n\t\t\tname:    \"local with network\",\n\t\t\tscanDir: containingDir,\n\t\t\tcfg: ArchiveCatalogerConfig{\n\t\t\t\tUseMavenLocalRepository: false,\n\t\t\t\tUseNetwork:              true,\n\t\t\t\tMavenBaseURL:            mavenURL,\n\t\t\t},\n\t\t\texpected: expectedLicenses,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcat := NewPomCataloger(test.cfg)\n\n\t\t\tds, err := directorysource.NewFromPath(test.scanDir)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfr, err := ds.FileResolver(source.AllLayersScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tctx := pkgtest.Context(t)\n\t\t\tpkgs, _, err := cat.Catalog(ctx, fr)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar child1 pkg.Package\n\t\t\tfor _, p := range pkgs {\n\t\t\t\tif p.Name == \"child-one\" {\n\t\t\t\t\tchild1 = p\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\trequire.Equal(t, \"child-one\", child1.Name)\n\n\t\t\tgot := child1.Licenses.ToSlice()\n\t\t\tfor i := 0; i < len(got); i++ {\n\t\t\t\t// ignore locations, just check license text\n\t\t\t\t(&got[i]).Locations = file.LocationSet{}\n\t\t\t}\n\t\t\trequire.ElementsMatch(t, test.expected, got)\n\t\t})\n\t}\n}\n\nfunc Test_corruptPomXml(t *testing.T) {\n\tc := NewPomCataloger(DefaultArchiveCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/corrupt\").\n\t\tWithError().\n\t\tTestCataloger(t, c)\n}\n\ntype expected struct {\n\tpackages      []pkg.Package\n\trelationships []artifact.Relationship\n}\n\nfunc getCommonsTextExpectedPackages(resolved bool) expected {\n\tpomXmlLocation := file.NewLocationSet(file.NewLocation(\"pom.xml\"))\n\n\tcommonsText := pkg.Package{\n\t\tName:     \"commons-text\",\n\t\tVersion:  \"1.10.0\",\n\t\tPURL:     \"pkg:maven/org.apache.commons/commons-text@1.10.0\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\t\tArtifactID: \"commons-parent\",\n\t\t\t\t\tVersion:    \"54\",\n\t\t\t\t},\n\t\t\t\tGroupID:     \"org.apache.commons\",\n\t\t\t\tArtifactID:  \"commons-text\",\n\t\t\t\tVersion:     \"1.10.0\",\n\t\t\t\tName:        \"Apache Commons Text\",\n\t\t\t\tDescription: \"Apache Commons Text is a library focused on algorithms working on strings.\",\n\t\t\t\tURL:         \"https://commons.apache.org/proper/commons-text\",\n\t\t\t},\n\t\t},\n\t}\n\n\tcommonsLang3 := pkg.Package{\n\t\tName:     \"commons-lang3\",\n\t\tVersion:  \"3.12.0\",\n\t\tPURL:     \"pkg:maven/org.apache.commons/commons-lang3@3.12.0\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-lang3\",\n\t\t\t},\n\t\t},\n\t}\n\n\tjunitJupiter := pkg.Package{\n\t\tName:     \"junit-jupiter\",\n\t\tVersion:  \"\",\n\t\tPURL:     \"pkg:maven/org.junit.jupiter/junit-jupiter\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.junit.jupiter\",\n\t\t\t\tArtifactID: \"junit-jupiter\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tassertjCore := pkg.Package{\n\t\tName:     \"assertj-core\",\n\t\tVersion:  \"3.23.1\",\n\t\tPURL:     \"pkg:maven/org.assertj/assertj-core@3.23.1\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.assertj\",\n\t\t\t\tArtifactID: \"assertj-core\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tcommonsIO := pkg.Package{\n\t\tName:     \"commons-io\",\n\t\tVersion:  \"2.11.0\",\n\t\tPURL:     \"pkg:maven/commons-io/commons-io@2.11.0\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"commons-io\",\n\t\t\t\tArtifactID: \"commons-io\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tmockitoInline := pkg.Package{\n\t\tName:     \"mockito-inline\",\n\t\tVersion:  \"4.8.0\",\n\t\tPURL:     \"pkg:maven/org.mockito/mockito-inline@4.8.0\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.mockito\",\n\t\t\t\tArtifactID: \"mockito-inline\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tjs := pkg.Package{\n\t\tName:     \"js\",\n\t\tVersion:  \"22.0.0.2\",\n\t\tPURL:     \"pkg:maven/org.graalvm.js/js@22.0.0.2\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.graalvm.js\",\n\t\t\t\tArtifactID: \"js\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tjsScriptengine := pkg.Package{\n\t\tName:     \"js-scriptengine\",\n\t\tVersion:  \"22.0.0.2\",\n\t\tPURL:     \"pkg:maven/org.graalvm.js/js-scriptengine@22.0.0.2\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.graalvm.js\",\n\t\t\t\tArtifactID: \"js-scriptengine\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tcommonsRngSimple := pkg.Package{\n\t\tName:     \"commons-rng-simple\",\n\t\tVersion:  \"1.4\",\n\t\tPURL:     \"pkg:maven/org.apache.commons/commons-rng-simple@1.4\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-rng-simple\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tjmhCore := pkg.Package{\n\t\tName:     \"jmh-core\",\n\t\tVersion:  \"1.35\",\n\t\tPURL:     \"pkg:maven/org.openjdk.jmh/jmh-core@1.35\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.openjdk.jmh\",\n\t\t\t\tArtifactID: \"jmh-core\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tjmhGeneratorAnnprocess := pkg.Package{\n\t\tName:     \"jmh-generator-annprocess\",\n\t\tVersion:  \"1.35\",\n\t\tPURL:     \"pkg:maven/org.openjdk.jmh/jmh-generator-annprocess@1.35\",\n\t\tLanguage: pkg.Java,\n\t\tType:     pkg.JavaPkg,\n\t\tFoundBy:  pomCatalogerName,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.openjdk.jmh\",\n\t\t\t\tArtifactID: \"jmh-generator-annprocess\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\n\tif resolved {\n\t\tjunitJupiter.Version = \"5.9.1\"\n\t}\n\n\tpkgs := []pkg.Package{\n\t\tcommonsText,\n\t\tcommonsLang3,\n\t\tjunitJupiter,\n\t\tassertjCore,\n\t\tcommonsIO,\n\t\tmockitoInline,\n\t\tjs,\n\t\tjsScriptengine,\n\t\tcommonsRngSimple,\n\t\tjmhCore,\n\t\tjmhGeneratorAnnprocess,\n\t}\n\n\tvar relationships []artifact.Relationship\n\tfor i := range pkgs {\n\t\tp := &pkgs[i]\n\t\tp.Locations = pomXmlLocation\n\t\tfinalizePackage(p)\n\t\tif i == 0 {\n\t\t\tcontinue\n\t\t}\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: *p,\n\t\t\tTo:   pkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t})\n\t}\n\n\treturn expected{pkgs, relationships}\n}\n\nfunc expectedTransientPackageData() expected {\n\tepl2 := pkg.NewLicenseSet(pkg.License{\n\t\tValue: \"Eclipse Public License v2.0\",\n\t\tType:  license.Declared,\n\t\tURLs:  []string{\"https://www.eclipse.org/legal/epl-v20.html\"},\n\t})\n\ttransitiveTopLevel := pkg.Package{\n\t\tName:    \"transitive-top-level\",\n\t\tVersion: \"99\",\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tGroupID:    \"my.other.group\",\n\t\t\t\tArtifactID: \"transitive-top-level\",\n\t\t\t\tVersion:    \"99\",\n\t\t\t},\n\t\t},\n\t}\n\tchildOne := pkg.Package{\n\t\tName:     \"child-one\",\n\t\tVersion:  \"1.3.6\",\n\t\tLicenses: epl2,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\tArtifactID: \"child-one\",\n\t\t\t\tVersion:    \"1.3.6\",\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\t\tArtifactID: \"parent-one\",\n\t\t\t\t\tVersion:    \"3.11.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\tArtifactID: \"child-one\",\n\t\t\t},\n\t\t},\n\t}\n\tchildTwo := pkg.Package{\n\t\tName:     \"child-two\",\n\t\tVersion:  \"2.1.90\",\n\t\tLicenses: epl2,\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProject: &pkg.JavaPomProject{\n\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\tArtifactID: \"child-two\",\n\t\t\t\tVersion:    \"2.1.90\",\n\t\t\t\tParent: &pkg.JavaPomParent{\n\t\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\t\tArtifactID: \"parent-one\",\n\t\t\t\t\tVersion:    \"3.11.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"my.org\",\n\t\t\t\tArtifactID: \"child-two\",\n\t\t\t\tScope:      \"test\",\n\t\t\t},\n\t\t},\n\t}\n\tcommonsLang3_113_7_8_0 := pkg.Package{\n\t\tName:    \"commons-lang3\",\n\t\tVersion: \"3.113.7.8.0\",\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-lang3\",\n\t\t\t},\n\t\t},\n\t}\n\tcommonsLang3_12_0 := pkg.Package{\n\t\tName:    \"commons-lang3\",\n\t\tVersion: \"3.12.0\",\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-lang3\",\n\t\t\t},\n\t\t},\n\t}\n\tcommonsMath3 := pkg.Package{\n\t\tName:    \"commons-math3.11.0\",\n\t\tVersion: \"3.5\",\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-math3.11.0\",\n\t\t\t},\n\t\t},\n\t}\n\tcommonsExec := pkg.Package{\n\t\tName:    \"commons-exec\",\n\t\tVersion: \"1.3\",\n\t\tMetadata: pkg.JavaArchive{\n\t\t\tPomProperties: &pkg.JavaPomProperties{\n\t\t\t\tGroupID:    \"org.apache.commons\",\n\t\t\t\tArtifactID: \"commons-exec\",\n\t\t\t},\n\t\t},\n\t}\n\n\tallPackages := []*pkg.Package{\n\t\t&transitiveTopLevel,\n\t\t&childOne,\n\t\t&childTwo,\n\t\t&commonsLang3_12_0,\n\t\t&commonsLang3_113_7_8_0,\n\t\t&commonsMath3,\n\t\t&commonsExec,\n\t}\n\n\tfor _, p := range allPackages {\n\t\tp.Language = pkg.Java\n\t\tp.Type = pkg.JavaPkg\n\t\tp.FoundBy = pomCatalogerName\n\t\tp.Locations = file.NewLocationSet(file.NewLocation(\"pom.xml\"))\n\t\tfinalizePackage(p)\n\t}\n\n\tpkgs := make([]pkg.Package, len(allPackages))\n\tfor i := 0; i < len(allPackages); i++ {\n\t\tpkgs[i] = *allPackages[i]\n\t}\n\n\tdepOf := func(a, b pkg.Package) artifact.Relationship {\n\t\treturn artifact.Relationship{\n\t\t\tFrom: a,\n\t\t\tTo:   b,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t}\n\t}\n\n\treturn expected{\n\t\tpackages: pkgs,\n\t\trelationships: []artifact.Relationship{\n\t\t\tdepOf(childTwo, transitiveTopLevel),\n\t\t\tdepOf(childOne, transitiveTopLevel),\n\t\t\tdepOf(commonsLang3_12_0, childOne),\n\t\t\tdepOf(commonsLang3_113_7_8_0, childTwo),\n\t\t\tdepOf(commonsMath3, childTwo),\n\t\t\tdepOf(commonsExec, childTwo),\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/save_archive_to_tmp.go",
    "content": "package java\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/anchore/syft/internal/tmpdir\"\n)\n\nfunc saveArchiveToTmp(td *tmpdir.TempDir, archiveVirtualPath string, reader io.Reader) (string, string, func(), error) {\n\tname := filepath.Base(archiveVirtualPath)\n\ttempDir, cleanupFn, err := td.NewChild(\"archive-contents\") //nolint:gocritic // cleanup is returned to caller, not deferred here\n\tif err != nil {\n\t\treturn \"\", \"\", func() {}, fmt.Errorf(\"unable to create tempdir for archive processing: %w\", err)\n\t}\n\n\tarchivePath := filepath.Join(tempDir, \"archive-\"+name)\n\tcontentDir := filepath.Join(tempDir, \"contents\")\n\n\terr = os.Mkdir(contentDir, 0755)\n\tif err != nil {\n\t\treturn contentDir, \"\", cleanupFn, fmt.Errorf(\"unable to create processing tempdir: %w\", err)\n\t}\n\n\tarchiveFile, err := os.Create(archivePath)\n\tif err != nil {\n\t\treturn contentDir, \"\", cleanupFn, fmt.Errorf(\"unable to create archive: %w\", err)\n\t}\n\tdefer archiveFile.Close()\n\n\t// note: no size limit here — the reader comes from a file already enumerated by the\n\t// resolver, not from an untrusted network source. The file size is bounded by the\n\t// source image/directory being scanned.\n\t_, err = io.Copy(archiveFile, reader)\n\tif err != nil {\n\t\treturn contentDir, archivePath, cleanupFn, fmt.Errorf(\"unable to copy archive: %w\", err)\n\t}\n\n\treturn contentDir, archivePath, cleanupFn, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/tar_wrapped_archive_parser.go",
    "content": "package java\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar genericTarGlobs = []string{\n\t\"**/*.tar\",\n\t// gzipped tar\n\t\"**/*.tar.gz\",\n\t\"**/*.tgz\",\n\t// bzip2\n\t\"**/*.tar.bz\",\n\t\"**/*.tar.bz2\",\n\t\"**/*.tbz\",\n\t\"**/*.tbz2\",\n\t// brotli\n\t\"**/*.tar.br\",\n\t\"**/*.tbr\",\n\t// lz4\n\t\"**/*.tar.lz4\",\n\t\"**/*.tlz4\",\n\t// sz\n\t\"**/*.tar.sz\",\n\t\"**/*.tsz\",\n\t// xz\n\t\"**/*.tar.xz\",\n\t\"**/*.txz\",\n\t// zst\n\t\"**/*.tar.zst\",\n\t\"**/*.tzst\",\n\t\"**/*.tar.zstd\",\n\t\"**/*.tzstd\",\n}\n\n// TODO: when the generic archive cataloger is implemented, this should be removed (https://github.com/anchore/syft/issues/246)\n\n// parseTarWrappedJavaArchive is a parser function for java archive contents contained within arbitrary tar files.\n// note: for compressed tars this is an extremely expensive operation and can lead to performance degradation. This is\n// due to the fact that there is no central directory header (say as in zip), which means that in order to get\n// a file listing within the archive you must decompress the entire archive and seek through all of the entries.\n\ntype genericTarWrappedJavaArchiveParser struct {\n\tcfg ArchiveCatalogerConfig\n}\n\nfunc newGenericTarWrappedJavaArchiveParser(cfg ArchiveCatalogerConfig) genericTarWrappedJavaArchiveParser {\n\treturn genericTarWrappedJavaArchiveParser{\n\t\tcfg: cfg,\n\t}\n}\n\nfunc (gtp genericTarWrappedJavaArchiveParser) parseTarWrappedJavaArchive(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\tcontentPath, archivePath, cleanupFn, err := saveArchiveToTmp(td, reader.Path(), reader)\n\t// note: even on error, we should always run cleanup functions\n\tdefer cleanupFn()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// look for java archives within the tar archive\n\treturn discoverPkgsFromTar(ctx, reader.Location, archivePath, contentPath, gtp.cfg)\n}\n\nfunc discoverPkgsFromTar(ctx context.Context, location file.Location, archivePath, contentPath string, cfg ArchiveCatalogerConfig) ([]pkg.Package, []artifact.Relationship, error) {\n\topeners, err := intFile.ExtractGlobsFromTarToUniqueTempFile(ctx, archivePath, contentPath, archiveFormatGlobs...)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to extract files from tar: %w\", err)\n\t}\n\n\treturn discoverPkgsFromOpeners(ctx, location, openers, nil, cfg)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/tar_wrapped_archive_parser_test.go",
    "content": "package java\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parseTarWrappedJavaArchive(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.tar\",\n\t\t\texpected: []string{\n\t\t\t\t\"example-java-app-maven\",\n\t\t\t\t\"joda-time\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.tar.gz\",\n\t\t\texpected: []string{\n\t\t\t\t\"example-java-app-maven\",\n\t\t\t\t\"joda-time\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.tgz\",\n\t\t\texpected: []string{\n\t\t\t\t\"example-java-app-maven\",\n\t\t\t\t\"joda-time\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(path.Base(test.fixture), func(t *testing.T) {\n\t\t\tgenerateJavaBuildFixture(t, test.fixture)\n\n\t\t\tfixture, err := os.Open(test.fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tgtp := newGenericTarWrappedJavaArchiveParser(ArchiveCatalogerConfig{})\n\t\t\tactualPkgs, _, err := gtp.parseTarWrappedJavaArchive(pkgtest.Context(t), nil, nil, file.LocationReadCloser{\n\t\t\t\tLocation:   file.NewLocation(test.fixture),\n\t\t\t\tReadCloser: fixture,\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar actualNames []string\n\t\t\tfor _, p := range actualPkgs {\n\t\t\t\tactualNames = append(actualNames, p.Name)\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.expected, actualNames)\n\t\t})\n\t}\n}\n\nfunc Test_corruptTarArchive(t *testing.T) {\n\tap := newGenericTarWrappedJavaArchiveParser(DefaultArchiveCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/example.tar\").\n\t\tWithError().\n\t\tTestParser(t, ap.parseTarWrappedJavaArchive)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/Makefile",
    "content": ".DEFAULT_GOAL := default\n\ndefault:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir || exit 1; \\\n\t\tfi; \\\n\tdone\n\n%:\n\t@for dir in $(shell find . -mindepth 1 -maxdepth 1 -type d); do \\\n\t\tif [ -f \"$$dir/Makefile\" ]; then \\\n\t\t\t$(MAKE) -C $$dir $@ || exit 1; \\\n\t\tfi; \\\n\tdone\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/corrupt/.gitignore",
    "content": "# override root level ignores for test fixtures\n!*\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/corrupt/example.jar",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/corrupt/pom.xml",
    "content": "<this is not a valid pom xml>"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/.gitignore",
    "content": "# we want to override some of the root level ignores just for the fixutes that we know are safe\n!*"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.br",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.bz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.bz2",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.lz4",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.sz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.xz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.zst",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tar.zstd",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tbr",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tbz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tbz2",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tgz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tlz4",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tsz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.txz",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tzst",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/archives/example.tzstd",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/.gitignore",
    "content": "# we want to override some of the root level ignores just for the fixutes that we know are safe\n!*"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.ear",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.far",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.hpi",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.jar",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.jpi",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.kar",
    "content": "example archive"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.lpkg",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.nar",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.par",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.sar",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/java-archives/example.war",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/glob-paths/src/pom.xml",
    "content": "bogus pom.xml"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/graalvm-sbom/micronaut.json",
    "content": "{\n    \"bomFormat\": \"CycloneDX\",\n    \"specVersion\": \"1.6\",\n    \"version\": 1,\n    \"serialNumber\": \"urn:uuid:43538af4-f715-3d85-9629-336fdd3790ad\",\n    \"metadata\": {\n        \"component\": {\n            \"type\": \"library\",\n            \"group\": \"com.test\",\n            \"name\": \"main-test-app\",\n            \"version\": \"1.0-SNAPSHOT\",\n            \"purl\": \"pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT\",\n            \"bom-ref\": \"pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:app:main-test-app:1.0-SNAPSHOT:*:*:*:*:*:*:*\"\n                }\n            ]\n        }\n    },\n    \"components\": [\n        {\n            \"type\": \"library\",\n            \"group\": \"io.netty\",\n            \"name\": \"netty-codec-http2\",\n            \"version\": \"4.1.73.Final\",\n            \"purl\": \"pkg:maven/io.netty/netty-codec-http2@4.1.104.Final\",\n            \"bom-ref\": \"pkg:maven/io.netty/netty-codec-http2@4.1.104.Final\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:codec:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty-codec-http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:codec:netty_codec_http2:4.1.73.Final:*:*:*:*:*:*:*\"\n                }\n            ]\n        },\n        {\n            \"type\": \"library\",\n            \"group\": \"io.micronaut\",\n            \"name\": \"core\",\n            \"version\": \"4.2.3\",\n            \"purl\": \"pkg:maven/io.micronaut/core@4.2.3\",\n            \"bom-ref\": \"pkg:maven/io.micronaut/core@4.2.3\",\n            \"properties\": [\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:core:core:4.2.3:*:*:*:*:*:*:*\"\n                },\n                {\n                    \"name\": \"syft:cpe23\",\n                    \"value\": \"cpe:2.3:a:micronaut:core:4.2.3:*:*:*:*:*:*:*\"\n                }\n            ]\n        },\n        {\n            \"type\": \"library\",\n            \"name\": \"basic-lib\",\n            \"version\": \"1.0\"\n        }\n    ],\n    \"dependencies\": [\n        {\n            \"ref\": \"pkg:maven/io.micronaut/core@4.2.3\",\n            \"dependsOn\": [\n                \"pkg:maven/io.netty/netty-codec-http2@4.1.104.Final\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/gradle/.gitignore",
    "content": ".gradle\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/gradle/build.gradle",
    "content": "plugins {\n    id 'java'\n    id 'eclipse'\n    id 'application'\n}\n\nmainClassName = 'hello.HelloWorld'\n\ndependencyLocking {\n    lockAllConfigurations()\n}\n// tag::repositories[]\nrepositories {\n    mavenCentral()\n}\n// end::repositories[]\n\n// tag::dependencies[]\nsourceCompatibility = 1.8\ntargetCompatibility = 1.8\n\ndependencies {\n    implementation \"joda-time:joda-time:2.2\"\n    testImplementation \"junit:junit:4.12\"\n}\n// end::dependencies[]\n\n// tag::jar[]\njar {\n    archivesBaseName = 'example-java-app-gradle'\n    version =  '0.1.0'\n    manifest {\n        attributes(\n        'Main-Class': 'hello.HelloWorld'\n        )\n    }\n    from {\n        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }\n    }\n}\n// end::jar[]\n\n// tag::wrapper[]\n// end::wrapper[]\n\n// to invoke: gradle resolveAndLockAll --write-locks\ntasks.register('resolveAndLockAll') {\n    notCompatibleWithConfigurationCache(\"Filters configurations at execution time\")\n    doFirst {\n        assert gradle.startParameter.writeDependencyLocks\n    }\n    doLast {\n        configurations.findAll {\n            // Add any custom filtering on the configurations to be resolved\n            it.canBeResolved\n        }.each { it.resolve() }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/gradle/gradle.lockfile",
    "content": "# This is a Gradle generated file for dependency locking.\n# Manual edits can break the build and are not advised.\n# This file is expected to be part of source control.\njoda-time:joda-time:2.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath\njunit:junit:4.12=testCompileClasspath,testRuntimeClasspath\norg.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath\nempty=annotationProcessor,testAnnotationProcessor\norg.apache.commons:commons-text:1.8=compileClasspath"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/.gitignore",
    "content": "/cache"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/Makefile",
    "content": "CACHE_DIR = cache\nCACHE_PATH = $(shell pwd)/cache\nFINGERPRINT_FILE=$(CACHE_DIR).fingerprint\n\nifndef CACHE_DIR\n    $(error CACHE_DIR is not set)\nendif\n\nJACKSON_CORE = jackson-core-2.15.2\nSBT_JACKSON_CORE = com.fasterxml.jackson.core.jackson-core-2.15.2\nOPENSAML_CORE = opensaml-core-3.4.6\nAPI_ALL_SOURCES = api-all-2.0.0-sources\nSPRING_INSTRUMENTATION = spring-instrumentation-4.3.0-1.0\nMULTIPLE_MATCHING = multiple-matching-2.11.5\nORG_MULTIPLE_THENAME = org.multiple-thename\nMICRONAUT_AOP = micronaut-aop-4.9.11\nCOMMONS_LANG3 = commons-lang3-3.12.0\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: $(CACHE_DIR)\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n$(CACHE_DIR): $(CACHE_DIR)/$(JACKSON_CORE).jar $(CACHE_DIR)/$(SBT_JACKSON_CORE).jar $(CACHE_DIR)/$(OPENSAML_CORE).jar  $(CACHE_DIR)/$(API_ALL_SOURCES).jar $(CACHE_DIR)/$(SPRING_INSTRUMENTATION).jar $(CACHE_DIR)/$(MULTIPLE_MATCHING).jar $(CACHE_DIR)/$(MICRONAUT_AOP).jar $(CACHE_DIR)/$(COMMONS_LANG3).jar\n\n$(CACHE_DIR)/$(JACKSON_CORE).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(JACKSON_CORE) && zip -r $(CACHE_PATH)/$(JACKSON_CORE).jar .\n\n$(CACHE_DIR)/$(SBT_JACKSON_CORE).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(SBT_JACKSON_CORE) && zip -r $(CACHE_PATH)/$(SBT_JACKSON_CORE).jar .\n\n$(CACHE_DIR)/$(OPENSAML_CORE).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(OPENSAML_CORE) && zip -r $(CACHE_PATH)/$(OPENSAML_CORE).jar .\n\n$(CACHE_DIR)/$(API_ALL_SOURCES).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(API_ALL_SOURCES) && zip -r $(CACHE_PATH)/$(API_ALL_SOURCES).jar .\n\n$(CACHE_DIR)/$(SPRING_INSTRUMENTATION).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(SPRING_INSTRUMENTATION) && zip -r $(CACHE_PATH)/$(SPRING_INSTRUMENTATION).jar .\n\n$(CACHE_DIR)/$(MULTIPLE_MATCHING).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(MULTIPLE_MATCHING) && zip -r $(CACHE_PATH)/$(MULTIPLE_MATCHING).jar .\n\n$(CACHE_DIR)/$(ORG_MULTIPLE_THENAME).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(ORG_MULTIPLE_THENAME) && zip -r $(CACHE_PATH)/$(ORG_MULTIPLE_THENAME).jar .\n\n$(CACHE_DIR)/$(MICRONAUT_AOP).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(MICRONAUT_AOP) && zip -r $(CACHE_PATH)/$(MICRONAUT_AOP).jar .\n\n$(CACHE_DIR)/$(COMMONS_LANG3).jar:\n\tmkdir -p $(CACHE_DIR)\n\tcd $(COMMONS_LANG3) && zip -r $(CACHE_PATH)/$(COMMONS_LANG3).jar .\n\n# Jenkins plugins typically do not have the version included in the archive name,\n# so it is important to not include it in the generated test fixture\n$(CACHE_DIR)/gradle.hpi:\n\tmkdir -p $(CACHE_DIR)\n\tcd jenkins-plugins/gradle/2.11 && zip -r $(CACHE_PATH)/gradle.hpi .\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find . ! -path '*/cache*'  -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:\n\trm -rf $(CACHE_DIR)/* $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/README.md",
    "content": "# Jar-Metadata test fixtures\n\nEach directory is the name of a jar to be created (simply a zip) based on the contents of the directory.\nThis prevents us from having to create real jars by hand or keep binaries in the repo. This also means we don't need the\nentire jar, only the necessary metadata for testing.\n\n### api-all-2.0.0-sources\nThis fixture is built to simulate the case where we have a jar with multiple pom files discovered when trying to determine the parent.\nThis is a valid case, but not one that we covered before [PR 2231](https://github.com/anchore/syft/pull/2231)\n\n### jackson-core-2.15.2\nThese two fixtures are built to simulate the case where we would have a duplicate jar \nregression as seen in [issue #2130](https://github.com/anchore/syft/issues/2130)"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/api-all-2.0.0-sources/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nBuilt-By: elecharny\nCreated-By: Apache Maven 3.6.0\nBuild-Jdk: 1.8.0_191"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/api-all-2.0.0-sources/META-INF/maven/org.apache.directory.api/api-all/pom.properties",
    "content": "#Created by Apache Maven 3.6.0\nversion=2.0.0\ngroupId=org.apache.directory.api\nartifactId=api-all"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/api-all-2.0.0-sources/META-INF/maven/org.apache.directory.api/api-all/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.apache.directory.api</groupId>\n        <artifactId>api-parent</artifactId>\n        <version>2.0.0</version>\n    </parent>\n\n    <artifactId>api-all</artifactId>\n    <name>Apache Directory API All</name>\n\n    <dependencies>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-asn1-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-asn1-ber</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-dsml-engine</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-dsml-parser</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-i18n</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-client-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-codec-core</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-codec-standalone</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-aci</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-codec</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-codec-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-sp</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-trigger</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-extras-util</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-model</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-net-mina</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-schema-converter</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-ldap-schema-data</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>${project.groupId}</groupId>\n            <artifactId>api-util</artifactId>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-shade-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <phase>package</phase>\n                        <goals>\n                            <goal>shade</goal>\n                        </goals>\n                        <configuration>\n                            <artifactSet>\n                                <includes>\n                                    <include>${project.groupId}</include>\n                                </includes>\n                            </artifactSet>\n                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>\n                            <createSourcesJar>true</createSourcesJar>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n</project>"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/api-all-2.0.0-sources/META-INF/maven/org.apache.directory.api/api-asn1-api/pom.properties",
    "content": "#Created by Apache Maven 3.6.0\nversion=2.0.0\ngroupId=org.apache.directory.api\nartifactId=api-asn1-api\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/api-all-2.0.0-sources/META-INF/maven/org.apache.directory.api/api-asn1-api/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements.  See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership.  The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied.  See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n  <parent>\n    <groupId>org.apache.directory.api</groupId>\n    <artifactId>api-asn1-parent</artifactId>\n    <version>2.0.0</version>\n  </parent>\n  \n  <artifactId>api-asn1-api</artifactId>\n  <name>Apache Directory API ASN.1 API</name>\n  <packaging>bundle</packaging>\n\n  <description>ASN.1 API</description>\n\n  <dependencies>\n    <dependency>\n      <groupId>org.junit.jupiter</groupId>\n      <artifactId>junit-jupiter-engine</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>log4j</groupId>\n      <artifactId>log4j</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-log4j12</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>org.slf4j</groupId>\n      <artifactId>slf4j-api</artifactId>\n      <scope>test</scope>\n    </dependency>\n\n    <dependency>\n      <groupId>${project.groupId}</groupId>\n      <artifactId>api-i18n</artifactId>\n    </dependency> \n  </dependencies>\n\n  <build>\n    <plugins>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestFile>META-INF/MANIFEST.MF</manifestFile>\n            <addMavenDescriptor>false</addMavenDescriptor>\n          </archive>\n        </configuration>\n      </plugin>\n      \n      <plugin>\n        <groupId>org.apache.felix</groupId>\n        <artifactId>maven-bundle-plugin</artifactId>\n        <inherited>true</inherited>\n        <extensions>true</extensions>\n        <configuration>\n          <manifestLocation>META-INF</manifestLocation>\n          <instructions>\n            <Bundle-SymbolicName>${project.groupId}.asn1.api</Bundle-SymbolicName>\n            <Export-Package>\n              org.apache.directory.api.asn1;version=${project.version};-noimport:=true,\n              org.apache.directory.api.asn1.util;version=${project.version};-noimport:=true\n            </Export-Package>\n            <Import-Package>\n              org.apache.directory.api.i18n;version=${project.version}\n            </Import-Package>\n          </instructions>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/com.fasterxml.jackson.core.jackson-core-2.15.2/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nBundle-License: https://www.apache.org/licenses/LICENSE-2.0.txt\nBundle-SymbolicName: com.fasterxml.jackson.core.jackson-core\nImplementation-Vendor-Id: com.fasterxml.jackson.core\nSpecification-Title: Jackson-core\nBundle-DocURL: https://github.com/FasterXML/jackson-core\nImport-Package: com.fasterxml.jackson.core;version=...snip\nRequire-Capability: osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.8))\"\nExport-Package: com.fasterxml.jackson.core;version...snip\nBundle-Name: Jackson-core\nMulti-Release: true\nBuild-Jdk-Spec: 1.8\nBundle-Description: Core Jackson processing abstractions\nImplementation-Title: Jackson-core\nImplementation-Version: 2.15.2\nBundle-ManifestVersion: 2\nSpecification-Vendor: FasterXML\nBundle-Vendor: FasterXML\nTool: Bnd-6.3.1.202206071316\nImplementation-Vendor: FasterXML\nBundle-Version: 2.15.2\nX-Compile-Target-JDK: 1.8\nX-Compile-Source-JDK: 1.8\nCreated-By: Apache Maven Bundle Plugin 5.1.8\nSpecification-Version: 2.15.2\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/com.fasterxml.jackson.core.jackson-core-2.15.2/META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <!-- This module was also published with a richer model, Gradle metadata,  -->\n  <!-- which should be used instead. Do not delete the following line which  -->\n  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->\n  <!-- that they should prefer consuming it instead. -->\n  <!-- do_not_remove: published-with-gradle-metadata -->\n  <modelVersion>4.0.0</modelVersion> \n  <parent>\n    <groupId>com.fasterxml.jackson</groupId>\n    <artifactId>jackson-base</artifactId>\n    <version>2.15.2</version>\n  </parent>\n  <groupId>com.fasterxml.jackson.core</groupId>\n  <artifactId>jackson-core</artifactId>\n  <name>Jackson-core</name>\n  <version>2.15.2</version>\n  <packaging>jar</packaging>\n  <description>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <inceptionYear>2008</inceptionYear>\n\n  <url>https://github.com/FasterXML/jackson-core</url>\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-core.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-core.git</developerConnection>\n    <url>https://github.com/FasterXML/jackson-core</url>\n    <tag>jackson-core-2.15.2</tag>\n  </scm>\n\n  <properties>\n    <!-- 03-May-2022: Change Java compatibility for Jackson-Core 2.14 from Java6 to Java8,\n       still use Moditect to get JDK9+ module info support; need newer bundle plugin as well\n       (can just defaults from `jackson-parent`)\n      -->\n\n    <!-- 16-Nov-2022, tatu: [core#838] Verify Android SDK compatibility.\n         Baseline compatibility:\n         * Jackson 2.13 compatible with Android SDK 19 and up\n         * Jackson 2.14 compatible with Android SDK 26 and up\n         * Jackson 2.15 compatible with Android SDK 26 and up\n      -->\n    <version.android.sdk>26</version.android.sdk>\n    <version.android.sdk.signature>0.5.1</version.android.sdk.signature>\n\n    <osgi.export>com.fasterxml.jackson.core;version=${project.version},\ncom.fasterxml.jackson.core.*;version=${project.version}\n    </osgi.export>\n    <osgi.import>!ch.randelshofer.fastdoubleparser, *</osgi.import>\n\n    <!-- Generate PackageVersion.java into this directory. -->\n    <packageVersion.dir>com/fasterxml/jackson/core/json</packageVersion.dir>\n    <packageVersion.package>${project.groupId}.json</packageVersion.package>\n\n    <!-- for Reproducible Builds -->\n    <project.build.outputTimestamp>2023-05-30T22:15:40Z</project.build.outputTimestamp>\n  </properties>\n\n  <!-- Alas, need to include snapshot reference since otherwise can not find\n       snapshot of parent... -->\n  <repositories>\n    <repository>\n      <id>sonatype-nexus-snapshots</id>\n      <name>Sonatype Nexus Snapshots</name>\n      <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n      <releases><enabled>false</enabled></releases>\n      <snapshots><enabled>true</enabled></snapshots>\n    </repository>\n  </repositories>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit</groupId>\n        <artifactId>junit-bom</artifactId>\n        <version>5.9.2</version>\n        <type>pom</type>\n        <scope>import</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n\n    <plugins>\n\n      <!-- 26-Aug-2019, tatu: JaCoCo for code coverage -->\n      <plugin>\n\t<groupId>org.jacoco</groupId>\n\t<artifactId>jacoco-maven-plugin</artifactId>\n\t<executions>\n          <execution>\n            <goals>\n              <goal>prepare-agent</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>report</id>\n            <phase>test</phase>\n            <goals>\n              <goal>report</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- Important: enable enforcer plug-in: -->\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n\t<executions> <!-- or?  combine.children=\"merge\"> -->\n          <execution>\n            <id>enforce-properties</id>\n\t        <phase>validate</phase>\n            <goals><goal>enforce</goal></goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>${version.plugin.surefire}</version>\n        <configuration>\n          <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>\n          <excludes>\n            <exclude>**/failing/**/*.java</exclude>\n          </excludes>\n<!-- 13-Apr-2018, tatu: for debugging [core#400]\n          <systemPropertyVariables>\n<com.fasterxml.jackson.core.util.BufferRecyclers.trackReusableBuffers>true</com.fasterxml.jackson.core.util.BufferRecyclers.trackReusableBuffers>\n          </systemPropertyVariables>\n-->\n        </configuration>\n      </plugin>\n      <!-- settings are fine, but needed to trigger execution! -->\n      <plugin>\n        <groupId>com.google.code.maven-replacer-plugin</groupId>\n        <artifactId>replacer</artifactId>\n      </plugin>\n\n      <!-- 04-Mar-2019, tatu: Add rudimentary JDK9+ module info. To build with JDK 8\n             will have to use `moduleInfoFile` as anything else requires JDK 9+\n        -->\n      <plugin>\n        <groupId>org.moditect</groupId>\n        <artifactId>moditect-maven-plugin</artifactId>\n      </plugin>\n      <!-- 03-Nov-2020, tatu: Add LICENSE from main level -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-shade-plugin</artifactId>\n        <configuration>\n          <promoteTransitiveDependencies>true</promoteTransitiveDependencies>\n          <createDependencyReducedPom>true</createDependencyReducedPom>\n          <minimizeJar>true</minimizeJar>\n        </configuration>\n        <executions>\n          <execution>\n            <id>shade-jackson-core</id>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <filters>\n                <filter>\n                  <artifact>ch.randelshofer:fastdoubleparser</artifact>\n                  <excludes>\n                    <exclude>META-INF/versions/**/module-info.*</exclude>\n                  </excludes>\n                </filter>\n              </filters>\n              <relocations>\n                <relocation>\n                  <pattern>ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/LICENSE</pattern>\n                  <shadedPattern>META-INF/FastDoubleParser-LICENSE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/NOTICE</pattern>\n                  <shadedPattern>META-INF/FastDoubleParser-NOTICE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/jackson-core-LICENSE</pattern>\n                  <shadedPattern>META-INF/LICENSE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/jackson-core-NOTICE</pattern>\n                  <shadedPattern>META-INF/NOTICE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/11/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/11/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/17/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/17/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/19/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/19/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>de.jjohannes</groupId>\n        <artifactId>gradle-module-metadata-maven-plugin</artifactId>\n        <!-- 27-Apr-2023, tatu: [core#999]: Need to exclude shaded FDP\n           dependency from GMM\n          -->\n        <configuration>\n          <removedDependencies>\n            <dependency>\n              <groupId>ch.randelshofer</groupId>\n              <artifactId>fastdoubleparser</artifactId>\n            </dependency>\n          </removedDependencies>\n        </configuration>\n      </plugin>\n      \n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Multi-Release>true</Multi-Release>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n\n      <!-- 23-Mar-2023, tatu: [core#965] Need to put back Gradle module metadata marker -->\n      <plugin>\n        <groupId>io.github.floverfelt</groupId>\n        <artifactId>find-and-replace-maven-plugin</artifactId>\n        <version>1.1.0</version>\n        <executions>\n          <execution>\n            <id>exec</id>\n            <phase>package</phase>\n            <goals>\n              <goal>find-and-replace</goal>\n            </goals>\n            <configuration>\n              <replacementType>file-contents</replacementType>\n              <baseDir>${basedir}</baseDir>\n              <findRegex><![CDATA[<modelVersion>4.0.0</modelVersion>]]></findRegex>\n              <fileMask>dependency-reduced-pom.xml</fileMask>\n              <replaceValue><![CDATA[  <!-- This module was also published with a richer model, Gradle metadata,  -->\n  <!-- which should be used instead. Do not delete the following line which  -->\n  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->\n  <!-- that they should prefer consuming it instead. -->\n  <!-- do_not_remove: published-with-gradle-metadata -->\n  <modelVersion>4.0.0</modelVersion>]]></replaceValue>\n              <recursive>false</recursive>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- 16-Nov-2022, tatu: [core#838] add verification of compatibility\n           wrt Android SDK versions using AnimalSniffer with \"gummy bears\" signatures.\n           To be run from CI, but manually with:\n              mvn clean package animal-sniffer:check\n        -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n        <version>1.22</version>\n        <configuration>\n          <signature>\n            <groupId>com.toasttab.android</groupId>\n            <artifactId>gummy-bears-api-${version.android.sdk}</artifactId>\n            <version>${version.android.sdk.signature}</version>\n          </signature>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <dependencies>\n    <dependency>\n      <groupId>ch.randelshofer</groupId>\n      <artifactId>fastdoubleparser</artifactId>\n      <version>0.9.0</version>\n    </dependency>\n    <!-- Test dependencies -->\n    <dependency>\n      <groupId>org.junit.vintage</groupId>\n      <artifactId>junit-vintage-engine</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.junit.jupiter</groupId>\n      <artifactId>junit-jupiter</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/commons-lang3-3.12.0/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/commons-lang3-3.12.0/META-INF/maven/org.apache.commons-lang3/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-parent</artifactId>\n        <version>54</version>\n    </parent>\n  <groupId>org.apache.commons</groupId>\n  <artifactId>commons-lang3</artifactId>\n  <version>${commons.release.version}</version>\n  <packaging>pom</packaging>\n  <name>JUnit 5 (Bill of Materials)</name>\n  <licenses>\n    <license>\n      <name>Eclipse Public License v2.0</name>\n      <url>https://www.eclipse.org/legal/epl-v20.html</url>\n    </license>\n  </licenses>\n  <scm>\n    <connection>scm:git:git://github.com/junit-team/junit5.git</connection>\n    <developerConnection>scm:git:git://github.com/junit-team/junit5.git</developerConnection>\n    <url>https://github.com/junit-team/junit5</url>\n  </scm>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit.vintage</groupId>\n        <artifactId>junit-vintage-engine</artifactId>\n        <version>${commons.release.version}</version>\n      </dependency>\n    </dependencies>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/jackson-core-2.15.2/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nBundle-License: https://www.apache.org/licenses/LICENSE-2.0.txt\nBundle-SymbolicName: com.fasterxml.jackson.core.jackson-core\nImplementation-Vendor-Id: com.fasterxml.jackson.core\nSpecification-Title: Jackson-core\nBundle-DocURL: https://github.com/FasterXML/jackson-core\nImport-Package: com.fasterxml.jackson.core;version=...snip\nRequire-Capability: osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.8))\"\nExport-Package: com.fasterxml.jackson.core;version...snip\nBundle-Name: Jackson-core\nMulti-Release: true\nBuild-Jdk-Spec: 1.8\nBundle-Description: Core Jackson processing abstractions\nImplementation-Title: Jackson-core\nImplementation-Version: 2.15.2\nBundle-ManifestVersion: 2\nSpecification-Vendor: FasterXML\nBundle-Vendor: FasterXML\nTool: Bnd-6.3.1.202206071316\nImplementation-Vendor: FasterXML\nBundle-Version: 2.15.2\nX-Compile-Target-JDK: 1.8\nX-Compile-Source-JDK: 1.8\nCreated-By: Apache Maven Bundle Plugin 5.1.8\nSpecification-Version: 2.15.2\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/jackson-core-2.15.2/META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml",
    "content": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <!-- This module was also published with a richer model, Gradle metadata,  -->\n  <!-- which should be used instead. Do not delete the following line which  -->\n  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->\n  <!-- that they should prefer consuming it instead. -->\n  <!-- do_not_remove: published-with-gradle-metadata -->\n  <modelVersion>4.0.0</modelVersion> \n  <parent>\n    <groupId>com.fasterxml.jackson</groupId>\n    <artifactId>jackson-base</artifactId>\n    <version>2.15.2</version>\n  </parent>\n  <groupId>com.fasterxml.jackson.core</groupId>\n  <artifactId>jackson-core</artifactId>\n  <name>Jackson-core</name>\n  <version>2.15.2</version>\n  <packaging>jar</packaging>\n  <description>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</description>\n  <licenses>\n    <license>\n      <name>The Apache Software License, Version 2.0</name>\n      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>\n      <distribution>repo</distribution>\n    </license>\n  </licenses>\n  <inceptionYear>2008</inceptionYear>\n\n  <url>https://github.com/FasterXML/jackson-core</url>\n  <scm>\n    <connection>scm:git:git@github.com:FasterXML/jackson-core.git</connection>\n    <developerConnection>scm:git:git@github.com:FasterXML/jackson-core.git</developerConnection>\n    <url>https://github.com/FasterXML/jackson-core</url>\n    <tag>jackson-core-2.15.2</tag>\n  </scm>\n\n  <properties>\n    <!-- 03-May-2022: Change Java compatibility for Jackson-Core 2.14 from Java6 to Java8,\n       still use Moditect to get JDK9+ module info support; need newer bundle plugin as well\n       (can just defaults from `jackson-parent`)\n      -->\n\n    <!-- 16-Nov-2022, tatu: [core#838] Verify Android SDK compatibility.\n         Baseline compatibility:\n         * Jackson 2.13 compatible with Android SDK 19 and up\n         * Jackson 2.14 compatible with Android SDK 26 and up\n         * Jackson 2.15 compatible with Android SDK 26 and up\n      -->\n    <version.android.sdk>26</version.android.sdk>\n    <version.android.sdk.signature>0.5.1</version.android.sdk.signature>\n\n    <osgi.export>com.fasterxml.jackson.core;version=${project.version},\ncom.fasterxml.jackson.core.*;version=${project.version}\n    </osgi.export>\n    <osgi.import>!ch.randelshofer.fastdoubleparser, *</osgi.import>\n\n    <!-- Generate PackageVersion.java into this directory. -->\n    <packageVersion.dir>com/fasterxml/jackson/core/json</packageVersion.dir>\n    <packageVersion.package>${project.groupId}.json</packageVersion.package>\n\n    <!-- for Reproducible Builds -->\n    <project.build.outputTimestamp>2023-05-30T22:15:40Z</project.build.outputTimestamp>\n  </properties>\n\n  <!-- Alas, need to include snapshot reference since otherwise can not find\n       snapshot of parent... -->\n  <repositories>\n    <repository>\n      <id>sonatype-nexus-snapshots</id>\n      <name>Sonatype Nexus Snapshots</name>\n      <url>https://oss.sonatype.org/content/repositories/snapshots</url>\n      <releases><enabled>false</enabled></releases>\n      <snapshots><enabled>true</enabled></snapshots>\n    </repository>\n  </repositories>\n\n  <dependencyManagement>\n    <dependencies>\n      <dependency>\n        <groupId>org.junit</groupId>\n        <artifactId>junit-bom</artifactId>\n        <version>5.9.2</version>\n        <type>pom</type>\n        <scope>import</scope>\n      </dependency>\n    </dependencies>\n  </dependencyManagement>\n\n  <build>\n\n    <plugins>\n\n      <!-- 26-Aug-2019, tatu: JaCoCo for code coverage -->\n      <plugin>\n\t<groupId>org.jacoco</groupId>\n\t<artifactId>jacoco-maven-plugin</artifactId>\n\t<executions>\n          <execution>\n            <goals>\n              <goal>prepare-agent</goal>\n            </goals>\n          </execution>\n          <execution>\n            <id>report</id>\n            <phase>test</phase>\n            <goals>\n              <goal>report</goal>\n            </goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- Important: enable enforcer plug-in: -->\n      <plugin>\n        <artifactId>maven-enforcer-plugin</artifactId>\n\t<executions> <!-- or?  combine.children=\"merge\"> -->\n          <execution>\n            <id>enforce-properties</id>\n\t        <phase>validate</phase>\n            <goals><goal>enforce</goal></goals>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-site-plugin</artifactId>\n      </plugin>\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-surefire-plugin</artifactId>\n        <version>${version.plugin.surefire}</version>\n        <configuration>\n          <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>\n          <excludes>\n            <exclude>**/failing/**/*.java</exclude>\n          </excludes>\n<!-- 13-Apr-2018, tatu: for debugging [core#400]\n          <systemPropertyVariables>\n<com.fasterxml.jackson.core.util.BufferRecyclers.trackReusableBuffers>true</com.fasterxml.jackson.core.util.BufferRecyclers.trackReusableBuffers>\n          </systemPropertyVariables>\n-->\n        </configuration>\n      </plugin>\n      <!-- settings are fine, but needed to trigger execution! -->\n      <plugin>\n        <groupId>com.google.code.maven-replacer-plugin</groupId>\n        <artifactId>replacer</artifactId>\n      </plugin>\n\n      <!-- 04-Mar-2019, tatu: Add rudimentary JDK9+ module info. To build with JDK 8\n             will have to use `moduleInfoFile` as anything else requires JDK 9+\n        -->\n      <plugin>\n        <groupId>org.moditect</groupId>\n        <artifactId>moditect-maven-plugin</artifactId>\n      </plugin>\n      <!-- 03-Nov-2020, tatu: Add LICENSE from main level -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>build-helper-maven-plugin</artifactId>\n      </plugin>\n\n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-shade-plugin</artifactId>\n        <configuration>\n          <promoteTransitiveDependencies>true</promoteTransitiveDependencies>\n          <createDependencyReducedPom>true</createDependencyReducedPom>\n          <minimizeJar>true</minimizeJar>\n        </configuration>\n        <executions>\n          <execution>\n            <id>shade-jackson-core</id>\n            <phase>package</phase>\n            <goals>\n              <goal>shade</goal>\n            </goals>\n            <configuration>\n              <filters>\n                <filter>\n                  <artifact>ch.randelshofer:fastdoubleparser</artifact>\n                  <excludes>\n                    <exclude>META-INF/versions/**/module-info.*</exclude>\n                  </excludes>\n                </filter>\n              </filters>\n              <relocations>\n                <relocation>\n                  <pattern>ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/LICENSE</pattern>\n                  <shadedPattern>META-INF/FastDoubleParser-LICENSE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/NOTICE</pattern>\n                  <shadedPattern>META-INF/FastDoubleParser-NOTICE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/jackson-core-LICENSE</pattern>\n                  <shadedPattern>META-INF/LICENSE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/jackson-core-NOTICE</pattern>\n                  <shadedPattern>META-INF/NOTICE</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/11/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/11/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/17/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/17/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n                <relocation>\n                  <pattern>META-INF/versions/19/ch/randelshofer/fastdoubleparser</pattern>\n                  <shadedPattern>META-INF/versions/19/com/fasterxml/jackson/core/io/doubleparser</shadedPattern>\n                </relocation>\n              </relocations>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <plugin>\n        <groupId>de.jjohannes</groupId>\n        <artifactId>gradle-module-metadata-maven-plugin</artifactId>\n        <!-- 27-Apr-2023, tatu: [core#999]: Need to exclude shaded FDP\n           dependency from GMM\n          -->\n        <configuration>\n          <removedDependencies>\n            <dependency>\n              <groupId>ch.randelshofer</groupId>\n              <artifactId>fastdoubleparser</artifactId>\n            </dependency>\n          </removedDependencies>\n        </configuration>\n      </plugin>\n      \n      <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-jar-plugin</artifactId>\n        <configuration>\n          <archive>\n            <manifestEntries>\n              <Multi-Release>true</Multi-Release>\n            </manifestEntries>\n          </archive>\n        </configuration>\n      </plugin>\n\n      <!-- 23-Mar-2023, tatu: [core#965] Need to put back Gradle module metadata marker -->\n      <plugin>\n        <groupId>io.github.floverfelt</groupId>\n        <artifactId>find-and-replace-maven-plugin</artifactId>\n        <version>1.1.0</version>\n        <executions>\n          <execution>\n            <id>exec</id>\n            <phase>package</phase>\n            <goals>\n              <goal>find-and-replace</goal>\n            </goals>\n            <configuration>\n              <replacementType>file-contents</replacementType>\n              <baseDir>${basedir}</baseDir>\n              <findRegex><![CDATA[<modelVersion>4.0.0</modelVersion>]]></findRegex>\n              <fileMask>dependency-reduced-pom.xml</fileMask>\n              <replaceValue><![CDATA[  <!-- This module was also published with a richer model, Gradle metadata,  -->\n  <!-- which should be used instead. Do not delete the following line which  -->\n  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->\n  <!-- that they should prefer consuming it instead. -->\n  <!-- do_not_remove: published-with-gradle-metadata -->\n  <modelVersion>4.0.0</modelVersion>]]></replaceValue>\n              <recursive>false</recursive>\n            </configuration>\n          </execution>\n        </executions>\n      </plugin>\n\n      <!-- 16-Nov-2022, tatu: [core#838] add verification of compatibility\n           wrt Android SDK versions using AnimalSniffer with \"gummy bears\" signatures.\n           To be run from CI, but manually with:\n              mvn clean package animal-sniffer:check\n        -->\n      <plugin>\n        <groupId>org.codehaus.mojo</groupId>\n        <artifactId>animal-sniffer-maven-plugin</artifactId>\n        <version>1.22</version>\n        <configuration>\n          <signature>\n            <groupId>com.toasttab.android</groupId>\n            <artifactId>gummy-bears-api-${version.android.sdk}</artifactId>\n            <version>${version.android.sdk.signature}</version>\n          </signature>\n        </configuration>\n      </plugin>\n\n    </plugins>\n  </build>\n\n  <dependencies>\n    <dependency>\n      <groupId>ch.randelshofer</groupId>\n      <artifactId>fastdoubleparser</artifactId>\n      <version>0.9.0</version>\n    </dependency>\n    <!-- Test dependencies -->\n    <dependency>\n      <groupId>org.junit.vintage</groupId>\n      <artifactId>junit-vintage-engine</artifactId>\n      <scope>test</scope>\n    </dependency>\n    <dependency>\n      <groupId>org.junit.jupiter</groupId>\n      <artifactId>junit-jupiter</artifactId>\n      <scope>test</scope>\n    </dependency>\n  </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/jenkins-plugins/gradle/2.11/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nPlugin-Dependencies: maven-plugin:3.14;resolution:=optional...snip\nGroup-Id: org.jenkins-ci.plugins\nMinimum-Java-Version: 1.8\nShort-Name: gradle\nExtension-Name: gradle\nLong-Name: Gradle Plugin\nJenkins-Version: 2.303.3\nUrl: https://github.com/jenkinsci/gradle-plugin\nCompatible-Since-Version: 1.0\nPlugin-Version: 2.11\nPlugin-Developers: Stefan Wolf:wolfs:\n\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/micronaut-aop-4.9.11/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nAutomatic-Module-Name: io.micronaut.micronaut_aop\r\nImplementation-Version: 4.9.11\r\nImplementation-Title: Micronaut Core\r\n\r\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/micronaut-aop-4.9.11/META-INF/maven/io.micronaut/micronaut-aop/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <!-- This module was also published with a richer model, Gradle metadata,  -->\n  <!-- which should be used instead. Do not delete the following line which  -->\n  <!-- is to indicate to Gradle or any Gradle module metadata file consumer  -->\n  <!-- that they should prefer consuming it instead. -->\n  <!-- do_not_remove: published-with-gradle-metadata -->\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>io.micronaut</groupId>\n  <artifactId>micronaut-aop</artifactId>\n  <version>4.9.11</version>\n  <name>Micronaut Core</name>\n  <description>Core components supporting the Micronaut Framework</description>\n  <url>https://micronaut.io</url>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nCreated-By: Multi\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-1/pom.properties",
    "content": "version=2.11.5\ngroupId=org.multiple\nartifactId=multiple-matching-1\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-1/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.multiple</groupId>\n    <artifactId>multiple-matching-1</artifactId>\n    <version>2.11.5</version>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-2/pom.properties",
    "content": "version=2.11.5\ngroupId=org.multiple\nartifactId=multiple-matching-2"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-2/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.multiple</groupId>\n    <artifactId>multiple-matching-2</artifactId>\n    <version>2.11.5</version>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-3/pom.properties",
    "content": "version=2.11.5\ngroupId=org.multiple\nartifactId=multiple-matching-3\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/multiple-matching-2.11.5/META-INF/maven/org.multiple/multiple-matching-3/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.multiple</groupId>\n    <artifactId>multiple-matching-3</artifactId>\n    <version>2.11.5</version>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/opensaml-core-3.4.6/META-INF/INDEX.LIST",
    "content": "JarIndex-Version: 1.0\n\nopensaml-core-3.4.6.jar\nMETA-INF\nMETA-INF/maven\nMETA-INF/maven/org.opensaml\nMETA-INF/maven/org.opensaml/opensaml-core\nMETA-INF/services\norg\norg/opensaml\norg/opensaml/core\norg/opensaml/core/config\norg/opensaml/core/config/provider\norg/opensaml/core/criterion\norg/opensaml/core/metrics\norg/opensaml/core/metrics/impl\norg/opensaml/core/xml\norg/opensaml/core/xml/config\norg/opensaml/core/xml/io\norg/opensaml/core/xml/persist\norg/opensaml/core/xml/schema\norg/opensaml/core/xml/schema/impl\norg/opensaml/core/xml/util\nschema\ndefault-config.xml\nschema-config.xml\n\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/opensaml-core-3.4.6/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\r\nAutomatic-Module-Name: org.opensaml.core\r\nBuilt-By: putmanb\r\nBuild-Jdk: 1.7.0_80\r\nCreated-By: Apache Maven 3.6.3\r\nMain-Class: org.opensaml.core.Version\r\n\r\nName: org/opensaml/core/\r\nImplementation-Vendor: opensaml.org\r\nImplementation-Title: opensaml-core\r\nImplementation-Version: 3.4.6\r\n\r\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/opensaml-core-3.4.6/META-INF/maven/org.opensaml/opensaml-core/pom.properties",
    "content": "#Created by Apache Maven 3.6.3\nversion=3.4.6\ngroupId=org.opensaml\nartifactId=opensaml-core\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/opensaml-core-3.4.6/META-INF/maven/org.opensaml/opensaml-core/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>org.opensaml</groupId>\n        <artifactId>opensaml-parent</artifactId>\n        <version>3.4.6</version>\n        <relativePath>../opensaml-parent</relativePath>\n    </parent>\n\n    <name>OpenSAML :: Core</name>\n    <description>Core</description>\n    <artifactId>opensaml-core</artifactId>\n    <packaging>jar</packaging>\n\n    <properties>\n        <automatic.module.name>org.opensaml.core</automatic.module.name>\n    </properties>\n\n    <dependencies>\n        <!-- Compile Dependencies -->\n        <dependency>\n            <groupId>joda-time</groupId>\n            <artifactId>joda-time</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>io.dropwizard.metrics</groupId>\n            <artifactId>metrics-core</artifactId>\n        </dependency>\n\n        <!-- Provided Dependencies -->\n\n        <!-- Runtime Dependencies -->\n\n        <!-- Test Dependencies -->\n\n    </dependencies>\n    \n    <build>\n        <plugins>\n            <plugin>\n                <artifactId>maven-jar-plugin</artifactId>\n                <configuration>\n                    <archive>\n                        <index>true</index>\n                        <manifestEntries>\n                            <Main-Class>org.opensaml.core.Version</Main-Class>\n                        </manifestEntries>\n                        <manifestSections>\n                            <manifestSection>\n                                <name>org/opensaml/core/</name>\n                                <manifestEntries>\n                                    <Implementation-Title>${project.artifactId}</Implementation-Title>\n                                    <Implementation-Version>${project.version}</Implementation-Version>\n                                    <Implementation-Vendor>opensaml.org</Implementation-Vendor>\n                                </manifestEntries>\n                            </manifestSection>\n                        </manifestSections>\n                    </archive>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <distributionManagement>\n        <site>\n            <id>site</id>\n            <url>dav:${opensaml-module.site.url}</url>\n        </site>\n    </distributionManagement>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/org.multiple-thename/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nCreated-By: Multi\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/org.multiple-thename/META-INF/maven/com.multiple/thename/pom.properties",
    "content": "version=10.11.12\ngroupId=com.multiple\nartifactId=thename"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/org.multiple-thename/META-INF/maven/com.multiple/thename/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.multiple</groupId>\n    <artifactId>thename</artifactId>\n    <version>10.11.12</version>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/org.multiple-thename/META-INF/maven/org.multiple/thename/pom.properties",
    "content": "version=10.11.12\ngroupId=org.multiple\nartifactId=thename\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/org.multiple-thename/META-INF/maven/org.multiple/thename/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>org.multiple</groupId>\n    <artifactId>thename</artifactId>\n    <version>10.11.12</version>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jar-metadata/spring-instrumentation-4.3.0-1.0/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.0\nImplementation-Title: com.newrelic.instrumentation.spring-4.3.0\nImplementation-Version: 1.0\nIllegal-Classes: \nWeave-Violation-Filter: METHOD_MISSING_REQUIRED_ANNOTATIONS,CLASS_MISS\n ING_REQUIRED_ANNOTATIONS\nReference-Classes: org/springframework/core/annotation/AnnotationUtils\n ,org/springframework/web/bind/annotation/DeleteMapping,org/springfram\n ework/web/bind/annotation/PatchMapping,org/springframework/web/bind/a\n nnotation/PostMapping,org/springframework/web/bind/annotation/PutMapp\n ing,org/springframework/web/bind/annotation/RequestMapping,org/spring\n framework/web/method/HandlerMethod,org/springframework/web/servlet/Mo\n delAndView\nClass-Required-Annotations: \nMethod-Required-Annotations: \nImplementation-Title-Alias: spring_annotations\nWeave-Classes: org/springframework/web/bind/annotation/GetMapping,org/\n springframework/web/servlet/mvc/method/AbstractHandlerMethodAdapter\nWeave-Methods: \"handleInternal(Ljavax/servlet/http/HttpServletRequest;\n Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/meth\n od/HandlerMethod;)Lorg/springframework/web/servlet/ModelAndView;\"\nImplementation-Vendor: New Relic\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/.gitignore",
    "content": "/packages/*\n*.fingerprint\n# maven when running in a volume may spit out directories like this\n**/\\?/\n\\?/"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/Makefile",
    "content": "PKGSDIR=packages\nFINGERPRINT_FILE=$(PKGSDIR).fingerprint\n\nifndef PKGSDIR\n    $(error PKGSDIR is not set)\nendif\n\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: jars archives native-image\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\njars: $(PKGSDIR)/example-java-app-maven-0.1.0.jar $(PKGSDIR)/example-java-app-gradle-0.1.0.jar $(PKGSDIR)/example-jenkins-plugin.hpi $(PKGSDIR)/spring-boot-0.0.1-SNAPSHOT.jar\n\narchives: $(PKGSDIR)/example-java-app-maven-0.1.0.zip $(PKGSDIR)/example-java-app-maven-0.1.0.tar $(PKGSDIR)/example-java-app-maven-0.1.0.tar.gz $(PKGSDIR)/example-java-app-maven-0.1.0.tgz\n\nnative-image: $(PKGSDIR)/example-java-app $(PKGSDIR)/gcc-amd64-darwin-exec-debug\n\n# jars within archives...\n\n$(PKGSDIR)/example-java-app-maven-0.1.0.zip: $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\tzip $(PKGSDIR)/example-java-app-maven-0.1.0.zip $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\n$(PKGSDIR)/example-java-app-maven-0.1.0.tar: $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\ttar -cvf $(PKGSDIR)/example-java-app-maven-0.1.0.tar $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\n$(PKGSDIR)/example-java-app-maven-0.1.0.tar.gz: $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\ttar -czvf $(PKGSDIR)/example-java-app-maven-0.1.0.tar.gz $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\n$(PKGSDIR)/example-java-app-maven-0.1.0.tgz: $(PKGSDIR)/example-java-app-maven-0.1.0.tar.gz\n\ttar -czf $(PKGSDIR)/example-java-app-maven-0.1.0.tgz $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\n# Nested jar...\n\n$(PKGSDIR)/spring-boot-0.0.1-SNAPSHOT.jar:\n\t./build-example-sb-app-nestedjar.sh $(PKGSDIR)\n\nclean-nestedjar:\n\trm -rf\texample-sb-app/target\n\n# Maven...\n$(PKGSDIR)/example-java-app-maven-0.1.0.jar:\n\t./build-example-java-app-maven.sh $(PKGSDIR)\n\nclean-maven:\n\trm -rf\texample-java-app/\\? \\\n\t\t\texample-java-app/target \\\n\t\t\texample-java-app/dependency-reduced-pom.xml\n\n# Gradle...\n$(PKGSDIR)/example-java-app-gradle-0.1.0.jar:\n\t./build-example-java-app-gradle.sh $(PKGSDIR)\n\nclean-gradle:\n\trm -rf\texample-java-app/.gradle \\\n\t\t\texample-java-app/build\n\n# Jenkins plugin\n$(PKGSDIR)/example-jenkins-plugin.hpi , $(PKGSDIR)/example-jenkins-plugin.jar:\n\t./build-example-jenkins-plugin.sh $(PKGSDIR)\n\nclean-jenkins:\n\trm -rf\texample-jenkins-plugin/target \\\n\t\t\texample-jenkins-plugin/dependency-reduced-pom.xml \\\n\t\t\texample-jenkins-plugin/*.exploding\n\n# Native Image...\n$(PKGSDIR)/example-java-app: $(PKGSDIR)/example-java-app-maven-0.1.0.jar\n\t./build-example-java-app-native-image.sh $(PKGSDIR)\n\n$(PKGSDIR)/gcc-amd64-darwin-exec-debug:\n\t./build-example-macho-binary.sh $(PKGSDIR)\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find example-* build-* Makefile -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean: clean-examples\n\trm -rf $(PKGSDIR) $(FINGERPRINT_FILE)\n\nclean-examples: clean-gradle clean-maven clean-jenkins clean-nestedjar\n\n.PHONY: maven gradle clean clean-gradle clean-maven clean-jenkins clean-examples clean-nestedjar jars archives\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-java-app-gradle.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\n# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible)\n\nPKGSDIR=$1\nCTRID=$(docker create -u \"$(id -u):$(id -g)\" -v /example-java-app -w /example-java-app gradle:8.0.2-jdk gradle build)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\n\ndocker cp \"$(pwd)/example-java-app\" \"${CTRID}:/\"\ndocker start -a \"${CTRID}\"\nmkdir -p \"$PKGSDIR\"\ndocker cp \"${CTRID}:/example-java-app/build/libs/example-java-app-gradle-0.1.0.jar\" \"$PKGSDIR\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-java-app-maven.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\n# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible)\n\nPKGSDIR=$1\nCTRID=$(docker create -u \"$(id -u):$(id -g)\" -e MAVEN_CONFIG=/tmp/.m2 -v /example-java-app -w /example-java-app maven:3.8.6-openjdk-18 mvn -Duser.home=/tmp -DskipTests package)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\n\ndocker cp \"$(pwd)/example-java-app\" \"${CTRID}:/\"\ndocker start -a \"${CTRID}\"\nmkdir -p \"$PKGSDIR\"\ndocker cp \"${CTRID}:/example-java-app/target/example-java-app-maven-0.1.0.jar\" \"$PKGSDIR\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-java-app-native-image.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\nPKGSDIR=$1\n\nCTRID=$(docker create -v /example-java-app ghcr.io/graalvm/native-image:22.2.0 -J-XX:-UseContainerSupport -cp /example-java-app/example-java-app-maven-0.1.0.jar --no-fallback -H:Class=hello.HelloWorld -H:Name=example-java-app)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\n\ndocker cp \"${PKGSDIR}/example-java-app-maven-0.1.0.jar\" \"${CTRID}:/example-java-app/\"\ndocker start -a \"${CTRID}\"\ndocker cp \"${CTRID}:/app/example-java-app\" \"$PKGSDIR\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-jenkins-plugin.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\n# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible)\n\nPKGSDIR=$1\nCTRID=$(docker create -u \"$(id -u):$(id -g)\" -e MAVEN_CONFIG=/tmp/.m2 -v /example-jenkins-plugin -w /example-jenkins-plugin maven:3.8.6-openjdk-18 mvn -Duser.home=/tmp -DskipTests package)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\n\ndocker cp \"$(pwd)/example-jenkins-plugin\" \"${CTRID}:/\"\ndocker start -a \"${CTRID}\"\nmkdir -p \"$PKGSDIR\"\ndocker cp \"${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.hpi\" \"$PKGSDIR\"\ndocker cp \"${CTRID}:/example-jenkins-plugin/target/example-jenkins-plugin.jar\" \"$PKGSDIR\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-macho-binary.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\nPKGSDIR=$1\n\ncurl https://raw.githubusercontent.com/blacktop/go-macho/master/internal/testdata/gcc-amd64-darwin-exec-debug.base64 |\n  base64 -d > $PKGSDIR/gcc-amd64-darwin-exec-debug\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/build-example-sb-app-nestedjar.sh",
    "content": "#!/usr/bin/env bash\nset -uxe\n\n# note: this can be easily done in a 1-liner, however circle CI does NOT allow volume mounts from the host in docker executors (since they are on remote hosts, where the host files are inaccessible)\n\nPKGSDIR=$1\nCTRID=$(docker create -u \"$(id -u):$(id -g)\" -e MAVEN_CONFIG=/tmp/.m2 -v /example-sb-app -w /example-sb-app maven:3.8.6-openjdk-18 mvn -Duser.home=/tmp -DskipTests package spring-boot:repackage)\n\nfunction cleanup() {\n  docker rm \"${CTRID}\"\n}\n\ntrap cleanup EXIT\n\ndocker cp \"$(pwd)/example-sb-app\" \"${CTRID}:/\"\ndocker start -a \"${CTRID}\"\nmkdir -p \"$PKGSDIR\"\ndocker cp \"${CTRID}:/example-sb-app/target/spring-boot-0.0.1-SNAPSHOT.jar\" \"$PKGSDIR\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/.gitignore",
    "content": "# maven build creates this when in a container volume\n/?/\n/.gradle/\n/build/\ntarget/\ndependency-reduced-pom.xml\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/build.gradle",
    "content": "plugins {\n    id 'java'\n    id 'eclipse'\n    id 'application'\n}\n\nmainClassName = 'hello.HelloWorld'\n\ndependencyLocking {\n    lockAllConfigurations()\n}\n// tag::repositories[]\nrepositories {\n    mavenCentral()\n}\n// end::repositories[]\n\n// tag::dependencies[]\nsourceCompatibility = 1.8\ntargetCompatibility = 1.8\n\ndependencies {\n    implementation \"joda-time:joda-time:2.2\"\n    testImplementation \"junit:junit:4.12\"\n}\n// end::dependencies[]\n\n// tag::jar[]\njar {\n    archivesBaseName = 'example-java-app-gradle'\n    version =  '0.1.0'\n    manifest {\n        attributes(\n        'Main-Class': 'hello.HelloWorld'\n        )\n    }\n    from {\n        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }\n    }\n}\n// end::jar[]\n\n// tag::wrapper[]\n// end::wrapper[]\n\n// to invoke: gradle resolveAndLockAll --write-locks\ntasks.register('resolveAndLockAll') {\n    notCompatibleWithConfigurationCache(\"Filters configurations at execution time\")\n    doFirst {\n        assert gradle.startParameter.writeDependencyLocks\n    }\n    doLast {\n        configurations.findAll {\n            // Add any custom filtering on the configurations to be resolved\n            it.canBeResolved\n        }.each { it.resolve() }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/gradle.lockfile",
    "content": "# This is a Gradle generated file for dependency locking.\n# Manual edits can break the build and are not advised.\n# This file is expected to be part of source control.\njoda-time:joda-time:2.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath\njunit:junit:4.12=testCompileClasspath,testRuntimeClasspath\norg.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath\nempty=annotationProcessor,testAnnotationProcessor\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.anchore</groupId>\n\t<artifactId>example-java-app-maven</artifactId>\n\t<packaging>jar</packaging>\n\t<version>0.1.0</version>\n\n\t<properties>\n\t\t<maven.compiler.source>1.8</maven.compiler.source>\n\t\t<maven.compiler.target>1.8</maven.compiler.target>\n\t</properties>\n\n\t<dependencies>\n\t\t<!-- tag::joda[] -->\n\t\t<dependency>\n\t\t\t<groupId>joda-time</groupId>\n\t\t\t<artifactId>joda-time</artifactId>\n\t\t\t<version>2.9.2</version>\n\t\t</dependency>\n\t\t<!-- end::joda[] -->\n\t\t<!-- tag::junit[] -->\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.12</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<!-- end::junit[] -->\n\t</dependencies>\n\n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-shade-plugin</artifactId>\n\t\t\t\t<version>2.1</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>shade</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<transformers>\n\t\t\t\t\t\t\t\t<transformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n\t\t\t\t\t\t\t\t\t<mainClass>hello.HelloWorld</mainClass>\n\t\t\t\t\t\t\t\t</transformer>\n\t\t\t\t\t\t\t</transformers>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/src/main/java/hello/Greeter.java",
    "content": "package hello;\n\npublic class Greeter {\n\tpublic String sayHello() {\n\t\treturn \"Hello world!\";\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-java-app/src/main/java/hello/HelloWorld.java",
    "content": "package hello;\n\nimport org.joda.time.LocalTime;\n\npublic class HelloWorld {\n\tpublic static void main(String[] args) {\n\t\tLocalTime currentTime = new LocalTime();\n\t\tSystem.out.println(\"The current local time is: \" + currentTime);\n\n\t\tGreeter greeter = new Greeter();\n\t\tSystem.out.println(greeter.sayHello());\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.jenkins-ci.plugins</groupId>\n        <artifactId>plugin</artifactId>\n        <version>4.46</version>\n        <relativePath />\n    </parent>\n    <groupId>io.jenkins.plugins</groupId>\n    <artifactId>example-jenkins-plugin</artifactId>\n    <version>1.0-SNAPSHOT</version>\n    <packaging>hpi</packaging>\n    <properties>\n        <!-- Baseline Jenkins version you use to build the plugin. Users must have this version or newer to run. -->\n        <jenkins.version>2.204</jenkins.version>\n        <java.level>8</java.level>\n        <!-- Other properties you may want to use:\n          ~ jenkins-test-harness.version: Jenkins Test Harness version you use to test the plugin. For Jenkins version >= 1.580.1 use JTH 2.0 or higher.\n          ~ hpi-plugin.version: The HPI Maven Plugin version used by the plugin..\n          ~ stapler-plugin.version: The Stapler Maven plugin version required by the plugin.\n     -->\n    </properties>\n    <name>Example Jenkins Plugin</name>\n    <!-- The default licence for Jenkins OSS Plugins is MIT. Substitute for the applicable one if needed. -->\n    <licenses>\n        <license>\n            <name>MIT License</name>\n            <url>https://opensource.org/licenses/MIT</url>\n        </license>\n    </licenses>\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <!-- Pick up common dependencies for 2.164.x: https://github.com/jenkinsci/bom#usage -->\n                <groupId>io.jenkins.tools.bom</groupId>\n                <artifactId>bom-2.164.x</artifactId>\n                <version>3</version>\n                <scope>import</scope>\n                <type>pom</type>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n    <dependencies>\n        <dependency>\n            <groupId>org.jenkins-ci.plugins</groupId>\n            <artifactId>structs</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.jenkins-ci.plugins.workflow</groupId>\n            <artifactId>workflow-cps</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.jenkins-ci.plugins.workflow</groupId>\n            <artifactId>workflow-job</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.jenkins-ci.plugins.workflow</groupId>\n            <artifactId>workflow-basic-steps</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.jenkins-ci.plugins.workflow</groupId>\n            <artifactId>workflow-durable-task-step</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <!-- If you want this to appear on the wiki page:\n    <developers>\n      <developer>\n        <id>bhacker</id>\n        <name>Bob Q. Hacker</name>\n        <email>bhacker@nowhere.net</email>\n      </developer>\n    </developers> -->\n\n    <!-- Assuming you want to host on @jenkinsci:\n    <url>https://github.com/jenkinsci/${project.artifactId}-plugin</url>\n    <scm>\n        <connection>scm:git:git://github.com/jenkinsci/${project.artifactId}-plugin.git</connection>\n        <developerConnection>scm:git:git@github.com:jenkinsci/${project.artifactId}-plugin.git</developerConnection>\n        <url>https://github.com/jenkinsci/${project.artifactId}-plugin</url>\n    </scm>\n    -->\n    <repositories>\n        <repository>\n            <id>repo.jenkins-ci.org</id>\n            <url>https://repo.jenkins-ci.org/public/</url>\n        </repository>\n    </repositories>\n    <pluginRepositories>\n        <pluginRepository>\n            <id>repo.jenkins-ci.org</id>\n            <url>https://repo.jenkins-ci.org/public/</url>\n        </pluginRepository>\n    </pluginRepositories>\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/java/io/jenkins/plugins/sample/HelloWorldBuilder.java",
    "content": "package io.jenkins.plugins.sample;\n\nimport hudson.Launcher;\nimport hudson.Extension;\nimport hudson.FilePath;\nimport hudson.util.FormValidation;\nimport hudson.model.AbstractProject;\nimport hudson.model.Run;\nimport hudson.model.TaskListener;\nimport hudson.tasks.Builder;\nimport hudson.tasks.BuildStepDescriptor;\nimport org.kohsuke.stapler.DataBoundConstructor;\nimport org.kohsuke.stapler.QueryParameter;\n\nimport javax.servlet.ServletException;\nimport java.io.IOException;\nimport jenkins.tasks.SimpleBuildStep;\nimport org.jenkinsci.Symbol;\nimport org.kohsuke.stapler.DataBoundSetter;\n\npublic class HelloWorldBuilder extends Builder implements SimpleBuildStep {\n\n    private final String name;\n    private boolean useFrench;\n\n    @DataBoundConstructor\n    public HelloWorldBuilder(String name) {\n        this.name = name;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public boolean isUseFrench() {\n        return useFrench;\n    }\n\n    @DataBoundSetter\n    public void setUseFrench(boolean useFrench) {\n        this.useFrench = useFrench;\n    }\n\n    @Override\n    public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {\n        if (useFrench) {\n            listener.getLogger().println(\"Bonjour, \" + name + \"!\");\n        } else {\n            listener.getLogger().println(\"Hello, \" + name + \"!\");\n        }\n    }\n\n    @Symbol(\"greet\")\n    @Extension\n    public static final class DescriptorImpl extends BuildStepDescriptor<Builder> {\n\n        public FormValidation doCheckName(@QueryParameter String value, @QueryParameter boolean useFrench)\n                throws IOException, ServletException {\n            if (value.length() == 0)\n                return FormValidation.error(Messages.HelloWorldBuilder_DescriptorImpl_errors_missingName());\n            if (value.length() < 4)\n                return FormValidation.warning(Messages.HelloWorldBuilder_DescriptorImpl_warnings_tooShort());\n            if (!useFrench && value.matches(\".*[éáàç].*\")) {\n                return FormValidation.warning(Messages.HelloWorldBuilder_DescriptorImpl_warnings_reallyFrench());\n            }\n            return FormValidation.ok();\n        }\n\n        @Override\n        public boolean isApplicable(Class<? extends AbstractProject> aClass) {\n            return true;\n        }\n\n        @Override\n        public String getDisplayName() {\n            return Messages.HelloWorldBuilder_DescriptorImpl_DisplayName();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/index.jelly",
    "content": "<?jelly escape-by-default='true'?>\n<div>\n</div>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.jelly",
    "content": "<?jelly escape-by-default='true'?>\n<j:jelly xmlns:j=\"jelly:core\" xmlns:st=\"jelly:stapler\" xmlns:d=\"jelly:define\" xmlns:l=\"/lib/layout\" xmlns:t=\"/lib/hudson\" xmlns:f=\"/lib/form\">\n    <f:entry title=\"${%Name}\" field=\"name\">\n        <f:textbox />\n    </f:entry>\n    <f:advanced>\n        <f:entry title=\"${%French}\" field=\"useFrench\"\n                 description=\"${%FrenchDescr}\">\n            <f:checkbox />\n        </f:entry>\n    </f:advanced>\n</j:jelly>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config.properties",
    "content": "Name=Name\nFrench=French\nFrenchDescr=Check if we should say hello in French"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/config_fr.properties",
    "content": "Name=Nom\nFrench=Fran\\u00e7ais\nFrenchDescr=V\\u00e9rifie qu'on dit bien hello en fran\\u00e7ais\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name.html",
    "content": "<div>\n    Your name.\n</div>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-name_fr.html",
    "content": "<div>\n    Votre nom.\n</div>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench.html",
    "content": "<div>\n    Use French?\n</div>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/HelloWorldBuilder/help-useFrench_fr.html",
    "content": "<div>\n    Utiliser le fran&ccedil;ais ?\n</div>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages.properties",
    "content": "HelloWorldBuilder.DescriptorImpl.errors.missingName=Please set a name\nHelloWorldBuilder.DescriptorImpl.warnings.tooShort=Isn't the name too short?\nHelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=Are you actually French?\n\nHelloWorldBuilder.DescriptorImpl.DisplayName=Say hello world"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-jenkins-plugin/src/main/resources/io/jenkins/plugins/sample/Messages_fr.properties",
    "content": "HelloWorldBuilder.DescriptorImpl.errors.missingName=Veuillez saisir un nom\nHelloWorldBuilder.DescriptorImpl.warnings.tooShort=Le nom n'est-il pas trop court ?\nHelloWorldBuilder.DescriptorImpl.warnings.reallyFrench=\\u00CAtes vous vraiment fran\\u00E7ais ?\n\nHelloWorldBuilder.DescriptorImpl.DisplayName=Dis hello world\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/.gitignore",
    "content": "# maven build creates this when in a container volume\n/?/\n/.gradle/\n/build/\ntarget/\ndependency-reduced-pom.xml\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\t<parent>\n\t\t<groupId>org.springframework.boot</groupId>\n\t\t<artifactId>spring-boot-starter-parent</artifactId>\n\t\t<version>2.2.2.RELEASE</version>\n\t\t<relativePath/> <!-- lookup parent from repository -->\n\t</parent>\n\t<groupId>com.example</groupId>\n\t<artifactId>spring-boot</artifactId>\n\t<version>0.0.1-SNAPSHOT</version>\n\t<name>spring-boot</name>\n\t<description>Demo project for Spring Boot</description>\n\n\t<properties>\n\t\t<java.version>1.8</java.version>\n\t</properties>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>org.springframework.boot</groupId>\n\t\t\t<artifactId>spring-boot-starter-web</artifactId>\n\t\t</dependency>\n\n\t\t<!-- tag::actuator[] -->\n\t\t<dependency>\n\t\t\t<groupId>org.springframework.boot</groupId>\n\t\t\t<artifactId>spring-boot-starter-actuator</artifactId>\n\t\t</dependency>\n\t\t<!-- end::actuator[] -->\n\n\t\t<!-- tag::tests[] -->\n\t\t<dependency>\n\t\t\t<groupId>org.springframework.boot</groupId>\n\t\t\t<artifactId>spring-boot-starter-test</artifactId>\n\t\t\t<scope>test</scope>\n\t\t\t<exclusions>\n\t\t\t\t<exclusion>\n\t\t\t\t\t<groupId>org.junit.vintage</groupId>\n\t\t\t\t\t<artifactId>junit-vintage-engine</artifactId>\n\t\t\t\t</exclusion>\n\t\t\t</exclusions>\n\t\t</dependency>\n\t\t<!-- end::tests[] -->\n\t</dependencies>\n\n\t<build>\n\t\t<plugins>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.springframework.boot</groupId>\n\t\t\t\t<artifactId>spring-boot-maven-plugin</artifactId>\n\t\t\t\t<version>2.1.5.RELEASE</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<mainClass>${start-class}</mainClass>\n\t\t\t\t\t<layout>ZIP</layout>\n\t\t\t\t\t<!-- this gives us a specific build example with a self-executing jar (jar with a shell script prefixed to the archive) -->\n\t\t\t\t\t<executable>true</executable>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>repackage</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/src/main/java/com/example/springboot/Application.java",
    "content": "package com.example.springboot;\n\nimport java.util.Arrays;\n\nimport org.springframework.boot.CommandLineRunner;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.annotation.Bean;\n\n@SpringBootApplication\npublic class Application {\n\n\tpublic static void main(String[] args) {\n\t\tSpringApplication.run(Application.class, args);\n\t}\n\n\t@Bean\n\tpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {\n\t\treturn args -> {\n\n\t\t\tSystem.out.println(\"Let's inspect the beans provided by Spring Boot:\");\n\n\t\t\tString[] beanNames = ctx.getBeanDefinitionNames();\n\t\t\tArrays.sort(beanNames);\n\t\t\tfor (String beanName : beanNames) {\n\t\t\t\tSystem.out.println(beanName);\n\t\t\t}\n\n\t\t};\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/src/main/java/com/example/springboot/HelloController.java",
    "content": "package com.example.springboot;\n\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\n@RestController\npublic class HelloController {\n\n\t@RequestMapping(\"/\")\n\tpublic String index() {\n\t\treturn \"Greetings from Spring Boot!\";\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/src/test/java/com/example/springboot/HelloControllerIT.java",
    "content": "package com.example.springboot;\n\nimport static org.assertj.core.api.Assertions.*;\n\nimport java.net.URL;\n\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.boot.test.web.client.TestRestTemplate;\nimport org.springframework.boot.web.server.LocalServerPort;\nimport org.springframework.http.ResponseEntity;\n\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)\npublic class HelloControllerIT {\n\n\t@LocalServerPort\n\tprivate int port;\n\n\tprivate URL base;\n\n\t@Autowired\n\tprivate TestRestTemplate template;\n\n    @BeforeEach\n    public void setUp() throws Exception {\n        this.base = new URL(\"http://localhost:\" + port + \"/\");\n    }\n\n    @Test\n    public void getHello() throws Exception {\n        ResponseEntity<String> response = template.getForEntity(base.toString(),\n                String.class);\n        assertThat(response.getBody()).isEqualTo(\"Greetings from Spring Boot!\");\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/java-builds/example-sb-app/src/test/java/com/example/springboot/HelloControllerTest.java",
    "content": "package com.example.springboot;\n\nimport static org.hamcrest.Matchers.equalTo;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\nimport org.junit.jupiter.api.Test;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.http.MediaType;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.request.MockMvcRequestBuilders;\n\n@SpringBootTest\n@AutoConfigureMockMvc\npublic class HelloControllerTest {\n\n\t@Autowired\n\tprivate MockMvc mvc;\n\n\t@Test\n\tpublic void getHello() throws Exception {\n\t\tmvc.perform(MockMvcRequestBuilders.get(\"/\").accept(MediaType.APPLICATION_JSON))\n\t\t\t\t.andExpect(status().isOk())\n\t\t\t\t.andExpect(content().string(equalTo(\"Greetings from Spring Boot!\")));\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jvm-installs/oracle-jdk-se-8/usr/lib/jvm/.gitignore",
    "content": "!/jdk-1.8-oracle-x64/bin"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jvm-installs/oracle-jdk-se-8/usr/lib/jvm/jdk-1.8-oracle-x64/release",
    "content": "JAVA_VERSION=\"1.8.0_411\"\nJAVA_RUNTIME_VERSION=\"1.8.0_411-b25\"\nOS_NAME=\"Linux\"\nOS_VERSION=\"2.6\"\nOS_ARCH=\"amd64\"\nSOURCE=\".:git:71ec2089cf8c+\"\nBUILD_TYPE=\"commercial\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jvm-installs/valid-post-jep223/jvm/openjdk/release",
    "content": "IMPLEMENTOR=\"Eclipse Adoptium\"\nIMPLEMENTOR_VERSION=\"Temurin-21.0.4+7\"\nJAVA_RUNTIME_VERSION=\"21.0.4+7-LTS\"\nJAVA_VERSION=\"21.0.4\"\nJAVA_VERSION_DATE=\"2024-07-16\"\nLIBC=\"gnu\"\nMODULES=\"java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.internal.opt jdk.zipfs jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.vector jdk.internal.le jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom\"\nOS_ARCH=\"aarch64\"\nOS_NAME=\"Linux\"\nSOURCE=\".:git:13710926b798\"\nBUILD_SOURCE=\"git:1271f10a26c47e1489a814dd2731f936a588d621\"\nBUILD_SOURCE_REPO=\"https://github.com/adoptium/temurin-build.git\"\nSOURCE_REPO=\"https://github.com/adoptium/jdk21u.git\"\nFULL_VERSION=\"21.0.4+7-LTS\"\nSEMANTIC_VERSION=\"21.0.4+7\"\nBUILD_INFO=\"OS: Linux Version: 5.4.0-150-generic\"\nJVM_VARIANT=\"Hotspot\"\nJVM_VERSION=\"21.0.4+7-LTS\"\nIMAGE_TYPE=\"JDK\"\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/jvm-installs/valid-post-jep223/jvm/openjdk/sibling/child/file1.txt",
    "content": "content!"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/continuation",
    "content": "Manifest-Version: 1.0\nPlugin-ScmUrl: https://github.com/jenkinsci/plugin-pom/example-jenkins\n -plugin\n\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/extra-empty-lines",
    "content": "Manifest-Version: 1.0\nArchiver-Version: Plexus Archiver\nCreated-By: Apache Maven 3.6.3\n\n\nName: thing-1\nBuilt-By: ?\n\n.\n\nName: thing-2\nBuilt-By: someone!\n\n\n :\n\nOther: things\njunk\n\n:\n\nLast: item"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/extra-info",
    "content": "Manifest-Version: 1.0\nArchiver-Version: Plexus Archiver\nCreated-By: Apache Maven 3.6.3\n\nName: thing-1\nBuilt-By: ?\n\nBuild-Jdk: 14.0.1\nMain-Class: hello.HelloWorld\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/leading-space",
    "content": "Key-keykeykey: initialconfig:com\ncontinue line1,$\ncontinue line1,$\n    $    # aka not empty line\nshould: parse"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/small",
    "content": "Manifest-Version: 1.0\n\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/standard-info",
    "content": "Manifest-Version: 1.0\nName: the-best-name\nSpecification-Title: the-spec-title\nSpecification-Vendor: the-spec-vendor\nSpecification-Version: the-spec-version\nImplementation-Title: the-impl-title\nImplementation-Vendor: the-impl-vendor\nImplementation-Version: the-impl-version\n\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/manifest/version-with-date",
    "content": "Manifest-Version: 1.0\nImplementation-Version: 1.3 2244 October 5 2005\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/colon-delimited-with-equals.pom.properties",
    "content": "#Generated by Maven\n#Tue Jul 07 18:59:56 GMT 2020\ngroupId:org.anchore\nartifactId: example-java=app-maven\nversion:   0.1.0=something"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/colon-delimited.pom.properties",
    "content": "#Generated by Maven\n#Tue Jul 07 18:59:56 GMT 2020\ngroupId:org.anchore\nartifactId: example-java-app-maven\nversion:   0.1.0"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/commons-codec.pom.xml",
    "content": "<?xml version=\"1.0\"?>\n<!--\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<!--\n To produce reports, use the reporting profile, for example: mvn -Preporting clean site\n You may need to use the -U option to update your environment if you get an error.\n -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-parent</artifactId>\n        <version>42</version>\n    </parent>\n    <groupId>commons-codec</groupId>\n    <artifactId>commons-codec</artifactId>\n    <!-- Remember to update the version in default.properties as well -->\n    <version>1.11</version>\n    <name>Apache Commons Codec</name>\n    <inceptionYear>2002</inceptionYear>\n    <description>\n        The Apache Commons Codec package contains simple encoder and decoders for\n        various formats such as Base64 and Hexadecimal.  In addition to these\n        widely used encoders and decoders, the codec package also maintains a\n        collection of phonetic encoding utilities.\n    </description>\n    <prerequisites>\n        <maven>3.0.0</maven>\n    </prerequisites>\n    <url>http://commons.apache.org/proper/commons-codec/</url>\n    <issueManagement>\n        <system>jira</system>\n        <url>http://issues.apache.org/jira/browse/CODEC</url>\n    </issueManagement>\n    <scm>\n        <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/codec/trunk</connection>\n        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/codec/trunk</developerConnection>\n        <url>http://svn.apache.org/viewvc/commons/proper/codec/trunk</url>\n    </scm>\n    <distributionManagement>\n        <site>\n            <id>stagingSite</id>\n            <name>Apache Staging Website</name>\n            <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid}/</url>\n        </site>\n    </distributionManagement>\n    <developers>\n        <developer>\n            <name>Henri Yandell</name>\n            <id>bayard</id>\n            <email>bayard@apache.org</email>\n        </developer>\n        <developer>\n            <name>Tim OBrien</name>\n            <id>tobrien</id>\n            <email>tobrien@apache.org</email>\n            <timezone>-6</timezone>\n        </developer>\n        <developer>\n            <name>Scott Sanders</name>\n            <id>sanders</id>\n            <email>sanders@totalsync.com</email>\n        </developer>\n        <developer>\n            <name>Rodney Waldhoff</name>\n            <id>rwaldhoff</id>\n            <email>rwaldhoff@apache.org</email>\n        </developer>\n        <developer>\n            <name>Daniel Rall</name>\n            <id>dlr</id>\n            <email>dlr@finemaltcoding.com</email>\n        </developer>\n        <developer>\n            <name>Jon S. Stevens</name>\n            <id>jon</id>\n            <email>jon@collab.net</email>\n        </developer>\n        <developer>\n            <name>Gary Gregory</name>\n            <id>ggregory</id>\n            <email>ggregory@apache.org</email>\n            <url>http://www.garygregory.com</url>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <name>David Graham</name>\n            <id>dgraham</id>\n            <email>dgraham@apache.org</email>\n        </developer>\n        <developer>\n            <name>Julius Davies</name>\n            <id>julius</id>\n            <email>julius@apache.org</email>\n            <organizationUrl>http://juliusdavies.ca/</organizationUrl>\n            <timezone>-8</timezone>\n        </developer>\n        <developer>\n            <name>Thomas Neidhart</name>\n            <id>tn</id>\n            <email>tn@apache.org</email>\n        </developer>\n    </developers>\n    <contributors>\n        <contributor>\n            <name>Christopher O'Brien</name>\n            <email>siege@preoccupied.net</email>\n            <roles>\n                <role>hex</role>\n                <role>md5</role>\n                <role>architecture</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Martin Redington</name>\n            <roles>\n                <role>Representing xml-rpc</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Jeffery Dever</name>\n            <roles>\n                <role>Representing http-client</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Steve Zimmermann</name>\n            <email>steve.zimmermann@heii.com</email>\n            <roles>\n                <role>Documentation</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Benjamin Walstrum</name>\n            <email>ben@walstrum.com</email>\n        </contributor>\n        <contributor>\n            <name>Oleg Kalnichevski</name>\n            <email>oleg@ural.ru</email>\n            <roles>\n                <role>Representing http-client</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Dave Dribin</name>\n            <email>apache@dave.dribin.org</email>\n            <roles>\n                <role>DigestUtil</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Alex Karasulu</name>\n            <email>aok123 at bellsouth.net</email>\n            <roles>\n                <role>Submitted Binary class and test</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Matthew Inger</name>\n            <email>mattinger at yahoo.com</email>\n            <roles>\n                <role>Submitted DIFFERENCE algorithm for Soundex and RefinedSoundex</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Jochen Wiedmann</name>\n            <email>jochen@apache.org</email>\n            <roles>\n                <role>Base64 code [CODEC-69]</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Sebastian Bazley</name>\n            <email>sebb@apache.org</email>\n            <roles>\n                <role>Streaming Base64</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Matthew Pocock</name>\n            <email>turingatemyhamster@gmail.com</email>\n            <roles>\n                <role>Beider-Morse phonetic matching</role>\n            </roles>\n        </contributor>\n        <contributor>\n            <name>Colm Rice</name>\n            <email>colm_rice at hotmail dot com</email>\n            <roles>\n                <role>Submitted Match Rating Approach (MRA) phonetic encoder and tests [CODEC-161]</role>\n            </roles>\n        </contributor>\n    </contributors>\n    <!-- Codec only has test dependencies ATM -->\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.12</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n            <version>3.5</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n    <properties>\n        <maven.compiler.source>1.6</maven.compiler.source>\n        <maven.compiler.target>1.6</maven.compiler.target>\n        <commons.componentid>codec</commons.componentid>\n        <commons.module.name>org.apache.commons.codec</commons.module.name>\n        <commons.release.version>1.11</commons.release.version>\n        <!-- The RC version used in the staging repository URL. -->\n        <commons.rc.version>RC1</commons.rc.version>\n        <commons.jira.id>CODEC</commons.jira.id>\n        <commons.jira.pid>12310464</commons.jira.pid>\n        <!-- Ensure copies work OK (can be removed later when this is in parent POM) -->\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <commons.encoding>UTF-8</commons.encoding>\n        <checkstyle.header.file>${basedir}/LICENSE-header.txt</checkstyle.header.file>\n        <checkstyle.version>2.17</checkstyle.version>\n        <commons.clirr.version>2.8</commons.clirr.version>\n    </properties>\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-scm-publish-plugin</artifactId>\n                    <version>${commons.scm-publish.version}</version>\n                    <configuration>\n                        <ignorePathsToDelete>\n                            <ignorePathToDelete>archive**</ignorePathToDelete>\n                        </ignorePathsToDelete>\n                    </configuration>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        <plugins>\n\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n                <configuration>\n                    <excludes>\n                        <exclude>src/site/resources/.htaccess</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n\n            <!-- Add Java 9 Automatic-Module-Name -->\n            <plugin>\n                <artifactId>maven-jar-plugin</artifactId>\n                <configuration>\n                    <archive combine.children=\"append\">\n                        <!-- Temporary fix, remove this after this has implemented in parent pom -->\n                        <manifestEntries>\n                            <Automatic-Module-Name>${commons.module.name}</Automatic-Module-Name>\n                        </manifestEntries>\n                    </archive>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <configuration>\n                    <excludes>\n                        <exclude>**/*AbstractTest.java</exclude>\n                        <exclude>**/*PerformanceTest.java</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-assembly-plugin</artifactId>\n                <configuration>\n                    <descriptors>\n                        <descriptor>src/assembly/bin.xml</descriptor>\n                        <descriptor>src/assembly/src.xml</descriptor>\n                    </descriptors>\n                    <tarLongFileMode>gnu</tarLongFileMode>\n                </configuration>\n            </plugin>\n            <!-- Allow use of mvn checkstyle:checkstyle. Must agree with reporting section below. -->\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n                <version>${checkstyle.version}</version>\n                <configuration>\n                    <configLocation>${basedir}/checkstyle.xml</configLocation>\n                    <enableRulesSummary>false</enableRulesSummary>\n                    <headerFile>${basedir}/LICENSE-header.txt</headerFile>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n                <version>${checkstyle.version}</version>\n                <configuration>\n                    <configLocation>${basedir}/checkstyle.xml</configLocation>\n                    <enableRulesSummary>false</enableRulesSummary>\n                    <headerFile>${basedir}/LICENSE-header.txt</headerFile>\n                </configuration>\n                <!-- We need to specify reportSets because 2.9.1 creates two reports -->\n                <reportSets>\n                    <reportSet>\n                        <reports>\n                            <report>checkstyle</report>\n                        </reports>\n                    </reportSet>\n                </reportSets>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-pmd-plugin</artifactId>\n                <version>3.8</version>\n                <configuration>\n                    <targetJdk>${maven.compiler.target}</targetJdk>\n                    <linkXref>true</linkXref>\n                    <rulesets>\n                        <ruleset>${basedir}/pmd.xml</ruleset>\n                    </rulesets>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>findbugs-maven-plugin</artifactId>\n                <version>${commons.findbugs.version}</version>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>taglist-maven-plugin</artifactId>\n                <version>2.4</version>\n                <configuration>\n                    <tags>\n                        <tag>TODO</tag>\n                        <tag>NOPMD</tag>\n                        <tag>NOTE</tag>\n                    </tags>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.codehaus.mojo</groupId>\n                <artifactId>javancss-maven-plugin</artifactId>\n                <version>2.1</version>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.rat</groupId>\n                <artifactId>apache-rat-plugin</artifactId>\n                <configuration>\n                    <excludes>\n                        <exclude>src/site/resources/.htaccess</exclude>\n                    </excludes>\n                </configuration>\n            </plugin>\n        </plugins>\n    </reporting>\n    <profiles>\n        <profile>\n            <id>travis</id>\n            <activation>\n                <property>\n                    <name>env.TRAVIS</name>\n                    <value>true</value>\n                </property>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>cobertura-maven-plugin</artifactId>\n                        <version>${commons.cobertura.version}</version>\n                        <configuration>\n                            <formats>\n                                <format>xml</format>\n                            </formats>\n                        </configuration>\n                    </plugin>\n                    <plugin>\n                        <groupId>org.eluder.coveralls</groupId>\n                        <artifactId>coveralls-maven-plugin</artifactId>\n                        <version>4.3.0</version>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n</project>"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/commons-text-1.10.0/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements.  See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n-->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.apache.commons</groupId>\n        <artifactId>commons-parent</artifactId>\n        <version>54</version>\n    </parent>\n    <artifactId>commons-text</artifactId>\n    <version>1.10.0</version>\n    <name>Apache Commons Text</name>\n    <description>Apache Commons Text is a library focused on algorithms working on strings.</description>\n    <url>https://commons.apache.org/proper/commons-text</url>\n\n    <properties>\n        <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n        <maven.compiler.source>1.8</maven.compiler.source>\n        <maven.compiler.target>1.8</maven.compiler.target>\n\n        <commons.componentid>text</commons.componentid>\n        <commons.module.name>org.apache.commons.text</commons.module.name>\n\n        <commons.release.version>1.10.0</commons.release.version>\n        <commons.release.desc>(Java 8+)</commons.release.desc>\n\n        <commons.jira.id>TEXT</commons.jira.id>\n        <commons.jira.pid>12318221</commons.jira.pid>\n\n        <commons.site.path>text</commons.site.path>\n        <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-text</commons.scmPubUrl>\n        <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>\n\n        <commons.junit.version>5.9.1</commons.junit.version>\n        <checkstyle.plugin.version>3.2.0</checkstyle.plugin.version>\n        <checkstyle.version>9.3</checkstyle.version>\n\n        <commons.spotbugs.plugin.version>4.7.2.0</commons.spotbugs.plugin.version>\n        <commons.spotbugs.impl.version>4.7.2</commons.spotbugs.impl.version>\n        <commons.pmd.version>3.19.0</commons.pmd.version>\n        <commons.pmd-impl.version>6.49.0</commons.pmd-impl.version>\n\n        <commons.mockito.version>4.8.0</commons.mockito.version>\n        <commons.jacoco.version>0.8.8</commons.jacoco.version>\n\n        <!-- apache-rat-plugin 0.13 and jdepend-maven-plugin 2.0 both fail with LinkageError when generating reports\n        with maven site plugin 3.11+. However, javadoc 3.4.0+ fails with site plugin versions lower than 3.11. So, we'll\n        use slightly older site and javadoc versions here in order to be able to generate all reports. -->\n        <commons.site-plugin.version>3.10.0</commons.site-plugin.version>\n        <commons.javadoc.version>3.4.1</commons.javadoc.version>\n\n        <!-- 22.1.0 requires Java 11 -->\n        <graalvm.version>22.0.0.2</graalvm.version>\n        <commons.rng.version>1.4</commons.rng.version>\n\n        <commons.japicmp.version>0.16.0</commons.japicmp.version>\n        <japicmp.skip>false</japicmp.skip>\n\n        <jmh.version>1.35</jmh.version>\n        <commons.project-info.version>3.1.2</commons.project-info.version>\n\n        <!-- Commons Release Plugin -->\n        <commons.bc.version>1.9</commons.bc.version>\n        <commons.rc.version>RC1</commons.rc.version>\n        <commons.release.isDistModule>true</commons.release.isDistModule>\n        <commons.distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}</commons.distSvnStagingUrl>\n        <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>\n        <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>\n    </properties>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n            <version>3.12.0</version>\n        </dependency>\n        <!-- testing -->\n        <dependency>\n            <groupId>org.junit.jupiter</groupId>\n            <artifactId>junit-jupiter</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.assertj</groupId>\n            <artifactId>assertj-core</artifactId>\n            <version>3.23.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n            <version>2.11.0</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.mockito</groupId>\n            <!--  Use mockito-inline instead of mockito-core to mock and spy on final classes. -->\n            <artifactId>mockito-inline</artifactId>\n            <version>${commons.mockito.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.graalvm.js</groupId>\n            <artifactId>js</artifactId>\n            <version>${graalvm.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.graalvm.js</groupId>\n            <artifactId>js-scriptengine</artifactId>\n            <version>${graalvm.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-rng-simple</artifactId>\n            <version>${commons.rng.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.openjdk.jmh</groupId>\n            <artifactId>jmh-core</artifactId>\n            <version>${jmh.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.openjdk.jmh</groupId>\n            <artifactId>jmh-generator-annprocess</artifactId>\n            <version>${jmh.version}</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <inceptionYear>2014</inceptionYear>\n\n    <scm>\n        <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-text</connection>\n        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-text</developerConnection>\n        <url>https://gitbox.apache.org/repos/asf?p=commons-text.git</url>\n    </scm>\n\n    <issueManagement>\n        <system>jira</system>\n        <url>https://issues.apache.org/jira/browse/TEXT</url>\n    </issueManagement>\n\n    <distributionManagement>\n        <site>\n            <id>apache.website</id>\n            <name>Apache Commons Site</name>\n            <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-text/</url>\n        </site>\n    </distributionManagement>\n\n    <profiles>\n        <profile>\n            <id>setup-checkout</id>\n            <activation>\n                <file>\n                    <missing>site-content</missing>\n                </file>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.apache.maven.plugins</groupId>\n                        <artifactId>maven-antrun-plugin</artifactId>\n                        <executions>\n                            <execution>\n                                <id>prepare-checkout</id>\n                                <goals>\n                                    <goal>run</goal>\n                                </goals>\n                                <phase>pre-site</phase>\n                                <configuration>\n                                    <target>\n                                        <exec executable=\"svn\">\n                                            <arg line=\"checkout --depth immediates ${commons.scmPubUrl} ${commons.scmPubCheckoutDirectory}\"/>\n                                        </exec>\n                                        <exec executable=\"svn\">\n                                            <arg line=\"update --set-depth exclude ${commons.scmPubCheckoutDirectory}/javadocs\"/>\n                                        </exec>\n                                        <pathconvert pathsep=\" \" property=\"dirs\">\n                                            <dirset dir=\"${commons.scmPubCheckoutDirectory}\" includes=\"*\"/>\n                                        </pathconvert>\n                                        <exec executable=\"svn\">\n                                            <arg line=\"update --set-depth infinity ${dirs}\"/>\n                                        </exec>\n                                    </target>\n                                </configuration>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>java9+</id>\n            <activation>\n                <jdk>[9,)</jdk>\n            </activation>\n            <properties>\n                <!-- coverall version 4.3.0 does not work with java 9+, see https://github.com/trautonen/coveralls-maven-plugin/issues/112 -->\n                <coveralls.skip>true</coveralls.skip>\n            </properties>\n        </profile>\n        <profile>\n            <id>benchmark</id>\n            <properties>\n                <skipTests>true</skipTests>\n                <benchmark>org.apache</benchmark>\n            </properties>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>exec-maven-plugin</artifactId>\n                        <version>3.1.0</version>\n                        <executions>\n                            <execution>\n                                <id>benchmark</id>\n                                <phase>test</phase>\n                                <goals>\n                                    <goal>exec</goal>\n                                </goals>\n                                <configuration>\n                                    <classpathScope>test</classpathScope>\n                                    <executable>java</executable>\n                                    <arguments>\n                                        <argument>-classpath</argument>\n                                        <classpath/>\n                                        <argument>org.openjdk.jmh.Main</argument>\n                                        <argument>-rf</argument>\n                                        <argument>json</argument>\n                                        <argument>-rff</argument>\n                                        <argument>target/jmh-result.${benchmark}.json</argument>\n                                        <argument>${benchmark}</argument>\n                                    </arguments>\n                                </configuration>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n</project>"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/equals-delimited-with-colons.pom.properties",
    "content": "#Generated by Maven\n#Tue Jul 07 18:59:56 GMT 2020\ngroupId=org.anchore\nartifactId= example-java:app-maven\nversion=   0.1.0:something"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/example-java-app-maven/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>org.anchore</groupId>\n\t<artifactId>example-java-app-maven</artifactId>\n\t<packaging>jar</packaging>\n\t<version>0.1.0</version>\n\n\t<properties>\n\t\t<maven.compiler.source>1.8</maven.compiler.source>\n\t\t<maven.compiler.target>1.8</maven.compiler.target>\n\t</properties>\n\n\t<dependencies>\n\t\t<!-- tag::joda[] -->\n\t\t<dependency>\n\t\t\t<groupId>com.joda</groupId>\n\t\t\t<artifactId>joda-time</artifactId>\n\t\t\t<version>2.9.2</version>\n\t\t</dependency>\n\t\t<!-- end::joda[] -->\n\t\t<!-- tag::junit[] -->\n\t\t<dependency>\n\t\t\t<groupId>junit</groupId>\n\t\t\t<artifactId>junit</artifactId>\n\t\t\t<version>4.12</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<!-- end::junit[] -->\n\t</dependencies>\n\n\t<build>\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-shade-plugin</artifactId>\n\t\t\t\t<version>2.1</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<phase>package</phase>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>shade</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<transformers>\n\t\t\t\t\t\t\t\t<transformer implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n\t\t\t\t\t\t\t\t\t<mainClass>hello.HelloWorld</mainClass>\n\t\t\t\t\t\t\t\t</transformer>\n\t\t\t\t\t\t\t</transformers>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/extra.pom.properties",
    "content": "#Generated by Maven\n#Tue Jul 07 18:59:56 GMT 2020\ngroupId=org.anchore\nartifactId=example-java-app-maven\nversion=0.1.0\nname=something-here\nanother=thing\nsweet=work\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/neo4j-license-maven-plugin.pom.xml",
    "content": "<!-- sourced from https://github.com/neo4j/license-maven-plugin/blob/3/pom.xml -->\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.sonatype.oss</groupId>\n        <artifactId>oss-parent</artifactId>\n        <version>7</version>\n        <relativePath />\n    </parent>\n\n    <groupId>org.neo4j.build.plugins</groupId>\n    <artifactId>license-maven-plugin</artifactId>å\n    <version>4-SNAPSHOT</version>\n    <packaging>maven-plugin</packaging>\n\n    <name>${project.artifactId}</name>\n    <description>Maven 2 plugin to check and update license headers in source files</description>\n    <url>http://components.neo4j.org/${project.artifactId}/${project.version}</url>\n    <inceptionYear>2008</inceptionYear>\n\n    <!--\n        Properties\n    -->\n\n    <properties>\n        <jdk>1.6</jdk>\n        <jdk.version>1.6</jdk.version>\n    </properties>\n\n    <!--\n        Versioning system\n    -->\n\n    <scm>\n        <connection>scm:git:git://github.com/neo4j/license-maven-plugin.git</connection>\n        <developerConnection>scm:git:git@github.com:neo4j/license-maven-plugin.git</developerConnection>\n        <url>https://github.com/neo4j/license-maven-plugin</url>\n    </scm>\n\n    <!--\n         Project settings\n     -->\n\n    <organization>\n        <name>Mathieu Carbou</name>\n        <url>http://mathieu.carbou.free.fr/</url>\n    </organization>\n\n    <licenses>\n        <!-- this has been modified for the purposes of a syft test -->\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n        <license>\n            <name>MIT</name>\n        </license>\n        <license>\n            <url>https://opensource.org/license/unlicense/</url>\n        </license>\n    </licenses>\n\n    <developers>\n        <developer>\n            <id>mimilowns</id>\n            <name>Cédric</name>\n            <email>mimilowns@gmail.com</email>\n            <timezone>+1</timezone>\n            <roles>\n                <role>developer</role>\n            </roles>\n        </developer>\n        <developer>\n            <id>mathieu.carbou</id>\n            <name>Mathieu Carbou</name>\n            <email>mathieu.carbou@gmail.com</email>\n            <organization>Mycila</organization>\n            <organizationUrl>http://mathieu.carbou.free.fr/</organizationUrl>\n            <timezone>-5</timezone>\n            <roles>\n                <role>project owner</role>\n                <role>developer</role>\n            </roles>\n        </developer>\n    </developers>\n\n    <issueManagement>\n        <system>Google Code</system>\n        <url>http://code.google.com/p/${project.artifactId}/issues/list</url>\n    </issueManagement>\n\n    <ciManagement />\n\n    <mailingLists>\n        <mailingList>\n            <name>maven-license-plugin-announce</name>\n            <subscribe>maven-license-plugin-announce-subscribe@googlegroups.com</subscribe>\n            <unsubscribe>maven-license-plugin-announce-unsubscribe@googlegroups.com</unsubscribe>\n            <archive>http://groups.google.com/group/maven-license-plugin-announce</archive>\n        </mailingList>\n        <mailingList>\n            <name>maven-license-plugin-codesite</name>\n            <subscribe>maven-license-plugin-codesite-subscribe@googlegroups.com</subscribe>\n            <unsubscribe>maven-license-plugin-codesite-unsubscribe@googlegroups.com</unsubscribe>\n            <archive>http://groups.google.com/group/maven-license-plugin-codesite</archive>\n        </mailingList>\n    </mailingLists>\n\n    <!--\n        Distributions\n    -->\n\n    <distributionManagement>\n        <repository>\n            <id>sonatype-nexus-staging</id>\n            <name>Nexus Release Repository</name>\n            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>\n        </repository>\n        <snapshotRepository>\n            <id>snapshots@m2.neo4j.org</id>\n            <name>snapshots@m2.neo4j.org</name>\n            <url>http://m2.neo4j.org/content/repositories/snapshots</url>\n        </snapshotRepository>\n        <site>\n            <id>neo4j-site</id>\n            <url>scpexe://components.neo4j.org/home/neo/components/${project.artifactId}/${project.version}</url>\n        </site>\n    </distributionManagement>\n\n    <!--\n        BUILD\n    -->\n\n    <build>\n        <extensions>\n            <extension>\n                <groupId>org.apache.maven.wagon</groupId>\n                <artifactId>wagon-webdav</artifactId>\n                <version>1.0-beta-2</version>\n            </extension>\n        </extensions>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <groupId>org.apache.felix</groupId>\n                    <artifactId>maven-bundle-plugin</artifactId>\n                    <version>2.1.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.felix</groupId>\n                    <artifactId>maven-ipojo-plugin</artifactId>\n                    <version>1.6.0</version>\n                </plugin>\n                <plugin>\n                    <groupId>com.mycila.maven-license-plugin</groupId>\n                    <artifactId>maven-license-plugin</artifactId>\n                    <version>1.8.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-antrun-plugin</artifactId>\n                    <version>1.4</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-source-plugin</artifactId>\n                    <version>2.1.2</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-jar-plugin</artifactId>\n                    <version>2.3.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-javadoc-plugin</artifactId>\n                    <version>2.7</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-deploy-plugin</artifactId>\n                    <version>2.5</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-clean-plugin</artifactId>\n                    <version>2.4.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-invoker-plugin</artifactId>\n                    <version>1.5</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-shade-plugin</artifactId>\n                    <version>1.3.3</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-assembly-plugin</artifactId>\n                    <version>2.2-beta-5</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-dependency-plugin</artifactId>\n                    <version>2.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <version>2.3.1</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-release-plugin</artifactId>\n                    <version>2.0</version>\n                </plugin>\n                <plugin>\n                    <artifactId>maven-surefire-plugin</artifactId>\n                    <version>2.6</version>\n                </plugin>\n                <plugin>\n                    <groupId>org.apache.maven.plugins</groupId>\n                    <artifactId>maven-gpg-plugin</artifactId>\n                    <version>1.4</version>\n                    <configuration>\n                        <keyname>Neo Technology Build Server</keyname>\n                        <useAgent>true</useAgent>\n                    </configuration>\n                </plugin>\n            </plugins>\n        </pluginManagement>\n        <plugins>\n            <!-- for maven plugins -->\n            <plugin>\n                <artifactId>maven-plugin-plugin</artifactId>\n                <version>2.6</version>\n            </plugin>\n            <plugin>\n                <artifactId>maven-clean-plugin</artifactId>\n                <configuration>\n                    <filesets>\n                        <fileset>\n                            <directory>.clover</directory>\n                        </fileset>\n                        <fileset>\n                            <directory>test-output</directory>\n                        </fileset>\n                    </filesets>\n                </configuration>\n            </plugin>\n            <!-- compilation -->\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <configuration>\n                    <source>${jdk}</source>\n                    <target>${jdk}</target>\n                </configuration>\n            </plugin>\n            <!-- testing -->\n            <plugin>\n                <artifactId>maven-surefire-plugin</artifactId>\n            </plugin>\n            <!-- packaging -->\n            <plugin>\n                <artifactId>maven-jar-plugin</artifactId>\n                <configuration>\n                    <archive>\n                        <manifest>\n                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\n                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>\n                        </manifest>\n                    </archive>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-source-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>attach-sources</id>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <artifactId>maven-remote-resources-plugin</artifactId>\n                <version>1.1</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>process</goal>\n                        </goals>\n                        <configuration>\n                            <resourceBundles>\n                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.3</resourceBundle>\n                            </resourceBundles>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <artifactId>maven-assembly-plugin</artifactId>\n                <configuration>\n                    <descriptorRefs>\n                        <descriptorRef>project</descriptorRef>\n                    </descriptorRefs>\n                </configuration>\n            </plugin>\n            <!-- releasing -->\n            <plugin>\n                <artifactId>maven-deploy-plugin</artifactId>\n                <configuration>\n                    <updateReleaseInfo>true</updateReleaseInfo>\n                </configuration>\n            </plugin>\n            <plugin>\n                <artifactId>maven-release-plugin</artifactId>\n            </plugin>\n            <!-- documentation -->\n            <plugin>\n                <artifactId>maven-dependency-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>com.mycila.maven-license-plugin</groupId>\n                <artifactId>maven-license-plugin</artifactId>\n                <version>1.9.0</version>\n                <configuration>\n                    <header>${basedir}/src/etc/header.txt</header>\n                    <failIfMissing>true</failIfMissing>\n                    <excludes>\n                        <exclude>.gitignore</exclude>\n                        <exclude>LICENSE.txt</exclude>\n                        <exclude>NOTICE.txt</exclude>\n                        <exclude>src/test/data/**</exclude>\n                        <exclude>src/test/integration/**</exclude>\n                        <exclude>src/test/resources/**</exclude>\n                    </excludes>\n                </configuration>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>check</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <!-- automatically handle it tests -->\n            <plugin>\n                <artifactId>maven-clean-plugin</artifactId>\n                <configuration>\n                    <filesets>\n                        <fileset>\n                            <directory>it</directory>\n                            <includes>\n                                <include>target/**</include>\n                                <include>*/target/**</include>\n                            </includes>\n                        </fileset>\n                        <fileset>\n                            <directory>target</directory>\n                        </fileset>\n                    </filesets>\n                </configuration>\n            </plugin>\n            <plugin>\n                <inherited>true</inherited>\n                <artifactId>maven-invoker-plugin</artifactId>\n                <configuration>\n                    <projectsDirectory>it</projectsDirectory>\n                    <showErrors>true</showErrors>\n                    <streamLogs>true</streamLogs>\n                    <skipInstallation>${ittest.skip}</skipInstallation>\n                    <skipInvocation>${ittest.skip}</skipInvocation>\n                    <properties>\n                        <target.version>${target.version}</target.version>\n                    </properties>\n                    <goals>\n                        <goal>test</goal>\n                    </goals>\n                    <pomIncludes>\n                        <pomInclude>**/pom.xml</pomInclude>\n                    </pomIncludes>\n                </configuration>\n                <executions>\n                    <execution>\n                        <id>integration-test</id>\n                        <goals>\n                            <goal>install</goal>\n                            <goal>run</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n\n    <!--\n         LIBS\n    -->\n\n    <dependencies>\n        <dependency>\n            <groupId>org.apache.maven</groupId>\n            <artifactId>maven-plugin-api</artifactId>\n            <version>3.0.1</version>\n            <scope>compile</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.mycila.xmltool</groupId>\n            <artifactId>xmltool</artifactId>\n            <version>3.3</version>\n            <scope>compile</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.maven</groupId>\n            <artifactId>maven-project</artifactId>\n            <version>3.0-alpha-2</version>\n            <scope>compile</scope>\n            <exclusions>\n                <exclusion>\n                    <artifactId>junit</artifactId>\n                    <groupId>junit</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.plexus</groupId>\n            <artifactId>plexus-utils</artifactId>\n            <version>2.0.5</version>\n            <scope>compile</scope>\n        </dependency>\n        <!-- testing -->\n        <dependency>\n            <groupId>org.testng</groupId>\n            <artifactId>testng</artifactId>\n            <version>5.7</version>\n            <classifier>jdk15</classifier>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <artifactId>junit</artifactId>\n                    <groupId>junit</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.maven</groupId>\n            <artifactId>maven-embedder</artifactId>\n            <version>3.0.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.maven.plugin-testing</groupId>\n            <artifactId>maven-plugin-testing-harness</artifactId>\n            <version>2.0-alpha-1</version>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <artifactId>junit</artifactId>\n                    <groupId>junit</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/small.pom.properties",
    "content": "#Generated by Maven\n#Tue Jul 07 18:59:56 GMT 2020\ngroupId=org.anchore\nartifactId= example-java-app-maven\nversion=  0.1.0\n"
  },
  {
    "path": "syft/pkg/cataloger/java/testdata/pom/transitive-top-level/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>my.other.group</groupId>\n    <artifactId>transitive-top-level</artifactId>\n    <version>99</version>\n    <packaging>jar</packaging>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>my.org</groupId>\n                <artifactId>child-one</artifactId>\n                <version>1.3.6</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>my.org</groupId>\n            <artifactId>child-one</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>my.org</groupId>\n            <artifactId>child-two</artifactId>\n            <version>2.1.90</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "syft/pkg/cataloger/java/zip_wrapped_archive_parser.go",
    "content": "package java\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar genericZipGlobs = []string{\n\t\"**/*.zip\",\n}\n\n// TODO: when the generic archive cataloger is implemented, this should be removed (https://github.com/anchore/syft/issues/246)\n\n// parseZipWrappedJavaArchive is a parser function for java archive contents contained within arbitrary zip files.\n\ntype genericZipWrappedJavaArchiveParser struct {\n\tcfg ArchiveCatalogerConfig\n}\n\nfunc newGenericZipWrappedJavaArchiveParser(cfg ArchiveCatalogerConfig) genericZipWrappedJavaArchiveParser {\n\treturn genericZipWrappedJavaArchiveParser{\n\t\tcfg: cfg,\n\t}\n}\n\nfunc (gzp genericZipWrappedJavaArchiveParser) parseZipWrappedJavaArchive(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\tcontentPath, archivePath, cleanupFn, err := saveArchiveToTmp(td, reader.Path(), reader)\n\t// note: even on error, we should always run cleanup functions\n\tdefer cleanupFn()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// we use our zip helper functions instead of that from the archiver package or the standard lib. Why? These helper\n\t// functions support zips with shell scripts prepended to the file. Specifically, the helpers use the central\n\t// header at the end of the file to determine where the beginning of the zip payload is (unlike the standard lib\n\t// or archiver).\n\tfileManifest, err := intFile.NewZipFileManifest(ctx, archivePath)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to read files from java archive: %w\", err)\n\t}\n\n\t// look for java archives within the zip archive\n\treturn discoverPkgsFromZip(ctx, reader.Location, archivePath, contentPath, fileManifest, nil, gzp.cfg)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/java/zip_wrapped_archive_parser_test.go",
    "content": "package java\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_parseZipWrappedJavaArchive(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/java-builds/packages/example-java-app-maven-0.1.0.zip\",\n\t\t\texpected: []string{\n\t\t\t\t\"example-java-app-maven\",\n\t\t\t\t\"joda-time\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(path.Base(test.fixture), func(t *testing.T) {\n\t\t\tgenerateJavaBuildFixture(t, test.fixture)\n\n\t\t\tfixture, err := os.Open(test.fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tgzp := newGenericZipWrappedJavaArchiveParser(ArchiveCatalogerConfig{})\n\n\t\t\tactualPkgs, _, err := gzp.parseZipWrappedJavaArchive(pkgtest.Context(t), nil, nil, file.LocationReadCloser{\n\t\t\t\tLocation:   file.NewLocation(test.fixture),\n\t\t\t\tReadCloser: fixture,\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar actualNames []string\n\t\t\tfor _, p := range actualPkgs {\n\t\t\t\tactualNames = append(actualNames, p.Name)\n\t\t\t}\n\n\t\t\tassert.ElementsMatch(t, test.expected, actualNames)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  javascript.CatalogerConfig:\n    fields:\n      - key: SearchRemoteLicenses\n        description: SearchRemoteLicenses enables querying the NPM registry API to retrieve license information for packages that are missing license data in their local metadata.\n        app_key: javascript.search-remote-licenses\n      - key: NPMBaseURL\n        description: NPMBaseURL specifies the base URL for the NPM registry API used when searching for remote license information.\n        app_key: javascript.npm-base-url\n      - key: IncludeDevDependencies\n        description: IncludeDevDependencies controls whether development dependencies should be included in the catalog results, in addition to production dependencies.\n        app_key: javascript.include-dev-dependencies\ncatalogers:\n  - ecosystem: javascript # MANUAL\n    name: javascript-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/javascript/cataloger.go\n      function: NewLockCataloger\n    config: javascript.CatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - javascript\n      - language\n      - node\n      - npm\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePnpmLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/pnpm-lock.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PnpmLockEntry\n        package_types: # AUTO-GENERATED\n          - npm\n        json_schema_types: # AUTO-GENERATED\n          - JavascriptPnpmLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n      - function: parseYarnLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/yarn.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.YarnLockEntry\n        package_types: # AUTO-GENERATED\n          - npm\n        json_schema_types: # AUTO-GENERATED\n          - JavascriptYarnLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - YarnLockEntry.Integrity\n      - function: parsePackageLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/package-lock.json'\n        metadata_types: # AUTO-GENERATED\n          - pkg.NpmPackageLockEntry\n        package_types: # AUTO-GENERATED\n          - npm\n        json_schema_types: # AUTO-GENERATED\n          - JavascriptNpmPackageLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - NpmPackageLockEntry.Integrity\n  - ecosystem: javascript # MANUAL\n    name: javascript-package-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/javascript/cataloger.go\n      function: NewPackageCataloger\n    selectors: # AUTO-GENERATED\n      - image\n      - installed\n      - javascript\n      - language\n      - node\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePackageJSON\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/package.json'\n        metadata_types: # AUTO-GENERATED\n          - pkg.NpmPackage\n        package_types: # AUTO-GENERATED\n          - npm\n        json_schema_types: # AUTO-GENERATED\n          - JavascriptNpmPackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/cataloger.go",
    "content": "/*\nPackage javascript provides a concrete Cataloger implementation for packages relating to the JavaScript language ecosystem.\n*/\npackage javascript\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewPackageCataloger returns a new cataloger object for NPM.\nfunc NewPackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"javascript-package-cataloger\").\n\t\tWithParserByGlobs(parsePackageJSON, \"**/package.json\")\n}\n\n// NewLockCataloger returns a new cataloger object for NPM (and NPM-adjacent, such as yarn) lock files.\nfunc NewLockCataloger(cfg CatalogerConfig) pkg.Cataloger {\n\tyarnLockAdapter := newGenericYarnLockAdapter(cfg)\n\tpackageLockAdapter := newGenericPackageLockAdapter(cfg)\n\tpnpmLockAdapter := newGenericPnpmLockAdapter(cfg)\n\treturn generic.NewCataloger(\"javascript-lock-cataloger\").\n\t\tWithParserByGlobs(packageLockAdapter.parsePackageLock, \"**/package-lock.json\").\n\t\tWithParserByGlobs(yarnLockAdapter.parseYarnLock, \"**/yarn.lock\").\n\t\tWithParserByGlobs(pnpmLockAdapter.parsePnpmLock, \"**/pnpm-lock.yaml\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/cataloger_test.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_JavascriptCataloger(t *testing.T) {\n\tctx := context.TODO()\n\tlocationSet := file.NewLocationSet(file.NewLocation(\"package-lock.json\"))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@actions/core\",\n\t\t\tVersion:   \"1.6.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/%40actions/core@1.6.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"package-lock.json\")),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz\", Integrity: \"sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"ansi-regex\",\n\t\t\tVersion:   \"3.0.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/ansi-regex@3.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz\", Integrity: \"sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"cowsay\",\n\t\t\tVersion:   \"1.4.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/cowsay@1.4.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"package-lock.json\")),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/cowsay/-/cowsay-1.4.0.tgz\", Integrity: \"sha512-rdg5k5PsHFVJheO/pmE3aDg2rUDDTfPJau6yYkZYlHFktUz+UxbE+IgnUAEyyCyv4noL5ltxXD0gZzmHPCy/9g==\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"get-stdin\",\n\t\t\tVersion:   \"5.0.1\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/get-stdin@5.0.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz\", Integrity: \"sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"is-fullwidth-code-point\",\n\t\t\tVersion:   \"2.0.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/is-fullwidth-code-point@2.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz\", Integrity: \"sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"minimist\",\n\t\t\tVersion:   \"0.0.10\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/minimist@0.0.10\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz\", Integrity: \"sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"optimist\",\n\t\t\tVersion:   \"0.6.1\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/optimist@0.6.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz\", Integrity: \"sha1-2j6nRob6IaGaERwybpDrFaAZZoY=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"string-width\",\n\t\t\tVersion:   \"2.1.1\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/string-width@2.1.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz\", Integrity: \"sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"strip-ansi\",\n\t\t\tVersion:   \"4.0.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/strip-ansi@4.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz\", Integrity: \"sha1-qEeQIusaw2iocTibY1JixQXuNo8=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"strip-eof\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/strip-eof@1.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz\", Integrity: \"sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"wordwrap\",\n\t\t\tVersion:   \"0.0.3\",\n\t\t\tFoundBy:   \"javascript-lock-cataloger\",\n\t\t\tPURL:      \"pkg:npm/wordwrap@0.0.3\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz\", Integrity: \"sha1-o9XabNXAvAAI03I0u68b7WMFkQc=\"},\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromDirectory(t, \"testdata/pkg-lock\").\n\t\tExpects(expectedPkgs, nil).\n\t\tTestCataloger(t, NewLockCataloger(CatalogerConfig{}))\n\n}\n\nfunc Test_PackageCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain package files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/package.json\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPackageCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_LockCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain package files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/package-lock.json\",\n\t\t\t\t\"src/pnpm-lock.yaml\",\n\t\t\t\t\"src/yarn.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewLockCataloger(CatalogerConfig{}))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/config.go",
    "content": "package javascript\n\nconst npmBaseURL = \"https://registry.npmjs.org\"\n\ntype CatalogerConfig struct {\n\t// SearchRemoteLicenses enables querying the NPM registry API to retrieve license information for packages that are missing license data in their local metadata.\n\t// app-config: javascript.search-remote-licenses\n\tSearchRemoteLicenses bool `json:\"search-remote-licenses\" yaml:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\t// NPMBaseURL specifies the base URL for the NPM registry API used when searching for remote license information.\n\t// app-config: javascript.npm-base-url\n\tNPMBaseURL string `json:\"npm-base-url\" yaml:\"npm-base-url\" mapstructure:\"npm-base-url\"`\n\t// IncludeDevDependencies controls whether development dependencies should be included in the catalog results, in addition to production dependencies.\n\t// app-config: javascript.include-dev-dependencies\n\tIncludeDevDependencies bool `json:\"include-dev-dependencies\" yaml:\"include-dev-dependencies\" mapstructure:\"include-dev-dependencies\"`\n}\n\nfunc DefaultCatalogerConfig() CatalogerConfig {\n\treturn CatalogerConfig{\n\t\tSearchRemoteLicenses: false,\n\t\tNPMBaseURL:           npmBaseURL,\n\t}\n}\n\nfunc (j CatalogerConfig) WithSearchRemoteLicenses(input bool) CatalogerConfig {\n\tj.SearchRemoteLicenses = input\n\treturn j\n}\n\nfunc (j CatalogerConfig) WithNpmBaseURL(input string) CatalogerConfig {\n\tif input != \"\" {\n\t\tj.NPMBaseURL = input\n\t}\n\treturn j\n}\n\nfunc (j CatalogerConfig) WithIncludeDevDependencies(input bool) CatalogerConfig {\n\tj.IncludeDevDependencies = input\n\treturn j\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/dependency.go",
    "content": "package javascript\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc packageLockDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.NpmPackageLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract package lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\n\tvar requires []string\n\n\tfor name, dependencySpecifier := range meta.Dependencies {\n\t\tpurl, err := packageurl.FromString(strings.ReplaceAll(dependencySpecifier, \"npm:\", \"pkg:npm/\"))\n\t\tif err == nil {\n\t\t\t// if the package url is valid, include the name from the package url since this is likely an alias\n\t\t\tvar fullName = fmt.Sprintf(\"%s/%s\", purl.Namespace, purl.Name)\n\t\t\trequires = append(requires, fullName)\n\t\t}\n\n\t\trequires = append(requires, name)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\nfunc pnpmLockDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.PnpmLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract pnpm lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\n\tvar requires []string\n\n\tfor name := range meta.Dependencies {\n\t\trequires = append(requires, name)\n\t}\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\nfunc yarnLockDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.YarnLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract yarn lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\n\tvar requires []string\n\n\tfor name := range meta.Dependencies {\n\t\trequires = append(requires, name)\n\t}\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/package.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newPackageJSONPackage(ctx context.Context, resolver file.Resolver, u packageJSON, indexLocation file.Location) pkg.Package {\n\tlicenseCandidates, err := u.licensesFromJSON()\n\tif err != nil {\n\t\tlog.Debugf(\"unable to extract licenses from javascript package.json: %+v\", err)\n\t}\n\n\tlicense := pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, licenseCandidates...)\n\t// Handle author, authors, contributors, and maintainers fields\n\tvar authorParts []string\n\n\t// Add a single author field if it exists\n\tif u.Author.Name != \"\" || u.Author.Email != \"\" || u.Author.URL != \"\" {\n\t\tif authStr := u.Author.AuthorString(); authStr != \"\" {\n\t\t\tauthorParts = append(authorParts, authStr)\n\t\t}\n\t}\n\n\t// Add authors field if it exists\n\tif len(u.Authors) > 0 {\n\t\tif authorsStr := u.Authors.String(); authorsStr != \"\" {\n\t\t\tauthorParts = append(authorParts, authorsStr)\n\t\t}\n\t}\n\n\t// Add contributors field if it exists\n\tif len(u.Contributors) > 0 {\n\t\tif contributorsStr := u.Contributors.String(); contributorsStr != \"\" {\n\t\t\tauthorParts = append(authorParts, contributorsStr)\n\t\t}\n\t}\n\n\t// Add maintainers field if it exists\n\tif len(u.Maintainers) > 0 {\n\t\tif maintainersStr := u.Maintainers.String(); maintainersStr != \"\" {\n\t\t\tauthorParts = append(authorParts, maintainersStr)\n\t\t}\n\t}\n\n\tauthorInfo := strings.Join(authorParts, \", \")\n\n\tp := pkg.Package{\n\t\tName:      u.Name,\n\t\tVersion:   u.Version,\n\t\tPURL:      packageURL(u.Name, u.Version),\n\t\tLocations: file.NewLocationSet(indexLocation),\n\t\tLanguage:  pkg.JavaScript,\n\t\tLicenses:  pkg.NewLicenseSet(license...),\n\t\tType:      pkg.NpmPkg,\n\t\tMetadata: pkg.NpmPackage{\n\t\t\tName:        u.Name,\n\t\t\tVersion:     u.Version,\n\t\t\tDescription: u.Description,\n\t\t\tAuthor:      authorInfo,\n\t\t\tHomepage:    u.Homepage,\n\t\t\tURL:         u.Repository.URL,\n\t\t\tPrivate:     u.Private,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\t// if license not specified, search for license files\n\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\n\treturn p\n}\n\nfunc newPackageLockV1Package(ctx context.Context, cfg CatalogerConfig, resolver file.Resolver, location file.Location, name string, u lockDependency) pkg.Package {\n\tversion := u.Version\n\n\tconst aliasPrefixPackageLockV1 = \"npm:\"\n\n\t// Handles type aliases https://github.com/npm/rfcs/blob/main/implemented/0001-package-aliases.md\n\tif strings.HasPrefix(version, aliasPrefixPackageLockV1) {\n\t\t// this is an alias.\n\t\t// `\"version\": \"npm:canonical-name@X.Y.Z\"`\n\t\tcanonicalPackageAndVersion := version[len(aliasPrefixPackageLockV1):]\n\t\tversionSeparator := strings.LastIndex(canonicalPackageAndVersion, \"@\")\n\n\t\tname = canonicalPackageAndVersion[:versionSeparator]\n\t\tversion = canonicalPackageAndVersion[versionSeparator+1:]\n\t}\n\n\tvar licenseSet pkg.LicenseSet\n\n\tif cfg.SearchRemoteLicenses {\n\t\tlicense, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, version)\n\t\tif err == nil && license != \"\" {\n\t\t\tlicenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, license)...)\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from javascript package-lock.json for package %s:%s: %+v\", name, version, err)\n\t\t}\n\t}\n\n\treturn finalizeLockPkg(\n\t\tctx,\n\t\tresolver,\n\t\tlocation,\n\t\tpkg.Package{\n\t\t\tName:      name,\n\t\t\tVersion:   version,\n\t\t\tLicenses:  licenseSet,\n\t\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tPURL:      packageURL(name, version),\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: u.Resolved, Integrity: u.Integrity},\n\t\t},\n\t)\n}\n\nfunc newPackageLockV2Package(ctx context.Context, cfg CatalogerConfig, resolver file.Resolver, location file.Location, name string, u lockPackage) pkg.Package {\n\tvar licenseSet pkg.LicenseSet\n\n\tif u.License != nil {\n\t\tlicenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, location, u.License...)...)\n\t} else if cfg.SearchRemoteLicenses {\n\t\tlicense, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, u.Version)\n\t\tif err == nil && license != \"\" {\n\t\t\tlicenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, license)...)\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from javascript package-lock.json for package %s:%s: %+v\", name, u.Version, err)\n\t\t}\n\t}\n\n\treturn finalizeLockPkg(\n\t\tctx,\n\t\tresolver,\n\t\tlocation,\n\t\tpkg.Package{\n\t\t\tName:      name,\n\t\t\tVersion:   u.Version,\n\t\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tLicenses:  licenseSet,\n\t\t\tPURL:      packageURL(name, u.Version),\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.NpmPackageLockEntry{Resolved: u.Resolved, Integrity: u.Integrity, Dependencies: u.Dependencies},\n\t\t},\n\t)\n}\n\nfunc newPnpmPackage(ctx context.Context, cfg CatalogerConfig, resolver file.Resolver, location file.Location, name, version string, integrity string, dependencies map[string]string) pkg.Package {\n\tvar licenseSet pkg.LicenseSet\n\n\tif cfg.SearchRemoteLicenses {\n\t\tlicense, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, version)\n\t\tif err == nil && license != \"\" {\n\t\t\tlicenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, license)...)\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from javascript pnpm-lock.yaml for package %s:%s: %+v\", name, version, err)\n\t\t}\n\t}\n\treturn finalizeLockPkg(\n\t\tctx,\n\t\tresolver,\n\t\tlocation,\n\t\tpkg.Package{\n\t\t\tName:      name,\n\t\t\tVersion:   version,\n\t\t\tLicenses:  licenseSet,\n\t\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tPURL:      packageURL(name, version),\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: integrity}, Dependencies: dependencies},\n\t\t},\n\t)\n}\n\nfunc newYarnLockPackage(ctx context.Context, cfg CatalogerConfig, resolver file.Resolver, location file.Location, name, version string, resolved string, integrity string, dependencies map[string]string) pkg.Package {\n\tvar licenseSet pkg.LicenseSet\n\n\tif cfg.SearchRemoteLicenses {\n\t\tlicense, err := getLicenseFromNpmRegistry(cfg.NPMBaseURL, name, version)\n\t\tif err == nil && license != \"\" {\n\t\t\tlicenseSet = pkg.NewLicenseSet(pkg.NewLicensesFromValuesWithContext(ctx, license)...)\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from javascript yarn.lock for package %s:%s: %+v\", name, version, err)\n\t\t}\n\t}\n\treturn finalizeLockPkg(\n\t\tctx,\n\t\tresolver,\n\t\tlocation,\n\t\tpkg.Package{\n\t\t\tName:      name,\n\t\t\tVersion:   version,\n\t\t\tLicenses:  licenseSet,\n\t\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tPURL:      packageURL(name, version),\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.YarnLockEntry{Resolved: resolved, Integrity: integrity, Dependencies: dependencies},\n\t\t},\n\t)\n}\n\nfunc formatNpmRegistryURL(baseURL, packageName, version string) (requestURL string, err error) {\n\turlPath := []string{packageName, version}\n\trequestURL, err = url.JoinPath(baseURL, urlPath...)\n\tif err != nil {\n\t\treturn requestURL, fmt.Errorf(\"unable to format npm request for pkg:version %s%s; %w\", packageName, version, err)\n\t}\n\treturn requestURL, nil\n}\n\nfunc getLicenseFromNpmRegistry(baseURL, packageName, version string) (string, error) {\n\t// \"https://registry.npmjs.org/%s/%s\", packageName, version\n\trequestURL, err := formatNpmRegistryURL(baseURL, packageName, version)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to format npm request for pkg:version %s%s; %w\", packageName, version, err)\n\t}\n\tlog.WithFields(\"url\", requestURL).Info(\"downloading javascript package from npm\")\n\n\tnpmRequest, err := http.NewRequest(http.MethodGet, requestURL, nil)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to format remote request: %w\", err)\n\t}\n\n\thttpClient := &http.Client{\n\t\tTimeout: time.Second * 10,\n\t}\n\n\tresp, err := httpClient.Do(npmRequest)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get package from npm registry: %w\", err)\n\t}\n\tdefer func() {\n\t\tif err := resp.Body.Close(); err != nil {\n\t\t\tlog.Errorf(\"unable to close body: %+v\", err)\n\t\t}\n\t}()\n\n\t// Read \"license\" from the response\n\tvar license struct {\n\t\tLicense string `json:\"license\"`\n\t}\n\n\tif err := json.NewDecoder(resp.Body).Decode(&license); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to parse license from npm registry: %w\", err)\n\t}\n\n\tlog.Tracef(\"Retrieved License: %s\", license.License)\n\n\treturn license.License, nil\n}\n\nfunc finalizeLockPkg(ctx context.Context, resolver file.Resolver, location file.Location, p pkg.Package) pkg.Package {\n\tlicenseCandidate := addLicenses(p.Name, resolver, location)\n\tp.Licenses.Add(pkg.NewLicensesFromLocationWithContext(ctx, location, licenseCandidate...)...)\n\tp.SetID()\n\treturn p\n}\n\nfunc addLicenses(name string, resolver file.Resolver, location file.Location) (allLicenses []string) {\n\tif resolver == nil {\n\t\treturn allLicenses\n\t}\n\n\tdir := path.Dir(location.RealPath)\n\tpkgPath := []string{dir, \"node_modules\"}\n\tpkgPath = append(pkgPath, strings.Split(name, \"/\")...)\n\tpkgPath = append(pkgPath, \"package.json\")\n\tpkgFile := path.Join(pkgPath...)\n\tlocations, err := resolver.FilesByPath(pkgFile)\n\tif err != nil {\n\t\tlog.Debugf(\"an error occurred attempting to read: %s - %+v\", pkgFile, err)\n\t\treturn allLicenses\n\t}\n\n\tif len(locations) == 0 {\n\t\treturn allLicenses\n\t}\n\n\tfor _, l := range locations {\n\t\tfoundLicenses, err := parseLicensesFromLocation(l, resolver, pkgFile)\n\t\tif err != nil {\n\t\t\treturn allLicenses\n\t\t}\n\t\tallLicenses = append(allLicenses, foundLicenses...)\n\t}\n\n\treturn allLicenses\n}\n\nfunc parseLicensesFromLocation(l file.Location, resolver file.Resolver, pkgFile string) ([]string, error) {\n\tcontentReader, err := resolver.FileContentsByLocation(l)\n\tif err != nil {\n\t\tlog.Debugf(\"error getting file content reader for %s: %v\", pkgFile, err)\n\t\treturn nil, err\n\t}\n\tdefer internal.CloseAndLogError(contentReader, l.RealPath)\n\n\tvar pkgJSON packageJSON\n\terr = json.NewDecoder(contentReader).Decode(&pkgJSON)\n\tif err != nil {\n\t\tlog.Debugf(\"error parsing %s: %v\", pkgFile, err)\n\t\treturn nil, err\n\t}\n\n\tout, err := pkgJSON.licensesFromJSON()\n\tif err != nil {\n\t\tlog.Debugf(\"error getting licenses from %s: %v\", pkgFile, err)\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// packageURL returns the PURL for the specific NPM package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, version string) string {\n\tvar namespace string\n\n\tfields := strings.SplitN(name, \"/\", 2)\n\tif len(fields) > 1 {\n\t\tnamespace = fields[0]\n\t\tname = fields[1]\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeNPM,\n\t\tnamespace,\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/package_test.go",
    "content": "package javascript\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttests := []struct {\n\t\ttestName  string\n\t\tname      string\n\t\tversion   string\n\t\texpected  string\n\t\tnamespace string\n\t}{\n\t\t{\n\t\t\ttestName: \"no namespace\",\n\t\t\tname:     \"arborist\",\n\t\t\tversion:  \"2.6.2\",\n\t\t\texpected: \"pkg:npm/arborist@2.6.2\",\n\t\t},\n\t\t{\n\t\t\ttestName:  \"split by namespace\",\n\t\t\tname:      \"npmcli/arborist\",\n\t\t\tversion:   \"2.6.2\",\n\t\t\texpected:  \"pkg:npm/npmcli/arborist@2.6.2\",\n\t\t\tnamespace: \"npmcli\",\n\t\t},\n\t\t{\n\t\t\ttestName:  \"encoding @ symobl\",\n\t\t\tname:      \"@npmcli/arborist\",\n\t\t\tversion:   \"2.6.2\",\n\t\t\texpected:  \"pkg:npm/%40npmcli/arborist@2.6.2\",\n\t\t\tnamespace: \"@npmcli\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.testName, func(t *testing.T) {\n\t\t\tactual := packageURL(tt.name, tt.version)\n\t\t\tassert.Equal(t, tt.expected, actual)\n\t\t\tdecoded, err := packageurl.FromString(actual)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.namespace, decoded.Namespace)\n\t\t\tif decoded.Namespace != \"\" {\n\t\t\t\tassert.Equal(t, tt.name, fmt.Sprintf(\"%s/%s\", decoded.Namespace, decoded.Name))\n\t\t\t} else {\n\t\t\t\tassert.Equal(t, tt.name, decoded.Name)\n\t\t\t}\n\t\t\tassert.Equal(t, tt.version, decoded.Version)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_package_json.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// integrity check\nvar _ generic.Parser = parsePackageJSON\n\n// packageJSON represents a JavaScript package.json file\ntype packageJSON struct {\n\tVersion         string            `json:\"version\"`\n\tLatest          []string          `json:\"latest\"`\n\tAuthor          person            `json:\"author\"`\n\tAuthors         people            `json:\"authors\"`\n\tContributors    people            `json:\"contributors\"`\n\tMaintainers     people            `json:\"maintainers\"`\n\tLicense         json.RawMessage   `json:\"license\"`\n\tLicenses        json.RawMessage   `json:\"licenses\"`\n\tName            string            `json:\"name\"`\n\tHomepage        string            `json:\"homepage\"`\n\tDescription     string            `json:\"description\"`\n\tDependencies    map[string]string `json:\"dependencies\"`\n\tDevDependencies map[string]string `json:\"devDependencies\"`\n\tRepository      repository        `json:\"repository\"`\n\tPrivate         bool              `json:\"private\"`\n}\n\ntype person struct {\n\tName  string `json:\"name\" mapstructure:\"name\"`\n\tEmail string `json:\"email\" mapstructure:\"email\"`\n\tURL   string `json:\"url\" mapstructure:\"url\"`\n}\n\ntype people []person\n\ntype repository struct {\n\tType string `json:\"type\" mapstructure:\"type\"`\n\tURL  string `json:\"url\" mapstructure:\"url\"`\n}\n\n// match example: \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\"\n// ---> name: \"Isaac Z. Schlueter\" email: \"i@izs.me\" url: \"http://blog.izs.me\"\nvar authorPattern = regexp.MustCompile(`^\\s*(?P<name>[^<(]*)(\\s+<(?P<email>.*)>)?(\\s\\((?P<url>.*)\\))?\\s*$`)\n\n// parsePackageJSON parses a package.json and returns the discovered JavaScript packages.\nfunc parsePackageJSON(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tdec := json.NewDecoder(reader)\n\n\tfor {\n\t\tvar p packageJSON\n\t\tif err := dec.Decode(&p); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse package.json file: %w\", err)\n\t\t}\n\n\t\t// always create a package, regardless of having a valid name and/or version,\n\t\t// a compliance filter later will remove these packages based on compliance rules\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPackageJSONPackage(ctx, resolver, p, reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t)\n\t}\n\n\tpkg.Sort(pkgs)\n\n\treturn pkgs, nil, nil\n}\n\nfunc (p *person) UnmarshalJSON(b []byte) error {\n\tvar authorStr string\n\tvar auth person\n\n\tif err := json.Unmarshal(b, &authorStr); err == nil {\n\t\t// successfully parsed as a string, now parse that string into fields\n\t\tfields := internal.MatchNamedCaptureGroups(authorPattern, authorStr)\n\t\tif err := mapstructure.Decode(fields, &auth); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to decode package.json author: %w\", err)\n\t\t}\n\t} else {\n\t\t// it's a map that may contain fields of various data types (not just strings)\n\t\tvar fields map[string]interface{}\n\t\tif err := json.Unmarshal(b, &fields); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to parse package.json author: %w\", err)\n\t\t}\n\t\tif err := mapstructure.Decode(fields, &auth); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to decode package.json author: %w\", err)\n\t\t}\n\t}\n\n\t*p = auth\n\n\treturn nil\n}\n\nfunc (p *person) AuthorString() string {\n\tresult := p.Name\n\tif p.Email != \"\" {\n\t\tresult += fmt.Sprintf(\" <%s>\", p.Email)\n\t}\n\tif p.URL != \"\" {\n\t\tresult += fmt.Sprintf(\" (%s)\", p.URL)\n\t}\n\treturn result\n}\n\nfunc (r *repository) UnmarshalJSON(b []byte) error {\n\tvar repositoryStr string\n\tvar fields map[string]string\n\tvar repo repository\n\n\tif err := json.Unmarshal(b, &repositoryStr); err != nil {\n\t\t// string parsing did not work, assume a map was given\n\t\t// for more information: https://docs.npmjs.com/files/package.json#people-fields-author-contributors\n\t\tif err := json.Unmarshal(b, &fields); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to parse package.json author: %w\", err)\n\t\t}\n\t\t// translate the map into a structure\n\t\tif err := mapstructure.Decode(fields, &repo); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to decode package.json author: %w\", err)\n\t\t}\n\n\t\t*r = repo\n\t} else {\n\t\tr.URL = repositoryStr\n\t}\n\n\treturn nil\n}\n\ntype npmPackageLicense struct {\n\tType string `json:\"type\"`\n\tURL  string `json:\"url\"`\n}\n\nfunc licenseFromJSON(b []byte) (string, error) {\n\t// first try as string\n\tvar licenseString string\n\terr := json.Unmarshal(b, &licenseString)\n\tif err == nil {\n\t\treturn licenseString, nil\n\t}\n\n\t// then try as object (this format is deprecated)\n\tvar licenseObject npmPackageLicense\n\terr = json.Unmarshal(b, &licenseObject)\n\tif err == nil {\n\t\treturn licenseObject.Type, nil\n\t}\n\n\treturn \"\", errors.New(\"unable to unmarshal license field as either string or object\")\n}\n\nfunc (p packageJSON) licensesFromJSON() ([]string, error) {\n\tif p.License == nil && p.Licenses == nil {\n\t\t// This package.json doesn't specify any licenses whatsoever\n\t\treturn []string{}, nil\n\t}\n\n\tsingleLicense, err := licenseFromJSON(p.License)\n\tif err == nil {\n\t\treturn []string{singleLicense}, nil\n\t}\n\n\tmultiLicense, err := licensesFromJSON(p.Licenses)\n\n\t// The \"licenses\" field is deprecated. It should be inspected as a last resort.\n\tif multiLicense != nil && err == nil {\n\t\tmapLicenses := func(licenses []npmPackageLicense) []string {\n\t\t\tmappedLicenses := make([]string, len(licenses))\n\t\t\tfor i, l := range licenses {\n\t\t\t\tmappedLicenses[i] = l.Type\n\t\t\t}\n\t\t\treturn mappedLicenses\n\t\t}\n\n\t\treturn mapLicenses(multiLicense), nil\n\t}\n\n\treturn nil, err\n}\n\nfunc licensesFromJSON(b []byte) ([]npmPackageLicense, error) {\n\tvar licenseObject []npmPackageLicense\n\terr := json.Unmarshal(b, &licenseObject)\n\tif err == nil {\n\t\treturn licenseObject, nil\n\t}\n\n\treturn nil, errors.New(\"unmarshal failed\")\n}\n\n// this supports both windows and unix paths\nvar filepathSeparator = regexp.MustCompile(`[\\\\/]`)\n\nfunc pathContainsNodeModulesDirectory(p string) bool {\n\tfor _, subPath := range filepathSeparator.Split(p, -1) {\n\t\tif subPath == \"node_modules\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *people) UnmarshalJSON(b []byte) error {\n\t// Try to unmarshal as an array of strings\n\tvar authorStrings []string\n\tif err := json.Unmarshal(b, &authorStrings); err == nil {\n\t\t// Successfully parsed as an array of strings\n\t\tauths := make([]person, len(authorStrings))\n\t\tfor i, authorStr := range authorStrings {\n\t\t\t// Parse each string into author fields\n\t\t\tfields := internal.MatchNamedCaptureGroups(authorPattern, authorStr)\n\t\t\tvar auth person\n\t\t\tif err := mapstructure.Decode(fields, &auth); err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to decode package.json author: %w\", err)\n\t\t\t}\n\t\t\t// Trim whitespace from name if it was parsed\n\t\t\tif auth.Name != \"\" {\n\t\t\t\tauth.Name = strings.TrimSpace(auth.Name)\n\t\t\t}\n\t\t\tauths[i] = auth\n\t\t}\n\t\t*p = auths\n\t\treturn nil\n\t}\n\n\t// Try to unmarshal as an array of objects\n\tvar authorObjs []map[string]interface{}\n\tif err := json.Unmarshal(b, &authorObjs); err == nil {\n\t\t// Successfully parsed as an array of objects\n\t\tauths := make([]person, len(authorObjs))\n\t\tfor i, fields := range authorObjs {\n\t\t\tvar auth person\n\t\t\tif err := mapstructure.Decode(fields, &auth); err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to decode package.json author object: %w\", err)\n\t\t\t}\n\t\t\tauths[i] = auth\n\t\t}\n\t\t*p = auths\n\t\treturn nil\n\t}\n\n\t// If we get here, it means neither format matched\n\treturn fmt.Errorf(\"unable to parse package.json authors field: expected array of strings or array of objects\")\n}\n\nfunc (p people) String() string {\n\tif len(p) == 0 {\n\t\treturn \"\"\n\t}\n\n\tauthorStrings := make([]string, len(p))\n\tfor i, auth := range p {\n\t\tauthorStrings[i] = auth.AuthorString()\n\t}\n\treturn strings.Join(authorStrings, \", \")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_package_json_test.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePackageJSON(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tFixture     string\n\t\tExpectedPkg pkg.Package\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"npm\",\n\t\t\t\tVersion:  \"6.14.6\",\n\t\t\t\tPURL:     \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package.json\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-license-object.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"npm\",\n\t\t\t\tVersion:  \"6.14.6\",\n\t\t\t\tPURL:     \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"ISC\", file.NewLocation(\"testdata/pkg-json/package-license-object.json\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-license-objects.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"testdata/pkg-json/package-license-objects.json\")),\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache-2.0\", file.NewLocation(\"testdata/pkg-json/package-license-objects.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-malformed-license.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"npm\",\n\t\t\t\tVersion:  \"6.14.6\",\n\t\t\t\tPURL:     \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-no-license.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"npm\",\n\t\t\t\tVersion:  \"6.14.6\",\n\t\t\t\tPURL:     \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:     pkg.NpmPkg,\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-nested-author.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-nested-author.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-repo-string.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"function-bind\",\n\t\t\t\tVersion: \"1.1.1\",\n\t\t\t\tPURL:    \"pkg:npm/function-bind@1.1.1\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"testdata/pkg-json/package-repo-string.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"function-bind\",\n\t\t\t\t\tVersion:     \"1.1.1\",\n\t\t\t\t\tAuthor:      \"Raynos <raynos2@gmail.com>, Raynos, Jordan Harband (https://github.com/ljharb)\",\n\t\t\t\t\tHomepage:    \"https://github.com/Raynos/function-bind\",\n\t\t\t\t\tURL:         \"git://github.com/Raynos/function-bind.git\",\n\t\t\t\t\tDescription: \"Implementation of Function.prototype.bind\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-private.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-private.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tPrivate:     true,\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-author-non-standard.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-author-non-standard.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"npm Inc. (https://www.npmjs.com/)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-authors-array.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-authors-array.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Harry Potter <hp@hogwards.com> (http://youknowwho.com/), John Smith <j.smith@something.com> (http://awebsite.com/)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-authors-objects.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-authors-objects.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Harry Potter <hp@hogwards.com> (http://youknowwho.com/), John Smith <j.smith@something.com> (http://awebsite.com/)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-both-author-and-authors.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-both-author-and-authors.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me), Harry Potter <hp@hogwards.com> (http://youknowwho.com/), John Smith <j.smith@something.com> (http://awebsite.com/)\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-contributors.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-contributors.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Alice Contributor <alice@example.com>, Bob Helper <bob@example.com>\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-maintainers.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-maintainers.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Charlie Maintainer <charlie@example.com>, Diana Keeper <diana@example.com>\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/pkg-json/package-all-author-fields.json\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:    \"npm\",\n\t\t\t\tVersion: \"6.14.6\",\n\t\t\t\tPURL:    \"pkg:npm/npm@6.14.6\",\n\t\t\t\tType:    pkg.NpmPkg,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Artistic-2.0\", file.NewLocation(\"testdata/pkg-json/package-all-author-fields.json\")),\n\t\t\t\t),\n\t\t\t\tLanguage: pkg.JavaScript,\n\t\t\t\tMetadata: pkg.NpmPackage{\n\t\t\t\t\tName:        \"npm\",\n\t\t\t\t\tVersion:     \"6.14.6\",\n\t\t\t\t\tAuthor:      \"Main Author <main@example.com>, Second Author <second@example.com>, Contrib One <contrib1@example.com>, Maintainer One <maintain1@example.com>\",\n\t\t\t\t\tHomepage:    \"https://docs.npmjs.com/\",\n\t\t\t\t\tURL:         \"https://github.com/npm/cli\",\n\t\t\t\t\tDescription: \"a package manager for JavaScript\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\ttest.ExpectedPkg.Locations.Add(file.NewLocation(test.Fixture))\n\t\t\tpkgtest.TestFileParser(t, test.Fixture, parsePackageJSON, []pkg.Package{test.ExpectedPkg}, nil)\n\t\t})\n\t}\n}\n\nfunc Test_corruptPackageJSON(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/package.json\").\n\t\tWithError().\n\t\tTestParser(t, parsePackageJSON)\n}\n\nfunc TestParsePackageJSON_Partial(t *testing.T) { // see https://github.com/anchore/syft/issues/311\n\tconst fixtureFile = \"testdata/pkg-json/package-partial.json\"\n\n\t// raise package.json files as packages with any information we find, these will be filtered out\n\t// according to compliance rules later\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tPURL:      packageURL(\"\", \"\"),\n\t\t\tMetadata:  pkg.NpmPackage{},\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(fixtureFile)),\n\t\t},\n\t}\n\tpkgtest.TestFileParser(t, fixtureFile, parsePackageJSON, expectedPkgs, nil)\n}\n\nfunc Test_pathContainsNodeModulesDirectory(t *testing.T) {\n\ttests := []struct {\n\t\tpath     string\n\t\texpected bool\n\t}{\n\t\t// positive\n\t\t{\n\t\t\tpath:     \"something/node_modules/package\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tpath:     \"node_modules/package\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tpath:     \"something/node_modules\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tpath:     \"\\\\something\\\\node_modules\\\\\",\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tpath:     \"\\\\something\\\\node_modules\",\n\t\t\texpected: true,\n\t\t},\n\t\t// negative\n\t\t{\n\t\t\tpath:     \"something/node_bogus_modules\",\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tpath:     \"something/node_modules_bogus\",\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tpath:     \"something/node_bogus_modules/package\",\n\t\t\texpected: false,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.path, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, pathContainsNodeModulesDirectory(test.path))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_package_lock.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// packageLock represents a JavaScript package.lock json file\ntype packageLock struct {\n\tRequires        bool `json:\"requires\"`\n\tLockfileVersion int  `json:\"lockfileVersion\"`\n\tDependencies    map[string]lockDependency\n\tPackages        map[string]lockPackage\n}\n\n// lockDependency represents a single package dependency listed in the package.lock json file\ntype lockDependency struct {\n\tVersion   string `json:\"version\"`\n\tResolved  string `json:\"resolved\"`\n\tIntegrity string `json:\"integrity\"`\n\tDev       bool   `json:\"dev\"`\n}\n\ntype lockPackage struct {\n\tName         string             `json:\"name\"` // only present in the root package entry (named \"\")\n\tVersion      string             `json:\"version\"`\n\tResolved     string             `json:\"resolved\"`\n\tIntegrity    string             `json:\"integrity\"`\n\tLicense      packageLockLicense `json:\"license\"`\n\tDev          bool               `json:\"dev\"`\n\tDependencies map[string]string  `json:\"dependencies\"`\n}\n\n// packageLockLicense\ntype packageLockLicense []string\n\ntype genericPackageLockAdapter struct {\n\tcfg CatalogerConfig\n}\n\nfunc newGenericPackageLockAdapter(cfg CatalogerConfig) genericPackageLockAdapter {\n\treturn genericPackageLockAdapter{\n\t\tcfg: cfg,\n\t}\n}\n\n// parsePackageLock parses a package-lock.json and returns the discovered JavaScript packages.\nfunc (a genericPackageLockAdapter) parsePackageLock(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t// in the case we find package-lock.json files in the node_modules directories, skip those\n\t// as the whole purpose of the lock file is for the specific dependencies of the root project\n\tif pathContainsNodeModulesDirectory(reader.Path()) {\n\t\treturn nil, nil, nil\n\t}\n\n\tvar pkgs []pkg.Package\n\tdec := json.NewDecoder(reader)\n\n\tvar lock packageLock\n\tfor {\n\t\tif err := dec.Decode(&lock); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse package-lock.json file: %w\", err)\n\t\t}\n\t}\n\n\tif lock.LockfileVersion == 1 {\n\t\tfor name, pkgMeta := range lock.Dependencies {\n\t\t\t// skip packages that are only present as a dev dependency\n\t\t\tif !a.cfg.IncludeDevDependencies && pkgMeta.Dev {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tpkgs = append(pkgs, newPackageLockV1Package(ctx, a.cfg, resolver, reader.Location, name, pkgMeta))\n\t\t}\n\t}\n\n\tif lock.LockfileVersion == 2 || lock.LockfileVersion == 3 {\n\t\tfor name, pkgMeta := range lock.Packages {\n\t\t\tif name == \"\" {\n\t\t\t\tif pkgMeta.Name == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tname = pkgMeta.Name\n\t\t\t}\n\n\t\t\t// skip packages that are only present as a dev dependency\n\t\t\tif !a.cfg.IncludeDevDependencies && pkgMeta.Dev {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// handles alias names\n\t\t\tif pkgMeta.Name != \"\" {\n\t\t\t\tname = pkgMeta.Name\n\t\t\t}\n\n\t\t\tnewPkg := newPackageLockV2Package(ctx, a.cfg, resolver, reader.Location, getNameFromPath(name), pkgMeta)\n\t\t\tpkgs = append(pkgs, newPkg)\n\t\t}\n\t}\n\n\tpkg.Sort(pkgs)\n\n\treturn pkgs, dependency.Resolve(packageLockDependencySpecifier, pkgs), unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc (licenses *packageLockLicense) UnmarshalJSON(data []byte) (err error) {\n\t// The license field could be either a string or an array.\n\n\t// 1. An array\n\tvar arr []string\n\tif err := json.Unmarshal(data, &arr); err == nil {\n\t\t*licenses = arr\n\t\treturn nil\n\t}\n\n\t// 2. A string\n\tvar str string\n\tif err = json.Unmarshal(data, &str); err == nil {\n\t\t*licenses = make([]string, 1)\n\t\t(*licenses)[0] = str\n\t\treturn nil\n\t}\n\n\t// debug the content we did not expect\n\tif len(data) > 0 {\n\t\tlog.WithFields(\"license\", string(data)).Debug(\"Unable to parse the following `license` value in package-lock.json\")\n\t}\n\n\t// 3. Unexpected\n\t// In case we are unable to parse the license field,\n\t// i.e if we have not covered the full specification,\n\t// we do not want to throw an error, instead assign nil.\n\treturn nil\n}\n\nfunc getNameFromPath(path string) string {\n\tparts := strings.Split(path, \"node_modules/\")\n\treturn parts[len(parts)-1]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_package_lock_test.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePackageLock(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"@actions/core\",\n\t\t\tVersion:  \"1.6.0\",\n\t\t\tPURL:     \"pkg:npm/%40actions/core@1.6.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz\", Integrity: \"sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"ansi-regex\",\n\t\t\tVersion:  \"3.0.0\",\n\t\t\tPURL:     \"pkg:npm/ansi-regex@3.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz\", Integrity: \"sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"cowsay\",\n\t\t\tVersion:  \"1.4.0\",\n\t\t\tPURL:     \"pkg:npm/cowsay@1.4.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/cowsay/-/cowsay-1.4.0.tgz\", Integrity: \"sha512-rdg5k5PsHFVJheO/pmE3aDg2rUDDTfPJau6yYkZYlHFktUz+UxbE+IgnUAEyyCyv4noL5ltxXD0gZzmHPCy/9g==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"get-stdin\",\n\t\t\tVersion:  \"5.0.1\",\n\t\t\tPURL:     \"pkg:npm/get-stdin@5.0.1\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz\", Integrity: \"sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"is-fullwidth-code-point\",\n\t\t\tVersion:  \"2.0.0\",\n\t\t\tPURL:     \"pkg:npm/is-fullwidth-code-point@2.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz\", Integrity: \"sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"minimist\",\n\t\t\tVersion:  \"0.0.10\",\n\t\t\tPURL:     \"pkg:npm/minimist@0.0.10\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz\", Integrity: \"sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"optimist\",\n\t\t\tVersion:  \"0.6.1\",\n\t\t\tPURL:     \"pkg:npm/optimist@0.6.1\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz\", Integrity: \"sha1-2j6nRob6IaGaERwybpDrFaAZZoY=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"string-width\",\n\t\t\tVersion:  \"2.1.1\",\n\t\t\tPURL:     \"pkg:npm/string-width@2.1.1\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz\", Integrity: \"sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"strip-ansi\",\n\t\t\tVersion:  \"4.0.0\",\n\t\t\tPURL:     \"pkg:npm/strip-ansi@4.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz\", Integrity: \"sha1-qEeQIusaw2iocTibY1JixQXuNo8=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"strip-eof\",\n\t\t\tVersion:  \"1.0.0\",\n\t\t\tPURL:     \"pkg:npm/strip-eof@1.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz\", Integrity: \"sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"wordwrap\",\n\t\t\tVersion:  \"0.0.3\",\n\t\t\tPURL:     \"pkg:npm/wordwrap@0.0.3\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz\", Integrity: \"sha1-o9XabNXAvAAI03I0u68b7WMFkQc=\"},\n\t\t},\n\t}\n\tfixture := \"testdata/pkg-lock/package-lock.json\"\n\tfor i := range expectedPkgs {\n\t\texpectedPkgs[i].Locations.Add(file.NewLocation(fixture))\n\t}\n\n\tadapter := newGenericPackageLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePackageLockV2(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pkg-lock/package-lock-2.json\"\n\tvar expectedRelationships []artifact.Relationship\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"npm\",\n\t\t\tVersion:  \"6.14.6\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/npm@6.14.6\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Dependencies: map[string]string{\"@types/react\": \"^18.0.9\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/prop-types\",\n\t\t\tVersion:  \"15.7.5\",\n\t\t\tPURL:     \"pkg:npm/%40types/prop-types@15.7.5\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz\", Integrity: \"sha1-XxnSuFqY6VWANvajysyIGUIPBc8=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/react\",\n\t\t\tVersion:  \"18.0.17\",\n\t\t\tPURL:     \"pkg:npm/%40types/react@18.0.17\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz\", Integrity: \"sha1-RYPZwyLWfv5LOak10iPtzHBQzPQ=\", Dependencies: map[string]string{\"@types/prop-types\": \"*\", \"@types/scheduler\": \"*\", \"csstype\": \"^3.0.2\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/scheduler\",\n\t\t\tVersion:  \"0.16.2\",\n\t\t\tPURL:     \"pkg:npm/%40types/scheduler@0.16.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz\", Integrity: \"sha1-GmL4lSVyPd4kuhsBsJK/XfitTTk=\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"csstype\",\n\t\t\tVersion:  \"3.1.0\",\n\t\t\tPURL:     \"pkg:npm/csstype@3.1.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz\", Integrity: \"sha1-TdysNxjXh8+d8NG30VAzklyPKfI=\"},\n\t\t},\n\t}\n\tfor i := range expectedPkgs {\n\t\texpectedPkgs[i].Locations.Add(file.NewLocation(fixture))\n\t}\n\texpectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[1],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[2],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tadapter := newGenericPackageLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePackageLockV3(t *testing.T) {\n\tfixture := \"testdata/pkg-lock/package-lock-3.json\"\n\tvar expectedRelationships []artifact.Relationship\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"lock-v3-fixture\",\n\t\t\tVersion:  \"1.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/lock-v3-fixture@1.0.0\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Dependencies: map[string]string{\"@types/react\": \"^18.0.9\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/prop-types\",\n\t\t\tVersion:  \"15.7.5\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/%40types/prop-types@15.7.5\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz\", Integrity: \"sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/react\",\n\t\t\tVersion:  \"18.0.20\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/%40types/react@18.0.20\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz\", Integrity: \"sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==\", Dependencies: map[string]string{\"@types/prop-types\": \"*\", \"@types/scheduler\": \"*\", \"csstype\": \"^3.0.2\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"@types/scheduler\",\n\t\t\tVersion:  \"0.16.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/%40types/scheduler@0.16.2\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz\", Integrity: \"sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"csstype\",\n\t\t\tVersion:  \"3.1.1\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tPURL:     \"pkg:npm/csstype@3.1.1\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz\", Integrity: \"sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==\"},\n\t\t},\n\t}\n\tfor i := range expectedPkgs {\n\t\texpectedPkgs[i].Locations.Add(file.NewLocation(fixture))\n\t}\n\texpectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[1],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[2],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[2],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tadapter := newGenericPackageLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePackageLockAlias(t *testing.T) {\n\tctx := context.TODO()\n\tvar expectedRelationships []artifact.Relationship\n\tcommonPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"case\",\n\t\t\tVersion:  \"1.6.2\",\n\t\t\tPURL:     \"pkg:npm/case@1.6.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/case/-/case-1.6.2.tgz\", Integrity: \"sha512-ll380ZRoraT7mUK2G92UbH+FJVD5AwdVIAYk9xhV1tauh0carDgYByUD1HhjCWsWgxrfQvCeHvtfj7IYR6TKeg==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"case\",\n\t\t\tVersion:  \"1.6.3\",\n\t\t\tPURL:     \"pkg:npm/case@1.6.3\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/case/-/case-1.6.3.tgz\", Integrity: \"sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==\"},\n\t\t},\n\t\t{\n\t\t\tName:     \"@bundled-es-modules/chai\",\n\t\t\tVersion:  \"4.2.2\",\n\t\t\tPURL:     \"pkg:npm/%40bundled-es-modules/chai@4.2.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Resolved: \"https://registry.npmjs.org/@bundled-es-modules/chai/-/chai-4.2.2.tgz\", Integrity: \"sha512-iGmVYw2/zJCoqyKTtWEYCtFmMyi8WmACQKtky0lpNyEKWX0YIOpKWGD7saMXL+tPpllss0otilxV0SLwyi3Ytg==\"},\n\t\t},\n\t}\n\n\tpackageLockV1 := \"testdata/pkg-lock/alias-package-lock-1.json\"\n\tpackageLockV2 := \"testdata/pkg-lock/alias-package-lock-2.json\"\n\tpackageLocks := []string{packageLockV1, packageLockV2}\n\n\tv2Pkg := pkg.Package{\n\t\tName:     \"alias-check\",\n\t\tVersion:  \"1.0.0\",\n\t\tPURL:     \"pkg:npm/alias-check@1.0.0\",\n\t\tLanguage: pkg.JavaScript,\n\t\tType:     pkg.NpmPkg,\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"ISC\", file.NewLocation(packageLockV2)),\n\t\t),\n\t\tMetadata: pkg.NpmPackageLockEntry{Dependencies: map[string]string{\"case\": \"1.6.2\", \"case-alias\": \"npm:case@^1.6.3\", \"chai\": \"npm:@bundled-es-modules/chai@^4.2.2\"}},\n\t}\n\n\tfor _, pl := range packageLocks {\n\t\texpected := make([]pkg.Package, len(commonPkgs))\n\t\tcopy(expected, commonPkgs)\n\n\t\tif pl == packageLockV2 {\n\t\t\texpected = append(expected, v2Pkg)\n\t\t}\n\n\t\tfor i := range expected {\n\t\t\texpected[i].Locations.Add(file.NewLocation(pl))\n\t\t}\n\n\t\tif pl == packageLockV2 {\n\t\t\texpectedRelationships = []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: expected[0],\n\t\t\t\t\tTo:   expected[3],\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: expected[1],\n\t\t\t\t\tTo:   expected[3],\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: expected[2],\n\t\t\t\t\tTo:   expected[3],\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tadapter := newGenericPackageLockAdapter(CatalogerConfig{})\n\t\tpkgtest.TestFileParser(t, pl, adapter.parsePackageLock, expected, expectedRelationships)\n\t}\n}\n\nfunc TestParsePackageLockLicenseWithArray(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pkg-lock/array-license-package-lock.json\"\n\tvar expectedRelationships []artifact.Relationship\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:     \"tmp\",\n\t\t\tVersion:  \"1.0.0\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"ISC\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tPURL:     \"pkg:npm/tmp@1.0.0\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Dependencies: map[string]string{\"pause-stream\": \"0.0.11\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"pause-stream\",\n\t\t\tVersion:  \"0.0.11\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache2\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tPURL:     \"pkg:npm/pause-stream@0.0.11\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{Dependencies: map[string]string{\"through\": \"~2.3\"}},\n\t\t},\n\t\t{\n\t\t\tName:     \"through\",\n\t\t\tVersion:  \"2.3.8\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tPURL:     \"pkg:npm/through@2.3.8\",\n\t\t\tMetadata: pkg.NpmPackageLockEntry{},\n\t\t},\n\t}\n\tfor i := range expectedPkgs {\n\t\texpectedPkgs[i].Locations.Add(file.NewLocation(fixture))\n\t}\n\n\texpectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[2],\n\t\t\tTo:   expectedPkgs[1],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[1],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tadapter := newGenericPackageLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePackageLock, expectedPkgs, expectedRelationships)\n}\n\nfunc Test_corruptPackageLock(t *testing.T) {\n\tgap := newGenericPackageLockAdapter(DefaultCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/package-lock.json\").\n\t\tWithError().\n\t\tTestParser(t, gap.parsePackageLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_pnpm_lock.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// pnpmPackage holds the raw name and version extracted from the lockfile.\ntype pnpmPackage struct {\n\tName         string\n\tVersion      string\n\tIntegrity    string\n\tDependencies map[string]string\n\tDev          bool\n}\n\n// pnpmLockfileParser defines the interface for parsing different versions of pnpm lockfiles.\ntype pnpmLockfileParser interface {\n\tParse(version float64, data []byte) ([]pnpmPackage, error)\n}\n\ntype pnpmV6PackageEntry struct {\n\tResolution   map[string]string `yaml:\"resolution\"`\n\tDependencies map[string]string `yaml:\"dependencies\"`\n\tDev          bool              `yaml:\"dev\"`\n}\n\n// pnpmV6LockYaml represents the structure of pnpm lockfiles for versions < 9.0.\ntype pnpmV6LockYaml struct {\n\tDependencies map[string]interface{}        `yaml:\"dependencies\"`\n\tPackages     map[string]pnpmV6PackageEntry `yaml:\"packages\"`\n}\n\ntype pnpmV9SnapshotEntry struct {\n\tDependencies               map[string]string `yaml:\"dependencies\"`\n\tOptional                   bool              `yaml:\"optional\"`\n\tOptionalDependencies       map[string]string `yaml:\"optionalDependencies\"`\n\tTransitivePeerDependencies []string          `yaml:\"transitivePeerDependencies\"`\n}\n\ntype pnpmV9PackageEntry struct {\n\tResolution       map[string]string `yaml:\"resolution\"`\n\tPeerDependencies map[string]string `yaml:\"peerDependencies\"`\n\tDev              bool              `yaml:\"dev\"`\n}\n\n// pnpmV9LockYaml represents the structure of pnpm lockfiles for versions >= 9.0.\ntype pnpmV9LockYaml struct {\n\tLockfileVersion string                         `yaml:\"lockfileVersion\"`\n\tImporters       map[string]interface{}         `yaml:\"importers\"` // Using interface{} for forward compatibility\n\tPackages        map[string]pnpmV9PackageEntry  `yaml:\"packages\"`\n\tSnapshots       map[string]pnpmV9SnapshotEntry `yaml:\"snapshots\"`\n}\n\ntype genericPnpmLockAdapter struct {\n\tcfg CatalogerConfig\n}\n\nfunc newGenericPnpmLockAdapter(cfg CatalogerConfig) genericPnpmLockAdapter {\n\treturn genericPnpmLockAdapter{\n\t\tcfg: cfg,\n\t}\n}\n\n// Parse implements the pnpmLockfileParser interface for v6-v8 lockfiles.\nfunc (p *pnpmV6LockYaml) Parse(version float64, data []byte) ([]pnpmPackage, error) {\n\tif err := yaml.Unmarshal(data, p); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal pnpm v6 lockfile: %w\", err)\n\t}\n\n\tpackages := make(map[string]pnpmPackage)\n\n\t// Direct dependencies\n\tfor name, info := range p.Dependencies {\n\t\tver, err := parseVersionField(name, info)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"package\", name, \"error\", err).Trace(\"unable to parse pnpm dependency\")\n\t\t\tcontinue\n\t\t}\n\t\tkey := name + \"@\" + ver\n\t\tpackages[key] = pnpmPackage{Name: name, Version: ver}\n\t}\n\n\tsplitChar := \"/\"\n\tif version >= 6.0 {\n\t\tsplitChar = \"@\"\n\t}\n\n\t// All transitive dependencies\n\tfor key, pkgInfo := range p.Packages {\n\t\tname, ver, ok := parsePnpmPackageKey(key, splitChar)\n\t\tif !ok {\n\t\t\tlog.WithFields(\"key\", key).Trace(\"unable to parse pnpm package key\")\n\t\t\tcontinue\n\t\t}\n\t\tpkgKey := name + \"@\" + ver\n\n\t\tintegrity := \"\"\n\t\tif value, ok := pkgInfo.Resolution[\"integrity\"]; ok {\n\t\t\tintegrity = value\n\t\t}\n\n\t\tdependencies := make(map[string]string)\n\t\tfor depName, depVersion := range pkgInfo.Dependencies {\n\t\t\tvar normalizedVersion = strings.SplitN(depVersion, \"(\", 2)[0]\n\t\t\tdependencies[depName] = normalizedVersion\n\t\t}\n\n\t\tpackages[pkgKey] = pnpmPackage{Name: name, Version: ver, Integrity: integrity, Dependencies: dependencies, Dev: pkgInfo.Dev}\n\t}\n\n\treturn toSortedSlice(packages), nil\n}\n\n// Parse implements the PnpmLockfileParser interface for v9+ lockfiles.\nfunc (p *pnpmV9LockYaml) Parse(_ float64, data []byte) ([]pnpmPackage, error) {\n\tif err := yaml.Unmarshal(data, p); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal pnpm v9 lockfile: %w\", err)\n\t}\n\n\tpackages := make(map[string]pnpmPackage)\n\n\t// In v9, all resolved dependencies are listed in the top-level \"packages\" field.\n\t// The key format is like /<name>@<version> or /<name>@<version>(<peer-deps>).\n\tfor key, entry := range p.Packages {\n\t\t// The separator for name and version is consistently '@' in v9+ keys.\n\t\tname, ver, ok := parsePnpmPackageKey(key, \"@\")\n\t\tif !ok {\n\t\t\tlog.WithFields(\"key\", key).Trace(\"unable to parse pnpm v9 package key\")\n\t\t\tcontinue\n\t\t}\n\t\tpkgKey := name + \"@\" + ver\n\t\tpackages[pkgKey] = pnpmPackage{Name: name, Version: ver, Integrity: entry.Resolution[\"integrity\"], Dev: entry.Dev}\n\t}\n\n\tfor key, snapshotInfo := range p.Snapshots {\n\t\tname, ver, ok := parsePnpmPackageKey(key, \"@\")\n\t\tif !ok {\n\t\t\tlog.WithFields(\"key\", key).Trace(\"unable to parse pnpm v9 package snapshot key\")\n\t\t\tcontinue\n\t\t}\n\t\tpkgKey := name + \"@\" + ver\n\t\tif pkg, ok := packages[pkgKey]; ok {\n\t\t\tpkg.Dependencies = make(map[string]string)\n\t\t\tfor name, versionSpecifier := range snapshotInfo.Dependencies {\n\t\t\t\tvar normalizedVersion = strings.SplitN(versionSpecifier, \"(\", 2)[0]\n\t\t\t\tpkg.Dependencies[name] = normalizedVersion\n\t\t\t}\n\t\t\tpackages[pkgKey] = pkg\n\t\t} else {\n\t\t\tlog.WithFields(\"package\", pkgKey).Trace(\"package not found in packages map\")\n\t\t}\n\t}\n\n\treturn toSortedSlice(packages), nil\n}\n\n// newPnpmLockfileParser is a factory function that returns the correct parser for the given lockfile version.\nfunc newPnpmLockfileParser(version float64) pnpmLockfileParser {\n\tif version >= 9.0 {\n\t\treturn &pnpmV9LockYaml{}\n\t}\n\treturn &pnpmV6LockYaml{}\n}\n\n// parsePnpmLock is the main parser function for pnpm-lock.yaml files.\nfunc (a genericPnpmLockAdapter) parsePnpmLock(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // multi-pass parse requires []byte\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to load pnpm-lock.yaml file: %w\", err)\n\t}\n\n\tvar lockfile struct {\n\t\tVersion string `yaml:\"lockfileVersion\"`\n\t}\n\tif err := yaml.Unmarshal(data, &lockfile); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse pnpm-lock.yaml version: %w\", err)\n\t}\n\n\tversion, err := strconv.ParseFloat(lockfile.Version, 64)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"invalid lockfile version %q: %w\", lockfile.Version, err)\n\t}\n\n\tparser := newPnpmLockfileParser(version)\n\tpnpmPkgs, err := parser.Parse(version, data)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse pnpm-lock.yaml file: %w\", err)\n\t}\n\n\tpackages := make([]pkg.Package, 0, len(pnpmPkgs))\n\tfor _, p := range pnpmPkgs {\n\t\tif p.Dev && !a.cfg.IncludeDevDependencies {\n\t\t\tcontinue\n\t\t}\n\t\tpackages = append(packages, newPnpmPackage(ctx, a.cfg, resolver, reader.Location, p.Name, p.Version, p.Integrity, p.Dependencies))\n\t}\n\n\treturn packages, dependency.Resolve(pnpmLockDependencySpecifier, packages), unknown.IfEmptyf(packages, \"unable to determine packages\")\n}\n\n// parseVersionField extracts the version string from a dependency entry.\nfunc parseVersionField(name string, info interface{}) (string, error) {\n\tswitch v := info.(type) {\n\tcase string:\n\t\treturn v, nil\n\tcase map[string]interface{}:\n\t\tif ver, ok := v[\"version\"].(string); ok {\n\t\t\t// e.g., \"1.2.3(react@17.0.0)\" -> \"1.2.3\"\n\t\t\treturn strings.SplitN(ver, \"(\", 2)[0], nil\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"version field is not a string for %q\", name)\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unsupported dependency type %T for %q\", info, name)\n\t}\n}\n\n// parsePnpmPackageKey extracts the package name and version from a lockfile package key.\n// Handles formats like:\n// - /@babel/runtime/7.16.7\n// - /@types/node@14.18.12\n// - /is-glob@4.0.3\n// - /@babel/helper-plugin-utils@7.24.7(@babel/core@7.24.7)\nfunc parsePnpmPackageKey(key, separator string) (name, version string, ok bool) {\n\t// Strip peer dependency information, e.g., (...)\n\tkey = strings.SplitN(key, \"(\", 2)[0]\n\n\t// Strip leading slash\n\tkey = strings.TrimPrefix(key, \"/\")\n\n\tparts := strings.Split(key, separator)\n\tif len(parts) < 2 {\n\t\treturn \"\", \"\", false\n\t}\n\n\tversion = parts[len(parts)-1]\n\tname = strings.Join(parts[:len(parts)-1], separator)\n\n\treturn name, version, true\n}\n\n// toSortedSlice converts the map of packages to a sorted slice for deterministic output.\nfunc toSortedSlice(packages map[string]pnpmPackage) []pnpmPackage {\n\tpkgs := make([]pnpmPackage, 0, len(packages))\n\tfor _, p := range packages {\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\tsort.Slice(pkgs, func(i, j int) bool {\n\t\tif pkgs[i].Name == pkgs[j].Name {\n\t\t\treturn pkgs[i].Version < pkgs[j].Version\n\t\t}\n\t\treturn pkgs[i].Name < pkgs[j].Name\n\t})\n\n\treturn pkgs\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_pnpm_lock_test.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePnpmLock(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/pnpm/pnpm-lock.yaml\"\n\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"nanoid\",\n\t\t\tVersion:   \"3.3.4\",\n\t\t\tPURL:      \"pkg:npm/nanoid@3.3.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t\t{\n\t\t\tName:      \"picocolors\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:npm/picocolors@1.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t\t{\n\t\t\tName:      \"source-map-js\",\n\t\t\tVersion:   \"1.0.2\",\n\t\t\tPURL:      \"pkg:npm/source-map-js@1.0.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t\t{\n\t\t\tName:      \"@bcoe/v8-coverage\",\n\t\t\tVersion:   \"0.2.3\",\n\t\t\tPURL:      \"pkg:npm/%40bcoe/v8-coverage@0.2.3\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution:   pkg.PnpmLockResolution{Integrity: \"sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==\"},\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t}\n\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{IncludeDevDependencies: true})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePnpmLock_ExcludeDevDependencies(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/pnpm/pnpm-lock.yaml\"\n\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"nanoid\",\n\t\t\tVersion:   \"3.3.4\",\n\t\t\tPURL:      \"pkg:npm/nanoid@3.3.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t\t{\n\t\t\tName:      \"picocolors\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:npm/picocolors@1.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t\t{\n\t\t\tName:      \"source-map-js\",\n\t\t\tVersion:   \"1.0.2\",\n\t\t\tPURL:      \"pkg:npm/source-map-js@1.0.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{}},\n\t\t},\n\t}\n\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{IncludeDevDependencies: false})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePnpmV6Lock(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/pnpm-v6/pnpm-lock.yaml\"\n\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@testing-library/jest-dom\",\n\t\t\tVersion:   \"5.16.5\",\n\t\t\tPURL:      \"pkg:npm/%40testing-library/jest-dom@5.16.5\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@adobe/css-tools\":                 \"4.2.0\",\n\t\t\t\t\t\"@babel/runtime\":                   \"7.21.0\",\n\t\t\t\t\t\"@types/testing-library__jest-dom\": \"5.14.5\",\n\t\t\t\t\t\"aria-query\":                       \"5.1.3\",\n\t\t\t\t\t\"chalk\":                            \"3.0.0\",\n\t\t\t\t\t\"css.escape\":                       \"1.5.1\",\n\t\t\t\t\t\"dom-accessibility-api\":            \"0.5.16\",\n\t\t\t\t\t\"lodash\":                           \"4.17.21\",\n\t\t\t\t\t\"redent\":                           \"3.0.0\",\n\t\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tName:      \"@testing-library/react\",\n\t\t\tVersion:   \"13.4.0\",\n\t\t\tPURL:      \"pkg:npm/%40testing-library/react@13.4.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/runtime\":       \"7.21.0\",\n\t\t\t\t\t\"@testing-library/dom\": \"8.20.0\",\n\t\t\t\t\t\"@types/react-dom\":     \"18.2.1\",\n\t\t\t\t\t\"react\":                \"18.2.0\",\n\t\t\t\t\t\"react-dom\":            \"18.2.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@testing-library/user-event\",\n\t\t\tVersion:   \"13.5.0\",\n\t\t\tPURL:      \"pkg:npm/%40testing-library/user-event@13.5.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/runtime\":       \"7.21.0\",\n\t\t\t\t\t\"@testing-library/dom\": \"9.2.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"react\",\n\t\t\tVersion:   \"18.2.0\",\n\t\t\tPURL:      \"pkg:npm/react@18.2.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"loose-envify\": \"1.4.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"react-dom\",\n\t\t\tVersion:   \"18.2.0\",\n\t\t\tPURL:      \"pkg:npm/react-dom@18.2.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"loose-envify\": \"1.4.0\",\n\t\t\t\t\t\"react\":        \"18.2.0\",\n\t\t\t\t\t\"scheduler\":    \"0.23.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"web-vitals\",\n\t\t\tVersion:   \"2.1.4\",\n\t\t\tPURL:      \"pkg:npm/web-vitals@2.1.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution:   pkg.PnpmLockResolution{Integrity: \"sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==\"},\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@babel/core\",\n\t\t\tVersion:   \"7.21.4\",\n\t\t\tPURL:      \"pkg:npm/%40babel/core@7.21.4\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@ampproject/remapping\":             \"2.2.1\",\n\t\t\t\t\t\"@babel/code-frame\":                 \"7.21.4\",\n\t\t\t\t\t\"@babel/generator\":                  \"7.21.4\",\n\t\t\t\t\t\"@babel/helper-compilation-targets\": \"7.21.4\",\n\t\t\t\t\t\"@babel/helper-module-transforms\":   \"7.21.2\",\n\t\t\t\t\t\"@babel/helpers\":                    \"7.21.0\",\n\t\t\t\t\t\"@babel/parser\":                     \"7.21.4\",\n\t\t\t\t\t\"@babel/template\":                   \"7.20.7\",\n\t\t\t\t\t\"@babel/traverse\":                   \"7.21.4\",\n\t\t\t\t\t\"@babel/types\":                      \"7.21.4\",\n\t\t\t\t\t\"convert-source-map\":                \"1.9.0\",\n\t\t\t\t\t\"debug\":                             \"4.3.4\",\n\t\t\t\t\t\"gensync\":                           \"1.0.0-beta.2\",\n\t\t\t\t\t\"json5\":                             \"2.2.3\",\n\t\t\t\t\t\"semver\":                            \"6.3.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/eslint\",\n\t\t\tVersion:   \"8.37.0\",\n\t\t\tPURL:      \"pkg:npm/%40types/eslint@8.37.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@types/estree\":      \"1.0.1\",\n\t\t\t\t\t\"@types/json-schema\": \"7.0.11\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"read-cache\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:npm/read-cache@1.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"pify\": \"2.3.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"schema-utils\",\n\t\t\tVersion:   \"3.1.2\",\n\t\t\tPURL:      \"pkg:npm/schema-utils@3.1.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@types/json-schema\": \"7.0.11\",\n\t\t\t\t\t\"ajv\":                \"6.12.6\",\n\t\t\t\t\t\"ajv-keywords\":       \"3.5.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\texpectedRelationships = []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[1],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[4],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[1],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePnpmLockV9(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/pnpm-v9/pnpm-lock.yaml\"\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@babel/core\",\n\t\t\tVersion:   \"7.24.7\",\n\t\t\tPURL:      \"pkg:npm/%40babel/core@7.24.7\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-4RjkiFFI42+268iBv2nC+iMLTJGQW3u9P7YvA3x/6MDrJ9IYZ8I/xx5a2GIhY5gBTOcI4iC5S5in2fGjE+P4Yw==\"}},\n\t\t},\n\t\t{\n\t\t\tName:      \"@babel/helper-plugin-utils\",\n\t\t\tVersion:   \"7.24.7\",\n\t\t\tPURL:      \"pkg:npm/%40babel/helper-plugin-utils@7.24.7\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-8A2+zKm53/3w4rwbX11FMW/yFS6c5Vam02P/dw01aK6KbwkKqBaIt3eEATiKtn9I2uS1itk8/aZ2yZ/kURee4Q==\"}},\n\t\t},\n\t\t{\n\t\t\tName:      \"is-positive\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:npm/is-positive@3.1.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-9ffLCf_f5sopimAhg2g91a7b9Rw5A1aA9eI6S391S3VEzYw99I3iKjcZGxLp25s0cRxNBV5aL2mhn7421SSlA==\"}},\n\t\t},\n\t\t{\n\t\t\tName:      \"rollup\",\n\t\t\tVersion:   \"4.18.0\",\n\t\t\tPURL:      \"pkg:npm/rollup@4.18.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata:  pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-QpQY2Q5i0y0Q3RoAvoChE/R5iN2k05N//bNvQbC2XvRjHFT1qWJ2r3n1bNqE+gGRJaeuQf0BxE42D7CyuLh3ZQ==\"}},\n\t\t},\n\t}\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{})\n\t// TODO: no relationships are under test\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, expected, expectedRelationships)\n}\n\nfunc TestParsePnpmLockV9WithDependencies(t *testing.T) {\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{})\n\tfixture := \"testdata/pnpm-v9-snapshots/pnpm-lock.yaml\"\n\tlocationSet := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"cross-spawn\",\n\t\t\tVersion:   \"7.0.6\",\n\t\t\tPURL:      \"pkg:npm/cross-spawn@7.0.6\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\tResolution: pkg.PnpmLockResolution{Integrity: \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"path-key\":        \"3.1.1\",\n\t\t\t\t\t\"shebang-command\": \"2.0.0\",\n\t\t\t\t\t\"which\":           \"2.0.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"isexe\",\n\t\t\tVersion:   \"2.0.0\",\n\t\t\tPURL:      \"pkg:npm/isexe@2.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\"},\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"path-key\",\n\t\t\tVersion:   \"3.1.1\",\n\t\t\tPURL:      \"pkg:npm/path-key@3.1.1\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\"},\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"shebang-command\",\n\t\t\tVersion:   \"2.0.0\",\n\t\t\tPURL:      \"pkg:npm/shebang-command@2.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"shebang-regex\": \"3.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"shebang-regex\",\n\t\t\tVersion:   \"3.0.0\",\n\t\t\tPURL:      \"pkg:npm/shebang-regex@3.0.0\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\"},\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"which\",\n\t\t\tVersion:   \"2.0.2\",\n\t\t\tPURL:      \"pkg:npm/which@2.0.2\",\n\t\t\tLocations: locationSet,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.PnpmLockEntry{Resolution: pkg.PnpmLockResolution{Integrity: \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\"},\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"isexe\": \"2.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[1],\n\t\t\tTo:   expectedPkgs[5],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[2],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[3],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[5],\n\t\t\tTo:   expectedPkgs[0],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestSearchPnpmForLicenses(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pnpm-remote/pnpm-lock.yaml\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupNpmRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\t// https://registry.npmjs.org/nanoid/3.3.4\n\t\t\t\t\tpath:    \"/nanoid/3.3.4\",\n\t\t\t\t\thandler: generateMockNpmRegistryHandler(\"testdata/pnpm-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"nanoid\",\n\t\t\t\t\tVersion:   \"3.3.4\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:npm/nanoid@3.3.4\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\tMetadata: pkg.PnpmLockEntry{\n\t\t\t\t\t\tResolution:   pkg.PnpmLockResolution{Integrity: \"sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==\"},\n\t\t\t\t\t\tDependencies: map[string]string{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.NPMBaseURL = url\n\t\t\tadapter := newGenericPnpmLockAdapter(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, adapter.parsePnpmLock, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\nfunc Test_corruptPnpmLock(t *testing.T) {\n\tadapter := newGenericPnpmLockAdapter(CatalogerConfig{})\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/pnpm-lock.yaml\").\n\t\tWithError().\n\t\tTestParser(t, adapter.parsePnpmLock)\n}\n\nfunc generateMockNpmRegistryHandler(responseFixture string) func(w http.ResponseWriter, r *http.Request) {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tw.WriteHeader(http.StatusOK)\n\t\t// Copy the file's content to the response writer\n\t\tfile, err := os.Open(responseFixture)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdefer file.Close()\n\n\t\t_, err = io.Copy(w, file)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// setup sets up a test HTTP server for mocking requests to a particular registry.\n// The returned url is injected into the Config so the client uses the test server.\n// Tests should register handlers on mux to simulate the expected request/response structure\nfunc setupNpmRegistry() (mux *http.ServeMux, serverURL string, teardown func()) {\n\t// mux is the HTTP request multiplexer used with the test server.\n\tmux = http.NewServeMux()\n\n\t// We want to ensure that tests catch mistakes where the endpoint URL is\n\t// specified as absolute rather than relative. It only makes a difference\n\t// when there's a non-empty base URL path. So, use that. See issue #752.\n\tapiHandler := http.NewServeMux()\n\tapiHandler.Handle(\"/\", mux)\n\t// server is a test HTTP server used to provide mock API responses.\n\tserver := httptest.NewServer(apiHandler)\n\n\treturn mux, server.URL, server.Close\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_yarn_lock.go",
    "content": "package javascript\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"maps\"\n\t\"regexp\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/goccy/go-yaml\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar (\n\t// packageNameExp matches the name of the dependency in yarn.lock\n\t// including scope/namespace prefix if found.\n\t// For example: \"aws-sdk@2.706.0\" returns \"aws-sdk\"\n\t//              \"@babel/code-frame@^7.0.0\" returns \"@babel/code-frame\"\n\tpackageNameExp = regexp.MustCompile(`^\"?((?:@\\w[\\w-_.]*\\/)?\\w[\\w-_.]*)@`)\n\n\t// packageURLExp matches the name and version of the dependency in yarn.lock\n\t// from the resolved URL, including scope/namespace prefix if any.\n\t// For example:\n\t//\t\t`resolved \"https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9\"`\n\t//\t\t\twould return \"async\" and \"3.2.3\"\n\t//\n\t//\t\t`resolved \"https://registry.yarnpkg.com/@4lolo/resize-observer-polyfill/-/resize-observer-polyfill-1.5.2.tgz#58868fc7224506236b5550d0c68357f0a874b84b\"`\n\t//\t\t\twould return \"@4lolo/resize-observer-polyfill\" and \"1.5.2\"\n\tpackageURLExp = regexp.MustCompile(`^resolved\\s+\"https://registry\\.(?:yarnpkg\\.com|npmjs\\.org)/(.+?)/-/(?:.+?)-(\\d+\\..+?)\\.tgz`)\n\n\t// resolvedExp matches the resolved of the dependency in yarn.lock\n\t// For example:\n\t// \t\tresolved \"https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d\"\n\t// \t\t\twould return \"https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d\"\n\tresolvedExp = regexp.MustCompile(`^resolved\\s+\"(.+?)\"`)\n)\n\ntype yarnPackage struct {\n\tName         string\n\tVersion      string\n\tResolved     string\n\tIntegrity    string\n\tDependencies map[string]string\n}\n\ntype yarnV2PackageEntry struct {\n\tVersion      string            `yaml:\"version\"`\n\tResolution   string            `yaml:\"resolution\"`\n\tChecksum     string            `yaml:\"checksum\"`\n\tDependencies map[string]string `yaml:\"dependencies\"`\n}\n\ntype genericYarnLockAdapter struct {\n\tcfg CatalogerConfig\n}\n\nfunc newGenericYarnLockAdapter(cfg CatalogerConfig) genericYarnLockAdapter {\n\treturn genericYarnLockAdapter{\n\t\tcfg: cfg,\n\t}\n}\n\n// readPackageJSONDeps reads the package.json adjacent to the given lockfile location.\n// NOTE: in yarn workspaces, only the root package.json is consulted. Packages declared\n// as devDependencies only in a workspace package.json (not the root) will not be detected\n// as dev-only. This is a safe degradation — those packages will be included in the SBOM\n// rather than incorrectly filtered out.\nfunc readPackageJSONDeps(resolver file.Resolver, lockfileLocation file.Location) (prod, dev map[string]string) {\n\tprod = make(map[string]string)\n\tdev = make(map[string]string)\n\n\tif resolver == nil {\n\t\treturn prod, dev\n\t}\n\n\tpkgJSONLocation := resolver.RelativeFileByPath(lockfileLocation, \"package.json\")\n\tif pkgJSONLocation == nil {\n\t\tlog.WithFields(\"lockfile\", lockfileLocation.RealPath).Debug(\"could not find package.json for dev dependency detection\")\n\t\treturn prod, dev\n\t}\n\n\treader, err := resolver.FileContentsByLocation(*pkgJSONLocation)\n\tif err != nil {\n\t\tlog.WithFields(\"location\", pkgJSONLocation.RealPath, \"error\", err).Debug(\"could not read package.json for dev dependency detection\")\n\t\treturn prod, dev\n\t}\n\tdefer internal.CloseAndLogError(reader, pkgJSONLocation.RealPath)\n\n\tvar pkgJSON packageJSON\n\tif err := json.NewDecoder(reader).Decode(&pkgJSON); err != nil {\n\t\tlog.WithFields(\"location\", pkgJSONLocation.RealPath, \"error\", err).Debug(\"could not parse package.json for dev dependency detection\")\n\t\treturn prod, dev\n\t}\n\n\tif pkgJSON.Dependencies != nil {\n\t\tprod = pkgJSON.Dependencies\n\t}\n\tif pkgJSON.DevDependencies != nil {\n\t\tdev = pkgJSON.DevDependencies\n\t}\n\n\treturn prod, dev\n}\n\n// findReachable returns all package names reachable from the given roots via BFS\n// through the dependency graph.\nfunc findReachable(roots map[string]string, pkgByName map[string]yarnPackage) map[string]bool {\n\tvisited := make(map[string]bool)\n\tqueue := make([]string, 0, len(roots))\n\n\tfor name := range roots {\n\t\tqueue = append(queue, name)\n\t}\n\n\tfor len(queue) > 0 {\n\t\tname := queue[0]\n\t\tqueue = queue[1:]\n\n\t\tif visited[name] {\n\t\t\tcontinue\n\t\t}\n\t\tvisited[name] = true\n\n\t\tif pkg, exists := pkgByName[name]; exists {\n\t\t\tfor depName := range pkg.Dependencies {\n\t\t\t\tif !visited[depName] {\n\t\t\t\t\tqueue = append(queue, depName)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn visited\n}\n\nfunc findDevOnlyPkgs(yarnPkgs []yarnPackage, prodDeps, devDeps map[string]string) map[string]bool {\n\tpkgByName := make(map[string]yarnPackage)\n\tfor _, p := range yarnPkgs {\n\t\tpkgByName[p.Name] = p\n\t}\n\n\tprodTransitive := findReachable(prodDeps, pkgByName)\n\tdevTransitive := findReachable(devDeps, pkgByName)\n\n\tdevOnly := make(map[string]bool)\n\tfor name := range devTransitive {\n\t\tif !prodTransitive[name] {\n\t\t\tdevOnly[name] = true\n\t\t}\n\t}\n\n\treturn devOnly\n}\n\nfunc parseYarnV1LockFile(reader io.ReadCloser) ([]yarnPackage, error) {\n\t// TODO: refactor to use bufio.Scanner for streaming line-by-line parsing instead of reading the entire file\n\tcontent, err := io.ReadAll(reader) //nolint:gocritic // stateful multi-line parser; candidate for streaming refactor\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read yarn.lock file: %w\", err)\n\t}\n\n\tre := regexp.MustCompile(`\\r?\\n`)\n\tlines := re.Split(string(content), -1)\n\tvar pkgs []yarnPackage\n\tvar pkg = yarnPackage{}\n\tvar seenPkgs = strset.New()\n\tdependencies := make(map[string]string)\n\n\tfor _, line := range lines {\n\t\tif strings.HasPrefix(line, \"#\") {\n\t\t\tcontinue\n\t\t}\n\t\t// Blank lines indicate the end of a package entry, so we add the package\n\t\t// to the list and reset the dependencies\n\t\tif len(line) == 0 && len(pkg.Name) > 0 && !seenPkgs.Has(pkg.Name+\"@\"+pkg.Version) {\n\t\t\tpkg.Dependencies = dependencies\n\t\t\tpkgs = append(pkgs, pkg)\n\t\t\tseenPkgs.Add(pkg.Name + \"@\" + pkg.Version)\n\t\t\tdependencies = make(map[string]string)\n\t\t\tpkg = yarnPackage{}\n\t\t\tcontinue\n\t\t}\n\t\t// The first line of a package entry is the name of the package with no\n\t\t// leading spaces\n\t\tif !strings.HasPrefix(line, \" \") {\n\t\t\tname := line\n\t\t\tpkg.Name = findPackageName(name)\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"  \") && !strings.HasPrefix(line, \"    \") {\n\t\t\tline = strings.Trim(line, \" \")\n\t\t\tarray := strings.Split(line, \" \")\n\t\t\tswitch array[0] {\n\t\t\tcase \"version\":\n\t\t\t\tpkg.Version = strings.Trim(array[1], \"\\\"\")\n\t\t\tcase \"resolved\":\n\t\t\t\tname, version, resolved := findResolvedPackageAndVersion(line)\n\t\t\t\tif name != \"\" && version != \"\" && resolved != \"\" {\n\t\t\t\t\tpkg.Name = name\n\t\t\t\t\tpkg.Version = version\n\t\t\t\t\tpkg.Resolved = resolved\n\t\t\t\t} else {\n\t\t\t\t\tpkg.Resolved = strings.Trim(array[1], \"\\\"\")\n\t\t\t\t}\n\t\t\tcase \"integrity\":\n\t\t\t\tpkg.Integrity = strings.Trim(array[1], \"\\\"\")\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"    \") {\n\t\t\tline = strings.Trim(line, \" \")\n\t\t\tarray := strings.Split(line, \" \")\n\t\t\tdependencyName := strings.Trim(array[0], \"\\\"\")\n\t\t\tdependencyVersion := strings.Trim(array[1], \"\\\"\")\n\t\t\tdependencies[dependencyName] = dependencyVersion\n\t\t}\n\t}\n\t// If the last package in the list is not the same as the current package, add the current package\n\t// to the list. In case there was no trailing new line before we hit EOF.\n\tif len(pkg.Name) > 0 && !seenPkgs.Has(pkg.Name+\"@\"+pkg.Version) {\n\t\tpkg.Dependencies = dependencies\n\t\tpkgs = append(pkgs, pkg)\n\t\tseenPkgs.Add(pkg.Name + \"@\" + pkg.Version)\n\t}\n\n\treturn pkgs, nil\n}\n\nfunc parseYarnLockYaml(reader io.ReadCloser) ([]yarnPackage, error) {\n\tvar lockfile = map[string]yarnV2PackageEntry{}\n\tif err := yaml.NewDecoder(reader, yaml.AllowDuplicateMapKey()).Decode(&lockfile); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal yarn v2 lockfile: %w\", err)\n\t}\n\n\tpackages := make(map[string]yarnPackage)\n\tfor key, value := range lockfile {\n\t\tpackageName := findPackageName(key)\n\t\tif packageName == \"\" {\n\t\t\tlog.WithFields(\"key\", key).Error(\"unable to parse yarn v2 package key\")\n\t\t\tcontinue\n\t\t}\n\n\t\tpackages[packageName] = yarnPackage{Name: packageName, Version: value.Version, Resolved: value.Resolution, Integrity: value.Checksum, Dependencies: value.Dependencies}\n\t}\n\n\treturn slices.Collect(maps.Values(packages)), nil\n}\n\nfunc (a genericYarnLockAdapter) parseYarnLock(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\t// in the case we find yarn.lock files in the node_modules directories, skip those\n\t// as the whole purpose of the lock file is for the specific dependencies of the project\n\tif pathContainsNodeModulesDirectory(reader.Path()) {\n\t\treturn nil, nil, nil\n\t}\n\n\t// TODO: refactor to detect version from the first line via bufio.Scanner, then dispatch to a streaming parser\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // two-pass parse: version detection then format-specific parsing\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to load yarn.lock file: %w\", err)\n\t}\n\t// Reset the reader to the beginning of the file\n\treader.ReadCloser = io.NopCloser(bytes.NewBuffer(data))\n\n\tvar yarnPkgs []yarnPackage\n\t// v1 Yarn lockfiles are not YAML, so we need to parse them as a special case. They typically\n\t// include a comment line that indicates the version. I.e. \"# yarn lockfile v1\"\n\tif strings.Contains(string(data), \"# yarn lockfile v1\") {\n\t\tyarnPkgs, err = parseYarnV1LockFile(reader)\n\t} else {\n\t\tyarnPkgs, err = parseYarnLockYaml(reader)\n\t}\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse yarn.lock file: %w\", err)\n\t}\n\n\t// get dependencies from sibling package.json for dev dependency detection\n\tprodDeps, devDeps := readPackageJSONDeps(resolver, reader.Location)\n\n\tdevOnlyPkgs := findDevOnlyPkgs(yarnPkgs, prodDeps, devDeps)\n\n\tpackages := make([]pkg.Package, 0, len(yarnPkgs))\n\tfor _, p := range yarnPkgs {\n\t\tif devOnlyPkgs[p.Name] && !a.cfg.IncludeDevDependencies {\n\t\t\tcontinue\n\t\t}\n\t\tpackages = append(packages, newYarnLockPackage(ctx, a.cfg, resolver, reader.Location, p.Name, p.Version, p.Resolved, p.Integrity, p.Dependencies))\n\t}\n\n\tpkg.Sort(packages)\n\n\treturn packages, dependency.Resolve(yarnLockDependencySpecifier, packages), unknown.IfEmptyf(packages, \"unable to determine packages\")\n}\n\nfunc findPackageName(line string) string {\n\tif matches := packageNameExp.FindStringSubmatch(line); len(matches) >= 2 {\n\t\treturn matches[1]\n\t}\n\n\treturn \"\"\n}\n\nfunc findResolvedPackageAndVersion(line string) (string, string, string) {\n\tvar resolved string\n\tif matches := resolvedExp.FindStringSubmatch(line); len(matches) >= 2 {\n\t\tresolved = matches[1]\n\t}\n\tif matches := packageURLExp.FindStringSubmatch(line); len(matches) >= 2 {\n\t\treturn matches[1], matches[2], resolved\n\t}\n\n\treturn \"\", \"\", \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/parse_yarn_lock_test.go",
    "content": "package javascript\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseYarnBerry(t *testing.T) {\n\tfixture := \"testdata/yarn-berry/yarn.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@babel/code-frame\",\n\t\t\tVersion:   \"7.10.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40babel/code-frame@7.10.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"@babel/code-frame@npm:7.10.4\",\n\t\t\t\tIntegrity: \"feb4543c8a509fe30f0f6e8d7aa84f82b41148b963b826cd330e34986f649a85cb63b2f13dd4effdf434ac555d16f14940b8ea5f4433297c2f5ff85486ded019\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/highlight\": \"^7.10.4\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/minimatch\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/minimatch@3.0.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"@types/minimatch@npm:3.0.3\",\n\t\t\t\tIntegrity: \"b80259d55b96ef24cb3bb961b6dc18b943f2bb8838b4d8e7bead204f3173e551a416ffa49f9aaf1dc431277fffe36214118628eacf4aea20119df8835229901b\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/qs\",\n\t\t\tVersion:   \"6.9.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/qs@6.9.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"@types/qs@npm:6.9.4\",\n\t\t\t\tIntegrity: \"77e509ed213f7694ae35f84a58b88da8744aad019e93556af6aeab4289287abbe71836c051d00649dbac0289ea199e408442590cfb1785009de11c3c8d0cbbea\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ajv\",\n\t\t\tVersion:   \"6.12.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/ajv@6.12.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"ajv@npm:6.12.3\",\n\t\t\t\tIntegrity: \"ca559d34710e6969d33bc1316282e1ece4d4d99ff5fdca4bfe31947740f8f90e7824238cdc2954e499cf75b2432e3e6c56b32814ebe04fccf8abcc3fbf36b348\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"fast-deep-equal\":            \"^3.1.1\",\n\t\t\t\t\t\"fast-json-stable-stringify\": \"^2.0.0\",\n\t\t\t\t\t\"json-schema-traverse\":       \"^0.4.1\",\n\t\t\t\t\t\"uri-js\":                     \"^4.2.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"asn1.js\",\n\t\t\tVersion:   \"4.10.1\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/asn1.js@4.10.1\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"asn1.js@npm:4.10.1\",\n\t\t\t\tIntegrity: \"9289a1a55401238755e3142511d7b8f6fc32f08c86ff68bd7100da8b6c186179dd6b14234fba2f7f6099afcd6758a816708485efe44bc5b2a6ec87d9ceeddbb5\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"bn.js\":               \"^4.0.0\",\n\t\t\t\t\t\"inherits\":            \"^2.0.1\",\n\t\t\t\t\t\"minimalistic-assert\": \"^1.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"atob\",\n\t\t\tVersion:   \"2.1.2\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/atob@2.1.2\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"atob@npm:2.1.2\",\n\t\t\t\tIntegrity: \"dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"aws-sdk\",\n\t\t\tVersion:   \"2.706.0\",\n\t\t\tPURL:      \"pkg:npm/aws-sdk@2.706.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"aws-sdk@npm:2.706.0\",\n\t\t\t\tIntegrity: \"bf8ca2fc4f758bdebd04051ec15729affad3eb0e18eed4ae41db5b7d6ff2aed2cf3a12ae082c11b955df0125378c57b8406e1f91006e48f0c162fdbe4ee4e330\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"buffer\":      \"4.9.2\",\n\t\t\t\t\t\"events\":      \"1.1.1\",\n\t\t\t\t\t\"ieee754\":     \"1.1.13\",\n\t\t\t\t\t\"jmespath\":    \"0.15.0\",\n\t\t\t\t\t\"querystring\": \"0.2.0\",\n\t\t\t\t\t\"sax\":         \"1.2.1\",\n\t\t\t\t\t\"url\":         \"0.10.3\",\n\t\t\t\t\t\"uuid\":        \"3.3.2\",\n\t\t\t\t\t\"xml2js\":      \"0.4.19\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"c0n-fab_u.laTION\",\n\t\t\tVersion:   \"7.7.7\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/c0n-fab_u.laTION@7.7.7\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved: \"newtest@workspace:.\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/code-frame\": \"7.10.4\",\n\t\t\t\t\t\"@types/minimatch\":  \"3.0.3\",\n\t\t\t\t\t\"@types/qs\":         \"6.9.4\",\n\t\t\t\t\t\"ajv\":               \"6.12.3\",\n\t\t\t\t\t\"asn1.js\":           \"4.10.1\",\n\t\t\t\t\t\"atob\":              \"2.1.2\",\n\t\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tName:      \"jhipster-core\",\n\t\t\tVersion:   \"7.3.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/jhipster-core@7.3.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"jhipster-core@npm:7.3.4\",\n\t\t\t\tIntegrity: \"6a97741d574a42a138f98596c668370b41ec8870335bcd758b6b890e279ba30d4d2be447f8cecbf416286f2c53636b406a63a773c7b00709c95af0a9a3f9b397\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"chevrotain\": \"7.0.1\",\n\t\t\t\t\t\"fs-extra\":   \"8.1.0\",\n\t\t\t\t\t\"lodash\":     \"4.17.15\",\n\t\t\t\t\t\"winston\":    \"3.2.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[0],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[1],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[2],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[3],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[5],\n\t\t\tTo:   expectedPkgs[7],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tadapter := newGenericYarnLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parseYarnLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParseYarnLock(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/yarn/yarn.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@babel/code-frame\",\n\t\t\tVersion:   \"7.10.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40babel/code-frame@7.10.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a\",\n\t\t\t\tIntegrity: \"sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/highlight\": \"^7.10.4\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/minimatch\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/minimatch@3.0.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d\",\n\t\t\t\tIntegrity:    \"sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/qs\",\n\t\t\tVersion:   \"6.9.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/qs@6.9.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a\",\n\t\t\t\tIntegrity:    \"sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ajv\",\n\t\t\tVersion:   \"6.12.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/ajv@6.12.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706\",\n\t\t\t\tIntegrity: \"sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"fast-deep-equal\":            \"^3.1.1\",\n\t\t\t\t\t\"fast-json-stable-stringify\": \"^2.0.0\",\n\t\t\t\t\t\"json-schema-traverse\":       \"^0.4.1\",\n\t\t\t\t\t\"uri-js\":                     \"^4.2.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"asn1.js\",\n\t\t\tVersion:   \"4.10.1\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/asn1.js@4.10.1\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0\",\n\t\t\t\tIntegrity: \"sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"bn.js\":               \"^4.0.0\",\n\t\t\t\t\t\"inherits\":            \"^2.0.1\",\n\t\t\t\t\t\"minimalistic-assert\": \"^1.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"atob\",\n\t\t\tVersion:   \"2.1.2\",\n\t\t\tLocations: locations,\n\n\t\t\tPURL:     \"pkg:npm/atob@2.1.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9\",\n\t\t\t\tIntegrity:    \"sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"aws-sdk\",\n\t\t\tVersion:   \"2.706.0\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/aws-sdk@2.706.0\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.706.0.tgz#09f65e9a91ecac5a635daf934082abae30eca953\",\n\t\t\t\tIntegrity: \"sha512-7GT+yrB5Wb/zOReRdv/Pzkb2Qt+hz6B/8FGMVaoysX3NryHvQUdz7EQWi5yhg9CxOjKxdw5lFwYSs69YlSp1KA==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"buffer\":      \"4.9.2\",\n\t\t\t\t\t\"events\":      \"1.1.1\",\n\t\t\t\t\t\"ieee754\":     \"1.1.13\",\n\t\t\t\t\t\"jmespath\":    \"0.15.0\",\n\t\t\t\t\t\"querystring\": \"0.2.0\",\n\t\t\t\t\t\"sax\":         \"1.2.1\",\n\t\t\t\t\t\"url\":         \"0.10.3\",\n\t\t\t\t\t\"uuid\":        \"3.3.2\",\n\t\t\t\t\t\"xml2js\":      \"0.4.19\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"jhipster-core\",\n\t\t\tVersion:   \"7.3.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/jhipster-core@7.3.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/jhipster-core/-/jhipster-core-7.3.4.tgz#c34b8c97c7f4e8b7518dae015517e2112c73cc80\",\n\t\t\t\tIntegrity: \"sha512-AUhT69kNkqppaJZVfan/xnKG4Gs9Ggj7YLtTZFVe+xg+THrbMb5Ng7PL07PDlDw4KAEA33GMCwuAf65E8EpC4g==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"chevrotain\": \"7.0.1\",\n\t\t\t\t\t\"fs-extra\":   \"8.1.0\",\n\t\t\t\t\t\"lodash\":     \"4.17.15\",\n\t\t\t\t\t\"winston\":    \"3.2.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"something-i-made-up\",\n\t\t\tVersion:   \"7.7.7\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/something-i-made-up@7.7.7\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/something-i-made-up/-/c0n-fab_u.laTION-7.7.7.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0\",\n\t\t\t\tIntegrity:    \"sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t}\n\n\tadapter := newGenericYarnLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parseYarnLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParseYarnLockWithRelationships(t *testing.T) {\n\tfixture := \"testdata/yarn-v1-deps/yarn.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"@babel/code-frame\",\n\t\t\tVersion:   \"7.10.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40babel/code-frame@7.10.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a\",\n\t\t\t\tIntegrity: \"sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"@babel/highlight\": \"^7.10.4\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/minimatch\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/minimatch@3.0.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d\",\n\t\t\t\tIntegrity:    \"sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@types/qs\",\n\t\t\tVersion:   \"6.9.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%40types/qs@6.9.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a\",\n\t\t\t\tIntegrity:    \"sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"ajv\",\n\t\t\tVersion:   \"6.12.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/ajv@6.12.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706\",\n\t\t\t\tIntegrity: \"sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"fast-deep-equal\":            \"^3.1.1\",\n\t\t\t\t\t\"fast-json-stable-stringify\": \"^2.0.0\",\n\t\t\t\t\t\"json-schema-traverse\":       \"^0.4.1\",\n\t\t\t\t\t\"uri-js\":                     \"^4.2.2\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"asn1.js\",\n\t\t\tVersion:   \"4.10.1\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/asn1.js@4.10.1\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0\",\n\t\t\t\tIntegrity: \"sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"atob\":                \"^2.1.2\",\n\t\t\t\t\t\"bn.js\":               \"^4.0.0\",\n\t\t\t\t\t\"inherits\":            \"^2.0.1\",\n\t\t\t\t\t\"minimalistic-assert\": \"^1.0.0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"atob\",\n\t\t\tVersion:   \"2.1.2\",\n\t\t\tLocations: locations,\n\n\t\t\tPURL:     \"pkg:npm/atob@2.1.2\",\n\t\t\tLanguage: pkg.JavaScript,\n\t\t\tType:     pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9\",\n\t\t\t\tIntegrity:    \"sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"aws-sdk\",\n\t\t\tVersion:   \"2.706.0\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/aws-sdk@2.706.0\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.706.0.tgz#09f65e9a91ecac5a635daf934082abae30eca953\",\n\t\t\t\tIntegrity: \"sha512-7GT+yrB5Wb/zOReRdv/Pzkb2Qt+hz6B/8FGMVaoysX3NryHvQUdz7EQWi5yhg9CxOjKxdw5lFwYSs69YlSp1KA==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"asn1.js\":     \"4.10.1\",\n\t\t\t\t\t\"buffer\":      \"4.9.2\",\n\t\t\t\t\t\"events\":      \"1.1.1\",\n\t\t\t\t\t\"ieee754\":     \"1.1.13\",\n\t\t\t\t\t\"jmespath\":    \"0.15.0\",\n\t\t\t\t\t\"querystring\": \"0.2.0\",\n\t\t\t\t\t\"sax\":         \"1.2.1\",\n\t\t\t\t\t\"url\":         \"0.10.3\",\n\t\t\t\t\t\"uuid\":        \"3.3.2\",\n\t\t\t\t\t\"xml2js\":      \"0.4.19\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"jhipster-core\",\n\t\t\tVersion:   \"7.3.4\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/jhipster-core@7.3.4\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:  \"https://registry.yarnpkg.com/jhipster-core/-/jhipster-core-7.3.4.tgz#c34b8c97c7f4e8b7518dae015517e2112c73cc80\",\n\t\t\t\tIntegrity: \"sha512-AUhT69kNkqppaJZVfan/xnKG4Gs9Ggj7YLtTZFVe+xg+THrbMb5Ng7PL07PDlDw4KAEA33GMCwuAf65E8EpC4g==\",\n\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\"chevrotain\": \"7.0.1\",\n\t\t\t\t\t\"fs-extra\":   \"8.1.0\",\n\t\t\t\t\t\"lodash\":     \"4.17.15\",\n\t\t\t\t\t\"winston\":    \"3.2.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"something-i-made-up\",\n\t\t\tVersion:   \"7.7.7\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/something-i-made-up@7.7.7\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/something-i-made-up/-/c0n-fab_u.laTION-7.7.7.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0\",\n\t\t\t\tIntegrity:    \"sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: expectedPkgs[4],\n\t\t\tTo:   expectedPkgs[6],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: expectedPkgs[5],\n\t\t\tTo:   expectedPkgs[4],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\tadapter := newGenericYarnLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parseYarnLock, expectedPkgs, expectedRelationships)\n}\nfunc TestParseYarnLockWithDuplicates(t *testing.T) {\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/yarn-dups/yarn.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"async\",\n\t\t\tVersion:   \"0.9.2\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/async@0.9.2\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\",\n\t\t\t\tIntegrity:    \"sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"async\",\n\t\t\tVersion:   \"3.2.3\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/async@3.2.3\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9\",\n\t\t\t\tIntegrity:    \"sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"merge-objects\",\n\t\t\tVersion:   \"1.0.5\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/merge-objects@1.0.5\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/merge-objects/-/merge-objects-1.0.5.tgz#ad923ff3910091acc1438f53eb75b8f37d862a86\",\n\t\t\t\tIntegrity:    \"sha1-rZI/85EAkazBQ49T63W4832GKoY=\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"@4lolo/resize-observer-polyfill\",\n\t\t\tVersion:   \"1.5.2\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/%404lolo/resize-observer-polyfill@1.5.2\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://registry.yarnpkg.com/@4lolo/resize-observer-polyfill/-/resize-observer-polyfill-1.5.2.tgz#58868fc7224506236b5550d0c68357f0a874b84b\",\n\t\t\t\tIntegrity:    \"sha512-HY4JYLITsWBOdeqCF/x3q7Aa2PVl/BmfkPv4H/Qzplc4Lrn9cKmWz6jHyAREH9tFuD0xELjJVgX3JaEmdcXu3g==\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"should-type\",\n\t\t\tVersion:   \"1.3.0\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:npm/should-type@1.3.0\",\n\t\t\tLanguage:  pkg.JavaScript,\n\t\t\tType:      pkg.NpmPkg,\n\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\tResolved:     \"https://github.com/shouldjs/type.git#31d26945cb3b4ad21d2308776e4442c461666390\",\n\t\t\t\tIntegrity:    \"\",\n\t\t\t\tDependencies: map[string]string{},\n\t\t\t},\n\t\t},\n\t}\n\n\tadapter := newGenericYarnLockAdapter(CatalogerConfig{})\n\tpkgtest.TestFileParser(t, fixture, adapter.parseYarnLock, expectedPkgs, expectedRelationships)\n}\n\ntype handlerPath struct {\n\tpath    string\n\thandler func(w http.ResponseWriter, r *http.Request)\n}\n\nfunc TestSearchYarnForLicenses(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/yarn-remote/yarn.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupYarnRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\t// https://registry.yarnpkg.com/@babel/code-frame/7.10.4\n\t\t\t\t\tpath:    \"/@babel/code-frame/7.10.4\",\n\t\t\t\t\thandler: generateMockYarnRegistryHandler(\"testdata/yarn-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"@babel/code-frame\",\n\t\t\t\t\tVersion:   \"7.10.4\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:npm/%40babel/code-frame@7.10.4\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\tResolved:  \"https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a\",\n\t\t\t\t\t\tIntegrity: \"sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==\",\n\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\"@babel/highlight\": \"^7.10.4\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.NPMBaseURL = url\n\t\t\tadapter := newGenericYarnLockAdapter(tc.config)\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromFile(t, fixture).\n\t\t\t\tExpects(tc.expectedPackages, nil).\n\t\t\t\tWithoutTestObserver(). // this is an online test, thus not the default configuration\n\t\t\t\tTestParser(t, adapter.parseYarnLock)\n\t\t})\n\t}\n}\n\nfunc TestParseYarnFindPackageNames(t *testing.T) {\n\ttests := []struct {\n\t\tline     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tline:     `\"@babel/code-frame@npm:7.10.4\":`,\n\t\t\texpected: \"@babel/code-frame\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"@babel/code-frame@^7.0.0\", \"@babel/code-frame@^7.10.4\":`,\n\t\t\texpected: \"@babel/code-frame\",\n\t\t},\n\t\t{\n\t\t\tline:     \"ajv@^6.10.2, ajv@^6.5.5:\",\n\t\t\texpected: \"ajv\",\n\t\t},\n\t\t{\n\t\t\tline:     \"aws-sdk@2.706.0:\",\n\t\t\texpected: \"aws-sdk\",\n\t\t},\n\t\t{\n\t\t\tline:     \"asn1.js@^4.0.0:\",\n\t\t\texpected: \"asn1.js\",\n\t\t},\n\t\t{\n\t\t\tline:     \"c0n-fab_u.laTION@^7.0.0\",\n\t\t\texpected: \"c0n-fab_u.laTION\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"newtest@workspace:.\":`,\n\t\t\texpected: \"newtest\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"color-convert@npm:^1.9.0\":`,\n\t\t\texpected: \"color-convert\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"@npmcorp/code-frame@^7.1.0\", \"@npmcorp/code-frame@^7.10.4\":`,\n\t\t\texpected: \"@npmcorp/code-frame\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"@npmcorp/code-frame@^7.2.3\":`,\n\t\t\texpected: \"@npmcorp/code-frame\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"@s/odd-name@^7.1.2\":`,\n\t\t\texpected: \"@s/odd-name\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"@/code-frame@^7.3.4\":`,\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tline:     `\"code-frame\":`,\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.expected, func(t *testing.T) {\n\t\t\tt.Parallel()\n\t\t\tactual := findPackageName(test.line)\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n}\n\nfunc TestParseYarnLock_DevDependencies(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tfixtureDir string\n\t\tincludeDev bool\n\t\texpected   func(file.LocationSet) ([]pkg.Package, []artifact.Relationship)\n\t}{\n\t\t{\n\t\t\tname:       \"v1 include dev dependencies\",\n\t\t\tfixtureDir: \"testdata/yarn-dev-deps\",\n\t\t\tincludeDev: true,\n\t\t\texpected: func(locations file.LocationSet) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tpkgs := []pkg.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"dev-only-transitive\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/dev-only-transitive@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:     \"https://registry.yarnpkg.com/dev-only-transitive/-/dev-only-transitive-1.0.0.tgz#abc123\",\n\t\t\t\t\t\t\tIntegrity:    \"sha512-devonlytransitive==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"dev-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/dev-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"https://registry.yarnpkg.com/dev-pkg/-/dev-pkg-1.0.0.tgz#def456\",\n\t\t\t\t\t\t\tIntegrity: \"sha512-devpkg==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"dev-only-transitive\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"prod-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/prod-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"https://registry.yarnpkg.com/prod-pkg/-/prod-pkg-1.0.0.tgz#ghi789\",\n\t\t\t\t\t\t\tIntegrity: \"sha512-prodpkg==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"shared-pkg\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"shared-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/shared-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:     \"https://registry.yarnpkg.com/shared-pkg/-/shared-pkg-1.0.0.tgz#jkl012\",\n\t\t\t\t\t\t\tIntegrity:    \"sha512-sharedpkg==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\trels := []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[0], // dev-only-transitive\n\t\t\t\t\t\tTo:   pkgs[1], // dev-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[3], // shared-pkg\n\t\t\t\t\t\tTo:   pkgs[2], // prod-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn pkgs, rels\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"v1 exclude dev dependencies\",\n\t\t\tfixtureDir: \"testdata/yarn-dev-deps\",\n\t\t\tincludeDev: false,\n\t\t\texpected: func(locations file.LocationSet) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tpkgs := []pkg.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"prod-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/prod-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"https://registry.yarnpkg.com/prod-pkg/-/prod-pkg-1.0.0.tgz#ghi789\",\n\t\t\t\t\t\t\tIntegrity: \"sha512-prodpkg==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"shared-pkg\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"shared-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/shared-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:     \"https://registry.yarnpkg.com/shared-pkg/-/shared-pkg-1.0.0.tgz#jkl012\",\n\t\t\t\t\t\t\tIntegrity:    \"sha512-sharedpkg==\",\n\t\t\t\t\t\t\tDependencies: map[string]string{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\trels := []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[1], // shared-pkg\n\t\t\t\t\t\tTo:   pkgs[0], // prod-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn pkgs, rels\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"v2 (berry) include dev dependencies\",\n\t\t\tfixtureDir: \"testdata/yarn-berry-dev-deps\",\n\t\t\tincludeDev: true,\n\t\t\texpected: func(locations file.LocationSet) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tpkgs := []pkg.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"dev-only-transitive\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/dev-only-transitive@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"dev-only-transitive@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"abc123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"dev-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/dev-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"dev-pkg@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"def456\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"dev-only-transitive\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"prod-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/prod-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"prod-pkg@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"ghi789\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"shared-pkg\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"shared-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/shared-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"shared-pkg@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"jkl012\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\trels := []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[0], // dev-only-transitive\n\t\t\t\t\t\tTo:   pkgs[1], // dev-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[3], // shared-pkg\n\t\t\t\t\t\tTo:   pkgs[2], // prod-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn pkgs, rels\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"v2 (berry) exclude dev dependencies\",\n\t\t\tfixtureDir: \"testdata/yarn-berry-dev-deps\",\n\t\t\tincludeDev: false,\n\t\t\texpected: func(locations file.LocationSet) ([]pkg.Package, []artifact.Relationship) {\n\t\t\t\tpkgs := []pkg.Package{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"prod-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/prod-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"prod-pkg@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"ghi789\",\n\t\t\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\t\t\"shared-pkg\": \"^1.0.0\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:      \"shared-pkg\",\n\t\t\t\t\t\tVersion:   \"1.0.0\",\n\t\t\t\t\t\tLocations: locations,\n\t\t\t\t\t\tPURL:      \"pkg:npm/shared-pkg@1.0.0\",\n\t\t\t\t\t\tLanguage:  pkg.JavaScript,\n\t\t\t\t\t\tType:      pkg.NpmPkg,\n\t\t\t\t\t\tMetadata: pkg.YarnLockEntry{\n\t\t\t\t\t\t\tResolved:  \"shared-pkg@npm:1.0.0\",\n\t\t\t\t\t\t\tIntegrity: \"jkl012\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\trels := []artifact.Relationship{\n\t\t\t\t\t{\n\t\t\t\t\t\tFrom: pkgs[1], // shared-pkg\n\t\t\t\t\t\tTo:   pkgs[0], // prod-pkg\n\t\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn pkgs, rels\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfixture := tt.fixtureDir + \"/yarn.lock\"\n\t\t\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\t\t\texpectedPkgs, expectedRels := tt.expected(locations)\n\n\t\t\tadapter := newGenericYarnLockAdapter(CatalogerConfig{IncludeDevDependencies: tt.includeDev})\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixtureDir).\n\t\t\t\tFromFile(t, fixture).\n\t\t\t\tExpects(expectedPkgs, expectedRels).\n\t\t\t\tTestParser(t, adapter.parseYarnLock)\n\t\t})\n\t}\n}\n\nfunc generateMockYarnRegistryHandler(responseFixture string) func(w http.ResponseWriter, r *http.Request) {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tw.WriteHeader(http.StatusOK)\n\t\t// Copy the file's content to the response writer\n\t\tfile, err := os.Open(responseFixture)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdefer file.Close()\n\n\t\t_, err = io.Copy(w, file)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// setup sets up a test HTTP server for mocking requests to a particular registry.\n// The returned url is injected into the Config so the client uses the test server.\n// Tests should register handlers on mux to simulate the expected request/response structure\nfunc setupYarnRegistry() (mux *http.ServeMux, serverURL string, teardown func()) {\n\t// mux is the HTTP request multiplexer used with the test server.\n\tmux = http.NewServeMux()\n\n\t// We want to ensure that tests catch mistakes where the endpoint URL is\n\t// specified as absolute rather than relative. It only makes a difference\n\t// when there's a non-empty base URL path. So, use that. See issue #752.\n\tapiHandler := http.NewServeMux()\n\tapiHandler.Handle(\"/\", mux)\n\t// server is a test HTTP server used to provide mock API responses.\n\tserver := httptest.NewServer(apiHandler)\n\n\treturn mux, server.URL, server.Close\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/corrupt/package.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/glob-paths/src/package.json",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-all-author-fields.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Main Author <main@example.com>\",\n  \"authors\": [\n    \"Second Author <second@example.com>\"\n  ],\n  \"contributors\": [\n    \"Contrib One <contrib1@example.com>\"\n  ],\n  \"maintainers\": [\n    {\n      \"name\": \"Maintainer One\",\n      \"email\": \"maintain1@example.com\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-author-non-standard.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": {\n    \"name\": \"npm Inc.\",\n    \"url\": \"https://www.npmjs.com/\",\n    \"organization\": true\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-authors-array.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"authors\": [\n    \"Harry Potter <hp@hogwards.com> (http://youknowwho.com/)\",\n    \"John Smith <j.smith@something.com> (http://awebsite.com/)\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-authors-objects.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"authors\": [\n    {\n      \"name\": \"Harry Potter\",\n      \"email\": \"hp@hogwards.com\",\n      \"url\": \"http://youknowwho.com/\"\n    },\n    {\n      \"name\": \"John Smith\",\n      \"email\": \"j.smith@something.com\",\n      \"url\": \"http://awebsite.com/\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-both-author-and-authors.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"authors\": [\n    \"Harry Potter <hp@hogwards.com> (http://youknowwho.com/)\",\n    \"John Smith <j.smith@something.com> (http://awebsite.com/)\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-contributors.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"contributors\": [\n    \"Alice Contributor <alice@example.com>\",\n    \"Bob Helper <bob@example.com>\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-license-object.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"license\": {\n    \"type\" : \"ISC\",\n    \"url\" : \"https://opensource.org/licenses/ISC\"\n  },\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-license-objects.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"licenses\": [\n    { \"type\": \"MIT\",\n      \"url\": \"https://www.opensource.org/licenses/mit-license.php\"\n    },\n    { \"type\": \"Apache-2.0\",\n      \"url\": \"https://opensource.org/licenses/apache2.0.php\"\n    }\n  ],\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-maintainers.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"maintainers\": [\n    {\n      \"name\": \"Charlie Maintainer\",\n      \"email\": \"charlie@example.com\"\n    },\n    {\n      \"name\": \"Diana Keeper\",\n      \"email\": \"diana@example.com\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-malformed-license.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"licenses\": [ \"MIT\" ],\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-nested-author.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": {\n    \"name\": \"Isaac Z. Schlueter\",\n    \"email\": \"i@izs.me\",\n    \"url\": \"http://blog.izs.me\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"license\": \"Artistic-2.0\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-no-license.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-partial.json",
    "content": "{\n  \"sideEffects\": false,\n  \"module\": \"../../esm/fp/isSaturday/index.js\",\n  \"typings\": \"../../typings.d.ts\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-private.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"private\": true,\n  \"description\": \"a package manager for JavaScript\",\n  \"keywords\": [\n    \"install\",\n    \"modules\",\n    \"package manager\",\n    \"package.json\"\n  ],\n  \"preferGlobal\": true,\n  \"config\": {\n    \"publishtest\": false\n  },\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"directories\": {\n    \"bin\": \"./bin\",\n    \"doc\": \"./doc\",\n    \"lib\": \"./lib\",\n    \"man\": \"./man\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"bin\": {\n    \"npm\": \"./bin/npm-cli.js\",\n    \"npx\": \"./bin/npx-cli.js\"\n  },\n  \"dependencies\": {\n    \"JSONStream\": \"^1.3.5\",\n    \"abbrev\": \"~1.1.1\",\n    \"ansicolors\": \"~0.3.2\",\n    \"ansistyles\": \"~0.1.3\",\n    \"aproba\": \"^2.0.0\",\n    \"archy\": \"~1.0.0\",\n    \"bin-links\": \"^1.1.7\",\n    \"bluebird\": \"^3.5.5\",\n    \"byte-size\": \"^5.0.1\",\n    \"cacache\": \"^12.0.3\",\n    \"call-limit\": \"^1.1.1\",\n    \"chownr\": \"^1.1.4\",\n    \"ci-info\": \"^2.0.0\",\n    \"cli-columns\": \"^3.1.2\",\n    \"cli-table3\": \"^0.5.1\",\n    \"cmd-shim\": \"^3.0.3\",\n    \"columnify\": \"~1.5.4\",\n    \"config-chain\": \"^1.1.12\",\n    \"detect-indent\": \"~5.0.0\",\n    \"detect-newline\": \"^2.1.0\",\n    \"dezalgo\": \"~1.0.3\",\n    \"editor\": \"~1.0.0\",\n    \"figgy-pudding\": \"^3.5.1\",\n    \"find-npm-prefix\": \"^1.0.2\",\n    \"fs-vacuum\": \"~1.2.10\",\n    \"fs-write-stream-atomic\": \"~1.0.10\",\n    \"gentle-fs\": \"^2.3.0\",\n    \"glob\": \"^7.1.6\",\n    \"graceful-fs\": \"^4.2.4\",\n    \"has-unicode\": \"~2.0.1\",\n    \"hosted-git-info\": \"^2.8.8\",\n    \"iferr\": \"^1.0.2\",\n    \"infer-owner\": \"^1.0.4\",\n    \"inflight\": \"~1.0.6\",\n    \"inherits\": \"^2.0.4\",\n    \"ini\": \"^1.3.5\",\n    \"init-package-json\": \"^1.10.3\",\n    \"is-cidr\": \"^3.0.0\",\n    \"json-parse-better-errors\": \"^1.0.2\",\n    \"lazy-property\": \"~1.0.0\",\n    \"libcipm\": \"^4.0.7\",\n    \"libnpm\": \"^3.0.1\",\n    \"libnpmaccess\": \"^3.0.2\",\n    \"libnpmhook\": \"^5.0.3\",\n    \"libnpmorg\": \"^1.0.1\",\n    \"libnpmsearch\": \"^2.0.2\",\n    \"libnpmteam\": \"^1.0.2\",\n    \"libnpx\": \"^10.2.2\",\n    \"lock-verify\": \"^2.1.0\",\n    \"lockfile\": \"^1.0.4\",\n    \"lodash._baseuniq\": \"~4.6.0\",\n    \"lodash.clonedeep\": \"~4.5.0\",\n    \"lodash.union\": \"~4.6.0\",\n    \"lodash.uniq\": \"~4.5.0\",\n    \"lodash.without\": \"~4.4.0\",\n    \"lru-cache\": \"^5.1.1\",\n    \"meant\": \"~1.0.1\",\n    \"mississippi\": \"^3.0.0\",\n    \"mkdirp\": \"^0.5.5\",\n    \"move-concurrently\": \"^1.0.1\",\n    \"node-gyp\": \"^5.1.0\",\n    \"nopt\": \"^4.0.3\",\n    \"normalize-package-data\": \"^2.5.0\",\n    \"npm-audit-report\": \"^1.3.2\",\n    \"npm-cache-filename\": \"~1.0.2\",\n    \"npm-install-checks\": \"^3.0.2\",\n    \"npm-lifecycle\": \"^3.1.4\",\n    \"npm-package-arg\": \"^6.1.1\",\n    \"npm-packlist\": \"^1.4.8\",\n    \"npm-pick-manifest\": \"^3.0.2\",\n    \"npm-profile\": \"^4.0.4\",\n    \"npm-registry-fetch\": \"^4.0.5\",\n    \"npm-user-validate\": \"~1.0.0\",\n    \"npmlog\": \"~4.1.2\",\n    \"once\": \"~1.4.0\",\n    \"opener\": \"^1.5.1\",\n    \"osenv\": \"^0.1.5\",\n    \"pacote\": \"^9.5.12\",\n    \"path-is-inside\": \"~1.0.2\",\n    \"promise-inflight\": \"~1.0.1\",\n    \"qrcode-terminal\": \"^0.12.0\",\n    \"query-string\": \"^6.8.2\",\n    \"qw\": \"~1.0.1\",\n    \"read\": \"~1.0.7\",\n    \"read-cmd-shim\": \"^1.0.5\",\n    \"read-installed\": \"~4.0.3\",\n    \"read-package-json\": \"^2.1.1\",\n    \"read-package-tree\": \"^5.3.1\",\n    \"readable-stream\": \"^3.6.0\",\n    \"readdir-scoped-modules\": \"^1.1.0\",\n    \"request\": \"^2.88.0\",\n    \"retry\": \"^0.12.0\",\n    \"rimraf\": \"^2.7.1\",\n    \"safe-buffer\": \"^5.1.2\",\n    \"semver\": \"^5.7.1\",\n    \"sha\": \"^3.0.0\",\n    \"slide\": \"~1.1.6\",\n    \"sorted-object\": \"~2.0.1\",\n    \"sorted-union-stream\": \"~2.1.3\",\n    \"ssri\": \"^6.0.1\",\n    \"stringify-package\": \"^1.0.1\",\n    \"tar\": \"^4.4.13\",\n    \"text-table\": \"~0.2.0\",\n    \"tiny-relative-date\": \"^1.3.0\",\n    \"uid-number\": \"0.0.6\",\n    \"umask\": \"~1.1.0\",\n    \"unique-filename\": \"^1.1.1\",\n    \"unpipe\": \"~1.0.0\",\n    \"update-notifier\": \"^2.5.0\",\n    \"uuid\": \"^3.3.3\",\n    \"validate-npm-package-license\": \"^3.0.4\",\n    \"validate-npm-package-name\": \"~3.0.0\",\n    \"which\": \"^1.3.1\",\n    \"worker-farm\": \"^1.7.0\",\n    \"write-file-atomic\": \"^2.4.3\"\n  },\n  \"bundleDependencies\": [\n    \"abbrev\",\n    \"ansicolors\",\n    \"ansistyles\",\n    \"aproba\",\n    \"archy\",\n    \"bin-links\",\n    \"bluebird\",\n    \"byte-size\",\n    \"cacache\",\n    \"call-limit\",\n    \"chownr\",\n    \"ci-info\",\n    \"cli-columns\",\n    \"cli-table3\",\n    \"cmd-shim\",\n    \"columnify\",\n    \"config-chain\",\n    \"debuglog\",\n    \"detect-indent\",\n    \"detect-newline\",\n    \"dezalgo\",\n    \"editor\",\n    \"figgy-pudding\",\n    \"find-npm-prefix\",\n    \"fs-vacuum\",\n    \"fs-write-stream-atomic\",\n    \"gentle-fs\",\n    \"glob\",\n    \"graceful-fs\",\n    \"has-unicode\",\n    \"hosted-git-info\",\n    \"iferr\",\n    \"imurmurhash\",\n    \"infer-owner\",\n    \"inflight\",\n    \"inherits\",\n    \"ini\",\n    \"init-package-json\",\n    \"is-cidr\",\n    \"json-parse-better-errors\",\n    \"JSONStream\",\n    \"lazy-property\",\n    \"libcipm\",\n    \"libnpm\",\n    \"libnpmaccess\",\n    \"libnpmhook\",\n    \"libnpmorg\",\n    \"libnpmsearch\",\n    \"libnpmteam\",\n    \"libnpx\",\n    \"lock-verify\",\n    \"lockfile\",\n    \"lodash._baseindexof\",\n    \"lodash._baseuniq\",\n    \"lodash._bindcallback\",\n    \"lodash._cacheindexof\",\n    \"lodash._createcache\",\n    \"lodash._getnative\",\n    \"lodash.clonedeep\",\n    \"lodash.restparam\",\n    \"lodash.union\",\n    \"lodash.uniq\",\n    \"lodash.without\",\n    \"lru-cache\",\n    \"meant\",\n    \"mississippi\",\n    \"mkdirp\",\n    \"move-concurrently\",\n    \"node-gyp\",\n    \"nopt\",\n    \"normalize-package-data\",\n    \"npm-audit-report\",\n    \"npm-cache-filename\",\n    \"npm-install-checks\",\n    \"npm-lifecycle\",\n    \"npm-package-arg\",\n    \"npm-packlist\",\n    \"npm-pick-manifest\",\n    \"npm-profile\",\n    \"npm-registry-fetch\",\n    \"npm-user-validate\",\n    \"npmlog\",\n    \"once\",\n    \"opener\",\n    \"osenv\",\n    \"pacote\",\n    \"path-is-inside\",\n    \"promise-inflight\",\n    \"qrcode-terminal\",\n    \"query-string\",\n    \"qw\",\n    \"read-cmd-shim\",\n    \"read-installed\",\n    \"read-package-json\",\n    \"read-package-tree\",\n    \"read\",\n    \"readable-stream\",\n    \"readdir-scoped-modules\",\n    \"request\",\n    \"retry\",\n    \"rimraf\",\n    \"safe-buffer\",\n    \"semver\",\n    \"sha\",\n    \"slide\",\n    \"sorted-object\",\n    \"sorted-union-stream\",\n    \"ssri\",\n    \"stringify-package\",\n    \"tar\",\n    \"text-table\",\n    \"tiny-relative-date\",\n    \"uid-number\",\n    \"umask\",\n    \"unique-filename\",\n    \"unpipe\",\n    \"update-notifier\",\n    \"uuid\",\n    \"validate-npm-package-license\",\n    \"validate-npm-package-name\",\n    \"which\",\n    \"worker-farm\",\n    \"write-file-atomic\"\n  ],\n  \"devDependencies\": {\n    \"deep-equal\": \"^1.0.1\",\n    \"get-stream\": \"^4.1.0\",\n    \"licensee\": \"^7.0.3\",\n    \"marked\": \"^0.6.3\",\n    \"marked-man\": \"^0.6.0\",\n    \"npm-registry-couchapp\": \"^2.7.4\",\n    \"npm-registry-mock\": \"^1.3.1\",\n    \"require-inject\": \"^1.4.4\",\n    \"sprintf-js\": \"^1.1.2\",\n    \"standard\": \"^11.0.1\",\n    \"tacks\": \"^1.3.0\",\n    \"tap\": \"^12.7.0\",\n    \"tar-stream\": \"^2.1.0\"\n  },\n  \"scripts\": {\n    \"dumpconf\": \"env | grep npm | sort | uniq\",\n    \"prepare\": \"node bin/npm-cli.js rebuild && node bin/npm-cli.js --no-audit --no-timing prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 mandocs\",\n    \"preversion\": \"bash scripts/update-authors.sh && git add AUTHORS && git commit -m \\\"update AUTHORS\\\" || true\",\n    \"licenses\": \"licensee --production --errors-only\",\n    \"tap\": \"tap -J --timeout 300 --no-esm\",\n    \"tap-cover\": \"tap -J --nyc-arg=--cache --coverage --timeout 600 --no-esm\",\n    \"lint\": \"standard\",\n    \"pretest\": \"npm run lint\",\n    \"test\": \"npm run test-tap --\",\n    \"test:nocleanup\": \"NO_TEST_CLEANUP=1 npm run test --\",\n    \"sudotest\": \"sudo npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"sudotest:nocleanup\": \"sudo NO_TEST_CLEANUP=1 npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"posttest\": \"rimraf test/npm_cache*\",\n    \"test-coverage\": \"npm run tap-cover -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-tap\": \"npm run tap -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-node\": \"tap --timeout 240 \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\"\n  },\n  \"license\": \"Artistic-2.0\",\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package-repo-string.json",
    "content": "{\n  \"name\": \"function-bind\",\n  \"version\": \"1.1.1\",\n  \"description\": \"Implementation of Function.prototype.bind\",\n  \"keywords\": [\n    \"function\",\n    \"bind\",\n    \"shim\",\n    \"es5\"\n  ],\n  \"author\": \"Raynos <raynos2@gmail.com>\",\n  \"repository\": \"git://github.com/Raynos/function-bind.git\",\n  \"main\": \"index\",\n  \"homepage\": \"https://github.com/Raynos/function-bind\",\n  \"contributors\": [\n    {\n      \"name\": \"Raynos\"\n    },\n    {\n      \"name\": \"Jordan Harband\",\n      \"url\": \"https://github.com/ljharb\"\n    }\n  ],\n  \"bugs\": {\n    \"url\": \"https://github.com/Raynos/function-bind/issues\",\n    \"email\": \"raynos2@gmail.com\"\n  },\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"@ljharb/eslint-config\": \"^12.2.1\",\n    \"covert\": \"^1.1.0\",\n    \"eslint\": \"^4.5.0\",\n    \"jscs\": \"^3.0.7\",\n    \"tape\": \"^4.8.0\"\n  },\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"pretest\": \"npm run lint\",\n    \"test\": \"npm run tests-only\",\n    \"posttest\": \"npm run coverage -- --quiet\",\n    \"tests-only\": \"node test\",\n    \"coverage\": \"covert test/*.js\",\n    \"lint\": \"npm run jscs && npm run eslint\",\n    \"jscs\": \"jscs *.js */*.js\",\n    \"eslint\": \"eslint *.js */*.js\"\n  },\n  \"testling\": {\n    \"files\": \"test/index.js\",\n    \"browsers\": [\n      \"ie/8..latest\",\n      \"firefox/16..latest\",\n      \"firefox/nightly\",\n      \"chrome/22..latest\",\n      \"chrome/canary\",\n      \"opera/12..latest\",\n      \"opera/next\",\n      \"safari/5.1..latest\",\n      \"ipad/6.0..latest\",\n      \"iphone/6.0..latest\",\n      \"android-browser/4.2..latest\"\n    ]\n  }\n,\"_resolved\": \"https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz\"\n,\"_integrity\": \"sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==\"\n,\"_from\": \"function-bind@1.1.1\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-json/package.json",
    "content": "{\n  \"version\": \"6.14.6\",\n  \"name\": \"npm\",\n  \"description\": \"a package manager for JavaScript\",\n  \"keywords\": [\n    \"install\",\n    \"modules\",\n    \"package manager\",\n    \"package.json\"\n  ],\n  \"preferGlobal\": true,\n  \"config\": {\n    \"publishtest\": false\n  },\n  \"homepage\": \"https://docs.npmjs.com/\",\n  \"author\": \"Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cli\"\n  },\n  \"bugs\": {\n    \"url\": \"https://npm.community/c/bugs\"\n  },\n  \"directories\": {\n    \"bin\": \"./bin\",\n    \"doc\": \"./doc\",\n    \"lib\": \"./lib\",\n    \"man\": \"./man\"\n  },\n  \"main\": \"./lib/npm.js\",\n  \"bin\": {\n    \"npm\": \"./bin/npm-cli.js\",\n    \"npx\": \"./bin/npx-cli.js\"\n  },\n  \"dependencies\": {\n    \"JSONStream\": \"^1.3.5\",\n    \"abbrev\": \"~1.1.1\",\n    \"ansicolors\": \"~0.3.2\",\n    \"ansistyles\": \"~0.1.3\",\n    \"aproba\": \"^2.0.0\",\n    \"archy\": \"~1.0.0\",\n    \"bin-links\": \"^1.1.7\",\n    \"bluebird\": \"^3.5.5\",\n    \"byte-size\": \"^5.0.1\",\n    \"cacache\": \"^12.0.3\",\n    \"call-limit\": \"^1.1.1\",\n    \"chownr\": \"^1.1.4\",\n    \"ci-info\": \"^2.0.0\",\n    \"cli-columns\": \"^3.1.2\",\n    \"cli-table3\": \"^0.5.1\",\n    \"cmd-shim\": \"^3.0.3\",\n    \"columnify\": \"~1.5.4\",\n    \"config-chain\": \"^1.1.12\",\n    \"detect-indent\": \"~5.0.0\",\n    \"detect-newline\": \"^2.1.0\",\n    \"dezalgo\": \"~1.0.3\",\n    \"editor\": \"~1.0.0\",\n    \"figgy-pudding\": \"^3.5.1\",\n    \"find-npm-prefix\": \"^1.0.2\",\n    \"fs-vacuum\": \"~1.2.10\",\n    \"fs-write-stream-atomic\": \"~1.0.10\",\n    \"gentle-fs\": \"^2.3.0\",\n    \"glob\": \"^7.1.6\",\n    \"graceful-fs\": \"^4.2.4\",\n    \"has-unicode\": \"~2.0.1\",\n    \"hosted-git-info\": \"^2.8.8\",\n    \"iferr\": \"^1.0.2\",\n    \"infer-owner\": \"^1.0.4\",\n    \"inflight\": \"~1.0.6\",\n    \"inherits\": \"^2.0.4\",\n    \"ini\": \"^1.3.5\",\n    \"init-package-json\": \"^1.10.3\",\n    \"is-cidr\": \"^3.0.0\",\n    \"json-parse-better-errors\": \"^1.0.2\",\n    \"lazy-property\": \"~1.0.0\",\n    \"libcipm\": \"^4.0.7\",\n    \"libnpm\": \"^3.0.1\",\n    \"libnpmaccess\": \"^3.0.2\",\n    \"libnpmhook\": \"^5.0.3\",\n    \"libnpmorg\": \"^1.0.1\",\n    \"libnpmsearch\": \"^2.0.2\",\n    \"libnpmteam\": \"^1.0.2\",\n    \"libnpx\": \"^10.2.2\",\n    \"lock-verify\": \"^2.1.0\",\n    \"lockfile\": \"^1.0.4\",\n    \"lodash._baseuniq\": \"~4.6.0\",\n    \"lodash.clonedeep\": \"~4.5.0\",\n    \"lodash.union\": \"~4.6.0\",\n    \"lodash.uniq\": \"~4.5.0\",\n    \"lodash.without\": \"~4.4.0\",\n    \"lru-cache\": \"^5.1.1\",\n    \"meant\": \"~1.0.1\",\n    \"mississippi\": \"^3.0.0\",\n    \"mkdirp\": \"^0.5.5\",\n    \"move-concurrently\": \"^1.0.1\",\n    \"node-gyp\": \"^5.1.0\",\n    \"nopt\": \"^4.0.3\",\n    \"normalize-package-data\": \"^2.5.0\",\n    \"npm-audit-report\": \"^1.3.2\",\n    \"npm-cache-filename\": \"~1.0.2\",\n    \"npm-install-checks\": \"^3.0.2\",\n    \"npm-lifecycle\": \"^3.1.4\",\n    \"npm-package-arg\": \"^6.1.1\",\n    \"npm-packlist\": \"^1.4.8\",\n    \"npm-pick-manifest\": \"^3.0.2\",\n    \"npm-profile\": \"^4.0.4\",\n    \"npm-registry-fetch\": \"^4.0.5\",\n    \"npm-user-validate\": \"~1.0.0\",\n    \"npmlog\": \"~4.1.2\",\n    \"once\": \"~1.4.0\",\n    \"opener\": \"^1.5.1\",\n    \"osenv\": \"^0.1.5\",\n    \"pacote\": \"^9.5.12\",\n    \"path-is-inside\": \"~1.0.2\",\n    \"promise-inflight\": \"~1.0.1\",\n    \"qrcode-terminal\": \"^0.12.0\",\n    \"query-string\": \"^6.8.2\",\n    \"qw\": \"~1.0.1\",\n    \"read\": \"~1.0.7\",\n    \"read-cmd-shim\": \"^1.0.5\",\n    \"read-installed\": \"~4.0.3\",\n    \"read-package-json\": \"^2.1.1\",\n    \"read-package-tree\": \"^5.3.1\",\n    \"readable-stream\": \"^3.6.0\",\n    \"readdir-scoped-modules\": \"^1.1.0\",\n    \"request\": \"^2.88.0\",\n    \"retry\": \"^0.12.0\",\n    \"rimraf\": \"^2.7.1\",\n    \"safe-buffer\": \"^5.1.2\",\n    \"semver\": \"^5.7.1\",\n    \"sha\": \"^3.0.0\",\n    \"slide\": \"~1.1.6\",\n    \"sorted-object\": \"~2.0.1\",\n    \"sorted-union-stream\": \"~2.1.3\",\n    \"ssri\": \"^6.0.1\",\n    \"stringify-package\": \"^1.0.1\",\n    \"tar\": \"^4.4.13\",\n    \"text-table\": \"~0.2.0\",\n    \"tiny-relative-date\": \"^1.3.0\",\n    \"uid-number\": \"0.0.6\",\n    \"umask\": \"~1.1.0\",\n    \"unique-filename\": \"^1.1.1\",\n    \"unpipe\": \"~1.0.0\",\n    \"update-notifier\": \"^2.5.0\",\n    \"uuid\": \"^3.3.3\",\n    \"validate-npm-package-license\": \"^3.0.4\",\n    \"validate-npm-package-name\": \"~3.0.0\",\n    \"which\": \"^1.3.1\",\n    \"worker-farm\": \"^1.7.0\",\n    \"write-file-atomic\": \"^2.4.3\"\n  },\n  \"bundleDependencies\": [\n    \"abbrev\",\n    \"ansicolors\",\n    \"ansistyles\",\n    \"aproba\",\n    \"archy\",\n    \"bin-links\",\n    \"bluebird\",\n    \"byte-size\",\n    \"cacache\",\n    \"call-limit\",\n    \"chownr\",\n    \"ci-info\",\n    \"cli-columns\",\n    \"cli-table3\",\n    \"cmd-shim\",\n    \"columnify\",\n    \"config-chain\",\n    \"debuglog\",\n    \"detect-indent\",\n    \"detect-newline\",\n    \"dezalgo\",\n    \"editor\",\n    \"figgy-pudding\",\n    \"find-npm-prefix\",\n    \"fs-vacuum\",\n    \"fs-write-stream-atomic\",\n    \"gentle-fs\",\n    \"glob\",\n    \"graceful-fs\",\n    \"has-unicode\",\n    \"hosted-git-info\",\n    \"iferr\",\n    \"imurmurhash\",\n    \"infer-owner\",\n    \"inflight\",\n    \"inherits\",\n    \"ini\",\n    \"init-package-json\",\n    \"is-cidr\",\n    \"json-parse-better-errors\",\n    \"JSONStream\",\n    \"lazy-property\",\n    \"libcipm\",\n    \"libnpm\",\n    \"libnpmaccess\",\n    \"libnpmhook\",\n    \"libnpmorg\",\n    \"libnpmsearch\",\n    \"libnpmteam\",\n    \"libnpx\",\n    \"lock-verify\",\n    \"lockfile\",\n    \"lodash._baseindexof\",\n    \"lodash._baseuniq\",\n    \"lodash._bindcallback\",\n    \"lodash._cacheindexof\",\n    \"lodash._createcache\",\n    \"lodash._getnative\",\n    \"lodash.clonedeep\",\n    \"lodash.restparam\",\n    \"lodash.union\",\n    \"lodash.uniq\",\n    \"lodash.without\",\n    \"lru-cache\",\n    \"meant\",\n    \"mississippi\",\n    \"mkdirp\",\n    \"move-concurrently\",\n    \"node-gyp\",\n    \"nopt\",\n    \"normalize-package-data\",\n    \"npm-audit-report\",\n    \"npm-cache-filename\",\n    \"npm-install-checks\",\n    \"npm-lifecycle\",\n    \"npm-package-arg\",\n    \"npm-packlist\",\n    \"npm-pick-manifest\",\n    \"npm-profile\",\n    \"npm-registry-fetch\",\n    \"npm-user-validate\",\n    \"npmlog\",\n    \"once\",\n    \"opener\",\n    \"osenv\",\n    \"pacote\",\n    \"path-is-inside\",\n    \"promise-inflight\",\n    \"qrcode-terminal\",\n    \"query-string\",\n    \"qw\",\n    \"read-cmd-shim\",\n    \"read-installed\",\n    \"read-package-json\",\n    \"read-package-tree\",\n    \"read\",\n    \"readable-stream\",\n    \"readdir-scoped-modules\",\n    \"request\",\n    \"retry\",\n    \"rimraf\",\n    \"safe-buffer\",\n    \"semver\",\n    \"sha\",\n    \"slide\",\n    \"sorted-object\",\n    \"sorted-union-stream\",\n    \"ssri\",\n    \"stringify-package\",\n    \"tar\",\n    \"text-table\",\n    \"tiny-relative-date\",\n    \"uid-number\",\n    \"umask\",\n    \"unique-filename\",\n    \"unpipe\",\n    \"update-notifier\",\n    \"uuid\",\n    \"validate-npm-package-license\",\n    \"validate-npm-package-name\",\n    \"which\",\n    \"worker-farm\",\n    \"write-file-atomic\"\n  ],\n  \"devDependencies\": {\n    \"deep-equal\": \"^1.0.1\",\n    \"get-stream\": \"^4.1.0\",\n    \"licensee\": \"^7.0.3\",\n    \"marked\": \"^0.6.3\",\n    \"marked-man\": \"^0.6.0\",\n    \"npm-registry-couchapp\": \"^2.7.4\",\n    \"npm-registry-mock\": \"^1.3.1\",\n    \"require-inject\": \"^1.4.4\",\n    \"sprintf-js\": \"^1.1.2\",\n    \"standard\": \"^11.0.1\",\n    \"tacks\": \"^1.3.0\",\n    \"tap\": \"^12.7.0\",\n    \"tar-stream\": \"^2.1.0\"\n  },\n  \"scripts\": {\n    \"dumpconf\": \"env | grep npm | sort | uniq\",\n    \"prepare\": \"node bin/npm-cli.js rebuild && node bin/npm-cli.js --no-audit --no-timing prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 mandocs\",\n    \"preversion\": \"bash scripts/update-authors.sh && git add AUTHORS && git commit -m \\\"update AUTHORS\\\" || true\",\n    \"licenses\": \"licensee --production --errors-only\",\n    \"tap\": \"tap -J --timeout 300 --no-esm\",\n    \"tap-cover\": \"tap -J --nyc-arg=--cache --coverage --timeout 600 --no-esm\",\n    \"lint\": \"standard\",\n    \"pretest\": \"npm run lint\",\n    \"test\": \"npm run test-tap --\",\n    \"test:nocleanup\": \"NO_TEST_CLEANUP=1 npm run test --\",\n    \"sudotest\": \"sudo npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"sudotest:nocleanup\": \"sudo NO_TEST_CLEANUP=1 npm run tap -- \\\"test/tap/*.js\\\"\",\n    \"posttest\": \"rimraf test/npm_cache*\",\n    \"test-coverage\": \"npm run tap-cover -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-tap\": \"npm run tap -- \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\",\n    \"test-node\": \"tap --timeout 240 \\\"test/tap/*.js\\\" \\\"test/network/*.js\\\"\"\n  },\n  \"license\": \"Artistic-2.0\",\n  \"engines\": {\n    \"node\": \"6 >=6.2.0 || 8 || >=9.3.0\"\n  }\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-lock/alias-package-lock-1.json",
    "content": "{\n  \"name\": \"alias-check\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 1,\n  \"requires\": true,\n  \"dependencies\": {\n    \"case\": {\n      \"version\": \"1.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.2.tgz\",\n      \"integrity\": \"sha512-ll380ZRoraT7mUK2G92UbH+FJVD5AwdVIAYk9xhV1tauh0carDgYByUD1HhjCWsWgxrfQvCeHvtfj7IYR6TKeg==\"\n    },\n    \"case-alias\": {\n      \"version\": \"npm:case@1.6.3\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.3.tgz\",\n      \"integrity\": \"sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==\"\n    },\n    \"chai\": {\n      \"version\": \"npm:@bundled-es-modules/chai@4.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@bundled-es-modules/chai/-/chai-4.2.2.tgz\",\n      \"integrity\": \"sha512-iGmVYw2/zJCoqyKTtWEYCtFmMyi8WmACQKtky0lpNyEKWX0YIOpKWGD7saMXL+tPpllss0otilxV0SLwyi3Ytg==\"\n    }\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-lock/alias-package-lock-2.json",
    "content": "{\n  \"name\": \"alias-check\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 2,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"alias-check\",\n      \"version\": \"1.0.0\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"case\": \"1.6.2\",\n        \"case-alias\": \"npm:case@^1.6.3\",\n        \"chai\": \"npm:@bundled-es-modules/chai@^4.2.2\"\n      }\n    },\n    \"node_modules/case\": {\n      \"version\": \"1.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.2.tgz\",\n      \"integrity\": \"sha512-ll380ZRoraT7mUK2G92UbH+FJVD5AwdVIAYk9xhV1tauh0carDgYByUD1HhjCWsWgxrfQvCeHvtfj7IYR6TKeg==\",\n      \"engines\": {\n        \"node\": \">= 0.8.0\"\n      }\n    },\n    \"node_modules/case-alias\": {\n      \"name\": \"case\",\n      \"version\": \"1.6.3\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.3.tgz\",\n      \"integrity\": \"sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==\",\n      \"engines\": {\n        \"node\": \">= 0.8.0\"\n      }\n    },\n    \"node_modules/chai\": {\n      \"name\": \"@bundled-es-modules/chai\",\n      \"version\": \"4.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@bundled-es-modules/chai/-/chai-4.2.2.tgz\",\n      \"integrity\": \"sha512-iGmVYw2/zJCoqyKTtWEYCtFmMyi8WmACQKtky0lpNyEKWX0YIOpKWGD7saMXL+tPpllss0otilxV0SLwyi3Ytg==\"\n    }\n  },\n  \"dependencies\": {\n    \"case\": {\n      \"version\": \"1.6.2\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.2.tgz\",\n      \"integrity\": \"sha512-ll380ZRoraT7mUK2G92UbH+FJVD5AwdVIAYk9xhV1tauh0carDgYByUD1HhjCWsWgxrfQvCeHvtfj7IYR6TKeg==\"\n    },\n    \"case-alias\": {\n      \"version\": \"npm:case@1.6.3\",\n      \"resolved\": \"https://registry.npmjs.org/case/-/case-1.6.3.tgz\",\n      \"integrity\": \"sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==\"\n    },\n    \"chai\": {\n      \"version\": \"npm:@bundled-es-modules/chai@4.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/@bundled-es-modules/chai/-/chai-4.2.2.tgz\",\n      \"integrity\": \"sha512-iGmVYw2/zJCoqyKTtWEYCtFmMyi8WmACQKtky0lpNyEKWX0YIOpKWGD7saMXL+tPpllss0otilxV0SLwyi3Ytg==\"\n    }\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-lock/array-license-package-lock.json",
    "content": "{\n    \"name\": \"tmp\",\n    \"version\": \"1.0.0\",\n    \"lockfileVersion\": 2,\n    \"requires\": true,\n    \"packages\": {\n      \"\": {\n        \"name\": \"tmp\",\n        \"version\": \"1.0.0\",\n        \"license\": \"ISC\",\n        \"dependencies\": {\n          \"pause-stream\": \"0.0.11\"\n        }\n      },\n      \"node_modules/pause-stream\": {\n        \"version\": \"0.0.11\",\n        \"license\": [\n            \"MIT\",\n            \"Apache2\"\n        ],\n        \"dependencies\": {\n          \"through\": \"~2.3\"\n        }\n      },\n      \"node_modules/through\": {\n        \"version\": \"2.3.8\",\n        \"license\": \"MIT\"\n      }\n    },\n    \"dependencies\": {\n      \"pause-stream\": {\n        \"version\": \"0.0.11\",\n        \"requires\": {\n          \"through\": \"~2.3\"\n        }\n      },\n      \"through\": {\n        \"version\": \"2.3.8\"\n      }\n    }\n  }"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-lock/package-lock-2.json",
    "content": "{\n    \"name\": \"npm\",\n    \"version\": \"6.14.6\",\n    \"lockfileVersion\": 2,\n    \"requires\": true,\n    \"packages\": {\n        \"\": {\n            \"name\": \"npm\",\n            \"version\": \"6.14.6\",\n            \"dependencies\": {\n                \"@types/react\": \"^18.0.9\"\n            },\n            \"devDependencies\": {\n                \"async\": \"^3.2.4\"\n            }\n        },\n        \"node_modules/@types/prop-types\": {\n            \"version\": \"15.7.5\",\n            \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz\",\n            \"integrity\": \"sha1-XxnSuFqY6VWANvajysyIGUIPBc8=\",\n            \"license\": \"MIT\"\n        },\n        \"node_modules/@types/react\": {\n            \"version\": \"18.0.17\",\n            \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz\",\n            \"integrity\": \"sha1-RYPZwyLWfv5LOak10iPtzHBQzPQ=\",\n            \"license\": \"MIT\",\n            \"dependencies\": {\n                \"@types/prop-types\": \"*\",\n                \"@types/scheduler\": \"*\",\n                \"csstype\": \"^3.0.2\"\n            }\n        },\n        \"node_modules/@types/scheduler\": {\n            \"version\": \"0.16.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz\",\n            \"integrity\": \"sha1-GmL4lSVyPd4kuhsBsJK/XfitTTk=\",\n            \"license\": \"MIT\"\n        },\n        \"node_modules/csstype\": {\n            \"version\": \"3.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz\",\n            \"integrity\": \"sha1-TdysNxjXh8+d8NG30VAzklyPKfI=\",\n            \"license\": \"MIT\"\n        },\n        \"node_modules/async\": {\n            \"version\": \"3.2.4\",\n            \"resolved\": \"https://registry.npmjs.org/async/-/async-3.2.4.tgz\",\n            \"integrity\": \"sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==\",\n            \"dev\": true\n        }\n    },\n    \"dependencies\": {\n        \"@types/prop-types\": {\n            \"version\": \"15.7.5\",\n            \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz\",\n            \"integrity\": \"sha1-XxnSuFqY6VWANvajysyIGUIPBc8=\"\n        },\n        \"@types/react\": {\n            \"version\": \"18.0.17\",\n            \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz\",\n            \"integrity\": \"sha1-RYPZwyLWfv5LOak10iPtzHBQzPQ=\",\n            \"requires\": {\n                \"@types/prop-types\": \"*\",\n                \"@types/scheduler\": \"*\",\n                \"csstype\": \"^3.0.2\"\n            }\n        },\n        \"@types/scheduler\": {\n            \"version\": \"0.16.2\",\n            \"resolved\": \"https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz\",\n            \"integrity\": \"sha1-GmL4lSVyPd4kuhsBsJK/XfitTTk=\"\n        },\n        \"csstype\": {\n            \"version\": \"3.1.0\",\n            \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz\",\n            \"integrity\": \"sha1-TdysNxjXh8+d8NG30VAzklyPKfI=\"\n        },\n        \"async\": {\n            \"version\": \"3.2.4\",\n            \"resolved\": \"https://registry.npmjs.org/async/-/async-3.2.4.tgz\",\n            \"integrity\": \"sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==\",\n            \"dev\": true\n        }\n    }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pkg-lock/package-lock-3.json",
    "content": "{\n  \"name\": \"lock-v3-fixture\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"lock-v3-fixture\",\n      \"version\": \"1.0.0\",\n      \"dependencies\": {\n        \"@types/react\": \"^18.0.9\"\n      },\n      \"devDependencies\": {\n        \"async\": \"^3.2.4\"\n      }\n    },\n    \"node_modules/@types/prop-types\": {\n      \"version\": \"15.7.5\",\n      \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz\",\n      \"integrity\": \"sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==\"\n    },\n    \"node_modules/@types/react\": {\n      \"version\": \"18.0.20\",\n      \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz\",\n      \"integrity\": \"sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==\",\n      \"dependencies\": {\n        \"@types/prop-types\": \"*\",\n        \"@types/scheduler\": \"*\",\n        \"csstype\": \"^3.0.2\"\n      }\n    },\n    \"node_modules/@types/scheduler\": {\n      \"version\": \"0.16.2\",\n      \"resolved\": \"https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz\",\n      \"integrity\": \"sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==\"\n    },\n    \"node_modules/csstype\": {\n      \"version\": \"3.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz\",\n      \"integrity\": \"sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==\"\n    },\n    \"node_modules/async\": {\n      \"version\": \"3.2.4\",\n      \"resolved\": \"https://registry.npmjs.org/async/-/async-3.2.4.tgz\",\n      \"integrity\": \"sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==\",\n      \"dev\": true\n    }\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/pnpm-remote/registry_response.json",
    "content": "{\n    \"name\": \"nanoid\",\n    \"version\": \"3.3.4\",\n    \"keywords\": [\n        \"uuid\",\n        \"random\",\n        \"id\",\n        \"url\"\n    ],\n    \"author\": {\n        \"name\": \"Andrey Sitnik\",\n        \"email\": \"andrey@sitnik.ru\"\n    },\n    \"license\": \"MIT\",\n    \"_id\": \"nanoid@3.3.4\",\n    \"maintainers\": [\n        {\n            \"name\": \"ai\",\n            \"email\": \"andrey@sitnik.ru\"\n        }\n    ],\n    \"homepage\": \"https://github.com/ai/nanoid#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/ai/nanoid/issues\"\n    },\n    \"bin\": {\n        \"nanoid\": \"bin/nanoid.cjs\"\n    },\n    \"dist\": {\n        \"shasum\": \"730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab\",\n        \"tarball\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz\",\n        \"fileCount\": 24,\n        \"integrity\": \"sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==\",\n        \"signatures\": [\n            {\n                \"sig\": \"MEQCIEXG2ta5bIaT6snvQFKV+m1KjuF4DaCpp186tcPo8vsRAiB2Eg9/6nKRi4lZOfwQC1fgq4EzrFjU8T+uqwGxWEQE8A==\",\n                \"keyid\": \"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA\"\n            }\n        ],\n        \"unpackedSize\": 21583,\n        \"npm-signature\": \"-----BEGIN PGP SIGNATURE-----\\r\\nVersion: OpenPGP.js v4.10.10\\r\\nComment: https://openpgpjs.org\\r\\n\\r\\nwsFzBAEBCAAGBQJicQqNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\\r\\nEgJ2Vmp6rw/+IRvv2zOtwi8goF3h1VctIQVWtTtYrobDIVC2W++jyxdbgZoP\\r\\n2CDj1YWjrr+eM6O6sI1Bj+bF+yoqQ+z8ojtfW3vtRPpjzUf/7Sgs4F2ANshp\\r\\ne3rqdaQLjpHPriHf6HmPJy3YNJ+7n5TPPGoTEGXAe4eCZdko3XidCMWZdHlf\\r\\nYQU9CVYiG6mjjORkWw1sYctt8exdcGFMh0QoQq7BEp04QWm04JwvHjUiAgvf\\r\\nmEQLrNrf9nwzjpnubAJD+1z6fKOc9vUE44MOj2PkPoOr6a+iBBBgwBf45cnj\\r\\ng8R2G5xzxsRRB0a8XZdp67y3WA8rIaYaUuBFtEWYp7QFoA/tp6AGmHEAhjLa\\r\\nQKTquG7ejBu21ZsQaxpGc/3WWLEm+7F78GF8CXpQdtg0Kg1eugRotSNnU0SO\\r\\nPLiyYV4Mw6kXnbVchS5Y+HmcDVEcSBMTve/f1KpmIhJueJ20RCg4MGYZWgI9\\r\\nNJ1KgH2h4djX4XuoXpcsKnX3oVfinHEMke8sLWXHsMAtOxDipEWgW9cE9hk0\\r\\n71Y6LAAPBu34pmaj73B0qZiIY7wXxoGWQOCl2STS/VyDG/K9w1T+WiYROu+8\\r\\nE9Gd+f4qXmdi7Jw6May86DDfauCwBP3gnrB5aeOktCjWsgrrdClN3Hv2pIAN\\r\\noJcjS3IURf6oeV4+Yw1B5GoJu1Y/6U75fOU=\\r\\n=IMnM\\r\\n-----END PGP SIGNATURE-----\\r\\n\"\n    },\n    \"main\": \"index.cjs\",\n    \"type\": \"module\",\n    \"types\": \"./index.d.ts\",\n    \"module\": \"index.js\",\n    \"browser\": {\n        \"./index.js\": \"./index.browser.js\",\n        \"./index.cjs\": \"./index.browser.cjs\",\n        \"./async/index.js\": \"./async/index.browser.js\",\n        \"./async/index.cjs\": \"./async/index.browser.cjs\"\n    },\n    \"engines\": {\n        \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n    },\n    \"exports\": {\n        \".\": {\n            \"types\": \"./index.d.ts\",\n            \"import\": \"./index.js\",\n            \"browser\": \"./index.browser.js\",\n            \"default\": \"./index.js\",\n            \"require\": \"./index.cjs\"\n        },\n        \"./async\": {\n            \"import\": \"./async/index.js\",\n            \"browser\": \"./async/index.browser.js\",\n            \"default\": \"./async/index.js\",\n            \"require\": \"./async/index.cjs\"\n        },\n        \"./index.d.ts\": \"./index.d.ts\",\n        \"./non-secure\": {\n            \"import\": \"./non-secure/index.js\",\n            \"default\": \"./non-secure/index.js\",\n            \"require\": \"./non-secure/index.cjs\"\n        },\n        \"./package.json\": \"./package.json\",\n        \"./url-alphabet\": {\n            \"import\": \"./url-alphabet/index.js\",\n            \"default\": \"./url-alphabet/index.js\",\n            \"require\": \"./url-alphabet/index.cjs\"\n        },\n        \"./async/package.json\": \"./async/package.json\",\n        \"./non-secure/package.json\": \"./non-secure/package.json\",\n        \"./url-alphabet/package.json\": \"./url-alphabet/package.json\"\n    },\n    \"gitHead\": \"fc5bd0dbba830b1e6f3e572da8e2bc9ddc1b4b44\",\n    \"_npmUser\": {\n        \"name\": \"ai\",\n        \"email\": \"andrey@sitnik.ru\"\n    },\n    \"repository\": {\n        \"url\": \"git+https://github.com/ai/nanoid.git\",\n        \"type\": \"git\"\n    },\n    \"_npmVersion\": \"8.6.0\",\n    \"description\": \"A tiny (116 bytes), secure URL-friendly unique string ID generator\",\n    \"directories\": {},\n    \"sideEffects\": false,\n    \"_nodeVersion\": \"18.0.0\",\n    \"react-native\": \"index.js\",\n    \"_hasShrinkwrap\": false,\n    \"_npmOperationalInternal\": {\n        \"tmp\": \"tmp/nanoid_3.3.4_1651575437375_0.2288595018362154\",\n        \"host\": \"s3://npm-registry-packages\"\n    }\n}"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/yarn-berry-dev-deps/package.json",
    "content": "{\n  \"name\": \"test-project\",\n  \"version\": \"1.0.0\",\n  \"dependencies\": {\n    \"prod-pkg\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"dev-pkg\": \"^1.0.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/yarn-dev-deps/package.json",
    "content": "{\n  \"name\": \"test-project\",\n  \"version\": \"1.0.0\",\n  \"dependencies\": {\n    \"prod-pkg\": \"^1.0.0\"\n  },\n  \"devDependencies\": {\n    \"dev-pkg\": \"^1.0.0\"\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/javascript/testdata/yarn-remote/registry_response.json",
    "content": "{\n  \"name\": \"@babel/code-frame\",\n  \"version\": \"7.10.4\",\n  \"description\": \"Generate errors that contain a code frame that point to source locations.\",\n  \"author\": {\n    \"name\": \"Sebastian McKenzie\",\n    \"email\": \"sebmck@gmail.com\"\n  },\n  \"homepage\": \"https://babeljs.io/\",\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/babel/babel.git\",\n    \"directory\": \"packages/babel-code-frame\"\n  },\n  \"main\": \"lib/index.js\",\n  \"dependencies\": {\n    \"@babel/highlight\": \"^7.10.4\"\n  },\n  \"devDependencies\": {\n    \"chalk\": \"^2.0.0\",\n    \"strip-ansi\": \"^4.0.0\"\n  },\n  \"gitHead\": \"7fd40d86a0d03ff0e9c3ea16b29689945433d4df\",\n  \"bugs\": {\n    \"url\": \"https://github.com/babel/babel/issues\"\n  },\n  \"_id\": \"@babel/code-frame@7.10.4\",\n  \"_nodeVersion\": \"14.4.0\",\n  \"_npmVersion\": \"lerna/3.19.0/node@v14.4.0+x64 (darwin)\",\n  \"dist\": {\n    \"integrity\": \"sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==\",\n    \"shasum\": \"168da1a36e90da68ae8d49c0f1b48c7c6249213a\",\n    \"tarball\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz\",\n    \"fileCount\": 4,\n    \"unpackedSize\": 7723,\n    \"npm-signature\": \"-----BEGIN PGP SIGNATURE-----\\r\\nVersion: OpenPGP.js v3.0.4\\r\\nComment: https://openpgpjs.org\\r\\n\\r\\nwsFcBAEBCAAQBQJe+zovCRA9TVsSAnZWagAAe8cQAKMtKF7FJx92Re+ol+4B\\no0f3yGdzxWUhl8B+e8eXgjYcetMe1MZpG1oQF5ocYo45mZ+ASWMzfp1caT1p\\nqt3F5rtADrL9int8ti7ICrWkIGQ3ccnrTxmtx1y9NRGANeARYjlB538xg0xy\\n2Gin+2NchK2gxkxeX0nPH7LOcLlJpXecv1p2BK8gFZfabhM4fKfcMSSeljUp\\ngzBGU/0CQp3++KsFAS/GMtgo6ZLw7wnHn0IVtDbwhA6A7hpDZar1Q5xsleui\\nUTFIJCegGBx9exO1z0fYLGjOuvOdB5790fQnGsspbVTMwpImWpjspmuH1kWI\\nTtk1ocnUnvEu1wNK2FMspUeKHNmOi5Jr6bkdGTxecXV4W/p9oEoPe3tHItL5\\nbG9gNxY4IUkHeL93D86w9DtgaYtFSCYD6+sY7mQQQdhBrilR06AugBtQG3jP\\nFpEsOLSn8vhYOQKv18CN//xaJM/uar40NTfZcQTn4VLXjUsuR4W+3eAv+qb+\\nSKEpf8YAhgXJR5EFG1m3m4VHCp40SM1oSibh3/Ib74VZmlF/aq0VcPDs9tD2\\no/MibYbQcP01cYxzpfObPXRczTH8TSl3scslcf7aVcLuhbyJtw8gblKnmXjo\\njNaZrKjGKrpKRYStMBbCt8ILkL+OZTcDJcihy1x0v4oOWT43lrHnPntOAg7D\\nqQbp\\r\\n=RhVa\\r\\n-----END PGP SIGNATURE-----\\r\\n\",\n    \"signatures\": [\n      {\n        \"keyid\": \"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA\",\n        \"sig\": \"MEUCIQDSjBYOah3mnIxnAjEKv638MySMCxhZ0J9pexriecmdogIgAOaTRZg3UeVxrs8Khzr78+n4T+10hMn2Z9DRR7k5qEM=\"\n      }\n    ]\n  },\n  \"maintainers\": [\n    {\n      \"email\": \"daniel@tschinder.de\",\n      \"name\": \"danez\"\n    },\n    {\n      \"email\": \"bng412@gmail.com\",\n      \"name\": \"existentialism\"\n    },\n    {\n      \"email\": \"hi@henryzoo.com\",\n      \"name\": \"hzoo\"\n    },\n    {\n      \"email\": \"i@jhuang.me\",\n      \"name\": \"jlhwung\"\n    },\n    {\n      \"email\": \"loganfsmyth@gmail.com\",\n      \"name\": \"loganfsmyth\"\n    },\n    {\n      \"email\": \"nicolo.ribaudo@gmail.com\",\n      \"name\": \"nicolo-ribaudo\"\n    }\n  ],\n  \"_npmUser\": {\n    \"name\": \"jlhwung\",\n    \"email\": \"i@jhuang.me\"\n  },\n  \"directories\": {},\n  \"_npmOperationalInternal\": {\n    \"host\": \"s3://npm-registry-packages\",\n    \"tmp\": \"tmp/code-frame_7.10.4_1593522734690_0.6416145193889038\"\n  },\n  \"_hasShrinkwrap\": false\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  kernel.LinuxKernelCatalogerConfig:\n    fields:\n      - key: CatalogModules\n        description: CatalogModules enables cataloging linux kernel modules (`*.ko` files) in addition to the kernel itself.\n        app_key: linux-kernel.catalog-modules\ncatalogers:\n  - ecosystem: linux # MANUAL\n    name: linux-kernel-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    config: kernel.LinuxKernelCatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - image\n      - installed\n      - kernel\n      - linux\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/kernel'\n          - '**/kernel-*'\n          - '**/vmlinux'\n          - '**/vmlinux-*'\n          - '**/vmlinuz'\n          - '**/vmlinuz-*'\n          - '**/lib/modules/**/*.ko'\n    metadata_types: # AUTO-GENERATED\n      - pkg.LinuxKernel\n      - pkg.LinuxKernelModule\n    package_types: # AUTO-GENERATED\n      - linux-kernel\n      - linux-kernel-module\n    json_schema_types: # AUTO-GENERATED\n      - LinuxKernelArchive\n      - LinuxKernelModule\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: true\n      - name: dependency.depth\n        default: []\n      - name: dependency.edges\n        default: \"\"\n      - name: dependency.kinds\n        default: []\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/cataloger.go",
    "content": "/*\nPackage kernel provides a concrete Cataloger implementation for linux kernel and module files.\n*/\npackage kernel\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ pkg.Cataloger = (*linuxKernelCataloger)(nil)\n\ntype LinuxKernelCatalogerConfig struct {\n\t// CatalogModules enables cataloging linux kernel modules (`*.ko` files) in addition to the kernel itself.\n\t// app-config: linux-kernel.catalog-modules\n\tCatalogModules bool `yaml:\"catalog-modules\" json:\"catalog-modules\" mapstructure:\"catalog-modules\"`\n}\n\ntype linuxKernelCataloger struct {\n\tcfg LinuxKernelCatalogerConfig\n}\n\nfunc DefaultLinuxKernelCatalogerConfig() LinuxKernelCatalogerConfig {\n\treturn LinuxKernelCatalogerConfig{\n\t\tCatalogModules: true,\n\t}\n}\n\nvar kernelArchiveGlobs = []string{\n\t\"**/kernel\",\n\t\"**/kernel-*\",\n\t\"**/vmlinux\",\n\t\"**/vmlinux-*\",\n\t\"**/vmlinuz\",\n\t\"**/vmlinuz-*\",\n}\n\nvar kernelModuleGlobs = []string{\n\t\"**/lib/modules/**/*.ko\",\n}\n\n// NewLinuxKernelCataloger returns a new kernel files cataloger object.\nfunc NewLinuxKernelCataloger(cfg LinuxKernelCatalogerConfig) pkg.Cataloger {\n\treturn &linuxKernelCataloger{\n\t\tcfg: cfg,\n\t}\n}\n\nfunc (l linuxKernelCataloger) Name() string {\n\treturn \"linux-kernel-cataloger\"\n}\n\nfunc (l linuxKernelCataloger) Catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar allPackages []pkg.Package\n\tvar allRelationships []artifact.Relationship\n\tvar errs error\n\n\tkernelPackages, kernelRelationships, err := generic.NewCataloger(l.Name()).WithParserByGlobs(parseLinuxKernelFile, kernelArchiveGlobs...).Catalog(ctx, resolver)\n\tif err != nil {\n\t\terrs = unknown.Join(errs, err)\n\t}\n\n\tallRelationships = append(allRelationships, kernelRelationships...)\n\tallPackages = append(allPackages, kernelPackages...)\n\n\tif l.cfg.CatalogModules {\n\t\tmodulePackages, moduleRelationships, err := generic.NewCataloger(l.Name()).WithParserByGlobs(parseLinuxKernelModuleFile, kernelModuleGlobs...).Catalog(ctx, resolver)\n\t\tif err != nil {\n\t\t\terrs = unknown.Join(errs, err)\n\t\t}\n\n\t\tallPackages = append(allPackages, modulePackages...)\n\n\t\tmoduleToKernelRelationships := createKernelToModuleRelationships(kernelPackages, modulePackages)\n\t\tallRelationships = append(allRelationships, moduleRelationships...)\n\t\tallRelationships = append(allRelationships, moduleToKernelRelationships...)\n\t}\n\n\treturn allPackages, allRelationships, errs\n}\n\nfunc createKernelToModuleRelationships(kernelPackages, modulePackages []pkg.Package) []artifact.Relationship {\n\t// organize kernel and module packages by kernel version\n\tkernelPackagesByVersion := make(map[string][]*pkg.Package)\n\tfor idx, p := range kernelPackages {\n\t\tkernelPackagesByVersion[p.Version] = append(kernelPackagesByVersion[p.Version], &kernelPackages[idx])\n\t}\n\n\tmodulesByKernelVersion := make(map[string][]*pkg.Package)\n\tfor idx, p := range modulePackages {\n\t\tm, ok := p.Metadata.(pkg.LinuxKernelModule)\n\t\tif !ok {\n\t\t\tlog.Debugf(\"linux-kernel-module package found without metadata: %s@%s\", p.Name, p.Version)\n\t\t\tcontinue\n\t\t}\n\t\tmodulesByKernelVersion[m.KernelVersion] = append(modulesByKernelVersion[m.KernelVersion], &modulePackages[idx])\n\t}\n\n\t// create relationships between kernel and modules: [module] --(depends on)--> [kernel]\n\t// since we try to use singular directions for relationships, we'll use \"dependency of\" here instead:\n\t// [kernel] --(dependency of)--> [module]\n\tvar moduleToKernelRelationships []artifact.Relationship\n\tfor kernelVersion, modules := range modulesByKernelVersion {\n\t\tkps, ok := kernelPackagesByVersion[kernelVersion]\n\t\tif !ok {\n\t\t\t// it's ok if there is a module that has no installed kernel...\n\t\t\tcontinue\n\t\t}\n\n\t\t// we don't know which kernel is the \"right\" one, so we'll create a relationship for each one\n\t\tfor _, kp := range kps {\n\t\t\tfor _, mp := range modules {\n\t\t\t\tmoduleToKernelRelationships = append(moduleToKernelRelationships, artifact.Relationship{\n\t\t\t\t\t// note: relationships should have Package objects, not pointers\n\t\t\t\t\tFrom: *kp,\n\t\t\t\t\tTo:   *mp,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\treturn moduleToKernelRelationships\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/cataloger_test.go",
    "content": "package kernel\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_KernelCataloger(t *testing.T) {\n\tctx := context.TODO()\n\tkernelPkg := pkg.Package{\n\t\tName:    \"linux-kernel\",\n\t\tVersion: \"6.0.7-301.fc37.x86_64\",\n\t\tFoundBy: \"linux-kernel-cataloger\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewVirtualLocation(\n\t\t\t\t\"/lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\",\n\t\t\t\t\"/lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\",\n\t\t\t),\n\t\t),\n\t\tType: pkg.LinuxKernelPkg,\n\t\tPURL: \"pkg:generic/linux-kernel@6.0.7-301.fc37.x86_64\",\n\t\tCPEs: []cpe.CPE{cpe.Must(\"cpe:2.3:o:linux:linux_kernel:6.0.7-301.fc37.x86_64:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource)},\n\t\tMetadata: pkg.LinuxKernel{\n\t\t\tName:            \"\",\n\t\t\tArchitecture:    \"x86\",\n\t\t\tVersion:         \"6.0.7-301.fc37.x86_64\",\n\t\t\tExtendedVersion: \"6.0.7-301.fc37.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) #1 SMP PREEMPT_DYNAMIC Fri Nov 4 18:35:48 UTC 2022\",\n\t\t\tBuildTime:       \"\",\n\t\t\tAuthor:          \"\",\n\t\t\tFormat:          \"bzImage\",\n\t\t\tRWRootFS:        false,\n\t\t\tSwapDevice:      0,\n\t\t\tRootDevice:      0,\n\t\t\tVideoMode:       \"Video mode 65535\",\n\t\t},\n\t}\n\n\tkernelModulePkg := pkg.Package{\n\t\tName:    \"ttynull\",\n\t\tVersion: \"\",\n\t\tFoundBy: \"linux-kernel-cataloger\",\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewVirtualLocation(\"/lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\",\n\t\t\t\t\"/lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\",\n\t\t\t),\n\t\t),\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPL v2\",\n\t\t\t\tfile.NewVirtualLocation(\n\t\t\t\t\t\"/lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\",\n\t\t\t\t\t\"/lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\",\n\t\t\t\t),\n\t\t\t),\n\t\t),\n\t\tType: pkg.LinuxKernelModulePkg,\n\t\tPURL: \"pkg:generic/ttynull\",\n\t\tMetadata: pkg.LinuxKernelModule{\n\t\t\tName:          \"ttynull\",\n\t\t\tVersion:       \"\",\n\t\t\tSourceVersion: \"\",\n\t\t\tLicense:       \"GPL v2\",\n\t\t\tPath:          \"/lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\",\n\t\t\tDescription:   \"\",\n\t\t\tKernelVersion: \"6.0.7-301.fc37.x86_64\",\n\t\t\tVersionMagic:  \"6.0.7-301.fc37.x86_64 SMP preempt mod_unload \",\n\t\t\tParameters:    map[string]pkg.LinuxKernelModuleParameter{},\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\tkernelPkg,\n\t\tkernelModulePkg,\n\t}\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: kernelPkg,\n\t\t\tTo:   kernelModulePkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tWithImageResolver(t, \"image-kernel-and-modules\").\n\t\tIgnoreLocationLayer().\n\t\tExpects(expectedPkgs, expectedRelationships).\n\t\tTestCataloger(t,\n\t\t\tNewLinuxKernelCataloger(\n\t\t\t\tLinuxKernelCatalogerConfig{\n\t\t\t\t\tCatalogModules: true,\n\t\t\t\t},\n\t\t\t),\n\t\t)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/package.go",
    "content": "package kernel\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst linuxKernelPackageName = \"linux-kernel\"\n\nfunc createLinuxKernelCPEs(version string) []cpe.CPE {\n\tc := cpe.NewWithAny()\n\tc.Part = \"o\"\n\tc.Product = \"linux_kernel\"\n\tc.Vendor = \"linux\"\n\tc.Version = version\n\tif cpe.ValidateString(c.String()) != nil {\n\t\treturn nil\n\t}\n\n\treturn []cpe.CPE{{Attributes: c, Source: cpe.NVDDictionaryLookupSource}}\n}\n\nfunc newLinuxKernelPackage(metadata pkg.LinuxKernel, archiveLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      linuxKernelPackageName,\n\t\tVersion:   metadata.Version,\n\t\tLocations: file.NewLocationSet(archiveLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tPURL:      packageURL(linuxKernelPackageName, metadata.Version),\n\t\tType:      pkg.LinuxKernelPkg,\n\t\tMetadata:  metadata,\n\t\tCPEs:      createLinuxKernelCPEs(metadata.Version),\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newLinuxKernelModulePackage(ctx context.Context, metadata pkg.LinuxKernelModule, kmLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      metadata.Name,\n\t\tVersion:   metadata.Version,\n\t\tLocations: file.NewLocationSet(kmLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, kmLocation, metadata.License)...),\n\t\tPURL:      packageURL(metadata.Name, metadata.Version),\n\t\tType:      pkg.LinuxKernelModulePkg,\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\n// packageURL returns the PURL for the specific Kernel package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, version string) string {\n\tvar namespace string\n\n\tfields := strings.SplitN(name, \"/\", 2)\n\tif len(fields) > 1 {\n\t\tnamespace = fields[0]\n\t\tname = fields[1]\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeGeneric,\n\t\tnamespace,\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/parse_linux_kernel_file.go",
    "content": "package kernel\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/deitch/magic/pkg/magic\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst linuxKernelMagicName = \"Linux kernel\"\n\nfunc parseLinuxKernelFile(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tunionReader, err := unionreader.GetUnionReader(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get union reader for file: %w\", err)\n\t}\n\tmagicType, err := magic.GetType(unionReader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get magic type for file: %w\", err)\n\t}\n\tif len(magicType) < 1 || magicType[0] != linuxKernelMagicName {\n\t\treturn nil, nil, nil\n\t}\n\tmetadata := parseLinuxKernelMetadata(magicType)\n\tif metadata.Version == \"\" {\n\t\treturn nil, nil, nil\n\t}\n\n\treturn []pkg.Package{\n\t\tnewLinuxKernelPackage(\n\t\t\tmetadata,\n\t\t\treader.Location,\n\t\t),\n\t}, nil, nil\n}\n\nfunc parseLinuxKernelMetadata(magicType []string) (p pkg.LinuxKernel) {\n\t// Linux kernel x86 boot executable bzImage,\n\t// version 5.10.121-linuxkit (root@buildkitsandbox) #1 SMP Fri Dec 2 10:35:42 UTC 2022,\n\t// RO-rootFS,\n\t// swap_dev 0XA,\n\t// Normal VGA\n\tfor _, t := range magicType {\n\t\tswitch {\n\t\tcase strings.HasPrefix(t, \"x86 \"):\n\t\t\tp.Architecture = \"x86\"\n\t\tcase strings.Contains(t, \"ARM64 \"):\n\t\t\tp.Architecture = \"arm64\"\n\t\tcase strings.Contains(t, \"ARM \"):\n\t\t\tp.Architecture = \"arm\"\n\t\tcase t == \"bzImage\":\n\t\t\tp.Format = \"bzImage\"\n\t\tcase t == \"zImage\":\n\t\t\tp.Format = \"zImage\"\n\t\tcase strings.HasPrefix(t, \"version \"):\n\t\t\tp.ExtendedVersion = strings.TrimPrefix(t, \"version \")\n\t\t\tfields := strings.Fields(p.ExtendedVersion)\n\t\t\tif len(fields) > 0 {\n\t\t\t\tp.Version = fields[0]\n\t\t\t}\n\t\tcase strings.Contains(t, \"rootFS\") && strings.HasPrefix(t, \"RW-\"):\n\t\t\tp.RWRootFS = true\n\t\tcase strings.HasPrefix(t, \"swap_dev \"):\n\t\t\tswapDevStr := strings.TrimPrefix(t, \"swap_dev \")\n\t\t\tswapDev, err := strconv.ParseInt(swapDevStr, 16, 32)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to parse swap device: %s\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tp.SwapDevice = int(swapDev)\n\t\tcase strings.HasPrefix(t, \"root_dev \"):\n\t\t\trootDevStr := strings.TrimPrefix(t, \"root_dev \")\n\t\t\trootDev, err := strconv.ParseInt(rootDevStr, 16, 32)\n\t\t\tif err != nil {\n\t\t\t\tlog.Debugf(\"unable to parse root device: %s\", err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tp.SwapDevice = int(rootDev)\n\t\tcase strings.Contains(t, \"VGA\") || strings.Contains(t, \"Video\"):\n\t\t\tp.VideoMode = t\n\t\t}\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/parse_linux_kernel_module_file.go",
    "content": "package kernel\n\nimport (\n\t\"context\"\n\t\"debug/elf\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst modinfoName = \".modinfo\"\n\nfunc parseLinuxKernelModuleFile(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tunionReader, err := unionreader.GetUnionReader(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to get union reader for file: %w\", err)\n\t}\n\tmetadata, err := parseLinuxKernelModuleMetadata(unionReader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse kernel module metadata: %w\", err)\n\t}\n\tif metadata == nil || metadata.KernelVersion == \"\" {\n\t\treturn nil, nil, nil\n\t}\n\n\tmetadata.Path = reader.RealPath\n\n\treturn []pkg.Package{\n\t\tnewLinuxKernelModulePackage(\n\t\t\tctx,\n\t\t\t*metadata,\n\t\t\treader.Location,\n\t\t),\n\t}, nil, nil\n}\n\nfunc parseLinuxKernelModuleMetadata(r unionreader.UnionReader) (p *pkg.LinuxKernelModule, err error) {\n\t// filename:       /lib/modules/5.15.0-1031-aws/kernel/zfs/zzstd.ko\n\t// version:        1.4.5a\n\t// license:        Dual BSD/GPL\n\t// description:    ZSTD Compression for ZFS\n\t// srcversion:     F1F818A6E016499AB7F826E\n\t// depends:        spl\n\t// retpoline:      Y\n\t// name:           zzstd\n\t// vermagic:       5.15.0-1031-aws SMP mod_unload modversions\n\t// sig_id:         PKCS#7\n\t// signer:         Build time autogenerated kernel key\n\t// sig_key:        49:A9:55:87:90:5B:33:41:AF:C0:A7:BE:2A:71:6C:D2:CA:34:E0:AE\n\t// sig_hashalgo:   sha512\n\t//\n\t// OR\n\t//\n\t// filename:       /home/ubuntu/eve/rootfs/lib/modules/5.10.121-linuxkit/kernel/drivers/net/wireless/realtek/rtl8821cu/8821cu.ko\n\t// version:        v5.4.1_28754.20180921_COEX20180712-3232\n\t// author:         Realtek Semiconductor Corp.\n\t// description:    Realtek Wireless Lan Driver\n\t// license:        GPL\n\t// srcversion:     960CCC648A0E0369171A2C9\n\t// depends:        cfg80211\n\t// retpoline:      Y\n\t// name:           8821cu\n\t// vermagic:       5.10.121-linuxkit SMP mod_unload\n\tp = &pkg.LinuxKernelModule{\n\t\tParameters: make(map[string]pkg.LinuxKernelModuleParameter),\n\t}\n\tf, err := elf.NewFile(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer f.Close()\n\tmodinfo := f.Section(modinfoName)\n\tif modinfo == nil {\n\t\treturn nil, fmt.Errorf(\"no section %s\", modinfoName)\n\t}\n\tb, err := modinfo.Data()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error reading secion %s: %w\", modinfoName, err)\n\t}\n\tvar (\n\t\tentry []byte\n\t)\n\tfor _, b2 := range b {\n\t\tif b2 == 0 {\n\t\t\tif err := addLinuxKernelModuleEntry(p, entry); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"error parsing entry %s: %w\", string(entry), err)\n\t\t\t}\n\t\t\tentry = []byte{}\n\t\t\tcontinue\n\t\t}\n\t\tentry = append(entry, b2)\n\t}\n\tif err := addLinuxKernelModuleEntry(p, entry); err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing entry %s: %w\", string(entry), err)\n\t}\n\n\treturn p, nil\n}\n\nfunc addLinuxKernelModuleEntry(k *pkg.LinuxKernelModule, entry []byte) error {\n\tif len(entry) == 0 {\n\t\treturn nil\n\t}\n\tvar key, value string\n\tparts := strings.SplitN(string(entry), \"=\", 2)\n\tif len(parts) > 0 {\n\t\tkey = parts[0]\n\t}\n\tif len(parts) > 1 {\n\t\tvalue = parts[1]\n\t}\n\n\tswitch key {\n\tcase \"version\":\n\t\tk.Version = value\n\tcase \"license\":\n\t\tk.License = value\n\tcase \"author\":\n\t\tk.Author = value\n\tcase \"name\":\n\t\tk.Name = value\n\tcase \"vermagic\":\n\t\tk.VersionMagic = value\n\t\tfields := strings.Fields(value)\n\t\tif len(fields) > 0 {\n\t\t\tk.KernelVersion = fields[0]\n\t\t}\n\tcase \"srcversion\":\n\t\tk.SourceVersion = value\n\tcase \"description\":\n\t\tk.Description = value\n\tcase \"parm\":\n\t\tparts := strings.SplitN(value, \":\", 2)\n\t\tif len(parts) != 2 {\n\t\t\treturn fmt.Errorf(\"invalid parm entry: %s\", value)\n\t\t}\n\t\tif m, ok := k.Parameters[parts[0]]; !ok {\n\t\t\tk.Parameters[parts[0]] = pkg.LinuxKernelModuleParameter{Description: parts[1]}\n\t\t} else {\n\t\t\tm.Description = parts[1]\n\t\t}\n\tcase \"parmtype\":\n\t\tparts := strings.SplitN(value, \":\", 2)\n\t\tif len(parts) != 2 {\n\t\t\treturn fmt.Errorf(\"invalid parmtype entry: %s\", value)\n\t\t}\n\t\tif m, ok := k.Parameters[parts[0]]; !ok {\n\t\t\tk.Parameters[parts[0]] = pkg.LinuxKernelModuleParameter{Type: parts[1]}\n\t\t} else {\n\t\t\tm.Type = parts[1]\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/testdata/Makefile",
    "content": "FINGERPRINT_FILE=cache.fingerprint\n\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures:\n\t@echo \"nothing to do\"\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find Makefile **/Dockerfile -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\nclean:\n\trm -f $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "syft/pkg/cataloger/kernel/testdata/image-kernel-and-modules/Dockerfile",
    "content": "FROM fedora:37@sha256:3f987b7657e944cf87a129cc262982d4f80e38bd98f7db313ccaf90ca7069dd2\n\nRUN dnf install 'dnf-command(download)' cpio xz -y\n# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-6.0.7-301.fc37.x86_64.rpm\n# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-modules-6.0.7-301.fc37.x86_64.rpm\nRUN dnf download kernel-core-6.0.7-301.fc37 kernel-modules-6.0.7-301.fc37 -y\n\nRUN rpm2cpio kernel-core-*.rpm | cpio -t && \\\n    rpm2cpio kernel-core-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\n\nRUN rpm2cpio kernel-modules-*.rpm | cpio -t && \\\n    rpm2cpio kernel-modules-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz\n\nRUN unxz /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz\n\nFROM scratch\n\nCOPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz\nCOPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: lua # MANUAL\n    name: lua-rock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/lua/cataloger.go\n      function: NewPackageCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - language\n      - lua\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseRockspec\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.rockspec'\n        metadata_types: # AUTO-GENERATED\n          - pkg.LuaRocksPackage\n        package_types: # AUTO-GENERATED\n          - lua-rocks\n        json_schema_types: # AUTO-GENERATED\n          - LuarocksPackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/cataloger.go",
    "content": "/*\nPackage lua provides a concrete Cataloger implementation for packages relating to the Lua language ecosystem.\n*/\npackage lua\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewPackageCataloger returns a new cataloger object for Lua ROck.\nfunc NewPackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"lua-rock-cataloger\").\n\t\tWithParserByGlobs(parseRockspec, \"**/*.rockspec\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/cataloger_test.go",
    "content": "package lua\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_PackageCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain package files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"lua/package.rockspec\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPackageCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/package.go",
    "content": "package lua\n\nimport (\n\t\"context\"\n\t\"path\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newLuaRocksPackage(ctx context.Context, resolver file.Resolver, u luaRocksPackage, indexLocation file.Location) pkg.Package {\n\tlicense := pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, u.License)\n\tif len(license) == 0 {\n\t\tlicense = licenses.FindInDirs(ctx, resolver, path.Dir(indexLocation.Path()))\n\t}\n\tp := pkg.Package{\n\t\tName:      u.Name,\n\t\tVersion:   u.Version,\n\t\tPURL:      packageURL(u.Name, u.Version),\n\t\tLocations: file.NewLocationSet(indexLocation),\n\t\tLanguage:  pkg.Lua,\n\t\tLicenses:  pkg.NewLicenseSet(license...),\n\t\tType:      pkg.LuaRocksPkg,\n\t\tMetadata: pkg.LuaRocksPackage{\n\t\t\tName:         u.Name,\n\t\t\tVersion:      u.Version,\n\t\t\tLicense:      u.License,\n\t\t\tHomepage:     u.Homepage,\n\t\t\tDescription:  u.Description,\n\t\t\tURL:          u.Repository.URL,\n\t\t\tDependencies: u.Dependencies,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\n// packageURL returns the PURL for the specific Lua Rock package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, version string) string {\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeLuaRocks,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/package_test.go",
    "content": "package lua\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/packageurl-go\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttests := []struct {\n\t\ttestName string\n\t\tname     string\n\t\tversion  string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"kong\",\n\t\t\tversion:  \"3.7.0-0\",\n\t\t\texpected: \"pkg:luarocks/kong@3.7.0-0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.testName, func(t *testing.T) {\n\t\t\tactual := packageURL(tt.name, tt.version)\n\t\t\tassert.Equal(t, tt.expected, actual)\n\t\t\tdecoded, err := packageurl.FromString(actual)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.name, decoded.Name)\n\t\t\tassert.Equal(t, tt.version, decoded.Version)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/parse_rockspec.go",
    "content": "package lua\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype luaRocksPackage struct {\n\tName         string\n\tVersion      string\n\tLicense      string\n\tHomepage     string\n\tDescription  string\n\tDependencies map[string]string\n\tRepository   repository\n}\n\ntype repository struct {\n\tURL string\n}\n\n// parseRockspec parses a package.rockspec and returns the discovered Lua packages.\nfunc parseRockspec(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdoc, err := parseRockspecData(reader)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to parse Rockspec app\")\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse Rockspec app: %w\", err)\n\t}\n\n\tvar name, version, license, homepage, description, url string\n\tvar dependencies map[string]string\n\n\tfor _, node := range doc.value {\n\t\tswitch node.key {\n\t\tcase \"package\":\n\t\t\tname = node.String()\n\t\tcase \"version\":\n\t\t\tversion = node.String()\n\t\tcase \"source\":\n\t\t\tfor _, child := range node.Slice() {\n\t\t\t\tif child.key == \"url\" {\n\t\t\t\t\turl = child.String()\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"description\":\n\t\t\tfor _, child := range node.Slice() {\n\t\t\t\tswitch child.key {\n\t\t\t\tcase \"summary\":\n\t\t\t\t\tdescription = child.String()\n\t\t\t\tcase \"homepage\":\n\t\t\t\t\thomepage = child.String()\n\t\t\t\tcase \"license\":\n\t\t\t\t\tlicense = strings.ReplaceAll(child.String(), \" \", \"-\")\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"dependencies\":\n\t\t\tif dependencies == nil {\n\t\t\t\tdependencies = make(map[string]string)\n\t\t\t}\n\t\t\tfor _, child := range node.Slice() {\n\t\t\t\tdepName, depVersion := parseDependency(child.String())\n\t\t\t\tif depName != \"\" {\n\t\t\t\t\tdependencies[depName] = depVersion\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tp := newLuaRocksPackage(\n\t\tctx,\n\t\tresolver,\n\t\tluaRocksPackage{\n\t\t\tName:    name,\n\t\t\tVersion: version,\n\t\t\tLicense: license,\n\t\t\tRepository: repository{\n\t\t\t\tURL: url,\n\t\t\t},\n\t\t\tHomepage:     homepage,\n\t\t\tDescription:  description,\n\t\t\tDependencies: dependencies,\n\t\t},\n\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t)\n\n\treturn []pkg.Package{p}, nil, nil\n}\n\n// parseDependency extracts the package name and version constraint from a dependency string.\n// Examples:\n//   - \"lua >= 5.1\" -> (\"lua\", \">= 5.1\")\n//   - \"lpeg\" -> (\"lpeg\", \"\")\n//   - \"lualogging >= 1.4.0, < 2.0.0\" -> (\"lualogging\", \">= 1.4.0, < 2.0.0\")\nfunc parseDependency(dep string) (name string, version string) {\n\tdep = strings.TrimSpace(dep)\n\tif dep == \"\" {\n\t\treturn \"\", \"\"\n\t}\n\n\t// Find the first space which separates package name from version constraint\n\tparts := strings.SplitN(dep, \" \", 2)\n\tname = strings.TrimSpace(parts[0])\n\n\tif len(parts) == 2 {\n\t\tversion = strings.TrimSpace(parts[1])\n\t}\n\n\treturn name, version\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/parse_rockspec_test.go",
    "content": "package lua\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseRockspec(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tFixture     string\n\t\tExpectedPkg pkg.Package\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/rockspec/kong-3.7.0-0.rockspec\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"kong\",\n\t\t\t\tVersion:  \"3.7.0-0\",\n\t\t\t\tPURL:     \"pkg:luarocks/kong@3.7.0-0\",\n\t\t\t\tType:     pkg.LuaRocksPkg,\n\t\t\t\tLanguage: pkg.Lua,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache-2.0\", file.NewLocation(\"testdata/rockspec/kong-3.7.0-0.rockspec\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.LuaRocksPackage{\n\t\t\t\t\tName:        \"kong\",\n\t\t\t\t\tVersion:     \"3.7.0-0\",\n\t\t\t\t\tLicense:     \"Apache-2.0\",\n\t\t\t\t\tHomepage:    \"https://konghq.com\",\n\t\t\t\t\tDescription: \"Kong is a scalable and customizable API Management Layer built on top of Nginx.\",\n\t\t\t\t\tURL:         \"git+https://github.com/Kong/kong.git\",\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"inspect\":               \"== 3.1.3\",\n\t\t\t\t\t\t\"luasec\":                \"== 1.3.2\",\n\t\t\t\t\t\t\"luasocket\":             \"== 3.0-rc1\",\n\t\t\t\t\t\t\"penlight\":              \"== 1.13.1\",\n\t\t\t\t\t\t\"lua-resty-http\":        \"== 0.17.1\",\n\t\t\t\t\t\t\"lua-resty-jit-uuid\":    \"== 0.0.7\",\n\t\t\t\t\t\t\"lua-ffi-zlib\":          \"== 0.6\",\n\t\t\t\t\t\t\"multipart\":             \"== 0.5.9\",\n\t\t\t\t\t\t\"version\":               \"== 1.0.1\",\n\t\t\t\t\t\t\"kong-lapis\":            \"== 1.16.0.1\",\n\t\t\t\t\t\t\"kong-pgmoon\":           \"== 1.16.2\",\n\t\t\t\t\t\t\"luatz\":                 \"== 0.4\",\n\t\t\t\t\t\t\"lua_system_constants\":  \"== 0.1.4\",\n\t\t\t\t\t\t\"lyaml\":                 \"== 6.2.8\",\n\t\t\t\t\t\t\"luasyslog\":             \"== 2.0.1\",\n\t\t\t\t\t\t\"lua_pack\":              \"== 2.0.0\",\n\t\t\t\t\t\t\"binaryheap\":            \">= 0.4\",\n\t\t\t\t\t\t\"luaxxhash\":             \">= 1.0\",\n\t\t\t\t\t\t\"lua-protobuf\":          \"== 0.5.0\",\n\t\t\t\t\t\t\"lua-resty-healthcheck\": \"== 3.0.1\",\n\t\t\t\t\t\t\"lua-messagepack\":       \"== 0.5.4\",\n\t\t\t\t\t\t\"lua-resty-aws\":         \"== 1.3.6\",\n\t\t\t\t\t\t\"lua-resty-openssl\":     \"== 1.2.0\",\n\t\t\t\t\t\t\"lua-resty-counter\":     \"== 0.2.1\",\n\t\t\t\t\t\t\"lua-resty-ipmatcher\":   \"== 0.6.1\",\n\t\t\t\t\t\t\"lua-resty-acme\":        \"== 0.12.0\",\n\t\t\t\t\t\t\"lua-resty-session\":     \"== 4.0.5\",\n\t\t\t\t\t\t\"lua-resty-timer-ng\":    \"== 0.2.6\",\n\t\t\t\t\t\t\"lpeg\":                  \"== 1.1.0\",\n\t\t\t\t\t\t\"lua-resty-ljsonschema\": \"== 1.1.6-2\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/rockspec/lpeg-1.0.2-1.rockspec\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"LPeg\",\n\t\t\t\tVersion:  \"1.0.2-1\",\n\t\t\t\tPURL:     \"pkg:luarocks/LPeg@1.0.2-1\",\n\t\t\t\tType:     pkg.LuaRocksPkg,\n\t\t\t\tLanguage: pkg.Lua,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT/X11\", file.NewLocation(\"testdata/rockspec/lpeg-1.0.2-1.rockspec\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.LuaRocksPackage{\n\t\t\t\t\tName:        \"LPeg\",\n\t\t\t\t\tVersion:     \"1.0.2-1\",\n\t\t\t\t\tLicense:     \"MIT/X11\",\n\t\t\t\t\tHomepage:    \"http://www.inf.puc-rio.br/~roberto/lpeg.html\",\n\t\t\t\t\tDescription: \"Parsing Expression Grammars For Lua\",\n\t\t\t\t\tURL:         \"http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz\",\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"lua\": \">= 5.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/rockspec/kong-pgmoon-1.16.2-1.rockspec\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"kong-pgmoon\",\n\t\t\t\tVersion:  \"1.16.2-1\",\n\t\t\t\tPURL:     \"pkg:luarocks/kong-pgmoon@1.16.2-1\",\n\t\t\t\tType:     pkg.LuaRocksPkg,\n\t\t\t\tLanguage: pkg.Lua,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"testdata/rockspec/kong-pgmoon-1.16.2-1.rockspec\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.LuaRocksPackage{\n\t\t\t\t\tName:        \"kong-pgmoon\",\n\t\t\t\t\tVersion:     \"1.16.2-1\",\n\t\t\t\t\tLicense:     \"MIT\",\n\t\t\t\t\tHomepage:    \"https://github.com/Kong/pgmoon\",\n\t\t\t\t\tDescription: \"Postgres driver for OpenResty and Lua\",\n\t\t\t\t\tURL:         \"git+https://github.com/kong/pgmoon.git\",\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"lua\":  \">= 5.1\",\n\t\t\t\t\t\t\"lpeg\": \"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/rockspec/luasyslog-2.0.1-1.rockspec\",\n\t\t\tExpectedPkg: pkg.Package{\n\t\t\t\tName:     \"luasyslog\",\n\t\t\t\tVersion:  \"2.0.1-1\",\n\t\t\t\tPURL:     \"pkg:luarocks/luasyslog@2.0.1-1\",\n\t\t\t\tType:     pkg.LuaRocksPkg,\n\t\t\t\tLanguage: pkg.Lua,\n\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT/X11\", file.NewLocation(\"testdata/rockspec/luasyslog-2.0.1-1.rockspec\")),\n\t\t\t\t),\n\t\t\t\tMetadata: pkg.LuaRocksPackage{\n\t\t\t\t\tName:        \"luasyslog\",\n\t\t\t\t\tVersion:     \"2.0.1-1\",\n\t\t\t\t\tLicense:     \"MIT/X11\",\n\t\t\t\t\tHomepage:    \"https://github.com/lunarmodules/luasyslog\",\n\t\t\t\t\tDescription: \"Syslog logging for Lua\",\n\t\t\t\t\tURL:         \"git://github.com/lunarmodules/luasyslog.git\",\n\t\t\t\t\tDependencies: map[string]string{\n\t\t\t\t\t\t\"lua\":        \">= 5.1\",\n\t\t\t\t\t\t\"lualogging\": \">= 1.4.0, < 2.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\ttest.ExpectedPkg.Locations.Add(file.NewLocation(test.Fixture))\n\t\t\tpkgtest.TestFileParser(t, test.Fixture, parseRockspec, []pkg.Package{test.ExpectedPkg}, nil)\n\t\t})\n\t}\n}\n\nfunc Test_corruptRockspec(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/corrupt/bad-1.23.0-0.rockspec\").\n\t\tWithError().\n\t\tTestParser(t, parseRockspec)\n}\n\nfunc Test_parseDependency(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tinput           string\n\t\texpectedName    string\n\t\texpectedVersion string\n\t}{\n\t\t{\n\t\t\tname:            \"dependency with >= constraint\",\n\t\t\tinput:           \"lua >= 5.1\",\n\t\t\texpectedName:    \"lua\",\n\t\t\texpectedVersion: \">= 5.1\",\n\t\t},\n\t\t{\n\t\t\tname:            \"dependency with == constraint\",\n\t\t\tinput:           \"inspect == 3.1.3\",\n\t\t\texpectedName:    \"inspect\",\n\t\t\texpectedVersion: \"== 3.1.3\",\n\t\t},\n\t\t{\n\t\t\tname:            \"dependency without constraint\",\n\t\t\tinput:           \"lpeg\",\n\t\t\texpectedName:    \"lpeg\",\n\t\t\texpectedVersion: \"\",\n\t\t},\n\t\t{\n\t\t\tname:            \"dependency with complex constraint\",\n\t\t\tinput:           \"lualogging >= 1.4.0, < 2.0.0\",\n\t\t\texpectedName:    \"lualogging\",\n\t\t\texpectedVersion: \">= 1.4.0, < 2.0.0\",\n\t\t},\n\t\t{\n\t\t\tname:            \"dependency with version including dash\",\n\t\t\tinput:           \"luasocket == 3.0-rc1\",\n\t\t\texpectedName:    \"luasocket\",\n\t\t\texpectedVersion: \"== 3.0-rc1\",\n\t\t},\n\t\t{\n\t\t\tname:            \"dependency with extra whitespace\",\n\t\t\tinput:           \"  kong-pgmoon   ==   1.16.2  \",\n\t\t\texpectedName:    \"kong-pgmoon\",\n\t\t\texpectedVersion: \"==   1.16.2\",\n\t\t},\n\t\t{\n\t\t\tname:            \"empty string\",\n\t\t\tinput:           \"\",\n\t\t\texpectedName:    \"\",\n\t\t\texpectedVersion: \"\",\n\t\t},\n\t\t{\n\t\t\tname:            \"whitespace only\",\n\t\t\tinput:           \"   \",\n\t\t\texpectedName:    \"\",\n\t\t\texpectedVersion: \"\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactualName, actualVersion := parseDependency(test.input)\n\t\t\tassert.Equal(t, test.expectedName, actualName)\n\t\t\tassert.Equal(t, test.expectedVersion, actualVersion)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/rockspec_parser.go",
    "content": "package lua\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/internal/parsing\"\n)\n\ntype rockspec struct {\n\tvalue []rockspecNode\n}\n\ntype rockspecNode struct {\n\tkey   string\n\tvalue interface{}\n}\n\nfunc (r rockspecNode) Slice() []rockspecNode {\n\tout, ok := r.value.([]rockspecNode)\n\tif ok {\n\t\treturn out\n\t}\n\treturn nil\n}\n\nfunc (r rockspecNode) String() string {\n\tout, ok := r.value.(string)\n\tif ok {\n\t\treturn out\n\t}\n\treturn \"\"\n}\n\nvar noReturn = rockspec{\n\tvalue: nil,\n}\n\n// parseRockspec basic parser for rockspec\nfunc parseRockspecData(reader io.Reader) (rockspec, error) {\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // custom parser requires []byte\n\tif err != nil {\n\t\treturn noReturn, err\n\t}\n\n\ti := 0\n\tlocals := make(map[string]string)\n\tblocks, err := parseRockspecBlock(data, &i, locals)\n\n\tif err != nil {\n\t\treturn noReturn, err\n\t}\n\n\treturn rockspec{\n\t\tvalue: blocks,\n\t}, nil\n}\n\nfunc parseRockspecBlock(data []byte, i *int, locals map[string]string) ([]rockspecNode, error) {\n\tvar out []rockspecNode\n\tvar iterator func(data []byte, i *int, locals map[string]string) (*rockspecNode, error)\n\n\tparsing.SkipWhitespace(data, i)\n\n\tif *i >= len(data) && len(out) > 0 {\n\t\treturn nil, fmt.Errorf(\"unexpected end of block at %d\", *i)\n\t}\n\n\tc := data[*i]\n\n\t// Block starting with a comment\n\tif c == '-' {\n\t\tparseComment(data, i)\n\t\tparsing.SkipWhitespace(data, i)\n\t\tc = data[*i]\n\t}\n\n\tswitch {\n\tcase c == '\"' || c == '\\'':\n\t\titerator = parseRockspecListItem\n\tcase isLiteral(c):\n\t\titerator = parseRockspecNode\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t}\n\n\tfor *i < len(data) {\n\t\titem, err := iterator(data, i, locals)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"%w\\n%s\", err, parsing.PrintError(data, *i))\n\t\t}\n\n\t\tparsing.SkipWhitespace(data, i)\n\n\t\tif (item.key == \",\" || item.key == \"-\") && item.value == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif item.key == \"}\" && item.value == nil {\n\t\t\tbreak\n\t\t}\n\n\t\tout = append(out, *item)\n\t}\n\n\treturn out, nil\n}\n\n//nolint:funlen, gocognit\nfunc parseRockspecNode(data []byte, i *int, locals map[string]string) (*rockspecNode, error) {\n\tparsing.SkipWhitespace(data, i)\n\n\tif *i >= len(data) {\n\t\treturn nil, fmt.Errorf(\"unexpected end of node at %d\", *i)\n\t}\n\n\tc := data[*i]\n\n\tif c == ',' || c == ';' || c == '}' {\n\t\t*i++\n\t\treturn &rockspecNode{\n\t\t\tkey: string(c),\n\t\t}, nil\n\t}\n\n\tif c == '-' {\n\t\toffset := *i + 1\n\t\tif offset >= len(data) {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\t\tc2 := data[offset]\n\n\t\tif c2 != '-' {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c2))\n\t\t}\n\n\t\tparseComment(data, i)\n\t\treturn &rockspecNode{\n\t\t\tkey: string(c),\n\t\t}, nil\n\t}\n\n\tif !isLiteral(c) {\n\t\treturn nil, fmt.Errorf(\"invalid literal character: %s\", string(c))\n\t}\n\n\tkey, err := parseRockspecLiteral(data, i, locals)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tparsing.SkipWhitespace(data, i)\n\n\tif *i >= len(data) {\n\t\treturn nil, fmt.Errorf(\"unexpected end of node at %d\", *i)\n\t}\n\n\tif key == \"local\" {\n\t\terr := parseLocal(data, i, locals)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &rockspecNode{\n\t\t\tkey: \",\",\n\t\t}, nil\n\t}\n\n\tc = data[*i]\n\tif c != '=' {\n\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t}\n\n\t*i++\n\tparsing.SkipWhitespace(data, i)\n\n\tif *i >= len(data) {\n\t\treturn nil, fmt.Errorf(\"unexpected end of node at %d\", *i)\n\t}\n\n\tif key == \"build\" {\n\t\tskipBuildNode(data, i)\n\n\t\treturn &rockspecNode{\n\t\t\tkey: \",\",\n\t\t}, nil\n\t}\n\n\tc = data[*i]\n\n\tswitch c {\n\tcase '{':\n\t\toffset := *i + 1\n\t\tparsing.SkipWhitespace(data, &offset)\n\t\tif offset >= len(data) {\n\t\t\treturn nil, fmt.Errorf(\"unterminated block at %d\", *i)\n\t\t}\n\t\tc2 := data[offset]\n\n\t\t// Add support for empty lists\n\t\tif c == '{' && c2 == '}' {\n\t\t\t*i = offset + 1\n\t\t\treturn &rockspecNode{}, nil\n\t\t}\n\n\t\t*i = offset\n\t\tparsing.SkipWhitespace(data, i)\n\n\t\tobj, err := parseRockspecBlock(data, i, locals)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvalue := obj\n\n\t\treturn &rockspecNode{\n\t\t\tkey, value,\n\t\t}, nil\n\tcase '(':\n\t\tskipExpression(data, i)\n\t\treturn &rockspecNode{\n\t\t\tkey: \",\",\n\t\t}, nil\n\tcase '[':\n\t\toffset := *i + 1\n\t\tif offset >= len(data) {\n\t\t\treturn nil, fmt.Errorf(\"unterminated block at %d\", *i)\n\t\t}\n\t\tc2 := data[offset]\n\n\t\tif c2 != '[' {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\n\t\t*i++\n\n\t\tstr, err := parseRockspecString(data, i, locals)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvalue := str.String()\n\n\t\tc = data[*i]\n\n\t\tif c != ']' {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\n\t\t*i++\n\n\t\treturn &rockspecNode{\n\t\t\tkey, value,\n\t\t}, nil\n\t}\n\n\tvalue, err := parseRockspecValue(data, i, locals, \"\")\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &rockspecNode{\n\t\tkey, value,\n\t}, nil\n}\n\nfunc parseRockspecListItem(data []byte, i *int, locals map[string]string) (*rockspecNode, error) {\n\tparsing.SkipWhitespace(data, i)\n\n\tif *i >= len(data) {\n\t\treturn nil, fmt.Errorf(\"unexpected end of block at %d\", *i)\n\t}\n\n\tc := data[*i]\n\tif c == ',' || c == ';' || c == '}' {\n\t\t*i++\n\t\treturn &rockspecNode{\n\t\t\tkey: string(c),\n\t\t}, nil\n\t}\n\n\tif c == '-' {\n\t\toffset := *i + 1\n\t\tif offset >= len(data) {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\t\tc2 := data[offset]\n\n\t\tif c2 != '-' {\n\t\t\treturn nil, fmt.Errorf(\"unexpected character: %s\", string(c2))\n\t\t}\n\n\t\tparseComment(data, i)\n\t\treturn &rockspecNode{\n\t\t\tkey: string(c),\n\t\t}, nil\n\t}\n\n\tstr, err := parseRockspecString(data, i, locals)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn str, nil\n}\n\nfunc parseRockspecValue(data []byte, i *int, locals map[string]string, initialValue string) (string, error) {\n\tc := data[*i]\n\n\tvar value string\n\n\tswitch c {\n\tcase '\"', '\\'':\n\t\tstr, err := parseRockspecString(data, i, locals)\n\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tvalue = str.value.(string)\n\tdefault:\n\t\tlocal, err := parseRockspecLiteral(data, i, locals)\n\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tl, ok := locals[local]\n\n\t\tif !ok {\n\t\t\treturn \"\", fmt.Errorf(\"unknown local: %s\", local)\n\t\t}\n\n\t\tvalue = l\n\t}\n\n\tvalue = fmt.Sprintf(\"%s%s\", initialValue, value)\n\n\tskipWhitespaceNoNewLine(data, i)\n\n\tif len(data) > *i+2 {\n\t\tif data[*i] == '.' && data[*i+1] == '.' {\n\t\t\t*i += 2\n\n\t\t\tskipWhitespaceNoNewLine(data, i)\n\n\t\t\tif *i >= len(data) {\n\t\t\t\treturn \"\", fmt.Errorf(\"unexpected end of expression at %d\", *i)\n\t\t\t}\n\n\t\t\tv, err := parseRockspecValue(data, i, locals, value)\n\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\n\t\t\tvalue = v\n\t\t}\n\t}\n\n\treturn value, nil\n}\n\nfunc parseRockspecLiteral(data []byte, i *int, locals map[string]string) (string, error) {\n\tvar buf bytes.Buffer\nout:\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\t\tswitch {\n\t\tcase c == '[':\n\t\t\t*i++\n\t\t\tnested, err := parseRockspecString(data, i, locals)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tc = data[*i]\n\t\t\tif c != ']' {\n\t\t\t\treturn \"\", fmt.Errorf(\"unterminated literal at %d\", *i)\n\t\t\t}\n\t\t\tfmt.Fprintf(&buf, \"[\\\"%s\\\"]\", nested.String())\n\t\tcase isLiteral(c):\n\t\t\tbuf.WriteByte(c)\n\t\tdefault:\n\t\t\tbreak out\n\t\t}\n\t\t*i++\n\t}\n\treturn buf.String(), nil\n}\n\nfunc parseRockspecString(data []byte, i *int, _ map[string]string) (*rockspecNode, error) {\n\tdelim := data[*i]\n\tvar endDelim byte\n\tswitch delim {\n\tcase '\"', '\\'':\n\t\tendDelim = delim\n\tcase '[':\n\t\tendDelim = ']'\n\t}\n\n\t*i++\n\tvar buf bytes.Buffer\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\t\tif c == endDelim {\n\t\t\t*i++\n\t\t\tstr := rockspecNode{value: buf.String()}\n\t\t\treturn &str, nil\n\t\t}\n\t\tbuf.WriteByte(c)\n\t\t*i++\n\t}\n\treturn nil, fmt.Errorf(\"unterminated string at %d\", *i)\n}\n\nfunc parseComment(data []byte, i *int) {\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\n\t\t*i++\n\n\t\t// Rest of a line is a comment. Deals with CR, LF and CR/LF\n\t\tif c == '\\n' {\n\t\t\tbreak\n\t\t} else if c == '\\r' && data[*i] == '\\n' {\n\t\t\t*i++\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n//nolint:funlen\nfunc parseLocal(data []byte, i *int, locals map[string]string) error {\n\tkeys := []string{}\n\tvalues := []string{}\n\nkeys:\n\tfor {\n\t\tparsing.SkipWhitespace(data, i)\n\n\t\tkey, err := parseRockspecLiteral(data, i, locals)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif key == \"function\" {\n\t\t\terr := skipFunction(data, i)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\tkeys = append(keys, key)\n\n\t\tparsing.SkipWhitespace(data, i)\n\n\t\tc := data[*i]\n\n\t\tswitch c {\n\t\tcase ',':\n\t\t\t*i++\n\t\t\tcontinue\n\t\tcase '=':\n\t\t\t*i++\n\t\t\tbreak keys\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unexpected character: %s\", string(c))\n\t\t}\n\t}\n\nvalues:\n\tfor {\n\t\tskipWhitespaceNoNewLine(data, i)\n\n\t\tc := data[*i]\n\n\t\tswitch c {\n\t\tcase '\"', '\\'':\n\t\t\tvalue, err := parseRockspecString(data, i, locals)\n\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvalues = append(values, value.value.(string))\n\t\tdefault:\n\t\t\tref, err := parseRockspecLiteral(data, i, locals)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// Skip if it's an expression\n\t\t\tskipWhitespaceNoNewLine(data, i)\n\t\t\tc := data[*i]\n\n\t\t\tvar value string\n\n\t\t\tif c != '\\n' && c != '\\r' {\n\t\t\t\tskipExpression(data, i)\n\t\t\t\tvalue = \"\"\n\t\t\t} else {\n\t\t\t\tvalue = locals[ref]\n\t\t\t}\n\n\t\t\tvalues = append(values, value)\n\t\t}\n\n\t\tskipWhitespaceNoNewLine(data, i)\n\n\t\tc = data[*i]\n\n\t\tswitch c {\n\t\tcase ',':\n\t\t\t*i++\n\t\t\tcontinue\n\t\tcase '\\n', '\\r':\n\t\t\tparsing.SkipWhitespace(data, i)\n\t\t\tbreak values\n\t\t}\n\t}\n\n\tif len(keys) != len(values) {\n\t\treturn fmt.Errorf(\"expected %d values got %d\", len(keys), len(values))\n\t}\n\n\tfor i := 0; i < len(keys); i++ {\n\t\tlocals[keys[i]] = values[i]\n\t}\n\n\treturn nil\n}\n\nfunc skipBuildNode(data []byte, i *int) {\n\tbracesCount := 0\n\n\tfor *i < len(data) {\n\t\tc := data[*i]\n\n\t\tswitch c {\n\t\tcase '{':\n\t\t\tbracesCount++\n\t\tcase '}':\n\t\t\tbracesCount--\n\t\t}\n\n\t\tif bracesCount == 0 {\n\t\t\treturn\n\t\t}\n\n\t\t*i++\n\t}\n}\n\nfunc skipFunction(data []byte, i *int) error {\n\tblocks := 1\n\n\tfor *i < len(data)-5 {\n\t\tif parsing.IsWhitespace(data[*i]) {\n\t\t\tswitch {\n\t\t\tcase string(data[*i+1:*i+3]) == \"if\" && parsing.IsWhitespace(data[*i+3]):\n\t\t\t\tblocks++\n\t\t\t\t*i += 3\n\t\t\tcase string(data[*i+1:*i+4]) == \"end\" && parsing.IsWhitespace(data[*i+4]):\n\t\t\t\tblocks--\n\t\t\t\t*i += 4\n\n\t\t\t\tif blocks == 0 {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t*i++\n\t\t\t}\n\t\t} else {\n\t\t\t*i++\n\t\t}\n\t}\n\n\treturn fmt.Errorf(\"unterminated function at %d\", *i)\n}\n\nfunc skipExpression(data []byte, i *int) {\n\tparseComment(data, i)\n}\n\nfunc skipWhitespaceNoNewLine(data []byte, i *int) {\n\tfor *i < len(data) && (data[*i] == ' ' || data[*i] == '\\t') {\n\t\t*i++\n\t}\n}\n\nfunc isLiteral(c byte) bool {\n\tif c == '[' || c == ']' {\n\t\treturn true\n\t}\n\tif c == '.' {\n\t\treturn false\n\t}\n\treturn parsing.IsLiteral(c)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/rockspec_parser_test.go",
    "content": "package lua\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_parseRockspecData(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tcontent string\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"basic valid content\",\n\t\t\tcontent: `\nfoo = \"bar\"\nhello = \"world\"\nobject = {\n\tfoo = \"bar\",\n\tbaz = \"test\",\n\tnested = {\n\t\tlorem = \"ipsum\"\n\t}\n}\nalice = \"bob\"\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"lists\",\n\t\t\tcontent: `\nfoo = \"bar\"\nlist = {\"hello\", \"world\" }\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"empty list\",\n\t\t\tcontent: `\nfoo = \"bar\"\nlist = {}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"different string delimiters\",\n\t\t\tcontent: `\nfoo = 'bar'\nhello = \"world\"\n`,\n\t\t},\n\t\t{\n\n\t\t\tname: \"multiline string\",\n\t\t\tcontent: `\nfoo = \"bar\"\nmultiline = [[\n\tthis is\n\ta multiline\n\tstring\n]]\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"variables\",\n\t\t\tcontent: `\nlocal foo = \"bar\"\nlocal baz = foo\n\nhello = baz\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple variables in one line\",\n\t\t\tcontent: `\nlocal foo, bar = \"hello\", \"world\"\nbaz = foo\ntest = bar\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"skip expressions\",\n\t\t\tcontent: `\ntest = (hello == \"world\") and \"foo\" or \"bar\"\nbaz = \"123\"\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"skip expressions in locals\",\n\t\t\tcontent: `\nlocal var1 = \"foo\"\nlocal var2 = var1 == \"foo\" and \"true\" or (\"false\")\n\nfoo = \"bar\"\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"concatenation\",\n\t\t\tcontent: `\nlocal foo = \"bar\"\nlocal baz = \"123\"\nhello = \"world\"..baz\nbaz = foo..\" \"..baz\ntest = foo .. baz\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"complex syntax\",\n\t\t\tcontent: `\nfoo = \"bar\"\nobject = {\n\t[\"baz\"] = \"bar\"\n}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"content with comment\",\n\t\t\tcontent: `\nfoo = \"bar\"\n-- this is a comment\nobject = {\n\thello = \"world\"\n\t-- this is another comment\n}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"content start with comment\",\n\t\t\tcontent: `\nfoo = \"bar\"\n-- this is a comment\nobject = {\n\t-- this is another comment\n\thello = \"world\"\n}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"list with comment\",\n\t\t\tcontent: `\nlist = {\n\t\"foo\",\n\t\"bar\",\n\t-- \"baz\"\n\t\"hello\"\n}\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"skip build section\",\n\t\t\tcontent: `\nfoo = \"bar\"\nbuild = {\n\ta = {\n\t\t{\n\t\t\tcontent\n\t\t}\n\t}\n}\nbar = \"baz\"\n`,\n\t\t},\n\t\t{\n\t\t\tname: \"skip functions\",\n\t\t\tcontent: `\nlocal function test\n\tif foo == bar then\n\t\tif hello = world then\n\t\t\tblah\n\t\tend\n\tend\nend\ntest = \"blah\"\n`,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid complex syntax\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\nfoo = \"bar\"\nobject = {\n\t[\"baz\" = \"bar\"\n\t[\"hello\"] = world\n}\n`,\n\t\t},\n\t\t{\n\t\t\tname:    \"unterminated block\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\nfoo = \"bar\"\nhello = \"world\"\nobject = {\n`,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid string content\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\ntest = \"unfinished\n\t\t`,\n\t\t},\n\t\t{\n\t\t\tname:    \"mixed string delimiters\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\nfoo = \"bar'\n`,\n\t\t},\n\t\t{\n\t\t\tname:    \"unterminated multiline string\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\n\t\tfoo = \"bar\"\n\t\thello = \"world\"\n\t\tobject = [[\n\t\t`,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid multiline string content\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\ntest = [[\n\tunfinished\n\t\t`,\n\t\t},\n\t\t{\n\t\t\tname:    \"list with unterminated comment\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\nlist = {\n\t\"foo\",\n\t\"bar\",\n\t-`,\n\t\t},\n\t\t{\n\t\t\tname:    \"undefined local\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\ntest = hello\n\t\t`,\n\t\t},\n\t\t{\n\t\t\tname:    \"unterminated concatenation\",\n\t\t\twantErr: require.Error,\n\t\t\tcontent: `\nlocal foo = \"123\"\nhello = foo..  `,\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tvalue, err := parseRockspecData(bytes.NewReader([]byte(test.content)))\n\n\t\t\tif test.wantErr == nil {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\ttest.wantErr(t, err)\n\t\t\t}\n\n\t\t\tassert.IsType(t, rockspec{}, value)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/corrupt/bad-1.23.0-0.rockspec",
    "content": "package = {\"kon\n\n3.7.0-0\"\nrockspec_fo}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/glob-paths/lua/package.rockspec",
    "content": "bogus rockspec"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/rockspec/kong-3.7.0-0.rockspec",
    "content": "package = \"kong\"\nversion = \"3.7.0-0\"\nrockspec_format = \"3.0\"\nsupported_platforms = {\"linux\", \"macosx\"}\nsource = {\n  url = \"git+https://github.com/Kong/kong.git\",\n  tag = \"3.7.0\"\n}\ndescription = {\n  summary = \"Kong is a scalable and customizable API Management Layer built on top of Nginx.\",\n  homepage = \"https://konghq.com\",\n  license = \"Apache 2.0\"\n}\ndependencies = {\n  \"inspect == 3.1.3\",\n  \"luasec == 1.3.2\",\n  \"luasocket == 3.0-rc1\",\n  \"penlight == 1.13.1\",\n  \"lua-resty-http == 0.17.1\",\n  \"lua-resty-jit-uuid == 0.0.7\",\n  \"lua-ffi-zlib == 0.6\",\n  \"multipart == 0.5.9\",\n  \"version == 1.0.1\",\n  \"kong-lapis == 1.16.0.1\",\n  \"kong-pgmoon == 1.16.2\",\n  \"luatz == 0.4\",\n  \"lua_system_constants == 0.1.4\",\n  \"lyaml == 6.2.8\",\n  \"luasyslog == 2.0.1\",\n  \"lua_pack == 2.0.0\",\n  \"binaryheap >= 0.4\",\n  \"luaxxhash >= 1.0\",\n  \"lua-protobuf == 0.5.0\",\n  \"lua-resty-healthcheck == 3.0.1\",\n  \"lua-messagepack == 0.5.4\",\n  \"lua-resty-aws == 1.3.6\",\n  \"lua-resty-openssl == 1.2.0\",\n  \"lua-resty-counter == 0.2.1\",\n  \"lua-resty-ipmatcher == 0.6.1\",\n  \"lua-resty-acme == 0.12.0\",\n  \"lua-resty-session == 4.0.5\",\n  \"lua-resty-timer-ng == 0.2.6\",\n  \"lpeg == 1.1.0\",\n  \"lua-resty-ljsonschema == 1.1.6-2\",\n}\nbuild = {\n  type = \"builtin\",\n  modules = {\n    [\"kong\"] = \"kong/init.lua\",\n    [\"kong.meta\"] = \"kong/meta.lua\",\n    [\"kong.cache\"] = \"kong/cache/init.lua\",\n    [\"kong.cache.warmup\"] = \"kong/cache/warmup.lua\",\n    [\"kong.global\"] = \"kong/global.lua\",\n    [\"kong.reports\"] = \"kong/reports.lua\",\n    [\"kong.constants\"] = \"kong/constants.lua\",\n    [\"kong.concurrency\"] = \"kong/concurrency.lua\",\n    [\"kong.deprecation\"] = \"kong/deprecation.lua\",\n    [\"kong.globalpatches\"] = \"kong/globalpatches.lua\",\n    [\"kong.error_handlers\"] = \"kong/error_handlers.lua\",\n    [\"kong.hooks\"] = \"kong/hooks.lua\",\n\n    [\"kong.router\"] = \"kong/router/init.lua\",\n    [\"kong.router.traditional\"] = \"kong/router/traditional.lua\",\n    [\"kong.router.compat\"] = \"kong/router/compat.lua\",\n    [\"kong.router.expressions\"] = \"kong/router/expressions.lua\",\n    [\"kong.router.atc\"] = \"kong/router/atc.lua\",\n    [\"kong.router.fields\"] = \"kong/router/fields.lua\",\n    [\"kong.router.utils\"] = \"kong/router/utils.lua\",\n\n    [\"kong.conf_loader\"] = \"kong/conf_loader/init.lua\",\n    [\"kong.conf_loader.constants\"] = \"kong/conf_loader/constants.lua\",\n    [\"kong.conf_loader.parse\"] = \"kong/conf_loader/parse.lua\",\n    [\"kong.conf_loader.listeners\"] = \"kong/conf_loader/listeners.lua\",\n\n    [\"kong.clustering\"] = \"kong/clustering/init.lua\",\n    [\"kong.clustering.data_plane\"] = \"kong/clustering/data_plane.lua\",\n    [\"kong.clustering.control_plane\"] = \"kong/clustering/control_plane.lua\",\n    [\"kong.clustering.utils\"] = \"kong/clustering/utils.lua\",\n    [\"kong.clustering.events\"] = \"kong/clustering/events.lua\",\n    [\"kong.clustering.compat\"] = \"kong/clustering/compat/init.lua\",\n    [\"kong.clustering.compat.version\"] = \"kong/clustering/compat/version.lua\",\n    [\"kong.clustering.compat.removed_fields\"] = \"kong/clustering/compat/removed_fields.lua\",\n    [\"kong.clustering.compat.checkers\"] = \"kong/clustering/compat/checkers.lua\",\n    [\"kong.clustering.config_helper\"] = \"kong/clustering/config_helper.lua\",\n    [\"kong.clustering.tls\"] = \"kong/clustering/tls.lua\",\n\n    [\"kong.cluster_events\"] = \"kong/cluster_events/init.lua\",\n    [\"kong.cluster_events.strategies.postgres\"] = \"kong/cluster_events/strategies/postgres.lua\",\n    [\"kong.cluster_events.strategies.off\"] = \"kong/cluster_events/strategies/off.lua\",\n\n    [\"kong.templates.nginx\"] = \"kong/templates/nginx.lua\",\n    [\"kong.templates.nginx_kong\"] = \"kong/templates/nginx_kong.lua\",\n    [\"kong.templates.nginx_kong_gui_include\"] = \"kong/templates/nginx_kong_gui_include.lua\",\n    [\"kong.templates.nginx_kong_stream\"] = \"kong/templates/nginx_kong_stream.lua\",\n    [\"kong.templates.kong_defaults\"] = \"kong/templates/kong_defaults.lua\",\n    [\"kong.templates.nginx_inject\"] = \"kong/templates/nginx_inject.lua\",\n    [\"kong.templates.nginx_kong_inject\"] = \"kong/templates/nginx_kong_inject.lua\",\n    [\"kong.templates.nginx_kong_stream_inject\"] = \"kong/templates/nginx_kong_stream_inject.lua\",\n    [\"kong.templates.kong_yml\"] = \"kong/templates/kong_yml.lua\",\n\n    [\"kong.resty.dns.client\"] = \"kong/resty/dns/client.lua\",\n    [\"kong.resty.dns.utils\"] = \"kong/resty/dns/utils.lua\",\n    [\"kong.resty.ctx\"] = \"kong/resty/ctx.lua\",\n\n    [\"kong.resty.mlcache\"] = \"kong/resty/mlcache/init.lua\",\n    [\"kong.resty.mlcache.ipc\"] = \"kong/resty/mlcache/ipc.lua\",\n\n    [\"kong.cmd\"] = \"kong/cmd/init.lua\",\n    [\"kong.cmd.roar\"] = \"kong/cmd/roar.lua\",\n    [\"kong.cmd.stop\"] = \"kong/cmd/stop.lua\",\n    [\"kong.cmd.quit\"] = \"kong/cmd/quit.lua\",\n    [\"kong.cmd.start\"] = \"kong/cmd/start.lua\",\n    [\"kong.cmd.check\"] = \"kong/cmd/check.lua\",\n    [\"kong.cmd.config\"] = \"kong/cmd/config.lua\",\n    [\"kong.cmd.reload\"] = \"kong/cmd/reload.lua\",\n    [\"kong.cmd.restart\"] = \"kong/cmd/restart.lua\",\n    [\"kong.cmd.prepare\"] = \"kong/cmd/prepare.lua\",\n    [\"kong.cmd.migrations\"] = \"kong/cmd/migrations.lua\",\n    [\"kong.cmd.health\"] = \"kong/cmd/health.lua\",\n    [\"kong.cmd.vault\"] = \"kong/cmd/vault.lua\",\n    [\"kong.cmd.version\"] = \"kong/cmd/version.lua\",\n    [\"kong.cmd.hybrid\"] = \"kong/cmd/hybrid.lua\",\n    [\"kong.cmd.utils.log\"] = \"kong/cmd/utils/log.lua\",\n    [\"kong.cmd.utils.kill\"] = \"kong/cmd/utils/kill.lua\",\n    [\"kong.cmd.utils.env\"] = \"kong/cmd/utils/env.lua\",\n    [\"kong.cmd.utils.migrations\"] = \"kong/cmd/utils/migrations.lua\",\n    [\"kong.cmd.utils.tty\"] = \"kong/cmd/utils/tty.lua\",\n    [\"kong.cmd.utils.nginx_signals\"] = \"kong/cmd/utils/nginx_signals.lua\",\n    [\"kong.cmd.utils.prefix_handler\"] = \"kong/cmd/utils/prefix_handler.lua\",\n    [\"kong.cmd.utils.process_secrets\"] = \"kong/cmd/utils/process_secrets.lua\",\n    [\"kong.cmd.utils.inject_confs\"] = \"kong/cmd/utils/inject_confs.lua\",\n\n    [\"kong.api\"] = \"kong/api/init.lua\",\n    [\"kong.api.api_helpers\"] = \"kong/api/api_helpers.lua\",\n    [\"kong.api.arguments\"] = \"kong/api/arguments.lua\",\n    [\"kong.api.endpoints\"] = \"kong/api/endpoints.lua\",\n    [\"kong.api.routes.cache\"] = \"kong/api/routes/cache.lua\",\n    [\"kong.api.routes.certificates\"] = \"kong/api/routes/certificates.lua\",\n    [\"kong.api.routes.clustering\"] = \"kong/api/routes/clustering.lua\",\n    [\"kong.api.routes.config\"] = \"kong/api/routes/config.lua\",\n    [\"kong.api.routes.consumers\"] = \"kong/api/routes/consumers.lua\",\n    [\"kong.api.routes.debug\"] = \"kong/api/routes/debug.lua\",\n    [\"kong.api.routes.filter_chains\"] = \"kong/api/routes/filter_chains.lua\",\n    [\"kong.api.routes.health\"] = \"kong/api/routes/health.lua\",\n    [\"kong.api.routes.kong\"] = \"kong/api/routes/kong.lua\",\n    [\"kong.api.routes.plugins\"] = \"kong/api/routes/plugins.lua\",\n    [\"kong.api.routes.snis\"] = \"kong/api/routes/snis.lua\",\n    [\"kong.api.routes.tags\"] = \"kong/api/routes/tags.lua\",\n    [\"kong.api.routes.targets\"] = \"kong/api/routes/targets.lua\",\n    [\"kong.api.routes.upstreams\"] = \"kong/api/routes/upstreams.lua\",\n\n    [\"kong.admin_gui\"] = \"kong/admin_gui/init.lua\",\n    [\"kong.admin_gui.utils\"] = \"kong/admin_gui/utils.lua\",\n\n    [\"kong.status\"] = \"kong/status/init.lua\",\n    [\"kong.status.ready\"] = \"kong/status/ready.lua\",\n\n    [\"kong.tools.dns\"] = \"kong/tools/dns.lua\",\n    [\"kong.tools.grpc\"] = \"kong/tools/grpc.lua\",\n    [\"kong.tools.utils\"] = \"kong/tools/utils.lua\",\n    [\"kong.tools.timestamp\"] = \"kong/tools/timestamp.lua\",\n    [\"kong.tools.stream_api\"] = \"kong/tools/stream_api.lua\",\n    [\"kong.tools.queue\"] = \"kong/tools/queue.lua\",\n    [\"kong.tools.queue_schema\"] = \"kong/tools/queue_schema.lua\",\n    [\"kong.tools.sandbox\"] = \"kong/tools/sandbox.lua\",\n    [\"kong.tools.uri\"] = \"kong/tools/uri.lua\",\n    [\"kong.tools.kong-lua-sandbox\"] = \"kong/tools/kong-lua-sandbox.lua\",\n    [\"kong.tools.protobuf\"] = \"kong/tools/protobuf.lua\",\n    [\"kong.tools.mime_type\"] = \"kong/tools/mime_type.lua\",\n    [\"kong.tools.request_aware_table\"] = \"kong/tools/request_aware_table.lua\",\n    [\"kong.tools.gzip\"] = \"kong/tools/gzip.lua\",\n    [\"kong.tools.string\"] = \"kong/tools/string.lua\",\n    [\"kong.tools.table\"] = \"kong/tools/table.lua\",\n    [\"kong.tools.sha256\"] = \"kong/tools/sha256.lua\",\n    [\"kong.tools.yield\"] = \"kong/tools/yield.lua\",\n    [\"kong.tools.uuid\"] = \"kong/tools/uuid.lua\",\n    [\"kong.tools.rand\"] = \"kong/tools/rand.lua\",\n    [\"kong.tools.system\"] = \"kong/tools/system.lua\",\n    [\"kong.tools.time\"] = \"kong/tools/time.lua\",\n    [\"kong.tools.module\"] = \"kong/tools/module.lua\",\n    [\"kong.tools.ip\"] = \"kong/tools/ip.lua\",\n    [\"kong.tools.http\"] = \"kong/tools/http.lua\",\n    [\"kong.tools.cjson\"] = \"kong/tools/cjson.lua\",\n    [\"kong.tools.redis.schema\"] = \"kong/tools/redis/schema.lua\",\n\n    [\"kong.runloop.handler\"] = \"kong/runloop/handler.lua\",\n    [\"kong.runloop.events\"] = \"kong/runloop/events.lua\",\n    [\"kong.runloop.log_level\"] = \"kong/runloop/log_level.lua\",\n    [\"kong.runloop.certificate\"] = \"kong/runloop/certificate.lua\",\n    [\"kong.runloop.plugins_iterator\"] = \"kong/runloop/plugins_iterator.lua\",\n    [\"kong.runloop.upstream_ssl\"] = \"kong/runloop/upstream_ssl.lua\",\n    [\"kong.runloop.balancer\"] = \"kong/runloop/balancer/init.lua\",\n    [\"kong.runloop.balancer.balancers\"] = \"kong/runloop/balancer/balancers.lua\",\n    [\"kong.runloop.balancer.consistent_hashing\"] = \"kong/runloop/balancer/consistent_hashing.lua\",\n    [\"kong.runloop.balancer.healthcheckers\"] = \"kong/runloop/balancer/healthcheckers.lua\",\n    [\"kong.runloop.balancer.least_connections\"] = \"kong/runloop/balancer/least_connections.lua\",\n    [\"kong.runloop.balancer.latency\"] = \"kong/runloop/balancer/latency.lua\",\n    [\"kong.runloop.balancer.round_robin\"] = \"kong/runloop/balancer/round_robin.lua\",\n    [\"kong.runloop.balancer.targets\"] = \"kong/runloop/balancer/targets.lua\",\n    [\"kong.runloop.balancer.upstreams\"] = \"kong/runloop/balancer/upstreams.lua\",\n    [\"kong.runloop.plugin_servers\"] = \"kong/runloop/plugin_servers/init.lua\",\n    [\"kong.runloop.plugin_servers.process\"] = \"kong/runloop/plugin_servers/process.lua\",\n    [\"kong.runloop.plugin_servers.mp_rpc\"] = \"kong/runloop/plugin_servers/mp_rpc.lua\",\n    [\"kong.runloop.plugin_servers.pb_rpc\"] = \"kong/runloop/plugin_servers/pb_rpc.lua\",\n    [\"kong.runloop.wasm\"] = \"kong/runloop/wasm.lua\",\n    [\"kong.runloop.wasm.properties\"] = \"kong/runloop/wasm/properties.lua\",\n\n    [\"kong.workspaces\"] = \"kong/workspaces/init.lua\",\n\n    [\"kong.db\"] = \"kong/db/init.lua\",\n    [\"kong.db.utils\"] = \"kong/db/utils.lua\",\n    [\"kong.db.errors\"] = \"kong/db/errors.lua\",\n    [\"kong.db.iteration\"] = \"kong/db/iteration.lua\",\n    [\"kong.db.dao\"] = \"kong/db/dao/init.lua\",\n    [\"kong.db.dao.certificates\"] = \"kong/db/dao/certificates.lua\",\n    [\"kong.db.dao.snis\"] = \"kong/db/dao/snis.lua\",\n    [\"kong.db.dao.targets\"] = \"kong/db/dao/targets.lua\",\n    [\"kong.db.dao.plugins\"] = \"kong/db/dao/plugins.lua\",\n    [\"kong.db.dao.tags\"] = \"kong/db/dao/tags.lua\",\n    [\"kong.db.dao.vaults\"] = \"kong/db/dao/vaults.lua\",\n    [\"kong.db.dao.workspaces\"] = \"kong/db/dao/workspaces.lua\",\n    [\"kong.db.dao.services\"] = \"kong/db/dao/services.lua\",\n    [\"kong.db.dao.ca_certificates\"] = \"kong/db/dao/ca_certificates.lua\",\n    [\"kong.db.declarative\"] = \"kong/db/declarative/init.lua\",\n    [\"kong.db.declarative.marshaller\"] = \"kong/db/declarative/marshaller.lua\",\n    [\"kong.db.declarative.export\"] = \"kong/db/declarative/export.lua\",\n    [\"kong.db.declarative.import\"] = \"kong/db/declarative/import.lua\",\n    [\"kong.db.schema\"] = \"kong/db/schema/init.lua\",\n    [\"kong.db.dao.keys\"] = \"kong/db/dao/keys.lua\",\n    [\"kong.db.dao.key_sets\"] = \"kong/db/dao/key_sets.lua\",\n    [\"kong.db.schema.entities.keys\"] = \"kong/db/schema/entities/keys.lua\",\n    [\"kong.db.schema.entities.key_sets\"] = \"kong/db/schema/entities/key_sets.lua\",\n    [\"kong.db.schema.entities.consumers\"] = \"kong/db/schema/entities/consumers.lua\",\n    [\"kong.db.schema.entities.routes\"] = \"kong/db/schema/entities/routes.lua\",\n    [\"kong.db.schema.entities.routes_subschemas\"] = \"kong/db/schema/entities/routes_subschemas.lua\",\n    [\"kong.db.schema.entities.services\"] = \"kong/db/schema/entities/services.lua\",\n    [\"kong.db.schema.entities.certificates\"] = \"kong/db/schema/entities/certificates.lua\",\n    [\"kong.db.schema.entities.snis\"] = \"kong/db/schema/entities/snis.lua\",\n    [\"kong.db.schema.entities.upstreams\"] = \"kong/db/schema/entities/upstreams.lua\",\n    [\"kong.db.schema.entities.targets\"] = \"kong/db/schema/entities/targets.lua\",\n    [\"kong.db.schema.entities.plugins\"] = \"kong/db/schema/entities/plugins.lua\",\n    [\"kong.db.schema.entities.tags\"] = \"kong/db/schema/entities/tags.lua\",\n    [\"kong.db.schema.entities.ca_certificates\"] = \"kong/db/schema/entities/ca_certificates.lua\",\n    [\"kong.db.schema.entities.vaults\"] = \"kong/db/schema/entities/vaults.lua\",\n    [\"kong.db.schema.entities.workspaces\"] = \"kong/db/schema/entities/workspaces.lua\",\n    [\"kong.db.schema.entities.clustering_data_planes\"] = \"kong/db/schema/entities/clustering_data_planes.lua\",\n    [\"kong.db.schema.entities.parameters\"] = \"kong/db/schema/entities/parameters.lua\",\n    [\"kong.db.schema.entities.filter_chains\"] = \"kong/db/schema/entities/filter_chains.lua\",\n    [\"kong.db.schema.json\"] = \"kong/db/schema/json.lua\",\n    [\"kong.db.schema.others.migrations\"] = \"kong/db/schema/others/migrations.lua\",\n    [\"kong.db.schema.others.declarative_config\"] = \"kong/db/schema/others/declarative_config.lua\",\n    [\"kong.db.schema.entity\"] = \"kong/db/schema/entity.lua\",\n    [\"kong.db.schema.metaschema\"] = \"kong/db/schema/metaschema.lua\",\n    [\"kong.db.schema.typedefs\"] = \"kong/db/schema/typedefs.lua\",\n    [\"kong.db.schema.plugin_loader\"] = \"kong/db/schema/plugin_loader.lua\",\n    [\"kong.db.schema.vault_loader\"] = \"kong/db/schema/vault_loader.lua\",\n    [\"kong.db.schema.topological_sort\"] = \"kong/db/schema/topological_sort.lua\",\n    [\"kong.db.strategies\"] = \"kong/db/strategies/init.lua\",\n    [\"kong.db.strategies.connector\"] = \"kong/db/strategies/connector.lua\",\n    [\"kong.db.strategies.postgres\"] = \"kong/db/strategies/postgres/init.lua\",\n    [\"kong.db.strategies.postgres.connector\"] = \"kong/db/strategies/postgres/connector.lua\",\n    [\"kong.db.strategies.postgres.tags\"] = \"kong/db/strategies/postgres/tags.lua\",\n    [\"kong.db.strategies.postgres.services\"] = \"kong/db/strategies/postgres/services.lua\",\n    [\"kong.db.strategies.postgres.plugins\"] = \"kong/db/strategies/postgres/plugins.lua\",\n    [\"kong.db.strategies.off\"] = \"kong/db/strategies/off/init.lua\",\n    [\"kong.db.strategies.off.connector\"] = \"kong/db/strategies/off/connector.lua\",\n    [\"kong.db.strategies.off.tags\"] = \"kong/db/strategies/off/tags.lua\",\n\n    [\"kong.db.migrations.state\"] = \"kong/db/migrations/state.lua\",\n    [\"kong.db.migrations.subsystems\"] = \"kong/db/migrations/subsystems.lua\",\n    [\"kong.db.migrations.core\"] = \"kong/db/migrations/core/init.lua\",\n    [\"kong.db.migrations.core.000_base\"] = \"kong/db/migrations/core/000_base.lua\",\n    [\"kong.db.migrations.core.003_100_to_110\"] = \"kong/db/migrations/core/003_100_to_110.lua\",\n    [\"kong.db.migrations.core.004_110_to_120\"] = \"kong/db/migrations/core/004_110_to_120.lua\",\n    [\"kong.db.migrations.core.005_120_to_130\"] = \"kong/db/migrations/core/005_120_to_130.lua\",\n    [\"kong.db.migrations.core.006_130_to_140\"] = \"kong/db/migrations/core/006_130_to_140.lua\",\n    [\"kong.db.migrations.core.007_140_to_150\"] = \"kong/db/migrations/core/007_140_to_150.lua\",\n    [\"kong.db.migrations.core.008_150_to_200\"] = \"kong/db/migrations/core/008_150_to_200.lua\",\n    [\"kong.db.migrations.core.009_200_to_210\"] = \"kong/db/migrations/core/009_200_to_210.lua\",\n    [\"kong.db.migrations.core.010_210_to_211\"] = \"kong/db/migrations/core/010_210_to_211.lua\",\n    [\"kong.db.migrations.core.011_212_to_213\"] = \"kong/db/migrations/core/011_212_to_213.lua\",\n    [\"kong.db.migrations.core.012_213_to_220\"] = \"kong/db/migrations/core/012_213_to_220.lua\",\n    [\"kong.db.migrations.core.013_220_to_230\"] = \"kong/db/migrations/core/013_220_to_230.lua\",\n    [\"kong.db.migrations.core.014_230_to_270\"] = \"kong/db/migrations/core/014_230_to_270.lua\",\n    [\"kong.db.migrations.core.015_270_to_280\"] = \"kong/db/migrations/core/015_270_to_280.lua\",\n    [\"kong.db.migrations.core.016_280_to_300\"] = \"kong/db/migrations/core/016_280_to_300.lua\",\n    [\"kong.db.migrations.core.017_300_to_310\"] = \"kong/db/migrations/core/017_300_to_310.lua\",\n    [\"kong.db.migrations.core.018_310_to_320\"] = \"kong/db/migrations/core/018_310_to_320.lua\",\n    [\"kong.db.migrations.core.019_320_to_330\"] = \"kong/db/migrations/core/019_320_to_330.lua\",\n    [\"kong.db.migrations.core.020_330_to_340\"] = \"kong/db/migrations/core/020_330_to_340.lua\",\n    [\"kong.db.migrations.core.021_340_to_350\"] = \"kong/db/migrations/core/021_340_to_350.lua\",\n    [\"kong.db.migrations.core.022_350_to_360\"] = \"kong/db/migrations/core/022_350_to_360.lua\",\n    [\"kong.db.migrations.operations.200_to_210\"] = \"kong/db/migrations/operations/200_to_210.lua\",\n    [\"kong.db.migrations.operations.212_to_213\"] = \"kong/db/migrations/operations/212_to_213.lua\",\n    [\"kong.db.migrations.operations.280_to_300\"] = \"kong/db/migrations/operations/280_to_300.lua\",\n    [\"kong.db.migrations.migrate_path_280_300\"] = \"kong/db/migrations/migrate_path_280_300.lua\",\n    [\"kong.db.declarative.migrations\"] = \"kong/db/declarative/migrations/init.lua\",\n    [\"kong.db.declarative.migrations.route_path\"] = \"kong/db/declarative/migrations/route_path.lua\",\n\n    [\"kong.pdk\"] = \"kong/pdk/init.lua\",\n    [\"kong.pdk.private.checks\"] = \"kong/pdk/private/checks.lua\",\n    [\"kong.pdk.private.phases\"] = \"kong/pdk/private/phases.lua\",\n    [\"kong.pdk.private.node\"] = \"kong/pdk/private/node.lua\",\n    [\"kong.pdk.client\"] = \"kong/pdk/client.lua\",\n    [\"kong.pdk.client.tls\"] = \"kong/pdk/client/tls.lua\",\n    [\"kong.pdk.ctx\"] = \"kong/pdk/ctx.lua\",\n    [\"kong.pdk.ip\"] = \"kong/pdk/ip.lua\",\n    [\"kong.pdk.log\"] = \"kong/pdk/log.lua\",\n    [\"kong.pdk.service\"] = \"kong/pdk/service.lua\",\n    [\"kong.pdk.service.request\"] = \"kong/pdk/service/request.lua\",\n    [\"kong.pdk.service.response\"] = \"kong/pdk/service/response.lua\",\n    [\"kong.pdk.router\"] = \"kong/pdk/router.lua\",\n    [\"kong.pdk.request\"] = \"kong/pdk/request.lua\",\n    [\"kong.pdk.response\"] = \"kong/pdk/response.lua\",\n    [\"kong.pdk.table\"] = \"kong/pdk/table.lua\",\n    [\"kong.pdk.node\"] = \"kong/pdk/node.lua\",\n    [\"kong.pdk.nginx\"] = \"kong/pdk/nginx.lua\",\n    [\"kong.pdk.cluster\"] = \"kong/pdk/cluster.lua\",\n    [\"kong.pdk.vault\"] = \"kong/pdk/vault.lua\",\n    [\"kong.pdk.tracing\"] = \"kong/pdk/tracing.lua\",\n    [\"kong.pdk.plugin\"] = \"kong/pdk/plugin.lua\",\n\n    [\"kong.plugins.basic-auth.migrations\"] = \"kong/plugins/basic-auth/migrations/init.lua\",\n    [\"kong.plugins.basic-auth.migrations.000_base_basic_auth\"] = \"kong/plugins/basic-auth/migrations/000_base_basic_auth.lua\",\n    [\"kong.plugins.basic-auth.migrations.002_130_to_140\"] = \"kong/plugins/basic-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.basic-auth.migrations.003_200_to_210\"] = \"kong/plugins/basic-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.basic-auth.crypto\"] = \"kong/plugins/basic-auth/crypto.lua\",\n    [\"kong.plugins.basic-auth.handler\"] = \"kong/plugins/basic-auth/handler.lua\",\n    [\"kong.plugins.basic-auth.access\"] = \"kong/plugins/basic-auth/access.lua\",\n    [\"kong.plugins.basic-auth.schema\"] = \"kong/plugins/basic-auth/schema.lua\",\n    [\"kong.plugins.basic-auth.daos\"] = \"kong/plugins/basic-auth/daos.lua\",\n\n    [\"kong.plugins.key-auth.migrations\"] = \"kong/plugins/key-auth/migrations/init.lua\",\n    [\"kong.plugins.key-auth.migrations.000_base_key_auth\"] = \"kong/plugins/key-auth/migrations/000_base_key_auth.lua\",\n    [\"kong.plugins.key-auth.migrations.002_130_to_140\"] = \"kong/plugins/key-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.key-auth.migrations.003_200_to_210\"] = \"kong/plugins/key-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.key-auth.migrations.004_320_to_330\"] = \"kong/plugins/key-auth/migrations/004_320_to_330.lua\",\n    [\"kong.plugins.key-auth.handler\"] = \"kong/plugins/key-auth/handler.lua\",\n    [\"kong.plugins.key-auth.schema\"] = \"kong/plugins/key-auth/schema.lua\",\n    [\"kong.plugins.key-auth.daos\"] = \"kong/plugins/key-auth/daos.lua\",\n\n    [\"kong.plugins.oauth2.migrations\"] = \"kong/plugins/oauth2/migrations/init.lua\",\n    [\"kong.plugins.oauth2.migrations.000_base_oauth2\"] = \"kong/plugins/oauth2/migrations/000_base_oauth2.lua\",\n    [\"kong.plugins.oauth2.migrations.003_130_to_140\"] = \"kong/plugins/oauth2/migrations/003_130_to_140.lua\",\n    [\"kong.plugins.oauth2.migrations.004_200_to_210\"] = \"kong/plugins/oauth2/migrations/004_200_to_210.lua\",\n    [\"kong.plugins.oauth2.migrations.005_210_to_211\"] = \"kong/plugins/oauth2/migrations/005_210_to_211.lua\",\n    [\"kong.plugins.oauth2.migrations.006_320_to_330\"] = \"kong/plugins/oauth2/migrations/006_320_to_330.lua\",\n    [\"kong.plugins.oauth2.migrations.007_320_to_330\"] = \"kong/plugins/oauth2/migrations/007_320_to_330.lua\",\n    [\"kong.plugins.oauth2.handler\"] = \"kong/plugins/oauth2/handler.lua\",\n    [\"kong.plugins.oauth2.secret\"] = \"kong/plugins/oauth2/secret.lua\",\n    [\"kong.plugins.oauth2.access\"] = \"kong/plugins/oauth2/access.lua\",\n    [\"kong.plugins.oauth2.schema\"] = \"kong/plugins/oauth2/schema.lua\",\n    [\"kong.plugins.oauth2.daos\"] = \"kong/plugins/oauth2/daos.lua\",\n    [\"kong.plugins.oauth2.daos.oauth2_tokens\"] = \"kong/plugins/oauth2/daos/oauth2_tokens.lua\",\n\n    [\"kong.plugins.tcp-log.handler\"] = \"kong/plugins/tcp-log/handler.lua\",\n    [\"kong.plugins.tcp-log.schema\"] = \"kong/plugins/tcp-log/schema.lua\",\n\n    [\"kong.plugins.udp-log.handler\"] = \"kong/plugins/udp-log/handler.lua\",\n    [\"kong.plugins.udp-log.schema\"] = \"kong/plugins/udp-log/schema.lua\",\n\n    [\"kong.plugins.http-log.handler\"] = \"kong/plugins/http-log/handler.lua\",\n    [\"kong.plugins.http-log.schema\"] = \"kong/plugins/http-log/schema.lua\",\n    [\"kong.plugins.http-log.migrations\"] = \"kong/plugins/http-log/migrations/init.lua\",\n    [\"kong.plugins.http-log.migrations.001_280_to_300\"] = \"kong/plugins/http-log/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.file-log.handler\"] = \"kong/plugins/file-log/handler.lua\",\n    [\"kong.plugins.file-log.schema\"] = \"kong/plugins/file-log/schema.lua\",\n\n    [\"kong.plugins.rate-limiting.migrations\"] = \"kong/plugins/rate-limiting/migrations/init.lua\",\n    [\"kong.plugins.rate-limiting.migrations.000_base_rate_limiting\"] = \"kong/plugins/rate-limiting/migrations/000_base_rate_limiting.lua\",\n    [\"kong.plugins.rate-limiting.migrations.003_10_to_112\"] = \"kong/plugins/rate-limiting/migrations/003_10_to_112.lua\",\n    [\"kong.plugins.rate-limiting.migrations.004_200_to_210\"] = \"kong/plugins/rate-limiting/migrations/004_200_to_210.lua\",\n    [\"kong.plugins.rate-limiting.migrations.005_320_to_330\"] = \"kong/plugins/rate-limiting/migrations/005_320_to_330.lua\",\n    [\"kong.plugins.rate-limiting.migrations.006_350_to_360\"] = \"kong/plugins/rate-limiting/migrations/006_350_to_360.lua\",\n    [\"kong.plugins.rate-limiting.expiration\"] = \"kong/plugins/rate-limiting/expiration.lua\",\n    [\"kong.plugins.rate-limiting.handler\"] = \"kong/plugins/rate-limiting/handler.lua\",\n    [\"kong.plugins.rate-limiting.schema\"] = \"kong/plugins/rate-limiting/schema.lua\",\n    [\"kong.plugins.rate-limiting.daos\"] = \"kong/plugins/rate-limiting/daos.lua\",\n    [\"kong.plugins.rate-limiting.policies\"] = \"kong/plugins/rate-limiting/policies/init.lua\",\n    [\"kong.plugins.rate-limiting.policies.cluster\"] = \"kong/plugins/rate-limiting/policies/cluster.lua\",\n    [\"kong.plugins.rate-limiting.clustering.compat.redis_translation\"] = \"kong/plugins/rate-limiting/clustering/compat/redis_translation.lua\",\n\n    [\"kong.plugins.response-ratelimiting.migrations\"] = \"kong/plugins/response-ratelimiting/migrations/init.lua\",\n    [\"kong.plugins.response-ratelimiting.migrations.000_base_response_rate_limiting\"] = \"kong/plugins/response-ratelimiting/migrations/000_base_response_rate_limiting.lua\",\n    [\"kong.plugins.response-ratelimiting.migrations.001_350_to_360\"] = \"kong/plugins/response-ratelimiting/migrations/001_350_to_360.lua\",\n    [\"kong.plugins.response-ratelimiting.handler\"] = \"kong/plugins/response-ratelimiting/handler.lua\",\n    [\"kong.plugins.response-ratelimiting.access\"] = \"kong/plugins/response-ratelimiting/access.lua\",\n    [\"kong.plugins.response-ratelimiting.header_filter\"] = \"kong/plugins/response-ratelimiting/header_filter.lua\",\n    [\"kong.plugins.response-ratelimiting.log\"] = \"kong/plugins/response-ratelimiting/log.lua\",\n    [\"kong.plugins.response-ratelimiting.schema\"] = \"kong/plugins/response-ratelimiting/schema.lua\",\n    [\"kong.plugins.response-ratelimiting.policies\"] = \"kong/plugins/response-ratelimiting/policies/init.lua\",\n    [\"kong.plugins.response-ratelimiting.policies.cluster\"] = \"kong/plugins/response-ratelimiting/policies/cluster.lua\",\n    [\"kong.plugins.response-ratelimiting.clustering.compat.redis_translation\"] = \"kong/plugins/response-ratelimiting/clustering/compat/redis_translation.lua\",\n\n    [\"kong.plugins.request-size-limiting.handler\"] = \"kong/plugins/request-size-limiting/handler.lua\",\n    [\"kong.plugins.request-size-limiting.schema\"] = \"kong/plugins/request-size-limiting/schema.lua\",\n\n    [\"kong.plugins.response-transformer.handler\"] = \"kong/plugins/response-transformer/handler.lua\",\n    [\"kong.plugins.response-transformer.body_transformer\"] = \"kong/plugins/response-transformer/body_transformer.lua\",\n    [\"kong.plugins.response-transformer.header_transformer\"] = \"kong/plugins/response-transformer/header_transformer.lua\",\n    [\"kong.plugins.response-transformer.schema\"] = \"kong/plugins/response-transformer/schema.lua\",\n\n    [\"kong.plugins.cors.handler\"] = \"kong/plugins/cors/handler.lua\",\n    [\"kong.plugins.cors.schema\"] = \"kong/plugins/cors/schema.lua\",\n\n    [\"kong.plugins.ip-restriction.handler\"] = \"kong/plugins/ip-restriction/handler.lua\",\n    [\"kong.plugins.ip-restriction.schema\"] = \"kong/plugins/ip-restriction/schema.lua\",\n    [\"kong.plugins.ip-restriction.migrations\"] = \"kong/plugins/ip-restriction/migrations/init.lua\",\n    [\"kong.plugins.ip-restriction.migrations.001_200_to_210\"] = \"kong/plugins/ip-restriction/migrations/001_200_to_210.lua\",\n\n    [\"kong.plugins.acl.migrations\"] = \"kong/plugins/acl/migrations/init.lua\",\n    [\"kong.plugins.acl.migrations.000_base_acl\"] = \"kong/plugins/acl/migrations/000_base_acl.lua\",\n    [\"kong.plugins.acl.migrations.002_130_to_140\"] = \"kong/plugins/acl/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.acl.migrations.003_200_to_210\"] = \"kong/plugins/acl/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.acl.migrations.004_212_to_213\"] = \"kong/plugins/acl/migrations/004_212_to_213.lua\",\n    [\"kong.plugins.acl.handler\"] = \"kong/plugins/acl/handler.lua\",\n    [\"kong.plugins.acl.schema\"] = \"kong/plugins/acl/schema.lua\",\n    [\"kong.plugins.acl.daos\"] = \"kong/plugins/acl/daos.lua\",\n    [\"kong.plugins.acl.groups\"] = \"kong/plugins/acl/groups.lua\",\n    [\"kong.plugins.acl.acls\"] = \"kong/plugins/acl/acls.lua\",\n    [\"kong.plugins.acl.api\"] = \"kong/plugins/acl/api.lua\",\n\n    [\"kong.plugins.correlation-id.handler\"] = \"kong/plugins/correlation-id/handler.lua\",\n    [\"kong.plugins.correlation-id.schema\"] = \"kong/plugins/correlation-id/schema.lua\",\n\n    [\"kong.plugins.jwt.migrations\"] = \"kong/plugins/jwt/migrations/init.lua\",\n    [\"kong.plugins.jwt.migrations.000_base_jwt\"] = \"kong/plugins/jwt/migrations/000_base_jwt.lua\",\n    [\"kong.plugins.jwt.migrations.002_130_to_140\"] = \"kong/plugins/jwt/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.jwt.migrations.003_200_to_210\"] = \"kong/plugins/jwt/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.jwt.handler\"] = \"kong/plugins/jwt/handler.lua\",\n    [\"kong.plugins.jwt.schema\"] = \"kong/plugins/jwt/schema.lua\",\n    [\"kong.plugins.jwt.daos\"] = \"kong/plugins/jwt/daos.lua\",\n    [\"kong.plugins.jwt.jwt_parser\"] = \"kong/plugins/jwt/jwt_parser.lua\",\n\n    [\"kong.plugins.hmac-auth.migrations\"] = \"kong/plugins/hmac-auth/migrations/init.lua\",\n    [\"kong.plugins.hmac-auth.migrations.000_base_hmac_auth\"] = \"kong/plugins/hmac-auth/migrations/000_base_hmac_auth.lua\",\n    [\"kong.plugins.hmac-auth.migrations.002_130_to_140\"] = \"kong/plugins/hmac-auth/migrations/002_130_to_140.lua\",\n    [\"kong.plugins.hmac-auth.migrations.003_200_to_210\"] = \"kong/plugins/hmac-auth/migrations/003_200_to_210.lua\",\n    [\"kong.plugins.hmac-auth.handler\"] = \"kong/plugins/hmac-auth/handler.lua\",\n    [\"kong.plugins.hmac-auth.access\"] = \"kong/plugins/hmac-auth/access.lua\",\n    [\"kong.plugins.hmac-auth.schema\"] = \"kong/plugins/hmac-auth/schema.lua\",\n    [\"kong.plugins.hmac-auth.daos\"] = \"kong/plugins/hmac-auth/daos.lua\",\n\n    [\"kong.plugins.ldap-auth.handler\"] = \"kong/plugins/ldap-auth/handler.lua\",\n    [\"kong.plugins.ldap-auth.access\"] = \"kong/plugins/ldap-auth/access.lua\",\n    [\"kong.plugins.ldap-auth.schema\"] = \"kong/plugins/ldap-auth/schema.lua\",\n    [\"kong.plugins.ldap-auth.ldap\"] = \"kong/plugins/ldap-auth/ldap.lua\",\n    [\"kong.plugins.ldap-auth.asn1\"] = \"kong/plugins/ldap-auth/asn1.lua\",\n\n    [\"kong.plugins.syslog.handler\"] = \"kong/plugins/syslog/handler.lua\",\n    [\"kong.plugins.syslog.schema\"] = \"kong/plugins/syslog/schema.lua\",\n\n    [\"kong.plugins.loggly.handler\"] = \"kong/plugins/loggly/handler.lua\",\n    [\"kong.plugins.loggly.schema\"] = \"kong/plugins/loggly/schema.lua\",\n\n    [\"kong.plugins.datadog.handler\"] = \"kong/plugins/datadog/handler.lua\",\n    [\"kong.plugins.datadog.schema\"] = \"kong/plugins/datadog/schema.lua\",\n    [\"kong.plugins.datadog.statsd_logger\"] = \"kong/plugins/datadog/statsd_logger.lua\",\n\n    [\"kong.plugins.statsd.constants\"] = \"kong/plugins/statsd/constants.lua\",\n    [\"kong.plugins.statsd.handler\"] = \"kong/plugins/statsd/handler.lua\",\n    [\"kong.plugins.statsd.log\"] = \"kong/plugins/statsd/log.lua\",\n    [\"kong.plugins.statsd.schema\"] = \"kong/plugins/statsd/schema.lua\",\n    [\"kong.plugins.statsd.statsd_logger\"] = \"kong/plugins/statsd/statsd_logger.lua\",\n\n    [\"kong.plugins.bot-detection.handler\"] = \"kong/plugins/bot-detection/handler.lua\",\n    [\"kong.plugins.bot-detection.schema\"] = \"kong/plugins/bot-detection/schema.lua\",\n    [\"kong.plugins.bot-detection.rules\"] = \"kong/plugins/bot-detection/rules.lua\",\n    [\"kong.plugins.bot-detection.migrations\"] = \"kong/plugins/bot-detection/migrations/init.lua\",\n    [\"kong.plugins.bot-detection.migrations.001_200_to_210\"] = \"kong/plugins/bot-detection/migrations/001_200_to_210.lua\",\n\n    [\"kong.plugins.request-termination.handler\"] = \"kong/plugins/request-termination/handler.lua\",\n    [\"kong.plugins.request-termination.schema\"] = \"kong/plugins/request-termination/schema.lua\",\n\n    [\"kong.plugins.aws-lambda.handler\"]              = \"kong/plugins/aws-lambda/handler.lua\",\n    [\"kong.plugins.aws-lambda.schema\"]               = \"kong/plugins/aws-lambda/schema.lua\",\n    [\"kong.plugins.aws-lambda.request-util\"]         = \"kong/plugins/aws-lambda/request-util.lua\",\n\n    [\"kong.plugins.grpc-gateway.deco\"] = \"kong/plugins/grpc-gateway/deco.lua\",\n    [\"kong.plugins.grpc-gateway.handler\"] = \"kong/plugins/grpc-gateway/handler.lua\",\n    [\"kong.plugins.grpc-gateway.schema\"] = \"kong/plugins/grpc-gateway/schema.lua\",\n\n    [\"kong.plugins.acme.api\"] = \"kong/plugins/acme/api.lua\",\n    [\"kong.plugins.acme.client\"] = \"kong/plugins/acme/client.lua\",\n    [\"kong.plugins.acme.clustering.compat.redis_translation\"] = \"kong/plugins/acme/clustering/compat/redis_translation.lua\",\n    [\"kong.plugins.acme.daos\"] = \"kong/plugins/acme/daos.lua\",\n    [\"kong.plugins.acme.handler\"] = \"kong/plugins/acme/handler.lua\",\n    [\"kong.plugins.acme.migrations.000_base_acme\"] = \"kong/plugins/acme/migrations/000_base_acme.lua\",\n    [\"kong.plugins.acme.migrations.001_280_to_300\"] = \"kong/plugins/acme/migrations/001_280_to_300.lua\",\n    [\"kong.plugins.acme.migrations.002_320_to_330\"] = \"kong/plugins/acme/migrations/002_320_to_330.lua\",\n    [\"kong.plugins.acme.migrations.003_350_to_360\"] = \"kong/plugins/acme/migrations/003_350_to_360.lua\",\n    [\"kong.plugins.acme.migrations\"] = \"kong/plugins/acme/migrations/init.lua\",\n    [\"kong.plugins.acme.schema\"] = \"kong/plugins/acme/schema.lua\",\n    [\"kong.plugins.acme.storage.kong\"] = \"kong/plugins/acme/storage/kong.lua\",\n    [\"kong.plugins.acme.storage.config_adapters\"] = \"kong/plugins/acme/storage/config_adapters/init.lua\",\n    [\"kong.plugins.acme.storage.config_adapters.redis\"] = \"kong/plugins/acme/storage/config_adapters/redis.lua\",\n    [\"kong.plugins.acme.reserved_words\"] = \"kong/plugins/acme/reserved_words.lua\",\n\n    [\"kong.plugins.prometheus.api\"] = \"kong/plugins/prometheus/api.lua\",\n    [\"kong.plugins.prometheus.status_api\"] = \"kong/plugins/prometheus/status_api.lua\",\n    [\"kong.plugins.prometheus.exporter\"] = \"kong/plugins/prometheus/exporter.lua\",\n    [\"kong.plugins.prometheus.handler\"] = \"kong/plugins/prometheus/handler.lua\",\n    [\"kong.plugins.prometheus.prometheus\"] = \"kong/plugins/prometheus/prometheus.lua\",\n    [\"kong.plugins.prometheus.serve\"] = \"kong/plugins/prometheus/serve.lua\",\n    [\"kong.plugins.prometheus.schema\"] = \"kong/plugins/prometheus/schema.lua\",\n\n    [\"kong.plugins.session.handler\"] = \"kong/plugins/session/handler.lua\",\n    [\"kong.plugins.session.schema\"] = \"kong/plugins/session/schema.lua\",\n    [\"kong.plugins.session.access\"] = \"kong/plugins/session/access.lua\",\n    [\"kong.plugins.session.header_filter\"] = \"kong/plugins/session/header_filter.lua\",\n    [\"kong.plugins.session.session\"] = \"kong/plugins/session/session.lua\",\n    [\"kong.plugins.session.daos\"] = \"kong/plugins/session/daos.lua\",\n    [\"kong.plugins.session.storage.kong\"] = \"kong/plugins/session/storage/kong.lua\",\n    [\"kong.plugins.session.migrations.000_base_session\"] = \"kong/plugins/session/migrations/000_base_session.lua\",\n    [\"kong.plugins.session.migrations.001_add_ttl_index\"] = \"kong/plugins/session/migrations/001_add_ttl_index.lua\",\n    [\"kong.plugins.session.migrations.002_320_to_330\"] = \"kong/plugins/session/migrations/002_320_to_330.lua\",\n    [\"kong.plugins.session.migrations\"] = \"kong/plugins/session/migrations/init.lua\",\n\n    [\"kong.plugins.proxy-cache.handler\"]              = \"kong/plugins/proxy-cache/handler.lua\",\n    [\"kong.plugins.proxy-cache.cache_key\"]            = \"kong/plugins/proxy-cache/cache_key.lua\",\n    [\"kong.plugins.proxy-cache.schema\"]               = \"kong/plugins/proxy-cache/schema.lua\",\n    [\"kong.plugins.proxy-cache.api\"]                  = \"kong/plugins/proxy-cache/api.lua\",\n    [\"kong.plugins.proxy-cache.strategies\"]           = \"kong/plugins/proxy-cache/strategies/init.lua\",\n    [\"kong.plugins.proxy-cache.strategies.memory\"]    = \"kong/plugins/proxy-cache/strategies/memory.lua\",\n\n    [\"kong.plugins.grpc-web.deco\"] = \"kong/plugins/grpc-web/deco.lua\",\n    [\"kong.plugins.grpc-web.handler\"] = \"kong/plugins/grpc-web/handler.lua\",\n    [\"kong.plugins.grpc-web.schema\"] = \"kong/plugins/grpc-web/schema.lua\",\n\n    [\"kong.plugins.pre-function._handler\"] = \"kong/plugins/pre-function/_handler.lua\",\n    [\"kong.plugins.pre-function._schema\"] = \"kong/plugins/pre-function/_schema.lua\",\n    [\"kong.plugins.pre-function.migrations._001_280_to_300\"] = \"kong/plugins/pre-function/migrations/_001_280_to_300.lua\",\n\n    [\"kong.plugins.pre-function.handler\"] = \"kong/plugins/pre-function/handler.lua\",\n    [\"kong.plugins.pre-function.schema\"] = \"kong/plugins/pre-function/schema.lua\",\n    [\"kong.plugins.pre-function.migrations\"] = \"kong/plugins/pre-function/migrations/init.lua\",\n    [\"kong.plugins.pre-function.migrations.001_280_to_300\"] = \"kong/plugins/pre-function/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.post-function.handler\"] = \"kong/plugins/post-function/handler.lua\",\n    [\"kong.plugins.post-function.schema\"] = \"kong/plugins/post-function/schema.lua\",\n    [\"kong.plugins.post-function.migrations\"] = \"kong/plugins/post-function/migrations/init.lua\",\n    [\"kong.plugins.post-function.migrations.001_280_to_300\"] = \"kong/plugins/post-function/migrations/001_280_to_300.lua\",\n\n    [\"kong.plugins.zipkin.handler\"] = \"kong/plugins/zipkin/handler.lua\",\n    [\"kong.plugins.zipkin.reporter\"] = \"kong/plugins/zipkin/reporter.lua\",\n    [\"kong.plugins.zipkin.span\"] = \"kong/plugins/zipkin/span.lua\",\n    [\"kong.plugins.zipkin.schema\"] = \"kong/plugins/zipkin/schema.lua\",\n    [\"kong.plugins.zipkin.request_tags\"] = \"kong/plugins/zipkin/request_tags.lua\",\n\n    [\"kong.plugins.request-transformer.migrations.postgres\"] = \"kong/plugins/request-transformer/migrations/postgres.lua\",\n    [\"kong.plugins.request-transformer.migrations.common\"] = \"kong/plugins/request-transformer/migrations/common.lua\",\n    [\"kong.plugins.request-transformer.handler\"] = \"kong/plugins/request-transformer/handler.lua\",\n    [\"kong.plugins.request-transformer.access\"] = \"kong/plugins/request-transformer/access.lua\",\n    [\"kong.plugins.request-transformer.schema\"] = \"kong/plugins/request-transformer/schema.lua\",\n\n    [\"kong.plugins.azure-functions.handler\"] = \"kong/plugins/azure-functions/handler.lua\",\n    [\"kong.plugins.azure-functions.schema\"]  = \"kong/plugins/azure-functions/schema.lua\",\n\n    [\"kong.plugins.opentelemetry.handler\"] = \"kong/plugins/opentelemetry/handler.lua\",\n    [\"kong.plugins.opentelemetry.schema\"]  = \"kong/plugins/opentelemetry/schema.lua\",\n    [\"kong.plugins.opentelemetry.proto\"]  = \"kong/plugins/opentelemetry/proto.lua\",\n    [\"kong.plugins.opentelemetry.otlp\"]  = \"kong/plugins/opentelemetry/otlp.lua\",\n\n    [\"kong.plugins.ai-proxy.handler\"] = \"kong/plugins/ai-proxy/handler.lua\",\n    [\"kong.plugins.ai-proxy.schema\"] = \"kong/plugins/ai-proxy/schema.lua\",\n\n    [\"kong.plugins.ai-request-transformer.handler\"] = \"kong/plugins/ai-request-transformer/handler.lua\",\n    [\"kong.plugins.ai-request-transformer.schema\"] = \"kong/plugins/ai-request-transformer/schema.lua\",\n\n    [\"kong.plugins.ai-response-transformer.handler\"] = \"kong/plugins/ai-response-transformer/handler.lua\",\n    [\"kong.plugins.ai-response-transformer.schema\"] = \"kong/plugins/ai-response-transformer/schema.lua\",\n\n    [\"kong.llm\"] = \"kong/llm/init.lua\",\n    [\"kong.llm.drivers.shared\"] = \"kong/llm/drivers/shared.lua\",\n    [\"kong.llm.drivers.openai\"] = \"kong/llm/drivers/openai.lua\",\n    [\"kong.llm.drivers.azure\"] = \"kong/llm/drivers/azure.lua\",\n    [\"kong.llm.drivers.cohere\"] = \"kong/llm/drivers/cohere.lua\",\n    [\"kong.llm.drivers.anthropic\"] = \"kong/llm/drivers/anthropic.lua\",\n    [\"kong.llm.drivers.mistral\"] = \"kong/llm/drivers/mistral.lua\",\n    [\"kong.llm.drivers.llama2\"] = \"kong/llm/drivers/llama2.lua\",\n\n    [\"kong.plugins.ai-prompt-decorator.handler\"] = \"kong/plugins/ai-prompt-decorator/handler.lua\",\n    [\"kong.plugins.ai-prompt-decorator.schema\"]  = \"kong/plugins/ai-prompt-decorator/schema.lua\",\n\n    [\"kong.plugins.ai-prompt-template.handler\"] = \"kong/plugins/ai-prompt-template/handler.lua\",\n    [\"kong.plugins.ai-prompt-template.schema\"]  = \"kong/plugins/ai-prompt-template/schema.lua\",\n    [\"kong.plugins.ai-prompt-template.templater\"]  = \"kong/plugins/ai-prompt-template/templater.lua\",\n\n    [\"kong.plugins.ai-prompt-guard.handler\"] = \"kong/plugins/ai-prompt-guard/handler.lua\",\n    [\"kong.plugins.ai-prompt-guard.schema\"]  = \"kong/plugins/ai-prompt-guard/schema.lua\",\n\n    [\"kong.vaults.env\"] = \"kong/vaults/env/init.lua\",\n    [\"kong.vaults.env.schema\"] = \"kong/vaults/env/schema.lua\",\n\n    [\"kong.tracing.instrumentation\"] = \"kong/tracing/instrumentation.lua\",\n    [\"kong.tracing.propagation\"] = \"kong/tracing/propagation.lua\",\n    [\"kong.tracing.request_id\"] = \"kong/tracing/request_id.lua\",\n    [\"kong.tracing.tracing_context\"] = \"kong/tracing/tracing_context.lua\",\n\n    [\"kong.timing\"] = \"kong/timing/init.lua\",\n    [\"kong.timing.context\"] = \"kong/timing/context.lua\",\n    [\"kong.timing.hooks\"] = \"kong/timing/hooks/init.lua\",\n    [\"kong.timing.hooks.dns\"] = \"kong/timing/hooks/dns.lua\",\n    [\"kong.timing.hooks.http\"] = \"kong/timing/hooks/http.lua\",\n    [\"kong.timing.hooks.redis\"] = \"kong/timing/hooks/redis.lua\",\n    [\"kong.timing.hooks.socket\"] = \"kong/timing/hooks/socket.lua\",\n\n    [\"kong.dynamic_hook\"] = \"kong/dynamic_hook/init.lua\",\n    [\"kong.dynamic_hook.wrap_function_gen\"] = \"kong/dynamic_hook/wrap_function_gen.lua\",\n  }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/rockspec/kong-pgmoon-1.16.2-1.rockspec",
    "content": "package = \"kong-pgmoon\"\nversion = \"1.16.2-1\"\n\nsource = {\n  url = \"git+https://github.com/kong/pgmoon.git\",\n  tag = \"v1.16.2\"\n}\n\ndescription = {\n  summary = \"Postgres driver for OpenResty and Lua\",\n  detailed = [[PostgreSQL driver written in pure Lua for use with OpenResty's cosocket API. Can also be used in regular Lua with LuaSocket and LuaCrypto.]],\n  homepage = \"https://github.com/Kong/pgmoon\",\n  maintainer = \"Kong Inc\",\n  license = \"MIT\"\n}\n\ndependencies = {\n  \"lua >= 5.1\",\n  \"lpeg\",\n\n  -- \"luasocket\",\n  -- \"luasec\",\n  --\n  -- \"cqueues\",\n  -- \"luaossl\"\n  --\n  -- \"lua-resty-openssl\",\n}\n\nbuild = {\n  type = \"builtin\",\n  modules = {\n    [\"pgmoon\"] = \"pgmoon/init.lua\",\n    [\"pgmoon.arrays\"] = \"pgmoon/arrays.lua\",\n    [\"pgmoon.bit\"] = \"pgmoon/bit.lua\",\n    [\"pgmoon.cqueues\"] = \"pgmoon/cqueues.lua\",\n    [\"pgmoon.crypto\"] = \"pgmoon/crypto.lua\",\n    [\"pgmoon.hstore\"] = \"pgmoon/hstore.lua\",\n    [\"pgmoon.json\"] = \"pgmoon/json.lua\",\n    [\"pgmoon.socket\"] = \"pgmoon/socket.lua\",\n    [\"pgmoon.util\"] = \"pgmoon/util.lua\",\n  },\n}\n\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/rockspec/lpeg-1.0.2-1.rockspec",
    "content": "package = 'LPeg'\nversion = '1.0.2-1'\nsource = {\n   url = 'http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz',\n   md5 = 'd342571886f1abcb7afe6a83d024d583',\n}\ndescription = {\n   summary = 'Parsing Expression Grammars For Lua',\n   detailed = [[\n      LPeg is a new pattern-matching library for Lua, based on Parsing\n      Expression Grammars (PEGs). The nice thing about PEGs is that it\n      has a formal basis (instead of being an ad-hoc set of features),\n      allows an efficient and simple implementation, and does most things\n      we expect from a pattern-matching library (and more, as we can\n      define entire grammars).\n   ]],\n   homepage = 'http://www.inf.puc-rio.br/~roberto/lpeg.html',\n   maintainer = 'Gary V. Vaughan <gary@vaughan.pe>',\n   license = 'MIT/X11'\n}\ndependencies = {\n   'lua >= 5.1'\n}\nbuild = {\n   type = 'builtin',\n   modules = {\n      lpeg = {\n         'lpcap.c', 'lpcode.c', 'lpprint.c', 'lptree.c', 'lpvm.c'\n      },\n      re = 're.lua'\n   }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/lua/testdata/rockspec/luasyslog-2.0.1-1.rockspec",
    "content": "local package_name = \"luasyslog\"\nlocal package_version = \"2.0.1\"\nlocal rockspec_revision = \"1\"\nlocal github_account_name = \"lunarmodules\"\nlocal github_repo_name = package_name\n\n\npackage = package_name\nversion = package_version..\"-\"..rockspec_revision\nsource = {\n   url = \"git://github.com/\"..github_account_name..\"/\"..github_repo_name..\".git\",\n   branch = (package_version == \"dev\") and \"main\" or nil,\n   tag = (package_version ~= \"dev\") and package_version or nil,\n}\ndescription = {\n   summary = \"Syslog logging for Lua\",\n   detailed = [[\n     Addon for LuaLogging to log to the system log on unix systems.\n     Can also be used without LuaLogging to directly write to syslog.\n   ]],\n   license = \"MIT/X11\",\n   homepage = \"https://github.com/\"..github_account_name..\"/\"..github_repo_name,\n}\ndependencies = {\n   \"lua >= 5.1\",\n   \"lualogging >= 1.4.0, < 2.0.0\",\n}\nbuild = {\n   type = \"builtin\",\n   modules = {\n      lsyslog = {\n         sources = \"lsyslog.c\",\n      },\n      [\"logging.syslog\"] = \"syslog.lua\",\n   }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  nix.Config:\n    fields:\n      - key: CaptureOwnedFiles\n        description: CaptureOwnedFiles determines whether to record the list of files owned by each Nix package discovered in the store. Recording owned files provides more detailed information but increases processing time and memory usage.\n        app_key: nix.capture-owned-files\ncatalogers:\n  - ecosystem: nix # MANUAL\n    name: nix-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - language\n      - nix\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/nix/var/nix/db/db.sqlite'\n          - '**/nix/store/*'\n          - '**/nix/store/*.drv'\n    metadata_types: # AUTO-GENERATED\n      - pkg.NixStoreEntry\n    package_types: # AUTO-GENERATED\n      - nix\n    json_schema_types: # AUTO-GENERATED\n      - NixStoreEntry\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n      - name: package_manager.files.listing\n        default: true\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: true\n        evidence:\n          - NixStoreEntry.OutputHash\n  - ecosystem: nix # MANUAL\n    name: nix-store-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    config: nix.Config # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - deprecated\n      - package\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/nix/store/*'\n          - '**/nix/store/*.drv'\n    metadata_types: # AUTO-GENERATED\n      - pkg.NixStoreEntry\n    package_types: # AUTO-GENERATED\n      - nix\n    json_schema_types: # AUTO-GENERATED\n      - NixStoreEntry\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default:\n          - direct\n          - indirect\n      - name: dependency.edges\n        default: complete\n      - name: dependency.kinds\n        default:\n          - runtime\n      - name: package_manager.files.listing\n        default: false\n        conditions:\n          - when:\n              CaptureOwnedFiles: true\n            value: true\n        evidence:\n          - NixStoreEntry.Files\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: true\n        evidence:\n          - NixStoreEntry.OutputHash\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/cataloger.go",
    "content": "package nix\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype Config struct {\n\t// CaptureOwnedFiles determines whether to record the list of files owned by each Nix package discovered in the store. Recording owned files provides more detailed information but increases processing time and memory usage.\n\t// app-config: nix.capture-owned-files\n\tCaptureOwnedFiles bool `json:\"capture-owned-files\" yaml:\"capture-owned-files\" mapstructure:\"capture-owned-files\"`\n}\n\nfunc (c Config) WithCaptureOwnedFiles(set bool) Config {\n\tc.CaptureOwnedFiles = set\n\treturn c\n}\n\nfunc DefaultConfig() Config {\n\treturn Config{\n\t\tCaptureOwnedFiles: false,\n\t}\n}\n\n// cataloger finds package outputs installed in the Nix store location (/nix/store/*) or in the internal nix database (/nix/var/nix/db/db.sqlite).\ntype cataloger struct {\n\tdbParser       dbCataloger\n\tstoreCataloger storeCataloger\n}\n\nfunc NewCataloger(cfg Config) pkg.Cataloger {\n\tname := \"nix-cataloger\"\n\treturn cataloger{\n\t\tdbParser:       newDBCataloger(cfg, name),\n\t\tstoreCataloger: newStoreCataloger(cfg, name),\n\t}\n}\n\nfunc (c cataloger) Name() string {\n\treturn c.dbParser.catalogerName\n}\n\nfunc (c cataloger) Catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\t// always try the DB cataloger first (based off of information recorded by actions taken by nix tooling)\n\tpkgs, rels, err := c.dbParser.catalog(ctx, resolver)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to catalog nix packages from database: %w\", err)\n\t}\n\tif len(pkgs) > 0 {\n\t\treturn pkgs, rels, nil\n\t}\n\n\t// there are no results from the DB cataloger, then use the store path cataloger (not as accurate / detailed in information)\n\treturn c.storeCataloger.Catalog(ctx, resolver)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/cataloger_test.go",
    "content": "package nix\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t_ \"modernc.org/sqlite\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Image(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\twantPkgs []string\n\t\twantRel  []string\n\t}{\n\t\t{\n\t\t\t// $ nix-store -q --tree $(which jq)\n\t\t\t//\n\t\t\t// /nix/store/nzwfgsp28vgxv7n2gl5fxqkca9awh4dz-jq-1.6-bin3.4\n\t\t\t// ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8\n\t\t\t// │   ├───/nix/store/cw8fpl8r1x9rmaqj55fwbfnnrgw7b40k-libidn2-2.3.4\n\t\t\t// │   │   ├───/nix/store/h1ysk4vvw48winwmh38rvnsj0dlsz7c1-libunistring-1.1\n\t\t\t// │   │   │   └───/nix/store/h1ysk4vvw48winwmh38rvnsj0dlsz7c1-libunistring-1.1 [...]\n\t\t\t// │   │   └───/nix/store/cw8fpl8r1x9rmaqj55fwbfnnrgw7b40k-libidn2-2.3.4 [...]\n\t\t\t// │   ├───/nix/store/fmz62d844wf4blb11k21f4m0q6n6hdfp-xgcc-12.3.0-libgcc\n\t\t\t// │   └───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t// ├───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib\n\t\t\t// │   ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t// │   └───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib [...]\n\t\t\t// └───/nix/store/1x3s2v9wc9m302cspfqcn2iwar0b5w99-jq-1.6-lib\n\t\t\t//     ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t//     ├───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib [...]\n\t\t\t//     └───/nix/store/1x3s2v9wc9m302cspfqcn2iwar0b5w99-jq-1.6-lib [...]\n\t\t\tfixture: \"image-nixos-jq-pkg-db\",\n\t\t\twantPkgs: []string{\n\t\t\t\t\"glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // lib output\n\t\t\t\t\"jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // bin output\n\t\t\t\t\"libidn2 @ 2.3.4 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"libunistring @ 1.1 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"oniguruma @ 6.9.8 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"xgcc @ 12.3.0 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t},\n\t\t\twantRel: []string{\n\t\t\t\t// used the DB cataloger, thus has a complete dependency graph\n\t\t\t\t\"glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite) [dependency-of] jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // jq bin output\n\t\t\t\t\"glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite) [dependency-of] jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // jq lib output\n\t\t\t\t\"glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite) [dependency-of] oniguruma @ 6.9.8 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"jq @ 1.6 (/nix/var/nix/db/db.sqlite) [dependency-of] jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // jq bin to lib output dependency\n\t\t\t\t\"libidn2 @ 2.3.4 (/nix/var/nix/db/db.sqlite) [dependency-of] glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"libunistring @ 1.1 (/nix/var/nix/db/db.sqlite) [dependency-of] libidn2 @ 2.3.4 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t\t\"oniguruma @ 6.9.8 (/nix/var/nix/db/db.sqlite) [dependency-of] jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // jq bin output\n\t\t\t\t\"oniguruma @ 6.9.8 (/nix/var/nix/db/db.sqlite) [dependency-of] jq @ 1.6 (/nix/var/nix/db/db.sqlite)\", // jq lib output\n\t\t\t\t\"xgcc @ 12.3.0 (/nix/var/nix/db/db.sqlite) [dependency-of] glibc @ 2.37-8 (/nix/var/nix/db/db.sqlite)\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tExpectsPackageStrings(tt.wantPkgs).\n\t\t\t\tExpectsRelationshipStrings(tt.wantRel).\n\t\t\t\tTestCataloger(t, NewCataloger(DefaultConfig()))\n\t\t})\n\t}\n}\n\nfunc TestCataloger_Image_FilesListing(t *testing.T) {\n\ttests := []struct {\n\t\tfixture      string\n\t\twantPkgFiles map[string][]string\n\t}{\n\t\t{\n\t\t\tfixture: \"image-nixos-jq-pkg-db\",\n\t\t\twantPkgFiles: map[string][]string{\n\t\t\t\t\"libidn2\": {\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/lib/libidn2.la\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/lib/libidn2.so.0.3.8\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/cs/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/da/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/de/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/eo/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/es/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/fi/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/fr/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/fur/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/hr/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/hu/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/id/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/it/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/ja/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/ka/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/ko/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/nl/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/pl/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/pt_BR/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/ro/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/ru/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/sr/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/sv/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/uk/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/vi/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t\t\"/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4/share/locale/zh_CN/LC_MESSAGES/libidn2.mo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tExpectsAssertion(func(t *testing.T, pkgs []pkg.Package, relationships []artifact.Relationship) {\n\t\t\t\t\tfound := strset.New()\n\t\t\t\t\tfor _, p := range pkgs {\n\t\t\t\t\t\tif files, ok := tt.wantPkgFiles[p.Name]; ok {\n\t\t\t\t\t\t\tm, ok := p.Metadata.(pkg.NixStoreEntry)\n\t\t\t\t\t\t\trequire.True(t, ok)\n\t\t\t\t\t\t\tif d := cmp.Diff(files, m.Files); d != \"\" {\n\t\t\t\t\t\t\t\tt.Errorf(\"unexpected files for package %q: %s\", p.Name, d)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfound.Add(p.Name)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\texpected := strset.New()\n\t\t\t\t\tfor n := range tt.wantPkgFiles {\n\t\t\t\t\t\texpected.Add(n)\n\t\t\t\t\t}\n\t\t\t\t\tassert.ElementsMatch(t, expected.List(), found.List())\n\t\t\t\t}).\n\t\t\t\tTestCataloger(t, NewCataloger(Config{CaptureOwnedFiles: true}))\n\t\t})\n\t}\n}\n\nfunc TestCataloger_Directory(t *testing.T) {\n\n\ttests := []struct {\n\t\tfixture  string\n\t\twantPkgs []pkg.Package\n\t\twantRel  []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/fixture-1\",\n\t\t\twantPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"glibc\",\n\t\t\t\t\tVersion: \"2.34-210\",\n\t\t\t\t\tPURL:    \"pkg:nix/glibc@2.34-210?drvpath=5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv&output=bin&outputhash=h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"nix/store/5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"nix-cataloger\",\n\t\t\t\t\tType:    pkg.NixPkg,\n\t\t\t\t\tMetadata: pkg.NixStoreEntry{\n\t\t\t\t\t\tPath: \"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\",\n\t\t\t\t\t\tDerivation: pkg.NixDerivation{\n\t\t\t\t\t\t\tPath:   \"nix/store/5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv\",\n\t\t\t\t\t\t\tSystem: \"aarch64-linux\",\n\t\t\t\t\t\t\tInputDerivations: []pkg.NixDerivationReference{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/1zi0k7y01rhqr2gfqb42if0icswg65sj-locale-C.diff.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/45j86ggi8mlpfslcrgvjf7m6phia21fp-raw.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/4fnfsd9sc7bam6886hwyaprdsww66dg3-bison-3.8.2.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/51azdrrvcqrk2hbky7ryphlwd99yz25d-linux-headers-5.18.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/67s0qc21gyarmdwc181bqmjc3qzv8zkz-libidn2-2.3.2.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/9rhliwskh3mrrs5nfzgz0x6wrccyfg7k-bootstrap-stage0-glibc-bootstrap.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/cl1wcw2v1ifzjlkzi50h32a6lms9m25s-binutils-2.38.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/ghjc8bkfk8lh53z14mk2nk7h059zh7vx-python3-minimal-3.10.5.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/k3786wfzw637r7sylccdmm92saqp73d8-glibc-2.34.tar.xz.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/l5zr5m1agvvnic49fg6qc44g5fgj3la1-glibc-reinstate-prlimit64-fallback.patch?id=eab07e78b691ae7866267fc04d31c7c3ad6b0eeb.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/mf5kz6d01ab8h0rswzyr04mbcd6g5x9n-bootstrap-stage2-stdenv-linux.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/nd1zy67vp028707pbh466qhrfqh4cpq6-bootstrap-stage2-gcc-wrapper-.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/ra77ww7p2xx8jh8n4m9vmj6wc8wxijdb-bootstrap-tools.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/wlldapf5bg58kivw520ll5bw0fmlaid7-raw.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInputSources: []string{\n\t\t\t\t\t\t\t\t\"/nix/store/001gp43bjqzx60cg345n2slzg7131za8-nix-nss-open-files.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/7kw224hdyxd7115lrqh9a4dv2x8msq2s-fix-x64-abi.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/8haph3ng4mgsqr6p4024vj8k6kg3mqc4-nix-locale-archive.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/95hp6hs9g73h93safadb8x6vajyqkv6q-0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh\",\n\t\t\t\t\t\t\t\t\"/nix/store/b1w7zbvm39ff1i52iyjggyvw2rdxz104-dont-use-system-ld-so-cache.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/ikmqczy0y20n04a2b8qfflzwihv8139g-separate-debug-info.sh\",\n\t\t\t\t\t\t\t\t\"/nix/store/mgx19wbmgrh3rblbxhs6vi47sha15n11-2.34-master.patch.gz\",\n\t\t\t\t\t\t\t\t\"/nix/store/mnglr8rr7nl444h7p50ysyq8qd0fm1lm-dont-use-system-ld-so-preload.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/xkd50xxii6k7l1kmw4l5x6xzbhamcs87-allow-kernel-2.6.32.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/za0pg7fmysrcwrqcal26fnmzw6vycgdn-fix_path_attribute_in_getconf.patch\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOutputHash: \"h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\t\t\tOutput:     \"bin\",\n\t\t\t\t\t\tFiles:      nil, // default cataloger configure does not capture owned files\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixture).\n\t\t\t\tExpects(tt.wantPkgs, tt.wantRel).\n\t\t\t\tTestCataloger(t, NewCataloger(DefaultConfig()))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/db_cataloger.go",
    "content": "package nix\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nconst defaultSchema = 10\n\ntype dbProcessor func(ctx context.Context, config Config, dbLocation file.Location, resolver file.Resolver, catalogerName string) ([]pkg.Package, []artifact.Relationship, error)\n\ntype dbCataloger struct {\n\tconfig          Config\n\tschemaProcessor map[int]dbProcessor\n\tcatalogerName   string\n}\n\nfunc newDBCataloger(cfg Config, catalogerName string) dbCataloger {\n\treturn dbCataloger{\n\t\tconfig:        cfg,\n\t\tcatalogerName: catalogerName,\n\t\tschemaProcessor: map[int]dbProcessor{\n\t\t\t10: processV10DB,\n\t\t},\n\t}\n}\n\ntype dbPackageEntry struct {\n\tID    int\n\tDrvID int\n\tnixStorePath\n\tDeriverPath string\n\t*derivationFile\n\tLocation *file.Location\n\tFiles    []string\n}\n\nfunc (c dbCataloger) catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tdbLocs, err := resolver.FilesByGlob(\"**/nix/var/nix/db/db.sqlite\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to find Nix database: %w\", err)\n\t}\n\n\tif len(dbLocs) == 0 {\n\t\treturn nil, nil, nil\n\t}\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\tvar errs error\n\n\tfor _, dbLoc := range dbLocs {\n\t\tparser, schema := c.selectDBParser(dbLoc, resolver)\n\t\tif parser == nil {\n\t\t\terrs = unknown.Appendf(errs, dbLoc.Coordinates, \"unsupported Nix database schema for schema=%d at %q\", schema, dbLoc.RealPath)\n\t\t\tcontinue\n\t\t}\n\n\t\tnewPkgs, newRelationships, err := parser(ctx, c.config, dbLoc, resolver, c.catalogerName)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, dbLoc.Coordinates, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tpkgs = append(pkgs, newPkgs...)\n\t\trelationships = append(relationships, newRelationships...)\n\t}\n\n\treturn pkgs, relationships, errs\n}\n\nfunc (c dbCataloger) selectDBParser(dbLocation file.Location, resolver file.Resolver) (dbProcessor, int) {\n\tloc := resolver.RelativeFileByPath(dbLocation, path.Join(path.Dir(dbLocation.RealPath), \"schema\"))\n\tif loc == nil {\n\t\tlog.WithFields(\"path\", dbLocation.RealPath).Tracef(\"failed to detect Nix database schema, assuming %d\", defaultSchema)\n\t\treturn c.schemaProcessor[defaultSchema], 0\n\t}\n\n\tschemaContents, err := resolver.FileContentsByLocation(*loc)\n\tdefer internal.CloseAndLogError(schemaContents, loc.RealPath)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", loc.RealPath).Tracef(\"failed to open Nix database schema file, assuming %d\", defaultSchema)\n\t\treturn c.schemaProcessor[defaultSchema], 0\n\t}\n\n\tscanner := bufio.NewScanner(schemaContents)\n\tif !scanner.Scan() {\n\t\tlog.WithFields(\"path\", loc.RealPath).Tracef(\"failed to read Nix database schema file, assuming %d\", defaultSchema)\n\t\treturn c.schemaProcessor[defaultSchema], 0\n\t}\n\n\tschema, err := strconv.Atoi(strings.TrimSpace(scanner.Text()))\n\tif err != nil {\n\t\tlog.WithFields(\"path\", loc.RealPath).Tracef(\"failed to parse Nix database schema file, assuming %d\", defaultSchema)\n\t\treturn c.schemaProcessor[defaultSchema], 0\n\t}\n\n\tprocessor := c.schemaProcessor[schema]\n\n\tif processor == nil {\n\t\tclosestSchema := c.findClosestSchema(schema)\n\t\tif closestSchema == 0 {\n\t\t\tschema = defaultSchema\n\t\t}\n\t\tprocessor = c.schemaProcessor[closestSchema]\n\t\tlog.WithFields(\"path\", loc.RealPath).Tracef(\"unsupported Nix database schema (%d), treating as closest available schema (%d)\", schema, closestSchema)\n\t}\n\n\treturn processor, schema\n}\n\nfunc (c dbCataloger) findClosestSchema(got int) int {\n\tvar closest int\n\tvar closestDiff int\n\tfor schema := range c.schemaProcessor {\n\t\tif schema == got {\n\t\t\treturn schema\n\t\t}\n\t\tdiff := schema - got\n\t\tif diff < 0 {\n\t\t\tdiff = -diff\n\t\t}\n\t\tif diff < closestDiff {\n\t\t\tclosestDiff = diff\n\t\t\tclosest = schema\n\t\t}\n\t}\n\treturn closest\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/db_cataloger_v10.go",
    "content": "package nix\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nvar _ dbProcessor = processV10DB\n\nfunc processV10DB(ctx context.Context, config Config, dbLocation file.Location, resolver file.Resolver, catalogerName string) ([]pkg.Package, []artifact.Relationship, error) {\n\tdbContents, err := resolver.FileContentsByLocation(dbLocation)\n\tdefer internal.CloseAndLogError(dbContents, dbLocation.RealPath)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to read Nix database: %w\", err)\n\t}\n\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\ttempDB, cleanupDB, err := createTempDB(td, dbContents)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create temporary database: %w\", err)\n\t}\n\t// defer order is LIFO: cleanupDB (remove file) must run after db.Close and tempDB.Close\n\tdefer cleanupDB()\n\n\t// close order is LIFO: db.Close() (SQLite conn) → tempDB.Close() (file handle) → cleanupDB (remove file)\n\tdefer tempDB.Close()\n\n\tdb, err := sql.Open(\"sqlite\", tempDB.Name())\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to open database: %w\", err)\n\t}\n\tdefer db.Close()\n\tdb.SetConnMaxLifetime(0)\n\n\tpackageEntries, err := extractV10DBPackages(config, db, dbLocation, resolver)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tpkgs, relationships, err := finalizeV10DBResults(db, packageEntries, catalogerName)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn pkgs, relationships, nil\n}\n\nfunc extractV10DBPackages(config Config, db *sql.DB, dbLocation file.Location, resolver file.Resolver) (map[int]*dbPackageEntry, error) {\n\tpkgs, err := extractV10DBValidPaths(config, db, dbLocation, resolver)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = extractV10DBDerivationOutputs(db, pkgs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn pkgs, nil\n}\n\nfunc extractV10DBValidPaths(config Config, db *sql.DB, dbLocation file.Location, resolver file.Resolver) (map[int]*dbPackageEntry, error) {\n\tpackages := make(map[int]*dbPackageEntry)\n\n\trows, err := db.Query(\"SELECT id, path, hash, deriver FROM ValidPaths\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to query ValidPaths: %w\", err)\n\t}\n\tdefer rows.Close()\n\n\tfor rows.Next() {\n\t\tvar id int\n\t\tvar path, hash, deriver sql.NullString\n\n\t\tif err := rows.Scan(&id, &path, &hash, &deriver); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to scan ValidPaths row: %w\", err)\n\t\t}\n\n\t\tif !path.Valid {\n\t\t\tcontinue\n\t\t}\n\n\t\tnsp := parseNixStorePath(path.String)\n\t\tif nsp == nil {\n\t\t\tnsp = &nixStorePath{}\n\t\t}\n\t\t// always trust the DB values over string parsing\n\t\tnsp.OutputHash = hash.String\n\t\tnsp.StorePath = path.String\n\n\t\tvar files []string\n\t\tif config.CaptureOwnedFiles {\n\t\t\tfiles = listOutputPaths(path.String, resolver)\n\t\t}\n\n\t\tdf, err := newDerivationFromPath(deriver.String, resolver)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"path\", deriver.String, \"error\", err).Trace(\"unable to find derivation\")\n\t\t\tdf = nil\n\t\t}\n\n\t\tpackages[id] = &dbPackageEntry{\n\t\t\tID:             id,\n\t\t\tnixStorePath:   *nsp,\n\t\t\tderivationFile: df,\n\t\t\tDeriverPath:    deriver.String,\n\t\t\tLocation:       &dbLocation,\n\t\t\tFiles:          files,\n\t\t}\n\t}\n\n\treturn packages, nil\n}\n\nfunc listOutputPaths(storePath string, resolver file.Resolver) []string {\n\tif storePath == \"\" {\n\t\treturn nil\n\t}\n\tsearchGlob := storePath + \"/**/*\"\n\tlocations, err := resolver.FilesByGlob(searchGlob)\n\tif err != nil {\n\t\tlog.WithFields(\"path\", storePath, \"error\", err).Trace(\"unable to find output paths\")\n\t\treturn nil\n\t}\n\n\treturn filePaths(locations)\n}\n\nfunc extractV10DBDerivationOutputs(db *sql.DB, packages map[int]*dbPackageEntry) error {\n\toutputRows, err := db.Query(\"SELECT drv, id, path FROM DerivationOutputs\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to query DerivationOutputs: %w\", err)\n\t}\n\tdefer outputRows.Close()\n\n\tpkgsByPath := make(map[string]*dbPackageEntry)\n\tfor _, p := range packages {\n\t\tpkgsByPath[p.StorePath] = p\n\t}\n\n\tfor outputRows.Next() {\n\t\tvar drvID int\n\t\tvar outputID, outputPath string\n\n\t\tif err := outputRows.Scan(&drvID, &outputID, &outputPath); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to scan DerivationOutputs row: %w\", err)\n\t\t}\n\n\t\tif _, ok := pkgsByPath[outputPath]; !ok {\n\t\t\tcontinue\n\t\t}\n\t\tpkgsByPath[outputPath].Output = outputID\n\t\tpkgsByPath[outputPath].DrvID = drvID\n\t}\n\n\treturn nil\n}\n\nfunc finalizeV10DBResults(db *sql.DB, packageEntries map[int]*dbPackageEntry, catalogerName string) ([]pkg.Package, []artifact.Relationship, error) {\n\t// make Syft packages for each package entry\n\tsyftPackages := make(map[int]pkg.Package)\n\tfor id, entry := range packageEntries {\n\t\tsyftPackages[id] = newDBPackage(entry, catalogerName)\n\t}\n\n\tvar relationships []artifact.Relationship\n\n\tquery := `\n\t   SELECT r.referrer, r.reference\n\t   FROM Refs r\n\t   JOIN ValidPaths v1 ON r.referrer = v1.id\n\t   JOIN ValidPaths v2 ON r.reference = v2.id\n\t`\n\n\trefRows, err := db.Query(query)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to query Refs with ValidPaths JOIN: %w\", err)\n\t}\n\tdefer refRows.Close()\n\n\trelExists := make(map[int]map[int]bool)\n\n\tfor refRows.Next() {\n\t\tvar referrerID, referenceID int\n\n\t\tif err := refRows.Scan(&referrerID, &referenceID); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to scan Refs row: %w\", err)\n\t\t}\n\n\t\tif referrerID == referenceID {\n\t\t\t// skip self-references\n\t\t\tcontinue\n\t\t}\n\n\t\treferrer, refExists := syftPackages[referrerID]\n\t\treference, refeeExists := syftPackages[referenceID]\n\n\t\tif !refExists || !refeeExists {\n\t\t\t// only include relationships for packages we have discovered\n\t\t\tcontinue\n\t\t}\n\n\t\tif _, ok := relExists[referrerID]; !ok {\n\t\t\trelExists[referrerID] = make(map[int]bool)\n\t\t}\n\n\t\tif relExists[referrerID][referenceID] {\n\t\t\t// deduplicate existing relationships\n\t\t\tcontinue\n\t\t}\n\n\t\trelExists[referrerID][referenceID] = true\n\n\t\trel := artifact.Relationship{\n\t\t\tFrom: reference,\n\t\t\tTo:   referrer,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t}\n\n\t\trelationships = append(relationships, rel)\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, p := range syftPackages {\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\treturn pkgs, relationships, nil\n}\n\nfunc createTempDB(td *tmpdir.TempDir, content io.ReadCloser) (*os.File, func(), error) {\n\tnoop := func() {}\n\n\ttempFile, cleanup, err := td.NewFile(\"nix-db-*.sqlite\") //nolint:gocritic // cleanup is returned to caller, not deferred here\n\tif err != nil {\n\t\treturn nil, noop, err\n\t}\n\n\t_, err = io.Copy(tempFile, content)\n\tif err != nil {\n\t\ttempFile.Close()\n\t\tcleanup()\n\t\treturn nil, noop, err\n\t}\n\n\treturn tempFile, cleanup, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/derivation.go",
    "content": "package nix\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/nix-community/go-nix/pkg/derivation\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype derivationFile struct {\n\tLocation file.Location\n\tderivation.Derivation\n}\n\nfunc newDerivationFromPath(p string, resolver file.Resolver) (*derivationFile, error) {\n\tlocs, err := resolver.FilesByPath(p)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to find derivation: %w\", err)\n\t}\n\n\tif len(locs) == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// only use one reference\n\treturn newDerivationFromLocation(locs[0], resolver)\n}\n\nfunc newDerivationFromLocation(loc file.Location, resolver file.Resolver) (*derivationFile, error) {\n\treader, err := resolver.FileContentsByLocation(loc)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read derivation: %w\", err)\n\t}\n\tdefer internal.CloseAndLogError(reader, loc.RealPath)\n\n\td, err := derivation.ReadDerivation(reader)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse derivation: %w\", err)\n\t}\n\n\treturn &derivationFile{\n\t\tLocation:   loc,\n\t\tDerivation: *d,\n\t}, nil\n}\n\ntype derivations struct {\n\tderivationsByDrvPath map[string]derivationFile\n\tdrvPathByOutputPath  map[string]string\n}\n\nfunc newDerivations() *derivations {\n\treturn &derivations{\n\t\tderivationsByDrvPath: make(map[string]derivationFile),\n\t\tdrvPathByOutputPath:  make(map[string]string),\n\t}\n}\n\nfunc (c *derivations) add(df derivationFile) {\n\tc.derivationsByDrvPath[df.Location.RealPath] = df\n\tfor _, output := range df.Outputs {\n\t\tif output == nil || output.Path == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tc.drvPathByOutputPath[output.Path] = df.Location.RealPath\n\t}\n}\n\nfunc (c *derivations) findDerivationForOutputPath(outputPath string) *derivationFile {\n\tif !strings.HasPrefix(outputPath, \"/\") {\n\t\toutputPath = \"/\" + outputPath\n\t}\n\tif drvPath, ok := c.drvPathByOutputPath[outputPath]; ok {\n\t\td, ok := c.derivationsByDrvPath[drvPath]\n\t\tif ok {\n\t\t\treturn &d\n\t\t}\n\t}\n\treturn nil\n}\n\n// given a path as input, assuming it's an output path for a derivation, find all input store paths needed for this particular output path.\nfunc (c *derivations) findDependencies(p string) []string {\n\tif d, ok := c.derivationsByDrvPath[p]; ok {\n\t\tvar deps []string\n\t\tfor drvPath, names := range d.InputDerivations {\n\t\t\tif len(names) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, n := range names {\n\t\t\t\toutputPath := c.namedOutputStorePath(drvPath, n)\n\t\t\t\tif outputPath == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdeps = append(deps, outputPath)\n\t\t\t}\n\t\t}\n\t\tfor _, inputSrc := range d.InputSources {\n\t\t\tif inputSrc == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdeps = append(deps, inputSrc)\n\t\t}\n\t\treturn deps\n\t}\n\tif drvPath, ok := c.drvPathByOutputPath[p]; ok {\n\t\treturn c.findDependencies(drvPath)\n\t}\n\treturn nil\n}\n\nfunc (c *derivations) namedOutputStorePath(drvPath, name string) string {\n\tif d, ok := c.derivationsByDrvPath[drvPath]; ok {\n\t\tif output, ok := d.Outputs[name]; ok {\n\t\t\treturn output.Path\n\t\t}\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/derivation_test.go",
    "content": "package nix\n\nimport (\n\t\"testing\"\n\n\t\"github.com/nix-community/go-nix/pkg/derivation\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestDerivationCollection_Add(t *testing.T) {\n\tc := newDerivations()\n\n\td := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/xyz789-foo.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/abc123-foo\",\n\t\t\t\t},\n\t\t\t\t\"dev\": {\n\t\t\t\t\tPath: \"/nix/store/def456-foo-dev\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tc.add(d)\n\n\tassert.Len(t, c.derivationsByDrvPath, 1)\n\tassert.Len(t, c.drvPathByOutputPath, 2)\n\tassert.Equal(t, \"/nix/store/xyz789-foo.drv\", c.drvPathByOutputPath[\"/nix/store/abc123-foo\"])\n\tassert.Equal(t, \"/nix/store/xyz789-foo.drv\", c.drvPathByOutputPath[\"/nix/store/def456-foo-dev\"])\n}\n\nfunc TestDerivationCollection_AddNilOutputs(t *testing.T) {\n\tc := newDerivations()\n\n\td := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/xyz789-foo.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": nil,\n\t\t\t\t\"dev\": {\n\t\t\t\t\tPath: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tc.add(d)\n\n\tassert.Len(t, c.derivationsByDrvPath, 1)\n\tassert.Empty(t, c.drvPathByOutputPath)\n}\nfunc TestDerivationCollection_FindDerivationForOutputPath(t *testing.T) {\n\tc := newDerivations()\n\n\t// standard derivation\n\tstandardDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/xyz789-foo.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/abc123-foo\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(standardDrv)\n\n\t// derivation with multiple outputs\n\tmultiOutputDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/multi-output.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/multi-out-path\",\n\t\t\t\t},\n\t\t\t\t\"dev\": {\n\t\t\t\t\tPath: \"/nix/store/multi-dev-path\",\n\t\t\t\t},\n\t\t\t\t\"doc\": {\n\t\t\t\t\tPath: \"/nix/store/multi-doc-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(multiOutputDrv)\n\n\t// derivation with special characters in path\n\tspecialCharsDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/special-chars+_.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/special-chars+_-output\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(specialCharsDrv)\n\n\t// derivation with same output path as another (should override)\n\tduplicateOutputDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/duplicate.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/abc123-foo\", // same as standardDrv output\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(duplicateOutputDrv)\n\n\ttests := []struct {\n\t\tname       string\n\t\toutputPath string\n\t\texpected   *derivationFile\n\t}{\n\t\t{\n\t\t\tname:       \"output path exists\",\n\t\t\toutputPath: \"/nix/store/abc123-foo\",\n\t\t\texpected:   &duplicateOutputDrv,\n\t\t},\n\t\t{\n\t\t\tname:       \"output path exists without leading slash\",\n\t\t\toutputPath: \"nix/store/abc123-foo\",\n\t\t\texpected:   &duplicateOutputDrv,\n\t\t},\n\t\t{\n\t\t\tname:       \"output path does not exist\",\n\t\t\toutputPath: \"/nix/store/nonexistent\",\n\t\t},\n\t\t{\n\t\t\tname:       \"multiple output derivation - out path\",\n\t\t\toutputPath: \"/nix/store/multi-out-path\",\n\t\t\texpected:   &multiOutputDrv,\n\t\t},\n\t\t{\n\t\t\tname:       \"multiple output derivation - dev path\",\n\t\t\toutputPath: \"/nix/store/multi-dev-path\",\n\t\t\texpected:   &multiOutputDrv,\n\t\t},\n\t\t{\n\t\t\tname:       \"special characters in path\",\n\t\t\toutputPath: \"/nix/store/special-chars+_-output\",\n\t\t\texpected:   &specialCharsDrv,\n\t\t},\n\t\t{\n\t\t\tname:       \"empty string path\",\n\t\t\toutputPath: \"\",\n\t\t},\n\t\t{\n\t\t\tname:       \"path with just a slash\",\n\t\t\toutputPath: \"/\",\n\t\t},\n\t\t{\n\t\t\tname:       \"drv path exists in mapping but not in derivations\",\n\t\t\toutputPath: \"/nix/store/missing\",\n\t\t},\n\t}\n\n\t// add a path mapping to a derivation that doesn't exist\n\tc.drvPathByOutputPath[\"/nix/store/missing\"] = \"/nix/store/nonexistent.drv\"\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := c.findDerivationForOutputPath(tt.outputPath)\n\t\t\tif tt.expected == nil {\n\t\t\t\tassert.Nil(t, result)\n\t\t\t} else {\n\t\t\t\trequire.NotNil(t, result)\n\t\t\t\tassert.Equal(t, tt.expected.Location.RealPath, result.Location.RealPath)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDerivationCollection_FindDependencies(t *testing.T) {\n\tc := newDerivations()\n\n\t// set up a dependency tree:\n\t// - foo depends on bar and baz\n\t// - bar depends on qux\n\n\t// create \"qux\" derivation\n\tquxDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/qux.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/qux-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(quxDrv)\n\n\t// create \"bar\" derivation which depends on qux\n\tbarDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/bar.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/bar-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tInputDerivations: map[string][]string{\n\t\t\t\t\"/nix/store/qux.drv\": {\"out\"},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(barDrv)\n\n\t// create \"baz\" derivation\n\tbazDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/baz.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/baz-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(bazDrv)\n\n\t// create \"foo\" derivation which depends on bar and baz\n\tfooDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/foo.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/foo-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tInputDerivations: map[string][]string{\n\t\t\t\t\"/nix/store/bar.drv\": {\"out\"},\n\t\t\t\t\"/nix/store/baz.drv\": {\"out\"},\n\t\t\t},\n\t\t\tInputSources: []string{\n\t\t\t\t\"/nix/store/src1\",\n\t\t\t\t\"/nix/store/src2\",\n\t\t\t},\n\t\t},\n\t}\n\tc.add(fooDrv)\n\n\t// add a test case for empty input names\n\temptyNamesDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/empty-names.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/empty-names-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tInputDerivations: map[string][]string{\n\t\t\t\t\"/nix/store/bar.drv\": {},\n\t\t\t},\n\t\t},\n\t}\n\tc.add(emptyNamesDrv)\n\n\t// add a test case for empty input sources\n\temptySourcesDrv := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/empty-sources.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/empty-sources-path\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tInputDerivations: map[string][]string{\n\t\t\t\t\"/nix/store/bar.drv\": {\"out\"},\n\t\t\t},\n\t\t\tInputSources: []string{\n\t\t\t\t\"\",\n\t\t\t},\n\t\t},\n\t}\n\tc.add(emptySourcesDrv)\n\n\ttests := []struct {\n\t\tname     string\n\t\tpath     string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname: \"lookup by derivation path\",\n\t\t\tpath: \"/nix/store/foo.drv\",\n\t\t\texpected: []string{\n\t\t\t\t\"/nix/store/bar-path\",\n\t\t\t\t\"/nix/store/baz-path\",\n\t\t\t\t\"/nix/store/src1\",\n\t\t\t\t\"/nix/store/src2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"lookup by output path\",\n\t\t\tpath: \"/nix/store/foo-path\",\n\t\t\texpected: []string{\n\t\t\t\t\"/nix/store/bar-path\",\n\t\t\t\t\"/nix/store/baz-path\",\n\t\t\t\t\"/nix/store/src1\",\n\t\t\t\t\"/nix/store/src2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"lookup by derivation with no inputs\",\n\t\t\tpath:     \"/nix/store/qux.drv\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"lookup nonexistent path\",\n\t\t\tpath:     \"/nix/store/nonexistent\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"lookup derivation with empty input names\",\n\t\t\tpath:     \"/nix/store/empty-names.drv\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname: \"lookup derivation with empty input sources\",\n\t\t\tpath: \"/nix/store/empty-sources.drv\",\n\t\t\texpected: []string{\n\t\t\t\t\"/nix/store/bar-path\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := c.findDependencies(tt.path)\n\t\t\tif tt.expected == nil {\n\t\t\t\tassert.Nil(t, result)\n\t\t\t} else {\n\t\t\t\trequire.NotNil(t, result)\n\t\t\t\tassert.ElementsMatch(t, tt.expected, result)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDerivationCollection_NamedOutputStorePath(t *testing.T) {\n\tc := newDerivations()\n\n\td := derivationFile{\n\t\tLocation: file.NewLocation(\"/nix/store/xyz789-foo.drv\"),\n\t\tDerivation: derivation.Derivation{\n\t\t\tOutputs: map[string]*derivation.Output{\n\t\t\t\t\"out\": {\n\t\t\t\t\tPath: \"/nix/store/abc123-foo\",\n\t\t\t\t},\n\t\t\t\t\"dev\": {\n\t\t\t\t\tPath: \"/nix/store/def456-foo-dev\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tc.add(d)\n\n\ttests := []struct {\n\t\tname     string\n\t\tdrvPath  string\n\t\toutName  string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"existing drv and output\",\n\t\t\tdrvPath:  \"/nix/store/xyz789-foo.drv\",\n\t\t\toutName:  \"out\",\n\t\t\texpected: \"/nix/store/abc123-foo\",\n\t\t},\n\t\t{\n\t\t\tname:     \"existing drv and dev output\",\n\t\t\tdrvPath:  \"/nix/store/xyz789-foo.drv\",\n\t\t\toutName:  \"dev\",\n\t\t\texpected: \"/nix/store/def456-foo-dev\",\n\t\t},\n\t\t{\n\t\t\tname:     \"existing drv but nonexistent output\",\n\t\t\tdrvPath:  \"/nix/store/xyz789-foo.drv\",\n\t\t\toutName:  \"nonexistent\",\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname:     \"nonexistent drv\",\n\t\t\tdrvPath:  \"/nix/store/nonexistent.drv\",\n\t\t\toutName:  \"out\",\n\t\t\texpected: \"\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := c.namedOutputStorePath(tt.drvPath, tt.outName)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/package.go",
    "content": "package nix\n\nimport (\n\t\"path\"\n\t\"sort\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype nixStorePackage struct {\n\tLocation *file.Location\n\tFiles    []string\n\t*derivationFile\n\tnixStorePath\n}\n\nfunc newNixStorePackage(pp nixStorePackage, catalogerName string) pkg.Package {\n\tlocations := file.NewLocationSet(pp.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\tvar derivationPath string\n\tif pp.derivationFile != nil {\n\t\tderivationPath = pp.derivationFile.Location.RealPath\n\t\tlocations.Add(pp.derivationFile.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t}\n\n\tp := pkg.Package{\n\t\tName:      pp.Name,\n\t\tVersion:   pp.Version,\n\t\tFoundBy:   catalogerName,\n\t\tLocations: locations,\n\t\tType:      pkg.NixPkg,\n\t\tPURL:      packageURL(pp.nixStorePath, derivationPath),\n\t\tMetadata: pkg.NixStoreEntry{\n\t\t\tPath:       pp.StorePath,\n\t\t\tDerivation: newDerivation(pp.derivationFile),\n\t\t\tOutputHash: pp.OutputHash,\n\t\t\tOutput:     pp.Output,\n\t\t\tFiles:      pp.Files,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newDBPackage(entry *dbPackageEntry, catalogerName string) pkg.Package {\n\tlocations := file.NewLocationSet(\n\t\tentry.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\tfile.NewLocation(entry.StorePath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t)\n\tif entry.derivationFile != nil {\n\t\tlocations.Add(entry.derivationFile.Location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\t}\n\n\tp := pkg.Package{\n\t\tName:      entry.Name,\n\t\tVersion:   entry.Version,\n\t\tFoundBy:   catalogerName,\n\t\tLocations: locations,\n\t\tType:      pkg.NixPkg,\n\t\tPURL:      packageURL(entry.nixStorePath, entry.DeriverPath),\n\t\tMetadata: pkg.NixStoreEntry{\n\t\t\tPath:       entry.StorePath,\n\t\t\tDerivation: newDerivation(entry.derivationFile),\n\t\t\tOutputHash: entry.OutputHash,\n\t\t\tOutput:     entry.Output,\n\t\t\tFiles:      entry.Files,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newDerivation(df *derivationFile) pkg.NixDerivation {\n\tif df == nil {\n\t\treturn pkg.NixDerivation{}\n\t}\n\n\tvar inputDerivations []pkg.NixDerivationReference\n\tfor drvPath, names := range df.InputDerivations {\n\t\tsort.Strings(names)\n\t\tinputDerivations = append(inputDerivations, pkg.NixDerivationReference{\n\t\t\tPath:    drvPath,\n\t\t\tOutputs: names,\n\t\t})\n\t}\n\tsort.Slice(inputDerivations, func(i, j int) bool {\n\t\treturn inputDerivations[i].Path < inputDerivations[j].Path\n\t})\n\n\tsources := df.InputSources\n\tsort.Strings(sources)\n\n\treturn pkg.NixDerivation{\n\t\tPath:             df.Location.RealPath,\n\t\tSystem:           df.Platform,\n\t\tInputDerivations: inputDerivations,\n\t\tInputSources:     sources,\n\t}\n}\n\nfunc packageURL(storePath nixStorePath, drvPath string) string {\n\tvar qualifiers packageurl.Qualifiers\n\tif storePath.Output != \"\" {\n\t\t// since there is no nix pURL type yet, this is a guess, however, it is reasonable to assume that\n\t\t// if only a single output is installed the pURL should be able to express this.\n\t\tqualifiers = append(qualifiers,\n\t\t\tpackageurl.Qualifier{\n\t\t\t\tKey:   \"output\",\n\t\t\t\tValue: storePath.Output,\n\t\t\t},\n\t\t)\n\t}\n\tif storePath.OutputHash != \"\" {\n\t\tqualifiers = append(qualifiers,\n\t\t\tpackageurl.Qualifier{\n\t\t\t\tKey:   \"outputhash\",\n\t\t\t\tValue: storePath.OutputHash,\n\t\t\t},\n\t\t)\n\t}\n\n\tif drvPath != \"\" {\n\t\tqualifiers = append(qualifiers,\n\t\t\tpackageurl.Qualifier{\n\t\t\t\tKey:   \"drvpath\",\n\t\t\t\tValue: path.Base(drvPath),\n\t\t\t},\n\t\t)\n\t}\n\tpURL := packageurl.NewPackageURL(\n\t\t// TODO: nix pURL type has not been accepted yet (only proposed at this time)\n\t\t\"nix\",\n\t\t\"\",\n\t\tstorePath.Name,\n\t\tstorePath.Version,\n\t\tqualifiers,\n\t\t\"\")\n\treturn pURL.ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/package_test.go",
    "content": "package nix\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttests := []struct {\n\t\tname      string\n\t\tstorePath nixStorePath\n\t\tdrvPath   string\n\t\twant      string\n\t}{\n\t\t{\n\t\t\tname: \"name + version\",\n\t\t\tstorePath: nixStorePath{\n\t\t\t\tName:    \"glibc\",\n\t\t\t\tVersion: \"2.34\",\n\t\t\t},\n\t\t\twant: \"pkg:nix/glibc@2.34\",\n\t\t},\n\t\t{\n\t\t\tname: \"hash qualifier\",\n\t\t\tstorePath: nixStorePath{\n\t\t\t\tName:       \"glibc\",\n\t\t\t\tVersion:    \"2.34\",\n\t\t\t\tOutputHash: \"h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t},\n\t\t\twant: \"pkg:nix/glibc@2.34?outputhash=h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t},\n\t\t{\n\t\t\tname: \"output qualifier\",\n\t\t\tstorePath: nixStorePath{\n\t\t\t\tName:       \"glibc\",\n\t\t\t\tVersion:    \"2.34\",\n\t\t\t\tOutputHash: \"h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\tOutput:     \"bin\",\n\t\t\t},\n\t\t\twant: \"pkg:nix/glibc@2.34?output=bin&outputhash=h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t},\n\t\t{\n\t\t\tname: \"derivation qualifier\",\n\t\t\tstorePath: nixStorePath{\n\t\t\t\tName:    \"glibc\",\n\t\t\t\tVersion: \"2.34\",\n\t\t\t},\n\t\t\tdrvPath: \"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34.drv\",\n\t\t\twant:    \"pkg:nix/glibc@2.34?drvpath=h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34.drv\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, packageURL(tt.storePath, tt.drvPath))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/parse_store_path.go",
    "content": "package nix\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\tnumericPattern = regexp.MustCompile(`\\d`)\n\n\t// attempts to find the right-most example of something that appears to be a version (semver or otherwise)\n\t// example input: h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\n\t// example output:\n\t//  version: \"2.34-210\"\n\t//  major: \"2\"\n\t//  minor: \"34\"\n\t//  patch: \"210\"\n\t// (there are other capture groups, but they can be ignored)\n\trightMostVersionIshPattern = regexp.MustCompile(`-(?P<version>(?P<major>[0-9][a-zA-Z0-9]*)(\\.(?P<minor>[0-9][a-zA-Z0-9]*))?(\\.(?P<patch>0|[1-9][a-zA-Z0-9]*)){0,3}(?:-(?P<prerelease>\\d*[.0-9a-zA-Z-]*)*)?(?:\\+(?P<metadata>[.0-9a-zA-Z-]+(?:\\.[.0-9a-zA-Z-]+)*))?)`)\n\n\tunstableVersion = regexp.MustCompile(`-(?P<version>unstable-\\d{4}-\\d{2}-\\d{2})$`)\n)\n\n// checkout the package naming conventions here: https://nixos.org/manual/nixpkgs/stable/#sec-package-naming\n\ntype nixStorePath struct {\n\tStorePath  string\n\tOutputHash string\n\tName       string\n\tVersion    string\n\tOutput     string\n}\n\nfunc (p nixStorePath) isValidPackage() bool {\n\treturn p.Name != \"\" && p.Version != \"\"\n}\n\nfunc findParentNixStorePath(source string) string {\n\tsource = strings.TrimRight(source, \"/\")\n\tindicator := \"nix/store/\"\n\tstart := strings.Index(source, indicator)\n\tif start == -1 {\n\t\treturn \"\"\n\t}\n\n\tstartOfHash := start + len(indicator)\n\tnextField := strings.Index(source[startOfHash:], \"/\")\n\tif nextField == -1 {\n\t\treturn \"\"\n\t}\n\tstartOfSubPath := startOfHash + nextField\n\n\treturn source[0:startOfSubPath]\n}\n\nfunc parseNixStorePath(og string) *nixStorePath {\n\tif strings.HasSuffix(og, \".drv\") {\n\t\t// ignore derivations\n\t\treturn nil\n\t}\n\n\tsource := path.Base(og)\n\n\tversionStartIdx, versionIsh, prerelease := findVersionIsh(source)\n\tif versionStartIdx == -1 {\n\t\treturn nil\n\t}\n\n\thashName := strings.TrimSuffix(source[0:versionStartIdx], \"-\")\n\thashNameFields := strings.Split(hashName, \"-\")\n\tif len(hashNameFields) < 2 {\n\t\treturn nil\n\t}\n\thash, name := hashNameFields[0], strings.Join(hashNameFields[1:], \"-\")\n\n\tprereleaseFields := strings.Split(prerelease, \"-\")\n\tlastPrereleaseField := prereleaseFields[len(prereleaseFields)-1]\n\n\tvar version = versionIsh\n\tvar output string\n\tif !hasNumeric(lastPrereleaseField) {\n\t\t// this last prerelease field is probably a nix output\n\t\tversion = strings.TrimSuffix(versionIsh, fmt.Sprintf(\"-%s\", lastPrereleaseField))\n\t\toutput = lastPrereleaseField\n\t}\n\n\tif og != \"\" && !strings.HasPrefix(og, \"/\") {\n\t\tog = fmt.Sprintf(\"/%s\", og)\n\t}\n\n\treturn &nixStorePath{\n\t\tStorePath:  og,\n\t\tOutputHash: hash,\n\t\tName:       name,\n\t\tVersion:    version,\n\t\tOutput:     output,\n\t}\n}\n\nfunc hasNumeric(s string) bool {\n\treturn numericPattern.MatchString(s)\n}\n\nfunc findVersionIsh(input string) (int, string, string) {\n\t// we want to return the index of the start of the \"version\" group (the first capture group).\n\t// note that the match indices are in the form of [start, end, start, end, ...]. Also note that the\n\t// capture group for version in both regexes are the same index, but if the regexes are changed\n\t// this code will start to fail.\n\n\t// check for unstable version pattern first\n\tif match := unstableVersion.FindStringSubmatch(input); match != nil {\n\t\tindices := unstableVersion.FindStringSubmatchIndex(input)\n\t\tversionStart := indices[2] // index of first capture group's start\n\t\tversion := match[1]        // first capture group is the version\n\t\treturn versionStart, version, \"\"\n\t}\n\n\t// try the regular version pattern\n\tmatch := rightMostVersionIshPattern.FindStringSubmatch(input)\n\tif match == nil {\n\t\treturn -1, \"\", \"\"\n\t}\n\n\tversion := match[1] // capture group 1 is the version\n\tindices := rightMostVersionIshPattern.FindStringSubmatchIndex(input)\n\tversionStart := indices[2] // index of first capture group's start\n\tprerelease := match[7]     // capture group 7 is the prerelease version\n\n\treturn versionStart, version, prerelease\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/parse_store_path_test.go",
    "content": "package nix\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_findVersionIsh(t *testing.T) {\n\t// note: only the package version fields are tested here, the name is tested in parseNixStorePath below.\n\ttests := []struct {\n\t\tname           string\n\t\tinput          string\n\t\twantIdx        int\n\t\twantVersion    string\n\t\twantPreRelease string\n\t}{\n\t\t{\n\t\t\tname:           \"no version\",\n\t\t\tinput:          \"5q7vxm9lc4b9hifc3br4sr8dy7f2h0qa-source\",\n\t\t\twantIdx:        -1,\n\t\t\twantVersion:    \"\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"semver with overbite into output\",\n\t\t\tinput:          \"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\",\n\t\t\twantIdx:        50,\n\t\t\twantVersion:    \"2.34-210-bin\",\n\t\t\twantPreRelease: \"210-bin\",\n\t\t},\n\t\t{\n\t\t\tname:           \"multiple versions\",\n\t\t\tinput:          \"5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t\twantIdx:        53,\n\t\t\twantVersion:    \"2.33\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"name ends with number\",\n\t\t\tinput:          \"55nswyz8335lk954y1ccx6as2jbq1z8f-libfido2-1.10.0\",\n\t\t\twantIdx:        42,\n\t\t\twantVersion:    \"1.10.0\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"major-minor only\",\n\t\t\tinput:          \"q8gnp7r8475p52k9gmdzsrcddw5hirbn-gdbm-1.23\",\n\t\t\twantIdx:        38,\n\t\t\twantVersion:    \"1.23\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"0-prefixed version field\",\n\t\t\tinput:          \"r705jm2icczpnmfccby3fzfrckfjakx3-perl5.34.1-URI-5.05\",\n\t\t\twantIdx:        48,\n\t\t\twantVersion:    \"5.05\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\tname:           \"prerelease with alpha prefix\",\n\t\t\tinput:          \"v48s6iddb518j9lc1pk3rcn3x8c2ff0j-bash-interactive-5.1-p16\",\n\t\t\twantIdx:        50,\n\t\t\twantVersion:    \"5.1-p16\",\n\t\t\twantPreRelease: \"p16\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"0-major version\",\n\t\t\tinput:          \"x2f9x5q6qrs6cssx09ylxqyg9q2isi1z-aws-c-http-0.6.15\",\n\t\t\twantIdx:        44,\n\t\t\twantVersion:    \"0.6.15\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\n\t\t\tname: \"several version fields\",\n\t\t\t// note: this package version is fictitious\n\t\t\tinput:          \"z24qs6f5d1mmwdp73n1jfc3swj4v2c5s-krb5-1.19.3.9.10\",\n\t\t\twantIdx:        38,\n\t\t\twantVersion:    \"1.19.3.9.10\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"skip drv + major only version\",\n\t\t\tinput:          \"z0fqylhisz47krxv8fd0izm1i2qbswfr-readline63-006.drv\",\n\t\t\twantIdx:        44,\n\t\t\twantVersion:    \"006\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"prerelease with multiple dashes\",\n\t\t\tinput:          \"zkgyp2vra0bgqm0dv1qi514l5fd0aksx-bash-interactive-5.1-p16-man\",\n\t\t\twantIdx:        50,\n\t\t\twantVersion:    \"5.1-p16-man\",\n\t\t\twantPreRelease: \"p16-man\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"date as major version\",\n\t\t\tinput:          \"0amf0d1dymv9gqcyhhjb9j0l8sn00c56-libedit-20210910-3.1\",\n\t\t\twantIdx:        41,\n\t\t\twantVersion:    \"20210910-3.1\",\n\t\t\twantPreRelease: \"3.1\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"long name\",\n\t\t\tinput:          \"0296qxvn30z9b2ah1g5p97k5wr9k8y78-busybox-static-x86_64-unknown-linux-musl-1.35.0\",\n\t\t\twantIdx:        74,\n\t\t\twantVersion:    \"1.35.0\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\t\t\t// this accounts for https://nixos.org/manual/nixpkgs/stable/#sec-package-naming\n\t\t\t// > If a package is not a release but a commit from a repository, then the version attribute must\n\t\t\t// > be the date of that (fetched) commit. The date must be in \"unstable-YYYY-MM-DD\" format.\n\t\t\t// example: https://github.com/NixOS/nixpkgs/blob/798e23beab9b5cba4d6f05e8b243e1d4535770f3/pkgs/servers/webdav-server-rs/default.nix#L14\n\t\t\tname:           \"unstable version\",\n\t\t\tinput:          \"q5dhwzcn82by5ndc7g0q83wsnn13qkqw-webdav-server-rs-unstable-2021-08-16\",\n\t\t\twantIdx:        50,\n\t\t\twantVersion:    \"unstable-2021-08-16\",\n\t\t\twantPreRelease: \"\",\n\t\t},\n\t\t{\n\n\t\t\tname:           \"version with release suffix and no output name\",\n\t\t\tinput:          \"/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8\",\n\t\t\twantIdx:        50,\n\t\t\twantVersion:    \"2.37-8\",\n\t\t\twantPreRelease: \"8\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgotIdx, gotVersion, gotPreRelease := findVersionIsh(tt.input)\n\t\t\tassert.Equal(t, tt.wantIdx, gotIdx, \"bad index\")\n\t\t\tassert.Equal(t, tt.wantVersion, gotVersion, \"bad version\")\n\t\t\tassert.Equal(t, tt.wantPreRelease, gotPreRelease, \"bad pre-release\")\n\t\t})\n\t}\n}\n\nfunc Test_parseNixStorePath(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\twant *nixStorePath\n\t}{\n\t\t{\n\t\t\tname: \"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\tName:       \"glibc\",\n\t\t\t\tVersion:    \"2.34-210\",\n\t\t\t\tOutput:     \"bin\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"02mqs1by2vab9yzw0qc4j7463w78p3ps\",\n\t\t\t\tName:       \"glibc\",\n\t\t\t\tVersion:    \"2.37-8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/0296qxvn30z9b2ah1g5p97k5wr9k8y78-busybox-static-x86_64-unknown-linux-musl-1.35.0\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"0296qxvn30z9b2ah1g5p97k5wr9k8y78\",\n\t\t\t\tName:       \"busybox-static-x86_64-unknown-linux-musl\",\n\t\t\t\tVersion:    \"1.35.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"5zzrvdmlkc5rh3k5862krd3wfb3pqhyf\",\n\t\t\t\tName:       \"perl5.34.1-TimeDate\",\n\t\t\t\tVersion:    \"2.33\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/q38q8ng57zwjg1h15ry5zx0lb0xyax4b-libcap-2.63-lib\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"q38q8ng57zwjg1h15ry5zx0lb0xyax4b\",\n\t\t\t\tName:       \"libcap\",\n\t\t\t\tVersion:    \"2.63\",\n\t\t\t\tOutput:     \"lib\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/p0y8fbpbqr2jm5zfrdll0rgyg2lvp5g2-util-linux-minimal-2.37.4-bin\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"p0y8fbpbqr2jm5zfrdll0rgyg2lvp5g2\",\n\t\t\t\tName:       \"util-linux-minimal\",\n\t\t\t\tVersion:    \"2.37.4\",\n\t\t\t\tOutput:     \"bin\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/z24qs6f5d1mmwdp73n1jfc3swj4v2c5s-krb5-1.19.3.9.10\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"z24qs6f5d1mmwdp73n1jfc3swj4v2c5s\",\n\t\t\t\tName:       \"krb5\",\n\t\t\t\tVersion:    \"1.19.3.9.10\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/zkgyp2vra0bgqm0dv1qi514l5fd0aksx-bash-interactive-5.1-p16-man\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"zkgyp2vra0bgqm0dv1qi514l5fd0aksx\",\n\t\t\t\tName:       \"bash-interactive\",\n\t\t\t\tVersion:    \"5.1-p16\",\n\t\t\t\tOutput:     \"man\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/nwf2y0nc48ybim56308cr5ccvwkabcqc-openssl-1.1.1q\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"nwf2y0nc48ybim56308cr5ccvwkabcqc\",\n\t\t\t\tName:       \"openssl\",\n\t\t\t\tVersion:    \"1.1.1q\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/nwv742f1bxv6g78hy9yc6slxdbxlmqhb-kmod-29\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"nwv742f1bxv6g78hy9yc6slxdbxlmqhb\",\n\t\t\t\tName:       \"kmod\",\n\t\t\t\tVersion:    \"29\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/n83qx7m848kg51lcjchwbkmlgdaxfckf-tzdata-2022a\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"n83qx7m848kg51lcjchwbkmlgdaxfckf\",\n\t\t\t\tName:       \"tzdata\",\n\t\t\t\tVersion:    \"2022a\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/q5dhwzcn82by5ndc7g0q83wsnn13qkqw-webdav-server-rs-unstable-2021-08-16\",\n\t\t\twant: &nixStorePath{\n\t\t\t\tOutputHash: \"q5dhwzcn82by5ndc7g0q83wsnn13qkqw\",\n\t\t\t\tName:       \"webdav-server-rs\",\n\t\t\t\tVersion:    \"unstable-2021-08-16\",\n\t\t\t},\n\t\t},\n\t\t// negative cases...\n\t\t{\n\t\t\tname: \"'z33yk02rsr6b4rb56lgb80bnvxx6yw39-?id=21ee35dde73aec5eba35290587d479218c6dd824.drv'\",\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/yzahni8aig6mdrvcsccgwm2515lcpi5q-git-minimal-2.36.0.drv\",\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/z9yvxs0s3xdkp5jgmzis4g50bfq3dgvm-0018-pkg-config-derive-prefix-from-prefix.patch\",\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/w3hl7zrmc9qvzadc0k7cp9ysxiyz88j6-base-system\",\n\t\t},\n\t\t{\n\t\t\tname: \"/nix/store/zz1lc28x25fcx6al6xwk3dk8kp7wx47y-Test-RequiresInternet-0.05.tar.gz.drv\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.want != nil {\n\t\t\t\ttt.want.StorePath = tt.name\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, parseNixStorePath(tt.name))\n\t\t})\n\t}\n}\n\nfunc Test_parentNixStorePath(t *testing.T) {\n\n\ttests := []struct {\n\t\tname   string\n\t\tsource string\n\t\twant   string\n\t}{\n\t\t{\n\t\t\tname:   \"exact path from absolute root\",\n\t\t\tsource: \"/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname:   \"exact path from relative root\",\n\t\t\tsource: \"nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname:   \"clean paths\",\n\t\t\tsource: \"//nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33///\",\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname:   \"relative root with subdir file\",\n\t\t\tsource: \"nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33/bin/perl-timedate\",\n\t\t\twant:   \"nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t},\n\t\t{\n\t\t\tname:   \"absolute root with with subdir file\",\n\t\t\tsource: \"/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33/bin/perl-timedate\",\n\t\t\twant:   \"/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t},\n\t\t{\n\t\t\tname:   \"nexted root with with subdir file\",\n\t\t\tsource: \"/somewhere/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33/bin/perl-timedate\",\n\t\t\twant:   \"/somewhere/nix/store/5zzrvdmlkc5rh3k5862krd3wfb3pqhyf-perl5.34.1-TimeDate-2.33\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, findParentNixStorePath(tt.source))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/store_cataloger.go",
    "content": "/*\nPackage nix provides a concrete Cataloger implementation for packages within the Nix packaging ecosystem.\n*/\npackage nix\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\n// storeCataloger finds package outputs installed in the Nix store location (/nix/store/*).\ntype storeCataloger struct {\n\tconfig Config\n\tname   string\n}\n\n// NewStoreCataloger returns a new cataloger object initialized for Nix store files.\n//\n// Deprecated: please use NewCataloger instead\nfunc NewStoreCataloger() pkg.Cataloger {\n\treturn newStoreCataloger(Config{CaptureOwnedFiles: true}, \"nix-store-cataloger\")\n}\n\nfunc newStoreCataloger(cfg Config, name string) storeCataloger {\n\treturn storeCataloger{\n\t\tconfig: cfg,\n\t\tname:   name,\n\t}\n}\n\nfunc (c storeCataloger) Name() string {\n\treturn c.name\n}\n\nfunc (c storeCataloger) Catalog(ctx context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tprototypes, err := c.findPackagesFromStore(ctx, resolver)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to find nix packages: %w\", err)\n\t}\n\n\tdrvs, err := c.findDerivationsFromStore(resolver, prototypes)\n\tif err != nil {\n\t\t// preserve unknown errors, but suppress would-be fatal errors\n\t\tvar cErr *unknown.CoordinateError\n\t\tif !errors.As(err, &cErr) {\n\t\t\t// let's ignore fatal errors from this path, since it only enriches packages\n\t\t\tdrvs = newDerivations()\n\t\t\terr = nil\n\t\t\tlog.WithFields(\"error\", err).Trace(\"failed to find nix derivations\")\n\t\t}\n\t}\n\n\tpkgs, rels := c.finalizeStorePackages(ctx, resolver, prototypes, drvs)\n\treturn pkgs, rels, err\n}\n\nfunc (c storeCataloger) finalizeStorePackages(ctx context.Context, resolver file.Resolver, pkgPrototypes []nixStorePackage, drvs *derivations) ([]pkg.Package, []artifact.Relationship) {\n\tvar pkgs []pkg.Package\n\tvar pkgByStorePath = make(map[string]pkg.Package)\n\tfor _, pp := range pkgPrototypes {\n\t\tif pp.Location == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tp := newNixStorePackage(pp, c.name)\n\t\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\t\tpkgs = append(pkgs, p)\n\t\tpkgByStorePath[pp.Location.RealPath] = p\n\t}\n\n\tvar relationships []artifact.Relationship\n\tfor storePath, p := range pkgByStorePath {\n\t\tdeps := drvs.findDependencies(storePath)\n\t\tfor _, dep := range deps {\n\t\t\tif depPkg, ok := pkgByStorePath[dep]; ok {\n\t\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\t\tFrom: depPkg,\n\t\t\t\t\tTo:   p,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\treturn pkgs, relationships\n}\n\nfunc (c storeCataloger) findDerivationsFromStore(resolver file.Resolver, pkgPrototypes []nixStorePackage) (*derivations, error) {\n\tlocs, err := resolver.FilesByGlob(\"**/nix/store/*.drv\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to find derivations: %w\", err)\n\t}\n\tvar errs error\n\tdvs := newDerivations()\n\tfor _, loc := range locs {\n\t\td, err := newDerivationFromLocation(loc, resolver)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, loc.Coordinates, err)\n\t\t\tcontinue\n\t\t}\n\t\tif d == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tdvs.add(*d)\n\t}\n\n\t// attach derivations to the packages they belong to\n\tfor i := range pkgPrototypes {\n\t\tp := &pkgPrototypes[i]\n\t\tp.derivationFile = dvs.findDerivationForOutputPath(p.Location.RealPath)\n\t}\n\n\treturn dvs, errs\n}\n\nfunc (c storeCataloger) findPackagesFromStore(ctx context.Context, resolver file.Resolver) ([]nixStorePackage, error) {\n\t// we want to search for only directories, which isn't possible via the stereoscope API, so we need to apply the glob manually on all returned paths\n\tvar prototypes []nixStorePackage\n\tvar filesByStorePath = make(map[string]*file.LocationSet)\n\tctx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\tfor location := range resolver.AllLocations(ctx) {\n\t\tmatchesStorePath, err := doublestar.Match(\"**/nix/store/*\", location.RealPath)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to match nix store path: %w\", err)\n\t\t}\n\n\t\tparentStorePath := findParentNixStorePath(location.RealPath)\n\t\tif c.config.CaptureOwnedFiles && parentStorePath != \"\" {\n\t\t\tfileInfo, err := resolver.FileMetadataByLocation(location)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"path\", location.RealPath).Trace(\"failed to get file metadata\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif fileInfo.IsDir() {\n\t\t\t\t// we should only add non-directories to the file set\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif _, ok := filesByStorePath[parentStorePath]; !ok {\n\t\t\t\ts := file.NewLocationSet()\n\t\t\t\tfilesByStorePath[parentStorePath] = &s\n\t\t\t}\n\t\t\tfilesByStorePath[parentStorePath].Add(location)\n\t\t}\n\n\t\tif !matchesStorePath {\n\t\t\tcontinue\n\t\t}\n\n\t\tstorePath := parseNixStorePath(location.RealPath)\n\n\t\tif storePath == nil || !storePath.isValidPackage() {\n\t\t\tcontinue\n\t\t}\n\n\t\tprototypes = append(prototypes, nixStorePackage{\n\t\t\tLocation:     &location,\n\t\t\tnixStorePath: *storePath,\n\t\t})\n\t}\n\n\t// add file sets to packages\n\tfor i := range prototypes {\n\t\tp := &prototypes[i]\n\t\tif p.Location == nil {\n\t\t\tlog.WithFields(\"package\", p.nixStorePath.Name).Debug(\"nix package has no evidence locations associated\")\n\t\t\tcontinue\n\t\t}\n\t\tparentStorePath := p.Location.RealPath\n\t\tfiles, ok := filesByStorePath[parentStorePath]\n\t\tif !ok {\n\t\t\tlog.WithFields(\"path\", parentStorePath, \"nix-store-path\", parentStorePath).Debug(\"found a nix store file for a non-existent package\")\n\t\t\tcontinue\n\t\t}\n\t\tp.Files = filePaths(files.ToSlice())\n\t}\n\n\treturn prototypes, nil\n}\n\nfunc filePaths(files []file.Location) []string {\n\tvar relativePaths []string\n\tfor _, f := range files {\n\t\trelativePaths = append(relativePaths, f.RealPath)\n\t}\n\treturn relativePaths\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/store_cataloger_test.go",
    "content": "package nix\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestStoreCataloger_Image(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\twantPkgs []string\n\t\twantRel  []string\n\t}{\n\t\t{\n\t\t\t// $ nix-store -q --tree $(which jq)\n\t\t\t//\n\t\t\t// /nix/store/nzwfgsp28vgxv7n2gl5fxqkca9awh4dz-jq-1.6-bin3.4\n\t\t\t// ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8\n\t\t\t// │   ├───/nix/store/cw8fpl8r1x9rmaqj55fwbfnnrgw7b40k-libidn2-2.3.4\n\t\t\t// │   │   ├───/nix/store/h1ysk4vvw48winwmh38rvnsj0dlsz7c1-libunistring-1.1\n\t\t\t// │   │   │   └───/nix/store/h1ysk4vvw48winwmh38rvnsj0dlsz7c1-libunistring-1.1 [...]\n\t\t\t// │   │   └───/nix/store/cw8fpl8r1x9rmaqj55fwbfnnrgw7b40k-libidn2-2.3.4 [...]\n\t\t\t// │   ├───/nix/store/fmz62d844wf4blb11k21f4m0q6n6hdfp-xgcc-12.3.0-libgcc\n\t\t\t// │   └───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t// ├───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib\n\t\t\t// │   ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t// │   └───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib [...]\n\t\t\t// └───/nix/store/1x3s2v9wc9m302cspfqcn2iwar0b5w99-jq-1.6-lib\n\t\t\t//     ├───/nix/store/02mqs1by2vab9yzw0qc4j7463w78p3ps-glibc-2.37-8 [...]\n\t\t\t//     ├───/nix/store/mzj90j6m3c3a1vv8j9pl920f98i2yz9q-oniguruma-6.9.8-lib [...]\n\t\t\t//     └───/nix/store/1x3s2v9wc9m302cspfqcn2iwar0b5w99-jq-1.6-lib [...]\n\t\t\tfixture: \"image-nixos-jq-pkg-store\",\n\t\t\twantPkgs: []string{\n\t\t\t\t\"glibc @ 2.37-8 (/nix/store/aw2fw9ag10wr9pf0qk4nk5sxi0q0bn56-glibc-2.37-8)\",\n\t\t\t\t\"jq @ 1.6 (/nix/store/3xpzpmcqmzsdblkzqa9d9s6l302pnk4g-jq-1.6-lib)\", // jq lib output\n\t\t\t\t\"jq @ 1.6 (/nix/store/aj8lqifsyynq8iknivvxkrsqnblj7qzs-jq-1.6-bin)\", // jq bin output\n\t\t\t\t\"libidn2 @ 2.3.4 (/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4)\",\n\t\t\t\t\"libunistring @ 1.1 (/nix/store/s2gi8pfjszy6rq3ydx0z1vwbbskw994i-libunistring-1.1)\",\n\t\t\t\t\"oniguruma @ 6.9.8 (/nix/store/dpcyirvyblnflf7cp14dnr1420va93zx-oniguruma-6.9.8-lib)\",\n\t\t\t\t\"xgcc @ 12.3.0 (/nix/store/jbwb8d8l28lg9z0xzl784wyb9vlbwss6-xgcc-12.3.0-libgcc)\",\n\t\t\t},\n\t\t\twantRel: []string{\n\t\t\t\t// note: parsing all relationships from only derivations results in partial results! (this is why the DB cataloger exists)\n\t\t\t\t\"libidn2 @ 2.3.4 (/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4) [dependency-of] glibc @ 2.37-8 (/nix/store/aw2fw9ag10wr9pf0qk4nk5sxi0q0bn56-glibc-2.37-8)\",\n\t\t\t\t\"libunistring @ 1.1 (/nix/store/s2gi8pfjszy6rq3ydx0z1vwbbskw994i-libunistring-1.1) [dependency-of] libidn2 @ 2.3.4 (/nix/store/k8ivghpggjrq1n49xp8sj116i4sh8lia-libidn2-2.3.4)\",\n\t\t\t\t\"xgcc @ 12.3.0 (/nix/store/jbwb8d8l28lg9z0xzl784wyb9vlbwss6-xgcc-12.3.0-libgcc) [dependency-of] glibc @ 2.37-8 (/nix/store/aw2fw9ag10wr9pf0qk4nk5sxi0q0bn56-glibc-2.37-8)\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tc := NewStoreCataloger()\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tExpectsPackageStrings(tt.wantPkgs).\n\t\t\t\tExpectsRelationshipStrings(tt.wantRel).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n\nfunc TestStoreCataloger_Directory(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\twantPkgs []pkg.Package\n\t\twantRel  []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/fixture-1\",\n\t\t\twantPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:    \"glibc\",\n\t\t\t\t\tVersion: \"2.34-210\",\n\t\t\t\t\tPURL:    \"pkg:nix/glibc@2.34-210?drvpath=5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv&output=bin&outputhash=h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t\t\tfile.NewLocation(\"nix/store/5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv\").WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"nix-store-cataloger\",\n\t\t\t\t\tType:    pkg.NixPkg,\n\t\t\t\t\tMetadata: pkg.NixStoreEntry{\n\t\t\t\t\t\tPath: \"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\",\n\t\t\t\t\t\tDerivation: pkg.NixDerivation{\n\t\t\t\t\t\t\tPath:   \"nix/store/5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv\",\n\t\t\t\t\t\t\tSystem: \"aarch64-linux\",\n\t\t\t\t\t\t\tInputDerivations: []pkg.NixDerivationReference{\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/1zi0k7y01rhqr2gfqb42if0icswg65sj-locale-C.diff.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/45j86ggi8mlpfslcrgvjf7m6phia21fp-raw.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/4fnfsd9sc7bam6886hwyaprdsww66dg3-bison-3.8.2.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/51azdrrvcqrk2hbky7ryphlwd99yz25d-linux-headers-5.18.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/67s0qc21gyarmdwc181bqmjc3qzv8zkz-libidn2-2.3.2.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/9rhliwskh3mrrs5nfzgz0x6wrccyfg7k-bootstrap-stage0-glibc-bootstrap.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/cl1wcw2v1ifzjlkzi50h32a6lms9m25s-binutils-2.38.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/ghjc8bkfk8lh53z14mk2nk7h059zh7vx-python3-minimal-3.10.5.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/k3786wfzw637r7sylccdmm92saqp73d8-glibc-2.34.tar.xz.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/l5zr5m1agvvnic49fg6qc44g5fgj3la1-glibc-reinstate-prlimit64-fallback.patch?id=eab07e78b691ae7866267fc04d31c7c3ad6b0eeb.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/mf5kz6d01ab8h0rswzyr04mbcd6g5x9n-bootstrap-stage2-stdenv-linux.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/nd1zy67vp028707pbh466qhrfqh4cpq6-bootstrap-stage2-gcc-wrapper-.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/ra77ww7p2xx8jh8n4m9vmj6wc8wxijdb-bootstrap-tools.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tPath:    \"/nix/store/wlldapf5bg58kivw520ll5bw0fmlaid7-raw.drv\",\n\t\t\t\t\t\t\t\t\tOutputs: []string{\"out\"},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInputSources: []string{\n\t\t\t\t\t\t\t\t\"/nix/store/001gp43bjqzx60cg345n2slzg7131za8-nix-nss-open-files.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/7kw224hdyxd7115lrqh9a4dv2x8msq2s-fix-x64-abi.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/8haph3ng4mgsqr6p4024vj8k6kg3mqc4-nix-locale-archive.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/95hp6hs9g73h93safadb8x6vajyqkv6q-0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh\",\n\t\t\t\t\t\t\t\t\"/nix/store/b1w7zbvm39ff1i52iyjggyvw2rdxz104-dont-use-system-ld-so-cache.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/ikmqczy0y20n04a2b8qfflzwihv8139g-separate-debug-info.sh\",\n\t\t\t\t\t\t\t\t\"/nix/store/mgx19wbmgrh3rblbxhs6vi47sha15n11-2.34-master.patch.gz\",\n\t\t\t\t\t\t\t\t\"/nix/store/mnglr8rr7nl444h7p50ysyq8qd0fm1lm-dont-use-system-ld-so-preload.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/xkd50xxii6k7l1kmw4l5x6xzbhamcs87-allow-kernel-2.6.32.patch\",\n\t\t\t\t\t\t\t\t\"/nix/store/za0pg7fmysrcwrqcal26fnmzw6vycgdn-fix_path_attribute_in_getconf.patch\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOutputHash: \"h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\t\t\t\tOutput:     \"bin\",\n\t\t\t\t\t\tFiles: []string{\n\t\t\t\t\t\t\t// the legacy cataloger captures files by default\n\t\t\t\t\t\t\t\"nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/lib/glibc.so\",\n\t\t\t\t\t\t\t\"nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tc := NewStoreCataloger()\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixture).\n\t\t\t\tExpects(tt.wantPkgs, tt.wantRel).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/fixture-1/.gitignore",
    "content": "# this is not a real binary, just a small text file\n!nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/lib/glibc.so"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/fixture-1/nix/store/5av396z8xa13jg89g9jws145c0k26k2x-glibc-2.34-210.drv",
    "content": "Derive([(\"bin\",\"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\",\"\",\"\"),(\"debug\",\"/nix/store/hzp50ah3grczanw5fcgjsr390y3l8pb8-glibc-2.34-210-debug\",\"\",\"\"),(\"dev\",\"/nix/store/ap80aapy02950lnhkb3nsl58qqh55nbs-glibc-2.34-210-dev\",\"\",\"\"),(\"out\",\"/nix/store/jq8i4896sgmgbkk7nbjrnidxpxmgcid5-glibc-2.34-210\",\"\",\"\"),(\"static\",\"/nix/store/vqrka8z8k7spqsrvp41z0vvjfn0kcim6-glibc-2.34-210-static\",\"\",\"\")],[(\"/nix/store/1zi0k7y01rhqr2gfqb42if0icswg65sj-locale-C.diff.drv\",[\"out\"]),(\"/nix/store/45j86ggi8mlpfslcrgvjf7m6phia21fp-raw.drv\",[\"out\"]),(\"/nix/store/4fnfsd9sc7bam6886hwyaprdsww66dg3-bison-3.8.2.drv\",[\"out\"]),(\"/nix/store/51azdrrvcqrk2hbky7ryphlwd99yz25d-linux-headers-5.18.drv\",[\"out\"]),(\"/nix/store/67s0qc21gyarmdwc181bqmjc3qzv8zkz-libidn2-2.3.2.drv\",[\"out\"]),(\"/nix/store/9rhliwskh3mrrs5nfzgz0x6wrccyfg7k-bootstrap-stage0-glibc-bootstrap.drv\",[\"out\"]),(\"/nix/store/cl1wcw2v1ifzjlkzi50h32a6lms9m25s-binutils-2.38.drv\",[\"out\"]),(\"/nix/store/ghjc8bkfk8lh53z14mk2nk7h059zh7vx-python3-minimal-3.10.5.drv\",[\"out\"]),(\"/nix/store/k3786wfzw637r7sylccdmm92saqp73d8-glibc-2.34.tar.xz.drv\",[\"out\"]),(\"/nix/store/l5zr5m1agvvnic49fg6qc44g5fgj3la1-glibc-reinstate-prlimit64-fallback.patch?id=eab07e78b691ae7866267fc04d31c7c3ad6b0eeb.drv\",[\"out\"]),(\"/nix/store/mf5kz6d01ab8h0rswzyr04mbcd6g5x9n-bootstrap-stage2-stdenv-linux.drv\",[\"out\"]),(\"/nix/store/nd1zy67vp028707pbh466qhrfqh4cpq6-bootstrap-stage2-gcc-wrapper-.drv\",[\"out\"]),(\"/nix/store/ra77ww7p2xx8jh8n4m9vmj6wc8wxijdb-bootstrap-tools.drv\",[\"out\"]),(\"/nix/store/wlldapf5bg58kivw520ll5bw0fmlaid7-raw.drv\",[\"out\"])],[\"/nix/store/001gp43bjqzx60cg345n2slzg7131za8-nix-nss-open-files.patch\",\"/nix/store/7kw224hdyxd7115lrqh9a4dv2x8msq2s-fix-x64-abi.patch\",\"/nix/store/8haph3ng4mgsqr6p4024vj8k6kg3mqc4-nix-locale-archive.patch\",\"/nix/store/95hp6hs9g73h93safadb8x6vajyqkv6q-0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch\",\"/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh\",\"/nix/store/b1w7zbvm39ff1i52iyjggyvw2rdxz104-dont-use-system-ld-so-cache.patch\",\"/nix/store/ikmqczy0y20n04a2b8qfflzwihv8139g-separate-debug-info.sh\",\"/nix/store/mgx19wbmgrh3rblbxhs6vi47sha15n11-2.34-master.patch.gz\",\"/nix/store/mnglr8rr7nl444h7p50ysyq8qd0fm1lm-dont-use-system-ld-so-preload.patch\",\"/nix/store/xkd50xxii6k7l1kmw4l5x6xzbhamcs87-allow-kernel-2.6.32.patch\",\"/nix/store/za0pg7fmysrcwrqcal26fnmzw6vycgdn-fix_path_attribute_in_getconf.patch\"],\"aarch64-linux\",\"/nix/store/h0r631awi89fg5qpwn1nilpn36chqbkx-bootstrap-tools/bin/bash\",[\"-e\",\"/nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25b-default-builder.sh\"],[(\"BASH_SHELL\",\"/bin/sh\"),(\"NIX_CFLAGS_COMPILE\",\"\"),(\"NIX_HARDENING_ENABLE\",\"pic strictoverflow format relro bindnow\"),(\"NIX_NO_SELF_RPATH\",\"1\"),(\"bin\",\"/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin\"),(\"buildInputs\",\"/nix/store/b6hn4v59mi4wz7g1579ikbykd16qp4n1-linux-headers-5.18\"),(\"builder\",\"/nix/store/h0r631awi89fg5qpwn1nilpn36chqbkx-bootstrap-tools/bin/bash\"),(\"configureFlags\",\"-C --enable-add-ons --sysconfdir=/etc --enable-stackguard-randomization --enable-bind-now --with-headers=/nix/store/b6hn4v59mi4wz7g1579ikbykd16qp4n1-linux-headers-5.18/include --disable-profile --enable-static-pie --enable-kernel=3.2.0\"),(\"debug\",\"/nix/store/hzp50ah3grczanw5fcgjsr390y3l8pb8-glibc-2.34-210-debug\"),(\"depsBuildBuild\",\"/nix/store/rwwq8jmlc9dmasxa2ghjsj1p91mphvjx-bootstrap-stage2-gcc-wrapper-\"),(\"depsBuildBuildPropagated\",\"\"),(\"depsBuildTarget\",\"\"),(\"depsBuildTargetPropagated\",\"\"),(\"depsHostHost\",\"\"),(\"depsHostHostPropagated\",\"\"),(\"depsTargetTarget\",\"\"),(\"depsTargetTargetPropagated\",\"\"),(\"dev\",\"/nix/store/ap80aapy02950lnhkb3nsl58qqh55nbs-glibc-2.34-210-dev\"),(\"doCheck\",\"\"),(\"doInstallCheck\",\"\"),(\"enableParallelBuilding\",\"1\"),(\"enableParallelChecking\",\"1\"),(\"hardeningDisable\",\"fortify pie stackprotector\"),(\"installFlags\",\"sysconfdir=$(out)/etc\"),(\"is64bit\",\"1\"),(\"linuxHeaders\",\"/nix/store/b6hn4v59mi4wz7g1579ikbykd16qp4n1-linux-headers-5.18\"),(\"makeFlags\",\"OBJCOPY=objcopy\"),(\"name\",\"glibc-2.34-210\"),(\"nativeBuildInputs\",\"/nix/store/hqls6k3pcic45spig9bir01i1f7biagk-bison-3.8.2 /nix/store/kb6n9zgssq80zkcm04admwm67gf480m4-python3-minimal-3.10.5 /nix/store/ikmqczy0y20n04a2b8qfflzwihv8139g-separate-debug-info.sh\"),(\"out\",\"/nix/store/jq8i4896sgmgbkk7nbjrnidxpxmgcid5-glibc-2.34-210\"),(\"outputs\",\"out bin dev static debug\"),(\"patches\",\"/nix/store/mgx19wbmgrh3rblbxhs6vi47sha15n11-2.34-master.patch.gz /nix/store/8haph3ng4mgsqr6p4024vj8k6kg3mqc4-nix-locale-archive.patch /nix/store/b1w7zbvm39ff1i52iyjggyvw2rdxz104-dont-use-system-ld-so-cache.patch /nix/store/mnglr8rr7nl444h7p50ysyq8qd0fm1lm-dont-use-system-ld-so-preload.patch /nix/store/za0pg7fmysrcwrqcal26fnmzw6vycgdn-fix_path_attribute_in_getconf.patch /nix/store/xkd50xxii6k7l1kmw4l5x6xzbhamcs87-allow-kernel-2.6.32.patch /nix/store/3l70d7kcfsh91w6792h4fqs4kjbq17py-glibc-reinstate-prlimit64-fallback.patch?id=eab07e78b691ae7866267fc04d31c7c3ad6b0eeb /nix/store/nqa9d4yxz1l2cgswzqr1pkm4jfrksm0q-locale-C.diff /nix/store/7kw224hdyxd7115lrqh9a4dv2x8msq2s-fix-x64-abi.patch /nix/store/001gp43bjqzx60cg345n2slzg7131za8-nix-nss-open-files.patch /nix/store/95hp6hs9g73h93safadb8x6vajyqkv6q-0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch /nix/store/qhlivc5m9wh8pq93v1smplibyxakbjby-raw /nix/store/955qy70ypq94m205iaaa3pm1pjrsdfya-raw\"),(\"pname\",\"glibc\"),(\"postConfigure\",\"# Hack: get rid of the `-static' flag set by the bootstrap stdenv.\\n# This has to be done *after* `configure' because it builds some\\n# test binaries.\\nexport NIX_CFLAGS_LINK=\\nexport NIX_LDFLAGS_BEFORE=\\n\\nexport NIX_DONT_SET_RPATH=1\\nunset CFLAGS\\n\\n# Apparently --bindir is not respected.\\nmakeFlagsArray+=(\\\"bindir=$bin/bin\\\" \\\"sbindir=$bin/sbin\\\" \\\"rootsbindir=$bin/sbin\\\")\\n\"),(\"postInstall\",\"echo SUPPORTED-LOCALES=C.UTF-8/UTF-8 > ../glibc-2*/localedata/SUPPORTED\\nmake -j${NIX_BUILD_CORES:-1} -l${NIX_BUILD_CORES:-1} localedata/install-locales\\n\\ntest -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache\\n\\nif test -n \\\"$linuxHeaders\\\"; then\\n    # Include the Linux kernel headers in Glibc, except the `scsi'\\n    # subdirectory, which Glibc provides itself.\\n    (cd $dev/include && \\\\\\n     ln -sv $(ls -d $linuxHeaders/include/* | grep -v scsi\\\\$) .)\\nfi\\n\\n# Fix for NIXOS-54 (ldd not working on x86_64).  Make a symlink\\n# \\\"lib64\\\" to \\\"lib\\\".\\nif test -n \\\"$is64bit\\\"; then\\n    ln -s lib $out/lib64\\nfi\\n\\n# Get rid of more unnecessary stuff.\\nrm -rf $out/var $bin/bin/sln\\n\\n# Backwards-compatibility to fix e.g.\\n# \\\"configure: error: Pthreads are required to build libgomp\\\" during `gcc`-build\\n# because it's not actually needed anymore to link against `pthreads` since\\n# it's now part of `libc.so.6` itself, but the gcc build breaks if\\n# this doesn't work.\\nln -sf $out/lib/libpthread.so.0 $out/lib/libpthread.so\\nln -sf $out/lib/librt.so.1 $out/lib/librt.so\\nln -sf $out/lib/libdl.so.2 $out/lib/libdl.so\\nln -sf $out/lib/libutil.so.1 $out/lib/libutil.so\\ntouch $out/lib/libpthread.a\\n\\nfor i in \\\"$out\\\"/lib/*.a; do\\n    [ \\\"$i\\\" = \\\"$out/lib/libm.a\\\" ] || $STRIP -S \\\"$i\\\"\\ndone\\n\\n# Put libraries for static linking in a separate output.  Note\\n# that libc_nonshared.a and libpthread_nonshared.a are required\\n# for dynamically-linked applications.\\nmkdir -p $static/lib\\nmv $out/lib/*.a $static/lib\\nmv $static/lib/lib*_nonshared.a $out/lib\\n# Some of *.a files are linker scripts where moving broke the paths.\\nsed \\\"/^GROUP/s|$out/lib/lib|$static/lib/lib|g\\\" \\\\\\n  -i \\\"$static\\\"/lib/*.a\\n\\n# Work around a Nix bug: hard links across outputs cause a build failure.\\ncp $bin/bin/getconf $bin/bin/getconf_\\nmv $bin/bin/getconf_ $bin/bin/getconf\\n\"),(\"postPatch\",\"# Needed for glibc to build with the gnumake 3.82\\n# http://comments.gmane.org/gmane.linux.lfs.support/31227\\nsed -i 's/ot \\\\$/ot:\\\\n\\\\ttouch $@\\\\n$/' manual/Makefile\\n\\n# nscd needs libgcc, and we don't want it dynamically linked\\n# because we don't want it to depend on bootstrap-tools libs.\\necho \\\"LDFLAGS-nscd += -static-libgcc\\\" >> nscd/Makefile\\n\\n# Ensure that `__nss_files_fopen` can still be wrapped by `libredirect`.\\nsed -i -e '/libc_hidden_def (__nss_files_fopen)/d' nss/nss_files_fopen.c\\nsed -i -e '/libc_hidden_proto (__nss_files_fopen)/d' include/nss_files.h\\n\\n# Ensure that libidn2 is found.\\npatch -p 1 <<EOF\\n--- a/inet/idna.c\\n+++ b/inet/idna.c\\n@@ -25,1 +25,1 @@\\n-#define LIBIDN2_SONAME \\\"libidn2.so.0\\\"\\n+#define LIBIDN2_SONAME \\\"/nix/store/yhsfk2in77yalcy8dr7cwlixh8cnqp1l-libidn2-2.3.2/lib/libidn2.so.0\\\"\\nEOF\\n\"),(\"preBuild\",\"\"),(\"preConfigure\",\"export PWD_P=$(type -tP pwd)\\nfor i in configure io/ftwtest-sh; do\\n    # Can't use substituteInPlace here because replace hasn't been\\n    # built yet in the bootstrap.\\n    sed -i \\\"$i\\\" -e \\\"s^/bin/pwd^$PWD_P^g\\\"\\ndone\\n\\nmkdir ../build\\ncd ../build\\n\\nconfigureScript=\\\"`pwd`/../$sourceRoot/configure\\\"\\n\\nmakeFlags=\\\"$makeFlags BUILD_LDFLAGS=-Wl,-rpath,/nix/store/46ily5fvz680l4sif6zp6pvs11ay936g-bootstrap-stage0-glibc-bootstrap/lib OBJDUMP=/nix/store/z2r64ripyh2nn23xdgicxkw8xbh5zs65-binutils-2.38/bin/objdump\\\"\\n\\n\\n\"),(\"preInstall\",\"if [ -f /nix/store/h0r631awi89fg5qpwn1nilpn36chqbkx-bootstrap-tools/lib/libgcc_s.so.1 ]; then\\n    mkdir -p $out/lib\\n    cp /nix/store/h0r631awi89fg5qpwn1nilpn36chqbkx-bootstrap-tools/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1\\n    # the .so It used to be a symlink, but now it is a script\\n    cp -a /nix/store/h0r631awi89fg5qpwn1nilpn36chqbkx-bootstrap-tools/lib/libgcc_s.so $out/lib/libgcc_s.so\\nfi\\n\"),(\"profilingLibraries\",\"\"),(\"propagatedBuildInputs\",\"\"),(\"propagatedNativeBuildInputs\",\"\"),(\"separateDebugInfo\",\"1\"),(\"src\",\"/nix/store/wjbv1k6yigmb280wrvc1gkv8cnrsacij-glibc-2.34.tar.xz\"),(\"static\",\"/nix/store/vqrka8z8k7spqsrvp41z0vvjfn0kcim6-glibc-2.34-210-static\"),(\"stdenv\",\"/nix/store/jf31qhzp3d1zq3rz6b5mkfijw2xaib49-bootstrap-stage2-stdenv-linux\"),(\"strictDeps\",\"1\"),(\"system\",\"aarch64-linux\"),(\"version\",\"2.34-210\")])"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/fixture-1/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1",
    "content": "the man pages"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/image-nixos-jq-pkg-db/Dockerfile",
    "content": "FROM --platform=linux/amd64 nixos/nix:2.28.2@sha256:4215204b5f65c7b756b26a6dd47a6af77f1d906e5edf62b184c95420a7dfa08f AS builder\n\n# cross-platform builds cannot use bpf features\nRUN mkdir -p /etc/nix && \\\n    echo 'filter-syscalls = false' > /etc/nix/nix.conf && \\\n    echo 'experimental-features = nix-command flakes' >> /etc/nix/nix.conf\n\n# pin Nixpkgs to a specific commit (2023.11.17)\nRUN mkdir -p /root/nix && \\\n    echo 'import (fetchTarball \"https://github.com/NixOS/nixpkgs/archive/46688f8eb5.tar.gz\") {}' > /root/nix/pinned-nixpkgs.nix\n\n# install jq + sqlite using the pinned Nixpkgs\nRUN nix-env -f /root/nix/pinned-nixpkgs.nix -iA jq sqlite\n\nCOPY clean_db.sql /tmp/clean_db.sql\n\nRUN echo \"path\" > /tmp/required_paths.txt\nRUN . /root/.nix-profile/etc/profile.d/nix.sh && \\\n    PAGER='' nix-store -q --requisites $(which jq) >> /tmp/required_paths.txt\nRUN sqlite3 /nix/var/nix/db/db.sqlite \"CREATE TEMP TABLE IF NOT EXISTS RequiredPaths (path TEXT PRIMARY KEY);\"\nRUN sqlite3 /nix/var/nix/db/db.sqlite \".mode list\" \".import /tmp/required_paths.txt RequiredPaths\"\nRUN sqlite3 /nix/var/nix/db/db.sqlite < /tmp/clean_db.sql\n\n# create a directory with only the required dependencies + any derivations\nRUN mkdir -p /nix-minimal && \\\n    for dep in $(nix-store -q --requisites $(which jq)); do \\\n        mkdir -p /nix-minimal$(dirname $dep) && \\\n        cp -a $dep /nix-minimal$dep; \\\n    done\n\n# now add all the drv files from the store\nRUN for drv in $(find /nix/store -name \"*.drv\"); do \\\n        mkdir -p /nix-minimal$(dirname $drv) && \\\n        cp -a $drv /nix-minimal$drv; \\\n    done\n\nFROM scratch\n\n# get packages + relationships from here\nCOPY --from=builder /nix/var/nix/db/db.sqlite /nix/var/nix/db/db.sqlite\n\n# get files owned by each package here\nCOPY --from=builder /nix-minimal/nix/store /nix/store"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/image-nixos-jq-pkg-db/clean_db.sql",
    "content": "-- Delete DerivationOutputs where path is not in RequiredPaths\nDELETE FROM DerivationOutputs\nWHERE path NOT IN (SELECT path FROM RequiredPaths);\n\n-- Delete ValidPaths where path is not in RequiredPaths\nDELETE FROM ValidPaths\nWHERE path NOT IN (SELECT path FROM RequiredPaths);\n\nDELETE FROM Refs\nWHERE referrer NOT IN (SELECT id FROM ValidPaths WHERE path IN (SELECT path FROM RequiredPaths))\n   OR reference NOT IN (SELECT id FROM ValidPaths WHERE path IN (SELECT path FROM RequiredPaths));\n\n\n-- Run VACUUM to clean up the database file\nVACUUM;"
  },
  {
    "path": "syft/pkg/cataloger/nix/testdata/image-nixos-jq-pkg-store/Dockerfile",
    "content": "FROM --platform=linux/amd64 nixos/nix:2.28.2@sha256:4215204b5f65c7b756b26a6dd47a6af77f1d906e5edf62b184c95420a7dfa08f AS builder\n\n# cross-platform builds cannot use bpf features\nRUN mkdir -p /etc/nix && \\\n    echo 'filter-syscalls = false' > /etc/nix/nix.conf && \\\n    echo 'experimental-features = nix-command flakes' >> /etc/nix/nix.conf\n\n# pin Nixpkgs to a specific commit (2023.11.17)\nRUN mkdir -p /root/nix && \\\n    echo 'import (fetchTarball \"https://github.com/NixOS/nixpkgs/archive/46688f8eb5.tar.gz\") {}' > /root/nix/pinned-nixpkgs.nix\n\n# install jq using the pinned Nixpkgs\nRUN nix-env -f /root/nix/pinned-nixpkgs.nix -iA jq\n\n# create a directory with only the required dependencies + any derivations\nRUN mkdir -p /nix-minimal && \\\n    for dep in $(nix-store -q --requisites $(which jq)); do \\\n        mkdir -p /nix-minimal$(dirname $dep) && \\\n        cp -a $dep /nix-minimal$dep; \\\n    done\n\n# now add all the drv files from the store\nRUN for drv in $(find /nix/store -name \"*.drv\"); do \\\n        mkdir -p /nix-minimal$(dirname $drv) && \\\n        cp -a $drv /nix-minimal$drv; \\\n    done\n\nFROM scratch\n\nCOPY --from=builder /nix-minimal/nix/store /nix/store\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: ocaml # MANUAL\n    name: opam-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/ocaml/cataloger.go\n      function: NewOpamPackageManagerCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - language\n      - ocaml\n      - opam\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parseOpamPackage\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*opam'\n        metadata_types: # AUTO-GENERATED\n          - pkg.OpamPackage\n        package_types: # AUTO-GENERATED\n          - opam\n        json_schema_types: # AUTO-GENERATED\n          - OpamPackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/cataloger.go",
    "content": "/*\nPackage ocaml provides a concrete Cataloger implementation for packages relating to the OCaml language ecosystem.\n*/\npackage ocaml\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewOpamPackageManagerCataloger returns a new cataloger object for OCaml opam.\nfunc NewOpamPackageManagerCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"opam-cataloger\").\n\t\tWithParserByGlobs(parseOpamPackage, \"**/*opam\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/cataloger_test.go",
    "content": "package ocaml\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_PackageCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain package files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"opam/alcotest.opam\",\n\t\t\t\t\"opam/ocaml-base-compiler.4.14.0/opam\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewOpamPackageManagerCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/package.go",
    "content": "package ocaml\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newOpamPackage(ctx context.Context, m pkg.OpamPackage, fileLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   m.Version,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, fileLocation, m.Licenses...)...),\n\t\tPURL:      opamPackageURL(m.Name, m.Version),\n\t\tLocations: file.NewLocationSet(fileLocation),\n\t\tType:      pkg.OpamPkg,\n\t\tLanguage:  pkg.OCaml,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc opamPackageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\t\"opam\",\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/package_test.go",
    "content": "package ocaml\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\n\ttype args struct {\n\t\tname    string\n\t\tversion string\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\targs: args{\n\t\t\t\tname:    \"ocaml-base-compiler\",\n\t\t\t\tversion: \"5.2.0\",\n\t\t\t},\n\t\t\twant: \"pkg:opam/ocaml-base-compiler@5.2.0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, opamPackageURL(tt.args.name, tt.args.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/parse_opam.go",
    "content": "package ocaml\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n//nolint:funlen\nfunc parseOpamPackage(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\topamVersionRe := regexp.MustCompile(`(?m)opam-version:\\s*\"[0-9]+\\.[0-9]+\"`)\n\tversionRe := regexp.MustCompile(`(?m)^version:\\s*\"(?P<version>[^\"]*)\"`)\n\tlicenseRe := regexp.MustCompile(`(?m)^license:\\s*(?P<license>(?:\"[^\"]*\")|(?:\\[[^\\]]*\\]))`)\n\thomepageRe := regexp.MustCompile(`(?m)homepage:\\s*\"(?P<url>[^\"]+)\"`)\n\turlRe := regexp.MustCompile(`(?m)url\\s*{(?P<url>[^}]+)}`)\n\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // regex matching requires full buffer\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to read opam package\")\n\t\treturn nil, nil, nil\n\t}\n\n\tif opamVersionRe.FindSubmatch(data) == nil {\n\t\tlog.WithFields(\"warning\", err).Trace(\"opam version not found\")\n\t\treturn nil, nil, nil\n\t}\n\n\t// If name is inferred from file name/path\n\tvar name, version string\n\tvar licenses []string\n\tloc := reader.AccessPath\n\tdir, file := path.Split(loc)\n\n\tif file == \"opam\" {\n\t\t// folder name is the package name and version\n\t\ts := strings.SplitN(path.Base(dir), \".\", 2)\n\t\tname = s[0]\n\n\t\tif len(s) > 1 {\n\t\t\tversion = s[1]\n\t\t}\n\t} else {\n\t\t// filename is the package name and version is in the content\n\t\tname = strings.Replace(file, \".opam\", \"\", 1)\n\n\t\tm := versionRe.FindSubmatch(data)\n\n\t\tif m != nil {\n\t\t\tversion = string(m[1])\n\t\t}\n\t}\n\n\tentry := pkg.OpamPackage{\n\t\tName:    name,\n\t\tVersion: version,\n\t}\n\n\tlicenseMatch := licenseRe.FindSubmatch(data)\n\tif licenseMatch != nil {\n\t\tlicenses = parseLicenses(string(licenseMatch[1]))\n\n\t\tentry.Licenses = licenses\n\t}\n\n\turlMatch := urlRe.FindSubmatch(data)\n\tif urlMatch != nil {\n\t\turl, checksums := parseURL(urlMatch[1])\n\n\t\tif url != \"\" {\n\t\t\tentry.URL = url\n\t\t}\n\n\t\tif checksums != nil {\n\t\t\tentry.Checksums = checksums\n\t\t}\n\t}\n\n\thomepageMatch := homepageRe.FindSubmatch(data)\n\tif homepageMatch != nil {\n\t\tentry.Homepage = string(homepageMatch[1])\n\t}\n\n\tpkgs = append(\n\t\tpkgs,\n\t\tnewOpamPackage(\n\t\t\tctx,\n\t\t\tentry,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t)\n\n\treturn pkgs, nil, nil\n}\n\nfunc parseLicenses(licensesStr string) []string {\n\tlicenses := []string{}\n\n\tif licensesStr[:1] == `\"` {\n\t\tcontent := licensesStr[1 : len(licensesStr)-1]\n\t\tlicenses = append(licenses, content)\n\t} else {\n\t\tvar d []string\n\t\terr := json.Unmarshal([]byte(licensesStr), &d)\n\n\t\tif err == nil {\n\t\t\tlicenses = append(licenses, d...)\n\t\t}\n\t}\n\n\treturn licenses\n}\n\nfunc parseURL(data []byte) (string, []string) {\n\turlRe := regexp.MustCompile(`(?m)src:\\s*\"(?P<url>.*)\"`)\n\tchecksumsRe := regexp.MustCompile(`(?m)checksum:\\s*(\"[^\"]*\"|\\[\\s*((?:\"[^\"]*\"\\s*)+)\\])`)\n\n\turlMatch := urlRe.FindSubmatch(data)\n\tif urlMatch == nil {\n\t\treturn \"\", nil\n\t}\n\n\turl := urlMatch[1]\n\n\tvar checksum []string\n\tchecksumMatch := checksumsRe.FindSubmatch(data)\n\tif checksumMatch != nil {\n\t\tvar fields []string\n\t\tif checksumMatch[2] != nil {\n\t\t\tfields = strings.Fields(string(checksumMatch[2]))\n\t\t} else {\n\t\t\tfields = strings.Fields(string(checksumMatch[1]))\n\t\t}\n\n\t\tfor _, f := range fields {\n\t\t\tchecksum = append(checksum, strings.ReplaceAll(f, `\"`, \"\"))\n\t\t}\n\t}\n\n\treturn string(url), checksum\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/parse_opam_test.go",
    "content": "package ocaml\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseOpamPackage(t *testing.T) {\n\tfixture1 := \"testdata/ocaml-base-compiler.4.14.0/opam\"\n\tlocation1 := file.NewLocation(fixture1)\n\n\tfixture2 := \"testdata/alcotest.opam\"\n\tlocation2 := file.NewLocation(fixture2)\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tfixture string\n\t\twant    []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: fixture1,\n\t\t\twant: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"ocaml-base-compiler\",\n\t\t\t\t\tVersion:   \"4.14.0\",\n\t\t\t\t\tPURL:      \"pkg:opam/ocaml-base-compiler@4.14.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(location1),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocationWithContext(ctx, location1, \"LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception\")...,\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.OCaml,\n\t\t\t\t\tType:     pkg.OpamPkg,\n\t\t\t\t\tMetadata: pkg.OpamPackage{\n\t\t\t\t\t\tName:     \"ocaml-base-compiler\",\n\t\t\t\t\t\tVersion:  \"4.14.0\",\n\t\t\t\t\t\tLicenses: []string{\"LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception\"},\n\t\t\t\t\t\tURL:      \"https://github.com/ocaml/ocaml/archive/4.14.0.tar.gz\",\n\t\t\t\t\t\tChecksums: []string{\n\t\t\t\t\t\t\t\"sha256=39f44260382f28d1054c5f9d8bf4753cb7ad64027da792f7938344544da155e8\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHomepage: \"https://ocaml.org\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: fixture2,\n\t\t\twant: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"alcotest\",\n\t\t\t\t\tVersion:   \"1.5.0\",\n\t\t\t\t\tPURL:      \"pkg:opam/alcotest@1.5.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(location2),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicensesFromLocationWithContext(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tlocation2,\n\t\t\t\t\t\t\t\"ISC\",\n\t\t\t\t\t\t)...,\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.OCaml,\n\t\t\t\t\tType:     pkg.OpamPkg,\n\t\t\t\t\tMetadata: pkg.OpamPackage{\n\t\t\t\t\t\tName:     \"alcotest\",\n\t\t\t\t\t\tVersion:  \"1.5.0\",\n\t\t\t\t\t\tLicenses: []string{\"ISC\"},\n\t\t\t\t\t\tHomepage: \"https://github.com/mirage/alcotest\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\t// TODO: no relationships are under test yet\n\t\t\tvar expectedRelationships []artifact.Relationship\n\n\t\t\tpkgtest.TestFileParser(t, tt.fixture, parseOpamPackage, tt.want, expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc TestParseLicense(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  []string\n\t}{\n\t\t{\n\t\t\tname:  \"single license\",\n\t\t\tinput: `\"MIT\"`,\n\t\t\twant: []string{\n\t\t\t\t\"MIT\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple license\",\n\t\t\tinput: `[\n\t\t\t\"MIT\", \"IST\"\n\t\t\t]`,\n\t\t\twant: []string{\n\t\t\t\t\"MIT\",\n\t\t\t\t\"IST\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, parseLicenses(tt.input))\n\t\t})\n\t}\n}\n\nfunc TestParseUrl(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tinput         string\n\t\twantUrl       string\n\t\twantChecksums []string\n\t}{\n\t\t{\n\t\t\tname: \"single checksums\",\n\t\t\tinput: `\nsrc:\n    \"https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz\"\n  checksum:\n    \"sha256=fa17d15d5be23c79ba741f5f7cb88ed7112de16a4410cea81c71b98086889847\"\n\t\t\t`,\n\t\t\twantUrl: \"https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz\",\n\t\t\twantChecksums: []string{\n\t\t\t\t\"sha256=fa17d15d5be23c79ba741f5f7cb88ed7112de16a4410cea81c71b98086889847\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple checksums\",\n\t\t\tinput: `\nsrc:\n    \"https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz\"\n  checksum: [\n    \"sha256=fa17d15d5be23c79ba741f5f7cb88ed7112de16a4410cea81c71b98086889847\"\n    \"sha512=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\"\n\t\"sha1024=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\"\n  ]\n\t\t\t`,\n\t\t\twantUrl: \"https://github.com/mirage/mirage-clock/releases/download/v4.2.0/mirage-clock-4.2.0.tbz\",\n\t\t\twantChecksums: []string{\n\t\t\t\t\"sha256=fa17d15d5be23c79ba741f5f7cb88ed7112de16a4410cea81c71b98086889847\",\n\t\t\t\t\"sha512=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\",\n\t\t\t\t\"sha1024=05a359dc8400d4ca200ff255dbd030acd33d2c4acb5020838f772c02cdb5f243f3dbafbc43a8cd51e6b5923a140f84c9e7ea25b2c0fa277bb68b996190d36e3b\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\turl, checksums := parseURL([]byte(tt.input))\n\t\t\tassert.Equal(t, tt.wantUrl, url)\n\t\t\tassert.Equal(t, tt.wantChecksums, checksums)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/testdata/alcotest.opam",
    "content": "version: \"1.5.0\"\n# This file is generated by dune, edit dune-project instead\nopam-version: \"2.0\"\nsynopsis: \"Alcotest is a lightweight and colourful test framework\"\ndescription: \"\"\"\nAlcotest exposes simple interface to perform unit tests. It exposes\na simple TESTABLE module type, a check function to assert test\npredicates and a run function to perform a list of unit -> unit\ntest callbacks.\n\nAlcotest provides a quiet and colorful output where only faulty runs\nare fully displayed at the end of the run (with the full logs ready to\ninspect), with a simple (yet expressive) query language to select the\ntests to run.\n\"\"\"\nmaintainer: [\"thomas@gazagnaire.org\"]\nauthors: [\"Thomas Gazagnaire\"]\nlicense: \"ISC\"\nhomepage: \"https://github.com/mirage/alcotest\"\ndoc: \"https://mirage.github.io/alcotest\"\nbug-reports: \"https://github.com/mirage/alcotest/issues\"\ndepends: [\n  \"dune\" {>= \"2.8\"}\n  \"ocaml\" {>= \"4.03.0\"}\n  \"fmt\" {>= \"0.8.7\"}\n  \"astring\"\n  \"cmdliner\" {>= \"1.0.0\"}\n  \"re\"\n  \"stdlib-shims\"\n  \"uutf\"\n  \"ocaml-syntax-shims\"\n  \"odoc\" {with-doc}\n]\nconflicts: [\n  \"result\" {< \"1.5\"}\n]\nbuild: [\n  [\"dune\" \"subst\"] {dev}\n  [\n    \"dune\"\n    \"build\"\n    \"-p\"\n    name\n    \"-j\"\n    jobs\n    \"@install\"\n    \"@runtest\" {with-test}\n    \"@doc\" {with-doc}\n  ]\n]\ndev-repo: \"git+https://github.com/mirage/alcotest.git\""
  },
  {
    "path": "syft/pkg/cataloger/ocaml/testdata/glob-paths/opam/alcotest.opam",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/testdata/glob-paths/opam/ocaml-base-compiler.4.14.0/opam",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/ocaml/testdata/ocaml-base-compiler.4.14.0/opam",
    "content": "opam-version: \"2.0\"\nsynopsis: \"Official release 4.14.0\"\nmaintainer: [\n  \"David Allsopp <david@tarides.com>\"\n  \"Florian Angeletti <florian.angeletti@inria.fr>\"\n]\nauthors: \"Xavier Leroy and many contributors\"\nlicense: \"LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception\"\nhomepage: \"https://ocaml.org\"\nbug-reports: \"https://github.com/ocaml/opam-repository/issues\"\ndepends: [\n  \"ocaml\" {= \"4.14.0\" & post}\n  \"base-unix\" {post}\n  \"base-bigarray\" {post}\n  \"base-threads\" {post}\n  \"host-arch-arm32\" {arch = \"arm32\" & post}\n  \"host-arch-arm64\" {arch = \"arm64\" & post}\n  \"host-arch-ppc64\" {arch = \"ppc64\" & post}\n  \"host-arch-riscv64\" {arch = \"riscv64\" & post}\n  \"host-arch-s390x\" {arch = \"s390x\" & post}\n  \"host-arch-x86_32\" {os != \"win32\" & arch = \"x86_32\" & post}\n  \"host-arch-x86_64\" {os != \"win32\" & arch = \"x86_64\" & post}\n  \"host-arch-unknown\"\n    {os != \"win32\" & arch != \"arm32\" & arch != \"arm64\" & arch != \"ppc64\" &\n     arch != \"riscv64\" &\n     arch != \"s390x\" &\n     arch != \"x86_32\" &\n     arch != \"x86_64\" &\n     post}\n  ((\"arch-x86_64\" {os = \"win32\" & arch = \"x86_64\"} &\n    ((\"system-mingw\" & \"mingw-w64-shims\" {os-distribution = \"cygwin\" & post}) |\n     \"system-msvc\")) |\n   (\"arch-x86_32\" {os = \"win32\"} &\n    ((\"system-mingw\" & \"mingw-w64-shims\" {os-distribution = \"cygwin\" & post}) |\n     \"system-msvc\")) |\n   \"host-system-other\" {os != \"win32\" & post})\n  \"ocaml-options-vanilla\" {post}\n  \"flexdll\" {>= \"0.36\" & os = \"win32\"}\n]\nconflict-class: \"ocaml-core-compiler\"\nflags: compiler\nsetenv: CAML_LD_LIBRARY_PATH = \"%{lib}%/stublibs\"\nbuild: [\n  [\n    \"./configure\"\n    \"--host=x86_64-pc-windows\"\n      {system-msvc:installed & arch-x86_64:installed}\n    \"--host=x86_64-w64-mingw32\"\n      {os-distribution = \"cygwin\" & system-mingw:installed &\n       arch-x86_64:installed}\n    \"--host=i686-pc-windows\" {system-msvc:installed & arch-x86_32:installed}\n    \"--host=i686-w64-mingw32\"\n      {os-distribution = \"cygwin\" & system-mingw:installed &\n       arch-x86_32:installed}\n    \"--prefix=%{prefix}%\"\n    \"--docdir=%{doc}%/ocaml\"\n    \"--with-flexdll=%{flexdll:share}%\" {os = \"win32\" & flexdll:installed}\n    \"-C\"\n    \"CC=cc\" {os = \"openbsd\" | os = \"macos\"}\n    \"ASPP=cc -c\" {os = \"openbsd\" | os = \"macos\"}\n  ]\n  [make \"-j%{jobs}%\"]\n]\ninstall: [make \"install\"]\nbuild-env: MSYS2_ARG_CONV_EXCL = \"*\"\npost-messages: [\n  \"\"\"\\\nA failure in the middle of the build may be caused by build parallelism\n   (enabled by default).\n   Please file a bug report at https://github.com/ocaml/opam-repository/issues\"\"\"\n    {failure & jobs > \"1\"}\n  \"\"\"\\\nYou can try installing again including --jobs=1\n   to force a sequential build instead.\"\"\"\n    {failure & jobs > \"1\" & opam-version >= \"2.0.5\"}\n]\ndev-repo: \"git+https://github.com/ocaml/ocaml#4.14\"\nurl {\n  src: \"https://github.com/ocaml/ocaml/archive/4.14.0.tar.gz\"\n  checksum:\n    \"sha256=39f44260382f28d1054c5f9d8bf4753cb7ad64027da792f7938344544da155e8\"\n}\nextra-source \"ocaml-base-compiler.install\" {\n  src:\n    \"https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/ocaml-base-compiler/ocaml-base-compiler.install\"\n  checksum: [\n    \"sha256=79f2a1a5044a91350a0eb6ce12e261a72a2855c094c425cddf3860e58c486678\"\n    \"md5=3e969b841df1f51ca448e6e6295cb451\"\n  ]\n}\nx-env-path-rewrite: [\n  [CAML_LD_LIBRARY_PATH (\";\" {os = \"win32\"} \":\" {os != \"win32\"}) \"target\"]\n]\n"
  },
  {
    "path": "syft/pkg/cataloger/php/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: php # MANUAL\n    name: php-composer-installed-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/php/cataloger.go\n      function: NewComposerInstalledCataloger\n    selectors: # AUTO-GENERATED\n      - composer\n      - image\n      - installed\n      - language\n      - package\n      - php\n    parsers: # AUTO-GENERATED structure\n      - function: parseInstalledJSON\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/installed.json'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PhpComposerInstalledEntry\n        package_types: # AUTO-GENERATED\n          - php-composer\n        json_schema_types: # AUTO-GENERATED\n          - PhpComposerInstalledEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: php # MANUAL\n    name: php-composer-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/php/cataloger.go\n      function: NewComposerLockCataloger\n    selectors: # AUTO-GENERATED\n      - composer\n      - declared\n      - directory\n      - language\n      - package\n      - php\n    parsers: # AUTO-GENERATED structure\n      - function: parseComposerLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/composer.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PhpComposerLockEntry\n        package_types: # AUTO-GENERATED\n          - php-composer\n        json_schema_types: # AUTO-GENERATED\n          - PhpComposerLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n  - ecosystem: php # MANUAL\n    name: php-interpreter-cataloger # AUTO-GENERATED\n    type: custom # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: \"\"\n      function: \"\"\n    selectors: # AUTO-GENERATED\n      - binary\n      - declared\n      - directory\n      - image\n      - installed\n      - package\n      - php\n    detectors: # MANUAL - edit detectors here\n      - method: glob\n        criteria:\n          - '**/php*'\n          - '**/php*/**/*.so'\n          - '**/php-fpm*'\n          - '**/apache*/**/libphp*.so'\n    metadata_types: # AUTO-GENERATED\n      - pkg.BinarySignature\n    package_types: # AUTO-GENERATED\n      - binary\n    json_schema_types: # AUTO-GENERATED\n      - BinarySignature\n    capabilities: # MANUAL - edit capabilities here\n      - name: license\n        default: false\n      - name: dependency.depth\n        default:\n          - direct\n      - name: dependency.edges\n        default: flat\n      - name: dependency.kinds\n        default:\n          - runtime\n      - name: package_manager.files.listing\n        default: false\n      - name: package_manager.files.digests\n        default: false\n      - name: package_manager.package_integrity_hash\n        default: false\n  - ecosystem: php # MANUAL\n    name: php-pear-serialized-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/php/cataloger.go\n      function: NewPearCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - image\n      - language\n      - package\n      - pear\n      - php\n    parsers: # AUTO-GENERATED structure\n      - function: parsePear\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/php/.registry/**/*.reg'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PhpPearEntry\n        package_types: # AUTO-GENERATED\n          - php-pear\n        json_schema_types: # AUTO-GENERATED\n          - PhpPearEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n          - name: package_manager.files.digests\n            default: true\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: php # MANUAL\n    name: php-pecl-serialized-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/php/cataloger.go\n      function: NewPeclCataloger\n    selectors: # AUTO-GENERATED\n      - deprecated\n      - package\n    parsers: # AUTO-GENERATED structure\n      - function: parsePecl\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/php/.registry/.channel.*/*.reg'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PhpPeclEntry\n        package_types: # AUTO-GENERATED\n          - php-pecl\n        json_schema_types: # AUTO-GENERATED\n          - PhpPeclEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/php/cataloger.go",
    "content": "/*\nPackage php provides a concrete Cataloger implementation relating to packages within the PHP language ecosystem.\n*/\npackage php\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// Note about the distinction between composer.lock and installed.json: composer.lock and installed.json have different\n// semantic meanings. The lock file represents what should be installed, whereas the installed file represents what is installed.\n\n// NewComposerInstalledCataloger returns a new cataloger for PHP installed.json files.\nfunc NewComposerInstalledCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"php-composer-installed-cataloger\").\n\t\tWithParserByGlobs(parseInstalledJSON, \"**/installed.json\")\n}\n\n// NewComposerLockCataloger returns a new cataloger for PHP composer.lock files.\nfunc NewComposerLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"php-composer-lock-cataloger\").\n\t\tWithParserByGlobs(parseComposerLock, \"**/composer.lock\")\n}\n\n// NewPearCataloger returns a new cataloger for PHP Pear metadata (including Pecl metadata).\nfunc NewPearCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"php-pear-serialized-cataloger\").\n\t\tWithParserByGlobs(parsePear, \"**/php/.registry/**/*.reg\")\n}\n\n// NewPeclCataloger returns a new cataloger for PHP Pecl metadata. Note: this will also catalog Pear metadata so should\n// not be used in conjunction with the Pear Cataloger.\n//\n// Deprecated: please use NewPearCataloger instead.\nfunc NewPeclCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"php-pecl-serialized-cataloger\").\n\t\tWithParserByGlobs(parsePecl, \"**/php/.registry/.channel.*/*.reg\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/cataloger_test.go",
    "content": "package php\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_ComposerInstalledCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain composer files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/installed.json\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewComposerInstalledCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_ComposerLockCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain composer lock files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/composer.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewComposerLockCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_PearCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain pear files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"php/.registry/.channel.pecl.php.net/memcached.reg\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPearCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_PeclCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain pear files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"php/.registry/.channel.pecl.php.net/memcached.reg\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPeclCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/interpreter_cataloger.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/binutils\"\n)\n\ntype interpreterCataloger struct {\n\tname                   string\n\textensionsGlob         string\n\tinterpreterClassifiers []binutils.Classifier\n}\n\n// NewInterpreterCataloger returns a new cataloger for PHP interpreters (php and php-fpm) as well as any installed C extensions.\nfunc NewInterpreterCataloger() pkg.Cataloger { //nolint:funlen\n\tname := \"php-interpreter-cataloger\"\n\tm := binutils.ContextualEvidenceMatchers{CatalogerName: name}\n\treturn interpreterCataloger{\n\t\tname: name,\n\t\t// example matches:\n\t\t// - as found in php-fpm docker library images: /usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so\n\t\t// - as found in alpine images: /usr/lib/php83/modules/bcmath.so\n\t\textensionsGlob: \"**/php*/**/*.so\",\n\t\tinterpreterClassifiers: []binutils.Classifier{\n\t\t\t{\n\t\t\t\tClass:    \"php-cli-binary\",\n\t\t\t\tFileGlob: \"**/php*\",\n\t\t\t\tEvidenceMatcher: m.FileNameTemplateVersionMatcher(\n\t\t\t\t\t`(.*/|^)php[0-9]*$`,\n\t\t\t\t\t`(?m)X-Powered-By: PHP\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(beta[0-9]+|alpha[0-9]+|RC[0-9]+)?)`),\n\t\t\t\tPackage: \"php-cli\",\n\t\t\t\tPURL: packageurl.PackageURL{\n\t\t\t\t\tType: packageurl.TypeGeneric,\n\t\t\t\t\tName: \"php-cli\",\n\t\t\t\t\t// the version will be filled in dynamically\n\t\t\t\t},\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t{\n\t\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\t\tVendor:  \"php\",\n\t\t\t\t\t\t\tProduct: \"php\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSource: cpe.NVDDictionaryLookupSource,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tClass:    \"php-fpm-binary\",\n\t\t\t\tFileGlob: \"**/php-fpm*\",\n\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t`(?m)X-Powered-By: PHP\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(beta[0-9]+|alpha[0-9]+|RC[0-9]+)?)`),\n\t\t\t\tPackage: \"php-fpm\",\n\t\t\t\tPURL: packageurl.PackageURL{\n\t\t\t\t\tType: packageurl.TypeGeneric,\n\t\t\t\t\tName: \"php-fpm\",\n\t\t\t\t\t// the version will be filled in dynamically\n\t\t\t\t},\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t{\n\t\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\t\tVendor:  \"php\",\n\t\t\t\t\t\t\tProduct: \"php\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSource: cpe.NVDDictionaryLookupSource,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tClass:    \"php-apache-binary\",\n\t\t\t\tFileGlob: \"**/apache*/**/libphp*.so\",\n\t\t\t\tEvidenceMatcher: m.FileContentsVersionMatcher(\n\t\t\t\t\t`(?m)X-Powered-By: PHP\\/(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+(beta[0-9]+|alpha[0-9]+|RC[0-9]+)?)`),\n\t\t\t\tPackage: \"libphp\",\n\t\t\t\tPURL: packageurl.PackageURL{\n\t\t\t\t\tType: packageurl.TypeGeneric,\n\t\t\t\t\tName: \"php\",\n\t\t\t\t\t// the version will be filled in dynamically\n\t\t\t\t},\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\t{\n\t\t\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\t\t\tVendor:  \"php\",\n\t\t\t\t\t\t\tProduct: \"php\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSource: cpe.NVDDictionaryLookupSource,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc (p interpreterCataloger) Name() string {\n\treturn p.name\n}\n\nfunc (p interpreterCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {\n\tinterpreterPkgs, intErrs := p.catalogInterpreters(resolver)\n\textensionPkgs, extErrs := p.catalogExtensions(resolver)\n\n\t// TODO: a future iteration of this cataloger could be to read all php.ini / php/conf.d/*.ini files and indicate which extensions are enabled\n\t// and attempt to resolve the extension_dir. This can be tricky as it is a #define in the php source code and not always available\n\t// in configuration. For the meantime we report all extensions present\n\n\t// create a relationship for each interpreter package to the extensions\n\tvar relationships []artifact.Relationship\n\tfor _, interpreter := range interpreterPkgs {\n\t\tfor _, extension := range extensionPkgs {\n\t\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\t\tFrom: extension,\n\t\t\t\tTo:   interpreter,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\tvar allPkgs []pkg.Package\n\tallPkgs = append(allPkgs, interpreterPkgs...)\n\tallPkgs = append(allPkgs, extensionPkgs...)\n\n\treturn allPkgs, relationships, unknown.Join(intErrs, extErrs)\n}\n\nfunc (p interpreterCataloger) catalogInterpreters(resolver file.Resolver) ([]pkg.Package, error) {\n\tvar errs error\n\tvar packages []pkg.Package\n\tfor _, cls := range p.interpreterClassifiers {\n\t\tlocations, err := resolver.FilesByGlob(cls.FileGlob)\n\t\tif err != nil {\n\t\t\t// convert any file.Resolver path errors to unknowns with locations\n\t\t\terrs = unknown.Join(errs, unknown.ProcessPathErrors(err))\n\t\t\tcontinue\n\t\t}\n\t\tfor _, location := range locations {\n\t\t\tpkgs, err := cls.EvidenceMatcher(cls, binutils.MatcherContext{Resolver: resolver, Location: location})\n\t\t\tif err != nil {\n\t\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpackages = append(packages, pkgs...)\n\t\t}\n\t}\n\treturn packages, errs\n}\n\nfunc (p interpreterCataloger) catalogExtensions(resolver file.Resolver) ([]pkg.Package, error) {\n\tlocations, err := resolver.FilesByGlob(p.extensionsGlob)\n\tif err != nil {\n\t\t// convert any file.Resolver path errors to unknowns with locations\n\t\treturn nil, unknown.ProcessPathErrors(err)\n\t}\n\n\tvar packages []pkg.Package\n\tvar errs error\n\tfor _, location := range locations {\n\t\tpkgs, err := p.catalogExtension(resolver, location)\n\t\tif err != nil {\n\t\t\terrs = unknown.Append(errs, location, err)\n\t\t\tcontinue\n\t\t}\n\t\tpackages = append(packages, pkgs...)\n\t}\n\treturn packages, errs\n}\n\nfunc (p interpreterCataloger) catalogExtension(resolver file.Resolver, location file.Location) ([]pkg.Package, error) {\n\treader, err := resolver.FileContentsByLocation(location)\n\tdefer internal.CloseAndLogError(reader, location.RealPath)\n\tif err != nil {\n\t\treturn nil, unknown.ProcessPathErrors(err)\n\t}\n\n\tname, cls := p.getClassifier(location.RealPath)\n\tif name == \"\" || cls == nil {\n\t\treturn nil, nil\n\t}\n\n\tpkgs, err := cls.EvidenceMatcher(*cls, binutils.MatcherContext{Resolver: resolver, Location: location})\n\tif err != nil {\n\t\treturn nil, unknown.New(location, err)\n\t}\n\n\treturn pkgs, err\n}\n\nfunc (p interpreterCataloger) getClassifier(realPath string) (string, *binutils.Classifier) {\n\tif !strings.HasSuffix(realPath, \".so\") {\n\t\treturn \"\", nil\n\t}\n\n\tbase := path.Base(realPath)\n\tname := strings.TrimSuffix(base, \".so\")\n\n\tvar match string\n\tswitch name {\n\tcase \"mysqli\":\n\t\tmatch = `(mysqlnd|mysqli)?\\s*\\x00*(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+API`\n\tcase \"opcache\":\n\t\tmatch = `(?m)\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+`\n\tcase \"zip\":\n\t\tmatch = `\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+Zip`\n\tdefault:\n\t\tmatch = fmt.Sprintf(`(?m)(\\x00+%s)?\\x00+(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)\\x00+API`, name)\n\t}\n\n\treturn name, &binutils.Classifier{\n\t\tClass:           fmt.Sprintf(\"php-ext-%s-binary\", name),\n\t\tEvidenceMatcher: binutils.FileContentsVersionMatcher(p.name, match),\n\t\tPackage:         name,\n\t\tPURL: packageurl.PackageURL{\n\t\t\tType: packageurl.TypeGeneric,\n\t\t\tName: name,\n\t\t\t// the version will be filled in dynamically\n\t\t},\n\t\tCPEs: []cpe.CPE{\n\t\t\t{\n\t\t\t\tAttributes: cpe.Attributes{\n\t\t\t\t\tPart:    \"a\",\n\t\t\t\t\tVendor:  fmt.Sprintf(\"php-%s\", name),\n\t\t\t\t\tProduct: fmt.Sprintf(\"php-%s\", name),\n\t\t\t\t},\n\t\t\t\tSource: cpe.GeneratedSource,\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/interpreter_cataloger_test.go",
    "content": "package php\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_InterpreterCataloger(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tfixture      string\n\t\texpectedPkgs []string\n\t\texpectedRels []string\n\t}{\n\t\t{\n\t\t\tname:    \"native installation with extensions\",\n\t\t\tfixture: \"image-extensions\",\n\t\t\texpectedPkgs: []string{\n\t\t\t\t// interpreters\n\t\t\t\t\"php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\n\t\t\t\t// extensions\n\t\t\t\t\"bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so)\",\n\t\t\t\t\"exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so)\",\n\t\t\t\t\"ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so)\",\n\t\t\t\t\"gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so)\",\n\t\t\t\t\"gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so)\",\n\t\t\t\t\"intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so)\",\n\t\t\t\t\"ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so)\",\n\t\t\t\t\"opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so)\",\n\t\t\t\t\"pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so)\",\n\t\t\t\t\"pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so)\",\n\t\t\t\t\"pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so)\",\n\t\t\t\t\"sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so)\",\n\t\t\t\t\"sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so)\",\n\t\t\t\t\"zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"bcmath @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"exif @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"ftp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"gd @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"gmp @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"intl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"ldap @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"opcache @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"pcntl @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"pdo_mysql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"pdo_pgsql @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"sodium @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"sysvsem @ 8.3.27 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t\t\"zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-cli @ 8.3.27 (/usr/local/bin/php)\",\n\t\t\t\t\"zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-fpm @ 8.3.27 (/usr/local/sbin/php-fpm)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"apache installation with libphp and extensions\",\n\t\t\tfixture: \"image-apache\",\n\t\t\texpectedPkgs: []string{\n\t\t\t\t// interpreters\n\t\t\t\t\"libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\n\t\t\t\t// extensions\n\t\t\t\t\"calendar @ 8.2.30 (/usr/lib/php/20220829/calendar.so)\",\n\t\t\t\t\"ctype @ 8.2.30 (/usr/lib/php/20220829/ctype.so)\",\n\t\t\t\t\"exif @ 8.2.30 (/usr/lib/php/20220829/exif.so)\",\n\t\t\t\t\"ffi @ 8.2.30 (/usr/lib/php/20220829/ffi.so)\",\n\t\t\t\t\"fileinfo @ 8.2.30 (/usr/lib/php/20220829/fileinfo.so)\",\n\t\t\t\t\"ftp @ 8.2.30 (/usr/lib/php/20220829/ftp.so)\",\n\t\t\t\t\"gettext @ 8.2.30 (/usr/lib/php/20220829/gettext.so)\",\n\t\t\t\t\"iconv @ 8.2.30 (/usr/lib/php/20220829/iconv.so)\",\n\t\t\t\t\"mysqli @ 8.2.30 (/usr/lib/php/20220829/mysqli.so)\",\n\t\t\t\t\"opcache @ 8.2.30 (/usr/lib/php/20220829/opcache.so)\",\n\t\t\t\t\"pdo @ 8.2.30 (/usr/lib/php/20220829/pdo.so)\",\n\t\t\t\t\"pdo_mysql @ 8.2.30 (/usr/lib/php/20220829/pdo_mysql.so)\",\n\t\t\t\t\"phar @ 8.2.30 (/usr/lib/php/20220829/phar.so)\",\n\t\t\t\t\"posix @ 8.2.30 (/usr/lib/php/20220829/posix.so)\",\n\t\t\t\t\"readline @ 8.2.30 (/usr/lib/php/20220829/readline.so)\",\n\t\t\t\t\"shmop @ 8.2.30 (/usr/lib/php/20220829/shmop.so)\",\n\t\t\t\t\"simplexml @ 8.2.30 (/usr/lib/php/20220829/simplexml.so)\",\n\t\t\t\t\"sockets @ 8.2.30 (/usr/lib/php/20220829/sockets.so)\",\n\t\t\t\t\"sysvmsg @ 8.2.30 (/usr/lib/php/20220829/sysvmsg.so)\",\n\t\t\t\t\"sysvsem @ 8.2.30 (/usr/lib/php/20220829/sysvsem.so)\",\n\t\t\t\t\"sysvshm @ 8.2.30 (/usr/lib/php/20220829/sysvshm.so)\",\n\t\t\t\t\"tokenizer @ 8.2.30 (/usr/lib/php/20220829/tokenizer.so)\",\n\t\t\t\t\"xml @ 8.2.30 (/usr/lib/php/20220829/xml.so)\",\n\t\t\t\t\"xmlreader @ 8.2.30 (/usr/lib/php/20220829/xmlreader.so)\",\n\t\t\t\t\"xmlwriter @ 8.2.30 (/usr/lib/php/20220829/xmlwriter.so)\",\n\t\t\t\t\"xsl @ 8.2.30 (/usr/lib/php/20220829/xsl.so)\",\n\t\t\t},\n\t\t\texpectedRels: []string{\n\t\t\t\t\"calendar @ 8.2.30 (/usr/lib/php/20220829/calendar.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"ctype @ 8.2.30 (/usr/lib/php/20220829/ctype.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"exif @ 8.2.30 (/usr/lib/php/20220829/exif.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"ffi @ 8.2.30 (/usr/lib/php/20220829/ffi.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"fileinfo @ 8.2.30 (/usr/lib/php/20220829/fileinfo.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"ftp @ 8.2.30 (/usr/lib/php/20220829/ftp.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"gettext @ 8.2.30 (/usr/lib/php/20220829/gettext.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"iconv @ 8.2.30 (/usr/lib/php/20220829/iconv.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"mysqli @ 8.2.30 (/usr/lib/php/20220829/mysqli.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"opcache @ 8.2.30 (/usr/lib/php/20220829/opcache.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"pdo @ 8.2.30 (/usr/lib/php/20220829/pdo.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"pdo_mysql @ 8.2.30 (/usr/lib/php/20220829/pdo_mysql.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"phar @ 8.2.30 (/usr/lib/php/20220829/phar.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"posix @ 8.2.30 (/usr/lib/php/20220829/posix.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"readline @ 8.2.30 (/usr/lib/php/20220829/readline.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"shmop @ 8.2.30 (/usr/lib/php/20220829/shmop.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"simplexml @ 8.2.30 (/usr/lib/php/20220829/simplexml.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"sockets @ 8.2.30 (/usr/lib/php/20220829/sockets.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"sysvmsg @ 8.2.30 (/usr/lib/php/20220829/sysvmsg.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"sysvsem @ 8.2.30 (/usr/lib/php/20220829/sysvsem.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"sysvshm @ 8.2.30 (/usr/lib/php/20220829/sysvshm.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"tokenizer @ 8.2.30 (/usr/lib/php/20220829/tokenizer.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"xml @ 8.2.30 (/usr/lib/php/20220829/xml.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"xmlreader @ 8.2.30 (/usr/lib/php/20220829/xmlreader.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"xmlwriter @ 8.2.30 (/usr/lib/php/20220829/xmlwriter.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t\t\"xsl @ 8.2.30 (/usr/lib/php/20220829/xsl.so) [dependency-of] libphp @ 8.2.30 (/usr/lib/apache2/modules/libphp8.2.so)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tc := NewInterpreterCataloger()\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, tt.fixture).\n\t\t\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\t\t\t//Expects(tt.expected, nil).\n\t\t\t\tExpectsPackageStrings(tt.expectedPkgs).\n\t\t\t\tExpectsRelationshipStrings(tt.expectedRels).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/package.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newComposerLockPackage(ctx context.Context, pd parsedLockData, indexLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      pd.Name,\n\t\tVersion:   pd.Version,\n\t\tLocations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, pd.License...)...),\n\t\tPURL:      packageURLFromComposer(pd.Name, pd.Version),\n\t\tLanguage:  pkg.PHP,\n\t\tType:      pkg.PhpComposerPkg,\n\t\tMetadata:  pd.PhpComposerLockEntry,\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc newComposerInstalledPackage(ctx context.Context, pd parsedInstalledData, indexLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      pd.Name,\n\t\tVersion:   pd.Version,\n\t\tLocations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, pd.License...)...),\n\t\tPURL:      packageURLFromComposer(pd.Name, pd.Version),\n\t\tLanguage:  pkg.PHP,\n\t\tType:      pkg.PhpComposerPkg,\n\t\tMetadata:  pd.PhpComposerInstalledEntry,\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc newPearPackage(ctx context.Context, pd peclPearData, indexLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      pd.Name,\n\t\tVersion:   pd.Version,\n\t\tLocations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, pd.License...)...),\n\t\tPURL:      packageURLFromPear(pd.Name, pd.Channel, pd.Version),\n\t\tLanguage:  pkg.PHP,\n\t\tType:      pkg.PhpPearPkg,\n\t\tMetadata:  pd.ToPear(),\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc newPeclPackage(ctx context.Context, pd peclPearData, indexLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      pd.Name,\n\t\tVersion:   pd.Version,\n\t\tLocations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, indexLocation, pd.License...)...),\n\t\tPURL:      packageURLFromPear(pd.Name, pd.Channel, pd.Version),\n\t\tLanguage:  pkg.PHP,\n\t\tType:      pkg.PhpPeclPkg,\n\t\tMetadata:  pd.ToPecl(),\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc packageURLFromComposer(name, version string) string {\n\tvar pkgName, vendor string\n\tfields := strings.Split(name, \"/\")\n\tswitch len(fields) {\n\tcase 0:\n\t\treturn \"\"\n\tcase 1:\n\t\tpkgName = name\n\tcase 2:\n\t\tvendor = fields[0]\n\t\tpkgName = fields[1]\n\tdefault:\n\t\tvendor = fields[0]\n\t\tpkgName = strings.Join(fields[1:], \"-\")\n\t}\n\n\tpURL := packageurl.NewPackageURL(\n\t\tpackageurl.TypeComposer,\n\t\tvendor,\n\t\tpkgName,\n\t\tversion,\n\t\tnil,\n\t\t\"\")\n\treturn pURL.ToString()\n}\n\nfunc packageURLFromPear(pkgName, channel, version string) string {\n\tnamespace := channel\n\tif namespace == \"\" {\n\t\tnamespace = \"pecl.php.net\"\n\t}\n\n\tpURL := packageurl.NewPackageURL(\n\t\t\"pear\",\n\t\tnamespace,\n\t\tpkgName,\n\t\tversion,\n\t\tnil,\n\t\t\"\")\n\treturn pURL.ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/package_test.go",
    "content": "package php\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tpackageName    string\n\t\tpackageVersion string\n\t\texpected       string\n\t}{\n\t\t{\n\t\t\tname:           \"with extractable vendor\",\n\t\t\tpackageName:    \"ven/name\",\n\t\t\tpackageVersion: \"1.0.1\",\n\t\t\texpected:       \"pkg:composer/ven/name@1.0.1\",\n\t\t},\n\t\t{\n\t\t\tname:           \"name with slashes (invalid)\",\n\t\t\tpackageName:    \"ven/name/component\",\n\t\t\tpackageVersion: \"1.0.1\",\n\t\t\texpected:       \"pkg:composer/ven/name-component@1.0.1\",\n\t\t},\n\t\t{\n\t\t\tname:           \"unknown vendor\",\n\t\t\tpackageName:    \"name\",\n\t\t\tpackageVersion: \"1.0.1\",\n\t\t\texpected:       \"pkg:composer/name@1.0.1\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURLFromComposer(test.packageName, test.packageVersion)\n\t\t\tif actual != test.expected {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.expected, actual, true)\n\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_packageURLFromPear(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tchannel  string\n\t\tversion  string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"memcached\",\n\t\t\tchannel:  \"pear.php.net\",\n\t\t\tversion:  \"3.2.0\",\n\t\t\texpected: \"pkg:pear/pear.php.net/memcached@3.2.0\",\n\t\t},\n\t\t{\n\t\t\tname:     \"memcached\",\n\t\t\tchannel:  \"\", // important!\n\t\t\tversion:  \"3.2.0\",\n\t\t\texpected: \"pkg:pear/pecl.php.net/memcached@3.2.0\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURLFromPear(test.name, test.channel, test.version)\n\t\t\tif actual != test.expected {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.expected, actual, true)\n\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_composer_lock.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseComposerLock\n\ntype parsedLockData struct {\n\tLicense []string `json:\"license\"`\n\tpkg.PhpComposerLockEntry\n}\n\ntype composerLock struct {\n\tPackages   []parsedLockData `json:\"packages\"`\n\tPackageDev []parsedLockData `json:\"packages-dev\"` // TODO: these are not currently included as packages in the SBOM... should they be?\n}\n\n// parseComposerLock is a parser function for Composer.lock contents, returning \"Default\" php packages discovered.\nfunc parseComposerLock(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpkgs := make([]pkg.Package, 0)\n\tdec := json.NewDecoder(reader)\n\n\tfor {\n\t\tvar lock composerLock\n\t\tif err := dec.Decode(&lock); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse composer.lock file: %w\", err)\n\t\t}\n\t\tfor _, pd := range lock.Packages {\n\t\t\tpkgs = append(\n\t\t\t\tpkgs,\n\t\t\t\tnewComposerLockPackage(\n\t\t\t\t\tctx,\n\t\t\t\t\tpd,\n\t\t\t\t\treader.Location,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_composer_lock_test.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseComposerFileLock(t *testing.T) {\n\tctx := context.Background()\n\tvar expectedRelationships []artifact.Relationship\n\tfixture := \"testdata/composer.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"adoy/fastcgi-client\",\n\t\t\tVersion:   \"1.0.2\",\n\t\t\tPURL:      \"pkg:composer/adoy/fastcgi-client@1.0.2\",\n\t\t\tLocations: locations,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tLanguage: pkg.PHP,\n\t\t\tType:     pkg.PhpComposerPkg,\n\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\tName:    \"adoy/fastcgi-client\",\n\t\t\t\tVersion: \"1.0.2\",\n\t\t\t\tSource: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"git\",\n\t\t\t\t\tURL:       \"https://github.com/adoy/PHP-FastCGI-Client.git\",\n\t\t\t\t\tReference: \"6d9a552f0206a1db7feb442824540aa6c55e5b27\",\n\t\t\t\t},\n\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"zip\",\n\t\t\t\t\tURL:       \"https://api.github.com/repos/adoy/PHP-FastCGI-Client/zipball/6d9a552f0206a1db7feb442824540aa6c55e5b27\",\n\t\t\t\t\tReference: \"6d9a552f0206a1db7feb442824540aa6c55e5b27\",\n\t\t\t\t},\n\t\t\t\tType:            \"library\",\n\t\t\t\tNotificationURL: \"https://packagist.org/downloads/\",\n\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"Pierrick Charron\",\n\t\t\t\t\t\tEmail: \"pierrick@adoy.net\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: \"Lightweight, single file FastCGI client for PHP.\",\n\t\t\t\tKeywords: []string{\n\t\t\t\t\t\"fastcgi\",\n\t\t\t\t\t\"fcgi\",\n\t\t\t\t},\n\t\t\t\tTime: \"2019-12-11T13:49:21+00:00\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"alcaeus/mongo-php-adapter\",\n\t\t\tVersion:   \"1.1.11\",\n\t\t\tLocations: locations,\n\t\t\tPURL:      \"pkg:composer/alcaeus/mongo-php-adapter@1.1.11\",\n\t\t\tLanguage:  pkg.PHP,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t\t),\n\t\t\tType: pkg.PhpComposerPkg,\n\t\t\tMetadata: pkg.PhpComposerLockEntry{\n\t\t\t\tName:    \"alcaeus/mongo-php-adapter\",\n\t\t\t\tVersion: \"1.1.11\",\n\t\t\t\tSource: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"git\",\n\t\t\t\t\tURL:       \"https://github.com/alcaeus/mongo-php-adapter.git\",\n\t\t\t\t\tReference: \"43b6add94c8b4cb9890d662cba4c0defde733dcf\",\n\t\t\t\t},\n\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"zip\",\n\t\t\t\t\tURL:       \"https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/43b6add94c8b4cb9890d662cba4c0defde733dcf\",\n\t\t\t\t\tReference: \"43b6add94c8b4cb9890d662cba4c0defde733dcf\",\n\t\t\t\t},\n\t\t\t\tRequire: map[string]string{\n\t\t\t\t\t\"ext-ctype\":       \"*\",\n\t\t\t\t\t\"ext-hash\":        \"*\",\n\t\t\t\t\t\"ext-mongodb\":     \"^1.2.0\",\n\t\t\t\t\t\"mongodb/mongodb\": \"^1.0.1\",\n\t\t\t\t\t\"php\":             \"^5.6 || ^7.0\",\n\t\t\t\t},\n\t\t\t\tProvide: map[string]string{\n\t\t\t\t\t\"ext-mongo\": \"1.6.14\",\n\t\t\t\t},\n\t\t\t\tRequireDev: map[string]string{\n\t\t\t\t\t\"phpunit/phpunit\":           \"^5.7.27 || ^6.0 || ^7.0\",\n\t\t\t\t\t\"squizlabs/php_codesniffer\": \"^3.2\",\n\t\t\t\t},\n\t\t\t\tType:            \"library\",\n\t\t\t\tNotificationURL: \"https://packagist.org/downloads/\",\n\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"alcaeus\",\n\t\t\t\t\t\tEmail: \"alcaeus@alcaeus.org\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"Olivier Lechevalier\",\n\t\t\t\t\t\tEmail: \"olivier.lechevalier@gmail.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: \"Adapter to provide ext-mongo interface on top of mongo-php-libary\",\n\t\t\t\tKeywords: []string{\n\t\t\t\t\t\"database\",\n\t\t\t\t\t\"mongodb\",\n\t\t\t\t},\n\t\t\t\tTime: \"2019-11-11T20:47:32+00:00\",\n\t\t\t},\n\t\t},\n\t}\n\tpkgtest.TestFileParser(t, fixture, parseComposerLock, expectedPkgs, expectedRelationships)\n}\n\nfunc Test_corruptComposerLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/composer.lock\").\n\t\tWithError().\n\t\tTestParser(t, parseComposerLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_installed_json.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseComposerLock\n\n// Note: composer version 2 introduced a new structure for the installed.json file, so we support both\ntype installedJSONComposerV2 struct {\n\tPackages []parsedInstalledData `json:\"packages\"`\n}\n\ntype parsedInstalledData struct {\n\tLicense []string `json:\"license\"`\n\tpkg.PhpComposerInstalledEntry\n}\n\nfunc (w *installedJSONComposerV2) UnmarshalJSON(data []byte) error {\n\ttype compv2 struct {\n\t\tPackages []parsedInstalledData `json:\"packages\"`\n\t}\n\tcompv2er := new(compv2)\n\terr := json.Unmarshal(data, &compv2er)\n\tif err != nil {\n\t\t// If we had an err\tor, we may be dealing with a composer v.1 installed.json\n\t\t// which should be all arrays\n\t\tvar packages []parsedInstalledData\n\t\terr := json.Unmarshal(data, &packages)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tw.Packages = packages\n\t\treturn nil\n\t}\n\tw.Packages = compv2er.Packages\n\treturn nil\n}\n\n// parseInstalledJSON is a parser function for Composer.lock contents, returning \"Default\" php packages discovered.\nfunc parseInstalledJSON(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tdec := json.NewDecoder(reader)\n\n\tfor {\n\t\tvar lock installedJSONComposerV2\n\t\tif err := dec.Decode(&lock); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse installed.json file: %w\", err)\n\t\t}\n\t\tfor _, pd := range lock.Packages {\n\t\t\tpkgs = append(\n\t\t\t\tpkgs,\n\t\t\t\tnewComposerInstalledPackage(\n\t\t\t\t\tctx,\n\t\t\t\t\tpd,\n\t\t\t\t\treader.Location,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_installed_json_test.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseInstalledJsonComposerV1(t *testing.T) {\n\tctx := context.TODO()\n\tfixtures := []string{\n\t\t\"testdata/vendor/composer_1/installed.json\",\n\t\t\"testdata/vendor/composer_2/installed.json\",\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\tvar expectedPkgs = []pkg.Package{\n\t\t{\n\t\t\tName:     \"asm89/stack-cors\",\n\t\t\tVersion:  \"1.3.0\",\n\t\t\tPURL:     \"pkg:composer/asm89/stack-cors@1.3.0\",\n\t\t\tLanguage: pkg.PHP,\n\t\t\tType:     pkg.PhpComposerPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t),\n\t\t\tMetadata: pkg.PhpComposerInstalledEntry{\n\t\t\t\tName:    \"asm89/stack-cors\",\n\t\t\t\tVersion: \"1.3.0\",\n\t\t\t\tSource: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"git\",\n\t\t\t\t\tURL:       \"https://github.com/asm89/stack-cors.git\",\n\t\t\t\t\tReference: \"b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n\t\t\t\t},\n\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"zip\",\n\t\t\t\t\tURL:       \"https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n\t\t\t\t\tReference: \"b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n\t\t\t\t},\n\t\t\t\tRequire: map[string]string{\n\t\t\t\t\t\"php\":                     \">=5.5.9\",\n\t\t\t\t\t\"symfony/http-foundation\": \"~2.7|~3.0|~4.0|~5.0\",\n\t\t\t\t\t\"symfony/http-kernel\":     \"~2.7|~3.0|~4.0|~5.0\",\n\t\t\t\t},\n\t\t\t\tRequireDev: map[string]string{\n\t\t\t\t\t\"phpunit/phpunit\":           \"^5.0 || ^4.8.10\",\n\t\t\t\t\t\"squizlabs/php_codesniffer\": \"^2.3\",\n\t\t\t\t},\n\t\t\t\tTime:            \"2019-12-24T22:41:47+00:00\",\n\t\t\t\tType:            \"library\",\n\t\t\t\tNotificationURL: \"https://packagist.org/downloads/\",\n\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:  \"Alexander\",\n\t\t\t\t\t\tEmail: \"iam.asm89@gmail.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tDescription: \"Cross-origin resource sharing library and stack middleware\",\n\t\t\t\tHomepage:    \"https://github.com/asm89/stack-cors\",\n\t\t\t\tKeywords: []string{\n\t\t\t\t\t\"cors\",\n\t\t\t\t\t\"stack\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:     \"behat/mink\",\n\t\t\tVersion:  \"v1.8.1\",\n\t\t\tPURL:     \"pkg:composer/behat/mink@v1.8.1\",\n\t\t\tLanguage: pkg.PHP,\n\t\t\tType:     pkg.PhpComposerPkg,\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t),\n\t\t\tMetadata: pkg.PhpComposerInstalledEntry{\n\t\t\t\tName:    \"behat/mink\",\n\t\t\t\tVersion: \"v1.8.1\",\n\t\t\t\tSource: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"git\",\n\t\t\t\t\tURL:       \"https://github.com/minkphp/Mink.git\",\n\t\t\t\t\tReference: \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n\t\t\t\t},\n\t\t\t\tDist: pkg.PhpComposerExternalReference{\n\t\t\t\t\tType:      \"zip\",\n\t\t\t\t\tURL:       \"https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n\t\t\t\t\tReference: \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n\t\t\t\t},\n\t\t\t\tRequire: map[string]string{\n\t\t\t\t\t\"php\":                  \">=5.3.1\",\n\t\t\t\t\t\"symfony/css-selector\": \"^2.7|^3.0|^4.0|^5.0\",\n\t\t\t\t},\n\t\t\t\tRequireDev: map[string]string{\n\t\t\t\t\t\"phpunit/phpunit\":        \"^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20\",\n\t\t\t\t\t\"symfony/debug\":          \"^2.7|^3.0|^4.0\",\n\t\t\t\t\t\"symfony/phpunit-bridge\": \"^3.4.38 || ^5.0.5\",\n\t\t\t\t},\n\t\t\t\tSuggest: map[string]string{\n\t\t\t\t\t\"behat/mink-browserkit-driver\": \"extremely fast headless driver for Symfony\\\\Kernel-based apps (Sf2, Silex)\",\n\t\t\t\t\t\"behat/mink-goutte-driver\":     \"fast headless driver for any app without JS emulation\",\n\t\t\t\t\t\"behat/mink-selenium2-driver\":  \"slow, but JS-enabled driver for any app (requires Selenium2)\",\n\t\t\t\t\t\"behat/mink-zombie-driver\":     \"fast and JS-enabled headless driver for any app (requires node.js)\",\n\t\t\t\t\t\"dmore/chrome-mink-driver\":     \"fast and JS-enabled driver for any app (requires chromium or google chrome)\",\n\t\t\t\t},\n\t\t\t\tTime:            \"2020-03-11T15:45:53+00:00\",\n\t\t\t\tType:            \"library\",\n\t\t\t\tNotificationURL: \"https://packagist.org/downloads/\",\n\t\t\t\tAuthors: []pkg.PhpComposerAuthors{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:     \"Konstantin Kudryashov\",\n\t\t\t\t\t\tEmail:    \"ever.zet@gmail.com\",\n\t\t\t\t\t\tHomepage: \"http://everzet.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tDescription: \"Browser controller/emulator abstraction for PHP\",\n\t\t\t\tHomepage:    \"http://mink.behat.org/\",\n\t\t\t\tKeywords: []string{\n\t\t\t\t\t\"browser\",\n\t\t\t\t\t\"testing\",\n\t\t\t\t\t\"web\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, fixture := range fixtures {\n\t\tt.Run(fixture, func(t *testing.T) {\n\t\t\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\t\t\tfor i := range expectedPkgs {\n\t\t\t\texpectedPkgs[i].Locations = locations\n\t\t\t\tlocationLicenses := pkg.NewLicenseSet()\n\t\t\t\tfor _, license := range expectedPkgs[i].Licenses.ToSlice() {\n\t\t\t\t\tlicense.Locations = locations\n\t\t\t\t\tlocationLicenses.Add(license)\n\t\t\t\t}\n\t\t\t\texpectedPkgs[i].Licenses = locationLicenses\n\t\t\t}\n\t\t\tpkgtest.TestFileParser(t, fixture, parseInstalledJSON, expectedPkgs, expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_corruptInstalledJSON(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/installed.json\").\n\t\tWithError().\n\t\tTestParser(t, parseInstalledJSON)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_pecl_pear.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/elliotchance/phpserialize\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype peclPearData struct {\n\tName    string\n\tChannel string\n\tVersion string\n\tLicense []string\n}\n\nfunc (p *peclPearData) ToPear() pkg.PhpPearEntry {\n\treturn pkg.PhpPearEntry{\n\t\tName:    p.Name,\n\t\tChannel: p.Channel,\n\t\tVersion: p.Version,\n\t\tLicense: p.License,\n\t}\n}\n\nfunc (p *peclPearData) ToPecl() pkg.PhpPeclEntry { //nolint:staticcheck\n\treturn pkg.PhpPeclEntry(p.ToPear()) //nolint:staticcheck\n}\n\nfunc parsePecl(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tm, err := parsePeclPearSerialized(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif m == nil {\n\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"no pecl package found\"))\n\t}\n\treturn []pkg.Package{newPeclPackage(ctx, *m, reader.Location)}, nil, nil\n}\n\nfunc parsePear(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tm, err := parsePeclPearSerialized(reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif m == nil {\n\t\treturn nil, nil, unknown.New(reader.Location, fmt.Errorf(\"no pear package found\"))\n\t}\n\treturn []pkg.Package{newPearPackage(ctx, *m, reader.Location)}, nil, nil\n}\n\n// parsePeclPearSerialized is a parser function for Pear metadata contents, returning \"Default\" php packages discovered.\nfunc parsePeclPearSerialized(reader file.LocationReadCloser) (*peclPearData, error) {\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // phpserialize requires []byte\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read file: %w\", err)\n\t}\n\n\tmetadata, err := phpserialize.UnmarshalAssociativeArray(\n\t\tdata,\n\t)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse pear metadata file: %w\", err)\n\t}\n\n\tname, ok := metadata[\"name\"].(string)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"failed to parse pear package name: %w\", err)\n\t}\n\n\tchannel, ok := metadata[\"channel\"].(string)\n\tif !ok {\n\t\t// this could be the v5 format\n\t\tchannel = \"\"\n\t}\n\n\tversion := readStruct(metadata, \"version\", \"release\")\n\tlicense := readStruct(metadata, \"license\", \"_content\")\n\n\treturn &peclPearData{\n\t\tName:    name,\n\t\tChannel: channel,\n\t\tVersion: version,\n\t\tLicense: []string{\n\t\t\tlicense,\n\t\t},\n\t}, nil\n}\n\nfunc readStruct(metadata any, fields ...string) string {\n\tif len(fields) > 0 {\n\t\tvalue, ok := metadata.(map[any]any)\n\t\tif !ok {\n\t\t\treturn \"\"\n\t\t}\n\t\treturn readStruct(value[fields[0]], fields[1:]...)\n\t}\n\tvalue, ok := metadata.(string)\n\tif !ok {\n\t\treturn \"\"\n\t}\n\treturn value\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/parse_pecl_pear_test.go",
    "content": "package php\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePear(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPkgs          []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"v6 format\",\n\t\t\tfixture: \"testdata/memcached-v6-format.reg\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"memcached\",\n\t\t\t\t\tVersion:   \"3.2.0\",\n\t\t\t\t\tPURL:      \"pkg:pear/pecl.php.net/memcached@3.2.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/memcached-v6-format.reg\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"PHP License\", file.NewLocation(\"testdata/memcached-v6-format.reg\")),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.PHP,\n\t\t\t\t\tType:     pkg.PhpPearPkg,\n\t\t\t\t\tMetadata: pkg.PhpPearEntry{\n\t\t\t\t\t\tName:    \"memcached\",\n\t\t\t\t\t\tChannel: \"pecl.php.net\",\n\t\t\t\t\t\tVersion: \"3.2.0\",\n\t\t\t\t\t\tLicense: []string{\"PHP License\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"v5 format\",\n\t\t\tfixture: \"testdata/memcached-v5-format.reg\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"memcached\",\n\t\t\t\t\tVersion:   \"3.2.0\",\n\t\t\t\t\tPURL:      \"pkg:pear/pecl.php.net/memcached@3.2.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/memcached-v5-format.reg\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"PHP License\", file.NewLocation(\"testdata/memcached-v5-format.reg\")),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.PHP,\n\t\t\t\t\tType:     pkg.PhpPearPkg,\n\t\t\t\t\tMetadata: pkg.PhpPearEntry{ // important: missing channel\n\t\t\t\t\t\tName:    \"memcached\",\n\t\t\t\t\t\tVersion: \"3.2.0\",\n\t\t\t\t\t\tLicense: []string{\"PHP License\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.TestFileParser(t, tt.fixture, parsePear, tt.expectedPkgs, tt.expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc TestParsePecl(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPkgs          []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"v6 format\",\n\t\t\tfixture: \"testdata/memcached-v6-format.reg\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"memcached\",\n\t\t\t\t\tVersion:   \"3.2.0\",\n\t\t\t\t\tPURL:      \"pkg:pear/pecl.php.net/memcached@3.2.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/memcached-v6-format.reg\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"PHP License\", file.NewLocation(\"testdata/memcached-v6-format.reg\")),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.PHP,\n\t\t\t\t\tType:     pkg.PhpPeclPkg, // important!\n\t\t\t\t\tMetadata: pkg.PhpPeclEntry{ // important!\n\t\t\t\t\t\tName:    \"memcached\",\n\t\t\t\t\t\tChannel: \"pecl.php.net\",\n\t\t\t\t\t\tVersion: \"3.2.0\",\n\t\t\t\t\t\tLicense: []string{\"PHP License\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"v5 format\",\n\t\t\tfixture: \"testdata/memcached-v5-format.reg\",\n\t\t\texpectedPkgs: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"memcached\",\n\t\t\t\t\tVersion:   \"3.2.0\",\n\t\t\t\t\tPURL:      \"pkg:pear/pecl.php.net/memcached@3.2.0\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/memcached-v5-format.reg\")),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"PHP License\", file.NewLocation(\"testdata/memcached-v5-format.reg\")),\n\t\t\t\t\t),\n\t\t\t\t\tLanguage: pkg.PHP,\n\t\t\t\t\tType:     pkg.PhpPeclPkg, // important!\n\t\t\t\t\tMetadata: pkg.PhpPeclEntry{ // important!\n\t\t\t\t\t\tName:    \"memcached\",\n\t\t\t\t\t\tVersion: \"3.2.0\",\n\t\t\t\t\t\tLicense: []string{\"PHP License\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.TestFileParser(t, tt.fixture, parsePecl, tt.expectedPkgs, tt.expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc Test_corruptPecl(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/php/.registry/.channel.pecl.php.net/memcached.reg\").\n\t\tWithError().\n\t\tTestParser(t, parseComposerLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/glob-paths/php/.registry/.channel.pecl.php.net/memcached.reg",
    "content": "a:1{}"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/glob-paths/src/installed.json",
    "content": "bogus installed.json"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/image-apache/Dockerfile",
    "content": "FROM --platform=linux/amd64 httpd:2.4.63-bookworm AS builder\n\nRUN apt update -y && apt install -y libapache2-mod-php php8.2-memcache php8.2-memcache php8.2-xml php8.2-mysqli php8.2-opcache\n\nFROM busybox:latest\n\n# phplib.so\nCOPY --from=builder /usr/lib/apache2/ /usr/lib/apache2/\n\n# php extensions\nCOPY --from=builder /usr/lib/php/ /usr/lib/php/\n"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/image-extensions/Dockerfile",
    "content": "# source https://github.com/nextcloud/docker/blob/master/30/fpm-alpine/Dockerfile#L1\nFROM --platform=linux/amd64 php:8.3.27-fpm-alpine3.21 AS builder\n\n# entrypoint.sh and cron.sh dependencies\nRUN set -ex; \\\n    \\\n    apk add --no-cache \\\n    imagemagick \\\n    imagemagick-pdf \\\n    imagemagick-jpeg \\\n    imagemagick-raw \\\n    imagemagick-tiff \\\n    imagemagick-heic \\\n    imagemagick-webp \\\n    imagemagick-svg \\\n    rsync \\\n    ; \\\n    \\\n    rm /var/spool/cron/crontabs/root; \\\n    echo '*/5 * * * * php -f /var/www/html/cron.php' > /var/spool/cron/crontabs/www-data\n\n# install the PHP extensions we need\n# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html\nRUN set -ex; \\\n    \\\n    apk add --no-cache --virtual .build-deps \\\n    $PHPIZE_DEPS \\\n    autoconf \\\n    freetype-dev \\\n    gmp-dev \\\n    icu-dev \\\n    imagemagick-dev \\\n    libevent-dev \\\n    libjpeg-turbo-dev \\\n    libmcrypt-dev \\\n    libmemcached-dev \\\n    libpng-dev \\\n    libwebp-dev \\\n    libxml2-dev \\\n    libzip-dev \\\n    openldap-dev \\\n    pcre-dev \\\n    postgresql-dev \\\n    ; \\\n    \\\n    docker-php-ext-configure ftp --with-openssl-dir=/usr; \\\n    docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \\\n    docker-php-ext-configure ldap; \\\n    docker-php-ext-install -j \"$(nproc)\" \\\n    bcmath \\\n    exif \\\n    ftp \\\n    gd \\\n    gmp \\\n    intl \\\n    ldap \\\n    opcache \\\n    pcntl \\\n    pdo_mysql \\\n    pdo_pgsql \\\n    sysvsem \\\n    zip \\\n    ; \\\n    \\\n    # pecl will claim success even if one install fails, so we need to perform each install separately\n    pecl install APCu-5.1.24; \\\n    pecl install igbinary-3.2.16; \\\n    pecl install imagick-3.8.0; \\\n    pecl install memcached-3.3.0 \\\n    --configureoptions 'enable-memcached-igbinary=\"yes\"'; \\\n    pecl install redis-6.2.0 \\\n    --configureoptions 'enable-redis-igbinary=\"yes\" enable-redis-zstd=\"yes\" enable-redis-lz4=\"yes\"'; \\\n    \\\n    docker-php-ext-enable \\\n    apcu \\\n    igbinary \\\n    imagick \\\n    memcached \\\n    redis \\\n    ; \\\n    rm -r /tmp/pear; \\\n    \\\n    runDeps=\"$( \\\n    scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \\\n    | tr ',' '\\n' \\\n    | sort -u \\\n    | awk 'system(\"[ -e /usr/local/lib/\" $1 \" ]\") == 0 { next } { print \"so:\" $1 }' \\\n    )\"; \\\n    apk add --no-network --virtual .nextcloud-phpext-rundeps $runDeps; \\\n    apk del --no-network .build-deps\n\nFROM busybox:latest\n\n# interpreters + process manager\nCOPY --from=builder  /usr/local/sbin/php-fpm       /usr/local/sbin/php-fpm\nCOPY --from=builder  /usr/local/bin/php            /usr/local/bin/php\n\n# extensions\nCOPY --from=builder  /usr/local/lib/php/extensions /usr/local/lib/php/extensions\n\n# configs\nCOPY --from=builder  /usr/local/etc/php-fpm.conf   /usr/local/etc/php-fpm.conf\nCOPY --from=builder  /usr/local/etc/php/conf.d     /usr/local/etc/php/conf.d\nCOPY --from=builder  /usr/local/etc/php-fpm.d      /usr/local/etc/php-fpm.d\nCOPY --from=builder  /usr/local/etc/php-fpm.conf   /usr/local/etc/php-fpm.conf\n"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/memcached-v5-format.reg",
    "content": "a:5:{s:4:\"name\";s:9:\"memcached\";s:4:\"date\";s:10:\"2022-01-11\";s:4:\"time\";s:8:\"15:23:47\";s:7:\"version\";a:2:{s:7:\"release\";s:5:\"3.2.0\";s:3:\"api\";s:5:\"3.2.0\";}s:7:\"license\";a:2:{s:7:\"attribs\";a:1:{s:3:\"uri\";s:26:\"http://www.php.net/license\";}s:8:\"_content\";s:11:\"PHP License\";}}"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/memcached-v6-format.reg",
    "content": "a:6:{s:4:\"name\";s:9:\"memcached\";s:7:\"channel\";s:12:\"pecl.php.net\";s:4:\"date\";s:10:\"2022-01-11\";s:4:\"time\";s:8:\"15:23:47\";s:7:\"version\";a:2:{s:7:\"release\";s:5:\"3.2.0\";s:3:\"api\";s:5:\"3.2.0\";}s:7:\"license\";a:2:{s:7:\"attribs\";a:1:{s:3:\"uri\";s:26:\"http://www.php.net/license\";}s:8:\"_content\";s:11:\"PHP License\";}}"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/vendor/composer_1/installed.json",
    "content": "[\n    {\n        \"name\": \"asm89/stack-cors\",\n        \"version\": \"1.3.0\",\n        \"version_normalized\": \"1.3.0.0\",\n        \"source\": {\n            \"type\": \"git\",\n            \"url\": \"https://github.com/asm89/stack-cors.git\",\n            \"reference\": \"b9c31def6a83f84b4d4a40d35996d375755f0e08\"\n        },\n        \"dist\": {\n            \"type\": \"zip\",\n            \"url\": \"https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n            \"reference\": \"b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n            \"shasum\": \"\"\n        },\n        \"require\": {\n            \"php\": \">=5.5.9\",\n            \"symfony/http-foundation\": \"~2.7|~3.0|~4.0|~5.0\",\n            \"symfony/http-kernel\": \"~2.7|~3.0|~4.0|~5.0\"\n        },\n        \"require-dev\": {\n            \"phpunit/phpunit\": \"^5.0 || ^4.8.10\",\n            \"squizlabs/php_codesniffer\": \"^2.3\"\n        },\n        \"time\": \"2019-12-24T22:41:47+00:00\",\n        \"type\": \"library\",\n        \"extra\": {\n            \"branch-alias\": {\n                \"dev-master\": \"1.2-dev\"\n            }\n        },\n        \"installation-source\": \"dist\",\n        \"autoload\": {\n            \"psr-4\": {\n                \"Asm89\\\\Stack\\\\\": \"src/Asm89/Stack/\"\n            }\n        },\n        \"notification-url\": \"https://packagist.org/downloads/\",\n        \"license\": [\n            \"MIT\"\n        ],\n        \"authors\": [\n            {\n                \"name\": \"Alexander\",\n                \"email\": \"iam.asm89@gmail.com\"\n            }\n        ],\n        \"description\": \"Cross-origin resource sharing library and stack middleware\",\n        \"homepage\": \"https://github.com/asm89/stack-cors\",\n        \"keywords\": [\n            \"cors\",\n            \"stack\"\n        ],\n        \"support\": {\n            \"issues\": \"https://github.com/asm89/stack-cors/issues\",\n            \"source\": \"https://github.com/asm89/stack-cors/tree/1.3.0\"\n        }\n    },\n    {\n        \"name\": \"behat/mink\",\n        \"version\": \"v1.8.1\",\n        \"version_normalized\": \"1.8.1.0\",\n        \"source\": {\n            \"type\": \"git\",\n            \"url\": \"https://github.com/minkphp/Mink.git\",\n            \"reference\": \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\"\n        },\n        \"dist\": {\n            \"type\": \"zip\",\n            \"url\": \"https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n            \"reference\": \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n            \"shasum\": \"\"\n        },\n        \"require\": {\n            \"php\": \">=5.3.1\",\n            \"symfony/css-selector\": \"^2.7|^3.0|^4.0|^5.0\"\n        },\n        \"require-dev\": {\n            \"phpunit/phpunit\": \"^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20\",\n            \"symfony/debug\": \"^2.7|^3.0|^4.0\",\n            \"symfony/phpunit-bridge\": \"^3.4.38 || ^5.0.5\"\n        },\n        \"suggest\": {\n            \"behat/mink-browserkit-driver\": \"extremely fast headless driver for Symfony\\\\Kernel-based apps (Sf2, Silex)\",\n            \"behat/mink-goutte-driver\": \"fast headless driver for any app without JS emulation\",\n            \"behat/mink-selenium2-driver\": \"slow, but JS-enabled driver for any app (requires Selenium2)\",\n            \"behat/mink-zombie-driver\": \"fast and JS-enabled headless driver for any app (requires node.js)\",\n            \"dmore/chrome-mink-driver\": \"fast and JS-enabled driver for any app (requires chromium or google chrome)\"\n        },\n        \"time\": \"2020-03-11T15:45:53+00:00\",\n        \"type\": \"library\",\n        \"extra\": {\n            \"branch-alias\": {\n                \"dev-master\": \"1.8.x-dev\"\n            }\n        },\n        \"installation-source\": \"dist\",\n        \"autoload\": {\n            \"psr-4\": {\n                \"Behat\\\\Mink\\\\\": \"src/\"\n            }\n        },\n        \"notification-url\": \"https://packagist.org/downloads/\",\n        \"license\": [\n            \"MIT\"\n        ],\n        \"authors\": [\n            {\n                \"name\": \"Konstantin Kudryashov\",\n                \"email\": \"ever.zet@gmail.com\",\n                \"homepage\": \"http://everzet.com\"\n            }\n        ],\n        \"description\": \"Browser controller/emulator abstraction for PHP\",\n        \"homepage\": \"http://mink.behat.org/\",\n        \"keywords\": [\n            \"browser\",\n            \"testing\",\n            \"web\"\n        ],\n        \"support\": {\n            \"issues\": \"https://github.com/minkphp/Mink/issues\",\n            \"source\": \"https://github.com/minkphp/Mink/tree/v1.8.1\"\n        }\n    }\n]\n"
  },
  {
    "path": "syft/pkg/cataloger/php/testdata/vendor/composer_2/installed.json",
    "content": "{\n    \"packages\": [\n        {\n            \"name\": \"asm89/stack-cors\",\n            \"version\": \"1.3.0\",\n            \"version_normalized\": \"1.3.0.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/asm89/stack-cors.git\",\n                \"reference\": \"b9c31def6a83f84b4d4a40d35996d375755f0e08\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n                \"reference\": \"b9c31def6a83f84b4d4a40d35996d375755f0e08\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"php\": \">=5.5.9\",\n                \"symfony/http-foundation\": \"~2.7|~3.0|~4.0|~5.0\",\n                \"symfony/http-kernel\": \"~2.7|~3.0|~4.0|~5.0\"\n            },\n            \"require-dev\": {\n                \"phpunit/phpunit\": \"^5.0 || ^4.8.10\",\n                \"squizlabs/php_codesniffer\": \"^2.3\"\n            },\n            \"time\": \"2019-12-24T22:41:47+00:00\",\n            \"type\": \"library\",\n            \"extra\": {\n                \"branch-alias\": {\n                    \"dev-master\": \"1.2-dev\"\n                }\n            },\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Asm89\\\\Stack\\\\\": \"src/Asm89/Stack/\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Alexander\",\n                    \"email\": \"iam.asm89@gmail.com\"\n                }\n            ],\n            \"description\": \"Cross-origin resource sharing library and stack middleware\",\n            \"homepage\": \"https://github.com/asm89/stack-cors\",\n            \"keywords\": [\n                \"cors\",\n                \"stack\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/asm89/stack-cors/issues\",\n                \"source\": \"https://github.com/asm89/stack-cors/tree/1.3.0\"\n            },\n            \"install-path\": \"../asm89/stack-cors\"\n        },\n        {\n            \"name\": \"behat/mink\",\n            \"version\": \"v1.8.1\",\n            \"version_normalized\": \"1.8.1.0\",\n            \"source\": {\n                \"type\": \"git\",\n                \"url\": \"https://github.com/minkphp/Mink.git\",\n                \"reference\": \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\"\n            },\n            \"dist\": {\n                \"type\": \"zip\",\n                \"url\": \"https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n                \"reference\": \"07c6a9fe3fa98c2de074b25d9ed26c22904e3887\",\n                \"shasum\": \"\"\n            },\n            \"require\": {\n                \"php\": \">=5.3.1\",\n                \"symfony/css-selector\": \"^2.7|^3.0|^4.0|^5.0\"\n            },\n            \"require-dev\": {\n                \"phpunit/phpunit\": \"^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20\",\n                \"symfony/debug\": \"^2.7|^3.0|^4.0\",\n                \"symfony/phpunit-bridge\": \"^3.4.38 || ^5.0.5\"\n            },\n            \"suggest\": {\n                \"behat/mink-browserkit-driver\": \"extremely fast headless driver for Symfony\\\\Kernel-based apps (Sf2, Silex)\",\n                \"behat/mink-goutte-driver\": \"fast headless driver for any app without JS emulation\",\n                \"behat/mink-selenium2-driver\": \"slow, but JS-enabled driver for any app (requires Selenium2)\",\n                \"behat/mink-zombie-driver\": \"fast and JS-enabled headless driver for any app (requires node.js)\",\n                \"dmore/chrome-mink-driver\": \"fast and JS-enabled driver for any app (requires chromium or google chrome)\"\n            },\n            \"time\": \"2020-03-11T15:45:53+00:00\",\n            \"type\": \"library\",\n            \"extra\": {\n                \"branch-alias\": {\n                    \"dev-master\": \"1.8.x-dev\"\n                }\n            },\n            \"installation-source\": \"dist\",\n            \"autoload\": {\n                \"psr-4\": {\n                    \"Behat\\\\Mink\\\\\": \"src/\"\n                }\n            },\n            \"notification-url\": \"https://packagist.org/downloads/\",\n            \"license\": [\n                \"MIT\"\n            ],\n            \"authors\": [\n                {\n                    \"name\": \"Konstantin Kudryashov\",\n                    \"email\": \"ever.zet@gmail.com\",\n                    \"homepage\": \"http://everzet.com\"\n                }\n            ],\n            \"description\": \"Browser controller/emulator abstraction for PHP\",\n            \"homepage\": \"http://mink.behat.org/\",\n            \"keywords\": [\n                \"browser\",\n                \"testing\",\n                \"web\"\n            ],\n            \"support\": {\n                \"issues\": \"https://github.com/minkphp/Mink/issues\",\n                \"source\": \"https://github.com/minkphp/Mink/tree/v1.8.1\"\n            },\n            \"install-path\": \"../behat/mink\"\n        }\n    ],\n    \"dev\": true,\n    \"dev-package-names\": [\n        \"behat/mink\"\n    ]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\nconfigs: # AUTO-GENERATED - config structs and their fields\n  python.CatalogerConfig:\n    fields:\n      - key: GuessUnpinnedRequirements\n        description: GuessUnpinnedRequirements attempts to infer package versions from version constraints when no explicit version is specified in requirements files.\n        app_key: python.guess-unpinned-requirements\n      - key: SearchRemoteLicenses\n        description: SearchRemoteLicenses enables querying the PyPI registry API to retrieve license information for packages that are missing license data in their local metadata.\n        app_key: python.search-remote-licenses\n      - key: PypiBaseURL\n        description: PypiBaseURL specifies the base URL for the Pypi registry API used when searching for remote license information.\n        app_key: python.pypi-base-url\ncatalogers:\n  - ecosystem: python # MANUAL\n    name: python-installed-package-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/python/cataloger.go\n      function: NewInstalledPackageCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - language\n      - package\n      - python\n    parsers: # AUTO-GENERATED structure\n      - function: parseWheelOrEgg\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.egg-info'\n            - '**/*dist-info/METADATA'\n            - '**/*egg-info/PKG-INFO'\n            - '**/*DIST-INFO/METADATA'\n            - '**/*EGG-INFO/PKG-INFO'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonPackage\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonPackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - PythonPackage.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - PythonPackage.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: python # MANUAL\n    name: python-package-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/python/cataloger.go\n      function: NewPackageCataloger\n    config: python.CatalogerConfig # AUTO-GENERATED\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - language\n      - package\n      - python\n    parsers: # AUTO-GENERATED structure\n      - function: parsePdmLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/pdm.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonPdmLockEntry\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonPdmLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n              - optional\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseUvLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/uv.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonUvLockEntry\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonUvLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n              - optional\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseSetupFile\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/setup.py'\n        package_types: # AUTO-GENERATED\n          - python\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - any\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parsePipfileLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Pipfile.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonPipfileLockEntry\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonPipfileLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - PythonPipfileLockEntry.Hashes\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parsePoetryLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/poetry.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonPoetryLockEntry\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonPoetryLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n              - optional\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseRequirementsTxt\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*requirements*.txt'\n        metadata_types: # AUTO-GENERATED\n          - pkg.PythonRequirementsEntry\n        package_types: # AUTO-GENERATED\n          - python\n        json_schema_types: # AUTO-GENERATED\n          - PythonPipRequirementsEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - any\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/python/cataloger.go",
    "content": "/*\nPackage python provides a concrete Cataloger implementation relating to packages within the Python language ecosystem.\n*/\npackage python\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst eggInfoGlob = \"**/*.egg-info\"\n\n// NewPackageCataloger returns a new cataloger for python packages referenced from poetry lock files, requirements.txt files, and setup.py files.\nfunc NewPackageCataloger(cfg CatalogerConfig) pkg.Cataloger {\n\tpoetryLockParser := newPoetryLockParser(cfg)\n\tpipfileLockParser := newPipfileLockParser(cfg)\n\tsetupFileParser := newSetupFileParser(cfg)\n\tuvLockParser := newUvLockParser(cfg)\n\tpdmLockParser := newPdmLockParser(cfg)\n\trequirementsFileParser := newRequirementsParser(cfg)\n\treturn generic.NewCataloger(\"python-package-cataloger\").\n\t\tWithParserByGlobs(requirementsFileParser.parseRequirementsTxt, \"**/*requirements*.txt\").\n\t\tWithParserByGlobs(poetryLockParser.parsePoetryLock, \"**/poetry.lock\").\n\t\tWithParserByGlobs(pipfileLockParser.parsePipfileLock, \"**/Pipfile.lock\").\n\t\tWithParserByGlobs(setupFileParser.parseSetupFile, \"**/setup.py\").\n\t\tWithParserByGlobs(uvLockParser.parseUvLock, \"**/uv.lock\").\n\t\tWithParserByGlobs(pdmLockParser.parsePdmLock, \"**/pdm.lock\")\n}\n\n// NewInstalledPackageCataloger returns a new cataloger for python packages within egg or wheel installation directories.\nfunc NewInstalledPackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"python-installed-package-cataloger\").\n\t\tWithParserByGlobs(\n\t\t\tparseWheelOrEgg,\n\t\t\teggInfoGlob,\n\t\t\t\"**/*dist-info/METADATA\",\n\t\t\t\"**/*egg-info/PKG-INFO\",\n\t\t\t\"**/*DIST-INFO/METADATA\",\n\t\t\t\"**/*EGG-INFO/PKG-INFO\",\n\t\t).WithResolvingProcessors(wheelEggRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/cataloger_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_InstalledPackageCataloger(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:    \"egg-file-no-version\",\n\t\t\tfixture: \"testdata/site-packages/no-version\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"no-version\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"no-version-py3.8.egg-info\")),\n\t\t\t\t\tPURL:      \"pkg:pypi/no-version\",\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tFoundBy:   \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"no-version\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\", // requires scanning the grandparent directory to get a valid path\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"dist-info+egg-info site-packages directory\",\n\t\t\tfixture: \"testdata/site-packages/nested\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Fpython-test%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/dist-info/METADATA\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/dist-info/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/dist-info/direct_url.json\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/dist-info/top_level.txt\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\t// here we only used the license that was declared in the METADATA file, we did not go searching for other licenses\n\t\t\t\t\t\t// this is the better source of truth when there is no explicit LicenseFile given\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"BSD License\", file.NewLocation(\"dist-name/dist-info/METADATA\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \"dist-name\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"../../../bin/pygmentize\", Digest: &pkg.PythonFileDigest{\"sha256\", \"dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8\"}, Size: \"220\"},\n\t\t\t\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/AUTHORS\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/LICENSE.txt\", Digest: &pkg.PythonFileDigest{Algorithm: \"sha256\", Value: \"utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/RECORD\"},\n\t\t\t\t\t\t\t{Path: \"pygments/__pycache__/__init__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"pygments/util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA\"}, Size: \"10778\"},\n\n\t\t\t\t\t\t\t{Path: \"pygments/x_util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=\"}, Size: \"10778\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"pygments\", \"something_else\"},\n\t\t\t\t\t\tDirectURLOrigin:  &pkg.PythonDirectURLOriginInfo{URL: \"https://github.com/python-test/test.git\", VCS: \"git\", CommitID: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\n\t\t\t\t\t\tRequiresPython:   \">=3.5\",\n\t\t\t\t\t\tRequiresDist:     []string{\"soupsieve (>1.2)\", \"html5lib ; extra == 'html5lib'\", \"lxml ; extra == 'lxml'\"},\n\t\t\t\t\t\tProvidesExtra:    []string{\"html5lib\", \"lxml\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"requests\",\n\t\t\t\t\tVersion:  \"2.22.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/requests@2.22.0\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/egg-info/PKG-INFO\"),\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/egg-info/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/egg-info/top_level.txt\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache 2.0\", file.NewLocation(\"egg-name/egg-info/PKG-INFO\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"requests\",\n\t\t\t\t\t\tVersion:              \"2.22.0\",\n\t\t\t\t\t\tPlatform:             \"UNKNOWN\",\n\t\t\t\t\t\tAuthor:               \"Kenneth Reitz\",\n\t\t\t\t\t\tAuthorEmail:          \"me@kennethreitz.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \"egg-name\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"requests-2.22.0.dist-info/INSTALLER\", Digest: &pkg.PythonFileDigest{\"sha256\", \"zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg\"}, Size: \"4\"},\n\t\t\t\t\t\t\t{Path: \"requests/__init__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PnKCgjcTq44LaAMzB-7--B2FdewRrE8F_vjZeaG9NhA\"}, Size: \"3921\"},\n\t\t\t\t\t\t\t{Path: \"requests/__pycache__/__version__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"requests/__pycache__/utils.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"requests/__version__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc\"}, Size: \"436\"},\n\t\t\t\t\t\t\t{Path: \"requests/utils.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A\"}, Size: \"30049\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"requests\"},\n\t\t\t\t\t\tRequiresPython:   \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n\t\t\t\t\t\tProvidesExtra:    []string{\"security\", \"socks\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"DIST-INFO+EGG-INFO site-packages directory (case insensitive)\",\n\t\t\tfixture: \"testdata/site-packages/uppercase\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Fpython-test%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/DIST-INFO/METADATA\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/DIST-INFO/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/DIST-INFO/direct_url.json\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-name/DIST-INFO/top_level.txt\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\t// here we only used the license that was declared in the METADATA file, we did not go searching for other licenses\n\t\t\t\t\t\t// this is the better source of truth when there is no explicit LicenseFile given\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"BSD License\", file.NewLocation(\"dist-name/DIST-INFO/METADATA\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \"dist-name\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"../../../bin/pygmentize\", Digest: &pkg.PythonFileDigest{\"sha256\", \"dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8\"}, Size: \"220\"},\n\t\t\t\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/AUTHORS\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/RECORD\"},\n\t\t\t\t\t\t\t{Path: \"pygments/__pycache__/__init__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"pygments/util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA\"}, Size: \"10778\"},\n\n\t\t\t\t\t\t\t{Path: \"pygments/x_util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=\"}, Size: \"10778\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"pygments\", \"something_else\"},\n\t\t\t\t\t\tDirectURLOrigin:  &pkg.PythonDirectURLOriginInfo{URL: \"https://github.com/python-test/test.git\", VCS: \"git\", CommitID: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\n\t\t\t\t\t\tRequiresPython:   \">=3.5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"requests\",\n\t\t\t\t\tVersion:  \"2.22.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/requests@2.22.0\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/EGG-INFO/PKG-INFO\"),\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/EGG-INFO/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"egg-name/EGG-INFO/top_level.txt\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache 2.0\", file.NewLocation(\"egg-name/EGG-INFO/PKG-INFO\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"requests\",\n\t\t\t\t\t\tVersion:              \"2.22.0\",\n\t\t\t\t\t\tPlatform:             \"UNKNOWN\",\n\t\t\t\t\t\tAuthor:               \"Kenneth Reitz\",\n\t\t\t\t\t\tAuthorEmail:          \"me@kennethreitz.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \"egg-name\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"requests-2.22.0.dist-info/INSTALLER\", Digest: &pkg.PythonFileDigest{\"sha256\", \"zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg\"}, Size: \"4\"},\n\t\t\t\t\t\t\t{Path: \"requests/__init__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PnKCgjcTq44LaAMzB-7--B2FdewRrE8F_vjZeaG9NhA\"}, Size: \"3921\"},\n\t\t\t\t\t\t\t{Path: \"requests/__pycache__/__version__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"requests/__pycache__/utils.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"requests/__version__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc\"}, Size: \"436\"},\n\t\t\t\t\t\t\t{Path: \"requests/utils.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A\"}, Size: \"30049\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"requests\"},\n\t\t\t\t\t\tRequiresPython:   \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n\t\t\t\t\t\tProvidesExtra:    []string{\"security\", \"socks\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"detect licenses\",\n\t\t\tfixture: \"testdata/site-packages/license\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Fpython-test%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"with-license-file-declared.dist-info/METADATA\"), // the LicenseFile is declared in the METADATA file\n\t\t\t\t\t\tfile.NewLocation(\"with-license-file-declared.dist-info/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"with-license-file-declared.dist-info/top_level.txt\"),\n\t\t\t\t\t\tfile.NewLocation(\"with-license-file-declared.dist-info/direct_url.json\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{\n\t\t\t\t\t\t\tValue:          \"BSD-3-Clause\",\n\t\t\t\t\t\t\tSPDXExpression: \"BSD-3-Clause\",\n\t\t\t\t\t\t\tType:           \"concluded\",\n\t\t\t\t\t\t\tContents:       mustContentsFromLocation(t, \"testdata/site-packages/license/with-license-file-declared.dist-info/LICENSE.txt\", 0, 1475),\n\t\t\t\t\t\t\t// we read the path from the LicenseFile field in the METADATA file, then read the license file directly\n\t\t\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"with-license-file-declared.dist-info/LICENSE.txt\")),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"../../../bin/pygmentize\", Digest: &pkg.PythonFileDigest{\"sha256\", \"dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8\"}, Size: \"220\"},\n\t\t\t\t\t\t\t{Path: \"with-license-file-declared.dist-info/AUTHORS\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"with-license-file-declared.dist-info/LICENSE.txt\", Digest: &pkg.PythonFileDigest{Algorithm: \"sha256\", Value: \"utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"with-license-file-declared.dist-info/RECORD\"},\n\t\t\t\t\t\t\t{Path: \"pygments/__pycache__/__init__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"pygments/util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA\"}, Size: \"10778\"},\n\n\t\t\t\t\t\t\t{Path: \"pygments/x_util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=\"}, Size: \"10778\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"pygments\", \"something_else\"},\n\t\t\t\t\t\tDirectURLOrigin:  &pkg.PythonDirectURLOriginInfo{URL: \"https://github.com/python-test/test.git\", VCS: \"git\", CommitID: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\n\t\t\t\t\t\tRequiresPython:   \">=3.5\",\n\t\t\t\t\t\tRequiresDist:     []string{\"soupsieve (>1.2)\", \"html5lib ; extra == 'html5lib'\", \"lxml ; extra == 'lxml'\"},\n\t\t\t\t\t\tProvidesExtra:    []string{\"html5lib\", \"lxml\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Fpython-test%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"without-license-file-declared.dist-info/METADATA\"), // the LicenseFile is declared in the METADATA file\n\t\t\t\t\t\tfile.NewLocation(\"without-license-file-declared.dist-info/RECORD\"),\n\t\t\t\t\t\tfile.NewLocation(\"without-license-file-declared.dist-info/top_level.txt\"),\n\t\t\t\t\t\tfile.NewLocation(\"without-license-file-declared.dist-info/direct_url.json\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.License{\n\t\t\t\t\t\t\tValue:          \"BSD-3-Clause\",\n\t\t\t\t\t\t\tSPDXExpression: \"BSD-3-Clause\",\n\t\t\t\t\t\t\tType:           \"concluded\",\n\t\t\t\t\t\t\tContents:       mustContentsFromLocation(t, \"testdata/site-packages/license/with-license-file-declared.dist-info/LICENSE.txt\", 0, 1475),\n\t\t\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"without-license-file-declared.dist-info/LICENSE.txt\")),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"../../../bin/pygmentize\", Digest: &pkg.PythonFileDigest{\"sha256\", \"dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8\"}, Size: \"220\"},\n\t\t\t\t\t\t\t{Path: \"without-license-file-declared.dist-info/AUTHORS\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"without-license-file-declared.dist-info/LICENSE.txt\", Digest: &pkg.PythonFileDigest{Algorithm: \"sha256\", Value: \"utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t\t\t\t{Path: \"without-license-file-declared.dist-info/RECORD\"},\n\t\t\t\t\t\t\t{Path: \"pygments/__pycache__/__init__.cpython-38.pyc\"},\n\t\t\t\t\t\t\t{Path: \"pygments/util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA\"}, Size: \"10778\"},\n\n\t\t\t\t\t\t\t{Path: \"pygments/x_util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=\"}, Size: \"10778\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTopLevelPackages: []string{\"pygments\", \"something_else\"},\n\t\t\t\t\t\tDirectURLOrigin:  &pkg.PythonDirectURLOriginInfo{URL: \"https://github.com/python-test/test.git\", VCS: \"git\", CommitID: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\n\t\t\t\t\t\tRequiresPython:   \">=3.5\",\n\t\t\t\t\t\tRequiresDist:     []string{\"soupsieve (>1.2)\", \"html5lib ; extra == 'html5lib'\", \"lxml ; extra == 'lxml'\"},\n\t\t\t\t\t\tProvidesExtra:    []string{\"html5lib\", \"lxml\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"malformed-record\",\n\t\t\tfixture: \"testdata/site-packages/malformed-record\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"dist-info/METADATA\"),\n\t\t\t\t\t\tfile.NewLocation(\"dist-info/RECORD\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"BSD License\", file.NewLocation(\"dist-info/METADATA\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\",\n\t\t\t\t\t\tFiles: []pkg.PythonFileRecord{\n\t\t\t\t\t\t\t{Path: \"flask/json/tag.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"9ehzrmt5k7hxf7ZEK0NOs3swvQyU9fWNe-pnYe69N60\"}, Size: \"8223\"},\n\t\t\t\t\t\t\t{Path: \"../../Scripts/flask.exe\", Digest: &pkg.PythonFileDigest{\"sha256\", \"mPrbVeZCDX20himZ_bRai1nCs_tgr7jHIOGZlcgn-T4\"}, Size: \"93063\"},\n\t\t\t\t\t\t\t{Path: \"../../Scripts/flask.exe\", Size: \"89470\", Digest: &pkg.PythonFileDigest{\"sha256\", \"jvqh4N3qOqXLlq40i6ZOLCY9tAOwfwdzIpLDYhRjoqQ\"}},\n\t\t\t\t\t\t\t{Path: \"Flask-1.0.2.dist-info/INSTALLER\", Size: \"4\", Digest: &pkg.PythonFileDigest{\"sha256\", \"zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg\"}},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequiresPython: \">=3.5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// in cases where the metadata file is available and the record is not we should still record there is a package\n\t\t\t// additionally empty top_level.txt files should not result in an error\n\t\t\tname:    \"partial dist-info directory\",\n\t\t\tfixture: \"testdata/site-packages/partial.dist-info\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pygments\",\n\t\t\t\t\tVersion:  \"2.6.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pygments@2.6.1\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"METADATA\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"BSD License\", file.NewLocation(\"METADATA\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\",\n\t\t\t\t\t\tRequiresPython:       \">=3.5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"egg-info regular file\",\n\t\t\tfixture: \"testdata/site-packages/test\",\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"requests\",\n\t\t\t\t\tVersion:  \"2.22.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/requests@2.22.0\",\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewLocation(\"test.egg-info\"),\n\t\t\t\t\t),\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Apache 2.0\", file.NewLocation(\"test.egg-info\")),\n\t\t\t\t\t),\n\t\t\t\t\tFoundBy: \"python-installed-package-cataloger\",\n\t\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\t\tName:                 \"requests\",\n\t\t\t\t\t\tVersion:              \"2.22.0\",\n\t\t\t\t\t\tPlatform:             \"UNKNOWN\",\n\t\t\t\t\t\tAuthor:               \"Kenneth Reitz\",\n\t\t\t\t\t\tAuthorEmail:          \"me@kennethreitz.org\",\n\t\t\t\t\t\tSitePackagesRootPath: \".\",\n\t\t\t\t\t\tRequiresPython:       \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n\t\t\t\t\t\tProvidesExtra:        []string{\"security\", \"socks\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpects(test.expectedPackages, nil).\n\t\t\t\tTestCataloger(t, NewInstalledPackageCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_PackageCataloger(t *testing.T) {\n\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedPackages      []string\n\t\texpectedRelationships []string\n\t}{\n\t\t{\n\t\t\tname:    \"pdm\",\n\t\t\tfixture: \"testdata/pdm-lock\",\n\t\t\texpectedPackages: []string{\n\t\t\t\t\"certifi @ 2025.1.31 (pdm.lock)\",\n\t\t\t\t\"chardet @ 3.0.4 (pdm.lock)\",\n\t\t\t\t\"charset-normalizer @ 2.0.12 (pdm.lock)\",\n\t\t\t\t\"colorama @ 0.3.9 (pdm.lock)\",\n\t\t\t\t\"idna @ 2.7 (pdm.lock)\",\n\t\t\t\t\"py @ 1.4.34 (pdm.lock)\",\n\t\t\t\t\"pytest @ 3.2.5 (pdm.lock)\",\n\t\t\t\t\"requests @ 2.27.1 (pdm.lock)\",\n\t\t\t\t\"setuptools @ 39.2.0 (pdm.lock)\",\n\t\t\t\t\"urllib3 @ 1.26.20 (pdm.lock)\",\n\t\t\t},\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"certifi @ 2025.1.31 (pdm.lock) [dependency-of] requests @ 2.27.1 (pdm.lock)\",\n\t\t\t\t\"chardet @ 3.0.4 (pdm.lock) [dependency-of] requests @ 2.27.1 (pdm.lock)\",\n\t\t\t\t\"charset-normalizer @ 2.0.12 (pdm.lock) [dependency-of] requests @ 2.27.1 (pdm.lock)\",\n\t\t\t\t\"colorama @ 0.3.9 (pdm.lock) [dependency-of] pytest @ 3.2.5 (pdm.lock)\",\n\t\t\t\t\"idna @ 2.7 (pdm.lock) [dependency-of] requests @ 2.27.1 (pdm.lock)\",\n\t\t\t\t\"py @ 1.4.34 (pdm.lock) [dependency-of] pytest @ 3.2.5 (pdm.lock)\",\n\t\t\t\t\"setuptools @ 39.2.0 (pdm.lock) [dependency-of] pytest @ 3.2.5 (pdm.lock)\",\n\t\t\t\t\"urllib3 @ 1.26.20 (pdm.lock) [dependency-of] requests @ 2.27.1 (pdm.lock)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixture).\n\t\t\t\tExpectsPackageStrings(tt.expectedPackages).\n\t\t\t\tExpectsRelationshipStrings(tt.expectedRelationships).\n\t\t\t\tTestCataloger(t, NewPackageCataloger(DefaultCatalogerConfig()))\n\t\t})\n\t}\n}\n\nfunc Test_PackageCataloger_IgnorePackage(t *testing.T) {\n\ttests := []struct {\n\t\tMetadataFixture string\n\t}{\n\t\t{\n\t\t\tMetadataFixture: \"testdata/Python-2.7.egg-info\",\n\t\t},\n\t\t{\n\t\t\tMetadataFixture: \"testdata/empty-1.0.0-py3.8.egg-info\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.MetadataFixture, func(t *testing.T) {\n\t\t\tresolver := file.NewMockResolverForPaths(test.MetadataFixture)\n\n\t\t\tactual, _, err := NewInstalledPackageCataloger().Catalog(pkgtest.Context(t), resolver)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif len(actual) != 0 {\n\t\t\t\tt.Fatalf(\"Expected 0 packages but found: %d\", len(actual))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_IndexCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain index files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/requirements.txt\",\n\t\t\t\t\"src/extra-requirements.txt\",\n\t\t\t\t\"src/requirements-dev.txt\",\n\t\t\t\t\"src/1-requirements-dev.txt\",\n\t\t\t\t\"src/setup.py\",\n\t\t\t\t\"src/poetry.lock\",\n\t\t\t\t\"src/Pipfile.lock\",\n\t\t\t\t\"src/uv.lock\",\n\t\t\t\t\"src/pdm.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewPackageCataloger(DefaultCatalogerConfig()))\n\t\t})\n\t}\n}\n\nfunc Test_PackageCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain index files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"site-packages/v.DIST-INFO/METADATA\",\n\t\t\t\t\"site-packages/w.EGG-INFO/PKG-INFO\",\n\t\t\t\t\"site-packages/x.dist-info/METADATA\",\n\t\t\t\t\"site-packages/y.egg-info/PKG-INFO\",\n\t\t\t\t\"site-packages/z.egg-info\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tIgnoreUnfulfilledPathResponses(\"**/pyvenv.cfg\").\n\t\t\t\tTestCataloger(t, NewInstalledPackageCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_PackageCataloger_Relationships(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedRelationships []string\n\t}{\n\t\t{\n\t\t\tname:                  \"poetry - no dependencies\",\n\t\t\tfixture:               \"testdata/poetry/dev-deps\",\n\t\t\texpectedRelationships: nil,\n\t\t},\n\t\t{\n\t\t\tname:    \"poetry - simple dependencies\",\n\t\t\tfixture: \"testdata/poetry/simple-deps\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] requests @ 2.32.2 (.)\",\n\t\t\t\t\"charset-normalizer @ 3.3.2 (.) [dependency-of] requests @ 2.32.2 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] requests @ 2.32.2 (.)\",\n\t\t\t\t\"urllib3 @ 2.2.1 (.) [dependency-of] requests @ 2.32.2 (.)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"poetry - multiple extras\",\n\t\t\tfixture: \"testdata/poetry/multiple-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"brotli @ 1.1.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"brotlicffi @ 1.1.0.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"cffi @ 1.16.0 (.) [dependency-of] brotlicffi @ 1.1.0.0 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"h2 @ 4.1.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"h2 @ 4.1.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"hpack @ 4.0.0 (.) [dependency-of] h2 @ 4.1.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.5 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"hyperframe @ 6.0.1 (.) [dependency-of] h2 @ 4.1.0 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"pycparser @ 2.22 (.) [dependency-of] cffi @ 1.16.0 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"poetry - nested extras\",\n\t\t\tfixture: \"testdata/poetry/nested-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"annotated-types @ 0.7.0 (.) [dependency-of] pydantic @ 2.7.1 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] watchfiles @ 0.21.0 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"click @ 8.1.7 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"click @ 8.1.7 (.) [dependency-of] python-dotenv @ 1.0.1 (.)\",\n\t\t\t\t\"click @ 8.1.7 (.) [dependency-of] typer @ 0.12.3 (.)\",\n\t\t\t\t\"click @ 8.1.7 (.) [dependency-of] uvicorn @ 0.29.0 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] click @ 8.1.7 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] pygments @ 2.18.0 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] uvicorn @ 0.29.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"dnspython @ 2.6.1 (.) [dependency-of] email-validator @ 2.1.1 (.)\",\n\t\t\t\t\"email-validator @ 2.1.1 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"email-validator @ 2.1.1 (.) [dependency-of] pydantic @ 2.7.1 (.)\",\n\t\t\t\t\"fastapi @ 0.111.0 (.) [dependency-of] fastapi-cli @ 0.0.4 (.)\",\n\t\t\t\t\"fastapi-cli @ 0.0.4 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] uvicorn @ 0.29.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.5 (.) [dependency-of] dnspython @ 2.6.1 (.)\",\n\t\t\t\t\"httpcore @ 1.0.5 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"httptools @ 0.6.1 (.) [dependency-of] uvicorn @ 0.29.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"httpx @ 0.27.0 (.) [dependency-of] dnspython @ 2.6.1 (.)\",\n\t\t\t\t\"httpx @ 0.27.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"httpx @ 0.27.0 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] dnspython @ 2.6.1 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] email-validator @ 2.1.1 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"itsdangerous @ 2.2.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"itsdangerous @ 2.2.0 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"jinja2 @ 3.1.4 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"jinja2 @ 3.1.4 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"markdown-it-py @ 3.0.0 (.) [dependency-of] rich @ 13.7.1 (.)\",\n\t\t\t\t\"markupsafe @ 2.1.5 (.) [dependency-of] jinja2 @ 3.1.4 (.)\", // MarkupSafe (mixed case) -> markupsafe\n\t\t\t\t\"mdurl @ 0.1.2 (.) [dependency-of] markdown-it-py @ 3.0.0 (.)\",\n\t\t\t\t\"orjson @ 3.10.3 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"pydantic @ 2.7.1 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"pydantic @ 2.7.1 (.) [dependency-of] pydantic-extra-types @ 2.7.0 (.)\",\n\t\t\t\t\"pydantic @ 2.7.1 (.) [dependency-of] pydantic-settings @ 2.2.1 (.)\",\n\t\t\t\t\"pydantic-core @ 2.18.2 (.) [dependency-of] pydantic @ 2.7.1 (.)\",\n\t\t\t\t\"pydantic-extra-types @ 2.7.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"pydantic-settings @ 2.2.1 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"pygments @ 2.18.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"pygments @ 2.18.0 (.) [dependency-of] rich @ 13.7.1 (.)\",\n\t\t\t\t\"python-dotenv @ 1.0.1 (.) [dependency-of] pydantic-settings @ 2.2.1 (.)\",\n\t\t\t\t\"python-dotenv @ 1.0.1 (.) [dependency-of] uvicorn @ 0.29.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"python-multipart @ 0.0.9 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"python-multipart @ 0.0.9 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] markdown-it-py @ 3.0.0 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] pydantic-settings @ 2.2.1 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] python-multipart @ 0.0.9 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.1 (.) [dependency-of] uvicorn @ 0.29.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"rich @ 13.7.1 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"rich @ 13.7.1 (.) [dependency-of] typer @ 0.12.3 (.)\",\n\t\t\t\t\"shellingham @ 1.5.4 (.) [dependency-of] typer @ 0.12.3 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"starlette @ 0.37.2 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"typer @ 0.12.3 (.) [dependency-of] fastapi-cli @ 0.0.4 (.)\",\n\t\t\t\t\"typing-extensions @ 4.12.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"typing-extensions @ 4.12.0 (.) [dependency-of] pydantic @ 2.7.1 (.)\",\n\t\t\t\t\"typing-extensions @ 4.12.0 (.) [dependency-of] pydantic-core @ 2.18.2 (.)\",\n\t\t\t\t\"typing-extensions @ 4.12.0 (.) [dependency-of] typer @ 0.12.3 (.)\",\n\t\t\t\t\"ujson @ 5.10.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"uvicorn @ 0.29.0 (.) [dependency-of] fastapi @ 0.111.0 (.)\",\n\t\t\t\t\"uvicorn @ 0.29.0 (.) [dependency-of] fastapi-cli @ 0.0.4 (.)\",\n\t\t\t\t\"uvloop @ 0.19.0 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"uvloop @ 0.19.0 (.) [dependency-of] uvicorn @ 0.29.0 (.)\",     // proof of uvicorn[standard]\n\t\t\t\t\"watchfiles @ 0.21.0 (.) [dependency-of] uvicorn @ 0.29.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"websockets @ 12.0 (.) [dependency-of] uvicorn @ 0.29.0 (.)\",   // proof of uvicorn[standard]\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"poetry - conflicting extras\",\n\t\t\tfixture: \"testdata/poetry/conflicting-with-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"anyio @ 4.3.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"brotli @ 1.1.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"brotlicffi @ 1.1.0.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"certifi @ 2024.2.2 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"cffi @ 1.16.0 (.) [dependency-of] brotlicffi @ 1.1.0.0 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"h2 @ 4.1.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"h2 @ 4.1.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"hpack @ 4.0.0 (.) [dependency-of] h2 @ 4.1.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.5 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"hyperframe @ 6.0.1 (.) [dependency-of] h2 @ 4.1.0 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"idna @ 3.7 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"pprintpp @ 0.4.0 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\t\t\t\t\"pycparser @ 2.22 (.) [dependency-of] cffi @ 1.16.0 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.3.0 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpcore @ 1.0.5 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"typing-extensions @ 3.10.0.2 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\n\t\t\t\t// ideally we should NOT see these dependencies. However, they are technically installed in the environment\n\t\t\t\t// and an import is present in httpx for each of these, so in theory they are actually dependencies even\n\t\t\t\t// though our pyproject.toml looks like this:\n\t\t\t\t//\n\t\t\t\t//     [tool.poetry.dependencies]\n\t\t\t\t//     python = \"^3.11\"\n\t\t\t\t//     httpx = {extras = [\"brotli\", \"http2\", \"socks\"], version = \"^0.27.0\"}\n\t\t\t\t//     pygments = \"1.6\"\n\t\t\t\t//     click = \"<8\"\n\t\t\t\t//     rich = \"<10\"\n\t\t\t\t//\n\t\t\t\t// note that pygments, click, and rich are installed outside of the allowable ranges for the given\n\t\t\t\t// httpx package version constraints, per the poetry.lock:\n\t\t\t\t//\n\t\t\t\t//     # for package httpx\n\t\t\t\t//     [package.extras]\n\t\t\t\t//     cli = [\"click (==8.*)\", \"pygments (==2.*)\", \"rich (>=10,<14)\"]\n\t\t\t\t//\n\t\t\t\t// note: the pyproject.toml and poetry.lock state are consistent with each other (just with\n\t\t\t\t// \"poetry install\" and \"poetry lock\", and nothing was forced!)\n\t\t\t\t\"click @ 7.1.2 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"pygments @ 1.6 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t\t\"rich @ 0.3.3 (.) [dependency-of] httpx @ 0.27.0 (.)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"uv - simple dependencies\",\n\t\t\tfixture: \"testdata/uv/simple-deps\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] requests @ 2.32.3 (.)\",\n\t\t\t\t\"charset-normalizer @ 3.4.1 (.) [dependency-of] requests @ 2.32.3 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] requests @ 2.32.3 (.)\",\n\t\t\t\t\"requests @ 2.32.3 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"urllib3 @ 2.3.0 (.) [dependency-of] requests @ 2.32.3 (.)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"uv - multiple extras\",\n\t\t\tfixture: \"testdata/uv/multiple-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"anyio @ 4.9.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"brotli @ 1.1.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"brotlicffi @ 1.1.0.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"cffi @ 1.17.1 (.) [dependency-of] brotlicffi @ 1.1.0.0 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"h2 @ 4.2.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"hpack @ 4.1.0 (.) [dependency-of] h2 @ 4.2.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.7 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"httpx @ 0.28.1 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"hyperframe @ 6.1.0 (.) [dependency-of] h2 @ 4.2.0 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"pycparser @ 2.22 (.) [dependency-of] cffi @ 1.17.1 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"uv - nested extras\",\n\t\t\tfixture: \"testdata/uv/nested-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"annotated-types @ 0.7.0 (.) [dependency-of] pydantic @ 2.11.0 (.)\",\n\t\t\t\t\"anyio @ 4.9.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"anyio @ 4.9.0 (.) [dependency-of] starlette @ 0.37.2 (.)\",\n\t\t\t\t\"anyio @ 4.9.0 (.) [dependency-of] watchfiles @ 1.0.4 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"click @ 8.1.8 (.) [dependency-of] rich-toolkit @ 0.14.0 (.)\",\n\t\t\t\t\"click @ 8.1.8 (.) [dependency-of] typer @ 0.15.2 (.)\",\n\t\t\t\t\"click @ 8.1.8 (.) [dependency-of] uvicorn @ 0.34.0 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] click @ 8.1.8 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] uvicorn @ 0.34.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"dnspython @ 2.7.0 (.) [dependency-of] email-validator @ 2.2.0 (.)\",\n\t\t\t\t\"email-validator @ 2.2.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"fastapi @ 0.111.1 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"fastapi-cli @ 0.0.7 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] uvicorn @ 0.34.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.7 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"httptools @ 0.6.4 (.) [dependency-of] uvicorn @ 0.34.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"httpx @ 0.28.1 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] email-validator @ 2.2.0 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"itsdangerous @ 2.2.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"jinja2 @ 3.1.6 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"markdown-it-py @ 3.0.0 (.) [dependency-of] rich @ 13.9.4 (.)\",\n\t\t\t\t\"markupsafe @ 3.0.2 (.) [dependency-of] jinja2 @ 3.1.6 (.)\",\n\t\t\t\t\"mdurl @ 0.1.2 (.) [dependency-of] markdown-it-py @ 3.0.0 (.)\",\n\t\t\t\t\"orjson @ 3.10.16 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pydantic @ 2.11.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pydantic @ 2.11.0 (.) [dependency-of] pydantic-extra-types @ 2.10.3 (.)\",\n\t\t\t\t\"pydantic @ 2.11.0 (.) [dependency-of] pydantic-settings @ 2.8.1 (.)\",\n\t\t\t\t\"pydantic-core @ 2.33.0 (.) [dependency-of] pydantic @ 2.11.0 (.)\",\n\t\t\t\t\"pydantic-extra-types @ 2.10.3 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pydantic-settings @ 2.8.1 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pygments @ 2.19.1 (.) [dependency-of] rich @ 13.9.4 (.)\",\n\t\t\t\t\"python-dotenv @ 1.1.0 (.) [dependency-of] pydantic-settings @ 2.8.1 (.)\",\n\t\t\t\t\"python-dotenv @ 1.1.0 (.) [dependency-of] uvicorn @ 0.34.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"python-multipart @ 0.0.20 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.2 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"pyyaml @ 6.0.2 (.) [dependency-of] uvicorn @ 0.34.0 (.)\", // proof of uvicorn[standard]\n\t\t\t\t\"rich @ 13.9.4 (.) [dependency-of] rich-toolkit @ 0.14.0 (.)\",\n\t\t\t\t\"rich @ 13.9.4 (.) [dependency-of] typer @ 0.15.2 (.)\",\n\t\t\t\t\"rich-toolkit @ 0.14.0 (.) [dependency-of] fastapi-cli @ 0.0.7 (.)\",\n\t\t\t\t\"shellingham @ 1.5.4 (.) [dependency-of] typer @ 0.15.2 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t\t\"starlette @ 0.37.2 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"typer @ 0.15.2 (.) [dependency-of] fastapi-cli @ 0.0.7 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] anyio @ 4.9.0 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] pydantic @ 2.11.0 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] pydantic-core @ 2.33.0 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] pydantic-extra-types @ 2.10.3 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] rich-toolkit @ 0.14.0 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] typer @ 0.15.2 (.)\",\n\t\t\t\t\"typing-extensions @ 4.13.0 (.) [dependency-of] typing-inspection @ 0.4.0 (.)\",\n\t\t\t\t\"typing-inspection @ 0.4.0 (.) [dependency-of] pydantic @ 2.11.0 (.)\",\n\t\t\t\t\"ujson @ 5.10.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"uvicorn @ 0.34.0 (.) [dependency-of] fastapi @ 0.111.1 (.)\",\n\t\t\t\t\"uvicorn @ 0.34.0 (.) [dependency-of] fastapi-cli @ 0.0.7 (.)\",\n\t\t\t\t\"uvloop @ 0.21.0 (.) [dependency-of] uvicorn @ 0.34.0 (.)\",     // proof of uvicorn[standard]\n\t\t\t\t\"watchfiles @ 1.0.4 (.) [dependency-of] uvicorn @ 0.34.0 (.)\",  // proof of uvicorn[standard]\n\t\t\t\t\"websockets @ 15.0.1 (.) [dependency-of] uvicorn @ 0.34.0 (.)\", // proof of uvicorn[standard]\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"uv - conflicting extras\",\n\t\t\tfixture: \"testdata/uv/conflicting-with-extras\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t\"anyio @ 4.6.2.post1 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"brotli @ 1.1.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"brotlicffi @ 1.1.0.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"certifi @ 2025.1.31 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"cffi @ 1.17.1 (.) [dependency-of] brotlicffi @ 1.1.0.0 (.)\",\n\t\t\t\t\"colorama @ 0.4.6 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\t\t\t\t\"h11 @ 0.14.0 (.) [dependency-of] httpcore @ 1.0.7 (.)\",\n\t\t\t\t\"h2 @ 4.2.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"hpack @ 4.1.0 (.) [dependency-of] h2 @ 4.2.0 (.)\",\n\t\t\t\t\"httpcore @ 1.0.7 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"httpx @ 0.28.1 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"hyperframe @ 6.1.0 (.) [dependency-of] h2 @ 4.2.0 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] anyio @ 4.6.2.post1 (.)\",\n\t\t\t\t\"idna @ 3.10 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"pprintpp @ 0.4.0 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\t\t\t\t\"pycparser @ 2.22 (.) [dependency-of] cffi @ 1.17.1 (.)\",\n\t\t\t\t\"sniffio @ 1.3.1 (.) [dependency-of] anyio @ 4.6.2.post1 (.)\",\n\t\t\t\t\"socksio @ 1.0.0 (.) [dependency-of] httpx @ 0.28.1 (.)\",\n\t\t\t\t\"typing-extensions @ 3.10.0.2 (.) [dependency-of] rich @ 0.3.3 (.)\",\n\t\t\t\t// ideally we should NOT see these dependencies. However, they are technically installed in the environment\n\t\t\t\t// and an import is present in httpx for each of these, so in theory they are actually dependencies even\n\t\t\t\t// though our pyproject.toml looks like this:\n\t\t\t\t//\n\t\t\t\t//     [tool.poetry.dependencies]\n\t\t\t\t//     python = \"^3.11\"\n\t\t\t\t//     httpx = {extras = [\"brotli\", \"http2\", \"socks\"], version = \"^0.27.0\"}\n\t\t\t\t//     pygments = \"1.6\"\n\t\t\t\t//     click = \"<8\"\n\t\t\t\t//     rich = \"<10\"\n\t\t\t\t//\n\t\t\t\t// note that pygments, click, and rich are installed outside of the allowable ranges for the given\n\t\t\t\t// httpx package version constraints, per the poetry.lock:\n\t\t\t\t//\n\t\t\t\t//     # for package httpx\n\t\t\t\t//     [package.extras]\n\t\t\t\t//     cli = [\"click (==8.*)\", \"pygments (==2.*)\", \"rich (>=10,<14)\"]\n\t\t\t\t//\n\t\t\t\t// note: the pyproject.toml and uv.lock state are consistent with each other (just with\n\t\t\t\t// \"uv sync\" and nothing was forced!)\n\t\t\t\t\"click @ 7.1.2 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"pygments @ 1.6 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t\t\"rich @ 0.3.3 (.) [dependency-of] testpkg @ 0.1.0 (.)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tWithPackageStringer(stringPackage).\n\t\t\t\tExpectsRelationshipStrings(test.expectedRelationships).\n\t\t\t\tTestCataloger(t, NewPackageCataloger(DefaultCatalogerConfig()))\n\t\t})\n\t}\n}\n\nfunc Test_PackageCataloger_SitePackageRelationships(t *testing.T) {\n\ttests := []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\texpectedRelationships []string\n\t}{\n\t\t{\n\t\t\tname:    \"with multiple python installations and virtual envs\",\n\t\t\tfixture: \"image-multi-site-package\",\n\t\t\texpectedRelationships: []string{\n\t\t\t\t// purely python 3.9 dist-packages\n\t\t\t\t//\n\t\t\t\t// in the container, you can get a sense for dependencies with :\n\t\t\t\t//   $ python3.9 -m pip list | tail -n +3 | awk '{print $1}' | xargs python3.9 -m pip show | grep -e 'Name:' -e 'Requires:' -e '\\-\\-\\-'\n\t\t\t\t//\n\t\t\t\t// which approximates to (all in system packages):\n\t\t\t\t//\n\t\t\t\t// - beautifulsoup4: soupsieve\n\t\t\t\t// - requests: certifi, chardet, idna, urllib3\n\t\t\t\t// - blessed: six, wcwidth\n\t\t\t\t// - virtualenv: distlib, filelock, platformdirs\n\t\t\t\t\"certifi @ 2020.12.5 (/usr/local/lib/python3.9/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"certifi @ 2020.12.5 (/usr/local/lib/python3.9/dist-packages) [dependency-of] urllib3 @ 1.26.18 (/usr/local/lib/python3.9/dist-packages)\", // available when extra == \"secure\", but another dependency is primarily installing it\n\t\t\t\t\"chardet @ 3.0.4 (/usr/local/lib/python3.9/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"distlib @ 0.3.9 (/usr/local/lib/python3.9/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"filelock @ 3.18.0 (/usr/local/lib/python3.9/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"idna @ 2.10 (/usr/local/lib/python3.9/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"idna @ 2.10 (/usr/local/lib/python3.9/dist-packages) [dependency-of] urllib3 @ 1.26.18 (/usr/local/lib/python3.9/dist-packages)\", // available when extra == \"secure\", but another dependency is primarily installing it\n\t\t\t\t\"platformdirs @ 4.3.8 (/usr/local/lib/python3.9/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"six @ 1.16.0 (/usr/local/lib/python3.9/dist-packages) [dependency-of] blessed @ 1.20.0 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"soupsieve @ 2.2.1 (/usr/local/lib/python3.9/dist-packages) [dependency-of] beautifulsoup4 @ 4.9.3 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"urllib3 @ 1.26.18 (/usr/local/lib/python3.9/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.9/dist-packages)\",\n\t\t\t\t\"virtualenv @ 20.31.2 (/usr/local/lib/python3.9/dist-packages) [dependency-of] filelock @ 3.18.0 (/usr/local/lib/python3.9/dist-packages)\", // available when extra == \"testing\", but we are installing it\n\t\t\t\t\"wcwidth @ 0.2.13 (/usr/local/lib/python3.9/dist-packages) [dependency-of] blessed @ 1.20.0 (/usr/local/lib/python3.9/dist-packages)\",\n\n\t\t\t\t// purely python 3.8 dist-packages\n\t\t\t\t//\n\t\t\t\t// in the container, you can get a sense for dependencies with :\n\t\t\t\t//   $ python3.8 -m pip list | tail -n +3 | awk '{print $1}' | xargs python3.8 -m pip show | grep -e 'Name:' -e 'Requires:' -e '\\-\\-\\-'\n\t\t\t\t//\n\t\t\t\t// which approximates to (all in system packages):\n\t\t\t\t//\n\t\t\t\t// - beautifulsoup4: soupsieve\n\t\t\t\t// - requests: certifi, chardet, idna, urllib3\n\t\t\t\t// - runs: xmod\n\t\t\t\t// - virtualenv: distlib, filelock, platformdirs\n\t\t\t\t\"certifi @ 2020.12.5 (/usr/local/lib/python3.8/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"certifi @ 2020.12.5 (/usr/local/lib/python3.8/dist-packages) [dependency-of] urllib3 @ 1.26.18 (/usr/local/lib/python3.8/dist-packages)\", // available when extra == \"secure\", but another dependency is primarily installing it\n\t\t\t\t\"chardet @ 3.0.4 (/usr/local/lib/python3.8/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"distlib @ 0.3.9 (/usr/local/lib/python3.8/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"filelock @ 3.16.1 (/usr/local/lib/python3.8/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"idna @ 2.10 (/usr/local/lib/python3.8/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"idna @ 2.10 (/usr/local/lib/python3.8/dist-packages) [dependency-of] urllib3 @ 1.26.18 (/usr/local/lib/python3.8/dist-packages)\", // available when extra == \"secure\", but another dependency is primarily installing it\n\t\t\t\t\"platformdirs @ 4.3.6 (/usr/local/lib/python3.8/dist-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"soupsieve @ 2.2 (/usr/local/lib/python3.8/dist-packages) [dependency-of] beautifulsoup4 @ 4.9.2 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"urllib3 @ 1.26.18 (/usr/local/lib/python3.8/dist-packages) [dependency-of] requests @ 2.25.0 (/usr/local/lib/python3.8/dist-packages)\",\n\t\t\t\t\"virtualenv @ 20.31.2 (/usr/local/lib/python3.8/dist-packages) [dependency-of] filelock @ 3.16.1 (/usr/local/lib/python3.8/dist-packages)\", // available when extra == \"testing\", but we are installing it\n\t\t\t\t\"xmod @ 1.8.1 (/usr/local/lib/python3.8/dist-packages) [dependency-of] runs @ 1.2.2 (/usr/local/lib/python3.8/dist-packages)\",\n\n\t\t\t\t// project 1 virtual env\n\t\t\t\t//\n\t\t\t\t// in the container, you can get a sense for dependencies with :\n\t\t\t\t//   $ source /app/project1/venv/bin/activate\n\t\t\t\t//   $ pip list | tail -n +3 | awk '{print $1}' | xargs pip show | grep -e 'Name:' -e 'Requires:' -e '\\-\\-\\-' -e 'Location:' | grep -A 1 -B 1 '\\-packages'\n\t\t\t\t//\n\t\t\t\t// which approximates to (some in virtual env, some in system packages):\n\t\t\t\t//\n\t\t\t\t// - beautifulsoup4: soupsieve\n\t\t\t\t// - requests [SYSTEM]: certifi [SYSTEM], chardet [SYSTEM], idna [SYSTEM], urllib3 [SYSTEM]\n\t\t\t\t// - blessed [SYSTEM]: six [SYSTEM], wcwidth [SYSTEM]\n\t\t\t\t// - virtualenv [SYSTEM]: distlib [SYSTEM], filelock [SYSTEM], platformdirs [SYSTEM]\n\t\t\t\t// - inquirer: python-editor [SYSTEM], blessed [SYSTEM], readchar\n\t\t\t\t//\n\t\t\t\t// Note: we'll only see new relationships, so any relationship where there is at least one new player (in FROM or TO)\n\t\t\t\t\"blessed @ 1.20.0 (/usr/local/lib/python3.9/dist-packages) [dependency-of] inquirer @ 3.0.0 (/app/project1/venv/lib/python3.9/site-packages)\",      // note: depends on global site package!\n\t\t\t\t\"python-editor @ 1.0.4 (/usr/local/lib/python3.9/dist-packages) [dependency-of] inquirer @ 3.0.0 (/app/project1/venv/lib/python3.9/site-packages)\", // note: depends on global site package!\n\t\t\t\t\"readchar @ 4.2.1 (/app/project1/venv/lib/python3.9/site-packages) [dependency-of] inquirer @ 3.0.0 (/app/project1/venv/lib/python3.9/site-packages)\",\n\t\t\t\t\"setuptools @ 44.0.0 (/app/project1/venv/lib/python3.9/site-packages) [dependency-of] virtualenv @ 20.31.2 (/usr/local/lib/python3.9/dist-packages)\", // available when extra == \"test\", but we are installing it\n\t\t\t\t\"soupsieve @ 2.3 (/app/project1/venv/lib/python3.9/site-packages) [dependency-of] beautifulsoup4 @ 4.10.0 (/app/project1/venv/lib/python3.9/site-packages)\",\n\n\t\t\t\t// project 2 virtual env\n\t\t\t\t//\n\t\t\t\t// in the container, you can get a sense for dependencies with :\n\t\t\t\t//   $ source /app/project2/venv/bin/activate\n\t\t\t\t//   $ pip list | tail -n +3 | awk '{print $1}' | xargs pip show | grep -e 'Name:' -e 'Requires:' -e '\\-\\-\\-' -e 'Location:'\n\t\t\t\t//\n\t\t\t\t// which approximates to (all in virtual env):\n\t\t\t\t//\n\t\t\t\t// - blessed: six, wcwidth\n\t\t\t\t// - editor: runs, xmod\n\t\t\t\t// - runs: xmod\n\t\t\t\t// - inquirer: editor, blessed, readchar\n\t\t\t\t\"blessed @ 1.20.0 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] inquirer @ 3.2.4 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"editor @ 1.6.6 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] inquirer @ 3.2.4 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"readchar @ 4.1.0 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] inquirer @ 3.2.4 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"runs @ 1.2.2 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] editor @ 1.6.6 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"six @ 1.16.0 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] blessed @ 1.20.0 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"wcwidth @ 0.2.13 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] blessed @ 1.20.0 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"xmod @ 1.8.1 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] editor @ 1.6.6 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t\t\"xmod @ 1.8.1 (/app/project2/venv/lib/python3.8/site-packages) [dependency-of] runs @ 1.2.2 (/app/project2/venv/lib/python3.8/site-packages)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithImageResolver(t, test.fixture).\n\t\t\t\tWithPackageStringer(stringPackage).\n\t\t\t\tExpectsRelationshipStrings(test.expectedRelationships).\n\t\t\t\tTestCataloger(t, NewInstalledPackageCataloger())\n\t\t})\n\t}\n}\n\nfunc stringPackage(p pkg.Package) string {\n\tlocs := p.Locations.ToSlice()\n\tvar loc string\n\tif len(locs) > 0 {\n\t\t// we want the location of the site-packages, not the metadata file\n\t\tloc = path.Dir(path.Dir(p.Locations.ToSlice()[0].RealPath))\n\t}\n\n\treturn fmt.Sprintf(\"%s @ %s (%s)\", p.Name, p.Version, loc)\n}\n\nfunc mustContentsFromLocation(t *testing.T, contentsPath string, offset ...int) string {\n\tt.Helper() // Marks this function as a test helper for cleaner error reporting\n\tcontents, err := os.ReadFile(contentsPath)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to read file %s: %v\", contentsPath, err)\n\t}\n\n\tif len(offset) == 0 {\n\t\treturn string(contents)\n\t}\n\n\tif len(offset) != 2 {\n\t\tt.Fatalf(\"invalid offset provided, expected two integers: start and end\")\n\t}\n\tstart, end := offset[0], offset[1]\n\n\tif start < 0 || end > len(contents) || start > end {\n\t\tt.Fatalf(\"invalid offset range: start=%d, end=%d, content length=%d\", start, end, len(contents))\n\t}\n\n\treturn string(contents[start:end])\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/config.go",
    "content": "package python\n\nconst pypiBaseURL = \"https://pypi.org/pypi\"\n\ntype CatalogerConfig struct {\n\t// GuessUnpinnedRequirements attempts to infer package versions from version constraints when no explicit version is specified in requirements files.\n\t// app-config: python.guess-unpinned-requirements\n\tGuessUnpinnedRequirements bool `yaml:\"guess-unpinned-requirements\" json:\"guess-unpinned-requirements\" mapstructure:\"guess-unpinned-requirements\"`\n\t// SearchRemoteLicenses enables querying the PyPI registry API to retrieve license information for packages that are missing license data in their local metadata.\n\t// app-config: python.search-remote-licenses\n\tSearchRemoteLicenses bool `json:\"search-remote-licenses\" yaml:\"search-remote-licenses\" mapstructure:\"search-remote-licenses\"`\n\t// PypiBaseURL specifies the base URL for the Pypi registry API used when searching for remote license information.\n\t// app-config: python.pypi-base-url\n\tPypiBaseURL string `json:\"pypi-base-url\" yaml:\"pypi-base-url\" mapstructure:\"pypi-base-url\"`\n}\n\nfunc DefaultCatalogerConfig() CatalogerConfig {\n\treturn CatalogerConfig{\n\t\tGuessUnpinnedRequirements: false,\n\t\tSearchRemoteLicenses:      false,\n\t\tPypiBaseURL:               pypiBaseURL,\n\t}\n}\n\nfunc (c CatalogerConfig) WithSearchRemoteLicenses(input bool) CatalogerConfig {\n\tc.SearchRemoteLicenses = input\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithGuessUnpinnedRequirements(input bool) CatalogerConfig {\n\tc.GuessUnpinnedRequirements = input\n\treturn c\n}\n\nfunc (c CatalogerConfig) WithPypiBaseURL(input string) CatalogerConfig {\n\tif input != \"\" {\n\t\tc.PypiBaseURL = input\n\t}\n\treturn c\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/dependency.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc poetryLockDependencySpecifier(p pkg.Package) dependency.Specification { //nolint:dupl // this is very similar to the uv lock dependency specifier, but should remain separate\n\tmeta, ok := p.Metadata.(pkg.PythonPoetryLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract poetry lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\t// this package reference always includes the package name and no extras\n\tprovides := []string{packageRef(p.Name, \"\")}\n\n\tvar requires []string\n\t// add required dependencies (those which a marker is not present indicating it is explicitly optional or needs an extra marker)\n\tfor _, dep := range meta.Dependencies {\n\t\tif isDependencyForExtra(dep) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// we always have the base package requirement without any extras to get base dependencies\n\t\trequires = append(requires, packageRef(dep.Name, \"\"))\n\n\t\t// if there are extras, we need to add a requirement for each extra individually\n\t\t// for example:\n\t\t//    uvicorn = {version = \">=0.12.0\", extras = [\"standard\", \"else\"]}\n\t\t// then we must install uvicorn with the extras \"standard\" and \"else\" to satisfy the requirement\n\t\tfor _, extra := range dep.Extras {\n\t\t\t// always refer to extras with the package name (e.g. name[extra])\n\t\t\t// note: this must always be done independent of other extras (e.g.  name[extra1] and name[extra2] separately\n\t\t\t// is correct and name[extra1,extra2] will result in dependency resolution failure)\n\t\t\trequires = append(requires, packageRef(dep.Name, extra))\n\t\t}\n\t}\n\n\tvar variants []dependency.ProvidesRequires\n\tfor _, extra := range meta.Extras {\n\t\tvariants = append(variants,\n\t\t\tdependency.ProvidesRequires{\n\t\t\t\t// always refer to extras with the package name (e.g. name[extra])\n\t\t\t\t// note: this must always be done independent of other extras (e.g.  name[extra1] and name[extra2] separately\n\t\t\t\t// is correct and name[extra1,extra2] will result in dependency resolution failure)\n\t\t\t\tProvides: []string{packageRef(p.Name, extra.Name)},\n\t\t\t\tRequires: extractPackageNames(extra.Dependencies),\n\t\t\t},\n\t\t)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t\tVariants: variants,\n\t}\n}\n\nfunc isDependencyForExtra(dep pkg.PythonPoetryLockDependencyEntry) bool {\n\treturn strings.Contains(dep.Markers, \"extra ==\")\n}\n\nfunc packageRef(name, extra string) string {\n\t// normalize both package name and extra to ensure case-insensitive matching per Python packaging spec\n\t// https://packaging.python.org/en/latest/specifications/name-normalization/\n\tcleanName := normalize(strings.TrimSpace(name))\n\tcleanExtra := normalize(strings.TrimSpace(extra))\n\tif cleanExtra == \"\" {\n\t\treturn cleanName\n\t}\n\treturn cleanName + \"[\" + cleanExtra + \"]\"\n}\n\nfunc pdmLockDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.PythonPdmLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract pdm lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\t// base package provides the package name without extras\n\tprovides := []string{p.Name}\n\n\t// base requirements from Dependencies field\n\tvar requires []string\n\tfor _, dep := range meta.Dependencies {\n\t\tdepName := extractPackageName(dep)\n\t\tif depName == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\trequires = append(requires, depName)\n\t}\n\n\t// create variants for each extras combination\n\tvar variants []dependency.ProvidesRequires\n\tfor _, extraVariant := range meta.Extras {\n\t\t// each extra in the variant provides packagename[extra]\n\t\tvar variantProvides []string\n\t\tfor _, extra := range extraVariant.Extras {\n\t\t\tvariantProvides = append(variantProvides, packageRef(p.Name, extra))\n\t\t}\n\n\t\t// extract dependencies for this variant, excluding self-references\n\t\tvar variantRequires []string\n\t\tfor _, dep := range extraVariant.Dependencies {\n\t\t\tdepName := extractPackageName(dep)\n\t\t\tif depName == \"\" || depName == p.Name {\n\t\t\t\t// skip empty or self-references (e.g., coverage[toml] depends on coverage==7.4.1)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvariantRequires = append(variantRequires, depName)\n\t\t}\n\n\t\tif len(variantProvides) > 0 {\n\t\t\tvariants = append(variants, dependency.ProvidesRequires{\n\t\t\t\tProvides: variantProvides,\n\t\t\t\tRequires: variantRequires,\n\t\t\t})\n\t\t}\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t\tVariants: variants,\n\t}\n}\n\nfunc wheelEggDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.PythonPackage)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract wheel/egg metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\n\tvar requires []string\n\t// extract dependencies from the Requires-Dist field\n\t// note: this also includes Extras, which are currently partially supported.\n\t// Specifically, we claim that a package needs all extra dependencies and a relationship will be created\n\t// if that dependency happens to be installed. We currently do not do any version constraint resolution\n\t// or similar behaviors to ensure what is installed will function correctly. This is somewhat consistent with\n\t// how extras function, where there tends to be a try/except around imports as an indication if that extra\n\t// functionality should be executed or not (there isn't a package declaration to reference at runtime).\n\tfor _, depSpecifier := range meta.RequiresDist {\n\t\tdepSpecifier = extractPackageName(depSpecifier)\n\t\tif depSpecifier == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\trequires = append(requires, depSpecifier)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\n// extractPackageName removes any extras, version constraints or environment markers from a dependency specifier string.\n// For example: \"requests[security] >= 2.8.1 ; python_version < '3'\" becomes \"requests\"\nfunc extractPackageName(s string) string {\n\t// examples:\n\t// requests [security,tests]\t\t--> requests\n\t// requests >= 2.8.1\t\t\t--> requests\n\t// requests (>= 2.8.1)\t\t\t--> requests\n\t// requests ; python_version < \"2.7\"\t--> requests\n\n\tname := strings.TrimSpace(internal.SplitAny(s, \"[(<!=>~;\")[0])\n\t// normalize the name to match how packages are stored (lowercase, with hyphens instead of underscores)\n\treturn normalize(name)\n}\n\n// extractPackageNames applies extractPackageName to each string in the slice.\nfunc extractPackageNames(ss []string) []string {\n\tvar names []string\n\tfor _, s := range ss {\n\t\tnames = append(names, extractPackageName(s))\n\t}\n\treturn names\n}\n\nfunc wheelEggRelationships(ctx context.Context, resolver file.Resolver, pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\tif err != nil {\n\t\treturn pkgs, rels, err\n\t}\n\n\tpkgsBySitePackageAndName := make(map[string]map[string]pkg.Package)\n\n\tfor _, p := range pkgs {\n\t\tsitePackagesDir := deriveSitePackageDir(p)\n\t\tif pkgsBySitePackageAndName[sitePackagesDir] == nil {\n\t\t\tpkgsBySitePackageAndName[sitePackagesDir] = make(map[string]pkg.Package)\n\t\t}\n\t\tpkgsBySitePackageAndName[sitePackagesDir][p.Name] = p\n\t}\n\n\tvar sitePackagesDirs []string\n\tfor site := range pkgsBySitePackageAndName {\n\t\tsitePackagesDirs = append(sitePackagesDirs, site)\n\t}\n\n\tvenvs, globalSitePackages, err := findVirtualEnvs(ctx, resolver, sitePackagesDirs)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\trelationshipsProcessor := dependency.Processor(wheelEggDependencySpecifier)\n\trelationshipIndex := relationship.NewIndex(rels...)\n\n\t// create relationships between packages within each global site package directory\n\tfor _, globalSitePackage := range globalSitePackages {\n\t\tsitePkgs := collectPackages(pkgsBySitePackageAndName, []string{globalSitePackage})\n\t\t_, siteRels, err := relationshipsProcessor(sitePkgs, nil, nil)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to resolve relationships for global site package %q: %w\", globalSitePackage, err)\n\t\t}\n\t\trelationshipIndex.Add(siteRels...)\n\t}\n\n\t// create relationships between packages within each virtual env site package directory (that doesn't link to a global site-packages directory)\n\tfor _, venv := range venvs {\n\t\tif venv.IncludeSystemSitePackages {\n\t\t\tcontinue\n\t\t}\n\t\tsitePkgs := collectPackages(pkgsBySitePackageAndName, []string{venv.SitePackagesPath})\n\t\t_, siteRels, err := relationshipsProcessor(sitePkgs, nil, nil)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to resolve relationships for virtualenv site package %q: %w\", venv.SitePackagesPath, err)\n\t\t}\n\t\trelationshipIndex.Add(siteRels...)\n\t}\n\n\t// create relationships between packages within each virtual env site package directory (that links to a global site package directory)\n\tfor _, venv := range venvs {\n\t\tif !venv.IncludeSystemSitePackages {\n\t\t\tcontinue\n\t\t}\n\n\t\tglobalSitePackage := venv.matchSystemPackagesPath(globalSitePackages)\n\n\t\tsitePkgs := collectPackages(pkgsBySitePackageAndName, []string{venv.SitePackagesPath, globalSitePackage})\n\t\t_, siteRels, err := relationshipsProcessor(sitePkgs, nil, nil)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to resolve relationships for virtualenv + global site package path %q + %q: %w\", venv.SitePackagesPath, globalSitePackage, err)\n\t\t}\n\n\t\trelationshipIndex.Add(siteRels...)\n\t}\n\n\treturn pkgs, relationshipIndex.All(), err\n}\n\nfunc collectPackages(pkgsBySitePackageAndName map[string]map[string]pkg.Package, sites []string) []pkg.Package {\n\t// get packages for all sites, preferring packages from earlier sites for packages with the same name\n\n\tpkgByName := make(map[string]struct{})\n\tvar pkgs []pkg.Package\n\tfor _, site := range sites {\n\t\tfor name, p := range pkgsBySitePackageAndName[site] {\n\t\t\tif _, ok := pkgByName[name]; !ok {\n\t\t\t\tpkgByName[name] = struct{}{}\n\t\t\t\tpkgs = append(pkgs, p)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pkgs\n}\n\nfunc deriveSitePackageDir(p pkg.Package) string {\n\tfor _, l := range packagePrimaryLocations(p) {\n\t\tsitePackageDir := extractSitePackageDir(l.RealPath)\n\t\tif sitePackageDir != \"\" {\n\t\t\treturn sitePackageDir\n\t\t}\n\t}\n\treturn \"\"\n}\n\nfunc packagePrimaryLocations(p pkg.Package) []file.Location {\n\tvar locs []file.Location\n\tfor _, l := range p.Locations.ToSlice() {\n\t\ta, ok := l.Annotations[pkg.EvidenceAnnotationKey]\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tif a == pkg.PrimaryEvidenceAnnotation {\n\t\t\tlocs = append(locs, l)\n\t\t}\n\t}\n\treturn locs\n}\n\nfunc extractSitePackageDir(p string) string {\n\t// walk up the path until we find a site-packages or dist-packages directory\n\tfields := strings.Split(path.Dir(p), \"/\")\n\tfor i := len(fields) - 1; i >= 0; i-- {\n\t\tif fields[i] == \"site-packages\" || fields[i] == \"dist-packages\" {\n\t\t\treturn path.Join(fields[:i+1]...)\n\t\t}\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/dependency_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc Test_poetryLockDependencySpecifier(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"no dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with required dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:    \"bar\",\n\t\t\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: []string{\"bar\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with optional dependencies (explicit)\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:     \"bar\",\n\t\t\t\t\t\t\tVersion:  \"1.2.3\",\n\t\t\t\t\t\t\tOptional: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: []string{\"bar\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"without dependencies for non-required extra\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:     \"bar\",\n\t\t\t\t\t\t\tVersion:  \"1.2.3\",\n\t\t\t\t\t\t\tOptional: true,\n\t\t\t\t\t\t\tMarkers:  \"extra == 'baz'\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t// note: there is no \"baz\" extra defined\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: nil, // no requirements for non-required extra\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package with extra\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:     \"bar\", // note: we NEVER reference this, the extras section is the source of truth here\n\t\t\t\t\t\t\tVersion:  \"1.2.3\",\n\t\t\t\t\t\t\tOptional: true,\n\t\t\t\t\t\t\tMarkers:  \"extra == 'baz'\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExtras: []pkg.PythonPoetryLockExtraEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"baz\",\n\t\t\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\t\t\"qux\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: nil, // no requirements for non-required extra\n\t\t\t\t},\n\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"foo[baz]\"},\n\t\t\t\t\t\tRequires: []string{\"qux\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package using extra\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:    \"starlette\",\n\t\t\t\t\t\t\tVersion: \">=0.37.2,<0.38.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:    \"bar\",\n\t\t\t\t\t\t\tVersion: \"1.2.3\",\n\t\t\t\t\t\t\tExtras:  []string{\"standard\", \"things\"}, // note multiple extras needed when installing\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExtras: []pkg.PythonPoetryLockExtraEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName: \"baz\",\n\t\t\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\t\t\"qux (>=2.0.0)\", // should strip version constraint\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: []string{\n\t\t\t\t\t\t\"starlette\",\n\t\t\t\t\t\t// note: we break out the package and extra requirements separately\n\t\t\t\t\t\t// and extras are never combined\n\t\t\t\t\t\t\"bar\",\n\t\t\t\t\t\t\"bar[standard]\",\n\t\t\t\t\t\t\"bar[things]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"foo[baz]\"},\n\t\t\t\t\t\tRequires: []string{\"qux\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dependency names with mixed case should be normalized\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"dj-rest-auth\",\n\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:    \"Django\", // note: capital D\n\t\t\t\t\t\t\tVersion: \">=4.2,<6.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:    \"djangorestframework\",\n\t\t\t\t\t\t\tVersion: \">=3.13.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"dj-rest-auth\"},\n\t\t\t\t\tRequires: []string{\"django\", \"djangorestframework\"}, // \"Django\" should be normalized to \"django\"\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, poetryLockDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_poetryLockDependencySpecifier_againstPoetryLock(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    []dependency.Specification\n\t}{\n\t\t{\n\t\t\tname:    \"case-insensitive dependency resolution\",\n\t\t\tfixture: \"testdata/poetry/case-sensitivity/poetry.lock\",\n\t\t\twant: []dependency.Specification{\n\t\t\t\t// packages are in the order they appear in the lock file\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"django\"},\n\t\t\t\t\t\tRequires: []string{\"asgiref\", \"sqlparse\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"djangorestframework\"},\n\t\t\t\t\t\tRequires: []string{\"django\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// dj-rest-auth depends on Django (capital D) which should resolve to django\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"dj-rest-auth\"},\n\t\t\t\t\t\tRequires: []string{\"django\", \"djangorestframework\"}, // Django normalized to django\n\t\t\t\t\t},\n\t\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"dj-rest-auth[with-social]\"},\n\t\t\t\t\t\t\tRequires: []string{\"django-allauth\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"simple dependencies with extras\",\n\t\t\tfixture: \"testdata/poetry/simple-deps/poetry.lock\",\n\t\t\twant: []dependency.Specification{\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"certifi\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"charset-normalizer\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"idna\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"requests\"},\n\t\t\t\t\t\tRequires: []string{\"certifi\", \"charset-normalizer\", \"idna\", \"urllib3\"},\n\t\t\t\t\t},\n\t\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"requests[socks]\"},\n\t\t\t\t\t\t\tRequires: []string{\"pysocks\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"requests[use-chardet-on-py3]\"},\n\t\t\t\t\t\t\tRequires: []string{\"chardet\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\t\tProvides: []string{\"urllib3\"},\n\t\t\t\t\t},\n\t\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"urllib3[brotli]\"},\n\t\t\t\t\t\t\tRequires: []string{\"brotli\", \"brotlicffi\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"urllib3[h2]\"},\n\t\t\t\t\t\t\tRequires: []string{\"h2\"}},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"urllib3[socks]\"},\n\t\t\t\t\t\t\tRequires: []string{\"pysocks\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tProvides: []string{\"urllib3[zstd]\"},\n\t\t\t\t\t\t\tRequires: []string{\"zstandard\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfh, err := os.Open(tt.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tplp := newPoetryLockParser(DefaultCatalogerConfig())\n\t\t\tpkgs, err := plp.poetryLockPackages(context.TODO(), file.NewLocationReadCloser(file.NewLocation(tt.fixture), fh))\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar got []dependency.Specification\n\t\t\tfor _, p := range pkgs {\n\t\t\t\tgot = append(got, poetryLockDependencySpecifier(p))\n\t\t\t}\n\n\t\t\tif d := cmp.Diff(tt.want, got); d != \"\" {\n\t\t\t\tt.Errorf(\"wrong result (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// Test_packageRef verifies that package references are normalized according to\n// the Python Packaging specification for names and extras:\n// https://packaging.python.org/en/latest/specifications/name-normalization/\nfunc Test_packageRef(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tpkg   string\n\t\textra string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname: \"simple package name\",\n\t\t\tpkg:  \"requests\",\n\t\t\twant: \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with extra\",\n\t\t\tpkg:   \"requests\",\n\t\t\textra: \"security\",\n\t\t\twant:  \"requests[security]\",\n\t\t},\n\t\t{\n\t\t\tname: \"package name with mixed case\",\n\t\t\tpkg:  \"Django\",\n\t\t\twant: \"django\",\n\t\t},\n\t\t{\n\t\t\tname: \"package name with underscores\",\n\t\t\tpkg:  \"some_package\",\n\t\t\twant: \"some-package\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package name with mixed case and extra\",\n\t\t\tpkg:   \"Django\",\n\t\t\textra: \"argon2\",\n\t\t\twant:  \"django[argon2]\",\n\t\t},\n\t\t{\n\t\t\tname:  \"extra with mixed case\",\n\t\t\tpkg:   \"package\",\n\t\t\textra: \"Security\",\n\t\t\twant:  \"package[security]\",\n\t\t},\n\t\t{\n\t\t\tname:  \"both with mixed case and separators\",\n\t\t\tpkg:   \"Some_Package\",\n\t\t\textra: \"Dev_Extra\",\n\t\t\twant:  \"some-package[dev-extra]\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := packageRef(tt.pkg, tt.extra)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_extractPackageName(t *testing.T) {\n\ttests := []struct {\n\t\tname  string\n\t\tinput string\n\t\twant  string\n\t}{\n\t\t{\n\t\t\tname:  \"simple package name\",\n\t\t\tinput: \"requests\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with version constraint\",\n\t\t\tinput: \"requests >= 2.8.1\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with parentheses version constraint\",\n\t\t\tinput: \"requests (>= 2.8.1)\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with extras\",\n\t\t\tinput: \"requests[security,tests]\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with extras and version\",\n\t\t\tinput: \"requests[security] >= 2.8.1\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with environment marker\",\n\t\t\tinput: \"requests ; python_version < \\\"2.7\\\"\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package with everything\",\n\t\t\tinput: \"requests[security] >= 2.8.1 ; python_version < \\\"3\\\"\",\n\t\t\twant:  \"requests\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package name with capitals (normalization test)\",\n\t\t\tinput: \"Werkzeug (>=0.15)\",\n\t\t\twant:  \"werkzeug\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package name with mixed case\",\n\t\t\tinput: \"Jinja2 (>=2.10.1)\",\n\t\t\twant:  \"jinja2\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package name with underscores\",\n\t\t\tinput: \"some_package >= 1.0\",\n\t\t\twant:  \"some-package\",\n\t\t},\n\t\t{\n\t\t\tname:  \"package name with mixed separators\",\n\t\t\tinput: \"Some_Package.Name >= 1.0\",\n\t\t\twant:  \"some-package-name\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := extractPackageName(tt.input)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc Test_wheelEggDependencySpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"no dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tRequiresDist: []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"simple dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"requests\",\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tRequiresDist: []string{\n\t\t\t\t\t\t\"certifi>=2017.4.17\",\n\t\t\t\t\t\t\"urllib3<1.27,>=1.21.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"requests\"},\n\t\t\t\t\tRequires: []string{\"certifi\", \"urllib3\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dependencies with capital letters (Flask-like)\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"flask\",\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tRequiresDist: []string{\n\t\t\t\t\t\t\"Werkzeug (>=0.15)\",\n\t\t\t\t\t\t\"Jinja2 (>=2.10.1)\",\n\t\t\t\t\t\t\"itsdangerous (>=0.24)\",\n\t\t\t\t\t\t\"click (>=5.1)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"flask\"},\n\t\t\t\t\t// Requires are returned in the order they appear in RequiresDist\n\t\t\t\t\tRequires: []string{\"werkzeug\", \"jinja2\", \"itsdangerous\", \"click\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"dependencies with extras\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPackage{\n\t\t\t\t\tRequiresDist: []string{\n\t\t\t\t\t\t\"bar >= 1.0\",\n\t\t\t\t\t\t\"pytest ; extra == 'dev'\",\n\t\t\t\t\t\t\"sphinx ; extra == 'docs'\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: []string{\"bar\", \"pytest\", \"sphinx\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, wheelEggDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_pdmLockDependencySpecifier(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"no dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with simple dependencies\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"requests\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"certifi>=2017.4.17\",\n\t\t\t\t\t\t\"urllib3<1.27,>=1.21.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"requests\"},\n\t\t\t\t\tRequires: []string{\"certifi\", \"urllib3\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with dependencies containing environment markers\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"requests\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"certifi>=2017.4.17\",\n\t\t\t\t\t\t\"chardet<5,>=3.0.2; python_version < \\\"3\\\"\",\n\t\t\t\t\t\t\"charset-normalizer~=2.0.0; python_version >= \\\"3\\\"\",\n\t\t\t\t\t\t\"idna<3,>=2.5; python_version < \\\"3\\\"\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"requests\"},\n\t\t\t\t\tRequires: []string{\"certifi\", \"chardet\", \"charset-normalizer\", \"idna\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with dependencies containing extras\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"pytest-cov\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"coverage[toml]>=5.2.1\",\n\t\t\t\t\t\t\"pytest>=4.6\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"pytest-cov\"},\n\t\t\t\t\tRequires: []string{\"coverage\", \"pytest\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package with single extra variant\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"coverage\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{}, // base package has no dependencies\n\t\t\t\t\tExtras: []pkg.PythonPdmLockExtraVariant{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tExtras: []string{\"toml\"},\n\t\t\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\t\t\"coverage==7.4.1\", // self-reference, should be excluded\n\t\t\t\t\t\t\t\t\"tomli; python_full_version <= \\\"3.11.0a6\\\"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"coverage\"},\n\t\t\t\t\tRequires: nil,\n\t\t\t\t},\n\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"coverage[toml]\"},\n\t\t\t\t\t\tRequires: []string{\"tomli\"}, // coverage self-reference excluded\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package with multiple extras in one variant\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"foo\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{\"bar>=1.0\"},\n\t\t\t\t\tExtras: []pkg.PythonPdmLockExtraVariant{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tExtras: []string{\"dev\", \"test\"},\n\t\t\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\t\t\"pytest>=6.0\",\n\t\t\t\t\t\t\t\t\"black~=22.0\",\n\t\t\t\t\t\t\t\t\"foo==1.0.0\", // self-reference, should be excluded\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"foo\"},\n\t\t\t\t\tRequires: []string{\"bar\"},\n\t\t\t\t},\n\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"foo[dev]\", \"foo[test]\"},\n\t\t\t\t\t\tRequires: []string{\"pytest\", \"black\"}, // foo self-reference excluded\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"package with multiple separate extra variants\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"example\",\n\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\tDependencies: []string{\"requests\"},\n\t\t\t\t\tExtras: []pkg.PythonPdmLockExtraVariant{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tExtras:       []string{\"redis\"},\n\t\t\t\t\t\t\tDependencies: []string{\"redis>=4.0\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tExtras:       []string{\"postgres\"},\n\t\t\t\t\t\t\tDependencies: []string{\"psycopg2>=2.9\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"example\"},\n\t\t\t\t\tRequires: []string{\"requests\"},\n\t\t\t\t},\n\t\t\t\tVariants: []dependency.ProvidesRequires{\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"example[redis]\"},\n\t\t\t\t\t\tRequires: []string{\"redis\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tProvides: []string{\"example[postgres]\"},\n\t\t\t\t\t\tRequires: []string{\"psycopg2\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, pdmLockDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/license.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/anchore/syft/internal/cache\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype pythonLicenseResolver struct {\n\tcatalogerConfig CatalogerConfig\n\tlicenseCache    cache.Resolver[[]pkg.License]\n}\n\nfunc newPythonLicenseResolver(config CatalogerConfig) pythonLicenseResolver {\n\treturn pythonLicenseResolver{\n\t\tlicenseCache:    cache.GetResolverCachingErrors[[]pkg.License](\"python\", \"v1\"),\n\t\tcatalogerConfig: config,\n\t}\n}\n\nfunc (lr *pythonLicenseResolver) getLicenses(ctx context.Context, packageName string, packageVersion string) pkg.LicenseSet {\n\tvar licenseSet pkg.LicenseSet\n\n\tif lr.catalogerConfig.SearchRemoteLicenses {\n\t\tlicenses, err := lr.getLicensesFromRemote(ctx, packageName, packageVersion)\n\t\tif err == nil && licenses != nil {\n\t\t\tlicenseSet = pkg.NewLicenseSet(licenses...)\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from pypi registry for package %s:%s: %+v\", packageName, packageVersion, err)\n\t\t}\n\t}\n\treturn licenseSet\n}\n\nfunc (lr *pythonLicenseResolver) getLicensesFromRemote(ctx context.Context, packageName string, packageVersion string) ([]pkg.License, error) {\n\treturn lr.licenseCache.Resolve(fmt.Sprintf(\"%s/%s\", packageName, packageVersion), func() ([]pkg.License, error) {\n\t\tlicense, err := getLicenseFromPypiRegistry(lr.catalogerConfig.PypiBaseURL, packageName, packageVersion)\n\t\tif err == nil && license != \"\" {\n\t\t\tlicenses := pkg.NewLicensesFromValuesWithContext(ctx, license)\n\t\t\treturn licenses, nil\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to extract licenses from pypi registry for package %s:%s: %+v\", packageName, packageVersion, err)\n\t\t}\n\t\treturn nil, err\n\t})\n}\n\nfunc formatPypiRegistryURL(baseURL, packageName, version string) (requestURL string, err error) {\n\tif packageName == \"\" {\n\t\treturn \"\", fmt.Errorf(\"unable to format pypi request for a blank package name\")\n\t}\n\n\turlPath := []string{packageName, version, \"json\"}\n\trequestURL, err = url.JoinPath(baseURL, urlPath...)\n\tif err != nil {\n\t\treturn requestURL, fmt.Errorf(\"unable to format pypi request for pkg:version %s%s; %w\", packageName, version, err)\n\t}\n\treturn requestURL, nil\n}\n\nfunc getLicenseFromPypiRegistry(baseURL, packageName, version string) (string, error) {\n\t// \"https://pypi.org/pypi/%s/%s/json\", packageName, version\n\trequestURL, err := formatPypiRegistryURL(baseURL, packageName, version)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to format pypi request for pkg:version %s%s; %w\", packageName, version, err)\n\t}\n\tlog.WithFields(\"url\", requestURL).Info(\"downloading python package from pypi\")\n\n\tpypiRequest, err := http.NewRequest(http.MethodGet, requestURL, nil)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to format remote request: %w\", err)\n\t}\n\n\thttpClient := &http.Client{\n\t\tTimeout: time.Second * 10,\n\t}\n\n\tresp, err := httpClient.Do(pypiRequest)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to get package from pypi registry: %w\", err)\n\t}\n\tdefer func() {\n\t\tif err := resp.Body.Close(); err != nil {\n\t\t\tlog.Errorf(\"unable to close body: %+v\", err)\n\t\t}\n\t}()\n\n\tif resp.StatusCode != 200 {\n\t\treturn \"\", fmt.Errorf(\"unable to get package from pypi registry\")\n\t}\n\n\t// Read \"license\" from the response\n\tvar pypiResponse struct {\n\t\tInfo struct {\n\t\t\tLicense           string `json:\"license\"`\n\t\t\tLicenseExpression string `json:\"license_expression\"`\n\t\t} `json:\"info\"`\n\t}\n\n\tif err := json.NewDecoder(resp.Body).Decode(&pypiResponse); err != nil {\n\t\treturn \"\", fmt.Errorf(\"unable to parse license from pypi registry: %w\", err)\n\t}\n\n\tvar license string\n\tif pypiResponse.Info.LicenseExpression != \"\" {\n\t\tlicense = pypiResponse.Info.LicenseExpression\n\t} else {\n\t\tlicense = pypiResponse.Info.License\n\t}\n\tlog.Tracef(\"Retrieved License: %s\", license)\n\n\treturn license, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/license_test.go",
    "content": "package python\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestFormatPyPiRegistryURL(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tversion       string\n\t\texpected      string\n\t\texpectedError error\n\t}{\n\t\t{\n\t\t\tname:          \"package1\",\n\t\t\tversion:       \"1.0\",\n\t\t\texpected:      \"https://pypi.org/pypi/package1/1.0/json\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"package-1\",\n\t\t\tversion:       \"\",\n\t\t\texpected:      \"https://pypi.org/pypi/package-1/json\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"_\",\n\t\t\tversion:       \"a\",\n\t\t\texpected:      \"https://pypi.org/pypi/_/a/json\",\n\t\t\texpectedError: nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"\",\n\t\t\tversion:       \"a\",\n\t\t\texpected:      \"\",\n\t\t\texpectedError: fmt.Errorf(\"unable to format pypi request for a blank package name\"),\n\t\t},\n\t}\n\n\tcfg := DefaultCatalogerConfig()\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot, err := formatPypiRegistryURL(cfg.PypiBaseURL, test.name, test.version)\n\n\t\t\trequire.Equal(t, test.expected, got)\n\t\t\tif test.expectedError != nil {\n\t\t\t\trequire.ErrorContains(t, err, test.expectedError.Error())\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n\n}\n\nfunc TestGetLicenseFromPypiRegistry(t *testing.T) {\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\n\ttests := []struct {\n\t\tname            string\n\t\tversion         string\n\t\trequestHandlers []handlerPath\n\t\texpected        string\n\t\texpectedError   error\n\t}{\n\t\t{\n\t\t\tname:    \"certifi\",\n\t\t\tversion: \"2025.10.5\",\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: \"MPL-2.0\",\n\t\t},\n\t\t{\n\t\t\tname:    \"package\",\n\t\t\tversion: \"1.0\",\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/package/1.0/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandlerWithStatus(\"\", http.StatusNotFound),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected:      \"\",\n\t\t\texpectedError: fmt.Errorf(\"unable to get package from pypi registry\"),\n\t\t},\n\t\t{\n\t\t\tname:    \"package\",\n\t\t\tversion: \"2.0\",\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/package/2.0/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response_bad.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected:      \"\",\n\t\t\texpectedError: fmt.Errorf(\"unable to parse license from pypi registry: EOF\"),\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\tgot, err := getLicenseFromPypiRegistry(url, tc.name, tc.version)\n\t\t\trequire.Equal(t, tc.expected, got)\n\t\t\tif tc.expectedError != nil {\n\t\t\t\trequire.ErrorContains(t, err, tc.expectedError.Error())\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype handlerPath struct {\n\tpath    string\n\thandler func(w http.ResponseWriter, r *http.Request)\n}\n\nfunc generateMockPypiRegistryHandler(responseFixture string) func(w http.ResponseWriter, r *http.Request) {\n\treturn generateMockPypiRegistryHandlerWithStatus(responseFixture, http.StatusOK)\n}\n\nfunc generateMockPypiRegistryHandlerWithStatus(responseFixture string, mockHttpStatus int) func(w http.ResponseWriter, r *http.Request) {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tif mockHttpStatus != http.StatusOK {\n\t\t\thttp.Error(w, fmt.Errorf(\"Error for status\").Error(), http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\n\t\tw.WriteHeader(http.StatusOK)\n\t\t// Copy the file's content to the response writer\n\t\tfile, err := os.Open(responseFixture)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdefer file.Close()\n\n\t\t_, err = io.Copy(w, file)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// setup sets up a test HTTP server for mocking requests to a particular registry.\n// The returned url is injected into the Config so the client uses the test server.\n// Tests should register handlers on mux to simulate the expected request/response structure\nfunc setupPypiRegistry() (mux *http.ServeMux, serverURL string, teardown func()) {\n\t// mux is the HTTP request multiplexer used with the test server.\n\tmux = http.NewServeMux()\n\n\t// We want to ensure that tests catch mistakes where the endpoint URL is\n\t// specified as absolute rather than relative. It only makes a difference\n\t// when there's a non-empty base URL path. So, use that. See issue #752.\n\tapiHandler := http.NewServeMux()\n\tapiHandler.Handle(\"/\", mux)\n\t// server is a test HTTP server used to provide mock API responses.\n\tserver := httptest.NewServer(apiHandler)\n\n\treturn mux, server.URL, server.Close\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/package.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc normalize(name string) string {\n\t// https://packaging.python.org/en/latest/specifications/name-normalization/\n\tre := regexp.MustCompile(`[-_.]+`)\n\tnormalized := re.ReplaceAllString(name, \"-\")\n\treturn strings.ToLower(normalized)\n}\n\nfunc newPackageForIndex(ctx context.Context, lr pythonLicenseResolver, name, version string, locations ...file.Location) pkg.Package {\n\tname = normalize(name)\n\tlicenseSet := lr.getLicenses(ctx, name, version)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLicenses:  licenseSet,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(name, version, nil),\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPackageForIndexWithMetadata(ctx context.Context, lr pythonLicenseResolver, name, version string, metadata interface{}, locations ...file.Location) pkg.Package {\n\tname = normalize(name)\n\tlicenseSet := lr.getLicenses(ctx, name, version)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLicenses:  licenseSet,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(name, version, nil),\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPackageForRequirementsWithMetadata(ctx context.Context, lr pythonLicenseResolver, name, version string, metadata pkg.PythonRequirementsEntry, locations ...file.Location) pkg.Package {\n\tname = normalize(name)\n\tlicenseSet := lr.getLicenses(ctx, name, version)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLicenses:  licenseSet,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(name, version, nil),\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPackageForPackage(m parsedData, licenses pkg.LicenseSet, sources ...file.Location) pkg.Package {\n\tname := normalize(m.Name)\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   m.Version,\n\t\tPURL:      packageURL(name, m.Version, &m.PythonPackage),\n\t\tLocations: file.NewLocationSet(sources...),\n\t\tLicenses:  licenses,\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  m.PythonPackage,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc packageURL(name, version string, m *pkg.PythonPackage) string {\n\t// generate a purl from the package data\n\tpURL := packageurl.NewPackageURL(\n\t\tpackageurl.TypePyPi,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tpurlQualifiersForPackage(m),\n\t\t\"\")\n\n\treturn pURL.ToString()\n}\n\nfunc purlQualifiersForPackage(m *pkg.PythonPackage) packageurl.Qualifiers {\n\tq := packageurl.Qualifiers{}\n\tif m == nil {\n\t\treturn q\n\t}\n\tif m.DirectURLOrigin != nil {\n\t\tq = append(q, vcsURLQualifierForPackage(m.DirectURLOrigin)...)\n\t}\n\treturn q\n}\n\nfunc vcsURLQualifierForPackage(p *pkg.PythonDirectURLOriginInfo) packageurl.Qualifiers {\n\tif p == nil || p.VCS == \"\" {\n\t\treturn nil\n\t}\n\t// Taken from https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst#known-qualifiers-keyvalue-pairs\n\t// packageurl-go still doesn't support all qualifier names\n\treturn packageurl.Qualifiers{\n\t\t{Key: pkg.PURLQualifierVCSURL, Value: fmt.Sprintf(\"%s+%s@%s\", p.VCS, p.URL, p.CommitID)},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/package_test.go",
    "content": "package python\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\ttestName string\n\t\tname     string\n\t\tversion  string\n\t\tmetadata *pkg.PythonPackage\n\t\twant     string\n\t}{\n\t\t{\n\t\t\ttestName: \"without metadata\",\n\t\t\tname:     \"name\",\n\t\t\tversion:  \"v0.1.0\",\n\t\t\twant:     \"pkg:pypi/name@v0.1.0\",\n\t\t},\n\t\t{\n\t\t\ttestName: \"with vcs info\",\n\t\t\tname:     \"name\",\n\t\t\tversion:  \"v0.1.0\",\n\t\t\tmetadata: &pkg.PythonPackage{\n\t\t\t\tName:    \"bogus\",  // note: ignored\n\t\t\t\tVersion: \"v0.2.0\", // note: ignored\n\t\t\t\tDirectURLOrigin: &pkg.PythonDirectURLOriginInfo{\n\t\t\t\t\tVCS:      \"git\",\n\t\t\t\t\tURL:      \"https://github.com/test/test.git\",\n\t\t\t\t\tCommitID: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: \"pkg:pypi/name@v0.1.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Ftest%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.testName, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, packageURL(tt.name, tt.version, tt.metadata))\n\t\t})\n\t}\n}\n\nfunc Test_normalization(t *testing.T) {\n\tnormalForm := \"friendly-bard\"\n\ttests := []string{\n\t\tnormalForm,\n\t\t\"Friendly-Bard\",\n\t\t\"FRIENDLY-BARD\",\n\t\t\"friendly.bard\",\n\t\t\"friendly_bard\",\n\t\t\"friendly--bard\",\n\t\t\"FrIeNdLy-._.-bArD\",\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt, func(t *testing.T) {\n\t\t\tassert.Equal(t, normalForm, normalize(tt))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_pdm_lock.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/BurntSushi/toml\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\ntype pdmLock struct {\n\tMetadata struct {\n\t\tGroups      []string `toml:\"groups\"`\n\t\tStrategy    []string `toml:\"strategy\"`\n\t\tLockVersion string   `toml:\"lock_version\"`\n\t\tContentHash string   `toml:\"content_hash\"`\n\t} `toml:\"metadata\"`\n\tPackage []pdmLockPackage `toml:\"package\"`\n}\n\ntype pdmLockPackage struct {\n\tName           string               `toml:\"name\"`\n\tVersion        string               `toml:\"version\"`\n\tRequiresPython string               `toml:\"requires_python\"`\n\tSummary        string               `toml:\"summary\"`\n\tMarker         string               `toml:\"marker\"`\n\tDependencies   []string             `toml:\"dependencies\"`\n\tExtras         []string             `toml:\"extras\"`\n\tFiles          []pdmLockPackageFile `toml:\"files\"`\n}\n\ntype pdmLockPackageFile struct {\n\tFile string `toml:\"file\"`\n\tHash string `toml:\"hash\"`\n}\n\ntype pdmLockParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newPdmLockParser(cfg CatalogerConfig) pdmLockParser {\n\treturn pdmLockParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// mergePdmLockPackages merges multiple package entries (with different extras) into a single PythonPdmLockEntry.\n//\n// PDM vs Poetry Lock File Behavior:\n//\n// PDM creates separate [[package]] entries in the lock file for each extras combination that is actually used\n// in the dependency tree. For example, if your project depends on coverage[toml], PDM will create TWO entries:\n//  1. A base \"coverage\" package entry (no extras field)\n//  2. A \"coverage\" package entry with extras = [\"toml\"] and its own dependencies\n//\n// Poetry, in contrast, creates a SINGLE package entry per package and uses conditional markers to indicate\n// when extra dependencies should be included.\n//\n// SBOM Representation:\n//\n// Semantically, \"coverage\" and \"coverage[toml]\" are NOT separate packages - they represent the same package\n// with optional features enabled. The [toml] syntax is Python's way of requesting optional dependencies.\n// Therefore, in the SBOM we create a SINGLE package node per name+version to accurately represent that:\n//\n//   - There is one logical package (e.g., \"coverage\")\n//   - The package may be used with different feature sets (extras) by different dependents\n//   - For example: \"pytest-cov\" depends on \"coverage[toml]\" while another package might depend on base \"coverage\"\n//\n// This function consolidates PDM's multiple entries into:\n//   - Base package metadata (files, summary, dependencies without extras)\n//   - Extras variants (each combination of extras with its specific dependencies)\n//\n// This approach ensures dependency resolution works correctly: when a package requires \"coverage[toml]\",\n// the dependency resolver can match it to the \"coverage\" package node and its \"toml\" variant.\nfunc mergePdmLockPackages(packages []pdmLockPackage) pkg.PythonPdmLockEntry {\n\tif len(packages) == 0 {\n\t\treturn pkg.PythonPdmLockEntry{}\n\t}\n\n\tvar entry pkg.PythonPdmLockEntry\n\tvar baseFiles []pkg.PythonPdmFileEntry\n\n\t// Separate base package from extras variants\n\t// note: this logic processes packages in order and assumes the base package (no extras) appears\n\t// before extras variants in the PDM lock file, which is PDM's current behavior\n\tfor _, p := range packages {\n\t\t// Convert files format\n\t\tvar files []pkg.PythonPdmFileEntry\n\t\tfor _, f := range p.Files {\n\t\t\t// skip files with invalid hash format (missing colon separator between algorithm and value)\n\t\t\tif colonIndex := strings.Index(f.Hash, \":\"); colonIndex != -1 {\n\t\t\t\talgorithm := f.Hash[:colonIndex]\n\t\t\t\tvalue := f.Hash[colonIndex+1:]\n\n\t\t\t\tfiles = append(files, pkg.PythonPdmFileEntry{\n\t\t\t\t\tURL: f.File,\n\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\tAlgorithm: algorithm,\n\t\t\t\t\t\tValue:     value,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Base package (no extras field or empty extras)\n\t\tif len(p.Extras) == 0 {\n\t\t\tentry.Summary = p.Summary\n\t\t\tentry.RequiresPython = p.RequiresPython\n\t\t\tentry.Dependencies = p.Dependencies\n\t\t\tentry.Marker = p.Marker\n\t\t\tbaseFiles = files\n\t\t} else {\n\t\t\t// Extras variant\n\t\t\tvariant := pkg.PythonPdmLockExtraVariant{\n\t\t\t\tExtras:       p.Extras,\n\t\t\t\tDependencies: p.Dependencies,\n\t\t\t\tMarker:       p.Marker,\n\t\t\t}\n\n\t\t\t// Only include files if different from base\n\t\t\t// For now, we'll compare lengths as a simple check\n\t\t\tif len(baseFiles) == 0 || !filesEqual(baseFiles, files) {\n\t\t\t\tvariant.Files = files\n\t\t\t}\n\n\t\t\tentry.Extras = append(entry.Extras, variant)\n\t\t}\n\t}\n\n\t// Store base files\n\tentry.Files = baseFiles\n\n\t// If no base package was found but we have extras, use first package's metadata as base\n\tif entry.Summary == \"\" && len(packages) > 0 {\n\t\tentry.Summary = packages[0].Summary\n\t\tentry.RequiresPython = packages[0].RequiresPython\n\t\tentry.Dependencies = packages[0].Dependencies\n\t\tentry.Marker = packages[0].Marker\n\t}\n\n\treturn entry\n}\n\n// filesEqual checks if two file slices are equal by comparing URL and digest fields.\n// assumes files appear in the same order in both slices.\nfunc filesEqual(a, b []pkg.PythonPdmFileEntry) bool {\n\tif len(a) != len(b) {\n\t\treturn false\n\t}\n\tfor i := range a {\n\t\tif a[i].URL != b[i].URL || a[i].Digest.Algorithm != b[i].Digest.Algorithm || a[i].Digest.Value != b[i].Digest.Value {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// parsePdmLock is a parser function for pdm.lock contents, returning python packages discovered.\nfunc (plp pdmLockParser) parsePdmLock(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar lock pdmLock\n\t_, err := toml.NewDecoder(reader).Decode(&lock)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse pdm.lock file: %w\", err)\n\t}\n\n\t// Group packages by name@version since PDM creates separate entries for different extras combinations\n\tpackageGroups := make(map[string][]pdmLockPackage)\n\tfor _, p := range lock.Package {\n\t\tkey := p.Name + \"@\" + p.Version\n\t\tpackageGroups[key] = append(packageGroups[key], p)\n\t}\n\n\t// Merge package groups and create packages\n\tvar pkgs []pkg.Package\n\tfor _, group := range packageGroups {\n\t\tif len(group) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Use first package for name/version (same across all entries in group)\n\t\tname := group[0].Name\n\t\tversion := group[0].Version\n\n\t\t// Merge all entries into single metadata\n\t\tpythonPkgMetadata := mergePdmLockPackages(group)\n\n\t\tpkgs = append(pkgs, newPackageForIndexWithMetadata(\n\t\t\tctx,\n\t\t\tplp.licenseResolver,\n\t\t\tname,\n\t\t\tversion,\n\t\t\tpythonPkgMetadata,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t))\n\t}\n\n\trelationships := dependency.Resolve(pdmLockDependencySpecifier, pkgs)\n\n\treturn pkgs, relationships, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_pdm_lock_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePdmLock(t *testing.T) {\n\n\tfixture := \"testdata/pdm-lock/pdm.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"certifi\",\n\t\t\tVersion:   \"2025.1.31\",\n\t\t\tPURL:      \"pkg:pypi/certifi@2025.1.31\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Python package for providing Mozilla's CA Bundle.\",\n\t\t\t\tMarker:  `python_version >= \"3.6\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequiresPython: \">=3.6\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"chardet\",\n\t\t\tVersion:   \"3.0.4\",\n\t\t\tPURL:      \"pkg:pypi/chardet@3.0.4\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Universal encoding detector for Python 2 and 3\",\n\t\t\t\tMarker:  `os_name == \"nt\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"charset-normalizer\",\n\t\t\tVersion:   \"2.0.12\",\n\t\t\tPURL:      \"pkg:pypi/charset-normalizer@2.0.12\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.\",\n\t\t\t\tMarker:  `python_version >= \"3.6\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequiresPython: \">=3.5.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"colorama\",\n\t\t\tVersion:   \"0.3.9\",\n\t\t\tPURL:      \"pkg:pypi/colorama@0.3.9\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Cross-platform colored terminal text.\",\n\t\t\t\tMarker:  `sys_platform == \"win32\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"idna\",\n\t\t\tVersion:   \"2.7\",\n\t\t\tPURL:      \"pkg:pypi/idna@2.7\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Internationalized Domain Names in Applications (IDNA)\",\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"py\",\n\t\t\tVersion:   \"1.4.34\",\n\t\t\tPURL:      \"pkg:pypi/py@1.4.34\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"library with cross-python path, ini-parsing, io, code, log facilities\",\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"2ccb79b01769d99115aa600d7eed99f524bf752bba8f041dc1c184853514655a\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"0f2d585d22050e90c7d293b6451c83db097df77871974d90efd5a30dc12fcde3\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"pytest\",\n\t\t\tVersion:   \"3.2.5\",\n\t\t\tPURL:      \"pkg:pypi/pytest@3.2.5\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"pytest: simple powerful testing with Python\",\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"6d5bd4f7113b444c55a3bbb5c738a3dd80d43563d063fc42dcb0aaefbdd78b81\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"241d7e7798d79192a123ceaf64c602b4d233eacf6d6e42ae27caa97f498b7dc6\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDependencies: []string{\n\t\t\t\t\t`argparse; python_version == \"2.6\"`,\n\t\t\t\t\t`colorama; sys_platform == \"win32\"`,\n\t\t\t\t\t`ordereddict; python_version == \"2.6\"`,\n\t\t\t\t\t\"py>=1.4.33\",\n\t\t\t\t\t\"setuptools\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"requests\",\n\t\t\tVersion:   \"2.27.1\",\n\t\t\tPURL:      \"pkg:pypi/requests@2.27.1\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Python HTTP for Humans.\",\n\t\t\t\tMarker:  `python_version >= \"3.6\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequiresPython: \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*\",\n\t\t\t\tDependencies: []string{\n\t\t\t\t\t\"certifi>=2017.4.17\",\n\t\t\t\t\t`chardet<5,>=3.0.2; python_version < \"3\"`,\n\t\t\t\t\t`charset-normalizer~=2.0.0; python_version >= \"3\"`,\n\t\t\t\t\t`idna<3,>=2.5; python_version < \"3\"`,\n\t\t\t\t\t`idna<4,>=2.5; python_version >= \"3\"`,\n\t\t\t\t\t\"urllib3<1.27,>=1.21.1\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"setuptools\",\n\t\t\tVersion:   \"39.2.0\",\n\t\t\tPURL:      \"pkg:pypi/setuptools@39.2.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"Easily download, build, install, upgrade, and uninstall Python packages\",\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequiresPython: \">=2.7,!=3.0.*,!=3.1.*,!=3.2.*\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"urllib3\",\n\t\t\tVersion:   \"1.26.20\",\n\t\t\tPURL:      \"pkg:pypi/urllib3@1.26.20\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\tSummary: \"HTTP library with thread-safe connection pooling, file post, and more.\",\n\t\t\t\tMarker:  `python_version >= \"3.6\"`,\n\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\tValue:     \"40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequiresPython: \"!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// Create a map for easy lookup of packages by name\n\tpkgMap := make(map[string]pkg.Package)\n\tfor _, p := range expectedPkgs {\n\t\tpkgMap[p.Name] = p\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t// pytest dependencies\n\t\t{\n\t\t\tFrom: pkgMap[\"colorama\"],\n\t\t\tTo:   pkgMap[\"pytest\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"py\"],\n\t\t\tTo:   pkgMap[\"pytest\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"setuptools\"],\n\t\t\tTo:   pkgMap[\"pytest\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t// requests dependencies\n\t\t{\n\t\t\tFrom: pkgMap[\"certifi\"],\n\t\t\tTo:   pkgMap[\"requests\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"chardet\"],\n\t\t\tTo:   pkgMap[\"requests\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"charset-normalizer\"],\n\t\t\tTo:   pkgMap[\"requests\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"urllib3\"],\n\t\t\tTo:   pkgMap[\"requests\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: pkgMap[\"idna\"],\n\t\t\tTo:   pkgMap[\"requests\"],\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpdmLockParser := newPdmLockParser(DefaultCatalogerConfig())\n\tpkgtest.TestFileParser(t, fixture, pdmLockParser.parsePdmLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePdmLockWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/pdm.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonPdmLockEntry{\n\t\t\t\t\t\tSummary: \"Python package for providing Mozilla's CA Bundle.\",\n\t\t\t\t\t\tMarker:  `python_version >= \"3.7\"`,\n\t\t\t\t\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\t\tValue:     \"47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tURL: \"\",\n\t\t\t\t\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\t\tValue:     \"0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequiresPython: \">=3.7\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\tpdmLockParser := newPdmLockParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, pdmLockParser.parsePdmLock, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\n\nfunc TestParsePdmLockWithExtras(t *testing.T) {\n\t// This test verifies that PDM's multiple package entries for different extras combinations\n\t// are correctly merged into a single package node in the SBOM.\n\t//\n\t// The fixture contains TWO [[package]] entries for \"coverage\":\n\t//   1. Base coverage package (no extras)\n\t//   2. coverage with extras = [\"toml\"]\n\t//\n\t// We should get exactly ONE coverage package in the output, with extras properly tracked.\n\n\tfixture := \"testdata/pdm-lock-extras/pdm.lock\"\n\tpdmLockParser := newPdmLockParser(DefaultCatalogerConfig())\n\n\tfh, err := os.Open(fixture)\n\trequire.NoError(t, err)\n\tdefer fh.Close()\n\n\tpkgs, relationships, err := pdmLockParser.parsePdmLock(\n\t\tcontext.TODO(),\n\t\tnil,\n\t\tnil,\n\t\tfile.NewLocationReadCloser(file.NewLocation(fixture), fh),\n\t)\n\n\trequire.NoError(t, err)\n\n\t// Verify we have the expected number of packages (NOT duplicated coverage)\n\trequire.Len(t, pkgs, 5, \"should have exactly 5 packages: coverage, pytest, pytest-cov, tomli, uvloop\")\n\n\t// Find the coverage package and verify it's only present once\n\tvar coveragePkg *pkg.Package\n\tcoverageCount := 0\n\tfor i := range pkgs {\n\t\tif pkgs[i].Name == \"coverage\" {\n\t\t\tcoverageCount++\n\t\t\tcoveragePkg = &pkgs[i]\n\t\t}\n\t}\n\n\trequire.Equal(t, 1, coverageCount, \"coverage should appear exactly ONCE in the package list (PDM has it twice in the lock file)\")\n\trequire.NotNil(t, coveragePkg, \"coverage package should be found\")\n\n\t// This test verifies file deduplication behavior!\n\t// The fixture has identical files in both base and extras=[\"toml\"] entries.\n\t// After merging, the base should have Files populated, but the extras variant should NOT\n\t// have Files (they're deduplicated because they're identical to base).\n\tcoverageMeta, ok := coveragePkg.Metadata.(pkg.PythonPdmLockEntry)\n\trequire.True(t, ok, \"coverage metadata should be PythonPdmLockEntry\")\n\n\texpectedMeta := pkg.PythonPdmLockEntry{\n\t\tSummary:        \"Code coverage measurement for Python\",\n\t\tRequiresPython: \">=3.8\",\n\t\tFiles: []pkg.PythonPdmFileEntry{\n\t\t\t{\n\t\t\t\tURL: \"coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl\",\n\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     \"077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tURL: \"coverage-7.4.1.tar.gz\",\n\t\t\t\tDigest: pkg.PythonFileDigest{\n\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\tValue:     \"1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tExtras: []pkg.PythonPdmLockExtraVariant{\n\t\t\t{\n\t\t\t\tExtras: []string{\"toml\"},\n\t\t\t\tDependencies: []string{\n\t\t\t\t\t\"coverage==7.4.1\",\n\t\t\t\t\t\"tomli; python_full_version <= \\\"3.11.0a6\\\"\",\n\t\t\t\t},\n\t\t\t\t// Files is nil/empty here because they're identical to base (deduplicated)\n\t\t\t},\n\t\t},\n\t}\n\n\tif diff := cmp.Diff(expectedMeta, coverageMeta); diff != \"\" {\n\t\tt.Errorf(\"coverage metadata mismatch (-want +got):\\n%s\", diff)\n\t}\n\n\t// Verify relationships were created\n\trequire.NotEmpty(t, relationships, \"relationships should be created\")\n\n\t// Verify pytest-cov has a relationship to coverage\n\t// Build a package map for easy lookup\n\tpkgMap := make(map[string]pkg.Package)\n\tfor _, p := range pkgs {\n\t\tpkgMap[p.Name] = p\n\t}\n\n\t// Verify tomli package has marker preserved\n\tvar tomliPkg *pkg.Package\n\tfor i := range pkgs {\n\t\tif pkgs[i].Name == \"tomli\" {\n\t\t\ttomliPkg = &pkgs[i]\n\t\t\tbreak\n\t\t}\n\t}\n\trequire.NotNil(t, tomliPkg, \"tomli package should be found\")\n\ttomliMeta, ok := tomliPkg.Metadata.(pkg.PythonPdmLockEntry)\n\trequire.True(t, ok, \"tomli metadata should be PythonPdmLockEntry\")\n\trequire.Equal(t, `python_version < \"3.11\"`, tomliMeta.Marker, \"tomli should have marker preserved\")\n\n\t// Verify uvloop package has complex marker preserved (multiple AND conditions, negations, mixed quotes)\n\tvar uvloopPkg *pkg.Package\n\tfor i := range pkgs {\n\t\tif pkgs[i].Name == \"uvloop\" {\n\t\t\tuvloopPkg = &pkgs[i]\n\t\t\tbreak\n\t\t}\n\t}\n\trequire.NotNil(t, uvloopPkg, \"uvloop package should be found\")\n\tuvloopMeta, ok := uvloopPkg.Metadata.(pkg.PythonPdmLockEntry)\n\trequire.True(t, ok, \"uvloop metadata should be PythonPdmLockEntry\")\n\trequire.Equal(t, `platform_python_implementation != 'PyPy' and sys_platform != 'win32' and python_version >= \"3.8\"`, uvloopMeta.Marker, \"uvloop should have complex marker preserved exactly as-is\")\n\n\tvar foundPytestCovToCoverage bool\n\tfor _, rel := range relationships {\n\t\ttoPkg, toOk := rel.To.(pkg.Package)\n\t\tfromPkg, fromOk := rel.From.(pkg.Package)\n\t\tif toOk && fromOk && toPkg.Name == \"pytest-cov\" && fromPkg.Name == \"coverage\" {\n\t\t\tfoundPytestCovToCoverage = true\n\t\t\tbreak\n\t\t}\n\t}\n\trequire.True(t, foundPytestCovToCoverage, \"should have a dependency relationship from coverage to pytest-cov\")\n}\n\nfunc TestParsePdmLockWithSeparateFilesFixture(t *testing.T) {\n\t// verify that PythonPdmLockExtraVariant metadata is properly populated when parsing PDM lock files\n\t// with extras variants. The separate-files fixture contains rfc3986 with base + extras=[\"idna2008\"] variant.\n\t//\n\t// The fixture contains TWO [[package]] entries for \"rfc3986\":\n\t//   1. Base rfc3986 package (no extras, no dependencies)\n\t//   2. rfc3986 with extras = [\"idna2008\"] and dependencies = [\"idna\", \"rfc3986==1.5.0\"]\n\t//\n\t// We should get exactly ONE rfc3986 package in the output, with the extras variant properly tracked\n\t// in the Extras field.\n\n\tfixture := \"testdata/pdm-lock-separate-files/pdm.lock\"\n\tpdmLockParser := newPdmLockParser(DefaultCatalogerConfig())\n\n\tfh, err := os.Open(fixture)\n\trequire.NoError(t, err)\n\tdefer fh.Close()\n\n\tpkgs, relationships, err := pdmLockParser.parsePdmLock(\n\t\tcontext.TODO(),\n\t\tnil,\n\t\tnil,\n\t\tfile.NewLocationReadCloser(file.NewLocation(fixture), fh),\n\t)\n\n\trequire.NoError(t, err)\n\n\t// Find the rfc3986 package and verify it's only present once\n\tvar rfc3986Pkg *pkg.Package\n\trfc3986Count := 0\n\tfor i := range pkgs {\n\t\tif pkgs[i].Name == \"rfc3986\" {\n\t\t\trfc3986Count++\n\t\t\trfc3986Pkg = &pkgs[i]\n\t\t}\n\t}\n\n\trequire.Equal(t, 1, rfc3986Count)\n\trequire.NotNil(t, rfc3986Pkg)\n\n\trequire.Equal(t, \"rfc3986\", rfc3986Pkg.Name)\n\trequire.Equal(t, \"1.5.0\", rfc3986Pkg.Version)\n\n\trfc3986Meta, ok := rfc3986Pkg.Metadata.(pkg.PythonPdmLockEntry)\n\trequire.True(t, ok)\n\n\texpectedMeta := pkg.PythonPdmLockEntry{\n\t\tSummary:        \"Validating URI References per RFC 3986\",\n\t\tRequiresPython: \"\",\n\t\tFiles:          nil, // base package has no files in fixture\n\t\tExtras: []pkg.PythonPdmLockExtraVariant{\n\t\t\t{\n\t\t\t\tExtras: []string{\"idna2008\"},\n\t\t\t\tDependencies: []string{\n\t\t\t\t\t\"idna\",\n\t\t\t\t\t\"rfc3986==1.5.0\",\n\t\t\t\t},\n\t\t\t\tFiles: nil, // variant also has no files (fixture has no files for either entry)\n\t\t\t},\n\t\t},\n\t}\n\n\tif diff := cmp.Diff(expectedMeta, rfc3986Meta); diff != \"\" {\n\t\tt.Errorf(\"rfc3986 metadata mismatch (-want +got):\\n%s\", diff)\n\t}\n\n\trequire.NotEmpty(t, relationships, \"relationships should be created\")\n}\n\nfunc TestMergePdmLockPackagesNoBasePackage(t *testing.T) {\n\t// test the edge case where only extras variants exist (no base package entry)\n\t// this can happen if PDM lock file only contains package entries with extras\n\tpackages := []pdmLockPackage{\n\t\t{\n\t\t\tName:           \"test-package\",\n\t\t\tVersion:        \"1.0.0\",\n\t\t\tRequiresPython: \">=3.8\",\n\t\t\tSummary:        \"Test package summary\",\n\t\t\tMarker:         \"extra == 'dev'\",\n\t\t\tDependencies:   []string{\"pytest\", \"test-package==1.0.0\"},\n\t\t\tExtras:         []string{\"dev\"},\n\t\t\tFiles: []pdmLockPackageFile{\n\t\t\t\t{\n\t\t\t\t\tFile: \"test-package-1.0.0.tar.gz\",\n\t\t\t\t\tHash: \"sha256:abc123\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:           \"test-package\",\n\t\t\tVersion:        \"1.0.0\",\n\t\t\tRequiresPython: \">=3.8\",\n\t\t\tSummary:        \"Test package summary\",\n\t\t\tMarker:         \"extra == 'test'\",\n\t\t\tDependencies:   []string{\"coverage\", \"test-package==1.0.0\"},\n\t\t\tExtras:         []string{\"test\"},\n\t\t\tFiles: []pdmLockPackageFile{\n\t\t\t\t{\n\t\t\t\t\tFile: \"test-package-1.0.0.tar.gz\",\n\t\t\t\t\tHash: \"sha256:abc123\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tentry := mergePdmLockPackages(packages)\n\n\t// verify fallback logic: when no base package exists, first package's metadata is used\n\trequire.Equal(t, \"Test package summary\", entry.Summary)\n\trequire.Equal(t, \">=3.8\", entry.RequiresPython)\n\trequire.Equal(t, []string{\"pytest\", \"test-package==1.0.0\"}, entry.Dependencies)\n\trequire.Equal(t, \"extra == 'dev'\", entry.Marker)\n\n\t// verify both extras variants are present\n\trequire.Len(t, entry.Extras, 2)\n\trequire.Equal(t, []string{\"dev\"}, entry.Extras[0].Extras)\n\trequire.Equal(t, []string{\"pytest\", \"test-package==1.0.0\"}, entry.Extras[0].Dependencies)\n\trequire.Equal(t, []string{\"test\"}, entry.Extras[1].Extras)\n\trequire.Equal(t, []string{\"coverage\", \"test-package==1.0.0\"}, entry.Extras[1].Dependencies)\n}\n\nfunc Test_corruptPdmLock(t *testing.T) {\n\tpsr := newPdmLockParser(DefaultCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/pdm.lock\").\n\t\tWithError().\n\t\tTestParser(t, psr.parsePdmLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_pipfile_lock.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype pipfileLock struct {\n\tMeta struct {\n\t\tHash struct {\n\t\t\tSha256 string `json:\"sha256\"`\n\t\t} `json:\"hash\"`\n\t\tPipfileSpec int `json:\"pipfile-spec\"`\n\t\tRequires    struct {\n\t\t\tPythonVersion string `json:\"python_version\"`\n\t\t} `json:\"requires\"`\n\t\tSources []struct {\n\t\t\tName      string `json:\"name\"`\n\t\t\tURL       string `json:\"url\"`\n\t\t\tVerifySsl bool   `json:\"verify_ssl\"`\n\t\t} `json:\"sources\"`\n\t} `json:\"_meta\"`\n\tDefault map[string]pipfileLockDependency `json:\"default\"`\n\tDevelop map[string]pipfileLockDependency `json:\"develop\"`\n}\n\ntype pipfileLockDependency struct {\n\tHashes  []string `json:\"hashes\"`\n\tVersion string   `json:\"version\"`\n\tIndex   string   `json:\"index\"`\n}\n\ntype pipfileLockParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newPipfileLockParser(cfg CatalogerConfig) pipfileLockParser {\n\treturn pipfileLockParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// parsePipfileLock is a parser function for Pipfile.lock contents, returning \"Default\" python packages discovered.\nfunc (plp pipfileLockParser) parsePipfileLock(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpkgs := make([]pkg.Package, 0)\n\tdec := json.NewDecoder(reader)\n\n\tfor {\n\t\tvar lock pipfileLock\n\t\tif err := dec.Decode(&lock); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse Pipfile.lock file: %w\", err)\n\t\t}\n\t\tsourcesMap := map[string]string{}\n\t\tfor _, source := range lock.Meta.Sources {\n\t\t\tsourcesMap[source.Name] = source.URL\n\t\t}\n\t\tfor name, pkgMeta := range lock.Default {\n\t\t\tvar index string\n\t\t\tif pkgMeta.Index != \"\" {\n\t\t\t\tindex = sourcesMap[pkgMeta.Index]\n\t\t\t} else {\n\t\t\t\t// https://pipenv.pypa.io/en/latest/indexes.html\n\t\t\t\tindex = \"https://pypi.org/simple\"\n\t\t\t}\n\t\t\tversion := strings.TrimPrefix(pkgMeta.Version, \"==\")\n\t\t\tpkgs = append(pkgs, newPackageForIndexWithMetadata(ctx, plp.licenseResolver, name, version, pkg.PythonPipfileLockEntry{Index: index, Hashes: pkgMeta.Hashes}, reader.Location))\n\t\t}\n\t}\n\n\tpkg.Sort(pkgs)\n\n\treturn pkgs, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_pipfile_lock_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePipFileLock(t *testing.T) {\n\n\tfixture := \"testdata/pipfile-lock/Pipfile.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"aio-pika\",\n\t\t\tVersion:   \"6.8.0\",\n\t\t\tPURL:      \"pkg:pypi/aio-pika@6.8.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPipfileLockEntry{\n\t\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\t\tHashes: []string{\n\t\t\t\t\t\"sha256:1d4305a5f78af3857310b4fe48348cdcf6c097e0e275ea88c2cd08570531a369\",\n\t\t\t\t\t\"sha256:e69afef8695f47c5d107bbdba21bdb845d5c249acb3be53ef5c2d497b02657c0\",\n\t\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tName:      \"aiodns\",\n\t\t\tVersion:   \"2.0.0\",\n\t\t\tPURL:      \"pkg:pypi/aiodns@2.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPipfileLockEntry{\n\t\t\t\tIndex: \"https://test.pypi.org/simple\",\n\t\t\t\tHashes: []string{\n\t\t\t\t\t\"sha256:815fdef4607474295d68da46978a54481dd1e7be153c7d60f9e72773cd38d77d\",\n\t\t\t\t\t\"sha256:aaa5ac584f40fe778013df0aa6544bf157799bd3f608364b451840ed2c8688de\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"aiohttp\",\n\t\t\tVersion:   \"3.7.4.post0\",\n\t\t\tPURL:      \"pkg:pypi/aiohttp@3.7.4.post0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPipfileLockEntry{\n\t\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\t\tHashes: []string{\n\t\t\t\t\t\"sha256:02f46fc0e3c5ac58b80d4d56eb0a7c7d97fcef69ace9326289fb9f1955e65cfe\",\n\t\t\t\t\t\"sha256:0563c1b3826945eecd62186f3f5c7d31abb7391fedc893b7e2b26303b5a9f3fe\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"aiohttp-jinja2\",\n\t\t\tVersion:   \"1.4.2\",\n\t\t\tPURL:      \"pkg:pypi/aiohttp-jinja2@1.4.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPipfileLockEntry{\n\t\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\t\tHashes: []string{\n\t\t\t\t\t\"sha256:860da7582efa866744bad5883947557d0f82e457d69903ea65d666b66f8a69ca\",\n\t\t\t\t\t\"sha256:9c22a0e48e3b277fc145c67dd8c3b8f609dab36bce9eb337f70dfe716663c9a0\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: relationships are not under test\n\tvar expectedRelationships []artifact.Relationship\n\n\tpipfileLockParser := newPipfileLockParser(DefaultCatalogerConfig())\n\tpkgtest.TestFileParser(t, fixture, pipfileLockParser.parsePipfileLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePipfileLockWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/Pipfile.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonPipfileLockEntry{\n\t\t\t\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\t\t\t\tHashes: []string{\n\t\t\t\t\t\t\t\"sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43\",\n\t\t\t\t\t\t\t\"sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\tpipfileLockParser := newPipfileLockParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, pipfileLockParser.parsePipfileLock, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\n\nfunc Test_corruptPipfileLock(t *testing.T) {\n\tpipfileLockParser := newPipfileLockParser(DefaultCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/Pipfile.lock\").\n\t\tWithError().\n\t\tTestParser(t, pipfileLockParser.parsePipfileLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_poetry_lock.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/BurntSushi/toml\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\ntype poetryPackageSource struct {\n\tURL       string `toml:\"url\"`\n\tType      string `toml:\"type\"`\n\tReference string `toml:\"reference\"`\n}\n\ntype poetryPackages struct {\n\tPackages []poetryPackage `toml:\"package\"`\n}\n\ntype poetryPackage struct {\n\tName                  string                    `toml:\"name\"`\n\tVersion               string                    `toml:\"version\"`\n\tCategory              string                    `toml:\"category\"`\n\tDescription           string                    `toml:\"description\"`\n\tOptional              bool                      `toml:\"optional\"`\n\tSource                poetryPackageSource       `toml:\"source\"`\n\tDependenciesUnmarshal map[string]toml.Primitive `toml:\"dependencies\"`\n\tExtras                map[string][]string       `toml:\"extras\"`\n\tDependencies          map[string][]poetryPackageDependency\n}\n\ntype poetryPackageDependency struct {\n\tVersion  string   `toml:\"version\"`\n\tMarkers  string   `toml:\"markers\"`\n\tOptional bool     `toml:\"optional\"`\n\tExtras   []string `toml:\"extras\"`\n}\n\ntype poetryLockParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newPoetryLockParser(cfg CatalogerConfig) poetryLockParser {\n\treturn poetryLockParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// parsePoetryLock is a parser function for poetry.lock contents, returning all python packages discovered.\nfunc (plp poetryLockParser) parsePoetryLock(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpkgs, err := plp.poetryLockPackages(ctx, reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// since we would never expect to create relationships for packages across multiple poetry.lock files\n\t// we should do this on a file parser level (each poetry.lock) instead of a cataloger level (across all\n\t// poetry.lock files)\n\treturn pkgs, dependency.Resolve(poetryLockDependencySpecifier, pkgs), unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc (plp poetryLockParser) poetryLockPackages(ctx context.Context, reader file.LocationReadCloser) ([]pkg.Package, error) {\n\tmetadata := poetryPackages{}\n\tmd, err := toml.NewDecoder(reader).Decode(&metadata)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read poetry lock package: %w\", err)\n\t}\n\n\tfor i, p := range metadata.Packages {\n\t\tdependencies := make(map[string][]poetryPackageDependency)\n\t\tfor pkgName, du := range p.DependenciesUnmarshal {\n\t\t\tvar (\n\t\t\t\tsingle    string\n\t\t\t\tsingleObj poetryPackageDependency\n\t\t\t\tmultiObj  []poetryPackageDependency\n\t\t\t)\n\n\t\t\tswitch {\n\t\t\tcase md.PrimitiveDecode(du, &single) == nil:\n\t\t\t\tdependencies[pkgName] = append(dependencies[pkgName], poetryPackageDependency{Version: single})\n\t\t\tcase md.PrimitiveDecode(du, &singleObj) == nil:\n\t\t\t\tdependencies[pkgName] = append(dependencies[pkgName], singleObj)\n\t\t\tcase md.PrimitiveDecode(du, &multiObj) == nil:\n\t\t\t\tdependencies[pkgName] = append(dependencies[pkgName], multiObj...)\n\t\t\tdefault:\n\t\t\t\tlog.Tracef(\"failed to decode poetry lock package dependencies for %s; skipping\", pkgName)\n\t\t\t}\n\t\t}\n\t\tmetadata.Packages[i].Dependencies = dependencies\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, p := range metadata.Packages {\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPackageForIndexWithMetadata(\n\t\t\t\tctx,\n\t\t\t\tplp.licenseResolver,\n\t\t\t\tp.Name,\n\t\t\t\tp.Version,\n\t\t\t\tnewPythonPoetryLockEntry(p),\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\treturn pkgs, nil\n}\n\nfunc newPythonPoetryLockEntry(p poetryPackage) pkg.PythonPoetryLockEntry {\n\treturn pkg.PythonPoetryLockEntry{\n\t\tIndex:        extractIndex(p),\n\t\tDependencies: extractPoetryDependencies(p),\n\t\tExtras:       extractPoetryExtras(p),\n\t}\n}\n\nfunc extractIndex(p poetryPackage) string {\n\tif p.Source.URL != \"\" {\n\t\treturn p.Source.URL\n\t}\n\t// https://python-poetry.org/docs/repositories/\n\treturn \"https://pypi.org/simple\"\n}\n\nfunc extractPoetryDependencies(p poetryPackage) []pkg.PythonPoetryLockDependencyEntry {\n\tvar deps []pkg.PythonPoetryLockDependencyEntry\n\tfor name, dependencies := range p.Dependencies {\n\t\tfor _, d := range dependencies {\n\t\t\tdeps = append(deps, pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\tName:    name,\n\t\t\t\tVersion: d.Version,\n\t\t\t\tExtras:  d.Extras,\n\t\t\t\tMarkers: d.Markers,\n\t\t\t})\n\t\t}\n\t}\n\tsort.Slice(deps, func(i, j int) bool {\n\t\treturn deps[i].Name < deps[j].Name\n\t})\n\treturn deps\n}\n\nfunc extractPoetryExtras(p poetryPackage) []pkg.PythonPoetryLockExtraEntry {\n\tvar extras []pkg.PythonPoetryLockExtraEntry\n\tfor name, deps := range p.Extras {\n\t\textras = append(extras, pkg.PythonPoetryLockExtraEntry{\n\t\t\tName:         name,\n\t\t\tDependencies: deps,\n\t\t})\n\t}\n\tsort.Slice(extras, func(i, j int) bool {\n\t\treturn extras[i].Name < extras[j].Name\n\t})\n\treturn extras\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_poetry_lock_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePoetryLock(t *testing.T) {\n\tfixture := \"testdata/poetry/dev-deps/poetry.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"added-value\",\n\t\t\tVersion:   \"0.14.2\",\n\t\t\tPURL:      \"pkg:pypi/added-value@0.14.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\tIndex: \"https://test.pypi.org/simple\",\n\t\t\t\tDependencies: []pkg.PythonPoetryLockDependencyEntry{\n\t\t\t\t\t{Name: \"docutils\", Version: \"*\"},\n\t\t\t\t\t{Name: \"msal\", Version: \">=0.4.1,<2.0.0\"},\n\t\t\t\t\t{Name: \"natsort\", Version: \"*\"},\n\t\t\t\t\t{Name: \"packaging\", Version: \"*\"},\n\t\t\t\t\t{Name: \"portalocker\", Version: \">=1.0,<3\", Markers: `platform_system != \"Windows\"`},\n\t\t\t\t\t{Name: \"portalocker\", Version: \">=1.6,<3\", Markers: `platform_system == \"Windows\"`},\n\t\t\t\t\t{Name: \"six\", Version: \"*\"},\n\t\t\t\t\t{Name: \"sphinx\", Version: \"*\"},\n\t\t\t\t},\n\t\t\t\tExtras: []pkg.PythonPoetryLockExtraEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:         \"deploy\",\n\t\t\t\t\t\tDependencies: []string{\"bumpversion\", \"twine\", \"wheel\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:         \"docs\",\n\t\t\t\t\t\tDependencies: []string{\"sphinx\", \"sphinx-rtd-theme\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:         \"test\",\n\t\t\t\t\t\tDependencies: []string{\"pytest\", \"pytest-cov\", \"coveralls\", \"beautifulsoup4\", \"hypothesis\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"alabaster\",\n\t\t\tVersion:   \"0.7.12\",\n\t\t\tPURL:      \"pkg:pypi/alabaster@0.7.12\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata:  pkg.PythonPoetryLockEntry{Index: \"https://pypi.org/simple\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"appnope\",\n\t\t\tVersion:   \"0.1.0\",\n\t\t\tPURL:      \"pkg:pypi/appnope@0.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata:  pkg.PythonPoetryLockEntry{Index: \"https://pypi.org/simple\"},\n\t\t},\n\t\t{\n\t\t\tName:      \"asciitree\",\n\t\t\tVersion:   \"0.3.3\",\n\t\t\tPURL:      \"pkg:pypi/asciitree@0.3.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata:  pkg.PythonPoetryLockEntry{Index: \"https://pypi.org/simple\"},\n\t\t},\n\t}\n\n\tvar expectedRelationships []artifact.Relationship\n\n\tpoetryLockParser := newPoetryLockParser(DefaultCatalogerConfig())\n\tpkgtest.TestFileParser(t, fixture, poetryLockParser.parsePoetryLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePoetryLockWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/poetry.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonPoetryLockEntry{\n\t\t\t\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\tpoetryLockParser := newPoetryLockParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, poetryLockParser.parsePoetryLock, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\nfunc Test_corruptPoetryLock(t *testing.T) {\n\tpoetryLockParser := newPoetryLockParser(DefaultCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/poetry.lock\").\n\t\tWithError().\n\t\tTestParser(t, poetryLockParser.parsePoetryLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_requirements.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\t\"unicode\"\n\n\tpep440 \"github.com/aquasecurity/go-pep440-version\"\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst (\n\t// given the example requirement:\n\t//    requests[security] == 2.8.* ; python_version < \"2.7\" and sys_platform == \"linux\"  \\\n\t//      --hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 \\\n\t//      --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65  # some comment\n\n\t// namePattern matches: requests[security]\n\tnamePattern = `(?P<name>\\w[\\w\\[\\],\\s-_\\.]+)`\n\n\t// versionConstraintPattern matches: == 2.8.*\n\tversionConstraintPattern = `(?P<versionConstraint>([^\\S\\r\\n]*[~=>!<]+\\s*[0-9a-zA-Z.*]+[^\\S\\r\\n]*,?)+)?(@[^\\S\\r\\n]*(?P<url>[^;]*))?`\n\n\t// markersPattern matches: python_version < \"2.7\" and sys_platform == \"linux\"\n\tmarkersPattern = `(;(?P<markers>.*))?`\n\n\t// hashesPattern matches: --hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65\n\thashesPattern = `(?P<hashes>([^\\S\\r\\n]*--hash=[a-zA-Z0-9:]+)+)?`\n\n\t// whiteSpaceNoNewlinePattern matches: (any whitespace character except for \\r and \\n)\n\twhiteSpaceNoNewlinePattern = `[^\\S\\r\\n]*`\n)\n\nvar requirementPattern = regexp.MustCompile(\n\t`^` +\n\t\twhiteSpaceNoNewlinePattern +\n\t\tnamePattern +\n\t\twhiteSpaceNoNewlinePattern +\n\t\tversionConstraintPattern +\n\t\tmarkersPattern +\n\t\thashesPattern,\n)\n\ntype unprocessedRequirement struct {\n\tName              string `mapstructure:\"name\"`\n\tVersionConstraint string `mapstructure:\"versionConstraint\"`\n\tMarkers           string `mapstructure:\"markers\"`\n\tURL               string `mapstructure:\"url\"`\n\tHashes            string `mapstructure:\"hashes\"`\n}\n\nfunc newRequirement(raw string) *unprocessedRequirement {\n\tvar r unprocessedRequirement\n\n\tvalues := internal.MatchNamedCaptureGroups(requirementPattern, raw)\n\n\tif err := mapstructure.Decode(values, &r); err != nil {\n\t\treturn nil\n\t}\n\n\tr.Name = strings.TrimSpace(r.Name)\n\tr.VersionConstraint = strings.TrimSpace(r.VersionConstraint)\n\tr.Markers = strings.TrimSpace(r.Markers)\n\tr.URL = strings.TrimSpace(r.URL)\n\tr.Hashes = strings.TrimSpace(r.Hashes)\n\n\tif r.Name == \"\" {\n\t\treturn nil\n\t}\n\n\treturn &r\n}\n\ntype requirementsParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newRequirementsParser(cfg CatalogerConfig) requirementsParser {\n\treturn requirementsParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// parseRequirementsTxt takes a Python requirements.txt file, returning all Python packages that are locked to a\n// specific version.\nfunc (rp requirementsParser) parseRequirementsTxt(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar errs error\n\tvar packages []pkg.Package\n\n\tscanner := bufio.NewScanner(reader)\n\tvar lastLine string\n\tfor scanner.Scan() {\n\t\tline := trimRequirementsTxtLine(scanner.Text())\n\n\t\tif lastLine != \"\" {\n\t\t\tline = lastLine + line\n\t\t\tlastLine = \"\"\n\t\t}\n\n\t\t// remove line continuations... smashes the file into a single line\n\t\tif strings.HasSuffix(line, \"\\\\\") {\n\t\t\t// this line is a continuation of the previous line\n\t\t\tlastLine += strings.TrimSuffix(line, \"\\\\\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif line == \"\" {\n\t\t\t// nothing to parse on this line\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.HasPrefix(line, \"-e\") {\n\t\t\t// editable packages aren't parsed (yet)\n\t\t\tcontinue\n\t\t}\n\n\t\treq := newRequirement(line)\n\t\tif req == nil {\n\t\t\tlog.WithFields(\"path\", reader.RealPath, \"line\", line).Debug(\"unable to parse requirements.txt line\")\n\t\t\terrs = unknown.Appendf(errs, reader, \"unable to parse requirements.txt line: %q\", line)\n\t\t\tcontinue\n\t\t}\n\n\t\tname := removeExtras(req.Name)\n\t\tversion := parseVersion(req.VersionConstraint, rp.cfg.GuessUnpinnedRequirements)\n\n\t\tif version == \"\" {\n\t\t\tlog.WithFields(\"path\", reader.RealPath, \"line\", line).Trace(\"unable to determine package version in requirements.txt line\")\n\t\t\terrs = unknown.Appendf(errs, reader, \"unable to determine package version in requirements.txt line: %q\", line)\n\t\t\tcontinue\n\t\t}\n\n\t\tpackages = append(\n\t\t\tpackages,\n\t\t\tnewPackageForRequirementsWithMetadata(\n\t\t\t\tctx,\n\t\t\t\trp.licenseResolver,\n\t\t\t\tname,\n\t\t\t\tversion,\n\t\t\t\tpkg.PythonRequirementsEntry{\n\t\t\t\t\tName:              name,\n\t\t\t\t\tExtras:            parseExtras(req.Name),\n\t\t\t\t\tVersionConstraint: req.VersionConstraint,\n\t\t\t\t\tURL:               parseURL(req.URL),\n\t\t\t\t\tMarkers:           req.Markers,\n\t\t\t\t},\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse python requirements file: %w\", err)\n\t}\n\n\treturn packages, nil, unknown.Join(errs, unknown.IfEmptyf(packages, \"unable to determine packages\"))\n}\n\nfunc parseVersion(version string, guessFromConstraint bool) string {\n\tif isPinnedConstraint(version) {\n\t\treturn strings.TrimSpace(strings.ReplaceAll(version, \"==\", \"\"))\n\t}\n\n\tif guessFromConstraint {\n\t\treturn guessVersion(version)\n\t}\n\n\treturn \"\"\n}\n\nfunc isPinnedConstraint(version string) bool {\n\treturn strings.Contains(version, \"==\") && !strings.ContainsAny(version, \"*,<>!\")\n}\n\nfunc guessVersion(constraint string) string {\n\t// handle \"2.8.*\" -> \"2.8.0\"\n\tconstraint = strings.ReplaceAll(constraint, \"*\", \"0\")\n\tif isPinnedConstraint(constraint) {\n\t\treturn strings.TrimSpace(strings.ReplaceAll(constraint, \"==\", \"\"))\n\t}\n\n\tconstraints := strings.Split(constraint, \",\")\n\tfilteredVersions := map[string]struct{}{}\n\tfor _, part := range constraints {\n\t\tif strings.Contains(part, \"!=\") {\n\t\t\tparts := strings.Split(part, \"!=\")\n\t\t\tfilteredVersions[strings.TrimSpace(parts[1])] = struct{}{}\n\t\t}\n\t}\n\n\tvar closestVersion *pep440.Version\n\tfor _, part := range constraints {\n\t\t// ignore any parts that do not have '=' in them, >,<,~ are not valid semver\n\t\tparts := strings.SplitAfter(part, \"=\")\n\t\tif len(parts) < 2 {\n\t\t\tcontinue\n\t\t}\n\t\tversion, err := pep440.Parse(strings.TrimSpace(parts[1]))\n\t\tif err != nil {\n\t\t\t// ignore any parts that are not valid semver\n\t\t\tcontinue\n\t\t}\n\t\tif _, ok := filteredVersions[version.String()]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.Contains(part, \"==\") {\n\t\t\tparts := strings.Split(part, \"==\")\n\t\t\treturn strings.TrimSpace(parts[1])\n\t\t}\n\n\t\tif closestVersion == nil || version.GreaterThan(*closestVersion) {\n\t\t\tclosestVersion = &version\n\t\t}\n\t}\n\tif closestVersion == nil {\n\t\treturn \"\"\n\t}\n\n\treturn closestVersion.String()\n}\n\n// trimRequirementsTxtLine removes content from the given requirements.txt line\n// that should not be considered for parsing.\nfunc trimRequirementsTxtLine(line string) string {\n\tline = strings.TrimSpace(line)\n\tline = removeTrailingComment(line)\n\n\treturn line\n}\n\n// removeTrailingComment takes a requirements.txt line and strips off comment strings.\nfunc removeTrailingComment(line string) string {\n\tparts := strings.SplitN(line, \"#\", 2)\n\tif len(parts) < 2 {\n\t\t// there aren't any comments\n\n\t\treturn line\n\t}\n\n\treturn parts[0]\n}\n\nfunc removeExtras(packageName string) string {\n\tstart := strings.Index(packageName, \"[\")\n\tif start == -1 {\n\t\treturn packageName\n\t}\n\n\treturn strings.TrimSpace(packageName[:start])\n}\n\nfunc parseExtras(packageName string) []string {\n\tvar extras []string\n\n\tstart := strings.Index(packageName, \"[\")\n\tstop := strings.Index(packageName, \"]\")\n\tif start == -1 || stop == -1 {\n\t\treturn extras\n\t}\n\n\textraString := packageName[start+1 : stop]\n\tfor _, extra := range strings.Split(extraString, \",\") {\n\t\textras = append(extras, strings.TrimSpace(extra))\n\t}\n\treturn extras\n}\n\nfunc parseURL(line string) string {\n\tparts := strings.Split(line, \"@\")\n\n\tif len(parts) > 1 {\n\t\tdesiredIndex := -1\n\n\t\tfor index, part := range parts {\n\t\t\tpart := strings.TrimFunc(part, func(r rune) bool {\n\t\t\t\treturn !unicode.IsLetter(r) && !unicode.IsNumber(r)\n\t\t\t})\n\n\t\t\tif strings.HasPrefix(part, \"git\") {\n\t\t\t\tdesiredIndex = index\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif desiredIndex != -1 {\n\t\t\treturn strings.TrimSpace(strings.Join(parts[desiredIndex:], \"@\"))\n\t\t}\n\t}\n\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_requirements_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseRequirementsTxt(t *testing.T) {\n\tfixture := \"testdata/requires/requirements.txt\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\tpinnedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"flask\",\n\t\t\tVersion:   \"4.0.0\",\n\t\t\tPURL:      \"pkg:pypi/flask@4.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"flask\",\n\t\t\t\tVersionConstraint: \"== 4.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"foo\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:pypi/foo@1.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"foo\",\n\t\t\t\tVersionConstraint: \"== 1.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"someproject\",\n\t\t\tVersion:   \"5.4\",\n\t\t\tPURL:      \"pkg:pypi/someproject@5.4\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"SomeProject\",\n\t\t\t\tVersionConstraint: \"==5.4\",\n\t\t\t\tMarkers:           \"python_version < '3.8'\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"dots-allowed\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:pypi/dots-allowed@1.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"dots-._allowed\",\n\t\t\t\tVersionConstraint: \"== 1.0.0\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"argh\",\n\t\t\tVersion:   \"0.26.2\",\n\t\t\tPURL:      \"pkg:pypi/argh@0.26.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"argh\",\n\t\t\t\tVersionConstraint: \"==0.26.2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"argh\",\n\t\t\tVersion:   \"0.26.3\",\n\t\t\tPURL:      \"pkg:pypi/argh@0.26.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"argh\",\n\t\t\t\tVersionConstraint: \"==0.26.3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"celery\",\n\t\t\tVersion:   \"4.4.7\",\n\t\t\tPURL:      \"pkg:pypi/celery@4.4.7\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"celery\",\n\t\t\t\tExtras:            []string{\"redis\", \"pytest\"},\n\t\t\t\tVersionConstraint: \"== 4.4.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"githubsampleproject\",\n\t\t\tVersion:   \"3.7.1\",\n\t\t\tPURL:      \"pkg:pypi/githubsampleproject@3.7.1\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"GithubSampleProject\",\n\t\t\t\tVersionConstraint: \"== 3.7.1\",\n\t\t\t\tURL:               \"git+https://github.com/owner/repo@releases/tag/v3.7.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"friendly-bard\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:pypi/friendly-bard@1.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Python,\n\t\t\tType:      pkg.PythonPkg,\n\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\tName:              \"FrIeNdLy-_-bArD\",\n\t\t\t\tVersionConstraint: \"== 1.0.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\tvar testCases = []struct {\n\t\tname                  string\n\t\tfixture               string\n\t\tcfg                   CatalogerConfig\n\t\texpectedPkgs          []pkg.Package\n\t\texpectedRelationships []artifact.Relationship\n\t}{\n\t\t{\n\t\t\tname:    \"pinned dependencies only\",\n\t\t\tfixture: fixture,\n\t\t\tcfg: CatalogerConfig{\n\t\t\t\tGuessUnpinnedRequirements: false,\n\t\t\t},\n\t\t\texpectedPkgs: pinnedPkgs,\n\t\t},\n\t\t{\n\t\t\tname:    \"guess unpinned requirements (lowest version)\",\n\t\t\tfixture: fixture,\n\t\t\tcfg: CatalogerConfig{\n\t\t\t\tGuessUnpinnedRequirements: true,\n\t\t\t},\n\t\t\texpectedPkgs: append([]pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"mopidy-dirble\",\n\t\t\t\t\tVersion:   \"1.1\",\n\t\t\t\t\tPURL:      \"pkg:pypi/mopidy-dirble@1.1\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"Mopidy-Dirble\",\n\t\t\t\t\t\tVersionConstraint: \"~= 1.1\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"sqlalchemy\",\n\t\t\t\t\tVersion:   \"2.0.0\",\n\t\t\t\t\tPURL:      \"pkg:pypi/sqlalchemy@2.0.0\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"sqlalchemy\",\n\t\t\t\t\t\tVersionConstraint: \">= 1.0.0, <= 2.0.0, != 3.0.0, <= 3.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"bar\",\n\t\t\t\t\tVersion:   \"2.0.0\",\n\t\t\t\t\tPURL:      \"pkg:pypi/bar@2.0.0\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"bar\",\n\t\t\t\t\t\tVersionConstraint: \">= 1.0.0, <= 2.0.0, != 3.0.0, <= 3.0.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"numpy\",\n\t\t\t\t\tVersion:   \"3.4.1\",\n\t\t\t\t\tPURL:      \"pkg:pypi/numpy@3.4.1\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"numpy\",\n\t\t\t\t\t\tVersionConstraint: \">= 3.4.1\",\n\t\t\t\t\t\tMarkers:           `sys_platform == 'win32'`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"requests\",\n\t\t\t\t\tVersion:   \"2.8.0\",\n\t\t\t\t\tPURL:      \"pkg:pypi/requests@2.8.0\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"requests\",\n\t\t\t\t\t\tExtras:            []string{\"security\"},\n\t\t\t\t\t\tVersionConstraint: \"== 2.8.*\",\n\t\t\t\t\t\tMarkers:           `python_version < \"2.7\" and sys_platform == \"linux\"`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}, pinnedPkgs...),\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tparser := newRequirementsParser(tc.cfg)\n\t\t\tpkgtest.TestFileParser(t, tc.fixture, parser.parseRequirementsTxt, tc.expectedPkgs, tc.expectedRelationships)\n\t\t})\n\t}\n}\n\nfunc TestParseRequirementsTxtWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/requirements.txt\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonRequirementsEntry{\n\t\t\t\t\t\tName:              \"certifi\",\n\t\t\t\t\t\tVersionConstraint: \"== 2025.10.5\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\trequirementsParser := newRequirementsParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, requirementsParser.parseRequirementsTxt, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\n\nfunc Test_newRequirement(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\traw  string\n\t\twant *unprocessedRequirement\n\t}{\n\t\t{\n\t\t\tname: \"simple\",\n\t\t\traw:  \"requests==2.8\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"requests\",\n\t\t\t\tVersionConstraint: \"==2.8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"comment + constraint\",\n\t\t\traw:  \"Mopidy-Dirble ~= 1.1 # Compatible release. Same as >= 1.1, == 1.*\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"Mopidy-Dirble\",\n\t\t\t\tVersionConstraint: \"~= 1.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"hashes\",\n\t\t\traw:  \"argh==0.26.3 --hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"argh\",\n\t\t\t\tVersionConstraint: \"==0.26.3\",\n\t\t\t\tHashes:            \"--hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"extras\",\n\t\t\traw:  \"celery[redis, pytest] == 4.4.7 # should remove [redis, pytest]\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"celery[redis, pytest]\",\n\t\t\t\tVersionConstraint: \"== 4.4.7\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"url\",\n\t\t\traw:  \"GithubSampleProject == 3.7.1 @ git+https://github.com/owner/repo@releases/tag/v3.7.1\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"GithubSampleProject\",\n\t\t\t\tVersionConstraint: \"== 3.7.1\",\n\t\t\t\tURL:               \"git+https://github.com/owner/repo@releases/tag/v3.7.1\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"markers\",\n\t\t\traw:  \"numpy >= 3.4.1 ; sys_platform == 'win32'\",\n\t\t\twant: &unprocessedRequirement{\n\t\t\t\tName:              \"numpy\",\n\t\t\t\tVersionConstraint: \">= 3.4.1\",\n\t\t\t\tMarkers:           \"sys_platform == 'win32'\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, newRequirement(tt.raw))\n\t\t})\n\t}\n}\n\n// checkout https://www.darius.page/pipdev/ for help here! (github.com/nok/pipdev)\nfunc Test_parseVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tversion string\n\t\tguess   bool\n\t\twant    string\n\t}{\n\t\t{\n\t\t\tname:    \"exact\",\n\t\t\tversion: \"1.0.0\",\n\t\t\twant:    \"\", // we can only parse constraints, not assume that a single version is a pin\n\t\t},\n\t\t{\n\t\t\tname:    \"exact constraint\",\n\t\t\tversion: \" == 1.0.0 \",\n\t\t\twant:    \"1.0.0\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, simple constraint\",\n\t\t\tversion: \" >= 1.0.0 \",\n\t\t\tguess:   true,\n\t\t\twant:    \"1.0.0\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, compound constraint\",\n\t\t\tversion: \"  < 2.0.0,  >= 1.0.0, != 1.1.0 \",\n\t\t\tguess:   true,\n\t\t\twant:    \"1.0.0\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, handle asterisk\",\n\t\t\tversion: \"==2.8.*\",\n\t\t\tguess:   true,\n\t\t\twant:    \"2.8.0\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, handle exceptions\",\n\t\t\tversion: \" !=4.0.2,!=4.1.0,!=4.2.0,>=4.0.1,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0\",\n\t\t\tguess:   true,\n\t\t\twant:    \"4.0.1\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, compatible version constraint\",\n\t\t\tversion: \"~=0.6.10\", // equates to >=0.6.10, ==0.6.*\n\t\t\tguess:   true,\n\t\t\twant:    \"0.6.10\",\n\t\t},\n\t\t{\n\t\t\tname:    \"resolve lowest, with character in version\",\n\t\t\tversion: \"~=1.2b,<=1.3a,!=1.1,!=1.2\",\n\t\t\tguess:   true,\n\t\t\twant:    \"1.3a0\", // note: 1.3a == 1.3a0\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, parseVersion(tt.version, tt.guess))\n\t\t})\n\t}\n}\n\nfunc Test_corruptRequirementsTxt(t *testing.T) {\n\trp := newRequirementsParser(DefaultCatalogerConfig())\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/requirements.txt\").\n\t\tWithError().\n\t\tTestParser(t, rp.parseRequirementsTxt)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_setup.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype setupFileParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newSetupFileParser(cfg CatalogerConfig) setupFileParser {\n\treturn setupFileParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// match examples:\n//\n//\t'pathlib3==2.2.0;python_version<\"3.6\"'  --> match(name=pathlib3 version=2.2.0)\n//\t \"mypy==v0.770\",                        --> match(name=mypy version=v0.770)\n//\t\" mypy2 == v0.770\", ' mypy3== v0.770',  --> match(name=mypy2 version=v0.770), match(name=mypy3, version=v0.770)\nvar pinnedDependency = regexp.MustCompile(`['\"]\\W?(\\w+\\W?==\\W?[\\w.]*)`)\nvar unquotedPinnedDependency = regexp.MustCompile(`^\\s*(\\w+)\\s*==\\s*([\\w\\.\\-]+)`)\n\nfunc (sp setupFileParser) parseSetupFile(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar packages []pkg.Package\n\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tline = strings.TrimRight(line, \"\\n\")\n\n\t\tpackages = sp.processQuotedDependencies(ctx, line, reader, packages)\n\t\tpackages = sp.processUnquotedDependency(ctx, line, reader, packages)\n\t}\n\n\treturn packages, nil, nil\n}\n\nfunc (sp setupFileParser) processQuotedDependencies(ctx context.Context, line string, reader file.LocationReadCloser, packages []pkg.Package) []pkg.Package {\n\tfor _, match := range pinnedDependency.FindAllString(line, -1) {\n\t\tif p, ok := sp.parseQuotedDependency(ctx, match, line, reader); ok {\n\t\t\tpackages = append(packages, p)\n\t\t}\n\t}\n\treturn packages\n}\n\nfunc (sp setupFileParser) parseQuotedDependency(ctx context.Context, match, line string, reader file.LocationReadCloser) (pkg.Package, bool) {\n\tparts := strings.Split(match, \"==\")\n\tif len(parts) != 2 {\n\t\treturn pkg.Package{}, false\n\t}\n\n\tname := cleanDependencyString(parts[0])\n\tversion := cleanDependencyString(parts[len(parts)-1])\n\n\treturn sp.validateAndCreatePackage(ctx, name, version, line, reader)\n}\n\n// processUnquotedDependency extracts and processes an unquoted dependency from a line\nfunc (sp setupFileParser) processUnquotedDependency(ctx context.Context, line string, reader file.LocationReadCloser, packages []pkg.Package) []pkg.Package {\n\tmatches := unquotedPinnedDependency.FindStringSubmatch(line)\n\tif len(matches) != 3 {\n\t\treturn packages\n\t}\n\n\tname := strings.TrimSpace(matches[1])\n\tversion := strings.TrimSpace(matches[2])\n\n\tif p, ok := sp.validateAndCreatePackage(ctx, name, version, line, reader); ok {\n\t\tif !isDuplicatePackage(p, packages) {\n\t\t\tpackages = append(packages, p)\n\t\t}\n\t}\n\n\treturn packages\n}\n\nfunc cleanDependencyString(s string) string {\n\ts = strings.Trim(s, \"'\\\"\")\n\ts = strings.TrimSpace(s)\n\ts = strings.Trim(s, \"'\\\"\")\n\treturn s\n}\n\nfunc (sp setupFileParser) validateAndCreatePackage(ctx context.Context, name, version, line string, reader file.LocationReadCloser) (pkg.Package, bool) {\n\tif hasTemplateDirective(name) || hasTemplateDirective(version) {\n\t\t// this can happen in more dynamic setup.py where there is templating\n\t\treturn pkg.Package{}, false\n\t}\n\n\tif name == \"\" || version == \"\" {\n\t\tlog.WithFields(\"path\", reader.RealPath).Debugf(\"unable to parse package in setup.py line: %q\", line)\n\t\treturn pkg.Package{}, false\n\t}\n\n\tp := newPackageForIndex(\n\t\tctx,\n\t\tsp.licenseResolver,\n\t\tname,\n\t\tversion,\n\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t)\n\n\treturn p, true\n}\n\nfunc isDuplicatePackage(p pkg.Package, packages []pkg.Package) bool {\n\tfor _, existing := range packages {\n\t\tif existing.Name == p.Name && existing.Version == p.Version {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc hasTemplateDirective(s string) bool {\n\treturn strings.Contains(s, `%s`) || strings.Contains(s, `{`) || strings.Contains(s, `}`)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_setup_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseSetup(t *testing.T) {\n\ttests := []struct {\n\t\tfixture  string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/setup/setup.py\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"pathlib3\",\n\t\t\t\t\tVersion:  \"2.2.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pathlib3@2.2.0\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mypy\",\n\t\t\t\t\tVersion:  \"v0.770\",\n\t\t\t\t\tPURL:     \"pkg:pypi/mypy@v0.770\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mypy1\",\n\t\t\t\t\tVersion:  \"v0.770\",\n\t\t\t\t\tPURL:     \"pkg:pypi/mypy1@v0.770\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mypy2\",\n\t\t\t\t\tVersion:  \"v0.770\",\n\t\t\t\t\tPURL:     \"pkg:pypi/mypy2@v0.770\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mypy3\",\n\t\t\t\t\tVersion:  \"v0.770\",\n\t\t\t\t\tPURL:     \"pkg:pypi/mypy3@v0.770\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// regression... ensure we clean packages names and don't find \"%s\" as the name\n\t\t\tfixture:  \"testdata/setup/dynamic-setup.py\",\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/setup/multiline-split-setup.py\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"black\",\n\t\t\t\t\tVersion:  \"23.12.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/black@23.12.1\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"cairosvg\",\n\t\t\t\t\tVersion:  \"2.7.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/cairosvg@2.7.1\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"celery\",\n\t\t\t\t\tVersion:  \"5.3.4\",\n\t\t\t\t\tPURL:     \"pkg:pypi/celery@5.3.4\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"django\",\n\t\t\t\t\tVersion:  \"4.2.23\",\n\t\t\t\t\tPURL:     \"pkg:pypi/django@4.2.23\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"mypy\",\n\t\t\t\t\tVersion:  \"1.7.1\",\n\t\t\t\t\tPURL:     \"pkg:pypi/mypy@1.7.1\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"pillow\",\n\t\t\t\t\tVersion:  \"11.0.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pillow@11.0.0\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"pytest\",\n\t\t\t\t\tVersion:  \"7.4.3\",\n\t\t\t\t\tPURL:     \"pkg:pypi/pytest@7.4.3\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"requests\",\n\t\t\t\t\tVersion:  \"2.31.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/requests@2.31.0\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Test mixed quoted and unquoted dependencies - ensure no duplicates\n\t\t\tfixture: \"testdata/setup/mixed-format-setup.py\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:     \"requests\",\n\t\t\t\t\tVersion:  \"2.31.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/requests@2.31.0\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"django\",\n\t\t\t\t\tVersion:  \"4.2.23\",\n\t\t\t\t\tPURL:     \"pkg:pypi/django@4.2.23\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:     \"flask\",\n\t\t\t\t\tVersion:  \"3.0.0\",\n\t\t\t\t\tPURL:     \"pkg:pypi/flask@3.0.0\",\n\t\t\t\t\tLanguage: pkg.Python,\n\t\t\t\t\tType:     pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.fixture, func(t *testing.T) {\n\t\t\tlocations := file.NewLocationSet(file.NewLocation(tt.fixture))\n\t\t\tfor i := range tt.expected {\n\t\t\t\ttt.expected[i].Locations = locations\n\t\t\t}\n\t\t\tvar expectedRelationships []artifact.Relationship\n\n\t\t\tsetupFileParser := newSetupFileParser(DefaultCatalogerConfig())\n\t\t\tpkgtest.TestFileParser(t, tt.fixture, setupFileParser.parseSetupFile, tt.expected, expectedRelationships)\n\t\t})\n\t}\n\n}\n\nfunc TestParseSetupFileWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/setup.py\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\tsetupFileParser := newSetupFileParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, setupFileParser.parseSetupFile, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\nfunc Test_hasTemplateDirective(t *testing.T) {\n\n\ttests := []struct {\n\t\tinput string\n\t\twant  bool\n\t}{\n\t\t{\n\t\t\tinput: \"foo\",\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tinput: \"foo %s\",\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tinput: \"%s\",\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tinput: \"{f_string}\",\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tinput: \"{}\", // .format() directive\n\t\t\twant:  true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.input, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, hasTemplateDirective(tt.input))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_uv_lock.go",
    "content": "package python\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/BurntSushi/toml\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// We use this to check for the version before we try to parse.\n// The TOML library handily ignores everything that isn't mentioend in the struct.\ntype uvLockFileVersion struct {\n\tVersion  int `toml:\"version\"`\n\tRevision int `toml:\"revision\"`\n}\n\ntype uvLockFile struct {\n\tVersion        int         `toml:\"version\"`\n\tRevision       int         `toml:\"revision\"`\n\tRequiresPython string      `toml:\"requires-python\"`\n\tPackages       []uvPackage `toml:\"package\"`\n}\n\ntype uvPackage struct {\n\tName                 string                    `toml:\"name\"`\n\tVersion              string                    `toml:\"version\"`\n\tSource               map[string]string         `toml:\"source\"` // Possible key values for Source are: registry, git, direct, path, directory, editable, virtual\n\tDependencies         uvDependencies            `toml:\"dependencies\"`\n\tDevDependencies      map[string]uvDependencies `toml:\"dev-dependencies\"`\n\tOptionalDependencies map[string]uvDependencies `toml:\"optional-dependencies\"`\n\tSdist                uvDistribution            `toml:\"sdist\"`\n\tWheels               []uvDistribution          `toml:\"wheels\"`\n\tMetadata             uvMetadata                `toml:\"metadata\"`\n}\n\ntype uvDependencies []struct {\n\tName    string   `toml:\"name\"`\n\tExtras  []string `toml:\"extra\"`\n\tMarkers string   `toml:\"marker\"`\n}\n\ntype uvDistribution struct {\n\tURL  string `toml:\"url\"`\n\tHash string `toml:\"hash\"`\n\tSize int    `toml:\"size\"`\n}\n\ntype uvRequiresDist []struct {\n\tName      string   `toml:\"name\"`\n\tMarkers   string   `toml:\"marker\"`\n\tExtras    []string `toml:\"extras\"`\n\tSpecifier string   `toml:\"specifier\"`\n}\n\ntype uvMetadata struct {\n\tRequiresDist   uvRequiresDist `toml:\"requires-dist\"`\n\tProvidesExtras []string       `toml:\"provides-extras\"`\n}\n\ntype uvLockParser struct {\n\tcfg             CatalogerConfig\n\tlicenseResolver pythonLicenseResolver\n}\n\nfunc newUvLockParser(cfg CatalogerConfig) uvLockParser {\n\treturn uvLockParser{\n\t\tcfg:             cfg,\n\t\tlicenseResolver: newPythonLicenseResolver(cfg),\n\t}\n}\n\n// parseUvLock is a parser function for uv.lock contents, returning all the pakcages discovered\nfunc (ulp uvLockParser) parseUvLock(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpkgs, err := ulp.uvLockPackages(ctx, reader)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn pkgs, dependency.Resolve(uvLockDependencySpecifier, pkgs), err\n}\n\nfunc extractUvIndex(p uvPackage) string {\n\t// This is a map, but there should only be one key, value pair\n\tvar rvalue string\n\tfor _, value := range p.Source {\n\t\trvalue = value\n\t}\n\n\treturn rvalue\n}\n\nfunc extractUvDependencies(p uvPackage) []pkg.PythonUvLockDependencyEntry {\n\tvar deps []pkg.PythonUvLockDependencyEntry\n\tfor _, d := range p.Dependencies {\n\t\tdeps = append(deps, pkg.PythonUvLockDependencyEntry{\n\t\t\tName:    d.Name,\n\t\t\tExtras:  d.Extras,\n\t\t\tMarkers: d.Markers,\n\t\t})\n\t}\n\tsort.Slice(deps, func(i, j int) bool {\n\t\treturn deps[i].Name < deps[j].Name\n\t})\n\treturn deps\n}\n\nfunc extractUvExtras(p uvPackage) []pkg.PythonUvLockExtraEntry {\n\tvar extras []pkg.PythonUvLockExtraEntry\n\tfor name, depsStruct := range p.OptionalDependencies {\n\t\tvar extraDeps []string\n\t\tfor _, deps := range depsStruct {\n\t\t\textraDeps = append(extraDeps, deps.Name)\n\t\t}\n\t\textras = append(extras, pkg.PythonUvLockExtraEntry{\n\t\t\tName:         name,\n\t\t\tDependencies: extraDeps,\n\t\t})\n\t}\n\treturn extras\n}\n\nfunc newPythonUvLockEntry(p uvPackage) pkg.PythonUvLockEntry {\n\treturn pkg.PythonUvLockEntry{\n\t\tIndex:        extractUvIndex(p),\n\t\tDependencies: extractUvDependencies(p),\n\t\tExtras:       extractUvExtras(p),\n\t}\n}\n\nfunc (ulp uvLockParser) uvLockPackages(ctx context.Context, reader file.LocationReadCloser) ([]pkg.Package, error) {\n\tvar parsedLockFileVersion uvLockFileVersion\n\n\t// we cannot use the reader twice, so we read the contents first --uv.lock files tend to be small enough\n\tcontents, err := io.ReadAll(reader) //nolint:gocritic // multi-pass parse requires []byte\n\tif err != nil {\n\t\treturn nil, unknown.New(reader.Location, fmt.Errorf(\"failed to read uv lock file: %w\", err))\n\t}\n\n\t_, err = toml.NewDecoder(bytes.NewReader(contents)).Decode(&parsedLockFileVersion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to read uv lock version: %w\", err)\n\t}\n\n\t// We will need to add some logic to parse and branch on different\n\t// lock file versions should they arise, but this gets us\n\t// started down this road for now.\n\tif parsedLockFileVersion.Version > 1 {\n\t\treturn nil, fmt.Errorf(\"could not parse uv lock file version %d\", parsedLockFileVersion.Version)\n\t}\n\n\tvar parsedLockFile uvLockFile\n\t_, err = toml.NewDecoder(bytes.NewReader(contents)).Decode(&parsedLockFile)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse uv lock packages: %w\", err)\n\t}\n\n\t// The uv lock file doesn't store the dependency version in the dependency structure.\n\t// Thus, we need a name -> version map for invoking extractUvDependencies.\n\t// We then, of course, have to pass it down the call stack.\n\tvar pkgVerMap = make(map[string]string)\n\tfor _, p := range parsedLockFile.Packages {\n\t\tpkgVerMap[p.Name] = p.Version\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, p := range parsedLockFile.Packages {\n\t\tpkgs = append(pkgs,\n\t\t\tnewPackageForIndexWithMetadata(\n\t\t\t\tctx,\n\t\t\t\tulp.licenseResolver,\n\t\t\t\tp.Name,\n\t\t\t\tp.Version,\n\t\t\t\tnewPythonUvLockEntry(p),\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc isDependencyForUvExtra(dep pkg.PythonUvLockDependencyEntry) bool {\n\treturn strings.Contains(dep.Markers, \"extra ==\")\n}\n\n// This is identical to poetryLockDependencySpecifier since it operates on identical\n// data structures. Keeping it separate for now since it's always possible for data\n// structures to change down the line.\n// It *is* possible we may be able to merge the Uv and Poetry data structures\nfunc uvLockDependencySpecifier(p pkg.Package) dependency.Specification { //nolint:dupl // this is very similar to the poetry lock dependency specifier, but should remain separate\n\tmeta, ok := p.Metadata.(pkg.PythonUvLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract UV lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{packageRef(p.Name, \"\")}\n\n\tvar requires []string\n\n\tfor _, dep := range meta.Dependencies {\n\t\tif isDependencyForUvExtra(dep) {\n\t\t\tcontinue\n\t\t}\n\n\t\trequires = append(requires, packageRef(dep.Name, \"\"))\n\n\t\tfor _, extra := range dep.Extras {\n\t\t\trequires = append(requires, packageRef(dep.Name, extra))\n\t\t}\n\t}\n\n\tvar variants []dependency.ProvidesRequires\n\tfor _, extra := range meta.Extras {\n\t\tvariants = append(variants,\n\t\t\tdependency.ProvidesRequires{\n\t\t\t\tProvides: []string{packageRef(p.Name, extra.Name)},\n\t\t\t\tRequires: extractPackageNames(extra.Dependencies),\n\t\t\t},\n\t\t)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t\tVariants: variants,\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_uv_lock_test.go",
    "content": "package python\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseUvLock(t *testing.T) {\n\tfixture := \"testdata/uv/simple-deps/uv.lock\"\n\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\tcertifi := pkg.Package{\n\t\tName:      \"certifi\",\n\t\tVersion:   \"2025.1.31\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/certifi@2025.1.31\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  pkg.PythonUvLockEntry{Index: \"https://pypi.org/simple\"},\n\t}\n\n\tcharsetNormalizer := pkg.Package{\n\t\tName:      \"charset-normalizer\",\n\t\tVersion:   \"3.4.1\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/charset-normalizer@3.4.1\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  pkg.PythonUvLockEntry{Index: \"https://pypi.org/simple\"},\n\t}\n\n\tidna := pkg.Package{\n\t\tName:      \"idna\",\n\t\tVersion:   \"3.10\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/idna@3.10\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  pkg.PythonUvLockEntry{Index: \"https://pypi.org/simple\"},\n\t}\n\n\trequests := pkg.Package{\n\t\tName:      \"requests\",\n\t\tVersion:   \"2.32.3\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/requests@2.32.3\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata: pkg.PythonUvLockEntry{\n\t\t\tIndex: \"https://pypi.org/simple\",\n\t\t\tDependencies: []pkg.PythonUvLockDependencyEntry{\n\t\t\t\t{Name: \"certifi\"},\n\t\t\t\t{Name: \"charset-normalizer\"},\n\t\t\t\t{Name: \"idna\"},\n\t\t\t\t{Name: \"urllib3\"},\n\t\t\t},\n\t\t},\n\t}\n\n\ttestpkg := pkg.Package{\n\t\tName:      \"testpkg\",\n\t\tVersion:   \"0.1.0\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/testpkg@0.1.0\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata: pkg.PythonUvLockEntry{\n\t\t\tIndex: \".\", // virtual\n\t\t\tDependencies: []pkg.PythonUvLockDependencyEntry{\n\t\t\t\t{Name: \"requests\"},\n\t\t\t},\n\t\t},\n\t}\n\n\turllib3 := pkg.Package{\n\t\tName:      \"urllib3\",\n\t\tVersion:   \"2.3.0\",\n\t\tLocations: locations,\n\t\tPURL:      \"pkg:pypi/urllib3@2.3.0\",\n\t\tLanguage:  pkg.Python,\n\t\tType:      pkg.PythonPkg,\n\t\tMetadata:  pkg.PythonUvLockEntry{Index: \"https://pypi.org/simple\"},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\tcertifi,\n\t\tcharsetNormalizer,\n\t\tidna,\n\t\trequests,\n\t\ttestpkg,\n\t\turllib3,\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: certifi,\n\t\t\tTo:   requests,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: charsetNormalizer,\n\t\t\tTo:   requests,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: idna,\n\t\t\tTo:   requests,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: requests,\n\t\t\tTo:   testpkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: urllib3,\n\t\t\tTo:   requests,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tuvLockParser := newUvLockParser(DefaultCatalogerConfig())\n\tpkgtest.TestFileParser(t, fixture, uvLockParser.parseUvLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParseUvLockWithLicenseEnrichment(t *testing.T) {\n\tctx := context.TODO()\n\tfixture := \"testdata/pypi-remote/uv.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tmux, url, teardown := setupPypiRegistry()\n\tdefer teardown()\n\ttests := []struct {\n\t\tname             string\n\t\tfixture          string\n\t\tconfig           CatalogerConfig\n\t\trequestHandlers  []handlerPath\n\t\texpectedPackages []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:   \"search remote licenses returns the expected licenses when search is set to true\",\n\t\t\tconfig: CatalogerConfig{SearchRemoteLicenses: true},\n\t\t\trequestHandlers: []handlerPath{\n\t\t\t\t{\n\t\t\t\t\tpath:    \"/certifi/2025.10.5/json\",\n\t\t\t\t\thandler: generateMockPypiRegistryHandler(\"testdata/pypi-remote/registry_response.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPackages: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"certifi\",\n\t\t\t\t\tVersion:   \"2025.10.5\",\n\t\t\t\t\tLocations: locations,\n\t\t\t\t\tPURL:      \"pkg:pypi/certifi@2025.10.5\",\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MPL-2.0\")),\n\t\t\t\t\tLanguage:  pkg.Python,\n\t\t\t\t\tType:      pkg.PythonPkg,\n\t\t\t\t\tMetadata: pkg.PythonUvLockEntry{\n\t\t\t\t\t\tIndex:        \"https://pypi.org/simple\",\n\t\t\t\t\t\tDependencies: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t// set up the mock server\n\t\t\tfor _, handler := range tc.requestHandlers {\n\t\t\t\tmux.HandleFunc(handler.path, handler.handler)\n\t\t\t}\n\t\t\ttc.config.PypiBaseURL = url\n\t\t\tuvLockParser := newUvLockParser(tc.config)\n\t\t\tpkgtest.TestFileParser(t, fixture, uvLockParser.parseUvLock, tc.expectedPackages, nil)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_wheel_egg.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\n// parseWheelOrEgg takes the primary metadata file reference and returns the python package it represents. Contained\n// fields are governed by the PyPA core metadata specification (https://packaging.python.org/en/latest/specifications/core-metadata/).\nfunc parseWheelOrEgg(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tpd, sources, err := assembleEggOrWheelMetadata(resolver, reader.Location)\n\n\tif pd == nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// This can happen for Python 2.7 where it is reported from an egg-info, but Python is\n\t// the actual runtime, it isn't a \"package\". The special-casing here allows to skip it\n\tif pd.Name == \"Python\" {\n\t\treturn nil, nil, err\n\t}\n\n\tpkgs := []pkg.Package{\n\t\tnewPackageForPackage(\n\t\t\t*pd,\n\t\t\tfindLicenses(ctx, resolver, *pd),\n\t\t\tsources...,\n\t\t),\n\t}\n\n\treturn pkgs, nil, err\n}\n\n// fetchInstalledFiles finds a corresponding installed-files.txt file for the given python package metadata file and returns the set of file records contained.\nfunc fetchInstalledFiles(resolver file.Resolver, metadataLocation file.Location, sitePackagesRootPath string) (files []pkg.PythonFileRecord, sources []file.Location, retErr error) {\n\t// we've been given a file reference to a specific wheel METADATA file. note: this may be for a directory\n\t// or for an image... for an image the METADATA file may be present within multiple layers, so it is important\n\t// to reconcile the installed-files.txt path to the same layer (or the next adjacent lower layer).\n\n\t// find the installed-files.txt file relative to the directory where the METADATA file resides (in path AND layer structure)\n\tinstalledFilesPath := filepath.Join(filepath.Dir(metadataLocation.RealPath), \"installed-files.txt\")\n\tinstalledFilesRef := resolver.RelativeFileByPath(metadataLocation, installedFilesPath)\n\n\tif installedFilesRef != nil {\n\t\tsources = append(sources, installedFilesRef.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\n\t\tinstalledFilesContents, err := resolver.FileContentsByLocation(*installedFilesRef)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tdefer internal.CloseAndLogError(installedFilesContents, installedFilesPath)\n\n\t\t// parse the installed-files contents\n\t\tinstalledFiles, err := parseInstalledFiles(installedFilesContents, metadataLocation.RealPath, sitePackagesRootPath)\n\t\tif err != nil {\n\t\t\tretErr = unknown.Newf(*installedFilesRef, \"unable to parse installed-files.txt for python package: %w\", retErr)\n\t\t}\n\n\t\tfiles = append(files, installedFiles...)\n\t}\n\treturn files, sources, nil\n}\n\n// fetchRecordFiles finds a corresponding RECORD file for the given python package metadata file and returns the set of file records contained.\nfunc fetchRecordFiles(resolver file.Resolver, metadataLocation file.Location) (files []pkg.PythonFileRecord, sources []file.Location, retErr error) {\n\t// we've been given a file reference to a specific wheel METADATA file. note: this may be for a directory\n\t// or for an image... for an image the METADATA file may be present within multiple layers, so it is important\n\t// to reconcile the RECORD path to the same layer (or the next adjacent lower layer).\n\n\t// find the RECORD file relative to the directory where the METADATA file resides (in path AND layer structure)\n\trecordPath := filepath.Join(filepath.Dir(metadataLocation.RealPath), \"RECORD\")\n\trecordRef := resolver.RelativeFileByPath(metadataLocation, recordPath)\n\n\tif recordRef != nil {\n\t\tsources = append(sources, recordRef.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\n\t\trecordContents, err := resolver.FileContentsByLocation(*recordRef)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tdefer internal.CloseAndLogError(recordContents, recordPath)\n\n\t\t// parse the record contents\n\t\tvar records []pkg.PythonFileRecord\n\t\trecords, retErr = parseWheelOrEggRecord(file.NewLocationReadCloser(*recordRef, recordContents))\n\n\t\tfiles = append(files, records...)\n\t}\n\treturn files, sources, retErr\n}\n\n// fetchTopLevelPackages finds a corresponding top_level.txt file for the given python package metadata file and returns the set of package names contained.\nfunc fetchTopLevelPackages(resolver file.Resolver, metadataLocation file.Location) (pkgs []string, sources []file.Location, err error) {\n\t// a top_level.txt file specifies the python top-level packages (provided by this python package) installed into site-packages\n\tparentDir := filepath.Dir(metadataLocation.RealPath)\n\ttopLevelPath := filepath.Join(parentDir, \"top_level.txt\")\n\ttopLevelLocation := resolver.RelativeFileByPath(metadataLocation, topLevelPath)\n\n\tif topLevelLocation == nil {\n\t\treturn nil, nil, nil\n\t}\n\n\tsources = append(sources, topLevelLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\n\ttopLevelContents, err := resolver.FileContentsByLocation(*topLevelLocation)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer internal.CloseAndLogError(topLevelContents, topLevelLocation.AccessPath)\n\n\tscanner := bufio.NewScanner(topLevelContents)\n\tfor scanner.Scan() {\n\t\tpkgs = append(pkgs, scanner.Text())\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn pkgs, sources, nil\n}\n\ntype directURLOrigin struct {\n\tURL         string      `json:\"url\"`\n\tVCSInfo     vcsInfo     `json:\"vcs_info\"`\n\tArchiveInfo archiveInfo `json:\"archive_info\"`\n\tDirInfo     dirInfo     `json:\"dir_info\"`\n}\n\ntype dirInfo struct {\n\tEditable bool `json:\"editable\"`\n}\n\ntype archiveInfo struct {\n\tHash string `json:\"hash\"`\n}\n\ntype vcsInfo struct {\n\tCommitID          string `json:\"commit_id\"`\n\tVCS               string `json:\"vcs\"`\n\tRequestedRevision string `json:\"requested_revision\"`\n}\n\nfunc fetchDirectURLData(resolver file.Resolver, metadataLocation file.Location) (d *pkg.PythonDirectURLOriginInfo, sources []file.Location, err error) {\n\tparentDir := filepath.Dir(metadataLocation.RealPath)\n\tdirectURLPath := filepath.Join(parentDir, \"direct_url.json\")\n\tdirectURLLocation := resolver.RelativeFileByPath(metadataLocation, directURLPath)\n\n\tif directURLLocation == nil {\n\t\treturn nil, nil, nil\n\t}\n\n\tsources = append(sources, directURLLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation))\n\n\tdirectURLContents, err := resolver.FileContentsByLocation(*directURLLocation)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer internal.CloseAndLogError(directURLContents, directURLLocation.AccessPath)\n\n\tvar directURLJson directURLOrigin\n\tif err := json.NewDecoder(directURLContents).Decode(&directURLJson); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &pkg.PythonDirectURLOriginInfo{\n\t\tURL:      directURLJson.URL,\n\t\tCommitID: directURLJson.VCSInfo.CommitID,\n\t\tVCS:      directURLJson.VCSInfo.VCS,\n\t}, sources, nil\n}\n\n// assembleEggOrWheelMetadata discovers and accumulates python package metadata from multiple file sources and returns a single metadata object as well as a list of files where the metadata was derived from.\nfunc assembleEggOrWheelMetadata(resolver file.Resolver, metadataLocation file.Location) (*parsedData, []file.Location, error) {\n\tvar sources = []file.Location{\n\t\tmetadataLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t}\n\n\tmetadataContents, err := resolver.FileContentsByLocation(metadataLocation)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer internal.CloseAndLogError(metadataContents, metadataLocation.AccessPath)\n\n\tpd, err := parseWheelOrEggMetadata(file.NewLocationReadCloser(metadataLocation, metadataContents))\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif pd.Name == \"\" {\n\t\treturn nil, nil, nil\n\t}\n\n\t// attach any python files found for the given wheel/egg installation\n\tvar errs error\n\tr, s, err := fetchRecordFiles(resolver, metadataLocation)\n\tif err != nil {\n\t\terrs = unknown.Joinf(errs, \"could not read python package RECORD file: %w\", err)\n\t}\n\tif len(r) == 0 {\n\t\tr, s, err = fetchInstalledFiles(resolver, metadataLocation, pd.SitePackagesRootPath)\n\t\tif err != nil {\n\t\t\terrs = unknown.Joinf(errs, \"could not read python package installed-files.txt: %w\", err)\n\t\t}\n\t}\n\n\tsources = append(sources, s...)\n\tpd.Files = r\n\n\t// attach any top-level package names found for the given wheel/egg installation\n\tp, s, err := fetchTopLevelPackages(resolver, metadataLocation)\n\tif err != nil {\n\t\terrs = unknown.Joinf(errs, \"could not read python package top_level.txt: %w\", err)\n\t}\n\tsources = append(sources, s...)\n\tpd.TopLevelPackages = p\n\n\t// attach any direct-url package data found for the given wheel/egg installation\n\td, s, err := fetchDirectURLData(resolver, metadataLocation)\n\tif err != nil {\n\t\terrs = unknown.Joinf(errs, \"could not read python package direct_url.json: %w\", err)\n\t}\n\n\tsources = append(sources, s...)\n\tpd.DirectURLOrigin = d\n\treturn &pd, sources, errs\n}\n\nfunc findLicenses(ctx context.Context, resolver file.Resolver, m parsedData) pkg.LicenseSet {\n\tvar out []pkg.License\n\n\tlicenseLocations := file.NewLocationSet()\n\tif m.LicenseFilePath != \"\" {\n\t\tlocs, err := resolver.FilesByPath(m.LicenseFilePath)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"path\", m.LicenseFilePath).Trace(\"unable to resolve python license file\")\n\t\t} else {\n\t\t\tlicenseLocations.Add(locs...)\n\t\t}\n\t}\n\n\tswitch {\n\tcase m.LicenseExpression != \"\" || m.Licenses != \"\":\n\t\tout = licenses.NewFromValues(ctx, licenseLocations.ToSlice(), m.LicenseExpression, m.Licenses)\n\tcase !licenseLocations.Empty():\n\t\tout = licenses.FindAtLocations(ctx, resolver, licenseLocations.ToSlice()...)\n\n\tdefault:\n\t\t// search for known license paths from RECORDS file\n\t\tparent := path.Base(path.Dir(m.DistInfoLocation.Path()))\n\t\tcandidatePaths := strset.New()\n\t\tfor _, f := range m.Files {\n\t\t\tif !strings.HasPrefix(f.Path, parent) || strings.Count(f.Path, \"/\") > 1 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif licenses.IsLicenseFile(filepath.Base(f.Path)) {\n\t\t\t\tcandidatePaths.Add(path.Join(m.SitePackagesRootPath, f.Path))\n\t\t\t}\n\t\t}\n\n\t\tout = licenses.FindAtPaths(ctx, resolver, candidatePaths.List()...)\n\t}\n\treturn pkg.NewLicenseSet(out...)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_wheel_egg_metadata.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\ntype parsedData struct {\n\t// core info\n\n\t// DistInfoLocation is the location of the METADATA file within the .dist-info directory where we obtained the python package information\n\tDistInfoLocation  file.Location\n\tpkg.PythonPackage `mapstructure:\",squash\"`\n\n\t// license info\n\n\tLicenses          string `mapstructure:\"License\"`\n\tLicenseFile       string `mapstructure:\"LicenseFile\"`\n\tLicenseExpression string `mapstructure:\"LicenseExpression\"`\n\tLicenseFilePath   string\n}\n\nvar pluralFields = map[string]bool{\n\t\"ProvidesExtra\": true,\n\t\"RequiresDist\":  true,\n}\n\n// parseWheelOrEggMetadata takes a Python Egg or Wheel (which share the same format and values for our purposes),\n// returning all Python packages listed.\nfunc parseWheelOrEggMetadata(locationReader file.LocationReadCloser) (parsedData, error) {\n\tfields, err := extractRFC5322Fields(locationReader)\n\tif err != nil {\n\t\treturn parsedData{}, fmt.Errorf(\"unable to extract python wheel/egg metadata: %w\", err)\n\t}\n\n\tvar pd parsedData\n\tif err := mapstructure.Decode(fields, &pd); err != nil {\n\t\treturn pd, fmt.Errorf(\"unable to translate python wheel/egg metadata: %w\", err)\n\t}\n\n\t// add additional metadata not stored in the egg/wheel metadata file\n\tpath := locationReader.Path()\n\n\tpd.SitePackagesRootPath = determineSitePackagesRootPath(path)\n\tif pd.Licenses != \"\" || pd.LicenseExpression != \"\" {\n\t\tpd.LicenseFilePath = path\n\t} else if pd.LicenseFile != \"\" {\n\t\tpd.LicenseFilePath = filepath.Join(filepath.Dir(path), pd.LicenseFile)\n\t}\n\n\tpd.DistInfoLocation = locationReader.Location\n\n\treturn pd, nil\n}\n\nfunc extractRFC5322Fields(locationReader file.LocationReadCloser) (map[string]any, error) {\n\tfields := make(map[string]any)\n\tvar key string\n\n\t// though this spec is governed by RFC 5322 (mail message), the metadata files are not guaranteed to be compliant.\n\t// We must survive parsing as much info as possible without failing and dropping the data.\n\tscanner := bufio.NewScanner(locationReader)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tline = strings.TrimRight(line, \"\\n\")\n\n\t\t// An empty line means we are done parsing (either because there's no more data,\n\t\t// or because a description follows as specified in\n\t\t// https://packaging.python.org/specifications/core-metadata/#description;\n\t\t// and at this time, we're not interested in the description).\n\t\tif len(line) == 0 {\n\t\t\tif len(fields) > 0 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t// however, if the field parsing has not started yet, keep scanning lines\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch {\n\t\tcase strings.HasPrefix(line, \" \"):\n\t\t\t// a field-body continuation\n\t\t\tupdatedValue, err := handleFieldBodyContinuation(key, line, fields)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tfields[key] = updatedValue\n\t\tdefault:\n\t\t\t// parse a new key (note, duplicate keys that are for singular fields are overridden, where as plural fields are appended)\n\t\t\tif i := strings.Index(line, \":\"); i > 0 {\n\t\t\t\t// mapstruct cannot map keys with dashes, and we are expected to persist the \"Author-email\" field\n\t\t\t\tkey = strings.ReplaceAll(strings.TrimSpace(line[0:i]), \"-\", \"\")\n\t\t\t\tval := getFieldType(key, strings.TrimSpace(line[i+1:]))\n\n\t\t\t\tfields[key] = handleSingleOrMultiField(fields[key], val)\n\t\t\t} else {\n\t\t\t\tlog.Debugf(\"cannot parse field from path: %q from line: %q\", locationReader.Path(), line)\n\t\t\t}\n\t\t}\n\t}\n\treturn fields, nil\n}\n\nfunc handleSingleOrMultiField(existingValue, val any) any {\n\tstrSlice, ok := val.([]string)\n\tif !ok {\n\t\treturn val\n\t}\n\tif existingValue == nil {\n\t\treturn strSlice\n\t}\n\n\tswitch existingValueTy := existingValue.(type) {\n\tcase []string:\n\t\treturn append(existingValueTy, strSlice...)\n\tcase string:\n\t\treturn append([]string{existingValueTy}, strSlice...)\n\t}\n\n\treturn append([]string{fmt.Sprintf(\"%s\", existingValue)}, strSlice...)\n}\n\nfunc getFieldType(key, in string) any {\n\tif plural, ok := pluralFields[key]; ok && plural {\n\t\treturn []string{in}\n\t}\n\treturn in\n}\n\n// isEggRegularFile determines if the specified path is the regular file variant\n// of egg metadata (as opposed to a directory that contains more metadata\n// files).\nfunc isEggRegularFile(path string) bool {\n\treturn doublestar.MatchUnvalidated(eggInfoGlob, path)\n}\n\n// determineSitePackagesRootPath returns the path of the site packages root,\n// given the egg metadata file or directory specified in the path.\nfunc determineSitePackagesRootPath(path string) string {\n\tif isEggRegularFile(path) {\n\t\treturn filepath.Clean(filepath.Dir(path))\n\t}\n\n\treturn filepath.Clean(filepath.Dir(filepath.Dir(path)))\n}\n\n// handleFieldBodyContinuation returns the updated value for the specified field after processing the specified line.\n// If the continuation cannot be processed, it returns an error.\nfunc handleFieldBodyContinuation(key, line string, fields map[string]any) (any, error) {\n\tif len(key) == 0 {\n\t\treturn \"\", fmt.Errorf(\"no match for continuation: line: '%s'\", line)\n\t}\n\n\tval, ok := fields[key]\n\tif !ok {\n\t\treturn \"\", fmt.Errorf(\"no previous key exists, expecting: %s\", key)\n\t}\n\n\t// concatenate onto previous value\n\tswitch s := val.(type) {\n\tcase string:\n\t\treturn fmt.Sprintf(\"%s\\n %s\", s, strings.TrimSpace(line)), nil\n\tcase []string:\n\t\tif len(s) == 0 {\n\t\t\ts = append(s, \"\")\n\t\t}\n\t\ts[len(s)-1] = fmt.Sprintf(\"%s\\n %s\", s[len(s)-1], strings.TrimSpace(line))\n\t\treturn s, nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unexpected type for continuation: %T\", val)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_wheel_egg_metadata_test.go",
    "content": "package python\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/cmptest\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestParseWheelEggMetadata(t *testing.T) {\n\ttests := []struct {\n\t\tFixture          string\n\t\tExpectedMetadata parsedData\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/site-packages/nested/egg-name/egg-info/PKG-INFO\",\n\t\t\tExpectedMetadata: parsedData{\n\t\t\t\tDistInfoLocation:  file.NewLocation(\"testdata/site-packages/nested/egg-name/egg-info/PKG-INFO\"),\n\t\t\t\tLicenses:          \"Apache 2.0\",\n\t\t\t\tLicenseFile:       \"\",\n\t\t\t\tLicenseExpression: \"\",\n\t\t\t\tLicenseFilePath:   \"testdata/site-packages/nested/egg-name/egg-info/PKG-INFO\",\n\t\t\t\tPythonPackage: pkg.PythonPackage{\n\t\t\t\t\tName:                 \"requests\",\n\t\t\t\t\tVersion:              \"2.22.0\",\n\t\t\t\t\tPlatform:             \"UNKNOWN\",\n\t\t\t\t\tAuthor:               \"Kenneth Reitz\",\n\t\t\t\t\tAuthorEmail:          \"me@kennethreitz.org\",\n\t\t\t\t\tSitePackagesRootPath: \"testdata/site-packages/nested/egg-name\",\n\t\t\t\t\tRequiresPython:       \">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n\t\t\t\t\tProvidesExtra:        []string{\"security\", \"socks\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/site-packages/nested/dist-name/dist-info/METADATA\",\n\t\t\tExpectedMetadata: parsedData{\n\t\t\t\tDistInfoLocation:  file.NewLocation(\"testdata/site-packages/nested/dist-name/dist-info/METADATA\"),\n\t\t\t\tLicenses:          \"BSD License\",\n\t\t\t\tLicenseFile:       \"\",\n\t\t\t\tLicenseExpression: \"\",\n\t\t\t\tLicenseFilePath:   \"testdata/site-packages/nested/dist-name/dist-info/METADATA\",\n\t\t\t\tPythonPackage: pkg.PythonPackage{\n\t\t\t\t\tName:                 \"Pygments\",\n\t\t\t\t\tVersion:              \"2.6.1\",\n\t\t\t\t\tPlatform:             \"any\",\n\t\t\t\t\tAuthor:               \"Georg Brandl\",\n\t\t\t\t\tAuthorEmail:          \"georg@python.org\",\n\t\t\t\t\tSitePackagesRootPath: \"testdata/site-packages/nested/dist-name\",\n\t\t\t\t\tRequiresPython:       \">=3.5\",\n\t\t\t\t\tRequiresDist:         []string{\"soupsieve (>1.2)\", \"html5lib ; extra == 'html5lib'\", \"lxml ; extra == 'lxml'\"},\n\t\t\t\t\tProvidesExtra:        []string{\"html5lib\", \"lxml\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.Fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tl := file.NewLocationReadCloser(file.NewLocation(test.Fixture), fixture)\n\n\t\t\tactual, err := parseWheelOrEggMetadata(l)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse: %+v\", err)\n\t\t\t}\n\n\t\t\tif d := cmp.Diff(test.ExpectedMetadata, actual, cmptest.DefaultOptions()...); d != \"\" {\n\t\t\t\tt.Errorf(\"metadata mismatch (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestIsRegularEggFile(t *testing.T) {\n\tcases := []struct {\n\t\tpath     string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\t\"/usr/lib64/python2.6/site-packages/M2Crypto-0.20.2-py2.6.egg-info\",\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"/usr/lib64/python2.6/site-packages/M2Crypto-0.20.2-py2.6.egg-info/PKG-INFO\",\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"/usr/lib64/python2.6/site-packages/M2Crypto-0.20.2-py2.6.dist-info/METADATA\",\n\t\t\tfalse,\n\t\t},\n\t}\n\n\tfor _, c := range cases {\n\t\tt.Run(c.path, func(t *testing.T) {\n\t\t\tactual := isEggRegularFile(c.path)\n\n\t\t\tif actual != c.expected {\n\t\t\t\tt.Errorf(\"expected %t but got %t\", c.expected, actual)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDetermineSitePackagesRootPath(t *testing.T) {\n\tcases := []struct {\n\t\tinputPath string\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tinputPath: \"/usr/lib64/python2.6/site-packages/ethtool-0.6-py2.6.egg-info\",\n\t\t\texpected:  \"/usr/lib64/python2.6/site-packages\",\n\t\t},\n\t\t{\n\t\t\tinputPath: \"/usr/lib/python2.7/dist-packages/configobj-5.0.6.egg-info/top_level.txt\",\n\t\t\texpected:  \"/usr/lib/python2.7/dist-packages\",\n\t\t},\n\t\t{\n\t\t\tinputPath: \"/usr/lib/python2.7/dist-packages/six-1.10.0.egg-info/PKG-INFO\",\n\t\t\texpected:  \"/usr/lib/python2.7/dist-packages\",\n\t\t},\n\t}\n\n\tfor _, c := range cases {\n\t\tt.Run(c.inputPath, func(t *testing.T) {\n\t\t\tactual := determineSitePackagesRootPath(c.inputPath)\n\n\t\t\tif actual != c.expected {\n\t\t\t\tt.Errorf(\"expected %s but got %s\", c.expected, actual)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseWheelEggMetadataInvalid(t *testing.T) {\n\ttests := []struct {\n\t\tFixture          string\n\t\tExpectedMetadata parsedData\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/site-packages/nested/egg-name/egg-info/PKG-INFO-INVALID\",\n\t\t\tExpectedMetadata: parsedData{\n\t\t\t\tDistInfoLocation:  file.NewLocation(\"testdata/site-packages/nested/egg-name/egg-info/PKG-INFO-INVALID\"),\n\t\t\t\tLicenses:          \"\",\n\t\t\t\tLicenseExpression: \"\",\n\t\t\t\tLicenseFile:       \"\",\n\t\t\t\tLicenseFilePath:   \"\",\n\t\t\t\tPythonPackage: pkg.PythonPackage{\n\t\t\t\t\tName:                 \"mxnet\",\n\t\t\t\t\tVersion:              \"1.8.0\",\n\t\t\t\t\tSitePackagesRootPath: \"testdata/site-packages/nested/egg-name\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.Fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tl := file.NewLocationReadCloser(file.NewLocation(test.Fixture), fixture)\n\n\t\t\tactual, err := parseWheelOrEggMetadata(l)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse: %+v\", err)\n\t\t\t}\n\n\t\t\tfor _, d := range deep.Equal(actual, test.ExpectedMetadata) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_extractRFC5322Fields(t *testing.T) {\n\n\ttests := []struct {\n\t\tname    string\n\t\tinput   string\n\t\twant    map[string]any\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"with valid plural fields\",\n\t\t\tinput: `\nName: mxnet\nVersion: 1.8.0\nRequires-Dist: numpy (>=1.16.6)\nRequires-Dist: requests (>=2.22.0)\nProvidesExtra: cryptoutils ; extra == 'secure'\nProvidesExtra: socks ; extra == 'secure'\n`,\n\t\t\twant: map[string]any{\n\t\t\t\t\"Name\":          \"mxnet\",\n\t\t\t\t\"Version\":       \"1.8.0\",\n\t\t\t\t\"RequiresDist\":  []string{\"numpy (>=1.16.6)\", \"requests (>=2.22.0)\"},\n\t\t\t\t\"ProvidesExtra\": []string{\"cryptoutils ; extra == 'secure'\", \"socks ; extra == 'secure'\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with invalid plural fields (overwrite)\",\n\t\t\tinput: `\nName: mxnet\nVersion: 1.8.0\nVersion: 1.9.0\n`,\n\t\t\twant: map[string]any{\n\t\t\t\t\"Name\":    \"mxnet\",\n\t\t\t\t\"Version\": \"1.9.0\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\treader := file.NewLocationReadCloser(\n\t\t\t\tfile.NewLocation(\"/made/up\"),\n\t\t\t\tio.NopCloser(strings.NewReader(tt.input)),\n\t\t\t)\n\n\t\t\tgot, err := extractRFC5322Fields(reader)\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_wheel_egg_record.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"encoding/csv\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// parseWheelOrEggRecord takes a Python Egg or Wheel (which share the same format and values for our purposes),\n// returning all Python packages listed.\nfunc parseWheelOrEggRecord(reader file.LocationReadCloser) ([]pkg.PythonFileRecord, error) {\n\tvar records []pkg.PythonFileRecord\n\tr := csv.NewReader(reader)\n\n\tfor {\n\t\trecordList, err := r.Read()\n\t\tif err != nil {\n\t\t\tif errors.Is(err, io.EOF) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar parseErr *csv.ParseError\n\t\t\tif errors.As(err, &parseErr) {\n\t\t\t\tlog.WithFields(\"error\", parseErr).Debug(\"unable to read python record entry (skipping entry)\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// probably an I/O error... we could have missed some package content, so we include this location as an unknown\n\t\t\treturn records, unknown.Newf(reader.Coordinates, \"unable to read python record file: %w\", err)\n\t\t}\n\n\t\tif len(recordList) != 3 {\n\t\t\tlog.Debugf(\"python record an unexpected length=%d: %q\", len(recordList), recordList)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar record pkg.PythonFileRecord\n\n\t\tfor idx, item := range recordList {\n\t\t\tswitch idx {\n\t\t\tcase 0:\n\t\t\t\trecord.Path = item\n\t\t\tcase 1:\n\t\t\t\tif item == \"\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfields := strings.SplitN(item, \"=\", 2)\n\t\t\t\tif len(fields) != 2 {\n\t\t\t\t\tlog.Debugf(\"unexpected python record digest: %q\", item)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\trecord.Digest = &pkg.PythonFileDigest{\n\t\t\t\t\tAlgorithm: fields[0],\n\t\t\t\t\tValue:     fields[1],\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\trecord.Size = item\n\t\t\t}\n\t\t}\n\n\t\trecords = append(records, record)\n\t}\n\n\treturn records, nil\n}\n\nfunc parseInstalledFiles(reader io.Reader, location, sitePackagesRootPath string) ([]pkg.PythonFileRecord, error) {\n\tvar installedFiles []pkg.PythonFileRecord\n\tr := bufio.NewReader(reader)\n\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tif errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to read python installed-files file: %w\", err)\n\t\t}\n\n\t\tif location != \"\" && sitePackagesRootPath != \"\" {\n\t\t\tjoinedPath := filepath.Join(filepath.Dir(location), line)\n\t\t\tline, err = filepath.Rel(sitePackagesRootPath, joinedPath)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tinstalledFile := pkg.PythonFileRecord{\n\t\t\tPath: strings.ReplaceAll(line, \"\\n\", \"\"),\n\t\t}\n\n\t\tinstalledFiles = append(installedFiles, installedFile)\n\t}\n\n\treturn installedFiles, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/parse_wheel_egg_record_test.go",
    "content": "package python\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc TestParseWheelEggRecord(t *testing.T) {\n\ttests := []struct {\n\t\tFixture          string\n\t\tExpectedMetadata []pkg.PythonFileRecord\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/site-packages/nested/egg-name/egg-info/RECORD\",\n\t\t\tExpectedMetadata: []pkg.PythonFileRecord{\n\t\t\t\t{Path: \"requests-2.22.0.dist-info/INSTALLER\", Digest: &pkg.PythonFileDigest{\"sha256\", \"zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg\"}, Size: \"4\"},\n\t\t\t\t{Path: \"requests/__init__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PnKCgjcTq44LaAMzB-7--B2FdewRrE8F_vjZeaG9NhA\"}, Size: \"3921\"},\n\t\t\t\t{Path: \"requests/__pycache__/__version__.cpython-38.pyc\"},\n\t\t\t\t{Path: \"requests/__pycache__/utils.cpython-38.pyc\"},\n\t\t\t\t{Path: \"requests/__version__.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc\"}, Size: \"436\"},\n\t\t\t\t{Path: \"requests/utils.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A\"}, Size: \"30049\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tFixture: \"testdata/site-packages/nested/dist-name/dist-info/RECORD\",\n\t\t\tExpectedMetadata: []pkg.PythonFileRecord{\n\t\t\t\t{Path: \"../../../bin/pygmentize\", Digest: &pkg.PythonFileDigest{\"sha256\", \"dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8\"}, Size: \"220\"},\n\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/AUTHORS\", Digest: &pkg.PythonFileDigest{\"sha256\", \"PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/LICENSE.txt\", Digest: &pkg.PythonFileDigest{Algorithm: \"sha256\", Value: \"utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY\"}, Size: \"8449\"},\n\t\t\t\t{Path: \"Pygments-2.6.1.dist-info/RECORD\"},\n\t\t\t\t{Path: \"pygments/__pycache__/__init__.cpython-38.pyc\"},\n\t\t\t\t{Path: \"pygments/util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA\"}, Size: \"10778\"},\n\t\t\t\t{Path: \"pygments/x_util.py\", Digest: &pkg.PythonFileDigest{\"sha256\", \"qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=\"}, Size: \"10778\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.Fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tactual, err := parseWheelOrEggRecord(file.NewLocationReadCloser(file.NewLocation(test.Fixture), fixture))\n\t\t\trequire.NoError(t, err, \"failed to parse: %+v\", err)\n\n\t\t\tfor _, d := range deep.Equal(actual, test.ExpectedMetadata) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestParseInstalledFiles(t *testing.T) {\n\ttests := []struct {\n\t\tFixture          string\n\t\tExpectedMetadata []pkg.PythonFileRecord\n\t}{\n\t\t{\n\t\t\tFixture: \"testdata/installed-files/installed-files.txt\",\n\t\t\tExpectedMetadata: []pkg.PythonFileRecord{\n\t\t\t\t{Path: \"../__pycache__/dicttoxml.cpython-36.pyc\"},\n\t\t\t\t{Path: \"../dicttoxml.py\"},\n\t\t\t\t{Path: \"PKG-INFO\"},\n\t\t\t\t{Path: \"SOURCES.txt\"},\n\t\t\t\t{Path: \"dependency_links.txt\"},\n\t\t\t\t{Path: \"top_level.txt\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Fixture, func(t *testing.T) {\n\t\t\tfixture, err := os.Open(test.Fixture)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open fixture: %+v\", err)\n\t\t\t}\n\n\t\t\tactual, err := parseInstalledFiles(fixture, \"\", \"\")\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse: %+v\", err)\n\t\t\t}\n\n\t\t\tfor _, d := range deep.Equal(actual, test.ExpectedMetadata) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/Python-2.7.egg-info",
    "content": "Metadata-Version: 1.1\nName: Python\nVersion: 2.7.13\nSummary: A high-level object-oriented programming language\nHome-page: http://www.python.org/2.7\nAuthor: Guido van Rossum and the Python community\nAuthor-email: python-dev@python.org\nLicense: PSF license\nDescription: Python is an interpreted, interactive, object-oriented programming\n        language. It is often compared to Tcl, Perl, Scheme or Java.\n\n        Python combines remarkable power with very clear syntax. It has\n        modules, classes, exceptions, very high level dynamic data types, and\n        dynamic typing. There are interfaces to many system calls and\n        libraries, as well as to various windowing systems (X11, Motif, Tk,\n        Mac, MFC). New built-in modules are easily written in C or C++. Python\n        is also usable as an extension language for applications that need a\n        programmable interface.\n\n        The Python implementation is portable: it runs on many brands of UNIX,\n        on Windows, DOS, OS/2, Mac, Amiga... If your favorite system isn't\n        listed here, it may still be supported, if there's a C compiler for\n        it. Ask around on comp.lang.python -- or just try compiling Python\n        yourself.\nPlatform: Many\nClassifier: Development Status :: 6 - Mature\nClassifier: License :: OSI Approved :: Python Software Foundation License\nClassifier: Natural Language :: English\nClassifier: Programming Language :: C\nClassifier: Programming Language :: Python\nClassifier: Topic :: Software Development"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/empty-1.0.0-py3.8.egg-info",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/site-packages/v.DIST-INFO/METADATA",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/site-packages/w.EGG-INFO/PKG-INFO",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/site-packages/x.dist-info/METADATA",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/site-packages/y.egg-info/PKG-INFO",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/site-packages/z.egg-info",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/src/1-requirements-dev.txt",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/src/extra-requirements.txt",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/src/requirements-dev.txt",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/src/requirements.txt",
    "content": "example archive\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/glob-paths/src/setup.py",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/image-multi-site-package/Dockerfile",
    "content": "# digest is for linux/amd64\nFROM ubuntu:20.04@sha256:cc9cc8169c9517ae035cf293b15f06922cb8c6c864d625a72b7b18667f264b70 AS base\n\n# install Python 3.8 and Python 3.9\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3.8 python3.9 python3-pip python3-venv python3.9-venv python3.8-venv\n\n# install pip and virtualenv for both Python versions\nRUN python3.8 -m pip install --upgrade pip virtualenv==20.31.2 distlib==0.3.9 filelock==3.16.1 platformdirs==4.3.6\nRUN python3.9 -m pip install --upgrade pip virtualenv==20.31.2 distlib==0.3.9 filelock==3.18.0 platformdirs==4.3.8\n\n# install global packages for Python 3.8 & 3.9\nRUN python3.9 -m pip install click==8.0.3 beautifulsoup4==4.9.3 soupsieve==2.2.1 requests==2.25.1\nRUN python3.9 -m pip install six==1.16.0 wcwidth==0.2.13 blessed==1.20.0 python-editor==1.0.4  # total dependencies for inquirer in project1 (which is linked)\nRUN python3.9 -m pip install requests==2.25.0 certifi==2020.12.5 chardet==3.0.4 idna==2.10 urllib3==1.26.18 # total dependencies for requests\n\nRUN python3.8 -m pip install readchar==4.2.1\nRUN python3.8 -m pip install click==8.0.2 beautifulsoup4==4.9.2 soupsieve==2.2.0 requests==2.25.0\nRUN python3.8 -m pip install runs==1.2.2 xmod==1.8.1 # partial dependencies for inquirer in project2 (which is a red herring)\nRUN python3.8 -m pip install requests==2.25.0 certifi==2020.12.5 chardet==3.0.4 idna==2.10 urllib3==1.26.18 # total dependencies for requests\n\n# create directories for the two projects\nRUN mkdir -p /app/project1 /app/project2\n\n# set up the first project with a virtual environment using Python 3.9\nWORKDIR /app/project1\nRUN python3.9 -m venv --system-site-packages venv\nRUN /app/project1/venv/bin/pip install pyyaml==5.4.1 beautifulsoup4==4.10.0 soupsieve==2.3.0 requests # note: use requests from global site packages, but use the rest from the virtual environment\nRUN /app/project1/venv/bin/pip install inquirer==3.0.0 # note: should use dependencies from global site packages\n\n# set up the second project with a virtual environment using Python 3.8\nWORKDIR /app/project2\nRUN python3.8 -m venv venv\nRUN /app/project2/venv/bin/pip install click==8.0.3 pyyaml==6.0\nRUN /app/project2/venv/bin/pip install inquirer==3.2.4 runs==1.2.2 xmod==1.8.1 six==1.16.0 wcwidth==0.2.13 blessed==1.20.0 editor==1.6.6 readchar==4.1.0\n\nWORKDIR /app\n\n# let's not waste disk space... we only need the above state we've setup, not all of the os-level packages\nRUN rm -rf /app/project1/venv/share\nRUN rm -rf /app/project2/venv/share\nRUN find /app/project1/venv/lib/python3.9/site-packages/* -type d ! -name '*.dist-info' -exec rm -rf {} +\nRUN find /app/project2/venv/lib/python3.8/site-packages/* -type d ! -name '*.dist-info' -exec rm -rf {} +\nRUN find /usr/local/lib/python3.8/dist-packages/* -type d ! -name '*.dist-info' -exec rm -rf {} +\nRUN find /usr/local/lib/python3.9/dist-packages/* -type d ! -name '*.dist-info' -exec rm -rf {} +\n\nFROM scratch\n\nCOPY --from=base /app/ /app/\nCOPY --from=base /usr/local/lib/python3.8/ /usr/local/lib/python3.8/\nCOPY --from=base /usr/local/lib/python3.9/ /usr/local/lib/python3.9/\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/installed-files/installed-files.txt",
    "content": "../__pycache__/dicttoxml.cpython-36.pyc\n../dicttoxml.py\nPKG-INFO\nSOURCES.txt\ndependency_links.txt\ntop_level.txt\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/poetry/conflicting-with-extras/pyproject.toml",
    "content": "[tool.poetry]\nname = \"testpkg\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Alex Goodman <wagoodman@users.noreply.github.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.11\"\nhttpx = {extras = [\"brotli\", \"http2\", \"socks\"], version = \"^0.27.0\"}\npygments = \"1.6\"\nclick = \"<8\"\nrich = \"<10\"\n\n[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/poetry/multiple-extras/pyproject.toml",
    "content": "[tool.poetry]\nname = \"testpkg\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Alex Goodman <wagoodman@users.noreply.github.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.11\"\nhttpx = {extras = [\"brotli\", \"http2\", \"socks\"], version = \"^0.27.0\"}\n\n[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/poetry/nested-extras/pyproject.toml",
    "content": "[tool.poetry]\nname = \"testpkg\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Alex Goodman <wagoodman@users.noreply.github.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.11\"\nfastapi = {extras = [\"all\"], version = \"^0.111.0\"}\n\n[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/poetry/simple-deps/pyproject.toml",
    "content": "[tool.poetry]\nname = \"testpkg\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Alex Goodman <wagoodman@users.noreply.github.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.11\"\nrequests = \"^2.32.2\"\n\n[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pyenv/good-config",
    "content": "home = /usr/bin\ninclude-system-site-packages = true\nversion = 3.9.5"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pyenv/trixy-config",
    "content": "\n# last one wins... but we should survive multiple entries too\ninclude-system-site-packages = true\ninclude-system-site-packages = true\n\n# note: empty lines\n\n\n\n# note: bad entry\ninclude system-site-packages = false\n\n# note: in comment\n# include-system-site-packages = false\n\n# note: lots of spaces\n   version  =  3.3.3\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pypi-remote/pyproject.toml",
    "content": "[tool.poetry]\nname = \"testpkg\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Alex Goodman <wagoodman@users.noreply.github.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\ncertifi = \"^2025.10.5\"\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pypi-remote/registry_response.json",
    "content": "{\n    \"info\": {\n        \"author\": \"Kenneth Reitz\",\n        \"author_email\": \"me@kennethreitz.com\",\n        \"bugtrack_url\": null,\n        \"classifiers\": [\n            \"Development Status :: 5 - Production/Stable\",\n            \"Intended Audience :: Developers\",\n            \"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)\",\n            \"Natural Language :: English\",\n            \"Programming Language :: Python\",\n            \"Programming Language :: Python :: 3\",\n            \"Programming Language :: Python :: 3 :: Only\",\n            \"Programming Language :: Python :: 3.10\",\n            \"Programming Language :: Python :: 3.11\",\n            \"Programming Language :: Python :: 3.12\",\n            \"Programming Language :: Python :: 3.13\",\n            \"Programming Language :: Python :: 3.14\",\n            \"Programming Language :: Python :: 3.7\",\n            \"Programming Language :: Python :: 3.8\",\n            \"Programming Language :: Python :: 3.9\"\n        ],\n        \"description\": \"Certifi: Python SSL Certificates\\n================================\\n\\nCertifi provides Mozilla's carefully curated collection of Root Certificates for\\nvalidating the trustworthiness of SSL certificates while verifying the identity\\nof TLS hosts. It has been extracted from the `Requests`_ project.\\n\\nInstallation\\n------------\\n\\n``certifi`` is available on PyPI. Simply install it with ``pip``::\\n\\n    $ pip install certifi\\n\\nUsage\\n-----\\n\\nTo reference the installed certificate authority (CA) bundle, you can use the\\nbuilt-in function::\\n\\n    >>> import certifi\\n\\n    >>> certifi.where()\\n    '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem'\\n\\nOr from the command line::\\n\\n    $ python -m certifi\\n    /usr/local/lib/python3.7/site-packages/certifi/cacert.pem\\n\\nEnjoy!\\n\\n.. _`Requests`: https://requests.readthedocs.io/en/master/\\n\\nAddition/Removal of Certificates\\n--------------------------------\\n\\nCertifi does not support any addition/removal or other modification of the\\nCA trust store content. This project is intended to provide a reliable and\\nhighly portable root of trust to python deployments. Look to upstream projects\\nfor methods to use alternate trust.\\n\",\n        \"description_content_type\": null,\n        \"docs_url\": null,\n        \"download_url\": null,\n        \"downloads\": {\n            \"last_day\": -1,\n            \"last_month\": -1,\n            \"last_week\": -1\n        },\n        \"dynamic\": [\n            \"Author\",\n            \"Author-Email\",\n            \"Classifier\",\n            \"Description\",\n            \"Home-Page\",\n            \"License\",\n            \"License-File\",\n            \"Project-Url\",\n            \"Requires-Python\",\n            \"Summary\"\n        ],\n        \"home_page\": \"https://github.com/certifi/python-certifi\",\n        \"keywords\": null,\n        \"license\": \"MPL-2.0\",\n        \"license_expression\": null,\n        \"license_files\": [\n            \"LICENSE\"\n        ],\n        \"maintainer\": null,\n        \"maintainer_email\": null,\n        \"name\": \"certifi\",\n        \"package_url\": \"https://pypi.org/project/certifi/\",\n        \"platform\": null,\n        \"project_url\": \"https://pypi.org/project/certifi/\",\n        \"project_urls\": {\n            \"Homepage\": \"https://github.com/certifi/python-certifi\",\n            \"Source\": \"https://github.com/certifi/python-certifi\"\n        },\n        \"provides_extra\": null,\n        \"release_url\": \"https://pypi.org/project/certifi/2025.10.5/\",\n        \"requires_dist\": null,\n        \"requires_python\": \">=3.7\",\n        \"summary\": \"Python package for providing Mozilla's CA Bundle.\",\n        \"version\": \"2025.10.5\",\n        \"yanked\": false,\n        \"yanked_reason\": null\n    },\n    \"last_serial\": 31620018,\n    \"urls\": [\n        {\n            \"comment_text\": null,\n            \"digests\": {\n                \"blake2b_256\": \"e437af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed\",\n                \"md5\": \"7b56f7121949a196441739c539fd01be\",\n                \"sha256\": \"0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de\"\n            },\n            \"downloads\": -1,\n            \"filename\": \"certifi-2025.10.5-py3-none-any.whl\",\n            \"has_sig\": false,\n            \"md5_digest\": \"7b56f7121949a196441739c539fd01be\",\n            \"packagetype\": \"bdist_wheel\",\n            \"python_version\": \"py3\",\n            \"requires_python\": \">=3.7\",\n            \"size\": 163286,\n            \"upload_time\": \"2025-10-05T04:12:14\",\n            \"upload_time_iso_8601\": \"2025-10-05T04:12:14.030503Z\",\n            \"url\": \"https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl\",\n            \"yanked\": false,\n            \"yanked_reason\": null\n        },\n        {\n            \"comment_text\": null,\n            \"digests\": {\n                \"blake2b_256\": \"4c5bb6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91\",\n                \"md5\": \"7fe97b2e79933430062935f3759a09b0\",\n                \"sha256\": \"47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43\"\n            },\n            \"downloads\": -1,\n            \"filename\": \"certifi-2025.10.5.tar.gz\",\n            \"has_sig\": false,\n            \"md5_digest\": \"7fe97b2e79933430062935f3759a09b0\",\n            \"packagetype\": \"sdist\",\n            \"python_version\": \"source\",\n            \"requires_python\": \">=3.7\",\n            \"size\": 164519,\n            \"upload_time\": \"2025-10-05T04:12:15\",\n            \"upload_time_iso_8601\": \"2025-10-05T04:12:15.808237Z\",\n            \"url\": \"https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz\",\n            \"yanked\": false,\n            \"yanked_reason\": null\n        }\n    ],\n    \"vulnerabilities\": []\n}"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pypi-remote/registry_response_bad.json",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pypi-remote/requirements.txt",
    "content": "certifi == 2025.10.5"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/pypi-remote/setup.py",
    "content": "from setuptools import setup\n\n# Sample setup.py from the pytest project with added comments specific\n# to the cataloger\n\nINSTALL_REQUIRES = [\n    \"certifi==2025.10.5\",\n]\n\n\ndef main():\n    setup(\n        use_scm_version={\"write_to\": \"src/_pytest/_version.py\"},\n        setup_requires=[\"setuptools-scm\", \"setuptools>=40.0\"],\n        package_dir={\"\": \"src\"},\n        extras_require={},\n        install_requires=INSTALL_REQUIRES,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/requires/requirements.txt",
    "content": " flask == 4.0.0\n# a line that is ignored\nsqlalchemy >= 1.0.0, <= 2.0.0, != 3.0.0, <= 3.0.0\n foo == 1.0.0 # a comment that needs to be ignored\nbar >= 1.0.0, <= 2.0.0, \\\n  != 3.0.0, <= 3.0.0\n-e https://github.com/pecan/pecan.git\n-r other-requirements.txt\n--requirements super-secretrequirements.txt\nSomeProject ==5.4 ; python_version < '3.8'\ndots-._allowed == 1.0.0\ncoverage != 3.5 # Version Exclusion. Anything except version 3.5\nnumpyNew; sys_platform == 'win32'\nnumpy >= 3.4.1; sys_platform == 'win32'\nMopidy-Dirble ~= 1.1 # Compatible release. Same as >= 1.1, == 1.*\nargh==0.26.2 \\\n  --hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 \\\n  --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65\nargh==0.26.3 --hash=sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3 --hash=sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65\n# CommentedOut == 1.2.3\n# maybe invalid, but found out in the wild\n==2.3.4\ncelery[redis, pytest] == 4.4.7 # should remove [redis, pytest]\nrequests[security] == 2.8.* ; python_version < \"2.7\" and sys_platform == \"linux\"\nGithubSampleProject == 3.7.1 @ git+https://github.com/owner/repo@releases/tag/v3.7.1\nFrIeNdLy-_-bArD == 1.0.0\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/setup/dynamic-setup.py",
    "content": "# source: https://android.googlesource.com/platform/prebuilts/fullsdk-darwin/platform-tools/+/a7b08828aaa5d139fb3f1d6c8f5119212c94de70/systrace/catapult/telemetry/third_party/modulegraph/setup.py#808\n\"\"\"\nShared setup file for simple python packages. Uses a setup.cfg that\nis the same as the distutils2 project, unless noted otherwise.\nIt exists for two reasons:\n1) This makes it easier to reuse setup.py code between my own\n   projects\n2) Easier migration to distutils2 when that catches on.\nAdditional functionality:\n* Section metadata:\n    requires-test:  Same as 'tests_require' option for setuptools.\n\"\"\"\nimport sys\nimport os\nimport re\nimport platform\nfrom fnmatch import fnmatch\nimport os\nimport sys\nimport time\nimport tempfile\nimport tarfile\ntry:\n    import urllib.request as urllib\nexcept ImportError:\n    import urllib\nfrom distutils import log\ntry:\n    from hashlib import md5\nexcept ImportError:\n    from md5 import md5\nif sys.version_info[0] == 2:\n    from ConfigParser import RawConfigParser, NoOptionError, NoSectionError\nelse:\n    from configparser import RawConfigParser, NoOptionError, NoSectionError\nROOTDIR = os.path.dirname(os.path.abspath(__file__))\n#\n#\n#\n# Parsing the setup.cfg and converting it to something that can be\n# used by setuptools.setup()\n#\n#\n#\ndef eval_marker(value):\n    \"\"\"\n    Evaluate an distutils2 environment marker.\n    This code is unsafe when used with hostile setup.cfg files,\n    but that's not a problem for our own files.\n    \"\"\"\n    value = value.strip()\n    class M:\n        def __init__(self, **kwds):\n            for k, v in kwds.items():\n                setattr(self, k, v)\n    variables = {\n        'python_version': '%d.%d'%(sys.version_info[0], sys.version_info[1]),\n        'python_full_version': sys.version.split()[0],\n        'os': M(\n            name=os.name,\n        ),\n        'sys': M(\n            platform=sys.platform,\n        ),\n        'platform': M(\n            version=platform.version(),\n            machine=platform.machine(),\n        ),\n    }\n    return bool(eval(value, variables, variables))\n    return True\ndef _opt_value(cfg, into, section, key, transform = None):\n    try:\n        v = cfg.get(section, key)\n        if transform != _as_lines and ';' in v:\n            v, marker = v.rsplit(';', 1)\n            if not eval_marker(marker):\n                return\n            v = v.strip()\n        if v:\n            if transform:\n                into[key] = transform(v.strip())\n            else:\n                into[key] = v.strip()\n    except (NoOptionError, NoSectionError):\n        pass\ndef _as_bool(value):\n    if value.lower() in ('y', 'yes', 'on'):\n        return True\n    elif value.lower() in ('n', 'no', 'off'):\n        return False\n    elif value.isdigit():\n        return bool(int(value))\n    else:\n        raise ValueError(value)\ndef _as_list(value):\n    return value.split()\ndef _as_lines(value):\n    result = []\n    for v in value.splitlines():\n        if ';' in v:\n            v, marker = v.rsplit(';', 1)\n            if not eval_marker(marker):\n                continue\n            v = v.strip()\n            if v:\n                result.append(v)\n        else:\n            result.append(v)\n    return result\ndef _map_requirement(value):\n    m = re.search(r'(\\S+)\\s*(?:\\((.*)\\))?', value)\n    name = m.group(1)\n    version = m.group(2)\n    if version is None:\n        return name\n    else:\n        mapped = []\n        for v in version.split(','):\n            v = v.strip()\n            if v[0].isdigit():\n                # Checks for a specific version prefix\n                m = v.rsplit('.', 1)\n                mapped.append('>=%s,<%s.%s'%(\n                    v, m[0], int(m[1])+1))\n            else:\n                mapped.append(v)\n        return '%s %s'%(name, ','.join(mapped),)\ndef _as_requires(value):\n    requires = []\n    for req in value.splitlines():\n        if ';' in req:\n            req, marker = v.rsplit(';', 1)\n            if not eval_marker(marker):\n                continue\n            req = req.strip()\n        if not req:\n            continue\n        requires.append(_map_requirement(req))\n    return requires\ndef parse_setup_cfg():\n    cfg = RawConfigParser()\n    r = cfg.read([os.path.join(ROOTDIR, 'setup.cfg')])\n    if len(r) != 1:\n        print(\"Cannot read 'setup.cfg'\")\n        sys.exit(1)\n    metadata = dict(\n            name        = cfg.get('metadata', 'name'),\n            version     = cfg.get('metadata', 'version'),\n            description = cfg.get('metadata', 'description'),\n    )\n    _opt_value(cfg, metadata, 'metadata', 'license')\n    _opt_value(cfg, metadata, 'metadata', 'maintainer')\n    _opt_value(cfg, metadata, 'metadata', 'maintainer_email')\n    _opt_value(cfg, metadata, 'metadata', 'author')\n    _opt_value(cfg, metadata, 'metadata', 'author_email')\n    _opt_value(cfg, metadata, 'metadata', 'url')\n    _opt_value(cfg, metadata, 'metadata', 'download_url')\n    _opt_value(cfg, metadata, 'metadata', 'classifiers', _as_lines)\n    _opt_value(cfg, metadata, 'metadata', 'platforms', _as_list)\n    _opt_value(cfg, metadata, 'metadata', 'packages', _as_list)\n    _opt_value(cfg, metadata, 'metadata', 'keywords', _as_list)\n    try:\n        v = cfg.get('metadata', 'requires-dist')\n    except (NoOptionError, NoSectionError):\n        pass\n    else:\n        requires = _as_requires(v)\n        if requires:\n            metadata['install_requires'] = requires\n    try:\n        v = cfg.get('metadata', 'requires-test')\n    except (NoOptionError, NoSectionError):\n        pass\n    else:\n        requires = _as_requires(v)\n        if requires:\n            metadata['tests_require'] = requires\n    try:\n        v = cfg.get('metadata', 'long_description_file')\n    except (NoOptionError, NoSectionError):\n        pass\n    else:\n        parts = []\n        for nm in v.split():\n            fp = open(nm, 'rU')\n            parts.append(fp.read())\n            fp.close()\n        metadata['long_description'] = '\\n\\n'.join(parts)\n    try:\n        v = cfg.get('metadata', 'zip-safe')\n    except (NoOptionError, NoSectionError):\n        pass\n    else:\n        metadata['zip_safe'] = _as_bool(v)\n    try:\n        v = cfg.get('metadata', 'console_scripts')\n    except (NoOptionError, NoSectionError):\n        pass\n    else:\n        if 'entry_points' not in metadata:\n            metadata['entry_points'] = {}\n        metadata['entry_points']['console_scripts'] = v.splitlines()\n    if sys.version_info[:2] <= (2,6):\n        try:\n            metadata['tests_require'] += \", unittest2\"\n        except KeyError:\n            metadata['tests_require'] = \"unittest2\"\n    return metadata\n#\n#\n#\n# Bootstrapping setuptools/distribute, based on\n# a heavily modified version of distribute_setup.py\n#\n#\n#\nSETUPTOOLS_PACKAGE='setuptools'\ntry:\n    import subprocess\n    def _python_cmd(*args):\n        args = (sys.executable,) + args\n        return subprocess.call(args) == 0\nexcept ImportError:\n    def _python_cmd(*args):\n        args = (sys.executable,) + args\n        new_args = []\n        for a in args:\n            new_args.append(a.replace(\"'\", \"'\\\"'\\\"'\"))\n        os.system(' '.join(new_args)) == 0\ntry:\n    import json\n    def get_pypi_src_download(package):\n        url = 'https://pypi.python.org/pypi/%s/json'%(package,)\n        fp = urllib.urlopen(url)\n        try:\n            try:\n                data = fp.read()\n            finally:\n                fp.close()\n        except urllib.error:\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        pkgdata = json.loads(data.decode('utf-8'))\n        if 'urls' not in pkgdata:\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        for info in pkgdata['urls']:\n            if info['packagetype'] == 'sdist' and info['url'].endswith('tar.gz'):\n                return (info.get('md5_digest'), info['url'])\n        raise RuntimeError(\"Cannot determine downlink link for %s\"%(package,))\nexcept ImportError:\n    # Python 2.5 compatibility, no JSON in stdlib but luckily JSON syntax is\n    # simular enough to Python's syntax to be able to abuse the Python compiler\n    import _ast as ast\n    def get_pypi_src_download(package):\n        url = 'https://pypi.python.org/pypi/%s/json'%(package,)\n        fp = urllib.urlopen(url)\n        try:\n            try:\n                data = fp.read()\n            finally:\n                fp.close()\n        except urllib.error:\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        a = compile(data, '-', 'eval', ast.PyCF_ONLY_AST)\n        if not isinstance(a, ast.Expression):\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        a = a.body\n        if not isinstance(a, ast.Dict):\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        for k, v in zip(a.keys, a.values):\n            if not isinstance(k, ast.Str):\n                raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n            k = k.s\n            if k == 'urls':\n                a = v\n                break\n        else:\n            raise RuntimeError(\"PyPI JSON for %s doesn't contain URLs section\"%(package,))\n        if not isinstance(a, ast.List):\n            raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n        for info in v.elts:\n            if not isinstance(info, ast.Dict):\n                raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n            url = None\n            packagetype = None\n            chksum = None\n            for k, v in zip(info.keys, info.values):\n                if not isinstance(k, ast.Str):\n                    raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n                if k.s == 'url':\n                    if not isinstance(v, ast.Str):\n                        raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n                    url = v.s\n                elif k.s == 'packagetype':\n                    if not isinstance(v, ast.Str):\n                        raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n                    packagetype = v.s\n                elif k.s == 'md5_digest':\n                    if not isinstance(v, ast.Str):\n                        raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\n                    chksum = v.s\n            if url is not None and packagetype == 'sdist' and url.endswith('.tar.gz'):\n                return (chksum, url)\n        raise RuntimeError(\"Cannot determine download link for %s\"%(package,))\ndef _build_egg(egg, tarball, to_dir):\n    # extracting the tarball\n    tmpdir = tempfile.mkdtemp()\n    log.warn('Extracting in %s', tmpdir)\n    old_wd = os.getcwd()\n    try:\n        os.chdir(tmpdir)\n        tar = tarfile.open(tarball)\n        _extractall(tar)\n        tar.close()\n        # going in the directory\n        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])\n        os.chdir(subdir)\n        log.warn('Now working in %s', subdir)\n        # building an egg\n        log.warn('Building a %s egg in %s', egg, to_dir)\n        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)\n    finally:\n        os.chdir(old_wd)\n    # returning the result\n    log.warn(egg)\n    if not os.path.exists(egg):\n        raise IOError('Could not build the egg.')\ndef _do_download(to_dir, packagename=SETUPTOOLS_PACKAGE):\n    tarball = download_setuptools(packagename, to_dir)\n    version = tarball.split('-')[-1][:-7]\n    egg = os.path.join(to_dir, '%s-%s-py%d.%d.egg'\n                       % (packagename, version, sys.version_info[0], sys.version_info[1]))\n    if not os.path.exists(egg):\n        _build_egg(egg, tarball, to_dir)\n    sys.path.insert(0, egg)\n    import setuptools\n    setuptools.bootstrap_install_from = egg\ndef use_setuptools():\n    # making sure we use the absolute path\n    return _do_download(os.path.abspath(os.curdir))\ndef download_setuptools(packagename, to_dir):\n    # making sure we use the absolute path\n    to_dir = os.path.abspath(to_dir)\n    try:\n        from urllib.request import urlopen\n    except ImportError:\n        from urllib2 import urlopen\n    chksum, url = get_pypi_src_download(packagename)\n    tgz_name = os.path.basename(url)\n    saveto = os.path.join(to_dir, tgz_name)\n    src = dst = None\n    if not os.path.exists(saveto):  # Avoid repeated downloads\n        try:\n            log.warn(\"Downloading %s\", url)\n            src = urlopen(url)\n            # Read/write all in one block, so we don't create a corrupt file\n            # if the download is interrupted.\n            data = src.read()\n            if chksum is not None:\n                data_sum = md5(data).hexdigest()\n                if data_sum != chksum:\n                    raise RuntimeError(\"Downloading %s failed: corrupt checksum\"%(url,))\n            dst = open(saveto, \"wb\")\n            dst.write(data)\n        finally:\n            if src:\n                src.close()\n            if dst:\n                dst.close()\n    return os.path.realpath(saveto)\ndef _extractall(self, path=\".\", members=None):\n    \"\"\"Extract all members from the archive to the current working\n       directory and set owner, modification time and permissions on\n       directories afterwards. `path' specifies a different directory\n       to extract to. `members' is optional and must be a subset of the\n       list returned by getmembers().\n    \"\"\"\n    import copy\n    import operator\n    from tarfile import ExtractError\n    directories = []\n    if members is None:\n        members = self\n    for tarinfo in members:\n        if tarinfo.isdir():\n            # Extract directories with a safe mode.\n            directories.append(tarinfo)\n            tarinfo = copy.copy(tarinfo)\n            tarinfo.mode = 448 # decimal for oct 0700\n        self.extract(tarinfo, path)\n    # Reverse sort directories.\n    if sys.version_info < (2, 4):\n        def sorter(dir1, dir2):\n            return cmp(dir1.name, dir2.name)\n        directories.sort(sorter)\n        directories.reverse()\n    else:\n        directories.sort(key=operator.attrgetter('name'), reverse=True)\n    # Set correct owner, mtime and filemode on directories.\n    for tarinfo in directories:\n        dirpath = os.path.join(path, tarinfo.name)\n        try:\n            self.chown(tarinfo, dirpath)\n            self.utime(tarinfo, dirpath)\n            self.chmod(tarinfo, dirpath)\n        except ExtractError:\n            e = sys.exc_info()[1]\n            if self.errorlevel > 1:\n                raise\n            else:\n                self._dbg(1, \"tarfile: %s\" % e)\n#\n#\n#\n# Definitions of custom commands\n#\n#\n#\ntry:\n    import setuptools\nexcept ImportError:\n    use_setuptools()\nfrom setuptools import setup\ntry:\n    from distutils.core import PyPIRCCommand\nexcept ImportError:\n    PyPIRCCommand = None # Ancient python version\nfrom distutils.core import Command\nfrom distutils.errors  import DistutilsError\nfrom distutils import log\nif PyPIRCCommand is None:\n    class upload_docs (Command):\n        description = \"upload sphinx documentation\"\n        user_options = []\n        def initialize_options(self):\n            pass\n        def finalize_options(self):\n            pass\n        def run(self):\n            raise DistutilsError(\"not supported on this version of python\")\nelse:\n    class upload_docs (PyPIRCCommand):\n        description = \"upload sphinx documentation\"\n        user_options = PyPIRCCommand.user_options\n        def initialize_options(self):\n            PyPIRCCommand.initialize_options(self)\n            self.username = ''\n            self.password = ''\n        def finalize_options(self):\n            PyPIRCCommand.finalize_options(self)\n            config = self._read_pypirc()\n            if config != {}:\n                self.username = config['username']\n                self.password = config['password']\n        def run(self):\n            import subprocess\n            import shutil\n            import zipfile\n            import os\n            import urllib\n            import StringIO\n            from base64 import standard_b64encode\n            import httplib\n            import urlparse\n            # Extract the package name from distutils metadata\n            meta = self.distribution.metadata\n            name = meta.get_name()\n            # Run sphinx\n            if os.path.exists('doc/_build'):\n                shutil.rmtree('doc/_build')\n            os.mkdir('doc/_build')\n            p = subprocess.Popen(['make', 'html'],\n                cwd='doc')\n            exit = p.wait()\n            if exit != 0:\n                raise DistutilsError(\"sphinx-build failed\")\n            # Collect sphinx output\n            if not os.path.exists('dist'):\n                os.mkdir('dist')\n            zf = zipfile.ZipFile('dist/%s-docs.zip'%(name,), 'w',\n                    compression=zipfile.ZIP_DEFLATED)\n            for toplevel, dirs, files in os.walk('doc/_build/html'):\n                for fn in files:\n                    fullname = os.path.join(toplevel, fn)\n                    relname = os.path.relpath(fullname, 'doc/_build/html')\n                    print (\"%s -> %s\"%(fullname, relname))\n                    zf.write(fullname, relname)\n            zf.close()\n            # Upload the results, this code is based on the distutils\n            # 'upload' command.\n            content = open('dist/%s-docs.zip'%(name,), 'rb').read()\n            data = {\n                ':action': 'doc_upload',\n                'name': name,\n                'content': ('%s-docs.zip'%(name,), content),\n            }\n            auth = \"Basic \" + standard_b64encode(self.username + \":\" +\n                 self.password)\n            boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'\n            sep_boundary = '\\n--' + boundary\n            end_boundary = sep_boundary + '--'\n            body = StringIO.StringIO()\n            for key, value in data.items():\n                if not isinstance(value, list):\n                    value = [value]\n                for value in value:\n                    if isinstance(value, tuple):\n                        fn = ';filename=\"%s\"'%(value[0])\n                        value = value[1]\n                    else:\n                        fn = ''\n                    body.write(sep_boundary)\n                    body.write('\\nContent-Disposition: form-data; name=\"%s\"'%key)\n                    body.write(fn)\n                    body.write(\"\\n\\n\")\n                    body.write(value)\n            body.write(end_boundary)\n            body.write('\\n')\n            body = body.getvalue()\n            self.announce(\"Uploading documentation to %s\"%(self.repository,), log.INFO)\n            schema, netloc, url, params, query, fragments = \\\n                    urlparse.urlparse(self.repository)\n            if schema == 'http':\n                http = httplib.HTTPConnection(netloc)\n            elif schema == 'https':\n                http = httplib.HTTPSConnection(netloc)\n            else:\n                raise AssertionError(\"unsupported schema \"+schema)\n            data = ''\n            loglevel = log.INFO\n            try:\n                http.connect()\n                http.putrequest(\"POST\", url)\n                http.putheader('Content-type',\n                    'multipart/form-data; boundary=%s'%boundary)\n                http.putheader('Content-length', str(len(body)))\n                http.putheader('Authorization', auth)\n                http.endheaders()\n                http.send(body)\n            except socket.error:\n                e = socket.exc_info()[1]\n                self.announce(str(e), log.ERROR)\n                return\n            r = http.getresponse()\n            if r.status in (200, 301):\n                self.announce('Upload succeeded (%s): %s' % (r.status, r.reason),\n                    log.INFO)\n            else:\n                self.announce('Upload failed (%s): %s' % (r.status, r.reason),\n                    log.ERROR)\n                print ('-'*75)\n                print (r.read())\n                print ('-'*75)\ndef recursiveGlob(root, pathPattern):\n    \"\"\"\n    Recursively look for files matching 'pathPattern'. Return a list\n    of matching files/directories.\n    \"\"\"\n    result = []\n    for rootpath, dirnames, filenames in os.walk(root):\n        for fn in filenames:\n            if fnmatch(fn, pathPattern):\n                result.append(os.path.join(rootpath, fn))\n    return result\ndef importExternalTestCases(unittest,\n        pathPattern=\"test_*.py\", root=\".\", package=None):\n    \"\"\"\n    Import all unittests in the PyObjC tree starting at 'root'\n    \"\"\"\n    testFiles = recursiveGlob(root, pathPattern)\n    testModules = map(lambda x:x[len(root)+1:-3].replace('/', '.'), testFiles)\n    if package is not None:\n        testModules = [(package + '.' + m) for m in testModules]\n    suites = []\n    for modName in testModules:\n        try:\n            module = __import__(modName)\n        except ImportError:\n            print(\"SKIP %s: %s\"%(modName, sys.exc_info()[1]))\n            continue\n        if '.' in modName:\n            for elem in modName.split('.')[1:]:\n                module = getattr(module, elem)\n        s = unittest.defaultTestLoader.loadTestsFromModule(module)\n        suites.append(s)\n    return unittest.TestSuite(suites)\nclass test (Command):\n    description = \"run test suite\"\n    user_options = [\n        ('verbosity=', None, \"print what tests are run\"),\n    ]\n    def initialize_options(self):\n        self.verbosity='1'\n    def finalize_options(self):\n        if isinstance(self.verbosity, str):\n            self.verbosity = int(self.verbosity)\n    def cleanup_environment(self):\n        ei_cmd = self.get_finalized_command('egg_info')\n        egg_name = ei_cmd.egg_name.replace('-', '_')\n        to_remove =  []\n        for dirname in sys.path:\n            bn = os.path.basename(dirname)\n            if bn.startswith(egg_name + \"-\"):\n                to_remove.append(dirname)\n        for dirname in to_remove:\n            log.info(\"removing installed %r from sys.path before testing\"%(\n                dirname,))\n            sys.path.remove(dirname)\n    def add_project_to_sys_path(self):\n        from pkg_resources import normalize_path, add_activation_listener\n        from pkg_resources import working_set, require\n        self.reinitialize_command('egg_info')\n        self.run_command('egg_info')\n        self.reinitialize_command('build_ext', inplace=1)\n        self.run_command('build_ext')\n        # Check if this distribution is already on sys.path\n        # and remove that version, this ensures that the right\n        # copy of the package gets tested.\n        self.__old_path = sys.path[:]\n        self.__old_modules = sys.modules.copy()\n        ei_cmd = self.get_finalized_command('egg_info')\n        sys.path.insert(0, normalize_path(ei_cmd.egg_base))\n        sys.path.insert(1, os.path.dirname(__file__))\n        # Strip the namespace packages defined in this distribution\n        # from sys.modules, needed to reset the search path for\n        # those modules.\n        nspkgs = getattr(self.distribution, 'namespace_packages')\n        if nspkgs is not None:\n            for nm in nspkgs:\n                del sys.modules[nm]\n        # Reset pkg_resources state:\n        add_activation_listener(lambda dist: dist.activate())\n        working_set.__init__()\n        require('%s==%s'%(ei_cmd.egg_name, ei_cmd.egg_version))\n    def remove_from_sys_path(self):\n        from pkg_resources import working_set\n        sys.path[:] = self.__old_path\n        sys.modules.clear()\n        sys.modules.update(self.__old_modules)\n        working_set.__init__()\n    def run(self):\n        import unittest\n        # Ensure that build directory is on sys.path (py3k)\n        self.cleanup_environment()\n        self.add_project_to_sys_path()\n        try:\n            meta = self.distribution.metadata\n            name = meta.get_name()\n            test_pkg = name + \"_tests\"\n            suite = importExternalTestCases(unittest,\n                    \"test_*.py\", test_pkg, test_pkg)\n            runner = unittest.TextTestRunner(verbosity=self.verbosity)\n            result = runner.run(suite)\n            # Print out summary. This is a structured format that\n            # should make it easy to use this information in scripts.\n            summary = dict(\n                count=result.testsRun,\n                fails=len(result.failures),\n                errors=len(result.errors),\n                xfails=len(getattr(result, 'expectedFailures', [])),\n                xpass=len(getattr(result, 'expectedSuccesses', [])),\n                skip=len(getattr(result, 'skipped', [])),\n            )\n            print(\"SUMMARY: %s\"%(summary,))\n        finally:\n            self.remove_from_sys_path()\n#\n#\n#\n#  And finally run the setuptools main entry point.\n#\n#\n#\nmetadata = parse_setup_cfg()\nsetup(\n    cmdclass=dict(\n        upload_docs=upload_docs,\n        test=test,\n    ),\n    **metadata\n)"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/setup/mixed-format-setup.py",
    "content": "from setuptools import setup\n\n# Test case to ensure duplicate detection works correctly\n# when same dependencies appear in both quoted and unquoted forms\n\nsetup(\n    name='mixed-format-project',\n    version='1.0.0',\n    install_requires=[\n        # Quoted dependencies (should be caught by pinnedDependency regex)\n        \"requests==2.31.0\",\n        \"django==4.2.23\",\n    ] + \"\"\"\nrequests==2.31.0\nflask==3.0.0\n\"\"\".split(),\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/setup/multiline-split-setup.py",
    "content": "from setuptools import setup\n\n# Example setup.py using multiline string with .split() pattern\n# This pattern is commonly seen in projects like mayan-edms\n\nsetup(\n    name='example-project',\n    version='1.0.0',\n    install_requires=\"\"\"\ndjango==4.2.23\nCairoSVG==2.7.1\nPillow==11.0.0\nrequests==2.31.0\ncelery==5.3.4\n\"\"\".split(),\n    extras_require={\n        'dev': \"\"\"\npytest==7.4.3\nblack==23.12.1\nmypy==1.7.1\n\"\"\".split(),\n    },\n)\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/setup/setup.py",
    "content": "from setuptools import setup\n\n# Sample setup.py from the pytest project with added comments specific\n# to the cataloger\n\nINSTALL_REQUIRES = [\n    \"py>=1.5.0\",\n    \"packaging\",\n    \"attrs>=17.4.0\",\n    \"more-itertools>=4.0.0\",\n    'atomicwrites>=1.0;sys_platform==\"win32\"',  # sys_platform is ignored\n    'pathlib2>=2.2.0;python_version==\"3.6\"',  # python_version is ignored\n    'pathlib3==2.2.0;python_version<\"3.6\"',  # this is caught\n    'colorama;sys_platform==\"win32\"',\n    \"pluggy>=0.12,<1.0\",\n    'importlib-metadata>=0.12;python_version<\"3.8\"',\n    \"wcwidth\",\n]\n\n\ndef main():\n    setup(\n        use_scm_version={\"write_to\": \"src/_pytest/_version.py\"},\n        setup_requires=[\"setuptools-scm\", \"setuptools>=40.0\"],\n        package_dir={\"\": \"src\"},\n        extras_require={\n            \"testing\": [\n                \"argcomplete\",\n                \"hypothesis>=3.56\",\n                \"mock\",\n                \"nose\",\n                \"requests\",\n                \"xmlschema\",\n            ],\n            \"checkqa-mypy\": [\n                \"mypy==v0.770\",  # this is caught\n                \" mypy1==v0.770\",  # this is caught\n                \" mypy2 == v0.770\", ' mypy3== v0.770',  # this is caught\n            ],\n        },\n        install_requires=INSTALL_REQUIRES,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/with-license-file-declared.dist-info/LICENSE.txt",
    "content": "Copyright 2010 Pallets\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1.  Redistributions of source code must retain the above copyright\n    notice, this list of conditions and the following disclaimer.\n\n2.  Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the\n    documentation and/or other materials provided with the distribution.\n\n3.  Neither the name of the copyright holder nor the names of its\n    contributors may be used to endorse or promote products derived from\n    this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/with-license-file-declared.dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicenseFile: LICENSE.txt\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\nDescription-Content-Type: text/markdown\nRequires-Dist: soupsieve (>1.2)\nProvides-Extra: html5lib\nRequires-Dist: html5lib ; extra == 'html5lib'\nProvides-Extra: lxml\nRequires-Dist: lxml ; extra == 'lxml'\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/with-license-file-declared.dist-info/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nwith-license-file-declared.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nwith-license-file-declared.dist-info/LICENSE.txt,sha256=utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY,8449\nwith-license-file-declared.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778\npygments/x_util.py,sha256=qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=,10778\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/with-license-file-declared.dist-info/direct_url.json",
    "content": "{\"url\": \"https://github.com/python-test/test.git\", \"vcs_info\": {\"commit_id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"vcs\": \"git\"}}"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/with-license-file-declared.dist-info/top_level.txt",
    "content": "pygments\nsomething_else"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/without-license-file-declared.dist-info/LICENSE.txt",
    "content": "Copyright 2010 Pallets\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1.  Redistributions of source code must retain the above copyright\n    notice, this list of conditions and the following disclaimer.\n\n2.  Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the\n    documentation and/or other materials provided with the distribution.\n\n3.  Neither the name of the copyright holder nor the names of its\n    contributors may be used to endorse or promote products derived from\n    this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/without-license-file-declared.dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\nDescription-Content-Type: text/markdown\nRequires-Dist: soupsieve (>1.2)\nProvides-Extra: html5lib\nRequires-Dist: html5lib ; extra == 'html5lib'\nProvides-Extra: lxml\nRequires-Dist: lxml ; extra == 'lxml'\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/without-license-file-declared.dist-info/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nwithout-license-file-declared.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nwithout-license-file-declared.dist-info/LICENSE.txt,sha256=utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY,8449\nwithout-license-file-declared.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778\npygments/x_util.py,sha256=qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=,10778\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/without-license-file-declared.dist-info/direct_url.json",
    "content": "{\"url\": \"https://github.com/python-test/test.git\", \"vcs_info\": {\"commit_id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"vcs\": \"git\"}}"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/license/without-license-file-declared.dist-info/top_level.txt",
    "content": "pygments\nsomething_else"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/malformed-record/dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/malformed-record/dist-info/RECORD",
    "content": "flask/json/tag.py,sha256=9ehzrmt5k7hxf7ZEK0NOs3swvQyU9fWNe-pnYe69N60,8223\n<<<<<<< HEAD\n../../Scripts/flask.exe,sha256=mPrbVeZCDX20himZ_bRai1nCs_tgr7jHIOGZlcgn-T4,93063\n=======\n../../Scripts/flask.exe,sha256=jvqh4N3qOqXLlq40i6ZOLCY9tAOwfwdzIpLDYhRjoqQ,89470\n>>>>>>> 69c24e18ea630ec869a32ad7b0b0d9647714cd5d\nFlask-1.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4\napp/venv/Lib/site-packages/Flask-1.0.2.dist-info/WHEEL0100777000000000000000000000015613752730745020435 0ustar0000000000000000Wheel-Version: 1.0\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/dist-name/dist-info/LICENSE.txt",
    "content": "Copyright 2010 Pallets\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1.  Redistributions of source code must retain the above copyright\n    notice, this list of conditions and the following disclaimer.\n\n2.  Redistributions in binary form must reproduce the above copyright\n    notice, this list of conditions and the following disclaimer in the\n    documentation and/or other materials provided with the distribution.\n\n3.  Neither the name of the copyright holder nor the names of its\n    contributors may be used to endorse or promote products derived from\n    this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/dist-name/dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\nDescription-Content-Type: text/markdown\nRequires-Dist: soupsieve (>1.2)\nProvides-Extra: html5lib\nRequires-Dist: html5lib ; extra == 'html5lib'\nProvides-Extra: lxml\nRequires-Dist: lxml ; extra == 'lxml'\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/dist-name/dist-info/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nPygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nPygments-2.6.1.dist-info/LICENSE.txt,sha256=utiUvpzxqFPVpvuPnWG2_Oku6BGuay2I8-NIrqCvqUY,8449\nPygments-2.6.1.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778\npygments/x_util.py,sha256=qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=,10778\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/dist-name/dist-info/direct_url.json",
    "content": "{\"url\": \"https://github.com/python-test/test.git\", \"vcs_info\": {\"commit_id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"vcs\": \"git\"}}"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/dist-name/dist-info/top_level.txt",
    "content": "pygments\nsomething_else"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/egg-name/egg-info/PKG-INFO",
    "content": "Metadata-Version: 2.1\nName: requests\nVersion: 2.22.0\nSummary: Python HTTP for Humans.\nHome-page: http://python-requests.org\nAuthor: Kenneth Reitz\nAuthor-email: me@kennethreitz.org\nLicense: Apache 2.0\nDescription: Requests: HTTP for Humans™\n        ==========================\n        \n        [![image](https://img.shields.io/pypi/v/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/l/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests/)\n        [![codecov.io](https://codecov.io/github/requests/requests/coverage.svg?branch=master)](https://codecov.io/github/requests/requests)\n        [![image](https://img.shields.io/github/contributors/requests/requests.svg)](https://github.com/requests/requests/graphs/contributors)\n        [![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/kennethreitz)\n        \n        Requests is the only *Non-GMO* HTTP library for Python, safe for human\n        consumption.\n        \n        ![image](https://farm5.staticflickr.com/4317/35198386374_1939af3de6_k_d.jpg)\n        \n        Behold, the power of Requests:\n        \n        ``` {.sourceCode .python}\n        >>> import requests\n        >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))\n        >>> r.status_code\n        200\n        >>> r.headers['content-type']\n        'application/json; charset=utf8'\n        >>> r.encoding\n        'utf-8'\n        >>> r.text\n        u'{\"type\":\"User\"...'\n        >>> r.json()\n        {u'disk_usage': 368627, u'private_gists': 484, ...}\n        ```\n        \n        See [the similar code, sans Requests](https://gist.github.com/973705).\n        \n        [![image](https://raw.githubusercontent.com/requests/requests/master/docs/_static/requests-logo-small.png)](http://docs.python-requests.org/)\n        \n        Requests allows you to send *organic, grass-fed* HTTP/1.1 requests,\n        without the need for manual labor. There's no need to manually add query\n        strings to your URLs, or to form-encode your POST data. Keep-alive and\n        HTTP connection pooling are 100% automatic, thanks to\n        [urllib3](https://github.com/shazow/urllib3).\n        \n        Besides, all the cool kids are doing it. Requests is one of the most\n        downloaded Python packages of all time, pulling in over 11,000,000\n        downloads every month. You don't want to be left out!\n        \n        Feature Support\n        ---------------\n        \n        Requests is ready for today's web.\n        \n        -   International Domains and URLs\n        -   Keep-Alive & Connection Pooling\n        -   Sessions with Cookie Persistence\n        -   Browser-style SSL Verification\n        -   Basic/Digest Authentication\n        -   Elegant Key/Value Cookies\n        -   Automatic Decompression\n        -   Automatic Content Decoding\n        -   Unicode Response Bodies\n        -   Multipart File Uploads\n        -   HTTP(S) Proxy Support\n        -   Connection Timeouts\n        -   Streaming Downloads\n        -   `.netrc` Support\n        -   Chunked Requests\n        \n        Requests officially supports Python 2.7 & 3.4–3.7, and runs great on\n        PyPy.\n        \n        Installation\n        ------------\n        \n        To install Requests, simply use [pipenv](http://pipenv.org/) (or pip, of\n        course):\n        \n        ``` {.sourceCode .bash}\n        $ pipenv install requests\n        ✨🍰✨\n        ```\n        \n        Satisfaction guaranteed.\n        \n        Documentation\n        -------------\n        \n        Fantastic documentation is available at\n        <http://docs.python-requests.org/>, for a limited time only.\n        \n        How to Contribute\n        -----------------\n        \n        1.  Become more familiar with the project by reading our [Contributor's Guide](http://docs.python-requests.org/en/latest/dev/contributing/) and our [development philosophy](http://docs.python-requests.org/en/latest/dev/philosophy/).\n        2.  Check for open issues or open a fresh issue to start a discussion\n            around a feature idea or a bug. There is a [Contributor\n            Friendly](https://github.com/requests/requests/issues?direction=desc&labels=Contributor+Friendly&page=1&sort=updated&state=open)\n            tag for issues that should be ideal for people who are not very\n            familiar with the codebase yet.\n        3.  Fork [the repository](https://github.com/requests/requests) on\n            GitHub to start making your changes to the **master** branch (or\n            branch off of it).\n        4.  Write a test which shows that the bug was fixed or that the feature\n            works as expected.\n        5.  Send a pull request and bug the maintainer until it gets merged and\n            published. :) Make sure to add yourself to\n            [AUTHORS](https://github.com/requests/requests/blob/master/AUTHORS.rst).\n        \n        \nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Natural Language :: English\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nRequires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\nDescription-Content-Type: text/markdown\nProvides-Extra: security\nProvides-Extra: socks"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/egg-name/egg-info/PKG-INFO-INVALID",
    "content": "Metadata-Version: 1.1\nName: mxnet\nVersion: 1.8.0\nSummary: <!--- Licensed to the Apache Software Foundation (ASF) under one -->\n<!--- or more contributor license agreements.  See the NOTICE file -->\n<!--- distributed with this work for additional information -->\n<!--- regarding copyright ownership.  The ASF licenses this file -->\n<!--- to you under the Apache License, Version 2.0 (the -->\n<!--- \"License\"); you may not use this file except in compliance -->\n<!--- with the License.  You may obtain a copy of the License at -->\n\n<!---   http://www.apache.org/licenses/LICENSE-2.0 -->\n\n<!--- Unless required by applicable law or agreed to in writing, -->\n<!--- software distributed under the License is distributed on an -->\n<!--- \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->\n<!--- KIND, either express or implied.  See the License for the -->\n<!--- specific language governing permissions and limitations -->\n<!--- under the License. -->\n\nMXNet Python Package\n====================\nThis directory and nested files contain MXNet Python package and language binding.\n\n## Installation\nTo install MXNet Python package, visit MXNet [Install Instruction](https://mxnet.apache.org/get_started)\n\n\n## Running the unit tests\n\nFor running unit tests, you will need the [nose PyPi package](https://pypi.python.org/pypi/nose). To install:\n```bash\npip install --upgrade nose\n```\n\nOnce ```nose``` is installed, run the following from MXNet root directory (please make sure the installation path of ```nosetests``` is included in your ```$PATH``` environment variable):\n```\nnosetests tests/python/unittest\nnosetests tests/python/train\n\n```\n\nHome-page: https://github.com/apache/incubator-mxnet\nAuthor: UNKNOWN\nAuthor-email: UNKNOWN\nLicense: UNKNOWN\nDescription: UNKNOWN\nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: Education\nClassifier: Intended Audience :: Science/Research\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: C++\nClassifier: Programming Language :: Cython\nClassifier: Programming Language :: Other\nClassifier: Programming Language :: Perl\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3.4\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Topic :: Scientific/Engineering\nClassifier: Topic :: Scientific/Engineering :: Artificial Intelligence\nClassifier: Topic :: Scientific/Engineering :: Mathematics\nClassifier: Topic :: Software Development\nClassifier: Topic :: Software Development :: Libraries\nClassifier: Topic :: Software Development :: Libraries :: Python Modules\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/egg-name/egg-info/RECORD",
    "content": "requests-2.22.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4\nrequests/__init__.py,sha256=PnKCgjcTq44LaAMzB-7--B2FdewRrE8F_vjZeaG9NhA,3921\nrequests/__pycache__/__version__.cpython-38.pyc,,\nrequests/__pycache__/utils.cpython-38.pyc,,\nrequests/__version__.py,sha256=Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc,436\nrequests/utils.py,sha256=LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A,30049\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/nested/egg-name/egg-info/top_level.txt",
    "content": "requests"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/no-version/no-version-py3.8.egg-info",
    "content": "Name: no-version\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/partial.dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/test/test.egg-info",
    "content": "Metadata-Version: 2.1\nName: requests\nVersion: 2.22.0\nSummary: Python HTTP for Humans.\nHome-page: http://python-requests.org\nAuthor: Kenneth Reitz\nAuthor-email: me@kennethreitz.org\nLicense: Apache 2.0\nDescription: Requests: HTTP for Humans™\n        ==========================\n        \n        [![image](https://img.shields.io/pypi/v/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/l/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests/)\n        [![codecov.io](https://codecov.io/github/requests/requests/coverage.svg?branch=master)](https://codecov.io/github/requests/requests)\n        [![image](https://img.shields.io/github/contributors/requests/requests.svg)](https://github.com/requests/requests/graphs/contributors)\n        [![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/kennethreitz)\n        \n        Requests is the only *Non-GMO* HTTP library for Python, safe for human\n        consumption.\n        \n        ![image](https://farm5.staticflickr.com/4317/35198386374_1939af3de6_k_d.jpg)\n        \n        Behold, the power of Requests:\n        \n        ``` {.sourceCode .python}\n        >>> import requests\n        >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))\n        >>> r.status_code\n        200\n        >>> r.headers['content-type']\n        'application/json; charset=utf8'\n        >>> r.encoding\n        'utf-8'\n        >>> r.text\n        u'{\"type\":\"User\"...'\n        >>> r.json()\n        {u'disk_usage': 368627, u'private_gists': 484, ...}\n        ```\n        \n        See [the similar code, sans Requests](https://gist.github.com/973705).\n        \n        [![image](https://raw.githubusercontent.com/requests/requests/master/docs/_static/requests-logo-small.png)](http://docs.python-requests.org/)\n        \n        Requests allows you to send *organic, grass-fed* HTTP/1.1 requests,\n        without the need for manual labor. There's no need to manually add query\n        strings to your URLs, or to form-encode your POST data. Keep-alive and\n        HTTP connection pooling are 100% automatic, thanks to\n        [urllib3](https://github.com/shazow/urllib3).\n        \n        Besides, all the cool kids are doing it. Requests is one of the most\n        downloaded Python packages of all time, pulling in over 11,000,000\n        downloads every month. You don't want to be left out!\n        \n        Feature Support\n        ---------------\n        \n        Requests is ready for today's web.\n        \n        -   International Domains and URLs\n        -   Keep-Alive & Connection Pooling\n        -   Sessions with Cookie Persistence\n        -   Browser-style SSL Verification\n        -   Basic/Digest Authentication\n        -   Elegant Key/Value Cookies\n        -   Automatic Decompression\n        -   Automatic Content Decoding\n        -   Unicode Response Bodies\n        -   Multipart File Uploads\n        -   HTTP(S) Proxy Support\n        -   Connection Timeouts\n        -   Streaming Downloads\n        -   `.netrc` Support\n        -   Chunked Requests\n        \n        Requests officially supports Python 2.7 & 3.4–3.7, and runs great on\n        PyPy.\n        \n        Installation\n        ------------\n        \n        To install Requests, simply use [pipenv](http://pipenv.org/) (or pip, of\n        course):\n        \n        ``` {.sourceCode .bash}\n        $ pipenv install requests\n        ✨🍰✨\n        ```\n        \n        Satisfaction guaranteed.\n        \n        Documentation\n        -------------\n        \n        Fantastic documentation is available at\n        <http://docs.python-requests.org/>, for a limited time only.\n        \n        How to Contribute\n        -----------------\n        \n        1.  Become more familiar with the project by reading our [Contributor's Guide](http://docs.python-requests.org/en/latest/dev/contributing/) and our [development philosophy](http://docs.python-requests.org/en/latest/dev/philosophy/).\n        2.  Check for open issues or open a fresh issue to start a discussion\n            around a feature idea or a bug. There is a [Contributor\n            Friendly](https://github.com/requests/requests/issues?direction=desc&labels=Contributor+Friendly&page=1&sort=updated&state=open)\n            tag for issues that should be ideal for people who are not very\n            familiar with the codebase yet.\n        3.  Fork [the repository](https://github.com/requests/requests) on\n            GitHub to start making your changes to the **master** branch (or\n            branch off of it).\n        4.  Write a test which shows that the bug was fixed or that the feature\n            works as expected.\n        5.  Send a pull request and bug the maintainer until it gets merged and\n            published. :) Make sure to add yourself to\n            [AUTHORS](https://github.com/requests/requests/blob/master/AUTHORS.rst).\n        \n        \nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Natural Language :: English\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nRequires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\nDescription-Content-Type: text/markdown\nProvides-Extra: security\nProvides-Extra: socks"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/dist-name/DIST-INFO/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/dist-name/DIST-INFO/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nPygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nPygments-2.6.1.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778\npygments/x_util.py,sha256=qpzzsOW31KT955agi-7NS--90I0iNiJCyLJQnRCHgKI=,10778\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/dist-name/DIST-INFO/direct_url.json",
    "content": "{\"url\": \"https://github.com/python-test/test.git\", \"vcs_info\": {\"commit_id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"vcs\": \"git\"}}"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/dist-name/DIST-INFO/top_level.txt",
    "content": "pygments\nsomething_else"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/egg-name/EGG-INFO/PKG-INFO",
    "content": "Metadata-Version: 2.1\nName: requests\nVersion: 2.22.0\nSummary: Python HTTP for Humans.\nHome-page: http://python-requests.org\nAuthor: Kenneth Reitz\nAuthor-email: me@kennethreitz.org\nLicense: Apache 2.0\nDescription: Requests: HTTP for Humans™\n        ==========================\n        \n        [![image](https://img.shields.io/pypi/v/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/l/requests.svg)](https://pypi.org/project/requests/)\n        [![image](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests/)\n        [![codecov.io](https://codecov.io/github/requests/requests/coverage.svg?branch=master)](https://codecov.io/github/requests/requests)\n        [![image](https://img.shields.io/github/contributors/requests/requests.svg)](https://github.com/requests/requests/graphs/contributors)\n        [![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/kennethreitz)\n        \n        Requests is the only *Non-GMO* HTTP library for Python, safe for human\n        consumption.\n        \n        ![image](https://farm5.staticflickr.com/4317/35198386374_1939af3de6_k_d.jpg)\n        \n        Behold, the power of Requests:\n        \n        ``` {.sourceCode .python}\n        >>> import requests\n        >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))\n        >>> r.status_code\n        200\n        >>> r.headers['content-type']\n        'application/json; charset=utf8'\n        >>> r.encoding\n        'utf-8'\n        >>> r.text\n        u'{\"type\":\"User\"...'\n        >>> r.json()\n        {u'disk_usage': 368627, u'private_gists': 484, ...}\n        ```\n        \n        See [the similar code, sans Requests](https://gist.github.com/973705).\n        \n        [![image](https://raw.githubusercontent.com/requests/requests/master/docs/_static/requests-logo-small.png)](http://docs.python-requests.org/)\n        \n        Requests allows you to send *organic, grass-fed* HTTP/1.1 requests,\n        without the need for manual labor. There's no need to manually add query\n        strings to your URLs, or to form-encode your POST data. Keep-alive and\n        HTTP connection pooling are 100% automatic, thanks to\n        [urllib3](https://github.com/shazow/urllib3).\n        \n        Besides, all the cool kids are doing it. Requests is one of the most\n        downloaded Python packages of all time, pulling in over 11,000,000\n        downloads every month. You don't want to be left out!\n        \n        Feature Support\n        ---------------\n        \n        Requests is ready for today's web.\n        \n        -   International Domains and URLs\n        -   Keep-Alive & Connection Pooling\n        -   Sessions with Cookie Persistence\n        -   Browser-style SSL Verification\n        -   Basic/Digest Authentication\n        -   Elegant Key/Value Cookies\n        -   Automatic Decompression\n        -   Automatic Content Decoding\n        -   Unicode Response Bodies\n        -   Multipart File Uploads\n        -   HTTP(S) Proxy Support\n        -   Connection Timeouts\n        -   Streaming Downloads\n        -   `.netrc` Support\n        -   Chunked Requests\n        \n        Requests officially supports Python 2.7 & 3.4–3.7, and runs great on\n        PyPy.\n        \n        Installation\n        ------------\n        \n        To install Requests, simply use [pipenv](http://pipenv.org/) (or pip, of\n        course):\n        \n        ``` {.sourceCode .bash}\n        $ pipenv install requests\n        ✨🍰✨\n        ```\n        \n        Satisfaction guaranteed.\n        \n        Documentation\n        -------------\n        \n        Fantastic documentation is available at\n        <http://docs.python-requests.org/>, for a limited time only.\n        \n        How to Contribute\n        -----------------\n        \n        1.  Become more familiar with the project by reading our [Contributor's Guide](http://docs.python-requests.org/en/latest/dev/contributing/) and our [development philosophy](http://docs.python-requests.org/en/latest/dev/philosophy/).\n        2.  Check for open issues or open a fresh issue to start a discussion\n            around a feature idea or a bug. There is a [Contributor\n            Friendly](https://github.com/requests/requests/issues?direction=desc&labels=Contributor+Friendly&page=1&sort=updated&state=open)\n            tag for issues that should be ideal for people who are not very\n            familiar with the codebase yet.\n        3.  Fork [the repository](https://github.com/requests/requests) on\n            GitHub to start making your changes to the **master** branch (or\n            branch off of it).\n        4.  Write a test which shows that the bug was fixed or that the feature\n            works as expected.\n        5.  Send a pull request and bug the maintainer until it gets merged and\n            published. :) Make sure to add yourself to\n            [AUTHORS](https://github.com/requests/requests/blob/master/AUTHORS.rst).\n        \n        \nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Natural Language :: English\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nRequires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\nDescription-Content-Type: text/markdown\nProvides-Extra: security\nProvides-Extra: socks"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/egg-name/EGG-INFO/PKG-INFO-INVALID",
    "content": "Metadata-Version: 1.1\nName: mxnet\nVersion: 1.8.0\nSummary: <!--- Licensed to the Apache Software Foundation (ASF) under one -->\n<!--- or more contributor license agreements.  See the NOTICE file -->\n<!--- distributed with this work for additional information -->\n<!--- regarding copyright ownership.  The ASF licenses this file -->\n<!--- to you under the Apache License, Version 2.0 (the -->\n<!--- \"License\"); you may not use this file except in compliance -->\n<!--- with the License.  You may obtain a copy of the License at -->\n\n<!---   http://www.apache.org/licenses/LICENSE-2.0 -->\n\n<!--- Unless required by applicable law or agreed to in writing, -->\n<!--- software distributed under the License is distributed on an -->\n<!--- \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->\n<!--- KIND, either express or implied.  See the License for the -->\n<!--- specific language governing permissions and limitations -->\n<!--- under the License. -->\n\nMXNet Python Package\n====================\nThis directory and nested files contain MXNet Python package and language binding.\n\n## Installation\nTo install MXNet Python package, visit MXNet [Install Instruction](https://mxnet.apache.org/get_started)\n\n\n## Running the unit tests\n\nFor running unit tests, you will need the [nose PyPi package](https://pypi.python.org/pypi/nose). To install:\n```bash\npip install --upgrade nose\n```\n\nOnce ```nose``` is installed, run the following from MXNet root directory (please make sure the installation path of ```nosetests``` is included in your ```$PATH``` environment variable):\n```\nnosetests tests/python/unittest\nnosetests tests/python/train\n\n```\n\nHome-page: https://github.com/apache/incubator-mxnet\nAuthor: UNKNOWN\nAuthor-email: UNKNOWN\nLicense: UNKNOWN\nDescription: UNKNOWN\nPlatform: UNKNOWN\nClassifier: Development Status :: 5 - Production/Stable\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: Education\nClassifier: Intended Audience :: Science/Research\nClassifier: License :: OSI Approved :: Apache Software License\nClassifier: Programming Language :: C++\nClassifier: Programming Language :: Cython\nClassifier: Programming Language :: Other\nClassifier: Programming Language :: Perl\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 2.7\nClassifier: Programming Language :: Python :: 3.4\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Topic :: Scientific/Engineering\nClassifier: Topic :: Scientific/Engineering :: Artificial Intelligence\nClassifier: Topic :: Scientific/Engineering :: Mathematics\nClassifier: Topic :: Software Development\nClassifier: Topic :: Software Development :: Libraries\nClassifier: Topic :: Software Development :: Libraries :: Python Modules\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/egg-name/EGG-INFO/RECORD",
    "content": "requests-2.22.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4\nrequests/__init__.py,sha256=PnKCgjcTq44LaAMzB-7--B2FdewRrE8F_vjZeaG9NhA,3921\nrequests/__pycache__/__version__.cpython-38.pyc,,\nrequests/__pycache__/utils.cpython-38.pyc,,\nrequests/__version__.py,sha256=Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc,436\nrequests/utils.py,sha256=LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A,30049\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/site-packages/uppercase/egg-name/EGG-INFO/top_level.txt",
    "content": "requests"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/uv/conflicting-with-extras/pyproject.toml",
    "content": "# fixture is not under test, just used to produde the uv.lock\n[project]\nname = \"testpkg\"\nversion = \"0.1.0\"\n\ndependencies = [\n    \"httpx[brotli,http2,socks]>=0.27.0,<0.30.0\",\n    \"pygments==2.15.0\",\n    \"click<8\",\n    \"rich<10\"\n]\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/uv/multiple-extras/pyproject.toml",
    "content": "# fixture is not under test, just used to produde the uv.lock\n[project]\nname = \"testpkg\"\nversion = \"0.1.0\"\n\ndependencies = [\n    \"httpx[brotli,http2,socks]>=0.27.0<0.30.0\"\n]\n"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/uv/nested-extras/pyproject.toml",
    "content": "# fixture is not under test, just used to produde the uv.lock\n[project]\nname = \"testpkg\"\nversion = \"0.1.0\"\n\ndependencies = [\n    \"fastapi[all]>=0.111.0<0.112.0\"\n]"
  },
  {
    "path": "syft/pkg/cataloger/python/testdata/uv/simple-deps/pyproject.toml",
    "content": "# fixture is not under test, just used to produde the uv.lock\n[project]\nname = \"testpkg\"\nversion = \"0.1.0\"\n\ndependencies = [\n    \"requests>=2.32.2<3\"\n]\n"
  },
  {
    "path": "syft/pkg/cataloger/python/virtual_env.go",
    "content": "package python\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype virtualEnvInfo struct {\n\t// Context\n\tLocation         file.Location\n\tSitePackagesPath string\n\n\t// Config values\n\tVersion                   string\n\tIncludeSystemSitePackages bool\n}\n\nfunc (v virtualEnvInfo) majorMinorVersion() string {\n\tparts := strings.Split(v.Version, \".\")\n\tif len(parts) < 2 {\n\t\treturn \"\"\n\t}\n\treturn strings.Join(parts[:2], \".\")\n}\n\nfunc findVirtualEnvs(_ context.Context, resolver file.Resolver, sitePackagePaths []string) ([]virtualEnvInfo, []string, error) {\n\tlocations, err := resolver.FilesByGlob(\"**/pyvenv.cfg\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to find python virtualenvs: %w\", err)\n\t}\n\n\tsitePackagePathsSet := strset.New(sitePackagePaths...)\n\n\tvar virtualEnvs []virtualEnvInfo\n\tfor _, location := range locations {\n\t\tcfg, err := parsePyvenvCfg(context.Background(), resolver, location)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse pyvenv.cfg: %w\", err)\n\t\t}\n\t\tif cfg == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tcfg.SitePackagesPath = cfg.matchVirtualEnvSitePackagesPath(sitePackagePaths)\n\n\t\tif cfg.SitePackagesPath != \"\" {\n\t\t\tsitePackagePathsSet.Remove(cfg.SitePackagesPath)\n\t\t}\n\n\t\tvirtualEnvs = append(virtualEnvs, *cfg)\n\t}\n\n\tunusedSitePackageDirs := sitePackagePathsSet.List()\n\tsort.Strings(unusedSitePackageDirs)\n\n\treturn virtualEnvs, unusedSitePackageDirs, nil\n}\n\nfunc (v virtualEnvInfo) matchSystemPackagesPath(sitePackagePaths []string) string {\n\tsitePackagePathsSet := strset.New(sitePackagePaths...)\n\n\t// we are searchin for the system site-packages directory within the virtualenv\n\tsearch := \"**/python\" + v.majorMinorVersion() + \"/*-packages\"\n\n\tvar matches []string\n\tfor _, p := range sitePackagePathsSet.List() {\n\t\tdoesMatch, err := doublestar.Match(search, p)\n\t\tif err != nil {\n\t\t\tlog.Tracef(\"unable to match system site-packages path %q: %v\", p, err)\n\t\t\tcontinue\n\t\t}\n\t\tif doesMatch {\n\t\t\tmatches = append(matches, p)\n\t\t}\n\t}\n\n\t// we should get either 0 or 1 matches, we cannot reason about multiple matches\n\tif len(matches) == 1 {\n\t\treturn matches[0]\n\t}\n\n\treturn \"\"\n}\n\nfunc (v virtualEnvInfo) matchVirtualEnvSitePackagesPath(sitePackagePaths []string) string {\n\tsitePackagePathsSet := strset.New(sitePackagePaths...)\n\t// the parent directory of the venv config is the top-level directory of the virtualenv\n\t// e.g. /app/project1/venv/pyvenv.cfg -> /app/project1/venv\n\tparent := strings.TrimLeft(path.Dir(v.Location.RealPath), \"/\")\n\n\t// we are searchin for the site-packages directory within the virtualenv\n\tsearch := parent + \"/lib/python\" + v.majorMinorVersion() + \"/site-packages\"\n\n\tvar matches []string\n\tfor _, p := range sitePackagePathsSet.List() {\n\t\tif strings.Contains(p, search) {\n\t\t\tmatches = append(matches, p)\n\t\t}\n\t}\n\n\t// we should get either 0 or 1 matches, we cannot reason about multiple matches\n\tif len(matches) == 1 {\n\t\treturn matches[0]\n\t}\n\n\treturn \"\"\n}\n\nfunc parsePyvenvCfg(_ context.Context, resolver file.Resolver, location file.Location) (*virtualEnvInfo, error) {\n\treader, err := resolver.FileContentsByLocation(location)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read file %q: %w\", location.Path(), err)\n\t}\n\tdefer internal.CloseAndLogError(reader, location.Path())\n\n\tcfg, err := parsePyvenvCfgReader(file.NewLocationReadCloser(location, reader))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse pyvenv.cfg: %w\", err)\n\t}\n\n\treturn cfg, nil\n}\n\nfunc parsePyvenvCfgReader(reader file.LocationReadCloser) (*virtualEnvInfo, error) {\n\tscanner := bufio.NewScanner(reader)\n\n\tvenv := virtualEnvInfo{\n\t\tLocation: reader.Location,\n\t}\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tline = strings.TrimSpace(line)\n\t\tif line == \"\" || strings.HasPrefix(line, \"#\") {\n\t\t\t// skip empty lines and comments\n\t\t\tcontinue\n\t\t}\n\n\t\tparts := strings.SplitN(line, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\t// skip malformed lines\n\t\t\tcontinue\n\t\t}\n\n\t\tkey := strings.TrimSpace(parts[0])\n\t\tvalue := strings.TrimSpace(parts[1])\n\n\t\tswitch key {\n\t\tcase \"version\":\n\t\t\tvenv.Version = value\n\t\tcase \"include-system-site-packages\":\n\t\t\tvenv.IncludeSystemSitePackages = strings.ToLower(value) == \"true\"\n\t\t}\n\t}\n\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &venv, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/python/virtual_env_test.go",
    "content": "package python\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc Test_parsePyvenvCfgReader(t *testing.T) {\n\tlocation := file.NewLocation(\"/some/bogus/path\")\n\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    *virtualEnvInfo\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"parse basic pyenv file\",\n\t\t\tfixture: \"testdata/pyenv/good-config\",\n\t\t\twant: &virtualEnvInfo{\n\t\t\t\tLocation:                  location,\n\t\t\t\tVersion:                   \"3.9.5\",\n\t\t\t\tIncludeSystemSitePackages: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"trixy config cases\",\n\t\t\tfixture: \"testdata/pyenv/trixy-config\",\n\t\t\twant: &virtualEnvInfo{\n\t\t\t\tLocation:                  location,\n\t\t\t\tVersion:                   \"3.3.3\",\n\t\t\t\tIncludeSystemSitePackages: true,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\treader, err := os.Open(tt.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot, err := parsePyvenvCfgReader(file.NewLocationReadCloser(location, reader))\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: r # MANUAL\n    name: r-package-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/r/cataloger.go\n      function: NewPackageCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - language\n      - package\n      - r\n    parsers: # AUTO-GENERATED structure\n      - function: parseDescriptionFile\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/DESCRIPTION'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RDescription\n        package_types: # AUTO-GENERATED\n          - R-package\n        json_schema_types: # AUTO-GENERATED\n          - RDescription\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/r/cataloger.go",
    "content": "/*\nPackage r provides a concrete Cataloger implementation relating to packages within the R language ecosystem.\n*/\npackage r\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewPackageCataloger returns a new R cataloger object based on detection of R package DESCRIPTION files.\nfunc NewPackageCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"r-package-cataloger\").\n\t\tWithParserByGlobs(parseDescriptionFile, \"**/DESCRIPTION\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/cataloger_test.go",
    "content": "package r\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestRPackageCataloger(t *testing.T) {\n\tctx := context.Background()\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"base\",\n\t\t\tVersion:   \"4.3.0\",\n\t\t\tFoundBy:   \"r-package-cataloger\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"base/DESCRIPTION\")),\n\t\t\tLicenses:  pkg.NewLicenseSet([]pkg.License{pkg.NewLicenseWithContext(ctx, \"Part of R 4.3.0\")}...),\n\t\t\tLanguage:  pkg.R,\n\t\t\tType:      pkg.Rpkg,\n\t\t\tPURL:      \"pkg:cran/base@4.3.0\",\n\t\t\tMetadata: pkg.RDescription{\n\t\t\t\tTitle:       \"The R Base Package\",\n\t\t\t\tDescription: \"Base R functions.\",\n\t\t\t\tAuthor:      \"R Core Team and contributors worldwide\",\n\t\t\t\tMaintainer:  \"R Core Team <do-use-Contact-address@r-project.org>\",\n\t\t\t\tBuilt:       \"R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix\",\n\t\t\t\tSuggests:    []string{\"methods\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"stringr\",\n\t\t\tVersion:   \"1.5.0.9000\",\n\t\t\tFoundBy:   \"r-package-cataloger\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"stringr/DESCRIPTION\")),\n\t\t\tLicenses:  pkg.NewLicenseSet([]pkg.License{pkg.NewLicenseWithContext(ctx, \"MIT\")}...),\n\t\t\tLanguage:  pkg.R,\n\t\t\tType:      pkg.Rpkg,\n\t\t\tPURL:      \"pkg:cran/stringr@1.5.0.9000\",\n\t\t\tMetadata: pkg.RDescription{\n\t\t\t\tTitle:       \"Simple, Consistent Wrappers for Common String Operations\",\n\t\t\t\tDescription: \"A consistent, simple and easy to use set of wrappers around the fantastic 'stringi' package. All function and argument names (and positions) are consistent, all functions deal with \\\"NA\\\"'s and zero length vectors in the same way, and the output from one function is easy to feed into the input of another.\",\n\t\t\t\tURL:         []string{\"https://stringr.tidyverse.org\", \"https://github.com/tidyverse/stringr\"},\n\t\t\t\tImports: []string{\n\t\t\t\t\t\"cli\", \"glue (>= 1.6.1)\", \"lifecycle (>= 1.0.3)\", \"magrittr\",\n\t\t\t\t\t\"rlang (>= 1.0.0)\", \"stringi (>= 1.5.3)\", \"vctrs (>= 0.4.0)\",\n\t\t\t\t},\n\t\t\t\tDepends:  []string{\"R (>= 3.3)\"},\n\t\t\t\tSuggests: []string{\"covr\", \"dplyr\", \"gt\", \"htmltools\", \"htmlwidgets\", \"knitr\", \"rmarkdown\", \"testthat (>= 3.0.0)\", \"tibble\"},\n\t\t\t},\n\t\t},\n\t}\n\t// TODO: relationships are not under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.NewCatalogTester().FromDirectory(t, \"testdata/installed\").Expects(expectedPkgs, expectedRelationships).TestCataloger(t, NewPackageCataloger())\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/package.go",
    "content": "package r\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newPackage(ctx context.Context, pd parseData, locations ...file.Location) pkg.Package {\n\tlocationSet := file.NewLocationSet()\n\tfor _, loc := range locations {\n\t\tlocationSet.Add(loc.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\t}\n\n\tlicenses := parseLicenseData(ctx, pd.License)\n\n\tresult := pkg.Package{\n\t\tName:      pd.Package,\n\t\tVersion:   pd.Version,\n\t\tLocations: locationSet,\n\t\tLicenses:  pkg.NewLicenseSet(licenses...),\n\t\tLanguage:  pkg.R,\n\t\tType:      pkg.Rpkg,\n\t\tPURL:      packageURL(pd),\n\t\tMetadata:  pd.RDescription,\n\t}\n\n\tresult.SetID()\n\treturn result\n}\n\nfunc packageURL(m parseData) string {\n\treturn packageurl.NewPackageURL(\"cran\", \"\", m.Package, m.Version, nil, \"\").ToString()\n}\n\n// https://r-pkgs.org/description.html#the-license-field\n// four forms:\n// 1. \"GPL (>= 2)\"\n// 2. \"GPL-2\"\n// 3. \"MIT + file LICENSE\"\n// 4. \"pointer to the full text of the license; file LICENSE\"\n// Multiple licences can be specified separated by ‘|’\n// (surrounded by spaces) in which case the user can choose any of the above cases.\n// https://cran.rstudio.com/doc/manuals/r-devel/R-exts.html#Licensing\nfunc parseLicenseData(ctx context.Context, license string, locations ...file.Location) []pkg.License {\n\tlicenses := make([]pkg.License, 0)\n\n\t// check if multiple licenses are separated by |\n\tsplitField := strings.Split(license, \"|\")\n\tfor _, l := range splitField {\n\t\t// check case 1 for surrounding parens\n\t\tl = strings.TrimSpace(l)\n\t\tif strings.Contains(l, \"(\") && strings.Contains(l, \")\") {\n\t\t\tlicenseVersion := strings.SplitN(l, \" \", 2)\n\t\t\tif len(licenseVersion) == 2 {\n\t\t\t\tl = strings.Join([]string{licenseVersion[0], parseVersion(licenseVersion[1])}, \"\")\n\t\t\t\tlicenses = append(licenses, pkg.NewLicenseFromLocationsWithContext(ctx, l, locations...))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// case 3\n\t\tif strings.Contains(l, \"+\") && strings.Contains(l, \"LICENSE\") {\n\t\t\tsplitField := strings.Split(l, \" \")\n\t\t\tif len(splitField) > 0 {\n\t\t\t\tlicenses = append(licenses, pkg.NewLicenseFromLocationsWithContext(ctx, splitField[0], locations...))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// TODO: case 4 if we are able to read the location data and find the adjacent file?\n\t\tif l == \"file LICENSE\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// no specific case found for the above so assume case 2\n\t\t// check if the common name in case 2 is valid SDPX otherwise value will be populated\n\t\tlicenses = append(licenses, pkg.NewLicenseFromLocationsWithContext(ctx, l, locations...))\n\t\tcontinue\n\t}\n\treturn licenses\n}\n\n// attempt to make best guess at SPDX license ID from version operator in case 2\n/*\n‘<’, ‘<=’, ‘>’, ‘>=’, ‘==’, or ‘!=’\ncant be (>= 2.0) OR (>= 2.0, < 3)\nsince there is no way in SPDX licenses to express < some other version\nwe attempt to check the constraint to see if this should be + or not\n*/\nfunc parseVersion(version string) string {\n\tversion = strings.ReplaceAll(version, \"(\", \"\")\n\tversion = strings.ReplaceAll(version, \")\", \"\")\n\n\t// multiple constraints\n\tif strings.Contains(version, \",\") {\n\t\tmultipleConstraints := strings.Split(version, \",\")\n\t\t// SPDX does not support considering multiple constraints\n\t\t// so we will just take the first one and attempt to form the best SPDX ID we can\n\t\tfor _, v := range multipleConstraints {\n\t\t\tconstraintVersion := strings.SplitN(v, \" \", 2)\n\t\t\tif len(constraintVersion) == 2 {\n\t\t\t\t// switch on the operator and return the version with + or without\n\t\t\t\tswitch constraintVersion[0] {\n\t\t\t\tcase \">\", \">=\":\n\t\t\t\t\treturn constraintVersion[1] + \"+\"\n\t\t\t\tdefault:\n\t\t\t\t\treturn constraintVersion[1]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// single constraint\n\tsingleContraint := strings.Split(version, \" \")\n\tif len(singleContraint) == 2 {\n\t\tswitch singleContraint[0] {\n\t\tcase \">\", \">=\":\n\t\t\treturn singleContraint[1] + \"+\"\n\t\tdefault:\n\t\t\treturn singleContraint[1]\n\t\t}\n\t}\n\n\t// could not parse version constraint so return \"\"\n\treturn \"\"\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/package_test.go",
    "content": "package r\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_NewPackageLicenses(t *testing.T) {\n\tctx := context.TODO()\n\ttestCases := []struct {\n\t\tname string\n\t\tpd   parseData\n\t\twant []pkg.License\n\t}{\n\t\t{\n\t\t\t\"License field with single valid spdx\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Foo\",\n\t\t\t\tVersion: \"1\",\n\t\t\t\tLicense: \"MIT\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"License field with single version separator no +\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Bar\",\n\t\t\t\tVersion: \"2\",\n\t\t\t\tLicense: \"LGPL (== 2.0)\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"LGPL2.0\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"License field with multiple version separator\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Bar\",\n\t\t\t\tVersion: \"2\",\n\t\t\t\tLicense: \"LGPL (>= 2.0, < 3)\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"LGPL2.0+\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"License field with file reference\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Baz\",\n\t\t\t\tVersion: \"3\",\n\t\t\t\tLicense: \"GPL-2 + file LICENSE\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"License field which covers no case\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Baz\",\n\t\t\t\tVersion: \"3\",\n\t\t\t\tLicense: \"Mozilla Public License\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"Mozilla Public License\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"License field with multiple cases\",\n\t\t\tparseData{\n\t\t\t\tPackage: \"Baz\",\n\t\t\t\tVersion: \"3\",\n\t\t\t\tLicense: \"GPL-2 | file LICENSE | LGPL (>= 2.0)\",\n\t\t\t},\n\t\t\t[]pkg.License{\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2\"),\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"LGPL2.0+\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range testCases {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := parseLicenseData(ctx, tt.pd.License)\n\t\t\tif len(got) != len(tt.want) {\n\t\t\t\tt.Errorf(\"unexpected number of licenses: got=%d, want=%d\", len(got), len(tt.want))\n\t\t\t}\n\n\t\t\tfor _, wantLicense := range tt.want {\n\t\t\t\tfound := false\n\t\t\t\tfor _, gotLicense := range got {\n\t\t\t\t\tif wantLicense.Type == gotLicense.Type &&\n\t\t\t\t\t\twantLicense.SPDXExpression == gotLicense.SPDXExpression &&\n\t\t\t\t\t\twantLicense.Value == gotLicense.Value {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\tt.Errorf(\"could not find expected license: %+v; got: %+v\", wantLicense, got)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/parse_description.go",
    "content": "package r\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"io\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\n/* some examples of license strings found in DESCRIPTION files:\nfind /usr/local/lib/R -name DESCRIPTION | xargs cat | grep 'License:' | sort | uniq\nLicense: GPL\nLicense: GPL (>= 2)\nLicense: GPL (>=2)\nLicense: GPL(>=2)\nLicense: GPL (>= 2) | file LICENCE\nLicense: GPL-2 | GPL-3\nLicense: GPL-3\nLicense: LGPL (>= 2)\nLicense: LGPL (>= 2.1)\nLicense: MIT + file LICENSE\nLicense: Part of R 4.3.0\nLicense: Unlimited\n*/\n\nfunc parseDescriptionFile(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvalues := extractFieldsFromDescriptionFile(reader)\n\tm := parseDataFromDescriptionMap(values)\n\tp := newPackage(ctx, m, []file.Location{reader.Location}...)\n\tif p.Name == \"\" || p.Version == \"\" {\n\t\treturn nil, nil, nil\n\t}\n\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\treturn []pkg.Package{p}, nil, nil\n}\n\ntype parseData struct {\n\tPackage string\n\tVersion string\n\tLicense string\n\tpkg.RDescription\n}\n\nfunc parseDataFromDescriptionMap(values map[string]string) parseData {\n\treturn parseData{\n\t\tLicense: values[\"License\"],\n\t\tPackage: values[\"Package\"],\n\t\tVersion: values[\"Version\"],\n\t\tRDescription: pkg.RDescription{\n\t\t\tTitle:            values[\"Title\"],\n\t\t\tDescription:      cleanMultiLineValue(values[\"Description\"]),\n\t\t\tMaintainer:       values[\"Maintainer\"],\n\t\t\tURL:              commaSeparatedList(values[\"URL\"]),\n\t\t\tDepends:          commaSeparatedList(values[\"Depends\"]),\n\t\t\tImports:          commaSeparatedList(values[\"Imports\"]),\n\t\t\tSuggests:         commaSeparatedList(values[\"Suggests\"]),\n\t\t\tNeedsCompilation: yesNoToBool(values[\"NeedsCompilation\"]),\n\t\t\tAuthor:           values[\"Author\"],\n\t\t\tRepository:       values[\"Repository\"],\n\t\t\tBuilt:            values[\"Built\"],\n\t\t},\n\t}\n}\n\nfunc yesNoToBool(s string) bool {\n\t/*\n\t\t$ docker run --rm -it rocker/r-ver bash\n\t\t$ install2.r ggplot2 dplyr mlr3 caret # just some packages for a larger sample\n\t\t$ find /usr/local/lib/R -name DESCRIPTION | xargs cat | grep 'NeedsCompilation:' | sort | uniq\n\t\tNeedsCompilation: no\n\t\tNeedsCompilation: yes\n\t\t$ find /usr/local/lib/R -name DESCRIPTION | xargs cat | grep 'NeedsCompilation:' | wc -l\n\t\t105\n\t*/\n\treturn strings.EqualFold(s, \"yes\")\n}\n\nfunc commaSeparatedList(s string) []string {\n\tvar result []string\n\tsplit := strings.Split(s, \",\")\n\tfor _, piece := range split {\n\t\tvalue := strings.TrimSpace(piece)\n\t\tif value == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tresult = append(result, value)\n\t}\n\treturn result\n}\n\nvar space = regexp.MustCompile(`\\s+`)\n\nfunc cleanMultiLineValue(s string) string {\n\treturn space.ReplaceAllString(s, \" \")\n}\n\nfunc extractFieldsFromDescriptionFile(reader io.Reader) map[string]string {\n\tresult := make(map[string]string)\n\tkey := \"\"\n\tvar valueFragment strings.Builder\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\t// line is like Key: Value -> start capturing value; close out previous value\n\t\t// line is like \\t\\t continued value -> append to existing value\n\t\tif len(line) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tif startsWithWhitespace(line) {\n\t\t\t// we're continuing a value\n\t\t\tif key == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvalueFragment.WriteByte('\\n')\n\t\t\tvalueFragment.WriteString(strings.TrimSpace(line))\n\t\t} else {\n\t\t\tif key != \"\" {\n\t\t\t\t// capture previous value\n\t\t\t\tresult[key] = valueFragment.String()\n\t\t\t\tkey = \"\"\n\t\t\t\tvalueFragment = strings.Builder{}\n\t\t\t}\n\t\t\tparts := strings.SplitN(line, \":\", 2)\n\t\t\tif len(parts) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tkey = parts[0]\n\t\t\tvalueFragment.WriteString(strings.TrimSpace(parts[1]))\n\t\t}\n\t}\n\tif key != \"\" {\n\t\tresult[key] = valueFragment.String()\n\t}\n\treturn result\n}\n\nfunc startsWithWhitespace(s string) bool {\n\tif s == \"\" {\n\t\treturn false\n\t}\n\treturn s[0] == ' ' || s[0] == '\\t'\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/parse_description_test.go",
    "content": "package r\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_parseDescriptionFile(t *testing.T) {\n\ttype packageAssertions []func(*testing.T, []pkg.Package)\n\ttests := []struct {\n\t\tname       string\n\t\tassertions packageAssertions\n\t\tfixture    string\n\t}{\n\t\t{\n\t\t\tname:    \"no package is returned if no version found\",\n\t\t\tfixture: filepath.Join(\"testdata\", \"map-parse\", \"no-version\"),\n\t\t\tassertions: packageAssertions{\n\t\t\t\tfunc(t *testing.T, p []pkg.Package) {\n\t\t\t\t\tassert.Empty(t, p)\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"no package is returned if no package name found\",\n\t\t\tfixture: filepath.Join(\"testdata\", \"map-parse\", \"no-name\"),\n\t\t\tassertions: packageAssertions{\n\t\t\t\tfunc(t *testing.T, p []pkg.Package) {\n\t\t\t\t\tassert.Empty(t, p)\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"package return if both name and version found\",\n\t\t\tfixture: filepath.Join(\"testdata\", \"map-parse\", \"simple\"),\n\t\t\tassertions: packageAssertions{\n\t\t\t\tfunc(t *testing.T, p []pkg.Package) {\n\t\t\t\t\tassert.Equal(t, 1, len(p))\n\t\t\t\t\tassert.Equal(t, \"base\", p[0].Name)\n\t\t\t\t\tassert.Equal(t, \"4.3.0\", p[0].Version)\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tf, err := os.Open(tt.fixture)\n\t\t\tinput := file.LocationReadCloser{\n\t\t\t\tLocation:   file.NewLocation(tt.fixture),\n\t\t\t\tReadCloser: f,\n\t\t\t}\n\t\t\tgot, _, err := parseDescriptionFile(context.Background(), fileresolver.Empty{}, nil, input)\n\t\t\tassert.NoError(t, err)\n\t\t\tfor _, assertion := range tt.assertions {\n\t\t\t\tassertion(t, got)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_extractFieldsFromDescriptionFile(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t\twant    map[string]string\n\t}{\n\t\t{\n\t\t\tname:    \"go case\",\n\t\t\tfixture: \"testdata/map-parse/simple\",\n\t\t\twant: map[string]string{\n\t\t\t\t\"Package\":  \"base\",\n\t\t\t\t\"Version\":  \"4.3.0\",\n\t\t\t\t\"Suggests\": \"methods\",\n\t\t\t\t\"Built\":    \"R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"bad cases\",\n\t\t\tfixture: \"testdata/map-parse/bad\",\n\t\t\twant: map[string]string{\n\t\t\t\t\"Key\":        \"\",\n\t\t\t\t\"Whitespace\": \"\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"multiline key-value\",\n\t\t\tfixture: \"testdata/map-parse/multiline\",\n\t\t\twant: map[string]string{\n\t\t\t\t\"Description\": `A consistent, simple and easy to use set of wrappers around\nthe fantastic 'stringi' package. All function and argument names (and\npositions) are consistent, all functions deal with \"NA\"'s and zero\nlength vectors in the same way, and the output from one function is\neasy to feed into the input of another.`,\n\t\t\t\t\"License\": \"MIT + file LICENSE\",\n\t\t\t\t\"Key\":     \"value\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"eof multiline\",\n\t\t\tfixture: \"testdata/map-parse/eof-multiline\",\n\t\t\twant: map[string]string{\n\t\t\t\t\"License\": \"MIT + file LICENSE\",\n\t\t\t\t\"Description\": `A consistent, simple and easy to use set of wrappers around\nthe fantastic 'stringi' package. All function and argument names (and\npositions) are consistent, all functions deal with \"NA\"'s and zero\nlength vectors in the same way, and the output from one function is\neasy to feed into the input of another.`,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfile, err := os.Open(test.fixture)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tresult := extractFieldsFromDescriptionFile(file)\n\n\t\t\tassert.Equal(t, test.want, result)\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/DESCRIPTION",
    "content": "Package: stringr\nTitle: Simple, Consistent Wrappers for Common String Operations\nVersion: 1.5.0.9000\nAuthors@R: \n    c(person(given = \"Hadley\",\n             family = \"Wickham\",\n             role = c(\"aut\", \"cre\", \"cph\"),\n             email = \"hadley@rstudio.com\"),\n      person(given = \"RStudio\",\n             role = c(\"cph\", \"fnd\")))\nDescription: A consistent, simple and easy to use set of wrappers around\n    the fantastic 'stringi' package. All function and argument names (and\n    positions) are consistent, all functions deal with \"NA\"'s and zero\n    length vectors in the same way, and the output from one function is\n    easy to feed into the input of another.\nLicense: MIT + file LICENSE\nURL: https://stringr.tidyverse.org, https://github.com/tidyverse/stringr\nBugReports: https://github.com/tidyverse/stringr/issues\nDepends: \n    R (>= 3.3)\nImports: \n    cli,\n    glue (>= 1.6.1),\n    lifecycle (>= 1.0.3),\n    magrittr,\n    rlang (>= 1.0.0),\n    stringi (>= 1.5.3),\n    vctrs (>= 0.4.0)\nSuggests: \n    covr,\n    dplyr,\n    gt,\n    htmltools,\n    htmlwidgets,\n    knitr,\n    rmarkdown,\n    testthat (>= 3.0.0),\n    tibble\nVignetteBuilder: \n    knitr\nConfig/Needs/website: tidyverse/tidytemplate\nConfig/testthat/edition: 3\nEncoding: UTF-8\nLazyData: true\nRoxygen: list(markdown = TRUE)\nRoxygenNote: 7.2.1\n"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/installed/base/DESCRIPTION",
    "content": "Package: base\nVersion: 4.3.0\nPriority: base\nTitle: The R Base Package\nAuthor: R Core Team and contributors worldwide\nMaintainer: R Core Team <do-use-Contact-address@r-project.org>\nContact: R-help mailing list <r-help@r-project.org>\nDescription: Base R functions.\nLicense: Part of R 4.3.0\nSuggests: methods\nBuilt: R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/installed/stringr/DESCRIPTION",
    "content": "Package: stringr\nTitle: Simple, Consistent Wrappers for Common String Operations\nVersion: 1.5.0.9000\nAuthors@R: \n    c(person(given = \"Hadley\",\n             family = \"Wickham\",\n             role = c(\"aut\", \"cre\", \"cph\"),\n             email = \"hadley@rstudio.com\"),\n      person(given = \"RStudio\",\n             role = c(\"cph\", \"fnd\")))\nDescription: A consistent, simple and easy to use set of wrappers around\n    the fantastic 'stringi' package. All function and argument names (and\n    positions) are consistent, all functions deal with \"NA\"'s and zero\n    length vectors in the same way, and the output from one function is\n    easy to feed into the input of another.\nLicense: MIT + file LICENSE\nURL: https://stringr.tidyverse.org, https://github.com/tidyverse/stringr\nBugReports: https://github.com/tidyverse/stringr/issues\nDepends: \n    R (>= 3.3)\nImports: \n    cli,\n    glue (>= 1.6.1),\n    lifecycle (>= 1.0.3),\n    magrittr,\n    rlang (>= 1.0.0),\n    stringi (>= 1.5.3),\n    vctrs (>= 0.4.0)\nSuggests: \n    covr,\n    dplyr,\n    gt,\n    htmltools,\n    htmlwidgets,\n    knitr,\n    rmarkdown,\n    testthat (>= 3.0.0),\n    tibble\nVignetteBuilder: \n    knitr\nConfig/Needs/website: tidyverse/tidytemplate\nConfig/testthat/edition: 3\nEncoding: UTF-8\nLazyData: true\nRoxygen: list(markdown = TRUE)\nRoxygenNote: 7.2.1\n"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/bad",
    "content": "MissingColon\nWhitespace:    \nKey:"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/eof-multiline",
    "content": "License: MIT + file LICENSE\nDescription: A consistent, simple and easy to use set of wrappers around\n    the fantastic 'stringi' package. All function and argument names (and\n    positions) are consistent, all functions deal with \"NA\"'s and zero\n    length vectors in the same way, and the output from one function is\n    easy to feed into the input of another."
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/multiline",
    "content": "Key: value\n\nDescription: A consistent, simple and easy to use set of wrappers around\n    the fantastic 'stringi' package. All function and argument names (and\n    positions) are consistent, all functions deal with \"NA\"'s and zero\n    length vectors in the same way, and the output from one function is\n    easy to feed into the input of another.\nLicense: MIT + file LICENSE"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/no-name",
    "content": "Version: 1.2.3\nDescription: a package with no name\n"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/no-version",
    "content": "Package: foo\n"
  },
  {
    "path": "syft/pkg/cataloger/r/testdata/map-parse/simple",
    "content": "Package: base\nVersion: 4.3.0\nSuggests: methods\nBuilt: R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: rpm # MANUAL\n    name: rpm-archive-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/redhat/cataloger.go\n      function: NewArchiveCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - linux\n      - os\n      - package\n      - redhat\n      - rpm\n    parsers: # AUTO-GENERATED structure\n      - function: parseRpmArchive\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.rpm'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RpmArchive\n        package_types: # AUTO-GENERATED\n          - rpm\n        json_schema_types: # AUTO-GENERATED\n          - RpmArchive\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - RpmArchive.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - RpmArchive.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: rpm # MANUAL\n    name: rpm-db-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/redhat/cataloger.go\n      function: NewDBCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - linux\n      - os\n      - package\n      - redhat\n      - rpm\n    parsers: # AUTO-GENERATED structure\n      - function: parseRpmManifest\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/var/lib/rpmmanifest/container-manifest-2'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RpmDBEntry\n        package_types: # AUTO-GENERATED\n          - rpm\n        json_schema_types: # AUTO-GENERATED\n          - RpmDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseRpmDB\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/{var/lib,usr/share,usr/lib/sysimage}/rpm/{Packages,Packages.db,rpmdb.sqlite}'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RpmDBEntry\n        package_types: # AUTO-GENERATED\n          - rpm\n        json_schema_types: # AUTO-GENERATED\n          - RpmDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - RpmDBEntry.Files\n          - name: package_manager.files.digests\n            default: true\n            evidence:\n              - RpmDBEntry.Files[].Digest\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/cataloger.go",
    "content": "/*\nPackage redhat provides a concrete DBCataloger implementation relating to packages within the RedHat linux distribution.\n*/\npackage redhat\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\n// NewDBCataloger returns a new RPM DB cataloger object.\nfunc NewDBCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"rpm-db-cataloger\").\n\t\tWithParserByGlobs(parseRpmDB, pkg.RpmDBGlob).\n\t\tWithParserByGlobs(parseRpmManifest, pkg.RpmManifestGlob).\n\t\tWithProcessors(dependency.Processor(dbEntryDependencySpecifier), denySelfReferences).\n\t\tWithChecks(ensureSqliteDriverAvailable)\n}\n\nfunc denySelfReferences(pkgs []pkg.Package, rels []artifact.Relationship, err error) ([]pkg.Package, []artifact.Relationship, error) {\n\t// it can be common for dependency evidence to be self-referential (e.g. bash depends on bash), which is not useful\n\t// for the dependency graph, thus we remove these cases\n\tfor i := 0; i < len(rels); i++ {\n\t\tif rels[i].Type != artifact.DependencyOfRelationship {\n\t\t\tcontinue\n\t\t}\n\t\tif rels[i].From.ID() == rels[i].To.ID() {\n\t\t\trels = append(rels[:i], rels[i+1:]...)\n\t\t\ti--\n\t\t}\n\t}\n\treturn pkgs, rels, err\n}\n\n// NewArchiveCataloger returns a new RPM file cataloger object.\nfunc NewArchiveCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"rpm-archive-cataloger\").\n\t\tWithParserByGlobs(parseRpmArchive, \"**/*.rpm\")\n}\n\nfunc ensureSqliteDriverAvailable() error {\n\tdb, err := sql.Open(\"sqlite\", \":memory:\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"sqlite driver is required for cataloging newer RPM databases, none registered: %v\", err)\n\t}\n\t_ = db.Close()\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/cataloger_test.go",
    "content": "package redhat\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t_ \"modernc.org/sqlite\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_DBCataloger(t *testing.T) {\n\tctx := context.TODO()\n\tdbLocation := file.NewLocation(\"/var/lib/rpm/rpmdb.sqlite\")\n\tlocations := file.NewLocationSet(dbLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\n\tbasePkg := pkg.Package{\n\t\tName:      \"basesystem\",\n\t\tVersion:   \"11-13.el9\",\n\t\tType:      pkg.RpmPkg,\n\t\tLocations: locations,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseFromLocationsWithContext(ctx, \"Public Domain\", dbLocation)),\n\t\tFoundBy:   \"rpm-db-cataloger\",\n\t\tPURL:      \"pkg:rpm/basesystem@11-13.el9?arch=noarch&upstream=basesystem-11-13.el9.src.rpm\",\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tName:       \"basesystem\",\n\t\t\tVersion:    \"11\",\n\t\t\tArch:       \"noarch\",\n\t\t\tRelease:    \"13.el9\",\n\t\t\tSourceRpm:  \"basesystem-11-13.el9.src.rpm\",\n\t\t\tSize:       0,\n\t\t\tVendor:     \"Rocky Enterprise Software Foundation\",\n\t\t\tSignatures: mustParseSignatures(t, \"RSA/SHA256, Wed May 11 11:12:32 2022, Key ID 702d426d350d275d\"),\n\t\t\tProvides:   []string{\"basesystem\"},\n\t\t\tRequires: []string{\n\t\t\t\t\"filesystem\",\n\t\t\t\t\"rpmlib(CompressedFileNames)\",\n\t\t\t\t\"rpmlib(FileDigests)\",\n\t\t\t\t\"rpmlib(PayloadFilesHavePrefix)\",\n\t\t\t\t\"rpmlib(PayloadIsZstd)\",\n\t\t\t\t\"setup\",\n\t\t\t},\n\t\t\tModularityLabel: strRef(\"\"),\n\t\t},\n\t}\n\tbasePkg.SetID()\n\n\tbashPkg := pkg.Package{\n\t\tName:      \"bash\",\n\t\tVersion:   \"5.1.8-6.el9_1\",\n\t\tType:      pkg.RpmPkg,\n\t\tLocations: locations,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseFromLocationsWithContext(ctx, \"GPLv3+\", dbLocation)),\n\t\tFoundBy:   \"rpm-db-cataloger\",\n\t\tPURL:      \"pkg:rpm/bash@5.1.8-6.el9_1?arch=x86_64&upstream=bash-5.1.8-6.el9_1.src.rpm\",\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tName:            \"bash\",\n\t\t\tVersion:         \"5.1.8\",\n\t\t\tArch:            \"x86_64\",\n\t\t\tRelease:         \"6.el9_1\",\n\t\t\tSourceRpm:       \"bash-5.1.8-6.el9_1.src.rpm\",\n\t\t\tSize:            7738634,\n\t\t\tSignatures:      mustParseSignatures(t, \"RSA/SHA256, Mon Jan 23 22:49:22 2023, Key ID 702d426d350d275d\"),\n\t\t\tModularityLabel: strRef(\"\"),\n\t\t\tVendor:          \"Rocky Enterprise Software Foundation\",\n\t\t\tProvides: []string{\n\t\t\t\t\"/bin/bash\",\n\t\t\t\t\"/bin/sh\",\n\t\t\t\t\"bash\",\n\t\t\t\t\"bash(x86-64)\",\n\t\t\t\t\"config(bash)\",\n\t\t\t},\n\t\t\tRequires: []string{\n\t\t\t\t\"/usr/bin/sh\",\n\t\t\t\t\"config(bash)\",\n\t\t\t\t\"filesystem\",\n\t\t\t\t\"libc.so.6()(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.11)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.14)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.15)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.2.5)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.25)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.3)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.3.4)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.33)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.34)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.4)(64bit)\",\n\t\t\t\t\"libc.so.6(GLIBC_2.8)(64bit)\",\n\t\t\t\t\"libtinfo.so.6()(64bit)\",\n\t\t\t\t\"rpmlib(BuiltinLuaScripts)\",\n\t\t\t\t\"rpmlib(CompressedFileNames)\",\n\t\t\t\t\"rpmlib(FileDigests)\",\n\t\t\t\t\"rpmlib(PayloadFilesHavePrefix)\",\n\t\t\t\t\"rpmlib(PayloadIsZstd)\",\n\t\t\t\t\"rtld(GNU_HASH)\",\n\t\t\t},\n\t\t},\n\t}\n\tbashPkg.SetID()\n\n\tfilesystemPkg := pkg.Package{\n\t\tName:      \"filesystem\",\n\t\tVersion:   \"3.16-2.el9\",\n\t\tType:      pkg.RpmPkg,\n\t\tLocations: locations,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseFromLocationsWithContext(ctx, \"Public Domain\", dbLocation)),\n\t\tFoundBy:   \"rpm-db-cataloger\",\n\t\tPURL:      \"pkg:rpm/filesystem@3.16-2.el9?arch=x86_64&upstream=filesystem-3.16-2.el9.src.rpm\",\n\t\tMetadata: pkg.RpmDBEntry{\n\t\t\tName:            \"filesystem\",\n\t\t\tVersion:         \"3.16\",\n\t\t\tArch:            \"x86_64\",\n\t\t\tRelease:         \"2.el9\",\n\t\t\tSourceRpm:       \"filesystem-3.16-2.el9.src.rpm\",\n\t\t\tSize:            106,\n\t\t\tSignatures:      mustParseSignatures(t, \"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\"),\n\t\t\tModularityLabel: strRef(\"\"),\n\t\t\tVendor:          \"Rocky Enterprise Software Foundation\",\n\t\t\tProvides: []string{\n\t\t\t\t\"filesystem\",\n\t\t\t\t\"filesystem(x86-64)\",\n\t\t\t\t\"filesystem-afs\",\n\t\t\t},\n\t\t\tRequires: []string{\n\t\t\t\t\"/bin/sh\",\n\t\t\t\t\"rpmlib(BuiltinLuaScripts)\",\n\t\t\t\t\"rpmlib(CompressedFileNames)\",\n\t\t\t\t\"rpmlib(FileDigests)\",\n\t\t\t\t\"rpmlib(PayloadFilesHavePrefix)\",\n\t\t\t\t\"rpmlib(PayloadIsZstd)\",\n\t\t\t\t\"setup\",\n\t\t\t},\n\t\t},\n\t}\n\tfilesystemPkg.SetID()\n\n\texpectedPackages := []pkg.Package{basePkg, bashPkg, filesystemPkg}\n\n\t// Note that you'll see a cycle:\n\t//   bash --(requires)--> filesystem\n\t//   filesystem --(requires)--> bash\n\t//\n\t// This is not a bug!\n\t//\n\t// [root@c1a4773e8a8d /]# dnf repoquery --requires --resolve filesystem\n\t//   bash-0:5.1.8-9.el9.aarch64\n\t//   setup-0:2.13.7-10.el9.noarch\n\t//\n\t//[root@c1a4773e8a8d /]# dnf repoquery --requires --resolve bash\n\t//  filesystem-0:3.16-2.el9.aarch64\n\t//  glibc-0:2.34-100.el9.aarch64\n\t//  ncurses-libs-0:6.2-10.20210508.el9.aarch64\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t// though this is expressible in the RPM DB (package depends on itself), we do not allow for it in the SBOM\n\t\t//{\n\t\t//\tFrom: bashPkg,\n\t\t//\tTo:   bashPkg,\n\t\t//\tType: artifact.DependencyOfRelationship,\n\t\t//},\n\t\t{\n\t\t\tFrom: bashPkg,\n\t\t\tTo:   filesystemPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: filesystemPkg,\n\t\t\tTo:   basePkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: filesystemPkg,\n\t\t\tTo:   bashPkg,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tWithImageResolver(t, \"image-minimal\").\n\t\tIgnoreLocationLayer().                                               // this fixture can be rebuilt, thus the layer ID will change\n\t\tWithCompareOptions(cmpopts.IgnoreFields(pkg.RpmDBEntry{}, \"Files\")). // this is rather long... ano not the point of the test\n\t\tExpects(expectedPackages, expectedRelationships).\n\t\tTestCataloger(t, NewDBCataloger())\n\n}\n\nfunc Test_DBCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain DB files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"usr/share/rpm/Packages\",\n\t\t\t\t\"usr/share/rpm/Packages.db\",\n\t\t\t\t\"usr/share/rpm/rpmdb.sqlite\",\n\t\t\t\t\"var/lib/rpm/Packages\",\n\t\t\t\t\"var/lib/rpm/Packages.db\",\n\t\t\t\t\"var/lib/rpm/rpmdb.sqlite\",\n\t\t\t\t\"var/lib/rpmmanifest/container-manifest-2\",\n\t\t\t\t\"usr/lib/sysimage/rpm/Packages\",\n\t\t\t\t\"usr/lib/sysimage/rpm/Packages.db\",\n\t\t\t\t\"usr/lib/sysimage/rpm/rpmdb.sqlite\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewDBCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_RPMFileCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain rpm files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"dive-0.10.0.rpm\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewArchiveCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_denySelfReferences(t *testing.T) {\n\ta := pkg.Package{\n\t\tName: \"a\",\n\t}\n\ta.SetID()\n\tb := pkg.Package{\n\t\tName: \"b\",\n\t}\n\tb.SetID()\n\tc := pkg.Package{\n\t\tName: \"c\",\n\t}\n\tc.SetID()\n\n\tpkgs := []pkg.Package{a, b, c}\n\n\ttests := []struct {\n\t\tname              string\n\t\tpkgs              []pkg.Package\n\t\trels              []artifact.Relationship\n\t\terr               error\n\t\twantPkgs          int\n\t\twantRelationships int\n\t\twantErr           assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"no self references\",\n\t\t\tpkgs: pkgs,\n\t\t\trels: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   b,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs:          3,\n\t\t\twantRelationships: 1,\n\t\t\twantErr:           assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"remove self references\",\n\t\t\tpkgs: pkgs,\n\t\t\trels: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   a,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   b,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\twantPkgs:          3,\n\t\t\twantRelationships: 1,\n\t\t\twantErr:           assert.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"preserve errors\",\n\t\t\tpkgs: pkgs,\n\t\t\trels: []artifact.Relationship{\n\t\t\t\t{\n\t\t\t\t\tFrom: a,\n\t\t\t\t\tTo:   b,\n\t\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t\t},\n\t\t\t},\n\t\t\terr:               errors.New(\"stop me!\"),\n\t\t\twantPkgs:          3,\n\t\t\twantRelationships: 1,\n\t\t\twantErr:           assert.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\n\t\t\tgotPkgs, gotRels, err := denySelfReferences(tt.pkgs, tt.rels, tt.err)\n\n\t\t\ttt.wantErr(t, err)\n\t\t\tassert.Len(t, gotPkgs, tt.wantPkgs)\n\t\t\tassert.Len(t, gotRels, tt.wantRelationships)\n\t\t})\n\t}\n}\n\nfunc mustParseSignatures(t testing.TB, sigs ...string) []pkg.RpmSignature {\n\tsignatures, err := parseSignatures(sigs...)\n\trequire.NoError(t, err)\n\treturn signatures\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/dependency.go",
    "content": "package redhat\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar _ dependency.Specifier = dbEntryDependencySpecifier\n\nfunc dbEntryDependencySpecifier(p pkg.Package) dependency.Specification {\n\tmeta, ok := p.Metadata.(pkg.RpmDBEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract rpmdb metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\tprovides := []string{p.Name}\n\tfor _, key := range meta.Provides {\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif !isSupportedKey(key) {\n\t\t\tcontinue\n\t\t}\n\t\tprovides = append(provides, key)\n\t}\n\n\t// all owned files are also considered \"provides\" for the package\n\tfor _, f := range meta.Files {\n\t\tprovides = append(provides, f.Path)\n\t}\n\n\tvar requires []string\n\tfor _, key := range meta.Requires {\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif !isSupportedKey(key) {\n\t\t\tcontinue\n\t\t}\n\t\trequires = append(requires, key)\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: requires,\n\t\t},\n\t}\n}\n\nfunc isSupportedKey(key string) bool {\n\t// '(' indicates the start of a boolean expression, which is not supported in syft at this time.\n\t// See https://rpm-software-management.github.io/rpm/manual/boolean_dependencies.html for more details\n\t//\n\t// examples:\n\t//  - (rpmlib(PayloadIsZstd) <= 5.4.18-1)\n\t//  - (glibc-gconv-extra(aarch-64) = 2.34-83.el9.12 if redhat-rpm-config)\n\t//  - (java-headless or java-17-headless or java-11-headless or java-1.8.0-headless)\n\t//  - (llvm if clang)\n\t//  - (pyproject-rpm-macros = 1.9.0-1.el9 if pyproject-rpm-macros)\n\t//  - (gcc >= 11 with gcc < 12)\n\n\treturn !strings.HasPrefix(strings.TrimSpace(key), \"(\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/dependency_test.go",
    "content": "package redhat\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nfunc Test_dbEntryDependencySpecifier(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tp    pkg.Package\n\t\twant dependency.Specification\n\t}{\n\t\t{\n\t\t\tname: \"keeps given values + package name\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-c\",\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tProvides: []string{\"a-thing\"},\n\t\t\t\t\tRequires: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-c\", \"a-thing\"},\n\t\t\t\t\tRequires: []string{\"b-thing\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"strip unsupported keys\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tProvides: []string{\"libc.so.6(GLIBC_2.11)(64bit)\"},\n\t\t\t\t\tRequires: []string{\"config(bash)\", \"(llvm if clang)\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\", \"libc.so.6(GLIBC_2.11)(64bit)\"},\n\t\t\t\t\tRequires: []string{\"config(bash)\"},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty dependency data entries\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName: \"package-a\",\n\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\tProvides: []string{\"\"},\n\t\t\t\t\tRequires: []string{\"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: dependency.Specification{\n\t\t\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\t\t\tProvides: []string{\"package-a\"},\n\t\t\t\t\tRequires: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, dbEntryDependencySpecifier(tt.p))\n\t\t})\n\t}\n}\n\nfunc Test_isSupportedKey(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tkey  string\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tname: \"paths allowed\",\n\t\t\tkey:  \"/usr/bin/sh\",\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"spaces stripped\",\n\t\t\tkey:  \" filesystem \",\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"empty key\",\n\t\t\tkey:  \"\",\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tname: \"boolean expression\",\n\t\t\tkey:  \"(pyproject-rpm-macros = 1.9.0-1.el9 if pyproject-rpm-macros)\",\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tname: \"boolean expression with spaces stripped\",\n\t\t\tkey:  \" (llvm if clang)\",\n\t\t\twant: false,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, isSupportedKey(tt.key))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/package.go",
    "content": "package redhat\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newDBPackage(ctx context.Context, dbOrRpmLocation file.Location, m pkg.RpmDBEntry, distro *linux.Release, licenses []string) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   toELVersion(m.Epoch, m.Version, m.Release),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, dbOrRpmLocation, licenses...)...),\n\t\tPURL:      packageURL(m.Name, m.Arch, m.Epoch, m.SourceRpm, m.Version, m.Release, distro),\n\t\tLocations: file.NewLocationSet(dbOrRpmLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tType:      pkg.RpmPkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\nfunc newArchivePackage(ctx context.Context, archiveLocation file.Location, m pkg.RpmArchive, licenses []string) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   toELVersion(m.Epoch, m.Version, m.Release),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, archiveLocation, licenses...)...),\n\t\tPURL:      packageURL(m.Name, m.Arch, m.Epoch, m.SourceRpm, m.Version, m.Release, nil),\n\t\tLocations: file.NewLocationSet(archiveLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tType:      pkg.RpmPkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\n// newMetadataFromManifestLine parses an entry in an RPM manifest file as used in Mariner distroless containers.\n// Each line is the output from:\n// - rpm --query --all --query-format \"%{NAME}\\t%{VERSION}-%{RELEASE}\\t%{INSTALLTIME}\\t%{BUILDTIME}\\t%{VENDOR}\\t%{EPOCH}\\t%{SIZE}\\t%{ARCH}\\t%{EPOCHNUM}\\t%{SOURCERPM}\\n\"\n// - https://github.com/microsoft/CBL-Mariner/blob/3df18fac373aba13a54bd02466e64969574f13af/toolkit/docs/how_it_works/5_misc.md?plain=1#L150\nfunc newMetadataFromManifestLine(entry string) (*pkg.RpmDBEntry, error) {\n\tparts := strings.Split(entry, \"\\t\")\n\tif len(parts) < 10 {\n\t\treturn nil, fmt.Errorf(\"unexpected number of fields in line: %s\", entry)\n\t}\n\n\tversionParts := strings.Split(parts[1], \"-\")\n\tif len(versionParts) != 2 {\n\t\treturn nil, fmt.Errorf(\"unexpected version field: %s\", parts[1])\n\t}\n\tversion := versionParts[0]\n\trelease := versionParts[1]\n\n\tconverted, err := strconv.Atoi(parts[8])\n\tvar epoch *int\n\tif err != nil || parts[5] == \"(none)\" {\n\t\tepoch = nil\n\t} else {\n\t\tepoch = &converted\n\t}\n\n\tconverted, err = strconv.Atoi(parts[6])\n\tvar size int\n\tif err == nil {\n\t\tsize = converted\n\t}\n\treturn &pkg.RpmDBEntry{\n\t\tName:      parts[0],\n\t\tVersion:   version,\n\t\tEpoch:     epoch,\n\t\tArch:      parts[7],\n\t\tRelease:   release,\n\t\tSourceRpm: parts[9],\n\t\tVendor:    parts[4],\n\t\tSize:      size,\n\t}, nil\n}\n\n// packageURL returns the PURL for the specific RHEL or Hummingbird package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, arch string, epoch *int, srpm string, version, release string, distro *linux.Release) string {\n\tvar namespace string\n\tif distro != nil {\n\t\tnamespace = distro.ID\n\t}\n\tif namespace == \"rhel\" || namespace == \"hummingbird\" {\n\t\tnamespace = \"redhat\"\n\t}\n\tif strings.HasPrefix(namespace, \"opensuse\") {\n\t\tnamespace = \"opensuse\"\n\t}\n\n\tqualifiers := map[string]string{}\n\n\tif arch != \"\" {\n\t\tqualifiers[pkg.PURLQualifierArch] = arch\n\t}\n\n\tif epoch != nil {\n\t\tqualifiers[pkg.PURLQualifierEpoch] = strconv.Itoa(*epoch)\n\t}\n\n\tif srpm != \"\" {\n\t\tqualifiers[pkg.PURLQualifierUpstream] = srpm\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeRPM,\n\t\tnamespace,\n\t\tname,\n\t\t// for purl the epoch is a qualifier, not part of the version\n\t\t// see https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst under the RPM section\n\t\tfmt.Sprintf(\"%s-%s\", version, release),\n\t\tpkg.PURLQualifiers(\n\t\t\tqualifiers,\n\t\t\tdistro,\n\t\t),\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/package_test.go",
    "content": "package redhat\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tdistro   *linux.Release\n\t\tmetadata pkg.RpmDBEntry\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"rhel\",\n\t\t\t\tVersionID: \"8.4\",\n\t\t\t},\n\t\t\tmetadata: pkg.RpmDBEntry{\n\t\t\t\tName:    \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t\tRelease: \"r\",\n\t\t\t\tEpoch:   nil,\n\t\t\t},\n\t\t\texpected: \"pkg:rpm/redhat/p@v-r?distro=rhel-8.4\",\n\t\t},\n\t\t{\n\t\t\tname: \"with arch and epoch\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"centos\",\n\t\t\t\tVersionID: \"7\",\n\t\t\t},\n\t\t\tmetadata: pkg.RpmDBEntry{\n\t\t\t\tName:    \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t\tArch:    \"a\",\n\t\t\t\tRelease: \"r\",\n\t\t\t\tEpoch:   intRef(1),\n\t\t\t},\n\t\t\texpected: \"pkg:rpm/centos/p@v-r?arch=a&distro=centos-7&epoch=1\",\n\t\t},\n\t\t{\n\t\t\tname: \"missing distro\",\n\t\t\tmetadata: pkg.RpmDBEntry{\n\t\t\t\tName:    \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t\tRelease: \"r\",\n\t\t\t\tEpoch:   nil,\n\t\t\t},\n\t\t\texpected: \"pkg:rpm/p@v-r\",\n\t\t},\n\t\t{\n\t\t\tname: \"hummingbird distro maps to redhat namespace\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"hummingbird\",\n\t\t\t\tVersionID: \"1.0\",\n\t\t\t},\n\t\t\tmetadata: pkg.RpmDBEntry{\n\t\t\t\tName:    \"p\",\n\t\t\t\tVersion: \"v\",\n\t\t\t\tRelease: \"r\",\n\t\t\t\tEpoch:   nil,\n\t\t\t},\n\t\t\texpected: \"pkg:rpm/redhat/p@v-r?distro=hummingbird-1.0\",\n\t\t},\n\t\t{\n\t\t\tname: \"with upstream source rpm info\",\n\t\t\tdistro: &linux.Release{\n\t\t\t\tID:        \"rhel\",\n\t\t\t\tVersionID: \"8.4\",\n\t\t\t},\n\t\t\tmetadata: pkg.RpmDBEntry{\n\t\t\t\tName:      \"p\",\n\t\t\t\tVersion:   \"v\",\n\t\t\t\tRelease:   \"r\",\n\t\t\t\tSourceRpm: \"sourcerpm\",\n\t\t\t},\n\t\t\texpected: \"pkg:rpm/redhat/p@v-r?distro=rhel-8.4&upstream=sourcerpm\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tactual := packageURL(\n\t\t\t\ttest.metadata.Name,\n\t\t\t\ttest.metadata.Arch,\n\t\t\t\ttest.metadata.Epoch,\n\t\t\t\ttest.metadata.SourceRpm,\n\t\t\t\ttest.metadata.Version,\n\t\t\t\ttest.metadata.Release,\n\t\t\t\ttest.distro,\n\t\t\t)\n\t\t\tif actual != test.expected {\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(test.expected, actual, true)\n\t\t\t\tt.Errorf(\"diff: %s\", dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_archive.go",
    "content": "package redhat\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"sort\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/sassoftware/go-rpmutils\"\n\n\trpmdb \"github.com/anchore/go-rpmdb/pkg\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype pgpSig struct {\n\t_          [3]byte\n\tDate       int32\n\tKeyID      [8]byte\n\tPubKeyAlgo uint8\n\tHashAlgo   uint8\n}\n\ntype textSig struct {\n\t_          [2]byte\n\tPubKeyAlgo uint8\n\tHashAlgo   uint8\n\t_          [4]byte\n\tDate       int32\n\t_          [4]byte\n\tKeyID      [8]byte\n}\n\ntype pgp4Sig struct {\n\t_          [2]byte\n\tPubKeyAlgo uint8\n\tHashAlgo   uint8\n\t_          [17]byte\n\tKeyID      [8]byte\n\t_          [2]byte\n\tDate       int32\n}\n\nvar pubKeyLookup = map[uint8]string{\n\t0x01: \"RSA\",\n}\nvar hashLookup = map[uint8]string{\n\t0x02: \"SHA1\",\n\t0x08: \"SHA256\",\n}\n\n// parseRpmArchive parses a single RPM\nfunc parseRpmArchive(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\trpm, err := rpmutils.ReadRpm(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"RPM file found but unable to read: %s (%w)\", reader.RealPath, err)\n\t}\n\n\tnevra, err := rpm.Header.GetNEVRA()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tlicenses, err := rpm.Header.GetStrings(rpmutils.LICENSE)\n\tlogRpmArchiveErr(reader.Location, \"license\", err)\n\n\tsourceRpm, err := rpm.Header.GetString(rpmutils.SOURCERPM)\n\tlogRpmArchiveErr(reader.Location, \"sourcerpm\", err)\n\n\tvendor, err := rpm.Header.GetString(rpmutils.VENDOR)\n\tlogRpmArchiveErr(reader.Location, \"vendor\", err)\n\n\tdigestAlgorithm := getDigestAlgorithm(reader.Location, rpm.Header)\n\n\tsize, err := rpm.Header.InstalledSize()\n\tlogRpmArchiveErr(reader.Location, \"size\", err)\n\n\tfiles, err := rpm.Header.GetFiles()\n\tlogRpmArchiveErr(reader.Location, \"files\", err)\n\n\trsa, err := rpm.Header.GetBytes(rpmutils.SIG_RSA)\n\tlogRpmArchiveErr(reader.Location, \"rsa signature\", err)\n\n\tpgp, err := rpm.Header.GetBytes(rpmutils.SIG_PGP)\n\tlogRpmArchiveErr(reader.Location, \"pgp signature\", err)\n\n\tvar allSigs [][]byte\n\tallSigs = append(allSigs, rsa)\n\tallSigs = append(allSigs, pgp)\n\tsigs, err := parseSignatureHeaders(allSigs)\n\tlogRpmArchiveErr(reader.Location, \"signature\", err)\n\n\tmetadata := pkg.RpmArchive{\n\t\tName:       nevra.Name,\n\t\tVersion:    nevra.Version,\n\t\tEpoch:      parseEpoch(nevra.Epoch),\n\t\tArch:       nevra.Arch,\n\t\tRelease:    nevra.Release,\n\t\tSourceRpm:  sourceRpm,\n\t\tSignatures: sigs,\n\t\tVendor:     vendor,\n\t\tSize:       int(size),\n\t\tFiles:      mapFiles(files, digestAlgorithm),\n\t}\n\n\treturn []pkg.Package{newArchivePackage(ctx, reader.Location, metadata, licenses)}, nil, nil\n}\n\nfunc parseSignatureHeaders(data [][]byte) ([]pkg.RpmSignature, error) {\n\tsigMap := make(map[string]pkg.RpmSignature)\n\tvar keys []string\n\tfor _, sig := range data {\n\t\tif len(sig) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\ts, err := parsePGP(sig)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Trace(\"unable to parse RPM archive signature\")\n\t\t\treturn nil, err\n\t\t}\n\t\tk := s.String()\n\t\tif _, ok := sigMap[k]; ok {\n\t\t\t// if we have a duplicate signature, just skip it\n\t\t\tcontinue\n\t\t}\n\t\tsigMap[k] = *s\n\t\tkeys = append(keys, k)\n\t}\n\tvar signatures []pkg.RpmSignature\n\tsort.Strings(keys)\n\tfor _, k := range keys {\n\t\tsignatures = append(signatures, sigMap[k])\n\t}\n\n\treturn signatures, nil\n}\n\nfunc parsePGP(data []byte) (*pkg.RpmSignature, error) {\n\tvar tag, signatureType, version uint8\n\n\tr := bytes.NewReader(data)\n\terr := binary.Read(r, binary.BigEndian, &tag)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = binary.Read(r, binary.BigEndian, &signatureType)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = binary.Read(r, binary.BigEndian, &version)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch signatureType {\n\tcase 0x01:\n\t\tswitch version {\n\t\tcase 0x1c:\n\t\t\tsig := textSig{}\n\t\t\terr = binary.Read(r, binary.BigEndian, &sig)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid PGP signature on decode: %w\", err)\n\t\t\t}\n\t\t\treturn &pkg.RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: pubKeyLookup[sig.PubKeyAlgo],\n\t\t\t\tHashAlgorithm:      hashLookup[sig.HashAlgo],\n\t\t\t\tCreated:            time.Unix(int64(sig.Date), 0).UTC().Format(\"Mon Jan _2 15:04:05 2006\"),\n\t\t\t\tIssuerKeyID:        fmt.Sprintf(\"%x\", sig.KeyID),\n\t\t\t}, nil\n\t\tdefault:\n\t\t\treturn decodePGPSig(version, r)\n\t\t}\n\tcase 0x02:\n\t\treturn decodePGPSig(version, r)\n\t}\n\n\treturn nil, fmt.Errorf(\"unknown signature type: %d\", signatureType)\n}\n\nfunc decodePGPSig(version uint8, r io.Reader) (*pkg.RpmSignature, error) {\n\tvar pubKeyAlgo, hashAlgo, pkgDate string\n\tvar keyID [8]byte\n\n\tswitch {\n\tcase version > 0x15:\n\t\tsig := pgp4Sig{}\n\t\terr := binary.Read(r, binary.BigEndian, &sig)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid PGP v4 signature on decode: %w\", err)\n\t\t}\n\t\tpubKeyAlgo = pubKeyLookup[sig.PubKeyAlgo]\n\t\thashAlgo = hashLookup[sig.HashAlgo]\n\t\tpkgDate = time.Unix(int64(sig.Date), 0).UTC().Format(\"Mon Jan _2 15:04:05 2006\")\n\t\tkeyID = sig.KeyID\n\n\tdefault:\n\t\tsig := pgpSig{}\n\t\terr := binary.Read(r, binary.BigEndian, &sig)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid PGP signature on decode: %w\", err)\n\t\t}\n\t\tpubKeyAlgo = pubKeyLookup[sig.PubKeyAlgo]\n\t\thashAlgo = hashLookup[sig.HashAlgo]\n\t\tpkgDate = time.Unix(int64(sig.Date), 0).UTC().Format(\"Mon Jan _2 15:04:05 2006\")\n\t\tkeyID = sig.KeyID\n\t}\n\treturn &pkg.RpmSignature{\n\t\tPublicKeyAlgorithm: pubKeyAlgo,\n\t\tHashAlgorithm:      hashAlgo,\n\t\tCreated:            pkgDate,\n\t\tIssuerKeyID:        fmt.Sprintf(\"%x\", keyID),\n\t}, nil\n}\n\nfunc getDigestAlgorithm(location file.Location, header *rpmutils.RpmHeader) string {\n\tdigestAlgorithm, err := header.GetString(rpmutils.FILEDIGESTALGO)\n\tlogRpmArchiveErr(location, \"file digest algo\", err)\n\n\tif digestAlgorithm != \"\" {\n\t\treturn digestAlgorithm\n\t}\n\tdigestAlgorithms, err := header.GetUint32s(rpmutils.FILEDIGESTALGO)\n\tlogRpmArchiveErr(location, \"file digest algo 32-bit\", err)\n\n\tif len(digestAlgorithms) > 0 {\n\t\tdigestAlgo := int(digestAlgorithms[0])\n\t\treturn rpmutils.GetFileAlgoName(digestAlgo)\n\t}\n\treturn \"\"\n}\n\nfunc mapFiles(files []rpmutils.FileInfo, digestAlgorithm string) []pkg.RpmFileRecord {\n\tvar out []pkg.RpmFileRecord\n\tfor _, f := range files {\n\t\tdigest := file.Digest{}\n\t\tif f.Digest() != \"\" {\n\t\t\tdigest = file.Digest{\n\t\t\t\tAlgorithm: digestAlgorithm,\n\t\t\t\tValue:     f.Digest(),\n\t\t\t}\n\t\t}\n\t\tout = append(out, pkg.RpmFileRecord{\n\t\t\tPath:      f.Name(),\n\t\t\tMode:      pkg.RpmFileMode(f.Mode()),\n\t\t\tSize:      int(f.Size()),\n\t\t\tDigest:    digest,\n\t\t\tUserName:  f.UserName(),\n\t\t\tGroupName: f.GroupName(),\n\t\t\tFlags:     rpmdb.FileFlags(f.Flags()).String(),\n\t\t})\n\t}\n\treturn out\n}\n\nfunc parseEpoch(epoch string) *int {\n\ti, err := strconv.Atoi(epoch)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn &i\n}\n\nfunc logRpmArchiveErr(location file.Location, operation string, err error) {\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err, \"operation\", operation, \"path\", location.RealPath).Trace(\"unable to parse RPM archive\")\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_archive_test.go",
    "content": "package redhat\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseRpmFiles(t *testing.T) {\n\tctx := context.TODO()\n\tabcRpmLocation := file.NewLocation(\"abc-1.01-9.hg20160905.el7.x86_64.rpm\")\n\tzorkRpmLocation := file.NewLocation(\"zork-1.0.3-1.el7.x86_64.rpm\")\n\ttests := []struct {\n\t\tname         string\n\t\tfixtureDir   string\n\t\tfixtureImage string\n\t\tskipFiles    bool\n\t\texpected     []pkg.Package\n\t}{\n\t\t{\n\t\t\tname:       \"go case\",\n\t\t\tfixtureDir: \"testdata/rpms\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"abc\",\n\t\t\t\t\tVersion:   \"0:1.01-9.hg20160905.el7\",\n\t\t\t\t\tPURL:      \"pkg:rpm/abc@1.01-9.hg20160905.el7?arch=x86_64&epoch=0&upstream=abc-1.01-9.hg20160905.el7.src.rpm\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"abc-1.01-9.hg20160905.el7.x86_64.rpm\")),\n\t\t\t\t\tFoundBy:   \"rpm-archive-cataloger\",\n\t\t\t\t\tType:      pkg.RpmPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", abcRpmLocation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.RpmArchive{\n\t\t\t\t\t\tName:      \"abc\",\n\t\t\t\t\t\tEpoch:     intRef(0),\n\t\t\t\t\t\tArch:      \"x86_64\",\n\t\t\t\t\t\tRelease:   \"9.hg20160905.el7\",\n\t\t\t\t\t\tVersion:   \"1.01\",\n\t\t\t\t\t\tSourceRpm: \"abc-1.01-9.hg20160905.el7.src.rpm\",\n\t\t\t\t\t\tSignatures: []pkg.RpmSignature{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\t\t\t\tCreated:            \"Wed Sep 21 07:09:44 2016\",\n\t\t\t\t\t\t\t\tIssuerKeyID:        \"6a2faea2352c64e5\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSize:   17396,\n\t\t\t\t\t\tVendor: \"Fedora Project\",\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{\"/usr/bin/abc\", 33261, 7120, file.Digest{\"sha256\", \"8f8495a65c66762b60afa0c3949d81b275ca6fa0601696caba5af762f455d0b9\"}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/abc-1.01\", 16877, 4096, file.Digest{}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/abc-1.01/readme.md\", 33188, 4984, file.Digest{\"sha256\", \"808af8a28391e96ca0d91086789488dda3724fe7c8b2859efd464fb04b94b2d4\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/abc-1.01/readmeaig\", 33188, 3324, file.Digest{\"sha256\", \"530ec6175cf7fbeb7b595cbe7a50994429c4e62cae6666fb3a1d5745f3127b19\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/man/man1/abc.1.gz\", 33188, 1968, file.Digest{\"sha256\", \"cf2cfe25b29087e60ffd5f31f974a0762172fc2f009704951f12ff750ea77ed6\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:      \"zork\",\n\t\t\t\t\tVersion:   \"0:1.0.3-1.el7\",\n\t\t\t\t\tPURL:      \"pkg:rpm/zork@1.0.3-1.el7?arch=x86_64&epoch=0&upstream=zork-1.0.3-1.el7.src.rpm\",\n\t\t\t\t\tLocations: file.NewLocationSet(zorkRpmLocation),\n\t\t\t\t\tFoundBy:   \"rpm-archive-cataloger\",\n\t\t\t\t\tType:      pkg.RpmPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"Public Domain\", zorkRpmLocation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.RpmArchive{\n\t\t\t\t\t\tName:      \"zork\",\n\t\t\t\t\t\tEpoch:     intRef(0),\n\t\t\t\t\t\tArch:      \"x86_64\",\n\t\t\t\t\t\tRelease:   \"1.el7\",\n\t\t\t\t\t\tVersion:   \"1.0.3\",\n\t\t\t\t\t\tSourceRpm: \"zork-1.0.3-1.el7.src.rpm\",\n\t\t\t\t\t\tSize:      262367,\n\t\t\t\t\t\tSignatures: []pkg.RpmSignature{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\t\t\t\tCreated:            \"Tue Mar  2 17:32:21 2021\",\n\t\t\t\t\t\t\t\tIssuerKeyID:        \"6a2faea2352c64e5\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVendor: \"Fedora Project\",\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{\"/usr/bin/zork\", 33261, 115440, file.Digest{\"sha256\", \"31b2ffc20b676a8fff795a45308f584273b9c47e8f7e196b4f36220b2734b472\"}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/zork-1.0.3\", 16877, 38, file.Digest{}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/zork-1.0.3/README.md\", 33188, 5123, file.Digest{\"sha256\", \"0013d67610a80c9f62d151a952f18d520b15b4c505b3ec2af34b96ab824654a4\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/doc/zork-1.0.3/history\", 33188, 4816, file.Digest{\"sha256\", \"6949044a65adefca6ac0132c18cfccc4ba8fdaec948424b6ccb60afd8a6ac82f\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/licenses/zork-1.0.3\", 16877, 24, file.Digest{}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t\t{\"/usr/share/licenses/zork-1.0.3/readme.txt\", 33188, 146, file.Digest{\"sha256\", \"9d6f7500555a2ecc3cb289dcca1e37fb96894dab1e4ba692b4d36fd6c3bdf939\"}, \"root\", \"root\", \"l\"},\n\t\t\t\t\t\t\t{\"/usr/share/man/man6/dungeon.6.gz\", 33188, 3800, file.Digest{\"sha256\", \"9b065d6a6f65b4d2d038fcca0af47a38e8723c32008d08659739ac34abe018da\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/man/man6/zork.6.gz\", 33188, 34, file.Digest{\"sha256\", \"18fbcb598bc40a25befe26256e29366984d2288dd154f877b8ac5fc138dd0884\"}, \"root\", \"root\", \"d\"},\n\t\t\t\t\t\t\t{\"/usr/share/zork/dtextc.dat\", 33188, 133008, file.Digest{\"sha256\", \"25ca42857c2b32054916d9258152293ead644023d5e03bec039ea92014e2ef91\"}, \"root\", \"root\", \"\"},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"bad rpms\",\n\t\t\tfixtureDir: \"testdata/bad\",\n\t\t},\n\t\t{\n\t\t\tname:         \"rpms with signatures from RSA header\",\n\t\t\tfixtureImage: \"image-rpm-archive\",\n\t\t\tskipFiles:    true,\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"postgresql14-server\",\n\t\t\t\t\tVersion:   \"0:14.10-1PGDG.rhel9\",\n\t\t\t\t\tPURL:      \"pkg:rpm/postgresql14-server@14.10-1PGDG.rhel9?arch=x86_64&epoch=0&upstream=postgresql14-14.10-1PGDG.rhel9.src.rpm\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"/postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm\")),\n\t\t\t\t\tFoundBy:   \"rpm-archive-cataloger\",\n\t\t\t\t\tType:      pkg.RpmPkg,\n\t\t\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseFromLocations(\"PostgreSQL\", file.NewLocation(\"/postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm\"))),\n\t\t\t\t\tLanguage:  \"\",\n\t\t\t\t\tCPEs:      nil,\n\t\t\t\t\tMetadata: pkg.RpmArchive{\n\t\t\t\t\t\tName:      \"postgresql14-server\",\n\t\t\t\t\t\tVersion:   \"14.10\",\n\t\t\t\t\t\tEpoch:     ref(0),\n\t\t\t\t\t\tArch:      \"x86_64\",\n\t\t\t\t\t\tRelease:   \"1PGDG.rhel9\",\n\t\t\t\t\t\tSourceRpm: \"postgresql14-14.10-1PGDG.rhel9.src.rpm\",\n\t\t\t\t\t\tSize:      24521699,\n\t\t\t\t\t\tSignatures: []pkg.RpmSignature{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\t\t\t\tCreated:            \"Tue Jan  2 16:45:56 2024\",\n\t\t\t\t\t\t\t\tIssuerKeyID:        \"40bca2b408b40d20\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVendor: \"PostgreSQL Global Development Group\",\n\t\t\t\t\t\t// note: files are not asserted in this test\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tvar opts []cmp.Option\n\t\t\tif test.skipFiles {\n\t\t\t\topts = append(opts, cmpopts.IgnoreFields(pkg.RpmArchive{}, \"Files\"))\n\t\t\t}\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithCompareOptions(opts...).\n\t\t\t\tFromDirectory(t, test.fixtureDir).\n\t\t\t\tWithImageResolver(t, test.fixtureImage).\n\t\t\t\tIgnoreLocationLayer().\n\t\t\t\tExpects(test.expected, nil).\n\t\t\t\tTestCataloger(t, NewArchiveCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_parseRSA(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tdata    string\n\t\twant    *pkg.RpmSignature\n\t\twantErr assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"older RSA header\",\n\t\t\tdata: \"89021503050058d3e39b0946fca2c105b9de0102b12a1000a2b3d347b51142e83b2de5e03ba9096f6330b72c140e46200d662b01c78534d14fab2ad4f07325119386830dd590219f27a22e420680283c500c40e6fba95404884b0a0abca8f198030ddc03653b7db2883b8230687e9e73d43eb5a24dbabfa48bbb3d1151ed264744e5e8ca169b0c4673a1440a9b99e53e693c9722f6423833cd7795e3044227fb922e21b7c007f03e923fae3f04d1ac2e8581e68c6790115b6dccfc02c8cb41681ed84785df086d6e26008c257d088a524ba2e7a7a5f41ad26b106c67b87fe48118b69662db612c23d2140059286f1ba7764627def6867ad0e11fe3a01fb1422dabe6f5cdf4cd876dc4fadfd2364bc3ba3758db94aaf3b82368cba65cf762287f713eb7ddc773acf93b083c739577a7eaf1f99e7dcbb8db1da050490e9fb67c838448db060a9e619d318c96f03e4363808d84ce29e8c102c290cc2bfab5746f3d9ddc9eb8b428f3ad2678abb2d46e846ddca7fc41322d76a97be6d416b4750f23320ec725e082be4496483b4cd3a3d2c515b3c8a6e27541139d809245140303877b84842ed2dd0454a78b2dfb7d6213784697077a8167942ebda5995a28d8256957e33e301706c35944ae05c7a54a4dd89be654d26cefa5cf0f616bbeaf317138371b09c5bbd5531f716020e553354ce5dbce3d9bb72f21e1857408dfd5a35250ff40f61ae1e25409ae9d21db76b8878341f4762a22be2189\",\n\t\t\t// RSA/SHA1, Thu Mar 23 15:02:51 2017, Key ID 0946fca2c105b9de\n\t\t\twant: &pkg.RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\tHashAlgorithm:      \"SHA1\",\n\t\t\t\tCreated:            \"Thu Mar 23 15:02:51 2017\",\n\t\t\t\tIssuerKeyID:        \"0946fca2c105b9de\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"newer RSA header\",\n\t\t\tdata: \"89024a04000108003416210421cb256ae16fc54c6e652949702d426d350d275d050262804369161c72656c656e6740726f636b796c696e75782e6f7267000a0910702d426d350d275dc8910ffd14f0f80297481fea648e7ba5a74bce10c5faccc2bbe588caece04be34d304a6a445538afc97a7033d43c983d27cc8f5ee515b2dd92f3e03354c413e55372a4d19386eb0f2354f9a26ee5fc2e56dfda49555e4a58b49279b70cd2036b04f28125f85942f640f2984e29e079f26bf6f76831d83d95983aa084a3e7b6327be2e23d0d799c4b4d1cfb36147ddfb782bf9df7b331d97f4f46b38f968b6130d87b0ef6bb0d424390fe34e38092babed37440569a93f55f50a2bdb58be0259f35badf7e728bd49824ed47f69fa53b6e26736bde4d8358d959b090e88054c3e179745dc7377e41b54b4e10223f4859e88162c7c5ec64b78d36cf8a914c1c2deb8c4f19a70d406e70756a89195d6aee488a9b40b9dbb76b2c38e528eb88d08ec35774a48ed9ce4e0dfac45cb7613ad5921f54c61d3aae5d7b3ab0e2e6ff867ac8f395b37af78b5c01022a4a4e62f7a99425fccb7439880cd6b393a3050b2e9512693bc36f6fe9de2921dda59710a1508965065244cf9f0f8cfc5bd554777f1a84d2249339234d62f2441249f617ad7df4fb01367a91d3a880e86fdb84bc6d03a127b44a28c6ceadef89e438db9640aa59b8a3f460b07272511f8187a5f3b163c8fd1caa61667401bce2ccdb1c176c46be10ef8033903132cca5889fa3661b2fba590c41fa1c104c08426677bdbf745a52ccd28f581960cf9d7e4ede3b9584aacb2f20ef93\",\n\t\t\t// RSA/SHA256, Sun May 15 00:03:53 2022, Key ID 702d426d350d275d\n\t\t\twant: &pkg.RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\tCreated:            \"Sun May 15 00:03:53 2022\",\n\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"example from rocky9\",\n\t\t\tdata: \"8901b304000108001d162104d4bf08ae67a0b4c7a1dbccd240bca2b408b40d20050265943dc4000a091040bca2b408b40d203b270bff71678ffeb190833a19a82112f59eee64cba186ab454d4526e0b3c8797e723f6916daff1b1f18cbf53c0da5d398a3a42065e79e5ca939f721652f38400dd4cac1107a902b1dae880649437ad0242444f3f07115172cae0a207b7cf8340af2f4a94976325f1dc165d5c2a564be322c4e130adb6217e7138b689f08898c407b223aa1ff8f8d592f31eba2256c02fae70ce4022d688a487972646b8bf1b518b5d6549c1e60fd812134422d9fdb41cf799f5eab80e48b4ab7cff84362dc867ed1af1416dd78e92bcc59217de7064b9a015d94a5097788689b9b6fbdeea679cfe4a6947f73dc3a6c810f2cb999d279b01564422d1500fc1bd8bd1eefa2d60660127ffef24067354660f93c0faf81f4edd599dd7e4b77fe4bff6c7a0ea83530c817c38d1f2364175883c6ef7b6dec86ad282bdd5138b8597567db96810c4ed6454a4ab1d98f0425dcd8892a5d46ed9289cb3ae3e1f1e2663d3e8188e873428f6cf7163563ed3860edc4fee81522389508847e692e2d13310eb4b40f7fdd7eb364a0b2dc\",\n\t\t\t// RSA/SHA256, Tue Jan  2 16:45:56 2024, Key ID 40bca2b408b40d20\n\t\t\twant: &pkg.RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\tCreated:            \"Tue Jan  2 16:45:56 2024\",\n\t\t\t\tIssuerKeyID:        \"40bca2b408b40d20\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\n\t\t\tdata, err := hex.DecodeString(tt.data)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tgot, err := parsePGP(data)\n\t\t\tif !tt.wantErr(t, err) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc ref[T any](v T) *T {\n\treturn &v\n}\n\nfunc Test_corruptRpmArchive(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/bad/bad.rpm\").\n\t\tWithError().\n\t\tTestParser(t, parseRpmArchive)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_db.go",
    "content": "package redhat\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\trpmdb \"github.com/anchore/go-rpmdb/pkg\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/tmpdir\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// parseRpmDB parses an \"Packages\" RPM DB and returns the Packages listed within it.\n//\n//nolint:funlen\nfunc parseRpmDB(ctx context.Context, resolver file.Resolver, env *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\ttd := tmpdir.FromContext(ctx)\n\tif td == nil {\n\t\treturn nil, nil, fmt.Errorf(\"no temp dir factory in context\")\n\t}\n\tf, cleanup, err := td.NewFile(\"rpmdb-*\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create temp rpmdb file: %w\", err)\n\t}\n\tdefer cleanup()\n\tdefer f.Close()\n\n\t_, err = io.Copy(f, reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to copy rpmdb contents to temp file: %w\", err)\n\t}\n\n\tdb, err := rpmdb.Open(f.Name())\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer db.Close()\n\n\tpkgList, err := db.ListPackages()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar allPkgs []pkg.Package\n\n\tvar distro *linux.Release\n\tif env != nil {\n\t\tdistro = env.LinuxRelease\n\t}\n\n\tvar errs error\n\tfor _, entry := range pkgList {\n\t\tif entry == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tfiles, err := extractRpmFileRecords(resolver, *entry)\n\t\terrs = unknown.Join(errs, err)\n\n\t\t// there is a period of time when RPM DB entries contain both PGP and RSA signatures that are the same.\n\t\t// This appears to be a holdover, where nowadays only the RSA Header is used.\n\t\tsigs, err := parseSignatures(strings.TrimSpace(entry.PGP), strings.TrimSpace(entry.RSAHeader))\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"location\", reader.RealPath, \"pkg\", fmt.Sprintf(\"%s@%s\", entry.Name, entry.Version)).Trace(\"unable to parse signatures for package %s\", entry.Name)\n\t\t\tsigs = nil\n\t\t}\n\n\t\tmetadata := pkg.RpmDBEntry{\n\t\t\tName:            entry.Name,\n\t\t\tVersion:         entry.Version,\n\t\t\tEpoch:           entry.Epoch,\n\t\t\tArch:            entry.Arch,\n\t\t\tRelease:         entry.Release,\n\t\t\tSourceRpm:       entry.SourceRpm,\n\t\t\tSignatures:      sigs,\n\t\t\tVendor:          entry.Vendor,\n\t\t\tSize:            entry.Size,\n\t\t\tModularityLabel: &entry.Modularitylabel,\n\t\t\tFiles:           files,\n\t\t\tProvides:        entry.Provides,\n\t\t\tRequires:        entry.Requires,\n\t\t}\n\n\t\tp := newDBPackage(\n\t\t\tctx,\n\t\t\treader.Location,\n\t\t\tmetadata,\n\t\t\tdistro,\n\t\t\t[]string{entry.License},\n\t\t)\n\n\t\tif !pkg.IsValid(&p) {\n\t\t\tlog.WithFields(\"location\", reader.RealPath, \"pkg\", fmt.Sprintf(\"%s@%s\", entry.Name, entry.Version)).\n\t\t\t\tWarn(\"ignoring invalid package found in RPM DB\")\n\t\t\terrs = unknown.Appendf(errs, reader, \"invalild package found; name: %s, version: %s\", entry.Name, entry.Version)\n\t\t\tcontinue\n\t\t}\n\n\t\tp.SetID()\n\t\tallPkgs = append(allPkgs, p)\n\t}\n\n\tif errs == nil && len(allPkgs) == 0 {\n\t\terrs = fmt.Errorf(\"unable to determine packages\")\n\t}\n\n\treturn allPkgs, nil, errs\n}\n\nfunc parseSignatures(sigs ...string) ([]pkg.RpmSignature, error) {\n\tvar parsedSigs []pkg.RpmSignature\n\tvar errs error\n\tfor _, sig := range sigs {\n\t\tif sig == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tparts := strings.Split(sig, \",\")\n\t\tif len(parts) != 3 {\n\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature format: %s\", sig))\n\t\t\tcontinue\n\t\t}\n\n\t\tmethodParts := strings.SplitN(strings.TrimSpace(parts[0]), \"/\", 2)\n\t\tif len(methodParts) != 2 {\n\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature method format: %s\", parts[0]))\n\t\t\tcontinue\n\t\t}\n\n\t\tpka := strings.TrimSpace(methodParts[0])\n\t\thash := strings.TrimSpace(methodParts[1])\n\n\t\tif pka == \"\" || hash == \"\" {\n\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature method values: public-key=%q hash=%q\", pka, hash))\n\t\t\tcontinue\n\t\t}\n\n\t\tcreated := strings.TrimSpace(parts[1])\n\t\tif created == \"\" {\n\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature created value: %q\", parts[1]))\n\t\t\tcontinue\n\t\t}\n\n\t\tissuerFields := strings.Split(strings.TrimSpace(parts[2]), \" \")\n\t\tvar issuer string\n\t\tswitch len(issuerFields) {\n\t\tcase 0:\n\t\t\terrs = errors.Join(fmt.Errorf(\"no signature issuer value: %q\", parts[2]))\n\t\tcase 1:\n\t\t\tissuer = issuerFields[0]\n\t\tdefault:\n\t\t\tissuer = issuerFields[len(issuerFields)-1]\n\t\t\tif issuer == \"\" {\n\t\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature issuer value: %q\", parts[2]))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif len(issuer) < 5 {\n\t\t\terrs = errors.Join(fmt.Errorf(\"invalid signature issuer length: %q\", parts[2]))\n\t\t\tcontinue\n\t\t}\n\n\t\tparsedSig := pkg.RpmSignature{\n\t\t\tPublicKeyAlgorithm: pka,\n\t\t\tHashAlgorithm:      hash,\n\t\t\tCreated:            created,\n\t\t\tIssuerKeyID:        issuer,\n\t\t}\n\t\tparsedSigs = append(parsedSigs, parsedSig)\n\t}\n\treturn parsedSigs, errs\n}\n\n// The RPM naming scheme is [name]-[version]-[release]-[arch], where version is implicitly expands to [epoch]:[version].\n// RPM version comparison depends on comparing at least the version and release fields together as a subset of the\n// naming scheme. This toELVersion function takes a RPM DB package information and converts it into a minimally comparable\n// version string, containing epoch (optional), version, and release information. Epoch is an optional field and can be\n// assumed to be 0 when not provided for comparison purposes, however, if the underlying RPM DB entry does not have\n// an epoch specified it would be slightly disingenuous to display a value of 0.\nfunc toELVersion(epoch *int, version, release string) string {\n\tif epoch != nil {\n\t\treturn fmt.Sprintf(\"%d:%s-%s\", *epoch, version, release)\n\t}\n\treturn fmt.Sprintf(\"%s-%s\", version, release)\n}\n\nfunc extractRpmFileRecords(resolver file.PathResolver, entry rpmdb.PackageInfo) ([]pkg.RpmFileRecord, error) {\n\tvar records = make([]pkg.RpmFileRecord, 0)\n\n\tfiles, err := entry.InstalledFiles()\n\tif err != nil {\n\t\tlog.Debugf(\"unable to parse listing of installed files for RPM DB entry: %s\", err.Error())\n\t\treturn records, fmt.Errorf(\"unable to parse listing of installed files for RPM DB entry: %w\", err)\n\t}\n\n\tfor _, record := range files {\n\t\t// only persist RPMDB file records which exist in the image/directory, otherwise ignore them\n\t\tif resolver.HasPath(record.Path) {\n\t\t\trecords = append(records, pkg.RpmFileRecord{\n\t\t\t\tPath: record.Path,\n\t\t\t\tMode: pkg.RpmFileMode(record.Mode),\n\t\t\t\tSize: int(record.Size),\n\t\t\t\tDigest: file.Digest{\n\t\t\t\t\tValue:     record.Digest,\n\t\t\t\t\tAlgorithm: entry.DigestAlgorithm.String(),\n\t\t\t\t},\n\t\t\t\tUserName:  record.Username,\n\t\t\t\tGroupName: record.Groupname,\n\t\t\t\tFlags:     record.Flags.String(),\n\t\t\t})\n\t\t}\n\t}\n\treturn records, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_db_test.go",
    "content": "package redhat\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nvar _ file.Resolver = (*rpmdbTestFileResolverMock)(nil)\n\ntype rpmdbTestFileResolverMock struct {\n\tignorePaths bool\n}\n\nfunc (r rpmdbTestFileResolverMock) FilesByExtension(extensions ...string) ([]file.Location, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rpmdbTestFileResolverMock) FilesByBasename(filenames ...string) ([]file.Location, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rpmdbTestFileResolverMock) FilesByBasenameGlob(globs ...string) ([]file.Location, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rpmdbTestFileResolverMock) FileContentsByLocation(location file.Location) (io.ReadCloser, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rpmdbTestFileResolverMock) AllLocations(_ context.Context) <-chan file.Location {\n\tpanic(\"not implemented\")\n}\n\nfunc (r rpmdbTestFileResolverMock) FileMetadataByLocation(location file.Location) (file.Metadata, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc newTestFileResolver(ignorePaths bool) *rpmdbTestFileResolverMock {\n\treturn &rpmdbTestFileResolverMock{\n\t\tignorePaths: ignorePaths,\n\t}\n}\n\nfunc (r rpmdbTestFileResolverMock) HasPath(path string) bool {\n\treturn !r.ignorePaths\n}\n\nfunc (r *rpmdbTestFileResolverMock) FilesByPath(paths ...string) ([]file.Location, error) {\n\tif r.ignorePaths {\n\t\t// act as if no paths exist\n\t\treturn nil, nil\n\t}\n\t// act as if all files exist\n\tvar locations = make([]file.Location, len(paths))\n\tfor i, p := range paths {\n\t\tlocations[i] = file.NewLocation(p)\n\t}\n\treturn locations, nil\n}\n\nfunc (r *rpmdbTestFileResolverMock) FilesByGlob(...string) ([]file.Location, error) {\n\treturn nil, fmt.Errorf(\"not implemented\")\n}\n\nfunc (r *rpmdbTestFileResolverMock) RelativeFileByPath(file.Location, string) *file.Location {\n\tpanic(fmt.Errorf(\"not implemented\"))\n\treturn nil\n}\n\nfunc (r *rpmdbTestFileResolverMock) FilesByMIMEType(...string) ([]file.Location, error) {\n\treturn nil, fmt.Errorf(\"not implemented\")\n}\n\nfunc (r *rpmdbTestFileResolverMock) FilesByMediaType(...string) ([]file.Location, error) {\n\treturn nil, fmt.Errorf(\"not implemented\")\n}\n\nfunc TestParseRpmDB(t *testing.T) {\n\tctx := context.TODO()\n\tpackagesLocation := file.NewLocation(\"testdata/Packages\")\n\ttests := []struct {\n\t\tfixture     string\n\t\texpected    []pkg.Package\n\t\tignorePaths bool\n\t}{\n\t\t{\n\t\t\tfixture: \"testdata/Packages\",\n\t\t\t// we only surface package paths for files that exist (here we DO NOT expect a path)\n\t\t\tignorePaths: true,\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"dive\",\n\t\t\t\t\tVersion:   \"0.9.2-1\",\n\t\t\t\t\tPURL:      \"pkg:rpm/dive@0.9.2-1?arch=x86_64&upstream=dive-0.9.2-1.src.rpm\",\n\t\t\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"testdata/Packages\")),\n\t\t\t\t\tType:      pkg.RpmPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", packagesLocation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\t\tName:            \"dive\",\n\t\t\t\t\t\tEpoch:           nil,\n\t\t\t\t\t\tArch:            \"x86_64\",\n\t\t\t\t\t\tRelease:         \"1\",\n\t\t\t\t\t\tVersion:         \"0.9.2\",\n\t\t\t\t\t\tSourceRpm:       \"dive-0.9.2-1.src.rpm\",\n\t\t\t\t\t\tSize:            12406784,\n\t\t\t\t\t\tVendor:          \"\",\n\t\t\t\t\t\tModularityLabel: strRef(\"\"),\n\t\t\t\t\t\tProvides:        []string{\"dive\"},\n\t\t\t\t\t\tFiles:           []pkg.RpmFileRecord{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfixture: \"testdata/Packages\",\n\t\t\t// we only surface package paths for files that exist (here we expect a path)\n\t\t\tignorePaths: false,\n\t\t\texpected: []pkg.Package{\n\t\t\t\t{\n\t\t\t\t\tName:      \"dive\",\n\t\t\t\t\tVersion:   \"0.9.2-1\",\n\t\t\t\t\tPURL:      \"pkg:rpm/dive@0.9.2-1?arch=x86_64&upstream=dive-0.9.2-1.src.rpm\",\n\t\t\t\t\tLocations: file.NewLocationSet(packagesLocation),\n\t\t\t\t\tType:      pkg.RpmPkg,\n\t\t\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", packagesLocation),\n\t\t\t\t\t),\n\t\t\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\t\t\tName:            \"dive\",\n\t\t\t\t\t\tEpoch:           nil,\n\t\t\t\t\t\tArch:            \"x86_64\",\n\t\t\t\t\t\tRelease:         \"1\",\n\t\t\t\t\t\tVersion:         \"0.9.2\",\n\t\t\t\t\t\tSourceRpm:       \"dive-0.9.2-1.src.rpm\",\n\t\t\t\t\t\tSize:            12406784,\n\t\t\t\t\t\tVendor:          \"\",\n\t\t\t\t\t\tModularityLabel: strRef(\"\"),\n\t\t\t\t\t\tProvides:        []string{\"dive\"},\n\t\t\t\t\t\tFiles: []pkg.RpmFileRecord{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tPath: \"/usr/local/bin/dive\",\n\t\t\t\t\t\t\t\tMode: 33261,\n\t\t\t\t\t\t\t\tSize: 12406784,\n\t\t\t\t\t\t\t\tDigest: file.Digest{\n\t\t\t\t\t\t\t\t\tAlgorithm: \"sha256\",\n\t\t\t\t\t\t\t\t\tValue:     \"81d29f327ba23096b3c52ff6fe1c425641e618bc87b5c05ee377edc650afaa55\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// note: there is no username, groupname, or flags for this RPM\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.fixture, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithResolver(newTestFileResolver(test.ignorePaths)).\n\t\t\t\tFromFile(t, test.fixture).\n\t\t\t\tExpects(test.expected, nil).\n\t\t\t\tTestParser(t, parseRpmDB)\n\t\t})\n\t}\n}\n\nfunc TestToElVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tentry    pkg.RpmDBEntry\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"no epoch\",\n\t\t\tentry: pkg.RpmDBEntry{\n\t\t\t\tVersion: \"1.2.3-4\",\n\t\t\t\tRelease: \"el7\",\n\t\t\t\tArch:    \"x86-64\",\n\t\t\t},\n\t\t\texpected: \"1.2.3-4-el7\",\n\t\t},\n\t\t{\n\t\t\tname: \"with 0 epoch\",\n\t\t\tentry: pkg.RpmDBEntry{\n\t\t\t\tVersion: \"1.2.3-4\",\n\t\t\t\tRelease: \"el7\",\n\t\t\t\tArch:    \"x86-64\",\n\t\t\t\tEpoch:   intRef(0),\n\t\t\t},\n\t\t\texpected: \"0:1.2.3-4-el7\",\n\t\t},\n\t\t{\n\t\t\tname: \"with non-zero epoch\",\n\t\t\tentry: pkg.RpmDBEntry{\n\t\t\t\tVersion: \"1.2.3-4\",\n\t\t\t\tRelease: \"el7\",\n\t\t\t\tArch:    \"x86-64\",\n\t\t\t\tEpoch:   intRef(12),\n\t\t\t},\n\t\t\texpected: \"12:1.2.3-4-el7\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, test.expected, toELVersion(test.entry.Epoch, test.entry.Version, test.entry.Release))\n\t\t})\n\t}\n}\n\nfunc Test_corruptRpmDbEntry(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/usr/lib/sysimage/rpm/Packages.db\").\n\t\tWithError().\n\t\tTestParser(t, parseRpmDB)\n}\n\nfunc TestParseSignatures(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tsigs          []string\n\t\texpected      []pkg.RpmSignature\n\t\texpectedError require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"valid signature\",\n\t\t\tsigs: []string{\"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\"},\n\t\t\texpected: []pkg.RpmSignature{\n\t\t\t\t{\n\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple valid signatures\",\n\t\t\tsigs: []string{\n\t\t\t\t\"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\",\n\t\t\t\t\"DSA/SHA1, Tue Jun 14 09:45:12 2023, Key ID 123abc456def789\",\n\t\t\t},\n\t\t\texpected: []pkg.RpmSignature{\n\t\t\t\t{\n\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tPublicKeyAlgorithm: \"DSA\",\n\t\t\t\t\tHashAlgorithm:      \"SHA1\",\n\t\t\t\t\tCreated:            \"Tue Jun 14 09:45:12 2023\",\n\t\t\t\t\tIssuerKeyID:        \"123abc456def789\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"no signatures\",\n\t\t\tsigs:     []string{},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty signatures\",\n\t\t\tsigs:     []string{\"\", \"\", \"\"},\n\t\t\texpected: nil,\n\t\t},\n\t\t{\n\t\t\tname:          \"invalid parts count\",\n\t\t\tsigs:          []string{\"RSA/SHA256, Mon May 16 12:32:55 2022\"},\n\t\t\texpected:      nil,\n\t\t\texpectedError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:          \"invalid method format\",\n\t\t\tsigs:          []string{\"RSASHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\"},\n\t\t\texpected:      nil,\n\t\t\texpectedError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:          \"empty method values\",\n\t\t\tsigs:          []string{\"/, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\"},\n\t\t\texpected:      nil,\n\t\t\texpectedError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:          \"empty created value\",\n\t\t\tsigs:          []string{\"RSA/SHA256, , Key ID 702d426d350d275d\"},\n\t\t\texpected:      nil,\n\t\t\texpectedError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:          \"empty issuer value\",\n\t\t\tsigs:          []string{\"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID \"},\n\t\t\texpected:      nil,\n\t\t\texpectedError: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"issuer without prefix\",\n\t\t\tsigs: []string{\"RSA/SHA256, Mon May 16 12:32:55 2022, 702d426d350d275d\"},\n\t\t\texpected: []pkg.RpmSignature{\n\t\t\t\t{\n\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"mixed valid and invalid signatures\",\n\t\t\tsigs: []string{\n\t\t\t\t\"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\",\n\t\t\t\t\"DSASHA1, Tue Jun 14 09:45:12 2023, Key ID 123abc456def789\",\n\t\t\t},\n\t\t\texpected: []pkg.RpmSignature{\n\t\t\t\t{\n\t\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedError: require.Error,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.expectedError == nil {\n\t\t\t\ttt.expectedError = require.NoError\n\t\t\t}\n\t\t\tgot, err := parseSignatures(tt.sigs...)\n\t\t\ttt.expectedError(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.Equal(t, tt.expected, got)\n\t\t})\n\t}\n}\n\nfunc intRef(i int) *int {\n\treturn &i\n}\n\nfunc strRef(s string) *string {\n\treturn &s\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_manifest.go",
    "content": "package redhat\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// Parses an RPM manifest file, as used in Mariner distroless containers, and returns the Packages listed\nfunc parseRpmManifest(ctx context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tr := bufio.NewReader(reader)\n\tallPkgs := make([]pkg.Package, 0)\n\n\tfor {\n\t\tline, err := r.ReadString('\\n')\n\t\tif err != nil {\n\t\t\tif errors.Is(err, io.EOF) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tmetadata, err := newMetadataFromManifestLine(strings.TrimSuffix(line, \"\\n\"))\n\t\tif err != nil {\n\t\t\tlog.Debugf(\"unable to parse RPM manifest entry: %+v\", err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif metadata == nil {\n\t\t\tlog.Debug(\"unable to parse RPM manifest entry: no metadata found\")\n\t\t\tcontinue\n\t\t}\n\n\t\tp := newDBPackage(ctx, reader.Location, *metadata, nil, nil)\n\n\t\tif !pkg.IsValid(&p) {\n\t\t\tcontinue\n\t\t}\n\n\t\tp.SetID()\n\t\tallPkgs = append(allPkgs, p)\n\t}\n\n\treturn allPkgs, nil, unknown.IfEmptyf(allPkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/parse_rpm_manifest_test.go",
    "content": "package redhat\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseRpmManifest(t *testing.T) {\n\tfixture := \"testdata/container-manifest-2\"\n\tlocation := file.NewLocation(fixture)\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"mariner-release\",\n\t\t\tVersion:   \"2.0-12.cm2\",\n\t\t\tPURL:      \"pkg:rpm/mariner-release@2.0-12.cm2?arch=noarch&upstream=mariner-release-2.0-12.cm2.src.rpm\",\n\t\t\tLocations: file.NewLocationSet(location),\n\t\t\tType:      pkg.RpmPkg,\n\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\tName:      \"mariner-release\",\n\t\t\t\tEpoch:     nil,\n\t\t\t\tArch:      \"noarch\",\n\t\t\t\tRelease:   \"12.cm2\",\n\t\t\t\tVersion:   \"2.0\",\n\t\t\t\tSourceRpm: \"mariner-release-2.0-12.cm2.src.rpm\",\n\t\t\t\tSize:      580,\n\t\t\t\tVendor:    \"Microsoft Corporation\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"filesystem\",\n\t\t\tVersion:   \"1.1-9.cm2\",\n\t\t\tPURL:      \"pkg:rpm/filesystem@1.1-9.cm2?arch=x86_64&upstream=filesystem-1.1-9.cm2.src.rpm\",\n\t\t\tLocations: file.NewLocationSet(location),\n\t\t\tType:      pkg.RpmPkg,\n\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\tName:      \"filesystem\",\n\t\t\t\tEpoch:     nil,\n\t\t\t\tArch:      \"x86_64\",\n\t\t\t\tRelease:   \"9.cm2\",\n\t\t\t\tVersion:   \"1.1\",\n\t\t\t\tSourceRpm: \"filesystem-1.1-9.cm2.src.rpm\",\n\t\t\t\tSize:      7596,\n\t\t\t\tVendor:    \"Microsoft Corporation\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"glibc\",\n\t\t\tVersion:   \"2.35-2.cm2\",\n\t\t\tPURL:      \"pkg:rpm/glibc@2.35-2.cm2?arch=x86_64&upstream=glibc-2.35-2.cm2.src.rpm\",\n\t\t\tLocations: file.NewLocationSet(location),\n\t\t\tType:      pkg.RpmPkg,\n\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\tName:      \"glibc\",\n\t\t\t\tEpoch:     nil,\n\t\t\t\tArch:      \"x86_64\",\n\t\t\t\tRelease:   \"2.cm2\",\n\t\t\t\tVersion:   \"2.35\",\n\t\t\t\tSourceRpm: \"glibc-2.35-2.cm2.src.rpm\",\n\t\t\t\tSize:      10855265,\n\t\t\t\tVendor:    \"Microsoft Corporation\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"openssl-libs\",\n\t\t\tVersion:   \"1.1.1k-15.cm2\",\n\t\t\tPURL:      \"pkg:rpm/openssl-libs@1.1.1k-15.cm2?arch=x86_64&upstream=openssl-1.1.1k-15.cm2.src.rpm\",\n\t\t\tLocations: file.NewLocationSet(location),\n\t\t\tType:      pkg.RpmPkg,\n\t\t\tMetadata: pkg.RpmDBEntry{\n\t\t\t\tName:      \"openssl-libs\",\n\t\t\t\tEpoch:     nil,\n\t\t\t\tArch:      \"x86_64\",\n\t\t\t\tRelease:   \"15.cm2\",\n\t\t\t\tVersion:   \"1.1.1k\",\n\t\t\t\tSourceRpm: \"openssl-1.1.1k-15.cm2.src.rpm\",\n\t\t\t\tSize:      4365048,\n\t\t\t\tVendor:    \"Microsoft Corporation\",\n\t\t\t},\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, fixture).\n\t\tExpects(expected, nil).\n\t\tTestParser(t, parseRpmManifest)\n\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/sqlitetest/no_sqlite_driver_test.go",
    "content": "package sqlitetest\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/redhat\"\n)\n\nfunc Test_noSQLiteDriverError(t *testing.T) {\n\t// this test package does must not import the sqlite library\n\tfile := \"../testdata/Packages\"\n\tresolver, err := fileresolver.NewFromFile(file)\n\trequire.NoError(t, err)\n\n\tcataloger := redhat.NewDBCataloger()\n\t_, _, err = cataloger.Catalog(context.TODO(), resolver)\n\trequire.ErrorContains(t, err, \"sqlite\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/.gitignore",
    "content": "/rpms/*\n*.fingerprint\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/Makefile",
    "content": "RPMSDIR=rpms\nFINGERPRINT_FILE=$(RPMSDIR).fingerprint\n\nifndef RPMSDIR\n    $(error RPMSDIR is not set)\nendif\n\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures: rpms\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\nrpms:\n\tmkdir -p $(RPMSDIR)\n\t@# see note from https://dl.fedoraproject.org/pub/epel/7/README\n\t@#  ATTENTION\n\t@# ======================================\n\t@# The contents of this directory have been moved to our archives available at:\n\t@#\n\t@# http://archives.fedoraproject.org/pub/archive/epel/\n\n\tcd $(RPMSDIR) && curl -LO https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/a/abc-1.01-9.hg20160905.el7.x86_64.rpm\n\tcd $(RPMSDIR) && curl -LO https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/z/zork-1.0.3-1.el7.x86_64.rpm\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find Makefile -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\n.PHONY: clean\nclean:\n\trm -rf $(RPMSDIR) $(FINGERPRINT_FILE)\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/bad/bad.rpm",
    "content": "this is not a real RPM file"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/container-manifest-2",
    "content": "mariner-release\t2.0-12.cm2\t1653816591\t1653753130\tMicrosoft Corporation\t(none)\t580\tnoarch\t0\tmariner-release-2.0-12.cm2.src.rpm\nfilesystem\t1.1-9.cm2\t1653816591\t1653628924\tMicrosoft Corporation\t(none)\t7596\tx86_64\t0\tfilesystem-1.1-9.cm2.src.rpm\nglibc\t2.35-2.cm2\t1653816591\t1653628955\tMicrosoft Corporation\t(none)\t10855265\tx86_64\t0\tglibc-2.35-2.cm2.src.rpm\nopenssl-libs\t1.1.1k-15.cm2\t1653816591\t1653631609\tMicrosoft Corporation\t(none)\t4365048\tx86_64\t0\topenssl-1.1.1k-15.cm2.src.rpm\n\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/generate-fixture.sh",
    "content": "#!/usr/bin/env bash\nset -eux\n\ndocker create --name generate-rpmdb-fixture centos:8 sh -c 'tail -f /dev/null'\n\nfunction cleanup {\n  docker kill generate-rpmdb-fixture\n  docker rm generate-rpmdb-fixture\n}\ntrap cleanup EXIT\n\ndocker start generate-rpmdb-fixture\ndocker exec -i --tty=false generate-rpmdb-fixture bash <<-EOF\n  mkdir -p /scratch\n  cd /scratch\n  rpm --initdb --dbpath /scratch\n  curl -sSLO https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm\n  rpm --dbpath /scratch -ivh dive_0.9.2_linux_amd64.rpm\n  rm dive_0.9.2_linux_amd64.rpm\n  rpm --dbpath /scratch -qa\nEOF\n\ndocker cp generate-rpmdb-fixture:/scratch/Packages .\n\ndocker build -o . - <<EOF\nFROM mcr.microsoft.com/cbl-mariner/distroless/base:2.0 as base\nFROM scratch\nCOPY --from=base /var/lib/rpmmanifest/container-manifest-2 .\nEOF\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/glob-paths/dive-0.10.0.rpm",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/glob-paths/usr/lib/sysimage/rpm/Packages",
    "content": ""
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/glob-paths/usr/share/rpm/Packages",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/glob-paths/var/lib/rpm/Packages",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/glob-paths/var/lib/rpmmanifest/container-manifest-2",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/image-minimal/Dockerfile",
    "content": "# linux/amd64\nFROM rockylinux:9.3.20231119@sha256:45cc42828cc5ceeffa3a9b4f6363fb582fac3ab91f77bf403daa067f8f049f96\n\nADD remove.sh /remove.sh\nRUN /remove.sh\n\n# let's only keep what we need for testing (not the intermediate layers)\nFROM scratch\nCOPY --from=0 / /\n"
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/image-minimal/remove.sh",
    "content": "#!/bin/bash\n\nESSENTIAL_PACKAGES=(\n    \"basesystem\"\n    \"filesystem\"\n    \"bash\"\n)\n\nESSENTIALS_PATTERN=$(IFS='|'; echo \"${ESSENTIAL_PACKAGES[*]}\")\nALL_PACKAGES=$(rpm -qa --queryformat '%{NAME}\\n')\nPACKAGES_TO_REMOVE=()\n\nfor package in $ALL_PACKAGES; do\n    if ! [[ \"$package\" =~ ^($ESSENTIALS_PATTERN)$ ]]; then\n        PACKAGES_TO_REMOVE+=(\"$package\")\n    else\n        echo \"Skipping essential package: $package\"\n    fi\ndone\n\nif [ ${#PACKAGES_TO_REMOVE[@]} -gt 0 ]; then\n    echo \"Removing non-essential packages...\"\n    rpm -e --nodeps \"${PACKAGES_TO_REMOVE[@]}\"\nelse\n    echo \"No non-essential packages to remove.\"\nfi\n\n# since we are still in the same terminal and the shell is loaded we can still echo :)\necho \"Cleanup complete.\""
  },
  {
    "path": "syft/pkg/cataloger/redhat/testdata/image-rpm-archive/Dockerfile",
    "content": "\nFROM --platform=linux/amd64 rockylinux:9 AS rpm-downloader\n\n# download a signed RPM (PostgreSQL in this example, known to be signed)\n# using PostgreSQL official RPM which is signed with their GPG key\n# $ rpm -Kv postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm\n#   postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm:\n#      Header V4 RSA/SHA256 Signature, key ID 08b40d20: NOKEY\n#      Header SHA256 digest: OK\n#      Header SHA1 digest: OK\n#      Payload SHA256 digest: OK\n#      MD5 digest: OK\n#\n# $ rpm -ivh --nodeps --force postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm\n#   warning: postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 08b40d20: NOKEY\n#   Verifying...                          ################################# [100%]\n#   Preparing...                          ################################# [100%]\n#\n# $ rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} %{RSAHEADER:pgpsig}\\n' postgresql14-server-14.10-1PGDG.rhel9.x86_64\n#   postgresql14-server-14.10-1PGDG.rhel9 RSA/SHA256, Tue Jan  2 16:45:56 2024, Key ID 40bca2b408b40d20\n\nRUN curl -O https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-9-x86_64/postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm\n\nFROM scratch\n\nCOPY --from=rpm-downloader /postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm /postgresql14-server-14.10-1PGDG.rhel9.x86_64.rpm"
  },
  {
    "path": "syft/pkg/cataloger/ruby/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: ruby # MANUAL\n    name: ruby-gemfile-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/ruby/cataloger.go\n      function: NewGemFileLockCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - gem\n      - language\n      - package\n      - ruby\n    parsers: # AUTO-GENERATED structure\n      - function: parseGemFileLockEntries\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Gemfile.lock'\n            - '**/Gemfile.next.lock'\n        package_types: # AUTO-GENERATED\n          - gem\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: ruby # MANUAL\n    name: ruby-gemspec-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/ruby/cataloger.go\n      function: NewGemSpecCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - gem\n      - gemspec\n      - language\n      - package\n      - ruby\n    parsers: # AUTO-GENERATED structure\n      - function: parseGemSpecEntries\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.gemspec'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RubyGemspec\n        package_types: # AUTO-GENERATED\n          - gem\n        json_schema_types: # AUTO-GENERATED\n          - RubyGemspec\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - RubyGemspec.Files\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: ruby # MANUAL\n    name: ruby-installed-gemspec-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/ruby/cataloger.go\n      function: NewInstalledGemSpecCataloger\n    selectors: # AUTO-GENERATED\n      - gem\n      - gemspec\n      - image\n      - installed\n      - language\n      - package\n      - ruby\n    parsers: # AUTO-GENERATED structure\n      - function: parseGemSpecEntries\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/specifications/**/*.gemspec'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RubyGemspec\n        package_types: # AUTO-GENERATED\n          - gem\n        json_schema_types: # AUTO-GENERATED\n          - RubyGemspec\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: true\n            evidence:\n              - RubyGemspec.Files\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/cataloger.go",
    "content": "/*\nPackage ruby provides a concrete Cataloger implementation relating to packages within the Ruby language ecosystem.\n*/\npackage ruby\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewGemFileLockCataloger returns a new Bundler cataloger object tailored for parsing index-oriented files (e.g. Gemfile.lock).\nfunc NewGemFileLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"ruby-gemfile-cataloger\").\n\t\tWithParserByGlobs(parseGemFileLockEntries, \"**/Gemfile.lock\", \"**/Gemfile.next.lock\")\n}\n\n// NewInstalledGemSpecCataloger returns a new Bundler cataloger object tailored for detecting installations of gems (e.g. Gemspec).\nfunc NewInstalledGemSpecCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"ruby-installed-gemspec-cataloger\").\n\t\tWithParserByGlobs(parseGemSpecEntries, \"**/specifications/**/*.gemspec\")\n}\n\n// NewGemSpecCataloger looks for gems without the additional requirement of the gem being installed.\nfunc NewGemSpecCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"ruby-gemspec-cataloger\").\n\t\tWithParserByGlobs(parseGemSpecEntries, \"**/*.gemspec\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/cataloger_test.go",
    "content": "package ruby\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_GemFileLock_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain gemfile lock files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/Gemfile.lock\",\n\t\t\t\t\"src/Gemfile.next.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewGemFileLockCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_GemSpec_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain gemspec files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"specifications/root.gemspec\",\n\t\t\t\t\"specifications/pkg/nested.gemspec\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewGemSpecCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/package.go",
    "content": "package ruby\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newGemfileLockPackage(name, version string, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tPURL:      packageURL(name, version),\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tLanguage:  pkg.Ruby,\n\t\tType:      pkg.GemPkg,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newGemspecPackage(ctx context.Context, resolver file.Resolver, m gemData, gemSpecLocation file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   m.Version,\n\t\tLocations: file.NewLocationSet(gemSpecLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicensesFromLocationWithContext(ctx, gemSpecLocation, m.Licenses...)...),\n\t\tPURL:      packageURL(m.Name, m.Version),\n\t\tLanguage:  pkg.Ruby,\n\t\tType:      pkg.GemPkg,\n\t\tMetadata:  m.RubyGemspec,\n\t}\n\n\tp.SetID()\n\n\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\n\treturn p\n}\n\nfunc packageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeGem,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/package_test.go",
    "content": "package ruby\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tversion  string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname:     \"p\",\n\t\t\tversion:  \"v\",\n\t\t\texpected: \"pkg:gem/p@v\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"%s@%s\", test.name, test.version), func(t *testing.T) {\n\t\t\tactual := packageURL(test.name, test.version)\n\t\t\tif diff := cmp.Diff(test.expected, actual); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected packageURL (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/parse_gemfile_lock.go",
    "content": "package ruby\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseGemFileLockEntries\n\nvar sectionsOfInterest = strset.New(\"GEM\", \"GIT\", \"PATH\", \"PLUGIN SOURCE\")\n\n// parseGemFileLockEntries is a parser function for Gemfile.lock contents, returning all Gems discovered.\nfunc parseGemFileLockEntries(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tscanner := bufio.NewScanner(reader)\n\n\tvar currentSection string\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tsanitizedLine := strings.TrimSpace(line)\n\n\t\tif len(line) > 1 && line[0] != ' ' {\n\t\t\t// start of section\n\t\t\tcurrentSection = sanitizedLine\n\t\t\tcontinue\n\t\t} else if !sectionsOfInterest.Has(currentSection) {\n\t\t\t// skip this line, we're in the wrong section\n\t\t\tcontinue\n\t\t}\n\n\t\tif isDependencyLine(line) {\n\t\t\tcandidate := strings.Fields(sanitizedLine)\n\t\t\tif len(candidate) != 2 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tpkgs = append(pkgs,\n\t\t\t\tnewGemfileLockPackage(\n\t\t\t\t\tcandidate[0],\n\t\t\t\t\tstrings.Trim(candidate[1], \"()\"),\n\t\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc isDependencyLine(line string) bool {\n\tif len(line) < 5 {\n\t\treturn false\n\t}\n\treturn strings.Count(line[:5], \" \") == 4\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/parse_gemfile_lock_test.go",
    "content": "package ruby\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseGemfileLockEntries(t *testing.T) {\n\tfixture := \"testdata/Gemfile.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tvar expectedPkgs = []pkg.Package{\n\t\t{Name: \"actionmailer\", Version: \"4.1.1\", PURL: \"pkg:gem/actionmailer@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"actionpack\", Version: \"4.1.1\", PURL: \"pkg:gem/actionpack@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"actionview\", Version: \"4.1.1\", PURL: \"pkg:gem/actionview@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"activemodel\", Version: \"4.1.1\", PURL: \"pkg:gem/activemodel@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"activerecord\", Version: \"4.1.1\", PURL: \"pkg:gem/activerecord@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"activesupport\", Version: \"4.1.1\", PURL: \"pkg:gem/activesupport@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"arel\", Version: \"5.0.1.20140414130214\", PURL: \"pkg:gem/arel@5.0.1.20140414130214\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"bootstrap-sass\", Version: \"3.1.1.1\", PURL: \"pkg:gem/bootstrap-sass@3.1.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"builder\", Version: \"3.2.2\", PURL: \"pkg:gem/builder@3.2.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"coffee-rails\", Version: \"4.0.1\", PURL: \"pkg:gem/coffee-rails@4.0.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"coffee-script\", Version: \"2.2.0\", PURL: \"pkg:gem/coffee-script@2.2.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"coffee-script-source\", Version: \"1.7.0\", PURL: \"pkg:gem/coffee-script-source@1.7.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"erubis\", Version: \"2.7.0\", PURL: \"pkg:gem/erubis@2.7.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"execjs\", Version: \"2.0.2\", PURL: \"pkg:gem/execjs@2.0.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"google-cloud-errors\", Version: \"1.3.0\", PURL: \"pkg:gem/google-cloud-errors@1.3.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"hike\", Version: \"1.2.3\", PURL: \"pkg:gem/hike@1.2.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"i18n\", Version: \"0.6.9\", PURL: \"pkg:gem/i18n@0.6.9\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"jbuilder\", Version: \"2.0.7\", PURL: \"pkg:gem/jbuilder@2.0.7\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"jquery-rails\", Version: \"3.1.0\", PURL: \"pkg:gem/jquery-rails@3.1.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"json\", Version: \"1.8.1\", PURL: \"pkg:gem/json@1.8.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"kgio\", Version: \"2.9.2\", PURL: \"pkg:gem/kgio@2.9.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"libv8\", Version: \"3.16.14.3\", PURL: \"pkg:gem/libv8@3.16.14.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"mail\", Version: \"2.5.4\", PURL: \"pkg:gem/mail@2.5.4\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"mime-types\", Version: \"1.25.1\", PURL: \"pkg:gem/mime-types@1.25.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"minitest\", Version: \"5.3.4\", PURL: \"pkg:gem/minitest@5.3.4\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"multi_json\", Version: \"1.10.1\", PURL: \"pkg:gem/multi_json@1.10.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"mysql2\", Version: \"0.3.16\", PURL: \"pkg:gem/mysql2@0.3.16\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"polyglot\", Version: \"0.3.4\", PURL: \"pkg:gem/polyglot@0.3.4\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"rack\", Version: \"1.5.2\", PURL: \"pkg:gem/rack@1.5.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"rack-test\", Version: \"0.6.2\", PURL: \"pkg:gem/rack-test@0.6.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"rails\", Version: \"4.1.1\", PURL: \"pkg:gem/rails@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"railties\", Version: \"4.1.1\", PURL: \"pkg:gem/railties@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"raindrops\", Version: \"0.13.0\", PURL: \"pkg:gem/raindrops@0.13.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"rake\", Version: \"10.3.2\", PURL: \"pkg:gem/rake@10.3.2\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"rdoc\", Version: \"4.1.1\", PURL: \"pkg:gem/rdoc@4.1.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"ref\", Version: \"1.0.5\", PURL: \"pkg:gem/ref@1.0.5\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sass\", Version: \"3.2.19\", PURL: \"pkg:gem/sass@3.2.19\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sass-rails\", Version: \"4.0.3\", PURL: \"pkg:gem/sass-rails@4.0.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sdoc\", Version: \"0.4.0\", PURL: \"pkg:gem/sdoc@0.4.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"spring\", Version: \"1.1.3\", PURL: \"pkg:gem/spring@1.1.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sprockets\", Version: \"2.11.0\", PURL: \"pkg:gem/sprockets@2.11.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sprockets-rails\", Version: \"2.1.3\", PURL: \"pkg:gem/sprockets-rails@2.1.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"sqlite3\", Version: \"1.3.9\", PURL: \"pkg:gem/sqlite3@1.3.9\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"therubyracer\", Version: \"0.12.1\", PURL: \"pkg:gem/therubyracer@0.12.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"thor\", Version: \"0.19.1\", PURL: \"pkg:gem/thor@0.19.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"thread_safe\", Version: \"0.3.3\", PURL: \"pkg:gem/thread_safe@0.3.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"tilt\", Version: \"1.4.1\", PURL: \"pkg:gem/tilt@1.4.1\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"treetop\", Version: \"1.4.15\", PURL: \"pkg:gem/treetop@1.4.15\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"turbolinks\", Version: \"3.0.0\", PURL: \"pkg:gem/turbolinks@3.0.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"tzinfo\", Version: \"1.2.0\", PURL: \"pkg:gem/tzinfo@1.2.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"uglifier\", Version: \"2.5.0\", PURL: \"pkg:gem/uglifier@2.5.0\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t\t{Name: \"unicorn\", Version: \"4.8.3\", PURL: \"pkg:gem/unicorn@4.8.3\", Locations: locations, Language: pkg.Ruby, Type: pkg.GemPkg},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseGemFileLockEntries, expectedPkgs, nil)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/parse_gemspec.go",
    "content": "package ruby\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/go-viper/mapstructure/v2\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parseGemFileLockEntries\n\ntype postProcessor func(string) []string\n\ntype gemData struct {\n\tLicenses        []string `mapstructure:\"licenses\" json:\"licenses,omitempty\"`\n\tpkg.RubyGemspec `mapstructure:\",squash\" json:\",inline\"`\n}\n\n// match example:      Al\\u003Ex   --->   003E\nvar unicodePattern = regexp.MustCompile(`\\\\u(?P<unicode>[0-9A-F]{4})`)\n\nvar patterns = map[string]*regexp.Regexp{\n\t// match example:       name = \"railties\".freeze   --->   railties\n\t\"name\": regexp.MustCompile(`.*\\.name\\s*=\\s*[\"']{1}(?P<name>.*)[\"']{1} *`),\n\n\t// match example:       version = \"1.0.4\".freeze   --->   1.0.4\n\t\"version\": regexp.MustCompile(`.*\\.version\\s*=\\s*[\"']{1}(?P<version>.*)[\"']{1} *`),\n\n\t// match example:\n\t// homepage = \"https://github.com/anchore/syft\".freeze   --->   https://github.com/anchore/syft\n\t\"homepage\": regexp.MustCompile(`.*\\.homepage\\s*=\\s*[\"']{1}(?P<homepage>.*)[\"']{1} *`),\n\n\t// match example:       files = [\"exe/bundle\".freeze, \"exe/bundler\".freeze]    --->    \"exe/bundle\".freeze, \"exe/bundler\".freeze\n\t\"files\": regexp.MustCompile(`.*\\.files\\s*=\\s*\\[(?P<files>.*)] *`),\n\n\t// match example:       authors = [\"Andr\\u00E9 Arko\".freeze, \"Samuel Giddins\".freeze, \"Colby Swandale\".freeze,\n\t//\t\t\t\t\t\t\t\t   \"Hiroshi Shibata\".freeze, \"David Rodr\\u00EDguez\".freeze, \"Grey Baker\".freeze...]\n\t\"authors\": regexp.MustCompile(`.*\\.authors\\s*=\\s*\\[(?P<authors>.*)] *`),\n\n\t// match example:\t    licenses = [\"MIT\".freeze]   ----> \"MIT\".freeze\n\t\"licenses\": regexp.MustCompile(`.*\\.licenses\\s*=\\s*\\[(?P<licenses>.*)] *`),\n}\n\nvar postProcessors = map[string]postProcessor{\n\t\"files\":    processList,\n\t\"authors\":  processList,\n\t\"licenses\": processList,\n}\n\nfunc processList(s string) []string {\n\tvar results []string\n\tfor _, item := range strings.Split(s, \",\") {\n\t\tresults = append(results, strings.Trim(item, \"\\\" \"))\n\t}\n\treturn results\n}\n\n// parseGemSpecEntries parses the gemspec file and returns the packages and relationships found.\nfunc parseGemSpecEntries(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tvar fields = make(map[string]interface{})\n\tscanner := bufio.NewScanner(reader)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\n\t\tsanitizedLine := strings.TrimSpace(line)\n\t\tsanitizedLine = strings.ReplaceAll(sanitizedLine, \".freeze\", \"\")\n\t\tsanitizedLine = renderUtf8(sanitizedLine)\n\n\t\tif sanitizedLine == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tfor field, pattern := range patterns {\n\t\t\tmatchMap := internal.MatchNamedCaptureGroups(pattern, sanitizedLine)\n\t\t\tif value := matchMap[field]; value != \"\" {\n\t\t\t\tif pp := postProcessors[field]; pp != nil {\n\t\t\t\t\tfields[field] = pp(value)\n\t\t\t\t} else {\n\t\t\t\t\tfields[field] = value\n\t\t\t\t}\n\t\t\t\t// TODO: know that a line could actually match on multiple patterns, this is unlikely though\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif fields[\"name\"] != \"\" && fields[\"version\"] != \"\" {\n\t\tvar metadata gemData\n\t\tif err := mapstructure.Decode(fields, &metadata); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"unable to decode gem metadata: %w\", err)\n\t\t}\n\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewGemspecPackage(\n\t\t\t\tctx,\n\t\t\t\tresolver,\n\t\t\t\tmetadata,\n\t\t\t\treader.Location,\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, nil\n}\n\n// renderUtf8 takes any string escaped string subsections from the ruby string and replaces those sections with the UTF8 runes.\nfunc renderUtf8(s string) string {\n\tfullReplacement := unicodePattern.ReplaceAllStringFunc(s, func(unicodeSection string) string {\n\t\tvar replacement string\n\t\t// note: the json parser already has support for interpreting hex-representations of unicode escaped strings as unicode runes.\n\t\t// we can do this ourselves with strconv.Atoi, or leverage the existing json package.\n\t\tif err := json.Unmarshal([]byte(`\"`+unicodeSection+`\"`), &replacement); err != nil {\n\t\t\treturn unicodeSection\n\t\t}\n\t\treturn replacement\n\t})\n\treturn fullReplacement\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/parse_gemspec_test.go",
    "content": "package ruby\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseGemspec(t *testing.T) {\n\tfixture := \"testdata/bundler.gemspec\"\n\tctx := context.TODO()\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\tvar expectedPkg = pkg.Package{\n\t\tName:      \"bundler\",\n\t\tVersion:   \"2.1.4\",\n\t\tPURL:      \"pkg:gem/bundler@2.1.4\",\n\t\tLocations: locations,\n\t\tType:      pkg.GemPkg,\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(fixture)),\n\t\t),\n\t\tLanguage: pkg.Ruby,\n\t\tMetadata: pkg.RubyGemspec{\n\t\t\tName:     \"bundler\",\n\t\t\tVersion:  \"2.1.4\",\n\t\t\tFiles:    []string{\"exe/bundle\", \"exe/bundler\"},\n\t\t\tAuthors:  []string{\"André Arko\", \"Samuel Giddins\", \"Colby Swandale\", \"Hiroshi Shibata\", \"David Rodríguez\", \"Grey Baker\", \"Stephanie Morillo\", \"Chris Morris\", \"James Wen\", \"Tim Moore\", \"André Medeiros\", \"Jessica Lynn Suttles\", \"Terence Lee\", \"Carl Lerche\", \"Yehuda Katz\"},\n\t\t\tHomepage: \"https://bundler.io\",\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseGemSpecEntries, []pkg.Package{expectedPkg}, nil)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/ruby/testdata/bundler.gemspec",
    "content": "# frozen_string_literal: true\n# -*- encoding: utf-8 -*-\n# stub: bundler 2.1.4 ruby lib\n\nGem::Specification.new do |s|\n  s.name = \"bundler\".freeze\n  s.version = \"2.1.4\"\n\n  s.required_rubygems_version = Gem::Requirement.new(\">= 2.5.2\".freeze) if s.respond_to? :required_rubygems_version=\n  s.metadata = { \"bug_tracker_uri\" => \"https://github.com/bundler/bundler/issues\", \"changelog_uri\" => \"https://github.com/bundler/bundler/blob/master/CHANGELOG.md\", \"homepage_uri\" => \"https://bundler.io/\", \"source_code_uri\" => \"https://github.com/bundler/bundler/\" } if s.respond_to? :metadata=\n  s.require_paths = [\"lib\".freeze]\n  s.authors = [\"Andr\\u00E9 Arko\".freeze, \"Samuel Giddins\".freeze, \"Colby Swandale\".freeze, \"Hiroshi Shibata\".freeze, \"David Rodr\\u00EDguez\".freeze, \"Grey Baker\".freeze, \"Stephanie Morillo\".freeze, \"Chris Morris\".freeze, \"James Wen\".freeze, \"Tim Moore\".freeze, \"Andr\\u00E9 Medeiros\".freeze, \"Jessica Lynn Suttles\".freeze, \"Terence Lee\".freeze, \"Carl Lerche\".freeze, \"Yehuda Katz\".freeze]\n  s.bindir = \"exe\".freeze\n  s.date = \"2020-01-05\"\n  s.description = \"Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably\".freeze\n  s.email = [\"team@bundler.io\".freeze]\n  s.executables = [\"bundle\".freeze, \"bundler\".freeze]\n  s.files = [\"exe/bundle\".freeze, \"exe/bundler\".freeze]\n  s.homepage = \"https://bundler.io\".freeze\n  s.licenses = [\"MIT\".freeze]\n  s.required_ruby_version = Gem::Requirement.new(\">= 2.3.0\".freeze)\n  s.rubygems_version = \"3.1.2\".freeze\n  s.summary = \"The best way to manage your application's dependencies\".freeze\n\n  s.installed_by_version = \"3.1.2\" if s.respond_to? :installed_by_version\nend"
  },
  {
    "path": "syft/pkg/cataloger/ruby/testdata/glob-paths/specifications/pkg/nested.gemspec",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/ruby/testdata/glob-paths/specifications/root.gemspec",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/rust/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: rust # MANUAL\n    name: cargo-auditable-binary-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/rust/cataloger.go\n      function: NewAuditBinaryCataloger\n    selectors: # AUTO-GENERATED\n      - binary\n      - directory\n      - image\n      - installed\n      - language\n      - package\n      - rust\n    parsers: # AUTO-GENERATED structure\n      - function: parseAuditBinary\n        detector: # AUTO-GENERATED\n          method: mimetype # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - application/x-executable\n            - application/x-mach-binary\n            - application/x-elf\n            - application/x-sharedlib\n            - application/vnd.microsoft.portable-executable\n            - application/x-executable\n        metadata_types: # AUTO-GENERATED\n          - pkg.RustBinaryAuditEntry\n        package_types: # AUTO-GENERATED\n          - rust-crate\n        json_schema_types: # AUTO-GENERATED\n          - RustCargoAuditEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n  - ecosystem: rust # MANUAL\n    name: rust-cargo-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/rust/cataloger.go\n      function: NewCargoLockCataloger\n    selectors: # AUTO-GENERATED\n      - cargo\n      - declared\n      - directory\n      - language\n      - package\n      - rust\n    parsers: # AUTO-GENERATED structure\n      - function: parseCargoLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Cargo.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.RustCargoLockEntry\n        package_types: # AUTO-GENERATED\n          - rust-crate\n        json_schema_types: # AUTO-GENERATED\n          - RustCargoLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: complete\n          - name: dependency.kinds\n            default:\n              - runtime\n              - dev\n              - build\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - RustCargoLockEntry.Checksum\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/cataloger.go",
    "content": "/*\nPackage rust provides a concrete Cataloger implementation relating to packages within the Rust language ecosystem.\n*/\npackage rust\n\nimport (\n\t\"github.com/anchore/syft/internal/mimetype\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewCargoLockCataloger returns a new Rust Cargo lock file cataloger object.\nfunc NewCargoLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"rust-cargo-lock-cataloger\").\n\t\tWithParserByGlobs(parseCargoLock, \"**/Cargo.lock\")\n}\n\n// NewAuditBinaryCataloger returns a new Rust auditable binary cataloger object that can detect dependencies\n// in binaries produced with https://github.com/Shnatsel/rust-audit\nfunc NewAuditBinaryCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"cargo-auditable-binary-cataloger\").\n\t\tWithParserByMimeTypes(parseAuditBinary, mimetype.ExecutableMIMETypeSet.List()...)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/cataloger_test.go",
    "content": "package rust\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestNewAuditBinaryCataloger(t *testing.T) {\n\tlocations := file.NewLocationSet(file.NewVirtualLocation(\"/usr/local/bin/hello_world\", \"/usr/local/bin/hello_world\"))\n\n\targh := pkg.Package{\n\t\tName:      \"argh\",\n\t\tVersion:   \"0.1.12\",\n\t\tPURL:      \"pkg:cargo/argh@0.1.12\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"argh\",\n\t\t\tVersion: \"0.1.12\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\targhDerive := pkg.Package{\n\t\tName:      \"argh_derive\",\n\t\tVersion:   \"0.1.12\",\n\t\tPURL:      \"pkg:cargo/argh_derive@0.1.12\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"argh_derive\",\n\t\t\tVersion: \"0.1.12\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\targhShared := pkg.Package{\n\t\tName:      \"argh_shared\",\n\t\tVersion:   \"0.1.12\",\n\t\tPURL:      \"pkg:cargo/argh_shared@0.1.12\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"argh_shared\",\n\t\t\tVersion: \"0.1.12\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\thelloWorld := pkg.Package{\n\t\tName:      \"hello_world\",\n\t\tVersion:   \"0.1.0\",\n\t\tPURL:      \"pkg:cargo/hello_world@0.1.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"hello_world\",\n\t\t\tVersion: \"0.1.0\",\n\t\t\tSource:  \"local\",\n\t\t},\n\t}\n\n\tprocMacro2 := pkg.Package{\n\t\tName:      \"proc-macro2\",\n\t\tVersion:   \"1.0.92\",\n\t\tPURL:      \"pkg:cargo/proc-macro2@1.0.92\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"proc-macro2\",\n\t\t\tVersion: \"1.0.92\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\tquote := pkg.Package{\n\t\tName:      \"quote\",\n\t\tVersion:   \"1.0.37\",\n\t\tPURL:      \"pkg:cargo/quote@1.0.37\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"quote\",\n\t\t\tVersion: \"1.0.37\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\tserde := pkg.Package{\n\t\tName:      \"serde\",\n\t\tVersion:   \"1.0.215\",\n\t\tPURL:      \"pkg:cargo/serde@1.0.215\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"serde\",\n\t\t\tVersion: \"1.0.215\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\tserdeDerive := pkg.Package{\n\t\tName:      \"serde_derive\",\n\t\tVersion:   \"1.0.215\",\n\t\tPURL:      \"pkg:cargo/serde_derive@1.0.215\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"serde_derive\",\n\t\t\tVersion: \"1.0.215\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\tsyn := pkg.Package{\n\t\tName:      \"syn\",\n\t\tVersion:   \"2.0.90\",\n\t\tPURL:      \"pkg:cargo/syn@2.0.90\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"syn\",\n\t\t\tVersion: \"2.0.90\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\tunicodeIdent := pkg.Package{\n\t\tName:      \"unicode-ident\",\n\t\tVersion:   \"1.0.14\",\n\t\tPURL:      \"pkg:cargo/unicode-ident@1.0.14\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    \"unicode-ident\",\n\t\t\tVersion: \"1.0.14\",\n\t\t\tSource:  \"crates.io\",\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\targh,\n\t\targhDerive,\n\t\targhShared,\n\t\thelloWorld,\n\t\tprocMacro2,\n\t\tquote,\n\t\tserde,\n\t\tserdeDerive,\n\t\tsyn,\n\t\tunicodeIdent,\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: argh,\n\t\t\tTo:   helloWorld,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: arghDerive,\n\t\t\tTo:   argh,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: arghShared,\n\t\t\tTo:   argh,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: arghShared,\n\t\t\tTo:   arghDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: procMacro2,\n\t\t\tTo:   arghDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: procMacro2,\n\t\t\tTo:   quote,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: procMacro2,\n\t\t\tTo:   serdeDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: procMacro2,\n\t\t\tTo:   syn,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: quote,\n\t\t\tTo:   arghDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: quote,\n\t\t\tTo:   serdeDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: quote,\n\t\t\tTo:   syn,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: serde,\n\t\t\tTo:   arghShared,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: serdeDerive,\n\t\t\tTo:   serde,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: syn,\n\t\t\tTo:   arghDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: syn,\n\t\t\tTo:   serdeDerive,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: unicodeIdent,\n\t\t\tTo:   procMacro2,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: unicodeIdent,\n\t\t\tTo:   syn,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.NewCatalogTester().\n\t\tWithImageResolver(t, \"image-audit\").\n\t\tIgnoreLocationLayer(). // this fixture can be rebuilt, thus the layer ID will change\n\t\tExpects(expectedPkgs, expectedRelationships).\n\t\tTestCataloger(t, NewAuditBinaryCataloger())\n}\n\nfunc Test_CargoLockCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain Cargo.lock files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/Cargo.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewCargoLockCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_AuditBinaryCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain audit binary files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"partial-binary\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewAuditBinaryCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_corruptAuditBinary(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/partial-binary\").\n\t\tWithError().\n\t\tTestParser(t, parseAuditBinary)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/package.go",
    "content": "package rust\n\nimport (\n\t\"github.com/rust-secure-code/go-rustaudit\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// Pkg returns the standard `pkg.Package` representation of the package referenced within the Cargo.lock metadata.\nfunc newPackageFromCargoMetadata(m pkg.RustCargoLockEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   m.Version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(m.Name, m.Version),\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newPackageFromAudit(dep *rustaudit.Package, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      dep.Name,\n\t\tVersion:   dep.Version,\n\t\tPURL:      packageURL(dep.Name, dep.Version),\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tMetadata: pkg.RustBinaryAuditEntry{\n\t\t\tName:    dep.Name,\n\t\t\tVersion: dep.Version,\n\t\t\tSource:  dep.Source,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\n// packageURL returns the PURL for the specific rust package (see https://github.com/package-url/purl-spec)\nfunc packageURL(name, version string) string {\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeCargo,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tnil,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/package_test.go",
    "content": "package rust\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_packageURL(t *testing.T) {\n\ttype args struct {\n\t\tname    string\n\t\tversion string\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\targs: args{\n\t\t\t\tname:    \"name\",\n\t\t\t\tversion: \"v0.1.0\",\n\t\t\t},\n\t\t\twant: \"pkg:cargo/name@v0.1.0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, packageURL(tt.args.name, tt.args.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/parse_audit_binary.go",
    "content": "package rust\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/rust-secure-code/go-rustaudit\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/relationship\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/unionreader\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// Catalog identifies executables then attempts to read Rust dependency information from them\nfunc parseAuditBinary(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tvar relationships []artifact.Relationship\n\n\tunionReader, err := unionreader.GetUnionReader(reader.ReadCloser)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tinfos, err := parseAuditBinaryEntry(unionReader, reader.RealPath)\n\tfor _, versionInfo := range infos {\n\t\tauditPkgs, auditRelationships := processAuditVersionInfo(reader.Location, versionInfo)\n\t\tpkgs = append(pkgs, auditPkgs...)\n\t\trelationships = append(relationships, auditRelationships...)\n\t}\n\n\treturn pkgs, relationships, err\n}\n\n// scanFile scans file to try to report the Rust crate dependencies\nfunc parseAuditBinaryEntry(reader unionreader.UnionReader, filename string) ([]rustaudit.VersionInfo, error) {\n\t// NOTE: multiple readers are returned to cover universal binaries, which are files\n\t// with more than one binary\n\treaders, err := unionreader.GetReaders(reader)\n\tif err != nil {\n\t\tlog.Debugf(\"rust cataloger: failed to open a binary: %v\", err)\n\t\treturn nil, fmt.Errorf(\"rust cataloger: failed to open a binary: %w\", err)\n\t}\n\n\tvar versionInfos []rustaudit.VersionInfo\n\tfor _, r := range readers {\n\t\tversionInfo, err := rustaudit.GetDependencyInfo(r)\n\n\t\tif err != nil {\n\t\t\tif errors.Is(err, rustaudit.ErrNoRustDepInfo) {\n\t\t\t\t// since the cataloger can only select executables and not distinguish if they are a Rust-compiled\n\t\t\t\t// binary, we should not show warnings/logs in this case.\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t\tlog.Tracef(\"rust cataloger: unable to read dependency information (file=%q): %v\", filename, err)\n\t\t\treturn nil, fmt.Errorf(\"rust cataloger: unable to read dependency information: %w\", err)\n\t\t}\n\n\t\tversionInfos = append(versionInfos, versionInfo)\n\t}\n\n\treturn versionInfos, nil\n}\n\n// auditPkgPair is a helper struct to track the original index of the package in the original audit report + the syft package created for it\ntype auditPkgPair struct {\n\tpkg     *pkg.Package\n\trustPkg rustaudit.Package\n\tindex   int\n}\n\nfunc processAuditVersionInfo(location file.Location, versionInfo rustaudit.VersionInfo) ([]pkg.Package, []artifact.Relationship) {\n\tvar pkgs []pkg.Package\n\n\t// first pass: create packages for all runtime dependencies (skip dev and invalid dependencies)\n\tpairsByOgIndex := make(map[int]auditPkgPair)\n\tfor idx, dep := range versionInfo.Packages {\n\t\tp := newPackageFromAudit(&dep, location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation))\n\t\tpair := auditPkgPair{\n\t\t\trustPkg: dep,\n\t\t\tindex:   idx,\n\t\t}\n\t\tif pkg.IsValid(&p) && dep.Kind == rustaudit.Runtime {\n\t\t\tpkgs = append(pkgs, p)\n\t\t\tpair.pkg = &pkgs[len(pkgs)-1]\n\t\t}\n\t\tpairsByOgIndex[idx] = pair\n\t}\n\n\t// second pass: create relationships between any packages created\n\t// we have all the original audit package indices + info, but not all audit packages will have syft packages.\n\t// we need to be careful to not create relationships for packages that were not created.\n\tvar rels []artifact.Relationship\n\tfor _, parentPair := range pairsByOgIndex {\n\t\t// the rust-audit report lists dependencies by index from the original version info object. We need to find\n\t\t// the syft packages created for each listed dependency from that original object.\n\t\tfor _, ogPkgIndex := range parentPair.rustPkg.Dependencies {\n\t\t\tif ogPkgIndex >= uint(len(versionInfo.Packages)) {\n\t\t\t\tlog.WithFields(\"pkg\", parentPair.pkg).Trace(\"cargo audit dependency index out of range: %d\", ogPkgIndex)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdepPair, ok := pairsByOgIndex[int(ogPkgIndex)]\n\t\t\tif !ok {\n\t\t\t\tlog.WithFields(\"pkg\", parentPair.pkg).Trace(\"cargo audit dependency not found: %d\", ogPkgIndex)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif depPair.pkg == nil || parentPair.pkg == nil {\n\t\t\t\t// skip relationships for syft packages that were not created from the original report (no matter the reason)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trels = append(rels, artifact.Relationship{\n\t\t\t\tFrom: *depPair.pkg,\n\t\t\t\tTo:   *parentPair.pkg,\n\t\t\t\tType: artifact.DependencyOfRelationship,\n\t\t\t})\n\t\t}\n\t}\n\n\trelationship.Sort(rels)\n\n\treturn pkgs, rels\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/parse_cargo_lock.go",
    "content": "package rust\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/pelletier/go-toml\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/dependency\"\n)\n\nvar _ generic.Parser = parseCargoLock\n\ntype cargoLockFile struct {\n\tPackages []pkg.RustCargoLockEntry `toml:\"package\"`\n}\n\n// parseCargoLock is a parser function for Cargo.lock contents, returning all rust cargo crates discovered.\nfunc parseCargoLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\ttree, err := toml.LoadReader(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to load Cargo.lock for parsing: %w\", err)\n\t}\n\n\tm := cargoLockFile{}\n\terr = tree.Unmarshal(&m)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse Cargo.lock: %w\", err)\n\t}\n\n\tvar pkgs []pkg.Package\n\n\tfor _, p := range m.Packages {\n\t\tif p.Dependencies == nil {\n\t\t\tp.Dependencies = make([]string, 0)\n\t\t}\n\t\tnewPkg := newPackageFromCargoMetadata(\n\t\t\tp,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewPkg,\n\t\t)\n\t}\n\n\treturn pkgs, dependency.Resolve(dependencySpecification, pkgs), unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc dependencySpecification(p pkg.Package) dependency.Specification {\n\trustMeta, ok := p.Metadata.(pkg.RustCargoLockEntry)\n\tif !ok {\n\t\tlog.Tracef(\"cataloger failed to extract rust Cargo.lock metadata for package %+v\", p.Name)\n\t\treturn dependency.Specification{}\n\t}\n\n\t// Cargo.lock dependencies are strings that are the name of a package, if that\n\t// is unambiguous, or a string like \"name version\" if the name alone is not\n\t// ambiguous, or strings like \"name version (source)\" if \"name version\" is ambiguous.\n\t// Provide all the strings, since we don't know which string will be used.\n\t// In other words, each package \"provides\" 3 entries, one for each name format,\n\t// and each package \"requires\" whatever it actually requires based on the Cargo.lock.\n\tprovides := []string{\n\t\tp.Name,\n\t\tfmt.Sprintf(\"%s %s\", p.Name, p.Version),\n\t}\n\n\tif rustMeta.Source != \"\" {\n\t\tsrc := rustMeta.Source\n\t\tif strings.HasPrefix(src, \"git\") && strings.Contains(src, \"#\") {\n\t\t\tsrc = strings.Split(src, \"#\")[0]\n\t\t}\n\n\t\tprovides = append(provides, fmt.Sprintf(\"%s %s (%s)\", p.Name, p.Version, src))\n\t}\n\n\treturn dependency.Specification{\n\t\tProvidesRequires: dependency.ProvidesRequires{\n\t\t\tProvides: provides,\n\t\t\tRequires: rustMeta.Dependencies,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/parse_cargo_lock_test.go",
    "content": "package rust\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseCargoLock(t *testing.T) {\n\tfixture := \"testdata/Cargo.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tansiTerm := pkg.Package{\n\t\tName:      \"ansi_term\",\n\t\tVersion:   \"0.12.1\",\n\t\tPURL:      \"pkg:cargo/ansi_term@0.12.1\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"ansi_term\",\n\t\t\tVersion:  \"0.12.1\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"winapi\",\n\t\t\t},\n\t\t},\n\t}\n\terrno := pkg.Package{\n\t\tName:      \"errno\",\n\t\tVersion:   \"0.3.9\",\n\t\tPURL:      \"pkg:cargo/errno@0.3.9\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"errno\",\n\t\t\tVersion:  \"0.3.9\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"windows-sys 0.52.0\",\n\t\t\t},\n\t\t},\n\t}\n\tmatches := pkg.Package{\n\t\tName:      \"matches\",\n\t\tVersion:   \"0.1.8\",\n\t\tPURL:      \"pkg:cargo/matches@0.1.8\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"matches\",\n\t\t\tVersion:      \"0.1.8\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\tmemchr := pkg.Package{\n\t\tName:      \"memchr\",\n\t\tVersion:   \"2.3.3\",\n\t\tPURL:      \"pkg:cargo/memchr@2.3.3\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"memchr\",\n\t\t\tVersion:      \"2.3.3\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\tnatord := pkg.Package{\n\t\tName:      \"natord\",\n\t\tVersion:   \"1.0.9\",\n\t\tPURL:      \"pkg:cargo/natord@1.0.9\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"natord\",\n\t\t\tVersion:      \"1.0.9\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\tnom := pkg.Package{\n\t\tName:      \"nom\",\n\t\tVersion:   \"4.2.3\",\n\t\tPURL:      \"pkg:cargo/nom@4.2.3\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"nom\",\n\t\t\tVersion:  \"4.2.3\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"memchr\",\n\t\t\t\t\"version_check\",\n\t\t\t},\n\t\t},\n\t}\n\tschannel := pkg.Package{\n\t\tName:      \"schannel\",\n\t\tVersion:   \"0.1.26\",\n\t\tPURL:      \"pkg:cargo/schannel@0.1.26\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"schannel\",\n\t\t\tVersion:  \"0.1.26\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"windows-sys 0.59.0\",\n\t\t\t},\n\t\t},\n\t}\n\n\tunicodeBidi := pkg.Package{\n\t\tName:      \"unicode-bidi\",\n\t\tVersion:   \"0.3.4\",\n\t\tPURL:      \"pkg:cargo/unicode-bidi@0.3.4\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"unicode-bidi\",\n\t\t\tVersion:  \"0.3.4\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"matches\",\n\t\t\t\t\"bogus\", // a bad dependency to test error handling\n\t\t\t},\n\t\t},\n\t}\n\n\tversionCheck := pkg.Package{\n\t\tName:      \"version_check\",\n\t\tVersion:   \"0.1.5\",\n\t\tPURL:      \"pkg:cargo/version_check@0.1.5\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"version_check\",\n\t\t\tVersion:      \"0.1.5\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\twinapi := pkg.Package{\n\t\tName:      \"winapi\",\n\t\tVersion:   \"0.3.9\",\n\t\tPURL:      \"pkg:cargo/winapi@0.3.9\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"winapi\",\n\t\t\tVersion:  \"0.3.9\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"winapi-i686-pc-windows-gnu\",\n\t\t\t\t\"winapi-x86_64-pc-windows-gnu\",\n\t\t\t},\n\t\t},\n\t}\n\n\twinAPIi686PCWindowsGNU := pkg.Package{\n\t\tName:      \"winapi-i686-pc-windows-gnu\",\n\t\tVersion:   \"0.4.0\",\n\t\tPURL:      \"pkg:cargo/winapi-i686-pc-windows-gnu@0.4.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"winapi-i686-pc-windows-gnu\",\n\t\t\tVersion:      \"0.4.0\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\twinAPIx8664PCWindowsGNU := pkg.Package{\n\t\tName:      \"winapi-x86_64-pc-windows-gnu\",\n\t\tVersion:   \"0.4.0\",\n\t\tPURL:      \"pkg:cargo/winapi-x86_64-pc-windows-gnu@0.4.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"winapi-x86_64-pc-windows-gnu\",\n\t\t\tVersion:      \"0.4.0\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\twindowsSys52 := pkg.Package{\n\t\tName:      \"windows-sys\",\n\t\tVersion:   \"0.52.0\",\n\t\tPURL:      \"pkg:cargo/windows-sys@0.52.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"windows-sys\",\n\t\t\tVersion:      \"0.52.0\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\twindowsSys59 := pkg.Package{\n\t\tName:      \"windows-sys\",\n\t\tVersion:   \"0.59.0\",\n\t\tPURL:      \"pkg:cargo/windows-sys@0.59.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"windows-sys\",\n\t\t\tVersion:      \"0.59.0\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\texpectedPkgs := []pkg.Package{\n\t\tansiTerm,\n\t\terrno,\n\t\tmatches,\n\t\tmemchr,\n\t\tnatord,\n\t\tnom,\n\t\tschannel,\n\t\tunicodeBidi,\n\t\tversionCheck,\n\t\twinapi,\n\t\twinAPIi686PCWindowsGNU,\n\t\twinAPIx8664PCWindowsGNU,\n\t\twindowsSys52,\n\t\twindowsSys59,\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tTo:   ansiTerm,\n\t\t\tFrom: winapi,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   errno,\n\t\t\tFrom: windowsSys52,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   nom,\n\t\t\tFrom: memchr,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   nom,\n\t\t\tFrom: versionCheck,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   schannel,\n\t\t\tFrom: windowsSys59,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   unicodeBidi,\n\t\t\tFrom: matches,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   winapi,\n\t\t\tFrom: winAPIi686PCWindowsGNU,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tTo:   winapi,\n\t\t\tFrom: winAPIx8664PCWindowsGNU,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseCargoLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestCargoLockWithGitDependencies(t *testing.T) {\n\tfixture := \"testdata/Cargo.lock-with-git-deps\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\tahoCorasick := pkg.Package{\n\t\tName:      \"aho-corasick\",\n\t\tVersion:   \"1.1.3\",\n\t\tPURL:      \"pkg:cargo/aho-corasick@1.1.3\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"aho-corasick\",\n\t\t\tVersion:  \"1.1.3\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"memchr\",\n\t\t\t},\n\t\t},\n\t}\n\n\thelloWorld := pkg.Package{\n\t\tName:      \"hello_world\",\n\t\tVersion:   \"0.1.0\",\n\t\tPURL:      \"pkg:cargo/hello_world@0.1.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:    \"hello_world\",\n\t\t\tVersion: \"0.1.0\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"nom-regex\",\n\t\t\t\t\"regex 1.11.1 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tmemchr := pkg.Package{\n\t\tName:      \"memchr\",\n\t\tVersion:   \"2.7.4\",\n\t\tPURL:      \"pkg:cargo/memchr@2.7.4\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"memchr\",\n\t\t\tVersion:      \"2.7.4\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\tminimalLexical := pkg.Package{\n\t\tName:      \"minimal-lexical\",\n\t\tVersion:   \"0.2.1\",\n\t\tPURL:      \"pkg:cargo/minimal-lexical@0.2.1\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"minimal-lexical\",\n\t\t\tVersion:      \"0.2.1\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\tnom := pkg.Package{\n\t\tName:      \"nom\",\n\t\tVersion:   \"7.1.3\",\n\t\tPURL:      \"pkg:cargo/nom@7.1.3\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"nom\",\n\t\t\tVersion:  \"7.1.3\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"memchr\",\n\t\t\t\t\"minimal-lexical\",\n\t\t\t},\n\t\t},\n\t}\n\n\tnomRegex := pkg.Package{\n\t\tName:      \"nom-regex\",\n\t\tVersion:   \"0.2.0\",\n\t\tPURL:      \"pkg:cargo/nom-regex@0.2.0\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"nom-regex\",\n\t\t\tVersion:  \"0.2.0\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"72e5c7731c4c1370b61604ed52a2475e861aac9e08dec9f23903d4ddfdc91c18\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"nom\",\n\t\t\t\t\"regex 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tregexCrates := pkg.Package{\n\t\tName:      \"regex\",\n\t\tVersion:   \"1.11.1\",\n\t\tPURL:      \"pkg:cargo/regex@1.11.1\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"regex\",\n\t\t\tVersion:  \"1.11.1\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-automata 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)\",\n\t\t\t\t\"regex-syntax 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tregexGit := pkg.Package{\n\t\tName:      \"regex\",\n\t\tVersion:   \"1.11.1\",\n\t\tPURL:      \"pkg:cargo/regex@1.11.1\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:    \"regex\",\n\t\t\tVersion: \"1.11.1\",\n\t\t\tSource:  \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-automata 0.4.9 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tregexAutomataCrates := pkg.Package{\n\t\tName:      \"regex-automata\",\n\t\tVersion:   \"0.4.9\",\n\t\tPURL:      \"pkg:cargo/regex-automata@0.4.9\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:     \"regex-automata\",\n\t\t\tVersion:  \"0.4.9\",\n\t\t\tSource:   \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum: \"809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-syntax 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tregexAutomataGit := pkg.Package{\n\t\tName:      \"regex-automata\",\n\t\tVersion:   \"0.4.9\",\n\t\tPURL:      \"pkg:cargo/regex-automata@0.4.9\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:    \"regex-automata\",\n\t\t\tVersion: \"0.4.9\",\n\t\t\tSource:  \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\tDependencies: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t}\n\n\tregexSyntaxCrates := pkg.Package{\n\t\tName:      \"regex-syntax\",\n\t\tVersion:   \"0.8.5\",\n\t\tPURL:      \"pkg:cargo/regex-syntax@0.8.5\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"regex-syntax\",\n\t\t\tVersion:      \"0.8.5\",\n\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\tChecksum:     \"2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\tregexSyntaxGit := pkg.Package{\n\t\tName:      \"regex-syntax\",\n\t\tVersion:   \"0.8.5\",\n\t\tPURL:      \"pkg:cargo/regex-syntax@0.8.5\",\n\t\tLocations: locations,\n\t\tLanguage:  pkg.Rust,\n\t\tType:      pkg.RustPkg,\n\t\tLicenses:  pkg.NewLicenseSet(),\n\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\tName:         \"regex-syntax\",\n\t\t\tVersion:      \"0.8.5\",\n\t\t\tSource:       \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\tDependencies: []string{},\n\t\t},\n\t}\n\n\texpectedPkgs := []pkg.Package{\n\t\tahoCorasick, helloWorld, memchr, minimalLexical, nom, nomRegex, regexCrates, regexGit,\n\t\tregexAutomataCrates, regexAutomataGit, regexSyntaxCrates, regexSyntaxGit,\n\t}\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   ahoCorasick,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: nomRegex,\n\t\t\tTo:   helloWorld,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexGit,\n\t\t\tTo:   helloWorld,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   nom,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: minimalLexical,\n\t\t\tTo:   nom,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: nom,\n\t\t\tTo:   nomRegex,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexCrates,\n\t\t\tTo:   nomRegex,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: ahoCorasick,\n\t\t\tTo:   regexCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   regexCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexAutomataCrates,\n\t\t\tTo:   regexCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexSyntaxCrates,\n\t\t\tTo:   regexCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexSyntaxCrates,\n\t\t\tTo:   regexAutomataCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: ahoCorasick,\n\t\t\tTo:   regexGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   regexGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexAutomataGit,\n\t\t\tTo:   regexGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexSyntaxGit,\n\t\t\tTo:   regexAutomataGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: regexSyntaxGit,\n\t\t\tTo:   regexGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: ahoCorasick,\n\t\t\tTo:   regexAutomataCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   regexAutomataCrates,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: ahoCorasick,\n\t\t\tTo:   regexAutomataGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: memchr,\n\t\t\tTo:   regexAutomataGit,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\t// what I know so far - it's not sorting, it's not\n\n\tpkgtest.TestFileParser(t, fixture, parseCargoLock, expectedPkgs, expectedRelationships)\n}\n\nfunc TestCargoLockDependencySpecification(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tp        pkg.Package\n\t\tprovides []string\n\t\trequires []string\n\t}{\n\t\t{\n\t\t\tname: \"requires git source\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:      \"hello_world\",\n\t\t\t\tVersion:   \"0.1.0\",\n\t\t\t\tPURL:      \"pkg:cargo/hello_world@0.1.0\",\n\t\t\t\tLocations: file.NewLocationSet(),\n\t\t\t\tLanguage:  pkg.Rust,\n\t\t\t\tType:      pkg.RustPkg,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:    \"hello_world\",\n\t\t\t\t\tVersion: \"0.1.0\",\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"nom-regex\",\n\t\t\t\t\t\t\"regex 1.11.1 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprovides: []string{\n\t\t\t\t\"hello_world\",\n\t\t\t\t\"hello_world 0.1.0\",\n\t\t\t},\n\t\t\trequires: []string{\n\t\t\t\t\"nom-regex\",\n\t\t\t\t\"regex 1.11.1 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"provides git source\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:      \"regex-automata\",\n\t\t\t\tVersion:   \"0.4.9\",\n\t\t\t\tPURL:      \"pkg:cargo/regex-automata@0.4.9\",\n\t\t\t\tLocations: file.NewLocationSet(),\n\t\t\t\tLanguage:  pkg.Rust,\n\t\t\t\tType:      pkg.RustPkg,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:    \"regex-automata\",\n\t\t\t\t\tVersion: \"0.4.9\",\n\t\t\t\t\tSource:  \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"aho-corasick\",\n\t\t\t\t\t\t\"memchr\",\n\t\t\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprovides: []string{\n\t\t\t\t\"regex-automata\",\n\t\t\t\t\"regex-automata 0.4.9\",\n\t\t\t\t\"regex-automata 0.4.9 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t\trequires: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regex-automata git\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:      \"regex-automata\",\n\t\t\t\tVersion:   \"0.4.9\",\n\t\t\t\tPURL:      \"pkg:cargo/regex-automata@0.4.9\",\n\t\t\t\tLocations: file.NewLocationSet(),\n\t\t\t\tLanguage:  pkg.Rust,\n\t\t\t\tType:      pkg.RustPkg,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:    \"regex-automata\",\n\t\t\t\t\tVersion: \"0.4.9\",\n\t\t\t\t\tSource:  \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\t\t\tDependencies: []string{\n\t\t\t\t\t\t\"aho-corasick\",\n\t\t\t\t\t\t\"memchr\",\n\t\t\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprovides: []string{\n\t\t\t\t\"regex-automata\",\n\t\t\t\t\"regex-automata 0.4.9\",\n\t\t\t\t\"regex-automata 0.4.9 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t\trequires: []string{\n\t\t\t\t\"aho-corasick\",\n\t\t\t\t\"memchr\",\n\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"regex-syntax git\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:      \"regex-syntax\",\n\t\t\t\tVersion:   \"0.8.5\",\n\t\t\t\tPURL:      \"pkg:cargo/regex-syntax@0.8.5\",\n\t\t\t\tLocations: file.NewLocationSet(),\n\t\t\t\tLanguage:  pkg.Rust,\n\t\t\t\tType:      pkg.RustPkg,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:         \"regex-syntax\",\n\t\t\t\t\tVersion:      \"0.8.5\",\n\t\t\t\t\tSource:       \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\",\n\t\t\t\t\tDependencies: []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprovides: []string{\n\t\t\t\t\"regex-syntax\",\n\t\t\t\t\"regex-syntax 0.8.5\",\n\t\t\t\t\"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n\t\t\t},\n\t\t\trequires: []string{},\n\t\t},\n\t\t{\n\t\t\tname: \"regex-syntax crates\",\n\t\t\tp: pkg.Package{\n\t\t\t\tName:      \"regex-syntax\",\n\t\t\t\tVersion:   \"0.8.5\",\n\t\t\t\tPURL:      \"pkg:cargo/regex-syntax@0.8.5\",\n\t\t\t\tLocations: file.NewLocationSet(),\n\t\t\t\tLanguage:  pkg.Rust,\n\t\t\t\tType:      pkg.RustPkg,\n\t\t\t\tLicenses:  pkg.NewLicenseSet(),\n\t\t\t\tMetadata: pkg.RustCargoLockEntry{\n\t\t\t\t\tName:         \"regex-syntax\",\n\t\t\t\t\tVersion:      \"0.8.5\",\n\t\t\t\t\tSource:       \"registry+https://github.com/rust-lang/crates.io-index\",\n\t\t\t\t\tChecksum:     \"2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c\",\n\t\t\t\t\tDependencies: []string{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tprovides: []string{\n\t\t\t\t\"regex-syntax\",\n\t\t\t\t\"regex-syntax 0.8.5\",\n\t\t\t\t\"regex-syntax 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)\",\n\t\t\t},\n\t\t\trequires: []string{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tspec := dependencySpecification(test.p)\n\t\t\tassert.Equal(t, test.provides, spec.Provides)\n\t\t\tassert.Equal(t, test.requires, spec.Requires)\n\t\t})\n\t}\n}\n\nfunc Test_corruptCargoLock(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/Cargo.lock\").\n\t\tWithError().\n\t\tTestParser(t, parseCargoLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/testdata/Cargo.lock-with-git-deps",
    "content": "# This file is automatically @generated by Cargo.\n# It is not intended for manual editing.\nversion = 3\n\n[[package]]\nname = \"aho-corasick\"\nversion = \"1.1.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916\"\ndependencies = [\n \"memchr\",\n]\n\n[[package]]\nname = \"hello_world\"\nversion = \"0.1.0\"\ndependencies = [\n \"nom-regex\",\n \"regex 1.11.1 (git+https://github.com/rust-lang/regex.git)\",\n]\n\n[[package]]\nname = \"memchr\"\nversion = \"2.7.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3\"\n\n[[package]]\nname = \"minimal-lexical\"\nversion = \"0.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\"\n\n[[package]]\nname = \"nom\"\nversion = \"7.1.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\"\ndependencies = [\n \"memchr\",\n \"minimal-lexical\",\n]\n\n[[package]]\nname = \"nom-regex\"\nversion = \"0.2.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"72e5c7731c4c1370b61604ed52a2475e861aac9e08dec9f23903d4ddfdc91c18\"\ndependencies = [\n \"nom\",\n \"regex 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)\",\n]\n\n[[package]]\nname = \"regex\"\nversion = \"1.11.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191\"\ndependencies = [\n \"aho-corasick\",\n \"memchr\",\n \"regex-automata 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)\",\n \"regex-syntax 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)\",\n]\n\n[[package]]\nname = \"regex\"\nversion = \"1.11.1\"\nsource = \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\"\ndependencies = [\n \"aho-corasick\",\n \"memchr\",\n \"regex-automata 0.4.9 (git+https://github.com/rust-lang/regex.git)\",\n \"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n]\n\n[[package]]\nname = \"regex-automata\"\nversion = \"0.4.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908\"\ndependencies = [\n \"aho-corasick\",\n \"memchr\",\n \"regex-syntax 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)\",\n]\n\n[[package]]\nname = \"regex-automata\"\nversion = \"0.4.9\"\nsource = \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\"\ndependencies = [\n \"aho-corasick\",\n \"memchr\",\n \"regex-syntax 0.8.5 (git+https://github.com/rust-lang/regex.git)\",\n]\n\n[[package]]\nname = \"regex-syntax\"\nversion = \"0.8.5\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c\"\n\n[[package]]\nname = \"regex-syntax\"\nversion = \"0.8.5\"\nsource = \"git+https://github.com/rust-lang/regex.git#1a069b9232c607b34c4937122361aa075ef573fa\"\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/testdata/glob-paths/partial-binary",
    "content": "\u0007"
  },
  {
    "path": "syft/pkg/cataloger/rust/testdata/image-audit/Cargo.toml",
    "content": "[package]\nname = \"hello_world\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies]\nargh = \"0.1\"\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/testdata/image-audit/Dockerfile",
    "content": "FROM rust:1.82.0 AS builder\n\nWORKDIR /app\n\nRUN cargo install cargo-auditable --version 0.6.4 --locked\nCOPY Cargo.toml Cargo.lock ./\nCOPY src ./src\nRUN cargo fetch\nRUN cargo auditable build --release\n\nFROM scratch\n\nCOPY --from=builder /app/target/release/hello_world /usr/local/bin/hello_world\n\n"
  },
  {
    "path": "syft/pkg/cataloger/rust/testdata/image-audit/src/main.rs",
    "content": "use argh::FromArgs;\n\n#[derive(FromArgs)]\n#[argh(description = \"A simple Hello World CLI application.\")]\nstruct Args {\n    #[argh(option, description = \"name to greet\")]\n    name: String,\n}\n\nfn main() {\n    let args: Args = argh::from_env();\n    println!(\"Hello, {}!\", args.name);\n}"
  },
  {
    "path": "syft/pkg/cataloger/sbom/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: sbom # MANUAL\n    name: sbom-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/sbom/cataloger.go\n      function: NewCataloger\n    selectors: # AUTO-GENERATED\n      - package\n      - sbom\n    parsers: # AUTO-GENERATED structure\n      - function: parseSBOM\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/*.syft.json'\n            - '**/*.bom.*'\n            - '**/*.bom'\n            - '**/bom'\n            - '**/*.sbom.*'\n            - '**/*.sbom'\n            - '**/sbom'\n            - '**/*.cdx.*'\n            - '**/*.cdx'\n            - '**/*.spdx.*'\n            - '**/*.spdx'\n        metadata_types: # AUTO-GENERATED\n          - pkg.ApkDBEntry\n        package_types: # AUTO-GENERATED\n          - apk\n        json_schema_types: # AUTO-GENERATED\n          - ApkDbEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/cataloger.go",
    "content": "/*\nPackage sbom provides a concrete Cataloger implementation for capturing packages embedded within SBOM files.\n*/\npackage sbom\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst catalogerName = \"sbom-cataloger\"\n\n// NewCataloger returns a new SBOM cataloger object loaded from saved SBOM JSON.\nfunc NewCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\tWithParserByGlobs(parseSBOM,\n\t\t\t\"**/*.syft.json\",\n\t\t\t\"**/*.bom.*\",\n\t\t\t\"**/*.bom\",\n\t\t\t\"**/bom\",\n\t\t\t\"**/*.sbom.*\",\n\t\t\t\"**/*.sbom\",\n\t\t\t\"**/sbom\",\n\t\t\t\"**/*.cdx.*\",\n\t\t\t\"**/*.cdx\",\n\t\t\t\"**/*.spdx.*\",\n\t\t\t\"**/*.spdx\",\n\t\t)\n}\n\nfunc parseSBOM(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\treadSeeker, err := adaptToReadSeeker(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to read SBOM file %q: %w\", reader.RealPath, err)\n\t}\n\ts, _, _, err := format.Decode(readSeeker)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif s == nil {\n\t\tlog.WithFields(\"path\", reader.RealPath).Trace(\"file is not an SBOM\")\n\t\treturn nil, nil, nil\n\t}\n\n\tvar pkgs []pkg.Package\n\trelationships := s.Relationships\n\tfor _, p := range s.Artifacts.Packages.Sorted() {\n\t\t// replace all locations on the package with the location of the SBOM file.\n\t\t// Why not keep the original list of locations? Since the \"locations\" field is meant to capture\n\t\t// where there is evidence of this file, and the catalogers have not run against any file other than,\n\t\t// the SBOM, this is the only location that is relevant for this cataloger.\n\t\tp.Locations = file.NewLocationSet(\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t)\n\t\tp.FoundBy = catalogerName\n\n\t\tpkgs = append(pkgs, p)\n\t\trelationships = append(relationships, artifact.Relationship{\n\t\t\tFrom: p,\n\t\t\tTo:   reader.Coordinates,\n\t\t\tType: artifact.DescribedByRelationship,\n\t\t})\n\t}\n\n\treturn pkgs, relationships, nil\n}\n\nfunc adaptToReadSeeker(reader io.Reader) (io.ReadSeeker, error) {\n\t// with the stereoscope API and default file.Resolver implementation here in syft, odds are very high that\n\t// the underlying reader is already a ReadSeeker, so we can just return it as-is. We still want to\n\tif rs, ok := reader.(io.ReadSeeker); ok {\n\t\treturn rs, nil\n\t}\n\n\tlog.Debug(\"SBOM cataloger reader is not a ReadSeeker, reading entire SBOM into memory\")\n\n\tvar buff bytes.Buffer\n\t_, err := io.Copy(&buff, reader) //nolint:gocritic // buffering to ReadSeeker\n\treturn bytes.NewReader(buff.Bytes()), err\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/cataloger_test.go",
    "content": "package sbom\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc mustCPEs(s ...string) (c []cpe.CPE) {\n\tfor _, i := range s {\n\t\tc = append(c, cpe.Must(i, \"\"))\n\t}\n\treturn\n}\n\nfunc Test_parseSBOM(t *testing.T) {\n\tctx := context.TODO()\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"alpine-baselayout\",\n\t\t\tVersion:   \"3.2.0-r23\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/alpine-baselayout@3.2.0-r23?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"alpine-baselayout-data\",\n\t\t\tVersion:   \"3.2.0-r23\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/alpine-baselayout-data@3.2.0-r23?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout-data:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout-data:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout_data:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout_data:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"alpine-keys\",\n\t\t\tVersion:   \"2.4-r1\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/alpine-keys@2.4-r1?arch=x86_64&upstream=alpine-keys&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:alpine-keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine-keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine_keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:alpine:alpine_keys:2.4-r1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"apk-tools\",\n\t\t\tVersion:   \"2.12.9-r3\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/apk-tools@2.12.9-r3?arch=x86_64&upstream=apk-tools&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:apk-tools:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apk-tools:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apk_tools:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apk_tools:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apk:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:apk:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"busybox\",\n\t\t\tVersion:   \"1.35.0-r17\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/busybox@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:busybox:busybox:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"ca-certificates-bundle\",\n\t\t\tVersion:   \"20220614-r0\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MPL-2.0\"),\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/ca-certificates-bundle@20220614-r0?arch=x86_64&upstream=ca-certificates&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca-certificates:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca-certificates:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca_certificates:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca_certificates:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ca:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"libc-utils\",\n\t\t\tVersion:   \"0.7.2-r3\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"BSD-2-Clause\"),\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"BSD-3-Clause\"),\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/libc-utils@0.7.2-r3?arch=x86_64&upstream=libc-dev&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:libc-utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:libc-utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:libc_utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:libc_utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:libc:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:libc:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"libcrypto1.1\",\n\t\t\tVersion:   \"1.1.1s-r0\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"OpenSSL\")), // SPDX expression is not set\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/libcrypto1.1@1.1.1s-r0?arch=x86_64&upstream=openssl&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:libcrypto1.1:libcrypto1.1:1.1.1s-r0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"libssl1.1\",\n\t\t\tVersion:   \"1.1.1s-r0\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"OpenSSL\")), // SPDX expression is not set\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/libssl1.1@1.1.1s-r0?arch=x86_64&upstream=openssl&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1s-r0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"musl\",\n\t\t\tVersion:   \"1.2.3-r1\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")), // SPDX expression is not set\n\t\t\tFoundBy:   \"sbom-cataloger\",\n\t\t\tPURL:      \"pkg:apk/alpine/musl@1.2.3-r1?arch=x86_64&upstream=musl&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:musl:musl:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"musl-utils\",\n\t\t\tVersion:   \"1.2.3-r1\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"BSD\"),\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL2+\"), // SPDX expression is not set\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/musl-utils@1.2.3-r1?arch=x86_64&upstream=musl&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:musl-utils:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:musl-utils:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:musl_utils:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:musl_utils:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:musl:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:musl:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"scanelf\",\n\t\t\tVersion:   \"1.3.4-r0\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\"),\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/scanelf@1.3.4-r0?arch=x86_64&upstream=pax-utils&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:scanelf:scanelf:1.3.4-r0:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"ssl_client\",\n\t\t\tVersion:   \"1.35.0-r17\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\"),\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/ssl_client@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:ssl-client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ssl-client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ssl_client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ssl_client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ssl:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\t\"cpe:2.3:a:ssl:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tName:      \"zlib\",\n\t\t\tVersion:   \"1.2.12-r3\",\n\t\t\tType:      \"apk\",\n\t\t\tLocations: file.NewLocationSet(file.NewLocation(\"sbom.syft.json\")),\n\t\t\tLicenses: pkg.NewLicenseSet(\n\t\t\t\tpkg.NewLicenseWithContext(ctx, \"Zlib\"),\n\t\t\t),\n\t\t\tFoundBy: \"sbom-cataloger\",\n\t\t\tPURL:    \"pkg:apk/alpine/zlib@1.2.12-r3?arch=x86_64&upstream=zlib&distro=alpine-3.16.3\",\n\t\t\tCPEs: mustCPEs(\n\t\t\t\t\"cpe:2.3:a:zlib:zlib:1.2.12-r3:*:*:*:*:*:*:*\",\n\t\t\t),\n\t\t},\n\t}\n\n\tapkgdbLocation := file.NewLocationSet(file.Location{\n\t\tLocationData: file.LocationData{\n\t\t\tCoordinates: file.Coordinates{\n\t\t\t\tRealPath:     \"/lib/apk/db/installed\",\n\t\t\t\tFileSystemID: \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\",\n\t\t\t},\n\t\t},\n\t})\n\n\tlibSSL := pkg.Package{\n\t\tName:      \"libssl1.1\",\n\t\tVersion:   \"1.1.1s-r0\",\n\t\tType:      \"apk\",\n\t\tLocations: apkgdbLocation,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"OpenSSL\")),\n\t\tFoundBy:   \"apkdb-cataloger\",\n\t\tPURL:      \"pkg:apk/alpine/libssl1.1@1.1.1s-r0?arch=x86_64&upstream=openssl&distro=alpine-3.16.3\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1s-r0:*:*:*:*:*:*:*\",\n\t\t),\n\t}\n\n\tsslClient := pkg.Package{\n\t\tName:      \"ssl_client\",\n\t\tVersion:   \"1.35.0-r17\",\n\t\tType:      \"apk\",\n\t\tLocations: apkgdbLocation,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\tFoundBy:   \"apkdb-cataloger\",\n\t\tPURL:      \"pkg:apk/alpine/ssl_client@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:a:ssl-client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:ssl-client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:ssl_client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:ssl_client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:ssl:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:ssl:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t),\n\t}\n\n\tbaseLayout := pkg.Package{\n\t\tName:      \"alpine-baselayout\",\n\t\tVersion:   \"3.2.0-r23\",\n\t\tType:      \"apk\",\n\t\tLocations: apkgdbLocation,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\tFoundBy:   \"apkdb-cataloger\",\n\t\tPURL:      \"pkg:apk/alpine/alpine-baselayout@3.2.0-r23?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.16.3\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t\t\"cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n\t\t),\n\t}\n\n\tbusybox := pkg.Package{\n\t\tName:      \"busybox\",\n\t\tVersion:   \"1.35.0-r17\",\n\t\tType:      \"apk\",\n\t\tLocations: apkgdbLocation,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"GPL-2.0-only\")),\n\t\tFoundBy:   \"apkdb-cataloger\",\n\t\tPURL:      \"pkg:apk/alpine/busybox@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:a:busybox:busybox:1.35.0-r17:*:*:*:*:*:*:*\",\n\t\t),\n\t}\n\n\tmusl := pkg.Package{\n\t\tName:      \"musl\",\n\t\tVersion:   \"1.2.3-r1\",\n\t\tType:      \"apk\",\n\t\tLocations: apkgdbLocation,\n\t\tLicenses:  pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, \"MIT\")),\n\t\tFoundBy:   \"apkdb-cataloger\",\n\t\tPURL:      \"pkg:apk/alpine/musl@1.2.3-r1?arch=x86_64&upstream=musl&distro=alpine-3.16.3\",\n\t\tCPEs: mustCPEs(\n\t\t\t\"cpe:2.3:a:musl:musl:1.2.3-r1:*:*:*:*:*:*:*\",\n\t\t),\n\t}\n\n\texpectedRelationships := []artifact.Relationship{\n\t\t{\n\t\t\tFrom: libSSL,\n\t\t\tTo:   sslClient,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: libSSL,\n\t\t\tTo: file.Coordinates{\n\t\t\t\tRealPath:     \"/lib/libssl.so.1.1\",\n\t\t\t\tFileSystemID: \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\",\n\t\t\t},\n\t\t\tType: artifact.ContainsRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: busybox,\n\t\t\tTo:   baseLayout,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: baseLayout,\n\t\t\tTo: file.Coordinates{\n\t\t\t\tRealPath:     \"/etc/profile.d/color_prompt.sh.disabled\",\n\t\t\t\tFileSystemID: \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\",\n\t\t\t},\n\t\t\tType: artifact.ContainsRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: baseLayout,\n\t\t\tTo: file.Coordinates{\n\t\t\t\tRealPath:     \"/etc/modprobe.d/kms.conf\",\n\t\t\t\tFileSystemID: \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\",\n\t\t\t},\n\t\t\tType: artifact.ContainsRelationship,\n\t\t},\n\t\t{\n\t\t\tFrom: musl,\n\t\t\tTo:   libSSL,\n\t\t\tType: artifact.DependencyOfRelationship,\n\t\t},\n\t}\n\n\tfor _, p := range expectedPkgs {\n\t\texpectedRelationships = append(expectedRelationships, artifact.Relationship{\n\t\t\tFrom: p,\n\t\t\tTo: file.Coordinates{\n\t\t\t\tRealPath: \"sbom.syft.json\",\n\t\t\t},\n\t\t\tType: artifact.DescribedByRelationship,\n\t\t})\n\t}\n\n\ttests := []struct {\n\t\tname              string\n\t\tfixture           string\n\t\twantPkgs          []pkg.Package\n\t\twantRelationships []artifact.Relationship\n\t\twantErr           require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:              \"parse syft JSON\",\n\t\t\tfixture:           \"testdata/alpine/syft-json\",\n\t\t\twantPkgs:          expectedPkgs,\n\t\t\twantRelationships: expectedRelationships,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, tt.fixture).\n\t\t\t\tIgnorePackageFields(\"Metadata\").\n\t\t\t\tExpects(tt.wantPkgs, tt.wantRelationships).\n\t\t\t\tTestCataloger(t, NewCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_Cataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain sbom files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"bom\",\n\t\t\t\t\"sbom\",\n\t\t\t\t\"app.syft.json\",\n\t\t\t\t\"app.bom\",\n\t\t\t\t\"app.sbom\",\n\t\t\t\t\"app.cdx\",\n\t\t\t\t\"app.spdx\",\n\t\t\t\t\"app.bom.json\",\n\t\t\t\t\"app.sbom.json\",\n\t\t\t\t\"app.cdx.json\",\n\t\t\t\t\"app.spdx.json\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewCataloger())\n\t\t})\n\t}\n}\n\nfunc Test_corruptSBOM(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/app.spdx.json\").\n\t\tWithError().\n\t\tTestParser(t, parseSBOM)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/alpine/syft-json/sbom.syft.json",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"61eac5ce8105d394\",\n   \"name\": \"alpine-baselayout\",\n   \"version\": \"3.2.0-r23\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r23:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-baselayout@3.2.0-r23?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"alpine-baselayout\",\n    \"originPackage\": \"alpine-baselayout\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"3.2.0-r23\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n    \"description\": \"Alpine base dir structure and init scripts\",\n    \"size\": 11136,\n    \"installedSize\": 348160,\n    \"pullDependencies\": [\n     \"alpine-baselayout-data=3.2.0-r23\",\n     \"/bin/sh\",\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:mkmntdirs=3.2.0-r23\"\n    ],\n    \"pullChecksum\": \"Q19UI7UxyiUywG6aew9c3lCBPshsE=\",\n    \"gitCommitOfApkPort\": \"348653a9ba0701e8e968b3344e72313a9ef334e4\",\n    \"files\": [\n     {\n      \"path\": \"/dev\"\n     },\n     {\n      \"path\": \"/dev/pts\"\n     },\n     {\n      \"path\": \"/dev/shm\"\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/motd\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1XmduVVNURHQ27TvYp1Lr5TMtFcA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/conf.d\"\n     },\n     {\n      \"path\": \"/etc/crontabs\"\n     },\n     {\n      \"path\": \"/etc/crontabs/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"600\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1vfk1apUWI4yLJGhhNRd0kJixfvY=\"\n      }\n     },\n     {\n      \"path\": \"/etc/init.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d/aliases.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/blacklist.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q14TdgFHkTdt3uQC+NBtrntOnm9n4=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/i386.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1pnay/njn6ol9cCssL7KiZZ8etlc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modprobe.d/kms.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ynbLn3GYDpvajba/ldp1niayeog=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules-load.d\"\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/opt\"\n     },\n     {\n      \"path\": \"/etc/periodic\"\n     },\n     {\n      \"path\": \"/etc/periodic/15min\"\n     },\n     {\n      \"path\": \"/etc/periodic/daily\"\n     },\n     {\n      \"path\": \"/etc/periodic/hourly\"\n     },\n     {\n      \"path\": \"/etc/periodic/monthly\"\n     },\n     {\n      \"path\": \"/etc/periodic/weekly\"\n     },\n     {\n      \"path\": \"/etc/profile.d\"\n     },\n     {\n      \"path\": \"/etc/profile.d/README\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q135OWsCzzvnB2fmFx62kbqm1Ax1k=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile.d/color_prompt.sh.disabled\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11XM9mde1Z29tWMGaOkeovD/m4uU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile.d/locale.sh\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1S8j+WW71mWxfVy8ythqU7HUVoBw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.d\"\n     },\n     {\n      \"path\": \"/home\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/firmware\"\n     },\n     {\n      \"path\": \"/lib/mdev\"\n     },\n     {\n      \"path\": \"/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d\"\n     },\n     {\n      \"path\": \"/lib/sysctl.d/00-alpine.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1HpElzW1xEgmKfERtTy7oommnq6c=\"\n      }\n     },\n     {\n      \"path\": \"/media\"\n     },\n     {\n      \"path\": \"/media/cdrom\"\n     },\n     {\n      \"path\": \"/media/floppy\"\n     },\n     {\n      \"path\": \"/media/usb\"\n     },\n     {\n      \"path\": \"/mnt\"\n     },\n     {\n      \"path\": \"/opt\"\n     },\n     {\n      \"path\": \"/proc\"\n     },\n     {\n      \"path\": \"/root\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"700\"\n     },\n     {\n      \"path\": \"/run\"\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/mkmntdirs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1+f8Hjd+dkHS03O6ZZaIw7mb8nLM=\"\n      }\n     },\n     {\n      \"path\": \"/srv\"\n     },\n     {\n      \"path\": \"/sys\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/modules-load.d\"\n     },\n     {\n      \"path\": \"/usr/local\"\n     },\n     {\n      \"path\": \"/usr/local/bin\"\n     },\n     {\n      \"path\": \"/usr/local/lib\"\n     },\n     {\n      \"path\": \"/usr/local/share\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/man\"\n     },\n     {\n      \"path\": \"/usr/share/misc\"\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/run\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q=\"\n      }\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/empty\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"555\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/misc\"\n     },\n     {\n      \"path\": \"/var/local\"\n     },\n     {\n      \"path\": \"/var/lock\"\n     },\n     {\n      \"path\": \"/var/lock/subsys\"\n     },\n     {\n      \"path\": \"/var/log\"\n     },\n     {\n      \"path\": \"/var/mail\"\n     },\n     {\n      \"path\": \"/var/opt\"\n     },\n     {\n      \"path\": \"/var/spool\"\n     },\n     {\n      \"path\": \"/var/spool/mail\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1dzbdazYZA2nTzSIG3YyNw7d4Juc=\"\n      }\n     },\n     {\n      \"path\": \"/var/spool/cron\"\n     },\n     {\n      \"path\": \"/var/spool/cron/crontabs\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA=\"\n      }\n     },\n     {\n      \"path\": \"/var/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e8c6fcc3a282ed4f\",\n   \"name\": \"alpine-baselayout-data\",\n   \"version\": \"3.2.0-r23\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-baselayout-data:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout-data:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout_data:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout_data:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-baselayout:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_baselayout:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-baselayout-data:3.2.0-r23:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_baselayout_data:3.2.0-r23:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-baselayout-data@3.2.0-r23?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"alpine-baselayout-data\",\n    \"originPackage\": \"alpine-baselayout\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"3.2.0-r23\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout\",\n    \"description\": \"Alpine base dir structure and init scripts\",\n    \"size\": 11655,\n    \"installedSize\": 77824,\n    \"pullDependencies\": [],\n    \"provides\": [],\n    \"pullChecksum\": \"Q1d4HQ/Gyfw7NRD1qRvOgS6IzT2sI=\",\n    \"gitCommitOfApkPort\": \"348653a9ba0701e8e968b3344e72313a9ef334e4\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/fstab\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11Q7hNe8QpDS531guqCdrXBzoA/o=\"\n      }\n     },\n     {\n      \"path\": \"/etc/group\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13K+olJg5ayzHSVNUkggZJXuB+9Y=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hostname\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q16nVwYVXP/tChvUPdukVD2ifXOmc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/hosts\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1BD6zJKZTRWyqGnPi4tSfd3krsMU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/inittab\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TsthbhW7QzWRe1E/NKwTOuD4pHc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/modules\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1toogjUipHGcMgECgPJX64SwUT1M=\"\n      }\n     },\n     {\n      \"path\": \"/etc/mtab\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1kiljhXXH1LlQroHsEJIkPZg2eiw=\"\n      }\n     },\n     {\n      \"path\": \"/etc/nsswitch.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q19DBsMnv0R2fajaTjoTv0C91NOqo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/passwd\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TchuuLUfur0izvfZQZxgN/LJhB8=\"\n      }\n     },\n     {\n      \"path\": \"/etc/profile\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1F3DgXUP+jNZDknmQPPb5t9FSfDg=\"\n      }\n     },\n     {\n      \"path\": \"/etc/protocols\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1omKlp3vgGq2ZqYzyD/KHNdo8rDc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/services\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q19WLCv5ItKg4MH7RWfNRh1I7byQc=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shadow\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"42\",\n      \"permissions\": \"640\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ltrPIAW2zHeDiajsex2Bdmq3uqA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/shells\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/sysctl.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q14upz3tfnNxZkIEsUhWn7Xoiw96g=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"82d183eb300978cc\",\n   \"name\": \"alpine-keys\",\n   \"version\": \"2.4-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:alpine-keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine-keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine_keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine-keys:2.4-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:alpine:alpine_keys:2.4-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/alpine-keys@2.4-r1?arch=x86_64&upstream=alpine-keys&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"alpine-keys\",\n    \"originPackage\": \"alpine-keys\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.4-r1\",\n    \"license\": \"MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Public keys for Alpine Linux packages\",\n    \"size\": 13359,\n    \"installedSize\": 159744,\n    \"pullDependencies\": [],\n    \"provides\": [],\n    \"pullChecksum\": \"Q1FBfIjtsEmvuqoNXpShXDcm/mjzE=\",\n    \"gitCommitOfApkPort\": \"aab68f8c9ab434a46710de8e12fb3206e2930a59\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OvCFSO94z97c80mIDCxqGkh2Og4=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1v7YWZYzAWoclaLDI45jEguI7YN0=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1lZlTESNrelWTNkL/oQzmAU8a99A=\"\n      }\n     },\n     {\n      \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WNW6Sy87HpJ3IdemQy8pju33Kms=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/apk\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1OvCFSO94z97c80mIDCxqGkh2Og4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1v7YWZYzAWoclaLDI45jEguI7YN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1BTqS+H/UUyhQuzHwiBl47+BTKuU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Oaxdcsa6AYoPdLi0U4lO3J2we18=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1yPq+su65ksNox3uXB+DR7P18+QU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1MpZDNX0LeLHvSOwVUyXiXx11NN0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1glCQ/eJbvA5xqcswdjFrWv5Fnk0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1XUdDEoNTtjlvrS+iunk6ziFgIpU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1lZlTESNrelWTNkL/oQzmAU8a99A=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WNW6Sy87HpJ3IdemQy8pju33Kms=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1I9Dy6hryacL2YWXg+KlE6WvwEd4=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NSnsgmcMbU4g7j5JaNs0tVHpHVA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1VaMBBk4Rxv6boPLKF+I085Q8y2E=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1V/a5P9pKRJb6tihE3e8O6xaPgLU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13wLJrcKQajql5a1p9Q45U+ZXENA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q17j9nWJkQ+wfIuVQzIFrmFZ7fSOc=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1snr+Q1UbfHyCr/cmmtVvMIS7SGs=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1bC+AdQ0qWBTmefXiI0PvmYOJoVQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1xbIVu7ScwqGHxXGwI22aSe5OdUY=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1hCZdFx+LvzbLtPs753je78gEEBQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1t21dhCLbTJmAHXSCeOMq/2vfSgo=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1PS9zNIPJanC8qcsc5qarEWqhV5Q=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1NVPbZavaXpsItFwQYDWbpor7yYE=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1U6tfuKRy5J8C6iaKPMZaT/e8tbA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1sjbV2r2w0Ih2vwdzC4Jq6UI7cMQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1l09xa7RnbOIC1dI9FqbaCfS/GXY=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Y49eVxhpvftbQ3yAdvlLfcrPLTU=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1HjdvcVkpBZzr1aSe3p7oQfAtm/E=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64\"\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Ii51i7Nrc4uft14HhqugaUqdH64=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1AUFY+fwSBTcrYetjT7NHvafrSQc=\"\n      }\n     },\n     {\n      \"path\": \"/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1qKA23VzMUDle+Dqnrr5Kz+Xvty4=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"42d502b764a37310\",\n   \"name\": \"apk-tools\",\n   \"version\": \"2.12.9-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:apk-tools:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk-tools:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk_tools:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk-tools:2.12.9-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:apk:apk_tools:2.12.9-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/apk-tools@2.12.9-r3?arch=x86_64&upstream=apk-tools&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"apk-tools\",\n    \"originPackage\": \"apk-tools\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"2.12.9-r3\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://gitlab.alpinelinux.org/alpine/apk-tools\",\n    \"description\": \"Alpine Package Keeper - package manager for alpine\",\n    \"size\": 120745,\n    \"installedSize\": 307200,\n    \"pullDependencies\": [\n     \"musl>=1.2\",\n     \"ca-certificates-bundle\",\n     \"so:libc.musl-x86_64.so.1\",\n     \"so:libcrypto.so.1.1\",\n     \"so:libssl.so.1.1\",\n     \"so:libz.so.1\"\n    ],\n    \"provides\": [\n     \"so:libapk.so.3.12.0=3.12.0\",\n     \"cmd:apk=2.12.9-r3\"\n    ],\n    \"pullChecksum\": \"Q1VFFFWMKjB9aRkehIATc5kwgAhlU=\",\n    \"gitCommitOfApkPort\": \"34d90ac8388e88126893f5d27ea35d304e65e5ab\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/apk\"\n     },\n     {\n      \"path\": \"/etc/apk/keys\"\n     },\n     {\n      \"path\": \"/etc/apk/protected_paths.d\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libapk.so.3.12.0\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1kVeagJvcGMIKp8ijGOxaZD08ONs=\"\n      }\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/apk\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1P1oUBG/VMMhnndf2fBXsZXBjHVE=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/apk\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4b48ef6f6b983526\",\n   \"name\": \"busybox\",\n   \"version\": \"1.35.0-r17\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:busybox:busybox:1.35.0-r17:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/busybox@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"busybox\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Sören Tempel <soeren+alpine@soeren-tempel.net>\",\n    \"version\": \"1.35.0-r17\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"Size optimized toolbox of many common UNIX utilities\",\n    \"size\": 507831,\n    \"installedSize\": 962560,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"/bin/sh\",\n     \"cmd:busybox=1.35.0-r17\",\n     \"cmd:sh=1.35.0-r17\"\n    ],\n    \"pullChecksum\": \"Q1iZ+C2JJdBlm2KKtAOkSkM7zZegY=\",\n    \"gitCommitOfApkPort\": \"2bf6ec48e526113f87216683cd341a78af5f0b3f\",\n    \"files\": [\n     {\n      \"path\": \"/bin\"\n     },\n     {\n      \"path\": \"/bin/busybox\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1WUwBY0eOGgzgVxTZxJBZPyQUicI=\"\n      }\n     },\n     {\n      \"path\": \"/bin/sh\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1pcfTfDNEbNKQc2s1tia7da05M8Q=\"\n      }\n     },\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/securetty\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1mB95Hq2NUTZ599RDiSsj9w5FrOU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/udhcpd.conf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1EgLFjj67ou3eMqp4m3r2ZjnQ7QU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/logrotate.d\"\n     },\n     {\n      \"path\": \"/etc/logrotate.d/acpid\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1TylyCINVmnS+A/Tead4vZhE7Bks=\"\n      }\n     },\n     {\n      \"path\": \"/etc/network\"\n     },\n     {\n      \"path\": \"/etc/network/if-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-post-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-down.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-pre-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d\"\n     },\n     {\n      \"path\": \"/etc/network/if-up.d/dad\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"775\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ORf+lPRKuYgdkBBcKoevR1t60Q4=\"\n      }\n     },\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"1777\"\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/sbin\"\n     },\n     {\n      \"path\": \"/usr/share\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc\"\n     },\n     {\n      \"path\": \"/usr/share/udhcpc/default.script\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1t9vir/ZrX3nbSIYT9BDLWZenkVQ=\"\n      }\n     },\n     {\n      \"path\": \"/var\"\n     },\n     {\n      \"path\": \"/var/cache\"\n     },\n     {\n      \"path\": \"/var/cache/misc\"\n     },\n     {\n      \"path\": \"/var/lib\"\n     },\n     {\n      \"path\": \"/var/lib/udhcpd\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"30622a1848b22bca\",\n   \"name\": \"ca-certificates-bundle\",\n   \"version\": \"20220614-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"MPL-2.0\",\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca-certificates-bundle:20220614-r0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca_certificates_bundle:20220614-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ca-certificates-bundle@20220614-r0?arch=x86_64&upstream=ca-certificates&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"ca-certificates-bundle\",\n    \"originPackage\": \"ca-certificates\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"20220614-r0\",\n    \"license\": \"MPL-2.0 AND MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/\",\n    \"description\": \"Pre generated bundle of Mozilla certificates\",\n    \"size\": 125920,\n    \"installedSize\": 233472,\n    \"pullDependencies\": [],\n    \"provides\": [\n     \"ca-certificates-cacert=20220614-r0\"\n    ],\n    \"pullChecksum\": \"Q1huqjigIP7ZNHBueDUmNnT6PpToI=\",\n    \"gitCommitOfApkPort\": \"bb51fa7743320ac61f76e181cca84daa9977573e\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/cert.pem\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Nj6gTBdkZpTFW/obJGdpfvK0StA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/certs/ca-certificates.crt\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1D8ljYj7pXsRq4d/eHGNYB0GY1+I=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"2abd3b45f6fa4702\",\n   \"name\": \"libc-utils\",\n   \"version\": \"0.7.2-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD-2-Clause\",\n    \"BSD-3-Clause\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libc-utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc-utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc_utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc-utils:0.7.2-r3:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libc:libc_utils:0.7.2-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libc-utils@0.7.2-r3?arch=x86_64&upstream=libc-dev&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libc-utils\",\n    \"originPackage\": \"libc-dev\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"0.7.2-r3\",\n    \"license\": \"BSD-2-Clause AND BSD-3-Clause\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://alpinelinux.org\",\n    \"description\": \"Meta package to pull in correct libc\",\n    \"size\": 1480,\n    \"installedSize\": 4096,\n    \"pullDependencies\": [\n     \"musl-utils\"\n    ],\n    \"provides\": [],\n    \"pullChecksum\": \"Q1O4GFJRvHz95tPjO84qpEvkNVwDw=\",\n    \"gitCommitOfApkPort\": \"60424133be2e79bbfeff3d58147a22886f817ce2\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"8184c2647c8f0bf1\",\n   \"name\": \"libcrypto1.1\",\n   \"version\": \"1.1.1s-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenSSL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcrypto1.1:libcrypto1.1:1.1.1s-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libcrypto1.1@1.1.1s-r0?arch=x86_64&upstream=openssl&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libcrypto1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1s-r0\",\n    \"license\": \"OpenSSL\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"Crypto library from openssl\",\n    \"size\": 1212869,\n    \"installedSize\": 2772992,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"so:libcrypto.so.1.1=1.1\"\n    ],\n    \"pullChecksum\": \"Q1sntUdrpKbXw81vASa482yLXNEp8=\",\n    \"gitCommitOfApkPort\": \"46b66114372a5b408ec19d3a0a0faf4aa111a36f\",\n    \"files\": [\n     {\n      \"path\": \"/etc\"\n     },\n     {\n      \"path\": \"/etc/ssl\"\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/ct_log_list.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1olh8TpdAi2QnTl4FK3TjdUiSwTo=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/openssl.cnf.dist\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/certs\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc\"\n     },\n     {\n      \"path\": \"/etc/ssl/misc/CA.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1IACevKhK93GYBHp96Ie26jgZ17s=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q13NVgfr7dQUuGYxur0tNalH6EIjU=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/misc/tsget.pl\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1B4a6x5Xv8BnIXP9fafuqopvrtD0=\"\n      }\n     },\n     {\n      \"path\": \"/etc/ssl/private\"\n     },\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1lYfJOxQT2Pc/ktEQt5eG4f3FLGQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libcrypto.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1T2si+c7ts7sgDxQYve4B3i1Dgo0=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1\"\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/afalg.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q11UvSn9HY0EtbzWGYm8LNatQrK/Y=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/capi.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Z+cQuXE87JZm1iQYBohJtw6fjbs=\"\n      }\n     },\n     {\n      \"path\": \"/usr/lib/engines-1.1/padlock.so\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1ojt69UgLTXJSYj4gNJH/AMTeUQ8=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1455a8342bbb31ff\",\n   \"name\": \"libssl1.1\",\n   \"version\": \"1.1.1s-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenSSL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libssl1.1:libssl1.1:1.1.1s-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/libssl1.1@1.1.1s-r0?arch=x86_64&upstream=openssl&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"libssl1.1\",\n    \"originPackage\": \"openssl\",\n    \"maintainer\": \"Timo Teras <timo.teras@iki.fi>\",\n    \"version\": \"1.1.1s-r0\",\n    \"license\": \"OpenSSL\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://www.openssl.org/\",\n    \"description\": \"SSL shared libraries\",\n    \"size\": 213470,\n    \"installedSize\": 540672,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\",\n     \"so:libcrypto.so.1.1\"\n    ],\n    \"provides\": [\n     \"so:libssl.so.1.1=1.1\"\n    ],\n    \"pullChecksum\": \"Q1dA1xCFDqKI3z/84yu4S77VxAU6g=\",\n    \"gitCommitOfApkPort\": \"46b66114372a5b408ec19d3a0a0faf4aa111a36f\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q18j7n4cIb/ge1J3ty4Y8OtFzxGJ0=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/lib\"\n     },\n     {\n      \"path\": \"/usr/lib/libssl.so.1.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q18j35pe3yp6HOgMih1wlGP1/mm2c=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"64efc8a629f13d02\",\n   \"name\": \"musl\",\n   \"version\": \"1.2.3-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl:musl:1.2.3-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl@1.2.3-r1?arch=x86_64&upstream=musl&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"musl\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.2.3-r1\",\n    \"license\": \"MIT\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 383459,\n    \"installedSize\": 622592,\n    \"pullDependencies\": [],\n    \"provides\": [\n     \"so:libc.musl-x86_64.so.1=1\"\n    ],\n    \"pullChecksum\": \"Q14QhfC7ADTZ++cSoCC18jO47qnhQ=\",\n    \"gitCommitOfApkPort\": \"6711e7bdc190b184ec2db78d8ab5ebf06917ae78\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/ld-musl-x86_64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1qyxQz8gx3d2xv+3X9qfj8jvK/Y0=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libc.musl-x86_64.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q17yJ3JFNypA4mxhJJr0ou6CzsJVI=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"716efe160a925698\",\n   \"name\": \"musl-utils\",\n   \"version\": \"1.2.3-r1\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\",\n    \"BSD\",\n    \"GPL2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:musl-utils:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl-utils:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl_utils:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl-utils:1.2.3-r1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:musl:musl_utils:1.2.3-r1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/musl-utils@1.2.3-r1?arch=x86_64&upstream=musl&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"musl-utils\",\n    \"originPackage\": \"musl\",\n    \"maintainer\": \"Timo Teräs <timo.teras@iki.fi>\",\n    \"version\": \"1.2.3-r1\",\n    \"license\": \"MIT BSD GPL2+\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://musl.libc.org/\",\n    \"description\": \"the musl c library (libc) implementation\",\n    \"size\": 36959,\n    \"installedSize\": 135168,\n    \"pullDependencies\": [\n     \"scanelf\",\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:getconf=1.2.3-r1\",\n     \"cmd:getent=1.2.3-r1\",\n     \"cmd:iconv=1.2.3-r1\",\n     \"cmd:ldconfig=1.2.3-r1\",\n     \"cmd:ldd=1.2.3-r1\"\n    ],\n    \"pullChecksum\": \"Q1Avw82bzBMrlEuyKE1i1UEPK0V2Q=\",\n    \"gitCommitOfApkPort\": \"6711e7bdc190b184ec2db78d8ab5ebf06917ae78\",\n    \"files\": [\n     {\n      \"path\": \"/sbin\"\n     },\n     {\n      \"path\": \"/sbin/ldconfig\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1Kja2+POZKxEkUOZqwSjC6kmaED4=\"\n      }\n     },\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/getconf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1vGW6zqxwLuUVOBx6Uzf8N/hproQ=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/getent\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1zszN2Pw+TEbY4SmfOguLKmmIazA=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/iconv\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1UrvY/MROqlTgaScif5n9GLw9Rt8=\"\n      }\n     },\n     {\n      \"path\": \"/usr/bin/ldd\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"206fdb47b3e980eb\",\n   \"name\": \"scanelf\",\n   \"version\": \"1.3.4-r0\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:scanelf:scanelf:1.3.4-r0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/scanelf@1.3.4-r0?arch=x86_64&upstream=pax-utils&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"scanelf\",\n    \"originPackage\": \"pax-utils\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.3.4-r0\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities\",\n    \"description\": \"Scan ELF binaries for stuff\",\n    \"size\": 36745,\n    \"installedSize\": 94208,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"cmd:scanelf=1.3.4-r0\"\n    ],\n    \"pullChecksum\": \"Q1Gcqe+ND8DFOlhM3R0o5KyZjR2oE=\",\n    \"gitCommitOfApkPort\": \"d7ae612a3cc5f827289d915783b4cbf8c7207947\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/scanelf\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1YPb72qHJJvTH6mJkN9DuExFQQh8=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"674d1e2fba4d633a\",\n   \"name\": \"ssl_client\",\n   \"version\": \"1.35.0-r17\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL-2.0-only\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ssl-client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl-client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl_client:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl-client:1.35.0-r17:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ssl:ssl_client:1.35.0-r17:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/ssl_client@1.35.0-r17?arch=x86_64&upstream=busybox&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"ssl_client\",\n    \"originPackage\": \"busybox\",\n    \"maintainer\": \"Sören Tempel <soeren+alpine@soeren-tempel.net>\",\n    \"version\": \"1.35.0-r17\",\n    \"license\": \"GPL-2.0-only\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://busybox.net/\",\n    \"description\": \"EXternal ssl_client for busybox wget\",\n    \"size\": 5004,\n    \"installedSize\": 28672,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\",\n     \"so:libcrypto.so.1.1\",\n     \"so:libssl.so.1.1\"\n    ],\n    \"provides\": [\n     \"cmd:ssl_client=1.35.0-r17\"\n    ],\n    \"pullChecksum\": \"Q1KWJXawaNPiINHfdzCg/FrEmiAaU=\",\n    \"gitCommitOfApkPort\": \"2bf6ec48e526113f87216683cd341a78af5f0b3f\",\n    \"files\": [\n     {\n      \"path\": \"/usr\"\n     },\n     {\n      \"path\": \"/usr/bin\"\n     },\n     {\n      \"path\": \"/usr/bin/ssl_client\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1C6qA8RFt5eagesbaqu4plc6Ctyc=\"\n      }\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"75f0d92f695b4303\",\n   \"name\": \"zlib\",\n   \"version\": \"1.2.12-r3\",\n   \"type\": \"apk\",\n   \"foundBy\": \"apkdb-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/lib/apk/db/installed\",\n     \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n    }\n   ],\n   \"licenses\": [\n    \"Zlib\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:zlib:zlib:1.2.12-r3:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:apk/alpine/zlib@1.2.12-r3?arch=x86_64&upstream=zlib&distro=alpine-3.16.3\",\n   \"metadataType\": \"ApkMetadata\",\n   \"metadata\": {\n    \"package\": \"zlib\",\n    \"originPackage\": \"zlib\",\n    \"maintainer\": \"Natanael Copa <ncopa@alpinelinux.org>\",\n    \"version\": \"1.2.12-r3\",\n    \"license\": \"Zlib\",\n    \"architecture\": \"x86_64\",\n    \"url\": \"https://zlib.net/\",\n    \"description\": \"A compression/decompression Library\",\n    \"size\": 53346,\n    \"installedSize\": 110592,\n    \"pullDependencies\": [\n     \"so:libc.musl-x86_64.so.1\"\n    ],\n    \"provides\": [\n     \"so:libz.so.1=1.2.12\"\n    ],\n    \"pullChecksum\": \"Q1Ekuqm/0CPywDCKEbEwhsPCw+z9E=\",\n    \"gitCommitOfApkPort\": \"57ce38bde7ce42964b664c137935cf2de803ac44\",\n    \"files\": [\n     {\n      \"path\": \"/lib\"\n     },\n     {\n      \"path\": \"/lib/libz.so.1\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"777\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1+aBjyJ7dmLatVkyqCNnAChlDZh8=\"\n      }\n     },\n     {\n      \"path\": \"/lib/libz.so.1.2.12\",\n      \"ownerUid\": \"0\",\n      \"ownerGid\": \"0\",\n      \"permissions\": \"755\",\n      \"digest\": {\n       \"algorithm\": \"'Q1'+base64(sha1)\",\n       \"value\": \"Q1x/qx/7zlM20k7fLfVee7A4WLOC8=\"\n      }\n     }\n    ]\n   }\n  }\n ],\n \"artifactRelationships\": [\n  {\n   \"parent\": \"1455a8342bbb31ff\",\n   \"child\": \"674d1e2fba4d633a\",\n   \"type\": \"dependency-of\"\n  },\n  {\n   \"parent\": \"1455a8342bbb31ff\",\n   \"child\": \"bf6955e2941356b2\",\n   \"type\": \"contains\"\n  },\n \n  {\n   \"parent\": \"4b48ef6f6b983526\",\n   \"child\": \"61eac5ce8105d394\",\n   \"type\": \"dependency-of\"\n  },\n \n  {\n   \"parent\": \"61eac5ce8105d394\",\n   \"child\": \"2a20bd42108d699a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61eac5ce8105d394\",\n   \"child\": \"3617fb189dce6482\",\n   \"type\": \"contains\"\n  },\n  \n  {\n   \"parent\": \"64efc8a629f13d02\",\n   \"child\": \"1455a8342bbb31ff\",\n   \"type\": \"dependency-of\"\n  }\n ],\n \"files\": [\n  {\n   \"id\": \"51a0badf3b704202\",\n   \"location\": {\n    \"path\": \"/bin/busybox\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"983be5c7034a6165\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"3078ae894cd9cfbd\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"388b915e3caf5f8b\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"af97d47465df73a7\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"7e6812fc46b6a77\",\n   \"location\": {\n    \"path\": \"/etc/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"6407d5cf424b18ad\",\n   \"location\": {\n    \"path\": \"/etc/crontabs/root\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"33b11b3a2ec70e8f\",\n   \"location\": {\n    \"path\": \"/etc/fstab\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"3426822570585ca6\",\n   \"location\": {\n    \"path\": \"/etc/group\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"c7479ec33c892d37\",\n   \"location\": {\n    \"path\": \"/etc/hostname\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"f68970af52c912d3\",\n   \"location\": {\n    \"path\": \"/etc/hosts\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"65ba00203fcb00b7\",\n   \"location\": {\n    \"path\": \"/etc/inittab\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"91817eca9cc4b5de\",\n   \"location\": {\n    \"path\": \"/etc/logrotate.d/acpid\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"b83f6a50a3bd4519\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/aliases.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"c82217b71778b876\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/blacklist.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"9ce07ed49f8fb925\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/i386.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"3617fb189dce6482\",\n   \"location\": {\n    \"path\": \"/etc/modprobe.d/kms.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"fc7c614fbff1fe93\",\n   \"location\": {\n    \"path\": \"/etc/modules\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"84e95c181a3977e9\",\n   \"location\": {\n    \"path\": \"/etc/motd\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"7b5d21b40bc7eee7\",\n   \"location\": {\n    \"path\": \"/etc/network/if-up.d/dad\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"37f2712bfdc05029\",\n   \"location\": {\n    \"path\": \"/etc/nsswitch.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e1ce65f920562037\",\n   \"location\": {\n    \"path\": \"/etc/passwd\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"de09f2147681af25\",\n   \"location\": {\n    \"path\": \"/etc/profile\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e6b17bb11a720679\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/README\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"2a20bd42108d699a\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/color_prompt.sh.disabled\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"7e87ca025472176a\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/locale.sh\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"ff4dbb6e8f3bb698\",\n   \"location\": {\n    \"path\": \"/etc/protocols\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"78bf055cad090d65\",\n   \"location\": {\n    \"path\": \"/etc/securetty\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"aa75789d9e818133\",\n   \"location\": {\n    \"path\": \"/etc/services\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"98fd433dcbda9dd8\",\n   \"location\": {\n    \"path\": \"/etc/shadow\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"98d3eb523b0b443b\",\n   \"location\": {\n    \"path\": \"/etc/shells\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"f2d3dfa05f2554a0\",\n   \"location\": {\n    \"path\": \"/etc/ssl/certs/ca-certificates.crt\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"461f2cb164a4d9de\",\n   \"location\": {\n    \"path\": \"/etc/ssl/ct_log_list.cnf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e90735c3db4c5cc\",\n   \"location\": {\n    \"path\": \"/etc/ssl/ct_log_list.cnf.dist\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"2ea8f53adecae6f3\",\n   \"location\": {\n    \"path\": \"/etc/ssl/misc/CA.pl\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"5b247851eb9d9920\",\n   \"location\": {\n    \"path\": \"/etc/ssl/misc/tsget.pl\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"629d9b60ae1d9e52\",\n   \"location\": {\n    \"path\": \"/etc/ssl/openssl.cnf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"34a945b6fcfc9394\",\n   \"location\": {\n    \"path\": \"/etc/ssl/openssl.cnf.dist\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"aebdc91357768244\",\n   \"location\": {\n    \"path\": \"/etc/sysctl.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"231e2b9b768a1fff\",\n   \"location\": {\n    \"path\": \"/etc/udhcpd.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"4c909bab2f47ab6\",\n   \"location\": {\n    \"path\": \"/lib/ld-musl-x86_64.so.1\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"6a92934c972808b8\",\n   \"location\": {\n    \"path\": \"/lib/libapk.so.3.12.0\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"5217fc877d4a56a3\",\n   \"location\": {\n    \"path\": \"/lib/libcrypto.so.1.1\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"bf6955e2941356b2\",\n   \"location\": {\n    \"path\": \"/lib/libssl.so.1.1\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"52dc0abd8e7f5999\",\n   \"location\": {\n    \"path\": \"/lib/libz.so.1.2.12\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"c7d306fe1c6785c7\",\n   \"location\": {\n    \"path\": \"/lib/sysctl.d/00-alpine.conf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"b04bc3289bb54853\",\n   \"location\": {\n    \"path\": \"/sbin/apk\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e0f2d4db60a9b798\",\n   \"location\": {\n    \"path\": \"/sbin/ldconfig\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"3b5675f91b90110\",\n   \"location\": {\n    \"path\": \"/sbin/mkmntdirs\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"88f42084360d15dc\",\n   \"location\": {\n    \"path\": \"/usr/bin/getconf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"72d84b54cc507273\",\n   \"location\": {\n    \"path\": \"/usr/bin/getent\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e4f8a4c0b073c8bc\",\n   \"location\": {\n    \"path\": \"/usr/bin/iconv\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"1b47e047a7a2d57c\",\n   \"location\": {\n    \"path\": \"/usr/bin/ldd\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"ae378054cbd7ef90\",\n   \"location\": {\n    \"path\": \"/usr/bin/scanelf\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"dfa8a561b5b9eed\",\n   \"location\": {\n    \"path\": \"/usr/bin/ssl_client\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"287e44a117aa6396\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/afalg.so\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"80d54a8d1cb02a6b\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/capi.so\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"7c76c319483f88f8\",\n   \"location\": {\n    \"path\": \"/usr/lib/engines-1.1/padlock.so\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"487fe69baafa2d7e\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"6fbe3c2a939ebbd2\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"68769d7fd3919789\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"387bdef96b1af6e4\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"a01e0e5b23c3173d\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"6a0ff9781347bfd9\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"f7de852c28002fea\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"c4944df811809487\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"3d8ddf18e3124850\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"e041389ecc1c5526\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"202110ab27dcf973\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"55708c7a7e686d62\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"f02ff58080ad2795\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"59a8217f4f6c22a1\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"5353cb0dc92ea4b\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"55e20144d113e62d\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"44900ed9ce94fa9e\",\n   \"location\": {\n    \"path\": \"/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  },\n  {\n   \"id\": \"a2c9b7dd9588eed5\",\n   \"location\": {\n    \"path\": \"/usr/share/udhcpc/default.script\",\n    \"layerID\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\"\n   }\n  }\n ],\n \"source\": {\n  \"id\": \"6b7f97b22b59a2c6bc62354f00df8dcafb8a32716bc958a788a7004e0a391232\",\n  \"type\": \"image\",\n  \"target\": {\n   \"userInput\": \"alpine@sha256:b95359c2505145f16c6aa384f9cc74eeff78eb36d308ca4fd902eeeb0a0b161b\",\n   \"imageID\": \"sha256:bfe296a525011f7eb76075d688c681ca4feaad5afe3b142b36e30f1a171dc99a\",\n   \"manifestDigest\": \"sha256:6b7f97b22b59a2c6bc62354f00df8dcafb8a32716bc958a788a7004e0a391232\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"alpine:latest\"\n   ],\n   \"imageSize\": 5539603,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:e5e13b0c77cbb769548077189c3da2f0a764ceca06af49d8d558e759f5c232bd\",\n     \"size\": 5539603\n    }\n   ],\n   \"manifest\": \"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjoxNDcxLCJkaWdlc3QiOiJzaGEyNTY6YmZlMjk2YTUyNTAxMWY3ZWI3NjA3NWQ2ODhjNjgxY2E0ZmVhYWQ1YWZlM2IxNDJiMzZlMzBmMWExNzFkYzk5YSJ9LCJsYXllcnMiOlt7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLCJzaXplIjo1ODI3NTg0LCJkaWdlc3QiOiJzaGEyNTY6ZTVlMTNiMGM3N2NiYjc2OTU0ODA3NzE4OWMzZGEyZjBhNzY0Y2VjYTA2YWY0OWQ4ZDU1OGU3NTlmNWMyMzJiZCJ9XX0=\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6MThmNDEyZTM1OWRlMDQyNjM0NGY0ZmUxMTUxNzk2ZTJkOWRjMTIxYjAxZDczN2U5NTNmMDQzYTEwNDY0ZDBiNyIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiIzY2QyY2U2MTJiOTExOWJlOTY3Mzg2MDAyMjQyMGVlZTAyMGYwYTZkNDRlOTA3MmNhMjUxOTZmNGYwYTQ2MTNkIiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6IjNjZDJjZTYxMmI5MSIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjoxOGY0MTJlMzU5ZGUwNDI2MzQ0ZjRmZTExNTE3OTZlMmQ5ZGMxMjFiMDFkNzM3ZTk1M2YwNDNhMTA0NjRkMGI3IiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMi0xMS0xMlQwNDoxOToyMy4xOTk3MTY1MzlaIiwiZG9ja2VyX3ZlcnNpb24iOiIyMC4xMC4xMiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIyLTExLTEyVDA0OjE5OjIzLjA1MTU0MjA5WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSBBREQgZmlsZTpjZWViNmU4NjMyZmFmYzY1NzExNmNiZjNhZmJkNTIyMTg1YTE2OTYzMjMwYjU3ODgxMDczZGFkMjJlYjBlMWEzIGluIC8gIn0seyJjcmVhdGVkIjoiMjAyMi0xMS0xMlQwNDoxOToyMy4xOTk3MTY1MzlaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgIyhub3ApICBDTUQgW1wiL2Jpbi9zaFwiXSIsImVtcHR5X2xheWVyIjp0cnVlfV0sIm9zIjoibGludXgiLCJyb290ZnMiOnsidHlwZSI6ImxheWVycyIsImRpZmZfaWRzIjpbInNoYTI1NjplNWUxM2IwYzc3Y2JiNzY5NTQ4MDc3MTg5YzNkYTJmMGE3NjRjZWNhMDZhZjQ5ZDhkNTU4ZTc1OWY1YzIzMmJkIl19fQ==\",\n   \"repoDigests\": [\n    \"alpine@sha256:b95359c2505145f16c6aa384f9cc74eeff78eb36d308ca4fd902eeeb0a0b161b\"\n   ],\n   \"architecture\": \"amd64\",\n   \"os\": \"linux\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"Alpine Linux v3.16\",\n  \"name\": \"Alpine Linux\",\n  \"id\": \"alpine\",\n  \"versionID\": \"3.16.3\",\n  \"homeURL\": \"https://alpinelinux.org/\",\n  \"bugReportURL\": \"https://gitlab.alpinelinux.org/alpine/aports/-/issues\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"[not provided]\",\n  \"configuration\": {\n   \"configPath\": \"\",\n   \"verbosity\": 0,\n   \"quiet\": false,\n   \"output\": [\n    \"json\"\n   ],\n   \"output-template-path\": \"\",\n   \"file\": \"\",\n   \"check-for-app-update\": true,\n   \"dev\": {\n    \"profile-cpu\": false,\n    \"profile-mem\": false\n   },\n   \"log\": {\n    \"structured\": false,\n    \"level\": \"warn\",\n    \"file-location\": \"\"\n   },\n   \"catalogers\": null,\n   \"package\": {\n    \"cataloger\": {\n     \"enabled\": true,\n     \"scope\": \"Squashed\"\n    },\n    \"search-unindexed-archives\": false,\n    \"search-indexed-archives\": true\n   },\n   \"file-metadata\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"digests\": [\n     \"sha256\"\n    ]\n   },\n   \"file-classification\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    }\n   },\n   \"file-contents\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"skip-files-above-size\": 1048576,\n    \"globs\": []\n   },\n   \"secrets\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"AllLayers\"\n    },\n    \"additional-patterns\": {},\n    \"exclude-pattern-names\": [],\n    \"reveal-values\": false,\n    \"skip-files-above-size\": 1048576\n   },\n   \"registry\": {\n    \"insecure-skip-tls-verify\": false,\n    \"insecure-use-http\": false,\n    \"auth\": []\n   },\n   \"exclude\": [],\n   \"attest\": {\n    \"key\": \"\",\n    \"cert\": \"\",\n    \"noUpload\": false,\n    \"force\": false,\n    \"recursive\": false,\n    \"replace\": false,\n    \"fulcioUrl\": \"https://fulcio.sigstore.dev\",\n    \"fulcio_identity_token\": \"\",\n    \"insecure_skip_verify\": false,\n    \"rekorUrl\": \"https://rekor.sigstore.dev\",\n    \"oidcIssuer\": \"https://oauth2.sigstore.dev/auth\",\n    \"oidcClientId\": \"sigstore\",\n    \"OIDCRedirectURL\": \"\"\n   },\n   \"platform\": \"\",\n   \"name\": \"\"\n  }\n },\n \"schema\": {\n  \"version\": \"6.0.0\",\n  \"url\": \"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-6.0.0.json\"\n }\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.bom",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.bom.json",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.cdx",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.cdx.json",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.sbom",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.sbom.json",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.spdx",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.spdx.json",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/app.syft.json",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/bom",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/sbom/testdata/glob-paths/sbom",
    "content": "bogus\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: snap # MANUAL\n    name: snap-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/snap/cataloger.go\n      function: NewCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - installed\n      - package\n      - snap\n    parsers: # AUTO-GENERATED structure\n      - function: parseSnapdSnapcraft\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/snap/snapcraft.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SnapEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - SnapEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseSystemManifest\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/snap/manifest.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SnapEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - SnapEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseKernelChangelog\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/doc/linux-modules-*/changelog.Debian.gz'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SnapEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - SnapEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n      - function: parseBaseDpkgYaml\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/usr/share/snappy/dpkg.yaml'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SnapEntry\n        package_types: # AUTO-GENERATED\n          - deb\n        json_schema_types: # AUTO-GENERATED\n          - SnapEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/cataloger.go",
    "content": "/*\nPackage snap provides a concrete Cataloger implementation for snap packages, extracting metadata\nfrom different types of snap files (base, kernel, system/gadget, snapd) rather than just scanning\nthe filesystem.\n*/\npackage snap\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst catalogerName = \"snap-cataloger\"\n\n// NewCataloger returns a new Snap cataloger object that can parse snap package metadata.\nfunc NewCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\t// Base snaps: dpkg.yaml files containing package manifests\n\t\tWithParserByGlobs(parseBaseDpkgYaml, \"**/usr/share/snappy/dpkg.yaml\").\n\t\t// Kernel snaps: changelog files for kernel version info\n\t\tWithParserByGlobs(parseKernelChangelog, \"**/doc/linux-modules-*/changelog.Debian.gz\").\n\t\t// System/Gadget snaps: manifest files with primed-stage-packages\n\t\tWithParserByGlobs(parseSystemManifest, \"**/snap/manifest.yaml\").\n\t\t// Snapd snaps: snapcraft.yaml files\n\t\tWithParserByGlobs(parseSnapdSnapcraft, \"**/snap/snapcraft.yaml\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/cataloger_test.go",
    "content": "package snap\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestCataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tfixture string\n\t}{\n\t\t{\n\t\t\tname:    \"base snap with dpkg.yaml\",\n\t\t\tfixture: \"testdata/glob-paths/base\",\n\t\t},\n\t\t{\n\t\t\tname:    \"system snap with manifest.yaml\",\n\t\t\tfixture: \"testdata/glob-paths/system\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tIgnoreUnfulfilledPathResponses(\"**/usr/share/snappy/dpkg.yaml\", \"**/doc/linux-modules-*/changelog.Debian.gz\", \"**/snap/manifest.yaml\", \"**/snap/snapcraft.yaml\").\n\t\t\t\tTestCataloger(t, NewCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/integration_test.go",
    "content": "package snap\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc TestRealDpkgYamlParsing(t *testing.T) {\n\tfixture := \"testdata/real-dpkg.yaml\"\n\n\t// Open the file\n\tf, err := os.Open(fixture)\n\trequire.NoError(t, err)\n\tdefer f.Close()\n\n\treader := file.LocationReadCloser{\n\t\tLocation:   file.NewLocation(fixture),\n\t\tReadCloser: f,\n\t}\n\n\t// Parse using our function\n\tpackages, relationships, err := parseBaseDpkgYaml(context.Background(), nil, &generic.Environment{}, reader)\n\n\trequire.NoError(t, err)\n\tassert.Nil(t, relationships) // relationships should be nil for this parser\n\n\t// We should have 10 packages from the fixture\n\tassert.Equal(t, 10, len(packages))\n\n\t// Check some specific packages\n\tfoundPackages := make(map[string]pkg.Package)\n\tfor _, p := range packages {\n\t\tfoundPackages[p.Name] = p\n\t}\n\n\t// Verify key packages exist\n\trequire.Contains(t, foundPackages, \"adduser\")\n\trequire.Contains(t, foundPackages, \"systemd\")\n\trequire.Contains(t, foundPackages, \"gcc-10-base\")\n\n\t// Check that architecture is parsed correctly from package names\n\tgccPkg := foundPackages[\"gcc-10-base\"]\n\tmetadata, ok := gccPkg.Metadata.(pkg.SnapEntry)\n\trequire.True(t, ok)\n\tassert.Equal(t, \"amd64\", metadata.Architecture)\n\tassert.Equal(t, pkg.SnapTypeBase, metadata.SnapType)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/package.go",
    "content": "package snap\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\n// newPackage creates a new Package from snap metadata\nfunc newPackage(name, version string, metadata pkg.SnapEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tPURL:      packageURL(name, version, metadata),\n\t\tType:      pkg.DebPkg, // Use Debian package type for compatibility\n\t\tMetadata:  metadata,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\n// packageURL returns the PURL for a snap package\nfunc packageURL(name, version string, metadata pkg.SnapEntry) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\tif metadata.Architecture != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"arch\",\n\t\t\tValue: metadata.Architecture,\n\t\t})\n\t}\n\n\tif metadata.Base != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"base\",\n\t\t\tValue: metadata.Base,\n\t\t})\n\t}\n\n\tif metadata.SnapType != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"type\",\n\t\t\tValue: metadata.SnapType,\n\t\t})\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeGeneric,\n\t\t\"snap\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\n// newDebianPackageFromSnap creates a Debian-style package entry from snap manifest data\nfunc newDebianPackageFromSnap(name, version string, snapMetadata pkg.SnapEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tType:      pkg.DebPkg,\n\t\tPURL:      debianPackageURL(name, version, snapMetadata.Architecture),\n\t\tMetadata:  snapMetadata,\n\t}\n\n\tp.SetID()\n\treturn p\n}\n\n// debianPackageURL creates a PURL for Debian packages found in snaps\nfunc debianPackageURL(name, version, architecture string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\tif architecture != \"\" {\n\t\tqualifiers = append(qualifiers, packageurl.Qualifier{\n\t\t\tKey:   \"arch\",\n\t\t\tValue: architecture,\n\t\t})\n\t}\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeDebian,\n\t\t\"ubuntu\", // Assume Ubuntu since most snaps are built on Ubuntu\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_base_dpkg.go",
    "content": "package snap\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// dpkgYaml represents the structure of dpkg.yaml files found in base snaps\ntype dpkgYaml struct {\n\tPackageRepositories []packageRepository `yaml:\"package-repositories\"`\n\tPackages            []string            `yaml:\"packages\"`\n}\n\ntype packageRepository struct {\n\tType string `yaml:\"type\"`\n\tPPA  string `yaml:\"ppa,omitempty\"`\n\tURL  string `yaml:\"url,omitempty\"`\n}\n\n// parseBaseDpkgYaml parses dpkg.yaml files from base snaps\nfunc parseBaseDpkgYaml(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar dpkg dpkgYaml\n\n\tdecoder := yaml.NewDecoder(reader)\n\tif err := decoder.Decode(&dpkg); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse dpkg.yaml: %w\", err)\n\t}\n\n\tvar packages []pkg.Package\n\n\tsnapMetadata := pkg.SnapEntry{\n\t\tSnapType: pkg.SnapTypeBase,\n\t}\n\n\t// Parse each package entry in \"name=version\" format\n\tfor _, pkgEntry := range dpkg.Packages {\n\t\tif !strings.Contains(pkgEntry, \"=\") {\n\t\t\tcontinue // Skip malformed entries\n\t\t}\n\n\t\tparts := strings.SplitN(pkgEntry, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tname := strings.TrimSpace(parts[0])\n\t\tversion := strings.TrimSpace(parts[1])\n\n\t\t// Skip empty names or versions\n\t\tif name == \"\" || version == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle architecture suffixes (e.g., \"libssl1.1:amd64\")\n\t\tif strings.Contains(name, \":\") {\n\t\t\tarchParts := strings.SplitN(name, \":\", 2)\n\t\t\tname = archParts[0]\n\t\t\tsnapMetadata.Architecture = archParts[1]\n\t\t}\n\n\t\tdebPkg := newDebianPackageFromSnap(\n\t\t\tname,\n\t\t\tversion,\n\t\t\tsnapMetadata,\n\t\t\treader.Location,\n\t\t)\n\n\t\tpackages = append(packages, debPkg)\n\t}\n\n\treturn packages, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_base_dpkg_test.go",
    "content": "package snap\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseBaseDpkgYaml(t *testing.T) {\n\tfixture := \"testdata/dpkg.yaml\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"adduser\",\n\t\t\tVersion:   \"3.118ubuntu2\",\n\t\t\tType:      pkg.DebPkg,\n\t\t\tPURL:      \"pkg:deb/ubuntu/adduser@3.118ubuntu2\",\n\t\t\tLocations: locations,\n\t\t\tMetadata: pkg.SnapEntry{\n\t\t\t\tSnapType: pkg.SnapTypeBase,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"apparmor\",\n\t\t\tVersion:   \"2.13.3-7ubuntu5.3\",\n\t\t\tType:      pkg.DebPkg,\n\t\t\tPURL:      \"pkg:deb/ubuntu/apparmor@2.13.3-7ubuntu5.3\",\n\t\t\tLocations: locations,\n\t\t\tMetadata: pkg.SnapEntry{\n\t\t\t\tSnapType: pkg.SnapTypeBase,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"gcc-10-base\",\n\t\t\tVersion:   \"10.5.0-1ubuntu1~20.04\",\n\t\t\tType:      pkg.DebPkg,\n\t\t\tPURL:      \"pkg:deb/ubuntu/gcc-10-base@10.5.0-1ubuntu1~20.04?arch=amd64\",\n\t\t\tLocations: locations,\n\t\t\tMetadata: pkg.SnapEntry{\n\t\t\t\tSnapType:     pkg.SnapTypeBase,\n\t\t\t\tArchitecture: \"amd64\", // from package name suffix\n\t\t\t},\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseBaseDpkgYaml, expected, nil)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_integration_test.go",
    "content": "package snap\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseSystemManifest(t *testing.T) {\n\tfixture := \"testdata/manifest.yaml\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\n\texpected := []pkg.Package{\n\t\t{\n\t\t\tName:      \"grub-efi-amd64-signed\",\n\t\t\tVersion:   \"1.202+2.12-1ubuntu7\",\n\t\t\tType:      pkg.DebPkg,\n\t\t\tPURL:      \"pkg:deb/ubuntu/grub-efi-amd64-signed@1.202%2B2.12-1ubuntu7?arch=amd64\", // URL encoded\n\t\t\tLocations: locations,\n\t\t\tMetadata: pkg.SnapEntry{\n\t\t\t\tSnapType:     pkg.SnapTypeApp, // Default type when gadget not detected from name\n\t\t\t\tBase:         \"core24\",\n\t\t\t\tSnapName:     \"pc\",\n\t\t\t\tSnapVersion:  \"24-0.1\",\n\t\t\t\tArchitecture: \"amd64\", // From architectures array\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"shim-signed\",\n\t\t\tVersion:   \"1.56+15.7-0ubuntu1\",\n\t\t\tType:      pkg.DebPkg,\n\t\t\tPURL:      \"pkg:deb/ubuntu/shim-signed@1.56%2B15.7-0ubuntu1?arch=amd64\", // URL encoded\n\t\t\tLocations: locations,\n\t\t\tMetadata: pkg.SnapEntry{\n\t\t\t\tSnapType:     pkg.SnapTypeApp, // Default type when gadget not detected from name\n\t\t\t\tBase:         \"core24\",\n\t\t\t\tSnapName:     \"pc\",\n\t\t\t\tSnapVersion:  \"24-0.1\",\n\t\t\t\tArchitecture: \"amd64\", // From architectures array\n\t\t\t},\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseSystemManifest, expected, nil)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_kernel_changelog.go",
    "content": "package snap\n\nimport (\n\t\"bufio\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// kernelVersionInfo holds parsed kernel version information\ntype kernelVersionInfo struct {\n\tbaseVersion    string // e.g., \"5.4.0-195\"\n\treleaseVersion string // e.g., \"215\"\n\tfullVersion    string // e.g., \"5.4.0-195.215\"\n\tmajorVersion   string // e.g., \"5.4\"\n}\n\n// parseKernelChangelog parses changelog files from kernel snaps to extract kernel version.\n// The changelog is gzip-compressed and may be very large, so we stream it line-by-line\n// rather than reading it entirely into memory.\nfunc parseKernelChangelog(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tgzReader, err := gzip.NewReader(reader)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create gzip reader for changelog: %w\", err)\n\t}\n\tdefer gzReader.Close()\n\n\tscanner := bufio.NewScanner(gzReader)\n\n\t// read the first line to extract kernel version\n\t// Format: \"linux (5.4.0-195.215) focal; urgency=medium\"\n\tif !scanner.Scan() {\n\t\tif err := scanner.Err(); err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to read changelog content: %w\", err)\n\t\t}\n\t\treturn nil, nil, fmt.Errorf(\"changelog file is empty\")\n\t}\n\n\tversionInfo, err := extractKernelVersion(scanner.Text())\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tsnapMetadata := pkg.SnapEntry{\n\t\tSnapType: pkg.SnapTypeKernel,\n\t}\n\n\tpackages := createMainKernelPackage(versionInfo, snapMetadata, reader.Location)\n\n\t// stream remaining lines looking for the base kernel entry\n\tbaseKernelEntry := fmt.Sprintf(\"%s/linux:\", strings.ReplaceAll(versionInfo.releaseVersion, \";\", \"/\"))\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif strings.Contains(line, baseKernelEntry) {\n\t\t\tif basePackage := parseBaseKernelLine(line, versionInfo.majorVersion, snapMetadata, reader.Location); basePackage != nil {\n\t\t\t\tpackages = append(packages, *basePackage)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn packages, nil, nil\n}\n\n// extractKernelVersion parses version information from the first changelog line\nfunc extractKernelVersion(firstLine string) (*kernelVersionInfo, error) {\n\t// Format: \"linux (5.4.0-195.215) focal; urgency=medium\"\n\tkernelVersionRegex := regexp.MustCompile(`linux \\(([0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+)\\.([0-9]+)\\)`)\n\tmatches := kernelVersionRegex.FindStringSubmatch(firstLine)\n\n\tif len(matches) < 3 {\n\t\treturn nil, fmt.Errorf(\"could not parse kernel version from changelog: %s\", firstLine)\n\t}\n\n\tinfo := &kernelVersionInfo{\n\t\tbaseVersion:    matches[1], // e.g., \"5.4.0-195\"\n\t\treleaseVersion: matches[2], // eg., \"215\"\n\t}\n\t// eg \"5.4.0-195.215\"\n\tinfo.fullVersion = fmt.Sprintf(\"%s.%s\", info.baseVersion, info.releaseVersion)\n\n\t// Extract major version; package naming\n\tmajorVersionRegex := regexp.MustCompile(`([0-9]+\\.[0-9]+)\\.[0-9]+-[0-9]+`)\n\tmajorMatches := majorVersionRegex.FindStringSubmatch(info.baseVersion)\n\n\tif len(majorMatches) >= 2 {\n\t\tinfo.majorVersion = majorMatches[1]\n\t} else {\n\t\tinfo.majorVersion = info.baseVersion\n\t}\n\n\treturn info, nil\n}\n\n// createMainKernelPackage creates the main kernel package\nfunc createMainKernelPackage(versionInfo *kernelVersionInfo, snapMetadata pkg.SnapEntry, location file.Location) []pkg.Package {\n\tkernelPackageName := fmt.Sprintf(\"linux-image-%s-generic\", versionInfo.baseVersion)\n\tkernelPkg := newDebianPackageFromSnap(\n\t\tkernelPackageName,\n\t\tversionInfo.fullVersion,\n\t\tsnapMetadata,\n\t\tlocation,\n\t)\n\n\treturn []pkg.Package{kernelPkg}\n}\n\n// parseBaseKernelLine extracts base kernel version from a changelog line\nfunc parseBaseKernelLine(line string, majorVersion string, snapMetadata pkg.SnapEntry, location file.Location) *pkg.Package {\n\tbaseKernelRegex := regexp.MustCompile(fmt.Sprintf(`(%s-[0-9]+)\\.?[0-9]*`, regexp.QuoteMeta(majorVersion)))\n\tbaseMatches := baseKernelRegex.FindStringSubmatch(line)\n\n\tif len(baseMatches) < 2 {\n\t\treturn nil\n\t}\n\n\tbaseKernelVersion := baseMatches[1]\n\tbaseKernelFullRegex := regexp.MustCompile(fmt.Sprintf(`(%s-[0-9]+\\.[0-9]+)`, regexp.QuoteMeta(majorVersion)))\n\tbaseFullMatches := baseKernelFullRegex.FindStringSubmatch(line)\n\n\tvar baseFullVersion string\n\tif len(baseFullMatches) >= 2 {\n\t\tbaseFullVersion = baseFullMatches[1]\n\t} else {\n\t\tbaseFullVersion = baseKernelVersion\n\t}\n\n\tbaseKernelPkg := newDebianPackageFromSnap(\n\t\tfmt.Sprintf(\"linux-image-%s-generic\", baseKernelVersion),\n\t\tbaseFullVersion,\n\t\tsnapMetadata,\n\t\tlocation,\n\t)\n\n\treturn &baseKernelPkg\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_kernel_changelog_test.go",
    "content": "package snap\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"context\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc gzipContent(t *testing.T, content string) []byte {\n\tt.Helper()\n\tvar buf bytes.Buffer\n\tw := gzip.NewWriter(&buf)\n\t_, err := w.Write([]byte(content))\n\trequire.NoError(t, err)\n\trequire.NoError(t, w.Close())\n\treturn buf.Bytes()\n}\n\nfunc locationReadCloser(t *testing.T, data []byte) file.LocationReadCloser {\n\tt.Helper()\n\treturn file.LocationReadCloser{\n\t\tLocation:   file.NewLocation(\"testdata/changelog.Debian.gz\"),\n\t\tReadCloser: io.NopCloser(bytes.NewReader(data)),\n\t}\n}\n\nfunc TestExtractKernelVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tfirstLine   string\n\t\texpected    *kernelVersionInfo\n\t\texpectError string\n\t}{\n\t\t{\n\t\t\tname:      \"standard focal kernel\",\n\t\t\tfirstLine: \"linux (5.4.0-195.215) focal; urgency=medium\",\n\t\t\texpected: &kernelVersionInfo{\n\t\t\t\tbaseVersion:    \"5.4.0-195\",\n\t\t\t\treleaseVersion: \"215\",\n\t\t\t\tfullVersion:    \"5.4.0-195.215\",\n\t\t\t\tmajorVersion:   \"5.4\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"noble kernel 6.x\",\n\t\t\tfirstLine: \"linux (6.8.0-50.51) noble; urgency=medium\",\n\t\t\texpected: &kernelVersionInfo{\n\t\t\t\tbaseVersion:    \"6.8.0-50\",\n\t\t\t\treleaseVersion: \"51\",\n\t\t\t\tfullVersion:    \"6.8.0-50.51\",\n\t\t\t\tmajorVersion:   \"6.8\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"jammy kernel\",\n\t\t\tfirstLine: \"linux (5.15.0-130.140) jammy; urgency=medium\",\n\t\t\texpected: &kernelVersionInfo{\n\t\t\t\tbaseVersion:    \"5.15.0-130\",\n\t\t\t\treleaseVersion: \"140\",\n\t\t\t\tfullVersion:    \"5.15.0-130.140\",\n\t\t\t\tmajorVersion:   \"5.15\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:        \"empty string\",\n\t\t\tfirstLine:   \"\",\n\t\t\texpectError: \"could not parse kernel version from changelog\",\n\t\t},\n\t\t{\n\t\t\tname:        \"no version match\",\n\t\t\tfirstLine:   \"not a valid changelog line\",\n\t\t\texpectError: \"could not parse kernel version from changelog\",\n\t\t},\n\t\t{\n\t\t\tname:        \"missing release version\",\n\t\t\tfirstLine:   \"linux (5.4.0-195) focal; urgency=medium\",\n\t\t\texpectError: \"could not parse kernel version from changelog\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult, err := extractKernelVersion(tt.firstLine)\n\t\t\tif tt.expectError != \"\" {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tassert.Contains(t, err.Error(), tt.expectError)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Equal(t, tt.expected.baseVersion, result.baseVersion)\n\t\t\tassert.Equal(t, tt.expected.releaseVersion, result.releaseVersion)\n\t\t\tassert.Equal(t, tt.expected.fullVersion, result.fullVersion)\n\t\t\tassert.Equal(t, tt.expected.majorVersion, result.majorVersion)\n\t\t})\n\t}\n}\n\nfunc TestCreateMainKernelPackage(t *testing.T) {\n\tlocation := file.NewLocation(\"testdata/changelog.Debian.gz\")\n\tversionInfo := &kernelVersionInfo{\n\t\tbaseVersion:    \"5.4.0-195\",\n\t\treleaseVersion: \"215\",\n\t\tfullVersion:    \"5.4.0-195.215\",\n\t\tmajorVersion:   \"5.4\",\n\t}\n\tsnapMetadata := pkg.SnapEntry{\n\t\tSnapType: pkg.SnapTypeKernel,\n\t}\n\n\tpackages := createMainKernelPackage(versionInfo, snapMetadata, location)\n\n\trequire.Len(t, packages, 1)\n\tp := packages[0]\n\tassert.Equal(t, \"linux-image-5.4.0-195-generic\", p.Name)\n\tassert.Equal(t, \"5.4.0-195.215\", p.Version)\n\tassert.Equal(t, pkg.DebPkg, p.Type)\n\n\tmetadata, ok := p.Metadata.(pkg.SnapEntry)\n\trequire.True(t, ok)\n\tassert.Equal(t, pkg.SnapTypeKernel, metadata.SnapType)\n}\n\nfunc TestParseBaseKernelLine(t *testing.T) {\n\tlocation := file.NewLocation(\"testdata/changelog.Debian.gz\")\n\tsnapMetadata := pkg.SnapEntry{\n\t\tSnapType: pkg.SnapTypeKernel,\n\t}\n\n\ttests := []struct {\n\t\tname         string\n\t\tline         string\n\t\tmajorVersion string\n\t\texpectNil    bool\n\t\texpectedName string\n\t\texpectedVer  string\n\t}{\n\t\t{\n\t\t\tname:         \"standard base kernel entry\",\n\t\t\tline:         \"    [ Ubuntu: 5.4-100.200 ]\",\n\t\t\tmajorVersion: \"5.4\",\n\t\t\texpectedName: \"linux-image-5.4-100-generic\",\n\t\t\texpectedVer:  \"5.4-100.200\",\n\t\t},\n\t\t{\n\t\t\tname:         \"6.x base kernel entry\",\n\t\t\tline:         \"    [ Ubuntu: 6.8-40.41 ]\",\n\t\t\tmajorVersion: \"6.8\",\n\t\t\texpectedName: \"linux-image-6.8-40-generic\",\n\t\t\texpectedVer:  \"6.8-40.41\",\n\t\t},\n\t\t{\n\t\t\tname:         \"no matching version\",\n\t\t\tline:         \"  * some random changelog text here\",\n\t\t\tmajorVersion: \"5.4\",\n\t\t\texpectNil:    true,\n\t\t},\n\t\t{\n\t\t\tname:         \"empty line\",\n\t\t\tline:         \"\",\n\t\t\tmajorVersion: \"5.4\",\n\t\t\texpectNil:    true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := parseBaseKernelLine(tt.line, tt.majorVersion, snapMetadata, location)\n\t\t\tif tt.expectNil {\n\t\t\t\tassert.Nil(t, result)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NotNil(t, result)\n\t\t\tassert.Equal(t, tt.expectedName, result.Name)\n\t\t\tassert.Equal(t, tt.expectedVer, result.Version)\n\t\t\tassert.Equal(t, pkg.DebPkg, result.Type)\n\n\t\t\tmetadata, ok := result.Metadata.(pkg.SnapEntry)\n\t\t\trequire.True(t, ok)\n\t\t\tassert.Equal(t, pkg.SnapTypeKernel, metadata.SnapType)\n\t\t})\n\t}\n}\n\nfunc TestParseKernelChangelog(t *testing.T) {\n\t// Realistic changelog content modeled on Ubuntu kernel changelogs.\n\t// The first line declares the patched kernel version.\n\t// Somewhere later a line references the base upstream kernel.\n\tfullChangelog := strings.Join([]string{\n\t\t\"linux (5.4.0-195.215) focal; urgency=medium\",\n\t\t\"\",\n\t\t\"  * focal/linux: 5.4.0-195.215 -proposed tracker (LP: #2083390)\",\n\t\t\"\",\n\t\t\"  [ Ubuntu: 5.4-100.200 ]\",\n\t\t\"\",\n\t\t\"  * Some other entry\",\n\t\t\"\",\n\t\t\" -- Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>  Mon, 01 Jan 2024 00:00:00 +0000\",\n\t\t\"\",\n\t}, \"\\n\")\n\n\t// Changelog where the base kernel entry line uses the release version pattern\n\t// The code builds: fmt.Sprintf(\"%s/linux:\", releaseVersion) → \"215/linux:\"\n\tchangelogWithBaseEntry := strings.Join([]string{\n\t\t\"linux (5.4.0-195.215) focal; urgency=medium\",\n\t\t\"\",\n\t\t\"  * focal/linux: 5.4.0-195.215 -proposed tracker\",\n\t\t\"\",\n\t\t\"  215/linux: 5.4-100.200 base entry\",\n\t\t\"\",\n\t\t\" -- Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>  Mon, 01 Jan 2024 00:00:00 +0000\",\n\t\t\"\",\n\t}, \"\\n\")\n\n\t// Changelog with only the header line and no base kernel match\n\tminimalChangelog := \"linux (6.8.0-50.51) noble; urgency=medium\\n\"\n\n\ttests := []struct {\n\t\tname          string\n\t\tinput         []byte\n\t\texpectedCount int\n\t\texpectedNames []string\n\t\texpectedVers  []string\n\t\texpectError   bool\n\t\terrorContains string\n\t}{\n\t\t{\n\t\t\tname:          \"full changelog with base kernel via release version pattern\",\n\t\t\tinput:         gzipContent(t, changelogWithBaseEntry),\n\t\t\texpectedCount: 2,\n\t\t\texpectedNames: []string{\"linux-image-5.4.0-195-generic\", \"linux-image-5.4-100-generic\"},\n\t\t\texpectedVers:  []string{\"5.4.0-195.215\", \"5.4-100.200\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"changelog without base kernel match returns only main package\",\n\t\t\tinput:         gzipContent(t, minimalChangelog),\n\t\t\texpectedCount: 1,\n\t\t\texpectedNames: []string{\"linux-image-6.8.0-50-generic\"},\n\t\t\texpectedVers:  []string{\"6.8.0-50.51\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"full changelog without matching release version pattern returns only main package\",\n\t\t\tinput:         gzipContent(t, fullChangelog),\n\t\t\texpectedCount: 1,\n\t\t\texpectedNames: []string{\"linux-image-5.4.0-195-generic\"},\n\t\t\texpectedVers:  []string{\"5.4.0-195.215\"},\n\t\t},\n\t\t{\n\t\t\tname:          \"invalid gzip data\",\n\t\t\tinput:         []byte(\"not gzip data\"),\n\t\t\texpectError:   true,\n\t\t\terrorContains: \"failed to create gzip reader\",\n\t\t},\n\t\t{\n\t\t\t// The old (slurp) implementation produces \"could not parse kernel version\"\n\t\t\t// because strings.Split(\"\", \"\\n\") yields [\"\"], not an empty slice.\n\t\t\t// The new (streaming) implementation produces \"changelog file is empty\"\n\t\t\t// because bufio.Scanner.Scan() returns false immediately.\n\t\t\t// Both correctly reject empty content; only the message differs.\n\t\t\tname:        \"empty gzip content\",\n\t\t\tinput:       gzipContent(t, \"\"),\n\t\t\texpectError: true,\n\t\t},\n\t\t{\n\t\t\tname:          \"gzip content with unparseable first line\",\n\t\t\tinput:         gzipContent(t, \"this is not a valid kernel changelog\\n\"),\n\t\t\texpectError:   true,\n\t\t\terrorContains: \"could not parse kernel version from changelog\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\treader := locationReadCloser(t, tt.input)\n\n\t\t\tpackages, relationships, err := parseKernelChangelog(\n\t\t\t\tcontext.Background(), nil, &generic.Environment{}, reader,\n\t\t\t)\n\n\t\t\tif tt.expectError {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tif tt.errorContains != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorContains)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Nil(t, relationships)\n\t\t\trequire.Len(t, packages, tt.expectedCount)\n\n\t\t\tfor i, p := range packages {\n\t\t\t\tassert.Equal(t, tt.expectedNames[i], p.Name, \"package %d name\", i)\n\t\t\t\tassert.Equal(t, tt.expectedVers[i], p.Version, \"package %d version\", i)\n\t\t\t\tassert.Equal(t, pkg.DebPkg, p.Type, \"package %d type\", i)\n\n\t\t\t\tmetadata, ok := p.Metadata.(pkg.SnapEntry)\n\t\t\t\trequire.True(t, ok, \"package %d metadata type\", i)\n\t\t\t\tassert.Equal(t, pkg.SnapTypeKernel, metadata.SnapType, \"package %d snap type\", i)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_snapd_snapcraft.go",
    "content": "package snap\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// snapcraftYaml represents the structure of snapcraft.yaml files found in snapd snaps\ntype snapcraftYaml struct {\n\tName          string                   `yaml:\"name\"`\n\tVersion       string                   `yaml:\"version\"`\n\tSummary       string                   `yaml:\"summary\"`\n\tDescription   string                   `yaml:\"description\"`\n\tBase          string                   `yaml:\"base\"`\n\tGrade         string                   `yaml:\"grade\"`\n\tConfinement   string                   `yaml:\"confinement\"`\n\tArchitectures []string                 `yaml:\"architectures\"`\n\tParts         map[string]snapcraftPart `yaml:\"parts\"`\n}\n\n// snapcraftPart represents a part in a snapcraft.yaml file\ntype snapcraftPart struct {\n\tPlugin           string              `yaml:\"plugin\"`\n\tSource           string              `yaml:\"source\"`\n\tSourceType       string              `yaml:\"source-type\"`\n\tSourceTag        string              `yaml:\"source-tag\"`\n\tSourceCommit     string              `yaml:\"source-commit\"`\n\tBuildPackages    []string            `yaml:\"build-packages\"`\n\tStagePackages    []string            `yaml:\"stage-packages\"`\n\tBuildSnaps       []string            `yaml:\"build-snaps\"`\n\tStageSnaps       []string            `yaml:\"stage-snaps\"`\n\tBuildEnvironment []map[string]string `yaml:\"build-environment\"`\n\tOverride         map[string]string   `yaml:\"override-build\"`\n}\n\n// parseSnapdSnapcraft parses snapcraft.yaml files from snapd snaps\nfunc parseSnapdSnapcraft(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar snapcraft snapcraftYaml\n\n\tdecoder := yaml.NewDecoder(reader)\n\tif err := decoder.Decode(&snapcraft); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse snapcraft.yaml: %w\", err)\n\t}\n\n\tsnapMetadata := createMetadata(snapcraft)\n\tpackages := extractPackagesFromParts(snapcraft, snapMetadata, reader.Location)\n\n\treturn packages, nil, nil\n}\n\n// createMetadata creates metadata from snapcraft.yaml\nfunc createMetadata(snapcraft snapcraftYaml) pkg.SnapEntry {\n\tmetadata := pkg.SnapEntry{\n\t\tSnapType:    pkg.SnapTypeSnapd,\n\t\tBase:        snapcraft.Base,\n\t\tSnapName:    snapcraft.Name,\n\t\tSnapVersion: snapcraft.Version,\n\t}\n\n\tif len(snapcraft.Architectures) > 0 {\n\t\tmetadata.Architecture = snapcraft.Architectures[0]\n\t}\n\n\treturn metadata\n}\n\n// extractPackagesFromParts processes all parts to extract packages\nfunc extractPackagesFromParts(snapcraft snapcraftYaml, baseMetadata pkg.SnapEntry, location file.Location) []pkg.Package {\n\tvar packages []pkg.Package\n\n\tfor _, part := range snapcraft.Parts {\n\t\tbuildPackages := processBuildPackages(part.BuildPackages, baseMetadata, location)\n\t\tpackages = append(packages, buildPackages...)\n\n\t\tstagePackages := processStagePackages(part.StagePackages, baseMetadata, location)\n\t\tpackages = append(packages, stagePackages...)\n\n\t\tsnapPackages := processSnapPackages(part.BuildSnaps, part.StageSnaps, baseMetadata, location)\n\t\tpackages = append(packages, snapPackages...)\n\t}\n\n\treturn packages\n}\n\n// processBuildPackages creates packages from build-packages list\nfunc processBuildPackages(buildPackages []string, metadata pkg.SnapEntry, location file.Location) []pkg.Package {\n\tvar packages []pkg.Package\n\n\tfor _, pkgName := range buildPackages {\n\t\tif pkgName == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tbuildPkg := newDebianPackageFromSnap(\n\t\t\tpkgName,\n\t\t\t\"unknown\",\n\t\t\tmetadata,\n\t\t\tlocation,\n\t\t)\n\t\tpackages = append(packages, buildPkg)\n\t}\n\n\treturn packages\n}\n\n// processStagePackages creates packages from stage-packages list with version parsing\nfunc processStagePackages(stagePackages []string, metadata pkg.SnapEntry, location file.Location) []pkg.Package {\n\tvar packages []pkg.Package\n\n\tfor _, pkgEntry := range stagePackages {\n\t\tif pkgEntry == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tname, version := parsePackageWithVersion(pkgEntry)\n\t\tstagePkg := newDebianPackageFromSnap(\n\t\t\tname,\n\t\t\tversion,\n\t\t\tmetadata,\n\t\t\tlocation,\n\t\t)\n\t\tpackages = append(packages, stagePkg)\n\t}\n\n\treturn packages\n}\n\n// parsePackageWithVersion extracts package name and version from version-constrained entries\nfunc parsePackageWithVersion(pkgEntry string) (string, string) {\n\tname := pkgEntry\n\tversion := \"unknown\"\n\n\tif !strings.ContainsAny(pkgEntry, \"=<>\") {\n\t\treturn name, version\n\t}\n\n\t// Try to split on version operators\n\toperators := []string{\">=\", \"<=\", \"==\", \"!=\", \"=\", \">\", \"<\"}\n\tfor _, op := range operators {\n\t\tif strings.Contains(pkgEntry, op) {\n\t\t\tparts := strings.SplitN(pkgEntry, op, 2)\n\t\t\tif len(parts) == 2 {\n\t\t\t\treturn strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1])\n\t\t\t}\n\t\t}\n\t}\n\n\treturn name, version\n}\n\n// processSnapPackages creates packages from snap dependencies\nfunc processSnapPackages(buildSnaps, stageSnaps []string, baseMetadata pkg.SnapEntry, location file.Location) []pkg.Package {\n\tvar packages []pkg.Package\n\tallSnaps := make([]string, 0, len(buildSnaps)+len(stageSnaps))\n\tallSnaps = append(allSnaps, buildSnaps...)\n\tallSnaps = append(allSnaps, stageSnaps...)\n\n\tfor _, snapName := range allSnaps {\n\t\tif snapName == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tsnapMetadata := pkg.SnapEntry{\n\t\t\tSnapType:     pkg.SnapTypeApp,\n\t\t\tSnapName:     snapName,\n\t\t\tSnapVersion:  \"unknown\",\n\t\t\tArchitecture: baseMetadata.Architecture,\n\t\t}\n\n\t\tsnapPkg := newPackage(\n\t\t\tsnapName,\n\t\t\t\"unknown\",\n\t\t\tsnapMetadata,\n\t\t\tlocation,\n\t\t)\n\t\tpackages = append(packages, snapPkg)\n\t}\n\n\treturn packages\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/parse_system_manifest.go",
    "content": "package snap\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"gopkg.in/yaml.v3\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// systemManifest represents the structure of manifest.yaml files found in system/gadget snaps\ntype systemManifest struct {\n\tName                 string   `yaml:\"name\"`\n\tVersion              string   `yaml:\"version\"`\n\tBase                 string   `yaml:\"base\"`\n\tGrade                string   `yaml:\"grade\"`\n\tConfinement          string   `yaml:\"confinement\"`\n\tPrimedStagePackages  []string `yaml:\"primed-stage-packages\"`\n\tArchitectures        []string `yaml:\"architectures\"`\n\tSnapcraftVersion     string   `yaml:\"snapcraft-version\"`\n\tSnapcraftOSReleaseID string   `yaml:\"snapcraft-os-release-id\"`\n}\n\n// parseSystemManifest parses manifest.yaml files from system/gadget snaps\nfunc parseSystemManifest(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar manifest systemManifest\n\n\tdecoder := yaml.NewDecoder(reader)\n\tif err := decoder.Decode(&manifest); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse manifest.yaml: %w\", err)\n\t}\n\n\tvar packages []pkg.Package\n\n\t// Determine snap type - could be system, gadget, or app\n\tsnapType := pkg.SnapTypeApp // Default\n\tif manifest.Name != \"\" {\n\t\t// Try to infer type from name patterns or content\n\t\tswitch {\n\t\tcase strings.Contains(strings.ToLower(manifest.Name), \"gadget\"):\n\t\t\tsnapType = pkg.SnapTypeGadget\n\t\tdefault:\n\t\t\tsnapType = pkg.SnapTypeApp // System snaps are often just regular apps\n\t\t}\n\t}\n\n\tsnapMetadata := pkg.SnapEntry{\n\t\tSnapType:    snapType,\n\t\tBase:        manifest.Base,\n\t\tSnapName:    manifest.Name,\n\t\tSnapVersion: manifest.Version,\n\t}\n\n\t// Set architecture if available\n\tif len(manifest.Architectures) > 0 {\n\t\tsnapMetadata.Architecture = manifest.Architectures[0]\n\t}\n\n\t// Parse primed-stage-packages entries\n\tfor _, pkgEntry := range manifest.PrimedStagePackages {\n\t\tif !strings.Contains(pkgEntry, \"=\") {\n\t\t\tcontinue // Skip malformed entries\n\t\t}\n\n\t\tparts := strings.SplitN(pkgEntry, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\tname := strings.TrimSpace(parts[0])\n\t\tversion := strings.TrimSpace(parts[1])\n\n\t\t// Skip empty names or versions\n\t\tif name == \"\" || version == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle architecture suffixes if present\n\t\tcurrentMetadata := snapMetadata\n\t\tif strings.Contains(name, \":\") {\n\t\t\tarchParts := strings.SplitN(name, \":\", 2)\n\t\t\tname = archParts[0]\n\t\t\tcurrentMetadata.Architecture = archParts[1]\n\t\t}\n\n\t\tdebPkg := newDebianPackageFromSnap(\n\t\t\tname,\n\t\t\tversion,\n\t\t\tcurrentMetadata,\n\t\t\treader.Location,\n\t\t)\n\n\t\tpackages = append(packages, debPkg)\n\t}\n\n\treturn packages, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/snap/testdata/dpkg.yaml",
    "content": "package-repositories:\n- type: apt\n  ppa: ucdev/ubuntu/base-ppa\npackages:\n- adduser=3.118ubuntu2\n- apparmor=2.13.3-7ubuntu5.3\n- gcc-10-base:amd64=10.5.0-1ubuntu1~20.04"
  },
  {
    "path": "syft/pkg/cataloger/snap/testdata/glob-paths/base/usr/share/snappy/dpkg.yaml",
    "content": "packages:\n- test-package=1.0.0"
  },
  {
    "path": "syft/pkg/cataloger/snap/testdata/glob-paths/system/snap/manifest.yaml",
    "content": "name: test-snap\nversion: 1.0\nprimed-stage-packages:\n- test-package=1.0.0"
  },
  {
    "path": "syft/pkg/cataloger/snap/testdata/manifest.yaml",
    "content": "snapcraft-version: 8.2.1.post5+git07b4ee15\nsnapcraft-started-at: '2024-04-29T06:47:56.067540Z'\nsnapcraft-os-release-id: ubuntu\nsnapcraft-os-release-version-id: '24.04'\nname: pc\nversion: 24-0.1\nsummary: PC gadget for generic devices\ndescription: |\n  This gadget enables generic pc devices to work with Ubuntu Core\nbase: core24\ngrade: stable\nconfinement: strict\narchitectures:\n- amd64\nprimed-stage-packages:\n- grub-efi-amd64-signed=1.202+2.12-1ubuntu7\n- shim-signed=1.56+15.7-0ubuntu1"
  },
  {
    "path": "syft/pkg/cataloger/snap/testdata/real-dpkg.yaml",
    "content": "package-repositories:\n- type: apt\n  ppa: ucdev/ubuntu/base-ppa\npackages:\n- adduser=3.118ubuntu2\n- apparmor=2.13.3-7ubuntu5.3\n- apt=2.0.10\n- bash=5.0-6ubuntu1.2\n- coreutils=8.30-3ubuntu2\n- dpkg=1.19.7ubuntu3.2\n- gcc-10-base:amd64=10.5.0-1ubuntu1~20.04\n- libc6:amd64=2.31-0ubuntu9.16\n- systemd=245.4-4ubuntu3.23\n- ubuntu-keyring=2020.02.11.4"
  },
  {
    "path": "syft/pkg/cataloger/swift/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: swift # MANUAL\n    name: cocoapods-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/swift/cataloger.go\n      function: NewCocoapodsCataloger\n    selectors: # AUTO-GENERATED\n      - cocoapods\n      - declared\n      - directory\n      - language\n      - package\n      - swift\n    parsers: # AUTO-GENERATED structure\n      - function: parsePodfileLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Podfile.lock'\n        metadata_types: # AUTO-GENERATED\n          - pkg.CocoaPodfileLockEntry\n        package_types: # AUTO-GENERATED\n          - pod\n        json_schema_types: # AUTO-GENERATED\n          - CocoaPodfileLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - CocoaPodfileLockEntry.Checksum\n  - ecosystem: swift # MANUAL\n    name: swift-package-manager-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/swift/cataloger.go\n      function: NewSwiftPackageManagerCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - language\n      - package\n      - spm\n      - swift\n    parsers: # AUTO-GENERATED structure\n      - function: parsePackageResolved\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/Package.resolved'\n            - '**/.package.resolved'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SwiftPackageManagerResolvedEntry\n        package_types: # AUTO-GENERATED\n          - swift\n        json_schema_types: # AUTO-GENERATED\n          - SwiftPackageManagerLockEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n              - indirect\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/cataloger.go",
    "content": "/*\nPackage swift provides a concrete Cataloger implementation relating to packages within the swift language ecosystem.\n*/\npackage swift\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewSwiftPackageManagerCataloger returns a new Swift package manager cataloger object.\nfunc NewSwiftPackageManagerCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"swift-package-manager-cataloger\").\n\t\tWithParserByGlobs(parsePackageResolved, \"**/Package.resolved\", \"**/.package.resolved\")\n}\n\n// NewCocoapodsCataloger returns a new Swift Cocoapods lock file cataloger object.\nfunc NewCocoapodsCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"cocoapods-cataloger\").\n\t\tWithParserByGlobs(parsePodfileLock, \"**/Podfile.lock\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/cataloger_test.go",
    "content": "package swift\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_Cataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain swift files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"src/Podfile.lock\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewCocoapodsCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/package.go",
    "content": "package swift\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n)\n\nfunc newSwiftPackageManagerPackage(name, version, sourceURL, revision string, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tPURL:      swiftPackageManagerPackageURL(name, version, sourceURL),\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tType:      pkg.SwiftPkg,\n\t\tLanguage:  pkg.Swift,\n\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\tRevision: revision,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc newCocoaPodsPackage(name, version, hash string, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tPURL:      cocoaPodsPackageURL(name, version),\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tType:      pkg.CocoapodsPkg,\n\t\tLanguage:  pkg.Swift,\n\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\tChecksum: hash,\n\t\t},\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc cocoaPodsPackageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeCocoapods,\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n\nfunc swiftPackageManagerPackageURL(name, version, sourceURL string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\tpackageurl.TypeSwift,\n\t\tstrings.Replace(sourceURL, \"https://\", \"\", 1),\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/package_test.go",
    "content": "package swift\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_cocoaPodsPackageURL(t *testing.T) {\n\ttype args struct {\n\t\tname    string\n\t\tversion string\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\targs: args{\n\t\t\t\tname:    \"name\",\n\t\t\t\tversion: \"v0.1.0\",\n\t\t\t},\n\t\t\twant: \"pkg:cocoapods/name@v0.1.0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, cocoaPodsPackageURL(tt.args.name, tt.args.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/parse_package_resolved.go",
    "content": "package swift\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parsePackageResolved\n\n// swift package manager has two versions (1 and 2) of the resolved files, the types below describes the serialization strategies for each version\n// with its suffix indicating which version its specific to.\n\ntype packageResolvedV1 struct {\n\tPackageObject packageObjectV1 `json:\"object\"`\n\tVersion       int             `json:\"version\"`\n}\n\ntype packageObjectV1 struct {\n\tPins []packagePinsV1\n}\n\ntype packagePinsV1 struct {\n\tName          string       `json:\"package\"`\n\tRepositoryURL string       `json:\"repositoryURL\"`\n\tState         packageState `json:\"state\"`\n}\n\ntype packageResolvedV2 struct {\n\tPins []packagePinsV2\n}\n\ntype packagePinsV2 struct {\n\tIdentity string       `json:\"identity\"`\n\tKind     string       `json:\"kind\"`\n\tLocation string       `json:\"location\"`\n\tState    packageState `json:\"state\"`\n}\n\ntype packagePin struct {\n\tIdentity string\n\tLocation string\n\tRevision string\n\tVersion  string\n}\n\ntype packageState struct {\n\tRevision string `json:\"revision\"`\n\tVersion  string `json:\"version\"`\n}\n\n// parsePackageResolved is a parser for the contents of a Package.resolved file, which is generated by Xcode after it's resolved Swift Package Manger packages.\nfunc parsePackageResolved(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tdec := json.NewDecoder(reader)\n\tvar packageResolvedData map[string]interface{}\n\tfor {\n\t\tif err := dec.Decode(&packageResolvedData); errors.Is(err, io.EOF) {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to parse Package.resolved file: %w\", err)\n\t\t}\n\t}\n\n\tif packageResolvedData[\"version\"] == nil {\n\t\tlog.Trace(\"no version found in Package.resolved file, skipping\")\n\t\treturn nil, nil, fmt.Errorf(\"no version found in Package.resolved file\")\n\t}\n\n\tversion, ok := packageResolvedData[\"version\"].(float64)\n\tif !ok {\n\t\treturn nil, nil, fmt.Errorf(\"failed to parse Package.resolved file: version is not a number\")\n\t}\n\n\tvar pins, err = pinsForVersion(packageResolvedData, version)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, pkgPin := range pins {\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewSwiftPackageManagerPackage(\n\t\t\t\tpkgPin.Identity,\n\t\t\t\tpkgPin.Version,\n\t\t\t\tpkgPin.Location,\n\t\t\t\tpkgPin.Revision,\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n\nfunc pinsForVersion(data map[string]interface{}, version float64) ([]packagePin, error) {\n\tvar genericPins []packagePin\n\tswitch version {\n\tcase 1:\n\t\tt := packageResolvedV1{}\n\t\tjsonString, err := json.Marshal(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tparseErr := json.Unmarshal(jsonString, &t)\n\t\tif parseErr != nil {\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tfor _, pin := range t.PackageObject.Pins {\n\t\t\tgenericPins = append(genericPins, packagePin{\n\t\t\t\tpin.Name,\n\t\t\t\tpin.RepositoryURL,\n\t\t\t\tpin.State.Revision,\n\t\t\t\tpin.State.Version,\n\t\t\t})\n\t\t}\n\tcase 2, 3:\n\t\tt := packageResolvedV2{}\n\t\tjsonString, err := json.Marshal(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tparseErr := json.Unmarshal(jsonString, &t)\n\t\tif parseErr != nil {\n\t\t\treturn nil, parseErr\n\t\t}\n\t\tfor _, pin := range t.Pins {\n\t\t\tgenericPins = append(genericPins, packagePin{\n\t\t\t\tpin.Identity,\n\t\t\t\tpin.Location,\n\t\t\t\tpin.State.Revision,\n\t\t\t\tpin.State.Version,\n\t\t\t})\n\t\t}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown swift package manager version, %f\", version)\n\t}\n\treturn genericPins, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/parse_package_resolved_test.go",
    "content": "package swift\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePackageResolved(t *testing.T) {\n\tfixture := \"testdata/Package.resolved\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"swift-algorithms\",\n\t\t\tVersion:   \"1.0.0\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-algorithms.git/swift-algorithms@1.0.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"b14b7f4c528c942f121c8b860b9410b2bf57825e\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"swift-async-algorithms\",\n\t\t\tVersion:   \"0.1.0\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-async-algorithms.git/swift-async-algorithms@0.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"9cfed92b026c524674ed869a4ff2dcfdeedf8a2a\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"swift-atomics\",\n\t\t\tVersion:   \"1.1.0\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-atomics.git/swift-atomics@1.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"6c89474e62719ddcc1e9614989fff2f68208fe10\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"swift-collections\",\n\t\t\tVersion:   \"1.0.4\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-collections.git/swift-collections@1.0.4\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"937e904258d22af6e447a0b72c0bc67583ef64a2\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"swift-numerics\",\n\t\t\tVersion:   \"1.0.2\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-numerics/swift-numerics@1.0.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"0a5bc04095a675662cf24757cc0640aa2204253b\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: no relationships are under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePackageResolved, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePackageResolvedV3(t *testing.T) {\n\tfixture := \"testdata/PackageV3.resolved\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"swift-mmio\",\n\t\t\tVersion:   \"\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-mmio/swift-mmio\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"80c109b87511041338a4d8d88064088c8dfc079b\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"swift-syntax\",\n\t\t\tVersion:   \"509.1.1\",\n\t\t\tPURL:      \"pkg:swift/github.com/apple/swift-syntax.git/swift-syntax@509.1.1\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.SwiftPkg,\n\t\t\tMetadata: pkg.SwiftPackageManagerResolvedEntry{\n\t\t\t\tRevision: \"64889f0c732f210a935a0ad7cda38f77f876262d\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: no relationships are under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePackageResolved, expectedPkgs, expectedRelationships)\n}\n\nfunc TestParsePackageResolved_empty(t *testing.T) {\n\t// regression for https://github.com/anchore/syft/issues/2225\n\tfixture := \"testdata/empty-packages.resolved\"\n\n\tpkgtest.TestFileParser(t, fixture, parsePackageResolved, nil, nil)\n\n\tdir := t.TempDir()\n\tfixture = filepath.Join(dir, \"Package.resolved\")\n\t_, err := os.Create(fixture)\n\trequire.NoError(t, err)\n\n\tpkgtest.TestFileParser(t, fixture, parsePackageResolved, nil, nil)\n}\n\nfunc TestParsePackageResolved_versionNotANumber(t *testing.T) {\n\t// regression for https://github.com/anchore/syft/issues/2225\n\tfixture := \"testdata/bad-version-packages.resolved\"\n\n\tpkgtest.NewCatalogTester().FromFile(t, fixture).WithError().TestParser(t, parsePackageResolved)\n}\n\nfunc Test_corruptPackageResolved(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/bad-version-packages.resolved\").\n\t\tWithError().\n\t\tTestParser(t, parsePackageResolved)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/parse_podfile_lock.go",
    "content": "package swift\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"go.yaml.in/yaml/v3\"\n\n\t\"github.com/anchore/syft/internal/unknown\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nvar _ generic.Parser = parsePodfileLock\n\ntype podfileLock struct {\n\tPods            []interface{}       `yaml:\"PODS\"`\n\tDependencies    []string            `yaml:\"DEPENDENCIES\"`\n\tSpecRepos       map[string][]string `yaml:\"SPEC REPOS\"`\n\tSpecChecksums   map[string]string   `yaml:\"SPEC CHECKSUMS\"`\n\tPodfileChecksum string              `yaml:\"PODFILE CHECKSUM\"`\n\tCocopods        string              `yaml:\"COCOAPODS\"`\n}\n\n// parsePodfileLock is a parser function for Podfile.lock contents, returning all cocoapods pods discovered.\nfunc parsePodfileLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar podfile podfileLock\n\tif err := yaml.NewDecoder(reader).Decode(&podfile); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse yaml: %w\", err)\n\t}\n\n\tvar pkgs []pkg.Package\n\tfor _, podInterface := range podfile.Pods {\n\t\tvar podBlob string\n\t\tswitch v := podInterface.(type) {\n\t\tcase map[string]interface{}:\n\t\t\tfor k := range v {\n\t\t\t\tpodBlob = k\n\t\t\t}\n\t\tcase string:\n\t\t\tpodBlob = v\n\t\tdefault:\n\t\t\treturn nil, nil, fmt.Errorf(\"malformed podfile.lock\")\n\t\t}\n\t\tsplits := strings.Split(podBlob, \" \")\n\t\tpodName := splits[0]\n\t\tpodVersion := strings.TrimSuffix(strings.TrimPrefix(splits[1], \"(\"), \")\")\n\t\tpodRootPkg := strings.Split(podName, \"/\")[0]\n\n\t\tvar pkgHash string\n\t\tpkgHash, exists := podfile.SpecChecksums[podRootPkg]\n\t\tif !exists {\n\t\t\treturn nil, nil, fmt.Errorf(\"malformed podfile.lock: incomplete checksums\")\n\t\t}\n\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewCocoaPodsPackage(\n\t\t\t\tpodName,\n\t\t\t\tpodVersion,\n\t\t\t\tpkgHash,\n\t\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, unknown.IfEmptyf(pkgs, \"unable to determine packages\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/parse_podfile_lock_test.go",
    "content": "package swift\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePodfileLock(t *testing.T) {\n\tfixture := \"testdata/Podfile.lock\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"GlossButtonNode\",\n\t\t\tVersion:   \"3.1.2\",\n\t\t\tPURL:      \"pkg:cocoapods/GlossButtonNode@3.1.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"4ea1197a744f2fb5fb875fe31caf17ded4762e8f\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINCache\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINCache@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"7a8fc1a691173d21dbddbf86cd515de6efa55086\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINCache/Arc-exception-safe\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINCache%2FArc-exception-safe@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"7a8fc1a691173d21dbddbf86cd515de6efa55086\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINCache/Core\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINCache%2FCore@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"7a8fc1a691173d21dbddbf86cd515de6efa55086\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINOperation\",\n\t\t\tVersion:   \"1.2.1\",\n\t\t\tPURL:      \"pkg:cocoapods/PINOperation@1.2.1\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"00c935935f1e8cf0d1e2d6b542e75b88fc3e5e20\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINRemoteImage/Core\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINRemoteImage%2FCore@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"f1295b29f8c5e640e25335a1b2bd9d805171bd01\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINRemoteImage/iOS\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINRemoteImage%2FiOS@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"f1295b29f8c5e640e25335a1b2bd9d805171bd01\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"PINRemoteImage/PINCache\",\n\t\t\tVersion:   \"3.0.3\",\n\t\t\tPURL:      \"pkg:cocoapods/PINRemoteImage%2FPINCache@3.0.3\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"f1295b29f8c5e640e25335a1b2bd9d805171bd01\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Reveal-SDK\",\n\t\t\tVersion:   \"33\",\n\t\t\tPURL:      \"pkg:cocoapods/Reveal-SDK@33\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"effba1c940b8337195563c425a6b5862ec875caa\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"SwiftGen\",\n\t\t\tVersion:   \"6.5.1\",\n\t\t\tPURL:      \"pkg:cocoapods/SwiftGen@6.5.1\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"a6d22010845f08fe18fbdf3a07a8e380fd22e0ea\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/AssetsLibrary\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FAssetsLibrary@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/Core\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FCore@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/MapKit\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FMapKit@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/Photos\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FPhotos@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/PINRemoteImage\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FPINRemoteImage@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"Texture/Video\",\n\t\t\tVersion:   \"3.1.0\",\n\t\t\tPURL:      \"pkg:cocoapods/Texture%2FVideo@3.1.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"2e8ab2519452515f7f5a520f5a8f7e0a413abfa3\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TextureSwiftSupport\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tPURL:      \"pkg:cocoapods/TextureSwiftSupport@3.13.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"c515c7927fab92d0d9485f49b885b8c5de34fbfb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TextureSwiftSupport/Components\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tPURL:      \"pkg:cocoapods/TextureSwiftSupport%2FComponents@3.13.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"c515c7927fab92d0d9485f49b885b8c5de34fbfb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TextureSwiftSupport/Experiments\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tPURL:      \"pkg:cocoapods/TextureSwiftSupport%2FExperiments@3.13.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"c515c7927fab92d0d9485f49b885b8c5de34fbfb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TextureSwiftSupport/Extensions\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tPURL:      \"pkg:cocoapods/TextureSwiftSupport%2FExtensions@3.13.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"c515c7927fab92d0d9485f49b885b8c5de34fbfb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TextureSwiftSupport/LayoutSpecBuilders\",\n\t\t\tVersion:   \"3.13.0\",\n\t\t\tPURL:      \"pkg:cocoapods/TextureSwiftSupport%2FLayoutSpecBuilders@3.13.0\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"c515c7927fab92d0d9485f49b885b8c5de34fbfb\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName:      \"TinyConstraints\",\n\t\t\tVersion:   \"4.0.2\",\n\t\t\tPURL:      \"pkg:cocoapods/TinyConstraints@4.0.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swift,\n\t\t\tType:      pkg.CocoapodsPkg,\n\t\t\tMetadata: pkg.CocoaPodfileLockEntry{\n\t\t\t\tChecksum: \"7b7ccc0c485bb3bb47082138ff28bc33cd49897f\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: no relationships are under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePodfileLock, expectedPkgs, expectedRelationships)\n}\n\nfunc Test_corruptPodfile(t *testing.T) {\n\tpkgtest.NewCatalogTester().\n\t\tFromFile(t, \"testdata/glob-paths/src/Podfile.lock\").\n\t\tWithError().\n\t\tTestParser(t, parsePodfileLock)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/testdata/Package.resolved",
    "content": "{\n  \"pins\" : [\n    {\n      \"identity\" : \"swift-algorithms\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-algorithms.git\",\n      \"state\" : {\n        \"revision\" : \"b14b7f4c528c942f121c8b860b9410b2bf57825e\",\n        \"version\" : \"1.0.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-async-algorithms\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-async-algorithms.git\",\n      \"state\" : {\n        \"revision\" : \"9cfed92b026c524674ed869a4ff2dcfdeedf8a2a\",\n        \"version\" : \"0.1.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-atomics\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-atomics.git\",\n      \"state\" : {\n        \"revision\" : \"6c89474e62719ddcc1e9614989fff2f68208fe10\",\n        \"version\" : \"1.1.0\"\n      }\n    },\n    {\n      \"identity\" : \"swift-collections\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-collections.git\",\n      \"state\" : {\n        \"revision\" : \"937e904258d22af6e447a0b72c0bc67583ef64a2\",\n        \"version\" : \"1.0.4\"\n      }\n    },\n    {\n      \"identity\" : \"swift-numerics\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-numerics\",\n      \"state\" : {\n        \"revision\" : \"0a5bc04095a675662cf24757cc0640aa2204253b\",\n        \"version\" : \"1.0.2\"\n      }\n    }\n  ],\n  \"version\" : 2\n}"
  },
  {
    "path": "syft/pkg/cataloger/swift/testdata/PackageV3.resolved",
    "content": "{\n  \"originHash\" : \"ea83017c944c7850b8f60207e6143eb17cb6b5e6b734b3fa08787a5d920dba7b\",\n  \"pins\" : [\n    {\n      \"identity\" : \"swift-mmio\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-mmio\",\n      \"state\" : {\n        \"branch\" : \"swift-embedded-examples\",\n        \"revision\" : \"80c109b87511041338a4d8d88064088c8dfc079b\"\n      }\n    },\n    {\n      \"identity\" : \"swift-syntax\",\n      \"kind\" : \"remoteSourceControl\",\n      \"location\" : \"https://github.com/apple/swift-syntax.git\",\n      \"state\" : {\n        \"revision\" : \"64889f0c732f210a935a0ad7cda38f77f876262d\",\n        \"version\" : \"509.1.1\"\n      }\n    }\n  ],\n  \"version\" : 3\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swift/testdata/bad-version-packages.resolved",
    "content": "{\n  \"version\" : \"2\"\n}"
  },
  {
    "path": "syft/pkg/cataloger/swift/testdata/empty-packages.resolved",
    "content": "{}"
  },
  {
    "path": "syft/pkg/cataloger/swipl/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: prolog # MANUAL\n    name: swipl-pack-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/swipl/cataloger.go\n      function: NewSwiplPackCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - language\n      - pack\n      - package\n      - swipl\n    parsers: # AUTO-GENERATED structure\n      - function: parsePackPackage\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/pack.pl'\n        metadata_types: # AUTO-GENERATED\n          - pkg.SwiplPackEntry\n        package_types: # AUTO-GENERATED\n          - swiplpack\n        json_schema_types: # AUTO-GENERATED\n          - SwiplpackPackage\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/cataloger.go",
    "content": "/*\nPackage swipl provides a Cataloger implementation relating to packages within the SWI Prolog language ecosystem.\n*/\npackage swipl\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\n// NewSwiplPackCataloger returns a new SWI Prolog Pack package manager cataloger object.\nfunc NewSwiplPackCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"swipl-pack-cataloger\").\n\t\tWithParserByGlobs(parsePackPackage, \"**/pack.pl\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/cataloger_test.go",
    "content": "package swipl\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_Cataloger_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain swipl pack files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"pack.pl\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewSwiplPackCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/package.go",
    "content": "package swipl\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newSwiplPackPackage(ctx context.Context, resolver file.Resolver, m pkg.SwiplPackEntry, locations ...file.Location) pkg.Package {\n\tp := pkg.Package{\n\t\tName:      m.Name,\n\t\tVersion:   m.Version,\n\t\tPURL:      swiplpackPackageURL(m.Name, m.Version),\n\t\tLocations: file.NewLocationSet(locations...),\n\t\tLicenses:  pkg.NewLicenseSet(licenses.FindRelativeToLocations(ctx, resolver, locations...)...),\n\t\tType:      pkg.SwiplPackPkg,\n\t\tLanguage:  pkg.Swipl,\n\t\tMetadata:  m,\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n\nfunc swiplpackPackageURL(name, version string) string {\n\tvar qualifiers packageurl.Qualifiers\n\n\treturn packageurl.NewPackageURL(\n\t\t\"swiplpack\",\n\t\t\"\",\n\t\tname,\n\t\tversion,\n\t\tqualifiers,\n\t\t\"\",\n\t).ToString()\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/package_test.go",
    "content": "package swipl\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_swiplpackPackageURL(t *testing.T) {\n\ttype args struct {\n\t\tname    string\n\t\tversion string\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"go case\",\n\t\t\targs: args{\n\t\t\t\tname:    \"name\",\n\t\t\t\tversion: \"v0.1.0\",\n\t\t\t},\n\t\t\twant: \"pkg:swiplpack/name@v0.1.0\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, swiplpackPackageURL(tt.args.name, tt.args.version))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/parse_pack.go",
    "content": "package swipl\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"regexp\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc parsePackPackage(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\n\tnameRe := regexp.MustCompile(`name\\(\\s*'?([^')]+)'?\\s*\\)`)\n\tversionRe := regexp.MustCompile(`version\\('([^']+)'\\)`)\n\thomeRe := regexp.MustCompile(`home\\(\\s*'([^']+)'\\s*\\)`)\n\tauthorRe := regexp.MustCompile(`(author|packager)\\(\\s*'([^']+)'\\s*(?:,\\s*'([^']+)'\\s*)?\\)`)\n\n\tdata, err := io.ReadAll(reader) //nolint:gocritic // regex matching requires full buffer\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"unable to parse Rockspec app\")\n\t\treturn nil, nil, nil\n\t}\n\n\tname := nameRe.FindSubmatch(data)\n\tversion := versionRe.FindSubmatch(data)\n\n\tif name == nil || version == nil {\n\t\tlog.Debugf(\"encountered pack.pl file without a name and/or version field, ignoring (path=%q)\", reader.Path())\n\t\treturn nil, nil, nil\n\t}\n\n\tentry := pkg.SwiplPackEntry{\n\t\tName:    string(name[1]),\n\t\tVersion: string(version[1]),\n\t}\n\n\thome := homeRe.FindSubmatch(data)\n\n\tif home != nil {\n\t\tentry.Homepage = string(home[1])\n\t}\n\n\tauthors := authorRe.FindAllSubmatch(data, -1)\n\n\tfor _, a := range authors {\n\t\tswitch string(a[1]) {\n\t\tcase \"author\":\n\t\t\tentry.Author = string(a[2])\n\t\t\tentry.AuthorEmail = string(a[3])\n\t\tcase \"packager\":\n\t\t\tentry.Packager = string(a[2])\n\t\t\tentry.PackagerEmail = string(a[3])\n\t\t}\n\t}\n\n\tpkgs = append(\n\t\tpkgs,\n\t\tnewSwiplPackPackage(\n\t\t\tctx,\n\t\t\tresolver,\n\t\t\tentry,\n\t\t\treader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),\n\t\t),\n\t)\n\n\treturn pkgs, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/parse_pack_test.go",
    "content": "package swipl\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParsePackPackage(t *testing.T) {\n\tfixture := \"testdata/pack.pl\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\texpectedPkgs := []pkg.Package{\n\t\t{\n\t\t\tName:      \"hdt\",\n\t\t\tVersion:   \"0.5.2\",\n\t\t\tPURL:      \"pkg:swiplpack/hdt@0.5.2\",\n\t\t\tLocations: locations,\n\t\t\tLanguage:  pkg.Swipl,\n\t\t\tType:      pkg.SwiplPackPkg,\n\t\t\tMetadata: pkg.SwiplPackEntry{\n\t\t\t\tName:          \"hdt\",\n\t\t\t\tVersion:       \"0.5.2\",\n\t\t\t\tAuthor:        \"Jan Wielemaker\",\n\t\t\t\tAuthorEmail:   \"J.Wielemaker@vu.nl\",\n\t\t\t\tPackager:      \"Jan Wielemaker\",\n\t\t\t\tPackagerEmail: \"J.Wielemaker@vu.nl\",\n\t\t\t\tHomepage:      \"https://github.com/JanWielemaker/hdt\",\n\t\t\t},\n\t\t},\n\t}\n\n\t// TODO: no relationships are under test yet\n\tvar expectedRelationships []artifact.Relationship\n\n\tpkgtest.TestFileParser(t, fixture, parsePackPackage, expectedPkgs, expectedRelationships)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/swipl/testdata/glob-paths/pack.pl",
    "content": "bogus"
  },
  {
    "path": "syft/pkg/cataloger/swipl/testdata/pack.pl",
    "content": "name(hdt).\nversion('0.5.2').\n% TODO: swipl_version([90121]).\ntitle('Access RDF HDT files').\nkeywords(['RDF']).\nauthor( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\npackager( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\nmaintainer( 'Jan Wielemaker', 'J.Wielemaker@vu.nl' ).\nhome( 'https://github.com/JanWielemaker/hdt' ).\ndownload( 'https://github.com/JanWielemaker/hdt/archive/V*.zip' ).\n"
  },
  {
    "path": "syft/pkg/cataloger/terraform/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: terraform # MANUAL\n    name: terraform-lock-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/terraform/cataloger.go\n      function: NewLockCataloger\n    selectors: # AUTO-GENERATED\n      - declared\n      - directory\n      - package\n      - terraform\n    parsers: # AUTO-GENERATED structure\n      - function: parseTerraformLock\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/.terraform.lock.hcl'\n        metadata_types: # AUTO-GENERATED\n          - pkg.TerraformLockProviderEntry\n        package_types: # AUTO-GENERATED\n          - terraform\n        json_schema_types: # AUTO-GENERATED\n          - TerraformLockProviderEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: false\n          - name: dependency.depth\n            default:\n              - direct\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default:\n              - runtime\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: true\n            evidence:\n              - TerraformLockProviderEntry.Hashes\n"
  },
  {
    "path": "syft/pkg/cataloger/terraform/cataloger.go",
    "content": "package terraform\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nfunc NewLockCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(\"terraform-lock-cataloger\").\n\t\tWithParserByGlobs(parseTerraformLock, \"**/.terraform.lock.hcl\")\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/terraform/cataloger_test.go",
    "content": "package terraform\n\nimport (\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestTerraformCataloger(t *testing.T) {\n\tc := NewLockCataloger()\n\n\tfileLoc := file.NewLocation(\".terraform.lock.hcl\")\n\tlocation := fileLoc.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)\n\n\tawsProviderPkg := pkg.Package{\n\t\tName:      \"registry.terraform.io/hashicorp/aws\",\n\t\tVersion:   \"5.72.1\",\n\t\tFoundBy:   \"terraform-lock-cataloger\",\n\t\tLocations: file.NewLocationSet(location),\n\t\tType:      pkg.TerraformPkg,\n\t\tLanguage:  pkg.Go,\n\t\tMetadata: pkg.TerraformLockProviderEntry{\n\t\t\tURL:         \"registry.terraform.io/hashicorp/aws\",\n\t\t\tVersion:     \"5.72.1\",\n\t\t\tConstraints: \"> 5.72.0\",\n\t\t\tHashes: []string{\n\t\t\t\t\"h1:jhd5O5o0CfZCNEwwN0EiDAzb7ApuFrtxJqa6HXW4EKE=\",\n\t\t\t\t\"zh:0dea6843836e926d33469b48b948744079023816d16a2ff7666bcfb6aa3522d4\",\n\t\t\t\t\"zh:195fa9513f75800a0d62797ebec75ee73e9b8c28d713fe9b63d3b1d1eec129b3\",\n\t\t\t\t\"zh:1ed92f3961715bf0e024bcde3c12dfbdc50b00c1f8a43cc00802cfc45a256208\",\n\t\t\t\t\"zh:2ac687e3a52606466cae4a6813e81d923042488df88d2424e28d3f8530f091bb\",\n\t\t\t\t\"zh:32e7ca75f9314557daada3c44628fe1f3bf964a4f833bfb4b2295d833fe64b6f\",\n\t\t\t\t\"zh:374ee0e6b4327cc6ef666908ce5d6450a3a56e90cd2b785e83c2bcfc100021d2\",\n\t\t\t\t\"zh:5500fd6fdac44f96411fcf9c6d01691159ec35455ed127eb4c3a498e1cc92a64\",\n\t\t\t\t\"zh:723a2dc4b064c12e7ee62ad4fbfd72fa5e025206ea47b735994ef53f3c373152\",\n\t\t\t\t\"zh:89d97b87605f1d734f27e642567cbecf785b521af8ea81dac55c77ccde876221\",\n\t\t\t\t\"zh:951ee1e5731e8d65d521d71b95927e55055b3c4656eef6d46fa580a63328befc\",\n\t\t\t\t\"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425\",\n\t\t\t\t\"zh:9b2b362470b64ec227b2da64762ab8bc4111c6b80365fd9d82fc5e1e33f44038\",\n\t\t\t\t\"zh:aa6e57d0cb974ff0da5dee5d43ad2745cbbc4a2b507d4c799839b9fa96daf688\",\n\t\t\t\t\"zh:ba0d14c4a6b7aa844a830d47c0bf995b632e37f0795394b5b60c638b62b7fc03\",\n\t\t\t\t\"zh:c9764065a9c5d324db0b02bd201b9e3a2118e49c4960884acdeea377173302e9\",\n\t\t\t},\n\t\t},\n\t}\n\tawsProviderPkg.SetID()\n\n\tgcpProviderPkg := pkg.Package{\n\t\tName:      \"registry.terraform.io/hashicorp/google\",\n\t\tVersion:   \"6.8.0\",\n\t\tFoundBy:   \"terraform-lock-cataloger\",\n\t\tLocations: file.NewLocationSet(location),\n\t\tType:      pkg.TerraformPkg,\n\t\tLanguage:  pkg.Go,\n\t\tMetadata: pkg.TerraformLockProviderEntry{\n\t\t\tURL:         \"registry.terraform.io/hashicorp/google\",\n\t\t\tVersion:     \"6.8.0\",\n\t\t\tConstraints: \"\",\n\t\t\tHashes: []string{\n\t\t\t\t\"h1:GlCaVPk6eKMg2ZbRY7C5tUeHGNIABT+qFtMl8+XWZHM=\",\n\t\t\t\t\"zh:1b78f4451f1617092eb6891c9c13eda79671060601c40947feea6794c732157a\",\n\t\t\t\t\"zh:4c6d7231ce32c6ff2a98218ef363c133d27d423b009354e7fe18459d9feb41d4\",\n\t\t\t\t\"zh:6ae0112e9c733ab6c72436a334ffe3f197a613bb04f49538462b83b236d37a2d\",\n\t\t\t\t\"zh:8bd5651838ad674e0a173a453b76c80b94d08ebcb8ea0b6263ce6da0599b42f5\",\n\t\t\t\t\"zh:94ee7bcd77b0b7c2777113e35282da014e61e813fe46c058a49bf3d616fecdf4\",\n\t\t\t\t\"zh:c0bf014422c2971985d34ad45ddb6aa737373398f83b325884ea5608ac1264aa\",\n\t\t\t\t\"zh:c2cbbf0c249c3d1842ad0ad77fb7ef85bd3e92c688618c4087173bc1d69cd098\",\n\t\t\t\t\"zh:cefa3e06cb353d08b83dafa6135cd78e17540ae735b7c5687833cc1925c3fd8e\",\n\t\t\t\t\"zh:d20bc0216bf7f054f6318467d3902ced05e9f0bfa500ee55bf43b1b41ef0b854\",\n\t\t\t\t\"zh:e54ad5959e53b9e9acafc243d6f4039ab5005cec32c7435a122da964888d184c\",\n\t\t\t\t\"zh:e833c8de147268b3ffc14c60915eccb9347ade5f25b37b3771240a4d68b6aac4\",\n\t\t\t\t\"zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c\",\n\t\t\t},\n\t\t},\n\t}\n\tgcpProviderPkg.SetID()\n\n\ttests := []struct {\n\t\tname     string\n\t\texpected []pkg.Package\n\t}{\n\t\t{\n\t\t\tname: \"two-providers\",\n\t\t\texpected: []pkg.Package{\n\t\t\t\tawsProviderPkg,\n\t\t\t\tgcpProviderPkg,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tWithResolver(fileresolver.NewFromUnindexedDirectory(filepath.Join(\"testdata\", tt.name))).\n\t\t\t\tExpects(tt.expected, nil).\n\t\t\t\tTestCataloger(t, c)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/terraform/parse_tf_lock.go",
    "content": "package terraform\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/hashicorp/hcl/v2/hclsimple\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\ntype terraformLockFile struct {\n\tProviders []pkg.TerraformLockProviderEntry `hcl:\"provider,block\"`\n}\n\nfunc parseTerraformLock(_ context.Context, _ file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar lockFile terraformLockFile\n\n\tcontents, err := io.ReadAll(reader) //nolint:gocritic // hclsimple.Decode requires []byte\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to read terraform lock file: %w\", err)\n\t}\n\n\terr = hclsimple.Decode(reader.RealPath, contents, nil, &lockFile)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to decode terraform lock file: %w\", err)\n\t}\n\n\tpkgs := make([]pkg.Package, 0, len(lockFile.Providers))\n\n\tfor _, provider := range lockFile.Providers {\n\t\tp := pkg.Package{\n\t\t\tName:      provider.URL,\n\t\t\tVersion:   provider.Version,\n\t\t\tLocations: file.NewLocationSet(reader.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\t\tLicenses:  pkg.NewLicenseSet(), // TODO: license could be found in .terraform/providers/${name}/${version}/${arch}/LICENSE.txt\n\t\t\tLanguage:  pkg.Go,\n\t\t\tType:      pkg.TerraformPkg,\n\t\t\tMetadata:  provider,\n\t\t\t// TODO: PURL omitted from package creation until the following issue resolved\n\t\t\t// https://github.com/package-url/purl-spec/issues/369\n\t\t}\n\t\tp.SetID()\n\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\treturn pkgs, nil, nil\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/terraform/testdata/two-providers/.terraform.lock.hcl",
    "content": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"registry.terraform.io/hashicorp/aws\" {\n  version     = \"5.72.1\"\n  constraints = \"> 5.72.0\"\n  hashes = [\n    \"h1:jhd5O5o0CfZCNEwwN0EiDAzb7ApuFrtxJqa6HXW4EKE=\",\n    \"zh:0dea6843836e926d33469b48b948744079023816d16a2ff7666bcfb6aa3522d4\",\n    \"zh:195fa9513f75800a0d62797ebec75ee73e9b8c28d713fe9b63d3b1d1eec129b3\",\n    \"zh:1ed92f3961715bf0e024bcde3c12dfbdc50b00c1f8a43cc00802cfc45a256208\",\n    \"zh:2ac687e3a52606466cae4a6813e81d923042488df88d2424e28d3f8530f091bb\",\n    \"zh:32e7ca75f9314557daada3c44628fe1f3bf964a4f833bfb4b2295d833fe64b6f\",\n    \"zh:374ee0e6b4327cc6ef666908ce5d6450a3a56e90cd2b785e83c2bcfc100021d2\",\n    \"zh:5500fd6fdac44f96411fcf9c6d01691159ec35455ed127eb4c3a498e1cc92a64\",\n    \"zh:723a2dc4b064c12e7ee62ad4fbfd72fa5e025206ea47b735994ef53f3c373152\",\n    \"zh:89d97b87605f1d734f27e642567cbecf785b521af8ea81dac55c77ccde876221\",\n    \"zh:951ee1e5731e8d65d521d71b95927e55055b3c4656eef6d46fa580a63328befc\",\n    \"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425\",\n    \"zh:9b2b362470b64ec227b2da64762ab8bc4111c6b80365fd9d82fc5e1e33f44038\",\n    \"zh:aa6e57d0cb974ff0da5dee5d43ad2745cbbc4a2b507d4c799839b9fa96daf688\",\n    \"zh:ba0d14c4a6b7aa844a830d47c0bf995b632e37f0795394b5b60c638b62b7fc03\",\n    \"zh:c9764065a9c5d324db0b02bd201b9e3a2118e49c4960884acdeea377173302e9\",\n  ]\n}\n\nprovider \"registry.terraform.io/hashicorp/google\" {\n  version     = \"6.8.0\"\n  hashes = [\n    \"h1:GlCaVPk6eKMg2ZbRY7C5tUeHGNIABT+qFtMl8+XWZHM=\",\n    \"zh:1b78f4451f1617092eb6891c9c13eda79671060601c40947feea6794c732157a\",\n    \"zh:4c6d7231ce32c6ff2a98218ef363c133d27d423b009354e7fe18459d9feb41d4\",\n    \"zh:6ae0112e9c733ab6c72436a334ffe3f197a613bb04f49538462b83b236d37a2d\",\n    \"zh:8bd5651838ad674e0a173a453b76c80b94d08ebcb8ea0b6263ce6da0599b42f5\",\n    \"zh:94ee7bcd77b0b7c2777113e35282da014e61e813fe46c058a49bf3d616fecdf4\",\n    \"zh:c0bf014422c2971985d34ad45ddb6aa737373398f83b325884ea5608ac1264aa\",\n    \"zh:c2cbbf0c249c3d1842ad0ad77fb7ef85bd3e92c688618c4087173bc1d69cd098\",\n    \"zh:cefa3e06cb353d08b83dafa6135cd78e17540ae735b7c5687833cc1925c3fd8e\",\n    \"zh:d20bc0216bf7f054f6318467d3902ced05e9f0bfa500ee55bf43b1b41ef0b854\",\n    \"zh:e54ad5959e53b9e9acafc243d6f4039ab5005cec32c7435a122da964888d184c\",\n    \"zh:e833c8de147268b3ffc14c60915eccb9347ade5f25b37b3771240a4d68b6aac4\",\n    \"zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c\",\n  ]\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/capabilities.yaml",
    "content": "# Cataloger capabilities. See ../README.md for documentation.\n\ncatalogers:\n  - ecosystem: wordpress # MANUAL\n    name: wordpress-plugins-cataloger # AUTO-GENERATED\n    type: generic # AUTO-GENERATED\n    source: # AUTO-GENERATED\n      file: syft/pkg/cataloger/wordpress/cataloger.go\n      function: NewWordpressPluginCataloger\n    selectors: # AUTO-GENERATED\n      - directory\n      - image\n      - package\n      - wordpress\n    parsers: # AUTO-GENERATED structure\n      - function: parseWordpressPluginFiles\n        detector: # AUTO-GENERATED\n          method: glob # AUTO-GENERATED\n          criteria: # AUTO-GENERATED\n            - '**/wp-content/plugins/*/*.php'\n        metadata_types: # AUTO-GENERATED\n          - pkg.WordpressPluginEntry\n        package_types: # AUTO-GENERATED\n          - wordpress-plugin\n        json_schema_types: # AUTO-GENERATED\n          - WordpressPluginEntry\n        capabilities: # MANUAL - preserved across regeneration\n          - name: license\n            default: true\n          - name: dependency.depth\n            default: []\n          - name: dependency.edges\n            default: \"\"\n          - name: dependency.kinds\n            default: []\n          - name: package_manager.files.listing\n            default: false\n          - name: package_manager.files.digests\n            default: false\n          - name: package_manager.package_integrity_hash\n            default: false\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/cataloger.go",
    "content": "package wordpress\n\nimport (\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst (\n\tcatalogerName        = \"wordpress-plugins-cataloger\"\n\twordpressPluginsGlob = \"**/wp-content/plugins/*/*.php\"\n)\n\nfunc NewWordpressPluginCataloger() pkg.Cataloger {\n\treturn generic.NewCataloger(catalogerName).\n\t\tWithParserByGlobs(parseWordpressPluginFiles, wordpressPluginsGlob)\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/cataloger_test.go",
    "content": "package wordpress\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc Test_WordpressPlugin_Globs(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tfixture  string\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tname:    \"obtain wordpress plugin files\",\n\t\t\tfixture: \"testdata/glob-paths\",\n\t\t\texpected: []string{\n\t\t\t\t\"wp-content/plugins/akismet/akismet.php\",\n\t\t\t\t\"wp-content/plugins/all-in-one-wp-migration/all-in-one-wp-migration.php\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgtest.NewCatalogTester().\n\t\t\t\tFromDirectory(t, test.fixture).\n\t\t\t\tExpectsResolverContentQueries(test.expected).\n\t\t\t\tTestCataloger(t, NewWordpressPluginCataloger())\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/package.go",
    "content": "package wordpress\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/licenses\"\n)\n\nfunc newWordpressPluginPackage(ctx context.Context, resolver file.Resolver, name, version string, m pluginData, location file.Location) pkg.Package {\n\tmeta := pkg.WordpressPluginEntry{\n\t\tPluginInstallDirectory: m.PluginInstallDirectory,\n\t\tAuthor:                 m.Author,\n\t\tAuthorURI:              m.AuthorURI,\n\t}\n\n\tp := pkg.Package{\n\t\tName:      name,\n\t\tVersion:   version,\n\t\tLocations: file.NewLocationSet(location.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),\n\t\tLanguage:  pkg.PHP,\n\t\tType:      pkg.WordpressPluginPkg,\n\t\tMetadata:  meta,\n\t}\n\n\tif len(m.Licenses) > 0 {\n\t\tp.Licenses = pkg.NewLicenseSet(pkg.NewLicenseWithContext(ctx, m.Licenses[0]))\n\t} else {\n\t\tp = licenses.RelativeToPackage(ctx, resolver, p)\n\t}\n\n\tp.SetID()\n\n\treturn p\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/parse_plugin.go",
    "content": "package wordpress\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/generic\"\n)\n\nconst contentBufferSize = 4096\n\nvar patterns = map[string]*regexp.Regexp{\n\t// match example:\t\"Plugin Name: WP Migration\"\t--->\tWP Migration\n\t\"name\": regexp.MustCompile(`(?i)plugin name:\\s*(?P<name>.+)`),\n\n\t// match example:\t\"Version: 5.3\"\t\t\t\t--->\t5.3\n\t\"version\": regexp.MustCompile(`(?i)version:\\s*(?P<version>[\\d.]+)`),\n\n\t// match example:\t\"License: GPLv3\"\t\t\t--->\tGPLv3\n\t\"license\": regexp.MustCompile(`(?i)license:\\s*(?P<license>\\w+)`),\n\n\t// match example:\t\"Author: MonsterInsights\"\t--->\tMonsterInsights\n\t\"author\": regexp.MustCompile(`(?i)author:\\s*(?P<author>.+)`),\n\n\t// match example:\t\"Author URI: https://servmask.com/\"\t--->\thttps://servmask.com/\n\t\"author_uri\": regexp.MustCompile(`(?i)author uri:\\s*(?P<author_uri>.+)`),\n}\n\ntype pluginData struct {\n\tLicenses                 []string `mapstructure:\"licenses\" json:\"licenses,omitempty\"`\n\tpkg.WordpressPluginEntry `mapstructure:\",squash\" json:\",inline\"`\n}\n\nfunc parseWordpressPluginFiles(ctx context.Context, resolver file.Resolver, _ *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) {\n\tvar pkgs []pkg.Package\n\tbuffer := make([]byte, contentBufferSize)\n\n\t_, err := reader.Read(buffer)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to read %s file: %w\", reader.Path(), err)\n\t}\n\n\tfields := extractFields(string(buffer))\n\n\tname, nameOk := fields[\"name\"]\n\tversion, versionOk := fields[\"version\"]\n\n\t// get a plugin name from a plugin's directory name\n\tpluginInstallDirectory := filepath.Base(filepath.Dir(reader.RealPath))\n\n\tif nameOk && name != \"\" && versionOk && version != \"\" {\n\t\tvar metadata pluginData\n\n\t\tmetadata.PluginInstallDirectory = pluginInstallDirectory\n\n\t\tauthor, authorOk := fields[\"author\"]\n\t\tif authorOk && author != \"\" {\n\t\t\tmetadata.Author = author.(string)\n\t\t}\n\n\t\tauthorURI, authorURIOk := fields[\"author_uri\"]\n\t\tif authorURIOk && authorURI != \"\" {\n\t\t\tmetadata.AuthorURI = authorURI.(string)\n\t\t}\n\n\t\tlicense, licenseOk := fields[\"license\"]\n\t\tif licenseOk && license != \"\" {\n\t\t\tlicenses := make([]string, 0)\n\t\t\tlicenses = append(licenses, license.(string))\n\t\t\tmetadata.Licenses = licenses\n\t\t}\n\n\t\tpkgs = append(\n\t\t\tpkgs,\n\t\t\tnewWordpressPluginPackage(\n\t\t\t\tctx,\n\t\t\t\tresolver,\n\t\t\t\tname.(string),\n\t\t\t\tversion.(string),\n\t\t\t\tmetadata,\n\t\t\t\treader.Location,\n\t\t\t),\n\t\t)\n\t}\n\n\treturn pkgs, nil, nil\n}\n\nfunc extractFields(in string) map[string]any {\n\tvar fields = make(map[string]interface{})\n\n\tfor field, pattern := range patterns {\n\t\tmatchMap := internal.MatchNamedCaptureGroups(pattern, in)\n\t\tif value := matchMap[field]; value != \"\" {\n\t\t\tfields[field] = strings.TrimSpace(value)\n\t\t}\n\t}\n\treturn fields\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/parse_plugin_test.go",
    "content": "package wordpress\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest\"\n)\n\nfunc TestParseWordpressPluginFiles(t *testing.T) {\n\tfixture := \"testdata/glob-paths/wp-content/plugins/akismet/akismet.php\"\n\tlocations := file.NewLocationSet(file.NewLocation(fixture))\n\tctx := context.TODO()\n\tvar expectedPkg = pkg.Package{\n\t\tName:      \"Akismet Anti-spam: Spam Protection\",\n\t\tVersion:   \"5.3\",\n\t\tLocations: locations,\n\t\tType:      pkg.WordpressPluginPkg,\n\t\tLicenses: pkg.NewLicenseSet(\n\t\t\tpkg.NewLicenseFromLocationsWithContext(ctx, \"GPLv2\"),\n\t\t),\n\t\tLanguage: pkg.PHP,\n\t\tMetadata: pkg.WordpressPluginEntry{\n\t\t\tPluginInstallDirectory: \"akismet\",\n\t\t\tAuthor:                 \"Automattic - Anti-spam Team\",\n\t\t\tAuthorURI:              \"https://automattic.com/wordpress-plugins/\",\n\t\t},\n\t}\n\n\tpkgtest.TestFileParser(t, fixture, parseWordpressPluginFiles, []pkg.Package{expectedPkg}, nil)\n}\n\nfunc Test_extractFields(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tin   string\n\t\twant map[string]any\n\t}{\n\t\t{\n\t\t\tname: \"carriage returns are stripped\",\n\t\t\tin:   \"Plugin Name: WP Migration\\r\\nVersion: 5.3\\r\\nLicense: GPLv3\\r\\nAuthor: MonsterInsights\\r\\nAuthor URI: https://servmask.com/\\r\\n\",\n\t\t\twant: map[string]any{\n\t\t\t\t\"name\":       \"WP Migration\",\n\t\t\t\t\"version\":    \"5.3\",\n\t\t\t\t\"license\":    \"GPLv3\",\n\t\t\t\t\"author\":     \"MonsterInsights\",\n\t\t\t\t\"author_uri\": \"https://servmask.com/\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, extractFields(tt.in))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/testdata/glob-paths/wp-admin/index.php",
    "content": "<?php\n// stub file"
  },
  {
    "path": "syft/pkg/cataloger/wordpress/testdata/glob-paths/wp-content/plugins/akismet/akismet.php",
    "content": "<?php\n/**\n * @package Akismet\n */\n/*\nPlugin Name:Akismet Anti-spam: Spam Protection\nPlugin URI: https://akismet.com/\nDescription: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.\nVersion: 5.3\nRequires at least: 5.8\nRequires PHP: 5.6.20\nAuthor: Automattic - Anti-spam Team\nAuthor URI: https://automattic.com/wordpress-plugins/\nLicense: GPLv2 or later\nText Domain: akismet\n*/\n// rest of plugin's code ..."
  },
  {
    "path": "syft/pkg/cataloger/wordpress/testdata/glob-paths/wp-content/plugins/all-in-one-wp-migration/all-in-one-wp-migration.php",
    "content": "<?php\n/**\n * Plugin Name: All-in-One WP Migration\n * Plugin URI: https://servmask.com/\n * Description: Migration tool for all your blog data. Import or Export your blog content with a single click.\n * Author: ServMask\n * Author URI: https://servmask.com/\n * Version: 7.78\n */\n // rest of plugin's code ..."
  },
  {
    "path": "syft/pkg/cataloger/wordpress/testdata/glob-paths/wp-includes/index.php",
    "content": "<?php\n// stub file"
  },
  {
    "path": "syft/pkg/cataloger.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// Cataloger describes behavior for an object to participate in parsing container image or file system\n// contents for the purpose of discovering Packages. Each concrete implementation should focus on discovering Packages\n// for a specific Package Type or ecosystem.\ntype Cataloger interface {\n\t// Name returns a string that uniquely describes a cataloger\n\tName() string\n\t// Catalog is given an object to resolve file references and content, this function returns any discovered Packages after analyzing the catalog source.\n\tCatalog(context.Context, file.Resolver) ([]Package, []artifact.Relationship, error)\n}\n"
  },
  {
    "path": "syft/pkg/cocoapods.go",
    "content": "package pkg\n\n// CocoaPodfileLockEntry represents a single entry from the \"Pods\" section of a Podfile.lock file.\ntype CocoaPodfileLockEntry struct {\n\t// Checksum is the SHA-1 hash of the podspec file for integrity verification (generated via `pod ipc spec ... | openssl sha1`), ensuring all team members use the same pod specification version\n\tChecksum string `mapstructure:\"checksum\" json:\"checksum\"`\n}\n"
  },
  {
    "path": "syft/pkg/collection.go",
    "content": "package pkg\n\nimport (\n\t\"sync\"\n\n\t\"github.com/jinzhu/copier\"\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\n// Collection represents a collection of Packages.\ntype Collection struct {\n\tbyID      map[artifact.ID]Package\n\tidsByName map[string]orderedIDSet\n\tidsByType map[Type]orderedIDSet\n\tidsByPath map[string]orderedIDSet // note: this is real path or virtual path\n\tlock      sync.RWMutex\n}\n\n// NewCollection returns a new empty Collection\nfunc NewCollection(pkgs ...Package) *Collection {\n\tc := Collection{\n\t\tbyID:      make(map[artifact.ID]Package),\n\t\tidsByName: make(map[string]orderedIDSet),\n\t\tidsByType: make(map[Type]orderedIDSet),\n\t\tidsByPath: make(map[string]orderedIDSet),\n\t}\n\n\tfor _, p := range pkgs {\n\t\tc.Add(p)\n\t}\n\n\treturn &c\n}\n\n// PackageCount returns the total number of packages that have been added.\nfunc (c *Collection) PackageCount() int {\n\tc.lock.RLock()\n\tdefer c.lock.RUnlock()\n\n\treturn len(c.byID)\n}\n\n// Package returns the package with the given ID.\nfunc (c *Collection) Package(id artifact.ID) *Package {\n\tc.lock.RLock()\n\tdefer c.lock.RUnlock()\n\n\tv, exists := c.byID[id]\n\tif !exists {\n\t\treturn nil\n\t}\n\tvar p Package\n\tif err := copier.Copy(&p, &v); err != nil {\n\t\tlog.Debugf(\"unable to copy package id=%q name=%q: %+v\", id, v.Name, err)\n\t\treturn nil\n\t}\n\tp.id = v.id\n\treturn &p\n}\n\n// PackagesByPath returns all packages that were discovered from the given path.\nfunc (c *Collection) PackagesByPath(path string) []Package {\n\tc.lock.RLock()\n\tdefer c.lock.RUnlock()\n\n\treturn c.packages(c.idsByPath[path].slice)\n}\n\n// PackagesByName returns all packages that were discovered with a matching name.\nfunc (c *Collection) PackagesByName(name string) []Package {\n\tc.lock.RLock()\n\tdefer c.lock.RUnlock()\n\n\treturn c.packages(c.idsByName[name].slice)\n}\n\n// Packages returns all packages for the given ID.\nfunc (c *Collection) Packages(ids []artifact.ID) (result []Package) {\n\tc.lock.RLock()\n\tdefer c.lock.RUnlock()\n\n\treturn c.packages(ids)\n}\n\nfunc (c *Collection) packages(ids []artifact.ID) (result []Package) {\n\t// note: read lock must be held by caller\n\n\tfor _, i := range ids {\n\t\tp, exists := c.byID[i]\n\t\tif exists {\n\t\t\tresult = append(result, p)\n\t\t}\n\t}\n\treturn result\n}\n\n// Add n packages to the collection.\nfunc (c *Collection) Add(pkgs ...Package) {\n\tfor _, p := range pkgs {\n\t\tc.add(p)\n\t}\n}\n\n// Add a package to the Collection.\nfunc (c *Collection) add(p Package) {\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\n\tid := p.ID()\n\tif id == \"\" {\n\t\tlog.Debugf(\"found package with empty ID while adding to the collection: %+v\", p)\n\t\tp.SetID()\n\t\tid = p.ID()\n\t}\n\n\tif existing, exists := c.byID[id]; exists {\n\t\t// there is already a package with this fingerprint merge the existing record with the new one\n\t\tif err := existing.merge(p); err != nil {\n\t\t\tlog.Debugf(\"failed to merge packages: %+v\", err)\n\t\t} else {\n\t\t\tc.byID[id] = existing\n\t\t\tc.addPathsToIndex(p)\n\t\t}\n\t\treturn\n\t}\n\n\tc.addToIndex(p)\n}\n\nfunc (c *Collection) addToIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\tc.byID[p.id] = p\n\tc.addNameToIndex(p)\n\tc.addTypeToIndex(p)\n\tc.addPathsToIndex(p)\n}\n\nfunc (c *Collection) addNameToIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\tnameIndex := c.idsByName[p.Name]\n\tnameIndex.add(p.id)\n\tc.idsByName[p.Name] = nameIndex\n}\n\nfunc (c *Collection) addTypeToIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\ttypeIndex := c.idsByType[p.Type]\n\ttypeIndex.add(p.id)\n\tc.idsByType[p.Type] = typeIndex\n}\n\nfunc (c *Collection) addPathsToIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\tobservedPaths := strset.New()\n\tfor _, l := range p.Locations.ToSlice() {\n\t\tif l.RealPath != \"\" && !observedPaths.Has(l.RealPath) {\n\t\t\tc.addPathToIndex(p.id, l.RealPath)\n\t\t\tobservedPaths.Add(l.RealPath)\n\t\t}\n\t\tif l.AccessPath != \"\" && l.RealPath != l.AccessPath && !observedPaths.Has(l.AccessPath) {\n\t\t\tc.addPathToIndex(p.id, l.AccessPath)\n\t\t\tobservedPaths.Add(l.AccessPath)\n\t\t}\n\t}\n}\n\nfunc (c *Collection) addPathToIndex(id artifact.ID, path string) {\n\t// note: write lock must be held by caller\n\n\tpathIndex := c.idsByPath[path]\n\tpathIndex.add(id)\n\tc.idsByPath[path] = pathIndex\n}\n\nfunc (c *Collection) Delete(ids ...artifact.ID) {\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\n\tfor _, id := range ids {\n\t\tp, exists := c.byID[id]\n\t\tif !exists {\n\t\t\treturn\n\t\t}\n\n\t\tdelete(c.byID, id)\n\t\tc.deleteNameFromIndex(p)\n\t\tc.deleteTypeFromIndex(p)\n\t\tc.deletePathsFromIndex(p)\n\t}\n}\n\nfunc (c *Collection) deleteNameFromIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\tnameIndex := c.idsByName[p.Name]\n\tnameIndex.delete(p.id)\n\tif len(nameIndex.slice) == 0 {\n\t\tdelete(c.idsByName, p.Name)\n\t} else {\n\t\tc.idsByName[p.Name] = nameIndex\n\t}\n}\n\nfunc (c *Collection) deleteTypeFromIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\ttypeIndex := c.idsByType[p.Type]\n\ttypeIndex.delete(p.id)\n\tif len(typeIndex.slice) == 0 {\n\t\tdelete(c.idsByType, p.Type)\n\t} else {\n\t\tc.idsByType[p.Type] = typeIndex\n\t}\n}\n\nfunc (c *Collection) deletePathsFromIndex(p Package) {\n\t// note: write lock must be held by caller\n\n\tobservedPaths := strset.New()\n\tfor _, l := range p.Locations.ToSlice() {\n\t\tif l.RealPath != \"\" && !observedPaths.Has(l.RealPath) {\n\t\t\tc.deletePathFromIndex(p.id, l.RealPath)\n\t\t\tobservedPaths.Add(l.RealPath)\n\t\t}\n\t\tif l.AccessPath != \"\" && l.RealPath != l.AccessPath && !observedPaths.Has(l.AccessPath) {\n\t\t\tc.deletePathFromIndex(p.id, l.AccessPath)\n\t\t\tobservedPaths.Add(l.AccessPath)\n\t\t}\n\t}\n}\n\nfunc (c *Collection) deletePathFromIndex(id artifact.ID, path string) {\n\t// note: write lock must be held by caller\n\n\tpathIndex := c.idsByPath[path]\n\tpathIndex.delete(id)\n\tif len(pathIndex.slice) == 0 {\n\t\tdelete(c.idsByPath, path)\n\t} else {\n\t\tc.idsByPath[path] = pathIndex\n\t}\n}\n\n// Enumerate all packages for the given type(s), enumerating all packages if no type is specified.\nfunc (c *Collection) Enumerate(types ...Type) <-chan Package {\n\tchannel := make(chan Package)\n\tgo func() {\n\t\tdefer close(channel)\n\n\t\tif c == nil {\n\t\t\t// we should allow enumerating from a collection that was never created (which will result in no packages enumerated)\n\t\t\treturn\n\t\t}\n\n\t\tc.lock.RLock()\n\t\tdefer c.lock.RUnlock()\n\n\t\tfor ty, ids := range c.idsByType {\n\t\t\tif len(types) != 0 {\n\t\t\t\tfound := false\n\t\t\ttypeCheck:\n\t\t\t\tfor _, t := range types {\n\t\t\t\t\tif t == ty {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tbreak typeCheck\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, id := range ids.slice {\n\t\t\t\tp := c.Package(id)\n\t\t\t\tif p != nil {\n\t\t\t\t\tchannel <- *p\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\treturn channel\n}\n\n// Sorted enumerates all packages for the given types sorted by package name. Enumerates all packages if no type\n// is specified.\nfunc (c *Collection) Sorted(types ...Type) (pkgs []Package) {\n\tfor p := range c.Enumerate(types...) {\n\t\tpkgs = append(pkgs, p)\n\t}\n\n\tSort(pkgs)\n\n\treturn pkgs\n}\n\ntype orderedIDSet struct {\n\tslice []artifact.ID\n}\n\nfunc (s *orderedIDSet) add(ids ...artifact.ID) {\nloopNewIDs:\n\tfor _, newID := range ids {\n\t\tfor _, existingID := range s.slice {\n\t\t\tif existingID == newID {\n\t\t\t\tcontinue loopNewIDs\n\t\t\t}\n\t\t}\n\t\ts.slice = append(s.slice, newID)\n\t}\n}\n\nfunc (s *orderedIDSet) delete(id artifact.ID) {\n\tfor i, existingID := range s.slice {\n\t\tif existingID == id {\n\t\t\ts.slice = append(s.slice[:i], s.slice[i+1:]...)\n\t\t\treturn\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/collection_test.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype expectedIndexes struct {\n\tbyType map[Type]*strset.Set\n\tbyPath map[string]*strset.Set\n}\n\nfunc TestCatalogMergePackageLicenses(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname         string\n\t\tpkgs         []Package\n\t\texpectedPkgs []Package\n\t}{\n\t\t{\n\t\t\tname: \"merges licenses of packages with equal ID\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid: \"equal\",\n\t\t\t\t\tLicenses: NewLicenseSet(\n\t\t\t\t\t\tNewLicensesFromValuesWithContext(ctx, \"foo\", \"baq\", \"quz\")...,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"equal\",\n\t\t\t\t\tLicenses: NewLicenseSet(\n\t\t\t\t\t\tNewLicensesFromValuesWithContext(ctx, \"bar\", \"baz\", \"foo\", \"qux\")...,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedPkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid: \"equal\",\n\t\t\t\t\tLicenses: NewLicenseSet(\n\t\t\t\t\t\tNewLicensesFromValuesWithContext(ctx, \"foo\", \"baq\", \"quz\", \"qux\", \"bar\", \"baz\")...,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcollection := NewCollection(test.pkgs...)\n\t\t\tfor i, p := range collection.Sorted() {\n\t\t\t\tassert.Equal(t, test.expectedPkgs[i].Licenses, p.Licenses)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCatalogDeleteRemovesPackages(t *testing.T) {\n\ttests := []struct {\n\t\tname            string\n\t\tpkgs            []Package\n\t\tdeleteIDs       []artifact.ID\n\t\texpectedIndexes expectedIndexes\n\t}{\n\t\t{\n\t\t\tname: \"delete one package\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid:      \"pkg:deb/debian/1\",\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"1\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path1\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid:      \"pkg:deb/debian/2\",\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"2\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/d/path\", \"/another/path2\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeleteIDs: []artifact.ID{\n\t\t\t\tartifact.ID(\"pkg:deb/debian/1\"),\n\t\t\t},\n\t\t\texpectedIndexes: expectedIndexes{\n\t\t\t\tbyType: map[Type]*strset.Set{\n\t\t\t\t\tDebPkg: strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t\tbyPath: map[string]*strset.Set{\n\t\t\t\t\t\"/d/path\":        strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t\t\"/another/path2\": strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"delete multiple packages\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid:      \"pkg:deb/debian/1\",\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"1\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path1\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid:      \"pkg:deb/debian/2\",\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"2\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/d/path\", \"/another/path2\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid:      \"pkg:deb/debian/3\",\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"3\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/e/path\", \"/another/path3\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeleteIDs: []artifact.ID{\n\t\t\t\tartifact.ID(\"pkg:deb/debian/1\"),\n\t\t\t\tartifact.ID(\"pkg:deb/debian/3\"),\n\t\t\t},\n\t\t\texpectedIndexes: expectedIndexes{\n\t\t\t\tbyType: map[Type]*strset.Set{\n\t\t\t\t\tDebPkg: strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t\tbyPath: map[string]*strset.Set{\n\t\t\t\t\t\"/d/path\":        strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t\t\"/another/path2\": strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"delete non-existent package\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid:      artifact.ID(\"pkg:deb/debian/1\"),\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"1\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path1\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid:      artifact.ID(\"pkg:deb/debian/2\"),\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"2\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/d/path\", \"/another/path2\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeleteIDs: []artifact.ID{\n\t\t\t\tartifact.ID(\"pkg:deb/debian/3\"),\n\t\t\t},\n\t\t\texpectedIndexes: expectedIndexes{\n\t\t\t\tbyType: map[Type]*strset.Set{\n\t\t\t\t\tDebPkg: strset.New(\"pkg:deb/debian/1\", \"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t\tbyPath: map[string]*strset.Set{\n\t\t\t\t\t\"/c/path\":        strset.New(\"pkg:deb/debian/1\"),\n\t\t\t\t\t\"/another/path1\": strset.New(\"pkg:deb/debian/1\"),\n\t\t\t\t\t\"/d/path\":        strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t\t\"/another/path2\": strset.New(\"pkg:deb/debian/2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"delete idsBy key entries when all deleted\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tid:      artifact.ID(\"pkg:deb/debian/1\"),\n\t\t\t\t\tName:    \"debian\",\n\t\t\t\t\tVersion: \"1\",\n\t\t\t\t\tType:    DebPkg,\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path1\"),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeleteIDs: []artifact.ID{\n\t\t\t\tartifact.ID(\"pkg:deb/debian/1\"),\n\t\t\t},\n\t\t\texpectedIndexes: expectedIndexes{},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewCollection()\n\t\t\tfor _, p := range test.pkgs {\n\t\t\t\tc.Add(p)\n\t\t\t}\n\n\t\t\tfor _, id := range test.deleteIDs {\n\t\t\t\tc.Delete(id)\n\t\t\t}\n\n\t\t\tassertIndexes(t, c, test.expectedIndexes)\n\t\t})\n\t}\n}\n\nfunc TestCatalogAddPopulatesIndex(t *testing.T) {\n\n\tvar pkgs = []Package{\n\t\t{\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewVirtualLocation(\"/a/path\", \"/another/path\"),\n\t\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/bee/path\"),\n\t\t\t),\n\t\t\tType: RpmPkg,\n\t\t},\n\t\t{\n\t\t\tLocations: file.NewLocationSet(\n\t\t\t\tfile.NewVirtualLocation(\"/c/path\", \"/another/path\"),\n\t\t\t\tfile.NewVirtualLocation(\"/d/path\", \"/another/path\"),\n\t\t\t),\n\t\t\tType: NpmPkg,\n\t\t},\n\t}\n\n\tfor i := range pkgs {\n\t\tp := &pkgs[i]\n\t\tp.SetID()\n\t}\n\n\tfixtureID := func(i int) string {\n\t\treturn string(pkgs[i].ID())\n\t}\n\n\ttests := []struct {\n\t\tname            string\n\t\texpectedIndexes expectedIndexes\n\t}{\n\t\t{\n\t\t\tname: \"vanilla-add\",\n\t\t\texpectedIndexes: expectedIndexes{\n\t\t\t\tbyType: map[Type]*strset.Set{\n\t\t\t\t\tRpmPkg: strset.New(fixtureID(0)),\n\t\t\t\t\tNpmPkg: strset.New(fixtureID(1)),\n\t\t\t\t},\n\t\t\t\tbyPath: map[string]*strset.Set{\n\t\t\t\t\t\"/another/path\": strset.New(fixtureID(0), fixtureID(1)),\n\t\t\t\t\t\"/a/path\":       strset.New(fixtureID(0)),\n\t\t\t\t\t\"/b/path\":       strset.New(fixtureID(0)),\n\t\t\t\t\t\"/bee/path\":     strset.New(fixtureID(0)),\n\t\t\t\t\t\"/c/path\":       strset.New(fixtureID(1)),\n\t\t\t\t\t\"/d/path\":       strset.New(fixtureID(1)),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := NewCollection(pkgs...)\n\t\t\tassertIndexes(t, c, test.expectedIndexes)\n\t\t})\n\t}\n}\n\nfunc assertIndexes(t *testing.T, c *Collection, expectedIndexes expectedIndexes) {\n\t// assert path index\n\tassert.Len(t, c.idsByPath, len(expectedIndexes.byPath), \"unexpected path index length\")\n\tfor path, expectedIds := range expectedIndexes.byPath {\n\t\tactualIds := strset.New()\n\t\tfor _, p := range c.PackagesByPath(path) {\n\t\t\tactualIds.Add(string(p.ID()))\n\t\t}\n\n\t\tif !expectedIds.IsEqual(actualIds) {\n\t\t\tt.Errorf(\"mismatched IDs for path=%q : %+v\", path, strset.SymmetricDifference(actualIds, expectedIds))\n\t\t}\n\t}\n\n\t// assert type index\n\tassert.Len(t, c.idsByType, len(expectedIndexes.byType), \"unexpected type index length\")\n\tfor ty, expectedIds := range expectedIndexes.byType {\n\t\tactualIds := strset.New()\n\t\tfor p := range c.Enumerate(ty) {\n\t\t\tactualIds.Add(string(p.ID()))\n\t\t}\n\n\t\tif !expectedIds.IsEqual(actualIds) {\n\t\t\tt.Errorf(\"mismatched IDs for type=%q : %+v\", ty, strset.SymmetricDifference(actualIds, expectedIds))\n\t\t}\n\t}\n}\n\nfunc TestCatalog_PathIndexDeduplicatesRealVsVirtualPaths(t *testing.T) {\n\tp1 := Package{\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/another/path\"),\n\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/b/path\"),\n\t\t),\n\t\tType: RpmPkg,\n\t\tName: \"Package-1\",\n\t}\n\n\tp2 := Package{\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/b/path\"),\n\t\t),\n\t\tType: RpmPkg,\n\t\tName: \"Package-2\",\n\t}\n\tp2Dup := Package{\n\t\tLocations: file.NewLocationSet(\n\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/another/path\"),\n\t\t\tfile.NewVirtualLocation(\"/b/path\", \"/c/path/b/dup\"),\n\t\t),\n\t\tType: RpmPkg,\n\t\tName: \"Package-2\",\n\t}\n\n\ttests := []struct {\n\t\tname  string\n\t\tpkgs  []Package\n\t\tpaths []string\n\t}{\n\t\t{\n\t\t\tname: \"multiple locations with shared path\",\n\t\t\tpkgs: []Package{p1},\n\t\t\tpaths: []string{\n\t\t\t\t\"/b/path\",\n\t\t\t\t\"/another/path\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"one location with shared path\",\n\t\t\tpkgs: []Package{p2},\n\t\t\tpaths: []string{\n\t\t\t\t\"/b/path\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"two instances with similar locations\",\n\t\t\tpkgs: []Package{p2, p2Dup},\n\t\t\tpaths: []string{\n\t\t\t\t\"/b/path\",\n\t\t\t\t\"/another/path\",\n\t\t\t\t\"/c/path/b/dup\", // this updated the path index on merge\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfor _, path := range test.paths {\n\t\t\t\tactualPackages := NewCollection(test.pkgs...).PackagesByPath(path)\n\t\t\t\trequire.Len(t, actualPackages, 1)\n\t\t\t}\n\t\t})\n\t}\n\n}\n\nfunc TestCatalog_MergeRecords(t *testing.T) {\n\tvar tests = []struct {\n\t\tname              string\n\t\tpkgs              []Package\n\t\texpectedLocations []file.Location\n\t\texpectedCPECount  int\n\t}{\n\t\t{\n\t\t\tname: \"multiple Locations with shared path\",\n\t\t\tpkgs: []Package{\n\t\t\t\t{\n\t\t\t\t\tCPEs: []cpe.CPE{cpe.Must(\"cpe:2.3:a:package:1:1:*:*:*:*:*:*:*\", cpe.GeneratedSource)},\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/b/path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"a\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"/another/path\",\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tType: RpmPkg,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tCPEs: []cpe.CPE{cpe.Must(\"cpe:2.3:a:package:2:2:*:*:*:*:*:*:*\", cpe.NVDDictionaryLookupSource)},\n\t\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\t\tfile.NewVirtualLocationFromCoordinates(\n\t\t\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\t\t\tRealPath:     \"/b/path\",\n\t\t\t\t\t\t\t\tFileSystemID: \"b\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"/another/path\",\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tType: RpmPkg,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedLocations: []file.Location{\n\t\t\t\tfile.NewVirtualLocationFromCoordinates(\n\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b/path\",\n\t\t\t\t\t\tFileSystemID: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t\"/another/path\",\n\t\t\t\t),\n\t\t\t\tfile.NewVirtualLocationFromCoordinates(\n\t\t\t\t\tfile.Coordinates{\n\t\t\t\t\t\tRealPath:     \"/b/path\",\n\t\t\t\t\t\tFileSystemID: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t\"/another/path\",\n\t\t\t\t),\n\t\t\t},\n\t\t\texpectedCPECount: 2,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tactual := NewCollection(tt.pkgs...).PackagesByPath(\"/b/path\")\n\t\t\trequire.Len(t, actual, 1)\n\t\t\tassert.Equal(t, tt.expectedLocations, actual[0].Locations.ToSlice())\n\t\t\trequire.Len(t, actual[0].CPEs, tt.expectedCPECount)\n\t\t})\n\t}\n}\n\nfunc TestCatalog_EnumerateNilCatalog(t *testing.T) {\n\tvar c *Collection\n\tassert.Empty(t, c.Enumerate())\n}\n\nfunc Test_idOrderedSet_add(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tinput    []artifact.ID\n\t\texpected []artifact.ID\n\t}{\n\t\t{\n\t\t\tname: \"elements deduplicated when added\",\n\t\t\tinput: []artifact.ID{\n\t\t\t\t\"1\", \"2\", \"3\", \"4\", \"1\", \"2\", \"3\", \"4\", \"1\", \"2\", \"3\", \"4\",\n\t\t\t},\n\t\t\texpected: []artifact.ID{\n\t\t\t\t\"1\", \"2\", \"3\", \"4\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"elements retain ordering when added\",\n\t\t\tinput: []artifact.ID{\n\t\t\t\t\"4\", \"3\", \"2\", \"1\",\n\t\t\t},\n\t\t\texpected: []artifact.ID{\n\t\t\t\t\"4\", \"3\", \"2\", \"1\",\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tvar s orderedIDSet\n\t\t\ts.add(tt.input...)\n\t\t\tassert.Equal(t, tt.expected, s.slice)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/conan.go",
    "content": "package pkg\n\n// ConanV1LockEntry represents a single \"node\" entry from a conan.lock V1 file.\ntype ConanV1LockEntry struct {\n\t// Ref is the package reference string in format name/version@user/channel\n\tRef string `json:\"ref\"`\n\n\t// PackageID is a unique package variant identifier computed from settings/options (static hash in Conan 1.x, can have collisions with complex dependency graphs)\n\tPackageID string `json:\"package_id,omitempty\"`\n\n\t// Prev is the previous lock entry reference for versioning\n\tPrev string `json:\"prev,omitempty\"`\n\n\t// Requires are the runtime package dependencies\n\tRequires []string `json:\"requires,omitempty\"`\n\n\t// BuildRequires are the build-time dependencies (e.g. cmake, compilers)\n\tBuildRequires []string `json:\"build_requires,omitempty\"`\n\n\t// PythonRequires are the Python dependencies needed for Conan recipes\n\tPythonRequires []string `json:\"py_requires,omitempty\"`\n\n\t// Options are package configuration options as key-value pairs (e.g. shared=True, fPIC=True)\n\tOptions KeyValues `json:\"options,omitempty\"`\n\n\t// Path is the filesystem path to the package in Conan cache\n\tPath string `json:\"path,omitempty\"`\n\n\t// Context is the build context information\n\tContext string `json:\"context,omitempty\"`\n}\n\n// ConanV2LockEntry represents a single \"node\" entry from a conan.lock V2 file.\ntype ConanV2LockEntry struct {\n\t// Ref is the package reference string in format name/version@user/channel\n\tRef string `json:\"ref\"`\n\n\t// PackageID is a unique package variant identifier (dynamic in Conan 2.0, more accurate than V1)\n\tPackageID string `json:\"packageID,omitempty\"`\n\n\t// Username is the Conan user/organization name\n\tUsername string `json:\"username,omitempty\"`\n\n\t// Channel is the Conan channel name indicating stability/purpose (e.g. stable, testing, experimental)\n\tChannel string `json:\"channel,omitempty\"`\n\n\t// RecipeRevision is a git-like revision hash (RREV) of the recipe\n\tRecipeRevision string `json:\"recipeRevision,omitempty\"`\n\n\t// PackageRevision is a git-like revision hash of the built binary package\n\tPackageRevision string `json:\"packageRevision,omitempty\"`\n\n\t// TimeStamp is when this package was built/locked\n\tTimeStamp string `json:\"timestamp,omitempty\"`\n}\n\n// ConanfileEntry represents a single \"Requires\" entry from a conanfile.txt.\ntype ConanfileEntry struct {\n\t// Ref is the package reference string in format name/version@user/channel\n\tRef string `mapstructure:\"ref\" json:\"ref\"`\n}\n\n// ConaninfoEntry represents a single \"full_requires\" entry from a conaninfo.txt.\ntype ConaninfoEntry struct {\n\t// Ref is the package reference string in format name/version@user/channel\n\tRef string `json:\"ref\"`\n\n\t// PackageID is a unique package variant identifier\n\tPackageID string `json:\"package_id,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/conda.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\n// CondaPathData represents metadata for a single file within a Conda package from the paths.json file.\ntype CondaPathData struct {\n\t// Path is the file path relative to the Conda environment root.\n\tPath string `json:\"_path\"`\n\n\t// PathType indicates the link type for the file (e.g., \"hardlink\", \"softlink\", \"directory\").\n\tPathType string `json:\"path_type\"`\n\n\t// SHA256 is the SHA-256 hash of the file contents.\n\tSHA256 string `json:\"sha256\"`\n\n\t// SHA256InPrefix is the SHA-256 hash of the file after prefix replacement during installation.\n\tSHA256InPrefix string `json:\"sha256_in_prefix\"`\n\n\t// SizeInBytes is the file size in bytes.\n\tSizeInBytes int64 `json:\"size_in_bytes\"`\n}\n\n// CondaPathsData represents the paths.json file structure from a Conda package containing file metadata.\ntype CondaPathsData struct {\n\t// PathsVersion is the schema version of the paths data format.\n\tPathsVersion int `json:\"paths_version\"`\n\n\t// Paths is the list of file metadata entries for all files in the package.\n\tPaths []CondaPathData `json:\"paths\"`\n}\n\n// CondaLink represents link metadata from a Conda package's link.json file describing package installation source.\ntype CondaLink struct {\n\t// Source is the original path where the package was extracted from cache.\n\tSource string `json:\"source\"`\n\n\t// Type indicates the link type (1 for hard link, 2 for soft link, 3 for copy).\n\tType int `json:\"type\"`\n}\n\n// CondaMetaPackage represents metadata for a Conda package extracted from the conda-meta/*.json files.\ntype CondaMetaPackage struct {\n\t// Arch is the target CPU architecture for the package (e.g., \"arm64\", \"x86_64\").\n\tArch string `json:\"arch,omitempty\"`\n\n\t// Name is the package name as found in the conda-meta JSON file.\n\tName string `json:\"name\"`\n\n\t// Version is the package version as found in the conda-meta JSON file.\n\tVersion string `json:\"version\"`\n\n\t// Build is the build string identifier (e.g., \"h90dfc92_1014\").\n\tBuild string `json:\"build\"`\n\n\t// BuildNumber is the sequential build number for this version.\n\tBuildNumber int `json:\"build_number\"`\n\n\t// Channel is the Conda channel URL where the package was retrieved from.\n\tChannel string `json:\"channel,omitempty\"`\n\n\t// Subdir is the subdirectory within the channel (e.g., \"osx-arm64\", \"linux-64\").\n\tSubdir string `json:\"subdir,omitempty\"`\n\n\t// Noarch indicates if the package is platform-independent (e.g., \"python\", \"generic\").\n\tNoarch string `json:\"noarch,omitempty\"`\n\n\t// License is the package license identifier.\n\tLicense string `json:\"license,omitempty\"`\n\n\t// LicenseFamily is the general license category (e.g., \"MIT\", \"Apache\", \"GPL\").\n\tLicenseFamily string `json:\"license_family,omitempty\"`\n\n\t// MD5 is the MD5 hash of the package archive.\n\tMD5 string `json:\"md5,omitempty\"`\n\n\t// SHA256 is the SHA-256 hash of the package archive.\n\tSHA256 string `json:\"sha256,omitempty\"`\n\n\t// Size is the package archive size in bytes.\n\tSize int64 `json:\"size,omitempty\"`\n\n\t// Timestamp is the Unix timestamp when the package was built.\n\tTimestamp int64 `json:\"timestamp,omitempty\"`\n\n\t// Filename is the original package archive filename (e.g., \"zlib-1.2.11-h90dfc92_1014.tar.bz2\").\n\tFilename string `json:\"fn,omitempty\"`\n\n\t// URL is the full download URL for the package archive.\n\tURL string `json:\"url,omitempty\"`\n\n\t// ExtractedPackageDir is the local cache directory where the package was extracted.\n\tExtractedPackageDir string `json:\"extracted_package_dir,omitempty\"`\n\n\t// Depends is the list of runtime dependencies with version constraints.\n\tDepends []string `json:\"depends,omitempty\"`\n\n\t// Files is the list of files installed by this package.\n\tFiles []string `json:\"files,omitempty\"`\n\n\t// PathsData contains detailed file metadata from the paths.json file.\n\tPathsData *CondaPathsData `json:\"paths_data,omitempty\"`\n\n\t// Link contains installation source metadata from the link.json file.\n\tLink *CondaLink `json:\"link,omitempty\"`\n}\n\nfunc (m CondaMetaPackage) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f != \"\" {\n\t\t\ts.Add(f)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/dart.go",
    "content": "package pkg\n\n// DartPubspecLockEntry is a struct that represents a single entry found in the \"packages\" section in a Dart pubspec.lock file.\ntype DartPubspecLockEntry struct {\n\t// Name is the package name as found in the pubspec.lock file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the pubspec.lock file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// HostedURL is the URL of the package repository for hosted packages (typically pub.dev, but can be custom repository identified by hosted-url). When PUB_HOSTED_URL environment variable changes, lockfile tracks the source.\n\tHostedURL string `mapstructure:\"hosted_url\" json:\"hosted_url,omitempty\"`\n\n\t// VcsURL is the URL of the VCS repository for git/path dependencies (for packages fetched from version control systems like Git)\n\tVcsURL string `mapstructure:\"vcs_url\" json:\"vcs_url,omitempty\"`\n}\n\n// DartPubspec is a struct that represents a package described in a pubspec.yaml file\ntype DartPubspec struct {\n\t// Homepage is the package homepage URL\n\tHomepage string `mapstructure:\"homepage\" json:\"homepage,omitempty\"`\n\n\t// Repository is the source code repository URL\n\tRepository string `mapstructure:\"repository\" json:\"repository,omitempty\"`\n\n\t// Documentation is the documentation site URL\n\tDocumentation string `mapstructure:\"documentation\" json:\"documentation,omitempty\"`\n\n\t// PublishTo is the package repository to publish to, or \"none\" to prevent accidental publishing\n\tPublishTo string `mapstructure:\"publish_to\" json:\"publish_to,omitempty\"`\n\n\t// Environment is SDK version constraints for Dart and Flutter\n\tEnvironment *DartPubspecEnvironment `mapstructure:\"environment\" json:\"environment,omitempty\"`\n\n\t// Platforms are the supported platforms (Android, iOS, web, etc.)\n\tPlatforms []string `mapstructure:\"platforms\" json:\"platforms,omitempty\"`\n\n\t// IgnoredAdvisories are the security advisories to explicitly ignore for this package\n\tIgnoredAdvisories []string `mapstructure:\"ignored_advisories\" json:\"ignored_advisories,omitempty\"`\n}\n\n// DartPubspecEnvironment represents SDK version constraints from the environment section of pubspec.yaml.\ntype DartPubspecEnvironment struct {\n\t// SDK is the Dart SDK version constraint (e.g. \">=2.12.0 <3.0.0\")\n\tSDK string `mapstructure:\"sdk\" json:\"sdk,omitempty\"`\n\n\t// Flutter is the Flutter SDK version constraint if this is a Flutter package\n\tFlutter string `mapstructure:\"flutter\" json:\"flutter,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/dotnet.go",
    "content": "package pkg\n\n// DotnetDepsEntry is a struct that represents a single entry found in the \"libraries\" section in a .NET [*.]deps.json file.\ntype DotnetDepsEntry struct {\n\t// Name is the package name as found in the deps.json file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the deps.json file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// Path is the relative path to the package within the deps structure (e.g. \"app.metrics/3.0.0\")\n\tPath string `mapstructure:\"path\" json:\"path\"`\n\n\t// Sha512 is the SHA-512 hash of the NuGet package content WITHOUT the signed content for verification (won't match hash from NuGet API or manual calculation of .nupkg file)\n\tSha512 string `mapstructure:\"sha512\" json:\"sha512\"`\n\n\t// HashPath is the relative path to the .nupkg.sha512 hash file (e.g. \"app.metrics.3.0.0.nupkg.sha512\")\n\tHashPath string `mapstructure:\"hashPath\" json:\"hashPath\"`\n\n\t// Type is type of entry could be package or project for internal refs\n\tType string `mapstructure:\"type\" json:\"type,omitempty\"`\n\n\t// Executables are the map of .NET Portable Executable files within this package with their version resources\n\tExecutables map[string]DotnetPortableExecutableEntry `json:\"executables,omitempty\"`\n}\n\n// DotnetPackagesLockEntry is a struct that represents a single entry found in the \"dependencies\" section in a .NET packages.lock.json file.\ntype DotnetPackagesLockEntry struct {\n\t// Name is the package name as found in the packages.lock.json file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the packages.lock.json file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// ContentHash is the hash of the package content for verification\n\tContentHash string `mapstructure:\"contentHash\" json:\"contentHash\"`\n\n\t// Type is the dependency type indicating how this dependency was added (Direct=explicit in project file, Transitive=pulled in by another package, Project=project reference)\n\tType string `mapstructure:\"type\" json:\"type\"`\n}\n\n// DotnetPortableExecutableEntry is a struct that represents a single entry found within \"VersionResources\" section of a .NET Portable Executable binary file.\ntype DotnetPortableExecutableEntry struct {\n\t// AssemblyVersion is the .NET assembly version number (strong-named version)\n\tAssemblyVersion string `json:\"assemblyVersion\"`\n\n\t// LegalCopyright is the copyright notice string\n\tLegalCopyright string `json:\"legalCopyright\"`\n\n\t// Comments are additional comments or description embedded in PE resources\n\tComments string `json:\"comments,omitempty\"`\n\n\t// InternalName is the internal name of the file\n\tInternalName string `json:\"internalName,omitempty\"`\n\n\t// CompanyName is the company that produced the file\n\tCompanyName string `json:\"companyName\"`\n\n\t// ProductName is the name of the product this file is part of\n\tProductName string `json:\"productName\"`\n\n\t// ProductVersion is the version of the product (may differ from AssemblyVersion)\n\tProductVersion string `json:\"productVersion\"`\n}\n"
  },
  {
    "path": "syft/pkg/dpkg.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nconst DpkgDBGlob = \"**/var/lib/dpkg/{status,status.d/**}\"\n\nvar _ FileOwner = (*DpkgDBEntry)(nil)\n\n// DpkgArchiveEntry represents package metadata extracted from a .deb archive file.\ntype DpkgArchiveEntry DpkgDBEntry\n\n// DpkgDBEntry represents all captured data for a Debian package DB entry; available fields are described\n// at http://manpages.ubuntu.com/manpages/xenial/man1/dpkg-query.1.html in the --showformat section.\n// Additional information about how these fields are used can be found at\n//   - https://www.debian.org/doc/debian-policy/ch-controlfields.html\n//   - https://www.debian.org/doc/debian-policy/ch-relationships.html\n//   - https://www.debian.org/doc/debian-policy/ch-binary.html#s-virtual-pkg\n//   - https://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual\ntype DpkgDBEntry struct {\n\t// Package is the package name as found in the status file\n\tPackage string `json:\"package\"`\n\n\t// Source is the source package name this binary was built from (one source can produce multiple binary packages)\n\tSource string `json:\"source\" cyclonedx:\"source\"`\n\n\t// Version is the binary package version as found in the status file\n\tVersion string `json:\"version\"`\n\n\t// SourceVersion is the source package version (may differ from binary version when binNMU rebuilds occur)\n\tSourceVersion string `json:\"sourceVersion\" cyclonedx:\"sourceVersion\"`\n\n\t// Architecture is the target architecture per Debian spec (specific arch like amd64/arm64, wildcard like any, architecture-independent \"all\", or \"source\" for source packages)\n\tArchitecture string `json:\"architecture\"`\n\n\t// Maintainer is the package maintainer's name and email in RFC822 format (name must come first, then email in angle brackets)\n\tMaintainer string `json:\"maintainer\"`\n\n\t// InstalledSize is the total size of installed files in kilobytes\n\tInstalledSize int `json:\"installedSize\" cyclonedx:\"installedSize\"`\n\n\t// Description is a human-readable package description with synopsis (first line) and long description (multiline format)\n\tDescription string `hash:\"ignore\" json:\"-\"`\n\n\t// Provides are the virtual packages provided by this package (allows other packages to depend on capabilities. Can include versioned provides like \"libdigest-md5-perl (= 2.55.01)\")\n\tProvides []string `json:\"provides,omitempty\"`\n\n\t// Depends are the packages required for this package to function (will not be installed unless these requirements are met, creates strict ordering constraint)\n\tDepends []string `json:\"depends,omitempty\"`\n\n\t// PreDepends are the packages that must be installed and configured BEFORE even starting installation of this package (stronger than Depends, discouraged unless absolutely necessary as it adds strict constraints for apt)\n\tPreDepends []string `json:\"preDepends,omitempty\"`\n\n\t// Files are the files installed by this package\n\tFiles []DpkgFileRecord `json:\"files\"`\n}\n\n// DpkgFileRecord represents a single file attributed to a debian package.\ntype DpkgFileRecord struct {\n\t// Path is the file path relative to the filesystem root\n\tPath string `json:\"path\"`\n\n\t// Digest is the file content hash (typically MD5 for dpkg compatibility with legacy systems)\n\tDigest *file.Digest `json:\"digest,omitempty\"`\n\n\t// IsConfigFile is whether this file is marked as a configuration file (dpkg will preserve user modifications during upgrades)\n\tIsConfigFile bool `json:\"isConfigFile\"`\n}\n\nfunc (m DpkgDBEntry) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn\n}\n"
  },
  {
    "path": "syft/pkg/elixir.go",
    "content": "package pkg\n\n// ElixirMixLockEntry is a struct that represents a single entry in a mix.lock file\ntype ElixirMixLockEntry struct {\n\t// Name is the package name as found in the mix.lock file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the mix.lock file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method, replaces deprecated inner checksum)\n\tPkgHash string `mapstructure:\"pkgHash\" json:\"pkgHash\"`\n\n\t// PkgHashExt is the extended package hash format (inner checksum is deprecated - SHA-256 of concatenated file contents excluding CHECKSUM file, now replaced by outer checksum)\n\tPkgHashExt string `mapstructure:\"pkgHashExt\" json:\"pkgHashExt\"`\n}\n"
  },
  {
    "path": "syft/pkg/erlang.go",
    "content": "package pkg\n\n// ErlangRebarLockEntry represents a single package entry from the \"deps\" section within an Erlang rebar.lock file.\ntype ErlangRebarLockEntry struct {\n\t// Name is the package name as found in the rebar.lock file\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the rebar.lock file\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// PkgHash is the outer checksum (SHA-256) of the entire Hex package tarball for integrity verification (preferred method over deprecated inner checksum)\n\tPkgHash string `mapstructure:\"pkgHash\" json:\"pkgHash\"`\n\n\t// PkgHashExt is the extended package hash format (inner checksum deprecated - was SHA-256 of concatenated file contents)\n\tPkgHashExt string `mapstructure:\"pkgHashExt\" json:\"pkgHashExt\"`\n}\n"
  },
  {
    "path": "syft/pkg/evidence.go",
    "content": "package pkg\n\nimport \"github.com/anchore/syft/internal/evidence\"\n\nconst (\n\tEvidenceAnnotationKey        = evidence.AnnotationKey\n\tPrimaryEvidenceAnnotation    = evidence.PrimaryAnnotation\n\tSupportingEvidenceAnnotation = evidence.SupportingAnnotation\n)\n"
  },
  {
    "path": "syft/pkg/file_owner.go",
    "content": "package pkg\n\n// FileOwner is the interface that wraps OwnedFiles method.\n//\n// OwnedFiles returns a list of files that a piece of\n// package Metadata indicates are owned by the package.\ntype FileOwner interface {\n\tOwnedFiles() []string\n}\n"
  },
  {
    "path": "syft/pkg/gguf.go",
    "content": "package pkg\n\n// GGUFFileHeader represents metadata extracted from a GGUF (GPT-Generated Unified Format) model file.\n// GGUF is a binary file format used for storing model weights for the GGML library, designed for fast\n// loading and saving of models, particularly quantized large language models.\n// The Model Name, License, and Version fields have all been lifted up to be on the syft Package.\ntype GGUFFileHeader struct {\n\t// GGUFVersion is the GGUF format version (e.g., 3)\n\tGGUFVersion uint32 `json:\"ggufVersion\" cyclonedx:\"ggufVersion\"`\n\n\t// FileSize is the size of the GGUF file in bytes (best-effort if available from resolver)\n\tFileSize int64 `json:\"fileSize,omitempty\" cyclonedx:\"fileSize\"`\n\n\t// Architecture is the model architecture (from general.architecture, e.g., \"qwen3moe\", \"llama\")\n\tArchitecture string `json:\"architecture,omitempty\" cyclonedx:\"architecture\"`\n\n\t// Quantization is the quantization type (e.g., \"IQ4_NL\", \"Q4_K_M\")\n\tQuantization string `json:\"quantization,omitempty\" cyclonedx:\"quantization\"`\n\n\t// Parameters is the number of model parameters (if present in header)\n\tParameters uint64 `json:\"parameters,omitempty\" cyclonedx:\"parameters\"`\n\n\t// TensorCount is the number of tensors in the model\n\tTensorCount uint64 `json:\"tensorCount\" cyclonedx:\"tensorCount\"`\n\n\t// RemainingKeyValues contains the remaining key-value pairs from the GGUF header that are not already\n\t// represented as typed fields above. This preserves additional metadata fields for reference\n\t// (namespaced with general.*, llama.*, etc.) while avoiding duplication.\n\tRemainingKeyValues map[string]interface{} `json:\"header,omitempty\" cyclonedx:\"header\"`\n\n\t// MetadataKeyValuesHash is a xx64 hash of all key-value pairs from the GGUF header metadata.\n\t// This hash is computed over the complete header metadata (including the fields extracted\n\t// into typed fields above) and provides a stable identifier for the model configuration\n\t// across different file locations or remotes. It allows matching identical models even\n\t// when stored in different repositories or with different filenames.\n\tMetadataKeyValuesHash string `json:\"metadataHash,omitempty\" cyclonedx:\"metadataHash\"`\n\n\t// Parts contains headers from additional GGUF files that were merged\n\t// into this package during post-processing (e.g., from OCI layers without model names).\n\tParts []GGUFFileHeader `json:\"parts,omitempty\" cyclonedx:\"parts\"`\n}\n"
  },
  {
    "path": "syft/pkg/github.go",
    "content": "package pkg\n\n// GitHubActionsUseStatement represents a single 'uses' statement in a GitHub Actions workflow file referencing an action or reusable workflow.\ntype GitHubActionsUseStatement struct {\n\t// Value is the action reference (e.g. \"actions/checkout@v3\")\n\tValue string `json:\"value\"`\n\n\t// Comment is the inline comment associated with this uses statement\n\tComment string `json:\"comment,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/golang.go",
    "content": "package pkg\n\n// GolangBinaryBuildinfoEntry represents all captured data for a Golang binary\ntype GolangBinaryBuildinfoEntry struct {\n\t// BuildSettings contains the Go build settings and flags used to compile the binary (e.g., GOARCH, GOOS, CGO_ENABLED).\n\tBuildSettings KeyValues `json:\"goBuildSettings,omitempty\" cyclonedx:\"goBuildSettings\"`\n\n\t// GoCompiledVersion is the version of Go used to compile the binary.\n\tGoCompiledVersion string `json:\"goCompiledVersion\" cyclonedx:\"goCompiledVersion\"`\n\n\t// Architecture is the target CPU architecture for the binary (extracted from GOARCH build setting).\n\tArchitecture string `json:\"architecture\" cyclonedx:\"architecture\"`\n\n\t// H1Digest is the Go module hash in h1: format for the main module from go.sum.\n\tH1Digest string `json:\"h1Digest,omitempty\" cyclonedx:\"h1Digest\"`\n\n\t// MainModule is the main module path for the binary (e.g., \"github.com/anchore/syft\").\n\tMainModule string `json:\"mainModule,omitempty\" cyclonedx:\"mainModule\"`\n\n\t// GoCryptoSettings contains FIPS and cryptographic configuration settings if present.\n\tGoCryptoSettings []string `json:\"goCryptoSettings,omitempty\" cyclonedx:\"goCryptoSettings\"`\n\n\t// GoExperiments lists experimental Go features enabled during compilation (e.g., \"arenas\", \"cgocheck2\").\n\tGoExperiments []string `json:\"goExperiments,omitempty\" cyclonedx:\"goExperiments\"`\n}\n\n// GolangModuleEntry represents all captured data for a Golang source scan with go.mod/go.sum\ntype GolangModuleEntry struct {\n\t// H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\n\tH1Digest string `json:\"h1Digest,omitempty\" cyclonedx:\"h1Digest\"`\n}\n\n// GolangSourceEntry represents all captured data for a Golang package found through source analysis\ntype GolangSourceEntry struct {\n\t// H1Digest is the Go module hash in h1: format from go.sum for verifying module contents.\n\tH1Digest string `json:\"h1Digest,omitempty\" cyclonedx:\"h1Digest\"`\n\n\t// OperatingSystem is the target OS for build constraints (e.g., \"linux\", \"darwin\", \"windows\").\n\tOperatingSystem string `json:\"os,omitempty\" cyclonedx:\"os\"`\n\n\t// Architecture is the target CPU architecture for build constraints (e.g., \"amd64\", \"arm64\").\n\tArchitecture string `json:\"architecture,omitempty\" cyclonedx:\"architecture\"`\n\n\t// BuildTags are the build tags used to conditionally compile code (e.g., \"integration,debug\").\n\tBuildTags string `json:\"buildTags,omitempty\" cyclonedx:\"buildTags\"`\n\n\t// CgoEnabled indicates whether CGO was enabled for this package.\n\tCgoEnabled bool `json:\"cgoEnabled\" cyclonedx:\"cgoEnabled\"`\n}\n"
  },
  {
    "path": "syft/pkg/hackage.go",
    "content": "package pkg\n\n// HackageStackYamlLockEntry represents a single entry from the \"packages\" section of a stack.yaml.lock file.\ntype HackageStackYamlLockEntry struct {\n\t// PkgHash is the package content hash for verification\n\tPkgHash string `mapstructure:\"pkgHash\" json:\"pkgHash,omitempty\"`\n\n\t// SnapshotURL is the URL to the Stack snapshot this package came from\n\tSnapshotURL string `mapstructure:\"snapshotURL\" json:\"snapshotURL,omitempty\"`\n}\n\n// HackageStackYamlEntry represents a single entry from the \"extra-deps\" section of a stack.yaml file.\ntype HackageStackYamlEntry struct {\n\t// PkgHash is the package content hash for verification\n\tPkgHash string `mapstructure:\"pkgHash\" json:\"pkgHash,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/homebrew.go",
    "content": "package pkg\n\n// HomebrewFormula represents metadata about a Homebrew formula package extracted from formula JSON files.\ntype HomebrewFormula struct {\n\t// Tap is Homebrew tap this formula belongs to (e.g. \"homebrew/core\")\n\tTap string `json:\"tap,omitempty\"`\n\n\t// Homepage is the upstream project homepage URL\n\tHomepage string `json:\"homepage,omitempty\"`\n\n\t// Description is a human-readable formula description\n\tDescription string `json:\"description,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/java.go",
    "content": "package pkg\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar jenkinsPluginPomPropertiesGroupIDs = []string{\n\t\"io.jenkins.plugins\",\n\t\"org.jenkins.plugins\",\n\t\"org.jenkins-ci.plugins\",\n\t\"io.jenkins-ci.plugins\",\n\t\"com.cloudbees.jenkins.plugins\",\n}\n\n// JavaVMInstallation represents a Java Virtual Machine installation discovered on the system with its release information and file list.\ntype JavaVMInstallation struct {\n\t// Release is JVM release information and version details\n\tRelease JavaVMRelease `json:\"release\"`\n\n\t// Files are the list of files that are part of this JVM installation\n\tFiles []string `json:\"files\"`\n}\n\nfunc (m JavaVMInstallation) OwnedFiles() []string {\n\treturn m.Files\n}\n\n// JavaVMRelease represents JVM version and build information extracted from the release file in a Java installation.\ntype JavaVMRelease struct {\n\t// Implementor is extracted with the `java.vendor` JVM property\n\tImplementor string `mapstructure:\"IMPLEMENTOR,omitempty\" json:\"implementor,omitempty\"`\n\n\t// ImplementorVersion is extracted with the `java.vendor.version` JVM property\n\tImplementorVersion string `mapstructure:\"IMPLEMENTOR_VERSION,omitempty\" json:\"implementorVersion,omitempty\"`\n\n\t// JavaRuntimeVersion is extracted from the 'java.runtime.version' JVM property\n\tJavaRuntimeVersion string `mapstructure:\"JAVA_RUNTIME_VERSION,omitempty\" json:\"javaRuntimeVersion,omitempty\"`\n\n\t// JavaVersion matches that from `java -version` command output\n\tJavaVersion string `mapstructure:\"JAVA_VERSION,omitempty\" json:\"javaVersion,omitempty\"`\n\n\t// JavaVersionDate is extracted from the 'java.version.date' JVM property\n\tJavaVersionDate string `mapstructure:\"JAVA_VERSION_DATE,omitempty\" json:\"javaVersionDate,omitempty\"`\n\n\t// Libc can either be 'glibc' or 'musl'\n\tLibc string `mapstructure:\"LIBC,omitempty\" json:\"libc,omitempty\"`\n\n\t// Modules is a list of JVM modules that are packaged\n\tModules []string `mapstructure:\"MODULES,omitempty\" json:\"modules,omitempty\"`\n\n\t// OsArch is the target CPU architecture\n\tOsArch string `mapstructure:\"OS_ARCH,omitempty\" json:\"osArch,omitempty\"`\n\n\t// OsName is the name of the target runtime operating system environment\n\tOsName string `mapstructure:\"OS_NAME,omitempty\" json:\"osName,omitempty\"`\n\n\t// OsVersion is the version of the target runtime operating system environment\n\tOsVersion string `mapstructure:\"OS_VERSION,omitempty\" json:\"osVersion,omitempty\"`\n\n\t// Source refers to the origin repository of OpenJDK source\n\tSource string `mapstructure:\"SOURCE,omitempty\" json:\"source,omitempty\"`\n\n\t// BuildSource Git SHA of the build repository\n\tBuildSource string `mapstructure:\"BUILD_SOURCE,omitempty\" json:\"buildSource,omitempty\"`\n\n\t// BuildSourceRepo refers to rhe repository URL for the build source\n\tBuildSourceRepo string `mapstructure:\"BUILD_SOURCE_REPO,omitempty\" json:\"buildSourceRepo,omitempty\"`\n\n\t// SourceRepo refers to the OpenJDK repository URL\n\tSourceRepo string `mapstructure:\"SOURCE_REPO,omitempty\" json:\"sourceRepo,omitempty\"`\n\n\t// FullVersion is extracted from the 'java.runtime.version' JVM property\n\tFullVersion string `mapstructure:\"FULL_VERSION,omitempty\" json:\"fullVersion,omitempty\"`\n\n\t// SemanticVersion is derived from the OpenJDK version\n\tSemanticVersion string `mapstructure:\"SEMANTIC_VERSION,omitempty\" json:\"semanticVersion,omitempty\"`\n\n\t// BuildInfo contains additional build information\n\tBuildInfo string `mapstructure:\"BUILD_INFO,omitempty\" json:\"buildInfo,omitempty\"`\n\n\t// JvmVariant specifies the JVM variant (e.g., Hotspot or OpenJ9)\n\tJvmVariant string `mapstructure:\"JVM_VARIANT,omitempty\" json:\"jvmVariant,omitempty\"`\n\n\t// JvmVersion is extracted from the 'java.vm.version' JVM property\n\tJvmVersion string `mapstructure:\"JVM_VERSION,omitempty\" json:\"jvmVersion,omitempty\"`\n\n\t// ImageType can be 'JDK' or 'JRE'\n\tImageType string `mapstructure:\"IMAGE_TYPE,omitempty\" json:\"imageType,omitempty\"`\n\n\t// BuildType can be 'commercial' (used in some older oracle JDK distributions)\n\tBuildType string `mapstructure:\"BUILD_TYPE,omitempty\" json:\"buildType,omitempty\"`\n}\n\n// JavaArchive encapsulates all Java ecosystem metadata for a package as well as an (optional) parent relationship.\ntype JavaArchive struct {\n\t// VirtualPath is path within the archive hierarchy, where nested entries are delimited with ':' (for nested JARs)\n\tVirtualPath string `json:\"virtualPath\" cyclonedx:\"virtualPath\"`\n\n\t// Manifest is parsed META-INF/MANIFEST.MF contents\n\tManifest *JavaManifest `mapstructure:\"Manifest\" json:\"manifest,omitempty\"`\n\n\t// PomProperties is parsed pom.properties file contents\n\tPomProperties *JavaPomProperties `mapstructure:\"PomProperties\" json:\"pomProperties,omitempty\" cyclonedx:\"-\"`\n\n\t// PomProject is parsed pom.xml file contents\n\tPomProject *JavaPomProject `mapstructure:\"PomProject\" json:\"pomProject,omitempty\"`\n\n\t// ArchiveDigests is cryptographic hashes of the archive file\n\tArchiveDigests []file.Digest `hash:\"ignore\" json:\"digest,omitempty\"`\n\n\t// Parent is reference to parent package (for nested archives)\n\tParent *Package `hash:\"ignore\" json:\"-\"`\n}\n\n// JavaPomProperties represents the fields of interest extracted from a Java archive's pom.properties file.\ntype JavaPomProperties struct {\n\t// Path is path to the pom.properties file within the archive\n\tPath string `mapstructure:\"path\" json:\"path\"`\n\n\t// Name is the project name\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// GroupID is Maven group identifier uniquely identifying the project across all projects (follows reversed domain name convention like com.company.project)\n\tGroupID string `mapstructure:\"groupId\" json:\"groupId\" cyclonedx:\"groupID\"`\n\n\t// ArtifactID is Maven artifact identifier, the name of the jar/artifact (unique within the groupId scope)\n\tArtifactID string `mapstructure:\"artifactId\" json:\"artifactId\" cyclonedx:\"artifactID\"`\n\n\t// Version is artifact version\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// Scope is dependency scope determining when dependency is available (compile=default all phases, test=test compilation/execution only, runtime=runtime and test not compile, provided=expected from JDK or container)\n\tScope string `mapstructure:\"scope\" json:\"scope,omitempty\"`\n\n\t// Extra is additional custom properties not in standard Maven coordinates\n\tExtra map[string]string `mapstructure:\",remain\" json:\"extraFields,omitempty\"`\n}\n\n// JavaPomProject represents fields of interest extracted from a Java archive's pom.xml file. See https://maven.apache.org/ref/3.6.3/maven-model/maven.html for more details.\ntype JavaPomProject struct {\n\t// Path is path to the pom.xml file within the archive\n\tPath string `json:\"path\"`\n\n\t// Parent is the parent POM reference for inheritance (child POMs inherit configuration from parent)\n\tParent *JavaPomParent `json:\"parent,omitempty\"`\n\n\t// GroupID is Maven group identifier (reversed domain name like org.apache.maven)\n\tGroupID string `json:\"groupId\"`\n\n\t// ArtifactID is Maven artifact identifier (project name)\n\tArtifactID string `json:\"artifactId\"`\n\n\t// Version is project version (together with groupId and artifactId forms Maven coordinates groupId:artifactId:version)\n\tVersion string `json:\"version\"`\n\n\t// Name is a human-readable project name (displayed in Maven-generated documentation)\n\tName string `json:\"name\"`\n\n\t// Description is detailed project description\n\tDescription string `json:\"description,omitempty\"`\n\n\t// URL is the project URL (typically project website or repository)\n\tURL string `json:\"url,omitempty\"`\n}\n\n// JavaPomParent contains the fields within the <parent> tag in a pom.xml file\ntype JavaPomParent struct {\n\t// GroupID is the parent Maven group identifier\n\tGroupID string `json:\"groupId\"`\n\n\t// ArtifactID is the parent Maven artifact identifier\n\tArtifactID string `json:\"artifactId\"`\n\n\t// Version is the parent version (child inherits configuration from this specific version of parent POM)\n\tVersion string `json:\"version\"`\n}\n\n// PkgTypeIndicated returns the package Type indicated by the data contained in the JavaPomProperties.\nfunc (p JavaPomProperties) PkgTypeIndicated() Type {\n\tif internal.HasAnyOfPrefixes(p.GroupID, jenkinsPluginPomPropertiesGroupIDs...) || strings.Contains(p.GroupID, \".jenkins.plugin\") {\n\t\treturn JenkinsPluginPkg\n\t}\n\n\treturn JavaPkg\n}\n\n// JavaManifest represents the fields of interest extracted from a Java archive's META-INF/MANIFEST.MF file.\ntype JavaManifest struct {\n\t// Main is main manifest attributes as key-value pairs\n\tMain KeyValues `json:\"main,omitempty\"`\n\n\t// Sections are the named sections from the manifest (e.g. per-entry attributes)\n\tSections []KeyValues `json:\"sections,omitempty\"`\n}\n\ntype unmarshalJavaManifest JavaManifest\n\ntype legacyJavaManifest struct {\n\tMain          map[string]string            `json:\"main\"`\n\tNamedSections map[string]map[string]string `json:\"namedSections\"`\n}\n\nfunc (m *JavaManifest) UnmarshalJSON(b []byte) error {\n\tvar either map[string]any\n\terr := json.Unmarshal(b, &either)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not unmarshal java manifest: %w\", err)\n\t}\n\tif _, ok := either[\"namedSections\"]; ok {\n\t\tvar lm legacyJavaManifest\n\t\tif err = json.Unmarshal(b, &lm); err != nil {\n\t\t\treturn fmt.Errorf(\"could not unmarshal java manifest: %w\", err)\n\t\t}\n\t\t*m = lm.toNewManifest()\n\t\treturn nil\n\t}\n\tvar jm unmarshalJavaManifest\n\terr = json.Unmarshal(b, &jm)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not unmarshal java manifest: %w\", err)\n\t}\n\t*m = JavaManifest(jm)\n\treturn nil\n}\n\nfunc (lm legacyJavaManifest) toNewManifest() JavaManifest {\n\tvar result JavaManifest\n\tresult.Main = keyValuesFromMap(lm.Main)\n\tvar sectionNames []string\n\tfor k := range lm.NamedSections {\n\t\tsectionNames = append(sectionNames, k)\n\t}\n\tsort.Strings(sectionNames)\n\tvar sections []KeyValues\n\tfor _, name := range sectionNames {\n\t\tsection := KeyValues{\n\t\t\tKeyValue{\n\t\t\t\tKey:   \"Name\",\n\t\t\t\tValue: name,\n\t\t\t},\n\t\t}\n\t\tsection = append(section, keyValuesFromMap(lm.NamedSections[name])...)\n\t\tsections = append(sections, section)\n\t}\n\tresult.Sections = sections\n\treturn result\n}\n\nfunc (m JavaManifest) Section(name string) KeyValues {\n\tfor _, section := range m.Sections {\n\t\tif sectionName, ok := section.Get(\"Name\"); ok && sectionName == name {\n\t\t\treturn section\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/java_test.go",
    "content": "package pkg\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestPomProperties_PkgTypeIndicated(t *testing.T) {\n\tcases := []struct {\n\t\tname          string\n\t\tpomProperties JavaPomProperties\n\t\texpectedType  Type\n\t}{\n\t\t{\n\t\t\tname: \"regular Java package\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"some group ID\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JavaPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"cloudbees jenkins plugin\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins.io plugin\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"io.jenkins.plugins\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins-ci.io plugin\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"io.jenkins-ci.plugins\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins-ci.org plugin\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"org.jenkins-ci.plugins\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins.org plugin\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"org.jenkins.plugins\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins plugin prefix\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"com.cloudbees.jenkins.plugins.bluesteel\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t\t{\n\t\t\tname: \"jenkins.plugin somewhere in group id\",\n\t\t\tpomProperties: JavaPomProperties{\n\t\t\t\tPath:       \"some path\",\n\t\t\t\tName:       \"some name\",\n\t\t\t\tGroupID:    \"org.wagoodman.jenkins.plugins.something\",\n\t\t\t\tArtifactID: \"some artifact ID\",\n\t\t\t\tVersion:    \"1\",\n\t\t\t},\n\t\t\texpectedType: JenkinsPluginPkg,\n\t\t},\n\t}\n\n\tfor _, tc := range cases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tactual := tc.pomProperties.PkgTypeIndicated()\n\t\t\tassert.Equal(t, tc.expectedType, actual)\n\t\t})\n\t}\n}\n\nfunc Test_legacyJavaManifest_toNewManifest(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tlm   legacyJavaManifest\n\t\twant JavaManifest\n\t}{\n\t\t{\n\t\t\tname: \"empty\",\n\t\t\tlm:   legacyJavaManifest{},\n\t\t\twant: JavaManifest{},\n\t\t},\n\t\t{\n\t\t\tname: \"main sections are sorted\",\n\t\t\tlm: legacyJavaManifest{\n\t\t\t\tMain: map[string]string{\n\t\t\t\t\t\"a key\": \"a value\",\n\t\t\t\t\t\"b key\": \"b value\",\n\t\t\t\t\t\"c key\": \"c value\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: JavaManifest{Main: KeyValues{\n\t\t\t\t{\n\t\t\t\t\tKey:   \"a key\",\n\t\t\t\t\tValue: \"a value\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   \"b key\",\n\t\t\t\t\tValue: \"b value\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   \"c key\",\n\t\t\t\t\tValue: \"c value\",\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tname: \"named sections have their name in the result\",\n\t\t\tlm: legacyJavaManifest{\n\t\t\t\tNamedSections: map[string]map[string]string{\n\t\t\t\t\t\"a section\": {\n\t\t\t\t\t\t\"a key\": \"a value\",\n\t\t\t\t\t\t\"b key\": \"b value\",\n\t\t\t\t\t\t\"c key\": \"c value\",\n\t\t\t\t\t},\n\t\t\t\t\t\"b section\": {\n\t\t\t\t\t\t\"d key\": \"d value\",\n\t\t\t\t\t\t\"e key\": \"e value\",\n\t\t\t\t\t\t\"f key\": \"f value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: JavaManifest{Sections: []KeyValues{\n\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\tValue: \"a section\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"a key\",\n\t\t\t\t\t\tValue: \"a value\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"b key\",\n\t\t\t\t\t\tValue: \"b value\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"c key\",\n\t\t\t\t\t\tValue: \"c value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"Name\",\n\t\t\t\t\t\tValue: \"b section\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"d key\",\n\t\t\t\t\t\tValue: \"d value\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"e key\",\n\t\t\t\t\t\tValue: \"e value\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tKey:   \"f key\",\n\t\t\t\t\t\tValue: \"f value\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif diff := cmp.Diff(tt.want, tt.lm.toNewManifest()); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected diff in manifest (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/key_value.go",
    "content": "package pkg\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"sort\"\n)\n\n// KeyValue represents a single key-value pair.\ntype KeyValue struct {\n\t// Key is the key name\n\tKey string `json:\"key\"`\n\n\t// Value is the value associated with the key\n\tValue string `json:\"value\"`\n}\n\n// KeyValues represents an ordered collection of key-value pairs that preserves insertion order.\ntype KeyValues []KeyValue\n\nfunc (k KeyValues) Get(key string) (string, bool) {\n\tfor _, kv := range k {\n\t\tif kv.Key == key {\n\t\t\treturn kv.Value, true\n\t\t}\n\t}\n\n\treturn \"\", false\n}\n\nfunc (k KeyValues) MustGet(key string) string {\n\tfor _, kv := range k {\n\t\tif kv.Key == key {\n\t\t\treturn kv.Value\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc keyValuesFromMap(m map[string]string) KeyValues {\n\tvar result KeyValues\n\tvar mapKeys []string\n\tfor k := range m {\n\t\tmapKeys = append(mapKeys, k)\n\t}\n\tsort.Strings(mapKeys)\n\tfor _, k := range mapKeys {\n\t\tresult = append(result, KeyValue{\n\t\t\tKey:   k,\n\t\t\tValue: m[k],\n\t\t})\n\t}\n\treturn result\n}\n\nfunc (k *KeyValues) UnmarshalJSON(b []byte) error {\n\tvar kvs []KeyValue\n\tif err := json.Unmarshal(b, &kvs); err != nil {\n\t\tvar legacyMap map[string]string\n\t\tif err := json.Unmarshal(b, &legacyMap); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal KeyValues: %w\", err)\n\t\t}\n\t\tvar keys []string\n\t\tfor k := range legacyMap {\n\t\t\tkeys = append(keys, k)\n\t\t}\n\t\tsort.Strings(keys)\n\t\tfor _, k := range keys {\n\t\t\tkvs = append(kvs, KeyValue{Key: k, Value: legacyMap[k]})\n\t\t}\n\t}\n\t*k = kvs\n\treturn nil\n}\n"
  },
  {
    "path": "syft/pkg/language.go",
    "content": "package pkg\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n)\n\n// Language represents a single programming language.\ntype Language string\n\nconst (\n\t// the full set of supported programming languages\n\tUnknownLanguage Language = \"\"\n\tCPP             Language = \"c++\"\n\tDart            Language = \"dart\"\n\tDotnet          Language = \"dotnet\"\n\tElixir          Language = \"elixir\"\n\tErlang          Language = \"erlang\"\n\tGo              Language = \"go\"\n\tHaskell         Language = \"haskell\"\n\tJava            Language = \"java\"\n\tJavaScript      Language = \"javascript\"\n\tLua             Language = \"lua\"\n\tOCaml           Language = \"ocaml\"\n\tPHP             Language = \"php\"\n\tPython          Language = \"python\"\n\tR               Language = \"R\"\n\tRuby            Language = \"ruby\"\n\tRust            Language = \"rust\"\n\tSwift           Language = \"swift\"\n\tSwipl           Language = \"swipl\"\n)\n\n// AllLanguages is a set of all programming languages detected by syft.\nvar AllLanguages = []Language{\n\tCPP,\n\tDart,\n\tDotnet,\n\tElixir,\n\tErlang,\n\tGo,\n\tHaskell,\n\tJava,\n\tJavaScript,\n\tLua,\n\tOCaml,\n\tPHP,\n\tPython,\n\tR,\n\tRuby,\n\tRust,\n\tSwift,\n\tSwipl,\n}\n\n// String returns the string representation of the language.\nfunc (l Language) String() string {\n\treturn string(l)\n}\n\nfunc LanguageFromPURL(p string) Language {\n\tpurl, err := packageurl.FromString(p)\n\tif err != nil {\n\t\treturn UnknownLanguage\n\t}\n\n\treturn LanguageByName(purl.Type)\n}\n\nfunc LanguageByName(name string) Language {\n\tswitch strings.ToLower(name) {\n\tcase packageurl.TypeMaven, string(purlGradlePkgType), string(JavaPkg), string(Java):\n\t\treturn Java\n\tcase packageurl.TypeComposer, string(PhpComposerPkg), string(PHP):\n\t\treturn PHP\n\tcase packageurl.TypeGolang, string(GoModulePkg), string(Go):\n\t\treturn Go\n\tcase packageurl.TypeNPM, string(JavaScript), \"nodejs\", \"node.js\":\n\t\treturn JavaScript\n\tcase packageurl.TypeLuaRocks, string(Lua):\n\t\treturn Lua\n\tcase packageurl.TypePyPi, string(Python):\n\t\treturn Python\n\tcase packageurl.TypeGem, string(Ruby):\n\t\treturn Ruby\n\tcase purlCargoPkgType, string(RustPkg), string(Rust):\n\t\treturn Rust\n\tcase packageurl.TypePub, string(DartPubPkg), string(Dart):\n\t\treturn Dart\n\tcase string(Dotnet), \".net\", packageurl.TypeNuget:\n\t\treturn Dotnet\n\tcase packageurl.TypeCocoapods, packageurl.TypeSwift, string(CocoapodsPkg):\n\t\treturn Swift\n\tcase \"swipl\", string(SwiplPackPkg):\n\t\treturn Swipl\n\tcase \"ocaml\", string(OpamPkg):\n\t\treturn OCaml\n\tcase packageurl.TypeConan, string(CPP):\n\t\treturn CPP\n\tcase packageurl.TypeHackage, string(Haskell):\n\t\treturn Haskell\n\tcase packageurl.TypeHex, packageurl.TypeOTP, \"beam\", \"elixir\", \"erlang\":\n\t\t// should we support returning multiple languages to support this case?\n\t\t// answer: no. We want this to definitively answer \"which language does this package represent?\"\n\t\t// which might not be possible in all cases. See for more context: https://github.com/package-url/purl-spec/pull/178\n\t\treturn UnknownLanguage\n\tcase packageurl.TypeCran, \"r\":\n\t\treturn R\n\tdefault:\n\t\treturn UnknownLanguage\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/language_test.go",
    "content": "package pkg\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestLanguageFromPURL(t *testing.T) {\n\n\ttests := []struct {\n\t\tpurl string\n\t\twant Language\n\t}{\n\n\t\t{\n\t\t\tpurl: \"pkg:npm/util@2.32\",\n\t\t\twant: JavaScript,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:pypi/util-linux@2.32.1-27.el8\",\n\t\t\twant: Python,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:gem/ruby-advisory-db-check@0.12.4\",\n\t\t\twant: Ruby,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c\",\n\t\t\twant: Go,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:pub/util@1.2.34\",\n\t\t\twant: Dart,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:dotnet/Microsoft.CodeAnalysis.Razor@2.2.0\",\n\t\t\twant: Dotnet,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:nuget/Newtonsoft.Json@13.0.0\",\n\t\t\twant: Dotnet,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:cargo/clap@2.33.0\",\n\t\t\twant: Rust,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:composer/laravel/laravel@5.5.0\",\n\t\t\twant: PHP,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist\",\n\t\t\twant: Java,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:cocoapods/GlossButtonNode@3.1.2\",\n\t\t\twant: Swift,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:conan/catch2@2.13.8\",\n\t\t\twant: CPP,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:hackage/HTTP@4000.3.16\",\n\t\t\twant: Haskell,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:hex/hpax/hpax@0.1.1\",\n\t\t\twant: UnknownLanguage,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:cran/base@4.3.0\",\n\t\t\twant: R,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:swift/github.com/apple/swift-numerics/swift-numerics@1.0.2\",\n\t\t\twant: Swift,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:swiplpack/conditon@0.1.1\",\n\t\t\twant: Swipl,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:luarocks/kong@3.7.0\",\n\t\t\twant: Lua,\n\t\t},\n\t\t{\n\t\t\tpurl: \"pkg:opam/ocaml-base-compiler@5.2.0\",\n\t\t\twant: OCaml,\n\t\t},\n\t}\n\n\tvar languages = strset.New()\n\tvar expectedLanguages = strset.New()\n\tfor _, ty := range AllLanguages {\n\t\texpectedLanguages.Add(string(ty))\n\t}\n\n\t// we cannot determine the language from these purl ecosystems (yet?)\n\texpectedLanguages.Remove(Elixir.String())\n\texpectedLanguages.Remove(Erlang.String())\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.purl, func(t *testing.T) {\n\t\t\tactual := LanguageFromPURL(tt.purl)\n\n\t\t\tif actual != \"\" {\n\t\t\t\tlanguages.Add(string(actual))\n\t\t\t}\n\n\t\t\tassert.Equalf(t, tt.want, actual, \"LanguageFromPURL(%v)\", tt.purl)\n\t\t})\n\t}\n\n\tassert.ElementsMatch(t, expectedLanguages.List(), languages.List(), \"missing one or more languages to test against (maybe a package type was added?)\")\n\n}\n\nfunc TestLanguageByName(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tlanguage Language\n\t}{\n\t\t{\n\t\t\tname:     \"maven\",\n\t\t\tlanguage: Java,\n\t\t},\n\t\t{\n\t\t\tname:     \"java\",\n\t\t\tlanguage: Java,\n\t\t},\n\t\t{\n\t\t\tname:     \"java-archive\",\n\t\t\tlanguage: Java,\n\t\t},\n\t\t{\n\t\t\tname:     \"java\",\n\t\t\tlanguage: Java,\n\t\t},\n\t\t{\n\t\t\tname:     \"composer\",\n\t\t\tlanguage: PHP,\n\t\t},\n\t\t{\n\t\t\tname:     \"php-composer\",\n\t\t\tlanguage: PHP,\n\t\t},\n\t\t{\n\t\t\tname:     \"php\",\n\t\t\tlanguage: PHP,\n\t\t},\n\t\t{\n\t\t\tname:     \"go\",\n\t\t\tlanguage: Go,\n\t\t},\n\t\t{\n\t\t\tname:     \"golang\",\n\t\t\tlanguage: Go,\n\t\t},\n\t\t{\n\t\t\tname:     \"go-module\",\n\t\t\tlanguage: Go,\n\t\t},\n\t\t{\n\t\t\tname:     \"npm\",\n\t\t\tlanguage: JavaScript,\n\t\t},\n\t\t{\n\t\t\tname:     \"javascript\",\n\t\t\tlanguage: JavaScript,\n\t\t},\n\t\t{\n\t\t\tname:     \"node.js\",\n\t\t\tlanguage: JavaScript,\n\t\t},\n\t\t{\n\t\t\tname:     \"nodejs\",\n\t\t\tlanguage: JavaScript,\n\t\t},\n\t\t{\n\t\t\tname:     \"pypi\",\n\t\t\tlanguage: Python,\n\t\t},\n\t\t{\n\t\t\tname:     \"python\",\n\t\t\tlanguage: Python,\n\t\t},\n\t\t{\n\t\t\tname:     \"gem\",\n\t\t\tlanguage: Ruby,\n\t\t},\n\t\t{\n\t\t\tname:     \"ruby\",\n\t\t\tlanguage: Ruby,\n\t\t},\n\t\t{\n\t\t\tname:     \"rust\",\n\t\t\tlanguage: Rust,\n\t\t},\n\t\t{\n\t\t\tname:     \"rust-crate\",\n\t\t\tlanguage: Rust,\n\t\t},\n\t\t{\n\t\t\tname:     \"cargo\",\n\t\t\tlanguage: Rust,\n\t\t},\n\t\t{\n\t\t\tname:     \"dart\",\n\t\t\tlanguage: Dart,\n\t\t},\n\t\t{\n\t\t\tname:     \"dart-pub\",\n\t\t\tlanguage: Dart,\n\t\t},\n\t\t{\n\t\t\tname:     \"pub\",\n\t\t\tlanguage: Dart,\n\t\t},\n\t\t{\n\t\t\tname:     \"dotnet\",\n\t\t\tlanguage: Dotnet,\n\t\t},\n\t\t{\n\t\t\tname:     \"swift\",\n\t\t\tlanguage: Swift,\n\t\t},\n\t\t{\n\t\t\tname:     \"swiplpack\",\n\t\t\tlanguage: Swipl,\n\t\t},\n\t\t{\n\t\t\tname:     \"opam\",\n\t\t\tlanguage: OCaml,\n\t\t},\n\t\t{\n\t\t\tname:     \"pod\",\n\t\t\tlanguage: Swift,\n\t\t},\n\t\t{\n\t\t\tname:     \"cocoapods\",\n\t\t\tlanguage: Swift,\n\t\t},\n\t\t{\n\t\t\tname:     \"unknown\",\n\t\t\tlanguage: UnknownLanguage,\n\t\t},\n\t\t{\n\t\t\tname:     \"conan\",\n\t\t\tlanguage: CPP,\n\t\t},\n\t\t{\n\t\t\tname:     \"c++\",\n\t\t\tlanguage: CPP,\n\t\t},\n\t\t{\n\t\t\tname:     \"hackage\",\n\t\t\tlanguage: Haskell,\n\t\t},\n\t\t{\n\t\t\tname:     \"haskell\",\n\t\t\tlanguage: Haskell,\n\t\t},\n\t\t{\n\t\t\tname:     \"R\",\n\t\t\tlanguage: R,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tassert.Equal(t, LanguageByName(test.name), test.language)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/license.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/internal/spdxlicense\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\nvar _ sort.Interface = (*Licenses)(nil)\n\n// License represents an SPDX Expression or license value extracted from a package's metadata.\n// A License is a unique combination of value, expression and type, where its sources are always\n// considered merged and additions to the evidence of where it was found and how it was sourced.\n// This is different from how we treat a package since we consider package paths in order to\n// distinguish if packages should be kept separate. This is different for licenses since we're\n// only looking for evidence of where a license was declared/concluded for a given package.\ntype License struct {\n\t// SPDXExpression is parsed SPDX license expression (e.g. \"MIT OR Apache-2.0\")\n\tSPDXExpression string\n\n\t// Value is original raw license string as found in metadata (e.g. \"mit or apache-2\")\n\tValue string\n\n\t// Type is classification of how this license was discovered (declared, concluded, etc.).\n\t// A Concluded License type is the license the SBOM creator believes governs the package (human crafted or altered SBOM).\n\t// The Declared License is what the authors of a project believe govern the package (this is the default type syft uses).\n\tType license.Type\n\n\t// Contents is full license text if available. If a license is given as its full text in the\n\t// metadata rather than its value or SPDX expression, this field is used to represent that data.\n\tContents string `hash:\"ignore\"`\n\n\t// URLs are the list of URLs where license information was found. These are ignored for uniqueness\n\t// since we merge these fields across equal licenses.\n\tURLs []string `hash:\"ignore\"`\n\n\t// Locations are the file locations where this license was discovered. These are ignored for uniqueness\n\t// since we merge these fields across equal licenses.\n\tLocations file.LocationSet `hash:\"ignore\"`\n}\n\n// Licenses is a sortable collection of License objects implementing sort.Interface.\ntype Licenses []License\n\nfunc (l Licenses) Len() int {\n\treturn len(l)\n}\n\nfunc (l Licenses) Less(i, j int) bool {\n\tif l[i].Value == l[j].Value {\n\t\tif l[i].SPDXExpression == l[j].SPDXExpression {\n\t\t\tif l[i].Type == l[j].Type {\n\t\t\t\tif l[i].Contents == l[j].Contents {\n\t\t\t\t\t// While URLs and location are not exclusive fields\n\t\t\t\t\t// returning true here reduces the number of swaps\n\t\t\t\t\t// while keeping a consistent sort order of\n\t\t\t\t\t// the order that they appear in the list initially\n\t\t\t\t\t// If users in the future have a preference to sorting based\n\t\t\t\t\t// on the slice representation of either field, we can update this code\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn l[i].Contents < l[j].Contents\n\t\t\t}\n\t\t\treturn l[i].Type < l[j].Type\n\t\t}\n\t\treturn l[i].SPDXExpression < l[j].SPDXExpression\n\t}\n\treturn l[i].Value < l[j].Value\n}\n\nfunc (l Licenses) Swap(i, j int) {\n\tl[i], l[j] = l[j], l[i]\n}\n\nfunc NewLicensesFromReadCloserWithContext(ctx context.Context, closer file.LocationReadCloser) []License {\n\t//Definition: The license that the auditor or scanning tool concludes applies, based on the actual contents of the files.\n\t//Source: Derived from analyzing the source code, license headers, and full license texts in the files.\n\t// Given we are scanning the contents of the file, we should use the Concluded License type.\n\treturn newLicenseBuilder().WithContents(closer).WithLocations(closer.Location).WithType(license.Concluded).Build(ctx).ToSlice()\n}\n\nfunc NewLicenseWithContext(ctx context.Context, value string) License {\n\treturn NewLicenseFromTypeWithContext(ctx, value, license.Declared)\n}\n\nfunc NewLicenseFromTypeWithContext(ctx context.Context, value string, t license.Type) License {\n\tlics := newLicenseBuilder().WithValues(value).WithType(t).Build(ctx).ToSlice()\n\tif len(lics) > 0 {\n\t\treturn lics[0]\n\t}\n\t// TODO: this is not ideal, but also not expected given the input of \"value\"\n\treturn License{}\n}\n\nfunc NewLicensesFromValuesWithContext(ctx context.Context, values ...string) []License {\n\treturn newLicenseBuilder().WithValues(values...).Build(ctx).ToSlice()\n}\n\nfunc NewLicensesFromLocationWithContext(ctx context.Context, location file.Location, values ...string) []License {\n\treturn newLicenseBuilder().WithValues(values...).WithLocations(location).Build(ctx).ToSlice()\n}\n\nfunc NewLicenseFromLocationsWithContext(ctx context.Context, value string, locations ...file.Location) License {\n\tlics := newLicenseBuilder().WithValues(value).WithLocations(locations...).Build(ctx).ToSlice()\n\tif len(lics) > 0 {\n\t\treturn lics[0]\n\t}\n\t// TODO: this is not ideal, but also not expected given the input of \"value\"\n\treturn License{}\n}\n\nfunc NewLicenseFromURLsWithContext(ctx context.Context, value string, urls ...string) License {\n\tlics := newLicenseBuilder().WithValues(value).WithURLs(urls...).Build(ctx).ToSlice()\n\tif len(lics) > 0 {\n\t\treturn lics[0]\n\t}\n\t// TODO: this is not ideal, but also not expected given the input of \"value\"\n\treturn License{}\n}\n\nfunc stripUnwantedCharacters(rawURL string) (string, error) {\n\tcleanedURL := strings.TrimSpace(rawURL)\n\t_, err := url.ParseRequestURI(cleanedURL)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid URL: %w\", err)\n\t}\n\n\treturn cleanedURL, nil\n}\n\nfunc NewLicenseFromFieldsWithContext(ctx context.Context, value, url string, location *file.Location) License {\n\t// If value is empty but URL is provided, try to enrich from SPDX database\n\tif value == \"\" && url != \"\" {\n\t\tif info, found := spdxlicense.LicenseByURL(url); found {\n\t\t\tvalue = info.ID\n\t\t}\n\t}\n\n\tlics := newLicenseBuilder().WithValues(value).WithURLs(url).WithOptionalLocation(location).Build(ctx).ToSlice()\n\tif len(lics) > 0 {\n\t\treturn lics[0]\n\t}\n\t// TODO: this is not ideal, but also not expected given the input of \"value\"\n\treturn License{}\n}\n\nfunc (s License) Empty() bool {\n\treturn s.Value == \"\" && s.SPDXExpression == \"\" && s.Contents == \"\" && len(s.URLs) == 0\n}\n\n// Merge two licenses into a new license object. If the merge is not possible due to unmergeable fields\n// (e.g. different values for Value, SPDXExpression, Type, or any non-collection type) an error is returned.\n// TODO: this is a bit of a hack to not infinitely recurse when hashing a license\nfunc (s License) Merge(l License) (*License, error) {\n\tsHash, err := artifact.IDByHash(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlHash, err := artifact.IDByHash(l)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif sHash != lHash {\n\t\treturn nil, fmt.Errorf(\"cannot merge licenses with different hash\")\n\t}\n\n\t// try to keep s.URLs unallocated unless necessary (which is the default state from the constructor)\n\tif len(l.URLs) > 0 {\n\t\ts.URLs = append(s.URLs, l.URLs...)\n\t}\n\n\tif len(s.URLs) > 0 {\n\t\ts.URLs = strset.New(s.URLs...).List()\n\t\tsort.Strings(s.URLs)\n\t}\n\n\tif l.Locations.Empty() {\n\t\treturn &s, nil\n\t}\n\n\t// since the set instance has a reference type (map), we must make a new instance\n\tlocations := file.NewLocationSet(s.Locations.ToSlice()...)\n\tlocations.Add(l.Locations.ToSlice()...)\n\ts.Locations = locations\n\n\treturn &s, nil\n}\n\n// licenseBuilder is an internal builder for constructing License objects with validation and normalization.\ntype licenseBuilder struct {\n\t// values are raw license strings or SPDX expressions to process.\n\tvalues []string\n\t// contents are readers for full license text content.\n\tcontents []io.ReadCloser\n\t// locations are file locations where license information was discovered.\n\tlocations []file.Location\n\t// urls are web URLs where license information can be found.\n\turls []string\n\t// tp is the license type classification (declared, concluded, etc.).\n\ttp license.Type\n}\n\nfunc newLicenseBuilder() *licenseBuilder {\n\treturn &licenseBuilder{\n\t\ttp: license.Declared,\n\t}\n}\n\nfunc (b *licenseBuilder) WithValues(expr ...string) *licenseBuilder {\n\tfor _, v := range expr {\n\t\tif v == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tb.values = append(b.values, v)\n\t}\n\treturn b\n}\n\nfunc (b *licenseBuilder) WithOptionalLocation(location *file.Location) *licenseBuilder {\n\tif location != nil {\n\t\tb.locations = append(b.locations, *location)\n\t}\n\treturn b\n}\n\nfunc (b *licenseBuilder) WithURLs(urls ...string) *licenseBuilder {\n\ts := strset.New()\n\tfor _, u := range urls {\n\t\tif u != \"\" {\n\t\t\tsanitizedURL, err := stripUnwantedCharacters(u)\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"unable to sanitize url=%q: %s\", u, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.Add(sanitizedURL)\n\t\t}\n\t}\n\n\tb.urls = append(b.urls, s.List()...)\n\tsort.Strings(b.urls)\n\treturn b\n}\n\nfunc (b *licenseBuilder) WithLocations(locations ...file.Location) *licenseBuilder {\n\tfor _, loc := range locations {\n\t\tif loc.Path() != \"\" {\n\t\t\tb.locations = append(b.locations, loc)\n\t\t}\n\t}\n\treturn b\n}\n\nfunc (b *licenseBuilder) WithContents(contents ...io.ReadCloser) *licenseBuilder {\n\tfor _, content := range contents {\n\t\tif content != nil {\n\t\t\tb.contents = append(b.contents, content)\n\t\t}\n\t}\n\treturn b\n}\n\nfunc (b *licenseBuilder) WithType(t license.Type) *licenseBuilder {\n\tb.tp = t // last one wins, multiple is not valid\n\treturn b\n}\n\nfunc (b *licenseBuilder) Build(ctx context.Context) LicenseSet {\n\t// for every value make a license with all locations\n\t// or for every reader make a license with all locations\n\t// if given a reader and a value, this is invalid\n\n\tlocations := file.NewLocationSet(b.locations...)\n\n\tset := NewLicenseSet()\n\tfor _, v := range b.values {\n\t\tif strings.Contains(v, \"\\n\") {\n\t\t\tvar loc file.Location\n\t\t\tif len(b.locations) > 0 {\n\t\t\t\tloc = b.locations[0]\n\t\t\t}\n\t\t\tb.contents = append(b.contents, file.NewLocationReadCloser(loc, io.NopCloser(strings.NewReader(v))))\n\t\t\tcontinue\n\t\t}\n\n\t\t// we want to check if the SPDX field should be set\n\t\tvar expression string\n\t\tif ex, err := license.ParseExpression(v); err == nil {\n\t\t\texpression = ex\n\t\t}\n\n\t\tset.Add(License{\n\t\t\tSPDXExpression: expression,\n\t\t\tValue:          strings.TrimSpace(v),\n\t\t\tType:           b.tp,\n\t\t\tURLs:           b.urls,\n\t\t\tLocations:      locations,\n\t\t})\n\t}\n\n\t// we have some readers (with no values); let's try to turn into licenses if we can\n\tfor _, content := range b.contents {\n\t\tset.Add(b.buildFromContents(ctx, content)...)\n\t}\n\n\tif set.Empty() && len(b.urls) > 0 {\n\t\t// if we have no values or contents, but we do have URLs, let's make a license with the URLs\n\t\t// try to enrich the license by looking up the URL in the SPDX database\n\t\tlicense := License{\n\t\t\tType:      b.tp,\n\t\t\tURLs:      b.urls,\n\t\t\tLocations: locations,\n\t\t}\n\n\t\t// attempt to fill in missing license information from the first URL\n\t\tif len(b.urls) > 0 {\n\t\t\tif info, found := spdxlicense.LicenseByURL(b.urls[0]); found {\n\t\t\t\tlicense.Value = info.ID\n\t\t\t\tlicense.SPDXExpression = info.ID\n\t\t\t}\n\t\t}\n\n\t\tset.Add(license)\n\t}\n\n\treturn set\n}\n\nfunc (b *licenseBuilder) buildFromContents(ctx context.Context, contents io.ReadCloser) []License {\n\tif !licenses.IsContextLicenseScannerSet(ctx) {\n\t\t// we do not have a scanner; we don't want to create one; we sha256 the content and populate the value\n\t\tinternal, err := contentFromReader(contents)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Trace(\"could not read content\")\n\t\t\treturn nil\n\t\t}\n\t\treturn []License{b.licenseFromContentHash(internal)}\n\t}\n\n\tscanner, err := licenses.ContextLicenseScanner(ctx)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"could not find license scanner\")\n\t\tinternal, err := contentFromReader(contents)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err).Trace(\"could not read content\")\n\t\t\treturn nil\n\t\t}\n\t\treturn []License{b.licenseFromContentHash(internal)}\n\t}\n\n\tevidence, content, err := scanner.FindEvidence(ctx, contents)\n\tif err != nil {\n\t\tlog.WithFields(\"error\", err).Trace(\"scanner failed to scan contents\")\n\t\treturn nil\n\t}\n\n\tif len(evidence) > 0 {\n\t\t// we have some ID and offsets to apply to our content; let's make some detailed licenses\n\t\treturn b.licensesFromEvidenceAndContent(evidence, content)\n\t}\n\t// scanner couldn't find anything, but we still have the file contents; sha256 and send it back with value\n\treturn []License{b.licenseFromContentHash(string(content))}\n}\n\nfunc (b *licenseBuilder) licensesFromEvidenceAndContent(evidence []licenses.Evidence, content []byte) []License {\n\tls := make([]License, 0)\n\tfor _, e := range evidence {\n\t\t// basic license\n\t\tcandidate := License{\n\t\t\tValue:     e.ID,\n\t\t\tLocations: file.NewLocationSet(b.locations...),\n\t\t\tType:      b.tp,\n\t\t}\n\t\t// get content offset\n\t\tif e.Start >= 0 && e.End <= len(content) && e.Start <= e.End {\n\t\t\tcandidate.Contents = string(content[e.Start:e.End])\n\t\t}\n\t\t// check for SPDX Validity\n\t\tif ex, err := license.ParseExpression(e.ID); err == nil {\n\t\t\tcandidate.SPDXExpression = ex\n\t\t}\n\n\t\tls = append(ls, candidate)\n\t}\n\treturn ls\n}\n\nfunc (b *licenseBuilder) licenseFromContentHash(content string) License {\n\thash := sha256HexFromString(content)\n\tvalue := \"sha256:\" + hash\n\n\treturn License{\n\t\tValue:     value,\n\t\tContents:  content,\n\t\tType:      b.tp,\n\t\tLocations: file.NewLocationSet(b.locations...),\n\t}\n}\n\nfunc contentFromReader(r io.Reader) (string, error) {\n\tbytes, err := io.ReadAll(r) //nolint:gocritic // reading license content for storage\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn strings.TrimSpace(string(bytes)), nil\n}\n\nfunc sha256HexFromString(s string) string {\n\thash := sha256.Sum256([]byte(s))\n\treturn hex.EncodeToString(hash[:])\n}\n"
  },
  {
    "path": "syft/pkg/license_deprecated.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\nfunc NewLicense(value string) License {\n\treturn NewLicenseFromType(value, license.Declared)\n}\n\nfunc NewLicenseFromType(value string, t license.Type) License {\n\tvar (\n\t\tspdxExpression string\n\t\tfullText       string\n\t)\n\t// Check parsed value for newline character to see if it's the full license text\n\t// License: <HERE IS THE FULL TEXT> <Expressions>\n\t// DO we want to also submit file name when determining fulltext\n\tif strings.Contains(strings.TrimSpace(value), \"\\n\") {\n\t\tfullText = value\n\t} else {\n\t\tvar err error\n\t\tspdxExpression, err = license.ParseExpression(value)\n\t\tif err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"expression\", value).Trace(\"unable to parse license expression\")\n\t\t}\n\t}\n\n\tif fullText != \"\" {\n\t\treturn License{\n\t\t\tContents:  fullText,\n\t\t\tType:      t,\n\t\t\tLocations: file.NewLocationSet(),\n\t\t}\n\t}\n\n\treturn License{\n\t\tValue:          value,\n\t\tSPDXExpression: spdxExpression,\n\t\tType:           t,\n\t\tLocations:      file.NewLocationSet(),\n\t}\n}\n\nfunc NewLicensesFromValues(values ...string) (licenses []License) {\n\tfor _, v := range values {\n\t\tlicenses = append(licenses, NewLicense(v))\n\t}\n\treturn\n}\n\nfunc NewLicensesFromLocation(location file.Location, values ...string) (licenses []License) {\n\tfor _, v := range values {\n\t\tif v == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tlicenses = append(licenses, NewLicenseFromLocations(v, location))\n\t}\n\treturn licenses\n}\n\nfunc NewLicenseFromLocations(value string, locations ...file.Location) License {\n\tl := NewLicense(value)\n\tfor _, loc := range locations {\n\t\tl.Locations.Add(loc)\n\t}\n\treturn l\n}\n\nfunc NewLicenseFromURLs(value string, urls ...string) License {\n\tl := NewLicense(value)\n\ts := strset.New()\n\tfor _, url := range urls {\n\t\tif url != \"\" {\n\t\t\tsanitizedURL, err := stripUnwantedCharacters(url)\n\t\t\tif err != nil {\n\t\t\t\tlog.Tracef(\"unable to sanitize url=%q: %s\", url, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ts.Add(sanitizedURL)\n\t\t}\n\t}\n\n\tl.URLs = s.List()\n\tsort.Strings(l.URLs)\n\n\treturn l\n}\n\nfunc NewLicenseFromFields(value, url string, location *file.Location) License {\n\tl := NewLicense(value)\n\tif location != nil {\n\t\tl.Locations.Add(*location)\n\t}\n\tif url != \"\" {\n\t\tsanitizedURL, err := stripUnwantedCharacters(url)\n\t\tif err != nil {\n\t\t\tlog.Tracef(\"unable to sanitize url=%q: %s\", url, err)\n\t\t} else {\n\t\t\tl.URLs = append(l.URLs, sanitizedURL)\n\t\t}\n\t}\n\n\treturn l\n}\n"
  },
  {
    "path": "syft/pkg/license_set.go",
    "content": "package pkg\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\n\t\"github.com/gohugoio/hashstructure\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\ntype LicenseSet struct {\n\tset map[artifact.ID]License\n}\n\nfunc NewLicenseSet(licenses ...License) (s LicenseSet) {\n\tfor _, l := range licenses {\n\t\ts.Add(l)\n\t}\n\n\treturn s\n}\n\nfunc (s *LicenseSet) addToExisting(license License) (id artifact.ID, merged bool, err error) {\n\tid, err = artifact.IDByHash(license)\n\tif err != nil {\n\t\treturn id, false, fmt.Errorf(\"could not get the hash for a license: %w\", err)\n\t}\n\n\tv, ok := s.set[id]\n\tif !ok {\n\t\t// doesn't exist safe to add\n\t\treturn id, false, nil\n\t}\n\n\t// we got the same id; we want to merge the URLs and Location data\n\t// URLs/Location are not considered when taking the Hash\n\tm, err := v.Merge(license)\n\tif err != nil {\n\t\treturn id, false, fmt.Errorf(\"could not merge license into map: %w\", err)\n\t}\n\ts.set[id] = *m\n\n\treturn id, true, nil\n}\n\nfunc (s *LicenseSet) Add(licenses ...License) {\n\tif s.set == nil {\n\t\ts.set = make(map[artifact.ID]License)\n\t}\n\tfor _, l := range licenses {\n\t\t// we only want to add licenses that are not empty\n\t\tif l.Empty() {\n\t\t\tcontinue\n\t\t}\n\t\t// note, this check should be moved to the license constructor in the future\n\t\tif id, merged, err := s.addToExisting(l); err == nil && !merged {\n\t\t\t// doesn't exist, add it\n\t\t\ts.set[id] = l\n\t\t} else if err != nil {\n\t\t\tlog.WithFields(\"error\", err, \"license\", l).Trace(\"failed to add license to license set\")\n\t\t}\n\t}\n}\n\nfunc (s LicenseSet) ToSlice(sorters ...func(a, b License) int) []License {\n\tlicenses := s.ToUnorderedSlice()\n\n\tvar sorted bool\n\tfor _, sorter := range sorters {\n\t\tif sorter == nil {\n\t\t\tcontinue\n\t\t}\n\t\tsort.Slice(licenses, func(i, j int) bool {\n\t\t\treturn sorter(licenses[i], licenses[j]) < 0\n\t\t})\n\t\tsorted = true\n\t\tbreak\n\t}\n\n\tif !sorted {\n\t\tsort.Sort(Licenses(licenses))\n\t}\n\n\treturn licenses\n}\n\nfunc (s LicenseSet) ToUnorderedSlice() []License {\n\tif s.set == nil {\n\t\treturn nil\n\t}\n\tlicenses := make([]License, len(s.set))\n\tidx := 0\n\tfor _, v := range s.set {\n\t\tlicenses[idx] = v\n\t\tidx++\n\t}\n\treturn licenses\n}\n\nfunc (s LicenseSet) Hash() (uint64, error) {\n\t// access paths and filesystem IDs are not considered when hashing a license set, only the real paths\n\treturn hashstructure.Hash(s.ToSlice(), &hashstructure.HashOptions{\n\t\tZeroNil:      true,\n\t\tSlicesAsSets: true,\n\t})\n}\n\nfunc (s LicenseSet) Empty() bool {\n\treturn len(s.set) < 1\n}\n"
  },
  {
    "path": "syft/pkg/license_set_test.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/internal/licenses\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\nfunc TestLicenseSet_Add(t *testing.T) {\n\tscanner, err := licenses.NewDefaultScanner()\n\trequire.NoError(t, err)\n\tctx := licenses.SetContextLicenseScanner(context.Background(), scanner)\n\ttests := []struct {\n\t\tname     string\n\t\tlicenses []License\n\t\twant     []License\n\t}{\n\t\t{\n\t\t\tname: \"add one simple license\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"add multiple simple licenses\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"Apache-2.0\"),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"Apache-2.0\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"attempt to add a license with no name\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"\"),\n\t\t\t},\n\t\t\twant: []License{},\n\t\t},\n\t\t{\n\t\t\tname: \"keep multiple licenses sorted\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"Apache-2.0\"),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"Apache-2.0\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"deduplicate licenses with locations\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"1\"})),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"1\"})),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"2\"})),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(\n\t\t\t\t\tctx,\n\t\t\t\t\t\"MIT\",\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"1\"}),\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"2\"}),\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"same licenses with different locations\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"2\"})),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"1\"})),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(\n\t\t\t\t\tctx,\n\t\t\t\t\t\"MIT\",\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"1\"}),\n\t\t\t\t\tfile.NewLocationFromCoordinates(file.Coordinates{RealPath: \"/place\", FileSystemID: \"2\"}),\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"same license from different sources\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"/place\")),\n\t\t\t\tNewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://example.com\"),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\tURLs:           []string{\"https://example.com\"},\n\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"/place\")),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"different licenses from different sources with different types constitute two licenses\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseFromTypeWithContext(ctx, \"MIT\", license.Concluded),\n\t\t\t\tNewLicenseFromTypeWithContext(ctx, \"MIT\", license.Declared),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"/place\")),\n\t\t\t\tNewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://example.com\"),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tType:           license.Concluded,\n\t\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:          \"MIT\",\n\t\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\tURLs:           []string{\"https://example.com\"},\n\t\t\t\t\tLocations:      file.NewLocationSet(file.NewLocation(\"/place\")),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"licenses that are unknown with different contents can exist in the same set\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/nvidia-software-and-cuda-supplement\")),\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/apache-license-2.0\")),\n\t\t\t},\n\t\t\twant: []License{\n\t\t\t\t{\n\t\t\t\t\tSPDXExpression: \"Apache-2.0\",\n\t\t\t\t\tValue:          \"Apache-2.0\",\n\t\t\t\t\tType:           license.Declared,\n\t\t\t\t\tContents:       readFileAsString(\"../../internal/licenses/testdata/apache-license-2.0\"),\n\t\t\t\t\tLocations:      file.NewLocationSet(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tValue:    \"sha256:eebcea3ab1d1a28e671de90119ffcfb35fe86951e4af1b17af52b7a82fcf7d0a\",\n\t\t\t\t\tContents: readFileAsString(\"../../internal/licenses/testdata/nvidia-software-and-cuda-supplement\"),\n\t\t\t\t\tType:     license.Declared,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ts := NewLicenseSet()\n\t\t\ts.Add(tt.licenses...)\n\t\t\ttestMe := s.ToSlice()\n\t\t\tif d := cmp.Diff(tt.want, testMe, cmp.Comparer(defaultLicenseComparer)); d != \"\" {\n\t\t\t\tt.Errorf(\"unexpected license set (-want +got):\\n%s\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc defaultLocationComparer(x, y file.Location) bool {\n\treturn cmp.Equal(x.Coordinates, y.Coordinates) && cmp.Equal(x.AccessPath, y.AccessPath)\n}\n\nfunc defaultLicenseComparer(x, y License) bool {\n\treturn cmp.Equal(x, y, cmp.Comparer(defaultLocationComparer), cmp.Comparer(\n\t\tfunc(x, y file.LocationSet) bool {\n\t\t\txs := x.ToSlice()\n\t\t\tys := y.ToSlice()\n\t\t\tif len(xs) != len(ys) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tfor i, xe := range xs {\n\t\t\t\tye := ys[i]\n\t\t\t\tif !defaultLocationComparer(xe, ye) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t))\n}\n\nfunc readFileAsString(filepath string) string {\n\tdata, err := os.ReadFile(filepath)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn string(data)\n}\n"
  },
  {
    "path": "syft/pkg/license_test.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"sort\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/license\"\n)\n\nfunc Test_Hash(t *testing.T) {\n\tctx := context.TODO()\n\tloc1 := file.NewLocation(\"place!\")\n\tloc1.FileSystemID = \"fs1\"\n\tloc2 := file.NewLocation(\"place!\")\n\tloc2.FileSystemID = \"fs2\" // important! there is a different file system ID\n\n\tlic1 := NewLicenseFromFieldsWithContext(ctx, \"MIT\", \"foo\", &loc1)\n\tlic2 := NewLicenseFromFieldsWithContext(ctx, \"MIT\", \"bar\", &loc2)\n\n\thash1, err := artifact.IDByHash(lic1)\n\trequire.NoError(t, err)\n\n\thash2, err := artifact.IDByHash(lic2)\n\trequire.NoError(t, err)\n\n\tassert.Equal(t, hash1, hash2)\n}\n\nfunc Test_Sort(t *testing.T) {\n\tctx := context.TODO()\n\ttests := []struct {\n\t\tname     string\n\t\tlicenses Licenses\n\t\texpected Licenses\n\t}{\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tlicenses: []License{},\n\t\t\texpected: []License{},\n\t\t},\n\t\t{\n\t\t\tname: \"single\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t},\n\t\t\texpected: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t\tNewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://github.com/anchore/syft/blob/main/LICENSE\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"Apache\", file.NewLocation(\"area!\")),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"gpl2+\", file.NewLocation(\"area!\")),\n\t\t\t},\n\t\t\texpected: Licenses{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"Apache\", file.NewLocation(\"area!\")),\n\t\t\t\tNewLicenseFromURLsWithContext(ctx, \"MIT\", \"https://github.com/anchore/syft/blob/main/LICENSE\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"gpl2+\", file.NewLocation(\"area!\")),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple with location variants\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"park!\")),\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"AAL\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"Adobe-2006\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"Apache\", file.NewLocation(\"area!\")),\n\t\t\t},\n\t\t\texpected: Licenses{\n\t\t\t\tNewLicenseWithContext(ctx, \"AAL\"),\n\t\t\t\tNewLicenseWithContext(ctx, \"Adobe-2006\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"Apache\", file.NewLocation(\"area!\")),\n\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"park!\")),\n\t\t\t\tNewLicenseFromLocationsWithContext(ctx, \"MIT\", file.NewLocation(\"place!\")),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple licenses with only contents are still sorted by their computed lic.value references\",\n\t\t\tlicenses: []License{\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/nvidia-software-and-cuda-supplement\")),\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/Knuth-CTAN\")),\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/apache-license-2.0\")),\n\t\t\t},\n\t\t\texpected: Licenses{\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/apache-license-2.0\")),\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/nvidia-software-and-cuda-supplement\")),\n\t\t\t\tNewLicenseWithContext(ctx, readFileAsString(\"../../internal/licenses/testdata/Knuth-CTAN\")),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tsort.Sort(test.licenses)\n\t\t\tassert.Equal(t, test.expected, test.licenses)\n\t\t})\n\n\t}\n}\n\nfunc TestLicense_Merge(t *testing.T) {\n\tlocA := file.NewLocation(\"a\")\n\tlocB := file.NewLocation(\"b\")\n\n\ttests := []struct {\n\t\tname    string\n\t\tsubject License\n\t\tother   License\n\t\twant    License\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"valid merge\",\n\t\t\tsubject: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"b\", \"a\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locA),\n\t\t\t},\n\t\t\tother: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"c\", \"d\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locB),\n\t\t\t},\n\t\t\twant: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"a\", \"b\", \"c\", \"d\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locA, locB),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"mismatched value\",\n\t\t\tsubject: License{\n\t\t\t\tValue:          \"DIFFERENT!!\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"b\", \"a\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locA),\n\t\t\t},\n\t\t\tother: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"c\", \"d\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locB),\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"mismatched spdx expression\",\n\t\t\tsubject: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"DIFFERENT!!\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"b\", \"a\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locA),\n\t\t\t},\n\t\t\tother: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"c\", \"d\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locB),\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"mismatched type\",\n\t\t\tsubject: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Concluded,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"b\", \"a\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locA),\n\t\t\t},\n\t\t\tother: License{\n\t\t\t\tValue:          \"MIT\",\n\t\t\t\tSPDXExpression: \"MIT\",\n\t\t\t\tType:           license.Declared,\n\t\t\t\tURLs: []string{\n\t\t\t\t\t\"c\", \"d\",\n\t\t\t\t},\n\t\t\t\tLocations: file.NewLocationSet(locB),\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\n\t\t\tsubjectLocationLen := len(tt.subject.Locations.ToSlice())\n\t\t\tsubjectURLLen := len(tt.subject.URLs)\n\n\t\t\tgot, err := tt.subject.Merge(tt.other)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NotNilf(t, got, \"expected a non-nil license\")\n\t\t\tassert.Equal(t, tt.want, *got)\n\t\t\t// prove we don't modify the subject\n\t\t\tassert.Equal(t, subjectLocationLen, len(tt.subject.Locations.ToSlice()))\n\t\t\tassert.Equal(t, subjectURLLen, len(tt.subject.URLs))\n\t\t})\n\t}\n}\n\nfunc TestFullText(t *testing.T) {\n\tctx := context.TODO()\n\tfullText := `I am a license with full text\n\tmy authors put new line characters in metadata for labeling a license`\n\ttests := []struct {\n\t\tname  string\n\t\tvalue string\n\t\twant  License\n\t}{\n\t\t{\n\t\t\tname:  \"Full Text field is populated with the correct full text and contents are given a sha256 as value\",\n\t\t\tvalue: fullText,\n\t\t\twant: License{\n\t\t\t\tValue:    \"sha256:108067fa71229a2b98b9696af0ce21cd11d9639634c8bc94bda70ebedf291e5a\",\n\t\t\t\tType:     license.Declared,\n\t\t\t\tContents: fullText,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := NewLicenseWithContext(ctx, tt.value)\n\t\t\tassert.Equal(t, tt.want, got)\n\t\t})\n\t}\n}\n\nfunc TestLicenseConstructors(t *testing.T) {\n\tctx := context.TODO()\n\ttype input struct {\n\t\tvalue string\n\t\turls  []string\n\t}\n\ttests := []struct {\n\t\tname     string\n\t\tinput    input\n\t\texpected License\n\t}{\n\t\t{\n\t\t\tname: \"License URLs are stripped of newlines and tabs\",\n\t\t\tinput: input{\n\t\t\t\tvalue: \"New BSD License\",\n\t\t\t\turls: []string{\n\t\t\t\t\t`\n\t\t\t\t\t\thttp://user-agent-utils.googlecode.com/svn/trunk/UserAgentUtils/LICENSE.txt\n\t\t\t\t\t`},\n\t\t\t},\n\t\t\texpected: License{\n\t\t\t\tValue: \"New BSD License\",\n\t\t\t\tType:  license.Declared,\n\t\t\t\tURLs:  []string{\"http://user-agent-utils.googlecode.com/svn/trunk/UserAgentUtils/LICENSE.txt\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"License URLs without value\",\n\t\t\tinput: input{\n\t\t\t\tvalue: \"\",\n\t\t\t\turls:  []string{\"http://user-agent-utils.googlecode.com/svn/trunk/UserAgentUtils/LICENSE.txt\"},\n\t\t\t},\n\t\t\texpected: License{\n\t\t\t\tType: license.Declared,\n\t\t\t\tURLs: []string{\"http://user-agent-utils.googlecode.com/svn/trunk/UserAgentUtils/LICENSE.txt\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := NewLicenseFromURLsWithContext(ctx, test.input.value, test.input.urls...)\n\t\t\tassert.Equal(t, test.expected, got)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/license_url_enrichment_test.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"testing\"\n)\n\nfunc TestNewLicenseFromFieldsWithContext_URLEnrichment(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tvalue      string\n\t\turl        string\n\t\twantValue  string\n\t\twantHasURL bool\n\t}{\n\t\t{\n\t\t\tname:       \"Empty value with MIT URL should enrich\",\n\t\t\tvalue:      \"\",\n\t\t\turl:        \"http://opensource.org/licenses/MIT\",\n\t\t\twantValue:  \"MIT\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Empty value with Apache URL should enrich\",\n\t\t\tvalue:      \"\",\n\t\t\turl:        \"https://www.apache.org/licenses/LICENSE-2.0\",\n\t\t\twantValue:  \"Apache-2.0\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Non-empty value should not be overridden\",\n\t\t\tvalue:      \"Custom-License\",\n\t\t\turl:        \"http://opensource.org/licenses/MIT\",\n\t\t\twantValue:  \"Custom-License\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Unknown URL should not enrich\",\n\t\t\tvalue:      \"\",\n\t\t\turl:        \"https://example.com/unknown-license\",\n\t\t\twantValue:  \"\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Empty value and empty URL\",\n\t\t\tvalue:      \"\",\n\t\t\turl:        \"\",\n\t\t\twantValue:  \"\",\n\t\t\twantHasURL: false,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\t\t\tlicense := NewLicenseFromFieldsWithContext(ctx, tt.value, tt.url, nil)\n\n\t\t\tif license.Value != tt.wantValue {\n\t\t\t\tt.Errorf(\"NewLicenseFromFieldsWithContext() Value = %v, want %v\", license.Value, tt.wantValue)\n\t\t\t}\n\n\t\t\thasURL := len(license.URLs) > 0\n\t\t\tif hasURL != tt.wantHasURL {\n\t\t\t\tt.Errorf(\"NewLicenseFromFieldsWithContext() has URL = %v, want %v\", hasURL, tt.wantHasURL)\n\t\t\t}\n\n\t\t\tif tt.wantHasURL && tt.url != \"\" && license.URLs[0] != tt.url {\n\t\t\t\tt.Errorf(\"NewLicenseFromFieldsWithContext() URL = %v, want %v\", license.URLs[0], tt.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestLicenseBuilder_URLOnlyEnrichment(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\turls       []string\n\t\twantValue  string\n\t\twantSPDX   string\n\t\twantHasURL bool\n\t}{\n\t\t{\n\t\t\tname:       \"MIT URL only should enrich\",\n\t\t\turls:       []string{\"http://opensource.org/licenses/MIT\"},\n\t\t\twantValue:  \"MIT\",\n\t\t\twantSPDX:   \"MIT\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Apache URL only should enrich\",\n\t\t\turls:       []string{\"https://www.apache.org/licenses/LICENSE-2.0\"},\n\t\t\twantValue:  \"Apache-2.0\",\n\t\t\twantSPDX:   \"Apache-2.0\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Multiple URLs should use first\",\n\t\t\turls:       []string{\"http://opensource.org/licenses/MIT\", \"https://example.com/other\"},\n\t\t\twantValue:  \"MIT\",\n\t\t\twantSPDX:   \"MIT\",\n\t\t\twantHasURL: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Unknown URL should not enrich\",\n\t\t\turls:       []string{\"https://example.com/unknown-license\"},\n\t\t\twantValue:  \"\",\n\t\t\twantSPDX:   \"\",\n\t\t\twantHasURL: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\t\t\tbuilder := newLicenseBuilder().WithURLs(tt.urls...)\n\t\t\tlicenses := builder.Build(ctx).ToSlice()\n\n\t\t\tif len(licenses) == 0 {\n\t\t\t\tt.Fatal(\"Expected at least one license\")\n\t\t\t}\n\n\t\t\tlicense := licenses[0]\n\n\t\t\tif license.Value != tt.wantValue {\n\t\t\t\tt.Errorf(\"License Value = %v, want %v\", license.Value, tt.wantValue)\n\t\t\t}\n\n\t\t\tif license.SPDXExpression != tt.wantSPDX {\n\t\t\t\tt.Errorf(\"License SPDXExpression = %v, want %v\", license.SPDXExpression, tt.wantSPDX)\n\t\t\t}\n\n\t\t\thasURL := len(license.URLs) > 0\n\t\t\tif hasURL != tt.wantHasURL {\n\t\t\t\tt.Errorf(\"License has URL = %v, want %v\", hasURL, tt.wantHasURL)\n\t\t\t}\n\n\t\t\tif tt.wantHasURL && len(tt.urls) > 0 {\n\t\t\t\tif len(license.URLs) != len(tt.urls) {\n\t\t\t\t\tt.Errorf(\"License URL count = %v, want %v\", len(license.URLs), len(tt.urls))\n\t\t\t\t}\n\t\t\t\tif license.URLs[0] != tt.urls[0] {\n\t\t\t\t\tt.Errorf(\"License first URL = %v, want %v\", license.URLs[0], tt.urls[0])\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNewLicenseFromURLsWithContext_URLEnrichment(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tvalue     string\n\t\turls      []string\n\t\twantValue string\n\t}{\n\t\t{\n\t\t\tname:      \"Empty value with MIT URL should enrich via builder\",\n\t\t\tvalue:     \"\",\n\t\t\turls:      []string{\"http://opensource.org/licenses/MIT\"},\n\t\t\twantValue: \"MIT\",\n\t\t},\n\t\t{\n\t\t\tname:      \"Non-empty value should not be changed\",\n\t\t\tvalue:     \"Custom-License\",\n\t\t\turls:      []string{\"http://opensource.org/licenses/MIT\"},\n\t\t\twantValue: \"Custom-License\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\t\t\tlicense := NewLicenseFromURLsWithContext(ctx, tt.value, tt.urls...)\n\n\t\t\tif license.Value != tt.wantValue {\n\t\t\t\tt.Errorf(\"NewLicenseFromURLsWithContext() Value = %v, want %v\", license.Value, tt.wantValue)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/linux_kernel.go",
    "content": "package pkg\n\n// LinuxKernel represents all captured data for a Linux kernel\ntype LinuxKernel struct {\n\t// Name is kernel name (typically \"Linux\")\n\tName string `mapstructure:\"name\" json:\"name\" cyclonedx:\"name\"`\n\n\t// Architecture is the target CPU architecture\n\tArchitecture string `mapstructure:\"architecture\" json:\"architecture\" cyclonedx:\"architecture\"`\n\n\t// Version is kernel version string\n\tVersion string `mapstructure:\"version\" json:\"version\" cyclonedx:\"version\"`\n\n\t// ExtendedVersion is additional version information\n\tExtendedVersion string `mapstructure:\"extendedVersion\" json:\"extendedVersion,omitempty\" cyclonedx:\"extendedVersion\"`\n\n\t// BuildTime is when the kernel was built\n\tBuildTime string `mapstructure:\"buildTime\" json:\"buildTime,omitempty\" cyclonedx:\"buildTime\"`\n\n\t// Author is who built the kernel\n\tAuthor string `mapstructure:\"author\" json:\"author,omitempty\" cyclonedx:\"author\"`\n\n\t// Format is kernel image format (e.g. bzImage, zImage)\n\tFormat string `mapstructure:\"format\" json:\"format,omitempty\" cyclonedx:\"format\"`\n\n\t// RWRootFS is whether root filesystem is mounted read-write\n\tRWRootFS bool `mapstructure:\"rwRootFS\" json:\"rwRootFS,omitempty\" cyclonedx:\"rwRootFS\"`\n\n\t// SwapDevice is swap device number\n\tSwapDevice int `mapstructure:\"swapDevice\" json:\"swapDevice,omitempty\" cyclonedx:\"swapDevice\"`\n\n\t// RootDevice is root device number\n\tRootDevice int `mapstructure:\"rootDevice\" json:\"rootDevice,omitempty\" cyclonedx:\"rootDevice\"`\n\n\t// VideoMode is default video mode setting\n\tVideoMode string `mapstructure:\"videoMode\" json:\"videoMode,omitempty\" cyclonedx:\"videoMode\"`\n}\n\n// LinuxKernelModule represents a loadable kernel module (.ko file) with its metadata, parameters, and dependencies.\ntype LinuxKernelModule struct {\n\t// Name is module name\n\tName string `mapstructure:\"name\" json:\"name,omitempty\" cyclonedx:\"name\"`\n\n\t// Version is module version string\n\tVersion string `mapstructure:\"version\" json:\"version,omitempty\" cyclonedx:\"version\"`\n\n\t// SourceVersion is the source code version identifier\n\tSourceVersion string `mapstructure:\"sourceVersion\" json:\"sourceVersion,omitempty\" cyclonedx:\"sourceVersion\"`\n\n\t// Path is the filesystem path to the .ko kernel object file (absolute path)\n\tPath string `mapstructure:\"path\" json:\"path,omitempty\" cyclonedx:\"path\"`\n\n\t// Description is a human-readable module description\n\tDescription string `mapstructure:\"description\" json:\"description,omitempty\" cyclonedx:\"description\"`\n\n\t// Author is module author name and email\n\tAuthor string `mapstructure:\"author\" json:\"author,omitempty\" cyclonedx:\"author\"`\n\n\t// License is module license (e.g. GPL, BSD) which must be compatible with kernel\n\tLicense string `mapstructure:\"license\" json:\"license,omitempty\" cyclonedx:\"license\"`\n\n\t// KernelVersion is kernel version this module was built for\n\tKernelVersion string `mapstructure:\"kernelVersion\" json:\"kernelVersion,omitempty\" cyclonedx:\"kernelVersion\"`\n\n\t// VersionMagic is version magic string for compatibility checking (includes kernel version, SMP status, module loading capabilities like \"3.17.4-302.fc21.x86_64 SMP mod_unload modversions\"). Module will NOT load if vermagic doesn't match running kernel.\n\tVersionMagic string `mapstructure:\"versionMagic\" json:\"versionMagic,omitempty\" cyclonedx:\"versionMagic\"`\n\n\t// Parameters are the module parameters that can be configured at load time (user-settable values like module options)\n\tParameters map[string]LinuxKernelModuleParameter `mapstructure:\"parameters\" json:\"parameters,omitempty\" cyclonedx:\"parameters\"`\n}\n\n// LinuxKernelModuleParameter represents a configurable parameter for a kernel module with its type and description.\ntype LinuxKernelModuleParameter struct {\n\t// Type is parameter data type (e.g. int, string, bool, array types)\n\tType string `mapstructure:\"type\" json:\"type,omitempty\" cyclonedx:\"type\"`\n\n\t// Description is a human-readable parameter description explaining what the parameter controls\n\tDescription string `mapstructure:\"description\" json:\"description,omitempty\" cyclonedx:\"description\"`\n}\n"
  },
  {
    "path": "syft/pkg/microsoft.go",
    "content": "package pkg\n\n// MicrosoftKbPatch represents a Windows Knowledge Base patch identifier associated with a specific Microsoft product from the MSRC (Microsoft Security Response Center).\n// This type captures both the product being patched and the KB article number for the update.\ntype MicrosoftKbPatch struct {\n\t// ProductID is MSRC Product ID (e.g. \"Windows 10 Version 1703 for 32-bit Systems\")\n\tProductID string `toml:\"product_id\" json:\"product_id\"`\n\n\t// Kb is Knowledge Base article number (e.g. \"5001028\")\n\tKb string `toml:\"kb\" json:\"kb\"`\n}\n"
  },
  {
    "path": "syft/pkg/nix.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\n// NixStoreEntry represents a package in the Nix store (/nix/store) with its derivation information and metadata.\ntype NixStoreEntry struct {\n\t// Path is full store path for this output (e.g. /nix/store/abc123...-package-1.0)\n\tPath string `mapstructure:\"path\" json:\"path,omitempty\"`\n\n\t// Output is the specific output name for multi-output packages (empty string for default \"out\" output, can be \"bin\", \"dev\", \"doc\", etc.)\n\tOutput string `mapstructure:\"output\" json:\"output,omitempty\"`\n\n\t// OutputHash is hash prefix of the store path basename (first part before the dash)\n\tOutputHash string `mapstructure:\"outputHash\" json:\"outputHash\"`\n\n\t// Derivation is information about the .drv file that describes how this package was built\n\tDerivation NixDerivation `mapstructure:\"derivation\" json:\"derivation,omitempty\"`\n\n\t// Files are the list of files under the nix/store path for this package\n\tFiles []string `mapstructure:\"files\" json:\"files,omitempty\"`\n}\n\n// NixDerivation represents a Nix .drv file that describes how to build a package including inputs, outputs, and build instructions.\ntype NixDerivation struct {\n\t// Path is path to the .drv file in Nix store\n\tPath string `mapstructure:\"path\" json:\"path,omitempty\"`\n\n\t// System is target system string indicating where derivation can be built (e.g. \"x86_64-linux\", \"aarch64-darwin\"). Must match current system for local builds.\n\tSystem string `mapstructure:\"system\" json:\"system,omitempty\"`\n\n\t// InputDerivations are the list of other derivations that were inputs to this build (dependencies)\n\tInputDerivations []NixDerivationReference `mapstructure:\"inputDerivations\" json:\"inputDerivations,omitempty\"`\n\n\t// InputSources are the list of source file paths that were inputs to this build\n\tInputSources []string `mapstructure:\"inputSources\" json:\"inputSources,omitempty\"`\n}\n\n// NixDerivationReference represents a reference to another derivation used as a build input or runtime dependency.\ntype NixDerivationReference struct {\n\t// Path is path to the referenced .drv file\n\tPath string `mapstructure:\"path\" json:\"path,omitempty\"`\n\n\t// Outputs are which outputs of the referenced derivation were used (e.g. [\"out\"], [\"bin\", \"dev\"])\n\tOutputs []string `mapstructure:\"outputs\" json:\"outputs,omitempty\"`\n}\n\nfunc (m NixStoreEntry) OwnedFiles() (result []string) {\n\tresult = strset.New(m.Files...).List()\n\tsort.Strings(result)\n\treturn\n}\n"
  },
  {
    "path": "syft/pkg/npm.go",
    "content": "package pkg\n\n// NpmPackage represents the contents of a javascript package.json file.\ntype NpmPackage struct {\n\t// Name is the package name as found in package.json\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in package.json\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// Author is package author name\n\tAuthor string `mapstructure:\"author\" json:\"author\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `mapstructure:\"homepage\" json:\"homepage\"`\n\n\t// Description is a human-readable package description\n\tDescription string `mapstructure:\"description\" json:\"description\"`\n\n\t// URL is repository or project URL\n\tURL string `mapstructure:\"url\" json:\"url\"`\n\n\t// Private is whether this is a private package\n\tPrivate bool `mapstructure:\"private\" json:\"private\"`\n}\n\n// NpmPackageLockEntry represents a single entry within the \"packages\" section of a package-lock.json file.\ntype NpmPackageLockEntry struct {\n\t// Resolved is URL where this package was downloaded from (registry source)\n\tResolved string `mapstructure:\"resolved\" json:\"resolved\"`\n\n\t// Integrity is Subresource Integrity hash for verification using standard SRI format (sha512-... or sha1-...). npm changed from SHA-1 to SHA-512 in newer versions. For registry sources this is the integrity from registry, for remote tarballs it's SHA-512 of the file. npm verifies tarball matches this hash before unpacking, throwing EINTEGRITY error if mismatch detected.\n\tIntegrity string `mapstructure:\"integrity\" json:\"integrity\"`\n\n\t// Dependencies is a map of dependencies and their version markers, i.e. \"lodash\": \"^1.0.0\"\n\tDependencies map[string]string `mapstructure:\"dependencies\" json:\"dependencies\"`\n}\n\n// YarnLockEntry represents a single entry section of a yarn.lock file.\ntype YarnLockEntry struct {\n\t// Resolved is URL where this package was downloaded from\n\tResolved string `mapstructure:\"resolved\" json:\"resolved\"`\n\n\t// Integrity is Subresource Integrity hash for verification (SRI format)\n\tIntegrity string `mapstructure:\"integrity\" json:\"integrity\"`\n\n\t// Dependencies is a map of dependencies and their versions\n\tDependencies map[string]string `mapstructure:\"dependencies\" json:\"dependencies\"`\n}\n\n// PnpmLockResolution contains package resolution metadata from pnpm lockfiles, including the integrity hash used for verification.\ntype PnpmLockResolution struct {\n\t// Integrity is Subresource Integrity hash for verification (SRI format)\n\tIntegrity string `mapstructure:\"integrity\" json:\"integrity\"`\n}\n\n// PnpmLockEntry represents a single entry in the \"packages\" section of a pnpm-lock.yaml file.\ntype PnpmLockEntry struct {\n\t// Resolution is the resolution information for the package\n\tResolution PnpmLockResolution `mapstructure:\"resolution\" json:\"resolution\"`\n\n\t// Dependencies is a map of dependencies and their versions\n\tDependencies map[string]string `mapstructure:\"dependencies\" json:\"dependencies\"`\n}\n"
  },
  {
    "path": "syft/pkg/ocaml.go",
    "content": "package pkg\n\n// OpamPackage represents an OCaml package managed by the OPAM package manager with metadata from .opam files.\ntype OpamPackage struct {\n\t// Name is the package name as found in the .opam file\n\tName string `toml:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the .opam file\n\tVersion string `toml:\"version\" json:\"version\"`\n\n\t// Licenses are the list of applicable licenses\n\tLicenses []string `mapstructure:\"licenses\" json:\"licenses\"`\n\n\t// URL is download URL for the package source\n\tURL string `mapstructure:\"url\" json:\"url\"`\n\n\t// Checksums are the list of checksums for verification\n\tChecksums []string `mapstructure:\"checksums\" json:\"checksum\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `json:\"homepage\"`\n\n\t// Dependencies are the list of required dependencies\n\tDependencies []string `toml:\"dependencies\" json:\"dependencies\"`\n}\n"
  },
  {
    "path": "syft/pkg/package.go",
    "content": "/*\nPackage pkg provides the data structures for a package, a package catalog, package types, and domain-specific metadata.\n*/\npackage pkg\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// Package represents an application or library that has been bundled into a distributable format.\n// TODO: if we ignore FoundBy for ID generation should we merge the field to show it was found in two places?\ntype Package struct {\n\t// id is a content-addressable identifier for this package, computed from most attribute values (applied recursively)\n\tid artifact.ID `hash:\"ignore\"`\n\n\t// Name is the package name\n\tName string\n\n\t// Version is the package version\n\tVersion string\n\n\t// FoundBy is the specific cataloger that discovered this package\n\tFoundBy string `hash:\"ignore\" cyclonedx:\"foundBy\"`\n\n\t// Locations are the locations that lead to the discovery of this package (note: not necessarily the locations that make up the package)\n\tLocations file.LocationSet\n\n\t// Licenses are the licenses discovered from the package metadata\n\tLicenses LicenseSet\n\n\t// Language is the language this package was written in (e.g. JavaScript, Python, etc)\n\tLanguage Language `hash:\"ignore\" cyclonedx:\"language\"`\n\n\t// Type is the ecosystem the package belongs to (e.g. Npm, Yarn, Python, Rpm, Deb, etc)\n\tType Type `cyclonedx:\"type\"`\n\n\t// CPEs are all possible Common Platform Enumerators (note: NOT included in ID since derived from other fields)\n\tCPEs []cpe.CPE `hash:\"ignore\"`\n\n\t// PURL is the Package URL (see https://github.com/package-url/purl-spec)\n\tPURL string `hash:\"ignore\"`\n\n\t// Metadata is additional data found while parsing the package source\n\tMetadata any\n}\n\nfunc (p *Package) OverrideID(id artifact.ID) {\n\tp.id = id\n}\n\nfunc (p *Package) SetID() {\n\tid, err := artifact.IDByHash(p)\n\tif err != nil {\n\t\t// TODO: what to do in this case?\n\t\tlog.Debugf(\"unable to get fingerprint of package=%s@%s: %+v\", p.Name, p.Version, err)\n\t\treturn\n\t}\n\tp.id = id\n}\n\nfunc (p Package) ID() artifact.ID {\n\treturn p.id\n}\n\n// Stringer to represent a package.\nfunc (p Package) String() string {\n\treturn fmt.Sprintf(\"Pkg(name=%q version=%q type=%q id=%q)\", p.Name, p.Version, p.Type, p.id)\n}\n\nfunc (p *Package) merge(other Package) error {\n\tif p.id != other.id {\n\t\treturn fmt.Errorf(\"cannot merge packages with different IDs: %q vs %q\", p.id, other.id)\n\t}\n\n\tif p.PURL != other.PURL {\n\t\tlog.Debugf(\"merging packages have with different pURLs: %q=%q vs %q=%q\", p.id, p.PURL, other.id, other.PURL)\n\t}\n\n\tp.Locations.Add(other.Locations.ToSlice()...)\n\tp.Licenses.Add(other.Licenses.ToSlice()...)\n\n\tp.CPEs = cpe.Merge(p.CPEs, other.CPEs)\n\n\tif p.PURL == \"\" {\n\t\tp.PURL = other.PURL\n\t}\n\treturn nil\n}\n\n// IsValid checks whether a package has the minimum necessary info\n// which is a non-empty name.\n// The nil-check was added as a helper as often, in this code base, packages\n// move between callers as pointers.\n// CycloneDX and SPDX define Name as the minimum required info for a valid package:\n// * https://spdx.github.io/spdx-spec/package-information/#73-package-version-field\n// * https://cyclonedx.org/docs/1.4/json/#components_items_name\nfunc IsValid(p *Package) bool {\n\treturn p != nil && p.Name != \"\"\n}\n\n//nolint:gocognit\nfunc Less(i, j Package) bool {\n\tif i.Name == j.Name {\n\t\tif i.Version == j.Version {\n\t\t\tiLocations := i.Locations.ToSlice()\n\t\t\tjLocations := j.Locations.ToSlice()\n\t\t\tif i.Type == j.Type {\n\t\t\t\tmaxLen := len(iLocations)\n\t\t\t\tif len(jLocations) > maxLen {\n\t\t\t\t\tmaxLen = len(jLocations)\n\t\t\t\t}\n\t\t\t\tfor l := 0; l < maxLen; l++ {\n\t\t\t\t\tif len(iLocations) < l+1 || len(jLocations) < l+1 {\n\t\t\t\t\t\tif len(iLocations) == len(jLocations) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn len(iLocations) < len(jLocations)\n\t\t\t\t\t}\n\t\t\t\t\tif iLocations[l].RealPath == jLocations[l].RealPath {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\treturn iLocations[l].RealPath < jLocations[l].RealPath\n\t\t\t\t}\n\t\t\t\t// compare remaining metadata as a final fallback\n\t\t\t\t// note: we cannot guarantee that IDs (which digests the metadata) are stable enough to sort on\n\t\t\t\t// when there are potentially missing elements there is too much reduction in the dimensions to\n\t\t\t\t// lean on ID comparison. The best fallback is to look at the string representation of the metadata.\n\t\t\t\treturn strings.Compare(fmt.Sprintf(\"%#v\", i.Metadata), fmt.Sprintf(\"%#v\", j.Metadata)) < 0\n\t\t\t}\n\t\t\treturn i.Type < j.Type\n\t\t}\n\t\treturn i.Version < j.Version\n\t}\n\treturn i.Name < j.Name\n}\nfunc Sort(pkgs []Package) {\n\tsort.SliceStable(pkgs, func(i, j int) bool {\n\t\treturn Less(pkgs[i], pkgs[j])\n\t})\n}\n"
  },
  {
    "path": "syft/pkg/package_test.go",
    "content": "package pkg\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/cpe\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nfunc TestIDUniqueness(t *testing.T) {\n\tctx := context.TODO()\n\toriginalLocation := file.NewVirtualLocationFromCoordinates(\n\t\tfile.Coordinates{\n\t\t\tRealPath:     \"39.0742° N, 21.8243° E\",\n\t\t\tFileSystemID: \"Earth\",\n\t\t},\n\t\t\"/Ancient-Greece\",\n\t)\n\n\toriginalPkg := Package{\n\t\tName:    \"pi\",\n\t\tVersion: \"3.14\",\n\t\tFoundBy: \"Archimedes\",\n\t\tLocations: file.NewLocationSet(\n\t\t\toriginalLocation,\n\t\t),\n\t\tLicenses: NewLicenseSet(\n\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\tNewLicenseWithContext(ctx, \"cc0-1.0\"),\n\t\t),\n\t\tLanguage: \"math\",\n\t\tType:     PythonPkg,\n\t\tCPEs: []cpe.CPE{\n\t\t\tcpe.Must(`cpe:2.3:a:Archimedes:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource),\n\t\t},\n\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\tMetadata: PythonPackage{\n\t\t\tName:                 \"pi\",\n\t\t\tVersion:              \"3.14\",\n\t\t\tAuthor:               \"Archimedes\",\n\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\tPlatform:             \"universe\",\n\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t},\n\t}\n\n\t// this is a set of differential tests, ensuring that select mutations are reflected in the fingerprint (or not)\n\ttests := []struct {\n\t\tname                 string\n\t\ttransform            func(pkg Package) Package\n\t\texpectedIDComparison assert.ComparisonAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"go case (no transform)\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\t// do nothing!\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"same metadata is ignored\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\t// note: this is the same as the original values, just a new allocation\n\t\t\t\tpkg.Metadata = PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t}\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"licenses order is ignored\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\t// note: same as the original package, only a different order\n\t\t\t\tpkg.Licenses = NewLicenseSet(\n\t\t\t\t\tNewLicenseWithContext(ctx, \"cc0-1.0\"),\n\t\t\t\t\tNewLicenseWithContext(ctx, \"MIT\"),\n\t\t\t\t)\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"name is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Name = \"new!\"\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"location is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tlocations := file.NewLocationSet(pkg.Locations.ToSlice()...)\n\t\t\t\tlocations.Add(file.NewLocation(\"/somewhere/new\"))\n\t\t\t\tpkg.Locations = locations\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"licenses is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Licenses = NewLicenseSet(NewLicenseWithContext(ctx, \"new!\"))\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"same path for different filesystem is NOT reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tnewLocation := originalLocation\n\t\t\t\tnewLocation.FileSystemID = \"Mars\"\n\n\t\t\t\tpkg.Locations = file.NewLocationSet(newLocation)\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple equivalent paths for different filesystem is NOT reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tnewLocation := originalLocation\n\t\t\t\tnewLocation.FileSystemID = \"Mars\"\n\n\t\t\t\tlocations := file.NewLocationSet(pkg.Locations.ToSlice()...)\n\t\t\t\tlocations.Add(newLocation, originalLocation)\n\n\t\t\t\tpkg.Locations = locations\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"version is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Version = \"new!\"\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"type is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Type = RustPkg\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"CPEs is ignored\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.CPEs = []cpe.CPE{}\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"pURL is ignored\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.PURL = \"new!\"\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"language is NOT reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Language = Rust\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.Equal,\n\t\t},\n\t\t{\n\t\t\tname: \"metadata mutation is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tmetadata := pkg.Metadata.(PythonPackage)\n\t\t\t\tmetadata.Name = \"new!\"\n\t\t\t\tpkg.Metadata = metadata\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"new metadata is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Metadata = PythonPackage{\n\t\t\t\t\tName: \"new!\",\n\t\t\t\t}\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t\t{\n\t\t\tname: \"nil metadata is reflected\",\n\t\t\ttransform: func(pkg Package) Package {\n\t\t\t\tpkg.Metadata = nil\n\t\t\t\treturn pkg\n\t\t\t},\n\t\t\texpectedIDComparison: assert.NotEqual,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\toriginalPkg.SetID()\n\t\t\ttransformedPkg := test.transform(originalPkg)\n\t\t\ttransformedPkg.SetID()\n\n\t\t\toriginalFingerprint := originalPkg.ID()\n\t\t\tassert.NotEmpty(t, originalFingerprint)\n\t\t\ttransformedFingerprint := transformedPkg.ID()\n\t\t\tassert.NotEmpty(t, transformedFingerprint)\n\n\t\t\ttest.expectedIDComparison(t, originalFingerprint, transformedFingerprint)\n\t\t})\n\t}\n}\n\nfunc TestPackage_Merge(t *testing.T) {\n\toriginalLocation := file.NewVirtualLocationFromCoordinates(\n\t\tfile.Coordinates{\n\t\t\tRealPath:     \"39.0742° N, 21.8243° E\",\n\t\t\tFileSystemID: \"Earth\",\n\t\t},\n\t\t\"/Ancient-Greece\",\n\t)\n\n\tsimilarLocation := originalLocation\n\tsimilarLocation.FileSystemID = \"Mars\"\n\n\ttests := []struct {\n\t\tname     string\n\t\tsubject  Package\n\t\tother    Package\n\t\texpected *Package\n\t}{\n\t\t{\n\t\t\tname: \"merge two packages (different cpes + locations)\",\n\t\t\tsubject: Package{\n\t\t\t\tName:    \"pi\",\n\t\t\t\tVersion: \"3.14\",\n\t\t\t\tFoundBy: \"Archimedes\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\toriginalLocation,\n\t\t\t\t),\n\t\t\t\tLanguage: \"math\",\n\t\t\t\tType:     PythonPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:Archimedes:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\t\t\tMetadata: PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tother: Package{\n\t\t\t\tName:    \"pi\",\n\t\t\t\tVersion: \"3.14\",\n\t\t\t\tFoundBy: \"Archimedes\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\tsimilarLocation, // NOTE: difference; we have a different layer but the same path\n\t\t\t\t),\n\t\t\t\tLanguage: \"math\",\n\t\t\t\tType:     PythonPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:DIFFERENT:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource), // NOTE: difference\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\t\t\tMetadata: PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: &Package{\n\t\t\t\tName:    \"pi\",\n\t\t\t\tVersion: \"3.14\",\n\t\t\t\tFoundBy: \"Archimedes\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\toriginalLocation,\n\t\t\t\t\tsimilarLocation, // NOTE: merge!\n\t\t\t\t),\n\t\t\t\tLanguage: \"math\",\n\t\t\t\tType:     PythonPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:Archimedes:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource),\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:DIFFERENT:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource), // NOTE: merge!\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\t\t\tMetadata: PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"error when there are different IDs\",\n\t\t\tsubject: Package{\n\t\t\t\tName:    \"pi\",\n\t\t\t\tVersion: \"3.14\",\n\t\t\t\tFoundBy: \"Archimedes\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\toriginalLocation,\n\t\t\t\t),\n\t\t\t\tLanguage: \"math\",\n\t\t\t\tType:     PythonPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:Archimedes:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\t\t\tMetadata: PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tother: Package{\n\t\t\t\tName:    \"pi-DIFFERENT\", // difference\n\t\t\t\tVersion: \"3.14\",\n\t\t\t\tFoundBy: \"Archimedes\",\n\t\t\t\tLocations: file.NewLocationSet(\n\t\t\t\t\toriginalLocation,\n\t\t\t\t),\n\t\t\t\tLanguage: \"math\",\n\t\t\t\tType:     PythonPkg,\n\t\t\t\tCPEs: []cpe.CPE{\n\t\t\t\t\tcpe.Must(`cpe:2.3:a:Archimedes:pi:3.14:*:*:*:*:math:*:*`, cpe.NVDDictionaryLookupSource),\n\t\t\t\t},\n\t\t\t\tPURL: \"pkg:pypi/pi@3.14\",\n\t\t\t\tMetadata: PythonPackage{\n\t\t\t\t\tName:                 \"pi\",\n\t\t\t\t\tVersion:              \"3.14\",\n\t\t\t\t\tAuthor:               \"Archimedes\",\n\t\t\t\t\tAuthorEmail:          \"Archimedes@circles.io\",\n\t\t\t\t\tPlatform:             \"universe\",\n\t\t\t\t\tSitePackagesRootPath: \"Pi\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttt.subject.SetID()\n\t\t\ttt.other.SetID()\n\n\t\t\terr := tt.subject.merge(tt.other)\n\t\t\tif tt.expected == nil {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\ttt.expected.SetID()\n\t\t\trequire.Equal(t, tt.expected.id, tt.subject.id)\n\n\t\t\tif diff := cmp.Diff(*tt.expected, tt.subject,\n\t\t\t\tcmp.AllowUnexported(Package{}),\n\t\t\t\tcmp.Comparer(\n\t\t\t\t\tfunc(x, y file.LocationSet) bool {\n\t\t\t\t\t\txs := x.ToSlice()\n\t\t\t\t\t\tys := y.ToSlice()\n\n\t\t\t\t\t\tif len(xs) != len(ys) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor i, xe := range xs {\n\t\t\t\t\t\t\tye := ys[i]\n\t\t\t\t\t\t\tif !locationComparer(xe, ye) {\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\tcmp.Comparer(\n\t\t\t\t\tfunc(x, y LicenseSet) bool {\n\t\t\t\t\t\txs := x.ToSlice()\n\t\t\t\t\t\tys := y.ToSlice()\n\n\t\t\t\t\t\tif len(xs) != len(ys) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor i, xe := range xs {\n\t\t\t\t\t\t\tye := ys[i]\n\t\t\t\t\t\t\tif !licenseComparer(xe, ye) {\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\tcmp.Comparer(locationComparer),\n\t\t\t); diff != \"\" {\n\t\t\t\tt.Errorf(\"unexpected result from parsing (-expected +actual)\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc licenseComparer(x, y License) bool {\n\treturn cmp.Equal(x, y, cmp.Comparer(locationComparer))\n}\n\nfunc locationComparer(x, y file.Location) bool {\n\treturn cmp.Equal(x.Coordinates, y.Coordinates) && cmp.Equal(x.AccessPath, y.AccessPath)\n}\n\nfunc TestIsValid(t *testing.T) {\n\tcases := []struct {\n\t\tname  string\n\t\tgiven *Package\n\t\twant  bool\n\t}{\n\t\t{\n\t\t\tname:  \"nil\",\n\t\t\tgiven: nil,\n\t\t\twant:  false,\n\t\t},\n\t\t{\n\t\t\tname:  \"has-name\",\n\t\t\tgiven: &Package{Name: \"paul\"},\n\t\t\twant:  true,\n\t\t},\n\t\t{\n\t\t\tname:  \"has-no-name\",\n\t\t\tgiven: &Package{},\n\t\t\twant:  false,\n\t\t},\n\t}\n\n\tfor _, c := range cases {\n\t\trequire.Equal(t, c.want, IsValid(c.given), \"when package: %s\", c.name)\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/php.go",
    "content": "package pkg\n\n// PhpComposerInstalledEntry represents a single package entry from a composer v1/v2 \"installed.json\" files (very similar to composer.lock files).\ntype PhpComposerInstalledEntry PhpComposerLockEntry\n\n// PhpComposerLockEntry represents a single package entry found from a composer.lock file.\ntype PhpComposerLockEntry struct {\n\t// Name is package name in vendor/package format (e.g. symfony/console)\n\tName string `json:\"name\"`\n\n\t// Version is the package version\n\tVersion string `json:\"version\"`\n\n\t// Source is the source repository information for development (typically git repo, used when passing --prefer-source). Originates from source code repository.\n\tSource PhpComposerExternalReference `json:\"source\"`\n\n\t// Dist is distribution archive information for production (typically zip/tar, default install method). Packaged version of released code.\n\tDist PhpComposerExternalReference `json:\"dist\"`\n\n\t// Require is runtime dependencies with version constraints (package will not install unless these requirements can be met)\n\tRequire map[string]string `json:\"require,omitempty\"`\n\n\t// Provide is virtual packages/functionality provided by this package (allows other packages to depend on capabilities)\n\tProvide map[string]string `json:\"provide,omitempty\"`\n\n\t// RequireDev is development-only dependencies (not installed in production, only when developing this package or running tests)\n\tRequireDev map[string]string `json:\"require-dev,omitempty\"`\n\n\t// Suggest is optional but recommended dependencies (suggestions for packages that would extend functionality)\n\tSuggest map[string]string `json:\"suggest,omitempty\"`\n\n\t// License is the list of license identifiers (SPDX format)\n\tLicense []string `json:\"license,omitempty\"`\n\n\t// Type is package type indicating purpose (library=reusable code, project=application, metapackage=aggregates dependencies, etc.)\n\tType string `json:\"type,omitempty\"`\n\n\t// NotificationURL is the URL to notify when package is installed (for tracking/statistics)\n\tNotificationURL string `json:\"notification-url,omitempty\"`\n\n\t// Bin is the list of binary/executable files that should be added to PATH\n\tBin []string `json:\"bin,omitempty\"`\n\n\t// Authors are the list of package authors with name/email/homepage\n\tAuthors []PhpComposerAuthors `json:\"authors,omitempty\"`\n\n\t// Description is a human-readable package description\n\tDescription string `json:\"description,omitempty\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `json:\"homepage,omitempty\"`\n\n\t// Keywords are the list of keywords for package discovery/search\n\tKeywords []string `json:\"keywords,omitempty\"`\n\n\t// Time is timestamp when this package version was released\n\tTime string `json:\"time,omitempty\"`\n}\n\n// PhpComposerExternalReference represents source or distribution information for a PHP package, indicating where the package code is retrieved from.\ntype PhpComposerExternalReference struct {\n\t// Type is reference type (git for source VCS, zip/tar for dist archives)\n\tType string `json:\"type\"`\n\n\t// URL is the URL to the resource (git repository URL or archive download URL)\n\tURL string `json:\"url\"`\n\n\t// Reference is git commit hash or version tag for source, or archive version for dist\n\tReference string `json:\"reference\"`\n\n\t// Shasum is SHA hash of the archive file for integrity verification (dist only)\n\tShasum string `json:\"shasum,omitempty\"`\n}\n\n// PhpComposerAuthors represents author information for a PHP Composer package from the authors field in composer.json.\ntype PhpComposerAuthors struct {\n\t// Name is author's full name\n\tName string `json:\"name\"`\n\n\t// Email is author's email address\n\tEmail string `json:\"email,omitempty\"`\n\n\t// Homepage is author's personal or company website\n\tHomepage string `json:\"homepage,omitempty\"`\n}\n\n// PhpPeclEntry represents a single package entry found within php pecl metadata files.\n//\n// Deprecated: please use PhpPearEntry instead with the pear cataloger.\ntype PhpPeclEntry PhpPearEntry\n\n// PhpPearEntry represents a single package entry found within php pear metadata files.\ntype PhpPearEntry struct {\n\t// Name is the package name\n\tName string `json:\"name\"`\n\n\t// Channel is PEAR channel this package is from\n\tChannel string `json:\"channel,omitempty\"`\n\n\t// Version is the package version\n\tVersion string `json:\"version\"`\n\n\t// License is the list of applicable licenses\n\tLicense []string `json:\"license,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/portage.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\nvar _ FileOwner = (*PortageEntry)(nil)\n\n// PortageEntry represents a single package entry in the portage DB flat-file store.\ntype PortageEntry struct {\n\t// InstalledSize is total size of installed files in bytes\n\tInstalledSize int `json:\"installedSize\" cyclonedx:\"installedSize\"`\n\n\t// Licenses is license string which may be an expression (e.g. \"GPL-2 OR Apache-2.0\")\n\tLicenses string `json:\"licenses,omitempty\"`\n\n\t// Files are the files installed by this package (tracked in CONTENTS file)\n\tFiles []PortageFileRecord `json:\"files\"`\n}\n\n// PortageFileRecord represents a single file attributed to a portage package.\ntype PortageFileRecord struct {\n\t// Path is the file path relative to the filesystem root\n\tPath string `json:\"path\"`\n\n\t// Digest is file content hash (MD5 for regular files in CONTENTS format: \"obj filename md5hash mtime\")\n\tDigest *file.Digest `json:\"digest,omitempty\"`\n}\n\nfunc (m PortageEntry) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/python.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\n\t\"github.com/scylladb/go-set/strset\"\n)\n\nvar _ FileOwner = (*PythonPackage)(nil)\n\n// PythonPackage represents all captured data for a python egg or wheel package (specifically as outlined in\n// the PyPA core metadata specification https://packaging.python.org/en/latest/specifications/core-metadata/).\n// Historically these were defined in PEPs 345, 314, and 241, but have been superseded by PEP 566. This means that this\n// struct can (partially) express at least versions 1.0, 1.1, 1.2, 2.1, 2.2, and 2.3 of the metadata format.\ntype PythonPackage struct {\n\t// Name is the package name from the Name field in PKG-INFO or METADATA.\n\tName string `json:\"name\" mapstructure:\"Name\"`\n\t// Version is the package version from the Version field in PKG-INFO or METADATA.\n\tVersion string `json:\"version\" mapstructure:\"Version\"`\n\t// Author is the package author name from the Author field.\n\tAuthor string `json:\"author\" mapstructure:\"Author\"`\n\t// AuthorEmail is the package author's email address from the Author-Email field.\n\tAuthorEmail string `json:\"authorEmail\" mapstructure:\"AuthorEmail\"`\n\t// Platform indicates the target platform for the package (e.g., \"any\", \"linux\", \"win32\").\n\tPlatform string `json:\"platform\" mapstructure:\"Platform\"`\n\t// Files are the installed files listed in the RECORD file for wheels or installed-files.txt for eggs.\n\tFiles []PythonFileRecord `json:\"files,omitempty\"`\n\t// SitePackagesRootPath is the root directory path containing the package (e.g., \"/usr/lib/python3.9/site-packages\").\n\tSitePackagesRootPath string `json:\"sitePackagesRootPath\"`\n\t// TopLevelPackages are the top-level Python module names from top_level.txt file.\n\tTopLevelPackages []string `json:\"topLevelPackages,omitempty\"`\n\t// DirectURLOrigin contains VCS or direct URL installation information from direct_url.json.\n\tDirectURLOrigin *PythonDirectURLOriginInfo `json:\"directUrlOrigin,omitempty\"`\n\t// RequiresPython specifies the Python version requirement (e.g., \">=3.6\").\n\tRequiresPython string `json:\"requiresPython,omitempty\" mapstructure:\"RequiresPython\"`\n\t// RequiresDist lists the package dependencies with version specifiers from Requires-Dist fields.\n\tRequiresDist []string `json:\"requiresDist,omitempty\" mapstructure:\"RequiresDist\"`\n\t// ProvidesExtra lists optional feature names that can be installed via extras (e.g., \"dev\", \"test\").\n\tProvidesExtra []string `json:\"providesExtra,omitempty\" mapstructure:\"ProvidesExtra\"`\n}\n\n// PythonFileDigest represents the file metadata for a single file attributed to a python package.\ntype PythonFileDigest struct {\n\t// Algorithm is the hash algorithm used (e.g., \"sha256\").\n\tAlgorithm string `json:\"algorithm\"`\n\t// Value is the hex-encoded hash digest value.\n\tValue string `json:\"value\"`\n}\n\n// PythonFileRecord represents a single entry within a RECORD file for a python wheel or egg package\ntype PythonFileRecord struct {\n\t// Path is the installed file path from the RECORD file.\n\tPath string `json:\"path\"`\n\t// Digest contains the hash algorithm and value for file integrity verification.\n\tDigest *PythonFileDigest `json:\"digest,omitempty\"`\n\t// Size is the file size in bytes as a string.\n\tSize string `json:\"size,omitempty\"`\n}\n\n// PythonDirectURLOriginInfo represents installation source metadata from direct_url.json for packages installed from VCS or direct URLs.\ntype PythonDirectURLOriginInfo struct {\n\t// URL is the source URL from which the package was installed.\n\tURL string `json:\"url\"`\n\t// CommitID is the VCS commit hash if installed from version control.\n\tCommitID string `json:\"commitId,omitempty\"`\n\t// VCS is the version control system type (e.g., \"git\", \"hg\").\n\tVCS string `json:\"vcs,omitempty\"`\n}\n\nfunc (m PythonPackage) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n\n// PythonPdmLockExtraVariant represents a specific extras combination variant within a PDM lock file.\n// PDM creates separate package entries for different extras combinations; this struct captures those variants.\ntype PythonPdmLockExtraVariant struct {\n\t// Extras are the optional extras enabled for this variant (e.g., [\"toml\"], [\"dev\"], or [\"toml\", \"dev\"])\n\tExtras []string `json:\"extras\"`\n\t// Dependencies are the dependencies specific to this extras variant\n\tDependencies []string `json:\"dependencies,omitempty\"`\n\t// Files are the package files specific to this variant (only populated if different from base)\n\tFiles []PythonPdmFileEntry `json:\"files,omitempty\"`\n\t// Marker is the environment conditional expression for this variant (e.g., \"python_version < \\\"3.11\\\"\")\n\tMarker string `json:\"marker,omitempty\"`\n}\n\n// PythonPdmLockEntry represents a single package entry within a pdm.lock file.\ntype PythonPdmLockEntry struct {\n\t// Summary provides a description of the package\n\tSummary string `mapstructure:\"summary\" json:\"summary\"`\n\t// Files are the package files with their paths and hash digests (for the base package without extras)\n\tFiles []PythonPdmFileEntry `mapstructure:\"files\" json:\"files\"`\n\t// Marker is the \"environment\" --conditional expressions that determine whether a package should be installed based on the runtime environment\n\tMarker string `mapstructure:\"marker\" json:\"marker,omitempty\"`\n\t// RequiresPython specifies the Python version requirement (e.g., \">=3.6\").\n\tRequiresPython string `mapstructure:\"RequiresPython\" json:\"requiresPython,omitempty\" `\n\t// Dependencies are the dependency specifications for the base package (without extras)\n\tDependencies []string `mapstructure:\"dependencies\" json:\"dependencies,omitempty\"`\n\t// Extras contains variants for different extras combinations (PDM may have multiple entries per package)\n\tExtras []PythonPdmLockExtraVariant `json:\"extras,omitempty\"`\n}\n\ntype PythonPdmFileEntry struct {\n\t// URL is the file download URL\n\tURL string `mapstructure:\"url\" json:\"url\"`\n\t// Digest is the hash digest of the file hosted at the URL\n\tDigest PythonFileDigest `mapstructure:\"hash\" json:\"digest\"`\n}\n\n// PythonPipfileLockEntry represents a single package entry within a Pipfile.lock file.\ntype PythonPipfileLockEntry struct {\n\t// Hashes are the package file hash values in the format \"algorithm:digest\" for integrity verification.\n\tHashes []string `mapstructure:\"hashes\" json:\"hashes\"`\n\t// Index is the PyPI index name where the package should be fetched from.\n\tIndex string `mapstructure:\"index\" json:\"index\"`\n}\n\n// PythonPoetryLockEntry represents a single package entry within a Pipfile.lock file.\ntype PythonPoetryLockEntry struct {\n\t// Index is the package repository name where the package should be fetched from.\n\tIndex string `mapstructure:\"index\" json:\"index\"`\n\t// Dependencies are the package's runtime dependencies with version constraints.\n\tDependencies []PythonPoetryLockDependencyEntry `json:\"dependencies\"`\n\t// Extras are optional feature groups that include additional dependencies.\n\tExtras []PythonPoetryLockExtraEntry `json:\"extras,omitempty\"`\n}\n\n// PythonPoetryLockDependencyEntry represents a single dependency entry within a Poetry lock file.\ntype PythonPoetryLockDependencyEntry struct {\n\t// Name is the dependency package name.\n\tName string `json:\"name\"`\n\t// Version is the locked version or version constraint for the dependency.\n\tVersion string `json:\"version\"`\n\t// Optional indicates whether this dependency is optional (only needed for certain extras).\n\tOptional bool `json:\"optional\"`\n\t// Markers are environment marker expressions that conditionally enable the dependency (e.g., \"python_version >= '3.8'\").\n\tMarkers string `json:\"markers,omitempty\"`\n\t// Extras are the optional feature names from the dependency that should be installed.\n\tExtras []string `json:\"extras,omitempty\"`\n}\n\n// PythonPoetryLockExtraEntry represents an optional feature group in a Poetry lock file.\ntype PythonPoetryLockExtraEntry struct {\n\t// Name is the optional feature name (e.g., \"dev\", \"test\").\n\tName string `json:\"name\"`\n\t// Dependencies are the package names required when this extra is installed.\n\tDependencies []string `json:\"dependencies\"`\n}\n\n// PythonRequirementsEntry represents a single entry within a [*-]requirements.txt file.\ntype PythonRequirementsEntry struct {\n\t// Name is the package name from the requirements file.\n\tName string `json:\"name\" mapstructure:\"Name\"`\n\t// Extras are the optional features to install from the package (e.g., package[dev,test]).\n\tExtras []string `json:\"extras,omitempty\" mapstructure:\"Extras\"`\n\t// VersionConstraint specifies version requirements (e.g., \">=1.0,<2.0\").\n\tVersionConstraint string `json:\"versionConstraint\" mapstructure:\"VersionConstraint\"`\n\t// URL is the direct download URL or VCS URL if specified instead of a PyPI package.\n\tURL string `json:\"url,omitempty\" mapstructure:\"URL\"`\n\t// Markers are environment marker expressions for conditional installation (e.g., \"python_version >= '3.8'\").\n\tMarkers string `json:\"markers,omitempty\" mapstructure:\"Markers\"`\n}\n\n// PythonUvLockDependencyEntry represents a single dependency entry within a uv lock file.\ntype PythonUvLockDependencyEntry struct {\n\t// Name is the dependency package name.\n\tName string `json:\"name\"`\n\t// Optional indicates whether this dependency is optional (only needed for certain extras).\n\tOptional bool `json:\"optional\"`\n\t// Markers are environment marker expressions that conditionally enable the dependency (e.g., \"python_version >= '3.8'\").\n\tMarkers string `json:\"markers,omitempty\"`\n\t// Extras are the optional feature names from the dependency that should be installed.\n\tExtras []string `json:\"extras,omitempty\"`\n}\n\n// PythonUvLockExtraEntry represents an optional feature group in a uv lock file.\ntype PythonUvLockExtraEntry struct {\n\t// Name is the optional feature name (e.g., \"dev\", \"test\").\n\tName string `json:\"name\"`\n\t// Dependencies are the package names required when this extra is installed.\n\tDependencies []string `json:\"dependencies\"`\n}\n\n// PythonUvLockEntry represents a single package entry within a uv.lock file.\ntype PythonUvLockEntry struct {\n\t// Index is the package repository name where the package should be fetched from.\n\tIndex string `mapstructure:\"index\" json:\"index\"`\n\t// Dependencies are the package's runtime dependencies with version constraints.\n\tDependencies []PythonUvLockDependencyEntry `json:\"dependencies\"`\n\t// Extras are optional feature groups that include additional dependencies.\n\tExtras []PythonUvLockExtraEntry `json:\"extras,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/python_test.go",
    "content": "package pkg\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n)\n\nfunc TestPythonMetadata_FileOwner(t *testing.T) {\n\ttests := []struct {\n\t\tmetadata PythonPackage\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tmetadata: PythonPackage{\n\t\t\t\tFiles: []PythonFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"/else\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/else\",\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tmetadata: PythonPackage{\n\t\t\t\tFiles: []PythonFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.expected, \",\"), func(t *testing.T) {\n\t\t\tactual := test.metadata.OwnedFiles()\n\t\t\tfor _, d := range deep.Equal(test.expected, actual) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/r.go",
    "content": "package pkg\n\n// Fields chosen by:\n//   docker run --rm -it rocker/r-ver bash\n//   $ install2.r ggplot2 # has a lot of dependencies\n//   $ find /usr/local/lib/R -name DESCRIPTION | xargs cat | grep -v '^\\s' | cut -d ':' -f 1 | sort | uniq -c | sort -nr\n//\n// For more information on the DESCRIPTION file see https://r-pkgs.org/description.html\n\n// RDescription represents metadata from an R package DESCRIPTION file containing package information, dependencies, and author details.\ntype RDescription struct {\n\t// Title is short one-line package title\n\tTitle string `json:\"title,omitempty\"`\n\n\t// Description is detailed package description\n\tDescription string `json:\"description,omitempty\"`\n\n\t// Author is package author(s)\n\tAuthor string `json:\"author,omitempty\"`\n\n\t// Maintainer is current package maintainer\n\tMaintainer string `json:\"maintainer,omitempty\"`\n\n\t// URL is the list of related URLs\n\tURL []string `json:\"url,omitempty\"`\n\n\t// Repository is CRAN or other repository name\n\tRepository string `json:\"repository,omitempty\"`\n\n\t// Built is R version and platform this was built with\n\tBuilt string `json:\"built,omitempty\"`\n\n\t// NeedsCompilation is whether this package requires compilation\n\tNeedsCompilation bool `json:\"needsCompilation,omitempty\"`\n\n\t// Imports are the packages imported in the NAMESPACE\n\tImports []string `json:\"imports,omitempty\"`\n\n\t// Depends are the packages this package depends on\n\tDepends []string `json:\"depends,omitempty\"`\n\n\t// Suggests are the optional packages that extend functionality\n\tSuggests []string `json:\"suggests,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/rockspec.go",
    "content": "package pkg\n\n// LuaRocksPackage represents a Lua package managed by the LuaRocks package manager with metadata from .rockspec files.\ntype LuaRocksPackage struct {\n\t// Name is the package name as found in the .rockspec file\n\tName string `json:\"name\"`\n\n\t// Version is the package version as found in the .rockspec file\n\tVersion string `json:\"version\"`\n\n\t// License is license identifier\n\tLicense string `json:\"license\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `json:\"homepage\"`\n\n\t// Description is a human-readable package description\n\tDescription string `json:\"description\"`\n\n\t// URL is the source download URL\n\tURL string `json:\"url\"`\n\n\t// Dependencies are the map of dependency names to version constraints\n\tDependencies map[string]string `json:\"dependencies\"`\n}\n"
  },
  {
    "path": "syft/pkg/rpm.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\n\t\"github.com/anchore/syft/syft/file\"\n)\n\n// RpmDBGlob is the glob pattern used to find RPM DB files. Where:\n// - /var/lib/rpm/... is the typical path for most distributions\n// - /usr/share/rpm/... is common for rpm-ostree distributions (coreos-like)\n// - Packages is the legacy Berkeley db based format\n// - Packages.db is the \"ndb\" format used in SUSE\n// - rpmdb.sqlite is the sqlite format used in fedora + derivates\nconst RpmDBGlob = \"**/{var/lib,usr/share,usr/lib/sysimage}/rpm/{Packages,Packages.db,rpmdb.sqlite}\"\n\n// RpmManifestGlob is used in CBL-Mariner distroless images\nconst RpmManifestGlob = \"**/var/lib/rpmmanifest/container-manifest-2\"\n\nvar _ FileOwner = (*RpmDBEntry)(nil)\n\n// RpmArchive represents package metadata extracted directly from a .rpm archive file, containing the same information as an RPM database entry.\ntype RpmArchive RpmDBEntry\n\n// RpmDBEntry represents all captured data from a RPM DB package entry.\ntype RpmDBEntry struct {\n\t// Name is the RPM package name as found in the RPM database.\n\tName string `json:\"name\"`\n\n\t// Version is the upstream version of the package.\n\tVersion string `json:\"version\"`\n\n\t// Epoch is the version epoch used to force upgrade ordering (null if not set).\n\tEpoch *int `json:\"epoch\"  cyclonedx:\"epoch\" jsonschema:\"nullable\"`\n\n\t// Arch is the target CPU architecture (e.g., \"x86_64\", \"aarch64\", \"noarch\").\n\tArch string `json:\"architecture\"`\n\n\t// Release is the package release number or distribution-specific version suffix.\n\tRelease string `json:\"release\" cyclonedx:\"release\"`\n\n\t// SourceRpm is the source RPM filename that was used to build this package.\n\tSourceRpm string `json:\"sourceRpm\" cyclonedx:\"sourceRpm\"`\n\n\t// Signatures contains GPG signature metadata for package verification.\n\tSignatures []RpmSignature `json:\"signatures,omitempty\" cyclonedx:\"signatures\"`\n\n\t// Size is the total installed size of the package in bytes.\n\tSize int `json:\"size\" cyclonedx:\"size\"`\n\n\t// Vendor is the organization that packaged the software.\n\tVendor string `json:\"vendor\"`\n\n\t// ModularityLabel identifies the module stream for modular RPM packages (e.g., \"nodejs:12:20200101\").\n\tModularityLabel *string `json:\"modularityLabel,omitempty\" cyclonedx:\"modularityLabel\"`\n\n\t// Provides lists the virtual packages and capabilities this package provides.\n\tProvides []string `json:\"provides,omitempty\"`\n\n\t// Requires lists the dependencies required by this package.\n\tRequires []string `json:\"requires,omitempty\"`\n\n\t// Files are the file records for all files owned by this package.\n\tFiles []RpmFileRecord `json:\"files\"`\n}\n\n// RpmSignature represents a GPG signature for an RPM package used for authenticity verification.\ntype RpmSignature struct {\n\t// PublicKeyAlgorithm is the public key algorithm used for signing (e.g., \"RSA\").\n\tPublicKeyAlgorithm string `json:\"algo\"`\n\n\t// HashAlgorithm is the hash algorithm used for the signature (e.g., \"SHA256\").\n\tHashAlgorithm string `json:\"hash\"`\n\n\t// Created is the timestamp when the signature was created.\n\tCreated string `json:\"created\"`\n\n\t// IssuerKeyID is the GPG key ID that created the signature.\n\tIssuerKeyID string `json:\"issuer\"`\n}\n\nfunc (s RpmSignature) String() string {\n\tif s.PublicKeyAlgorithm == \"\" && s.HashAlgorithm == \"\" && s.Created == \"\" && s.IssuerKeyID == \"\" {\n\t\treturn \"\"\n\t}\n\t// mimics the output you would see from rpm -q --qf \"%{RSAHEADER}\"\n\t// e.g.\"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\"\n\treturn strings.Join([]string{s.PublicKeyAlgorithm + \"/\" + s.HashAlgorithm, s.Created, \"Key ID \" + s.IssuerKeyID}, \", \")\n}\n\n// RpmFileRecord represents the file metadata for a single file attributed to a RPM package.\ntype RpmFileRecord struct {\n\t// Path is the absolute file path where the file is installed.\n\tPath string `json:\"path\"`\n\n\t// Mode is the file permission mode bits following Unix stat.h conventions.\n\tMode RpmFileMode `json:\"mode\"`\n\n\t// Size is the file size in bytes.\n\tSize int `json:\"size\"`\n\n\t// Digest contains the hash algorithm and value for file integrity verification.\n\tDigest file.Digest `json:\"digest\"`\n\n\t// UserName is the owner username for the file.\n\tUserName string `json:\"userName\"`\n\n\t// GroupName is the group name for the file.\n\tGroupName string `json:\"groupName\"`\n\n\t// Flags indicates the file type (e.g., \"%config\", \"%doc\", \"%ghost\").\n\tFlags string `json:\"flags\"`\n}\n\n// RpmFileMode is the raw file mode for a single file. This can be interpreted as the linux stat.h mode (see https://pubs.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html)\ntype RpmFileMode uint16\n\nfunc (m RpmDBEntry) OwnedFiles() (result []string) {\n\ts := strset.New()\n\tfor _, f := range m.Files {\n\t\tif f.Path != \"\" {\n\t\t\ts.Add(f.Path)\n\t\t}\n\t}\n\tresult = s.List()\n\tsort.Strings(result)\n\treturn result\n}\n"
  },
  {
    "path": "syft/pkg/rpm_test.go",
    "content": "package pkg\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/go-test/deep\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestRpmMetadata_FileOwner(t *testing.T) {\n\ttests := []struct {\n\t\tmetadata RpmDBEntry\n\t\texpected []string\n\t}{\n\t\t{\n\t\t\tmetadata: RpmDBEntry{\n\t\t\t\tFiles: []RpmFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"/else\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/else\",\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tmetadata: RpmDBEntry{\n\t\t\t\tFiles: []RpmFileRecord{\n\t\t\t\t\t{Path: \"/somewhere\"},\n\t\t\t\t\t{Path: \"\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: []string{\n\t\t\t\t\"/somewhere\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(strings.Join(test.expected, \",\"), func(t *testing.T) {\n\t\t\tactual := test.metadata.OwnedFiles()\n\t\t\tfor _, d := range deep.Equal(test.expected, actual) {\n\t\t\t\tt.Errorf(\"diff: %+v\", d)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestRpmSignature_String(t *testing.T) {\n\ttests := []struct {\n\t\tname      string\n\t\tsignature RpmSignature\n\t\texpected  string\n\t}{\n\t\t{\n\t\t\tname: \"standard signature\",\n\t\t\tsignature: RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\tHashAlgorithm:      \"SHA256\",\n\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\tIssuerKeyID:        \"702d426d350d275d\",\n\t\t\t},\n\t\t\texpected: \"RSA/SHA256, Mon May 16 12:32:55 2022, Key ID 702d426d350d275d\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty fields\",\n\t\t\tsignature: RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"\",\n\t\t\t\tHashAlgorithm:      \"\",\n\t\t\t\tCreated:            \"\",\n\t\t\t\tIssuerKeyID:        \"\",\n\t\t\t},\n\t\t\texpected: \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"partial empty fields\",\n\t\t\tsignature: RpmSignature{\n\t\t\t\tPublicKeyAlgorithm: \"RSA\",\n\t\t\t\tHashAlgorithm:      \"\",\n\t\t\t\tCreated:            \"Mon May 16 12:32:55 2022\",\n\t\t\t\tIssuerKeyID:        \"\",\n\t\t\t},\n\t\t\texpected: \"RSA/, Mon May 16 12:32:55 2022, Key ID \",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.signature.String()\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/ruby.go",
    "content": "package pkg\n\n// RubyGemspec represents all metadata parsed from the *.gemspec file\ntype RubyGemspec struct {\n\t// Name is gem name as specified in the gemspec\n\tName string `mapstructure:\"name\" json:\"name\"`\n\n\t// Version is gem version as specified in the gemspec\n\tVersion string `mapstructure:\"version\" json:\"version\"`\n\n\t// Files is logical list of files in the gem (NOT directly usable as filesystem paths. Example: bundler gem lists \"lib/bundler/vendor/uri/lib/uri/ldap.rb\" but actual path is \"/usr/local/lib/ruby/3.2.0/bundler/vendor/uri/lib/uri/ldap.rb\". Would need gem installation path, ruby version, and env vars like GEM_HOME to resolve actual paths.)\n\tFiles []string `mapstructure:\"files\" json:\"files,omitempty\"`\n\n\t// Authors are the list of gem authors (stored as array regardless of using `author` or `authors` method in gemspec)\n\tAuthors []string `mapstructure:\"authors\" json:\"authors,omitempty\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `mapstructure:\"homepage\" json:\"homepage,omitempty\"`\n}\n"
  },
  {
    "path": "syft/pkg/rust.go",
    "content": "package pkg\n\n// RustCargoLockEntry represents a locked dependency from a Cargo.lock file with precise version and checksum information.\ntype RustCargoLockEntry struct {\n\t// Name is crate name as specified in Cargo.toml\n\tName string `toml:\"name\" json:\"name\"`\n\n\t// Version is crate version as specified in Cargo.toml\n\tVersion string `toml:\"version\" json:\"version\"`\n\n\t// Source is the source registry or repository URL in format \"registry+https://github.com/rust-lang/crates.io-index\" for registry packages\n\tSource string `toml:\"source\" json:\"source\"`\n\n\t// Checksum is content checksum for registry packages only (hexadecimal string). Cargo doesn't require or include checksums for git dependencies. Used to detect MITM attacks by verifying downloaded crate matches lockfile checksum.\n\tChecksum string `toml:\"checksum\" json:\"checksum\"`\n\n\t// Dependencies are the list of dependencies with version constraints\n\tDependencies []string `toml:\"dependencies\" json:\"dependencies\"`\n}\n\n// RustBinaryAuditEntry represents Rust crate metadata extracted from a compiled binary using cargo-auditable format.\ntype RustBinaryAuditEntry struct {\n\t// Name is crate name as specified in audit section of the build binary\n\tName string `toml:\"name\" json:\"name\"`\n\n\t// Version is crate version as specified in audit section of the build binary\n\tVersion string `toml:\"version\" json:\"version\"`\n\n\t// Source is the source registry or repository where this crate came from\n\tSource string `toml:\"source\" json:\"source\"`\n}\n"
  },
  {
    "path": "syft/pkg/snap.go",
    "content": "package pkg\n\nconst (\n\tSnapTypeBase   = \"base\"\n\tSnapTypeKernel = \"kernel\"\n\tSnapTypeApp    = \"app\"\n\tSnapTypeGadget = \"gadget\"\n\tSnapTypeSnapd  = \"snapd\"\n)\n\n// SnapEntry represents metadata for a Snap package extracted from snap.yaml or snapcraft.yaml files.\ntype SnapEntry struct {\n\t// SnapType indicates the snap type (base, kernel, app, gadget, or snapd).\n\tSnapType string `json:\"snapType\" yaml:\"snapType\"` // base, kernel, system, gadget, snapd\n\n\t// Base is the base snap name that this snap depends on (e.g., \"core20\", \"core22\").\n\tBase string `json:\"base\" yaml:\"base\"` // base snap name (e.g., core20, core22)\n\n\t// SnapName is the snap package name.\n\tSnapName string `json:\"snapName\" yaml:\"snapName\"` // name of the snap\n\n\t// SnapVersion is the snap package version.\n\tSnapVersion string `json:\"snapVersion\" yaml:\"snapVersion\"` // version of the snap\n\n\t// Architecture is the target CPU architecture (e.g., \"amd64\", \"arm64\").\n\tArchitecture string `json:\"architecture\" yaml:\"architecture\"` // architecture (amd64, arm64, etc.)\n\n}\n"
  },
  {
    "path": "syft/pkg/swift.go",
    "content": "package pkg\n\n// SwiftPackageManagerResolvedEntry represents a resolved dependency from a Package.resolved file with its locked version and source location.\ntype SwiftPackageManagerResolvedEntry struct {\n\t// Revision is git commit hash of the resolved package\n\tRevision string `mapstructure:\"revision\" json:\"revision\"`\n}\n"
  },
  {
    "path": "syft/pkg/swipl.go",
    "content": "package pkg\n\n// SwiplPackEntry represents a SWI-Prolog package from the pack system with metadata about the package and its dependencies.\ntype SwiplPackEntry struct {\n\t// Name is the package name as found in the .toml file\n\tName string `toml:\"name\" json:\"name\"`\n\n\t// Version is the package version as found in the .toml file\n\tVersion string `toml:\"version\" json:\"version\"`\n\n\t// Author is author name\n\tAuthor string `json:\"author\" mapstructure:\"Author\"`\n\n\t// AuthorEmail is author email address\n\tAuthorEmail string `json:\"authorEmail\" mapstructure:\"AuthorEmail\"`\n\n\t// Packager is packager name (if different from author)\n\tPackager string `json:\"packager\" mapstructure:\"Packager\"`\n\n\t// PackagerEmail is packager email address\n\tPackagerEmail string `json:\"packagerEmail\" mapstructure:\"PackagerEmail\"`\n\n\t// Homepage is project homepage URL\n\tHomepage string `json:\"homepage\"`\n\n\t// Dependencies are the list of required dependencies\n\tDependencies []string `toml:\"dependencies\" json:\"dependencies\"`\n}\n"
  },
  {
    "path": "syft/pkg/terraform.go",
    "content": "package pkg\n\n// TerraformLockProviderEntry represents a single provider entry in a Terraform dependency lock file (.terraform.lock.hcl).\ntype TerraformLockProviderEntry struct {\n\t// URL is the provider source address (e.g., \"registry.terraform.io/hashicorp/aws\").\n\tURL string `hcl:\",label\" json:\"url\"`\n\t// Constraints specifies the version constraints for the provider (e.g., \"~> 4.0\").\n\tConstraints string `hcl:\"constraints,optional\" json:\"constraints\"`\n\t// Version is the locked provider version selected during terraform init.\n\tVersion string `hcl:\"version\" json:\"version\"`\n\t// Hashes are cryptographic checksums for the provider plugin archives across different platforms.\n\tHashes []string `hcl:\"hashes\" json:\"hashes\"`\n}\n"
  },
  {
    "path": "syft/pkg/type.go",
    "content": "package pkg\n\nimport (\n\t\"github.com/anchore/packageurl-go\"\n)\n\n// Type represents a Package Type for or within a language ecosystem (there may be multiple package types within a language ecosystem)\ntype Type string\n\nfunc (t Type) String() string {\n\treturn string(t)\n}\n\nconst (\n\t// the full set of supported packages\n\tUnknownPkg              Type = \"UnknownPackage\"\n\tAlpmPkg                 Type = \"alpm\"\n\tApkPkg                  Type = \"apk\"\n\tBinaryPkg               Type = \"binary\"\n\tBitnamiPkg              Type = \"bitnami\"\n\tCocoapodsPkg            Type = \"pod\"\n\tConanPkg                Type = \"conan\"\n\tCondaPkg                Type = \"conda\"\n\tDartPubPkg              Type = \"dart-pub\"\n\tDebPkg                  Type = \"deb\"\n\tDotnetPkg               Type = \"dotnet\"\n\tErlangOTPPkg            Type = \"erlang-otp\"\n\tGemPkg                  Type = \"gem\"\n\tGithubActionPkg         Type = \"github-action\"\n\tGithubActionWorkflowPkg Type = \"github-action-workflow\"\n\tGoModulePkg             Type = \"go-module\"\n\tGraalVMNativeImagePkg   Type = \"graalvm-native-image\"\n\tHackagePkg              Type = \"hackage\"\n\tHexPkg                  Type = \"hex\"\n\tJavaPkg                 Type = \"java-archive\"\n\tJenkinsPluginPkg        Type = \"jenkins-plugin\"\n\tKbPkg                   Type = \"msrc-kb\"\n\tLinuxKernelPkg          Type = \"linux-kernel\"\n\tLinuxKernelModulePkg    Type = \"linux-kernel-module\"\n\tNixPkg                  Type = \"nix\"\n\tNpmPkg                  Type = \"npm\"\n\tOpamPkg                 Type = \"opam\"\n\tPhpComposerPkg          Type = \"php-composer\"\n\tPhpPeclPkg              Type = \"php-pecl\" // Deprecated: will be removed in syft v2.0\n\tPhpPearPkg              Type = \"php-pear\"\n\tPortagePkg              Type = \"portage\"\n\tPythonPkg               Type = \"python\"\n\tRpkg                    Type = \"R-package\"\n\tLuaRocksPkg             Type = \"lua-rocks\"\n\tRpmPkg                  Type = \"rpm\"\n\tRustPkg                 Type = \"rust-crate\"\n\tSwiftPkg                Type = \"swift\"\n\tSwiplPackPkg            Type = \"swiplpack\"\n\tTerraformPkg            Type = \"terraform\"\n\tWordpressPluginPkg      Type = \"wordpress-plugin\"\n\tHomebrewPkg             Type = \"homebrew\"\n\tModelPkg                Type = \"model\"\n)\n\n// AllPkgs represents all supported package types\nvar AllPkgs = []Type{\n\tAlpmPkg,\n\tApkPkg,\n\tBinaryPkg,\n\tBitnamiPkg,\n\tCocoapodsPkg,\n\tConanPkg,\n\tCondaPkg,\n\tDartPubPkg,\n\tDebPkg,\n\tDotnetPkg,\n\tErlangOTPPkg,\n\tGemPkg,\n\tGithubActionPkg,\n\tGithubActionWorkflowPkg,\n\tGraalVMNativeImagePkg,\n\tGoModulePkg,\n\tHackagePkg,\n\tHexPkg,\n\tJavaPkg,\n\tJenkinsPluginPkg,\n\tKbPkg,\n\tLinuxKernelPkg,\n\tLinuxKernelModulePkg,\n\tNixPkg,\n\tNpmPkg,\n\tOpamPkg,\n\tPhpComposerPkg,\n\tPhpPeclPkg,\n\tPhpPearPkg,\n\tPortagePkg,\n\tPythonPkg,\n\tRpkg,\n\tLuaRocksPkg,\n\tRpmPkg,\n\tRustPkg,\n\tSwiftPkg,\n\tSwiplPackPkg,\n\tTerraformPkg,\n\tWordpressPluginPkg,\n\tHomebrewPkg,\n\tModelPkg,\n}\n\n// PackageURLType returns the PURL package type for the current package.\n//\n//nolint:funlen, gocyclo\nfunc (t Type) PackageURLType() string {\n\tswitch t {\n\tcase AlpmPkg:\n\t\treturn \"alpm\"\n\tcase ApkPkg:\n\t\treturn packageurl.TypeAlpine\n\tcase BitnamiPkg:\n\t\treturn packageurl.TypeBitnami\n\tcase CocoapodsPkg:\n\t\treturn packageurl.TypeCocoapods\n\tcase ConanPkg:\n\t\treturn packageurl.TypeConan\n\tcase CondaPkg:\n\t\treturn packageurl.TypeGeneric\n\tcase DartPubPkg:\n\t\treturn packageurl.TypePub\n\tcase DebPkg:\n\t\treturn \"deb\"\n\tcase DotnetPkg:\n\t\treturn \"dotnet\"\n\tcase ErlangOTPPkg:\n\t\treturn packageurl.TypeOTP\n\tcase GemPkg:\n\t\treturn packageurl.TypeGem\n\tcase HexPkg:\n\t\treturn packageurl.TypeHex\n\tcase GithubActionPkg, GithubActionWorkflowPkg:\n\t\t// note: this is not a real purl type, but it is the closest thing we have for now\n\t\treturn packageurl.TypeGithub\n\tcase GoModulePkg:\n\t\treturn packageurl.TypeGolang\n\tcase HackagePkg:\n\t\treturn packageurl.TypeHackage\n\tcase JavaPkg, JenkinsPluginPkg:\n\t\treturn packageurl.TypeMaven\n\tcase LinuxKernelPkg:\n\t\treturn \"generic/linux-kernel\"\n\tcase LinuxKernelModulePkg:\n\t\treturn packageurl.TypeGeneric\n\tcase PhpComposerPkg:\n\t\treturn packageurl.TypeComposer\n\tcase PhpPearPkg, PhpPeclPkg:\n\t\treturn \"pear\"\n\tcase PythonPkg:\n\t\treturn packageurl.TypePyPi\n\tcase PortagePkg:\n\t\treturn \"portage\"\n\tcase LuaRocksPkg:\n\t\treturn packageurl.TypeLuaRocks\n\tcase NixPkg:\n\t\treturn \"nix\"\n\tcase NpmPkg:\n\t\treturn packageurl.TypeNPM\n\tcase OpamPkg:\n\t\treturn \"opam\"\n\tcase Rpkg:\n\t\treturn packageurl.TypeCran\n\tcase RpmPkg:\n\t\treturn packageurl.TypeRPM\n\tcase RustPkg:\n\t\treturn \"cargo\"\n\tcase SwiftPkg:\n\t\treturn packageurl.TypeSwift\n\tcase SwiplPackPkg:\n\t\treturn \"swiplpack\"\n\tcase TerraformPkg:\n\t\treturn \"terraform\"\n\tcase WordpressPluginPkg:\n\t\treturn \"wordpress-plugin\"\n\tcase HomebrewPkg:\n\t\treturn \"homebrew\"\n\tdefault:\n\t\t// TODO: should this be a \"generic\" purl type instead?\n\t\treturn \"\"\n\t}\n}\n\nfunc TypeFromPURL(p string) Type {\n\tpurl, err := packageurl.FromString(p)\n\tif err != nil {\n\t\treturn UnknownPkg\n\t}\n\n\tptype := purl.Type\n\tif ptype == \"generic\" {\n\t\tptype = purl.Name\n\t}\n\treturn TypeByName(ptype)\n}\n\n//nolint:funlen,gocyclo\nfunc TypeByName(name string) Type {\n\tswitch name {\n\tcase \"alpm\":\n\t\treturn AlpmPkg\n\tcase packageurl.TypeAlpine, \"alpine\":\n\t\treturn ApkPkg\n\tcase packageurl.TypeBitnami:\n\t\treturn BitnamiPkg\n\tcase packageurl.TypeDebian:\n\t\treturn DebPkg\n\tcase packageurl.TypeComposer:\n\t\treturn PhpComposerPkg\n\tcase \"pear\", \"pecl\":\n\t\treturn PhpPearPkg\n\tcase packageurl.TypeGolang:\n\t\treturn GoModulePkg\n\tcase packageurl.TypeGem:\n\t\treturn GemPkg\n\tcase \"cargo\", \"crate\":\n\t\treturn RustPkg\n\tcase \"conda\":\n\t\treturn CondaPkg\n\tcase packageurl.TypePub:\n\t\treturn DartPubPkg\n\tcase \"dotnet\": // here to support legacy use cases\n\t\treturn DotnetPkg\n\tcase packageurl.TypeCocoapods:\n\t\treturn CocoapodsPkg\n\tcase packageurl.TypeConan:\n\t\treturn ConanPkg\n\tcase packageurl.TypeHackage:\n\t\treturn HackagePkg\n\tcase packageurl.TypeHex:\n\t\treturn HexPkg\n\tcase packageurl.TypeLuaRocks:\n\t\treturn LuaRocksPkg\n\tcase packageurl.TypeMaven:\n\t\treturn JavaPkg\n\tcase packageurl.TypeNPM:\n\t\treturn NpmPkg\n\tcase packageurl.TypePyPi:\n\t\treturn PythonPkg\n\tcase \"portage\":\n\t\treturn PortagePkg\n\tcase packageurl.TypeOTP:\n\t\treturn ErlangOTPPkg\n\tcase \"linux-kernel\":\n\t\treturn LinuxKernelPkg\n\tcase \"linux-kernel-module\":\n\t\treturn LinuxKernelModulePkg\n\tcase \"nix\":\n\t\treturn NixPkg\n\tcase \"opam\":\n\t\treturn OpamPkg\n\tcase packageurl.TypeCran:\n\t\treturn Rpkg\n\tcase packageurl.TypeRPM:\n\t\treturn RpmPkg\n\tcase packageurl.TypeSwift:\n\t\treturn SwiftPkg\n\tcase \"swiplpack\":\n\t\treturn SwiplPackPkg\n\tcase \"terraform\":\n\t\treturn TerraformPkg\n\tcase \"wordpress-plugin\":\n\t\treturn WordpressPluginPkg\n\tcase \"homebrew\":\n\t\treturn HomebrewPkg\n\tdefault:\n\t\treturn UnknownPkg\n\t}\n}\n"
  },
  {
    "path": "syft/pkg/type_test.go",
    "content": "package pkg\n\nimport (\n\t\"testing\"\n\n\t\"github.com/scylladb/go-set/strset\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestTypeFromPURL(t *testing.T) {\n\n\ttests := []struct {\n\t\tname     string\n\t\tpurl     string\n\t\texpected Type\n\t}{\n\t\t{\n\t\t\tpurl:     \"pkg:rpm/fedora/util-linux@2.32.1-27.el8-?arch=amd64\",\n\t\t\texpected: RpmPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:apk/alpine/util-linux@2.32.1\",\n\t\t\texpected: ApkPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:bitnami/apache@2.4.62-3?arch=arm64&distro=debian-12\",\n\t\t\texpected: BitnamiPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie\",\n\t\t\texpected: DebPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:npm/util@2.32\",\n\t\t\texpected: NpmPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:pypi/util-linux@2.32.1-27.el8\",\n\t\t\texpected: PythonPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:gem/ruby-advisory-db-check@0.12.4\",\n\t\t\texpected: GemPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c\",\n\t\t\texpected: GoModulePkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:cargo/clap@2.33.0\",\n\t\t\texpected: RustPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:pub/util@1.2.34?hosted_url=pub.hosted.org\",\n\t\t\texpected: DartPubPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:dotnet/Microsoft.CodeAnalysis.Razor@2.2.0\",\n\t\t\texpected: DotnetPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:composer/laravel/laravel@5.5.0\",\n\t\t\texpected: PhpComposerPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:pear/pecl.php.net/memcached@3.2.0\", // pecl namespace\n\t\t\texpected: PhpPearPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:pear/pear.php.net/memcached@3.2.0\", // pear namespace\n\t\t\texpected: PhpPearPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:pecl/pecl.php.net/memcached@3.2.0\", // note: this is an invalid purl, but we will handle it anyway in case folks created the type pre-emptively\n\t\t\texpected: PhpPearPkg,                              // we should still consider this a pear package\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?type=zip&classifier=dist\",\n\t\t\texpected: JavaPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:alpm/arch/linux@5.10.0?arch=x86_64&distro=arch\",\n\t\t\texpected: AlpmPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:cocoapods/GlossButtonNode@3.1.2\",\n\t\t\texpected: CocoapodsPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:conan/catch2@2.13.8\",\n\t\t\texpected: ConanPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:hackage/HTTP@4000.3.16\",\n\t\t\texpected: HackagePkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:hex/hpax/hpax@0.1.1\",\n\t\t\texpected: HexPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:otp/accept@0.3.5\",\n\t\t\texpected: ErlangOTPPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:generic/linux-kernel@5.10.15\",\n\t\t\texpected: LinuxKernelPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:nix/glibc@2.34?hash=h0cnbmfcn93xm5dg2x27ixhag1cwndga\",\n\t\t\texpected: NixPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:cran/base@4.3.0\",\n\t\t\texpected: Rpkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:luarocks/kong@3.7.0\",\n\t\t\texpected: LuaRocksPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:swift/github.com/apple/swift-numerics/swift-numerics@1.0.2\",\n\t\t\texpected: SwiftPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:swiplpack/condition@0.1.1\",\n\t\t\texpected: SwiplPackPkg,\n\t\t},\n\t\t{\n\t\t\tpurl:     \"pkg:opam/ocaml-base-compiler@5.2.0\",\n\t\t\texpected: OpamPkg,\n\t\t},\n\t\t{\n\t\t\tname:     \"conda\",\n\t\t\tpurl:     \"pkg:generic/conda@1.2.3\",\n\t\t\texpected: CondaPkg,\n\t\t},\n\t}\n\n\tvar pkgTypes = strset.New()\n\tvar expectedTypes = strset.New()\n\tfor _, ty := range AllPkgs {\n\t\texpectedTypes.Add(string(ty))\n\t}\n\n\t// testing microsoft packages and jenkins-plugins and custom binary type\n\t// and terraform types is not valid for purl at this time\n\texpectedTypes.Remove(string(KbPkg))\n\texpectedTypes.Remove(string(JenkinsPluginPkg))\n\texpectedTypes.Remove(string(PortagePkg))\n\texpectedTypes.Remove(string(BinaryPkg))\n\texpectedTypes.Remove(string(LinuxKernelModulePkg))\n\texpectedTypes.Remove(string(GithubActionPkg), string(GithubActionWorkflowPkg))\n\texpectedTypes.Remove(string(WordpressPluginPkg))\n\texpectedTypes.Remove(string(HomebrewPkg))\n\texpectedTypes.Remove(string(TerraformPkg))\n\texpectedTypes.Remove(string(GraalVMNativeImagePkg))\n\texpectedTypes.Remove(string(ModelPkg))   // no valid purl for ai artifacts currently\n\texpectedTypes.Remove(string(PhpPeclPkg)) // we should always consider this a pear package\n\n\tfor _, test := range tests {\n\t\tt.Run(string(test.expected), func(t *testing.T) {\n\t\t\tactual := TypeFromPURL(test.purl)\n\n\t\t\tif actual != \"\" {\n\t\t\t\tpkgTypes.Add(string(actual))\n\t\t\t}\n\n\t\t\tassert.Equal(t, test.expected, actual)\n\t\t})\n\t}\n\n\tassert.ElementsMatch(t, expectedTypes.List(), pkgTypes.List(), \"missing one or more package types to test against (maybe a package type was added?)\")\n}\n"
  },
  {
    "path": "syft/pkg/url.go",
    "content": "package pkg\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/anchore/packageurl-go\"\n\t\"github.com/anchore/syft/syft/linux\"\n)\n\nconst (\n\tPURLQualifierArch   = \"arch\"\n\tPURLQualifierCPES   = \"cpes\"\n\tPURLQualifierDistro = \"distro\"\n\tPURLQualifierEpoch  = \"epoch\"\n\tPURLQualifierVCSURL = \"vcs_url\"\n\n\t// PURLQualifierUpstream this qualifier is not in the pURL spec, but is used by grype to perform indirect matching based on source information\n\tPURLQualifierUpstream = \"upstream\"\n\n\t// PURLQualifierRpmModularity this qualifier is not in the pURL spec, but is used to specify RPM modularity information\n\tPURLQualifierRpmModularity = \"rpmmod\"\n\n\tpurlCargoPkgType  = \"cargo\"\n\tpurlGradlePkgType = \"gradle\"\n)\n\nfunc PURLQualifiers(vars map[string]string, release *linux.Release) (q packageurl.Qualifiers) {\n\tkeys := make([]string, 0, len(vars))\n\tfor k := range vars {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\n\tfor _, k := range keys {\n\t\tval := vars[k]\n\t\tif val == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tq = append(q, packageurl.Qualifier{\n\t\t\tKey:   k,\n\t\t\tValue: vars[k],\n\t\t})\n\t}\n\n\tvar distroQualifiers []string\n\n\tif release == nil {\n\t\treturn q\n\t}\n\n\tif release.ID != \"\" {\n\t\tdistroQualifiers = append(distroQualifiers, release.ID)\n\t}\n\n\tif release.VersionID != \"\" {\n\t\tdistroQualifiers = append(distroQualifiers, release.VersionID)\n\t} else if release.BuildID != \"\" {\n\t\tdistroQualifiers = append(distroQualifiers, release.BuildID)\n\t}\n\n\tif len(distroQualifiers) > 0 {\n\t\tq = append(q, packageurl.Qualifier{\n\t\t\tKey:   PURLQualifierDistro,\n\t\t\tValue: strings.Join(distroQualifiers, \"-\"),\n\t\t})\n\t}\n\n\treturn q\n}\n"
  },
  {
    "path": "syft/pkg/wordpress.go",
    "content": "package pkg\n\n// WordpressPluginEntry represents all metadata parsed from the wordpress plugin file\ntype WordpressPluginEntry struct {\n\t// PluginInstallDirectory is directory name where the plugin is installed\n\tPluginInstallDirectory string `mapstructure:\"pluginInstallDirectory\" json:\"pluginInstallDirectory\"`\n\n\t// Author is plugin author name\n\tAuthor string `mapstructure:\"author\" json:\"author,omitempty\"`\n\n\t// AuthorURI is author's website URL\n\tAuthorURI string `mapstructure:\"authorUri\" json:\"authorUri,omitempty\"`\n}\n"
  },
  {
    "path": "syft/sbom/format.go",
    "content": "package sbom\n\nimport (\n\t\"io\"\n)\n\ntype FormatID string\n\n// String returns a string representation of the FormatID.\nfunc (f FormatID) String() string {\n\treturn string(f)\n}\n\nconst AnyVersion = \"\"\n\ntype FormatEncoder interface {\n\tID() FormatID\n\tAliases() []string\n\tVersion() string\n\tEncode(io.Writer, SBOM) error\n}\n\ntype FormatDecoder interface {\n\t// Decode will return an SBOM from the given reader. If the bytes are not a valid SBOM for the given format\n\t// then an error will be returned.\n\tDecode(io.Reader) (*SBOM, FormatID, string, error)\n\n\t// Identify will return the format ID and version for the given reader. Note: this does not validate the\n\t// full SBOM, only pulls the minimal information necessary to identify the format.\n\tIdentify(io.Reader) (FormatID, string)\n}\n"
  },
  {
    "path": "syft/sbom/sbom.go",
    "content": "package sbom\n\nimport (\n\t\"slices\"\n\t\"sort\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/linux\"\n\t\"github.com/anchore/syft/syft/pkg\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\ntype SBOM struct {\n\tArtifacts     Artifacts\n\tRelationships []artifact.Relationship\n\tSource        source.Description\n\tDescriptor    Descriptor\n}\n\ntype Artifacts struct {\n\tPackages          *pkg.Collection\n\tFileMetadata      map[file.Coordinates]file.Metadata\n\tFileDigests       map[file.Coordinates][]file.Digest\n\tFileContents      map[file.Coordinates]string\n\tFileLicenses      map[file.Coordinates][]file.License\n\tExecutables       map[file.Coordinates]file.Executable\n\tUnknowns          map[file.Coordinates][]string\n\tLinuxDistribution *linux.Release\n}\n\ntype Descriptor struct {\n\tName          string\n\tVersion       string\n\tConfiguration interface{}\n}\n\n// RelationshipsSorted returns a sorted slice of all relationships\n// Deprecated -- use relationship.Index\nfunc (s SBOM) RelationshipsSorted() []artifact.Relationship {\n\trelationships := s.Relationships\n\tsort.SliceStable(relationships, func(i, j int) bool {\n\t\tif relationships[i].From.ID() == relationships[j].From.ID() {\n\t\t\tif relationships[i].To.ID() == relationships[j].To.ID() {\n\t\t\t\treturn relationships[i].Type < relationships[j].Type\n\t\t\t}\n\t\t\treturn relationships[i].To.ID() < relationships[j].To.ID()\n\t\t}\n\t\treturn relationships[i].From.ID() < relationships[j].From.ID()\n\t})\n\treturn relationships\n}\n\nfunc (s SBOM) AllCoordinates() []file.Coordinates {\n\tset := file.NewCoordinateSet()\n\tfor coordinates := range s.Artifacts.FileMetadata {\n\t\tset.Add(coordinates)\n\t}\n\tfor coordinates := range s.Artifacts.FileContents {\n\t\tset.Add(coordinates)\n\t}\n\tfor coordinates := range s.Artifacts.FileDigests {\n\t\tset.Add(coordinates)\n\t}\n\tfor coordinates := range s.Artifacts.Unknowns {\n\t\tset.Add(coordinates)\n\t}\n\tfor _, relationship := range s.Relationships {\n\t\tfor _, coordinates := range extractCoordinates(relationship) {\n\t\t\tset.Add(coordinates)\n\t\t}\n\t}\n\treturn set.ToSlice()\n}\n\n// RelationshipsForPackage returns all relationships for the provided types.\n// If no types are provided, all relationships for the package are returned.\n// Deprecated -- use relationship.Index\nfunc (s SBOM) RelationshipsForPackage(p pkg.Package, rt ...artifact.RelationshipType) []artifact.Relationship {\n\tif len(rt) == 0 {\n\t\trt = artifact.AllRelationshipTypes()\n\t}\n\n\tpID := p.ID()\n\n\tvar relationships []artifact.Relationship\n\tfor _, relationship := range s.Relationships {\n\t\tif relationship.From == nil || relationship.To == nil {\n\t\t\tlog.Debugf(\"relationship has nil edge, skipping: %#v\", relationship)\n\t\t\tcontinue\n\t\t}\n\t\tfromID := relationship.From.ID()\n\t\ttoID := relationship.To.ID()\n\t\thasPkgID := fromID == pID || toID == pID\n\n\t\tif !hasPkgID {\n\t\t\tcontinue\n\t\t}\n\n\t\t// check if the relationship is one we're searching for; rt is inclusive\n\t\tif !slices.ContainsFunc(rt, func(r artifact.RelationshipType) bool { return relationship.Type == r }) {\n\t\t\tcontinue\n\t\t}\n\t\trelationships = append(relationships, relationship)\n\t}\n\n\treturn relationships\n}\n\n// CoordinatesForPackage returns all coordinates for the provided package for provided relationship types\n// If no types are provided, all relationship types are considered.\n// Deprecated -- use relationship.Index\nfunc (s SBOM) CoordinatesForPackage(p pkg.Package, rt ...artifact.RelationshipType) []file.Coordinates {\n\tvar coordinates []file.Coordinates\n\tfor _, relationship := range s.RelationshipsForPackage(p, rt...) {\n\t\tcords := extractCoordinates(relationship)\n\t\tcoordinates = append(coordinates, cords...)\n\t}\n\treturn coordinates\n}\n\nfunc extractCoordinates(relationship artifact.Relationship) (results []file.Coordinates) {\n\tif coordinates, exists := relationship.From.(file.Coordinates); exists {\n\t\tresults = append(results, coordinates)\n\t}\n\n\tif coordinates, exists := relationship.To.(file.Coordinates); exists {\n\t\tresults = append(results, coordinates)\n\t}\n\n\treturn results\n}\n"
  },
  {
    "path": "syft/sbom/writer.go",
    "content": "package sbom\n\n// Writer an interface to write SBOMs to a destination\ntype Writer interface {\n\tWrite(SBOM) error\n}\n"
  },
  {
    "path": "syft/source/alias.go",
    "content": "package source\n\ntype Alias struct {\n\tName     string `json:\"name\" yaml:\"name\" mapstructure:\"name\"`\n\tVersion  string `json:\"version\" yaml:\"version\" mapstructure:\"version\"`\n\tSupplier string `json:\"supplier\" yaml:\"supplier\" mapstructure:\"supplier\"`\n}\n\nfunc (a *Alias) IsEmpty() bool {\n\tif a == nil {\n\t\treturn true\n\t}\n\treturn a.Name == \"\" && a.Version == \"\"\n}\n"
  },
  {
    "path": "syft/source/description.go",
    "content": "package source\n\n// Description represents any static source data that helps describe \"what\" was cataloged.\ntype Description struct {\n\tID       string `hash:\"ignore\"` // the id generated from the parent source struct\n\tName     string `hash:\"ignore\"`\n\tVersion  string `hash:\"ignore\"`\n\tSupplier string `hash:\"ignore\"`\n\tMetadata interface{}\n}\n"
  },
  {
    "path": "syft/source/directory_metadata.go",
    "content": "package source\n\ntype DirectoryMetadata struct {\n\tPath string `json:\"path\" yaml:\"path\"`\n\tBase string `json:\"-\" yaml:\"-\"` // though this is important, for display purposes it leaks too much information (abs paths)\n}\n"
  },
  {
    "path": "syft/source/directorysource/cache_excludes.go",
    "content": "package directorysource\n\nimport (\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/cache\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n)\n\n// we do not want to cache things and then subsequently scan them, if, for example a user runs `syft /` twice\nfunc excludeCachePathVisitors() []fileresolver.PathIndexVisitor {\n\tvar out []fileresolver.PathIndexVisitor\n\tfor _, dir := range cache.GetManager().RootDirs() {\n\t\tout = append(out, excludeCacheDirPathVisitor{\n\t\t\tdir: dir,\n\t\t}.excludeCacheDir)\n\t}\n\treturn out\n}\n\ntype excludeCacheDirPathVisitor struct {\n\tdir string\n}\n\nfunc (d excludeCacheDirPathVisitor) excludeCacheDir(_, path string, _ os.FileInfo, _ error) error {\n\tif strings.HasPrefix(path, d.dir) {\n\t\tlog.Tracef(\"skipping cache path: %s\", path)\n\t\treturn fileresolver.ErrSkipPath\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "syft/source/directorysource/directory_source.go",
    "content": "package directorysource\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/opencontainers/go-digest\"\n\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/internal\"\n)\n\nvar _ source.Source = (*directorySource)(nil)\n\ntype Config struct {\n\tPath    string\n\tBase    string\n\tExclude source.ExcludeConfig\n\tAlias   source.Alias\n}\n\ntype directorySource struct {\n\tid       artifact.ID\n\tconfig   Config\n\tresolver file.Resolver\n\tmutex    *sync.Mutex\n}\n\nfunc NewFromPath(path string) (source.Source, error) {\n\treturn New(Config{Path: path})\n}\n\nfunc New(cfg Config) (source.Source, error) {\n\tfileMeta, err := os.Stat(cfg.Path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat path=%q: %w\", cfg.Path, err)\n\t}\n\n\tif !fileMeta.IsDir() {\n\t\treturn nil, fmt.Errorf(\"given path is not a directory: %q\", cfg.Path)\n\t}\n\n\treturn &directorySource{\n\t\tid:     deriveIDFromDirectory(cfg),\n\t\tconfig: cfg,\n\t\tmutex:  &sync.Mutex{},\n\t}, nil\n}\n\nfunc (s directorySource) ID() artifact.ID {\n\treturn s.id\n}\n\nfunc (s directorySource) Describe() source.Description {\n\tname := cleanDirPath(s.config.Path, s.config.Base)\n\tversion := \"\"\n\tsupplier := \"\"\n\tif !s.config.Alias.IsEmpty() {\n\t\ta := s.config.Alias\n\t\tif a.Name != \"\" {\n\t\t\tname = a.Name\n\t\t}\n\n\t\tif a.Version != \"\" {\n\t\t\tversion = a.Version\n\t\t}\n\n\t\tif a.Supplier != \"\" {\n\t\t\tsupplier = a.Supplier\n\t\t}\n\t}\n\treturn source.Description{\n\t\tID:       string(s.id),\n\t\tName:     name,\n\t\tVersion:  version,\n\t\tSupplier: supplier,\n\t\tMetadata: source.DirectoryMetadata{\n\t\t\tPath: s.config.Path,\n\t\t\tBase: s.config.Base,\n\t\t},\n\t}\n}\n\nfunc (s *directorySource) FileResolver(_ source.Scope) (file.Resolver, error) {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\tif s.resolver != nil {\n\t\treturn s.resolver, nil\n\t}\n\n\texclusionFunctions, err := GetDirectoryExclusionFunctions(s.config.Path, s.config.Exclude.Paths)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// this should be the only file resolver that might have overlap with where files are cached\n\texclusionFunctions = append(exclusionFunctions, excludeCachePathVisitors()...)\n\n\tres, err := fileresolver.NewFromDirectory(s.config.Path, s.config.Base, exclusionFunctions...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to create directory resolver: %w\", err)\n\t}\n\n\ts.resolver = res\n\treturn s.resolver, nil\n}\n\nfunc (s *directorySource) Close() error {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\ts.resolver = nil\n\treturn nil\n}\n\nfunc GetDirectoryExclusionFunctions(root string, exclusions []string) ([]fileresolver.PathIndexVisitor, error) {\n\tif len(exclusions) == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// this is what directoryResolver.indexTree is doing to get the absolute path:\n\troot, err := filepath.Abs(root)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// this handles Windows file paths by converting them to C:/something/else format\n\troot = filepath.ToSlash(root)\n\n\tif !strings.HasSuffix(root, \"/\") {\n\t\troot += \"/\"\n\t}\n\n\tvar errors []string\n\tfor idx, exclusion := range exclusions {\n\t\t// check exclusions for supported paths, these are all relative to the \"scan root\"\n\t\tif strings.HasPrefix(exclusion, \"./\") || strings.HasPrefix(exclusion, \"*/\") || strings.HasPrefix(exclusion, \"**/\") {\n\t\t\texclusion = strings.TrimPrefix(exclusion, \"./\")\n\t\t\texclusions[idx] = root + exclusion\n\t\t} else {\n\t\t\terrors = append(errors, exclusion)\n\t\t}\n\t}\n\n\tif errors != nil {\n\t\treturn nil, fmt.Errorf(\"invalid exclusion pattern(s): '%s' (must start with one of: './', '*/', or '**/')\", strings.Join(errors, \"', '\"))\n\t}\n\n\treturn []fileresolver.PathIndexVisitor{\n\t\tfunc(_, path string, info os.FileInfo, _ error) error {\n\t\t\tfor _, exclusion := range exclusions {\n\t\t\t\t// this is required to handle Windows filepaths\n\t\t\t\tpath = filepath.ToSlash(path)\n\t\t\t\tmatches, err := doublestar.Match(exclusion, path)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tif matches {\n\t\t\t\t\tif info != nil && info.IsDir() {\n\t\t\t\t\t\treturn filepath.SkipDir\n\t\t\t\t\t}\n\t\t\t\t\treturn fileresolver.ErrSkipPath\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}, nil\n}\n\n// deriveIDFromDirectory generates an artifact ID from the given directory config. If an alias is provided, then\n// the artifact ID is derived exclusively from the alias name and version. Otherwise, the artifact ID is derived\n// from the path provided with an attempt to prune a prefix if a base is given. Since the contents of the directory\n// are not considered, there is no semantic meaning to the artifact ID -- this is why the alias is preferred without\n// consideration for the path.\nfunc deriveIDFromDirectory(cfg Config) artifact.ID {\n\tvar info string\n\tif !cfg.Alias.IsEmpty() {\n\t\t// don't use any of the path information -- instead use the alias name and version as the artifact ID.\n\t\t// why? this allows the user to set a dependable stable value for the artifact ID in case the\n\t\t// scanning root changes (e.g. a user scans a directory, then moves it to a new location and scans again).\n\t\tinfo = fmt.Sprintf(\"%s@%s\", cfg.Alias.Name, cfg.Alias.Version)\n\t} else {\n\t\tlog.Warn(\"no explicit name and version provided for directory source, deriving artifact ID from the given path (which is not ideal)\")\n\t\tinfo = cleanDirPath(cfg.Path, cfg.Base)\n\t}\n\n\treturn internal.ArtifactIDFromDigest(digest.SHA256.FromString(filepath.Clean(info)).String())\n}\n\nfunc cleanDirPath(path, base string) string {\n\tif path == base {\n\t\treturn path\n\t}\n\n\tif base != \"\" {\n\t\tcleanRoot, rootErr := fileresolver.NormalizeRootDirectory(path)\n\t\tcleanBase, baseErr := fileresolver.NormalizeBaseDirectory(base)\n\n\t\tif rootErr == nil && baseErr == nil {\n\t\t\t// allows for normalizing inputs:\n\t\t\t//   cleanRoot: /var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/TestDirectoryEncoder1121632790/001/some/path\n\t\t\t//   cleanBase: /var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/TestDirectoryEncoder1121632790/001\n\t\t\t//   normalized: some/path\n\n\t\t\trelPath, err := filepath.Rel(cleanBase, cleanRoot)\n\t\t\tif err == nil {\n\t\t\t\tpath = relPath\n\t\t\t}\n\t\t\t// this is odd, but this means we can't use base\n\t\t}\n\t\t// if the base is not a valid chroot, then just use the path as-is\n\t}\n\n\treturn path\n}\n"
  },
  {
    "path": "syft/source/directorysource/directory_source_provider.go",
    "content": "package directorysource\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc NewSourceProvider(path string, exclude source.ExcludeConfig, alias source.Alias, basePath string) source.Provider {\n\treturn &directorySourceProvider{\n\t\tpath:     path,\n\t\tbasePath: basePath,\n\t\texclude:  exclude,\n\t\talias:    alias,\n\t}\n}\n\ntype directorySourceProvider struct {\n\tpath     string\n\tbasePath string\n\texclude  source.ExcludeConfig\n\talias    source.Alias\n}\n\nfunc (l directorySourceProvider) Name() string {\n\treturn \"local-directory\"\n}\n\nfunc (l directorySourceProvider) Provide(_ context.Context) (source.Source, error) {\n\tlocation, err := homedir.Expand(l.path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to expand potential directory path: %w\", err)\n\t}\n\n\tfs := afero.NewOsFs()\n\tfileMeta, err := fs.Stat(location)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat location: %w\", err)\n\t}\n\n\tif !fileMeta.IsDir() {\n\t\treturn nil, fmt.Errorf(\"not a directory source: %s\", l.path)\n\t}\n\n\treturn New(\n\t\tConfig{\n\t\t\tPath:    location,\n\t\t\tBase:    basePath(l.basePath, location),\n\t\t\tExclude: l.exclude,\n\t\t\tAlias:   l.alias,\n\t\t},\n\t)\n}\n\n// FIXME why is the base always being set instead of left as empty string?\nfunc basePath(base, location string) string {\n\tif base == \"\" {\n\t\tbase = location\n\t}\n\treturn base\n}\n"
  },
  {
    "path": "syft/source/directorysource/directory_source_test.go",
    "content": "package directorysource\n\nimport (\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/internal/testutil\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestNewFromDirectory(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc         string\n\t\tinput        string\n\t\texpString    string\n\t\tinputPaths   []string\n\t\texpectedRefs int\n\t\tcxErr        require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tdesc:       \"no paths exist\",\n\t\t\tinput:      \"foobar/\",\n\t\t\tinputPaths: []string{\"/opt/\", \"/other\"},\n\t\t\tcxErr:      require.Error,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"path detected\",\n\t\t\tinput:        \"testdata\",\n\t\t\tinputPaths:   []string{\"path-detected/.vimrc\"},\n\t\t\texpectedRefs: 1,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"directory ignored\",\n\t\t\tinput:        \"testdata\",\n\t\t\tinputPaths:   []string{\"path-detected\"},\n\t\t\texpectedRefs: 0,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"no files-by-path detected\",\n\t\t\tinput:        \"testdata\",\n\t\t\tinputPaths:   []string{\"no-path-detected\"},\n\t\t\texpectedRefs: 0,\n\t\t},\n\t}\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tif test.cxErr == nil {\n\t\t\t\ttest.cxErr = require.NoError\n\t\t\t}\n\t\t\tsrc, err := New(Config{\n\t\t\t\tPath: test.input,\n\t\t\t})\n\t\t\ttest.cxErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\t\t\tassert.Equal(t, test.input, src.Describe().Metadata.(source.DirectoryMetadata).Path)\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := res.FilesByPath(test.inputPaths...)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif len(refs) != test.expectedRefs {\n\t\t\t\tt.Errorf(\"unexpected number of refs returned: %d != %d\", len(refs), test.expectedRefs)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc Test_DirectorySource_FilesByGlob(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc     string\n\t\tinput    string\n\t\tglob     string\n\t\texpected int\n\t}{\n\t\t{\n\t\t\tinput:    \"testdata\",\n\t\t\tdesc:     \"no matches\",\n\t\t\tglob:     \"bar/foo\",\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tinput:    \"testdata/path-detected\",\n\t\t\tdesc:     \"a single match\",\n\t\t\tglob:     \"**/*vimrc\",\n\t\t\texpected: 1,\n\t\t},\n\t\t{\n\t\t\tinput:    \"testdata/path-detected\",\n\t\t\tdesc:     \"multiple matches\",\n\t\t\tglob:     \"**\",\n\t\t\texpected: 2,\n\t\t},\n\t}\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tsrc, err := New(Config{Path: test.input})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tcontents, err := res.FilesByGlob(test.glob)\n\t\t\trequire.NoError(t, err)\n\t\t\tif len(contents) != test.expected {\n\t\t\t\tt.Errorf(\"unexpected number of files found by glob (%s): %d != %d\", test.glob, len(contents), test.expected)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc Test_DirectorySource_Exclusions(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc       string\n\t\tinput      string\n\t\tglob       string\n\t\texpected   []string\n\t\texclusions []string\n\t\terr        bool\n\t}{\n\t\t{\n\t\t\tinput:      \"testdata/system_paths\",\n\t\t\tdesc:       \"exclude everything\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   nil,\n\t\t\texclusions: []string{\"**/*\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"a single path excluded\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t\"file-1.txt\",\n\t\t\t\t\"file-2.txt\",\n\t\t\t},\n\t\t\texclusions: []string{\"**/target/**\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"exclude explicit directory relative to the root\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t\"file-1.txt\",\n\t\t\t\t\"file-2.txt\",\n\t\t\t\t//\"target/really/nested/file-3.txt\", // explicitly skipped\n\t\t\t},\n\t\t\texclusions: []string{\"./target\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"exclude explicit file relative to the root\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t//\"file-1.txt\",  // explicitly skipped\n\t\t\t\t\"file-2.txt\",\n\t\t\t\t\"target/really/nested/file-3.txt\",\n\t\t\t},\n\t\t\texclusions: []string{\"./file-1.txt\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"exclude wildcard relative to the root\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t//\"file-1.txt\",  // explicitly skipped\n\t\t\t\t//\"file-2.txt\", // explicitly skipped\n\t\t\t\t\"target/really/nested/file-3.txt\",\n\t\t\t},\n\t\t\texclusions: []string{\"./*.txt\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"exclude files deeper\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t\"file-1.txt\",\n\t\t\t\t\"file-2.txt\",\n\t\t\t\t//\"target/really/nested/file-3.txt\", // explicitly skipped\n\t\t\t},\n\t\t\texclusions: []string{\"**/really/**\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"files excluded with extension\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t//\"file-1.txt\",  // explicitly skipped\n\t\t\t\t//\"file-2.txt\", // explicitly skipped\n\t\t\t\t//\"target/really/nested/file-3.txt\", // explicitly skipped\n\t\t\t},\n\t\t\texclusions: []string{\"**/*.txt\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/image-simple\",\n\t\t\tdesc:  \"keep files with different extensions\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\"Dockerfile\",\n\t\t\t\t\"file-1.txt\",\n\t\t\t\t\"file-2.txt\",\n\t\t\t\t\"target/really/nested/file-3.txt\",\n\t\t\t},\n\t\t\texclusions: []string{\"**/target/**/*.jar\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/path-detected\",\n\t\t\tdesc:  \"file directly excluded\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\".vimrc\",\n\t\t\t},\n\t\t\texclusions: []string{\"**/empty\"},\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/path-detected\",\n\t\t\tdesc:  \"pattern error containing **/\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\".vimrc\",\n\t\t\t},\n\t\t\texclusions: []string{\"/**/empty\"},\n\t\t\terr:        true,\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/path-detected\",\n\t\t\tdesc:  \"pattern error incorrect start\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\".vimrc\",\n\t\t\t},\n\t\t\texclusions: []string{\"empty\"},\n\t\t\terr:        true,\n\t\t},\n\t\t{\n\t\t\tinput: \"testdata/path-detected\",\n\t\t\tdesc:  \"pattern error starting with /\",\n\t\t\tglob:  \"**\",\n\t\t\texpected: []string{\n\t\t\t\t\".vimrc\",\n\t\t\t},\n\t\t\texclusions: []string{\"/empty\"},\n\t\t\terr:        true,\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tsrc, err := New(Config{\n\t\t\t\tPath: test.input,\n\t\t\t\tExclude: source.ExcludeConfig{\n\t\t\t\t\tPaths: test.exclusions,\n\t\t\t\t},\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tif test.err {\n\t\t\t\t_, err = src.FileResolver(source.SquashedScope)\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tlocations, err := res.FilesByGlob(test.glob)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tvar actual []string\n\t\t\tfor _, l := range locations {\n\t\t\t\tactual = append(actual, l.RealPath)\n\t\t\t}\n\n\t\t\tassert.ElementsMatchf(t, test.expected, actual, \"diff \\n\"+cmp.Diff(test.expected, actual))\n\t\t})\n\t}\n}\n\nfunc Test_getDirectoryExclusionFunctions_crossPlatform(t *testing.T) {\n\ttestCases := []struct {\n\t\tdesc     string\n\t\troot     string\n\t\tpath     string\n\t\tfinfo    os.FileInfo\n\t\texclude  string\n\t\twalkHint error\n\t}{\n\t\t{\n\t\t\tdesc:     \"directory exclusion\",\n\t\t\troot:     \"/\",\n\t\t\tpath:     \"/usr/var/lib\",\n\t\t\texclude:  \"**/var/lib\",\n\t\t\tfinfo:    file.ManualInfo{ModeValue: os.ModeDir},\n\t\t\twalkHint: fs.SkipDir,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"no file info\",\n\t\t\troot:     \"/\",\n\t\t\tpath:     \"/usr/var/lib\",\n\t\t\texclude:  \"**/var/lib\",\n\t\t\twalkHint: fileresolver.ErrSkipPath,\n\t\t},\n\t\t// linux specific tests...\n\t\t{\n\t\t\tdesc:     \"linux doublestar\",\n\t\t\troot:     \"/usr\",\n\t\t\tpath:     \"/usr/var/lib/etc.txt\",\n\t\t\texclude:  \"**/*.txt\",\n\t\t\tfinfo:    file.ManualInfo{},\n\t\t\twalkHint: fileresolver.ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tdesc:    \"linux relative\",\n\t\t\troot:    \"/usr/var/lib\",\n\t\t\tpath:    \"/usr/var/lib/etc.txt\",\n\t\t\texclude: \"./*.txt\",\n\t\t\tfinfo:   file.ManualInfo{},\n\n\t\t\twalkHint: fileresolver.ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"linux one level\",\n\t\t\troot:     \"/usr\",\n\t\t\tpath:     \"/usr/var/lib/etc.txt\",\n\t\t\texclude:  \"*/*.txt\",\n\t\t\tfinfo:    file.ManualInfo{},\n\t\t\twalkHint: nil,\n\t\t},\n\t\t// NOTE: since these tests will run in linux and macOS, the windows paths will be\n\t\t// considered relative if they do not start with a forward slash and paths with backslashes\n\t\t// won't be modified by the filepath.ToSlash call, so these are emulating the result of\n\t\t// filepath.ToSlash usage\n\n\t\t// windows specific tests...\n\t\t{\n\t\t\tdesc:     \"windows doublestar\",\n\t\t\troot:     \"/C:/User/stuff\",\n\t\t\tpath:     \"/C:/User/stuff/thing.txt\",\n\t\t\texclude:  \"**/*.txt\",\n\t\t\tfinfo:    file.ManualInfo{},\n\t\t\twalkHint: fileresolver.ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"windows relative\",\n\t\t\troot:     \"/C:/User/stuff\",\n\t\t\tpath:     \"/C:/User/stuff/thing.txt\",\n\t\t\texclude:  \"./*.txt\",\n\t\t\tfinfo:    file.ManualInfo{},\n\t\t\twalkHint: fileresolver.ErrSkipPath,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"windows one level\",\n\t\t\troot:     \"/C:/User/stuff\",\n\t\t\tpath:     \"/C:/User/stuff/thing.txt\",\n\t\t\texclude:  \"*/*.txt\",\n\t\t\tfinfo:    file.ManualInfo{},\n\t\t\twalkHint: nil,\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tfns, err := GetDirectoryExclusionFunctions(test.root, []string{test.exclude})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfor _, f := range fns {\n\t\t\t\tresult := f(\"\", test.path, test.finfo, nil)\n\t\t\t\trequire.Equal(t, test.walkHint, result)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_DirectorySource_FilesByPathDoesNotExist(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc     string\n\t\tinput    string\n\t\tpath     string\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tinput: \"testdata/path-detected\",\n\t\t\tdesc:  \"path does not exist\",\n\t\t\tpath:  \"foo\",\n\t\t},\n\t}\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tsrc, err := New(Config{Path: test.input})\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := res.FilesByPath(test.path)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Len(t, refs, 0)\n\t\t})\n\t}\n}\n\nfunc Test_DirectorySource_ID(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttests := []struct {\n\t\tname    string\n\t\tcfg     Config\n\t\twant    artifact.ID\n\t\twantErr require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"empty\",\n\t\t\tcfg:     Config{},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"to a non-existent directory\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/does-not-exist\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:    \"with odd unclean path through non-existent directory\",\n\t\t\tcfg:     Config{Path: \"testdata/does-not-exist/../\"},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"to a file (not a directory)\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/image-simple/Dockerfile\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"to dir with name and version and supplier\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata\",\n\t\t\t\tAlias: source.Alias{\n\t\t\t\t\tName:     \"name-me-that!\",\n\t\t\t\t\tVersion:  \"version-me-this!\",\n\t\t\t\t\tSupplier: \"some-supplier\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: artifact.ID(\"51a5f2a1536cf4b5220d4247814b07eec5862ab0547050f90e9ae216548ded7e\"),\n\t\t},\n\t\t{\n\t\t\tname: \"to different dir with name and version\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/image-simple\",\n\t\t\t\tAlias: source.Alias{\n\t\t\t\t\tName:     \"name-me-that!\",\n\t\t\t\t\tVersion:  \"version-me-this!\",\n\t\t\t\t\tSupplier: \"some-supplier\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t// note: this must match the previous value because the alias should trump the path info\n\t\t\twant: artifact.ID(\"51a5f2a1536cf4b5220d4247814b07eec5862ab0547050f90e9ae216548ded7e\"),\n\t\t},\n\t\t{\n\t\t\tname: \"with path\",\n\t\t\tcfg:  Config{Path: \"./testdata\"},\n\t\t\twant: artifact.ID(\"810ff2fb242a5dee4220f2cb0e6a519891fb67f2f828a6cab4ef8894633b1f50\"),\n\t\t},\n\t\t{\n\t\t\tname: \"with unclean path\",\n\t\t\tcfg:  Config{Path: \"testdata/image-simple/../\"},\n\t\t\twant: artifact.ID(\"810ff2fb242a5dee4220f2cb0e6a519891fb67f2f828a6cab4ef8894633b1f50\"),\n\t\t},\n\t\t{\n\t\t\tname: \"other fields do not affect ID\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"testdata\",\n\t\t\t\tBase: \"a-base!\",\n\t\t\t\tExclude: source.ExcludeConfig{\n\t\t\t\t\tPaths: []string{\"a\", \"b\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: artifact.ID(\"810ff2fb242a5dee4220f2cb0e6a519891fb67f2f828a6cab4ef8894633b1f50\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\ts, err := New(tt.cfg)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equalf(t, tt.want, s.ID(), \"ID()\")\n\t\t})\n\t}\n}\n\nfunc Test_cleanDirPath(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\tabs, err := filepath.Abs(\"testdata\")\n\trequire.NoError(t, err)\n\n\ttests := []struct {\n\t\tname string\n\t\tpath string\n\t\tbase string\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"abs path, abs base, base contained in path\",\n\t\t\tpath: filepath.Join(abs, \"system_paths/outside_root\"),\n\t\t\tbase: abs,\n\t\t\twant: \"system_paths/outside_root\",\n\t\t},\n\t\t{\n\t\t\tname: \"abs path, abs base, base not contained in path\",\n\t\t\tpath: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/001/some/path\",\n\t\t\tbase: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/002\",\n\t\t\twant: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/001/some/path\",\n\t\t},\n\t\t{\n\t\t\tname: \"path and base match\",\n\t\t\tpath: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/001/some/path\",\n\t\t\tbase: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/001/some/path\",\n\t\t\twant: \"/var/folders/8x/gw98pp6535s4r8drc374tb1r0000gn/T/001/some/path\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, cleanDirPath(tt.path, tt.base))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/directorysource/directory_source_win_test.go",
    "content": "//go:build windows\n\n// why the build tags? there is behavior from filepath.ToSlash() that must be tested, but can't be tested on non-windows\n// since the stdlib keeps this functionality behind a build tag (specifically filepath.Separator):\n//   - https://github.com/golang/go/blob/3aea422e2cb8b1ec2e0c2774be97fe96c7299838/src/path/filepath/path.go#L224-L227\n//   - https://github.com/golang/go/blob/3aea422e2cb8b1ec2e0c2774be97fe96c7299838/src/path/filepath/path.go#L63\n//   - https://github.com/golang/go/blob/master/src/os/path_windows.go#L8\n//\n// It would be nice to extract this to simplify testing, however, we also need filepath.Abs(), which in windows\n// requires a specific syscall:\n//   - https://github.com/golang/go/blob/3aea422e2cb8b1ec2e0c2774be97fe96c7299838/src/path/filepath/path_windows.go#L216\n// ... which means we can't extract this functionality without build tags.\n\npackage directorysource\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_DirectorySource_crossPlatformExclusions(t *testing.T) {\n\ttestCases := []struct {\n\t\tdesc    string\n\t\troot    string\n\t\tpath    string\n\t\texclude string\n\t\tmatch   bool\n\t}{\n\t\t{\n\t\t\tdesc:    \"windows doublestar\",\n\t\t\troot:    \"C:\\\\User\\\\stuff\",\n\t\t\tpath:    \"C:\\\\User\\\\stuff\\\\thing.txt\",\n\t\t\texclude: \"**/*.txt\",\n\t\t\tmatch:   true,\n\t\t},\n\t\t{\n\t\t\tdesc:    \"windows relative\",\n\t\t\troot:    \"C:\\\\User\\\\stuff\",\n\t\t\tpath:    \"C:\\\\User\\\\stuff\\\\thing.txt\",\n\t\t\texclude: \"./*.txt\",\n\t\t\tmatch:   true,\n\t\t},\n\t\t{\n\t\t\tdesc:    \"windows one level\",\n\t\t\troot:    \"C:\\\\User\\\\stuff\",\n\t\t\tpath:    \"C:\\\\User\\\\stuff\\\\thing.txt\",\n\t\t\texclude: \"*/*.txt\",\n\t\t\tmatch:   false,\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tfns, err := GetDirectoryExclusionFunctions(test.root, []string{test.exclude})\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfor _, f := range fns {\n\t\t\t\tresult := f(test.path, nil, nil)\n\t\t\t\trequire.Equal(t, test.match, result)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/exclude.go",
    "content": "package source\n\ntype ExcludeConfig struct {\n\tPaths []string\n}\n"
  },
  {
    "path": "syft/source/file_metadata.go",
    "content": "package source\n\nimport \"github.com/anchore/syft/syft/file\"\n\ntype FileMetadata struct {\n\tPath     string        `json:\"path\" yaml:\"path\"`\n\tDigests  []file.Digest `json:\"digests,omitempty\" yaml:\"digests,omitempty\"`\n\tMIMEType string        `json:\"mimeType\" yaml:\"mimeType\"`\n}\n"
  },
  {
    "path": "syft/source/filesource/file_source.go",
    "content": "package filesource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"github.com/mholt/archives\"\n\t\"github.com/opencontainers/go-digest\"\n\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/internal\"\n)\n\nvar _ source.Source = (*fileSource)(nil)\n\ntype Config struct {\n\tPath               string\n\tExclude            source.ExcludeConfig\n\tDigestAlgorithms   []crypto.Hash\n\tAlias              source.Alias\n\tSkipExtractArchive bool\n}\n\ntype fileSource struct {\n\tid               artifact.ID\n\tdigestForVersion string\n\tconfig           Config\n\tresolver         file.Resolver\n\tmutex            *sync.Mutex\n\tcloser           func() error\n\tdigests          []file.Digest\n\tmimeType         string\n\tanalysisPath     string\n}\n\nfunc NewFromPath(path string) (source.Source, error) {\n\treturn New(Config{Path: path})\n}\n\nfunc New(cfg Config) (source.Source, error) {\n\tf, err := os.Open(cfg.Path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to open file=%q: %w\", cfg.Path, err)\n\t}\n\tdefer f.Close()\n\n\tfileMeta, err := f.Stat()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat path=%q: %w\", cfg.Path, err)\n\t}\n\n\tif fileMeta.IsDir() {\n\t\treturn nil, fmt.Errorf(\"given path is a directory: %q\", cfg.Path)\n\t}\n\n\tvar digests []file.Digest\n\tif len(cfg.DigestAlgorithms) > 0 {\n\t\tdigests, err = intFile.NewDigestsFromFile(context.TODO(), f, cfg.DigestAlgorithms)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to calculate digests for file=%q: %w\", cfg.Path, err)\n\t\t}\n\t}\n\n\tanalysisPath, cleanupFn, err := fileAnalysisPath(cfg.Path, cfg.SkipExtractArchive)\n\tif err != nil {\n\t\tif cleanupFn != nil {\n\t\t\tif cleanupErr := cleanupFn(); cleanupErr != nil {\n\t\t\t\tlog.Warnf(\"failed to cleanup temporary directory: %v\", cleanupErr)\n\t\t\t}\n\t\t}\n\t\treturn nil, fmt.Errorf(\"unable to extract file analysis path=%q: %w\", cfg.Path, err)\n\t}\n\n\tid, versionDigest := deriveIDFromFile(cfg)\n\n\treturn &fileSource{\n\t\tid:               id,\n\t\tconfig:           cfg,\n\t\tmutex:            &sync.Mutex{},\n\t\tcloser:           cleanupFn,\n\t\tanalysisPath:     analysisPath,\n\t\tdigestForVersion: versionDigest,\n\t\tdigests:          digests,\n\t\tmimeType:         stereoFile.MIMEType(f),\n\t}, nil\n}\n\nfunc (s fileSource) ID() artifact.ID {\n\treturn s.id\n}\n\nfunc (s fileSource) Describe() source.Description {\n\tname := path.Base(s.config.Path)\n\tversion := s.digestForVersion\n\tsupplier := \"\"\n\tif !s.config.Alias.IsEmpty() {\n\t\ta := s.config.Alias\n\t\tif a.Name != \"\" {\n\t\t\tname = a.Name\n\t\t}\n\n\t\tif a.Version != \"\" {\n\t\t\tversion = a.Version\n\t\t}\n\n\t\tif a.Supplier != \"\" {\n\t\t\tsupplier = a.Supplier\n\t\t}\n\t}\n\treturn source.Description{\n\t\tID:       string(s.id),\n\t\tName:     name,\n\t\tVersion:  version,\n\t\tSupplier: supplier,\n\t\tMetadata: source.FileMetadata{\n\t\t\tPath:     s.config.Path,\n\t\t\tDigests:  s.digests,\n\t\t\tMIMEType: s.mimeType,\n\t\t},\n\t}\n}\n\nfunc (s fileSource) FileResolver(_ source.Scope) (file.Resolver, error) {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\tif s.resolver != nil {\n\t\treturn s.resolver, nil\n\t}\n\n\texclusionFunctions, err := directorysource.GetDirectoryExclusionFunctions(s.analysisPath, s.config.Exclude.Paths)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfi, err := os.Stat(s.analysisPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat path=%q: %w\", s.analysisPath, err)\n\t}\n\n\tif isArchiveAnalysis := fi.IsDir(); isArchiveAnalysis {\n\t\t// this is an analysis of an archive file... we should scan the directory where the archive contents\n\t\tres, err := fileresolver.NewFromDirectory(s.analysisPath, \"\", exclusionFunctions...)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to create directory resolver: %w\", err)\n\t\t}\n\n\t\ts.resolver = res\n\t\treturn s.resolver, nil\n\t}\n\n\t// This is analysis of a single file. Use file indexer.\n\tres, err := fileresolver.NewFromFile(s.analysisPath, exclusionFunctions...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to create file resolver: %w\", err)\n\t}\n\n\ts.resolver = res\n\treturn s.resolver, nil\n}\n\nfunc (s *fileSource) Close() error {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\tif s.closer == nil {\n\t\treturn nil\n\t}\n\n\ts.resolver = nil\n\treturn s.closer()\n}\n\n// deriveIDFromFile derives an artifact ID from the contents of a file. If an alias is provided, it will be included\n// in the ID derivation (along with contents). This way if the user scans the same item but is considered to be\n// logically different, then ID will express that.\nfunc deriveIDFromFile(cfg Config) (artifact.ID, string) {\n\td := digestOfFileContents(cfg.Path)\n\tinfo := d\n\n\tif !cfg.Alias.IsEmpty() {\n\t\t// if the user provided an alias, we want to consider that in the artifact ID. This way if the user\n\t\t// scans the same item but is considered to be logically different, then ID will express that.\n\t\tinfo += fmt.Sprintf(\":%s@%s\", cfg.Alias.Name, cfg.Alias.Version)\n\t}\n\n\treturn internal.ArtifactIDFromDigest(digest.SHA256.FromString(info).String()), d\n}\n\n// fileAnalysisPath returns the path given, or in the case the path is an archive, the location where the archive\n// contents have been made available. A cleanup function is provided for any temp files created (if any).\n// Users can disable unpacking archives, allowing individual cataloguers to extract them instead (where\n// supported)\nfunc fileAnalysisPath(path string, skipExtractArchive bool) (string, func() error, error) {\n\tvar cleanupFn = func() error { return nil }\n\tvar analysisPath = path\n\n\tif skipExtractArchive {\n\t\treturn analysisPath, cleanupFn, nil\n\t}\n\n\tenvelopedUnarchiver, _, err := intFile.IdentifyArchive(context.Background(), path, nil)\n\tif unarchiver, ok := envelopedUnarchiver.(archives.Extractor); err == nil && ok {\n\t\tanalysisPath, cleanupFn, err = unarchiveToTmp(path, unarchiver)\n\t\tif err != nil {\n\t\t\treturn \"\", cleanupFn, fmt.Errorf(\"unable to unarchive source file: %w\", err)\n\t\t}\n\n\t\tlog.Debugf(\"source path is an archive\")\n\t}\n\n\treturn analysisPath, cleanupFn, nil\n}\n\nfunc digestOfFileContents(path string) string {\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn digest.SHA256.FromString(path).String()\n\t}\n\tdefer f.Close()\n\n\tdi, err := digest.SHA256.FromReader(f)\n\tif err != nil {\n\t\treturn digest.SHA256.FromString(path).String()\n\t}\n\n\treturn di.String()\n}\n\nfunc unarchiveToTmp(path string, unarchiver archives.Extractor) (string, func() error, error) {\n\tvar cleanupFn = func() error { return nil }\n\tarchive, err := os.Open(path)\n\tif err != nil {\n\t\treturn \"\", cleanupFn, fmt.Errorf(\"unable to open archive: %v\", err)\n\t}\n\tdefer archive.Close()\n\n\ttempDir, err := os.MkdirTemp(\"\", \"syft-archive-contents-\")\n\tif err != nil {\n\t\treturn \"\", cleanupFn, fmt.Errorf(\"unable to create tempdir for archive processing: %w\", err)\n\t}\n\n\tvisitor := func(_ context.Context, file archives.FileInfo) error {\n\t\t// Protect against symlink attacks by ensuring path doesn't escape tempDir\n\t\tdestPath, err := intFile.SafeJoin(tempDir, file.NameInArchive)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif file.IsDir() {\n\t\t\treturn os.MkdirAll(destPath, file.Mode())\n\t\t}\n\n\t\tif err = os.MkdirAll(filepath.Dir(destPath), os.ModeDir|0755); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create parent directory: %w\", err)\n\t\t}\n\n\t\trc, err := file.Open()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to open file in archive: %w\", err)\n\t\t}\n\t\tdefer rc.Close()\n\n\t\tdestFile, err := os.Create(destPath)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create file in destination: %w\", err)\n\t\t}\n\t\tdefer destFile.Close()\n\n\t\tif err := destFile.Chmod(file.Mode()); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to change mode of destination file: %w\", err)\n\t\t}\n\n\t\tif _, err := io.Copy(destFile, rc); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to copy file contents: %w\", err)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\treturn tempDir, func() error {\n\t\treturn os.RemoveAll(tempDir)\n\t}, unarchiver.Extract(context.Background(), archive, visitor)\n}\n"
  },
  {
    "path": "syft/source/filesource/file_source_provider.go",
    "content": "package filesource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc NewSourceProvider(path string, exclude source.ExcludeConfig, digestAlgorithms []crypto.Hash, alias source.Alias) source.Provider {\n\treturn &fileSourceProvider{\n\t\tpath:             path,\n\t\texclude:          exclude,\n\t\tdigestAlgorithms: digestAlgorithms,\n\t\talias:            alias,\n\t}\n}\n\ntype fileSourceProvider struct {\n\tpath             string\n\texclude          source.ExcludeConfig\n\tdigestAlgorithms []crypto.Hash\n\talias            source.Alias\n}\n\nfunc (p fileSourceProvider) Name() string {\n\treturn \"local-file\"\n}\n\nfunc (p fileSourceProvider) Provide(_ context.Context) (source.Source, error) {\n\tlocation, err := homedir.Expand(p.path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to expand potential directory path: %w\", err)\n\t}\n\n\tfs := afero.NewOsFs()\n\tfileMeta, err := fs.Stat(location)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat location: %w\", err)\n\t}\n\n\tif fileMeta.IsDir() {\n\t\treturn nil, fmt.Errorf(\"not a file source: %s\", p.path)\n\t}\n\n\treturn New(\n\t\tConfig{\n\t\t\tPath:             location,\n\t\t\tExclude:          p.exclude,\n\t\t\tDigestAlgorithms: p.digestAlgorithms,\n\t\t\tAlias:            p.alias,\n\t\t},\n\t)\n}\n"
  },
  {
    "path": "syft/source/filesource/file_source_test.go",
    "content": "package filesource\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/testutil\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestNewFromFile(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc       string\n\t\tinput      string\n\t\texpString  string\n\t\ttestPathFn func(file.Resolver) ([]file.Location, error)\n\t\texpRefs    int\n\t}{\n\t\t{\n\t\t\tdesc:  \"path detected by glob\",\n\t\t\tinput: \"testdata/file-index-filter/.vimrc\",\n\t\t\ttestPathFn: func(resolver file.Resolver) ([]file.Location, error) {\n\t\t\t\treturn resolver.FilesByGlob(\"**/.vimrc\", \"**/.2\", \"**/.1/*\", \"**/empty\")\n\t\t\t},\n\t\t\texpRefs: 1,\n\t\t},\n\t\t{\n\t\t\tdesc:  \"path detected by abs path\",\n\t\t\tinput: \"testdata/file-index-filter/.vimrc\",\n\t\t\ttestPathFn: func(resolver file.Resolver) ([]file.Location, error) {\n\t\t\t\treturn resolver.FilesByPath(\"/.vimrc\", \"/.2\", \"/.1/something\", \"/empty\")\n\t\t\t},\n\t\t\texpRefs: 1,\n\t\t},\n\t\t{\n\t\t\tdesc:  \"path detected by relative path\",\n\t\t\tinput: \"testdata/file-index-filter/.vimrc\",\n\t\t\ttestPathFn: func(resolver file.Resolver) ([]file.Location, error) {\n\t\t\t\treturn resolver.FilesByPath(\".vimrc\", \"/.2\", \"/.1/something\", \"empty\")\n\t\t\t},\n\t\t\texpRefs: 1,\n\t\t},\n\t\t{\n\t\t\tdesc:  \"normal path\",\n\t\t\tinput: \"testdata/actual-path/empty\",\n\t\t\ttestPathFn: func(resolver file.Resolver) ([]file.Location, error) {\n\t\t\t\treturn resolver.FilesByPath(\"empty\")\n\t\t\t},\n\t\t\texpRefs: 1,\n\t\t},\n\t\t{\n\t\t\tdesc:  \"path containing symlink\",\n\t\t\tinput: \"testdata/symlink/empty\",\n\t\t\ttestPathFn: func(resolver file.Resolver) ([]file.Location, error) {\n\t\t\t\treturn resolver.FilesByPath(\"empty\")\n\t\t\t},\n\t\t\texpRefs: 1,\n\t\t},\n\t}\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tsrc, err := New(Config{\n\t\t\t\tPath: test.input,\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tassert.Equal(t, test.input, src.Describe().Metadata.(source.FileMetadata).Path)\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := test.testPathFn(res)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Len(t, refs, test.expRefs)\n\t\t\tif test.expRefs == 1 {\n\t\t\t\tassert.Equal(t, path.Base(test.input), path.Base(refs[0].RealPath))\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nfunc TestNewFromFile_WithArchive(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc               string\n\t\tinput              string\n\t\texpString          string\n\t\tinputPaths         []string\n\t\texpRefs            int\n\t\tlayer2             bool\n\t\tcontents           string\n\t\tskipExtractArchive bool\n\t}{\n\t\t{\n\t\t\tdesc:       \"path detected\",\n\t\t\tinput:      \"testdata/path-detected\",\n\t\t\tinputPaths: []string{\"/.vimrc\"},\n\t\t\texpRefs:    1,\n\t\t},\n\t\t{\n\t\t\tdesc:       \"use first entry for duplicate paths\",\n\t\t\tinput:      \"testdata/path-detected\",\n\t\t\tinputPaths: []string{\"/.vimrc\"},\n\t\t\texpRefs:    1,\n\t\t\tlayer2:     true,\n\t\t\tcontents:   \"Another .vimrc file\",\n\t\t},\n\t\t{\n\t\t\tdesc:               \"skip extract archive\",\n\t\t\tinput:              \"testdata/path-detected\",\n\t\t\tinputPaths:         []string{\"/.vimrc\"},\n\t\t\texpRefs:            0,\n\t\t\tlayer2:             false,\n\t\t\tskipExtractArchive: true,\n\t\t},\n\t}\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tarchivePath := setupArchiveTest(t, test.input, test.layer2)\n\n\t\t\tcfg := Config{\n\t\t\t\tPath:               archivePath,\n\t\t\t\tSkipExtractArchive: test.skipExtractArchive,\n\t\t\t}\n\n\t\t\tsrc, err := New(cfg)\n\t\t\trequire.NoError(t, err)\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tassert.Equal(t, archivePath, src.Describe().Metadata.(source.FileMetadata).Path)\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\trefs, err := res.FilesByPath(test.inputPaths...)\n\t\t\trequire.NoError(t, err)\n\t\t\tassert.Len(t, refs, test.expRefs)\n\n\t\t\tif test.contents != \"\" {\n\t\t\t\treader, err := res.FileContentsByLocation(refs[0])\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tdata, err := io.ReadAll(reader)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tassert.Equal(t, test.contents, string(data))\n\t\t\t}\n\n\t\t})\n\t}\n}\n\n// setupArchiveTest encapsulates common test setup work for tar file tests. It returns a cleanup function,\n// which should be called (typically deferred) by the caller, the path of the created tar archive, and an error,\n// which should trigger a fatal test failure in the consuming test. The returned cleanup function will never be nil\n// (even if there's an error), and it should always be called.\nfunc setupArchiveTest(t testing.TB, sourceDirPath string, layer2 bool) string {\n\tt.Helper()\n\n\tarchivePrefix, err := os.CreateTemp(\"\", \"syft-archive-TEST-\")\n\trequire.NoError(t, err)\n\n\tt.Cleanup(func() {\n\t\tassert.NoError(t, os.Remove(archivePrefix.Name()))\n\t})\n\n\tdestinationArchiveFilePath := archivePrefix.Name() + \".tar\"\n\tt.Logf(\"archive path: %s\", destinationArchiveFilePath)\n\tcreateArchive(t, sourceDirPath, destinationArchiveFilePath, layer2)\n\n\tt.Cleanup(func() {\n\t\tassert.NoError(t, os.Remove(destinationArchiveFilePath))\n\t})\n\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\n\tt.Logf(\"running from: %s\", cwd)\n\n\treturn destinationArchiveFilePath\n}\n\n// createArchive creates a new archive file at destinationArchivePath based on the directory found at sourceDirPath.\nfunc createArchive(t testing.TB, sourceDirPath, destinationArchivePath string, layer2 bool) {\n\tt.Helper()\n\n\tcwd, err := os.Getwd()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to get cwd: %+v\", err)\n\t}\n\n\tcmd := exec.Command(\"./generate-tar-fixture-from-source-dir.sh\", destinationArchivePath, path.Base(sourceDirPath))\n\tcmd.Dir = filepath.Join(cwd, \"testdata\")\n\n\tif err := cmd.Start(); err != nil {\n\t\tt.Fatalf(\"unable to start generate zip fixture script: %+v\", err)\n\t}\n\n\tif err := cmd.Wait(); err != nil {\n\t\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\t\t// The program has exited with an exit code != 0\n\n\t\t\t// This works on both Unix and Windows. Although package\n\t\t\t// syscall is generally platform dependent, WaitStatus is\n\t\t\t// defined for both Unix and Windows and in both cases has\n\t\t\t// an ExitStatus() method with the same signature.\n\t\t\tif status, ok := exiterr.Sys().(syscall.WaitStatus); ok {\n\t\t\t\tif status.ExitStatus() != 0 {\n\t\t\t\t\tt.Fatalf(\"failed to generate fixture: rc=%d\", status.ExitStatus())\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tt.Fatalf(\"unable to get generate fixture script result: %+v\", err)\n\t\t}\n\t}\n\n\tif layer2 {\n\t\tcmd = exec.Command(\"tar\", \"-rvf\", destinationArchivePath, \".\")\n\t\tcmd.Dir = filepath.Join(cwd, \"testdata\", path.Base(sourceDirPath+\"-2\"))\n\t\tif err := cmd.Start(); err != nil {\n\t\t\tt.Fatalf(\"unable to start tar appending fixture script: %+v\", err)\n\t\t}\n\t\t_ = cmd.Wait()\n\t}\n}\n\nfunc Test_FileSource_ID(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttests := []struct {\n\t\tname       string\n\t\tcfg        Config\n\t\twant       artifact.ID\n\t\twantDigest string\n\t\twantErr    require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:    \"empty\",\n\t\t\tcfg:     Config{},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"does not exist\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/does-not-exist\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname: \"to dir\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/image-simple\",\n\t\t\t},\n\t\t\twantErr: require.Error,\n\t\t},\n\t\t{\n\t\t\tname:       \"with path\",\n\t\t\tcfg:        Config{Path: \"./testdata/image-simple/Dockerfile\"},\n\t\t\twant:       artifact.ID(\"db7146472cf6d49b3ac01b42812fb60020b0b4898b97491b21bb690c808d5159\"),\n\t\t\twantDigest: \"sha256:38601c0bb4269a10ce1d00590ea7689c1117dd9274c758653934ab4f2016f80f\",\n\t\t},\n\t\t{\n\t\t\tname: \"with path and alias\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"./testdata/image-simple/Dockerfile\",\n\t\t\t\tAlias: source.Alias{\n\t\t\t\t\tName:    \"name-me-that!\",\n\t\t\t\t\tVersion: \"version-me-this!\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant:       artifact.ID(\"3c713003305ac6605255cec8bf4ea649aa44b2b9a9f3a07bd683869d1363438a\"),\n\t\t\twantDigest: \"sha256:38601c0bb4269a10ce1d00590ea7689c1117dd9274c758653934ab4f2016f80f\",\n\t\t},\n\t\t{\n\t\t\tname: \"other fields do not affect ID\",\n\t\t\tcfg: Config{\n\t\t\t\tPath: \"testdata/image-simple/Dockerfile\",\n\t\t\t\tExclude: source.ExcludeConfig{\n\t\t\t\t\tPaths: []string{\"a\", \"b\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant:       artifact.ID(\"db7146472cf6d49b3ac01b42812fb60020b0b4898b97491b21bb690c808d5159\"),\n\t\t\twantDigest: \"sha256:38601c0bb4269a10ce1d00590ea7689c1117dd9274c758653934ab4f2016f80f\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = require.NoError\n\t\t\t}\n\t\t\tnewSource, err := New(tt.cfg)\n\t\t\ttt.wantErr(t, err)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ts := newSource.(*fileSource)\n\t\t\tassert.Equalf(t, tt.want, s.ID(), \"ID() mismatch\")\n\t\t\tassert.Equalf(t, tt.wantDigest, s.digestForVersion, \"digestForVersion mismatch\")\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/image_metadata.go",
    "content": "package source\n\n// ImageMetadata represents all static metadata that defines what a container image is. This is useful to later describe\n// \"what\" was cataloged without needing the more complicated stereoscope Image objects or FileResolver objects.\ntype ImageMetadata struct {\n\tUserInput      string            `json:\"userInput\"`\n\tID             string            `json:\"imageID\"`\n\tManifestDigest string            `json:\"manifestDigest\"`\n\tMediaType      string            `json:\"mediaType\"`\n\tTags           []string          `json:\"tags\"`\n\tSize           int64             `json:\"imageSize\"`\n\tLayers         []LayerMetadata   `json:\"layers\"`\n\tRawManifest    []byte            `json:\"manifest\"`\n\tRawConfig      []byte            `json:\"config\"`\n\tRepoDigests    []string          `json:\"repoDigests\"`\n\tArchitecture   string            `json:\"architecture\"`\n\tVariant        string            `json:\"architectureVariant,omitempty\"`\n\tOS             string            `json:\"os\"`\n\tLabels         map[string]string `json:\"labels,omitempty\"`\n\tAnnotations    map[string]string `json:\"annotations,omitempty\" id:\"-\"` // critical: do not consider annotations as an identifiable part of the source image\n}\n\n// LayerMetadata represents all static metadata that defines what a container image layer is.\ntype LayerMetadata struct {\n\tMediaType string `json:\"mediaType\"`\n\tDigest    string `json:\"digest\"`\n\tSize      int64  `json:\"size\"`\n}\n"
  },
  {
    "path": "syft/source/internal/digest_utils.go",
    "content": "package internal\n\nimport (\n\t\"strings\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n)\n\nfunc ArtifactIDFromDigest(input string) artifact.ID {\n\treturn artifact.ID(strings.TrimPrefix(input, \"sha256:\"))\n}\n"
  },
  {
    "path": "syft/source/internal/image_id.go",
    "content": "package internal\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/opencontainers/go-digest\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// DeriveImageID derives an artifact ID from the given image metadata. The order of data precedence is:\n//  1. prefer a digest of the raw container image manifest\n//  2. if no manifest digest is available, calculate a chain ID from the image layer metadata\n//  3. if no layer metadata is available, use the user input string\n//\n// in all cases, if an alias is provided, it is additionally considered in the ID calculation. This allows for the\n// same image to be scanned multiple times with different aliases and be considered logically different.\nfunc DeriveImageID(alias source.Alias, metadata source.ImageMetadata) artifact.ID {\n\tvar input string\n\n\tif len(metadata.RawManifest) > 0 {\n\t\tinput = digest.Canonical.FromBytes(metadata.RawManifest).String()\n\t} else {\n\t\t// calculate chain ID for image sources where manifestDigest is not available\n\t\t// https://github.com/opencontainers/image-spec/blob/main/config.md#layer-chainid\n\t\tinput = calculateChainID(metadata.Layers)\n\t\tif input == \"\" {\n\t\t\t// TODO what happens here if image has no layers?\n\t\t\t// is this case possible?\n\t\t\tinput = digest.Canonical.FromString(metadata.UserInput).String()\n\t\t}\n\t}\n\n\tif !alias.IsEmpty() {\n\t\t// if the user provided an alias, we want to consider that in the artifact ID. This way if the user\n\t\t// scans the same item but is considered to be logically different, then ID will express that.\n\t\taliasStr := fmt.Sprintf(\":%s@%s\", alias.Name, alias.Version)\n\t\tinput = digest.Canonical.FromString(input + aliasStr).String()\n\t}\n\n\treturn ArtifactIDFromDigest(input)\n}\n\n// https://github.com/opencontainers/image-spec/blob/main/config.md#layer-chainid\nfunc calculateChainID(lm []source.LayerMetadata) string {\n\tif len(lm) < 1 {\n\t\treturn \"\"\n\t}\n\n\t// DiffID(L0) = digest of layer 0\n\t// https://github.com/anchore/stereoscope/blob/1b1b744a919964f38d14e1416fb3f25221b761ce/pkg/image/layer_metadata.go#L19-L32\n\tchainID := lm[0].Digest\n\tid := chain(chainID, lm[1:])\n\n\treturn id\n}\n\nfunc chain(chainID string, layers []source.LayerMetadata) string {\n\tif len(layers) < 1 {\n\t\treturn chainID\n\t}\n\n\tchainID = digest.Canonical.FromString(layers[0].Digest + \" \" + chainID).String()\n\treturn chain(chainID, layers[1:])\n}\n"
  },
  {
    "path": "syft/source/internal/image_id_test.go",
    "content": "package internal\n\nimport (\n\t\"crypto/sha256\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc TestDeriveImageID(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\talias    source.Alias\n\t\tmetadata source.ImageMetadata\n\t\twant     artifact.ID\n\t}{\n\t\t{\n\t\t\tname: \"use raw manifest over chain ID or user input\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRawManifest: []byte(\"raw-manifest\"),\n\t\t\t},\n\t\t\twant: func() artifact.ID {\n\t\t\t\thasher := sha256.New()\n\t\t\t\thasher.Write([]byte(\"raw-manifest\"))\n\t\t\t\treturn artifact.ID(fmt.Sprintf(\"%x\", hasher.Sum(nil)))\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"use chain ID over user input\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: func() artifact.ID {\n\t\t\t\tmetadata := []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"c\",\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn artifact.ID(strings.TrimPrefix(calculateChainID(metadata), \"sha256:\"))\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"use user input last\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t},\n\t\t\twant: func() artifact.ID {\n\t\t\t\thasher := sha256.New()\n\t\t\t\thasher.Write([]byte(\"user-input\"))\n\t\t\t\treturn artifact.ID(fmt.Sprintf(\"%x\", hasher.Sum(nil)))\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"without alias (first)\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRawManifest: []byte(\"raw-manifest\"),\n\t\t\t},\n\t\t\twant: \"85298926ecd92ed57688f13039017160cd728f04dd0d2d10a10629007106f107\",\n\t\t},\n\t\t{\n\t\t\tname: \"always consider alias (first)\",\n\t\t\talias: source.Alias{\n\t\t\t\tName:    \"alias\",\n\t\t\t\tVersion: \"version\",\n\t\t\t},\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"a\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"b\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tDigest: \"c\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRawManifest: []byte(\"raw-manifest\"),\n\t\t\t},\n\t\t\twant: \"a8717e42449960c1dd4963f2f22bd69c7c105e7e82445be0a65aa1825d62ff0d\",\n\t\t},\n\t\t{\n\t\t\tname: \"without alias (last)\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t},\n\t\t\twant: \"ab0dff627d80b9753193d7280bec8f45e8ec6b4cb0912c6fffcf7cd782d9739e\",\n\t\t},\n\t\t{\n\t\t\tname: \"always consider alias (last)\",\n\t\t\talias: source.Alias{\n\t\t\t\tName:    \"alias\",\n\t\t\t\tVersion: \"version\",\n\t\t\t},\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"user-input\",\n\t\t\t},\n\t\t\twant: \"fe86c0eecd5654d3c0c0b2176aa394aef6440347c241aa8d9b628dfdde4287cf\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, DeriveImageID(tt.alias, tt.metadata))\n\t\t})\n\t}\n}\n\n// ensures same metadata produces identical IDs\n// regardless of whether the source is stereoscope-based or OCI model-based. Both source types\n// use DeriveImageID with ImageMetadata\n// this test captures known-good IDs that must remain\n// stable across refactors to maintain consistency.\n//\n// IMPORTANT: If any of these tests fail after a refactor, it means the artifact ID generation\n// has changed and will break consistency between stereoscope images and OCI model sources.\nfunc TestDeriveImageID_CrossSourceConsistency(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\talias    source.Alias\n\t\tmetadata source.ImageMetadata\n\t\twantID   artifact.ID\n\t}{\n\t\t{\n\t\t\tname: \"raw manifest with layers - typical container image\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput:      \"docker.io/library/alpine:latest\",\n\t\t\t\tManifestDigest: \"sha256:abc123\",\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{Digest: \"sha256:layer1\", MediaType: \"application/vnd.oci.image.layer.v1.tar+gzip\", Size: 1000},\n\t\t\t\t\t{Digest: \"sha256:layer2\", MediaType: \"application/vnd.oci.image.layer.v1.tar+gzip\", Size: 2000},\n\t\t\t\t},\n\t\t\t\tRawManifest: []byte(`{\"schemaVersion\":2,\"mediaType\":\"application/vnd.oci.image.manifest.v1+json\"}`),\n\t\t\t},\n\t\t\t// snapshot: this ID must remain stable for stereoscope/oci-model consistency\n\t\t\twantID: \"b22c7289dd3b4785a3795c90e15d16bd66bd29b444b8974fe29ed0443ce50405\",\n\t\t},\n\t\t{\n\t\t\tname: \"raw manifest only - minimal image\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tRawManifest: []byte(`{\"schemaVersion\":2}`),\n\t\t\t},\n\t\t\t// snapshot: this ID must remain stable\n\t\t\twantID: \"bafebd36189ad3688b7b3915ea55d461e0bfcfbdde11e54b0a123999fb6be50f\",\n\t\t},\n\t\t{\n\t\t\tname: \"chain ID fallback - no raw manifest\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"some-image\",\n\t\t\t\tLayers: []source.LayerMetadata{\n\t\t\t\t\t{Digest: \"sha256:aaa111\"},\n\t\t\t\t\t{Digest: \"sha256:bbb222\"},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// snapshot: chain ID calculation must remain stable\n\t\t\twantID: \"0ba9c8d271e6708871505d362e37267c5fb7910066c04d3115b89ba4d34aa180\",\n\t\t},\n\t\t{\n\t\t\tname: \"user input fallback - no manifest or layers\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"registry.example.com/org/model:v1.0\",\n\t\t\t},\n\t\t\t// snapshot: user input hash must remain stable\n\t\t\twantID: \"a5a8733a3ba3eb99a8ebebcd40c4053f9b896ea6e2217ebc6e885573f20baccf\",\n\t\t},\n\t\t{\n\t\t\tname: \"with alias - same image different logical identity\",\n\t\t\talias: source.Alias{\n\t\t\t\tName:    \"my-custom-name\",\n\t\t\t\tVersion: \"1.0.0\",\n\t\t\t},\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tRawManifest: []byte(`{\"schemaVersion\":2}`),\n\t\t\t},\n\t\t\t// snapshot: alias must affect ID deterministically\n\t\t\twantID: \"9eae41c0efc30023368c29089bac007f2c9d0b40a0ee034081a17c4c22f55ac6\",\n\t\t},\n\t\t{\n\t\t\tname: \"annotations has no effect on ID\",\n\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\tUserInput: \"registry.example.com/org/model:v1.0\",\n\t\t\t\tAnnotations: map[string]string{\n\t\t\t\t\t\"annotation1\": \"value1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t// snapshot: user input hash must remain stable\n\t\t\twantID: \"a5a8733a3ba3eb99a8ebebcd40c4053f9b896ea6e2217ebc6e885573f20baccf\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tgot := DeriveImageID(tt.alias, tt.metadata)\n\t\t\tassert.Equal(t, tt.wantID, got, \"ID must remain stable for cross-source consistency\")\n\t\t})\n\t}\n}\n\nfunc TestCalculateChainID(t *testing.T) {\n\ttests := []struct {\n\t\tname   string\n\t\tlayers []source.LayerMetadata\n\t\twant   string\n\t}{\n\t\t{\n\t\t\tname:   \"empty layers returns empty string\",\n\t\t\tlayers: []source.LayerMetadata{},\n\t\t\twant:   \"\",\n\t\t},\n\t\t{\n\t\t\tname: \"single layer returns digest\",\n\t\t\tlayers: []source.LayerMetadata{\n\t\t\t\t{Digest: \"sha256:abc123\"},\n\t\t\t},\n\t\t\twant: \"sha256:abc123\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple layers calculates chain ID\",\n\t\t\tlayers: []source.LayerMetadata{\n\t\t\t\t{Digest: \"a\"},\n\t\t\t\t{Digest: \"b\"},\n\t\t\t\t{Digest: \"c\"},\n\t\t\t},\n\t\t\t// snapshot - this value should not change\n\t\t\twant: \"sha256:1dfe230e220ef0e6bc0a8978d23d72b95769e76a62879a5f49267d8c007ab43d\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, calculateChainID(tt.layers))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/oci_model_metadata.go",
    "content": "package source\n\n// OCIModelMetadata is an AI model from an OCI registry, which is a specialized form of ImageMetadata.\ntype OCIModelMetadata ImageMetadata\n"
  },
  {
    "path": "syft/source/ocimodelsource/oci_model_source.go",
    "content": "package ocimodelsource\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/google/go-containerregistry/pkg/name\"\n\tv1 \"github.com/google/go-containerregistry/pkg/v1\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/internal\"\n)\n\nvar _ source.Source = (*ociModelSource)(nil)\n\n// Config holds the input configuration for an OCI model artifact source.\ntype Config struct {\n\tReference       string\n\tRegistryOptions *image.RegistryOptions\n\tAlias           source.Alias\n}\n\n// ociModelSource implements the source.Source interface for OCI model artifacts.\ntype ociModelSource struct {\n\tid        artifact.ID\n\treference string\n\talias     source.Alias\n\tmetadata  source.OCIModelMetadata\n\ttempDir   string\n\tresolver  interface {\n\t\tfile.Resolver\n\t\tfile.OCIMediaTypeResolver\n\t}\n\tmutex *sync.Mutex\n}\n\n// NewFromRegistry creates a new OCI model source by fetching the model artifact from a registry.\nfunc NewFromRegistry(ctx context.Context, cfg Config) (source.Source, error) {\n\tclient := newRegistryClient(cfg.RegistryOptions)\n\tart, err := validateAndFetchArtifact(ctx, client, cfg.Reference)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmetadata := buildMetadata(art)\n\ttempDir, resolver, err := fetchAndStoreGGUFHeaders(ctx, client, art)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tid := internal.DeriveImageID(cfg.Alias, source.ImageMetadata(metadata))\n\treturn &ociModelSource{\n\t\tid:        id,\n\t\treference: cfg.Reference,\n\t\talias:     cfg.Alias,\n\t\tmetadata:  metadata,\n\t\ttempDir:   tempDir,\n\t\tresolver:  resolver,\n\t\tmutex:     &sync.Mutex{},\n\t}, nil\n}\n\n// validateAndFetchArtifact fetches and validates a model artifact in a single registry call.\nfunc validateAndFetchArtifact(ctx context.Context, client *registryClient, reference string) (*modelArtifact, error) {\n\tart, err := client.fetchModelArtifact(ctx, reference)\n\tif err != nil {\n\t\t// errNotModelArtifact is wrapped, so callers can use errors.Is() to check\n\t\treturn nil, err\n\t}\n\n\tif len(art.GGUFLayers) == 0 {\n\t\treturn nil, fmt.Errorf(\"model artifact has no GGUF layers\")\n\t}\n\n\treturn art, nil\n}\n\n// fetchAndStoreGGUFHeaders fetches GGUF layer headers and stores them in temp files.\nfunc fetchAndStoreGGUFHeaders(ctx context.Context, client *registryClient, artifact *modelArtifact) (string, *fileresolver.ContainerImageModel, error) {\n\ttempDir, err := os.MkdirTemp(\"\", \"syft-oci-gguf\")\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"failed to create temp directory: %w\", err)\n\t}\n\n\tlayerFiles := make(map[string]fileresolver.LayerInfo)\n\tfor _, layer := range artifact.GGUFLayers {\n\t\tli, err := fetchSingleGGUFHeader(ctx, client, artifact.Reference, layer, tempDir)\n\t\tif err != nil {\n\t\t\tosErr := os.RemoveAll(tempDir)\n\t\t\tif osErr != nil {\n\t\t\t\tlog.Errorf(\"unable to remove temp directory (%s): %v\", tempDir, err)\n\t\t\t}\n\t\t\treturn \"\", nil, err\n\t\t}\n\t\tlayerFiles[layer.Digest.String()] = li\n\t}\n\n\tresolver := fileresolver.NewContainerImageModel(tempDir, layerFiles)\n\n\treturn tempDir, resolver, nil\n}\n\n// fetchSingleGGUFHeader fetches a single GGUF layer header and writes it to a temp file.\nfunc fetchSingleGGUFHeader(ctx context.Context, client *registryClient, ref name.Reference, layer v1.Descriptor, tempDir string) (fileresolver.LayerInfo, error) {\n\theaderData, err := client.fetchBlobRange(ctx, ref, layer.Digest, maxHeaderBytes)\n\tif err != nil {\n\t\treturn fileresolver.LayerInfo{}, fmt.Errorf(\"failed to fetch GGUF layer header: %w\", err)\n\t}\n\n\tdigestStr := layer.Digest.String()\n\tsafeDigest := strings.ReplaceAll(digestStr, \":\", \"-\")\n\ttempPath := filepath.Join(tempDir, safeDigest+\".gguf\")\n\tif err := os.WriteFile(tempPath, headerData, 0600); err != nil {\n\t\treturn fileresolver.LayerInfo{}, fmt.Errorf(\"failed to write temp file: %w\", err)\n\t}\n\n\treturn fileresolver.LayerInfo{\n\t\tTempPath:  tempPath,\n\t\tMediaType: string(layer.MediaType),\n\t}, nil\n}\n\n// buildMetadata constructs OCIModelMetadata from a modelArtifact.\nfunc buildMetadata(artifact *modelArtifact) source.OCIModelMetadata {\n\t// layers\n\tlayers := make([]source.LayerMetadata, len(artifact.Manifest.Layers))\n\tfor i, layer := range artifact.Manifest.Layers {\n\t\tlayers[i] = source.LayerMetadata{\n\t\t\tMediaType: string(layer.MediaType),\n\t\t\tDigest:    layer.Digest.String(),\n\t\t\tSize:      layer.Size,\n\t\t}\n\t}\n\n\t// tags\n\tvar tags []string\n\tif tagged, ok := artifact.Reference.(interface{ TagStr() string }); ok {\n\t\tif tag := tagged.TagStr(); tag != \"\" {\n\t\t\ttags = []string{tag}\n\t\t}\n\t}\n\n\t// digests\n\tvar repoDigests []string\n\tif artifact.ManifestDigest != \"\" {\n\t\trepoDigests = []string{artifact.Reference.Context().String() + \"@\" + artifact.ManifestDigest}\n\t}\n\n\t// metadata\n\treturn source.OCIModelMetadata{\n\t\tUserInput:      artifact.Reference.String(),\n\t\tID:             artifact.ManifestDigest,\n\t\tManifestDigest: artifact.ManifestDigest,\n\t\tMediaType:      string(artifact.Manifest.MediaType),\n\t\tTags:           tags,\n\t\tSize:           calculateTotalSize(layers),\n\t\tLayers:         layers,\n\t\tRawManifest:    artifact.RawManifest,\n\t\tRawConfig:      artifact.RawConfig,\n\t\tRepoDigests:    repoDigests,\n\t\tArchitecture:   artifact.Config.Architecture,\n\t\tVariant:        artifact.Config.Variant,\n\t\tOS:             artifact.Config.OS,\n\t\tLabels:         artifact.Config.Config.Labels,\n\t\tAnnotations:    extractManifestAnnotations(artifact.Manifest),\n\t}\n}\n\n// extractManifestAnnotations extracts annotations from the manifest.\nfunc extractManifestAnnotations(manifest *v1.Manifest) map[string]string {\n\tif manifest == nil || manifest.Annotations == nil {\n\t\treturn make(map[string]string)\n\t}\n\treturn manifest.Annotations\n}\n\n// calculateTotalSize sums up the size of all layers.\nfunc calculateTotalSize(layers []source.LayerMetadata) int64 {\n\tvar total int64\n\tfor _, layer := range layers {\n\t\ttotal += layer.Size\n\t}\n\treturn total\n}\n\n// ID returns the artifact ID.\nfunc (s *ociModelSource) ID() artifact.ID {\n\treturn s.id\n}\n\n// Describe returns a description of the source.\nfunc (s *ociModelSource) Describe() source.Description {\n\tname := s.reference\n\tversion := \"\"\n\tsupplier := \"\"\n\n\tif !s.alias.IsEmpty() {\n\t\tif s.alias.Name != \"\" {\n\t\t\tname = s.alias.Name\n\t\t}\n\t\tif s.alias.Version != \"\" {\n\t\t\tversion = s.alias.Version\n\t\t}\n\t\tif s.alias.Supplier != \"\" {\n\t\t\tsupplier = s.alias.Supplier\n\t\t}\n\t}\n\n\treturn source.Description{\n\t\tID:       string(s.id),\n\t\tName:     name,\n\t\tVersion:  version,\n\t\tSupplier: supplier,\n\t\tMetadata: s.metadata,\n\t}\n}\n\n// FileResolver returns a file resolver for accessing header of GGUF files.\nfunc (s *ociModelSource) FileResolver(_ source.Scope) (file.Resolver, error) {\n\treturn s.resolver, nil\n}\n\n// Close cleans up temporary files. Safe to call multiple times.\nfunc (s *ociModelSource) Close() error {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\tif s.tempDir == \"\" {\n\t\treturn nil\n\t}\n\n\terr := os.RemoveAll(s.tempDir)\n\ts.tempDir = \"\"\n\ts.resolver = nil\n\treturn err\n}\n"
  },
  {
    "path": "syft/source/ocimodelsource/oci_model_source_provider.go",
    "content": "package ocimodelsource\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\ntype ociModelSourceProvider struct {\n\treference    string\n\tregistryOpts *image.RegistryOptions\n\talias        source.Alias\n}\n\n// NewSourceProvider creates a new OCI model artifact source provider.\nfunc NewSourceProvider(reference string, registryOpts *image.RegistryOptions, alias source.Alias) source.Provider {\n\treturn &ociModelSourceProvider{\n\t\treference:    reference,\n\t\tregistryOpts: registryOpts,\n\t\talias:        alias,\n\t}\n}\n\nfunc (p *ociModelSourceProvider) Name() string {\n\treturn \"oci-model\"\n}\n\nfunc (p *ociModelSourceProvider) Provide(ctx context.Context) (source.Source, error) {\n\tcfg := Config{\n\t\tReference:       p.reference,\n\t\tRegistryOptions: p.registryOpts,\n\t\tAlias:           p.alias,\n\t}\n\treturn NewFromRegistry(ctx, cfg)\n}\n"
  },
  {
    "path": "syft/source/ocimodelsource/registry_client.go",
    "content": "package ocimodelsource\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/google/go-containerregistry/pkg/authn\"\n\t\"github.com/google/go-containerregistry/pkg/name\"\n\tv1 \"github.com/google/go-containerregistry/pkg/v1\"\n\t\"github.com/google/go-containerregistry/pkg/v1/remote\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\n// errNotModelArtifact is returned when a reference does not point to a model artifact.\nvar errNotModelArtifact = errors.New(\"not an OCI model artifact\")\n\nconst (\n\t// Model artifact media types as per Docker's OCI artifacts for AI model packaging\n\t// Reference: https://www.docker.com/blog/oci-artifacts-for-ai-model-packaging/\n\tmodelConfigMediaTypePrefix = \"application/vnd.docker.ai.model.config.\"\n\tggufLayerMediaType         = \"application/vnd.docker.ai.gguf.v3\"\n\n\t// Maximum bytes to read/return for GGUF headers\n\tmaxHeaderBytes = 8 * 1024 * 1024 // 8 MB\n)\n\n// registryClient handles OCI registry interactions for model artifacts.\ntype registryClient struct {\n\toptions []remote.Option\n}\n\n// newRegistryClient creates a new registry client with authentication from RegistryOptions.\nfunc newRegistryClient(registryOpts *image.RegistryOptions) *registryClient {\n\topts := buildRemoteOptions(registryOpts)\n\n\treturn &registryClient{\n\t\toptions: opts,\n\t}\n}\n\n// buildRemoteOptions converts stereoscope RegistryOptions to go-containerregistry remote.Options.\nfunc buildRemoteOptions(registryOpts *image.RegistryOptions) []remote.Option {\n\tvar opts []remote.Option\n\n\tif registryOpts == nil {\n\t\treturn opts\n\t}\n\n\t// Build authenticator\n\tauthenticator := buildAuthenticator(registryOpts)\n\topts = append(opts, remote.WithAuth(authenticator))\n\n\t// Handle TLS settings\n\tif registryOpts.InsecureSkipTLSVerify {\n\t\tif transport, ok := remote.DefaultTransport.(*http.Transport); ok {\n\t\t\ttransport = transport.Clone()\n\t\t\tif transport.TLSClientConfig == nil {\n\t\t\t\ttransport.TLSClientConfig = &tls.Config{\n\t\t\t\t\tMinVersion: tls.VersionTLS12,\n\t\t\t\t}\n\t\t\t}\n\t\t\ttransport.TLSClientConfig.InsecureSkipVerify = true //#nosec G402 -- user explicitly requested insecure TLS\n\t\t\topts = append(opts, remote.WithTransport(transport))\n\t\t}\n\t}\n\n\t// Handle insecure HTTP\n\tif registryOpts.InsecureUseHTTP {\n\t\topts = append(opts, remote.WithTransport(http.DefaultTransport))\n\t}\n\n\treturn opts\n}\n\n// buildAuthenticator creates an authn.Authenticator from RegistryOptions.\nfunc buildAuthenticator(registryOpts *image.RegistryOptions) authn.Authenticator {\n\t// If credentials are provided, use them\n\tif len(registryOpts.Credentials) > 0 {\n\t\t// Use the first credential set (we could enhance this to match by authority)\n\t\tcred := registryOpts.Credentials[0]\n\n\t\tif cred.Token != \"\" {\n\t\t\treturn &authn.Bearer{Token: cred.Token}\n\t\t}\n\n\t\tif cred.Username != \"\" || cred.Password != \"\" {\n\t\t\treturn &authn.Basic{\n\t\t\t\tUsername: cred.Username,\n\t\t\t\tPassword: cred.Password,\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fall back to anonymous authenticator\n\treturn authn.Anonymous\n}\n\n// modelArtifact represents a parsed OCI model artifact.\ntype modelArtifact struct {\n\tReference      name.Reference\n\tManifest       *v1.Manifest\n\tConfig         *v1.ConfigFile\n\tRawManifest    []byte\n\tRawConfig      []byte\n\tManifestDigest string\n\tGGUFLayers     []v1.Descriptor\n}\n\nfunc (c *registryClient) fetchModelArtifact(ctx context.Context, refStr string) (*modelArtifact, error) {\n\tref, err := name.ParseReference(refStr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse reference %q: %w\", refStr, err)\n\t}\n\n\topts := c.options\n\topts = append(opts, remote.WithContext(ctx))\n\tdesc, err := remote.Get(ref, opts...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch descriptor: %w\", err)\n\t}\n\n\tmanifest := &v1.Manifest{}\n\tif err := json.Unmarshal(desc.Manifest, manifest); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to unmarshal manifest: %w\", err)\n\t}\n\n\tif !isModelArtifact(manifest) {\n\t\treturn nil, fmt.Errorf(\"%w (config media type: %s)\", errNotModelArtifact, manifest.Config.MediaType)\n\t}\n\n\timg, err := desc.Image()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get image: %w\", err)\n\t}\n\n\tconfigFile, err := img.ConfigFile()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get config file: %w\", err)\n\t}\n\n\trawConfig, err := img.RawConfigFile()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get raw config: %w\", err)\n\t}\n\n\tggufLayers := extractGGUFLayers(manifest)\n\n\treturn &modelArtifact{\n\t\tReference:      ref,\n\t\tManifest:       manifest,\n\t\tConfig:         configFile,\n\t\tRawManifest:    desc.Manifest,\n\t\tRawConfig:      rawConfig,\n\t\tManifestDigest: desc.Digest.String(),\n\t\tGGUFLayers:     ggufLayers,\n\t}, nil\n}\n\n// isModelArtifact checks if the manifest represents a model artifact.\nfunc isModelArtifact(manifest *v1.Manifest) bool {\n\treturn strings.HasPrefix(string(manifest.Config.MediaType), modelConfigMediaTypePrefix)\n}\n\n// extractGGUFLayers extracts GGUF layer descriptors from the manifest.\nfunc extractGGUFLayers(manifest *v1.Manifest) []v1.Descriptor {\n\tvar ggufLayers []v1.Descriptor\n\tfor _, layer := range manifest.Layers {\n\t\tif string(layer.MediaType) == ggufLayerMediaType {\n\t\t\tggufLayers = append(ggufLayers, layer)\n\t\t}\n\t}\n\treturn ggufLayers\n}\n\nfunc (c *registryClient) fetchBlobRange(ctx context.Context, ref name.Reference, digest v1.Hash, maxBytes int64) ([]byte, error) {\n\trepo := ref.Context()\n\n\topts := c.options\n\topts = append(opts, remote.WithContext(ctx))\n\tlayer, err := remote.Layer(repo.Digest(digest.String()), opts...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch layer: %w\", err)\n\t}\n\n\treader, err := layer.Compressed()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get layer reader: %w\", err)\n\t}\n\t// this defer is what causes the download to stop\n\t//   1. io.ReadFull(reader, data) reads exactly 8MB into the buffer\n\t//   2. The function returns with data[:n]\n\t//   3. defer reader.Close() executes, closing the HTTP response body\n\t//   4. Closing the response body closes the underlying TCP connection\n\t//   5. The server receives TCP FIN/RST and stops sending\n\t//   note: some data is already in flight when we close so we will see > 8mb over the wire\n\t//   the full image will not download given we terminate the reader early here\n\tdefer reader.Close()\n\n\t// Note: this is not some arbitrary number picked out of the blue.\n\t// This is based on the specification of header data found here:\n\t// https://github.com/ggml-org/ggml/blob/master/docs/gguf.md#file-structure\n\tdata := make([]byte, maxBytes)\n\tn, err := io.ReadFull(reader, data)\n\tif err != nil && err != io.ErrUnexpectedEOF {\n\t\t// ErrUnexpectedEOF is okay - it means the file is smaller than maxBytes\n\t\treturn nil, fmt.Errorf(\"failed to read layer data: %w\", err)\n\t}\n\n\treturn data[:n], nil\n}\n"
  },
  {
    "path": "syft/source/ocimodelsource/registry_client_test.go",
    "content": "package ocimodelsource\n\nimport (\n\t\"testing\"\n\n\tv1 \"github.com/google/go-containerregistry/pkg/v1\"\n\t\"github.com/google/go-containerregistry/pkg/v1/types\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestIsModelArtifact(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmanifest *v1.Manifest\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"valid model artifact\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tConfig: v1.Descriptor{\n\t\t\t\t\tMediaType: modelConfigMediaTypePrefix + \"v1+json\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"container image\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tConfig: v1.Descriptor{\n\t\t\t\t\tMediaType: types.DockerConfigJSON,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"empty media type\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tConfig: v1.Descriptor{\n\t\t\t\t\tMediaType: \"\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresult := isModelArtifact(test.manifest)\n\t\t\tassert.Equal(t, test.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestExtractGGUFLayers(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tmanifest *v1.Manifest\n\t\texpected int\n\t}{\n\t\t{\n\t\t\tname: \"single GGUF layer\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tLayers: []v1.Descriptor{\n\t\t\t\t\t{MediaType: types.MediaType(ggufLayerMediaType), Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"abc\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 1,\n\t\t},\n\t\t{\n\t\t\tname: \"multiple GGUF layers\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tLayers: []v1.Descriptor{\n\t\t\t\t\t{MediaType: types.MediaType(ggufLayerMediaType), Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"abc\"}},\n\t\t\t\t\t{MediaType: types.MediaType(ggufLayerMediaType), Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"def\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 2,\n\t\t},\n\t\t{\n\t\t\tname: \"mixed layers\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tLayers: []v1.Descriptor{\n\t\t\t\t\t{MediaType: types.MediaType(ggufLayerMediaType), Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"abc\"}},\n\t\t\t\t\t{MediaType: types.DockerLayer, Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"def\"}},\n\t\t\t\t\t{MediaType: types.MediaType(ggufLayerMediaType), Digest: v1.Hash{Algorithm: \"sha256\", Hex: \"ghi\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 2,\n\t\t},\n\t\t{\n\t\t\tname: \"no GGUF layers\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tLayers: []v1.Descriptor{\n\t\t\t\t\t{MediaType: types.DockerLayer},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t\t{\n\t\t\tname: \"empty layers\",\n\t\t\tmanifest: &v1.Manifest{\n\t\t\t\tLayers: []v1.Descriptor{},\n\t\t\t},\n\t\t\texpected: 0,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tresult := extractGGUFLayers(test.manifest)\n\t\t\tassert.Len(t, result, test.expected)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/provider.go",
    "content": "package source\n\nimport (\n\t\"context\"\n)\n\n// Provider is able to resolve a source request\ntype Provider interface {\n\tName() string\n\tProvide(ctx context.Context) (Source, error)\n}\n"
  },
  {
    "path": "syft/source/scope.go",
    "content": "package source\n\nimport \"strings\"\n\n// Scope indicates \"how\" or from \"which perspectives\" the source object should be cataloged from.\ntype Scope string\n\nconst (\n\t// UnknownScope is the default scope\n\tUnknownScope Scope = \"unknown-scope\"\n\t// SquashedScope indicates to only catalog content visible from the squashed filesystem representation (what can be seen only within the container at runtime)\n\tSquashedScope Scope = \"squashed\"\n\t// AllLayersScope indicates to catalog content on all layers, regardless if it is visible from the container at runtime.\n\tAllLayersScope Scope = \"all-layers\"\n\t// DeepSquashedScope indicates to catalog content on all layers, but only include content visible from the squashed filesystem representation.\n\tDeepSquashedScope Scope = \"deep-squashed\"\n)\n\n// AllScopes is a slice containing all possible scope options\nvar AllScopes = []Scope{\n\tSquashedScope,\n\tAllLayersScope,\n\tDeepSquashedScope,\n}\n\n// ParseScope returns a scope as indicated from the given string.\nfunc ParseScope(userStr string) Scope {\n\tswitch strings.ToLower(userStr) {\n\tcase SquashedScope.String():\n\t\treturn SquashedScope\n\tcase \"all\", \"alllayers\", AllLayersScope.String():\n\t\treturn AllLayersScope\n\tcase \"deepsquashed\", \"squasheddeep\", \"squashed-deep\", \"deep-squash\", \"deepsquash\", strings.ToLower(DeepSquashedScope.String()):\n\t\treturn DeepSquashedScope\n\t}\n\treturn UnknownScope\n}\n\nfunc (o Scope) String() string {\n\treturn string(o)\n}\n"
  },
  {
    "path": "syft/source/scope_test.go",
    "content": "package source\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestParseScope(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\twant Scope\n\t}{\n\t\t// go cases\n\t\t{\n\t\t\tname: \"squashed\",\n\t\t\twant: SquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"all-layers\",\n\t\t\twant: AllLayersScope,\n\t\t},\n\n\t\t{\n\t\t\tname: \"deep-squashed\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t\t// fall back to unknown\n\t\t{\n\t\t\tname: \"make-believe\",\n\t\t\twant: UnknownScope,\n\t\t},\n\t\t{\n\t\t\tname: \"\",\n\t\t\twant: UnknownScope,\n\t\t},\n\t\t{\n\t\t\tname: \" \",\n\t\t\twant: UnknownScope,\n\t\t},\n\t\t// to support the original value\n\n\t\t{\n\t\t\tname: \"Squashed\",\n\t\t\twant: SquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"AllLayers\",\n\t\t\twant: AllLayersScope,\n\t\t},\n\t\t// case insensitive\n\t\t{\n\t\t\tname: \"alLlaYerS\",\n\t\t\twant: AllLayersScope,\n\t\t},\n\t\t// aliases\n\t\t{\n\t\t\tname: \"all\",\n\t\t\twant: AllLayersScope,\n\t\t},\n\t\t{\n\t\t\tname: \"deep-squash\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"deepsquashed\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"squasheddeep\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"squashed-deep\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t\t{\n\t\t\tname: \"deepsquash\",\n\t\t\twant: DeepSquashedScope,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tassert.Equal(t, tt.want, ParseScope(tt.name))\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/snap_metadata.go",
    "content": "package source\n\nimport \"github.com/anchore/syft/syft/file\"\n\ntype SnapMetadata struct {\n\t// Summary is a brief description of the snap package\n\tSummary string `yaml:\"summary\" json:\"summary,omitempty\"`\n\n\t// Base is the base snap this package builds upon\n\tBase string `yaml:\"base\" json:\"base,omitempty\"`\n\n\t// Grade is the development stage (stable, candidate, beta, edge)\n\tGrade string `yaml:\"grade\" json:\"grade,omitempty\"`\n\n\t// Confinement is the security isolation level (strict, classic, devmode)\n\tConfinement string `yaml:\"confinement\" json:\"confinement,omitempty\"`\n\n\t// Architectures are the supported CPU architectures\n\tArchitectures []string `yaml:\"architectures\" json:\"architectures,omitempty\"`\n\n\t// Digests are hashes of the snap squashfs files\n\tDigests []file.Digest `yaml:\"digests\" json:\"digests,omitempty\"`\n}\n"
  },
  {
    "path": "syft/source/snapsource/manifest.go",
    "content": "package snapsource\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/goccy/go-yaml\"\n\n\t\"github.com/anchore/syft/internal\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype snapManifest struct {\n\tName          string   `yaml:\"name\"`\n\tVersion       string   `yaml:\"version\"`\n\tSummary       string   `yaml:\"summary\"`\n\tBase          string   `yaml:\"base\"`\n\tGrade         string   `yaml:\"grade\"`\n\tConfinement   string   `yaml:\"confinement\"`\n\tArchitectures []string `yaml:\"architectures\"`\n}\n\nconst manifestLocation = \"/meta/snap.yaml\"\n\nfunc parseManifest(resolver file.Resolver) (*snapManifest, error) {\n\tlocations, err := resolver.FilesByPath(manifestLocation)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to find snap manifest file: %w\", err)\n\t}\n\n\tif len(locations) == 0 {\n\t\treturn nil, fmt.Errorf(\"no snap manifest file found\")\n\t}\n\n\tif len(locations) > 1 {\n\t\treturn nil, fmt.Errorf(\"multiple snap manifest files found\")\n\t}\n\n\tmanifestFile := locations[0]\n\n\treader, err := resolver.FileContentsByLocation(manifestFile)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to read snap manifest file: %w\", err)\n\t}\n\tdefer internal.CloseAndLogError(reader, manifestFile.RealPath)\n\n\tvar manifest snapManifest\n\tif err := yaml.NewDecoder(reader).Decode(&manifest); err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to decode snap manifest file: %w\", err)\n\t}\n\n\tif manifest.Name == \"\" || manifest.Version == \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid snap manifest file: missing name or version\")\n\t}\n\n\treturn &manifest, nil\n}\n"
  },
  {
    "path": "syft/source/snapsource/snap.go",
    "content": "package snapsource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/spf13/afero\"\n\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/syft/internal/bus\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype snapFile struct {\n\tPath     string\n\tDigests  []file.Digest\n\tMimeType string\n\tCleanup  func() error\n}\n\ntype remoteSnap struct {\n\tsnapIdentity\n\tURL string\n}\n\nconst NotSpecifiedRevision int = 0\n\ntype snapIdentity struct {\n\tName         string\n\tChannel      string\n\tArchitecture string\n\tRevision     int\n}\n\nfunc (s snapIdentity) String() string {\n\tparts := []string{s.Name}\n\t// revision will supersede channel\n\tif s.Revision != NotSpecifiedRevision {\n\t\tparts = append(parts, fmt.Sprintf(\":%d\", s.Revision))\n\t} else {\n\t\tif s.Channel != \"\" {\n\t\t\tparts = append(parts, fmt.Sprintf(\"@%s\", s.Channel))\n\t\t}\n\n\t\tif s.Architecture != \"\" {\n\t\t\tparts = append(parts, fmt.Sprintf(\" (%s)\", s.Architecture))\n\t\t}\n\t}\n\n\treturn strings.Join(parts, \"\")\n}\n\nfunc getRemoteSnapFile(ctx context.Context, fs afero.Fs, getter intFile.Getter, cfg Config) (*snapFile, error) {\n\tif cfg.Request == \"\" {\n\t\treturn nil, fmt.Errorf(\"invalid request: %q\", cfg.Request)\n\t}\n\n\tvar architecture string\n\tif cfg.Platform != nil {\n\t\tarchitecture = cfg.Platform.Architecture\n\t}\n\n\tinfo, err := resolveRemoteSnap(cfg.Request, architecture)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn newSnapFileFromRemote(ctx, fs, cfg, getter, info)\n}\n\nfunc newSnapFileFromRemote(ctx context.Context, fs afero.Fs, cfg Config, getter intFile.Getter, info *remoteSnap) (*snapFile, error) {\n\tt, err := afero.TempDir(fs, \"\", \"syft-snap-\")\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create temp directory: %w\", err)\n\t}\n\n\tsnapFilePath := path.Join(t, path.Base(info.URL))\n\terr = downloadSnap(getter, info, snapFilePath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to download snap file: %w\", err)\n\t}\n\n\tcloser := func() error {\n\t\treturn fs.RemoveAll(t)\n\t}\n\n\tmimeType, digests, err := getSnapFileInfo(ctx, fs, snapFilePath, cfg.DigestAlgorithms)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &snapFile{\n\t\tPath:     snapFilePath,\n\t\tDigests:  digests,\n\t\tMimeType: mimeType,\n\t\tCleanup:  closer,\n\t}, nil\n}\n\nfunc newSnapFromFile(ctx context.Context, fs afero.Fs, cfg Config) (*snapFile, error) {\n\tvar architecture string\n\tif cfg.Platform != nil {\n\t\tarchitecture = cfg.Platform.Architecture\n\t}\n\n\tif architecture != \"\" {\n\t\treturn nil, fmt.Errorf(\"architecture cannot be specified for local snap files: %q\", cfg.Request)\n\t}\n\n\tabsPath, err := filepath.Abs(cfg.Request)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to get absolute path of snap: %w\", err)\n\t}\n\n\tmimeType, digests, err := getSnapFileInfo(ctx, fs, absPath, cfg.DigestAlgorithms)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &snapFile{\n\t\tPath:     absPath,\n\t\tDigests:  digests,\n\t\tMimeType: mimeType,\n\t\t// note: we have no closer since this is the user's file (never delete it)\n\t}, nil\n}\n\nfunc getSnapFileInfo(ctx context.Context, fs afero.Fs, path string, hashes []crypto.Hash) (string, []file.Digest, error) {\n\tfileMeta, err := fs.Stat(path)\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"unable to stat path=%q: %w\", path, err)\n\t}\n\n\tif fileMeta.IsDir() {\n\t\treturn \"\", nil, fmt.Errorf(\"given path is a directory, not a snap file: %q\", path)\n\t}\n\n\tfh, err := fs.Open(path)\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"unable to open file=%q: %w\", path, err)\n\t}\n\tdefer fh.Close()\n\n\tmimeType := stereoFile.MIMEType(fh)\n\tif !isSquashFSFile(mimeType, path) {\n\t\treturn \"\", nil, fmt.Errorf(\"not a valid squashfs/snap file: %q (mime-type=%q)\", path, mimeType)\n\t}\n\n\tvar digests []file.Digest\n\tif len(hashes) > 0 {\n\t\tif _, err := fh.Seek(0, 0); err != nil {\n\t\t\treturn \"\", nil, fmt.Errorf(\"unable to reset file position: %w\", err)\n\t\t}\n\n\t\tdigests, err = intFile.NewDigestsFromFile(ctx, fh, hashes)\n\t\tif err != nil {\n\t\t\treturn \"\", nil, fmt.Errorf(\"unable to calculate digests for file=%q: %w\", path, err)\n\t\t}\n\t}\n\n\treturn mimeType, digests, nil\n}\n\n// resolveRemoteSnap parses a snap request and returns the appropriate path or URL\n// The request can be:\n// - A snap name (e.g., \"etcd\")\n// - A snap name with channel (e.g., \"etcd@beta\" or \"etcd@2.3/stable\")\n// - A snap name with revision (e.g. etcd:249@stable)\nfunc resolveRemoteSnap(request, architecture string) (*remoteSnap, error) {\n\tif architecture == \"\" {\n\t\tarchitecture = defaultArchitecture\n\t}\n\n\tsnapName, revision, channel, err := parseSnapRequest(request)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tid := snapIdentity{\n\t\tName:         snapName,\n\t\tChannel:      channel,\n\t\tArchitecture: architecture,\n\t\tRevision:     revision,\n\t}\n\n\tclient := newSnapcraftClient()\n\n\tdownloadURL, err := client.GetSnapDownloadURL(id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tlog.WithFields(\"url\", downloadURL, \"name\", snapName, \"channel\", channel, \"architecture\", architecture).Debugf(\"snap resolved\")\n\n\treturn &remoteSnap{\n\t\tsnapIdentity: id,\n\t\tURL:          downloadURL,\n\t}, nil\n}\n\n// parseSnapRequest parses a snap request into name and revision/channel\n// Examples:\n// - \"etcd\" -> name=\"etcd\", channel=\"stable\" (default)\n// - \"etcd@beta\" -> name=\"etcd\", channel=\"beta\"\n// - \"etcd@2.3/stable\" -> name=\"etcd\", channel=\"2.3/stable\"\n// - \"etcd:249@2.3/stable\" -> name=\"etcd\" revision=249 (channel not working because revision has been assigned)\nfunc parseSnapRequest(request string) (name string, revision int, channel string, err error) {\n\tparts := strings.SplitN(request, \"@\", 2)\n\tname = parts[0]\n\n\tdivisions := strings.Split(parts[0], \":\")\n\t// handle revision first\n\tif len(divisions) == 2 {\n\t\tname = divisions[0]\n\t\trevision, err = strconv.Atoi(divisions[1])\n\t\tif err != nil {\n\t\t\treturn \"\", NotSpecifiedRevision, \"\", err\n\t\t}\n\t\treturn name, revision, \"\", err\n\t}\n\tif len(parts) == 2 {\n\t\tchannel = parts[1]\n\t}\n\n\tif channel == \"\" {\n\t\tchannel = defaultChannel\n\t}\n\treturn name, NotSpecifiedRevision, channel, err\n}\n\nfunc downloadSnap(getter intFile.Getter, info *remoteSnap, dest string) error {\n\tlog.WithFields(\"url\", info.URL, \"destination\", dest).Debug(\"downloading snap file\")\n\n\tprog := bus.StartPullSourceTask(monitor.GenericTask{\n\t\tTitle: monitor.Title{\n\t\t\tDefault:      \"Download snap\",\n\t\t\tWhileRunning: \"Downloading snap\",\n\t\t\tOnSuccess:    \"Downloaded snap\",\n\t\t},\n\t\tHideOnSuccess:      false,\n\t\tHideStageOnSuccess: true,\n\t\tID:                 \"\",\n\t\tParentID:           \"\",\n\t\tContext:            info.String(),\n\t}, -1, \"\")\n\n\tif err := getter.GetFile(dest, info.URL, prog.Manual); err != nil {\n\t\tprog.SetError(err)\n\t\treturn fmt.Errorf(\"failed to download snap file at %q: %w\", info.URL, err)\n\t}\n\n\tprog.SetCompleted()\n\treturn nil\n}\n\n// fileExists checks if a file exists and is not a directory\nfunc fileExists(fs afero.Fs, path string) bool {\n\tinfo, err := fs.Stat(path)\n\tif os.IsNotExist(err) {\n\t\treturn false\n\t}\n\treturn err == nil && !info.IsDir()\n}\n"
  },
  {
    "path": "syft/source/snapsource/snap_source.go",
    "content": "package snapsource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/OneOfOne/xxhash\"\n\tdiskFile \"github.com/diskfs/go-diskfs/backend/file\"\n\t\"github.com/diskfs/go-diskfs/filesystem\"\n\t\"github.com/diskfs/go-diskfs/filesystem/squashfs\"\n\t\"github.com/hashicorp/go-cleanhttp\"\n\t\"github.com/opencontainers/go-digest\"\n\t\"github.com/spf13/afero\"\n\n\t\"github.com/anchore/clio\"\n\t\"github.com/anchore/go-homedir\"\n\tstereoFile \"github.com/anchore/stereoscope/pkg/file\"\n\t\"github.com/anchore/stereoscope/pkg/filetree\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/bus\"\n\tintFile \"github.com/anchore/syft/internal/file\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/event/monitor\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/internal\"\n)\n\nvar _ source.Source = (*snapSource)(nil)\n\ntype Config struct {\n\tID clio.Identification\n\n\tRequest          string\n\tPlatform         *image.Platform\n\tExclude          source.ExcludeConfig\n\tDigestAlgorithms []crypto.Hash\n\tAlias            source.Alias\n\n\tfs afero.Fs\n}\n\ntype snapSource struct {\n\tid               artifact.ID\n\tconfig           Config\n\tresolver         file.Resolver\n\tmutex            *sync.Mutex\n\tmanifest         snapManifest\n\tdigests          []file.Digest\n\tfs               filesystem.FileSystem\n\tsquashfsPath     string\n\tsquashFileCloser func() error\n\tcloser           func() error\n}\n\nfunc NewFromLocal(cfg Config) (source.Source, error) {\n\tf, err := getLocalSnapFile(&cfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newFromPath(cfg, f)\n}\n\nfunc getLocalSnapFile(cfg *Config) (*snapFile, error) {\n\texpandedPath, err := homedir.Expand(cfg.Request)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to expand path %q: %w\", cfg.Request, err)\n\t}\n\tcfg.Request = filepath.Clean(expandedPath)\n\n\tif cfg.fs == nil {\n\t\tcfg.fs = afero.NewOsFs()\n\t}\n\n\tif !fileExists(cfg.fs, cfg.Request) {\n\t\treturn nil, fmt.Errorf(\"snap file %q does not exist\", cfg.Request)\n\t}\n\n\tlog.WithFields(\"path\", cfg.Request).Debug(\"snap is a local file\")\n\n\treturn newSnapFromFile(context.Background(), cfg.fs, *cfg)\n}\n\nfunc NewFromRemote(cfg Config) (source.Source, error) {\n\texpandedPath, err := homedir.Expand(cfg.Request)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to expand path %q: %w\", cfg.Request, err)\n\t}\n\tcfg.Request = filepath.Clean(expandedPath)\n\n\tif cfg.fs == nil {\n\t\tcfg.fs = afero.NewOsFs()\n\t}\n\n\tclient := intFile.NewGetter(cfg.ID, cleanhttp.DefaultClient())\n\tf, err := getRemoteSnapFile(context.Background(), cfg.fs, client, cfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn newFromPath(cfg, f)\n}\n\nfunc newFromPath(cfg Config, f *snapFile) (source.Source, error) {\n\ts := &snapSource{\n\t\tid:           deriveID(cfg.Request, cfg.Alias.Name, cfg.Alias.Version, f.Digests),\n\t\tconfig:       cfg,\n\t\tmutex:        &sync.Mutex{},\n\t\tdigests:      f.Digests,\n\t\tsquashfsPath: f.Path,\n\t\tcloser:       f.Cleanup,\n\t}\n\n\treturn s, s.extractManifest()\n}\n\nfunc (s *snapSource) extractManifest() error {\n\tr, err := s.FileResolver(source.SquashedScope)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to create snap file resolver: %w\", err)\n\t}\n\n\tmanifest, err := parseManifest(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"unable to parse snap manifest file: %w\", err)\n\t}\n\n\tif manifest != nil {\n\t\ts.manifest = *manifest\n\t}\n\treturn nil\n}\n\nfunc (s snapSource) ID() artifact.ID {\n\treturn s.id\n}\n\nfunc (s snapSource) NameVersion() (string, string) {\n\tname := s.manifest.Name\n\tversion := s.manifest.Version\n\tif !s.config.Alias.IsEmpty() {\n\t\ta := s.config.Alias\n\t\tif a.Name != \"\" {\n\t\t\tname = a.Name\n\t\t}\n\n\t\tif a.Version != \"\" {\n\t\t\tversion = a.Version\n\t\t}\n\t}\n\treturn name, version\n}\n\nfunc (s snapSource) Describe() source.Description {\n\tname, version := s.NameVersion()\n\treturn source.Description{\n\t\tID:      string(s.id),\n\t\tName:    name,\n\t\tVersion: version,\n\t\tMetadata: source.SnapMetadata{\n\t\t\tSummary:       s.manifest.Summary,\n\t\t\tBase:          s.manifest.Base,\n\t\t\tGrade:         s.manifest.Grade,\n\t\t\tConfinement:   s.manifest.Confinement,\n\t\t\tArchitectures: s.manifest.Architectures,\n\t\t\tDigests:       s.digests,\n\t\t},\n\t}\n}\n\nfunc (s *snapSource) Close() error {\n\tif s.squashFileCloser != nil {\n\t\tif err := s.squashFileCloser(); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to close snap resolver: %w\", err)\n\t\t}\n\t\ts.squashFileCloser = nil\n\t}\n\ts.resolver = nil\n\tif s.fs != nil {\n\t\tif err := s.fs.Close(); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to close snap squashfs: %w\", err)\n\t\t}\n\t}\n\tif s.closer != nil {\n\t\tif err := s.closer(); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to close snap source: %w\", err)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (s *snapSource) FileResolver(_ source.Scope) (file.Resolver, error) {\n\ts.mutex.Lock()\n\tdefer s.mutex.Unlock()\n\n\tif s.resolver != nil {\n\t\treturn s.resolver, nil\n\t}\n\n\tlog.Debugf(\"parsing squashfs file: %s\", s.squashfsPath)\n\n\tf, err := os.Open(s.squashfsPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to open squashfs file: %w\", err)\n\t}\n\n\ts.squashFileCloser = func() error {\n\t\tif err := f.Close(); err != nil {\n\t\t\treturn fmt.Errorf(\"unable to close squashfs file: %w\", err)\n\t\t}\n\t\treturn nil\n\t}\n\n\tfileMeta, err := f.Stat()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to stat squashfs file: %w\", err)\n\t}\n\n\tsize := fileMeta.Size()\n\n\tfileCatalog := image.NewFileCatalog()\n\n\tprog := bus.StartIndexingFiles(filepath.Base(s.squashfsPath))\n\n\tb := diskFile.New(f, true)\n\tfs, err := squashfs.Read(b, fileMeta.Size(), 0, 0)\n\tif err != nil {\n\t\terr := fmt.Errorf(\"unable to open squashfs file: %w\", err)\n\t\tprog.SetError(err)\n\t\treturn nil, err\n\t}\n\n\ttree := filetree.New()\n\tif err := intFile.WalkDiskDir(fs, \"/\", squashfsVisitor(tree, fileCatalog, &size, prog)); err != nil {\n\t\terr := fmt.Errorf(\"failed to walk squashfs file=%q: %w\", s.squashfsPath, err)\n\t\tprog.SetError(err)\n\t\treturn nil, err\n\t}\n\n\tprog.SetCompleted()\n\n\ts.resolver = &fileresolver.FiletreeResolver{\n\t\tChroot:        fileresolver.ChrootContext{},\n\t\tTree:          tree,\n\t\tIndex:         fileCatalog.Index,\n\t\tSearchContext: filetree.NewSearchContext(tree, fileCatalog.Index),\n\t\tOpener: func(ref stereoFile.Reference) (io.ReadCloser, error) {\n\t\t\treturn fileCatalog.Open(ref)\n\t\t},\n\t}\n\n\ts.fs = fs\n\n\treturn s.resolver, nil\n}\n\ntype linker interface {\n\tReadlink() (string, error)\n}\n\nfunc squashfsVisitor(ft filetree.Writer, fileCatalog *image.FileCatalog, size *int64, prog *monitor.TaskProgress) intFile.WalkDiskDirFunc {\n\tbuilder := filetree.NewBuilder(ft, fileCatalog.Index)\n\n\treturn func(fsys filesystem.FileSystem, path string, d os.FileInfo, walkErr error) error {\n\t\tif walkErr != nil {\n\t\t\tlog.WithFields(\"error\", walkErr, \"path\", path).Trace(\"unable to walk squash file path\")\n\t\t\treturn walkErr\n\t\t}\n\n\t\tprog.AtomicStage.Set(path)\n\n\t\tvar f filesystem.File\n\t\tvar mimeType string\n\t\tvar err error\n\n\t\tif !d.IsDir() {\n\t\t\tf, err = fsys.OpenFile(path, os.O_RDONLY)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(\"error\", err, \"path\", path).Trace(\"unable to open squash file path\")\n\t\t\t} else {\n\t\t\t\tdefer f.Close()\n\t\t\t\tmimeType = stereoFile.MIMEType(f)\n\t\t\t}\n\t\t}\n\n\t\tvar ty stereoFile.Type\n\t\tvar linkPath string\n\t\tswitch {\n\t\tcase d.IsDir():\n\t\t\t// in some implementations, the mode does not indicate a directory, so we check the FileInfo type explicitly\n\t\t\tty = stereoFile.TypeDirectory\n\t\tdefault:\n\t\t\tty = stereoFile.TypeFromMode(d.Mode())\n\t\t\tif ty == stereoFile.TypeSymLink && f != nil {\n\t\t\t\tif l, ok := f.(linker); ok {\n\t\t\t\t\tlinkPath, _ = l.Readlink()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmetadata := stereoFile.Metadata{\n\t\t\tFileInfo:        d,\n\t\t\tPath:            path,\n\t\t\tLinkDestination: linkPath,\n\t\t\tType:            ty,\n\t\t\tMIMEType:        mimeType,\n\t\t}\n\n\t\tfileReference, err := builder.Add(metadata)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif fileReference == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tif size != nil {\n\t\t\t*(size) += metadata.Size()\n\t\t}\n\t\tfileCatalog.AssociateOpener(*fileReference, func() (io.ReadCloser, error) {\n\t\t\treturn fsys.OpenFile(path, os.O_RDONLY)\n\t\t})\n\n\t\tprog.Increment()\n\t\treturn nil\n\t}\n}\n\nfunc isSquashFSFile(mimeType, path string) bool {\n\tif mimeType == \"application/vnd.squashfs\" || mimeType == \"application/x-squashfs\" {\n\t\treturn true\n\t}\n\n\text := filepath.Ext(path)\n\treturn ext == \".snap\" || ext == \".squashfs\"\n}\n\nfunc deriveID(path, name, version string, digests []file.Digest) artifact.ID {\n\tvar xxhDigest string\n\tfor _, d := range digests {\n\t\tif strings.ToLower(strings.ReplaceAll(d.Algorithm, \"-\", \"\")) == \"xxh64\" {\n\t\t\txxhDigest = d.Value\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif xxhDigest == \"\" {\n\t\txxhDigest = digestOfFileContents(path)\n\t}\n\n\tinfo := fmt.Sprintf(\"%s:%s@%s\", xxhDigest, name, version)\n\treturn internal.ArtifactIDFromDigest(digest.SHA256.FromString(info).String())\n}\n\n// return the xxhash64 of the file contents, or the xxhash64 of the path if the file cannot be read\nfunc digestOfFileContents(path string) string {\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn digestOfReader(strings.NewReader(path))\n\t}\n\tdefer f.Close()\n\treturn digestOfReader(f)\n}\n\nfunc digestOfReader(r io.Reader) string {\n\thasher := xxhash.New64()\n\t_, _ = io.Copy(hasher, r)\n\treturn fmt.Sprintf(\"%x\", hasher.Sum(nil))\n}\n"
  },
  {
    "path": "syft/source/snapsource/snap_source_provider.go",
    "content": "package snapsource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\n\t\"github.com/anchore/syft/syft/source\"\n)\n\ntype snapSourceProvider struct {\n\tlocal            bool\n\tpath             string\n\texclude          source.ExcludeConfig\n\tdigestAlgorithms []crypto.Hash\n\talias            source.Alias\n}\n\n// NewLocalSourceProvider creates a new provider for snap files from a local path.\nfunc NewLocalSourceProvider(path string, exclude source.ExcludeConfig, digestAlgorithms []crypto.Hash, alias source.Alias) source.Provider {\n\treturn &snapSourceProvider{\n\t\tlocal:            true,\n\t\tpath:             path,\n\t\texclude:          exclude,\n\t\tdigestAlgorithms: digestAlgorithms,\n\t\talias:            alias,\n\t}\n}\n\n// NewRemoteSourceProvider creates a new provider for snap files from a remote location.\nfunc NewRemoteSourceProvider(path string, exclude source.ExcludeConfig, digestAlgorithms []crypto.Hash, alias source.Alias) source.Provider {\n\treturn &snapSourceProvider{\n\t\tpath:             path,\n\t\texclude:          exclude,\n\t\tdigestAlgorithms: digestAlgorithms,\n\t\talias:            alias,\n\t}\n}\n\nfunc (p snapSourceProvider) Name() string {\n\treturn \"snap\"\n}\n\nfunc (p snapSourceProvider) Provide(_ context.Context) (source.Source, error) {\n\tcfg := Config{\n\t\tRequest:          p.path,\n\t\tExclude:          p.exclude,\n\t\tDigestAlgorithms: p.digestAlgorithms,\n\t\tAlias:            p.alias,\n\t}\n\tif p.local {\n\t\treturn NewFromLocal(cfg)\n\t}\n\treturn NewFromRemote(cfg)\n}\n"
  },
  {
    "path": "syft/source/snapsource/snap_source_test.go",
    "content": "package snapsource\n\nimport (\n\t\"crypto\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/spf13/afero\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/go-homedir\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n)\n\nfunc TestNewFromLocal(t *testing.T) {\n\ttests := []struct {\n\t\tname        string\n\t\tcfg         Config\n\t\tsetup       func(fs afero.Fs)\n\t\twantRequest string\n\t\twantErr     assert.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname: \"local file exists\",\n\t\t\tcfg: Config{\n\t\t\t\tRequest:          \"/test/local.snap\",\n\t\t\t\tDigestAlgorithms: []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\tsetup: func(fs afero.Fs) {\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, \"/test/local.snap\"))\n\t\t\t},\n\t\t\twantRequest: \"/test/local.snap\",\n\t\t},\n\t\t{\n\t\t\tname: \"resolve home dir exists\",\n\t\t\tcfg: Config{\n\t\t\t\tRequest:          \"~/test/local.snap\",\n\t\t\t\tDigestAlgorithms: []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\twantErr: assert.Error,\n\t\t\twantRequest: func() string {\n\t\t\t\thomeDir, err := homedir.Expand(\"~/test/local.snap\")\n\t\t\t\trequire.NoError(t, err, \"failed to expand home directory\")\n\t\t\t\trequire.NotContains(t, homeDir, \"~\")\n\t\t\t\treturn homeDir\n\t\t\t}(),\n\t\t},\n\t\t{\n\t\t\tname: \"local file with architecture specified\",\n\t\t\tcfg: Config{\n\t\t\t\tRequest: \"/test/local.snap\",\n\t\t\t\tPlatform: &image.Platform{\n\t\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup: func(fs afero.Fs) {\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, \"/test/local.snap\"))\n\t\t\t},\n\t\t\twantErr: func(t assert.TestingT, err error, msgAndArgs ...interface{}) bool {\n\t\t\t\treturn assert.Error(t, err, msgAndArgs...) && assert.Contains(t, err.Error(), \"architecture cannot be specified for local snap files\", msgAndArgs...)\n\t\t\t},\n\t\t\twantRequest: \"/test/local.snap\",\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.wantErr == nil {\n\t\t\t\ttt.wantErr = assert.NoError\n\t\t\t}\n\t\t\ttt.cfg.fs = afero.NewMemMapFs() // Use an in-memory filesystem for testing\n\t\t\tif tt.setup != nil {\n\t\t\t\ttt.setup(tt.cfg.fs)\n\t\t\t}\n\t\t\tgot, err := getLocalSnapFile(&tt.cfg)\n\t\t\ttt.wantErr(t, err, fmt.Sprintf(\"NewFromLocal(%v)\", tt.cfg))\n\t\t\tassert.Equal(t, tt.wantRequest, tt.cfg.Request, \"expected request path to match\")\n\t\t\tif err != nil {\n\t\t\t\trequire.Nil(t, got, \"expected nil source on error\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NotNil(t, got, \"expected non-nil source on success\")\n\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "syft/source/snapsource/snap_test.go",
    "content": "package snapsource\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/spf13/afero\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/mock\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/wagoodman/go-progress\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/file\"\n)\n\nfunc TestSnapIdentity_String(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tidentity snapIdentity\n\t\texpected string\n\t}{\n\t\t{\n\t\t\tname: \"name only\",\n\t\t\tidentity: snapIdentity{\n\t\t\t\tName: \"etcd\",\n\t\t\t},\n\t\t\texpected: \"etcd\",\n\t\t},\n\t\t{\n\t\t\tname: \"name with channel\",\n\t\t\tidentity: snapIdentity{\n\t\t\t\tName:    \"etcd\",\n\t\t\t\tChannel: \"stable\",\n\t\t\t},\n\t\t\texpected: \"etcd@stable\",\n\t\t},\n\t\t{\n\t\t\tname: \"name with architecture\",\n\t\t\tidentity: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\texpected: \"etcd (amd64)\",\n\t\t},\n\t\t{\n\t\t\tname: \"name with channel and architecture\",\n\t\t\tidentity: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"beta\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t},\n\t\t\texpected: \"etcd@beta (arm64)\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty channel with architecture\",\n\t\t\tidentity: snapIdentity{\n\t\t\t\tName:         \"mysql\",\n\t\t\t\tChannel:      \"\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\texpected: \"mysql (amd64)\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tresult := tt.identity.String()\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestFileExists(t *testing.T) {\n\tfs := afero.NewMemMapFs()\n\n\ttests := []struct {\n\t\tname     string\n\t\tsetup    func() string\n\t\texpected bool\n\t}{\n\t\t{\n\t\t\tname: \"file exists\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/file.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t\t{\n\t\t\tname: \"file does not exist\",\n\t\t\tsetup: func() string {\n\t\t\t\treturn \"/nonexistent/file.snap\"\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"path is directory\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/dir\"\n\t\t\t\trequire.NoError(t, fs.MkdirAll(path, 0755))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpected: false,\n\t\t},\n\t\t{\n\t\t\tname: \"file exists in subdirectory\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/deep/nested/path/file.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpected: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpath := tt.setup()\n\t\t\tresult := fileExists(fs, path)\n\t\t\tassert.Equal(t, tt.expected, result)\n\t\t})\n\t}\n}\n\nfunc TestNewSnapFromFile(t *testing.T) {\n\tctx := context.Background()\n\tfs := afero.NewMemMapFs()\n\n\ttests := []struct {\n\t\tname        string\n\t\tcfg         Config\n\t\tsetup       func() string\n\t\texpectError bool\n\t\terrorMsg    string\n\t}{\n\t\t{\n\t\t\tname: \"valid local snap file\",\n\t\t\tcfg: Config{\n\t\t\t\tDigestAlgorithms: []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/valid.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpectError: false,\n\t\t},\n\t\t{\n\t\t\tname: \"architecture specified for local file\",\n\t\t\tcfg: Config{\n\t\t\t\tPlatform: &image.Platform{\n\t\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/valid.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"architecture cannot be specified for local snap files\",\n\t\t},\n\t\t{\n\t\t\tname: \"file does not exist\",\n\t\t\tcfg:  Config{},\n\t\t\tsetup: func() string {\n\t\t\t\treturn \"/nonexistent/file.snap\"\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"unable to stat path\",\n\t\t},\n\t\t{\n\t\t\tname: \"path is directory\",\n\t\t\tcfg:  Config{},\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/directory\"\n\t\t\t\trequire.NoError(t, fs.MkdirAll(path, 0755))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"given path is a directory\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpath := tt.setup()\n\t\t\ttt.cfg.Request = path\n\n\t\t\tresult, err := newSnapFromFile(ctx, fs, tt.cfg)\n\n\t\t\tif tt.expectError {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tif tt.errorMsg != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorMsg)\n\t\t\t\t}\n\t\t\t\tassert.Nil(t, result)\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\tassert.NotNil(t, result)\n\t\t\t\tassert.Equal(t, path, result.Path)\n\t\t\t\tassert.NotEmpty(t, result.MimeType)\n\t\t\t\tassert.NotEmpty(t, result.Digests)\n\t\t\t\tassert.Nil(t, result.Cleanup) // Local files don't have cleanup\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestNewSnapFileFromRemote(t *testing.T) {\n\tctx := context.Background()\n\n\ttests := []struct {\n\t\tname        string\n\t\tcfg         Config\n\t\tinfo        *remoteSnap\n\t\tsetupMock   func(*mockFileGetter, afero.Fs)\n\t\texpectError bool\n\t\terrorMsg    string\n\t\tvalidate    func(t *testing.T, result *snapFile, fs afero.Fs)\n\t}{\n\t\t{\n\t\t\tname: \"successful remote snap download\",\n\t\t\tcfg: Config{\n\t\t\t\tDigestAlgorithms: []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\tinfo: &remoteSnap{\n\t\t\t\tsnapIdentity: snapIdentity{\n\t\t\t\t\tName:         \"etcd\",\n\t\t\t\t\tChannel:      \"stable\",\n\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t},\n\t\t\t\tURL: \"https://api.snapcraft.io/download/etcd_123.snap\",\n\t\t\t},\n\t\t\tsetupMock: func(mockGetter *mockFileGetter, fs afero.Fs) {\n\t\t\t\tmockGetter.On(\"GetFile\", mock.MatchedBy(func(dst string) bool {\n\t\t\t\t\t// expect destination to end with etcd_123.snap\n\t\t\t\t\treturn filepath.Base(dst) == \"etcd_123.snap\"\n\t\t\t\t}), \"https://api.snapcraft.io/download/etcd_123.snap\", mock.Anything).Run(func(args mock.Arguments) {\n\t\t\t\t\t// simulate successful download by creating the file\n\t\t\t\t\tdst := args.String(0)\n\t\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, dst))\n\t\t\t\t}).Return(nil)\n\t\t\t},\n\t\t\texpectError: false,\n\t\t\tvalidate: func(t *testing.T, result *snapFile, fs afero.Fs) {\n\t\t\t\tassert.NotNil(t, result)\n\t\t\t\tassert.Contains(t, result.Path, \"etcd_123.snap\")\n\t\t\t\tassert.NotEmpty(t, result.MimeType)\n\t\t\t\tassert.NotEmpty(t, result.Digests)\n\t\t\t\tassert.NotNil(t, result.Cleanup)\n\n\t\t\t\t_, err := fs.Stat(result.Path)\n\t\t\t\tassert.NoError(t, err)\n\n\t\t\t\terr = result.Cleanup()\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t_, err = fs.Stat(result.Path)\n\t\t\t\tassert.True(t, os.IsNotExist(err))\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"successful download with no digest algorithms\",\n\t\t\tcfg: Config{\n\t\t\t\tDigestAlgorithms: []crypto.Hash{}, // no digests requested\n\t\t\t},\n\t\t\tinfo: &remoteSnap{\n\t\t\t\tsnapIdentity: snapIdentity{\n\t\t\t\t\tName:         \"mysql\",\n\t\t\t\t\tChannel:      \"8.0/stable\",\n\t\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\t},\n\t\t\t\tURL: \"https://api.snapcraft.io/download/mysql_456.snap\",\n\t\t\t},\n\t\t\tsetupMock: func(mockGetter *mockFileGetter, fs afero.Fs) {\n\t\t\t\tmockGetter.On(\"GetFile\", mock.MatchedBy(func(dst string) bool {\n\t\t\t\t\treturn filepath.Base(dst) == \"mysql_456.snap\"\n\t\t\t\t}), \"https://api.snapcraft.io/download/mysql_456.snap\", mock.Anything).Run(func(args mock.Arguments) {\n\t\t\t\t\tdst := args.String(0)\n\t\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, dst))\n\t\t\t\t}).Return(nil)\n\t\t\t},\n\t\t\texpectError: false,\n\t\t\tvalidate: func(t *testing.T, result *snapFile, fs afero.Fs) {\n\t\t\t\tassert.NotNil(t, result)\n\t\t\t\tassert.Contains(t, result.Path, \"mysql_456.snap\")\n\t\t\t\tassert.NotEmpty(t, result.MimeType)\n\t\t\t\tassert.Empty(t, result.Digests) // no digests requested\n\t\t\t\tassert.NotNil(t, result.Cleanup)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"download fails\",\n\t\t\tcfg: Config{\n\t\t\t\tDigestAlgorithms: []crypto.Hash{crypto.SHA256},\n\t\t\t},\n\t\t\tinfo: &remoteSnap{\n\t\t\t\tsnapIdentity: snapIdentity{\n\t\t\t\t\tName:         \"failing-snap\",\n\t\t\t\t\tChannel:      \"stable\",\n\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t},\n\t\t\t\tURL: \"https://api.snapcraft.io/download/failing_snap.snap\",\n\t\t\t},\n\t\t\tsetupMock: func(mockGetter *mockFileGetter, fs afero.Fs) {\n\t\t\t\tmockGetter.On(\"GetFile\", mock.AnythingOfType(\"string\"), \"https://api.snapcraft.io/download/failing_snap.snap\", mock.Anything).Return(fmt.Errorf(\"network timeout\"))\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"failed to download snap file\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfs := afero.NewOsFs()\n\t\t\tmockGetter := &mockFileGetter{}\n\n\t\t\tif tt.setupMock != nil {\n\t\t\t\ttt.setupMock(mockGetter, fs)\n\t\t\t}\n\n\t\t\tresult, err := newSnapFileFromRemote(ctx, fs, tt.cfg, mockGetter, tt.info)\n\n\t\t\tif tt.expectError {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\tif tt.errorMsg != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorMsg)\n\t\t\t\t}\n\t\t\t\tassert.Nil(t, result)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tif tt.validate != nil {\n\t\t\t\t\ttt.validate(t, result, fs)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmockGetter.AssertExpectations(t)\n\t\t})\n\t}\n}\n\nfunc TestGetSnapFileInfo(t *testing.T) {\n\tctx := context.Background()\n\tfs := afero.NewMemMapFs()\n\n\ttests := []struct {\n\t\tname        string\n\t\tsetup       func() string\n\t\thashes      []crypto.Hash\n\t\texpectError bool\n\t\terrorMsg    string\n\t}{\n\t\t{\n\t\t\tname: \"valid squashfs file with hashes\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/valid.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\thashes:      []crypto.Hash{crypto.SHA256, crypto.MD5},\n\t\t\texpectError: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid squashfs file without hashes\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/valid.snap\"\n\t\t\t\trequire.NoError(t, createMockSquashfsFile(fs, path))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\thashes:      []crypto.Hash{},\n\t\t\texpectError: false,\n\t\t},\n\t\t{\n\t\t\tname: \"file does not exist\",\n\t\t\tsetup: func() string {\n\t\t\t\treturn \"/nonexistent/file.snap\"\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"unable to stat path\",\n\t\t},\n\t\t{\n\t\t\tname: \"path is directory\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/directory\"\n\t\t\t\trequire.NoError(t, fs.MkdirAll(path, 0755))\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"given path is a directory\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid file format\",\n\t\t\tsetup: func() string {\n\t\t\t\tpath := \"/test/invalid.txt\"\n\t\t\t\trequire.NoError(t, fs.MkdirAll(filepath.Dir(path), 0755))\n\t\t\t\tfile, err := fs.Create(path)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tdefer file.Close()\n\t\t\t\t_, err = file.Write([]byte(\"not a squashfs file\"))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\treturn path\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"not a valid squashfs/snap file\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tpath := tt.setup()\n\n\t\t\tmimeType, digests, err := getSnapFileInfo(ctx, fs, path, tt.hashes)\n\n\t\t\tif tt.expectError {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tif tt.errorMsg != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorMsg)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t\tassert.NotEmpty(t, mimeType)\n\t\t\t\tif len(tt.hashes) > 0 {\n\t\t\t\t\tassert.Len(t, digests, len(tt.hashes))\n\t\t\t\t} else {\n\t\t\t\t\tassert.Empty(t, digests)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDownloadSnap(t *testing.T) {\n\tmockGetter := &mockFileGetter{}\n\n\ttests := []struct {\n\t\tname        string\n\t\tinfo        *remoteSnap\n\t\tdest        string\n\t\tsetupMock   func()\n\t\texpectError bool\n\t\terrorMsg    string\n\t}{\n\t\t{\n\t\t\tname: \"successful download\",\n\t\t\tinfo: &remoteSnap{\n\t\t\t\tsnapIdentity: snapIdentity{\n\t\t\t\t\tName:         \"etcd\",\n\t\t\t\t\tChannel:      \"stable\",\n\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t},\n\t\t\t\tURL: \"https://example.com/etcd.snap\",\n\t\t\t},\n\t\t\tdest: \"/tmp/etcd.snap\",\n\t\t\tsetupMock: func() {\n\t\t\t\tmockGetter.On(\"GetFile\", \"/tmp/etcd.snap\", \"https://example.com/etcd.snap\", mock.AnythingOfType(\"[]*progress.Manual\")).Return(nil)\n\t\t\t},\n\t\t\texpectError: false,\n\t\t},\n\t\t{\n\t\t\tname: \"download fails\",\n\t\t\tinfo: &remoteSnap{\n\t\t\t\tsnapIdentity: snapIdentity{\n\t\t\t\t\tName:         \"etcd\",\n\t\t\t\t\tChannel:      \"stable\",\n\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t},\n\t\t\t\tURL: \"https://example.com/etcd.snap\",\n\t\t\t},\n\t\t\tdest: \"/tmp/etcd.snap\",\n\t\t\tsetupMock: func() {\n\t\t\t\tmockGetter.On(\"GetFile\", \"/tmp/etcd.snap\", \"https://example.com/etcd.snap\", mock.AnythingOfType(\"[]*progress.Manual\")).Return(fmt.Errorf(\"network error\"))\n\t\t\t},\n\t\t\texpectError: true,\n\t\t\terrorMsg:    \"failed to download snap file\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// reset mock for each test\n\t\t\tmockGetter.ExpectedCalls = nil\n\t\t\tif tt.setupMock != nil {\n\t\t\t\ttt.setupMock()\n\t\t\t}\n\n\t\t\terr := downloadSnap(mockGetter, tt.info, tt.dest)\n\n\t\t\tif tt.expectError {\n\t\t\t\tassert.Error(t, err)\n\t\t\t\tif tt.errorMsg != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorMsg)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tassert.NoError(t, err)\n\t\t\t}\n\n\t\t\tmockGetter.AssertExpectations(t)\n\t\t})\n\t}\n}\n\nfunc TestParseSnapRequest(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\trequest          string\n\t\texpectedName     string\n\t\texpectedRevision int\n\t\texpectedChannel  string\n\t\texpectedError    require.ErrorAssertionFunc\n\t}{\n\t\t{\n\t\t\tname:            \"snap name only - uses default channel\",\n\t\t\trequest:         \"etcd\",\n\t\t\texpectedName:    \"etcd\",\n\t\t\texpectedChannel: \"stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap with beta channel\",\n\t\t\trequest:         \"etcd@beta\",\n\t\t\texpectedName:    \"etcd\",\n\t\t\texpectedChannel: \"beta\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap with edge channel\",\n\t\t\trequest:         \"etcd@edge\",\n\t\t\texpectedName:    \"etcd\",\n\t\t\texpectedChannel: \"edge\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap with version track\",\n\t\t\trequest:         \"etcd@2.3/stable\",\n\t\t\texpectedName:    \"etcd\",\n\t\t\texpectedChannel: \"2.3/stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap with complex channel path\",\n\t\t\trequest:         \"mysql@8.0/candidate\",\n\t\t\texpectedName:    \"mysql\",\n\t\t\texpectedChannel: \"8.0/candidate\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap with multiple @ symbols - only first is delimiter\",\n\t\t\trequest:         \"app@beta@test\",\n\t\t\texpectedName:    \"app\",\n\t\t\texpectedChannel: \"beta@test\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:             \"snap with revision\",\n\t\t\trequest:          \"etcd:249\",\n\t\t\texpectedName:     \"etcd\",\n\t\t\texpectedRevision: 249,\n\t\t\texpectedError:    require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:             \"snap with revision so the channel doesn't work\",\n\t\t\trequest:          \"etcd:249@2.3/beta\",\n\t\t\texpectedName:     \"etcd\",\n\t\t\texpectedRevision: 249,\n\t\t\texpectedError:    require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"empty snap name with channel\",\n\t\t\trequest:         \"@stable\",\n\t\t\texpectedName:    \"\",\n\t\t\texpectedChannel: \"stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap name with empty channel - uses default\",\n\t\t\trequest:         \"etcd@\",\n\t\t\texpectedName:    \"etcd\",\n\t\t\texpectedChannel: \"stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"hyphenated snap name\",\n\t\t\trequest:         \"hello-world@stable\",\n\t\t\texpectedName:    \"hello-world\",\n\t\t\texpectedChannel: \"stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:            \"snap name with numbers\",\n\t\t\trequest:         \"app123\",\n\t\t\texpectedName:    \"app123\",\n\t\t\texpectedChannel: \"stable\",\n\t\t\texpectedError:   require.NoError,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tname, revision, channel, err := parseSnapRequest(tt.request)\n\t\t\tassert.Equal(t, tt.expectedName, name)\n\t\t\tif tt.expectedRevision != NotSpecifiedRevision {\n\t\t\t\tassert.Equal(t, tt.expectedRevision, revision)\n\t\t\t} else {\n\t\t\t\tassert.Equal(t, tt.expectedChannel, channel)\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n\ntype mockFileGetter struct {\n\tmock.Mock\n\tfile.Getter\n}\n\nfunc (m *mockFileGetter) GetFile(dst, src string, monitor ...*progress.Manual) error {\n\targs := m.Called(dst, src, monitor)\n\treturn args.Error(0)\n}\n\nfunc createMockSquashfsFile(fs afero.Fs, path string) error {\n\tdir := filepath.Dir(path)\n\tif err := fs.MkdirAll(dir, 0755); err != nil {\n\t\treturn err\n\t}\n\n\tfile, err := fs.Create(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\n\t// write squashfs magic header\n\t_, err = file.Write([]byte(\"hsqs\"))\n\treturn err\n}\n"
  },
  {
    "path": "syft/source/snapsource/snapcraft_api.go",
    "content": "package snapsource\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/anchore/syft/internal/log\"\n)\n\nconst (\n\tdefaultChannel      = \"stable\"\n\tdefaultArchitecture = \"amd64\"\n\tdefaultSeries       = \"16\"\n)\n\n// snapcraftClient handles interactions with the Snapcraft API\ntype snapcraftClient struct {\n\tInfoAPIURL string\n\tFindAPIURL string\n\tHTTPClient *http.Client\n}\n\n// newSnapcraftClient creates a new Snapcraft API client with default settings\nfunc newSnapcraftClient() *snapcraftClient {\n\treturn &snapcraftClient{\n\t\tInfoAPIURL: \"https://api.snapcraft.io/v2/snaps/info/\",\n\t\tFindAPIURL: \"https://api.snapcraft.io/v2/snaps/find\",\n\t\tHTTPClient: &http.Client{},\n\t}\n}\n\n// snapcraftInfo represents the response from the snapcraft info API\ntype snapcraftInfo struct {\n\tChannelMap []snapChannelMapEntry `json:\"channel-map\"`\n}\n\ntype snapChannelMapEntry struct {\n\tChannel  snapChannel  `json:\"channel\"`\n\tDownload snapDownload `json:\"download\"`\n}\ntype snapChannel struct {\n\tArchitecture string `json:\"architecture\"`\n\tName         string `json:\"name\"`\n}\n\ntype snapDownload struct {\n\tURL string `json:\"url\"`\n}\n\n// snapFindResponse represents the response from the snapcraft find API (search v2)\ntype snapFindResponse struct {\n\tResults []struct {\n\t\tName   string   `json:\"name\"`\n\t\tSnapID string   `json:\"snap-id\"`\n\t\tSnap   struct{} `json:\"snap\"`\n\t} `json:\"results\"`\n}\n\ntype SnapRisk string\n\nconst (\n\tRiskStable    SnapRisk = \"stable\"\n\tRiskCandidate SnapRisk = \"candidate\"\n\tRiskBeta      SnapRisk = \"beta\"\n\tRiskEdge      SnapRisk = \"edge\"\n\tRiskUnknown   SnapRisk = \"unknown\"\n)\n\nfunc isValidSnapRisk(r SnapRisk) bool {\n\tswitch r {\n\tcase RiskStable, RiskCandidate, RiskBeta, RiskEdge:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc stringToSnapRisk(s string) SnapRisk {\n\tr := SnapRisk(s)\n\tif !isValidSnapRisk(r) {\n\t\treturn RiskUnknown\n\t}\n\treturn r\n}\n\nfunc getRevisionFromURL(cm snapChannelMapEntry) (rev int, err error) {\n\tre := regexp.MustCompile(`(\\d+)\\.snap$`)\n\tmatch := re.FindStringSubmatch(cm.Download.URL)\n\tif len(match) < 2 {\n\t\terr = fmt.Errorf(\"could not determine revision from %s\", cm.Download.URL)\n\t\treturn\n\t}\n\trev, err = strconv.Atoi(match[1])\n\treturn\n}\n\n// isEligibleChannel determines whether a candidate channel satisfies a requested\n// channel. Both channels are parsed into {track, risk} pairs.\n//\n// Matching rules:\n//   - If the request includes a track, both track and risk must match exactly.\n//   - If the request omits the track (e.g., \"stable\"), any candidate track is\n//     accepted as long as the risk matches.\n//\n// Examples:\n//\n//\tcandidate=\"3.2/stable\", request=\"stable\"       -> true\n//\tcandidate=\"3.2/stable\", request=\"3.2/stable\"   -> true\n//\tcandidate=\"3.2/stable\", request=\"3.2/beta\"     -> false\n//\tcandidate=\"3.2/beta\",   request=\"stable\"       -> false\n//\tcandidate=\"3.2/alpha\", request=\"alpha\"         -> false(alpha is an invalid risk level)\n//\tcandidate=\"3.2/stable/fix-for-bug123\", request=\"stable\"       -> true\n//\tcandidate=\"3.2/stable/fix-for-bug123\", request=\"3.2/stable\"   -> true\nfunc isEligibleChannel(candidate, request string) (bool, error) {\n\tcTrack, cRisk, cBranch := splitChannel(candidate)\n\trTrack, rRisk, rBranch := splitChannel(request)\n\tif rTrack == \"\" && rRisk == \"\" && rBranch == \"\" {\n\t\treturn false, fmt.Errorf(\"there is no such risk in the channel(only stable/candidate/beta/edge are valid)\")\n\t}\n\n\tif rTrack != \"\" {\n\t\treturn cTrack == rTrack && cRisk == rRisk && (cBranch == rBranch || rBranch == \"\"), nil\n\t}\n\n\treturn cRisk == rRisk && (cBranch == rBranch || rBranch == \"\"), nil\n}\n\nfunc splitChannel(ch string) (track string, risk string, branch string) {\n\tparts := strings.SplitN(ch, \"/\", 3)\n\tif stringToSnapRisk(parts[0]) != RiskUnknown {\n\t\tif len(parts) == 1 {\n\t\t\treturn \"\", parts[0], \"\" // no track\n\t\t} else if len(parts) == 2 {\n\t\t\treturn \"\", parts[0], parts[1]\n\t\t}\n\t} else if len(parts) >= 2 && stringToSnapRisk(parts[1]) != RiskUnknown {\n\t\tif len(parts) == 3 {\n\t\t\treturn parts[0], parts[1], parts[2]\n\t\t} else if len(parts) == 2 {\n\t\t\treturn parts[0], parts[1], \"\"\n\t\t}\n\t}\n\n\treturn \"\", \"\", \"\"\n}\n\nfunc matchSnapDownloadURL(cm snapChannelMapEntry, id snapIdentity) (string, error) {\n\t// revision will supersede channel\n\tif id.Revision != NotSpecifiedRevision {\n\t\trev, err2 := getRevisionFromURL(cm)\n\t\tif err2 == nil && rev == id.Revision {\n\t\t\treturn cm.Download.URL, nil\n\t\t}\n\t} else if cm.Channel.Architecture == id.Architecture {\n\t\tmatched, err2 := isEligibleChannel(cm.Channel.Name, id.Channel)\n\t\tif err2 != nil {\n\t\t\treturn \"\", err2\n\t\t}\n\t\tif matched {\n\t\t\treturn cm.Download.URL, nil\n\t\t}\n\t}\n\treturn \"\", nil\n}\n\n// GetSnapDownloadURL retrieves the download URL for a snap package\nfunc (c *snapcraftClient) GetSnapDownloadURL(id snapIdentity) (string, error) {\n\tapiURL := c.InfoAPIURL + id.Name\n\n\tif id.Revision == NotSpecifiedRevision {\n\t\tlog.WithFields(\"name\", id.Name, \"channel\", id.Channel, \"architecture\", id.Architecture).Trace(\"requesting snap info\")\n\t} else {\n\t\tlog.WithFields(\"name\", id.Name, \"revision\", id.Revision, \"architecture\", id.Architecture).Trace(\"requesting snap info\")\n\t}\n\n\treq, err := http.NewRequest(http.MethodGet, apiURL, nil)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to create HTTP request: %w\", err)\n\t}\n\n\tif id.Revision != NotSpecifiedRevision {\n\t\tq := req.URL.Query()\n\t\tq.Add(\"revision\", fmt.Sprintf(\"%d\", id.Revision))\n\t\treq.URL.RawQuery = q.Encode()\n\t}\n\treq.Header.Set(\"Snap-Device-Series\", defaultSeries)\n\n\tresp, err := c.HTTPClient.Do(req)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to send HTTP request: %w\", err)\n\t}\n\tdefer resp.Body.Close()\n\n\t// handle 404 case - check if snap exists via find API\n\tif resp.StatusCode == http.StatusNotFound {\n\t\tlog.WithFields(\"name\", id.Name).Debug(\"snap info not found, checking if snap exists via find API\")\n\n\t\texists, snapID, findErr := c.CheckSnapExists(id.Name)\n\t\tif findErr != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to check if snap exists: %w\", findErr)\n\t\t}\n\n\t\tif exists {\n\t\t\treturn \"\", fmt.Errorf(\"found snap '%s' (id=%s) but it is unavailable for download\", id.Name, snapID)\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"no snap found with name '%s'\", id.Name)\n\t}\n\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn \"\", fmt.Errorf(\"API request failed with status code %d\", resp.StatusCode)\n\t}\n\n\tvar info snapcraftInfo\n\tif err := json.NewDecoder(resp.Body).Decode(&info); err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to parse JSON response: %w\", err)\n\t}\n\n\tfor _, cm := range info.ChannelMap {\n\t\turl, err2 := matchSnapDownloadURL(cm, id)\n\t\tif url == \"\" && err2 == nil {\n\t\t\tcontinue\n\t\t}\n\t\treturn url, err2\n\t}\n\n\treturn \"\", fmt.Errorf(\"no matching snap found for %s\", id.String())\n}\n\n// CheckSnapExists uses the find API (search v2) to check if a snap exists\nfunc (c *snapcraftClient) CheckSnapExists(snapName string) (bool, string, error) {\n\treq, err := http.NewRequest(http.MethodGet, c.FindAPIURL, nil)\n\tif err != nil {\n\t\treturn false, \"\", fmt.Errorf(\"failed to create find request: %w\", err)\n\t}\n\n\tq := req.URL.Query()\n\tq.Add(\"name-startswith\", snapName)\n\treq.URL.RawQuery = q.Encode()\n\n\treq.Header.Set(\"Snap-Device-Series\", defaultSeries)\n\n\tresp, err := c.HTTPClient.Do(req)\n\tif err != nil {\n\t\treturn false, \"\", fmt.Errorf(\"failed to send find request: %w\", err)\n\t}\n\tdefer resp.Body.Close()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn false, \"\", fmt.Errorf(\"find API request failed with status code %d\", resp.StatusCode)\n\t}\n\n\tvar findResp snapFindResponse\n\tif err := json.NewDecoder(resp.Body).Decode(&findResp); err != nil {\n\t\treturn false, \"\", fmt.Errorf(\"failed to parse find JSON response: %w\", err)\n\t}\n\n\t// Look for exact name match\n\tfor _, result := range findResp.Results {\n\t\tif result.Name == snapName {\n\t\t\treturn true, result.SnapID, nil\n\t\t}\n\t}\n\n\treturn false, \"\", nil\n}\n"
  },
  {
    "path": "syft/source/snapsource/snapcraft_api_test.go",
    "content": "package snapsource\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSnapcraftClient_CheckSnapExists(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tsnapName       string\n\t\tmockResponse   snapFindResponse\n\t\tstatusCode     int\n\t\texpectedExists bool\n\t\texpectedSnapID string\n\t\texpectError    require.ErrorAssertionFunc\n\t\terrorContains  string\n\t}{\n\t\t{\n\t\t\tname:       \"snap exists\",\n\t\t\tsnapName:   \"jp-ledger\",\n\t\t\tstatusCode: http.StatusOK,\n\t\t\tmockResponse: snapFindResponse{\n\t\t\t\tResults: []struct {\n\t\t\t\t\tName   string   `json:\"name\"`\n\t\t\t\t\tSnapID string   `json:\"snap-id\"`\n\t\t\t\t\tSnap   struct{} `json:\"snap\"`\n\t\t\t\t}{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:   \"jp-ledger\",\n\t\t\t\t\t\tSnapID: \"jyDlMmifyQhSWGPM9fnKc1HSD7E6c47e\",\n\t\t\t\t\t\tSnap:   struct{}{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedExists: true,\n\t\t\texpectedSnapID: \"jyDlMmifyQhSWGPM9fnKc1HSD7E6c47e\",\n\t\t\texpectError:    require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:       \"snap does not exist\",\n\t\t\tsnapName:   \"nonexistent-snap\",\n\t\t\tstatusCode: http.StatusOK,\n\t\t\tmockResponse: snapFindResponse{\n\t\t\t\tResults: []struct {\n\t\t\t\t\tName   string   `json:\"name\"`\n\t\t\t\t\tSnapID string   `json:\"snap-id\"`\n\t\t\t\t\tSnap   struct{} `json:\"snap\"`\n\t\t\t\t}{},\n\t\t\t},\n\t\t\texpectedExists: false,\n\t\t\texpectedSnapID: \"\",\n\t\t\texpectError:    require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:       \"multiple results - exact match found\",\n\t\t\tsnapName:   \"test-snap\",\n\t\t\tstatusCode: http.StatusOK,\n\t\t\tmockResponse: snapFindResponse{\n\t\t\t\tResults: []struct {\n\t\t\t\t\tName   string   `json:\"name\"`\n\t\t\t\t\tSnapID string   `json:\"snap-id\"`\n\t\t\t\t\tSnap   struct{} `json:\"snap\"`\n\t\t\t\t}{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:   \"test-snap-extra\",\n\t\t\t\t\t\tSnapID: \"wrong-id\",\n\t\t\t\t\t\tSnap:   struct{}{},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:   \"test-snap\",\n\t\t\t\t\t\tSnapID: \"correct-id\",\n\t\t\t\t\t\tSnap:   struct{}{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedExists: true,\n\t\t\texpectedSnapID: \"correct-id\",\n\t\t\texpectError:    require.NoError,\n\t\t},\n\t\t{\n\t\t\tname:          \"find API returns 404\",\n\t\t\tsnapName:      \"test\",\n\t\t\tstatusCode:    http.StatusNotFound,\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"find API request failed with status code 404\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tfindServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\t\t\t\tassert.Equal(t, tt.snapName, r.URL.Query().Get(\"name-startswith\"))\n\n\t\t\t\tw.WriteHeader(tt.statusCode)\n\t\t\t\tif tt.statusCode == http.StatusOK {\n\t\t\t\t\tresponseBytes, err := json.Marshal(tt.mockResponse)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t}\n\t\t\t}))\n\t\t\tdefer findServer.Close()\n\n\t\t\tclient := &snapcraftClient{\n\t\t\t\tFindAPIURL: findServer.URL,\n\t\t\t\tHTTPClient: &http.Client{},\n\t\t\t}\n\n\t\t\texists, snapID, err := client.CheckSnapExists(tt.snapName)\n\t\t\ttt.expectError(t, err)\n\t\t\tif err != nil && tt.errorContains != \"\" {\n\t\t\t\tassert.Contains(t, err.Error(), tt.errorContains)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tassert.Equal(t, tt.expectedExists, exists)\n\t\t\tassert.Equal(t, tt.expectedSnapID, snapID)\n\t\t})\n\t}\n}\n\nfunc TestSnapcraftClient_GetSnapDownloadURL(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tsnapID         snapIdentity\n\t\tinfoResponse   snapcraftInfo\n\t\tinfoStatusCode int\n\t\tfindResponse   *snapFindResponse\n\t\tfindStatusCode int\n\t\texpectedURL    string\n\t\texpectError    require.ErrorAssertionFunc\n\t\terrorContains  string\n\t}{\n\t\t{\n\t\t\tname: \"successful download URL retrieval\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\texpectError: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"successful download URL retrieval (w/ track)\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"3.2/stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\texpectError: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"successful download URL retrieval (w/ track&branch)\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"3.2/stable/fix-for-bug123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\texpectError: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"branch unmatched\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable/fix-for-bug124\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"3.2/stable/fix-for-bug123\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"no matching snap found\",\n\t\t},\n\t\t{\n\t\t\tname: \"risk unmatched\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"latest/beta\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"no matching snap found\",\n\t\t},\n\t\t{\n\t\t\tname: \"illegal risk\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"foobar\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"latest/beta\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"there is no such risk\",\n\t\t},\n\t\t{\n\t\t\tname: \"region-locked snap - exists but unavailable\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"jp-ledger\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusNotFound,\n\t\t\tfindStatusCode: http.StatusOK,\n\t\t\tfindResponse: &snapFindResponse{\n\t\t\t\tResults: []struct {\n\t\t\t\t\tName   string   `json:\"name\"`\n\t\t\t\t\tSnapID string   `json:\"snap-id\"`\n\t\t\t\t\tSnap   struct{} `json:\"snap\"`\n\t\t\t\t}{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:   \"jp-ledger\",\n\t\t\t\t\t\tSnapID: \"jyDlMmifyQhSWGPM9fnKc1HSD7E6c47e\",\n\t\t\t\t\t\tSnap:   struct{}{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"found snap 'jp-ledger' (id=jyDlMmifyQhSWGPM9fnKc1HSD7E6c47e) but it is unavailable for download\",\n\t\t},\n\t\t{\n\t\t\tname: \"snap truly does not exist\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"nonexistent\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusNotFound,\n\t\t\tfindStatusCode: http.StatusOK,\n\t\t\tfindResponse: &snapFindResponse{\n\t\t\t\tResults: []struct {\n\t\t\t\t\tName   string   `json:\"name\"`\n\t\t\t\t\tSnapID string   `json:\"snap-id\"`\n\t\t\t\t\tSnap   struct{} `json:\"snap\"`\n\t\t\t\t}{},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"no snap found with name 'nonexistent'\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple architectures - find correct one\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"mysql\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"arm64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/mysql_amd64.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"arm64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/mysql_arm64.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/mysql_arm64.snap\",\n\t\t\texpectError: require.NoError,\n\t\t},\n\t\t{\n\t\t\tname: \"snap not found - no matching architecture\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"s390x\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/etcd_123.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectError:   require.Error,\n\t\t\terrorContains: \"no matching snap found\",\n\t\t},\n\t\t{\n\t\t\tname: \"API returns 500\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusInternalServerError,\n\t\t\texpectError:    require.Error,\n\t\t\terrorContains:  \"API request failed with status code 500\",\n\t\t},\n\t\t{\n\t\t\tname: \"find API fails when checking 404\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"test-snap\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusNotFound,\n\t\t\tfindStatusCode: http.StatusInternalServerError,\n\t\t\texpectError:    require.Error,\n\t\t\terrorContains:  \"failed to check if snap exists\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.expectError == nil {\n\t\t\t\ttt.expectError = require.NoError\n\t\t\t}\n\n\t\t\tinfoServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\n\t\t\t\texpectedPath := \"/\" + tt.snapID.Name\n\t\t\t\tassert.Equal(t, expectedPath, r.URL.Path)\n\n\t\t\t\tw.WriteHeader(tt.infoStatusCode)\n\n\t\t\t\tif tt.infoStatusCode == http.StatusOK {\n\t\t\t\t\tresponseBytes, err := json.Marshal(tt.infoResponse)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t}\n\t\t\t}))\n\t\t\tdefer infoServer.Close()\n\n\t\t\tvar findServer *httptest.Server\n\t\t\tif tt.findResponse != nil || tt.findStatusCode != 0 {\n\t\t\t\tfindServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\t\t\t\t\tassert.Equal(t, tt.snapID.Name, r.URL.Query().Get(\"name-startswith\"))\n\n\t\t\t\t\tstatusCode := tt.findStatusCode\n\t\t\t\t\tif statusCode == 0 {\n\t\t\t\t\t\tstatusCode = http.StatusOK\n\t\t\t\t\t}\n\t\t\t\t\tw.WriteHeader(statusCode)\n\n\t\t\t\t\tif tt.findResponse != nil && statusCode == http.StatusOK {\n\t\t\t\t\t\tresponseBytes, err := json.Marshal(tt.findResponse)\n\t\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t\tdefer findServer.Close()\n\t\t\t}\n\n\t\t\tclient := &snapcraftClient{\n\t\t\t\tInfoAPIURL: infoServer.URL + \"/\",\n\t\t\t\tHTTPClient: &http.Client{},\n\t\t\t}\n\t\t\tif findServer != nil {\n\t\t\t\tclient.FindAPIURL = findServer.URL\n\t\t\t}\n\n\t\t\turl, err := client.GetSnapDownloadURL(tt.snapID)\n\t\t\ttt.expectError(t, err)\n\t\t\tif err != nil {\n\t\t\t\tif tt.errorContains != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorContains)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.expectedURL, url)\n\t\t})\n\t}\n}\n\nfunc TestSnapcraftClient_GetSnapDownloadURL_WithVersion(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tsnapID         snapIdentity\n\t\tinfoResponse   snapcraftInfo\n\t\tinfoStatusCode int\n\t\tfindResponse   *snapFindResponse\n\t\tfindStatusCode int\n\t\texpectedURL    string\n\t\texpectError    require.ErrorAssertionFunc\n\t\terrorContains  string\n\t}{\n\t\t{\n\t\t\tname: \"successful download URL retrieval\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tRevision:     249,\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/TKebVGcPeDKoOqAmNmczU2oWLtsojKD5_249.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/TKebVGcPeDKoOqAmNmczU2oWLtsojKD5_249.snap\",\n\t\t\texpectError: require.NoError,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.expectError == nil {\n\t\t\t\ttt.expectError = require.NoError\n\t\t\t}\n\n\t\t\tinfoServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\n\t\t\t\texpectedPath := \"/\" + tt.snapID.Name\n\t\t\t\tassert.Equal(t, expectedPath, r.URL.Path)\n\n\t\t\t\tw.WriteHeader(tt.infoStatusCode)\n\n\t\t\t\tif tt.infoStatusCode == http.StatusOK {\n\t\t\t\t\tresponseBytes, err := json.Marshal(tt.infoResponse)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t}\n\t\t\t}))\n\t\t\tdefer infoServer.Close()\n\n\t\t\tvar findServer *httptest.Server\n\t\t\tif tt.findResponse != nil || tt.findStatusCode != 0 {\n\t\t\t\tfindServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\t\t\t\t\tassert.Equal(t, tt.snapID.Name, r.URL.Query().Get(\"name-startswith\"))\n\n\t\t\t\t\tstatusCode := tt.findStatusCode\n\t\t\t\t\tif statusCode == 0 {\n\t\t\t\t\t\tstatusCode = http.StatusOK\n\t\t\t\t\t}\n\t\t\t\t\tw.WriteHeader(statusCode)\n\n\t\t\t\t\tif tt.findResponse != nil && statusCode == http.StatusOK {\n\t\t\t\t\t\tresponseBytes, err := json.Marshal(tt.findResponse)\n\t\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t\tdefer findServer.Close()\n\t\t\t}\n\n\t\t\tclient := &snapcraftClient{\n\t\t\t\tInfoAPIURL: infoServer.URL + \"/\",\n\t\t\t\tHTTPClient: &http.Client{},\n\t\t\t}\n\t\t\tif findServer != nil {\n\t\t\t\tclient.FindAPIURL = findServer.URL\n\t\t\t}\n\n\t\t\turl, err := client.GetSnapDownloadURL(tt.snapID)\n\t\t\ttt.expectError(t, err)\n\t\t\tif err != nil {\n\t\t\t\tif tt.errorContains != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorContains)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.expectedURL, url)\n\t\t})\n\t}\n}\n\nfunc TestSnapcraftClient_GetSnapDownloadURL_DoesntExist(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\tsnapID         snapIdentity\n\t\tinfoResponse   snapcraftInfo\n\t\tinfoStatusCode int\n\t\tfindResponse   *snapFindResponse\n\t\tfindStatusCode int\n\t\texpectedURL    string\n\t\texpectError    require.ErrorAssertionFunc\n\t\terrorContains  string\n\t}{\n\t\t{\n\t\t\tname: \"non-existent snap with revision\",\n\t\t\tsnapID: snapIdentity{\n\t\t\t\tName:         \"etcd\",\n\t\t\t\tChannel:      \"stable\",\n\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\tRevision:     248,\n\t\t\t},\n\t\t\tinfoStatusCode: http.StatusOK,\n\t\t\tinfoResponse: snapcraftInfo{\n\t\t\t\tChannelMap: []snapChannelMapEntry{\n\t\t\t\t\t{\n\t\t\t\t\t\tChannel: snapChannel{\n\t\t\t\t\t\t\tArchitecture: \"amd64\",\n\t\t\t\t\t\t\tName:         \"stable\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDownload: snapDownload{\n\t\t\t\t\t\t\tURL: \"https://api.snapcraft.io/api/v1/snaps/download/TKebVGcPeDKoOqAmNmczU2oWLtsojKD5_249.snap\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpectedURL: \"https://api.snapcraft.io/api/v1/snaps/download/TKebVGcPeDKoOqAmNmczU2oWLtsojKD5_249.snap\",\n\t\t\texpectError: func(t require.TestingT, err error, msgAndArgs ...interface{}) {\n\t\t\t\trequire.EqualError(t, err, \"no matching snap found for etcd:248\")\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif tt.expectError == nil {\n\t\t\t\ttt.expectError = require.NoError\n\t\t\t}\n\n\t\t\tinfoServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\n\t\t\t\texpectedPath := \"/\" + tt.snapID.Name\n\t\t\t\tassert.Equal(t, expectedPath, r.URL.Path)\n\n\t\t\t\tw.WriteHeader(tt.infoStatusCode)\n\n\t\t\t\tif tt.infoStatusCode == http.StatusOK {\n\t\t\t\t\tresponseBytes, err := json.Marshal(tt.infoResponse)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t}\n\t\t\t}))\n\t\t\tdefer infoServer.Close()\n\n\t\t\tvar findServer *httptest.Server\n\t\t\tif tt.findResponse != nil || tt.findStatusCode != 0 {\n\t\t\t\tfindServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\t\tassert.Equal(t, defaultSeries, r.Header.Get(\"Snap-Device-Series\"))\n\t\t\t\t\tassert.Equal(t, tt.snapID.Name, r.URL.Query().Get(\"name-startswith\"))\n\n\t\t\t\t\tstatusCode := tt.findStatusCode\n\t\t\t\t\tif statusCode == 0 {\n\t\t\t\t\t\tstatusCode = http.StatusOK\n\t\t\t\t\t}\n\t\t\t\t\tw.WriteHeader(statusCode)\n\n\t\t\t\t\tif tt.findResponse != nil && statusCode == http.StatusOK {\n\t\t\t\t\t\tresponseBytes, err := json.Marshal(tt.findResponse)\n\t\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t\t\tw.Write(responseBytes)\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t\tdefer findServer.Close()\n\t\t\t}\n\n\t\t\tclient := &snapcraftClient{\n\t\t\t\tInfoAPIURL: infoServer.URL + \"/\",\n\t\t\t\tHTTPClient: &http.Client{},\n\t\t\t}\n\t\t\tif findServer != nil {\n\t\t\t\tclient.FindAPIURL = findServer.URL\n\t\t\t}\n\n\t\t\turl, err := client.GetSnapDownloadURL(tt.snapID)\n\t\t\ttt.expectError(t, err)\n\t\t\tif err != nil {\n\t\t\t\tif tt.errorContains != \"\" {\n\t\t\t\t\tassert.Contains(t, err.Error(), tt.errorContains)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tassert.Equal(t, tt.expectedURL, url)\n\t\t})\n\t}\n}\n\nfunc TestSnapcraftClient_GetSnapDownloadURL_InvalidJSON(t *testing.T) {\n\tinfoServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tw.WriteHeader(http.StatusOK)\n\t\tw.Write([]byte(\"invalid json\"))\n\t}))\n\tdefer infoServer.Close()\n\n\tclient := &snapcraftClient{\n\t\tInfoAPIURL: infoServer.URL + \"/\",\n\t\tHTTPClient: &http.Client{},\n\t}\n\n\tsnapID := snapIdentity{\n\t\tName:         \"etcd\",\n\t\tChannel:      \"stable\",\n\t\tArchitecture: \"amd64\",\n\t}\n\n\t_, err := client.GetSnapDownloadURL(snapID)\n\tassert.Error(t, err)\n\tassert.Contains(t, err.Error(), \"failed to parse JSON response\")\n}\n\nfunc TestNewSnapcraftClient(t *testing.T) {\n\tclient := newSnapcraftClient()\n\n\tassert.Equal(t, \"https://api.snapcraft.io/v2/snaps/info/\", client.InfoAPIURL)\n\tassert.Equal(t, \"https://api.snapcraft.io/v2/snaps/find\", client.FindAPIURL)\n\tassert.NotNil(t, client.HTTPClient)\n}\n"
  },
  {
    "path": "syft/source/source.go",
    "content": "/*\nPackage source provides an abstraction to allow a user to loosely define a data source to catalog and expose a common interface that\ncatalogers and use explore and analyze data from the data source. All valid (cataloggable) data sources are defined\nwithin this package.\n*/\npackage source\n\nimport (\n\t\"errors\"\n\t\"io\"\n\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n)\n\ntype Source interface {\n\tartifact.Identifiable\n\tFileResolver(Scope) (file.Resolver, error)\n\tDescribe() Description\n\tio.Closer\n}\n\ntype emptySource struct {\n\tdescription Description\n}\n\nfunc FromDescription(d Description) Source {\n\treturn &emptySource{\n\t\tdescription: d,\n\t}\n}\n\nfunc (e emptySource) ID() artifact.ID {\n\treturn artifact.ID(e.description.ID)\n}\n\nfunc (e emptySource) FileResolver(_ Scope) (file.Resolver, error) {\n\treturn nil, errors.New(\"no file resolver available for description-only source\")\n}\n\nfunc (e emptySource) Describe() Description {\n\treturn e.description\n}\n\nfunc (e emptySource) Close() error {\n\treturn nil // no-op\n}\n"
  },
  {
    "path": "syft/source/sourceproviders/source_provider_config.go",
    "content": "package sourceproviders\n\nimport (\n\t\"crypto\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\n// Config is the uber-configuration for all Syft source providers\ntype Config struct {\n\tPlatform         *image.Platform\n\tAlias            source.Alias\n\tRegistryOptions  *image.RegistryOptions\n\tExclude          source.ExcludeConfig\n\tDigestAlgorithms []crypto.Hash\n\tBasePath         string\n}\n\nfunc (c *Config) WithAlias(alias source.Alias) *Config {\n\tc.Alias = alias\n\treturn c\n}\n\nfunc (c *Config) WithRegistryOptions(registryOptions *image.RegistryOptions) *Config {\n\tc.RegistryOptions = registryOptions\n\treturn c\n}\n\nfunc (c *Config) WithPlatform(platform *image.Platform) *Config {\n\tc.Platform = platform\n\treturn c\n}\n\nfunc (c *Config) WithExcludeConfig(excludeConfig source.ExcludeConfig) *Config {\n\tc.Exclude = excludeConfig\n\treturn c\n}\n\nfunc (c *Config) WithDigestAlgorithms(algorithms ...crypto.Hash) *Config {\n\tc.DigestAlgorithms = algorithms\n\treturn c\n}\n\nfunc (c *Config) WithBasePath(basePath string) *Config {\n\tc.BasePath = basePath\n\treturn c\n}\n\nfunc DefaultConfig() *Config {\n\treturn &Config{\n\t\tDigestAlgorithms: []crypto.Hash{\n\t\t\tcrypto.SHA256,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "syft/source/sourceproviders/source_providers.go",
    "content": "package sourceproviders\n\nimport (\n\t\"github.com/anchore/go-collections\"\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/directorysource\"\n\t\"github.com/anchore/syft/syft/source/filesource\"\n\t\"github.com/anchore/syft/syft/source/ocimodelsource\"\n\t\"github.com/anchore/syft/syft/source/snapsource\"\n\t\"github.com/anchore/syft/syft/source/stereoscopesource\"\n)\n\nconst (\n\tFileTag = stereoscope.FileTag\n\tDirTag  = stereoscope.DirTag\n\tPullTag = stereoscope.PullTag\n\tSnapTag = \"snap\"\n)\n\n// All returns all the configured source providers known to syft\nfunc All(userInput string, cfg *Config) []collections.TaggedValue[source.Provider] {\n\tif cfg == nil {\n\t\tcfg = DefaultConfig()\n\t}\n\tstereoscopeProviders := stereoscopeSourceProviders(userInput, cfg)\n\n\treturn collections.TaggedValueSet[source.Provider]{}.\n\t\t// 1. try all specific, local sources first...\n\n\t\t// --from file, dir, oci-archive, etc.\n\t\tJoin(stereoscopeProviders.Select(FileTag, DirTag)...).\n\n\t\t// --from snap (local only)\n\t\tJoin(tagProvider(snapsource.NewLocalSourceProvider(userInput, cfg.Exclude, cfg.DigestAlgorithms, cfg.Alias), SnapTag)).\n\n\t\t// 2. try unspecific, local sources after other local sources last...\n\t\tJoin(tagProvider(filesource.NewSourceProvider(userInput, cfg.Exclude, cfg.DigestAlgorithms, cfg.Alias), FileTag)).\n\t\tJoin(tagProvider(directorysource.NewSourceProvider(userInput, cfg.Exclude, cfg.Alias, cfg.BasePath), DirTag)).\n\n\t\t// 3. try remote sources after everything else...\n\n\t\t// --from docker, registry, etc.\n\t\tJoin(stereoscopeProviders.Select(PullTag)...).\n\n\t\t// --from oci-model, registry (for select cases only)\n\t\t// OCI model artifacts with header-only fetching\n\t\t// note: we don't want to use the \"pull\" tag since it's not actually pulling the full image,\n\t\t// instead we want to match on registry since these models are stored in OCI registries.\n\t\t// This does mean that this must be placed after the pull provider, which is ideal since we don't want to\n\t\t// unnecessarily pull registry headers first if the more common case is the pull providers.\n\t\tJoin(tagProvider(ocimodelsource.NewSourceProvider(userInput, cfg.RegistryOptions, cfg.Alias), \"registry\")).\n\n\t\t// --from snap (remote only)\n\t\tJoin(tagProvider(snapsource.NewRemoteSourceProvider(userInput, cfg.Exclude, cfg.DigestAlgorithms, cfg.Alias), SnapTag))\n}\n\nfunc stereoscopeSourceProviders(userInput string, cfg *Config) collections.TaggedValueSet[source.Provider] {\n\tvar registry image.RegistryOptions\n\tif cfg.RegistryOptions != nil {\n\t\tregistry = *cfg.RegistryOptions\n\t}\n\tstereoscopeProviders := stereoscopesource.Providers(stereoscopesource.ProviderConfig{\n\t\tStereoscopeImageProviderConfig: stereoscope.ImageProviderConfig{\n\t\t\tUserInput: userInput,\n\t\t\tPlatform:  cfg.Platform,\n\t\t\tRegistry:  registry,\n\t\t},\n\t\tAlias:   cfg.Alias,\n\t\tExclude: cfg.Exclude,\n\t})\n\treturn stereoscopeProviders\n}\n\nfunc tagProvider(provider source.Provider, tags ...string) collections.TaggedValue[source.Provider] {\n\treturn collections.NewTaggedValue(provider, append([]string{provider.Name()}, tags...)...)\n}\n"
  },
  {
    "path": "syft/source/stereoscopesource/image_source.go",
    "content": "package stereoscopesource\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/bmatcuk/doublestar/v4\"\n\t\"github.com/distribution/reference\"\n\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/internal/log\"\n\t\"github.com/anchore/syft/syft/artifact\"\n\t\"github.com/anchore/syft/syft/file\"\n\t\"github.com/anchore/syft/syft/internal/fileresolver\"\n\t\"github.com/anchore/syft/syft/source\"\n\t\"github.com/anchore/syft/syft/source/internal\"\n)\n\nvar _ source.Source = (*stereoscopeImageSource)(nil)\n\ntype ImageConfig struct {\n\tReference       string\n\tPlatform        *image.Platform\n\tRegistryOptions *image.RegistryOptions\n\tExclude         source.ExcludeConfig\n\tAlias           source.Alias\n}\n\ntype stereoscopeImageSource struct {\n\tid       artifact.ID\n\tconfig   ImageConfig\n\timage    *image.Image\n\tmetadata source.ImageMetadata\n}\n\nfunc New(img *image.Image, cfg ImageConfig) source.Source {\n\tmetadata := imageMetadataFromStereoscopeImage(img, cfg.Reference)\n\treturn &stereoscopeImageSource{\n\t\tid:       internal.DeriveImageID(cfg.Alias, metadata),\n\t\tconfig:   cfg,\n\t\timage:    img,\n\t\tmetadata: metadata,\n\t}\n}\n\nfunc (s stereoscopeImageSource) ID() artifact.ID {\n\treturn s.id\n}\n\nfunc (s stereoscopeImageSource) Describe() source.Description {\n\ta := s.config.Alias\n\n\tname := a.Name\n\tsupplier := a.Supplier\n\tnameIfUnset := func(n string) {\n\t\tif name != \"\" {\n\t\t\treturn\n\t\t}\n\t\tname = n\n\t}\n\n\tversion := a.Version\n\tversionIfUnset := func(v string) {\n\t\tif version != \"\" && version != \"latest\" {\n\t\t\treturn\n\t\t}\n\t\tversion = v\n\t}\n\n\tref, err := reference.Parse(s.metadata.UserInput)\n\tif err != nil {\n\t\tlog.Debugf(\"unable to parse image ref: %s\", s.config.Reference)\n\t} else {\n\t\tif ref, ok := ref.(reference.Named); ok {\n\t\t\tnameIfUnset(ref.Name())\n\t\t}\n\n\t\tif ref, ok := ref.(reference.NamedTagged); ok {\n\t\t\tversionIfUnset(ref.Tag())\n\t\t}\n\n\t\tif ref, ok := ref.(reference.Digested); ok {\n\t\t\tversionIfUnset(ref.Digest().String())\n\t\t}\n\t}\n\n\tnameIfUnset(s.metadata.UserInput)\n\tversionIfUnset(s.metadata.ManifestDigest)\n\n\treturn source.Description{\n\t\tID:       string(s.id),\n\t\tName:     name,\n\t\tVersion:  version,\n\t\tSupplier: supplier,\n\t\tMetadata: s.metadata,\n\t}\n}\n\nfunc (s stereoscopeImageSource) FileResolver(scope source.Scope) (file.Resolver, error) {\n\tvar res file.Resolver\n\tvar err error\n\n\tswitch scope {\n\tcase source.SquashedScope:\n\t\tres, err = fileresolver.NewFromContainerImageSquash(s.image)\n\tcase source.AllLayersScope:\n\t\tres, err = fileresolver.NewFromContainerImageAllLayers(s.image)\n\tcase source.DeepSquashedScope:\n\t\tres, err = fileresolver.NewFromContainerImageDeepSquash(s.image)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"bad image scope provided: %+v\", scope)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// image tree contains all paths, so we filter out the excluded entries afterward\n\tif len(s.config.Exclude.Paths) > 0 {\n\t\tres = fileresolver.NewExcludingDecorator(res, getImageExclusionFunction(s.config.Exclude.Paths))\n\t}\n\n\treturn res, nil\n}\n\nfunc (s stereoscopeImageSource) Close() error {\n\tif s.image == nil {\n\t\treturn nil\n\t}\n\treturn s.image.Cleanup()\n}\n\nfunc imageMetadataFromStereoscopeImage(img *image.Image, reference string) source.ImageMetadata {\n\ttags := make([]string, len(img.Metadata.Tags))\n\tfor idx, tag := range img.Metadata.Tags {\n\t\ttags[idx] = tag.String()\n\t}\n\n\tlayers := make([]source.LayerMetadata, len(img.Layers))\n\tfor idx, l := range img.Layers {\n\t\tlayers[idx] = source.LayerMetadata{\n\t\t\tMediaType: string(l.Metadata.MediaType),\n\t\t\tDigest:    l.Metadata.Digest,\n\t\t\tSize:      l.Metadata.Size,\n\t\t}\n\t}\n\n\treturn source.ImageMetadata{\n\t\tID:             img.Metadata.ID,\n\t\tUserInput:      reference,\n\t\tManifestDigest: img.Metadata.ManifestDigest,\n\t\tSize:           img.Metadata.Size,\n\t\tMediaType:      string(img.Metadata.MediaType),\n\t\tTags:           tags,\n\t\tLayers:         layers,\n\t\tRawConfig:      img.Metadata.RawConfig,\n\t\tRawManifest:    img.Metadata.RawManifest,\n\t\tRepoDigests:    img.Metadata.RepoDigests,\n\t\tArchitecture:   img.Metadata.Architecture,\n\t\tVariant:        img.Metadata.Variant,\n\t\tOS:             img.Metadata.OS,\n\t\tLabels:         img.Metadata.Config.Config.Labels,\n\t}\n}\n\nfunc getImageExclusionFunction(exclusions []string) func(string) bool {\n\tif len(exclusions) == 0 {\n\t\treturn nil\n\t}\n\t// add subpath exclusions\n\tfor _, exclusion := range exclusions {\n\t\texclusions = append(exclusions, exclusion+\"/**\")\n\t}\n\treturn func(path string) bool {\n\t\tfor _, exclusion := range exclusions {\n\t\t\tmatches, err := doublestar.Match(exclusion, path)\n\t\t\tif err != nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif matches {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "syft/source/stereoscopesource/image_source_provider.go",
    "content": "package stereoscopesource\n\nimport (\n\t\"context\"\n\n\t\"github.com/anchore/go-collections\"\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/stereoscope/pkg/image\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nconst ImageTag = \"image\"\n\ntype ProviderConfig struct {\n\tStereoscopeImageProviderConfig stereoscope.ImageProviderConfig\n\tExclude                        source.ExcludeConfig\n\tAlias                          source.Alias\n}\n\ntype stereoscopeImageSourceProvider struct {\n\tstereoscopeProvider image.Provider\n\tcfg                 ProviderConfig\n}\n\nvar _ source.Provider = (*stereoscopeImageSourceProvider)(nil)\n\nfunc (l stereoscopeImageSourceProvider) Name() string {\n\treturn l.stereoscopeProvider.Name()\n}\n\nfunc (l stereoscopeImageSourceProvider) Provide(ctx context.Context) (source.Source, error) {\n\timg, err := l.stereoscopeProvider.Provide(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcfg := ImageConfig{\n\t\tReference:       l.cfg.StereoscopeImageProviderConfig.UserInput,\n\t\tPlatform:        l.cfg.StereoscopeImageProviderConfig.Platform,\n\t\tRegistryOptions: &l.cfg.StereoscopeImageProviderConfig.Registry,\n\t\tExclude:         l.cfg.Exclude,\n\t\tAlias:           l.cfg.Alias,\n\t}\n\treturn New(img, cfg), nil\n}\n\nfunc Providers(cfg ProviderConfig) []collections.TaggedValue[source.Provider] {\n\tstereoscopeProviders := collections.TaggedValueSet[source.Provider]{}\n\tproviders := stereoscope.ImageProviders(cfg.StereoscopeImageProviderConfig)\n\tfor _, provider := range providers {\n\t\tvar sourceProvider source.Provider = stereoscopeImageSourceProvider{\n\t\t\tstereoscopeProvider: provider.Value,\n\t\t\tcfg:                 cfg,\n\t\t}\n\t\tstereoscopeProviders = append(stereoscopeProviders,\n\t\t\tcollections.NewTaggedValue(sourceProvider, append([]string{provider.Value.Name(), ImageTag}, provider.Tags...)...))\n\t}\n\treturn stereoscopeProviders\n}\n"
  },
  {
    "path": "syft/source/stereoscopesource/image_source_test.go",
    "content": "package stereoscopesource\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope\"\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/internal/testutil\"\n\t\"github.com/anchore/syft/syft/source\"\n)\n\nfunc Test_StereoscopeImage_Exclusions(t *testing.T) {\n\ttestutil.Chdir(t, \"..\") // run with source/testdata\n\n\ttestCases := []struct {\n\t\tdesc       string\n\t\tinput      string\n\t\tglob       string\n\t\texpected   int\n\t\texclusions []string\n\t}{\n\t\t// NOTE: in the Dockerfile, /target is moved to /, which makes /really a top-level dir\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"a single path excluded\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   2,\n\t\t\texclusions: []string{\"/really/**\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"a directly referenced directory is excluded\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   2,\n\t\t\texclusions: []string{\"/really\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"a partial directory is not excluded\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   3,\n\t\t\texclusions: []string{\"/reall\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"exclude files deeper\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   2,\n\t\t\texclusions: []string{\"**/nested/**\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"files excluded with extension\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   2,\n\t\t\texclusions: []string{\"**/*1.txt\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"keep files with different extensions\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   3,\n\t\t\texclusions: []string{\"**/target/**/*.jar\"},\n\t\t},\n\t\t{\n\t\t\tinput:      \"image-simple\",\n\t\t\tdesc:       \"file directly excluded\",\n\t\t\tglob:       \"**\",\n\t\t\texpected:   2,\n\t\t\texclusions: []string{\"**/somefile-1.txt\"}, // file-1 renamed to somefile-1 in Dockerfile\n\t\t},\n\t}\n\n\tfor _, test := range testCases {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\timageName := strings.SplitN(imagetest.PrepareFixtureImage(t, \"docker-archive\", test.input), \":\", 2)[1]\n\n\t\t\timg, err := stereoscope.GetImage(context.TODO(), imageName)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.NotNil(t, img)\n\n\t\t\tsrc := New(\n\t\t\t\timg,\n\t\t\t\tImageConfig{\n\t\t\t\t\tReference: imageName,\n\t\t\t\t\tExclude: source.ExcludeConfig{\n\t\t\t\t\t\tPaths: test.exclusions,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tt.Cleanup(func() {\n\t\t\t\trequire.NoError(t, src.Close())\n\t\t\t})\n\n\t\t\tres, err := src.FileResolver(source.SquashedScope)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tcontents, err := res.FilesByGlob(test.glob)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tassert.Len(t, contents, test.expected)\n\t\t})\n\t}\n}\n\nfunc Test_Describe(t *testing.T) {\n\ttests := []struct {\n\t\tname     string\n\t\tsource   stereoscopeImageSource\n\t\texpected source.Description\n\t}{\n\t\t{\n\t\t\tname: \"name from user input\",\n\t\t\tsource: stereoscopeImageSource{\n\t\t\t\tid: \"some-id\",\n\t\t\t\tmetadata: source.ImageMetadata{\n\t\t\t\t\tUserInput: \"user input\",\n\t\t\t\t},\n\t\t\t},\n\t\t\texpected: source.Description{\n\t\t\t\tID:   \"some-id\",\n\t\t\t\tName: \"user input\",\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := test.source.Describe()\n\t\tgot.Metadata = nil // might want to test this, but do not to determine if the user input is userd\n\t\trequire.Equal(t, test.expected, got)\n\t}\n}\n"
  },
  {
    "path": "syft/source/testdata/actual-path/empty",
    "content": ""
  },
  {
    "path": "syft/source/testdata/file-index-filter/.1/something",
    "content": "content"
  },
  {
    "path": "syft/source/testdata/file-index-filter/.2",
    "content": "something"
  },
  {
    "path": "syft/source/testdata/file-index-filter/.vimrc",
    "content": "Another .vimrc file"
  },
  {
    "path": "syft/source/testdata/file-index-filter/empty",
    "content": ""
  },
  {
    "path": "syft/source/testdata/generate-tar-fixture-from-source-dir.sh",
    "content": "#!/usr/bin/env bash\nset -eux\n\n# $1 —— absolute path to destination file, should end with .tar\n# $2 —— absolute path to directory from which to add entries to the archive\n\npushd \"$2\"\n  tar -cvf \"$1\" .\npopd\n"
  },
  {
    "path": "syft/source/testdata/image-simple/Dockerfile",
    "content": "# Note: changes to this file will result in updating several test values. Consider making a new image fixture instead of editing this one.\nFROM scratch\nADD file-1.txt /somefile-1.txt\nADD file-2.txt /somefile-2.txt\n# note: adding a directory will behave differently on docker engine v18 vs v19\nADD target /\n"
  },
  {
    "path": "syft/source/testdata/image-simple/file-1.txt",
    "content": "this file has contents"
  },
  {
    "path": "syft/source/testdata/image-simple/file-2.txt",
    "content": "file-2 contents!"
  },
  {
    "path": "syft/source/testdata/image-simple/target/really/nested/file-3.txt",
    "content": "another file!\nwith lines..."
  },
  {
    "path": "syft/source/testdata/path-detected/.vimrc",
    "content": "\" A .vimrc file\n"
  },
  {
    "path": "syft/source/testdata/path-detected/empty",
    "content": ""
  },
  {
    "path": "syft/source/testdata/path-detected-2/.vimrc",
    "content": "Another .vimrc file"
  },
  {
    "path": "syft/source/testdata/path-detected-2/empty",
    "content": ""
  },
  {
    "path": "syft/source/testdata/system_paths/outside_root/link_target/place",
    "content": "good"
  },
  {
    "path": "syft/source/testdata/system_paths/target/dev/place",
    "content": "bad"
  },
  {
    "path": "syft/source/testdata/system_paths/target/home/place",
    "content": "good"
  },
  {
    "path": "syft/source/testdata/system_paths/target/link/a-symlink/place",
    "content": "good"
  },
  {
    "path": "syft/source/testdata/system_paths/target/proc/place",
    "content": "bad"
  },
  {
    "path": "syft/source/testdata/system_paths/target/sys/place",
    "content": "bad"
  },
  {
    "path": "syft/testutil/README.md",
    "content": "# Syft testutils package\n\nThese are test functions that are useful for testing Syft and downstream of Syft. There are no API guarantees\nfor these functions -- they may change at any time. Breaking changes to these functions may occur without\nnecessarily bumping the major version of Syft or noting the breakage in the release notes.\n\nThese functions are only for testing purposes and should not be used in production code.\n"
  },
  {
    "path": "syft/testutil/completion_testing.go",
    "content": "package testutil\n\nimport (\n\t\"testing\"\n\n\t\"github.com/anchore/syft/internal/packagemetadata\"\n\t\"github.com/anchore/syft/internal/sourcemetadata\"\n)\n\ntype PackageMetadataCompletionTester struct {\n\t*packagemetadata.CompletionTester\n}\n\ntype SourceMetadataCompletionTester struct {\n\t*sourcemetadata.CompletionTester\n}\n\nfunc NewPackageMetadataCompletionTester(t testing.TB, ignore ...any) *PackageMetadataCompletionTester {\n\tt.Helper()\n\treturn &PackageMetadataCompletionTester{\n\t\tCompletionTester: packagemetadata.NewCompletionTester(t, ignore...),\n\t}\n}\n\nfunc NewSourceMetadataCompletionTester(t testing.TB, ignore ...any) *SourceMetadataCompletionTester {\n\tt.Helper()\n\treturn &SourceMetadataCompletionTester{\n\t\tCompletionTester: sourcemetadata.NewCompletionTester(t, ignore...),\n\t}\n}\n"
  },
  {
    "path": "task.d/generate/cpe-index.yaml",
    "content": "version: \"3\"\n\nvars:\n  CPE_CACHE_DIR: \"syft/pkg/cataloger/internal/cpegenerate/dictionary/index-generator/.cpe-cache\"\n  CPE_CACHE_REGISTRY: \"ghcr.io/anchore/syft/cpe-cache:latest\"\n  CPE_INDEX_OUTPUT: \"syft/pkg/cataloger/internal/cpegenerate/dictionary/data/cpe-index.json\"\n  CPE_GENERATOR_DIR: \"syft/pkg/cataloger/internal/cpegenerate/dictionary/index-generator\"\n\ntasks:\n  cache:pull:\n    desc: Pull CPE cache from ORAS registry (ghcr.io/anchore/syft/cpe-cache:latest)\n    # deps: [tools]\n    cmds:\n      - cmd: |\n          set -eu\n          echo \"Pulling CPE cache from ORAS registry...\"\n          mkdir -p {{ .CPE_CACHE_DIR }}\n\n          # pull compressed files from ORAS\n          {{ .ORAS }} pull {{ .CPE_CACHE_REGISTRY }} --output {{ .CPE_CACHE_DIR }} || {\n            exit_code=$?\n            if [ $exit_code -eq 1 ]; then\n              echo \"No existing cache found in registry (this is normal for first run)\"\n              exit 0\n            else\n              exit $exit_code\n            fi\n          }\n\n          # handle nested directory structure from old pushes (if exists)\n          # files might be at .cpe-cache/syft/pkg/.../cpe-cache/*.json.zst\n          nested_cache=$(find {{ .CPE_CACHE_DIR }} -type d -name \".cpe-cache\" ! -path {{ .CPE_CACHE_DIR }} | head -1)\n          if [ -n \"$nested_cache\" ]; then\n            echo \"Found nested cache structure, moving files to correct location...\"\n            mv \"$nested_cache\"/*.json.zst {{ .CPE_CACHE_DIR }}/ 2>/dev/null || true\n            # clean up nested directories\n            rm -rf {{ .CPE_CACHE_DIR }}/syft 2>/dev/null || true\n          fi\n\n          # decompress all .json.zst files to .json\n          echo \"Decompressing cache files...\"\n          decompressed_count=0\n          for zst_file in {{ .CPE_CACHE_DIR }}/*.json.zst; do\n            # skip if no .zst files found (glob didn't match)\n            if [ ! -f \"$zst_file\" ]; then\n              echo \"No compressed files to decompress\"\n              break\n            fi\n\n            # decompress to .json (removing .zst extension)\n            json_file=\"${zst_file%.zst}\"\n            echo \"  Decompressing $(basename \"$zst_file\")...\"\n            zstd -d -q -f \"$zst_file\" -o \"$json_file\"\n\n            # remove compressed file\n            rm \"$zst_file\"\n            decompressed_count=$((decompressed_count + 1))\n          done\n\n          if [ $decompressed_count -gt 0 ]; then\n            echo \"Decompressed $decompressed_count file(s) successfully\"\n          fi\n        silent: false\n\n  cache:update:\n    desc: Fetch incremental CPE updates from NVD API and update local cache\n    # deps: [tools]\n    dir: \"{{ .CPE_GENERATOR_DIR }}\"\n    cmds:\n      - cmd: |\n          echo \"Updating CPE cache from NVD Products API...\"\n          go run . -cache-only\n        silent: false\n    sources:\n      - \"{{ .CPE_GENERATOR_DIR }}/*.go\"\n    generates:\n      - \"{{ .CPE_CACHE_DIR }}/metadata.json\"\n      - \"{{ .CPE_CACHE_DIR }}/products/*.json\"\n\n  cache:push:\n    desc: Push updated CPE cache to ORAS registry\n    # deps: [tools]\n    cmds:\n      - cmd: |\n          set -eu\n          echo \"Pushing CPE cache to ORAS registry...\"\n\n          if [ ! -d \"{{ .CPE_CACHE_DIR }}\" ]; then\n            echo \"No cache directory found\"\n            exit 1\n          fi\n\n          # store absolute path to ORAS before changing directory\n          oras_bin=\"$(pwd)/{{ .ORAS }}\"\n\n          # change to cache directory to avoid including full paths in ORAS push\n          cd {{ .CPE_CACHE_DIR }}\n\n          # find all JSON files (basenames only)\n          json_files=$(find . -maxdepth 1 -type f -name \"*.json\" -exec basename {} \\;)\n          if [ -z \"$json_files\" ]; then\n            echo \"No cache files to push\"\n            exit 1\n          fi\n\n          # compress each JSON file to .json.zst\n          echo \"Compressing cache files...\"\n          compressed_files=\"\"\n          for json_file in $json_files; do\n            zst_file=\"${json_file}.zst\"\n            echo \"  Compressing $(basename \"$json_file\")...\"\n            zstd -q -f \"$json_file\" -o \"$zst_file\"\n            compressed_files=\"$compressed_files $zst_file\"\n          done\n\n          # push compressed files to ORAS (from cache directory, so only basenames are used)\n          echo \"Pushing compressed files to registry...\"\n          \"$oras_bin\" push {{ .CPE_CACHE_REGISTRY }} $compressed_files \\\n            --annotation org.opencontainers.image.source=https://github.com/{{ .OWNER }}/{{ .PROJECT }} \\\n            --annotation org.opencontainers.image.created=$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")\n\n          # clean up compressed files\n          echo \"Cleaning up compressed files...\"\n          for zst_file in $compressed_files; do\n            rm \"$zst_file\"\n          done\n\n          echo \"Cache pushed successfully\"\n        silent: false\n\n  build:\n    desc: Generate cpe-index.json from existing local cache (does not pull/push/update)\n    dir: \"{{ .CPE_GENERATOR_DIR }}\"\n    cmds:\n      - cmd: |\n          echo \"Generating CPE index from local cache...\"\n          go run . -o ../data/cpe-index.json\n          echo \"CPE index generated successfully\"\n        silent: false\n    sources:\n      - \"{{ .CPE_GENERATOR_DIR }}/*.go\"\n      - \"{{ .CPE_CACHE_DIR }}/metadata.json\"\n      - \"{{ .CPE_CACHE_DIR }}/products/*.json\"\n    generates:\n      - \"{{ .CPE_INDEX_OUTPUT }}\"\n\n  cache:clean:\n    desc: Remove local CPE cache directory\n    dir: \"{{ .CPE_GENERATOR_DIR }}\"\n    cmds:\n      - rm -rf .cpe-cache\n      - echo \"CPE cache cleaned\"\n"
  },
  {
    "path": "test/cli/.gitignore",
    "content": "results"
  },
  {
    "path": "test/cli/all_formats_convertible_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestAllFormatsConvertable(t *testing.T) {\n\tassertions := []traitAssertion{\n\t\tassertStdoutLengthGreaterThan(1000),\n\t\tassertSuccessfulReturnCode,\n\t}\n\n\ttests := []struct {\n\t\tto       string\n\t\tfrom     string\n\t\ttemplate string\n\t\tenv      map[string]string\n\t}{\n\t\t{to: \"syft-json\", from: \"spdx-json\"},\n\t\t{to: \"syft-json\", from: \"cyclonedx-json\"},\n\t\t{to: \"spdx-json\", from: \"syft-json\"},\n\t\t{to: \"template\", from: \"syft-json\", template: \"testdata/csv.template\"},\n\t\t{to: \"spdx-json\", from: \"cyclonedx-json\"},\n\t\t{to: \"cyclonedx-json\", from: \"syft-json\"},\n\t\t{to: \"cyclonedx-json\", from: \"spdx-json\"},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"from %s to %s\", test.from, test.to), func(t *testing.T) {\n\t\t\tsbomArgs := []string{\"dir:./testdata/image-pkg-coverage\", \"-o\", test.from}\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, sbomArgs...)\n\t\t\tif cmd.ProcessState.ExitCode() != 0 {\n\t\t\t\tt.Log(\"STDOUT:\\n\", stdout)\n\t\t\t\tt.Log(\"STDERR:\\n\", stderr)\n\t\t\t\tt.Log(\"COMMAND:\", strings.Join(cmd.Args, \" \"))\n\t\t\t\tt.Fatalf(\"failure executing syft creating an sbom\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttempDir := t.TempDir()\n\t\t\tsbomFile := filepath.Join(tempDir, \"sbom.json\")\n\t\t\trequire.NoError(t, os.WriteFile(sbomFile, []byte(stdout), 0666))\n\n\t\t\tconvertArgs := []string{\"convert\", sbomFile, \"-o\", test.to}\n\t\t\tif test.template != \"\" {\n\t\t\t\tconvertArgs = append(convertArgs, \"--template\", test.template)\n\t\t\t}\n\t\t\tcmd, stdout, stderr = runSyft(t, test.env, convertArgs...)\n\t\t\tif cmd.ProcessState.ExitCode() != 0 {\n\t\t\t\tt.Log(\"STDOUT:\\n\", stdout)\n\t\t\t\tt.Log(\"STDERR:\\n\", stderr)\n\t\t\t\tt.Log(\"COMMAND:\", strings.Join(cmd.Args, \" \"))\n\t\t\t\tt.Fatalf(\"failure executing syft creating an sbom\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor _, traitFn := range assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/all_formats_expressible_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/template\"\n)\n\nfunc TestAllFormatsExpressible(t *testing.T) {\n\tcommonAssertions := []traitAssertion{\n\t\tfunc(tb testing.TB, stdout, _ string, _ int) {\n\t\t\ttb.Helper()\n\t\t\tif len(stdout) < 1000 {\n\t\t\t\ttb.Errorf(\"there may not be any report output (len=%d)\", len(stdout))\n\t\t\t}\n\t\t},\n\t\tassertSuccessfulReturnCode,\n\t}\n\n\tencs := format.NewEncoderCollection(format.Encoders()...)\n\tformatIDs := encs.IDs()\n\trequire.NotEmpty(t, formatIDs)\n\tfor _, o := range formatIDs {\n\t\tt.Run(fmt.Sprintf(\"format:%s\", o), func(t *testing.T) {\n\t\t\targs := []string{\"dir:./testdata/image-pkg-coverage\", \"-o\", string(o)}\n\t\t\tif o == template.ID {\n\t\t\t\targs = append(args, \"-t\", \"testdata/csv.template\")\n\t\t\t}\n\n\t\t\tcmd, stdout, stderr := runSyft(t, nil, args...)\n\t\t\tfor _, traitFn := range commonAssertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n\nfunc Test_formatVersionsExpressible(t *testing.T) {\n\ttests := []struct {\n\t\tformat    string\n\t\tassertion traitAssertion\n\t}{\n\t\t{\n\t\t\tformat:    \"spdx@2.1\",\n\t\t\tassertion: assertInOutput(\"SPDXVersion: SPDX-2.1\"),\n\t\t},\n\t\t{\n\t\t\tformat:    \"spdx@2.2\",\n\t\t\tassertion: assertInOutput(\"SPDXVersion: SPDX-2.2\"),\n\t\t},\n\t\t{\n\t\t\tformat:    \"spdx@2.3\",\n\t\t\tassertion: assertInOutput(\"SPDXVersion: SPDX-2.3\"),\n\t\t},\n\t\t{\n\t\t\tformat:    \"spdx-json@2.2\",\n\t\t\tassertion: assertInOutput(`\"spdxVersion\":\"SPDX-2.2\"`),\n\t\t},\n\t\t{\n\t\t\tformat:    \"spdx-json@2.3\",\n\t\t\tassertion: assertInOutput(`\"spdxVersion\":\"SPDX-2.3\"`),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.format, func(t *testing.T) {\n\t\t\targs := []string{\"dir:./testdata/image-pkg-coverage\", \"-o\", test.format}\n\t\t\tcmd, stdout, stderr := runSyft(t, nil, args...)\n\t\t\ttest.assertion(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/archive_test.go",
    "content": "package cli\n\nimport (\n\t\"archive/tar\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestArchiveScan(t *testing.T) {\n\ttests := []struct {\n\t\tname           string\n\t\targs           []string\n\t\tarchiveFixture string\n\t\tenv            map[string]string\n\t\tassertions     []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"scan an archive within the temp dir\",\n\t\t\targs: []string{\n\t\t\t\t\"scan\",\n\t\t\t\t\"-o\",\n\t\t\t\t\"json\",\n\t\t\t\t\"file:\" + createArchive(t, \"testdata/archive\", t.TempDir()),\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertPackageCount(1),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitAssertionFn := range test.assertions {\n\t\t\t\ttraitAssertionFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n\nfunc createArchive(t *testing.T, path string, destDir string) string {\n\t// create a tarball of the test fixtures (not by shelling out)\n\tarchivePath := filepath.Join(destDir, \"test.tar\")\n\n\tfh, err := os.Create(archivePath)\n\trequire.NoError(t, err)\n\tdefer fh.Close()\n\n\twriter := tar.NewWriter(fh)\n\trequire.NoError(t, writer.AddFS(os.DirFS(path)))\n\trequire.NoError(t, writer.Close())\n\n\treturn archivePath\n}\n"
  },
  {
    "path": "test/cli/cataloger_info_test.go",
    "content": "package cli\n\nimport (\n\t\"testing\"\n)\n\nfunc TestCatalogerCapsExperimentalFeatureGate(t *testing.T) {\n\t// the \"caps\" subcommand description from cataloger_caps.go\n\tconst capsSubcommandText = \"Show detailed capabilities of catalogers\"\n\n\t// table header from the cataloger info output\n\tconst capsTableHeader = \"ECOSYSTEM\"\n\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t// tests without SYFT_EXP_CAPABILITIES set\n\t\t{\n\t\t\tname: \"cataloger help does not show caps subcommand without env var\",\n\t\t\targs: []string{\"cataloger\", \"--help\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertNotInOutput(capsSubcommandText),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloger caps command shows help without env var\",\n\t\t\targs: []string{\"cataloger\", \"info\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// when the subcommand is not registered, the parent help is shown\n\t\t\t\tassertNotInOutput(capsTableHeader),\n\t\t\t\tassertInOutput(\"Available Commands\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// tests with SYFT_EXP_CAPABILITIES=false\n\t\t{\n\t\t\tname: \"cataloger help does not show caps subcommand with env var false\",\n\t\t\targs: []string{\"cataloger\", \"--help\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_EXP_CAPABILITIES\": \"false\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertNotInOutput(capsSubcommandText),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloger caps command shows help with env var false\",\n\t\t\targs: []string{\"cataloger\", \"info\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_EXP_CAPABILITIES\": \"false\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// when the subcommand is not registered, the parent help is shown\n\t\t\t\tassertNotInOutput(capsTableHeader),\n\t\t\t\tassertInOutput(\"Available Commands\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// tests with SYFT_EXP_CAPABILITIES=true\n\t\t{\n\t\t\tname: \"cataloger help shows caps subcommand with env var true\",\n\t\t\targs: []string{\"cataloger\", \"--help\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_EXP_CAPABILITIES\": \"true\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(capsSubcommandText),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"cataloger caps command shows capabilities table with env var true\",\n\t\t\targs: []string{\"cataloger\", \"info\"},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_EXP_CAPABILITIES\": \"true\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// the info command shows the capabilities table\n\t\t\t\tassertInOutput(capsTableHeader),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyftSafe(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/config_test.go",
    "content": "package cli\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"go.yaml.in/yaml/v3\"\n)\n\nfunc Test_configLoading(t *testing.T) {\n\tcwd, err := os.Getwd()\n\trequire.NoError(t, err)\n\tdefer func() { require.NoError(t, os.Chdir(cwd)) }()\n\n\tconfigsDir := filepath.Join(cwd, \"testdata\", \"configs\")\n\tpath := func(path string) string {\n\t\treturn filepath.Join(configsDir, filepath.Join(strings.Split(path, \"/\")...))\n\t}\n\n\ttype creds struct {\n\t\tAuthority string `yaml:\"authority\"`\n\t}\n\n\ttype registry struct {\n\t\tCredentials []creds `yaml:\"auth\"`\n\t}\n\n\ttype config struct {\n\t\tRegistry registry `yaml:\"registry\"`\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\thome     string\n\t\tcwd      string\n\t\targs     []string\n\t\texpected []creds\n\t\terr      string\n\t}{\n\t\t{\n\t\t\tname: \"single explicit config\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  cwd,\n\t\t\targs: []string{\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir1/.syft.yaml\"),\n\t\t\t},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir1-authority\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple explicit config\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  cwd,\n\t\t\targs: []string{\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir1/.syft.yaml\"),\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir2/.syft.yaml\"),\n\t\t\t},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir1-authority\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-authority\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"empty profile override\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  cwd,\n\t\t\targs: []string{\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir1/.syft.yaml\"),\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir2/.syft.yaml\"),\n\t\t\t\t\"--profile\",\n\t\t\t\t\"no-auth\",\n\t\t\t},\n\t\t\texpected: []creds{},\n\t\t},\n\t\t{\n\t\t\tname: \"no profiles defined\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  configsDir,\n\t\t\targs: []string{\n\t\t\t\t\"--profile\",\n\t\t\t\t\"invalid\",\n\t\t\t},\n\t\t\terr: \"not found in any configuration files\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid profile name\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  cwd,\n\t\t\targs: []string{\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir1/.syft.yaml\"),\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir2/.syft.yaml\"),\n\t\t\t\t\"--profile\",\n\t\t\t\t\"alt\",\n\t\t\t},\n\t\t\terr: \"profile not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"explicit with profile override\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  cwd,\n\t\t\targs: []string{\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir1/.syft.yaml\"),\n\t\t\t\t\"-c\",\n\t\t\t\tpath(\"dir2/.syft.yaml\"),\n\t\t\t\t\"--profile\",\n\t\t\t\t\"alt-auth\",\n\t\t\t},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir1-alt-authority\", // dir1 is still first\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-alt-authority\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single in cwd\",\n\t\t\thome: configsDir,\n\t\t\tcwd:  path(\"dir2\"),\n\t\t\targs: []string{},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-authority\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single in home\",\n\t\t\thome: path(\"dir2\"),\n\t\t\tcwd:  configsDir,\n\t\t\targs: []string{},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-authority\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"inherited in cwd\",\n\t\t\thome: path(\"dir1\"),\n\t\t\tcwd:  path(\"dir2\"),\n\t\t\targs: []string{},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-authority\", // dir2 is in cwd, giving higher priority\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir1-authority\", // home has \"lower priority and should be after\"\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"inherited profile override\",\n\t\t\thome: path(\"dir1\"),\n\t\t\tcwd:  path(\"dir2\"),\n\t\t\targs: []string{\n\t\t\t\t\"--profile\",\n\t\t\t\t\"alt-auth\",\n\t\t\t},\n\t\t\texpected: []creds{\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir2-alt-authority\", // dir2 is in cwd, giving higher priority\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tAuthority: \"dir1-alt-authority\", // dir1 is home, lower priority\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\trequire.NoError(t, os.Chdir(test.cwd))\n\t\t\tdefer func() { require.NoError(t, os.Chdir(cwd)) }()\n\t\t\tenv := map[string]string{\n\t\t\t\t\"HOME\":            test.home,\n\t\t\t\t\"XDG_CONFIG_HOME\": test.home,\n\t\t\t}\n\t\t\t_, stdout, stderr := runSyft(t, env, append([]string{\"config\", \"--load\"}, test.args...)...)\n\t\t\tif test.err != \"\" {\n\t\t\t\trequire.Contains(t, stderr, test.err)\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\trequire.Empty(t, stderr)\n\t\t\t}\n\t\t\tgot := config{}\n\t\t\terr = yaml.NewDecoder(strings.NewReader(stdout)).Decode(&got)\n\t\t\trequire.NoError(t, err)\n\t\t\trequire.Equal(t, test.expected, got.Registry.Credentials)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/convert_cmd_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxxml\"\n\t\"github.com/anchore/syft/syft/format/spdxjson\"\n\t\"github.com/anchore/syft/syft/format/spdxtagvalue\"\n\t\"github.com/anchore/syft/syft/sbom\"\n)\n\nfunc TestConvertCmd(t *testing.T) {\n\tassertions := []traitAssertion{\n\t\tassertInOutput(\"musl-utils\"),\n\t\tassertSuccessfulReturnCode,\n\t}\n\n\ttests := []struct {\n\t\tfrom   string\n\t\tto     string\n\t\texpect sbom.FormatEncoder\n\t}{\n\t\t{from: \"syft-json\", to: \"spdx-tag-value\", expect: mustEncoder(spdxtagvalue.NewFormatEncoderWithConfig(spdxtagvalue.DefaultEncoderConfig()))},\n\t\t{from: \"syft-json\", to: \"spdx-json\", expect: mustEncoder(spdxjson.NewFormatEncoderWithConfig(spdxjson.DefaultEncoderConfig()))},\n\t\t{from: \"syft-json\", to: \"cyclonedx-json\", expect: mustEncoder(cyclonedxjson.NewFormatEncoderWithConfig(cyclonedxjson.DefaultEncoderConfig()))},\n\t\t{from: \"syft-json\", to: \"cyclonedx-xml\", expect: mustEncoder(cyclonedxxml.NewFormatEncoderWithConfig(cyclonedxxml.DefaultEncoderConfig()))},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"from %s to %s\", test.from, test.to), func(t *testing.T) {\n\t\t\tsbomArgs := []string{\"dir:./testdata/image-pkg-coverage\", \"-o\", test.from}\n\t\t\tcmd, stdout, stderr := runSyft(t, nil, sbomArgs...)\n\t\t\tif cmd.ProcessState.ExitCode() != 0 {\n\t\t\t\tt.Log(\"STDOUT:\\n\", stdout)\n\t\t\t\tt.Log(\"STDERR:\\n\", stderr)\n\t\t\t\tt.Log(\"COMMAND:\", strings.Join(cmd.Args, \" \"))\n\t\t\t\tt.Fatalf(\"failure executing syft creating an sbom\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconvertArgs := []string{\"convert\", \"-\", \"-o\", test.to}\n\t\t\tcmd = getSyftCommand(t, convertArgs...)\n\n\t\t\tcmd.Stdin = strings.NewReader(stdout)\n\t\t\tstdout, stderr = runCommandObj(t, cmd, nil, false)\n\n\t\t\tfor _, traitFn := range assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\n\t\t\t// let's make sure the output is valid relative to the expected format\n\t\t\tfoundID, _ := format.Identify(strings.NewReader(stdout))\n\t\t\trequire.Equal(t, test.expect.ID(), foundID)\n\n\t\t})\n\t}\n}\n\nfunc mustEncoder(enc sbom.FormatEncoder, err error) sbom.FormatEncoder {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn enc\n}\n"
  },
  {
    "path": "test/cli/cyclonedx_valid_test.go",
    "content": "package cli\n\nimport (\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/syft/format/cyclonedxjson\"\n)\n\n// We have schema validation mechanisms in schema/cyclonedx/\n// This test allows us to double check that validation against the cyclonedx-cli tool\nfunc TestValidCycloneDX(t *testing.T) {\n\timageFixture := func(t *testing.T) string {\n\t\tfixtureImageName := \"image-pkg-coverage\"\n\t\timagetest.GetFixtureImage(t, \"docker-archive\", fixtureImageName)\n\t\ttarPath := imagetest.GetFixtureImageTarPath(t, fixtureImageName)\n\t\treturn \"docker-archive:\" + tarPath\n\t}\n\n\t// TODO update image to exercise entire cyclonedx schema\n\ttests := []struct {\n\t\tname       string\n\t\tsubcommand string\n\t\targs       []string\n\t\tfixture    func(*testing.T) string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname:       \"validate cyclonedx output\",\n\t\t\tsubcommand: \"scan\",\n\t\t\targs:       []string{\"-o\", \"cyclonedx-json\", \"-o\", \"cyclonedx-json=results/sbom.cdx.json\"},\n\t\t\tfixture:    imageFixture,\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t\tassertValidCycloneDX,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfixtureRef := test.fixture(t)\n\t\t\targs := []string{\n\t\t\t\ttest.subcommand, fixtureRef, \"-q\",\n\t\t\t}\n\t\t\targs = append(args, test.args...)\n\n\t\t\tcmd, stdout, stderr := runSyft(t, nil, args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\n\t\t\tvalidateCycloneDXJSON(t, stdout)\n\t\t})\n\t}\n}\n\nfunc assertValidCycloneDX(tb testing.TB, stdout, stderr string, rc int) {\n\ttb.Helper()\n\tf, err := os.CreateTemp(\"\", \"tmpfile-\")\n\tif err != nil {\n\t\ttb.Fatal(err)\n\t}\n\n\t// close and remove the temporary file at the end of the program\n\tdefer f.Close()\n\tdefer os.Remove(f.Name())\n\n\tdata := []byte(stdout)\n\n\tif _, err := f.Write(data); err != nil {\n\t\ttb.Fatal(err)\n\t}\n\n\targs := []string{\n\t\t\"validate\",\n\t\t\"--input-format\",\n\t\t\"json\",\n\t\t\"--input-version\",\n\t\t\"v1_4\",\n\t\t\"--input-file\",\n\t\t\"/sbom\",\n\t}\n\n\tcmd, stdout, stderr := runCycloneDXInDocker(tb, nil, \"cyclonedx/cyclonedx-cli\", f, args...)\n\tif cmd.ProcessState.ExitCode() != 0 {\n\t\ttb.Errorf(\"expected no validation failures for cyclonedx-cli but got rc=%d\", rc)\n\t}\n\n\tlogOutputOnFailure(tb, cmd, stdout, stderr)\n}\n\n// validate --input-format json --input-version v1_4 --input-file bom.json\nfunc validateCycloneDXJSON(t *testing.T, stdout string) {\n\tf, err := os.CreateTemp(\"\", \"tmpfile-\")\n\trequire.NoError(t, err)\n\n\t// close and remove the temporary file at the end of the program\n\tt.Cleanup(func() {\n\t\tassert.NoError(t, f.Close())\n\t\tassert.NoError(t, os.Remove(f.Name()))\n\t})\n\n\tdata := []byte(stdout)\n\n\tif _, err := f.Write(data); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// get the latest supported version of CycloneDX by syft and convert the expression to the format used by cyclonedx-cli\n\t// e.g. \"1.5\" -> \"v1_5\"\n\tversions := cyclonedxjson.SupportedVersions()\n\tversion := versions[len(versions)-1]\n\tversionInput := \"v\" + strings.Replace(version, \".\", \"_\", -1)\n\n\targs := []string{\n\t\t\"validate\",\n\t\t\"--input-format\",\n\t\t\"json\",\n\t\t\"--input-version\",\n\t\tversionInput,\n\t\t\"--input-file\",\n\t\t\"/sbom\",\n\t}\n\n\tcmd, stdout, stderr := runCycloneDXInDocker(t, nil, \"cyclonedx/cyclonedx-cli\", f, args...)\n\tif strings.Contains(stdout, \"BOM is not valid\") {\n\t\tt.Log(\"STDOUT:\\n\", stdout)\n\t\tt.Errorf(\"expected no validation failures for cyclonedx-cli but found invalid BOM\")\n\t}\n\n\tlogOutputOnFailure(t, cmd, stdout, stderr)\n}\n"
  },
  {
    "path": "test/cli/dir_root_scan_regression_test.go",
    "content": "package cli\n\nimport (\n\t\"os/exec\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestDirectoryScanCompletesWithinTimeout(t *testing.T) {\n\timage := \"alpine:latest\"\n\n\t// we want to pull the image ahead of the test as to not affect the timeout value\n\tpullDockerImage(t, image)\n\n\tvar cmd *exec.Cmd\n\tvar stdout, stderr string\n\tdone := make(chan struct{})\n\tgo func() {\n\t\tdefer close(done)\n\t\tcmd, stdout, stderr = runSyftInDocker(t, nil, image, \"dir:/\", \"-vv\")\n\t}()\n\n\tselect {\n\tcase <-done:\n\t\tbreak\n\tcase <-time.After(10 * time.Second):\n\t\tt.Fatalf(\"directory scan is taking too long\")\n\t}\n\n\tassertions := []traitAssertion{\n\t\tassertTableReport,\n\t\tassertSuccessfulReturnCode,\n\t}\n\n\tfor _, traitFn := range assertions {\n\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t}\n\tlogOutputOnFailure(t, cmd, stdout, stderr)\n}\n"
  },
  {
    "path": "test/cli/json_schema_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/xeipuuv/gojsonschema\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n\t\"github.com/anchore/syft/internal\"\n)\n\n// this is the path to the json schema directory relative to the root of the repo\nconst jsonSchemaPath = \"schema/json\"\n\nfunc TestJSONSchema(t *testing.T) {\n\n\timageFixture := func(t *testing.T) string {\n\t\tfixtureImageName := \"image-pkg-coverage\"\n\t\timagetest.GetFixtureImage(t, \"docker-archive\", fixtureImageName)\n\t\ttarPath := imagetest.GetFixtureImageTarPath(t, fixtureImageName)\n\t\treturn \"docker-archive:\" + tarPath\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tsubcommand string\n\t\targs       []string\n\t\tfixture    func(*testing.T) string\n\t}{\n\t\t{\n\t\t\tname:       \"scan:image:docker-archive:pkg-coverage\",\n\t\t\tsubcommand: \"scan\",\n\t\t\targs:       []string{\"-o\", \"json\"},\n\t\t\tfixture:    imageFixture,\n\t\t},\n\t\t{\n\t\t\tname:       \"scan:dir:pkg-coverage\",\n\t\t\tsubcommand: \"scan\",\n\t\t\targs:       []string{\"-o\", \"json\"},\n\t\t\tfixture: func(t *testing.T) string {\n\t\t\t\treturn \"dir:testdata/image-pkg-coverage\"\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfixtureRef := test.fixture(t)\n\t\t\targs := []string{\n\t\t\t\ttest.subcommand, fixtureRef, \"-q\",\n\t\t\t}\n\t\t\targs = append(args, test.args...)\n\n\t\t\t_, stdout, stderr := runSyft(t, nil, args...)\n\n\t\t\tif len(strings.Trim(stdout, \"\\n \")) < 100 {\n\t\t\t\tt.Fatalf(\"bad syft run:\\noutput: %q\\n:error: %q\", stdout, stderr)\n\t\t\t}\n\n\t\t\tvalidateJsonAgainstSchema(t, stdout)\n\t\t})\n\t}\n}\n\nfunc validateJsonAgainstSchema(t testing.TB, json string) {\n\tt.Helper()\n\tfullSchemaPath := path.Join(repoRoot(t), jsonSchemaPath, fmt.Sprintf(\"schema-%s.json\", internal.JSONSchemaVersion))\n\tschemaLoader := gojsonschema.NewReferenceLoader(fmt.Sprintf(\"file://%s\", fullSchemaPath))\n\tdocumentLoader := gojsonschema.NewStringLoader(json)\n\n\tresult, err := gojsonschema.Validate(schemaLoader, documentLoader)\n\tif err != nil {\n\t\tt.Fatal(\"unable to validate json schema:\", err.Error())\n\t}\n\n\tif !result.Valid() {\n\t\tt.Errorf(\"failed json schema validation:\")\n\t\tt.Errorf(\"JSON:\\n%s\\n\", json)\n\t\tfor _, desc := range result.Errors() {\n\t\t\tt.Errorf(\"  - %s\\n\", desc)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/cli/license_test.go",
    "content": "package cli\n\nimport \"testing\"\n\nfunc Test_Licenses(t *testing.T) {\n\ttestImage := getFixtureImage(t, \"image-pkg-coverage\")\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"licenses default with no content\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", testImage, \"--from\", \"docker-archive\"},\n\t\t\tenv:  map[string]string{\"SYFT_FORMAT_PRETTY\": \"true\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertUnknownLicenseContent(false),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// deprecated LICENSE_INCLUDE_UNKNOWN_LICENSE_CONTENT\n\t\t{\n\t\t\tname: \"licenses with content works without deprecated LICENSE_INCLUDE_UNKNOWN_LICENSE_CONTENT\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", testImage, \"--from\", \"docker-archive\"},\n\t\t\tenv:  map[string]string{\"SYFT_FORMAT_PRETTY\": \"true\", \"SYFT_LICENSE_INCLUDE_UNKNOWN_LICENSE_CONTENT\": \"true\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertUnknownLicenseContent(true),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// use new license content configuration\n\t\t{\n\t\t\tname: \"licenses with content works with new CONTENT configuration\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", testImage, \"--from\", \"docker-archive\"},\n\t\t\tenv:  map[string]string{\"SYFT_FORMAT_PRETTY\": \"true\", \"SYFT_LICENSE_CONTENT\": \"unknown\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertUnknownLicenseContent(true),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/root_cmd_test.go",
    "content": "package cli\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/sergi/go-diff/diffmatchpatch\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestRootCmdAliasesToPackagesSubcommand(t *testing.T) {\n\trequest := \"docker-archive:\" + getFixtureImage(t, \"image-pkg-coverage\")\n\n\ttests := []struct {\n\t\tname       string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"go-case\",\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertTableReport,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"respond-to-output-binding\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_OUTPUT\": \"text\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"[Image]\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\taliasCmd, aliasStdout, aliasStderr := runSyft(t, test.env, request)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, aliasStdout, aliasStderr, aliasCmd.ProcessState.ExitCode())\n\t\t\t}\n\n\t\t\tpkgCmd, pkgsStdout, pkgsStderr := runSyft(t, test.env, \"packages\", request)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, pkgsStdout, pkgsStderr, pkgCmd.ProcessState.ExitCode())\n\t\t\t}\n\n\t\t\tif aliasStdout != pkgsStdout {\n\t\t\t\tt.Errorf(\"packages and root command should have same report output but do not!\")\n\t\t\t\tdmp := diffmatchpatch.New()\n\t\t\t\tdiffs := dmp.DiffMain(aliasStdout, pkgsStdout, true)\n\t\t\t\tt.Error(dmp.DiffPrettyText(diffs))\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestPersistentFlags(t *testing.T) {\n\trequest := \"docker-archive:\" + getFixtureImage(t, \"image-pkg-coverage\")\n\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"quiet-flag\",\n\t\t\t// note: the root command will always show the deprecation warning, so the scan command is used instead\n\t\t\targs: []string{\"scan\", \"-q\", request},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tfunc(tb testing.TB, stdout, stderr string, rc int) {\n\t\t\t\t\t// ensure there is no status\n\t\t\t\t\tif len(stderr) != 0 {\n\t\t\t\t\t\ttb.Errorf(\"should have seen no stderr output, got %d bytes\", len(stderr))\n\t\t\t\t\t}\n\t\t\t\t\t// ensure there is still a report\n\t\t\t\t\tif len(stdout) == 0 {\n\t\t\t\t\t\ttb.Errorf(\"should have seen a report on stdout, got nothing\")\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"info-log-flag\",\n\t\t\targs: []string{\"-v\", request},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertLoggingLevel(\"info\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"debug-log-flag\",\n\t\t\targs: []string{\"-vv\", request},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertLoggingLevel(\"debug\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n\nfunc TestLogFile(t *testing.T) {\n\trequest := \"docker-archive:\" + getFixtureImage(t, \"image-pkg-coverage\")\n\n\tenvLogFile := filepath.Join(os.TempDir(), \"a-pretty-log-file.log\")\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t\tcleanup    func()\n\t}{\n\t\t{\n\t\t\tname: \"env-var-log-file-name\",\n\t\t\targs: []string{\"-vv\", request},\n\t\t\tenv:  map[string]string{\"SYFT_LOG_FILE\": envLogFile},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tfunc(tb testing.TB, stdout, stderr string, rc int) {\n\t\t\t\t\ttb.Helper()\n\t\t\t\t\t_, err := os.Stat(envLogFile)\n\t\t\t\t\tassert.NoError(t, err)\n\t\t\t\t},\n\t\t\t},\n\t\t\tcleanup: func() { assert.NoError(t, os.Remove(envLogFile)) },\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tt.Cleanup(test.cleanup)\n\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/scan_cmd_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"testing\"\n)\n\nconst (\n\t// this is the number of packages that should be found in the image-pkg-coverage fixture image\n\t// when analyzed with the squashed scope.\n\tcoverageImageSquashedPackageCount = 42\n)\n\nfunc TestPackagesCmdFlags(t *testing.T) {\n\thiddenPackagesImage := \"docker-archive:\" + getFixtureImage(t, \"image-hidden-packages\")\n\tcoverageImage := \"docker-archive:\" + getFixtureImage(t, \"image-pkg-coverage\")\n\tnodeBinaryImage := \"docker-archive:\" + getFixtureImage(t, \"image-node-binary\")\n\t// badBinariesImage := \"docker-archive:\" + getFixtureImage(t, \"image-bad-binaries\")\n\ttmp := t.TempDir() + \"/\"\n\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"no-args-shows-help\",\n\t\t\targs: []string{\"scan\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"an image/directory argument is required\"),              // specific error that should be shown\n\t\t\t\tassertInOutput(\"Generate a packaged-based Software Bill Of Materials\"), // excerpt from help description\n\t\t\t\tassertFailingReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"json-output-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertInOutput(`\"metadataType\":\"apk-db-entry\"`),\n\t\t\t\tassertNotInOutput(`\"metadataType\":\"ApkMetadata\"`),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"quiet-flag-with-logger\",\n\t\t\targs: []string{\"scan\", \"-qvv\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertNoStderr,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"quiet-flag-with-tui\",\n\t\t\targs: []string{\"scan\", \"-q\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertNoStderr,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple-output-flags\",\n\t\t\targs: []string{\"scan\", \"-o\", \"table\", \"-o\", \"json=\" + tmp + \".tmp/multiple-output-flag-test.json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertTableReport,\n\t\t\t\tassertFileExists(tmp + \".tmp/multiple-output-flag-test.json\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"source flags override bom metadata\",\n\t\t\targs: []string{\n\t\t\t\t\"scan\",\n\t\t\t\t\"--source-name\", \"custom-name\",\n\t\t\t\t\"--source-version\", \"custom-version\",\n\t\t\t\t\"--source-supplier\", \"custom-supplier\",\n\t\t\t\t\"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"custom-name\"),\n\t\t\t\tassertInOutput(\"custom-version\"),\n\t\t\t\tassertInOutput(\"custom-supplier\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// I haven't been able to reproduce locally yet, but in CI this has proven to be unstable:\n\t\t// For the same commit:\n\t\t//   pass: https://github.com/anchore/syft/runs/4611344142?check_suite_focus=true\n\t\t//   fail: https://github.com/anchore/syft/runs/4611343586?check_suite_focus=true\n\t\t// For the meantime this test will be commented out, but should be added back in as soon as possible.\n\t\t//\n\t\t// {\n\t\t//\tname: \"regression-survive-bad-binaries\",\n\t\t//\t// this image has all sorts of rich binaries from the clang-13 test suite that should do pretty bad things\n\t\t//\t// to the go cataloger binary path. We should NEVER let a panic stop the cataloging process for these\n\t\t//\t// specific cases.\n\t\t//\n\t\t//\t// this is more of an integration test, however, to assert the output we want to see from the application\n\t\t//\t// a CLI test is much easier.\n\t\t//\targs: []string{\"scan\", \"-vv\", badBinariesImage},\n\t\t//\tassertions: []traitAssertion{\n\t\t//\t\tassertInOutput(\"could not parse possible go binary\"),\n\t\t//\t\tassertSuccessfulReturnCode,\n\t\t//\t},\n\t\t// },\n\t\t{\n\t\t\tname: \"output-env-binding\",\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_OUTPUT\": \"json\",\n\t\t\t},\n\t\t\targs: []string{\"scan\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"table-output-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"table\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertTableReport,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"default-output-flag\",\n\t\t\targs: []string{\"scan\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertTableReport,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"legacy-json-output-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", coverageImage},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_FORMAT_JSON_LEGACY\": \"true\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertNotInOutput(`\"metadataType\":\"apk-db-entry\"`),\n\t\t\t\tassertInOutput(`\"metadataType\":\"ApkMetadata\"`),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"squashed-scope-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"-s\", \"squashed\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(coverageImageSquashedPackageCount),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"squashed-scope-flag-hidden-packages\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"-s\", \"squashed\", hiddenPackagesImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(14),\n\t\t\t\t// package 1: alpine-baselayout-data@3.6.5-r0 (apk)\n\t\t\t\t// package 2: alpine-baselayout@3.6.5-r0 (apk)\n\t\t\t\t// package 3: alpine-keys@2.4-r1 (apk)\n\t\t\t\t// package 4: apk-tools@2.14.4-r0 (apk)\n\t\t\t\t// package 5: busybox-binsh@1.36.1-r29 (apk)\n\t\t\t\t// package 6: busybox@1.36.1-r29 (apk)\n\t\t\t\t// package 7: ca-certificates-bundle@20240705-r0 (apk)\n\t\t\t\t// package 8: libcrypto3@3.3.1-r3 (apk)\n\t\t\t\t// package 9: libssl3@3.3.1-r3 (apk)\n\t\t\t\t// package 10: musl-utils@1.2.5-r0 (apk)\n\t\t\t\t// package 11: musl@1.2.5-r0 (apk)\n\t\t\t\t// package 12: scanelf@1.3.7-r2 (apk)\n\t\t\t\t// package 13: ssl_client@1.36.1-r29 (apk)\n\t\t\t\t// package 14: zlib@1.3.1-r1 (apk)\n\t\t\t\tassertNotInOutput(`\"name\":\"curl\"`), // hidden package\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"all-layers-scope-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"-s\", \"all-layers\", hiddenPackagesImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(24),\n\t\t\t\t// package 1: alpine-baselayout-data@3.6.5-r0 (apk)\n\t\t\t\t// package 2: alpine-baselayout@3.6.5-r0 (apk)\n\t\t\t\t// package 3: alpine-keys@2.4-r1 (apk)\n\t\t\t\t// package 4: apk-tools@2.14.4-r0 (apk)\n\t\t\t\t// package 5: brotli-libs@1.1.0-r2 (apk)\n\t\t\t\t// package 6: busybox-binsh@1.36.1-r29 (apk)\n\t\t\t\t// package 7: busybox@1.36.1-r29 (apk)\n\t\t\t\t// package 8: c-ares@1.28.1-r0 (apk)\n\t\t\t\t// package 9: ca-certificates-bundle@20240705-r0 (apk)\n\t\t\t\t// package 10: ca-certificates@20240705-r0 (apk)\n\t\t\t\t// package 11: curl@8.9.1-r1 (apk)\n\t\t\t\t// package 12: libcrypto3@3.3.1-r3 (apk)\n\t\t\t\t// package 13: libcurl@8.9.1-r1 (apk)\n\t\t\t\t// package 14: libidn2@2.3.7-r0 (apk)\n\t\t\t\t// package 15: libpsl@0.21.5-r1 (apk)\n\t\t\t\t// package 16: libssl3@3.3.1-r3 (apk)\n\t\t\t\t// package 17: libunistring@1.2-r0 (apk)\n\t\t\t\t// package 18: musl-utils@1.2.5-r0 (apk)\n\t\t\t\t// package 19: musl@1.2.5-r0 (apk)\n\t\t\t\t// package 20: nghttp2-libs@1.62.1-r0 (apk)\n\t\t\t\t// package 21: scanelf@1.3.7-r2 (apk)\n\t\t\t\t// package 22: ssl_client@1.36.1-r29 (apk)\n\t\t\t\t// package 23: zlib@1.3.1-r1 (apk)\n\t\t\t\t// package 24: zstd-libs@1.5.6-r0 (apk)\n\t\t\t\tassertInOutput(\"all-layers\"),\n\t\t\t\tassertInOutput(`\"name\":\"curl\"`), // hidden package\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"all-layers-scope-flag-by-env\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", hiddenPackagesImage},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_SCOPE\": \"all-layers\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(24), // packages are now deduplicated for this case\n\t\t\t\tassertInOutput(\"all-layers\"),\n\t\t\t\tassertInOutput(`\"name\":\"curl\"`), // hidden package\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// we want to make certain that syft can catalog a single go binary and get a SBOM report that is not empty\n\t\t\tname: \"catalog-single-go-binary\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", getSyftBinaryLocation(t)},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertStdoutLengthGreaterThan(1000),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"catalog-node-js-binary\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", nodeBinaryImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertInOutput(\"node.js\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// TODO: uncomment this test when we can use `syft config`\n\t\t//{\n\t\t//\t// TODO: this could be a unit test\n\t\t//\tname: \"responds-to-package-cataloger-search-options\",\n\t\t//\targs: []string{\"--help\"},\n\t\t//\tenv: map[string]string{\n\t\t//\t\t\"SYFT_PACKAGE_SEARCH_UNINDEXED_ARCHIVES\": \"true\",\n\t\t//\t\t\"SYFT_PACKAGE_SEARCH_INDEXED_ARCHIVES\":   \"false\",\n\t\t//\t},\n\t\t//\tassertions: []traitAssertion{\n\t\t//\t\t// the application config in the log matches that of what we expect to have been configured. Note:\n\t\t//\t\t// we are not testing further wiring of this option, only that the config responds to\n\t\t//\t\t// package-cataloger-level options.\n\t\t//\t\tassertInOutput(\"search-unindexed-archives: true\"),\n\t\t//\t\tassertInOutput(\"search-indexed-archives: false\"),\n\t\t//\t},\n\t\t//},\n\t\t{\n\t\t\tname: \"platform-option-wired-up\",\n\t\t\targs: []string{\"scan\", \"--platform\", \"arm64\", \"-o\", \"json\", \"registry:busybox:1.31\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"sha256:1ee006886991ad4689838d3a288e0dd3fd29b70e276622f16b67a8922831a853\"), // linux/arm64 image digest\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"json-file-flag\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"--file\", filepath.Join(tmp, \"output-1.json\"), coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t\tassertFileOutput(t, filepath.Join(tmp, \"output-1.json\"),\n\t\t\t\t\tassertJsonReport,\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"json-output-flag-to-file\",\n\t\t\targs: []string{\"scan\", \"-o\", fmt.Sprintf(\"json=%s\", filepath.Join(tmp, \"output-2.json\")), coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t\tassertFileOutput(t, filepath.Join(tmp, \"output-2.json\"),\n\t\t\t\t\tassertJsonReport,\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"legacy-catalogers-option\",\n\t\t\t// This will detect enable:\n\t\t\t// - python-installed-package-cataloger\n\t\t\t// - python-package-cataloger\n\t\t\t// - ruby-gemspec-cataloger\n\t\t\t// - ruby-installed-gemspec-cataloger\n\t\t\targs: []string{\"packages\", \"-o\", \"json\", \"--catalogers\", \"python,gemspec\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"Flag --catalogers has been deprecated, use: override-default-catalogers and select-catalogers\"),\n\t\t\t\tassertPackageCount(13),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"select-catalogers-option\",\n\t\t\t// This will detect enable:\n\t\t\t// - python-installed-package-cataloger\n\t\t\t// - ruby-installed-gemspec-cataloger\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"--select-catalogers\", \"python,gemspec\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(6),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"select-no-package-catalogers\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", \"--select-catalogers\", \"-package\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(0),\n\t\t\t\tassertInOutput(`\"used\":[\"file-content-cataloger\",\"file-digest-cataloger\",\"file-executable-cataloger\",\"file-metadata-cataloger\"]`),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"override-default-catalogers-option\",\n\t\t\t// This will detect enable:\n\t\t\t// - python-installed-package-cataloger\n\t\t\t// - python-package-cataloger\n\t\t\t// - ruby-gemspec-cataloger\n\t\t\t// - ruby-installed-gemspec-cataloger\n\t\t\targs: []string{\"packages\", \"-o\", \"json\", \"--override-default-catalogers\", \"python,gemspec\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(13),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"override-default-catalogers-with-files\",\n\t\t\targs: []string{\"packages\", \"-o\", \"json\", \"--override-default-catalogers\", \"file\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertPackageCount(0),\n\t\t\t\tassertInOutput(`\"used\":[\"file-content-cataloger\",\"file-digest-cataloger\",\"file-executable-cataloger\",\"file-metadata-cataloger\"]`),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"new and old cataloger options are mutually exclusive\",\n\t\t\targs: []string{\"packages\", \"-o\", \"json\", \"--override-default-catalogers\", \"python\", \"--catalogers\", \"gemspec\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertFailingReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"override-default-parallelism\",\n\t\t\targs: []string{\"scan\", \"-vvv\", \"-o\", \"json\", coverageImage},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_PARALLELISM\": \"2\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// the application config in the log matches that of what we expect to have been configured.\n\t\t\t\tassertInOutput(`parallelism: 2`),\n\t\t\t\tassertPackageCount(coverageImageSquashedPackageCount),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"default-parallelism\",\n\t\t\targs: []string{\"scan\", \"-vvv\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// the application config in the log matches that of what we expect to have been configured.\n\t\t\t\tassertInOutput(`parallelism: 0`),\n\t\t\t\tassertPackageCount(coverageImageSquashedPackageCount),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"parallelism-flag\",\n\t\t\targs: []string{\"scan\", \"-vvv\", \"--parallelism\", \"2\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\t// the application config in the log matches that of what we expect to have been configured.\n\t\t\t\tassertInOutput(`parallelism: 2`),\n\t\t\t\tassertPackageCount(coverageImageSquashedPackageCount),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"password and key not in config output\",\n\t\t\targs: []string{\"scan\", \"-vvv\", \"-o\", \"json\", coverageImage},\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_ATTEST_PASSWORD\": \"secret_password\",\n\t\t\t\t\"SYFT_ATTEST_KEY\":      \"secret_key_path\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertNotInOutput(\"secret_password\"),\n\t\t\t\tassertNotInOutput(\"secret_key_path\"),\n\t\t\t\tassertPackageCount(coverageImageSquashedPackageCount),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t// Testing packages alias //////////////////////////////////////////////\n\t\t{\n\t\t\tname: \"packages-alias-command-works\",\n\t\t\targs: []string{\"packages\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertTableReport,\n\t\t\t\tassertInOutput(\"Command \\\"packages\\\" is deprecated, use `syft scan` instead\"),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"packages-alias-command--output-flag\",\n\t\t\targs: []string{\"packages\", \"-o\", \"json\", coverageImage},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n\nfunc TestRegistryAuth(t *testing.T) {\n\thost := \"localhost:17\"\n\timage := fmt.Sprintf(\"%s/something:latest\", host)\n\targs := []string{\"scan\", \"-vvv\", image, \"--from\", \"registry\"}\n\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"fallback to keychain\",\n\t\t\targs: args,\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"from registry\"),\n\t\t\t\tassertInOutput(image),\n\t\t\t\tassertInOutput(fmt.Sprintf(\"no registry credentials configured for %q, using the default keychain\", host)),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"use creds\",\n\t\t\targs: args,\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_REGISTRY_AUTH_AUTHORITY\": host,\n\t\t\t\t\"SYFT_REGISTRY_AUTH_USERNAME\":  \"username\",\n\t\t\t\t\"SYFT_REGISTRY_AUTH_PASSWORD\":  \"password\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"from registry\"),\n\t\t\t\tassertInOutput(image),\n\t\t\t\tassertInOutput(fmt.Sprintf(`using basic auth for registry \"%s\"`, host)),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"use token\",\n\t\t\targs: args,\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_REGISTRY_AUTH_AUTHORITY\": host,\n\t\t\t\t\"SYFT_REGISTRY_AUTH_TOKEN\":     \"my-token\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"from registry\"),\n\t\t\t\tassertInOutput(image),\n\t\t\t\tassertInOutput(fmt.Sprintf(`using token for registry \"%s\"`, host)),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"not enough info fallback to keychain\",\n\t\t\targs: args,\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_REGISTRY_AUTH_AUTHORITY\": host,\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"from registry\"),\n\t\t\t\tassertInOutput(image),\n\t\t\t\tassertInOutput(fmt.Sprintf(`no registry credentials configured for %q, using the default keychain`, host)),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"allows insecure http flag\",\n\t\t\targs: args,\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_REGISTRY_INSECURE_USE_HTTP\": \"true\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"insecure-use-http: true\"),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"use tls configuration\",\n\t\t\targs: args,\n\t\t\tenv: map[string]string{\n\t\t\t\t\"SYFT_REGISTRY_AUTH_TLS_CERT\": \"place.crt\",\n\t\t\t\t\"SYFT_REGISTRY_AUTH_TLS_KEY\":  \"place.key\",\n\t\t\t},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"using custom TLS credentials from\"),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitAssertionFn := range test.assertions {\n\t\t\t\ttraitAssertionFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/spdx_json_schema_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/xeipuuv/gojsonschema\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n)\n\n// this is the path to the json schema directory relative to the root of the repo\nconst spdxJsonSchemaPath = \"schema/spdx-json\"\n\nfunc TestSPDXJSONSchema(t *testing.T) {\n\timageFixture := func(t *testing.T) string {\n\t\tfixtureImageName := \"image-pkg-coverage\"\n\t\timagetest.GetFixtureImage(t, \"docker-archive\", fixtureImageName)\n\t\ttarPath := imagetest.GetFixtureImageTarPath(t, fixtureImageName)\n\t\treturn \"docker-archive:\" + tarPath\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tsubcommand string\n\t\targs       []string\n\t\tfixture    func(*testing.T) string\n\t}{\n\t\t{\n\t\t\tname:       \"scan:image:docker-archive:pkg-coverage\",\n\t\t\tsubcommand: \"scan\",\n\t\t\targs:       []string{\"-o\", \"spdx-json\"},\n\t\t\tfixture:    imageFixture,\n\t\t},\n\t\t{\n\t\t\tname:       \"scan:dir:pkg-coverage\",\n\t\t\tsubcommand: \"scan\",\n\t\t\targs:       []string{\"-o\", \"spdx-json\"},\n\t\t\tfixture: func(t *testing.T) string {\n\t\t\t\treturn \"dir:testdata/image-pkg-coverage\"\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tfixtureRef := test.fixture(t)\n\t\t\targs := []string{\n\t\t\t\ttest.subcommand, fixtureRef, \"-q\",\n\t\t\t}\n\t\t\targs = append(args, test.args...)\n\n\t\t\t_, stdout, _ := runSyft(t, nil, args...)\n\n\t\t\tif len(strings.Trim(stdout, \"\\n \")) < 100 {\n\t\t\t\tt.Fatalf(\"bad syft output: %q\", stdout)\n\t\t\t}\n\n\t\t\tvalidateSpdxJsonAgainstSchema(t, stdout)\n\t\t})\n\t}\n}\n\nfunc validateSpdxJsonAgainstSchema(t testing.TB, json string) {\n\tfullSchemaPath := path.Join(repoRoot(t), spdxJsonSchemaPath, fmt.Sprintf(\"spdx-schema-2.3.json\"))\n\tschemaLoader := gojsonschema.NewReferenceLoader(fmt.Sprintf(\"file://%s\", fullSchemaPath))\n\tdocumentLoader := gojsonschema.NewStringLoader(json)\n\n\tresult, err := gojsonschema.Validate(schemaLoader, documentLoader)\n\tif err != nil {\n\t\tt.Fatal(\"unable to validate json schema:\", err.Error())\n\t}\n\n\tif !result.Valid() {\n\t\tt.Errorf(\"failed json schema validation:\")\n\t\tt.Errorf(\"JSON:\\n%s\\n\", json)\n\t\tfor _, desc := range result.Errors() {\n\t\t\tt.Errorf(\"  - %s\\n\", desc)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/cli/spdx_tooling_validation_test.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n)\n\nfunc TestSpdxValidationTooling(t *testing.T) {\n\t// note: the external tooling requires that the daemon explicitly has the image loaded, not just that\n\t// we can get the image from a cache tar.\n\timgTag := imagetest.LoadFixtureImageIntoDocker(t, \"image-java-spdx-tools\")\n\n\timages := []string{\n\t\t\"alpine:3.17.3@sha256:b6ca290b6b4cdcca5b3db3ffa338ee0285c11744b4a6abaa9627746ee3291d8d\",\n\t\t\"photon:3.0@sha256:888675e193418d924feea262cf639c46532b63c2027a39fd3ac75383b3c1130e\",\n\t\t\"debian:stable@sha256:729c2433e196207749a86f1d86e0106822041bb280b4200cf7a4db97608f6d3a\",\n\t}\n\n\tenv := map[string]string{\n\t\t\"SYFT_FILE_METADATA_CATALOGER_ENABLED\": \"true\",\n\t\t\"SYFT_FILE_CONTENTS_CATALOGER_ENABLED\": \"true\",\n\t\t\"SYFT_FILE_METADATA_DIGESTS\":           \"sha1\",\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\tsyftArgs []string\n\t\timages   []string\n\t\tsetup    func(t *testing.T)\n\t\tenv      map[string]string\n\t}{\n\t\t{\n\t\t\tname:     \"spdx validation tooling tag value\",\n\t\t\tsyftArgs: []string{\"scan\", \"-o\", \"spdx\"},\n\t\t\timages:   images,\n\t\t\tenv:      env,\n\t\t},\n\t\t{\n\t\t\tname:     \"spdx validation tooling json\",\n\t\t\tsyftArgs: []string{\"scan\", \"-o\", \"spdx-json\"},\n\t\t\timages:   images,\n\t\t\tenv:      env,\n\t\t},\n\t\t{\n\t\t\tname:     \"spdx validation tooling tag value\",\n\t\t\tsyftArgs: []string{\"scan\", \"-o\", \"spdx@2.2\"},\n\t\t\timages:   images,\n\t\t\tenv:      env,\n\t\t},\n\t\t{\n\t\t\tname:     \"spdx validation tooling json\",\n\t\t\tsyftArgs: []string{\"scan\", \"-o\", \"spdx-json@2.2\"},\n\t\t\timages:   images,\n\t\t\tenv:      env,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tfor _, image := range test.images {\n\t\t\tt.Run(test.name+\"_\"+image, func(t *testing.T) {\n\n\t\t\t\targs := append(test.syftArgs, image)\n\n\t\t\t\tvar suffix string\n\t\t\t\tif strings.Contains(test.name, \"json\") {\n\t\t\t\t\tsuffix = \".json\"\n\t\t\t\t} else {\n\t\t\t\t\tsuffix = \".spdx\"\n\t\t\t\t}\n\n\t\t\t\tdir := t.TempDir()\n\t\t\t\tsbomPath := filepath.Join(dir, fmt.Sprintf(\"sbom%s\", suffix))\n\n\t\t\t\targs = append(args, \"--file\", sbomPath)\n\n\t\t\t\tcmd, _, stderr := runSyft(t, test.env, args...)\n\t\t\t\tif cmd.ProcessState.ExitCode() != 0 {\n\t\t\t\t\tt.Fatalf(\"failed to run syft: %s\", stderr)\n\t\t\t\t}\n\n\t\t\t\tcwd, err := os.Getwd()\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// validate against spdx java tooling\n\t\t\t\tfileArg := fmt.Sprintf(\"DIR=%s\", dir)\n\t\t\t\tmountArg := fmt.Sprintf(\"BASE=%s\", path.Base(sbomPath))\n\t\t\t\timageArg := fmt.Sprintf(\"IMAGE=%s\", imgTag)\n\n\t\t\t\tvalidateCmd := exec.Command(\"make\", \"validate\", fileArg, mountArg, imageArg)\n\t\t\t\tvalidateCmd.Dir = filepath.Join(cwd, \"testdata\", \"image-java-spdx-tools\")\n\n\t\t\t\tstdout, stderr, err := runCommand(validateCmd, map[string]string{})\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"invalid SPDX document:%v\\nSTDOUT:\\n%s\\nSTDERR:\\n%s\", err, stdout, stderr)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/cli/symlink_test.go",
    "content": "package cli\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_RequestedPathIncludesSymlink(t *testing.T) {\n\t// path contains a symlink\n\tpath := \"testdata/image-pkg-coverage/pkgs/java/example-java-app-maven-0.1.0.jar\"\n\t_, stdout, _ := runSyft(t, nil, \"scan\", path)\n\tassert.Contains(t, stdout, \"example-java-app-maven\")\n}\n"
  },
  {
    "path": "test/cli/testdata/.gitignore",
    "content": "# negate jar and zip exclusions for test fixtures that need these file types\n!image-unknowns/*.jar\n!image-unknowns/*.zip\n"
  },
  {
    "path": "test/cli/testdata/Makefile",
    "content": "FINGERPRINT_FILE=cache.fingerprint\n\n.DEFAULT_GOAL := fixtures\n\n# requirement 1: 'fixtures' goal to generate any and all test fixtures\nfixtures:\n\t@echo \"nothing to do\"\n\n# requirement 2: 'fingerprint' goal to determine if the fixture input that indicates any existing cache should be busted\nfingerprint: $(FINGERPRINT_FILE)\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find image-* -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n\n# requirement 4: 'clean' goal to remove all generated test fixtures\n.PHONY: clean\nclean:\n\trm -f $(FINGERPRINT_FILE)\n\n"
  },
  {
    "path": "test/cli/testdata/archive/dist-info/METADATA",
    "content": "Metadata-Version: 2.1\nName: Pygments\nVersion: 2.6.1\nSummary: Pygments is a syntax highlighting package written in Python.\nHome-page: https://pygments.org/\nAuthor: Georg Brandl\nAuthor-email: georg@python.org\nLicense: BSD License\nKeywords: syntax highlighting\nPlatform: any\nClassifier: License :: OSI Approved :: BSD License\nClassifier: Intended Audience :: Developers\nClassifier: Intended Audience :: End Users/Desktop\nClassifier: Intended Audience :: System Administrators\nClassifier: Development Status :: 6 - Mature\nClassifier: Programming Language :: Python\nClassifier: Programming Language :: Python :: 3\nClassifier: Programming Language :: Python :: 3.5\nClassifier: Programming Language :: Python :: 3.6\nClassifier: Programming Language :: Python :: 3.7\nClassifier: Programming Language :: Python :: 3.8\nClassifier: Programming Language :: Python :: Implementation :: CPython\nClassifier: Programming Language :: Python :: Implementation :: PyPy\nClassifier: Operating System :: OS Independent\nClassifier: Topic :: Text Processing :: Filters\nClassifier: Topic :: Utilities\nRequires-Python: >=3.5\n\n\nPygments\n~~~~~~~~\n\nPygments is a syntax highlighting package written in Python.\n\nIt is a generic syntax highlighter suitable for use in code hosting, forums,\nwikis or other applications that need to prettify source code.  Highlights\nare:\n\n* a wide range of over 500 languages and other text formats is supported\n* special attention is paid to details, increasing quality by a fair amount\n* support for new languages and formats are added easily\n* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image     formats that PIL supports and ANSI sequences\n* it is usable as a command-line tool and as a library\n\n:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.\n:license: BSD, see LICENSE for details.\n\n"
  },
  {
    "path": "test/cli/testdata/archive/dist-info/RECORD",
    "content": "../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220\nPygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449\nPygments-2.6.1.dist-info/RECORD,,\npygments/__pycache__/__init__.cpython-38.pyc,,\npygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778"
  },
  {
    "path": "test/cli/testdata/archive/dist-info/top_level.txt",
    "content": "top-level-pkg"
  },
  {
    "path": "test/cli/testdata/attestation/Dockerfile.ctfe_init",
    "content": "FROM golang:1.17.8@sha256:c7c94588b6445f5254fbc34df941afa10de04706deb330e62831740c9f0f2030 AS builder\n\nWORKDIR /root/\n\nRUN go install github.com/google/trillian/cmd/createtree@v1.3.10\nADD ./config/logid.sh /root/\nADD ./config/ctfe /root/ctfe\nRUN chmod +x /root/logid.sh\n\nCMD /root/logid.sh\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/config.json",
    "content": "{\n  \"OIDCIssuers\": {\n\t\"http://dex-idp:8888/auth\": {\n      \"IssuerURL\": \"http://dex-idp:8888/auth\",\n      \"ClientID\": \"fulcio\",\n      \"Type\": \"email\"\n    }\n  }\n}\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/ctfe/ct_server.cfg",
    "content": "config {\n\tlog_id: %LOGID%\n\tprefix: \"test\"\n\troots_pem_file: \"/etc/config/root.pem\"\n\tprivate_key: {\n\t\t[type.googleapis.com/keyspb.PEMKeyFile] {\n\t\t\tpath: \"/etc/config/privkey.pem\"\n\t\t\tpassword: \"foobar\"\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/ctfe/privkey.pem",
    "content": "-----BEGIN EC PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: DES-CBC,05BAAA9143C46320\n\nAttbquLclNy7ZEnlDFpReZvV2PZKuv89YMWqDvGGtnBVw+3eXYIa54Xli1CyXEPn\nqNGvibjIxj+Q19+VhA3n42SE2fHyULHKPZHebSL5qcVvZTqmbtAe/dZNH1SiGG2f\nbWauIw0oeHhXW5i9isxrLggPMRmPA65Ii3W7gyWFmjE=\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/ctfe/pubkey.pem",
    "content": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbbQiLx6GKy6ivhc11wJGbQjc2VX/\nmnuk5d670MTXR3p+LIAcxd5MhqIHpLmyYJ5mDKLEoZ/pC0nPuje3JueBcA==\n-----END PUBLIC KEY-----\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/dex/docker-compose-config.yaml",
    "content": "#\n# Copyright 2021 The Sigstore Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nissuer: http://dex-idp:8888/auth\n\nstorage:\n  type: memory\n\nweb:\n  http: dex-idp:8888\n\nfrontend:\n  issuer: Fulcio in Docker Compose\n\nexpiry:\n  signingKeys: \"24h\"\n  idTokens: \"1m\"\n  authRequests: \"24h\"\n\noauth2:\n  responseTypes: [ \"code\" ]\n  alwaysShowLoginScreen: false\n  skipApprovalScreen: true\n\nconnectors:\n- type: mockCallback\n  id: approved\n  name: AlwaysApprovesOIDCProvider\n\nstaticClients:\n  - id: fulcio\n    public: true\n    name: 'Fulcio in Docker Compose'\n\n# Dex's issuer URL + \"/callback\"\nredirectURI: http://dex-idp:8888/auth/callback\n"
  },
  {
    "path": "test/cli/testdata/attestation/config/logid.sh",
    "content": "#!/bin/bash\n#\n# Copyright 2021 The Sigstore Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\nfunction get_log_id() {\n\tcurl -s --retry-connrefused --retry 10 http://trillian-log-server:8095/metrics |grep \"^quota_acquired_tokens{spec=\\\"trees\"|head -1|awk ' { print $1 } '|sed -e 's/[^0-9]*//g' > /tmp/logid\n}\n\nfunction get_ephemeral_ca() {\n\tcurl -s --retry-connrefused --retry 10 http://fulcio-server:5555/api/v1/rootCert > /etc/config/root.pem\n}\n\nfunction create_log () {\n\t/go/bin/createtree -admin_server trillian-log-server:8096 > /tmp/logid\n\techo -n \"Created log ID \" && cat /tmp/logid\n}\n\nfunction update_config() {\n\tcat /root/ctfe/ct_server.cfg | sed -e \"s/%LOGID%/\"`cat /tmp/logid`\"/g\" > /etc/config/ct_server.cfg\n\tcp /root/ctfe/*.pem /etc/config/\n}\n\n# check to see if log id exists; if so, use that\necho -n \"Checking for existing configuration...\"\necho \"Checking for preexisting logs...\"\nget_log_id\n# else create one\nif ! [[ -s /tmp/logid ]]; then\n\techo \"No log found; let's create one...\"\n\tcreate_log\nfi\necho \"Updating config with current log\"\nupdate_config\n\nconfigid=`cat /etc/config/ct_server.cfg|grep log_id|awk ' { print $2 } '`\necho \"Exisiting configuration uses log ID $configid, exiting\"\n\necho \"Grabing fulcio root pem file\"\nget_ephemeral_ca\n\necho \"Finished ct_server configuration\"\n"
  },
  {
    "path": "test/cli/testdata/attestation/docker-compose-config.yaml",
    "content": "#\n# Copyright 2021 The Sigstore Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nissuer: http://dex-idp:8888/auth\n\nstorage:\n  type: memory\n\nweb:\n  http: 0.0.0.0:8888\n\nfrontend:\n  issuer: Fulcio in Docker Compose\n\nexpiry:\n  signingKeys: \"24h\"\n  idTokens: \"1m\"\n  authRequests: \"24h\"\n\noauth2:\n  responseTypes: [ \"code\" ]\n  alwaysShowLoginScreen: true\n  skipApprovalScreen: true\n\nconnectors:\n- type: mockCallback\n  id: https://any.valid.url/\n  name: AlwaysApprovesOIDCProvider\n\nstaticClients:\n  - id: fulcio\n    public: true\n    name: 'Fulcio in Docker Compose'\n\n# Dex's issuer URL + \"/callback\"\nredirectURI: http://dex-idp:8888/auth/callback\n"
  },
  {
    "path": "test/cli/testdata/attestation/docker-compose.yaml",
    "content": "version: '3.2'\nservices:\n  fulcio-server:\n    image: fulcio_fulcio-server\n    command: [\n      \"fulcio-server\",\n      \"serve\",\n      \"--host=0.0.0.0\",\n      \"--port=5555\",\n      \"--ca=ephemeralca\",\n      \"--ct-log-url=http://ct_server:6962/test\",\n      ]\n    restart: always # keep the server running\n    ports:\n      - \"5555:5555\"\n    volumes:\n      - ./config/config.json:/etc/fulcio-config/config.json:z\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:5555/ping\"]\n      interval: 10s\n      timeout: 3s\n      retries: 3\n      start_period: 5s\n    depends_on:\n      - dex-idp\n  mysql:\n    image: gcr.io/trillian-opensource-ci/db_server:3c8193ebb2d7fedb44d18e9c810d0d2e4dbb7e4d\n    environment:\n      - MYSQL_ROOT_PASSWORD=password\n      - MYSQL_DATABASE=test\n      - MYSQL_USER=test\n      - MYSQL_PASSWORD=password\n    restart: always # keep the MySQL server running\n    healthcheck:\n      test: [\"CMD\", \"/etc/init.d/mysql\", \"status\"]\n      interval: 30s\n      timeout: 3s\n      retries: 3\n      start_period: 10s\n  ctfe_init:\n    build:\n      context: .\n      dockerfile: Dockerfile.ctfe_init\n    depends_on:\n      - trillian-log-server\n      - fulcio-server\n    volumes:\n      - ctfeConfig:/etc/config/:rw\n  ct_server:\n    image: gcr.io/trillian-opensource-ci/ctfe\n    volumes:\n      - ctfeConfig:/etc/config/:rw\n    command: [\n        \"--log_config\" ,\"/etc/config/ct_server.cfg\",\n        \"--log_rpc_server\", \"trillian-log-server:8096\",\n        \"--http_endpoint\", \"0.0.0.0:6962\",\n        \"--alsologtostderr\",\n    ]\n    restart: always # retry while ctfe_init is running\n    depends_on:\n      - trillian-log-server\n      - trillian-log-signer\n      - ctfe_init\n    ports:\n      - \"6962:6962\"\n  dex-idp:\n    image: dexidp/dex:v2.30.0\n    user: root\n    command: [\n      \"dex\",\n      \"serve\",\n      \"/etc/config/docker-compose-config.yaml\",\n      ]\n    restart: always # keep the server running\n    ports:\n      - \"8888:8888\"\n    volumes:\n      - ./config/dex:/etc/config/:ro\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8888/auth/healthz\"]\n      interval: 10s\n      timeout: 3s\n      retries: 3\n      start_period: 5s\n  trillian-log-server:\n    image: gcr.io/trillian-opensource-ci/log_server\n    command: [\n      \"--storage_system=mysql\",\n      \"--mysql_uri=test:password@tcp(mysql:3306)/test\",\n      \"--rpc_endpoint=0.0.0.0:8096\",\n      \"--http_endpoint=0.0.0.0:8095\",\n      \"--alsologtostderr\",\n    ]\n    restart: always # retry while mysql is starting up\n    ports:\n      - \"8096:8096\"\n      - \"8095:8095\"\n    depends_on:\n      - mysql\n  trillian-log-signer:\n    image: gcr.io/trillian-opensource-ci/log_signer\n    command: [\n      \"--storage_system=mysql\",\n      \"--mysql_uri=test:password@tcp(mysql:3306)/test\",\n      \"--rpc_endpoint=0.0.0.0:8095\",\n      \"--http_endpoint=0.0.0.0:8097\",\n      \"--force_master\",\n      \"--alsologtostderr\",\n    ]\n    restart: always # retry while mysql is starting up\n    ports:\n      - \"8097:8097\"\n    depends_on:\n      - mysql\nvolumes:\n  ctfeConfig: {}\n"
  },
  {
    "path": "test/cli/testdata/configs/dir1/.syft.yaml",
    "content": "registry:\n  auth:\n    - authority: dir1-authority\n\nprofiles:\n  no-auth:\n    registry:\n      auth: []\n\n  alt-auth:\n    registry:\n      auth:\n        - authority: dir1-alt-authority\n"
  },
  {
    "path": "test/cli/testdata/configs/dir2/.syft.yaml",
    "content": "registry:\n  auth:\n    - authority: dir2-authority\n\nprofiles:\n  alt-auth:\n    registry:\n      auth:\n        - authority: dir2-alt-authority\n"
  },
  {
    "path": "test/cli/testdata/csv.template",
    "content": "\"Package\",\"Version Installed\", \"Found by\"\n{{- range .artifacts}}\n\"{{.name}}\",\"{{.version}}\",\"{{.foundBy}}\"\n{{- end}}"
  },
  {
    "path": "test/cli/testdata/image-bad-binaries/Dockerfile",
    "content": "FROM debian:sid@sha256:bee393b48f83fdeb978ce68abb9dc955d6398b984fca88b52a09dceb45ac74b5\nADD sources.list /etc/apt/sources.list.d/sources.list\nRUN apt update -y && apt install -y dpkg-dev\n# this as a \"macho-invalid\" directory which is useful for testing\nRUN apt-get source -y clang-13\n"
  },
  {
    "path": "test/cli/testdata/image-bad-binaries/sources.list",
    "content": "deb-src http://deb.debian.org/debian sid main\n"
  },
  {
    "path": "test/cli/testdata/image-hidden-packages/Dockerfile",
    "content": "FROM --platform=linux/amd64 alpine:3.20.2@sha256:eddacbc7e24bf8799a4ed3cdcfa50d4b88a323695ad80f317b6629883b2c2a78\n\nRUN apk add --no-cache curl\nRUN apk del curl\n"
  },
  {
    "path": "test/cli/testdata/image-java-spdx-tools/Dockerfile",
    "content": "FROM openjdk:11@sha256:e81b7f317654b0f26d3993e014b04bcb29250339b11b9de41e130feecd4cd43c\n\nRUN wget --no-verbose https://github.com/spdx/tools-java/releases/download/v1.1.3/tools-java-1.1.3.zip && \\\n\tunzip tools-java-1.1.3.zip && \\\n\trm tools-java-1.1.3.zip\n\nENTRYPOINT [\"java\", \"-jar\", \"tools-java-1.1.3-jar-with-dependencies.jar\"]\n"
  },
  {
    "path": "test/cli/testdata/image-java-spdx-tools/Makefile",
    "content": "all: build validate\n\nIMAGE := \"spdx-java-tools:latest\"\n\n.PHONY: build\nbuild:\n\tdocker build -t spdx-java-tools:latest .\n\nvalidate:\n\tdocker run --rm -v $(DIR):/home/build/ $(IMAGE) Verify /home/build/$(BASE)\n"
  },
  {
    "path": "test/cli/testdata/image-node-binary/Dockerfile",
    "content": "FROM node:19-alpine3.15@sha256:07050181369f52460e788738272bcb22b71c7cfc6fafee0b5cd27d2022513a86\n"
  },
  {
    "path": "test/cli/testdata/image-unknowns/Dockerfile",
    "content": "FROM alpine@sha256:c5c5fda71656f28e49ac9c5416b3643eaa6a108a8093151d6d1afc9463be8e33\nRUN rm -rf /lib/apk/db/installed\nCOPY . /home/files\n# add a circular reference that will result in a failure while executing FindByGlob:\nRUN mkdir -p /etc/alternatives && ln -s /etc/alternatives/java2 /etc/alternatives/java && ln -s /etc/alternatives/java /etc/alternatives/java2\n"
  },
  {
    "path": "test/cli/testdata/image-unknowns/exe",
    "content": ""
  },
  {
    "path": "test/cli/testdata/image-unknowns/executable-script",
    "content": "#!/bin/sh\necho \"hello\"\n"
  },
  {
    "path": "test/cli/testdata/registry/.dockerignore",
    "content": "**/*\n"
  },
  {
    "path": "test/cli/testdata/registry/Dockerfile",
    "content": "FROM alpine@sha256:c5c5fda71656f28e49ac9c5416b3643eaa6a108a8093151d6d1afc9463be8e33\n"
  },
  {
    "path": "test/cli/testdata/registry/Makefile",
    "content": "all: build start\n\n.PHONY: stop\nstop:\n\tdocker kill registry\n\n.PHONY: build\nbuild:\n\tdocker build -t localhost:5000/attest:latest .\n\n.PHONY: start\nstart:\n\tdocker run --rm \\\n\t\t\t\t-d \\\n\t\t\t\t--name registry \\\n\t\t\t\t-it \\\n\t\t\t\t--privileged \\\n\t\t\t\t-p 5000:5000 \\\n\t\t\t\tregistry:2.8\n\n.PHONY: push\npush:\n\tdocker push localhost:5000/attest:latest\n"
  },
  {
    "path": "test/cli/trait_assertions_test.go",
    "content": "package cli\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/acarl005/stripansi\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/syft/syft/format/syftjson/model\"\n)\n\ntype traitAssertion func(tb testing.TB, stdout, stderr string, rc int)\n\nfunc assertFileOutput(tb testing.TB, path string, assertions ...traitAssertion) traitAssertion {\n\ttb.Helper()\n\n\treturn func(tb testing.TB, _, stderr string, rc int) {\n\t\tcontent, err := os.ReadFile(path)\n\t\trequire.NoError(tb, err)\n\t\tcontentStr := string(content)\n\n\t\tfor _, assertion := range assertions {\n\t\t\t// treat the file content as stdout\n\t\t\tassertion(tb, contentStr, stderr, rc)\n\t\t}\n\t}\n}\n\nfunc assertJsonReport(tb testing.TB, stdout, _ string, _ int) {\n\ttb.Helper()\n\tvar data interface{}\n\n\tif err := json.Unmarshal([]byte(stdout), &data); err != nil {\n\t\ttb.Errorf(\"expected to find a JSON report, but was unmarshalable: %+v\", err)\n\t}\n}\n\nfunc assertTableReport(tb testing.TB, stdout, _ string, _ int) {\n\ttb.Helper()\n\tif !strings.Contains(stdout, \"NAME\") || !strings.Contains(stdout, \"VERSION\") || !strings.Contains(stdout, \"TYPE\") {\n\t\ttb.Errorf(\"expected to find a table report, but did not\")\n\t}\n}\n\n//func assertScope(scope source.Scope) traitAssertion {\n//\treturn func(tb testing.TB, stdout, stderr string, rc int) {\n//\t\ttb.Helper()\n//\t\t// we can only verify source with the json report\n//\t\tassertJsonReport(tb, stdout, stderr, rc)\n//\n//\t\tif !strings.Contains(stdout, fmt.Sprintf(`\"scope\": \"%s\"`, scope.String())) {\n//\t\t\ttb.Errorf(\"JSON report did not indicate the %q scope\", scope)\n//\t\t}\n//\t}\n//}\n\nfunc assertLoggingLevel(level string) traitAssertion {\n\t// match examples:\n\t//  \"[0000]  INFO\"\n\t//  \"[0012] DEBUG\"\n\tlogPattern := regexp.MustCompile(`(?m)^\\[\\d\\d\\d\\d\\]\\s+` + strings.ToUpper(level))\n\treturn func(tb testing.TB, _, stderr string, _ int) {\n\t\ttb.Helper()\n\t\tif !logPattern.MatchString(stripansi.Strip(stderr)) {\n\t\t\ttb.Errorf(\"output did not indicate the %q logging level\", level)\n\t\t}\n\t}\n}\n\nfunc assertNotInOutput(data string) traitAssertion {\n\treturn func(tb testing.TB, stdout, stderr string, _ int) {\n\t\ttb.Helper()\n\t\tif strings.Contains(stripansi.Strip(stderr), data) {\n\t\t\ttb.Errorf(\"data=%q was found in stderr, but should not have been there\", data)\n\t\t}\n\t\tif strings.Contains(stripansi.Strip(stdout), data) {\n\t\t\ttb.Errorf(\"data=%q was found in stdout, but should not have been there\", data)\n\t\t}\n\t}\n}\n\nfunc assertNoStderr(tb testing.TB, _, stderr string, _ int) {\n\ttb.Helper()\n\tif len(stderr) > 0 {\n\t\ttb.Errorf(\"expected stderr to be empty, but wasn't\")\n\t\tif showOutput != nil && *showOutput {\n\t\t\ttb.Errorf(\"STDERR:%s\", stderr)\n\t\t}\n\t}\n}\n\nfunc assertInOutput(data string) traitAssertion {\n\treturn func(tb testing.TB, stdout, stderr string, _ int) {\n\t\ttb.Helper()\n\t\tstdout = stripansi.Strip(stdout)\n\t\tstderr = stripansi.Strip(stderr)\n\t\tif !strings.Contains(stdout, data) && !strings.Contains(stderr, data) {\n\t\t\ttb.Errorf(\"data=%q was NOT found in any output, but should have been there\", data)\n\t\t\tif showOutput != nil && *showOutput {\n\t\t\t\ttb.Errorf(\"STDOUT:%s\\nSTDERR:%s\", stdout, stderr)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc assertStdoutLengthGreaterThan(length uint) traitAssertion {\n\treturn func(tb testing.TB, stdout, _ string, _ int) {\n\t\ttb.Helper()\n\t\tif uint(len(stdout)) < length {\n\t\t\ttb.Errorf(\"not enough output (expected at least %d, got %d)\", length, len(stdout))\n\t\t}\n\t}\n}\n\nfunc assertPackageCount(length uint) traitAssertion {\n\treturn func(tb testing.TB, stdout, _ string, _ int) {\n\t\ttb.Helper()\n\t\ttype NameAndVersion struct {\n\t\t\tName    string `json:\"name\"`\n\t\t\tVersion string `json:\"version\"`\n\t\t\tType    string `json:\"type\"`\n\t\t}\n\t\ttype partial struct {\n\t\t\tArtifacts []NameAndVersion `json:\"artifacts\"`\n\t\t}\n\t\tvar data partial\n\n\t\tif err := json.Unmarshal([]byte(stdout), &data); err != nil {\n\t\t\ttb.Errorf(\"expected to find a JSON report, but was unmarshalable: %+v\", err)\n\t\t}\n\n\t\tif uint(len(data.Artifacts)) != length {\n\t\t\ttb.Errorf(\"expected package count of %d, but found %d\", length, len(data.Artifacts))\n\t\t\tdebugArtifacts := make([]string, len(data.Artifacts))\n\t\t\tfor i, a := range data.Artifacts {\n\t\t\t\tdebugArtifacts[i] = fmt.Sprintf(\"%s@%s (%s)\", a.Name, a.Version, a.Type)\n\t\t\t}\n\t\t\tsort.Strings(debugArtifacts)\n\t\t\tfor i, a := range debugArtifacts {\n\t\t\t\ttb.Errorf(\"package %d: %s\", i+1, a)\n\t\t\t}\n\n\t\t}\n\t}\n}\n\nfunc assertUnknownLicenseContent(required bool) traitAssertion {\n\treturn func(tb testing.TB, stdout, _ string, _ int) {\n\t\ttb.Helper()\n\t\ttype NameAndLicense struct {\n\t\t\tName     string          `json:\"name\"`\n\t\t\tLicenses []model.License `json:\"Licenses\"`\n\t\t}\n\t\ttype partial struct {\n\t\t\tArtifacts []NameAndLicense `json:\"artifacts\"`\n\t\t}\n\n\t\tvar data partial\n\t\tif err := json.Unmarshal([]byte(stdout), &data); err != nil {\n\t\t\ttb.Errorf(\"expected to find a JSON report, but was unmarshalable: %+v\", err)\n\t\t}\n\n\t\tfor _, pkg := range data.Artifacts {\n\t\t\tfor _, lic := range pkg.Licenses {\n\t\t\t\tif strings.Contains(lic.Value, \"sha256\") && required {\n\t\t\t\t\tassert.NotZero(tb, len(lic.Contents))\n\t\t\t\t} else {\n\t\t\t\t\tassert.Empty(tb, lic.Contents)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc assertFailingReturnCode(tb testing.TB, _, _ string, rc int) {\n\ttb.Helper()\n\tif rc == 0 {\n\t\ttb.Errorf(\"expected a failure but got rc=%d\", rc)\n\t}\n}\n\nfunc assertSuccessfulReturnCode(tb testing.TB, _, _ string, rc int) {\n\ttb.Helper()\n\tif rc != 0 {\n\t\ttb.Errorf(\"expected no failure but got rc=%d\", rc)\n\t}\n}\n\nfunc assertFileExists(file string) traitAssertion {\n\treturn func(tb testing.TB, _, _ string, _ int) {\n\t\ttb.Helper()\n\t\tif _, err := os.Stat(file); err != nil {\n\t\t\ttb.Errorf(\"expected file to exist %s\", file)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/cli/unknowns_test.go",
    "content": "package cli\n\nimport (\n\t\"testing\"\n)\n\nfunc Test_Unknowns(t *testing.T) {\n\tunknownsImage := getFixtureImage(t, \"image-unknowns\")\n\n\ttests := []struct {\n\t\tname       string\n\t\targs       []string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"unknown executables\",\n\t\t\targs: []string{\"scan\", \"-o\", \"json\", unknownsImage, \"--from\", \"docker-archive\"},\n\t\t\tenv:  map[string]string{\"SYFT_FORMAT_PRETTY\": \"true\"},\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertJsonReport,\n\t\t\t\tassertInOutput(`no package identified in executable file`),\n\t\t\t\tassertInOutput(`unable to read files from java archive`),\n\t\t\t\tassertInOutput(`no package identified in archive`),\n\t\t\t\tassertSuccessfulReturnCode,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tcmd, stdout, stderr := runSyft(t, test.env, test.args...)\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, stdout, stderr, cmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t\tlogOutputOnFailure(t, cmd, stdout, stderr)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/cli/utils_test.go",
    "content": "package cli\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"math\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/anchore/stereoscope/pkg/imagetest\"\n)\n\nvar showOutput = flag.Bool(\"show-output\", false, \"show stdout and stderr for failing tests\")\n\nfunc logOutputOnFailure(t testing.TB, cmd *exec.Cmd, stdout, stderr string) {\n\tif t.Failed() && showOutput != nil && *showOutput {\n\t\tt.Log(\"STDOUT:\\n\", stdout)\n\t\tt.Log(\"STDERR:\\n\", stderr)\n\t\tt.Log(\"COMMAND:\", strings.Join(cmd.Args, \" \"))\n\t}\n}\n\nfunc setupPKI(t *testing.T, pw string) func() {\n\terr := os.Setenv(\"COSIGN_PASSWORD\", pw)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tcosignPath := filepath.Join(repoRoot(t), \".tmp/cosign\")\n\tcmd := exec.Command(cosignPath, \"generate-key-pair\")\n\tstdout, stderr, _ := runCommand(cmd, nil)\n\tif cmd.ProcessState.ExitCode() != 0 {\n\t\tt.Log(\"STDOUT\", stdout)\n\t\tt.Log(\"STDERR\", stderr)\n\t\tt.Fatalf(\"could not generate keypair\")\n\t}\n\n\treturn func() {\n\t\terr := os.Unsetenv(\"COSIGN_PASSWORD\")\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\terr = os.Remove(\"cosign.key\")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"could not cleanup cosign.key\")\n\t\t}\n\n\t\terr = os.Remove(\"cosign.pub\")\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"could not cleanup cosign.key\")\n\t\t}\n\t}\n}\n\nfunc getFixtureImage(t testing.TB, fixtureImageName string) string {\n\tt.Logf(\"obtaining fixture image for %s\", fixtureImageName)\n\timagetest.GetFixtureImage(t, \"docker-archive\", fixtureImageName)\n\treturn imagetest.GetFixtureImageTarPath(t, fixtureImageName)\n}\n\nfunc pullDockerImage(t testing.TB, image string) {\n\tcmd := exec.Command(\"docker\", \"pull\", image)\n\tstdout, stderr, _ := runCommand(cmd, nil)\n\tif cmd.ProcessState.ExitCode() != 0 {\n\t\tt.Log(\"STDOUT\", stdout)\n\t\tt.Log(\"STDERR\", stderr)\n\t\tt.Fatalf(\"could not pull docker image\")\n\t}\n}\n\n// docker run -v $(pwd)/sbom:/sbom cyclonedx/cyclonedx-cli:latest validate --input-format json --input-version v1_4 --input-file /sbom\nfunc runCycloneDXInDocker(t testing.TB, env map[string]string, image string, f *os.File, args ...string) (*exec.Cmd, string, string) {\n\tt.Helper()\n\n\tallArgs := []string{\"run\", \"-t\"}\n\n\tif runtime.GOARCH == \"arm64\" {\n\t\tt.Logf(\"Detected %s/%s — adding --platform=linux/amd64 for emulation\", runtime.GOOS, runtime.GOARCH)\n\t\tallArgs = append(allArgs, \"--platform=linux/amd64\")\n\t}\n\n\tallArgs = append(allArgs, \"-v\", fmt.Sprintf(\"%s:/sbom\", f.Name()))\n\n\tallArgs = append(allArgs, image)\n\tallArgs = append(allArgs, args...)\n\n\tcmd := exec.Command(\"docker\", allArgs...)\n\tstdout, stderr, _ := runCommand(cmd, env)\n\n\treturn cmd, stdout, stderr\n}\n\nfunc runSyftInDocker(t testing.TB, env map[string]string, image string, args ...string) (*exec.Cmd, string, string) {\n\tallArgs := append(\n\t\t[]string{\n\t\t\t\"run\",\n\t\t\t\"-t\",\n\t\t\t\"-e\",\n\t\t\t\"SYFT_CHECK_FOR_APP_UPDATE=false\",\n\t\t\t\"-v\",\n\t\t\tfmt.Sprintf(\"%s:/syft\", getSyftBinaryLocationByOS(t, \"linux\")),\n\t\t\timage,\n\t\t\t\"/syft\",\n\t\t},\n\t\targs...,\n\t)\n\tcmd := exec.Command(\"docker\", allArgs...)\n\tstdout, stderr, _ := runCommand(cmd, env)\n\treturn cmd, stdout, stderr\n}\n\nfunc runSyft(t testing.TB, env map[string]string, args ...string) (*exec.Cmd, string, string) {\n\treturn runSyftCommand(t, env, true, args...)\n}\n\nfunc runSyftSafe(t testing.TB, env map[string]string, args ...string) (*exec.Cmd, string, string) {\n\treturn runSyftCommand(t, env, false, args...)\n}\n\nfunc runSyftCommand(t testing.TB, env map[string]string, expectError bool, args ...string) (*exec.Cmd, string, string) {\n\tcancel := make(chan bool, 1)\n\tdefer func() {\n\t\tcancel <- true\n\t}()\n\n\tcmd := getSyftCommand(t, args...)\n\tif env == nil {\n\t\tenv = make(map[string]string)\n\t}\n\n\t// we should not have tests reaching out for app update checks\n\tenv[\"SYFT_CHECK_FOR_APP_UPDATE\"] = \"false\"\n\n\ttimeout := func() {\n\t\tselect {\n\t\tcase <-cancel:\n\t\t\treturn\n\t\tcase <-time.After(60 * time.Second):\n\t\t}\n\n\t\tif cmd != nil && cmd.Process != nil {\n\t\t\t// get a stack trace printed\n\t\t\terr := cmd.Process.Signal(syscall.SIGABRT)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"error aborting: %+v\", err)\n\t\t\t}\n\t\t}\n\t}\n\n\tgo timeout()\n\n\tstdout, stderr, err := runCommand(cmd, env)\n\n\tif !expectError && err != nil && stdout == \"\" {\n\t\tt.Errorf(\"error running syft: %+v\", err)\n\t\tt.Errorf(\"STDOUT: %s\", stdout)\n\t\tt.Errorf(\"STDERR: %s\", stderr)\n\n\t\t// this probably indicates a timeout... lets run it again with more verbosity to help debug issues\n\t\targs = append(args, \"-vv\")\n\t\tcmd = getSyftCommand(t, args...)\n\n\t\tgo timeout()\n\t\tstdout, stderr, err = runCommand(cmd, env)\n\n\t\tif err != nil {\n\t\t\tt.Errorf(\"error rerunning syft: %+v\", err)\n\t\t\tt.Errorf(\"STDOUT: %s\", stdout)\n\t\t\tt.Errorf(\"STDERR: %s\", stderr)\n\t\t}\n\t}\n\n\treturn cmd, stdout, stderr\n}\n\nfunc runCommandObj(t testing.TB, cmd *exec.Cmd, env map[string]string, expectError bool) (string, string) {\n\tcancel := make(chan bool, 1)\n\tdefer func() {\n\t\tcancel <- true\n\t}()\n\n\tif env == nil {\n\t\tenv = make(map[string]string)\n\t}\n\n\t// we should not have tests reaching out for app update checks\n\tenv[\"SYFT_CHECK_FOR_APP_UPDATE\"] = \"false\"\n\n\ttimeout := func() {\n\t\tselect {\n\t\tcase <-cancel:\n\t\t\treturn\n\t\tcase <-time.After(60 * time.Second):\n\t\t}\n\n\t\tif cmd != nil && cmd.Process != nil {\n\t\t\t// get a stack trace printed\n\t\t\terr := cmd.Process.Signal(syscall.SIGABRT)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"error aborting: %+v\", err)\n\t\t\t}\n\t\t}\n\t}\n\n\tgo timeout()\n\n\tstdout, stderr, err := runCommand(cmd, env)\n\n\tif !expectError && err != nil && stdout == \"\" {\n\t\tt.Errorf(\"error running syft: %+v\", err)\n\t\tt.Errorf(\"STDOUT: %s\", stdout)\n\t\tt.Errorf(\"STDERR: %s\", stderr)\n\t}\n\n\treturn stdout, stderr\n}\n\nfunc runCosign(t testing.TB, env map[string]string, args ...string) (*exec.Cmd, string, string) {\n\tcmd := getCommand(t, \".tmp/cosign\", args...)\n\tif env == nil {\n\t\tenv = make(map[string]string)\n\t}\n\n\tstdout, stderr, err := runCommand(cmd, env)\n\n\tif err != nil {\n\t\tt.Errorf(\"error running cosign: %+v\", err)\n\t}\n\n\treturn cmd, stdout, stderr\n}\n\nfunc getCommand(t testing.TB, location string, args ...string) *exec.Cmd {\n\treturn exec.Command(filepath.Join(repoRoot(t), location), args...)\n}\n\nfunc runCommand(cmd *exec.Cmd, env map[string]string) (string, string, error) {\n\tif env != nil {\n\t\tcmd.Env = append(os.Environ(), envMapToSlice(env)...)\n\t}\n\tvar stdout, stderr bytes.Buffer\n\tcmd.Stdout = &stdout\n\tcmd.Stderr = &stderr\n\n\t// ignore errors since this may be what the test expects\n\terr := cmd.Run()\n\n\treturn stdout.String(), stderr.String(), err\n}\n\nfunc envMapToSlice(env map[string]string) (envList []string) {\n\tfor key, val := range env {\n\t\tif key == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tenvList = append(envList, fmt.Sprintf(\"%s=%s\", key, val))\n\t}\n\treturn\n}\n\nfunc getSyftCommand(t testing.TB, args ...string) *exec.Cmd {\n\treturn exec.Command(getSyftBinaryLocation(t), args...)\n}\n\nfunc getSyftBinaryLocation(t testing.TB) string {\n\tconst envKey = \"SYFT_BINARY_LOCATION\"\n\tif os.Getenv(envKey) != \"\" {\n\t\t// SYFT_BINARY_LOCATION is the absolute path to the snapshot binary\n\t\treturn os.Getenv(envKey)\n\t}\n\tloc := getSyftBinaryLocationByOS(t, runtime.GOOS)\n\tbuildBinary(t, loc)\n\t_ = os.Setenv(envKey, loc)\n\treturn loc\n}\n\nfunc getSyftBinaryLocationByOS(t testing.TB, goOS string) string {\n\t// note: for amd64 we need to update the snapshot location with the v1 suffix\n\t// see : https://goreleaser.com/customization/build/#why-is-there-a-_v1-suffix-on-amd64-builds\n\tarchPath := runtime.GOARCH\n\tif runtime.GOARCH == \"amd64\" {\n\t\tarchPath = fmt.Sprintf(\"%s_v1\", archPath)\n\t}\n\n\tif runtime.GOARCH == \"arm64\" {\n\t\tarchPath = fmt.Sprintf(\"%s_v8.0\", archPath)\n\t}\n\t// note: there is a subtle - vs _ difference between these versions\n\tswitch goOS {\n\tcase \"darwin\", \"linux\":\n\t\treturn path.Join(repoRoot(t), fmt.Sprintf(\"snapshot/%s-build_%s_%s/syft\", goOS, goOS, archPath))\n\tdefault:\n\t\tt.Fatalf(\"unsupported OS: %s\", runtime.GOOS)\n\t}\n\treturn \"\"\n}\n\nfunc buildBinary(t testing.TB, loc string) {\n\twd, err := os.Getwd()\n\trequire.NoError(t, err)\n\trequire.NoError(t, os.Chdir(repoRoot(t)))\n\tdefer func() {\n\t\trequire.NoError(t, os.Chdir(wd))\n\t}()\n\tt.Log(\"Building syft...\")\n\tc := exec.Command(\"go\", \"build\", \"-o\", loc, \"./cmd/syft\")\n\tc.Stdout = os.Stdout\n\tc.Stderr = os.Stderr\n\tc.Stdin = os.Stdin\n\trequire.NoError(t, c.Run())\n}\n\nfunc repoRoot(t testing.TB) string {\n\tt.Helper()\n\troot, err := exec.Command(\"git\", \"rev-parse\", \"--show-toplevel\").Output()\n\tif err != nil {\n\t\tt.Fatalf(\"unable to find repo root dir: %+v\", err)\n\t}\n\tabsRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))\n\tif err != nil {\n\t\tt.Fatal(\"unable to get abs path to repo root:\", err)\n\t}\n\treturn absRepoRoot\n}\n\nfunc testRetryIntervals(done <-chan struct{}) <-chan time.Duration {\n\treturn exponentialBackoffDurations(250*time.Millisecond, 4*time.Second, 2, done)\n}\n\nfunc exponentialBackoffDurations(minDuration, maxDuration time.Duration, step float64, done <-chan struct{}) <-chan time.Duration {\n\tsleepDurations := make(chan time.Duration)\n\tgo func() {\n\t\tdefer close(sleepDurations)\n\tretryLoop:\n\t\tfor attempt := 0; ; attempt++ {\n\t\t\tduration := exponentialBackoffDuration(minDuration, maxDuration, step, attempt)\n\n\t\t\tselect {\n\t\t\tcase sleepDurations <- duration:\n\t\t\t\tbreak\n\t\t\tcase <-done:\n\t\t\t\tbreak retryLoop\n\t\t\t}\n\n\t\t\tif duration == maxDuration {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n\treturn sleepDurations\n}\n\nfunc exponentialBackoffDuration(minDuration, maxDuration time.Duration, step float64, attempt int) time.Duration {\n\tduration := time.Duration(float64(minDuration) * math.Pow(step, float64(attempt)))\n\tif duration < minDuration {\n\t\treturn minDuration\n\t} else if duration > maxDuration {\n\t\treturn maxDuration\n\t}\n\treturn duration\n}\n"
  },
  {
    "path": "test/cli/version_cmd_test.go",
    "content": "package cli\n\nimport (\n\t\"testing\"\n)\n\nfunc TestVersionCmdPrintsToStdout(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tenv        map[string]string\n\t\tassertions []traitAssertion\n\t}{\n\t\t{\n\t\t\tname: \"version command prints to stdout\",\n\t\t\tassertions: []traitAssertion{\n\t\t\t\tassertInOutput(\"Version:\"),\n\t\t\t\tassertNoStderr,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tpkgCmd, pkgsStdout, pkgsStderr := runSyft(t, test.env, \"version\")\n\t\t\tfor _, traitFn := range test.assertions {\n\t\t\t\ttraitFn(t, pkgsStdout, pkgsStderr, pkgCmd.ProcessState.ExitCode())\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "test/compare/compare.py",
    "content": "#!/usr/bin/env python3\nimport sys\nimport json\nimport collections\n\nINDENT = \"    \"\n\n\nMetadata = collections.namedtuple(\"Metadata\", \"metadata sources\")\nPackage = collections.namedtuple(\"Package\", \"name type version\")\n\n\nclass Syft:\n    def __init__(self, report_path):\n        self.report_path = report_path\n\n    def _enumerate_section(self, section):\n        with open(self.report_path) as json_file:\n            data = json.load(json_file)\n            for entry in data[section]:\n                yield entry\n\n    def packages(self):\n        packages = set()\n        metadata = collections.defaultdict(dict)\n        for entry in self._enumerate_section(section=\"artifacts\"):\n            package = Package(\n                name=entry[\"name\"], type=entry[\"type\"], version=entry[\"version\"]\n            )\n\n            packages.add(package)\n            metadata[package.type][package] = Metadata(\n                # note: the metadata entry is optional\n                metadata=repr(entry.get(\"metadata\", \"\")), sources=repr(entry[\"locations\"])\n            )\n        return packages, metadata\n\n\ndef print_rows(rows):\n    if not rows:\n        return\n    widths = []\n    for col, _ in enumerate(rows[0]):\n        width = max(len(row[col]) for row in rows) + 2  # padding\n        widths.append(width)\n    for row in rows:\n        print(\"\".join(word.ljust(widths[col_idx]) for col_idx, word in enumerate(row)))\n\n\ndef main(baseline_report, new_report):\n    report1_obj = Syft(report_path=baseline_report)\n    report1_packages, report1_metadata = report1_obj.packages()\n\n    report2_obj = Syft(report_path=new_report)\n    report2_packages, report2_metadata = report2_obj.packages()\n\n    if len(report2_packages) == 0 or len(report1_packages) == 0:\n        # we are purposefully selecting test images that are guaranteed to have packages, so this should never happen\n        print(colors.bold + colors.fg.red + \"no packages found!\", colors.reset)\n        return 1\n\n    same_packages = report2_packages & report1_packages\n    percent_overlap_packages = (\n        float(len(same_packages)) / float(len(report1_packages))\n    ) * 100.0\n\n    extra_packages = report2_packages - report1_packages\n    missing_packages = report1_packages - report2_packages\n\n    report1_metadata_set = set()\n    for package in report1_packages:\n        metadata = report1_metadata[package.type][package]\n        report1_metadata_set.add((package, metadata))\n\n    report2_metadata_set = set()\n    for package in report2_packages:\n        metadata = report2_metadata[package.type][package]\n        report2_metadata_set.add((package, metadata))\n\n    same_metadata = report2_metadata_set & report1_metadata_set\n    percent_overlap_metadata = 0\n    if len(report1_metadata_set) > 0:\n        percent_overlap_metadata = (\n            float(len(same_metadata)) / float(len(report1_metadata_set))\n        ) * 100.0\n\n    if extra_packages:\n        rows = []\n        print(colors.bold + \"Extra packages:\", colors.reset)\n        for package in sorted(list(extra_packages)):\n            rows.append([INDENT, repr(package)])\n        print_rows(rows)\n        print()\n\n    if missing_packages:\n        rows = []\n        print(colors.bold + \"Missing packages:\", colors.reset)\n        for package in sorted(list(missing_packages)):\n            rows.append([INDENT, repr(package)])\n        print_rows(rows)\n        print()\n\n    print(colors.bold+\"Summary:\", colors.reset)\n    print(\"   Baseline Packages: %d\" % len(report1_packages))\n    print(\"   New Packages:      %d\" % len(report2_packages))\n    print(\n        \"   Baseline Packages Matched: %.2f %% (%d/%d packages)\"\n        % (percent_overlap_packages, len(same_packages), len(report1_packages))\n    )\n    print(\n        \"   Baseline Metadata Matched: %.2f %% (%d/%d metadata)\"\n        % (percent_overlap_metadata, len(same_metadata), len(report1_metadata_set))\n    )\n\n    if len(report1_packages) != len(report2_packages):\n        print(colors.bold + \"   Quality Gate: \" + colors.fg.red + \"FAILED (requires exact name & version match)\\n\", colors.reset)\n        return 1\n    else:\n        print(colors.bold + \"   Quality Gate: \" + colors.fg.green + \"pass\\n\", colors.reset)\n    return 0\n\n\nclass colors:\n    reset='\\033[0m'\n    bold='\\033[01m'\n    disable='\\033[02m'\n    underline='\\033[04m'\n    reverse='\\033[07m'\n    strikethrough='\\033[09m'\n    invisible='\\033[08m'\n    class fg:\n        black='\\033[30m'\n        red='\\033[31m'\n        green='\\033[32m'\n        orange='\\033[33m'\n        blue='\\033[34m'\n        purple='\\033[35m'\n        cyan='\\033[36m'\n        lightgrey='\\033[37m'\n        darkgrey='\\033[90m'\n        lightred='\\033[91m'\n        lightgreen='\\033[92m'\n        yellow='\\033[93m'\n        lightblue='\\033[94m'\n        pink='\\033[95m'\n        lightcyan='\\033[96m'\n    class bg:\n        black='\\033[40m'\n        red='\\033[41m'\n        green='\\033[42m'\n        orange='\\033[43m'\n        blue='\\033[44m'\n        purple='\\033[45m'\n        cyan='\\033[46m'\n        lightgrey='\\033[47m'\n\n\nif __name__ == \"__main__\":\n    print(\"\\nComparing two Syft reports...\\n\")\n    if len(sys.argv) != 3:\n        sys.exit(\"please provide two Syft json files\")\n\n    rc = main(sys.argv[1], sys.argv[2])\n    sys.exit(rc)\n"
  },
  {
    "path": "test/compare/deb.sh",
    "content": "#!/usr/bin/env bash\nset -eux\nset -o pipefail\n\nDISTDIR=$1\nACC_DIR=$2\nTEST_IMAGE=$3\nRESULTSDIR=$4\n\nTEST_TYPE=deb\nWORK_DIR=`mktemp -d -t \"syft-acceptance-test-${TEST_TYPE}-XXXXXX\"`\nNORMAL_TEST_IMAGE=$(echo ${TEST_IMAGE} | tr ':' '-' )\nREPORT=${WORK_DIR}/acceptance-${TEST_TYPE}-${NORMAL_TEST_IMAGE}.json\nGOLDEN_REPORT=${ACC_DIR}/testdata/acceptance-${NORMAL_TEST_IMAGE}.json\n\n# check if tmp dir was created\nif [[ ! \"${WORK_DIR}\" || ! -d \"${WORK_DIR}\" ]]; then\n  echo \"Could not create temp dir\"\n  exit 1\nfi\n\nfunction cleanup {\n  # we should still preserve previous failures\n  exit_code=$?\n  rm -rf \"${WORK_DIR}\"\n  exit ${exit_code}\n}\n\ntrap cleanup EXIT\n\n# fetch test image\ndocker pull ${TEST_IMAGE}\n\n# install and run syft\ndocker run --rm \\\n    -v /var/run/docker.sock://var/run/docker.sock \\\n    -v /${PWD}:/src \\\n    -v ${WORK_DIR}:${WORK_DIR} \\\n    -e SYFT_CHECK_FOR_APP_UPDATE=0 \\\n    -w /src \\\n    ubuntu:latest \\\n        /bin/bash -x -c \"\\\n            DEBIAN_FRONTEND=noninteractive apt install ${DISTDIR}/syft_*_linux_amd64.deb -y && \\\n            syft version && \\\n            syft packages ${TEST_IMAGE} -vv -o json > ${REPORT} \\\n        \"\n\n# keep the generated report around\nmkdir -p ${RESULTSDIR}\ncp ${REPORT} ${RESULTSDIR}\n\n# compare the results to a known good output\n${ACC_DIR}/compare.py \\\n    ${GOLDEN_REPORT} \\\n    ${REPORT} | tee ${RESULTSDIR}/acceptance-${TEST_TYPE}.txt\n"
  },
  {
    "path": "test/compare/mac.sh",
    "content": "#!/usr/bin/env bash\nset -eux\nset -o pipefail\n\nDISTDIR=$1\nACC_DIR=$2\nTEST_IMAGE=$3\nRESULTSDIR=$4\n\nTEST_IMAGE_TAR=image.tar\nTEST_TYPE=mac\nWORK_DIR=`mktemp -d -t \"syft-acceptance-test-${TEST_TYPE}-XXXXXX\"`\nNORMAL_TEST_IMAGE=$(echo ${TEST_IMAGE} | tr ':' '-' )\nREPORT=${WORK_DIR}/acceptance-${TEST_TYPE}-${NORMAL_TEST_IMAGE}.json\nGOLDEN_REPORT=${ACC_DIR}/testdata/acceptance-${NORMAL_TEST_IMAGE}.json\n\n# check if tmp dir was created\nif [[ ! \"${WORK_DIR}\" || ! -d \"${WORK_DIR}\" ]]; then\n  echo \"Could not create temp dir\"\n  exit 1\nfi\n\nfunction cleanup {\n  # we should still preserve previous failures\n  exit_code=$?\n  rm -rf \"${WORK_DIR}\"\n  exit ${exit_code}\n}\n\ntrap cleanup EXIT\n\n# fetch test image\nif [[ -f ${TEST_IMAGE_TAR} ]]\nthen\n  echo \"using existing image\"\nelse\n  skopeo --version || brew install skopeo\n  skopeo --override-os linux copy \"docker://docker.io/${TEST_IMAGE}\" \"docker-archive:${TEST_IMAGE_TAR}\"\nfi\n\n# run syft\nSYFT_PATH=\"${DISTDIR}/darwin-build_darwin_amd64_v1/syft\"\nchmod 755 \"${SYFT_PATH}\"\n\"${SYFT_PATH}\" version\nSYFT_CHECK_FOR_APP_UPDATE=0 \"${SYFT_PATH}\" packages docker-archive:${TEST_IMAGE_TAR} -vv -o json > \"${REPORT}\"\n\n# keep the generated report around\nmkdir -p ${RESULTSDIR}\ncp ${REPORT} ${RESULTSDIR}\n\n# compare the results to a known good output\n${ACC_DIR}/compare.py \\\n    ${GOLDEN_REPORT} \\\n    ${REPORT} | tee ${RESULTSDIR}/acceptance-${TEST_TYPE}.txt\n"
  },
  {
    "path": "test/compare/rpm.sh",
    "content": "#!/usr/bin/env bash\nset -eux\nset -o pipefail\n\nDISTDIR=$1\nACC_DIR=$2\nTEST_IMAGE=$3\nRESULTSDIR=$4\n\nEXIT_CODE=1\nTEST_TYPE=rpm\nWORK_DIR=`mktemp -d -t \"syft-acceptance-test-${TEST_TYPE}-XXXXXX\"`\nNORMAL_TEST_IMAGE=$(echo ${TEST_IMAGE} | tr ':' '-' )\nREPORT=${WORK_DIR}/acceptance-${TEST_TYPE}-${NORMAL_TEST_IMAGE}.json\nGOLDEN_REPORT=${ACC_DIR}/testdata/acceptance-${NORMAL_TEST_IMAGE}.json\n\n# check if tmp dir was created\nif [[ ! \"${WORK_DIR}\" || ! -d \"${WORK_DIR}\" ]]; then\n  echo \"Could not create temp dir\"\n  exit 1\nfi\n\nfunction cleanup {\n  rm -rf \"${WORK_DIR}\"\n  exit ${EXIT_CODE}\n}\n\ntrap cleanup EXIT\n\n# fetch test image\ndocker pull ${TEST_IMAGE}\n\n# install and run syft\ndocker run --rm \\\n    -v /var/run/docker.sock://var/run/docker.sock \\\n    -v /${PWD}:/src \\\n    -v ${WORK_DIR}:${WORK_DIR} \\\n    -e SYFT_CHECK_FOR_APP_UPDATE=0 \\\n    -w /src \\\n    rockylinux:9 \\\n        /bin/bash -x -c \"\\\n            rpm -ivh ${DISTDIR}/syft_*_linux_amd64.rpm && \\\n            syft version && \\\n            syft packages ${TEST_IMAGE} -vv -o json > ${REPORT} \\\n        \"\n\n# keep the generated report around\nmkdir -p ${RESULTSDIR}\ncp ${REPORT} ${RESULTSDIR}\n\n# compare the results to a known good output\n${ACC_DIR}/compare.py \\\n    ${GOLDEN_REPORT} \\\n    ${REPORT} | tee ${RESULTSDIR}/acceptance-${TEST_TYPE}.txt\n\nEXIT_CODE=0\n"
  },
  {
    "path": "test/compare/testdata/acceptance-centos-8.2.2004.json",
    "content": "{\n \"artifacts\": [\n  {\n   \"id\": \"f57aa349cb508f5c\",\n   \"name\": \"acl\",\n   \"version\": \"2.2.53-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:acl:2.2.53-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:acl:acl:2.2.53-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/acl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"acl\",\n    \"version\": \"2.2.53\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"acl-2.2.53-1.el8.src.rpm\",\n    \"size\": 205740,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/chacl\",\n      \"mode\": 33261,\n      \"size\": 17488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4166ad78974742bf94031a0ae6dec78422a5c4d1f385e77ca4f763f01ab4e63a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/getfacl\",\n      \"mode\": 33261,\n      \"size\": 28664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb3a0f064d2c342e81ce7cefcf2b17a0168c4b6ac44febd97fa72dd3d0b08b58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/setfacl\",\n      \"mode\": 33261,\n      \"size\": 42472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fd707e2de514632c687932c710eac52ed80b1279565eae376f6fd2e7c53e860\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52/6aa76cbaf89308b25c7a2fdd6b743b9956a69a\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57/b40394d1514816d39c8366582bac402b86cbf0\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d7/5f66cdfce347bb0d912d2d9772b96fd477fa74\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/acl\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/acl/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/acl/COPYING.LGPL\",\n      \"mode\": 33188,\n      \"size\": 26762,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"70dae30f914234d6\",\n   \"name\": \"audit-libs\",\n   \"version\": \"3.0-0.17.20191104git1c2f876.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:audit-libs:audit-libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:audit-libs:audit_libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:audit_libs:audit-libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:audit_libs:audit_libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:audit-libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:audit_libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:audit:audit-libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:audit:audit_libs:3.0-0.17.20191104git1c2f876.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/audit-libs@3.0-0.17.20191104git1c2f876.el8?arch=x86_64&upstream=audit-3.0-0.17.20191104git1c2f876.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"audit-libs\",\n    \"version\": \"3.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"0.17.20191104git1c2f876.el8\",\n    \"sourceRpm\": \"audit-3.0-0.17.20191104git1c2f876.el8.src.rpm\",\n    \"size\": 283708,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/libaudit.conf\",\n      \"mode\": 33184,\n      \"size\": 191,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d48318c90620fde96cb6a8e6eb1eb64663b21200f9d1d053f9e3b4fce24a2543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/lib64/libaudit.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libaudit.so.1.0.0\",\n      \"mode\": 33261,\n      \"size\": 123336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec5076e0e43aa883903c8b2732d108c1f4b87e8f63e336d01940bf80a19c7274\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libauparse.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libauparse.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 133096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"700cc21a71bfb86d7a041ade05add20ab1abb2b3f0fd92a0547ea0e1ca4460bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6/24ac9e2f0ab806f46f0824a99d7b276881c52a\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f2/4c660a5b7a8ce9bd6ca2c05e3fbf801ea13e7a\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/audit-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/audit-libs/lgpl-2.1.txt\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b66e79716fe80c12\",\n   \"name\": \"basesystem\",\n   \"version\": \"11-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:basesystem:basesystem:11-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:basesystem:11-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/basesystem@11-5.el8?arch=noarch&upstream=basesystem-11-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"basesystem\",\n    \"version\": \"11\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"basesystem-11-5.el8.src.rpm\",\n    \"size\": 0,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"116d6f07e7c59ee8\",\n   \"name\": \"bash\",\n   \"version\": \"4.4.19-10.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:bash:4.4.19-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bash:bash:4.4.19-10.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/bash@4.4.19-10.el8?arch=x86_64&upstream=bash-4.4.19-10.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"bash\",\n    \"version\": \"4.4.19\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8\",\n    \"sourceRpm\": \"bash-4.4.19-10.el8.src.rpm\",\n    \"size\": 6930068,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/skel/.bash_logout\",\n      \"mode\": 33188,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2584c4ba8b0d2a52d94023f420b7e356a1b1a3f2291ad5eba06683d58c48570d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/skel/.bash_profile\",\n      \"mode\": 33188,\n      \"size\": 141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28bc81aadfd6e6639675760dc11dddd4ed1fcbd08f423224a93c09802552b87e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/skel/.bashrc\",\n      \"mode\": 33188,\n      \"size\": 312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30a80bfce3d108d6878cf13dfb1f3a1ea15b141dbdc5bc5803f4ab40a2a39f9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/alias\",\n      \"mode\": 33261,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9e358c5012c2cf9171ec4f7692ac3a1cbc280617b610d77d813653a1d0dfeb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/bash\",\n      \"mode\": 33261,\n      \"size\": 1219248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4613c2eb7267def2782667cbf381499535cf1c750617e117dd66ba678e3d55d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/bashbug\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/bashbug-64\",\n      \"mode\": 33261,\n      \"size\": 7348,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d237f71cc1c5c49634d83927375fafe230ba9624350ebce5aeb0fc2696764776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/bg\",\n      \"mode\": 33261,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6eb427fec008b7f3443dc0d3d374979fec87a7d8c27093512bc0b2d52c4e65ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/cd\",\n      \"mode\": 33261,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efe0fc3df889d7046ebba2d60b7f0f1290be4d4874ffd6cd31372b183fc093b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/command\",\n      \"mode\": 33261,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c92ce8c379784b9593fb98a54666cfd84aedab93004df8b8396abe11f7f62077\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fc\",\n      \"mode\": 33261,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c39aec5916a27223773952cc38f3e8ccfc83c74315d130ea8a80a36577df7d7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fg\",\n      \"mode\": 33261,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1e5f55cb58aee22036e5553bc221f75416fb4ef5dc54ec3d6b62c89ae88e1b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/getopts\",\n      \"mode\": 33261,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f9c9454233a6c5666933c99bed545c72b9af1c835c94b6e6baf28d7cb86530f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/hash\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fbf068f4ae7e8240abe961f4e502b58bfbf79d846d5003e5841162662fa3041\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/jobs\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c72308b9c8028894ff3ec7c79002a2edd4e1f57c6f88136bbc5208fb71595f62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/read\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"861f68383739416356289201125631a7826e722a08ff7906bda76fedf3064105\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sh\",\n      \"mode\": 41471,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/type\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbba5642dd6d04f4272cc24946cae0d3da128b55df84516374b041c9bac42b35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ulimit\",\n      \"mode\": 33261,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf6fda74a767e0361031e9eb221c344977a8cd8d885b0384797213484aedd683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/umask\",\n      \"mode\": 33261,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"987439db80ef5206e72c77ef979391a37a9739c8b30b42d7163b5281cc3514f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unalias\",\n      \"mode\": 33261,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5331b3af54dfd98f900c43b67b079d1da8f0670f25da09429f9f681d77dbffdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/wait\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c888588a6995433b050fe8da3164c5ca60239bf4c3e110b52d6130d7b36728ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6/651902765f4cb2f5f0b2dd9c136b4486083087\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bash\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bash/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"dba6d46666d99d8d\",\n   \"name\": \"bind-export-libs\",\n   \"version\": \"32:9.11.13-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MPLv2.0\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:bind-export-libs:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind-export-libs:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind_export_libs:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind_export_libs:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind-export:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind-export:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind_export:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind_export:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind:bind-export-libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bind:bind_export_libs:32\\\\:9.11.13-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/bind-export-libs@9.11.13-3.el8?arch=x86_64&epoch=32&upstream=bind-9.11.13-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"bind-export-libs\",\n    \"version\": \"9.11.13\",\n    \"epoch\": 32,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"bind-9.11.13-3.el8.src.rpm\",\n    \"size\": 3067009,\n    \"license\": \"MPLv2.0\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/ld.so.conf.d/bind-export-x86_64.conf\",\n      \"mode\": 33188,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efeec53def06657c947f064463d5ebdb68f7c6f9e40cc2e72fc11c263484942e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09/d4bbafff54057b5c88b92d07ae6bf215fd7058\",\n      \"mode\": 41471,\n      \"size\": 60,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/34/1a05526a8a643a65e2ac91780716f264f57065\",\n      \"mode\": 41471,\n      \"size\": 60,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51/54463186dd0f4398259e5bbf17e18db7f477b9\",\n      \"mode\": 41471,\n      \"size\": 62,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba/8b42bbe1100154be105100a7428c39f49aef3f\",\n      \"mode\": 41471,\n      \"size\": 59,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libdns-export.so.1107\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libdns-export.so.1107.1.0\",\n      \"mode\": 33261,\n      \"size\": 2341344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99d95769454ef687eb21d276506926fe3c48d626b6d36950bb0c8daa1130f6d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libirs-export.so.161\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libirs-export.so.161.0.0\",\n      \"mode\": 33261,\n      \"size\": 45272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7be72806eeca28d39d5f29d6f45a647a53cd1934f04fa5f3cf4f7821081c951\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libisc-export.so.1104\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libisc-export.so.1104.0.0\",\n      \"mode\": 33261,\n      \"size\": 463840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c75f9d66746b525b75524d0e1789d276c573464b350dbec5471b137ee5dafe5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libisccfg-export.so.163\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/bind9-export/libisccfg-export.so.163.0.4\",\n      \"mode\": 33261,\n      \"size\": 186816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efadb45453dd4dc64f60f8d08211ae66abc64c1949b4364dbcbc91c249cd95dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bind-export-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bind-export-libs/COPYRIGHT\",\n      \"mode\": 33188,\n      \"size\": 29711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd02c93b8dcda794f55dfd1231828d69633072a98eee4874f9cf732d22d9dcde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f86172b3b79178e1\",\n   \"name\": \"binutils\",\n   \"version\": \"2.30-73.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:binutils:binutils:2.30-73.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:binutils:2.30-73.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/binutils@2.30-73.el8?arch=x86_64&upstream=binutils-2.30-73.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"binutils\",\n    \"version\": \"2.30\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"73.el8\",\n    \"sourceRpm\": \"binutils-2.30-73.el8.src.rpm\",\n    \"size\": 24856745,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/addr2line\",\n      \"mode\": 33261,\n      \"size\": 34256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61414aa9cdd8dea0a971b0c8d72c2841b1ff6e4553f7272a455030c523b6ac4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ar\",\n      \"mode\": 33261,\n      \"size\": 63584,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7488d5757725a0199e6dd0e1c9b65cba6a84c9e13a785f78892d9e560502cd7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/as\",\n      \"mode\": 33261,\n      \"size\": 944496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"572bce3b5ed8df3dbf8b7365314516c5a7be0cca3fda450436ebf05f77ac759b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/c++filt\",\n      \"mode\": 33261,\n      \"size\": 29768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fa1957d8185bb01ecf0905225e30e690db965899d1fa7f1b656dec1dcce365e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dwp\",\n      \"mode\": 33261,\n      \"size\": 2271304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c24de352fe0adfe442b2b961424a40b8300e31d5d71d97017698a01826567d3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/elfedit\",\n      \"mode\": 33261,\n      \"size\": 34280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"108449c108575cc682089dca455413ec71ab36d1d915f19b6a4df2dd5d0f832a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gprof\",\n      \"mode\": 33261,\n      \"size\": 106024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e656dbe70c0d2fe623c66bbfd03c9e6f2b712bc978ee2909dc47bf81a130e216\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ld\",\n      \"mode\": 33261,\n      \"size\": 2505504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/bin/ld.bfd\",\n      \"mode\": 33261,\n      \"size\": 1789288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05401f94322dd5d5ff0503cd530e212ce7b9f531ef7a1a7826c6901fb92ba916\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ld.gold\",\n      \"mode\": 33261,\n      \"size\": 2505504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"028c58d3e8be4c3af069ffbf45944a6eb1944f66c2bca4fd7b71e2de71c1a5f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nm\",\n      \"mode\": 33261,\n      \"size\": 47536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15eb90071d7e39bfb8f11e488f7c9ae5b5d5df17545964b8dbd964da8bf234a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/objcopy\",\n      \"mode\": 33261,\n      \"size\": 246032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"363d47f784aaaf6f817054eaa3579bf09d5db60712ce925f0055b99eb164f35c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/objdump\",\n      \"mode\": 33261,\n      \"size\": 425768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"158ce391fdfbd1a55243f318ee716a381192951faec14105fd28cda3dee7c30e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ranlib\",\n      \"mode\": 33261,\n      \"size\": 63624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34402fc11dd92e56e3af17d64a4af012795aacc7b5bf374062a32f0d60b5a8ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/readelf\",\n      \"mode\": 33261,\n      \"size\": 635576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15432fe05b09abcb0f85b0a2177e996a17c0b8b5be147d2d850f205ad53b509a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/size\",\n      \"mode\": 33261,\n      \"size\": 34216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b066d218f64eca61a1ad7659c769d2cf5a331062710a3ce2a5d382ea5ce81e75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/strings\",\n      \"mode\": 33261,\n      \"size\": 34280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6a38b6ebb17fcf9d66fe912c97b734a4875d504307e6c3d5d060882f3eaa7a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/strip\",\n      \"mode\": 33261,\n      \"size\": 246032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00b183e11bd79f8d1240dce339062ea06046f240c69475faef400f6d3f4a749e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10/5e64f371205ab475f08a0ad1ca125e53746466\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/e7eea575a128c6e0e683715e161099d6be6523\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/6330c59d728ba7fc4c0c0c0687fa414ecaa600\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27/3506d29603cdebfa58b68d5d8b2601772ef27d\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/32\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/32/2fbb39c60f97611e4226f8aef765fa7080f7a9\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/852bc540301d622f33ecaebdf4f2685d040f65\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d/18e91e4c61403d99ec7d14d936f38b1c039f5d\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/8bb1466a706f71ac888cee769fcde89c74dc33\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d/1a868155c0ffb8aecbb01084cb12e630fcaa87\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d/34d839a732fa0f7ad22919a4120728e431f842\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/596b0999d8d9fcb69020b6f590bc74e33a317d\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/9c5c0474ffc58bb7dcd70ca45b09fca917df1e\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/a52c08ecacf08cc660c24dbb89298575245f7a\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4/25cb31116c56a43497d1ff1be52543af14b57e\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/fb79d0921e91366698e1f22ca3305c53025d19\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/c2e1c7b0007bba0f62f09bd955c5db8433a3d6\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/c2e1c7b0007bba0f62f09bd955c5db8433a3d6.1\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9/f9842e7bd2c0e398bd987f4dba5fb7219ab049\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6/3a50f844e5e53d1baf6b25562554119b69ef38\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f9/2b7304834760fe5ec0fa2ad10e8816c7ec5ddb\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libbfd-2.30-73.el8.so\",\n      \"mode\": 33261,\n      \"size\": 1470456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d289670b78aef9d553e1f40251f021fce77089e8cec35ec48fab9fc30c24ebf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libopcodes-2.30-73.el8.so\",\n      \"mode\": 33261,\n      \"size\": 1741072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b32d13629f41e415587106f738600ac175dc1bab50b2d0b577afdac3bd9db598\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/binutils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/binutils/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18002,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/binutils/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 25291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/binutils/COPYING3\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/binutils/COPYING3.LIB\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b36cc5de0960501e\",\n   \"name\": \"bzip2-libs\",\n   \"version\": \"1.0.6-26.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:bzip2-libs:bzip2-libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bzip2-libs:bzip2_libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bzip2_libs:bzip2-libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bzip2_libs:bzip2_libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:bzip2-libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:bzip2_libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bzip2:bzip2-libs:1.0.6-26.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:bzip2:bzip2_libs:1.0.6-26.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/bzip2-libs@1.0.6-26.el8?arch=x86_64&upstream=bzip2-1.0.6-26.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"bzip2-libs\",\n    \"version\": \"1.0.6\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"26.el8\",\n    \"sourceRpm\": \"bzip2-1.0.6-26.el8.src.rpm\",\n    \"size\": 77229,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55/a4e7bc5de12f4b08532d85c1315e0edf10afec\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libbz2.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libbz2.so.1.0.6\",\n      \"mode\": 33261,\n      \"size\": 75328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e34b29aee8fac50ddcb1f2099e95de88789e173b63760044b166fff779483d0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bzip2-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/bzip2-libs/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"305a90fe65807517\",\n   \"name\": \"ca-certificates\",\n   \"version\": \"2019.2.32-80.0.el8_1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ca-certificates:ca-certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca-certificates:ca_certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca-certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca_certificates:ca_certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ca-certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ca_certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca-certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ca:ca_certificates:2019.2.32-80.0.el8_1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ca-certificates@2019.2.32-80.0.el8_1?arch=noarch&upstream=ca-certificates-2019.2.32-80.0.el8_1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ca-certificates\",\n    \"version\": \"2019.2.32\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"80.0.el8_1\",\n    \"sourceRpm\": \"ca-certificates-2019.2.32-80.0.el8_1.src.rpm\",\n    \"size\": 993761,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/pki/ca-trust\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/README\",\n      \"mode\": 33188,\n      \"size\": 166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c7b9287c41c171c64b358fc7331b8a9ae969fc2d00d997d88bcbf4da0de598a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/ca-legacy.conf\",\n      \"mode\": 33188,\n      \"size\": 980,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"400b96da374503fa6b6350a867347082d0c90e05ba4d02cc6b51b11229199c4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/README\",\n      \"mode\": 33188,\n      \"size\": 560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"146ff96c60a8ee32bbcf2da59d624d6ecfbab7ef7442529d46d8d63064d8ca58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/edk2/README\",\n      \"mode\": 33188,\n      \"size\": 566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"757c28eddb0634b74e6482d16324193be27eee41864c1f96c447020dae14b44f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/edk2/cacerts.bin\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/java\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/java/README\",\n      \"mode\": 33188,\n      \"size\": 726,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bb8781320fb3ff84e76c7e7e4a9c3813879c4f1943710a3b0140b31efacfd32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/java/cacerts\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/openssl\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/openssl/README\",\n      \"mode\": 33188,\n      \"size\": 787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c812d1ec8ce5bde2216cc42be33021d6345fbea05c14f50c52191a38c175ea9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/pem\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/pem/README\",\n      \"mode\": 33188,\n      \"size\": 898,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27362e773c8b6bb065a455a66badb05e2652720bab8ade9ab91f0404cf827dab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem\",\n      \"mode\": 33060,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/source\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/source/README\",\n      \"mode\": 33188,\n      \"size\": 932,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86184318d451bec55d70c84e618cbfe10c8adb7dc893964ce4aaecff99d83433\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/source/anchors\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/source/blacklist\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/ca-trust/source/ca-bundle.legacy.crt\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/pki/java\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/java/cacerts\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/cert.pem\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/certs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/certs/ca-bundle.crt\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/certs/ca-bundle.trust.crt\",\n      \"mode\": 41471,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/ssl\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/ssl/certs\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ca-legacy\",\n      \"mode\": 33261,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de73a03a0cde4aff31ce3d5e27eecd03284a637c102e46b9e47d4369b5152ae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/update-ca-trust\",\n      \"mode\": 33261,\n      \"size\": 1268,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c0c0600587db7f59ba5e399666152ea6de6059f37408f3946c43438d607efdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-legacy\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-legacy/ca-bundle.legacy.default.crt\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-legacy/ca-bundle.legacy.disable.crt\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-source\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-source/README\",\n      \"mode\": 33188,\n      \"size\": 937,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d2e90b6cf575678cd9d4f409d92258ef0d676995d4d733acdb2425309a38ff8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-source/anchors\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-source/blacklist\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pki/ca-trust-source/ca-bundle.trust.p11-kit\",\n      \"mode\": 33188,\n      \"size\": 979015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9bf832ad4e026a464d475cdc7468d8ce286a3c6513d6ef507b06a08c55e293e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"badeeeb401ac7325\",\n   \"name\": \"centos-gpg-keys\",\n   \"version\": \"8.2-2.2004.0.1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos-gpg-keys:centos-gpg-keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos-gpg-keys:centos_gpg_keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_gpg_keys:centos-gpg-keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_gpg_keys:centos_gpg_keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos-gpg:centos-gpg-keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos-gpg:centos_gpg_keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_gpg:centos-gpg-keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_gpg:centos_gpg_keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos-gpg-keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos_gpg_keys:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/centos-gpg-keys@8.2-2.2004.0.1.el8?arch=noarch&upstream=centos-release-8.2-2.2004.0.1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"centos-gpg-keys\",\n    \"version\": \"8.2\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"2.2004.0.1.el8\",\n    \"sourceRpm\": \"centos-release-8.2-2.2004.0.1.el8.src.rpm\",\n    \"size\": 3370,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/pki/rpm-gpg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\",\n      \"mode\": 33188,\n      \"size\": 1683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"146059788b214d7ba0dd70c1cf21111e594c6cfde201da8a9a88fe7101be8a78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/rpm-gpg/RPM-GPG-KEY-centostesting\",\n      \"mode\": 33188,\n      \"size\": 1687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9c03d66017969a4e7cc2378cac520d726d87e1f24422ec28a96065e43ce8c4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7d28eafc074b353b\",\n   \"name\": \"centos-release\",\n   \"version\": \"8.2-2.2004.0.1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos-release:centos-release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos-release:centos_release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_release:centos-release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_release:centos_release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos-release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos_release:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/centos-release@8.2-2.2004.0.1.el8?arch=x86_64&upstream=centos-release-8.2-2.2004.0.1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"centos-release\",\n    \"version\": \"8.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.2004.0.1.el8\",\n    \"sourceRpm\": \"centos-release-8.2-2.2004.0.1.el8.src.rpm\",\n    \"size\": 25430,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/centos-release\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2270da6918b57d65c4fdbe6a7d0ec09eafeb786f3649ffaa98d331640842ea19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/centos-release-upstream\",\n      \"mode\": 33188,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68116d88b20b07eb9ad07d0434bd99f7e542b135537419e211d6302129e049f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/issue\",\n      \"mode\": 33188,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"188029a4a5fc320b6157195899bf6d424610d385949a857a811d992602fa48c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/issue.net\",\n      \"mode\": 33188,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17657f4ee63966a9c7687e97028b9ca514f6e9bcbefec4b7f4e81ac861eb3483\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/os-release\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/redhat-release\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rpm/macros.dist\",\n      \"mode\": 33188,\n      \"size\": 66,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac1de6c6cd2c05b8411d4ab341e98c64d7699606900f628de5e7834c96c5f818\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/system-release\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/system-release-cpe\",\n      \"mode\": 33188,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54c701dd1ed293e03c931055aceb61b0cb5cd4aa61908b7e42c0d5f4ce8a719f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"c\"\n     },\n     {\n      \"path\": \"/usr/lib/os-release\",\n      \"mode\": 33188,\n      \"size\": 420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fca2dbc22c40311925727621cf8ec233d049882de0eef7e45d5c083e251918d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-preset/85-display-manager.preset\",\n      \"mode\": 33188,\n      \"size\": 264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac3e811c49cac013f48b46a20a514b1dbc1a55831498dd4d211bf111a0faa3a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-preset/90-default.preset\",\n      \"mode\": 33188,\n      \"size\": 3982,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2547732c5fa871ff31f0a770340b0fb3d4a35fac213a1f691e8ea9356f1d75c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-preset/99-default-disable.preset\",\n      \"mode\": 33188,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3127b197b9eae62eb84eeed69b0413419612238332006183e36a3fba89578378\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/centos-release/EULA\",\n      \"mode\": 33188,\n      \"size\": 298,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"070988e97cf5f7a52ad927dcf03f75a93ee3c9257099030ce637431e86847f2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/redhat-release\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"a6c75679d548e381\",\n   \"name\": \"centos-repos\",\n   \"version\": \"8.2-2.2004.0.1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos-repos:centos-repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos-repos:centos_repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_repos:centos-repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos_repos:centos_repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos-repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:centos_repos:8.2-2.2004.0.1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/centos-repos@8.2-2.2004.0.1.el8?arch=x86_64&upstream=centos-release-8.2-2.2004.0.1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"centos-repos\",\n    \"version\": \"8.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.2004.0.1.el8\",\n    \"sourceRpm\": \"centos-release-8.2-2.2004.0.1.el8.src.rpm\",\n    \"size\": 9660,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/dnf/vars/contentdir\",\n      \"mode\": 33188,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96171c133b33b6db82fe59ca91d45a5dc2803bba19501f00e06d243514da1f76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/dnf/vars/infra\",\n      \"mode\": 33188,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"394924622dfba63003e3b0eb4bdf696c73c71e55c83c12d5a74e87a31c944779\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-AppStream.repo\",\n      \"mode\": 33188,\n      \"size\": 731,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e3a78178a75c13d71cfc2fafb3072a009733414a90802b2b67ccc7279e050cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Base.repo\",\n      \"mode\": 33188,\n      \"size\": 712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee7da6f7be6623cc6da7613777def9c9801073d725f686eb4e3812584e3e417d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-CR.repo\",\n      \"mode\": 33188,\n      \"size\": 1043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f781d85bd6ee94a6017abcf31751eb178138037769c51c59fdf978976d0c6f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Debuginfo.repo\",\n      \"mode\": 33188,\n      \"size\": 668,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4f39ea86eb19b225d839fb87e00ef2f739fc3f1bc69bae4ef59041706d72ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Devel.repo\",\n      \"mode\": 33188,\n      \"size\": 743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2568f2cf213079788362f36dfb4988512a91ae608412814e61428161061db88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Extras.repo\",\n      \"mode\": 33188,\n      \"size\": 756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"337836cba39c52316fae9f5ba867ad7d7e1ade8134a47ea03b2c408639df0915\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-HA.repo\",\n      \"mode\": 33188,\n      \"size\": 738,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54b661466dc2496653be171a855f2b4461aade859279c6de7a88cb271be71e69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Media.repo\",\n      \"mode\": 33188,\n      \"size\": 928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc8973f360fbca2f501eca1e6bc2578a95f566fcaa6973fbc18e8c1fc0a1df43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-PowerTools.repo\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55b140630a42bd023ff40be2cf0d5fab51f89718f5d4a908ef64bd9b3538b120\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Sources.repo\",\n      \"mode\": 33188,\n      \"size\": 1382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"786f6399086b63b88366cbea5d8efd2a5316a5c75d787b6d0e88c726b0db59e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-Vault.repo\",\n      \"mode\": 33188,\n      \"size\": 74,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"863945c3ab656685e362bbb9f0843ddd2af74fcb4acadb5f4734381b990ed793\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-centosplus.repo\",\n      \"mode\": 33188,\n      \"size\": 798,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4e068d64d48026d29ad38f4d28800daf61e24655c0914d509fb22548e19fbc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.repos.d/CentOS-fasttrack.repo\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"785b6808af71111422b319e36501afde57ee58c6a3473476df2dded7676133fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8ecf929ac28a117b\",\n   \"name\": \"chkconfig\",\n   \"version\": \"1.11-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:chkconfig:chkconfig:1.11-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:chkconfig:1.11-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/chkconfig@1.11-1.el8?arch=x86_64&upstream=chkconfig-1.11-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"chkconfig\",\n    \"version\": \"1.11\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"chkconfig-1.11-1.el8.src.rpm\",\n    \"size\": 791234,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/alternatives\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/chkconfig.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/init.d\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/init.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc0.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc1.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc2.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc3.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc4.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc5.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc6.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc0.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc1.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc2.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc3.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc4.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc5.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc6.d\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/sbin/chkconfig\",\n      \"mode\": 33261,\n      \"size\": 47208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0a37a172d653fa591bdb772cb7394e425a8dafb72d76d6f29742c5f548dd497\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/1b633fbb12ce80a02cadf19967f94df24884e6\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/46ff08e4360cc9b48bc6b6e4736e7da4e1ee52\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-sysv-install\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/alternatives\",\n      \"mode\": 33261,\n      \"size\": 34128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57d4e9d8d4261558fd60e0b5a02b355eb314cdbe518391d722e9522f2f75f87b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/update-alternatives\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/chkconfig\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/chkconfig/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/chkconfig.mo\",\n      \"mode\": 33188,\n      \"size\": 8371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24b620d64b5a473d8101cda6b56424c5ae74610e42ba7bd719825ddcf5c9c578\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/alternatives\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"35744f2806ba29bd\",\n   \"name\": \"coreutils-single\",\n   \"version\": \"8.30-7.el8_2.1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:coreutils-single:coreutils-single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:coreutils-single:coreutils_single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:coreutils_single:coreutils-single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:coreutils_single:coreutils_single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:coreutils:coreutils-single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:coreutils:coreutils_single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:coreutils-single:8.30-7.el8_2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:coreutils_single:8.30-7.el8_2.1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/coreutils-single@8.30-7.el8_2.1?arch=x86_64&upstream=coreutils-8.30-7.el8_2.1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"coreutils-single\",\n    \"version\": \"8.30\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8_2.1\",\n    \"sourceRpm\": \"coreutils-8.30-7.el8_2.1.src.rpm\",\n    \"size\": 1356273,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/[\",\n      \"mode\": 33133,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afd97bbd643bfe1473794af167cd5c6f44fe449681033e3584b40b836f624b4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/arch\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"209bae4071910ef54b4a3bd302059bf7e00870d8bacffcd7c5489425f37ed16f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/b2sum\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9116333c88eee22e55e30db1ad088483f52a3024b624356416873bc14fad9359\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/base32\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff10172686b6db691ae57530dff6cd14b980cbba7ed81a8dcf81bd42dd7bb23b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/base64\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fed1b291454a61812e605fd06b04f915ef7e5436cfc1ee17f96523f56c2fbebf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/basename\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a1e6804fef8ca36d39b008210b187dc4a82c456919574e61e17ab40c033589c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/cat\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6138c9502337f42763d627e4b665dd4fd66f26a987891d0a7e8313783f689ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chcon\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c191edddab15fd046170527d27f5f2a864684e118020ae3cab9a8c4ce7e6cc8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chgrp\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1d37a0d06d1d5db7180b10eb367365214de3c458a356efa32960312dabf9bde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chmod\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ee704ee6e399f29d23b37223b4c80a1a5a39fd0752c6d913d9bcb176b4bb930\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chown\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"497a658c90080afd7bba33da8297fdb1be37cf36a3465a344164a8cb14390b53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/cksum\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09eada4c0374c3c565ebe1f8965bce9943eb7c2790ef031d7b638b3f191b5592\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/comm\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7449de734af6ab89331fc34dabfd40d10fa799369a52fd9df7c3829ded1d0261\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/coreutils\",\n      \"mode\": 33261,\n      \"size\": 1304144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2ce19f3905edd29b0a55c3317ae783e337d70d1e82b3969a98436189007df07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/cp\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79c39d67b7969b943045e80485f9dc3202a11ddfc5c9f7fdb4287216d0255a90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/csplit\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"406a678a5b17869b4d148ad1924dd9ff3f2496e6f8b1dde6572edb355ded6316\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/cut\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7448d9549e82dc4aa8917fc2bc2c49ad3f99e85e0c4f9a0957926a1f33c60421\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/date\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71fb38657d2a08ad7fa8a7d6d44b54b4a63b2b0ca654e7865c0993443fe36608\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dd\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afc84e0b7f78721d72cc70e5207c0a948889401b1ae985f88fe5557010898d16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/df\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7140d87bcfc96e33d0e40e746734dfa02fb2973428059a83f267f490acf2924c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dir\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dfc129738cbf6c04a0a6bce388f6cabe0212abfb4f7011997477d657c552b2f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dircolors\",\n      \"mode\": 33133,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db0b3071d1896d4cb925e2539b959071d3dd028501e989ae051a7cc2923a131d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dirname\",\n      \"mode\": 33133,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79eb20166b1c6e3c720bbd9d1b7093dba753747f4a9c86c20efd24cfa1b7cd02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/du\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f987dcb68ff9790a7da315f18dba495258e0689c9c145cba4ae33bbf1153ef1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/echo\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e2e65807f2d7416260cc04c62a37b6aa14c3336632709406a6eb5e20a25676e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/env\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3164957405d820d74c59ce94cbe8e20eafa4d25366f53e4de9e3f4a149a9576c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/expand\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2f2c111df45d87cb069e96a9152847d31a40d2357e770d4c943d04afe6e1acd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/expr\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27afd110fdd08ce37ae374cdb19348dc82db58b2a299d601b1a202e524ffad7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/factor\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee9ee5a137e0591cd9cb7c833ea6d132715452b6e8ec15a521d5656825600a51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/false\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"deeb84f2992538f7fadfc6946e4e34ce8b491c5d15aac723f2545fc53423609e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fmt\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64eb499e5fcea80a3132b009285321317b2660173d3052ca3dc9c3871f07e0e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fold\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1af788b3e940772d2d061a2868af5e034faf977d2d7158cbefa3e56a05304049\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/groups\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80c0a1f602b5a30973ef4aff1549ab8f0c57415f1a1269c60fd463e51bc599f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/head\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9265e0e806df2362b9e6b476b8b16cef39979c6e1ec9f51aae90f202b94a6d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/hostid\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a755dbdf0e3c215642c5dad5c02c6b69f1c533fc253aa5206e634cae9a601fff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/id\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44cd8c4e4d7c0abda1cf8f4d3cb8c3eaa3a099e3583226a71b7b2717862293d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/install\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1e9d54276f52269bf3f3c4787159a8582d093acb918026a389bb03ae886424b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/join\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b4380b504cfba01d655f9102279abc3fa6105a4e107aa409912de8407ce7514\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/link\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"821714203f91ff6532c52ae3f871e0130435b6ba1f1f08d2d1f7bbc6693c0caf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ln\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"085d5f728f31abf16f2e2b6f848b10e987c2ddcf160cb9a8f12378de2b6c6657\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/logname\",\n      \"mode\": 33133,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55fbba98b8cf7ccc3d0920e6630b525360603b1db4c72c955e6d3a09f8602b68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ls\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"309b3c9a3246361ec0338641aed3c14e7f91e23e7cf10de000c75135ba99fddd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/md5sum\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec74d410b372b48ef2b522cb903d48184f299c9290e5fa430fda73009e1ba468\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mkdir\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d79925b34d75033957c123dcdb7d9d74bbdf2135ae401aeecd1c7fdbec0541b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mkfifo\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3abebd9dd438dfffcd6f958488172a3b403dfa0eac1ac0e1b8c26e94b61472c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mknod\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0aea7b102cdd165cf69e86c9b72bf9f1610f063a41379ff98e6abd7767a0f0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mktemp\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79dab18e96e909ca19e901731bd14bbd182327ed34050ad15d3c22186c112601\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mv\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ee04af6a9560da8304d298561d76ecc42ce167cd37496cbbee5f7975b2b6c83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nice\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05dd64c5d88a6308828a66bdf10fe43a1d762bdf9867eddd1613ed95abcd9eb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nl\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cebdddb5c913efd5a2e2056790c58a4b1f0ea753ab776209f620c8aefaa88d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nohup\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d120028b00ffd10dc5d2bdb8725cccd994206809a17897b7dfa7d9852b4a109\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nproc\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"802d57a2bb4a148ce86b5987d42de833613df533033939621c98af7c83ed10a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/numfmt\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2d0a24b66f7e706d20cdbf400f0fb170c9737de1f33707639ac83b0c6eb1fe7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/od\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28cee197c00cc74e4020bc2c63ef4a47269bfc42a0514e8ac39b93d1c9fb5c79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/paste\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bc3ecc3066cf717ff77c775897786c7ffbc96d8b4e7bf74ac0d1b1429840cbb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pathchk\",\n      \"mode\": 33133,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c75cdb9159c70035a4fb0c266c75b7046a5e0c65770f1abd3955169ee84495cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pinky\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99376200da341d1d415806ebe99b80bdab70f8e9fecc9faf16b97dd9a0038062\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pr\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a01cee18df2195a84845ab441c0860ccd2e60fe8420165a46450c4215759c2a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/printenv\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d28a352be84024a34f072b7c6a26b94aa87a2e76b90f437107d9b7eeebd0053c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/printf\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"129f7bcc2ae4d017b79e41c979ebfa18fc9052d4186538c25d736bfd2e397280\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ptx\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d3ecca846d94b352b5ba97887e413980af43df47f393f860ed07ed3af0ef681\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pwd\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efabc0b34ff064d6a99456f5f74490573f8b9db6d1bf9450ad2e0aae0402b89c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/readlink\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b84234996da12c81e5762285b91ae7681342e012612df920b94ae0bd1557884f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/realpath\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"504d523de86fa1463b8d96abf3cdd7ec8e85571593bc95650130c83ee8ff20cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rm\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c909af3f4c8ae30d059b96a9cf7b097db39159d161622b95190d60d25a5db776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rmdir\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e999e3d0c2ccfeb001f513f6a6f51c5121327894ea279e2682b4b8272c4bca8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/runcon\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ee2793317816a3898f317c53f3ae9324f9e245e52e9df7014553daeaf99b9f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/seq\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb11a10b8a0f5c8e974b844f2fb6c94f81d50ed2508f4583235d4cbe8bc0fbc6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha1sum\",\n      \"mode\": 33133,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5e5033951d2d051b6a8412aab455294f2ec529aec279e2bc1600d21dd242a7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha224sum\",\n      \"mode\": 33133,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7737b55fb338ea353ae400752f720edbcf38ef09b84ef9be9985195853a62d0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha256sum\",\n      \"mode\": 33133,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"377e96d9304a3e91119a58155becca958b4dc286c203ea2917ebeadba183db1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha384sum\",\n      \"mode\": 33133,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94e88e0dcf5ee93b44fed867bf4e42e737dfac9ca957247489264bbf1b2f6ec7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha512sum\",\n      \"mode\": 33133,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23809accfe32a32da5b0fdb65f6d638f96f3c48be4fa59c41a04067677daec6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/shred\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b06cd470398f9e5505b962475935ce2922ad8b8f24d469e55ca398c6a4c840fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/shuf\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76918b2e6df2cd31f4e6812766b003fb4a037507d12e089e4a513f8f13c312e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sleep\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96f0366d3535f1556981c0ccc68c160328eb6f2757971e15642d585b2cd1f344\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sort\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7db440f4b4270d53050569407160d7f7c23fd7832394ce9bfbbc0b1d6e7e7dac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/split\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b963841b57f729c71909fe9d4c5f1644aea4260b736b37050b35f18ab82b4ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/stat\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f6ffbf89d8463633790130b1d79999e1f5ef72fa63ac128eefc19101116b4d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/stdbuf\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ca8854673bbe7597c0be2ebc1ea1248e16a022e07216fe5ff2af5af1408cd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/stty\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"347183bf373a494eb701af0b8f2c2c7d296a6ac1a90fad3cfe4745d236bd0dc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sum\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f443e4c6d5063c4affc2b9d12852eab4c4eb675e323603441b0cc96fb9c2389\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sync\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f3ecf316cc8d0461cdc69e55f97c575a2c37f250e77461ac6241d049d65b177\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tac\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"054324a3bf86ff8d7de940b38abfea90434de3f7e6dbfb68c28fef13ab194a4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tail\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c84b690e840c9297566787aa939370f9b2e181e01c91b727e77ae07865f06c1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tee\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97a3eca66552d324751b1e8e5af6ca4295328b98fa57bc43f1f81cc0a53e197e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/test\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12f025e9fc03f2dde8653295c2c685c1a010120b768a5becc53f61a652469005\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/timeout\",\n      \"mode\": 33133,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a58c5c3de98fedf0d7199e4e51e6d241169678259b99c21c75e5bbc17b885662\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/touch\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc4165b10af3012c31ff266d74ec268c5f0ebf0521faf2596141d1b33b9c1309\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tr\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3bb9a0ff998a6452a2652ad9fe93913ed17426812718c0618b769c0a45859be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/true\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73afb60197c9c64805d2b4ab95efdee8646f8248ff800de2575a11eed8f9f08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/truncate\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e58155261499fd6ba41e6f6cf6b696529f929b2ea82d710b8d0467e28f9eb6b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tsort\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f93ec3a790a5f9283da66b22aa307a9289ba40a6a9f413c74dbb18d243c71da2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tty\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47fb87400000912b988e1a8708d99287751c976b942ffb5dacc21316d07fd6d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uname\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"050964cc46affadcf00d817106c47a6bde087fc483fa0643e168a816b76de608\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unexpand\",\n      \"mode\": 33133,\n      \"size\": 55,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dd5e2f796993334c5d66b9d2258c48d447fcdc2762a6aa0987590f5384552cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uniq\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e91d5ac599019cb960094ed9a9b9973d7c1980b209dcba3de2f1549e85a0cd2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unlink\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9a4afe24003912290d8a8fed7781afeeee64bb88a53cfd5b2f820ab6df355c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/users\",\n      \"mode\": 33133,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8f7ba3fd846a96259a17e8785a172d653fdfb03c1507f95aeeb8d5461407b5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/vdir\",\n      \"mode\": 33133,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fff208202d47a5ff1daec8820f11555149ec8d9d9b39235e14555c3a14bd8572\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/wc\",\n      \"mode\": 33133,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"709f6b9228d11ea5bf6298c953c98a3d11ec89a50916646494661aca8c32a775\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/who\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f2f1a73f39388b45a8ee56e44abe0a084d6849ba4c432130f9ef04bc6a58e4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/whoami\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"112e9bdfc8975c4413bb940c0ab36034902d0037b2b25d24f2d1b4f93a32bd6a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/yes\",\n      \"mode\": 33133,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"614d5aab2a46b047fb5160018dd4f1c7655f792a467dcb8abea75cbec5579b08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/56d7c71eed6803962c38007ecf07d4c25c8c06\",\n      \"mode\": 41471,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f2/ae7bc7969e6de6f4eb0fc802b5f82225d64a66\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/libexec/coreutils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/coreutils/libstdbuf.so\",\n      \"mode\": 33261,\n      \"size\": 11600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"362065efa6c314da7c0228a8215dcf55e38e01571061b577b5cff79e3f946382\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/chroot\",\n      \"mode\": 33133,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"739f7aeb037de1264e7801b4a2b01b6e98bf66b1fe81c751989241de6f878b19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/coreutils-single\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/coreutils-single/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ca16971f269393a0\",\n   \"name\": \"cpio\",\n   \"version\": \"2.12-8.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:cpio:2.12-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cpio:cpio:2.12-8.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/cpio@2.12-8.el8?arch=x86_64&upstream=cpio-2.12-8.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"cpio\",\n    \"version\": \"2.12\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"8.el8\",\n    \"sourceRpm\": \"cpio-2.12-8.el8.src.rpm\",\n    \"size\": 989536,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/cpio\",\n      \"mode\": 33261,\n      \"size\": 185320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"581886abeb293212c9c27705f5363969939f232b0d0bb71ae3854a2a306a3a51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90/89581371e22960dbec4479efad9042e5fc150e\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cpio\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cpio/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35068,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"79da1c68160ab938\",\n   \"name\": \"cracklib\",\n   \"version\": \"2.9.6-15.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:cracklib:cracklib:2.9.6-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:cracklib:2.9.6-15.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/cracklib@2.9.6-15.el8?arch=x86_64&upstream=cracklib-2.9.6-15.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"cracklib\",\n    \"version\": \"2.9.6\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"15.el8\",\n    \"sourceRpm\": \"cracklib-2.9.6-15.el8.src.rpm\",\n    \"size\": 239047,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a/b3ca352642eddf459647af45d10196b68e803e\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/f06ecb760830a44054a2dae5e46d37c0096bdc\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45/eadd32bae2bb25d417c9c1c246cf6fba760ba6\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/d2f881301c3bb88a1baa2a50115429de33b825\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcrack.so.2\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcrack.so.2.9.0\",\n      \"mode\": 33261,\n      \"size\": 46232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0130a8325893b5b540902e881bc13f223ed41c87d77453ae7dec5dfb61462a4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/cracklib-check\",\n      \"mode\": 33261,\n      \"size\": 13360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59fdd9ba1b742a1344634248065b0cddddd6ce94e0705675eed56f1bb599e3d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/cracklib-format\",\n      \"mode\": 33261,\n      \"size\": 251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa9c53f74aa35d417a2520f2545addcd5fc0f6b59324e51834740b39f13c1aaf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/cracklib-packer\",\n      \"mode\": 33261,\n      \"size\": 13368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b158f64c08ad5d3251f09b1886deb80bf3f41bf800771b01cf0b17c4eb69a836\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/cracklib-unpacker\",\n      \"mode\": 33261,\n      \"size\": 9248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b246dd1e219141f712daa68dfde2c31080709e3e0ddc8dc5ae830306fe49051a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/create-cracklib-dict\",\n      \"mode\": 33261,\n      \"size\": 990,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f0691c00d8cea3ac2f69c7a5e7b2f97eaddab2d792ef4e969f6bab544314dcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/cracklib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/cracklib/cracklib.magic\",\n      \"mode\": 33188,\n      \"size\": 360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce9de85e27f60a8905bcdfd3554df17ec49c9cd2d23342c6f45af9fb0e266965\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cracklib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cracklib/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26542,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"53608e2940cd6e4a\",\n   \"name\": \"crypto-policies\",\n   \"version\": \"20191128-2.git23e1bf1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:crypto-policies:crypto-policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:crypto-policies:crypto_policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:crypto_policies:crypto-policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:crypto_policies:crypto_policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:crypto-policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:crypto_policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:crypto:crypto-policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:crypto:crypto_policies:20191128-2.git23e1bf1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/crypto-policies@20191128-2.git23e1bf1.el8?arch=noarch&upstream=crypto-policies-20191128-2.git23e1bf1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"crypto-policies\",\n    \"version\": \"20191128\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"2.git23e1bf1.el8\",\n    \"sourceRpm\": \"crypto-policies-20191128-2.git23e1bf1.el8.src.rpm\",\n    \"size\": 190228,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/crypto-policies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/bind.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/gnutls.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/java.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/krb5.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/libreswan.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/libssh.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/nss.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/openssh.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/opensshserver.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/openssl.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/back-ends/opensslcnf.config\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/config\",\n      \"mode\": 33188,\n      \"size\": 688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3efd2462de1d6408d2de1d48b4fc0fecc9609254222fccc6cc82cae32303281\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/local.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/policies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/policies/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypto-policies/state\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fips-finish-install\",\n      \"mode\": 33261,\n      \"size\": 891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"209e39064035fe35de0df1db8f8bde9725e907b076d6abaaeda1843b9c869659\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fips-mode-setup\",\n      \"mode\": 33261,\n      \"size\": 4206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d9881132c4d1017b6ab428d7df1bd1fcd2d803dd5aafa4d17bc37c7fe08d17d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/update-crypto-policies\",\n      \"mode\": 33261,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6addb83218c406dc7f789cd90b7f230feac4938419570cff45d9f0ae00710dd3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/bind.txt\",\n      \"mode\": 33188,\n      \"size\": 75,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b5c0a6dfe62dd10878e05a15137d10f74580c352fb213bb0e0eedb930c5d99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/gnutls.txt\",\n      \"mode\": 33188,\n      \"size\": 437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2027bc5c04968e7205a8035047be021fa22ea92fb9dbb2f02a0eed24faee65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/java.txt\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7879dfd9e853f8239cf883ab3a53e425bb72ef2270539a7fea1d77a49e671cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/krb5.txt\",\n      \"mode\": 33188,\n      \"size\": 179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49800062b22a59de7b2dd2e8ab272de57670dc65fba73b6db66a90a629e3bfdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/libreswan.txt\",\n      \"mode\": 33188,\n      \"size\": 448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e6764cdbe50f15dd04226fa815d7e31dffeb555e5393fb48778f75ef411acb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/libssh.txt\",\n      \"mode\": 33188,\n      \"size\": 1294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"332cb6f1f2d0dd7cd7b6c087084bcef69f3469f9c3e35285a15b6ad754ac96f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/nss.txt\",\n      \"mode\": 33188,\n      \"size\": 383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"730e688abe235f4f4c513fccdb899080918023631103ea57cd2a1362686118c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/openssh.txt\",\n      \"mode\": 33188,\n      \"size\": 1173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f6ad778c1b4f3c2ee4c3300a2a829ada209c0f4daa211bde3159a46ad45a14b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/opensshserver.txt\",\n      \"mode\": 33188,\n      \"size\": 1579,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6d5ad2e4c5083c3b33a44359352d6c09cc1e0279949b5e467402814d4dd16e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/openssl.txt\",\n      \"mode\": 33188,\n      \"size\": 142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04794651f763a547d662f93bf5080d8e8577fe5f0c417643611f4404ef49891d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/DEFAULT/opensslcnf.txt\",\n      \"mode\": 33188,\n      \"size\": 315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a414c5a4d8e1e19e81cfa3c7b0fa2a83464a650c6e66e81bf3e5a6b6d306b25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/bind.txt\",\n      \"mode\": 33188,\n      \"size\": 123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2625e9228258edc2e53da32845d06dbc584a7bcbdef590e821fb88a66feb071\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/gnutls.txt\",\n      \"mode\": 33188,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebdecc00b137b3d663a15c1a3b51c4bcf564146bbcf56c31dbc6d62eaa023ad0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/java.txt\",\n      \"mode\": 33188,\n      \"size\": 789,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e469e892431a4044d296fc9059b909a1921a9a4658fdea25bf1fa8b29978f3f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/krb5.txt\",\n      \"mode\": 33188,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f13c7ed127764aab9e626e84b99061a0c6a6a71ecee3dfe821eefd2f4d970679\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/libreswan.txt\",\n      \"mode\": 33188,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17c9621cbd4a12bd0c548a16ae61f858284de1472326996e12140985c6d28636\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/libssh.txt\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/nss.txt\",\n      \"mode\": 33188,\n      \"size\": 147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa3482faff8b9c39e8f4496aab37e93c694c758c67876eb4d6e3dbefb9f3ed5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/openssh.txt\",\n      \"mode\": 33188,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3297ada25f072eafff0a6b217030d100875107296af6fe20ec4f33025e672ead\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/opensshserver.txt\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0495c3620a57e37e9e2a11ef1e8a3872dc90f1ac8c08723782b4907f51bc2b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/openssl.txt\",\n      \"mode\": 33188,\n      \"size\": 197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f5163345552ed09d8834e105cc058c04b49e10a66171adce432dc9383eb7044\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/EMPTY/opensslcnf.txt\",\n      \"mode\": 33188,\n      \"size\": 244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"695877851253083a75019e1fc00e1290acc32103994c44942bc691ab12d4c660\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/bind.txt\",\n      \"mode\": 33188,\n      \"size\": 105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49f1bb6234b52eefda267dc53f937458633362c2e285679101eb400db2cf14ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/gnutls.txt\",\n      \"mode\": 33188,\n      \"size\": 473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abae6db4f2cbd6ffe8560a00eebd4ca2f49d1c332ba09e6f169272eb11662750\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/java.txt\",\n      \"mode\": 33188,\n      \"size\": 587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb8befa366552ac59e3e036e22dc1d9d609aeb589d06cca5f4c34bb51e29b1ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/krb5.txt\",\n      \"mode\": 33188,\n      \"size\": 137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18ca0b8c4856e18c4af73db1852021d862ea64aaa9595bc17f8bfa918c53f839\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/libreswan.txt\",\n      \"mode\": 33188,\n      \"size\": 359,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8aa799cdf385605ea5fdaf0403aa38c961c5e2447d15e40ac0e45f4fede0bfef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/libssh.txt\",\n      \"mode\": 33188,\n      \"size\": 990,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52f66a1867b570c4eb883658b4463277c0a90497a08f2551db6fc911874e4d27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/nss.txt\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77ce70c3137b8282c9aee4509ffce1e7c3419e04aa36ac95aa6b625b95c70f0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/openssh.txt\",\n      \"mode\": 33188,\n      \"size\": 854,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d140ff8ee38d517fae026cda89037192693a049286889c05fdee060467599ca2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/opensshserver.txt\",\n      \"mode\": 33188,\n      \"size\": 1178,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fea975c146d78df87cf69a34f301a8de153004e8371c19b98c0154638763c7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/openssl.txt\",\n      \"mode\": 33188,\n      \"size\": 162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b32ee82d524b28abb8bd5b7263560cd3e0a5ae01dc1ccb93825722eaeff454fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FIPS/opensslcnf.txt\",\n      \"mode\": 33188,\n      \"size\": 306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87de1697ebcd23fa2b77e195d3657b5ef8dc4da6c061371f8ee7796d044c4bbb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/bind.txt\",\n      \"mode\": 33188,\n      \"size\": 105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49f1bb6234b52eefda267dc53f937458633362c2e285679101eb400db2cf14ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/gnutls.txt\",\n      \"mode\": 33188,\n      \"size\": 529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"424f33891d98f2445efcee2e2d4919d8c8c5b6293d442752e9d3ff8305605b15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/java.txt\",\n      \"mode\": 33188,\n      \"size\": 657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"864d29685f292b7f4f3b7a29c9ba917aa469dcb1d8a9700c441aa7be59333614\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/krb5.txt\",\n      \"mode\": 33188,\n      \"size\": 131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae21711a4138a99de04797f2057e7c0e730229ebb807f19d7696006159282582\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/libreswan.txt\",\n      \"mode\": 33188,\n      \"size\": 281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa21f8da5381b4812b62c6f16a3d8aecb11260cc9414a72b4d8a7e25381834d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/libssh.txt\",\n      \"mode\": 33188,\n      \"size\": 1076,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d2ee1b77c63487f1a81bc6d87100d12dd3faf2faf55155dae1b4f07a244da0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/nss.txt\",\n      \"mode\": 33188,\n      \"size\": 324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d34c34d5ba273acd91c648b0276572a698c0d2002b2eac07c51192c0855fb74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/openssh.txt\",\n      \"mode\": 33188,\n      \"size\": 923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0c2c69bea40231791f5c93f61b9f13644dd8cf0c799e550606083e0875e2727\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/opensshserver.txt\",\n      \"mode\": 33188,\n      \"size\": 1292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f38acfe306a4548626dd6b388f42a4b2ebda98810d708c13611600dc3233fb6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/openssl.txt\",\n      \"mode\": 33188,\n      \"size\": 165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"588fecc57cd07a6e1260e7a6f44236d35a14b1275f746d7d4d609b2389a10270\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/FUTURE/opensslcnf.txt\",\n      \"mode\": 33188,\n      \"size\": 292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e8ce04dd2005f3c2726e67120ac0d7fb0fd64ebf640632322655191b233dd24\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/bind.txt\",\n      \"mode\": 33188,\n      \"size\": 70,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07cbda37a6b3b6757625622e6ea6c00047d10459370bdf222ce9d9e5ab466f13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/gnutls.txt\",\n      \"mode\": 33188,\n      \"size\": 335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe33108d69c3e21b0b44f017f5c24698fb81b21a1d0faa61b465368c3fc19aa6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/java.txt\",\n      \"mode\": 33188,\n      \"size\": 357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3591e27fb622b0519684f10e9ac435968dc22101282fa35ec92dca058e78f19b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/krb5.txt\",\n      \"mode\": 33188,\n      \"size\": 210,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ddd217f3eb3613d993330f7e0cc2a577eab4caf5e72b0d6c8e56602af4924ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/libreswan.txt\",\n      \"mode\": 33188,\n      \"size\": 468,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6e872b5bfa2bf84c5ba4424cc6b23602900b0664a511888a0cb6e7367b8368d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/libssh.txt\",\n      \"mode\": 33188,\n      \"size\": 1404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fbddffdea99234ca02bfff8804cc30c84b0aa4ae79c6a8fdd80ff2e37474ee0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/nss.txt\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"500da59630b879c628df58e4b84a9dfa5e586bfff0381b6c8db03c3c187ed651\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/openssh.txt\",\n      \"mode\": 33188,\n      \"size\": 1271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76fe9070b172ee9baf59c3cba81814c203580a979bb275f699cd3f5d5efed30b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/opensshserver.txt\",\n      \"mode\": 33188,\n      \"size\": 1670,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ac8b41914b52b6a62155a297927cf3f0a05666f3d6f58a06e91137fd3d8c80c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/openssl.txt\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50e7761e50638529444b61710ec27a564278bc79bf238c7e719e198ca99a99d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/LEGACY/opensslcnf.txt\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e764f45a32432a6b0c1c651b1ee3bcd295c5dc2a8982b86bacf9559034758822\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/bind.config\",\n      \"mode\": 33188,\n      \"size\": 75,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b5c0a6dfe62dd10878e05a15137d10f74580c352fb213bb0e0eedb930c5d99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/gnutls.config\",\n      \"mode\": 33188,\n      \"size\": 437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2027bc5c04968e7205a8035047be021fa22ea92fb9dbb2f02a0eed24faee65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/java.config\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7879dfd9e853f8239cf883ab3a53e425bb72ef2270539a7fea1d77a49e671cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/krb5.config\",\n      \"mode\": 33188,\n      \"size\": 179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49800062b22a59de7b2dd2e8ab272de57670dc65fba73b6db66a90a629e3bfdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/libreswan.config\",\n      \"mode\": 33188,\n      \"size\": 448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e6764cdbe50f15dd04226fa815d7e31dffeb555e5393fb48778f75ef411acb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/libssh.config\",\n      \"mode\": 33188,\n      \"size\": 1294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"332cb6f1f2d0dd7cd7b6c087084bcef69f3469f9c3e35285a15b6ad754ac96f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/nss.config\",\n      \"mode\": 33188,\n      \"size\": 383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"730e688abe235f4f4c513fccdb899080918023631103ea57cd2a1362686118c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/openssh.config\",\n      \"mode\": 33188,\n      \"size\": 1173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f6ad778c1b4f3c2ee4c3300a2a829ada209c0f4daa211bde3159a46ad45a14b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/opensshserver.config\",\n      \"mode\": 33188,\n      \"size\": 1579,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6d5ad2e4c5083c3b33a44359352d6c09cc1e0279949b5e467402814d4dd16e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/openssl.config\",\n      \"mode\": 33188,\n      \"size\": 142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04794651f763a547d662f93bf5080d8e8577fe5f0c417643611f4404ef49891d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/opensslcnf.config\",\n      \"mode\": 33188,\n      \"size\": 315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a414c5a4d8e1e19e81cfa3c7b0fa2a83464a650c6e66e81bf3e5a6b6d306b25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/bind.config\",\n      \"mode\": 33188,\n      \"size\": 105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49f1bb6234b52eefda267dc53f937458633362c2e285679101eb400db2cf14ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/gnutls.config\",\n      \"mode\": 33188,\n      \"size\": 473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abae6db4f2cbd6ffe8560a00eebd4ca2f49d1c332ba09e6f169272eb11662750\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/java.config\",\n      \"mode\": 33188,\n      \"size\": 587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb8befa366552ac59e3e036e22dc1d9d609aeb589d06cca5f4c34bb51e29b1ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/krb5.config\",\n      \"mode\": 33188,\n      \"size\": 137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18ca0b8c4856e18c4af73db1852021d862ea64aaa9595bc17f8bfa918c53f839\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/libreswan.config\",\n      \"mode\": 33188,\n      \"size\": 359,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8aa799cdf385605ea5fdaf0403aa38c961c5e2447d15e40ac0e45f4fede0bfef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/libssh.config\",\n      \"mode\": 33188,\n      \"size\": 990,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52f66a1867b570c4eb883658b4463277c0a90497a08f2551db6fc911874e4d27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/nss.config\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77ce70c3137b8282c9aee4509ffce1e7c3419e04aa36ac95aa6b625b95c70f0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/openssh.config\",\n      \"mode\": 33188,\n      \"size\": 854,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d140ff8ee38d517fae026cda89037192693a049286889c05fdee060467599ca2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/opensshserver.config\",\n      \"mode\": 33188,\n      \"size\": 1178,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fea975c146d78df87cf69a34f301a8de153004e8371c19b98c0154638763c7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/openssl.config\",\n      \"mode\": 33188,\n      \"size\": 162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b32ee82d524b28abb8bd5b7263560cd3e0a5ae01dc1ccb93825722eaeff454fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/opensslcnf.config\",\n      \"mode\": 33188,\n      \"size\": 306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87de1697ebcd23fa2b77e195d3657b5ef8dc4da6c061371f8ee7796d044c4bbb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/bind.config\",\n      \"mode\": 33188,\n      \"size\": 105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49f1bb6234b52eefda267dc53f937458633362c2e285679101eb400db2cf14ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/gnutls.config\",\n      \"mode\": 33188,\n      \"size\": 529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"424f33891d98f2445efcee2e2d4919d8c8c5b6293d442752e9d3ff8305605b15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/java.config\",\n      \"mode\": 33188,\n      \"size\": 657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"864d29685f292b7f4f3b7a29c9ba917aa469dcb1d8a9700c441aa7be59333614\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/krb5.config\",\n      \"mode\": 33188,\n      \"size\": 131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae21711a4138a99de04797f2057e7c0e730229ebb807f19d7696006159282582\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/libreswan.config\",\n      \"mode\": 33188,\n      \"size\": 281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa21f8da5381b4812b62c6f16a3d8aecb11260cc9414a72b4d8a7e25381834d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/libssh.config\",\n      \"mode\": 33188,\n      \"size\": 1076,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d2ee1b77c63487f1a81bc6d87100d12dd3faf2faf55155dae1b4f07a244da0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/nss.config\",\n      \"mode\": 33188,\n      \"size\": 324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d34c34d5ba273acd91c648b0276572a698c0d2002b2eac07c51192c0855fb74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/openssh.config\",\n      \"mode\": 33188,\n      \"size\": 923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0c2c69bea40231791f5c93f61b9f13644dd8cf0c799e550606083e0875e2727\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/opensshserver.config\",\n      \"mode\": 33188,\n      \"size\": 1292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f38acfe306a4548626dd6b388f42a4b2ebda98810d708c13611600dc3233fb6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/openssl.config\",\n      \"mode\": 33188,\n      \"size\": 165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"588fecc57cd07a6e1260e7a6f44236d35a14b1275f746d7d4d609b2389a10270\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/opensslcnf.config\",\n      \"mode\": 33188,\n      \"size\": 292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e8ce04dd2005f3c2726e67120ac0d7fb0fd64ebf640632322655191b233dd24\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/bind.config\",\n      \"mode\": 33188,\n      \"size\": 70,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07cbda37a6b3b6757625622e6ea6c00047d10459370bdf222ce9d9e5ab466f13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/gnutls.config\",\n      \"mode\": 33188,\n      \"size\": 335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe33108d69c3e21b0b44f017f5c24698fb81b21a1d0faa61b465368c3fc19aa6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/java.config\",\n      \"mode\": 33188,\n      \"size\": 357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3591e27fb622b0519684f10e9ac435968dc22101282fa35ec92dca058e78f19b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/krb5.config\",\n      \"mode\": 33188,\n      \"size\": 210,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ddd217f3eb3613d993330f7e0cc2a577eab4caf5e72b0d6c8e56602af4924ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/libreswan.config\",\n      \"mode\": 33188,\n      \"size\": 468,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6e872b5bfa2bf84c5ba4424cc6b23602900b0664a511888a0cb6e7367b8368d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/libssh.config\",\n      \"mode\": 33188,\n      \"size\": 1404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fbddffdea99234ca02bfff8804cc30c84b0aa4ae79c6a8fdd80ff2e37474ee0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/nss.config\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"500da59630b879c628df58e4b84a9dfa5e586bfff0381b6c8db03c3c187ed651\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/openssh.config\",\n      \"mode\": 33188,\n      \"size\": 1271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76fe9070b172ee9baf59c3cba81814c203580a979bb275f699cd3f5d5efed30b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/opensshserver.config\",\n      \"mode\": 33188,\n      \"size\": 1670,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ac8b41914b52b6a62155a297927cf3f0a05666f3d6f58a06e91137fd3d8c80c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/openssl.config\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50e7761e50638529444b61710ec27a564278bc79bf238c7e719e198ca99a99d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/opensslcnf.config\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e764f45a32432a6b0c1c651b1ee3bcd295c5dc2a8982b86bacf9559034758822\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/default-config\",\n      \"mode\": 33188,\n      \"size\": 688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3efd2462de1d6408d2de1d48b4fc0fecc9609254222fccc6cc82cae32303281\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/DEFAULT.pol\",\n      \"mode\": 33188,\n      \"size\": 2035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87904977d9dfb3f22bfe0fb90cb357b04da0ceb67204e2319731d52fac9c6d21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/EMPTY.pol\",\n      \"mode\": 33188,\n      \"size\": 364,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65e19a3cfa3e4eb86c6546a6c076053bdad4b6e7a65cb5b1e17415ff58691101\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/FIPS.pol\",\n      \"mode\": 33188,\n      \"size\": 1641,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0b72e01081dd96462a8ab1ee64037f0ee3be0e1c1b8e15384e5f5951199abd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/FUTURE.pol\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41b6ac6178b32144fee22fb31e11677324afba0a03a489605b4dedd941f4d096\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/LEGACY.pol\",\n      \"mode\": 33188,\n      \"size\": 2463,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cde848a96ac852b345c62efc84a3f33526b48ee482100483d47af3bf37367b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/modules/NO-CAMELLIA.pmod\",\n      \"mode\": 33188,\n      \"size\": 246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99f0729c2ec3b141b237006a0e4121e31a95b707239b8499d0580934f522cf11\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/modules/NO-SHA1.pmod\",\n      \"mode\": 33188,\n      \"size\": 132,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b7f06f3194e84951eb5423e1a8bbceb02087f35f1ee0ebee5d8e389b308f651\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/policies/modules/OSPP.pmod\",\n      \"mode\": 33188,\n      \"size\": 773,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0854e0df9d090a830cf5a8174849fcacf22744c14a4010d22a1cc50acc6386d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/__pycache__/build-crypto-policies.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c468f052306c56c2e7dffd69528974fc69e43fe4817ec44a1b80ad00b721a96a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/__pycache__/build-crypto-policies.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c468f052306c56c2e7dffd69528974fc69e43fe4817ec44a1b80ad00b721a96a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/__pycache__/update-crypto-policies.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7796,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c8461595ad96f9557f64df9fbfcffe90c1142bacd4a398bc2c91d2b5a138aae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/__pycache__/update-crypto-policies.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7796,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c8461595ad96f9557f64df9fbfcffe90c1142bacd4a398bc2c91d2b5a138aae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/build-crypto-policies.py\",\n      \"mode\": 33261,\n      \"size\": 4114,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c63b0c7d8bab3e2b2fd4fbaf30cfa84079a64631b68744232ad8108a346e7bf6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"495d51480de0c3a3af6cacac04c3a5a170338e0a549f9691d5a7809e150f1a42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73ca2d4422c3e8404352c87f1cefccbfe86c6758c141381715f34552dd2fa9a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73ca2d4422c3e8404352c87f1cefccbfe86c6758c141381715f34552dd2fa9a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/cryptopolicies.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f10b37ae3c4961d37f0b900a66f5496c4ee7438d9267fffa08d79ed03b464c36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/cryptopolicies.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f10b37ae3c4961d37f0b900a66f5496c4ee7438d9267fffa08d79ed03b464c36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/cryptopolicies.py\",\n      \"mode\": 33188,\n      \"size\": 6562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc245a4f721497a6607c56c17e587fc4fadf58c54307e97bbebf095945ebcb9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 553,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93bbf25e37b9b27c66498eb83cc679c15faab52ea50afe7013e5e36b82e41629\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03398023b93b77c0d7e31ccfe669bf03e0bbd69a94046a55a3efeb87f8368bea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03398023b93b77c0d7e31ccfe669bf03e0bbd69a94046a55a3efeb87f8368bea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/bind.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94aff8db632f05e47234389de641f9806b02730fd730aaf98f9b678945b92cca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/bind.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94aff8db632f05e47234389de641f9806b02730fd730aaf98f9b678945b92cca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/configgenerator.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13b7356c8a539640127445b2d7305d2bb0c0e786b489e50b57876975fd4dd63f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/configgenerator.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13b7356c8a539640127445b2d7305d2bb0c0e786b489e50b57876975fd4dd63f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/gnutls.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c6b63eb82e03b55bccab1bc5dc146cd48f5366d6e3c2a8ee40a3ec145c482bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/gnutls.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c6b63eb82e03b55bccab1bc5dc146cd48f5366d6e3c2a8ee40a3ec145c482bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/java.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee5dd726fb6be3a3ab277b4fe52e5036d66e9ad0ea1b64abf79b7d7384ddbf20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/java.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee5dd726fb6be3a3ab277b4fe52e5036d66e9ad0ea1b64abf79b7d7384ddbf20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/krb5.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd6326b4717c4f94775cb4e050ede4024d2d0ae93a691034b1eab23942565be4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/krb5.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd6326b4717c4f94775cb4e050ede4024d2d0ae93a691034b1eab23942565be4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"196f4d5d6160548e7f7f9c5645ecc2654d004db6e00a3204c876ce318669a70c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"196f4d5d6160548e7f7f9c5645ecc2654d004db6e00a3204c876ce318669a70c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libssh.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3695,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12c9397135ac7f310c60f609012fbd3761086fe0102d28c1a7e68e647df29df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libssh.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3695,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12c9397135ac7f310c60f609012fbd3761086fe0102d28c1a7e68e647df29df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/nss.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3734,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ad15d82d684d222727471b1b1df0a578490057625f347ae41466cabad69c0cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/nss.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3734,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ad15d82d684d222727471b1b1df0a578490057625f347ae41466cabad69c0cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssh.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a20a149457602b90758954165c780f49f6758bea404b40d23a1b33e24d6b3b37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssh.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a20a149457602b90758954165c780f49f6758bea404b40d23a1b33e24d6b3b37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssl.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5013,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"443e66096301251aabe34c095fe33617633b41c2cf05b6a88df0fa94fcfde080\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssl.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5013,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"443e66096301251aabe34c095fe33617633b41c2cf05b6a88df0fa94fcfde080\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/bind.py\",\n      \"mode\": 33188,\n      \"size\": 1662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"945a63e71739c0f3fbe188cf019de26def944525812af3e431e460ddcd443fec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/configgenerator.py\",\n      \"mode\": 33188,\n      \"size\": 425,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35eeec5bcb56a184e944871f5c5a5787f3e6d11d44cc8be159a9666ca571f94f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/gnutls.py\",\n      \"mode\": 33188,\n      \"size\": 5397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75aa7024b879a95eb7cb920d2267c4e163b7c4696061a671b4a7d9bfa0b97ef6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/java.py\",\n      \"mode\": 33188,\n      \"size\": 3565,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4ac3ff33e4c06a2ea9af9704e65393fd2c24d0f2da78f8d399240b5f3fc0259\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/krb5.py\",\n      \"mode\": 33188,\n      \"size\": 1396,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6acaf8a6f58727262ffa12b0d104c50b5c3c3b1a2cc9f259454a71ee929794ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/libreswan.py\",\n      \"mode\": 33188,\n      \"size\": 4411,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b28b09658060e6eaa2f78d03179be7fa46ba71ce609f873bec963508b3d31b42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/libssh.py\",\n      \"mode\": 33188,\n      \"size\": 3755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"841f466eb73c463a06e60e1936801e93c3fc36ac32fa4de93ffa0dc7b301294d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/nss.py\",\n      \"mode\": 33188,\n      \"size\": 3526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d752c46e187e6c2fa905ef43cf75107a533f1d1cfa719f5c765f9c82ea551da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/openssh.py\",\n      \"mode\": 33188,\n      \"size\": 8016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5064d751b3205a0631da142d3f2c0fa103d70a266f6b879abb9d8e42480ed7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/policygenerators/openssl.py\",\n      \"mode\": 33188,\n      \"size\": 4611,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"137c5f1f6d3533b5cb9b302335c6e647f8b13992452df9a094ea4b649ec5449f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/python/update-crypto-policies.py\",\n      \"mode\": 33261,\n      \"size\": 7030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8405b07358088854da2d39b26830265c4a09af2defb352374926b3f43b87100\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/crypto-policies/reload-cmds.sh\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69121b6719a4a96cb77bf2372cb58a389b08726e4448b1037b70ec9950af1048\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/crypto-policies\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/crypto-policies/COPYING.LESSER\",\n      \"mode\": 33188,\n      \"size\": 26432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"498dde248a7e0c5c\",\n   \"name\": \"cryptsetup-libs\",\n   \"version\": \"2.2.2-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:cryptsetup-libs:cryptsetup-libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cryptsetup-libs:cryptsetup_libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cryptsetup_libs:cryptsetup-libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cryptsetup_libs:cryptsetup_libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cryptsetup:cryptsetup-libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cryptsetup:cryptsetup_libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:cryptsetup-libs:2.2.2-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:cryptsetup_libs:2.2.2-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/cryptsetup-libs@2.2.2-1.el8?arch=x86_64&upstream=cryptsetup-2.2.2-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"cryptsetup-libs\",\n    \"version\": \"2.2.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"cryptsetup-2.2.2-1.el8.src.rpm\",\n    \"size\": 1871402,\n    \"license\": \"GPLv2+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/run/cryptsetup\",\n      \"mode\": 16832,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d/6e65b5d72db9a6b5dcfbfec6dd32f721b9b1d0\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/cryptsetup.conf\",\n      \"mode\": 33188,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6bb4b689200c2348945700a6b0dad5df92bc2015860d15f36a25590814d77b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcryptsetup.so.12\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcryptsetup.so.12.5.0\",\n      \"mode\": 33261,\n      \"size\": 484904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9447f9bc852b72e9516a1f852d0517720dd5e46d515cc55aaf6b3638207dda4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cryptsetup-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cryptsetup-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45670cce8b6a0ddd66c8016cd8ccef6cd71f35717cbacc7f1e895b3855207b33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cryptsetup-libs/COPYING.LGPL\",\n      \"mode\": 33188,\n      \"size\": 27247,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c33cc37871654ec7ed87e6fbb896c8cf33ef5ef05b1611a5aed857596ffafa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4422a1995f6b1a83\",\n   \"name\": \"curl\",\n   \"version\": \"7.61.1-12.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:curl:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:curl:curl:7.61.1-12.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/curl@7.61.1-12.el8?arch=x86_64&upstream=curl-7.61.1-12.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"curl\",\n    \"version\": \"7.61.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"12.el8\",\n    \"sourceRpm\": \"curl-7.61.1-12.el8.src.rpm\",\n    \"size\": 709006,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/curl\",\n      \"mode\": 33261,\n      \"size\": 243704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d180f11502a917136ac910f63907beb82469a21e314ce8d27f6825468cdc16f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00/c85131480a6063f70a065e7a324f9ea2c6b477\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_curl\",\n      \"mode\": 33188,\n      \"size\": 13328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b1119ff5631d3b3d9e475c775f7ab8baabcbcc0273b038c6d6e5f54bea3265c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6d72956b00715295\",\n   \"name\": \"cyrus-sasl-lib\",\n   \"version\": \"2.1.27-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD with advertising\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:cyrus-sasl-lib:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus-sasl-lib:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus_sasl_lib:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus_sasl_lib:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus-sasl:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus-sasl:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus_sasl:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus_sasl:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus:cyrus-sasl-lib:2.1.27-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:cyrus:cyrus_sasl_lib:2.1.27-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/cyrus-sasl-lib@2.1.27-1.el8?arch=x86_64&upstream=cyrus-sasl-2.1.27-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"cyrus-sasl-lib\",\n    \"version\": \"2.1.27\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"cyrus-sasl-2.1.27-1.el8.src.rpm\",\n    \"size\": 734978,\n    \"license\": \"BSD with advertising\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/sasl2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/05690f08767d57005fab8269658f296f01d0c0\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d/00148d1ebcce3eb9a044c6ae40be42e1951d0d\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86/2196e17588ac75e6360c2ca7dfe8718acbf1fc\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e/996e1f62a7cfde54d38ef0281101f309f8338a\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/0d64a2736f57331869c89fdc248071ca7ff2ef\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsasl2.so.3\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsasl2.so.3.0.0\",\n      \"mode\": 33261,\n      \"size\": 130176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff2dac84e02fa21519c42754502e80e57b909588db1db4a7248776285b77c567\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libanonymous.so\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libanonymous.so.3\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libanonymous.so.3.0.0\",\n      \"mode\": 33261,\n      \"size\": 21456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"364193aae006c614e6e46004ca7d7ecac1e0e224af5ecfc3d84ee0d80ce4a7a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libsasldb.so\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libsasldb.so.3\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sasl2/libsasldb.so.3.0.0\",\n      \"mode\": 33261,\n      \"size\": 30440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add54ec1025f0feb2aaf77320f67845f6714caa9213bbf5bd129ce19918a3591\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/sasldblistusers2\",\n      \"mode\": 33261,\n      \"size\": 22688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"558a5947d8cd618b58671acf026365631d98a0700f050231299234989c6281e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/saslpasswd2\",\n      \"mode\": 33261,\n      \"size\": 17576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee32725d2852e424645d289f649365758bf3e55be3a33ac235ad36098609f3d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cyrus-sasl-lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/cyrus-sasl-lib/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d6e5d1632140a6c135b251260953650d17d87cd1124f87aaf72192aa4580d4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ca09216a5501c547\",\n   \"name\": \"dbus\",\n   \"version\": \"1:1.12.8-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or AFL) and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:dbus:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dbus@1.12.8-9.el8?arch=x86_64&epoch=1&upstream=dbus-1.12.8-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dbus\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-9.el8.src.rpm\",\n    \"size\": 0,\n    \"license\": \"(GPLv2+ or AFL) and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"f476eba120c0643b\",\n   \"name\": \"dbus-common\",\n   \"version\": \"1:1.12.8-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or AFL) and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dbus-common:dbus-common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus-common:dbus_common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_common:dbus-common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_common:dbus_common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus-common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus_common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus-common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus_common:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dbus-common@1.12.8-9.el8?arch=noarch&epoch=1&upstream=dbus-1.12.8-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dbus-common\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"noarch\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-9.el8.src.rpm\",\n    \"size\": 11131,\n    \"license\": \"(GPLv2+ or AFL) and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/dbus-1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dbus-1/session.conf\",\n      \"mode\": 33188,\n      \"size\": 838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2218b9313dc6d2e07d85751f318124cc5138787358ae1039703321cf6b35602a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"c\"\n     },\n     {\n      \"path\": \"/etc/dbus-1/session.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dbus-1/system.conf\",\n      \"mode\": 33188,\n      \"size\": 833,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6f50dc70ef082a110dcdb164579cd2af221b90226c5e0aca237edcad98a1c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"c\"\n     },\n     {\n      \"path\": \"/etc/dbus-1/system.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysusers.d/dbus.conf\",\n      \"mode\": 33188,\n      \"size\": 205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d645ac41a3fc8b63ac4b295a8c46d02c9261a0c610f2715e1c5e2c7b8286b44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/interfaces\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/services\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/session.conf\",\n      \"mode\": 33188,\n      \"size\": 3561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"206f009ddcf909422f3651c687b4623a5780fb7486c6d650e5332f57c00d6be1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.conf\",\n      \"mode\": 33188,\n      \"size\": 5694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f04a4d38054f5d67135283f8034be9517046255bdf29a467e37bf3f644be142e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9c5e9efa96630b8c\",\n   \"name\": \"dbus-daemon\",\n   \"version\": \"1:1.12.8-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or AFL) and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dbus-daemon:dbus-daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus-daemon:dbus_daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_daemon:dbus-daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_daemon:dbus_daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus-daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus_daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus-daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus_daemon:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dbus-daemon@1.12.8-9.el8?arch=x86_64&epoch=1&upstream=dbus-1.12.8-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dbus-daemon\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-9.el8.src.rpm\",\n    \"size\": 583585,\n    \"license\": \"(GPLv2+ or AFL) and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/dbus-cleanup-sockets\",\n      \"mode\": 33261,\n      \"size\": 17480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac8eceb697ca5d3201c342a92688d3834bb96ea86605b5210c23c0c79b4a5016\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-daemon\",\n      \"mode\": 33261,\n      \"size\": 259472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07311cabfcc59a83900aaeb392ded9aaf5daec034ee37f9cbe09c8a49fdba210\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-run-session\",\n      \"mode\": 33261,\n      \"size\": 17448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"353f9cac2b251d5b0acff8afca21211929de6d54e72561f5e19ab99cec1134a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-test-tool\",\n      \"mode\": 33261,\n      \"size\": 27064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a89a57b0d7c2f785f3fac0cc07dc06431a2beb04e33925bd16a2dcb8d8846d91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/a72029110592344fadb1f34de22587feea5931\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85/484c4ab4591f5c7afc29d02f1784a71f4a0473\",\n      \"mode\": 41471,\n      \"size\": 56,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0/2833ebed7cfa2bbb40c84a9730c3f620c93c1c\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2/123bf4a39097887d6062b48528e2c2c5b6fd9c\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2/8261688085a1a20d8fc345fb85a40e61520d00\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus.service\",\n      \"mode\": 33188,\n      \"size\": 380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d9d706cc9966c2b6dfebcd64ef460010522194f5b3cb92bc119566b5c8c7864\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus.socket\",\n      \"mode\": 33188,\n      \"size\": 102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e05359bbdc083b8db2b49542b26429166b5e13367a63668a4e8ff8a1b496f7ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/messagebus.service\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/dbus.service\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/dbus.socket\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/dbus.service\",\n      \"mode\": 33188,\n      \"size\": 360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19d7b51e1e6da255346ac6acbf95627baf14c324e84ee841d90fab98bcc0e994\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/dbus.socket\",\n      \"mode\": 33188,\n      \"size\": 178,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b7ac7357065180d1c2f3f00c11d17dadd31cdc3d7e59c623eb733beb3e50cef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/sockets.target.wants/dbus.socket\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/dbus.conf\",\n      \"mode\": 33188,\n      \"size\": 365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1b15f34a0590f6535dbff91727dd6bbf10752e8abb2cab73fa66a6184f9df1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/dbus-1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/dbus-1/dbus-daemon-launch-helper\",\n      \"mode\": 35304,\n      \"size\": 70064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9379ffbc5bdcccc20c4ef346532af100e2433e78fcce04822905500994b1f5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"dbus\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-daemon\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-daemon/COPYING\",\n      \"mode\": 33188,\n      \"size\": 29176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/lib/dbus\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"23f17e3944edb86d\",\n   \"name\": \"dbus-libs\",\n   \"version\": \"1:1.12.8-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or AFL) and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dbus-libs:dbus-libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus-libs:dbus_libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_libs:dbus-libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_libs:dbus_libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus-libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus_libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus-libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus_libs:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dbus-libs@1.12.8-9.el8?arch=x86_64&epoch=1&upstream=dbus-1.12.8-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dbus-libs\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-9.el8.src.rpm\",\n    \"size\": 399664,\n    \"license\": \"(GPLv2+ or AFL) and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d/5116ee9a979180640d020d1875012ca8bf6953\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdbus-1.so.3\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdbus-1.so.3.19.7\",\n      \"mode\": 33261,\n      \"size\": 370488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82c4161c8ea1bcb64a58ce8d8490a2c5205a5658fd4a13579fdfed78ff726c45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 29176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"399b2b8bcbf8801f\",\n   \"name\": \"dbus-tools\",\n   \"version\": \"1:1.12.8-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or AFL) and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dbus-tools:dbus-tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus-tools:dbus_tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_tools:dbus-tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus_tools:dbus_tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus-tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dbus_tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus-tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dbus:dbus_tools:1\\\\:1.12.8-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dbus-tools@1.12.8-9.el8?arch=x86_64&epoch=1&upstream=dbus-1.12.8-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dbus-tools\",\n    \"version\": \"1.12.8\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"dbus-1.12.8-9.el8.src.rpm\",\n    \"size\": 129722,\n    \"license\": \"(GPLv2+ or AFL) and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/dbus-monitor\",\n      \"mode\": 33261,\n      \"size\": 30728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e3d0595bf2cc53287185f2eecf111d363ddd038e2ceaaf0c07ff18e678ff8e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-send\",\n      \"mode\": 33261,\n      \"size\": 30688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae03034c940c021fbf3d0975d32f121fa7f872da42a549d782ee5d124bc55d23\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-update-activation-environment\",\n      \"mode\": 33261,\n      \"size\": 17928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3419c40c16bbd818d810541f7e7fe34109b96c1601f8619737bae8e0333e862\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dbus-uuidgen\",\n      \"mode\": 33261,\n      \"size\": 13376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bb1204b5d95b7fc34ba7b23b45e0608b79326da256af70abb96febf1237fa79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/8c7e370c32d7e80c425ba525ead78b5bc608f6\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e/4fa1b16c5fa6b057da520a2b3b0fe7f8c0f943\",\n      \"mode\": 41471,\n      \"size\": 54,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/a9adefc85c801a1d8f28b098b38cc95690f1c2\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76/dffe7d1029a044ffe13c0e748aab1ddfbda79a\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-tools\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dbus-tools/COPYING\",\n      \"mode\": 33188,\n      \"size\": 29176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"368cfe3ef7271d74\",\n   \"name\": \"device-mapper\",\n   \"version\": \"8:1.02.169-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:device-mapper:device-mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device-mapper:device_mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper:device-mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper:device_mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:device-mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:device_mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device:device-mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device:device_mapper:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/device-mapper@1.02.169-3.el8?arch=x86_64&epoch=8&upstream=lvm2-2.03.08-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"device-mapper\",\n    \"version\": \"1.02.169\",\n    \"epoch\": 8,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"lvm2-2.03.08-3.el8.src.rpm\",\n    \"size\": 355102,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/13bbfa7122ca3f0055be9ccaeacf039621c810\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f/15958b1a46cdcc225fa182d750bdad9188341a\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/10-dm.rules\",\n      \"mode\": 33060,\n      \"size\": 7266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb329854ebc0478ffe54d53954c360ba90859a786eeb011df35302dcddb06d2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/13-dm-disk.rules\",\n      \"mode\": 33060,\n      \"size\": 1794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f29624db81570ade0ab633c68eadf84eccd7136421b1effa70ed0484f16825e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/95-dm-notify.rules\",\n      \"mode\": 33060,\n      \"size\": 483,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d24e725fc78306ff2355eb91e4eebcc7dc9388d54dc27d20d6fe6f695054d536\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/blkdeactivate\",\n      \"mode\": 33133,\n      \"size\": 14837,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2e62590a43851b57491f02de4c4b2adc796d94b1374ce52cc3deb24781280c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/dmfilemapd\",\n      \"mode\": 33133,\n      \"size\": 25232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7394293dfcdbbb7c3bb250682996262e306a1cb3d72b29fb460f5b65f4f13666\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/dmsetup\",\n      \"mode\": 33133,\n      \"size\": 162472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f66ee62854d658606917013266cb6caffc26df7d80a1d036e1def87b068b550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/dmstats\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper/COPYING\",\n      \"mode\": 33188,\n      \"size\": 17995,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e76fbcd2fb97cf202da330301327754d2db5c58b5b4bebd3a8a749393e7603d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"82ec7b5c40d97cf4\",\n   \"name\": \"device-mapper-libs\",\n   \"version\": \"8:1.02.169-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:device-mapper-libs:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device-mapper-libs:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper_libs:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper_libs:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device-mapper:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device-mapper:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device_mapper:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device:device-mapper-libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:device:device_mapper_libs:8\\\\:1.02.169-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/device-mapper-libs@1.02.169-3.el8?arch=x86_64&epoch=8&upstream=lvm2-2.03.08-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"device-mapper-libs\",\n    \"version\": \"1.02.169\",\n    \"epoch\": 8,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"lvm2-2.03.08-3.el8.src.rpm\",\n    \"size\": 416167,\n    \"license\": \"LGPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77/00a7da8230763257f1ebb69e40cd1dcd0b0a15\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdevmapper.so.1.02\",\n      \"mode\": 33133,\n      \"size\": 371736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcd0b9cb0a314162d63cb273c6e30b623b6b8d05c8f28a4875fbcc0cd362c033\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 17995,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e76fbcd2fb97cf202da330301327754d2db5c58b5b4bebd3a8a749393e7603d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/device-mapper-libs/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"48d25aed400e188e\",\n   \"name\": \"dhcp-client\",\n   \"version\": \"12:4.3.6-40.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"ISC\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dhcp-client:dhcp-client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp-client:dhcp_client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_client:dhcp-client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_client:dhcp_client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp-client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp_client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp-client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp_client:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dhcp-client@4.3.6-40.el8?arch=x86_64&epoch=12&upstream=dhcp-4.3.6-40.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dhcp-client\",\n    \"version\": \"4.3.6\",\n    \"epoch\": 12,\n    \"architecture\": \"x86_64\",\n    \"release\": \"40.el8\",\n    \"sourceRpm\": \"dhcp-4.3.6-40.el8.src.rpm\",\n    \"size\": 530732,\n    \"license\": \"ISC\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/NetworkManager\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/NetworkManager/dispatcher.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/NetworkManager/dispatcher.d/11-dhclient\",\n      \"mode\": 33261,\n      \"size\": 1062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"752fff425446e7e9007d663775cfc87a2d63e5ecb9a723350c7481c8c02e0f99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dhcp\",\n      \"mode\": 16872,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dhcp/dhclient.conf\",\n      \"mode\": 33188,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fdf1f93579dc1e3cbf9518ece2e3eda50a385dc63b070eb63f5f7b794149410\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/dhcp/dhclient.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a7/524cd73bb316cc93d85bebe058dd31cafa8ef2\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/pm-utils/sleep.d/56dhclient\",\n      \"mode\": 33261,\n      \"size\": 1810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"687344e144ab436a393163defc54aa2cf85bbc16aab321f982dee63624c1ec31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/dhclient\",\n      \"mode\": 33261,\n      \"size\": 464776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c863d4ce82ecaa0f68909dd592d57a618e226d12eb9a127a42722770e57f7b4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/dhclient-script\",\n      \"mode\": 33261,\n      \"size\": 33646,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38c2791c43539e7c79e1772a412d7c211bf75ad78303d64a0d68c5bff7cad765\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/dhclient\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f1db3f69263d084f\",\n   \"name\": \"dhcp-common\",\n   \"version\": \"12:4.3.6-40.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"ISC\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dhcp-common:dhcp-common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp-common:dhcp_common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_common:dhcp-common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_common:dhcp_common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp-common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp_common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp-common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp_common:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dhcp-common@4.3.6-40.el8?arch=noarch&epoch=12&upstream=dhcp-4.3.6-40.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dhcp-common\",\n    \"version\": \"4.3.6\",\n    \"epoch\": 12,\n    \"architecture\": \"noarch\",\n    \"release\": \"40.el8\",\n    \"sourceRpm\": \"dhcp-4.3.6-40.el8.src.rpm\",\n    \"size\": 301814,\n    \"license\": \"ISC\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/share/licenses/dhcp-common\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dhcp-common/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1050,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd7ae2201c0c11c3c1e2510d731c67b2f4bc8ba735707d7348ddd65f7b598562\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9c6f8eb3cdf7829d\",\n   \"name\": \"dhcp-libs\",\n   \"version\": \"12:4.3.6-40.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"ISC\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dhcp-libs:dhcp-libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp-libs:dhcp_libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_libs:dhcp-libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp_libs:dhcp_libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp-libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dhcp_libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp-libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dhcp:dhcp_libs:12\\\\:4.3.6-40.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dhcp-libs@4.3.6-40.el8?arch=x86_64&epoch=12&upstream=dhcp-4.3.6-40.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dhcp-libs\",\n    \"version\": \"4.3.6\",\n    \"epoch\": 12,\n    \"architecture\": \"x86_64\",\n    \"release\": \"40.el8\",\n    \"sourceRpm\": \"dhcp-4.3.6-40.el8.src.rpm\",\n    \"size\": 161256,\n    \"license\": \"ISC\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/c3853c4468f67df8432255069575c73692701a\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/fc46beebf1d7764177eacc19ded981b99ad29b\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdhcpctl.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdhcpctl.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 24528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e280318b2b8f8b1ac2db87c9e81913260094812b2185d73f88c6339954ae3482\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libomapi.so.0\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libomapi.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 136728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"127ae1d67d11dcd0b9b06291f5a03dd99308e41b5c44db250d21565d994b5497\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f98efe991061ccb8\",\n   \"name\": \"dnf\",\n   \"version\": \"4.2.17-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and GPLv2 and GPL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf:dnf:4.2.17-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dnf@4.2.17-6.el8?arch=noarch&upstream=dnf-4.2.17-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dnf\",\n    \"version\": \"4.2.17\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"dnf-4.2.17-6.el8.src.rpm\",\n    \"size\": 1670640,\n    \"license\": \"GPLv2+ and GPLv2 and GPL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/dnf\",\n      \"mode\": 41471,\n      \"size\": 5,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dnf-makecache.service\",\n      \"mode\": 33188,\n      \"size\": 457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64fd20c5163f9a310c2e0211e53d4f731285535a4798c6c074f16c1e6680304d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dnf-makecache.timer\",\n      \"mode\": 33188,\n      \"size\": 301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd43cbac42a225465b2fd64c5a58590e4d582691fe663637e4aac5df6858810b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/dnf\",\n      \"mode\": 33188,\n      \"size\": 9556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bafd2578ee83f3cf8cfd8f1ec803fccaff531347d26f32d2ffde16320a4a34c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/dnf.mo\",\n      \"mode\": 33188,\n      \"size\": 24363,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac7ab63dc495e79c62dddc5a4e19222280d040606b742a02f08490395001ba89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/cache/dnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"85e8770df6b3b8d5\",\n   \"name\": \"dnf-data\",\n   \"version\": \"4.2.17-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and GPLv2 and GPL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dnf-data:dnf-data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf-data:dnf_data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf_data:dnf-data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf_data:dnf_data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dnf-data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dnf_data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf:dnf-data:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dnf:dnf_data:4.2.17-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dnf-data@4.2.17-6.el8?arch=noarch&upstream=dnf-4.2.17-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dnf-data\",\n    \"version\": \"4.2.17\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"dnf-4.2.17-6.el8.src.rpm\",\n    \"size\": 36253,\n    \"license\": \"GPLv2+ and GPLv2 and GPL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/dnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/aliases.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/dnf.conf\",\n      \"mode\": 33188,\n      \"size\": 108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1557f960a39d444375a3a28994eb082fdab2887a16da2b677ba181658f2512b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/dnf/modules.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/modules.defaults.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/protected.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/dnf/protected.d/dnf.conf\",\n      \"mode\": 33188,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6f0d7b9f4d69e86833ec77802d3af8e5ecc5b9820e1fe0d774b7922e1da57fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/dnf/vars\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/libreport/events.d/collect_dnf.conf\",\n      \"mode\": 33188,\n      \"size\": 813,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc0feca59af66ea18656fc5774b78f586b97864965cf1add75b3f9944678e999\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/logrotate.d/dnf\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32fc5ad9665f8bf30720d1774d16d79762f551c8cc2924ff47f4996e3ca0f458\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/dnf.conf\",\n      \"mode\": 33188,\n      \"size\": 164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbaff13faea6f5eae694d5d45ca022b90597c8325be2919920b519bb67980a87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dnf/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dnf/PACKAGE-LICENSING\",\n      \"mode\": 33188,\n      \"size\": 415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c06f0c7eb611c6d77892bd02832dcae01c9fac292ccd55d205924388e178a35c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/lib/dnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"16f1eaaec669d562\",\n   \"name\": \"dracut\",\n   \"version\": \"049-70.git20200228.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:dracut:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut:dracut:049-70.git20200228.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dracut@049-70.git20200228.el8?arch=x86_64&upstream=dracut-049-70.git20200228.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dracut\",\n    \"version\": \"049\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"70.git20200228.el8\",\n    \"sourceRpm\": \"dracut-049-70.git20200228.el8.src.rpm\",\n    \"size\": 1046582,\n    \"license\": \"GPLv2+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/dracut.conf\",\n      \"mode\": 33188,\n      \"size\": 117,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e157d2c2ca987ece9fb284b2def670904f959dce0ca1f82076dfbf6858516fcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/dracut.conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dracut\",\n      \"mode\": 33261,\n      \"size\": 70203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1500f8cff39ddfc65b4cbdd5a58f06412515b33fdf4f8d380616455685b4316b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lsinitrd\",\n      \"mode\": 33261,\n      \"size\": 8232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d1b027df2ae1199199492c18eab227e6ff7523f6b9770d2d1436d42780117dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mkinitrd\",\n      \"mode\": 33261,\n      \"size\": 6585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d9b43cade9a6644647ce6fa3bf73ef675ac51e4cfed7d0d96fde5359c157668\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e/55d75084ba135e504f0e7ed3897f1fd10f1f67\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/26c1bca20342274999c83686891f2eab0f8174\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-functions\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-functions.sh\",\n      \"mode\": 33261,\n      \"size\": 20145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"971ad97874b3ff532cef154d2242b028b008615291cb4df5138f357bdfc3b444\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-init.sh\",\n      \"mode\": 33261,\n      \"size\": 34539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8855a82fe8f7084af9c42a4d86fb643e51e80c1f09e6079542f08a81ba8ca6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-initramfs-restore\",\n      \"mode\": 33261,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa58a6625b2f08677060bad5f3c34198e75e4688abf7c65af54b250f268ca6db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-install\",\n      \"mode\": 33261,\n      \"size\": 76080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99912eabb1a47f22cba93b736e8103893f33d5bc5d99feb9ab90180ed0cc58f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-logger.sh\",\n      \"mode\": 33261,\n      \"size\": 13304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4af8626e7746cb72e4d1293dd8cd39f67809dfb840ee422dc56308c86495da0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut-version.sh\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e236bb428b849920c64ac140039b44a964773744d492c16dafba4c71509993f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut.conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/dracut.conf.d/01-dist.conf\",\n      \"mode\": 33188,\n      \"size\": 536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10456148cc42a37de5ab9c3d630a5dbaebdc426cf5b1138b0277a8ca68ae3413\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00bash\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00bash/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6adccf4b41d02689a2f9367d412cffba0ad56d1cb0b0c9ada1062ea2f390c3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00systemd/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 9456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"696e909c8ef29dcbbf8c33c9fffd3c4781127304806ed69bbc91bbe5734ef907\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00warpclock\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00warpclock/module-setup.sh\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d6177941826f62c419314294f344c5237bf61af068bcdeb9529aa06c77ce409\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/00warpclock/warpclock.sh\",\n      \"mode\": 33188,\n      \"size\": 151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfe9adfa7de5d19e9c862ea2609c3faf56052e8607080f6608c35dc187b21551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-boot.sh\",\n      \"mode\": 33261,\n      \"size\": 265,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab106047f36befd5e1074ff40b9fd0f28a772df2eabf03f3b2006809ad847848\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-load-crypto.sh\",\n      \"mode\": 33188,\n      \"size\": 209,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79e97373b6136bc2f55e0f532eb62e2c6c45e883e520ca62e98641361bce33f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-noboot.sh\",\n      \"mode\": 33261,\n      \"size\": 244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbf0f3b783e2dd8531a2060759d2ddf09f602625c4b08a621f965b2774bf9a61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips/fips.sh\",\n      \"mode\": 33261,\n      \"size\": 4707,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e23f12adf28b7c52f16712f764b6c6ea957355678b219d8c9e27ee1b2399fa60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01fips/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ad6d166f019c9b975fd3a96ecd3eaedec627666a1c9f734315c4a983cbdf927\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01systemd-initrd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/01systemd-initrd/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1862,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05e6fefbfdd29cc4c6fea2778d9f08e37a60eee2f0f223c7d0585ecbae54e179\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/03modsign\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/03modsign/load-modsign-keys.sh\",\n      \"mode\": 33261,\n      \"size\": 234,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6011f2fe5b1fe5b4b8a74d4de4dfb9bb056ce30649a8150bb9c572db17163162\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/03modsign/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f2d632dc5e53fecc193d7110ca4ee1222fe91a7021dd576ad3d67ff63f1c030\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/03rescue\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/03rescue/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7069667ddc37b73afc94db34f15d81628dfc6e7ed24a39dde463edd025ae45a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/04watchdog\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/04watchdog/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"241b6c197bfa7dbe45d26f5aa20fca3bb789ce763b462c7f4b92600bf4266c30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/04watchdog/watchdog-stop.sh\",\n      \"mode\": 33261,\n      \"size\": 61,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76aea04877c2856545349293a98d0c2687a8add94965e2fc3b1f63460756bf07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/04watchdog/watchdog.sh\",\n      \"mode\": 33261,\n      \"size\": 245,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b595ece211ee978dbb81394df222126e885fda3c2c0f1ffb0b775b87495f8b19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/05busybox\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/05busybox/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd2bc517a7b83e519da5d8dfb15a71f210a30329883c16950a580897faf172af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/06rngd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/06rngd/module-setup.sh\",\n      \"mode\": 33188,\n      \"size\": 1288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8528c88669859fc019fd0e67072f6d001f595861cc95d7373342c4a64fe9e849\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/06rngd/rngd.service\",\n      \"mode\": 33188,\n      \"size\": 147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8cfb816ee800367605eff9cbd56e7e71cf2ff93cf629c1b037316e2b089c7f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n/10-console.rules\",\n      \"mode\": 33188,\n      \"size\": 168,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98ccbc8f85a1dea5c3d371b86d7a7b781019d840fa06786e3765d31f9dd4bdca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n/README\",\n      \"mode\": 33188,\n      \"size\": 4420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0d384430249c51269fd17cd96602ad8b878fda1642883555264606712754e1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n/console_init.sh\",\n      \"mode\": 33261,\n      \"size\": 1612,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"338fd522c9375ecee7516e6a121b80f75be5fce2f460bc83755d85a53c057bb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 8308,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d6822992ce382715146b92af2acc2f0bbae9b6d48e7091840d90ce6e1c34166\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/10i18n/parse-i18n.sh\",\n      \"mode\": 33261,\n      \"size\": 1159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5ffa9074fd0983d5caee39f7f9a0f016d2bd96436ab365487e511895c8c42a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/30convertfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/30convertfs/convertfs.sh\",\n      \"mode\": 33261,\n      \"size\": 6035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"410141eddb24c1cd7ec58d8286ff474642e5fc0f05dc573c49a02bb6ba12eecf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/30convertfs/do-convertfs.sh\",\n      \"mode\": 33261,\n      \"size\": 194,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ccbbc718b1beb9400fc74a413b9be6340d19087f2279c72d5c60902b4404c96c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/30convertfs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65b77ee7310ed758ccd4c2a406292ec425dcccbe0f37a8904da225cffc68c1ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45url-lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45url-lib/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 3051,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c455ba241bf2fb39b7da22534617700f95373665750b249b9af461f5739ca9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45url-lib/url-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 5028,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bab8657e82cde89deb06539a4624c93d3e529d15da3575bb135781b7a78868b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50drm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50drm/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7488ecd26c70866929439b3c4937e42f104b708792f937195013ad5c5d916c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1f29ef918a3adc00abaa12f04a15206e520334bdc7b06eb15831e5dc93f1af5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-emergency.sh\",\n      \"mode\": 33261,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"068a6d7ffd97514b950c19882451252efe95ed09b4480d990233dc1b7d23497d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-newroot.sh\",\n      \"mode\": 33261,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e64a7fd39db017ff11eebe61abc75a50995fa641f3e64898cfc90c0b37ee198a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-populate-initrd.sh\",\n      \"mode\": 33261,\n      \"size\": 1454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d98d410f12374263e0bdc1cb8f011a935682f9c125d27cae02ed61ad8d62daf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-pretrigger.sh\",\n      \"mode\": 33261,\n      \"size\": 1177,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33173643d0086dfc5d5f160972fbcaf25b94be02507fa28e1d27db2d1b4b4c5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/README.md\",\n      \"mode\": 33188,\n      \"size\": 2093,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a291d0fefe068fdef9892965fdbdbdae63da9781ed425e542753458074906252\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/lvmmerge.sh\",\n      \"mode\": 33261,\n      \"size\": 3087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d7cf367dced801a4c1ed7acd6f4c948f058314f4c84bd6907b5786c4b5c4f5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e004ad99fac4cdf0dce19162a9a3849397853df39c913d796195cf755ecccf0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs/80-btrfs.rules\",\n      \"mode\": 33188,\n      \"size\": 270,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fb1c1a23de302d82623d960eb4201993f12061c63608ab8912f20c39882ac43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_device_ready.sh\",\n      \"mode\": 33261,\n      \"size\": 467,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ecf194cc31161970b7af9c684c585b08141b060e889489aa39be2173dae0543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_finished.sh\",\n      \"mode\": 33261,\n      \"size\": 597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9aeddb8df7021d5133a67a1ca77547119aed96a6b04b126e7c72baef0d4fabdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_timeout.sh\",\n      \"mode\": 33261,\n      \"size\": 142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2dfb621735e6bd7a5141c3a7e5baa080ba2946346a7a76d993616c5670fcd25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90btrfs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61ee044731cd09fa98e684507c679050ac56c1eb83686a0d8db66926217b850f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-cleanup.sh\",\n      \"mode\": 33261,\n      \"size\": 442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f268ba9c0ee4aa392d76676e67d3cd054f4dfb6c3bbefa700de5beb368a8fdba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c8b73cf73071e262d5325917d716ee30d9a100b12db183db393aea14b14ffbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-run-generator.sh\",\n      \"mode\": 33261,\n      \"size\": 770,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ff626b45e370aece5181a34ca21ad90a94f4648427a19dad75460b07c787ae4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/cryptroot-ask.sh\",\n      \"mode\": 33261,\n      \"size\": 4870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06fc60af8bc9e38c06d9bc7d2d8dfeabd368013912fd0aef26bd0d5360e2702c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 4431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dffbe0ffd6843d9ec4582e3446c6860ed96b9bb25164921d5773146facbbb295\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/parse-crypt.sh\",\n      \"mode\": 33261,\n      \"size\": 7137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e31f359164fdabb5edc1c9cbe2fd68c1401a35ddfb2876e9220d87309b49c75d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/parse-keydev.sh\",\n      \"mode\": 33261,\n      \"size\": 1377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"163a14e9a155e43a30a55125bbd1043bf4137fb6d3980eda0ba26499d8f63e61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90crypt/probe-keydev.sh\",\n      \"mode\": 33261,\n      \"size\": 382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23cecbaa79f39ec1a13ad1570f06782114a3b803e963ce3c54b4037f638fd9cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm/11-dm.rules\",\n      \"mode\": 33188,\n      \"size\": 142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a42ae0582bec603f18aa490e21550088680481f15206213718a6b8b84f610bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm/59-persistent-storage-dm.rules\",\n      \"mode\": 33188,\n      \"size\": 669,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91d4f5c41e6191dd30cc851b154a41f871053bc0ab85992d0bae464ee2ed855f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm/dm-pre-udev.sh\",\n      \"mode\": 33261,\n      \"size\": 102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23a5e0f5054afb84286cf319d58ee06cb9537619e705aadee47e56f79ac702fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm/dm-shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 1237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bbb54eb6d834f89ab4603631b2ca8328ae26ca0b9eda92124c42845a56bcffb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dm/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b115b9ddf19aba446f0b34a999786907662108772e6a79edfe1ddd81f8fffb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dmraid\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dmraid/61-dmraid-imsm.rules\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c6381796208387904bb2f998328f0847e08ea7832d9ceff9314cd08ae3c1842\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dmraid/dmraid.sh\",\n      \"mode\": 33261,\n      \"size\": 1206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"429642df7abdb1585b4e58fed265434f2fb722df070132bdb99bc41bdc23f807\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dmraid/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2165139e88fb8d5aca18643fdb3652d41901d8d1a006204e092ab861d46ddcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90dmraid/parse-dm.sh\",\n      \"mode\": 33261,\n      \"size\": 826,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"240639e707371bb1e13bdac14e8f9724097b2596242af0b86d611f5ebd922d9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules-extra\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules-extra/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 5101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"878ac313c5d2058e486d69ddab7c20ec50e62c258d176d9638654d0b634762f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/insmodpost.sh\",\n      \"mode\": 33261,\n      \"size\": 193,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25d5ca59bb50b7ec69432fc190999e33d68918960ec9d81c266b0d52f7829078\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 3463,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8235deb08fed8c5d5c4e52af71ca3948ea18169895416eecd821467b023414db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/parse-kernel.sh\",\n      \"mode\": 33261,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f801f74072ea53d9b24c0ad7a99fdfc25177ad57a26d63ac998eb93ddd30c5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90lvm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90lvm/64-lvm.rules\",\n      \"mode\": 33188,\n      \"size\": 775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff387389b1bb61e28f5e7e97db78d2ccf045bc4de4bc501f6915ae008de7a5cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90lvm/lvm_scan.sh\",\n      \"mode\": 33261,\n      \"size\": 3527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dec15d8fde9402dd1fb78f905528c83dbf129c7d71bd5e466b7a64d41b02dd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90lvm/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 5307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99cc8231691680a77f7567177fa45056ec19ba66ea6e3a0bd7f970cb1157c7e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90lvm/parse-lvm.sh\",\n      \"mode\": 33261,\n      \"size\": 487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"288924e47a438cafd49b31271bf72a4136dbf035336b7e6d6f360e4715df013d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/59-persistent-storage-md.rules\",\n      \"mode\": 33188,\n      \"size\": 842,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c754d8962754ed9d337605d5df02d17d07cd3312fcaeb5306b8508a59e29886e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/65-md-incremental-imsm.rules\",\n      \"mode\": 33188,\n      \"size\": 1475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5847cf3d0ac33d4db60abe8f1cffb27f39acfcf87ca0b5b6cb989f9a8df78873\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-noddf.sh\",\n      \"mode\": 33261,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c8b3323154fcae13c7de77bb62ec87646d30ff90c0c47eb0d0dc21737abd67e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-noimsm.sh\",\n      \"mode\": 33261,\n      \"size\": 90,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d190ae7149ec0f834561141e3036fda78738beda1a8a9458c4e22b0ad253fb02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 563,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e52969aaf37a0cf129c3810a22a3a5c67f71d9da8cd8316abd4a998e756ae62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdmon-pre-shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea5a56d41ca70906607fd2b89e1cf0471200b31628a9d420eabe36ed7f0fe3c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdmon-pre-udev.sh\",\n      \"mode\": 33261,\n      \"size\": 130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efc21f5ed3d19f3489e659605e757fb40e94a70694dfc36c5c196f6a6fe8f5f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-cleanup.sh\",\n      \"mode\": 33261,\n      \"size\": 598,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32701f39332ef0a0d77100fac88e6bd3e94160897cf4a52f20eff8d40320b2fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-needshutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 155,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdf1d0e3ba434cc1c323aef6a455bbb627042ede0ea6f5589229e754ba32d27a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-waitclean.sh\",\n      \"mode\": 33261,\n      \"size\": 800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f83128acd1964e79d6fd0b08b5df2ac6cac4b14e83be34ed882e372250dd331\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid_start.sh\",\n      \"mode\": 33261,\n      \"size\": 1993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"967fadb9a863f29e80f3751ecb27cc9b3ef28769fef517e3e3f4beb5006d3c9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 4493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"716388816abff8974b328bb7d44b338c96b1551f2fd1881aa8be005e2d81ba51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90mdraid/parse-md.sh\",\n      \"mode\": 33261,\n      \"size\": 2683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17fdc2f8f13c0a6bbb4c3059eb5cb5d7c2f61afd65eb8133c34d7afaf46e203c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 3352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55403c828b2107bb8e8549bc8d2648f38406d0510d797c730435cfbaa915e57d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipath-shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 172,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f87ddc35ab2f29a6c556af8ec1ccbe6f10684898e2cd1a3f224336eae9473eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd-needshutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf0debd877642edee3c836e3306c67b13108b7c62084a0378146972ea9bd4887\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd-stop.sh\",\n      \"mode\": 33261,\n      \"size\": 237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2c3e00ac95c6983452c9c2e429f5150ac2d96122a785716f1cf25b688fe8826\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd.service\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9770d3e53522ad066cb4692d14cce39c215a7b4ca081d00aeb7362ee4b2c919f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd.sh\",\n      \"mode\": 33261,\n      \"size\": 242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa3c410b1267a9a45ae2a7d9f9fe245739fc0a5801e717904da844b64ab297ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90qemu\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90qemu/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1026,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dca9cdb7aa2b960d57bc6b26bc5e5ad0026260ce41035369d59b96a06de79e0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90stratis\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90stratis/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe8122978948f2fda3d3c82109ab5183d9575f4081139e94db8dbd1c56f3b340\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-init.service\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4523df4f0fa4f38d9acc1303b7a7dfcac1601f9f92f11783f61a460793e384c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-start.sh\",\n      \"mode\": 33261,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14301e58f2aee1af313a08d5967946140e4c9391db39d8784888b9a20c91ebff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-stop.sh\",\n      \"mode\": 33261,\n      \"size\": 118,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fe47afe0d86eb96003176083d44e441aab06af93a5e936787cfc27e374e66b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/README\",\n      \"mode\": 33188,\n      \"size\": 2595,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0ad975623f32470e53a06d077ad4af10378b2827c0676154711fb55e1936df4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/crypt-gpg-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 2618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb42068328d50f4ed57e7a94d3024106b6102b0fb445b921d5fe502c114649bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1509,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc340df813a342cfe198bae3e78d71663100e992b9a8db1907e13667917d5e39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-loop\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-loop/crypt-loop-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 1278,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2465599538e05b0a58bbed5cfd19bcb21064c3f96c374d600606baaf18357d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/91crypt-loop/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 375,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adf4b89467fb3edb1a9b577b9de60545d728b81c0aad4bf3c30bdf7b18785b30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95debug\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95debug/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 550,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd35fcd68f3166357f68206be28f78c91fda95e36a9ff3c38eb6e789e8a0c80d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fstab-sys\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fstab-sys/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 305,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ced43c05074c82fa66161c2a8eebbca29990e456fcdbf1ab88284de1535ab162\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fstab-sys/mount-sys.sh\",\n      \"mode\": 33261,\n      \"size\": 1285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94c390fad5bce771ac3eb7aec35f3fc5c82214e568e8bf8db500888fcdcb8ce6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95lunmask\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95lunmask/fc_transport_scan_lun.sh\",\n      \"mode\": 33261,\n      \"size\": 562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63ae959ddf83bcf0f51224421c331748f05d325d3c664f1d8ca2a054dab47e69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95lunmask/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"698730cfd3da0223f93ba994e036a42b55691547ee398c1628035dea132ff310\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95lunmask/parse-lunmask.sh\",\n      \"mode\": 33261,\n      \"size\": 1227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85389966c2af9330d5904c64fe44f34b35504a07aac8cc55d3972cfd56ee7add\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95lunmask/sas_transport_scan_lun.sh\",\n      \"mode\": 33261,\n      \"size\": 568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f972c64778ced3f6002a990f8ec39cfdf8f06d5e53b7ab0f983f442e3e71f1a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95resume\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95resume/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99476ca9b74425b80fcc3140b6414070b58bcd96b616764b4a8f6a5463580e06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95resume/parse-resume.sh\",\n      \"mode\": 33261,\n      \"size\": 3623,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03058ec68c5c64820552d73b5dd1ae9d1c472a97c03a7fb3a78f56dd7731d820\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95resume/resume.sh\",\n      \"mode\": 33261,\n      \"size\": 560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23857edf2e0488b9b8fde15c80ca664602b1827ba453166f395b5d2ba248a0d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/block-genrules.sh\",\n      \"mode\": 33261,\n      \"size\": 469,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbd41278c7fe9e833b86686cd057921732bc45590dea6112fa244b6e3528f019\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0d8e6b739be83302f316675a9b2adcf9f7832452f96b5d4498222cce5f0f537\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/mount-root.sh\",\n      \"mode\": 33261,\n      \"size\": 4422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb6d60ff4ef71bd8600ec70273290fbdf8df9b41fbdc2f32371f07665691193f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/parse-block.sh\",\n      \"mode\": 33261,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7320f0af902ab760b530d44c4c4d6f028c370077a06f0a7058b33e1fd7f7ae89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/rootfallback.sh\",\n      \"mode\": 33261,\n      \"size\": 1242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbdf7ad4cb06eb04bb4d7e45b48b42556cba0b93185c4088336833f66626af1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95terminfo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95terminfo/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5927c26d3321289a5044d7f1ffa371550fa1e164296c7d0365150d8d7def519\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95udev-rules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/59-persistent-storage.rules\",\n      \"mode\": 33188,\n      \"size\": 275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5c736b763400c587499c0d64a908f8660a2e04987d82be72eee15433deea890\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/61-persistent-storage.rules\",\n      \"mode\": 33188,\n      \"size\": 1019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"384a0a3291a6b71fb7f4957dead3061d1ac88d2fe14d386abab77825d595d4c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/load-modules.sh\",\n      \"mode\": 33261,\n      \"size\": 78,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06d33a413f92cb14ab30030934e40be6cd828c02dc4b6b6f1e41b9aa024cb435\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 3333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47f8aeb26f84c2c96de2e1d4a87c1d719c099b5a8ce52e46400b539ab52714c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95virtfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95virtfs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d0418c1fb1b0a0e005c82ee2bb2454d682f70b0e3ac8893d775895785cfd92a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95virtfs/mount-virtfs.sh\",\n      \"mode\": 33261,\n      \"size\": 1863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39fc1bc8b3a9dcf8605c654788ef72989d89d13d4fc09d8532b5de5b0c3749f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95virtfs/parse-virtfs.sh\",\n      \"mode\": 33261,\n      \"size\": 93,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09304b2c81c40ea102aaa8770391afb47c777c085177929744abdfd1243052c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/97biosdevname\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/97biosdevname/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 287,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64fff65984ee187f2959465731b8a41a20e9a3ade1d0f4c409106814d0ee2183\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/97biosdevname/parse-biosdevname.sh\",\n      \"mode\": 33261,\n      \"size\": 309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72136ca0c791dface5d01e3dc0e3d42bc1111e09a1b5429d9421ef503294c5f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline-ask.service\",\n      \"mode\": 33188,\n      \"size\": 847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b01a035992525fd3680310e4556503ca8f53249978018151bcdc857a7194adc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline-ask.sh\",\n      \"mode\": 33261,\n      \"size\": 418,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc7bb84cb4de8fdebf055be3a772af5e5eee01a7409d6c1b33f15d305f0201f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service\",\n      \"mode\": 33188,\n      \"size\": 904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9c806f6e7efc1b7933892cc4d86fb1318e5141a8cbd8e1b77590ea42e1b9855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service.8\",\n      \"mode\": 33188,\n      \"size\": 1555,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b503aa2ec458dfcb34cf23da89cff41996bc688de182ba241a7cc136ce1bd1ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec1b78fdbb20f52a8e37a14eded89ddea853e5205d9378596a3c9da423bcfb6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.sh\",\n      \"mode\": 33261,\n      \"size\": 2662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63d05df86482757f42f7e0eef39d197bd28726803744feb3f84bf48e408f0c8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-emergency.service\",\n      \"mode\": 33188,\n      \"size\": 681,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d505421eee056a93a489764cd5f68083c83ec78f0ca5ec5035e42b39f0e6928\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-emergency.sh\",\n      \"mode\": 33261,\n      \"size\": 1382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2328393b82fa4b95a43bc3dd1052bb2ba03e06af676467ef6a92c7bbf5739e86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service\",\n      \"mode\": 33188,\n      \"size\": 821,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1b9a5bf1b08c7e6fcb6621fe6b76fdb20ad127b1867849d127cd60bb49d1abc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service.8\",\n      \"mode\": 33188,\n      \"size\": 1550,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2cec3bc099befdf15508185dea553a528815a6e8abb9fc1fc9217d425f71d916\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 439,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38dee5101c13beeb40f39acd69b7fae683c3c417e5e52465ab8f625ddd4adb8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.sh\",\n      \"mode\": 33261,\n      \"size\": 2147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"026d7583227eebc9872eb86483a6b99bea5c317741d5105b320d714d453ec5f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service\",\n      \"mode\": 33188,\n      \"size\": 793,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05217fb2e241f23db679ca8d15422c60052e93e9412e45ac262ac61b523fe0ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service.8\",\n      \"mode\": 33188,\n      \"size\": 1531,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc9d2eaa0fe6a732a52607f509ff384188a9c8e45eb1c8b08425399b683f28ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a7d49fb3a6afff1824819cbb2b2058005a8c82453e92dadc17178a86e966b5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.sh\",\n      \"mode\": 33261,\n      \"size\": 1052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d767d543ed9333a2a44d5c9b021d465820b69dc9d27d2180b1691cc9e7c3912\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service\",\n      \"mode\": 33188,\n      \"size\": 822,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e8752b103851e60adf1f1c60620975c53c2a74a1e362c8450c353d3806d18d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service.8\",\n      \"mode\": 33188,\n      \"size\": 1546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc43ddb477d3b9fb139bde89f6b9f5f1203f76494362177f59766254d79f5223\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e77ce2e56c82a6a1c76210843576ab3ff111854339123303274076f7d0330ad3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.sh\",\n      \"mode\": 33261,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e76f2734522ab5e82248a28eb10a8238f211088199279b6dabfd5e3e6571fdf8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service\",\n      \"mode\": 33188,\n      \"size\": 1125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b320d93a00beb019225664f3b9e6fa9df69d7bf642507602c33f9d8e0bb96a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service.8\",\n      \"mode\": 33188,\n      \"size\": 1541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b456d576624a748aeb11ff6bcae0b9b8817901a080c774a2a179e9889e61e4f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 429,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68110572014f7ec86475081e4af371e2354fc2ff2920d42144d111455cef26bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.sh\",\n      \"mode\": 33261,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0360422b90b24ff5ab4788da49b2e324676878cf6268c9c533df957b91b201e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service\",\n      \"mode\": 33188,\n      \"size\": 914,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2516aa88cb92e69739af5f81a01466fc7874f09b806bbd2ae6c5e26621e2aa5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service.8\",\n      \"mode\": 33188,\n      \"size\": 1550,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c366cc726eef5b80c795290692e36087a7f594eabe9e07483e9384559ea41f8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0bb8a4b3745aa7afb00f5f4257d82aa8abc32ce076896526fbc3e8a768d85b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.sh\",\n      \"mode\": 33261,\n      \"size\": 478,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac40a755302a0d52c23b9460599a043b077719bfba16f580e57a4ad75d0dc31f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service\",\n      \"mode\": 33188,\n      \"size\": 993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46635578b0872a259e69a7d93ac56896bc08f938db83fd582f38506edd76902f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service.8\",\n      \"mode\": 33188,\n      \"size\": 1537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9fd46198e0365ef0f93d45a1ae9ee6a1e47835f5e290695007929da12a76b2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ee85c29c1c70c50650d5d135edf23563e5210f6df6895a4dd69e1bec94bc161\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.sh\",\n      \"mode\": 33261,\n      \"size\": 1413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ccfe0d96219866993ce775da37f2367fab0e37a8c66434394d4d95a147a3b8ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service\",\n      \"mode\": 33188,\n      \"size\": 459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"160766a970a0e6715aff9ff70f815c7131140f140bb383f002b71f6d4d5eaaee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service.8\",\n      \"mode\": 33188,\n      \"size\": 3609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cae8c09e56330a36699174cfe1f9b647348a5ef87308a0e002f2d3491f41455e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc\",\n      \"mode\": 33188,\n      \"size\": 1689,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97d85a9118750e95be31d008b08789c76d4dc2888bf1ceb96318424012c61e3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-tmpfiles.conf\",\n      \"mode\": 33188,\n      \"size\": 135,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a5a36daadea6cac469e69ba8005e7e153d49e46a6d53b0b33539d8eaaaaa717\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/emergency.service\",\n      \"mode\": 33188,\n      \"size\": 692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ca89e1dd845a980fb568fa6b3b58c3866aab7475cd029cd405d9459f3f5fed7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2095,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4aaeec04c99fdcdb7cb915d8c131f32d1f9d441654deb1564e0746555eb446ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/rootfs-generator.sh\",\n      \"mode\": 33261,\n      \"size\": 3746,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c9cbabacd3adaf728e931752a7199fe10777141f78fca7e64ebedf8249f900d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/README\",\n      \"mode\": 33188,\n      \"size\": 2343,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce490eaaab6431e41c4c83d937161f7c4dcf0856fcb202850c91779afc12c4d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/ecryptfs-mount.sh\",\n      \"mode\": 33261,\n      \"size\": 2742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da2b75d317c6a048e8fe84928a65e40f9108067f202d591f57cc96304fb16768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c78dacc9f923cf4d742a8ace79b76af52eed6b1e8c8d58b1cefe11f610624cf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98pollcdrom\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98pollcdrom/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d081b60acf43f5c2b4fd52744bbab52f604a8801dccbcec46ac864ef7a02a9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98pollcdrom/pollcdrom.sh\",\n      \"mode\": 33261,\n      \"size\": 635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d00c14c63eda3147e673e69e86381bb5809318a1d7f979c02b05e9ee8f53f09a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98selinux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98selinux/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"852ca7d56ee022e99a9827127e8437c04dce0f1209044beec8e6c010bc4c23cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98selinux/selinux-loadpolicy.sh\",\n      \"mode\": 33261,\n      \"size\": 2242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b52b573f8e4853243829bacf9f185e6c6550049f100ee363911a1f548a49fead\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/README\",\n      \"mode\": 33188,\n      \"size\": 832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6eebfb036cb23b759d37f64dda2b3ab445a841d4a7fa0ab1580930504d14a514\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1157,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a99e4bb53ef145510d7f178b4b67c5739421ae8c9baddba0a4000a7cc0c642\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/parse-syslog-opts.sh\",\n      \"mode\": 33261,\n      \"size\": 1154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9ddab96dd02efe14c33c1778236cc2363da9dee7fd1d2bbf9febdd322745f33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslog.conf\",\n      \"mode\": 33188,\n      \"size\": 820,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d15df129a18010f3b648850ef445c421ba21c64894dce6265305eac6aa23316\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslogd-start.sh\",\n      \"mode\": 33261,\n      \"size\": 1233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e9dba6f15ad475b68553f0d6d3fc6bfa92f1a13234a6e89e3493027767eeef4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslogd-stop.sh\",\n      \"mode\": 33261,\n      \"size\": 286,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28bbb4db434217b759d4e50cdb02a6df3a7978ad50862f667236c66f594c5421\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98syslog/syslog-cleanup.sh\",\n      \"mode\": 33261,\n      \"size\": 407,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30545eb8371f689690c87a9eb80af1774310d8218289a3b316a75a84283490f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98usrmount\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98usrmount/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f3fba52e54e4533c516377784da847b78d38ed826cf8d0a26913a8fb5061013\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/98usrmount/mount-usr.sh\",\n      \"mode\": 33261,\n      \"size\": 3606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12ccbbffa416f47882c2c32785bf7c61c02d5fcf4d9c03c256b85f3644d353dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/dracut-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 34162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fb4d22936741b4482709de33546b844aa51e773d3805b76b24302a2a964a453\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/init.sh\",\n      \"mode\": 33261,\n      \"size\": 11832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c56a59554edc41948e31afe3a7bb8f49715dde36df505bd7f2b8c7ea4e9aac16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/initqueue.sh\",\n      \"mode\": 33261,\n      \"size\": 1163,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c320e1b7a1d028ccf92e53aa3397f001802fa6b82fd119cf62bdf657c78ccd2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/loginit.sh\",\n      \"mode\": 33261,\n      \"size\": 492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34551d9cf84930dfff9663eea1ea07bbe3aebc30ee6606ab98a76a3dd041c6b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/memtrace-ko.sh\",\n      \"mode\": 33261,\n      \"size\": 6052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3675b601e59b33775d22f4981a61748a136a1283ae3439a76fd31c7e1929937f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 4167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dafd8a4ed1fd6cd02c9c3d024759662980f2499d8aa6057b85251d8abcdbf9ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/parse-root-opts.sh\",\n      \"mode\": 33261,\n      \"size\": 246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e07ef0a39226066a62a2ac32be79c242f90cb64641261b5f3d618f58f633c67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99base/rdsosreport.sh\",\n      \"mode\": 33261,\n      \"size\": 1346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2a2ad64b2a99f08472a6702f9a5d2712d98b6fa0394e526406117042d41e60a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99fs-lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99fs-lib/fs-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 6381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb3c201f345507039b660fbd560f99005fc7115425ece6f8a212c8cd030a7fb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99fs-lib/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af70bb601d4d163d71425fa813aad5054ed670e43d76ea63cbbaf4cba398b080\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99shutdown\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99shutdown/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac5eacafcba7616290c3d0949abf1c7f76703978132d34c1afe8b3e1505bd511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99shutdown/shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 3126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cc5a1b5a144e4fb839f6085e1cc406da81139710ff63f4e347a1c7c36139b8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/skipcpio\",\n      \"mode\": 33261,\n      \"size\": 12264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da0080fe40a502cce99db93868b63af7622877e6620a1372995657cb17b1723d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel/install.d/50-dracut.install\",\n      \"mode\": 33261,\n      \"size\": 1700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9bc93d24aff2ffc3b860dbe22ebbce73b400b0df7eab4878e8f51a4237c0bb27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-cmdline.service\",\n      \"mode\": 41471,\n      \"size\": 62,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-initqueue.service\",\n      \"mode\": 41471,\n      \"size\": 64,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-mount.service\",\n      \"mode\": 41471,\n      \"size\": 60,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-pre-mount.service\",\n      \"mode\": 41471,\n      \"size\": 64,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-pre-pivot.service\",\n      \"mode\": 41471,\n      \"size\": 64,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-pre-trigger.service\",\n      \"mode\": 41471,\n      \"size\": 66,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-pre-udev.service\",\n      \"mode\": 41471,\n      \"size\": 63,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dracut-shutdown.service\",\n      \"mode\": 41471,\n      \"size\": 63,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-cmdline.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-initqueue.service\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-mount.service\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-pre-mount.service\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-pre-pivot.service\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-pre-trigger.service\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target.wants/dracut-pre-udev.service\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/dracut-shutdown.service\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/dracut\",\n      \"mode\": 33188,\n      \"size\": 3580,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a5385685fed86fe13043d70a7f53a0b78a944203c660f3a90f0b33c766316f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lsinitrd\",\n      \"mode\": 33188,\n      \"size\": 1983,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f7904494ad7795d99caa2960ea2ace7f1422349c8a8d0ad55b962dd105fa05a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dracut\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dracut/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/dracut/lgpl-2.1.txt\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/pkgconfig\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pkgconfig/dracut.pc\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e64ba16acb94555045c875c798c8dbfafdeba4468634982bf154e6054bb7e3f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/initramfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6b14e6dec9e0d21b\",\n   \"name\": \"dracut-network\",\n   \"version\": \"049-70.git20200228.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dracut-network:dracut-network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut-network:dracut_network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut_network:dracut-network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut_network:dracut_network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dracut-network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dracut_network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut:dracut-network:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut:dracut_network:049-70.git20200228.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dracut-network@049-70.git20200228.el8?arch=x86_64&upstream=dracut-049-70.git20200228.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dracut-network\",\n    \"version\": \"049\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"70.git20200228.el8\",\n    \"sourceRpm\": \"dracut-049-70.git20200228.el8.src.rpm\",\n    \"size\": 160704,\n    \"license\": \"GPLv2+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/02systemd-networkd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/02systemd-networkd/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4df3b8f89d03a720cf3db2152736fdcc27168e3ddc7bfc25792aae141cc136f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/dhclient-script.sh\",\n      \"mode\": 33261,\n      \"size\": 9273,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00a5ce5ff46fe6f17ee803fc9ee9d37752557fe2dddded9a2260470958d5cba1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/dhclient.conf\",\n      \"mode\": 33188,\n      \"size\": 303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30b82e8b108c78d9baac064b66d11540912ecc3cdebfad01f5b1654fa110b513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/ifup.sh\",\n      \"mode\": 33261,\n      \"size\": 15390,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17cfad9a369eb2e6871edb7239a674c5c4c284ce167342833eb923dc584bdf69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/kill-dhclient.sh\",\n      \"mode\": 33261,\n      \"size\": 252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9916351386bdca388dd87c3368b1a227d65751a67f20056d82e7dbf95abf60b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c78682cc56c240ff65f1314548772f8a91a160d7c1d64b011b5bc42bea836e90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/net-genrules.sh\",\n      \"mode\": 33261,\n      \"size\": 3925,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0548588aed8abc6fa5c72c40c007c90870633919c031af2571d64103c93e6be7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-bond.sh\",\n      \"mode\": 33261,\n      \"size\": 2007,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b1676fffb5701e81145cc10b7866bc5840a0cfeb9a8836693e75d7d24988b7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-bridge.sh\",\n      \"mode\": 33261,\n      \"size\": 1124,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65096f25c8c91933e2fbc0407695945a238e1bafc66429a2f039d5e8c628cd46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ibft.sh\",\n      \"mode\": 33261,\n      \"size\": 283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89f56de99708eacef4b54e506059211c36e0b5c7bb3eba95db587cd9e2a8dcc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ifname.sh\",\n      \"mode\": 33261,\n      \"size\": 552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"392d047b07cfde1a2b5b0e7e2d18f92e4fbc42761888c0f174c418ffc64e4b2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ip-opts.sh\",\n      \"mode\": 33261,\n      \"size\": 4798,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2e72a442199bab981bd67ef9a438cfbede28c968a9f1565b7ef45215b46f73a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-team.sh\",\n      \"mode\": 33261,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40dd1ccdb7ea1bed49a6211f827b79d8cc52303ad4f6bfc64231e31b5b9dce42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-vlan.sh\",\n      \"mode\": 33261,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b579099b708172ab1a20bf5ef328708c39884ea630df8ee74859f9561671821\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-manager\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-manager/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03a72195c418972e0b33357a39217620a7101dc04315e1ea7e3246e80a78db7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-manager/nm-config.sh\",\n      \"mode\": 33261,\n      \"size\": 172,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff421518a0c393e29833e2ad0274dae2561e30c2979f0da6db6268b4f7103799\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/35network-manager/nm-run.sh\",\n      \"mode\": 33261,\n      \"size\": 592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5652e900930a5dbea0794d1301e18e8428f7a8b70792e3b453defb17af6a696\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network/dhcp-root.sh\",\n      \"mode\": 33261,\n      \"size\": 816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40d76a471b3f351a6f49df7baba41e399252d0c50e86c8ed0143eebc29c82977\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network/ifname-genrules.sh\",\n      \"mode\": 33261,\n      \"size\": 1119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fcb00299e8d838d81ebeddd285542c7b6e4472249fa0954d681e43ae4727722\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"989e061278665e8bb8407627bceaa039422efc5cefa9bb2c43f57f4f74cf55a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network/net-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 25333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de0c5166b1d4086c63b4dd97d044a51e75d3ecd0f638a03d016ba659fa71b5f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/40network/netroot.sh\",\n      \"mode\": 33261,\n      \"size\": 2677,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3a113770fb6a4a825e59031a03ea3b4d7f09e9b9ee0f9117bb4ddd6c5178112\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45ifcfg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45ifcfg/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbe01fa522c27c04126e76db5f99d506ca803eed6ca7f982cdc1e29ae1747edd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/45ifcfg/write-ifcfg.sh\",\n      \"mode\": 33261,\n      \"size\": 8724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b930d37f6bedb794c02c84232d25ac18f562dd5f92c956df1ea1a43c0c289fd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-network-modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90kernel-network-modules/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 958,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afd15439fc700a95975ea80901d8da5b9ad0f6b62b03267dd697756cfdd778b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90qemu-net\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/90qemu-net/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9ee6f0f258e06873033e67fbf6533cc63b68e4526c5d8761bede77f84bc5ca9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95cifs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95cifs/cifs-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 969,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ae19c6c09e68683e5ced3d99f0b66d13a8043657ec89adf74a799f57ac7f60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95cifs/cifsroot.sh\",\n      \"mode\": 33261,\n      \"size\": 609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6838e1ae6088de237d0aa16191f6b1c2dafceec80be17874e025eef71dcde942\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95cifs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68444a1970f8b582703a51721fc8f8a725a0cf84f537847ee03c5caed9c166ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95cifs/parse-cifsroot.sh\",\n      \"mode\": 33261,\n      \"size\": 1182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c242aa781c7bdf599e0441a7e014398ed8fdb29ecbb219baad83f05dbc7b944\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe-uefi\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe-uefi/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3429a8800272279a63aa9609291196d7fd9e6651421b731e1759292812bf4e27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe-uefi/parse-uefifcoe.sh\",\n      \"mode\": 33261,\n      \"size\": 922,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e765227076c9f00231066170d0968de6943c5334a4c2c366fc5ce367e0877a8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/cleanup-fcoe.sh\",\n      \"mode\": 33261,\n      \"size\": 544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ae60ee404cc38b43e7bb6db2ebc0c67ea9c0f352adab45a652b6917e7849044\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-edd.sh\",\n      \"mode\": 33261,\n      \"size\": 1162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f76a925f1d101d40891019f967a40b7b28b098725769b9eab8b65eeafc506766\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-genrules.sh\",\n      \"mode\": 33261,\n      \"size\": 1204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc8e43633a4520af031f40918d5d3afc1418fa2da5cc26f9c451c01c0e10c876\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-up.sh\",\n      \"mode\": 33261,\n      \"size\": 2531,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9d666a92fc061859e64f9dcc84ce6f46341166c1b2b395552f69b4aa9c82c9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/lldpad.sh\",\n      \"mode\": 33261,\n      \"size\": 363,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f854af1f499134508f81aaab0147cad7b3432e4ee45c9307a3fed59d6062fa6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 3474,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d1e4ad7a46af8045d936383052a0f77ae33e1229ffaeec1fc9c9c6b3dcf2663\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/parse-fcoe.sh\",\n      \"mode\": 33261,\n      \"size\": 1942,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6e346c9a4e87e54fb4ad3a15622a015a16ec1d515e48e3c5a587903c4403ff6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95fcoe/stop-fcoe.sh\",\n      \"mode\": 33261,\n      \"size\": 111,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b0dd3e5b0f7f9f13a17ffc352d7f40d7b049b075a561280b022299de8bd7f41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi/cleanup-iscsi.sh\",\n      \"mode\": 33261,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f69180379e23604187aefca3bcb6a2393e98e5104aac82bf6283ca920481c01b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi/iscsiroot.sh\",\n      \"mode\": 33261,\n      \"size\": 10426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"932e8e8b28fa5e57df98403cecfb03271c664bd26d4bae164f3a3978ca85e3c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 9319,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aebb4de9acf0651d51a655c751c7641d40e90811b6bdcc9200f385b581b1f56a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi/mount-lun.sh\",\n      \"mode\": 33261,\n      \"size\": 332,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92ed3ef81e4464fa8553eae5e5644cac7d7718c3d6e7c98d6cd9421c5213b5ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95iscsi/parse-iscsiroot.sh\",\n      \"mode\": 33261,\n      \"size\": 5965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"657bf1dcb27b4a79cc0836e3986fdb83709d237fdcece0edaec11b4e2c503f80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nbd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nbd/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27ffb55170232b67708cbe8a05a22aa55104a67f7dbb3348583fd1d10b4b1b36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nbd/nbd-generator.sh\",\n      \"mode\": 33261,\n      \"size\": 1152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62e33222eec03260bea4e1a87c94bbfe0b9af779f625251e31ab87e20aa9cae3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nbd/nbdroot.sh\",\n      \"mode\": 33261,\n      \"size\": 3764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4080a82272314f9c9815aa6274fbf714a6f7d89d37ae687d052ef952464b230c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nbd/parse-nbdroot.sh\",\n      \"mode\": 33261,\n      \"size\": 1756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df500d0cd62cccd8528fd1bf1b45329dea20424a0c9b420616b11b96b9fc06f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 4045,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a222dcb98e04614aacb38f73253f8c7aa172ad4e8e793b6e2a71c438187f4652\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfs-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 4644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a2f1af9ff1baa5c9fb176c7272b328dcdd7a2353e377dc9b2ae591b48160397\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfs-start-rpc.sh\",\n      \"mode\": 33261,\n      \"size\": 870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1693a364e8e9593c6f35cb26df21b78f2a9641e53b0f45f06b444ac6eb75162c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfsroot-cleanup.sh\",\n      \"mode\": 33261,\n      \"size\": 845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38be42abc9fd91d4f98ee4c0c07c199cf40d5796e8518d65da9d04bd7fa061e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfsroot.sh\",\n      \"mode\": 33261,\n      \"size\": 715,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf7abc11a210f8e694d05991239fcd35165d7e95b405f8f09dc3397157e5acda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95nfs/parse-nfsroot.sh\",\n      \"mode\": 33261,\n      \"size\": 3333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3a99d2a3f53f9a0f78fcfa31a227c999ded330a3c44f8f2063e9ee4ea72ba90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95ssh-client\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/95ssh-client/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 2067,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ca66ab229375fb479b9550b8cb53c29e1969d2ee90ba8d7f9271341aac9bd9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99uefi-lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99uefi-lib/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a6322a6b95a51b34a3fc72a8d0a6cde34cdbad6656ab73125018cfdea381cd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99uefi-lib/uefi-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 4741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f487e4f8abf071a11b987716fc0b3c5616564aa9cbe40457e1eeca5eee418e68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"20ac9df751cb28d1\",\n   \"name\": \"dracut-squash\",\n   \"version\": \"049-70.git20200228.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:dracut-squash:dracut-squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut-squash:dracut_squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut_squash:dracut-squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut_squash:dracut_squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dracut-squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:dracut_squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut:dracut-squash:049-70.git20200228.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:dracut:dracut_squash:049-70.git20200228.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/dracut-squash@049-70.git20200228.el8?arch=x86_64&upstream=dracut-049-70.git20200228.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"dracut-squash\",\n    \"version\": \"049\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"70.git20200228.el8\",\n    \"sourceRpm\": \"dracut-049-70.git20200228.el8.src.rpm\",\n    \"size\": 3054,\n    \"license\": \"GPLv2+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/clear-squash.sh\",\n      \"mode\": 33261,\n      \"size\": 174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d59317f3dfa52b5849e2a0b0ca988b68bf6679f577d3372ebd112c5155f74271\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/init.sh\",\n      \"mode\": 33261,\n      \"size\": 135,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a4168dff97f24599f3df69b4ca11fe593d438aaeaa65dada0ca9007a9808f49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/module-setup.sh\",\n      \"mode\": 33188,\n      \"size\": 885,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e2a65a39beb7e77201e690678e2671054464c28dab94aea957baf919d59017\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/setup-squash.sh\",\n      \"mode\": 33261,\n      \"size\": 1345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a862593a77029c32c77f87edc8163775795298f4988a34b08edaae485b1c8727\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/shutdown.sh\",\n      \"mode\": 33261,\n      \"size\": 143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a78b0a2429c0ad3976fcc296533fce076f071cf27464c22f37508343f29e3fc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99squash/squash-mnt-clear.service\",\n      \"mode\": 33188,\n      \"size\": 372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a2b9ca246aa27dd600c83e76e768d3afa968786ae3eb61f58a8300e00e26b28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b0a031a0f531392\",\n   \"name\": \"elfutils-default-yama-scope\",\n   \"version\": \"0.178-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ or LGPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:elfutils-default-yama-scope:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-default-yama-scope:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default_yama_scope:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default_yama_scope:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-default-yama:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-default-yama:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default_yama:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default_yama:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-default:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-default:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_default:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils-default-yama-scope:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils_default_yama_scope:0.178-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/elfutils-default-yama-scope@0.178-7.el8?arch=noarch&upstream=elfutils-0.178-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"elfutils-default-yama-scope\",\n    \"version\": \"0.178\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"elfutils-0.178-7.el8.src.rpm\",\n    \"size\": 1810,\n    \"license\": \"GPLv2+ or LGPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/sysctl.d/10-default-yama-scope.conf\",\n      \"mode\": 33188,\n      \"size\": 1810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d1322bb224f78beb5c06089a52ff53c9e5c77c6039d60f978429071bdba9870\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"81d7e3912e74e49d\",\n   \"name\": \"elfutils-libelf\",\n   \"version\": \"0.178-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ or LGPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:elfutils-libelf:elfutils-libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-libelf:elfutils_libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_libelf:elfutils-libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_libelf:elfutils_libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils-libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils_libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils-libelf:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils_libelf:0.178-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/elfutils-libelf@0.178-7.el8?arch=x86_64&upstream=elfutils-0.178-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"elfutils-libelf\",\n    \"version\": \"0.178\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"elfutils-0.178-7.el8.src.rpm\",\n    \"size\": 920699,\n    \"license\": \"GPLv2+ or LGPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/aa9cdb6c0295e842541ec595dbf46d2fece376\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libelf-0.178.so\",\n      \"mode\": 33261,\n      \"size\": 104552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9b7239997122649b5cd81076816295ef149bca3a4e315e2ccbd76521701b4f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libelf.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libelf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libelf/COPYING-GPLV2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libelf/COPYING-LGPLV3\",\n      \"mode\": 33188,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"de8469fece675af1\",\n   \"name\": \"elfutils-libs\",\n   \"version\": \"0.178-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ or LGPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:elfutils-libs:elfutils-libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils-libs:elfutils_libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_libs:elfutils-libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils_libs:elfutils_libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils-libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:elfutils:elfutils_libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils-libs:0.178-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:elfutils_libs:0.178-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/elfutils-libs@0.178-7.el8?arch=x86_64&upstream=elfutils-0.178-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"elfutils-libs\",\n    \"version\": \"0.178\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"elfutils-0.178-7.el8.src.rpm\",\n    \"size\": 717567,\n    \"license\": \"GPLv2+ or LGPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/175964da8a6a07837ec0a80f0fb43e89382b82\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/8a2156bd25522246925006abdc616f9ccabd28\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libasm-0.178.so\",\n      \"mode\": 33261,\n      \"size\": 33480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6abab67ac074c2d4d43d0df842b1b6d3f807b57159b586667c1e7037bc760b14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libasm.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdw-0.178.so\",\n      \"mode\": 33261,\n      \"size\": 658344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"406569741372c38a574710e24c1bc526dffeb6835edc63e666a09b703aec53d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdw.so.1\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libs/COPYING-GPLV2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/elfutils-libs/COPYING-LGPLV3\",\n      \"mode\": 33188,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"299e512d3c540ec1\",\n   \"name\": \"ethtool\",\n   \"version\": \"2:5.0-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ethtool:ethtool:2\\\\:5.0-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ethtool:2\\\\:5.0-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ethtool@5.0-2.el8?arch=x86_64&epoch=2&upstream=ethtool-5.0-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ethtool\",\n    \"version\": \"5.0\",\n    \"epoch\": 2,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"ethtool-5.0-2.el8.src.rpm\",\n    \"size\": 502623,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43/56cfc74aadb9fc1e73b02654d80078e27c878e\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/sbin/ethtool\",\n      \"mode\": 33261,\n      \"size\": 445368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9b4b550a581b9d5de07361f91c183fbd4142b15497bf4266c5c72b867eb78c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ethtool\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ethtool/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ethtool/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 100,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d632934396f90c82dfebe3c9512648bbb6333b406113d0cd331b0e0aa2d34a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"22da8f80cbd81a82\",\n   \"name\": \"expat\",\n   \"version\": \"2.2.5-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:expat:2.2.5-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:expat:expat:2.2.5-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/expat@2.2.5-3.el8?arch=x86_64&upstream=expat-2.2.5-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"expat\",\n    \"version\": \"2.2.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"expat-2.2.5-3.el8.src.rpm\",\n    \"size\": 314068,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/xmlwf\",\n      \"mode\": 33261,\n      \"size\": 35680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f35a3cbabe0d9a6c5d2683567da1cc069f96ec98fc75d61825a65a9055d3e455\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25/8df9bb0bd70bda1248bd075b2ea977b5842d77\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9/98df7b8fa4581b8dc11f7206fe166c5aed1fe5\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libexpat.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libexpat.so.1.6.7\",\n      \"mode\": 33261,\n      \"size\": 245080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1503792fe46d252566e647a859ce40545958f58eac0a0d6bdef3a2350bbe5399\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/expat\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/expat/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46336ab2fec900803e2f1a4253e325ac01d998efb09bc6906651f7259e636f76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"30666ebedd03891\",\n   \"name\": \"file-libs\",\n   \"version\": \"5.33-13.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:file-libs:file-libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:file-libs:file_libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:file_libs:file-libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:file_libs:file_libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:file-libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:file_libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:file:file-libs:5.33-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:file:file_libs:5.33-13.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/file-libs@5.33-13.el8?arch=x86_64&upstream=file-5.33-13.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"file-libs\",\n    \"version\": \"5.33\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"13.el8\",\n    \"sourceRpm\": \"file-5.33-13.el8.src.rpm\",\n    \"size\": 6382974,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08/7c3762d8af405d3c054ab0bdada02fdda43a37\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmagic.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmagic.so.1.0.0\",\n      \"mode\": 33261,\n      \"size\": 161568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f10dab1d3e9c5d60810a21de44fa73ab365bf232d5575ce6c5afd938fd35174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/file\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/file/magic\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/file-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/file-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1650,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c0ad13c36f891a9b4f951e59eb2fc108065a46f849697cc6fd3cdb41cc23a3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/magic\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/misc/magic\",\n      \"mode\": 33188,\n      \"size\": 962492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35dd4ca80d1c0d329ef04e68b6306672485ee1a34bb5e573055749e26e5b6099\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/misc/magic.mgc\",\n      \"mode\": 33188,\n      \"size\": 5192336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e18ca36dec791f274e9c0dd07225869824f609ce408fd08068d707e5450eb4f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e5cec4047e70adda\",\n   \"name\": \"filesystem\",\n   \"version\": \"3.8-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:filesystem:filesystem:3.8-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:filesystem:3.8-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/filesystem@3.8-2.el8?arch=x86_64&upstream=filesystem-3.8-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"filesystem\",\n    \"version\": \"3.8\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"filesystem-3.8-2.el8.src.rpm\",\n    \"size\": 0,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/bin\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/dev\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/X11\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/X11/applnk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/X11/fontpath.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/bash_completion.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/opt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pm/config.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pm/power.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pm/sleep.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/skel\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/sysconfig\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/xdg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/xdg/autostart\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/xinetd.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/home\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64\",\n      \"mode\": 41471,\n      \"size\": 9,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/media\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/mnt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/opt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/proc\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/root\",\n      \"mode\": 16744,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/run\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/sbin\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/srv\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/sys\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/tmp\",\n      \"mode\": 17407,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/games\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/include\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/debug\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/.dwz\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/bin\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/lib\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/lib64\",\n      \"mode\": 41471,\n      \"size\": 9,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/sbin\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr/.dwz\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr/bin\",\n      \"mode\": 33261,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr/lib\",\n      \"mode\": 33261,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr/lib64\",\n      \"mode\": 33261,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/debug/usr/sbin\",\n      \"mode\": 33261,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/games\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sse2\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysimage\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/X11\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/games\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/pm-utils\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/pm-utils/module.d\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/pm-utils/power.d\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/pm-utils/sleep.d\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/sse2\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/tls\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/bin\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/games\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/include\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/lib64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/libexec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/sbin\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/applications\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/info\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man1x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man2x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man3x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man4x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man5x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man6x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man7x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man8x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/man9x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/share/man/mann\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/local/src\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/X11\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/aclocal\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/appdata\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/applications\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/augeas\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/augeas/lenses\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/backgrounds\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/helpers\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/desktop-directories\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dict\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/doc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/empty\",\n      \"mode\": 16749,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/games\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnome\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/help\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/icons\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/idl\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/info\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@arabic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@arabic/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@boldquot\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@boldquot/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@cyrillic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@cyrillic/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@greek\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@greek/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@hebrew\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@hebrew/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@piglatin\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@piglatin/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@quot\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@quot/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@shaw\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en@shaw/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_CA\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_CA/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_US\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_US/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man0p\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man1p\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man1x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man2x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man3p\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man3x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man4x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man5x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man6x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man7x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man8x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/man9x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/man/mann\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/metainfo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/mime-info\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/misc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/omf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pixmaps\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/sounds\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/themes\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/wayland-sessions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/xsessions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/src\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/src/debug\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/src/kernels\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/tmp\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/adm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/cache\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/db\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/empty\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/ftp\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/games\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/gopher\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/games\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/misc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/rpm-state\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/local\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lock\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/log\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/mail\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/nis\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/opt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/preserve\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/run\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/spool\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/spool/lpd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/spool/mail\",\n      \"mode\": 16893,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"mail\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/tmp\",\n      \"mode\": 17407,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/yp\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"57e7b8e710c99b4d\",\n   \"name\": \"findutils\",\n   \"version\": \"1:4.6.0-20.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:findutils:findutils:1\\\\:4.6.0-20.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:findutils:1\\\\:4.6.0-20.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/findutils@4.6.0-20.el8?arch=x86_64&epoch=1&upstream=findutils-4.6.0-20.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"findutils\",\n    \"version\": \"4.6.0\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"20.el8\",\n    \"sourceRpm\": \"findutils-4.6.0-20.el8.src.rpm\",\n    \"size\": 1816673,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/find\",\n      \"mode\": 33261,\n      \"size\": 261992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75726e4ef1e7dd185e7dfd675fe6490fd4e5973babbff89a8927c46137638cb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xargs\",\n      \"mode\": 33261,\n      \"size\": 90312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1be79ae6da65e0094ce30ca4a43ddeb0a6f9784aa323241349dc0a70b76c69d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a/f2fc2eb5f08b1a8f9e87053d29edf7e3a4eaa3\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/95\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/95/cd66d3860a56011de9f9c4120d9b7ae34a7155\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/findutils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/findutils/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35068,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b3512f6c9958e10f\",\n   \"name\": \"gawk\",\n   \"version\": \"4.2.1-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and GPLv2+ and LGPLv2+ and BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gawk:4.2.1-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gawk:gawk:4.2.1-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gawk@4.2.1-1.el8?arch=x86_64&upstream=gawk-4.2.1-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gawk\",\n    \"version\": \"4.2.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"gawk-4.2.1-1.el8.src.rpm\",\n    \"size\": 2717614,\n    \"license\": \"GPLv3+ and GPLv2+ and LGPLv2+ and BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/profile.d/gawk.csh\",\n      \"mode\": 33188,\n      \"size\": 1107,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ba2af9853121df6dd5edff9254a2946e39eab8dc6513348fea28f739ee96648\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/gawk.sh\",\n      \"mode\": 33188,\n      \"size\": 757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70621a3b586d3d523b020e76977633b444a70013ba50e1ea901a3a07a676f15f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/awk\",\n      \"mode\": 41471,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gawk\",\n      \"mode\": 33261,\n      \"size\": 698520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"183d91837e301bcf25334f2cf2391cd50f0e321292824e87629a0fa554c7993a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b/a0aadde8b03d936b13026fd0029e2fa466ba80\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e/15252a044652c8305b77f690ab115e731c0ded\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/2340a2716026197ac9c9a6a6e0b3c74f34cbe0\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47/fbaf9efbdba767db824eb231a2ac20e86a49c7\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54/d69c320dd947da89103ba9111b791af9dc36b5\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68/912c6fc6c41ec7ebbc7c992542c4667e3c32df\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c/5fcdecb7208a7a68ef8e02e3556fcc08e6343c\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d/fbd280b53a39d5f82939218fd8a2b7db9960e1\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/e45ea783bf16162d246c27f23d8c0534963901\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/88\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/88/091476f27478e9069caf0fe1996c2c32dfa212\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0/5b3881857608dd071939f2bc016fbd7e31911c\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa/4be5f83c4742f365157065f4439dbbd9ec5763\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/2cb11d3f784ba870fa05b38011f9b965b92946\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1/5863441619e5e347477679aa10352825b1d8e5\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb/f71cd1e2aa8306fac4d0072943edbd3de8bf81\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/filefuncs.so\",\n      \"mode\": 33261,\n      \"size\": 34632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23777c04e5a16d5a23e8055a33cda76d71aa621a8540a65c68299450a31001ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/fnmatch.so\",\n      \"mode\": 33261,\n      \"size\": 12016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01363bf7ec81b7a73f193425ef4ad4939f7e8d48725a6b2adfd6d0cc031464ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/fork.so\",\n      \"mode\": 33261,\n      \"size\": 12128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17c6a86f775b64e143d4fff368dee1054bf5ff6272ae45292c2ac68fd2ac56ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/inplace.so\",\n      \"mode\": 33261,\n      \"size\": 16224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b41b556f31587afe1e25ce480726ab1c8f251c579a6fd34866267e9f1230ffe0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/intdiv.so\",\n      \"mode\": 33261,\n      \"size\": 12048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e414832facdb6fec68924957b52680bc52a6cb48c0c051686a22c0649c29d6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/ordchr.so\",\n      \"mode\": 33261,\n      \"size\": 12048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"432ae6cc0c6720485b046825cd2fcf3ce98f35f2a98dd67690fd48173ccb1658\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/readdir.so\",\n      \"mode\": 33261,\n      \"size\": 12032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74bbcb55017f33564b393786d5ff76271e90594eed7f211a0fb5bc43cb71677d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/readfile.so\",\n      \"mode\": 33261,\n      \"size\": 12128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee9b1761e4b544fd07ebe28c11a68aad63bcf0c8eb7f84902a03f3125331d19e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/revoutput.so\",\n      \"mode\": 33261,\n      \"size\": 12032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df3fd3ef680f398b64961b74832a05eca4c6dc7d5418630424046356daf14ae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/revtwoway.so\",\n      \"mode\": 33261,\n      \"size\": 12112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a86260ac2d637ba7f43d63c4e2a9c715cd7ca5a5052e0ff9cffe53800c6bfc82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/rwarray.so\",\n      \"mode\": 33261,\n      \"size\": 16168,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81be38b3ab864a3154ef572c7ef5fe222dfc81d5fbbf43b39369f6bc173e709e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gawk/time.so\",\n      \"mode\": 33261,\n      \"size\": 12056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0df353f79ed5b2281ee6c2dd75359101d57aeff890bf9b383e6057a8f1695e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/awk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/awk/grcat\",\n      \"mode\": 33261,\n      \"size\": 9240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fe45c08c28eb8490067d039c2c1cb137b8666c2e559e27a3e6fbdd9fabf6b51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/awk/pwcat\",\n      \"mode\": 33261,\n      \"size\": 9224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6568386a4a5d560995e22119b32542f07545ae8c76f69ab6b4f4e9665ada450\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/gawk\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/assert.awk\",\n      \"mode\": 33188,\n      \"size\": 383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f9e0362956d40ea6a92bedd4f292666185d038885387cb00adb5ade1582d93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/bits2str.awk\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7529387edb12e4054b384e96bc4911cb3b0e544602fb1e9de8a983f5fd46c5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/cliff_rand.awk\",\n      \"mode\": 33188,\n      \"size\": 307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41b20eba1d788cdc7d64c3860315b3bb8613f80b5f7d8f04774c31caef64dd42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/ctime.awk\",\n      \"mode\": 33188,\n      \"size\": 234,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf1b816f600516ec0a4f84901e12c48f44c5309bd6bd7b32f9a17abd026f2b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/ftrans.awk\",\n      \"mode\": 33188,\n      \"size\": 315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9957afaddfec5f2c6bc4f9cb12c576e6c367c1b681a472e91ced9caff5292722\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/getopt.awk\",\n      \"mode\": 33188,\n      \"size\": 2202,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"990d764228a3ae5f919dd0e585661fd14bf217617e7fcf33e4c40124d6969287\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/gettime.awk\",\n      \"mode\": 33188,\n      \"size\": 2491,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7baacb670919547d1fc2ec186d6ad937c6f7cc2d03e0b2e8f6802742dc7c6023\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/group.awk\",\n      \"mode\": 33188,\n      \"size\": 1765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcabe4d2e2f93972471e7eade26a7779e0c160c23570d3b32509433756083073\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/have_mpfr.awk\",\n      \"mode\": 33188,\n      \"size\": 221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40d45f7e243e4f7faa1335852c5839fa80c60d70eccd94918cee7edbc58fd9a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/inplace.awk\",\n      \"mode\": 33188,\n      \"size\": 1996,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05bbddbdd78282e495d971a9473b761875f8b11f07963312bb515e0121d7f5e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/intdiv0.awk\",\n      \"mode\": 33188,\n      \"size\": 462,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c184f8a175c7226e9c567a8bb91e5e67ed8e239769012ad16f93c48f8e328bfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/join.awk\",\n      \"mode\": 33188,\n      \"size\": 378,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9af26157a40c1e1c09dfa73152e07cbff4c4f4b31b7bf8132572270da6dfc052\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/libintl.awk\",\n      \"mode\": 33188,\n      \"size\": 238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b3a65b9053d2f4f08733870ef2cf1b5ee8aeba74dc6b9b1d1610fc0d9ac0eee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/noassign.awk\",\n      \"mode\": 33188,\n      \"size\": 422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ffc84e6d111aaf56cb0d3756bbcbd73e2510069ee6fc05bc1ea0e412884663e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/ord.awk\",\n      \"mode\": 33188,\n      \"size\": 937,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7d37acc67a101dd2e23c19ed3f9dfd5d01ea93af63b2ebc8679976e1ef051ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/passwd.awk\",\n      \"mode\": 33188,\n      \"size\": 1199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bdaf71595b473e0cfffaa426f451e1cbeae6d8a9047c5e78cf254b33586ac5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/processarray.awk\",\n      \"mode\": 33188,\n      \"size\": 355,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac1e8e8dee8105c5c1ab2a1b87fcb668885473b7e90b7b0c137275742c704166\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/quicksort.awk\",\n      \"mode\": 33188,\n      \"size\": 1031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b769b7a892acedcdb98d18c3cf05544d4d85488a0378aaacba0c6e2ddb71bf35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/readable.awk\",\n      \"mode\": 33188,\n      \"size\": 489,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06e27abeb78eff929cb1f44256f195fe2d86ebb62814f731f420df286c8f1094\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/readfile.awk\",\n      \"mode\": 33188,\n      \"size\": 267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"751d619465eb57c9d6314eb2a97e783ff84ff108cd1c4efeff8f62400dd77609\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/rewind.awk\",\n      \"mode\": 33188,\n      \"size\": 404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"878279434b70956b26eca128a0939c1a14da97b1626fe402eb76d44485fbc268\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/round.awk\",\n      \"mode\": 33188,\n      \"size\": 661,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28b705d2e2b01cc3ed450cc42e2ff99b058b55ef5a49cbc483aded7bdfa58aff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/shellquote.awk\",\n      \"mode\": 33188,\n      \"size\": 472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78e7df6e31f55536a4c3853f6d54644877aa892ed7fc6e1d4dc9080284d78565\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/strtonum.awk\",\n      \"mode\": 33188,\n      \"size\": 1454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abd27d285278e83655617efbd8e09b5f5271dd6ede37847b0ebd6632be2dde74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/walkarray.awk\",\n      \"mode\": 33188,\n      \"size\": 214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a7f02f135e91bbf1c1cd498ea0e1489802d58c83bb4d112c0a407593db31dd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/awk/zerofile.awk\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c20a5e00b43fbfb9ea420da93f64422ce13d4aebb3b725e2ac3ba0102f169bee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gawk\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gawk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gawk/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gawk/LICENSE.BSD\",\n      \"mode\": 33188,\n      \"size\": 1508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea62a56afb45d77d33fd57599d5936d01bdda60d738e869df795a7392b1b320\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gawk/LICENSE.GPLv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gawk/LICENSE.LGPLv2\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f8a3b10a582c263d\",\n   \"name\": \"gdbm\",\n   \"version\": \"1:1.18-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gdbm:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm:gdbm:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gdbm@1.18-1.el8?arch=x86_64&epoch=1&upstream=gdbm-1.18-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gdbm\",\n    \"version\": \"1.18\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"gdbm-1.18-1.el8.src.rpm\",\n    \"size\": 399977,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/gdbm_dump\",\n      \"mode\": 33261,\n      \"size\": 23904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"529f23c0e6c5aa4245fb4933a893a402cd8502272a86d17c9b8acc75937eb9ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gdbm_load\",\n      \"mode\": 33261,\n      \"size\": 28256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e47b85ae815b8c084f5c0ffef24b8c03c115fcb81f2cfaa205cd70d416adb113\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gdbmtool\",\n      \"mode\": 33261,\n      \"size\": 119952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc910ba180d88fc4c78d778bdddceb6c613519bf9058ab8b3fc98822f098dd97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45/db0973367371f08b177e4618849b4ecd14e997\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5c/5d0a0e38974d9f8df2992d8ba744f71947b719\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2/64fe52cadc76fab3943dfed0b92676b0647e91\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5ba70521f69c9a5\",\n   \"name\": \"gdbm-libs\",\n   \"version\": \"1:1.18-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:gdbm-libs:gdbm-libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm-libs:gdbm_libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm_libs:gdbm-libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm_libs:gdbm_libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:gdbm-libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:gdbm_libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm:gdbm-libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gdbm:gdbm_libs:1\\\\:1.18-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gdbm-libs@1.18-1.el8?arch=x86_64&epoch=1&upstream=gdbm-1.18-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gdbm-libs\",\n    \"version\": \"1.18\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"gdbm-1.18-1.el8.src.rpm\",\n    \"size\": 135248,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/593dc3f676e5512d9bc03c9f1303288a8d699c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/70\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/70/58d003f39b5794bc6f4a408bba5fd94a9763a3\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgdbm.so.6\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgdbm.so.6.0.0\",\n      \"mode\": 33261,\n      \"size\": 77816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71377112fa0caa789139e1ce3023f3c1c35f870016e5fcfe03c46b4c3fc451e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgdbm_compat.so.4\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgdbm_compat.so.4.0.0\",\n      \"mode\": 33261,\n      \"size\": 22360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7d720648d77b465db4f04d3c70e44d1e034f59ae727c4dbd1e3e7f7a7d50ee9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gdbm-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gdbm-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"690d762f2e8e149ab1e2d6a409a3853b6151a2533b2382fae549a176d6bedecf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"fbff831d08897176\",\n   \"name\": \"glib2\",\n   \"version\": \"2.56.4-8.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:glib2:2.56.4-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glib2:glib2:2.56.4-8.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/glib2@2.56.4-8.el8?arch=x86_64&upstream=glib2-2.56.4-8.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"glib2\",\n    \"version\": \"2.56.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"8.el8\",\n    \"sourceRpm\": \"glib2-2.56.4-8.el8.src.rpm\",\n    \"size\": 12272168,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/gapplication\",\n      \"mode\": 33261,\n      \"size\": 20976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cec26da86b3c3105f682c5bcf315eda945126b2592b467e77af705715e993621\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gdbus\",\n      \"mode\": 33261,\n      \"size\": 49936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"795032ffa0e37b46b2823aed16591ad0c26938cc36369f0b878945b1c513119b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gio\",\n      \"mode\": 33261,\n      \"size\": 87432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e53178d7288abcce546f8dd912e3b84299dbaffb93c4efbc788e9a78e9a7f86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gio-querymodules-64\",\n      \"mode\": 33261,\n      \"size\": 16832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"deff748c68a6e4851c795e4bd0a7951c0335091f622d199d4935861224d3a7d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/glib-compile-schemas\",\n      \"mode\": 33261,\n      \"size\": 50200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"310346d8cfde7d74005c83ed84ae798c11d33eedab52f731cc7bd5eaf175dc04\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gsettings\",\n      \"mode\": 33261,\n      \"size\": 29352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fcf18071d58ea9f14af031c4f295043ee1bcf18fb8f6f68a57ddfd40b675d06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/7e9b717683eb904d4a09fcd27ffb15c6e22686\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27/a54b624fceffb68fc4163d6a2a1982b2c4016e\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/603cfb651dfed0dbdff74d7abb5308399747ec\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b/ea76bd288a76f1f61d41e601696aed5c398876\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/f989a97b7d84e636e5885db27a42281581baef\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/8cbc1fc1ce1397e6bd398b2193cd75616b4c3d\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/e761d4c8935cb72273ea8ed17ab98e07e13d28\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/6010bcc879212dd8c540f5bd75790b1a39c04f\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5/77f1ed5446eaeede79a1d56029c6a910f4a8ff\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd/0b41685298dd8671d0db65a8ace3e5042fd248\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2/f09e484ced3d8a4efa32735852ebb4d5cc50e4\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/gio\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gio/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgio-2.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgio-2.0.so.0.5600.4\",\n      \"mode\": 33261,\n      \"size\": 1765968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adbaaa7b4bb66d64f62d429d400bb8b7e85b3b3be4737239d8b1cf67e393186d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libglib-2.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libglib-2.0.so.0.5600.4\",\n      \"mode\": 33261,\n      \"size\": 1168056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9d05c962bb5a6eed8472b53769cf08be4e2c53108256bd4c13dac7564bceccc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgmodule-2.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgmodule-2.0.so.0.5600.4\",\n      \"mode\": 33261,\n      \"size\": 15944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df96d083e12e7d3383e07ed5307b152b07012433a5eede671072b7fd1825abd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgobject-2.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgobject-2.0.so.0.5600.4\",\n      \"mode\": 33261,\n      \"size\": 347536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52dbf8a679e6bfa37e9ac38b404ee3b49f6cc1f47dc6df993091d9ba7e1ffa1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgthread-2.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgthread-2.0.so.0.5600.4\",\n      \"mode\": 33261,\n      \"size\": 7512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efafc11c9a803a77ae8f079976ea61740b3eaf1ec796c584cb51674ab957d780\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/gapplication\",\n      \"mode\": 33188,\n      \"size\": 1389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"199885a791120de218784b28d189becea2cdbdd1c297e8a4a92602a969857fe7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/gdbus\",\n      \"mode\": 33188,\n      \"size\": 935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"819c76693b994a291c175c3d7a394022b7429644794816071ae40b5ca405105e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/gsettings\",\n      \"mode\": 33188,\n      \"size\": 2829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b0b278b6e20a401e94afb6164f99f73ee49af70e12e6c7c054a48fc8dccb552\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/glib-2.0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/glib-2.0/schemas\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glib2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glib2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_CA/LC_MESSAGES/glib20.mo\",\n      \"mode\": 33188,\n      \"size\": 80096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52e840a49e7106cbfa4adb0400f8d357105a8e68aea944dda1023dee325e3b62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/glib20.mo\",\n      \"mode\": 33188,\n      \"size\": 118994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b9b761311cfde7115dc4b986c45c567dc7445c01a5fdacbd464200e64b77a2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"cfbf71846d786720\",\n   \"name\": \"glibc\",\n   \"version\": \"2.28-101.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:glibc:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc:glibc:2.28-101.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/glibc@2.28-101.el8?arch=x86_64&upstream=glibc-2.28-101.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"glibc\",\n    \"version\": \"2.28\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"101.el8\",\n    \"sourceRpm\": \"glibc-2.28-101.el8.src.rpm\",\n    \"size\": 17885631,\n    \"license\": \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/ld.so.cache\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/etc/ld.so.conf\",\n      \"mode\": 33188,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"239c865e4c0746a01f82b03d38d620853bab2a2ba8e81d6f5606c503e0ea379f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/ld.so.conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/nsswitch.conf\",\n      \"mode\": 33188,\n      \"size\": 2197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eaecde680c4130f71a86bdd41e1deb39d5f30d490efa0d237db822caa0df8640\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/rpc\",\n      \"mode\": 33188,\n      \"size\": 1634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b24a975dcde688434258566813a83ce256a4c73efd7a8a9c3998327b0b4de68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/lib64/ld-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 302552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfa930b47d3b4a2e26515e312074ad260669d6eef2577405e373be1062688ea0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/ld-linux-x86-64.so.2\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libBrokenLocale-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 10208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d90f31416c728abfc65625f1aefade123073262ec17c46227a3ae13471797679\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libBrokenLocale.so.1\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libSegFault.so\",\n      \"mode\": 33261,\n      \"size\": 24008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d449618573c67844f9606662dc019f56162ffa16b60d454b6d96689bf2386c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libanl-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 29496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7736bb94753eb012a45ae9d15415bccdaa6387e19231b59a64d50bfac406013\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libanl.so.1\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libc-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 4176104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fa6af1fc5431a4ceab72dd3308187473d12d78d2ffe4cb0b0c5a3a1ce726703\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libc.so.6\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libdl-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 36824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e09af5b88325af030928c490ba8d9f9d7f8721398d60cee7ca4b8c084299c17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libdl.so.2\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libm-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 2714928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28050b5fd9f301ec20e3c5e114b8e8119403bc5489aa6908bef6fc305820e9a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libm.so.6\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libmvec-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 242248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec3c62619ff973af91fc7e7ef677130a59599a1e4835523824ce923b1f3c8972\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libmvec.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_compat-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 58280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dd7d0e5dd867a847ce90a10c72195c42c7000bf8f42f111d178fe6d0a5c2784\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_compat.so.2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_dns-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 37432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32d4fe2fc4c0c57ca38730b8bd9af40dca61adc3e9cb8b0ce4a28cd783b9fd5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_dns.so.2\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_files-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 91144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1093a9b073d122858e5338ded80123ebdb63ae17aaeb5737917597a1b15b1e0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libnss_files.so.2\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libpthread-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 470312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dfbb397e73c9fa898757727841b50c34c81f4ee481ec49179e7f2cdc305dac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libpthread.so.0\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libresolv-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 142528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7650f8affd9a8d66814b835ebb74e7dfadfbd9d7326d55441962861a4f8e3f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libresolv.so.2\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/librt-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 98680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43d9f5890b0c30577b498abde2ecc17de51f61f2d494694f8d5c1a423eb40820\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/librt.so.1\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libthread_db-1.0.so\",\n      \"mode\": 33261,\n      \"size\": 99136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1d02ef9ba508ef8c93f25f30f20499655143bebafcf3dada3c4d13045c613bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libthread_db.so.1\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libutil-2.28.so\",\n      \"mode\": 33261,\n      \"size\": 26864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"065b7b8ca37bd4424a9143a7e527f7206e32cef6a122c87ca45bf5d37a36d206\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libutil.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/sbin/ldconfig\",\n      \"mode\": 33261,\n      \"size\": 1567744,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e541b4faa8ac1ad5112d645e0dd17f65a83529d8c3e6ed1d03d508a95f62e17e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00/c5a995c589153a569688ec12906ecdaf01560e\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/01\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/01/d455c18746bf99e6f71a628eb77b40d1ab787d\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/02\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/02/41c7b4e28f9a6f82e0d4c6e05d58a16656536c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/02/aac1ddb856c7a55ae8a2145248509d08325f1a\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/06\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/06/bf4da48282c35b254f6af20f58b7d5b6193fbe\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/06/f9d0dfd39cbf699ca11336d3424bed8fe165b8\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09/bb7e91722005b16d6313205c4d8883f1c1bfeb\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b/c263134082b5a5ea7692cec31f3486669457b9\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/4a93941a2a3aa855e2d9d28f101bf7e663f5d2\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f/83d52b1b6af056f47eed28e20419e63e1568db\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10/bc40a87d15322f3d7838f63c41ac2651c4f903\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/11\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/11/e7606c250be8366474d7979c21cd421578efde\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/065cdd3b39e235ec6ab4e6ce05248eab1a22bd\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/1a4c43f41be0be80b2b9adccc86869161b8991\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/31eb804962ed5ff0e3b324ba9ed43314d97dba\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/470d75451fac3aefec84cb5ed43dca5323c932\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/785585df9e233f77a01388708232f11a424c1d\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/c2d445aab125168c2a2f69fb9b2e4e75b39523\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/140c3d828b10a4dcc7b7c7d5588b3444478623\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/3705d882be767a2f3ea11d1f4e8631db361933\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/de15070b3284d4fceaa4ed8691b482c37d0aee\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15/52e8d18539af3bf595e9168106e2cf5ff9af3a\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15/a45d9fdaae1da1bf09a350c06c52b43ec4695c\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/16\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/16/90a538ae663c76d62276aa54083f8e3a7139aa\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/17\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/17/59a6708e312339a16dbe32fae430acb2644740\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/37f0b91b82b70f3fe0f97ddb6180e27040430e\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/51e93133e5705c0556e56ffa770125b6f65273\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a/b1cd05c645a5375447996e14744f9369e6cab9\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a/cf520e445c9f4ec6ea4b9c7150bdd90336e5a9\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/55da05ea334fec7948b56a3df6533ffe2e37d3\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/71f56d95d71ffdae3ed1081baddac7964c993e\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c/1b3c7979160d201b3e47bd600cdb255e3d1866\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c/3ec84cfabec646ef61af40a059aac22a687374\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c/b2e43bc10fafbd102d74a9bf7f59256c54b96b\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c/b73f59b1c806f1668ac6168cab7999270dd118\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1d/24b15d6ac5ec82dab88fd51069e43d4a1f997a\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e/303ba69668f7d7fc27355b1f465f8ceae28154\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e/fd656687a267c08991712f10ef2423d05a0831\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/491b5d45fb662d5400855809e8930eaf955edb\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/56ea8226f1485e89b6ddc2741a2b810b9e9f83\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/712e0213ca73fbe5fd41c1f20cf33a2963c663\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/83884b7ca9445631033b9c6c722535291ec612\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/21\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/21/b046147f405fb675dc8f2439e11b1425361159\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/b6c29ebfd0887f2996c0b0e1fb1679dc379007\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/f1ec5a530600336c5861f33fe1be47bd1ee96c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24/2b95f2bc235c7df55d7b7db117766e67c9d2ca\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24/b0454f218458d8d8ddabf845c5c3b203113ef9\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26/47cc1bc909c9fcce91d8c0f3fc99fb8d06bcce\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26/cc9b5c95bf87f62537950f00486b9b088f65a0\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/29\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/29/13703eea3c346f8831b89964da572b8c6fa278\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/29/c178c009a6e1ca744bd5a21acaa30234bfd407\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b/00ece352e5bc5625d4eb1f18393b2f88a6c179\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/08ed7ba74ddb3645d57053247312efb64099cb\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/537ba811f5aa338f86afc0b990b1005b934488\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/810db1e6c989d277812b81a78f2f2f9d4c7a7c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2d/aa8a1086d00500191ec5467abbc897255cfa28\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2d/b84ef45d98e9a4c999c0405f555db8fa49d7aa\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e/9f9f2500c5e8aeeb112d755a4177f5b96d4891\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31/a507caa25b0e6a6efe05e48d7ff23447e552ac\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31/bbcc2fc44edec9a13d58b2d91c859e986fea3d\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/35\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/35/a582e3d5c6cbd4eaaddd6aabca21258a7d5fcb\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36/3589335e8a664e8fe406001aa6918f2efc6213\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36/7058be989dbb9c741589a34fcea25daa543cd2\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/38\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/38/a3dfd87d6a1206b4ebd296847d699cb7d1a4ee\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/1a8b0820221bf6f7d3409375f8fbe56a60813a\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/c43eb9296c192baecd5b5440de1f83876d5965\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a/1f462e07237c757c1bd2be00a4a44a4485e9db\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d/26fc8b485d0850e58fe65135aecc1b7c7ac408\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f/265b85db0e5d1c5f67d4ffc12a5e9484a42356\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f/a941896f4442a56bc249e52099f574a4ac8964\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/40\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/40/106e92521651b1e1323ac692047ad4e751b401\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/40/12da86edfe6cfbc36f697ad1088ee7796b40a8\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/40/fd3c24ede9dcafac06bbebcd8d0c4a30a99184\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/41\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/41/5a58a87b3bd78d39bd5bd924e276c7bfc3b406\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/59b1e7f18fd424efba3aa00b6d91c803ddbaff\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/a33bc2b5a3ad4da56cca15f2f66b34f6eb01aa\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43/92daa88c67c2006fce76fdfc24a2b135950881\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/44\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/44/75d191ae3efad79b028afe6b21710259726121\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45/b1658f4ff5a6eea4dd50232fa4fef5c6425323\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a/6e94390f6ca96ed2a19ebdae5d651e71caefc2\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/5180778cbaf25b6322c8d711651ca0afb2aeac\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/55cbd1385b57169f09a51fe32b1441a1b2f792\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f/495822f654e364dcb7bb7a9e430e5d73a48b91\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f/67edb358b03450eb954c1d0be2fc0813b50c29\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50/250ec3c308578756aed6fdd83ac218ad24cdfb\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50/ab6047d861484b25798dc7eb7decc264a6c294\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50/d86d885ce54e83af2e519eb5fcc7de701be198\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51/34b8e7ad70b3200eb2aba1a53a7016599f65ab\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51/d6edda3a72530e557da2a1c6c37f3ca148aaa7\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52/d620cc6c6f69c25d9837aa3d7e337ba5c27fac\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/53\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/53/ec1697135aeb6d8b8b74f3c92393af97a54bc5\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/8ced556a94bb0eefa68c58db43ffed4110b10a\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a/7e7480869f7141d20d4846379ac645c3a4c3f9\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b/a33466f8bd4f24844a703b61c9ac21d7422985\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60/3453304142a0bfa731195f5fc0b5ce7e310fa0\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/98ac00884e7433a24f62a0f4cb9f79aae405f0\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/b0c71456368e347e3013e7e3cd8441f8e72e97\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62/3344e84fc4facd5bf64141bac6ee949a437eb9\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62/4a92f52fbdc1f739cf80327cc83e83144f22b2\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62/5fdfa3d4406fa7b98efa39b5f45b1096c6526c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/44f2168afeb081cc0d5ef5371bcec4a9fbd7ff\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/8a751047099a71a51894d0708a1cce92d21029\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/d5bfe68e9071b52c69d22ad4264c69304fed2d\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65/7f762ef5ed71c9ef9c5c32e4d9cb935865b504\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68/3724b92370063b24a1b73e0e148f023ed26670\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/69\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/69/3eaa5f4374b9a1821e7409b4ec9fa86a3786f6\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/12d885fda3dd20b27766f5e920869495dca343\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b/4b2e57b3cf6d5e8f67f9ae2bed0c50ade0b941\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d/468d512d4ff632f75087f7f67c84a26675b918\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f/4bc33c8b7722d08777c9e4583e6ee571109e0f\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72/e7baddd1fddcf4cd9f8e0a7d7e0f3b7968c945\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73/c75bf6a77e9e154371d835729940c09603767c\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/43e371d30cd3c158c4fd700714cb9d2140dcaa\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/59c61464f482e85de3909d4a3ece9d2a19e8be\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/742bfc41e91feb28cb0aef4284cd102ad4b3b5\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75/5564517106c76117b49910f0f8f34f01652938\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76/f931c67e47a2a1374a0170a28f9629947f56ef\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/12abf0910723fdb8c9bba1562b2b1a20978d03\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/3eed80c0193c012d402e1280d9488b1c828a13\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/6b9336c7aa1fa1bd9071fff5b61a3e055c53cd\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/7524fdd863132d5cc8225c517cfe68c368a7e0\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/23024fc7cbe8ef2960d1e36ccfc235c73f927d\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/2b09f4f5b2a60ae4a42a6562d1f278396df8b8\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/dcda152dfe84dc684abc7a71eaaef6c00f4a64\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/e52ed569d2f3e00647d9a6811542230958a09c\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d/a004922df0f6f82fb8d75e56f69140654f2423\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e/ef510b6917b0f0ecb9a2534a3db36d563dc0c9\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f/b1f125fa3742b3df99f58561307373b8344689\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/81\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/81/c1b4153b2554bb720c85badd9b840d636ab016\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/81/f9dccfdd948d5a946e5a894e15dc70efaf9d0b\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/83\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/83/1219580640962d42d473aff1481536edbf4137\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/83/fff7e286172b1db86e4f976ec9793806a45685\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/9437dd01f27c1e4c5236774643d1e448999b3b\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/c02eb556c8052f3cb57b311d022d0127266658\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/e1fa8f5d2cbb8e07d36a63900891fa9d7f3fd8\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85/0043f623e78d894a0f397a8c69310db6109723\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85/16f9ee18b5c60fdc61ea7d8b46b5e2b38ea4a7\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85/66c26908a17ab8b1b93f4a7a13953cbb2020c5\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/85/8735f67721bca81a63d83b290cd349815802ef\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86/69aee85135281de089335c2c94d2a89ff6c961\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87/415e64bc33f23de887684a8aec65e8d8df5f2f\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/89\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/89/8630859cbeef3efdd38ade03fcbc96e589d543\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8b/5d28e9bf9ce0f568a5376c7503f139dd86ff79\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8c/6ff412bd42d85fe224f6cde4cd8000cb11ca2e\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8c/8f054034f54ec6a1eaa1ce58cde3a8e9172277\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e/f26b8e1ba1bec553d97304fe8588f9c64fa605\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8f/4e2107c52cb9035321c1156cfce1b8151952f3\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90/8a3c4837c68097a79ce5bf70fc3c6e5cb70680\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92/47083471dd15d03938e09978f326a07e50cc4b\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92/ad88d2e59935239e7e98561d2692fad745acd5\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94/407ada81301fda27e4032ccd8243639b8ee78b\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94/84c002ab835575363b8db16d5b16913f7b7610\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94/c6e211f544d7822ed5192211a1ca9d256805c5\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/96\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/96/63fe29637f1f3134beff1ba1ad3dc0fc0aa191\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97/831137eb73aaebb12a305a5069bca3027c591c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/2580d5381a62f5352ca08c29bc64c0bba33f8c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/a26e0b5b23a1699853988dc3659cf3660d7d61\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99/a322da9867e8be1879630b1575624c5137aff2\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99/b969be235c3b71511aa50c24c556abbced244b\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/1f7e81d585cedd491b8441b5a06113c9c70ef6\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/23641ef851557b901e606b0357620e3c10cb25\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/36454d89871c963079adcb3756b63d02202078\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/378914b945c9a81be69d44a0205f0c023a5691\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/ec285f9c52045d5c897570a1f91659930c1117\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9d/2e60547d5dd1c5152958af8888b48c0aa5e4ee\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9d/3ed1f902075504a1a8aaa6c498b5bf455be8fd\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/474a399b55e54846630a928797ef26f4a4952c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/f1e47a2eef95b0255bd7bb9731e82f00ae9d8c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f/7ee39bead128f3aedbd79dbb017382f5243530\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f/b5ccfe57a543e76139bde0506566a1e7fa21d0\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f/dd1e25ac3aac9aa97c414f25fabd7158c69031\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a1/9ce0eb4e7dfecfebdd032f91d297f0a316091c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/376f3b5912ea344025bd1bed92af165f988c2c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3/1f721327d09391010f3a97d24b1c85eed4804d\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3/fbc51587b89041c0132217392761c8420a2678\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/05555bf99194b687d1fcb45154da53a9b501df\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/92fec5ccfd3c8fc5e2622f565e42d6723c894e\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5/05d74da3ff9642d2a6c42e6e972fcc34bb6f47\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9/7c2352ff91a022ddab8a87de365fab60904ef3\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa/d6aadf05499654ba3fe1dc04cb27e15a80cf52\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/92e46c173f90bd1ae2906e3f2859ca82e35c64\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac/cf0c77e2bec7f3c3340aa6e6c6a6c4c703ad15\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/0d491416e162619217f6041fc73cf9cf2be2c8\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/d38c8fdb8304af0ff5802662a05718f5ba50ef\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae/0719dff9e5612afcdd849223c5dc26fea78a4a\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/af\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/af/15a36d75c41954a70e37e84b5f9185e29846d2\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/af/523e138ede7cbf00cc2bfb0d38c94abe086a97\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0/4953f358f468bce94bc56327f692de6161b4e1\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0/5e860f98d930be079abbace29c10a467607646\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b2/ceaeda0c88b3569b572179fff146fd206c9a1a\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4/60e2ac29cd345e391ff4610136bd34122a1625\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4/ea85cf39db22e7248d1c86634505e64df9f809\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5/4efc22b698871a86a55bebeb8eb9979eb42c08\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5/7439bbb229e3221541fcf537db911a501b181c\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5/dfa097a44ce615a42d574a305fab6f88f4c9af\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6/3416e0bbf6fb2be142970df9482e48eedc2fbd\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6/496ccfda77e420073c4b32ed95561a2b8cff25\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6/68a76b55a0d82162363978583cc17698c3f17d\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/279f55f7a81d13a64d96c0fc0ebfdba887351b\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/f4f2defbb8620e2f7ec8a0343f009a41e7d34f\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba/5b664e273b0df7b8bc345932e1c4c3b37a643f\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bc/b6a05beeee5947c260b0c17e85d7f2d28930d5\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd/4933b12c35f170ef1fd8c434a8068e48de18e4\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd/8fd198b7faf3159de8d208f7b9da50e3bb258b\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd/bec42758beaec651520dc545c06571002bfdc9\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/1aedc7d2770044ffa77fe5adc8c56a3b5740d4\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/8a32b2faf25e9f6bfffdf45557bbcd5b04feb1\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/b479d690c7949e351b211c3b26b443a243fe55\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/b9ff2ca29f2f1e65f87ddb1f14e8fd1268424c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0/378dd7f72747636c94c930c830c69e87a40063\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c2/6729095ccfd327f00bc75b03fdc14dd70ca29e\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c2/89ce68ad8e8b46792aa5208ec2fc99688e0425\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3/523495e11a180fc1515a045684f5d6d0090d48\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3/ea52dfdab2719accd9d879969dda718b468eb3\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3/eb8c0f35081ceb91dcec092e172a97b128c7f5\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c5/57b32bd71ac0e2dfd3ec7dd8e12e86edb38996\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/258feabcd446128c047c3bf6650a13e1e2511f\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/4b1fb2772c2b014c9f85ce6053c2fe81b70dfc\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/9b7ca916ab1a537ccfb8eb9ba358a9892fe69c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8/4c2900e352ca38b0a9bc5f0682258524b2f8e8\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8/8db02d5bd62e0dcdb3e99bb29525564492d101\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8/bf0f512b7313831c5dd2dda5158b3f0abff5f4\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9/aab3a2008cab1640bd82b6696705fa677fb68a\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ca\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ca/62c15ac82fb1e64249669ddf03c58f415d876b\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ca/c7d0a2a167de527d89b0f1bdd7fbad626e0f24\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cc/1185d1dd805bfd534269908cdf88a88feace93\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd/3b4f3f98cf443da2624d3f62479bea6146a8b3\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce/2697a86214d3df87e38c28222e0ccb912ea8f5\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce/821aa7a062a6eb2732035b66c3c3351ba16fac\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0/33cc4530ed4f410b932814354db1ff80c1c92a\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0/fc6ec6a85a6c1054671731c6af56a823467191\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/683e5ba3462d50a2aa165f4e885e6bbd2d5541\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/c6cd24a8820d2163664bbab04cb9758fe53a3d\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/dae9d35c7b4b42dc2c55a3c025506428c046d4\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/f90de11e2695a8e4f641b443471399e8d614f5\",\n      \"mode\": 41471,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/f90de11e2695a8e4f641b443471399e8d614f5.1\",\n      \"mode\": 41471,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/f90de11e2695a8e4f641b443471399e8d614f5.2\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/bb8839ce823f0b7a137d08140ec5e7abbbe696\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8/5f05783eb8e5d47bdb035eb3787b55be9309de\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8/73c14b4bcad5bb75c7f2afeee6599268b3616e\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8/e5b959d3cb03b38960f67e248ad9e6cc99bf7a\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9/4a2725956841d38ee64a44f8044f8c844950a1\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9/4e304df603659795e66305c231b0eaa9341aa3\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/da\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/da/61fb8c886d06491ebc4ab869d70d19138780d4\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd/75edf58317edcb4140e9a3015b0ad793937ee7\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/a1b2450442d5ec62081384cae3013fb32ab126\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/a1da12131d855b3f6bc388ad7c21adbbb57fdf\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/e9fac226575c3ef3c53ab3b1e7790e6a77189b\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/688f6aaa85bdc721e367010a897846eecf174b\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1/516bb676eb5e4ec849fae8c698bd2764786cb7\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/975d12860dd55f058579916278df633ff28005\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e5/73c7b4ee0331210ebdad69f02645bcd35efd4b\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e5/76a1f7d9400d2f0888d10f510c00b50b26306c\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e5/e07930a68e6ef3dd5581cc6412667843b7b4c2\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/4b115832d297f8828a4424379d3cb1eb49b813\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb/aefec902627a60dd23f71a9950576974ce080d\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/4976c107e04ad355d43585ac12276552f12934\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/868a65c1ec3b698ce633a3c980dc7fdde16103\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed/16aebf7ab56bf4c386dd46ad46de1b21f48086\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed/6dbc0b180ea73ab3cb7fc25b329eb45f264e22\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee/3413d587f6520e56b2d214da1bf64f0e122b1d\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef/75978a309bb119ab1deb212b81dbbc0ab8aa5c\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef/c1aeb7852c9135766448857caeafd5e760b8bf\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/669ea8db17e25e0e7338e1f78e8d9063601f7b\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/a4bf0b38b6cb79b04f9e7bb9a04298e6727efb\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/af73cbc0f93ed1d96b7a747c8425f1bbc75b74\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3/0c9198dd9b9a170def10a253df516aa12c9afa\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3/f1d9dcaf9735ad3b2d5bcd828c458a81c29eac\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3/f4a441d172cf6de3eca6bb9f29fd8fc95a4d82\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6/0516c4cead48a440791b7868b4e99fd056c148\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8/1792bab6aac38d08181f350e90d2885b420767\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f9/1c45327b5ecf7a307abe0615f917f031ddf052\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa/2d12a7c7705ca66d6af13384a5b7c1d9209ee2\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa/abf32121d7cdbc2138fd5226b02203758599e1\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc/3b394f79d4d3f0c314b380203aadcdf7175cb1\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd/c147493de1d9e02ded83a66f714def5bd09075\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff/fc08701aa11f8d8200295fb015c9928eeb8632\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/audit\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/audit/sotruss-lib.so\",\n      \"mode\": 33261,\n      \"size\": 16320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3713a68da3e729fb983958d27a4b1c79ca6a7dbc3cb5860ac38105ff48bf39f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ANSI_X3.110.so\",\n      \"mode\": 33261,\n      \"size\": 27448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1205c0116c2fbcabbb11e13dc301e750a25c3615127c46d25f27f166a783d927\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ARMSCII-8.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"259e1d2fb47a0468b5cb301b747fbb6a94b5591b49a464cd2b463ed7efd1049f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ASMO_449.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bb53d913d3da5e20af583f50b8cee38fd0a2e507a7e92f12fd6feb1527ab80c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/BIG5.so\",\n      \"mode\": 33261,\n      \"size\": 93232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15ab48c765fd60ec03cf23e102685f8ac1bd8bef38c7bf83a1f3ee2cb1e9115d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/BIG5HKSCS.so\",\n      \"mode\": 33261,\n      \"size\": 240232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a206e6805c270873ae643c4aea7b0d230fbf1e59a35e6c59f23a72b0a169c8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/BRF.so\",\n      \"mode\": 33261,\n      \"size\": 14824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efd0030026fc87ad853152651a5eee4925a1b481221c291cc08b32deb7a69416\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP10007.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e60947bb64a6eea6d3e65a6e5fe2de7e2d6639bc55c898cac70ae97f49c55f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1125.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750dcb754305709aa23b6d7515a1049ee8eb5831b23d00228199ac504810bcfa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1250.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a57c93b6d7bc8dbf7cd2c07a08754706acd97ad51a1afcb26f80d0a7dfaf243\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1251.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45d0e7785c0c969604d16200a23540899ce641eb38bd5a2b0a37df93995b20d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1252.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acdc3491486df814c9148a9a500d1b3e22e369148801b0e8e1ebb33875959828\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1253.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f51d0213a996ae64fd41975558bcd319b8513c6a395c64f319bb113a1131782a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1254.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8399189e8a5c0a8fab7a9543e6faf44883799a5546fd0a149e72b0b81ad773f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1255.so\",\n      \"mode\": 33261,\n      \"size\": 19080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f6f0c7ae470beeedea74f8aa3cfa32a4745f83c085314893b6ddad843ae368b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1256.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df3eea85345656e412582c155ae728fa76465c7f8b219f99d131993a21ecb2d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1257.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3419d382458d430456d1d86632c05120b4b5425b9bc08e40f1fda7f7acd49df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP1258.so\",\n      \"mode\": 33261,\n      \"size\": 23176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a116e2b52da40a17a2082529e454151b4374cd1d940443c7cf3212eba66a829\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP737.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4a83ed3b0b8af25f227b450db91aa42b708d412ba670d681f19d70261198463\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP770.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07fd5fafb78ae3a124db93de822d9a029d170739e5e3a88b4c507f6cf61646ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP771.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6438d145810ce81bc8e4e5e8a93df85cebe78e345dbf49740a018ee32e39299b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP772.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bce775fdde2b8e8a3aae1cd1a5f1620d7ee95a7ddd63503d9f91cc0912037338\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP773.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a384c9dd7dfbf831c0888cdfc55846bc077a114ab1b9e2f64578e780363bc2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP774.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b5547d609439d7829a12976107222116b158cffd1f015f687cae473b5c2802a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP775.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e76e4ec2e05ed15e1fb2cf7df7ba759c01b55f8774414cb6b6481abe2d97080\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CP932.so\",\n      \"mode\": 33261,\n      \"size\": 101048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3701c8812e49da2e7502a42dfafea6c881446462f1828fdff6cc954facd4a3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CSN_369103.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97d0f21e5c0b1177b28906cb50f85267b368d1d7376666d4cbbcd54ae23ea8c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/CWI.so\",\n      \"mode\": 33261,\n      \"size\": 14824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7c30b519becb87b4f9178506b8b6a2993b3754f4946050e6cfa02d022df39b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/DEC-MCS.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab99fa4dce32356bb347d28f7a0dab2895acbe3772ad5ac41ce67ce6e91a50f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-AT-DE-A.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76c9cb3290764fc938d7998a6c4b1dc51a9cf68728fdc47dd980732440eca36f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-AT-DE.so\",\n      \"mode\": 33261,\n      \"size\": 14904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e30bbcbd896ba6405fed86162ab9d94d5fe572cd0985e5a8f37e939ce5c31ce5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-CA-FR.so\",\n      \"mode\": 33261,\n      \"size\": 14904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91aabffeecf28c63d586efaf1a508b4d92709bba1518f574dfdde5b055d75d8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-DK-NO-A.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"451cd688d9f0881c21d77fc8c725b2d4b4557c52c12a3b672ac0dafcbb92093e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-DK-NO.so\",\n      \"mode\": 33261,\n      \"size\": 14904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63598ead3aa79cd0cbcd738fedb7d02849c32b90e00eb00ea159481799d1f30e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-ES-A.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6566b28b23a88ce14cf5f2c30633968fd8b3c11bef5543ec599d286fc7144e51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-ES-S.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81fd30615ee0638b215fd6acb7e4c713ad19ee8274f9b60252eed16d1749be62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-ES.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ad1ec13d358961c3a5065e213b87b03d5720258d7c6c8edc037285dd60e6e89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-FI-SE-A.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bb2e8003c7e3171d778a460efe37b533413b6ba0f2d9630d92a77def0321597\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-FI-SE.so\",\n      \"mode\": 33261,\n      \"size\": 14904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca2efeaae82d0298ae44066561cfb34e630592fb5b6a86a4b76267f0710f00ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-FR.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59b8aeb95b1efb33f60f746f00e5296c37df462eef2df6cc369a80975638d1eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-IS-FRISS.so\",\n      \"mode\": 33261,\n      \"size\": 14976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6ef73d6e6c729b7258e557e1075881f38e14ba21fd8279ba6215ee9731e8cfe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-IT.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ec1616df856b4188d05b43094b548825c31fc71b4a09c031227ffd5e769e4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-PT.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"432016aa6bf458e52eb44831a6ad5cdc6e72f488728199256a6b7433c35a4007\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-UK.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81efd217ec202303028172f5b0254be6da293f616c8b5761c84c5c7a62def7cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EBCDIC-US.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6933965538028b28ed75ee0378e4b4b7f3df9e7c8eaf809cb663749b800a8b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ECMA-CYRILLIC.so\",\n      \"mode\": 33261,\n      \"size\": 14944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1699d1c6bb0ae6f20655030273269b617ad682a0509ee25c01180963fd20a5ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-CN.so\",\n      \"mode\": 33261,\n      \"size\": 23528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"caf1a3e23c8410e7f34405866b4cd2246b5f79aebca9ebc90cde13ad1d1f862d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-JISX0213.so\",\n      \"mode\": 33261,\n      \"size\": 23416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d17b0313a70d65e97777e7f8afb4b46d1a33593f5c015cc4522dc254d415de4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-JP-MS.so\",\n      \"mode\": 33261,\n      \"size\": 92952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2c497cf1bf88b1b2b1717845641526b2b07f378188de219a16a22efd4c4fd85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-JP.so\",\n      \"mode\": 33261,\n      \"size\": 19416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a763710070e85755114f0bc1493a3db774ac127ce7b15f42cf6e98d7edc83de1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-KR.so\",\n      \"mode\": 33261,\n      \"size\": 19144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3b774dd0d0ec509dc998e5c7f30ba510ca1f7443b04e2cc7ff4d05fce2ed86f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/EUC-TW.so\",\n      \"mode\": 33261,\n      \"size\": 28376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"146c9f6c7aa17a6bed25d8eba5370851cfa4a2ad093cfd0e6c03239dc4d2d202\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GB18030.so\",\n      \"mode\": 33261,\n      \"size\": 182928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a749d318932e61164c30812441b7ac9798c20f9d633dd2031e905bdcc24fbed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GBBIG5.so\",\n      \"mode\": 33261,\n      \"size\": 59680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a42a6c6b222635178dfa8819d7f92726087599dfa22f29fe81a0697efa130bbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GBGBK.so\",\n      \"mode\": 33261,\n      \"size\": 14592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68f0f8a264fdb159a68c304e1ffb822236240e974d7b50571535268b18db23a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GBK.so\",\n      \"mode\": 33261,\n      \"size\": 121800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2383a2ef8d84cecaeb6561a32ecb39548158995453ba3df2ae88f06d5cc2dd0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GEORGIAN-ACADEMY.so\",\n      \"mode\": 33261,\n      \"size\": 14984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a58e90ceee51338e8dd4c22b5673b5a27a79033845c007d7388a216b65f8466b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GEORGIAN-PS.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e183bad792c5b89a505b199388e51bc03d30ef448cb4997ab571b359cec6aa69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GOST_19768-74.so\",\n      \"mode\": 33261,\n      \"size\": 14944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44f63f9abffac1f3bc58cfd9b56302191c9686c17c0e7a5bc6455b87e0ab36bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GREEK-CCITT.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce0a447d48ce125259ebc85d27fcea90fbc6ae5b338764f3247abba3268cdc25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GREEK7-OLD.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f15ddc64c05a91fde048f93196e9323241778e9cbba1bf609d6908dfb3f7d08e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/GREEK7.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1e728e0a4b484879789796ad9d3e1e416d07056dd6034fd1f4de97f686e0367\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/HP-GREEK8.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc322a18b853f0ec4e06f00d21c2543a6114a8e214ce9f26ad14a4c37ad5b4ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/HP-ROMAN8.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d58c94aeb0ec9e844ece35e9a021a765d3039e63188e62a5f23cce79257a61e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/HP-ROMAN9.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe7bb19d424a8d8f421812f467d6d54fcb308a4ef1c67193bcf2e91e4937f75a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/HP-THAI8.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b930946cf2f8a0ea79229705e4b96ab7881943f7a8c532e2ce9902094bb0760\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/HP-TURKISH8.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d678ed98c7ce6074e1bb90cc297205b565fb4f8895e7ea372d6f4c8152bd4590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM037.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bf0af69e8e79c2dd5615243a58206549482cecce74b488b00e050e6636cc8b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM038.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb2cbe6a517fdf24ddd87acc77856106a9a4b36f1d8e4236b6e82ad7cea8ae8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1004.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08283aba23cee529a33685e2b59ab8b160a3e7ac858c003090209d3c96945a8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1008.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2129f6e3e9b4aaaa7e68aa7261ca81a483fbeab0d1517d9dc1f88b39ad6cf01c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1008_420.so\",\n      \"mode\": 33261,\n      \"size\": 14592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84c21edff9eedec7011de4ac49e945ded74fa241caea1adad48e7e49bae96229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1025.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"618d8863ade1c5459d05ced82900e46055beef9ff477f9aa48ab9321d4b24014\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1026.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2cb2c20d6d189795dfd59b2c3c0587b69904df3064fb57a55b2676ae63395d9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1046.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b4e4e023b2834685f4042db472b76772c7556460a21f56686b5af3ce3a612a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1047.so\",\n      \"mode\": 33261,\n      \"size\": 14832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627dc8cfe1c9b57a7e918d4687a411849c1ec7a0cc6261e640d924d1fd58da61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1097.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e11193271483b9fc00c22b1bb0e4a544ab2b65e467432d5f81773f10f39161e9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1112.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0771dc91d64d0f685962fa44f06b5d9dd49fdcfad619dd54499847266a0e825\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1122.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4de37ae4bdbb87f0ade5ba82fa36447b1fb9cf4038996be80e896331d21d42f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1123.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b29dde90e7a59e862d4103b9d3fd449dedf2635a10b7f520a018fba9ea462a95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1124.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41133481c1425428939b3979da95f8d8a0a2cbc9cdc058d09bba81f200f54a1e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1129.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8cd28926269e802285be910d3dd8de62701ee96e9cd3fbf3d571442357cb4f5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1130.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9e29dd4787406844ef9202c4d48926c044d04123c19bd6fe802965442a7647e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1132.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b035a422ea481f731a4f4343daac1b33e0a6c83d3235d753bbbdf187e7205155\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1133.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2e4ef470b3e09912d06907f58eca4a7e0ee30f984a2bf809820f29f7ab98269\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1137.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99351a991b19ee98a7fd542845d6d74fbdb936fd44c1b1e980c222e0fde4980c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1140.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39a575311fe4409cb7211b40e75d3025b1d7e31c9a7ce36a0916f42ac0decf6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1141.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0fafac0f3805f349149d55ed8c1e1136a9abe871069ac0945d759918f3f83bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1142.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9de34104c24313a4b998aa3fae405e6317eca6a545479d4e9bb77b2f916cae2f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1143.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70a0d655db1e8cb2ff79656c271055dc1f98b069920304d211d77a5ee7e97488\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1144.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fadbf6865612ccae99e2397411b5f33f913f4f26eeb3df5010342acc367c599\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1145.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d33f86dd36b9656a21afbe3bbaba2c739f5b547db31e148073a2697ec6eb986\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1146.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"824e888c9d33e073ffad7869470821740e9dcc3d29e8b2d9e9747a01eb44e6ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1147.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35e0ad5e620d5adba8ab376c74b672fc83f0e047746ca62bad28adeedc9bd37e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1148.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17c6b32cd7dc3553bbf4e28be0fe7f0a5b0207714f37d01ebbf221b2b9159b90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1149.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85cde014dcc1f52e9c7e3fcc4a8c29aac69957f398e68feceeaaa2ec36fba6ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1153.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e2bd406c2cbfb84f73b511f95e5f58ab203d9457734781abadfacb3ea8816d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1154.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"851d84dd49b6db349b074078b80ba86aafe8bfae36647c0cdb44f10203d49475\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1155.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac6f9603a46f3f1938640e02a81863de5a90882a87b63d86802e2bb5659f22b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1156.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"688fc7e1edb854144a17da839ee29c9fbd836efac400fc42856718d2a0c3212c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1157.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c810a299c0db31aaa5e4d32078fe005b109986a5597fcef12b0297593d2a62e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1158.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7083183f1f8896a01061978e8ed295357ecfba2a7d36cf1b950d449219dfc672\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1160.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"451037b1df5419210b241516ba1c2305e3a827e8c3b7b195948c204e6d705ddd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1161.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1748b5c1a1208588258edd94afd7db4c5c6a6902864a791f3afe004f7998c3b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1162.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b3aa87042ad87ca11d45dbcce028670ee8d9ad6d14433f61fcd01aaebc71aed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1163.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ca4b579a216776eee6b041bf1faf0fb48070353ee3b4836816e76cfcf990b3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1164.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1475208876deda2d1b05f2eb8ac857af23097a0de8ae890e64a384c4ec930cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1166.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89650ff6395513b524a3374f009bc0730af3ca1c805f2ac54dc391fb35a5f369\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1167.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10c093535969b08ccd51c96f07ca10f71b0b73615ec06a9325c8c9417a2805b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM12712.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c59e1182333f466b6f007bfcc1c321b4a12bcb17fafaf3a5c12590b3eff6fcca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1364.so\",\n      \"mode\": 33261,\n      \"size\": 154184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3b695fe69bfc2d7f3fd54bd2632ff58468c4c1c84b0bdefaebde514460a8cc0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1371.so\",\n      \"mode\": 33261,\n      \"size\": 133704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1600b511e0f3e1856fa944d3050b11ac3b10d887c6236f9356bc093d7e68c7c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1388.so\",\n      \"mode\": 33261,\n      \"size\": 178760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05a4a9496efbb2668914b3e3804143f8ef8444cc9c76f0261fca85e77746a875\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1390.so\",\n      \"mode\": 33261,\n      \"size\": 236208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d484e624ae5dc856640e42da801b3ec315eec2947d4bea2b5e68a3ff44e32af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM1399.so\",\n      \"mode\": 33261,\n      \"size\": 236208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89d1928c09434d53cd128b79ad80e71f5300c596bc14f559436109939fdfad39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM16804.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad84de613537ecc9ff24d60a8a55f1bdeb790c795afb95a5efc3702604c25c06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM256.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ea96f7ae609a0e24b157073da6e8ef8f7bf017a2334ac0bf34ef9c0f0d4fddd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM273.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c45527a548f95a3fd015a32a6bc69a42a82996a0cb270d9961bf6a1d00024ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM274.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78f0e5a32d4475853ec2521b8a670c7f9a13a917ac802b7759a7d4d0a5a295d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM275.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4c8ea19530899e4e6cdb938a184badd838167872023f90605cc2498c2649163\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM277.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"193ba85505049b4cb80ce6c1a6eed13cb8903e35e59c4266a2aa8f29e171a52c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM278.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a2f92ff1d6b0b347d014f5be638affe90423f471b18c9cb0d88f30ef84a2264\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM280.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aa6266ea3b9520bd0ab61af70bf5d9569b64843bb391f740f9a1aa0461ae49a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM281.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b98c27d59a811f0440192d6fc678d675e5c3f68a4354b7becaa6a9f463830885\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM284.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b444e2e4196426d463702294babdef34fbd658f8d850db4a6cd9ae37713e8ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM285.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"090bed1587216638c0f799a14b39825a77facaed63b148b906c2d4a6c94f9a15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM290.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c0d9f3252fa794cc8ee443ee1333dc6d91a79f43b2a5796296ae390e1a31783\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM297.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2775158213110d2f237226b7265f681fadfe52322423ce3633d6629a6d11d54e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM420.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e3456c717298d78a0897a267bfafe5f34d06444d9317c7b4b09bb0045f5281\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM423.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25a6040e333d58b6b54a271c792828f8e5aedac77dd7073854fb46247c1f72c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM424.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a54bf1288b4d7ab36b83098de2ba6c8ba6cdd640fd07c97d305c1362004849b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM437.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22f205633a53df1448f7e66c8bc9982c86e0268f5aac26a4dc6ec77237d56180\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM4517.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5167f515fdf9851671ef4aaf6e453d8de1d2f1f6647a06456503f4ccfeaaac34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM4899.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02c39094eebeaa5546ecf6f220980e62b49c0e77ff6b58e98c6103ce00c10f14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM4909.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4aae8fa9629ac255d12eba525cc58f1c7e4344fa2c1f6542792cf847856d81a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM4971.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68b6b4f4bf9b335946dc8ab28b383c0c216344296b0721c5ebde3a0fc0bcb8bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM500.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2869c8d9b98a2c9df43fc9c82b502858d431f3c52472e0274ec96721a95da420\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM5347.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"923cace0a69c1da1853b1c8494251252474620dfcaee446d6388f23766ef107a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM803.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"603a92767acbea4782970057cf7282bf885dfe7d79e39839f2f98c527a23285d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM850.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1633136da6d64c31280fc07f9c90220ee8dfd0537b38f5449543fc02744a1fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM851.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a636ffd19aa674b9c55086feb63a283ab6875c5653ed9cc985306f341750043\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM852.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e12c1cdd2d69aa0772f0f70c8c8fcc77c9bf244001df92d8420212f5f38cf19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM855.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b194594ecb07dbb23740b03f49c858f6f419a5723dcdcd14121791b467359c5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM856.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6709e1da8437f9a72f99fe3a2b9ef4f426dd7a925e838fdab1d6e7ae547d897d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM857.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd4396cc3f5701a4cc3d396f459e5576b114919aad1085682b274bbe7f46605b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM858.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"975365c8dc39966bb8482fee6b9f12dfe3abc26c7bfa21db5830af941a886278\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM860.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f2bd4a665f85e21f98192efeac7d2a56cedfc84fa128582a61cd5a09ba3fbfa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM861.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a65b27db512120ae3e5746fbbf5fd4668a2b1fe9f0c25a4bfb32467202fd0b09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM862.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c285f10b46ea65528a31ddc3623782a392c12d2c79ae97a745355a52490c5037\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM863.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f54c22c53811e8a9611b2084b931da4393581104512a759641699b6ca577ef8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM864.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90695d14ae14306aec0221eab855e6df0965bab6dbcef78344dd70b1a1bdedd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM865.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e599b04517b66c2541a33f5511675343915294be6a5fb3538dbc5618551d0995\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM866.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"542b9ce9dcbc452cfe442e6db3bddaac39b40c24181252d32fd4a33eb0703955\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM866NAV.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4eed8695e9b62da6450f53a241b7fddf95173bad16bb83b2da2de7d86525368\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM868.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cf3c74ff710658ca7467fc6c6cdb846abb7a78727d1d0650025269c817ce392\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM869.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ed7891a7539f9296e53d1288efa7be0539466575616dd3cf5b0d3b48fb313c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM870.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b9fcd666769661631860557c86b61fea34a9ff3463d481ae03b5352a9bf9d3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM871.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64082d08b199190534b510c99be55c469b52403d66b25a21416679ff2429521d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM874.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49ea79974c12fd3f5d26f55d8009f89f8bda8bf5f2eee8c5d66065cff294d08d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM875.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a190d947544b1cb5ce4c6911c8c2feefab9a004fb3e8e270291de1779abcc10f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM880.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7363026875e5bbf2cb8f0b76363974911a21609a4e79b885f117df1180b368d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM891.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae6e58c26d9e97fd20a46efb5b1f9075cffb0cc676ec3d5f2ee806e810e73042\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM901.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52389d94d8d8e104b6e965ff6706aa51330ac22e634ab70850228fd2a51db9d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM902.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d63f3407b71e98866714443f4568334720ac6b9ce05df5aaeed2679174289513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM903.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abdc53a994125133a25d5734f78c19a2e35e823bd477d85664fe2bde1bd8bd7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM9030.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ee9287bd442b2409ae32d2ff3c36d7fc2a9f722f186ffc7b21ce207e513c982\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM904.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb6642600cd28067e82df344e09bce1c87a8a6c11cb961101dfeecb561cc7913\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM905.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d46664d290dfa234dc9bcad722c72573e9f96a56096b2e7e4e2bf900b4c935cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM9066.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a212c2e0066c196cde828a588fbe90c2cb2be65a54a5cb0fcde3b94367d687c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM918.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8afe1a4038a127e73e2405d95f395c77a569e6a8233b097b277af95781b2e32f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM921.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ce17d31b7b65770a42aa8513980e740bc9709534fd3d173ce45c134a3b44701\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM922.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f493268545f32424fed1f5bd8f0e6c26743815a2e3d7ee3eabccb214846c6e29\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM930.so\",\n      \"mode\": 33261,\n      \"size\": 100984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3a11df90dcd64cae248f55e1aa40ec2cde797dee74ef24749ec317ee7144e78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM932.so\",\n      \"mode\": 33261,\n      \"size\": 76512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb017467be5036d17653f453f40e46263d9848b9b033f2b79f5d32a05425ff8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM933.so\",\n      \"mode\": 33261,\n      \"size\": 121464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9b0a3ac1a40461a9489ba2e46105078f68eb63e17b6e081a4e6520677f1cbcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM935.so\",\n      \"mode\": 33261,\n      \"size\": 88696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9623f3bdd9172e49b1fb58da48cd8745c45694e5861758db66be3b2f591d6559\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM937.so\",\n      \"mode\": 33261,\n      \"size\": 117320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"768855670df4ef257002aaca3491d8b0da5a67328d8bdbab9067675186277caf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM939.so\",\n      \"mode\": 33261,\n      \"size\": 100984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eeb367dd0ce940fbed75f88a77cc4476bfde1fed68a2e5e930e1531ce36cc963\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM943.so\",\n      \"mode\": 33261,\n      \"size\": 76512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78985cc0b9a47ff52d3f5a61b04116710d11e2cee3ed9477777c26f05647ab30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IBM9448.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b1b12b396e6ac0068cfa243f78a205f4e2a18b8b954642cfa0225affa481f74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/IEC_P27-1.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71659aaa868da7d3dc69e73172651e5df6c34b013d01e06c9c218288e724d6d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/INIS-8.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09f792f165646e51357f8d31bf4fc878581986932d9d598e9ce5f8d5eb0ee7d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/INIS-CYRILLIC.so\",\n      \"mode\": 33261,\n      \"size\": 14944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02ce2e773488dd367bcac76b824d5d51aa926bd4bc3f8fc7df8e0b37e9c7e020\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/INIS.so\",\n      \"mode\": 33261,\n      \"size\": 14800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6893cc5c77ae50ddc54c128dbb096aa4f557c4a872722549b6af6bef8d6ccc43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISIRI-3342.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03b6c03a54e2af73e85a479236311c61d3b9334d58797f16b16e0f784519047f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-2022-CN-EXT.so\",\n      \"mode\": 33261,\n      \"size\": 45424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e57d14864c0979f2c323f436ca609bf2ca7a33345bb77c4ce57b0a21d4753954\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-2022-CN.so\",\n      \"mode\": 33261,\n      \"size\": 40752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cda6a8639576cb2d49f210ccc660a7b4b7c4f019bf0d0b3e81325eed68e11ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-2022-JP-3.so\",\n      \"mode\": 33261,\n      \"size\": 31704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bed47428499aeb8f18a456421de53fe1c45282866a84b024f54c2e290e64c52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-2022-JP.so\",\n      \"mode\": 33261,\n      \"size\": 49408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a0756980ac780922ec2c78df8908fe6f34964bd358a27f9493a8304ab4ae048\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-2022-KR.so\",\n      \"mode\": 33261,\n      \"size\": 19056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4afc7c27776712fe20c1fbeb9b7d2697490e8ee4ebd310283bfb87b2cb900ba9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-IR-197.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72765c44f7528e2f241e1a157d261fac129c4ca98cfdf06be5bf4477423297eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO-IR-209.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0185daafe6f4b03be2315dcc2d8fd697abb16d146f4cec1a15ab364df4c56bf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO646.so\",\n      \"mode\": 33261,\n      \"size\": 23184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b78746f46f2d449c0e1bba4425e7555d734eecd5b06c1e36ff96976bd482191\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-1.so\",\n      \"mode\": 33261,\n      \"size\": 14800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf4cd591532dd64a8057499eaa245940d6451c27a2c06d2a44089b62a778d645\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-10.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cb36b13c2b4f163adc1ad36f162dbe84602fe189392de73fab396d800edc7d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-11.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c76084366d68599fe47082e1eabed21eab96d82fbe306c569800c6ed310ebcb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-13.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40c98c8d8d16f8d10697e9b33d5150d44021d62849cc444051863ec9cbe702c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-14.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c7922de9c6d0d716714e81b593d50ba8e4f6e47542493f93488d07360266411\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-15.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1439a70e526a0dcfd3a1f0c21eeb075cec52a5e3b01c9cef38e95acecf602556\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-16.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34e805e68b804aa301efb6bddba4abb7abdc0d6edf1a335f8365bf827a23506c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-2.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e847aae449b8e03c6d9be3db9c35aa1f9a8e1d933a60d7b31bf16a01a930cf17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-3.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9131a8777f2c862a42f56a21e2667ff488d166a000bec4f33bf8625a602fa11d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-4.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8d9cec46bbe2615bcd8702b7d62b3a4a678a6afbd852dca583a302843a23ce3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-5.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1f536c6dc192e52097388b01473fb3464b607297310eee9f790eb861a3c3e99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-6.so\",\n      \"mode\": 33261,\n      \"size\": 18960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9e6d48ff93280cfbd10245714b405714de2eb3a150df86e38231b4c5e0f8a61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-7.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e929ec7282465bf692360f5e85393c56f0f00c0c0f0ce75e57af2107222e0a58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-8.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"297df943cb33d0b2faa81228d0896375f41b4f70c4156f0f5205793ae21eb8e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-9.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14be131847830c2050f1d47fd7f4504e12106e79864f3e1d5ac213d4cf6d54e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO8859-9E.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7a8c400044dd0dc19e4f20aac02bc621ec51ee7e8c512d0437c0b0721d99990\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_10367-BOX.so\",\n      \"mode\": 33261,\n      \"size\": 14944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24e157f431e5658f1e565fb42bedb358000e36a715478dcc15e90d4210953908\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_11548-1.so\",\n      \"mode\": 33261,\n      \"size\": 14824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf309f3a9ae9a84162f80a99419b5fd45bf5234a8f73808b368455aac5f50178\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_2033.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf8bd36721f631e43d230756342067681b2c30cf402bd31ecc10514c55cb6eb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_5427-EXT.so\",\n      \"mode\": 33261,\n      \"size\": 14936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38317e7460e0f8936aedadf1fc7cb258e49404bfdde874b0770521afc6d2e5b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_5427.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57af157e3589ab8c669f5a7ad8d45039a1500de697e162eadec5677b2eea9ac6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_5428.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b838db82c0918474f6195cd5501f526ee1289fe39846e377d203267bf6d79233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_6937-2.so\",\n      \"mode\": 33261,\n      \"size\": 27320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b0619956ace1aeddb8b1e9becf4af013e0b0ba60ffe26b811469721dc38bedb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/ISO_6937.so\",\n      \"mode\": 33261,\n      \"size\": 27280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf5858eabc1cbb54f3112aaed72dff05b34908ecb04d41a2eb7885ecf84579c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/JOHAB.so\",\n      \"mode\": 33261,\n      \"size\": 23712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b4d31e9567f464dda6ce4c9ea4c56cc8e52047a688bd75090e6f968f764c813\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/KOI-8.so\",\n      \"mode\": 33261,\n      \"size\": 14816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e7d295774887ff76179589939c8007d679f7a30ac2d83733541a9edcdb98b83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/KOI8-R.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2bdd4dcd407297f6ac55176aee7dc185cb42f65b68168ac9c7819efa5b00017\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/KOI8-RU.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d6ed2d99a1f34976b6cf3ddb0f714a921282466454456ecef13d36fa8d0962d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/KOI8-T.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d5f46ba567949f615997199945a03751cfa248adc9463656b5d412156d05805\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/KOI8-U.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d39539bd9f3592fec025a73955db83ed7592ca093bb19f493b946c2d5e5dd3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/LATIN-GREEK-1.so\",\n      \"mode\": 33261,\n      \"size\": 14944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c951ce5ea4e214600d34c7ca3fc16834b8f7937a7923fd5e78f394e7796783e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/LATIN-GREEK.so\",\n      \"mode\": 33261,\n      \"size\": 14928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93b0ab7cfc0b255e21424318c129121544c162842f09d86835304ca457a777ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MAC-CENTRALEUROPE.so\",\n      \"mode\": 33261,\n      \"size\": 14992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3acbee7fc6d852278ed01e5eb0069e1a2a135b9e424488747a97be4183f1b59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MAC-IS.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff760c792ed306a3f5a163cb3c385a1c1944c17f2eef4e2bb4bf17f1a77a797e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MAC-SAMI.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ed77c4b39f93892ce5616f6269f88b8817b4cbb9106f43d9092e4c1a55c596a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MAC-UK.so\",\n      \"mode\": 33261,\n      \"size\": 14864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38bd2d1e2586391579d9eaab7cb5d3f910b68e0f933c02f10b05cef4cd207ee0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MACINTOSH.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6ab8fbd035e8bf3db4561c311c6453711d81263122d45e50d9ed2d3c949c0b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/MIK.so\",\n      \"mode\": 33261,\n      \"size\": 14824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e24420230086ca45d63f8bea95dea16c4793046074984d148ff199225a5ce316\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/NATS-DANO.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0985d206a7bbbe9d82d89a610c4b310585d4ceb2e9cd5743c07cf192d8ddb0fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/NATS-SEFI.so\",\n      \"mode\": 33261,\n      \"size\": 14896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f494799c38ae1c3442e996ee867d487b8d2794d65028c23f1f9dae34b5e6875\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/PT154.so\",\n      \"mode\": 33261,\n      \"size\": 14840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6025c68a21f4d4cc6c716b602e55a494a0d2138e2f7e70ea21630a2979a516de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/RK1048.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2b2e2e592f8e512496153a236251e1bbcf4fc05ae9aa78853498ea82b3342ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/SAMI-WS2.so\",\n      \"mode\": 33261,\n      \"size\": 14888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69de72a14504065afb50ab0f3f8e2a86024248f82cba648103233065f326ffa2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/SHIFT_JISX0213.so\",\n      \"mode\": 33261,\n      \"size\": 23424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e893ac5044bf754be738d3812f5ec034e91c6293f4d1f59ccac948ae90192db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/SJIS.so\",\n      \"mode\": 33261,\n      \"size\": 101096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e7b53258a3722505d9f74fdd84fdab8f792a926b660f6cef8f5dade9f2dbb9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/T.61.so\",\n      \"mode\": 33261,\n      \"size\": 23144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43819e7dd61e74aa02ddf780fd8a64407387bdd1d0873593f5907811b88d4fb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/TCVN5712-1.so\",\n      \"mode\": 33261,\n      \"size\": 19192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f405081d5834c5339d103658f972526cd9e545319c31dbef32fe080b4200e13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/TIS-620.so\",\n      \"mode\": 33261,\n      \"size\": 14880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbaa18587f9696be0ce81dbaeba8354ea5c6b2fbc920e4e54d2a865fe59215b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/TSCII.so\",\n      \"mode\": 33261,\n      \"size\": 27176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fe8e384d123c3d2df2da13e865a010c71fa2e4d84f80da8bf5ae9d87c7a08d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/UHC.so\",\n      \"mode\": 33261,\n      \"size\": 76536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cf8c8578e02f921576cf44d5ead7b1a57b358ce1ad19451c5a13d120bcd55ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/UNICODE.so\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4392ad4e6cbf2e38828fe34685ec3e8bf0af8a2f9482f248018e99974bff57e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/UTF-16.so\",\n      \"mode\": 33261,\n      \"size\": 19064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cfa8cccd6d862cb0cb72d5deb6f2d44e863ee05afbf70677d998db1a247c374\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/UTF-32.so\",\n      \"mode\": 33261,\n      \"size\": 14968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e4e26bb4e9bfb50664ce2855ffc6c13565bbbf32129ae2e4feaf2d08f1dda8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/UTF-7.so\",\n      \"mode\": 33261,\n      \"size\": 23208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"874f9a6e59a16a3d3d25059fbf0be9331ab6f6ac8a5a51b284477917bb2c93b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/VISCII.so\",\n      \"mode\": 33261,\n      \"size\": 14856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bd97e0eb9979a1d0b821edec0df45632ab97b835c30ec4126a248eed8286d49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/gconv-modules\",\n      \"mode\": 33188,\n      \"size\": 56427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4a05d445c5be37354e709b517882909184c9234507774b07e7f1071999c19f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/gconv-modules.cache\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libCNS.so\",\n      \"mode\": 33261,\n      \"size\": 474872,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e79205caa307cf47632dd9c09768b6358a5d0fdf1b57e99a25fafba59444eeab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libGB.so\",\n      \"mode\": 33261,\n      \"size\": 71496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65fea10b228bebfc3b3aa5bae6357e688b2a7fd373a9fc9e08a901f835a86fcd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libISOIR165.so\",\n      \"mode\": 33261,\n      \"size\": 63024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0721bfec6c6f4f96acea3470531c93c66ce0d78d9e7d3b3d0e2514dac5975002\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libJIS.so\",\n      \"mode\": 33261,\n      \"size\": 106496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1709ab5f3c91047f09fd4d04419dfadb20d293a20b75b88655a9aab1d15f3f06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libJISX0213.so\",\n      \"mode\": 33261,\n      \"size\": 124552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44c109ca6fc8f95bca57e77d772a377e30475ec673ef7bb6aab6ddc27427cbcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/gconv/libKSC.so\",\n      \"mode\": 33261,\n      \"size\": 50792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1733d70fac07cf4b61af477e82953c636ada9230268d33ffbb21c852997c65ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmemusage.so\",\n      \"mode\": 33261,\n      \"size\": 27392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87e59da8f926382c3344b1ed01d64b5749e43ef62a0754bfc35055430124e78d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcprofile.so\",\n      \"mode\": 33261,\n      \"size\": 11312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1aff9b756f1cf1a6434522bcc29e65a468780539aa6fe1c510ccac7809c18e60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/getconf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/getconf/POSIX_V6_LP64_OFF64\",\n      \"mode\": 33261,\n      \"size\": 39064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f741546280799a01bbeed9ab35b1676196aac890e563e4800658ad180f629506\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/getconf/POSIX_V7_LP64_OFF64\",\n      \"mode\": 33261,\n      \"size\": 39064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f741546280799a01bbeed9ab35b1676196aac890e563e4800658ad180f629506\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/getconf/XBS5_LP64_OFF64\",\n      \"mode\": 33261,\n      \"size\": 39064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f741546280799a01bbeed9ab35b1676196aac890e563e4800658ad180f629506\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/iconvconfig\",\n      \"mode\": 33261,\n      \"size\": 49760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1f50c533b5cefd30b9ecc7469be99f936bf1b2d760160918e269ebb175f23c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glibc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glibc/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glibc/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/glibc/LICENSES\",\n      \"mode\": 33188,\n      \"size\": 18941,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35bdb41dc0bcb10702ddacbd51ec4c0fe6fb3129f734e8c85fc02e4d3eb0ce3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/cache/ldconfig\",\n      \"mode\": 16832,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/cache/ldconfig/aux-cache\",\n      \"mode\": 33152,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"854868f1b8026ba6\",\n   \"name\": \"glibc-common\",\n   \"version\": \"2.28-101.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:glibc-common:glibc-common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc-common:glibc_common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_common:glibc-common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_common:glibc_common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:glibc-common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:glibc_common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc:glibc-common:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc:glibc_common:2.28-101.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/glibc-common@2.28-101.el8?arch=x86_64&upstream=glibc-2.28-101.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"glibc-common\",\n    \"version\": \"2.28\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"101.el8\",\n    \"sourceRpm\": \"glibc-2.28-101.el8.src.rpm\",\n    \"size\": 9531204,\n    \"license\": \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/catchsegv\",\n      \"mode\": 33261,\n      \"size\": 3283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e59795b8077c647749fc60ebc5aca6489008f5fad216fe698d52a2e607e9c72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gencat\",\n      \"mode\": 33261,\n      \"size\": 35544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"202e090b901014acc838771601ff1e511e2ef908b66c8c86a736c19c08156563\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/getconf\",\n      \"mode\": 33261,\n      \"size\": 39064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f741546280799a01bbeed9ab35b1676196aac890e563e4800658ad180f629506\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/getent\",\n      \"mode\": 33261,\n      \"size\": 49416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbc6c4fed573f3af88b8f6d619b4057bd505399d240eddae37bc70d92611f00e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/iconv\",\n      \"mode\": 33261,\n      \"size\": 94856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edbbbbd70c9a44776687d99ce60b6b2e626de6c9c558738a10869123601e5ef5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ldd\",\n      \"mode\": 33261,\n      \"size\": 5441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8db39aa6d8727f788f0c4ffcd882a64068f0362bea9ffe38de828f2c5583a705\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/locale\",\n      \"mode\": 33261,\n      \"size\": 78000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5dc52d9cf1456d4f27eb5567009e13e48597863ecb4d5cabe33aa7c3ce0eb518\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/localedef\",\n      \"mode\": 33261,\n      \"size\": 390760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b20cb7108cbd9e202dbf0645600d2d22f79a765c193479ca7b2660aa2f8cb702\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/makedb\",\n      \"mode\": 33261,\n      \"size\": 38016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d70920dee0aa80d430b88644c6031a37e7cf7184b001ed228d2faa210979d4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pldd\",\n      \"mode\": 33261,\n      \"size\": 25768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55bb4f3afde6bd43de35b7f4160cb552cc2a0c0b6c2ac84ceffe9facffb29d4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sotruss\",\n      \"mode\": 33261,\n      \"size\": 4281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af68e860ba180298f5245e09addd18cf9362c39ef7bb53e1b8bd4110f6ee8947\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sprof\",\n      \"mode\": 33261,\n      \"size\": 38968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55704f724a793b392a41e4131ac5ad0b4d068200ad9e0eb02f25dce39b572588\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tzselect\",\n      \"mode\": 33261,\n      \"size\": 15370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"830199fe1d50c1a4d82b38673c0567dcde097fed14efa3888ba98bcdcef66fe6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18/b4db17c49a137709ca83d50ad00b0a76d2471f\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/79c16a414bfedb7b74522d49b0a07765891be0\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/40/87e607d566b9ebaa2c46ac5a0ee85318e16716\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57/d4d38334b8d2d1e1c18855978127dde2c1ea29\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/69/3e1bd175105296e5e2902b78fa7b42e62e2547\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8d/6bc3554303e8fee7ed9b4e3c5c1ed8f8b2286e\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/aeab7b1319210577777d81876b97893a41369e\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/4056c1aacab900521bd2996e7756fdcad7821b\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/03772bab41f1304287660390b0922f72b2b0b8\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c1/8fc6aacee96ef38d4053965effa7ab236e752a\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c1/c5abbce0a7da6019229f7dc9726a495149b1a5\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/f90de11e2695a8e4f641b443471399e8d614f5.3\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/locale\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_ADDRESS\",\n      \"mode\": 33188,\n      \"size\": 131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e56fdac7f4d70bdb7517a9a3c98bbfefef52fcfb082d3a49c26eec93fd8f9d9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_COLLATE\",\n      \"mode\": 33188,\n      \"size\": 6949250,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ac04f3f6e159488d62861b22cb7bf4e5c83a51d2961dcfcd103a6723cefb051\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_CTYPE\",\n      \"mode\": 33188,\n      \"size\": 337024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d1401ee710ca9f0e123e38dff897dd26138cb118960c8239bfe76baaa4c25a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_IDENTIFICATION\",\n      \"mode\": 33188,\n      \"size\": 252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d7144ea8176f0291754f5287bb06f3ab11803e0c178e84741fdc935c4b73f0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_MEASUREMENT\",\n      \"mode\": 33188,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb14a6f2cbd5092a755e8f272079822d3e842620dd4542a8dfa1e5e72fc6115b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_MESSAGES\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES\",\n      \"mode\": 33188,\n      \"size\": 53,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94b0b5b9478be3d07699972940961cdfa6c7fd86e4d4601b11a6be2268e4dbad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_MONETARY\",\n      \"mode\": 33188,\n      \"size\": 282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b4d493a4960092900dea714839a694a9aa3f445a0f03b50c9bc16a788e6eeff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_NAME\",\n      \"mode\": 33188,\n      \"size\": 62,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14507aad9f806112e464b9ca94c93b2e4d759ddc612b5f87922d7cac7170697d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_NUMERIC\",\n      \"mode\": 33188,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5976e6b3e6b24dfe03caad6a5b98d894d8110d8bd15507e690fd60fd3e04ab2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_PAPER\",\n      \"mode\": 33188,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cde048b81e2a026517cc707c906aebbd50f5ee3957b6f0c1c04699dffcb7c015\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_TELEPHONE\",\n      \"mode\": 33188,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4caf0d12844219b65ba42edc7ec2f5ac1b2fc36a3c88c28887457275daca1ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/locale/C.utf8/LC_TIME\",\n      \"mode\": 33188,\n      \"size\": 3360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bcce4e0710a2e0ad24b195bf65073d3d9fee0d011b40bd080d2e033f69272d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/build-locale-archive\",\n      \"mode\": 33216,\n      \"size\": 1316968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68443b123f8ed90f3e68d6b4c0437d8397b269da2d4ac5fbac4017f3ab916a20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/zdump\",\n      \"mode\": 33261,\n      \"size\": 29648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9750c936c02b6669767e9b44d2d911edf2a6e174bb6a4e3bf4687ef91a7eac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/zic\",\n      \"mode\": 33261,\n      \"size\": 68912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d89fb14cacf3e56ad0beab93ebdb670e0b8ad124f682775e221248b50dbfcb5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/i18n\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/i18n/charmaps\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/i18n/locales\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/locale/locale.alias\",\n      \"mode\": 33188,\n      \"size\": 2997,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef71c6302d6d2254d52588f2a076e6224117a024a1494e3b78be469cfe708e05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ad388572f948c5d1\",\n   \"name\": \"glibc-minimal-langpack\",\n   \"version\": \"2.28-101.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:glibc-minimal-langpack:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc-minimal-langpack:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_minimal_langpack:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_minimal_langpack:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc-minimal:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc-minimal:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_minimal:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc_minimal:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc:glibc-minimal-langpack:2.28-101.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:glibc:glibc_minimal_langpack:2.28-101.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/glibc-minimal-langpack@2.28-101.el8?arch=x86_64&upstream=glibc-2.28-101.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"glibc-minimal-langpack\",\n    \"version\": \"2.28\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"101.el8\",\n    \"sourceRpm\": \"glibc-2.28-101.el8.src.rpm\",\n    \"size\": 0,\n    \"license\": \"LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": []\n   }\n  },\n  {\n   \"id\": \"6e8c38c400cd51e3\",\n   \"name\": \"gmp\",\n   \"version\": \"1:6.1.2-10.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv3+ or GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gmp:1\\\\:6.1.2-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gmp:gmp:1\\\\:6.1.2-10.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gmp@6.1.2-10.el8?arch=x86_64&epoch=1&upstream=gmp-6.1.2-10.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gmp\",\n    \"version\": \"6.1.2\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8\",\n    \"sourceRpm\": \"gmp-6.1.2-10.el8.src.rpm\",\n    \"size\": 1678740,\n    \"license\": \"LGPLv3+ or GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a8/04dab0a63ed12490219bd81b82618a92a1bbac\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/fipscheck/libgmp.so.10.3.2.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b1f64e61e5af450f7806e3b3a379ddb89522f7dcc393e71dcdb97d3a767e871\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/fipscheck/libgmp.so.10.hmac\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgmp.so.10\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgmp.so.10.3.2\",\n      \"mode\": 33261,\n      \"size\": 1541856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e17c3657e98cc6cc63be5d010808ba6ec250f6816ef47bde5fc3d3bb19d5b35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gmp\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gmp/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gmp/COPYING.LESSERv3\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gmp/COPYINGv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gmp/COPYINGv3\",\n      \"mode\": 33188,\n      \"size\": 35150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6037104443f9a7829b2aa7c5370d0789a7bda3ca65a0b904cdc0c2e285d9195\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"76cc1e9da16dcab0\",\n   \"name\": \"gnupg2\",\n   \"version\": \"2.2.9-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gnupg2:2.2.9-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg2:gnupg2:2.2.9-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gnupg2@2.2.9-1.el8?arch=x86_64&upstream=gnupg2-2.2.9-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gnupg2\",\n    \"version\": \"2.2.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"gnupg2-2.2.9-1.el8.src.rpm\",\n    \"size\": 9632671,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/gnupg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dirmngr\",\n      \"mode\": 33261,\n      \"size\": 607040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bd5cf3951930cecb8c155d859343ed2cfdf6da9e5bc585859031862002e1a13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dirmngr-client\",\n      \"mode\": 33261,\n      \"size\": 126976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85c23fe4c1b6f762bbeaaddd4862667fcfa5ffc0e25eb32e3481933e5f2a3b06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/g13\",\n      \"mode\": 33261,\n      \"size\": 234872,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f676a0e7a013de6748c7788e7abc08335a3a0463ed25d4d1a7c48d20f7ac8a50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpg\",\n      \"mode\": 33261,\n      \"size\": 1114968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e3bdae619253ba6df0bcf60e3e18c94add7fd39068540ee9e57d46505e5cc25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpg-agent\",\n      \"mode\": 33261,\n      \"size\": 442016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13d9638fcf3eb60bc985403bc5872d45d1e583e14942babd8e513147ded4d6b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpg-connect-agent\",\n      \"mode\": 33261,\n      \"size\": 179480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87cc29d2530b869e69519d26f08e1858021ca93a6249b5b8b9caaa1c4f412def\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpg-zip\",\n      \"mode\": 33261,\n      \"size\": 3447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cae8a1d471cfe3b2242793d3a3e9df19588004fb7783d65dd88a24fda12d5eaa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpg2\",\n      \"mode\": 41471,\n      \"size\": 3,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpgconf\",\n      \"mode\": 33261,\n      \"size\": 184080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3a5ff458a90f339fc9889fc1d69da506b284c01b9cfe90a216fcc780d18519a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpgparsemail\",\n      \"mode\": 33261,\n      \"size\": 30472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87b41c9801c31d693f497b88eed1e7e23f351cb1eab310afb1d2d692ccc436a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpgsplit\",\n      \"mode\": 33261,\n      \"size\": 94704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a924eff8a16724fdeb2c8a9e2406e968323e54e2ce2cf5ef1ea2e120d69c925\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpgv\",\n      \"mode\": 33261,\n      \"size\": 484056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13e194c4cebc77bc30e9533afa869f7f48db903deb5cb6f99b6712404c50ecae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpgv2\",\n      \"mode\": 41471,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/watchgnupg\",\n      \"mode\": 33261,\n      \"size\": 17536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e75018b7b6d6bef9b208ed476ef32ca8dad532a6ca891cfbe9eabc3a584a8d7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/cce787362f98afb15dc69a87040e8ac010922b\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15/0321bdde56a332cc4e8d1d9f34f560c191566f\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c/50ca814e6d3dc5a0e8933f44d1e7177d50b148\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c/f235c89b1f98864f56bc884664c07c96f28d91\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55/538d9cd90672cac192cca035e6e7eb3492328e\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60/680e6a200c23f079ae7d74a9bfaefac44de920\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/721183b40da0cfe360f59e6e22e217e002c4e0\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e/46ace9f8780610d3e0cf9599a10a743bacb0d8\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77/b95c1b0b214ffda651593f763338b7ae751cdf\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87/2b7832cb37a60cda7b6a4de6e272d2089d3fa1\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91/2e2b6a774d9d960e5762b6cf98cc2dcf0d3d85\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3/f6809917d319f07832e5bf4a099a4a758f2936\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc/e10e2f63e628e0588ce9436d40f898e1b62238\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/df\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/df/cac4229acc6131bae7e38d45d590800643275e\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9/8ffe497c531dcdb9978e2da585d2c6b8cb14a0\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/82fea42b8eaa0f15a6c69b6a5a2c0259f378ef\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f4/e821bc38478f157a4a245eda1e99e387e8995d\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8/7c660946f628bdba6b36bbce189d40c22d0032\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/libexec/dirmngr_ldap\",\n      \"mode\": 33261,\n      \"size\": 95424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df500ac5cd5c8c12eb9130e70e4df772e2679bfcdd118b06b6fa7d8e70835bf6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/gpg-check-pattern\",\n      \"mode\": 33261,\n      \"size\": 121432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"285a9620713bc4057ef796966042ecfe4a968e6ea1a1aaabbb625bb23fafe6c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/gpg-preset-passphrase\",\n      \"mode\": 33261,\n      \"size\": 96144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12689a9db25f24cafeb96536cdec1709f616b856018611065deb0fbd0fb86a76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/gpg-protect-tool\",\n      \"mode\": 33261,\n      \"size\": 215216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9c3566fb2d7160b0b32dd8d889a63eb87d4707fd9d1bfd4cb10b3dc9408ae92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/gpg-wks-client\",\n      \"mode\": 33261,\n      \"size\": 236152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdc6998523d0e1ebb2d0909b1ee870ae9e217066e23c1954f3b382e9338cfe7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/scdaemon\",\n      \"mode\": 33261,\n      \"size\": 462832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1eab99056c35c5bfdf26af889b3eb8bb92e7cd5fcae17d4e0f03e895cabccbb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/addgnupghome\",\n      \"mode\": 33261,\n      \"size\": 3078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"950f180008a1e62a16f8ceda0f6e3e9d7ed4489bffb1bf436dfdd497e3a91c0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/applygnupgdefaults\",\n      \"mode\": 33261,\n      \"size\": 2217,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd3dd5e998504628720e5047af75f2af198f016bc75ee5f8f6eabd735972cfe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/g13-syshelp\",\n      \"mode\": 33261,\n      \"size\": 207856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ca17650a91fae0d6bdf8dc95009b9b76b36a3bf48122ce31b57598df540f305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/distsigkey.gpg\",\n      \"mode\": 33188,\n      \"size\": 3267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8948f10369646847016a5f49035cc14c106572e218800de588338564e9a669e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.be.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.ca.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.cs.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.da.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.de.txt\",\n      \"mode\": 33188,\n      \"size\": 9013,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf3782730db603ef4bddba546330d7d69b211c22213adc6d3791e2a8802f35fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.el.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.eo.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.es.txt\",\n      \"mode\": 33188,\n      \"size\": 7632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db9a70fce6bed52532b856323f4d4a6a47b7def90f83d145e5757c2ebf2c36ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.et.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.fi.txt\",\n      \"mode\": 33188,\n      \"size\": 7744,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d89ec6367705a10152ba4f82a0e623851beeb031d097dd47e731f692bc03574\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.fr.txt\",\n      \"mode\": 33188,\n      \"size\": 7797,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abad0bbc97849bf71917ca59f579db0a7caea436f523ab592294b4ce80826c4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.gl.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.hu.txt\",\n      \"mode\": 33188,\n      \"size\": 8205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3eeea50fdd123a14d07b0df485cf390facfc1954b0ea82c8ae0d2c175393dff9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.id.txt\",\n      \"mode\": 33188,\n      \"size\": 7535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8b7ecd6463697591c771a71aaccdc3daac5c90325990fd491b2967396287895\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.it.txt\",\n      \"mode\": 33188,\n      \"size\": 7691,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d75e4557580c0f681a5507ac7b3c0e64365f8ce6d5b37dc6221964631ac69c8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.ja.txt\",\n      \"mode\": 33188,\n      \"size\": 13621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"563af5e649fbe9eddc91461543dce1a2376c019afb2a8f78fc7e7d3e6e3b0453\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.nb.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.pl.txt\",\n      \"mode\": 33188,\n      \"size\": 7535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c44b176a46cc16b4fbd200b42c6f9d93c054fec1ec9bb3750b3e44e0d464ef5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.pt.txt\",\n      \"mode\": 33188,\n      \"size\": 7873,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbc2f41b6550d1c933158caac917a3fb8b967c0a6cd10af534ad31c3b0a4f87c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.pt_BR.txt\",\n      \"mode\": 33188,\n      \"size\": 7876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f941a1b6e5b5172fddc4ac62a112cb3d7981dbcbcc5de3f706084210e35d265\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.ro.txt\",\n      \"mode\": 33188,\n      \"size\": 8112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a2898d1358e4faef974ceb3c515b214fb63e1e30c9fc75d18b4dec1e6fb1350\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.ru.txt\",\n      \"mode\": 33188,\n      \"size\": 17735,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fba5ee88300f8599c18bacb0b5bbf6518c16c03b536e8ee12b832fe7bc72686\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.sk.txt\",\n      \"mode\": 33188,\n      \"size\": 8085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb6d9916028dd5a14e6ef45d5724ceac4906b1ed5275b6d49e9460006435afbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.sv.txt\",\n      \"mode\": 33188,\n      \"size\": 9741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05cdf5a33891882a1b96e007c0ac8dc9f99592f3667f79d83904a38e38e8bbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.tr.txt\",\n      \"mode\": 33188,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c51e8863bee4699fff0bce77ff5aad420daee802b30d92633705f509a933502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.txt\",\n      \"mode\": 33188,\n      \"size\": 13052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a83cde33912331f7d68cd1074997e95ce3c57c27185424cdb84d98d460a9e2dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.zh_CN.txt\",\n      \"mode\": 33188,\n      \"size\": 7071,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bc19422e1c5031a034042ea6e6b8d5ec81857ff9ee4605e505a40105227f90e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/help.zh_TW.txt\",\n      \"mode\": 33188,\n      \"size\": 7102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b745d2293bdfa5154ce1278236ac258f442caee7d328317c7e475880c261edb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gnupg/sks-keyservers.netCA.pem\",\n      \"mode\": 33188,\n      \"size\": 1984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0666ee848e03a48f3ea7bb008dbe9d63dfde280af82fb4412a04bf4e24cab36b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnupg2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnupg2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35069,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"491bb79162755b6e\",\n   \"name\": \"gnutls\",\n   \"version\": \"3.6.8-10.el8_2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gnutls:3.6.8-10.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnutls:gnutls:3.6.8-10.el8_2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gnutls@3.6.8-10.el8_2?arch=x86_64&upstream=gnutls-3.6.8-10.el8_2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gnutls\",\n    \"version\": \"3.6.8\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8_2\",\n    \"sourceRpm\": \"gnutls-3.6.8-10.el8_2.src.rpm\",\n    \"size\": 2687449,\n    \"license\": \"GPLv3+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30/28de1d994d480dddb52d168eeb6e1444055ef3\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libgnutls.so.30.24.0.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e51b37ec20d31ebeff7b17e0bcbf8b5cfc687c33712e79a8e6cc585526fc0413\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libgnutls.so.30.hmac\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgnutls.so.30\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgnutls.so.30.24.0\",\n      \"mode\": 33261,\n      \"size\": 1834040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85dd9ee6a43be30bd925566a0e4e5d5f0bc4524248211944a539862b7ffe9a6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnutls\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnutls/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnutls/COPYING.LESSER\",\n      \"mode\": 33188,\n      \"size\": 26432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gnutls/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e043d77917e48e262301b8f880812fcd82236482630a421d555a38804eee643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"30984270262e8039\",\n   \"name\": \"gpg\",\n   \"version\": \"1.10.0\",\n   \"type\": \"python\",\n   \"foundBy\": \"python-installed-package-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/usr/lib64/python3.6/site-packages/gpg-1.10.0-py3.6.egg-info\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPL2.1+ (the library), GPL2+ (tests and examples)\"\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    \"cpe:2.3:a:gnupg_hackers_project:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackers_project:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackersproject:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackersproject:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel_project:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel_project:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_develproject:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_develproject:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackers_project:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackers:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackers:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackersproject:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel_project:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg-devel:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg-devel:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_develproject:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-gpg:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-gpg:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_gpg:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_gpg:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_hackers:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg-devel:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gnupg_devel:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gpg:python-gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gpg:python_gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-gpg:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_gpg:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:gpg:1.10.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gpg:gpg:1.10.0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:pypi/gpg@1.10.0\",\n   \"metadataType\": \"PythonPackageMetadata\",\n   \"metadata\": {\n    \"name\": \"gpg\",\n    \"version\": \"1.10.0\",\n    \"license\": \"LGPL2.1+ (the library), GPL2+ (tests and examples)\",\n    \"author\": \"The GnuPG hackers\",\n    \"authorEmail\": \"gnupg-devel@gnupg.org\",\n    \"platform\": \"UNKNOWN\",\n    \"sitePackagesRootPath\": \"/usr/lib64/python3.6/site-packages\"\n   }\n  },\n  {\n   \"id\": \"514388360f93718e\",\n   \"name\": \"gpgme\",\n   \"version\": \"1.10.0-6.el8.0.1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gpgme:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gpgme:gpgme:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gpgme@1.10.0-6.el8.0.1?arch=x86_64&upstream=gpgme-1.10.0-6.el8.0.1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gpgme\",\n    \"version\": \"1.10.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8.0.1\",\n    \"sourceRpm\": \"gpgme-1.10.0-6.el8.0.1.src.rpm\",\n    \"size\": 741097,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e9/a48cb7461e8bad07481ce617d49cbe204e819b\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgpgme.so.11\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgpgme.so.11.19.0\",\n      \"mode\": 33261,\n      \"size\": 331648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7150ea7cb9b3d988ddd5dbbcc9459c24e16270df30b10696dc7726f7f4101621\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gpgme\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gpgme/COPYING\",\n      \"mode\": 33188,\n      \"size\": 17992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gpgme/COPYING.LESSER\",\n      \"mode\": 33188,\n      \"size\": 26536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"867fd12364352fd\",\n   \"name\": \"grep\",\n   \"version\": \"3.1-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:grep:3.1-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:grep:grep:3.1-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/grep@3.1-6.el8?arch=x86_64&upstream=grep-3.1-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"grep\",\n    \"version\": \"3.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"grep-3.1-6.el8.src.rpm\",\n    \"size\": 835205,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/GREP_COLORS\",\n      \"mode\": 33188,\n      \"size\": 94,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e94e50735e137e769b40e230f019d5be755571129e0f7669c4570bb45c5c162e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/profile.d/colorgrep.csh\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74d270fe4476fdcba60df7d00c808e11681ac918f335c951cba4f118532a4b8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/profile.d/colorgrep.sh\",\n      \"mode\": 33188,\n      \"size\": 201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89008d115c5bbd783b985d8cab18e935978c83e362043ffc981063ffed74e1c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/egrep\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7c621ae0ceb26a76802743830bc469288996f64342901ae5292950ff713e981\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fgrep\",\n      \"mode\": 33261,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c8b1486de899cdd010d3cacde94579999cb82d0be9ec8c131b1b56886cfd36b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/grep\",\n      \"mode\": 33261,\n      \"size\": 198280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b99c0a18e353d125de71fc7626d4835d7c92cd8f9d804b75272c5bb95997342a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9/87fcca282a2f74af37adcf643ed4fd074be51c\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/libexec/grepconf.sh\",\n      \"mode\": 33261,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8940897293b3261b51af2783be99e4861dc060989b249eb1c0ad2bf7a717a2a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/grep\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/grep/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca372a7d92560b1fa9f6d832b440e8bcd62d9adfa8870c98287deab66d98310e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d23e4f6a05455a78\",\n   \"name\": \"gzip\",\n   \"version\": \"1.9-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and GFDL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:gzip:1.9-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:gzip:gzip:1.9-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/gzip@1.9-9.el8?arch=x86_64&upstream=gzip-1.9-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"gzip\",\n    \"version\": \"1.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"gzip-1.9-9.el8.src.rpm\",\n    \"size\": 426515,\n    \"license\": \"GPLv3+ and GFDL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/profile.d/colorzgrep.csh\",\n      \"mode\": 33188,\n      \"size\": 216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61da8a541c165502ac1258589686fd072a3f08e50838c45616e4d014fa9153ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/colorzgrep.sh\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"873ff1677c3430a2d90fa6257ddd5b511cc480cf7098b1cfbb246b5af9044a82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gunzip\",\n      \"mode\": 33261,\n      \"size\": 2345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0011d06d8822b2097140be7ef6bbfaf0e01b9519a179644c6593a56f2bf5f903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gzexe\",\n      \"mode\": 33261,\n      \"size\": 6375,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99bf533f0fbc345e4885d525e26ee732a001255ae47167268e7ea482f4d6af5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gzip\",\n      \"mode\": 33261,\n      \"size\": 170544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"424fb3892facae3687694009a2f0d268ab71bb98f997b912e0a1951c71b17930\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zcat\",\n      \"mode\": 33261,\n      \"size\": 1983,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cdce728b8d9c53e855853a2414b7d93251f632cc7bc34bcf0bf688f2da74ecf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zcmp\",\n      \"mode\": 33261,\n      \"size\": 1677,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbfb20b6ae482c2f7f8365e3fe71f42266ef2c56e77f0787ad2f094083550a36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zdiff\",\n      \"mode\": 33261,\n      \"size\": 5879,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bf1cef165c5265317d9bba07a58a28899fffe331ffa52a87d483e482d539296\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zegrep\",\n      \"mode\": 33261,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67ee7fadec7ea53b4c1f8cfc3c81427b29c0b1381e80b55642617620c84d0bcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zfgrep\",\n      \"mode\": 33261,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87ab5f4c7cb344e409d614d1a69cc156b3b1053d6ae0b59d8e2c2131f3e63e5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zforce\",\n      \"mode\": 33261,\n      \"size\": 2080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"136b8f154b0c63d346af66498254e3aec25731d0897f80081d9e8819ff79da31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zgrep\",\n      \"mode\": 33261,\n      \"size\": 7591,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e187b48e5a29009b682be0dc73e651000e801bf5f168cfee6b0a132e02c3611\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zless\",\n      \"mode\": 33261,\n      \"size\": 2205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d877394651502655a165962d79514bd67e3193f935aeacfea0baa22864739c75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/zmore\",\n      \"mode\": 33261,\n      \"size\": 1841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1700b78ebb87a4806ca6e249abc66ffb18d89913349781b771cf39b9cf09aab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/znew\",\n      \"mode\": 33261,\n      \"size\": 4552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60cbb9f5388ebadd7dae2c9d9d061ef999818b18e324bdca9315ecea2771e1ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/3c5d680c050adc9f780b5b5b0dc305c55cd098\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gzip\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gzip/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/gzip/fdl-1.3.txt\",\n      \"mode\": 33188,\n      \"size\": 22962,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4748f03ed2dbcc14cde6ebc30799899c403e356a7465dc30fcf2b80c45fc0059\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d1ade83f05db44ec\",\n   \"name\": \"hostname\",\n   \"version\": \"3.20-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:hostname:hostname:3.20-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:hostname:3.20-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/hostname@3.20-6.el8?arch=x86_64&upstream=hostname-3.20-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"hostname\",\n    \"version\": \"3.20\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"hostname-3.20-6.el8.src.rpm\",\n    \"size\": 43979,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/dnsdomainname\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/domainname\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/hostname\",\n      \"mode\": 33261,\n      \"size\": 21664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26532eeae676157e70231d911474e48d31085b5f2e511ce908349dbb02f0f69c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nisdomainname\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ypdomainname\",\n      \"mode\": 41471,\n      \"size\": 8,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a8/a7ee9d5002492edfc62e3e2e44149e981f9866\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/nis-domainname.service\",\n      \"mode\": 33188,\n      \"size\": 378,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"571aea8d633c0a9a08a453a387768cfa7e819c52a0cf6302036c0cc8711907ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/hostname/nis-domainname\",\n      \"mode\": 33261,\n      \"size\": 166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e34871863f59e9f0eee4674217d11d4ae46fe20b6496170787f0e45170997a4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/hostname\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/hostname/gpl-2.0.txt\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7a328173d058b74b\",\n   \"name\": \"ima-evm-utils\",\n   \"version\": \"1.1-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ima-evm-utils:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima-evm-utils:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima_evm_utils:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima_evm_utils:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima-evm:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima-evm:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima_evm:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima_evm:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima:ima-evm-utils:1.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ima:ima_evm_utils:1.1-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ima-evm-utils@1.1-5.el8?arch=x86_64&upstream=ima-evm-utils-1.1-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ima-evm-utils\",\n    \"version\": \"1.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"ima-evm-utils-1.1-5.el8.src.rpm\",\n    \"size\": 123538,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/evmctl\",\n      \"mode\": 33261,\n      \"size\": 52224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b420df1fca420ad83c9defef2e351c0bc61f8e3d2b6ba5a469e528f16a9e5bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18/f4a9dca4c5233be259afb9b6ef481d5cecf3a5\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e/fce98266ddf2c06d7805a433d5eb90f53eab98\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libimaevm.so.0\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libimaevm.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 31512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7164ed3d512b639e0cbeb70a512fc9122fb06d4aa63cc9d123b492772889987d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ima-evm-utils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ima-evm-utils/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"556d5c20f7424ec0\",\n   \"name\": \"info\",\n   \"version\": \"6.5-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:info:6.5-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:info:info:6.5-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/info@6.5-6.el8?arch=x86_64&upstream=texinfo-6.5-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"info\",\n    \"version\": \"6.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"texinfo-6.5-6.el8.src.rpm\",\n    \"size\": 386513,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/sbin/install-info\",\n      \"mode\": 33261,\n      \"size\": 51504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8943072c4ba30db753d3d5fd9c5755cd4ff4eafbdc8160086fc4950e99468ecd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/info\",\n      \"mode\": 33261,\n      \"size\": 255920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"107314e28551bd60df3f7e5c44f71bdb2c15503a6123c7ee6e61aca1922a6ec0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a/3b988936c3bcd9d20936e314d479123b3e7c1f\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/90/e70b4e00d05b911fe4d53fcb63b7325e5ab342\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/macros.d/macros.info\",\n      \"mode\": 33188,\n      \"size\": 390,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e1a04691c1409a0ab699a2362eeb2dc1124570dbb65453acd8c30a3bcf06be8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fix-info-dir\",\n      \"mode\": 33261,\n      \"size\": 7976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db24f2f10b71b03f498f7da204d26b2695abdfa275142ed3fe6ad6c96c1a2c80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/info/dir\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dg\"\n     },\n     {\n      \"path\": \"/usr/share/info/dir.old\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dg\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/info\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/info/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f040a5bbc45dfa12\",\n   \"name\": \"ipcalc\",\n   \"version\": \"0.2.4-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:ipcalc:0.2.4-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ipcalc:ipcalc:0.2.4-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ipcalc@0.2.4-4.el8?arch=x86_64&upstream=ipcalc-0.2.4-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ipcalc\",\n    \"version\": \"0.2.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"ipcalc-0.2.4-4.el8.src.rpm\",\n    \"size\": 67705,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/ipcalc\",\n      \"mode\": 33261,\n      \"size\": 45560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1d7e7eb1ad306fe02a1009893b8769bc6cc2d096aa01f61e84b176f257bca9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0/be6f3d4ebd6a80c26fce2936e576b7e48f2203\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ipcalc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ipcalc/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"a991fe1bacfe0f32\",\n   \"name\": \"iproute\",\n   \"version\": \"5.3.0-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:iproute:iproute:5.3.0-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:iproute:5.3.0-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/iproute@5.3.0-1.el8?arch=x86_64&upstream=iproute-5.3.0-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"iproute\",\n    \"version\": \"5.3.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"iproute-5.3.0-1.el8.src.rpm\",\n    \"size\": 1894954,\n    \"license\": \"GPLv2+ and Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/iproute2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/iproute2/bpf_pinning\",\n      \"mode\": 33188,\n      \"size\": 85,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beb2c6dbeb8c7bcc056a7ebaad1c213bc7204b63f2e7e2d47f0e64f5c8b6ce22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/ematch_map\",\n      \"mode\": 33188,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b1d73102310eedcb0b6a6f1b104c40d9d7a33ab5150c88a4698d0d6ab2b8659\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/group\",\n      \"mode\": 33188,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"422704225f2cdc53e6a5387a3a35a4bcfd8eabd40e4bc143dfb82ffb5571acd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/nl_protos\",\n      \"mode\": 33188,\n      \"size\": 262,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca77fbc6bfbc56c9b4c4780b7b336da24ceaf3af3b657937e3076aa48c5d460b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/rt_dsfield\",\n      \"mode\": 33188,\n      \"size\": 735,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5baf6453cd30fa05aa3c3ba134e4f5c214f75fcc0c5a51a0faaa86b3f06a962b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/rt_protos\",\n      \"mode\": 33188,\n      \"size\": 201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27930b58e402c31974c446c77cd89f79ff6c9ac3632a694490322af13b0e4003\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/rt_realms\",\n      \"mode\": 33188,\n      \"size\": 112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f0bfd37d31eb05e75b42908d0eeb61bc3394ba4e5a5f110ed3ae2e5fb9e92af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/rt_scopes\",\n      \"mode\": 33188,\n      \"size\": 92,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a84a4480b5925624c5ac3ff059faf9af42858e7f9224c06270df3f15baacc9c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/iproute2/rt_tables\",\n      \"mode\": 33188,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08c418b8469951cd5c59da91e4b116cd62cb125478dfac12e5f5067d4d07ad3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1f/cc22ef386401f95bf26a91a96e845b146bf8ab\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/73e1a10f3910f86068ce7a0374afa3721bf4bc\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/b8672cf76f72ba902cd6981c7de0e7aaa28541\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25/93346beaedae366a8e03d0c6aed18b65ba1072\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/7b655678a32b8a986c6753d3eeec2e238db857\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65/2817f71f5d71935610f469e95f380d08b2d335\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73/289e6c27f4627e21ca561c175758f8adf14e4a\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/a1a8ffca49ff2c0ca4fe82425f664ce8e32fdc\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9/d54d4bff058ac58dde2c7148e58aeee424d8d6\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/d078e25bc11ec906ec58dfd2808024c462239e\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/2877be6bf0d80d5adf4c33b35b6b62643219f7\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/f0b27a5cb2464890fb986869a593d54d09e0f0\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed/88c493e1622f8085f1b79a7b1c49e98968cc18\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/a9126efbbb44c135823ecd3fc76cc33c55051a\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/sbin/arpd\",\n      \"mode\": 33261,\n      \"size\": 76208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"085d3876f0f4c04f407feef5570db6f4cab3687c02131916032880150b7b1c9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/bridge\",\n      \"mode\": 33261,\n      \"size\": 105464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fcee0a9e1a06b6149ee24098579e38992e4f153d796377772d4ef8d7b2fe6bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ctstat\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/devlink\",\n      \"mode\": 33261,\n      \"size\": 143176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c9e41bf2c906ee49f16226bddc02f9b8ed74bacf0864a3d43316bf2f11b7792\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/genl\",\n      \"mode\": 33261,\n      \"size\": 80208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"091d677910b0174bb097936cc211016466a33bbb503140d262e83b4d689fd1bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ifcfg\",\n      \"mode\": 33261,\n      \"size\": 3109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9350a73955a7f842fa9ccfa2584e01faeabad0f0ed0a672df5489bf83b01e8b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ifstat\",\n      \"mode\": 33261,\n      \"size\": 84472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8d3a3f0900d256c61fc0214cff614aefdb79160e5c2348656a34464e59370d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ip\",\n      \"mode\": 33261,\n      \"size\": 608824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5a6fba182322a9e896e904054d0c97cc88b4fd4b4786c562a3bde8a5e91db4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/lnstat\",\n      \"mode\": 33261,\n      \"size\": 25712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ebd71e5ec6366b01102fe11e4ec05e6e1d371a209973d9b5229c53800cb7df3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/nstat\",\n      \"mode\": 33261,\n      \"size\": 76256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1c5d7dba7613b4fe8e06cab2586b299235d5692017b03e94c77acf769fa2b33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rdma\",\n      \"mode\": 33261,\n      \"size\": 130760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf0f260aff406c38a8bc23de3523cd6e60721b0df06fea834c426eee1fff61a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/routef\",\n      \"mode\": 33261,\n      \"size\": 208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64db4b55649a6da6be27517add0c75d326e37b699d7f01cf6aea1f2befdab4dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/routel\",\n      \"mode\": 33261,\n      \"size\": 1656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54b636e35ddcb7d332be25971008cd146616acfac998d06e43985fcc30247e82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rtacct\",\n      \"mode\": 33261,\n      \"size\": 43688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34edec6a991b499fe3c42aec0d38a558b8618595ea1212f626899a41e1f20fd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rtmon\",\n      \"mode\": 33261,\n      \"size\": 80080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b46caa6d96f6db2ac43ea8a9f72c0e3fbbe6c354aa8b03270e94fbcd0a688b18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rtpr\",\n      \"mode\": 33261,\n      \"size\": 70,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"460f62731a619cf47de57c70673fb5ae39d97d9906dc8694f8e94b40a6b0be8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rtstat\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ss\",\n      \"mode\": 33261,\n      \"size\": 170048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"498c08822542ff1fc985003bd0569d636ea12428dbef9fca05ccd875d6c7c5ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/tipc\",\n      \"mode\": 33261,\n      \"size\": 126520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c5c4c05fc13ce569377b3c8c0de42b1ff75d8a26e36cd8ae88ca6be54558113\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/iproute\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/iproute/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18011,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7062403a68e8f439\",\n   \"name\": \"iptables-libs\",\n   \"version\": \"1.8.4-10.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2 and Artistic 2.0 and ISC\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:iptables-libs:iptables-libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:iptables-libs:iptables_libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:iptables_libs:iptables-libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:iptables_libs:iptables_libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:iptables:iptables-libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:iptables:iptables_libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:iptables-libs:1.8.4-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:iptables_libs:1.8.4-10.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/iptables-libs@1.8.4-10.el8?arch=x86_64&upstream=iptables-1.8.4-10.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"iptables-libs\",\n    \"version\": \"1.8.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8\",\n    \"sourceRpm\": \"iptables-1.8.4-10.el8.src.rpm\",\n    \"size\": 201888,\n    \"license\": \"GPLv2 and Artistic 2.0 and ISC\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09/a9043ecfbdd56f181e68fcc44a93e0e061c9a7\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a/da8dadd60ecda73dc29377c01f5ff329173b2d\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c/21f689df2d6ece6577b83b9ef179b27dff0294\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef/99d4799972383a04a532504503bc4cf199c19f\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/99923958d783befb92c3563045eb22061714bf\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff/4ccb01f4ba9c69c68a21f2fec5f161a430e02a\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip4tc.so.0\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip4tc.so.0.1.0\",\n      \"mode\": 33261,\n      \"size\": 33240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"098ea79a69af7f9c6f517ba9f59e8a13be4865466725be9b09886b8a986d374e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip4tc.so.2\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip4tc.so.2.0.0\",\n      \"mode\": 33261,\n      \"size\": 33240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba1d19435b69465ca16d2bbdd135924023e8d62505469156e7aa2be3b89b2c3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip6tc.so.0\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip6tc.so.0.1.0\",\n      \"mode\": 33261,\n      \"size\": 33256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab5c84d6192ddf07ee237ee65372ed52ba48b42fa4d8a15f4d3a2206582e324e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip6tc.so.2\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libip6tc.so.2.0.0\",\n      \"mode\": 33261,\n      \"size\": 33256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04795b2ee580befbd39bd33ed0792e8f3135578c492fd17e874104b29b9892df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libiptc.so.0\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libiptc.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 6888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"902f21896ba36552388fe584ce374804fbdc383919107506bc91c4b1f99ead83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libxtables.so.12\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libxtables.so.12.2.0\",\n      \"mode\": 33261,\n      \"size\": 62008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e1fc5218906087e4a1247a3361da4ad8eaa07fb4bcac461363f5ed653c924ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"c68333b0819fd540\",\n   \"name\": \"iputils\",\n   \"version\": \"20180629-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:iputils:iputils:20180629-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:iputils:20180629-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/iputils@20180629-2.el8?arch=x86_64&upstream=iputils-20180629-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"iputils\",\n    \"version\": \"20180629\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"iputils-20180629-2.el8.src.rpm\",\n    \"size\": 351665,\n    \"license\": \"BSD and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/ping\",\n      \"mode\": 33261,\n      \"size\": 77216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eff2160fb18102431ff6e508949f3b46cbf3d22eb363f7d1ea923248b03dd431\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tracepath\",\n      \"mode\": 33261,\n      \"size\": 19368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32f1f35242730182a4cc1b1211e748d91a38ed3a28e6d2b4935aead66deaf6c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/01\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/01/bdf58f5f97056e9e4ed4d7c5bc94e96b634399\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/35\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/35/8b125089e86b0809e6c194c17bf3870eacf45f\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/37\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/37/f3ae50e499d4bbc4a3c18da527263fd400a7e2\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a/ca05f4af354dde3c7a41b113d128af0a1e0587\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/66b49c73c98c5b6ca551c270776e50174647ca\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fb/8fe003a40daa1bb0b29f442dae417b84db0c28\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rdisc.service\",\n      \"mode\": 33188,\n      \"size\": 208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0295537a7d19875c30a322b3bbe5bc0e35c5e2465c2dd2183a2dc5ff31cc26be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/arping\",\n      \"mode\": 33261,\n      \"size\": 32944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f1569aa027445051c1dbbb4c52125f672458ec85b35df1144ba6022f46f56b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/clockdiff\",\n      \"mode\": 33261,\n      \"size\": 23464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2cc5b3b1ab400b32962c5c650fb1e5314e428bb4a5099961cbb6ba2ffb8c479e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ifenslave\",\n      \"mode\": 33261,\n      \"size\": 28288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b5aadd22031249f005f8c784b2efe4348da214eabb37f72018e817f518b0fca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ping\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ping6\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rdisc\",\n      \"mode\": 33261,\n      \"size\": 28392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28ad98b4e95ddf3dc5ae74337789e17d04b0ed1675fe4b300090544aa49e2309\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/tracepath\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/tracepath6\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/iputils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/iputils/bsd.txt\",\n      \"mode\": 33188,\n      \"size\": 1908,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83b81ef928f3de9179105e58bd79516bdcc61b925660f549696dfb406baf637c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/iputils/gpl-2.0.txt\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"76450a35f1687991\",\n   \"name\": \"json-c\",\n   \"version\": \"0.13.1-0.2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:json-c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:json_c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json-c:json-c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json-c:json_c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json_c:json-c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json_c:json_c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json:json-c:0.13.1-0.2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:json:json_c:0.13.1-0.2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/json-c@0.13.1-0.2.el8?arch=x86_64&upstream=json-c-0.13.1-0.2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"json-c\",\n    \"version\": \"0.13.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"0.2.el8\",\n    \"sourceRpm\": \"json-c-0.13.1-0.2.el8.src.rpm\",\n    \"size\": 73898,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/cc2e06ab47be14fcae8b8d9be20b844dbfac21\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libjson-c.so.4\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libjson-c.so.4.0.0\",\n      \"mode\": 33261,\n      \"size\": 71528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca19126115eec234fc1f715efb1a52b219bf25578e3eb96ca0727f0fa71e0239\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/doc/json-c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/json-c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/json-c/AUTHORS\",\n      \"mode\": 33188,\n      \"size\": 165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"499d85c7f2c4c38eba61c3d5c505e16f7cce370a149c788d270c915ee3d6f474\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/json-c/COPYING\",\n      \"mode\": 33188,\n      \"size\": 2205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74c1e6ca5eba76b54d0ad00d4815c8315c1b3bc45ff99de61d103dc92486284c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"996ff886468003b7\",\n   \"name\": \"kexec-tools\",\n   \"version\": \"2.0.20-14.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:kexec-tools:kexec-tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kexec-tools:kexec_tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kexec_tools:kexec-tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kexec_tools:kexec_tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:kexec-tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:kexec_tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kexec:kexec-tools:2.0.20-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kexec:kexec_tools:2.0.20-14.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/kexec-tools@2.0.20-14.el8?arch=x86_64&upstream=kexec-tools-2.0.20-14.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"kexec-tools\",\n    \"version\": \"2.0.20\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"14.el8\",\n    \"sourceRpm\": \"kexec-tools-2.0.20-14.el8.src.rpm\",\n    \"size\": 1222009,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/kdump.conf\",\n      \"mode\": 33188,\n      \"size\": 7916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abfbeae87e381d3b00b767ddd6d6cb80ce962bd2d622e276113dbdb83c573700\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmn\"\n     },\n     {\n      \"path\": \"/etc/makedumpfile.conf.sample\",\n      \"mode\": 33188,\n      \"size\": 5122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b789d52eeff476170729617551bd35df0a4a5ab22ed80a55cd4356f9b96fab7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/sysconfig/kdump\",\n      \"mode\": 33188,\n      \"size\": 1746,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7fc12c35adc95dfd184fc69ba6d3a6b6120a84f02722a2b578e644ba442b543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmn\"\n     },\n     {\n      \"path\": \"/usr/bin/kdumpctl\",\n      \"mode\": 33261,\n      \"size\": 30409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15420470167328ec92f4c41b9898c1d161e879c8b3c805b4bf2c80065afd7c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36/438ff85c3b4256e1626d01b41ac846d5ad94fc\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/4793bd51e551713a31f35d0f3a653bd6050c90\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/19aa9e20baba7e80b086befc1b5a4231cdf83e\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5/c7127b93edd0b5695928d1651b9656e592267a\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99earlykdump\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99earlykdump/early-kdump.sh\",\n      \"mode\": 33261,\n      \"size\": 1690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"615a5497d1c586796ad2163d174f74b151b1dbaa87597a64e5e24727dc4ae2e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99earlykdump/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 1879,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f819b213de84fda98b2859af7c7beaa8e6aa92400106751dc5e73a878699bae4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-capture.service\",\n      \"mode\": 33188,\n      \"size\": 945,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e29e6e34a69281d6f149ef08fee7b6f8f79ae3911a0ffaf233cabe6898307f4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-emergency.service\",\n      \"mode\": 33188,\n      \"size\": 905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38c89025ea2856ef3d66aa18623728e0b7dbf9d8ce5b23e733fddb6361337ea7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-emergency.target\",\n      \"mode\": 33188,\n      \"size\": 451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75d3637d8829009015f9ac0b6b2b93b260f6700f3bf930155080906b696d4720\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-error-handler.service\",\n      \"mode\": 33188,\n      \"size\": 993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9965668ed5f9d7c95c65a27e44b40469c4978011504123334e76cdcfaa150de9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-error-handler.sh\",\n      \"mode\": 33261,\n      \"size\": 145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23bb509940a9ecc3944bb88526b974f49cfb7d6c133fe11615d8d4604141e4c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump.sh\",\n      \"mode\": 33261,\n      \"size\": 5526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b025e38d43f9e5d83a498417251c27a6c0f9bfbe6f31dfab00d29133558ac4da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh\",\n      \"mode\": 33261,\n      \"size\": 27557,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fcd671d36684413ddf892677b8adc67efaba506e3393c2afb001dced8668c76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/monitor_dd_progress\",\n      \"mode\": 33188,\n      \"size\": 482,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e343a54c032f6af0d5f7b5fb49f2d90057b2a234625fe7ee6c1afb21cb5c435\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kdump\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kdump/kdump-lib-initramfs.sh\",\n      \"mode\": 33188,\n      \"size\": 6421,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d7d97771b790882170f598e0cbed449edbc672a833ca3e3c3616f61d0185bc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kdump/kdump-lib.sh\",\n      \"mode\": 33261,\n      \"size\": 18810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eed104ced26a3afed610ae50a86c44a4e7ad519a8ddbef99651eca90bac5bbb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/kdump-dep-generator.sh\",\n      \"mode\": 33261,\n      \"size\": 504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f660e26df9c4843340093a294bcd41a68a71cea48314b5d1a3553bba5038bbbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/kdump.service\",\n      \"mode\": 33188,\n      \"size\": 349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed8d22fafa6cfafaddcfd9fec82e3fa7fa42aa0366f69676fafa97e200b0506a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/kdump-udev-throttler\",\n      \"mode\": 33261,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"125d538a59172f779b40ea32fea1e4eb50d849f25eb2537a48328d4401136679\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/98-kexec.rules\",\n      \"mode\": 33188,\n      \"size\": 695,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4e3768d55cf3c6e617670f22d4e6f0e0bbc13c278a6c6fba88533f6a25106b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"c\"\n     },\n     {\n      \"path\": \"/usr/lib64/eppic_makedumpfile.so\",\n      \"mode\": 33261,\n      \"size\": 340368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a2159fc3f27363736d299b8b6c65bfa8347ecd2c52347820a3543cd9de4e5ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/kexec\",\n      \"mode\": 33261,\n      \"size\": 196080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2f52991d53b11d6255324746a7bd417f6586d886a7deff28668a1f1480dc84f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/makedumpfile\",\n      \"mode\": 33261,\n      \"size\": 414944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842a2059dde5e76a105805d60e104aef63c83ef88aaed6c56a7b5dfb95e8ba2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkdumprd\",\n      \"mode\": 33261,\n      \"size\": 12653,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c771ae2b9ffa042feaa92091092121380d97fbdcb2070feb58bd54991bf227\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/vmcore-dmesg\",\n      \"mode\": 33261,\n      \"size\": 21280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86f2ca2f207e825daea04d1b206678603f4e1add0d85cc5ea52bc4ca3407e0dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/kdump\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/kexec-tools\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/kexec-tools/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/README\",\n      \"mode\": 33188,\n      \"size\": 9613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13742f4f8ca0fbac7fcb32d00f3c3573de49458fc4b744a815023d163bd00257\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"958a13aef551aec0d87c39dd547d19555533a108d718aa196aa61b6cbd54df3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/dir_names_3_10_to_3_13.c\",\n      \"mode\": 33188,\n      \"size\": 1154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36bc2522bf7a2a34e174834848b6288fcd8c8802a6e49525232c0f379666d0ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/dir_names_3_14_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1298,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e4fa43dfe2dfd66ad3f49e401fed48e581d6e391350633f60a8745df4b0cc5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/keyring_3_10_to_4_3.c\",\n      \"mode\": 33188,\n      \"size\": 843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"429d5bd5697f8d658c6933d55663c933531587a1591462a22a8a3c7d36566946\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/keyring_4_4_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 10806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96f305662687325d9f999fc85499c46331d00c062682fa20ef77a4eeac5f826d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/proc_names_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 665,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4022d00ed0cc1990f90f6cbfb6539ca882197b9225de07c71297e8cc5ce0cd03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/tcp_sk_buf_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02f9ff6537b88a18bc694f6aef93ebaedba26fbde2e7fbf88dee61c791edb945\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/udp_sk_buf_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1588,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a46735bc26bde6adc469b13ab0a85e03324633e21e32ebb2784f3d5fa6870a97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/unix_sk_buff_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b01a3f1ea2c52fd2cc1f8ee8363d4f09b19466195802d1b5a77dd068fda31ae1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_net_buffers_3_10_to_3_18.c\",\n      \"mode\": 33188,\n      \"size\": 1886,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"224727f30eebc8ba9c6c2522b2666f17fa09b008ed58662bc6b0161550cff785\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_net_buffers_3_19_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 2031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"912f16c251bfe9180dfb84f190aa0e85695bcb23be924b60c5eeefd057392741\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c\",\n      \"mode\": 33188,\n      \"size\": 1300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a3f5a6a579c32a9c9b32bdb5b8118f481663f807d5142d71ebe83cd84489e86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/crash\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e6342710c8f2a2e\",\n   \"name\": \"keyutils-libs\",\n   \"version\": \"1.5.10-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:keyutils-libs:keyutils-libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:keyutils-libs:keyutils_libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:keyutils_libs:keyutils-libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:keyutils_libs:keyutils_libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:keyutils:keyutils-libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:keyutils:keyutils_libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:keyutils-libs:1.5.10-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:keyutils_libs:1.5.10-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/keyutils-libs@1.5.10-6.el8?arch=x86_64&upstream=keyutils-1.5.10-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"keyutils-libs\",\n    \"version\": \"1.5.10\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"keyutils-1.5.10-6.el8.src.rpm\",\n    \"size\": 43926,\n    \"license\": \"GPLv2+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3/51f4017fb7c2ffb92f1d6c1603e7fc04e9be81\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkeyutils.so.1\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkeyutils.so.1.6\",\n      \"mode\": 33261,\n      \"size\": 16320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1e4dd645f486f0b96755910a30cf4dd395ea033f7091e5819eb775128ae0bef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/keyutils-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/keyutils-libs/LICENCE.LGPL\",\n      \"mode\": 33188,\n      \"size\": 26450,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d15593e3a8ad90917f8509b5ac1e4b5e5d196434a68029aa9dc0858a4a4c521\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"34907679528d4c6e\",\n   \"name\": \"kmod\",\n   \"version\": \"25-16.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:kmod:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod:kmod:25-16.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/kmod@25-16.el8?arch=x86_64&upstream=kmod-25-16.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"kmod\",\n    \"version\": \"25\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"16.el8\",\n    \"sourceRpm\": \"kmod-25-16.el8.src.rpm\",\n    \"size\": 243998,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/depmod.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/depmod.d/dist.conf\",\n      \"mode\": 33188,\n      \"size\": 116,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea02e4313278315e15acc3276a0d87ca5d151faafdb77a6379ca643316ed9f43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/modprobe.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/kmod\",\n      \"mode\": 33261,\n      \"size\": 163640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c62ea4fe6bdbd406accd278ee03138bfb692534e3e1d8593c27468118897de5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/6c9d3a88b7b530dc45f068ef64e0949d47710f\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/modprobe.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/depmod\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/insmod\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/lsmod\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/modinfo\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/modprobe\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rmmod\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/weak-modules\",\n      \"mode\": 33261,\n      \"size\": 34310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ae7d9f3a5b6bb37435dba6272b90538964bad17fc31db5b05425c3ae13708b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/kmod\",\n      \"mode\": 33188,\n      \"size\": 3235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6fcd713807c9a4eacc3100b58b5e89e7d6cbe1253da41f0c8dd1b1f0efbab7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"44555c5bb03ff35d\",\n   \"name\": \"kmod-libs\",\n   \"version\": \"25-16.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:kmod-libs:kmod-libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod-libs:kmod_libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod_libs:kmod-libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod_libs:kmod_libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:kmod-libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:kmod_libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod:kmod-libs:25-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:kmod:kmod_libs:25-16.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/kmod-libs@25-16.el8?arch=x86_64&upstream=kmod-25-16.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"kmod-libs\",\n    \"version\": \"25\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"16.el8\",\n    \"sourceRpm\": \"kmod-25-16.el8.src.rpm\",\n    \"size\": 126640,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc/efa37171172d46169bb317ecb97b9bf4f452f4\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkmod.so.2\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkmod.so.2.3.3\",\n      \"mode\": 33261,\n      \"size\": 100208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e5bbd2460484b4a20037ccf9259347004cc7be0b0fd019eac4f81a467b4abf0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/kmod-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/kmod-libs/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d96caf89f9a4dff\",\n   \"name\": \"krb5-libs\",\n   \"version\": \"1.17-18.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:krb5-libs:krb5-libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:krb5-libs:krb5_libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:krb5_libs:krb5-libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:krb5_libs:krb5_libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:krb5-libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:krb5_libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:krb5:krb5-libs:1.17-18.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:krb5:krb5_libs:1.17-18.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/krb5-libs@1.17-18.el8?arch=x86_64&upstream=krb5-1.17-18.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"krb5-libs\",\n    \"version\": \"1.17\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"18.el8\",\n    \"sourceRpm\": \"krb5-1.17-18.el8.src.rpm\",\n    \"size\": 2259532,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/gss\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/gss/mech.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/krb5.conf\",\n      \"mode\": 33188,\n      \"size\": 812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"003cd0a16a54e9ff1e852cb08b8d5b0b3df17ac8f8cc382537097d82e35251b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/krb5.conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/krb5.conf.d/crypto-policies\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/3dda1a79b86728106df8ba4ddc527fd04a009d\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/f655babd6d91f3c68ea65a458379d97087e7af\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/13a8f5eb9d5318fce1077c4028fe4b215735b9\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a/23b5afb0bba5a9aa7294dfde4ae480ccb11b3b\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/8f2adfec7c067919f1328e62210050ff81aaa4\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30/85581054c14bf37eb713fcb701b0e60700b189\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/5d3b360ec19afe039012905785421edf09ba0c\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c3/c46e3f41a2e913ae3ea9b7c90c105641990eed\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5/4b1e7dba788c8eed8e17b476ee2698e7e6e513\",\n      \"mode\": 41471,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/authdata\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/kdb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/libkrb5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/preauth\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/preauth/spake.so\",\n      \"mode\": 33261,\n      \"size\": 87488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"606c6c38390c57f7e67e44dad4715b5d06893409e29b39cf5b1b67f506d22c7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/tls\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/krb5/plugins/tls/k5tls.so\",\n      \"mode\": 33261,\n      \"size\": 20216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dec9302c09444b4aa7f2f0a49c9b136f5f1e246d8f65b63745b64970cedd085\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgssapi_krb5.so.2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgssapi_krb5.so.2.2\",\n      \"mode\": 33261,\n      \"size\": 335032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f768542dc43123a170d643abdde688768f06e07968377b297c1e5f7dcb1e0098\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgssrpc.so.4\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgssrpc.so.4.2\",\n      \"mode\": 33261,\n      \"size\": 138696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45aeb6a57fd68ba17118aee00e950dd325737547957a63f66baf2b1acf115873\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libk5crypto.so.3\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libk5crypto.so.3.1\",\n      \"mode\": 33261,\n      \"size\": 117216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf9ff30ce2b46a96abbd0770de63875590030766e41767529af4ae26284c6849\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkdb5.so.9\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkdb5.so.9.0\",\n      \"mode\": 33261,\n      \"size\": 83512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b9a906d9f061a6837d353339f65e56cd2e43748feba29e09730cd5c25792b58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrad.so.0\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrad.so.0.0\",\n      \"mode\": 33261,\n      \"size\": 45400,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9490fc4cee0eb9fe58e07a535929737c4c977e5ef3406965101a93c54d9dd9ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrb5.so.3\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrb5.so.3.3\",\n      \"mode\": 33261,\n      \"size\": 997600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b17114cb6fbe2930d53a0851fcb06cbf7ae5b7e6d5dc51b6f047d8983d45937c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrb5support.so.0\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libkrb5support.so.0.1\",\n      \"mode\": 33261,\n      \"size\": 71648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"320b2d270ca2df553e9330c2ad265cf24d8905f9046e93da48f6ae7add7f7795\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/krb5-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/krb5-libs/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 62857,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5149ea464bde245388d313309539e142156d371788ae57bbd4feb223757f6da1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo\",\n      \"mode\": 33188,\n      \"size\": 410,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77df12674577f3a59f39384ab8b417975995c04fc444376a5b653951d7792549\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/kerberos\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/kerberos/krb5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/kerberos/krb5/user\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"a81087f999058d2f\",\n   \"name\": \"langpacks-en\",\n   \"version\": \"1.0-12.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:langpacks-en:langpacks-en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:langpacks-en:langpacks_en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:langpacks_en:langpacks-en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:langpacks_en:langpacks_en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:langpacks:langpacks-en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:langpacks:langpacks_en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:langpacks-en:1.0-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:langpacks_en:1.0-12.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/langpacks-en@1.0-12.el8?arch=noarch&upstream=langpacks-1.0-12.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"langpacks-en\",\n    \"version\": \"1.0\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"12.el8\",\n    \"sourceRpm\": \"langpacks-1.0-12.el8.src.rpm\",\n    \"size\": 400,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/share/metainfo/org.fedoraproject.LangPack-en.metainfo.xml\",\n      \"mode\": 33188,\n      \"size\": 400,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d8d5f74443d23b5a2d5f36ffa1937389d8960cdc748a1a1a88d061fd0e6e13b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"33486dd08ba21e50\",\n   \"name\": \"less\",\n   \"version\": \"530-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ or BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:less:530-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:less:less:530-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/less@530-1.el8?arch=x86_64&upstream=less-530-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"less\",\n    \"version\": \"530\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"less-530-1.el8.src.rpm\",\n    \"size\": 344874,\n    \"license\": \"GPLv3+ or BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/profile.d/less.csh\",\n      \"mode\": 33188,\n      \"size\": 500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c117d4f9360e5a7c926f7662b647e9f1d06129817bba8386e4e8b27a01d1040b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/less.sh\",\n      \"mode\": 33188,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b85508c9181670fe169935310b8c95d7c2573f0318a70cecd12868569aab891\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/less\",\n      \"mode\": 33261,\n      \"size\": 192040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c4d5641bc4eb7cdd0e464d4bde1befd5e8332677b2da8670dc0920afd5dd59e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lessecho\",\n      \"mode\": 33261,\n      \"size\": 13840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e1abab5eef3bf496ccc8b4cca317465494699c7edc7864b12d12aa67a5fe0e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lesskey\",\n      \"mode\": 33261,\n      \"size\": 23664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acd20d76648d57b1e3d0a8d12ad9a90f1c9cb26ddc7ad24f145c5611472585d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lesspipe.sh\",\n      \"mode\": 33261,\n      \"size\": 3143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae570b6311fa231d9ec8120327b4f498fce7d13c2bc0a2ed388b1617dda8e2dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac/ea63020bb62652ce22905fd6d5188003f65666\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/df\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/df/92fcee7c1d0172f74690401ca656675a70eaae\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/74a4afdfc840aeeef3e281cef0a03efb376d68\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/less\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/less/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/less/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1d5ed3903398ca7f0852995a7a5588829f02d3b89c82165fd674285245ac576\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ef6f5aaa5feb0555\",\n   \"name\": \"libacl\",\n   \"version\": \"2.2.53-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libacl:2.2.53-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libacl:libacl:2.2.53-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libacl@2.2.53-1.el8?arch=x86_64&upstream=acl-2.2.53-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libacl\",\n    \"version\": \"2.2.53\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"acl-2.2.53-1.el8.src.rpm\",\n    \"size\": 59272,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0/f738cdb1ed9e14f117f063739a9a4f9afda533\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libacl.so.1\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libacl.so.1.1.2253\",\n      \"mode\": 33261,\n      \"size\": 59272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8b756e123eb05d7e2e7c2551506fd095fc45cdc14c2abbd9f7b369fdc403268\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ea8fa5c9e4a596e1\",\n   \"name\": \"libarchive\",\n   \"version\": \"3.3.2-8.el8_1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libarchive:libarchive:3.3.2-8.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libarchive:3.3.2-8.el8_1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libarchive@3.3.2-8.el8_1?arch=x86_64&upstream=libarchive-3.3.2-8.el8_1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libarchive\",\n    \"version\": \"3.3.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"8.el8_1\",\n    \"sourceRpm\": \"libarchive-3.3.2-8.el8_1.src.rpm\",\n    \"size\": 1139914,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9/83187a05ffbc235a174072f8a9bc5aaf7c617c\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libarchive.so.13\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libarchive.so.13.3.2\",\n      \"mode\": 33261,\n      \"size\": 1077576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3af5cffc8215616900c0841f847c0787ae910cd31b70ab75b4cf860347038b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libarchive\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libarchive/COPYING\",\n      \"mode\": 33188,\n      \"size\": 2841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae6f35cc1979beb316e4d6431fc34c6fc59f0dd126b425c8552bb41c86e4825d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4fd866a0a8d63b4d\",\n   \"name\": \"libassuan\",\n   \"version\": \"2.5.1-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libassuan:libassuan:2.5.1-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libassuan:2.5.1-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libassuan@2.5.1-3.el8?arch=x86_64&upstream=libassuan-2.5.1-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libassuan\",\n    \"version\": \"2.5.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libassuan-2.5.1-3.el8.src.rpm\",\n    \"size\": 202763,\n    \"license\": \"LGPLv2+ and GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/87/22b69215e3b2fe5787d8298b57148a56199716\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libassuan.so.0\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libassuan.so.0.8.1\",\n      \"mode\": 33261,\n      \"size\": 92664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7259bce6b4cee2f78d535f13e2a81f9ba9e407088d03a87fe08be2d445ed7aa7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libassuan\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libassuan/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35068,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libassuan/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7c2fc9602306a137\",\n   \"name\": \"libattr\",\n   \"version\": \"2.4.48-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libattr:libattr:2.4.48-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libattr:2.4.48-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libattr@2.4.48-3.el8?arch=x86_64&upstream=attr-2.4.48-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libattr\",\n    \"version\": \"2.4.48\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"attr-2.4.48-3.el8.src.rpm\",\n    \"size\": 27346,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/xattr.conf\",\n      \"mode\": 33188,\n      \"size\": 642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1259ead36165a9477c9e1948500fb1ae58f33140d2c8b9fdf09ae54425d62b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/d8bc035ae86b81b4079f7d4ff0069311a34b23\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libattr.so.1\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libattr.so.1.1.2448\",\n      \"mode\": 33261,\n      \"size\": 26704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"086f1aa3aef923c283b634549b38462508432ce39c4805b7846f7dc4a95bcc28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8b85212718289c1c\",\n   \"name\": \"libblkid\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libblkid:libblkid:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libblkid:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libblkid@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libblkid\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 339680,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1/90c0bf7a9e7873f4c6a3adf40680f26f9257de\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libblkid.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libblkid.so.1.1.0\",\n      \"mode\": 33261,\n      \"size\": 339328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce3cdbb8593928988c92357778ba7b509bd1be85580e613a2c89dece074ae91b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"56ac74fe4a61a47\",\n   \"name\": \"libcap\",\n   \"version\": \"2.26-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libcap:2.26-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap:libcap:2.26-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libcap@2.26-3.el8?arch=x86_64&upstream=libcap-2.26-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libcap\",\n    \"version\": \"2.26\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libcap-2.26-3.el8.src.rpm\",\n    \"size\": 124170,\n    \"license\": \"GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b/3ec9ae50bb2a8a9054a5bcc6673be184a756a9\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72/5782904e33e383edc26939665a5bda08302989\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7a/0c900039b15b6d16785e4eaa167d2a6d668ffe\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/661353d5b7bce4c6e2e2f3f0134efc6bfcc7ab\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/822ab6e8849deabe322f53db9bd49bf796772f\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9/d6714e0cabdbf12eb0338a4b7d419be8ead387\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcap.so.2\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcap.so.2.26\",\n      \"mode\": 33261,\n      \"size\": 24800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afa444a4a3897e79689fc077821889c070cb3bb9471de5f7ebdd5e5b46d50e6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_cap.so\",\n      \"mode\": 33261,\n      \"size\": 11488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f8734568641501dd52dceb47997125249766ac0083495294bac00ac80f1b2cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/capsh\",\n      \"mode\": 33261,\n      \"size\": 24776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"883c199c1b363a35511463aafc30dfd5c151f687f451618a5028870a79c017f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/getcap\",\n      \"mode\": 33261,\n      \"size\": 12440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3083f5192e742011a56da69fd432b51660c80c4cca896613e79e6e186169dec0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/getpcaps\",\n      \"mode\": 33261,\n      \"size\": 12080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbac4beb53a241d6e06ca2ae18038d180014220a5aba5b8b4ca53726917e28b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/setcap\",\n      \"mode\": 33261,\n      \"size\": 12096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31fb35fd530f357bc1678ac7bc65091b49bf0621f328c759d41698f44eb50c54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcap\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcap/License\",\n      \"mode\": 33188,\n      \"size\": 20240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"088cabde4662b4121258d298b0b2967bc1abffa134457ed9bc4a359685ab92bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"19df7e4ab8ab5d43\",\n   \"name\": \"libcap-ng\",\n   \"version\": \"0.7.9-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcap-ng:libcap-ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap-ng:libcap_ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap_ng:libcap-ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap_ng:libcap_ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcap-ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcap_ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap:libcap-ng:0.7.9-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcap:libcap_ng:0.7.9-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libcap-ng@0.7.9-5.el8?arch=x86_64&upstream=libcap-ng-0.7.9-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libcap-ng\",\n    \"version\": \"0.7.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libcap-ng-0.7.9-5.el8.src.rpm\",\n    \"size\": 51278,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/lib64/libcap-ng.so.0\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libcap-ng.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 24736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7c6793e372618692b6948383bc1405f42bbe4d0bc626c78805a20d27feb62e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28/7e879ad8f7122a5ed8f28f3679037f68a69a82\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcap-ng\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcap-ng/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26542,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"df5081279bec5cd2\",\n   \"name\": \"libcom_err\",\n   \"version\": \"1.45.4-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcom-err:libcom-err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcom-err:libcom_err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcom_err:libcom-err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcom_err:libcom_err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcom-err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcom_err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcom:libcom-err:1.45.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcom:libcom_err:1.45.4-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libcom_err@1.45.4-3.el8?arch=x86_64&upstream=e2fsprogs-1.45.4-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libcom_err\",\n    \"version\": \"1.45.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"e2fsprogs-1.45.4-3.el8.src.rpm\",\n    \"size\": 61921,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8c/84ba6a16a2db788d95e16f1b106972ec427462\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcom_err.so.2\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcom_err.so.2.1\",\n      \"mode\": 33261,\n      \"size\": 17336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3776542f56bc1e9836b7dbcc4164cea74fc43f19905d166c6a844e16b3b0437f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcom_err\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcom_err/NOTICE\",\n      \"mode\": 33188,\n      \"size\": 44585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5da5ef153e559c1d990d4c3eedbedd4442db892d37eae1f35fff069de8ec9020\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4666900e0e7a70\",\n   \"name\": \"libcomps\",\n   \"version\": \"0.1.11-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcomps:libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libcomps@0.1.11-4.el8?arch=x86_64&upstream=libcomps-0.1.11-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libcomps\",\n    \"version\": \"0.1.11\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"libcomps-0.1.11-4.el8.src.rpm\",\n    \"size\": 217067,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea/25d0b2741c9b686527bbf8fb6f95358d4406cc\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcomps.so.0.1.11\",\n      \"mode\": 33261,\n      \"size\": 197032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a066394585ed74255d4827cb2506a2d4eda76dd7790170f76caf7b15becb408\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcomps\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcomps/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6dc1fd16c576606f\",\n   \"name\": \"libcurl-minimal\",\n   \"version\": \"7.61.1-12.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libcurl-minimal:libcurl-minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcurl-minimal:libcurl_minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcurl_minimal:libcurl-minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcurl_minimal:libcurl_minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcurl:libcurl-minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libcurl:libcurl_minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcurl-minimal:7.61.1-12.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libcurl_minimal:7.61.1-12.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libcurl-minimal@7.61.1-12.el8?arch=x86_64&upstream=curl-7.61.1-12.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libcurl-minimal\",\n    \"version\": \"7.61.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"12.el8\",\n    \"sourceRpm\": \"curl-7.61.1-12.el8.src.rpm\",\n    \"size\": 551776,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/a97522eaaf1abe3e7f34daa78193bb083a432b\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcurl.so.4\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcurl.so.4.5.0\",\n      \"mode\": 33261,\n      \"size\": 550688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84ab4fc1ce925efe922416d1bdc55d4540f076d9f6cccb2d67a98500af7cd91f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcurl-minimal\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libcurl-minimal/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f3849ec38ddb927e79f514bf948890c41b8d1407286a49609b8fb1585931095\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"c08a0c7306f5ebc\",\n   \"name\": \"libdb\",\n   \"version\": \"5.3.28-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and LGPLv2 and Sleepycat\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libdb:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb:libdb:5.3.28-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libdb@5.3.28-37.el8?arch=x86_64&upstream=libdb-5.3.28-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libdb\",\n    \"version\": \"5.3.28\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"libdb-5.3.28-37.el8.src.rpm\",\n    \"size\": 2515048,\n    \"license\": \"BSD and LGPLv2 and Sleepycat\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b1/30d9291796baa852f2aedd89e45c1fc07947e1\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdb-5.3.so\",\n      \"mode\": 33261,\n      \"size\": 2480968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0b46e7664e8d832c2366f1a5100f76b91722c4501c950ab4579da36a9c7bda9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdb-5.so\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libdb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libdb/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 7310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b78815181a53241f9347c6b47d1031fd669946f863e1edc807a291354cec024b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libdb/lgpl-2.1.txt\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9071aeaf00db2b61\",\n   \"name\": \"libdb-utils\",\n   \"version\": \"5.3.28-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and LGPLv2 and Sleepycat\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libdb-utils:libdb-utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb-utils:libdb_utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb_utils:libdb-utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb_utils:libdb_utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libdb-utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libdb_utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb:libdb-utils:5.3.28-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdb:libdb_utils:5.3.28-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libdb-utils@5.3.28-37.el8?arch=x86_64&upstream=libdb-5.3.28-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libdb-utils\",\n    \"version\": \"5.3.28\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"libdb-5.3.28-37.el8.src.rpm\",\n    \"size\": 536911,\n    \"license\": \"BSD and LGPLv2 and Sleepycat\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/db_archive\",\n      \"mode\": 33261,\n      \"size\": 17280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef4c11220161d84a71bb5ef14f463bd57a4b214b6d55e9418f641f7a811a991b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_checkpoint\",\n      \"mode\": 33261,\n      \"size\": 23352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"253dd83dfb55587a21f2b70dcc7b361088afbe7752fbd9a373727b222ed42567\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_deadlock\",\n      \"mode\": 33261,\n      \"size\": 23336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e9397194af001138fc37f3d30ddbe3697c817b4f85177c2b9746de5c081acd0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_dump\",\n      \"mode\": 33261,\n      \"size\": 23560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a358a5b630c7996a477eda4109233b878378bb0bca6df17567f43283f0f5d359\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_dump185\",\n      \"mode\": 33261,\n      \"size\": 132728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e50361b1b8f71d1b233eb6d647d5478fc8543ba6716e42671ad8117ad701b3bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_hotbackup\",\n      \"mode\": 33261,\n      \"size\": 25624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f6f23d54185721288c519fdc0dcd993560ee11e6fd34ca8e0ad8006eb647df6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_load\",\n      \"mode\": 33261,\n      \"size\": 36608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6362be7a77ab35713472f432e299c32244f497f042a82df20173fbc57422c148\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_log_verify\",\n      \"mode\": 33261,\n      \"size\": 23504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5aea33ee08efdd9c1743bd7ab42372a03a4413dc6f752d0a37633ee256e2eb8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_printlog\",\n      \"mode\": 33261,\n      \"size\": 63904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e923fa862759bdf1e4f18b5101a5c8976e8cc4c04dfb8575e7dc31c7118863b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_recover\",\n      \"mode\": 33261,\n      \"size\": 21552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a94f0ec63fcf08bc28f4e58dd0dd98d7025fc1b9f0cef6b009d0d002ce0286ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_replicate\",\n      \"mode\": 33261,\n      \"size\": 23352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6894674013bf54eab3d853eee0d6322147bb0ffb9db3152edf1b9eeac3ef4524\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_stat\",\n      \"mode\": 33261,\n      \"size\": 23408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fe22ccd46d0113e7a380ad58bc33b393e1cb143047fff1581273b866f60358e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_tuner\",\n      \"mode\": 33261,\n      \"size\": 29912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6785b71758cc817baec047ca4d9a05097eb3e808972ecd0a7d6c1959aa931b08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_upgrade\",\n      \"mode\": 33261,\n      \"size\": 17280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3476af2f02a913acf02f3aeca95f81f14bfe2d5634b4a45f23f4eec643c09b05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/db_verify\",\n      \"mode\": 33261,\n      \"size\": 23328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f411c4b3535a1e6cc0f30e9421ca17eedaccc84871e66a5db15970cd41b0a6dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/04\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/04/caf243f9ac4c3214c9a5e2537ba7f437ddf4f0\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b/2f879dcdc5bb9ea37c5a10883c422f65e90b26\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/7b88b800c3d10b7b7efa6bf370d448d345dadd\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a/423f538e620c7f59cb67920d0eaccbb28a9c1c\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27/052489858d35d1384853d4c0050dd0c1b22dbd\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/71\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/71/96607d788ecf830f9d0b7df969257d941c7029\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/77/d01b32ad2830e2101195da219e0e0599c32f8b\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/94/0c322e4768657b57bbf2cc2969aa4076fe7735\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99/e7f71e4710aebbd445b29831c8d6409d2e73e0\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/9764b42328e642facb9dd99c136d8c840cffb3\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/9a187b092af667a5b4ff790dfc5845d9a20dbd\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/eb1c22d17010ed27b5629d827ca44be4e3c67f\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4/ec6717aaaeaa2c4c5f5174838b5bc8fbd1176c\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/0c8a32976dedac3e417586902d7ed4879f70bc\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/1db4454e9e5f9c45ea8b1672a148f61ba16b1d\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1f16d8ff12f78e6e\",\n   \"name\": \"libdnf\",\n   \"version\": \"0.39.1-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libdnf:libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libdnf@0.39.1-5.el8?arch=x86_64&upstream=libdnf-0.39.1-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libdnf\",\n    \"version\": \"0.39.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libdnf-0.39.1-5.el8.src.rpm\",\n    \"size\": 2123733,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/d460c15f366b466f6e4bb517087e7b78b8e272\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdnf.so.2\",\n      \"mode\": 33261,\n      \"size\": 1851720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6eed81c7fadb756b30ffba139e713b1cebd44a0142b9a8964378f664ff456534\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdnf/plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libdnf/plugins/README\",\n      \"mode\": 33188,\n      \"size\": 194,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73532ee155af95978529b5d896ed657ac8823a3ab32959bdde9719b35e6a7ae6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libdnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libdnf/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"3b3e8e5ab3fe86ea\",\n   \"name\": \"libfdisk\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libfdisk:libfdisk:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libfdisk:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libfdisk@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libfdisk\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 438722,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/d6146937ca5458b6f85e91f33b4cdfa5ade752\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libfdisk.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libfdisk.so.1.1.0\",\n      \"mode\": 33261,\n      \"size\": 411840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e921d4f9be3bd7dc4a6da6c07cb33f9295bd5e7ff8ac5b053d2eaef03d06b09d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libfdisk\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libfdisk/COPYING\",\n      \"mode\": 33188,\n      \"size\": 352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2dc3d3adff705e225aee932ec4c2ac29ee45221cf7566e7b837a6d0d1442966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libfdisk/COPYING.LGPLv2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"de12e2493a6eb51b\",\n   \"name\": \"libffi\",\n   \"version\": \"3.1-21.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libffi:3.1-21.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libffi:libffi:3.1-21.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libffi@3.1-21.el8?arch=x86_64&upstream=libffi-3.1-21.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libffi\",\n    \"version\": \"3.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"21.el8\",\n    \"sourceRpm\": \"libffi-3.1-21.el8.src.rpm\",\n    \"size\": 68404,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/a4af1be0871bc681a237eba12db42e5107c3f1\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libffi.so.6\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libffi.so.6.0.2\",\n      \"mode\": 33261,\n      \"size\": 51808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81bedb19c7fbf87446cc73eac9abe994843347b62d5f417cfbf189980a5c1b40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libffi\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libffi/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1132,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f4d7a0bfb83c37465d42dc305f124189196cc0cc2cc8d6f8461103682aebbc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"510d2fb6930df4c2\",\n   \"name\": \"libgcc\",\n   \"version\": \"8.3.1-5.el8.0.2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libgcc:8.3.1-5.el8.0.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgcc:libgcc:8.3.1-5.el8.0.2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libgcc@8.3.1-5.el8.0.2?arch=x86_64&upstream=gcc-8.3.1-5.el8.0.2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libgcc\",\n    \"version\": \"8.3.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8.0.2\",\n    \"sourceRpm\": \"gcc-8.3.1-5.el8.0.2.src.rpm\",\n    \"size\": 190232,\n    \"license\": \"GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/lib64/libgcc_s-8-20191121.so.1\",\n      \"mode\": 33261,\n      \"size\": 99680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c07e70b89ff39d33cbe164bd59b04369abae2acc0942618f118faf2f69f0703\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libgcc_s.so.1\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a/c98d4b3b4aa97ddf2f0ecaa415e36eb7f97df1\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18002,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc/COPYING.RUNTIME\",\n      \"mode\": 33188,\n      \"size\": 3324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d6b43ce4d8de0c878bf16b54d8e7a10d9bd42b75178153e3af6a815bdc90f74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc/COPYING3\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcc/COPYING3.LIB\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"61795472c4137d27\",\n   \"name\": \"libgcrypt\",\n   \"version\": \"1.8.3-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libgcrypt:libgcrypt:1.8.3-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libgcrypt:1.8.3-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libgcrypt@1.8.3-4.el8?arch=x86_64&upstream=libgcrypt-1.8.3-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libgcrypt\",\n    \"version\": \"1.8.3\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"libgcrypt-1.8.3-4.el8.src.rpm\",\n    \"size\": 1547061,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/gcrypt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/gcrypt/random.conf\",\n      \"mode\": 33188,\n      \"size\": 157,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"639bd7d4df19f8e810433e7158f2e2c0b8d8034b9276562f255dd13b108403e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa/6efc1bcadcdacac72fc0cd6643f22458b37405\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libgcrypt.so.20.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"980aa0d6e72fb8b8a0df069d0579cb6c5993df8d2615a7f6d4ec6b0028b8e815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgcrypt.so.20\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgcrypt.so.20.2.3\",\n      \"mode\": 33261,\n      \"size\": 1465680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1997ab868c4b8efaaa5b1c1322c5441954fc84f5ecaf4c55a4645c55e6538498\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcrypt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgcrypt/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5328c8675c72b5d0\",\n   \"name\": \"libgpg-error\",\n   \"version\": \"1.31-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libgpg-error:libgpg-error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgpg-error:libgpg_error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgpg_error:libgpg-error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgpg_error:libgpg_error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libgpg-error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libgpg_error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgpg:libgpg-error:1.31-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libgpg:libgpg_error:1.31-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libgpg-error@1.31-1.el8?arch=x86_64&upstream=libgpg-error-1.31-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libgpg-error\",\n    \"version\": \"1.31\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libgpg-error-1.31-1.el8.src.rpm\",\n    \"size\": 902818,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/gpg-error\",\n      \"mode\": 33261,\n      \"size\": 34976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4e8dfff1b89e4362c8761aea7609aa7570d68a377a124db5238eaee41154a42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10/1264fa39fb83eae557555b5e0d6fe0153407e8\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bb/7f7160a8a0111df58798d38c564c8035a195c1\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgpg-error.so.0\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libgpg-error.so.0.24.2\",\n      \"mode\": 33261,\n      \"size\": 145984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4e115d012cf30a506674f47b55652f67eee3c18168f7c2ea10ca1b58cacbe20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libgpg-error\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libgpg-error/errorref.txt\",\n      \"mode\": 33188,\n      \"size\": 35668,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fdf9d4c2ffde9cd9da0aa3f90183608a25bdced8f02e9e92500ec4d77785ed2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgpg-error\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgpg-error/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18002,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libgpg-error/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1fd92754e977c1f6\",\n   \"name\": \"libidn2\",\n   \"version\": \"2.2.0-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(GPLv2+ or LGPLv3+) and GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libidn2:libidn2:2.2.0-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libidn2:2.2.0-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libidn2@2.2.0-1.el8?arch=x86_64&upstream=libidn2-2.2.0-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libidn2\",\n    \"version\": \"2.2.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libidn2-2.2.0-1.el8.src.rpm\",\n    \"size\": 287762,\n    \"license\": \"(GPLv2+ or LGPLv3+) and GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4/941c3d93656ab1fde923aa71884fecb96f1ecd\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libidn2.so.0\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libidn2.so.0.3.6\",\n      \"mode\": 33261,\n      \"size\": 165624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a29ff55543867590e861d72faa872ba2cf7bf35730e98189f3036ced3c518c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libidn2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libidn2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1555,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73483f797a83373fca1b968c11785b98c4fc4803cdc7d3210811ca8b075d6d76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libidn2/COPYING.LESSERv3\",\n      \"mode\": 33188,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libidn2/COPYING.unicode\",\n      \"mode\": 33188,\n      \"size\": 8782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01d621eef165cf4d3d3dbb737aa0699178d94c6f18cf87e9dde6db3ca7790f46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libidn2/COPYINGv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5143bda40cafcc00\",\n   \"name\": \"libkcapi\",\n   \"version\": \"1.1.1-16_1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD or GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libkcapi:libkcapi:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libkcapi:1.1.1-16_1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libkcapi@1.1.1-16_1.el8?arch=x86_64&upstream=libkcapi-1.1.1-16_1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libkcapi\",\n    \"version\": \"1.1.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"16_1.el8\",\n    \"sourceRpm\": \"libkcapi-1.1.1-16_1.el8.src.rpm\",\n    \"size\": 82828,\n    \"license\": \"BSD or GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/lib64/fipscheck/libkcapi.so.1.1.1.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3027575a7f3155deaf993f79bea13e76d13fc1c1faea0ee5ffab775da11b46fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/fipscheck/libkcapi.so.1.hmac\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libkcapi.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libkcapi.so.1.1.1\",\n      \"mode\": 33261,\n      \"size\": 52456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6dc7ba9f784ef858c19745e61201c1b6b262788b8fecb7429a897fc2f6d91e83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57/44df5124443e5a47b3f28c7b6bc120d8a21f2f\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/sysctl.d/50-libkcapi-optmem_max.conf\",\n      \"mode\": 33188,\n      \"size\": 246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d129f7e21b6757b66b715e585d8000d319f47ffa3aac1e1fca97702544ba996c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libkcapi\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libkcapi/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1774,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0336f8f07a6abf8b0a59d961f53601d7c4a7c09a8137805b730a34a976039f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libkcapi/COPYING.bsd\",\n      \"mode\": 33188,\n      \"size\": 1382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libkcapi/COPYING.gplv2\",\n      \"mode\": 33188,\n      \"size\": 18011,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1be3fc360a6eb4bd\",\n   \"name\": \"libkcapi-hmaccalc\",\n   \"version\": \"1.1.1-16_1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD or GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libkcapi-hmaccalc:libkcapi-hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libkcapi-hmaccalc:libkcapi_hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libkcapi_hmaccalc:libkcapi-hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libkcapi_hmaccalc:libkcapi_hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libkcapi:libkcapi-hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libkcapi:libkcapi_hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libkcapi-hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libkcapi_hmaccalc:1.1.1-16_1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libkcapi-hmaccalc@1.1.1-16_1.el8?arch=x86_64&upstream=libkcapi-1.1.1-16_1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libkcapi-hmaccalc\",\n    \"version\": \"1.1.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"16_1.el8\",\n    \"sourceRpm\": \"libkcapi-1.1.1-16_1.el8.src.rpm\",\n    \"size\": 35165,\n    \"license\": \"BSD or GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/lib64/hmaccalc/sha1hmac.hmac\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7004bdf1789de94ee3e6ab05962a01241a8d079cfc93b5bd1010ee98167ea473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/hmaccalc/sha224hmac.hmac\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7004bdf1789de94ee3e6ab05962a01241a8d079cfc93b5bd1010ee98167ea473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/hmaccalc/sha256hmac.hmac\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7004bdf1789de94ee3e6ab05962a01241a8d079cfc93b5bd1010ee98167ea473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/hmaccalc/sha384hmac.hmac\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7004bdf1789de94ee3e6ab05962a01241a8d079cfc93b5bd1010ee98167ea473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/hmaccalc/sha512hmac.hmac\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7004bdf1789de94ee3e6ab05962a01241a8d079cfc93b5bd1010ee98167ea473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha1hmac\",\n      \"mode\": 33261,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7773147b4eaaf0e6e2fabcbe8ffb4addc6cceed9b57854230934f6b46d9e38f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha224hmac\",\n      \"mode\": 33261,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7773147b4eaaf0e6e2fabcbe8ffb4addc6cceed9b57854230934f6b46d9e38f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha256hmac\",\n      \"mode\": 33261,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7773147b4eaaf0e6e2fabcbe8ffb4addc6cceed9b57854230934f6b46d9e38f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha384hmac\",\n      \"mode\": 33261,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7773147b4eaaf0e6e2fabcbe8ffb4addc6cceed9b57854230934f6b46d9e38f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sha512hmac\",\n      \"mode\": 33261,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7773147b4eaaf0e6e2fabcbe8ffb4addc6cceed9b57854230934f6b46d9e38f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/a666af01511a7cba51a0e53be3d2f2ad316f83\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/a666af01511a7cba51a0e53be3d2f2ad316f83.1\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/a666af01511a7cba51a0e53be3d2f2ad316f83.2\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/a666af01511a7cba51a0e53be3d2f2ad316f83.3\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/a666af01511a7cba51a0e53be3d2f2ad316f83.4\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ebe7da0e8f5a9264\",\n   \"name\": \"libksba\",\n   \"version\": \"1.3.5-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"(LGPLv3+ or GPLv2+) and GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libksba:libksba:1.3.5-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libksba:1.3.5-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libksba@1.3.5-7.el8?arch=x86_64&upstream=libksba-1.3.5-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libksba\",\n    \"version\": \"1.3.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"libksba-1.3.5-7.el8.src.rpm\",\n    \"size\": 342935,\n    \"license\": \"(LGPLv3+ or GPLv2+) and GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/cd379600c89907c62978de30a3ecbdf168283c\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libksba.so.8\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libksba.so.8.11.6\",\n      \"mode\": 33261,\n      \"size\": 246376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e505604a3b889263ef68dea58b1b72fab0adfe468760b941683bbcd3c1c942\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libksba\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libksba/COPYING\",\n      \"mode\": 33188,\n      \"size\": 198,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6197b98c6bf69838c624809c509d84333de1bc847155168c0e84527446a27076\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libksba/COPYING.GPLv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libksba/COPYING.GPLv3\",\n      \"mode\": 33188,\n      \"size\": 35064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libksba/COPYING.LGPLv3\",\n      \"mode\": 33188,\n      \"size\": 7651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e7be61dfbc86a063\",\n   \"name\": \"libmetalink\",\n   \"version\": \"0.1.3-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libmetalink:libmetalink:0.1.3-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libmetalink:0.1.3-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libmetalink@0.1.3-7.el8?arch=x86_64&upstream=libmetalink-0.1.3-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libmetalink\",\n    \"version\": \"0.1.3\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"libmetalink-0.1.3-7.el8.src.rpm\",\n    \"size\": 76960,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c/c23037ce6f44c36f151e64eb50100c3b1d52be\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmetalink.so.3\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmetalink.so.3.1.0\",\n      \"mode\": 33261,\n      \"size\": 74768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a93cdd774d447277911b31fc431cd4900af21466a85fc31f4cfed6b441aa0dfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmetalink\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmetalink/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb6fc70929925292e4859c3ca8e34dde5389afd9e47c5826c5a540e3e620d17d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5a4c1113f58b3872\",\n   \"name\": \"libmnl\",\n   \"version\": \"1.0.4-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:libmnl:1.0.4-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libmnl:libmnl:1.0.4-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libmnl@1.0.4-6.el8?arch=x86_64&upstream=libmnl-1.0.4-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libmnl\",\n    \"version\": \"1.0.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"libmnl-1.0.4-6.el8.src.rpm\",\n    \"size\": 53687,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72/8dfaadd1cf4a41db2e06baa2c6f1c1e2b9deb2\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmnl.so.0\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmnl.so.0.2.0\",\n      \"mode\": 33261,\n      \"size\": 25936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1831b10a8eca072d8b0a3631f45be53e47d486cddad231ac9a920a5ed41832bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmnl\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmnl/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4e3b76a30d0d937e\",\n   \"name\": \"libmodulemd1\",\n   \"version\": \"1.8.16-0.2.8.2.1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libmodulemd1:libmodulemd1:1.8.16-0.2.8.2.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libmodulemd1:1.8.16-0.2.8.2.1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libmodulemd1@1.8.16-0.2.8.2.1?arch=x86_64&upstream=libmodulemd-2.8.2-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libmodulemd1\",\n    \"version\": \"1.8.16\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"0.2.8.2.1\",\n    \"sourceRpm\": \"libmodulemd-2.8.2-1.el8.src.rpm\",\n    \"size\": 546039,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/modulemd-validator-v1\",\n      \"mode\": 33261,\n      \"size\": 17160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfa1a90bd01cca4a2fee36ae12a129ef34ca4c4973c3e3bbb82c699362a3ec7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/29eef41b4b003955e44a68c917c53e14948c25\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4/d92d586cb2f47d0e828a566c56aeb6a63c0995\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/girepository-1.0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/girepository-1.0/Modulemd-1.0.typelib\",\n      \"mode\": 33188,\n      \"size\": 42372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1386c258540933f4a2878257fe663f74ca4989dbde8bdad5eb378794a970cf49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmodulemd.so.1\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmodulemd.so.1.8.16\",\n      \"mode\": 33261,\n      \"size\": 481256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a69293f8fb0aa6069728e4b0c9ec0b0243e495651ef4500e7ffb90cb6db0424\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmodulemd1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmodulemd1/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40afccd95484d483800c17dd18a734518ba36e832841579a1f21dc94fb73bbdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e1d32f20bd8fec9d\",\n   \"name\": \"libmount\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libmount:libmount:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libmount:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libmount@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libmount\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 398154,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d/045f0f55963b75acbed78068e2f7e52c684696\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmount.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmount.so.1.1.0\",\n      \"mode\": 33261,\n      \"size\": 371272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3bb9aa30cde027f60e951a77b9fa49fd5798d544e96928c919766276487d53a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmount\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmount/COPYING\",\n      \"mode\": 33188,\n      \"size\": 352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2dc3d3adff705e225aee932ec4c2ac29ee45221cf7566e7b837a6d0d1442966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libmount/COPYING.LGPLv2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1e352b877b2781ed\",\n   \"name\": \"libnghttp2\",\n   \"version\": \"1.33.0-1.el8_0.1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libnghttp2:libnghttp2:1.33.0-1.el8_0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libnghttp2:1.33.0-1.el8_0.1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libnghttp2@1.33.0-1.el8_0.1?arch=x86_64&upstream=nghttp2-1.33.0-1.el8_0.1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libnghttp2\",\n    \"version\": \"1.33.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8_0.1\",\n    \"sourceRpm\": \"nghttp2-1.33.0-1.el8_0.1.src.rpm\",\n    \"size\": 233188,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65/48ed49b25dd4ed54a8c2ceedb0989ec1ecf008\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnghttp2.so.14\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnghttp2.so.14.17.0\",\n      \"mode\": 33261,\n      \"size\": 232032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"409b6a1c2e8e436d2353fe8ed48d8dc1d1b012e283d94d8448bbce8b8ea21ab4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libnghttp2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libnghttp2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1156,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b94f3abc1aabd0c72a7c7d92a77f79dda7c8a0cb3df839a97890b4116a2de2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"3b2b638cd4eabe55\",\n   \"name\": \"libnsl2\",\n   \"version\": \"1.2.0-2.20180605git4a062cf.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libnsl2:libnsl2:1.2.0-2.20180605git4a062cf.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libnsl2:1.2.0-2.20180605git4a062cf.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libnsl2@1.2.0-2.20180605git4a062cf.el8?arch=x86_64&upstream=libnsl2-1.2.0-2.20180605git4a062cf.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libnsl2\",\n    \"version\": \"1.2.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.20180605git4a062cf.el8\",\n    \"sourceRpm\": \"libnsl2-1.2.0-2.20180605git4a062cf.el8.src.rpm\",\n    \"size\": 147122,\n    \"license\": \"BSD and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2/4e23fc5955c8e181c09c283208f74885469b7d\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnsl.so.2\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnsl.so.2.0.0\",\n      \"mode\": 33261,\n      \"size\": 120592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdd2cd11210e27f0b955b428330543b783ed348576d75a4a116715e26e68bb5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libnsl2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libnsl2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"95343d33e2775f25\",\n   \"name\": \"libpcap\",\n   \"version\": \"14:1.9.0-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD with advertising\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libpcap:libpcap:14\\\\:1.9.0-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libpcap:14\\\\:1.9.0-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libpcap@1.9.0-3.el8?arch=x86_64&epoch=14&upstream=libpcap-1.9.0-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libpcap\",\n    \"version\": \"1.9.0\",\n    \"epoch\": 14,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libpcap-1.9.0-3.el8.src.rpm\",\n    \"size\": 424251,\n    \"license\": \"BSD with advertising\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/c9f6f27bac2db7be4285a1adb0b39e98bcfc16\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcap.so.1\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcap.so.1.9.0\",\n      \"mode\": 33261,\n      \"size\": 355456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de2c6ba7df939e2c7313c93661434cb219b519f2c9b96d5d974781dcccef4451\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libpcap\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libpcap/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 868,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7a386d92c9b65f5c\",\n   \"name\": \"libpwquality\",\n   \"version\": \"1.4.0-9.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD or GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libpwquality:libpwquality:1.4.0-9.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libpwquality:1.4.0-9.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libpwquality@1.4.0-9.el8?arch=x86_64&upstream=libpwquality-1.4.0-9.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libpwquality\",\n    \"version\": \"1.4.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"9.el8\",\n    \"sourceRpm\": \"libpwquality-1.4.0-9.el8.src.rpm\",\n    \"size\": 384791,\n    \"license\": \"BSD or GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/security/pwquality.conf\",\n      \"mode\": 33188,\n      \"size\": 2151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77976ab8c2b73c5951600cb43526076c28a650677988df1c9a8e981ea9d65c9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/pwquality.conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pwmake\",\n      \"mode\": 33261,\n      \"size\": 13360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c621cff46db52738a61af46cf12ccc503573417e8b99869f890bb70d75fd8087\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pwscore\",\n      \"mode\": 33261,\n      \"size\": 13368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"facc9b2befd0a41f7dd39877334e021545b3316970cf22373ee326470be65a24\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2e/3e19c2522d09d77928b110730996df9d4c1860\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5e/951b94daa8a1f9473fd97068fe5c544fcb28ae\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73/a538ca2adb7862597777fb8e88102ab4e195ab\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/8f0b3114f6c1a476869de90b9a445764322605\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpwquality.so.1\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpwquality.so.1.0.2\",\n      \"mode\": 33261,\n      \"size\": 25728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"959c4dcc3f02dd5a6626690f588b407f8adb715a6bd492336bea475cb3a22b8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_pwquality.so\",\n      \"mode\": 33261,\n      \"size\": 11896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b1846d9b7b079cb1ef23b4f2369ec2ecfe1191135c51a6ea1e8499632e8201e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libpwquality\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libpwquality/COPYING\",\n      \"mode\": 33188,\n      \"size\": 20019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa44d09f651bf99b56253187c7778a240740c767d28453ab7fdc9804c842baee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e5b7546dee92a54e\",\n   \"name\": \"librepo\",\n   \"version\": \"1.11.0-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:librepo:librepo:1.11.0-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:librepo:1.11.0-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/librepo@1.11.0-2.el8?arch=x86_64&upstream=librepo-1.11.0-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"librepo\",\n    \"version\": \"1.11.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"librepo-1.11.0-2.el8.src.rpm\",\n    \"size\": 262664,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b/4a8cc17ccabba08336fe33304634d6c65b3058\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/librepo.so.0\",\n      \"mode\": 33261,\n      \"size\": 232136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d2ea01402546ab0bb7d6f8e5a22cfec6794a19bfbcaeb10ff8bfa376d7e66ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/librepo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/librepo/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6efe7292fa8ea27f\",\n   \"name\": \"libreport-filesystem\",\n   \"version\": \"2.9.5-10.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libreport-filesystem:libreport-filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libreport-filesystem:libreport_filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libreport_filesystem:libreport-filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libreport_filesystem:libreport_filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libreport:libreport-filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:libreport:libreport_filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libreport-filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libreport_filesystem:2.9.5-10.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libreport-filesystem@2.9.5-10.el8?arch=x86_64&upstream=libreport-2.9.5-10.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libreport-filesystem\",\n    \"version\": \"2.9.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8\",\n    \"sourceRpm\": \"libreport-2.9.5-10.el8.src.rpm\",\n    \"size\": 0,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/libreport\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/libreport/events\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/libreport/events.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/libreport/plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/libreport/workflows.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libreport\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libreport/conf.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libreport/conf.d/plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libreport/events\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/libreport/workflows\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"a67f791f08fa8ff3\",\n   \"name\": \"libseccomp\",\n   \"version\": \"2.4.1-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libseccomp:libseccomp:2.4.1-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libseccomp:2.4.1-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libseccomp@2.4.1-1.el8?arch=x86_64&upstream=libseccomp-2.4.1-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libseccomp\",\n    \"version\": \"2.4.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libseccomp-2.4.1-1.el8.src.rpm\",\n    \"size\": 402960,\n    \"license\": \"LGPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/48\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/48/4c2bb0b4b6b59f1064ffb099ee99b785466b8d\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libseccomp.so.2\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libseccomp.so.2.4.1\",\n      \"mode\": 33261,\n      \"size\": 366680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9003d9d7f7d903f6201bae85ffefc477ce3b5057d1fc3226295f9f5a4d47b7ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libseccomp\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libseccomp/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 24428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"70ba80fadc8764d9\",\n   \"name\": \"libselinux\",\n   \"version\": \"2.9-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libselinux:libselinux:2.9-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libselinux:2.9-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libselinux@2.9-3.el8?arch=x86_64&upstream=libselinux-2.9-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libselinux\",\n    \"version\": \"2.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libselinux-2.9-3.el8.src.rpm\",\n    \"size\": 305912,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/run/setrans\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/41\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/41/a935c4b317ef5c66198049b1f898f86dc574d1\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/libselinux.conf\",\n      \"mode\": 33188,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afe23890fb2e12e6756e5d81bad3c3da33f38a95d072731c0422fbeb0b1fa1fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libselinux.so.1\",\n      \"mode\": 33261,\n      \"size\": 304848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e751ad9f768433ac9a339a35d36c2fdd07dc2cd9d66fb26b3c4f1d46e1d5363c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libselinux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libselinux/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86657b4c0fe868d7cbd977cb04c63b6c667e08fa51595a7bc846ad4bed8fc364\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d840273e522f2358\",\n   \"name\": \"libsemanage\",\n   \"version\": \"2.9-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libsemanage:libsemanage:2.9-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libsemanage:2.9-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libsemanage@2.9-2.el8?arch=x86_64&upstream=libsemanage-2.9-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libsemanage\",\n    \"version\": \"2.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"libsemanage-2.9-2.el8.src.rpm\",\n    \"size\": 477962,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/selinux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/selinux/semanage.conf\",\n      \"mode\": 33188,\n      \"size\": 2425,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68d403bca3d7bd2e90d00cf44622dc0598817197994812e06367df0c239b1204\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/856494f06e80c229f564ba008279d4d6c4e459\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsemanage.so.1\",\n      \"mode\": 33261,\n      \"size\": 444216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9bc98c2f62924e0a8ce46035a6ad37ca699640403c5519be28506553e9adfeb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/selinux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsemanage\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsemanage/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/lib/selinux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/selinux/tmp\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"47867b99ddcec789\",\n   \"name\": \"libsepol\",\n   \"version\": \"2.9-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libsepol:libsepol:2.9-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libsepol:2.9-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libsepol@2.9-1.el8?arch=x86_64&upstream=libsepol-2.9-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libsepol\",\n    \"version\": \"2.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libsepol-2.9-1.el8.src.rpm\",\n    \"size\": 996264,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/42ffe3ba2fe4e29f2d3d726464979381ba9389\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsepol.so.1\",\n      \"mode\": 33261,\n      \"size\": 969832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a91945edbab7b0a955a36b6155f15aa6052d344b79f622b2e192fffe2397f2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsepol\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsepol/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"67eeb5b61cc0b90\",\n   \"name\": \"libsigsegv\",\n   \"version\": \"2.11-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libsigsegv:libsigsegv:2.11-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libsigsegv:2.11-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libsigsegv@2.11-5.el8?arch=x86_64&upstream=libsigsegv-2.11-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libsigsegv\",\n    \"version\": \"2.11\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libsigsegv-2.11-5.el8.src.rpm\",\n    \"size\": 47034,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/ae5a2692c9ba4b432587f875f59dc9acb5f590\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsigsegv.so.2\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsigsegv.so.2.0.4\",\n      \"mode\": 33261,\n      \"size\": 17920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48380facc040c4b0fc14e19b970dfeb941c74ed20438153398762ea2ce304fad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsigsegv\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsigsegv/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f2983e9a940367f48999881c14775db725ee643bce1e2f1ba195eb629a33cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f1b2d7837125d760\",\n   \"name\": \"libsmartcols\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libsmartcols:libsmartcols:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libsmartcols:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libsmartcols@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libsmartcols\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 244258,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dc/482d630c1b383622441558101420917d313b7f\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsmartcols.so.1\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsmartcols.so.1.1.0\",\n      \"mode\": 33261,\n      \"size\": 217376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f484274d8e2f83f4d2fd12386d2aa0b4c823be7c07279c16ad7f1eaca44fbe7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsmartcols\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsmartcols/COPYING\",\n      \"mode\": 33188,\n      \"size\": 352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2dc3d3adff705e225aee932ec4c2ac29ee45221cf7566e7b837a6d0d1442966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsmartcols/COPYING.LGPLv2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ef47147310c2551c\",\n   \"name\": \"libsolv\",\n   \"version\": \"0.7.7-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libsolv:libsolv:0.7.7-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libsolv:0.7.7-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libsolv@0.7.7-1.el8?arch=x86_64&upstream=libsolv-0.7.7-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libsolv\",\n    \"version\": \"0.7.7\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libsolv-0.7.7-1.el8.src.rpm\",\n    \"size\": 789176,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce/2bb7c1d037a888124a749a51ef95a086b96db8\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8/16cfd75d65a46a34046e46daee1578d72b844f\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsolv.so.1\",\n      \"mode\": 33261,\n      \"size\": 599096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7fe02cd176048b3cc8a1f37ff31bf009ca541a37143df79f1bc50440b45edbf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsolvext.so.1\",\n      \"mode\": 33261,\n      \"size\": 187552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7a3730158f883b1ec15629d8d1d64799a9425b18aaa22c62287995c9543eb30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsolv\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libsolv/LICENSE.BSD\",\n      \"mode\": 33188,\n      \"size\": 1381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57f15acfb29fbef7749779e096a5885c60b716633e34484a21bb717554c0198f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"542f73bc459a0953\",\n   \"name\": \"libstdc++\",\n   \"version\": \"8.3.1-5.el8.0.2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libstdc\\\\+\\\\+:libstdc\\\\+\\\\+:8.3.1-5.el8.0.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libstdc\\\\+\\\\+:8.3.1-5.el8.0.2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libstdc++@8.3.1-5.el8.0.2?arch=x86_64&upstream=gcc-8.3.1-5.el8.0.2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libstdc++\",\n    \"version\": \"8.3.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8.0.2\",\n    \"sourceRpm\": \"gcc-8.3.1-5.el8.0.2.src.rpm\",\n    \"size\": 1855607,\n    \"license\": \"GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9/e1e5d8b62b99990587a21e324a2d4b6d58c90c\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libstdc++.so.6\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libstdc++.so.6.0.25\",\n      \"mode\": 33261,\n      \"size\": 1661312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"937c858f739dfc9c45a1510022d6f78beddb5696db74b5f8c9077bfd5d279f0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0deba3552ffffa97e65e965b41c89fa5dab0160d509c77e32e36851ebe70558c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0deba3552ffffa97e65e965b41c89fa5dab0160d509c77e32e36851ebe70558c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc792a50d118d5feb068481d0328f89fe8762b7705011910281bfe65c1170c8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 586,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8521a8e6b6b9c079db97ea4425e5302852b3e667c518ca89deea6a20397be71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 586,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8521a8e6b6b9c079db97ea4425e5302852b3e667c518ca89deea6a20397be71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/printers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 57331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a846ab78027975e6f3a1e8719b181e7814354b978a50b580f2e379bd54b7fc07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/printers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 57331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a846ab78027975e6f3a1e8719b181e7814354b978a50b580f2e379bd54b7fc07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/xmethods.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 36279,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d0cae4dc1a66081c7efc5e4f6401bedc6fd728d06021bead3e71bef5f30083\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/xmethods.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 36279,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d0cae4dc1a66081c7efc5e4f6401bedc6fd728d06021bead3e71bef5f30083\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/printers.py\",\n      \"mode\": 33188,\n      \"size\": 67991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e7e02c740c4cc73e5992d39d0f6e8bcf580dbbf52b65f96d70923db2069e800\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/xmethods.py\",\n      \"mode\": 33188,\n      \"size\": 27708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627b1b17ddb0a8314bcad3dfcb045ec59d073e33ea16dda320641b30401114fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr/lib64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr/lib64/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6babf709a72bc393bc6bf40bdb35f3ba7abaacf931e082ccd9d709ddb076c94f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6babf709a72bc393bc6bf40bdb35f3ba7abaacf931e082ccd9d709ddb076c94f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.25-gdb.py\",\n      \"mode\": 33188,\n      \"size\": 2381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1c496792876df431c9441a86cd1cf6035d08a86a8b89f20a70fd4c5f07f98a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"22bdfc37b31674fa\",\n   \"name\": \"libtasn1\",\n   \"version\": \"4.13-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libtasn1:libtasn1:4.13-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libtasn1:4.13-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libtasn1@4.13-3.el8?arch=x86_64&upstream=libtasn1-4.13-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libtasn1\",\n    \"version\": \"4.13\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libtasn1-4.13-3.el8.src.rpm\",\n    \"size\": 168725,\n    \"license\": \"GPLv3+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/af\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/af/ae15c2ea3d81a086a1dbadb6bf9c12d55c3136\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtasn1.so.6\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtasn1.so.6.5.5\",\n      \"mode\": 33261,\n      \"size\": 82248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41874c3257ac33dda6d652b519e899f850002af35cb57fcdc9750481ed31c105\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libtasn1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libtasn1/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libtasn1/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"87e17a6af98afa3a\",\n   \"name\": \"libtirpc\",\n   \"version\": \"1.1.4-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"SISSL and BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libtirpc:libtirpc:1.1.4-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libtirpc:1.1.4-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libtirpc@1.1.4-4.el8?arch=x86_64&upstream=libtirpc-1.1.4-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libtirpc\",\n    \"version\": \"1.1.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"libtirpc-1.1.4-4.el8.src.rpm\",\n    \"size\": 381964,\n    \"license\": \"SISSL and BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/bindresvport.blacklist\",\n      \"mode\": 33188,\n      \"size\": 429,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3eef9865b1123a43ebe87fec9d9379ff0735fe85fc9c46480c548fcb0ef2fe10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/netconfig\",\n      \"mode\": 33188,\n      \"size\": 767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86ee43cde79ed4afdbcc697d74fe80cb3d9b261feab550f45beeedfba7ff9fbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/lib64/libtirpc.so.3\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libtirpc.so.3.0.0\",\n      \"mode\": 33261,\n      \"size\": 371032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2173c5c0cb8ea40aaa071f3f124d9ff0a13b1713080be372d6f657848c3adef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65/02626b8974cc694f43fa0c3d60ba4cbc8e835b\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d6b2892959b5c1e7\",\n   \"name\": \"libunistring\",\n   \"version\": \"0.9.9-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ or LGPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libunistring:libunistring:0.9.9-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libunistring:0.9.9-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libunistring@0.9.9-3.el8?arch=x86_64&upstream=libunistring-0.9.9-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libunistring\",\n    \"version\": \"0.9.9\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"libunistring-0.9.9-3.el8.src.rpm\",\n    \"size\": 1855932,\n    \"license\": \"GPLv2+ or LGPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e/1bce3df3b14ac08a6290d274b481858d172eb0\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libunistring.so.2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libunistring.so.2.1.0\",\n      \"mode\": 33261,\n      \"size\": 1805368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05abdd40665a0f8759c91d19e0e5f4aa437002ab76aa9f9a3a790cdf47a34802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libunistring\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libunistring/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libunistring/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7cece6ddd79c2e21\",\n   \"name\": \"libusbx\",\n   \"version\": \"1.0.22-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libusbx:libusbx:1.0.22-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libusbx:1.0.22-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libusbx@1.0.22-1.el8?arch=x86_64&upstream=libusbx-1.0.22-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libusbx\",\n    \"version\": \"1.0.22\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"libusbx-1.0.22-1.el8.src.rpm\",\n    \"size\": 151177,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/f65981e3c705eec8a724bc4235fa29cdbec5d3\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libusb-1.0.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libusb-1.0.so.0.1.0\",\n      \"mode\": 33261,\n      \"size\": 111496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b2fb66e3e579bbf8085c60ac29894ee77beb154b804cffe4949c4e1ae21f9c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libusbx\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libusbx/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d773cf3bc374761e\",\n   \"name\": \"libutempter\",\n   \"version\": \"1.1.6-14.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libutempter:libutempter:1.1.6-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libutempter:1.1.6-14.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libutempter@1.1.6-14.el8?arch=x86_64&upstream=libutempter-1.1.6-14.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libutempter\",\n    \"version\": \"1.1.6\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"14.el8\",\n    \"sourceRpm\": \"libutempter-1.1.6-14.el8.src.rpm\",\n    \"size\": 52637,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26/9d01d036b36ab49aa23450dba3d5ea44967026\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26/d2f5195167325934805bf52d8f702412239100\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libutempter.so.0\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libutempter.so.1.1.6\",\n      \"mode\": 33261,\n      \"size\": 12120,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88f4e7a82a5e9db831cc7a988f29c74a03136493c5ccdcfdbd43576b0742f7ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/utempter\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utempter\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/utempter/utempter\",\n      \"mode\": 34249,\n      \"size\": 13344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71b75ae9c4973e96840956e8decf8e138afaa101ce73690cac317a942837a139\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utmp\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libutempter\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libutempter/COPYING\",\n      \"mode\": 33188,\n      \"size\": 26527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f82519ffc7024e92\",\n   \"name\": \"libuuid\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libuuid:libuuid:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libuuid:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libuuid@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libuuid\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 34832,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e/0e46c3549e4442dcb719ff47db40bf92b7626f\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libuuid.so.1\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libuuid.so.1.3.0\",\n      \"mode\": 33261,\n      \"size\": 33224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6dfecb825561f6e7fed1dc65fe46b5fb5820c3b109b718ad2aa2e1f4fcfcdbe6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libuuid\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libuuid/COPYING\",\n      \"mode\": 33188,\n      \"size\": 217,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f051c5b2e7ed25acac4b79d22b9e5df80447c16f9ec543d6ed21c213c576f6aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libuuid/COPYING.BSD-3\",\n      \"mode\": 33188,\n      \"size\": 1391,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"da6b7c5170a41669\",\n   \"name\": \"libverto\",\n   \"version\": \"0.3.0-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libverto:libverto:0.3.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libverto:0.3.0-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libverto@0.3.0-5.el8?arch=x86_64&upstream=libverto-0.3.0-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libverto\",\n    \"version\": \"0.3.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libverto-0.3.0-5.el8.src.rpm\",\n    \"size\": 28244,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c1/cd50cbe655e131c6742cc1b459417d20910f5c\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libverto.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libverto.so.1.0.0\",\n      \"mode\": 33261,\n      \"size\": 25040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff518bfc1d08bb9ed31db49f4d8f59f63d301e462e50c54f503198feb6b64ecf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libverto\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libverto/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1054,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee2f49235ed5947ace182dcb3aba92655aeafab4f3a33c98a9c6d75a6a238480\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"3f1c05a319c3fd40\",\n   \"name\": \"libxcrypt\",\n   \"version\": \"4.1.1-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and BSD and Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libxcrypt:libxcrypt:4.1.1-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libxcrypt:4.1.1-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libxcrypt@4.1.1-4.el8?arch=x86_64&upstream=libxcrypt-4.1.1-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libxcrypt\",\n    \"version\": \"4.1.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"libxcrypt-4.1.1-4.el8.src.rpm\",\n    \"size\": 194420,\n    \"license\": \"LGPLv2+ and BSD and Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/lib64/.libcrypt.so.1.1.0.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e388d64e27924babe21f733aa5e0260482a5719be97bd3e4ee38f415400d4e40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/.libcrypt.so.1.hmac\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libcrypt.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/lib64/libcrypt.so.1.1.0\",\n      \"mode\": 33261,\n      \"size\": 144568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c47384e854eb39cbd935f76b0c449184726b7309088c2ca47a7916a244b1850\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3/baf007ac157d196f2d24cd74f2a0d83456a34d\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxcrypt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxcrypt/AUTHORS\",\n      \"mode\": 33188,\n      \"size\": 1682,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46cfa431806b5fce8e9ea2736b1f4bbaa2a5f2048f18a3515a9e1f3925a83a2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxcrypt/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxcrypt/LICENSING\",\n      \"mode\": 33188,\n      \"size\": 3015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eaa47c6ebef90e3180e24f1a2c4086a925bdea8159f97998a9ad7c8f6d336d98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"23e3fb52540ac145\",\n   \"name\": \"libxml2\",\n   \"version\": \"2.9.7-7.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libxml2:libxml2:2.9.7-7.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libxml2:2.9.7-7.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libxml2@2.9.7-7.el8?arch=x86_64&upstream=libxml2-2.9.7-7.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libxml2\",\n    \"version\": \"2.9.7\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.el8\",\n    \"sourceRpm\": \"libxml2-2.9.7-7.el8.src.rpm\",\n    \"size\": 1752506,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/xmlcatalog\",\n      \"mode\": 33261,\n      \"size\": 20656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a944a7b0422ba508a228dc54a93f32adecaf3db9925fa7cd13592d6c492f9c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xmllint\",\n      \"mode\": 33261,\n      \"size\": 75096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12a12be6d5826796b5bcee5b523df2429a4296187241711d4da45399936e5e09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76/7cc6752131b8b445df9b6e67744a9033cf1d61\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2/bab7a9bbb404924c9c222b53f9dfad439d272c\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd/2eb8de1103bf22afc90278811eb9f4c63e05c6\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libxml2.so.2\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libxml2.so.2.9.7\",\n      \"mode\": 33261,\n      \"size\": 1503104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"487cece4ce4b3e1356d28a7ba958cb2ca42b78ff0745d6d3f48323282261868d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxml2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libxml2/Copyright\",\n      \"mode\": 33188,\n      \"size\": 1289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"380e652b3928ea69\",\n   \"name\": \"libyaml\",\n   \"version\": \"0.1.7-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libyaml:libyaml:0.1.7-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libyaml:0.1.7-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libyaml@0.1.7-5.el8?arch=x86_64&upstream=libyaml-0.1.7-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libyaml\",\n    \"version\": \"0.1.7\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libyaml-0.1.7-5.el8.src.rpm\",\n    \"size\": 136478,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/086a9628216954b47992cf8a0141847303ce29\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libyaml-0.so.2\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libyaml-0.so.2.0.5\",\n      \"mode\": 33261,\n      \"size\": 134584,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40b3dddf38b4bf7ded16644bd0e37d23aa71205dc4e9dec1509073c10cd6a46b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libyaml\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libyaml/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1058,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0d8b09800a45cd982e9568fc7669d9c1a4c330e275a821bbe24d54366d16fe9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"88142df2b55b9852\",\n   \"name\": \"libzstd\",\n   \"version\": \"1.4.2-2.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and GPLv2\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:libzstd:libzstd:1.4.2-2.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:libzstd:1.4.2-2.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/libzstd@1.4.2-2.el8?arch=x86_64&upstream=zstd-1.4.2-2.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"libzstd\",\n    \"version\": \"1.4.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"2.el8\",\n    \"sourceRpm\": \"zstd-1.4.2-2.el8.src.rpm\",\n    \"size\": 703765,\n    \"license\": \"BSD and GPLv2\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/27/284500db25e4d2bcb3f40100e03886649eb4dc\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libzstd.so.1\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libzstd.so.1.4.2\",\n      \"mode\": 33261,\n      \"size\": 684144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f47bf33f7eca299d91b12a1783e449fbea8b39c453b31203eff33aef55a9abc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libzstd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libzstd/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18091,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/libzstd/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c1a7fa704df8f3a606f6fc010b8b5aaebf403f3aeec339a12048f1ba7331a0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"c313d9f902c01133\",\n   \"name\": \"lua-libs\",\n   \"version\": \"5.3.4-11.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:lua-libs:lua-libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lua-libs:lua_libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lua_libs:lua-libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lua_libs:lua_libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:lua-libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:lua_libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lua:lua-libs:5.3.4-11.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lua:lua_libs:5.3.4-11.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/lua-libs@5.3.4-11.el8?arch=x86_64&upstream=lua-5.3.4-11.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"lua-libs\",\n    \"version\": \"5.3.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"11.el8\",\n    \"sourceRpm\": \"lua-5.3.4-11.el8.src.rpm\",\n    \"size\": 351728,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e/f1d3025756582831343d5fb7bb38ba0f7beb0b\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblua-5.3.so\",\n      \"mode\": 33261,\n      \"size\": 351728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90abdb0d90b21113226289f90ecb33b33559d785d1d10e2a5493d18a9c2d9f02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"82ee67fc7d05a4ae\",\n   \"name\": \"lz4-libs\",\n   \"version\": \"1.8.1.2-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:lz4-libs:lz4-libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lz4-libs:lz4_libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lz4_libs:lz4-libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lz4_libs:lz4_libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:lz4-libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:lz4_libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lz4:lz4-libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lz4:lz4_libs:1.8.1.2-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/lz4-libs@1.8.1.2-4.el8?arch=x86_64&upstream=lz4-1.8.1.2-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"lz4-libs\",\n    \"version\": \"1.8.1.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"lz4-1.8.1.2-4.el8.src.rpm\",\n    \"size\": 97367,\n    \"license\": \"GPLv2+ and BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/17\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/17/b7630f730b89b9a74f587b5f97d1d1033cc473\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblz4.so.1\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblz4.so.1.8.1\",\n      \"mode\": 33261,\n      \"size\": 96056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b7edeb33f7d285159d11b0a3f3d9dc59ef2f05e3bc08a1c486b6fdb91e90d8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"84ba612554f61802\",\n   \"name\": \"lzo\",\n   \"version\": \"2.08-14.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:lzo:2.08-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:lzo:lzo:2.08-14.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/lzo@2.08-14.el8?arch=x86_64&upstream=lzo-2.08-14.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"lzo\",\n    \"version\": \"2.08\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"14.el8\",\n    \"sourceRpm\": \"lzo-2.08-14.el8.src.rpm\",\n    \"size\": 198757,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4d/e08a272aca34817d8bfe88ccd9223415a7a599\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblzo2.so.2\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblzo2.so.2.0.0\",\n      \"mode\": 33261,\n      \"size\": 167584,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c67ce7e96089af7390f3228c4922adcb88fa7fb5b81899b02126497a46374540\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/lzo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/lzo/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9f2b519754ba783a\",\n   \"name\": \"mpfr\",\n   \"version\": \"3.1.6-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv3+ and GPLv3+ and GFDL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:mpfr:3.1.6-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:mpfr:mpfr:3.1.6-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/mpfr@3.1.6-1.el8?arch=x86_64&upstream=mpfr-3.1.6-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"mpfr\",\n    \"version\": \"3.1.6\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"mpfr-3.1.6-1.el8.src.rpm\",\n    \"size\": 612625,\n    \"license\": \"LGPLv3+ and GPLv3+ and GFDL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86/a54225590697a85c95d7aec38fa8026fda3dc9\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmpfr.so.4\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmpfr.so.4.1.6\",\n      \"mode\": 33261,\n      \"size\": 504672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7fafdf827a7ffc23e958f461d88f7cf92f198f2e23074e9a790f86458146b7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/mpfr\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/mpfr/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/mpfr/COPYING.LESSER\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4723cce52f83d65d\",\n   \"name\": \"ncurses-base\",\n   \"version\": \"6.1-7.20180224.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ncurses-base:ncurses-base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses-base:ncurses_base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses_base:ncurses-base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses_base:ncurses_base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses:ncurses-base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses:ncurses_base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ncurses-base:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ncurses_base:6.1-7.20180224.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ncurses-base@6.1-7.20180224.el8?arch=noarch&upstream=ncurses-6.1-7.20180224.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ncurses-base\",\n    \"version\": \"6.1\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"7.20180224.el8\",\n    \"sourceRpm\": \"ncurses-6.1-7.20180224.el8.src.rpm\",\n    \"size\": 290089,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/terminfo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ncurses-base\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/ncurses-base/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86106f0da1cf5ccfa0f0651665dd1b4515e8edad1c7972780155770548b317d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/tabset\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/tabset/std\",\n      \"mode\": 33188,\n      \"size\": 135,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbadb5f608b355fe481c0c7d9c6265b2372bfa35250662f81f68d46540080770\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/tabset/stdcrt\",\n      \"mode\": 33188,\n      \"size\": 95,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf6c37b18ceea7c306f7e3a5e604a03b0dfb9c22ec99163e4b52f885ce063145\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/tabset/vt100\",\n      \"mode\": 33188,\n      \"size\": 160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"075251754239d9973945d82b95c18cd90997acd2017393e70c8832e9297de056\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/tabset/vt300\",\n      \"mode\": 33188,\n      \"size\": 64,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61f8388cad6a381feb819bc6a8d299d06a853d15e1f4bfdfd6b6f40069ad4956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/A\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/A/Apple_Terminal\",\n      \"mode\": 33188,\n      \"size\": 2473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bf12fa8e2596f3c60d54d74f8dcf8f1630baa174654136899b819d908bdbad8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/E\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/E/Eterm\",\n      \"mode\": 33188,\n      \"size\": 2281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec895a5f98e5f7f9b6be082689f7d81bc627c71dc826e30ac4f4276d9fd0df47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/E/Eterm-256color\",\n      \"mode\": 33188,\n      \"size\": 2521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5d5b1a94ae7f5dd893f8e7b3aea83e791fbfe0f5032f03ad7da2eceb48c3529\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/E/Eterm-88color\",\n      \"mode\": 33188,\n      \"size\": 2451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f5508b34629f9757d8b8f72e19c1f2307c2d3e3c258f08a1ee0dd63d55a856c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/E/Eterm-color\",\n      \"mode\": 33188,\n      \"size\": 2281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec895a5f98e5f7f9b6be082689f7d81bc627c71dc826e30ac4f4276d9fd0df47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/a/ansi\",\n      \"mode\": 33188,\n      \"size\": 1481,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93ec8cb9beb0c898ebc7dda0f670de31addb605be9005735228680d592cff657\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/a/ansi80x25\",\n      \"mode\": 33188,\n      \"size\": 1502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acd69b88fbc9045037b562dd67c876e88cc5d2616af20b9ca6c41d33ee335606\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/a/ansis\",\n      \"mode\": 33188,\n      \"size\": 1502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acd69b88fbc9045037b562dd67c876e88cc5d2616af20b9ca6c41d33ee335606\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/a/aterm\",\n      \"mode\": 33188,\n      \"size\": 2217,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba3149ceecc4682a8b9b62171939b869c2e8e0601942a642922f4b64cc0b5411\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/b/bterm\",\n      \"mode\": 33188,\n      \"size\": 1155,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5166019760429c4d6150180f1c2dd81136488e21c36b564e605c9dc7366f1db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/c/cons25\",\n      \"mode\": 33188,\n      \"size\": 1502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acd69b88fbc9045037b562dd67c876e88cc5d2616af20b9ca6c41d33ee335606\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/c/cygwin\",\n      \"mode\": 33188,\n      \"size\": 1518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e04bfdcc0764f4e28655701864845752cd3f77d0c52390637ebe588f91665cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/d/dumb\",\n      \"mode\": 33188,\n      \"size\": 308,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"123c85a2812a517d967db5f31660db0e6aded4a0b95ed943c5ab435368e7a25c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/e/eterm\",\n      \"mode\": 33188,\n      \"size\": 842,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c79a54efd731abe696b0373d814c9a67839eb74229cb0f63ec436b43871b8a2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/e/eterm-color\",\n      \"mode\": 33188,\n      \"size\": 1249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"718af703c538849e5b13ca124dc0416a60e05f1eed5208f6d72836c51c108f31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/g\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/g/gnome\",\n      \"mode\": 33188,\n      \"size\": 3215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6d9c90d328d11542f2f28c05a33977fb822a5d72b51456d8b7e4091f37676c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/g/gnome-256color\",\n      \"mode\": 33188,\n      \"size\": 3619,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e7026ff5f02e68ea5bf7377a659215a21fbb70ebe3dc2908b4946938746db0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/h\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/h/hurd\",\n      \"mode\": 33188,\n      \"size\": 1893,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea3517cda1607f3c65f58a746c524bced0a32aa3840e5751cdde267f15c07748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/j\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/j/jfbterm\",\n      \"mode\": 33188,\n      \"size\": 1710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c238f6378992e34dc9eef03f52b6efeb6b6d37a5042d4f1a5a1334b40e367735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/k\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/k/kon\",\n      \"mode\": 33188,\n      \"size\": 1710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c238f6378992e34dc9eef03f52b6efeb6b6d37a5042d4f1a5a1334b40e367735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/k/kon2\",\n      \"mode\": 33188,\n      \"size\": 1710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c238f6378992e34dc9eef03f52b6efeb6b6d37a5042d4f1a5a1334b40e367735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/k/konsole\",\n      \"mode\": 33188,\n      \"size\": 3147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d54737abe9927dd7447b70d33a15a895339e796296fb6eabb53a5cdf95e28511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/k/konsole-256color\",\n      \"mode\": 33188,\n      \"size\": 3357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fb0d289deddb27a2f6e253527798d38a2e952fa4e293188e268aeffd6d271f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/l\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/l/linux\",\n      \"mode\": 33188,\n      \"size\": 1822,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4beebb2d5615856487c4a46d826c70c27b590ffc849744c1a06056ba2ba757a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mach\",\n      \"mode\": 33188,\n      \"size\": 617,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ecd31c58040e5908eb434514e67620b2e4be538655126f427155760b273c7e9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mach-bold\",\n      \"mode\": 33188,\n      \"size\": 652,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e4400e3ad4df2dbbf90920860c540cd72552ca71a24b556a0b6ba62fa091b84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mach-color\",\n      \"mode\": 33188,\n      \"size\": 1095,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5caa825bd606e26c8b6c55a3206eccfea525e788f74da5e7cb48cc713db52239\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mach-gnu\",\n      \"mode\": 33188,\n      \"size\": 1056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99372cd399478be723230692595362004df345dee6c4145e4d109113a2357717\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mach-gnu-color\",\n      \"mode\": 33188,\n      \"size\": 1318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1c62541670d0e10fe46daabce8ce95d9fd77115a68106e5eb2c2a7647e40a13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mlterm\",\n      \"mode\": 33188,\n      \"size\": 3110,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84a72b515c64b2594914b7b90b082300467b3c815f4223b2dcaef789e4e46ed2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/m/mrxvt\",\n      \"mode\": 33188,\n      \"size\": 3144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9ccb1774f5631d96af45db221fc6efb370d8ddc49baecd7bb217bab20573a32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/n\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/n/nsterm\",\n      \"mode\": 33188,\n      \"size\": 2473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bf12fa8e2596f3c60d54d74f8dcf8f1630baa174654136899b819d908bdbad8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/n/nxterm\",\n      \"mode\": 33188,\n      \"size\": 1551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f74fe619914bfe650f6071bbbaf242c439de8a2f0ecefe9e80870216dfb844b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/p\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/p/pcansi\",\n      \"mode\": 33188,\n      \"size\": 1198,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ecda9662049c96ee0a574f40cfb8950b0198b508b5b72a3de05774eb3cb3f34e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/p/putty\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ae6e78233c431b1420f2decb2366bbd7aeca8a2114fe8fc8039cb5a0ab0d866\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/p/putty-256color\",\n      \"mode\": 33188,\n      \"size\": 2686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4cac29cfa971a3ec4fabc789acb49d6abe64de8ba5c27e756d6d63c1dc84bf4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt\",\n      \"mode\": 33188,\n      \"size\": 2307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f33c1aa275fe5817678b61898573754d6b855607c291afe2f6795441097a6a3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-16color\",\n      \"mode\": 33188,\n      \"size\": 2519,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab1a4668a6ffd1b4b01d4ef3a38e2f3cace3d40c1f1b60bdb7e1c2287d20c596\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-256color\",\n      \"mode\": 33188,\n      \"size\": 2485,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bca06510856fe184904c21410b0c63c16972de9bdeb99c3e3c9299191878230e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-88color\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"091b08cab321b22dcee7aa80362e541122164716b9830874950b6b8c8ba6a7c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-basic\",\n      \"mode\": 33188,\n      \"size\": 2167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f62895c1844a812f25561b9d02cdf125ade487bf92a60bcc00e2c66cfc08b794\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-color\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a4642610d94fb16e2d0ba2d04b72e395814bc25744b5f269ff3f28893e64df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-cygwin\",\n      \"mode\": 33188,\n      \"size\": 2273,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a6f37c37d18a8dcddaf2d1ff64d42423ae6177272d8e64e201e216c240c449c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-cygwin-native\",\n      \"mode\": 33188,\n      \"size\": 2291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0660c542f166cae23a7218f75123180e6ad8d5acbd342068314c91964cd4390e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-unicode\",\n      \"mode\": 33188,\n      \"size\": 2208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"063264a85fd735a13028390c8d43cf38b5214417c6e48908eabb85bcdb9b7495\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/r/rxvt-xpm\",\n      \"mode\": 33188,\n      \"size\": 2249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0d7ec933ce140fb9548664083bbab6604593b6fa1ba1dd6eb0a91dd795c9396\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen\",\n      \"mode\": 33188,\n      \"size\": 1653,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60df1fc3f6346efdd64e6971b36e98bc35e2a175c0d4420e7fd22c5d0853c112\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen-16color\",\n      \"mode\": 33188,\n      \"size\": 2071,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"953590d73e211177f772e560bc41484de24a72459a741b3581db3c742e4d71f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen-256color\",\n      \"mode\": 33188,\n      \"size\": 1995,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"868cdd7aeeb7201aa33883296d596d149f55002625a671876da65ce2f6a3b290\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.Eterm\",\n      \"mode\": 33188,\n      \"size\": 2323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b940c1dbb17acdf27e5acb65f99e680da847619eb902e0a225b14b120971ed1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.gnome\",\n      \"mode\": 33188,\n      \"size\": 3287,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f7a5ad8721bd29977845ecc018cccd81ea6916842977509e1dfb370cd468c41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.konsole\",\n      \"mode\": 33188,\n      \"size\": 3271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7294a74cee3704e30d342c4208a863df0cf7efe83f0141ba1c5fd3768760155a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.konsole-256color\",\n      \"mode\": 33188,\n      \"size\": 3454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5ac0409c4cd8c518f267a5a48bcdc82f3b7f137dc97f448837a63153d330236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.linux\",\n      \"mode\": 33188,\n      \"size\": 1867,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0da28a0c084ef373054cf43aa4d4899636ff40b812bb8d66e325f2d0c30ceef5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.mlterm\",\n      \"mode\": 33188,\n      \"size\": 3104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5c44865b01a0ef5375430bff581ced25e0c39bd8babbbafbbe16fa6ae396c89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.mlterm-256color\",\n      \"mode\": 33188,\n      \"size\": 3297,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d948d3366566dd82ddbf1db563f22e987c44b6add1536723b97691a39b57e27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.mrxvt\",\n      \"mode\": 33188,\n      \"size\": 3222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1055b1ae17f86dc7e658fb34613d8f9a4e845e49365c35d3a6053f8951c0d9b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.putty\",\n      \"mode\": 33188,\n      \"size\": 2750,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1d4e5abe3e72dcb4239a18763dd5e55b98c95b4fe2a21c0edee963e3297184b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.putty-256color\",\n      \"mode\": 33188,\n      \"size\": 2860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32ea43f836ec63b2bd11f86d7a42f3ce858beba03f1b28eb6581618dadb52f79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.rxvt\",\n      \"mode\": 33188,\n      \"size\": 2247,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56c9d69c6d47692e303fe4d96181076162910cf74cefe89437ead6f26c408c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.teraterm\",\n      \"mode\": 33188,\n      \"size\": 1727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"725d4c2a9c80bed343cb48aadc13aabc855b5aa1a573c9a54bae2dc529a9c5e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.vte\",\n      \"mode\": 33188,\n      \"size\": 3360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e339b3d65c23a066ac9d8d7d3afaf266feb11dab2d042406a3ec45873eebba2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.vte-256color\",\n      \"mode\": 33188,\n      \"size\": 3514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e69bfa913b17f9fff3ead0289fbed657a21c21e4de4a4d9eb8edaf70754db8ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.xterm-256color\",\n      \"mode\": 33188,\n      \"size\": 3459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63e5331cd64a5211a4ed476452a2654d77825c2449d989cf2e6e8a7889fc8aa8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.xterm-new\",\n      \"mode\": 33188,\n      \"size\": 3575,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0215182a3f8a0ec27209799f21befa88a3f588fdb5663edcd9148e065ceb7ae3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.xterm-r6\",\n      \"mode\": 33188,\n      \"size\": 1668,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ecd3c79d5dc9301f0472af6a58ff9319275091556bbcaaa7d4b79833ac2f9dd1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/screen.xterm-xfree86\",\n      \"mode\": 33188,\n      \"size\": 3575,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0215182a3f8a0ec27209799f21befa88a3f588fdb5663edcd9148e065ceb7ae3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/st\",\n      \"mode\": 33188,\n      \"size\": 2949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c9514d660232ea443e619ab3ab6dfb9fea10b19bdd168a3da112db01001136c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/st-16color\",\n      \"mode\": 33188,\n      \"size\": 3343,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f029dc0aa4a8e755ae1673dd1cb11ae4af30789c0d27f5015fe7d008b22d8159\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/st-256color\",\n      \"mode\": 33188,\n      \"size\": 3111,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ae4cbb8a2784c2e95cd166b635878dfb4e53471afa32723d4186cb5343702c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/stterm\",\n      \"mode\": 33188,\n      \"size\": 2949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c9514d660232ea443e619ab3ab6dfb9fea10b19bdd168a3da112db01001136c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/stterm-16color\",\n      \"mode\": 33188,\n      \"size\": 3343,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f029dc0aa4a8e755ae1673dd1cb11ae4af30789c0d27f5015fe7d008b22d8159\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/stterm-256color\",\n      \"mode\": 33188,\n      \"size\": 3111,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ae4cbb8a2784c2e95cd166b635878dfb4e53471afa32723d4186cb5343702c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/sun\",\n      \"mode\": 33188,\n      \"size\": 1004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02e392161cb23f49a8fb1ba2f1a6583e013c0c26672f58c5eaca828db3b19914\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/sun1\",\n      \"mode\": 33188,\n      \"size\": 1004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02e392161cb23f49a8fb1ba2f1a6583e013c0c26672f58c5eaca828db3b19914\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/s/sun2\",\n      \"mode\": 33188,\n      \"size\": 1004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02e392161cb23f49a8fb1ba2f1a6583e013c0c26672f58c5eaca828db3b19914\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/t\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/t/teraterm\",\n      \"mode\": 33188,\n      \"size\": 1701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75be3c4134fb55cb4b90e82eb97a7cc1cf346015a1afd723f48171862250e748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/t/teraterm2.3\",\n      \"mode\": 33188,\n      \"size\": 1592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6598b360cd87b5c3e3f99a5b0b4d462c59e754bad79968febc84c77b7acc3bdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/t/tmux\",\n      \"mode\": 33188,\n      \"size\": 3153,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe430822d0555eaadfd3748d7a56e78d60b42cd51a0cc492b8b918d55212ed12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/t/tmux-256color\",\n      \"mode\": 33188,\n      \"size\": 3295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e23bb2e0eda229c32ffe3b9ea54c11919a01d539ca4d94650349c3da2e2ac48\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vs100\",\n      \"mode\": 33188,\n      \"size\": 1525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b1249158a7053eee58242625f79b29f35da721cbcf695a327521cfed3bec117\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt100\",\n      \"mode\": 33188,\n      \"size\": 1190,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44fe1bfcc36f3a7669a387b623a44c360f9e150868f9924920182b44bcbbdba6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt100-am\",\n      \"mode\": 33188,\n      \"size\": 1190,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44fe1bfcc36f3a7669a387b623a44c360f9e150868f9924920182b44bcbbdba6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt100-nav\",\n      \"mode\": 33188,\n      \"size\": 1055,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e509a4ee7373ff884ef9b5b293fdffa88182711d6b0448fe99d2cbeb1939114a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt102\",\n      \"mode\": 33188,\n      \"size\": 1184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60e451f57c0308b79004ebc6189b49417b4ac11d783154072cae803a11af7d3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt200\",\n      \"mode\": 33188,\n      \"size\": 1377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75a4723bfcdcd22756366838f1d65233f386d7592b019740c8ca5b578e9a5857\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt220\",\n      \"mode\": 33188,\n      \"size\": 1377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75a4723bfcdcd22756366838f1d65233f386d7592b019740c8ca5b578e9a5857\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vt52\",\n      \"mode\": 33188,\n      \"size\": 470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d8e7d40be89fe71e5d2582caa5168fe53ed85d9063e0ccf42e5c53f4d17b069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vte\",\n      \"mode\": 33188,\n      \"size\": 3355,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8cb5a672dedd365d4831f11fbafedf0f803e70e7bb4dea69d9aa371027b6cd72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vte-256color\",\n      \"mode\": 33188,\n      \"size\": 3607,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0462f44fd6f4e5ac720e9e315bad30d6236716dbf31bd083fb619444ce56e3aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/v/vwmterm\",\n      \"mode\": 33188,\n      \"size\": 1302,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eae3fe39004992478d09bdb5063c6609f8c6f5119053de8fca645002b993b535\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/w\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/w/wsvt25\",\n      \"mode\": 33188,\n      \"size\": 1597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28d3410e6b83a3b78a41f108098ac8772a3af3ee2b627b9f9bb4b19b363a5be3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/w/wsvt25m\",\n      \"mode\": 33188,\n      \"size\": 1607,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18c85db3b0ef0ab15b7eb8dc4ac6ea14a37d851628220c8bb61e2edfa4f81683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xfce\",\n      \"mode\": 33188,\n      \"size\": 3128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3dd1f7ed31697af67aaeb0c5efc724298d1a92e76bbc406fa17f98c927533da3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm\",\n      \"mode\": 33188,\n      \"size\": 3617,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e56cd2b185047fd1fda6eacf067d1d85191463f1da4b1bf2128e17fe609815f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-1002\",\n      \"mode\": 33188,\n      \"size\": 3598,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f8873764e44acb8d47cb743ad4203584698f3dfc71cbbeb70da2dbff5d5c4be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-1003\",\n      \"mode\": 33188,\n      \"size\": 3596,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ae6ccb1c3c7af51aa8a24924bb87974e90b6559dd0ed057c42ae7cffd2ff840\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-1005\",\n      \"mode\": 33188,\n      \"size\": 3613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db3f585af9406e3f119d2708ebe8381c465b17e827d668825901e65335613543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-1006\",\n      \"mode\": 33188,\n      \"size\": 3597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"977ff286ea5a88afbd8998a74d04146288e3011d901314260fd54bff3497b2fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-16color\",\n      \"mode\": 33188,\n      \"size\": 3857,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6b95048b459156682b6a3212ce0d4f099c87a54882e8c876530004d3ca69819\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-24\",\n      \"mode\": 33188,\n      \"size\": 1525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b1249158a7053eee58242625f79b29f35da721cbcf695a327521cfed3bec117\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-256color\",\n      \"mode\": 33188,\n      \"size\": 3713,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7620aabd7be3a33a75e4817db17f6714bcf2a5336c6c6c51b12c2ee43e74c100\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-88color\",\n      \"mode\": 33188,\n      \"size\": 3679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0a051181c07ddf0442f542375ac67d86eb7c0aaa0fe919361a1bce09974123\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-8bit\",\n      \"mode\": 33188,\n      \"size\": 1991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5956361073c012c553c68a0089065a44d0c7e950df02114e6520f815f419aa82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-basic\",\n      \"mode\": 33188,\n      \"size\": 2205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9a35b70ee5a50c27637598f84d206ed9bfe4e66550ff863e0115e548ae0b3fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-bold\",\n      \"mode\": 33188,\n      \"size\": 1592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4296a878469b6bc5bab5acbce875e43bc501ab57a62d8d29cd34a424ba1e9de4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-color\",\n      \"mode\": 33188,\n      \"size\": 1551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f74fe619914bfe650f6071bbbaf242c439de8a2f0ecefe9e80870216dfb844b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-direct\",\n      \"mode\": 33188,\n      \"size\": 3661,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3519edd987899e953931c7907e0342d2392a3383ffddd6eef7b632ff59516cca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-direct2\",\n      \"mode\": 33188,\n      \"size\": 3651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9316fced488ee2277fbb281a302362b3c82a6c414954037cbe6c2d2ff3e65aa8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-hp\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1fb479583d422e6046b35302f944962b98e409161f4d13806aed6c79b9b5da7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-new\",\n      \"mode\": 33188,\n      \"size\": 3611,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9044f070e173876a4914cc4fb965a2832fcdb18abee1d82bae5df29f4d6745f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-nic\",\n      \"mode\": 33188,\n      \"size\": 3627,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18e365928ffb140aae9e86bc4f758a9bd603237a74e41185d5147579a65fd601\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-noapp\",\n      \"mode\": 33188,\n      \"size\": 3573,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43673e62c97d99d9ba1ae13e2742eee3cd1f94c1447a98f6daefc14b4d2dfb2f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-old\",\n      \"mode\": 33188,\n      \"size\": 1493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"927b8821c947b96b020ca7341dffb57bdfa2986fcaecd5fdbf2ca2369eacc285\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-pcolor\",\n      \"mode\": 33188,\n      \"size\": 1736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e26c29e1e306f010b464dacc578ca179943ff3717e43af3d566bad24d74dc10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-r5\",\n      \"mode\": 33188,\n      \"size\": 1301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82098ec067be6189e91e8264278bb85fe3b7bfdeaa3754be301313be140522ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-r6\",\n      \"mode\": 33188,\n      \"size\": 1491,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee12fe6d2d8e1d0b83d1042fe8a38f1aed6fd73e2c7316e6db5ec5b061b09ef8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-sco\",\n      \"mode\": 33188,\n      \"size\": 2427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b263571d8faea2decc93c9544d318bad2575287c0435172d4d7b427da97fb0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-sun\",\n      \"mode\": 33188,\n      \"size\": 2511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59ff2e4c54bdd7c06e8f14fcd5c7dd2687560f6a251e00af47f90cd3a25f69b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-utf8\",\n      \"mode\": 33188,\n      \"size\": 3627,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1dbcda3b0020deb52bdbbc2103499422c7a25e1527cf17445ccf7b08b1eb2241\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-vt220\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99afd4451a07b57527fa44c0e08a4543d151464a26fc4d9326116373f33c8e3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-vt52\",\n      \"mode\": 33188,\n      \"size\": 484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2164504f16ace2ce5d17b1f07a655029767148dc5f58d388853454aeb47a6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-x10mouse\",\n      \"mode\": 33188,\n      \"size\": 3595,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528494945a2e0934b9ce68e94e95853ba0d1a83f0b48f53139da212dfabcda68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-x11hilite\",\n      \"mode\": 33188,\n      \"size\": 3620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7af246ba47b100afcabb3dee7cc52c1686ee2127becd73d952823e410fe58e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-x11mouse\",\n      \"mode\": 33188,\n      \"size\": 3604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbda39a53519d0aea9524d658e6bfd6a7337a83b30d2539c6f31d2667a8a3e17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v32\",\n      \"mode\": 33188,\n      \"size\": 2040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"815040ec1c43c48641c930d6efd596dd3ffedb858c092d204db7d679dedca047\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v33\",\n      \"mode\": 33188,\n      \"size\": 2030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cd4e00bb8394ae485e6e19d3f79fda189ad180d6c30f67ea9f854dd220c39b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v333\",\n      \"mode\": 33188,\n      \"size\": 2040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d76ac338322b93169c4f1be085e0a28ac2de5c70bc2e7acf3967fb0ff2d05094\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v40\",\n      \"mode\": 33188,\n      \"size\": 2246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52a70e4af3efcd6d57156501c56f99de86374792fd9ed85b8e6f97e04fd674a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v43\",\n      \"mode\": 33188,\n      \"size\": 2260,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bef75e99c6d11623dc551d28b3e755bbdd611c3bc2eacfe7adb3dc3996cc9a9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xf86-v44\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8d2495110bbfebabdb8d89dad2d39a70bb806704bb379d8d0a9ad61869a8781\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xfree86\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2cfabe28ee20533848426f6c04c134603dd121a3d6831d0ec8a12f200e5a863b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterm-xi\",\n      \"mode\": 33188,\n      \"size\": 2020,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59b2ad72d3752c4e3875502821fc90857f3b4d7e3ded5ff975b6c557e3944076\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/terminfo/x/xterms\",\n      \"mode\": 33188,\n      \"size\": 1525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b1249158a7053eee58242625f79b29f35da721cbcf695a327521cfed3bec117\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9cc65cf602e326fe\",\n   \"name\": \"ncurses-libs\",\n   \"version\": \"6.1-7.20180224.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:ncurses-libs:ncurses-libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses-libs:ncurses_libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses_libs:ncurses-libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses_libs:ncurses_libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses:ncurses-libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:ncurses:ncurses_libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ncurses-libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:ncurses_libs:6.1-7.20180224.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/ncurses-libs@6.1-7.20180224.el8?arch=x86_64&upstream=ncurses-6.1-7.20180224.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"ncurses-libs\",\n    \"version\": \"6.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"7.20180224.el8\",\n    \"sourceRpm\": \"ncurses-6.1-7.20180224.el8.src.rpm\",\n    \"size\": 1120040,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f/a4257065e15ec5447b36eec86bdf4ad6b6ad3d\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b/5886411e342c52d649245d46acd346d9870bb1\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/46\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/46/936366ebfed6d3828e23ce2a848023b6bd01d7\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5e/b7135acda6824ce98894c52c45cda27a866c4a\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/d42395e2ac6dd60332da36d26486f8a669b2cb\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/925636ecde9fb630563d73b62fe1589498db0a\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/836bbea1beebbd1df8bfab324bfec157320013\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/86c2ac74bfa0db05a88ad5f2b636720d0c2604\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0/90a2a9f97976d8b604bcec67c09dbb44a7dc4f\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e6/0c3bf2c757d54e7e7958fa7f9f3e9f7af20647\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/4bd7b5c64379e0337c21cac016ab752ccacd57\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef/4d909db95c328002dca46789bb58dc01b4bce0\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libform.so.6\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libform.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 88848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"575325aed3db6b7c34b174dd0da3f52f0663a1546a44afb78e2bab5751d6ad9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libformw.so.6\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libformw.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 97152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92d7fcf93e8d409af23d181f99d8d84706ae89fe0b31c4aae3710e013fcba723\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmenu.so.6\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmenu.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 48040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd21371deba4ea1f3641ad4b5434932cf4418cf9ab068fade27303fe7b0212b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmenuw.so.6\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libmenuw.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 48040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6734fa55b9a333f9ff53e25fa84937c8310ef257c732261e3ea77152ab172e7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libncurses.so.6\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libncurses.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 216912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37e54f939ea95345b87cd6aacb4b933889708a851f5d4030dc33718edb42be16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libncursesw.so.6\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libncursesw.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 300104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6917186341a5e6ea36eea5488909ab0b254c1d25d00507f919be453d71753a03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpanel.so.6\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpanel.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 21952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8832fe392e9cae2ea5ef543ed85db363390b7df2488413d193254ad47fed9d65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpanelw.so.6\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpanelw.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 21952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dc1ca629379124479d1ae271e50c00ef3673e570321000e36a80006e52d5739\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtic.so.6\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtic.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 68424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9bef84ab9530dcf32ee44395912e7bc4417f70c69fd43d878b0d7d2de7894560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtinfo.so.6\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libtinfo.so.6.1\",\n      \"mode\": 33261,\n      \"size\": 208616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d3bfa809d1ed5c6efd9e6b4f04658cc3bc967492ee9b09ebc80a77110f9bfc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"cdd6a5d960cec05f\",\n   \"name\": \"nettle\",\n   \"version\": \"3.4.1-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv3+ or GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:nettle:3.4.1-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:nettle:nettle:3.4.1-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/nettle@3.4.1-1.el8?arch=x86_64&upstream=nettle-3.4.1-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"nettle\",\n    \"version\": \"3.4.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"nettle-3.4.1-1.el8.src.rpm\",\n    \"size\": 683185,\n    \"license\": \"LGPLv3+ or GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/12af30140400a99a0bd18bde0012e2519f3067\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/55309cb00960367d164941eb8ad779ac75d0df\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libhogweed.so.4.5.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"451b29b2271e5137c66acf11edc15a64fb97cfaa59491a85dfc8f0e4a626d15b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libhogweed.so.4.hmac\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libnettle.so.6.5.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a34d2460ff8cf5eb279265c7fbb8a69ef7ecdac9cdba9f1e9cd5bdcdc41784d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libnettle.so.6.hmac\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libhogweed.so.4\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libhogweed.so.4.5\",\n      \"mode\": 33261,\n      \"size\": 248080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c074e9515c76da932a1cb63fcf698bbddf617a2ca73b39f94cc5686f05cb0724\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnettle.so.6\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnettle.so.6.5\",\n      \"mode\": 33261,\n      \"size\": 299920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71de20c3894bfe28159365a4411305994daa01222baee6c8888cbd60eb58543d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/nettle\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/nettle/COPYING.LESSERv3\",\n      \"mode\": 33188,\n      \"size\": 7639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/nettle/COPYINGv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9dd17366558ef500\",\n   \"name\": \"npth\",\n   \"version\": \"1.5-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:npth:1.5-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:npth:npth:1.5-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/npth@1.5-4.el8?arch=x86_64&upstream=npth-1.5-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"npth\",\n    \"version\": \"1.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"npth-1.5-4.el8.src.rpm\",\n    \"size\": 47909,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/1fdf4ad239c5c2439a39d7be3174f77858d4e7\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnpth.so.0\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnpth.so.0.1.1\",\n      \"mode\": 33261,\n      \"size\": 21384,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd524880183221b8b8f5bbe08d58af24405a8b0104436c7e14f17b61319f877e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/npth\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/npth/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 26525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"25f789644f9bbbb3\",\n   \"name\": \"openldap\",\n   \"version\": \"2.4.46-11.el8_1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenLDAP\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:openldap:openldap:2.4.46-11.el8_1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:openldap:2.4.46-11.el8_1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/openldap@2.4.46-11.el8_1?arch=x86_64&upstream=openldap-2.4.46-11.el8_1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"openldap\",\n    \"version\": \"2.4.46\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"11.el8_1\",\n    \"sourceRpm\": \"openldap-2.4.46-11.el8_1.src.rpm\",\n    \"size\": 1388793,\n    \"license\": \"OpenLDAP\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/openldap\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/openldap/certs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/openldap/ldap.conf\",\n      \"mode\": 33188,\n      \"size\": 900,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3bea281bbd267ed31c02249d9ce4c7659d764c6c36b0f0c81a39e4c810236eb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/034441ec0d6b61520d61f5846895582b53292e\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/7d45fb760a09fbb17872979cae6d50a93efe96\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae/aaaa315ed18dc999af2e4305c025384ef512d9\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d0/c8abc32e2f342bc700b6173b300e541c0ce8df\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblber-2.4.so.2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblber-2.4.so.2.10.9\",\n      \"mode\": 33261,\n      \"size\": 97048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38531c51f0b9f3fc6cb3753cf4729c59fc375a4a3ac871e015b5149cc29d3af1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libldap-2.4.so.2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libldap-2.4.so.2.10.9\",\n      \"mode\": 33261,\n      \"size\": 473376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a5f170859496fc4a7073fbe1816091f4930470f2da183a606ad42c6ff099eb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libldap_r-2.4.so.2\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libldap_r-2.4.so.2.10.9\",\n      \"mode\": 33261,\n      \"size\": 529912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e93c520a31e2c74bf2d66757ca127407023b2ddd8f57331ed325145603238f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libslapi-2.4.so.2\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libslapi-2.4.so.2.10.9\",\n      \"mode\": 33261,\n      \"size\": 173760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb97c93e3fda0f738423935c2ddae62fe872bac24542162e9523e23bb9cce1fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/openldap\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/openldap\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/openldap/COPYRIGHT\",\n      \"mode\": 33188,\n      \"size\": 2345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a207b1dd64d275e3cbe0bed9ae5e8b05f410318984c4c84ca07c992808da4379\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/openldap/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 2214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"2eb71ebe9badd672\",\n   \"name\": \"openssl-libs\",\n   \"version\": \"1:1.1.1c-15.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"OpenSSL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:openssl-libs:openssl-libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:openssl-libs:openssl_libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:openssl_libs:openssl-libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:openssl_libs:openssl_libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:openssl:openssl-libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:openssl:openssl_libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:openssl-libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:openssl_libs:1\\\\:1.1.1c-15.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/openssl-libs@1.1.1c-15.el8?arch=x86_64&epoch=1&upstream=openssl-1.1.1c-15.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"openssl-libs\",\n    \"version\": \"1.1.1c\",\n    \"epoch\": 1,\n    \"architecture\": \"x86_64\",\n    \"release\": \"15.el8\",\n    \"sourceRpm\": \"openssl-1.1.1c-15.el8.src.rpm\",\n    \"size\": 3744176,\n    \"license\": \"OpenSSL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/pki/tls\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/certs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/ct_log_list.cnf\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/misc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/openssl.cnf\",\n      \"mode\": 33188,\n      \"size\": 11225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af49f6cc959e96df354a9a9442814fcccc6d3e1ed6fa2d4af123d2e2987b66f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pki/tls/private\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00/2a6b0c4063f20cd80099a3b4d9e3732e0bbc73\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/32\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/32/e275760859214d906dab89c9ab008bc40f6e6f\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/da39ce3c907073d0e69f48906646b3e288ca78\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54/eb62cc41d23c3de00b5d5745322de1383acf26\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc/a69d9f4bc067ffa2f880051d3979ce96070ac5\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libcrypto.so.1.1.1c.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9de44a982946949d78b267ac03d085851bf18ad14efcb493bfd8d47d58f1222\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libcrypto.so.1.1.hmac\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libssl.so.1.1.1c.hmac\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e2871a8c6fcc65fb6ce1b90bc4df64b8438378c7cd9a6f699b2cfaa95530456\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/.libssl.so.1.1.hmac\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/engines-1.1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/engines-1.1/afalg.so\",\n      \"mode\": 33261,\n      \"size\": 20464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d81f39a80822de1e9a63a1dfe7c2778fd75bde0c58a4e95a4164aac46e6c6121\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/engines-1.1/capi.so\",\n      \"mode\": 33261,\n      \"size\": 7416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"723b91cedc5ce98e2959fde3e1f7b9ad24531aa1416ef53541254413a8932f70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/engines-1.1/padlock.so\",\n      \"mode\": 33261,\n      \"size\": 24168,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e38818fafd2bb7681e6d92aa273e1055132647d4a686152778117e0fe5020c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcrypto.so.1.1\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libcrypto.so.1.1.1c\",\n      \"mode\": 33261,\n      \"size\": 3058736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b29662bd5d05c53e6ce913e0ac0f04ce5a5c55bbfb680dc1e9eea3a1630a22be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libssl.so.1.1\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libssl.so.1.1.1c\",\n      \"mode\": 33261,\n      \"size\": 615504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e758cc5b69a84ac3116abc89ea8963bc57b3dfe5b05cf35d759c74d6c1a3c6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/openssl-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/openssl-libs/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 6121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c32913b33252e71190af2066f08115c69bc9fddadf3bf29296e20c835389841c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"ba95646261b30775\",\n   \"name\": \"p11-kit\",\n   \"version\": \"0.23.14-5.el8_0\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:p11-kit:p11-kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11-kit:p11_kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit:p11-kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit:p11_kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:p11-kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:p11_kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11:p11-kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11:p11_kit:0.23.14-5.el8_0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/p11-kit@0.23.14-5.el8_0?arch=x86_64&upstream=p11-kit-0.23.14-5.el8_0.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"p11-kit\",\n    \"version\": \"0.23.14\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8_0\",\n    \"sourceRpm\": \"p11-kit-0.23.14-5.el8_0.src.rpm\",\n    \"size\": 1394732,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/pkcs11\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pkcs11/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/p11-kit\",\n      \"mode\": 33261,\n      \"size\": 41984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3c511801f565a90e8c49e6b0d877fe67f24268e07643136bca144470e6e0428\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08/5cdfd57ab06e3134a2c00e71475574cee850df\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/b97f2c714af5f1460036865989d75810850c07\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b6/f024857f04d8afee61f0bcc0632f73e1b35202\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libp11-kit.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libp11-kit.so.0.3.0\",\n      \"mode\": 33261,\n      \"size\": 1295528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed97293116426180852e63d6eeb216e9487ef3ac1c3d81cb59c6fe55ca25563d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/p11-kit-proxy.so\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/p11-kit\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/p11-kit/p11-kit-remote\",\n      \"mode\": 33261,\n      \"size\": 32344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"748f34340a2b990ae3c00f93c8fc133d2e77cc20f48cce06fcb5b0305d7576c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/p11-kit\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/p11-kit/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e1ba993904df807a10c3eda1e5c272338edc35674b679773a8b3ad460731054\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/p11-kit\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/p11-kit/modules\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5f3bbbf8821ee884\",\n   \"name\": \"p11-kit-trust\",\n   \"version\": \"0.23.14-5.el8_0\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:p11-kit-trust:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11-kit-trust:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit_trust:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit_trust:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11-kit:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11-kit:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11_kit:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11:p11-kit-trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:p11:p11_kit_trust:0.23.14-5.el8_0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/p11-kit-trust@0.23.14-5.el8_0?arch=x86_64&upstream=p11-kit-0.23.14-5.el8_0.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"p11-kit-trust\",\n    \"version\": \"0.23.14\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8_0\",\n    \"sourceRpm\": \"p11-kit-0.23.14-5.el8_0.src.rpm\",\n    \"size\": 508547,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/trust\",\n      \"mode\": 33261,\n      \"size\": 239200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a4a3aecdda8127b4d447a9a379c275613296811d9d15fcf16b98272a81e038c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a/0bef58a33134c3e894b5d143454afdb0825262\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52/a32cadf1779253d61f57b74abb40757075bd63\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnssckbi.so\",\n      \"mode\": 32768,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib64/pkcs11\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/pkcs11/p11-kit-trust.so\",\n      \"mode\": 33261,\n      \"size\": 268296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17b194507b9603f3cc4237ca844e1de167ab7980f5f025baa2bb14187f4373d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/p11-kit/trust-extract-compat\",\n      \"mode\": 33261,\n      \"size\": 275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b9b63689b120e461687c7febc6ab0c3d33d6acd6f943c46113c9ed284b49ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/p11-kit/modules/p11-kit-trust.module\",\n      \"mode\": 33188,\n      \"size\": 776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a451086326b39dcefbee7d38f2b19886bb25c1eb6f64b06d1e0dd00c8c4b4e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e0b8ac42a0bf3539\",\n   \"name\": \"pam\",\n   \"version\": \"1.3.1-8.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:pam:1.3.1-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:pam:pam:1.3.1-8.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/pam@1.3.1-8.el8?arch=x86_64&upstream=pam-1.3.1-8.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"pam\",\n    \"version\": \"1.3.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"8.el8\",\n    \"sourceRpm\": \"pam-1.3.1-8.el8.src.rpm\",\n    \"size\": 2857052,\n    \"license\": \"BSD and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/pam.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/pam.d/config-util\",\n      \"mode\": 33188,\n      \"size\": 232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f10f27a970924ba9f636f2d5fdb4267c3ada93f7b4eee1bc3ad05c33406e76c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/fingerprint-auth\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef504b9d80c9db13ebd0d4aca651de31784938caa4e059d13964e48032057219\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/other\",\n      \"mode\": 33188,\n      \"size\": 154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5c2a7c1f8dfbefa5df66cd32a7b754266d6375471d43cea06b8bea937d24b40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/password-auth\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"515f0848df9db305c4c1505220bd4292f1036245dced25a62baffd1321eb2804\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/postlogin\",\n      \"mode\": 33188,\n      \"size\": 398,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b565d5426d2dbb52dd605d009c151b0b35c4411d37241049b26cb60f4b36add\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/smartcard-auth\",\n      \"mode\": 33188,\n      \"size\": 743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c7bde5453e7f5de23fec09bc7a8639e2985725d4e225ad6b4009b4a66b04096\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/system-auth\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"515f0848df9db305c4c1505220bd4292f1036245dced25a62baffd1321eb2804\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/security/access.conf\",\n      \"mode\": 33188,\n      \"size\": 4564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f68915c4eb637aacbfa01cf26dc469a73f70acb0495efc4b074ecbc626bcb345\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/chroot.conf\",\n      \"mode\": 33188,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fb959ba2053842c5e0d60605a5ed7528fca2727414700cf3783c3f1309d2f30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/console.apps\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/security/console.handlers\",\n      \"mode\": 33188,\n      \"size\": 624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51d0a7ff736763340d192e07c3ff423f0de85347ab849c3065d18212590e1119\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/console.perms\",\n      \"mode\": 33188,\n      \"size\": 939,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1fd01ea23a67467ef8196a118752d1ee5a6f31982af9f5cc810a708a37d0472\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"c\"\n     },\n     {\n      \"path\": \"/etc/security/console.perms.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/security/faillock.conf\",\n      \"mode\": 33188,\n      \"size\": 2232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6209097352db267635e00812bf419e9d1b010850280b4d7a064e106ee70ac4bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/group.conf\",\n      \"mode\": 33188,\n      \"size\": 3635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41df4bc646811997d0390c6d37d839d2aef4a9a1a940c44ee1a798a9dc1ac864\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/limits.conf\",\n      \"mode\": 33188,\n      \"size\": 2422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"185b151a665848d8ee518342b9a88a2d64898b0b1a2d01b12be731f75d48943b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/limits.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/security/namespace.conf\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0c3045ba5071b8375fde6165d4e4db9b69f49af5d2525cecd2bca1cb7538552\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/namespace.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/security/namespace.init\",\n      \"mode\": 33261,\n      \"size\": 1016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d76094c06f10839c566ef64bde5624c325aeab7991e7f5d776c5310e8f41932\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/opasswd\",\n      \"mode\": 33152,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/pam_env.conf\",\n      \"mode\": 33188,\n      \"size\": 2972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff4956721a3f53e56e25ffffde62fe4fa0267e5dd94c3411def12de50322fb8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/sepermit.conf\",\n      \"mode\": 33188,\n      \"size\": 419,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"885ec2a43042ad88d7f849e5e1cbef4e34e58229764a84a927c0e09cd7d47d70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/security/time.conf\",\n      \"mode\": 33188,\n      \"size\": 2179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6802adfc8efc6168f87e98e960fa7d15e516a295fef7a6472ef5359527e886ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/02\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/02/51f6622efb43dd45c88a995d77166962d69ba9\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/03\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/03/d995ed9f50fde8fefe530f4dda82f60c33689a\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/06\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/06/937dd05de3fbba28adccfefb4a7d00b81642ae\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/d5a91d383e1c5c32e53eb1d3bb5ae18e78bd3f\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f/ff8147702da595ed23dd3ae6076eaa1e949afd\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/12/7dc9d59d5c820b4e1b6900cc33799090b098c8\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25/34b313ce342ddeec4a5be5902f18f04d3605f4\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/25/6cc757b0354b555f66bc0bf3d52b073adfbc71\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f/6bf574ee7c52195c3751a62bd5e9c37c8b05e3\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/f9b803594153201428c472514dffcdffb907c2\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/45/192ce177ed22beaecca8dfbfb7ac5c7d811928\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47/a9a2d6a3ff3983e2794e7e34012f395b18fa4d\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/53\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/53/2a0b536aa676ae361b31444829bbf08feaa38b\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/effdb70bd8e72afa878a651a6ff479fa17b029\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d/e597c3b9fef35b2917e14111568be97d8fd026\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62/43a238598ef60be15d769c927dca61d7613445\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/40462efa30a55265d6463d8e2d7a6ed68ebd3e\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/82c7e934ce2ed338b2c84b002aa1bc13f56bed\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67/67846132282cfd4d1f3939a4616450f21caad2\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68/7c7e7462a63122f669c29f9ff310bf634f0cdd\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6b/22a491dedb60ff54f44db5d4f74d59371d4199\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6e/1978a35fdfb3b5e2d577ae1e774314500473d3\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/72/b28ea8caf184577570f0e3654f9108e3d31567\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76/f7473a7494e4bc52cb236f7f22002243d0cf5d\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78/9dadbe2c7296b74af5379176a07d70dfdaeba4\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/79/3c1cadd4070d4cc30dde94b0a582e1d07e4511\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/230aa8281bdd39174ec14fe1a62fb40a16e2f4\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7e/502d1183e82905b1ac8e311041497624c25173\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/94405cc71d21ff52da24a68bbd58cbc55e0cff\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/99a9a26ebb8f952332ff5b89ad8aedcc0d26e4\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a/b92a4d1f03f423b15672353259b8a2f8773fbb\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e/8c255c0272d798f2beb9e9980b0927f3b3e00b\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91/cc5209b937d09319632df2c546db5236cb28c2\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/93\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/93/4078d89daf67c09b3f481f84c7693121a85c24\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99/9a24b2a704b0b055201beb4407520d762b795a\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/0e2951ff14bd853ebb6cfd5f04370430be2a66\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/0325bf361aa4552a27fcade35e9ec591206056\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/1e93c6776bdd4fd13a0ee72077ce42059bb3d0\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0/7a8cd5cd98a2e68f81855e03c51c9db17c8239\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b1/baee265d4e97989fde751e8979a33be86f6713\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4/922395a3e6c6beacacf1c8beb7ec41e09d2dc9\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c7/efab877bc271230b72a43441a543ab4986a642\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9/cc366e55162d568fb98e946ba2f734eb64405a\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/54b2071328155b73faf189cd5ef8eeb638f24f\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/db\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/db/c85e13a7520a78ce5e8cc4f5b84befa413de6c\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/aaa45233b43ab85dfc39eabb98c1d0f9622f84\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/e9e8b905edbcd6987f598bd330c99f7d204d80\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3/adaa2d4338dfdf5c0ffdd33974c861fa95721c\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea/71bdec017daecef880dbec01ff4b21946f3251\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed/6b81acd2208f2280d13add3ff9ed6176075d8f\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f0/45ee462d826d18f096c583f1a5a992d0a138d8\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f2/f23f87ead0f721f4cc7dc6d97a6ed5def2bfea\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5/e0c727c8b63404d1d9d71c080cc30c25a9013b\",\n      \"mode\": 41471,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8/4a4697e8289016429ae525d0cf9ef3b5b23c63\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8/5ef2e543ba5b1f5f769ccc82919aabcc1a05be\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fa/862fc38a64f0de2022b8824dc88450c5b12ca9\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe/0548533cccf64e2f0e85a2bb33f70f777129a9\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/pam.conf\",\n      \"mode\": 33188,\n      \"size\": 98,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d4c2cdce5e69cc9427a7a96d35cfb1d1cf4bb72d540a87fc93a2345839f78ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpam.so.0\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpam.so.0.84.2\",\n      \"mode\": 33261,\n      \"size\": 128992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6c40d4d00b1f58ee35d90176710393ae7ed000ce6debb750bc71aef62025ae1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpam_misc.so.0\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpam_misc.so.0.82.1\",\n      \"mode\": 33261,\n      \"size\": 20136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e730fe65812b7fccd78f043593afd20b0aab047ccb57e5218b715fb764910985\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpamc.so.0\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpamc.so.0.82.1\",\n      \"mode\": 33261,\n      \"size\": 22136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66508c1487b95e4a1205e7f13500463514125cc69d3e72838485eb802a63c0a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_access.so\",\n      \"mode\": 33261,\n      \"size\": 22656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bf618be989ac4110b83b70d916438ab9ba5fdcc7251e80ddf1765bc02ce9d57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_chroot.so\",\n      \"mode\": 33261,\n      \"size\": 13456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38076076568135b90e987ec0bafd8491bc7dc1f6ea6ebb4c923eb4ee531ca244\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_console.so\",\n      \"mode\": 33261,\n      \"size\": 34984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0139d3db177e4e2f7c4530bf6b58bd6f694f881ee58a852e2cb2ac709fae72e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_cracklib.so\",\n      \"mode\": 33261,\n      \"size\": 21840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2e53f5da8d673bfac55014864452a36286e5c6844f6bf667bc70d9df74a06a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_debug.so\",\n      \"mode\": 33261,\n      \"size\": 13864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2d6109ee9048861e93bb8697a537b532ea53473c75e927b0878a2bdae57df68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_deny.so\",\n      \"mode\": 33261,\n      \"size\": 9552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be1b8deb94380dbbc64255be6e1f50ad5333948eede62660f9d69726652d18b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_echo.so\",\n      \"mode\": 33261,\n      \"size\": 13944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a55f5a3d6b525d3d15bcd741634d90631ff767f9497527f011b32769ae9e9b2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_env.so\",\n      \"mode\": 33261,\n      \"size\": 22536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"644b67ee0ec00a1951c0e645e73f4c6221c4bca790be6a2c2bd511f01d63d5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_exec.so\",\n      \"mode\": 33261,\n      \"size\": 18008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"960df2fd2af8ecbd061d06e7cb2879ba764beb7449f27e35b8d5482edda02f39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_faildelay.so\",\n      \"mode\": 33261,\n      \"size\": 13472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"038ceef2a345d5e4b1103cfbe2bbc6b388af13ba1af19edcbe2e0d152eddf803\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_faillock.so\",\n      \"mode\": 33261,\n      \"size\": 24408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e2c22a8590abfdacc1ca053e6f0bbbed630478ad1f9f9606f97c92b20fa73f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_filter\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_filter.so\",\n      \"mode\": 33261,\n      \"size\": 18040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42fa13a48c20bce2024855ba627db8103553a263a22e1e9a5c9092f137bfb929\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_filter/upperLOWER\",\n      \"mode\": 33261,\n      \"size\": 14912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba6b0b73ba59452d48cc6d60e3ac6c0349d5afb2d84791e02188ca3d2af89a8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_ftp.so\",\n      \"mode\": 33261,\n      \"size\": 13456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56d1651333d3a575a601501f3db9b58edd1f05f2df68874d9a6378466baa9da3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_group.so\",\n      \"mode\": 33261,\n      \"size\": 17880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b494682d28da59d4830daa6dd2da541a23f72c5cb0df26c44a39c3e8bf3aa3bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_issue.so\",\n      \"mode\": 33261,\n      \"size\": 13560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53d5e30b1de96f7d3f3323bd88bf1a92c25a44141a1c8394b41e7ba74181cc0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_keyinit.so\",\n      \"mode\": 33261,\n      \"size\": 13600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbd4561fbf8a40ba97d6c6a54f24bfb273c5e99fa92087e419871df9a98fc9dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_lastlog.so\",\n      \"mode\": 33261,\n      \"size\": 22456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0765cd75d593c0a0914709cff2751be3bbed3cc219a49847d04b8bf3978f56d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_limits.so\",\n      \"mode\": 33261,\n      \"size\": 26056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"371aa6baa185353f0465fbc2b7863728ea71c7f9303583be524bc52a6d2e9107\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_listfile.so\",\n      \"mode\": 33261,\n      \"size\": 13768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d867100132c22638df82ccb7d93ab6c6515d6a0c005957205dd2bdd79456a89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_localuser.so\",\n      \"mode\": 33261,\n      \"size\": 13760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abc6fdb36d4c9e14135eb378cca89085bb3b9c14c714081a2c6b800b1c378a4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_loginuid.so\",\n      \"mode\": 33261,\n      \"size\": 13704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a88c477b389115505f8114093a06115f33bb8b22477c35f87c128908e0898944\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_mail.so\",\n      \"mode\": 33261,\n      \"size\": 17792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2117d41e082c264e8d241cf8c7ce5a91a8887085cc6588713a7ed76bec9fd581\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_mkhomedir.so\",\n      \"mode\": 33261,\n      \"size\": 13464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3f3816ecf25f9cc88742540a3f4cde7440a3c0975050cb7d1e8bf27aaf0cb8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_motd.so\",\n      \"mode\": 33261,\n      \"size\": 13648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14e8fa4f84281838d06081f8259994f66f5db3895c506c3497122d55ec03db02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_namespace.so\",\n      \"mode\": 33261,\n      \"size\": 51672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"150330dc66fcea232e20a6f9a3017941ab8fd75fe485001136d24ad2f502cea8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_nologin.so\",\n      \"mode\": 33261,\n      \"size\": 13640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fde7250470126b29e668d1a8f338d1f2c4bc0e107f0e47d6cab7aaa0d91a4f3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_permit.so\",\n      \"mode\": 33261,\n      \"size\": 9648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c221a6ff6c9686fc83ab57a646a3179d9d68a744c20749f22d997e3dd6148047\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_postgresok.so\",\n      \"mode\": 33261,\n      \"size\": 9360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1664809297bbd7605f102aac819d3d6a8cc38b117c47b0d605921073bb80e1d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_pwhistory.so\",\n      \"mode\": 33261,\n      \"size\": 23952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"baf7a2e3ae8c4895512e977b27cc62c29445409afa0ff6c693e52de057b493c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_rhosts.so\",\n      \"mode\": 33261,\n      \"size\": 13464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a324d603ac076c8bfbcaed1704d295fba4929274034114f0ffa41c0ec2551cf4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_rootok.so\",\n      \"mode\": 33261,\n      \"size\": 13720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7ff5afeb8e85fb9f9d1096034e0040a61f5539c3070dd97b9679257d26d8e3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_securetty.so\",\n      \"mode\": 33261,\n      \"size\": 13712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fd1a3a3d198565fc3be4e08c12d7568ea4869193b332564db7c8c8988b07209\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_selinux.so\",\n      \"mode\": 33261,\n      \"size\": 26616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b732a96949bcf3fa7cffd3d92e5de50031382cd5f4babfc6ef3d8c52d0e68fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_selinux_permit.so\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_sepermit.so\",\n      \"mode\": 33261,\n      \"size\": 17888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23317d3e4b8d222e2ec69011aa099c9199b2aec263071426458b010eccf1422b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_shells.so\",\n      \"mode\": 33261,\n      \"size\": 13624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64093f66d00593f705731298e2873d7163734e15607f4caa312fe19dd56ce95d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_stress.so\",\n      \"mode\": 33261,\n      \"size\": 18272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e25fcbd8316de12e3fc5fbbe282f99707a628f17118f113ebdcb0ae3057221b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_succeed_if.so\",\n      \"mode\": 33261,\n      \"size\": 18504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78bf90f2959577c52564bd68dbd2f42ff232cc20e6a6422a0e1c29280ae18440\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_time.so\",\n      \"mode\": 33261,\n      \"size\": 17808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"179ed72bfbeed78f9df5d325e498a360ca7df69c095f7db8cc4e12b0b5794be2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_timestamp.so\",\n      \"mode\": 33261,\n      \"size\": 30528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d00117ce9cd49f1bcf35516d2d12aadcb709343c76e4dd1cc512eb536735e26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_tty_audit.so\",\n      \"mode\": 33261,\n      \"size\": 13776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04f8ac604c27a8f2e2e20e12815d434c24f1c183774fb20ba9e6c632e98c383d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_umask.so\",\n      \"mode\": 33261,\n      \"size\": 13536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e189ffea0a090a4c7b21aa2342d1bc6dea26ac2f9e8d2839e9d0f49d9d34db30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_unix.so\",\n      \"mode\": 33261,\n      \"size\": 79056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f63b453e6bdbd44a3edf2d38968098e5e8c107e40b3ea7f4716fec73bccc58d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_unix_acct.so\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_unix_auth.so\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_unix_passwd.so\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_unix_session.so\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_userdb.so\",\n      \"mode\": 33261,\n      \"size\": 17888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26adb4f67e588bc15aca603b6b92458b1bf559222c79080ac29db3bd9cd6f1f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_warn.so\",\n      \"mode\": 33261,\n      \"size\": 9720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"592f8788b706a4dd30ea5d872f2c1495a6e884bceca0b2c02533602def3443bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_wheel.so\",\n      \"mode\": 33261,\n      \"size\": 13560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4ad1af6fd7d8674d4239e65950254239bc7641113a79dc418d6fca74411a630\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_xauth.so\",\n      \"mode\": 33261,\n      \"size\": 25984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f32206c3120d1fec3b73cbe7d2bee7708c4f624c9aeed7821ca83b6e1e9c375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/faillock\",\n      \"mode\": 33261,\n      \"size\": 21152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9299e0bb91da1ae0b94f5e3a1f5ad843ef5c36800ec2de073a1db1eb5b511ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkhomedir_helper\",\n      \"mode\": 33261,\n      \"size\": 27360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a257172b4831edac2c891d5368a99f019baaf0054f62be1764412fea1761c3be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pam_console_apply\",\n      \"mode\": 33261,\n      \"size\": 61656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e9d63758e3f0d5a396a8369d9661f3bf3165363d231b792871d9de67639224a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pam_timestamp_check\",\n      \"mode\": 35309,\n      \"size\": 14872,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48ec339f41bd50dd177b344371a3037b2833c54080fbe9841bfc9bd598b8f46f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pwhistory_helper\",\n      \"mode\": 33261,\n      \"size\": 21320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e562c55c8ea1bad12cbb12b040391a4a089dec72a4c091ed01f302f42c03a895\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/unix_chkpwd\",\n      \"mode\": 35309,\n      \"size\": 49464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30a8793d32987706e98fae126a4f8d46bbb8f2aa43c73e021c955faaac9fc8dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/unix_update\",\n      \"mode\": 33216,\n      \"size\": 49456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c350e931622f3841c7c3880a95192ad62b75da681bb5d3bc459d4a69c8a0b71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pam\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pam/Copyright\",\n      \"mode\": 33188,\n      \"size\": 2045,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pam/gpl-2.0.txt\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/Linux-PAM.mo\",\n      \"mode\": 33188,\n      \"size\": 546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"706c9bc7b2fcd06356228352e2fa807a87e019bf4e16532352c3eb7e718f0b3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/run/console\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/run/faillock\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/run/sepermit\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"84f2159fee251e20\",\n   \"name\": \"pcre\",\n   \"version\": \"8.42-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:pcre:8.42-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:pcre:pcre:8.42-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/pcre@8.42-4.el8?arch=x86_64&upstream=pcre-8.42-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"pcre\",\n    \"version\": \"8.42\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"pcre-8.42-4.el8.src.rpm\",\n    \"size\": 518067,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/03234c40ccfd77ea2bbee7ba4772e7db89c565\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0/ea2c9d06cb57414b681dec7d0b8ae8a89c6589\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre.so.1.2.10\",\n      \"mode\": 33261,\n      \"size\": 472912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f20925959f95d595193fdd0c1a627e61ff86a29f1774be588ea75ce369414608\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcreposix.so.0\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcreposix.so.0.0.6\",\n      \"mode\": 33261,\n      \"size\": 11888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6952ae73488eb10cf5a765255142be9c89dcf977a85136a447a03205eee93818\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre/COPYING\",\n      \"mode\": 33188,\n      \"size\": 95,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17abe1dbb92b21ab173cf9757dd57b0b15cd8d863b2ccdef635fdbef03077fb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre/LICENCE\",\n      \"mode\": 33188,\n      \"size\": 3182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f998c0f52eb704eff28f503580cfca3f2547280aa212994f6cf2d8e317587c1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9944ba1dcad20624\",\n   \"name\": \"pcre2\",\n   \"version\": \"10.32-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:pcre2:10.32-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:pcre2:pcre2:10.32-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/pcre2@10.32-1.el8?arch=x86_64&upstream=pcre2-10.32-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"pcre2\",\n    \"version\": \"10.32\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"pcre2-10.32-1.el8.src.rpm\",\n    \"size\": 667046,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/2f420c5cd119ff169ae7d73e698eded50925dc\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb/3c9986ed17121c3da6e74890023d727c5af289\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre2-8.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre2-8.so.0.7.1\",\n      \"mode\": 33261,\n      \"size\": 553480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"799d254188ff14306d19fe891df385fda7707d97f72fa8daedc5ab0c58cbb219\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre2-posix.so.2\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpcre2-posix.so.2.0.1\",\n      \"mode\": 33261,\n      \"size\": 11896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15dd8fc092680ee6bbcb10b58e5cee612a1e402729afe5838246715a29bc2c8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre2/COPYING\",\n      \"mode\": 33188,\n      \"size\": 97,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99272c55f3dcfa07a8a7e15a5c1a33096e4727de74241d65fa049fccfdd59507\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/pcre2/LICENCE\",\n      \"mode\": 33188,\n      \"size\": 3456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4a8b89cd38d6a7501d5b11a472fa15e71a051b66d6331c6cda364101389d6ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5670d9e9fd72b39\",\n   \"name\": \"platform-python\",\n   \"version\": \"3.6.8-23.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Python\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:platform-python:platform-python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform-python:platform_python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python:platform-python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python:platform_python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform:platform-python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform:platform_python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:platform-python:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:platform_python:3.6.8-23.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/platform-python@3.6.8-23.el8?arch=x86_64&upstream=python3-3.6.8-23.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"platform-python\",\n    \"version\": \"3.6.8\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"23.el8\",\n    \"sourceRpm\": \"python3-3.6.8-23.el8.src.rpm\",\n    \"size\": 41790,\n    \"license\": \"Python\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/pydoc3.6\",\n      \"mode\": 33261,\n      \"size\": 89,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cae2571c9656ca78109f8d561405625f4fa9a2d531cb725c161d19f5db187eac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pyvenv-3.6\",\n      \"mode\": 33261,\n      \"size\": 446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3131184975ef2015c4a19aaab679e9e884dfdd768e14fd9af0503f151396584\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unversioned-python\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/50f089ced0bc3bd83173ad73ba97d9b74b89e2\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/50f089ced0bc3bd83173ad73ba97d9b74b89e2.1\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/libexec/no-python\",\n      \"mode\": 33261,\n      \"size\": 157,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81f6ba91a7968c981a35d6f072b6ffebf86be5396c0cf5aad8179c6e45c7fdad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/platform-python\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/platform-python3.6\",\n      \"mode\": 33261,\n      \"size\": 12440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c9c82ea6de8831aa928e5b172065983802d175a4ed06dcf09d03d3d21622ea8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/libexec/platform-python3.6m\",\n      \"mode\": 33261,\n      \"size\": 12440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c9c82ea6de8831aa928e5b172065983802d175a4ed06dcf09d03d3d21622ea8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/platform-python\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/platform-python/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 12763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/man/man1/python.1.gz\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dg\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"c0e9a743b6db4487\",\n   \"name\": \"platform-python-setuptools\",\n   \"version\": \"39.2.0-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:platform-python-setuptools:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform-python-setuptools:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python_setuptools:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python_setuptools:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform-python:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform-python:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform_python:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:platform:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:platform-python-setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:platform_python_setuptools:39.2.0-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/platform-python-setuptools@39.2.0-5.el8?arch=noarch&upstream=python-setuptools-39.2.0-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"platform-python-setuptools\",\n    \"version\": \"39.2.0\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"python-setuptools-39.2.0-5.el8.src.rpm\",\n    \"size\": 2930163,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e899399c4dda98a7fe94f6b536ec1a5265f3ad39a1c76dc0100f8bbf22968e8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e899399c4dda98a7fe94f6b536ec1a5265f3ad39a1c76dc0100f8bbf22968e8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/easy_install.py\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3030bdbede40c43b175f9a9c2a5073d939d6e93a6ebff0286e77e1089f57dcf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 103822,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa0c61472335671be0725258aa66ec3776407771c13acf98dd8432456a9d766\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 95680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f355f4a3f08b558d4b890549353660578e147a02f44215db00a9df544805a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 95680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f355f4a3f08b558d4b890549353660578e147a02f44215db00a9df544805a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbcdfaabe0dc394557feba08accb267b4e4ad1f50bd273c252578cada90c4a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbcdfaabe0dc394557feba08accb267b4e4ad1f50bd273c252578cada90c4a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d56754de562d9bd3d3f0ff80cac164add19e93a745a2ab37554bea2f4e6d776f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d56754de562d9bd3d3f0ff80cac164add19e93a745a2ab37554bea2f4e6d776f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 18539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"800ec56958fb35625d855541f5ab2f560f987d573f994170f1ad5ccfd17c5186\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 18539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"800ec56958fb35625d855541f5ab2f560f987d573f994170f1ad5ccfd17c5186\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 201035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ebb24cfe8034f5c3182a01afc46c4a15c1634b340bb94500071c2bad91f2e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 201035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ebb24cfe8034f5c3182a01afc46c4a15c1634b340bb94500071c2bad91f2e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24410,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fb30c6e2705fb969ceff9eab10c18748068fef263ef518b9d1fe2501209f9d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 24410,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fb30c6e2705fb969ceff9eab10c18748068fef263ef518b9d1fe2501209f9d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py\",\n      \"mode\": 33188,\n      \"size\": 22374,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6019a2f49b8268d957ae19fa0e3a27cbbfb6bba14109bb69f5bd192aa0fc3ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py\",\n      \"mode\": 33188,\n      \"size\": 720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce47023d337fe9370b5b436b960d35efaf91d5043f5953d39bcb33d51e3e1e33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fef35a7394ebcf0b2bcdb38521b17ee5c1ea73f63668f4f60fbceb211d3a04ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d87f9ee0f14e4a17b2e66231424512e34f56f3bb36edd137afc43ac05f0b7fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d87f9ee0f14e4a17b2e66231424512e34f56f3bb36edd137afc43ac05f0b7fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 477,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aeb4a144efafa928ded168646691327511b5c7beb352e961a328c86cd9d62910\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 477,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aeb4a144efafa928ded168646691327511b5c7beb352e961a328c86cd9d62910\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77bb5bfee7e585f9504f3fa1efffe642ee857cc79f8b7dd680ac728006e973e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77bb5bfee7e585f9504f3fa1efffe642ee857cc79f8b7dd680ac728006e973e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e18462d4d0ae8aa003875739f5670caac399d1d206308fc4062a392a8505ba2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e18462d4d0ae8aa003875739f5670caac399d1d206308fc4062a392a8505ba2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8698,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df27a559b99c58c9d664a7db7cc6c0b15b3c3d56d04eb1e77247ab1acecaf0a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8804,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3234941e3ea8fb95d66e22bea8c1de0fd518a0094cd392116f967cf2334aac55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a059c6300bbe3d8e39e51910cbe0bf909a04e4ee7ccebbfd9c0b1287337ee8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a059c6300bbe3d8e39e51910cbe0bf909a04e4ee7ccebbfd9c0b1287337ee8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e77ace481863e5ff1acd208442b80eb3c21c6f3c5dc389ad0acddfb46738bb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e77ace481863e5ff1acd208442b80eb3c21c6f3c5dc389ad0acddfb46738bb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81c51f53301119280092c54513df6d59dcaa23f5ee2d8c003107567f50677c57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81c51f53301119280092c54513df6d59dcaa23f5ee2d8c003107567f50677c57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"535dda079048da34043fd35ac2779360938efa04f2112067d010f149d3756fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"535dda079048da34043fd35ac2779360938efa04f2112067d010f149d3756fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py\",\n      \"mode\": 33188,\n      \"size\": 860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"562fc0d2b0107876d4f9af57d2db75c909bd46a92041b0d2c73470f16954f640\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"448984089e1cff04e5693618c1960b1c489e6c331a00998ad683c0461c354f9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py\",\n      \"mode\": 33188,\n      \"size\": 8248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b8470106d1afcea96d82702ba9bf5ce11adc2275decc32e8b35e336c11e1589a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py\",\n      \"mode\": 33188,\n      \"size\": 4355,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a290bd94ca76ec4f4aad63d96daa78277616bfb1fa34c3a5c6161021a12a1a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py\",\n      \"mode\": 33188,\n      \"size\": 28025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4803117abcceddf2b622415909a664bb065a2ff106a8734ecf8a678b8be19cdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py\",\n      \"mode\": 33188,\n      \"size\": 421,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de6e96bcf9ba34dc44f2b9131a69f4afbe41fc66521a0ee291a7f11ec04dd560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py\",\n      \"mode\": 33188,\n      \"size\": 11556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b01a7c587ebda084dcd8c79f6a588064acadd29c1ea7f997ddd5768ba679ccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py\",\n      \"mode\": 33188,\n      \"size\": 229867,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e27de2d8dfe5a121c055ccbb6fd14e13fe9c03b4faee061042920e6f2ea6b6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/six.py\",\n      \"mode\": 33188,\n      \"size\": 30098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03a85d259563237b7f81e79b67d07352fc11ac85e8d257f0cd094cd8b70ac9ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 2487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254b651c7be5c4748db81e295aa363731ee7ea41be7f05e0eea989db33499486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"773e0f374d72a0ba2ccd7e217caca694b9157cb15bd4f8e8d9dafac3acab16f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"773e0f374d72a0ba2ccd7e217caca694b9157cb15bd4f8e8d9dafac3acab16f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/py31compat.py\",\n      \"mode\": 33188,\n      \"size\": 600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb2b15aa8c4b7ad0272fde2e33490792898a4130b52592cdd99523a9484c78a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/DESCRIPTION.rst\",\n      \"mode\": 33188,\n      \"size\": 1547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98eb24e2e1f899add2ed18c693c9b8904310b2c48067123c0e3d59f046479310\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/INSTALLER\",\n      \"mode\": 33188,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/LICENSE.txt\",\n      \"mode\": 33188,\n      \"size\": 1078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c32a3ac395af6321efd28be73d06a00f0db6ab887d1c21d4fec46128d2056d5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/METADATA\",\n      \"mode\": 33188,\n      \"size\": 3028,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"807787bb84b7a18c0cae00ae482f3c0a104021a64e933516ccaa60f57a2676ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/RECORD\",\n      \"mode\": 33188,\n      \"size\": 13565,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55ad01c2a0bedb38b03f4361a25aceb33b6e7e0a0989df50a56180c1dfd92d2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/WHEEL\",\n      \"mode\": 33188,\n      \"size\": 110,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91db0dfb93890192221cdfa23b846197cd8ac92d1b0d67f8b81c0c6e435a7ebf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/dependency_links.txt\",\n      \"mode\": 33188,\n      \"size\": 239,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e5902164a0ae536d9e4430b6cb29884b718fc4df5901583f13a96d848266ad4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/entry_points.txt\",\n      \"mode\": 33188,\n      \"size\": 2990,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c1a826039558e5fffb23605197a35250188300605244fa9ad8594b6731911ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/metadata.json\",\n      \"mode\": 33188,\n      \"size\": 4969,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db4d37e32496110ccdb5bfc2ca0e84633a197e9623c87b0a95e59e947fbe44ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/top_level.txt\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d87517555c00e0f7dfd7181316bdc6b135d729a3da3babe51baa0d27fe2ee138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/zip-safe\",\n      \"mode\": 33188,\n      \"size\": 1,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59621d09b1499d9f5f6686960cdff1d6f0c0fd1926f92735e622af3ed218285b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d671b0124725d2486b83a7d18bb30a8ff0ea4b841f08fa0fabc858528866c21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d671b0124725d2486b83a7d18bb30a8ff0ea4b841f08fa0fabc858528866c21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5067,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34d23813c9b1ef2eaf24db0f25f053ff687b858b75e730ce7333a6f36d954c78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5067,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34d23813c9b1ef2eaf24db0f25f053ff687b858b75e730ce7333a6f36d954c78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5750,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3c6ae623d5ce3b4d4986062b60acfe2edc61a9558a0c39807ee5ecac3f5e512\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3e85a754a3256cb1e7a58245d601986d09a3044d2a78cd2bbe52162e79a17f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49845e2255066c869f7733bd1ca9a75488c5cde4cd720104893daf27702cd3fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49845e2255066c869f7733bd1ca9a75488c5cde4cd720104893daf27702cd3fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e144ea88d7667b32be114c7fde8fb29a2b2eaa636ab59a3db4bdab6b1dcab74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e144ea88d7667b32be114c7fde8fb29a2b2eaa636ab59a3db4bdab6b1dcab74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e481c633fc3ea82b487ffe817ab303ed7f29922b00536cfb71d1dbf5ef20fdad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e481c633fc3ea82b487ffe817ab303ed7f29922b00536cfb71d1dbf5ef20fdad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 36761,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e65a3b4af736f9bb6d01660e22d0faa657ca2170c5b36f00cbc901e1da9d2f88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 36806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b5dc961833dd73db98ceb02fe896e7a81dbb22e9fcd2989498de80c1951a31b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1906,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bcc6cf5bdd6c2253e843be9c8c1668d16c17348181d41df7df5b3c039952f89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1906,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bcc6cf5bdd6c2253e843be9c8c1668d16c17348181d41df7df5b3c039952f89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39ac990ab1be2fc333e93ddf9d60656f379ce1c24b1f1c4261fefd39d74eea6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39ac990ab1be2fc333e93ddf9d60656f379ce1c24b1f1c4261fefd39d74eea6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d850438b68c80ecd8c004dbdfc887f693e90eaa9781bf602840d8961c5a9923\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3774,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52cbb68debd96f28a3330d7edb942fd7aac8dbd294b36c2f838cb4c4a4c452cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b66c42e6a44edf7367e8c9abf6a3ce66b7581ffbf7838c4dbec6c951338bb450\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b66c42e6a44edf7367e8c9abf6a3ce66b7581ffbf7838c4dbec6c951338bb450\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2364,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db8bd27cde66f07b2a88007f02ee2b5cfbd3508c45d98af0fe3af98a6853af70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2364,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db8bd27cde66f07b2a88007f02ee2b5cfbd3508c45d98af0fe3af98a6853af70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e83a7ebb28915bc574c549ecf8c6520d419c0c701121c112e954dc0ce4300639\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e83a7ebb28915bc574c549ecf8c6520d419c0c701121c112e954dc0ce4300639\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b250a93d5fc2c09ea0702654cf6b504f9bf677b9c5b44c4962206b43be6c8c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b250a93d5fc2c09ea0702654cf6b504f9bf677b9c5b44c4962206b43be6c8c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cadde9685f1103730d5538ae54fd6b0fb15dc217cf23501e3b2eb22d71d5dbf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cadde9685f1103730d5538ae54fd6b0fb15dc217cf23501e3b2eb22d71d5dbf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 32185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bda8ca7e423781edb5dba5c81928ad4fb1349c9b29fca62ccf6e4b2682befe9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 32185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bda8ca7e423781edb5dba5c81928ad4fb1349c9b29fca62ccf6e4b2682befe9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7273,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b66771bddaea61cc4e4b94ca1c1be488d942b59dd8c9807c4d4928f98ccbd822\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7273,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"847186f2521fbb956473fbc6252258bead6ad045b4f32e82be0d25fd510b381c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50c41dea4b8e8696e774b594bbf2c898120e5cd7eb0ab72c760894be1ef30ff6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50c41dea4b8e8696e774b594bbf2c898120e5cd7eb0ab72c760894be1ef30ff6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1481,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"115cc9bb095711d4406f8f06f8af8eda9cdfd77997d2b0112c28e275de960762\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1481,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"115cc9bb095711d4406f8f06f8af8eda9cdfd77997d2b0112c28e275de960762\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0dc7b89958eb99a6c04581800d41050d2cf0fd6a70440ccc6068403389b5595\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0dc7b89958eb99a6c04581800d41050d2cf0fd6a70440ccc6068403389b5595\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41205350ca1cfbf21c82b0209553c5e9cd901bf077cbe6ce3ebc6dd560876e80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41205350ca1cfbf21c82b0209553c5e9cd901bf077cbe6ce3ebc6dd560876e80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15654,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d86d65cddbc75e6b2b33cd98b169b38ef9452ea080750305ed123b693605c241\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15654,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d86d65cddbc75e6b2b33cd98b169b38ef9452ea080750305ed123b693605c241\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cead081ea6b2674606ad4b73e359258add48b9cfcd01e55c2621eef5e968fd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cead081ea6b2674606ad4b73e359258add48b9cfcd01e55c2621eef5e968fd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b8ed93569f1cf78d16e96be2e92fb6f221ebd17d3b55f6fe0a070a31bb488b81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b8ed93569f1cf78d16e96be2e92fb6f221ebd17d3b55f6fe0a070a31bb488b81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1100,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"667cb1e874475cb2199d723bb1a9033cad5f6752012c58d39b9c6b20031787f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1100,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"667cb1e874475cb2199d723bb1a9033cad5f6752012c58d39b9c6b20031787f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0762d631b95d7b33120cbf6beee4fc3a54386edf0d4b529c4486ccc65bd92e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0762d631b95d7b33120cbf6beee4fc3a54386edf0d4b529c4486ccc65bd92e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6153,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f2c2ce0e4b1122073ecac1f5ad800a83bebc809d625a2fa8b2deb26ffc222c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6701af95ae00d985abb8d455aa3970803a1923c9938fbe1247b4c72d2abb4915\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 942,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"473c609247f1eb3087d7052e8d87eb6e951602743838c78bab4e4f2568e0754e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 942,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"473c609247f1eb3087d7052e8d87eb6e951602743838c78bab4e4f2568e0754e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d56754de562d9bd3d3f0ff80cac164add19e93a745a2ab37554bea2f4e6d776f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d56754de562d9bd3d3f0ff80cac164add19e93a745a2ab37554bea2f4e6d776f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 201035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ebb24cfe8034f5c3182a01afc46c4a15c1634b340bb94500071c2bad91f2e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 201035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64ebb24cfe8034f5c3182a01afc46c4a15c1634b340bb94500071c2bad91f2e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24410,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fb30c6e2705fb969ceff9eab10c18748068fef263ef518b9d1fe2501209f9d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 24410,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fb30c6e2705fb969ceff9eab10c18748068fef263ef518b9d1fe2501209f9d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__about__.py\",\n      \"mode\": 33188,\n      \"size\": 720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce47023d337fe9370b5b436b960d35efaf91d5043f5953d39bcb33d51e3e1e33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fef35a7394ebcf0b2bcdb38521b17ee5c1ea73f63668f4f60fbceb211d3a04ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d87f9ee0f14e4a17b2e66231424512e34f56f3bb36edd137afc43ac05f0b7fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d87f9ee0f14e4a17b2e66231424512e34f56f3bb36edd137afc43ac05f0b7fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 477,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aeb4a144efafa928ded168646691327511b5c7beb352e961a328c86cd9d62910\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 477,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aeb4a144efafa928ded168646691327511b5c7beb352e961a328c86cd9d62910\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77bb5bfee7e585f9504f3fa1efffe642ee857cc79f8b7dd680ac728006e973e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77bb5bfee7e585f9504f3fa1efffe642ee857cc79f8b7dd680ac728006e973e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e18462d4d0ae8aa003875739f5670caac399d1d206308fc4062a392a8505ba2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e18462d4d0ae8aa003875739f5670caac399d1d206308fc4062a392a8505ba2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8695,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ad505f5df542d6272de9dab40cd8a7ddd63bcd7edf14ce84dc420c5a8a482aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"898e77a4e4c393f3908f4c8f12549a52f06cda5426c22f77e984a812bab99b34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f70af38900424ca21d9d943e5a4b061da86f9342dad0dc6232a976804bade2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f70af38900424ca21d9d943e5a4b061da86f9342dad0dc6232a976804bade2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e77ace481863e5ff1acd208442b80eb3c21c6f3c5dc389ad0acddfb46738bb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e77ace481863e5ff1acd208442b80eb3c21c6f3c5dc389ad0acddfb46738bb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81c51f53301119280092c54513df6d59dcaa23f5ee2d8c003107567f50677c57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81c51f53301119280092c54513df6d59dcaa23f5ee2d8c003107567f50677c57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"535dda079048da34043fd35ac2779360938efa04f2112067d010f149d3756fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"535dda079048da34043fd35ac2779360938efa04f2112067d010f149d3756fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/_compat.py\",\n      \"mode\": 33188,\n      \"size\": 860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"562fc0d2b0107876d4f9af57d2db75c909bd46a92041b0d2c73470f16954f640\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/_structures.py\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"448984089e1cff04e5693618c1960b1c489e6c331a00998ad683c0461c354f9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/markers.py\",\n      \"mode\": 33188,\n      \"size\": 8239,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1afa64f44636d3229a31388a81067cc85104a6876a560558b5f7a4a2273562db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/requirements.py\",\n      \"mode\": 33188,\n      \"size\": 4343,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b78e0cd87556b6bf29848cf63a19c82f3b864f7ad30136a8bdcb55d5da675488\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/specifiers.py\",\n      \"mode\": 33188,\n      \"size\": 28025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4803117abcceddf2b622415909a664bb065a2ff106a8734ecf8a678b8be19cdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/utils.py\",\n      \"mode\": 33188,\n      \"size\": 421,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de6e96bcf9ba34dc44f2b9131a69f4afbe41fc66521a0ee291a7f11ec04dd560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/version.py\",\n      \"mode\": 33188,\n      \"size\": 11556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b01a7c587ebda084dcd8c79f6a588064acadd29c1ea7f997ddd5768ba679ccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/pyparsing.py\",\n      \"mode\": 33188,\n      \"size\": 229867,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e27de2d8dfe5a121c055ccbb6fd14e13fe9c03b4faee061042920e6f2ea6b6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/six.py\",\n      \"mode\": 33188,\n      \"size\": 30098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03a85d259563237b7f81e79b67d07352fc11ac85e8d257f0cd094cd8b70ac9ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/archive_util.py\",\n      \"mode\": 33188,\n      \"size\": 6592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"930f086ff94a8c27273ca35b4bb87c1f3b5154ad1de5169c537aff2917559e63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/build_meta.py\",\n      \"mode\": 33188,\n      \"size\": 5671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16595a293af5bd22728947918d5244666784691ce162e78d9629ad7306896daf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 594,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356cc9d00d4111e9e066955ea94c962cd9b66e4e0fdc5e222f941412b1f2ee40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3024b8fe1afa016a0257f52000ff22b30c45fa9f94d1354a2c00eb955f9eec31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3024b8fe1afa016a0257f52000ff22b30c45fa9f94d1354a2c00eb955f9eec31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6307b644e7fa51ebebe2b51825b2b41bf719faffd7b58ce3743b90a378966d20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6307b644e7fa51ebebe2b51825b2b41bf719faffd7b58ce3743b90a378966d20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"045ee6113a8b5d0c7c085af5eabf9add0306e05c973b4e9c323b223d91631670\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"045ee6113a8b5d0c7c085af5eabf9add0306e05c973b4e9c323b223d91631670\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0b2b2eebb3ddff437024a56065ac229588bfbf3d5fb0152705c2679bb59c01c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0b2b2eebb3ddff437024a56065ac229588bfbf3d5fb0152705c2679bb59c01c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"932d3c78fb72fdab7441dfe8b155ffe59920cf0fa21a41299a7b6708910fae8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"932d3c78fb72fdab7441dfe8b155ffe59920cf0fa21a41299a7b6708910fae8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8c5ddc069dce440dd131077b26b4e20e4d16718e41492f6be07b977907504c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8c5ddc069dce440dd131077b26b4e20e4d16718e41492f6be07b977907504c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9941,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93be45e06c328fb02311952451c323500c289af76486caefe4c5af4772f9001c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fde437b3ea3e1a07b057be9693ee843019abbe52a2f8d87cca28ae7b364d536\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e187df78eb437617ca00e52d4ad7866e48743be1a7bf14a4679a87fa67739f36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e187df78eb437617ca00e52d4ad7866e48743be1a7bf14a4679a87fa67739f36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6350,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3744a18940e826554e51e9f1b700d6924eb401b11e6c93929e784628a5628fd4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6350,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3744a18940e826554e51e9f1b700d6924eb401b11e6c93929e784628a5628fd4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1317,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ab7022abceb8bd75c43b7bdbcfc754f051e3bcd59e570a18cc986852210ecad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1317,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ab7022abceb8bd75c43b7bdbcfc754f051e3bcd59e570a18cc986852210ecad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 64821,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3764f18debd93dc4f14b4e163780acfae352b4bfbd2c836df1a69769df1f84e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 64866,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fad65140c35221e136d4356ffb47279ffcad670a912c1728eb86fd96454bbcc6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b41fb808f11798d9c1d8bdf07ebe6b770583752695547d12e8d7dd118d254ba1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b41fb808f11798d9c1d8bdf07ebe6b770583752695547d12e8d7dd118d254ba1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91a874d869f6925def4559c620a53290b5eae6d20b14b76dda4657558b6874b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91a874d869f6925def4559c620a53290b5eae6d20b14b76dda4657558b6874b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2261c3b378ef18e93bc493857d6448ed72e4a170a3eb2774b588e8bfbfc2e49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2261c3b378ef18e93bc493857d6448ed72e4a170a3eb2774b588e8bfbfc2e49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0bd5dc5c01d069b93433b2e5ae79a9eacc87b120c716c4aad5f14ba2056cef8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4007,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"746ef37ebfc258efb7a359400716c74bbcbc706fb729db2e9f77c75308f972d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2202,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8d0445b414fa54171feba039ec1af8bef6b78973a3b60446622b2e68f3a6b43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2202,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8d0445b414fa54171feba039ec1af8bef6b78973a3b60446622b2e68f3a6b43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b3712ce79c0b092269bf28259c47a738df2cfb93ec9334b1a5a7ff5872e6dc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b3712ce79c0b092269bf28259c47a738df2cfb93ec9334b1a5a7ff5872e6dc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d06a1d200c1c15c3a3ee62016a3f40c95c4c0bc81bce658c21d6a2639cb502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d06a1d200c1c15c3a3ee62016a3f40c95c4c0bc81bce658c21d6a2639cb502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52976e5786459623b0b4ffa54551c369bb791d7aef667c6f822e5d0f3b417dc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52976e5786459623b0b4ffa54551c369bb791d7aef667c6f822e5d0f3b417dc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"138cf00d8097c9527467bbfef86d29bb2e3996f358bafa4be2832cf78d01eba6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"138cf00d8097c9527467bbfef86d29bb2e3996f358bafa4be2832cf78d01eba6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a19f5ddda19394f6c1a72c52d1b4c9c425b52523ede5138ccd3323659437a01e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a19f5ddda19394f6c1a72c52d1b4c9c425b52523ede5138ccd3323659437a01e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e141f42f14fa0d651ea44252be2a27d73df9f24ca3f62991b1fdd2c26f0a158\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e141f42f14fa0d651ea44252be2a27d73df9f24ca3f62991b1fdd2c26f0a158\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e76bf8707d46b4db871c361e59eb1e70d93fa0133aaa7752199ea4f47ae0dedd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e76bf8707d46b4db871c361e59eb1e70d93fa0133aaa7752199ea4f47ae0dedd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46e28e2ff8f0988571d6f8e577d018d47ec537b88a87f6c00b82fe454c0587f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46e28e2ff8f0988571d6f8e577d018d47ec537b88a87f6c00b82fe454c0587f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"990e98ce0b74148b1df9f6c24b1da63399272aa65afed7dd983793b9fbb7f3a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fa3014672a5b90c8bec019d8008e047d0fa8fccde0649840588da52ffd63f1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/alias.py\",\n      \"mode\": 33188,\n      \"size\": 2426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a3a44d2ccff483207bf77e965c2102beb02909cfe4ab0ba1a6ba0e9bf4d91cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_egg.py\",\n      \"mode\": 33188,\n      \"size\": 18185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"450f61f019925695ca250493de2fdbfec9b4f7767e6825db7cc04433622b23e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py\",\n      \"mode\": 33188,\n      \"size\": 1508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b9744e7cc219bfb49cb966eab4b4d2358b9288c04b05667615b6c39433fc09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py\",\n      \"mode\": 33188,\n      \"size\": 637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa773de5a41d6d636d342f128f2cceea8304c271e38c81a58517e8d6dbea66d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_clib.py\",\n      \"mode\": 33188,\n      \"size\": 4484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0f5a06bfb96523bef5f1ac1ac0cbcf49a79c5b5e1d46677ed54b921bc70ead\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_ext.py\",\n      \"mode\": 33188,\n      \"size\": 13173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c2440676c589eac84a1fec414db69298974b19cd3d2a74a50d4c7dec51d3ea9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_py.py\",\n      \"mode\": 33188,\n      \"size\": 9596,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c96c9869a4bd177a3d25b21cce7d3ae00e60d42e7f5222910f119a4ea61bb4b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/develop.py\",\n      \"mode\": 33188,\n      \"size\": 8046,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0a6cec36fea52f703b62da5666b716c39986f9e3200089b131cd722f4e8cfe0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/dist_info.py\",\n      \"mode\": 33188,\n      \"size\": 960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6dea439fadd8002d3f8fde882cb3a3c5f64f8b7b27acb9ec9cba4ddd5326672\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/easy_install.py\",\n      \"mode\": 33188,\n      \"size\": 87026,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13ed52731e127c22cb64cd9eea4f00d93f9ba39703317a8b9e2835da4c60532f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/egg_info.py\",\n      \"mode\": 33188,\n      \"size\": 24800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddbe58dedfdb97fcd94429269468b78a0bd1cdef6839ac5df9d55fdb0d4504e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install.py\",\n      \"mode\": 33188,\n      \"size\": 4683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b4119a4bfc0f3ae8a11d86271319bbb20ff4d8975b3291fcddaeb8becdacd3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_egg_info.py\",\n      \"mode\": 33188,\n      \"size\": 2203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6cc81e21e4625f34380c018f575df6f24723c108c78ce594e059e00162d5efc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_lib.py\",\n      \"mode\": 33188,\n      \"size\": 3840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d759b17f40a1d7636cb98c12f0f1f05c146fca1ebbd5000ce1c4d187b7a9cc6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_scripts.py\",\n      \"mode\": 33188,\n      \"size\": 2439,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"503d2b119ebceb599362121dcdcb2a2a7525f0fa33a1c5d697d5414355535a77\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml\",\n      \"mode\": 33188,\n      \"size\": 628,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c652db8d6ac1d35b4a0b4fa195590e2a48923dbccc9a5d9e38fb49fee7029db1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/py36compat.py\",\n      \"mode\": 33188,\n      \"size\": 4986,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b38d970ec45ef3745513e3b66fda7ec03371fc9280f2b3fd0ea52fa7f6021f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/register.py\",\n      \"mode\": 33188,\n      \"size\": 270,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c794c9b5aa605b49d6a14ce4fcc3a52103e120790233ee9e9c0fea8e6ae6a22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/rotate.py\",\n      \"mode\": 33188,\n      \"size\": 2164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"728e42d44908ecfd06193e93ab3f93d92223d8b0494d95d810ba666a8e9de0a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/saveopts.py\",\n      \"mode\": 33188,\n      \"size\": 658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdaed00817108a628aae259ca0271b8713e3533df481207be33b932f8ef1a4fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/sdist.py\",\n      \"mode\": 33188,\n      \"size\": 6711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1b0d37b60665add8f96714f65987b7b42d6bde984b1b0823bd33386b4d98e6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/setopt.py\",\n      \"mode\": 33188,\n      \"size\": 5085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"353583cb1fa08c317eb717f874ee7beececb3b31d5a0a47432adf7ac5c5a46bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/test.py\",\n      \"mode\": 33188,\n      \"size\": 9214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31e04071751e3c68cf2aa8f3e33bd3ac76ad2ef36c8e53c571a82ddd79c561d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/upload.py\",\n      \"mode\": 33188,\n      \"size\": 1172,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b581f22d6779d03a7e452976fcb4b0b629dede282f2558ee1b744e8da86a44e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/upload_docs.py\",\n      \"mode\": 33188,\n      \"size\": 7311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a17886a6533f71428bc04e02596c3df11cc2b9f02ef2d061302f7b19e805726b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/config.py\",\n      \"mode\": 33188,\n      \"size\": 18006,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcbf70c05d7fba9aecc87b141d75ecc8b989500e4721ccc9610d811732d68dcd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/dep_util.py\",\n      \"mode\": 33188,\n      \"size\": 935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e08b1bc2d51eec1f7af5de4b727fb3741402e8a845cbd5c05aae6369484a168\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/depends.py\",\n      \"mode\": 33188,\n      \"size\": 5837,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f1020370cdd50e9457bd1540e8e7cbf406907f1be1c4770dff0eac03236af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/dist.py\",\n      \"mode\": 33188,\n      \"size\": 42613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d63de4b8d10669a0335b3d222d622dc7388dc894d90bc3207137cc67853859eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extension.py\",\n      \"mode\": 33188,\n      \"size\": 1729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9cea71c8f8cc7098d08d3db522067c9b4b2aa1a49aa36e1bce43e7a676fb7f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 2499,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9e28cb01330b19aa894871806d2d9537b7deaceb14933f83d368d7cce4ff88d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1ba04477b1f6bd1a1ff170d779c07ef91ead7cf0878fffbc7f4a0acca442ae7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1ba04477b1f6bd1a1ff170d779c07ef91ead7cf0878fffbc7f4a0acca442ae7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/glibc.py\",\n      \"mode\": 33188,\n      \"size\": 3146,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fae15bc63cbd806d444ac1846c5893975c60183a217fbf6aa2c5e4e40142ee5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/glob.py\",\n      \"mode\": 33188,\n      \"size\": 5207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63e7e9bfcc1d1d9ceff433c2686002a4c481589e9a9aaff57b447f8bcfde978c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/launch.py\",\n      \"mode\": 33188,\n      \"size\": 787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1dede8f0841a1c083c7fc06f6b22cd0e699f07b6698553c642e8847f4b42ef8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/lib2to3_ex.py\",\n      \"mode\": 33188,\n      \"size\": 2013,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b797b5da16d1da98bd5787b35834c1e0933e0084949c63a499c9d81de937c638\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/monkey.py\",\n      \"mode\": 33188,\n      \"size\": 5261,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ffc89f7512d0d6bb6d2fe49b0498578372489854c8691379cc704771c5df888\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/msvc.py\",\n      \"mode\": 33188,\n      \"size\": 40877,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f04895f72a5bdc440942cb0f707d4765b74db1b46faac16727bc0f1441b0148a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/namespaces.py\",\n      \"mode\": 33188,\n      \"size\": 3199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17436b6eff0a093d8eaceeebc1ad37a26e0de0664a0259dc7beaebf9c80341af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/package_index.py\",\n      \"mode\": 33188,\n      \"size\": 40136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c21b18a1006d1ad40c9b96df02261e6c660b325f876840a13e8ac050477acdd4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/pep425tags.py\",\n      \"mode\": 33188,\n      \"size\": 10873,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23b9715a9cbd5ca10b049d02558893ece3d6d2190115ed243696c40705d5fd74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py27compat.py\",\n      \"mode\": 33188,\n      \"size\": 536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de6c3144c0e4e50e4ed6b49738445b4035e116ac032618548ad7cc5bfaa9502a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py31compat.py\",\n      \"mode\": 33188,\n      \"size\": 1192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ee5351c2b0613fdf31af051221630da207e2210852b8f8fc70fe3322a9d3559\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py33compat.py\",\n      \"mode\": 33188,\n      \"size\": 1182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34a4bce279782e32c8a1a77a3907e09b28199f898cbeba24fdbd4dd6dcde6dec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py36compat.py\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5540d6c66bb9aede101e519346d005bba5b98ef7cbe960637830337a8072d0e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/sandbox.py\",\n      \"mode\": 33188,\n      \"size\": 14276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f546f07c42f9418e37ea8308d4bb455a8861a19f94cf01ef1b2663507fea864c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/script (dev).tmpl\",\n      \"mode\": 33188,\n      \"size\": 201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fb311d7b7539336aa90231256c7b2382315acf55231d99342c681f1c6737ee2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/script.tmpl\",\n      \"mode\": 33188,\n      \"size\": 138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5864ede6989eccedbb73e0dbc7a9794384f715fdb4039cfbf3bda1bf76808586\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/site-patch.py\",\n      \"mode\": 33188,\n      \"size\": 2307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"055b7ac88ac33172687e503927a0c921cb0951f5bf5c479584ecde9534c50cfe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/ssl_support.py\",\n      \"mode\": 33188,\n      \"size\": 8492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6010c9b026634a9eb60968f19929247bd927f6b8471e3db90aeb3ace12515b77\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/unicode_utils.py\",\n      \"mode\": 33188,\n      \"size\": 996,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34e899ff9843ef603ac3ee30563f1ac0714cde7e752a6c3521cfefc75e5716ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/version.py\",\n      \"mode\": 33188,\n      \"size\": 144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a20fdcb9941bd1023aba429915f6563e5af51e02413cf9f6bceda6fdb23d6531\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/wheel.py\",\n      \"mode\": 33188,\n      \"size\": 7778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d95efe5c60f48d116f10ea376eda65d48ee4530699214166aa701561ea0cc0fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/setuptools/windows_support.py\",\n      \"mode\": 33188,\n      \"size\": 714,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e46adfa923f6f9d2c6268653ab683a7422a4c90c716b69f92108979490a86041\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/platform-python-setuptools\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/platform-python-setuptools/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c32a3ac395af6321efd28be73d06a00f0db6ab887d1c21d4fec46128d2056d5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"f5c3f27f97f25bee\",\n   \"name\": \"popt\",\n   \"version\": \"1.16-14.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:popt:1.16-14.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:popt:popt:1.16-14.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/popt@1.16-14.el8?arch=x86_64&upstream=popt-1.16-14.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"popt\",\n    \"version\": \"1.16\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"14.el8\",\n    \"sourceRpm\": \"popt-1.16-14.el8.src.rpm\",\n    \"size\": 128374,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/popt.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/9c7ba88f28eebc110436dc7683766f044ab4a8\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpopt.so.0\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpopt.so.0.0.0\",\n      \"mode\": 33261,\n      \"size\": 56112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d724c14290609379289e9e59973a53368a24fe3be08b071fd93c35cba39ba114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/popt\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/popt/COPYING\",\n      \"mode\": 33188,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"518d4f2a05064cb9a8ec0ea02e86408af4feed6916f78ef42171465db8b383c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8e6613ba95209c3\",\n   \"name\": \"procps-ng\",\n   \"version\": \"3.3.15-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:procps-ng:procps-ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:procps-ng:procps_ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:procps_ng:procps-ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:procps_ng:procps_ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:procps-ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:procps_ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:procps:procps-ng:3.3.15-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:procps:procps_ng:3.3.15-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/procps-ng@3.3.15-1.el8?arch=x86_64&upstream=procps-ng-3.3.15-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"procps-ng\",\n    \"version\": \"3.3.15\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"procps-ng-3.3.15-1.el8.src.rpm\",\n    \"size\": 938380,\n    \"license\": \"GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/free\",\n      \"mode\": 33261,\n      \"size\": 23000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48cbd22aa4402ff9906916956f4708b2ffc04a4e7e1e0dfd43ea1a23ea8828a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pgrep\",\n      \"mode\": 33261,\n      \"size\": 31240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30b03a2a040119fbee00deefe8bf275985e563ff84fca5d010fe4a7a95ae0eea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pidof\",\n      \"mode\": 33261,\n      \"size\": 18376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ca50f631db80f2a0f53298c04bfc2cf1db99a0f42f034e77d60b9fd9dc073e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pkill\",\n      \"mode\": 33261,\n      \"size\": 31240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0603814ebb3cac8ae2867a07bab75e1e89dca20f3dd6ba21ef0d2715c696f120\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pmap\",\n      \"mode\": 33261,\n      \"size\": 34864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c01f26201b9ec77b9de7d2c477e0cd5a68ca788bea97f0e2fa767166137d0a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ps\",\n      \"mode\": 33261,\n      \"size\": 142216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4abc5eb310f5c22b1a1dcdaef59a6c5e19e8532bd09c0a2774bb6d40bfec947b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/pwdx\",\n      \"mode\": 33261,\n      \"size\": 14280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44382195edd3af090bf895134cbb219d14969c7facf06a0845a94fcef5b9c5c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/skill\",\n      \"mode\": 33261,\n      \"size\": 31608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcef04e281415fb8c49488ba4f1954cafe8ff8a412c43631b5e23f520bd6b4f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/slabtop\",\n      \"mode\": 33261,\n      \"size\": 23048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e97536356c7220b0d3ef959cbeafd5a7908b048fa60dfd1a6039b0d25b45c901\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/snice\",\n      \"mode\": 33261,\n      \"size\": 31608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73510a284f1f2da397d2e62ef4b77320f50a11ad179eea5568c3c5fbf8657ede\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tload\",\n      \"mode\": 33261,\n      \"size\": 18856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08b98c8df3ffff0c1ce11c9b656a33ce6c1c2393c6466ef2e994fdc83b268f60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/top\",\n      \"mode\": 33261,\n      \"size\": 126432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2899bb5acdf22fdf8f483fec168ab7552cf56c253ea03067a5e7c2a77f78c308\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uptime\",\n      \"mode\": 33261,\n      \"size\": 14264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdfcd9b34a5e57eb7c765291a8654135fc47e065da1f345732f04ff3fa1edb62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/vmstat\",\n      \"mode\": 33261,\n      \"size\": 39392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb4a57b15b2b3a862a027ad28e7b517ec409cc9ca4f2de8c24054a16b69cfa5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/w\",\n      \"mode\": 33261,\n      \"size\": 22536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14dd47a208d08857f31fb5adf313debc0c25ced24f3603a58415b49b03caded3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/watch\",\n      \"mode\": 33261,\n      \"size\": 31592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b1eea1bcc5dfc8b0959e0611a60b83c67bf052566d09161f1d43913ba5cc74f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/23\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/23/699a74b2f799b29c18421032436b3c83c042e6\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/52/c3c927e2921a1aa3a5c5c53cd13a73247cb484\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/58/7ce00e5ea1aaa7f1aae19c50e59be930885885\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b/cc0e9145619a44fbca70ae968c953a3f337f53\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/63/c0ebd7583057ffd285761acceaf971179a9891\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d/b9498c811bfaf6e43d7677863f1d5014848c70\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/71\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/71/fd359be723167276c2f805925a8f33d40d8f23\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/71/fd359be723167276c2f805925a8f33d40d8f23.1\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/723408d0cd07b5cdb9048c8bd97871b10fbff9\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a9/7cbd4d880126e40ca82e625c6c48723efdf96f\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b3/9757aab72962a79acdf879005d0fd39613ee9d\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9/a7ce5cab6f0cc95e98d8d4aca14b8c6e2defb7\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b9/a7ce5cab6f0cc95e98d8d4aca14b8c6e2defb7.1\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c4/daca67b1750dbae2d4f94541f758d9cdcbc601\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/3088f8f375e5ca55ba9c4fc610c5fb3b08f3f2\",\n      \"mode\": 41471,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd/088398e2e7521e92002b0642a13ca6bc05bac7\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8/10dd44789675fbee4b32060fd7758b263bc28f\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f5/756841021c6f1ab6e1656035a86e813637d7f7\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libprocps.so.7\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libprocps.so.7.1.0\",\n      \"mode\": 33261,\n      \"size\": 87928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0d7d048711cb8c448f379e723c5081584c6d034a00e3254c99f8f987439d774\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pidof\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/sysctl\",\n      \"mode\": 33261,\n      \"size\": 31264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ec99a423377f8028296f9622efc7cfad3c1ed6c5dfb3752b6f3e6f70faddfba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/procps-ng\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/procps-ng/COPYING\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/procps-ng/COPYING.LIB\",\n      \"mode\": 33188,\n      \"size\": 25381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e57db3737a1d260f\",\n   \"name\": \"python3-dnf\",\n   \"version\": \"4.2.17-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and GPLv2 and GPL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-dnf:python3-dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-dnf:python3_dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_dnf:python3-dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_dnf:python3_dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-dnf:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_dnf:4.2.17-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-dnf@4.2.17-6.el8?arch=noarch&upstream=dnf-4.2.17-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-dnf\",\n    \"version\": \"4.2.17\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"dnf-4.2.17-6.el8.src.rpm\",\n    \"size\": 1829453,\n    \"license\": \"GPLv2+ and GPLv2 and GPL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/dnf-3\",\n      \"mode\": 33261,\n      \"size\": 1954,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"096c1d230ab33c0a4766d6e1b6b3e181cf45cdad9b68953012bcdf1298eb4e01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf-plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf-plugins/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33f2dd0ffdbd197ee95c114bb1b86c0e458c3babc5acb417ddd368176b2127d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73440580363600d95fa63b7b75f2dd694d275f475692fb0bd8b78b9d4ef4c39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73440580363600d95fa63b7b75f2dd694d275f475692fb0bd8b78b9d4ef4c39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/base.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 72687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4253525805ed4175966da197a799efddea4a7133b0ee57bf6c2085f61614a59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/base.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 72967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a293a7c4b4d542e6d8953a34e488fc5bb9769703945ceff6b6c5f6fa03b09ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/callback.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc552d899112935dee305705b088d647894b25611041e553201e7b6bd11289d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/callback.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc552d899112935dee305705b088d647894b25611041e553201e7b6bd11289d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/comps.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 25421,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d00e071c0b23947b321c2213d2ad9971172149efc965685e6f0b2a48d88ae32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/comps.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 26025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cee3aed5151f6a4cc95dabe2a8cc34a4c1d0e49571b896dd9c76d726df5130ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/const.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09d7a9a57a2cd7df7d77a729bddcbeeb7732b6ebe9764440a22fd5561f4e3ef0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/const.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09d7a9a57a2cd7df7d77a729bddcbeeb7732b6ebe9764440a22fd5561f4e3ef0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/crypto.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b6c12de235636b41da09203c1c16d831089c74ead841abedb12f1d6450a9e2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/crypto.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b6c12de235636b41da09203c1c16d831089c74ead841abedb12f1d6450a9e2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/dnssec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9ee43123f8484cfdb27c61161cede8dfcd92373223e8a34cf59a52fa8e4903d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/dnssec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9ee43123f8484cfdb27c61161cede8dfcd92373223e8a34cf59a52fa8e4903d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/drpm.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a4cee056fb4c416faebdc44f0e5ce3ad2c226a7e7105468ef5462b53d5aca9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/drpm.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a4cee056fb4c416faebdc44f0e5ce3ad2c226a7e7105468ef5462b53d5aca9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/exceptions.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bea2a7d0e7e689f01950c695747f88c70874f9da17edab9a760b69029a5cd9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/exceptions.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bea2a7d0e7e689f01950c695747f88c70874f9da17edab9a760b69029a5cd9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/goal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"134ca0687dff731f197d111ef5e30847dedd5b87bc6aacfc3813c8bcf7d79c59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/goal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"134ca0687dff731f197d111ef5e30847dedd5b87bc6aacfc3813c8bcf7d79c59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/history.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 260,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9645e41a1c3f40acf8ebf2eaba513355c99b62829df6362e862739ec7e0910e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/history.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 260,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9645e41a1c3f40acf8ebf2eaba513355c99b62829df6362e862739ec7e0910e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/i18n.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9610,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dbb973ce574d506b1832c879df26dcf5a3f140f4e08b78a9baf57138c18dd90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/i18n.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9610,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dbb973ce574d506b1832c879df26dcf5a3f140f4e08b78a9baf57138c18dd90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/lock.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cda6779240f7e808adfa9cd719a0ed7c23d67230d54c649646a985d2e6a9915\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/lock.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cda6779240f7e808adfa9cd719a0ed7c23d67230d54c649646a985d2e6a9915\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/logging.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebb9faa8ef3fc4e31e61b2f7fe1d138de3e793c34a9113583a994d1cab5b22b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/logging.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7407,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e43b19b6f9811d936694b91f7589a32b0251c07b72cf4913edba7fd0f4e852e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/match_counter.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4387,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b05d1c6590be34036aea63f2e0849b6f8591057f1d93653a88d5cbc15c0fe338\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/match_counter.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4387,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b05d1c6590be34036aea63f2e0849b6f8591057f1d93653a88d5cbc15c0fe338\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/package.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"95a80cad7b9e8ad77017fe2910d759d6a18004d257242f7f8e870634caaeff93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/package.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"95a80cad7b9e8ad77017fe2910d759d6a18004d257242f7f8e870634caaeff93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/persistor.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a4a7ca82acb58ecd29d3967a9f28dbb4dd763d5564eaddbd80d07e7033431dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/persistor.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a4a7ca82acb58ecd29d3967a9f28dbb4dd763d5564eaddbd80d07e7033431dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/plugin.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5bebfcb8929a1b18e4709fb9d73581ee36d743721e4e2a07c5daadde40bd85f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/plugin.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5bebfcb8929a1b18e4709fb9d73581ee36d743721e4e2a07c5daadde40bd85f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/pycomp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e313b4cf9af9495b3adfa3013dc521a18837d1cc9ffa2d021e015a28504c0399\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/pycomp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e313b4cf9af9495b3adfa3013dc521a18837d1cc9ffa2d021e015a28504c0399\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/query.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af679c676a43283214c9e3c1c2bd3162ab250c73ca0331830b74c1b7c6905741\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/query.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af679c676a43283214c9e3c1c2bd3162ab250c73ca0331830b74c1b7c6905741\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repo.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 22150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2df7ceef00939cf9eeb2182cfaed9248889fac67531b72df421a6c78d8e4088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repo.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2df7ceef00939cf9eeb2182cfaed9248889fac67531b72df421a6c78d8e4088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repodict.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5572,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d99a124c1347abc30cde0b3fdac7e7c203f4c11c9f0c211262b543015b0540f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repodict.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5572,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d99a124c1347abc30cde0b3fdac7e7c203f4c11c9f0c211262b543015b0540f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/sack.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"728152d226e5245e749bdd926daf24b1990ff94f4cb600a940d5e8a0b4d2264c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/sack.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"728152d226e5245e749bdd926daf24b1990ff94f4cb600a940d5e8a0b4d2264c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/selector.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f96c0220048f676519338688fdc8e2d8cdba6f0ca62a6bd8e569d0a5f77c420a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/selector.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f96c0220048f676519338688fdc8e2d8cdba6f0ca62a6bd8e569d0a5f77c420a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/subject.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fd17742ae8902526ce072f25ad759530473f8bf8abb89f8b2267edf603fee9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/subject.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fd17742ae8902526ce072f25ad759530473f8bf8abb89f8b2267edf603fee9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/transaction.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80ab6fe419eeb327b483d7a76ef974001e418b4a8cf8e014a158ac04668ec009\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/transaction.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80ab6fe419eeb327b483d7a76ef974001e418b4a8cf8e014a158ac04668ec009\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15997,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad5830bac1e3c4d4e5993562061731d2b48e352b2907a19069dda308b127396d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15997,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad5830bac1e3c4d4e5993562061731d2b48e352b2907a19069dda308b127396d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/base.py\",\n      \"mode\": 33188,\n      \"size\": 104852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7379031d6a5acb3177433492cb87ab070fab4c717b98d6f0752d771b83f626c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/callback.py\",\n      \"mode\": 33188,\n      \"size\": 3724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06b558609a0ab85c76b8e7d39ec84ad57f51232cb6e04602dde1cda5e6eb2183\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b432f51c28d993a2ec1583ef9580b0ce94c2cb05307fbe22913b7cbeb2b4c1ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ff7be81d91de0d944d4b3719dca1d2307dcac14520ad6829cd3cd7d10a9e7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ff7be81d91de0d944d4b3719dca1d2307dcac14520ad6829cd3cd7d10a9e7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/aliases.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8180914696bf6a075611e178dc0b8654e2425da5e38cd1ecf07868b351702756\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/aliases.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8180914696bf6a075611e178dc0b8654e2425da5e38cd1ecf07868b351702756\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/cli.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c28c3d18ffe1c325f73744a01bed912f450052fcacb1027305f796258d42bf70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/cli.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e1c6c625d0743cfa16872ed2da9ec4f18b395662fbdaceb73a5ae9fb507e380\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/completion_helper.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8654,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd44fbeaaddd0383bd212faad11c62360417e66ed948793fa9b33fe499589731\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/completion_helper.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8654,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd44fbeaaddd0383bd212faad11c62360417e66ed948793fa9b33fe499589731\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/demand.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ae7d7120d41b02e8b84b531c5c530aa8d4f184f674a19b7ccd64946a8addcea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/demand.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ae7d7120d41b02e8b84b531c5c530aa8d4f184f674a19b7ccd64946a8addcea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/format.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b60949909c783f03866e46de12854e16e91820de22523215401643a19bf3ab94\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/format.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b60949909c783f03866e46de12854e16e91820de22523215401643a19bf3ab94\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/main.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5033,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"732137d64c489b5240a8cd1cb998b55a832d898eb3ce76c59399654c35bf9ca3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/main.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5033,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"732137d64c489b5240a8cd1cb998b55a832d898eb3ce76c59399654c35bf9ca3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/option_parser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3544d8645a3b131345d98a59a57b374ea31edaef8148ce4c141a3b937719dac7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/option_parser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3544d8645a3b131345d98a59a57b374ea31edaef8148ce4c141a3b937719dac7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/output.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 61748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a2e20efc35b79b7b815bb88a01d235d8e28c1a62da07cd99560115b0cf2210e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/output.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 61841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"100972a681be6be8431b5c7383e62ac85724d633a7496d8722122339ae7c9f01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/progress.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4607,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a690d5f90165005590849de265e375d63f5bf21289eaaf843f4adeab8de2cc95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/progress.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4607,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a690d5f90165005590849de265e375d63f5bf21289eaaf843f4adeab8de2cc95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/term.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"673a8925afb8abdac1511cd02e0bd2551f2e940e3c2df2c0ef55eca9d54ae885\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/term.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3377addaadc89932f2801a9a012e9f56b35db165a68473512d1169e1205d993\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fe8fe92ea4a516be1480d7f187f160efa8c012672ea58e10260ee18b95c5973\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fe8fe92ea4a516be1480d7f187f160efa8c012672ea58e10260ee18b95c5973\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/aliases.py\",\n      \"mode\": 33188,\n      \"size\": 7096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc8b1c457eb62baef70d3142a66a054a206cfeeb8bf051c86ae8525680202f90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/cli.py\",\n      \"mode\": 33188,\n      \"size\": 48453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2eddfd58ca92d0fe85d4985dc81d8c87b20a03269ff37439f1ec245c2ea91e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 42244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11b7ee7972b5cbf72bc56e2b8939b4ccb48fdb0080f612827fb805dbc0e7f715\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 32904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0511610e0011897f5006b7dca0ca84c87e572a7a6f0f2a8485ffa1fad75b61c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 33147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3e894146cbde8282a1d78e21043adba2e6f9280b5bbe4ef7d73afefd6c6e85b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/alias.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd0fbfd9951afd9b68f7c6581ba60d886625bcd16271af1381b67144bd49828d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/alias.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd0fbfd9951afd9b68f7c6581ba60d886625bcd16271af1381b67144bd49828d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/autoremove.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e662dc949f11ee358af2395880a2490ed1095a1b39658cfc1676ab6c577107\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/autoremove.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e662dc949f11ee358af2395880a2490ed1095a1b39658cfc1676ab6c577107\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/check.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3611,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"483c911c7c740da5ea5a7c498acc9e18ec017defee8739a303a49efb3d10e043\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/check.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3611,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"483c911c7c740da5ea5a7c498acc9e18ec017defee8739a303a49efb3d10e043\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/clean.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b42a2ddb0a2dece18bef20d929ebe846394ca198300a78d21e259925c652d848\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/clean.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b42a2ddb0a2dece18bef20d929ebe846394ca198300a78d21e259925c652d848\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/deplist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 851,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa2a072fc79b01b89f877dd7498df8a287491b6d3395092cf3507bafb1c3b96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/deplist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 851,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa2a072fc79b01b89f877dd7498df8a287491b6d3395092cf3507bafb1c3b96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/distrosync.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1cf29ab3502e48c0150fe61cd7b4093cae1ff6509f9c9e33572b3943b5f62d5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/distrosync.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1cf29ab3502e48c0150fe61cd7b4093cae1ff6509f9c9e33572b3943b5f62d5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/downgrade.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9762f083b921916964217834e2f3846c517fc093114696e95cdbc15543f6639\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/downgrade.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9762f083b921916964217834e2f3846c517fc093114696e95cdbc15543f6639\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/group.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10461,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"118ac1afa4e8a2d6496091f2c182783585acd5a8a2236150c51999165c19be9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/group.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e4592fbe2fe5fc53e37c34364c65aca11f60d875f346f34d589de07e76ac87d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/install.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4d0b324aee16011a66d7feb116436619b7fed053a15a4edc9bf85e23b8eb174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/install.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4d0b324aee16011a66d7feb116436619b7fed053a15a4edc9bf85e23b8eb174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/makecache.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0109a51a34a2bfd549b3be7f0ae2871a946b49de84bfb70e06100738cc800aa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/makecache.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0109a51a34a2bfd549b3be7f0ae2871a946b49de84bfb70e06100738cc800aa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/mark.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cf533ea6a610d0aaccddac7f576d6b76c0561e028397cf9a6ebe19d12c7d5d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/mark.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cf533ea6a610d0aaccddac7f576d6b76c0561e028397cf9a6ebe19d12c7d5d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/module.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14070,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b488becab47cee0951b443e83389b2604f6051e2de79bf97884bbd26371b818c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/module.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14070,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b488becab47cee0951b443e83389b2604f6051e2de79bf97884bbd26371b818c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/reinstall.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39c7dc1fcd802417e06a5bb2223ad539d66e43c808f1bd4ad8faba5eb251627a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/reinstall.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4f7434e40ccc6e2fba31b24668fb29d0fd47bce36542c7d4aa41e074911aef0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/remove.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"702584542300aae80dfb97c2f35fbb32a08e289abb8bdc2d365557626668b02b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/remove.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"702584542300aae80dfb97c2f35fbb32a08e289abb8bdc2d365557626668b02b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repolist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ce89be53f7aaaa68a8c7049583c94170dd8314a77430fbd46f4261b4934b2e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repolist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ce89be53f7aaaa68a8c7049583c94170dd8314a77430fbd46f4261b4934b2e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repoquery.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 22311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35cb1a971b2084751627342b3adc227c19bbdd8cf4c4efa7a7fb2414fcc83ecd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repoquery.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35cb1a971b2084751627342b3adc227c19bbdd8cf4c4efa7a7fb2414fcc83ecd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/search.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4ed4ff910bf381d83c9eb3a667ef6a90838d1e324d3936af04446dd798ca0df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/search.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4ed4ff910bf381d83c9eb3a667ef6a90838d1e324d3936af04446dd798ca0df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/shell.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9c7da8e6592b0a1c5917906076c4b5ffdb12a75542591308bfc859273d94212\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/shell.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9c7da8e6592b0a1c5917906076c4b5ffdb12a75542591308bfc859273d94212\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/swap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1887,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3f79eea4415f41e0f3c10c7e903ae32a044c69155511d8a7940eec47b54d7cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/swap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1887,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3f79eea4415f41e0f3c10c7e903ae32a044c69155511d8a7940eec47b54d7cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/updateinfo.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94f25ff1a3765673ba01e1d5fc9654849db44d4b49e02dc6edbf94a193b29764\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/updateinfo.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94f25ff1a3765673ba01e1d5fc9654849db44d4b49e02dc6edbf94a193b29764\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrade.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3908,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34e4748a41a2ea18d6f96d660f3876abaa77193ebfd6cb783d17f2524ca25d65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrade.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3908,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34e4748a41a2ea18d6f96d660f3876abaa77193ebfd6cb783d17f2524ca25d65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrademinimal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"426918009b745ba6255d32709971e2024a8cc8f08c9f4c29730208a3165cc7f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrademinimal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"426918009b745ba6255d32709971e2024a8cc8f08c9f4c29730208a3165cc7f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/alias.py\",\n      \"mode\": 33188,\n      \"size\": 7088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38630568c1b5bddf72767cf6f18864fdf49411fef4cfc9fcb550cef9300eaa5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/autoremove.py\",\n      \"mode\": 33188,\n      \"size\": 3053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d7b723f4ec7d024113aa241de8d687d302529e8e6c5352a7bbaa308c83f72ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/check.py\",\n      \"mode\": 33188,\n      \"size\": 7064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d4f159579d16e50d1cc33d9d77cbbcce8edf01bdd48c8076f5e98961d8ab053\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/clean.py\",\n      \"mode\": 33188,\n      \"size\": 4468,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29bd5c6750d06836d1e23bc398731ba378ab6e5bd91a80a9e488157f160bbaf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/deplist.py\",\n      \"mode\": 33188,\n      \"size\": 1472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dac4a508115a155209ec28f55d94849fdbcb56cfea18f93aa628837226c4546\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/distrosync.py\",\n      \"mode\": 33188,\n      \"size\": 1951,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0b31085c4179dac53c66cea59a176b3083064721c164358e2293a62ee84554c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/downgrade.py\",\n      \"mode\": 33188,\n      \"size\": 2325,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b21a57b3c8f7d56e78f9538c9ead3346681329ef316a8829b277ea9a9e762947\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/group.py\",\n      \"mode\": 33188,\n      \"size\": 14986,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a40e0c693484c1c9b50144fc165b6db41f2d545648a112e2bfbf6e0437c91a86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/install.py\",\n      \"mode\": 33188,\n      \"size\": 7868,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b046128bd2e8f82146c4c664f19cd10acc6a880d6783af4ce000e694a8f8fd7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/makecache.py\",\n      \"mode\": 33188,\n      \"size\": 1901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9d78dafc00162d61f0ed68e2a7964bfa7a430082a6bf406a24f388e616f7d31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/mark.py\",\n      \"mode\": 33188,\n      \"size\": 3536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"388f9ac126b206f348accf639b3d2295192b6757d4e273639a952ce35baaabbb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/module.py\",\n      \"mode\": 33188,\n      \"size\": 15852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"970a47a454359fefeb73dfe4d89adc6d9dfd5a0d14ef7531319522e8d0ec5ad6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/reinstall.py\",\n      \"mode\": 33188,\n      \"size\": 4189,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d125addd3d434a5e52c3843bc8b180ccffa2ada0f3e2c5caae741ed0adb2da4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/remove.py\",\n      \"mode\": 33188,\n      \"size\": 6700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57d5a2d867ce2a849e417cd5c55a87cd3e18dc2535d683bed15016f384bfed97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/repolist.py\",\n      \"mode\": 33188,\n      \"size\": 12880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8ab34562fda90b5af99c68748a8cd3bf26717641fcb83f66449df5836badc13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/repoquery.py\",\n      \"mode\": 33188,\n      \"size\": 34226,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e5cff980b116b4dddc563b86fe275be07bf1d61d5b6c9ee330d6380c9fcb092\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/search.py\",\n      \"mode\": 33188,\n      \"size\": 6358,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"322a143558ef3b77614b454b7c2cd208c0e2f7eb18f168801c67dfa088076c0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/shell.py\",\n      \"mode\": 33188,\n      \"size\": 9722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fed88375f7e9c055915f9e877b5753b66185696485f96bc042e88893f3414eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/swap.py\",\n      \"mode\": 33188,\n      \"size\": 2419,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"073ddcdfacd42bea5a9b7bd46874387a9c45f8b0fed8ef77776130c3ae9108d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/updateinfo.py\",\n      \"mode\": 33188,\n      \"size\": 18725,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"597693089e5c3635a6aa0c67b734a12b05ecb2640a2ef7e41dd532d1d0897e8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/upgrade.py\",\n      \"mode\": 33188,\n      \"size\": 5069,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b927777b4745041e9a33994480a0d4fd0f8b0015a872cddf9a7887e76a47c2d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/upgrademinimal.py\",\n      \"mode\": 33188,\n      \"size\": 1799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8bd92bcc843028bc4ad0647d1322254009585befad24e4afdc8f368dba10828\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/completion_helper.py\",\n      \"mode\": 33188,\n      \"size\": 7460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2343780e0d35183a7b6787d557252e97ef9325c117e33aab80ef60a5223f27e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/demand.py\",\n      \"mode\": 33188,\n      \"size\": 2535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d22e929fb22fc39ca0c3e839a1b3affdabc44c2fd385000bb5b8ce9a92d6f3d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/format.py\",\n      \"mode\": 33188,\n      \"size\": 3846,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12ee41aad4d8ca62a8a707bd1a7a0f1345609ad73262fe53433f4247a79126f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/main.py\",\n      \"mode\": 33188,\n      \"size\": 6236,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01286520fb2621c275275c85a41478324808f4a12e7de14127e5c31e04f294be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/option_parser.py\",\n      \"mode\": 33188,\n      \"size\": 23253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4e88ab2f14ad4f398fce9166ffc4ada808ce3047560e9327e70622fcfcc1507\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/output.py\",\n      \"mode\": 33188,\n      \"size\": 96950,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8c166f570e29db91463c9d02b81861e5355d828e895b42bacfbb8312c33c5e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/progress.py\",\n      \"mode\": 33188,\n      \"size\": 7609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fefcbe5e3fe2fbf9599d87215c0c8ca88562a78868e01fb6abb47f8db543f677\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/term.py\",\n      \"mode\": 33188,\n      \"size\": 14694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff6a32c420d6b47019fda0395da82dfc93eb7eb8b76cb5ea7f62f37a6445e822\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/utils.py\",\n      \"mode\": 33188,\n      \"size\": 4520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec03a7d6185c360de5cd28953013333d3266535e93b4dcf4d92c240484d658a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/comps.py\",\n      \"mode\": 33188,\n      \"size\": 24164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c9bfaa78935bf0e968276583eb2a9707d151e9f0169c006967cee9d36b8aa8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34dc106bfa82fb7a992ffd93b97033caec94ef1606181a95ff9d9041122b7c23\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0dc4c31844b250fa3af870e9fbe686074d7ad4132b47646c0e7022da540189a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0dc4c31844b250fa3af870e9fbe686074d7ad4132b47646c0e7022da540189a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/config.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f54571719e14747037b69f5637f0368621f13b45351ae77d6812db09ed29615\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/config.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f54571719e14747037b69f5637f0368621f13b45351ae77d6812db09ed29615\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/read.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06563cce0d01541b4ff7191b408363c433125c2020f0f6ab55207e4ff4f5a13c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/read.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06563cce0d01541b4ff7191b408363c433125c2020f0f6ab55207e4ff4f5a13c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/substitutions.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"511332c96c14deabd517ebee3caf61354574d91ee9221fec3ea3bacb16ef3d5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/substitutions.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"511332c96c14deabd517ebee3caf61354574d91ee9221fec3ea3bacb16ef3d5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/config.py\",\n      \"mode\": 33188,\n      \"size\": 20457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9c43e2a4f4da65fe60ec7b7e6bac2b9af63655ad95ca9e0021274857f1860f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/read.py\",\n      \"mode\": 33188,\n      \"size\": 4963,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f38bf8e92977f5d4cdc8930c5886c248fcf578516a2a7897e8d744398fd7cfe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/substitutions.py\",\n      \"mode\": 33188,\n      \"size\": 2418,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3f68f42244f181e443e4e91d615a007bf6b235ecbddf4a686c944559ec56c30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/const.py\",\n      \"mode\": 33188,\n      \"size\": 2434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0816e68e959d1f198a1971ee373a674e557c29de5227404eb00b2f1f441d04e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/crypto.py\",\n      \"mode\": 33188,\n      \"size\": 5723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1dc97c798a4d7c5654dfa466c824f6fd76b83f54f15656f639e957789e7d910a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54dacac1df24c29af7bc8848cd8d285594d45a072396afc0a069f64d80521dc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fd8d8df4e704544c688488f2a0127271a72e0f86c2872413dd0e3912e7b1145\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fd8d8df4e704544c688488f2a0127271a72e0f86c2872413dd0e3912e7b1145\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/group.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67dff9d1f4cb008838e27fef91285b8fe238dcf61c9f616c0008e36fbd4bbc00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/group.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d6ce594ef07d91cbd3b2549905396f390b650c7da9ece0a38971a7f936f9d50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/history.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f16f852ccfe36d965809fa5687002473d357eb5bc33fcc51f75e10c21b39d200\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/history.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a23b5d399fad6ffad51e9775b8f9a002e5f3b4dfa789af42bb94e0bde08e0499\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/group.py\",\n      \"mode\": 33188,\n      \"size\": 14303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ddfadf5c029b1c2f5ee99ab5aa06116d8361555ce5a396e3e4b01fa673dbcd1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/history.py\",\n      \"mode\": 33188,\n      \"size\": 16821,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78f53e200be29dac0c4884b49242eb73c96d1dd709198715ec027adad6e12d25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/dnssec.py\",\n      \"mode\": 33188,\n      \"size\": 11375,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3390195ad9c93af3887b830202b9a642a6ae92c060fd2ecb7b84dd7bbd8600d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/drpm.py\",\n      \"mode\": 33188,\n      \"size\": 6352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3aec2a0e8944c55568e87609b6c1d01d70fc9a299c243ea575f6717a7a118b31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/exceptions.py\",\n      \"mode\": 33188,\n      \"size\": 5810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89f5cbbf41b4df375b96d427593fb342260ce90e402e9dfea803ee0485858263\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/goal.py\",\n      \"mode\": 33188,\n      \"size\": 1101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb838a3c7eea1f7117a2c932039143b8b968587156cec670bbc54755af039041\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/history.py\",\n      \"mode\": 33188,\n      \"size\": 1150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e2efd9a17712a44319bd864c829870fba1092fd9ef38b9d851e342b1d7c71eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/i18n.py\",\n      \"mode\": 33188,\n      \"size\": 12321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"442c56b9eddcf95e78dd73a278c11d11b531103f07a9448b28e56f60fefe507a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/lock.py\",\n      \"mode\": 33188,\n      \"size\": 5322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53518bb18d056de58a5315b1f84e683ddb5d978d9cd7eafa1354e6c8bfdeddd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/logging.py\",\n      \"mode\": 33188,\n      \"size\": 8902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ec67fc9a0ffd2bafee8708b263fc949c8f6231d371112b09a710f6621e5cfbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/match_counter.py\",\n      \"mode\": 33188,\n      \"size\": 4030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a410f749d7fd825cbf2ff9e0b8b993160d9b1acf33d72453ddc3081d243c0cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1262,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d8bdc77204a38bcd6ea31764cf9aef77a40da140d54852b5fb9ac758084a98f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 572,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"835d685904055282297d3ea597a19e0561ce743f20ec810d91a331baf46f588c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 572,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"835d685904055282297d3ea597a19e0561ce743f20ec810d91a331baf46f588c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/exceptions.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a8f219da1995dcd7c7113226a2688794104fd2e8e237f37dc2b874412e7389c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/exceptions.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a8f219da1995dcd7c7113226a2688794104fd2e8e237f37dc2b874412e7389c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/module_base.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f5f5698751ec90f3383d69b4b7f4426b23936e5ca744fcf2a874cedac3d2a57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/module_base.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20006,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71f71a701aed93c5d5880e2b9028de0c18d57b2dacc4369b5897462251c16652\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/exceptions.py\",\n      \"mode\": 33188,\n      \"size\": 3582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee75d12dc393ad6e537b5a694a55b3e368117876726738b5bd0ee003530e3f59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/module_base.py\",\n      \"mode\": 33188,\n      \"size\": 32815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fa5763ed514bf75644dc82eae8ad8f2cdfedf6f7beec01af48f160b182f3550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/package.py\",\n      \"mode\": 33188,\n      \"size\": 9438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"789e304f0075657a63637dd93041b17a26be2045a07f3630326e0087d7d7a799\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/persistor.py\",\n      \"mode\": 33188,\n      \"size\": 4413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ba53ded43be0176f1bc4f3381fff3cf7c1e250e4b3cb921a355dd0a59a2ba17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/plugin.py\",\n      \"mode\": 33188,\n      \"size\": 8526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d9f945749991f1391bb2a9a9eb7baf7bf49c17311664446b1edd5fc3d9d1fc6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/pycomp.py\",\n      \"mode\": 33188,\n      \"size\": 3604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc128a2671dcffdfb6c6c48891a1b5138df65c2467bb1f162450a618f242b577\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/query.py\",\n      \"mode\": 33188,\n      \"size\": 1587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"276f5d60567dd1394c9c7dd934f52d38678374e2df113947348f2fc4969781d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/repo.py\",\n      \"mode\": 33188,\n      \"size\": 20714,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fe3647e5f96a01dac2c7affad10ed408230702e1261339d880708dec51c59a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/repodict.py\",\n      \"mode\": 33188,\n      \"size\": 5166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c61b71482d92e7ed3236e9f57699e9f71c1e2396a611553236dbc3c1739ea240\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 4800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12e5808f7c3185fb1bb7b23d61eba294fbf6e50d1da187c51f27d70093815dfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b3caa2eb8fff623b48b28c0b73c986328c97b77d1357631a4f710d028814c58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b3caa2eb8fff623b48b28c0b73c986328c97b77d1357631a4f710d028814c58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/connection.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f1fd710e2650f0d7c17fff4db77b4b84d6f635f65dbd2f7299d44a5071b0fed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/connection.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f1fd710e2650f0d7c17fff4db77b4b84d6f635f65dbd2f7299d44a5071b0fed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/error.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8341d51b9e3fa5b1a319d3a613957245e3b3f0bffcc0b13b5f2a17581988599f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/error.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8341d51b9e3fa5b1a319d3a613957245e3b3f0bffcc0b13b5f2a17581988599f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/miscutils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd5ceb40fd0d43fd17345d17814089af3add9755f5d951dc6d799ff8836b4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/miscutils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd5ceb40fd0d43fd17345d17814089af3add9755f5d951dc6d799ff8836b4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/transaction.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"821ab69a005346acfee90e63c2aacc1be342387206eac4b3b99d9038f5cfefb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/transaction.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"821ab69a005346acfee90e63c2aacc1be342387206eac4b3b99d9038f5cfefb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/connection.py\",\n      \"mode\": 33188,\n      \"size\": 1369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26228b3ffc3879bd7bf5dca4a705f0e46a4f5a496a3edfcf66c49ea0bf8ed4bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/error.py\",\n      \"mode\": 33188,\n      \"size\": 1030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c3d96dc347791af5c3725c722823ae5fc15b27899e6670ec156d43472f3941b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/miscutils.py\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28704e8636309520fde5066730075bd6cdc43c2ed080da9c8b6fab0c1f19afdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/transaction.py\",\n      \"mode\": 33188,\n      \"size\": 3819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"093104f907145f4a8beeabff3320beb73fc4e3141a452e66b6a671efacb97305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/sack.py\",\n      \"mode\": 33188,\n      \"size\": 2647,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15e677fb4e42578ce593f2a50c4762061754dc9bf5d62fccc799d086c277ac10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/selector.py\",\n      \"mode\": 33188,\n      \"size\": 1125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e38e8340f97a4e1d5d7a9b9dab20645609dff1ffc342ae79fe9c644e7a45ace8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/subject.py\",\n      \"mode\": 33188,\n      \"size\": 1150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9db675229698f8c0191cca4628e51da4b1ec01e58923200803c0bd65c7406c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/transaction.py\",\n      \"mode\": 33188,\n      \"size\": 4397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8258c37e12ba5202bb4d9d7ca388c926894dc24219bb4a79e7d349853aa6714f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/util.py\",\n      \"mode\": 33188,\n      \"size\": 15512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"277001b237314f7c179c789bef2cb9c346c50b0929102a894e21d8adb3ebe7d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aca948bb2d589edee3dc1f913fafd2a6849132399d1d29c0685eb904080e2560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35753bcf87496c7e43c2a794f338cbf1105088e51f394c4fdd2bc5b2a3040b99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35753bcf87496c7e43c2a794f338cbf1105088e51f394c4fdd2bc5b2a3040b99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/misc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12955,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"497484eafcb8d414833a6963cfe4520aacf49e68ef7e96209c222375a01d4b27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/misc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12955,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"497484eafcb8d414833a6963cfe4520aacf49e68ef7e96209c222375a01d4b27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/rpmtrans.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13384,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20eb5456b3e69714f6974087db75668c5e3557fa38f90911b4ce7a22e3ee8214\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/rpmtrans.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13384,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20eb5456b3e69714f6974087db75668c5e3557fa38f90911b4ce7a22e3ee8214\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/misc.py\",\n      \"mode\": 33188,\n      \"size\": 15461,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c4d4249ca3af8ad0072172658c1b54f814b074dded7da692d64e85f5844f2d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/rpmtrans.py\",\n      \"mode\": 33188,\n      \"size\": 15238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69083ec5f6ee288e00bdbbbf48eb812367cb186a2e9865006aa7d8d331bb0d7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d461e64362d25059\",\n   \"name\": \"python3-gpg\",\n   \"version\": \"1.10.0-6.el8.0.1\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-gpg:python3-gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-gpg:python3_gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_gpg:python3-gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_gpg:python3_gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_gpg:1.10.0-6.el8.0.1:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-gpg@1.10.0-6.el8.0.1?arch=x86_64&upstream=gpgme-1.10.0-6.el8.0.1.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-gpg\",\n    \"version\": \"1.10.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8.0.1\",\n    \"sourceRpm\": \"gpgme-1.10.0-6.el8.0.1.src.rpm\",\n    \"size\": 1295107,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28/4bd57866e457106494e9a47ec38823d8ea5e5c\",\n      \"mode\": 41471,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg-1.10.0-py3.6.egg-info\",\n      \"mode\": 33188,\n      \"size\": 964,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7621d51362e469bb05d1b3d8ad6bb09654b39ec9f7c8b10592b088f82f3b91f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 4125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0407a8e01d61f59c7f0592bd24c6b3efb40b672949e214a5ef1090b0931086b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e0fc6bced2f0b486d97ebac32f0a235fb6c9db8afd4d072d6314927b5129a05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e0fc6bced2f0b486d97ebac32f0a235fb6c9db8afd4d072d6314927b5129a05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/callbacks.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16417b8e8e2160ec0012e9100dbd543a904fd04f20dce7f2f10d58081e7b6967\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/callbacks.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16417b8e8e2160ec0012e9100dbd543a904fd04f20dce7f2f10d58081e7b6967\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/core.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 47690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"026fc9a7951b3566beee9957f27806bb0225080ad24ad24a2149e7fba96f45c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/core.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 47813,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f15f6d3c4eb32d4578a8b681bdecb4618a741a0e5b51a4b7976caaa38f49cb4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/errors.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8111,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9dc8838538e2a2c2169b64199ee1265c56083f7a70910ee5c72cb0635bc7e61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/errors.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8111,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9dc8838538e2a2c2169b64199ee1265c56083f7a70910ee5c72cb0635bc7e61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/gpgme.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 142211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3e279a879d74178be0309b79f5325f787b53dc3ace5b380fc023b695c5ee068\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/gpgme.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 142211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3e279a879d74178be0309b79f5325f787b53dc3ace5b380fc023b695c5ee068\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/results.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ae384baab80266cfd669dc3c3357694eb55c6304748216f415f1451625a3ff0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/results.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ae384baab80266cfd669dc3c3357694eb55c6304748216f415f1451625a3ff0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1563,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ce7a90235271d61eafb78ce7ca2b952f540827a10a6d647125935a837056ce1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1563,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ce7a90235271d61eafb78ce7ca2b952f540827a10a6d647125935a837056ce1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/version.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0b650fc8c642f19e75288f5c1366e93382c3cfa3268005a4268bd21148ce271\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/version.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0b650fc8c642f19e75288f5c1366e93382c3cfa3268005a4268bd21148ce271\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/_gpgme.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 733464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbeb0dbd1171d23dc984c1332534ac79f7e1bee4fc33e586d971f6aa6a469fb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/callbacks.py\",\n      \"mode\": 33188,\n      \"size\": 1950,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b89fad1f8deecd7eed26c3bf64feadcec4aa5e3b1fd2c51841d2496ce33e97ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"753eb1f28fb5ae054b2442eeab1b695d2a7fea8072e43a749722140be46fd5ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5f9a70ddc15110205d70835ca7c89f4144cd5e6a74f83054b00a814590b5a13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5f9a70ddc15110205d70835ca7c89f4144cd5e6a74f83054b00a814590b5a13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/create.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04dea2d517086e0d184616783c2e43b1d601f2fff657a746500b711bd23a56c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/create.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04dea2d517086e0d184616783c2e43b1d601f2fff657a746500b711bd23a56c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/event.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 316,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d5cf9d158c79b0fce67aba021d114f50a59130d6fd9116442f1549de2ab1626\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/event.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 316,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d5cf9d158c79b0fce67aba021d114f50a59130d6fd9116442f1549de2ab1626\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/import.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35ce9df082010c2a247cfb307d160a7f419817c8cd0c7e68cb262b927fa55cae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/import.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35ce9df082010c2a247cfb307d160a7f419817c8cd0c7e68cb262b927fa55cae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/keysign.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be1ebda0ddf9c354944cd848fd9f57d3285c318c39aa1df161d7ef48160b052d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/keysign.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be1ebda0ddf9c354944cd848fd9f57d3285c318c39aa1df161d7ef48160b052d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/md.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97c6c14c911a392484d396ea3958b7ef07fc56fdba93d22ff8db09a323d7a550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/md.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97c6c14c911a392484d396ea3958b7ef07fc56fdba93d22ff8db09a323d7a550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/pk.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a15d28398a46015c11d9232fd6b5a911c4e0405bcbe888e6b9c50fbe26d23610\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/pk.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a15d28398a46015c11d9232fd6b5a911c4e0405bcbe888e6b9c50fbe26d23610\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/protocol.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a38628c9f42c47aa8ec75dde77c0b2b78b785e00565996f7886f331a1c3c7ea3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/protocol.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a38628c9f42c47aa8ec75dde77c0b2b78b785e00565996f7886f331a1c3c7ea3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/sigsum.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c44f5151bc3532cdb2dd3f94a802f8edde4c391c90639233e6ac4ddec7a2198c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/sigsum.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c44f5151bc3532cdb2dd3f94a802f8edde4c391c90639233e6ac4ddec7a2198c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/status.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20d3886e05e7828147cc319b57234a9aa4e572e10648c60159067882df3fc08d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/status.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20d3886e05e7828147cc319b57234a9aa4e572e10648c60159067882df3fc08d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/validity.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff54b5020c93c3abca125c46107dccb0b392c5364d1509fea96d1a30359f2d73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/validity.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff54b5020c93c3abca125c46107dccb0b392c5364d1509fea96d1a30359f2d73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/create.py\",\n      \"mode\": 33188,\n      \"size\": 948,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b1f0b58018ec80c415f06792cfcd4e21c16c0f1e785c24b8b3fdd4aac4bec62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 175,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4e5da66e148a2083089a66eaaf68b0628bfaccbd948039775dcef4c4d73e119\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"217469f11bcfc6e9537b8f4f8d0dccad6197d4a7aad27b8571ffaaf47c6844cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"217469f11bcfc6e9537b8f4f8d0dccad6197d4a7aad27b8571ffaaf47c6844cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/encoding.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7895d0a7ffde7c6e9bd1de4edfba3eb297f57ce7a8acb72e34ca21872f7f4c12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/encoding.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7895d0a7ffde7c6e9bd1de4edfba3eb297f57ce7a8acb72e34ca21872f7f4c12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/encoding.py\",\n      \"mode\": 33188,\n      \"size\": 1094,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0eaf26d11493fcc6bcd029fd7a04277a8c51c8c96f904373fb39368036ffafa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/event.py\",\n      \"mode\": 33188,\n      \"size\": 1086,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e52912b4c195b74f1df97d6d469fcc81ee19d15988a55864f60d836cc4ab96b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/import.py\",\n      \"mode\": 33188,\n      \"size\": 1087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fbe6ad24638e36e4f3901d3ff80b469099cfbee1975bc8fd158c49a19781759\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1c2b7abaf007323fc3fa23a1acc95ac38ba5e25080050ca04a435f0b031aadb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ba8b7d79d47e2ea86951e4398faaff889f5839e3a13ee6804e5a29d6eec3efd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ba8b7d79d47e2ea86951e4398faaff889f5839e3a13ee6804e5a29d6eec3efd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/mode.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2681b19b44ebb78feb817f53feffa12581903363f1c9e83bafe819fe483b3fef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/mode.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2681b19b44ebb78feb817f53feffa12581903363f1c9e83bafe819fe483b3fef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/mode.py\",\n      \"mode\": 33188,\n      \"size\": 1093,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0de2125ef0461691fca36b2744ac9941dedd0fab1e38ab9064d4ed7dfe59e9b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keysign.py\",\n      \"mode\": 33188,\n      \"size\": 948,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"050aeb8b98816f03856bf8a1fc2aeb0cc61a4f0ceec33758246e485cb3e7b4af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/md.py\",\n      \"mode\": 33188,\n      \"size\": 1083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d3c14b9d2c125fbd98ac0a15a42c8198f392184c6f6e936ec76762f4e60d21d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/pk.py\",\n      \"mode\": 33188,\n      \"size\": 1083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"702df480018f9ec545e5d168917da18566766dd67a56c0c08dd6cfa668931ba8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/protocol.py\",\n      \"mode\": 33188,\n      \"size\": 1089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96e6ffc9da7bf06d8f917cdedc17e32c16079ba2b523cbf2d5c54757dc21ef78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 189,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf5f1873890d1c16a378ecbc24413a6b2d4ac9c52f5dc9aeca2f0b63c827ad40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"021186ef14e47c0e1caed96bb6f9e7378b8282e7c1a353dec85cec940d6f05c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"021186ef14e47c0e1caed96bb6f9e7378b8282e7c1a353dec85cec940d6f05c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/mode.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7023cf92036e2138fb43d2a6e423fec241daffc2c86a1cc337536f0302afaae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/mode.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7023cf92036e2138fb43d2a6e423fec241daffc2c86a1cc337536f0302afaae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/notation.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 326,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2d773830d786768688df44a81d16eb358ccc1eabfcaaa05c01956b7b9ffa4f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/notation.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 326,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2d773830d786768688df44a81d16eb358ccc1eabfcaaa05c01956b7b9ffa4f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/mode.py\",\n      \"mode\": 33188,\n      \"size\": 1089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d375f69f38e0420e895f36ae9c0e7a11db4c6842828ff7ec33f2aa5e9cb9837\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/notation.py\",\n      \"mode\": 33188,\n      \"size\": 970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e68daf8ab20526845c81595c134981ea8e8c763e01454d28c42a60d865de2c43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sigsum.py\",\n      \"mode\": 33188,\n      \"size\": 1087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38200f82498d707b6a276f4c9eca26aa1bcd66d60c9faa3ec63eebdea3f41c0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/status.py\",\n      \"mode\": 33188,\n      \"size\": 3977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f26ea18e8dcfdf64a5a1258055535c5db7f7ec372bb036bd16ba3508b535935\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35ac21174b40578431aa904f8f9b2ae7bcb2772327c089e88bd4176443e94e2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90cec7a9089cf97ccaf176ac23a49d97a87b1d281c98cb96bee4891864794f0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90cec7a9089cf97ccaf176ac23a49d97a87b1d281c98cb96bee4891864794f0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/policy.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca2f2e829107fdbe79fc0a5ed3f9c26b177db624ff77acaa5bb2230f9f6e985f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/policy.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca2f2e829107fdbe79fc0a5ed3f9c26b177db624ff77acaa5bb2230f9f6e985f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/policy.py\",\n      \"mode\": 33188,\n      \"size\": 944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"043f686dc18a182325d5530f085393d52826d17ad589b2de0644a2d2eab366c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/validity.py\",\n      \"mode\": 33188,\n      \"size\": 1089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1aecafa1c4fc41c6ee72d72cf910ca92b6d928f9ccaba276e482a972f550c34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/core.py\",\n      \"mode\": 33188,\n      \"size\": 55065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87f7ccf4b68e2a2d0e2d6299d6bdcaab88ca893f1522fc0fe4e3365263de8966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/errors.py\",\n      \"mode\": 33188,\n      \"size\": 6331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10c6ce62be518e20f1e7f5b79e26bb1b4d7fd753072cae2c6f543420509095e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/gpgme.py\",\n      \"mode\": 33188,\n      \"size\": 187828,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5215438e6419613ca4d25e5f87505cba797ae19fd2fd0c3349786dd381900e2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/results.py\",\n      \"mode\": 33188,\n      \"size\": 3240,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f34b937766487d40c8c9935772ced111a9b4bd12962abcf0e070eecb9c86ac3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/util.py\",\n      \"mode\": 33188,\n      \"size\": 1998,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a517850f806cc5950a051d885d911c9ec2d27a0769baedd5e9e59f50629775c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/gpg/version.py\",\n      \"mode\": 33188,\n      \"size\": 2641,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62984076083fba0d5394c0643739ab604867b1655f61451af5add09e5e100486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b4acf4d4e2b8bd86\",\n   \"name\": \"python3-hawkey\",\n   \"version\": \"0.39.1-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-hawkey:python3-hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-hawkey:python3_hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_hawkey:python3-hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_hawkey:python3_hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_hawkey:0.39.1-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-hawkey@0.39.1-5.el8?arch=x86_64&upstream=libdnf-0.39.1-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-hawkey\",\n    \"version\": \"0.39.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libdnf-0.39.1-5.el8.src.rpm\",\n    \"size\": 263176,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/10/de01d04f33357b88f985cfea90ba55da11ad65\",\n      \"mode\": 41471,\n      \"size\": 73,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/03b30ae8bc362506f37fbae7e05971b71ef7c0\",\n      \"mode\": 41471,\n      \"size\": 63,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 12765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4db58f1346ace07a53151fac87ebf2ea47f4cd776aed3b7fca33ac9258788db3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eec261a4e97ea8504b352b52c042024438d18da6476411e51beb274cdf467732\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eec261a4e97ea8504b352b52c042024438d18da6476411e51beb274cdf467732\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/_hawkey.so\",\n      \"mode\": 33261,\n      \"size\": 207904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e077447619e1ae21414315c52d67b5a5cb99fb7c4ee46e3e7fe1290abf5504d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62001423a5078d8689a5b3ab568444b920ea4ec677f13e3a7b269df34e554130\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e92f8985b9621df00e115a502319c07513c2267667137f8e0a7b330aaf5305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43e92f8985b9621df00e115a502319c07513c2267667137f8e0a7b330aaf5305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/_hawkey_test.so\",\n      \"mode\": 33261,\n      \"size\": 29200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fda7c96d8eef78b9d7053d74d5e3fe197203da4d594b7c64113a0eaf03f74c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8e1a274136987459\",\n   \"name\": \"python3-libcomps\",\n   \"version\": \"0.1.11-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-libcomps:python3-libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-libcomps:python3_libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libcomps:python3-libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libcomps:python3_libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_libcomps:0.1.11-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-libcomps@0.1.11-4.el8?arch=x86_64&upstream=libcomps-0.1.11-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-libcomps\",\n    \"version\": \"0.1.11\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"libcomps-0.1.11-4.el8.src.rpm\",\n    \"size\": 147027,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe/6c1f8e908ef65cc501a30491ec7552e856e157\",\n      \"mode\": 41471,\n      \"size\": 69,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06625bfa06225ca1238bb96a578924130dfb63bc46deb89628e1a3c9dccb9b7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2974f26f5d0a02a36b77269da73420429aa5fdc5827913f33f81662572f9de83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2974f26f5d0a02a36b77269da73420429aa5fdc5827913f33f81662572f9de83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/_libpycomps.so\",\n      \"mode\": 33261,\n      \"size\": 146856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01b80c622dfa200bc4becce7915b1b48ade9cf695cd25fe8528f2318b232675e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7f89770583b87979\",\n   \"name\": \"python3-libdnf\",\n   \"version\": \"0.39.1-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-libdnf:python3-libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-libdnf:python3_libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libdnf:python3-libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libdnf:python3_libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_libdnf:0.39.1-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-libdnf@0.39.1-5.el8?arch=x86_64&upstream=libdnf-0.39.1-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-libdnf\",\n    \"version\": \"0.39.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"libdnf-0.39.1-5.el8.src.rpm\",\n    \"size\": 3666830,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8a/3a0b2bf2fd8c60fce913549efe79f805c6e2c1\",\n      \"mode\": 41471,\n      \"size\": 62,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/074ef6ca3bd072c3b9e7116d91fbec29d7b73d\",\n      \"mode\": 41471,\n      \"size\": 61,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9d/2e5f96702bb1689500c81d9fddfe9ba88bc338\",\n      \"mode\": 41471,\n      \"size\": 69,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/33202c04a8f9b4dd5bf7dbab15ac195df9e84f\",\n      \"mode\": 41471,\n      \"size\": 68,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0/ef6be07c65ca43fb50f8742f26904deb82d640\",\n      \"mode\": 41471,\n      \"size\": 61,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9/6d1e46785b27b1ac148893263792a04aab824a\",\n      \"mode\": 41471,\n      \"size\": 63,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb/8bc00d26ebe4e4d87dc3586f79bb6d81db9efd\",\n      \"mode\": 41471,\n      \"size\": 66,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 172,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b94dfa045584677fec59b0ee25daa458828922d30ac268a7a6e69c8e1f07f30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3e62cda6bf29acb305776c1b49d87a507e892abeed1c593feeb996e5a0e3c5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3e62cda6bf29acb305776c1b49d87a507e892abeed1c593feeb996e5a0e3c5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/common_types.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 49751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc37c6c6354f06c7d7467df19f29ad587e18e684e6a62bc8518d871deb4028ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/common_types.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 49751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc37c6c6354f06c7d7467df19f29ad587e18e684e6a62bc8518d871deb4028ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/conf.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 96536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dea23c2924edd483a0b8feacc043d7a63bc7f3611335be7ac9c3cd3b6fd2e6d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/conf.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 96536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dea23c2924edd483a0b8feacc043d7a63bc7f3611335be7ac9c3cd3b6fd2e6d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/module.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 70104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9733919794e4cc80c9e93c3aa7667d39d2d7db8aa993132cdd72ae9caea9caa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/module.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 70104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9733919794e4cc80c9e93c3aa7667d39d2d7db8aa993132cdd72ae9caea9caa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/repo.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 30423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c72ef567381151374243d87da22681230f0e7b139d70a5b32544e61e254e301\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/repo.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 30423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c72ef567381151374243d87da22681230f0e7b139d70a5b32544e61e254e301\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/smartcols.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 22066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dccce4df47ccc9f9cdc0f07af81101d01f8850b44ba40a5cfd364a6954136970\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/smartcols.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dccce4df47ccc9f9cdc0f07af81101d01f8850b44ba40a5cfd364a6954136970\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/transaction.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 52214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b93bcee6a7ae36a3e23aed9e41a01cfa2cdbe46a3c480aa5054329f1072fcb92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/transaction.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 52214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b93bcee6a7ae36a3e23aed9e41a01cfa2cdbe46a3c480aa5054329f1072fcb92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8631,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d453ee98b030409c2d5affb839fddbc717759664456056140869f37956cec7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8631,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d453ee98b030409c2d5affb839fddbc717759664456056140869f37956cec7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_common_types.so\",\n      \"mode\": 33261,\n      \"size\": 510856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aab8cc1a2d2961ae290142b4930ad7b0e7fe16e6cab029b9e3e7546943219374\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_conf.so\",\n      \"mode\": 33261,\n      \"size\": 695728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cba2024fe43eca8c9373c95ad1120df6b6fbb566b2ce9e2d155345b26d009f14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_module.so\",\n      \"mode\": 33261,\n      \"size\": 812152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7586cb82797f5d69e3257dc7fee99165c1e4602d52593916c8a891c4a6a6efc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_repo.so\",\n      \"mode\": 33261,\n      \"size\": 307416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb3adec8d2f68f214ecaa17fc8d5dde623edab4ddc72bc7c5041fa46a0935599\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_smartcols.so\",\n      \"mode\": 33261,\n      \"size\": 232552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"281e3470379df09d224c62059fcae11387ce3e39a5adf9480ee59ec49fa00bf5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_transaction.so\",\n      \"mode\": 33261,\n      \"size\": 452504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3685f2dae870e39a318c5383c336c1f3d033eb82334814e74f4b14b19c168b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_utils.so\",\n      \"mode\": 33261,\n      \"size\": 94584,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc652c00e6d73adaa4a5a94333c71fbee31d0bf86f79f2b96ec8caa575f52169\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/common_types.py\",\n      \"mode\": 33188,\n      \"size\": 34439,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"577866136196ca5749f175856d1cd61ed1bcea49febb68c2adb831f09ce3cba5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/conf.py\",\n      \"mode\": 33188,\n      \"size\": 67448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"400eebae329c05c1bab9f6c6a7ff8a89532106a5457ebbd012202dacf575f949\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/module.py\",\n      \"mode\": 33188,\n      \"size\": 43317,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72e1bf39088b4e31e5f051eed0082ed8767acc45652e34b1950261d2b113f848\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/repo.py\",\n      \"mode\": 33188,\n      \"size\": 22007,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f545c9131fe7075b38b370753843c83939e4d281c9ad97455c107ac7b520e15f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/smartcols.py\",\n      \"mode\": 33188,\n      \"size\": 15164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d289a8eec2db70afa428cd2d9be286a4092a880446b781b03c44d6f3e3c3d6a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/transaction.py\",\n      \"mode\": 33188,\n      \"size\": 40532,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b79311390681b3f3d2b3d5ab2550a3c4898872c0ec1e8aaf22da1d55c9e8fa7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/utils.py\",\n      \"mode\": 33188,\n      \"size\": 7882,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6883e559c0b27183e7a6b282b393f26f7fe5b447b0d0e42b286fd9b12e8a75b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"9caacc40c169689b\",\n   \"name\": \"python3-libs\",\n   \"version\": \"3.6.8-23.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Python\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-libs:python3-libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-libs:python3_libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libs:python3-libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_libs:python3_libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-libs:3.6.8-23.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_libs:3.6.8-23.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-libs@3.6.8-23.el8?arch=x86_64&upstream=python3-3.6.8-23.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-libs\",\n    \"version\": \"3.6.8\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"23.el8\",\n    \"sourceRpm\": \"python3-3.6.8-23.el8.src.rpm\",\n    \"size\": 32187857,\n    \"license\": \"Python\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/include/python3.6m\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/include/python3.6m/pyconfig-64.h\",\n      \"mode\": 33188,\n      \"size\": 44508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89d58bf9f0b84d258f9905caed4f89555186c12f6eeba5fc3a9901a46825bc7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/593bb87c52cccbbc0c88d53a855a3094b06db2\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/8f3df84d03e047d8f6faadfbd5ae74d173760d\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a/1e6f99f26d5e43b412479aa6d1d103c8bb3dd4\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a/aaada9b04641710a4d7fa7aad16213f9e1e04b\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0b/61f913cfcf5b0d21ef5543743cea9a053ee93b\",\n      \"mode\": 41471,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c/1e90d63df2bc444a3e7808aed262bc932a879f\",\n      \"mode\": 41471,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/57ce0570295bd8f417b3e33a9c54018d4c9089\",\n      \"mode\": 41471,\n      \"size\": 92,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e/0949a653fde6162756e1b16c9b4cedb5200614\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18/72345dd97b81288423dba285128b1d03f80c77\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1c/be0ba17a1958a083559464fd73566088a1af70\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/20/4290c74fc6b277625504b3744e7ae81f835a1f\",\n      \"mode\": 41471,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/6539fd7f17cdf0ff4509f6ef38695686c61aea\",\n      \"mode\": 41471,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/23\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/23/872658b6c12cd88b9bdc82e23ed1b9c77ac77d\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/546d042263d7d75dbba1ce9420cf7aa36e5959\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/a2ef8add4c60b8885ab7feaee72f56038b0833\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30/8afccd9cf301c02428d67ed5e184b32c12be87\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31/fda667bf35190c0ce6ec6b1d6b753e0c90ce58\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/33\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/33/845827a18289aba4c39524b392b5bb19b91396\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/33/f20b91aa9105e90502ec78f27c9f36063f856b\",\n      \"mode\": 41471,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/37\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/37/495a017f105d305fd123aa14513acad687bb63\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a/3767e54f7cc289cac88b743b56d02c570d9ade\",\n      \"mode\": 41471,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47/001bc8c5802417ed9ac30660c9a9993c2d0bf0\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4a/1790855638147e5992cf5412549b6be59f0e78\",\n      \"mode\": 41471,\n      \"size\": 91,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f/17eeea0f9a075b8e7e0612b66a3ebef247a2b6\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f/c37ea53adda119c53af3d85c702bc6c86de6b4\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56/910ccf19a29b69f36b6e8a059e5262111b5b4a\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5f/f93b68eb3ca9a8c89908ffa19934192e8f66e5\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/eb6ba6df915c05676b3e114ac662b0961a3604\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/65/b93280a00a46e2ef90c19145bc2347bafd2541\",\n      \"mode\": 41471,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67/8319bbcae6ec074f5e13b1862a8fd3ef240e7d\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67/b6f1af9136d85c43e8532d7b8f4459ab9c18e7\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/19be439129d70a85c8b3c076999e3da3d10954\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/7c5d81d9ab7e866fbc1b65fd8e8dc54ba22c01\",\n      \"mode\": 41471,\n      \"size\": 79,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6a/fb38e8586f699b71b884f4f1121ab2e381975c\",\n      \"mode\": 41471,\n      \"size\": 89,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73/22dd62f80541864532bf8d8b52526d19180251\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/fb10f8c10349efbf50b19e302c393c05fed297\",\n      \"mode\": 41471,\n      \"size\": 91,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78/d05f8375f640f0f7b2bf19edc31c8cf08c0968\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/16e114c80de3969092512f2abca54da4102e28\",\n      \"mode\": 41471,\n      \"size\": 92,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d/d045cbd8175d0e90e31f4d5e522f040833380f\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/89\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/89/411dbd05e5b31ca7006a0f7681fb11c72ff623\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92/de75e037aa068849c6ac3e302f7f4ec6d846ee\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97/07c0400fc1114434046ecf410b77d5c75c0d2c\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9a/24eeb9bcc904dddde15d6ace0ab61a50df51f0\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/ea697dadb3820afde0166a17f9f2620aea7e44\",\n      \"mode\": 41471,\n      \"size\": 85,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/f222b4e0b1d378215c7799c576627a4fe05393\",\n      \"mode\": 41471,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a3/55e390f04a68fe9760cb8055141abec7633513\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bf/971b70c5f2975343e5cd51149081ef689e0a4a\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c2/34aca6ed39b90f755b647bb74c383bea4c5530\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c9/f99120d1d9fee141dfd996fa7fd95883812dce\",\n      \"mode\": 41471,\n      \"size\": 91,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d9/1402836bb02929e58ba29648272414d3e5f5fe\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/da\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/da/8a9fa689464af9771c9654fcc3767d78f46c0a\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/da/fde8fac2ba2a83ab3c1f357dd812bf94d5a272\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/dd/20f1a0d28624c648e968ca3b736f56966b1289\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/a3afdc74419f227c9869ac6fba7c4eb94148e3\",\n      \"mode\": 41471,\n      \"size\": 79,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1/730f80464f723ca396281b80cedf69f22eb389\",\n      \"mode\": 41471,\n      \"size\": 85,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2/48d246084c469cb59b58bbb3c4a9ec6f864741\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/9e1cbfedf94edde96863f6a4798ae37110b11f\",\n      \"mode\": 41471,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee/cd0235abaed36fb49309da47ac013d16340a23\",\n      \"mode\": 41471,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3/5de08f7cf078c6d89c5d0d513c55bf814957a3\",\n      \"mode\": 41471,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f3/6dca9680f78a1185288b73f0021e34c02491dc\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fd/7bc15d09d4209c9b125f10f9e93a81b28d5805\",\n      \"mode\": 41471,\n      \"size\": 83,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/python3.6/site-packages/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpython3.6m.so.1.0\",\n      \"mode\": 33261,\n      \"size\": 3312920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e228552fef83e6c14b0b911ad96ac4538e68702d05116ac7ca58261edc1d13f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libpython3.so\",\n      \"mode\": 33261,\n      \"size\": 7104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10c6d035b2fa462e761cdf69f914501d7ebab06b98d3644d10a9c9ccd76a4747\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__future__.py\",\n      \"mode\": 33188,\n      \"size\": 4841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f360476748d35ebb1c55fc3644e46db265449a15cdf388121e826c2baf81382d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__phello__.foo.py\",\n      \"mode\": 33188,\n      \"size\": 64,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"586d9bf9b42fadd32feb1fba80613bcbfb4180dbcd6f03af678b5a6deb9d6a7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e4277456639d269994400cfce6d0238f63c8262d0777e2cdcb2f6b85f5ce9f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2193,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b9c7680cb40ce8d949f53bd2548717103224ea9083a074c246072ea4242644\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e4277456639d269994400cfce6d0238f63c8262d0777e2cdcb2f6b85f5ce9f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9ac132d85327f11e0ca541acba3b6cfee662718c8de6bed670a225b483252f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9ac132d85327f11e0ca541acba3b6cfee662718c8de6bed670a225b483252f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9ac132d85327f11e0ca541acba3b6cfee662718c8de6bed670a225b483252f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 954,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9c09e362631106cf11a4b4d980fa5ca329499fac5bb9ef310c0bc6ccdb197ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d44faf2bf394ae62bea86d461baab67227f977008aa3cac647f6b9c7daadf97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 982,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"715111eb620d42ee84f33e038fc04d9534af5795328757ce44fb7c626750b4da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 28799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"905cfba01f65a54e66322f08090c160c2f24027c8d3fb2319b8f788298de6d1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 23647,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05577f1664763106ec5a4c92dc0564855ee30f54d129869b2f3c074b5d45e67a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 28799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"905cfba01f65a54e66322f08090c160c2f24027c8d3fb2319b8f788298de6d1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6510,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f3b1b859770257fc9175370438f2e1eb73c0b071929da6f8129bfb897623c10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6510,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f3b1b859770257fc9175370438f2e1eb73c0b071929da6f8129bfb897623c10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d71c987f7b82e64fbf3ea6b65590490eb21eaa151f34004f9e38249ac500c61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4490261a7026887202dd4bae54b9c7f57954b58fb175211c39d91760b8f230ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3890,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a20b087f5123d4eaf12b54e7013d1e6ce757fc2938971d030e88169c24cf4f33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4490261a7026887202dd4bae54b9c7f57954b58fb175211c39d91760b8f230ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4a76be11c951f0540f2ce4cc7f8752e51e67d847c5d8b326ec61435e779f805\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2645,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8de67e5b0223e43c717413965fe7a3e7be42328a3908cd353dae00076fd7b9f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4a76be11c951f0540f2ce4cc7f8752e51e67d847c5d8b326ec61435e779f805\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09d6ffc7b987ec391865742624f7034c010cc5d022f1e30fe9c45dc4933c4cbf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8154baa5a65509ce8dbfcccea309a86eaaa141819286c8b080a978c86fa0a8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c25c9d233c2c988ec51f50780e8e9719b056ad9d175271302db641f80e9ffb67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c3c94da484b622fe04416450dab0b59203f4dbe78532aa4c47d567f5e7ef608\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7cdb0f99c918b422197c23698cf949ae2f9c20ec8238b711f9ef6def59daa785\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c3c94da484b622fe04416450dab0b59203f4dbe78532aa4c47d567f5e7ef608\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 163404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02f7bf9a0b1ab962eeedbb0749a40094953fadcdf53ceb1c318a51b1392723e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 81997,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1d851863f9d471e2d63681745592b9329d5b4fba29ce55a0510eefddda5e36b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 163404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02f7bf9a0b1ab962eeedbb0749a40094953fadcdf53ceb1c318a51b1392723e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 71370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"069ec8c781686f9eec2f8f5a5bfce2fb783ad96a2939a8043323450c224a3fdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 48975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db0e6e97faec23d528a17dfb8780245f56082a5a46547a158f10a521c3c6ece4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 71388,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35cfc631a070afdc72ca707060bf19896af5c283d87199f4946605416a9153bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f35841d252ff8af862b400de72d8de0e2477f4130ae72f29e037009ac508f507\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef4a0de0657436dc9185c29f414c9c0742a6ca986231334e0bb9f5e77581df5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f35841d252ff8af862b400de72d8de0e2477f4130ae72f29e037009ac508f507\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a85d9ec10cc3657e49a1187dff7e09cc94a4feff0dbe83d02967554633442c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b01a37dce183f9f095c29bf5c11d5a8f0bf8e96ba312b22a8d7b83d9e887b1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a85d9ec10cc3657e49a1187dff7e09cc94a4feff0dbe83d02967554633442c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 21910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d767bfb50abe0f1c5620b840e1e1125f2f6aa81d9b3fc4c00f42a2b0f317a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 21910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d767bfb50abe0f1c5620b840e1e1125f2f6aa81d9b3fc4c00f42a2b0f317a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 21910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d767bfb50abe0f1c5620b840e1e1125f2f6aa81d9b3fc4c00f42a2b0f317a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 22036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bd6942a5c2a88d9d76f8799d3aeac78b4b75888f5b32e982fb397152592925b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 22036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bd6942a5c2a88d9d76f8799d3aeac78b4b75888f5b32e982fb397152592925b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bd6942a5c2a88d9d76f8799d3aeac78b4b75888f5b32e982fb397152592925b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844b217dfa9bc8a66953b989cd9efa4bbe4fdb750c0a8c87db3f288ed68f279\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd6a4532e66d6e28843cff47757a8343033893ec7543e3f64e08e5cdf876d447\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844b217dfa9bc8a66953b989cd9efa4bbe4fdb750c0a8c87db3f288ed68f279\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e16f75d846fca52fe3e01e1a0fe731b7c17e691ef085799a2be87a3c30979ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e16f75d846fca52fe3e01e1a0fe731b7c17e691ef085799a2be87a3c30979ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e16f75d846fca52fe3e01e1a0fe731b7c17e691ef085799a2be87a3c30979ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7474,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64efc2de0de84dcdfd5398fe191e24adc7d94f29bee7bfb98d91656ba5520908\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4110,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c9fb2e2f4740532a57f814396e2b4812e589a9d6c84e77dcb643c3da9876758\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a642b8a9cf907c9ad955080c631164fce6039f49f841537bf5c7d0c0afbb4a9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 25945,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e198d642d2a9376d2c83559bd2d90b07239516c2803094b0c7d06ceea02aebb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 20740,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c02bf6601d4d4acc41f6ba34c6dcd2d298c374b1328b2e72a158da0d90246872\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 25945,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e198d642d2a9376d2c83559bd2d90b07239516c2803094b0c7d06ceea02aebb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f92a3cb73038e910e1c340a8e54a2fb3857dcf4fc709c26ad2cc239c0fb87a5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b15cbde93c51c11188d608f40fc910eb871dbf937a0aa4a94bdc9f881b972aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f92a3cb73038e910e1c340a8e54a2fb3857dcf4fc709c26ad2cc239c0fb87a5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 60058,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea29d21bb713f06136c14e9bcefe2dddc5e62812c99cb5c2bd1b2c3cd24bae53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 50817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8eddab9227ece801e300c6f3b87e314c957d98bbb93fda0649f8f04f5716b08a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 60192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac41e4d2e265655e4348953959da953dc07ed285a85f57a5eac5a4e7ceb79055\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"314347f2f9ed37b5b01dc99ab269addb9f6121270feecf700747337f56894801\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e466f5b14dcde97fd6a0eac238ee9f59bde1fabaf2d5d6a9141e704553fc048f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"314347f2f9ed37b5b01dc99ab269addb9f6121270feecf700747337f56894801\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c08d736933aeeecab26c9fb37d4b6282ba5c79ee314cba51de7c59d85b6ecfd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f410ce2b707dec8fd5508a8bf160a7b577582198c8a46b7e1816f098805586cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c08d736933aeeecab26c9fb37d4b6282ba5c79ee314cba51de7c59d85b6ecfd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b64be8bfe93bb032495efff4d8929a715b17637066030dd33786c1ccadd65060\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 14636,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2c37a22eb2f9098bbf2894261918b8d0f29985a7ed9dc9a53e0f1b8d7c1b5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b64be8bfe93bb032495efff4d8929a715b17637066030dd33786c1ccadd65060\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16903,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09b9479ae80a03e4700590058d7ba5f3d303e0d2d45d15a426627fa7845b8f74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11305,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98219064b6860556778dc4d2f1ad00312ebb66d41c8b1a4d80f08989f63fce0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea252683c1066bedf2b03f8bc8be0ecc4c1f08c84ba2964370ece0750b102133\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb11ea15f1d79a35a0b3bc4577b3eb99a9a355a5d054a15481feeb2a76b6233a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"876320f43a1d187e0826e15de6ee86b1bbc8f6f20299d881dffab8948dec03ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb11ea15f1d79a35a0b3bc4577b3eb99a9a355a5d054a15481feeb2a76b6233a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c633a02e31afed9e0080b4087daacf943aca0de1167fa088e511a259bbbdfdac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11555,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eda5e0d549146ce17a7c54aab109d9a7c570024d01769c567d56f7f571dc9ff1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c633a02e31afed9e0080b4087daacf943aca0de1167fa088e511a259bbbdfdac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f34e1351465f02641e57136644beca7113e9c0f2fb8122e10d7709210ef34c27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"feae2a45b76658e13b00fc6398d9f4ce7113f99a54c09dc2feb85578fab2b50f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f34e1351465f02641e57136644beca7113e9c0f2fb8122e10d7709210ef34c27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73c3771cb560c76cc1e1586165a2f4523e0ee41633f69244ce97b38c7c11803\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1cd9249baacee0f54f1f1c45fd7a7d1622189a3b75fad191de4279f1ce4e67de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73c3771cb560c76cc1e1586165a2f4523e0ee41633f69244ce97b38c7c11803\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74f6c4dd2458236c15d130c4558df3cb74726842f8a4593398ff8113e5fd06e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3835,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdebc45437aec5a37f41e51ff16e51b08235c2c3553451df4abba0bf6778a62c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74f6c4dd2458236c15d130c4558df3cb74726842f8a4593398ff8113e5fd06e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 25884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"025ce8144edc4126918afbd4e32d6f54ace8308d2647bf5b0107d6cf2a5895d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 21357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c98813e5a7df5ab8ab236767d870e570125de15f5173916db0a86b0085b31ff3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 25884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"025ce8144edc4126918afbd4e32d6f54ace8308d2647bf5b0107d6cf2a5895d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 28418,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39736eef86e7c93da0c06b786c8452c81ad652c95f85750878d62d239c918f1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19385,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acd301c27a5d2844b0a874d95f59aa61c73c6a4bc094672a653798dd9457a3e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 28418,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39736eef86e7c93da0c06b786c8452c81ad652c95f85750878d62d239c918f1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10082,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87127586469f948de1905f0e326ce2a5a9895337f274f0b39376d8f8eef2f182\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8483,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8190abe84458c44d4d5dfca9896e8bc63d97cc23b6db49474d3d13a30d5f8fb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10082,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87127586469f948de1905f0e326ce2a5a9895337f274f0b39376d8f8eef2f182\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bd335c1d70a7c2885741ff75b93c75fb519bbe1a8fe2c0aa0265964f14ee5d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ac92072a5f9231e678bd055d803ca16d6a1b2de59f369e35b52fd537640e021\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bd335c1d70a7c2885741ff75b93c75fb519bbe1a8fe2c0aa0265964f14ee5d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12577,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb5ebf63d53ef55a76078a3963fc2a71e8b1fb1027a05e31cbbb6735db62dbec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c9335d6825e9ca3c9efcddab46c920d07923d49aeea6ab8a10a3c86925de01e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12577,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb5ebf63d53ef55a76078a3963fc2a71e8b1fb1027a05e31cbbb6735db62dbec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ca6b8361a09eafe2b04e9693493f9b71d9db2f012a5f8dd4fc346075d3531c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04833d99968658a76ee4c2b2049c9805bea5b6746c52186db63716011fb2ee00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ca6b8361a09eafe2b04e9693493f9b71d9db2f012a5f8dd4fc346075d3531c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 33902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e02db1010f978cd95d88330cedc7f181a43f0d07371275aaafd5c1bb298b1960\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18054,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68da7ddb1e78aac937efa7abdb0314c4adaaacef0989e8e6eb650bc2e51b777b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 33902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e02db1010f978cd95d88330cedc7f181a43f0d07371275aaafd5c1bb298b1960\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efa5e326bdf7382a9601e2622c6c58bcaac3400d2f2b054ef5321495fa080b90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86ec8c83ad77ce1b68df7856c68af01a03120337c88f0162797b6e20092cd191\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efa5e326bdf7382a9601e2622c6c58bcaac3400d2f2b054ef5321495fa080b90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3313,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fd8af21f942a5c48a9704d7fc83c9f01748c9be619d32b787db9a338bd460c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2707,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc8e440fd0d8d9c3840b00a8185bd9f87eb28a19894bb833079d1825bd3c0849\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3313,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fd8af21f942a5c48a9704d7fc83c9f01748c9be619d32b787db9a338bd460c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12c8eaf0f8c47cf370089b67d32658553d9b4d52ba5591e1cf9d30fb9ccccaf4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7decf60f2af53073e78474e7985e375b76e45a9dca8b3fb02d55c449855ce679\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12c8eaf0f8c47cf370089b67d32658553d9b4d52ba5591e1cf9d30fb9ccccaf4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 45246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c63ade4738d16262adc76f7d32c77def241b97108dd8518b7aa230d5018cc87e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 30558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06fe0a669e0ca70bf0ac52a5986da92eaf5272b566bb61559a4a73ea657f10c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 45246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c63ade4738d16262adc76f7d32c77def241b97108dd8518b7aa230d5018cc87e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef518c5b63ab39d4335b6ef27c95fe1d944ee03948549baf3866ccc0669a13d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7814,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c39b94b44da3bf08df066528706bfd147837f822c7b6a04cf812c826030d0d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef518c5b63ab39d4335b6ef27c95fe1d944ee03948549baf3866ccc0669a13d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c30eaee91b5c799a3db06302938e45a40ea329c5a25695db3ea0a9c378e323e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f048c84c1d004f534e55c395d505626d3196699e109a2263c885f40b9de5ab61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c30eaee91b5c799a3db06302938e45a40ea329c5a25695db3ea0a9c378e323e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a2021f0f0cf9586c0d13d7bc3458902c4bbb59d2a99b176ebb3c9ca7703fc88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3407,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9ed1b21629ad56033a4ca2fd54f8f91b95adac414a647a19c713c212870a19c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea1f7b60f4225413ab2e84eb21f36a652416d4ae59b95d5ff8e6f0783575e4de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aad682050ccb1448ba70541799006d80bd72bdcad4a685c9a1e15297c0d7815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1580,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fac4a13a68d023509ff44caa3602634a81272986b520a6cd62398747923e6b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aad682050ccb1448ba70541799006d80bd72bdcad4a685c9a1e15297c0d7815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11857,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9cb9e349e2da2a60b28435e41c7fb654a078d7fec662d407caa16c123c8de37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9818,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a08d1dbae52bcf3fb9606aa6f010310e51ae474bf15a3e0d1d5b1f3c1c5a8d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11857,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9cb9e349e2da2a60b28435e41c7fb654a078d7fec662d407caa16c123c8de37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 53060,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0dc9696a55b68bb45a08fd1895be62d6b5e741487c5ab1cfe3fa95bb3f6735d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 44210,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52928d6ad8c9bd0f927dc6ac437237d8013df3718b6cbd3b1046103016ddf9a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 54513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a08b3599ac59ec6619a1e099daf988c90ddd9a9773a8e369ce876f893d5cbc4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c7675119e0269c0bd5f788522d0781525282b3e1cccd4a81034c111582b7c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c7675119e0269c0bd5f788522d0781525282b3e1cccd4a81034c111582b7c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c7675119e0269c0bd5f788522d0781525282b3e1cccd4a81034c111582b7c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 59606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83a39d4ea96f0aba12f9a779c0e6b4da6167b394ebff52b89ff3df13dd335a4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 25036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"986f6da84f10fc46d71e7eebc0178b279fc791cd97e8595b85d34d072039404d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 59644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e06c7da773867ea043d34ef5d29a5dcd01e497d7ce5595943d16f08761e510c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d579b6afd87a5970b71866af7dd716099435738b61ae8403aac6f03b4ab1cb6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0662c089f66209da055a8038861db5ea0380fb354d4fc51e22be18e19e980423\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d579b6afd87a5970b71866af7dd716099435738b61ae8403aac6f03b4ab1cb6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 75346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f60ca9e3ededa8a7e1d7fd11210f1c3d41c988e7b02f29ab470e32bae3d185d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 40019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00acd04b436548390cd104f63381b437f1e0af25b3929a62accb940bb8bf0eb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 75591,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79e8160c13552d71d009f7f8d8b3a05f91a4cc7217bf6c5dd1b2efb98198a2fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ce64c49d2a7241220e5ddc2823a68d43b3612175d8bfeef26ee61785c7adcb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 731,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cff0dbe8d88c9accd10e3c631a2e1f58d167052ec8c6563ff39249f6b4b1eaf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ce64c49d2a7241220e5ddc2823a68d43b3612175d8bfeef26ee61785c7adcb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 23455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f7311dfa2ff84e07f5d45eb50e109fc13b685abaae91e24d14337359b86dc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6040a546e9545daf7ffbad1df70af2fd3b30c9a2a8bf9075a370b0c4a34d26c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 23455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f7311dfa2ff84e07f5d45eb50e109fc13b685abaae91e24d14337359b86dc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4ac7079a1fc0abdbbe360317f2b7e3b4dbdc7e910d455b53cf31f6ad65133a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5890,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4df9c63285f41c3efa06009789fccb0c6e69205206fe1906ab10568ecec067a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4ac7079a1fc0abdbbe360317f2b7e3b4dbdc7e910d455b53cf31f6ad65133a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"425e804cfd46d6ef6dc530ce04dd16229c1e7051815e8304085d7a4083ea57ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36d7b36fac9296ef9f116a830c96ddf53a216859ab42bf4e8c98cc238d687204\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"425e804cfd46d6ef6dc530ce04dd16229c1e7051815e8304085d7a4083ea57ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6341e47d082aa45099527b7c33737f610a08951cba4d2f63c681d553ab7ee4c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d27e48f583e2541d3ac931b0c017b32ab462ebad5039b52a39e411f81db44446\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6341e47d082aa45099527b7c33737f610a08951cba4d2f63c681d553ab7ee4c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17581,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b99ca6b3aa418057003b93b0f68bbc0bea04063888b1df50631fd4f4eb1dfb82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85ad029c17e93ce8695e1ba9304ba381b9f08e0426015945dec21be78cd1c698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17581,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b99ca6b3aa418057003b93b0f68bbc0bea04063888b1df50631fd4f4eb1dfb82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 18428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9da2bb5bcde144ee1303e96245118d206220f22955c61ac4797a4c0067d953e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41192a1016a3b84f0d49ff2380225ca05284c14dee6a91289207230c453f75e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 18428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9da2bb5bcde144ee1303e96245118d206220f22955c61ac4797a4c0067d953e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 28201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40cdd8c1a99c2f584366a7e72ec3c74cb65685f83ef5ed90b386efbac20d9fbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ef64c722b0a04de3c01438cebc05c30ecd0604918aad7643000637926d8369d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 28201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40cdd8c1a99c2f584366a7e72ec3c74cb65685f83ef5ed90b386efbac20d9fbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b173ffc243a0babe878d0f9f99ca1e195b594a85ebf55f2272693183c4c957b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18093,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f4b366d359a5d73552a7f50d02ad21306ae3e8e77cd7c9c3a63584d4ce632fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 24064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b173ffc243a0babe878d0f9f99ca1e195b594a85ebf55f2272693183c4c957b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36499729208a309e3fdf48a4fd95d45cbac4e292f05a937821646de137c89154\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2735,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"028f22eb8b8709c3dad4dae5729d4e91c744444e8bb240a54169638ee5a96f8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36499729208a309e3fdf48a4fd95d45cbac4e292f05a937821646de137c89154\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e31dfdc9beae3ed9e04c7774221786b86678e9de4e0c530ccad90fc9dbb441f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3631,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd0615110b08a8ad02ea4e3e6ed1a7b197a24512192f576e7caf2a81804f6824\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e860b060ff0466752ec4b70fc9cda00a35cded95f367417ee760cbf37e708a16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"899252c998baa0fcc84246713e2e66bddb690b977b2841de520d61082417c3ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"638c61c10f76e424a614f1dff3b1807ab730c3567035098d864902659d8b0f84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"899252c998baa0fcc84246713e2e66bddb690b977b2841de520d61082417c3ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a63d6b16a80879437f66c4464751c94cf3c5afd861da59ed809f58fb992173d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1e33771dce15ad578a1386424800469a5758ac510bcaa9c7759368be03b217d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a63d6b16a80879437f66c4464751c94cf3c5afd861da59ed809f58fb992173d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac2b320bf9d5410439792e67c36801121e0d218d0d4f82003900440fc68b9a8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3332,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33a166507d7731f7c92df99a148571e47c3ef015d6bc214cbfb498f8706b2bcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4261,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c8a0929c184d806982234cf532f38339c9b5a4387c23c129531e7c02d3fd643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b236a6e587a7d82bed63ada261c0f2ddddf15dacf52f6890f594c524c3d2dce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b392150b5bbab6fb8062096d540488364d93e01bb038ce0f5bfa39e6b30a0392\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b236a6e587a7d82bed63ada261c0f2ddddf15dacf52f6890f594c524c3d2dce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0a722a496d0455a60995e32725b7285131d0be95433105a20d85fcbc9276fb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea5f584d906c91f5d5eb90af82cd7f81a8c1c136115b62a2dcf56645c0d75aa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0a722a496d0455a60995e32725b7285131d0be95433105a20d85fcbc9276fb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b8fd9f1b7043c4a0fd5aee3013d01fa901e27a72e92d6d9b29e03532fd6d962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1a2437196b9c5de96bbb714fd63215f8c875722ce99ebb819037b9c303c7505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b8fd9f1b7043c4a0fd5aee3013d01fa901e27a72e92d6d9b29e03532fd6d962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f4d231199594db902e4a26e054ab76c014cab4ba957a3d96b0b9d9a7b74f97f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"403d32fe276f6ed7b36397a6550b5d4bde384b17f3eb4dc6fbba17f97ae743d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f4d231199594db902e4a26e054ab76c014cab4ba957a3d96b0b9d9a7b74f97f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 39921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04bf313e7a1e01a20afda76209709046346ac197d865d863fac5c09e2af6a3e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 27833,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23ae7ab6495d0d69811bf7af83548723fa180f818196c17dc4413355e82dd888\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 42140,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20668fdb8cb547e95dfb6a5422f3b64aee91296cc95514c5e6edfa319f5224cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cb7a2dd07898e9e4b245f4331ed8e56f2b7e7eb9a11bec5a6287c576a700e45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3837,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbf460f5315c24270694927ccaf71c409ff9dd6f0474e1e87f49581a0295f0ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cb7a2dd07898e9e4b245f4331ed8e56f2b7e7eb9a11bec5a6287c576a700e45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9698,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f170f3954df41a30dc6c8f6e0fe539a55524f5ec3343df2380be6f847ae021b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1fad533c261919bbeff86533d0f0eaba7a76b9a17f9669fa4704f4457906024\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9698,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f170f3954df41a30dc6c8f6e0fe539a55524f5ec3343df2380be6f847ae021b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 79441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2310ae21574075e4b9e48f84125da0fd5ea506412b2b3937b090011df1101421\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 54026,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c989649c4021bdb4f09b3787f6526c432241cdd18dbbd960ba3d49cfbfe46f2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 79741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8fa5196412e2d3492713a2683314904adcddcddefbd682c6bd5cf2957071e22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c6367390c8d1775501511677333fbae9ecd77b34f9507e0dc6c38885ccadc03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1898,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39b3416f19f359f5ae8a0338ee86f0fd4b8556308071b1d193827b3979c2fb7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c6367390c8d1775501511677333fbae9ecd77b34f9507e0dc6c38885ccadc03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 62374,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5584147ff458d96bdb978967093ce38e8f853633bb44ab67881fdf193c161ef2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 36788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4df26d2c1f3e5aecb7bc6ba669ac250eed753c991967a76bfc9d1d1fb35e63d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 62374,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5584147ff458d96bdb978967093ce38e8f853633bb44ab67881fdf193c161ef2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5d1647e9c1595adfb88a06c89f64dd11cadb37f9ce3e322eb99ececc1b080ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1499,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20ad0f2ff2e1bdec5c70cbe0dfd2de4f1b568da0762a65454e9077451d865f5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5d1647e9c1595adfb88a06c89f64dd11cadb37f9ce3e322eb99ececc1b080ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40e6a98551b60b82014217743cfdf141789ff4fa3b8831d4cdace92d83e56871\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b2b84f5d830eaab692eace2e45716158e90793f74964e1514394fc5f06c23c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40e6a98551b60b82014217743cfdf141789ff4fa3b8831d4cdace92d83e56871\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a7b3a81e643797ac4a61baff60ad00ae3f48bf59abea6026ea4db722cd54e50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 29422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0f330a2c9190cb38b8b54e3592c410982a4d9d6e46c7faeec24fbc4019f27bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a7b3a81e643797ac4a61baff60ad00ae3f48bf59abea6026ea4db722cd54e50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aadad0289c404a0f2949c384dc1502a6c0da68fd7b69a71c4f1a6c30b60b8768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4665e6bc13344a1be1b1c8fbac1b017dc6ab9fee6a51bd44fc6fc60a88de36a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aadad0289c404a0f2949c384dc1502a6c0da68fd7b69a71c4f1a6c30b60b8768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5643,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6c59dfca4b40f853bc6258d8083b84c65167979af40d69c9a19ccffa3c31ff4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e278ea596b498dacdd356a281e6f589f30ce7cd9ca381ef332745effeb5c1300\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5643,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6c59dfca4b40f853bc6258d8083b84c65167979af40d69c9a19ccffa3c31ff4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"984aabaf827de7f19e8c306ffc9b104a0724fff4be6dff76c0c91569bd565e71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1489,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55d22dbb9ee7f9a72b4e6deb992a9ec09c8158eab85244af9ff7e9cb4df93914\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"984aabaf827de7f19e8c306ffc9b104a0724fff4be6dff76c0c91569bd565e71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 63672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28a0e22a430e617a3a327db2955d6d35ad890e78374bf1a0f8ce494ecbf3eda2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 54525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e78448aa11d31c79df882338fff5f7371af6a5d93e4066fbc9aea57703a2b1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 63754,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62eb614e707da6036ee0b9dc7f212f2560ac131d6145c55f4d04e58cfd300973\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47d4308a1ffe4889baf99892978fb08d8159295383403d58ebb11096807eb7b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4962,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e514505d0e737b24af7759c479132778e987d13c6f0ee5108d70ae792057b051\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47d4308a1ffe4889baf99892978fb08d8159295383403d58ebb11096807eb7b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15555,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"461dd3617d616ce4cd6b9d4ce4f0298e41b422e425e9f8f8ca85342d508feb00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9557,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa8e6981a6701529ab52d3acfd87b6c7316a2632b480e6c1e2cb745d201d18de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15555,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"461dd3617d616ce4cd6b9d4ce4f0298e41b422e425e9f8f8ca85342d508feb00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4706fed065d5596f1da9c61b93d9590af5b33ac14723733ab9722c0e11bba9da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 14465,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f4e3154211693cfe4857db1003e18ec6d736f8e27b08be8f63dbf7c5b43386\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"132fd1d0542d01cefee733ac7303f0ac0abebe63820a869c9b16a0c65c8479a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af12eeb3c05c094602470145c05a92c716943176a048c27adbd9b76e7a129d05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"232a7c7f73346e59e4a39a8a808cbae71a78b300a1620d9249a826154d54c95d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af12eeb3c05c094602470145c05a92c716943176a048c27adbd9b76e7a129d05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 33782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5568cd0633800c17ba6880ed8961847368d60764a1a025ff69e26cc5d3fb5a6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 21241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f0e9d9e9210493b842e73bdb9889ffa1bae7c10acb05767747e1ffd38248d9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 33782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5568cd0633800c17ba6880ed8961847368d60764a1a025ff69e26cc5d3fb5a6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fac3a1f33b79b1edf8c2ebd9c3c520f31c78b11296bfb8b629e99ffe6e8f0bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"057a6d71c6f05e2398a38ddc6fb36839eeab9787685eb94d017cec05cdded0f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fac3a1f33b79b1edf8c2ebd9c3c520f31c78b11296bfb8b629e99ffe6e8f0bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1501,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01b771191825a65c1251c9fb8d1c2bda0bf62be5dec856396ba2569d12095f83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5ae4110d081b602246adad2b480010fa2234163109557f2a80b0b46cbd74ca4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1501,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01b771191825a65c1251c9fb8d1c2bda0bf62be5dec856396ba2569d12095f83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f034308429697683db85f115af584d620e8f65236861ff2ae08107ecf0d420d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8260009cf2da7c2867bbd1a5b68ea2e46ddb03bd68b00e77011dbdceccb91f27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f034308429697683db85f115af584d620e8f65236861ff2ae08107ecf0d420d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48ef01e74e03d0c1bd112db99eb16625bd9f6527c229aec21d16cb5bdac294ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6f8fe4bb7e5b78696b8593ea46bda0d234661ea3ecec5f67f63903b549adfe4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48ef01e74e03d0c1bd112db99eb16625bd9f6527c229aec21d16cb5bdac294ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b17592d5280e4ff20879f37c8ce9dcf6a8ab3f31a605f8ae3b52214a882b167\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e516f8983cf2c228e7540e9a9ac752410968107af50648841b01ff92f805c5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b17592d5280e4ff20879f37c8ce9dcf6a8ab3f31a605f8ae3b52214a882b167\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 47988,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b953caf2a6091370b9ddd81490727a7d5d9ade5db4c525fe4aa3ca068ce38bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 35633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe4d024e7e1906299b83b8f24715514b7d76199fdf6d6f09d4c073ec869a1477\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 48056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"244525ebc7968bdea578322b9b638762cc07d0ca5963d9e3a72b267d462e6e5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 29630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"781eac0fd264abcb36ff0ad423c63c02a1c3678caaf8866c3a0653e00ea150bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 17781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a6ee217180b746718df8576a4c2f0de6dea0291436ad6b853b9a8dca2ef6ee9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 29630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"781eac0fd264abcb36ff0ad423c63c02a1c3678caaf8866c3a0653e00ea150bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 42009,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac3058c48b8c1305d35bcf0d0477666376df07a208ecb1b975cc6962c6c86ac3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 34367,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fa72a7b1d00b12a2496b76af98459266e97310219a6845dbaea43b899ea76f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 42009,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac3058c48b8c1305d35bcf0d0477666376df07a208ecb1b975cc6962c6c86ac3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 46039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed86e489a0b4f67720edd9235a337309bac626f0e5074db1d6fe95f4de3a4594\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 31972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7021307d22a9d54e055347453198e7e9f6799a2e180da5bb0652ea29a489ed56\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 46096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c9b2ffbec727a437f98b284b540e7f033dd0e34226917bf61550f5a390d0aec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 42576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28b88f9f200b9a79c432a274883eca2819880522e1af4731e317f83b17e756cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 37788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50952dfbeceffeedd86767f3c0b540bd2636fefe443716e16623a7b415e15cff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 42693,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0a934783ba8ef87543e1262d57e91ac8c7684fcdc4ef0b51445127b1b0f3201\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 65171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cfa1ccc9e22fdcf99ec6e18199f57e6bd43af18792d3bbf7e8b3928d90837f49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 56430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"326c7939135cdf05016184c6b930d8945d876573c818598a08178f0a99a387a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 66022,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8eff860eaad6fc7a9112c2eda06a701f8d144321c0eebf72503ffec48f82c20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3935257b0ace02e8a4d120fd48d114e04c7b9e6e8a12c535dc6392baa5c6b8c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4937,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91bab0d1da4833873d1eb6e0e95305b1a5220e73bb914442b7b83af3a315242f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3935257b0ace02e8a4d120fd48d114e04c7b9e6e8a12c535dc6392baa5c6b8c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eff867c6c4d8607bbb59d58be1454a67d82f576177f72e99c5cf95fe2d0fbc2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11003,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e323f0264c2a6cda0e66235848d2d98207f10303abe6387cf22c6a4633e1919\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eff867c6c4d8607bbb59d58be1454a67d82f576177f72e99c5cf95fe2d0fbc2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 28633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac95d640aa56ce8c3a8be8bc85efdaf9146053da1e359aeeeee7cac3e8f01f45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19385,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b68afb0ff57fb2433f0110cd6084ebbeb00edbecfb8fad0a37bf57b2684fdd08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 28633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac95d640aa56ce8c3a8be8bc85efdaf9146053da1e359aeeeee7cac3e8f01f45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 27553,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"798a03e53e8fb06a272a09ebad3411223301e8bf0eebf2cc7d4167ba854395ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 24299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5c5870f402351a8078ade3469b94faf1c0a696e363e468f4a9f085fb909099f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 27620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2162d05cd123051a099b5e673c8da1bbd742ad1635c26391179f18e56fbb8459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88fef4f97f0b48a2d1f16a38f33c826e24feda8a900292a2faa8c4724d5071dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8400,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bf2c93dab180fbd86206a5a4c2d25c148a3be28fd8b88062126ee43c12ccd0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88fef4f97f0b48a2d1f16a38f33c826e24feda8a900292a2faa8c4724d5071dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10425,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d33b8b0c05706787b065f7b7333668519c53dc9d45128c004bedb0fdd030f70d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bff96712ac8a5765dcb132b558dae76c81d819256d1a6a52b3310c949ac3a69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10425,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d33b8b0c05706787b065f7b7333668519c53dc9d45128c004bedb0fdd030f70d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65c83fe3be7af654d7816da1d17fb959010a04b9c56c825da5deefc3e2217158\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13707,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3179ebf059a9637a7fd19c3e20758edf35cfb5fc393f7d93802bf9a444b7d292\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15826,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5965cf32d881ae972eed5e1090822c08e02e73ae4bf4aa21f12b538b95cfdae4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13697,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67efbade0bd987eb0f6e8a0bf812e5454f439d296230198f7781b292184a611f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10715,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40afad1d7c82b74a224437356bae80372b36b565bafc7b198f300dd6f6acf54f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13903,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d10c821d88fc90ff7eff46fcc46d025c2c83827304b5022ecf59033c2c463ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 21859,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7cedf9c1941e45d6895ee81c347074d2e554862d9cedecd31e750dc8a104876c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19405,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a829a1b6eba96c60e4bf25a99cdda68001aaddc806bfe4aea9fa6545b0e54cfb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 21859,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7cedf9c1941e45d6895ee81c347074d2e554862d9cedecd31e750dc8a104876c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7b062e5e8433cc6115d62c6c41931aa3b71c839f10db5a1e96545b3a26bd990\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3010,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"416370fa6c8a8269f146789bb4dac7e1965377cb89d1490d9bab003265446fc0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7b062e5e8433cc6115d62c6c41931aa3b71c839f10db5a1e96545b3a26bd990\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8ad121584a338b9a11d34a7702e759c3204bdc572a3c12c9bc531eba37d715e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2942,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89aa2c2f5ff23e7ee984099dcb005f9050ebb7d0e14c5f4db19abb808954f975\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8ad121584a338b9a11d34a7702e759c3204bdc572a3c12c9bc531eba37d715e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8367,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc1dd65f8538c297063d9cf63a69a36b526a1f444a9f888994db08efb907c8fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5571,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d9bab368956678b1cc2cd241422c82090dc99f80f1345ed8c1e118784e3b7f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8367,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc1dd65f8538c297063d9cf63a69a36b526a1f444a9f888994db08efb907c8fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 84180,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22b559a2af81194bb631f48d18bc63da3b82f572aabbc75335401bda82eca02b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 74932,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b439433b482f48fd0ea6132fab196440516bb8bacc602735ff5bf351707ff42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 84233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92879e32b187165dd3eee7256448c83102c310aed54327febbe5c6562a9a8c1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"345e9ba02e6f6b3165810adf25a230c30d386c1116728a7255c54fe8084d7505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc112c9df916f7a9187cd85d662693f3b873c5d0e1171cd45758e18f96da08e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"345e9ba02e6f6b3165810adf25a230c30d386c1116728a7255c54fe8084d7505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51b0519435ada0c938efabc32be017ede77fbbe00941a188f446d06fb3826895\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"603af078799bdc5dd984df26c36b1c298a6923c50d036fc5a845f18fae09cad7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac09e41bfe111ebd1b4bcf0663751c1b7b6269564ef0430e370e9da4bb3f3d1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19332,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49c1f91df764a8100784adb196d33741b06da30f4d085ee42fca7e175319c571\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f760ef6661a8fe232ec497f44dbf72455ab4a17661dcfe75f62e0dc5a70df9f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19332,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49c1f91df764a8100784adb196d33741b06da30f4d085ee42fca7e175319c571\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14060,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73b03201b1f5784b3b723d31a90887afa60a32147d408daf321ca23d7695050c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2be4679859245703fb1e094948d7c14892dcc84320b36424646340f1a532fad2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14060,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73b03201b1f5784b3b723d31a90887afa60a32147d408daf321ca23d7695050c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5402,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0759c3f23e7b593aaca6cb007107cb9fc1ec0ae5336e483e3b903001d4f7561\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2727cffd2f8456f0c6d2617aca2157d6515929b0fe6af2478d9014652f23482\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5402,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0759c3f23e7b593aaca6cb007107cb9fc1ec0ae5336e483e3b903001d4f7561\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c8cb474dd1f7c4495b349d7dcbe204b140c09f7cb2ba2a58f601483e1c7d15e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"baf732ed0ef9d8c47c8907282a0860cd5f8ccb30c4e5d3e9069be74388853637\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c8cb474dd1f7c4495b349d7dcbe204b140c09f7cb2ba2a58f601483e1c7d15e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6c6bec25ce082e647a90e31e619e233665819cf2a1a482f76df8b9c255a4531\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0f949a97efa17fd44e6eec758f5759934591e370531ec97832fac81e330fff4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6c6bec25ce082e647a90e31e619e233665819cf2a1a482f76df8b9c255a4531\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa74f75dc3e5eb2cd52ca607cb89936b5a15cad268da1ff1fc60f94016a73fbe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e113e7638dcb5724841a88a2b1622c2f2075f05a8c2d93816683a5b0216f2f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa74f75dc3e5eb2cd52ca607cb89936b5a15cad268da1ff1fc60f94016a73fbe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0044870a40669f99783a778b1da9537c744a3c995190dfa9710acda1f84acf35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f6e37f0e326aa42bea500833332185bbf6542a6326e416113dc685d36a037b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0044870a40669f99783a778b1da9537c744a3c995190dfa9710acda1f84acf35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0b8d8be16125d3e8ead289969681325c6a69991fb1c0203d6a6a3d803f4d12b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7bcfe5ee737182f7e09e222f9f968061e9f6bf77685a354e10bc9efdaa5cae7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0b8d8be16125d3e8ead289969681325c6a69991fb1c0203d6a6a3d803f4d12b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b15266d9f4de4e8d7d38144f918cfce0c13e91e7336e8ca76a1ded7dc3fb8e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beb0943dd42306fe1d4594f063e44ceddbd929147e24e2c3490d19860769e5f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b15266d9f4de4e8d7d38144f918cfce0c13e91e7336e8ca76a1ded7dc3fb8e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56347f58daea36c7578277d705a95a6d67faa44bfa17c277c32e537e8b8dda81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59dc81718a927f29f734ac1221937ac2620feb3e1519d535980d17a9e22f3895\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56347f58daea36c7578277d705a95a6d67faa44bfa17c277c32e537e8b8dda81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 30706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fa18df37bb53a0af0ee45e5178632f3f4802ad1061df255fb6ea481017f86c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19933,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a681243fbe6e0dab3ebb79d35f03bdab8552553b259094d75c2ed0143ee22b2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 30706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fa18df37bb53a0af0ee45e5178632f3f4802ad1061df255fb6ea481017f86c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e2527741f4098d40df6949e514e1f78688769bb24ff5a49ce717983bca3862a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d31b20f9b4874b3277a967bf081ffa4c64ed9dfbd735a9c25ea5e7574ead95f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e2527741f4098d40df6949e514e1f78688769bb24ff5a49ce717983bca3862a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40ae6524a4eaefaa0d775c4bd0e990fc133e66e08ae6d675074e3806b866b181\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ced284ab485b0ae3f9a6275f2ea19b88ac8b6659dcf1e1170fdd7529574c5683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40ae6524a4eaefaa0d775c4bd0e990fc133e66e08ae6d675074e3806b866b181\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 26685,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a654bb3e751e11e634d81d4bb302edf57556c260031ad7bc6d4e76ed509ba73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 24066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1d26386159714374cf1887ae52e4b91a89c31e9372f32191c9c0ef4db2e90a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 26685,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a654bb3e751e11e634d81d4bb302edf57556c260031ad7bc6d4e76ed509ba73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 35281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9a9611a8e68df546c25830b9b7627b12d92ff86fc8c9143e33da2d4aafb32f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"984f84fc7c4bf6fed0cf0269a66e6dad727a3fc811443192dc91257c6e43ba16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 35342,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab625f9d2aa2e92b7259b041c33a566b693734c348af2455f712531cd4cb9f42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4481b87f3308084adf9a4a719dc5499df3337d24fed1ea9326d72de4763da52d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d652c051ffba1cdb78f47fbef8aa87691f645fd47cbbda11a290668f4cd210e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4481b87f3308084adf9a4a719dc5499df3337d24fed1ea9326d72de4763da52d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 21975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"204460c5f9377c05447bfc446810c798fc63eda959fe29fc9be1976cb5f5635b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 14541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a47d353e3751debcac097b0cde678fb6f8abefc3f284023e2ebacb74a58d7a13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65449ab0239d925d94d4bb81db4fe3a0257f31da9b7b9be1f8c70d49c6f9d3ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55ba754e47d9d05131b48a84dbbfe584f1fd190c861e6ec945290e60a0deafea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"595ed0798842eb8c8a3ecc8c04117d614921072b45803b9d6292ba4251ffd277\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 24252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55ba754e47d9d05131b48a84dbbfe584f1fd190c861e6ec945290e60a0deafea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10140,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"439450d1df68281817d1d5cf920a978bab5df095dccb9ad7959af9c393a21441\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9726,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ab1595cb19900bb980cfc6697312217ccd6cdc27ea83316a8c02ff30d361f07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bf18662175c3f0176d131b6a74e7e363d5ca7061cfa44fa5593a1b8b5e305c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5bc1f5ca1e8df53486c2d168e9639d139590726fc52ecf2d53116db85688d0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5549,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cacdfb57fa745a6c81ff064b5d3ca5433c3c7fb1bc17a341d94310cf80fdb266\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5bc1f5ca1e8df53486c2d168e9639d139590726fc52ecf2d53116db85688d0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20313,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8be8330c6f5550d9da4c96f4cba9f3f7d0cc60e60dd3128d91b7c9a2a6471ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 20265,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a11de5ee258ae653164b8494cf80c3aede2125334011a5591ad95dea5476952c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d03967e2c51bbd9c90b936528678650559b575ad2e3b3d1c4d0986a02cd1ae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 35969,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1e42eebb60756cf84af3d5090b24a5605537a6869c5c08116b18aaab76da7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 26445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11b89c8135d77a719dcac96210728812096c51c33949bf547ea2c0f55b36ab98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 35969,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1e42eebb60756cf84af3d5090b24a5605537a6869c5c08116b18aaab76da7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"692c79abb2ef4788432135fd956c65529eeb4d1c05004e6e1154a51e69f815b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3175,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fdb815ed6d2596935e6c9b216257dc9446b1556f64a1ab0de72cd235d63c7ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"692c79abb2ef4788432135fd956c65529eeb4d1c05004e6e1154a51e69f815b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"151712671d077c6d6d01ef799bd38bd7b07a99e7bfaa953ee6ebe425d11c8431\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e411703ae4e504a791dcfeee984e3cee1f6cf76d0610a83c853bd475a1f01c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 18176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8699baf5d4ced98dbdb71561a45080f26fb4ba00abc0c5a3956db310f900fd6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7966,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1beb74d0d7857001be5cb8b3268aaa6ab50919cc45d0a3e91563fb20204e381d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"334a109e8359bcdf26bac62522dfbda59fc8eadde9fef34ab5335f3fc3eaee0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7966,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1beb74d0d7857001be5cb8b3268aaa6ab50919cc45d0a3e91563fb20204e381d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b06ac9c852f9c4524a754d5f3fa40ca6b5865306730cafbb709e99cdc366342a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9754,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"477d2851436f35009f35adc44129b2da106cc32b0928a008c1e09d3490f8482a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ada306e07fb7d4ee59f60bc5b484b54aa7590dca96bd8cff949d064fd3fe49a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5740564579624bc68dbfdeca61e0acda2c86593f2706224121f1195ff16f252\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5740564579624bc68dbfdeca61e0acda2c86593f2706224121f1195ff16f252\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5740564579624bc68dbfdeca61e0acda2c86593f2706224121f1195ff16f252\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 35386,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23930b74c0118180ff5a669dea01cb07100a14c4678fab740b54b80cfe32d524\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 24672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c61dd50e862e866c4cb670a5af1e9d02310c52de87ddedbe236a2447de311c45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 35487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f665900fd5cb07fe0e72bcebcb3e86e618f83dc21defabf043d667772e88c195\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16940,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5398b1ac3b9bbab47720a1732948d5189a7f5fd82379828a2f22ccaab7f78c14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12350,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54f39b4afb61f85896682da43fa8b232d1a5fbbbec50c136d920b7166512f637\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16940,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5398b1ac3b9bbab47720a1732948d5189a7f5fd82379828a2f22ccaab7f78c14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2519,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"363bacf92cfbe880a8ffa163a70fb75b1d666dfcee049ee1d4dcb9b41d26a652\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77b4943a3dbfcf4f990576dd0e87dc990a6e6763e0905d4182e08fe17abec0bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2519,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"363bacf92cfbe880a8ffa163a70fb75b1d666dfcee049ee1d4dcb9b41d26a652\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e67e312cd0de8f7728fc9440c48b9895885bbc42ca88ec142c640cb0ef1baf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9626,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c09e6772fadd634f95c50cdaa55a7148d7962f124ff4c7bd4aaaf4ced31882a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"119e32f6b0998bb62b7d22add53f6b9135f4de9c614e3280755153f30b40b323\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48ca74886832840b23f140db5e4cee49f6cc3f1c34d10826d0dd4fc8d605bda8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e519b677c5eccab568014781c10b81105843db03d565a3562da6e8d3c684768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48ca74886832840b23f140db5e4cee49f6cc3f1c34d10826d0dd4fc8d605bda8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1b4970c29b06af83e71b338f04039469a8aa7dc998e368581fd881d2129d3ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6044,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d3673eb569f9ecbd94c15967da702ccfc9cfc97a9e34f3725ed38cf1e6a7230\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1b4970c29b06af83e71b338f04039469a8aa7dc998e368581fd881d2129d3ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 62649,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9abeff3d958b2a3bd18a0e66b1966fe27679a4fdd146aed8350710d7d4c4b388\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 48850,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19efd5b45d8d08cd615ab3e660a7818e830a5f4aa871f3f66bc56a6e130e8923\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 62649,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9abeff3d958b2a3bd18a0e66b1966fe27679a4fdd146aed8350710d7d4c4b388\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 18099,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d3386d4a0c4e7c0e801c0c9e307d0099cb01a447d92069eff86ca5b165ba766\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10589,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e8618333a4ca880b6c650f12a8e1342ce558614f04668fec20e275f380ed7a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 18099,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d3386d4a0c4e7c0e801c0c9e307d0099cb01a447d92069eff86ca5b165ba766\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 22229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c5032440eddb82de8238bb01ec25e389140221a57100472ebfcade9c572ca9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9b82b0a83ee9e9764dbf180099f39ca8f4485c9e4dccbfc32e2823156e90740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 22229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c5032440eddb82de8238bb01ec25e389140221a57100472ebfcade9c572ca9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13612,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27bc952bcff768fdaa733ecb60bbcaa7ac6d4f6856069660249a8e4bab63fc4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41b6df15e19383f9d08338ff27df546345607a2d223c03efdc20ba3c9695dcce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d3c8718dce68ad6fe6906f3087fa58566892f87ede37bb062c949033a3ebd68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4f00b602ca38b8a1ff5c170547c8e66dfcd333063eb96173c4b5ac417f412b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4f00b602ca38b8a1ff5c170547c8e66dfcd333063eb96173c4b5ac417f412b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4f00b602ca38b8a1ff5c170547c8e66dfcd333063eb96173c4b5ac417f412b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 36583,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a506630c1d3ae27e2fce6cfd3fec57d7940613662d39ed7e84f15a9f55747a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 20542,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41941d10c5bdf38f0d01f5346a85a2824fb66315e7330a005909edd693ef9b8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 37236,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1eb6038dd92cefa76aba6f6b016b20ce8967884b6e86ed015169b6b99980e513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11605,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bfa38d16282e252c7b0b8380f197505bdd563667c99868131a81ab36a440309\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"390ac834c7f3053c4abcdbede55b740abbbcc04d0f6877419f1fa05553bf61df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11605,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bfa38d16282e252c7b0b8380f197505bdd563667c99868131a81ab36a440309\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61c95fc8cbf4fd76d58f941cf6afde4c757a71f362fbb1111a301b88480af25a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3159f495b6ff5227301df923c133918c508fff8fdc80d73dce70ec44ae9df84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61c95fc8cbf4fd76d58f941cf6afde4c757a71f362fbb1111a301b88480af25a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 18603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b6e13bc37f111effb36757a45d8611d0c48888b0184bedc88ccec6007ca1508\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15003,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf207741f20de109292b58774a7b75d0eeb688b3fc2b0a24ae954a8ec1e75e97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 18649,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d056af338121cdd6d07c553affb360681103d6a973928917c9901d6589d8ff1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1495a2cb9930b5bcc4cc6ad5af7eee1752b64bd5ffede6ad164a98e95220d026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 16494,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e804ba5700387a5b00ed20742000b7e635488fe7208f8a3315a8c72e3e9fc174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1495a2cb9930b5bcc4cc6ad5af7eee1752b64bd5ffede6ad164a98e95220d026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47775f5e6149c49a9cbee7e17bd8fc819432a9072c2b570de85ce285c4faa089\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10747,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fec5cfda7847a2240daa9bef36489d60109c07efb1c9eaa2a3526932fab662ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47775f5e6149c49a9cbee7e17bd8fc819432a9072c2b570de85ce285c4faa089\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f559809ffc1f04abf78d82c53340d23d144649e206aad597ae97bf6486a02de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f987a22e71fd5098960abc0b800b66cc190d5cda1e1b7b3102c597687d9556a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f559809ffc1f04abf78d82c53340d23d144649e206aad597ae97bf6486a02de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1074,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac1bc9666ec3ada1a63c089372c04e50cbb12d396cb50925e60614aa0cc57002\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 973,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c98ea8d6822d0aa7bb25cb64dc31b3cac6bb13619a30bcccbfdd4ffc3f893ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1074,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac1bc9666ec3ada1a63c089372c04e50cbb12d396cb50925e60614aa0cc57002\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e293814a398a846efa9e069e09e5bb2566d980dca9498d7a5f66e5f9868b6843\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8556630a6793dd6de1953f493b2e806d391384389d8bb25781cfbf833a05313\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e293814a398a846efa9e069e09e5bb2566d980dca9498d7a5f66e5f9868b6843\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 72900,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8dbac34c03e4fec33bb2f2461d86f2279b890961656c099aac9615cea5f9fd33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 56049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ec4523ccb2bb1bb2ac397c0ed2fffd22743740f01eb0c42fb792839ec18049a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 73308,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7836454ddb785d426efc6bfcb4fa6b6ac3c974b6efd09ff260e61b497b40895d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04b3a134f964af97ae6c62e78dba35c992e4fbf200dd3dee9d41c8e460f74b85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"513c3743b55a2bdfc4ccec204de3b776b3e6fcad83de9d18c615c87ee708d7db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04b3a134f964af97ae6c62e78dba35c992e4fbf200dd3dee9d41c8e460f74b85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b972cd6db1b24889c2e7641c2eee267dabafba719fefa69445a6247a0273039\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 14144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc357cfe0919058a96c8dee5f24a367ffcbda2ecabe90b5544adb0b2cf9386c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20948,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f117f804cf3f9c4a5c5041f6014038da4445ca113b44fb3f63de7907513d8ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12668,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91c8eee1e644dcb49e939ea13bf1e4e8d400cb976b126fc4a21ce844d81ad59f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50c32e77bcbb2757b07cd61a5d692e24a4023e7ec55cadc916e17f7a1602ace3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13260,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d240f3548122fa1aa398cc4d64a3bf41c733b131d5eb5eecd02d5230188a137\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17835,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef10e6d8f70fe20bdd9b9b7ad3e0cd9c3195450aee1e59c7a8a6571eb1fdf172\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11844,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5f1dc77e98bae2a36aefe1b09780c5e04e827d70621ad6de74db8b192cde74c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17887,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df4e147f27e70ab5ef79feb209133f120a3d9f66eb74c7a86a93d5607b1aea84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19115,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e63aefebab5a6c2746edf507a858d84475070b50c0a88eda4d35aba1ab8abb62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"056542509c7b0c8a8adf285c01abbf5caa82dcbac7b59d6a693f94fd270a5486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04d80fc29f6eafe4048c37b767f7390190c8896035c59908805d550b6d0d5dce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15766,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb28ec01486cf66f4c468796ac4a0651627d466b51b5ec0ecfd280f3bd225bee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee8e7a1c7d5f2335ca3d1241771426aa61d5055045741ae90468b4076cc27405\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6e258baf04af3ddf659e556ecbae533eb700736dedeefda8374d6636ae2ed56\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a1b63d0ed933d72c276afc62b3412c43cdd2265601892f93c422c649ea00d66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"551083a8d400a9d4db89c6aee197d3498630fe384c72135d207f61d1ea4284d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a1b63d0ed933d72c276afc62b3412c43cdd2265601892f93c422c649ea00d66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cd90bf69a5afb1dacf12951f436c1f597cf8bd3b0cada4dd69ef4d5fdffa05d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b47512ee322231c94686e39ae3b03fab968f7800f1072f4698938957fbb88874\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cd90bf69a5afb1dacf12951f436c1f597cf8bd3b0cada4dd69ef4d5fdffa05d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 48604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e28c6740e03c13f3a27a5b538ccd0f00d7ec84609a308af64dced209959d685\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 42101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03cbf1aa8b7a162874c73fbb455f8a528d17254d0b9ffae6df80a4e2d2a28212\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 48672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3097e5aec0d7fa0adc523ec01a88a63de2744cbe3d95e16f19b99ae54851026c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_bootlocale.py\",\n      \"mode\": 33188,\n      \"size\": 1301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9f34905abf0feaf7db40193b6e34d2225ca8924c5b91cb40a1000b3cb03aba4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_collections_abc.py\",\n      \"mode\": 33188,\n      \"size\": 26392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36e57ff3a6481219af29a7b8c6eeb4ae5a703232df55f494f299d483ecba7765\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_compat_pickle.py\",\n      \"mode\": 33188,\n      \"size\": 8749,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71248216fb1cc2b9a0a1faa305daa8c680d9c637141cb2db283e407684209cab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_compression.py\",\n      \"mode\": 33188,\n      \"size\": 5340,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"326755377c7b8d98cf71333d62e5b4cb1c4e06519d704961da025f5933dee08d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_dummy_thread.py\",\n      \"mode\": 33188,\n      \"size\": 5118,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09c292c80346d122af79d64a20fa511a366eaf19e5561ff848cd766e363a4f0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_markupbase.py\",\n      \"mode\": 33188,\n      \"size\": 14598,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e4c98938db0d1932ab2ddc1a50b663f99b76e64986e2ea1232879a6dd34c559\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_osx_support.py\",\n      \"mode\": 33188,\n      \"size\": 19138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec8b5726de04e4fe0cf38613444758d3a656929ae53724d4dfae395a1e9eee0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_pydecimal.py\",\n      \"mode\": 33188,\n      \"size\": 230228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c375ff14f2c671699860846ca040cbba5d9367f6315e5ee890d69dbc14da156\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_pyio.py\",\n      \"mode\": 33188,\n      \"size\": 88097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03095178e084f7f65704110a7557b7e1ba161a749c96573acf4e898c0a349911\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_sitebuiltins.py\",\n      \"mode\": 33188,\n      \"size\": 3115,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9d3761e39a049203c19f4c4cd9259f3636f10a2c0f58cea579f0400fa453294\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_strptime.py\",\n      \"mode\": 33188,\n      \"size\": 24747,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"548ccd2eac49d58016a00660de1c1a3796939ad9e5293102685d166b69bc027f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_sysconfigdata_dm_linux_x86_64-linux-gnu.py\",\n      \"mode\": 33188,\n      \"size\": 26977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9e622347b71039eb3241146c5d15795191f627dd57e8e397d6df8be1e117695\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_sysconfigdata_m_linux_x86_64-linux-gnu.py\",\n      \"mode\": 33188,\n      \"size\": 27146,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58d67f0feaf79b3615136e05663a362806392475699030ed666a549edae04c75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_threading_local.py\",\n      \"mode\": 33188,\n      \"size\": 7214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61ba527d954d86c9db6eb84b74f98b5552fc7359803445a3c0ce34591252d97c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/_weakrefset.py\",\n      \"mode\": 33188,\n      \"size\": 5705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ef5a903b7dcfedf9cdf7bdc85dbbb466fa934eb6985cf4022e4601b86c234b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/abc.py\",\n      \"mode\": 33188,\n      \"size\": 8727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"899b1ad16e1be88c7febc9c82fec022752e86e8b17af21945aef9e9c9a8000fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/aifc.py\",\n      \"mode\": 33188,\n      \"size\": 32454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae3e99e3d6319ec172e74f6dcbc99e5ac9f61801614600b1743d854dce596bc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/antigravity.py\",\n      \"mode\": 33188,\n      \"size\": 477,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"703c075b720139e390d16836827d6c8452695b92d8192f333e4fe7e5b3d84d21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/argparse.py\",\n      \"mode\": 33188,\n      \"size\": 90372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"691cba856bd171bd655b6ffe3d760520168821df182f9757dbd33c7565d3ba08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ast.py\",\n      \"mode\": 33188,\n      \"size\": 12166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56d532b9b51967ccd68f5fb520e1fb24e5c43e010a06876aeee73f66b80af44a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asynchat.py\",\n      \"mode\": 33188,\n      \"size\": 11328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76c3c3b10276c70a15974f1b2f3a0c7ecf4fcfeefb3a9340e411e394868904cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2890ac5e22181b67787ce07c3d3eb11c0bbed17ae2c72231e752859f4818f566\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed085419f3f9e83e0012368752499d6b6cf7a6141e7d9d2ec724c5ccae7d55bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2de84f9b64c204bafeebf6c0ee740f4e31655f2b41c3563f2ef5112bbcbf0a9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed085419f3f9e83e0012368752499d6b6cf7a6141e7d9d2ec724c5ccae7d55bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 39109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33ead85e4c8d9a3762563a44b871b22aae7e55dfdfa30d40ff7c250990c8c910\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 31257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d11891b9b833078dcf7b7ce314c21e3a79c326714bdc98d05d5b984c0d752ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 39347,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e824d129ef1c5ee168ad8cd672b3c29480fff2bd996b69b1b4c041f1cc56fa25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d25ae0530e43f4ecda6bb132e238d9e553ecbb32a288c4a539bfb6eea303d617\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cac6724535de94f39cac1d97840dfa75da3d6feb108ab304173386ffcbad315\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d25ae0530e43f4ecda6bb132e238d9e553ecbb32a288c4a539bfb6eea303d617\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9168,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88d036a45a8f8e357b74d273654985f2579c21ce9757aa76ee1701c839b750c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2f288b9872daf61230188544ab5c7c6be774ac6a2b13a2e7744be2582dba9a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a9ee9faffcc115649e1d802532cff2846af0a2b925f20f8273b87d02474826d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bd9cccf306191ad699c7eee4f6596329f523004d32e0c180bb72c8c4704123b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bd9cccf306191ad699c7eee4f6596329f523004d32e0c180bb72c8c4704123b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bd9cccf306191ad699c7eee4f6596329f523004d32e0c180bb72c8c4704123b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 734,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bdba3aecd33c6eed4d34e73d18a610c7010859ca3d454cdf05685c815d843ada\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fa31ec6425d262c929ffd75f104949828ffa20dbea744cb9a435eccb7fa0cf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 734,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bdba3aecd33c6eed4d34e73d18a610c7010859ca3d454cdf05685c815d843ada\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e522bd38d505fc85a9562c59627a316110f175dfdcb5de55a2f6660cc39b575\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 226,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5afcf274f52d83bb8a937878b02146ed4c92f945098eec983aa0d45be0ff6ff1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e522bd38d505fc85a9562c59627a316110f175dfdcb5de55a2f6660cc39b575\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d9e63c5b104a574b3e0e2b77868751aba8467c76e860168a50895894175c2a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85e2379b3dc8d6b82c7d0883648ab95b274d76831fe1e878a224a97492bc9772\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8554,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13ef4ae1a62cb8257523bcd4d51452fb94fb07ed73aecb2918555085cc5a3488\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 25232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c4910518c009065f04ce57996ceba529851c3f3c676629a43da44b21987fd35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 17657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6310f8b27e1f0b05e1aa409c0b1575d13b8238bce62ccc20837958b452ec886d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 25340,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"363f35128c711bd37cbbd8fafb1ab2b4e777369ca9f1ae3158ff049cc72eac04\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7ff3d00318b81692a1b12ba3608c08ec268562b4997a30cb1467b539bb201af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1836e42e84a5da94f4848d2cce655a3dd67776b4082f013221fc4eb5314245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13749,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72e1596d72f9e458142a84d89e454ccc534564b9717444f7f6a3efbbc1f2507e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15450,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1031c2b765eef70b95e8a54bfbbf5f1f4d2ea8c0c2fb50ac44dd70702c6e961d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11b14d295603df39165e1977bcb5fa8e8dde2448fa003f7f95852a22a08284f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15450,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1031c2b765eef70b95e8a54bfbbf5f1f4d2ea8c0c2fb50ac44dd70702c6e961d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e85d20e9393290ed2aac04b71c2e2e85a7199bd0933ab95ab35a98aa93b25d8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0263472aacc70371f90adf50d678fb1ea075fa3de6e2b7caba203a086cfb6e46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e85d20e9393290ed2aac04b71c2e2e85a7199bd0933ab95ab35a98aa93b25d8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f361ab9fd4426b9a6e5c682564a654dd4121da1024482755173778596a5373d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 16239,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"516ecf1f351d6234d948ce89dade41d8ba8b8950473a2b915d12f89cbab0ea74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bdd59bd7cc26fe9d0c43694b7a227a396acf9b7b99dee9d5b261fd2d2970b145\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5979,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"342a7988c449c140970a6f75c5aba10bb6b8facefafe1e60ff348495327a49ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e2319fd54ccb04bbcda1350b75a8d1924fcaa9812be380cb9de778f6f966457\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5979,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"342a7988c449c140970a6f75c5aba10bb6b8facefafe1e60ff348495327a49ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8406,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acf631462663e983e223af142a9027fe9ebc4800e3dbc70a075b1807d0ffe63f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bda814783cf9f91415558c8deb4d75c25c555350c5ecd443d9996c6dd2cb237\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8406,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acf631462663e983e223af142a9027fe9ebc4800e3dbc70a075b1807d0ffe63f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 29511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b0b05cb8f685d22490a538a7e48fc2cadb09aea45f10240f94646ac8d02952d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 27920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47e8342e5b228f7b4fa68cf75693f1937b62d864d85e868f928b6c4dc52e936c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 29569,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da2d319557e1631478418828a572ad28f63bee124d6f06fb2d8c1d10e5f2d63a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbe4cc29af91cbec4d4db91c2755cb4a0c822a2ecfc0ce080be917186051eab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13313,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16f3e2e1eed28d4883b200e4e4d0cb9e1e0ffb43f8c4da398ba1e88c666b09f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70a1b20c0617776134b6c880367949baf1c75d2f9f606532c2978778199095f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19636,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acf64ccda39a0a48cb7f4c006557bc0459d2904c7be5ce6a93c6bcd7ab32d597\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13358,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17814b61f7692376074d67dc3e1f63bcb19e0477caff356521185b9c9e6308b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1730e53ed2ab3821c7c5c26b27b97b511dab762718c74ae82ef52417e1b55e88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6796,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b992bfb75aae3338f8808c714c8a337f281d685437a9d9fdb04532d5f2e83add\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6629,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0251fc37cf2db138a5ddedd852bef6d820c04ad58bb1230c7427b04dfad2c9f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6826,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a92f30f2078b934bfb334d9ea7bec25cb862d049c2108e112874e88cd375acf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 18917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abc5d62b92894fece88ecd8080504de5a2bbbd0759586d33e0fb17150dcae8e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12014,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d161bf86a76cf1e4867f077817ef76ec1efb7e4fe2c67f73a950f064c8dd27fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19095,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54317bbcc4fa7c5cd5e0c73980daa8a8e98774d227de478ea1131f547b2d8516\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0733f0c744a654fc161ff84251b05f184968da71300478d7df50c623a7f40d1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 16219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdab6161a7e856916843788259ed4be503ffc9a409abcb141ec5b06bbb964dcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8db97cb98f82f940902530590039ebfaf3d0234fcd656dafde44b70318f30b67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f0e345e20bc6bd4cb1de7d575afa181246ff361c45655517dedc3e2f24f5007\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fd133fadd1d9c0747cc19e085fc4c4a43aa8fed87528a243e08d006b863b683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3ff04fcc564ca8f9089c37f03a05a07b7ffc5e0cff02d145041f7a5bd018767\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 30214,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9292478b5ac55f1711a52cda360b1e8311de94aed26d911a6511c33b8f62cd78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 26515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8328f18b873cd01ed2524f89846483014288b5aabc1c227eb800e87be7e5394e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 30557,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6f4e910756e781bf464c36007868d758de738d522717e24da46f5d22db859c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 21496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dde35e34a9f2ab2fca44e666a66e6366841de1bf672f2d1f4fac91af30830b41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 20384,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb440c9c23bdb430084925eb9a8d6e3c20c7ac6d3022b71f6feeea2a48def7cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 21496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dde35e34a9f2ab2fca44e666a66e6366841de1bf672f2d1f4fac91af30830b41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7911d41520bb450b5d2c354af6940ad0571d968a2c4496b6c11d20fbb91f68b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4709,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47b0f56cd4b49fb2183edb123d633bde6e4fc7f5e360bdc15c7686846fbac1cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5384,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7799c98e3a529d3a0ed4d81d3b86541936c2da9bd20802c50ccc1e17b2f0a5db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/base_events.py\",\n      \"mode\": 33188,\n      \"size\": 57346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"653dea9f6a2a2711174a257bbed6bda2a3aff2f6d9b5f62e4a2da696e3c092fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/base_futures.py\",\n      \"mode\": 33188,\n      \"size\": 2074,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00e0386d0c138905c852df6f39aa00cbad412387d529c22e93012bb664fd5863\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/base_subprocess.py\",\n      \"mode\": 33188,\n      \"size\": 9096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eca93117f2fcc5aa16ec0353b08bc94dfb9742e08756bfb3775d40a5062b2fc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/base_tasks.py\",\n      \"mode\": 33188,\n      \"size\": 2186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"649cd8a7462f712f3c49ff35fbfa9c6812f40d47eb1933bb2462cdd304a4d860\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/compat.py\",\n      \"mode\": 33188,\n      \"size\": 543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"224cbb8c9232106d4484e8cb6e7f90f697ce6a84c2bca7f4f759babe5a078f70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/constants.py\",\n      \"mode\": 33188,\n      \"size\": 371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03ae52059bcdac6c2133a9a561a7f9107ee6edeeb055731445c616b54284a09f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/coroutines.py\",\n      \"mode\": 33188,\n      \"size\": 11135,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15ffac399e19d1d2a770e662bd54868d02c1d86aa0fc384bfe5a16b767a4f586\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/events.py\",\n      \"mode\": 33188,\n      \"size\": 23511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33e8b488badf85ad8781b6e22c5bc0e42837ec4c1fd58f9e425d6cc1717a9f43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/futures.py\",\n      \"mode\": 33188,\n      \"size\": 15901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0fc9aa0aafd0bd79f248e6c2a633955f4dd16d32cb6ae393b39b39fce01a5cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/locks.py\",\n      \"mode\": 33188,\n      \"size\": 15582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ac4214c53faf9014de518755692db485febdd4c15548dcdcdc9cf486b083ac5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/log.py\",\n      \"mode\": 33188,\n      \"size\": 124,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80e4cc3ded4b138baba486519e7444801a23d6ac35f229d336a407a96af7e8d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/proactor_events.py\",\n      \"mode\": 33188,\n      \"size\": 20403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9afcd7c04b33ce9a52071d7bef9cc3862b68a23c4f1ac36b04598621e480568d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/protocols.py\",\n      \"mode\": 33188,\n      \"size\": 4512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff913fa20e1f0da183c431e17eff186d38b78f9f282b33821db3dab8cf71cb10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/queues.py\",\n      \"mode\": 33188,\n      \"size\": 7957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24852aa90f29846bec832a2e95f3069c3eec95ff936613ed3f379d66b1cbcbe6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/selector_events.py\",\n      \"mode\": 33188,\n      \"size\": 41640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1eed1bbf87da4d32a9f1f8c6169235984763a91b0af6936533dc79039c934860\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/sslproto.py\",\n      \"mode\": 33188,\n      \"size\": 26005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da5c8120fc207d806b3f325231c20c49089d7868f8af2402231432647249d46c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/streams.py\",\n      \"mode\": 33188,\n      \"size\": 24472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b748ff8967442b7d3c8b06d58db81b9ef0234acab7620be7d61fb94e486b7cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/subprocess.py\",\n      \"mode\": 33188,\n      \"size\": 7626,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87c84b899ae458e58f4b5872550f6f3e8f93328f72a5e48c103498bcf270915a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/tasks.py\",\n      \"mode\": 33188,\n      \"size\": 25060,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cb101f9a1a6e7be287b6d69f342d09b426c6a9c909f800ef5a3e6e167aa1878\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/test_utils.py\",\n      \"mode\": 33188,\n      \"size\": 15091,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d25af76e266072106db79f9e37783bc925e33aeedeab30b4002946d3533955b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/transports.py\",\n      \"mode\": 33188,\n      \"size\": 10066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1264b6add166ade125e62c923501ef0e61b88d2bc7eac29781faafeb6e571971\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/unix_events.py\",\n      \"mode\": 33188,\n      \"size\": 37268,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6a962790e94ee28a82a0eea5f3665d084ca86cb6537dc2019cee942437fb1b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/windows_events.py\",\n      \"mode\": 33188,\n      \"size\": 27831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07117494d4f5efbff8e53d12c0d524afd16e9e6aef0fc92c48e91630c1f956b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncio/windows_utils.py\",\n      \"mode\": 33188,\n      \"size\": 6883,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7e0380444ffa0e0032fd2410cb9258a8e697082e9b00e0ff44c82e392a1ef4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/asyncore.py\",\n      \"mode\": 33188,\n      \"size\": 20159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69434664078278dcbcf5df6fb6c14891f60b72e4d7b2a92fe271af8eaf0d9f41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/base64.py\",\n      \"mode\": 33261,\n      \"size\": 20388,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7e4164fa339b02a168932c5b906e5b73de61abe807fe425124e9da913ea2350\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/bdb.py\",\n      \"mode\": 33188,\n      \"size\": 23556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a5f2d9c8630cb115a15c901ee3e2671bc122fa7b5e45c52710d0fea96aba501\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/binhex.py\",\n      \"mode\": 33188,\n      \"size\": 13954,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"725194a37c9d3dc75ff8f6843de625fea59f94cf38542ae6c5af3ea0a5f22735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/bisect.py\",\n      \"mode\": 33188,\n      \"size\": 2595,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c743dca30b4809474e1c5e5774922c25bdebfca0fdd3e9888964dfb6fcf5f2ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/bz2.py\",\n      \"mode\": 33188,\n      \"size\": 12478,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0418fe23c9d67914f7f6162c16e24c7bbef13533137cabf51c0bfd981b7993ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/cProfile.py\",\n      \"mode\": 33261,\n      \"size\": 5380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f253975a95654bf7e4dc83c3aa49847f8ea33024737eee3019f814eef965cb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/calendar.py\",\n      \"mode\": 33188,\n      \"size\": 23213,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd97284cf7df2917c0bc8672b40a48870c722b384a6665d8d3b5e3ea83d72101\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/cgi.py\",\n      \"mode\": 33261,\n      \"size\": 36801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14722d1b0249b09c6069be58afab9f6a742dc6c7a81c4d5628adf42c4b709d26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/cgitb.py\",\n      \"mode\": 33188,\n      \"size\": 12018,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6793fcf73fca7fdb51e3f118a5bf61b51692cb7b07827fab6b58e47e6a21b2f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/chunk.py\",\n      \"mode\": 33188,\n      \"size\": 5425,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3859af8f37ae6a55ce507b32e01d37e4eef16af76ce0637cc99d2e5bbeeee4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/cmd.py\",\n      \"mode\": 33188,\n      \"size\": 14860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b18b978b7f2e2a587aa77f0bc7a6130718c4b680dd19cc749eb2ee7eb8b9590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/code.py\",\n      \"mode\": 33188,\n      \"size\": 10614,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e694ac0e6d7eb581e81725ea6c2819096578ebd792ec6ab799893b5fd59d593\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/codecs.py\",\n      \"mode\": 33188,\n      \"size\": 36276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86cc1bbdbde916b92732b8813d0195c12c1d06eea277202118dc007637d0f725\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/codeop.py\",\n      \"mode\": 33188,\n      \"size\": 5994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1df789d387eeccef0b13466e2e80b7809a1c9f57ae8d40792669a4c890b03cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 45812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"825e0bbe2610bbe0fcdeb44b9c5584b45b80bf0ae14898c7e08764baa532e1b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 45818,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bd1f762bd7cf243d8a5d79e6e14450d087032ff4052ee1bd929b5002f950350\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 35346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a540530de2f21655756a68a4d824645ed0ac46fa2498ca0eba6f643bcdb17e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 45818,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bd1f762bd7cf243d8a5d79e6e14450d087032ff4052ee1bd929b5002f950350\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"476a82a0fe743a834409b8eb66fcb35b185a3648a8425bd9b2b0524a994176f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"476a82a0fe743a834409b8eb66fcb35b185a3648a8425bd9b2b0524a994176f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 185,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"476a82a0fe743a834409b8eb66fcb35b185a3648a8425bd9b2b0524a994176f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/collections/abc.py\",\n      \"mode\": 33188,\n      \"size\": 68,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff7e06408ce45d25e7bc473a9c8bb69b440be429a9d3bec6506b9c0721529d46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/colorsys.py\",\n      \"mode\": 33188,\n      \"size\": 4064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"134f6ffca766df778fc0aa49ada506fc1b351911da50fd83191dde19d80ea9a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/compileall.py\",\n      \"mode\": 33188,\n      \"size\": 12125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2adcfabad474466937803e24fbfc7c2d24af9d4dbd5e705e87c400834d12cb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87ad5c8954dd56fbbca04517bf87477ff4dce575170c7dd1281d7ef1f4214ac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f3cbdd8b706e1086ad08f7b464536e342c6f4ba6e49f97b653f24d9c1106509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f3cbdd8b706e1086ad08f7b464536e342c6f4ba6e49f97b653f24d9c1106509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f3cbdd8b706e1086ad08f7b464536e342c6f4ba6e49f97b653f24d9c1106509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8aaaf62976a6f64efb7b1e338cb775abab16ee46e3d7ac7f2a67efbde2abded\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d19d76880942b05288903d9b7c94b3275b8846f8c1d7a49814f6b5f1c9cbb4f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f5fc231bf7a86b76f0cb87b84e577561479b1da476f296ba4c9931bc13236c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d19d76880942b05288903d9b7c94b3275b8846f8c1d7a49814f6b5f1c9cbb4f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3420c466f101b2b5572c32d29b6a3caedde8feab990162c67ecbe61cafd06a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ae869b3990c688af2766fd1a83d8946e0e06342229fd4ecae88a68658e6e03f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3420c466f101b2b5572c32d29b6a3caedde8feab990162c67ecbe61cafd06a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15793,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65d6b503644dd8c7b98594e5f11d4cdfeaf1ccffed091d15c502b2e2175f1bbe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9666,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6871c541027b40f7107570a637a89951990d1e547fa6351a44a283cdf056e91c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"509bbce0e7a500cf4ce5284fbd099c88f4a562e21b7abd23c1cef63857509f97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3914,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3311e8192715edffd482b64539cccf856f89d8fae1b016be6f6ae473a79e8f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4ab772727b25b646334e2d16a1db9657e0d347aa2f5fbb8c4653dbfeae306c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3914,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3311e8192715edffd482b64539cccf856f89d8fae1b016be6f6ae473a79e8f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/_base.py\",\n      \"mode\": 33188,\n      \"size\": 21235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57a307ef59d7dafef4e2eb70f8c44903b4030dd57d85b11c0caccc62024ef464\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/process.py\",\n      \"mode\": 33188,\n      \"size\": 20492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aaf8bbce6f8d840f0641d9ad8e67c099516fae9ccdd6fdebe136f1a7f7c6cdcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/concurrent/futures/thread.py\",\n      \"mode\": 33188,\n      \"size\": 5511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29280699736207d24d37241cccbb89f66318cba69ab5be3d1eae826c07426458\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu/Makefile\",\n      \"mode\": 33188,\n      \"size\": 71683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6397202687bbd43c991201e587e07401f0e7b3d54823c290972454ecd6a1446d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/configparser.py\",\n      \"mode\": 33188,\n      \"size\": 53592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbb2f08fb6e296ce47b10483a0527bd1abba0020e34b3308ae491505f482af06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/contextlib.py\",\n      \"mode\": 33188,\n      \"size\": 13162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e616e9f16f30ff05ac7f60bb8be72704ec1d782e6e69cc3cee775d97eaec956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/copy.py\",\n      \"mode\": 33188,\n      \"size\": 8815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fb9475ad4b1f770717b6d21b48c1ccbcc67e8acacff8c9b22c4abe4eda2f618\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/copyreg.py\",\n      \"mode\": 33188,\n      \"size\": 7007,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94e53fb03522ff29949d88e4982d5ba1a98451b80fd06ccafbec29b95eb1b02d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/crypt.py\",\n      \"mode\": 33188,\n      \"size\": 1864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f420dbf9406b57165a1ab1fe392407b9007de709268073c6586164c31842691\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/csv.py\",\n      \"mode\": 33188,\n      \"size\": 16180,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f46b397bda6998a4b7083478f22cd02bd6454a3dd1219a5874562eb3784244d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 16433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef7bed390d4666e5c0c6b2cee1564d14d0f3fd5ec9cf40bdad262363bb8a6f4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15925,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de99151c75fd19f21cbf88d4d34c4fb7edc8fbf794512c2ab6f1dd465ff92e64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"367ced3ca47e08f73fa12f47bd5ec345c3dcb7c46f85afdc45d9397e0438e67c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15925,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de99151c75fd19f21cbf88d4d34c4fb7edc8fbf794512c2ab6f1dd465ff92e64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1926,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b09471f7ae5029ff2b71731b9b1d74ba4ae2441e9df53547d400e13a216f1e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1580,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"015b69fc67c9e3b54d430ed740baca896dfe7acbf78508916727b2eff9a738fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1926,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b09471f7ae5029ff2b71731b9b1d74ba4ae2441e9df53547d400e13a216f1e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c0a2933a677f56ec14138107511c3ca6ae2caadc9641faf530ddb286123f1b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6980,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a05c9884a011d764017525bbbb971426f924be8133f459fb11bd7450bba0ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c0a2933a677f56ec14138107511c3ca6ae2caadc9641faf530ddb286123f1b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"437f709bc35449f6da1212a9e375fd12199f9ae155a3a3c84516a6804723226f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"437f709bc35449f6da1212a9e375fd12199f9ae155a3a3c84516a6804723226f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"437f709bc35449f6da1212a9e375fd12199f9ae155a3a3c84516a6804723226f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/_endian.py\",\n      \"mode\": 33188,\n      \"size\": 2000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c9944875236d4227e8fd80ca0439417870ef387a532403393da91bf7ff67e16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/README.ctypes\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc29d1da83b6a0a09a41647e4111eee878ed079c2d6b54a98fd6d8b88dd581f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e77c01eec8f167ed10b754f153c0c743c8e5196ae9c81dffc08f129ab56dbfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cee7d895ff7727631416227f3a7b67e7e272b47933fe316e0913df2b90215c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60a3b61d224c76579e6b71e58b55c7066f7fe7b045a4d6d4dd6f0c95b8e98c16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cee7d895ff7727631416227f3a7b67e7e272b47933fe316e0913df2b90215c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"587695ff6533b3c172f92286b0c3e68038cd2658fc28c04ef86d045257b13b4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7cfa89e09fffdf77f5b7bf9f9a571b45fb1f14f307c535e8a43c3f98e408e584\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd04d3ad9c2510b47d30ebee0aeda036420857678bc57242412b55258e78336c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7d6b947fcaddee53a68032fde009bf9e0ad8fac649adfee874e6a885ac75623\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 859,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f82dd8e25e53ba60437b73c614562c3fbea4c533d6fb3487a9d9bda18a5432c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e13a65521753de18498a685c6c7365ed19abc718cb69a454cd5e71aa1fc5933\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77ad02a44469476a593223584d74e310a6c1e4fcefae38c7ffff5c72797a18eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba84a467d66a33279bd3842dbc655233395b4c1864260252c652f958625c3f8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c78581906dfb2d6f8bf08534bae08b2b313bfdb04234bd4714836998452ac4ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/dyld.py\",\n      \"mode\": 33188,\n      \"size\": 4933,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a70186d3f9aa8f54297469cf3f560f631b8de18a24d9572bba4cddbeecaece39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/dylib.py\",\n      \"mode\": 33188,\n      \"size\": 1828,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17de9f3d36c6ccbd97ed4ca15a908ad06663a84aa5d485714b202db7fe8e171a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/fetch_macholib\",\n      \"mode\": 33261,\n      \"size\": 84,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9f6faacdb1aa00ac2f68043cd445171de9639a732b861bd5e64090a2865ab23\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/macholib/framework.py\",\n      \"mode\": 33188,\n      \"size\": 2201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf15187b7ea40c0255f14095e1091c13953c2efd98d96b409debc67669defc56\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/util.py\",\n      \"mode\": 33188,\n      \"size\": 11749,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2238b7df25a2f1391b600c8488e48f167ee70a079b4d82b9f2366b33ef54f898\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ctypes/wintypes.py\",\n      \"mode\": 33188,\n      \"size\": 5628,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8f29e6cb1b05223e423391242f671381546130acae1fd7baafb65ba849f2a00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 3366,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8cf902a0e85c6c0cbf78159e5a83ef8415357a267c2da16a026076994042b946\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cf4398699fc64c6f4bc4a9edac7040d6e243da4c2a2fbb8c621a710ddc76fe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22c6c3734cca77058ae67ba51165034364beee770a0fd0d0cfcde7a44d85d632\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cf4398699fc64c6f4bc4a9edac7040d6e243da4c2a2fbb8c621a710ddc76fe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98f334225235963e4a30753800adf8373eb4aea795b869edf5b6501e14cfd196\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3855,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57f148583d3cc01d6faaf585d2e7184520c42366e9b61e1357950b31e567b2fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98f334225235963e4a30753800adf8373eb4aea795b869edf5b6501e14cfd196\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4247,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5925f89f436c91f9be1a55597ce9de542e1ca0cb9f4ecfd306cbb3a262e318c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4247,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5925f89f436c91f9be1a55597ce9de542e1ca0cb9f4ecfd306cbb3a262e318c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4247,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5925f89f436c91f9be1a55597ce9de542e1ca0cb9f4ecfd306cbb3a262e318c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 217,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"273ddf46f8bb14a497486574c4cbeec315c924aaedd0067ad829133fba9d09e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eead0db5cee14e57506fe793b29632a531d1600a573351757ccfc01103f83893\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 217,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"273ddf46f8bb14a497486574c4cbeec315c924aaedd0067ad829133fba9d09e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"482559eb0de9bb61fc5695383afa45912ccc923342f9ec81a8bcde6208385f62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efb2f9973cca7691c182b4efb6d3d07b20947cda6da69b8a380397a58969b98b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"482559eb0de9bb61fc5695383afa45912ccc923342f9ec81a8bcde6208385f62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/ascii.py\",\n      \"mode\": 33188,\n      \"size\": 2547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf0137c2143c5e5bea2ccd25bfc61f3a274c5d8fdab3bc4c2c7329412ce7b656\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/has_key.py\",\n      \"mode\": 33188,\n      \"size\": 5634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15a052812d9ae80124bb25b3f5b9ffae38e2b03073774e163abf3d773140cfb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/panel.py\",\n      \"mode\": 33188,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13ef404a30da1825a612ca3e453db88c305d45deef4441c4c9e2ef7ee0ef50c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/curses/textpad.py\",\n      \"mode\": 33188,\n      \"size\": 7657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbc4634b3396bb6aa89f186206b9e236047e443ffd727116f45b537f4dce0759\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/datetime.py\",\n      \"mode\": 33188,\n      \"size\": 82034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a2cd7048ba27937346ba657499442fdcf94823c9f2b53f4c8f3e2ff61159add\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5783,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82cbe361d931d58c3785da0fe2e91588660c481877ba3acb84a641f4cd96e9b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff9464142c2151e1475387e9d37eb42576bda26cfcca52fd900efee47e8621fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e7cd896be160a945b416d27f31b8d72550e7f1020291dba2bcae38810d11874\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff9464142c2151e1475387e9d37eb42576bda26cfcca52fd900efee47e8621fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4bc6261aec0f7d5a7f90f1974e805e06de36b9ca550e875549eff14231a8923\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0791dc0fd54c51756178e3c883272efb92eb16986a599d130b08842679151c1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4bc6261aec0f7d5a7f90f1974e805e06de36b9ca550e875549eff14231a8923\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af75b338dadc2744806d4312a1561ccec7e52f5713d29be440164d416a529793\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0c23b48296164491fdb49fb52c81564c1e442abbfb824aad96a23be006c9791\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af75b338dadc2744806d4312a1561ccec7e52f5713d29be440164d416a529793\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44c1dde81bd2f0bf49697473accf96fb5fe9dd411444cd2398aa73723cb89e2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6517b7ce151fbe331bd4938a2940402e0228cc6111d50768074b0debc56681cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44c1dde81bd2f0bf49697473accf96fb5fe9dd411444cd2398aa73723cb89e2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/dumb.py\",\n      \"mode\": 33188,\n      \"size\": 11989,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"894ecf660d37ac2e1cb6ad2361fe9345afdfe4b2cc809a3eef41b7b8ee56a646\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/gnu.py\",\n      \"mode\": 33188,\n      \"size\": 72,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36cd4904f50e00c4df4ad9d450b3970e150957425f47c00cf979ba73eff49778\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dbm/ndbm.py\",\n      \"mode\": 33188,\n      \"size\": 70,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bcc2d9b2fad1901f3421a174eeecb5b8ccc6763283b87bbe0705b404c71904b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/decimal.py\",\n      \"mode\": 33188,\n      \"size\": 320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"000c00bad31d126b054c6ec7f3e02b27c0f9a4d579f987d3c4f879cee1bacb81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/difflib.py\",\n      \"mode\": 33188,\n      \"size\": 84377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d58cdf9944fee6e2bd4513d5f172e34b3b29967bb5d1a6aaef983e34381f0023\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dis.py\",\n      \"mode\": 33188,\n      \"size\": 18132,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa85b95f39b3f4b4989447f74fc51792054e7a02b7a948ed6c589d203fcf852d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/README\",\n      \"mode\": 33188,\n      \"size\": 295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c8dd7dc035b7050c051056ddb91023a0ec92e6582a0987de13953551eca2759\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 236,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e2c4b7ba17bd010296d63aab23e13145c3da3552700bd09032489db88eee0af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 378,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e37dc16b7f23d40dcf76b69ae1bbe7618bc10568b9c3b9e60f983780f5dd8cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"296422d5e0d9368c163df03c228d29e5eb73a89ecad54fe475553cc9ac043a7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 378,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e37dc16b7f23d40dcf76b69ae1bbe7618bc10568b9c3b9e60f983780f5dd8cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13501,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8251968e39712a20cf849dfbdc1887c9f7e01e8a12fd80193eb5f95529a8a06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12689,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86cf6c24b46dff88ec873bcba1a51a3459f99b692a2a7f59299d42af39dde570\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49bfcc9f9616028cec898a3fc898ab8de34866e3db61ba7033c14e0a84648bb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4556d6924d1f7146f5cdc92aa77d0dc43adfb52a9f4ce05cf2f501000ef5a2c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4486,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1587652fd4b5a68806d1bee643fd549279c848e514063976c7681d794420d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4556d6924d1f7146f5cdc92aa77d0dc43adfb52a9f4ce05cf2f501000ef5a2c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6481,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18d54d6eb4651d843b1ca0fea47063bdb793a736ebe52aff93c8d5108750eeda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6193,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4b5ea952c6e3ab7b5631412a00e555028a7b7d0b486952628623097c87de7ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6481,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18d54d6eb4651d843b1ca0fea47063bdb793a736ebe52aff93c8d5108750eeda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 33220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d020d0402fb4f1a13fe343f49f4a10b83c7743332c920fcea20cb0cac20d0013\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 16870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d9125aeab89954025fff55b909ab27352f46e0c2e242c4430f44513644454f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 33347,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28090406daefeb916ed3764dc82fe071e293caaae961bd95e5559b0da3b78ac6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14988,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7d4d7a8e20eb1c7b11ef72058e0caa8231da721a68364747e70b2347bec3867\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3842b6eb8b104b2eb9dc3f5819b25bb9e57b92e68fca7c3774a99b03aef7172\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14988,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7d4d7a8e20eb1c7b11ef72058e0caa8231da721a68364747e70b2347bec3867\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a72e7660c4a6b5445dc388e4e44560a56bcdd693dd0b310df353f6769493deaa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3095,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"614505b2ead1cef2cd1594479f29ff6402a3ca4e9e2e55c4d70be513b1f4b09d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a72e7660c4a6b5445dc388e4e44560a56bcdd693dd0b310df353f6769493deaa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d289f33be22969387f6a6c8919f86b4f112207e592e26469efbb09b1d30a59a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da3ed0ab1c53a6529567501d2accde65e2bf5f74413c99020150866fe94b3f38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d289f33be22969387f6a6c8919f86b4f112207e592e26469efbb09b1d30a59a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ae4d28133f682be270890e9b9249f8ddad476fddcad6fbef7163193215c06be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8952a8a8bce704a130f16077b53f32764bf9ad68fcd1f755d76b149c35b085b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ae4d28133f682be270890e9b9249f8ddad476fddcad6fbef7163193215c06be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0d27b0fd8f4c20b0c27a51cab2250ee134a904696511f56c729456ee3454ccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0d27b0fd8f4c20b0c27a51cab2250ee134a904696511f56c729456ee3454ccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0d27b0fd8f4c20b0c27a51cab2250ee134a904696511f56c729456ee3454ccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0210a0928e8122b503c13aca687c36e4eca6e1beb6ae1769f60dbc9a96b4d927\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1260,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99bde948b2ae2dc9e9aa6e713ab7f0076196ae843af37ed0ca7c00005a221dca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0210a0928e8122b503c13aca687c36e4eca6e1beb6ae1769f60dbc9a96b4d927\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5804,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e29001457dc45836c92c8742e9f9877666d17fbbebd80e4ea4f43a9aff83e6e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9a9976bc243d4ad0f51fb3dfed966250a16c05b6abb7ca7a1a5dc0485d60f60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5804,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e29001457dc45836c92c8742e9f9877666d17fbbebd80e4ea4f43a9aff83e6e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34213,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1441fe39adf5946a52b9297d5519f8a946c4a61746b887c4d99599fbfb197c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 24917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"807f544f00dd5aaae70f1145e9adff1ddd818289886b4079718910010f92851b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34213,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1441fe39adf5946a52b9297d5519f8a946c4a61746b887c4d99599fbfb197c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5474,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5596537ae13c007516a9e6b3e4888368646d38afaf2863cd54c87441787ce10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2836,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"705e67fd799f43ee68ebfe4f453511f9c26c6e0b3a901017e66623738c282db8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5474,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5596537ae13c007516a9e6b3e4888368646d38afaf2863cd54c87441787ce10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6950,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"babd94e3800dd53d621854e3269fca61d38a44a190fbd7b58243d3e14d50072d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca39bfa3973d2c30c778e49900bf5d21f6d0d85d741fd0c503ac182630d7f6fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6950,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"babd94e3800dd53d621854e3269fca61d38a44a190fbd7b58243d3e14d50072d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd343279a47e097d0b0c9e139465343f76e7306522bd74bcbd061340dcc5ce98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acf985d68256e28fcad2aadbff57ff44b666bbf3032f5e7b85d465555f3d29f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10653,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ef334c7b2e2d05361a6046d23fb08010130aaeba2a627583ab1e9c2b23234a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26cd5305d748a5b1a5a0f046d61ca4eb80778b606d4c0f867768610d1529a536\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"749d099fa7bf9de1184774ea1cea449aac622d60ce96515ab92c0980c8bfafcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26cd5305d748a5b1a5a0f046d61ca4eb80778b606d4c0f867768610d1529a536\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fccb526d9efd92323dee5d5f5298a059f6ddd78a24b9d221c170184ab446c69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10ec344ff4e221336ee9b131e666711d9b6fda6e9e93265bd60769b103ce678c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9865,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6dbcf34c26ab34b58b932c5d2dc7b60f4bc1a50fb308a6279559621c557e1b1e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7522a67130b76d01b407a937dc05fa1ecd3419f8951a0126c0200e0fc53cb425\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfb5492e94be163a3e3a8122648cd280209ccbfc6375293a8cbd12fd01a6fad8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7522a67130b76d01b407a937dc05fa1ecd3419f8951a0126c0200e0fc53cb425\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 17381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fee786e68c8d3c446811e53e3ced971bcc545d06fabf05a94c2d293923b22098\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d4cf511c8dba6ad8ec832d9934726883132486ff8f045246edb10f42d0e1860\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 17444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cad0dc62ff39e8220e590f663614d8cc65941a695ea4caafe34ff61cb176592d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"237345968560983bbd6e207a1548cbed4b0cbbb13807a3b13f50ef286fd593cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12987,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdddac3b33230f8de4127074ed6d2070bbce06288d39667761ff34b6d115b66d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"237345968560983bbd6e207a1548cbed4b0cbbb13807a3b13f50ef286fd593cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a00558832e6a845f01a71558d324edb464365512c324ae77aa377fad277298cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3689,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d9a45040d656bd84a334931775a7a6c30603d46d3310e946b2d264910abf8bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a00558832e6a845f01a71558d324edb464365512c324ae77aa377fad277298cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11946,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67a21b4e7f0c0d8d33e66a263d19b5fac86528000a5d9f257e106ae37302d411\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8461,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ad59805152f2870aa78b6c12f249b774e267c3296b67b9a417d51a652b9a088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11946,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67a21b4e7f0c0d8d33e66a263d19b5fac86528000a5d9f257e106ae37302d411\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e438e74f9ea0515dc4981a8a155a4783d73b138f86fa06759d4096434af88b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9744f9944b4b46868fe43899c61f83c9e72ffc24d22ce082135f5befe08ac377\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e438e74f9ea0515dc4981a8a155a4783d73b138f86fa06759d4096434af88b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6851,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8e9484fb5b7b842784b9cae73dc68881de5dd02f7cc9f2907ef5fbab66845c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f72324196b94c24519758e639e1eb589c747ebd3ff3f174fbf0d1ed19296e00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6851,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8e9484fb5b7b842784b9cae73dc68881de5dd02f7cc9f2907ef5fbab66845c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15523,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88691fc034cac1d103158d8c1a4a325e3b1de5050334c976d04fda8d78403b48\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9462,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a4d8e0b57577d95bf7bd31930357c9a92ccdaa665677a30955868af05bb717d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15523,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f90b371d05b43ec5dab868f95c04114c39e8bf5c71d375cfb511d6609ca487e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84e310e2882e876d5546c54251b4be473452bb20436c556b033623f7e85bb26c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff40c41696a51bc66ec60e290ff188b4c5b0c575ebbeed382a31c221ef62e25c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7354,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"366d5cc6fa2d360616ac351509af68cf2ed47a733b14f4727705d42ef936a06b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d930e295850e0b9303fb8eb981ba5bb1172e6842a691cdc41c5a7c20cf0617e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac0624241eeabb0c7598c45a9fc533ba3aca532deae00dd2484a08a013e0930b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d930e295850e0b9303fb8eb981ba5bb1172e6842a691cdc41c5a7c20cf0617e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/_msvccompiler.py\",\n      \"mode\": 33188,\n      \"size\": 21579,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c29ae381d343690369cc71482c9259acfc7a2f3e77470b1cfea9542ac3ba984\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/archive_util.py\",\n      \"mode\": 33188,\n      \"size\": 8518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"271685f68d5dd86a2e4d87b27fb48b82c267b09077d3358066e5584998eaf3b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/bcppcompiler.py\",\n      \"mode\": 33188,\n      \"size\": 14935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c086082101989a2d631e7d8c7cd73ee70f4424e7161d37b180de82b05034fcc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/ccompiler.py\",\n      \"mode\": 33188,\n      \"size\": 47415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc5595f40e1d5fd68c3f1ebf681c9bd1aa859703a3461939b55956a12f77d0e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/cmd.py\",\n      \"mode\": 33188,\n      \"size\": 19129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"628a7dfce087cf6219058a464b43a1aeae9f25a2c3483978a3bf7672274f1a2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9303eae5343973788f9cb1b5875c58c60fcb8e62a00b31fc963a14f8f670ba8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6d6786ab788678af9ab40b98a8dad362e30021e25fe7102ce90a6c8d9278d4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2348d54b7c918bc58705ebbd3b32f3ee0176a0af5640d1f3e0956eb1726700c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6d6786ab788678af9ab40b98a8dad362e30021e25fe7102ce90a6c8d9278d4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e6f33ac05f9145d0d7e456861cdcccf9493e1cec6258a6b4db56d4005b4b0fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f6172a51c6ebbaf93bf121cda78c4f64607ad100867a033ca62e7d019ad3ed4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e6f33ac05f9145d0d7e456861cdcccf9493e1cec6258a6b4db56d4005b4b0fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a241b8e01a5c5b44b3ba4b0ac5467028e5a5faffa0489e263683c25cc4378e3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e84eef144b57e6315fdd995ed4732e4f6920028efc529502bf32937b9f8287c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a241b8e01a5c5b44b3ba4b0ac5467028e5a5faffa0489e263683c25cc4378e3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 19679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b28375d072eb388c57d621ca3ed4afe04455be45ab52c0f312cdcc882d31ecc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58d972b48ea531b32d2572f5a1d21a0964950155cfc1af75f067feb095efa616\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 19767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec2001cf6f322a8c3ee29347f04b1f3696fbdcf997a5f75d1a8f4fbfe0fcbd3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ce7aafeb5627948e77e7fd70198a00cb953710f32a4eb17019172539c97e970\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 12685,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c17197943f28a0499e6750b49e2c70a73fa5028b4de640c4cbd56d130607b5d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13070,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2692c5699364cecb981a351fb541d5efc899d22845ec75b09944fe08e7cdefbe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd5780434b9bef6a6b356b0c3cc2543eb52baf5db258352b5d157f1a59a5e066\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b75cb9f973cf337244a7fc26324967517dd7294417510064afdc76ba78362687\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2c813ad93f6b345f253ae93757a160c97353d39af5d73d7e60fca471cf9dc4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15cd71e4a085b378469b8832c68f026f2b637707738fad328c88e6e289ba8ec3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3982,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d14349d153664302d3bd2d774aab6bc1c59087eb533fcd0a6745135d8f26e25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15cd71e4a085b378469b8832c68f026f2b637707738fad328c88e6e289ba8ec3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbcce7895b0a40f894c2cfe1b197632bf412a0f5431d4539f26e54eb15e66ff1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75602eb10e5669e5dac45820a9da625f82ddc27be1baada03314133c8a216440\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbcce7895b0a40f894c2cfe1b197632bf412a0f5431d4539f26e54eb15e66ff1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"783a95bdf7a0fa22b7000a76d4d689f0863a61d2005744c25ea576d9bb6c3933\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 14600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c16c6cfea2b8b9ce699b34ecdf3ea53c0b18c9a17f4a74d1d9a5935a9ad267f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"783a95bdf7a0fa22b7000a76d4d689f0863a61d2005744c25ea576d9bb6c3933\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06ee2cc25eec9e16d30fe0e3e7b07c20f5e0267bc205cbd64477ed4ae10711dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9250,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05ec1806bb03ac02b00ed7f7f5ffe13b3de381deaf0f5bf854224c4ebeb3ea2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"163d1deb251f257770a668ebdcc8365fe6a187dce7e65881e681515b43728ae6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"369275babb5ac75e8ad7fb09ce1672d723b4b3c5eb8af4409f9b6a95edc4fc9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3940,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80a6fc3cc1051caa4cd02b3deea3f08077156b383ed8a0658f00c020bbfe7c20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"369275babb5ac75e8ad7fb09ce1672d723b4b3c5eb8af4409f9b6a95edc4fc9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec5cbe627ad90b9926b6bc8f2aa7fceeae889b67e78dfb18f0dbba90bbd1fc2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d65362e5bc222c637d64511945b219eca41fdcbc54dade45fdcdf74fa930eac4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec5cbe627ad90b9926b6bc8f2aa7fceeae889b67e78dfb18f0dbba90bbd1fc2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3ede3a4f126038cf1e47e9959722db1d5002435bfda9a04491f11c539cba9fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90cdb2044e3e35895c6542921893e9325bde26da71afdd07ef6a5b5c22845c34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3ede3a4f126038cf1e47e9959722db1d5002435bfda9a04491f11c539cba9fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28e83896dca901903b1e28795ec039ccc4b7361ee2107ae1257d9c83a52a1e2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6998,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfdeda16ca847cac7c3cee3064373ac9cf223a068161dfeb400ad5ce38de0e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28e83896dca901903b1e28795ec039ccc4b7361ee2107ae1257d9c83a52a1e2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e5c823e07779176ab34329c7d2a3e145261507831ce5aaaac4a2175bf396cbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13180,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f6bf4e98f9292cbee1cf717ba92c50a0389f21688213b6336e3b3db7e4a3e12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e5c823e07779176ab34329c7d2a3e145261507831ce5aaaac4a2175bf396cbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c76d5d08ca4b1bc85df2c07a93e55bae8a1b6f975bcd839f88a4b7eda677496\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e06b3eb84605bef37c6fa892bae3e1334b8d168608fb97b0f67eae4bfffab4fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c76d5d08ca4b1bc85df2c07a93e55bae8a1b6f975bcd839f88a4b7eda677496\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"951beaa578d4496cb1fc3f92fd8937779b1a41ba0a4f01095c9461b81f24dcb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbfe0c793524b9022397df4f7f17cd9aacdfe1a69c0c386d99b6ad770da85f35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"951beaa578d4496cb1fc3f92fd8937779b1a41ba0a4f01095c9461b81f24dcb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"092d35b3086a3aa6d23ce836fe204e7225386d0d4989bf2bef11f20503d5b2c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9722bfc646b5919fc9749da5ebef07d78365559fcf5dcf7de0a9ee0967090c67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"092d35b3086a3aa6d23ce836fe204e7225386d0d4989bf2bef11f20503d5b2c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b121a5aa777e04fa7b36077ec41e139137da426c4b0efc39418a6ee1e330f3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83492d5b68b80a8ba7053302ce6b0d4c06ea171a14ab2bbe21594b9d48e1d692\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b121a5aa777e04fa7b36077ec41e139137da426c4b0efc39418a6ee1e330f3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2190,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a26fa98e841e7ae341143c923a3236c457e3607bce87dd743c4a6ac35f1104d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"155ecc1dd39c7ed26dcec1474c16732eeeb4d54623089f34098ec002894601a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2190,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a26fa98e841e7ae341143c923a3236c457e3607bce87dd743c4a6ac35f1104d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"071fa621e0e19b834e83eb7ff13dc111e42dc438fb1c17a57176337eb525ddf0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"665c6fd585bca32dd9a2a0bfc71a1b6e3bd522b35d36dec2c1273b1bb8afdb35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"071fa621e0e19b834e83eb7ff13dc111e42dc438fb1c17a57176337eb525ddf0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b6ef53413305c78fc17ffa87c1f9a8f2f7b44431f38a97419b149024e554ad1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9922,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"139de865d32471cc0c8a9b2ce07ebbeed75a332cd3b018630095ddccc6b47acf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b6ef53413305c78fc17ffa87c1f9a8f2f7b44431f38a97419b149024e554ad1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"936a7465eb4f1e5699742b63a264d667cc142c69a4760c462c944201752bbe8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa34d8a6920aa55342116ac678a1a321f5dcb2a02697a4a3a23805c17c8f1ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"936a7465eb4f1e5699742b63a264d667cc142c69a4760c462c944201752bbe8f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/bdist.py\",\n      \"mode\": 33188,\n      \"size\": 5562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db3e1eb9d465fe7ee6de51bd95e2f4218a9eb386ec9bc7347f17d9ba269f8cc8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_dumb.py\",\n      \"mode\": 33188,\n      \"size\": 4913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"053babf63708a69c8fecf89abe37ec93b623125aafc5e60eda7a54c8f3ce7a47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_msi.py\",\n      \"mode\": 33188,\n      \"size\": 35233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e556f496b600b3247186209d966e5313671eee17e5f6ec5eacb97e6b21fd083a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_rpm.py\",\n      \"mode\": 33188,\n      \"size\": 21671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27088277103866d6cb6eff58368385c64f2f22a6e5d8d93230df2178ea66a62e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_wininst.py\",\n      \"mode\": 33188,\n      \"size\": 15560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f83b54409b82154a715ebb09450cc24794300fa6851d9edde6b32c50f739732\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/build.py\",\n      \"mode\": 33188,\n      \"size\": 5748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd834b44e54db72e3357404c1835ac1767fb9bce1cb112482649a961adf58d87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/build_clib.py\",\n      \"mode\": 33188,\n      \"size\": 8022,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e05531e1dbc78b400d86930ebc6a602977f8fba90057e0c4c8fb34ef00afc9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/build_ext.py\",\n      \"mode\": 33188,\n      \"size\": 31486,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01bf18ac03772f1188832b0e6e5c853336f44784c8e125c8cf77208cb70c0113\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/build_py.py\",\n      \"mode\": 33188,\n      \"size\": 17164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9198159d5de5bcf1621301d548ab1168a78574b67b7c334d2621ee4d1d19a6d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/build_scripts.py\",\n      \"mode\": 33188,\n      \"size\": 6232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68ac9c2493f1dcb7d9d5cbd981225ac670f62e7bd1339589fbcc64a5d81c2ec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/check.py\",\n      \"mode\": 33188,\n      \"size\": 5496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62ff4b331d77020b7e0ccaf5d8fb96fb164216a00db36f484578c5df948dd1e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/clean.py\",\n      \"mode\": 33188,\n      \"size\": 2776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d930ade3baeee2165933445f55f5188f96dba6272918b3f8421c398c1b6fa7d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/command_template\",\n      \"mode\": 33188,\n      \"size\": 633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c1c707cd6ad3872515cf3fc9d8dd1a3f7cc08e3eb71813ed427499b256a8751\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/config.py\",\n      \"mode\": 33188,\n      \"size\": 13086,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e39704e9e173b6fa81f646990a29f3051cecb1cc98e02b029cf57b0d5aa6642\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install.py\",\n      \"mode\": 33188,\n      \"size\": 27271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24400336e7448526a8bd0c99c43aa210cb61cd7480b1e133d93754adc657ea5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install_data.py\",\n      \"mode\": 33188,\n      \"size\": 2822,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62118e0308778093ea17b7a6e57034ae6a51e36cf56cb87cd28a049730f252f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install_egg_info.py\",\n      \"mode\": 33188,\n      \"size\": 2603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d245b496254c79a7648d7d197117cca6d2857a7d3b1b0ea0cb0d551d3e4a2307\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install_headers.py\",\n      \"mode\": 33188,\n      \"size\": 1298,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d0ea27646c80dfaf59635c23b39ee55432f385a47067e9c2b45b3f6020cd9be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install_lib.py\",\n      \"mode\": 33188,\n      \"size\": 8397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f40a1f47e30ef6502d8f0c2eba40a9b5ea4e68910a3195b65478b2479854ec70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/install_scripts.py\",\n      \"mode\": 33188,\n      \"size\": 2017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc22d4790c06251718da48a4edaccf327e4876d0c2ae359d52f675921946e9c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/register.py\",\n      \"mode\": 33188,\n      \"size\": 11712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da36aaf7debcaedda9b91543071d476cd897bf6eee3a4f22744ff894f7ffdd53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/sdist.py\",\n      \"mode\": 33188,\n      \"size\": 17826,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"045c17be9555b3c07f07af2f740645c8ce53bed1dbd386d485490926b651e94b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/command/upload.py\",\n      \"mode\": 33188,\n      \"size\": 7671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c7eab9f5695ead0cb2b27a54e1671ecb1eaf4316def4862e3132ba9c7bdf4d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/config.py\",\n      \"mode\": 33188,\n      \"size\": 4880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f9fc724465879be474505c7b32b53cefdb08c93c5509162866af919b2c77f08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/core.py\",\n      \"mode\": 33188,\n      \"size\": 8876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8db74e92938ad3dc62fb9eaf861c2f9f77d87612dbe4324ef2adcad5f9d0cf44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/cygwinccompiler.py\",\n      \"mode\": 33188,\n      \"size\": 16475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"124163dd246c65c3b1d1d12abd99bd7173148d125f4191f2d68199728475c0b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/debug.py\",\n      \"mode\": 33188,\n      \"size\": 139,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37a32b4c0a8aea5f52564ead5b0791d74f0f33c3a5eea3657f257e9c770b86c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/dep_util.py\",\n      \"mode\": 33188,\n      \"size\": 3491,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ae47d230fe3cd9464c9e989e475fcac1ff0446c642017019b5aa1e78afbce19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/dir_util.py\",\n      \"mode\": 33188,\n      \"size\": 7778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5308413944dc57ae464f071ee123ee4d747c67cab72d811c9adb6a7066f46d8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/dist.py\",\n      \"mode\": 33188,\n      \"size\": 49690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05dfc78f8ac34fcdcbe7c61baea225d7ce9fbc0dff5c94b19c3fce0c7e0c3cee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/errors.py\",\n      \"mode\": 33188,\n      \"size\": 3577,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62bead29919dcc1a0d8b9def06d8aad1427ffd7d390a6c5275026a3966b0e926\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/extension.py\",\n      \"mode\": 33188,\n      \"size\": 10515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d36f74340a87af18a62fe5d5f596cfbe2e7f2d941d3e5043ac8bd070ce567eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/fancy_getopt.py\",\n      \"mode\": 33188,\n      \"size\": 17784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38fc69d82c478b5629fddd43f09c56e147aaf5f0bbd6d7a040569a7e1e7c1865\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/file_util.py\",\n      \"mode\": 33188,\n      \"size\": 8148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2152a7c8b4dff1d83562851d0c1dd03828231508e3bc568072685a7f6ba3038\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/filelist.py\",\n      \"mode\": 33188,\n      \"size\": 12832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1b471873a7616c6a81d3ed3b8a0f842372e87f07d3b0ff14edfe1b5926f3764\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/log.py\",\n      \"mode\": 33188,\n      \"size\": 1969,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8560667540b62bddbb41c56fdd110c5b71cc3dc97171c3d09e0c4b4ae517425d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/msvc9compiler.py\",\n      \"mode\": 33188,\n      \"size\": 30612,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a41326806de0869ed0b49c67b67dc885f23efb9c38eee309c44c46ddb805be1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/msvccompiler.py\",\n      \"mode\": 33188,\n      \"size\": 23576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54143f78adc11b1c839112624776a6bd9a1a82c57792498eb005575f3d58a480\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/spawn.py\",\n      \"mode\": 33188,\n      \"size\": 7427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"754f393f757f23175557642f4dde08030ce348ad127be7b4062a670b76051e2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/sysconfig.py\",\n      \"mode\": 33188,\n      \"size\": 20276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4aa971ebd99f09d64dd3acdc6db654a252913e96bbe008e70992683c76d839e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/text_file.py\",\n      \"mode\": 33188,\n      \"size\": 12483,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ecb8025e59d289a0b495ffa37a229079fb43daf382b32d4b9c24c1516b3c372\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/unixccompiler.py\",\n      \"mode\": 33188,\n      \"size\": 14984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0c1e3d2249780ddf0160b334e1b1fe548f8f1ea9524917b417bb33c2de0894e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/util.py\",\n      \"mode\": 33188,\n      \"size\": 20789,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adf97e817fa2a53479dbd2dbe5738f9cbf85d85d232ee6689aa638cda09c547e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/version.py\",\n      \"mode\": 33188,\n      \"size\": 12345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f35b834b27fa7d0b61bec6550e1a16133f6482b1431875ee93acbce4118987f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/distutils/versionpredicate.py\",\n      \"mode\": 33188,\n      \"size\": 5133,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"671a4403e4d0bfcf2651673a85eb543b8a92a80dac6bb8a98d9dd010ae5ebc39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/doctest.py\",\n      \"mode\": 33188,\n      \"size\": 104391,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ebaa1a027690f38aedc109284a95fcd58268f042b215f7e4d66d5163ac9e7fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/dummy_threading.py\",\n      \"mode\": 33188,\n      \"size\": 2815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73abb5d5b4fd70329da6acc0f18df055c2cbb677228f9fab78172e9162cff243\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1766,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14eeb17ae40c6cc19b48a9bd5e2a0340ee3dd86a8d64bd1d5c4df8fcfa726c8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bcc17d53100b9f210a8225adf890eedec926634a10861300726e65bd4c72ab9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8aabeea0b8b24990e0b09d2cf18c974dbc651baa217d5199c8eb3587cd2c42d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bcc17d53100b9f210a8225adf890eedec926634a10861300726e65bd4c72ab9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5586,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7726e897d0af300cec62e2a199a9a19eac2c6bb75e6300b3d0687ba7cfd9e740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3a0b9356dabc1e1ed2d3fb8607c4cfc183e21bb51afdc5ec56ff0c4a64950e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5586,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7726e897d0af300cec62e2a199a9a19eac2c6bb75e6300b3d0687ba7cfd9e740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 75995,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc76e65aba9e5e7bb75a1933035ba7d1b67ec25e46b0f5438d6aa36c4a2af508\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 59504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15ff1825508203c671bd5574dbd518f41de1dc43b3127aec93dca98d81e45de1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 76047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"502958c3d0b0358937a2507edf42b8a9d35f597f5ffb01fd9aed9da3bf60c6dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12499,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f431a43c94b522b74bb2cfdffbcfa97850de6f819d2afa878d5b53f7eab4f75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c787a7ad1cb2d7bb8e255c6dbc3404eea5592d53c41fa91072be0c071235307c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12499,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f431a43c94b522b74bb2cfdffbcfa97850de6f819d2afa878d5b53f7eab4f75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35566d3ca65befb602efe227c8ed1fd1e4b0026f867df3a066a1aef1b6a60c0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5983,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90d55e045e4592c156636d2b689c6113236010824dadfdaa16ad63e342e6bc1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35566d3ca65befb602efe227c8ed1fd1e4b0026f867df3a066a1aef1b6a60c0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7e0d2bb5ee0ad0da45a21207add55b873c9978755d2e267d744d28178c47aa0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a8ccad6c31d3c7876176ecdce1ae10375bd374c5faf9a891dd2948484a48114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7e0d2bb5ee0ad0da45a21207add55b873c9978755d2e267d744d28178c47aa0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9aa615fbfea457f17ff157f7f8280bef6a8844d2859a7e4d180c67728f9e60f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fca82c768c7e2853160dd86d1ca6fee0e425dcdf97fa8b40fd4be3865e98414\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ef79f57727458136a753484be53e5c548a9f419e016c0e15f62af3c4b722a02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eca9c0b58dfacaca681911ea163229b61407ed2c60f0252c9482e9a34e4f6cb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eca9c0b58dfacaca681911ea163229b61407ed2c60f0252c9482e9a34e4f6cb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eca9c0b58dfacaca681911ea163229b61407ed2c60f0252c9482e9a34e4f6cb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0881b7467e5974a4342331df2dfd17f9d59e0d91682a713d0ac99a39244fa730\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bba4bd20ef7b0225c4afb5987cec7e8e670bf7917f8de7365efa54bbb07ba751\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0881b7467e5974a4342331df2dfd17f9d59e0d91682a713d0ac99a39244fa730\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"316586a7176ef4345f8f67fd41a26d7bd6c939d933ba7dfceac2c5003fa268fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4629,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df7bb1b593beef039c85adc3b4119ea2942f0806f87000a5f639c0a31f43f513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"316586a7176ef4345f8f67fd41a26d7bd6c939d933ba7dfceac2c5003fa268fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85547a4830bb969090b61c34220a7ec4fe0353cd91494be3b0d5b158904f0d50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8827,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d714f430eb7e60367518fe73db2ff26672424030892e8e2cdd16e50c107a30c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10646,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49d7fddf8096520baa5cb415a21f659dceb3a5ddecf27949cf70492c2f2087ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3da870f581db28d5b4b419eb2cebc338891464e4125376a01cc7daab0da590c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e6f3ebebb079fb0ecc985dd89a10fdabb3d93e0d78a099f95aab98fe452fcd4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3da870f581db28d5b4b419eb2cebc338891464e4125376a01cc7daab0da590c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16482,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a191cd09c217341bc7c73adb9612965b69737ec7c62bd0a535fad06422c561d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c59fa82a1bacc5bb36c437d592f053507bcf6cbb0e420513be7c76b93002ac1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16482,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a191cd09c217341bc7c73adb9612965b69737ec7c62bd0a535fad06422c561d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 21224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e26a1c1a9317aab35764f427bc4fedf0d7f127ca789558a0a7e2f4b90690f78b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"422c9d9f1cc7f115b794c237af88cc1adbd4a914e7dc7b534e0fef4966bcc6ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 21280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cad2071a67e70c43eb9cf00f603afba4637008f366adb6ecb52f0f9e1549fb11\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9992153f52579fad43fa3bb352717a443a03979505325e05e7ad0a8e361bd4e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5301217a3f67f26ca1241473c05778a073b0b1edd053f1366565c438788350b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9992153f52579fad43fa3bb352717a443a03979505325e05e7ad0a8e361bd4e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 37994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"958518d248c712651faab63d58daf949431fdfa96b8e0262c92ea70c126c67c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 21402,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2668cce840b04faddc201943a3cf99d5185ff8abbbf818006bc6587cd70c82f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 37994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"958518d248c712651faab63d58daf949431fdfa96b8e0262c92ea70c126c67c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"661b8317ebf67c7a72b182cf331e2020b0f9241a54be48596587f1b578ce263c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2707,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8bc83f4b65d151c76b414b1e9d1bb12971634b7cf49547604ee504de2f9215f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"661b8317ebf67c7a72b182cf331e2020b0f9241a54be48596587f1b578ce263c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90f44577c0440f574a94a0dfe48caa61a364e45fa33700bb011be32320ea9d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af7e9e5e6e48f56a3f7b43d715b3ba597596598d20fe66ae6741f33234457815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90f44577c0440f574a94a0dfe48caa61a364e45fa33700bb011be32320ea9d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7682,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7be852af3c389894bf81ac07a60146c9c6c2dc2fad9c7c9ce51e4df86e95f8ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1690bbe7cc33084b47c6e5d843ba1e8cbb750a8719febeec70735c0d1b214e13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7682,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7be852af3c389894bf81ac07a60146c9c6c2dc2fad9c7c9ce51e4df86e95f8ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4c75a14eca2cc6591205d6b3cc7d54817ff726445dba5a2aef0541311f427c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57b32c58e8232dc1caaef80d60e38b11834d74692a341a60455d0de6983f3ef5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4c75a14eca2cc6591205d6b3cc7d54817ff726445dba5a2aef0541311f427c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/_encoded_words.py\",\n      \"mode\": 33188,\n      \"size\": 8518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a897f2e5aca1a0d0966a43d56ed4c84be447f0f2f4ff49696f4add6d82b8a19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/_header_value_parser.py\",\n      \"mode\": 33188,\n      \"size\": 99848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19a18e836b5d8942459da077de628021d00fa45a508e6cb21e2e8a7e95fe4a3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/_parseaddr.py\",\n      \"mode\": 33188,\n      \"size\": 17604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ddb953e2b35969fc9d86285a13ed7fdd09c607c306aa5c781d535f4847975f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/_policybase.py\",\n      \"mode\": 33188,\n      \"size\": 15073,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"967a41672b54f3443eac096968ad189d75c77be7eb42611b4d81d12a41605be9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/base64mime.py\",\n      \"mode\": 33188,\n      \"size\": 3558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a1bd2d536c77b735892ddf4c6cc6c741184d93c58c11e8f191b5ea29beb753a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/charset.py\",\n      \"mode\": 33188,\n      \"size\": 17151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c26d64eac3a675fa035d831851c93624a73490739246c091e5e44101370b4065\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/contentmanager.py\",\n      \"mode\": 33188,\n      \"size\": 10672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05b0a6b7f92969dde00b9bc492d3abc3ed6f63647f8a556561e420d60b5290b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/encoders.py\",\n      \"mode\": 33188,\n      \"size\": 1786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e05b3ee30c62c605077e7770b5b3249f5060d968b0fee8d5cf9cad9450b89cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/errors.py\",\n      \"mode\": 33188,\n      \"size\": 3647,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cb3199868ed5b0a5b0a3bdc8434f99e0b6fef1296f7ed05263397092fce3ad7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/feedparser.py\",\n      \"mode\": 33188,\n      \"size\": 22775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"428f21a0ca2817b8b733f3e5074dbdcce3b3b687ee83d0cbc1361fc122c09780\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/generator.py\",\n      \"mode\": 33188,\n      \"size\": 19975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"829d2918c382d14cec063f9ecb582c97caeab5ad8da0bdb288050549a9c2b109\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/header.py\",\n      \"mode\": 33188,\n      \"size\": 24102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"304c8c0ec80022672f44343677f034a8a356bf8021156bf88d70fbec8adc0761\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/headerregistry.py\",\n      \"mode\": 33188,\n      \"size\": 20227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74bc853507aa2a45312adeb94983dabca92a84d6ac04c4e0beefaaf84c5f1237\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/iterators.py\",\n      \"mode\": 33188,\n      \"size\": 2135,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ebca15c9f5889b9551727303666a7bd80c5e4ebdf6bc7ec4d0c46938a1378e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/message.py\",\n      \"mode\": 33188,\n      \"size\": 46719,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4ae2da9fbc7e42d7333235873b4f82ff15e25f16b5ad62c3896d38fe6c9cd99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"919f960d2cf159ff07b7b2d16823eff90e52bcaf50e4b83fe4757f6d327e4a83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"919f960d2cf159ff07b7b2d16823eff90e52bcaf50e4b83fe4757f6d327e4a83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"919f960d2cf159ff07b7b2d16823eff90e52bcaf50e4b83fe4757f6d327e4a83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4453d823cebaf915ea8bc1e48b448862c34171edb39687b7bba31e5253c4bf42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 783,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed845ae381dbf16a73e76ff37c3f5d9d2e0b8b4f32c1b74bb2de6f1aba24647a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4453d823cebaf915ea8bc1e48b448862c34171edb39687b7bba31e5253c4bf42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2596,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6c85f804735fba5db866044a5ba59a97553e982a0269bcea1c8759eee11541f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1156,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcea78b60a0c53413ff28ed3b671a4c4a376df377edf78f5a9fbf2f18c7a75f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2596,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6c85f804735fba5db866044a5ba59a97553e982a0269bcea1c8759eee11541f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e510d5513cdf3870490befb70a075bedc3ac22e04b4c70f6cb37258077f21199\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aea0393685ad2799db748a04f5c23730c95a687368772ac06f39cdb5502bea81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e510d5513cdf3870490befb70a075bedc3ac22e04b4c70f6cb37258077f21199\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1882,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f49a866cc267b405ebeecf43115a3b7e7b0041767bb39735c08a9d1f47a5a655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 805,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eca452f25a77cbd9f95dac78a262e9ebcf56a6f8135e5ad73d2d9d4e77113ce1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1882,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f49a866cc267b405ebeecf43115a3b7e7b0041767bb39735c08a9d1f47a5a655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe71c3ab2c1ddc7ef4d77ef83d72ca02b784dc105aedbadfbf5fae0cee512169\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37b5ee5bb35f401b4135f5398f4e115c2c8ad2794e5db7f7d505e0656a4c5c75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe71c3ab2c1ddc7ef4d77ef83d72ca02b784dc105aedbadfbf5fae0cee512169\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90635fe65825d34bfa7180e8ff67d768cfd2b27bf06ca7c47347fcfb2e8ed295\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1c16d52890009ea822a23a1c978c9bd400afd4f6948a751878ef6dd395ae634\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90635fe65825d34bfa7180e8ff67d768cfd2b27bf06ca7c47347fcfb2e8ed295\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb810c387cf8e50305fb3bb58433cfc263ab84703ecf59d14f934da2b48d05a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2664e8d0efbcb19010b7e0319de5cc08e1f13c2635b0c315677abef876fd6128\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb810c387cf8e50305fb3bb58433cfc263ab84703ecf59d14f934da2b48d05a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82ad0dac3293a5c23fe13c80ac3d1dd743cd2993388c0e889485fc0a193b683a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ca45db9c46d0eac07a7cf246b0d7d8f59b9711c4ead1ff6aefdd7016700a95a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82ad0dac3293a5c23fe13c80ac3d1dd743cd2993388c0e889485fc0a193b683a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/application.py\",\n      \"mode\": 33188,\n      \"size\": 1321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cd0255a621e87867c3c7f5130e0f3468eff99278e859320fcd07619cb5a35d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/audio.py\",\n      \"mode\": 33188,\n      \"size\": 2739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"427778cece4effa17e21ea53e9946b146c9d70d7252473a0745cafb621fbafb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/base.py\",\n      \"mode\": 33188,\n      \"size\": 916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e1014770d0d5e9fe6207ae0919b572033e4acc75e961ea0a3f760547716e3ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/image.py\",\n      \"mode\": 33188,\n      \"size\": 1829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7aa3adaa32627323d5aa9d07228665a5d6492d2b392eb7bb36de752cd0972ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/message.py\",\n      \"mode\": 33188,\n      \"size\": 1317,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0553e0365eb7e58ba8dcd5f4d416af8ab331b5d6d920b6fb16481ed172fa7d79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/multipart.py\",\n      \"mode\": 33188,\n      \"size\": 1621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53730a1a7807d8af12b88665d8f474f48bf39ed1ef4c47433267a44ef54b0ba7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/nonmultipart.py\",\n      \"mode\": 33188,\n      \"size\": 691,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f6fdedb5ba3e0a698bf33d77e329fc4cf2ab4305474b6ae23c1bc0f99daaf7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/mime/text.py\",\n      \"mode\": 33188,\n      \"size\": 1437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa903b8248020e9211e88f2c3a5e3a05f6969b6aab2b6f01ea1ddff776b870de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/parser.py\",\n      \"mode\": 33188,\n      \"size\": 5043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5010aca740bd1671aca4487d334ed298a1ba42c1b8d534e4bc627581cc07073f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/policy.py\",\n      \"mode\": 33188,\n      \"size\": 10373,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd8ad84b8a570b05062a3b6252a40c3353c0e111a18b07bfd05801a53f64a04e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/quoprimime.py\",\n      \"mode\": 33188,\n      \"size\": 9858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b892900fd55b57d3be22f7bc9696feb905545adb81d37f4b77166753473a4b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/email/utils.py\",\n      \"mode\": 33188,\n      \"size\": 13897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c241bdb1ce6f09bb21045a05f32670d7f700cb50918a386c8b7f0b82432bff5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5efd2b6cd7e54996e2f17909a4e19dd4787be8ff17d8de5f867741e2cef53830\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3932,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1d0a1028bea8f196518da5d5604a69968217737170bf4a440083d92e5352c30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1cefd995ceb566bc15c20197ea2dd4aac7a8ef9b5a9d84b0102ada71270adc04\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3932,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1d0a1028bea8f196518da5d5604a69968217737170bf4a440083d92e5352c30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ba83a9a505a38e8eb3ad2c544fc9978843eeff72a40a0324fc6ce3f4da28523\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6538701206c2d5bc94d888c438f06f51d986f9614e66060dc16aa6209c3bb8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ba83a9a505a38e8eb3ad2c544fc9978843eeff72a40a0324fc6ce3f4da28523\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74396d2a36308aa71f8b39a600843c1e2cbbc9d316687b55a3532fae409d5114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1718,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"125dde25ccd36c942c8dc53f80d52aa55e2462ff70525e091dc597769a7d6796\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74396d2a36308aa71f8b39a600843c1e2cbbc9d316687b55a3532fae409d5114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb62e99631995556184281497916ed7807a24a74a61b7bcc1b66f97ad501bf79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2107,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a73a812c0df313dfc60458c81f57040a9a07b0e35e763c3429e83bbb6c192a31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e06e1bb8b1e2a42c76fd31f98801c29e4887e3bceb36eecbc2c63a52be9224e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14af61f517c23f084522b7d8fd803b5fae5b6e52f403d5c7798790e2a3a3e502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14af61f517c23f084522b7d8fd803b5fae5b6e52f403d5c7798790e2a3a3e502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14af61f517c23f084522b7d8fd803b5fae5b6e52f403d5c7798790e2a3a3e502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0878e1ca9104b504974c13876272bdde0f58d47df7e263acd60a1a939644165\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0878e1ca9104b504974c13876272bdde0f58d47df7e263acd60a1a939644165\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0878e1ca9104b504974c13876272bdde0f58d47df7e263acd60a1a939644165\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3158,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2adf1dc83c838b7e09263271a383d057eed37c857333e0b6b76f9d1464fe1f6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2862,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32eaf78b47e99b65e174d3037cd97c45187b5830b619ae4c5efa775b483c57e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3265,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14285104e02b85396318e40e4952319c288dc5577cc4685e1711a0dae7f78c84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4d7457f50d28e2671b293ef3678dcaf9a90830ff4068dc9ea10d21c559120f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2623,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a0021dca4b48bff0aa75ff3750dc8ebe5ab2c57b59a6014cca195699ad28695\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4d7457f50d28e2671b293ef3678dcaf9a90830ff4068dc9ea10d21c559120f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14ed75348a82754783ce5eff0171bde4b7fcdc5f7595b77ad76049bec8c50d80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ac7096ce987b0479b109f6437c57ab6017e2080aa184d146d601366d2f4935a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14ed75348a82754783ce5eff0171bde4b7fcdc5f7595b77ad76049bec8c50d80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2485,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2ed5c9cde296b9004ac1b8ffb376d87cafea808e5fb0f0493faf4cc2235040a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a97f82e1a68a026a13e3e33fe2c13f8f0c8c5c809ea9af50f43f2ca37099bebf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2485,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2ed5c9cde296b9004ac1b8ffb376d87cafea808e5fb0f0493faf4cc2235040a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05e179d375825b34dcae4220fb6f729ed3b272041eab1d2eeab6cd582140492d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2279,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c7253b0d948d690d7fa3652556ebfd6a07d841ec7ec16b089c194282eb99182\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05e179d375825b34dcae4220fb6f729ed3b272041eab1d2eeab6cd582140492d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e5bc0a2f39c2efb845c99bec5d7bd1734eae5120a8a24eaf2995678f2a0f1bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcb4846f474ea1d5f9d348373158532901d64a27deb25c822f59887e03677861\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e5bc0a2f39c2efb845c99bec5d7bd1734eae5120a8a24eaf2995678f2a0f1bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2399,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6e8ea43e1f6d4f4480b12c39303d7ee6facec2bbf64979d98e39d92151915d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05ad225f21f3daf06d1ffbfa0d831ecb58c93a0c7699ae934c32c18aa0640460\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2399,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6e8ea43e1f6d4f4480b12c39303d7ee6facec2bbf64979d98e39d92151915d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca000f76f626756239a16535308b5247df06d556bc434eae5b9abada6ca4aac2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"856431706d51c847f69eadc6ccee84f04b57a81f6e590bddc3dfcd98bb04d95c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca000f76f626756239a16535308b5247df06d556bc434eae5b9abada6ca4aac2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20a85c07e48db2a6831faf937971a70f8b88851fdf02be686c7067e18855af17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2298,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1ae9152ff3500c2a10822cc44976455f1eb573d6818808ff293e667cc68a5d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20a85c07e48db2a6831faf937971a70f8b88851fdf02be686c7067e18855af17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"240c37d394c4f4a4145b578632b8abaa6eff69ea789b3f3fbefdf3e485458017\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bd89cf9a0a27f5463fc02cc891ee78d8f1d706cf95b99f8f3f12f1da88beb85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"240c37d394c4f4a4145b578632b8abaa6eff69ea789b3f3fbefdf3e485458017\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa877e3fed2b328dccee6951336d06bd31e725662eab6c2b980b979dde4baf7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d70d762d701b7bf4347849ac7cf4fa0c722cd18a64b0cc0b4ff0031fd659343b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa877e3fed2b328dccee6951336d06bd31e725662eab6c2b980b979dde4baf7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3088717c1d7f727b1b3db97cbd4b321308ff455eaffd01886635f829223f563e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15f68ff2cba79f16208021f6c02edaa99f04065107dcd7963a217161b22e9ed9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3088717c1d7f727b1b3db97cbd4b321308ff455eaffd01886635f829223f563e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19280a757935342da9a33750ea261864a3f4e7229901257f2658e6ab1c9e39fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1957e52601d51f898df0e5bc9abef8c5df255728e04c5f595b3613aa3b42e19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19280a757935342da9a33750ea261864a3f4e7229901257f2658e6ab1c9e39fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2435,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebbe257fa6bf667dbf4736392115a20f15863edfd087884bd140c196c2316854\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9374fb6001c08683478387f98ca60aa93f21e865e288a5411d99ec40b449706\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2435,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebbe257fa6bf667dbf4736392115a20f15863edfd087884bd140c196c2316854\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc5787422423a71961159ce00f767939188f8d1c7e8cf7bb812b7b89859a2062\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2308,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"358bf85db3f89ce1132e54fb7ef32d0b80067689c00945f6ed26789e489a2c24\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc5787422423a71961159ce00f767939188f8d1c7e8cf7bb812b7b89859a2062\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f986abc786f156e4d7df81a5941334a68fe8eaa004581bdf39f623c288d4740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"474a5a388741db47eb1c654590c622bf9a456a9320dd246f43f438f600d3dd0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f986abc786f156e4d7df81a5941334a68fe8eaa004581bdf39f623c288d4740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b631fd70008ca8192fe5bac4b518aae1dd241afda7afebad190792732384340\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2278,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee195590b75210c304b96f5813ae0b3eed30585a15a7d6657a61210d124f91bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b631fd70008ca8192fe5bac4b518aae1dd241afda7afebad190792732384340\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2439,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f4dbf7f023f95ce9a537bcc4d0f7237bff1968a85acafe395ce81df66e6537c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2316,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"323256519f3061617f0429a4d902611a9dcc664f807aed558330d1596b02b792\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2439,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f4dbf7f023f95ce9a537bcc4d0f7237bff1968a85acafe395ce81df66e6537c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca43933fab2bc7b29b93940f24423aa9a35f87930a36bba04dd3b8bf2d212073\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b431f2c4edc3329c5cb5d90492fca76177ec8c5fe1e449e0cda0b113164681f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca43933fab2bc7b29b93940f24423aa9a35f87930a36bba04dd3b8bf2d212073\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3902a1f9a8a1be3207187cb36609719e991bb4e32d75c12cf6b234af7c6ba84b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aa18581b5e8336fa7165b1059e73c6172acef58b351d264473edff0ff840365\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3902a1f9a8a1be3207187cb36609719e991bb4e32d75c12cf6b234af7c6ba84b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1663,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79320dfd8d3efd73f72a4b963953780307cf3ccc8b393997a9b258d8fd8622b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"897396ce49845bc1e2a11c06d8f7d94c449eee0fa63ea81e0348f8a2f107fc4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1663,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79320dfd8d3efd73f72a4b963953780307cf3ccc8b393997a9b258d8fd8622b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2506,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ac47a0f708fbbed0db7a2eaaeb4077ec66a1b9804839608fe46956c3614536f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84016fa1737d358148f228a615f03eeefa69f1fcadab107f772dd99388e5205b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2506,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ac47a0f708fbbed0db7a2eaaeb4077ec66a1b9804839608fe46956c3614536f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a384b445e70dcba26f540895e68a7e8c6fb3806112b9d344bbd4e993d5fa63ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ca914e6ba8fb04857fc47b4082925882d86dd1344b070fb8d5b9c2741d02af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a384b445e70dcba26f540895e68a7e8c6fb3806112b9d344bbd4e993d5fa63ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4d93c3dd6202698a2f7196f52a2c3de59df23e6a16478716c515d352ab2897a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3846f4e374e28df96973a325f3d4abaae4f986d62fb6079c5638aae7b1672f30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7853,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4d93c3dd6202698a2f7196f52a2c3de59df23e6a16478716c515d352ab2897a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22921746e0190d725f3a6dd6233eabdaeeebdd0f8307fad8b2ee6b720628e6e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4f4cd4756bcf693d0d495e6e45c2280d14e1818b0de52c14a52a70d301292c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22921746e0190d725f3a6dd6233eabdaeeebdd0f8307fad8b2ee6b720628e6e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e356c9e3b81d75e6fc79676e1d81ce9063a28b27bc42867d6216f836d63df15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7746,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f4d0f6b608f2933a3193dda0268ec92839e55bf80fb27abdeb35d2b630df5f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e356c9e3b81d75e6fc79676e1d81ce9063a28b27bc42867d6216f836d63df15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8114,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a5c3cd39f66447ccc1e69b9741a9ea07b53bca6e44eaa8e97c2da73146b2546\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7999,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d23a91d83bb547015f262ecf65a416d3bd10d268b5e9e4e641921188c3a69e9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8114,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a5c3cd39f66447ccc1e69b9741a9ea07b53bca6e44eaa8e97c2da73146b2546\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7674a489f22cae96edcac7db951b816a3684c50e684a25380268152e40c0a339\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2348,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68f5fc7badf4c5b3b5ad51db9cfd194a3204aa439e4d85e4d2eb63dc53a890f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7674a489f22cae96edcac7db951b816a3684c50e684a25380268152e40c0a339\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7466,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a149db0b91a663b55501e25425d4a798b3389ec66fd2b30981e09a0c1f98bc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7351,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c343d58b37a08e7abe901a3f3baa4194125503521d7aff398a959ce18d82bd7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7466,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a149db0b91a663b55501e25425d4a798b3389ec66fd2b30981e09a0c1f98bc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ac05d0ac8bab00637b8b5d78bb78bd24c85403d6aaebfdf399b509d0d845477\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cfccc1aa6ba098fe07dc7c092dc13f71b49800a106050f997c9e93a7e907e30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ac05d0ac8bab00637b8b5d78bb78bd24c85403d6aaebfdf399b509d0d845477\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6328a0af3e0dc64f1de8a533d7d238f3d08cac9d10c4e0bdbd601faf909e2740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d4b0c07726f15905191efb55d59c8708c6a5ca1e425dd7c82d87cf4c2ea41c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6328a0af3e0dc64f1de8a533d7d238f3d08cac9d10c4e0bdbd601faf909e2740\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1203c4b3ad084261b507df7c729b1d064209d0cfadc00a4dbfa0101c07c1f65e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a513adff06030af288143d688cb46dbb6b0650ee90293e914da5ba0f9952ff6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1203c4b3ad084261b507df7c729b1d064209d0cfadc00a4dbfa0101c07c1f65e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8006,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10677b33e74897124bb1bd1221ec40edf408912fa73344f7d32fcd3e189c4189\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ae8aef9d9f7787276fadcb5a1413803ba73c990c5a9cc12b7be65bbd57b9aa1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8006,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10677b33e74897124bb1bd1221ec40edf408912fa73344f7d32fcd3e189c4189\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca4791025fd6bd07d5647affdde44f1f742b7a2802512f69dfef88d5201ec56b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19a3b4ef35de7f89623413b56e0c70a11a857a8bbf8654b86fab418055e0c97b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca4791025fd6bd07d5647affdde44f1f742b7a2802512f69dfef88d5201ec56b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7963,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d078828f1affae55847c4bc423e559500404a6cad11b7bbd450e117976aa98d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2fae539be152c9f7d92819ae2f2cfd312fb709759abe9eb8a898abe82d73d96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7963,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d078828f1affae55847c4bc423e559500404a6cad11b7bbd450e117976aa98d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ed5ef84837d95ff135c12cf0d8602f11eaf5f70e0a02a1f8ed7345d60b06599\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f559d7f08110e1eba8e91037215821aabe7b87b6bb0c9fbd60a06348c47596fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ed5ef84837d95ff135c12cf0d8602f11eaf5f70e0a02a1f8ed7345d60b06599\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49d42e51e8e689ffc1e0bba51614ba0a2cba8a4fa27ea0ae2b11130551bac0c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e762ea641a752e70653d3ff958959e6ae3a187d3332b20a9090823371e1048b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49d42e51e8e689ffc1e0bba51614ba0a2cba8a4fa27ea0ae2b11130551bac0c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17d9bc3c5805306b6421505d818aaaa39e2f9b3fb06a012c17a77068cb2f8d62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"667da51ab2f47eb0b7191f4fe55d3ecf4a3ecf0a2d762d183cfca3298558e415\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17d9bc3c5805306b6421505d818aaaa39e2f9b3fb06a012c17a77068cb2f8d62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13f36a5f53853deb860a7c576e58cf48df2fe8266791f60c96f2858a0c222d65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c05c2b39243b9b069450458925d8d88101c1ffc0eda457d2750bdc437f5327e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13f36a5f53853deb860a7c576e58cf48df2fe8266791f60c96f2858a0c222d65\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2406,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f55f0e88bfa041b1de536714144cebb0e6697e6fd634c9be41b726371ba367d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e89c30074d4cb23bfe50f9c6c021bbe9985a6034d9e45c4b529c2d9bde7c1334\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2406,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f55f0e88bfa041b1de536714144cebb0e6697e6fd634c9be41b726371ba367d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56147ed3f9ccd697f02abca4666b2e688c9134c3cef628f10982209e59fd7eee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56147ed3f9ccd697f02abca4666b2e688c9134c3cef628f10982209e59fd7eee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56147ed3f9ccd697f02abca4666b2e688c9134c3cef628f10982209e59fd7eee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c3e30bd314ad8b031f330e32ccc72016d3cdc06834e1991857d3855b94103b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c3e30bd314ad8b031f330e32ccc72016d3cdc06834e1991857d3855b94103b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c3e30bd314ad8b031f330e32ccc72016d3cdc06834e1991857d3855b94103b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55196f1f847802cd8b6e8d93e568839306de2a7073798433318f513912aa35b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55196f1f847802cd8b6e8d93e568839306de2a7073798433318f513912aa35b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55196f1f847802cd8b6e8d93e568839306de2a7073798433318f513912aa35b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d1e6048dad099cdfd1c6d84ae2d9086c21a0652910edfc53ed9b9b7f311fe10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d1e6048dad099cdfd1c6d84ae2d9086c21a0652910edfc53ed9b9b7f311fe10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d1e6048dad099cdfd1c6d84ae2d9086c21a0652910edfc53ed9b9b7f311fe10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9bcb0322401faebc6279ff8e18745904145b224cbdb6af61179fb0cba56b267\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9bcb0322401faebc6279ff8e18745904145b224cbdb6af61179fb0cba56b267\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9bcb0322401faebc6279ff8e18745904145b224cbdb6af61179fb0cba56b267\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"959c15faef867ad4be122da19017bf7540ecfdb8cc2a0e206524c41869e4cd91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"959c15faef867ad4be122da19017bf7540ecfdb8cc2a0e206524c41869e4cd91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"959c15faef867ad4be122da19017bf7540ecfdb8cc2a0e206524c41869e4cd91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beb31a76a3c2192304fa9282b9c9f5f0de79e26c5134499b2fc555eee961bf1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beb31a76a3c2192304fa9282b9c9f5f0de79e26c5134499b2fc555eee961bf1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beb31a76a3c2192304fa9282b9c9f5f0de79e26c5134499b2fc555eee961bf1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01de7fb65fa1d65b9d30b7c93d338812530c91b6eb68f63a93507b235e203d54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01de7fb65fa1d65b9d30b7c93d338812530c91b6eb68f63a93507b235e203d54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01de7fb65fa1d65b9d30b7c93d338812530c91b6eb68f63a93507b235e203d54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05d1cd76064fe22e05230ace9ddaa441f7d675b2b76a28af6a3867fa25fdf291\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05d1cd76064fe22e05230ace9ddaa441f7d675b2b76a28af6a3867fa25fdf291\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1428,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05d1cd76064fe22e05230ace9ddaa441f7d675b2b76a28af6a3867fa25fdf291\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"082747ad39a4697301137eac36a87960b8a316304ee1d27b1cecc01458aac551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"082747ad39a4697301137eac36a87960b8a316304ee1d27b1cecc01458aac551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1422,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"082747ad39a4697301137eac36a87960b8a316304ee1d27b1cecc01458aac551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2269,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad948ad3e994c3086560e6c1cc0e24da3b4f6c15baef19d572d5b6426911f835\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e26b7d080ff750878aed036464fdf0d32dc73285128faa88e09522df6da40c6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2390,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b69b1e508e81ce702b2a2c3d16cf43ddfd54b49f5bfd895b58126926a97ddfdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2610,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c556082b71a4c387e74d897b929eb6a4aa8fb06fcc89ffd2f05d26e346fac52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c86a71774993bf86302ee98564568845f19f48c8fbd9d3fbecce672a4af5329\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2610,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c556082b71a4c387e74d897b929eb6a4aa8fb06fcc89ffd2f05d26e346fac52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85f9f3385bd041836add8c1d094da966ee840164431e0c57a57370e91f23cd1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85f9f3385bd041836add8c1d094da966ee840164431e0c57a57370e91f23cd1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85f9f3385bd041836add8c1d094da966ee840164431e0c57a57370e91f23cd1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1fc74030fe94a7bf9537db98a9a62f323646c9604fd87617724f17be2ef95f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1fc74030fe94a7bf9537db98a9a62f323646c9604fd87617724f17be2ef95f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1fc74030fe94a7bf9537db98a9a62f323646c9604fd87617724f17be2ef95f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc69a5b52ad3679d76a685b447b69bb05427df3f5fe490ccba6d0e838a4369ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc69a5b52ad3679d76a685b447b69bb05427df3f5fe490ccba6d0e838a4369ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc69a5b52ad3679d76a685b447b69bb05427df3f5fe490ccba6d0e838a4369ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c6ebdd19a681a66dcd0a83605018e310d7d465752096efc2bb964376b7c3ea1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c6ebdd19a681a66dcd0a83605018e310d7d465752096efc2bb964376b7c3ea1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c6ebdd19a681a66dcd0a83605018e310d7d465752096efc2bb964376b7c3ea1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c6440357427ac716b9229a64eafd1a78a65be58e078a35e13d8dc35b0d3d7ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c6440357427ac716b9229a64eafd1a78a65be58e078a35e13d8dc35b0d3d7ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c6440357427ac716b9229a64eafd1a78a65be58e078a35e13d8dc35b0d3d7ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbcf35fb385010d4547594437c73215b74814837bf800688deda144abcab20f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbcf35fb385010d4547594437c73215b74814837bf800688deda144abcab20f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abbcf35fb385010d4547594437c73215b74814837bf800688deda144abcab20f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd44578a65620264685741c9d4cf2a9f8cd8bc55e8aac36ff3a80f4912302786\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd44578a65620264685741c9d4cf2a9f8cd8bc55e8aac36ff3a80f4912302786\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd44578a65620264685741c9d4cf2a9f8cd8bc55e8aac36ff3a80f4912302786\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a6751e5dfbe2175804da84a6502e51a7895c526d71f4ccb04b56a624b927d75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a6751e5dfbe2175804da84a6502e51a7895c526d71f4ccb04b56a624b927d75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a6751e5dfbe2175804da84a6502e51a7895c526d71f4ccb04b56a624b927d75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6032473ee267f1bbe10b2cff9f8894c0424edfe92326571872d735d5f817be80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6032473ee267f1bbe10b2cff9f8894c0424edfe92326571872d735d5f817be80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6032473ee267f1bbe10b2cff9f8894c0424edfe92326571872d735d5f817be80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96d9740f6342b96199c78934814bb711bda3c6ac367ab7b9f3d3c4203a3b2bc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efef2e35cbbf9344e9a40d84bba3d725c52e34d0b5bdf30efc2694702dac043e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96d9740f6342b96199c78934814bb711bda3c6ac367ab7b9f3d3c4203a3b2bc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38ed3ed9556429d5ac446336c934872e5b1d4c65684f491672eff43d419f75f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08249d9a177905d6cba8d0eadb3c6dbba141245e102d37750bfb0bf47b4d81c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38ed3ed9556429d5ac446336c934872e5b1d4c65684f491672eff43d419f75f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28906aea43ef7ee6963b258aed11685c0a6f367225ef80fef6df28d6d132759b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bdada7fecb7f6b508b67d9aef62ae891ccbc441fe92e4066a6b349266b1691f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28906aea43ef7ee6963b258aed11685c0a6f367225ef80fef6df28d6d132759b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"167df343721172bb1a13c786f46bbecb9612a8992fd40000c5949a0cc2ea723e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c1407a536525d54815b421662369e85edb8d6ae71cdc3679f4125546180c815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"167df343721172bb1a13c786f46bbecb9612a8992fd40000c5949a0cc2ea723e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a99b2f2199456396a999c42b1d5bcd1148c61102959161ef472b7bc7b87811b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d2f5b4534ada44d795f5d2ada58ee56e6c8a8224cde8fda7b8376fefe4d8904\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a99b2f2199456396a999c42b1d5bcd1148c61102959161ef472b7bc7b87811b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"177749ade4a048bb8450d464c50a9db36a9bf815d3d5fced67ca8c738621985e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3fd2adae5ac2645f71653be3cb629c4e9f5a55f07e8387ea05b09a97fad070d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"177749ade4a048bb8450d464c50a9db36a9bf815d3d5fced67ca8c738621985e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99360839ffd6f3d79524c751143d627cbd832ed348d5ff23ccee20928793f6df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70b7bd182005b90351ef146349cd33dbfd9cc66b515bfe9e0df38fe1f4a8fc52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99360839ffd6f3d79524c751143d627cbd832ed348d5ff23ccee20928793f6df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a86d80569b1b5b15b00a1481d877b7bafa8945015a0c7d1dd4539a6070c0e48c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f09f27e23afb82fb3436b39420ecc7980376b79a07205feb082bed6eda05546f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a86d80569b1b5b15b00a1481d877b7bafa8945015a0c7d1dd4539a6070c0e48c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eeb7f139b27a9c7075b9aeb313a3496610699c3cbdd07f84e903903f77dfa390\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3edc2b244d64d58d1ab93f2e48337b44439534740ab22614776f0326d3f4222\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eeb7f139b27a9c7075b9aeb313a3496610699c3cbdd07f84e903903f77dfa390\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5b1adde0aa7e590266047ab4b1bafd061b1403aeef3d08f517096f407783aef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76eba3b099d6913255760ac1fc738218e75e60f8dceacedabd1ddffc8e496dc1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5b1adde0aa7e590266047ab4b1bafd061b1403aeef3d08f517096f407783aef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62ecc13aefefd9b96f9878d5138b4250edbec712ee09a84a2d8d4c2e30d43620\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2286,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c0eb3da99c5cdffd87c286ee822f56adb4b5a09b41d2c3e2deda702f075c3df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62ecc13aefefd9b96f9878d5138b4250edbec712ee09a84a2d8d4c2e30d43620\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5eb31895f4a0238ffc887fa4c92fb43209b70b3862dbe0a0ec492ad8a94cf39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10a474e8669fbc1f91261b4f3c92ade35a37b9fca3c9e558cbcaeb4428e76ac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5eb31895f4a0238ffc887fa4c92fb43209b70b3862dbe0a0ec492ad8a94cf39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63aeb1f02130686f9a7cc09f94603778e72acf75dc46a6a9fb760c90d8cfba70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b5f26722badb661c9c3bcda6b3c2004e6b52deb50f50a87c09bd189f6ea2d0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63aeb1f02130686f9a7cc09f94603778e72acf75dc46a6a9fb760c90d8cfba70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a382391ea9cc079282256a20626d4c27c45fec7fa36fa171fd4e36b3f83a42a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae0adb7c7a432bc1a8ec23a9fdaf405d1e81fac913f9a9eb396c2fafb6d04a0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a382391ea9cc079282256a20626d4c27c45fec7fa36fa171fd4e36b3f83a42a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f2b61bf04c8193311a0f25a3f30b1560577c4c724080ee12ac2efcfbd4b736e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6fdb5cbe6c236c53808888244a029375d2420dc003073acf53ecb08d0097e9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f2b61bf04c8193311a0f25a3f30b1560577c4c724080ee12ac2efcfbd4b736e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee9838c5e877a344ce46a9e70e4b9ca4387db8eb627344e0df051649843aa98f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee9838c5e877a344ce46a9e70e4b9ca4387db8eb627344e0df051649843aa98f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee9838c5e877a344ce46a9e70e4b9ca4387db8eb627344e0df051649843aa98f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"389dee411f3ae2dd254e3b29e0b99ef8b89aa69eb69f4dd98a046e5237eeb52f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85688fc2b008a889269da099b9cea0dfa2143e02faa545d660aba073aed7f4e9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"389dee411f3ae2dd254e3b29e0b99ef8b89aa69eb69f4dd98a046e5237eeb52f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a70b455a5b30229ca09f496e12e238cdeda42dfbda4454c6d30fd5f7cf99be7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19efa8f0d516a5f124bdbbfbdd7be0b08e87121769f2808010fe147110e98ab6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a70b455a5b30229ca09f496e12e238cdeda42dfbda4454c6d30fd5f7cf99be7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58515596a8fc89989278d29c3c8d935a38347d6c05faaeb6a795d8fdf7967d03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9a1c971b37be3c475e37a8638e6014a551e2faee56be363a60e58ce6e6d8919\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58515596a8fc89989278d29c3c8d935a38347d6c05faaeb6a795d8fdf7967d03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b6640d0ed5cbbccf9e57b2f88a75664034431d0aef7a80ef0bfbf131adf9597\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2298,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a09e5d50b876ec738465b5f5363ede1764582d833aa32514700c20ad3524ca43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b6640d0ed5cbbccf9e57b2f88a75664034431d0aef7a80ef0bfbf131adf9597\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"726cecc5cf79205f3be2be86f346a8de095075085b32e2f99972be40faa63bcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ea338956e0ac82c22719910cafffdbdefc4bb8451e57736345bf8662d12a32e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"726cecc5cf79205f3be2be86f346a8de095075085b32e2f99972be40faa63bcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"073ca7a0374831db9900eddc723f5a4dc4b3e4a66fb40148f4e10f7c8aa9ff5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7605,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3dbc0ba44f4a082f888fe559462db12b0b51e8aba3631a1d5cf4642be7a7fd8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"073ca7a0374831db9900eddc723f5a4dc4b3e4a66fb40148f4e10f7c8aa9ff5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca0cbb9862d0d3bdd3712b57b0ea0ab6a3fafd176c8a2383070de0f7ede11f28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2313,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cab9f14f63adedecd23761d147c153aeab2f19389acca30f5a5238f058532a06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca0cbb9862d0d3bdd3712b57b0ea0ab6a3fafd176c8a2383070de0f7ede11f28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb17da7d9b76a2da8855410dc21b3beba5b558e12cdf6e1636343d237b4175aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7731a9349dccbc8eceb85a2e8a3e6c3805e989911030a59b98d8188e60c48897\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb17da7d9b76a2da8855410dc21b3beba5b558e12cdf6e1636343d237b4175aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e9aed5f2e7db47087105d71f2272d8104e43cfc69412874e443ed011ab2b1a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62fb9e31b2949f9fd3a7155e20d335ac6477fc62ea5552b5b344784c1557adf0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e9aed5f2e7db47087105d71f2272d8104e43cfc69412874e443ed011ab2b1a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7aceefab45bcb3c05e841c3e1feaf1faea93e9172d590d8a148f313420a5b0c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2261,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46e222e6a87f186d473dd475edb3ed8561295080474d94889e9b20a598a181b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7aceefab45bcb3c05e841c3e1feaf1faea93e9172d590d8a148f313420a5b0c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2429,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dee6119dfb08666f2f4ef87d140b8c5788181da5f71d907a7ece0eb11baf7e97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2301,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e190f622cfa1186d035a9a419ee394df29703dee02d814a52887fa086dbfab9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2429,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dee6119dfb08666f2f4ef87d140b8c5788181da5f71d907a7ece0eb11baf7e97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51bc4cf81d38e6e3bd6a460c502ff52e22f317df9f5e63719bc62b6a4449c974\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2316,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c0e23bf9117908ec23278cda421a09412be7da65ef36833d237685a0a4917a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51bc4cf81d38e6e3bd6a460c502ff52e22f317df9f5e63719bc62b6a4449c974\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2589,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"385a4d8e112da9e7048a73a5bab85ea5c252db31bf90d4b989cc98ec3d79f2f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d00cab238624e01eaafbbbdc71a5bc2d6ebb928181d843d03e4ab3868ea27bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2589,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"385a4d8e112da9e7048a73a5bab85ea5c252db31bf90d4b989cc98ec3d79f2f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0ea99109016ba2c6586b96724ac990901afb6fb9a6a00f970b6824d11e2d368\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd0e68e42d00aba553336270013fbbf6c225519206066def398884d65e2059ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0ea99109016ba2c6586b96724ac990901afb6fb9a6a00f970b6824d11e2d368\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"195647fa9ab76e71ddebfa9aaae63f26627f2227fd779d2488a6acc7fb03f974\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7a2307ebd5dfb98d0345217f9319679a1ddeebc90cc8df32eaf2b13814f98b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"195647fa9ab76e71ddebfa9aaae63f26627f2227fd779d2488a6acc7fb03f974\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750ec08c8e9d6985b256e3d4171831c7655d0fa578c326f435879a00c4e8dc10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2317,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b24cf779203b106de4e5c4519ac6a116e55f77e63fc6bdd7433a856b43d8591f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750ec08c8e9d6985b256e3d4171831c7655d0fa578c326f435879a00c4e8dc10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be9de87d42138c82361dabad25c69f9bf28f064efa711c73e2e5fcfe78aad423\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3d1f7cdd6efd53dd840cb418c9431ceba9f1e255004b8273da05163550d4f4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be9de87d42138c82361dabad25c69f9bf28f064efa711c73e2e5fcfe78aad423\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd0ba6666a068447fdb73699c635b53f99e85a99ac06d1d0b6e1f3f6c2b1d632\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcf0e8e5296c3feeb9a929efa4ebffb52ca18c69cf8dbc17534e6c53723ab6d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd0ba6666a068447fdb73699c635b53f99e85a99ac06d1d0b6e1f3f6c2b1d632\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6f793e95dfc313e154e479b033d52db3e9ff06a5ee6fc05b111f8692ee68753\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00424c0384d1b0549ccb69d85d46f628b4ac3f429b80fc8c6119a9d1ea56056b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6f793e95dfc313e154e479b033d52db3e9ff06a5ee6fc05b111f8692ee68753\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa30ea10037a8c77f20b623f6c7b3a8f979349f97ad9a436ef6405aeca48ec7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e5ae6a450bf3dfd585ebc70979a7c3d189c932b8ecf6e83cacee2bf693aeda4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa30ea10037a8c77f20b623f6c7b3a8f979349f97ad9a436ef6405aeca48ec7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ee3dd75e64cff20984403d38eac61982892e5ee45beb239aaee690a43c59984\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1899c55d7c68aa7c205ace9879c584b1eac939649edd065f262d67af2f90ad20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ee3dd75e64cff20984403d38eac61982892e5ee45beb239aaee690a43c59984\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2364,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0722e3aae8f6646bafe956df9cde34ea2918214f6e6bc453d3fee293bbb05be6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"306a94ae43158968313c62d601316edc0a62c05282177c4e45ec8e94a8f3e989\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f7584ae7d8effcae2863dd7e565142f3ab510f33439d0558d3313feb173b436\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1749,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d7e6a6747cb1454a246e6c97526a2370d12a8c41217dea4b67b2268cab2a5d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1590,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8335fbf47aef0fe324abcb3d519f83fe7b4c6663d368da0676f00c18e493b9db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1749,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d7e6a6747cb1454a246e6c97526a2370d12a8c41217dea4b67b2268cab2a5d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2981,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88d3dce3cf1f1e23e46e2825a36f7a5dd7af8312824a7eef59766a889661f387\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75e01434b7edcf8ea0c37aac8aa8e3a8ac948de6d5c817fdd622878c6b179fba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2981,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88d3dce3cf1f1e23e46e2825a36f7a5dd7af8312824a7eef59766a889661f387\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3305ce669e334d6d02e41101046997036f519137897211ab51b01a337a19e08a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3305ce669e334d6d02e41101046997036f519137897211ab51b01a337a19e08a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1434,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3305ce669e334d6d02e41101046997036f519137897211ab51b01a337a19e08a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bfc642ffdbd3936688b23afde8eaac0d197f7de036caee6f9234fcf600876a01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bfc642ffdbd3936688b23afde8eaac0d197f7de036caee6f9234fcf600876a01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bfc642ffdbd3936688b23afde8eaac0d197f7de036caee6f9234fcf600876a01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d6bbe3ff28929b7ca2cc294509a7635cffcdf92aec1afc3ffa0a4ecb15f0709\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d6bbe3ff28929b7ca2cc294509a7635cffcdf92aec1afc3ffa0a4ecb15f0709\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d6bbe3ff28929b7ca2cc294509a7635cffcdf92aec1afc3ffa0a4ecb15f0709\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2498,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97546028e9decfa8c048c2a9933d6bc3c6fd4756fc76d6d2d6af54c3cfc8e1be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2377,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df34d65054b176452aad80bb674f97848230b0cc9f19c956448d6a45586631de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2498,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97546028e9decfa8c048c2a9933d6bc3c6fd4756fc76d6d2d6af54c3cfc8e1be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"167c3903aa3b3f9a00be48d78992dfd97e39a3390aed09d5e21327e6ad49a685\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1814,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebe288eeb0459ee770a901e2b29b519dcf62e345fef24dd407a902a0b7c5bba7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"167c3903aa3b3f9a00be48d78992dfd97e39a3390aed09d5e21327e6ad49a685\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32189c4edbd42e45d84b9115e6ffe677e3d2d912af76fd86f4abd8a1ce76e646\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1574,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"581916814cb28f133cbf37c5762a7e156d104d46f97fba23f5df91d6941ce83e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32189c4edbd42e45d84b9115e6ffe677e3d2d912af76fd86f4abd8a1ce76e646\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b60da32f8bcbfd17c78b96c7f47f20b158f291836a63474d6974c77085d403b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8cc2da2dc3bc1f3007082bc8a6fee087bd6238dd935f53758512313b659ebb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b60da32f8bcbfd17c78b96c7f47f20b158f291836a63474d6974c77085d403b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4813,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f76cc7b9fb03cda20ea23d7462ca2c5cbc9cb7dd5ae6aa2d60c977ac998a00ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4666,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90dc6d1b1488e7808bc6597df987cd44880eaec0d67f7b932aa168a220c9a217\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4813,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f76cc7b9fb03cda20ea23d7462ca2c5cbc9cb7dd5ae6aa2d60c977ac998a00ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1614,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"268dfa413bc22540b41081eab9743583331cf7038bb6069e97914f04cf82cdd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61901a97b7a507b26ec5dd9bdec450db519becea07502824302a7fa4475cd4e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1614,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"268dfa413bc22540b41081eab9743583331cf7038bb6069e97914f04cf82cdd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1614,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7c3c19be8714856caa99f72e6325a0b12c45bb4ae3871bca24a3c79888152f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82ccc1c8d6fbbf40afd59ebd69bc6473aef07ef46670fd6deac2e09216e72dae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1614,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7c3c19be8714856caa99f72e6325a0b12c45bb4ae3871bca24a3c79888152f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcfe347911379cf56e7658da5ea416752b2983396ed22cd9f583a53af72594f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4666,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"670e2695fc59cabf32797731ea1e819182bd732317d1b117fd6f172fcd0ac9c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcfe347911379cf56e7658da5ea416752b2983396ed22cd9f583a53af72594f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9685c1407066a232a883f1ffd288d36c719786ab54be5f37871276350c52a18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bed09f14592e33e96131cb31ef6e866e160f74ffc677fc5a45645d7ba7cde14e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9685c1407066a232a883f1ffd288d36c719786ab54be5f37871276350c52a18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"131fbf28638396fdd3e4aae572b998fab4dfedf75f2091c8b07aa9e77d4121e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1f9d50bf455e72bd4a185f24a5257b6849c47fafc917c2ff4a6acd6fa41bcdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"131fbf28638396fdd3e4aae572b998fab4dfedf75f2091c8b07aa9e77d4121e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3137278d060bfed296c33c825358f6b0d4b7ed83cebe46683a596db4457bd1c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6eade47f63cce15eed602648eb3dc21324a69fcebe144ac29aaa6cde19d900bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3137278d060bfed296c33c825358f6b0d4b7ed83cebe46683a596db4457bd1c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1594,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33a403fb0d00c8ceec9ed6c00cf1b843ef7e19a92a2e1261dfd51b0621859233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e6ec628a1b80bde942639bd939d58666ba196c46f075986d76994272fa51ad4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1594,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33a403fb0d00c8ceec9ed6c00cf1b843ef7e19a92a2e1261dfd51b0621859233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80abe01d06c669a9d29d7b03a575e3b716210d67164034ddaa082a84f748b5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4209,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bfd36b208cf92951494bf51947bd9874074a5630b74f5e1e087a5889c96f15b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80abe01d06c669a9d29d7b03a575e3b716210d67164034ddaa082a84f748b5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23e028c73cb72909f52b631b70cd37239a20e668685199a2fdcb0a1a3ea36f64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2855,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00434a67252927e257c1489f84d5c7a6a45d9f2e01337f270f376d661e4e1ad1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"145c7520207868561cd5de8df27dd48c52daca448d2b8d76cbe955617bd1609d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2996,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c720b85857908307b91622bf99c3d1fcdd7116f57202a264a2008bbf9b4d4ea1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3dcfbaa8228123153884da3d4c0ecfcc5f6406309968aaf0b326304bb4abafcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b367b227bbadee46406d55793fb0f99e5ae73c032bb73617af12a54d36f3d41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/aliases.py\",\n      \"mode\": 33188,\n      \"size\": 15577,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b30d0e742e54d73bd35b26209689611713f105296485ffa97f79f20441c72250\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/ascii.py\",\n      \"mode\": 33188,\n      \"size\": 1248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"578aa1173f7cc60dad2895071287fe6182bd14787b3fbf47a6c7983dfe3675e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/base64_codec.py\",\n      \"mode\": 33188,\n      \"size\": 1533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf9ac7a464f541492486241d1b4bf33e37b45c6499275cc4d69c5a8e564e5976\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/big5.py\",\n      \"mode\": 33188,\n      \"size\": 1019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98fac6f86a20dd05da197e2058176ebfd47edee7074c3248f5f48fe0fb672d7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/big5hkscs.py\",\n      \"mode\": 33188,\n      \"size\": 1039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21d051a00fb5c6a86ba187e0c50e811d659ce00991fd5f5b408f71ebb2ef0f16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/bz2_codec.py\",\n      \"mode\": 33188,\n      \"size\": 2249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1181a2a89102a2b1d2b2f1f4473236d5d1ececdd0be8fdaa498a3dbe21a185ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/charmap.py\",\n      \"mode\": 33188,\n      \"size\": 2084,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b8b5fdb36ce3becc62a6115ed904a17083949ec8aaef5a80f7078cec232f43b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp037.py\",\n      \"mode\": 33188,\n      \"size\": 13121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fda6ca994d710e4e0c760e0204c29a4273fc0f14ebe3169306d2eb54c9953f58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1006.py\",\n      \"mode\": 33188,\n      \"size\": 13568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eaded38b427841bdf280e878f1e26da506e743eaa9429075332af60cce429473\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1026.py\",\n      \"mode\": 33188,\n      \"size\": 13113,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5227237dd7ce5005b16a8e4d8342f0d193193c878e3cf35b9305d22b3b1aaf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1125.py\",\n      \"mode\": 33188,\n      \"size\": 34597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f84c7d30ce222e6a50cff1a4c9737173411da108cbd2c9bb57c854480103c470\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1140.py\",\n      \"mode\": 33188,\n      \"size\": 13105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3379d78b244aa905ffe1171a968caaf41b9a0154d1ddc76c05a2abaca2b289fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1250.py\",\n      \"mode\": 33188,\n      \"size\": 13686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebcec1adf9167863fb0bab29708c546300c80a77ef07838c9e0437a59e265970\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1251.py\",\n      \"mode\": 33188,\n      \"size\": 13361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d57f8cfa34494c5acb6692ddb31f616ae2dd89a075d2af6d36b0b7ec2ffe7af1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1252.py\",\n      \"mode\": 33188,\n      \"size\": 13511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19aa5bee667f5fb387924a813aec9fa1dda47769d09e8483a748bdb202be6a84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1253.py\",\n      \"mode\": 33188,\n      \"size\": 13094,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c27696dcfb6894b378869bc89f113703fbd1e9b13a83934463d5999b055d1e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1254.py\",\n      \"mode\": 33188,\n      \"size\": 13502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06517ec2f74f1c6562d0a1a500c48ba43f2e6e9d0c3d28356d747f274f1a4c8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1255.py\",\n      \"mode\": 33188,\n      \"size\": 12466,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54a1b5087578fa78e5bdd0afa6a9e80e8c5467c1e4226cf6e586cfe7a674a653\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1256.py\",\n      \"mode\": 33188,\n      \"size\": 12814,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad3768ac2fef2a646b3301c20af705f4d4a1544f22fa8a84241bada27ab84133\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1257.py\",\n      \"mode\": 33188,\n      \"size\": 13374,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d9149d2925b3f719809ef2297e541461079f15c658af207a3e498be314ab2c6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp1258.py\",\n      \"mode\": 33188,\n      \"size\": 13364,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"672e05b51952a82c8dbd5603769195fcedf565e457bb86c0d5bae04955d04630\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp273.py\",\n      \"mode\": 33188,\n      \"size\": 14132,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c6aec3b213ea3aebc2c526dd4d121c95d4a25a2fc928a87cd80f8448988185f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp424.py\",\n      \"mode\": 33188,\n      \"size\": 12055,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30414c2186ea0802bbf3db034122ddec1f8a10061b97c50871e14b74ee36d0ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp437.py\",\n      \"mode\": 33188,\n      \"size\": 34564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c2a5015cd36cf7f561269f33dec4c323093d3d88b0673969accdabdcb9ce2cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp500.py\",\n      \"mode\": 33188,\n      \"size\": 13121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"630f503f9110d98ea3e1529f2f965ebc275a2f78d3de47f8e9b69d35589d764b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp65001.py\",\n      \"mode\": 33188,\n      \"size\": 1106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b392c36ef590f40a66bace6eb3d86dcb578c1f8becb6ba0eb9fe116bddbdeb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp720.py\",\n      \"mode\": 33188,\n      \"size\": 13686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395496001271b92efe5df07fc0ae7c3410d1dd2bdfebbd3e4d8e806c8166beb0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp737.py\",\n      \"mode\": 33188,\n      \"size\": 34681,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be3ca1785a3970ec62310710eaf7de82932181b04d06fe4528f8adaba9fb8c4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp775.py\",\n      \"mode\": 33188,\n      \"size\": 34476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0dba85b99329d7f16907e620adada06be5216abcb964406c827b569b2cf1aeb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp850.py\",\n      \"mode\": 33188,\n      \"size\": 34105,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"257e29f235e2a8790dd68cee45668776648bab809ce8584f893cdd8fd007993c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp852.py\",\n      \"mode\": 33188,\n      \"size\": 35002,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc6faaa9dc4a933127da0aaacd1dc7a44c09266051af56bfe3215ff228636b6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp855.py\",\n      \"mode\": 33188,\n      \"size\": 33850,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b25c61c9e8c47b218d3fbb801541a2861926ac712843d2113fff90e2074f5ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp856.py\",\n      \"mode\": 33188,\n      \"size\": 12423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e52ec5cb1eafa6739b5569b0b98ee89df5f7358b84ccdc8da64e86f017d359f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp857.py\",\n      \"mode\": 33188,\n      \"size\": 33908,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d1b769058bfccdb3c6c70c49a104f5081a2fcc9fad68f7b5eb3e4f67f0b33da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp858.py\",\n      \"mode\": 33188,\n      \"size\": 34015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a24930c4a6ad0ff66dde9a69f2027e4b92c2c9c61dcda2992e940654c606577b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp860.py\",\n      \"mode\": 33188,\n      \"size\": 34681,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dfae7e31d3d9aa3013cff44a4d7ad842f257ac63765a9998436701b629cd86a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp861.py\",\n      \"mode\": 33188,\n      \"size\": 34633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"701930d77a2177497586e99bc3fe60f2d4beffb645608f167c76874a72ff405e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp862.py\",\n      \"mode\": 33188,\n      \"size\": 33370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15a2844b6ed9544c6400cf7299b42d0c2bef93c9bee70a9e89f66b8610ad6d6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp863.py\",\n      \"mode\": 33188,\n      \"size\": 34252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3d57f61fce1b98fc81ea8e4ebebaf402fae40bbcdd35d4b8297b9bb49a79aa2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp864.py\",\n      \"mode\": 33188,\n      \"size\": 33663,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15ad8f1fdfdd842c7522241372e7eddda7df687e815692a89157c5f256f21a08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp865.py\",\n      \"mode\": 33188,\n      \"size\": 34618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bdbaded987242ed2a8de7133ec2f61ddcc1c2e9de27816ab7cd0a4c678a3a907\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp866.py\",\n      \"mode\": 33188,\n      \"size\": 34396,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9efcc8e85bbd1687272a0991f6d0429a4c06679db2d114b2ac95db27a70f9d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp869.py\",\n      \"mode\": 33188,\n      \"size\": 32965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52582d9fb769b24eac7154f18d7dae856588297d6da98f37fb5efd8da883826d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp874.py\",\n      \"mode\": 33188,\n      \"size\": 12595,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe4752fa2e65741e08a563a31ff914fe71068942ce9c6f4070b1dfd7b25e5e7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp875.py\",\n      \"mode\": 33188,\n      \"size\": 12854,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fe72632015db2cba2bb4367055551da6fe22051b96d170c7b96fa271c46b257\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp932.py\",\n      \"mode\": 33188,\n      \"size\": 1023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99748e28113d2d49f5d666b49b78accd2c6e10a7852f7dd6dece9b5b71aa83c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp949.py\",\n      \"mode\": 33188,\n      \"size\": 1023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"950a7d29467ce0590b4a1137830d43d88d8f20e4035dcaaa8b2a5c3c3f1de962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/cp950.py\",\n      \"mode\": 33188,\n      \"size\": 1023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27811178b450731fc955b1247656a605d04e5ee98e0d585e4596b94b703a27f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/euc_jis_2004.py\",\n      \"mode\": 33188,\n      \"size\": 1051,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fa426cd9f17629f6320700ed18baa94839304cf1bcabbee7edb501747dc055d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/euc_jisx0213.py\",\n      \"mode\": 33188,\n      \"size\": 1051,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e28315910da20218dae8b7d5becd81de1e283dfd8b0415a4980d67065de73a0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/euc_jp.py\",\n      \"mode\": 33188,\n      \"size\": 1027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b453a439787b0efa031e43416a7d852a6be705c985e1200693eb96d87ea79cdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/euc_kr.py\",\n      \"mode\": 33188,\n      \"size\": 1027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"633a1a5504bfad04b1ec9c96d44d4ebb3bb99066a218318e7d67d866e20887a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/gb18030.py\",\n      \"mode\": 33188,\n      \"size\": 1031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c10b4dc49bc63724e539137ede6936304fcca1c97c28d16d89f381e10849521\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/gb2312.py\",\n      \"mode\": 33188,\n      \"size\": 1027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d2d567d8d079b78f3f3b566ed52ad2f38af61bf832b7dc28858b0039a032d6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/gbk.py\",\n      \"mode\": 33188,\n      \"size\": 1015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eff9b8cbc9ad2ef2e10e96afa83d3db1f775ea044aed275b7a35574ae0d8645b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/hex_codec.py\",\n      \"mode\": 33188,\n      \"size\": 1508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc5f0a31b59efe990b86efb98936769f33dd91d912ce55b49a5a4cfc516cd047\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/hp_roman8.py\",\n      \"mode\": 33188,\n      \"size\": 13475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c43cce763d12e8f71a63dbc16641bd87147eaf5f9d9054ea856864b216b2735b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/hz.py\",\n      \"mode\": 33188,\n      \"size\": 1011,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"025a9531e3046e52d3e039c0be04f9a5a74651d7683a13c7c7ebd4c7dfb5996a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/idna.py\",\n      \"mode\": 33188,\n      \"size\": 9170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcce0dd086f2cccd6198458a39af670291786b3a14c003ba5989817f773a7e84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp.py\",\n      \"mode\": 33188,\n      \"size\": 1053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"461a0e7f72eccb8b29f351c4e7926cfbda58e0edd6d0770bd82e0b36c5febe77\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_1.py\",\n      \"mode\": 33188,\n      \"size\": 1061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63bacad13a979a5519fcaa4f1e1e07b2c7415005167fac3a689408c7d886fabd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_2.py\",\n      \"mode\": 33188,\n      \"size\": 1061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d4248181548b0fc89a9f5ee9cf52ebecb235708ba87d47896ad14130884ef9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_2004.py\",\n      \"mode\": 33188,\n      \"size\": 1073,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4d1468bcd608b46f38cb0c6ef115510dcf9aa0f71e590792f407efc6e165164\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_3.py\",\n      \"mode\": 33188,\n      \"size\": 1061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3aceaa5661909de14e2861d864443b8472460ce39b99cce5c6965346d47aa5ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_ext.py\",\n      \"mode\": 33188,\n      \"size\": 1069,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4c9ed8f3031995faa224bcb10153d2b6144944477d1f27d1a6cc4a879fac34c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso2022_kr.py\",\n      \"mode\": 33188,\n      \"size\": 1053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c86362e17944f0bcf68db02f4995bdeea605867795fff7ab4079073f96705e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_1.py\",\n      \"mode\": 33188,\n      \"size\": 13176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5cebd515e057d670bf54e10b8a6f162ef3daa7f21b146aee3249160caf3c32d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_10.py\",\n      \"mode\": 33188,\n      \"size\": 13589,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54c886b41819ebb7f4fb34b8dbae1c45f4fc0864f019ecd772676ccfac5fae7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_11.py\",\n      \"mode\": 33188,\n      \"size\": 12335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed5a964470a241b4da7a6cfb718e4149d09644933af38f0497602baab6e563ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_13.py\",\n      \"mode\": 33188,\n      \"size\": 13271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7312237e8e5d201d920b4130f057cfdf1b0be9baafaa246826e6d93204fcc206\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_14.py\",\n      \"mode\": 33188,\n      \"size\": 13652,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82778b995a0ee87c5f1180fcc52900359eee15bd9a6e3a0e25f0d963e0b2a343\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_15.py\",\n      \"mode\": 33188,\n      \"size\": 13212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01976a81811873dc9a0c79db9fc00d1c30103487f3c6bc3a6d81b4043cd48e02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_16.py\",\n      \"mode\": 33188,\n      \"size\": 13557,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5ac8f5a5d8f84c0f903b2b7c342184758d590d8bcf810d561f942fe5b372d66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_2.py\",\n      \"mode\": 33188,\n      \"size\": 13404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b57cab6111cae9021505e3ae1b2adbbfc344ec48165fda322f6b069fbb18adc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_3.py\",\n      \"mode\": 33188,\n      \"size\": 13089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ffdf89004bf0c5230caa7079f7ca3142fc112f8b923ddb2c7358369d2d3c242\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_4.py\",\n      \"mode\": 33188,\n      \"size\": 13376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87bd130daa0eaef3e4cb465e10cffb2bcd194ff74097e0c186b4b8eb7be41ac5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_5.py\",\n      \"mode\": 33188,\n      \"size\": 13015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9961d96cc7b9fdf011ebcaaeaeca7b50b8670fadbd7b75fde66192f8c1f68f30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_6.py\",\n      \"mode\": 33188,\n      \"size\": 10833,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4840e68014346517680f593ca22f67133c39ba7e46f34b9be62c980a728448c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_7.py\",\n      \"mode\": 33188,\n      \"size\": 12844,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b352eca3b819488f64fb3338fd93f39c1e30f32bb13f2f9c577925e58f2960e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_8.py\",\n      \"mode\": 33188,\n      \"size\": 11036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4cf9e8a8bbe04accb1c1a80853efb19ae0772d18f81e270adefc1b2386cb368e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/iso8859_9.py\",\n      \"mode\": 33188,\n      \"size\": 13156,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84d9b15263e81685f7513c5ab45caf80b2f73c301c68e659f7162c1b1882d359\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/johab.py\",\n      \"mode\": 33188,\n      \"size\": 1023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9586615917afd3d848c1c4328656603b2834af6115f2aec932fccc935e1a60fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/koi8_r.py\",\n      \"mode\": 33188,\n      \"size\": 13779,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d4e353aee8039bb71e2145a6e68fe1e6833a1b4250b70ee0ac5ec70bbb8c51d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/koi8_t.py\",\n      \"mode\": 33188,\n      \"size\": 13193,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c9043814abdbe7dc39ff98f3857d5d110a84c978ad2304158d810a4e9eacef1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/koi8_u.py\",\n      \"mode\": 33188,\n      \"size\": 13762,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d449f9858e357fa8c2edbd4b9fe739337e9f201cac3ded20f99bfcecd4970ff7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/kz1048.py\",\n      \"mode\": 33188,\n      \"size\": 13723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76beb30e98a911f72f97609a2373782573c17c88a5fb3537db338aa382979ffc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/latin_1.py\",\n      \"mode\": 33188,\n      \"size\": 1264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b75503e532a27c636477396c855209ff5f3036536d2a4bede0a576c89382b60c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_arabic.py\",\n      \"mode\": 33188,\n      \"size\": 36467,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5eafd9a3136abfbd8ed52df9c90203c7a283e7429ed60502a87a02511e0fb777\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_centeuro.py\",\n      \"mode\": 33188,\n      \"size\": 14102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76e90ef586a10ffcfc5991317266f622c65b3ecdd382b51c9e79421e1b32c0f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_croatian.py\",\n      \"mode\": 33188,\n      \"size\": 13633,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a880cd05c82a8d11a29c65ee86a396def3344465dd71441b0bb4a73826024953\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_cyrillic.py\",\n      \"mode\": 33188,\n      \"size\": 13454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83616786a1c6308b03a0dc82536908d24d0974b2248d67393d613fe558cea4bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_farsi.py\",\n      \"mode\": 33188,\n      \"size\": 15170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5763c38fb4ab0423fafe2fdca34d6f9932ac7f1a74c0cd8109d60234c7dc624\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_greek.py\",\n      \"mode\": 33188,\n      \"size\": 13721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63016a323ddf98cb3aa9cfa78f3bab4768bedbfe9a5262a36a5aecb13d291f6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_iceland.py\",\n      \"mode\": 33188,\n      \"size\": 13498,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"753cc1ac635caa7e1b4630fbcebef8db8db332c098154a5b11f652912bf64f37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_latin2.py\",\n      \"mode\": 33188,\n      \"size\": 14118,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31670da18ce8b5394cd53fe6bf216268e7e8eae4c0247532e420e2e103727d50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_roman.py\",\n      \"mode\": 33188,\n      \"size\": 13480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"230367d96aef8e8d7f185b4acfb84923714f39ddbcbf9cf38a06bf6f5d621c22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_romanian.py\",\n      \"mode\": 33188,\n      \"size\": 13661,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"49630cf035c19e896a123ed6e5fee18b5e485123daf2f15da38bf727ff387bee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mac_turkish.py\",\n      \"mode\": 33188,\n      \"size\": 13513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99758a5cad2825cb3be3fa5d031e0821e4eba910a46f417fd890207b9b6be77b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/mbcs.py\",\n      \"mode\": 33188,\n      \"size\": 1211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6ed445ed537c9f856d8defe8b56505727737d0dc9348d0a877abedab4bdd864\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/oem.py\",\n      \"mode\": 33188,\n      \"size\": 1019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"481656d3a35f792d0e5109e3f821e6dbfcf097163a19b0cdfcbff3b3db99292f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/palmos.py\",\n      \"mode\": 33188,\n      \"size\": 13519,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eccf7418adefcc2a59e9a07fc4e34363bd62f7e878d48c8a02730a8ed1c584c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/ptcp154.py\",\n      \"mode\": 33188,\n      \"size\": 14015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0eabcb2c287d335e86b71b0abe5718bd6ddc9aaee234f0f0f2363845d2926d8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/punycode.py\",\n      \"mode\": 33188,\n      \"size\": 6881,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e1b1cae2fd1a76437c0f222490755cacc5f8e55fe21d30635f6588571878215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/quopri_codec.py\",\n      \"mode\": 33188,\n      \"size\": 1525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"502a213c34c05a94ed063ee03f47680bd6efbb35036e06fb4dc809bf398cfa64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/raw_unicode_escape.py\",\n      \"mode\": 33188,\n      \"size\": 1208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d61709ea224423c790d23069fe8ffb8551461e94a787bc5417a263e95f408c68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/rot_13.py\",\n      \"mode\": 33261,\n      \"size\": 2438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"033609bc1a50a8e1932a2699fd496c0d5f8ab740f215110c924ec35a128e4c67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/shift_jis.py\",\n      \"mode\": 33188,\n      \"size\": 1039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad4ac50ebf58294304e412cc0f1b12980988dd6edc414e4110029c0a1abbe966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/shift_jis_2004.py\",\n      \"mode\": 33188,\n      \"size\": 1059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d21c5930f21063ea78fea3b0f76dfb8fd92858d2a4a200064a52126a43dd1a99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/shift_jisx0213.py\",\n      \"mode\": 33188,\n      \"size\": 1059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c8d0b93bb36edf31c1236b1b4d1c0008553868bd2fc9137570115b96b834f2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/tis_620.py\",\n      \"mode\": 33188,\n      \"size\": 12300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"647c4719e2c1a7375105e15a89b377c66f6b699977dcabbb71d923a4607b7902\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/undefined.py\",\n      \"mode\": 33188,\n      \"size\": 1299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85bba5c5e1007cd8c1ade5c0214bcc825396d2bbd02054e62a9f162104748b64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/unicode_escape.py\",\n      \"mode\": 33188,\n      \"size\": 1184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17d59827cb8c05405d86b00bc6949316d179395e3556b3de90d1e94cf7d67c93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/unicode_internal.py\",\n      \"mode\": 33188,\n      \"size\": 1196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5230e071c3cdd02ed01e12376549e30de0ea9a5b6a1879f549ad24b919b23bfb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_16.py\",\n      \"mode\": 33188,\n      \"size\": 5236,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c36257f7b8d214473560d195e71bccef0c69a53e1e52d2800b7a7890aad7e58\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_16_be.py\",\n      \"mode\": 33188,\n      \"size\": 1037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3357196f3fa52433326a6626880e34964e00c5570aee50e9a0a0a7c6d86f6e4f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_16_le.py\",\n      \"mode\": 33188,\n      \"size\": 1037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3aedaf3eb49769282daef1eaedfd4fa1c31fe5eebeff67fe2307c89dc2e2fd80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_32.py\",\n      \"mode\": 33188,\n      \"size\": 5129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2072eece5f6026ad2d3549ab193a9e38894ea15ca9d5b3cd408fd6b116acc0c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_32_be.py\",\n      \"mode\": 33188,\n      \"size\": 930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbba20e1f6d0879c7c4293446c371a9f79e7c90bf3c78a77a9b8fc72b18915dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_32_le.py\",\n      \"mode\": 33188,\n      \"size\": 930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9134b91047d85b442898d59effe23e7e0cf4167ca341ae31119a731dbf880a7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_7.py\",\n      \"mode\": 33188,\n      \"size\": 946,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ff32314f4f1fa074f206bbf7fdb851504e5313128636d73b4bf75b886e4a87d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_8.py\",\n      \"mode\": 33188,\n      \"size\": 1005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba0cac060269583523ca9506473a755203037c57d466a11aa89a30a5f6756f3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/utf_8_sig.py\",\n      \"mode\": 33188,\n      \"size\": 4133,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ef3da8d8aa08149e7f274dc64dbfce2155da812e5258ca8e8f832428d3b5c2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/uu_codec.py\",\n      \"mode\": 33188,\n      \"size\": 2721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"991f4d2179008828a759c91fbeb1958cb623e0c993af837b35ab89f48d54cd8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/encodings/zlib_codec.py\",\n      \"mode\": 33188,\n      \"size\": 2204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ef01e8d3a5fe1cc52f7b5ae008df12f1dbce7304111bf8d4758f1bfc0115759\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 6992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee794108085eff250132cfd99a386e7d6db53c44b0fe61f2b5d39ccd97c023a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__main__.py\",\n      \"mode\": 33188,\n      \"size\": 88,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee735f518d0fc4dfec81f7aa3da1e052372ed4202c0da4eddd2587840beaecd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9738bcb7e29d7253972eaaef61ea5f212998a29e7c4988df6886ffb81ee74b3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3faf4510ba53513eb2fdd7a3e8f1a8c5f3e8b652b1b2e87272c9c6c63994be8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9738bcb7e29d7253972eaaef61ea5f212998a29e7c4988df6886ffb81ee74b3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f67c9b88edc4b572a0d2d97753dc2abd61d05ef834b5125eacb56e380bac953a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f67c9b88edc4b572a0d2d97753dc2abd61d05ef834b5125eacb56e380bac953a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f67c9b88edc4b572a0d2d97753dc2abd61d05ef834b5125eacb56e380bac953a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4d1449d13c00bf69dee9f82c980912530767b4831032a60df0cb3845b9a0046\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 833,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6fda595bd12c032184e575ae32284dace6ff492aae41c08061ab35072626837\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4d1449d13c00bf69dee9f82c980912530767b4831032a60df0cb3845b9a0046\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ensurepip/_uninstall.py\",\n      \"mode\": 33188,\n      \"size\": 808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a6e95d01c45e2e47c05df3c81073b895c97c1eb0e5b90ab175d6d9263fc81f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/enum.py\",\n      \"mode\": 33188,\n      \"size\": 33606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30c38fd06f6c03608525e8b350ec8bf1455b9ee15079ef3cb660a3da4f5268d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/filecmp.py\",\n      \"mode\": 33188,\n      \"size\": 9830,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71e084dbe941f20a098654135d4f3cf722f7ae08b436d20ab7f68219ee6b5e6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/fileinput.py\",\n      \"mode\": 33188,\n      \"size\": 14471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09830fe5b4fa1536c09bd8649982df305333749b29bf0c29330ea6649a3f721f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/fnmatch.py\",\n      \"mode\": 33188,\n      \"size\": 3166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"571ee522073062992aa4b01fba2c729b0bab37ae6c3d81106c264a00e743977a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/formatter.py\",\n      \"mode\": 33188,\n      \"size\": 15143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46f7d6271031b4716badb318ca47e29b99447cad7770e3922ba48091b9c898f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/fractions.py\",\n      \"mode\": 33188,\n      \"size\": 23639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70ce2235812ad1dbe74ee4225a2fb3c4297c5fc02c7df59b90f8de0b34afb8cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ftplib.py\",\n      \"mode\": 33188,\n      \"size\": 35256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23c0c595f0451c928f72fe4be85134d23974b370840e2a2e8248b3a869824058\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/functools.py\",\n      \"mode\": 33188,\n      \"size\": 31346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e0ffb08ab548e387850abe5a1f11669762b2c80b1f8fc9c908be31315657629\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/genericpath.py\",\n      \"mode\": 33188,\n      \"size\": 4756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fae1f627b5c8408c5f797f9f7170d90fee55faf178b6a65df934ae10e81deca9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/getopt.py\",\n      \"mode\": 33188,\n      \"size\": 7489,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efafb88c7c978e96bd6c232b7fa10bf50cef5e7fb0fb7dc8e5bce44e19f8c92f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/getpass.py\",\n      \"mode\": 33188,\n      \"size\": 5994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b42d1f49e0654c5f42dd5f70252be1e3d674f21db97e1bf62d37ef2208198a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/gettext.py\",\n      \"mode\": 33188,\n      \"size\": 21530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e9c44e6a8682903080a6260bd67fe88c653ab3ce33110458b171a42eda3b4f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/glob.py\",\n      \"mode\": 33188,\n      \"size\": 5638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"917d72296280f492d9e9ce0bb3211a0c12bcf3980f45c5affd516d022d0ea57a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/gzip.py\",\n      \"mode\": 33188,\n      \"size\": 20334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31ffacfa8347f6b4376c1a484be610c83eef10df24a84c055d8b9a670a9302cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/hashlib.py\",\n      \"mode\": 33188,\n      \"size\": 8799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4a5d754b9b1d6988e8d4337ebe0f00b0191c1f9d7d8154be296aa11ec71eaff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/heapq.py\",\n      \"mode\": 33188,\n      \"size\": 22929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4e7381978c763cc8800333f3d62fa34519af7d4ab37d2fbd913146d02d988d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/hmac.py\",\n      \"mode\": 33188,\n      \"size\": 6381,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38b1cce42ae2f0670adcc9aa6a9ba1fbd52e8a745f0ff68995de8666646fee1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 4756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d69aeb50f77de6d84c51b9d01e08497983bafe9297cdd1620bf75aa1b1dba1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3379,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea1aa5ceab23a007352e81ebed1a3fb542f6c2d00ac0be9cecc45e4990c5f6be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d518a62a80864e82391249f278060d43d32a48b227a3dd0130e18937d9aee049\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3379,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea1aa5ceab23a007352e81ebed1a3fb542f6c2d00ac0be9cecc45e4990c5f6be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 50449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e84a75fa1956a5364d806f664e362c29a48f5e5b4dd2ef3e09215af3d5033bda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 50397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e86cb3168d3ebdadcca18ea1247b8b11f3f3494bb7d4ce48f301e06b9692a444\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 50449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e84a75fa1956a5364d806f664e362c29a48f5e5b4dd2ef3e09215af3d5033bda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10747,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8685e54caf09d683cd2870bc2ca2006050792a6eb8e5a863a027dbf3f4bbe1db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c1b02446bd6ea813c363e691a465e507a28aeadd2b62ff56dc98e77885829ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11166,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09d4c9686b169be3f2e03561aba952363eac34a3f78f300a7e5c833b6c9d71ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/entities.py\",\n      \"mode\": 33188,\n      \"size\": 75315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbe69b7c04e3e75eb7b33fefd2d5ad730bff35c4a7b865a8ecfc041075f6f93c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/html/parser.py\",\n      \"mode\": 33188,\n      \"size\": 17729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e0b599e7914393330bd86599f9ddcbc6982e9ddd4fd73fa2d66d429d4d04211\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"272a6739e4c5fd79791e1e1baefb0bfe0a9edb5a53bdadde8c9b7b8741769d76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f22b29a9c65f433fd12ca666612a5e2707abd04d0ebc16912e03cd443a6fe3a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5981,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1f0cdceb6345a8778cc747bbe69d16a2d24f6be0233f8641d164f96f1414519\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f22b29a9c65f433fd12ca666612a5e2707abd04d0ebc16912e03cd443a6fe3a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3aed13c3febef876e26f10bfe39cedb16da1b7cc126d1f4b7f7176b1590ae9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 25293,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af91ec2b9ff550f6313d5faeca4e3996fb365db4d48f9243d5a79cf6c7f2ddf1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00f8b5cfcfb7b059d69ec35c75f86fd543c9d0c527846dd7aa711d7a58509f85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 53823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d0bcb95d9ae402b65dc2da392de2a766458c7ffd39faa9ca21826404502477a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 38153,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f39d11cd44d63f04bebb49d5c5c079faf08b1cebdb8679c0a42610269c491896\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 54000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f172fbb64bfdd784c714f82341aa348003ad34cffbcd38a17e15386eed0c14bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"835e4e3a716089854648daf58678408d59d9156b5161093c35a29748e416dbc6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11617,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"136f5359ce412e27076c5d9a67dc04692f249c0ead91bd8be6f90e17153b8cb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24dd9396a1077d175255989ddaec7d318817c311ad4100857a10be60df6fdd2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 32220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e32b7833d0390d2f68791b63b7adc7b426015462e9f514e231a15d23868e7c69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 20305,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dc894ad3c2c792d7abd9110225e20d7444a3c51694c1c89610c9638a95ecb32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 32220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e32b7833d0390d2f68791b63b7adc7b426015462e9f514e231a15d23868e7c69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/client.py\",\n      \"mode\": 33188,\n      \"size\": 55701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59ceac92239b0dbbb90dbad2872ccc3f19defe1266106fb333d04423d16d76a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/cookiejar.py\",\n      \"mode\": 33188,\n      \"size\": 76658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c9fca387b84ef9fd53021913d87485f0ea724c8f3a9b857b540d9993aaed063\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/cookies.py\",\n      \"mode\": 33188,\n      \"size\": 21390,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"805ea38dd46803da3de55345f950e6d0b56b480e0b96cd10ff3a59054aab908c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/http/server.py\",\n      \"mode\": 33188,\n      \"size\": 43792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c287dc24b301cb14e7ab806d0fc0412af9df9c8b12e890a14e13c3c9437fb1ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/imaplib.py\",\n      \"mode\": 33188,\n      \"size\": 53295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b703f954f81c07ad89f9fe746b3ae1effc14d4011bd60dffc2976e51b3cb62ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/imghdr.py\",\n      \"mode\": 33188,\n      \"size\": 3795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f08102d7d2e0d658bcf9a908913886617db93e9a0282762b2fd688e4fdb4f1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/imp.py\",\n      \"mode\": 33188,\n      \"size\": 10669,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72ca12b9bebc5cc2f7c36194edf7cff19965504154f2d3b8ddbd768b00834e3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 5870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"493f457a0ceca5df438908d1daef3affd68c16d12d4d15e4c1c6357d77e56a0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27b5166750d354bd2d734c72ea3b7e0d3ad2af59f545de8b6261075b253661ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26504fd294e2a5b3b98f2a973e393194fe3fa336fcbcde59247b5a79420de408\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27b5166750d354bd2d734c72ea3b7e0d3ad2af59f545de8b6261075b253661ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 29084,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2a8e4f44ddaa90fc64c5f1c1900b86fa620fe2b3d68548068be8cf0d817fd60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 22249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4a930c2a35df35d426c8cf95b5109ab0820bfce7d4c4cc5ba8914bad5782f91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 29116,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb759c600c0f08ab0a7b3b14edfd3f52a3d6df659d4eac5da6619d83295ee13e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 38721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16154cb0b31b4cc54687d27adcd0973953bc80fae249e038830d574c9e1a9f37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 29099,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c473860d62fe786b1da6e4f79569dc6a1cd41e3341cc5dbb1199e22a80cad7fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 38903,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a02baf03a366d88e4b5f2e759e231ad7dade54035db08ac26c54b98214599c0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd11903980503e23f361cec68fed51c6898dd5d99022902b124344120c49f5af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5482,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de6dff44db84ce35d1e5ec41a28ec6ebaaee5ad084d20aa92660b4efc5961765\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11295,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd11903980503e23f361cec68fed51c6898dd5d99022902b124344120c49f5af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2438e252385d1d83e80abdbaf919bbd49b0b4b1971d6d1d3c46ef2428d574c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4f0d4e1f150fb0e04833e98e89abdd90c565d676bbefed6f0880d25738c9e89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2438e252385d1d83e80abdbaf919bbd49b0b4b1971d6d1d3c46ef2428d574c3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f63e787d3ccf0a054250e8e857c48e53ae2fb8268aedce0ae4922b10824fc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d08790fe28e122f7235d3992de95077c465648f153130df0d783f6f5e6100328\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f63e787d3ccf0a054250e8e857c48e53ae2fb8268aedce0ae4922b10824fc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/_bootstrap.py\",\n      \"mode\": 33188,\n      \"size\": 38843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"377e75d3416dd70d6d1cda97982e8a9432a175076cd0651579c2924dbff289ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/_bootstrap_external.py\",\n      \"mode\": 33188,\n      \"size\": 54487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97c86a816e2e543c5b712d432181fe268d8b9e0e947727cdc0fa0ec803dc6892\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/abc.py\",\n      \"mode\": 33188,\n      \"size\": 10782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30267c1926d1604ffc7eef4a4db65dd2f3bf6ea6d06db08dab860ecde1ae0984\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/machinery.py\",\n      \"mode\": 33188,\n      \"size\": 844,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8675d9b5553ae4ce0a01005bc47a199b9167ef2c4217a4bbda8f457170aae8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/importlib/util.py\",\n      \"mode\": 33188,\n      \"size\": 10883,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c89c149b3b76fe889eb04b7bfdff227f12b3e8ac2496e1f23a3fc5069f9a49c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/inspect.py\",\n      \"mode\": 33188,\n      \"size\": 116958,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9caf37ad1e788851ff4e2bb20647e9ab350177d98bd860b5261502306807012e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/io.py\",\n      \"mode\": 33188,\n      \"size\": 3517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85761cb75b890461645bb4a3235ee40abd13f4f8d9c80b4078bf261bc7d8128c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ipaddress.py\",\n      \"mode\": 33188,\n      \"size\": 74551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7fb6bebec60583f83c667455c525807956d5739dd180e8db5b95d87c59170f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 14396,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07600c60b9b451622c29bc07a0546f7a7cca79c355b13dd869472a97e3f600d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12643,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50ae42c9154d2bed564b793db92ddf422e978280d91cf5836ce2ac7cca8737a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2989,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf09894f46ed8392c2ed68f8786ca17a138fdbe84556980280ed8b3b9ef3a766\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12643,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50ae42c9154d2bed564b793db92ddf422e978280d91cf5836ce2ac7cca8737a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cb0a5d494f1b3b76b9b0ed166e203e849e701b8e6f5c56f40c1edda3da8b1cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5809,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86d501b52748e8b0dcfe4467f01ae57118e4d8249e0b49ab0bdb7d48b798e3bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cb0a5d494f1b3b76b9b0ed166e203e849e701b8e6f5c56f40c1edda3da8b1cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"267a96f8ab5292ab576b2de13bc5e73598c9dc1592299d4ca20f67ab9a9a2f35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6908,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ad9cab390a64e0c92240e75217d34032c2d6395fc16987952d826ed56e84e1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"267a96f8ab5292ab576b2de13bc5e73598c9dc1592299d4ca20f67ab9a9a2f35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdf62aed727e31983d307312a226ddc8d90cf693031a6c3ba8c5758f1de1cd1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d12c415d587a24906822aae4333ce1762d1fd56a74fb0a33070aaec59ac5ae29\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdf62aed727e31983d307312a226ddc8d90cf693031a6c3ba8c5758f1de1cd1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1dab95b03be4141cc1eeb976de2a10883a9d6c89a1ae11386cc30071caf31fce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21fb01a3115ecb721bbef7669ccc1ee13f735389d47fed9117835d626c985e51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1dab95b03be4141cc1eeb976de2a10883a9d6c89a1ae11386cc30071caf31fce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/decoder.py\",\n      \"mode\": 33188,\n      \"size\": 12585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9acd0914bbc0eaaceeb275e237d8499570bedb1491446968af829517c275b36c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/encoder.py\",\n      \"mode\": 33188,\n      \"size\": 16020,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89da4a91a5a672361b7d285154c0efffb704cdd266d7abf27fe12e71799e11e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/scanner.py\",\n      \"mode\": 33188,\n      \"size\": 2415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"012d5cf2a29641ac556f62e21644e37dce77d0ffe3dc0b96123c57ad44aff315\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/json/tool.py\",\n      \"mode\": 33188,\n      \"size\": 1645,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d38884439e4ad82b98fb2d8354c0be766b383c6fa73f05b8662343dc0c2913e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/keyword.py\",\n      \"mode\": 33261,\n      \"size\": 2219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1441c0c01ed3a4763b796cf2c735b35d355d5dbeb8cf5b901dc0b6b103053807\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_asyncio.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 55536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15cde316e9292420621ccdc436c20834b450e6574ff77daced601579aa62b26b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_bisect.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 13712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cbfff70436c338b09ad8dcccfc46eb6034d754825ccada3975139e4bd8f06d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_blake2.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 92560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8464f1e81a857b698a8fe7b046194107dbc52c647bde73726db670ed8e83323\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 23072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdbaa22663eddf2d6a4860cc2b43344c68c623582d56782041495387ea31332e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 155128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d3afbc6df7dba021ad9b771eacecbb541d1934c32e99bf859d173d7dbc8cab0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 159088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9382652d99fcbb88c3126f6ccead7da06c890649d505e6b1c67f7d3868d1de46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 24272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"881ecf66cc144f4c1550c5c2f6c439bb861a286f13fe69606f43973becada07c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 269856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a86a059a86a3f792e524da1d549168bf72d4f622e0d4b9a5ad202052c512812d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 138664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c329fb5c4f8a0f5596e983dc0386a2cc3990d6abcecb96cf23a80277a527a62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 114040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44179e52d5c74efeb0568ab4ead85988c79bfe1423bacb670abb0c468e18a169\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_crypt.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 7768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a48487fd42a38f7be6d38c421974c0055a6ba05f4ddb89348e784d87654471f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_csv.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 39512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b450c58119c41ec26bc62655b8bbe49782d4a640abf7fae4cad9b184b5cded6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 129176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4caf59b9360ebb5270d4c7f3985bd1118f896cea501f676d611285eada2b2ed4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_curses.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 96808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5878b1acd398fe7ce1d5c9e259f652a809e64562ee1a100a18183eb71bcd7a37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_curses_panel.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 16440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98a1cefb9b650594ddaeee307094dc8435b52bf5f5577414ab8d561bf8b2c59c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_datetime.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 115256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8cef1b79a81cf1f97f11f66775c798ec0e5f01d674412208f5f8c757a8dd6c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_dbm.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 17272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"995a2088f53d4fe470c0b324e4080c1227e4c12fc6b6eb8ff68b1f7a36d603ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_decimal.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 311256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4469c04f2eb551548e22111283b12b9499395a47198a4ead2103eb97558527a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_elementtree.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 76104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb56cd0800418814bda940eee9e5799c1def11bb73e8920b697aa7db58110555\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_gdbm.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 20432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d44ac03a88af2a9b5f11aa281297d8b8e127ba5f6f886cd9e8d3a1bb16117781\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 47968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"847e7a7fc4f0e110b3b6535b9c6598c95276b8ff71759da4a63aec1398255908\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 23064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b990683bd05f6331a36549791f714503e8c2196dde1d98de330742c11201bd2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_hmacopenssl.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 17280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f90db7acece4a4eea55602793d6406f1438af69587587a7a2a2cbb767c50b594\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_json.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 80136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3819120254252c1174f87aaca0ecca213a7ef7e598a41b33785cbce6708ecb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_lsprof.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 22448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ae3610723e7f5bcb8f52b7d2782b2f86a87e5fd7a5d2be8f74fc0be3e507b98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 42880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86e558535e10ca0014312039a9b5197f2aade80a5ea09d4256f48b15afe00c03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 49648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2d631c2d517bb76bec4163eeee6d2df980fec197609e41941f063c37a2113a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_multiprocessing.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 16888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc04d25a5d96c810c44539901f90b10b68a148daa13e9112bba1da980d009321\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 7520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb258a371d9c34e6c156d9bd32069f07e4c4620046f154e02dc3b34ac5e81b80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_pickle.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 131616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"120e17f26285949acd128c2dd7170a1f3bc9d734f0a594d674966a3b31887299\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_posixsubprocess.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 16616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c79cbafb8db9c35b9d33f6a7e4b11bd7e70307a0dfafc0526a43aad4a5ed970\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_random.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 20560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77161159e544941002b3df2a2c4e8140748055b834e7a8972b95792f65a4c99c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_sha3.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 102288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2644345b632e909971abf7badd3c61f1a0badc3d9dd4e9344752f8f8e3624e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_socket.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 88928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a6eef916d7d57f638f7f1b265c383e47cada0923fedbcdf680f470986761186\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 97600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f27fcc0d1b5bdba9796a96d5b95853fab1cff426515549a49a744c8184ec0fdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 116256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d65536c65d20998d5f9ad240894626b4cc813f7cbd92f495f002adf1ab27cc3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_struct.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 52728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad656b841ee2ababf36b1d240147ec7a07f5a0e5073229bc6bb30da3dddc1d8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/_testmultiphase.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 23480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bfe94d5fe01a078f54b2108e1bbcd53f657d3337fe9546f1cad5eb5eea44547e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/array.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 66096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4c3f234157dab738aeedee9583381b03bf22f0c026b3735a1b4b02a76408e8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/audioop.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 65144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcad2080e2d833d6ea4d0724a323b4de48d1b6ca5caeff19b949f36f966a54f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/binascii.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 30880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f7e365b7285c08d583fd6f56473b0de5947d97870ad13818d654e12ac363ef2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/cmath.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 68840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4764b57ee41f05063c63efd936a9cf1b7a251c36b7b42236bcaf2878b42fcb0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/fcntl.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 19480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"836305fcc60cb0ade9ee1e6a316746dc3d97f44e421938254a4f2f5d0094e475\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/grp.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 13224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4d42bacadc4bb3e99f9f38a9c1396042d1fae3f5bcf1e6052c90e3991a2e04e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/math.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 59392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b56142859db49cd338dfb2bdff5fc039225cf115d7b3e8d950b751262087f258\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/mmap.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 30600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72673c0babbbac7fdb8139de60213bac988fbcb9e40aa8b2d4cfd0945992f189\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/nis.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 16616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"554db85979f46bdac69203d0dfd71167836f7b294b7eacba0f03355b12a8970a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/ossaudiodev.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 34360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffb901a529c414c07ba90337abcb45184a67bb6b7ec04289b2af53b1e7ce7ad7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/parser.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 29368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12c921aef1381e5dca01d41dcdf16379eab25fce29d7e3b3a0d2cee1a5580b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 66936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9cb4fda46d263ba1126bb864f5eedce5e43c6a0d0122984929cb9151ad5f30f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 32784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e4f044a2009232f043266b5f751a0cc9484f8e17b898b0adc8348d32883a8c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 16440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"188a38dc1a56f7b06e46c4007522b9e10b56e94e8454d799dbb04915f0f28ad4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/select.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 29288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da6ab0a771b0d557d5e5e53a1d8d38e1c715eaf3effcb3bfba9a0d9858b33e9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/spwd.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 12976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7272a861f134a6876db5b68f54138fc4049a84041c34260c8caf27d76bf1e8be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/syslog.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 11808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b1bd1e518e30e583685ba9ab4b7026115f7a7dd4d6ec2ad0a19d71418a9f7ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 25928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d4864c674bae1841da1f4c91b986f1c298ee087f829e3f30005190f547d8a7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/unicodedata.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 899608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6257e417e2c19511c11bcb9d6ebb0f300833b1d9da438033cb206d2678a857f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/xxlimited.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 12256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc851877fcb1b623112d1a40efbfbfc928272d99e1f73d206149201d0221fcd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib-dynload/zlib.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 34424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28d401c47f11348a013bc84b93349b925423a7a78ef691128648524886f121d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/Grammar.txt\",\n      \"mode\": 33188,\n      \"size\": 6562,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c6b408ed690ac689a2792ca536a6990dfca3ddb3cdca295d90b24850550d380\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/Grammar3.6.8.final.0.pickle\",\n      \"mode\": 33188,\n      \"size\": 32252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddb14b28bee69da5714b25dbb14550c374d64512fb038ee97ab3fa3ff330637f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/PatternGrammar.txt\",\n      \"mode\": 33188,\n      \"size\": 793,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee5ba5db3b6722a0e2fbe2560ebc1c883e72328ef9c3b4da1c7c5d1cc649bce3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/PatternGrammar3.6.8.final.0.pickle\",\n      \"mode\": 33188,\n      \"size\": 2093,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edb7f84f6a386161434bf3cdb64db03b29b80717cedd1c492789578454bc3d05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8204cfd372ee45f79cb744ed0565bc8d486716115a546f48477c0719b8a6bb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__main__.py\",\n      \"mode\": 33188,\n      \"size\": 67,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7b09f90e66dea194ad63dc02c6425dff977d16f1f21a157b7475905c219a707\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47fcb989b09bd481690d51f14e4769ee6c4544627ac7d731ae00e879f7c7fa86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47fcb989b09bd481690d51f14e4769ee6c4544627ac7d731ae00e879f7c7fa86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47fcb989b09bd481690d51f14e4769ee6c4544627ac7d731ae00e879f7c7fa86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcdc376e1accd84e66726d2d7266cd9d18461abe734239744ecd5298a3bd0ee7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcdc376e1accd84e66726d2d7266cd9d18461abe734239744ecd5298a3bd0ee7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcdc376e1accd84e66726d2d7266cd9d18461abe734239744ecd5298a3bd0ee7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4934,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22a3244317e2cdcfbd21bdbc00f9b283f78a859ef4966b92483f53759fdd6486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3363,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69915fd36bb4a802ee33bba8d0aff18e76652602accdc09feb1e4a9ef549e691\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4934,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22a3244317e2cdcfbd21bdbc00f9b283f78a859ef4966b92483f53759fdd6486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6133,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f422eea43a9fdbb41a0ea8b77e8f3cc15f29c44156059d33e9ebb24d0d45a839\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"715d70e5a69fb418596e3327cfc57da510d22d14930a943d14544035bb2f25f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6133,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f422eea43a9fdbb41a0ea8b77e8f3cc15f29c44156059d33e9ebb24d0d45a839\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b07a9259ea5197a729e38c0debb7957e76fbd682efdb54ff75e5b4468b2c5def\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d81cea93a02a4df179283a4bd4b090ddd1a06ebff3200e173c292fb45b89fd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b07a9259ea5197a729e38c0debb7957e76fbd682efdb54ff75e5b4468b2c5def\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"280809fd4e6a464f78a286f3c1210b2feca139dc343f9e66ecc0bfa5ad5323cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22fdb7c90d9ff0bdbf5d38bb275def35b84ed331f9c23d29260866eda8414e6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"280809fd4e6a464f78a286f3c1210b2feca139dc343f9e66ecc0bfa5ad5323cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8498,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5f1d8f4aa505a43c97ddc530568c5d6560ca2315d0c3c55151994829ca926ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2268eb0a2065e5b95a1f0feaf0836e041a2493d52238e98088af5f279f25917\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8532,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35be8216ecde0e09ad0c0e11779f0625ba7c2ef7a319cf80f648b004cb8b6783\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2de1c7ad2f1e2678c745d84d94dd2ef1861a6f57e9bab53391cc80b74d919fc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4281a1aed460c01a0ecc4b87fff4a7c554dbadb1829f0d191e6e496482624b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9778217e3c79fc9e5ec5146271abb1f444e0f7715ed65cf527453495ea7c51d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1178,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b72ce30d12d1e84bb197f8ab03ba53f761c72a1792e13ba999bf18e8ace8539\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 973,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01e6d0b19131f399d3f722f526a3e45923b9b3a012ccf5dad5576d32a1f8087a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1178,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b72ce30d12d1e84bb197f8ab03ba53f761c72a1792e13ba999bf18e8ace8539\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bce260566aa2b9730f5253d12458bf9fda7a64bcdd06223f8f7a0df093f5af4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 15055,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"967998cc0eb2ccfcc97bea76dbcebdf425c0ce446cc17dcbaae5161aa520f2b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 25136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af7400a7910b8195925be66bbad081d5bbe642f46261414a82e42cd5524fc9dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20758,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"169ef6cb1ef4ee7b76e2a828cdbf4ffd99ca1760f29b1a6f5e855c1af1d6a707\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 16710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2adcbafe5b3abeff1bbee3e5cbafd4febcc55d9908a92566e57c036cd3a90202\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256ec82bc3dcd1aabd76929118f5581d8e5e9d6284bbed54c0a3e83f6cc5f4be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/btm_matcher.py\",\n      \"mode\": 33188,\n      \"size\": 6833,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bfe28964af5a713ba25af61d4ff9f9229afb07952aa460501b7f57512a2d9186\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/btm_utils.py\",\n      \"mode\": 33188,\n      \"size\": 9966,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79d210510630052adafcc7c4ad8cf16acd2fd8e9adb46deea952cd81bfbea661\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixer_base.py\",\n      \"mode\": 33188,\n      \"size\": 6690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c795a53ca849c42212c8ec33a74284e0377df852eb4ea599aba62d5af1df282a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixer_util.py\",\n      \"mode\": 33188,\n      \"size\": 15207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"229f893e48aad6afe5d928f00053681b142cc1a1be9be1cc0f1b28e1e00a9361\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"836cdb388117cf81e78d9fa2a141cca1b14b0179733322e710067749a1b16fe9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36ee77195811aea038ac0d05b0a45bfc4bd0177bdb46a11931e74814944f7d73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36ee77195811aea038ac0d05b0a45bfc4bd0177bdb46a11931e74814944f7d73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36ee77195811aea038ac0d05b0a45bfc4bd0177bdb46a11931e74814944f7d73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff8c3469125c9ecd86256940f9ebf44d4caccbd702162f9f5ab4439143519183\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b22622d02b475c74e8056442dfdf06870280e9a3c46b24df5586d61aebb38483\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1677,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a58aee581c098dcfc7d69378c55d07239c0daf50f87201fcebeb26eb61348bbc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad0f586476a03842b3553af17bedc4152cd0b3f17f8bf17ef9d6fa13f018ae2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3462a395f419079d2c5ad7fd3bc9850e69100f6327eb8177ced5d2c42893ddfb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad0f586476a03842b3553af17bedc4152cd0b3f17f8bf17ef9d6fa13f018ae2b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00d1389df4e431cdaed272a98b01b567d9ce0204c529761ec8e436ee461b5a97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc44af5605154f13b79c1bf020ba65fb226211cb9598d9de661946ea15a6512a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00d1389df4e431cdaed272a98b01b567d9ce0204c529761ec8e436ee461b5a97\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"541ed09665cc37c94ed8a6c8be285d4c2f17884e2d78f395dd6c494f068429ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 718,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f85a80ddbbc90489d160fd7cd5dbe2d1f574580b94888fdbde68b3f2a8f2712f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"541ed09665cc37c94ed8a6c8be285d4c2f17884e2d78f395dd6c494f068429ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3226,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a777c14ab3e50ad6c4bb9df8fa049f42abbbd7fda6baa895d7f271ead6cbd017\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2332,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edbee6adb273e465781a0ef14c44c9ade53ab6f5a0c1ec0f86c7fc13a28f17f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d591b4dfb58e1a580f43e6f7e0d5a51e9ba211062986a3d059a1c17fab62174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2797,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b97363053970465c62e87b535e15dff6be0e935945cd6368caae95f636e5a501\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2351,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b7f57f7717f30ed54450555deae404387e774f7e27fecac16f5d6958611b91d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2797,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b97363053970465c62e87b535e15dff6be0e935945cd6368caae95f636e5a501\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ebd944ab70781032c783fd973d70121984d41994a302acf439d38fda2084d25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f59078be39db5b2ede3b569220951f6b790f28a6e334dbce36b0797a0091e17a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"542fb9b9f7698af8913789bd0d4d53bcf4f6e16376d0f7811401de40fa1ca1a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2985f91943f6689dfa0b8fc88512191dde6b1fa2a80985ada18aac524a785d03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60764dae28f07ecc121df51851e78aa335b17a64da3bd43470d6eec3e6225057\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bf93b601985283f4e95402e714c9ee9009fa0395189306e7bc3a2088b2380ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e6214667117a3e4c73df699eddc7f693e443a1d29cc069e062eca346cab78e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"428e48fb553feba8df03693a363b7b9aa4da6a60bd7561047a6041959297024a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e6214667117a3e4c73df699eddc7f693e443a1d29cc069e062eca346cab78e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2340,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aefd3e5569fd1eb7e42880a2561bb444b064d164c95a89526c6d47d30b2e0d17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34a509596d7dec699a5ab8b41a89baa9778031c670d201972f235f49f5dd82b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2340,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aefd3e5569fd1eb7e42880a2561bb444b064d164c95a89526c6d47d30b2e0d17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66767ec41cc8b10f274f5d0f495a6bb524efd4b68149c7b646f4389d0309eabc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 885,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ac573520913ace04e803dc1b2129c7c4c74626399fad0514731a12768aa51ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66767ec41cc8b10f274f5d0f495a6bb524efd4b68149c7b646f4389d0309eabc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcdad7089f73409be535e656f7547524d14aed5ad8679f0c272103384bf2ab00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 660,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cad1f54ff24cfe7e21e49a353a6c7bc6223dd4132cb6476a28daafb2e49c4f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcdad7089f73409be535e656f7547524d14aed5ad8679f0c272103384bf2ab00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf2e59ffb311a579b1febba13f95d9a0ff4cd95525b4fa9b2b0353ede4d9ffb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a5818ac08ba9788e21a29fb6e13c5960d449dbd8a29a0389ef5eb4cd8dd7e5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf2e59ffb311a579b1febba13f95d9a0ff4cd95525b4fa9b2b0353ede4d9ffb8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a26b739a3007868c0668a56a71ac606232d464c61d45c18bd5ef5210e79eb76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"357f89047a01b40f823018cd059a7fdc0d8cb020f59e6da26e004472a4cb80e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2897,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e913dce290d6af9b40b1cd339f5beb70e47196e5f5c5660db58fe983f68b3ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3163054072e9c0452ad19a375dd4c4fd78ea3a47d037fc3f6a20a1ce2c506729\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fdc683899b85ec841dc56ca8694488007a8dbd667ba1dee1a3b4c7722b8d34c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3882,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"731a557cfce2d890edc892964256b8963bd05cd64cf098648c4ba1c348205f60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2769,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a528f494c224246dd83e8ea686f8f25a98ebbb079913dcf7dca46b66158a85b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"409935717b0e7128e99236793e7a5d6a6d348e03d01853001a9d143194250bb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2769,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a528f494c224246dd83e8ea686f8f25a98ebbb079913dcf7dca46b66158a85b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94a6b8a5a76b1ba3bedde39a530b8712873d7c7c0c599c220ae1a93432215ad0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5386d03292631c98b93bf052403a7e629a7c6ba4f96cc3cd56acb7f0770598e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94a6b8a5a76b1ba3bedde39a530b8712873d7c7c0c599c220ae1a93432215ad0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fcc4125a4cb68c5f402584bcffd10664c96443f65d58ce76d4c99664c513381\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66809853fb419bb06e361e11c06a600a1172504638cbdf910b885fd01cda57a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fcc4125a4cb68c5f402584bcffd10664c96443f65d58ce76d4c99664c513381\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"881b634d6fd865833335c8ca14d3cde608fda65214dd8cb64b316d532b3eb7c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93b7e24e00d290e7d5a09d84c57c953ff7ae17f540a83a92f2cb5dec7f24f565\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"881b634d6fd865833335c8ca14d3cde608fda65214dd8cb64b316d532b3eb7c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c8e66b78ed075bffbeaee117a8f0f368874f3d57294c933bd8578db3ee9e8ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23696951f5fda49e2e3df771016dde1d7b08d66585cc0ac8a85f981a0e5ce853\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c8e66b78ed075bffbeaee117a8f0f368874f3d57294c933bd8578db3ee9e8ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"981c20aebbc8b976e74b490040adef22025397a04397aac2cd8f538b2b71f7ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f02df9b1604558d69768aeb90c9cd2645a11206f785a1de7387057e97f5126d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"981c20aebbc8b976e74b490040adef22025397a04397aac2cd8f538b2b71f7ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20cbe17960acc2598742009ee2723a95c1de555553e65a11651b1adf97b38542\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16d3ff6c188495922aeb7f440e05c936a4a0de44d0726c42d937baa4beceb57a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20cbe17960acc2598742009ee2723a95c1de555553e65a11651b1adf97b38542\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b0431063e2be669c6bd24902d843c67aaaf328a7fc07a3b86f92c7b47aff9b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d30150f197f1df78ebddc4547134ad6a860ef0495918f88fdac83db0f861d3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1588,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73d5e4ce0b6a30e10993100cef15449b20535733769f1e311d96bc0afbddfcbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36cb255ac4de875c968f35d4dd726614ca46f9b06474d8d379c2b5cbe49efc92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"785640fbec7e70008cc2efccfe9eac29170603a5d8d138b8e79e93c0a908c6ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36cb255ac4de875c968f35d4dd726614ca46f9b06474d8d379c2b5cbe49efc92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7280c9e8030510d08f51c0a48b1d10a8ded7d0462dc6b74f278f949b6fbccb87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56db3298976e001501323763a28c62434d70b1575e31bfe512d8bcd5ba832665\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7280c9e8030510d08f51c0a48b1d10a8ded7d0462dc6b74f278f949b6fbccb87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99e0a0a3e1b7d4aab1a684d64801c5bb02e9418fff5f17c4a3fba98e6402613e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3933,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1468ea0b74a0ab8da270ed7f786ffd6277bbec4aad37dfe322c90947a5362bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5355,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a90d1fc85863293890e6b8d2fa909e759212131bd2c6c2a7ed33c2903beab87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ad3190c2b940c74bdd1b1b6f2d1c76d8e926f272070dc0cf7763153a7cf0c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 839,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c57da36c2e4be9b16c9107f4bc1f3bb200f5bcae6dbc4be829264d846f944703\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 915,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ad3190c2b940c74bdd1b1b6f2d1c76d8e926f272070dc0cf7763153a7cf0c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e11c1fe5cdd467d2fcd40173f3cadf5aeea2df2ecf60a4c1cf8927f65f38f202\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 741,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"657f7f1df1dc369e06c62e53909a021084ba16152e852200c8ab16a329bc0a64\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e11c1fe5cdd467d2fcd40173f3cadf5aeea2df2ecf60a4c1cf8927f65f38f202\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3011,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c28b55ea93075e7da9a8aa3895047284d91aabb65cb5796bf5450d005988c61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2948,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80e02a3c8a6065a39cea39f4215c94b30b9b7fd39314684202d30b4877b0b3e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56253e119aa1d7af4a711b2a0839d8fdf1acaf9af3e3bd9372cd649453be710d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d8e97602d667278c76c1febcaabcc1c6d519ab077e71123172a837770707ad9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f075db1250cb684839a3248b32b8289e20fb8b33e065674c1fe618ba924ce4fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d8e97602d667278c76c1febcaabcc1c6d519ab077e71123172a837770707ad9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec59db2aec1ef5dc0ec696cc2de938ead6d060820e8ccd13f97fd33c5a59dfff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 946,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee8ae637f7350a19e1f07184fa895f5dd5f8ef251b4ffb6e6c86c7f4e3032244\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec59db2aec1ef5dc0ec696cc2de938ead6d060820e8ccd13f97fd33c5a59dfff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0c56164f40abd71a6394f67a8df7938b5a91667469b51580d1a798f01cd0e8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3729,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21b17758227521f66cadbc57d48760af5be4b47a9774970afee4a9df2b5ca04d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0c56164f40abd71a6394f67a8df7938b5a91667469b51580d1a798f01cd0e8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0f75bd7892f0d174542e8ca172cf794374735eb8f7eeb4a9e37d25375d98e95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3bac645fc4d92a4db259d22735dd44491ec1a4b67f5dcf22cc6697420089875f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0f75bd7892f0d174542e8ca172cf794374735eb8f7eeb4a9e37d25375d98e95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2230,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5523ea632193e53d6ab6ddfaf165cf72c909054838c0a56bbffb763490d3cb59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1943,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"739be2aa7adafc4a5f1f7337d2236d749340cb6f4bbb794216cac915a28208af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2309,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da2eee13615042c12e14e4da9aeac929cb5c7ffcaffa3c7537b6daa33e54f867\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71a2a8070681e5ccfa100dc82b79661ce0d7524b6de3e4c2af9e6f0b7413f42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1605,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a81f3039260976bcd0654367f8b080bbe7ffda71ea0734d4df328edf68ee0d62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71a2a8070681e5ccfa100dc82b79661ce0d7524b6de3e4c2af9e6f0b7413f42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 774,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c949eb7c4eca510bf5fc90f11045a587cba8ee984de660cdb532e89c1858b36e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 707,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9abc17bc9ad4670841b44fc587d797420063f4eeb7411419c19b60ad2f64a9d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 774,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c949eb7c4eca510bf5fc90f11045a587cba8ee984de660cdb532e89c1858b36e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9375b94ac322db65cfc05a3b20aa929cddc557c328431e8cfffadf6b7432ba18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 979,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aebdf7bc7ba079b4c9b77c2d214ac26ed06ef51bc1012e7567a00ab45ddcc172\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9375b94ac322db65cfc05a3b20aa929cddc557c328431e8cfffadf6b7432ba18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef806566016b0fed84e144cbcfc0cffbeaefed71f1640754b49f5f08d8cba379\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03108acaca7ebac198a26514d6a75acb7f2523496232d5ecdbcf47313bf61ab1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef806566016b0fed84e144cbcfc0cffbeaefed71f1640754b49f5f08d8cba379\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"471e3ddbd3edead9de72531a6f4a23708adff0373796ea1f7cf5b86ea7b57625\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38cc2c5a38ba4fdbeec786073380eec878976659b5b585024740fcc8aafd4ff2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"471e3ddbd3edead9de72531a6f4a23708adff0373796ea1f7cf5b86ea7b57625\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c7e98804723a6b5345b9e66e94cd8931c6b79db7b13a469acd26bf6503ac466\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"905667c274dbfd534b1d9f077e343c82ff5203cd97936c7ca7b634a897745eb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c7e98804723a6b5345b9e66e94cd8931c6b79db7b13a469acd26bf6503ac466\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1666,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa1112a506d52086c907c29afc695ccab5672159fd813a0c1261931a21c2210a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1591,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4716642ab570b70f05eb8ccda2981d901305fe43a4d2942e4da13874d713ac30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1666,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa1112a506d52086c907c29afc695ccab5672159fd813a0c1261931a21c2210a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f7343a12db02d5df917b41ca69c0633106f18568de0ce7add337b716501f3f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 645,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1812f4cf92572332724aba7cefcc9e05cafd93170f62a33752aca1964e3699a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f7343a12db02d5df917b41ca69c0633106f18568de0ce7add337b716501f3f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e8613807ac080507bcca4d1ac8f76f33d8e52d221ebbd2962131a3213f94c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c3189bd1ca8c2a1b1cb4faa9027b09ec40d9b402eb5fc724140386929aac2a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e8613807ac080507bcca4d1ac8f76f33d8e52d221ebbd2962131a3213f94c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5aafe5f89d3298d70ef7d6d4ee799b0bcb05092fea870014bce452d5f404394\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1550,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2de107729f776da10d554900889643707dfc12362201ae243511df20b9d11d9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5aafe5f89d3298d70ef7d6d4ee799b0bcb05092fea870014bce452d5f404394\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4575,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fcbb002b96f362752abbfeef69b2edabcec5e3453ca936a8dbf9ff672a50c1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"806e020efb5adeb43dd5c3011eb9f78bd6dedfc8a767d551728bf40605fb8234\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4575,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9fcbb002b96f362752abbfeef69b2edabcec5e3453ca936a8dbf9ff672a50c1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05732ff12467b48b9cefdaf4699c7f2d91d27fd225786457a62f81befa42ddb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52506ec870f739cc489ef2dd6e370ebb2ce0c945994b942858b93a9e5456fd02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05732ff12467b48b9cefdaf4699c7f2d91d27fd225786457a62f81befa42ddb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e365b278465cdc0c57dc554e596f134ce29ca960f44741c43156d401c885305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1343,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc0245e30db52dfe84d3a783207251a76d27d8eab63814f89220464ff8446798\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e365b278465cdc0c57dc554e596f134ce29ca960f44741c43156d401c885305\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1384a27fcb66fbea3789216d449775b5e1320066bf82dd047a186e0322ff2a0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5409,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b92387a95fd906456a514f04ee071be593e86983a3dde31fe18d5d76e897174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1384a27fcb66fbea3789216d449775b5e1320066bf82dd047a186e0322ff2a0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcbb7f4166fe9d68e255668c660dd01d8e15639b03bc89af9eb9d3ab3734669b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb655b5c9faf12515c27a901321fc9e0a02d3e49b25499c06e3ab58f6e815bb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcbb7f4166fe9d68e255668c660dd01d8e15639b03bc89af9eb9d3ab3734669b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4aaa6d44166adc83994da8ff41b7e31db6f09b433e3720bdbccacffe0917eed4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"145b2f20d9c89df522355e8d3ca97702fd24aa4eb4338420cab23f821c4cdae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2517,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4aaa6d44166adc83994da8ff41b7e31db6f09b433e3720bdbccacffe0917eed4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"941f0d77ed2f29c362e07b4bf399d03cfe3860706097e8d188f83a7dfda05fd0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b90f0ab7044ac4cd68e0010cb7e84713309648391caefd1e2f85bbea9c8ecd42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"941f0d77ed2f29c362e07b4bf399d03cfe3860706097e8d188f83a7dfda05fd0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b26c62eadc02d8d5520fec36fd6ec580c03ed7209e5e93b80cf4f4ee3a28cd9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5e6667b0f966eb1831a0c5efc5fbf89719bed2c4ae57ced1f88a22e6a391fd3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b26c62eadc02d8d5520fec36fd6ec580c03ed7209e5e93b80cf4f4ee3a28cd9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_apply.py\",\n      \"mode\": 33188,\n      \"size\": 2430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bde1a37871cac0ba05b531ff989c2e9433f9f93bcf295551b4acf11ae725e52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_asserts.py\",\n      \"mode\": 33188,\n      \"size\": 984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c77972812cb5ec0a72afbce3e1d618c27ef7b239329c5c952c2bcbe77dba5dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_basestring.py\",\n      \"mode\": 33188,\n      \"size\": 320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d041443d6499a735bb78fec9da1bf33b3d034b5192c98bc273b16a44692fc88f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_buffer.py\",\n      \"mode\": 33188,\n      \"size\": 590,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2da37b49c30d6a0b4db43146ebb4ac8e5ffcb9814816b4742e464cb856977883\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_dict.py\",\n      \"mode\": 33188,\n      \"size\": 3760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38f460596ebfb64046aab3d9a65935bd4c76a470118fb7d10a088dc0ecdc53ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_except.py\",\n      \"mode\": 33188,\n      \"size\": 3344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ff6f560c3c3d7a5d9ceef5ba31c556341f7ce1bc1b52d96b063f6c2c4765651\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_exec.py\",\n      \"mode\": 33188,\n      \"size\": 979,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e0893327205dea12004e88d18c580286e7977e081b5eda7baf5b7bc93bc6c52\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_execfile.py\",\n      \"mode\": 33188,\n      \"size\": 2048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ff65db1192099457cb3d9f2618a893c6ac430028550284f3a34d5c08042b0eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_exitfunc.py\",\n      \"mode\": 33188,\n      \"size\": 2495,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef4f18f651d32410c43644c27590903d41e38e763b0e108e6c685a3412a7d29c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_filter.py\",\n      \"mode\": 33188,\n      \"size\": 2651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"117f34254fcc12cb492eb9475ad15ddb460a2b1971f066c369e4cf86ce4ef19e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_funcattrs.py\",\n      \"mode\": 33188,\n      \"size\": 644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"111df53fac6a121d61abe33883a68e731820ddc4864b0a4c1000cf2ac5f019cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_future.py\",\n      \"mode\": 33188,\n      \"size\": 547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"baba8cafb48dd9181a0e1f7b0f20b585ce2925e8f347e00b87407a256bb16663\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_getcwdu.py\",\n      \"mode\": 33188,\n      \"size\": 451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bc5252f683a401e7d81c5911617c4af1a1bcdf99a51c4bf1cfccb00446ff220\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_has_key.py\",\n      \"mode\": 33188,\n      \"size\": 3196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32943d3b921c1c3f0d3776d19e5120806990b817bc99a7e22799847abfda1f63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_idioms.py\",\n      \"mode\": 33188,\n      \"size\": 4876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"600e34faf36e14307e59d55088e3979881d497b8fc9d77659e77709f9e8bafd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_import.py\",\n      \"mode\": 33188,\n      \"size\": 3256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"803baf96f9603c957eb974f252b0ad9829c889a293e0ce6829db1bce3da6dd4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_imports.py\",\n      \"mode\": 33188,\n      \"size\": 5684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdf7ee6d85e2b148230984cfc4ea3f193be458958ea42ef290854a9672a64370\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_imports2.py\",\n      \"mode\": 33188,\n      \"size\": 289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6f3c628839ffe7fd72569dd6ca2210e18edae3e180002747ea011b76b7ec0ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_input.py\",\n      \"mode\": 33188,\n      \"size\": 708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10c5ef3b45a4ee7e88af8852181916a788aae2bea52b08f3473815c1c43598d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_intern.py\",\n      \"mode\": 33188,\n      \"size\": 1235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"199a203f698769e51e5333afd87772b7cb5449a935deedb31acb509960d75405\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_isinstance.py\",\n      \"mode\": 33188,\n      \"size\": 1608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8408c92b99f50d8c4978b47a2b2155588e315f2ebbe58c160dcdcdcb89e19914\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_itertools.py\",\n      \"mode\": 33188,\n      \"size\": 1548,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"578a51b9935020b03a510de15ece55fcd02c9474f37a54c158fb97ba5fd15af1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_itertools_imports.py\",\n      \"mode\": 33188,\n      \"size\": 2086,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e419cfbd7f2a326ae7fa10873aa377112ebec32545238fdf988acb088c3cdb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_long.py\",\n      \"mode\": 33188,\n      \"size\": 476,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"306b80e0a72c0d16dd934b7d51ab0c9a4224f83be5d6cbad8a7158a0a5d73551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_map.py\",\n      \"mode\": 33188,\n      \"size\": 3640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b82c0762c44adf2af7745c030afe291e2badfe360925046c8e58d85340717696\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_metaclass.py\",\n      \"mode\": 33188,\n      \"size\": 8197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c876be8ef0bfaa500a9471eb0c13967ede8704f85a2e1804da756128e6c2259\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_methodattrs.py\",\n      \"mode\": 33188,\n      \"size\": 606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d60082f98ce52ee4955099bfd447cbadfa0e9b24ccb8d135cecc833168d44e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_ne.py\",\n      \"mode\": 33188,\n      \"size\": 571,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f9cb1388ba86f29422d20979d3423fdf3541ba35a17ed44d6f4a517ff784ecd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_next.py\",\n      \"mode\": 33188,\n      \"size\": 3174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c7d86d9f81b2498486d626c7feced1b92f23171cf9e42881abb78de1a93bccd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_nonzero.py\",\n      \"mode\": 33188,\n      \"size\": 591,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2cd7e3ba44508643a20eec4ea4c19f2f1adfd36f6b974d7c143e449571ae736\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_numliterals.py\",\n      \"mode\": 33188,\n      \"size\": 768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c4dd0f7881999abde6cf4d232836fa3e55fc41a7d5aa2b9866092f65707db7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_operator.py\",\n      \"mode\": 33188,\n      \"size\": 3471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38bf8fbf1b758382d551f9d8a3ae9b630704b337448f1e2895acfd5b505f3dd4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_paren.py\",\n      \"mode\": 33188,\n      \"size\": 1227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"158b87396dba4d0d5a1bde3ab008206c155934d53508889398e2ca6b4de3d91b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_print.py\",\n      \"mode\": 33188,\n      \"size\": 2844,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf2690f1b502249289f52cd544190db0b94d59df5eca139829cd2bf0742e9dba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_raise.py\",\n      \"mode\": 33188,\n      \"size\": 2926,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c38ffec5862597ee8f9dac50385af943ee312bfc394366be08b2fc12563ca1a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_raw_input.py\",\n      \"mode\": 33188,\n      \"size\": 454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce04cbaa76d414949afc230360dd9a29ff579bd868cc7f8805230d126ac9ce9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_reduce.py\",\n      \"mode\": 33188,\n      \"size\": 837,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a03910a6c183586e1db01863fcde6417d06745fb3e63032333d71c5e82e7919\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_reload.py\",\n      \"mode\": 33188,\n      \"size\": 1154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf8a199092e705aec632a4d27f93bc761e578510cadf27bee7a84d891482e9ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_renames.py\",\n      \"mode\": 33188,\n      \"size\": 2221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b71472317bf3adabf819e665c725d03e3064baa45f6ffbfd78cca83eaa46e8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_repr.py\",\n      \"mode\": 33188,\n      \"size\": 613,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d16930b7ef8577747cfef602aba854c64ce85d4ae1e54a18a456eaa202643e3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_set_literal.py\",\n      \"mode\": 33188,\n      \"size\": 1697,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33f2c0b6e16357e083c3a98877e7317abe1578a44c288e5979c9d96fb5aa6727\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_standarderror.py\",\n      \"mode\": 33188,\n      \"size\": 449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce7eb37bc7fb29aa138b1cec6656ae8b4886cbfa700e119a1bb8484284cb717a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_sys_exc.py\",\n      \"mode\": 33188,\n      \"size\": 1034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0143830586d09d702ca3eeaa8f86698e5fd18af69fd28147e71a1a77600d356a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_throw.py\",\n      \"mode\": 33188,\n      \"size\": 1582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fec731ed523d5cdfa21893833b52b2844eabfd1549792c1c9f8ceac2d0e8e901\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_tuple_params.py\",\n      \"mode\": 33188,\n      \"size\": 5565,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3307d4750d0657d9c42b857d5f37bdb5824f9358939da7d16d13f61eb8abc72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_types.py\",\n      \"mode\": 33188,\n      \"size\": 1774,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0a133cfc78e82e1f71ce628408e7d10a38552ba3e3228ebd113838c1ce44484\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_unicode.py\",\n      \"mode\": 33188,\n      \"size\": 1256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01b2a9b1084b6a0424f27eec488c761f75f053a409608ec36a9ee0ede0d38097\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_urllib.py\",\n      \"mode\": 33188,\n      \"size\": 8353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14fd0b3433db387db33987f1e3071d47c13dc83d1e902aed6b9d7d0ea3189061\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_ws_comma.py\",\n      \"mode\": 33188,\n      \"size\": 1090,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e7a16daec0b2619110516804bf90cac459a4d0315198fd4eff69c36c54378dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_xrange.py\",\n      \"mode\": 33188,\n      \"size\": 2694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60d8ce92db6f399606d2e40a3c631ba566127e8cd637ebbf35b822672139cab2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_xreadlines.py\",\n      \"mode\": 33188,\n      \"size\": 689,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8c2f19f7047bfc7539fd78839929004d8fe0efba1fbcbd9d712d285e43834ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_zip.py\",\n      \"mode\": 33188,\n      \"size\": 1289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55ce115556c7513dd967364dc6a40c39210c874e8168cf090ddd6dc606df34cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/main.py\",\n      \"mode\": 33188,\n      \"size\": 11653,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bec917f26fe605744cd34e51bf5de3be5baf63ceda573c0cdc4c5fb383390fce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/patcomp.py\",\n      \"mode\": 33188,\n      \"size\": 7044,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7824650a0342c63594ce9cd026b3a15b405729fa9e0e7af77a63d054a6f6818b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"858eb0f50533bd3bd16fe32815f77fabfed92ede885070b6cb15827ec66ea500\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ba986149cad4ee9d2fa03fb6d0270629c823650c6b58a04a9ea2c0509ff844d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c4a87698db495b5c4d62c40644de8559b484c2d95b7da4b5bc5c94049104dbb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 159,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ba986149cad4ee9d2fa03fb6d0270629c823650c6b58a04a9ea2c0509ff844d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"275ce33b303ba52d27671604bb0a5910ae7d5f34347bbc26435c7aa6e4d19ef5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f5472715a12ef965a70c9b35feca9348c42b6399c0ffca68dbb0ac3289a6b66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff789b5f1555a5b277da6f223b5750e0b11be3f3ba91ca5920b72cd0da7f4a69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10eec6e8053105b39888c9f441893c05775648e5e5ee143b93524f2bfb7c6187\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"893f0f5c322b4e10729c75ac199f090e7be03fe86ef3c86a2d7dcb247e4cf8d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28961b6cf731efcc389f7578954dfdeced0a7ec98cbdcfa1ef883c4fd4126e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7057,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a645572ce070330bdff93471d11193aae4722f1a75cdda8d6aa39e4b6416ed49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ff1ea8d2d41640073d2d140427018033f42a500d9b0fba2d041a22b3965e76d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7057,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a645572ce070330bdff93471d11193aae4722f1a75cdda8d6aa39e4b6416ed49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"847126b439dae7049ad21830e96c5d5ba79e0355dd50932cdac16d67a86d1223\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1269,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcfdfca8914ed5e3a3fd6ac1f623ed8510ea9abbd8a7b7de476e3f4c205d1836\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1534,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1a8beb75746cead22138ed6224b8767956f950e76d6f0da0816643467a094cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11fab46ffc948b81c61616ba1e45206ef7c2af3d1238b579e56cb297bd58227\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"943570cdf23547799eb7d89fac0f2cf7dfaa84bb8ec6809ef171bff9daab08dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6329,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d260414e1565523a3058865778db57077a25fb3c58a3bfbb8e698197c8d82b02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d26e753d8ac87c317651c0d8bb7798788c44a4bdb6c55a30c76783e96c1c301a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9333,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d26e753d8ac87c317651c0d8bb7798788c44a4bdb6c55a30c76783e96c1c301a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76ba6fefcfdcdaaa2a9f918b8b1220f1155df765e3c48a044e1c491d62f442c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e188fb2536808650d74ccf18cc579b7d4dd216aa143f7c0debf5cb39885b8752\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f9985b6105adb1774fcdd0e6854af025bff058241b04519a203cef1765e4175\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e188fb2536808650d74ccf18cc579b7d4dd216aa143f7c0debf5cb39885b8752\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6250c585c47814df554c69b4050c607a128cc4b64cbd1624b63de3746cd5aabe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b19d7a5968a1b988dcc9e2c67c7f63a044379594163af20b4e37f28028e03a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 15386,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84d0e894b03364782740ad564eef930a1cf36685f0031b7bb053f008d526c4be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/conv.py\",\n      \"mode\": 33188,\n      \"size\": 9642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2946a686c12e02248fafb1a57e7514e0c22bdb2b4a66e644215c86fedc37bff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/driver.py\",\n      \"mode\": 33188,\n      \"size\": 6028,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1df201c034ed2555ef6aeea9e451c0e64153541dbc4834f28587cb0712412a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/grammar.py\",\n      \"mode\": 33188,\n      \"size\": 6589,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b4dbade76fb732f2994028b0948e283d320d162e95945a1f4df0c46ed4749f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/literals.py\",\n      \"mode\": 33188,\n      \"size\": 1615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf8f3643226e6dcce993efa0f55e0a9f181ad9c4b366d9d4c8defae3dfdc593d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/parse.py\",\n      \"mode\": 33188,\n      \"size\": 8053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef205d15dd8a2184df48dfcba354037cc7c0f38d939bd5cdc5e56fc05f81cb18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/pgen.py\",\n      \"mode\": 33188,\n      \"size\": 13812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2491291537fedb8765dca1c5e2ba34c0a0e3980e4ca3e3bb2b0d3ee293f37861\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/token.py\",\n      \"mode\": 33261,\n      \"size\": 1294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1260e8f7b14be9d651e9cc912216aacc8dd853c003efa20d9c8e28e9b66b0d7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/tokenize.py\",\n      \"mode\": 33188,\n      \"size\": 22606,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e3d700e6c984bace27ef59bb10d73498f2a3dec13bc1c5d2064ac6e5ba34e83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pygram.py\",\n      \"mode\": 33188,\n      \"size\": 1154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a40f91564f009c169fdb5d3ef0f2011a819b4997c98b2dc496ae03fa6a9e0d3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/pytree.py\",\n      \"mode\": 33188,\n      \"size\": 28052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b57195c6daa4f9c88b0913328ba0468e08b5bbe24d4cb685331a3554453163bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lib2to3/refactor.py\",\n      \"mode\": 33188,\n      \"size\": 27965,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24a1125b9d68fe19e8f6bd53927d753cc5a4c0952a3c684fbe80f1d55cbb3b3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/linecache.py\",\n      \"mode\": 33188,\n      \"size\": 5312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c654a9e19e83d5f826281f0573223d91a60066c572bc6909bc281fa8557f15ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/locale.py\",\n      \"mode\": 33188,\n      \"size\": 77300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2578aa6fb9bb65176e9c9608185fa6e1f7628e11564a0e1f03d5af5fbbb2d9e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 71269,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70103f84665c49aa073fd3cd2e76decfe40b74c5a5a2578abc43eeb4cfa55fe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 60365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29bd2ee2e0d1489ad33b414eeb7aa5c021eea785076e39e29d984e05b91a872c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 32518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a10d3a688830f88a14d5c051cc41d310c119fcab4813881d3b081bb5ffeb669\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 60397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18d691c1e36f00cd82ecf7135a3cc92a9ec5ae2fd9e0dc65b0fa5f1eb41d7a37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 23342,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5109fed60ecb1c6ae0ced8e34e3f214a89415e5e2269a1a0e0b15fc4e95db0f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 19222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b74e418b04497f2d208dc9105f547dfbc6febadfefdb2790b31aa8f8a5d8b4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 23390,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0707c9fc0629dfecfb32c97bef6182d884b76e9881b5053733040cc560cc741a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 43254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c0c8961cb3ff02f479f68f0f6b0aac46c89ca2d40c5119d211d87cb0e20cf35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 24275,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa3b2e987d0f1976dfa91ad9ba581d2cedf94f70b1e106f99e68fa45328d472b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 43254,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c0c8961cb3ff02f479f68f0f6b0aac46c89ca2d40c5119d211d87cb0e20cf35\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/config.py\",\n      \"mode\": 33188,\n      \"size\": 36048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05808e3b82182bc3010f4e2dc46ecc779e624018b9fc7bc67fed318d7477577c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/logging/handlers.py\",\n      \"mode\": 33188,\n      \"size\": 58053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b320532d2fa00892f3885d72f4c75b6ab90c83dd9b040c425ad38a7d88f8e09a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/lzma.py\",\n      \"mode\": 33188,\n      \"size\": 12983,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a916f11363a523d3e8ad3dbcec36d38e03118724efa1203c2a6785d3141997fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/macpath.py\",\n      \"mode\": 33188,\n      \"size\": 5971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"902e6a2be4ce6f5facc1beedc25c73ffedeb6a04b1baaba7d44e13f2f505acd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/macurl2path.py\",\n      \"mode\": 33188,\n      \"size\": 2732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4707ad5be6a539bba7eb3eec350ca5414b57d70e8f789c929a28f87e1fba7818\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/mailbox.py\",\n      \"mode\": 33188,\n      \"size\": 78624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c211ee100862a9f1b994692bdeb5395c06b14dde277faf033f51ed1e55b3b0bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/mailcap.py\",\n      \"mode\": 33188,\n      \"size\": 8104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d1c0c8ea35616cca8cec50b1ee7c070672ebd80d2037fc3502b84cff3d1ec3d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/mimetypes.py\",\n      \"mode\": 33188,\n      \"size\": 21042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a4a833fca7ec9d6a31422951755b0f1460018bd3168aba84f9f90be471eaf0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/modulefinder.py\",\n      \"mode\": 33188,\n      \"size\": 23027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7992c14323e063038b4f9e80ef5b0cc907c04c6a08d86e0a6fae28607afd95c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff3cc56e5007a4f0c3f8eff5327798e4545adec5644efc1bb45d1d4b89e64673\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0f0cc4e36fb5d37725b71c510b5c5d8d583c0a61b36b4428edd98a786ac0fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0f0cc4e36fb5d37725b71c510b5c5d8d583c0a61b36b4428edd98a786ac0fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d0f0cc4e36fb5d37725b71c510b5c5d8d583c0a61b36b4428edd98a786ac0fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 24543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1ccb682aa07b5273542cc1239f44901af56c6126098151c0678512d57459de3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 22312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b96f0b38648d6d748865876be65afd9fd7e000482bad558e72c3ab4a083919d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 24838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fda826f07afcbf92c1236fe81ff675130478916965b37cdfc6299f4f86644383\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9abe4ae6e497494583cf8da92a0af4343b3a02ed56ca03f1bc064514141dc6e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11603,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"523f4f4ded652f1548f144cca59181384fdacc6132cfe681446083f4cda967e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9abe4ae6e497494583cf8da92a0af4343b3a02ed56ca03f1bc064514141dc6e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b97cd9bd11b2c420eb67fdecadc43859adc038f1ef93e5acbca41b8abf8abab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d57f7885e9ca553ffc582f5db5a4980e38b6cd2afc253f00a0d6a59a2f00b664\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a24581ec45031e6c3784e392e6c14fd8d427541fd293f8f5be30e5fe1e36bd75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5893,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0d682e032ccb5afe6d4b73cd86e02a06f6974a09001d76a3b931a263a987f92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5893,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0d682e032ccb5afe6d4b73cd86e02a06f6974a09001d76a3b931a263a987f92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6079,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"547af94c4cf271819301ee47d0a861e82b0b7148ad2e8e57be0ce3b9db4982af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 32812,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d222f606862732beda282404b7f429077beaf50bcbaba8acb24d440ec467ef44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 30370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c80bf6040723ae48882ff2f7fd64f9aa70a658fa8bb0f76811e5bd648311289\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 33322,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66b41424d8d3ffa11319621718f4cdae66901e53978f93275449acac3754ea87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 20566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"496dfe73e1f97c490643375716c62343641bb8bf00027bc67adce44097553d20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f62f3ae42b94f2afef10ebddc8d52732b573a505e77f01db4588f7067298505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 20823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e799d8891a856e64da379818800b2ca2234630c6b224989e956c2f761c486e57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03dd04fd3ec688a39e2407f45014a0a3b069087e3628320b11368c50c33c2242\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2089,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03dd04fd3ec688a39e2407f45014a0a3b069087e3628320b11368c50c33c2242\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2132,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcbc2df3ab56c7845e44cf010ad12a7222e754c64de6633098b47442461b7a6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbfb0817f1e1e098e6467799785214a7dea1dbaa1f727289952658703d653b73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbfb0817f1e1e098e6467799785214a7dea1dbaa1f727289952658703d653b73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbfb0817f1e1e098e6467799785214a7dea1dbaa1f727289952658703d653b73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb6a1f12cf2598413a62f84933776681a4366d8dca8cec23b7619ff22eedce39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb6a1f12cf2598413a62f84933776681a4366d8dca8cec23b7619ff22eedce39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb6a1f12cf2598413a62f84933776681a4366d8dca8cec23b7619ff22eedce39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"498800f6404b3e508d6668d9624fe515587b35cc79f8543b0253df376bfaa6b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"439637586c608bf1f34a8525281d8ea33c8758aa8bcee073eeb297764f5d991e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15bb38644891d16eb0953a1b7a7b055a2ec2187c13ee62df5f7d26073581d4ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7495,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5498f43a5135092c239e3320f835e6670987ed4496c7be45236f19b01c15efc0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"134081022e78a96b88686d8d2dc7a91f3a1e859b8ffe2911bd03a00616f1df4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8141,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea34e23e862a1880fe8be1ee41fc88d6e39fb08300b1d6186ef6fa97f67a8d4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 8866,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa36bc17bc8f8df68627704e28c75b1388c44be1824eae5ffba26302f658936\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8866,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa36bc17bc8f8df68627704e28c75b1388c44be1824eae5ffba26302f658936\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 8947,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d00e51759e287ef02eb4806f5e4b544fb2eb92d77cbbc82d9de7760130b09fc2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b78bed443fbb390f6e348a975483ee704222771007e157fe5c14a2b30a1c409\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7090,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82ebb6ebf3af23d305ee16f08dd733a45d6bec71cd6d41b80e1d2ec212adb0bb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7959,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e34621c1ec8698a6730092a2200ba8f19061f831ebf9695246a981b5891e5a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5124,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1641bde52a7fe2fd68b37676bc845424e4ae2054fdb668546a31273e045b3436\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a8f607ba950e8aaa5571d0b0e3546cbe2426a1649e1175bbdd42f851010d966\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5156,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d75bf23e75eb8c8bd31746b316ba918a0245347bb941adc0f6894799a5ea15a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"748d205d41407b58d3747e2742448721bd7e8c50e55561dbea0c159a7e7ba9d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bab912d37730b06eaa76eb4c4ec69a4b23548cacabdc5f79a170b83c0bb7623b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3669,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bcac789ca6cf94b613b56ebe61fc322c20eb2c5a3c43dbaaa2f0f05657323a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6809,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28a23395b9a23493fe52db01237a415511af658642da7c3275be9a801786925d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b161a85e76ecf49d3d0773f4a6c55e37a2f959c46842f44bd0249342bddc36cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4d949480c0ffad2ade64f2306faafd20801d4d86304e37881b00b00138bf4e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6401,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d674c1de322cbf27576aaa7da2ec90c4eb7fe498807fcb608e40854e2bc196c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5922,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de9afb53481044f092989556095336b6ecc90abff7083b52a6fd93413985f6a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40ca5c388d4a82910fd0310288e5f2217835b0e867917e7d1dd85966d7f311b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 11299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"938ac58ad561190e98c0654cc2b45beb388edc4f29d5ba9b2a15f828e539376f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"938ac58ad561190e98c0654cc2b45beb388edc4f29d5ba9b2a15f828e539376f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 11568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dabadc58b5ac77a6897172cf00675a21ba3e187d78f1175ff840779d9663a09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85b87dd78614702f74fb75191dab1c6baacfaee49b96f434a00aeee873975aac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8986,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0598af2434b1bfb59f8ef8ff050082c732ae4cabc5503de413e13432330ce461\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d8c4ca63fe59f3b1a47a2eaeb2ae19671b06957b91538f4e6a32f3d5cc7dbeb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/connection.py\",\n      \"mode\": 33188,\n      \"size\": 31062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04959867937aac623a91251b1c09451dc721767855406339227633f335e08b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/context.py\",\n      \"mode\": 33188,\n      \"size\": 10917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"845d0ee951c86027442840e48ee50b8ef498d1cf98c887855ea1097b2680208a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 2896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"496561081c3cdec38049e554207461c4c1efbf527b31117b901ef31da84e3c44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65b3f0d4931b00e251e7a281ba6207aae9b0bbb0a04e5d7364d5337d234c0008\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65b3f0d4931b00e251e7a281ba6207aae9b0bbb0a04e5d7364d5337d234c0008\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24dc4f66fefb4c9a400d1e060ecd05859150b0d82970dc96be2c01efd2547941\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea0506679be1d4b4e57102a742444c183eed47559ba7c2771ea70a09d3c877f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea0506679be1d4b4e57102a742444c183eed47559ba7c2771ea70a09d3c877f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea0506679be1d4b4e57102a742444c183eed47559ba7c2771ea70a09d3c877f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/connection.py\",\n      \"mode\": 33188,\n      \"size\": 1583,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3cd2a0365b543d8b6c90c9cb196cf61fb92a9385e5bb15d58db463f25b1c040\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/forkserver.py\",\n      \"mode\": 33188,\n      \"size\": 8694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3590ab6082a847749478e6e68fac253a8cee8c1d7e628409f0ca502c65456619\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/heap.py\",\n      \"mode\": 33188,\n      \"size\": 8319,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8d0ed58672d43473aa1f4c44ee29c2b659a3467d58dc7ed6dd67d48f3b626e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/managers.py\",\n      \"mode\": 33188,\n      \"size\": 38151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6b4994beb9b938f88eab8bae25438c5d505cb055bd0f6506a6df8433bc689f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/pool.py\",\n      \"mode\": 33188,\n      \"size\": 26059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"089cc9cb423dd5e96e787d81d6ac491f8e11e2834c4c52fb07406d4e36b4211a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_fork.py\",\n      \"mode\": 33188,\n      \"size\": 2307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2648444890a3218b1d14321c6eb3019e658a8c1de6213eb81015ca13fd2d051d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_forkserver.py\",\n      \"mode\": 33188,\n      \"size\": 1956,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3664535e36e49301230e0706332c0daeeb1b623aff3816b62616228167311a93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_spawn_posix.py\",\n      \"mode\": 33188,\n      \"size\": 1904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c4df5fffbb9aab88abeb6ed940e067d5170e4a59231411897eaf418c3a4eef1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_spawn_win32.py\",\n      \"mode\": 33188,\n      \"size\": 2999,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55d88f7322c73cb72666e9b3f78ff084d640695980d0e912cf39c32eb034800b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/process.py\",\n      \"mode\": 33188,\n      \"size\": 9211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb573686aa2d44ba37564cf08c1efa503a7e2cce12635f1cea1cb042bb1cb938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/queues.py\",\n      \"mode\": 33188,\n      \"size\": 10763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4689205112a5e15211586714c1873087a398030e86a89dfeb363ed994d22dd1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/reduction.py\",\n      \"mode\": 33188,\n      \"size\": 9226,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ba388bf75902434a751aee31eca205e4c2e34382629bad8c48c8e8db2e3d778\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/resource_sharer.py\",\n      \"mode\": 33188,\n      \"size\": 5325,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3047c9b77ba57ef0311654fb9ec80462adb89724019d54860c1cca9df6ad250\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/semaphore_tracker.py\",\n      \"mode\": 33188,\n      \"size\": 5394,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3b93d9a309dae8cea5278e4bef8fad4da7560c52564fd699ad8a04f8422b7be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/sharedctypes.py\",\n      \"mode\": 33188,\n      \"size\": 6245,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"833a47b2d6a77bc30eb1f75dfd1dc369f9bd1e11bc5227878062528dbd7f6960\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/spawn.py\",\n      \"mode\": 33188,\n      \"size\": 8863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07bc15a35fbbed293d2b736a0aa374868b4be8ff23230786a83cb61e02b6f6c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/synchronize.py\",\n      \"mode\": 33188,\n      \"size\": 12050,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a54562705f9d256596e2dae54920a0ae6ff9f8321d41d6e2289513dd10943d74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/multiprocessing/util.py\",\n      \"mode\": 33188,\n      \"size\": 11886,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5101292432e85fc955cbee20e9ea33fe4b1f1733e2430e2d6e7dd677250bfb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/netrc.py\",\n      \"mode\": 33188,\n      \"size\": 5684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24af911c24df43a80a950bb21d4fd6c670e9fd78eb785a69a47334da4ed96e8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/nntplib.py\",\n      \"mode\": 33188,\n      \"size\": 43078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83b15cc37deb7ff636cd57ee1af2529a61c536728cba8116bc14d7dc8da8d306\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ntpath.py\",\n      \"mode\": 33188,\n      \"size\": 23094,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efec6e1c06aa4d1452cba91c0a4634e8b32b00761252017f069b5d77940f242b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/nturl2path.py\",\n      \"mode\": 33188,\n      \"size\": 2444,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11b7d0068e78b805e96f0a02d2312119b50a844c6f509ac14013c88f9420b9ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/numbers.py\",\n      \"mode\": 33188,\n      \"size\": 10243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f74468478fa32714f0989c9c444e61dabac4b5d8aaff2dcf48795043175eb809\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/opcode.py\",\n      \"mode\": 33188,\n      \"size\": 5822,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f08dbb30b5257c7af22447e2dc54ce8b1ba388ea5410d1a551ed72a3a5df162b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/operator.py\",\n      \"mode\": 33188,\n      \"size\": 10863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c85f65b08d82802967adbebf12036211293eaec7702449310a962c53e94ce05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/optparse.py\",\n      \"mode\": 33188,\n      \"size\": 60371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e931f25b6830a749ddc8e83622d1f55a24a6966f130913e023aa5c89fdcb18d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/os.py\",\n      \"mode\": 33188,\n      \"size\": 37526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77b51eed2877707deeea1c3cfbe2429206144181cdec2ee68b2ddf9d28038475\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pathlib.py\",\n      \"mode\": 33188,\n      \"size\": 48982,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"989dad8b62d089d1820591ace00f5e7e351a9c73a70143509133aa59e2bc3d76\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pdb.py\",\n      \"mode\": 33261,\n      \"size\": 61320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5396597e6c0e84ac5eb1faa147a2c121ec45f72fb100b7aea5c044f0a712744\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pickle.py\",\n      \"mode\": 33188,\n      \"size\": 55691,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70805bc3d2a929ab0ee44ebb5b6f2266ba0c25659faf313445c335d3d3142d09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pickletools.py\",\n      \"mode\": 33188,\n      \"size\": 91775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1aa5a1b952618ed0d1d49e569389a9a0185bb7ec5913e97e12ce0e3a3ea6f0f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pipes.py\",\n      \"mode\": 33188,\n      \"size\": 8916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7979ff076f582ab9a6e92bf1aa283abcb2558ec87164f6f2615fe8772de9eda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pkgutil.py\",\n      \"mode\": 33188,\n      \"size\": 21315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8c4cf05981fd4ec719613918d3633d5598cc81f936a01f7895a954e8db7cc9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/platform.py\",\n      \"mode\": 33261,\n      \"size\": 47201,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"200d323cba866e06fc0fba6552ea94b5d3c48ea5f2dde8b7e1bcee26a52d66fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/plistlib.py\",\n      \"mode\": 33188,\n      \"size\": 31980,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b80fc25ad0f4a34722510c94f2cdb1c3e238316d051499712766f3fc6e729b56\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/poplib.py\",\n      \"mode\": 33188,\n      \"size\": 14964,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fee201bc5b62d161fc78c5fb7324c71603b72ce3c564181bb592ee5b65f20f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/posixpath.py\",\n      \"mode\": 33188,\n      \"size\": 15772,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"881189f1679e8545ddfb54d5d24dff14de20ba30ae65067140821686f32f1bdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pprint.py\",\n      \"mode\": 33188,\n      \"size\": 20860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bebf6bde763f24f4ddc954e6f7e8f2751cc2ab524ad531573b1895b93b6f967e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/profile.py\",\n      \"mode\": 33261,\n      \"size\": 22029,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e76cb000dc94f7514699f93ef5c02a526223a4a10bdb91ea50621d943adb074\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pstats.py\",\n      \"mode\": 33188,\n      \"size\": 26564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"827507dc44dd24e93270f01e27ba7f236ea27d22e9ab38a10b9198113dcbd480\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pty.py\",\n      \"mode\": 33188,\n      \"size\": 4763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34c91969a7b78894fd90eecb7ba20d3cf56cd9071741817b502b16fec08101af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/py_compile.py\",\n      \"mode\": 33188,\n      \"size\": 7181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"819c8bc87bba30e447623d994d26c9f865e6cb64d3f744ffe27f22a699c3d443\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pyclbr.py\",\n      \"mode\": 33188,\n      \"size\": 13558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98724e0a5525660513e08d0df1a2e8fb63da728632cb82d77f4d9c55703dd69d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc.py\",\n      \"mode\": 33188,\n      \"size\": 104241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3a6251ca25b56f8ff64c99c345c0ddae7a8be1f047ac515b253890edf12b833\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d03e26605d80678849142707765d27be2d4d543b6f2b50934e6c26f3189daa5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d03e26605d80678849142707765d27be2d4d543b6f2b50934e6c26f3189daa5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 126,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d03e26605d80678849142707765d27be2d4d543b6f2b50934e6c26f3189daa5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 400514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fcb233219e7999114cc35cc155bf3f546b5cbcb2b784fc8f0b5eaf0f47c53b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 400514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fcb233219e7999114cc35cc155bf3f546b5cbcb2b784fc8f0b5eaf0f47c53b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 400514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fcb233219e7999114cc35cc155bf3f546b5cbcb2b784fc8f0b5eaf0f47c53b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/_pydoc.css\",\n      \"mode\": 33188,\n      \"size\": 96,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b8cc50cbc204745d38fa3d57b3bd6bb4c3f6ea0d346bef61b3cc423eb15b9d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/pydoc_data/topics.py\",\n      \"mode\": 33188,\n      \"size\": 643245,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e13ff9d6c72af03e2b7447f66072462289f09c84e864e366fc06812410b0d184\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/queue.py\",\n      \"mode\": 33188,\n      \"size\": 8780,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"972bf9c668af383b3e629f50875c5a046788816debeab4fd03dd6feb72af0980\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/quopri.py\",\n      \"mode\": 33261,\n      \"size\": 7262,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"95fc173c5e2df9c3a84b09ebd4dd12baf7726d5f2e3ee0f4f0a0df3e94cbe21a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/random.py\",\n      \"mode\": 33188,\n      \"size\": 27442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0b7626813f4ee9c2d85d81d0559ef3a592a0b9869821686ba59606a265a0d1e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/re.py\",\n      \"mode\": 33188,\n      \"size\": 15552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a25c7e1d517bd22c5647267db5ddc926c56bee63f6e451ed6566dc3538b1d34e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/reprlib.py\",\n      \"mode\": 33188,\n      \"size\": 5336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a847af1248ddd62ded492a9e06f84260e9cf51c12f78241203542d11abb0484d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/rlcompleter.py\",\n      \"mode\": 33188,\n      \"size\": 7097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"926dbbfdb452592f7a565e20f3d742ce54e89a7cefd0feb6b28a93d091c4a6ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/runpy.py\",\n      \"mode\": 33188,\n      \"size\": 11959,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebdf2d98baa73b6ff93935f3f620a3adc36b5c6768e858a91cab94561ea948da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sched.py\",\n      \"mode\": 33188,\n      \"size\": 6511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50be204ee818c76012da66de4446c343729f6ccda40c31da8128a4c90578d8b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/secrets.py\",\n      \"mode\": 33188,\n      \"size\": 2038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fe91980080cc3f3d687bfa4078489ebe25fb28005170a8232a3eee75f94d3b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/selectors.py\",\n      \"mode\": 33188,\n      \"size\": 19438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f865269d11d324139e5a9b6eb5a82c1f4ad061ebd6695d4289a179fc1aa3c95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/shelve.py\",\n      \"mode\": 33188,\n      \"size\": 8515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d2b7f01ca03c7224350b7f75759d0ed5e9ce8a9b5b6166766e233baaddebbd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/shlex.py\",\n      \"mode\": 33188,\n      \"size\": 12956,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25149f6da956e635f62f70d7b03a675de6f92e177b349ccd61b8a73bea3a9f31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/shutil.py\",\n      \"mode\": 33188,\n      \"size\": 40540,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71b558e841809470480a3b57a59eb7efa30d58fd46aa45a3b97093c0744d57a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/signal.py\",\n      \"mode\": 33188,\n      \"size\": 2123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c73fc7d2600ccce041d38cbf4d8270851902c33c17eff26c5a6c6a7572c8184\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/README.txt\",\n      \"mode\": 33188,\n      \"size\": 119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cba8fece8f62c36306ba27a128f124a257710e41fc619301ee97be93586917cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site.py\",\n      \"mode\": 33188,\n      \"size\": 21268,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9caf782ea7ef6261303c3eae8c96ef150396681079fadf7fe5ddf09c9fb61c4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/smtpd.py\",\n      \"mode\": 33261,\n      \"size\": 34719,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee78a1f7e0ddf8ccf3ab9d7fe2bb6164aa193d22325ffcf313735e2e3d491324\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/smtplib.py\",\n      \"mode\": 33261,\n      \"size\": 44218,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750c43e56637d2b4fadf1cf62ae02a0c74d3fc5950440a0d4b634670f8e8a9a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sndhdr.py\",\n      \"mode\": 33188,\n      \"size\": 7088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16d32bd6d57c61ea12b4c5d059cfac9ec2ce86881439de659327e08429be9ac9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/socket.py\",\n      \"mode\": 33188,\n      \"size\": 27443,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb568788301152e14ba235dfe574158cbdf78a915a965e9152b117599d0eace4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/socketserver.py\",\n      \"mode\": 33188,\n      \"size\": 27010,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81dba4a142e3bb4886b9eecb4248d7c07a7ae1da6b811f532cc3efa35e350873\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1018,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff6ad4f2c78105413cbcf0aa30a26ad77b463f59c69d9743bfb62322118bdbe2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86612d5ce991fe3bc546d076257f1ca742e0b7192c2dd2c781cbab7794894cd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86612d5ce991fe3bc546d076257f1ca742e0b7192c2dd2c781cbab7794894cd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86612d5ce991fe3bc546d076257f1ca742e0b7192c2dd2c781cbab7794894cd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dca493e185778e10e21cf1c4d150625c170d9852271fce20d1a341b6e28ecb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dca493e185778e10e21cf1c4d150625c170d9852271fce20d1a341b6e28ecb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dca493e185778e10e21cf1c4d150625c170d9852271fce20d1a341b6e28ecb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61bd27d4697278a6b1740d4d894aa22fcee5627dc20a1a7d5ce8431a037609a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"743b9419b07182641d81bd8d60a05667ff168b4f3349a0d54558525a1abcf47f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61bd27d4697278a6b1740d4d894aa22fcee5627dc20a1a7d5ce8431a037609a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/dbapi2.py\",\n      \"mode\": 33188,\n      \"size\": 2687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2031e765b130d7f8a0a1984d0e09576fa9decd4009507df539bb683037ab4dd3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sqlite3/dump.py\",\n      \"mode\": 33188,\n      \"size\": 2825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7d3eb1d97e98f2fd1420dca8f739996ca8380e7e15c732841c6f01ad4d9cfac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sre_compile.py\",\n      \"mode\": 33188,\n      \"size\": 19338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c537c442b5b783363b7f419c738dc1fdc242aac755d68ffc09900ac5ac87bb9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sre_constants.py\",\n      \"mode\": 33188,\n      \"size\": 6821,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0998cd712b13030830ae00225216d89a163e7e52e84643db8ba532cf8f03b8f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sre_parse.py\",\n      \"mode\": 33188,\n      \"size\": 36536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a10d43996f5dec74c9fd3b62e5af37273875b3b33dc3210133fa789f75ca0dd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/ssl.py\",\n      \"mode\": 33188,\n      \"size\": 42702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1bfc7027ceb8c0b907ce10c28d5e2a0445799c2efc6403bfc5509014e3f816e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/stat.py\",\n      \"mode\": 33188,\n      \"size\": 5038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35d94a130d4a934af1eea02a58e9701135ce8861893ac3100f038d9398079229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/statistics.py\",\n      \"mode\": 33188,\n      \"size\": 20673,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a934cc890a2e46de391dfb9fca67f2c2fc6070fa01feb4418e2a2466d2832a26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/string.py\",\n      \"mode\": 33188,\n      \"size\": 11795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce0c4471de168b423bffdea0d165fbe7af7713f46439173ec2534dc25b49d705\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/stringprep.py\",\n      \"mode\": 33188,\n      \"size\": 12917,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60b6c83581093029312efb6670b11c540090b3f78bcf72264467b494f02f21a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/struct.py\",\n      \"mode\": 33188,\n      \"size\": 257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c231f9497caf513a22dee8f790b07f969b0e45854a0bdd6dd84b492e08c2856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/subprocess.py\",\n      \"mode\": 33188,\n      \"size\": 62339,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abc723d33542cc5f9ff16324e3bcb426099e5e42046cce4e7c6f566a4cb15013\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sunau.py\",\n      \"mode\": 33188,\n      \"size\": 18095,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bb9039f460236e927706d939d87935c982415c8e6e8b366df4ca68ebf6b7001\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/symbol.py\",\n      \"mode\": 33261,\n      \"size\": 2119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15be81c8fd6577b98435a2c33df877faaa710b08621fa85d1cb485b164fd4d3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/symtable.py\",\n      \"mode\": 33188,\n      \"size\": 7277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f93b4e79be759e22178ccd491e0a5f0930a069eda0377dc90cd476039ae68dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/sysconfig.py\",\n      \"mode\": 33188,\n      \"size\": 24984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fdeabb621f31cb36372737b15f08701123780ddccdf762a7d1e1bf902fb1482\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tabnanny.py\",\n      \"mode\": 33261,\n      \"size\": 11411,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8fabeb840a00e0409ef6ec328ce8f5e0703ec6822e0360522938ec96263f80b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tarfile.py\",\n      \"mode\": 33261,\n      \"size\": 93226,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a4b96effbc2809669b2bbc42f849c93f39c90c98e29592ebfe2d6298828f275\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/telnetlib.py\",\n      \"mode\": 33188,\n      \"size\": 23136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adedeb2b103fec6f5ecaec90d8ee8f8312a83b2e405ac3949b57774e2d74a17f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tempfile.py\",\n      \"mode\": 33188,\n      \"size\": 26776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e5c45f5b45c270a7efc02a4765fe2c090267720cb8b5175a7eaf59e684bc32a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"836cdb388117cf81e78d9fa2a141cca1b14b0179733322e710067749a1b16fe9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 120,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eafa9ed8b48cd42c9bf18345a6eca909f663dde3db1d5bae44c0bc4847235442\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 120,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eafa9ed8b48cd42c9bf18345a6eca909f663dde3db1d5bae44c0bc4847235442\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 120,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eafa9ed8b48cd42c9bf18345a6eca909f663dde3db1d5bae44c0bc4847235442\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 101904,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4cbeff96d6823179cfa7c6a3ccf882c92f6dec985cc10e64f073ee15e7027aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 80117,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d8634992190763efe2043866ce5e4adf0a9a14fa50e60662f33ec23ece517a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 56884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6145eefcc58e769c1b4d0e3cc66c836fd8898ac506e5b0c8470ef2ee6484fd2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 80267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebdb108d88d3d3931a967d9169ba087c32c1f810820858f858a5e0a1e40964c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"115c9ddc18ab0c392562ef6beb9450f38a70e025f08fa0c2a1bb642687b153ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5366,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5728ab0f53e7ccbb277d84f0bd91fbfacb94f46c6a8ece62c081414bdeec9ba9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7106,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"115c9ddc18ab0c392562ef6beb9450f38a70e025f08fa0c2a1bb642687b153ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f4819e9fba1425c9586db28f923a1fbb85c3bf5b3d8c0ee49565693dcba3f01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 7690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec930f5c3cd0178a71adaddea5ca361795b1fb4b71ae900d8d3ac5c431e8b22e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f4819e9fba1425c9586db28f923a1fbb85c3bf5b3d8c0ee49565693dcba3f01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/script_helper.py\",\n      \"mode\": 33188,\n      \"size\": 10632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9f6495bf7fb9f98153a772e59c4b555dbc252d32e102da3a5761ab72d1a9d27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/test/support/testresult.py\",\n      \"mode\": 33188,\n      \"size\": 6669,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8787c1865a19c49d50c4697b8835ce2f20b18888adf6a6c70e4ea1b09acb8559\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/textwrap.py\",\n      \"mode\": 33188,\n      \"size\": 19558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2ded3ee940aff5ce1cfd0f118c013189956bea62473c6d7bdd91b2feaa6b0cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/this.py\",\n      \"mode\": 33188,\n      \"size\": 1003,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"481d0cb3de511eae0b5713dad18542b07eafd9c013bb7690f7497bad49923a71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/threading.py\",\n      \"mode\": 33188,\n      \"size\": 49029,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1c66e4ae337652cfb29e2c5bd5a326aef537027798d9bb2962e4bbb4e0662e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/timeit.py\",\n      \"mode\": 33261,\n      \"size\": 13342,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"402eaf410e2e163481421d3d9038873585d566b3393bbc12f05aa494391c4135\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/token.py\",\n      \"mode\": 33188,\n      \"size\": 3075,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f283040bef2cc182636e6a0259fb13615ec932bca70b98fa5b45e92df3f1d61\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tokenize.py\",\n      \"mode\": 33188,\n      \"size\": 29496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"122daec65b9c6f24892e474387275c796fd4aa6435051e0b37af80c6c2bcdf14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/trace.py\",\n      \"mode\": 33261,\n      \"size\": 28733,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4de9613e939803e2cedf0565abdb7df5cfb2067804d9df8e89dacbc3cb52f989\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/traceback.py\",\n      \"mode\": 33188,\n      \"size\": 23458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb5db58698b94b5b2318f6e1af94b6b60c6ec3513cbca1f7a049abb60fefed29\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tracemalloc.py\",\n      \"mode\": 33188,\n      \"size\": 16658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61a4393f04e42d0316f5b73c496c2c80c0d944377f44ec4d5568e8cf83e5f046\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/tty.py\",\n      \"mode\": 33188,\n      \"size\": 879,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"066a541e6d38ead952d63cc32afbac51a33acf354799f235c582eab17488105d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/types.py\",\n      \"mode\": 33188,\n      \"size\": 8870,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2e3cb3caa5b8ec4824b16fc3a4ed4214dc9d2df78ee4306bb939da39c160713\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/typing.py\",\n      \"mode\": 33188,\n      \"size\": 80274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11374e25fd60b1a8241c6c120a2c51e9126e121862d6b988d3f452cae18969e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 3179,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bd445ff32866db768a152db0c0513a5d55a15246907452c8d8fd90d76874101\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__main__.py\",\n      \"mode\": 33188,\n      \"size\": 485,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d88c310b2df1b04fdf019d72141ee90c6e55be02125f7c90ee2aa0373bf832c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8198ae17d6cc7825f9b90e269a6e005bd4b227a364245faca1b898add94869a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b46bcaecf85fa1e24986dd6018b7cccf5f85142bac06748acdc1f9ea09f07207\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8198ae17d6cc7825f9b90e269a6e005bd4b227a364245faca1b898add94869a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1574ade7f3ee8ef4b56a1d165474a0c2abb14848b108ed179d8aaa1b3d29502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab3b49d5d7430b287fa1249f768239a79c25e95cb9cc453e228e6efca66eff25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1574ade7f3ee8ef4b56a1d165474a0c2abb14848b108ed179d8aaa1b3d29502\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 48068,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f38588a6ff34cb4b93b24300a1503228b073fa027263651c5bf859c457ffc20c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 32924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"142b1d2905c069723bfa53229eab8196613bd682145fa531e4a163f09357f382\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 48122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"373aa2560d3e45f81171840f0d5fd714383a0d10e530586456098c98c7d5c49d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab1958a038cefcf9ff7c2dccb311b50cfc456cdfecb2faec23bc65e1d95d035c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11075,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb3286262392ec890d6d0a8bdfe7285b80ebc91823c3ff9127095c31fa5ed51c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13868,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24595e790e69e2748beafe6fba69370ac0df4eb171e27449b8b6dabd6d5f0c81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7014,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f85e4d4c19a4bb24b6ec06bf215cc91f20b97a08b20f6e22367ebeb64c90ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6836,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3572022b11a4e22a93aa27eabf30907e3e6a494627af36a0c8325aff74d8089\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7014,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f85e4d4c19a4bb24b6ec06bf215cc91f20b97a08b20f6e22367ebeb64c90ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 61788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58ed871b7802af76679b7c16fcd0cbb8c84717e8cfd6ae1101a80990559590bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 46180,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4a52a0c4278dbc80ba43ae8841c835cf98ef58cf0962468cb0ec6a88d82595b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 61788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58ed871b7802af76679b7c16fcd0cbb8c84717e8cfd6ae1101a80990559590bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce4f96ba4074bfa3f2030414d3399164d7a5fac288b44c405d3352389094570b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f1275d7c14641d719b9d08ee29fe0d18b738ec59a507e627dbcb813a0b60996\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7228,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce4f96ba4074bfa3f2030414d3399164d7a5fac288b44c405d3352389094570b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d18076b7087a488065c2e9d9ace58150dc909b1187185eae4600b6ccbcc39881\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6241,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c42cc62d12a0fc8f9845154f941f080cbc562000f38242a6bc81a722f10c3d0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d18076b7087a488065c2e9d9ace58150dc909b1187185eae4600b6ccbcc39881\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b9c8dcdde7b9d55f99d77afc08559e89bc8cc88736f6e5af1a3744404ff37d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b9c8dcdde7b9d55f99d77afc08559e89bc8cc88736f6e5af1a3744404ff37d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b9c8dcdde7b9d55f99d77afc08559e89bc8cc88736f6e5af1a3744404ff37d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 9173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c24c5ca6b015128c4b82b944ba57ad3164083c1da97f95863b0a16ae10b7d37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 8103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b53b21e7d3dbcbb89ed0f11ca2e3692a93843cdcc89b9fe3bc52dacdf49fbfb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 9173,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c24c5ca6b015128c4b82b944ba57ad3164083c1da97f95863b0a16ae10b7d37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 4688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a321ff3afebbf24e880b172cfbf968007d2ab4ae6de91085ebe85317c9a4def\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3838,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef0348546f1cde1c301652fec549e4d9fcb4d864adf75eb95e68e631ad0d0384\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 4755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db9ce385137191d1b100b8da2b877579ddfee3ee72738c53998999a816384193\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/case.py\",\n      \"mode\": 33188,\n      \"size\": 57500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3192ae87370f2e976f095a8504a8493a8209d4f23cfa7f10e4f3289891c656e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/loader.py\",\n      \"mode\": 33188,\n      \"size\": 22224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03a9798485b6c06cedf5288cb28e20a9299cf797c09491c3f5d9357eab529a1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/main.py\",\n      \"mode\": 33188,\n      \"size\": 10552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61ec1bfafe52e1d65b4a8a0d953d5b4e0a27c2a15b8da878c703d9d400281b51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/mock.py\",\n      \"mode\": 33188,\n      \"size\": 79856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"39e5f79a3d249e125ac1d17f3b12eee27fae15474ae424778691864a59d6f7c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/result.py\",\n      \"mode\": 33188,\n      \"size\": 7442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d25e3fbf3a071559efe65854e1e5aaef995041d340b1d5c0b9a5ef17e7ee6de3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/runner.py\",\n      \"mode\": 33188,\n      \"size\": 7751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c781b7735f2f17038ce6296ef31ed832c4301f24d7a319182df26d6293571787\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/signals.py\",\n      \"mode\": 33188,\n      \"size\": 2403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8286e818ca56e10e03745bc056cdfd31147678f9a1dc8cb6b0fe96ef9a4362a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/suite.py\",\n      \"mode\": 33188,\n      \"size\": 10479,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf7cca2dede53db7dc7574cd8efda2264f240b3747c5ae28dd11bee73976f5af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/unittest/util.py\",\n      \"mode\": 33188,\n      \"size\": 5433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c96189e3239153f8579b3bbb83768d54394a4e33c6fe39ea7612aaab8c59df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de83d4c231da5d6c11372faa00af9560824cd413986c675d1042af5c6383f748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de83d4c231da5d6c11372faa00af9560824cd413986c675d1042af5c6383f748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de83d4c231da5d6c11372faa00af9560824cd413986c675d1042af5c6383f748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"516eced6996c08d84d730d9a5151f109e34b83e833f99471d806fd3a9cb8eaa1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab25c16a578249e0fb25300cb770b7b9aa2f5aa82a7cd4c96455d6e550b6d152\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"516eced6996c08d84d730d9a5151f109e34b83e833f99471d806fd3a9cb8eaa1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 30492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b5ac46622fd19e3ec0da88f2624456b957e9b606c1fe61b5f9344b480889a57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 21638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd1bc7b33e48a833173779fabfae35a29a6774eed010a4d7a59a1a83c978ebc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 30492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b5ac46622fd19e3ec0da88f2624456b957e9b606c1fe61b5f9344b480889a57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 72498,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"03bc6fbc23bfafabb277ece8fea9640c3676a60d99ef46815a4b2df7f467aa60\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 60138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d0dd9c6602baa83efee944e3f9d7399b3887a256d2730c6005905b4af5816b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 72634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cab887eecff97d7447d9354ddbd5c1e2f7b1ba481889aa02ccf2a291cce15403\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb1145429da42aa7b513c3a7601b2b582ed5ee3a3998bba010eaccf9da40a8f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2650,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"728eb1cfffa96779b9e2ac9929266e46daf34c1b6bc2d677d6f2fcc6e6846a8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb1145429da42aa7b513c3a7601b2b582ed5ee3a3998bba010eaccf9da40a8f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23d54e1cd1b1ff4d1579e2095e5a996958c60b7cf823e7df171aac20c26ef981\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 5683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe94a7377015c4e067162cf2789a828bb50f41ca179051a854fb085d3b198948\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7053,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"23d54e1cd1b1ff4d1579e2095e5a996958c60b7cf823e7df171aac20c26ef981\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/error.py\",\n      \"mode\": 33188,\n      \"size\": 2641,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69c065aebb481100575336a563b04abe527de9af3e2e0fe25eb69d644dc0e174\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/parse.py\",\n      \"mode\": 33188,\n      \"size\": 38327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a10ec218d6ed862b985b9229ec3ec0bcb5848c61659fb3ea3c886f6bd9bb66b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/request.py\",\n      \"mode\": 33188,\n      \"size\": 100028,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5a26678cce7cd741f74d5474c866bd1a5e28abe0a3c250545a959239ea5d70f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/response.py\",\n      \"mode\": 33188,\n      \"size\": 2299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89abe5ccaa188488e364c23277a2da627e07e1d5b834e403231dea455532a0fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/urllib/robotparser.py\",\n      \"mode\": 33188,\n      \"size\": 8832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0b44201220e7f3666c0f24078a0895af633a3dd4e1390459315f3526c452ad4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/uu.py\",\n      \"mode\": 33261,\n      \"size\": 6763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec08b6687c57801b2b44e1d5067b2f61e945b993ffbfe7d2426d7507474c7fca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/uuid.py\",\n      \"mode\": 33188,\n      \"size\": 24020,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4048e8a537760d97507f0b0c73ed0cb9ca3ac145641d6b77a9243529e7ef39e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 18651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91a55c5d8ba5ebeda484c9d84e84cb6055424f2f20f9a70fa9faf394072d9806\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__main__.py\",\n      \"mode\": 33188,\n      \"size\": 145,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"722537c68c0622f8293d39bb6ab1288f3637d8dc45d6f9aae96e49af8145ca36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5c84b55ee007d38fd0f6f168a1eb1abe017bbe352e94ee8f8f299bf676c14a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 9459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e69087581539090088e626babb3dac32333c8d33bb654dbe2f7b5ce3a121c0b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5cbc3876d4bfb2f5d4eda50de6d697c36670d6492885a97bbc3735683a17e90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f728347868268f9e5d2e7a568d01a14414798e8dc1da6d312474679b4fd857f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f728347868268f9e5d2e7a568d01a14414798e8dc1da6d312474679b4fd857f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f728347868268f9e5d2e7a568d01a14414798e8dc1da6d312474679b4fd857f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts/common\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts/common/activate\",\n      \"mode\": 33188,\n      \"size\": 2218,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f177f8ea78b77da9ada2f125a556a3534a20e54991494a28087f42a89bb9255\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts/posix\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts/posix/activate.csh\",\n      \"mode\": 33188,\n      \"size\": 1276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b55967bf75ecfc6d4d266ba232a54e8b7d7af6eb9c17fa0b7c6d8034f76158cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/venv/scripts/posix/activate.fish\",\n      \"mode\": 33188,\n      \"size\": 2438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c31f52e8210e0425102745bbe03854e1a4e6d4866f034f20a71da9685bcb8e69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/warnings.py\",\n      \"mode\": 33188,\n      \"size\": 18488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b4617ddc9ac5ceb68394401e719fa643809960188b7f23db0a1d28f0d176f06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wave.py\",\n      \"mode\": 33188,\n      \"size\": 17709,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3a6eddfc3a231e52c18f578ea0413fa6bfa6cfc6d0222767905f8b3ee06fe33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/weakref.py\",\n      \"mode\": 33188,\n      \"size\": 20466,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7637407c64a643ac7812c32bf5dfd098672117747903bd739add37282d3de95f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/webbrowser.py\",\n      \"mode\": 33261,\n      \"size\": 21767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32a3ec046a65ccc3ddd92f028e10117ceba29d9f95799a15cac9a189d20f757f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 587,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db2259a74988dc73a209cdf7aaa3b79ab6f213384287a8bd288ad141a935e236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 718,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f1044ec31a5422c45eac567306b09bea36f2f537655c43a0333121d229a8e31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72f2e3e4c729b503d554248de8457d94ebc701c4ce7d5423786809c3ac136804\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 718,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f1044ec31a5422c45eac567306b09bea36f2f537655c43a0333121d229a8e31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 15708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cf969835aebee8f0926dda560a934f46a61a06a5f4f0a4110170c94d28597c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b458dbe4be16e33664ea5ef7a23881ebe04cf85746dd2cb921814115ecd1ed1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5ec4649cc4db9fc9d1390c3a08760b3027a35ca03c322df1e0861b89f39fefd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 7682,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750f07dec69206bd26fbc6c8c019355a2f355863f3159dd222e4c3d4b62b24d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dacb381dcb2c2baf942a0c8c5469ec49d7318e46c3b67b1a1b5a3af28ee75658\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 7739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bc19f0091fe174322808065ec2ef85c11cc7c85dde45d8fda527f4f263e1ae9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c051f92d12351002eec59fcdd6cd0d390d8886c2ec3a15b34fd0f18b3dbf6c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4418,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1129fff0e2cb9f4963a1b5be289c862433ddb678d1409c05f224e13fe83a0827\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c051f92d12351002eec59fcdd6cd0d390d8886c2ec3a15b34fd0f18b3dbf6c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5194,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bda233cf57666516032fd7c606d01403cbc1006ecb8527e408c4a3419d0b5346\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 3621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efe297263be2f9fcf954a2fc32b93d07dde9f029e6ed7ff41c46633d290140f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5194,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bda233cf57666516032fd7c606d01403cbc1006ecb8527e408c4a3419d0b5346\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 14802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c0d5d563a744508de79e1b57cea982eae4048087500b72f59b31af248f6bb4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb0bdbbb2225b37e281e5a5700838f7460f0997d26cbe8959af2d398b4b5d5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 14802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c0d5d563a744508de79e1b57cea982eae4048087500b72f59b31af248f6bb4a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/handlers.py\",\n      \"mode\": 33188,\n      \"size\": 21001,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf747fbe6ff2329911d47f73ccdcd24be3cfc97c14465f1e8a2d3fed40bc4c8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/headers.py\",\n      \"mode\": 33188,\n      \"size\": 6766,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fbf95a47d8e4c0d831fd52312ec43076cbf503c190269876f170a5cf5585fb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/simple_server.py\",\n      \"mode\": 33188,\n      \"size\": 5139,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db7489a683b64c306ed1b4e0b909eed5c8977fc89898bb7bd55e31183bbe7aea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/util.py\",\n      \"mode\": 33188,\n      \"size\": 5634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f75aef68149b582884fb20000c24bf301e441084d4900f7061df425efb8f741\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/wsgiref/validate.py\",\n      \"mode\": 33188,\n      \"size\": 15163,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d33d7f6c4b959cb0ac459ca01303bdc37ece008f4db6d6dabcb3dcdf167b5a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xdrlib.py\",\n      \"mode\": 33188,\n      \"size\": 5913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bae885a7da49c1fdca1136bf5aece233f0b8f4a6948da3969072c26de395e83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 557,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34296f728e7fe68cccb97a9f6edbf3bf3a686f44044c744fe85f207a92ed4811\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4749a76e8ba8c0501b38b79c7a3a25c050c51b461c11a512ba9d461d371a9ba5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 163,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eddf9fe43b1c821742e2856bad62ccd1250627a73739671ca40b9c68a0708cc1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 686,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4749a76e8ba8c0501b38b79c7a3a25c050c51b461c11a512ba9d461d371a9ba5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/NodeFilter.py\",\n      \"mode\": 33188,\n      \"size\": 936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9bfacbbb64e239a75591a7260b3ed86748eeb4366e6c40f3542753e79bace9a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 4019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b415a6f3d3663c3ac332ee4a0f4213eadad9281508dc97410e258a03633b063a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7e088fcd016ff9e27a261bd8a7505323499019831cbd3cc8c6d81e093e20474\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b75ec317fa08765fe70448043e46e970afbab6afff2e6cb8126df25ed0cc47bf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7e088fcd016ff9e27a261bd8a7505323499019831cbd3cc8c6d81e093e20474\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da5005e993c2b65d46f1a986266f64d2fddb0d47c9f25655fc9603b3cba5668b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c755e275c113de1f769de38e49d2f0369b6296306c1fe1d3503173002fc8b0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5433,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da5005e993c2b65d46f1a986266f64d2fddb0d47c9f25655fc9603b3cba5668b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b801e78f2bb13059ac9b692cc41838cb6490e0cea46c08d40b0b801f1ddb758a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"186c2ef357ad1b911c883bee517601e45ac2498fb147a34c40939eb22f95338c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b801e78f2bb13059ac9b692cc41838cb6490e0cea46c08d40b0b801f1ddb758a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 26620,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fc668189c5905c3aa7be70634ac748b92d1d89a94ee80264f1887c32f42c118\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 23994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06f8006bd95428fffe1f8b3a85d2665fc5677d8d9a46594268eb139944443d93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 27146,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc987e33e347839cbdebc8158322fa598ebee57f9b073b3d3d7d391a82e15c2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 2699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d88792920b81c046be4b0e2ee08c6f69728ac3e9b7f608358976cb247ec1ba02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a2be819c799ed33044e12d28b0bc3b811bdbf23f34d477a7e8aa5ab89a9ba3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 2791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a20e24f8c72bf7fad4061f91e2ca6e5b4962ccb379cfe3fad7603e423de40bc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 55746,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0e9ca2a4d8237f6c3545e7dd4fc18744c4af69c7ddb3960fb16315ddc1f8f36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 54172,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02e0f9a27d0bcc35c049776e487f3fe3051928e93787f853a6876714b3281865\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 55848,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e7bd7e51ace5d54fc75e0b5d0139028dad784f223e3a211751da38de83429ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 10537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fb905350ab7703e703e0300cbe820e503ff708487f22851f1939631bb95a103\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82d47c32ab57a38171e4c059c23b704c3655bac5c45f6d645879836271dee37c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 10537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7fb905350ab7703e703e0300cbe820e503ff708487f22851f1939631bb95a103\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 13523,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fd753f2b5d60402d7a89ee3ebafeb8d2fa023138910461056262a0abc2de594\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 13094,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6103530edee65f9a0bfc4c4a8be2c211a83064e61c559306478d55a3ce133bee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 13553,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"892d2315d06bb33e8ae8358155b1c03486f1c195211c50898dee30957f995f72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/domreg.py\",\n      \"mode\": 33188,\n      \"size\": 3451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"826b02a803930834b96b1086cbee7db1d21c684f65dd3073706dc7bb5ba1a3e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/expatbuilder.py\",\n      \"mode\": 33188,\n      \"size\": 35756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76d08b0bdb23aadf525afcdad04696a24541e88e090172eec8bfc485f8b7cceb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/minicompat.py\",\n      \"mode\": 33188,\n      \"size\": 3367,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42974c4c67803dfe80b016ff8aeea0d1e5c751703ab3aec5be765f4e534367be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/minidom.py\",\n      \"mode\": 33188,\n      \"size\": 66819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"750e0efce304ff642dbd9923faebbd50b45823319b6f963413495774480ba18e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/pulldom.py\",\n      \"mode\": 33188,\n      \"size\": 11761,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e112cde1ea72d712c6eb3fe2e1bb25ae7b9ef3ee7c89d3e663ce931dbeb2ef0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/dom/xmlbuilder.py\",\n      \"mode\": 33188,\n      \"size\": 12996,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a067e95694fcb0bf218a8ffe0e2a2437d03a6edd9618c8828ca1d22098797f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/ElementInclude.py\",\n      \"mode\": 33188,\n      \"size\": 5151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc836914102f1434b0ca460e47ed54231e609f4cf75792df672c18efd36bac0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/ElementPath.py\",\n      \"mode\": 33188,\n      \"size\": 9935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d4a9f0a5c4c320cea92b1635dd41282bc144166c3a1776cfe13eda428cc0152\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/ElementTree.py\",\n      \"mode\": 33188,\n      \"size\": 57029,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9576195c51d1a6e82d8472d7fc85059793e912c04210a2b068cc13d6e5ae7593\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 1604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"171cc64fd9c7ba894922a35cdec74c4e34ebfd1e7973ad25c01b80ddde35b4cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 1561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e355539022ba3ecb609d71a55f24b41442ec00baf833ab898f882555e1b44ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 1561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e355539022ba3ecb609d71a55f24b41442ec00baf833ab898f882555e1b44ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 1561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e355539022ba3ecb609d71a55f24b41442ec00baf833ab898f882555e1b44ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 6137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37b493ca48419b3fb7259ef6279ed005ab8bf97781b34f801ae2f57a3ae1442b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 6137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37b493ca48419b3fb7259ef6279ed005ab8bf97781b34f801ae2f57a3ae1442b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 6137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37b493ca48419b3fb7259ef6279ed005ab8bf97781b34f801ae2f57a3ae1442b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 44427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82e604e0cb9a6d53794674c0e309315c9e76096411c3926ac4827fe0a85ba3b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 28144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae4d71ab15beca5aed4c595a96dcbf00d260de2146c5a79afb02733ce9554391\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 44730,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d1d4b6a6588166e88443480853aab1149ee905709c580f41bb6cef37466e5c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5699135811e671d2acb15724259787cc0d52cbe203e5df4d42824f0a2915d028\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5699135811e671d2acb15724259787cc0d52cbe203e5df4d42824f0a2915d028\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5699135811e671d2acb15724259787cc0d52cbe203e5df4d42824f0a2915d028\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77afaa742d14ffe528d74b2cf869da6a3637fe9aca034b84751215b3ef61316d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77afaa742d14ffe528d74b2cf869da6a3637fe9aca034b84751215b3ef61316d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77afaa742d14ffe528d74b2cf869da6a3637fe9aca034b84751215b3ef61316d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/etree/cElementTree.py\",\n      \"mode\": 33188,\n      \"size\": 82,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0f57acab07fe4f9c116c3392d85946bac8e78608f409cea70005f16ea019b57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b88497adc30d5d5eda7789c25a2206ee9270c932d584d7ac42680325651da45c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee8ba12b8421c247b71535d44780d6f0caf95116334eb5a1da3241e8c982df2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f3a85c727a6a5099130bcce766a7f30f68847e2552829cf64da6d3536fba17c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee8ba12b8421c247b71535d44780d6f0caf95116334eb5a1da3241e8c982df2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc8faa41f2cfd2869a00e2ba3df93db57c90a66b183ee01118aa284455bfa711\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 262,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf168881ccc09e4345e6862f6a1256f3390a088bf4ad285e42d9cc61fdde778f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc8faa41f2cfd2869a00e2ba3df93db57c90a66b183ee01118aa284455bfa711\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/parsers/expat.py\",\n      \"mode\": 33188,\n      \"size\": 248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64e1947747c2874117a7458bba1f07c86620cc0ed9a4a4116d262878e4a2aa09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 3630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d23507defebf701605653a0cc8d3117c087eb4a4ec4a5eb9bea8780cb5f140d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"144b92f3c09aeccae413be27206cbb7ccac40882fcf701e37ada5184b9005f00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2110,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d479856c24cf0a560d334a55fddba75eea230a05fc39af73df4017f870ef4d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"144b92f3c09aeccae413be27206cbb7ccac40882fcf701e37ada5184b9005f00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5467,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b29105da18cae3bdb1605537831b2e76c546231c92441c49354e79759bc429d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 2793,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"089845174799b2408a2e9eaa64d050641d743951937f507f0f76293053335567\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5467,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b29105da18cae3bdb1605537831b2e76c546231c92441c49354e79759bc429d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6045e7fcb1ddc49ba1ea1d067c9e55d37aafc31413c9e56bbcf53bd10cd95509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11982,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afe8e73b32cd9a78283c83e5eb3e042803cfe47c69d38079a4b3e6133f4760bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6045e7fcb1ddc49ba1ea1d067c9e55d37aafc31413c9e56bbcf53bd10cd95509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77434a4d669f5a39829cf8db33f3b04e71103551e614117cf9d570330270d24a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 4506,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b40de3b0729d4c8e68575210cf29d4dac9bf37dfff9fc3e74af699d00a2726fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12315,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77434a4d669f5a39829cf8db33f3b04e71103551e614117cf9d570330270d24a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 12809,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"223c1a7095aaa0ad93a10d10f8925c96513797afb7f90630c2dbd22894e8c3e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 11152,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50740f76d102e3d687ff358f0695f36442246dac951c7c7f964cd7823cc5dbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 12809,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"223c1a7095aaa0ad93a10d10f8925c96513797afb7f90630c2dbd22894e8c3e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 16924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4396699cd0565d74d484b168b6670428483fe84e9954020eaea80ec321bd98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 10461,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ef062bd42fedd56aea8180ade32b5d8086a5e630650d0d3a25d0ddabdfd1675\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 16924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd4396699cd0565d74d484b168b6670428483fe84e9954020eaea80ec321bd98\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/_exceptions.py\",\n      \"mode\": 33188,\n      \"size\": 4785,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cfa45778e457731e0988d9ceef29cf9eeef916f22d7bd53f4cb08c7a2b8b2ce2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/expatreader.py\",\n      \"mode\": 33188,\n      \"size\": 15704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fadb70de2344c8a74694e8565042be44d7505f23708884c45e0c10deb59de2d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/handler.py\",\n      \"mode\": 33188,\n      \"size\": 13922,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5882e7a08f97768b63370b2fe2d557d573708494fcb79d068d3e7807b53f4e15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/saxutils.py\",\n      \"mode\": 33188,\n      \"size\": 12205,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8aa4d2667cb13160730b346d37203fd6104498f92b2a633ba1aed04cd72c4f04\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xml/sax/xmlreader.py\",\n      \"mode\": 33188,\n      \"size\": 12684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"922a6e2995952366b366c13736d715d77fa1868ee453fdabe35043059357768f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87ad5c8954dd56fbbca04517bf87477ff4dce575170c7dd1281d7ef1f4214ac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e847707a445f302cf8cc69d3c2405aeae9dee49405f2b11ac2dee120ba02d0e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e847707a445f302cf8cc69d3c2405aeae9dee49405f2b11ac2dee120ba02d0e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e847707a445f302cf8cc69d3c2405aeae9dee49405f2b11ac2dee120ba02d0e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 34520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"247ee2151bc9fc28af15b65235e2bf0b544a10d9fee6d10ccbcf4f38b43b772d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 29082,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d13a3ec8f7139f988a032ce0d6645dd16c4fef1adfca0952c4986620b88ac0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 34665,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cd023c3140b5359fc6b94b10b583bfd3570e71a33e786fef9fc6ba45cbe3f38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 29459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1721127ba201a1b1742e7e75c95739b7f4170dc3cbfbf30566ee5d6ff93733ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.opt-2.pyc\",\n      \"mode\": 33188,\n      \"size\": 18324,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e9cd4cce6c2767178cf4b0e7ca6cc2ec3ea6415e0d7ad3d0cd408a4bf14e02e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 29556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eea630d68ca7838d3b41dbd37c20dd434d2b771e78f1bc40094b672c37ce06ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/client.py\",\n      \"mode\": 33188,\n      \"size\": 48988,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c14db6569ba7193688e070e1ef495ce90c7b90fdf40fb1b7c6998f657da6bacc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/xmlrpc/server.py\",\n      \"mode\": 33188,\n      \"size\": 37170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f9a4257a4d2328a7a722ea341e5dd5f73e9b3002af1a2f20ba0069300e40df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/zipapp.py\",\n      \"mode\": 33188,\n      \"size\": 7157,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b499fb8e70a8b38238528adb999b7cf43d52da3896463bb2b7912878db6ff791\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/zipfile.py\",\n      \"mode\": 33188,\n      \"size\": 76282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04a6cefbbdcc86bba24d5d661e1de53c797b513c4fdacf2a3d9134fe41a11f9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/python3-libs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/python3-libs/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 12763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"6acccd7ebb003d23\",\n   \"name\": \"python3-pip-wheel\",\n   \"version\": \"9.0.3-16.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT and Python and ASL 2.0 and BSD and ISC and LGPLv2 and MPLv2.0 and (ASL 2.0 or BSD)\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-pip-wheel:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-pip-wheel:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_pip_wheel:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_pip_wheel:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-pip:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-pip:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_pip:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_pip:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-pip-wheel:9.0.3-16.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_pip_wheel:9.0.3-16.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-pip-wheel@9.0.3-16.el8?arch=noarch&upstream=python-pip-9.0.3-16.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-pip-wheel\",\n    \"version\": \"9.0.3\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"16.el8\",\n    \"sourceRpm\": \"python-pip-9.0.3-16.el8.src.rpm\",\n    \"size\": 1255748,\n    \"license\": \"MIT and Python and ASL 2.0 and BSD and ISC and LGPLv2 and MPLv2.0 and (ASL 2.0 or BSD)\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/share/licenses/python3-pip-wheel\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/python3-pip-wheel/LICENSE.txt\",\n      \"mode\": 33188,\n      \"size\": 1090,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc89805a1f8ebf63b0fa389bead64bb23136f386b397e66ef4ec980f1e72e34f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/python3-wheels\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/python3-wheels/pip-9.0.3-py2.py3-none-any.whl\",\n      \"mode\": 33261,\n      \"size\": 1254658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b289c9b8fa942dd1bb4e25bf6ae45ab259dfcfd53321669987c072b780c0f847\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"89d0c665273f84a\",\n   \"name\": \"python3-rpm\",\n   \"version\": \"4.14.2-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-rpm:python3-rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-rpm:python3_rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_rpm:python3-rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_rpm:python3_rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_rpm:4.14.2-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-rpm@4.14.2-37.el8?arch=x86_64&upstream=rpm-4.14.2-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-rpm\",\n    \"version\": \"4.14.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"rpm-4.14.2-37.el8.src.rpm\",\n    \"size\": 430929,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/90bc18bc680d2f995f7a0f58fd7a7a3982ab4b\",\n      \"mode\": 41471,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/26/ac0d9abde1b8aab556544d6ed0c18f1681283c\",\n      \"mode\": 41471,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/31/ea6e3fb3ca7a7b081b1890c6cb99dec3c4e7c9\",\n      \"mode\": 41471,\n      \"size\": 57,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3f/0204a356dc463e15af580702d34f30e67fde4b\",\n      \"mode\": 41471,\n      \"size\": 86,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b0/d565e6479de0072f5de4770f38a83dcde8fc4e\",\n      \"mode\": 41471,\n      \"size\": 58,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bd/d0f3985c46c35b67717f092f64c19e895e878b\",\n      \"mode\": 41471,\n      \"size\": 58,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm-4.14.2-py3.6.egg-info\",\n      \"mode\": 33188,\n      \"size\": 222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"201ffd9afb0dffe735c0cc8d92e35124c45ab8227a15ecf7dda584081c2288c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__init__.py\",\n      \"mode\": 33188,\n      \"size\": 3508,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25ea3697bcb624a4142f101cf88f37432b4f0e3bc8accb2e1e433e5ef0ad1c01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 3619,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"119087effaa4b78f81a956dae1368bb23a51e2d3affb2c1d71a9c2d94fd5f540\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/__init__.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 3619,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"119087effaa4b78f81a956dae1368bb23a51e2d3affb2c1d71a9c2d94fd5f540\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/transaction.cpython-36.opt-1.pyc\",\n      \"mode\": 33188,\n      \"size\": 5616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae147e164c7885bfb5480dfe2de30bfa71c027e6eaf604a8c73ad54999b13b6a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/transaction.cpython-36.pyc\",\n      \"mode\": 33188,\n      \"size\": 5616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae147e164c7885bfb5480dfe2de30bfa71c027e6eaf604a8c73ad54999b13b6a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpm.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 173816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"360bed4589a4bb37cd10d00e99dd4f26cc120aef65bfc5f2152ca9b582c2cd82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpm.so\",\n      \"mode\": 33261,\n      \"size\": 173776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0af0d60d4cf6912640e282249d99942ce440c799e7e40a46d8bd774c129a1946\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpmb.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 22328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e4dab0b6e45ae59649769c00420422e0aa235081ee436b571f5f7ce612cad31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpmb.so\",\n      \"mode\": 33261,\n      \"size\": 22304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2abf6ce3c7275a1f116fb72152ece9f010842b9e0354efeec9a66445cb75ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpms.cpython-36m-x86_64-linux-gnu.so\",\n      \"mode\": 33261,\n      \"size\": 7888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4340f6490ba9a875b53a36f19b9bb8d6c10956b6bff7ff2ee8589c4ddc13e1d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpms.so\",\n      \"mode\": 33261,\n      \"size\": 11960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4252054be2a1ddc6ab3e69e5e2800876fc6b4f8c67c1197a8a80df642c2eda7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/python3.6/site-packages/rpm/transaction.py\",\n      \"mode\": 33188,\n      \"size\": 5892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c75eed6b47c141c7f5d25e73fbf2c9b15345234f3c346ffbd6c3ca2a490c1c82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"2beba4d511076d60\",\n   \"name\": \"python3-setuptools-wheel\",\n   \"version\": \"39.2.0-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:python3-setuptools-wheel:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-setuptools-wheel:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_setuptools_wheel:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_setuptools_wheel:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-setuptools:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3-setuptools:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_setuptools:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3_setuptools:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python3:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3-setuptools-wheel:39.2.0-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:python3_setuptools_wheel:39.2.0-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/python3-setuptools-wheel@39.2.0-5.el8?arch=noarch&upstream=python-setuptools-39.2.0-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"python3-setuptools-wheel\",\n    \"version\": \"39.2.0\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"python-setuptools-39.2.0-5.el8.src.rpm\",\n    \"size\": 347696,\n    \"license\": \"MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/share/licenses/python3-setuptools-wheel\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/python3-setuptools-wheel/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 1078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c32a3ac395af6321efd28be73d06a00f0db6ab887d1c21d4fec46128d2056d5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/python3-wheels\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/python3-wheels/setuptools-39.2.0-py2.py3-none-any.whl\",\n      \"mode\": 33261,\n      \"size\": 346618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"938955c41e6dcc2e73ccaf51bd8f755c64df739929a4acff453fde2d0b921bb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"526179e39b2a5e74\",\n   \"name\": \"readline\",\n   \"version\": \"7.0-10.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:readline:readline:7.0-10.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:readline:7.0-10.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/readline@7.0-10.el8?arch=x86_64&upstream=readline-7.0-10.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"readline\",\n    \"version\": \"7.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"10.el8\",\n    \"sourceRpm\": \"readline-7.0-10.el8.src.rpm\",\n    \"size\": 466321,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd/1bc007ec2e558d662585bf8c5bbcd2b9526faa\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8/81f0a1b2a891e387f02769db50c350d505b888\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libhistory.so.7\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libhistory.so.7.0\",\n      \"mode\": 33261,\n      \"size\": 48304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70b02eea19da0311c6a53aac3e73c65fe167c8520ace5f623aa25c03978be1f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libreadline.so.7\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libreadline.so.7.0\",\n      \"mode\": 33261,\n      \"size\": 338648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69c5979f31f86a1bf7ff92f1b10cac34034a7edf69dc0c59597029aac9a269ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/readline\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/readline/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/readline/USAGE\",\n      \"mode\": 33188,\n      \"size\": 2025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0759c74d61889b687f33cb03899630d8ecc09c5ebe7cedd2dd2e17eeef193f93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"265d6fac88d0a13f\",\n   \"name\": \"rootfiles\",\n   \"version\": \"8.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:rootfiles:rootfiles:8.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:rootfiles:8.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/rootfiles@8.1-22.el8?arch=noarch&upstream=rootfiles-8.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"rootfiles\",\n    \"version\": \"8.1\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"rootfiles-8.1-22.el8.src.rpm\",\n    \"size\": 599,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/root/.bash_logout\",\n      \"mode\": 33188,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2584c4ba8b0d2a52d94023f420b7e356a1b1a3f2291ad5eba06683d58c48570d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/root/.bash_profile\",\n      \"mode\": 33188,\n      \"size\": 176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"173704a195292bed3d32ebaff5ace8810f7d02e986c43c0cb514d173dc4b2d5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/root/.bashrc\",\n      \"mode\": 33188,\n      \"size\": 176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"413f2dc32504db2907974b6a9fea78414e804048bd9f3a02c28bd6292b87b0ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/root/.cshrc\",\n      \"mode\": 33188,\n      \"size\": 100,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e9418cde048f912e4aadb76ba55045b5d9af0e0565f7091bfc752154451eca9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/root/.tcshrc\",\n      \"mode\": 33188,\n      \"size\": 129,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bb91935e2cee1d5d2ab7e8d92125acbfac12d9bf3f1c7922aa4ce77ae7ea131\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"5b915c430ffb5a6b\",\n   \"name\": \"rpm\",\n   \"version\": \"4.14.2\",\n   \"type\": \"python\",\n   \"foundBy\": \"python-installed-package-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/usr/lib64/python3.6/site-packages/rpm-4.14.2-py3.6.egg-info\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"UNKNOWN\"\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    \"cpe:2.3:a:rpm_maint_project:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maint_project:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maintproject:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maintproject:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown_project:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown_project:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknownproject:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknownproject:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-rpm:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-rpm:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_rpm:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_rpm:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maint_project:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-maint:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-maint:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maint:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maint:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maintproject:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown_project:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknownproject:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-rpm:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_rpm:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:python-rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:python_rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-maint:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_maint:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:unknown:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:rpm:4.14.2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm:4.14.2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:pypi/rpm@4.14.2\",\n   \"metadataType\": \"PythonPackageMetadata\",\n   \"metadata\": {\n    \"name\": \"rpm\",\n    \"version\": \"4.14.2\",\n    \"license\": \"UNKNOWN\",\n    \"author\": \"UNKNOWN\",\n    \"authorEmail\": \"rpm-maint@lists.rpm.org\",\n    \"platform\": \"UNKNOWN\",\n    \"sitePackagesRootPath\": \"/usr/lib64/python3.6/site-packages\"\n   }\n  },\n  {\n   \"id\": \"ccc1c24847ff05b0\",\n   \"name\": \"rpm\",\n   \"version\": \"4.14.2-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:rpm:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm:4.14.2-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/rpm@4.14.2-37.el8?arch=x86_64&upstream=rpm-4.14.2-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"rpm\",\n    \"version\": \"4.14.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"rpm-4.14.2-37.el8.src.rpm\",\n    \"size\": 2084270,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpm\",\n      \"mode\": 33261,\n      \"size\": 21400,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83f359b04cf6c0de3e03e11dd177f3d4cf9d7e517490c4db4a4946779159c1e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpm2archive\",\n      \"mode\": 33261,\n      \"size\": 16360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7010bcc367eaba99bfe579aa26ed89c96cc7ef52e41a271d7a1a9ec21cc3fd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpm2cpio\",\n      \"mode\": 33261,\n      \"size\": 12256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12cfe6f5ba6d71c1d4772a6d1f6f9d2f3f8e6ec39304ef795db27998c3f9d506\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpmdb\",\n      \"mode\": 33261,\n      \"size\": 17424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7533a93f2bf3eaf36e2d5c24675920d474109a1bbb8ae8589f774eea6f3c9d27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpmkeys\",\n      \"mode\": 33261,\n      \"size\": 17336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40d600c9a165fe9f0846c1549f26f2f4b5fad8b25ccb8431ad7ed4cddb2d14aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpmquery\",\n      \"mode\": 41471,\n      \"size\": 3,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rpmverify\",\n      \"mode\": 41471,\n      \"size\": 3,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/3b133f4c3f8fce6676351a82f6a9d3b787e05a\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/57/6d4b38267c1d098e7114d02c53675f219469a2\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f/add46c559566e4950a500d882be1708774a71d\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d2/86c4e5b81c1bb250e34f612b51953418cf1765\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ea/ad790382d798fee0d67b71821ffe1b4aed83a5\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/fileattrs\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/macros\",\n      \"mode\": 33188,\n      \"size\": 43387,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d4410b0807c240e7a4144986f7d7649c73c354faeda7e3b027d0b1d0a3f368f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/macros.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/aarch64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/aarch64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb512542e0d06a13ef94b67afd8f665b9e66638788a25dc8892cdffb99ba71ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alpha-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alpha-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d12be62450a06d0f64bb418d4ec51ad381f8c8871c7bf0989f6ced5c0d3075d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev5-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev5-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ef22473f381862949e300105c1fd3aef3c30d2549cbef378701a38b38b4cce3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev56-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev56-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22958c1d46ffda385968427641d39c35c4cb6253784c5420f1478dc74bf3f6e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev6-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev6-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c739443a3c26d3cc58c3d5140ac6d5976d1ac68b08593ebfe338db5a668b63b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev67-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphaev67-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"408093fc7379c2f31883cb31307aaaefb57f7eafd7b86b9a99b0d40759c9bc92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphapca56-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/alphapca56-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"70abc441f14f587c2c91e72bf83f74940d6af277cfbb6ac7d04fbcae0e598b91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/amd64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/amd64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3033,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d46e0ba264eaec5072e60eb3b070c8dfd8aac4b9136ccfb05294f1a81251df54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv3l-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv3l-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8398009f8a18e8131db229bacb461df8327f49106a07a8876f86b4833a92134\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv4b-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv4b-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8cbbf9aa930578c1371d1c1fac375488d642fcca9d4d4be7c35e8ccc6cdbc1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv4l-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv4l-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c9add18208109699bcaf94cf94ffd6eaf501cca25f0d5876d9181d910cff666\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tejl-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tejl-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3044,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eddc01d3602d9f64fb278f9a78c275a316f7af289d1edaea45c08b83b12d7c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tel-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tel-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eac1f1d332ed468b0ca9fc23043bf79ec88f58dbee183066f9e7b553c45ea0b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tl-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv5tl-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3041,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2866ded7c0a3c7f394cf49143e56237e33c75beef329a71a2bd926484f501748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv6hl-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv6hl-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3067,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37eef6cb39b090ad15f899d1dfc0c6e0a0a7bb5feee2a661f75997ba23f1ad1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv6l-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv6l-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84e4fb0f49da78882a8ba9e78fb79e049bd7f0fe4ea27d0e6eef32faf39650b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7hl-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7hl-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3075,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a5ea922a2a4282d42ff1d7c46c2074580d0ef10771e5f462ba455b3b208f0ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7hnl-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7hnl-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3070,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acece40e00e3667265f92404deac6616263bbb58cffa572b4707cdd51780e31e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7l-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/armv7l-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ef4d2135cecf4563c5a3af797b757236a55a645a90df41f68b2748af7b5cf56\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/athlon-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/athlon-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c9279ca9f95b776f25b4ceefa98e9c0d8d6be6d947f9a85873317e25f03dd67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/geode-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/geode-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7ec000a1d6311590cfb1721f7949d4a9cb1f675ad2a40e6c19a4d9a7be68d10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i386-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i386-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2660bb2b2fe3aa9d3ea444646ebc335f65f77acb6a9b06ad2566814a26507682\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i486-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i486-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed74b4a5125a2ba6d772f0209d48f432ae72f84f6b1e5d543f55c6464ec72947\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i586-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i586-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8da92d7d47cccd3c1c0cf04714a2cd80112cb606b0bf5728f6f071cb01a8c24\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i686-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/i686-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74e11ddaf6ba99e925361327caba945bd4d919851aa526b01562afcc909abdd2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ia32e-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ia32e-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3033,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d46e0ba264eaec5072e60eb3b070c8dfd8aac4b9136ccfb05294f1a81251df54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ia64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ia64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"860799d04d554170e1145f135f49124df9cfbc15e9fc770e76f15e8c897c4a0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/m68k-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/m68k-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3075,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"836fcd20cffa9ff7f108f3d2a1c857b207eb4b1cb819ae269559fc99b40a15d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3026,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"630c6435736c40185fee0a2b7d57e2153b2fd2ae9255d23db6f0712b540e7f57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f42bfdd9ca6f2ba23a9d7b635169e64e90139a00ca16e7207d81e9a437510f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64el-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64el-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"998f71983432f0be3da3045dc413e79f925afd90ddc2d9c004bc991573598abd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64r6-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64r6-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1faebec485360d66840aa1ec31fe9c522c59e2fb9cb7fb9fc2d5b4f3903d462a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64r6el-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mips64r6el-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3044,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"058675f1bf0b09ca5a603df9e342dd030e3e406f3445068e78708cc396371be6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsel-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsel-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9918bcd29e5f937549dceb1127f2775294e496dee38cf2735498168940fbe164\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsr6-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsr6-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a2fdb02bd959921af4154eb8956ac392f26996cba6e7ddabe0a14e0706e0f53b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsr6el-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/mipsr6el-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3036,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10c088db50be0d770c729d6b85471e467ae5e74d0e7727e8b27a4eb71031f5a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/noarch-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/noarch-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 2941,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bff340ac94d0096ecb18528380a8389e8690f870426338d95589d4c0de63cda5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/pentium3-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/pentium3-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3041,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b7be3f55f06a1c5db5b6d70a9fafafb5553c94a540a0efeb3d5610d767e3201\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/pentium4-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/pentium4-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3041,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce87446960e94f8d9d09d2527f3e6e1e14e4d9b9e93853a2bdc0aa30f1a379d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc32dy4-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc32dy4-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"310da370dce71efb7a310e52b3aa957c0287a68676c1151367697e9d8af72027\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64iseries-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64iseries-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3020,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"346d040b05a4b9a3cff7583f56611da6b1171ab14202e08587736f04ae995f69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64le-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64le-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3035,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e668c7f2ea9ef7f06276a01d759e03b4877592de9ad2d994f9cf717fa23a40e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64p7-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64p7-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3058,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12d994fa3a8d2538ffc9f634e41043439fec942415a9c99e95a343df18bc8dee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64pseries-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc64pseries-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3020,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"346d040b05a4b9a3cff7583f56611da6b1171ab14202e08587736f04ae995f69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc8260-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc8260-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc8560-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppc8560-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppciseries-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppciseries-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppcpseries-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/ppcpseries-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3023,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4a7673022c6a463041b3d99f48f4d7f74fb93b56190557566530b701624baa9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/riscv64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/riscv64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3037,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46395b79cc0ad581f0d2d72624bc42ea10c43d50ad0bea80a71c7a8af36bba1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/s390-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/s390-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3026,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36bfa1b1e3a3fa173645a9e197662b2937af0fe6382b09029b06a634876697f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/s390x-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/s390x-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"deb6eb8a4e922f3c250ac4c51595ad29fb15d89133e93f63067ead5a7b4f1397\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c9e53dc71974d67e9f8cd8f9f43195c4f85baec0cda27046b1813fa47d09b90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh3-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh3-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3022,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddd7defc6670555c21792e907e2117af891bfe4fe8b436a5f03435671472fe31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh4-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh4-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3029,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54f9e8f34beb7fa418f6f39fce5538be34a1ed4cd46019451d046ae9788e4b00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh4a-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sh4a-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"443b6e76fc4cd7d265cd18b7dee1c5a514dc02527a05be7967de4f44a3f8d724\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5159a3b98d32c1b1cf1e9b18d791360f6cec6a2e547476d46100d728ab5b0f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3060,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9b8a21ba703caaf01a2946744828a966d385c4b3b917429b2178277fc866286\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc64v-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparc64v-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3057,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57131ae62d1f9c7dfb9c7738cd54113336edf93eb4ce088cdf1f67025b46cf69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv8-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv8-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3057,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b020d3e6f8472f032eaf6d9e45bf980a1fe79310ebe1977dc29096a5effe990e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv9-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv9-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3052,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5159a3b98d32c1b1cf1e9b18d791360f6cec6a2e547476d46100d728ab5b0f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv9v-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/sparcv9v-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3049,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12ec822dbcf1de953eff897803a92da39eb23f2c004186412a7a068a58488903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/x86_64-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/platform/x86_64-linux/macros\",\n      \"mode\": 33188,\n      \"size\": 3033,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d46e0ba264eaec5072e60eb3b070c8dfd8aac4b9136ccfb05294f1a81251df54\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/python-macro-helper\",\n      \"mode\": 33188,\n      \"size\": 634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40fa71de2e6a820ab7f78c5bbc78c24df6a294f62f8c5d1b8be250099269c0cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpm.daily\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b98748f664b3245cb7f3d22927b541ee659c221094df7e4d7e5950b6d73eb37d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpm.log\",\n      \"mode\": 33188,\n      \"size\": 61,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed0a8b7f8ec41ea0d6d8d7ccdc698d216cd7a7154e77bbdaf8eb02bc4535ab0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpm.supp\",\n      \"mode\": 33188,\n      \"size\": 688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d88d7b62b79bf754a47ba69d0997ae82c4f0e5ea6af3f8fe2e40ffb1fc3fe054\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpm2cpio.sh\",\n      \"mode\": 33261,\n      \"size\": 1249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a4f2fc1e0e7dc8f2b93809d5ed2eb1fa4ab36e3442b95243cb209ba823741b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_dump\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_load\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_loadcvt\",\n      \"mode\": 33261,\n      \"size\": 1467,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a493a0f840898a69a353108c12fa743812618f7e46926a43e2afe6a50dba175\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_recover\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_stat\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_upgrade\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmdb_verify\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmpopt-4.14.2\",\n      \"mode\": 33188,\n      \"size\": 11424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a026eacac6acd078cc5cfe811cbb827eec891b0da4afa8fffddf13aad5820086\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/rpmrc\",\n      \"mode\": 33188,\n      \"size\": 17154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0376c2bcaeda95235883c368d021659d839eb55bba793187cc63bb3ecb207980\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/tgpg\",\n      \"mode\": 33261,\n      \"size\": 929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c02352279bc7e500ef1ce692935971047606f54e8d4673dcf6ed8ef6def25752\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/rpm.conf\",\n      \"mode\": 33188,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"175c0da0b7f1425939a2f3f109dd6dfa1caef09de6a9cc3a22acde02cb654ef1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/rpm/COPYING\",\n      \"mode\": 33188,\n      \"size\": 44170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d56f4f1f290f6920cb053aef0dbcd0b853cda289e2568b364ddbfce220a6f3e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/lib/rpm\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Basenames\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Conflictname\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Dirnames\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Group\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Installtid\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Name\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Obsoletename\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Packages\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Providename\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Requirename\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Sha1header\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Sigmd5\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/var/lib/rpm/Triggername\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"1d3d2d8869c51d89\",\n   \"name\": \"rpm-build-libs\",\n   \"version\": \"4.14.2-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+ with exceptions\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:rpm-build-libs:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-build-libs:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_build_libs:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_build_libs:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-build:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-build:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_build:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_build:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm-build-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm_build_libs:4.14.2-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/rpm-build-libs@4.14.2-37.el8?arch=x86_64&upstream=rpm-4.14.2-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"rpm-build-libs\",\n    \"version\": \"4.14.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"rpm-4.14.2-37.el8.src.rpm\",\n    \"size\": 215992,\n    \"license\": \"GPLv2+ and LGPLv2+ with exceptions\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54/b565122859e476d79290af14e77c96c3ff1e16\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/78/8b458e950e30c546a2783a1f79976d879f2acb\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmbuild.so.8\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmbuild.so.8.1.0\",\n      \"mode\": 33261,\n      \"size\": 187808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65434add6d9541c1c95a4078e2cd487d9aef6be21db496b9bffff6b194f2b5b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmsign.so.8\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmsign.so.8.1.0\",\n      \"mode\": 33261,\n      \"size\": 28184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb41c1fee562ff3f8a60c13253b9b674da592ed5f676f210c68b9c76c771dc1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"517a0614330f9a54\",\n   \"name\": \"rpm-libs\",\n   \"version\": \"4.14.2-37.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and LGPLv2+ with exceptions\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:rpm-libs:rpm-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm-libs:rpm_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_libs:rpm-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm_libs:rpm_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:rpm-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:rpm_libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm-libs:4.14.2-37.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:rpm:rpm_libs:4.14.2-37.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/rpm-libs@4.14.2-37.el8?arch=x86_64&upstream=rpm-4.14.2-37.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"rpm-libs\",\n    \"version\": \"4.14.2\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"37.el8\",\n    \"sourceRpm\": \"rpm-4.14.2-37.el8.src.rpm\",\n    \"size\": 722464,\n    \"license\": \"GPLv2+ and LGPLv2+ with exceptions\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6d/18621c3090c8201731b5098fa9810d138d3a72\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8f/cddbaa9d4ddd05ea8ef6574317a4c19d7a3100\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpm.so.8\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpm.so.8.1.0\",\n      \"mode\": 33261,\n      \"size\": 515048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be9f21ac36213226ef45c5c6f4975558acef4151e1eb28919ee10212cd2fe9b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmio.so.8\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/librpmio.so.8.1.0\",\n      \"mode\": 33261,\n      \"size\": 207416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e761b77a5984cc284497e4de4bc5853ca10f475e51cc9955c67a360d83979080\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/rpm-plugins\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"110d0d80da839ec5\",\n   \"name\": \"sed\",\n   \"version\": \"4.5-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:sed:4.5-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sed:sed:4.5-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/sed@4.5-1.el8?arch=x86_64&upstream=sed-4.5-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"sed\",\n    \"version\": \"4.5\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"sed-4.5-1.el8.src.rpm\",\n    \"size\": 776854,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/sed\",\n      \"mode\": 33261,\n      \"size\": 129928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3d1b35b5f6e79df105e3c1d99fa12bd7ad44dabfbf0fadec5eb54cbbe414592\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b4/6ebb3ddb6628e5d3659d0fa68b8e8e187e5b29\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/sed\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/sed/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35151,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d749bcbda7ecc0a9\",\n   \"name\": \"setup\",\n   \"version\": \"2.12.2-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:setup:2.12.2-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:setup:setup:2.12.2-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/setup@2.12.2-5.el8?arch=noarch&upstream=setup-2.12.2-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"setup\",\n    \"version\": \"2.12.2\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"setup-2.12.2-5.el8.src.rpm\",\n    \"size\": 724831,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/aliases\",\n      \"mode\": 33188,\n      \"size\": 1529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4c569569f893bc22fbe696c459f8fba0fe4565022637300b705b54a95c47bce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/bashrc\",\n      \"mode\": 33188,\n      \"size\": 3019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d925e7ec2fdd6861be5f3a6d5a08a1ff13a10d23ebbb8d26717b1b75ca4f118f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/csh.cshrc\",\n      \"mode\": 33188,\n      \"size\": 1629,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51e9d0f4d05d1ba38da624f4c063808361faf53f3d140f5a331ebf8db029384e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/csh.login\",\n      \"mode\": 33188,\n      \"size\": 1078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"792cec9fd4aaa93a5a759ad2dbfc2289c561cb39df57b50fbebb4a40b82c23fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/environment\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/ethertypes\",\n      \"mode\": 33188,\n      \"size\": 1362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed38f9d644befc87eb41a8649c310073240d9a8cd75b2f9c115b5d9d7e5d033c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/exports\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/filesystems\",\n      \"mode\": 33188,\n      \"size\": 66,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba1ed4fe76cd63c37dbd44a040921db7810c4b63f46ee6635779627a4a36a196\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/group\",\n      \"mode\": 33188,\n      \"size\": 264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5be46faf83078411c18ce0f3cb5e5fc5b56b8cb214a7f5a65dbbef6cb8249e16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/gshadow\",\n      \"mode\": 32768,\n      \"size\": 198,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50b56bf2e0d5dd28900aa04478a9d4cc2ca1ea3452a76a71c71b5ade7f2221cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmn\"\n     },\n     {\n      \"path\": \"/etc/host.conf\",\n      \"mode\": 33188,\n      \"size\": 9,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"380f5fe21d755923b44203b58ca3c8b9681c485d152bd5d7e3914f67d821d32a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/hosts\",\n      \"mode\": 33188,\n      \"size\": 158,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"498f494232085ec83303a2bc6f04bea840c2b210fbbeda31a46a6e5674d4fc0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/inputrc\",\n      \"mode\": 33188,\n      \"size\": 942,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3df12b75483c9019090f18bdf46c47399959eddc2b721cf9b563f4010a89a830\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/motd\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/networks\",\n      \"mode\": 33188,\n      \"size\": 58,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae89ab2e35076a070ae7cf5b0edf600c3ea6999e15db9b543ef35dfc76d37cb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/passwd\",\n      \"mode\": 33188,\n      \"size\": 533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d137fa8bf6ca9020c35a5bf992f32d4c803497e856e0254618f5abcb2f2425c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/printcap\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f809352567a37d932b014311cf626774b97b63ec06d4f7bdd8a9cfcc34c691d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/profile\",\n      \"mode\": 33188,\n      \"size\": 2123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b68fe1cd69c9cd923e5dece44bbb6239f3c6e8f747770f6779093b807ba21e99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/profile.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/csh.local\",\n      \"mode\": 33188,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07a2a80f1386c89941b3da4cda68790afe19f7425a14e01acdc2fbddb73b5508\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/profile.d/lang.csh\",\n      \"mode\": 33188,\n      \"size\": 2486,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca36c6c6c22c6f2df04529ef468d808c61eba3324189dbb3d56351b288920ac2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/lang.sh\",\n      \"mode\": 33188,\n      \"size\": 2312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1315a04361297386158bb7cde1910d4f74d7f57784b4bb87187704a94100edd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/sh.local\",\n      \"mode\": 33188,\n      \"size\": 81,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c5de252d65ae8c40e54c21be09dc574ca3641d036d7b44174939a7e64863920\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/protocols\",\n      \"mode\": 33188,\n      \"size\": 6568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0e614d3ac7c6d9f6fe7b6c8ac678f26cca185de66f5dd34b56e634b2398a8cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/services\",\n      \"mode\": 33188,\n      \"size\": 692252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac7ed9a0608f2ee925d17dfa8154102f56d863e0ab53f39053ff27120ce571ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/shadow\",\n      \"mode\": 32768,\n      \"size\": 346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e9245a475b954564b983ab97760a4dca7a284630c794cb4d8d83247f66ac6db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmn\"\n     },\n     {\n      \"path\": \"/etc/shells\",\n      \"mode\": 33188,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ec4e8c524a4f10ca5898ccfaa6d29e7e08aff3a681f6bafbb62e7bec91aa154\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/subgid\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/subuid\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/setup\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/setup/COPYING\",\n      \"mode\": 33188,\n      \"size\": 118,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"628095e1ef656bbe9034cf5bfa3c220880a16cd0ceea25b17cd2198ea3503e03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/log/lastlog\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"17d7439b8a1536ee\",\n   \"name\": \"setuptools\",\n   \"version\": \"39.2.0\",\n   \"type\": \"python\",\n   \"foundBy\": \"python-installed-package-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/METADATA\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    },\n    {\n     \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/RECORD\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    },\n    {\n     \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/top_level.txt\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"UNKNOWN\"\n   ],\n   \"language\": \"python\",\n   \"cpes\": [\n    \"cpe:2.3:a:python_packaging_authority_project:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authority_project:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authorityproject:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authorityproject:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authority_project:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authority:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authority:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authorityproject:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig_project:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig_project:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sigproject:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sigproject:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_packaging_authority:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-setuptools:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-setuptools:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_setuptools:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_setuptools:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig_project:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils-sig:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils-sig:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sigproject:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python-setuptools:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python_setuptools:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:setuptools:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:setuptools:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils-sig:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:distutils_sig:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python-setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:python_setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:setuptools:setuptools:39.2.0:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:python:setuptools:39.2.0:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:pypi/setuptools@39.2.0\",\n   \"metadataType\": \"PythonPackageMetadata\",\n   \"metadata\": {\n    \"name\": \"setuptools\",\n    \"version\": \"39.2.0\",\n    \"license\": \"UNKNOWN\",\n    \"author\": \"Python Packaging Authority\",\n    \"authorEmail\": \"distutils-sig@python.org\",\n    \"platform\": \"UNKNOWN\",\n    \"files\": [\n     {\n      \"path\": \"easy_install.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM\"\n      },\n      \"size\": \"126\"\n     },\n     {\n      \"path\": \"pkg_resources/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"D6DGFHIzVnG-ByUliqZuw3dkB3ccE6z5jdhDJFap12Y\"\n      },\n      \"size\": \"103822\"\n     },\n     {\n      \"path\": \"pkg_resources/py31compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"-ysVqoxLetAnL94uM0kHkomKQTC1JZLN2ZUjqUhMeKE\"\n      },\n      \"size\": \"600\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU\"\n      },\n      \"size\": \"0\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/appdirs.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"tgGaL0m4Jo2VeuGfoOOifLv7a7oUEJu2n1vRkqoPw-0\"\n      },\n      \"size\": \"22374\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/pyparsing.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"PifeLY3-WhIcBVzLtv0U4T_pwDtPruBhBCkg5vLqa28\"\n      },\n      \"size\": \"229867\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/six.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas\"\n      },\n      \"size\": \"30098\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__about__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM\"\n      },\n      \"size\": \"720\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo\"\n      },\n      \"size\": \"513\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/_compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA\"\n      },\n      \"size\": \"860\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/_structures.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o\"\n      },\n      \"size\": \"1416\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/markers.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"uEcBBtGvzqltgnArqb9c4RrcInXezDLos14zbBHhWJo\"\n      },\n      \"size\": \"8248\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/requirements.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"SikL2UynbsT0qtY9ltqngndha_sfo0w6XGFhAhoSoaQ\"\n      },\n      \"size\": \"4355\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/specifiers.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0\"\n      },\n      \"size\": \"28025\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/utils.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA\"\n      },\n      \"size\": \"421\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/version.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0\"\n      },\n      \"size\": \"11556\"\n     },\n     {\n      \"path\": \"pkg_resources/extern/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"JUtlHHvlxHSNuB4pWqNjcx7n6kG-fwXg7qmJ2zNJlIY\"\n      },\n      \"size\": \"2487\"\n     },\n     {\n      \"path\": \"setuptools/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"WWIdCbFJnZ9fZoaWDN_x1vDA_Rkm-Sc15iKvPtIYKFs\"\n      },\n      \"size\": \"5700\"\n     },\n     {\n      \"path\": \"setuptools/archive_util.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"kw8Ib_lKjCcnPKNbS7h8HztRVK0d5RacU3r_KRdVnmM\"\n      },\n      \"size\": \"6592\"\n     },\n     {\n      \"path\": \"setuptools/build_meta.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"FllaKTr1vSJyiUeRjVJEZmeEaRzhYueNlimtcwaJba8\"\n      },\n      \"size\": \"5671\"\n     },\n     {\n      \"path\": \"setuptools/config.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3L9wwF1_uprsyHsUHXXsyLmJUA5HIczJYQ2BFzLWjc0\"\n      },\n      \"size\": \"18006\"\n     },\n     {\n      \"path\": \"setuptools/dep_util.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fgixvC1R7sH3r13ktyf7N0FALoqEXL1cBarmNpSEoWg\"\n      },\n      \"size\": \"935\"\n     },\n     {\n      \"path\": \"setuptools/depends.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"hC8QIDcM3VDpRXvRVA6OfL9AaQfxvhxHcN_w6sAyNq8\"\n      },\n      \"size\": \"5837\"\n     },\n     {\n      \"path\": \"setuptools/dist.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1j3kuNEGaaAzWz0iLWItxziNyJTZC8MgcTfMZ4U4Wes\"\n      },\n      \"size\": \"42613\"\n     },\n     {\n      \"path\": \"setuptools/extension.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"uc6nHI-MxwmNCNPbUiBnybSyqhpJqjbhvOQ-emdvt_E\"\n      },\n      \"size\": \"1729\"\n     },\n     {\n      \"path\": \"setuptools/glibc.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"X64VvGPL2AbURKwYRsWJOXXGAYOiF_v2qixeTkAULuU\"\n      },\n      \"size\": \"3146\"\n     },\n     {\n      \"path\": \"setuptools/glob.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Y-fpv8wdHZzv9DPCaGACpMSBWJ6amq_1e0R_i8_el4w\"\n      },\n      \"size\": \"5207\"\n     },\n     {\n      \"path\": \"setuptools/launch.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"sd7ejwhBocCDx_wG9rIs0OaZ8HtmmFU8ZC6IR_S0Lvg\"\n      },\n      \"size\": \"787\"\n     },\n     {\n      \"path\": \"setuptools/lib2to3_ex.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"t5e12hbR2pi9V4ezWDTB4JM-AISUnGOkmcnYHek3xjg\"\n      },\n      \"size\": \"2013\"\n     },\n     {\n      \"path\": \"setuptools/monkey.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"H_yJ91EtDWu20v5JsEmFeDckiYVMhpE3nMcEdxxd-Ig\"\n      },\n      \"size\": \"5261\"\n     },\n     {\n      \"path\": \"setuptools/msvc.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8EiV9ypb3EQJQssPcH1HZbdNsbRvqsFnJ7wPFEGwFIo\"\n      },\n      \"size\": \"40877\"\n     },\n     {\n      \"path\": \"setuptools/namespaces.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"F0Nrbv8KCT2OrO7rwa03om4N4GZKAlnce-rr-cgDQa8\"\n      },\n      \"size\": \"3199\"\n     },\n     {\n      \"path\": \"setuptools/package_index.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"whsYoQBtGtQMm5bfAiYebGYLMl-HaEChPorAUEd6zdQ\"\n      },\n      \"size\": \"40136\"\n     },\n     {\n      \"path\": \"setuptools/pep425tags.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"I7lxWpy9XKELBJ0CVYiT7OPW0hkBFe0kNpbEBwXV_XQ\"\n      },\n      \"size\": \"10873\"\n     },\n     {\n      \"path\": \"setuptools/py27compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3mwxRMDk5Q5O1rSXOERbQDXhFqwDJhhUitfMW_qpUCo\"\n      },\n      \"size\": \"536\"\n     },\n     {\n      \"path\": \"setuptools/py31compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"XuU1HCsGE_3zGvBRIhYw2iB-IhCFK4-Pxw_jMiqdNVk\"\n      },\n      \"size\": \"1192\"\n     },\n     {\n      \"path\": \"setuptools/py33compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"NKS84nl4LjLIoad6OQfgmygZn4mMvrok_b1N1tzebew\"\n      },\n      \"size\": \"1182\"\n     },\n     {\n      \"path\": \"setuptools/py36compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"VUDWxmu5rt4QHlGTRtAFu6W5jvfL6WBjeDAzeoBy0OM\"\n      },\n      \"size\": \"2891\"\n     },\n     {\n      \"path\": \"setuptools/sandbox.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9UbwfEL5QY436oMI1LtFWohhoZ-UzwHvGyZjUH_qhkw\"\n      },\n      \"size\": \"14276\"\n     },\n     {\n      \"path\": \"setuptools/script (dev).tmpl\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7MR17dTkzaqkCMSVseyOCMVrPVSMdmTQsaB8cZzfuI\"\n      },\n      \"size\": \"201\"\n     },\n     {\n      \"path\": \"setuptools/script.tmpl\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY\"\n      },\n      \"size\": \"138\"\n     },\n     {\n      \"path\": \"setuptools/site-patch.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"BVt6yIrDMXJoflA5J6DJIcsJUfW_XEeVhOzelTTFDP4\"\n      },\n      \"size\": \"2307\"\n     },\n     {\n      \"path\": \"setuptools/ssl_support.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"YBDJsCZjSp62CWjxmSkke9kn9rhHHj25Cus6zhJRW3c\"\n      },\n      \"size\": \"8492\"\n     },\n     {\n      \"path\": \"setuptools/unicode_utils.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"NOiZ_5hD72A6w-4wVj8awHFM3n51Kmw1Ic_vx15XFqw\"\n      },\n      \"size\": \"996\"\n     },\n     {\n      \"path\": \"setuptools/version.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"og_cuZQb0QI6ukKZFfZWPlr1HgJBPPn2vO2m_bI9ZTE\"\n      },\n      \"size\": \"144\"\n     },\n     {\n      \"path\": \"setuptools/wheel.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2V7-XGD0jRFvEOo3btpl1I7kUwaZIUFmqnAVYeoMwPs\"\n      },\n      \"size\": \"7778\"\n     },\n     {\n      \"path\": \"setuptools/windows_support.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE\"\n      },\n      \"size\": \"714\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU\"\n      },\n      \"size\": \"0\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/pyparsing.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"PifeLY3-WhIcBVzLtv0U4T_pwDtPruBhBCkg5vLqa28\"\n      },\n      \"size\": \"229867\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/six.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas\"\n      },\n      \"size\": \"30098\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__about__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM\"\n      },\n      \"size\": \"720\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo\"\n      },\n      \"size\": \"513\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/_compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA\"\n      },\n      \"size\": \"860\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/_structures.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o\"\n      },\n      \"size\": \"1416\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/markers.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Gvpk9EY20yKaMTiKgQZ8yFEEpodqVgVYtfekoic1Yts\"\n      },\n      \"size\": \"8239\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/requirements.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"t44M2HVWtr8phIz2OhnILzuGT3rTATaovctV1dpnVIg\"\n      },\n      \"size\": \"4343\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/specifiers.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0\"\n      },\n      \"size\": \"28025\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/utils.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA\"\n      },\n      \"size\": \"421\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/version.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0\"\n      },\n      \"size\": \"11556\"\n     },\n     {\n      \"path\": \"setuptools/command/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"NWzJ0A1BEengZpVeqUyWLNm2bk4P3F4iL5QUErHy7kA\"\n      },\n      \"size\": \"594\"\n     },\n     {\n      \"path\": \"setuptools/command/alias.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"KjpE0sz_SDIHv3fpZcIQK-sCkJz-SrC6Gmug6b9Nkc8\"\n      },\n      \"size\": \"2426\"\n     },\n     {\n      \"path\": \"setuptools/command/bdist_egg.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"RQ9h8BmSVpXKJQST3i_b_sm093Z-aCXbfMBEM2IrI-Q\"\n      },\n      \"size\": \"18185\"\n     },\n     {\n      \"path\": \"setuptools/command/bdist_rpm.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"B7l0TnzCGb-0nLlm6rS00jWLkojASwVmdhW2w5Qz_Ak\"\n      },\n      \"size\": \"1508\"\n     },\n     {\n      \"path\": \"setuptools/command/bdist_wininst.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-jW2-pm0\"\n      },\n      \"size\": \"637\"\n     },\n     {\n      \"path\": \"setuptools/command/build_clib.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bQ9aBr-5ZSO-9fGsGsDLz0mnnFteHUZnftVLkhvHDq0\"\n      },\n      \"size\": \"4484\"\n     },\n     {\n      \"path\": \"setuptools/command/build_ext.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"PCRAZ2xYnqyEof7EFNtpKYl0sZzT0qdKUNTH3sUdPqk\"\n      },\n      \"size\": \"13173\"\n     },\n     {\n      \"path\": \"setuptools/command/build_py.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"yWyYaaS9F3o9JbIczn064A5g1C5_UiKRDxGaTqYbtLE\"\n      },\n      \"size\": \"9596\"\n     },\n     {\n      \"path\": \"setuptools/command/develop.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"wKbOw2_qUvcDti2lZmtxbDmYb54yAAibExzXIvToz-A\"\n      },\n      \"size\": \"8046\"\n     },\n     {\n      \"path\": \"setuptools/command/dist_info.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5t6kOfrdgALT-P3ogss6PF9k-Leyesueycuk3dUyZnI\"\n      },\n      \"size\": \"960\"\n     },\n     {\n      \"path\": \"setuptools/command/easy_install.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"E-1Scx4SfCLLZM2e6k8A2T-bo5cDMXqLnig12kxgUy8\"\n      },\n      \"size\": \"87026\"\n     },\n     {\n      \"path\": \"setuptools/command/egg_info.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b5Y3t_bl_zZRCkmlGi3igvRze9oOaxd-dVf2w1FBOc\"\n      },\n      \"size\": \"24800\"\n     },\n     {\n      \"path\": \"setuptools/command/install.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0EZpL_A866KEdhicTGbuyD_TYl1sykfzdrri-zazT4\"\n      },\n      \"size\": \"4683\"\n     },\n     {\n      \"path\": \"setuptools/command/install_egg_info.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bMgeIeRiXzQ4DAGPV1328kcjwQjHjOWU4FngAWLV78Q\"\n      },\n      \"size\": \"2203\"\n     },\n     {\n      \"path\": \"setuptools/command/install_lib.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11mxf0Ch12NsuYwS8PHwXBRvyh671QAM4cTRh7epzG0\"\n      },\n      \"size\": \"3840\"\n     },\n     {\n      \"path\": \"setuptools/command/install_scripts.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"UD0rEZ6861mTYhIdzcsqKnUl8PozocXWl9VBQ1VTWnc\"\n      },\n      \"size\": \"2439\"\n     },\n     {\n      \"path\": \"setuptools/command/launcher manifest.xml\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"xlLbjWrB01tKC0-hlVkOKkiSPbzMml2eOPtJ_ucCnbE\"\n      },\n      \"size\": \"628\"\n     },\n     {\n      \"path\": \"setuptools/command/py36compat.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"SzjZcOxF7zdFUT47Zv2n7AM3H8koDys_0OpS-n9gIfc\"\n      },\n      \"size\": \"4986\"\n     },\n     {\n      \"path\": \"setuptools/command/register.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bHlMm1qmBbSdahTOT8w6UhA-EgeQIz7p6cD-qOauaiI\"\n      },\n      \"size\": \"270\"\n     },\n     {\n      \"path\": \"setuptools/command/rotate.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"co5C1EkI7P0GGT6Tqz-T2SIj2LBJTZXYELpmao6d4KQ\"\n      },\n      \"size\": \"2164\"\n     },\n     {\n      \"path\": \"setuptools/command/saveopts.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4\"\n      },\n      \"size\": \"658\"\n     },\n     {\n      \"path\": \"setuptools/command/sdist.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"obDTe2BmWt2PlnFPZZh7e0LWvemEsbCCO9MzhrTZjm8\"\n      },\n      \"size\": \"6711\"\n     },\n     {\n      \"path\": \"setuptools/command/setopt.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"NTWDyx-gjDF-txf4dO577s7LOzHVoKR0Mq33rFxaRr8\"\n      },\n      \"size\": \"5085\"\n     },\n     {\n      \"path\": \"setuptools/command/test.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"MeBAcXUePGjPKqjz4zvTrHatLvNsjlPFcagt3XnFYdk\"\n      },\n      \"size\": \"9214\"\n     },\n     {\n      \"path\": \"setuptools/command/upload.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"i1gfItZ3nQOn5FKXb8tLC2Kd7eKC8lWO4bdE6NqGpE4\"\n      },\n      \"size\": \"1172\"\n     },\n     {\n      \"path\": \"setuptools/command/upload_docs.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"oXiGplM_cUKLwE4CWWw98RzCufAu8tBhMC97GegFcms\"\n      },\n      \"size\": \"7311\"\n     },\n     {\n      \"path\": \"setuptools/extern/__init__.py\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2eKMsBMwsZqolIcYBtLZU3t96s6xSTP4PTaNfM5P-I0\"\n      },\n      \"size\": \"2499\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/DESCRIPTION.rst\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"mOsk4uH4ma3S7RjGk8m4kEMQssSAZxI8Dj1Z8EZHkxA\"\n      },\n      \"size\": \"1547\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/LICENSE.txt\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"wyo6w5WvYyHv0ovnPQagDw22q4h9HCHU_sRhKNIFbVo\"\n      },\n      \"size\": \"1078\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/METADATA\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"gHeHu4S3oYwMrgCuSC88ChBAIaZOkzUWzKpg9Xomdro\"\n      },\n      \"size\": \"3028\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/RECORD\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/WHEEL\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8\"\n      },\n      \"size\": \"110\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/dependency_links.txt\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"HlkCFkoK5TbZ5EMLbLKYhLcY_E31kBWD8TqW2EgmatQ\"\n      },\n      \"size\": \"239\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/entry_points.txt\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"jBqCYDlVjl__sjYFGXo1JQGIMAYFJE-prYWUtnMZEew\"\n      },\n      \"size\": \"2990\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/metadata.json\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20034ySWEQzNtb_Cyg6EYzoZfpYjyHsKleWelH--ROo\"\n      },\n      \"size\": \"4969\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/top_level.txt\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2HUXVVwA4Pff1xgTFr3GsTXXKaPaO6vlG6oNJ_4u4Tg\"\n      },\n      \"size\": \"38\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/zip-safe\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs\"\n      },\n      \"size\": \"1\"\n     },\n     {\n      \"path\": \"../../../bin/easy_install\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Gezk0fVCHeU4cjSAPY5QeEYRqYmWoPAKE8Edpwhp15U\"\n      },\n      \"size\": \"246\"\n     },\n     {\n      \"path\": \"../../../bin/easy_install-3.6\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"Gezk0fVCHeU4cjSAPY5QeEYRqYmWoPAKE8Edpwhp15U\"\n      },\n      \"size\": \"246\"\n     },\n     {\n      \"path\": \"setuptools-39.2.0.dist-info/INSTALLER\",\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg\"\n      },\n      \"size\": \"4\"\n     },\n     {\n      \"path\": \"__pycache__/easy_install.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/extern/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/namespaces.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/sandbox.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/config.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/py33compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/glob.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/extension.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/launch.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/msvc.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/dep_util.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/dist.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/lib2to3_ex.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/wheel.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/package_index.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/windows_support.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/py27compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/build_meta.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/glibc.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/monkey.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/site-patch.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/unicode_utils.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/archive_util.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/py31compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/version.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/pep425tags.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/depends.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/py36compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/__pycache__/ssl_support.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/sdist.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/install.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/install_lib.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/build_py.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/egg_info.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/dist_info.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/upload.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/rotate.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/easy_install.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/install_egg_info.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/setopt.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/saveopts.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/build_clib.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/register.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/develop.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/alias.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/bdist_egg.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/install_scripts.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/upload_docs.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/py36compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/build_ext.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/command/__pycache__/test.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/__pycache__/six.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/extern/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/__pycache__/py31compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/__pycache__/six.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc\"\n     },\n     {\n      \"path\": \"pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\"\n     }\n    ],\n    \"sitePackagesRootPath\": \"/usr/lib/python3.6/site-packages\",\n    \"topLevelPackages\": [\n     \"easy_install\",\n     \"pkg_resources\",\n     \"setuptools\"\n    ]\n   }\n  },\n  {\n   \"id\": \"4d18ea9c6238a27d\",\n   \"name\": \"shadow-utils\",\n   \"version\": \"2:4.6-8.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:shadow-utils:shadow-utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:shadow-utils:shadow_utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:shadow_utils:shadow-utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:shadow_utils:shadow_utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:shadow-utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:shadow_utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:shadow:shadow-utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:shadow:shadow_utils:2\\\\:4.6-8.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/shadow-utils@4.6-8.el8?arch=x86_64&epoch=2&upstream=shadow-utils-4.6-8.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"shadow-utils\",\n    \"version\": \"4.6\",\n    \"epoch\": 2,\n    \"architecture\": \"x86_64\",\n    \"release\": \"8.el8\",\n    \"sourceRpm\": \"shadow-utils-4.6-8.el8.src.rpm\",\n    \"size\": 5368080,\n    \"license\": \"BSD and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/default/useradd\",\n      \"mode\": 33188,\n      \"size\": 119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b121fd1b90c1a2fb6081a137dd7b441c7e7fec61bc17ca60db401a952d7b8825\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/login.defs\",\n      \"mode\": 33188,\n      \"size\": 2027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a0bdce3ba6298a5a7979d80b4a31ea1c68c22cc6736df3b6e1467997f5377c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/chage\",\n      \"mode\": 35309,\n      \"size\": 133928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f910971c8fae948794bc7eaff5d16eb8845b38e828d8b06ebfbdcc1e06401292\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/gpasswd\",\n      \"mode\": 35309,\n      \"size\": 156736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"020afb8e19ae84988f4fe1524fc567d9ee60f32013e489e61dfd21404146a90e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lastlog\",\n      \"mode\": 33261,\n      \"size\": 33408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d983071a5058305fe852fcd28b2282acaaf96f9122c6d76db41ab304efca78a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/newgidmap\",\n      \"mode\": 33261,\n      \"size\": 79960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aff8e58247d7b96e628ec299b93c7dbcc361a9264c8106e164f1bcb58c52e207\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/newgrp\",\n      \"mode\": 35309,\n      \"size\": 88488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f388887471cd67ac3455b9b60a3e2571a2fec03d18ea011f28a986e8796152\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/newuidmap\",\n      \"mode\": 33261,\n      \"size\": 75696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d69ac486d94178851fd6a62ce65cafeb0a35ffc9dda0eeb56e82691e9870a81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/sg\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/05/df9e2f797d790fe522e8b4014ea1dcdd08829e\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/07/a2352b2e8616d4d0e3477dbf376d86f9b83c31\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08/2b8848923bb6f1e792cf4db1c2b74f9a5665fe\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a/d1adf0c35f6c0f3117b385de61da74b486dd38\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c/7ca5da1a1b2046ca9d7be1db2c2c93741666ef\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e/1b1a721013302dc9725d41c4388ba0d91536f6\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/f1858e2e5d5cd76e107271ec0bb4c45c9a0a9e\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/18/179f323315880dbbc8da91901eff591c7536bc\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1f/6948ea93f14c706ad74f0abb8011593e890f76\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2d/ed7720dc25121650e5c0a66bc51267aa56052d\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/34\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/34/c18eb00976e9b4525ce5a74f0fab4000c625ef\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a/a00a2588f5f6915145de3119bfcb011207b3fe\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4f/72b2f4cf7ec41b475220313c082be662ef64d2\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/9e2c738a72a6faa844a34476231dff078caddf\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/68/787948c75c4e403d1f24501c1923d446d27623\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/34026430eaf639041e9bbc7370011370c9b47c\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/e9c6faad698e3593ae5edcb0c3436f148a9a22\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a6/ce4cecc66c8921c0cefaa4bea2fc83c2a76c5c\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/63426cfb81304f0f4b834d3c582e665d79149b\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/bc/1fdf9a489c820e5570276a7f0bb1b45703782d\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d1/1522289a502dd16519e685e6af84ba0062ca4a\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ee/9ffe079d7e5feebc7c98507f978e8ff977154f\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc/bae0d978e39671be398396a193fdb107b515bd\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/sbin/adduser\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/chgpasswd\",\n      \"mode\": 33261,\n      \"size\": 134432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7d3edfb7f1531a26a5bc4acffb6bef487685ca6d403793f89e717fd21ea3df4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/chpasswd\",\n      \"mode\": 33261,\n      \"size\": 115048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c17bcdc842ebfc0f895f2fbb95e6265bb769ba49cb744b66d8999f47e0ea6210\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/groupadd\",\n      \"mode\": 33261,\n      \"size\": 174200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5791b3002b9f5d9307f55a4e7e14ec93ea86aa6defad10bc3940f24aa78ebef7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/groupdel\",\n      \"mode\": 33261,\n      \"size\": 165832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4375ca649752cb11b19fb3853f377a13383d28e394a947b4f7b50aa89ccc504a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/groupmems\",\n      \"mode\": 33261,\n      \"size\": 111960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa41fd92b8c9cf9f65b9df5a0bf9661efc147a278584ae0c446c7a6e496829ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/groupmod\",\n      \"mode\": 33261,\n      \"size\": 180752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8f727684d4b517d57c647cb8babd7537ccc4190a84cc2bba24c501e46eafc69f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/grpck\",\n      \"mode\": 33261,\n      \"size\": 111792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"049aac06716f2f22b3800b43491e8aa5ee5296774e70c70db5dcbc3ea7fa6ea6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/grpconv\",\n      \"mode\": 33261,\n      \"size\": 103416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd44a58cf0e4a4fc3ff1c656d6af79cc4498d4f2db5bd3d1fb9c1c52f9dbcda9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/grpunconv\",\n      \"mode\": 33261,\n      \"size\": 103424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d8661d736f74b50d60163060b92ed02b79600ceb8ae3121c18f339e8a500bdfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/newusers\",\n      \"mode\": 33261,\n      \"size\": 191144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05d86fb0ffbf9e97974d1c69c6649a676aa243162d1ee8490e98fc7fcbf7a55f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pwck\",\n      \"mode\": 33261,\n      \"size\": 106504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"602bcbd89ea28e3653eb541cbbbf2770e0d62052a88aba7282b99241a0ce4885\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pwconv\",\n      \"mode\": 33261,\n      \"size\": 98336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5dc3e4135230709aac2aa47c235c4c552c50023a850531c63e8299d7d3811453\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pwunconv\",\n      \"mode\": 33261,\n      \"size\": 94264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a5c553c2ad946bbaea621b68acbeea89300417909a938e0608d70bd00ec7538\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/useradd\",\n      \"mode\": 33261,\n      \"size\": 241752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85c3ca8a5e86ffec554aacdadc42066d030301f0d169412518835982f5e09e4b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/userdel\",\n      \"mode\": 33261,\n      \"size\": 185776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fcab195a99871738274d6a0cacc6456feeed052447698506556a7ebf1157d30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/usermod\",\n      \"mode\": 33261,\n      \"size\": 235808,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c68f771d34977daac8a10dcbefe55a9956688b9435b29626286783600c00f40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/vigr\",\n      \"mode\": 41471,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/vipw\",\n      \"mode\": 33261,\n      \"size\": 128888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6dda01f83150b9a0f0b1f5a2ac40461825f08ec301f60c4275fae91c9a4729a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/shadow-utils\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/shadow-utils/gpl-2.0.txt\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/shadow-utils/shadow-bsd.txt\",\n      \"mode\": 33188,\n      \"size\": 1724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f062266d929e3157924e7a48dd77d8852b246d911ae382b1c06a0b35a724ac3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7997e72170e0ced2\",\n   \"name\": \"snappy\",\n   \"version\": \"1.1.7-5.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"BSD\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:snappy:1.1.7-5.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:snappy:snappy:1.1.7-5.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/snappy@1.1.7-5.el8?arch=x86_64&upstream=snappy-1.1.7-5.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"snappy\",\n    \"version\": \"1.1.7\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"5.el8\",\n    \"sourceRpm\": \"snappy-1.1.7-5.el8.src.rpm\",\n    \"size\": 58789,\n    \"license\": \"BSD\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/62/5eba5035dfe3e50d03d13ddbe47e6a918bde47\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsnappy.so.1\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsnappy.so.1.1.7\",\n      \"mode\": 33261,\n      \"size\": 44528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86be786aff5aee043a26e3bc78474f5c1a3ab3a668cffc5edc6f2e93071ba607\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"4622e945c8cd6ec7\",\n   \"name\": \"sqlite-libs\",\n   \"version\": \"3.26.0-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:sqlite-libs:sqlite-libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sqlite-libs:sqlite_libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sqlite_libs:sqlite-libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sqlite_libs:sqlite_libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:sqlite-libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:sqlite_libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sqlite:sqlite-libs:3.26.0-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:sqlite:sqlite_libs:3.26.0-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/sqlite-libs@3.26.0-6.el8?arch=x86_64&upstream=sqlite-3.26.0-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"sqlite-libs\",\n    \"version\": \"3.26.0\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"sqlite-3.26.0-6.el8.src.rpm\",\n    \"size\": 1162241,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/98702528b8059450446d390a230c336e640163\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsqlite3.so.0\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsqlite3.so.0.8.6\",\n      \"mode\": 33261,\n      \"size\": 1147456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0c33576e1bc6fc9fda9e0d7de353c1ded79ea2e8bce5401a6d82758fbcfe144\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"fb32fd538ed63493\",\n   \"name\": \"squashfs-tools\",\n   \"version\": \"4.3-19.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:squashfs-tools:squashfs-tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:squashfs-tools:squashfs_tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:squashfs_tools:squashfs-tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:squashfs_tools:squashfs_tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:squashfs:squashfs-tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:squashfs:squashfs_tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:squashfs-tools:4.3-19.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:squashfs_tools:4.3-19.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/squashfs-tools@4.3-19.el8?arch=x86_64&upstream=squashfs-tools-4.3-19.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"squashfs-tools\",\n    \"version\": \"4.3\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"19.el8\",\n    \"sourceRpm\": \"squashfs-tools-4.3-19.el8.src.rpm\",\n    \"size\": 502829,\n    \"license\": \"GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/38\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/38/da38430e2efaee0dc82032496b79b86c95427e\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/e3c5e5e63b15526211db37d90b94c28473ade8\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/sbin/mksquashfs\",\n      \"mode\": 33261,\n      \"size\": 250144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25c7d7baeb7f7a7497a55694806dba8712c8adddb7fd3bf96287363d9fa171b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/unsquashfs\",\n      \"mode\": 33261,\n      \"size\": 139088,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96f0c9f0d8c9f8eb5c3d72678f5c3a89ad3273d7d73368a3db3c31bff4f3c0e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"98447e47e1b08420\",\n   \"name\": \"systemd\",\n   \"version\": \"239-30.el8_2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and MIT and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:systemd:systemd:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd:239-30.el8_2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/systemd@239-30.el8_2?arch=x86_64&upstream=systemd-239-30.el8_2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"systemd\",\n    \"version\": \"239\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"30.el8_2\",\n    \"sourceRpm\": \"systemd-239-30.el8_2.src.rpm\",\n    \"size\": 11073156,\n    \"license\": \"LGPLv2+ and MIT and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/X11/xinit/xinitrc.d/50-systemd-user.sh\",\n      \"mode\": 33261,\n      \"size\": 203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8de4483a0c44a7719a66c4c86f6d6d3011feb4729b61b82015cd74cbce313cf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/binfmt.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/crypttab\",\n      \"mode\": 33152,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/etc/dnf/protected.d/systemd.conf\",\n      \"mode\": 33188,\n      \"size\": 21,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a5aa0a6cdfb432f890351ebd1f62d05f9a04d5aa58f57d0758686afaa8d3617\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/hostname\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/etc/inittab\",\n      \"mode\": 33188,\n      \"size\": 490,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1065b3ed2e54f8ec03162a2930b5063f1b30b00c16f28f303029a51ca0bd4470\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/locale.conf\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/etc/localtime\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/etc/machine-id\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/etc/pam.d/systemd-user\",\n      \"mode\": 33188,\n      \"size\": 248,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5deae3d161c4dafbe39bdddf019f104b11a15d6576f15dd83f5554f313624fb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/rc.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/init.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/rc.d/init.d/README\",\n      \"mode\": 33188,\n      \"size\": 1161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fef38973bf1224275f42ecb6f40b2976299112105426ab39dc7579ad7816ec78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/rc.d/rc.local\",\n      \"mode\": 33188,\n      \"size\": 474,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"beda7ff45cad675e294455dbd5fb6662644d72888310556542a901e93aefed2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/rc.local\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/sysctl.conf\",\n      \"mode\": 33188,\n      \"size\": 449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51d16ee2e7eef12dd42e924af6b835861e8b79d11921ba0418d7d0aec7a2a93b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/sysctl.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/sysctl.d/99-sysctl.conf\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/systemd/coredump.conf\",\n      \"mode\": 33188,\n      \"size\": 615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4032348fa013bb5c24316549716d58619360c0bfbf257c233d767734f3bd6306\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd/journald.conf\",\n      \"mode\": 33188,\n      \"size\": 1027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5665c17814395153b05370a06c1c6cd5b24060ab58b76883535296bac922f7e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd/logind.conf\",\n      \"mode\": 33188,\n      \"size\": 1041,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42ab0ff7f9cadf64f599d12cb73a74a782e0668f604c574eaf35f62d709d5863\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd/resolved.conf\",\n      \"mode\": 33188,\n      \"size\": 631,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eac03bf7ac4bdd7b58650617c3e189a085f700c7c8d656c007e84953e682dd75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd/system\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/systemd/system.conf\",\n      \"mode\": 33188,\n      \"size\": 1713,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"690f1d62077c450adc3888e07a757ba7f5f4417bac5a1aa8482349f4c24e3ae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/systemd/system/getty.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/systemd/system/multi-user.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/systemd/system/sysinit.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/etc/systemd/user\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/systemd/user.conf\",\n      \"mode\": 33188,\n      \"size\": 1130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a698d971bc314dff4fae66325e81e1723deb45cf3cd31a4402f1729e69c4a73e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/tmpfiles.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/xdg/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/xdg/systemd/user\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/busctl\",\n      \"mode\": 33261,\n      \"size\": 79024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e8f7c188c9114c04b911e7c05cf0f714d5664e5b6ae440d665e1ccbd8e2fc33\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/coredumpctl\",\n      \"mode\": 33261,\n      \"size\": 45872,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cdbb0f472be2010843897bbe1728232925f5bc81d2b2124d4f0ff26038cc0be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/hostnamectl\",\n      \"mode\": 33261,\n      \"size\": 21184,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1d214a544ba006c3f6197651274b3ea8811ba54db9f88a1fa4527d6d7e9f525\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/journalctl\",\n      \"mode\": 33261,\n      \"size\": 78712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bd859f7c0ed85317adee2596e0e79898859392a3cfef341f11684b777e573bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/localectl\",\n      \"mode\": 33261,\n      \"size\": 29456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f28290f6e038ae8109dfe59e7684605a1edb07767cf7da3a75be7e30d80ab7f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/loginctl\",\n      \"mode\": 33261,\n      \"size\": 58592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a96c91e701d7e76bd6fea0199750726bdff742cfcede32ff8b069dfd9f4a039f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/resolvectl\",\n      \"mode\": 33261,\n      \"size\": 200344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e37fecbe8d7d9ebaa3f0168fd4017cc91d0c23c05e027f273b70f35eaa443b75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemctl\",\n      \"mode\": 33261,\n      \"size\": 215336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb9ff04d650edca8636200ddce16e41ef51d775e9a7299ad9c4d8e746f8481ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-analyze\",\n      \"mode\": 33261,\n      \"size\": 1580448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4492b8deccc0c03663e7b06c6f0296dbe467e2b881e9e17b5714dc22b397b9a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-ask-password\",\n      \"mode\": 33261,\n      \"size\": 12520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"feefab6905639817db131a63b616aef49f3a27a9c743a90b2bab30ee90dfb1a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-cat\",\n      \"mode\": 33261,\n      \"size\": 16608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3077a7337f9add538220cb9a969ca9f9559f3d758b9e0b60ad5c0fb9cc8b5ac1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-cgls\",\n      \"mode\": 33261,\n      \"size\": 16632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b594ce17eefd24c34f7d1f40044d2d751916ae2cc0667601d4f1188ca541d008\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-cgtop\",\n      \"mode\": 33261,\n      \"size\": 33536,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a7e70fab7b9194882aa1628e344c5f6c275441ef7ad5c5b0a7a0d7f939d2ef9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-delta\",\n      \"mode\": 33261,\n      \"size\": 25176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"596a43a4059c65f58cd28c8a32127356d4decb2b13d6c30f91f58356a4cfd962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-detect-virt\",\n      \"mode\": 33261,\n      \"size\": 12336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5cf49cd2286b891bb957b1306b3118d4c54b6e10188c090e2c92c8965472803\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-escape\",\n      \"mode\": 33261,\n      \"size\": 16608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bccfff00ae117c85ced7b86cfa5375285576cc2fce1c0ad77f0f435449cf287\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-firstboot\",\n      \"mode\": 33261,\n      \"size\": 37712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62f8e0f7fb194f2c7754bf75382f2f2075375fc0e288e9d86c3b0b29a7d6ea50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-inhibit\",\n      \"mode\": 33261,\n      \"size\": 16632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1ed29471deaadc400d5544596a7026c3b8631e4337161cbee586797d8a24762\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-machine-id-setup\",\n      \"mode\": 33261,\n      \"size\": 25256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32b7d3c448c389b2459905900f6f11b933a61c175f1dba8105feb212c80bfb6b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-mount\",\n      \"mode\": 33261,\n      \"size\": 54128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c734cd17fb0a2aea7710a04f6f87a3fc439df4e7fc9d3bbf8761f5aef91d6190\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-notify\",\n      \"mode\": 33261,\n      \"size\": 16616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21af39769ffbc0c80f88db49a6cc94e063cbd51b2d337f93393485f380a9d734\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-path\",\n      \"mode\": 33261,\n      \"size\": 16600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"268ed2e6f6a6795e23c57b81bf464f62aa37340592fbb633f25f4224830205aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-resolve\",\n      \"mode\": 41471,\n      \"size\": 10,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-run\",\n      \"mode\": 33261,\n      \"size\": 49984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc54cfb6cd0591ec54dd3ff9dc0e83de414964ffc97f561ace491be3f747fcef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-socket-activate\",\n      \"mode\": 33261,\n      \"size\": 25216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f86a7386e124c62a9f14245e82ae83c3600bbe6e60ff9b006290953a91bfd1c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-stdio-bridge\",\n      \"mode\": 33261,\n      \"size\": 16616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f4b49417b6e6e22a26ea0f8e5e6bc73930e8926a49287ee42620623e48542a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-sysusers\",\n      \"mode\": 33261,\n      \"size\": 54216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d00101248c38e892c2bfd1ff6ad909b3fcafdddc3816e4445f68fd43528a5341\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-tmpfiles\",\n      \"mode\": 33261,\n      \"size\": 74936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3993919a0b3045aedcc77cdb4e097dfbcc2816948c079a7fa6eafcb10c4893f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-tty-ask-password-agent\",\n      \"mode\": 33261,\n      \"size\": 33488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60aa887bdab46defa1483b7f6e85e1b1b6ab0c3293189c64c45b7fefb3b1d97d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-umount\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/timedatectl\",\n      \"mode\": 33261,\n      \"size\": 37704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"478860baa7de11a934f23623dc6a0971ca4661df8545672b4b4a1ab6a13ed3e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/03\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/03/98f82070aad9d5ffe7942f560be6fa0b91921f\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/0fb03c6c4b048cee980bfe7989e425d355c998\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0f/20352be26c0403c9a53aff1807844b8d49c7d9\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/14/6340f36549ec7b460c973254d140936d044b1f\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/15/f5635051c17cb72529fbe508128075eedf1e6a\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1d/bae594dd8a428a96e70281ba4ee8adb3aaa502\",\n      \"mode\": 41471,\n      \"size\": 72,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/22/7c328016021258aedcda47a32f682dffd370e4\",\n      \"mode\": 41471,\n      \"size\": 69,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24/9472c71d34a1500e7a4f1a24fd26f8d2dcc2ec\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/28/5807e9e01e21050a40d09449a5dcff386ee563\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/29\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/29/55e42029cc59725fa197c7539628436dd65e85\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2b/8376f53bda320d63d5c1eaeec796e1e135f4d9\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/97e6522e90838492f0aed4528e86cf872de655\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/34\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/34/a5a96f64436bae93b7915717d07e35f9453ee2\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b/e8765907711a2c0fbd2a578c99c226af1af2a7\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3e/d20249c35fff60e7cffd1fd027cea28096edd5\",\n      \"mode\": 41471,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/44\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/44/839dd85cd66947fe6d9dfa0fc2b00aa67f5514\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/49\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/49/660499b43d94cacde3ba8b47b81e2cf7f4a0b0\",\n      \"mode\": 41471,\n      \"size\": 69,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/50/7d4528eb74e14ddfb1f0d39d88649e9db7369c\",\n      \"mode\": 41471,\n      \"size\": 69,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54/0db59acff4e4129738b0ea033cc41d76ecb5a9\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/54/f972605c536fd8738834aed3b96f1558e1fb4f\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55/5eff5e6bbd19072d798e2775aaa0e2d1bd1921\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56/36cac4d9621de604eadf88c319641123344cd7\",\n      \"mode\": 41471,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5a/3936864baa3439af32f11c614b42bd6f85a998\",\n      \"mode\": 41471,\n      \"size\": 77,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d/d5b7ef8818b4ee07683ed308ab5418fe0442e1\",\n      \"mode\": 41471,\n      \"size\": 90,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5e/a225129ce1e172b82a3e68e9285fd461df379a\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60/2020e1a2bcdaed75c197dd4a8f5ec902f15f3c\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/58b557bc733d34c4512e9f5d8382e8dafa70df\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/271bff96623830e5b7202e751a81de9daa87ba\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/66\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/66/62764c72dd167dfa4dc7d0ceb2157461d8bb70\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/66/efb756798ec30ae167d50f5fc142a312baa946\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6c/dcc9ee1605c1ef97aa66195a638bf28aa65cc6\",\n      \"mode\": 41471,\n      \"size\": 68,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/096f3b6e127110a1cc23fb4800d0dd2753354b\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75/66439cd330629e0eae047c79d516d987699a73\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75/d27884d9f38f13f23aa128a2af059181177c9f\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/76/356b361a3e34df401a4900a04c4afa03b535e5\",\n      \"mode\": 41471,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/af5fc997ca5df2259e2f1978415334057303f5\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/dde8f4873ef2b0ca0e0945d8fe091b72038087\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/81\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/81/4036d6be9473c69a7430813d322ef379f1776f\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/3d698d65353d84d54bb5c1b465dc587dc20922\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/934601746dc1f85e9734f81da0c475f1fb594e\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/86/bbfceaef0f6efed70de97925a2fadd5a404329\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91/ba1f5577fa73ebe09239d3c1de1fc1e883c082\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9b/0da098b5d22e55644b68ba3851d82e9c85ac69\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9f/d54addab9c2ec588922212fbdde863f10f7caf\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5/a096bb5ad9a0203ba4ec589a8b86997f9d2296\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/23873577751644650a720e7790278283d2db94\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ae/4f149afe2a69ed710efe95ba63cddd5bbee95c\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b2/0cd68b5aeb39a709e0f377a158abadc2c35a42\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/7e04f7f1f5bbb18bc616336d4e4f66e0a1139f\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ba/d2ca930ec90b4ae87d6b96967cde0d76f027b3\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c6/8b4c3d23dda9d118affd448a8aaaef4d488ca7\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb/dc66615a4ab07a8e3ce65c42d26570c8a952d1\",\n      \"mode\": 41471,\n      \"size\": 49,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cc/a1b5bfeb612535add30c776f689a9843cebd05\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d4/66282c2b1627974941b2b47fca921948068aaa\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/174dc32c6b6789cfb5bc13f328f6dee8b262a2\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d5/984a74728733d75491160dbba82faaead42c9e\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d8/2435725bda4d635c90f7addc06d1943a1198a5\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/5e108e9ade6cc5c845bfed7a507d6a76567c6a\",\n      \"mode\": 41471,\n      \"size\": 75,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/56199cd77fdf7414a4e4a436bfc4cebcfbb324\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e0/9fb5bb746250c0b43bf715f5385f02d41850dd\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3/94ca04f18bf3f21dcb5ccf24c9c852b7998a72\",\n      \"mode\": 41471,\n      \"size\": 43,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e8/eeae3a4e46eb844c9056fcdb4f329f814de9bb\",\n      \"mode\": 41471,\n      \"size\": 35,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb/04c9b6d1ca31623536a8d867c898f27040c93b\",\n      \"mode\": 41471,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/3dc81ddbaf991b9af79c12aef603ae98abe766\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ed/d94cbbf307c49989af8d9434c94af3fa7ab670\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fc/afb1cd6cefef6cc9952ba5a74d93ca48b53e71\",\n      \"mode\": 41471,\n      \"size\": 40,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/binfmt.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/environment.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/environment.d/99-environment.conf\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/rpm/macros.d/macros.systemd\",\n      \"mode\": 33188,\n      \"size\": 3951,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcd7792ed30d2106b3b1753aaf1e412447eb9cbe84a08b30897ebfdcc9008956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysctl.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysctl.d/50-coredump.conf\",\n      \"mode\": 33188,\n      \"size\": 524,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1070d896588f42827c48f2fb0dcc82871afbc3afb4e5523bb75428f9af18c6c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysctl.d/50-default.conf\",\n      \"mode\": 33188,\n      \"size\": 1270,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b42e9bc26a796c61d76976f4dbb36a3d1e293c2812591888b7019bd94f6b6b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysctl.d/50-pid-max.conf\",\n      \"mode\": 33188,\n      \"size\": 636,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27127687d1d64f7427920347855bb515ca5cb57cc20cffa7f6e1010a502992f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.be.catalog\",\n      \"mode\": 33188,\n      \"size\": 13121,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"303bed8a521fd40abc2fa3faf06a71f9ca16f6fee65801b128ff5083da8af831\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.be@latin.catalog\",\n      \"mode\": 33188,\n      \"size\": 10130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3ecf9ea1f3034056e82d0bdea652e8f1ad0e6204344d8537817541c7965f378\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.bg.catalog\",\n      \"mode\": 33188,\n      \"size\": 14307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4668be207f7b044cf18bee6430bcbec825d065e09cb3cc7130b5c0ccd48f9f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.catalog\",\n      \"mode\": 33188,\n      \"size\": 12554,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d22471d7c0d8e13195c2aae4862fd3f459a8fa0b7ec383327729d084ee656dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.de.catalog\",\n      \"mode\": 33188,\n      \"size\": 475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b9739e79d7da863d0f82d31bf312c733f77ef14c6cc78077df78adfb1c6bdcf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.fr.catalog\",\n      \"mode\": 33188,\n      \"size\": 13370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75bd02aa248752652619c087feaf6ff22180e5e758fbe7f2461d31301b7d87c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.it.catalog\",\n      \"mode\": 33188,\n      \"size\": 11363,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d104b5c42c3542ac69ea9a08ae294630e3c13c8c9164f6565cda7a7caa4d31c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.pl.catalog\",\n      \"mode\": 33188,\n      \"size\": 13061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab6b4d0dc7eb10c01fa373fe01874910a4c8c5a8abe8164ab4c645fc8f656894\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.pt_BR.catalog\",\n      \"mode\": 33188,\n      \"size\": 8388,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec509500db8da0afb3ca52584d8de5ab94717ec967cfb646a1b94da76583f17a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.ru.catalog\",\n      \"mode\": 33188,\n      \"size\": 20483,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a30889a101b69e7f038a7f0c48edccf076bda60947297e3313968f53e92fde34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.zh_CN.catalog\",\n      \"mode\": 33188,\n      \"size\": 7372,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b19ddfa8c118faf433cbc8dd387862ff3311f632e1e12d1e9a2966cc0208be41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/catalog/systemd.zh_TW.catalog\",\n      \"mode\": 33188,\n      \"size\": 7331,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22ca83df7f68d3e7267a63e03afb7ff2d786f3f2a2f8b929d675dad352347069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/libsystemd-shared-239.so\",\n      \"mode\": 33261,\n      \"size\": 2707624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"310bbcd229a9ffe5f15ea1f4f91f261c417ada6c07d94435a30db59ceecc45ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/network\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/default\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/default/service.conf\",\n      \"mode\": 33188,\n      \"size\": 1101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d640d3b6c35e8cd64aabce9150b544e1b4888db0e2f6e5e70b033dfaf7b1e72a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/nonetwork\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/nonetwork/service.conf\",\n      \"mode\": 33188,\n      \"size\": 1038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29a5e013cbed86d700460ccad5a171a70f22e9112fcf22389eb77f2067eca075\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/strict\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/strict/service.conf\",\n      \"mode\": 33188,\n      \"size\": 775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e8884086e11c70fda3c2f3b55d5dae579acf6c3b431711bca3c1877d37f37d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/trusted\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portable/profile/trusted/service.conf\",\n      \"mode\": 33188,\n      \"size\": 182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac83f7cecde8f95d43f0e6794e9f3f95780d02b1e5e2e9b89d3f4e43791fe7f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/portablectl\",\n      \"mode\": 33261,\n      \"size\": 37752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66a2475d283d1713ba4e023e2e5f7268835505848af403518c8b69be2da5fc90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/purge-nobody-user\",\n      \"mode\": 33261,\n      \"size\": 2351,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e11c81dcc7ad6ffac40750eb9d624065caf5a4a03da21f876310ab50140ad62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/resolv.conf\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d161d962da2e1e1efb4047c411ae4b70038b85530effd7601006dab92af188da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-debug-generator\",\n      \"mode\": 33261,\n      \"size\": 16648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed7613d7c9192412e18a6e394bc132ba55b030106ab350abf4c3e598b15c57f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-fstab-generator\",\n      \"mode\": 33261,\n      \"size\": 46080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"080913e47b61306d0fca60f1029effb9d9f27fb7a23aa02eeb6124683d8903f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-getty-generator\",\n      \"mode\": 33261,\n      \"size\": 17048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc7635f5e5deba9a41acc49584b574dfdcf94bf76fffe3ba9ec4b304caa62e4f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-rc-local-generator\",\n      \"mode\": 33261,\n      \"size\": 12360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8191f690b63231dbf6935951c9d3756e8ed2b3854336bd0fe2d609a666a075c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-system-update-generator\",\n      \"mode\": 33261,\n      \"size\": 12392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b68d045ce94a30e5e3f3379cee162bf8ad744c1c2129d17ce6ba72b246fd2f34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-sysv-generator\",\n      \"mode\": 33261,\n      \"size\": 33528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77c3446994404f097793a9b670941692e35a4d34767dc649c4e0a2484bce823e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-veritysetup-generator\",\n      \"mode\": 33261,\n      \"size\": 17016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f7d14951963a0958be69aa330f47af195f3d325d241e0e4f17527179ea05eb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-preset\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-preset/90-systemd.preset\",\n      \"mode\": 33188,\n      \"size\": 951,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31da5a1f9b11b2cb9f6b5cf7aa2f87f7e5ed47219c3be2f067d6cc5edd6ef380\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-shutdown\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/autovt@.service\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/basic.target\",\n      \"mode\": 33188,\n      \"size\": 956,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72494b9ee3507c7c3c12e2983ed298409bdbaae2795be0d64b9456d869710b46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/basic.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/bluetooth.target\",\n      \"mode\": 33188,\n      \"size\": 419,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"146797e480e9493163bff8f4df445279b49c30530054948d0da88eb1dafbaaf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/console-getty.service\",\n      \"mode\": 33188,\n      \"size\": 1082,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6d4e052555d0f7261538b2ecef31857a3644bfbb55768257da58dd319d45f37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/container-getty@.service\",\n      \"mode\": 33188,\n      \"size\": 1263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28634acce233c35308cf6a19a18dc932ede7bae03f94db0017ac2f997a20fbab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/ctrl-alt-del.target\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus-org.freedesktop.hostname1.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus-org.freedesktop.locale1.service\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus-org.freedesktop.login1.service\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus-org.freedesktop.portable1.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus-org.freedesktop.timedate1.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dbus.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/debug-shell.service\",\n      \"mode\": 33188,\n      \"size\": 1084,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e57bf4c34e2fe38eb29d7300abd84dbf7c8260fabd3ea54b0d1e4b583e7086c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/default.target\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/default.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dev-hugepages.mount\",\n      \"mode\": 33188,\n      \"size\": 750,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50abe4124ccc8e42471728a1ea1bc7e46da1b9db74d7be0ee76d52d117341eda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/dev-mqueue.mount\",\n      \"mode\": 33188,\n      \"size\": 665,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f601c752b2df6fdda76b3355e6f6c441d8b3643514206220c5a14baf50aba329\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/emergency.service\",\n      \"mode\": 33188,\n      \"size\": 801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"809aed09c5931ca6a004fb863223ace0756a4e7b0dcb8c59186f18b7918b1347\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/emergency.target\",\n      \"mode\": 33188,\n      \"size\": 471,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92f51ecd53d6bc7380ed19349519872bc83ed102fe45ae3c0b80189762b06159\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/exit.target\",\n      \"mode\": 33188,\n      \"size\": 541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bfc7f59c7f88c4e8513a112447a4e3c01aeed858bc19109a169535ecc9c1231\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/final.target\",\n      \"mode\": 33188,\n      \"size\": 480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e79c7f1a7f75116f99eacee0053a68bad270747fc267c2066c5b7f5ff8469e96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/getty-pre.target\",\n      \"mode\": 33188,\n      \"size\": 506,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"626128caae4a6c36b289d15a706524825e4817540de01dc748db158771aced59\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/getty.target\",\n      \"mode\": 33188,\n      \"size\": 500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5064c0664818eaa20ffb783628ef614d8864984e499f25282ab7c1021781b1e8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/getty@.service\",\n      \"mode\": 33188,\n      \"size\": 1975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6482c9736abc490f697890a48dd4d9b7dee6ac4dc24f2f8199b7f9566f23dbe4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/graphical.target\",\n      \"mode\": 33188,\n      \"size\": 598,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1365f20442f938a22d38de83d7de37947de190bb1190c87a4808880f76e59820\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/graphical.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/graphical.target.wants/systemd-update-utmp-runlevel.service\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/halt-local.service\",\n      \"mode\": 33188,\n      \"size\": 605,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edfc8e2c6d468e464356e4ce41b3c34695ffbfac9eb66836c60322030857fe3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/halt.target\",\n      \"mode\": 33188,\n      \"size\": 527,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ba387ceeedfc6e9c1bb6e9ffbc0b2205313255aed815a658b31db2bf3ea2535\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-cleanup.service\",\n      \"mode\": 33188,\n      \"size\": 674,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"788ae4a710602947ce2ce35d494195588baf800156793aa60b262eff98ca8dc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-fs.target\",\n      \"mode\": 33188,\n      \"size\": 593,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72415aee9209c7e0048124c6f788c255f445bfb175746e466d44c2a86099cbf8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-parse-etc.service\",\n      \"mode\": 33188,\n      \"size\": 842,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4418bbb5b27ffa67cc8dda12609a4398b5b2353689db6e8a4269096f69de7fde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-root-device.target\",\n      \"mode\": 33188,\n      \"size\": 561,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b9983aee2506711736cc3352398e67aa117fe684a743664dab1b3c1cd6bb881\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-root-fs.target\",\n      \"mode\": 33188,\n      \"size\": 566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c22f7df97c927b64f6ef52fd7671cacbf15ff1fc5eaa1e7e7dfe09986f7de70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-switch-root.service\",\n      \"mode\": 33188,\n      \"size\": 593,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e13304808fc5b93fa25517bb634558d939481d58393bbf110b7de359a038c5b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-switch-root.target\",\n      \"mode\": 33188,\n      \"size\": 754,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c93c1380ff261ca759d5dd9a14539bcc6b52f7943aac3a8dfc24df4dce17945\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd.target\",\n      \"mode\": 33188,\n      \"size\": 763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc9955c31dbf1368401fb766fdd510fab64ea66769e1bf9686d0ca71c29f06e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/kexec.target\",\n      \"mode\": 33188,\n      \"size\": 541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1d579ffe8471ee795e46708fb32f489153c07bb4917f41f73f9db790c212fdc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/ldconfig.service\",\n      \"mode\": 33188,\n      \"size\": 687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36eb19c4b96269fd6e2ff2c546b1f7074c3cfc0e24ff5b84c57ff1c84913bc8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/local-fs-pre.target\",\n      \"mode\": 33188,\n      \"size\": 435,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b36765b2105e045e90e400c0b5567a0d868d0060a1391a8e07c6f42d0e50d0db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/local-fs.target\",\n      \"mode\": 33188,\n      \"size\": 547,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c1126c9a006f29320337913cf0d1e6d108108bbdb1ecbcff984697a09255038\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/local-fs.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target\",\n      \"mode\": 33188,\n      \"size\": 532,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e57f384474fa52248f912b11cce30dea793db7fa26a6cafea7213716eea18068\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/getty.target\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/systemd-logind.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/systemd-update-utmp-runlevel.service\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/multi-user.target.wants/systemd-user-sessions.service\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/network-online.target\",\n      \"mode\": 33188,\n      \"size\": 505,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00d64f04ab86d078c0858f6c2d39df25941d0bff06a781adb1b9a519c44f1341\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/network-pre.target\",\n      \"mode\": 33188,\n      \"size\": 502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b67c872776d34433a7fee8ee89c53615617b707424801110c4d5b22ece1884af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/network.target\",\n      \"mode\": 33188,\n      \"size\": 521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"51a62bea8547cd74802c5f394be11196edad8a0f51b1aa0861ba356c781bcdac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/nss-lookup.target\",\n      \"mode\": 33188,\n      \"size\": 554,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfb73f79a2d30d6575dbcd091f66a6191918b5f19cdc894957763a098485f8b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/nss-user-lookup.target\",\n      \"mode\": 33188,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1456fe3ecfa3ae9c3e3bcaaf5a46a35f27fd3cda9e529a55000e4cf06425146\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/paths.target\",\n      \"mode\": 33188,\n      \"size\": 394,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f699d02449375f392c61a85ba6f3a016a5784e8571e4897c07cf3011a3a87f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/poweroff.target\",\n      \"mode\": 33188,\n      \"size\": 592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4eb6628a68ad5e7f393dcfffe3703dc5489b67138f83d4889e7efd89913e5325\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/printer.target\",\n      \"mode\": 33188,\n      \"size\": 417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1f01bb0c93148bd0a397d2d075b5a514e9d9ca33040d2e442cda724f9124c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/proc-sys-fs-binfmt_misc.automount\",\n      \"mode\": 33188,\n      \"size\": 745,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d9eff420aecdab1ee7162f2732105e07d8deccf5aa7d1d78ab6194cd7c2324a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/proc-sys-fs-binfmt_misc.mount\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61df1bf9d7d6980d6b03d2b573ec0c7751582e5df2a77121771c22dfa2bf780b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rc-local.service\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79a99e41dff42be50a6736bcac10760f9f01cf80c145af89eaf361d15945ac36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/reboot.target\",\n      \"mode\": 33188,\n      \"size\": 583,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48e25ebb9ef0c1a1a4a369948691d57ee6363bbfe124daadbf41a74e840ce9e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/remote-fs-pre.target\",\n      \"mode\": 33188,\n      \"size\": 436,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34088b1dc45071c7ca18f32a2c3954213496a99380571f9e8143d9a1fd9aed16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/remote-fs.target\",\n      \"mode\": 33188,\n      \"size\": 522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"973827e5659568134a123af241085373b974f211a466939b4af081ee1317cfa2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/remote-fs.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rescue.service\",\n      \"mode\": 33188,\n      \"size\": 792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac7bb0fc0897c84198871afe2dc5c9e199cd02bd47701982c28a57ef6e92fae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rescue.target\",\n      \"mode\": 33188,\n      \"size\": 492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"832fe8316cb92018636d70f6afc3ae63107064936dc71109b8bbd1ca0a5d2838\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rescue.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rescue.target.wants/systemd-update-utmp-runlevel.service\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/rpcbind.target\",\n      \"mode\": 33188,\n      \"size\": 540,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"388f84fc7df2658eb221c1d076a62beb6c2061b80b061e1e36eb98c717ee3ff7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel0.target\",\n      \"mode\": 41471,\n      \"size\": 15,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel1.target\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel1.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel2.target\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel2.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel3.target\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel3.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel4.target\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel4.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel5.target\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel5.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/runlevel6.target\",\n      \"mode\": 41471,\n      \"size\": 13,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/serial-getty@.service\",\n      \"mode\": 33188,\n      \"size\": 1486,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9505841714b6aee5806828c00211b52cd41a179acb65706dfb269b271a87e8cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/shutdown.target\",\n      \"mode\": 33188,\n      \"size\": 442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75979a331adbecdddca10151c270a197187de1e396b9608558e4186dd4eadbdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sigpwr.target\",\n      \"mode\": 33188,\n      \"size\": 402,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e596bde57979d2b8ad1693ef89ebbd69061b522e335526196cd01a555da0bd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/slices.target\",\n      \"mode\": 33188,\n      \"size\": 449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"db8b99e38e60072fb7495482e4e18afb8804fa0c9bb8572355bc68311c653ece\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/smartcard.target\",\n      \"mode\": 33188,\n      \"size\": 420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ad5f8dae77603bbed92ea025553d38111c4af29f3a8b8b45a9303b0e4c54d44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target\",\n      \"mode\": 33188,\n      \"size\": 396,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4362dd5140e8e476e88c4c556a595f780eb7b6d51240c2e4e0b838ae33d3b7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-coredump.socket\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-initctl.socket\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-journald-dev-log.socket\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-journald.socket\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sound.target\",\n      \"mode\": 33188,\n      \"size\": 420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bade0a1f0adec3fdba5c76b2b50b3b251c79a731851ebec592b6850a9710a3a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/swap.target\",\n      \"mode\": 33188,\n      \"size\": 393,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22f54205370b0595530d31f9b8fe8ccdf2b9aaf2dff9cf5853127ffa0e2c617b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sys-fs-fuse-connections.mount\",\n      \"mode\": 33188,\n      \"size\": 795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c9d956d93025097f5a592dd902b69cddd75e502c09cb3d87338bc7c058874b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sys-kernel-config.mount\",\n      \"mode\": 33188,\n      \"size\": 767,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a103db1d19d884d4e1b26da15400da9bcd079739a5e1caaa0a5d9eb127345f20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sys-kernel-debug.mount\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"275b1616aaa81331c1de603ec3139999419b63651a97397d61b85804694eb2db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target\",\n      \"mode\": 33188,\n      \"size\": 558,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7526dec8fc845658e8d743c9659f8e37f439913acefa0b6671bb97ad4f41691\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/dev-hugepages.mount\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/dev-mqueue.mount\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/ldconfig.service\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/proc-sys-fs-binfmt_misc.automount\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/sys-fs-fuse-connections.mount\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/sys-kernel-config.mount\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/sys-kernel-debug.mount\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-ask-password-console.path\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-binfmt.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-journal-catalog-update.service\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-journal-flush.service\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-journald.service\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-machine-id-commit.service\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-sysctl.service\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-sysusers.service\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup.service\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-update-done.service\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-update-utmp.service\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/syslog.socket\",\n      \"mode\": 33188,\n      \"size\": 1407,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef7dfc4efe363eafa096dc7a327476f1f122b99c789147e908d9a75e8b0fdc8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/syslog.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/system-update-cleanup.service\",\n      \"mode\": 33188,\n      \"size\": 1415,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b33e93d9bbd59738d2d539f1fb6d973026974fedb2c263329d75d2923ed06788\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/system-update-pre.target\",\n      \"mode\": 33188,\n      \"size\": 543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f66e26f876a730996762c0ef3f95c04a0e43c31e2766a8b8dbfb7cedfcac6d4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/system-update.target\",\n      \"mode\": 33188,\n      \"size\": 617,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a97ff01de17667f41c487336fc1dd78fcd6d33e667424e4bbcd5d4fab410f262\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-ask-password-console.path\",\n      \"mode\": 33188,\n      \"size\": 704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b7fcb0f383aeda6068b3f3a4edca1633983c02b9a25794903986eb5db94ceb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-ask-password-console.service\",\n      \"mode\": 33188,\n      \"size\": 728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97bacb9c16ef16ee0835f66ede1e38a0921b723efe6cee954045741bcf0d1c72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-ask-password-wall.path\",\n      \"mode\": 33188,\n      \"size\": 632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ac6c24c6c0a06e68876f95576d5cd0d66e386de60ae6ad97a4c53324352b286\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-ask-password-wall.service\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"516653a242d074a49e383e50b61fc6e96a61b5e41f6d5d4508e6a667e03eb6bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-binfmt.service\",\n      \"mode\": 33188,\n      \"size\": 1093,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d76a773f37baec117c84de3dce32a3d308216786480f9ffa9030a388806099e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-coredump.socket\",\n      \"mode\": 33188,\n      \"size\": 537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f99f6436b837da77625219765d31572a9809126e824d48895eefb3e083c5e42d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-coredump@.service\",\n      \"mode\": 33188,\n      \"size\": 1104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea9611f3107b752900067aaabe2e4c91d13d0a9ff73d7c3b974e366ae4b71bd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-exit.service\",\n      \"mode\": 33188,\n      \"size\": 541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5d63a4e4d4287f747dd1fc0df5f2e18071383defb6619bc1c9c039dca4f36a2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-firstboot.service\",\n      \"mode\": 33188,\n      \"size\": 799,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"242952c9ecba70f52207276a94c819886a92b3b4daa23a58efafdf7f26a8876b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-fsck-root.service\",\n      \"mode\": 33188,\n      \"size\": 618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74d4c2c396cdf31b94bab95238bbb4ba5133f21fc5c3d30f608ba14ed3d0866e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-fsck@.service\",\n      \"mode\": 33188,\n      \"size\": 671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c17b8807c3fdcbaff326b45601cd1a078f6434517cc72b686eb8e19de91e285c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-halt.service\",\n      \"mode\": 33188,\n      \"size\": 588,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9dd9744c3ef2fd3d1a820fc138cab2710a281ff1375387371ccad314b9401d43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-hostnamed.service\",\n      \"mode\": 33188,\n      \"size\": 1102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88e790a114ac4eb009211ffe32e433d092872ad6c49378ef1df241cabbada09d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-initctl.service\",\n      \"mode\": 33188,\n      \"size\": 550,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f91f67210f873979a14eed1876c3212c2944d280d00993a7d3a2bb99ee453380\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-initctl.socket\",\n      \"mode\": 33188,\n      \"size\": 546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9c2768d30d48c1fccfd7b3d63e6bdd48c70cc0f6506a2962f38843a7b766fa3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journal-catalog-update.service\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38b5d8f96fdbf1b273465c41cc8d79a34d1e06c207c00f264a98d874d6bfa443\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journal-flush.service\",\n      \"mode\": 33188,\n      \"size\": 775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e71b84bcefa6a262fd9edb6bc4aa3cdb4dcc940816b0a495a37502681c6c984\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journald-audit.socket\",\n      \"mode\": 33188,\n      \"size\": 647,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eeb49674fe3702c2db92e0800be30815e2a24666d375c70ee7804fd87c13a866\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journald-dev-log.socket\",\n      \"mode\": 33188,\n      \"size\": 1130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19e96a3bb9c841df0ba3343877f9b54e847a9b2597cf651e3342d0167a6e5b5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journald.service\",\n      \"mode\": 33188,\n      \"size\": 1537,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"215301b24566adf55884688431d1867f79d21e7c7d0aad9033d93ea8088dbf91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-journald.socket\",\n      \"mode\": 33188,\n      \"size\": 882,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e25372a9939122f28ee10d3384fe23fd948d6344c157e447dfe97c3e0bcd041b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-kexec.service\",\n      \"mode\": 33188,\n      \"size\": 601,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97b8281382cb424528b806f17167a759277268f28724bac5d653140ba84019c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-localed.service\",\n      \"mode\": 33188,\n      \"size\": 1071,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6fddac70f34abde65d1ef3900a94ab42e42a5cce017e0b451b71f861290090d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-logind.service\",\n      \"mode\": 33188,\n      \"size\": 1383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"659f4b4714c404264729e5696b55301913b9c4e91919b37d5fb13a398a8a9927\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-machine-id-commit.service\",\n      \"mode\": 33188,\n      \"size\": 737,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae5ee3759d7a8164b1747f4cf02587417e1109cf73f1cfab98e0d776113dd3f5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-portabled.service\",\n      \"mode\": 33188,\n      \"size\": 987,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2cac2a419e27e92d747d413d31866eff12a6cf260cee43b048f83bc126c29831\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-poweroff.service\",\n      \"mode\": 33188,\n      \"size\": 597,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b86e8b94442160791c56ebdb311b4bdd55c37d26ca912f73651a2bf9d1956771\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-reboot.service\",\n      \"mode\": 33188,\n      \"size\": 592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b900ec8a72b79d5d31e605d455f7199355838bd36dc841ec08cd1b7d385c5eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-resolved.service\",\n      \"mode\": 33188,\n      \"size\": 1632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0577e61ab8c8253b3695f034a0fc0c60e89bfa38c8d79551a848ebeb882ea859\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-sysctl.service\",\n      \"mode\": 33188,\n      \"size\": 697,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9de1bdb24c46e27aeb148f97bdbfb85661c8cacddc8a249b392ef08379a27487\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-sysusers.service\",\n      \"mode\": 33188,\n      \"size\": 704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0fe442b6fc529311021d01ce93db513494ce5cd8e77a4bf4df2f76a0e7bbca1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-timedated.service\",\n      \"mode\": 33188,\n      \"size\": 1042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adbc9dfc1054e2c60fe2336374e469dfc0ffb7a920c144a8e70d547000227f43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-clean.service\",\n      \"mode\": 33188,\n      \"size\": 663,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"933c6d6d51f679ff34a88a9e76adcb029475db210291782fd5d2a1bbc34aab9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-clean.timer\",\n      \"mode\": 33188,\n      \"size\": 490,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7acece4969ecf8e1d7c9ff022fc1b2f9340b9e88f387dab9d8f007b38224b280\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-setup.service\",\n      \"mode\": 33188,\n      \"size\": 751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"56e0d34c07b4a014cb298483cbe37bd624aacd602377ea0e56f27edd97d1f783\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-update-done.service\",\n      \"mode\": 33188,\n      \"size\": 674,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"189e670826c89de0efff4e560e2c8fd0f53d727ad0e21b89ffeafbfc313d8dc0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-update-utmp-runlevel.service\",\n      \"mode\": 33188,\n      \"size\": 801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0de8362695352cb86db387517c9e77b061efaab8c365fdfa8ed1a7911820d82a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-update-utmp.service\",\n      \"mode\": 33188,\n      \"size\": 802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b2f746cb2a5ed40e8f4b514b5e2bca7fa2e3c864cb20e94b15a0f63e1531061\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-user-sessions.service\",\n      \"mode\": 33188,\n      \"size\": 636,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b3895d0ba5cb485ea54275606948a725c76b5899d985b7502d0b8234264bdaf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-volatile-root.service\",\n      \"mode\": 33188,\n      \"size\": 694,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1173d5bf10f31ba84ce5e24eb731d1618426d70a1971b9ed85be7a26ed9aa30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/time-sync.target\",\n      \"mode\": 33188,\n      \"size\": 435,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f863f602a84d5a90e137a3baf78701c8708cb7ea4722c046cebe366739c83e9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/timers.target\",\n      \"mode\": 33188,\n      \"size\": 445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62be3bb5b62f2f89c5c34000381bcaf6d0852c2707a1e9749439a7ab7bd2f27b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/timers.target.wants\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/timers.target.wants/systemd-tmpfiles-clean.timer\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/tmp.mount\",\n      \"mode\": 33188,\n      \"size\": 782,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b10e252821630155d037d6188543a12ef4c163492b80cdccb4a1a3147a068a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/umount.target\",\n      \"mode\": 33188,\n      \"size\": 457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58a67857d05529e62965bdca1f52b425d28c0ef97b94922acef0cce5d9c25af6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/user-.slice.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/user-.slice.d/10-defaults.conf\",\n      \"mode\": 33188,\n      \"size\": 430,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91d97c13e362b10876c54fb5bd1bf53886a9698f6845a54d9d751414d89ecf1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/user-runtime-dir@.service\",\n      \"mode\": 33188,\n      \"size\": 551,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b4504e989c24dbf2dc6830e1a6131aeb95b3e55196f29895ada67d7c046240f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/user.slice\",\n      \"mode\": 33188,\n      \"size\": 432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b68a1743e480b7d5d2eedba7231b5f675bca587558760f04e23b4e3003eef26b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/user@.service\",\n      \"mode\": 33188,\n      \"size\": 671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be3ece47e5ae33d73b92add4a193dae74dc7510ff4b7823da71647721aa11c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd\",\n      \"mode\": 33261,\n      \"size\": 1559672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e03dd9cd427f02abb7e65a00d8442296b14c80e935d4e10a0d94dd8c136bdc3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-ac-power\",\n      \"mode\": 33261,\n      \"size\": 12320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18af6e492d86edd92cca896efb0467fc3150b1d9f4354b1be95643774491defa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-binfmt\",\n      \"mode\": 33261,\n      \"size\": 16632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed5a6a4c6f94433c5f56da64395e1dcf8658ce9db7676815e05bc041725ef03e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-cgroups-agent\",\n      \"mode\": 33261,\n      \"size\": 12504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53899ab34093eb34852af433d5091e0140d1f2f3a32499a09609f7c9548799d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-coredump\",\n      \"mode\": 33261,\n      \"size\": 62488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88b1351532622cbab2882a402267aa8ae7d220c5d12c14b645046e6b7bf93419\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-dissect\",\n      \"mode\": 33261,\n      \"size\": 16608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7fd30384aa13933bb541d0ba0fe3eef52ec4c3565b661e3542b125d7df36234\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-export\",\n      \"mode\": 33261,\n      \"size\": 42032,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b792a48463eee74ff6ba9f20feab831896d1c5ff30ac5a8363794c727101681\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-fsck\",\n      \"mode\": 33261,\n      \"size\": 25192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f8868572a618863b65153923d1aaa356dad6910b90b96f12ea3acaf0f129a1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-hostnamed\",\n      \"mode\": 33261,\n      \"size\": 29456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6964cefbac08d6b175fd464c97eedb04e9564ed275c321a2c4d438b9eba26797\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-initctl\",\n      \"mode\": 33261,\n      \"size\": 21096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"197c9e67e0be09efefbb574ba11bd3903174920077d91064a9ed6164fbbb1b9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-journald\",\n      \"mode\": 33261,\n      \"size\": 153912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20574ca732cea97d63bb814723de39c4b191e46c3f9a0c699ea6354aced952d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-localed\",\n      \"mode\": 33261,\n      \"size\": 46128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1debd004277af8c5feefab361342e582ec72c5b6a92de827c6fb0623f42a77bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-logind\",\n      \"mode\": 33261,\n      \"size\": 250944,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67984cea4bd907759388f892d8a113c944fd84fee9bdf2250171ebf0f3c388be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-portabled\",\n      \"mode\": 33261,\n      \"size\": 87840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"147fb7cc49c91e77a792dfae144838dafffbc457042e0a197f81501e07956dd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-reply-password\",\n      \"mode\": 33261,\n      \"size\": 12512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd72bdc293e629361090e0acae1e0cb3d6f2b2fd02f7d9cfa86fce5ae6bf8fdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-resolved\",\n      \"mode\": 33261,\n      \"size\": 455600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c206b920654d29f465e520ed5f0547cd5ce5e9613ab0356ddd353632f28d544\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-shutdown\",\n      \"mode\": 33261,\n      \"size\": 62504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df0f45934d0599e12889b78bd1db16560490ccfc2ae7758514d1d33fcc8d4c03\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-socket-proxyd\",\n      \"mode\": 33261,\n      \"size\": 25304,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68780154e826ed348e8704a78407580fed72979b60ae0117f889648755a02bcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-sulogin-shell\",\n      \"mode\": 33261,\n      \"size\": 12512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9630f10376ff6e842e34c34924403be3039d6877547855d200c7ad7e985e797b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-sysctl\",\n      \"mode\": 33261,\n      \"size\": 16640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"989642be3a632fd3411d00725546ed3c7478a32d2e703b0bbdab549f6898ee74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-timedated\",\n      \"mode\": 33261,\n      \"size\": 37712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90f6e8df03904dfd279602910d50746d52aa9ca1dad2965ac41fc5952296fd29\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-update-done\",\n      \"mode\": 33261,\n      \"size\": 12864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e23800b50a69825131248d64b4c35edb8ea8fd39e61132635c11286b745ccc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-update-utmp\",\n      \"mode\": 33261,\n      \"size\": 16608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b77a1df847b9c492af06aef47ed82a54c646d6abbbc2dc82f3602f7e5b830279\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-user-runtime-dir\",\n      \"mode\": 33261,\n      \"size\": 230264,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9f80acbea1dc353339775c3a989461395d5532f1f8a80c957a851e35d8b23b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-user-sessions\",\n      \"mode\": 33261,\n      \"size\": 12312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b50605adf3f8b315652ab307efe2f1d414f57371c5956e49dbb5dd33b823c27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-veritysetup\",\n      \"mode\": 33261,\n      \"size\": 12504,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec513a12fdb9ef18664f5f9b54259509195f1c405f73fc281b4b746a6d4b0468\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-volatile-root\",\n      \"mode\": 33261,\n      \"size\": 12512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"072124016544d165bcf469834a4d7eae624dcc32ffb752d15174500a429fb1f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user-environment-generators\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator\",\n      \"mode\": 33261,\n      \"size\": 12528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c812e76ee392e7abeac4d515c8c7019b856723dd30ceaeecb53603b3b2d5b0a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user-generators\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user-preset\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user-preset/90-systemd.preset\",\n      \"mode\": 33188,\n      \"size\": 513,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c279d3a049b6d26aab8838dc0b9da2c72f39470044e65592dba0615c7b26ddd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/basic.target\",\n      \"mode\": 33188,\n      \"size\": 497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8b9a76e1f28581d40d2a443fce804b493e3d60f619dc16e8edf6dd71d684c1e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/bluetooth.target\",\n      \"mode\": 33188,\n      \"size\": 419,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"146797e480e9493163bff8f4df445279b49c30530054948d0da88eb1dafbaaf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/default.target\",\n      \"mode\": 33188,\n      \"size\": 454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22ce53f9bb4390e4e5e5b0c3d4e82c13eed8168da2d4d2bb62c65b1b5493493e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/exit.target\",\n      \"mode\": 33188,\n      \"size\": 502,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca26638ba3227bff746e9d58c68d77eb4efd904ddc76ecc98dd0de397c860825\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/graphical-session-pre.target\",\n      \"mode\": 33188,\n      \"size\": 568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4b3a15f32d9de7391f001bf5813c0f0dbd9bdee9bd3c2273e572972c2fbe5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/graphical-session.target\",\n      \"mode\": 33188,\n      \"size\": 484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fef42486250c523257387fafbdc0f30126c75a7f9d9dbd7a89a79e328239a18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/paths.target\",\n      \"mode\": 33188,\n      \"size\": 394,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f699d02449375f392c61a85ba6f3a016a5784e8571e4897c07cf3011a3a87f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/printer.target\",\n      \"mode\": 33188,\n      \"size\": 417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1f01bb0c93148bd0a397d2d075b5a514e9d9ca33040d2e442cda724f9124c7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/shutdown.target\",\n      \"mode\": 33188,\n      \"size\": 442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75979a331adbecdddca10151c270a197187de1e396b9608558e4186dd4eadbdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/smartcard.target\",\n      \"mode\": 33188,\n      \"size\": 420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ad5f8dae77603bbed92ea025553d38111c4af29f3a8b8b45a9303b0e4c54d44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/sockets.target\",\n      \"mode\": 33188,\n      \"size\": 396,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4362dd5140e8e476e88c4c556a595f780eb7b6d51240c2e4e0b838ae33d3b7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/sound.target\",\n      \"mode\": 33188,\n      \"size\": 420,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bade0a1f0adec3fdba5c76b2b50b3b251c79a731851ebec592b6850a9710a3a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/systemd-exit.service\",\n      \"mode\": 33188,\n      \"size\": 548,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff44dc1047b4c11b23076de841c8cd3dd1300f2c62e919170d78adb03faa6ec1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-clean.service\",\n      \"mode\": 33188,\n      \"size\": 661,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b05000646dee7a3974cbad2f8d0d94cf40440d27ef3f891d329795f36c1563f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-clean.timer\",\n      \"mode\": 33188,\n      \"size\": 533,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"261ee4679bc17b5ada1fdabafb47bdac85fa5def307e1ca38b50b25f65b38c87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-setup.service\",\n      \"mode\": 33188,\n      \"size\": 724,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef18b6f3cda42ab906eea155f6f7f3445afb9773e864424686a563eaed351187\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/user/timers.target\",\n      \"mode\": 33188,\n      \"size\": 445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62be3bb5b62f2f89c5c34000381bcaf6d0852c2707a1e9749439a7ab7bd2f27b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysusers.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysusers.d/basic.conf\",\n      \"mode\": 33188,\n      \"size\": 1138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78c4d8cad685876304839a10cc62555ba91acd6f55f5872195e534f605e86c90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/sysusers.d/systemd.conf\",\n      \"mode\": 33188,\n      \"size\": 360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e828ac3ce0116c45b546e18630702992c5a2f8f2f8578eb4615736c73093e61f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/etc.conf\",\n      \"mode\": 33188,\n      \"size\": 515,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f4b7b20e6e522a1345735854b32d9b96af21c0be4c45442d194e4a71dd0d33a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/home.conf\",\n      \"mode\": 33188,\n      \"size\": 362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"135d4d63b7a841a921f5c2ddc0c2c38b72286070097883196bd58375bd1674e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/journal-nocow.conf\",\n      \"mode\": 33188,\n      \"size\": 1096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c53a809900502c8cce9a2dd1a37318aad2a3988592c4493f2c0c2bfd49c2b656\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/legacy.conf\",\n      \"mode\": 33188,\n      \"size\": 841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"65e88a322e23dea7937e9d436a6988b0244764b63648c152c62e2308e5e1c0ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/portables.conf\",\n      \"mode\": 33188,\n      \"size\": 96,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c88363428b9c406eb2be1983ddf455180d13f9a76190b47cd5674b4eedc79157\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/systemd-nologin.conf\",\n      \"mode\": 33188,\n      \"size\": 596,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"922494a4a3b0fc2fb3e3d22eeb23255258a27ed38e48cc42a11af80f5ec2f5b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/systemd.conf\",\n      \"mode\": 33188,\n      \"size\": 1676,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"359727425de169e5dc857207629c838857172b7181ab385b003d86aac2b6243d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/tmp.conf\",\n      \"mode\": 33188,\n      \"size\": 757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"450881ccdc4835a895f643be397d9eeb8bf49da25146f6fab8c3e5e1cbe2f256\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/var.conf\",\n      \"mode\": 33188,\n      \"size\": 568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"285585556332d5f014914358d1053d8af48617e01eccab9c49666e14459e6306\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/tmpfiles.d/x11.conf\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbd4bbec65eafdd27eea4725c1254cd2955285f2d441238f18451e9c285b72ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/halt\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/init\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/poweroff\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/reboot\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/resolvconf\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/runlevel\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/shutdown\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/telinit\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/busctl\",\n      \"mode\": 33188,\n      \"size\": 8015,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd516ef4d2bf46f8b63829b840de99f26cadb26488cf140d7407565b8bcfde47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/coredumpctl\",\n      \"mode\": 33188,\n      \"size\": 3715,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4858c055334462cc53386dc21a2ca14bafdd057f0882273146c33f190207e32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/hostnamectl\",\n      \"mode\": 33188,\n      \"size\": 2281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b341f8d15c5e9d293ebe2e293c99ecf68c0780d238a76de775e10386d09d6051\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/journalctl\",\n      \"mode\": 33188,\n      \"size\": 5892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd2569e8f1b21ee12d320b283f95781bd98de321438cb619c0f7abcf4005ac11\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/localectl\",\n      \"mode\": 33188,\n      \"size\": 3739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29dd0be803ef31a41ac114b510d4b25d17c7a5064611c647963b502d2a3776be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/loginctl\",\n      \"mode\": 33188,\n      \"size\": 4251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe50347975deb0574578d3c354fc3f18d260d9affe87750000476ff84b1150a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/portablectl\",\n      \"mode\": 33188,\n      \"size\": 3986,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d9a8e7c526adb3b675c914814e26ad4be0f1cb1240071090ec370c68f6d9aec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/resolvectl\",\n      \"mode\": 33188,\n      \"size\": 7066,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"335b564abd249a2dbbc4af43be328f8628cc443a718a112c5b5a700813948e73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemctl\",\n      \"mode\": 33188,\n      \"size\": 13456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"974f79b35044c3c8bd0e55981c14463d7dd318c11c8c5fdf1e8a6a2b8c5db803\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-analyze\",\n      \"mode\": 33188,\n      \"size\": 6788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7701026ba2baa8ecdc4554fc6452990e018a824da7c429529e444160894a0d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-cat\",\n      \"mode\": 33188,\n      \"size\": 1911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1818b640140ffe4709e2269c271eb876a7c6487df738a56d4decd3ad477d7eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-cgls\",\n      \"mode\": 33188,\n      \"size\": 2344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c87cbc9016e3cb8b619b155fd59368892cbfe0fb0a85f2463e66665a60d255ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-cgtop\",\n      \"mode\": 33188,\n      \"size\": 2096,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"095eff0ee4d512aee9cc2300923d0cdb26c0201ac9ad8293c3264a311421395b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-delta\",\n      \"mode\": 33188,\n      \"size\": 1951,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca07a28f1a01f1dbb926dc5e713b9e7f5e6c6fa53fbe2f6a2c6df53d37123b0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-detect-virt\",\n      \"mode\": 33188,\n      \"size\": 1361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a5346fed4a895eac394d17c5bf4b2f5291008af3258552f7d5ebab6cd2fb0755\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-path\",\n      \"mode\": 33188,\n      \"size\": 1901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef8bdf909c85b884672cf1d090781e4da3d5ec4e9836e41c757b0f0485e999a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-resolve\",\n      \"mode\": 33188,\n      \"size\": 3189,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d5ebfe15aecc179330011370f1cadff9dee48f5f694aec6346cc44db1cfa989\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/systemd-run\",\n      \"mode\": 33188,\n      \"size\": 4869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b9564f51fc08ec3ba46dd9853269c0308275f7d7ebbde8ceedfb4dfe62a582a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/timedatectl\",\n      \"mode\": 33188,\n      \"size\": 2984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66fff48537803a46c6eddc007d1ffa5fc98bf75ef3801ac6f55a7f72dc7e90ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/services/org.freedesktop.systemd1.service\",\n      \"mode\": 41471,\n      \"size\": 51,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.hostname1.service\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c3d7752da25a7b03e3a7b12d268116cf78d09f9ba77072198f70fe970f1f112\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.locale1.service\",\n      \"mode\": 33188,\n      \"size\": 455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5514402b3ecb006a365ae9a643873d06a4e6e3b8120e0a62781e99a42aa9a0b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.login1.service\",\n      \"mode\": 33188,\n      \"size\": 453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b7045bf9eb1f6887f1edefc1b27e8bfe252d0794479a9c3d333cf40356bb2eb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.portable1.service\",\n      \"mode\": 33188,\n      \"size\": 165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5f3c9e9261eb05131fece487dbbfdbf590fa9797a5ea90024259f4689e0b45f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.resolve1.service\",\n      \"mode\": 33188,\n      \"size\": 457,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5278c12d256d55c762d79c7d60d2f672e6612cecc9babd994acfe7bc55d1eb1b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.systemd1.service\",\n      \"mode\": 33188,\n      \"size\": 404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37a68d852e39114b9691001fc91c9db098e506e077a324329c46159020ab3f39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.timedate1.service\",\n      \"mode\": 33188,\n      \"size\": 459,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b35ec4d91382655caad10cee4309b848e1ab6062b18558e7f2e5f5b868830459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.hostname1.conf\",\n      \"mode\": 33188,\n      \"size\": 985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0d00f7a7d92133c7e3a12d2397a8a460730630b015aa2b37331834e3c73ed08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.locale1.conf\",\n      \"mode\": 33188,\n      \"size\": 975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4520acc3be8066d1505d1c45cdf3a469f695bc7a12e50ba35c3e2bc2125cb08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.login1.conf\",\n      \"mode\": 33188,\n      \"size\": 13299,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f50377cead43623f8dc64f7056f2211db4db33e73657fef4300bf386633812b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.portable1.conf\",\n      \"mode\": 33188,\n      \"size\": 5153,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7637fad7c1fd19317deba97ae60a4521624a543b432807472f028c4d6d64933\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.resolve1.conf\",\n      \"mode\": 33188,\n      \"size\": 953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b20cfd5f3de6a4f65b184a04e5dce4525075eeb609b1806ce8bde5d0f55cdb09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.systemd1.conf\",\n      \"mode\": 33188,\n      \"size\": 18807,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e1b2d3569818cf4cd164568388b5d9502f2fa5b4d2d558ce11325b0b47c42b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.timedate1.conf\",\n      \"mode\": 33188,\n      \"size\": 985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68313a0b0f119cd79d59d65726bf0e317a5fee43322afe4debcddcff3a92d986\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory/etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory/etc/nsswitch.conf\",\n      \"mode\": 33188,\n      \"size\": 119,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d286ca1d2cf43cc031fedef889572e49a1c53e61e7fe96d0e24b6d548b8f10ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory/etc/pam.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory/etc/pam.d/other\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73fa71815a900524c896d5594639f28d24e9f2ec987d2a7a6fde3989a6c94148\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/factory/etc/pam.d/system-auth\",\n      \"mode\": 33188,\n      \"size\": 340,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd9a25cbcb3724a7872dbffc225d1995268389088d075539d80ca6fb420f2368\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/systemd/LICENSE.GPL2\",\n      \"mode\": 33188,\n      \"size\": 17987,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/systemd/LICENSE.LGPL2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/pkgconfig/systemd.pc\",\n      \"mode\": 33188,\n      \"size\": 1706,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c03ab744b4c3de5d262d6471372491c5ca61bb0671a27354d322d8682f9b9cf4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/pkgconfig/udev.pc\",\n      \"mode\": 33188,\n      \"size\": 65,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90d37b745587e1d76e83bb6d1b960e6cce665918027a1d4c9fe1382297fe506a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.hostname1.policy\",\n      \"mode\": 33188,\n      \"size\": 2541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"15ff3d0f23ca80849dac6a69b41ec3917579642797c973bba282664b25003949\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.locale1.policy\",\n      \"mode\": 33188,\n      \"size\": 1923,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe59aca9b10e8d9d46c5200748996c50dfaf31f87804c6f6e86fd09821563d19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.login1.policy\",\n      \"mode\": 33188,\n      \"size\": 21681,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6dbb8b23ae343c66b5b1d9e3a186c8af247d12e45da2959c3039337e430f247\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.portable1.policy\",\n      \"mode\": 33188,\n      \"size\": 2246,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85e729da4f5cbcf77dbc24b9e7e69cf71e64339fbfb1d43293eae567b7a9ec5b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.resolve1.policy\",\n      \"mode\": 33188,\n      \"size\": 7765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97811de8298c9bca4b4da100e7541d14a794cdd72862a1939d00353f67735b2f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy\",\n      \"mode\": 33188,\n      \"size\": 3823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b90a48db31839a1e939c7bbe5922b3af41a1aabbe3d8fb0bcc7b78d526f09846\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.timedate1.policy\",\n      \"mode\": 33188,\n      \"size\": 3125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a6bd7c61a16ef4c949ab5fdf05b1372f602003f83e50dc9bd73ef805c8888ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/systemd/kbd-model-map\",\n      \"mode\": 33188,\n      \"size\": 3564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6894385e86b4bce5d60d262688d657548192069df8546e70fb032a02e025c094\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/systemd/language-fallback-map\",\n      \"mode\": 33188,\n      \"size\": 218,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df256be45479f419f5671ad5fd99a647017f31a6319b670c72fc2660d5f78c9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_busctl\",\n      \"mode\": 33188,\n      \"size\": 3057,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4665180a06392af82a3295a6f27157e769f4df1e0a8e58287aa9c2a1b8cd2698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_coredumpctl\",\n      \"mode\": 33188,\n      \"size\": 1582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"26b48b7782553c8f1db818c5e49e4f3dc8a61efa2e2ea0097e4a0984ad7cfeb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_hostnamectl\",\n      \"mode\": 33188,\n      \"size\": 2270,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93d2e9754bd27af30fb2c58d4fde48dc65181539bc29e92688f2b445ae76e6b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_journalctl\",\n      \"mode\": 33188,\n      \"size\": 5975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba1a9fa9b41bc07f9bfa782ec8422e3d5c6454b0d6960d1eb31b1c9b884c95df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_localectl\",\n      \"mode\": 33188,\n      \"size\": 3585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01d8288104d03243107c33dd4b96e8467237021cf8bbaa82d282ee869fb55b7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_loginctl\",\n      \"mode\": 33188,\n      \"size\": 5804,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"809e6504b37171c5d02ee54b000199382d8b005f3c00abc31f9d7984d199e054\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_sd_hosts_or_user_at_host\",\n      \"mode\": 33188,\n      \"size\": 116,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"682ab3401aef40f32bcab567ee9806b8ec89fa6e1a188a56959c00398af07d9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_sd_machines\",\n      \"mode\": 33188,\n      \"size\": 355,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04ea5ebda956096e6d871b1cdd1c34ad5e78e77179ebeee0f6e28f758c1f24b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_sd_outputmodes\",\n      \"mode\": 33188,\n      \"size\": 289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad4875ecc149ba84f43e08bc1a3c701b3744b564e195c1cd44fd6ee10bc1538b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_sd_unit_files\",\n      \"mode\": 33188,\n      \"size\": 255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c8a298c899d264746794244edd83334a5c3fb7f18e34ac6202ea39f14dee9ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemctl\",\n      \"mode\": 33188,\n      \"size\": 15404,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a150bc7568450f4b12f7aa58c0e50ead2ad2599f41caa42cc7a542740d3ee25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd\",\n      \"mode\": 33188,\n      \"size\": 3839,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c388d87578f3be915d6591f7ee920ab7896bf5507d7357d5f705bf869c8c06a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-analyze\",\n      \"mode\": 33188,\n      \"size\": 3065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3049412ebb9b846ba51aa87c2c816fa65f37056b8d63b03d4f7084eeb257ec75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-delta\",\n      \"mode\": 33188,\n      \"size\": 564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2ea6c00e54519c36cfd44acab78125323e2b0355633f218db85bffb46cbcf36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-inhibit\",\n      \"mode\": 33188,\n      \"size\": 1061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfbec214825717b88557af0d9ffb3c18fb20d7c9010bd1d2ec8559211db8f7cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-resolve\",\n      \"mode\": 33188,\n      \"size\": 2330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c8fec53bc50988c40b054277d536acb9ec1c6b632b0908a8ab433ee948c8695\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-run\",\n      \"mode\": 33188,\n      \"size\": 3136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc930de2b2ceddd44fd42713cb9a9c3a9c35de712245b36046908344873a60ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_systemd-tmpfiles\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"775980852687224585d9dc054eef4069c031c68d3a9886b966c4b07091a34fcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_timedatectl\",\n      \"mode\": 33188,\n      \"size\": 2042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b0d1c4e9483e560a09dcd44fdeefe265890a23ea17ba2e12c64b2379bb1e95a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/cache/private\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/lib/private\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/lib/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/systemd/catalog\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/systemd/catalog/database\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/lib/systemd/coredump\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/log/btmp\",\n      \"mode\": 33152,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utmp\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/log/private\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/log/wtmp\",\n      \"mode\": 33204,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utmp\",\n      \"flags\": \"g\"\n     },\n     {\n      \"path\": \"/var/run/utmp\",\n      \"mode\": 33204,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utmp\",\n      \"flags\": \"g\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"d1b10ee7e459842c\",\n   \"name\": \"systemd-libs\",\n   \"version\": \"239-30.el8_2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:systemd-libs:systemd-libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd-libs:systemd_libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_libs:systemd-libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_libs:systemd_libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd-libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd_libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd-libs:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd_libs:239-30.el8_2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/systemd-libs@239-30.el8_2?arch=x86_64&upstream=systemd-239-30.el8_2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"systemd-libs\",\n    \"version\": \"239\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"30.el8_2\",\n    \"sourceRpm\": \"systemd-239-30.el8_2.src.rpm\",\n    \"size\": 4497918,\n    \"license\": \"LGPLv2+ and MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c/fd4a5ffe0710162ee03537f5e68b8d07f2cd58\",\n      \"mode\": 41471,\n      \"size\": 44,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7b/47e2c31332c8e2647ada2ce71347b344362c5c\",\n      \"mode\": 41471,\n      \"size\": 39,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/82/bdd19f76436533bd13001e054b4709d49edfb7\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/99/cec779f5a2920526b4040dba6e35906c2c2ebf\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6/55ec87d1c6127fa81176fc38393b99b81e9c91\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnss_myhostname.so.2\",\n      \"mode\": 33261,\n      \"size\": 678656,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb114843aeb938ce96e54b61b23047b3361a6ef006621443aac419df8afa2e1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnss_resolve.so.2\",\n      \"mode\": 33261,\n      \"size\": 902464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7be8712274ad51716abacd912a6ca2871ce7430e36d311687d2fcc7f8ae09459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libnss_systemd.so.2\",\n      \"mode\": 33261,\n      \"size\": 906648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eeb617507d350993db4d060b0a138f4c2da685bf9f9c0270d1508b102e123141\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsystemd.so.0\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libsystemd.so.0.23.0\",\n      \"mode\": 33261,\n      \"size\": 1354792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eee984c41184a878e1ae580e4156632829d3658e74ce28970fb24006f4170fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libudev.so.1\",\n      \"mode\": 41471,\n      \"size\": 17,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libudev.so.1.6.11\",\n      \"mode\": 33261,\n      \"size\": 628696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7a36b650f263d80072ced920489f73e0b4695479c5242c86e44488e6d3f94a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/systemd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/systemd/LICENSE.LGPL2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e83fa6ed4af77643\",\n   \"name\": \"systemd-pam\",\n   \"version\": \"239-30.el8_2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+ and MIT and GPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:systemd-pam:systemd-pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd-pam:systemd_pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_pam:systemd-pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_pam:systemd_pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd-pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd_pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd-pam:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd_pam:239-30.el8_2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/systemd-pam@239-30.el8_2?arch=x86_64&upstream=systemd-239-30.el8_2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"systemd-pam\",\n    \"version\": \"239\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"30.el8_2\",\n    \"sourceRpm\": \"systemd-239-30.el8_2.src.rpm\",\n    \"size\": 902496,\n    \"license\": \"LGPLv2+ and MIT and GPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/83\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/83/e454ae4b6a0d22f3204c7d93730de67db19b2d\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/security/pam_systemd.so\",\n      \"mode\": 33261,\n      \"size\": 902496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f9eabdb613ecc6d7618a1bbaea37d47ed55edb68430d0b1bcf808e3a859c7bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"8a67f9d1e4d2bae3\",\n   \"name\": \"systemd-udev\",\n   \"version\": \"239-30.el8_2\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"LGPLv2+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:systemd-udev:systemd-udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd-udev:systemd_udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_udev:systemd-udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd_udev:systemd_udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd-udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:systemd:systemd_udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd-udev:239-30.el8_2:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:systemd_udev:239-30.el8_2:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/systemd-udev@239-30.el8_2?arch=x86_64&upstream=systemd-239-30.el8_2.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"systemd-udev\",\n    \"version\": \"239\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"30.el8_2\",\n    \"sourceRpm\": \"systemd-239-30.el8_2.src.rpm\",\n    \"size\": 7939885,\n    \"license\": \"LGPLv2+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/kernel\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/kernel/install.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/modules-load.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/udev\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/udev/hwdb.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/udev/rules.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/udev/udev.conf\",\n      \"mode\": 33188,\n      \"size\": 215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96d43c3414fcdd70cf114c9f1290f2f9240b42b03a077de7e89b4fa2b7d4aa14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/vconsole.conf\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cng\"\n     },\n     {\n      \"path\": \"/usr/bin/bootctl\",\n      \"mode\": 33261,\n      \"size\": 46136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"467800cce34b3d6ac4b98a0453dcccafd287656cf02010d29ad5abf421c0bde4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/kernel-install\",\n      \"mode\": 33261,\n      \"size\": 4511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc00218c274338607161e666b2e717b63b13c86031dabc8ba0e56d9e9cae93dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/systemd-hwdb\",\n      \"mode\": 33261,\n      \"size\": 29456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4487e4591961fa81bf5e2a9a0c7d450532bbbf3d4010159eb186cd7c82845f89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/udevadm\",\n      \"mode\": 33261,\n      \"size\": 434592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"34209b9a63fd86cecd1c5a52b99a04fcde8ccd2d0d81ac4d99c9c2487548d072\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/00/8918dc961ab81f2666db61c74176cc03b437c6\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0d/7502c6561b0765ee2f638a243e31e838bf1716\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a/1c2e4ad1fbabf822e724e9639fe5bf4fcbcc2e\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2f/d9f531e4c96310381e96aec4325718aeb686d1\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36/cf26e36f06c7ea7150f13a946891540007e57c\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/55/77f47baaa2d4338a29ff58ec08a973b62a3a52\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5d/926c3ad701ebd77bed2c00a2644267daaee382\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75/460b07fb48fd0e924572795a2ebe5583a2a969\",\n      \"mode\": 41471,\n      \"size\": 41,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/75/e9b205e0d79cfd76498dbd5c81b53062340b8e\",\n      \"mode\": 41471,\n      \"size\": 72,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/17b2c497c34b0171d8656834badcea527bdf6d\",\n      \"mode\": 41471,\n      \"size\": 80,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/8bf36d0838dc0a71f8f5db76386393b916a8e9\",\n      \"mode\": 41471,\n      \"size\": 52,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92/f6e4394d0a27c5109cb105aae3920771b93bab\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/96\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/96/abd7713f18ffa0f73d9d6ecd9f8a79570ff9e6\",\n      \"mode\": 41471,\n      \"size\": 45,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9c/3e3c790981e06d74bc8d1058c6dca51cfabe94\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9e/eff3dd8644afb42df21af19d0f716b4969848a\",\n      \"mode\": 41471,\n      \"size\": 46,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/aa/6a462a2337233089228f25b5875408fcb3678a\",\n      \"mode\": 41471,\n      \"size\": 47,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/1e6e65c4be06866eadc0b62e1abdd89e2c2ecf\",\n      \"mode\": 41471,\n      \"size\": 42,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/f7a03b97e5d62e2a06670774eb5c9ff7cead3a\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e1/a09c23b65f81557a469ea3a5471bde300b005c\",\n      \"mode\": 41471,\n      \"size\": 34,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e2/8546b6bdc3b031b15d15b1e93beed2a3018cc8\",\n      \"mode\": 41471,\n      \"size\": 48,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e3/dee9c3a3da1f51a318116579b32423f6935264\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/eb/fa07d21c0d69214e04a95454d088665c86a724\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/5b8a79f33b35d7ee616a51e812c1414eb974c0\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6/224056a511368ea7f7f4143600e21a01553726\",\n      \"mode\": 41471,\n      \"size\": 74,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe/b47c999c99ef74ea48d6f073b7c309176fc5a8\",\n      \"mode\": 41471,\n      \"size\": 50,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fe/f62e373df45e377331315cb2be9bfebb4f8b7a\",\n      \"mode\": 41471,\n      \"size\": 33,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel/install.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel/install.d/20-grubby.install\",\n      \"mode\": 33261,\n      \"size\": 2252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1be846c5b4e2840cb6cfc5786b66cde04006c871cb0552e60d867803a2d4fbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel/install.d/50-depmod.install\",\n      \"mode\": 33261,\n      \"size\": 368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"336f8c7e2e9d28d6b454ee0509d300848709e1dc0d0553532776abf5650cdaf6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/kernel/install.d/90-loaderentry.install\",\n      \"mode\": 33261,\n      \"size\": 1975,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6803e6820e161d82f6c4fe37a3edbcc672a0d9c5e50c6cdc2fa347a887abcd2f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/modprobe.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/modprobe.d/systemd.conf\",\n      \"mode\": 33188,\n      \"size\": 765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b559ca107858d342b24d08802e5f8013edb36c8f297e4e59a8f1ecc26246c9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/modules-load.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/boot\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/boot/efi\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/boot/efi/linuxx64.efi.stub\",\n      \"mode\": 33261,\n      \"size\": 59770,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86d537560470ca9ff49d92b87bbfa1ed876f52b67f4c5e299099c606d6802a80\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/boot/efi/systemd-bootx64.efi\",\n      \"mode\": 33261,\n      \"size\": 87426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c02b7af5e6dc38353315feb8ddb3db908d5e86bbb685e363df031db418a2c1f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/network/99-default.link\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2a9507eb20fc264a7746ad625756e787d5b7f48a689598ed3e6b04be0aaf8c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-cryptsetup-generator\",\n      \"mode\": 33261,\n      \"size\": 33488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023ea0e4af06276b5f4661065fc1f3880228d358f532e2a840327f8cc5bb7a6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-gpt-auto-generator\",\n      \"mode\": 33261,\n      \"size\": 29424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e5e9a6ffeaf11eeb58f3e31e58ee7fd928d57cada32ba4ed66541778cb3a5ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-generators/systemd-hibernate-resume-generator\",\n      \"mode\": 33261,\n      \"size\": 12552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0ef6261f0bcbdffb720651e3e6eafc09f2c2424800ac815765b55860ef34cd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system-sleep\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/cryptsetup-pre.target\",\n      \"mode\": 33188,\n      \"size\": 465,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64e93c4634edf6e7b4e133e7069a4a3999ba563c269833bf17e3fd69ac431d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/cryptsetup.target\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42782abe6eea495e1e9d590562c48c5ba48ba0fe8912d7ca7ecbd157d4e5c33e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/hibernate.target\",\n      \"mode\": 33188,\n      \"size\": 509,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acdb33dfe236b0bce0e3a7883d4faa3d51a75b047031b0aca82c86df602b43d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/hybrid-sleep.target\",\n      \"mode\": 33188,\n      \"size\": 530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2bace034b2984afde547bdfcbef419b707e577095faceb87e3928185341d06c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/initrd-udevadm-cleanup-db.service\",\n      \"mode\": 33188,\n      \"size\": 708,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a123ea9615f3b1c73cd1de5414735c2f383d7d4fcb4ba7a85f6800881dd73abd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/kmod-static-nodes.service\",\n      \"mode\": 33188,\n      \"size\": 721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"489638758f825d591d358e5e83c8c0769ad73d23a5f462924873082992d59eb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/local-fs.target.wants/systemd-remount-fs.service\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/quotaon.service\",\n      \"mode\": 33188,\n      \"size\": 617,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"955f4128db5c87920bf9d77943a21d9db5baed19e7660d5df9027d42edca2511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/remote-cryptsetup.target\",\n      \"mode\": 33188,\n      \"size\": 549,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86d9439857b2d5e306805a4a9d83e35cf9cde9e31c5305557c321c3254cc8909\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sleep.target\",\n      \"mode\": 33188,\n      \"size\": 460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17af014aaa018d21da85d642f9f15979fa699ed315b3268c3c0b460c7a81a046\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-udevd-control.socket\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sockets.target.wants/systemd-udevd-kernel.socket\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/suspend-then-hibernate.target\",\n      \"mode\": 33188,\n      \"size\": 577,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21aefd75fe9dacae47e9b75ae813b33d9890b64879a1b2c5fa1175d259da1bc8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/suspend.target\",\n      \"mode\": 33188,\n      \"size\": 503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"acec592c25438d9199a7b1180b960d98b08b711e0b95f040444cd1e892106c3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/cryptsetup.target\",\n      \"mode\": 41471,\n      \"size\": 20,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/kmod-static-nodes.service\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-hwdb-update.service\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-modules-load.service\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-random-seed.service\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup-dev.service\",\n      \"mode\": 41471,\n      \"size\": 37,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-udev-trigger.service\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/sysinit.target.wants/systemd-udevd.service\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-backlight@.service\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7521d5ed7c75cd704e3d296ed83e14a38ae67bbf72aebdd5f60e8d082008498f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-hibernate-resume@.service\",\n      \"mode\": 33188,\n      \"size\": 675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00f5923f767325bc3c22314d81cb61c4138df6762c1542b46abe46ba95ee0d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-hibernate.service\",\n      \"mode\": 33188,\n      \"size\": 545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e71814ddc5962ade792e6ac0c316282c4236d9c27b57ea5baeae05e324a874a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-hwdb-update.service\",\n      \"mode\": 33188,\n      \"size\": 826,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0a495fd8e75e4b792f797fd1107611e06b19e7815bf16fd52eeb7b538b54b91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-hybrid-sleep.service\",\n      \"mode\": 33188,\n      \"size\": 563,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b736d5b251aeeb20e8ffb49da45e6cbf7723a56e6e44f087fef614a664312c9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-modules-load.service\",\n      \"mode\": 33188,\n      \"size\": 1011,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10eb25cd5fd820074584c879fd225a58040fa4378185ec7ac89a5841e3f86aa6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-quotacheck.service\",\n      \"mode\": 33188,\n      \"size\": 663,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"869552aebcc4c69d8c062bfa395e9f8b90f6865527bcc0993cdc449c5f282e32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-random-seed.service\",\n      \"mode\": 33188,\n      \"size\": 800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdf8f520cd2c466db4230a90c8d6a81aea3472a432c4bc17316dcd9e57947627\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-remount-fs.service\",\n      \"mode\": 33188,\n      \"size\": 802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8d37b2289b7b3cc498243e4c25910226fb167e78b15c1967b006c6dc7d1b2fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-rfkill.service\",\n      \"mode\": 33188,\n      \"size\": 728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c75e2589203b17fd344b2e6903f40eabe2a01ca941a4f249db37a8cf254ae782\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-rfkill.socket\",\n      \"mode\": 33188,\n      \"size\": 657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36c337d16f62fc2ce6bac474a407218b060152cc2399011969a4cab7875f3d30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-suspend-then-hibernate.service\",\n      \"mode\": 33188,\n      \"size\": 600,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b20557747035e866a7b731562c142a4d84d981642feb59d7ec1fdf0b11bf932f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-suspend.service\",\n      \"mode\": 33188,\n      \"size\": 541,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f6fd2d33dab70c75716d9578af498d4fe503ae3317a9d0e9ee9091126462d79\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service\",\n      \"mode\": 33188,\n      \"size\": 771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5476126ae6a3537277871facca0bbc54eb2f944678d8dd99d51a5853529bfc47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udev-settle.service\",\n      \"mode\": 33188,\n      \"size\": 867,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"987bfbfe9d0331ae48c8405bdf0c17a891abfc941ed048f95fc18ad75411f513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udev-trigger.service\",\n      \"mode\": 33188,\n      \"size\": 771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"918ff2478f103dded4f21c931e76e76b7d68db373e1a5aee1ce419aa6895f516\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udev-trigger.service.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udev-trigger.service.d/systemd-udev-trigger-no-reload.conf\",\n      \"mode\": 33188,\n      \"size\": 87,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e22c23fb4618a2021322c5b68fc16b872a27fe8a3edb42e8abec83896eba835a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udevd-control.socket\",\n      \"mode\": 33188,\n      \"size\": 635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6446db490b349b87d129f5172aa834784bb2116949bf9c52b316daa65c1ac675\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udevd-kernel.socket\",\n      \"mode\": 33188,\n      \"size\": 610,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b62ddf05c5441eb41ac7cbb187064065da3aab366e2bced9d9b9d8c0cd7b982\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-udevd.service\",\n      \"mode\": 33188,\n      \"size\": 1070,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aea3d3ccb744697e48ffa1409012445d84238dc356590b49dd130e5072c67518\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/systemd-vconsole-setup.service\",\n      \"mode\": 33188,\n      \"size\": 622,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"824cd3de4787f503cca06d5354dd40c6db1e00a0a4f2fa351661fafad299bb2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-backlight\",\n      \"mode\": 33261,\n      \"size\": 21136,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25bf0fc01abfc79f199f026eb3e6ee3533b1b1620c7d63c9cd91d8ad488e3609\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-cryptsetup\",\n      \"mode\": 33261,\n      \"size\": 29336,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79e8ee68e865f07f0eab83798b3a248d44c9a97e7224eeccd9ffeb22a146a2cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-growfs\",\n      \"mode\": 33261,\n      \"size\": 20728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55d61ad2acbae9e8278639ba9cfb36eee13e21fe21ba70e31cedf3152777df7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-hibernate-resume\",\n      \"mode\": 33261,\n      \"size\": 12512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53328d3d39cfea5f3aa72ed6c8da4efa804e9205631675b2838af3931011d5e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-makefs\",\n      \"mode\": 33261,\n      \"size\": 12512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd790329473d94e7ed20f377a8918f9e1d94ce528b48a70783340a2ca18b014a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-modules-load\",\n      \"mode\": 33261,\n      \"size\": 21192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7f600a12c2f37e50d0edbd6357a2cb7f658509e6bc521c41c1c10c5a57b66be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-quotacheck\",\n      \"mode\": 33261,\n      \"size\": 12352,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e8e1e4934b15ded88587243b921616a5911d5e531c32245531c0ffa98631b5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-random-seed\",\n      \"mode\": 33261,\n      \"size\": 16608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd0262188360f5e270271b4c5cbd04048442a23cf97c335ab929373b2212760f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-remount-fs\",\n      \"mode\": 33261,\n      \"size\": 25280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d913bb9cbba51082172fbef2d267083d4ee42ec440b41bf8e42617fbc9018be6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-rfkill\",\n      \"mode\": 33261,\n      \"size\": 25208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"513fac3789d7e3a29d1b4b12da5bb6babae769c5f5eabc519c52d3a93a672efd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-sleep\",\n      \"mode\": 33261,\n      \"size\": 21112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f598aa9b57f1cc8541bc6070cc6a89cd489d73a271b87784e30fc30a4852b040\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-udevd\",\n      \"mode\": 33261,\n      \"size\": 418112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"083814fc249388c8ee652ee336b1bdfb9e3bb9a3ce33985b948330e572bce6a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/systemd-vconsole-setup\",\n      \"mode\": 33261,\n      \"size\": 21104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"236a1e45b7f5d5d020d0709a6f5dfd972adb1a463a02f5a25bb870ef6ebaf19d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/ata_id\",\n      \"mode\": 33261,\n      \"size\": 16592,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd00d470422d409d7af12cc995bf989078815b2626116767ff43885e54858e74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/cdrom_id\",\n      \"mode\": 33261,\n      \"size\": 33312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c03b1ff5acaadefb95900c3aac953f942d4894159b73a665280c33580ac71005\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/collect\",\n      \"mode\": 33261,\n      \"size\": 17000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97b2b5b881b25044f038788dcb43f60ef67b1b39293e22b98109c0218a926008\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/fido_id\",\n      \"mode\": 33261,\n      \"size\": 16960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61742bea83b08240d94240a5f8cf810b96884e1b2be11a1a7123c61d9ee4dbbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/mtd_probe\",\n      \"mode\": 33261,\n      \"size\": 12888,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"373e95563336fd07ac0be6af6b4dab7f60d639bb743865f9626caa20b87e2ceb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/40-elevator.rules\",\n      \"mode\": 33188,\n      \"size\": 728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7803b00e7f50bfaaae03369bd81a460cdd35212f99b0e5fe11ad12836f8ca8ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/40-redhat.rules\",\n      \"mode\": 33188,\n      \"size\": 1834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"777a211e63c3df00e2cf2cacd22469de0202e21a0b72fa61c76ab5482e68f2eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/50-udev-default.rules\",\n      \"mode\": 33188,\n      \"size\": 3679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"76f92132993612a5333bdfbd0d0107fec44601f58d7e376efbaaf7c13e16effe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-alias-kmsg.rules\",\n      \"mode\": 33188,\n      \"size\": 357,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ce4498487b2ce4070a7ce8d3254580d5357fcdfa8382fa9755315c838517901\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-block.rules\",\n      \"mode\": 33188,\n      \"size\": 626,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae679724ba5e7a78db8710387a55213f5040fdbd86684beef65515d162de2c2e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-cdrom_id.rules\",\n      \"mode\": 33188,\n      \"size\": 1071,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16f44dc355a6b5ada3a0706b2f84c95b25ed6c2a09e4e201da94885c93d1a4d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-drm.rules\",\n      \"mode\": 33188,\n      \"size\": 413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9045c45062fdb03abd55cdec32fb13fe6f196290b52b5c4c9fc350406bf094ce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-evdev.rules\",\n      \"mode\": 33188,\n      \"size\": 974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"137101a59e56390f956d81f0cc35c73316cc899b05dda63b51fab4197f77dc8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-fido-id.rules\",\n      \"mode\": 33188,\n      \"size\": 165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a838eccc8764876f756bee4b624b9b7681161b0801f2859d0a47a24c53eb5308\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-input-id.rules\",\n      \"mode\": 33188,\n      \"size\": 282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2983389654fbf42eca6b703543f76867dbf53eeec9288c2c88d0fcb338a2c265\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-persistent-alsa.rules\",\n      \"mode\": 33188,\n      \"size\": 616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"36767245b64ae515fc073c21bc78769f41188140e1d7b9576ec8dee34d585172\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-persistent-input.rules\",\n      \"mode\": 33188,\n      \"size\": 2710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84e1eb2d66e10a06fc2b8f4c00a3295283806b1a335eab27f3cd7f45acf26834\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-persistent-storage-tape.rules\",\n      \"mode\": 33188,\n      \"size\": 1509,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94085d6906b307d54f519a684c26a087937a4bf4d661f37b4b51c3d63dd20783\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-persistent-storage.rules\",\n      \"mode\": 33188,\n      \"size\": 6528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17bd433c3f36b5bff512d7e4c95af93ab31673f2b43274a8d97c6dffba55e929\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-persistent-v4l.rules\",\n      \"mode\": 33188,\n      \"size\": 769,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"219eb6b4c0df4d8701cc5a316b2ddf63797d4c1b689bc0b289d5cb8063a7034e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-sensor.rules\",\n      \"mode\": 33188,\n      \"size\": 727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8683a63aa8962c4028700ce61752a788d9393297222440a8a186b051befab2ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-serial.rules\",\n      \"mode\": 33188,\n      \"size\": 1190,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54367e1335266de43edb6451534c9e69c317075212b216cedf1d3b6896f14ee0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/64-btrfs.rules\",\n      \"mode\": 33188,\n      \"size\": 616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4bc67740cd0988415907b0fdb5e9cd955be2626b5095b55c7eed4aa4e99bb53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/70-joystick.rules\",\n      \"mode\": 33188,\n      \"size\": 432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"199e72c162185b62c0888791c9b3cde2c8b180fae4e4ae3a29564f933d0adffd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/70-mouse.rules\",\n      \"mode\": 33188,\n      \"size\": 734,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d495d2b8523e7f8175a9b06704f168e14ab97a8a333d4a52ec9501bc0c509ecb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/70-power-switch.rules\",\n      \"mode\": 33188,\n      \"size\": 568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ce83c43f9e2f20810b2a0fa4db7b769ed6b9a19095e354878b731c5c15254526\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/70-touchpad.rules\",\n      \"mode\": 33188,\n      \"size\": 473,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d81de6a6d5b5703098518f977c3b984bdf179238402a8ca0205f85cde798a27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/70-uaccess.rules\",\n      \"mode\": 33188,\n      \"size\": 2671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"baf20471b356a030c52114a90776ca9fb94536ff333a174ed38eb38945a18cec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/71-seat.rules\",\n      \"mode\": 33188,\n      \"size\": 2758,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"257cd0b0502c5963957e785a18c751a445250f421a04d24bff5e9eb3603e842f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/73-idrac.rules\",\n      \"mode\": 33188,\n      \"size\": 316,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"165488bae675977be8f0b9c4e7510c740c02d41dbab7f142037d0467ee1f4940\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/73-seat-late.rules\",\n      \"mode\": 33188,\n      \"size\": 636,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dcabfab6c5ca6e76d994fa183cb26b72a4f43912a071a61e1657716a15cfa7e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/75-net-description.rules\",\n      \"mode\": 33188,\n      \"size\": 452,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b8da22a593f2aaffd4697e4cbfb14cb7eb1d52b96f03d9a60c82eeec920e925\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/75-probe_mtd.rules\",\n      \"mode\": 33188,\n      \"size\": 174,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"54256aa2ca91172cbce3ea805ccf2cd52de8acbbc2db88d209de84655fa997c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/78-sound-card.rules\",\n      \"mode\": 33188,\n      \"size\": 4816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec291608292fe2de555e8a1e5ce574acf315fe65268c469872614073d5e36cae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/80-drivers.rules\",\n      \"mode\": 33188,\n      \"size\": 615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2938670ed8d66eed02c9447f018f07482ff23c36793587c80059561b4c58fa83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/80-net-setup-link.rules\",\n      \"mode\": 33188,\n      \"size\": 292,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2cb34f4b9e1be5c5016f928c06eb7d9370650361d791ef682a00a3108d2d832\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/90-vconsole.rules\",\n      \"mode\": 33188,\n      \"size\": 510,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b6fb1a5dfa30fef49b403e9905e8a06f21a2475b44c5ad1cc29306596433289\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/99-systemd.rules\",\n      \"mode\": 33188,\n      \"size\": 4367,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3e6c7b7e5a944b58e5b44b6c71f4979d12f3d2f57b8849c8cf0fd403a127a51\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/scsi_id\",\n      \"mode\": 33261,\n      \"size\": 34072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cce5256be7ad0c0c0afdfaa8d85f46e0aa388dc55d5f9fada97906b07f498cea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/v4l_id\",\n      \"mode\": 33261,\n      \"size\": 12496,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b506a6a673286f8a549608c8185fad5cf0929bdbc3e48e8e0ea8437383856eca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/udevadm\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/bootctl\",\n      \"mode\": 33188,\n      \"size\": 1937,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ab3bd4f0e655be7f517845c4abd0ea266fca2eb7f6943708b184a645aae11fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/kernel-install\",\n      \"mode\": 33188,\n      \"size\": 1810,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"300fa55e4a06cf8a162f0a7d030f9920041d22506c3f001f9c86d452f8a470cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/udevadm\",\n      \"mode\": 33188,\n      \"size\": 3766,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48545540326c7eba22883d8d469f336c861d8ad26b7e8a34116943162a3d7e5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_bootctl\",\n      \"mode\": 33188,\n      \"size\": 1101,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00baf8fb7134bf9c163005037d9c936bbfb24f2744c4701f9a8a51d47e7a413a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_kernel-install\",\n      \"mode\": 33188,\n      \"size\": 651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"438f8319164bac0a22ffadd7ed33e10a796015d018a91196e7f1d32a549993cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zsh/site-functions/_udevadm\",\n      \"mode\": 33188,\n      \"size\": 5997,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6aaa0dcc6d651e6e4e12dcd6943c2c161e852eef115be38ff83fe3b88cb6cf8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/var/lib/systemd/random-seed\",\n      \"mode\": 33188,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"g\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"c3c41bc1427a7dd6\",\n   \"name\": \"tar\",\n   \"version\": \"2:1.30-4.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv3+\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:tar:2\\\\:1.30-4.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:tar:tar:2\\\\:1.30-4.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/tar@1.30-4.el8?arch=x86_64&epoch=2&upstream=tar-1.30-4.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"tar\",\n    \"version\": \"1.30\",\n    \"epoch\": 2,\n    \"architecture\": \"x86_64\",\n    \"release\": \"4.el8\",\n    \"sourceRpm\": \"tar-1.30-4.el8.src.rpm\",\n    \"size\": 2914728,\n    \"license\": \"GPLv3+\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/bin/gtar\",\n      \"mode\": 41471,\n      \"size\": 3,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/tar\",\n      \"mode\": 33261,\n      \"size\": 497912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75b6c10cea371e95c8c1e315f76852aaa01a0cc31b878621cf0d1670e5a7ac70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/a78cae1d85ad11ac18ae07efe26553a4d8ae5a\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/tar\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/tar/COPYING\",\n      \"mode\": 33188,\n      \"size\": 35147,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"b7ce35345616e99a\",\n   \"name\": \"tzdata\",\n   \"version\": \"2020a-1.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:tzdata:2020a-1.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:tzdata:tzdata:2020a-1.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/tzdata@2020a-1.el8?arch=noarch&upstream=tzdata-2020a-1.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"tzdata\",\n    \"version\": \"2020a\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"1.el8\",\n    \"sourceRpm\": \"tzdata-2020a-1.el8.src.rpm\",\n    \"size\": 1904256,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/share/licenses/tzdata\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/tzdata/LICENSE\",\n      \"mode\": 33188,\n      \"size\": 252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0613408568889f5739e5ae252b722a2659c02002839ad970a63dc5e9174b27cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Abidjan\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Accra\",\n      \"mode\": 33188,\n      \"size\": 842,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea0a89ec3c253390f746107c3ea69392270d8df0dc2d2aed6f23f4cff852bf91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Addis_Ababa\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Algiers\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d777e8eecb9ebe269692349daa6b45b2463e4a3c2d107ccd139b6206c4fa73cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Asmara\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Asmera\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Bamako\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Bangui\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Banjul\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Bissau\",\n      \"mode\": 33188,\n      \"size\": 208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ddad13adc33cdee8eaf55cfa31efcafd79305ae8dfcc3be06ff78299f29f1d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Blantyre\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Brazzaville\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Bujumbura\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Cairo\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"279bbe1fa62da67387c63593b60bb655252ef5c8f189cf43469087740af2b4fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Casablanca\",\n      \"mode\": 33188,\n      \"size\": 2465,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa6b8924f65caa075abd3d790fcca99faf59b66cef9531dda52544ee1d5d673\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Ceuta\",\n      \"mode\": 33188,\n      \"size\": 2059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"387d2c354117fe2a22f6f3b429e4193a331d3e93d7007a55c50b3b9eedee63de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Conakry\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Dakar\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Dar_es_Salaam\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Djibouti\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Douala\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/El_Aaiun\",\n      \"mode\": 33188,\n      \"size\": 2303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bd0b2fbcc4c1c23746fc012be63f88a543bfcaa3f6d464cdf32c014c7bde110\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Freetown\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Gaborone\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Harare\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Johannesburg\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Juba\",\n      \"mode\": 33188,\n      \"size\": 683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73d986c70173c763e9b262dbf367120bc2a4f63f006c1d412ea9adab77e09da3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Kampala\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Khartoum\",\n      \"mode\": 33188,\n      \"size\": 713,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5256a96f78382e82db80ad8591240c3886fc58f9a83fe94506e3a192fbcf2f4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Kigali\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Kinshasa\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Lagos\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Libreville\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Lome\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Luanda\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Lubumbashi\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Lusaka\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Malabo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Maputo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Maseru\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Mbabane\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Mogadishu\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Monrovia\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f9672c98983af595b3c6274cf8135728c8815a4f9c98ffba043707609e5d122\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Nairobi\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Ndjamena\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1391c8edd23b3f73e0bfacf8b878801c58206ca42349c30b22fcb7e8d13de3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Niamey\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Nouakchott\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Ouagadougou\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Porto-Novo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Sao_Tome\",\n      \"mode\": 33188,\n      \"size\": 263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c04b1866beb73b69104997850cce075376d62716f8d01156e796d878b160545\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Timbuktu\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Tripoli\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ff53f7072863fb56f1e71339392b6de7e50675efa4333b9e032b677c9c9a527\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Tunis\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eecc34436d1dd96c49d6b671ed61bc594548d280a967537a9653841b537a9a92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Africa/Windhoek\",\n      \"mode\": 33188,\n      \"size\": 1034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f032165bd2520eb45848e2d059f61185331ba6faa263861c70ec2becf30fa9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Adak\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Anchorage\",\n      \"mode\": 33188,\n      \"size\": 2380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5df0a6f7f9d43cbbd3e74d33a23fe686080eb55965f5d9246b6e859b3db9d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Anguilla\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Antigua\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Araguaina\",\n      \"mode\": 33188,\n      \"size\": 910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb7fe2d06e8ee5c5d9a8a568c8cb37efbb0086824f38d1bc4d8505f963b5970d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"841b9bca947f2acd9adc6cb5c10171204eecec1e46e6042654f355c89debc43f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/ComodRivadavia\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"233f43f895b08f21cd28918fbdb9c22892511c0996ac6212e019c3e866aca455\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/La_Rioja\",\n      \"mode\": 33188,\n      \"size\": 1123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edc82d9225b8ae3ca911eab14f8201a8916928cfab233e182f807e715cf18435\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d50f245cf1eeb3650dbbdd45720ddc6b1c5e22aede7981f20b9efe2c7ac68c4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Rio_Gallegos\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f762067b25cc7e6141b06a6eae77764caccccbfe8716f1370c33e169ec2e1723\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Salta\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1deede9c14ed0b4dc6e5a40110c7056083c8fed557b84aadc0fa2a045411e560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/San_Juan\",\n      \"mode\": 33188,\n      \"size\": 1123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"100c000b03b9a0e19c778d9e81ad8e5c2c34db4b7da24c55d67c0ad8050a67c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/San_Luis\",\n      \"mode\": 33188,\n      \"size\": 1139,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab15b1141b87b1381e5cad386fc374b5a9a2ca922504da5b848074fab91e9abc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Tucuman\",\n      \"mode\": 33188,\n      \"size\": 1137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a623bbcd2144f1e43892777084bde4e2613ae6f22bf92dedf6e1dc6e68248b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Argentina/Ushuaia\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02f9a96426823c7bf25ff15a1f241069e2cb15969d48d0c6cc31aad13a7d0f49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Aruba\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Asuncion\",\n      \"mode\": 33188,\n      \"size\": 2077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e29f7cdc530419ad31e4afc8fc2adf40d9577f55e2174a3a82358a027780ca2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Atikokan\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c30226b472b507b5a30b69557d56f24fcc8e9467110e4d3ec15c2c51de5d245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Atka\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Bahia\",\n      \"mode\": 33188,\n      \"size\": 1050,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e1c1b5e2579e15a623bfd3774db703a49b937790e68b44a6b99a308c6ecba66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Bahia_Banderas\",\n      \"mode\": 33188,\n      \"size\": 1588,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d0e0d9f6168635a5f98550a170d423854ff5b662ce0d874c3cba77199bf1cbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Barbados\",\n      \"mode\": 33188,\n      \"size\": 344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b1a7857a01ae2a3ae9a51e0b40cfbed91bac468579ed3c08b54466276bbb1fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Belem\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84749f6075de59dc62bd69343194806cfd552641b912a6f8e96c83c99914a187\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Belize\",\n      \"mode\": 33188,\n      \"size\": 978,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb4e57a8c657d0c253ef4e0a5af118c928e6e5875564081a714563addfd4b31a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Blanc-Sablon\",\n      \"mode\": 33188,\n      \"size\": 307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d383bfb7e85331030f8091a9055a5f424e3674407ca0c76cce06b5a0316fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Boa_Vista\",\n      \"mode\": 33188,\n      \"size\": 658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c57a63f22280c2c46587414956efc8fcaadc36ed422589b48929dcc7ab4f6680\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Bogota\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3611de34f765f2d65ec0593e79c678de36092549898680dc4639b8c68f7137ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Boise\",\n      \"mode\": 33188,\n      \"size\": 2403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33353ef05ccdda7debe757cf865ee7bd78031f38c6797b8fbfc11f9010f55a10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"841b9bca947f2acd9adc6cb5c10171204eecec1e46e6042654f355c89debc43f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cambridge_Bay\",\n      \"mode\": 33188,\n      \"size\": 2098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aeaed5b104ee99ab13a9f5b5a7aaf7f6c9a7f59bdefd15d3c9951551c7b5f6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Campo_Grande\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e670b40a7dd3adf79f66ea43382a70e60caee6ffb59ae92c4c9ee081d16259d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cancun\",\n      \"mode\": 33188,\n      \"size\": 816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d22316873f309799c6f97fefb8a0a8897d0df4eb376f84bb0b71602ec240d04f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Caracas\",\n      \"mode\": 33188,\n      \"size\": 289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94e8efae88e096d6dd0abda2661d826c004f0c587f97782cb2f911ed7c942f1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cayenne\",\n      \"mode\": 33188,\n      \"size\": 224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af8de87447f7093759a595cc3d403e5fa7b51fc3520959c4da54956ffbac856a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cayman\",\n      \"mode\": 33188,\n      \"size\": 203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4fbba14653a3186f3c5b719f7b9bf7d8a5824401064cf6d508205592e55a9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Chicago\",\n      \"mode\": 33188,\n      \"size\": 3585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"143f29b957173a46008187230a38125bd3a03b3dbcba0dc1d1b8661331f71693\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Chihuahua\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7d150e716db5b1c96bb0e50252b80306e1d9e8bcc2bf90a3ae7071906e71513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Coral_Harbour\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c30226b472b507b5a30b69557d56f24fcc8e9467110e4d3ec15c2c51de5d245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Costa_Rica\",\n      \"mode\": 33188,\n      \"size\": 341,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e6ff29a776e053226bf590ebe734896f9150d69074f22a16a1c7199a1484ec5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Creston\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97b74beec3714be518219f24533cc21edf9b53d01f4ab792a6fe0f88973449eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Cuiaba\",\n      \"mode\": 33188,\n      \"size\": 1442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"309f877286fad7d01fbbae6bb1a64e23227688e1687a90b6ce67faaef5b0cb67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Curacao\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Danmarkshavn\",\n      \"mode\": 33188,\n      \"size\": 712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"087e39cd6f10b6944b68b1de557289ef33769467f1b29806b96a16cf8e438e6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Dawson\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c379fb9517c07d4df5cbd6aaa2ec4561cbe893ba0e8552d377947fe2b1ff9bf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Dawson_Creek\",\n      \"mode\": 33188,\n      \"size\": 1059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29d0245bc04dadcbb196a3b6a81bace1696451166a7417d5bb2a8610f37ec5ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Denver\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Detroit\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e668e3859786c92f462769f87d5bc4ef31b5d6646bbd1635b91007e2a03dbc6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Dominica\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Edmonton\",\n      \"mode\": 33188,\n      \"size\": 2346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92ac6208f1ef357787fcfce6a334990252189eb0b427b28bc60e21ab5e792b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Eirunepe\",\n      \"mode\": 33188,\n      \"size\": 690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07761278f5c58867c645625c9b819ea09e4703d76564e231979e48d6d2e0881a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/El_Salvador\",\n      \"mode\": 33188,\n      \"size\": 250,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63215b213a31505bfd545fd52b11214cb614f13f0f55911f414edb44286e7f8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Ensenada\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Fort_Nelson\",\n      \"mode\": 33188,\n      \"size\": 2249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7ce9a01cdd313d20352112430341c262e1b90182de490fc95c132daac118ce7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Fort_Wayne\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Fortaleza\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca3cd6cdd4ec5f945742cd72a91e539756e0ad2eac3dfa62afc21397061eea99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Glace_Bay\",\n      \"mode\": 33188,\n      \"size\": 2206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6af24e3b9f1240abb8618fac326ee3a1ecccd25d2fa4936b2a28b0b0880e550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Godthab\",\n      \"mode\": 33188,\n      \"size\": 1892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356cd2d4e74c958622b77385ae0509b5ea87e691f21207230f6fe1fa67e220af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Goose_Bay\",\n      \"mode\": 33188,\n      \"size\": 3219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0c06c6a1841cdc37bfb311c11caba1c974d0d6c27725c04b69657e7ca112a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Grand_Turk\",\n      \"mode\": 33188,\n      \"size\": 1881,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90848fabb8bcfdbb4e66f5a624c4e7fa88962f16f8b6005f527cd84abebfa574\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Grenada\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Guadeloupe\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Guatemala\",\n      \"mode\": 33188,\n      \"size\": 306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"795cc25e5ffe825a8b3d86eed98ad5f9bb9f6d152df2b624f0e2a63b17f0ee43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Guayaquil\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f52c0cff32100d797e64032c4ce19fa5a94b75b7678f1beb3c0cb549cdc00f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Guyana\",\n      \"mode\": 33188,\n      \"size\": 266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa4db9ef9c8a2902355de59b3693aa3dabd21e7a06054772bfcd754902e9342\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Halifax\",\n      \"mode\": 33188,\n      \"size\": 3438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627e18218c6f3c3f446c4970abe8164672e2a7ba94bcf841b1e06af5089b94ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Havana\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7871f875a8819f415c292519db1590556a0dc1a6ce691bf4f7af55e6716fb894\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Hermosillo\",\n      \"mode\": 33188,\n      \"size\": 454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec6eb21d068f1ca8e80a9e825206ad1b5a04b1e8abb2dd981c6c90b7686b8820\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Knox\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Marengo\",\n      \"mode\": 33188,\n      \"size\": 1731,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64bb87669a7c161454b283e5855e28de7655450680cc403eea0572e580eb2625\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Petersburg\",\n      \"mode\": 33188,\n      \"size\": 1913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3eb5dd510d677f9118ec4bca7892db4ed181722fbaf94ef9cb1a441718400321\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Tell_City\",\n      \"mode\": 33188,\n      \"size\": 1693,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6814c2b71389711819f44b98c880caf317c03a42064b2217103795114781a80f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Vevay\",\n      \"mode\": 33188,\n      \"size\": 1423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cf728ac267cce51bddf1875219bf0e800d5aaa17794dc2c7408293773f516e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Vincennes\",\n      \"mode\": 33188,\n      \"size\": 1703,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a9db38f7575f9e2a624c9466128927caef0eea7e9a3841679cd6eb129b019d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indiana/Winamac\",\n      \"mode\": 33188,\n      \"size\": 1787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2dc919207b8db95bd82aff68b8a498a6d3bec2c33220ba5381ebca171dcc095\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Inuvik\",\n      \"mode\": 33188,\n      \"size\": 1928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea64cbc0bf92cf88c8917222f11db8838f42e2d41360cd81bb93f669a2bc685b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Iqaluit\",\n      \"mode\": 33188,\n      \"size\": 2046,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb8797250b8bd8c3d09893b4f261ffb1bedd668869a051c8e2c80f6c0d63408c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"addb98caf3459bb75d6e14ed76aa66e642bead2d067e7fe81814a4f02cf13503\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"233f43f895b08f21cd28918fbdb9c22892511c0996ac6212e019c3e866aca455\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Juneau\",\n      \"mode\": 33188,\n      \"size\": 2362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8185913ee68f7ec72cd98efcee68d1b6bd0c304e303a2dc613b06cd97e6333c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Kentucky\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Kentucky/Louisville\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31e1152a8de9463bcef2b5db10415965b96b83a93bd940609bc390bab963f384\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Kentucky/Monticello\",\n      \"mode\": 33188,\n      \"size\": 2361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b87081e46bbe688816a7e03cfdc5b4efe10bd6b92cb5a780df6b0c86af4c1a37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Knox_IN\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Kralendijk\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/La_Paz\",\n      \"mode\": 33188,\n      \"size\": 257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f10b013aea85ad55c3b3f65d68fa09bba4abe7fb5311018698823f0ab909a88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Lima\",\n      \"mode\": 33188,\n      \"size\": 431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f514d5245abb9de7c35fabed4c4cc86f6c027548cd1be04cc84b122878e1ad3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Los_Angeles\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Louisville\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31e1152a8de9463bcef2b5db10415965b96b83a93bd940609bc390bab963f384\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Lower_Princes\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Maceio\",\n      \"mode\": 33188,\n      \"size\": 770,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3241ce8df0004a0cb5db2eb3800a3dfe770cc1d24d144fee27862c4dd7400840\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Managua\",\n      \"mode\": 33188,\n      \"size\": 463,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3c1f00bc879ee84e623d25252f1fb8ffd8cf43cd9c8b8bf12b6b5eda8045683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Manaus\",\n      \"mode\": 33188,\n      \"size\": 630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1213e7b97cfa580b4f9c728c34ffa64a6ab277b06b558893b299c20d3528e6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Marigot\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Martinique\",\n      \"mode\": 33188,\n      \"size\": 257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e087c3e4ae20234a08667adcf6ab4cd03ab3aeee7e035278f271ddb0b65cfff2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Matamoros\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4398d831df4bfcfd9bafa22ac35cd55dbb7dfd5f25c138452e8adf275ea11735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Mazatlan\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9340b719b250773262cec62e771d121105aed168836723dfc305e30bb04cfbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d50f245cf1eeb3650dbbdd45720ddc6b1c5e22aede7981f20b9efe2c7ac68c4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Menominee\",\n      \"mode\": 33188,\n      \"size\": 2283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ced580e74834d2c68a80a60ae05a0b715014bb2b4dad67cf994ac20ce2ac22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Merida\",\n      \"mode\": 33188,\n      \"size\": 1456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ecdcf4b29f7b439152b9e9b559f04d7d4ba759dd942c2fd685a4ee36798fc8d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Metlakatla\",\n      \"mode\": 33188,\n      \"size\": 1432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d091e1f411ccec6f2274317c53cc3ca45d6895f2c7497583e71ffca496716f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Mexico_City\",\n      \"mode\": 33188,\n      \"size\": 1618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88bc3fcb1a92ef053e0af4af9053ecbf12855fdf18f859b2a54d826dbfacb655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Miquelon\",\n      \"mode\": 33188,\n      \"size\": 1696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21fabc9c2cafd8eef46af9126040cced6ef27d648d73d48951178143e6bb006b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Moncton\",\n      \"mode\": 33188,\n      \"size\": 3163,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1300d5a93bb376cbf23a890a23ea05fa2b229486e7eb7d5959c7834260fbb7b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Monterrey\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89dadca852ebf52e4405c958132255c25fb195604d7df9b844bf50b48a0865d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Montevideo\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"550efc39d3e1c9e6909aa80a9d067f9355c47a874fcaf4f59302407ef6f968e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Montreal\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Montserrat\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Nassau\",\n      \"mode\": 33188,\n      \"size\": 2284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c999dbcc6c6045acbedf6fd48f5b70b20eb8d8b0bd9612d2bea88dc03aa9f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/New_York\",\n      \"mode\": 33188,\n      \"size\": 3545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa6dccc303352e1195c4348b189f3085014d8a56a1976c8e8a32bd4fedb69fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Nipigon\",\n      \"mode\": 33188,\n      \"size\": 2131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7100ca4bf3044211ff8e770dade20b683880f3965f146ebbdd72c644aaec7c37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Nome\",\n      \"mode\": 33188,\n      \"size\": 2376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d312bc797eb1b384ccfba0c40822d50b2e0abf37d5daa43dd3e255fdc7573b00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Noronha\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb4e968f415ed53e769108c9d5f9710e898716af74536d39b7077b0426f3960d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/North_Dakota\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/North_Dakota/Beulah\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f604eb42f0197f5edefcd6d43051a0b64e6e1327dbd2d3cfa94d0348b23e1fa8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/North_Dakota/Center\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08efea4af9a2b6a5ab25e86116cfcf4b93c16ba9b7b22f762d9cb3481ecf3ac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/North_Dakota/New_Salem\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5a43eb6776c326b1250f914f00e9e00e121b9b51f63665f90f245376da2017a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Nuuk\",\n      \"mode\": 33188,\n      \"size\": 1892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356cd2d4e74c958622b77385ae0509b5ea87e691f21207230f6fe1fa67e220af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Ojinaga\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a07ff8fe3ee3531f866afca0f7937d86acec1826fb3eaa655d54300ec22dc713\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Panama\",\n      \"mode\": 33188,\n      \"size\": 203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4fbba14653a3186f3c5b719f7b9bf7d8a5824401064cf6d508205592e55a9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Pangnirtung\",\n      \"mode\": 33188,\n      \"size\": 2108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b6a497653df9220c30a022d87ec2aa1320af9e51bb3cdc48756e72d770a6738\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Paramaribo\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57039b31a68b30ba0731916cffa7b9a1bbb52bf7650f7aa62052e89a8fc9edf6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Phoenix\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c013ecf82b6ed1dde235b5fc983fe9d23c8d56d610323f7c94c6ba3cd7b4564\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Port-au-Prince\",\n      \"mode\": 33188,\n      \"size\": 1455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0b60ad1c557c41596e0fcc7fc8b9b39444c78295b147cee495e29985a225da6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Port_of_Spain\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Porto_Acre\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Porto_Velho\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29f8daaa8fdca090df7145e69ecdc936cd3fedacea0b723f5c93da2a8c80f976\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Puerto_Rico\",\n      \"mode\": 33188,\n      \"size\": 255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eee44e1cb7ac885fdd5042815c548bcb6ca84cff8de007e52b53c0b9ad53f19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Punta_Arenas\",\n      \"mode\": 33188,\n      \"size\": 1911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33e26b3c8bf3dd7100151d3c1842ae9aa8ef69b15f961aa2eee2e1dc3508c6e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Rainy_River\",\n      \"mode\": 33188,\n      \"size\": 2131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a7b8dd4c968de31fe35fd9fe075fad8afc15892067119f638b5aef0d2288d83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Rankin_Inlet\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3ae38ccfa3091ebd8037fd5e1fd2715a72008932f94526a15fb1aa7fae722dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Recife\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cebb6d30c20b00bc437d4e0a8c6a0c91db120a3aef2c28bc56960f682b3fc30c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Regina\",\n      \"mode\": 33188,\n      \"size\": 994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"929d07457407529637626d09f5ca975b4f05801f35d0bfac4e3b0027efee6776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Resolute\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c529141807704725b059187b9f458080f911b6dd4313e74139d2c7dac287c901\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Rio_Branco\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Rosario\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Santa_Isabel\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Santarem\",\n      \"mode\": 33188,\n      \"size\": 632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78440d01f4c5b7c13d1dbe6500ba71188efdcf90069979c80a224d831c8bd97b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Santiago\",\n      \"mode\": 33188,\n      \"size\": 2538,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b83e4129763ef7a22be3fba68029b4ecb6f14a360112498446d8c89640f420b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Santo_Domingo\",\n      \"mode\": 33188,\n      \"size\": 491,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adf349e4c7314aaa699c4893c589b077f6dfa7d9a54ea9eae459658f9af41dc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Sao_Paulo\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4090cbdfa5168012d460585f7eab9302f8848cca0419d73cf03993ef12c08c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Scoresbysund\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c668772d49326cde3798d158089d2f9ced43788f904360a6dc67a53868b28f96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Shiprock\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Sitka\",\n      \"mode\": 33188,\n      \"size\": 2350,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba79b89ecd8e64dba4119f2c5af2373167557c4bc71b7b134ab252e0b7485fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Barthelemy\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Johns\",\n      \"mode\": 33188,\n      \"size\": 3664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b960a58d6d3f6a272707f941f55b15b8ba3fd0fd55f8680ea84af6b1e98bae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Kitts\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Lucia\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Thomas\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/St_Vincent\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Swift_Current\",\n      \"mode\": 33188,\n      \"size\": 574,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b6029f04ac07c382e20d315da7a72d9204d813ef83585f042562e7f6788a78f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Tegucigalpa\",\n      \"mode\": 33188,\n      \"size\": 278,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd295a9cc689a966786b6e0ec9d0f101796ac8b4f04a6f529b192937df3a2115\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Thule\",\n      \"mode\": 33188,\n      \"size\": 1528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a474a1fc764343470d310369cdbf6d7007ea611116e25bea68f60ddf5a6cd68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Thunder_Bay\",\n      \"mode\": 33188,\n      \"size\": 2211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aef45e1474369f52e1afb1cd7f312e9f035ca13686092cf2351a353133e1cee6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Tijuana\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Toronto\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Tortola\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Vancouver\",\n      \"mode\": 33188,\n      \"size\": 2901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"460182c93960fd636820b1b43cfec871da4f0197556bb6bdb2fa527b637a4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Virgin\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Whitehorse\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4afd69d844499d8bf3bb276d3ecab98ac10cddb21c180b6717e5635485ccf38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Winnipeg\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77be5c08f6f8ebe5330fb86a60c4447ea2549620609f4ef6a7a7a68d1a12d9d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Yakutat\",\n      \"mode\": 33188,\n      \"size\": 2314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f189f49873b1392989ecbde19d19d33cd6c16953bf7e6b927ca2f1040f7106\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/America/Yellowknife\",\n      \"mode\": 33188,\n      \"size\": 1980,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3140de7fe4136fb4920e8bb8ed8d707256e78c672edfce1657ae22672de68768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Casey\",\n      \"mode\": 33188,\n      \"size\": 311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"008325b0ed1b879047cfd030ccd24cb2fdaaeecdeaedc273f77aaa888ade3136\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Davis\",\n      \"mode\": 33188,\n      \"size\": 311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8dec77b2a23389d30c680a6fb0241cae32f1c0c71bf28fde1679bdb035a2939b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/DumontDUrville\",\n      \"mode\": 33188,\n      \"size\": 216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86d1e72a7cad1d9817f57d456e39184b749436a02783a272f2109994addfbd55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Macquarie\",\n      \"mode\": 33188,\n      \"size\": 1543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edccaab42adcfc7fa4872ff22b63fdc128a3354fa7d443f895b8f7068ced788f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Mawson\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afa4aec36d9ff91992970b4c645e038810f25d8e58118a56568dbc9226704543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/McMurdo\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Palmer\",\n      \"mode\": 33188,\n      \"size\": 1432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa3fc7dd1b1f1599bf71ed328ae5dba81e09ac3e3a914689e7ea5ff3adc28183\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Rothera\",\n      \"mode\": 33188,\n      \"size\": 186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e67d9eb78b53d3a415865402758eca495c69c347ed0ca7d5a0238c5f7ac01d8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/South_Pole\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Syowa\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aef765ec9b3fae2cedbbaf2b525505008aa24f2f4e06abae3f770a9677387879\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Troll\",\n      \"mode\": 33188,\n      \"size\": 1176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d8bdfe767292729981993a64fd8a2f745b24058c8bcbcf21bf3b0b6d5075c2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Antarctica/Vostok\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"903d2010d8a06be20cd57000e89d92e6f8307dca3810294215a58cd7c7c863e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Arctic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Arctic/Longyearbyen\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Aden\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Almaty\",\n      \"mode\": 33188,\n      \"size\": 1031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4401628c6d2a36430efdddec3d9aeb9ff091e85daa21d0783298cddfe70c38c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Amman\",\n      \"mode\": 33188,\n      \"size\": 1877,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba18a1f823f77e478e7030eeb82ddd71a5f3fae6efdf56325b7776304912da08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Anadyr\",\n      \"mode\": 33188,\n      \"size\": 1222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4b88045d6624e21cb233c7c6226edee88afb63e0ca8d4e3df580d74a6c8a34c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Aqtau\",\n      \"mode\": 33188,\n      \"size\": 1017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2e79c79371b0c8601cc8da9dc613145b60721e9c574310ed4b7fa9ae9baa30b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Aqtobe\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ccd2ab0718fc8a637bb44576e4ca3ff267151cc4081dc697e69ebd426dbe4c1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ashgabat\",\n      \"mode\": 33188,\n      \"size\": 651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46284acf00fcee991886ee879f507f970bef4105a05d5e330736a02b329d3375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ashkhabad\",\n      \"mode\": 33188,\n      \"size\": 651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46284acf00fcee991886ee879f507f970bef4105a05d5e330736a02b329d3375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Atyrau\",\n      \"mode\": 33188,\n      \"size\": 1025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44812ada1ccc49ab42dd04e3c5ebe8f9f592682765b0e400972662c34ef6e931\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Baghdad\",\n      \"mode\": 33188,\n      \"size\": 1004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"942ba9632d564f1e29f60e75a7edf598d3b001515ecdd7d403b147e5bf703cb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Bahrain\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f15d455b503a1d9b99a9bc15f27e0d87d9bf3cac8100709f6a3140e63bab56bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Baku\",\n      \"mode\": 33188,\n      \"size\": 1269,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8efffa197f6ee0747d60f4b37db8823d2f712f3df7350bfb40461641d9e7ca31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Bangkok\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Barnaul\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b556552d881c7729f21a4fb10c5e75e3885afc08e539461d40d6e4e359dcdd7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Beirut\",\n      \"mode\": 33188,\n      \"size\": 2175,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abdfa509ed982455873c1035962d8642ae8b88ab75f7f1a9a4cf7eea5ce120ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Bishkek\",\n      \"mode\": 33188,\n      \"size\": 1045,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b449cf64ad7d46bae4196787f47012bfd0899aafd7cac77f8794dd7730b41ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Brunei\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd14c89f40eaece7f87f9679ebd6fdc23356c1ee31da031400c59806044ca4d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Calcutta\",\n      \"mode\": 33188,\n      \"size\": 312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71d7bc10d52c64f59eae8eac701c1b156bbec3fd9fe750970bed15e9b408fa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Chita\",\n      \"mode\": 33188,\n      \"size\": 1257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3bc537b6c3f62fbcd134ce4c8e58c351a5770b9216f2483f1e36d8ec9035b3bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Choibalsan\",\n      \"mode\": 33188,\n      \"size\": 991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ea08272fe78ef15058b5821d053e907ea937db9bb6ca8f71cb9997a44c64315\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Chongqing\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Chungking\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Colombo\",\n      \"mode\": 33188,\n      \"size\": 413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60108a5aec08236b5e9132d33de72649cdf01f854c86d01a8bd609d820b569ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Dacca\",\n      \"mode\": 33188,\n      \"size\": 370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b17631c1fb3033ffde15391d2fbec4e3d29b846fd2cfb089898c6b61308eb7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Damascus\",\n      \"mode\": 33188,\n      \"size\": 2320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f42d5702ee52944dde43071569de645a5d668a385c4a2e0cd8aa43d39d2ea21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Dhaka\",\n      \"mode\": 33188,\n      \"size\": 370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b17631c1fb3033ffde15391d2fbec4e3d29b846fd2cfb089898c6b61308eb7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Dili\",\n      \"mode\": 33188,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f691df244d73613de758975adca5454ee9a91821b3f4382ea9b793ef04b1fc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Dubai\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c19684fb4943773d86c43f78c7ad7b46ae7557a8ae9ed16508342bd319678a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Dushanbe\",\n      \"mode\": 33188,\n      \"size\": 621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e832524a0d020a34015e423182bec05920c1e73b4149aab1bb31b7479a0a8f4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Famagusta\",\n      \"mode\": 33188,\n      \"size\": 2042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a3e66759c060ff5d9e338169781678161df5b9acd9aec6146f1d4d3cfd9030b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Gaza\",\n      \"mode\": 33188,\n      \"size\": 2351,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c1013e60b7005b6909a9ed2eac9490f682ed99367023eb7f324f73f4958b66b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Harbin\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Hebron\",\n      \"mode\": 33188,\n      \"size\": 2379,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c591e178b7f704a365468e6e933004b798303e100142f6d940bd8e45a061903d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ho_Chi_Minh\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"013ffccf1a05a9e7b509b55f6b949569dd9e676bfcce10c886fffe59745440e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Hong_Kong\",\n      \"mode\": 33188,\n      \"size\": 1231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"680a46ee9866bd0c8435fef70694663c1e8ca2ba1e50ff2979ad62f27295707a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Hovd\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdc65f913f2b67cd1d23286944546c42fabb64720b78aaf32f88605a1943689a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Irkutsk\",\n      \"mode\": 33188,\n      \"size\": 1276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77ed8a38a9f3e4a65a5ded6a846089c4c8a60eb245c476f7ee20d62780303eef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Jakarta\",\n      \"mode\": 33188,\n      \"size\": 392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ea1c3e53a0d3f40cb6d7724f1bacb4fca1cf0ae96d9ab42f00f2d30dc0dee3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Jayapura\",\n      \"mode\": 33188,\n      \"size\": 251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa24de2e83f471878b8e10ecd68828eb3aba1f49ce462dac7721661386eb0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Jerusalem\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kabul\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"386b98b95b19bbec52c6d8f334e04a178f4f99f2b8a1cea33c142375668d7227\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kamchatka\",\n      \"mode\": 33188,\n      \"size\": 1198,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a45d587c7134607cb6feade6af9a04203c38b1ed481f7c7ce8eb10e7cd972cac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Karachi\",\n      \"mode\": 33188,\n      \"size\": 417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4b2a68ad79efadecf52f333fa19cbaa5dd084cdc9bf96ab8b65a75c559a370\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kashgar\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ae8868df5441ce4ac33aaed777f5ea6883eb95050b7d66d1e5ec5648c9e3fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kathmandu\",\n      \"mode\": 33188,\n      \"size\": 238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c557b86c5f0fdd19d105afbd38bd9daaad1cd075e9efdbe80547ddca85ae5ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Katmandu\",\n      \"mode\": 33188,\n      \"size\": 238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c557b86c5f0fdd19d105afbd38bd9daaad1cd075e9efdbe80547ddca85ae5ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Khandyga\",\n      \"mode\": 33188,\n      \"size\": 1311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0169f2ad82832f6466984cad9cc673fb4098ee15e14b21521ce54f37a3fa6de3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kolkata\",\n      \"mode\": 33188,\n      \"size\": 312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71d7bc10d52c64f59eae8eac701c1b156bbec3fd9fe750970bed15e9b408fa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Krasnoyarsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9122ec3df9d2f1e1767edfbc9cce49e7cff95491cb9de234c4588f985eb361c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kuala_Lumpur\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"268d3cc29dae9854fea1b9109da2873602c48806994d3f3df0b9ca9863fcf59b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kuching\",\n      \"mode\": 33188,\n      \"size\": 521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d0c68d2cddcf9431056b27b884c89951de456a484fdf96a2b10c78faf195bd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Kuwait\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Macao\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc423d28d8ba83fb0ba6984472c46dc83c014dd4876b59f6c8e2a4d8761fc585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Macau\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc423d28d8ba83fb0ba6984472c46dc83c014dd4876b59f6c8e2a4d8761fc585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Magadan\",\n      \"mode\": 33188,\n      \"size\": 1258,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a32f022b2aa9b370f41866047c28b6d96007bec7e7f05e4fd1a2f06111057e8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Makassar\",\n      \"mode\": 33188,\n      \"size\": 288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24fac901695ef43b73fa8b3cd9e4bf893ceb757c5200b6628ae6a0fc70f01956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Manila\",\n      \"mode\": 33188,\n      \"size\": 359,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01cb854c5033bef7324b3102f4362206e1a792d703a478fe090135943b180392\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Muscat\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c19684fb4943773d86c43f78c7ad7b46ae7557a8ae9ed16508342bd319678a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2aa2a3f77a43b7558a7508a6cd6c50fdf7d991f9d64da5948fd9003923b1d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Novokuznetsk\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45df208266ce41dccdae6a47b6b78235a2e70c4eeb69b28e30125e03e7b9e0d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Novosibirsk\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53f555c078378d726db6d203c96bee7efc9b138c10cfd634f750b28cb6212ba5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Omsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e32bfb976274657a892f5918b3f42e56c838dac040e06ac60c2d36318c80fd49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Oral\",\n      \"mode\": 33188,\n      \"size\": 1039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ddd665f81f9ffe7fa3c7540f5065ddad72274da22913885eefe86951a857998\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Phnom_Penh\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Pontianak\",\n      \"mode\": 33188,\n      \"size\": 395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2516ac2bc84fe6498a50bc8865ec00e3499b38f2f485403cd5028578a98d1fd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Pyongyang\",\n      \"mode\": 33188,\n      \"size\": 267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a108bfd54c6c22fbc67177c281c1058dfb1f00f40803ffc04fda5f41d4ba6505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Qatar\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f15d455b503a1d9b99a9bc15f27e0d87d9bf3cac8100709f6a3140e63bab56bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Qostanay\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b763af98dc579384866d60e3541d7f87c10b492310a4bdd3f927d28d091edeca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Qyzylorda\",\n      \"mode\": 33188,\n      \"size\": 1077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e116692a053d3b100258a742dd5577df8ae1e262d0f23830606c87b80031d4a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Rangoon\",\n      \"mode\": 33188,\n      \"size\": 297,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b4605825adbae3c7136f3f055d7cbac76faad62703516eaf94fc8d10e1df3ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Riyadh\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Saigon\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"013ffccf1a05a9e7b509b55f6b949569dd9e676bfcce10c886fffe59745440e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Sakhalin\",\n      \"mode\": 33188,\n      \"size\": 1234,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6af67dd853ea20ec92aa39fdd647b70ec329606e7565536030dbdd70f062148\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Samarkand\",\n      \"mode\": 33188,\n      \"size\": 619,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd928b56ff2b6fdf1e28c198d8871e87979473109dfc395a51d8aaed0efb5924\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Seoul\",\n      \"mode\": 33188,\n      \"size\": 659,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3673a9439d49ea97b47c9fb28433c6d41c469ca03ad320768f1514d075647c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Shanghai\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Singapore\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6929fde43ffc48bbac4081b31bbf7fd42643b3c26fadf322bdeadeb23cfc748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Srednekolymsk\",\n      \"mode\": 33188,\n      \"size\": 1244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35c545e24d61a31f5fd4fa712d8b6cc09ecbdfddee10e5b859d6b29e57d98806\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Taipei\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25cfd02bc847bdcb11e586445ba886a76315f1f9be86f7e74944a6e8e8644543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tashkent\",\n      \"mode\": 33188,\n      \"size\": 635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8674eb501cd25c540258e94006ce151f91f653849e800aa97986551b89ead688\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tbilisi\",\n      \"mode\": 33188,\n      \"size\": 1080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc88efdf57da66aaa71c15d8fbc36d87242adca776e103ddd5531aa45ca21177\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tehran\",\n      \"mode\": 33188,\n      \"size\": 2624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29fc1861f6e088decab370c3ef2c090d0c3fbdea50b78c2d3158ddaf001b8088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tel_Aviv\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Thimbu\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e54c4d565a4be5f34209ba351c7aadd1071dccf8a0380d69e06e936a425203a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Thimphu\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e54c4d565a4be5f34209ba351c7aadd1071dccf8a0380d69e06e936a425203a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tokyo\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"046bb09bc08554ef8a54dc05685d0eab10e04c692f6320b6091b6a6f07214c83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Tomsk\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1142db40b91678b4ab3c2935346f6f0bce6a84353392a1ab97dbeba0ee1582d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ujung_Pandang\",\n      \"mode\": 33188,\n      \"size\": 288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24fac901695ef43b73fa8b3cd9e4bf893ceb757c5200b6628ae6a0fc70f01956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ulaanbaatar\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17a31d0ea8eaf0d1484b54e53d6803eaeaa832740d521a340e1d5c073de97e22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ulan_Bator\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17a31d0ea8eaf0d1484b54e53d6803eaeaa832740d521a340e1d5c073de97e22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Urumqi\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ae8868df5441ce4ac33aaed777f5ea6883eb95050b7d66d1e5ec5648c9e3fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Ust-Nera\",\n      \"mode\": 33188,\n      \"size\": 1290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab0edbe8871813e11548d34641521878aca12634a44683945d24ef85016bd0aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Vientiane\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Vladivostok\",\n      \"mode\": 33188,\n      \"size\": 1244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32eb6e1405aa048e6cba3396d4b09ad04ed05c239dbcb054f82e4dbbd2dbbd31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Yakutsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"545036a8cb48068d5f6f98bd28eb90bb6c25d3136b58f01486b875780519208e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Yangon\",\n      \"mode\": 33188,\n      \"size\": 297,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b4605825adbae3c7136f3f055d7cbac76faad62703516eaf94fc8d10e1df3ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Yekaterinburg\",\n      \"mode\": 33188,\n      \"size\": 1281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8819eff29a90ad2c0d3588f56d6e974d99419e80104bfc9313274f0a33e0b590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Asia/Yerevan\",\n      \"mode\": 33188,\n      \"size\": 1213,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e456011e9e0d8c1958c17bf34116fe89a3239028010e7db61ae46012c8f2304\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Azores\",\n      \"mode\": 33188,\n      \"size\": 3493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3dfcd9c77d1e2a49e15c87aff9e43f0d5283a532b4bc6c7afa22fa14fa0c377\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Bermuda\",\n      \"mode\": 33188,\n      \"size\": 2004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"462d205904f32dcb79317f83ddb4dea1548d51849217dc3e42ba17c3cc7fcf08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Canary\",\n      \"mode\": 33188,\n      \"size\": 1911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4617cb1aa75514003f181908e9ccfc1d3d062ef22bb0196867dbe530ec2e1416\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Cape_Verde\",\n      \"mode\": 33188,\n      \"size\": 284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7a81342ed5884f34fdc07e6ebf8f0f322e41ba3e2d399d7f516b4d28771350b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Faeroe\",\n      \"mode\": 33188,\n      \"size\": 1829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b1a5769f8ffa2ec29bf298dffd7fb324e625e36fc527c14bb66b6520e6f76a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Faroe\",\n      \"mode\": 33188,\n      \"size\": 1829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b1a5769f8ffa2ec29bf298dffd7fb324e625e36fc527c14bb66b6520e6f76a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Jan_Mayen\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Madeira\",\n      \"mode\": 33188,\n      \"size\": 3484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24c616780589fb6a7e22913e3402522517ba4a7460738ccd38f1a3a0e4a21f40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Reykjavik\",\n      \"mode\": 33188,\n      \"size\": 1188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cdcea6aa1eed8276d3f6620e0c0ffae9cfcc3722c443ea6ba39147975eafaa3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/South_Georgia\",\n      \"mode\": 33188,\n      \"size\": 181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f745dca3964c6ae3e8b88166e0db6df487ee8f6e6ad7fb1ac3ad4e6ab2e0a361\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/St_Helena\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Atlantic/Stanley\",\n      \"mode\": 33188,\n      \"size\": 1251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57ee27fac7d72ba2c34725702e5876aa27462a09ac4b841b40122afe103a4c41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/ACT\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Adelaide\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735476eef81652d7189574f8b7a11c942a986aba24b6ddc644fbebd1eb49245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Brisbane\",\n      \"mode\": 33188,\n      \"size\": 452,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74ac9f5d1d15ef0f6bd9e69c687b9047fb1f749c59279475685721f574b427cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Broken_Hill\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6451675d3b5afb8572e2cbb4d381730da23daa3bfcb57601fe6f815985237db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Canberra\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Currie\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"543c7afaebfdd907f8d637efce48bf41c407da72658b8e9c12f7208a54d1d84a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Darwin\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6172d8687a78608d884b04903d36053bdfb56433541930b2a42b405cbb62dc0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Eucla\",\n      \"mode\": 33188,\n      \"size\": 503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42c7f9c44cf8dbfd564a7539b86278d98285476578bef4bfc01cc3fc61ebb2ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Hobart\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de1bb5e82f86774e70082b906462e02a062238e5c4d76149566e21b1cb31b23a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/LHI\",\n      \"mode\": 33188,\n      \"size\": 1889,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09626975ee86238fd5f85bc275eafad83bc696709d78144cc0bd4ced75acaf2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Lindeman\",\n      \"mode\": 33188,\n      \"size\": 522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"663df35f044a15c743b9716e183595147d0c1838e99148a9473623ac82076bf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Lord_Howe\",\n      \"mode\": 33188,\n      \"size\": 1889,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09626975ee86238fd5f85bc275eafad83bc696709d78144cc0bd4ced75acaf2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Melbourne\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"272c1f13d01e35e6a58855cbb53878795451928adbf0c8ca2982b79db1f450a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/NSW\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/North\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6172d8687a78608d884b04903d36053bdfb56433541930b2a42b405cbb62dc0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Perth\",\n      \"mode\": 33188,\n      \"size\": 479,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ecd4a085ca9ec5b7903016c2d4e311276024a2bcd0c35d40281658e48421f93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Queensland\",\n      \"mode\": 33188,\n      \"size\": 452,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74ac9f5d1d15ef0f6bd9e69c687b9047fb1f749c59279475685721f574b427cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/South\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735476eef81652d7189574f8b7a11c942a986aba24b6ddc644fbebd1eb49245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Sydney\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Tasmania\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de1bb5e82f86774e70082b906462e02a062238e5c4d76149566e21b1cb31b23a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Victoria\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"272c1f13d01e35e6a58855cbb53878795451928adbf0c8ca2982b79db1f450a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/West\",\n      \"mode\": 33188,\n      \"size\": 479,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ecd4a085ca9ec5b7903016c2d4e311276024a2bcd0c35d40281658e48421f93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Australia/Yancowinna\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6451675d3b5afb8572e2cbb4d381730da23daa3bfcb57601fe6f815985237db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Brazil\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Brazil/Acre\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Brazil/DeNoronha\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb4e968f415ed53e769108c9d5f9710e898716af74536d39b7077b0426f3960d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Brazil/East\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4090cbdfa5168012d460585f7eab9302f8848cca0419d73cf03993ef12c08c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Brazil/West\",\n      \"mode\": 33188,\n      \"size\": 630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1213e7b97cfa580b4f9c728c34ffa64a6ab277b06b558893b299c20d3528e6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/CET\",\n      \"mode\": 33188,\n      \"size\": 2102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c0029045f6f80bc5a84f1bb8ed36230454759c54578eb9a8c195d14f442213c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/CST6CDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44e8b569e60027647f9801a33d0b43be0106a6d3f6cd059677e0ed65c9b8b831\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Atlantic\",\n      \"mode\": 33188,\n      \"size\": 3438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627e18218c6f3c3f446c4970abe8164672e2a7ba94bcf841b1e06af5089b94ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Central\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77be5c08f6f8ebe5330fb86a60c4447ea2549620609f4ef6a7a7a68d1a12d9d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Eastern\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92ac6208f1ef357787fcfce6a334990252189eb0b427b28bc60e21ab5e792b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Newfoundland\",\n      \"mode\": 33188,\n      \"size\": 3664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b960a58d6d3f6a272707f941f55b15b8ba3fd0fd55f8680ea84af6b1e98bae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Pacific\",\n      \"mode\": 33188,\n      \"size\": 2901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"460182c93960fd636820b1b43cfec871da4f0197556bb6bdb2fa527b637a4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Saskatchewan\",\n      \"mode\": 33188,\n      \"size\": 994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"929d07457407529637626d09f5ca975b4f05801f35d0bfac4e3b0027efee6776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Canada/Yukon\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4afd69d844499d8bf3bb276d3ecab98ac10cddb21c180b6717e5635485ccf38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Chile\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Chile/Continental\",\n      \"mode\": 33188,\n      \"size\": 2538,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b83e4129763ef7a22be3fba68029b4ecb6f14a360112498446d8c89640f420b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Chile/EasterIsland\",\n      \"mode\": 33188,\n      \"size\": 2242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d344955a3a8dea47b50a72d2af7fde01a6a27365bef0fefb2c11429a4f5dfca1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Cuba\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7871f875a8819f415c292519db1590556a0dc1a6ce691bf4f7af55e6716fb894\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/EET\",\n      \"mode\": 33188,\n      \"size\": 1876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bf6d2669ab45c13a1c9be47c351972feb671770b90a61d9d313fc60b721b2b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/EST\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9e75f112a498ff00344551c3c5c4a62bd15d5c218ee951f4363ab218c5d88eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/EST5EDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79ce27e03a2752091e8a49cc7e7ccc9ac202d6c52dd5d224571fe82262fbeec8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Egypt\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"279bbe1fa62da67387c63593b60bb655252ef5c8f189cf43469087740af2b4fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Eire\",\n      \"mode\": 33188,\n      \"size\": 3543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff19972d561b3b6a9bdb0ec69a3ed3b59ca5ccd1b14929e29bf86d757255eec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+1\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35d004edb2a0b1137ae1ea3659ef8e95a753330f0713fc94929d0f79d8021b07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+10\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4762603f3f51c0d5063ea549f9a578b7ebf26e47fd7109a6e34495ac3e09b2ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+11\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a23521d6e93326291dbdacf2857f8a78970bef3dd93a53557da4cc2e79c36ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+12\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec7046f7e41252f839950ce04e3f20e41ba228e678aae2a45b5b050ba990e626\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+2\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21319b8c2634a8349e84c3bef422998f6dd4f79bad91f79fa38145c1f6b694dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+3\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7861defa0a8bc5e0ee58d8a7a993ac22950e3fed608c9532c680b74ef6cc67f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+4\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f0ab77c5beca68231484090c38ecc1ce211b135511d5431dc1994f8a2580c89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+5\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be7cef32cf0094520b344fc461bc28747e617d6043b8be0b0871e87225ee8568\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+6\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d285eec873a91b2660ff29816304693056ee61ac1e9bd3485e26c4bcc067e041\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+7\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"631be5659ae83739e1056e088289b642caf4d07be5887f74c6cc954e2b0e9e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+8\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0ede5d811e0d8b283b18b80aebe6ce617267664ec313fc5bf01e2880a8c4229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT+9\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6aab552f947986b00b2d43ff28a3257ab7b88967322b9ce067e45c5ea96cc014\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-1\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5f7f0682e71000de343fce27f2e8cff9e37e50cb064bf0f61245dc7ff6806ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-10\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fdcfd00c1be46329891da92b46f49258b35c09eb9e1103e3789a3d58338eb78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-11\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4439c8a7d5a8c87c47b7a81bd2e9534c8c676f610d4038fdf3b3951089a5db91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-12\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f0c2c21cec4020ec3116c038ca9ff5e5a9e863ddb7fc0beba7136c321b05851\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-13\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c4e6bff6354406378f2bdb165fae025fa100fe8c7d76c6cfaabb716f6f096ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-14\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4685f92efa5bbdb625dd8d6454a340af8ac0510308b6b66847ad5f7bc3c4fc84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-2\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"530335b26ac0306edc8f0683a830bc1e7f5111ad228df4b74c197d2cb9c31387\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-3\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a59e1e4a707222ac22fefb3a6dc495cef266872a94d51e5ca862ffde74ef0c4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-4\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d6471f8835da5e7906f8220dd9674b664573fee650f0a28b5ab51aa54a4524e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-5\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33a439130048c8b6400ad082b2e4011c7b85fafe9171e13110aa86f266bedfa4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-6\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2ae16bd9a3a9a75788ca13a281bcc39567c93aaf5ad5402fcbfebac473b6cf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-7\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0e37d9bf496f375b7c024e81b6ae5943ccbace0ffbecb684d8bd1847c5cb93a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-8\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ec67811fbce13ee23123eee60791be8cb5f9c84451ae0d8297738af9b7f0cca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT-9\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16ed57cd7c3577fdc22d57683841e922b208a535e6125e686be4f8702a75f485\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/GMT0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/UCT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/UTC\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/Universal\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Etc/Zulu\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Amsterdam\",\n      \"mode\": 33188,\n      \"size\": 2949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a813ac6b8d1b68a7960242cae5325a2269fd1c791b203f8d22f2dfa3b61ba87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Andorra\",\n      \"mode\": 33188,\n      \"size\": 1751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add5505c473225e33a884a02105610a9b95003f429195624b953c18f771317af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Astrakhan\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a027561f493c02a04d699903a08e9e78ac76eb3a719c4749d9ae9480418baad8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Athens\",\n      \"mode\": 33188,\n      \"size\": 2271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"799090551202c0b8417f836facf75049573dd1c27b5e6adeb584fcc414051139\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Belfast\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Belgrade\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Berlin\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eb93dcba603d528fdf536160ef6911c16f834afcf88ce23a382b97ff28319d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Bratislava\",\n      \"mode\": 33188,\n      \"size\": 2338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7290e2da43a8b82b3c46ac2a05e072a8cecbf8516e5c286791dbdd68a761d205\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Brussels\",\n      \"mode\": 33188,\n      \"size\": 2970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11497c2fd62834d7c1ab568fb47e5947a7f5a63378dc723d7f73ccab21da5342\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Bucharest\",\n      \"mode\": 33188,\n      \"size\": 2221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b3a0017333b2f466e59c8ac3dc0cf7aa4f0a4608040a3180f752b19d6a93526\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Budapest\",\n      \"mode\": 33188,\n      \"size\": 2405,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b67f2c4690a87f294ea5d35ae3967c8aa8bde227aeb36c3877285e4e94a17418\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Busingen\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Chisinau\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5749f01c78d0c2fd50d0dc2280c1957ce0419edbfc7c4073c67e6da78153d8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Copenhagen\",\n      \"mode\": 33188,\n      \"size\": 2160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2d9a359ef02d2afe293f429c4fd60fc04fbf8d1d8343c9b224dcfc116c011a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Dublin\",\n      \"mode\": 33188,\n      \"size\": 3543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff19972d561b3b6a9bdb0ec69a3ed3b59ca5ccd1b14929e29bf86d757255eec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Gibraltar\",\n      \"mode\": 33188,\n      \"size\": 3061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c79088f67ba5d3fa9ad989bd573bfdef0e86c89e310ea70bc3e01e14dca1075e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Guernsey\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Helsinki\",\n      \"mode\": 33188,\n      \"size\": 1909,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed7d89fae1fb40a9582edd7e03ed02d7fe81ba456b9c1ed8d6ee5f0b931aad45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Isle_of_Man\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Jersey\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Kaliningrad\",\n      \"mode\": 33188,\n      \"size\": 1532,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78018b1f78b60635b744bc5d78ca209f87c184a634ffe11510b3dfe885eed165\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Kiev\",\n      \"mode\": 33188,\n      \"size\": 2097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"242912df3212e0725ded4aab25fd869c52f13c3ce619764a883adcbbd937afc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Kirov\",\n      \"mode\": 33188,\n      \"size\": 1167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a44267313cba43fb671622af5b17cda285def184f6121e8ec6007164643e3c25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Lisbon\",\n      \"mode\": 33188,\n      \"size\": 3469,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bbe65d4ff3394ffa1b4ae6fe2296e333f55bad0ae49ca6717b6076e53490ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Ljubljana\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/London\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Luxembourg\",\n      \"mode\": 33188,\n      \"size\": 2974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90b76259274c78a40f34aa5b58545b5409edfbba2fd08efa1b300896cb4062ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Madrid\",\n      \"mode\": 33188,\n      \"size\": 2637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74103ad1e48f71f4cd9b6d1c03dcd97b58d87bb8affb02b1d6967b204036ebd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Malta\",\n      \"mode\": 33188,\n      \"size\": 2629,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c4134c8d37bd159e31fd739e8b1b8203a9f3023788bd9c83b8109e361eee5d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Mariehamn\",\n      \"mode\": 33188,\n      \"size\": 1909,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed7d89fae1fb40a9582edd7e03ed02d7fe81ba456b9c1ed8d6ee5f0b931aad45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Minsk\",\n      \"mode\": 33188,\n      \"size\": 1370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c82aa831a68fec1c918d23393d795fef9dbf4d0948791bcba6ba09f45b3826c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Monaco\",\n      \"mode\": 33188,\n      \"size\": 2953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c723359888417b86a66a609ffdd0becf81673cbb3e8b011131088b4d26f6bcd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Moscow\",\n      \"mode\": 33188,\n      \"size\": 1544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02d55516d0f9d497998260b4f129aee59867b77a920ba2ca0c58b15ec8588e7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2aa2a3f77a43b7558a7508a6cd6c50fdf7d991f9d64da5948fd9003923b1d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Oslo\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Paris\",\n      \"mode\": 33188,\n      \"size\": 2971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735b08e2737de2b47e79f596f3574b5a9e9019e56d2ead0cdc17c0b29e84a585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Podgorica\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Prague\",\n      \"mode\": 33188,\n      \"size\": 2338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7290e2da43a8b82b3c46ac2a05e072a8cecbf8516e5c286791dbdd68a761d205\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Riga\",\n      \"mode\": 33188,\n      \"size\": 2235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79d10debbaa2743458d0dec1fb71d3c576cea80d245f84819da82a25d93c1401\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Rome\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Samara\",\n      \"mode\": 33188,\n      \"size\": 1253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52278e6f22bf900faeda4266078cfa7fed25cc1d5653bd345cf3090fde6e9114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/San_Marino\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Sarajevo\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Saratov\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29ab2a05f63412656a143515fe57218a8e19b9c916dfd05de15a87afcc0d9849\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Simferopol\",\n      \"mode\": 33188,\n      \"size\": 1490,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1ee6f714fd88fd61fef6df54f95abacb80dd3036c25e9a10708fec9b11c34cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Skopje\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Sofia\",\n      \"mode\": 33188,\n      \"size\": 2130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16813fb30f2ebb782a806ce0664014ddfbf921890d32ec3d1398bd182bf9245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Stockholm\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b242f9e3d8150663bfaf417fe7d209927fc299fac487789b70841956c35335\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Tallinn\",\n      \"mode\": 33188,\n      \"size\": 2187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3c4ba916c25500c709c56395c040abad62a834fafaf5163a89974b7f66b019a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Tirane\",\n      \"mode\": 33188,\n      \"size\": 2098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62dbc606a32a5f50ceca86c6f96d088ea689bced60a1623c986f045cde9c730a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Tiraspol\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5749f01c78d0c2fd50d0dc2280c1957ce0419edbfc7c4073c67e6da78153d8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Ulyanovsk\",\n      \"mode\": 33188,\n      \"size\": 1281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cfe87e108465369f14dbf5f8eed9285028f6500c09d06cc3e787be94c55cb91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Uzhgorod\",\n      \"mode\": 33188,\n      \"size\": 2103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"098575b4ec6599758c85bcad8dd21d89bca213a9f890c0ead6defd14878705f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Vaduz\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Vatican\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Vienna\",\n      \"mode\": 33188,\n      \"size\": 2237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"116fab88b849fbbba59b136477814d2e0fa7d7f735166554d6e72a787cd2ccf8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Vilnius\",\n      \"mode\": 33188,\n      \"size\": 2199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75adc0a906b39e283f5e5020984a36f34b4f58ef1d3099efbc899ff07f035f7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Volgograd\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d840d736f75d20c8b2815c5664252bcbde1fab71fd3d4efe17a97ac83ddaf3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Warsaw\",\n      \"mode\": 33188,\n      \"size\": 2705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e7493c1ca050e4134062a74aa4a4fc32159c042b4c9d8d40c8bfc9d273c5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Zagreb\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Zaporozhye\",\n      \"mode\": 33188,\n      \"size\": 2115,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6c5127b52518818e3b4211e89e5e1e9a479cca65f7763a0afb145d512c38e34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Europe/Zurich\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GB\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GB-Eire\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GMT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/GMT0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/HST\",\n      \"mode\": 33188,\n      \"size\": 128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44048bf7df61bdcf45972c13426b039f0d34d80947d60a2603183b3b6be4027f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Hongkong\",\n      \"mode\": 33188,\n      \"size\": 1231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"680a46ee9866bd0c8435fef70694663c1e8ca2ba1e50ff2979ad62f27295707a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Iceland\",\n      \"mode\": 33188,\n      \"size\": 1188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cdcea6aa1eed8276d3f6620e0c0ffae9cfcc3722c443ea6ba39147975eafaa3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Antananarivo\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Chagos\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9d2fc010d11285d8430248e7a9ca16c5fe67949e768866f00b3be70aa0ea871\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Christmas\",\n      \"mode\": 33188,\n      \"size\": 182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d094a3d9b022ed04fc53e4a665588bd73f4eeaee9c23667b46944bac5dbbe05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Cocos\",\n      \"mode\": 33188,\n      \"size\": 191,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a57c446d6734a074659b854ed56cec53c40831a33c1052ce6ef4b5f0f6b0009\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Comoro\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Kerguelen\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dcaa3dc0c2628097499d2cfd37ab2ad70011ee31be9f7e45391ea2faee63b07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Mahe\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82a6e33139b0394eb1a5cb9ffb150a42df5d6fc2c56ad2642285f1d5e553fd17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Maldives\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5b933b3fc554914587c6af95702a4c0d93941418737a8895372ea514aa7d475\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Mauritius\",\n      \"mode\": 33188,\n      \"size\": 267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f257466ded0ce1a324c63e6ebc3a39354e6cde0504f1daa35136c6855278ef0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Mayotte\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Indian/Reunion\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3d95eaceb2806a82b1f2c093f3d73ca0cfa0034ad0446aefbe8c4904f6a955e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Iran\",\n      \"mode\": 33188,\n      \"size\": 2624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29fc1861f6e088decab370c3ef2c090d0c3fbdea50b78c2d3158ddaf001b8088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Israel\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"addb98caf3459bb75d6e14ed76aa66e642bead2d067e7fe81814a4f02cf13503\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Japan\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"046bb09bc08554ef8a54dc05685d0eab10e04c692f6320b6091b6a6f07214c83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94c42dbf73fe0fde173fed33b5f15512b1ea614f40108ac0dacf6e15c23785e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Libya\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ff53f7072863fb56f1e71339392b6de7e50675efa4333b9e032b677c9c9a527\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/MET\",\n      \"mode\": 33188,\n      \"size\": 2102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fff331a4414e98097d33bec1a9bbf2a155d991b57acd1bb4c11f8559fb4e514\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/MST\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8fb610056087bb3ca8ecf5cdcb5305c1652b649fde512f606b9ee1b3556fb9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/MST7MDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85452d031526621178e9b24c91af69b7ecc30df47036669378956135c4e735d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Mexico\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Mexico/BajaNorte\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Mexico/BajaSur\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9340b719b250773262cec62e771d121105aed168836723dfc305e30bb04cfbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Mexico/General\",\n      \"mode\": 33188,\n      \"size\": 1618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88bc3fcb1a92ef053e0af4af9053ecbf12855fdf18f859b2a54d826dbfacb655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/NZ\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/NZ-CHAT\",\n      \"mode\": 33188,\n      \"size\": 2087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58019f2faa29dc7db7081293230a728769054dd7c0d0fa9e96e8c4299e71314d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Navajo\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/PRC\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/PST8PDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d8e69bd43e8d71f0f58e115593814d68c1a6aa441255b17b3e9a92a9d6efc46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Apia\",\n      \"mode\": 33188,\n      \"size\": 1134,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb24a31e538dd3ad0b22cf4788d80cb17d79134622510e2aa67c8712d09721cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Auckland\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Bougainville\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1b670d434aa6c04cbf73b647a07e5be7dcf2ff30663e10c24e0f0cfabe55b36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Chatham\",\n      \"mode\": 33188,\n      \"size\": 2087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58019f2faa29dc7db7081293230a728769054dd7c0d0fa9e96e8c4299e71314d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Chuuk\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Easter\",\n      \"mode\": 33188,\n      \"size\": 2242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d344955a3a8dea47b50a72d2af7fde01a6a27365bef0fefb2c11429a4f5dfca1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Efate\",\n      \"mode\": 33188,\n      \"size\": 492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85d792affc275df1a1bdcf9067cb59f6b1ab8bb93c450cee1293a8157a43c6ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Enderbury\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bf2e193795d4a8ec88bcdcf338097dfa71c254332ed3235e7d3270ea7051cf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Fakaofo\",\n      \"mode\": 33188,\n      \"size\": 221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebcdbbb97d8fa7c9a20ecf62964d207f1ed81e73a3cbea77dc8be5144950af6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Fiji\",\n      \"mode\": 33188,\n      \"size\": 1103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7419d63f407369e5d91ce53093a6903fd8a9841cdec66aacc843d2c4df8ed10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Funafuti\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"812f276576cae6bbd0135d40700fde4fce64f830f75fea928cabe77c51dce579\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Galapagos\",\n      \"mode\": 33188,\n      \"size\": 268,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3727ec66f71d8629656377c1f3a004c5cfade0f6c52b8da8b7c3ba2d36998603\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Gambier\",\n      \"mode\": 33188,\n      \"size\": 186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abd4f7e51731d259e30ec4b33c2bcb899e147ee102eb278a1a9b2bb8001c64db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Guadalcanal\",\n      \"mode\": 33188,\n      \"size\": 188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a69b3ab3a6e6541933831609ab8bbc3ed5bf0ff678e519226b8df966b4973f20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Guam\",\n      \"mode\": 33188,\n      \"size\": 525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c97a94f15eb7ed24c114ed3b6103987aedd65435aabb85217845df4695fa9069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Honolulu\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Johnston\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Kiritimati\",\n      \"mode\": 33188,\n      \"size\": 263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b78f341b3f703c5dc508805923c91e3884d91ae8bd1e2f82d9b28b2308cd8eef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Kosrae\",\n      \"mode\": 33188,\n      \"size\": 386,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5e1e429c7d31a845f3ff7f73604e13049ac51626da067b2cd2f4cceac34b2c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94c42dbf73fe0fde173fed33b5f15512b1ea614f40108ac0dacf6e15c23785e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Majuro\",\n      \"mode\": 33188,\n      \"size\": 339,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5663127802eeab9ef7b7eb3c889e76ca9683001ed76a2a4549906e864fd10f32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Marquesas\",\n      \"mode\": 33188,\n      \"size\": 195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a63de681b53d7bfc728c5d491b2986ab47347a9f2fd15a6f3b6ff978d2f826d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Midway\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Nauru\",\n      \"mode\": 33188,\n      \"size\": 282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90f5b914416c9e4189a530cd7fcf878a19e5f5569da00bc926a4d2b6c0cdf0d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Niue\",\n      \"mode\": 33188,\n      \"size\": 266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c16c73631f28c41351fff90d3108bc5751cbd40010fdf872da112a10e9739a53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Norfolk\",\n      \"mode\": 33188,\n      \"size\": 933,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3ea212e8cfe37da5b6becba0cbc308a26bd5590986d4f046845bb5571aa899c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Noumea\",\n      \"mode\": 33188,\n      \"size\": 328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13e18b4bb426c3739b34e37d6cdc00d488721a05865cdeca94af76246f55a4de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Pago_Pago\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Palau\",\n      \"mode\": 33188,\n      \"size\": 199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa004039c36449b9a8e280ff0c768e4d15d3853d9f2b87a177d365d8ad864525\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Pitcairn\",\n      \"mode\": 33188,\n      \"size\": 223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0ad4cbe872b4d208d45bc6d326290cd240c1886150f0ee42638386276a8b0b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Pohnpei\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee4a05d2735ebff35c2f093f0b2d03f70434de110a5403ed7a218e1b73bcf3ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Ponape\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee4a05d2735ebff35c2f093f0b2d03f70434de110a5403ed7a218e1b73bcf3ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Port_Moresby\",\n      \"mode\": 33188,\n      \"size\": 206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fb4613fb4bf246f537e265e441fe5f62713037df40338cfd80cb7d768e8ca5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Rarotonga\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9695a885289664511eb65f931860f584e7c5443d6f05b10b5197ac7834d47cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Saipan\",\n      \"mode\": 33188,\n      \"size\": 525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c97a94f15eb7ed24c114ed3b6103987aedd65435aabb85217845df4695fa9069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Samoa\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Tahiti\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9a22621ddb737b5d6342691dc2d94e265c81b0e743010b6713986db122fc855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Tarawa\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28fea38528135a54fd642fe3d2bbb41aa8da6b7c892c3991ab2612a81144e799\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Tongatapu\",\n      \"mode\": 33188,\n      \"size\": 393,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14d5bf3a7fea21eb6c9e63970d1dad5b9fbedc5f5b0fd3f5069ee74f7a0f4d8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Truk\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Wake\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0346a78cf610bc43eae87c0a332d30ac5cf9c95001a4264731563cccf3c38331\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Wallis\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"837699bd07ada63d632fc2303a687e5ef9e194e063bac786055885258206ee5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Pacific/Yap\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Poland\",\n      \"mode\": 33188,\n      \"size\": 2705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e7493c1ca050e4134062a74aa4a4fc32159c042b4c9d8d40c8bfc9d273c5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Portugal\",\n      \"mode\": 33188,\n      \"size\": 3469,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bbe65d4ff3394ffa1b4ae6fe2296e333f55bad0ae49ca6717b6076e53490ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/ROC\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25cfd02bc847bdcb11e586445ba886a76315f1f9be86f7e74944a6e8e8644543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/ROK\",\n      \"mode\": 33188,\n      \"size\": 659,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3673a9439d49ea97b47c9fb28433c6d41c469ca03ad320768f1514d075647c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Singapore\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6929fde43ffc48bbac4081b31bbf7fd42643b3c26fadf322bdeadeb23cfc748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Turkey\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/UCT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Alaska\",\n      \"mode\": 33188,\n      \"size\": 2380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5df0a6f7f9d43cbbd3e74d33a23fe686080eb55965f5d9246b6e859b3db9d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Aleutian\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Arizona\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c013ecf82b6ed1dde235b5fc983fe9d23c8d56d610323f7c94c6ba3cd7b4564\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Central\",\n      \"mode\": 33188,\n      \"size\": 3585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"143f29b957173a46008187230a38125bd3a03b3dbcba0dc1d1b8661331f71693\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/East-Indiana\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Eastern\",\n      \"mode\": 33188,\n      \"size\": 3545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa6dccc303352e1195c4348b189f3085014d8a56a1976c8e8a32bd4fedb69fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Hawaii\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Indiana-Starke\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Michigan\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e668e3859786c92f462769f87d5bc4ef31b5d6646bbd1635b91007e2a03dbc6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Pacific\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Pacific-New\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/US/Samoa\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/UTC\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Universal\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/W-SU\",\n      \"mode\": 33188,\n      \"size\": 1544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02d55516d0f9d497998260b4f129aee59867b77a920ba2ca0c58b15ec8588e7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/WET\",\n      \"mode\": 33188,\n      \"size\": 1873,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5e7c4631295e7f17085e3530f99fc2984cc7e4bdb9a07db7702de8c18c2aab1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/Zulu\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/iso3166.tab\",\n      \"mode\": 33188,\n      \"size\": 4463,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04c87fc98ecc5e9f03304cbbd636ab157dc8252369c2e132223228d872945c3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/leapseconds\",\n      \"mode\": 33188,\n      \"size\": 3142,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6d5661623eee846100ab7b0b3352d73f7bf2252f8772791662331a28bc0b99f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Abidjan\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Accra\",\n      \"mode\": 33188,\n      \"size\": 842,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea0a89ec3c253390f746107c3ea69392270d8df0dc2d2aed6f23f4cff852bf91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Addis_Ababa\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Algiers\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d777e8eecb9ebe269692349daa6b45b2463e4a3c2d107ccd139b6206c4fa73cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Asmara\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Asmera\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Bamako\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Bangui\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Banjul\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Bissau\",\n      \"mode\": 33188,\n      \"size\": 208,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ddad13adc33cdee8eaf55cfa31efcafd79305ae8dfcc3be06ff78299f29f1d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Blantyre\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Brazzaville\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Bujumbura\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Cairo\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"279bbe1fa62da67387c63593b60bb655252ef5c8f189cf43469087740af2b4fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Casablanca\",\n      \"mode\": 33188,\n      \"size\": 2465,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa6b8924f65caa075abd3d790fcca99faf59b66cef9531dda52544ee1d5d673\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Ceuta\",\n      \"mode\": 33188,\n      \"size\": 2059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"387d2c354117fe2a22f6f3b429e4193a331d3e93d7007a55c50b3b9eedee63de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Conakry\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Dakar\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Dar_es_Salaam\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Djibouti\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Douala\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/El_Aaiun\",\n      \"mode\": 33188,\n      \"size\": 2303,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bd0b2fbcc4c1c23746fc012be63f88a543bfcaa3f6d464cdf32c014c7bde110\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Freetown\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Gaborone\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Harare\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Johannesburg\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Juba\",\n      \"mode\": 33188,\n      \"size\": 683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73d986c70173c763e9b262dbf367120bc2a4f63f006c1d412ea9adab77e09da3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Kampala\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Khartoum\",\n      \"mode\": 33188,\n      \"size\": 713,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5256a96f78382e82db80ad8591240c3886fc58f9a83fe94506e3a192fbcf2f4e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Kigali\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Kinshasa\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Lagos\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Libreville\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Lome\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Luanda\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Lubumbashi\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Lusaka\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Malabo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Maputo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d7e6d17cabdaa1814a56dddec02687e1087bc3334fe920ad268a892bf080511\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Maseru\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Mbabane\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fcec4247091905d88a0b869e8e5c7ee6bcfba7db6c310165baa95078b0be31af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Mogadishu\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Monrovia\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f9672c98983af595b3c6274cf8135728c8815a4f9c98ffba043707609e5d122\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Nairobi\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Ndjamena\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1391c8edd23b3f73e0bfacf8b878801c58206ca42349c30b22fcb7e8d13de3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Niamey\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Nouakchott\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Ouagadougou\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Porto-Novo\",\n      \"mode\": 33188,\n      \"size\": 171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e40c3386f3a5cd88a03c811fa30ecac34f31368f960ae79e4a90de295c5b1938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Sao_Tome\",\n      \"mode\": 33188,\n      \"size\": 263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c04b1866beb73b69104997850cce075376d62716f8d01156e796d878b160545\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Timbuktu\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Tripoli\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ff53f7072863fb56f1e71339392b6de7e50675efa4333b9e032b677c9c9a527\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Tunis\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eecc34436d1dd96c49d6b671ed61bc594548d280a967537a9653841b537a9a92\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Africa/Windhoek\",\n      \"mode\": 33188,\n      \"size\": 1034,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f032165bd2520eb45848e2d059f61185331ba6faa263861c70ec2becf30fa9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Adak\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Anchorage\",\n      \"mode\": 33188,\n      \"size\": 2380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5df0a6f7f9d43cbbd3e74d33a23fe686080eb55965f5d9246b6e859b3db9d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Anguilla\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Antigua\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Araguaina\",\n      \"mode\": 33188,\n      \"size\": 910,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb7fe2d06e8ee5c5d9a8a568c8cb37efbb0086824f38d1bc4d8505f963b5970d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"841b9bca947f2acd9adc6cb5c10171204eecec1e46e6042654f355c89debc43f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/ComodRivadavia\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"233f43f895b08f21cd28918fbdb9c22892511c0996ac6212e019c3e866aca455\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/La_Rioja\",\n      \"mode\": 33188,\n      \"size\": 1123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edc82d9225b8ae3ca911eab14f8201a8916928cfab233e182f807e715cf18435\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d50f245cf1eeb3650dbbdd45720ddc6b1c5e22aede7981f20b9efe2c7ac68c4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f762067b25cc7e6141b06a6eae77764caccccbfe8716f1370c33e169ec2e1723\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Salta\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1deede9c14ed0b4dc6e5a40110c7056083c8fed557b84aadc0fa2a045411e560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/San_Juan\",\n      \"mode\": 33188,\n      \"size\": 1123,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"100c000b03b9a0e19c778d9e81ad8e5c2c34db4b7da24c55d67c0ad8050a67c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/San_Luis\",\n      \"mode\": 33188,\n      \"size\": 1139,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab15b1141b87b1381e5cad386fc374b5a9a2ca922504da5b848074fab91e9abc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Tucuman\",\n      \"mode\": 33188,\n      \"size\": 1137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a623bbcd2144f1e43892777084bde4e2613ae6f22bf92dedf6e1dc6e68248b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Ushuaia\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02f9a96426823c7bf25ff15a1f241069e2cb15969d48d0c6cc31aad13a7d0f49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Aruba\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Asuncion\",\n      \"mode\": 33188,\n      \"size\": 2077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e29f7cdc530419ad31e4afc8fc2adf40d9577f55e2174a3a82358a027780ca2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Atikokan\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c30226b472b507b5a30b69557d56f24fcc8e9467110e4d3ec15c2c51de5d245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Atka\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Bahia\",\n      \"mode\": 33188,\n      \"size\": 1050,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e1c1b5e2579e15a623bfd3774db703a49b937790e68b44a6b99a308c6ecba66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Bahia_Banderas\",\n      \"mode\": 33188,\n      \"size\": 1588,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d0e0d9f6168635a5f98550a170d423854ff5b662ce0d874c3cba77199bf1cbd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Barbados\",\n      \"mode\": 33188,\n      \"size\": 344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b1a7857a01ae2a3ae9a51e0b40cfbed91bac468579ed3c08b54466276bbb1fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Belem\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84749f6075de59dc62bd69343194806cfd552641b912a6f8e96c83c99914a187\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Belize\",\n      \"mode\": 33188,\n      \"size\": 978,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb4e57a8c657d0c253ef4e0a5af118c928e6e5875564081a714563addfd4b31a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Blanc-Sablon\",\n      \"mode\": 33188,\n      \"size\": 307,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7d383bfb7e85331030f8091a9055a5f424e3674407ca0c76cce06b5a0316fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Boa_Vista\",\n      \"mode\": 33188,\n      \"size\": 658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c57a63f22280c2c46587414956efc8fcaadc36ed422589b48929dcc7ab4f6680\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Bogota\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3611de34f765f2d65ec0593e79c678de36092549898680dc4639b8c68f7137ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Boise\",\n      \"mode\": 33188,\n      \"size\": 2403,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33353ef05ccdda7debe757cf865ee7bd78031f38c6797b8fbfc11f9010f55a10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"841b9bca947f2acd9adc6cb5c10171204eecec1e46e6042654f355c89debc43f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cambridge_Bay\",\n      \"mode\": 33188,\n      \"size\": 2098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0aeaed5b104ee99ab13a9f5b5a7aaf7f6c9a7f59bdefd15d3c9951551c7b5f6f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Campo_Grande\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e670b40a7dd3adf79f66ea43382a70e60caee6ffb59ae92c4c9ee081d16259d2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cancun\",\n      \"mode\": 33188,\n      \"size\": 816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d22316873f309799c6f97fefb8a0a8897d0df4eb376f84bb0b71602ec240d04f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Caracas\",\n      \"mode\": 33188,\n      \"size\": 289,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94e8efae88e096d6dd0abda2661d826c004f0c587f97782cb2f911ed7c942f1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e844a8f34c71c2d04bfdac6b11e913b5f20ea9fddb5d145433d0831087f1c5d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cayenne\",\n      \"mode\": 33188,\n      \"size\": 224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af8de87447f7093759a595cc3d403e5fa7b51fc3520959c4da54956ffbac856a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cayman\",\n      \"mode\": 33188,\n      \"size\": 203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4fbba14653a3186f3c5b719f7b9bf7d8a5824401064cf6d508205592e55a9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Chicago\",\n      \"mode\": 33188,\n      \"size\": 3585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"143f29b957173a46008187230a38125bd3a03b3dbcba0dc1d1b8661331f71693\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Chihuahua\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7d150e716db5b1c96bb0e50252b80306e1d9e8bcc2bf90a3ae7071906e71513\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Coral_Harbour\",\n      \"mode\": 33188,\n      \"size\": 345,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c30226b472b507b5a30b69557d56f24fcc8e9467110e4d3ec15c2c51de5d245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Costa_Rica\",\n      \"mode\": 33188,\n      \"size\": 341,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4e6ff29a776e053226bf590ebe734896f9150d69074f22a16a1c7199a1484ec5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Creston\",\n      \"mode\": 33188,\n      \"size\": 233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"97b74beec3714be518219f24533cc21edf9b53d01f4ab792a6fe0f88973449eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Cuiaba\",\n      \"mode\": 33188,\n      \"size\": 1442,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"309f877286fad7d01fbbae6bb1a64e23227688e1687a90b6ce67faaef5b0cb67\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Curacao\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Danmarkshavn\",\n      \"mode\": 33188,\n      \"size\": 712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"087e39cd6f10b6944b68b1de557289ef33769467f1b29806b96a16cf8e438e6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Dawson\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c379fb9517c07d4df5cbd6aaa2ec4561cbe893ba0e8552d377947fe2b1ff9bf3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Dawson_Creek\",\n      \"mode\": 33188,\n      \"size\": 1059,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29d0245bc04dadcbb196a3b6a81bace1696451166a7417d5bb2a8610f37ec5ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Denver\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Detroit\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e668e3859786c92f462769f87d5bc4ef31b5d6646bbd1635b91007e2a03dbc6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Dominica\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Edmonton\",\n      \"mode\": 33188,\n      \"size\": 2346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92ac6208f1ef357787fcfce6a334990252189eb0b427b28bc60e21ab5e792b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Eirunepe\",\n      \"mode\": 33188,\n      \"size\": 690,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07761278f5c58867c645625c9b819ea09e4703d76564e231979e48d6d2e0881a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/El_Salvador\",\n      \"mode\": 33188,\n      \"size\": 250,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"63215b213a31505bfd545fd52b11214cb614f13f0f55911f414edb44286e7f8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Ensenada\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Fort_Nelson\",\n      \"mode\": 33188,\n      \"size\": 2249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7ce9a01cdd313d20352112430341c262e1b90182de490fc95c132daac118ce7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Fort_Wayne\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Fortaleza\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca3cd6cdd4ec5f945742cd72a91e539756e0ad2eac3dfa62afc21397061eea99\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Glace_Bay\",\n      \"mode\": 33188,\n      \"size\": 2206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6af24e3b9f1240abb8618fac326ee3a1ecccd25d2fa4936b2a28b0b0880e550\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Godthab\",\n      \"mode\": 33188,\n      \"size\": 1892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356cd2d4e74c958622b77385ae0509b5ea87e691f21207230f6fe1fa67e220af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Goose_Bay\",\n      \"mode\": 33188,\n      \"size\": 3219,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0c06c6a1841cdc37bfb311c11caba1c974d0d6c27725c04b69657e7ca112a49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Grand_Turk\",\n      \"mode\": 33188,\n      \"size\": 1881,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90848fabb8bcfdbb4e66f5a624c4e7fa88962f16f8b6005f527cd84abebfa574\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Grenada\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Guadeloupe\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Guatemala\",\n      \"mode\": 33188,\n      \"size\": 306,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"795cc25e5ffe825a8b3d86eed98ad5f9bb9f6d152df2b624f0e2a63b17f0ee43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Guayaquil\",\n      \"mode\": 33188,\n      \"size\": 271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6f52c0cff32100d797e64032c4ce19fa5a94b75b7678f1beb3c0cb549cdc00f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Guyana\",\n      \"mode\": 33188,\n      \"size\": 266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffa4db9ef9c8a2902355de59b3693aa3dabd21e7a06054772bfcd754902e9342\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Halifax\",\n      \"mode\": 33188,\n      \"size\": 3438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627e18218c6f3c3f446c4970abe8164672e2a7ba94bcf841b1e06af5089b94ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Havana\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7871f875a8819f415c292519db1590556a0dc1a6ce691bf4f7af55e6716fb894\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Hermosillo\",\n      \"mode\": 33188,\n      \"size\": 454,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec6eb21d068f1ca8e80a9e825206ad1b5a04b1e8abb2dd981c6c90b7686b8820\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Knox\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Marengo\",\n      \"mode\": 33188,\n      \"size\": 1731,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64bb87669a7c161454b283e5855e28de7655450680cc403eea0572e580eb2625\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Petersburg\",\n      \"mode\": 33188,\n      \"size\": 1913,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3eb5dd510d677f9118ec4bca7892db4ed181722fbaf94ef9cb1a441718400321\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Tell_City\",\n      \"mode\": 33188,\n      \"size\": 1693,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6814c2b71389711819f44b98c880caf317c03a42064b2217103795114781a80f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Vevay\",\n      \"mode\": 33188,\n      \"size\": 1423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cf728ac267cce51bddf1875219bf0e800d5aaa17794dc2c7408293773f516e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Vincennes\",\n      \"mode\": 33188,\n      \"size\": 1703,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a9db38f7575f9e2a624c9466128927caef0eea7e9a3841679cd6eb129b019d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Winamac\",\n      \"mode\": 33188,\n      \"size\": 1787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2dc919207b8db95bd82aff68b8a498a6d3bec2c33220ba5381ebca171dcc095\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Inuvik\",\n      \"mode\": 33188,\n      \"size\": 1928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea64cbc0bf92cf88c8917222f11db8838f42e2d41360cd81bb93f669a2bc685b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Iqaluit\",\n      \"mode\": 33188,\n      \"size\": 2046,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb8797250b8bd8c3d09893b4f261ffb1bedd668869a051c8e2c80f6c0d63408c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"addb98caf3459bb75d6e14ed76aa66e642bead2d067e7fe81814a4f02cf13503\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"233f43f895b08f21cd28918fbdb9c22892511c0996ac6212e019c3e866aca455\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Juneau\",\n      \"mode\": 33188,\n      \"size\": 2362,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8185913ee68f7ec72cd98efcee68d1b6bd0c304e303a2dc613b06cd97e6333c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Kentucky\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Kentucky/Louisville\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31e1152a8de9463bcef2b5db10415965b96b83a93bd940609bc390bab963f384\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Kentucky/Monticello\",\n      \"mode\": 33188,\n      \"size\": 2361,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b87081e46bbe688816a7e03cfdc5b4efe10bd6b92cb5a780df6b0c86af4c1a37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Knox_IN\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Kralendijk\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/La_Paz\",\n      \"mode\": 33188,\n      \"size\": 257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f10b013aea85ad55c3b3f65d68fa09bba4abe7fb5311018698823f0ab909a88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Lima\",\n      \"mode\": 33188,\n      \"size\": 431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f514d5245abb9de7c35fabed4c4cc86f6c027548cd1be04cc84b122878e1ad3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Los_Angeles\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Louisville\",\n      \"mode\": 33188,\n      \"size\": 2781,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"31e1152a8de9463bcef2b5db10415965b96b83a93bd940609bc390bab963f384\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Lower_Princes\",\n      \"mode\": 33188,\n      \"size\": 212,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"023d877932f35d889772f561f79e266c8541b984e0ce2bd257723aafc7d883c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Maceio\",\n      \"mode\": 33188,\n      \"size\": 770,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3241ce8df0004a0cb5db2eb3800a3dfe770cc1d24d144fee27862c4dd7400840\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Managua\",\n      \"mode\": 33188,\n      \"size\": 463,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3c1f00bc879ee84e623d25252f1fb8ffd8cf43cd9c8b8bf12b6b5eda8045683\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Manaus\",\n      \"mode\": 33188,\n      \"size\": 630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1213e7b97cfa580b4f9c728c34ffa64a6ab277b06b558893b299c20d3528e6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Marigot\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Martinique\",\n      \"mode\": 33188,\n      \"size\": 257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e087c3e4ae20234a08667adcf6ab4cd03ab3aeee7e035278f271ddb0b65cfff2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Matamoros\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4398d831df4bfcfd9bafa22ac35cd55dbb7dfd5f25c138452e8adf275ea11735\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Mazatlan\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9340b719b250773262cec62e771d121105aed168836723dfc305e30bb04cfbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d50f245cf1eeb3650dbbdd45720ddc6b1c5e22aede7981f20b9efe2c7ac68c4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Menominee\",\n      \"mode\": 33188,\n      \"size\": 2283,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46ced580e74834d2c68a80a60ae05a0b715014bb2b4dad67cf994ac20ce2ac22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Merida\",\n      \"mode\": 33188,\n      \"size\": 1456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ecdcf4b29f7b439152b9e9b559f04d7d4ba759dd942c2fd685a4ee36798fc8d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Metlakatla\",\n      \"mode\": 33188,\n      \"size\": 1432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9d091e1f411ccec6f2274317c53cc3ca45d6895f2c7497583e71ffca496716f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Mexico_City\",\n      \"mode\": 33188,\n      \"size\": 1618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88bc3fcb1a92ef053e0af4af9053ecbf12855fdf18f859b2a54d826dbfacb655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Miquelon\",\n      \"mode\": 33188,\n      \"size\": 1696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21fabc9c2cafd8eef46af9126040cced6ef27d648d73d48951178143e6bb006b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Moncton\",\n      \"mode\": 33188,\n      \"size\": 3163,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1300d5a93bb376cbf23a890a23ea05fa2b229486e7eb7d5959c7834260fbb7b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Monterrey\",\n      \"mode\": 33188,\n      \"size\": 1416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"89dadca852ebf52e4405c958132255c25fb195604d7df9b844bf50b48a0865d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Montevideo\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"550efc39d3e1c9e6909aa80a9d067f9355c47a874fcaf4f59302407ef6f968e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Montreal\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Montserrat\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Nassau\",\n      \"mode\": 33188,\n      \"size\": 2284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4c999dbcc6c6045acbedf6fd48f5b70b20eb8d8b0bd9612d2bea88dc03aa9f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/New_York\",\n      \"mode\": 33188,\n      \"size\": 3545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa6dccc303352e1195c4348b189f3085014d8a56a1976c8e8a32bd4fedb69fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Nipigon\",\n      \"mode\": 33188,\n      \"size\": 2131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7100ca4bf3044211ff8e770dade20b683880f3965f146ebbdd72c644aaec7c37\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Nome\",\n      \"mode\": 33188,\n      \"size\": 2376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d312bc797eb1b384ccfba0c40822d50b2e0abf37d5daa43dd3e255fdc7573b00\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Noronha\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb4e968f415ed53e769108c9d5f9710e898716af74536d39b7077b0426f3960d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/Beulah\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f604eb42f0197f5edefcd6d43051a0b64e6e1327dbd2d3cfa94d0348b23e1fa8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/Center\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08efea4af9a2b6a5ab25e86116cfcf4b93c16ba9b7b22f762d9cb3481ecf3ac8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/New_Salem\",\n      \"mode\": 33188,\n      \"size\": 2389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5a43eb6776c326b1250f914f00e9e00e121b9b51f63665f90f245376da2017a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Nuuk\",\n      \"mode\": 33188,\n      \"size\": 1892,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356cd2d4e74c958622b77385ae0509b5ea87e691f21207230f6fe1fa67e220af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Ojinaga\",\n      \"mode\": 33188,\n      \"size\": 1522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a07ff8fe3ee3531f866afca0f7937d86acec1826fb3eaa655d54300ec22dc713\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Panama\",\n      \"mode\": 33188,\n      \"size\": 203,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4fbba14653a3186f3c5b719f7b9bf7d8a5824401064cf6d508205592e55a9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Pangnirtung\",\n      \"mode\": 33188,\n      \"size\": 2108,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b6a497653df9220c30a022d87ec2aa1320af9e51bb3cdc48756e72d770a6738\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Paramaribo\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57039b31a68b30ba0731916cffa7b9a1bbb52bf7650f7aa62052e89a8fc9edf6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Phoenix\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c013ecf82b6ed1dde235b5fc983fe9d23c8d56d610323f7c94c6ba3cd7b4564\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Port-au-Prince\",\n      \"mode\": 33188,\n      \"size\": 1455,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0b60ad1c557c41596e0fcc7fc8b9b39444c78295b147cee495e29985a225da6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Port_of_Spain\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Porto_Acre\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Porto_Velho\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29f8daaa8fdca090df7145e69ecdc936cd3fedacea0b723f5c93da2a8c80f976\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Puerto_Rico\",\n      \"mode\": 33188,\n      \"size\": 255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eee44e1cb7ac885fdd5042815c548bcb6ca84cff8de007e52b53c0b9ad53f19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Punta_Arenas\",\n      \"mode\": 33188,\n      \"size\": 1911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33e26b3c8bf3dd7100151d3c1842ae9aa8ef69b15f961aa2eee2e1dc3508c6e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Rainy_River\",\n      \"mode\": 33188,\n      \"size\": 2131,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a7b8dd4c968de31fe35fd9fe075fad8afc15892067119f638b5aef0d2288d83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Rankin_Inlet\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3ae38ccfa3091ebd8037fd5e1fd2715a72008932f94526a15fb1aa7fae722dc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Recife\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cebb6d30c20b00bc437d4e0a8c6a0c91db120a3aef2c28bc56960f682b3fc30c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Regina\",\n      \"mode\": 33188,\n      \"size\": 994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"929d07457407529637626d09f5ca975b4f05801f35d0bfac4e3b0027efee6776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Resolute\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c529141807704725b059187b9f458080f911b6dd4313e74139d2c7dac287c901\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Rio_Branco\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Rosario\",\n      \"mode\": 33188,\n      \"size\": 1109,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"254a30f9b9b00558350d0c1f40a1d9c8738045bb7fe88e56c81bbb9fbd161026\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Santa_Isabel\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Santarem\",\n      \"mode\": 33188,\n      \"size\": 632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78440d01f4c5b7c13d1dbe6500ba71188efdcf90069979c80a224d831c8bd97b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Santiago\",\n      \"mode\": 33188,\n      \"size\": 2538,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b83e4129763ef7a22be3fba68029b4ecb6f14a360112498446d8c89640f420b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Santo_Domingo\",\n      \"mode\": 33188,\n      \"size\": 491,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"adf349e4c7314aaa699c4893c589b077f6dfa7d9a54ea9eae459658f9af41dc7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Sao_Paulo\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4090cbdfa5168012d460585f7eab9302f8848cca0419d73cf03993ef12c08c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Scoresbysund\",\n      \"mode\": 33188,\n      \"size\": 1930,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c668772d49326cde3798d158089d2f9ced43788f904360a6dc67a53868b28f96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Shiprock\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Sitka\",\n      \"mode\": 33188,\n      \"size\": 2350,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba79b89ecd8e64dba4119f2c5af2373167557c4bc71b7b134ab252e0b7485fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Barthelemy\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Johns\",\n      \"mode\": 33188,\n      \"size\": 3664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b960a58d6d3f6a272707f941f55b15b8ba3fd0fd55f8680ea84af6b1e98bae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Kitts\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Lucia\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Thomas\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/St_Vincent\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Swift_Current\",\n      \"mode\": 33188,\n      \"size\": 574,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b6029f04ac07c382e20d315da7a72d9204d813ef83585f042562e7f6788a78f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Tegucigalpa\",\n      \"mode\": 33188,\n      \"size\": 278,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd295a9cc689a966786b6e0ec9d0f101796ac8b4f04a6f529b192937df3a2115\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Thule\",\n      \"mode\": 33188,\n      \"size\": 1528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9a474a1fc764343470d310369cdbf6d7007ea611116e25bea68f60ddf5a6cd68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Thunder_Bay\",\n      \"mode\": 33188,\n      \"size\": 2211,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aef45e1474369f52e1afb1cd7f312e9f035ca13686092cf2351a353133e1cee6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Tijuana\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Toronto\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Tortola\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Vancouver\",\n      \"mode\": 33188,\n      \"size\": 2901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"460182c93960fd636820b1b43cfec871da4f0197556bb6bdb2fa527b637a4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Virgin\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b2659c267f7555c0640505660234cbe0d7feead3a5e29f41272e28a1d7d18962\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Whitehorse\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4afd69d844499d8bf3bb276d3ecab98ac10cddb21c180b6717e5635485ccf38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Winnipeg\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77be5c08f6f8ebe5330fb86a60c4447ea2549620609f4ef6a7a7a68d1a12d9d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Yakutat\",\n      \"mode\": 33188,\n      \"size\": 2314,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07f189f49873b1392989ecbde19d19d33cd6c16953bf7e6b927ca2f1040f7106\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/America/Yellowknife\",\n      \"mode\": 33188,\n      \"size\": 1980,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3140de7fe4136fb4920e8bb8ed8d707256e78c672edfce1657ae22672de68768\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Casey\",\n      \"mode\": 33188,\n      \"size\": 311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"008325b0ed1b879047cfd030ccd24cb2fdaaeecdeaedc273f77aaa888ade3136\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Davis\",\n      \"mode\": 33188,\n      \"size\": 311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8dec77b2a23389d30c680a6fb0241cae32f1c0c71bf28fde1679bdb035a2939b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/DumontDUrville\",\n      \"mode\": 33188,\n      \"size\": 216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86d1e72a7cad1d9817f57d456e39184b749436a02783a272f2109994addfbd55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Macquarie\",\n      \"mode\": 33188,\n      \"size\": 1543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"edccaab42adcfc7fa4872ff22b63fdc128a3354fa7d443f895b8f7068ced788f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Mawson\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afa4aec36d9ff91992970b4c645e038810f25d8e58118a56568dbc9226704543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/McMurdo\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Palmer\",\n      \"mode\": 33188,\n      \"size\": 1432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa3fc7dd1b1f1599bf71ed328ae5dba81e09ac3e3a914689e7ea5ff3adc28183\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Rothera\",\n      \"mode\": 33188,\n      \"size\": 186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e67d9eb78b53d3a415865402758eca495c69c347ed0ca7d5a0238c5f7ac01d8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/South_Pole\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Syowa\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aef765ec9b3fae2cedbbaf2b525505008aa24f2f4e06abae3f770a9677387879\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Troll\",\n      \"mode\": 33188,\n      \"size\": 1176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d8bdfe767292729981993a64fd8a2f745b24058c8bcbcf21bf3b0b6d5075c2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Vostok\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"903d2010d8a06be20cd57000e89d92e6f8307dca3810294215a58cd7c7c863e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Arctic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Arctic/Longyearbyen\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Aden\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Almaty\",\n      \"mode\": 33188,\n      \"size\": 1031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4401628c6d2a36430efdddec3d9aeb9ff091e85daa21d0783298cddfe70c38c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Amman\",\n      \"mode\": 33188,\n      \"size\": 1877,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba18a1f823f77e478e7030eeb82ddd71a5f3fae6efdf56325b7776304912da08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Anadyr\",\n      \"mode\": 33188,\n      \"size\": 1222,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4b88045d6624e21cb233c7c6226edee88afb63e0ca8d4e3df580d74a6c8a34c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Aqtau\",\n      \"mode\": 33188,\n      \"size\": 1017,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e2e79c79371b0c8601cc8da9dc613145b60721e9c574310ed4b7fa9ae9baa30b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Aqtobe\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ccd2ab0718fc8a637bb44576e4ca3ff267151cc4081dc697e69ebd426dbe4c1d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ashgabat\",\n      \"mode\": 33188,\n      \"size\": 651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46284acf00fcee991886ee879f507f970bef4105a05d5e330736a02b329d3375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ashkhabad\",\n      \"mode\": 33188,\n      \"size\": 651,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46284acf00fcee991886ee879f507f970bef4105a05d5e330736a02b329d3375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Atyrau\",\n      \"mode\": 33188,\n      \"size\": 1025,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44812ada1ccc49ab42dd04e3c5ebe8f9f592682765b0e400972662c34ef6e931\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Baghdad\",\n      \"mode\": 33188,\n      \"size\": 1004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"942ba9632d564f1e29f60e75a7edf598d3b001515ecdd7d403b147e5bf703cb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Bahrain\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f15d455b503a1d9b99a9bc15f27e0d87d9bf3cac8100709f6a3140e63bab56bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Baku\",\n      \"mode\": 33188,\n      \"size\": 1269,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8efffa197f6ee0747d60f4b37db8823d2f712f3df7350bfb40461641d9e7ca31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Bangkok\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Barnaul\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b556552d881c7729f21a4fb10c5e75e3885afc08e539461d40d6e4e359dcdd7f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Beirut\",\n      \"mode\": 33188,\n      \"size\": 2175,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abdfa509ed982455873c1035962d8642ae8b88ab75f7f1a9a4cf7eea5ce120ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Bishkek\",\n      \"mode\": 33188,\n      \"size\": 1045,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b449cf64ad7d46bae4196787f47012bfd0899aafd7cac77f8794dd7730b41ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Brunei\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd14c89f40eaece7f87f9679ebd6fdc23356c1ee31da031400c59806044ca4d1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Calcutta\",\n      \"mode\": 33188,\n      \"size\": 312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71d7bc10d52c64f59eae8eac701c1b156bbec3fd9fe750970bed15e9b408fa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Chita\",\n      \"mode\": 33188,\n      \"size\": 1257,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3bc537b6c3f62fbcd134ce4c8e58c351a5770b9216f2483f1e36d8ec9035b3bc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Choibalsan\",\n      \"mode\": 33188,\n      \"size\": 991,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ea08272fe78ef15058b5821d053e907ea937db9bb6ca8f71cb9997a44c64315\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Chongqing\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Chungking\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Colombo\",\n      \"mode\": 33188,\n      \"size\": 413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60108a5aec08236b5e9132d33de72649cdf01f854c86d01a8bd609d820b569ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Dacca\",\n      \"mode\": 33188,\n      \"size\": 370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b17631c1fb3033ffde15391d2fbec4e3d29b846fd2cfb089898c6b61308eb7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Damascus\",\n      \"mode\": 33188,\n      \"size\": 2320,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f42d5702ee52944dde43071569de645a5d668a385c4a2e0cd8aa43d39d2ea21\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Dhaka\",\n      \"mode\": 33188,\n      \"size\": 370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b17631c1fb3033ffde15391d2fbec4e3d29b846fd2cfb089898c6b61308eb7b2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Dili\",\n      \"mode\": 33188,\n      \"size\": 253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f691df244d73613de758975adca5454ee9a91821b3f4382ea9b793ef04b1fc4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Dubai\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c19684fb4943773d86c43f78c7ad7b46ae7557a8ae9ed16508342bd319678a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Dushanbe\",\n      \"mode\": 33188,\n      \"size\": 621,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e832524a0d020a34015e423182bec05920c1e73b4149aab1bb31b7479a0a8f4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Famagusta\",\n      \"mode\": 33188,\n      \"size\": 2042,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a3e66759c060ff5d9e338169781678161df5b9acd9aec6146f1d4d3cfd9030b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Gaza\",\n      \"mode\": 33188,\n      \"size\": 2351,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c1013e60b7005b6909a9ed2eac9490f682ed99367023eb7f324f73f4958b66b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Harbin\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Hebron\",\n      \"mode\": 33188,\n      \"size\": 2379,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c591e178b7f704a365468e6e933004b798303e100142f6d940bd8e45a061903d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"013ffccf1a05a9e7b509b55f6b949569dd9e676bfcce10c886fffe59745440e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Hong_Kong\",\n      \"mode\": 33188,\n      \"size\": 1231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"680a46ee9866bd0c8435fef70694663c1e8ca2ba1e50ff2979ad62f27295707a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Hovd\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cdc65f913f2b67cd1d23286944546c42fabb64720b78aaf32f88605a1943689a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Irkutsk\",\n      \"mode\": 33188,\n      \"size\": 1276,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77ed8a38a9f3e4a65a5ded6a846089c4c8a60eb245c476f7ee20d62780303eef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Jakarta\",\n      \"mode\": 33188,\n      \"size\": 392,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ea1c3e53a0d3f40cb6d7724f1bacb4fca1cf0ae96d9ab42f00f2d30dc0dee3a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Jayapura\",\n      \"mode\": 33188,\n      \"size\": 251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa24de2e83f471878b8e10ecd68828eb3aba1f49ce462dac7721661386eb0c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Jerusalem\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kabul\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"386b98b95b19bbec52c6d8f334e04a178f4f99f2b8a1cea33c142375668d7227\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kamchatka\",\n      \"mode\": 33188,\n      \"size\": 1198,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a45d587c7134607cb6feade6af9a04203c38b1ed481f7c7ce8eb10e7cd972cac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Karachi\",\n      \"mode\": 33188,\n      \"size\": 417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4b2a68ad79efadecf52f333fa19cbaa5dd084cdc9bf96ab8b65a75c559a370\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kashgar\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ae8868df5441ce4ac33aaed777f5ea6883eb95050b7d66d1e5ec5648c9e3fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kathmandu\",\n      \"mode\": 33188,\n      \"size\": 238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c557b86c5f0fdd19d105afbd38bd9daaad1cd075e9efdbe80547ddca85ae5ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Katmandu\",\n      \"mode\": 33188,\n      \"size\": 238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c557b86c5f0fdd19d105afbd38bd9daaad1cd075e9efdbe80547ddca85ae5ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Khandyga\",\n      \"mode\": 33188,\n      \"size\": 1311,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0169f2ad82832f6466984cad9cc673fb4098ee15e14b21521ce54f37a3fa6de3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kolkata\",\n      \"mode\": 33188,\n      \"size\": 312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71d7bc10d52c64f59eae8eac701c1b156bbec3fd9fe750970bed15e9b408fa5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Krasnoyarsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9122ec3df9d2f1e1767edfbc9cce49e7cff95491cb9de234c4588f985eb361c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuala_Lumpur\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"268d3cc29dae9854fea1b9109da2873602c48806994d3f3df0b9ca9863fcf59b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuching\",\n      \"mode\": 33188,\n      \"size\": 521,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d0c68d2cddcf9431056b27b884c89951de456a484fdf96a2b10c78faf195bd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuwait\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Macao\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc423d28d8ba83fb0ba6984472c46dc83c014dd4876b59f6c8e2a4d8761fc585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Macau\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc423d28d8ba83fb0ba6984472c46dc83c014dd4876b59f6c8e2a4d8761fc585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Magadan\",\n      \"mode\": 33188,\n      \"size\": 1258,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a32f022b2aa9b370f41866047c28b6d96007bec7e7f05e4fd1a2f06111057e8b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Makassar\",\n      \"mode\": 33188,\n      \"size\": 288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24fac901695ef43b73fa8b3cd9e4bf893ceb757c5200b6628ae6a0fc70f01956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Manila\",\n      \"mode\": 33188,\n      \"size\": 359,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01cb854c5033bef7324b3102f4362206e1a792d703a478fe090135943b180392\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Muscat\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c19684fb4943773d86c43f78c7ad7b46ae7557a8ae9ed16508342bd319678a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2aa2a3f77a43b7558a7508a6cd6c50fdf7d991f9d64da5948fd9003923b1d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Novokuznetsk\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45df208266ce41dccdae6a47b6b78235a2e70c4eeb69b28e30125e03e7b9e0d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Novosibirsk\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"53f555c078378d726db6d203c96bee7efc9b138c10cfd634f750b28cb6212ba5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Omsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e32bfb976274657a892f5918b3f42e56c838dac040e06ac60c2d36318c80fd49\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Oral\",\n      \"mode\": 33188,\n      \"size\": 1039,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ddd665f81f9ffe7fa3c7540f5065ddad72274da22913885eefe86951a857998\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Phnom_Penh\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Pontianak\",\n      \"mode\": 33188,\n      \"size\": 395,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2516ac2bc84fe6498a50bc8865ec00e3499b38f2f485403cd5028578a98d1fd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Pyongyang\",\n      \"mode\": 33188,\n      \"size\": 267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a108bfd54c6c22fbc67177c281c1058dfb1f00f40803ffc04fda5f41d4ba6505\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Qatar\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f15d455b503a1d9b99a9bc15f27e0d87d9bf3cac8100709f6a3140e63bab56bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Qostanay\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b763af98dc579384866d60e3541d7f87c10b492310a4bdd3f927d28d091edeca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Qyzylorda\",\n      \"mode\": 33188,\n      \"size\": 1077,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e116692a053d3b100258a742dd5577df8ae1e262d0f23830606c87b80031d4a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Rangoon\",\n      \"mode\": 33188,\n      \"size\": 297,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b4605825adbae3c7136f3f055d7cbac76faad62703516eaf94fc8d10e1df3ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Riyadh\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3102c1755d9a64b2e2b363381bbf52d6a01eb866a4d2cdfd0cf7e0832517094d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Saigon\",\n      \"mode\": 33188,\n      \"size\": 389,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"013ffccf1a05a9e7b509b55f6b949569dd9e676bfcce10c886fffe59745440e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Sakhalin\",\n      \"mode\": 33188,\n      \"size\": 1234,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6af67dd853ea20ec92aa39fdd647b70ec329606e7565536030dbdd70f062148\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Samarkand\",\n      \"mode\": 33188,\n      \"size\": 619,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd928b56ff2b6fdf1e28c198d8871e87979473109dfc395a51d8aaed0efb5924\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Seoul\",\n      \"mode\": 33188,\n      \"size\": 659,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3673a9439d49ea97b47c9fb28433c6d41c469ca03ad320768f1514d075647c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Shanghai\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Singapore\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6929fde43ffc48bbac4081b31bbf7fd42643b3c26fadf322bdeadeb23cfc748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Srednekolymsk\",\n      \"mode\": 33188,\n      \"size\": 1244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35c545e24d61a31f5fd4fa712d8b6cc09ecbdfddee10e5b859d6b29e57d98806\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Taipei\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25cfd02bc847bdcb11e586445ba886a76315f1f9be86f7e74944a6e8e8644543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tashkent\",\n      \"mode\": 33188,\n      \"size\": 635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8674eb501cd25c540258e94006ce151f91f653849e800aa97986551b89ead688\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tbilisi\",\n      \"mode\": 33188,\n      \"size\": 1080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc88efdf57da66aaa71c15d8fbc36d87242adca776e103ddd5531aa45ca21177\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tehran\",\n      \"mode\": 33188,\n      \"size\": 2624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29fc1861f6e088decab370c3ef2c090d0c3fbdea50b78c2d3158ddaf001b8088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tel_Aviv\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Thimbu\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e54c4d565a4be5f34209ba351c7aadd1071dccf8a0380d69e06e936a425203a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Thimphu\",\n      \"mode\": 33188,\n      \"size\": 229,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e54c4d565a4be5f34209ba351c7aadd1071dccf8a0380d69e06e936a425203a2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tokyo\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"046bb09bc08554ef8a54dc05685d0eab10e04c692f6320b6091b6a6f07214c83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Tomsk\",\n      \"mode\": 33188,\n      \"size\": 1255,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1142db40b91678b4ab3c2935346f6f0bce6a84353392a1ab97dbeba0ee1582d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ujung_Pandang\",\n      \"mode\": 33188,\n      \"size\": 288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24fac901695ef43b73fa8b3cd9e4bf893ceb757c5200b6628ae6a0fc70f01956\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ulaanbaatar\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17a31d0ea8eaf0d1484b54e53d6803eaeaa832740d521a340e1d5c073de97e22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ulan_Bator\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17a31d0ea8eaf0d1484b54e53d6803eaeaa832740d521a340e1d5c073de97e22\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Urumqi\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9ae8868df5441ce4ac33aaed777f5ea6883eb95050b7d66d1e5ec5648c9e3fcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Ust-Nera\",\n      \"mode\": 33188,\n      \"size\": 1290,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab0edbe8871813e11548d34641521878aca12634a44683945d24ef85016bd0aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Vientiane\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf866703a05b067069db05f87584d5c8a3489bcaad3e41bb012609904915c11b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Vladivostok\",\n      \"mode\": 33188,\n      \"size\": 1244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32eb6e1405aa048e6cba3396d4b09ad04ed05c239dbcb054f82e4dbbd2dbbd31\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Yakutsk\",\n      \"mode\": 33188,\n      \"size\": 1243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"545036a8cb48068d5f6f98bd28eb90bb6c25d3136b58f01486b875780519208e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Yangon\",\n      \"mode\": 33188,\n      \"size\": 297,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1b4605825adbae3c7136f3f055d7cbac76faad62703516eaf94fc8d10e1df3ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Yekaterinburg\",\n      \"mode\": 33188,\n      \"size\": 1281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8819eff29a90ad2c0d3588f56d6e974d99419e80104bfc9313274f0a33e0b590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Asia/Yerevan\",\n      \"mode\": 33188,\n      \"size\": 1213,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e456011e9e0d8c1958c17bf34116fe89a3239028010e7db61ae46012c8f2304\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Azores\",\n      \"mode\": 33188,\n      \"size\": 3493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3dfcd9c77d1e2a49e15c87aff9e43f0d5283a532b4bc6c7afa22fa14fa0c377\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Bermuda\",\n      \"mode\": 33188,\n      \"size\": 2004,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"462d205904f32dcb79317f83ddb4dea1548d51849217dc3e42ba17c3cc7fcf08\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Canary\",\n      \"mode\": 33188,\n      \"size\": 1911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4617cb1aa75514003f181908e9ccfc1d3d062ef22bb0196867dbe530ec2e1416\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Cape_Verde\",\n      \"mode\": 33188,\n      \"size\": 284,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7a81342ed5884f34fdc07e6ebf8f0f322e41ba3e2d399d7f516b4d28771350b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Faeroe\",\n      \"mode\": 33188,\n      \"size\": 1829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b1a5769f8ffa2ec29bf298dffd7fb324e625e36fc527c14bb66b6520e6f76a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Faroe\",\n      \"mode\": 33188,\n      \"size\": 1829,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b1a5769f8ffa2ec29bf298dffd7fb324e625e36fc527c14bb66b6520e6f76a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Jan_Mayen\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Madeira\",\n      \"mode\": 33188,\n      \"size\": 3484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24c616780589fb6a7e22913e3402522517ba4a7460738ccd38f1a3a0e4a21f40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Reykjavik\",\n      \"mode\": 33188,\n      \"size\": 1188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cdcea6aa1eed8276d3f6620e0c0ffae9cfcc3722c443ea6ba39147975eafaa3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/South_Georgia\",\n      \"mode\": 33188,\n      \"size\": 181,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f745dca3964c6ae3e8b88166e0db6df487ee8f6e6ad7fb1ac3ad4e6ab2e0a361\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/St_Helena\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ded126df8f693ce1ff83e85aa4d44185c2bdef7da1f915b214f53deffdee47\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Stanley\",\n      \"mode\": 33188,\n      \"size\": 1251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57ee27fac7d72ba2c34725702e5876aa27462a09ac4b841b40122afe103a4c41\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/ACT\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Adelaide\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735476eef81652d7189574f8b7a11c942a986aba24b6ddc644fbebd1eb49245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Brisbane\",\n      \"mode\": 33188,\n      \"size\": 452,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74ac9f5d1d15ef0f6bd9e69c687b9047fb1f749c59279475685721f574b427cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Broken_Hill\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6451675d3b5afb8572e2cbb4d381730da23daa3bfcb57601fe6f815985237db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Canberra\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Currie\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"543c7afaebfdd907f8d637efce48bf41c407da72658b8e9c12f7208a54d1d84a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Darwin\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6172d8687a78608d884b04903d36053bdfb56433541930b2a42b405cbb62dc0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Eucla\",\n      \"mode\": 33188,\n      \"size\": 503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"42c7f9c44cf8dbfd564a7539b86278d98285476578bef4bfc01cc3fc61ebb2ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Hobart\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de1bb5e82f86774e70082b906462e02a062238e5c4d76149566e21b1cb31b23a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/LHI\",\n      \"mode\": 33188,\n      \"size\": 1889,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09626975ee86238fd5f85bc275eafad83bc696709d78144cc0bd4ced75acaf2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Lindeman\",\n      \"mode\": 33188,\n      \"size\": 522,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"663df35f044a15c743b9716e183595147d0c1838e99148a9473623ac82076bf9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Lord_Howe\",\n      \"mode\": 33188,\n      \"size\": 1889,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"09626975ee86238fd5f85bc275eafad83bc696709d78144cc0bd4ced75acaf2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Melbourne\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"272c1f13d01e35e6a58855cbb53878795451928adbf0c8ca2982b79db1f450a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/NSW\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/North\",\n      \"mode\": 33188,\n      \"size\": 323,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6172d8687a78608d884b04903d36053bdfb56433541930b2a42b405cbb62dc0b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Perth\",\n      \"mode\": 33188,\n      \"size\": 479,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ecd4a085ca9ec5b7903016c2d4e311276024a2bcd0c35d40281658e48421f93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Queensland\",\n      \"mode\": 33188,\n      \"size\": 452,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74ac9f5d1d15ef0f6bd9e69c687b9047fb1f749c59279475685721f574b427cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/South\",\n      \"mode\": 33188,\n      \"size\": 2238,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735476eef81652d7189574f8b7a11c942a986aba24b6ddc644fbebd1eb49245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Sydney\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b540f8e21ed6a6b262336e0eb020c18ab43f283e9774613dd9864239523e4233\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Tasmania\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"de1bb5e82f86774e70082b906462e02a062238e5c4d76149566e21b1cb31b23a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Victoria\",\n      \"mode\": 33188,\n      \"size\": 2223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"272c1f13d01e35e6a58855cbb53878795451928adbf0c8ca2982b79db1f450a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/West\",\n      \"mode\": 33188,\n      \"size\": 479,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ecd4a085ca9ec5b7903016c2d4e311276024a2bcd0c35d40281658e48421f93\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Australia/Yancowinna\",\n      \"mode\": 33188,\n      \"size\": 2274,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6451675d3b5afb8572e2cbb4d381730da23daa3bfcb57601fe6f815985237db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Brazil\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Brazil/Acre\",\n      \"mode\": 33188,\n      \"size\": 662,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16c86cccc93c7ebfeffae880e439ce848055e421578982d5cabef8aaec15f802\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Brazil/DeNoronha\",\n      \"mode\": 33188,\n      \"size\": 742,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cb4e968f415ed53e769108c9d5f9710e898716af74536d39b7077b0426f3960d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Brazil/East\",\n      \"mode\": 33188,\n      \"size\": 1470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4090cbdfa5168012d460585f7eab9302f8848cca0419d73cf03993ef12c08c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Brazil/West\",\n      \"mode\": 33188,\n      \"size\": 630,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1213e7b97cfa580b4f9c728c34ffa64a6ab277b06b558893b299c20d3528e6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/CET\",\n      \"mode\": 33188,\n      \"size\": 2102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c0029045f6f80bc5a84f1bb8ed36230454759c54578eb9a8c195d14f442213c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/CST6CDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44e8b569e60027647f9801a33d0b43be0106a6d3f6cd059677e0ed65c9b8b831\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Atlantic\",\n      \"mode\": 33188,\n      \"size\": 3438,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627e18218c6f3c3f446c4970abe8164672e2a7ba94bcf841b1e06af5089b94ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Central\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77be5c08f6f8ebe5330fb86a60c4447ea2549620609f4ef6a7a7a68d1a12d9d6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Eastern\",\n      \"mode\": 33188,\n      \"size\": 3503,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"842f7a103dfac9c0c2c33c9cc392a113d266ac064c5c7497883ab41b797ce194\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2346,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"92ac6208f1ef357787fcfce6a334990252189eb0b427b28bc60e21ab5e792b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Newfoundland\",\n      \"mode\": 33188,\n      \"size\": 3664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b960a58d6d3f6a272707f941f55b15b8ba3fd0fd55f8680ea84af6b1e98bae0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Pacific\",\n      \"mode\": 33188,\n      \"size\": 2901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"460182c93960fd636820b1b43cfec871da4f0197556bb6bdb2fa527b637a4332\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Saskatchewan\",\n      \"mode\": 33188,\n      \"size\": 994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"929d07457407529637626d09f5ca975b4f05801f35d0bfac4e3b0027efee6776\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Canada/Yukon\",\n      \"mode\": 33188,\n      \"size\": 1609,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e4afd69d844499d8bf3bb276d3ecab98ac10cddb21c180b6717e5635485ccf38\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Chile\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Chile/Continental\",\n      \"mode\": 33188,\n      \"size\": 2538,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b83e4129763ef7a22be3fba68029b4ecb6f14a360112498446d8c89640f420b5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Chile/EasterIsland\",\n      \"mode\": 33188,\n      \"size\": 2242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d344955a3a8dea47b50a72d2af7fde01a6a27365bef0fefb2c11429a4f5dfca1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Cuba\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7871f875a8819f415c292519db1590556a0dc1a6ce691bf4f7af55e6716fb894\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/EET\",\n      \"mode\": 33188,\n      \"size\": 1876,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0bf6d2669ab45c13a1c9be47c351972feb671770b90a61d9d313fc60b721b2b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/EST\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9e75f112a498ff00344551c3c5c4a62bd15d5c218ee951f4363ab218c5d88eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/EST5EDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79ce27e03a2752091e8a49cc7e7ccc9ac202d6c52dd5d224571fe82262fbeec8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Egypt\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"279bbe1fa62da67387c63593b60bb655252ef5c8f189cf43469087740af2b4fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Eire\",\n      \"mode\": 33188,\n      \"size\": 3543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff19972d561b3b6a9bdb0ec69a3ed3b59ca5ccd1b14929e29bf86d757255eec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+1\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35d004edb2a0b1137ae1ea3659ef8e95a753330f0713fc94929d0f79d8021b07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+10\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4762603f3f51c0d5063ea549f9a578b7ebf26e47fd7109a6e34495ac3e09b2ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+11\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a23521d6e93326291dbdacf2857f8a78970bef3dd93a53557da4cc2e79c36ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+12\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec7046f7e41252f839950ce04e3f20e41ba228e678aae2a45b5b050ba990e626\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+2\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21319b8c2634a8349e84c3bef422998f6dd4f79bad91f79fa38145c1f6b694dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+3\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7861defa0a8bc5e0ee58d8a7a993ac22950e3fed608c9532c680b74ef6cc67f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+4\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f0ab77c5beca68231484090c38ecc1ce211b135511d5431dc1994f8a2580c89\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+5\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be7cef32cf0094520b344fc461bc28747e617d6043b8be0b0871e87225ee8568\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+6\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d285eec873a91b2660ff29816304693056ee61ac1e9bd3485e26c4bcc067e041\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+7\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"631be5659ae83739e1056e088289b642caf4d07be5887f74c6cc954e2b0e9e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+8\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0ede5d811e0d8b283b18b80aebe6ce617267664ec313fc5bf01e2880a8c4229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+9\",\n      \"mode\": 33188,\n      \"size\": 148,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6aab552f947986b00b2d43ff28a3257ab7b88967322b9ce067e45c5ea96cc014\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-1\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5f7f0682e71000de343fce27f2e8cff9e37e50cb064bf0f61245dc7ff6806ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-10\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fdcfd00c1be46329891da92b46f49258b35c09eb9e1103e3789a3d58338eb78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-11\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4439c8a7d5a8c87c47b7a81bd2e9534c8c676f610d4038fdf3b3951089a5db91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-12\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f0c2c21cec4020ec3116c038ca9ff5e5a9e863ddb7fc0beba7136c321b05851\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-13\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c4e6bff6354406378f2bdb165fae025fa100fe8c7d76c6cfaabb716f6f096ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-14\",\n      \"mode\": 33188,\n      \"size\": 150,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4685f92efa5bbdb625dd8d6454a340af8ac0510308b6b66847ad5f7bc3c4fc84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-2\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"530335b26ac0306edc8f0683a830bc1e7f5111ad228df4b74c197d2cb9c31387\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-3\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a59e1e4a707222ac22fefb3a6dc495cef266872a94d51e5ca862ffde74ef0c4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-4\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d6471f8835da5e7906f8220dd9674b664573fee650f0a28b5ab51aa54a4524e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-5\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"33a439130048c8b6400ad082b2e4011c7b85fafe9171e13110aa86f266bedfa4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-6\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2ae16bd9a3a9a75788ca13a281bcc39567c93aaf5ad5402fcbfebac473b6cf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-7\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0e37d9bf496f375b7c024e81b6ae5943ccbace0ffbecb684d8bd1847c5cb93a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-8\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ec67811fbce13ee23123eee60791be8cb5f9c84451ae0d8297738af9b7f0cca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-9\",\n      \"mode\": 33188,\n      \"size\": 149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16ed57cd7c3577fdc22d57683841e922b208a535e6125e686be4f8702a75f485\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/UCT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/UTC\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/Universal\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Etc/Zulu\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Amsterdam\",\n      \"mode\": 33188,\n      \"size\": 2949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a813ac6b8d1b68a7960242cae5325a2269fd1c791b203f8d22f2dfa3b61ba87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Andorra\",\n      \"mode\": 33188,\n      \"size\": 1751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add5505c473225e33a884a02105610a9b95003f429195624b953c18f771317af\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Astrakhan\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a027561f493c02a04d699903a08e9e78ac76eb3a719c4749d9ae9480418baad8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Athens\",\n      \"mode\": 33188,\n      \"size\": 2271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"799090551202c0b8417f836facf75049573dd1c27b5e6adeb584fcc414051139\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Belfast\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Belgrade\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Berlin\",\n      \"mode\": 33188,\n      \"size\": 2335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7eb93dcba603d528fdf536160ef6911c16f834afcf88ce23a382b97ff28319d4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Bratislava\",\n      \"mode\": 33188,\n      \"size\": 2338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7290e2da43a8b82b3c46ac2a05e072a8cecbf8516e5c286791dbdd68a761d205\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Brussels\",\n      \"mode\": 33188,\n      \"size\": 2970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11497c2fd62834d7c1ab568fb47e5947a7f5a63378dc723d7f73ccab21da5342\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Bucharest\",\n      \"mode\": 33188,\n      \"size\": 2221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b3a0017333b2f466e59c8ac3dc0cf7aa4f0a4608040a3180f752b19d6a93526\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Budapest\",\n      \"mode\": 33188,\n      \"size\": 2405,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b67f2c4690a87f294ea5d35ae3967c8aa8bde227aeb36c3877285e4e94a17418\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Busingen\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Chisinau\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5749f01c78d0c2fd50d0dc2280c1957ce0419edbfc7c4073c67e6da78153d8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Copenhagen\",\n      \"mode\": 33188,\n      \"size\": 2160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2d9a359ef02d2afe293f429c4fd60fc04fbf8d1d8343c9b224dcfc116c011a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Dublin\",\n      \"mode\": 33188,\n      \"size\": 3543,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff19972d561b3b6a9bdb0ec69a3ed3b59ca5ccd1b14929e29bf86d757255eec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Gibraltar\",\n      \"mode\": 33188,\n      \"size\": 3061,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c79088f67ba5d3fa9ad989bd573bfdef0e86c89e310ea70bc3e01e14dca1075e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Guernsey\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Helsinki\",\n      \"mode\": 33188,\n      \"size\": 1909,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed7d89fae1fb40a9582edd7e03ed02d7fe81ba456b9c1ed8d6ee5f0b931aad45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Isle_of_Man\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Jersey\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Kaliningrad\",\n      \"mode\": 33188,\n      \"size\": 1532,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78018b1f78b60635b744bc5d78ca209f87c184a634ffe11510b3dfe885eed165\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Kiev\",\n      \"mode\": 33188,\n      \"size\": 2097,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"242912df3212e0725ded4aab25fd869c52f13c3ce619764a883adcbbd937afc5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Kirov\",\n      \"mode\": 33188,\n      \"size\": 1167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a44267313cba43fb671622af5b17cda285def184f6121e8ec6007164643e3c25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Lisbon\",\n      \"mode\": 33188,\n      \"size\": 3469,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bbe65d4ff3394ffa1b4ae6fe2296e333f55bad0ae49ca6717b6076e53490ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Ljubljana\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/London\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Luxembourg\",\n      \"mode\": 33188,\n      \"size\": 2974,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90b76259274c78a40f34aa5b58545b5409edfbba2fd08efa1b300896cb4062ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Madrid\",\n      \"mode\": 33188,\n      \"size\": 2637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74103ad1e48f71f4cd9b6d1c03dcd97b58d87bb8affb02b1d6967b204036ebd6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Malta\",\n      \"mode\": 33188,\n      \"size\": 2629,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c4134c8d37bd159e31fd739e8b1b8203a9f3023788bd9c83b8109e361eee5d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Mariehamn\",\n      \"mode\": 33188,\n      \"size\": 1909,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ed7d89fae1fb40a9582edd7e03ed02d7fe81ba456b9c1ed8d6ee5f0b931aad45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Minsk\",\n      \"mode\": 33188,\n      \"size\": 1370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c82aa831a68fec1c918d23393d795fef9dbf4d0948791bcba6ba09f45b3826c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Monaco\",\n      \"mode\": 33188,\n      \"size\": 2953,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7c723359888417b86a66a609ffdd0becf81673cbb3e8b011131088b4d26f6bcd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Moscow\",\n      \"mode\": 33188,\n      \"size\": 1544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02d55516d0f9d497998260b4f129aee59867b77a920ba2ca0c58b15ec8588e7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2aa2a3f77a43b7558a7508a6cd6c50fdf7d991f9d64da5948fd9003923b1d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Oslo\",\n      \"mode\": 33188,\n      \"size\": 2251,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e635da2b178fa3ea13ff3829c702844cf8bd69e16bca8e1d34dbd9249d01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Paris\",\n      \"mode\": 33188,\n      \"size\": 2971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735b08e2737de2b47e79f596f3574b5a9e9019e56d2ead0cdc17c0b29e84a585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Podgorica\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Prague\",\n      \"mode\": 33188,\n      \"size\": 2338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7290e2da43a8b82b3c46ac2a05e072a8cecbf8516e5c286791dbdd68a761d205\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Riga\",\n      \"mode\": 33188,\n      \"size\": 2235,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79d10debbaa2743458d0dec1fb71d3c576cea80d245f84819da82a25d93c1401\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Rome\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Samara\",\n      \"mode\": 33188,\n      \"size\": 1253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52278e6f22bf900faeda4266078cfa7fed25cc1d5653bd345cf3090fde6e9114\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/San_Marino\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Sarajevo\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Saratov\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29ab2a05f63412656a143515fe57218a8e19b9c916dfd05de15a87afcc0d9849\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Simferopol\",\n      \"mode\": 33188,\n      \"size\": 1490,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b1ee6f714fd88fd61fef6df54f95abacb80dd3036c25e9a10708fec9b11c34cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Skopje\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Sofia\",\n      \"mode\": 33188,\n      \"size\": 2130,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16813fb30f2ebb782a806ce0664014ddfbf921890d32ec3d1398bd182bf9245c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Stockholm\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"07b242f9e3d8150663bfaf417fe7d209927fc299fac487789b70841956c35335\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Tallinn\",\n      \"mode\": 33188,\n      \"size\": 2187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3c4ba916c25500c709c56395c040abad62a834fafaf5163a89974b7f66b019a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Tirane\",\n      \"mode\": 33188,\n      \"size\": 2098,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"62dbc606a32a5f50ceca86c6f96d088ea689bced60a1623c986f045cde9c730a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Tiraspol\",\n      \"mode\": 33188,\n      \"size\": 2445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5749f01c78d0c2fd50d0dc2280c1957ce0419edbfc7c4073c67e6da78153d8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Ulyanovsk\",\n      \"mode\": 33188,\n      \"size\": 1281,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cfe87e108465369f14dbf5f8eed9285028f6500c09d06cc3e787be94c55cb91\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Uzhgorod\",\n      \"mode\": 33188,\n      \"size\": 2103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"098575b4ec6599758c85bcad8dd21d89bca213a9f890c0ead6defd14878705f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Vaduz\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Vatican\",\n      \"mode\": 33188,\n      \"size\": 2692,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e878580b27d866d9803e3b82eed5c0b851ef55174e2b76e13caa5e741421a138\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Vienna\",\n      \"mode\": 33188,\n      \"size\": 2237,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"116fab88b849fbbba59b136477814d2e0fa7d7f735166554d6e72a787cd2ccf8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Vilnius\",\n      \"mode\": 33188,\n      \"size\": 2199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"75adc0a906b39e283f5e5020984a36f34b4f58ef1d3099efbc899ff07f035f7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Volgograd\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8d840d736f75d20c8b2815c5664252bcbde1fab71fd3d4efe17a97ac83ddaf3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Warsaw\",\n      \"mode\": 33188,\n      \"size\": 2705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e7493c1ca050e4134062a74aa4a4fc32159c042b4c9d8d40c8bfc9d273c5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Zagreb\",\n      \"mode\": 33188,\n      \"size\": 1957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e957543623baaba84999b40188e7e0948471b75a8ff4f88abb267e773feb8e5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Zaporozhye\",\n      \"mode\": 33188,\n      \"size\": 2115,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b6c5127b52518818e3b4211e89e5e1e9a479cca65f7763a0afb145d512c38e34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Europe/Zurich\",\n      \"mode\": 33188,\n      \"size\": 1918,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc45f8c6c8190477cdaae46f77059fab74fde92a02fc57b733f07cb9a55e98a3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GB\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GB-Eire\",\n      \"mode\": 33188,\n      \"size\": 3687,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b14c486019e3cb259cf8235a0d6a4bc3ff6cfa726a165f1ea2df403c8ae31b86\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GMT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/GMT0\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b39879094135d13efd282937690b43f48bb53597ce3e78697f48dcceaeb3ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/HST\",\n      \"mode\": 33188,\n      \"size\": 128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"44048bf7df61bdcf45972c13426b039f0d34d80947d60a2603183b3b6be4027f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Hongkong\",\n      \"mode\": 33188,\n      \"size\": 1231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"680a46ee9866bd0c8435fef70694663c1e8ca2ba1e50ff2979ad62f27295707a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Iceland\",\n      \"mode\": 33188,\n      \"size\": 1188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9cdcea6aa1eed8276d3f6620e0c0ffae9cfcc3722c443ea6ba39147975eafaa3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Antananarivo\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Chagos\",\n      \"mode\": 33188,\n      \"size\": 225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9d2fc010d11285d8430248e7a9ca16c5fe67949e768866f00b3be70aa0ea871\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Christmas\",\n      \"mode\": 33188,\n      \"size\": 182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d094a3d9b022ed04fc53e4a665588bd73f4eeaee9c23667b46944bac5dbbe05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Cocos\",\n      \"mode\": 33188,\n      \"size\": 191,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a57c446d6734a074659b854ed56cec53c40831a33c1052ce6ef4b5f0f6b0009\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Comoro\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Kerguelen\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4dcaa3dc0c2628097499d2cfd37ab2ad70011ee31be9f7e45391ea2faee63b07\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Mahe\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82a6e33139b0394eb1a5cb9ffb150a42df5d6fc2c56ad2642285f1d5e553fd17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Maldives\",\n      \"mode\": 33188,\n      \"size\": 220,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5b933b3fc554914587c6af95702a4c0d93941418737a8895372ea514aa7d475\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Mauritius\",\n      \"mode\": 33188,\n      \"size\": 267,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f257466ded0ce1a324c63e6ebc3a39354e6cde0504f1daa35136c6855278ef0f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Mayotte\",\n      \"mode\": 33188,\n      \"size\": 285,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f143bcb83b80bc1ad0bbb8ad736c852e62bbeb6b3134412bfa77684663ed222a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Indian/Reunion\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c3d95eaceb2806a82b1f2c093f3d73ca0cfa0034ad0446aefbe8c4904f6a955e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Iran\",\n      \"mode\": 33188,\n      \"size\": 2624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29fc1861f6e088decab370c3ef2c090d0c3fbdea50b78c2d3158ddaf001b8088\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Israel\",\n      \"mode\": 33188,\n      \"size\": 2321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e61da0baf4d2d8f149ed84b8694cc5d4aadbee78d2014771417a67622e653fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 507,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"addb98caf3459bb75d6e14ed76aa66e642bead2d067e7fe81814a4f02cf13503\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Japan\",\n      \"mode\": 33188,\n      \"size\": 318,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"046bb09bc08554ef8a54dc05685d0eab10e04c692f6320b6091b6a6f07214c83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94c42dbf73fe0fde173fed33b5f15512b1ea614f40108ac0dacf6e15c23785e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Libya\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8ff53f7072863fb56f1e71339392b6de7e50675efa4333b9e032b677c9c9a527\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/MET\",\n      \"mode\": 33188,\n      \"size\": 2102,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fff331a4414e98097d33bec1a9bbf2a155d991b57acd1bb4c11f8559fb4e514\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/MST\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8fb610056087bb3ca8ecf5cdcb5305c1652b649fde512f606b9ee1b3556fb9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/MST7MDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85452d031526621178e9b24c91af69b7ecc30df47036669378956135c4e735d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Mexico\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Mexico/BajaNorte\",\n      \"mode\": 33188,\n      \"size\": 2356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d827b95b4fa16b8c56d9a1636341c9112657e567ae84b37a9bfca133ae31babb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Mexico/BajaSur\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9340b719b250773262cec62e771d121105aed168836723dfc305e30bb04cfbb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Mexico/General\",\n      \"mode\": 33188,\n      \"size\": 1618,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88bc3fcb1a92ef053e0af4af9053ecbf12855fdf18f859b2a54d826dbfacb655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/NZ\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/NZ-CHAT\",\n      \"mode\": 33188,\n      \"size\": 2087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58019f2faa29dc7db7081293230a728769054dd7c0d0fa9e96e8c4299e71314d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Navajo\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/PRC\",\n      \"mode\": 33188,\n      \"size\": 582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"395b1d4ba9ef45348272c98ecab314999ecaa510f7c5830342ed6eba42cfc25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/PST8PDT\",\n      \"mode\": 33188,\n      \"size\": 2294,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d8e69bd43e8d71f0f58e115593814d68c1a6aa441255b17b3e9a92a9d6efc46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Apia\",\n      \"mode\": 33188,\n      \"size\": 1134,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb24a31e538dd3ad0b22cf4788d80cb17d79134622510e2aa67c8712d09721cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Auckland\",\n      \"mode\": 33188,\n      \"size\": 2460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7b5175387ac78e29f7b9021e411512756be283ed3d1819942ef5d45ecf338e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Bougainville\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1b670d434aa6c04cbf73b647a07e5be7dcf2ff30663e10c24e0f0cfabe55b36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Chatham\",\n      \"mode\": 33188,\n      \"size\": 2087,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58019f2faa29dc7db7081293230a728769054dd7c0d0fa9e96e8c4299e71314d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Chuuk\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Easter\",\n      \"mode\": 33188,\n      \"size\": 2242,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d344955a3a8dea47b50a72d2af7fde01a6a27365bef0fefb2c11429a4f5dfca1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Efate\",\n      \"mode\": 33188,\n      \"size\": 492,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85d792affc275df1a1bdcf9067cb59f6b1ab8bb93c450cee1293a8157a43c6ad\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Enderbury\",\n      \"mode\": 33188,\n      \"size\": 259,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5bf2e193795d4a8ec88bcdcf338097dfa71c254332ed3235e7d3270ea7051cf7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Fakaofo\",\n      \"mode\": 33188,\n      \"size\": 221,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ebcdbbb97d8fa7c9a20ecf62964d207f1ed81e73a3cbea77dc8be5144950af6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Fiji\",\n      \"mode\": 33188,\n      \"size\": 1103,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7419d63f407369e5d91ce53093a6903fd8a9841cdec66aacc843d2c4df8ed10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Funafuti\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"812f276576cae6bbd0135d40700fde4fce64f830f75fea928cabe77c51dce579\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Galapagos\",\n      \"mode\": 33188,\n      \"size\": 268,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3727ec66f71d8629656377c1f3a004c5cfade0f6c52b8da8b7c3ba2d36998603\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Gambier\",\n      \"mode\": 33188,\n      \"size\": 186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"abd4f7e51731d259e30ec4b33c2bcb899e147ee102eb278a1a9b2bb8001c64db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Guadalcanal\",\n      \"mode\": 33188,\n      \"size\": 188,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a69b3ab3a6e6541933831609ab8bbc3ed5bf0ff678e519226b8df966b4973f20\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Guam\",\n      \"mode\": 33188,\n      \"size\": 525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c97a94f15eb7ed24c114ed3b6103987aedd65435aabb85217845df4695fa9069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Honolulu\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Johnston\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kiritimati\",\n      \"mode\": 33188,\n      \"size\": 263,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b78f341b3f703c5dc508805923c91e3884d91ae8bd1e2f82d9b28b2308cd8eef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kosrae\",\n      \"mode\": 33188,\n      \"size\": 386,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5e1e429c7d31a845f3ff7f73604e13049ac51626da067b2cd2f4cceac34b2c3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 349,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94c42dbf73fe0fde173fed33b5f15512b1ea614f40108ac0dacf6e15c23785e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Majuro\",\n      \"mode\": 33188,\n      \"size\": 339,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5663127802eeab9ef7b7eb3c889e76ca9683001ed76a2a4549906e864fd10f32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Marquesas\",\n      \"mode\": 33188,\n      \"size\": 195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a63de681b53d7bfc728c5d491b2986ab47347a9f2fd15a6f3b6ff978d2f826d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Midway\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Nauru\",\n      \"mode\": 33188,\n      \"size\": 282,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90f5b914416c9e4189a530cd7fcf878a19e5f5569da00bc926a4d2b6c0cdf0d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Niue\",\n      \"mode\": 33188,\n      \"size\": 266,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c16c73631f28c41351fff90d3108bc5751cbd40010fdf872da112a10e9739a53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Norfolk\",\n      \"mode\": 33188,\n      \"size\": 933,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d3ea212e8cfe37da5b6becba0cbc308a26bd5590986d4f046845bb5571aa899c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Noumea\",\n      \"mode\": 33188,\n      \"size\": 328,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13e18b4bb426c3739b34e37d6cdc00d488721a05865cdeca94af76246f55a4de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pago_Pago\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Palau\",\n      \"mode\": 33188,\n      \"size\": 199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa004039c36449b9a8e280ff0c768e4d15d3853d9f2b87a177d365d8ad864525\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pitcairn\",\n      \"mode\": 33188,\n      \"size\": 223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b0ad4cbe872b4d208d45bc6d326290cd240c1886150f0ee42638386276a8b0b0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pohnpei\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee4a05d2735ebff35c2f093f0b2d03f70434de110a5403ed7a218e1b73bcf3ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Ponape\",\n      \"mode\": 33188,\n      \"size\": 334,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ee4a05d2735ebff35c2f093f0b2d03f70434de110a5403ed7a218e1b73bcf3ed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Port_Moresby\",\n      \"mode\": 33188,\n      \"size\": 206,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1fb4613fb4bf246f537e265e441fe5f62713037df40338cfd80cb7d768e8ca5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Rarotonga\",\n      \"mode\": 33188,\n      \"size\": 602,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9695a885289664511eb65f931860f584e7c5443d6f05b10b5197ac7834d47cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Saipan\",\n      \"mode\": 33188,\n      \"size\": 525,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c97a94f15eb7ed24c114ed3b6103987aedd65435aabb85217845df4695fa9069\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Samoa\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tahiti\",\n      \"mode\": 33188,\n      \"size\": 187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9a22621ddb737b5d6342691dc2d94e265c81b0e743010b6713986db122fc855\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tarawa\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"28fea38528135a54fd642fe3d2bbb41aa8da6b7c892c3991ab2612a81144e799\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tongatapu\",\n      \"mode\": 33188,\n      \"size\": 393,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14d5bf3a7fea21eb6c9e63970d1dad5b9fbedc5f5b0fd3f5069ee74f7a0f4d8d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Truk\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Wake\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0346a78cf610bc43eae87c0a332d30ac5cf9c95001a4264731563cccf3c38331\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Wallis\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"837699bd07ada63d632fc2303a687e5ef9e194e063bac786055885258206ee5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Pacific/Yap\",\n      \"mode\": 33188,\n      \"size\": 296,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cd2606a5760aa15600fa906aec3ddea4aba9b89b1e1143de20c7db52ace5bf32\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Poland\",\n      \"mode\": 33188,\n      \"size\": 2705,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68e7493c1ca050e4134062a74aa4a4fc32159c042b4c9d8d40c8bfc9d273c5fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Portugal\",\n      \"mode\": 33188,\n      \"size\": 3469,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bbe65d4ff3394ffa1b4ae6fe2296e333f55bad0ae49ca6717b6076e53490ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/ROC\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"25cfd02bc847bdcb11e586445ba886a76315f1f9be86f7e74944a6e8e8644543\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/ROK\",\n      \"mode\": 33188,\n      \"size\": 659,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3673a9439d49ea97b47c9fb28433c6d41c469ca03ad320768f1514d075647c26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Singapore\",\n      \"mode\": 33188,\n      \"size\": 424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e6929fde43ffc48bbac4081b31bbf7fd42643b3c26fadf322bdeadeb23cfc748\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Turkey\",\n      \"mode\": 33188,\n      \"size\": 1970,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f24f072fa325c0a9bbecc48ea2782317c459a6cad941a37f7e305238443c45a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/UCT\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Alaska\",\n      \"mode\": 33188,\n      \"size\": 2380,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5df0a6f7f9d43cbbd3e74d33a23fe686080eb55965f5d9246b6e859b3db9d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Aleutian\",\n      \"mode\": 33188,\n      \"size\": 2365,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c45c94d316413c8f666aff65ed1f837a7e2d392262de31ce59fac2e96a1edc81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Arizona\",\n      \"mode\": 33188,\n      \"size\": 353,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c013ecf82b6ed1dde235b5fc983fe9d23c8d56d610323f7c94c6ba3cd7b4564\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Central\",\n      \"mode\": 33188,\n      \"size\": 3585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"143f29b957173a46008187230a38125bd3a03b3dbcba0dc1d1b8661331f71693\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/East-Indiana\",\n      \"mode\": 33188,\n      \"size\": 1675,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"55c2f3feb241f88435e9876e76e2c69ddfd0dfd36a273b551ff480e2cfad99fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Eastern\",\n      \"mode\": 33188,\n      \"size\": 3545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa6dccc303352e1195c4348b189f3085014d8a56a1976c8e8a32bd4fedb69fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Hawaii\",\n      \"mode\": 33188,\n      \"size\": 338,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"528f01a0a7c21d9cc853eb79b32ecabe8a343028d116b67e6d05cd616d83d5ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Indiana-Starke\",\n      \"mode\": 33188,\n      \"size\": 2437,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9e75dd6c52c5339c8e2b195ff8ac6a7212e2c5e84b2be3023cc355972c20d856\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Michigan\",\n      \"mode\": 33188,\n      \"size\": 2244,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e668e3859786c92f462769f87d5bc4ef31b5d6646bbd1635b91007e2a03dbc6c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4df3cc74c79d070a25a7927744d3a422a05d862a9a234a12105c5c964efb22d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Pacific\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Pacific-New\",\n      \"mode\": 33188,\n      \"size\": 2845,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fea9d66ff6522e69d22073dc4e84179b7cac2e372b398dc2fafdfdb61a9eb2e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/US/Samoa\",\n      \"mode\": 33188,\n      \"size\": 196,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7218a2ae386cd5e8981a940f6b56f6f9b60a65f3e3bd2ec1fe6c9d43bac4db1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/UTC\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Universal\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/W-SU\",\n      \"mode\": 33188,\n      \"size\": 1544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02d55516d0f9d497998260b4f129aee59867b77a920ba2ca0c58b15ec8588e7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/WET\",\n      \"mode\": 33188,\n      \"size\": 1873,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e5e7c4631295e7f17085e3530f99fc2984cc7e4bdb9a07db7702de8c18c2aab1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posix/Zulu\",\n      \"mode\": 33188,\n      \"size\": 127,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c71b358be81e13b1c24e199a119fd001dbcdb90edc7d44c2c7ae175321a0215\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/posixrules\",\n      \"mode\": 33188,\n      \"size\": 3545,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa6dccc303352e1195c4348b189f3085014d8a56a1976c8e8a32bd4fedb69fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Abidjan\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Accra\",\n      \"mode\": 33188,\n      \"size\": 1382,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbee22da817893911690f2ee7093499893985e39c0ced1116709947f9bd206d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Addis_Ababa\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Algiers\",\n      \"mode\": 33188,\n      \"size\": 1300,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84081708d8029add247fd5add1ed963c2811b8b7841b65540ba7bbb02a068019\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Asmara\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Asmera\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Bamako\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Bangui\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Banjul\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Bissau\",\n      \"mode\": 33188,\n      \"size\": 748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"197606820a95c35d6c3d2f64e5e1d9542e198732db52d3b9ca6ff7294bb0ff9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Blantyre\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Brazzaville\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Bujumbura\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Cairo\",\n      \"mode\": 33188,\n      \"size\": 2512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3c84ceb744bbb495b49ef286308143f267da03f75931b82fdcb5c5a3aebcdd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Casablanca\",\n      \"mode\": 33188,\n      \"size\": 3005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfcbc616b2e3e38b3dd19cccbf3c3a3859aa40e4bc8342df4b19347a34ca1fce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Ceuta\",\n      \"mode\": 33188,\n      \"size\": 2599,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca6b06411c93017e93ded83d917cac8399690d6fb2771bcc66ecf132ee2e3ef6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Conakry\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Dakar\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Dar_es_Salaam\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Djibouti\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Douala\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/El_Aaiun\",\n      \"mode\": 33188,\n      \"size\": 2843,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"356a80604aa80dd33c013e1340a88f828cad5c942d4e6d2ffc7842f7057b758f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Freetown\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Gaborone\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Harare\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Johannesburg\",\n      \"mode\": 33188,\n      \"size\": 811,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af7338314b4255661ce9afdd064e487321d4369ce15488395bb20bb4627d1ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Juba\",\n      \"mode\": 33188,\n      \"size\": 1223,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2837717687d9cf2982e14bc35199ebe448380678330f15de5a6a2c49ef204b3c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Kampala\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Khartoum\",\n      \"mode\": 33188,\n      \"size\": 1253,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0cd1350c87bd18606418d615dd78790f8ee9458ade7acb1af82b67afbdfc27f1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Kigali\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Kinshasa\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Lagos\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Libreville\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Lome\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Luanda\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Lubumbashi\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Lusaka\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Malabo\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Maputo\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e39755e95604e242f4218d248dafd51ffa09392975c3f86c26907e6aad60da9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Maseru\",\n      \"mode\": 33188,\n      \"size\": 811,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af7338314b4255661ce9afdd064e487321d4369ce15488395bb20bb4627d1ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Mbabane\",\n      \"mode\": 33188,\n      \"size\": 811,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af7338314b4255661ce9afdd064e487321d4369ce15488395bb20bb4627d1ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Mogadishu\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Monrovia\",\n      \"mode\": 33188,\n      \"size\": 773,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"eb1deb0dd9325844227c376d1532b484511c76f79f42032806553d36a9464e55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Nairobi\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Ndjamena\",\n      \"mode\": 33188,\n      \"size\": 765,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"180050fab205819406f6d6b572fe6f37eb805cc3f796543185c3229108470189\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Niamey\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Nouakchott\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Ouagadougou\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Porto-Novo\",\n      \"mode\": 33188,\n      \"size\": 711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"699bdf57ddb361bef922d520674b4fecd15db812c73e984727455fa7c3ada2d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Sao_Tome\",\n      \"mode\": 33188,\n      \"size\": 803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0de4113ee9dadb292b55aaf2d49c4726604149a44fd6c52af4f098e6d3be5560\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Timbuktu\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Tripoli\",\n      \"mode\": 33188,\n      \"size\": 1195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72bb85f8ac4ec74b2ae92214c047c82f1f39c9c0785d0f54e152b8c1d940adda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Tunis\",\n      \"mode\": 33188,\n      \"size\": 1250,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbc64f2ddde5756e10d2ec8156bbe83f6f9ecbeb33b5bd6d771542f623d8fc39\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Africa/Windhoek\",\n      \"mode\": 33188,\n      \"size\": 1574,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aae55113e05e137fa3b35bd85ee258afbcb1da33b7f05227e2bb8398163244b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Adak\",\n      \"mode\": 33188,\n      \"size\": 2905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d3e31970fee36399f30950e3f68ce7a5038be38a64547241c2ac97daaccd994\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Anchorage\",\n      \"mode\": 33188,\n      \"size\": 2920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5b62f7337785e26117bbc34ef7976018f021e63eb3e208f8c752d4f949ef2ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Anguilla\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Antigua\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Araguaina\",\n      \"mode\": 33188,\n      \"size\": 1445,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"82109fd707c8edb4e656ff24c036c4745b6eb99568f9f8be4a9480f69718b893\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11f0d85022c24b9744ed8511f75ca67bed67a3e5d8b439fd02ec0d05d1afa710\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8eb2f2a5ceead008a4000d50d3e8363a3181dd29a51600efd0328fe1ff75ba0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/ComodRivadavia\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8eb2f2a5ceead008a4000d50d3e8363a3181dd29a51600efd0328fe1ff75ba0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71317d3d37f6c9547838beb260ddc830350e32ebb702fc280a878e0cc20b5b01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9b3f77caa862cee71a893e64fe1e4dbb24eda9ceff5875ae5b744638810aa14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/La_Rioja\",\n      \"mode\": 33188,\n      \"size\": 1658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ca44f15fcc0edf702aa78d83f590d05964fffa5955e697ad7e12c1231f974402\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5005f3971c083b81c94b0fa05262178468f7fb74462576a412f3d42b8dde50d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91cf62d744daee339ecffef8c6d3222602c0edcbac281a986de084084eee0a66\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Salta\",\n      \"mode\": 33188,\n      \"size\": 1616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"29c28845ace42cd30c66b7368489b0739b6e576a6ec994612aa6b0f21e3e41e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/San_Juan\",\n      \"mode\": 33188,\n      \"size\": 1658,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f37e4d35b9e3881d3a842b82322841fba4b1af27a4cc6a6e32a29ee516f5b7d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/San_Luis\",\n      \"mode\": 33188,\n      \"size\": 1674,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"792ff8486d80c28aca88a4dd4a235f7fa2d8096c78b712807867d70ed696350b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Tucuman\",\n      \"mode\": 33188,\n      \"size\": 1672,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff5b362c9623df8cc3c5322a8bc5fc68b8cb55a0bb2e869856244559179e65f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Ushuaia\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef3d614cc912b10dfd59f42f529a41d4e4f5dc0a653a5cbecf7f49eaf32518a7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Aruba\",\n      \"mode\": 33188,\n      \"size\": 752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec9709d87bbdd0aae7be4070156e5dc05c12d822da203cb1030354342bae2df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Asuncion\",\n      \"mode\": 33188,\n      \"size\": 2612,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8578deb3800b6aacd9e448736cc82f80dbb0247516df7a22663e822bf3d959c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Atikokan\",\n      \"mode\": 33188,\n      \"size\": 885,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fe220cd5f52ece0e3aa468ed33c443eaad61fc9e3bfbb47b7b754e8ad1a4613\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Atka\",\n      \"mode\": 33188,\n      \"size\": 2905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d3e31970fee36399f30950e3f68ce7a5038be38a64547241c2ac97daaccd994\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Bahia\",\n      \"mode\": 33188,\n      \"size\": 1585,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57be9fcdea20da18d7324009677d390f2098a1035f052a946e4c0ab101b52aa7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Bahia_Banderas\",\n      \"mode\": 33188,\n      \"size\": 2128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e44343d2e96738b96a6d83d5327dda8d041b1fb8e62b281f7fac7e56642b960b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Barbados\",\n      \"mode\": 33188,\n      \"size\": 884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64d664790217c76976a3a1f386ac82fc0f2295247f64547385711656b9f8f13b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Belem\",\n      \"mode\": 33188,\n      \"size\": 1137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b42a81883f67e3e7f2ab0d7599a7828babe2847de45cca683ad9c1b9e0e5f517\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Belize\",\n      \"mode\": 33188,\n      \"size\": 1518,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8128f9212e7e47481a2893da5f65f2c0047bf1329e314591435d7bb18b81b136\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Blanc-Sablon\",\n      \"mode\": 33188,\n      \"size\": 847,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e9969e343200d865e82628b88310774524c38ae9c5ede30b7e5163acb70e6a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Boa_Vista\",\n      \"mode\": 33188,\n      \"size\": 1193,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"571117b369cd426ece6f39b03b5105236c6b45bb48a14633c510b8217f9d1425\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Bogota\",\n      \"mode\": 33188,\n      \"size\": 806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e6720337c693fb0d3d5b9da958aed2736a828d3db08d060262c04e98dd4d09d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Boise\",\n      \"mode\": 33188,\n      \"size\": 2943,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7189c739198e19615b75a8a336aabd3cb223a765487382eb16c783cbb91c8c95\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Buenos_Aires\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"11f0d85022c24b9744ed8511f75ca67bed67a3e5d8b439fd02ec0d05d1afa710\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cambridge_Bay\",\n      \"mode\": 33188,\n      \"size\": 2638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dfa58c30cd1217d5f8e9dcb757d64bfb901c28a5f9475a38ac7de9e03c2d80c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Campo_Grande\",\n      \"mode\": 33188,\n      \"size\": 2005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8706aa08dfa1b1d590cbea13a10219797f5462aaba556a2173265c54c3ee514\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cancun\",\n      \"mode\": 33188,\n      \"size\": 1356,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8ce65577ce494166ad8f57f14a55ae961e27dd7aa356d8802fb5c9f2d510fb6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Caracas\",\n      \"mode\": 33188,\n      \"size\": 824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a96e2b167e1bada8a827a7102f82ab54b80f2e34748c157c39d50d4605a1b3f6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Catamarca\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e8eb2f2a5ceead008a4000d50d3e8363a3181dd29a51600efd0328fe1ff75ba0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cayenne\",\n      \"mode\": 33188,\n      \"size\": 759,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0eafc920b259f82d386d82c7ba4dae9301cec9a9dea17abcfd27f40dd2b06d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cayman\",\n      \"mode\": 33188,\n      \"size\": 743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6962181adfca6314029efa4c3a2dae17c775d6031cff3bd6c63d49ed30c31cb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Chicago\",\n      \"mode\": 33188,\n      \"size\": 4125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94f71253caa6bde6db52f2f5ad3b816df0c2da9af7cc7d4a4abf1b91e391821f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Chihuahua\",\n      \"mode\": 33188,\n      \"size\": 2062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f0007a74669d2ede5ccea2c49ff17ced52ae2e28756ebbf5eb08aa08b3e9d45\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Coral_Harbour\",\n      \"mode\": 33188,\n      \"size\": 885,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2fe220cd5f52ece0e3aa468ed33c443eaad61fc9e3bfbb47b7b754e8ad1a4613\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cordoba\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71317d3d37f6c9547838beb260ddc830350e32ebb702fc280a878e0cc20b5b01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Costa_Rica\",\n      \"mode\": 33188,\n      \"size\": 881,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a697b205589062aab7599c2e812f164df50b32f2d9c8f2ea7b42f1e53b4e3e94\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Creston\",\n      \"mode\": 33188,\n      \"size\": 773,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"071acbeb9c771d5bd244b0d6bd73b7e7893aa40deb19c1074908a0094de4463f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Cuiaba\",\n      \"mode\": 33188,\n      \"size\": 1977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8df0f198ed0c5152081615876698fccee1adf1a84368ea30b3e7a00671e231e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Curacao\",\n      \"mode\": 33188,\n      \"size\": 752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec9709d87bbdd0aae7be4070156e5dc05c12d822da203cb1030354342bae2df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Danmarkshavn\",\n      \"mode\": 33188,\n      \"size\": 1252,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"99b1ff4ad370c93145279b56504ccd2d0bb39f92c002aaa490bd5969285cdd1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Dawson\",\n      \"mode\": 33188,\n      \"size\": 2149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"973edbe5bc39b28902053c11641794cd6f455380235bfb9a738a02ff6fd93df3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Dawson_Creek\",\n      \"mode\": 33188,\n      \"size\": 1599,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f2bb35e6c4c8804409dc81ad024881457705dca4ae468184f73c04bff51ead1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Denver\",\n      \"mode\": 33188,\n      \"size\": 2993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7448c66048e5489a28ecad3adc495351163e62cedff714bec6d15506a9e1f548\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Detroit\",\n      \"mode\": 33188,\n      \"size\": 2784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5549176b1eddafbfea4f7156db3872560d9c7085e200706ca281103c7918d1dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Dominica\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Edmonton\",\n      \"mode\": 33188,\n      \"size\": 2886,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"022478c15aee3ef60c10f350122529278adf3954d02e30f78df5ca8d6eb937ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Eirunepe\",\n      \"mode\": 33188,\n      \"size\": 1225,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4f55d375fc0af9be895823939d16d5b414619368817025e4ca1cd33b72b251f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/El_Salvador\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"04993007b8086580ac35e8fa524bbdcd45f045c965608fca3da26deaa1ede337\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Ensenada\",\n      \"mode\": 33188,\n      \"size\": 2896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1a5199868d6aa4c24fef5e908e99e4c6e116d16afc554d25ec431990d8f02da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Fort_Nelson\",\n      \"mode\": 33188,\n      \"size\": 2789,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c20108fb21d7e76aef2c0bd669f1dfd6043b5269020bde6cff669f088d13abec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Fort_Wayne\",\n      \"mode\": 33188,\n      \"size\": 2215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dfb7b2796f9b9d9a69d402b2e8269a2f834e1d01e2da34af490b2b24c21ace5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Fortaleza\",\n      \"mode\": 33188,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c7c0174e80d20bb3233959a3c804006cbeff3d3ac86ab6b1e21988da7efdc9c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Glace_Bay\",\n      \"mode\": 33188,\n      \"size\": 2746,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"799c72cab5fafdcf48dfe766d52c24e7fd7f4a61e0d554c97888023766219287\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Godthab\",\n      \"mode\": 33188,\n      \"size\": 2427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9624c131f68def896035d8ad7e011456dfc60c90a2956e32545fc391e4ec9a44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Goose_Bay\",\n      \"mode\": 33188,\n      \"size\": 3759,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"462bef059c879d10cbcce574a128bc2d847dfc342dd77f43e6494f3aba6cf94c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Grand_Turk\",\n      \"mode\": 33188,\n      \"size\": 2421,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50148cea43182f25effdaba081e72c55239b58f5985a2af2e1ace6d591ef2388\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Grenada\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Guadeloupe\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Guatemala\",\n      \"mode\": 33188,\n      \"size\": 846,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b8d8d7b3edd1a237b4d4aee860162700cf11e25aa9102ba61bed6640ced94463\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Guayaquil\",\n      \"mode\": 33188,\n      \"size\": 806,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"261c214acf962a01f616006a670d717ed104b80afb006f3c78e7e1054c9637fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Guyana\",\n      \"mode\": 33188,\n      \"size\": 801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8664ad5ccf6551c731f7235c7dc307cf5ef4106dc109e99da1cfc3b193b8d536\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Halifax\",\n      \"mode\": 33188,\n      \"size\": 3978,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86c84ef0a21a387fdd0058046268c5eca94c10cb73231638724d344cc478bd10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Havana\",\n      \"mode\": 33188,\n      \"size\": 2977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d4bfd6b414442661f79556ac625c9f30e051af6694be67e3ad312e9e9589c50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Hermosillo\",\n      \"mode\": 33188,\n      \"size\": 994,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"778350bbb96f05ab2e74834f35be215801da358dd7c261f1ba3bfe6f1c9b07e9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 2215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dfb7b2796f9b9d9a69d402b2e8269a2f834e1d01e2da34af490b2b24c21ace5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Knox\",\n      \"mode\": 33188,\n      \"size\": 2977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac4c928ad03acaf42f346aa81bf9d269a513adb14a955ff55a5177927832c6a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Marengo\",\n      \"mode\": 33188,\n      \"size\": 2271,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3e8fe887a5ce407f7208f16d0b296a4594b3f93de33b70d5a260139f66cfab2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Petersburg\",\n      \"mode\": 33188,\n      \"size\": 2453,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"285f27ebb54838060d3a33238dae6ee695af5c258d40780fc89c797a239360ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Tell_City\",\n      \"mode\": 33188,\n      \"size\": 2233,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e364ec1dc4a5ebca7a3bbe89b3f498f9d2f1362739d26a08d887571f3a65d19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Vevay\",\n      \"mode\": 33188,\n      \"size\": 1963,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74d2b6f797d63017075f1425e695e5f61a6e1b3ef08f812bc330e22fae18333a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Vincennes\",\n      \"mode\": 33188,\n      \"size\": 2243,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"970baaf1ed777c07d74546d61282e9df9a0488ad90084210a770c82ae78b8357\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Winamac\",\n      \"mode\": 33188,\n      \"size\": 2327,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cade9b122bd306fd5bb1fd4ff0471861c8eaed414a166ba570554a349a7a20b6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Indianapolis\",\n      \"mode\": 33188,\n      \"size\": 2215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dfb7b2796f9b9d9a69d402b2e8269a2f834e1d01e2da34af490b2b24c21ace5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Inuvik\",\n      \"mode\": 33188,\n      \"size\": 2468,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c51f2f3cef4844e5c800ed3592d85bc69e5f05dc4a53e94c76b2433be16b1a5f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Iqaluit\",\n      \"mode\": 33188,\n      \"size\": 2586,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7179d696e8f2aac641bbe8a0b0635128246fd4669e258befaac2e91170f75d1e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47ddec901639efbe7268363dcc0d8b92a855372b0cae12720d68cce9a8974fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Jujuy\",\n      \"mode\": 33188,\n      \"size\": 1616,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f9b3f77caa862cee71a893e64fe1e4dbb24eda9ceff5875ae5b744638810aa14\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Juneau\",\n      \"mode\": 33188,\n      \"size\": 2902,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2be628832b78514026f7932644e221fd4490d502f686f069d7ebf8ba0b220c40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Kentucky\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Kentucky/Louisville\",\n      \"mode\": 33188,\n      \"size\": 3321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afb7d1fa10278e2b8275017c592ba7679b4800a5fd1c875f5ecc8aa5ab21befe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Kentucky/Monticello\",\n      \"mode\": 33188,\n      \"size\": 2901,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff56ff4d9ee52923c57354d5d836e87cc8acb748bbf0648c2406bcbafaa4227c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Knox_IN\",\n      \"mode\": 33188,\n      \"size\": 2977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac4c928ad03acaf42f346aa81bf9d269a513adb14a955ff55a5177927832c6a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Kralendijk\",\n      \"mode\": 33188,\n      \"size\": 752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec9709d87bbdd0aae7be4070156e5dc05c12d822da203cb1030354342bae2df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/La_Paz\",\n      \"mode\": 33188,\n      \"size\": 792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c95fb5fbc80f32110f36c756e648d901e362e4d96bc48e5b8d5eaf8c232654f7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Lima\",\n      \"mode\": 33188,\n      \"size\": 966,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1ddf01592db3ede97b94d43fd210e2a841365b84017601248f51b21c20314eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Los_Angeles\",\n      \"mode\": 33188,\n      \"size\": 3385,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f2a6fb2744e29e2a6ac88e89843ce0c74f8934b37d1b35d67e115d5363c9e57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Louisville\",\n      \"mode\": 33188,\n      \"size\": 3321,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afb7d1fa10278e2b8275017c592ba7679b4800a5fd1c875f5ecc8aa5ab21befe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Lower_Princes\",\n      \"mode\": 33188,\n      \"size\": 752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec9709d87bbdd0aae7be4070156e5dc05c12d822da203cb1030354342bae2df0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Maceio\",\n      \"mode\": 33188,\n      \"size\": 1305,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"564da2e13a0ac0d0bf7901bef8f811e53c3d78b51dbd5dc200630ba34151e6c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Managua\",\n      \"mode\": 33188,\n      \"size\": 1003,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1a2e937499925a46e4d2b93113e7b035fdc270174a8fb4b65fd61f163b430ca3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Manaus\",\n      \"mode\": 33188,\n      \"size\": 1165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c921cc8c1a0a1ed91805b81c0f22d5ee3a78fe3422f6366160c37b03302fd250\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Marigot\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Martinique\",\n      \"mode\": 33188,\n      \"size\": 797,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18a0f75cca7c62ff1b7c8e0463856c1fa811e796806ef23cfd53d40a860861fa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Matamoros\",\n      \"mode\": 33188,\n      \"size\": 1956,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"298a0a44d6576a9c127e048262a3f7f1b613653e0520a75bf912a65ccef50771\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Mazatlan\",\n      \"mode\": 33188,\n      \"size\": 2104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"972ebc94965c29a285412a68e853fc7729bd741b5be52edeb9f3b9a1a707ac43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Mendoza\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5005f3971c083b81c94b0fa05262178468f7fb74462576a412f3d42b8dde50d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Menominee\",\n      \"mode\": 33188,\n      \"size\": 2823,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9f238c519f7699a3bdd001ffb5588fc5c80329a14c95309aa424c0026440108\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Merida\",\n      \"mode\": 33188,\n      \"size\": 1996,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a6352eb8ee46c326f0231e5e22ae330d465964514c21390e28aa5ddee377fb5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Metlakatla\",\n      \"mode\": 33188,\n      \"size\": 1972,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc8c8661c4ebe17757c7fcc12b570674a0a84af90cdb36edf7e19d0293c36dfd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Mexico_City\",\n      \"mode\": 33188,\n      \"size\": 2158,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b2e4e7d462f693d46142205a03882b383f3cfbc6eaa0a4c514fe71fd5112f12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Miquelon\",\n      \"mode\": 33188,\n      \"size\": 2231,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa668103b3e90dc7ebbb2666fe3e76b29b15627b2eb6a82317a2f9b474ce98c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Moncton\",\n      \"mode\": 33188,\n      \"size\": 3703,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d587577011570e8271781f98b52f5ccb8650a7a1dc2c50789f4cb5d5d7e9c13a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Monterrey\",\n      \"mode\": 33188,\n      \"size\": 1956,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0334e1c8f6ebfdb959a536fea620a72031db45036d563864cdaba4e34b0c2c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Montevideo\",\n      \"mode\": 33188,\n      \"size\": 2099,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5717f3694cbcfdddb8b0ce33c5b50193f3cc1af97474230f0fe4f230d4769b01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Montreal\",\n      \"mode\": 33188,\n      \"size\": 4043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd1fdaf567be65339c2fe8cadf9e690d0929548cd731edcb41ae7f322885a590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Montserrat\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Nassau\",\n      \"mode\": 33188,\n      \"size\": 2824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b3526d4c47155f9f9049070f75b3981b9f17b153e9482afe6e3f83e0f84adad6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/New_York\",\n      \"mode\": 33188,\n      \"size\": 4085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9699b3dbf1b5a2fe33cc0eeb1bae542d83608786c0b1872b07b24adda81556a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Nipigon\",\n      \"mode\": 33188,\n      \"size\": 2671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bedddedf42d1ecd3db1eeb61988fa1216f75b06c45a768822a16b4bf3e78542f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Nome\",\n      \"mode\": 33188,\n      \"size\": 2916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2f167608a9d4171d89ee0a4d68c3ee845ebbd073e3759dc663a95dc8c865e4c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Noronha\",\n      \"mode\": 33188,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc5b5c148b76dc58c925f589124f7f1ac05a52e9bc8f8cb0bf8bbef2b5779c78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/Beulah\",\n      \"mode\": 33188,\n      \"size\": 2929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a05c79be4ba9c4ed5a70aedbb8e83c2864c9ee5d974824130552d11097f654d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/Center\",\n      \"mode\": 33188,\n      \"size\": 2929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4daf0f8f179948ca4f3edfef1c4bf6ea9926d157cbb83334d990c4f3ae76fb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/New_Salem\",\n      \"mode\": 33188,\n      \"size\": 2929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f728e13f15039666ade97ebb9e0e7d54b575495e14aa88ccf2761d29e5a390f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Nuuk\",\n      \"mode\": 33188,\n      \"size\": 2427,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9624c131f68def896035d8ad7e011456dfc60c90a2956e32545fc391e4ec9a44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Ojinaga\",\n      \"mode\": 33188,\n      \"size\": 2062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9cb05ec786e833e837b19a3d7bfe611e6d3ff3da1fc576fa5ea4f44c43f937f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Panama\",\n      \"mode\": 33188,\n      \"size\": 743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6962181adfca6314029efa4c3a2dae17c775d6031cff3bd6c63d49ed30c31cb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Pangnirtung\",\n      \"mode\": 33188,\n      \"size\": 2648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c71e8ae865312e517ebc4076ecb9665c2cfdc7155549d18462e01275961925b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Paramaribo\",\n      \"mode\": 33188,\n      \"size\": 831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cf4b95b3e776a776aaffb4c77cb62dcad960796b0876d0663c01ae3da38c078c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Phoenix\",\n      \"mode\": 33188,\n      \"size\": 893,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a89f0e65cd0a0b2edbbf65a7a81441aa91073b133edac17c25c6c9f809b8995\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Port-au-Prince\",\n      \"mode\": 33188,\n      \"size\": 1995,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aab1855d3200ed78c12406a44d8558a9a875dc57f94090b2c205811a92b5e066\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Port_of_Spain\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Porto_Acre\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90e09a708c3c756baf60fafda6f8a5f3316b8f0f13ae2433bcad860c74bd544c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Porto_Velho\",\n      \"mode\": 33188,\n      \"size\": 1137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"651eea662c20cfff098d84663237abba967604a6d0258d138d75e06ab483390b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Puerto_Rico\",\n      \"mode\": 33188,\n      \"size\": 795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9e478dd8515a4c8086ff535afe44db1cf53b9400ec62aed7b6d122ecfb778f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Punta_Arenas\",\n      \"mode\": 33188,\n      \"size\": 2446,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"300872a317db68e683587783e80e3a464c63971da1774b539fea0ee26763c451\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Rainy_River\",\n      \"mode\": 33188,\n      \"size\": 2671,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1680a0ae7e1d154aa9672b6e2d24155987de256acd7273f23177ef258d4ffe16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Rankin_Inlet\",\n      \"mode\": 33188,\n      \"size\": 2470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1bb3cc33e21e5e7663a0cabcb02f9e7f74ee0619dcd0d84d4a4a31f611698b57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Recife\",\n      \"mode\": 33188,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bf3764907eedcdc1325748d005e883ead0253178f552bf8c26f91c9472c5884\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Regina\",\n      \"mode\": 33188,\n      \"size\": 1534,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ef7b8f3a4e1baf07289907c77a4218ac0be68c7a24e980940a05cbba77e53c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Resolute\",\n      \"mode\": 33188,\n      \"size\": 2470,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a208ed79da175c5081c8db0fb767d9b0e0270e4a73bb95f24ae0ffd22b6354f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Rio_Branco\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90e09a708c3c756baf60fafda6f8a5f3316b8f0f13ae2433bcad860c74bd544c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Rosario\",\n      \"mode\": 33188,\n      \"size\": 1644,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71317d3d37f6c9547838beb260ddc830350e32ebb702fc280a878e0cc20b5b01\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Santa_Isabel\",\n      \"mode\": 33188,\n      \"size\": 2896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1a5199868d6aa4c24fef5e908e99e4c6e116d16afc554d25ec431990d8f02da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Santarem\",\n      \"mode\": 33188,\n      \"size\": 1167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5994056b5ce743dfdcdc80dba996df44665d743abbdff8d8841b7b4ac326339f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Santiago\",\n      \"mode\": 33188,\n      \"size\": 3073,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"986a3d87481910c37ff5045ecb26e8d7832333bb9b8bf0cefa8f2518c787fcb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Santo_Domingo\",\n      \"mode\": 33188,\n      \"size\": 1031,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24bf349defe5c3ed5d8950593acbcd57dc662784ddfae68b31cddfa02746f2ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Sao_Paulo\",\n      \"mode\": 33188,\n      \"size\": 2005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30ef7b506e76ac5286ad4415d7daa8abf0af2b6c63abb540869a8dc1c61f28a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Scoresbysund\",\n      \"mode\": 33188,\n      \"size\": 2465,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa41c201d42521e8a0db51e00fa9487fad84467b15706e00221088e217ba129d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Shiprock\",\n      \"mode\": 33188,\n      \"size\": 2993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7448c66048e5489a28ecad3adc495351163e62cedff714bec6d15506a9e1f548\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Sitka\",\n      \"mode\": 33188,\n      \"size\": 2890,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"81ba6e3b87b7f9c9814c4f607a3c722a0bbd8355ab1647c51847882b3a3c0628\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Barthelemy\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Johns\",\n      \"mode\": 33188,\n      \"size\": 4204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10784794564849767481803ad10924bd7092c041b5e5859dc7cdf883abe13a7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Kitts\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Lucia\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Thomas\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/St_Vincent\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Swift_Current\",\n      \"mode\": 33188,\n      \"size\": 1114,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7752d4a7cd93e6c9a16f89dfa148ce6ac6f491cf40359f9d6730e03b4aedf848\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Tegucigalpa\",\n      \"mode\": 33188,\n      \"size\": 818,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c37dd7463adb25b95fd20bd17473e710e03c9c5d36481b4626a82aabd7469983\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Thule\",\n      \"mode\": 33188,\n      \"size\": 2068,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67e571d61867a4ea726d7b19f5fabca2a7751219685d57eee29570ec9225f0ea\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Thunder_Bay\",\n      \"mode\": 33188,\n      \"size\": 2751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2c04cafec84e648e5d1154986626b32ebdb0def10d7c8843d27bbee20ad82e5e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Tijuana\",\n      \"mode\": 33188,\n      \"size\": 2896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1a5199868d6aa4c24fef5e908e99e4c6e116d16afc554d25ec431990d8f02da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Toronto\",\n      \"mode\": 33188,\n      \"size\": 4043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd1fdaf567be65339c2fe8cadf9e690d0929548cd731edcb41ae7f322885a590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Tortola\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Vancouver\",\n      \"mode\": 33188,\n      \"size\": 3441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59f3b401ccdbabb740e3395b75233402d6d2e0590195df1e5d8e73e736158361\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Virgin\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbe365d9a8abfd164690db1cec6c51c19f86154900595509c991401e13a16585\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Whitehorse\",\n      \"mode\": 33188,\n      \"size\": 2149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"656e8559dd8f0f71b49cbd7e39ea69f9b229cd28cbbd26d67c067faeb71e3dcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Winnipeg\",\n      \"mode\": 33188,\n      \"size\": 3431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a91e3074914af25d44e7428f07b7e15c46a9b1c61adf146d78058bfb95128031\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Yakutat\",\n      \"mode\": 33188,\n      \"size\": 2854,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a8d6177b9fb9653500c7a5468e35508251be2a6dce9040ad9ebfbffcd4cc3ad2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/America/Yellowknife\",\n      \"mode\": 33188,\n      \"size\": 2520,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffb6c39b1c757ff250651391b07dc8d3e3ea361f837472ef57c62eea144677ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Casey\",\n      \"mode\": 33188,\n      \"size\": 846,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"18906bd500b39972ffa02b9ec4b7495a37701aedad4a5b37be9cbc57724687e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Davis\",\n      \"mode\": 33188,\n      \"size\": 846,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74c57bbabd9734817648bb1b717ba8cea2d000297a0c82d9d9f0ecfb5a6de509\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/DumontDUrville\",\n      \"mode\": 33188,\n      \"size\": 751,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02aadd2f58956d4ecf18d22258af85b368a0140656ef079ea81e0f9e3eae59ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Macquarie\",\n      \"mode\": 33188,\n      \"size\": 2078,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5a6da6a5a6c84bb235622dcd38baf933b6252ac2524e2d4ebfc6b2283f44aeef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Mawson\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c21ee7da441169a32db233d5f712b0e0e9f467224c31005a6ee94791e80dce7d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/McMurdo\",\n      \"mode\": 33188,\n      \"size\": 3000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa7d47e6fb209806155ca05d2d0721726515ad678714f3197b9daeb9da3a96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Palmer\",\n      \"mode\": 33188,\n      \"size\": 1967,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d776d3217806a1dfa38b342c7d413bf1c05d47e440625a25850f10de050175a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Rothera\",\n      \"mode\": 33188,\n      \"size\": 721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6a17dce1f665a2ca8026fef6634fca93b698392000e97f89797ef44b57afa7ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/South_Pole\",\n      \"mode\": 33188,\n      \"size\": 3000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa7d47e6fb209806155ca05d2d0721726515ad678714f3197b9daeb9da3a96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Syowa\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"785f2980f27b1976e65a7e5bc7f1d944d5b7e78656a35b30ef8f144c35103a5b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Troll\",\n      \"mode\": 33188,\n      \"size\": 1711,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4fe25a3e29129e9204e750a191c11202dc66e122423c1d97ea03d579182e38ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Antarctica/Vostok\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"85a1b3ff9f71acab9c1e01cb31ee3e9330b9abe48a84763b8d35c6a3b7d6086c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Arctic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Arctic/Longyearbyen\",\n      \"mode\": 33188,\n      \"size\": 2791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9f4a8a248c4b945a12640b4be549baaa438a9c3472822028e9f4988cd4e8b63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Aden\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3f24b3aba19f09734826f156f5537eb97ef899b249ec673048e5d07369487c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Almaty\",\n      \"mode\": 33188,\n      \"size\": 1566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb58e7c09cb5daf5f6afc61969735809085f8f7d1fb9d129f2dff6d52c2d5370\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Amman\",\n      \"mode\": 33188,\n      \"size\": 2417,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0dfa946fc43a7d4ad00e75aba44720018d82f36411351b2e5a103dbfadaf0d8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Anadyr\",\n      \"mode\": 33188,\n      \"size\": 1757,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"723f952ffdde9c6027874689c1b831211ed782bcd1a78b0b3a63f9dd22b661f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Aqtau\",\n      \"mode\": 33188,\n      \"size\": 1552,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aee361faa20979a35b89ac0f538cb4b67c793a36ccfcd98bae1f0f1e2dce98e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Aqtobe\",\n      \"mode\": 33188,\n      \"size\": 1582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58034c93dece9d7b3b8f44e6d39318814c3a5810cd460e87d888c572e8794b17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ashgabat\",\n      \"mode\": 33188,\n      \"size\": 1186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67ef3f1da89446f546c8f8767c16e3106e8c85df4a20d89bc1870f0ea174a20d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ashkhabad\",\n      \"mode\": 33188,\n      \"size\": 1186,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67ef3f1da89446f546c8f8767c16e3106e8c85df4a20d89bc1870f0ea174a20d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Atyrau\",\n      \"mode\": 33188,\n      \"size\": 1560,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37546c1d6704164b04d1126a889c03876bd08241f2fa70e8ec6d6f3012857651\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Baghdad\",\n      \"mode\": 33188,\n      \"size\": 1539,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"71e50815aa9bfebe11c36f200503c2c62d89bf715a067175d2091185bb6b2829\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Bahrain\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e7b84c80828a81f1f7bbaf7355133a81ad96b1273a29c223acf12d1446d4922\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Baku\",\n      \"mode\": 33188,\n      \"size\": 1804,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a06bcc490313e6868f2c50f64a724c494f39c23420e741d4e78208abdd5f69d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Bangkok\",\n      \"mode\": 33188,\n      \"size\": 755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d91fabfc29473f96272f2e96868a44393d6ce11950b7a5ec32eae83dc142b4a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Barnaul\",\n      \"mode\": 33188,\n      \"size\": 1790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0436ee225d77df15229ebf4e30079643bb2cf55131d60b1d6718ddbb77826710\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Beirut\",\n      \"mode\": 33188,\n      \"size\": 2715,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3e24a502c1fb5fb0dd7a8c738f28074b8e785311ba73a33fb597c2172ca288a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Bishkek\",\n      \"mode\": 33188,\n      \"size\": 1564,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9bab70e971735626c3169c9a45153d4da93114bfd8b7295e5d56fc0173cc26fd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Brunei\",\n      \"mode\": 33188,\n      \"size\": 764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a44c283addb335506e1b7a9c288240d2c651e1bbfbfefd9cadfa7181aaf4b1ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Calcutta\",\n      \"mode\": 33188,\n      \"size\": 852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"637147fe7b40e10955c08b61ecc5639148589ce9bd6939cf7b98bc02cccd5036\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Chita\",\n      \"mode\": 33188,\n      \"size\": 1792,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d935e891890a25a2d1ebf88768f70193d23e3d6522c67ed4e4c1435fd9de6a0e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Choibalsan\",\n      \"mode\": 33188,\n      \"size\": 1526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e68707f2d985de61d9a1ca14134c5f96781eff2486e40be8d5b4d34708d59e2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Chongqing\",\n      \"mode\": 33188,\n      \"size\": 1122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add747558dc8f3175776014d9653cf734a761b95dec62f06a3922bfce9f82b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Chungking\",\n      \"mode\": 33188,\n      \"size\": 1122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add747558dc8f3175776014d9653cf734a761b95dec62f06a3922bfce9f82b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Colombo\",\n      \"mode\": 33188,\n      \"size\": 948,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2105ff2a10182bf68780abfa1b9a22574b1e30efe6a249b4f8e0f17058fa659\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Dacca\",\n      \"mode\": 33188,\n      \"size\": 905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b30cb0ad86ae48068d4d6293137bb66ac4ebc73000ba2cca9428ef13c244b8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Damascus\",\n      \"mode\": 33188,\n      \"size\": 2860,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e23e8576a6f8b5b65a356e535ba0ffc916d211a155207e486dd40b1757f3b831\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Dhaka\",\n      \"mode\": 33188,\n      \"size\": 905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b30cb0ad86ae48068d4d6293137bb66ac4ebc73000ba2cca9428ef13c244b8a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Dili\",\n      \"mode\": 33188,\n      \"size\": 788,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1027c57d5d5094c84e80ab360790f0355acce56ec10c6df5567ad35baeba093b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Dubai\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86cb3519886f292920f8c8ff5b551bb66ab5c7ab559ef378584a464dfcc539fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Dushanbe\",\n      \"mode\": 33188,\n      \"size\": 1156,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"518c7e9aabe61a423f703f9285036c37b0b63db85614a54fc053b72dc0f7ac9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Famagusta\",\n      \"mode\": 33188,\n      \"size\": 2582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"40438f760718c79a99e171a199690123f0cc531fef996423c2ca840d20b6bce9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Gaza\",\n      \"mode\": 33188,\n      \"size\": 2891,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3fba0ceae7f3ec40b707a1c175d94d80971b89ee57bcbbaadf7869e7e6d1c30f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Harbin\",\n      \"mode\": 33188,\n      \"size\": 1122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add747558dc8f3175776014d9653cf734a761b95dec62f06a3922bfce9f82b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Hebron\",\n      \"mode\": 33188,\n      \"size\": 2919,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a127bd976cb4e475370adf690228950629af04ae9ee163dbd8a7dd4543aa3a15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ho_Chi_Minh\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"496bbfe0b2bbd4922f8a4a5cc56a405485c1b9df21375d75996ac5e3008f87b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Hong_Kong\",\n      \"mode\": 33188,\n      \"size\": 1771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4f912297ccc9172c05ffe76746d938e832d85d3154b4638709753c0f4800c7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Hovd\",\n      \"mode\": 33188,\n      \"size\": 1456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c51f36d33e1b9fc550b8dd1d2182d8b441a8c77d6f64a5a89859b901a08e2759\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Irkutsk\",\n      \"mode\": 33188,\n      \"size\": 1811,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad1c94f9d9a0e542c80d2b53c4980131675936f6d6e7f04615c1e5029ff1d643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 2505,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0fd3d19c0e209595df3017696f8dc59d900be1dd6a3a8b354f7798ba6ce1f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Jakarta\",\n      \"mode\": 33188,\n      \"size\": 932,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1e1d6c8a2a336137b702b0e68da98b2b2c3135a1844f9bc17d05d0eff1ef18bd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Jayapura\",\n      \"mode\": 33188,\n      \"size\": 791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ccfa8a6a43b97d5dd2e2c33f84951460b2bffcc1202919ef38c3b097a83167db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Jerusalem\",\n      \"mode\": 33188,\n      \"size\": 2861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11b537da563f2c93dcda9206f3cb54ea87dbe701572cfe159854b4b8f1ef90b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kabul\",\n      \"mode\": 33188,\n      \"size\": 764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94835befd0e3581a0cf3c5d3fe177b2f1319868077ccd423af2fda0996cfee7b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kamchatka\",\n      \"mode\": 33188,\n      \"size\": 1733,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc897301c4b520c5fe1201efc6b656b77e54c55cec912beab9891463f79410f3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Karachi\",\n      \"mode\": 33188,\n      \"size\": 957,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"08c8c89e2687b19464bc067b6b368bfe3106c980538c0b3314e7301e192a295a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kashgar\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73db62481070869d19d18143892e5fea592a147cc3a230b120d2b0663882591\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kathmandu\",\n      \"mode\": 33188,\n      \"size\": 773,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9482baab20e577e331c8c15889c2b881eff5de670ff0502c3c8bdc5e985c1cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Katmandu\",\n      \"mode\": 33188,\n      \"size\": 773,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c9482baab20e577e331c8c15889c2b881eff5de670ff0502c3c8bdc5e985c1cc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Khandyga\",\n      \"mode\": 33188,\n      \"size\": 1846,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"79a1086c8573e9fc21ad02d2c092f00182fc14fecf7aee7df2c66d16d33f58d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kolkata\",\n      \"mode\": 33188,\n      \"size\": 852,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"637147fe7b40e10955c08b61ecc5639148589ce9bd6939cf7b98bc02cccd5036\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Krasnoyarsk\",\n      \"mode\": 33188,\n      \"size\": 1778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1f2e856dd5b062136b649c0b86738d31ac218406fdee6d98f26b110c0e913287\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kuala_Lumpur\",\n      \"mode\": 33188,\n      \"size\": 959,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b49df9efbe233fded04d2a35bafd4a2291fd7c91639a7761e5882d5824c8868e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kuching\",\n      \"mode\": 33188,\n      \"size\": 1056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"217b0ff65b13b272a0661ebbbfb6cd392f13fdd0612dcfbe1077c40d2fcf58cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Kuwait\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3f24b3aba19f09734826f156f5537eb97ef899b249ec673048e5d07369487c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Macao\",\n      \"mode\": 33188,\n      \"size\": 1795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"470b21048ae38a2d611012c63f0359ae5bf685afa696d9cdb2a17438635b5283\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Macau\",\n      \"mode\": 33188,\n      \"size\": 1795,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"470b21048ae38a2d611012c63f0359ae5bf685afa696d9cdb2a17438635b5283\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Magadan\",\n      \"mode\": 33188,\n      \"size\": 1793,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4da1ed819b7a50248044e582cd1221e878cc104f429900dccda3d097b9ad6ad4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Makassar\",\n      \"mode\": 33188,\n      \"size\": 828,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bb9b9d31d2f3c57b17a9ec143294ffaa86669e793adf98c5acd1a980d6d4125\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Manila\",\n      \"mode\": 33188,\n      \"size\": 899,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"676bd6835773f0de41e52285dbb78830de3f80d98097f06dfedafff34b6c40aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Muscat\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86cb3519886f292920f8c8ff5b551bb66ab5c7ab559ef378584a464dfcc539fc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b801d86c6b957dd1affe34a2d19a0c580be861d8ccd283d9f48e2dc991fe3696\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Novokuznetsk\",\n      \"mode\": 33188,\n      \"size\": 1732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"121a05f4f5f4f88638e53bd570db3a9f3c247d29020491e871c55df3febc59e0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Novosibirsk\",\n      \"mode\": 33188,\n      \"size\": 1790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0efbee40872e742db4124508044fdabf5cbc616ed26dcfe5fb80e1a97b0f365d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Omsk\",\n      \"mode\": 33188,\n      \"size\": 1778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"64615d9337250ed8ef6a150d1b331947f4b75e3132d9319ad5243d07d41089d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Oral\",\n      \"mode\": 33188,\n      \"size\": 1574,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6881fc8bcbf070d6f8d5dac52f19fdf9162ce8d5144766b92620705fe82d59a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Phnom_Penh\",\n      \"mode\": 33188,\n      \"size\": 755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d91fabfc29473f96272f2e96868a44393d6ce11950b7a5ec32eae83dc142b4a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Pontianak\",\n      \"mode\": 33188,\n      \"size\": 935,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5387a863122580120cb3ee351bcada3b3dfbf163424291b97bac4e2cabd9845f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Pyongyang\",\n      \"mode\": 33188,\n      \"size\": 807,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c74b65040a8f280458f9f6054fdecb2b980510376426b6367a457ec0da0ac08d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Qatar\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e7b84c80828a81f1f7bbaf7355133a81ad96b1273a29c223acf12d1446d4922\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Qostanay\",\n      \"mode\": 33188,\n      \"size\": 1582,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2fcd0ffd483e7c87cc92e63f5409cfa72e322ef99bfb89ff040ef53ce6f0170\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Qyzylorda\",\n      \"mode\": 33188,\n      \"size\": 1604,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bb11726867dc275fd2622da77c437aedd48df9d2ffac75af12f3540408f13e5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Rangoon\",\n      \"mode\": 33188,\n      \"size\": 832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a38bd662f07725a121cbb302b992167054cd598c5127c30514f1fe1fe0c8d70d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Riyadh\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3f24b3aba19f09734826f156f5537eb97ef899b249ec673048e5d07369487c7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Saigon\",\n      \"mode\": 33188,\n      \"size\": 924,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"496bbfe0b2bbd4922f8a4a5cc56a405485c1b9df21375d75996ac5e3008f87b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Sakhalin\",\n      \"mode\": 33188,\n      \"size\": 1769,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a0651f797d67edd06928f67bbebb2872fff7b5c8d42e3dbb5554dd66389d610a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Samarkand\",\n      \"mode\": 33188,\n      \"size\": 1154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e8266acc24f1234e3df68f68e1d4c80e3c9c3ed313da024517f3051f9dcaa09\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Seoul\",\n      \"mode\": 33188,\n      \"size\": 1199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c95b3eee50a28160e185e76e2bab6ec9f28f50e2d9a3166b20c4acfcf4aef1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Shanghai\",\n      \"mode\": 33188,\n      \"size\": 1122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add747558dc8f3175776014d9653cf734a761b95dec62f06a3922bfce9f82b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Singapore\",\n      \"mode\": 33188,\n      \"size\": 959,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91e407e2266fb1de8a5a90631744cd5b213f2521db783258f2f9f41697517dda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Srednekolymsk\",\n      \"mode\": 33188,\n      \"size\": 1779,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc4ac100afd7e317e5939451b677a707dc1a51e646f380bf56411916084a2f87\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Taipei\",\n      \"mode\": 33188,\n      \"size\": 1330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ff02c7a5dc9adb7a5b8de1e492f8ace92d832e8f2f6879265520c47f850078\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tashkent\",\n      \"mode\": 33188,\n      \"size\": 1170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ef3e54ff15a28d5054bc7a3c2946ad05849d57a4cf0096f1982a59be031a207\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tbilisi\",\n      \"mode\": 33188,\n      \"size\": 1615,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"265b4e7c276a60c19c2039171c2b633b3b0c0d51c7d3d527a11c9eaa0b2b9ec7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tehran\",\n      \"mode\": 33188,\n      \"size\": 3164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5940a0ac0a0fb9c21f747d475f7b30031ec8c2700fbfa1bfd1496724c953715\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tel_Aviv\",\n      \"mode\": 33188,\n      \"size\": 2861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11b537da563f2c93dcda9206f3cb54ea87dbe701572cfe159854b4b8f1ef90b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Thimbu\",\n      \"mode\": 33188,\n      \"size\": 764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38acdb7ead0a0945764ce021f31292acba206c6361ec57eb56129a52d5efe650\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Thimphu\",\n      \"mode\": 33188,\n      \"size\": 764,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"38acdb7ead0a0945764ce021f31292acba206c6361ec57eb56129a52d5efe650\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tokyo\",\n      \"mode\": 33188,\n      \"size\": 858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ecabb9dd5bcee432606c243ffd05fc8f1f50ec8f531dfaf3dd7a872160814f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Tomsk\",\n      \"mode\": 33188,\n      \"size\": 1790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ec986c86975c8d0f95485b5d809100261dd19de6376d960672dd08671e8eb63e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ujung_Pandang\",\n      \"mode\": 33188,\n      \"size\": 828,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bb9b9d31d2f3c57b17a9ec143294ffaa86669e793adf98c5acd1a980d6d4125\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ulaanbaatar\",\n      \"mode\": 33188,\n      \"size\": 1456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77dac4fa1d2f3d584ac760f2ae886c14d1c20c321865f5c28602038aeb43b0f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ulan_Bator\",\n      \"mode\": 33188,\n      \"size\": 1456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"77dac4fa1d2f3d584ac760f2ae886c14d1c20c321865f5c28602038aeb43b0f4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Urumqi\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c73db62481070869d19d18143892e5fea592a147cc3a230b120d2b0663882591\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Ust-Nera\",\n      \"mode\": 33188,\n      \"size\": 1825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7a0a40880eca39a3d0eeb389cb84bf23cb3b97d746989aac07478288fe4cb25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Vientiane\",\n      \"mode\": 33188,\n      \"size\": 755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d91fabfc29473f96272f2e96868a44393d6ce11950b7a5ec32eae83dc142b4a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Vladivostok\",\n      \"mode\": 33188,\n      \"size\": 1779,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"633d4328fec78ef09dc0bf58025da4a365176a1680f4c8c8cf90cef309e65236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Yakutsk\",\n      \"mode\": 33188,\n      \"size\": 1778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1fc7358bb9353f77a5c500910586619b82a7d3a3de096b25f90742eddc07d2d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Yangon\",\n      \"mode\": 33188,\n      \"size\": 832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a38bd662f07725a121cbb302b992167054cd598c5127c30514f1fe1fe0c8d70d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Yekaterinburg\",\n      \"mode\": 33188,\n      \"size\": 1816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d259b425879f1d3fea283f9ee237e4f11aa2e4bf918fc40cff782cb2fa4a4f36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Asia/Yerevan\",\n      \"mode\": 33188,\n      \"size\": 1748,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5b7792e14dafe5e5cf54fb58169472bf364e7d841a08ef82224fd13c3f3d6b46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Azores\",\n      \"mode\": 33188,\n      \"size\": 4028,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf6ed07f6b72df9243e62a64bca11608dcf4b7a0ef0231c3c3f819c1e74fdc2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Bermuda\",\n      \"mode\": 33188,\n      \"size\": 2544,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6de741b6c7895bfd687374854ea64fb2998d65436d657d27bd4c7c59b351918\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Canary\",\n      \"mode\": 33188,\n      \"size\": 2451,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f0bf9911e3c52ec1a10e1b9c0cb94d323c7425614948efc559ffe15c67fb48cd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Cape_Verde\",\n      \"mode\": 33188,\n      \"size\": 819,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ab775c80ae7c0b1b6b02016a7ae7045fc69310869a35ac3027e5f6a900e96f8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Faeroe\",\n      \"mode\": 33188,\n      \"size\": 2369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f5a41b4ae349e1c6466cba14b5afaf7d7b4a9623fc8395173e4d3a2b4a5f90d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Faroe\",\n      \"mode\": 33188,\n      \"size\": 2369,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4f5a41b4ae349e1c6466cba14b5afaf7d7b4a9623fc8395173e4d3a2b4a5f90d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Jan_Mayen\",\n      \"mode\": 33188,\n      \"size\": 2791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9f4a8a248c4b945a12640b4be549baaa438a9c3472822028e9f4988cd4e8b63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Madeira\",\n      \"mode\": 33188,\n      \"size\": 4024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"35dedfac50f7e188bdf50bf3e03fd597e822d77b353461bbb60e3ffc3be1b71f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Reykjavik\",\n      \"mode\": 33188,\n      \"size\": 1728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a419779c4e933cb9ba204355f1a3649c72d443a95e0a6d81ff506ab467293c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/South_Georgia\",\n      \"mode\": 33188,\n      \"size\": 699,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"87c1e145862e19c3591293cebc524c2248485fc6d82c0b9f7f289eac3c665cb2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/St_Helena\",\n      \"mode\": 33188,\n      \"size\": 710,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c177f3894cfb7acf27cfefcefd177aebfa1699e409e7fc4cd5a11ef116f8d236\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Atlantic/Stanley\",\n      \"mode\": 33188,\n      \"size\": 1786,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0f88a4e32a223a054780193c34fbcfea7be9ac87493ddc98df5636868a69c44\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/ACT\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cb5754502c335e80d639b47a7f36ddda899d8456ebfe72308882ee5ef92a698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Adelaide\",\n      \"mode\": 33188,\n      \"size\": 2778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02aaaee74a3e5b3d1629ae41daa5b46da01708d3bb87b3c7100c1e7b8202ab81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Brisbane\",\n      \"mode\": 33188,\n      \"size\": 992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddda440f5a5595a004677523165714a25709a156027554a06dd427d5308d9b18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Broken_Hill\",\n      \"mode\": 33188,\n      \"size\": 2814,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd0d2135fb2fa2835646f9e83c23e040bbd8e45b949f3b181925049c7cf419d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Canberra\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cb5754502c335e80d639b47a7f36ddda899d8456ebfe72308882ee5ef92a698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Currie\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f37c37574a6bbbebaf7d25eae300f4499741c50b8967335185ba7ee122c56869\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Darwin\",\n      \"mode\": 33188,\n      \"size\": 863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7223b77c9ca3ab6de014f4f9b566c79dd3f4161c5ea4223b6ff8608285535d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Eucla\",\n      \"mode\": 33188,\n      \"size\": 1038,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"422c107c8b5e6a957bdb37b5d7785be3771db0e14bbbf2b7892a9eeb86e92022\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Hobart\",\n      \"mode\": 33188,\n      \"size\": 2875,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b833dd205698e9e4ec4f134c910a46c2c203379594b70fb3dc15dac7d8d15a42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/LHI\",\n      \"mode\": 33188,\n      \"size\": 2424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7546e925623ccba6e9a112784d57389b98b7cff5bd403e179625e2ee7dbf67e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Lindeman\",\n      \"mode\": 33188,\n      \"size\": 1062,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9134536b2b9078c1807e7529de64da0bc34f32f97aea996b769ccaa474c3aa12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Lord_Howe\",\n      \"mode\": 33188,\n      \"size\": 2424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7546e925623ccba6e9a112784d57389b98b7cff5bd403e179625e2ee7dbf67e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Melbourne\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11ce1fe7a552704c280c6e642ab51a416aff8ad6b9d9c987e90280ce0c6fc3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/NSW\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cb5754502c335e80d639b47a7f36ddda899d8456ebfe72308882ee5ef92a698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/North\",\n      \"mode\": 33188,\n      \"size\": 863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a7223b77c9ca3ab6de014f4f9b566c79dd3f4161c5ea4223b6ff8608285535d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Perth\",\n      \"mode\": 33188,\n      \"size\": 1019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd69002d8273324fcb2dff6a52a11667b34b9cdbd36858d5ccda4f2785b7ef7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Queensland\",\n      \"mode\": 33188,\n      \"size\": 992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddda440f5a5595a004677523165714a25709a156027554a06dd427d5308d9b18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/South\",\n      \"mode\": 33188,\n      \"size\": 2778,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"02aaaee74a3e5b3d1629ae41daa5b46da01708d3bb87b3c7100c1e7b8202ab81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Sydney\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3cb5754502c335e80d639b47a7f36ddda899d8456ebfe72308882ee5ef92a698\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Tasmania\",\n      \"mode\": 33188,\n      \"size\": 2875,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b833dd205698e9e4ec4f134c910a46c2c203379594b70fb3dc15dac7d8d15a42\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Victoria\",\n      \"mode\": 33188,\n      \"size\": 2763,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11ce1fe7a552704c280c6e642ab51a416aff8ad6b9d9c987e90280ce0c6fc3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/West\",\n      \"mode\": 33188,\n      \"size\": 1019,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd69002d8273324fcb2dff6a52a11667b34b9cdbd36858d5ccda4f2785b7ef7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Australia/Yancowinna\",\n      \"mode\": 33188,\n      \"size\": 2814,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fd0d2135fb2fa2835646f9e83c23e040bbd8e45b949f3b181925049c7cf419d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Brazil\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Brazil/Acre\",\n      \"mode\": 33188,\n      \"size\": 1197,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"90e09a708c3c756baf60fafda6f8a5f3316b8f0f13ae2433bcad860c74bd544c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Brazil/DeNoronha\",\n      \"mode\": 33188,\n      \"size\": 1277,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc5b5c148b76dc58c925f589124f7f1ac05a52e9bc8f8cb0bf8bbef2b5779c78\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Brazil/East\",\n      \"mode\": 33188,\n      \"size\": 2005,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30ef7b506e76ac5286ad4415d7daa8abf0af2b6c63abb540869a8dc1c61f28a0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Brazil/West\",\n      \"mode\": 33188,\n      \"size\": 1165,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c921cc8c1a0a1ed91805b81c0f22d5ee3a78fe3422f6366160c37b03302fd250\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/CET\",\n      \"mode\": 33188,\n      \"size\": 2642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a9ab0888ef44577631cf924205405001a436f7d97899c8989907aba1b77a61be\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/CST6CDT\",\n      \"mode\": 33188,\n      \"size\": 2834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fc4181f42429479b45e3b5d1e9d8775017957bca5c82fc9530769fcb81b2fe8e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Atlantic\",\n      \"mode\": 33188,\n      \"size\": 3978,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"86c84ef0a21a387fdd0058046268c5eca94c10cb73231638724d344cc478bd10\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Central\",\n      \"mode\": 33188,\n      \"size\": 3431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a91e3074914af25d44e7428f07b7e15c46a9b1c61adf146d78058bfb95128031\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Eastern\",\n      \"mode\": 33188,\n      \"size\": 4043,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bd1fdaf567be65339c2fe8cadf9e690d0929548cd731edcb41ae7f322885a590\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2886,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"022478c15aee3ef60c10f350122529278adf3954d02e30f78df5ca8d6eb937ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Newfoundland\",\n      \"mode\": 33188,\n      \"size\": 4204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"10784794564849767481803ad10924bd7092c041b5e5859dc7cdf883abe13a7e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Pacific\",\n      \"mode\": 33188,\n      \"size\": 3441,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59f3b401ccdbabb740e3395b75233402d6d2e0590195df1e5d8e73e736158361\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Saskatchewan\",\n      \"mode\": 33188,\n      \"size\": 1534,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ef7b8f3a4e1baf07289907c77a4218ac0be68c7a24e980940a05cbba77e53c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Canada/Yukon\",\n      \"mode\": 33188,\n      \"size\": 2149,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"656e8559dd8f0f71b49cbd7e39ea69f9b229cd28cbbd26d67c067faeb71e3dcb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Chile\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Chile/Continental\",\n      \"mode\": 33188,\n      \"size\": 3073,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"986a3d87481910c37ff5045ecb26e8d7832333bb9b8bf0cefa8f2518c787fcb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Chile/EasterIsland\",\n      \"mode\": 33188,\n      \"size\": 2777,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27c072b5550ceea84e801fd932d838d9c6fde3fbe5f3fffd897dcf12f5f36bb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Cuba\",\n      \"mode\": 33188,\n      \"size\": 2977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d4bfd6b414442661f79556ac625c9f30e051af6694be67e3ad312e9e9589c50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/EET\",\n      \"mode\": 33188,\n      \"size\": 2416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7a4178745768032216702f31fa03f676677d5951079d7e17856ab4be0ddc4061\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/EST\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7c90a5d782d8843b78996aaf9cc7d332f29d923e8b41739fa0d523b6675a816\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/EST5EDT\",\n      \"mode\": 33188,\n      \"size\": 2834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0f7e22d9f44ba8c1c49034d187a3910eabea89ea5702363f55eadfcd12e01daa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Egypt\",\n      \"mode\": 33188,\n      \"size\": 2512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a3c84ceb744bbb495b49ef286308143f267da03f75931b82fdcb5c5a3aebcdd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Eire\",\n      \"mode\": 33188,\n      \"size\": 4083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"406fece907ecec8f7be8a75ca84953fb1d67282e42433f8f559e4def26ea299e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+1\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dfab8b47a9935ec8047b521c8a271ca2f4543ddd8c7e5615c489c3257824140\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+10\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"daf919cae7f8cbe9932a89be91f2054c115838dae240389d4f4567a66287e531\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+11\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ef109214424a5197b2a034d5a67606ffd2396fe37b464876745541e6ed9ca375\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+12\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b901dd04cd5aa1e1bc91e16f651751ff45a24c88a3b3236336044dccf7a21244\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+2\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d16fb68e998d75ad599d5f6101c45ac83f7dc02e8a4cca6f5fee81fa77ce668\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+3\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f6f463bbba4e762a8834597a7033c770d6af14b05a8b703b3d5d014990ea4b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+4\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"932f8cf3e71116a6b3c4a73a68e8b9b78ad33772c11c38f6e49bd3b9e3508358\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+5\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7469abe462d0ecd98bd657ac98e8a420ac3bc5c913a7d1d0b6571b9ad55ad659\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+6\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"516d359bfacd113d911e4a19d93dfb00c8d5a1de3d21b0356f520e4c45471fc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+7\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"48e9f1b3cbab9cc818adab2956234adfdf8eeacb51e442221282c073921462fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+8\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b8ac2c2ab11935c312c05c72a665b2567e6df428ee4229e688272e9aa3c71603\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+9\",\n      \"mode\": 33188,\n      \"size\": 678,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"66586cb177e807cf1f7f9382f7ffb847f97b579405f6a2a4258f3b601837441f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-1\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f64722b5d0b9119c26d97bea25b946aa46b440fbd0c5735276049ec0bc9ea9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-10\",\n      \"mode\": 33188,\n      \"size\": 680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"364a1c067f561986ce55d2a1c132d394bb12c024b41fd8185498605eb6d68996\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-11\",\n      \"mode\": 33188,\n      \"size\": 680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c27112120e1d285b1feaaabd7d6086d82bb20498f8b3b79135345dcfb5beb34\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-12\",\n      \"mode\": 33188,\n      \"size\": 680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f7d64bac9608ae4d00f58ce111c849fa5fd10c219dfe0a85d8d56e514fe386f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-13\",\n      \"mode\": 33188,\n      \"size\": 680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9349e68a0ac17041b18afe3cdd474c562e9aac289fd76f12f5169b59754825b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-14\",\n      \"mode\": 33188,\n      \"size\": 680,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a748a0ca53f5a510a3abb4a62ffbbe3ffc17e01f65cc6af01878c9df8b43b204\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-2\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41884dfc60a5b6ec4048d7d94db86d44ef512e166200d2de6843218bb97fb3c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-3\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5391c1595cf4e7df4e5fb4a390cab8cbf6c23644c8bf87a8d6fcc7753dd64f36\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-4\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e710ab5d40d44ae4b369a01ba839f5b52dd417565bd92ac663585a0372db6e1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-5\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b4d14c0621108bb15b9e3a08479291c8afbb960ab9205cbd109cfeebe87465b9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-6\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68d638daa5d47e0684ecb49c49fa0eba30e044df0b01655a366e4f2615bebe82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-7\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc003bfc68545e819c20e22e92f08f67caef03822ed8dc60231fe96028aa6072\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-8\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c32fe342c3ef366d364c0edc9cdeb26a35a9868f599ee5cc05568145121ab2b8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-9\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3546d660bbebcf312239764bea8f0c39a91e719d2b8ac3e8bfed0d362d334479\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/GMT0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/UCT\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/UTC\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/Universal\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Etc/Zulu\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Amsterdam\",\n      \"mode\": 33188,\n      \"size\": 3489,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae32e0cb5a9ea89b38213163daf4feb4840a6b72e82d5464c647d0a618531697\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Andorra\",\n      \"mode\": 33188,\n      \"size\": 2291,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1330f8009adea3c6e5134cdeadaedaa6fbbcd72b2753207ccbb953ccf5001d18\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Astrakhan\",\n      \"mode\": 33188,\n      \"size\": 1732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcb19ce7f27da441ddc26ddb5efdb9683ece2df2f013e35333a113bca8d84ac0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Athens\",\n      \"mode\": 33188,\n      \"size\": 2811,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0c23a856f0e9c47bba55cb81c426eca0d190aea6043b018e2affa55f21b43664\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Belfast\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Belgrade\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Berlin\",\n      \"mode\": 33188,\n      \"size\": 2875,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b4604767edbae4fc43cd24bd96ec235232471fddff9dc15328c0b74d4c3dc90\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Bratislava\",\n      \"mode\": 33188,\n      \"size\": 2878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ba4274fd53b61a31041cad12327027a4b536e29e45361f9b9a0708851a7964f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Brussels\",\n      \"mode\": 33188,\n      \"size\": 3510,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e8b1eb03d518914baa45eeaf1d19e491fd3ac24319f7f79ce904120bac7ae19\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Bucharest\",\n      \"mode\": 33188,\n      \"size\": 2761,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4052f7958d6994e77da457cc9255749b2df0a6270841d23cb93937d58e1f4ec2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Budapest\",\n      \"mode\": 33188,\n      \"size\": 2945,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"865242b95f7d1177e289a4853ab538079af84710f8f09b4908db5928670e016a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Busingen\",\n      \"mode\": 33188,\n      \"size\": 2458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46a95ddb0c5047f5b03c6ebdd2c35f87f59e6719d2a2385134408f826753e60f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Chisinau\",\n      \"mode\": 33188,\n      \"size\": 2985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea169f6577633d68990e74350d1f53c54d309ea1fb461bc235f6dc3c2bfd03c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Copenhagen\",\n      \"mode\": 33188,\n      \"size\": 2700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc7d0746ef3061d3de714685a821a4781abe813fdc6327f162fc70b0c22d62ac\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Dublin\",\n      \"mode\": 33188,\n      \"size\": 4083,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"406fece907ecec8f7be8a75ca84953fb1d67282e42433f8f559e4def26ea299e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Gibraltar\",\n      \"mode\": 33188,\n      \"size\": 3601,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"16fa8d1cb048eb5d4defb961df736ae7db4d477b6f08b9d94572da2303681fe7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Guernsey\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Helsinki\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1894d50d5bc5e541f340d601cd8ababe40da90fa867cc7ed3215be1cd6282de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Isle_of_Man\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Istanbul\",\n      \"mode\": 33188,\n      \"size\": 2505,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0fd3d19c0e209595df3017696f8dc59d900be1dd6a3a8b354f7798ba6ce1f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Jersey\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Kaliningrad\",\n      \"mode\": 33188,\n      \"size\": 2072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5ec14b617cbe85a326677b570296a68c866c954a2c2d42e19387c06c29c635e3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Kiev\",\n      \"mode\": 33188,\n      \"size\": 2637,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24c81f9cf9518821df795eb6c2660d1de98a29d658922bec6f70b05dc9f427e7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Kirov\",\n      \"mode\": 33188,\n      \"size\": 1702,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"50f356bc8b1d5232fe2746f29a440b7e4876a011ad0833d7a137c31d1c1721f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Lisbon\",\n      \"mode\": 33188,\n      \"size\": 4009,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8e850961fc42ea64edb30cebaabad27fccda97bdf6cf1047e4051298bdf20d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Ljubljana\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/London\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Luxembourg\",\n      \"mode\": 33188,\n      \"size\": 3514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"af6eb983dfb45c9e363dafb9d26b8466179415e37ef87991b258523a36c18239\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Madrid\",\n      \"mode\": 33188,\n      \"size\": 3177,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"01a00debc9c470fe55edfa31568135024d2450ba34c1c88ed16d620b67af5d83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Malta\",\n      \"mode\": 33188,\n      \"size\": 3169,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"80919f93a3dd18f905ec9ecc82797ea80f289fe05795f32bd9390dbed7ff7d05\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Mariehamn\",\n      \"mode\": 33188,\n      \"size\": 2449,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1894d50d5bc5e541f340d601cd8ababe40da90fa867cc7ed3215be1cd6282de\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Minsk\",\n      \"mode\": 33188,\n      \"size\": 1905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52c3784ac0b17fb45be32b9c06a10978f4c53763cf97cf1e9f54b16494fc2a84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Monaco\",\n      \"mode\": 33188,\n      \"size\": 3493,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7bac15b163365f1415bd5830c70e2433d36b70b490a393be07d0562071bdc98c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Moscow\",\n      \"mode\": 33188,\n      \"size\": 2084,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e1367300579da7319742b25b9da707131b058482c77e7a707c71aeb60f067ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Nicosia\",\n      \"mode\": 33188,\n      \"size\": 2556,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b801d86c6b957dd1affe34a2d19a0c580be861d8ccd283d9f48e2dc991fe3696\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Oslo\",\n      \"mode\": 33188,\n      \"size\": 2791,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b9f4a8a248c4b945a12640b4be549baaa438a9c3472822028e9f4988cd4e8b63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Paris\",\n      \"mode\": 33188,\n      \"size\": 3511,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6cd62d7d4c3d0be12b47e2e3c026ad0b5513f16e3dbf46d7812f0501c0522def\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Podgorica\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Prague\",\n      \"mode\": 33188,\n      \"size\": 2878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ba4274fd53b61a31041cad12327027a4b536e29e45361f9b9a0708851a7964f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Riga\",\n      \"mode\": 33188,\n      \"size\": 2775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"543f059b0b90d203ac284c74a9eb1a43acfb6f6de2c3f618b9df24b1b53564d8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Rome\",\n      \"mode\": 33188,\n      \"size\": 3232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1900f59ffcc6e5d11fca684876c3efdc837d8ac7c0432603a352b1f17a768b06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Samara\",\n      \"mode\": 33188,\n      \"size\": 1776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"757ea574d61782c57c7a27f4ca052c5277e3009f99dae455b486f7633fe05e17\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/San_Marino\",\n      \"mode\": 33188,\n      \"size\": 3232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1900f59ffcc6e5d11fca684876c3efdc837d8ac7c0432603a352b1f17a768b06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Sarajevo\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Saratov\",\n      \"mode\": 33188,\n      \"size\": 1732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d363c02f8c0d79a6b550239df44b5754efc54291da4d85d82e345f8edb3b6f68\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Simferopol\",\n      \"mode\": 33188,\n      \"size\": 2030,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c749271304d25a3772fec2f14e1a9fe29d66a993e88384b4fb8c35305208aa06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Skopje\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Sofia\",\n      \"mode\": 33188,\n      \"size\": 2670,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d9a0ae58e5f9d5b678d68e5874b4d4bf0481a5decd3e9a097bed5f172a16cd0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Stockholm\",\n      \"mode\": 33188,\n      \"size\": 2458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"57c9a0626fe99afad4195a26bdd53a0013d465c876e4970a365196242191009a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Tallinn\",\n      \"mode\": 33188,\n      \"size\": 2727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3ce08292fa8bf8241cfc2bd85b05dec3459e3b653a0333720380ef66841e9db1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Tirane\",\n      \"mode\": 33188,\n      \"size\": 2638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aecddbe0e431c06b7d90ce8c9be834f2aafeba71716812b98797272f72d54141\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Tiraspol\",\n      \"mode\": 33188,\n      \"size\": 2985,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ea169f6577633d68990e74350d1f53c54d309ea1fb461bc235f6dc3c2bfd03c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Ulyanovsk\",\n      \"mode\": 33188,\n      \"size\": 1816,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1805377db5fc2f5733f3b229c5c3744321fc279b46fd004a5d0d7492a8c55f16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Uzhgorod\",\n      \"mode\": 33188,\n      \"size\": 2643,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7ede029288ea2e0af7da34e57ef3414159d510db5e41db99ef2bd0becff29c72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Vaduz\",\n      \"mode\": 33188,\n      \"size\": 2458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46a95ddb0c5047f5b03c6ebdd2c35f87f59e6719d2a2385134408f826753e60f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Vatican\",\n      \"mode\": 33188,\n      \"size\": 3232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1900f59ffcc6e5d11fca684876c3efdc837d8ac7c0432603a352b1f17a768b06\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Vienna\",\n      \"mode\": 33188,\n      \"size\": 2777,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e69df04b842a8f784b6fc0adddf418fe2e3e635d7a0f1c60ed35c05c5c7e7b9d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Vilnius\",\n      \"mode\": 33188,\n      \"size\": 2739,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60409d0bfd11d41ed822fbc0564645c41d63b215b8b1822c369a5af7824631fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Volgograd\",\n      \"mode\": 33188,\n      \"size\": 1732,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17a71cd6a317c0b91c3a7f1daaee051a522ac9de2366d985b87f4e4b56f786dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Warsaw\",\n      \"mode\": 33188,\n      \"size\": 3245,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2776052936d3361f49da479c0a6d522ea7ec256300cc9263d1011848ab2bb3a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Zagreb\",\n      \"mode\": 33188,\n      \"size\": 2497,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3debded934cdf0c472df38375bd1a69c9135fb21890969bd68a50956e7181e7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Zaporozhye\",\n      \"mode\": 33188,\n      \"size\": 2655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67d4c4e23f865eeb4fcc7779563524189dd9852d7547ab5b9374f637f4f3faef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Europe/Zurich\",\n      \"mode\": 33188,\n      \"size\": 2458,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"46a95ddb0c5047f5b03c6ebdd2c35f87f59e6719d2a2385134408f826753e60f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GB\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GB-Eire\",\n      \"mode\": 33188,\n      \"size\": 4227,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"256c78cc8a67c9b7796737d6af67860246715133443319c41c5962d4d4411f6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GMT\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GMT+0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GMT-0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/GMT0\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Greenwich\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"da4f5e177e0e5138774896d0b82b59cce878cf3700734a5d6cdfac2f0f96eb28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/HST\",\n      \"mode\": 33188,\n      \"size\": 668,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d6c14dcfa90060f656344c7f7078d78fd6046e38d850b78de5f066c0f3c0c655\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Hongkong\",\n      \"mode\": 33188,\n      \"size\": 1771,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4f912297ccc9172c05ffe76746d938e832d85d3154b4638709753c0f4800c7c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Iceland\",\n      \"mode\": 33188,\n      \"size\": 1728,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a419779c4e933cb9ba204355f1a3649c72d443a95e0a6d81ff506ab467293c0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Antananarivo\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Chagos\",\n      \"mode\": 33188,\n      \"size\": 760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8cf0c5a28233ce257fb4b7fbcc360677dd2263eac889a65eb02c09e86541d72\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Christmas\",\n      \"mode\": 33188,\n      \"size\": 700,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"445dd04f82a28c39962af2578501b9d8cfc0e17ee56630a30c78bbd7e8de7ba1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Cocos\",\n      \"mode\": 33188,\n      \"size\": 709,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"73738c8c7d23555123841d80cf638f6e8e2be52f93c841b54d97edba207f9ad5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Comoro\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Kerguelen\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac6df2f0f61d25a524ae0c2aa10b663ab852dcbd51e97cec4db54843b8ee916e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Mahe\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1c55b3ce226f3071ae02834afd72edb45e2553e95bda7862371aef34d1fa024c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Maldives\",\n      \"mode\": 33188,\n      \"size\": 755,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7e3029145d587448a750d43b4dd67a40bc9a6a2499916cd3093fbcc6a4d7b2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Mauritius\",\n      \"mode\": 33188,\n      \"size\": 802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"930cd4dc0a8cbbbbebd33c61edf12c5431e3263b3748cdb6ac0c1afba39c8623\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Mayotte\",\n      \"mode\": 33188,\n      \"size\": 825,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ae39f133e4fad735bf5e099f9090b322f84efb7fe050968da196289a3c703905\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Indian/Reunion\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f3460ec007959b0ed112cdc75fd1decf42969ab272cdb157edf9c3a040c6c279\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Iran\",\n      \"mode\": 33188,\n      \"size\": 3164,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5940a0ac0a0fb9c21f747d475f7b30031ec8c2700fbfa1bfd1496724c953715\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Israel\",\n      \"mode\": 33188,\n      \"size\": 2861,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f11b537da563f2c93dcda9206f3cb54ea87dbe701572cfe159854b4b8f1ef90b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Jamaica\",\n      \"mode\": 33188,\n      \"size\": 1047,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"47ddec901639efbe7268363dcc0d8b92a855372b0cae12720d68cce9a8974fdb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Japan\",\n      \"mode\": 33188,\n      \"size\": 858,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ecabb9dd5bcee432606c243ffd05fc8f1f50ec8f531dfaf3dd7a872160814f0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f85d2a961799deb5cb0bd7a45974d7cdfbedeac8a3b82330512b0b1ccb7cd8eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Libya\",\n      \"mode\": 33188,\n      \"size\": 1195,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"72bb85f8ac4ec74b2ae92214c047c82f1f39c9c0785d0f54e152b8c1d940adda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/MET\",\n      \"mode\": 33188,\n      \"size\": 2642,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"735b7a481c6b4024076996235dc00c88eba04788ea0d2320f52f3b6f832e2c5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/MST\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7ed7889d7e664fa5f24d3ebca03abc5e6f4c1af886e13b6d057d0aa4009a953\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/MST7MDT\",\n      \"mode\": 33188,\n      \"size\": 2834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f5bff9e9551d99b333440822fd3fa74d2bf03b0303585ce0705557b869e47e83\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Mexico\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Mexico/BajaNorte\",\n      \"mode\": 33188,\n      \"size\": 2896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a1a5199868d6aa4c24fef5e908e99e4c6e116d16afc554d25ec431990d8f02da\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Mexico/BajaSur\",\n      \"mode\": 33188,\n      \"size\": 2104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"972ebc94965c29a285412a68e853fc7729bd741b5be52edeb9f3b9a1a707ac43\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Mexico/General\",\n      \"mode\": 33188,\n      \"size\": 2158,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b2e4e7d462f693d46142205a03882b383f3cfbc6eaa0a4c514fe71fd5112f12\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/NZ\",\n      \"mode\": 33188,\n      \"size\": 3000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa7d47e6fb209806155ca05d2d0721726515ad678714f3197b9daeb9da3a96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/NZ-CHAT\",\n      \"mode\": 33188,\n      \"size\": 2622,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d7cab36a76aa5df26ae237bb5b1f4abb4efbc7eb4807dabe74540ef5187a25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Navajo\",\n      \"mode\": 33188,\n      \"size\": 2993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7448c66048e5489a28ecad3adc495351163e62cedff714bec6d15506a9e1f548\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/PRC\",\n      \"mode\": 33188,\n      \"size\": 1122,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"add747558dc8f3175776014d9653cf734a761b95dec62f06a3922bfce9f82b6e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/PST8PDT\",\n      \"mode\": 33188,\n      \"size\": 2834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f08ae6766d50d2008608f2e668ff34560eef0fb62b3e60df8c019e04cb914780\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Apia\",\n      \"mode\": 33188,\n      \"size\": 1669,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3b8ceeb83ab926790b5ae3dacbf350c1a67f014b0794bcafe42616944d52a1a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Auckland\",\n      \"mode\": 33188,\n      \"size\": 3000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c6fa7d47e6fb209806155ca05d2d0721726515ad678714f3197b9daeb9da3a96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Bougainville\",\n      \"mode\": 33188,\n      \"size\": 831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6be590e2ca7b1132a89a2347e6bab35f303881e27a95a3768fbe2044fd2da9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Chatham\",\n      \"mode\": 33188,\n      \"size\": 2622,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7d7cab36a76aa5df26ae237bb5b1f4abb4efbc7eb4807dabe74540ef5187a25d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Chuuk\",\n      \"mode\": 33188,\n      \"size\": 831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9edef2327e3ea2e74d2eb9d2ce91dbfcc72ee9c46541cfd686f0eda9989942c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Easter\",\n      \"mode\": 33188,\n      \"size\": 2777,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"27c072b5550ceea84e801fd932d838d9c6fde3fbe5f3fffd897dcf12f5f36bb1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Efate\",\n      \"mode\": 33188,\n      \"size\": 1027,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c7062ab08064a9ca13ad2c823b29f7b2d0a04cd7bf4a9e17c7dc75fb0007baff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Enderbury\",\n      \"mode\": 33188,\n      \"size\": 794,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8757354f311a09599c3eac732b4cafe172c311a15291a96b95f659038ba025cf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Fakaofo\",\n      \"mode\": 33188,\n      \"size\": 756,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"250e6d05b76670206d86dbf786f8c671e7ee0e3260fa3cf728246f05e40117f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Fiji\",\n      \"mode\": 33188,\n      \"size\": 1638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be6db03c46c5dfd1258384c00ccc0137b84b1787cacc6da4e5ada499adcb27c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Funafuti\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a9da5b61aad5ea62609b9b7b6c838e38129f7c1722f3c078ad2588aafbe0428\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Galapagos\",\n      \"mode\": 33188,\n      \"size\": 803,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d318df273394bf526ef4318eecfc047e55dda60fb4791bda097d0ba7e52a8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Gambier\",\n      \"mode\": 33188,\n      \"size\": 721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d89a421366c5757aa91f50667646b760032b5f4732a53374e4a05b0045d6483\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Guadalcanal\",\n      \"mode\": 33188,\n      \"size\": 723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fe837664f234ac8eb7598cc4df8f9bd1df7afc34d9c5905001cfdc3241e2ea73\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Guam\",\n      \"mode\": 33188,\n      \"size\": 1065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e85a11e3769f6576cc0131f7a59d3d145639f527548d59638086ae4b09a1d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Honolulu\",\n      \"mode\": 33188,\n      \"size\": 878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93c484f1a3546cf33ee6bcbc52494b4e91d7c5d8d6dc9cc6a73751f8d8235cb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Johnston\",\n      \"mode\": 33188,\n      \"size\": 878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93c484f1a3546cf33ee6bcbc52494b4e91d7c5d8d6dc9cc6a73751f8d8235cb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Kiritimati\",\n      \"mode\": 33188,\n      \"size\": 798,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f33ea162876a1311c2d6a974cf7f079893bdac950dbd180e2cfb107a879ab303\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Kosrae\",\n      \"mode\": 33188,\n      \"size\": 921,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"572fb52c2262c3aeda2aef85157c862a305e99c15a5a673b081a01c9dd89c3ee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Kwajalein\",\n      \"mode\": 33188,\n      \"size\": 884,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f85d2a961799deb5cb0bd7a45974d7cdfbedeac8a3b82330512b0b1ccb7cd8eb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Majuro\",\n      \"mode\": 33188,\n      \"size\": 874,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6298dff3baf870ed80da5e52a282ffdb0b9ac6ccf2c1a2ed4d910aef532dbf74\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Marquesas\",\n      \"mode\": 33188,\n      \"size\": 730,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8bddb6881492ed79f799832454b02809ad7922791994b9c19f98094dc4206647\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Midway\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c996db6822af6b663b37e0c8750132432169950eed2c24bab4c9f843475b5cb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Nauru\",\n      \"mode\": 33188,\n      \"size\": 817,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7e240f6870254d1f701d3d480248add43b0648f75dff3269d926ea3b2d703a9a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Niue\",\n      \"mode\": 33188,\n      \"size\": 801,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2eecd96d4056c59d3db04eea43c3f1cb491398d84732d88a500b13e15624eb57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Norfolk\",\n      \"mode\": 33188,\n      \"size\": 1468,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8c5874c6ab78e49f434f7ca29ac0303b59d2dace69ef0e3fdd6bf6a566bfbc6a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Noumea\",\n      \"mode\": 33188,\n      \"size\": 863,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5e4a79b64ba530ff85ee0747c693d00efb94d7625cc70a4a99557fcc4fa60ae2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Pago_Pago\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c996db6822af6b663b37e0c8750132432169950eed2c24bab4c9f843475b5cb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Palau\",\n      \"mode\": 33188,\n      \"size\": 717,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa7e4882188f567514105374c59a5b95bf1c82bfa8216c52fc6f247d57a56cdf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Pitcairn\",\n      \"mode\": 33188,\n      \"size\": 758,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"05ab1d75088ddcaa01f819e2820a2e84285ee261c574e25f3a1f026f05d440a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Pohnpei\",\n      \"mode\": 33188,\n      \"size\": 869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68eec56a56e1a4eed4d7cb732995e773a0d46f84c29c55875e24df333e6a6c27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Ponape\",\n      \"mode\": 33188,\n      \"size\": 869,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"68eec56a56e1a4eed4d7cb732995e773a0d46f84c29c55875e24df333e6a6c27\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Port_Moresby\",\n      \"mode\": 33188,\n      \"size\": 723,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"627805f2b9bf76f41742808c227b3bfd443e2ef73e5eef7162616074aa97e41b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Rarotonga\",\n      \"mode\": 33188,\n      \"size\": 1137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d1e4a68104638e75fb5cf82daf680d934f965e682e35a04ecc0e518d8f8a097\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Saipan\",\n      \"mode\": 33188,\n      \"size\": 1065,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e85a11e3769f6576cc0131f7a59d3d145639f527548d59638086ae4b09a1d13\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Samoa\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c996db6822af6b663b37e0c8750132432169950eed2c24bab4c9f843475b5cb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Tahiti\",\n      \"mode\": 33188,\n      \"size\": 722,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"344408438702e718bca59faacbd552969b7397bdaf5aedf99e126f50c8233ee3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Tarawa\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f82a0f21667dce26d11673eef99db2d9200f915256c41289afb85689edce34f2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Tongatapu\",\n      \"mode\": 33188,\n      \"size\": 928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bbb8632d8f1d1a120c351694103ee55e7b45193c2aa9bcb5b65e99f8ffee424d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Truk\",\n      \"mode\": 33188,\n      \"size\": 831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9edef2327e3ea2e74d2eb9d2ce91dbfcc72ee9c46541cfd686f0eda9989942c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Wake\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"17180eb8fef967ac24d5492908cce1e90a7b4c578657fbddf0f60a2d832a7745\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Wallis\",\n      \"mode\": 33188,\n      \"size\": 701,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5fa9d027fcf24e4d9ad77875907d675144b7384bda0ddbedb03fbe44c09a63ab\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Pacific/Yap\",\n      \"mode\": 33188,\n      \"size\": 831,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9edef2327e3ea2e74d2eb9d2ce91dbfcc72ee9c46541cfd686f0eda9989942c1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Poland\",\n      \"mode\": 33188,\n      \"size\": 3245,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2776052936d3361f49da479c0a6d522ea7ec256300cc9263d1011848ab2bb3a9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Portugal\",\n      \"mode\": 33188,\n      \"size\": 4009,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f8e850961fc42ea64edb30cebaabad27fccda97bdf6cf1047e4051298bdf20d0\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/ROC\",\n      \"mode\": 33188,\n      \"size\": 1330,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d5ff02c7a5dc9adb7a5b8de1e492f8ace92d832e8f2f6879265520c47f850078\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/ROK\",\n      \"mode\": 33188,\n      \"size\": 1199,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6c95b3eee50a28160e185e76e2bab6ec9f28f50e2d9a3166b20c4acfcf4aef1c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Singapore\",\n      \"mode\": 33188,\n      \"size\": 959,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91e407e2266fb1de8a5a90631744cd5b213f2521db783258f2f9f41697517dda\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Turkey\",\n      \"mode\": 33188,\n      \"size\": 2505,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d0fd3d19c0e209595df3017696f8dc59d900be1dd6a3a8b354f7798ba6ce1f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/UCT\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Alaska\",\n      \"mode\": 33188,\n      \"size\": 2920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5b62f7337785e26117bbc34ef7976018f021e63eb3e208f8c752d4f949ef2ef\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Aleutian\",\n      \"mode\": 33188,\n      \"size\": 2905,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d3e31970fee36399f30950e3f68ce7a5038be38a64547241c2ac97daaccd994\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Arizona\",\n      \"mode\": 33188,\n      \"size\": 893,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a89f0e65cd0a0b2edbbf65a7a81441aa91073b133edac17c25c6c9f809b8995\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Central\",\n      \"mode\": 33188,\n      \"size\": 4125,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"94f71253caa6bde6db52f2f5ad3b816df0c2da9af7cc7d4a4abf1b91e391821f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/East-Indiana\",\n      \"mode\": 33188,\n      \"size\": 2215,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7dfb7b2796f9b9d9a69d402b2e8269a2f834e1d01e2da34af490b2b24c21ace5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Eastern\",\n      \"mode\": 33188,\n      \"size\": 4085,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9699b3dbf1b5a2fe33cc0eeb1bae542d83608786c0b1872b07b24adda81556a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Hawaii\",\n      \"mode\": 33188,\n      \"size\": 878,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"93c484f1a3546cf33ee6bcbc52494b4e91d7c5d8d6dc9cc6a73751f8d8235cb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Indiana-Starke\",\n      \"mode\": 33188,\n      \"size\": 2977,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ac4c928ad03acaf42f346aa81bf9d269a513adb14a955ff55a5177927832c6a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Michigan\",\n      \"mode\": 33188,\n      \"size\": 2784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5549176b1eddafbfea4f7156db3872560d9c7085e200706ca281103c7918d1dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Mountain\",\n      \"mode\": 33188,\n      \"size\": 2993,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7448c66048e5489a28ecad3adc495351163e62cedff714bec6d15506a9e1f548\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Pacific\",\n      \"mode\": 33188,\n      \"size\": 3385,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f2a6fb2744e29e2a6ac88e89843ce0c74f8934b37d1b35d67e115d5363c9e57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Pacific-New\",\n      \"mode\": 33188,\n      \"size\": 3385,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5f2a6fb2744e29e2a6ac88e89843ce0c74f8934b37d1b35d67e115d5363c9e57\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/US/Samoa\",\n      \"mode\": 33188,\n      \"size\": 736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c996db6822af6b663b37e0c8750132432169950eed2c24bab4c9f843475b5cb5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/UTC\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Universal\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/W-SU\",\n      \"mode\": 33188,\n      \"size\": 2084,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e1367300579da7319742b25b9da707131b058482c77e7a707c71aeb60f067ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/WET\",\n      \"mode\": 33188,\n      \"size\": 2413,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e9826478fee66e6f8a7583d9a67d82f114f8a12856b4f4a6bfed5db540c54753\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/right/Zulu\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d19fdd5d26a7753518ee9a09ab74a8e4efa9a4e6ed56eff85baabd8af9c0e459\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/tzdata.zi\",\n      \"mode\": 33188,\n      \"size\": 111486,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b926785d5e7510a13fb399a94af494a88c445ec57b74542f2f31bfdbc3ad8da5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/zone.tab\",\n      \"mode\": 33188,\n      \"size\": 19397,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6e527397eeb52ddf95765a42790414758edeed0fee60ed01393114a3aa31433c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/zoneinfo/zone1970.tab\",\n      \"mode\": 33188,\n      \"size\": 17911,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d23af26ce4fe8b8c7bda465910956a850ddede07c5466d1b746cdcc5249466db\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"995a4ebf111527a2\",\n   \"name\": \"util-linux\",\n   \"version\": \"2.32.1-22.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:util-linux:util-linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:util-linux:util_linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:util_linux:util-linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:util_linux:util_linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:util-linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:util_linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:util:util-linux:2.32.1-22.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:util:util_linux:2.32.1-22.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/util-linux@2.32.1-22.el8?arch=x86_64&upstream=util-linux-2.32.1-22.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"util-linux\",\n    \"version\": \"2.32.1\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"22.el8\",\n    \"sourceRpm\": \"util-linux-2.32.1-22.el8.src.rpm\",\n    \"size\": 11560494,\n    \"license\": \"GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/adjtime\",\n      \"mode\": 33188,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6aa92cacc25f30a7caacd8cf772d3626f5bd5b3a75ab2dc3e74a5119f56d12df\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/mtab\",\n      \"mode\": 41471,\n      \"size\": 19,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cmng\"\n     },\n     {\n      \"path\": \"/etc/pam.d/login\",\n      \"mode\": 33188,\n      \"size\": 715,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"83a11cc8be700a8e2ef107a15350a3f4f2253d554daf4f90149fbea823953cde\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/remote\",\n      \"mode\": 33188,\n      \"size\": 640,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd90767b2883bfb2bee6c27acc794bcea58bf3436cc2180ccfca0e822b6c0145\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/runuser\",\n      \"mode\": 33188,\n      \"size\": 143,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d430cb6628248953568010427d663f3305856f3cb055955c2239bea226c5280\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/runuser-l\",\n      \"mode\": 33188,\n      \"size\": 138,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"be9329a8b26e3cfd4af879fe60900f646f8188f3fbe491688f23d4d8b491c5b1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/su\",\n      \"mode\": 33188,\n      \"size\": 566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6b08d1c3f556df6bf412834710f949e9adb6d6d566e850918e8f6eb18a5da96a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/pam.d/su-l\",\n      \"mode\": 33188,\n      \"size\": 137,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d10241676e97e5e8d8935e5c8e8f6cb2f871afb881059715f155909be9ebd77\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/cal\",\n      \"mode\": 33261,\n      \"size\": 67832,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb15b041a156c7dfee6dc780a4c414d233d3028bc1e03653abeb1ef02b4acd15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chmem\",\n      \"mode\": 33261,\n      \"size\": 46776,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"95635f9f124dd1e66e7aea095888ed139d280793afbfef5022fdbabf102a670d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/chrt\",\n      \"mode\": 33261,\n      \"size\": 38288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e6d724818c608584c0eb32f75a3b2c996804ce7df8efd4be6bfc8d11ddab54a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/col\",\n      \"mode\": 33261,\n      \"size\": 29936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c06989a63e1b0ea770907c775582f2cb79f4a99b8c03ac856007f1e38c11140\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/colcrt\",\n      \"mode\": 33261,\n      \"size\": 17000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b5511e5ba15439cc317b0b67f4d1166d95165b185f47873c6bceb4fc1f85f58d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/colrm\",\n      \"mode\": 33261,\n      \"size\": 25784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0fa4e5e1c44bc2b0158f5cb118cc0f5955eaf36a5b324afda996cfc3ec12072c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/column\",\n      \"mode\": 33261,\n      \"size\": 50872,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"84b239b853047de7d104dd3770230ae33fe056e4ded7d297fe385f2831bc8229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/dmesg\",\n      \"mode\": 33261,\n      \"size\": 80048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"132aba4b0470e219c2ef33b89aad80eac208b94b73ee79fa78ac592870e8fd71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/eject\",\n      \"mode\": 33261,\n      \"size\": 59432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b174d103ece8088346de88f39cf34eb8fb930df7ec489a56467c4d98ea1c113\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fallocate\",\n      \"mode\": 33261,\n      \"size\": 29896,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"323fd37c3c3ae679666a0619e569bd89a6be30cf54598d5d3ad6a66fcb2ef6e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/fincore\",\n      \"mode\": 33261,\n      \"size\": 34064,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8b1f58cd5568c42ec8dee03ae60d6315401d06100aae8ef48ddb51d25a5095ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/findmnt\",\n      \"mode\": 33261,\n      \"size\": 68416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bb870afd72664d0bf66c893bf910ef3c8d5bfda68183bb96fd7dc4cff950673b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/flock\",\n      \"mode\": 33261,\n      \"size\": 34224,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"275d86af7c4fd407e3bcde0cda75879b5d4cc2e30f617695f9dde4d052f38bed\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/getopt\",\n      \"mode\": 33261,\n      \"size\": 21144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a60bf62301737d7b93dc7be35854e31c634a03ab8012ad29bab809c680ce5e88\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/hexdump\",\n      \"mode\": 33261,\n      \"size\": 59144,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a67782f195ec81cf1f3bf9b0f7c1693291d7a5cca09e65c9415bcaf210b01cd7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/i386\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ionice\",\n      \"mode\": 33261,\n      \"size\": 29912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22fe2a7e6e2b43bf09c6eafd556e5869d6d92dfe5a19a9bf5423ca3d6aff1e8c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ipcmk\",\n      \"mode\": 33261,\n      \"size\": 30072,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06ec78242bfb99cd9b5435e3dba4940b37be750f31f8ad01c3bee956b7f0851f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ipcrm\",\n      \"mode\": 33261,\n      \"size\": 29936,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b072b81e0e768fe62749a51d2a946fbad3745e20efb43cec5aa2a0a493a9ed28\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ipcs\",\n      \"mode\": 33261,\n      \"size\": 54912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24afbc9281ad0088ff3850a1166c70c1a3114236d3d2691ea565043406b64035\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/isosize\",\n      \"mode\": 33261,\n      \"size\": 25784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2521681082478ae62d1a54c5dff90bc4b3fde8585da0f907be34122cab83af30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/kill\",\n      \"mode\": 33261,\n      \"size\": 38408,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7b0cc7f489f851538b125c6c063fdb8dd2c1a889c4a321e47c151b443437e1c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/last\",\n      \"mode\": 33261,\n      \"size\": 50720,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2afc7e0ac2f67c01ce525b17ace7f8d5f498d3b0625cffd43585742be66f92f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lastb\",\n      \"mode\": 41471,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/linux32\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/linux64\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/logger\",\n      \"mode\": 33261,\n      \"size\": 51416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"30edd2bdfcfd9fa61761ec104543e43f5cb093e56c176877f088c5748c08616c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/login\",\n      \"mode\": 33261,\n      \"size\": 42112,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cc7eadd626a73d9dbea474490b3608649e59f54ae1513fa447605e5f419f80c2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/look\",\n      \"mode\": 33261,\n      \"size\": 16960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8e4f7a950f5f4180906bfaf3786092fe48369d119960db260b9e2a8079721a4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lsblk\",\n      \"mode\": 33261,\n      \"size\": 88416,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b22b0c7adea4b3df1d63643a79b09b129dff32a1ec3919ee6ac0d299ab1577b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lscpu\",\n      \"mode\": 33261,\n      \"size\": 79736,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45030cfe34661eda7730012e16274e9a1d1c449b508e85ad525e066b637e2815\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lsipc\",\n      \"mode\": 33261,\n      \"size\": 75768,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fdd8e0d08183c587f19a478dfcc7846c67bd09953a2be0e3e927772d59676dce\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lslocks\",\n      \"mode\": 33261,\n      \"size\": 38648,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5249f8e2d81465baddb70f66d73b090cc5a12cd97f09ce023bec72a3979310f9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lslogins\",\n      \"mode\": 33261,\n      \"size\": 67472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4d1552ce7b134e8ea43c961cec636987c43bbb0c3a25fa4b3095e063eca861e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lsmem\",\n      \"mode\": 33261,\n      \"size\": 46632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9784c10ffd52e74112965e0fc0f6eed014a8390086bb7362d89163f29d5106d7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/lsns\",\n      \"mode\": 33261,\n      \"size\": 50712,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"daa96ce17588883c0a94b60cf2dfd9d3166ad9b6d55863d8a2a37904ee3ddcd9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mcookie\",\n      \"mode\": 33261,\n      \"size\": 34280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4acb797ded644fbd5c4dc9fcefd22bec661c92204cfd11bf3b58c106f34596fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mesg\",\n      \"mode\": 33261,\n      \"size\": 12856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a072310e737a95db8a8fd52cd49a227d1075bf45df45f53b1786a5207b9c3ac4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/more\",\n      \"mode\": 33261,\n      \"size\": 46128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69fb3985dfe9b97fd37615759aa7f3450fc719c469385102e4579651529f58a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mount\",\n      \"mode\": 35309,\n      \"size\": 50576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"22ce74001b1400ad650a98e6ddaa04965068e40be6638b46cf103575e65c2a84\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/mountpoint\",\n      \"mode\": 33261,\n      \"size\": 16992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"60705f40df6782d8acbc6deef80921acdb960ca9167ca44969c8825f40282df8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/namei\",\n      \"mode\": 33261,\n      \"size\": 34120,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2e4919561b4682beaa394f625dab72720072094a68a2d9e086fc1ae4a8d5b40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/nsenter\",\n      \"mode\": 33261,\n      \"size\": 34312,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0049b8922cf11029dd612926f4bbb218844a61dbb678b6825ae1896054d01169\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/prlimit\",\n      \"mode\": 33261,\n      \"size\": 38664,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3c33870a9f0fe5f0e0d2d835706971da15d69aaae94753dbd0c95bd29e68627e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/raw\",\n      \"mode\": 33261,\n      \"size\": 17008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"96303e8069774115f107240083f09e1434f8c07f3dab3f3824ec169ef0bfc229\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rename\",\n      \"mode\": 33261,\n      \"size\": 17008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4a3349dbbd584aad9a0e351590b35aa7ccdc26ffcf727790dd7a7b2ff557329e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/renice\",\n      \"mode\": 33261,\n      \"size\": 16976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6191cd3bb34dea859a333357d71fe53d369d58e71d0e5293e34d296ed965b8fb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rev\",\n      \"mode\": 33261,\n      \"size\": 12864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"871a70be117bf8b9387b6174ab79cbe179f51662ca0cd0ea46367f32a0d8f036\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/script\",\n      \"mode\": 33261,\n      \"size\": 37976,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9947c29047c680803c07fd46cb3f185acab685deaf8ba6e1f60e4364be34fb2a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/scriptreplay\",\n      \"mode\": 33261,\n      \"size\": 29912,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f7b8ef8d4dcce145b7e34645ef286be74e992e7e0c3ce5444eee6ade0dc690ca\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/setarch\",\n      \"mode\": 33261,\n      \"size\": 21376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58dbd99e3119b2c3f10e6b3561e4db791b41331bfa8b9856c66df0b62c05d686\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/setpriv\",\n      \"mode\": 33261,\n      \"size\": 42280,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fb457b1a25c772fb8346c372baa64fd16533885c8a36c7d08eb1b13601324f40\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/setsid\",\n      \"mode\": 33261,\n      \"size\": 16952,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2ada607b98e08e4a31b7e7342d4736971954fb0ebd3280c21683912b73a4316e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/setterm\",\n      \"mode\": 33261,\n      \"size\": 46424,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"43c3cc33585d8e24dfd2344b51e8087eb725407ff777a967ad576ae7cc25041b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/su\",\n      \"mode\": 35309,\n      \"size\": 50448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2ea1c440e6270197c0ddde7135bff712a81ff66c4fc75d40203e015b0b732d3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/taskset\",\n      \"mode\": 33261,\n      \"size\": 38360,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dcde82bbba2413b9428ac5d9ddf85f48193175f284c8cf1f436219f6fb153d9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/ul\",\n      \"mode\": 33261,\n      \"size\": 21192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ddfbab36ef661beeecaf0a66239a480fccde6b3c02dce417f62607892b1e419a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/umount\",\n      \"mode\": 35309,\n      \"size\": 33760,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a4999d2b34870698dca68a176fe11a9f474d69c4de0fa5e93faa01b149a203ae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uname26\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unshare\",\n      \"mode\": 33261,\n      \"size\": 25752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf2b0e151e8f8511bde4c0c4e23cc553ea970a5056b99294a9b495151de31ad9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/utmpdump\",\n      \"mode\": 33261,\n      \"size\": 29608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2b86cddfd1db0ee3a97cf9d42e71ad57dd4d699a53fdc9f01f304f57a108f640\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uuidgen\",\n      \"mode\": 33261,\n      \"size\": 16960,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c417fc638932c9fd73ad2b96c0dfbb2911f12437fc8510246da972c298dee50d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/uuidparse\",\n      \"mode\": 33261,\n      \"size\": 38256,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2d99a312f4cc6a9727274c3ac205276aeee48762760f1608cb18587a1f44012c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/wall\",\n      \"mode\": 33261,\n      \"size\": 34080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a65c40f636801b2894ac6fb7d183b06016662637b15cfa705c2fb5aae77dfa5a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/wdctl\",\n      \"mode\": 33261,\n      \"size\": 38104,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1048b042c241cb10deeb241be22ff586f55af0ca6d1fd52b40a6c300a771b9ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/whereis\",\n      \"mode\": 33261,\n      \"size\": 30192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c2ca6c79f84d2a9662c1524a14d9539d3e7b0101a3c6c6894db193d4d0a39d16\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/write\",\n      \"mode\": 34285,\n      \"size\": 21344,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3d75e0cdfbcb33570fdf5c959c865f816c30ae9b26cdc57dae721ef1986d41a6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"tty\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/x86_64\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/04\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/04/0635750b4c70eb6d376dfdb63ca3634ed15a9a\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/04/157312a5545da718d2dff3d2fd5f533c84f217\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08/5594fc25a814649fc5510d34685f54da5554e5\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/08/7fb8f8451347f5d61134513371ec918c34c705\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/09/0b63d3e6d29c0305cb34ee08f44e0dcd20fa36\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0a/fd08df3668ac9535462ea97b2148cbe95a20d1\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0c/35de143717d084a852cc65fc0d8aa01ed0efbb\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/13aface4167a737490741e044887ae456f0f42\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/13/9677591109d8138236b03fbdb9ff8c878f5dbc\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/19/b538a8031fd21bbe197bb4f6ae454cc04d10db\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1a/c13747909cf00528801925803f63b72123136d\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/36ded39d31fff8dd7ef279e0b6fe8d1d355567\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/42218b37c4e90ddc3525eab2d2ff19bfc340d5\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/6e4ea5087f69b622909a251f43e668b9779810\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1b/cdc2e9989ce26a47afeaf409f099a045bd4777\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/1e/e51ae4a353850248545510118f275980ff4ed2\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/21\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/21/59e4f62d674fc817964a0fc388a66086c5857b\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/24/ebbe4371e01fe159eb044069da312d35ef78ea\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2a/a337eb879cfbbd39ac1fa3c0b50471d766ced5\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/2c/170e5e4dcfa6915aedcaf61991f16b8b2eb35e\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/30/542f35f34b56b934208eb2f5dad3f183f5770b\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/33\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/33/64d6d848325bb9030fcf83690993f04afaf358\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/36/0429180e9d0e36c4bde47c8554acf1da13e09b\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/39/f5298dafcfaf115cb996df0e9949ab2b823640\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3a/891c5fdc048fb980395a0e25a226faac29a65e\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b/693b4dbad20c5481a8d6d6047bd58259c75d68\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3b/6b363221f18c97fc073fc4d71d5209fd96fe2e\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3c/9be59a14fd8bff1bc7bbd1c8af58e8cde54248\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/3d/b7c8ac44808a28f9c955ad1bed79a7864aa791\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/42/e790b5cee64d19024125c4d7586ee175bcdb08\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/43/75e4977408bfbf873d34fd6af3f96cb14fd6bd\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/46\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/46/8a9d4d4a897397c8ab355463475faaa3daef18\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/48\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/48/e202535cb00d00b5780540fd80786365060364\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/274e1b57f557cd7fe3c602717f0b5de90b5d32\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4c/412448f256fb9dce4f96b4f5a2f28e29879a97\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4e/040f2170b23b29d11809ad2d580cd70d8a821c\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/51/5ff602a1e3b0eb5df167f041d5d8125eaff781\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/56/1f124be43b9f1aea366ba0a972690a0a21755b\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/59\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/59/56e940b92022c6001409e1de7e33c16411ddea\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b/21d3cd196dc669d4f59ee78f9c429944a9e660\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/60/89d3e57e792c48829796dfa8f5c3b5df3d91a4\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/61/29e1ab7c4c9229b19cedae265548b6cdedf261\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/64/0e778122eb1a6aa63e17868e46a12ab8850cc7\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/66\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/66/5c84b64ac7698a1b2da3e6465fd01a0d6eb1df\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/67/58b4cd281449ab08996d1041a8c45e12f18a87\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f/22d9db1d3ae6b0e446fbb741d4a4adb94d8f12\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f/41cf4a349203d4db84cb5fbf637039e06c7c85\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/6f/529b73bb125ace728c3b4521171d90201e36c3\",\n      \"mode\": 41471,\n      \"size\": 30,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/73/1721043e76adc9bd5b0a33644da33b5ae1ec2f\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/74/07cbe21694282330110fa9445205c314868d23\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7a\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7a/57e014e9a14925edfcc4a2a5929181dd63d78f\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7c/36213e29d576003a02c49fdff1e441b21e244a\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7d/732069b167252254af4cc48d1baa2c929feae2\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/7f/7a98ad8736cf52c6a3cab1fb12a5f9f4c3b3ab\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/80\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/80/0e2ad1ce20e40787cb0241e15a1d12df6a8264\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/84/dfdcb070500e3b33f113eb05056ffa11b0944c\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/8e/7bb208c09ad5e449a2647a66dc345c007533c6\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/91/1c644cb480de9f03bec13141d60c699022917b\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/92/b2ac6375a14617be6512ba19b1dd92bcf35a53\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/93\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/93/b4a647983d51bbea442d1030e5170703c88616\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/95\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/95/e2cd57b0ed4a89f6911cfad4c78b68d06731f9\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/97/fe8095b354646d15452340d8782db5aa976045\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/98/da68654df32b7041543fe35156209e6482e934\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/9b/130ff247543134ed947884aaa6d24d74c06552\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a0/e9eecc9e8d0bac04b12c129b20bcc55ed58430\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a1/de3f394caf28c8a0a5a4178330a709755aa15f\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a2/90f2658b7af684c4ddd0ed473196993761a1ba\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a4/b2a895f829c85d3ef32864adc74d6e1861b15a\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a5/2592a113fd7c690c2cbb91bd984b3413c9fd63\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/a7/5d585c17134eaeef0de32e760e7443aabe2740\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/3519ca5ccaa9bdd00379988b3cf3250203b2b9\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ab/c2554439fd2748f167fa7ba0845d61cb4b9bff\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ac/9c0f5f2f06758889834f986de8a392ae4a99ee\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ad/6cecb46a5d92155f355afe315835fda90ef343\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b5/1a5d225f52edabe92c88ef61cc5eaa6c6ba9e2\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/b7/0e70997395b378005bf4b209ed7e4a0467cfda\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/be/17c1b9c1cc758cee156eed7784d483ae716855\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c0/6537f7238c9c1cd0c2c97ed35ad9cd1c31e7d5\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/c8/7db3d7ff52e28a3eb0d11a38536da5c648f09f\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ca\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ca/8e1c4ed4f4f230061b684540612bdb2b967543\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb/15fe90fe3b5848aced0f3153242e6b1ea4f5e8\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cb/e2d58fd7744c9f814754449fb3808b136f351b\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/cd/e948cfb744eeb44762902a82726bf4ed080250\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ce/58b412fd9c3fdc0bbb22676f74c413e5ddcf8b\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/08b7d221892537e23e985b270aefd323b38688\",\n      \"mode\": 41471,\n      \"size\": 26,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d6/1fdddcf02c3ac74fca5d3bf0c90f646c757c0a\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/d7/21de0011b1b582a6018cedbae65b96695d9671\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/db\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/db/63bc4ce8ed7f4c434dcd11126865f4cf17e6a9\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/de/447c9cc40156e4fc18108629c718ee4539f11f\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/13619c7bf610863dc3d0b6d4789174d6026fca\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e4/bcf4e119371b3a438c353d19bbb6af6bcb2c02\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e6/1108203dfef706ecc5d4e39b87bdfd44fb0dd0\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/e7/3140cf808114d8f6f6ca061a07cef4ded721ee\",\n      \"mode\": 41471,\n      \"size\": 28,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ec/8c3f30fa4603d145e435eab7f7f5eafc0e27bc\",\n      \"mode\": 41471,\n      \"size\": 24,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ef/d582244167d6bcfb6afc2458099fe2cf6a7385\",\n      \"mode\": 41471,\n      \"size\": 29,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f1/d727964ae59bad597325122e5db1537a4008d4\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f4\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f4/7a37071a04010fd955655daea165dd5ffa4b5a\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f6/a805334f64215d6ae53eaf80f8d02fc7e44449\",\n      \"mode\": 41471,\n      \"size\": 23,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f7\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f7/4f0c6291c44b18af473da143daa31b8780f91c\",\n      \"mode\": 41471,\n      \"size\": 32,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f7/96587a8686f3149bf29826d7054e74a90af632\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f8/bdbe5ad4678962322c97cf32d2dbb9e04e0bed\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fb\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/fb/0512fac5905514263acf054fa948ac7125d6f1\",\n      \"mode\": 41471,\n      \"size\": 27,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/ff/bffbac24f78b8d3b23ed8fa5fd35ca4746d619\",\n      \"mode\": 41471,\n      \"size\": 31,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/fstrim.service\",\n      \"mode\": 33188,\n      \"size\": 96,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"45997a9848132cff9e480bf39da488729a8c4b4637565e179bf111d861c56857\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/systemd/system/fstrim.timer\",\n      \"mode\": 33188,\n      \"size\": 170,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c0207b760f12b3da601be9ffea48872bc446dcd295103563122c3b1eca0faeee\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/udev/rules.d/60-raw.rules\",\n      \"mode\": 33188,\n      \"size\": 326,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"24a4525569d6417ef2dd04cf9ee5a32fd45b508f7bd87e64c12db249c3ce975a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/sbin/addpart\",\n      \"mode\": 33261,\n      \"size\": 25464,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3395b250e16bf9033a6a2544e2b7391b5a671e7e02fcfabf850d3954693c754f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/agetty\",\n      \"mode\": 33261,\n      \"size\": 64056,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d250c2051b86e8250f62928dd32be69421892b2bc0e661e8a7fad16ed0ceddf1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/blkdiscard\",\n      \"mode\": 33261,\n      \"size\": 29992,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fa3777829973e7a9d649dee8ef3d7e05386fcb4f68899a0ed8403b44d4943023\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/blkid\",\n      \"mode\": 33261,\n      \"size\": 97128,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"21b148626c64c3780d8256a1f81b731222680137d161aa1f81589bc7046c71b4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/blkzone\",\n      \"mode\": 33261,\n      \"size\": 51176,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"41b6c8ec73a7714a348ebaf2801c7c4b71aafa11e0bf9fd0d11011b0667ec48a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/blockdev\",\n      \"mode\": 33261,\n      \"size\": 42528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5274128aeb3b3b6c1c5aee53db002e9b27fdafb8903a9d8f0574c75a1c29cd70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/cfdisk\",\n      \"mode\": 33261,\n      \"size\": 101016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8e47ca8aae6f9a7bf99baa7c622923884f489587b1e8d13aa03c72d052238404\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/chcpu\",\n      \"mode\": 33261,\n      \"size\": 29744,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d7ca24d98fd41757e1759f308e06b75b3e941742975151e59d56492accd7aea4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/clock\",\n      \"mode\": 41471,\n      \"size\": 7,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ctrlaltdel\",\n      \"mode\": 33261,\n      \"size\": 21512,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5c060f4eedd742a295a81bb5772bfb51f0b7641e7538443e9af089705c3caace\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/delpart\",\n      \"mode\": 33261,\n      \"size\": 25456,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"14c6bf46fcac826c3334658f739deb8f788ec69845293a98415a399695c3859b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fdformat\",\n      \"mode\": 33261,\n      \"size\": 34200,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c85e6b28801e456bea841752514cb36f8c118f17b6e86a8e6b29607e62197433\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fdisk\",\n      \"mode\": 33261,\n      \"size\": 134288,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"91933238fa8f82f22db9948a52d1ac276f50edbcbb1c27194c04313a644aad4c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/findfs\",\n      \"mode\": 33261,\n      \"size\": 12856,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b93ec3566cf3cd8eba35f262df5fbf7f01ddddfa08f6be964e6b69c48e85b309\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fsck\",\n      \"mode\": 33261,\n      \"size\": 54984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"12cc2c212a202f7ef16bc73f85f35897b32bd65cb1ea60fbb0a60cc053dc9f69\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fsck.cramfs\",\n      \"mode\": 33261,\n      \"size\": 42608,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9572a45ad6c25d890272eee0684f656a3ad775e8b68d6eec7e25d089d4fe9b1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fsck.minix\",\n      \"mode\": 33261,\n      \"size\": 101368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9f92901b2424a329becb4e922faaaff8865ea1b1b79b65327d0d2620dfdd3218\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fsfreeze\",\n      \"mode\": 33261,\n      \"size\": 16968,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5123eee6a4c9bcc96aa33855982260bf8fe7e13ad54fe577afcf0d414ce0e2b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/fstrim\",\n      \"mode\": 33261,\n      \"size\": 46928,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"974976a8181ad5fe97053ca720a30fdb242792e4bc009c2a3bf06666186c1454\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/hwclock\",\n      \"mode\": 33261,\n      \"size\": 67040,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9de8cad9bbe73911bc924786340cfd6fc45fbf880b85cfcddf042f2b518b1a0d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/ldattach\",\n      \"mode\": 33261,\n      \"size\": 34016,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a69326b27f79a9003e644367eab25ed0e2205bfb8d61ae28b8b7c111f7952de7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/losetup\",\n      \"mode\": 33261,\n      \"size\": 92984,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1922fc3df6265cb4821dbb3f7aa66f37ae51ba40ae153835bf316d861056119\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkfs\",\n      \"mode\": 33261,\n      \"size\": 17000,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"59696ac618c834f53dc7b937d99b66b55e19c9b04d177089bc7e5cd2719c7674\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkfs.cramfs\",\n      \"mode\": 33261,\n      \"size\": 42488,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0a9fe2e88a1013c1f32d0804b01154a4c1a12bbca8ed228826a15477166c9641\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkfs.minix\",\n      \"mode\": 33261,\n      \"size\": 88840,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1d19a7a62b92eef565be2e3553a51a5ef4bac2ddc262c579fa96002136623c3e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/mkswap\",\n      \"mode\": 33261,\n      \"size\": 88744,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a409bf7d87ae7325e13ac9dc25a761ed9a01b2c27424186cb34b7a9fe711ec50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/nologin\",\n      \"mode\": 33261,\n      \"size\": 12272,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6415f5ee2a3087b95685016e3d5abeb6ea1e151157722f1ef5c9c1237649a166\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/partx\",\n      \"mode\": 33261,\n      \"size\": 92880,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d61a031ac6d543a4eced3e080f683dd590778bc06822fe660bc2bf38272eac81\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/pivot_root\",\n      \"mode\": 33261,\n      \"size\": 12864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd5261ffeeb4c7d92d1fbfd27c71effc306e6d32c7d05045e33da35d5aa55f4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/readprofile\",\n      \"mode\": 33261,\n      \"size\": 21160,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3a33e16d3fce10d3449d23d000a303c5c46223f80d7e2027361481f02e98b1c4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/resizepart\",\n      \"mode\": 33261,\n      \"size\": 42800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"169250d5989af6b66cb921c3e41340c883ee75bf31668e9a279779cca462f19b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rfkill\",\n      \"mode\": 33261,\n      \"size\": 55048,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ad38aea87c5fbf24546cf5010d75b505b8b35b99ee4855ae8314f89d66e6d22a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/rtcwake\",\n      \"mode\": 33261,\n      \"size\": 50752,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"972a4df2c82d13f6e609978473744e05e90f9fdcd2b83e3c51c12c1a1f402745\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/runuser\",\n      \"mode\": 33261,\n      \"size\": 50448,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1ab05f0d04b85020ba1dce214f393c4bcc98a353dfabca894dbb64f3e3ceb7a8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/sfdisk\",\n      \"mode\": 33261,\n      \"size\": 121624,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"df6e2d7904079ac497a6d2c112669c16a1050815671f5c07db9743a965ab3d26\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/sulogin\",\n      \"mode\": 33261,\n      \"size\": 51080,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0991bb31721e06b3bc9af26fb515d967767e8c565c0ac7201f6b6f0d169c7dd5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/swaplabel\",\n      \"mode\": 33261,\n      \"size\": 17216,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58a4d90649e24c6dbec9b7967e212e743f535a460655226a6a3900ecc93c24cb\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/swapoff\",\n      \"mode\": 33261,\n      \"size\": 21480,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9230f2dc7360fd4d517fe407f29b206a8877b47da4db7c7ccb4263558e869d70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/swapon\",\n      \"mode\": 33261,\n      \"size\": 50800,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"06330ada7a841831bdf0127b94cf010779796f3640a6a4f950e3e471a55a4e96\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/switch_root\",\n      \"mode\": 33261,\n      \"size\": 17008,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0b1f83dfa43449084fd69393ae8c0176cfeaa17ba64abe2a6471916e6b9706b7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/wipefs\",\n      \"mode\": 33261,\n      \"size\": 42368,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5739a1afdb5eb4ce00cfb1382e90265bb6457bd018d9bf3b9a16a7192ad00cb3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/sbin/zramctl\",\n      \"mode\": 33261,\n      \"size\": 101688,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"13397ba03beedea251420700db89005d4c5ae63cee3af7840d644d0c583b8b7a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/addpart\",\n      \"mode\": 33188,\n      \"size\": 447,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"61badc8851eb6f1c153df1a07c9c2f3bffa048fbd05d1ef775384087440a08c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/blkdiscard\",\n      \"mode\": 33188,\n      \"size\": 639,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52ae5cec0990942b3e239d9bae331ea237d6dd457575746e382d07fbabf9ad70\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/blkid\",\n      \"mode\": 33188,\n      \"size\": 2094,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f4ec23b0db103c742d655c8e9dbbe3e2d59f1b711abe6a241c91a8211895e624\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/blkzone\",\n      \"mode\": 33188,\n      \"size\": 971,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bf20f342237b951779fb457d68cc4bc7900e6db044becb5419efa109b77ffadf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/blockdev\",\n      \"mode\": 33188,\n      \"size\": 726,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0e33e84094c213cca2fc2e3ea06efc4a655ef4bb27ae4126943c574b98709767\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/cal\",\n      \"mode\": 33188,\n      \"size\": 426,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba7d43682f8dd8eee55591d451aa0b4380e1cd01eb887a91528dbbb9187ed14d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/cfdisk\",\n      \"mode\": 33188,\n      \"size\": 546,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2995b77066141f0a0b67dec82d554a20909466eca6a3e8f237eb709b7f5b4c62\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/chcpu\",\n      \"mode\": 33188,\n      \"size\": 1510,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a33736eafd741e7929ab8c13d1484f19a0874fb5a220dac8c6e4e7d3b2dc6458\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/chmem\",\n      \"mode\": 33188,\n      \"size\": 501,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6bb1f0dbb7af9f2891badb28f90e7ab9b82647a4b982a284b541968f669f2a9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/chrt\",\n      \"mode\": 33188,\n      \"size\": 920,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1dd13080d71c8d880e628eee89e8f493c979441692ef364e01ca8c8a761d381e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/col\",\n      \"mode\": 33188,\n      \"size\": 460,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4d3265f8264768dde09b2962b2b19f1dd23b5283430b64b762d24515dee93cc8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/colcrt\",\n      \"mode\": 33188,\n      \"size\": 484,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cfaecdd8f38c8fd02a9a6fe9685dde62da40bafd69412d0da67cfa86af3443e6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/colrm\",\n      \"mode\": 33188,\n      \"size\": 509,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0189319a7ac414b0777557a29e5c6ddd32ec3a4db494eea31c193bdf80add723\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/column\",\n      \"mode\": 33188,\n      \"size\": 725,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"232d82bb405518558eece4c5a0889502a5df776b6db7e1e2c9f0c0cb98238955\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ctrlaltdel\",\n      \"mode\": 33188,\n      \"size\": 335,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"52021091a5554e9b6275cdabbf1820ccd18eff38d8b0094284ef7fb68c38f66f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/delpart\",\n      \"mode\": 33188,\n      \"size\": 526,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e337b3898cacda9485085c522d9306a043146cc52c780bbcf2c65b8d366f095a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/dmesg\",\n      \"mode\": 33188,\n      \"size\": 1182,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"5cd7dd59ef1558c7d5bf8fe58581eb6b173f823b21f1e83598328de2d7695060\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/eject\",\n      \"mode\": 33188,\n      \"size\": 1189,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3023989370b39ed06207f18a9581de1d9d60482024e2c86135df22459559a410\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fallocate\",\n      \"mode\": 33188,\n      \"size\": 721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f775a5a4e4d051193cfc5dbcc2ba373d5cfe350604f3c4b79372ef4a7e494f02\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fdformat\",\n      \"mode\": 33188,\n      \"size\": 566,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d1478a7f29aa6e2ac647acb10a2b1036bf2e2cb98e9627abb43fb1bf6ac561ec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fdisk\",\n      \"mode\": 33188,\n      \"size\": 1834,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2eddd6f947b6246d18959c173aac7112e1e9b2d523ffe852f88011dd2e4836c6\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fincore\",\n      \"mode\": 33188,\n      \"size\": 916,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0d66d90486e2f0b6eee9a962adc762cd19f7311b42d344cf47e49ef1261f90e4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/findfs\",\n      \"mode\": 33188,\n      \"size\": 695,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ff73ffe3f15cc6ec0bfeed0a2c87b67eb1c9890ec5e7a23d18eab733d16c0df8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/findmnt\",\n      \"mode\": 33188,\n      \"size\": 3154,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e7b2684e430a5b9f71ff766866ccd63c1358b568efc6fbdfcbaa4bed35b3ae30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/flock\",\n      \"mode\": 33188,\n      \"size\": 874,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4ea2ecf934319c37348fddefdf0f028614ce04cc1840574242bf47219cb0a8c8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fsck\",\n      \"mode\": 33188,\n      \"size\": 787,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"feb2b95abe8caac7840120e9575816d9e02dc8d08fe883293211f6f88389dfd8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fsck.cramfs\",\n      \"mode\": 33188,\n      \"size\": 684,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"74f9052c2e8991509621e742d39b65beb9489deef2b2b1f7a443f05acf11db46\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fsck.minix\",\n      \"mode\": 33188,\n      \"size\": 383,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c80e2696bcb4fb7642418d3aec96f7c2931cdcfdaf245786ee3b6cded99e22fe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fsfreeze\",\n      \"mode\": 33188,\n      \"size\": 524,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7f99f914f660697f78e57850e4e70c027e73a0aa5074a28bd3a5d25c2564b371\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/fstrim\",\n      \"mode\": 33188,\n      \"size\": 677,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9c36b670fa1b23811490e2b47b6576a4b58f38ded511ed4f3757e7b858e3700e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/getopt\",\n      \"mode\": 33188,\n      \"size\": 815,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0ae50ed789c556f2abdabe09362169d385f9facf1bd05c13cf57b3f8e0078a5d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/hexdump\",\n      \"mode\": 33188,\n      \"size\": 1007,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4bcab470cac90909b105e525171e7bc0ad8fc60b0d98503f4d46dfad8060cf9e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/hwclock\",\n      \"mode\": 33188,\n      \"size\": 938,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3f29aca0683c4b66ee099eb32cbbe0763965ba0de7b5e1d67efbf23db7f93fdd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ionice\",\n      \"mode\": 33188,\n      \"size\": 1161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a92b4a98b89f6c3af9baf94aab2cc24f58e0e2c4ffc6e2ea822cdc093d940ff\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ipcmk\",\n      \"mode\": 33188,\n      \"size\": 576,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"701db74a1133159cf159c9a182a46eb77ecdab618c52e373f432b3924d8e2707\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ipcrm\",\n      \"mode\": 33188,\n      \"size\": 1423,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"454731bfb20b7be1e41f5b0704536a549ebf7ee755d64bd9ef882b04ae84173d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ipcs\",\n      \"mode\": 33188,\n      \"size\": 514,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c8d2fc0706082e013fdec16a7b7fcc3aadbc0c3e22f87d8a818d9aa95f364acf\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/isosize\",\n      \"mode\": 33188,\n      \"size\": 529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0afdd61db90044908eef15ef623eb9e6f4598cdfe581f20b1b812650d961f567\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/last\",\n      \"mode\": 33188,\n      \"size\": 949,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"406ba6772a881f22d10cad9096093673513c8426e81594c44977e1a57e7c4724\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ldattach\",\n      \"mode\": 33188,\n      \"size\": 1472,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2a5396940e79dbdeea768970b2960d067e8a2fb78e9379a1b1b0fa250906595\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/logger\",\n      \"mode\": 33188,\n      \"size\": 1553,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"20a52821ce9e70f58e72f9050e3037aba96986aa39403a7b36bf5fac3de1b2c5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/look\",\n      \"mode\": 33188,\n      \"size\": 683,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9266652a2153e29fc80a3716fb3efbddff33a33590eaa20773d0b694e3daf554\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/losetup\",\n      \"mode\": 33188,\n      \"size\": 1721,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d303360015af85fb1e174b2baded89ee18e4b492e86b4923e9a4d435be03af71\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lsblk\",\n      \"mode\": 33188,\n      \"size\": 1961,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"32a935615aed4a5f444fbdf1da8364160390bed9eaa4d109515a8269432a01a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lscpu\",\n      \"mode\": 33188,\n      \"size\": 1018,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2e33c9fd36591d62f19ff4ff4ce1bf4c839dbe6e9445dcd19d7ff16945dadcfe\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lsipc\",\n      \"mode\": 33188,\n      \"size\": 1310,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"650711cc8c467b10fc463a333d3bba815810ae9cc1dd8b5c8bc0181b9721df82\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lslocks\",\n      \"mode\": 33188,\n      \"size\": 1069,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6d06600296ca5b2c343d602e6d8d7680941c9ca29baa79137cf0d9cdaab73b85\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lslogins\",\n      \"mode\": 33188,\n      \"size\": 1704,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"713c0e99482efd5139818e6f2a3383db05a6b6f9ae2356ab7f6578e95e3c8eb7\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lsmem\",\n      \"mode\": 33188,\n      \"size\": 1054,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"efaef7d643aaf1e461124891e8799c0415764d0c3b5f1663ee73f1c0d7defac1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/lsns\",\n      \"mode\": 33188,\n      \"size\": 1167,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5daf627bd51f6e97d44f9f905c98b1c3023aaffc12fcd36802636b2872cda1a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mcookie\",\n      \"mode\": 33188,\n      \"size\": 599,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c1460f2f78f58e0195f4dc3af4a5e92925aa23f3f6ec5c73a7565329a7eb8b3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mesg\",\n      \"mode\": 33188,\n      \"size\": 412,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67d09288e327f405fa72009d7e85b81a70d20c5577ffb8b418b6b0de043e7fc1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mkfs\",\n      \"mode\": 33188,\n      \"size\": 638,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"b90a36595a7585f33e27d5028c66fecb8db2f01832240b70527aa93f9d93c486\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mkfs.cramfs\",\n      \"mode\": 33188,\n      \"size\": 821,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"a33449ad64a9c1e51ad0b82fc6afbb07febd5650842fea214231f399d7f3bf4d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mkfs.minix\",\n      \"mode\": 33188,\n      \"size\": 714,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"aa873021ae3d172211a649626f466efd53423970ba15d29d6f5ce4fc5d78fcc9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mkswap\",\n      \"mode\": 33188,\n      \"size\": 841,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e1cf77f54f0bd20cc47638b163a4b4adab20f4901ff4ef296cd2a9e3ebbb6577\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/more\",\n      \"mode\": 33188,\n      \"size\": 528,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f2a14123adff1db7144fa503b2e939d9383055e7b893a7730e146dd93c328032\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/mountpoint\",\n      \"mode\": 33188,\n      \"size\": 487,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4b9350fe71eac2b6927a0e0ea228c4d5d809d96320c0c2db233af2c6e522ae94\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/namei\",\n      \"mode\": 33188,\n      \"size\": 500,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1519a1b96f840f476647daa9d041a7d5db2dde0d80d3c99e973b1eccff8b259d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/nsenter\",\n      \"mode\": 33188,\n      \"size\": 1171,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c60762eff4f9768cda50c4e719c869ad6f2d9396f48c3bd4cb6c5bb90e847a3b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/partx\",\n      \"mode\": 33188,\n      \"size\": 1249,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f484caf21d33bef1f03dd3b6244295774565dcc516bef24718e4e07d8fad6662\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/pivot_root\",\n      \"mode\": 33188,\n      \"size\": 387,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e3fd2fed08fe53b1bdf0b344633375273ce54bdb75c65a4383f2bf29aa9868dd\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/prlimit\",\n      \"mode\": 33188,\n      \"size\": 1329,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"feb868f23ea5c5833a4fc9a642b78a83dd186259826304be649e7902086b8f9f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/raw\",\n      \"mode\": 33188,\n      \"size\": 482,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f546700af22030dffeefaa6b13e9ebb7c24538adb0941dcb98a9d68a6426640f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/readprofile\",\n      \"mode\": 33188,\n      \"size\": 679,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"874cf09268bc51c0dd77267ef8e3d9948ff9c8c376a1b9ce911ca135b7baf9a5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/rename\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d540f591b0a59ce27b14cb151f6b110a3dbba6c006052c0501a69fc9140e0938\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/renice\",\n      \"mode\": 33188,\n      \"size\": 784,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6fdf113c8a43356f2bddaff1613e3f66679f5f0b64d061a30e474f146163569b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/resizepart\",\n      \"mode\": 33188,\n      \"size\": 568,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e0692d25787a3625816b07ea00ef66cfeada23fff0016cf0a37efd95ad84b0d5\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/rev\",\n      \"mode\": 33188,\n      \"size\": 432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ffab4735212694543267952b527e72f3ee4ac9b0e07d49b432db219bd26a3aae\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/rfkill\",\n      \"mode\": 33188,\n      \"size\": 929,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"98738ba429e47a0a99b9fa3f805eeed2a9f6b42ce43654b2656d51282d2a5087\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/rtcwake\",\n      \"mode\": 33188,\n      \"size\": 1081,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"00d17c7f0f1d58372d1687ddc0004c0758818bc845de2caf1ec65435297b8a9b\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/runuser\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/script\",\n      \"mode\": 33188,\n      \"size\": 667,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"4939f89fc4e6fb5577b1803562c103d8ee43648f1f87a938c6c79a67e5850492\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/scriptreplay\",\n      \"mode\": 33188,\n      \"size\": 625,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"58d1c51c587e26dec022c31a4beaac423f4157b858a35a28dd6d3b4575f1111f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/setarch\",\n      \"mode\": 33188,\n      \"size\": 790,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bccea2e0e6fd329c9614c4c04f09093de21ba76595ef093bd70027df28bda533\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/setpriv\",\n      \"mode\": 33188,\n      \"size\": 2370,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"365faac5d98c05818a891f70f487e9d00ad761c4ad383362cadfe8ce3c7bbc53\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/setsid\",\n      \"mode\": 33188,\n      \"size\": 440,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"376e5ac5d2a289c03bf36a8f9a86ae160cffc6693112043bf33d2d4f99614c30\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/setterm\",\n      \"mode\": 33188,\n      \"size\": 2591,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"19ba4c6271e87a588517a67d2c02aae0683b2ab45c047784200e6a435da9248f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/sfdisk\",\n      \"mode\": 33188,\n      \"size\": 2012,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"37d03e1a9db3c6d7539b46ac99395811c6d33a00c33ad400abff2765e0618bcc\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/su\",\n      \"mode\": 33188,\n      \"size\": 864,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"cfd2d8d2f8c11b25c9c9810aeb1ce2817c17e252a8d0f1e9ee0502cf24008e75\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/swaplabel\",\n      \"mode\": 33188,\n      \"size\": 635,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"1805b9fa1953570fa4bb99339afbb25a6d701ce5a442d22b8ddabe486b46c9c9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/swapoff\",\n      \"mode\": 33188,\n      \"size\": 743,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e84478bfbcfb4eb0accf290e7b158085cb0db7f679afade1a270f7e1e731a691\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/swapon\",\n      \"mode\": 33188,\n      \"size\": 1529,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"afe600410af52c122572674bc127d1f21361c9ca457e22dcdb3ffee6ff837ea2\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/taskset\",\n      \"mode\": 33188,\n      \"size\": 1207,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f1b19ebab71cfd5b7b3082a3ecc59a319f8b14fd90eaf5ce9576a965d89f2907\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/ul\",\n      \"mode\": 33188,\n      \"size\": 655,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dbf03fa8a7f4e7213f709a811cf2015f4f87f35d5b21a35852c4c5e66d6489b3\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/unshare\",\n      \"mode\": 33188,\n      \"size\": 809,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"716ea1e75c1f6d2bb3480863ccb9f145a222dee237f766901083fc3f0b884644\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/utmpdump\",\n      \"mode\": 33188,\n      \"size\": 475,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"69a8a5a630ce32790499b7690d033c7d73c40c861a5985ca23c4f1585fd69b48\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/uuidgen\",\n      \"mode\": 33188,\n      \"size\": 657,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d64e54868b437b24aa682bc015f7761fedfe39badf1904691ba1c91035ac9dec\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/uuidparse\",\n      \"mode\": 33188,\n      \"size\": 727,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c4c0086a5c5b0e45a7c1880a818d6ae7f99fe074c6507ab0c2f1a1149781012d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/wall\",\n      \"mode\": 33188,\n      \"size\": 634,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bc527b9f476ec852921e2cbbc9fbfc2ecc4c1677c58103fb88678e25e11528a1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/wdctl\",\n      \"mode\": 33188,\n      \"size\": 1371,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"d2c3148ba44506574ddfa4cb939d91bd99e8e83b73fbe36119cdba9452e68401\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/whereis\",\n      \"mode\": 33188,\n      \"size\": 535,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2a040afc44337e73ffcb2b910180aacf09566b784f887e82255a09cc42689d50\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/wipefs\",\n      \"mode\": 33188,\n      \"size\": 1192,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"3850447cb9c3d7e2f2a99f556b88d944cb9b15be6fe9a0d9699ee62242b19412\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/write\",\n      \"mode\": 33188,\n      \"size\": 431,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"f6543a2cbd41ff073f81159a4a5dde495a8dc886a4625fa019a41f93bbec6ce1\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/bash-completion/completions/zramctl\",\n      \"mode\": 33188,\n      \"size\": 1273,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"c5acddf27c9aecf868a9f63cf2f6927ea0235b653198bfc311a629402cbd5ac4\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux/COPYING.BSD-3\",\n      \"mode\": 33188,\n      \"size\": 1391,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux/COPYING.GPLv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux/COPYING.ISC\",\n      \"mode\": 33188,\n      \"size\": 697,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"e53348ce276358e9997014071c5294b36a18c4b34f32f00ee57b9acce0aafd63\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux/COPYING.LGPLv2.1\",\n      \"mode\": 33188,\n      \"size\": 26530,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/util-linux/COPYING.UCB\",\n      \"mode\": 33188,\n      \"size\": 1824,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"ba7640f00d93e72e92b94b9d71f25ec53bac2f1682f5c4adcccb0018359f60f8\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     },\n     {\n      \"path\": \"/var/log/lastlog\",\n      \"mode\": 33204,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"utmp\",\n      \"flags\": \"g\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"91c1c703bb8f0a46\",\n   \"name\": \"vim-minimal\",\n   \"version\": \"2:8.0.1763-13.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Vim and MIT\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:vim-minimal:vim-minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:vim-minimal:vim_minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:vim_minimal:vim-minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:vim_minimal:vim_minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:vim-minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:vim_minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:vim:vim-minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:vim:vim_minimal:2\\\\:8.0.1763-13.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/vim-minimal@8.0.1763-13.el8?arch=x86_64&epoch=2&upstream=vim-8.0.1763-13.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"vim-minimal\",\n    \"version\": \"8.0.1763\",\n    \"epoch\": 2,\n    \"architecture\": \"x86_64\",\n    \"release\": \"13.el8\",\n    \"sourceRpm\": \"vim-8.0.1763-13.el8.src.rpm\",\n    \"size\": 1420484,\n    \"license\": \"Vim and MIT\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/virc\",\n      \"mode\": 33188,\n      \"size\": 1204,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8a94ac63b055207d9fdac097cb4c590d9c5f8fd6d0b1ecdaed5e122ad1cb7d25\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/usr/bin/ex\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rvi\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/rview\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/vi\",\n      \"mode\": 33261,\n      \"size\": 1413696,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"956a8911e8eff7fae6871506f26763f26b27c9baa6beed4d1c0702fc613022ba\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/view\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/47/5d7ca18267be75ce9b002d0c3be9ba7065aeda\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e2874ecf00fb30e1\",\n   \"name\": \"xz\",\n   \"version\": \"5.2.4-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:xz:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz:xz:5.2.4-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/xz@5.2.4-3.el8?arch=x86_64&upstream=xz-5.2.4-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"xz\",\n    \"version\": \"5.2.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"xz-5.2.4-3.el8.src.rpm\",\n    \"size\": 432832,\n    \"license\": \"GPLv2+ and Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/profile.d/colorxzgrep.csh\",\n      \"mode\": 33188,\n      \"size\": 162,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"67e78cc79449a9eacb0be5bfe833f443508bc5602ce81af1847f20f0be1de25a\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/profile.d/colorxzgrep.sh\",\n      \"mode\": 33188,\n      \"size\": 183,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"0446ca350ab8205a36deeab4c39413a87ea8b61588fe8385658c1083aad8fa3f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/unxz\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xz\",\n      \"mode\": 33261,\n      \"size\": 91432,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dd57ef03bc26e855f8290cfca3febd57aa55afa43acdcf50eb9ddcd52a5696aa\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzcat\",\n      \"mode\": 41471,\n      \"size\": 2,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzcmp\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzdec\",\n      \"mode\": 33261,\n      \"size\": 18376,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"dae172b90afc082b8d5ea4dc69c771c4f46dc4b7c12f84decf67d378a276ad2c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzdiff\",\n      \"mode\": 33261,\n      \"size\": 6632,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"78de84e66db69fb76488031b9760567d27bea09cb6a411cb494d914cb96ea53e\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzegrep\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzfgrep\",\n      \"mode\": 41471,\n      \"size\": 6,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzgrep\",\n      \"mode\": 33261,\n      \"size\": 5628,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"fbb4431fbf461d43c8a8473d8afd461a3a64c5dc6d3a35dd0b15dca2253ec4e9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzless\",\n      \"mode\": 33261,\n      \"size\": 1802,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"88046aad2ff0b9507e746278ce5bd1222ccf80f9765a9629463f5119cc459c1f\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/xzmore\",\n      \"mode\": 33261,\n      \"size\": 2161,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"6ee498368573c3a6c56e45e76cd4374fa593ae3ec3526cf929ec553a3b7f8c55\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/0e/eb164ebc6f9615f9a7f93f605ea5a51ddaad0e\",\n      \"mode\": 41471,\n      \"size\": 22,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f1\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/f1/36921a5ce9893143c2041d9200079820a01603\",\n      \"mode\": 41471,\n      \"size\": 25,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/share/doc/xz\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/doc/xz/COPYING\",\n      \"mode\": 33188,\n      \"size\": 2775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcb02973ef6e87ea73d331b3a80df7748407f17efdb784b61b47e0e610d3bb5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dl\"\n     },\n     {\n      \"path\": \"/usr/share/doc/xz/COPYING.GPLv2\",\n      \"mode\": 33188,\n      \"size\": 18092,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dl\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"7a03ecee1d083309\",\n   \"name\": \"xz-libs\",\n   \"version\": \"5.2.4-3.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"Public Domain\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:xz-libs:xz-libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz-libs:xz_libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz_libs:xz-libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz_libs:xz_libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:xz-libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:centos:xz_libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz:xz-libs:5.2.4-3.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:xz:xz_libs:5.2.4-3.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/xz-libs@5.2.4-3.el8?arch=x86_64&upstream=xz-5.2.4-3.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"xz-libs\",\n    \"version\": \"5.2.4\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"3.el8\",\n    \"sourceRpm\": \"xz-5.2.4-3.el8.src.rpm\",\n    \"size\": 194799,\n    \"license\": \"Public Domain\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/4b/9ca720dd420f278183935c63e76f079b4e8295\",\n      \"mode\": 41471,\n      \"size\": 38,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblzma.so.5\",\n      \"mode\": 41471,\n      \"size\": 16,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/liblzma.so.5.2.4\",\n      \"mode\": 33261,\n      \"size\": 192024,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"068e64692eea45539d4f8c7cd65f103a3334efb3f50f41835c3c3ff1e4bd4bb9\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/doc/xz/COPYING\",\n      \"mode\": 33188,\n      \"size\": 2775,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"bcb02973ef6e87ea73d331b3a80df7748407f17efdb784b61b47e0e610d3bb5c\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"dl\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"85be9facf0b430fb\",\n   \"name\": \"yum\",\n   \"version\": \"4.2.17-6.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"GPLv2+ and GPLv2 and GPL\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:yum:4.2.17-6.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:yum:yum:4.2.17-6.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/yum@4.2.17-6.el8?arch=noarch&upstream=dnf-4.2.17-6.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"yum\",\n    \"version\": \"4.2.17\",\n    \"epoch\": null,\n    \"architecture\": \"noarch\",\n    \"release\": \"6.el8\",\n    \"sourceRpm\": \"dnf-4.2.17-6.el8.src.rpm\",\n    \"size\": 70881,\n    \"license\": \"GPLv2+ and GPLv2 and GPL\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/etc/dnf/protected.d/yum.conf\",\n      \"mode\": 33188,\n      \"size\": 4,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"633e249364390d0039a36eae62b88d487e4dc524fe0a5dd166d955ed77a92524\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"cn\"\n     },\n     {\n      \"path\": \"/etc/yum.conf\",\n      \"mode\": 41471,\n      \"size\": 12,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/yum/pluginconf.d\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/yum/protected.d\",\n      \"mode\": 41471,\n      \"size\": 18,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/etc/yum/vars\",\n      \"mode\": 41471,\n      \"size\": 11,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/bin/yum\",\n      \"mode\": 41471,\n      \"size\": 5,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     }\n    ]\n   }\n  },\n  {\n   \"id\": \"e5f297bcf5b58871\",\n   \"name\": \"zlib\",\n   \"version\": \"1.2.11-13.el8\",\n   \"type\": \"rpm\",\n   \"foundBy\": \"rpm-db-cataloger\",\n   \"locations\": [\n    {\n     \"path\": \"/var/lib/rpm/Packages\",\n     \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n    }\n   ],\n   \"licenses\": [\n    \"zlib and Boost\"\n   ],\n   \"language\": \"\",\n   \"cpes\": [\n    \"cpe:2.3:a:centos:zlib:1.2.11-13.el8:*:*:*:*:*:*:*\",\n    \"cpe:2.3:a:zlib:zlib:1.2.11-13.el8:*:*:*:*:*:*:*\"\n   ],\n   \"purl\": \"pkg:rpm/centos/zlib@1.2.11-13.el8?arch=x86_64&upstream=zlib-1.2.11-13.el8.src.rpm&distro=centos-8\",\n   \"metadataType\": \"RpmMetadata\",\n   \"metadata\": {\n    \"name\": \"zlib\",\n    \"version\": \"1.2.11\",\n    \"epoch\": null,\n    \"architecture\": \"x86_64\",\n    \"release\": \"13.el8\",\n    \"sourceRpm\": \"zlib-1.2.11-13.el8.src.rpm\",\n    \"size\": 195551,\n    \"license\": \"zlib and Boost\",\n    \"vendor\": \"CentOS\",\n    \"modularityLabel\": \"\",\n    \"files\": [\n     {\n      \"path\": \"/usr/lib/.build-id\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib/.build-id/5b/d3f8b44029f37d9d34bd6a38f595c397418387\",\n      \"mode\": 41471,\n      \"size\": 36,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"a\"\n     },\n     {\n      \"path\": \"/usr/lib64/libz.so.1\",\n      \"mode\": 41471,\n      \"size\": 14,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/lib64/libz.so.1.2.11\",\n      \"mode\": 33261,\n      \"size\": 95232,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"2dab0207903748522216f498036d9183b5a406f3568ef924f07ffe51c4368379\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/zlib\",\n      \"mode\": 16877,\n      \"size\": 0,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"\"\n     },\n     {\n      \"path\": \"/usr/share/licenses/zlib/README\",\n      \"mode\": 33188,\n      \"size\": 5187,\n      \"digest\": {\n       \"algorithm\": \"sha256\",\n       \"value\": \"7960b6b1cc63e619abb77acaea5427159605afee8c8b362664f4effc7d7f7d15\"\n      },\n      \"userName\": \"root\",\n      \"groupName\": \"root\",\n      \"flags\": \"l\"\n     }\n    ]\n   }\n  }\n ],\n \"artifactRelationships\": [\n  {\n   \"parent\": \"110d0d80da839ec5\",\n   \"child\": \"9d9d32e4250a7f0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"110d0d80da839ec5\",\n   \"child\": \"b2ba401f6b0a3a98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"1db3b12998748a74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"245b8401df9db66e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"2dfe6ee4130c89ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"3b6f3aad1dda6041\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"408875f347c3f7d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"5e16c8db7f98cfd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"6116a8f83c1207aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"61e2381a1ead00a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"6cb628c306200d4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"716d8b4df37c9f6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"76a677c60b358efe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"78f9053ab0be384f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"7bcba1e1a3873069\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"c65ac4c4f0c463d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"caa948f3cc3648d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"d5f226c136640d0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"d9b9ec9940447925\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"e20438c926ca1c91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"ec85fcb69e91db6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"f214aa52153066ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"116d6f07e7c59ee8\",\n   \"child\": \"fe6ba07beabb6f8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"122019bccafd39ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1359f1873723b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"13a7dc9b4a193649\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"14e9052dbfa7935f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"16fa8555665b23f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1719e8a346eef3f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"17749eda622f92a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"17fcc4497e0d1fcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"18420d314715dc9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"185ca8bbf9fcdf42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1bee8ad3db9fa033\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1c4741fd87e068c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1e8ebca9f20c5922\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1f695515a88a6cf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"1fca641dd3b7d333\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"206a055cc21bc6ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"21c1c0a16cb936b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"221c949544566e27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"231b1f40b54b4f74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"24d9a98904c55eea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"25a8496f048c56bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"260f1e2bdc32eb26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"26ab950bf1e04014\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"27168d5e10b7362\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2737a49b1c57de80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"282b4af0532ab135\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"284f516a516fd5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2ad89054061d31a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2b105beae4d62238\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2b1382d9c9f98e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2d0987304c956338\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2d459ea9e133c042\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2e9ae6f952a55f06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"2fc38f76455e43da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"305827df63a04c45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"312f9dbd64b77168\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"322d220b15eb5b4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3271b577bcfc6ec4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3a19ce47386848d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3a8d454c2ad7e440\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3a8e5b16b02098ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3aeeb36b7b79a2e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3c0bb1db555b24ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3ce199845ec531c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3d223acddeb12493\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3d42490ab3aa4bb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"3ef80ca0adfc4faf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"4056397586897acf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"410ab7cd1296d990\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"43998093969ac3ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"4436ce6f106d3a77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"45af2fc1d1100740\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"47cf643f9fb183b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"4868060a9e527ddb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"4a21481cc808ef16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"4ed9d1d849a723bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"507570cdc5306eb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"526628c9d8e8c954\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"53934dbd96f44549\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"544e02f3e8997dce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"548b03c0f4f6df46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"574f9f91bab709bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"59535f40d4639505\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5acea5a137c86856\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5b90fc366a3ee733\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5c3f77c5ec617b31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5c4bfdd809b4733f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5c72f98b4a30c2a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"5d3c1e54ee5045f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"601282eed7085083\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"60788055138b54fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"618281aa2b0ca108\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"62815b2eb0f4572f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"634ed61e78bca0d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"638deefb834ccaf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"64e620a0e32ae402\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"65bb23a8a8cee1bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"67f0c7730fc61135\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"68aee2a41f889482\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"68b1395a86c640a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"691c434585cd4ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6b1af3ac9bf106e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6cfaef4b3226a845\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6d13d3b30e6e9a6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6de9f2f46bbf000c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6e61d2d6adf8ebd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6ea0814f23bc67b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"6f14a57e8ee7a569\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"70b1352b6b79c9bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"71ad2bb4d79cee7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"748b424cc4c19262\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7526b1e3fbd6e88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"757cc5e68fbd5037\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"778dbbfab3594ba3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"778dff7b35a75fff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7b37dc69eeddbd9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7b6418d75f63bc57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7c17649d05d12f51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7de3c4063d54141a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"7ded26040903bcd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"82570af3112c0400\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"83b670108827bbd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"850245490262da6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"85134cc793188261\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"87eca2077402d45d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"88a499cb8b8a8d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"8c33f890fedee73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"8dc3cb4232d496d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"8dc4df33b8f47ec3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"8f0aa6092fbaa94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"92f56ccb85da92a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"949a1d77c8faa4c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"94e07acf584c6cea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"94f1c68026fbf02f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"95e1dd47bc9745bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"95e67b2bddbf8f66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"967d38dce20c0627\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"96af9c5a8fbc0509\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"96e543b726aaad98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9772fb198ae0b748\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9895ed105dd75bec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"999893f6d8d34adc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9add616ed73ef412\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9af603022cededec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9c3cb7b29edf7719\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9d30136aba39902c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9ed3d5dfcf790729\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9f10ca38cb558a14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"9f1bc8f1743c769c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a089650995d09e2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a176bb190cfcebd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a3299081737c7fe7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a378557dfab0bd17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a4d8c58d2ce8ab92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a522bdd09b67f8d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a5b19c983992d31e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a5f9d89da1de1cd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a5faa42b4d7bf8c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a748c862515aa56e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a8b6aabdf31b2e27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a8ddc4d8b0a847ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"a8f485be1e098b43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"aadc44c3a079e1e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ab92a233d56b86e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"adad4374e08976d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ae60c2120cdd9cb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"af4d859561257f54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"b0f6bb74a0536e20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"b4cadca3d32169d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"b5efb18fa511cc56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"b706d635015fc73e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"b7f21c08d83950a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"bb32a7428d984548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"bd2d46adcdc0c5f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c295e865a283082f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c2fc0e39fdc21d25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c359c4a07a687995\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c6b61b3100e7922c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c78d97724790c307\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c7af7b0b2633a466\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"c9cfb90788a3d8e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ccf4affbeaa0191f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"cec219a4abac5379\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"cf6cf37b8b870d90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"cff2f919d46cc543\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d138a1f6561baa09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d3fb126acbb785d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d4a71a1807cb5167\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d5096c13cba9c4d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d7c973a7db6237d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d8dbe87db58f3bc6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"d9bfe1283412e06a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"da5f951e280bed16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"dae7dc91c79d2327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"db3ca8505dc91c2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"dbba5ca0a00710aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"dd1a95e847cb852e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ddc52c78cb8e4309\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"dfd40e587120b3e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e0c4cf46846cffed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e1b0371f721230c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e1f815801c5a15d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e2512a2fb5bfd7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e36e5e1152043ea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e70cb4a62188110b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e8792d88e04935fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"e9786b96dfb07fa8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ea16bb5fb4661fa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ea325657cf210417\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ea6aee239c754641\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ecb95d8e78ff3fa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ef96165cbef4eb7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ef9a1ea6d6bdcedb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f063dc357b61a814\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f094f1457fbf0707\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f183fa66bf4fe007\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f344a252d94e793c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f379ced1246c370f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f394106bd706faf5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f5ae3fec1f03ece4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f7f6bd142d596e93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f8cfb4a831e90f4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"f9d19c81c13f7ca7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"fc77e922f1e2f4d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"fc7e5979cdbe374c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"fee65dfa4739dd7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"16f1eaaec669d562\",\n   \"child\": \"ff5155867a5e880b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"19df7e4ab8ab5d43\",\n   \"child\": \"dc7f54a0b43fdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"19df7e4ab8ab5d43\",\n   \"child\": \"dd0550255c87c789\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"261b4d75199a1efe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"3aae3598e6e67036\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"6155dd2817f00883\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"68b36f76915400bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"696cdf24b2e30e9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"72dfd40f4659d15a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"7fcbd9327f9d3df0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"a6b9d2258798352c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"b9e0b7877a0f3eaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1be3fc360a6eb4bd\",\n   \"child\": \"cb4fbc9120dff08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1d3d2d8869c51d89\",\n   \"child\": \"3ef68441e3b46e23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1d3d2d8869c51d89\",\n   \"child\": \"f6123d3b441054c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1e352b877b2781ed\",\n   \"child\": \"285d20cd29441b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1e352b877b2781ed\",\n   \"child\": \"f6b0e76f3ff05d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1f16d8ff12f78e6e\",\n   \"child\": \"12e424714e43771a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1f16d8ff12f78e6e\",\n   \"child\": \"1a53269dae971c6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1f16d8ff12f78e6e\",\n   \"child\": \"5cca525331bf4864\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1fd92754e977c1f6\",\n   \"child\": \"460332a0a15ce183\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1fd92754e977c1f6\",\n   \"child\": \"5c8a20de3e2c4132\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1fd92754e977c1f6\",\n   \"child\": \"8d34ca3a9bbc634b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1fd92754e977c1f6\",\n   \"child\": \"f97f234f38ac91bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"1fd92754e977c1f6\",\n   \"child\": \"fcdf711196e2745f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"38dbe7ebd06b9eb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"6c991137dc5e6927\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"6fb6a358c145595a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"b6ec9eddb08fb95a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"e10ff5d4b2f569ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"20ac9df751cb28d1\",\n   \"child\": \"f8b3a0ca4d41686d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22bdfc37b31674fa\",\n   \"child\": \"8fa20ee6bea32fef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22bdfc37b31674fa\",\n   \"child\": \"c09095e855a024f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22bdfc37b31674fa\",\n   \"child\": \"d2d8ae52fea52a3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22da8f80cbd81a82\",\n   \"child\": \"646385a0136da5ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22da8f80cbd81a82\",\n   \"child\": \"9eca3f6785b2d200\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"22da8f80cbd81a82\",\n   \"child\": \"dccea57b7808fc50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23e3fb52540ac145\",\n   \"child\": \"1bd56192f493ae2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23e3fb52540ac145\",\n   \"child\": \"410846bc87b4e0e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23e3fb52540ac145\",\n   \"child\": \"a44be6065e3f734e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23e3fb52540ac145\",\n   \"child\": \"eef9bc70db74a8b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23f17e3944edb86d\",\n   \"child\": \"66c2a843bf6c91d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"23f17e3944edb86d\",\n   \"child\": \"dd5312f72be3832b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"2b590d9b45831070\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"41524b7cf9ed8b9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"4c86c7778e792f81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"68504196ae36da50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"6ae4ffd63ea823c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"76951f8dded88103\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"25f789644f9bbbb3\",\n   \"child\": \"89b028d62a783d44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"265d6fac88d0a13f\",\n   \"child\": \"2ea8b6072bc7e6dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"265d6fac88d0a13f\",\n   \"child\": \"46ee2b3f6f6376ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"265d6fac88d0a13f\",\n   \"child\": \"48b7d28ec9326970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"265d6fac88d0a13f\",\n   \"child\": \"86a5515cdc7371e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"265d6fac88d0a13f\",\n   \"child\": \"8a9b7303625c74fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"299e512d3c540ec1\",\n   \"child\": \"35bec70da48b6a40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"299e512d3c540ec1\",\n   \"child\": \"63a99593f853da4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"299e512d3c540ec1\",\n   \"child\": \"d5ae411e957fd4e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2beba4d511076d60\",\n   \"child\": \"1c05abd12c170412\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2beba4d511076d60\",\n   \"child\": \"9b7d0ce7ed3b5059\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"1494e4bb3fb6ee17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"3a33ebb1c43f2d78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"45d3d597dd09e9c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"49ab64ebcb77e466\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"4d460bde8cd0f2bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"8462add368bfdc59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"a09c4a65df3fa903\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"bb66daa7aab110c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"d9acb2f255721c56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"2eb71ebe9badd672\",\n   \"child\": \"f2a45fe46bcf0960\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"17dfb071c5183ad6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"37caa2cf9735944c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"3b4575a42d19b076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"3c01875dc101fb4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"6d5dfffc36b08f7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"6ede8e89c9047bb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"717f3b720ffa4e62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"778981da446ef669\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"7d1734018abf89e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"88eea7fd52df692f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"90e869270b1def17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"9c5421ce47d52e04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"a0cd8c5281753599\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"a93a4ad0d2fd79eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"b8241348a8228338\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"c2d071b746e9507f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"ef2874da26dacdbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"f89e2f88fdce7237\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"fb5cf4ac88f0797d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"305a90fe65807517\",\n   \"child\": \"fc1a97a8638ea516\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"30666ebedd03891\",\n   \"child\": \"3ba455e67e863df0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"30666ebedd03891\",\n   \"child\": \"530e6440837e4330\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"30666ebedd03891\",\n   \"child\": \"bbe787e5e980c15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"30666ebedd03891\",\n   \"child\": \"fe5846510a7f1e28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"1525a9b0fbe67880\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"16895b916e2bf8eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"1cbb1d636d93ba0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"3117cdd00fd22b3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"3d88ecd67ad88e26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"4922f06e13aa7af1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"75478a0bd1eef4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"33486dd08ba21e50\",\n   \"child\": \"75f44866805677d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"34907679528d4c6e\",\n   \"child\": \"21bdb54062e085db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"34907679528d4c6e\",\n   \"child\": \"4f587299e168fe53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"34907679528d4c6e\",\n   \"child\": \"bdadc0eb25966a0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"34907679528d4c6e\",\n   \"child\": \"fcb96bea5c33fc48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"106fd97321ca9057\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"1362874961d78f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"14b2d5ceb0113483\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"15f5a779fc7605aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"18de3ed27e7d6112\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"2047c69529ea4e89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"254ca1e54ca76f07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"26234bb18831b9ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"295c722e937c6e00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"2ae1591d4eb086c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"2be9ff1f4be3b8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"2cbd2f7b8f1644fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"30f60e5f11d1e2e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"3c2396dce0bd5cd4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"3da89a342c30cabf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"442883e7dc0998b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"458bdead4ce2ead3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"470e74d63828d719\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"4e3ead344c6ae0f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"50751389203c6e77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"541e8db880b943a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"571032c250d8d747\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"58c2e141eab6fc68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"597945399b89b7ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"59c7f9d24783da1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"5b95057548777cdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"5e7c3ca27eff5bf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"5f092586abc8a56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"6113fa80c7225070\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"6553fdb3229e3b48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"686462f2259ad5a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"68940e2d7383723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"6924eab3aa125e90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"69464a5b747e3b74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"6b09ed235bd667bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"6df3601c781256e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"70d5a916e16317b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"71dbc992232a6860\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"72d01db6cfc05415\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"736a93c79f0af7ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"736eeac8a9e54b62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"74785317f2d8705d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"7962d9622bbe0d38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"7bb17c0eaecd08ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"7eabbff4d66d3094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"7fc1f683a3457391\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"81af0f356941ea3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"83ed6428477073ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"84126c7f8a022ea7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"84e9fd1cdb33e9ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"860f3fa0971226db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"8a22bcf59ee4ed15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"8b7e3c9aa56bbbc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"8e6a6265141eaac7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"924fbb4b786837a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"9957c1debb2aabb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a2229c09b18a7881\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a25943a79919171a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a295745aa90c847c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a2bf1060ea1efd46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a4cc1064dd61509c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a4decfc411c52707\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a72cfe38e112a3c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a8c5c08ee266a8ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"a8dc5c91343838e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"aa67d3bb99d41854\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"ac6404bc759da507\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"acf2d00e297ef12a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"b2b792b9519210f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"b517801be4289c35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"b93d1b4bad218f91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"c328bef537093947\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"c3971b65129ac1e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"c670bc1ba6e28296\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"c6856aa509375a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"ca3dbd7a99ce9aac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"cce3c5fa6e300bae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"cff0e3dc123348d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d13c238c38c83ccd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d1fecc2927be6c1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d26183da2f3d9fe8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d30ca8ab9fe93af1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d337c5b78f4e8e96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d387f953e9552157\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d3a2f836d7f0e343\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"d97ccc556a33f1f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"dc685765d3e7f251\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"dce4d3283d72c8b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"dd2b25a423845a5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"ddd465ed907b7cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"deaa3f4f2a18452a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"e2215d5807e8f156\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"e36f2bc5b83b95e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"e45164a37174d20b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"e707686548262205\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"e8ac0b3728972af3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"eaaa4e2273b81a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"eaee87678edb9c63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"eb901c9a0786d486\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"eddc9203ecab92f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"eeb1c92b92eeec9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"f0ea0fda3245b438\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"f65f175dd4b827cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"f841a9c933916e31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"f91096a588ba7fb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"fb0cd10a2c20a0f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"35744f2806ba29bd\",\n   \"child\": \"fef06f2d214e488\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"3893bfb8b5dc605d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"3cc03118eec406f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"5598e8b5a08c3922\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"6bdc0c887ba0d5e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"84d5e467ecfd2a2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"8ac1493f02e98f42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"8d478ba6192f99c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"368cfe3ef7271d74\",\n   \"child\": \"ebf56f4da6a8535d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"380e652b3928ea69\",\n   \"child\": \"648440b995d2a4e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"380e652b3928ea69\",\n   \"child\": \"c9dc12bad15719cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"399b2b8bcbf8801f\",\n   \"child\": \"10376014342dfff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"399b2b8bcbf8801f\",\n   \"child\": \"17d29a16926145c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"399b2b8bcbf8801f\",\n   \"child\": \"96c03903f1ac9af5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"399b2b8bcbf8801f\",\n   \"child\": \"ac8c000852bdd076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"399b2b8bcbf8801f\",\n   \"child\": \"df8905d2c8ab9976\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3b2b638cd4eabe55\",\n   \"child\": \"1a9c3cb793a489b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3b2b638cd4eabe55\",\n   \"child\": \"bcefbbc64dba27e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3b3e8e5ab3fe86ea\",\n   \"child\": \"4320cf92554216c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3b3e8e5ab3fe86ea\",\n   \"child\": \"515c36093a5d2ff4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3b3e8e5ab3fe86ea\",\n   \"child\": \"a16b10770ee6135c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3f1c05a319c3fd40\",\n   \"child\": \"43231e669d8bd777\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3f1c05a319c3fd40\",\n   \"child\": \"5a6f5c42d4faf1a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3f1c05a319c3fd40\",\n   \"child\": \"5bd530208fece114\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3f1c05a319c3fd40\",\n   \"child\": \"7b9cdb5f2a1ab664\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"3f1c05a319c3fd40\",\n   \"child\": \"e30a798cd585bb89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4422a1995f6b1a83\",\n   \"child\": \"2cd5b19e2a24b550\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4422a1995f6b1a83\",\n   \"child\": \"39284c6278f0c117\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"44555c5bb03ff35d\",\n   \"child\": \"2e87be9845f0a059\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"44555c5bb03ff35d\",\n   \"child\": \"cde3879d593441ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4622e945c8cd6ec7\",\n   \"child\": \"5a42e858064aa3c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4666900e0e7a70\",\n   \"child\": \"892e03575a711c90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4666900e0e7a70\",\n   \"child\": \"99bdaccbca00a357\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"106f2e0910f226ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"1222dd2c71818c0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"126340e3fb0869bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"1339692d42cee296\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"167016275e6b1fc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"16e0e265bffe08f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"16e40f238e7cdbf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"18f5c89553667093\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"19805c1ca55f7407\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"19c24dab38c86406\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"1a28455cf92661da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"1ae5cae1887e3980\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"22ad09e7a3dfa63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"23300889d6b0c9cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"24f98f4ee6c3fa59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"2693cab42013e1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"2786ac3772281852\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"27c3ace8258467b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"27ca62356400910a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"29584b0743f7bc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"299dc0d4eaaeedb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"2a98b440d4b0271f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"2dca6db3ca670237\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"2f355a8b7296fbe9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3015528f38dabb2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"30baf4029193994c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3279bc24052e7013\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"331ffc46a6a51fe3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3404e7a95f61813\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3745c4468589fa17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3ad59b09da47dbd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3b8a546aad358d26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"3da474226d1c551d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"4144f75e8dcf702\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"42ba14c8a8ac1f2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"43449e6540b2947f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"470ec5773c9f840e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"4749963858c86f12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"48292d0e5d3623fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"48ad4a7d0c233502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"4bf5f360ab8a6fdd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"4e7a9bca91b8f1aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5083eb26ad265019\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"51dad9555a92f983\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5238215f2e2b4fb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"552f9be25d9f436a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"572737ac4e8bd419\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5778c3a1de19009a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5841cdb2d6b692c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"59846523bed6e4b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5a3e6f01e3ef0468\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5e1acccb0a10dcaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5f0814336aa314a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"5fb9c91b7cbb0517\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6229d3160441329\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"62ecdaf3b9b49193\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"65c2d29725f513d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6a2c7f04048aeb47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6a2e45d3ee2a8a2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6ad054607abd4866\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6af7cd3de8aa9e06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6e89093b7f895773\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"6ed75f621f5694a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"710fd3ee41374542\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"71fdc26d74e47dd4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"725e9f1b0a9a6fd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"733203c9e00a4ead\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"74a39affb52f12f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"7502c3af1c4005f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"760b12d1edf5c27a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"76d38d66861147aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"7b205aca030c0fa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"7b42b65d0774d995\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"805c8daafa6c812\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"824050574e19c076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"838dba3f7a2f026c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"849591930d6dab45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"84b0d908053e6423\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8582d51bfe3e840a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"86c5b56f123d8f50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"88b949b74fa219b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8ae30b299b2dde58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8c6800d23a486637\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8df23672a2baf130\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8eab54dc8c2d2f62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"8eda6d2fbacfa059\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"90a23be2a06e37dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"9440362002b7e48c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"973fbf55e4e933ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"97839ff12a1ca450\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"9933b247da7443e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"99bba1d5e33d22a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"99bdbacd4a688564\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"9d07990dc040ac55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"9ef98569f68dd569\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"9f61f5e49cd82582\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"a529218aa5457af5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"a6e252c83a7ff1c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"a9c922fdc723db8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ac7cf93ff6792aad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ad02a85e70c56b62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"adc16aca51e5a6f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ae643ef63d70cc10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"afc17b50e0276a85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b03d822b5b51199a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b04f59ecd2b6cc3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b0b694f865652eb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b291b2ce47910ec0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b2e97b8da67b13a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b450005096af9103\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b516a8c3af03fafd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"b8af0745534ce3b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"bb048b4b158e3bbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"bb4581ab40bd7ead\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"bbb8f0c33ef4931e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"bc5a2f8b4b71c6be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"c979dc7c237477b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"cf2c00768475d02e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d00dafaca7e34950\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d15a7c8d9f6aa768\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d3d8301d97a590d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d52cce9ae9dee700\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d7e3fcf81dc78ab6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"d8e5cf61ea12658c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"de7d0e94a3909b0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"dfc14fd342847806\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"e2caa17ef055527d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"e3bef0dc992c6999\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"e45ca1c567102244\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"e66ff5024ad44cc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"e9abee347cb72520\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ea69f39cff564151\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"eabd73674e17bd17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ef9978fb8a835205\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"f235c47e08a268bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"f96e668b081df4bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"fd268ecfc1d7f61d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"fe784ff1e58c3bcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4723cce52f83d65d\",\n   \"child\": \"ff2aa9c35f11c144\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"47867b99ddcec789\",\n   \"child\": \"5f213b3e277c470f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"47867b99ddcec789\",\n   \"child\": \"c2098e90a274301\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"48d25aed400e188e\",\n   \"child\": \"339784b26545bc28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"48d25aed400e188e\",\n   \"child\": \"a24d076a4a136e5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"48d25aed400e188e\",\n   \"child\": \"bcffa1c6671df3ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"48d25aed400e188e\",\n   \"child\": \"bdca2bb070501a32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"48d25aed400e188e\",\n   \"child\": \"cf0e9387377acf07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"491bb79162755b6e\",\n   \"child\": \"53981bcf37987a58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"491bb79162755b6e\",\n   \"child\": \"595f3d8f7ed4b98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"491bb79162755b6e\",\n   \"child\": \"6fb8d8fec8ec5a1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"491bb79162755b6e\",\n   \"child\": \"a1a67cbced0bac2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"491bb79162755b6e\",\n   \"child\": \"bbfc7d9ae9c958c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"498dde248a7e0c5c\",\n   \"child\": \"10297504841825cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"498dde248a7e0c5c\",\n   \"child\": \"9583e152e114dfa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"498dde248a7e0c5c\",\n   \"child\": \"9e112056c6858f58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"498dde248a7e0c5c\",\n   \"child\": \"b6cac1ddf34adeee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"23cb103eaad84845\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"3dff506a10e85835\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"412f3984a93ab109\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"42bef7793ab130db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"53fdebf63133c12f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"5dec77e72783adf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"64ddb913bc6701a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"6e5c957e4d6a5bd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"6f91e9616af8baf8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"7609eeda1dd3f7d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"77ab028e4f9f2623\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"79107eef756c370a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"8165c0405ee1baf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"838674032f13f6e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"903d705373d91d40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"907b36265bb4a3c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"96e8b91ebd218dca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"98adc61a500fe6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"a6375275de9ca6f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"b68902453f9bbd5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"d264dafccbe1298a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"d7166958036d992a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"d9904177bfa8480\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"da65a1f5f00a94b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"e3cffb9be2af97d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"f384123a57ffd498\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4d18ea9c6238a27d\",\n   \"child\": \"f8e2249307856597\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4e3b76a30d0d937e\",\n   \"child\": \"35171b039f521a1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4e3b76a30d0d937e\",\n   \"child\": \"b88ef4d995e9c040\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4e3b76a30d0d937e\",\n   \"child\": \"baaeafae86a0cd96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4e3b76a30d0d937e\",\n   \"child\": \"cebbfdff8b22206c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4fd866a0a8d63b4d\",\n   \"child\": \"1048aeea3018417d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4fd866a0a8d63b4d\",\n   \"child\": \"162f8061a0b419db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"4fd866a0a8d63b4d\",\n   \"child\": \"875b02c5994e4627\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"46f2f239bc9df7bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"626e8e97e0a13c27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"652dc692798db75d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"845de80a5761c0c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"851fdab1699a1af5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"510d2fb6930df4c2\",\n   \"child\": \"aea3ae08b5115229\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"514388360f93718e\",\n   \"child\": \"264e7c5eed7ee1b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"514388360f93718e\",\n   \"child\": \"eebead59ea14619e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"514388360f93718e\",\n   \"child\": \"fde7813bbc6ba798\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"24f05ec51957bb79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"53f4b784be4dd4d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"c12da1fec2e07733\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"ec1196ac6b3d1d8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"f472dd603c73c747\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5143bda40cafcc00\",\n   \"child\": \"f77e955152f3d1b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"517a0614330f9a54\",\n   \"child\": \"594af0fcaba60b17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"517a0614330f9a54\",\n   \"child\": \"ec4720c1f0992106\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"526179e39b2a5e74\",\n   \"child\": \"7856e689c100c172\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"526179e39b2a5e74\",\n   \"child\": \"bb634f40b7009e84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"526179e39b2a5e74\",\n   \"child\": \"c84e1e7809da3b24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"526179e39b2a5e74\",\n   \"child\": \"f79667aa8e1309ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5328c8675c72b5d0\",\n   \"child\": \"1b8002d83424d970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5328c8675c72b5d0\",\n   \"child\": \"4294daf108c94a82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5328c8675c72b5d0\",\n   \"child\": \"77a5383bfdebc38d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5328c8675c72b5d0\",\n   \"child\": \"87ef850359f856ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5328c8675c72b5d0\",\n   \"child\": \"d47fed1d0f1e8e94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"12f4e1254a79b9e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"156a0e587e87c7f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1744140e3fdf04a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"17b6320996ca917b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1a8a621ff929d1c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1ae975e6bc9ce8ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1aeeb53ad2d24798\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1b6e1a6da64623d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1cb2040cbd828f75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1d90a9d4c7b8ee50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"1f69ed83037c2d1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"2066739eb1b44d2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"20ee778e713fae57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"21f4154cebe71f44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"255b3b02a034a1c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"266d3b5c6b74bc74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"294de5952cc6ea7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"29b0f6a50649a7b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"2c37fa6674961051\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"2c50587c345cb07e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3114dabd4e747b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3638d22f1bd2e69f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3c25feee2e6669df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3dac90fe0f0cb5c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3e126f2d1a5d277\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"3f9000ad389ae8da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"42061c2316356d74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"420d3e89132f18a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"423a99b3c1da161c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"47a5cb49ff97e749\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"47e08191e217331c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"48406dabc4332fae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4893a4dac93895aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"48ec4a15ace5dddf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"495701e514255965\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4a819077e4955365\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4ab6484220071cec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4ac2bffa453d7bf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4b3331a4e7ed4647\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4c92ef15dda90988\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4cbf8459fd0a25b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"4d62154edf917576\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"513acd6ae4b37468\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5168d2ea6e2a6cb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"52b5b0abeff8aa67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5303a451282e3104\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"55730ee0b391532c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"55a4b8ee06c58b91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5692f96848f87039\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"57c6408d7c48e96e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"58052824ffb8b70b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"588f9bfc2683c047\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"58bc6ec21cebce7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5c60fd921a1df5a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5e3c8135cfb51eab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"5fc15781b275a7ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"676f7cce87a3e341\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"67d08afc701136bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"681c02b01c7146ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6acf771ab9826b13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6ba5c0c63d72fa58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6c4cbfb8aac26e0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6cf3df530294b7c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6dfe5bb7e5f7edac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"6f1766ba6d84d454\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"71b9a04f6b58f01e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"730e2be32c2e46fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"738e5865283a7041\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"750be3820d6b7eef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"7aa48f1ba7dc62d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"7ad9a1be1f2c76e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"7dc81d1ff1c13b68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"7e990f2b9f30335a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"80f47c5c8d0d511e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"832320814aceee86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"833900f7a28f330\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"85d8fa4a4b8f1a77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"8751223f9ff9598d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"87bace844700e099\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"886f7f821f24b4fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9045e44223bd378c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"925e39c3f5d2e046\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"94943eeed3227d1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"95aa226804991628\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9766c53c26b6e05b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9768717aaf145bca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"980bcd065e2837a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"986c9687b83cd89b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9a19d89813c9326a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9b03bd34e19d132e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9b092f16556bb007\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9ce5d510139efa6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9eb1e57b6309825\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"9fe14ea604c510d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a0586959252603fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a3b3672eb7e1cdee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a60bef9da90b5aeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a6dd2e680574c078\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a7ea3b50cee62ab9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a86e8df31c34080e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"a8982b99810ef6f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ac6acfc3a3898fe9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ac8308ecae210ab7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"acfb7bb0c6babe11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ae017ea13fc7c90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ae7ac710b659662f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"b15d8737ff257ef4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"b30369b55b26991d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"b5e61b02de677742\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"bb28ee4d14288b7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"bbf1db0cd66347a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"bc4ad6b9a537baae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"bd0eda24ad4e61d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"be0864572222cbc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"c00fa34330f918a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"c71e38dfa57e4cf5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"cad9b201de1c88eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ceec933dd7219347\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d008d5e9b4e20033\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d013b44c3b00dffe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d08e2efd1aed822e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d2e122f03edf7896\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d521621614dea8c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d68cdd9f085441fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d7db65649507720a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d9c8cda9e3a5987e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d9e991f910066b87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"d9eeff618c9bb393\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"da4c3c1443ece11c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"dc1a1dde4d328fb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"dcf5b99beb1f248\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ddc981309a9d4c2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"dec142cfbd3a2461\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"dec62820fb64930d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"df28a6423b152196\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e00f8625ed61b982\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e09ff0247f99f168\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e12dca281aedc039\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e2b4060d52c70ef9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e318e8cf94597565\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e3f74b19927334c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e51d28db2197d5c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e7e1ceab53a2fbb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"e95af542cad60862\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"eb1962bed87fa96e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"eb278a7e6c253a89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"eb5f39f7e0608bb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ebd0d9bbaa060bfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ecdd1e547dbfe656\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"ee46813aef1227ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f315cd264a168193\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f3670d3a54ea5e62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f3ffbb9292b3c81a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f46695f9f5baf2f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f4f496506a96935d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"f8e75d2d752608d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"fa048051bc15d0e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"fc9766ddcdab500\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"53608e2940cd6e4a\",\n   \"child\": \"fdc7f6a0a237e0bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"2a5ba996a1968080\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"2aa14678920f9211\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"3159f1790db06632\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"37cfbb5fecd2faf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"4606cf8cd94cc8e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"5c74a0e1bfc30bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"654c4c3a7574b9dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"6d2001ee4da132c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"6ed14cde79bca29a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"6f0193af6f22f643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"9a69e748e3e8b545\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"ae1c4c3ebbf4b16b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"c5444e491cd14c7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"e20ef02a6b321e8d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"e7f0a15e12405a30\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"542f73bc459a0953\",\n   \"child\": \"eccbd7a76170507c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"2c4086e67eb2b78e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"3c34bf409977ac9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"73320cb11201272e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"7e177cc1b95579ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"b361038296a4b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"ceb16c73e1170476\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"556d5c20f7424ec0\",\n   \"child\": \"da75925ea580455\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"26bcbbde756d8ce5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"3a3f892e84a10bf8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"67e7b298b50a76ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"7311e081b60f3245\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"ecf5c0372abf16c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5670d9e9fd72b39\",\n   \"child\": \"f5b95e236e981ca6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"4eb7dd890526bbe4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"59130640a73cf852\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"790a6782c218bd7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"9107f442db283148\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"aacac6ed046bb7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"d7addb9fdf37ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"56ac74fe4a61a47\",\n   \"child\": \"f3f92588c1f6bd76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"57e7b8e710c99b4d\",\n   \"child\": \"510de2d876edfc48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"57e7b8e710c99b4d\",\n   \"child\": \"61ca9c1903fb2fdd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"57e7b8e710c99b4d\",\n   \"child\": \"7a589551f7e26dd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5a4c1113f58b3872\",\n   \"child\": \"8fd4176aaa221f4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5a4c1113f58b3872\",\n   \"child\": \"d1dd9fc859555ea0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5ba70521f69c9a5\",\n   \"child\": \"20382eab22acc5a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5ba70521f69c9a5\",\n   \"child\": \"26b252b3bf3155b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5ba70521f69c9a5\",\n   \"child\": \"6b458e8d9ed7cb58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5f3bbbf8821ee884\",\n   \"child\": \"1a33882b65f600f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5f3bbbf8821ee884\",\n   \"child\": \"40c6c45329ba2be4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5f3bbbf8821ee884\",\n   \"child\": \"82d6313935dbbb51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"5f3bbbf8821ee884\",\n   \"child\": \"e24df926477d3992\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61795472c4137d27\",\n   \"child\": \"6c8adce26db5dab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61795472c4137d27\",\n   \"child\": \"a126eee445b1bf6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61795472c4137d27\",\n   \"child\": \"bbae41d54fe0907b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61795472c4137d27\",\n   \"child\": \"f2ef99f1583908e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"110d0d80da839ec5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"116d6f07e7c59ee8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"16f1eaaec669d562\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"17d7439b8a1536ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"19df7e4ab8ab5d43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"1be3fc360a6eb4bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"1d3d2d8869c51d89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"1e352b877b2781ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"1f16d8ff12f78e6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"1fd92754e977c1f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"20ac9df751cb28d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"22bdfc37b31674fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"22da8f80cbd81a82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"23e3fb52540ac145\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"23f17e3944edb86d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"25f789644f9bbbb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"265d6fac88d0a13f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"299e512d3c540ec1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"2beba4d511076d60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"2eb71ebe9badd672\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"305a90fe65807517\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"30666ebedd03891\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"30984270262e8039\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"33486dd08ba21e50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"34907679528d4c6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"35744f2806ba29bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"368cfe3ef7271d74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"380e652b3928ea69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"399b2b8bcbf8801f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"3b2b638cd4eabe55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"3b3e8e5ab3fe86ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"3f1c05a319c3fd40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4422a1995f6b1a83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"44555c5bb03ff35d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4622e945c8cd6ec7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4666900e0e7a70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4723cce52f83d65d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"47867b99ddcec789\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"48d25aed400e188e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"491bb79162755b6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"498dde248a7e0c5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4d18ea9c6238a27d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4e3b76a30d0d937e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"4fd866a0a8d63b4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"510d2fb6930df4c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"514388360f93718e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5143bda40cafcc00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"517a0614330f9a54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"526179e39b2a5e74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5328c8675c72b5d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"53608e2940cd6e4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"542f73bc459a0953\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"556d5c20f7424ec0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5670d9e9fd72b39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"56ac74fe4a61a47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"57e7b8e710c99b4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5a4c1113f58b3872\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5b915c430ffb5a6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5ba70521f69c9a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"5f3bbbf8821ee884\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"61795472c4137d27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"67eeb5b61cc0b90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6acccd7ebb003d23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6b14e6dec9e0d21b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6d72956b00715295\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6dc1fd16c576606f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6e8c38c400cd51e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"6efe7292fa8ea27f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7062403a68e8f439\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"70ba80fadc8764d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"70dae30f914234d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"76450a35f1687991\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"76cc1e9da16dcab0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7997e72170e0ced2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"79da1c68160ab938\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7a03ecee1d083309\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7a328173d058b74b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7a386d92c9b65f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7c2fc9602306a137\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7cece6ddd79c2e21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7d28eafc074b353b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"7f89770583b87979\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"81d7e3912e74e49d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"82ec7b5c40d97cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"82ee67fc7d05a4ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"84ba612554f61802\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"84f2159fee251e20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"854868f1b8026ba6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"85be9facf0b430fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"85e8770df6b3b8d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"867fd12364352fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"875f4d287d1bdcfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"87e17a6af98afa3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"88142df2b55b9852\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"89d0c665273f84a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"8a67f9d1e4d2bae3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"8b85212718289c1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"8e1a274136987459\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"8e6613ba95209c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"8ecf929ac28a117b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9071aeaf00db2b61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"91c1c703bb8f0a46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"95343d33e2775f25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"98447e47e1b08420\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9944ba1dcad20624\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"995a4ebf111527a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"996ff886468003b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9c5e9efa96630b8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9c6f8eb3cdf7829d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9caacc40c169689b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9cc65cf602e326fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9dd17366558ef500\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"9f2b519754ba783a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"a67f791f08fa8ff3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"a6c75679d548e381\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"a81087f999058d2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"a991fe1bacfe0f32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ad388572f948c5d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b0a031a0f531392\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b3512f6c9958e10f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b36cc5de0960501e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b4acf4d4e2b8bd86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b66e79716fe80c12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"b7ce35345616e99a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ba95646261b30775\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"badeeeb401ac7325\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"c08a0c7306f5ebc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"c0e9a743b6db4487\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"c313d9f902c01133\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"c3c41bc1427a7dd6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"c68333b0819fd540\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ca09216a5501c547\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ca16971f269393a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ccc1c24847ff05b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"cdd6a5d960cec05f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"cfbf71846d786720\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d1ade83f05db44ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d1b10ee7e459842c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d23e4f6a05455a78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d461e64362d25059\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d6b2892959b5c1e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d749bcbda7ecc0a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d773cf3bc374761e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d840273e522f2358\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"d96caf89f9a4dff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"da6b7c5170a41669\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"dba6d46666d99d8d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"de12e2493a6eb51b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"de8469fece675af1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"df5081279bec5cd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e0b8ac42a0bf3539\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e1d32f20bd8fec9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e2874ecf00fb30e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e57db3737a1d260f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e5b7546dee92a54e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e5cec4047e70adda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e5f297bcf5b58871\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e6342710c8f2a2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e7be61dfbc86a063\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"e83fa6ed4af77643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ea8fa5c9e4a596e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ebe7da0e8f5a9264\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ef47147310c2551c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"ef6f5aaa5feb0555\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f040a5bbc45dfa12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f1b2d7837125d760\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f1db3f69263d084f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f476eba120c0643b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f57aa349cb508f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f5c3f27f97f25bee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f82519ffc7024e92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f86172b3b79178e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f8a3b10a582c263d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"f98efe991061ccb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"fb32fd538ed63493\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"child\": \"fbff831d08897176\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"67eeb5b61cc0b90\",\n   \"child\": \"546e68a362fb27d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"67eeb5b61cc0b90\",\n   \"child\": \"ac28621f1b03f663\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6acccd7ebb003d23\",\n   \"child\": \"212f237d54b01b03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6acccd7ebb003d23\",\n   \"child\": \"c08c800c04f3908\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"133a884086e55770\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"15657915181be3ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"1a813a45d016e60b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"1c8e84b65f7483ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"1ebafb496d8b99b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"22f99ea7324d8cc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"268a0cb194b7e6bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"2707921219956776\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"2b9bbf335a97d411\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"2e07dfc2d797f0f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"36b982f87fcf34ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"3ffd92189509d138\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"4316526945fa663c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"49ba612897bf40d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"4bf408cf82f6ea1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"4d570a6d5fa13e13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"4ed261e22789c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"4ef18bdb200dfb6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"55a0baf9bda4a39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"5c67b2a70e8078cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"5dcc5428126ec357\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"5fbbda95308cecb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"60e575fe512abd3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"67383b0585aef2a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"67888c43b6aa2e8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"67a997f0705cd06a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"69c93bdaab4b914a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"7063d58880963db2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"707837e85ea92a6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"732e0396052f8ec3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"765a5da52ce22bec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"769790359f90a6ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"793ba63168899b7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"85ba6eb1645372c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"87d92ebca63bd582\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"891fdfdc807acf69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"93fd14c54bec0fec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"95217a1e3d602052\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"999df6f37d06c4c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"abf28e201bdcdd40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"ae55d668e906b5a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"b5a927c09c9b8ff9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"bb7656a423c24aa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"c5e19ef5c9f22329\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"cc08d3129da4d84f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"d6919fe4971a5b81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"dc6a113a0ad294d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"dd44e0f6138dd5ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"e71d457e72dbb080\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"ea7e6bb21558716f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"eb02dea0e1333cd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"eb12cf4cf7e936ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"f2885e33cc77a50e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"f411c737fe0c335f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"fabee1757a4c3e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"fca04fb98ba1fd1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"ff50764ef43e2d9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6b14e6dec9e0d21b\",\n   \"child\": \"ff98265ef11c0254\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"363661d2134c7323\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"4eefa13589197ddf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"61ac9a33b0541c63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"6571e308cda3fdc6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"7b2dab201526d841\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6d72956b00715295\",\n   \"child\": \"9da7e023002f2b98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6dc1fd16c576606f\",\n   \"child\": \"418605741fe54ae8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6dc1fd16c576606f\",\n   \"child\": \"a036100ae7858322\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"4073ad90c2f9bdae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"6bd919924cf942e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"6c8c0103b6b3ea53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"9cc36c5680941939\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"df62150021ed8824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"6e8c38c400cd51e3\",\n   \"child\": \"f112c7ff2aa9dcec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"4167788fa655ca1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"4a18ab3e3b80de20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"c0438d02d5a237a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"d12641715c60c0e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"d4acdf6315ea4ebc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7062403a68e8f439\",\n   \"child\": \"df125b8b9958acc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70ba80fadc8764d9\",\n   \"child\": \"225fdc0f9bb02e21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70ba80fadc8764d9\",\n   \"child\": \"2ecf2728671a17f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70ba80fadc8764d9\",\n   \"child\": \"b2be0e52506619d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70dae30f914234d6\",\n   \"child\": \"1b51c8b8323d3b5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70dae30f914234d6\",\n   \"child\": \"5b9be5900684ef4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70dae30f914234d6\",\n   \"child\": \"d75f8ac5bd14c89d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"70dae30f914234d6\",\n   \"child\": \"db394ab6b5b821ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76450a35f1687991\",\n   \"child\": \"22f90217f35ea901\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76450a35f1687991\",\n   \"child\": \"9b1b425d15fad0f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76450a35f1687991\",\n   \"child\": \"e5f3787b05cd70b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"124fa8b34d452e0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"153159ced8db8471\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"1e070a58463f21e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"21086c76827b9a4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"25800df3f7d5702a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"2c011a8c2d1e917d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"2f75e61ee09158ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"346f70d98116100b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"354d874407f6f6f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"372555dccc1dad06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"386fab980f8a401b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"3a5f1be8134c7d0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"42050034ba1f4f2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"45643b5b435dde0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"53783bf5cd320ee7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"60bd10b568a05945\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"61e9a2f345bfef0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"6289dc8f434f23d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"63cdc89fd8f0d88b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"6b03c688f4d2d7e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"6c70e079ea152a9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"6f89abfab129d668\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"700a3fd41f3c2dc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"761f8ece42fc0c6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"772bf522feb66d26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"79fbefe27f2cc2dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"80251d78513d688c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"82ed18cbb66ff3b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"86be63a721e3486a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"891d08d4d5e720cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"8c7e6c9e679393e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"8df45e1bfacd7a27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"8ed7dd2b76327da7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"9d6572492ad68e75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"9d7584cec35246cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"a2044d677f8e48f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"a5345b96679e81b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"ab5c7dc52d5e9f88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"b1ffc483031e0120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"b82e3550b623b6af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"bb42e8e14ca00135\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"c4f87b036a5c44a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"c51a8ea77b2e7d66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"c52e4f2e14ab1961\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"c96ad7e90cba6b6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"dae9e4ee47809fae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"dc3a38032284d825\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"ddbd37d406a226f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"ea1e1eb4265b991c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"ecb2616573e68d80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"f81ce63df537819f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"76cc1e9da16dcab0\",\n   \"child\": \"fd522751231f0e4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7997e72170e0ced2\",\n   \"child\": \"83d9c9e6676e622f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"1e9c06de5aa20cb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"3f5c103f19727ab3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"496c50907421e72f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"53bd16023e7b941d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"63f6009e9c03c036\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"ab7b2b4e1f001a69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"e3e2c4370ee6b689\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"79da1c68160ab938\",\n   \"child\": \"eebdb80be4bd39f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a03ecee1d083309\",\n   \"child\": \"8d6e3c9a80f8e2a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a03ecee1d083309\",\n   \"child\": \"fb4dc8137faec4ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a328173d058b74b\",\n   \"child\": \"2ea80fe891f28982\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a328173d058b74b\",\n   \"child\": \"3f63c4b0263bb23e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a328173d058b74b\",\n   \"child\": \"b8eb86257f36bb4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"435eff1466b945ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"aaddd641faab6d75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"c2db3019258a540b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"c5ea9c5eac52e1ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"c82db25ed14969e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7a386d92c9b65f5c\",\n   \"child\": \"d830de1be518713c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7c2fc9602306a137\",\n   \"child\": \"2e456a109ac073fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7c2fc9602306a137\",\n   \"child\": \"31c5623e9cb7d29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7cece6ddd79c2e21\",\n   \"child\": \"9e2e89c87fe421ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7cece6ddd79c2e21\",\n   \"child\": \"af6fc4d1e24c1b4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"341b78271555aa0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"345088709d33cff8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"500102e98aa13706\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"56a36a0eb094c2de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"6ef2e304f9b78016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"b39c44e53a36983f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"bedc7b04384711e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"d89a443452e783d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"ee87f8c4929aa80e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"f07eef5528bc13fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7d28eafc074b353b\",\n   \"child\": \"ffe597fbd9b8c8cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"15d3ef29a9cfe857\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"1c5ab0d287f20484\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"1df1680c65d83e81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"315ad0f6552385b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"62953ecc7ea4f604\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"7a7ff674910a5a4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"82e44b16f18cc74e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"8bdc2bf8c8b88b98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"8fd27a6ed735e1fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"93541b68370784fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"948703760f86b80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"a29d8243a78bbba5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"a8051ae0c009b373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"a84ceee2571be9a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"a84fd8d1044a9eef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"aaed8b80a353e49c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"acc4bbf4cfe607c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"afbf5c24a7c2e215\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"b6803cc1bb007a07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"b736fa0e1e114c61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"b9b60a45a862cfd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"ba530fbf45e4ac5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"bc8f1a78938d28b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"bd5580782e8602ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"c2c53b41dfb8d921\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"cd39100b82d454a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"ce375996deb6024d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"d329d58812b5679c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"dbe0c4dcdbbd9f4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"ec2484226e43fa78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"7f89770583b87979\",\n   \"child\": \"fba0dba4c4a129ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"81d7e3912e74e49d\",\n   \"child\": \"5c5fc125ae14fd5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"81d7e3912e74e49d\",\n   \"child\": \"7fdcdd9fba346ad8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"81d7e3912e74e49d\",\n   \"child\": \"ce6f4ff120aaae1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"82ec7b5c40d97cf4\",\n   \"child\": \"1b4a990a6c3fa29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"82ec7b5c40d97cf4\",\n   \"child\": \"21dcb523bf2a9290\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"82ec7b5c40d97cf4\",\n   \"child\": \"6aa62a0d7a933f33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"82ee67fc7d05a4ae\",\n   \"child\": \"fb4b4bd8ce278de1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84ba612554f61802\",\n   \"child\": \"407a2da2f4023283\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84ba612554f61802\",\n   \"child\": \"b996543463882976\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84f2159fee251e20\",\n   \"child\": \"333ae005709d7322\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84f2159fee251e20\",\n   \"child\": \"7287ff8791e50a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84f2159fee251e20\",\n   \"child\": \"77405cb15919193f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"84f2159fee251e20\",\n   \"child\": \"c5a1e6e8883c4dad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"107e184e5fbea116\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"10d29f491001b593\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"2013392c676aaaa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"2e07cc108bb30ac1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"380c5ace2a23cf36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"40993d0eb219c3e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"48d148ac73debeca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"4a4d51da5e56a6e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"51a4c9a2770b8234\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"51abbde3d6f57e39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"562e3224486a37dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"62e693647d5c8935\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"6489e6a56633a6f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"6a3d2c3d886b6b43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"6aa11b1b771a360f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"7944f347043b657a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"8ef99f5faacdb382\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"9e4659da5fe4424c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"a54eb882fad44337\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"a981fcde66fd0492\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"b0c504015d6434a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"c082b5a371666762\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"c88f61100346e2a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"dd87ac0babb108e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"e7360997fb1ce046\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"ea745775f4a795cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"f2fa3985f372abc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"f66df957c7d3cb09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"854868f1b8026ba6\",\n   \"child\": \"fa765c5e777ee80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85be9facf0b430fb\",\n   \"child\": \"1eeff83e3d321b23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85be9facf0b430fb\",\n   \"child\": \"40a42bdca6629ad1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85be9facf0b430fb\",\n   \"child\": \"72c17395fed78a23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"1eeff83e3d321b23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"682db923858ded2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"7ba8769b2a814b34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"82f6673cc7005107\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"82fa5f408e2eeb53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"aba6fa7633b9f1d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"85e8770df6b3b8d5\",\n   \"child\": \"d2848729239b361c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"28467b5af310450d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"5ed2bac864b4c355\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"7e4755854a147c0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"a3e93610a5aca81b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"a7c8b9121f0b0ae0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"bf894e0163c8d07b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"d7d44a37371bbc84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"867fd12364352fd\",\n   \"child\": \"f22997875e948567\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"87e17a6af98afa3a\",\n   \"child\": \"6f40fa33fd214a15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"87e17a6af98afa3a\",\n   \"child\": \"7579f73db2bc9395\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"87e17a6af98afa3a\",\n   \"child\": \"889bb9b22ecc9643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"88142df2b55b9852\",\n   \"child\": \"21291b78a1879c89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"88142df2b55b9852\",\n   \"child\": \"2e1ef9f0737a76d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"88142df2b55b9852\",\n   \"child\": \"a4cdb49bfcba2e39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"11c3503433dc9eec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"145d80fefff73fec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"362df84bb62fef0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"496eef9548d148de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"5b915c430ffb5a6b\",\n   \"type\": \"ownership-by-file-overlap\",\n   \"metadata\": {\n    \"files\": [\n     \"/usr/lib64/python3.6/site-packages/rpm-4.14.2-py3.6.egg-info\"\n    ]\n   }\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"697f3af5dfb41f99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"89116c67da3d309b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"950f12e1e6b4ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"96219629ab024515\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"973a97bc9c86ad79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"c6980d9d19bc9c83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"df43bf63988bd07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"e4c8301ff37ce8b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"89d0c665273f84a\",\n   \"child\": \"f4f9cbc11e60abf8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"10e5e23bf340c087\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"123fb94517a52620\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"14ce9a4a948aa180\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"161e0484345a9da5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"1639e3845539a4fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"17045f74fb352b5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"1733dec103ed4773\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"17378428d6c11d6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"18a10c8cd7368c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"1cd7723f28c027ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"1eff4a0784ed5781\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"21bfa93de78b060\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"2223c10971051f71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"236ffa04e96f1f07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"23c109d2553203fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"25a168a7f561633b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"2a8fd46c71a1b111\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"2b1edf2adb11802a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"2eefd460ea4d3bc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"2f24239738065aae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"3041dbeb0386f444\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"3296d404233929e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"36ef46f74c3a3246\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"3881d0fca9f46bc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"3af9ae3a478af982\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"3dd45608d2cdaea8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"480835598251ef55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"4855f97a96fbb604\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"48b5efdf54bc7094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"49932ad1157aeec0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"4d62752ae826d918\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"4def32e287ba66b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"4fc6c9eda36e581f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"50d039d0106d8b00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"50e7dc25eded5d97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"51ffef5bee190b27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"523236c0012cb18b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"540c52530a0728f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"5521d956ba64de45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"569382b005845133\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"5cf6a4be37644c23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"5dfbe3e1a1295352\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"5ffff94af64581cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"61ebed417606e7cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"638ffbed2d8982f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"64dde3ce1557855\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"65d8007a1f664db2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"69562eac663ac63c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"6a990e409eb65356\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"719788eb7b5b46ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"7db05b61d6510250\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"7f41c3d33b8c5c14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"85dbdd542f0156a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"86c10e2118005510\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8b6b8674bd5f7dad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8b89dc160ec28283\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8c5b000f86ee8f61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8c5f0edd7df34b03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8c8ca71a6af04cb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8cdb07ea7f841975\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8e8451f13834008d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8e951d658c61cbc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8ebbbd9ebf415df7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8f58e180fdece73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"8fcf5b0e1c9693cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"92f266814544288e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"93c3be73e75c35ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"93f7c454db8e6a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"967c4c84a38e6e37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"96b7fca0a19d1c1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"9d21443752664284\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"9dcbc474ce552bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"9ede46380ca8f4e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"9f6758bc7f139f83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"9ff6f6fa723ac5ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"a1527351b06b5d28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"a52a9e0501ef6459\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"aa871ec75dbd04c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"ac06ea53e60ccec0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"afb49d8c5dd23bd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"afcca2105c8d342\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"b053b3ce99c6cc7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"b1a1b82adc94c555\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"b5d550502bde72fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"b77901298accfba3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"b7d0c4bec235d5dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"bbe3c5808daccbf5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"bbf5dcaefcb17918\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"bd26ea9d12234c84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"bd5587017e716a5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"bf31bbfe3fa5da1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"c03dfcc06e249fd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"ca6f27dd0d3e6a36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"cd36bd9329776419\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"d3ecc5b2c3834f73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"d53ed011d31ed7a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"d5a5794e7eadbc61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"d892cc9648144c3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"dd6f0bd71c9ac87d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"e2ff6f1f3c734a3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"e918061776f01d18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"eaad8b2b5ac8385a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"ef8a30d3c5abf9ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"f1c4848b1ded0187\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"f4387219232cafcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"f442dbee1cfd7428\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"f4c680570d84222\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8a67f9d1e4d2bae3\",\n   \"child\": \"f905985809f32931\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8b85212718289c1c\",\n   \"child\": \"fa3231d8bd199209\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e1a274136987459\",\n   \"child\": \"65aca2f984440974\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e1a274136987459\",\n   \"child\": \"a3d4c0f434fba90c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e1a274136987459\",\n   \"child\": \"b26a57089dfc2f99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e1a274136987459\",\n   \"child\": \"d1946f089d2a8140\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"1bdd6c5d066eb278\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"2ab8aa610c52286\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"2b45595cb4e4cada\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"2ddd5e3a5aa076e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"38e7325eb6c5fb18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"47f582bbc1b14c98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"6d03bfcb63445201\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"704319e2d0b72506\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"84b70fb915504b3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"8f2a8683c8099e78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"912a58057b1432aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"9877c483a7276853\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"9a8fb3e6e9f9c9cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"9c8f978faff0883d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"a738100662536aae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"b44f6290a0cc8d2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"baabf58d1a3b5aa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"d274bbbade0ee10d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"ed10028e7d4f7454\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8e6613ba95209c3\",\n   \"child\": \"f6725aa768ccebf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8ecf929ac28a117b\",\n   \"child\": \"2961b004decbf5ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8ecf929ac28a117b\",\n   \"child\": \"3f77121618048c9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8ecf929ac28a117b\",\n   \"child\": \"48960333983922fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"8ecf929ac28a117b\",\n   \"child\": \"9f1ef7ee24f3c065\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"3041689f3ee3f2e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"3c994064b6de51be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"4baf492d5038b96c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"587870656f97d66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"6895af4d8cbf9cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"7fee15555ccf3323\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"84ad52b6071be5e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"9131a58cf8321c80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"93881f5327144d01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"a7c9cd7b399c4f8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"a887004cb11efad3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"becfac1543c6fdae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"c0251e719aa7405a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"caeeacba580301\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9071aeaf00db2b61\",\n   \"child\": \"ee5b9d2e7cf7f1e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"91c1c703bb8f0a46\",\n   \"child\": \"a2e2d6e1ae3a8a24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"91c1c703bb8f0a46\",\n   \"child\": \"f08fae9bd8783146\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"95343d33e2775f25\",\n   \"child\": \"17b80418ab77d984\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"95343d33e2775f25\",\n   \"child\": \"f2aff333d0ac8b49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1029c8f5edf346cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"104c7ecb0066f493\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"10dd1e0734d57c2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"11830dd5efcd7e91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"11e11538e527c438\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"12162f8075a1cd6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1298f21ecc44409f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"137162cfec02980c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"142cdac22ad2190\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"14839f2910a5ebdc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"150d9c94c1ed9ca9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"153bf6ec23311d3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"156c1321a8db3bd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"15efa21d173ef4d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"168a654f255eedc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"17408aaf0aee505d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1771c6f269725e15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"186567b9f25c0ebd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"188346a125cf228e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1a4bd5ad234f5656\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1a637030b7c0aae9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1b1db1b6a387b424\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1bdcf7acd06d8935\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1be3b3f6e16a9218\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1bee9e8889f24532\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1c5d2bcdb3262b93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1c8861c789418719\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1d7bbc31e6dc200a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1e207f996725a978\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1e59bbc54e5b3d07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1e733bb0c9d98b09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1e8dfcfaf4eecc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1f5c9e0c88d34290\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"1f6a522824252c67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"205992332e51e2b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"222695a713a1cab7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"232b4ee7abfc47c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"23a1207706bc763e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"23d26cee2e8f8246\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"24dd0d18e394e5df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"24ec31ba00329b09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"25089e69c64df3bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"25b5393d2c50f1db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"26a0284a3ee07f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2840a3b7dd121829\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"29037d1ebc084dc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2a13eccd770e77be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2b3015fe27711bc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2b58b45a2fd84655\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2b6e0fdd9827c50f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2bbaf3ee5efbf9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2c845c6953aed674\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2ce6a290a00ec971\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"2db4bad8dfe1f738\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"30f9d8905a6605fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"3173b8fb296e8448\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"327574da6a53ea20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"330009ff9209cfd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"33c8c4f13aacc91c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"357f057cd6fdef57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"35ade8afcdedbde6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"35c006520ac0fcf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"37acc2608b92f62c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"37d3113b4e48930c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"38364f35836eed59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"383e7e5d764af8ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"38fff6a316b95c7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"394088db342aeeea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"3dbd971b99256a34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"3e6ae44289bff034\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"3f66f6b40c6ec1e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"3fc6d870273b9947\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"41504dce68a05b8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"415816d269120ca7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"41a906d3c8ba1cda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"41e0c4556c95429d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"429e89a590324a79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"42da2d325a260a3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"438043a921c7a27a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"44fff53c5ce5966a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"459486889c02f0ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"45d0e58bc107cd32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4983501441b9acdc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4cd43e5a91ddf83f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4e8ce7c8dc314718\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4ea38f1a00f251f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4f35b6ba4aebf173\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4f50e7ffc162cc83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"4f7f44ba9b8a6a2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"50d5feac6221ff14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"513497eb517fa2b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"53f1a55520a5f11d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"542fbadee5b22d46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5442f5ebeb9a8ad0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5489ccc6c6e41e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"551b7cf5cc34d821\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5554d3ee00f87a07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"56280e7cfb5309e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"56b213599326178f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"56b86062b7f7fb35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"576d591f6c2df641\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"57e5cfcf3f291f52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"58feb7d944526933\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5ab036c1ea2b56d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5b35dce09f72e0f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5b846333016387c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5c28e397849d6396\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5cfd809fad8f80b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5d15467f01848155\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5da0110974483e2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5e14976c259a92a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5efc6daafe107565\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5f0cbfe82102bac1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"5f70e83f0b3b24d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"605d7aa8dca30f87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"60d945b2e57fa872\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"610625acce38589e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6242acfa93aac12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"62fd8c841707c433\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"64125b70703c141b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"64bbef2940bddb65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"65f524766c984c4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"68029a6266400959\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6885241f71a552af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"69540c94370cb9a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6b145ae3e9ef1cc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6c4ef720dddebd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6d259d0f138bf5a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"6e40b120f698289f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"704b3b375bca183\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"705478744c19f0e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"705c6b45b5734fc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"70685383ceb84717\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7131321350799dc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"75c54c723c537d7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7785f87a7b35c415\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"77bb5a74f77e5243\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"78f05ee059e19ca7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"79cc51b7d40a56bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"79e353e0e11b470d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7a6df982c0c4eee7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7ab0bb361eb10742\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7ae2bcdcccf64bb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7b381c01b739fd61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7cd06ca62f52fccb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7d09fe80ce69f814\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7d897167fb3c1327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7e6a0d04d9fef53c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"7ef33de539db5b4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8025016d3285586\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"81b96c12ce886e2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"81da3085491c55c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"81f1fef19791a6c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"82cdd5ba4117e60c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"83352525ca19d5a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"83805745c1ac42bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"842f9c0bce1e08b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"84bacc965ac1c0c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"84d92ded2fd13f3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"856a0c2f1b114292\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8598001fb7d23cb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8690ab61c58a7ff7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"86d85c73cc90f4e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8a574541151708bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8a71c2ced6fa1aaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8da895febb582e04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8dd7bc37bdc4b433\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"8df13acc7b00486e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"92f5c8cde99a8eb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"93226aa82dc6f620\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"93d0e7ab2a6bb97a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"946f641886362a0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9482a6aa2ff761ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"95a70c9bfdc2bbd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"96227d86eb19c4be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"972089ad880be52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"97c7e00f4db20d9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"984a069286db1ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"989d73e371d80870\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9c657e666bec8223\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9c8fa7ea2c09ab9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9cee5dd845d80d88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9d5fadeb72a8272c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9da0dd44a98acf84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"9f47a5a00f52adc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a07654fb856ca384\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a25710e16161cb5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a44f6001a4f3ec7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a4e215158f26e3f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a524f69634d710e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a5a7ac9822ad9440\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a64a7873304a4e63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a67afefad276dc62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a6d8e5a694aeb0ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a721f285025e556e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"a87b05c8b4e7408e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ab5a80bc7df2068d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ab6cc25f0f2d58f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"abc35a5a1799a6f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"abec64c108f2bcec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"acd08777cdb1928\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"acd9a30f72b898b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ad414c8f6b0207ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ad9c92ad57b21f4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"adc92a100b11fa8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"adfc97da4f1f8c0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ae1699c78449d347\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"aeb63470b5c44880\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b0fa9b77275c14de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b10618584484e10f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b181cf2fd59678ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b1e6d62526a3a62c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b3188871f88bf0af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b346ff8a8844f4bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b36ebb49cb8f9662\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b45a8efa3d4b2147\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b4a1cae7f12aa0e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b4e02ba7cd6a1acb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b522abc8964fa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b522d059f52a8c8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b5adf58babd724f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b5d9dd8016be4b59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b5f676be9a6950f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b63d6c75decd8622\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b68fc75c22967ffd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b6ec83b589eb14ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b88ea483154421a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b91acb4415a3f1a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b91c7e5ae32bcd94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b931f71c9308d064\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"b97a681c0dc33134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ba54ebc365750aed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bac8e8feb06dfb47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bae42f4ce5fa8e36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bc8bb33181610a6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bd09797e39bb3ca4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bd1b0966972c2e56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"be12a3120657131\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"be7626e0e8bdbdfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"be78ea553882a8f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"bfb0ce727f52c289\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c17a1bcecf983076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c1ff7365dbbacfb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c2208ca39c91223f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c2319903fe01603f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c3849dec5c5fb636\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c4527464f7216481\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c45bc734c522e1b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c4b22b7701350f63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c4b5a908abc5f76d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c553466030436c7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c89785845e93512a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c9047e92ce03de14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"c9c50df5e8d93c93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ca1c826e37a0fa57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ca1f59840a6c1352\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"caa401ca9f18f8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"caacd3b5137177c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cb136572435eb029\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cb284b2edf8aac7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cb29599c371136d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cb8f8dcd369dc659\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cbb9cce31511b20f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cc1d0a87786c87e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cd3bc139a540ba87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cd5c411e97bc872f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ce5e1f4a7aa7aebf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cf11bf0093a0a1ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cf530692dba6acd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"cf7e5367320c925d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d1d84f76c873ad20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d22ce49c831c9531\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d442ca1fd4549640\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d55a0388cb6b803d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d5fcbd367fff5623\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d71a41177c82b58c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d8081a5c9598b9f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d975fa28b8f7ff08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"d9c060c487012ff0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"da4878f3b6423ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"db1d098669a10f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"db28e8e4e9fe6b23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"dbb5ef99f38caac6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"dc8380132fc59905\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"dcd610b831e0959e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"dda62583e67af5ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"dec7d64993fde7d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e0e5c6cc02c7968d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e25878045f1e0aa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e3c467d5d4f98b6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e3cabf84b56756cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e45700d614dc2407\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e4ab200c6d017c67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e4b333cc2b961219\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e664e2e956b116a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e69bcab17d7d16fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e88fc2af19b92477\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e8bfe83e7b0d84ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e9222857f90b8a4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e928deff132e6a00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"e930147a00a202ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ea8c3d4506295d27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"eb0aa823a0f0a646\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ec128c5ca9e6fecd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ec66608c9a8afb1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ed15b2fe71ca5f12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ed3109dd4562063d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"ee23ef3f99533495\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"eef2626f5841bdf2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f22b812476212afb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f28919e1f4e2cf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f395a72ff568497f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f4a3c64212e775a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f8999b68c3336793\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f8c99674dddb191e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"f99d08d1f6b8580c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"fa758fe0c0e5bbeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"fabed572960142a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"fb1c19f93f68ca8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"fd4c669a539a1298\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"98447e47e1b08420\",\n   \"child\": \"fe17b4da4350f01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9944ba1dcad20624\",\n   \"child\": \"4b22e0d709bced60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9944ba1dcad20624\",\n   \"child\": \"62a5b2523afe9fea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9944ba1dcad20624\",\n   \"child\": \"bccd50743349c8d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9944ba1dcad20624\",\n   \"child\": \"d47ffdea12f83ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"12a68f870bc5fa70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"13f05df87f850888\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"15d578ae87ea244c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"16448628742fc5ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1953bbb75e9d8250\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"196c948c7d634b1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1b3facbcc4ca9b71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1bae667e57a8ba9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1db0c16d45eac7f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1e23cff080b1b48b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1e9f1db6414536a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"1ee6882bcc676cf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"20686dbcba892720\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2270348379a95145\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2527dca57ca8bb6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"253a9478edf7cdb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2571e17bcd10ddd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"25b597780d557a31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"25de07c7b9c43133\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2737c50837a045b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2ae9fc1e315868b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2b17c7469308182e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2b1e6e6fa5494de6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2d4bcdc54316b12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"2d81487ef489f29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"30198fcf1feb2606\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"31de2d9491786bcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"31e4d91bd6f6894d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"327b592f77b2815a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"32fe6ea99ff89fe9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"33d8d9cf5857a4a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"34730ecf4fa33b7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"36b20fa60c2ce89b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"36d5189f363dda2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"36da13b774636a59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"37ed4eb154ba7185\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"391c5de5ccc5e5cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3945dae075d743e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3a57406a7e8ad2d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3aba1b3eea08d210\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3b4b9f71c056a666\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3b8445fb09869650\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3ee4b0622e1edf15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3f3cd6b18b8f8449\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"3fc0c0faf8fe8c54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4001e4d56ee2418c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"403d51d8c4a39119\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"42acf809d2b67861\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4350010a1d2eaf53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4374059cb252aff0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"44a738436e80628f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"450782e4c9c36e2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4537867a77f5a190\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4646973e1679d180\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"49f11956bc631e78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4bce493090481869\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4bfdd9c3be81ca7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4d5c0847ad135f5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"4ee0942dd456f75b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5199973d9da1e0f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"520e6c55d4023920\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5337642ae7940087\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5426cd8d0f0b707c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"542f3481887d079\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5471d31c4ef4ffe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"54e32cde464464a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"55f688ca827a4d9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"569135a25c4c87c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"57ecc2a80186d59c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5ab8cbab85d201a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"5bc57de6dcf4395\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"60f764a632861f38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"61a55a6644b6906e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"6211a1065e6501c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"62a47e2bf61680b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"62e8e4ff9539c179\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"64025d55e66cd60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"642625a83bafd61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"645161df28c8fc47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"646f357337adc9fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"65a077f5b826427a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"67272cb3cd9cf0ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"6801f7a95ab201ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"6bc3b97f01392dd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"6c1441f3c30c4278\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"6e62c01fec3544ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7285354185ec7ad1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"728af0ae3ecee2b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"72e624bea986982\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"73c97881d2ecd134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"748270d19b5645ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7769814ba4aa43b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"782be75fa23b66bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"78854e1e5275e2d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"79ef3afe5f8e9cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7a17ef36df568c7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7a45915b251acb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7a967873b0079c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7a9a1e849429507a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7db25f232e5b0cc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7dbc9b9313eba73f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"7df55ef930993638\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8086e19d0256c8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"80ecc2a29a621e48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"81a7ac9545ba0b87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8328d92fcbd3fef0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8373f4263d590cb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"840687f069785faa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"842568e23b2f663e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"84b5422870cf44c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"89215071334f7349\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"89e70932d041dd47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8aef682cd0e0d5e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8dce2266a5d8c043\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"8e8ce09f0416eeec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"90199af9a59e6aca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9041d9aac6bdbb58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"93a20134def30f6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"948f2ededd9aac91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"95399aa9ef2d7c58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"97426f0cc2f79ddd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"975ab8d4e9f8dddf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"99005946e84b2011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"99b1092ab1f4a340\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9a5b256022b77d59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9bec2b806719c83f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9deb17a133fbb35b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9efdcaaebf6b4e35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"9f0cf55751c3c2d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"a08428c67e943a4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"a1fcf347bcaeb402\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"a378e35934afd95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"a94fa6bd22510319\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"a9f5aa75e7b83406\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"aa50962d25d66626\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ac5ea8617809ffd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ad552afc4425bc37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ad9cbaa32ade50f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ae0448f265d9b204\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"aea2f2454e4de7d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b02db04e493e7a7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b1baa37c5128edaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b272995369295298\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b626af5430d9acc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b6475c9811d8fa21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b6e66625bfa9d615\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b85a139ac99aed86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b87e00d3e8f2e45e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"b9f9723097374de1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"bbe9354c3adc05f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"bbfbce9af199fd6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"be697d06c0a22c25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"bea5979ef0e5294f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"bf0f6460dffc3fdc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"bff1612bedfa128e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c00728f1439abd7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c2f90c8b706b2058\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c3cd41c26467ac6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c410427d382aa13e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c5deeebb6b3ab75b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c68e3cb5ea505763\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c6e8f366c0631a8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c7331621ab2514e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c73cd3addf75aeb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c80fd60bc34a76ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c82c04ea31a10cba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"c9c766d3e737e96c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"cbade992b259553c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"cd5513a0b63671c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d309a9b77d7d6695\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d56b4cdbc90d4579\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d5b42a546db3ab8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d6c31a21a97f1249\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d7ad792346293baf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d7b451034b68a525\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d7d27c2168e96e58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"d9e8c7c5bb8700f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"da1738abd720307\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"dcaeecb35b254297\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"dcef667e7b74df56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"dcf0df707b9896f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"dd3598f98e4ea821\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"dddbc9867bbb9d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"de81ae82015f1478\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"df2f911a721e0373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"df414812b8d89095\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"df7c3159e4d92440\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e042c437dee66c2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e0e7d6c53a40dfa1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e17f271c80bb5a5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e2110a449920abae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e31001b56a0efcc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e47d9f8d4c2815c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e4a474590bf1c4a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e689fcb6e346af16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e7c15a557791725b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"e8b81586d786f9f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ea05bb467f97533b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ebba990330a4d899\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ec8b5d1d0d7a4dc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"eca8810cf8f638bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ee2a2fa7430fd158\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ee9620b6b524fe2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"ef161cbba20133eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f013240d1ab06be3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f2ed6d8d31cc7601\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f37bba675d106cab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f4510079a118e29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f6c7d6eb31548ce5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f87c5ea3e2bf0cde\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f960ccde56b03ce3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"f96c52b4dbe36a93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"995a4ebf111527a2\",\n   \"child\": \"fee8e285d7806592\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"14b6c7f5dc21c60f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"2247ecaaedc12792\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"23bc0ca151841d38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"2aa84ef71fdeeee3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"2e0b90b81093ea85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"30273167dbd00ef2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"3620473c483d96f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"3720c550b7586698\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"39b1481321be6d14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"3eee6bc2fb5e828e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"469a5af720129984\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"509ce2c7ec90dc1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"5197240a31ef2143\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"53ae8de07dd1ce31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"55ca3b588a7faa9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"69a75e0d766403f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"7808ac5629ba14c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"7fe6fb4997d2854c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"8568498fab9abe68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"86a50cba68cd1f5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"8d2f004d168e6f7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"989dfbe4b32b844c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"9e34dcd6d5ca02d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"aea3d13787a45817\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"b39a5dc6c4aa75e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"bd3f45ecd057584a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"c267bfaa57a98a79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"cd246ea2318e6327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"cdb8d3d624accb26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"d1f4341919ad33d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"d27e16abc9b2ef8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"de080c58f864ca45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"e2c1c5081076ea60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"ee3f17c1e7d1e163\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"ee60cc84bbea48c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"ee869e7aa4ab218a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"ef7fc117608ff9e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"f5205178b1adb2d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"996ff886468003b7\",\n   \"child\": \"ffd8bec1420d8df0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"141b495451aeb116\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"23280fa0f6884a3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"6543b1ffc425c313\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"8c9b38c0779b2548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"94fb0e0e8e679ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"a32bc48d60641eac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"ba54fc21ae259142\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"bec24a82249a0652\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"c0f1ef165a559277\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"f74c623e1f8dd52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c5e9efa96630b8c\",\n   \"child\": \"fb121c739d16e81c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c6f8eb3cdf7829d\",\n   \"child\": \"e56cb2afaf1e2ec9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9c6f8eb3cdf7829d\",\n   \"child\": \"f62cfce7f0818513\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1004121692386ee8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"101a087b9f1aa09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"101ea2c7d5cbfa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"102f43842b8f3f12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1041ad678e5b360d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"104a3a842d9d812f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1058980c110f8778\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"107566560f2ecbc6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"107903e3b0ccec6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"107ec6443d385a3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1095c95a7f21e7ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"10ca41a82c663c66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"10ccf6b52d339ce7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"10e6b6ad317b465b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"10eea0b50a40353\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"10f5d61183ff8c44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"112173e32853f590\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"113bff3b2a17f63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"113d77de1d9c73e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"114eb1a3b5b8b386\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"118931ac9de29e41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11a09be101e87560\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11abdbe268ef8bc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11b79f907d9a09ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11d7df2d1df6d234\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11e0da6144710f6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11f3016361107a1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"11f3c6c2a65b711a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1208ba950a585b97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1226741f478d9ffc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"123acf8572e8658b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"124094de1dd498e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"124b009c171a1960\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"126632262faddfe2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"126994cf7ff4816b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1279cbbdeb705dab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"12876211984fea39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"12a2a76d760fa7f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"12b593483e0c250a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1310ca003d7cca72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1321428c0203737a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13a886f83fd21cb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13abc8fc9ae8c337\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13c2baa6c29aacea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13cec3c080ff09ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13ec485759bcbb5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"13ef70e4fc15c956\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14249625a7610f89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14505dec5c870185\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14645c96ce7493c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"146696e98f65c1d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"147475d5462fe125\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14a471349a6c5f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14abcd8872528cca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14c3e1ba122e72e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14d76dd6e83f568b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"14dc9cd2e648c106\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1503f1c5175af02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"150567746d37600d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"151bdc2f80a29c61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"153da8a43d0f2034\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"15cf42a46893be14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"15d7e5d18d2c26be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"15f72f9d60da7883\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1615d5e8f8d781fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"16649c3844059259\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"16657f77e03a7253\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"16c315fc0abd4848\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"16d1d174a388d94b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"16d6e1a62cd285fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1709d0e84eec96ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"171a23ecb62fc639\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"172415d95808529\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1734ca66c4b9a49f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1758139e4b73949\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"178c5763ca1afd0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"17a1cde9e17822d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"17f4a29154719ac8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"18156bab90e7b16f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"181a0cb10cda7a17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1851b1f877030500\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"185cd220c3fa4925\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"186cded5c38be903\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"189ddd5166559a1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"18c3bda64c429efd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1943dc10045665a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"194eac71e89dc64\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1958a6eff8b72b6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"199e58a06bf8452d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"19c764d8a5851b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"19e341d6161f917b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a0d81ef74bbb31d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a176a2347490e4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a334f5bedd9a72f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a38ad2b1b5da8c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a5a353093df6587\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1a7a422f4b19f7a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1aa97f30ecfa4ff7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1aab6d8a9596420\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ab81470174e7c5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ab93cbeb03bba1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1abd7d7113d3f41f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1acc3378b5e5fd5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1af9e14e20ea7498\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b0a7678161afb0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b3a16240dec188c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b64e7cff92fdede\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b6668d575fd71e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b677302babecf1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b79506366bf8744\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b8327020e576309\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1b95e818f69fbe11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1bb4311fd71db03e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1bb6d7dd887b6b00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1bdd6fd88f4a1709\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c1047dd43893a9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c124be84e174a3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c32739fc8a50df4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c349d235709a4e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c51ac70269c319f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1c9436c0a95a759\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ca42515b43bd22a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ce69c4254795f64\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1cf10b446df25add\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1cfcfd1e056e8f27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d079d1e37b9fdfa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d2111fc276b4e6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d2657ef1461f721\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d6c9ba90dd7ed5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d762549b8d72f29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d787b4360fd5072\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d7bfe69b872bd83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d7eabcb47df244b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d91dbeb34aedbae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d9304cf592c1ff9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1d99ffc01e016957\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1de9733f4250d760\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1e140bf1a21d0992\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1e52e2a2f011dcbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ea1e2486dd737a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ea8ef5ac45dce57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ec3376876988b6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1ed6a11ea2f68367\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1edba1c5f6344acc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1f05661d5e86b650\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1f284440460c2d7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1f584fc91f7ddf76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1f58de3c058eda3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1faf7a2d7e59c1c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1fb5cd27136cf000\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1fce2f706a067fa9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"1fd8e6f046818aac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"202e651eee840aad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2038bc7b27080a00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2054ae51a626b1ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"206a4e95e1fa215a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"207ed53507457a80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2081fc85a73dcaf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"209d917f0ed99352\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20c99491de9bf81e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20cd5172bb506859\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20cecc9f36b3fd5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20d2312bae5d1ef5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20d3ca77bee0f384\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20ebe3d44d9b76a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20ed27b30156a275\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"20efd29f1e6f8a67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"211f42d796bba655\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2120b6a13c4679fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2127c5dbc493b723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"213b1bb9593de8de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"214a0dce2fe0741\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21646455bde55519\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2164d62295d21754\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21890b9051cee502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"219e0c3d7261f0ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21a5dbc910f973ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21b33cc82b7779e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21bb66de7e0b35dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21c1a292d0c6f28c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21c319e9a354045c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21c3c88c3bbd01a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"21cf2c1801ca1a86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"221a7068cb236a39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"221bbdd7c40e6996\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"221c3efffd49a86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2235be48f6ddde7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"228255afd511abeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22b33452b2969323\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22b48342423cdbbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22d3b23cb60be1c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22e0d8aa65b699d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22e292a0b7a604f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"22eb13e1722c0a75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"230489e07214b704\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"231cd90e99662c61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"233435528f1da36e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2336fdca15efc2d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"233d70a737ca6f7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2371e950d6caf11c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"238efeb107e0c834\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23c05949045f72e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23c07c1c9d674dcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23c5b411562b103f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23cabbada7fa836f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23cbe99e70dcba8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"23e1c687b187966e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2401684a1d8dce66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"241d57a012a23c28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"24331f4b897ecb41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"244526da56a43299\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"249b279b5d0308bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"24c0c57b7a5f5e06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"24ca9d8b43e66966\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"24e1522abad3221\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"250184ddd1cc8718\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2565bc70530f8f9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2579f9ff8f5f5115\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2582145ed506b6a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"258cc73f8eea773f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2590118fbd5d0c84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"259778b95c488d31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"25a44e03e508ea07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"25dfd1aa43ff32e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"25e6c60f6e31fde8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"25ffee54d40cba83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"263d2107922cee53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26543ccc948a98c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26a298dcf9692f84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26ada25cf9ab1c5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26caa36c598d1872\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26cceef8ceca3e35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26f563e70b0a67ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"26fe2ddf9d79152a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"27126c252af6e114\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"271e0d2e812897ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"272188855c0979a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"272b1b44a9bef603\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"273d769dff206113\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2755e2fbbf65ee1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"27683bf26e5c6d47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"277a4738469253d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"277ebbfd5b89ca9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"27804533d3d22b09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"278aa8c226af5909\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"27b0a6149e2a3c87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"27f6830636291037\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28108caa955e865a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"283037780154eb52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28335c99b71c8cef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28479a995e639520\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2851bc780fd67c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2871332b608c41f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"287eac099860f0a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28a7d2a376abe887\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28d715cfc92c20a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"28ddd57e2917c118\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29499a4ad106196e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"294e520909bd3dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"294ff5de96c0797a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29620057e3695a14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2990aba815449ee7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2990d1c4c3d89c5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"299b57f2c59a8a68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29d40b748556e0c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29ddf75376f90b42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29f8462b56b313c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"29f9acd647b43fb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a0f06620b40a5a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a256cecba56adf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a28c4310a1b4871\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a297cb9fb75d4b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a3072fce8442937\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a3358db01baf8c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a3a0a2e020b091c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a7248cd04fb1b8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2a9477ca8eaf2791\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ab39b5953e309cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2abf14488dcbd89b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2aed281c984bdcf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2aff7d8c4ce4cbcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b19b9ed0009dc05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b343089d7ce9722\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b3e3fca6b41fe86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b3f80e3897d3c45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b513e3c13c1646f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b5aef421246c144\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b5b8e88d7985a6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b5bff878eda3433\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b7c352c71e53f2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2b88d9dfa6f433da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ba60e0c0ec9126\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bac8967d4b4d943\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bad3816243c821a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bc0e92688dbac46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bcea91ed87201cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bd896d87fb87910\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bd97a0a78a54c72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2be89794ac0a3bf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2bf520d3dc3d97f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c09266c66a0fd0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c0e37bb361be2e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c18616ad9451ab3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c217b1dd7578ea4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c219d773f673a91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c5b189a2a9519f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c69db0f879ead39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c700b1fb934a5ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c800cfae6bac28b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c89e1fe4808bf84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c8acd143db2452b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2c8dcee9ce4d0f7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2cb14782e569fbdc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ccc70a7b2bcb7c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2cd0e4cab0983e0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d0786a17c5bb48f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d09d933d6eeeb43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d133d80f1e70ffd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d4d6c4e3e76ced8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d6b1a33dde65415\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d6b83180646eea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d7e041c9208e05b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d85c54dcf558499\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2d9fac646525185f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2da76e9167845757\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2dc19f7bb1c6f7da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2dc4c04e5adcc9da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2dc618a73aea8e89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2dc88ce3630d8800\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e063c4e75d98888\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e17fbf30c1764f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e1f52fde3bfcd05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e2db3883f5b1139\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e2e2cf35c3e935b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e65405733374d15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e80dc634b378428\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e83104eb056e785\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2e90c4e066c620da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ed06aa477ca503b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ed5890fd64ed7e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2edd62e14a67f140\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ee0ebb2a97156a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ef399a138057b43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f0ad9071ed1991e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f3d6b8715f5bf1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f5a4ee861ac77cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f5bb79f4567b952\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f7af4dec8e75cca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2f7f688d39745b3f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2fc2c778c0d76b46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2fc80c10953f313e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2fec834af6ff7b93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"2ff392c9b711fa21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"300689144d351cca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"30179739fffbdb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"303241238376c89a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3040b6d94a0239a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3053c1cc28351f68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"309364c46b25f6b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3093fdd7e1d0fb1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"30df698c9d1dc1af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"30e7bb1a3b6215ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"31132e7c22cc9030\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"311936d383b62041\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3133a0475aa51f90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"31353fe9d143dc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"315a292a3aac7c3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"31605a4b11885cef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"317ff1c060a68d41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3186253f9b3fadcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"31f9c0ca3eedf6a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3201599c141e9117\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"321f7d141000f9d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"324139cfc9a7edc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3245c56b46dd6dff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3262c96c9161badb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"326a58c3ae037150\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"326b556de1e36130\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32ab23c8dd7be1fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32ab61495be7f426\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32ab7dbcea38389\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32afaaee5d0d0934\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32d7a67e9fb70815\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"32faa5d0b42056a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"331211bffb8447f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3387595c1aa47049\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"33a1a66dfc1a62ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"33ac473fc7957523\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"341c5b8a16296bad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"34275bdbac22709e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"34401c57e692f266\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3446f0a301f948e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3449db3aac7ad3f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"34559160a88f5c7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"345b08705512c1c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3461c3b6e220a3d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"346f88742c1f739b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3478cdac1a945af7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"34a466e9b740215\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"34d1c9e421a6f9dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35170a9bd6b67481\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"351a0a317e0b7298\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35648a3780bbc603\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"356b5621d3726885\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"357b0920dd4d7ad4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3590133375ad5ecb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35968b27a14e3c86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35bcbad2aa222450\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35ca59ceee37c939\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35db222adb53ba4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35e541a27038b62b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35e7b1ee946e1c44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"35eae2dfea07b051\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36076425bc914622\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3608038e18eb5814\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"360b3624e7518429\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"361822aeb3cb5525\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36210ded1b671fc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3622556c061a7447\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3693b57f7bf13e45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"369adb8aea300e4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36ab08d91a804ea4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36b3ebda561a6439\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36c8a35e5c7db2b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"36c8dead86653f79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"371a0cc2db670a28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"371f523e301d90d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"373ae40a5478ebac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"373e96d4b9bef762\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"374bb0c701fbf1e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"37634bec517e7630\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"379dbe83b3ca32e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"379e539a0ed54564\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"37a78c6d4c4b8578\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"37b31559a93c13ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"37b7a84b63a6f4ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"37ec0e466d194383\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"380bfa66b73562af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"382fb2eff04d01fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"38300d3c7c75abed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3846e86be2fb12f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3851d19bcedab5bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"386f7dd28a977e9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"386fd57efa9f258\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"38f8bc415a95b1cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39027df4eea185aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39260edf85bdd0fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"393aff5e0689b452\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"393bf4377bd551e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"394aebd1ee603db8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39b7c6dd65d1e343\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39c6498adfb3f50f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39db8f2eba47dd57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"39ef4ec5b6cd183f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3a0020981ef08b38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3a21ac05fc6ff6a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3a30bb1f300c90c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3a8f73811f3ef8a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3a98f1e0fdda254e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3aa2cfa1fc6cf083\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3aadf24b7a3069d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3aafafbec4135728\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3ab745c9f1778bf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3ab9973b13052036\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3afc35534f9f3770\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b1abf35fa56342\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b294e46607ab02c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b3274b14d79ea31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b498e9523687cc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b768915235e1812\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b84adb44f7cab52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3b8a7b67768c86e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3bd953dc9ad20f10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3bf804ea81149d3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3bf8f08a0d3efdd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3c272b6794fbd858\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3c4b89ae08244ff7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3c7317da89354a4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3c80ccd83410dc9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3ca5448b8aad239c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3cf5f88e29ee52fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3cfdd0df254f4084\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d2c40b04e9df8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d4072ee34381758\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d66bdc18fe1ac65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d7423f51d5f491b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d81a9aa82b0270d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3d83ad6e599630ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3da9f6f20e2df546\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3db4f3b245910d90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3dc999cdba3be879\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3dcbe7cc2aceb379\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3de73840ca1d93d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3df55d9afcd684ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e0b55cddb165413\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e2157bd4e323380\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e21df6d1aa07496\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e39a90e029c9ef4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e41246e159ba095\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e4eb73bfc7871d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e7c5c29a8d4c9c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e8b671eb234e1a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3e9015941c4538f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3ea10834ec40de05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3eabfb5515cedea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3eb5308ce0797916\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3eb8aa2156e3682\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3ef3bc1cc2bb968d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3f3f7de5fc0c07d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3f5aa362e6d090cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3f5c7ac66a53b6f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3fa6f9c8bbbeae93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3fbd8ac259b93e57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3fc738c73a0b7970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"3fe34072993db992\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4007db66884dba9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"404a82e970f4d460\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"404e3c4dbafd40d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4052f397da41c723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"405c2808a38326ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4075a18a176c786a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"40805373c8abd999\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"408b17f5da356a23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"40cd07cbdb6adaed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"40f3041c021bb327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4119d6d87074f306\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41537665b408c9c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4158233a3e0ca5bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41705ec0da437134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4171d867bd6a31e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"418ce7232356e616\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4198eff1df6cb0f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41b4baa03e44356e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41b9384426bc25d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41d86c211292dfa8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41ece9f8bc079d55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"41fff3561c69aec1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4208f917700e9345\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"421ed2985f379f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4263f2e700e74293\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"42693ffbed77aa2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"42954c200550b72c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"429a6fb51e7ec4b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"42e9f4212c0e8086\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"42fe8129021b00a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4301ad4d4dd82807\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"430bf0c969cadbf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"432274d45c76de20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43254a33ce1d1ee0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4344ca1d0872ad49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4368435b20f055e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43925327dbdf4c92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43a07004a8d7b56e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43a19215a90f7c89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43a547f88b18cf8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43ba99fe31774613\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"43efd7a65c9cd4f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4408ad6ab9808a8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"441a72a7bcb9132f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4439acd255c0cbc6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"443b39b7827f16b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4458da06b0b6c0d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"445d5a8861a6e25d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"446d4a82f3b821d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4485cac4debaf73b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"448ab5f73e6724f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44a696c03406365f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44a959f8f488f1b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44ace7fa669a58c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44e4c3bf6e7b3b0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44f0b14bdb7234fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"44fe5c4adf233f85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"455ec7ada5f6e1ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45685b711cd26115\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4573696319875e36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4574cceec761acd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4574ed67fa636f89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4577f110d1174de9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45b4c8da73275277\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45b4d7dc6f03c549\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45b94d476c788f97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45c2d227dd3c783e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45e1e25e684b7fc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45e4ecb342c8229d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45ee1eddc927614\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45f3659f88c66c1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"45f8ba3f5523b415\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"462b618a79362074\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4647e71614dd99dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"464af475414e7ee7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"465a2a7c4f53d443\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"466f17e029022e39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"46737213a2cd6531\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4707297f9e10c056\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4717e2e336d5292d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"472f02aad963eba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"475d0fbbea99958f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"478eaf42bafe7aa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"47a0ca6e2473f9f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"480d4e684457b95a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4854e950bcbe2f36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"489b18a68639cde4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"48c7b1057a1529b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"48e3202eee31cd43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"48e43b4ac6d1fefc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"492bf595b8e38af3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4933446128bf2f73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"49382c3925a3b1a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"493c4bcc8d1f873\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4959a152ff568280\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"49697fc130a12a14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"498c05ee1901ada6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4990b536352bb141\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"49df73956f10bad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"49e3e3b418ce8989\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4a01125f7b024fc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4a1a9ef54e18f427\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4a3636322e106c93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4a70312366c3995d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4ab89e8b5abb1cf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4af5ba2b998b08f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4b01f3024849cde4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4b0b7b2123ae5f19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4b0d77f22c4d63d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4b5820e50dba6ba7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4b70194577c400e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4bb753f7e0398adc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4bea7b5d96e8bd31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4beb17ca7e982172\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4bfa527d9ba54344\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4bff8c60fec7d3c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4c190f0a9de37afe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4c1e71fa91d9abb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4c3765aa3b39dc4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4c6b378624b26ced\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4c6fec2ecaa738c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d042bc602d6d82c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d188bdf9e41934f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d3665aa69b9d8d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d5016c3cc9393d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d6ce50127c8e273\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d813f588f2d46e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d81759ec3abe9bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d8bebfda6a39974\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4d9b84de315a2998\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4daaf359fc119bcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4ddd86fb776de060\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4de280a6f35944cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4dff56f03c4a772\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e28148b50a1ba44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e2a0833acdc1e12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e3d87887e88f0cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e6811caec59a272\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e7d0fd9355f0310\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4e808a3cfe7947d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4eb741c5404f30f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4eeeb3552a5c2117\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4efe6be8cc0d1461\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f07a316a7e422d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f2a746991121bda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f2f2b092318269\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f341f759b3aa40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f7de9473358293d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4f811cb87d0d30fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fa6f398bd2bcac0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fadc17fa279f90c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fb413ddf9e373fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fb7522963555ffd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fda5de57781d42e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4fe30dec6c595b37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"4ff0140f9c718687\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5007394198f04f7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5018a2e4a9b2c470\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50199b815aa28680\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"504bdd1197a8b72e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5064637c8e97582f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50723d03242ad36a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50bc94ee4cb13b6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50c364b11383f5c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50dcd3bdf9e4c407\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"50e0fb8bbf1ef84e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"510d63799cfa6bfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"51409275d3016756\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"515393e6614a347e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"51684d72b9b9209a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5168af0c154ced98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"517d9777a087325b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"51a9cb6c93b8506c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"51dd811ad4254170\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"51e9544613cbedc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5220f59138528350\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52212ebcbd634c9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52845df3b0f9768c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"528475731c77ab38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"529f827c92861b68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52a702e76a1ba552\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52a7f5ffae839b8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52bf33a27dbce89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52bfc370207b48f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"52c94faf6c818c75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"530668a0566c5035\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"530be7132699c720\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53211a83ea1e5e7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5340cd1075ddd462\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5351d224cf80fd4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"535482679b5986d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53729b2bbbdab2e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5382ce20d6af96e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"538d13aac890a674\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5394026f4ac3a9f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53a3e7a173361080\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53d14ae80515bca8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53dd3858bdb53ec9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"53dfb7c6f5e86d06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"541456ce1bf8d45a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"542aa760d9adae39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"543fa071a2f97c42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54bd82c0873f533\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54d574ce0a81be7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54d63ed9abfca9c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54d70c203109e11b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54e1c893b07bf545\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"54e80481350b717a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"551d7e7aad8356af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"552ca91a00985619\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55322985791a10af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55518629a894127\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5552fca07be0772e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"555753c4919030d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"555f727d381145a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"556a3bc72ecb3ec8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"558c625a68f9951f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"558c81407ead73aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"559766514234b705\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55a0e2581677e979\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55a33f99113363e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55b16fe2af229458\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55bf123f86828c91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55c9183fe13b88c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55d160eb35ffeaf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55d79c481f9edea6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"55ef3b3a898c1a38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5618f7779a36b0c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"561fa2b90e460eb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"563b226b8be3af7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"565a7fe484b2127b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"567b46f77316e74b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"567e3e5b623a32c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"567f24583134d2f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5688cb0713ca1d05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"56890fd3b1398fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"56bd7c3ec5a716d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"570891f06419f970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5725b06f78d813e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"572c65535eb9ad10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"574f465f5a3c25a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5762e8209d2f90e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"57644b6d27cab819\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5788e5009faea998\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"57c05b14ebf69065\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"57d2a7a20157f466\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"57fab03f41d43f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"581748a1e398a43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58442233b952f468\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5888f51a91bf046e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"588d11f9bb8feaf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"589743a40c7940be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58aa1217293f8351\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58ba08a2c343e4e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58cc902b4624c637\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58ceda39bad3f289\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58d695c164cd38ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"58fba0d80d177944\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"592008737bb4a534\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"593a893dce75f4d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"596eb4dd74fb3fac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5995be187c261543\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"599fac28417263b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"59a60c5c76507699\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"59ab5ebf6965d0d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"59c74907631da8bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"59da26f2f2e09a3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"59e72b77a2e8e8ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5a37497baa148dcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5a3e0f95eaa878dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5a7e500eae4278e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ab2ecd63d11fdb8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ac2e57b5d06079b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ac93889bf74ccfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ae467c451a0f91c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5aea5fd7032ac27f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5af4731c6320f05f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5afd5fcff944b23f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b07de42b3239ded\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b1fd515f99730b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b30ff22362ca931\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b3c2ee124993606\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b6415f785701376\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b7517cefbbae0e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b7a91f9938f1550\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b8ec663dba143b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5b9683ffdddf1581\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ba4a75c39cb779b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5badfcac4f426011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5bfa2b7b0cb0c269\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5bfa5e4837153ee9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5c0da9929e5014fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5c25e2cb9e6b3446\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5c3a509e49c168f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5c83e1ceb3c0c17a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5c99f3d4bd71faa4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5cca97108fa1b8dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5cd442d50f476bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ce758866a054a89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5cfae5940e7fe5f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5d0a4c6f95d2d842\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5d226ba29facae9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5d2bd967dd9b275c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5d7e3e1e88819946\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5d83ca57c8c1fe2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5dac1b2e6480e76a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5dc510852265e9a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5dd90d26876d5e1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5df41df3f9b02e89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e0dafd4bb72d13b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e1d95f0a8807393\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e254a82c53628df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e47aa006e58ce09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e4985767d2cd3b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e49a0ff075bf2d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e5fdadb5e89e950\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e78e52597e47d0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e7d5422f4d2cd5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e8c35dfa007514f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5e9c5e35d6cb11f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ea1d67b9cb5463d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ea58ffa3a6ec0be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ea81da10344b013\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5eddfd2ecdfbd83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ee44238a61e673a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5ef992b09eab6b9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f0f93f042909c67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f15ef1ea34b32ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f2519aedc50b4f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f26d4d6535e6fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f385b3a85d0f469\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5f98bf5b342b1c83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5fcf04f40ba9a0d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"5fe412f99a940592\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6038299cc7c8f0d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"60391af07d952488\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"604371efc50e9d6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"605f81e25825fa8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"609fcdfa8b3ef26b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"60c82e96b3f0d9b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"610bd0532b73e790\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"611065f589447c38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6119bea4515dbf25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"61351cbb9fd0e37c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6182969ac5ac8f00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"61bba6053aa2fa5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"61c5222ee5c444eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"61ff70517d0b3ce8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"620325f5510a7ddb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6223c15fed501b34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"622be205e170d26f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6233b6398b843342\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"623c169b4d737aa9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6243061c7b4e7756\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"624474492dcf80fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"626343cda28eddd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"626374dde4d5ca20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"627a929efa880107\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"62ade820d60bffee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"62b118ceef7189db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"62b7f0874fdab1f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"62b8f076d6e2a1cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"62bffc8bd4f79c00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"631e34edf09a0dcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"63282fe4d59d3936\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"632eab1bd34e674d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"63703fc626b5aaca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6393fb02c9644748\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"63d9e7d42d760558\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"63f62cc7fdd92d67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"63f8ca1a2e947b3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64265eab31742e77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64385ad9b252d93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"643d6dc2e5b6083b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64514b2920e1bc51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6469a77b33e8b3e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64881ce46a3c8afc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64ab34dec19736b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64c95a875e1baa17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64dd5d157ad9f3f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"64f969bf5ceaa970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65078fc977c34d39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65789d477733b80b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6586ca720f45648\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6597b68adee9648c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65af45562103990b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65b00e2d852ed1d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65b5cdb1b449a4d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"65dac05f989b89fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6630dfbff0d1287f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"665ddd3d6d14d6be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6695a99754022134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6709d59172befbd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"670a7d2d332aeaa9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"672a885458344dec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6740b6b616857df2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"675804d0a5e6a6bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"677200baca2fda8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6774cad07395418a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"679655c8aabf711d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"679b82ff2fcb6f23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"67b62a7db764d7cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"67be0efbf159be18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"67d90701f222e89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"67e9b604727768e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"67f9da930b666136\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"680a35c7896b924a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6839624ba1c4a325\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"68aa8ae6d7b54e5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"68ca0d1dee6f9cdb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"68e94f40e550b98a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"69139ea386327bf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6924da8bf2c77c07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"692d4ebbffd2ab08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"694ad803559c229e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6956a8947a140136\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6960aa7a42009d91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"696e612869836e76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"69b850c79daf67d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"69f5f99a9a34d14f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a066adb26e032f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a1268d9081ee0a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a180fc203aab37d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a3283f6f35daf40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a74986f5703cbb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a871997f9d8a664\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a8f8a074069b20e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6a921199a495b4a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6aba69be8d6e4737\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6acaaceb54e75b84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6acc0f74fe663b63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6accc1c3e904ff84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6acf5384239873ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6aec950c5271577e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6aeedfe1fb959011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b0ef51cfe9bd2f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b18e6d9dd6c380e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b3777e990f53a06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b3b97707b53ad34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b3d2e03f6c38ac3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b4c0f189bc8fb91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b5eb75ab98a86fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b62c6a8813c8e14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6b6f8df3c39afd9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ba012a9a3a5d9eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6bc24a915e6c7591\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6bf0e3423b0195f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6bf0f3ca77158b9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c48f30c78f20a3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c4fb03fc4770476\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c5135435361c93a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c5545e4c403d115\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c632a5adab659a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c718c88187782fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c8f0cb6209beb22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6c97098c579282f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cad27ea5a417851\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cb11b3d8d7e86e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cb76317c7ec6279\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cc729302115d91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cce161c234e13a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6cce7801e43ba377\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ce1861afba4a454\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ce5c25ca9f2af87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6d3005974c0b1f11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6d37161b98d60239\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6d3c2ada3ecb3c31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6d7a83090bd9b6c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6db021a0578546ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6dc5dbf7b8c5fba7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6dce2dea8089144b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6dd6e784b4e73209\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6de1eab7165e8e98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6deedd6bcbe5152c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6dfd6187c662606a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e086384182f85fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e086fad9deb47cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e19d712716a2ed7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e2296ca6fb1efcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e317197332ea392\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e3bb658d99d65f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e61265e331398af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e648448ebfeec04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e87efd6d11acc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e8b25dd6d3eb549\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6e9a8546e51afa65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ea3d9f6ba04a875\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ec6e10cf57a7e48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ec90ec37cd1809b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6ef2c5731603bef5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6f352ce367c75bfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6f3e21ca46661cff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6f476e896e947ed1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6f53e045abd5272d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6f9178c9ef5108ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6fa6586700455571\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6fb38d37e2b88ea3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"6fd79d7947df5673\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"70072805f15018d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7014d4863c40e735\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"701cf5433703843a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"702686203514caa4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7029b5bcc94d79a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"702d63044943bc2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"703d2e76b86b0b69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7048a16857278391\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7056e492afeee39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"708b3e8ae93dbb92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"70a5574555d4f14c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"70b5b45fc577bb94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"70e0b49f2e3a997\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7100531693abbc0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7134425a9ccc0120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7140d74161751dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"71443272e4f3b390\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"71778cee822087c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"718bba4ecb124295\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7196c9775816306a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"71a8b20f6fce14a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"71a8e9ba16c8a693\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"71fd527993248805\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"723e0a8bb7ddf02f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72715f746ae3be7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72bd52974d18f83a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72d76f084aeceeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72dc4c30cb5027d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72f65999b7e4f8d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"72f7b806c6cf0b27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7323b4d922bb9181\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"73487b79638020d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7353dc01e13a3571\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"736e247f29d9e90f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7385907c013bef20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"73875e3fe3d6d1e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7394c0b03f56311a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"73d387190a6a0624\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7420e8d079a4bc43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"744d08e2a74ede50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"745c599ef52621ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"749efe753388ed02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"74b7ae2654b11fdd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7529da7a56b41e51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75362e87efd77f21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75409c7e2bbce83c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"757d235211342360\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75a84dc75a4f1a01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75b5a5f6e7a57896\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75cd7fcd8457d81d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75d3b2d9893e9e4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"75d74be05816b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"760164cab9ab554b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"760bb21203643383\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"761de9f263761c1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7639a09e1d064da4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7640d1745d99ebe7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76647adbb87eee9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76669e224a505ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7666b1f93d7b1ffb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7671e45b5112dbf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7677a6fad52ca08c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76792d0ac7264adb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"768bd48969261809\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76ada7ff9974ee97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76bfb7292b83a0fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76c80a81c70c35e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"76f4e97d4a697723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"773569a0b5ae9f94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7738992aebb2177a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"773a4406accd01e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"774ee2abaf8a9850\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77577d49d709f4e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"776020e5e370f78d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"776a42d92324ad3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7775f73bea6cb204\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77929ce212e69734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77a27357d2793e94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77b3bb4442228e23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77b50de8f0668f7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77cb12700a7735b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"77eb57ac83b9b156\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78156a4ee063005f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"781c588af78db50d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"781d43755e94009c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7833e257bb8c6249\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"784c89fba64e141c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"784f333fdeb96541\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78657edc603c8c15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78afb02d07ee6bcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78e006d521d33952\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78e05cd9c243f3b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"78ff00ca064a79a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7914c3a5da27085e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"792f39731f433838\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7989567196f8abc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"79a563d7111b8949\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"79e6a792388ebb16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a006725cbd48618\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a01976b4d3832ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a33a38ecaff220f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a39ff2fb8959e33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a3fc70edab63203\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a4c1d3564421811\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a75cd9626e4209c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a85700bb3d5551d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a8cb18e28b7aab0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7a90dba9acda39b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7b14135cf33e350c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7b24a556c223571e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7b30b95d27dcb6ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7b3572034152d7a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7b71c704c082ff95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7bab0d45cea3ea3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7baf42381b912ed0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7bb00f851889865c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7bb63a1fe51e286c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7bdad2bb89d5344c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7be55ee772fcedfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7bf525f99a59bd7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7c2516a6947aef89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7c78bac1cf41a84a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7ca4af93830fd813\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7ca6059e8f2d4438\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7cbbfa580f1fa9de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7ccdbf2e3c524c1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d027a303d8bbcd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d04bc8392a6c2ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d09f30d5ccaa621\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d25ec2bc95617dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d5c5f36bdacb4fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d82c52b14c635cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d88ad7516341b32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d8ff5c575808cba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7d966b00e07db87c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7db7edcb69fb5c70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e01d1c277b1dd8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e19e2f3461def02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e1c6a233e73d902\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e21092741542d89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e3fc7602b8a02c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e50572b917bbe04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e62b3c1375c9f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e77a2596da181d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e783c3b8a5b9143\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e7e0322838f5c1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e83472a5608137e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e83a4c5cb65c89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e8ac0736ed7b4e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7e94b7b3b1b24273\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7ea6db35b272fe2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7ebe1c82a348b7ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7eec9be59dc4cd44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7f3376de8a3414c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7f36de392294bae1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7f463cb04c7c009f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7f71a5946d443a9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7f98c942b2e15d01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"7fe31c4ba688c350\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"801383c1c66c99b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"801ab872c3bffaa1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"802f5320020c2e4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8079476a28aef29b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"808289f188c6350a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"808ffe6116918827\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80935a21fd4fd25f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"809ad190a8cf6763\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80b878ff6542c62c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80be39d08dde7fc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80cf70de9e96bf99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80e7bac4bd8eedb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"80f0e06efbd884d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"810712550c5e57a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8128b1b08781cf6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"812d7a6e8844aba4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8140b3e7ef821e6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"818de22b22e9e242\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"819ff0a184877e6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"81ab13e789c9a7e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"81e2606c1ab3182a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"81e4e2405b90473\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"81ed0805253142fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"820d566fc325fc19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"820f02069599e431\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82217a3fa2ebe98f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"822c3b0fdfc03df2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8250d82526944888\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8269b69b7494f6b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"827f973de82a4cd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8281a2f9ecff2afd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82a2b3cd6c83e824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82a5d33ec34a6a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82b669352fc5c931\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82b745e0ea89c55b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82d63d8410af93c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82f16538afa33915\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82f1acc89486bb28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"82f61017643f5da8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83074c2b896db595\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8318ae8996d14412\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"831adf6ba43bfd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"834e364fabfb6552\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"836eeda7010afd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8386318ddda31abc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83a2e1e97f5aaa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83b2eea590149cbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83b65f7bda07a4b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83d9f81221b6b8eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"83f7e32bf6e13b87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"840c66dc71a3da8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"840cbe768ada4076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"841324d186348f18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8429a69ef07505e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84770f84e0a91f0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84a6cb0286c9231e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84a84b6f05e123\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84bc6b14daa25e4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84c372ec596bcdcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"84c94a3c4686ef40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8502fe0059de4ac5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"850e3e36192e739\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"851b90f81157b865\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"853ceff5799787db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"85641a6997f43824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"85971daa3f216ccc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"85ab0ce7c8a1bb6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"85d5c2feac6708f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"85e77148d91df1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"860681a5e9f66f2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"862859e1027d9938\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"863b166fde20209f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"863e20706403ce81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"866678f303499737\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"867162abab34034d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"86ad5085aeb5a2e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"86d1ec7539b4c515\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"86d94acde9088637\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87053200052eb636\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"872c3d6569be04e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"875f4d287d1bdcfd\",\n   \"type\": \"ownership-by-file-overlap\",\n   \"metadata\": {\n    \"files\": [\n     \"/usr/lib64/libpython3.6m.so.1.0\"\n    ]\n   }\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"876a327633140871\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"876d959234120dba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"876e0f5c90ce838d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87713f44b463ee71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87730d7df5a2986f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8789ca1a55082610\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87c94a3d01b7e309\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87e16cae87acd3f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87e6ef9f3e2eb56c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"87f36e87570dcffa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"880fbcd7d75f6ae1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8816526e98a8569a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8854b20d70d8f64f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"885c3df249db7d51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"889cf424762d3f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"88b612d28ec7db48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"88b9c134acb52a7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"88b9de192ac61511\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"88be500046d34c12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"88d856e3f70752ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8905beafa20da2ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"892ab3bceae5d7af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"892eaf316530f992\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"89866b64a2cf5364\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"89a169c42e43a05b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"89be73d957c6e675\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"89dcf5f36d264f21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"89fa937faac72855\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a0f41fdd2ae8197\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a1f8b436989afa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a2ec35f5d90e80a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a2f6716534bd500\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a3dd96d094f46d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a5a3f53f3ba050c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8a84c53d6784e5ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8aa691697a9db7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8aa7528e36a3af9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8abcd74ffa92387e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b06de8bccb7d4a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b48b05f45c85857\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b4c6a228791af71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b7895e3e54a5535\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b7d290f7aba5619\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b82dde09f92a442\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b84c28d38a88864\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b9a0f0fa0a435e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8b9ad7edb92c02e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8baa1b9f740155a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8bc726cd930363bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8bcbb081586ef683\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8bcc56e6a90bd368\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8bd8f7cd638a6d66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8bf501d49b61f431\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8c62c5ab3bac9037\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8c7a1e968142ca57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8c9d486b4008cab7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d06524c5a6866f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d19013b2d4f0de7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d36d9f5cf054a44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d52ed44785bcee3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d542e9a59252d12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8d9ec9bade6c9a07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8db0eec91b854d4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8de8629a15588202\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8decb786e950433f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e0d23217054078\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e1fda739b0686de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e259aa16332b673\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e4cb5844b0536ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e9982723963142f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8e9d4774e58b3c1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ea39712e2e291e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ea4475f61eb1c96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ed0d9bd110d9789\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ed1cce0a57a9729\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8eda7e0dd1a35eeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ef8ac6ae602916e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f33618f3dd960a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f43b79fa6bd8fe6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f5db9e261136449\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f69e33863868a6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f82dbc9ad772694\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8f9ab42475a830c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8fae355790a0fce5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8fd7eb61fe05cc3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ffb5aaf61a6c024\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"8ffefcd528eefc94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"900f609f5979ea80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"90136afdcbd109c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"903181b5c80708d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9088fb5f36c2beb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"90a0fc71cdd87241\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"90c2bf7dc9d2f373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"90ca98365bb443d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"90e671aafe835e9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"910152165c2a489f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"910fdcab8a91472d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9126d8495e3f374d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"913669b2f9013648\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9162506d9b79ec7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"91b6b626cd58071c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"91bcb565dd9cf297\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"922d251eaea981c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"923f6fbc3139f6ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92449d877e97dc22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9249c42cfd262244\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9253610b135f8ae3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9264207cd33e767f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"926a602fd796d534\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"928ced9aed65e559\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92aaa6b4bc40177\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92aecefc39a8168\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92bb0e53f399779f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92bed41131d59cb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92da80dde34dbdc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92db61036a11038a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"92fff9d88a9a7a20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93124ddb16c9d8ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"931ce04df6429c39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"931e1de986a05ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93204713a83cc339\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9352d78a18837e89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93ad9458219d1e1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93d5067d60f5310\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93e3ce967c36dd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"93ef83b816c8add0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9415818c6a1fdac4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"942ae52c97c2be7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9446e16bec72a8d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"946915b1281f11e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"946adbef33a50036\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"947ffb18b89b927c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9491aafa611abf9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"949c963ebea5009b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"949d5fa26e4f5e16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"94bda22bff545485\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"94db8b97c746e2a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"94e5133b7a63915d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"94e826ab5834cf63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"955231d5969f0261\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9558b751dc84a44a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"95b9460c0cced498\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"95d608fb6d1f5701\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"95d827aa8b8b66be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"95daaef27da3d925\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"95ea9f9ee992714e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9600b88aed5223e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"961c11de12238643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9628863389b70067\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"963ed701906fb98d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"965ad62c1e80e761\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"965fef3b059e3392\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9673ddc65bda3f51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"96b3384d37564ded\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"96d0b3ffc9edb7bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"970613e7a82e10ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9744a1cb8e716cd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"974e9a8ce4388194\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"977567c8954022d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"97781bceb0909015\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"977a57b0bf99f356\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"97862b142d595697\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9792be2f813a4f8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"97bef200fc5e122e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"97c2c7288882b7f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9803c954acca1160\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"980587f7c7788737\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9807dd58f7d45be3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"98126dd27f9ad242\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9820835f6020eb3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"985050ddd7b15c48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"98b7401c0d0fce07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"98d291fda584ed92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"98fd654761e8a30f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"991b274815620a43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"996ec0459b57f1b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9984284132b4d89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9986e76a97a08c69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9989ead10714ce50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"99ac448ea83c1cbf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"99e396666b175941\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"99ebffd644157347\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a11e8380b6646e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a1a36b98886f1bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a34e28a4c9434bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a3b02d0ee40d3e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a587e9de4888eaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a63e2ff724c88cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9a965b9a2261b6f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9acf8a842efe321e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ad231235bed6785\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9adc30b151bb3001\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ae857ce899fee25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9b2840d24fd461e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9b3458c307d4c4e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9b47b9644593b291\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9b5c82bf452ac497\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9b911bcffa00543d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ba24b0f12a384af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9bc4d76f281c55f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9bef3ae1b85379eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9c264ef3e42e1a37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9c33485fc4ad6cbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9c6339080a019636\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9caadd872ad637ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9cba094382facf9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9cc8042341886b0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9cce9edede837d2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9cd2d85aa0c3d97e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9cf95eff676f1958\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d0e2ec1fc1d5e4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d11e9a5bca2f51b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d2688f96bc836a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d381a841e87af4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d7da1b6023d9caa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d84ef690cd3c4a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9d8b2228d4c764bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9daa9b1f1b1f6c7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9dce4f4cd60c4fb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9dcfed811b4cdcfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9de80749f01d044\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9dffbb265314fe75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9e0942ef9b43ace3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9e1600dc9d41a39d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9e2dd7a01bb0116e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9e3e81ecf96c0de3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9e90c18c8e9898c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ea1fb7686b2af13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9eba3fdf884a882c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ec2a6cebec31fe5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ed33b380ec8d14e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ed94e18ed850f98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ee1ef0651f3c4f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9ef6e9f4f9b39daa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f0c02697fc0c5a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f25887d85d017a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f295525ef82dc25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f2b45d26e7c5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f392dc25607b711\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f4c013a8bab390\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f4c8583523ef137\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f4df39fecdc2a9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f731757c3bc94c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f84095cfedeefbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f878bbc77ef27e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f8da57fd1fdb8c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9f9acec49dd3bbcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9fc31d445b4f350e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"9fc9cbcebe49dd38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a00b8b2176b6b533\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a014d6342e4834bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a0150a90049380c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a030531bc3e77741\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a0401a74dab5137\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a050712f0097018c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a06262d31c3715eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a06a3d4dfb3ee09b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a073447be58f46c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a090459945f691ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a09a919fe14da8b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a0e4d551dc236c85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a0f6603af7cab1e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1360bfca359bb1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a13b3c790fdb2678\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1402cb88eb53fcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a15c145be41dc5ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a16eaf7e4db6ffe9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1719598f9dd5783\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a179282c26bd563c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a19a3cb60a3f5188\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1bca23a8e59fe82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1c042b7d83b21fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1ebba23f7a090bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a1f87c705d5c1847\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a245ac8b480df967\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a25571986c56ac9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a26ff8b43c873e25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a29d14fcd3cbf0c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a2f59a74141541b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a30918f7c3f88f21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a34b1161969cfc8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a357404a30e99c80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a36337f9c272e35a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a371309e2f15667e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a377bfc203ba2b1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a39414e4f2c9c50e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a3b4ee9027e37ea3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a405604db35f0798\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a419395d83ce7069\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a426e8d1971bcbaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a433035feb4d3881\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a438609f606da843\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a45d033236becd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a471e65edf04e878\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4727389afa865a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4892122c56f26f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a49e246778b2a09c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4b5724acb448b4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4bc77a4ea6f0a5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4e5c3e2cc743efe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a4f21efef9cc0e20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a50468561d9b1c11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5188d1b7a7abb52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a52c743787524051\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a52d0e6e12068f49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a54ae192fd54e583\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a55f96a4b9e71098\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a56e7e5a755bbdd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a573aba00f397454\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5a05c27ff98a65f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5acf0316ecaad35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5be0ec783a04104\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5c36a791fbdc8f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5c8f1460abfa1f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5ce7f531b661765\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a5feef07774faec8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6005f6de9df8581\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6109c01d494ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a61ea28c9064662e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6bbf0c696cc36c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6c263763c188040\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6ce6ec922c2be02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a6e01df6a89786fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a7020b5deeb9ca17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a75e802d5670448d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a78d367a39e4d66c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a7b971af4fa0290d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a7cc0e6578abc7b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a800591c5dbe7e69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a840197f39b0f9bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8413bca187ee021\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8514e63adb3f365\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a85c61cdb13c57ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a85c89c8c0c6f806\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a86b6b4a696d985\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a86c79ff6b7ad980\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a86f68a1f31da533\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a870babdcef45c9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8c603176f05ee93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8e10333fbadbcd9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8e985546b72062f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8ebdfef3558ab31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a8f2472a03ab539f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a916186428038f12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a919970545f68df8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a92e1cc3bce2d517\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a98a8b69883d1f52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a98b06a4fcdd3284\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a9b5f228f2e0ba04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a9d4d5c87fffd687\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"a9ee789cb9f1f038\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa0dfccd9aba0fca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa1422acec4cdb7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa29663ed51c9629\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa463e7c8ac11ec3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa5ddd37eb30f30d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa727a17f8b7dfa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aa7efa2ac11f2dab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aab5c9ea3c0e8f68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aac3b9decbc49a5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aad785060f2bbba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aaf1475c4cb9f42f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab04b37fef78496d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab0ad49051519086\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab1c7047ee8131e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab29f3a728c0d01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab2ade9725821ac2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab5bb3d3b1c9666e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab89aa3c8013be19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab96764cd7fb006c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ab9ac83c7bce18d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abb0831ad7ba7083\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abc8a51d675e4d3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abcc2954d5096869\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abcffad9f29296c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abd5002d8c7b42a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abd774d7811b76aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"abdf3a824cb12779\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ac06f4e4658d4dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ac29338a8b1eae62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ac30f8210f73c57c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ac3db2a6000d61b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"acc926965b8ce190\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"acc9420275af88f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"acce0241cebba82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"acd2737ae1db401a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ad49950ac5aaf736\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ad9384c52e4eac12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ada8b4d6ce3e67bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"adcedd62905858a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"add9f50ecbe54ea3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"adece6966191570d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae1641912cfac3eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae205515de63d4ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae3a28c4a82b4a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae4c786818cf4c84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae6192732a5a7f61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae918bca1651bd37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ae9cb4309b45a36c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aec880ee728a0ea6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aedf09d1dde16bfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"aee396fb673e1c9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af03df82977083a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af113f3a5251a39e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af20df3d02c7e37f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af2d08846f181566\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af2e40f02dc5deba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af5ce30dbe1af05e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af6ce186f891c3ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af757096ee81e87c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af9b6e5d56fb955c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"af9d6a4a076b10c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"afb828d970265c04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"afc9c6a877880ceb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"affb98f8e790aa20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b02b140a832f35f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b03d8d6a1c97e9f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b04ece388c7925\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b057402a997d990c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b06873f164c7f9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b0837de4e9022625\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b08625437b39714\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b087850a6d046076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b09b3988f5a3e840\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b09b8995836eda92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b0d64ef17c1862af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b0e76aa40dcc240c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b0e9bb245d9651c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b100fee96611b2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1032f4a1c0546fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b12847e553d46691\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b143224be29c28d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b144083547d9172\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b170132af738ba99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b172a03e53e326f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b17cd6b03917e38a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b17d868d015c1e40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b18c8b9b9f2c58b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b190059d20b8c662\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b195f7cf09602505\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b19a5a47e41b70cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1a4032d377ed388\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1a44b5d2b35b60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1bf276eb4dbd7ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1c0d073d4843b46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1ea02cab890c43d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b1f7a646518ae4ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b21d513dde25624d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b236c5535baeaff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b24638f7c615925e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b2558b5e71498cbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b26c6cc4df79f64c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b2c092c7bb8b5a02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b2c5a0c4debb2711\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b2d8f867e33dca12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b2ea47385a6ca83b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b3338d25ad89883e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b337f6e2bb88ad55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b33e77bdda36ab85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b33efbbf067bde01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b3578e0dc5c27981\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b35de4c69d797a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b3a69b8c5f083425\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b3d0b7eeee9da3b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b40a5fc000263016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b4469dc35bed3346\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b48c6e7d50de6873\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b4ac4c582d1a4a0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b4e966c34c62d10a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b4fea87bdafeff20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b4ffee1bfc5c090c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b510f9e72ede818a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5145d38bafbca44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5275869b9a40192\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5396ab60deb853f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b543cc7fee2c2af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b557f642a894a55a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b573627b6e8012f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5a32630f2916095\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5d3645d17be98ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5e07b5a1241b01b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b5fc5544b79c5208\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b61da5532e88e715\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b64900acda2d6a7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b64d037aabd99f2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b67db5fe1307bb3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b689d89a01dc9a88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6ae2101ef852205\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6b71c04e05a7b2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6c3e0ceecdced34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6f7829402bc616f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6f9d199251acbf5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b6fbb8af361d309a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b71e272a2d43fdd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b7626845411ab4c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b77fbcb6bc2101ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b78cec400d15b651\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b78f660af001704a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b7d9b69412bd81ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b7e9542d2e74ecf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b80357c174efbc03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b809489d6ff12570\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b81f084f5a3f024a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b82d7276c33cda1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b8443b63838a9ea8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b88451d03bc947f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b88b174bd2fe07f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b88b926531136bef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b8994fa5674eed75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b89fd0f7ea5e2a57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b8a08105317bdba7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b947f60c03b25a2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b949f548180304f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b94d38a5be56d279\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b957063bf15dead2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b95f926e63a6e0fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b9836cadde56e48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b9951269b70f5d60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b99b382f03764426\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b99ba53a33affed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b9b352a44ad68400\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b9b852f23c125c13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"b9d6f95c4685bb9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba307ac9555cea6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba40f67a69bae8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba5ff94b37b947d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba7ee5f337ddc023\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba96b92d4626f34a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ba99410aa29962a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"baab62f29fad1fbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bab6646ed66ac578\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bae73e4b4ef207ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bb33709ff8d6efaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bb55f05722fa2bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bb85968ee1cb1335\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bb9e52dd0451b2f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bbbdda044c7f54a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bbd8943058133e60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bbe906252d12a4e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bbf69bd3667e10ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bc06303b97b3fe0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bc066f7fefa31c28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bc278ac9759d735a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bc43fdb53c1a0294\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bc94b108048ef0fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bcb84174cc00726d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bccc884bf487c17d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bcd2a0ce3b86cee1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bce62ac5c28969af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bcf79f90a249a1cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd071ff1169db053\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd0b4294f13008db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd21b3bc05293143\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd2ea5d48642afd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd340c8f12655816\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd4f7add338539b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd53874147ff3ed3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd596ee4d2688e13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd623e8f0890c03d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd800e599451abcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bd8dd470861957d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bda13f2eb9da217c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bdca1430673895d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"be2a152a23ad99c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"be7aaeb5b19c0244\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"beaeb2e32405ac37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bec6d4b897535e68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf02a75ae0472f87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf1b9f8ef30aa1d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf1bdbe9fd7d486e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf22d8acde485683\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf5a23d423fcf84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf6ea4d36a72ac9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf756eb56bf94153\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf7d880da3c958a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf8d99948e51cfac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bf926f8a93a31f36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bfb63e0f9d6d96a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bfc0dee57d884072\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bfebe84476d63a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"bffc6d77c9569283\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c00b1457174e9b27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c00ee7c16290a283\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c01580f29aaccddc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c04decb96492bb61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c084ef235c93631d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c0d1809cc322d8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c0d6330c4a5954f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c10ba03f8d2f35b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c13b05052447f37c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c17b90393bd7529c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c190374bc2f78aa1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1a3f4901698e151\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1aa455fb85cf130\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1b5efc6fb1e439b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1d85774964bac18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1e9e7975cff0922\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c1fe5203f7c67aaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2036531db018028\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c22818fec4380dcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c23314007b0584ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c25ceac6f6b730a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c26911e4416a068\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c299a871a8710f66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2bb34f943fbf133\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2c4a3dfb1fcb07b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2c7dec22024aacd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2c939bb3a3ac81c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c2dbff82495f5c68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c30cc05095c60dca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c326e379159b997c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c34955b5a286a3e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3615197f25a8082\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c373088e038f833a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c37cb61eb07f1a74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c37d98fc363f7c18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3896c1e9eea6e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3ad0910380e110\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3b15fa271e77732\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3b6564dca80419\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c3e63ba06c3b9d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c4288f9525ca7050\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c43466c3fc3ffd4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c44881b73e460067\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c47e7b5dc10436bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c49ba2d2c62b36bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c4aca1c67de08123\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c4b200274d91d69b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c4be9394e821555e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c4de22314dc8e28b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c511ee6700d1d8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c51b8c358a05fbc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c51c5159ac4d2385\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c51f08895fc5ab55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c52bae2f79187504\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c533e6e1dba70675\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c570e0a4bfc2edb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c57afd29a1109626\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5805add3c5abf99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5894a94989df4f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5918f421f1855f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c59b8e35f436fee3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5ad24df0a51b040\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5c7f50ebf9a4c7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c5eb8a8fb61bdb2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c61e9b66002bd11f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c624b549beb6ec69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c62a47104a6eb1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c64d36b27523be01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6543d77da57259e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6bb3791267adaee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6c0e42d4d9049cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6c2808f9e162dd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6c88108f365340e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6e2561880e45af4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6e67f77b3431f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c6e7f2621e2264b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c75ddf6810231d75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c76e41f3aad2372e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c777d9675c64e536\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c77b134d3e77620d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c78f2cb58bcf11a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c7f600064d8e16b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c7f81d09c6aae6c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c801c2e1b5a1ff9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c81478275ac0a950\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c83fa4f28c416594\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c84794d6b67a762d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c86ded43fc6de31b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c89db81e6b034f5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8a97d7283411bd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8a9cf852ffc2792\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8b0e96b3ebe6a43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8b5c464a135f61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8d2ad9e87de0e7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8e25b615110eafd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8e861bac72304f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8ec234e575fe9ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8ecc1336be7c418\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8f207978f789a26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c8feae66ce491ddf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c91ba90c6f293bef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c92e43c1cc3d430f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c93b5871042fadd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9542cf3a5648a0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9579d426ab63187\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c96be19e4c0d0eab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c991f5fc948cc5ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9ae8f57cb482131\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9c7e02d5b005dfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9d5624a3d60e259\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9e9dada2b735e60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"c9fc24e7f107a5a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca0085f78373cdd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca01dd4eadb63968\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca2e26a88891a914\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca39f6e1a3d037a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca59b96deb9ba3bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca7cb8832bb21f7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca836da10ce40afd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ca8964f319e2ce85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cac9efe9e6cc0134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cad716fc05a8aabb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cad8e5dc717ac80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cadd83c4feaaa169\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb2bcb62c4740d9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb53c6250f34372b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb5433f8a6fbb82e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb6d9cce885694a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb754b92f959bc9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb7767cac3197143\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb80119220b8bf85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cb9abf99c7780fa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cbd78b8b92dfe5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cbeaabbebe08487f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cbee345bdc18987d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cbfd74dd1cae36d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc10bc29bcb24d24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc638797b36ab4aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc8084d273c1bc3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc83f16073e74836\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc87e4bbb7329502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc8cdbd04477cb47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc9312dabd7f7698\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cc9626cb7487853f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ccafd6e05dd5b02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cccdd0cfc89f1eb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ccdb6ac66aecae87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ccf0e77c4aa0445c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ccf43eb8241090ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd14e2b0d2cce745\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd16b778913020a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd3b5b3ca4b1a2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd3c19362e1e9b12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd4f5db625e1f527\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cd924b685791d625\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cdb0a094c2db3ce6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cdf4db84d338ba3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce1214a7d868f1ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce24959f627b4813\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce46ebe4e9063d7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce4f64f72be09d49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce5331c24339ca69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ce76254b7c5079b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cea2a9b49c6c0b48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ceaa325586f7d117\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ceb3cd4bd1220235\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cec4015c6480ec99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ced2176e68576255\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ceeacf05097388a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cf4c3e0dccdcace4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cf68fb42b525ce04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cfb1c6c4ed5fe710\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cfbea4430677fd8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cfdb5b1f8d4c9239\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"cff12135eedba513\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d002fa746a8d100c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d01fff875a1c18f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d06970dcc20e9975\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d0918d797e7a9c6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d0b44025e6d5fe9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d0c2684963dc19fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d10fc4a086dcb067\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d11c8acb3bde0108\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d129040ecb48db63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d157370fd07616c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d16dbadaa68aa134\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d16dda5fdfd3309a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d179a58d1b132bc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d1af9504926e690f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d1fb3282e7db4383\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d211c757b8217691\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d21db85c2abb630c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d22160dd4c8030e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d23a5a8d5e14bc3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d23d0a176a5dd435\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d24b17e1746d1e81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d261e1b3ad6613b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2620c971fcea947\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d28605fef1cd39c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d29352305315d24e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2a43dab9df209d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2b477dd01373519\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2b808777e948365\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2cac4e17a03bf3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2ce5f6ccd220a74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2d55445802a02af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d2ee12b5e42dcd22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d311972e3ae54654\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d3179105573de10c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d31c88c5afc00c81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d322f176c04f256\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d34daa7951ea3bf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d35dbb212a60da33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d36085586dee6f40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d3cc457dd042cda6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d3e097f911c23de1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d3ebc4dcb1673032\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d3f0cde8d3c7085d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d401c6f3c66bfddf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d409ea1c8f543b47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d40b6f0c7b5bc563\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d40fb9a36ac7ce2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4176ccc81745272\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d417c67e65cba668\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d41dee533e5dbff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d449994447dfc85a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4671709382246c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4691b4037d0a12d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4bf2f22687c92de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4bfbefcb93afa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d4de43e77217738f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d51007fd8ee6a905\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d51099cd2f0ab145\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d51279c990393803\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d53072b4d86bfd1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d56ece8ed1cd06ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d583d6aeaa3b8981\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d5a4bedde6ff7bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d5ade0ffb01f9005\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d5c97e49975237e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d5f4e299939e96c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d610b617de318a18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d6305a35ac9c6629\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d65d02f01b8b56c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d661706f7c1cdec7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d66e74dc88e9e7f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d695b781dc42a771\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d6b0ef57a3b1dff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d6b5bacf9f68b535\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d6eb60bc18866452\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d70c594972bb8236\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d716cc378758d710\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d72ac3f7e1c2e76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d72c0349b01e1f7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d754c1b65e1f7649\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d75b17842d0481fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d77db2fe564c0423\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d78016036aa8b1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d7eb24d404aa084a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d7f230c4cdb7b14e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d82cfdb7d6afaedd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d866e1c9274a3ce9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d87bb9c4ff66eb47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d87da10b5a6a9b5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d88b644597271ace\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d8df209b0e704359\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d917d61ebdb0d07d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d91c1bcadb978efc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d923a50ccecbfa13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d94f9567cfea1338\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d955d5f29a4219ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d959efbf25fd765f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d98734ab91c87e57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d99e9f90e952cc46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9b6184cd153343c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9bb711321686ad2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9c7fa3a422459e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9e058ca513154e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9f2bca1f6069e0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"d9f4c8f4e820df60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da24f2979f37fa97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da2d394400ec4e27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da314711f358f2b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da432a8992d6a5be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da476217023ba484\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da626e504da1297\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da7f6beea553e0d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da8c119213b7425d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da93e9d6100ed2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"da9628f7edadef54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"daaf8536f4377967\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dad7c207ad46c5e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dadac53d65d23791\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dadf08c476295684\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"daec2cbb2101e97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"db0a99d247749a4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"db4790301f6d21e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"db5d86479384e4ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"db8be0e6e7793e98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"db8da3c5e7b75c29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dba5bf548f36554a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dbc04838f73f7c11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dbc34055b974496b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dbc6bd3a6c6fa5e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc288b9922ccef97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc2bd13aa0d71d97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc2dc60999fe9781\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc44ee584378a72a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc5a3848e6a47e9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dc8885ca6f4cf112\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dcb81542d2417fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dcbd37ad714b1d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dcc0b03af781bb68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dcdc2fcd350d1cab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd24902bbbefe4a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd504c31cef96f39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd53d2acb1dcaed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd61194b31ea2cbf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd72438f93f594b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dd779eff79684ef2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ddbbe353d2589c48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ddc1aa2c01be6d46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ddc6ff64f222bcf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ddcf2a532f7080ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ddd9cfea78144555\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dddda75cfe206db3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dde1bccd4dc77102\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"de26f23dabadca56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"de47a5caa601174e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"de811718eabea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"de9bcf5913707c8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dea32c324b31fcb4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"deac7d789750c56a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"debbb37784bd8b40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dec902402ea6efe4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"def0c8c2d8b07d84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"df1ec0b275ef8c7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"df212ecfeef6ea29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"df3e6ef6c839003c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dfa38f118f7d16ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dfbe14cd67dc353e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dfe351cc407760b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dfeb77dbcd3dc585\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"dffcabbdaa0a0030\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e016fb580ebeb094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e017b40b9111d209\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e01e15a830aa79e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e067f26a5a3a52ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e078bb236f0fc75e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e07dce9394d4f422\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e095f2e60ca2826c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e0b7d85369132e96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e0c2de2528bccec2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e0d0305f427d487e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e0e0548fe4e9f018\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e0e219a84893cdaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1052d5a4a98f1cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e11b7fdfbe5bc279\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e14257d71a19dbaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e15ae5626deba361\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1860eab10847abb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e199bf5adc62e618\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e19ee4a8f99e79ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1abf1585636938\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1c6235d520d0959\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1e7011506548a8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e1f8d1a8f1fd714\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e22a722619bc9fa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e2312889e7110115\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e2839111f2e69c06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e297577a3e458298\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e2cbcda7cea473ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e2eb92438a814914\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3140d25763857bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e33c0b2fcb0eed46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3459fa417292983\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e38b85b8a23ccaa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e39df7da0448fdce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3afa3d435989237\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3b4624db6749e00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3b828fbc5f59938\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3eddf83783bd307\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3ee740d3cfa14ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3f2080b16bb99ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e3fd6d4a469e8e70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e411d5e08be78472\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e41a1ab6e5acf7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4236293832bc016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e43c7feb1be47f47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e454b14b9f895a73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e468efa37ac7f9ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e46aa588b39fe36d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4895cbe5c80f4e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e492e016dc6c6306\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4b5ac17ee3a394b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4bacf04235cbca7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4cd308e439c4883\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4d21be5a933aa72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e4fc4df4c7ea02ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e5014a6772545900\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e51b429b6a9031d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e53a2b6bef8ff397\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e576f2252d2dfa8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e577a8f56d11ceeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e580bfcccb861e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e59791c2acc561f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e59d766c4f87fe1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e5cf7c99cf64228b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e5ea69c669f11b01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e5eb067744a221d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e5ee9d05b4e40dee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e60ab9d41d8111de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e60b7a0983ff1ba8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e60e45923a7a257b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e62cea29d7b89dd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e63128c71b254eca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e644c573d5cc052c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e6a1cde6a668721d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e6c42566f1a09422\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e6ddbe2118aa6715\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e70db9e683ceb989\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e722af786477840a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e7308f3afed21901\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e77fca81d59a0e86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e7808ef85f3154ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e780ec959d8bce8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e79d23b6fd151576\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e7f4914cb9ce184e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e82193a279eed5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e826f575a8aaaf7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e85c48d50dbcbb2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e87451a30229dfd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e88756dec60f60a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e88bbfb5375e13de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e88d30d021bf1cac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e8953a578cd7cc73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e8b77b738f995888\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e91da8a04448b2f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9288b6a0dbb6987\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e93e401ae6f9f51a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e93ed7e3a28ad197\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9487d3adfe48573\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e96fff547815965e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9a1065dfba59533\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9c2e4681ec72860\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9c91fa006d865b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9dd492330df5f2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9ed0ceb572802a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"e9f0c8e06eb2cc18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ea0e06fd0c0189bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ea0f5616f5180a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ea2dc058dd9463da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ea7bdbe50766a648\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ea87ca52248ff4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eac5d87f7bff2735\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eafcb5dbe86239e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eaff96e83c171e04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb122b43bdd506a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb2c8d7d08d22a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb47081ce133e38f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb495d995034db28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb8bb491de0f9b69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eb9e0e38d11fb9cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ebbcff8b2815505\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ec1f952c176a533f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ec6d32608b7a2e0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ec9f7a597c86a208\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ecbcfa011661a4b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eccc980331ee8438\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ece18cc431180b90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ece51664ab52283c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ecfd32d3a75d66ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed0efb3e156baa41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed179f629560fcf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed28ba5fccdd1472\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed2c5a258619a8d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed36915cd8ea08da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed6a9546d84b7f68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ed8429b001787fc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eda5d2580eb39d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"edb1703387b11104\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eddb2a424804483d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"edfa8361c28c1bd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee049837fd88d7e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee2342f66ee07f7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee501412823f9988\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee6ad2286c602056\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee8fe86c630dfc0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ee99aa0879d00bd6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eea2e977f2c52248\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"eef9be02f398d6fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ef36c2ac7d6794a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ef5351c94f659629\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ef5f885bc7597fed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ef6f7b61099bf9e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ef84d1241a645ccb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"efb756e97510e273\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"efc4bb77e90a51ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"efdb3e0a0df180b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f00ec99949659535\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f014ecb506e47728\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f01fd4b7733a805f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f02f2aa5c7728c8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f03f8601d15105d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0654edebc15b339\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0736b6524358bdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f08d0ae4ff8c80f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f08eae0879d1d17b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0962e5130c1f51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0a5b880ca539dbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0e106ad9cef0c64\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f0f380d63b9ce354\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f12b9e918d9cb14a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f13fbf84ce984fcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f1506d0cb75e8965\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f1901de605d6703f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f1c9257d35ff7a1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f1d37c33ac1cb4b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f1ded5747d2997fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f236d44780bc6016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f262a02d3f29e01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2805c9c13dd78ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f297c839c7b0bc4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2af6276db26b2af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2b45ac812aa1014\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2c4986959370467\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2d3a19e1797c264\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2d52d65d008f541\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f2e58d2f66af1665\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f31e4cd1369b164e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f320b40fec5dc25f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f32a62ef1cdda5e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f32df71076d43c84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f34f3c94e2e9798f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f35ffe233f45c512\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f391595d924e5559\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f3b666a45402c60f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f3c7e1badd82bb7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f3d663002fbea48b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f44db3786d452d4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f4759720c260be07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f4850facd5428882\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f488b724ebd695c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f48aa3c0bd03a738\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f4b2cbf570da7506\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f4b44e223506c44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f51e037d62449050\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f51e7a72b86c490a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f529315c960d9b9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f56216d63867477a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f56a8de8ed2bba15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f5718889b801253e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f573c4a8e1d82026\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f589f4e6361c28b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f5bf3933cfb84c7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f5c8e7cfd93bd10b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f5eab26173ccfd5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f5f9217fc022289c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f6119c6a992c02fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f61dea7fa3e70e40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f62372e1f90fa98c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f63b1aea87367f80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f6517c5b030937fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f686b8901eaa17fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f6a5b42a6246b082\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f6bfa3aabcddae5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f71c6d8c62188aa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f7297661dd539838\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f779fcf59d7d65f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f78cee014f3dca44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f7bbee90022a180\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f7f230cc974e147a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f7feffafdd5df988\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f815f2a9c29afd18\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f82183379a494e8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f8398831475278e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f8d11bc9a860299d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f8f86364106e2b2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f93877e3fa3cde42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f93e1804adbd3d50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f947a3ec3d9e724a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f94a023f6cdefb11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9515ea8846066c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f971be08c42b730d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f98a485eeb25b4bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f98af113cde08bd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9adb305a9649c8d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9c8edc98529a494\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9ca33dd96c1866\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9da1d9de26b7db5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"f9fa0f6c87e07844\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fa051a8ec5966034\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fa10105f9e45ba90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fa4e97173b656c2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fa6f6b56a0565271\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fa729a7df6172189\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fad14ecc1b7d5c87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"faf7fdbb13d380d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fafce35d6a34e919\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb054193a9b1d25b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb2fc43ca33b8070\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb36c4bd3a7d7765\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb3c289f6df368ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb518618f3a5f9bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb626900ad5ca2a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb832fcb2d53f9b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb85a74420280dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb85b0697906759d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fb938080c18fabf8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fba265bd9889939c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbab13d7a8b06c51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbb308b8958ab481\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbb65c470cbd5433\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbbbb589fb486bfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbd25614183bf4cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fbe6588a48b05d51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc016e4cfdfcb250\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc321b2587f798d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc3877c29886a635\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc455e99d0f38b93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc69a06051c442ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc6a59ebb572eadf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fc73a334ae78285\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fcb4b9679947b06b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fce854273b41cefb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fcf749aba4466908\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fcfcd2608a389255\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fcfe533733a7b356\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd2f7e6106a3e96d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd35356ef332c14b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd57818516bdc701\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd57e2b4deabb606\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd8e87ac58634ad7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fd91f4f3e443b057\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fdaa274592f33018\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe016e5d9b91c893\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe095a6e3660584c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe20ebb05dddbb5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe4aa0e192d7cf7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe63da81bacd608c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fe7485113302f223\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fead73e77c09bcdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"feb3756e2c265216\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fed5c25016da621\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fed9fc6470be440f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fee5a99a87b96a07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ff3775275403ef5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ff43a88fa9d4cfec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ff58dc78ae0eec59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ff9156b052edb8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ffc98173b82c6fd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ffd4f52a683fe596\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ffd8ba5ef96f3934\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ffe5ef5f0067b40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"ffec5cea7e4ac65d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9caacc40c169689b\",\n   \"child\": \"fff4f91f7a9d0f14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"237caef3c9c08b85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"30e2df54e8229b45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"3fbeeb72b91dbeeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"5f264c3ff1104d06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"671fb98c603236d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"748226b9ac3e0e40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"7e38a390e1fef9fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"8d3d12fb6d00aa44\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"d9ab44be1b926cef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9cc65cf602e326fe\",\n   \"child\": \"f7d33b2c3323aeb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9dd17366558ef500\",\n   \"child\": \"332e54562c4894d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9dd17366558ef500\",\n   \"child\": \"56b452af91ca5eb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9f2b519754ba783a\",\n   \"child\": \"617054de9b182683\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9f2b519754ba783a\",\n   \"child\": \"e17a7f2a1a5aa035\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"9f2b519754ba783a\",\n   \"child\": \"e9a401aad1fa2fc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a67f791f08fa8ff3\",\n   \"child\": \"a5c29da054fa223c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a67f791f08fa8ff3\",\n   \"child\": \"b21c9d8a8ad39735\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"18292f81524d6f11\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"24f699de38f8133\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"4fc6266403bf6383\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"71cda031e819b88d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"792ce5314c3c8464\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"8d258cff7f84e115\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"8e4917055eca242b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"98c1d9225d26b502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"9ae963c70974a434\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"9b10d55c244dc4a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"9f1a3b8b6b165af9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"afea235a4b6322b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"bb198665ebe168f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"c4ad685333e80b20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a6c75679d548e381\",\n   \"child\": \"cbcf5572a8ecfe38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a81087f999058d2f\",\n   \"child\": \"8e15389023a50531\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"1163daa722c140ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"12c96d10ce044e0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"1363e1050d8e2ea0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"1be7f99ef21cedc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"261621f184732f5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"2947ea62990a2bfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"394edc589ba51bda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"49bcdc745ec7c584\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"50f8bee23c6bba9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"50fce5107e442226\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"5807ee77ed1f2e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"6e88e887c58d5015\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"767eec67474bc1ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"8b58392e0e49bb76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"8c98b3adc75efb22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"8eb7b4ad9d1115b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"9b850e3a514f5e3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"a3a7b990bc48814f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"aa600ec3567c46c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"c0b98eca7f022371\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"cf61b6cb122153d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"dbee6cba1f7b4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"de863f592fb01da7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"e616653eaf7a8822\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"e6743ce7cbbbb80b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"edd1971a010cb81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"a991fe1bacfe0f32\",\n   \"child\": \"f8907e4f50d1c155\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b0a031a0f531392\",\n   \"child\": \"5be02b175a072d8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"1ab3fa6b12de05e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"1f68b72cea13795e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"20a78c962b662c17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"2272a257a4b96284\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"24886f41dfdcb852\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"358af89423ae0055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"42b6ad0581b9cbe7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"440389745bc32145\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"4649b332b385228a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"4719a4d6f1117f7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"473857c4630d20d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"49ba63d1f970e77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"4a0f501ec3869b87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"4ae9064ae07ed14c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"556e34f80fe75011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"5919b85698dd892e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"5fabf9bf6792e6c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"623c3dcbf4ec4cd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"63c0d49868a4d661\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"655f49d9f077a1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"6d4d59a88cd7235b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"72f3514979e8e51e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"77004babc9f384ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"79c56fc7c08e8e2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"88c0335b94d578f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"8d039f1c8e0e6db7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"8d5f25549a928857\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"8f37392996307385\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"a019ed0f9fbce728\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"aa9f6c0cbb3a6f2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"ade602d66044d956\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"b48fa83ae4805eaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"beff77de4e1eddc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"c0b5c2899da1faa4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"c2399ec6f6190b49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"c6ca3c2edf503834\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"cb2021e33fd5a1ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"d3014ee6529b05c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"d419e2556be1e687\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"d7b0f39b557934f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"da07d8781025bbc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"da12f2f3b907e639\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"eea231cffe51adc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"f0170d1e8e68d26b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"f4f930b50c8ced67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"f6ae97a7c6351cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b3512f6c9958e10f\",\n   \"child\": \"fe45abc08f7d678a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b36cc5de0960501e\",\n   \"child\": \"8678a1faf5777b33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b36cc5de0960501e\",\n   \"child\": \"fdddc945ac2a9757\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"1fb201b2c4ace12a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"2ebe65244090cf34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"3dd03da91902ab34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"9d94efce98a76bdd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"ca224f92c29d469b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"de01b01058d84827\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"f3c877ca98365962\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b4acf4d4e2b8bd86\",\n   \"child\": \"f69075e351d6cc2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"10248312e7165d32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1028443bea4f1b8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"102b3313557f8aa2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"102ff2d845732926\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1038c93c60d884c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"103b410fee665adc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"106d7a950c5b5f0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"108eb97f3067c5cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1098cb25fda554d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1119921039f3df15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"111998068faec80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1156f94e7524d422\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"117319ad54968820\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"11a5b5e554bc65e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"11baf6ea09587d75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"11be640a8adbde47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"11d5b5872e39790d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"126f1d3ac8a57b83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"129f4b8d0c7bdb3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"12a2bd3746ff4b1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"12f42f1074c00e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"12fa4d3b2794cf80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1315a146282f7727\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"133ae8682a601c46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1343607d9bd71cda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"134c892888e82fcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"135106dac1f7623b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"136d9bd6d14dab7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"139979603e01edca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"13bcb4fc36033c16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"13e33cfef370e22a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"13fa738074159f05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1476364a091658a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"147c7dbba7a5f9f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"14914975c766f6d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1499bddb1c3cd9c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1502ed7eb7c1ccd6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"150c70db9c188c31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1514efe71d84f258\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1534dd1a0b91061\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"155a0800aa682cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"15b89aa40a69f2e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"15bbc989ed63c018\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"15bcb90c1f2da416\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"15dd5a24b6fd4838\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1625b9c40fe9bdeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"164eafeb030f9c39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1652232ed56b8ae5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"167238da41e2dc0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"168f0c92b06f8e76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"16c3a7cc5a034f93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"16c7a42713efadca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"170675514091bd0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"170ec32e92119a9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1791e96b9459cd75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"179427469bb19df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"17fd7164374f07dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1838f654b4658a13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"186ae07b9b580eeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"18ac31de1f2035a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"18ae282feb1381be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1916d94f8573bc2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1928f322017cc327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1937bc2210919185\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1948bc05bdf0687c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"194ea5d97d3a5b79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"19c7b108da206caa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1a025568a7c384e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1a1a1d863970dc1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1a220b38be91f686\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1a7a10a89fdcc8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1aa3f06035210d32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ab23b83605d625e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ab4a02a17f42aee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ab8de906d86cb7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1acde2c5c93b29fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ad4667ae5d88fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1b3fc5e844aa0de1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1b71224ab10b4f91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1b8f92dc763a462b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ba29d6ae3dab6d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1bab9ea4ac40f8e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1bb27579480ea97a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1bd3c3267b6b60e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1bd92e80b2885cf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1c8ae4ce2851eb4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1c8bbf90b7529e68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1cd6cf187782dff0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1cd7a170f6b9d6db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1cd80f278162f355\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d06e5201e709b34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d2b40d247bb8caf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d3bc0d257874b3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d3f0d7852ea772a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d6fc822ef229ff1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1d842612a830a12d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1dbc0c34ad516cf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1dcccc21201889b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1de8ac8a9c443034\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1e450b62427d1951\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1e7db0a3aecd47a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ea394f52465b15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ea4fc7ea5b4ea42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ea60b668dca1cec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ead072110900c6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1eb8eebb06559c57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ebadcef8f112c4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ed396f66298e093\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1ed953d26264c327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1f2cc1a5c59b3a79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1f8a7d443890813a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1f9f701f984dda4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"1fd753590d222706\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2037ee5a834e2796\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"208bc01083dd9ede\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"209d9b04991530ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"20b08e4958a72d24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"210136c7870615d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"211448e253578aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"21178604bb046b93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2117fa1de14f64e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"215e1d423c8e064a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2171c28f5e32967d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"219e33bc96d8a746\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"21a3c45a185d7712\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"21dd8a690641297b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22070a8ac69e258f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"223ac0f9edcf227b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"223c500fd6e384e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2240f2ed88325c3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22531449ce1dadd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"227b568cd14685a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2283a2d525b4d34e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22c5434bea168b6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22c820ef31b07ef5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22cfd4996132ccd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"22dfcbdca6176d3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"23103a56aba4fbec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"233344afdf786c01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"23446f3abe3faf35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2381c9009877fd55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"23c65a7d352225e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24245361f765e720\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"246dff13326e8c83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2474da709bbce36d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24870bd1bce1e3ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24af319424b89d2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24b6a24f22bd1417\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24c59c7866f06c06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"24d7cb32320779e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"250678a9e0d5e686\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"250a67cffe35e070\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"251b5bdc5347f06b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"252d8f04a682c75c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2566e390d15da0fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"258557b8acfd4e8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25b2371c83e38c28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25d5223da2eba7d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25e11be8c0576105\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25e181dddc2bc88f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25fa6e11eaf96f7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"25fb3584bc8c58fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"261aa60de7c7f3b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"263961ba76d5705f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"266ef17c2dcd528\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"26a1d5c2a6899131\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"26d198e8f1eff1a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"26d6d13919cf7b1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2723464c5559265f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2724a1e2e01e5a4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2732a523b3a39867\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2740a1564e3c4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"276570f43b780ce5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2787d964ffb0839d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"27de4cb56ce854c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"27f5fe5b850850a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2814a559f716e88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"286c4c2d19ac5a0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2871a2915c5b177f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"28c0b02abfa13d69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"28edae4947404ea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"28f62624fbb145f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"291d0b57df2a41d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"292d1a7262ef6f46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2947fd05c968a9a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"295f420f360ab91b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"29875b4ae0128eb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"29cc61bd896ab650\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"29ce8517bd6074a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"29d03b232b231c32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a02781430d48169\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a1afb0b78514445\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a28214852fa53db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a4b89c66a011882\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a65f649ae5fd863\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a6ac666e533b78b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2a7b9a9290986f4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2aab34cfdaa59dac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2ac03c21668262a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2b592a798fe3994b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2b865dc818366441\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2b9fb1a97646f258\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2bb37d59669dc4fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2bd3dadf666a2f82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2be61131188d72e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2bf0baf51444d217\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c015f594d689854\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c01ed21a19893ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c0778f7b95826cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c0a0d4f7be7d38c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c25d8e951cd329b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c291ea7858b02f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c2a2202c1540cc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c2c2b6fa5e853a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c2e825ae7b9a707\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2c88853afeaf4ad2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2cd9f08f3f20dee6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2d108bcaee697ec7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2d909dc7c4d1986f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2dcdc8a8603bf9db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2e12a6e4a8a61e69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2e3a33ba8fdc8bb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2e3e462efc29ac3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2e8ae55b14f5ff6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2e8c2ac32e808a1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2ea7c40ef2bd908\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2ef5ea071e6730a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2f7239c738825d37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2f796012eb420d6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2f7f8bc04bb1856b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2fcf1e0f42bb36b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"2ff1cc45b44b3821\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"30039bb2e565b6e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"305a73c00a691564\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"306267506acbd1aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"307abb53fd8feced\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"31b68216f8d9df26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"31d6df24d394f946\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"320cd840c426b020\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"322d5f5fdfc959b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"323d30b0cbd6b33a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3257a4d708998313\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3260fb7058a505f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3262136658cc651\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"326253303c7b11f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"328724c2d37fbe59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3291ea049dd941b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"32dfa8606d482be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"33484874538fc550\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"335c23cb5cede4b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"336cad4ba40ef7c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"337367f3e668274\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"33881cb64fa36371\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"338ed01949e4b356\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"33c12b8874d0b8db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"343881b922e1f258\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"344986caf26a6285\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"345ebde50bffcd35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"348d2db5ed0fa56f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34b37f36fa0b445b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34b55373435f48bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34bc1b93d87204e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34c041f5b1752b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34c12e654b4d779f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"34ce8a7a38946dc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"351a807d3ccdaa97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"355209e0d3be6048\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3565d14f94c15e9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"358eee027d354e23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"35f008819f8df45c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"361a38941a4ba48c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3683d23280b27130\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3684a79adaf3304c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3686ca0333269020\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"368752da564dd7d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"36bc3355833a559b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"36c1db8589ab388e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"36e287fcbfe613bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"36f06aa3a77c2e1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"37497e70c7176ff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"374ff9f7ab798de8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"375a3d4503881349\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"375d1d313799dc7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"37ad693dbf03dff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"380da47fec74bc8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"382841e45c31409c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3843f7ff43b6e110\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"389d0790873f5de0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"38e1bb8a553c4373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"38f1ba5e7615ad34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"390ebee2c8cb3ff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3911562f18d1675c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"393a164193440eda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"393f3f4ab08c1996\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"398add74fa39b132\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3995955e83875183\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"39bd18d486cba6f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"39e0a483c7d082fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"39e4fc9fa8ac7912\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3a066d68464d8f3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3a0da74cba21345b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3a3cd2542b1d16b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3ab2242d5ace9583\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3af30884ebd68230\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3b4aa5b02169802f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3b586af822bd4e66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3b7787fcb404d545\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3badc83d1893bbd3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3bc70c23fa945550\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3bcb9a8460d8b999\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3bda3a2005d664b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c03dd6433ff931f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c22a5b61c3f899e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c267969ae68f4a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c32171637fa08f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c333b5962b348ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c3b0eca8f391cbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3c8e0efb1834a4cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3cad1fad3cd31d29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3cb06645f4bcc882\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3cc710ec045e57b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3cd1979951ec5651\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3cd6fd9b027bf04c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d188374a096bb9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d20d6ce29a9908a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d408885013535a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d559bf0ae151a2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d6b1f210d50f754\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d6b25ab509c726e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3d7ac9a70a8d2471\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e00d73b7c2fdfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e07fa90333f5256\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e0c60308efb662b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e1651f5e848f4cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e2e202db565560f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e3295bfaf696b9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e42fad7a4958984\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e4aa3f77a41c0ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e688143957bb5f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3e9766585ecc4bf5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3ea4cae6d7b7cd36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3ed60cbcd16051cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3edcd0ece7b03aa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3ee5f21351ddf5c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3f2873d10068c29e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3f863259641b92e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3fbe6794523c945f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3fbffe7f62fae03a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3fe6b7eb6757883c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"3ffbd19989b44bb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"408d6d6839d4794a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4132f63c1d0bb298\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4135ee3049906286\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"41651987ae85f203\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"41b09048cca31224\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"421656abdc5810e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"427490c19dfa2185\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"42784f91535d05ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"42fc06930db643e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"43118d6600ad7911\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"432a24ec1423ea06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"433df873898deda9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"437c5e5968b5135\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"43bf5a2ca293f764\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"43c9076e62f58761\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"43fc5d5631e33fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4469856fcadd93e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4482bcec2ae6ad20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44840da0a96bc9d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"449ccb9d93dbcc47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44aa396e5a6948bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44ae3ef628bccc75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44bc470160bfd97e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44c03eaa4de3a50d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44c26874949131cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44c28f6445c70f73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44d85ae254773dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"44f86490789dcb71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4530222c12bdf0cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"45c87cdbc668dd0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"45d7649e1866cf5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"45dc8c716a1c028e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"45f554668040dd70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"45f8b600f6b3e0e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"46250d42f50f2e8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4629306b636d74ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"462fe529cbc88826\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"46305d7b250fae87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"466e85728c07cba6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"468aff168fa37317\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4694f6f1b4ed878d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4699e01db572c42c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"46bcc90f7f6588e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"46c1cae7f6a62740\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"47321aeff6d24a5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4749f0ba1f54a78b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"474dc93478b35873\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"479c2c6f4c23bbb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"47a23acb7a6a9593\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"47d413bac2b4c6e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"47e18d14c216619b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"47fce70e07732a2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"480441f9be60adef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48050c069cf5f3dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"485f4c198cb399d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48787f6e1665a306\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"488876d2ca27a704\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4895704902ac1f4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"489aacdc4c72a832\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48ac88cb5a4d836f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48ce1566a137b1b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48dd091c9ee8ce1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48e75c9203db9df5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"48fe6d7908b2d723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"499fe6a2c20b9576\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"49a90c8c5d264797\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"49b3876e979cfc09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"49d6969269b38c45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"49f418723db88b25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"49faa860393b57f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4a443ab37241f945\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4a593fcffb575378\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4a721b06713bc3e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4ab457979f46082f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4aba722e4524cc8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4abe9dbd0e67c410\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4ae9ad20d11d04db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b45c63e46fe0705\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b460cf632f41af1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b53265beef4173b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b7024d1630ac2a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b735a4b36167b68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4b81aa377cfbf031\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4bc648c894940d0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4bc8345b5d634032\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4bcb03dd953a3fb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4bcbe21cd1ef3414\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4be6593957817442\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4c4987ef305e689\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4c605a0bc1463495\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4c852383a7b1fa10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4ca6622725a504c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cb4e1a21cb8af99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cb9df94e535eb78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cccca738c8ed760\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cf51a3c8b5a1a6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cfb52c64d7e9a47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4cfda6c46464ccbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4d189da9d81511ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4dbe91086defd9c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4dd060a07598593d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4dd3919f367e6dfc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4dd5d1ae93e23641\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4dfc7a3d2d7144a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4e167caa90b0918b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4e68e8a78ad36bd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4e7ae7a53d8bb389\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f1898e6aa59b458\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f39830c28fda67d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f4116d2bfa53c1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f50e7ffc162cc83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f662a3d3368fd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f7e0a587b4512dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4f8eaeb2085b1600\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4fa45ffb87b1d5cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4fe2214536dd1e61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4ff4001ab9eabc86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"4ff5ba920f675a98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"50062574a4003c7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"500e45676a302120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"50106cfe80e02efc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5026a9005d1e8ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"50312dcbd7251218\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5082b8668926f56e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"50b574bb8a06aca3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"50d56166a539c4f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"513e040c3ac74153\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5150c118f94a3fa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"515a0d4baf4801c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"51800788fa63eec5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"519229f6889e4f0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"51ad3eeedd139108\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"51edc18b1ba12f5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"522d78aa56c711d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"52334dcbd458f866\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5244d92ea9e1232d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"524ddde6bf7bd925\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"526002f734b0164f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"526240a426a12a25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"529340abf7f920e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5295fec4b22361f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"52a4ee3f3d8d6e31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"52a9ac6b72b0d265\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"52cf7343dbf8e00b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"52e09a4c374a730d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"533f9baf26358931\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"53595bd792427903\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"53a11ec263d99b1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"53a99955d7e9618f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"541a79e88ed9aeb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"541fc3164bd5d78f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5443b185f7611987\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"54720792d943e812\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"548711cc52575d26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5497448cbe605e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"549d7e2db24eb3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"54b782c13a062b07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"54bbb3ace2829a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5507aad2f8ec92d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55081fea4865fd51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"552ceb99321a7094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5544225867ea5dac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"559920a1f4101484\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55a14bf4700446d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55b6f15534d09d80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55cd0f4c6effd202\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55e970bec4bf7b74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"55f4c7bded63742a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"563c500d593734c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"564c19a01935c87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"56bc18d91e1d86b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"56d5ec996e38e926\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5704e19dc83ba8cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"571afc355a614b08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"57298089f1e31fa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5739347cc4a4ac86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"577a4bd7e01477f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"577f39c1d69ae6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5794258043440441\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"57dd6792d8e35f2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"57e2405873ae85a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5805694a52c689d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5807c391d1730537\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"580b5a307f7af65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"583cae7b5c90ec4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"586eee76f715b643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5878e73d3dd4d2ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"589ae8b57e5d034c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"58a41b400b964b02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"58e92914c78d82e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5921212c0d95061a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5941c6cf65a91010\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"595e65c24b47d8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"597982e7896606e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"59a5ad4ff0742f6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a013bc55078468d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a0fb7b9da71ccf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a56783a4820febe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a641cbeff9ab75f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a6cac34f988a34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5a946453c5d6032e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5ab076d666970eb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5ac7e9a7105ed225\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5acb97cb4046c643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5ad8e5a7f90af741\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5af1512e6dd2b90f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5afd3dd44ec5ce46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5b461a682d0c4fbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5b5aaaa1dbf99ba0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5b73590cb0e48b22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5b7d6972d4b76525\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5b9f42a48fe0eaa2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5bf588dcfe36cd9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c2e852b3b83693a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c5b398b0735b3e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c6d8194e40ab740\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c982ad8a51e566f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c9b5e6012c69e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5c9d141903f48a7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5cbe75936863876c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5cda26e70b1623f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d14a69c18523c52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d2f9135a7c1f40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d32c42bbd8b3e62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d5f6e67de6e1e10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d6941883b65fce2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d6b5196a1fd3a9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5d8a08249fb10ab3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5da8db447c98eceb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5dcb4efaf5025668\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e41c9a64090aeb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e4a665b7be6220c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e4cbf587280168b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e4ef5027f367120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e59191ff1c1a95b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e7dd77a89cfcdd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5e9ccc7bbf08adf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5ec6e39bdb20b0fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5ef8c625645f6a1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f00f6990be98ea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f0f422d9f7b6ca9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f3646165b51e90c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f67a353e5e494c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f7cfc6d869c5c15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5f9fb7bf95ec2599\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5fbcffd5aa6a8199\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"5fbead6e401b30cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"60076f03e6c895\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"600ae252ed18ae5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6015a410b8df94b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6035f79c3bc695e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6080565cc925a753\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"608f5af3473e4409\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"60df29a04fff0844\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"60f4e7f61ef06e57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"612409ff23389373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6137690a9ccdc2d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"615e4a81e52a7e5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"615ed78c05974e0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6171e74fba2e509e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6172b3a065654316\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"61a005796618cb5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"61ac837bbf943ce1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"61c1f7728ea8b385\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"61f43af1ee90d0a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"61f9f220e0085d09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"620b0bbbe8ed2efa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"623794eec6c85e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62545477798a16aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"626ae0651826a3ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"629aa47821c67c2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62a94ec37df0b23d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62ac91784ca99a3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62d6f428d6c8b236\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62e0a197aef70b95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62ebf33508c0c006\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62f31eb811ef59ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"62f6a9fc35153e9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"63adc95927e49430\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"63f76948fe650fad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"642ed159bc5681aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"64514cf38acf98b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"646823ae7ab973f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"64a812e87787697\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"64d0700db6aea114\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"64e046232ad33fe6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6519922d7a92961a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"651c9618f70e98c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"653195b00e4d8fef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6542c023752c9f35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"654f45d057e7e91c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"65aa6eceede33325\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"65cc6726aea49573\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"65e7e8bee8bc8734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"660db7734ed9ed9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6662055ac64d6fbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6685740476b9b35d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"669a672052b43a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"66a889092d7ca2f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"66c58d53d8c5eaec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"66e7deca0b9678df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67076860549205ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"670b8f6573d8c13c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6718397549b28402\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"679c544ad742918b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67aa2a2e914fbba4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67b12cc34dce7f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67d0fd1ea6c8a6c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67e22e09b67a5ac1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67f35f19149899e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"67f5bb361e21ef05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6818289bb8bba980\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"681ef219621eef7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68490c63822b9881\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6857cb37116307df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68be6167934ae05d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68ca8c70347bc26c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68cfd276f0421f92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68d583dbc1128d4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"68f41e6036634069\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"694a5bdce7fc5ba3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6950690b937823ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"695e3ba0d05771c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"697e1cd76e9cea8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"69b837809562eaed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"69e538d373494e50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"69e70ec05bb2f0b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6a1e4eb074071125\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6a309ea46a1dd42c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6a65ed24617c05b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6aa3d9acc3ad4ab4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6ac8775ef884f95b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6adbfb43e961baa2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6b3de879b3d68e7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6b6327f8bb823076\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6bd1206b52fda653\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6c3fed55a5d14218\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6c54a346a1eb6155\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6c8cc9843c2147f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6c916621c9aa61ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6cf05e9d553d9e25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6d335404ff8e099e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6d97879b68ff20f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6da2d6d26427d2d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6db9ed341bd03374\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6dca304c45ab2d1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6df0ff0aa7d7d8c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6e355f01b15315da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6e492ffad0bf2126\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6e6f5b26094f6b20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6e707296b2b1af7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6eb3c7dd6f641e19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6ee718c63ba1d6d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6eeb0a2f09efd800\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6f0ad9d09c257a76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6f1eeb7f5433e2ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6f56b09719e8e6fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6f62bac6463f1d42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6ff687d0a2e300e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"6ff77fb4f4754de5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"70143b8864d82e54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7078a300cf477f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"70a18cbb29edf52f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"70c998a8aaf6257b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"70ccf5a23f0d327\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7107172690d2ab5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"71562317964264b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"716b9d1f94f37fbe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"717419db3432f60c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7187cad6b930159\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"71afa038d1c33234\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"71caf0e8bc036bc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7206a9d401f6d3a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"721952ef6b620ac1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"725914da3a09ce3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"72873fcc26bf5102\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"72885bca209516aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7297eb7dbaf6f64c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"72b6ff2be44410af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"73040905cdf89c1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"730cd477d6b79d8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"73748e042aece82c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7390a877d225667d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"739c76cc42d79c1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"73c502f0175c10f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"73ed8335e8722cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"741ab146b769b45d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74350b7843d6515b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"746dfaa495bbc90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7470a73fad35eef1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74816317441cec8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74d0c7a7811bcde2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74d65c9f2284180e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74f3aef075ee5142\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"74fbe5ed579ea660\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"751100066534ec9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"753416130ab2d734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7569a3905cf7b2c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"75b3ab7d34437187\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"75b464c785b7565d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"75ea7a464b1a7080\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"761043696d6ef3f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"76253080c14ce4a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7629f7d7bbfbb22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7642794b86e77084\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"76527177b1fe5042\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"76f4596b51854537\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"76f5e188680da479\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"77091ff1ffe88e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7717531a49a0090b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7717d98ce64d26d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"771d22dc4c25b474\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"772732d9d8a63575\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"77781f255d9b5149\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"77a90c881cf1e5bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"77f204b93eec84db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"781facbbc2720b8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78449937411d2f4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78582424667901a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"785c6a9a152de31d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78733ec07bb29215\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78800da6b3a95940\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78d2524debe20be4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"78e087b67d5d4e1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7910e242ef9ac070\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"79aeb67892ba9ed9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"79c4d160a20ff824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"79c8c52a28b6a33a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"79d717bde45351c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a0d2d6361b81f88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a17cd322709e9c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a1a6ee4566b40f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a3fa42e34647d80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a42e69892e4d7f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7a6f748d657ec3d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b438478c161b802\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b598930dab32acd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b64171f34006ed9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b71cff35029714c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b7c2971187ae26d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7b9060344eec8bbf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7baf7b2f3c2029a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7bd78653f107cfdb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7c50118bebb3e79d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7c60001f2f60c761\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7cea85ee621b3e0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7cfaeb02c0d5ec07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7d181d5956c6d5a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7d2c66e57c90c818\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7d5efe0c11fe46e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7d832fe45593b625\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7d963364b3924bd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7da74533ec0cb668\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7da7a0d6f24c9648\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7dd09fe156160fe9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7dfa071c3ebb04ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e099b7d1604389d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e2cad637d24ce50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e385082ac6e76e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e66a0e71096f4de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e6d757fffa52603\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7e88027a1cae6e2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7eb918b15e402577\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7f56448c8d3bb356\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7f58d4c8d4d93aee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7f74324c1e371992\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7f80a7d9a4cf961b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7faf9ed79fd96b26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7fb0f4b6ea2482b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"7fed8b0fb30f9d74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8004a7c9bf930fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"800d374642d311e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8015c3d2c7c5ab61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8028f427f288e2d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"80425d0ee2f44545\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8049b1b7698a4e6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8092770cfe927afd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"80aec9e8ed9205ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"80cd108ac19fa470\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"80e39396d9ac786b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"81057994b43b6def\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"811652f975434168\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"814535a8b1839224\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"815076c4a156610c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"815a536cae7196b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"816d2e9f2ced717f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8176b1832126c3c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"817e35800ec26afa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"81d3ee4ed5cffa60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"81d6f3acebe1b086\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"821f1763452077ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"823a250bc3aa6f38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"824fc4c81e540dc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"827a6d0c0d05b89e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"82c6c25f650a2c6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"82f40579f1180555\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"82fa93c9c0223316\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83224f9b1abf19ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83554064ce11578a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83b240940e37dbb3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83b4fe2052f827fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83dfd67e54569bea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83e2e78b1a94a4c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"83f2f206499923ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"840b44aeb660e6e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"841e8f9c19affe19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"844ed0a8fa5d02b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"849b4dd562e76dc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"84c77320499af830\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"84f00dda3e9c52f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"850ec7bf17832fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8514c45b3770617\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"855aee1e02f87cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8571bc151b5a45ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"85aab8f4edb91b9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"862dde00c8f4fdbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"86445c0aa52a7740\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8646bf20d3afde1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"86756afcaebd6ff3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"86ad857b9f51a9eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"86ce836e3245cdba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8722a0622b106824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"87511a85792d303e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"875a8b599d23a81d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"876a20de358e703\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8771f10feed17332\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"87827de507c24027\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"878c0efc6aa3e754\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"87d895424cfb1bf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"881245db1b6a00a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"88360b5ce1c1bc17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8844dd67d8c1ae84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"885f841d46055a4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8901e238243adaa2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"891776eebad66edc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"892d4d46917be47d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8937e919558f4079\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"897b4facdd78a3eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"89901b1fa534e635\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"89956b5d481c67cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"89a45462fea2c10f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"89b4a0031d6d3286\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"89ec22c91a6cdc60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8a145f7849435f02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8a3433ebc869686e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8a740ea4065e547\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8abde8fc195f1256\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8ac8604bd176b051\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8acfffcd65670f58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8b21e3960f815e7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8b76d40b9e48bd67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8b794c5cc7c62d42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c00775f7725a712\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c10a09bca5b0655\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c124c9ee288d61d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c15d29f19f32721\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c222b15094fbb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c2cb645390f57da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c7bdc16bc900533\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c8d43c0b14f7301\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8c9b3403e6c27d5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8ccab86adac291bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8ccd93c857102da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8cd705ff1d0fdea5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8ce96754f5b95958\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8d4e17f341aae62c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8d72d83d4f4325d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8d745902184ee6ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8d91d3285b9fc734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8da35510b1fffa76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8de4c0bdef809307\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8e1259da98279548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8e77e7b0b17f48c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8e83133fe5d91cfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8ea8909c3c4dd50d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8eafe84165f659d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f01e756711a0a82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f3c3a96ab182d89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f3e36e1bfb23da9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f53438d4570fe4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f6885fe825d495f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8f8222648cb8440f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"8fe1e1f5353b8cc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"901c64c2427bae15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"904c4ed75e321208\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9081acb432050a00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"908c7e1e5cc5b93b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"90a89f4050e836b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"91477076d7fbc1d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9152076b5f40ccc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9167d84ea15fa572\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9177c0843896e837\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"917c8a641239e249\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"91b3433845a103c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"91ba6af5e97b8c4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"91e7cc1510b97575\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"92132602b85775e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"924b5c22dc61c823\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9285fca044ba4ed9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"928d332150ebb1f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"928fa1fee172c761\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"92a35a1a5a5e3b3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"92adf7f1f28d0e33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"92bd9693c1e263bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93180e2362db5a4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"931c974ad7d0f090\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"931e62ff40c2ec75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"933ad435e51f73f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93553db1b810867f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"936740b40c57fca8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93826f736a07246d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93d9bb226e00a8ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93e3354e0f6a3990\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"93e7db3e22a597fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9404f1b6d9073648\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9410c31a1980e92e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"942fef05f15ffb9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"94358636c1f17f43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"948ed273c0d64f4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"94977de176d3e219\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"94d6cce54243ee26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"94ef41dd274b0f02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"950510d984a58320\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9532d8d641a363b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"954fb7eabec79814\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9556384e955846b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"95641514d74cad52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9575fb9cda44d3e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"957b4649cf3c4efd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"95bca02d06b88e97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"95d8620826d0f066\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"95db07db7673f7fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"95dbb64f0f7e48b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"962a70e639035cd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9668ef758b1d584\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"96828c62f9916596\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"969494196876ea91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"96b127852e955cb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"96db2240da7151b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9731da496667eb5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9741b879d92c0cdc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"97474e73448c3eea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"975fd1900627e9d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9792f9ad095f5bd0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"97e7fbdfa05425e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98025d383ca467ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"980371716a2e0ded\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"981f70c68185af06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9844b50ecdaa3910\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9851a06373bc3bbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"985b4cb19383cd96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98829c8491fc0a50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98a3277c15f44e7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98a6e3b6cabeb799\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98afa5cb7e122f62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"98daaa3e695fea9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9933095c0d9a1fcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"996d12185056da49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9994ba7bba5c8f06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99a3edaa4918b763\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99b837bcfe62a9b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99cd527ea91c338e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99d0ed33388e48c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99dd7b78e69518c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99e58a8552306a72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"99f2ebd902975091\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9a0e33c678c56bf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9a1acb13659c2020\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9a2cd60ed9405f87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9a53b38675224cdb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9aff209f241e638c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9b6075fc648b23d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9b69bc68903cf913\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9bbd324a879f36b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9beafef9105eda1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9beb22d2a255bdf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9c13e6bec84ecdfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9c5fffa7ef17b7b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9c61730b54211e3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9c7988994ff968c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9ccf2e0571d7a055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9cd4b831324964c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9cd737ce77074ee9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9ce6d9ea748fa2eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9ce754c7933b4555\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d0108e74b7c7f49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d1f32d5eb7a3828\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d205848b4ccaf34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d667501a5f86ec5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d87152146bd9ebd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9d8826e67dbd233c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9dc6f6cbefb38b43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9dd3b6dc22b84211\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9de5e3513d41fe72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9df63cbe1a55e31f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9dfa42847bcf1e9a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9e0dc03b2f23300c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9e17e49fd9fc557\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9e9771f0b295426e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9eab6b35d02adddb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9ee724554c0c6d9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f1009d7724434d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f37b1fae7707755\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f3c8a1ae5b31e03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f3eb50fcce22d86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f4365fc52c2f7bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f66ea39e6c58339\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f6926b41f347156\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f6f051f02a23055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f7e0f968de68f09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9f82e2fb3a454300\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9fcea6c83ffd5dba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"9ffc7d60e65c13ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0199a5e1123c21a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a022827dfc887ce7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a02af1382ddb4b59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a02e897427aab411\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0383d4174fc66e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a03d86699b6043bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a043619ec30fd2e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a05a2cabc34c7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a06df68e7e9c43db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a08feeb5b5da4eda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a09a5bba6a0e19ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0a151b7542a2357\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0c8b23405f6fb13\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0d56c9da3674b94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0eafe961e27aa2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a0f690a3c14ffd70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a1173c664c025194\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a18ce7f41509bf7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a1c386e2bb331a81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a218dfe73b33ff5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a24edfb231bf0874\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a275b3d243f4de49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a2836a8acf017d3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a288b11d40e8a80d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a28eea2aea032210\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a2cf940f1c54ffb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a2f3da287b2b6b41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3449adc47ac17eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a34c7292f1c09296\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3aa3e6499317b6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3bf677bba2b91d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3d27514459223cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3d279526e3f58ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3d58bcdfe11e3e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a3fbac79ef45d286\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4114535342c2b96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a45ebc18d34d89bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a46234902c4fa1f2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4633dd5c73b013d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a46715dc643666ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a46fffe76909b308\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4741f80dafdf342\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a480a95892298aa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4a6e4c2cd872c96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4b8498dca5fe4e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4b8ecb2bca7759a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4b9d9effb641a1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4c0055fd8042ab2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4e75b275e67fd7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a4edf95fcaeb2780\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a574d3889a5599dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a5bd710de0e9673d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a5fa862ff54b855d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a602a38c17e6ba81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a637a5b259c3957e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a6595226b536940a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a65fb19dbc8e3f62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a66e0291f398ab1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a6a8f585148db03a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a6d0b5f721f32731\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a71b3bc7a1bb226c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a77800baf7c5a3c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a79a1a532314fd14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a79e0b1d37337466\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a7a5156dca92ec4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a7abed8684a77af2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a7c3ef12b820f44f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a7cabf35a3108662\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a8420d3420da4900\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a86602d1f1a39c87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a86b5c9c4131afd2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a88a3af751f40cf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a892c95691662204\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a893522b2011759e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a8a59fb790143aab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a8a636b670ca5e5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a8bdce61ec6e2084\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a8bf81a9afdddae5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a93434fcc1f2d7a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a93d651b0226f859\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a93f9bc1360c7bb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a976e31e9b3698db\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a99ac6ab46a08048\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a9daf9ec6b0225ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"a9ecd2da42c31eee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"aa25e6026970c6fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"aa3488248b8a1120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"aa55a9a2914af93e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ab012a4cc84b1f39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ab359c10163acc93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ab70f83bfefc92d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ab75d262c1d0acdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ab832d8fa26cc928\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"abb66712413dd100\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"abbecfc277e7da0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"abc23d0136b19de2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"abfe3a14d3615796\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac270ebbe8646be6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac33781fa775e00b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac6b6de92aa4e7ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac762cf40eb2d370\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac9721bcfc0239f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ac9d52f16814777c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"acbc87b1c98a6acb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"acc72c25ecff78ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"acdcc7387c9f1449\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ad0f7975b5af8408\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"adb8cf9d073ad69f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"adcb51199b09bae7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ae54bd0ec46cbc0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ae5b2a5315fb6d71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ae87a0c16f75db57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ae8c29e6d566357a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"aef308a5ae1ae686\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af1b80c42433055e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af1bddbc16583c19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af2cac75fbcf0a0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af4825cd7dc06c9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af484b7639d300bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af8284d613643625\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"af8f6c61bd26fa24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"afadfada4f7e0b95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"afc3e887239b934a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b00c8d94bfb9ce6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b03ff23650c58675\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b07033092b75269b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b0b1a75c080b4993\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b0b6d6fed462dae9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b0c3425ed445aaa1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b0fb33c6d29ce196\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b16fbf719056164d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b17c89815a3d4da0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b17cfefeac4927d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b17ed36a7e208954\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b186003a53e8d2cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b192d8666ffa85cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b1963125c1b2b602\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b1a19b9bb57edea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b22194ac4684aeba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b22aac909a7d4bbf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b24104a33c6accf7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b24c1f095b777817\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b27f31e5ddc4833\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b2ac10199f391c29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b2da002461b2fb52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b2df924aeb95a7d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b2f530fd7f5c7bc5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b2f705b581832579\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b325a071855bcf60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b327401aa7a72a22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b33aa7db01d446ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b363bc9d9839fcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b365274857e5f4fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b36f42ce91fd455f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3758b075daf1aac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b37bda928dc7c7d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b380b870c6ab3ba5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b381bc7bd95f261a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b38893bc74084d95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b38cd39971319bc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b39374f588fa1db0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3a29d9896c5e691\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3bc99b806760f30\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3c12a1ab7c74107\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3ccd2071fd9096\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b3e348dbeb43d0f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b427cce92758d424\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b49d6f6129badd20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b49e7df354c5c071\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b4dd5e6a4996ae5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b4e47d55e856be53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b4e73658774a3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b5024908ef1d2b48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b51a94d00a331fa9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b55d5a76f68c487\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b58494c650ca9281\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b5b0c1f6b635f1cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b5ea879f10277a1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b5f494d9b9a21144\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b5fc514f51d0fe28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b60d355d74a46900\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b62de098406f3d08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b637ceea43af74e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b641457b1512c8d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b6bfbed32d1e3472\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b6cb591749d913a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b712838848d83966\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b7a3818af9be4b2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b7ae1be70d50dc3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b7cc7c4e96c0384f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b7dbf84694d8140d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b804059a66851a98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b81014594034f6e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b84cf25d9216da7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b8d47c8e0d693520\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b8ea17d6507a926a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b901c51713826f5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b94710c0bc0f5687\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b94dc8e5d1afede9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b9b1bf0907278c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b9c1a2b28a18fc99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"b9cf01a425d3011b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ba029f6bdf956d5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ba2da31ba51b5257\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ba483a2d0622b8d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ba9477e68433bb6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bab896b28f7c41e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"babd0d54b029c120\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"babfe1eb1970fd6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"baecf3311d9336f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bb0feefb8c898293\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bb4b350732dd55dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bba38e4f41e9a103\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bba6dedbea305ca9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bbac7db263de21ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bbb43a7a643bdb26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bbe8adf417ab8faa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bc0792201ef97b00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bc0e063f1ceacc86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bc200c0e87037c3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bc8b61c5f98abee5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bc95660ac63cf979\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bcb2f49968a57433\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bcbca3abdcc1309\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bcce0da6eb2312ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bd0b2e570937ccc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bd6053561f57aeaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bd8c0231b7abcd65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bd9c531c6ff43410\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bddfb5608ee306a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bde34a791b1d7a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be0b686039ba6b0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be43664ac65b18a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be51fe97f74cbcef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be54855cf05be2dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be7a8759bd51ed79\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"be8436aa94751472\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bec4a76b14f5606\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bf07ccbff1b24ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bf07f866cbb4c4dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bf3222ff2e00ad90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bf9d8b1c324b626a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bfa7815573d0ba0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bfb32092ec0a3d8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bfc6d1559f481b0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bfcc9ece827d4c9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"bfe890fc293f00ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c0521578fc62bda4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c063ca1030e62e95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c06ed10e5d9da69f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c079b1cb29172b69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c0df04e42b1422ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c0e08005cf08546d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c0feecabe560a666\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c101df9029f2eb75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c1074e8eb3719dc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c14730f5f137dbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c176ee2474cb249f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c19a2a42a912909f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c1d6a28cb58dee4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c1f4b949231034d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2064f495a30c646\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2929a4b67de3849\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2bdcd3cc0430d8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2d729a594bbb06b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2d9f9a06e6fb643\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c2ec6b6cadc71666\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c326368bfa01c07d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c335e3338edce0dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c34c87e7a6234ee1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c38b6817625b1c32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3a291f6b26efdb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3b747d693c0df65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3c7683ed1b4fb7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3d2274f469cce25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3d519dc2e66fc2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c3e98eda92527901\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c40f5661648e68d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c42fc2a4af328591\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c4d9e5a56aaceb97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c4e66d2bbe5ad48d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c4e8c9a6ef0dbfd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c504ad708621352a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c521d30f13f21dcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c526397937097736\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c5616afffc4703d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c57666026c97d199\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c59634141da829f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c5ba7cb821e949d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c5c42656f9bba8a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c5e782d8dbb78331\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c633c46cfb446249\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c6550c7d25d7a256\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c686cf5cdd86cb43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c689568d082b9b82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c6dcad4872576319\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c6e99307f94a8e9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c725fe6062299634\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c7360bc371ba2bea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c74074535ee030d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c77472fa4f652162\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c7791672634774ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c79d212bc7d92fa4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c79dc6710db5f63e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c7bddc97063e0901\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c7e8a8f4e9e03c19\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8080b8888d0d85c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c81353bcbbfea3aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8198e81d36606aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8210c1e0e9849c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8591941d6a05c67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c87567b7e304c11d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c87e5950c0294bcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c87ffa3493572b1c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c880078349702123\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8b916d7194fab71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8c6b2d77559781a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c8c96babed4dc1b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c91452064a44337e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c95cd0c0c710155\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c962f86161910804\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c96c29e5864f8b94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c9aaa831717161b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c9b5394fe1a9eab6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c9b5bb70a6b184bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"c9deeff807c1dc58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ca2883db975ef711\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ca3b42f59b5b9c15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ca5034b01a4f824c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ca9b104502fb0c38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"caffb099b7cad688\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cb1d320ef063d580\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cb3729feaf6aec51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cb460da6495d6bc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cb4a9af3ded12e9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cbac8a102fdecca7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cc04abcc5f91d1d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cc27290b7e210d60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cc3caa984a190316\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cc6361d6652ae816\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ccad7af2194913cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd2e200eb22e1fe3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd343b1ce4ea207b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd3bd9eaa4a719bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd55f6fa16ce9367\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd5b5dcf5b768f33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cd7318321fb40c09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cdb03b1adada2eb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cdc4dfd413f72957\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ce1b17acc157acf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ce1e9285b56c0b96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cedb3b44806062a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cefdc848f2115497\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cf04695ace8e8a24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cf0e373ed5d5e4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cf1cdba19ebf0545\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cf8048071935afa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cfdf9166f5916301\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"cff20d4e3a1d47b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d00c882d3ee268cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d017d95a5ba3906a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d06ef4136e65ad5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d0c87a8d48f45681\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d10e0c6febba7bf2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d156451d907ec948\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d17e3739963be53b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d18e3fbc3f7b6e99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d19068d31bbf31af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d1ba0919d58235a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d1fea6d30fa89d67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d228bec864960aaa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d25f7602f74b4b59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2829d95a352c2d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d29dc8fef9ace7da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2a2ff79c313f51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2bdb81ce2c50a25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2ce31b9847e42b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2dc2fe153bedeb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2dd90e97ef0450c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2e8ae82534ccaf4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2f15fbf143cc36b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2f256b7657f5cec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d2f9c334c3a62561\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d3865b25cea5d8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d3988d7a1e65e7ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d3be4700cdcc38a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d3cb35d7ba8901b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d3d5fcc3cc4e3082\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d41235eed4b60a06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d47268a758c55679\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d48336604a2bb246\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d4893929cef0dc6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d4ad4450dadd8efc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d4d23b76e5a509f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d4d6e276582ab5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d4d7658edfa34b2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d51127c3d3b1fd6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d53404f75a7bb272\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d5586ee7048b54ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d56040ad76b49986\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d59b3c10235994d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d59fab0ef34992ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d64c0ed0805655f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d6eb4822e453c090\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d75a444e3ced5d87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d791100e1fc7944b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d79400b355f7420e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d7d67b757d88b818\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d7eb53271f7e176b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d81e3c1610493c55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d83d528a28c6316d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d850ca7bf2217e54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d88d6d6d6333e0ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d88fc448a3218a02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d8b0f96dfdcb2d9e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d8d759b4f31a8e29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d9228b7a7efb5dc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d92f9dae4c3e8d0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d93da01d9acdb2b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d93e18fd8e421bef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d979d06092b228bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"d9b92e9478e438cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"da140de0681b66fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"da4ef521ab05a3bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"da52477fe47c7779\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"da6171a3a9cfdedc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"da928561ec69b40b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dac2dc9a04ad4e5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dadedc718afe2cd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dae068143b721476\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"daf22d06c3871cf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"daf7a6f3ebbed41d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"db25c99efb9527ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"db92210c0451a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"db941941a2e59a4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dbe048550fe42e60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dc351adcdb41d6ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dc8aa1d30d8c936b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dca5e4a9e78ca017\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dcb4bdbb43254bbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dce03ff14b512bbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dce378728de8b7f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd05b99a76ee8db4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd3642b96dd6ba29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd4a884c050f8177\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd56915dd5e74255\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd81150f815e1e4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd970662ffbafcbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dd9e979d1422a911\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dda4d65981e1f499\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dda70946a4f836c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dddc0e1ca6bedef8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dde68331bcc7878d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"de6020f899e41eec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dea330476f5df1cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dec44a6f9db77d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dedc1f41fe0271bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"df1c2062f1b53502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"df3e644ef8f4d52f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"df6b21e5ccf6464c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"df9df4896c3d1a39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dfacf60d260118ee\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dfea3f2fd302c0de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"dff41fd4fd23e1b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e01aae35005fc2e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e03a9115b41c06a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e050d51e8f57ae2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e07140d814a4ee1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e0856809274095f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e0884547ed6424ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e0b36ce7d4f405f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e0e6fb430a338263\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e0f4a1944005864b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e11bab8d2b5a5d0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e130b226fcab63a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e16323986309c5b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e17850b78a7b5f16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e1a1b3fb14590c8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e1da5e9798382453\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e1e815da45970c5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e1f330ec07f95c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e219cf7352369ada\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e21c26b31cd0fa47\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e239e9b665518f29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e26ace3df93bc233\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e2bb5c9fb9cd380a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e2bf7a0b063577f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e2db1f571a920ae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e2e00d0a2788fe51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e3123f3ff17da072\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e3291b48f72640c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e334516efab5c64a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e370c37d82fc04a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e3c40466504c6e00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e3daa360c6fd9426\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e42d9b11078280de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e4375bf3f00bac40\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e47f6b5e4e99a6ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e4f8fd6afa0c5507\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5143fcc9c100d34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e522c7bd58a08829\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e584a5e1d878a724\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5a156f80485c491\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5c228fc1c5ca344\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5c29103e26f30a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5f0b6e0e0675351\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5f3a52499c4f942\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e5fa6769906b2da2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e600675d990e6983\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e6104146951dc944\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e61117d0a5536f73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e644c9787e3fb325\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e65e7323381ac5a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e67a29dd15b4b65a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e69a6bd6ff5457bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e69ed8a3d89d5fbd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e6a5312b3f3184a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e6d5d4aa88bdef4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e71a6285e525b375\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e746066a50150655\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e78734c315443ea3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e78883a73bc47b6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e7acde4e29117dbc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e7dcc7bca5269c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e7e9291b470055aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e82bcfa63ea01e5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e847d18452472b3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e84b06deed1b9aa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e86b0d5914ef7bd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e871ae57e4aa4750\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e877196f36326769\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e898679f8ff93e06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e89cde9e5229b048\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e8a0ad235842b5b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e8af2bdf96e4d9b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e8de1ddbe03de1ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e8f0f513bd9b13ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e8f48f75a319d161\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e90300e530c496bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e907ce57ce63ab3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e929a6e24bb9e145\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e96a7495769bf276\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e999d15379523ecd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"e9eb8d27ec4b8045\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ea0097f055e21cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ea1d0bdae6fafc5f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ea9a87b00f66e329\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eaa240f79ee8f569\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eacf2392ed1b58d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ead81ab847e8673e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eb148bdfbcff2af4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eb57717ef2bd30a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eb7fbb4d58b2332f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eb8a413c304b74c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ebafe7d06a2b8cbe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ebd15f48d3a1bd51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ebded4b98f1200b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ebe024d24d4675c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec0f771e5d149281\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec1dddbd56d8765d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec2e745cfc156651\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec38eccfc58e8bc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec4e051b274288bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec518dce057dc243\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec521190968280e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ec68fe5520588418\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eca76bf99c873c91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ecbea2bd051e9194\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ece09dc7f1fcfd43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ed4e5e41efc14b00\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ed54c56a6e14bdc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ed9e205266f02baa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"edd9f6da9f0c1011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"edf0277b69e2b975\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee27736e18c1eb2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee32364f40ad4e9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee352f7162ca4ce2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee6026cb6274ea73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee771acbc0911b95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ee77e13a37fb40fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eeb042147b11144e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"eed0899318a14073\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef059b728e0895bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef30d64c3601388d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef4e78482bc5e5bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef568c50fa5b1503\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef622eb099792f35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ef899bcb8c8b507d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"efa806fd7ab01a69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"efca6302ba75173d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"efe83a026ec48952\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f000706231cd95de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f0034c851d9e4351\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f07dbe3b893b5009\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f09de6df6cab8b83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f0b971dda7d4a3af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f0fdc75e46b3cdaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f0feb3c0c0618373\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1110948ce35a690\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1243500fa488c8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f13f94d8a3d1f506\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f14664fa1c903963\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f14cf53f252bfe33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1517d85536151b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f15da473d50f71b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1615618b8bebffd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1df7d636d6c03c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1e15d3acb96b44b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f1fc41e815bcf306\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f2026d0ce855cdc2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f212dde2990132a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f21ae114df48b86e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f22063772619e3a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f224bf89ad858cfc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f237cdfe8c067d6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f24c6a60be819372\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f26b63899bc1b536\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f2843d8376cb9c64\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f28d4defee45108b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f29f68c1c8f8e6f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f2afadf49169a48f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f2d5e4e2d83f9f6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f2fb2c5cd6f69a61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f3085b5268db7362\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f320e99dbb220292\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f324110b780824ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f32c5f10f7e2c0e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f3715bb88aea9c57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f383255a7f624ab5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f3da6efa679ae157\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f3f99e0b69c35885\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f4152aa24034ae29\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f43a1ef8095a78b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f44280f22935059b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f45e8d408bb1b3bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f48737ace9b9b4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f4ac1282c190548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f4acf390d7568964\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f4cfb69938335ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f4ea509ffb16c88d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f50980212377db6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f5319af7089c889b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f55026006696418d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f55b2a7a7a36f3ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f5cbeeded338f5e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f63e039e3329e76e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f67642226d0cdc51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f68751cd79d3a6b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f6d375875b17872d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f71417898a21f3b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f764e0da8fdc4b22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f7894f5606709401\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f794d93133ce5f59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f7a8ab57b7a18c82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f7c5ae01b811529f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f81051c4fa6d4450\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f837ec08c3d1139e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f899c79d910b1762\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f89d24ea927caaa7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f8bf7f443a3c8fb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f8c1413ab8373aa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f9417e9314c451f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f94ff44a225d1578\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f96e1679cda66f34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f97f9f8aa8123aed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f995f2f690bc163f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f9c06b809a4ce12d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"f9fb6e4bb58d011a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa04d24a1ceb53e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa0f440da13c491d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa0fe036d95fa435\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa36471e38fbb1a1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa59745bdc2d198f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa814452176b1731\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa955610b30fb909\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fa9f1e371d322b07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"faba1ec24d583db4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fabc1e1b680cae2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fadda75139c83980\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fae67d63d1d1928\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fae7e01a416ba535\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fafa0221bbeda56b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fb027c1ea441abfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fb391040947c8219\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fb6f3373a1d848\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fb7cbced3ceb2680\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fb9a4bcc4b78f3f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fbbaff22d6f1d8ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fbbbc0268ecb7781\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fc01df849044670b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fc0913c39eb5abc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fc275a64ec7f6e85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fc59e9527cfe3802\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fc9d8cc7e1d484ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fcb298d3bf4f6548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fccca647e7fe3d0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fce0c37ee9ac1e81\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fcfbdcc87dd41384\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fcfd9b49479fe0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fd05849b1dd21f38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fd0d461791639592\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fd17e2efdbe84fb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fd22312087f3e38f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe019b3e788161d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe06616143acc087\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe071c78015df0a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe1294761b9750cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe261078dc8f06d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe2fb1c40c7c679e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe4438e0ec77876\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe63266507b0a0ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fe6e1a39ca4482a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"feace31ee77da160\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"fec617650d9b5b38\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"feefd3a1222e1e97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff445691a096e82e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff4ef40f7ff299f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff570aa95d2be831\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff5a550027fef5dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff6165402f370a9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff6a394c24c8245\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff740cbb7aa85e83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ff974657b7f47b4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ffb8569a99559ee3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ffc4b3dfde3db723\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"b7ce35345616e99a\",\n   \"child\": \"ffd0474e4fcbd061\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ba95646261b30775\",\n   \"child\": \"790474f9efcafda0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ba95646261b30775\",\n   \"child\": \"a0c0a9c93ec042e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ba95646261b30775\",\n   \"child\": \"cb55af0aa4212537\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ba95646261b30775\",\n   \"child\": \"de40670d77c371a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"badeeeb401ac7325\",\n   \"child\": \"53644a8e3218e7ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"badeeeb401ac7325\",\n   \"child\": \"9aa0c4d293002215\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c08a0c7306f5ebc\",\n   \"child\": \"7ebfe3c205d97aaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c08a0c7306f5ebc\",\n   \"child\": \"87ec88d0e1441f36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c08a0c7306f5ebc\",\n   \"child\": \"a86417064d41c05b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"105993c03541bdfc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"107d6343cbfa3c6c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"108480029473995\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"113b0ae82a99a1d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1144cf20f6fc30e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1327c6b67418ad82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"13e018b6fec75ebf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"13f4888c60a218e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1661b6aed3be0b06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"16fec7cc644a8a97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"170098a1d8a88eda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1718f1b493c8a475\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"17a507c31b01843\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"17d7439b8a1536ee\",\n   \"type\": \"ownership-by-file-overlap\",\n   \"metadata\": {\n    \"files\": [\n     \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/METADATA\",\n     \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/RECORD\",\n     \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/top_level.txt\"\n    ]\n   }\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1852cb275f42ca42\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1a0a164deb4c694\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1a118c36a5c09ba6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1a85d32359f1186c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1a87e67cc1a6edb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1b31511124847782\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1cab1f9b8071aa8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1d10fc7ed5c22016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"1d200ddd5086577d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"218a3e24285f7735\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"21bf26a5bbe1c942\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"21ffdf9ef423659e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"228433658602fc27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"248c4db1eb5cc54e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"251b1ac907121948\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"269f681af7b4aff2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"273e952e12701c88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"289ff9589ddbd8a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2b9f400fba12e0fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2bcd91d2a2ec380b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2bf265ad07593297\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2c46d9f3a966ce0f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2dbe7a8b1d24daaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2e02fdba9598d438\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"2eb8fd2af7e0f813\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"301d5e6e3577120c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"30a9baadfd1ae9ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"30c48032a92ed8c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"311a950856e63eef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"327f3712daedcc37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"32d81f50b297369\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"334cdf7113a025bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3396cde84176d5cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"344def375baadf84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3458003417963242\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"34d2afe97b6b4429\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"35090b716ef45f08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"35e665e2afcb1228\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3646e1755c110cfd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"36f8dd1543a41336\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"37733b29dc47f4eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"379f3782c3eae961\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"37a2a5bd6f85b295\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"37e4e57359aff45c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"37ec79e3969b0088\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3971e0022f5669f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"399c505fae1eaf65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3b4c5b7068aac1fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3bf95c4ad2f9a5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3c4c0226483532b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3e4d6b2d51ff1af6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"3f7f0db866c6881f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"410e6d0fb3b884fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4134af40559e8c90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4178eca6669ee256\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"426b55fba352d0d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"430b3e5112f01b1a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"44dbdc6fe83b0de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4647bdad673d5151\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"484d53df46cb4db9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4873c9de201bca5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"48f2bde2e9768ca8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"491d9455d659c87c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4a169ab8e6c710e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4a68c1b211151806\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4ae1a4f071dd0313\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4b112f4413d8fbc1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4c12277075470cfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"4d107e0976b77157\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5000d86294d0f045\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"53888d37455ac0d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"53dd06145b4b540a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"542f07fb7abc1d9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"545b03054cddf4b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"54fe31d710917233\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"55d33a06434266c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"58685d7326700e76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5881ad431d873ad6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5a422041a988cb96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5afd342761822477\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5b17f010c739bb52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5b588b0336298c58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5ba7f6b3de1a20d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5efdfe697aa518fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"5fe367198996e757\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"63ed7f20b75fc428\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6405dbe1a7e49548\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"646c2f6ca69da6af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6547e6c246e55a03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"656fc27f84bc9e10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"66880078ab383d93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"66a31de6cad35bcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"66ce7b19656720f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"66fa3669b804e6dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"677c875eb9d44b15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"67f9e2972814dc88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"686872a0e34e3b0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"68cfa0c70b97bec7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6a2d966f99fa6456\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6a447a78b7cac01b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6a5ae374e7dc4a75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6ac588d5c391a13a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6acb5cea8cbe405e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6b7a0fea9931ca3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6df9d45884101010\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6efc3a8c2e59e8d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"6fe2339e9077c4d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"70731889209abe82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"70fe12696cf864c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"71ce6ae23a94bdb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"72571f2c180f1f2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"72be6566635e957a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7391b1afa8350948\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7560a92aed6efd62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"76b85acf2494ec70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"76f8a0e476711190\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"777065e17ffa6e45\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"791c5147f046c66d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"794ad4ff43cd8c94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7a3b694499db013\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7aa920610b0d514c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7ace2eaf14fa187\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7b24f7ef32b247f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"7dec4966e8c49482\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"806a74962aa51078\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8073e0c97d1993bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"81d5dde6d0842f7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"83e2cf09e0c092b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"840ebbb3d1088f33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"85475d0982626629\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"86ed90ea9753d995\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"86f98b3fad5c518d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"883f343b181d288f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"88c462b274296ec7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8934bd4823520f91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"89d3102fe384d79f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8aedc1f75cb5636a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8b013053646d1cfe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8d20242383eaa718\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8d286bc5f7fa2fcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8e36bd090c3efc32\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"8f31346ea856d24e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"90824cb9b5417d8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"913f0f7aa8d614ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"92a8df889627cd8d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"95029279fb6bf32e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"96089759f4436998\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"96f1ca263a9ba1d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9727f52069cba70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9add77e049d8f855\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9b516e23afb4754\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9b9dec6c59d9a3b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9bbe83e05f770bad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9d294dabbea714b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9d7e0851eb9c8374\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"9e1d93e0ac9ed5aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a00b2cc298d25fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a0158f5423b8bb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a10ced586905c3cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a155bff7763d2c7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a302a84d73f6c1b5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a32216f4be9a0c7b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a3aac57482279acc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a6b12c16e4b2bbdd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a79af2b7aacf48c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a7bc72e7596f6400\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"a95d9e307f430c62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"aa5b93f25d339e7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ab21c674521710be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ab4b03ff13c59209\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"abf2d2f1c3351849\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"abfa3f191cec3676\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ac51f385d284f273\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ad4520b587e12d27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ad75a7c63f305720\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ad8e701b54d24f21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ae92effb7008c7ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"aedee9e07f3cc60e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"af6e4362cb83595d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b36c7b007a3f2b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b486760e43791580\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b4ea9d7f9aa6eab3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b523d14908842d9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b5aa78037206cb69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b6fe580cec5cba2d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b7dfca7ca1230049\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"b84a81f4a4718dda\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"bb9e81413d0c9e8a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"bc61370b428623d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"be08a6b70086c1d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"be4fa9d0c66c6933\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"bf1b47ed3dd650d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"bf5040e0c0697395\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"bf620d08470dbebc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c1000195f17b33c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c12c589d80033c35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c1a4ceebae959905\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c2052dc72a162d89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c2a595a1f0ed67e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c2b6a8b6280e933\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c321784303c06ba6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c530077594dd2dfc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c59cf0c6824454b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c6dd4b3c15a3aaaf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c911fd734447d760\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"c960480a289e80c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ca5d8fc6fa7fb734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"cec5ef3426640580\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"cf953c518f852a35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d15c17cb94178a27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d251ffd39b445710\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d2757b4fcf26f32b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d36d759df79bcb86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d52a6ee8be8ff1e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d675c4460d6ae0c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"d6a42e52b0187a65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"dc4766bd2528fb49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"df78368086f345a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e02ae821a153cefd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e0fd5d1d7d01560\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e518f7a4f5931b07\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e54ef4cfee35cc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e5ed048560512b98\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e6a852d6cc8479f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e78f3f94c41cf125\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e842ecfb912fad1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e85e4c8b7e7fbb41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e86ae29e572b485\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"e8d1fc7f3b9ccdf2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ea751aee625f59f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"eae1ad4925559d73\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ebca81f3d56f19ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ee121dcd92b2328b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ee5e74d82e381b21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"eef4a23cdf6d0b77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f07001528a392104\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f422da443afef12a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f6a5eb6e2e21fed4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f6c84f70b104cf4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f6cded1317e5f1ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f6d1e5a61de25646\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"f8f667976484b9e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fa3571b859b81a9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"faf87a4a812107d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fb6cf95cdc1fbcd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fc0361c60d15fa22\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fc6bed1bc6244fec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fd41b526af349967\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fdf0522cfa3593b2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"fe7ddad3e38dfaad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c0e9a743b6db4487\",\n   \"child\": \"ff390510353b90fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c313d9f902c01133\",\n   \"child\": \"d70cb9e7cb48f889\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c3c41bc1427a7dd6\",\n   \"child\": \"39ed5185c9e00883\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c3c41bc1427a7dd6\",\n   \"child\": \"d878ed1b48378245\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"1d0dd74c62170cd7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"31ea3b35ba2bcc06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"604683803ecfbd4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"6b7aef9271301b75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"b3c2ca8558595e80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"c70fa93ae1def9a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"d1dec095d5cf45a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"d89c4276814ea659\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"c68333b0819fd540\",\n   \"child\": \"f530dbdabd4c9ecf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ca16971f269393a0\",\n   \"child\": \"546155ce8f5b1d41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ca16971f269393a0\",\n   \"child\": \"c17ffe7fa1df6502\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"120925dc2800b739\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"12adc5bd6810ab82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"1755b74711a01675\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"1855a4d56b6d243f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"193ae6552ecab064\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"19d2f6f343d8e9ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"19ff03b844637de6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"1c280a32aceef0e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"21bbef18d1220f09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"29a3a8977187064f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"2c2214c81f6d463\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"2cd37e7b1c02a28b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"2e3cbdb51dc790e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"2fab64663bbcc26f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"3041689f3ee3f2e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"326ea08a97493bec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"36431b9a14038c26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"373ba897759f83fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"380b2bc8aae8c6f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"3b6d783a032479c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"3c994064b6de51be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"3dcaeda69146f813\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"3fe75c8cd6d29db3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"47fa00c3f98e7be4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"4a946c7ec7053350\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"4b472adfb3ac222e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"50299136d41f5b39\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"555abef1d73a6f60\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"573e85ff1c4f1984\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"587870656f97d66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"58991fab5af1c452\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"5b119ab86c603942\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"6d2b15c974d2b240\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"737a8a83eb187044\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"75250765a1c3f07c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"7ad87b76e86b7c03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"7e86eed918c06891\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"7fee15555ccf3323\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"80ab35bafcd0474d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"80ed92e2668f7fad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"823fdd2654c81055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"838f70f52a94de21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"839eb54cb2a44de7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"847edf7a55ab91bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"84ad52b6071be5e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8691c693d52423c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"86a4762e9473343\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8ae5588e2c3c7364\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8bc50307708d458d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8ea8a7453e2f3a16\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8eb1a96dcb215474\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"8fd00524da665b5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"9322400200e46e02\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"93881f5327144d01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"95b05acf95ac6a1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"95be0ab287c631ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"96c2e44e3c37bef6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"9b5f60e843774683\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"9db795da300aed6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"9fcd8285e5c3472a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"a08e49ed55a0c23e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"a46ab3fe015d61fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"a587c13963391ae9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"a78da426fd28b50b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"a88bc0e7af30586f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"abe8992d382d50b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"b0a4bad313cb13c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"bdb6ae9e54cdd529\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"bdde6f277fbdad5c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"bddf9d75056e6681\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"be4728998b8832cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"bfb4df36b36e667e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c079cc99c57de281\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c26d7978f4f94274\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c2a61950ffe97624\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c36796d512782c71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c60ce6fd4e3efc7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"c66108f568022203\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"ca6e5d2a3e52f718\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"cac1f0fd529f2081\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"cee4d51d8308f692\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"d5b2f9842b8cc303\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"d89f6d84afa1da90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"d9cca57e8cbfb03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"dabb7d10d0d19f84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"db8c7b3c435d69ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"dc6fbea94c3631e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"dd07411d1d3817a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"def54d854c70fd7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"e148581a4c6dcdbb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"e20e0c5814815415\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"e25399e78a2ddbf0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"e49454db005de573\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"e91cb4fa24ee0e10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"ec0d2a3843df3a89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"efb038560a559493\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"f44fbd9de8d6d8aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"fa1241babe4ca3d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"fcfb56bf187a56ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ccc1c24847ff05b0\",\n   \"child\": \"ff62bdceb95eedc7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"6f514bb35c261ba0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"72fdfb2f4c4326da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"b50b6a784320089\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"bcf41ff766632d6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"e9e77ebe82d89859\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cdd6a5d960cec05f\",\n   \"child\": \"fcae7a6b1c6e3a27\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"101f806ef1af21c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"106802f609ae3af3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"10725d4281f7deba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"12c3b73b7490fbec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"134c7d28f877ab01\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1412f45b85e227b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"15f6bc2588f590\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1622b8becba935fa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"17e46612388f0d24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"183544802a0579e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"19286e5e6b914d9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1bb3e80c72d47777\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1d0d962a94e28ff4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1d8da8e45a93edeb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1dc79cbe33d7021d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1e625f68ebd57a2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"1fb9088bcda13d65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"20a74790ae4376c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2168ee31924543fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2180631c6970dbb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"21c2be92853b0017\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"21d3e6fa2c04018d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2306a06e78517f68\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"232fec4ee003ef4b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"23c56716364ff796\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"24b268ebdc303bc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"252288b429c7cd37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"26f5ccbfd631d10b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2739054a7b0eda34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"27545270bae60f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2760ae2159ab2a8b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2765e35eb26b89e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2787cab186fc8cdb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"27c11ff8ca37d065\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"27f6b44d4969554f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"282935167e903824\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"286b792561f6daa1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"28c251ad7de9040a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"28eafbdddd4f0b03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2a1ba70c49a7c094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2aa9f4fd98ad499e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2ba6ca32343a041a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2dda557fe318c4b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"2e82945a1ff11573\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"307e48b07af5c9fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"30d5f5a3cb7176f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"312f7cffb9eccc28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"31e54458bbf773a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"31f16e4cbf326671\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3271b39af8959c8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"34544561867193e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"34be7c60167ef1ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3544aa7f9c129564\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"35c9447aa74d2eb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"371f0530eb79e228\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3761c41f5bb226da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3833888b4548c35d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3a3007b4ee7788a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3a7266fda78b6b85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3a9049e7aebc217f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3cc71d528d3c3159\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3cfa71a34120f1fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"3ff71652d89578e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"40163695f2723961\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"405889b83c1e43e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"41866c6af263ee21\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4291ec96c539ee89\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"43567cc718a2792\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"447c905108438014\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"452a605a4a3bb2b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"48222b2f34a0a09e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"48c8a9a7c5c9fe94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4966c0ade5a44f7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4acb54bd382da65f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4afe9fcdba599ead\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4b5cae1058a49f55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"4fb64228e7ffdead\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5042c39b6a2ee9dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"50f3f49924eee221\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"51d5aa3cf8bb6741\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5246c7b913478ffa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"524bd013189e2753\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5366e0044c0d3f70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5691b1d753e31ff4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"57fa6ac7101d5125\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"582987899fb83377\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"585f875ac83cb3d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5924dab68420b379\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"595907ad60fa8aa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"599dfcd946f109e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5aec7a9f943eee04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5b6106f4f5958a09\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5c9d9a873b10900\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5cf1796276b46685\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5dbba31a1281b519\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5ddd8cc58d8c2c8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5dedcb1eae344687\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5e3ac7b2b055fa06\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"5fe8787336fb0d04\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"64bdc0eabada4b56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"64f1ad3ebf7a640d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"64f975a27bbebc1d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6541dff72108d53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6670996a29c1ca9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"669d18d7814a9bdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"67752b88f05ecdf3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"67b9e9e59ee857b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6b09f735915ba011\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6b60961a74985855\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6e2b57b3acfef842\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"6f8b65da70837cc4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"70b0760fe25760b6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"71920654465dbdfb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"72d894e5e45e92e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"72fb64bf66d8ce67\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"735c8a701e4f18b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"73e9c1cfa58565e4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"741b437d165022ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7425fdc018fe9c95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"745ec755fd4f9264\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"74ba3c46c060324\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"759be3a11e4133bd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"75ae91d6cb5d9f99\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7691b71c42c9cbcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7736212392389cc0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"784b754277dbfe4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7a5c4f715ea0fa43\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7aa5ea0ccf4dd9dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7ad8ec571db17e10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7bbe8fe97dae9282\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7c02251065f06aa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7c383d53bb8049be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7e82f6b54a397885\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7fb083f2ee14b257\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"7fd2ceedbfd022e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"803c5823e0919f2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"81a22fa905de78af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"82c5841b1924ef9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"832350b594838c2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"84621be7d4b939e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8511bf213310e9de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"85178b88c9f96683\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"85a7daefa4d220c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"85d3d648cf981401\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"87f08873bf5422d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"883720543ee70457\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"88bccb99896c77d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"89c683ae267aa860\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8b15ad2457658800\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8befe449a0b49dae\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8cfc4036d917f5ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8e6731738bcf1d6f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8e7e23450a11e6f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8fa01ce72c96633e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8fdb34a7ea17b78d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"8fe42ee597f52bcf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"90fcaf0f23ddad0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"929ef5709b2b9d71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"92b8046dc3b3c5eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"94e847f1e90e9181\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"958fb24437ce972b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"95c1180d025fcb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"95f9f614b942dca4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"96eb51c59e9bd45a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"97b33338af54f6a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"97e26447364e623c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"998b41652fd03e66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"9abe015b27608f36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"9d8a4447a6425bf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"9e46f8786f2f8486\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"9ec38daa81359e7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"9f3475f6cfdc036c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a335a37a737926f8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a360999857d795f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a3856ee87f0ab47a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a46c879c810eb941\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a4b1a2f573958656\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a4dd3a0f9230d851\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a5ab120fe3f4504c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a6384f4869257567\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a66f88b7e103fe83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a6c65a1139509bcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"a9a2f0dc1d695d8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"aa36174fb3f96fd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"aaad97f071936963\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"abdefa001c02c187\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ac3aa18c62159153\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ade8d730e36da664\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"aff26cdeb10c5e1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b02b39de70af2737\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b0773ff81936eee4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b11b5a319232ab5a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b19954c86bb4bd5d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b201ac8c1142dd3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b233b9c33b5521ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b2caaf76e5adf042\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b350351035e09f9c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b3abe7886f43e8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b4cc9ccce0ad66a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b5863eb7fe9ec7c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b688dcc2ada6335b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b8874112d72e632b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"b8ac5f4811b9e9fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bab3895a2730d965\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bb613340fa38c7bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bc0417cecfb5656e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bc6bc64e188e7b48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bcd82dd61a4a4948\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bd90196c167a2c0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"bf6bf063531119f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c090836e57abe86f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c0fa36db71a5b734\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c11bcd291c60c82d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c1b179585e384110\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c41f28b01d10c99a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c4365385dff7f816\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c4520a51de190f1b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c530439e2bc8df0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c69cc087e69d3cb4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c6d30cba89e1d5b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c722161968d996d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c83b63080ac365e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c92abe96b5f11ac0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"c9b52bf12b31fd9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ca3f4d25cd85ff3f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cb6e2491463aa9dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cc48eb1aa6941772\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cc5b93249044f62a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cc8cdba89b4deda7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cceb604880825aa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cdf8c623bc2ec08a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"cf6ad468e28c46c9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d0b94fd6cef99787\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d0d7a38ea98cd65b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d244b223e374041c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d38a929bc43eab94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d38dcce6eb369034\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d3e71264cc698281\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d61efc11cf3a4a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d63b17248541cb85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d6c2cfaade87b175\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d72865d2d98e25f4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d774e4f8caed1df4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d85cc70df364662c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d8cd68066b9cfb94\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"d93f3d3e6d9d734f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"da30fdfb59ea64a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"da5a93308e8c90d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"da905e716ac2f512\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"dacae5684c8ae1f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"daee6847bde55c78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"db5dd2de0ffde7e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"dbdae007d29e36f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"dc7f5c582c53779b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"dcc70e03a4ee6961\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"dcccb75eb95c7a25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"de7c369bb9da5ff6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e060fd64e3589b61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e15f3742025157d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e49d227a9553cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e54a44dc44582eb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e6f6ab7f2543acb1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e723de1317174fb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e7bef8e5fc3d47e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e7f74566de9794a5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e9174b70a92cb5e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e917d08985018350\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e9562f89c10765b1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"e97da03b5e0bb030\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ea4d0931a5f417ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ed4f897377589fc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"edce2bc8b3952151\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"eeaa6561cfbb46f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f11e0294e606c2cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f2c7437ad7c3ccd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f3a8ada2c88545ba\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f510c21bf556959d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f5d66cbb67a40ab4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f724bc2eb1946a6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f77c881395cd0de5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"f7cfeb83376a06e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"fa7ec191d5ee8fa3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"fb81e11d0c9ea08\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"fb89919cc6d29b31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"fbc1bc3a3b84be3a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"fdb9b5866b8e3391\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"cfbf71846d786720\",\n   \"child\": \"ff06ab7394fdb65d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1ade83f05db44ec\",\n   \"child\": \"7289ca64578e024d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1ade83f05db44ec\",\n   \"child\": \"9bf6a503154e7e74\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1ade83f05db44ec\",\n   \"child\": \"b02a5ff33c3c462b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1ade83f05db44ec\",\n   \"child\": \"fbfd17299feb9cec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"2dcf05d284244072\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"567a8aded2c28b88\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"57e5cfcf3f291f52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"86fd60e70c50f59c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"e0226e1bb4403b63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d1b10ee7e459842c\",\n   \"child\": \"e4bbb157fdbffae7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"14fe918a56cfc4ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"1594581f772eb80e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"5bdef97a3ba36f6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"6e54b76a25ad77a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"7bb61af9004fd32a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"8f41e7291bcb51fc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"94cc3e5f923615f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"9f849d2e43a3c881\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"a6946cc4ff571f1e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"a9b385f9fa6cbbea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"ad76fa212d02b7c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"c47a76d2a4375ef8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"c94ade893c6797ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"d9752ca791281840\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"dbce97643043b578\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"f3319ed7ea7d3acf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d23e4f6a05455a78\",\n   \"child\": \"f3deb264d48ca71f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"15d0e4c77cab703b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"1613134cbc15488e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"172102122803c853\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"1c16539172f8a484\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"1ce627f751cd18ca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"208b9da094707bcb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"256f12aaa7de5fef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"25d3bca05c28fcd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"26617a38d3cdc975\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"2710fcb59bfb1016\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"2950efe9c884fcdf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"29afe1173a419458\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"2c9d940d647f6e10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"2cdfb06499ea6ef0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"2ce33c3e4ef7bf52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"30984270262e8039\",\n   \"type\": \"ownership-by-file-overlap\",\n   \"metadata\": {\n    \"files\": [\n     \"/usr/lib64/python3.6/site-packages/gpg-1.10.0-py3.6.egg-info\"\n    ]\n   }\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"32e759b60d06e72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"33c2b2a73f65a3d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"365459393e1a7e77\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"38874b81948ef90f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"395fa2e08a633a28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"3a8869514d56096b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"3f42f804ae6a145a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"41fda91d3b829b20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"45e710832d187d4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"46bbce23f94216b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"4795e08ab618c7e9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"47a242daa8665f0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"4a2980c2bfe9777\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"4c9619f14c383b82\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"514344c8b3aceab6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"521513f0e18cae86\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"522f4283045ea3cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5325351e8f70ab6d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5533bc6e678c7774\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5945490da115451c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5b60bf489e55a7c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5bcdf34e881e48d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5ef19296fa9e70cb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"5f4a5182fa08b252\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"61a42a14db4ad53e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"61e36436af8eea71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"64e7312e31b7547a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"6e25c27443c21451\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"6f06497249611464\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"6f9b7a19ac365c3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"70d7e62897b0adca\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"77f062c5e7fad4e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"78f6c5bbf6de69f6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"7b8d5179303f8fad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"7be1be6cc32f6037\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"7de274f2a691a8ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"87226d3132bd709a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"8c26fbad08507a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"8d3ce733583ffb90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"8d93ad74a00dbdb5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"90bf5df1c7e90b28\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"9226e1a85252e630\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"93194b4b8a802c80\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"938043b0248daa59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"94dbae27eb98dfa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"94f206e576184a93\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"95794df6e2a2b949\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"9584e9e8cbb8023e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"970e286e48411add\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"9a22c808188cd1af\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"9b550c255e4f0b95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"9ba9813a2b30b3c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"b8bacffe338ddd90\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"be41eebdc0f430d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"c45118c3e9e60226\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"c51ae588e0dad89b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"c6944b42aa13f36\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"c85bce403feeabd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"c85f99ee95897372\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"cfe1a86639617094\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"cffab25540d84868\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"d10bba22e9840177\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"d2221e7bba4c2acf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"d95b9cafc38672\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"dd199e7620b68d51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"e076723d788410df\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"e1ea12fe63dc0f48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"f49815439ca77d72\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"f66841626ad2696\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"f80c3c7b7d185c9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d461e64362d25059\",\n   \"child\": \"fcaa1a08c9d8086f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d6b2892959b5c1e7\",\n   \"child\": \"253bd28b1f40d73b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d6b2892959b5c1e7\",\n   \"child\": \"dd5327260a58bf26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d6b2892959b5c1e7\",\n   \"child\": \"f8181ba87b0f2f7c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"108dd82ab1dd09d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"12a68f870bc5fa70\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"1d39dc38717ff5e0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"259d045e284f0fd5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"26b90c103d8641e5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"283a6f38b170dff5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"28e2a62ea90a5646\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"29890e4581e5c821\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"538418be2adb0171\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"55750e6459a6ab56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"582db372664bf9ac\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"5d0dfe139c00d14c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"708dc8bcf543d2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"7292cd2e44ab1a4f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"76b96cd44a2b050\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"7cbfcbfafdc9c6ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"8bbf85d062ae0585\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"8e8ed36298ed8abd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"8ef4b061681fe539\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"92a069821e56246f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"a7f5977a76752839\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"b097b8ed8c492b83\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"b11ee994890ddd84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"bf5132be68cf1970\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"c612738104ee2f37\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"d31756370ca0f6e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"d5fcbd367fff5623\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"e3a42f28f7f08d85\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"ed3d6ff7fabed588\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d749bcbda7ecc0a9\",\n   \"child\": \"fe49f4c9080729a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d773cf3bc374761e\",\n   \"child\": \"74dd767d2cc274c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d773cf3bc374761e\",\n   \"child\": \"822c3967b68ec464\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d773cf3bc374761e\",\n   \"child\": \"f1fbe0217da899d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d840273e522f2358\",\n   \"child\": \"423799d6a68c76bf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d840273e522f2358\",\n   \"child\": \"62610b0b1aa63337\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d840273e522f2358\",\n   \"child\": \"c448273e1b803642\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"23685b7fe28b75e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"25c3af63d81495a3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"32346d49e3c0e8c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"46b6025241a420ed\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"4ccdbf79acfbfb54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"57c6408d7c48e96e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"650a5d0467f0b4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"6740876c9e21a81a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"84d45274fe5754de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"a4565cd22306534\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"b2eba6d1b47d581e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"bad9ef16dd1eab9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"d96caf89f9a4dff\",\n   \"child\": \"c5d8d476e340f4ea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"da6b7c5170a41669\",\n   \"child\": \"ac1c965efb2a741b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"da6b7c5170a41669\",\n   \"child\": \"e338a2acd857ffbe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"897ff0e34c7cc33d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"b10a215b36650b20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"b19b4502ae527e58\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"cd8e36e1857144be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"cee9ee141e2670dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"dba6d46666d99d8d\",\n   \"child\": \"ef916f1c1408e8d2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de12e2493a6eb51b\",\n   \"child\": \"114256d8b8d1e0f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de12e2493a6eb51b\",\n   \"child\": \"93cdbc29a7b221cf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de8469fece675af1\",\n   \"child\": \"653593d2471c4f50\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de8469fece675af1\",\n   \"child\": \"b8b2f30619c059d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de8469fece675af1\",\n   \"child\": \"d71a1cf54e15321b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"de8469fece675af1\",\n   \"child\": \"e3783365a0cbec0b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"df5081279bec5cd2\",\n   \"child\": \"6d54df85e5cac225\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"df5081279bec5cd2\",\n   \"child\": \"def36e674a90b06a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"14d0de02ac60cd4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"24ddb329edd01466\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"25f798442c64c646\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"297eccb32d5f12ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"2a274f07db8638a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"2b27eb36470a5d54\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"34b4e8122ae5439a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"36699ebfdab5ef15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"3771274f03df0e96\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"3838f0f8f878dbce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"38a67d419b153b14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"38f7223254cf813e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"425c396a4feebf84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"433b753d8c0ca827\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"4415d110f6fd129c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"4ac7e8e6e450a42e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"4f3b63982de3ad63\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"4fb30bacc7b3ca15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"501c3eac1ceeaaef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"52ffa3e918db5182\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"537fbe20c21b2ee5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"54a91b0d7479599e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"572a8cf3a8a8259b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"5a6dea21e36cc846\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"5c36ed068398dd62\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"5c588e4ae50c0200\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"5f1ee7150223659c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"5f36e90f9740da6a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"65845d5fe328195c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"6b21c0678c0c74fe\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"6ce46aa4444396b8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"736b289fc9b2d1a9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"757decc669c32c95\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"75f598abd35d6df1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"78a08ffb603d6252\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"7933f790bd358437\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"7d9212d08a13251d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"7f66937b6aba88d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"8862fbcdca9b501c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"8b3dcd544e3bce84\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"9153a78bbe7a0821\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"9734e3b3f235ea4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"9914a73334060dd8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"99d31bddecd4361d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"9ba6a9d7d6c26e34\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"9bb9a9738adbb1ab\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"a016b9e2dec06c9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"a0466cbb17ea3de5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"a37803c4a078965c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"a654d4e62b9aa05c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"aa54aac0846335b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"af72be340fcdeae4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"b430a2388a2f858e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"bfe36a3a881894dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"c0f0a352fbd791da\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"c8c561ed933b66bb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"cac3834ed7f9b183\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"cafe2b17af58c882\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"cf5cb0cf9d94eecc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"cfd611888b3a757e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"d0aaa229b986b827\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"d26675b5dbb54c6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"d4cf3a80df8fd481\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"d5e3482fbb583dad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"d75d783ac1ac5539\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"db4a8fd024ac56d0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"de10b073dea7fe05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"ded0257134adf7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"e0faad9c904c03ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"e3a4518d1df2589c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"e58e61726b4cc6c0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"e65be8ee574c669f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"e71941cc58f74b91\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"ea9c992c0932ad87\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"eb63785cc75e403d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"eef23b4186fcffa8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"f3610110aba40285\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"f3baae532876419c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"f71f3e9af725d40b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"f97a5c54e43fe402\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e0b8ac42a0bf3539\",\n   \"child\": \"fe6cbaf60609562a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e1d32f20bd8fec9d\",\n   \"child\": \"33d847c5c285254a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e1d32f20bd8fec9d\",\n   \"child\": \"a4f17a5666c3ea0d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e1d32f20bd8fec9d\",\n   \"child\": \"e1e36eae5adba2b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"1a2df0c739458823\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"40c4587c3638d72f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"49d3efc9784d795d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"4f0a2be67c5caa46\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"690cd8d2ea0faaff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"85f323aa34b082e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"8d6e3c9a80f8e2a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"93d5b0961ce52526\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"a2692b14d1cf18d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e2874ecf00fb30e1\",\n   \"child\": \"c3df2452be6ccc65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"10b5df2c951a20f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1335e2ebd4cc910a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"141d04f45ac38ce4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"14217301f21c16b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"166574cf570cd7cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"167bb37775674ead\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"171d6df943834695\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"18fa36cf467b0a0c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1b607c2f26d88ef9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1bcdc176c09f3951\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1d2df2acf5baa3c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1e501b55aa0ace9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1ef6eb460524fda3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1f34b9f681f5897c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"1f54571631b06a15\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"203de15b7edd1614\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"20fdc0dd598ba73e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"22963e7f2a45b454\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"23b2ccc923769ad5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"25c0222c86c7e78f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"25e230a14d09e713\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2678a8e48331bbf1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2759dc04a8cd0c78\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2768e23c5e334c4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"28308cc2f4200752\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"29a78b031cc5f6d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2a515fd795b2fe10\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2a675e763eaf640b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2a79a4bb0d53f087\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2a7b59a4e5007731\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2ae8db5c4dc6404a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2b0c8e90241bde61\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"2f122b1fc7b2d4d4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"30f22d73f7fb1ea7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"312632333a03fe3b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"324d459f91b55929\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"32ace4f174efe47f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"32f2ed25d2be6e2b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3339a2cf36843fa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"33548b6db7cde05\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"34b35465618fcfd4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"35effe27b1271fa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3ae71708b6401faf\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3b74116b21abcbf8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3d8a73c96d15efa8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3dee0cc256cbdc97\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"3ec878b9a03e09f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"403f0e67ad5f15d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"42f1de85f24477f7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"449c4d7423eecd0e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"44dfd4304d1eb431\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"44e02092d16c53ce\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"46752c364a7869ef\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"49f90b14c6009e92\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4b5d50d951d9fc48\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4c09f54c4a4cfd9b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4c139a991131b782\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4ce0fba4ddfc95fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4d5b3c7337b5f12b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4e3d5732136d0b35\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4e6566e99677ecb4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4eb6daebb9cd311c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"4f079b832735fab1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"50565ea7b360da2a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"507275e1f1484add\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"522ece119091213b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5337197c6f2de198\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5483a35b727f852a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"54f4c6012fddc7e6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5594732bc28e9eb6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"591c5dba346667d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5a1409a0558cbe59\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5c53e94e51ed9b7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5dc3d87e90182c31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5e361a7069fd15b4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5e554564193ddd26\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5e9ee0cd1f948226\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"5faf156f54084aa6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6056296633e20c64\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6110f44a31fc99d6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"63106817d4c60215\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"63e7595f8334fd7f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"65399cb967d2deb0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"65b12f4ee0f40b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"65ec36297c7d7bc3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"665e51317f8023dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"670f386101b80321\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6741a75a2ba244e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"68e9aa88f2449b3c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6960c96ea4f320b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6ac247d363593fa0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6e1bace9de6edfdb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6ea10095595a642c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"6fe6a15f26b1da2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"724f455182b1dc76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"72c17395fed78a23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"73092c2167d56a9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"746a3fc287f86876\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"76b8ec4ac4f2b09a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"771a458d6cc8d972\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"77557a535a74c51\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"77a7bfd974c77c4c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"797116b82ee5903b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7a2ddf18099ad55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7b025ac8ed08cae8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7b3e11e837d3363d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7ce1aa05cac47153\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7dc97cb10aa54a3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"7f0025fb991358dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"80bedcf5ae9e6fe6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"80eda2fe51ad3080\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"81566be57f4f73c6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"89b874b14ebdca31\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8b2012fda901259\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8ba61bc110c8a726\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8c2631d921d4fe9d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8c2655877adb22e1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8d7e50b60610cff7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8e5fb3d7f69b6287\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"8e66348bfada47f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"90ea349537d25128\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"95bdba0385faaba2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"97a19532caa8b219\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"97cfcd85a469922b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"988bb71f71da0265\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"991b1b5a4b58b2e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"9a25377450add3a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"9dce6eecce73d0ec\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"9ecd0c307a14a9c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"9fae0420239ab9a7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"9fb6c962fbd9aeea\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a01d2412cf621c8e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a0b17df7710bd8fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a178218841c0148\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a5a358492f145c55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a5a9133661acc76d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a5cf2fd0044e7239\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a5db059db3db65e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a8ae21817eafd2c3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a8c3371acf6fae5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a90992388fd166cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a948977fec15d3c1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"a9fd2b4bd175bcc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"aa247b5cfa40fd12\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"aa3f7a956cd2c66f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ab5cc13a02174318\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ab6fdef442e226dc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"acc8e58f1172cbde\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ade8f4740c69459a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ae1239e9e421d9f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"af6041b8c0acee6e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"afe52868daa8b68e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b335d683280aa1b9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b5c24b90a65cb5fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b6d4d69e60b22ea1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b72cb868dfbc4b66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b80f9676723608\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b9d08e88ca54536f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"b9e7acfba5c55e8f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ba7019920bcfee4e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bb08177738fadd14\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bc9685739dbb1b5e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bf28a015e4148ff5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bf2b86a67c6754eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bfe0e790f03be44a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"bffa1d8bac1dbf0a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c0c7822eb3b57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c1a14dc860fa5d2f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c1a1a1b0a39a192\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c1c535d2ae3f87e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c1c9030a1dd4eb52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c3635c9ccc2b9a53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c3d67ec6ac82fc71\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c48b1b78860a5188\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c6e9dae1000aef41\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c7585c771ce35e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c769bdc32fde51ad\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c8cc1399f3cf307c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"c98a5ed5485f5628\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"cb0c3082b7637689\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ccbc8f6fe857fed2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ccc2a20a8952dbc6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ce073c7ebdfd4457\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ce0f386dfab11d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ce6f9b4693360009\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"cf1b9d0177c47a76\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"cf672599cb169b75\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"cf8a67c2ce987fb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d0bac5bd5cd92a4a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d1a234fee7b4ffa5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d2d3ad879c885ba5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d30a7921ff9858f3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d357c87f7754758b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d3b9a2b8bfecab4d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d5cef5a90d0116d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d6416e9185a96ad3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d6d646803038eee0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d7bc4837b4dda949\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"d969ae5b09b1843c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"da394c02c30522f5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ddfe427aac2a402f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"dec85a7102c9e0dd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"df3256f529bde055\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e07ea94566fa1584\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e126ea0d5e2c992a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e29abfb877d3bc9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e387ab6ae86b7db2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e4877bf35cfd1f9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e527eee9a5e86385\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e69640086c245186\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e752c94eb30cb03\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e7ed47326e6c52a4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e8e238afe0194bf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"e8e33ca83cfa880e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"eab593672000e7bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ead561bf42415e3d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ead7a07edff84247\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"eb448fce7a68fe69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"eb6f35823859ab49\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ec91ea321dca5230\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ed3656c3b2a21d33\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ee72f630c34e80f1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"efc39771ebc18aa\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f0b634e4744340d3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f25266ac310bdb56\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f331c03b5a0b12c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f40ecb54e95ac558\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f42577a6b3135cf6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f45b8a547865ab9f\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f4678376fcbb04d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f481da166645f9b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f67a514eb207dd65\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f69a5ddafa95ae24\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f6cddc4ef6f9164\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"f87b68d62926ea5b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"fb087e97ab0db5a0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"fc0d9c09a7b747d7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"fcaf2504f15f5be4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"fe8c46e249b05eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"fedfc595905eaf17\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e57db3737a1d260f\",\n   \"child\": \"ff082f0218739258\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e5b7546dee92a54e\",\n   \"child\": \"2511163dec631820\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e5b7546dee92a54e\",\n   \"child\": \"7243b7cb66b4b6e8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e5f297bcf5b58871\",\n   \"child\": \"846ed031a32713c4\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e5f297bcf5b58871\",\n   \"child\": \"a04f27ae1c37e5d1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e6342710c8f2a2e\",\n   \"child\": \"181733915118b1b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e6342710c8f2a2e\",\n   \"child\": \"e051c2af04977175\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e7be61dfbc86a063\",\n   \"child\": \"1b87e1caf5bfa840\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e7be61dfbc86a063\",\n   \"child\": \"6354268dcd66576b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"e83fa6ed4af77643\",\n   \"child\": \"a1b272ccb3ca4526\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ea8fa5c9e4a596e1\",\n   \"child\": \"3a0ac7336f1d93f0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ea8fa5c9e4a596e1\",\n   \"child\": \"8e9f70afc163ae7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ebe7da0e8f5a9264\",\n   \"child\": \"44414b09f756e71c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ebe7da0e8f5a9264\",\n   \"child\": \"4763d179bba6bf25\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ebe7da0e8f5a9264\",\n   \"child\": \"9531d0fb7dc3308b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ebe7da0e8f5a9264\",\n   \"child\": \"c4c2d2980691a01b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ebe7da0e8f5a9264\",\n   \"child\": \"ea9153547a007443\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ef47147310c2551c\",\n   \"child\": \"1f211e1664cd0d55\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ef47147310c2551c\",\n   \"child\": \"38da219d74a5257e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ef47147310c2551c\",\n   \"child\": \"93da8a981724d939\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"ef6f5aaa5feb0555\",\n   \"child\": \"b5f6de8acdd29e7e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f040a5bbc45dfa12\",\n   \"child\": \"5701a84e79c41e66\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f040a5bbc45dfa12\",\n   \"child\": \"75535a7271ea89ff\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f1b2d7837125d760\",\n   \"child\": \"67a2aebece96d68e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f1b2d7837125d760\",\n   \"child\": \"777915dc94dfd149\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f1b2d7837125d760\",\n   \"child\": \"9d86cfe7c9f10689\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f1db3f69263d084f\",\n   \"child\": \"61affb02f63895b7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f476eba120c0643b\",\n   \"child\": \"1fc433626bf70c7a\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f476eba120c0643b\",\n   \"child\": \"22ba6ec476d95af0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f476eba120c0643b\",\n   \"child\": \"2a4cf9971ae029e7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f476eba120c0643b\",\n   \"child\": \"8c1dd72e7d3fd2be\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f476eba120c0643b\",\n   \"child\": \"cf0b50a0c64129c2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f57aa349cb508f5c\",\n   \"child\": \"470b7b713e33e57\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f57aa349cb508f5c\",\n   \"child\": \"4a0cb0b1b411dced\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f57aa349cb508f5c\",\n   \"child\": \"969b76f787084b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f57aa349cb508f5c\",\n   \"child\": \"d401bb0be2f769b3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f57aa349cb508f5c\",\n   \"child\": \"e132ef4908f243cd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f5c3f27f97f25bee\",\n   \"child\": \"3bd5e169e54943b0\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f5c3f27f97f25bee\",\n   \"child\": \"6c486568818ca981\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f82519ffc7024e92\",\n   \"child\": \"8ed32d44c419bf52\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f82519ffc7024e92\",\n   \"child\": \"b6ba846604305231\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f82519ffc7024e92\",\n   \"child\": \"c5e1249f3fa6a34e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"2ecb2afc37e4b450\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"40273ecc30447b20\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"41cc9eaedac7a5c7\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"51c7d389052c4ad3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"5483154b96966cb2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"5e599eec294f07a6\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"73068bdf0b7ebade\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"7d1dc033468cc7d5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"8ed8463444063c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"96e0c80d4d6cabf9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"af00928ac2c989fd\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"c3459fc8cb2e0c3e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"c422a00def92297c\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"d1280efe24fe4206\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"d1c27fdaf1faa46d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"d56a66d313bc9913\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"d7039ffc72dd27e3\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"dfbf8ad3e5579692\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"e05c15c05ad0b1d9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"e99c88bd84501058\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"f8a33d9ece162\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"f937565cccc80de\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f86172b3b79178e1\",\n   \"child\": \"f9996fa32a2ea8a8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f8a3b10a582c263d\",\n   \"child\": \"697a689f1c862d53\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f8a3b10a582c263d\",\n   \"child\": \"93995cebbe285c7d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f8a3b10a582c263d\",\n   \"child\": \"d021aa59da5381a2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f98efe991061ccb8\",\n   \"child\": \"24f6052d8886f3eb\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f98efe991061ccb8\",\n   \"child\": \"5d723ce9fdca40c5\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f98efe991061ccb8\",\n   \"child\": \"5faa2e01eaa58270\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f98efe991061ccb8\",\n   \"child\": \"72c17395fed78a23\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"f98efe991061ccb8\",\n   \"child\": \"9b28edd27b05d95e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fb32fd538ed63493\",\n   \"child\": \"25f799b012ae4908\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fb32fd538ed63493\",\n   \"child\": \"a0cb63ddbdb1acd1\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"2b86bac67ec89003\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"40d284f3d70b187b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"42ad78bbf025c53b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"481e10e7fcb2beb9\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"58b7c486038b78d\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"668e3f36dbdc4777\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"7a6ae6d19294e4bc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"7e8d0c37233c9125\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"81f6cbf269f82fc8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"82a78f91a76f3f6b\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"8543fff9e84f67e2\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"b496a132ed67893e\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"c58ec612962a87d8\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"cf5f0ffc6fc629\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"d83b49f4f733f6cc\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"e42f39e309d15c69\",\n   \"type\": \"contains\"\n  },\n  {\n   \"parent\": \"fbff831d08897176\",\n   \"child\": \"fe52c169b75ed5ec\",\n   \"type\": \"contains\"\n  }\n ],\n \"files\": [\n  {\n   \"id\": \"7e4755854a147c0c\",\n   \"location\": {\n    \"path\": \"/etc/GREP_COLORS\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcffa1c6671df3ba\",\n   \"location\": {\n    \"path\": \"/etc/NetworkManager/dispatcher.d/11-dhclient\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b88ea483154421a8\",\n   \"location\": {\n    \"path\": \"/etc/X11/xinit/xinitrc.d/50-systemd-user.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13f05df87f850888\",\n   \"location\": {\n    \"path\": \"/etc/adjtime\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d31756370ca0f6e3\",\n   \"location\": {\n    \"path\": \"/etc/aliases\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7f5977a76752839\",\n   \"location\": {\n    \"path\": \"/etc/bashrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"889bb9b22ecc9643\",\n   \"location\": {\n    \"path\": \"/etc/bindresvport.blacklist\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56a36a0eb094c2de\",\n   \"location\": {\n    \"path\": \"/etc/centos-release\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ef2e304f9b78016\",\n   \"location\": {\n    \"path\": \"/etc/centos-release-upstream\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d68cdd9f085441fd\",\n   \"location\": {\n    \"path\": \"/etc/crypto-policies/config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"429e89a590324a79\",\n   \"location\": {\n    \"path\": \"/etc/crypttab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d39dc38717ff5e0\",\n   \"location\": {\n    \"path\": \"/etc/csh.cshrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29890e4581e5c821\",\n   \"location\": {\n    \"path\": \"/etc/csh.login\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c1dd72e7d3fd2be\",\n   \"location\": {\n    \"path\": \"/etc/dbus-1/session.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22ba6ec476d95af0\",\n   \"location\": {\n    \"path\": \"/etc/dbus-1/system.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96e8b91ebd218dca\",\n   \"location\": {\n    \"path\": \"/etc/default/useradd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bdadc0eb25966a0e\",\n   \"location\": {\n    \"path\": \"/etc/depmod.d/dist.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a24d076a4a136e5c\",\n   \"location\": {\n    \"path\": \"/etc/dhcp/dhclient.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1eeff83e3d321b23\",\n   \"location\": {\n    \"path\": \"/etc/dnf/dnf.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82fa5f408e2eeb53\",\n   \"location\": {\n    \"path\": \"/etc/dnf/protected.d/dnf.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b931f71c9308d064\",\n   \"location\": {\n    \"path\": \"/etc/dnf/protected.d/systemd.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40a42bdca6629ad1\",\n   \"location\": {\n    \"path\": \"/etc/dnf/protected.d/yum.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18292f81524d6f11\",\n   \"location\": {\n    \"path\": \"/etc/dnf/vars/contentdir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e4917055eca242b\",\n   \"location\": {\n    \"path\": \"/etc/dnf/vars/infra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2512a2fb5bfd7d\",\n   \"location\": {\n    \"path\": \"/etc/dracut.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5fcbd367fff5623\",\n   \"location\": {\n    \"path\": \"/etc/environment\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c612738104ee2f37\",\n   \"location\": {\n    \"path\": \"/etc/ethertypes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"582db372664bf9ac\",\n   \"location\": {\n    \"path\": \"/etc/exports\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed3d6ff7fabed588\",\n   \"location\": {\n    \"path\": \"/etc/filesystems\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c8adce26db5dab\",\n   \"location\": {\n    \"path\": \"/etc/gcrypt/random.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d0dfe139c00d14c\",\n   \"location\": {\n    \"path\": \"/etc/group\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ef4b061681fe539\",\n   \"location\": {\n    \"path\": \"/etc/gshadow\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76b96cd44a2b050\",\n   \"location\": {\n    \"path\": \"/etc/host.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab5a80bc7df2068d\",\n   \"location\": {\n    \"path\": \"/etc/hostname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"538418be2adb0171\",\n   \"location\": {\n    \"path\": \"/etc/hosts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e733bb0c9d98b09\",\n   \"location\": {\n    \"path\": \"/etc/inittab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf5132be68cf1970\",\n   \"location\": {\n    \"path\": \"/etc/inputrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3a7b990bc48814f\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/bpf_pinning\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2947ea62990a2bfd\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/ematch_map\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8907e4f50d1c155\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/group\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1363e1050d8e2ea0\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/nl_protos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50f8bee23c6bba9c\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/rt_dsfield\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50fce5107e442226\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/rt_protos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1be7f99ef21cedc\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/rt_realms\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"767eec67474bc1ec\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/rt_scopes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e616653eaf7a8822\",\n   \"location\": {\n    \"path\": \"/etc/iproute2/rt_tables\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"345088709d33cff8\",\n   \"location\": {\n    \"path\": \"/etc/issue\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"341b78271555aa0f\",\n   \"location\": {\n    \"path\": \"/etc/issue.net\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7808ac5629ba14c2\",\n   \"location\": {\n    \"path\": \"/etc/kdump.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5d8d476e340f4ea\",\n   \"location\": {\n    \"path\": \"/etc/krb5.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27c11ff8ca37d065\",\n   \"location\": {\n    \"path\": \"/etc/ld.so.cache\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"452a605a4a3bb2b3\",\n   \"location\": {\n    \"path\": \"/etc/ld.so.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b10a215b36650b20\",\n   \"location\": {\n    \"path\": \"/etc/ld.so.conf.d/bind-export-x86_64.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b9be5900684ef4b\",\n   \"location\": {\n    \"path\": \"/etc/libaudit.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aba6fa7633b9f1d8\",\n   \"location\": {\n    \"path\": \"/etc/libreport/events.d/collect_dnf.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93226aa82dc6f620\",\n   \"location\": {\n    \"path\": \"/etc/locale.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23cb103eaad84845\",\n   \"location\": {\n    \"path\": \"/etc/login.defs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"682db923858ded2d\",\n   \"location\": {\n    \"path\": \"/etc/logrotate.d/dnf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83352525ca19d5a8\",\n   \"location\": {\n    \"path\": \"/etc/machine-id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3620473c483d96f9\",\n   \"location\": {\n    \"path\": \"/etc/makedumpfile.conf.sample\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"108dd82ab1dd09d3\",\n   \"location\": {\n    \"path\": \"/etc/motd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f40fa33fd214a15\",\n   \"location\": {\n    \"path\": \"/etc/netconfig\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3a42f28f7f08d85\",\n   \"location\": {\n    \"path\": \"/etc/networks\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aff26cdeb10c5e1b\",\n   \"location\": {\n    \"path\": \"/etc/nsswitch.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76951f8dded88103\",\n   \"location\": {\n    \"path\": \"/etc/openldap/ldap.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"537fbe20c21b2ee5\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/config-util\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de10b073dea7fe05\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/fingerprint-auth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbe9354c3adc05f9\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/login\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ce46aa4444396b8\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/other\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"736b289fc9b2d1a9\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/password-auth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f3b63982de3ad63\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/postlogin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f96c52b4dbe36a93\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/remote\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72e624bea986982\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/runuser\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4374059cb252aff0\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/runuser-l\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f1ee7150223659c\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/smartcard-auth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4a474590bf1c4a7\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/su\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f3cd6b18b8f8449\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/su-l\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52ffa3e918db5182\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/system-auth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"415816d269120ca7\",\n   \"location\": {\n    \"path\": \"/etc/pam.d/systemd-user\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"283a6f38b170dff5\",\n   \"location\": {\n    \"path\": \"/etc/passwd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c01875dc101fb4e\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a93a4ad0d2fd79eb\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/ca-legacy.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"778981da446ef669\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb5cf4ac88f0797d\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/edk2/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d5dfffc36b08f7c\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/edk2/cacerts.bin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8241348a8228338\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/java/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d1734018abf89e3\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/java/cacerts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f89e2f88fdce7237\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/openssl/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c5421ce47d52e04\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0cd8c5281753599\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/pem/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37caa2cf9735944c\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc1a97a8638ea516\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90e869270b1def17\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ede8e89c9047bb6\",\n   \"location\": {\n    \"path\": \"/etc/pki/ca-trust/source/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9aa0c4d293002215\",\n   \"location\": {\n    \"path\": \"/etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53644a8e3218e7ba\",\n   \"location\": {\n    \"path\": \"/etc/pki/rpm-gpg/RPM-GPG-KEY-centostesting\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9acb2f255721c56\",\n   \"location\": {\n    \"path\": \"/etc/pki/tls/ct_log_list.cnf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a09c4a65df3fa903\",\n   \"location\": {\n    \"path\": \"/etc/pki/tls/openssl.cnf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e8ed36298ed8abd\",\n   \"location\": {\n    \"path\": \"/etc/printcap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7292cd2e44ab1a4f\",\n   \"location\": {\n    \"path\": \"/etc/profile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ed2bac864b4c355\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorgrep.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3e93610a5aca81b\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorgrep.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f0a2be67c5caa46\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorxzgrep.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49d3efc9784d795d\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorxzgrep.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e54b76a25ad77a4\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorzgrep.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14fe918a56cfc4ce\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/colorzgrep.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe49f4c9080729a8\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/csh.local\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe45abc08f7d678a\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/gawk.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d5f25549a928857\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/gawk.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"708dc8bcf543d2b\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/lang.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"259d045e284f0fd5\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/lang.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16895b916e2bf8eb\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/less.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cbb1d636d93ba0a\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/less.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b097b8ed8c492b83\",\n   \"location\": {\n    \"path\": \"/etc/profile.d/sh.local\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55750e6459a6ab56\",\n   \"location\": {\n    \"path\": \"/etc/protocols\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d71a41177c82b58c\",\n   \"location\": {\n    \"path\": \"/etc/rc.d/init.d/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb136572435eb029\",\n   \"location\": {\n    \"path\": \"/etc/rc.d/rc.local\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21d3e6fa2c04018d\",\n   \"location\": {\n    \"path\": \"/etc/rpc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f07eef5528bc13fc\",\n   \"location\": {\n    \"path\": \"/etc/rpm/macros.dist\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfe36a3a881894dc\",\n   \"location\": {\n    \"path\": \"/etc/security/access.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cac3834ed7f9b183\",\n   \"location\": {\n    \"path\": \"/etc/security/chroot.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d9212d08a13251d\",\n   \"location\": {\n    \"path\": \"/etc/security/console.handlers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fb30bacc7b3ca15\",\n   \"location\": {\n    \"path\": \"/etc/security/console.perms\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af72be340fcdeae4\",\n   \"location\": {\n    \"path\": \"/etc/security/faillock.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"757decc669c32c95\",\n   \"location\": {\n    \"path\": \"/etc/security/group.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4cf3a80df8fd481\",\n   \"location\": {\n    \"path\": \"/etc/security/limits.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3838f0f8f878dbce\",\n   \"location\": {\n    \"path\": \"/etc/security/namespace.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24ddb329edd01466\",\n   \"location\": {\n    \"path\": \"/etc/security/namespace.init\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54a91b0d7479599e\",\n   \"location\": {\n    \"path\": \"/etc/security/opasswd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34b4e8122ae5439a\",\n   \"location\": {\n    \"path\": \"/etc/security/pam_env.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5ea9c5eac52e1ec\",\n   \"location\": {\n    \"path\": \"/etc/security/pwquality.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f66937b6aba88d8\",\n   \"location\": {\n    \"path\": \"/etc/security/sepermit.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c36ed068398dd62\",\n   \"location\": {\n    \"path\": \"/etc/security/time.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62610b0b1aa63337\",\n   \"location\": {\n    \"path\": \"/etc/selinux/semanage.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bbf85d062ae0585\",\n   \"location\": {\n    \"path\": \"/etc/services\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28e2a62ea90a5646\",\n   \"location\": {\n    \"path\": \"/etc/shadow\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26b90c103d8641e5\",\n   \"location\": {\n    \"path\": \"/etc/shells\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c65ac4c4f0c463d3\",\n   \"location\": {\n    \"path\": \"/etc/skel/.bash_logout\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6116a8f83c1207aa\",\n   \"location\": {\n    \"path\": \"/etc/skel/.bash_profile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9b9ec9940447925\",\n   \"location\": {\n    \"path\": \"/etc/skel/.bashrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7cbfcbfafdc9c6ab\",\n   \"location\": {\n    \"path\": \"/etc/subgid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b11ee994890ddd84\",\n   \"location\": {\n    \"path\": \"/etc/subuid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"989dfbe4b32b844c\",\n   \"location\": {\n    \"path\": \"/etc/sysconfig/kdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15efa21d173ef4d2\",\n   \"location\": {\n    \"path\": \"/etc/sysctl.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d89a443452e783d3\",\n   \"location\": {\n    \"path\": \"/etc/system-release-cpe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"704b3b375bca183\",\n   \"location\": {\n    \"path\": \"/etc/systemd/coredump.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f5c9e0c88d34290\",\n   \"location\": {\n    \"path\": \"/etc/systemd/journald.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1298f21ecc44409f\",\n   \"location\": {\n    \"path\": \"/etc/systemd/logind.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11830dd5efcd7e91\",\n   \"location\": {\n    \"path\": \"/etc/systemd/resolved.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db1d098669a10f5c\",\n   \"location\": {\n    \"path\": \"/etc/systemd/system.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abec64c108f2bcec\",\n   \"location\": {\n    \"path\": \"/etc/systemd/user.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eaad8b2b5ac8385a\",\n   \"location\": {\n    \"path\": \"/etc/udev/udev.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e918061776f01d18\",\n   \"location\": {\n    \"path\": \"/etc/vconsole.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2e2d6e1ae3a8a24\",\n   \"location\": {\n    \"path\": \"/etc/virc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e456a109ac073fe\",\n   \"location\": {\n    \"path\": \"/etc/xattr.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b10d55c244dc4a0\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-AppStream.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"792ce5314c3c8464\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Base.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d258cff7f84e115\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-CR.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98c1d9225d26b502\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Debuginfo.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fc6266403bf6383\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Devel.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb198665ebe168f0\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Extras.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbcf5572a8ecfe38\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-HA.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71cda031e819b88d\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Media.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f1a3b8b6b165af9\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-PowerTools.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ae963c70974a434\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Sources.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4ad685333e80b20\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-Vault.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afea235a4b6322b5\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-centosplus.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24f699de38f8133\",\n   \"location\": {\n    \"path\": \"/etc/yum.repos.d/CentOS-fasttrack.repo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ea8b6072bc7e6dc\",\n   \"location\": {\n    \"path\": \"/root/.bash_logout\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a9b7303625c74fc\",\n   \"location\": {\n    \"path\": \"/root/.bash_profile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46ee2b3f6f6376ea\",\n   \"location\": {\n    \"path\": \"/root/.bashrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86a5515cdc7371e7\",\n   \"location\": {\n    \"path\": \"/root/.cshrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48b7d28ec9326970\",\n   \"location\": {\n    \"path\": \"/root/.tcshrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e40b120f698289f\",\n   \"location\": {\n    \"path\": \"/run/utmp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d26183da2f3d9fe8\",\n   \"location\": {\n    \"path\": \"/usr/bin/[\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1280efe24fe4206\",\n   \"location\": {\n    \"path\": \"/usr/bin/addr2line\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe6ba07beabb6f8f\",\n   \"location\": {\n    \"path\": \"/usr/bin/alias\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d1dc033468cc7d5\",\n   \"location\": {\n    \"path\": \"/usr/bin/ar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f65f175dd4b827cb\",\n   \"location\": {\n    \"path\": \"/usr/bin/arch\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3459fc8cb2e0c3e\",\n   \"location\": {\n    \"path\": \"/usr/bin/as\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eddc9203ecab92f4\",\n   \"location\": {\n    \"path\": \"/usr/bin/b2sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6113fa80c7225070\",\n   \"location\": {\n    \"path\": \"/usr/bin/base32\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3da89a342c30cabf\",\n   \"location\": {\n    \"path\": \"/usr/bin/base64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1fecc2927be6c1b\",\n   \"location\": {\n    \"path\": \"/usr/bin/basename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78f9053ab0be384f\",\n   \"location\": {\n    \"path\": \"/usr/bin/bash\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e16c8db7f98cfd3\",\n   \"location\": {\n    \"path\": \"/usr/bin/bashbug-64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"716d8b4df37c9f6d\",\n   \"location\": {\n    \"path\": \"/usr/bin/bg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b1edf2adb11802a\",\n   \"location\": {\n    \"path\": \"/usr/bin/bootctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e8ce7c8dc314718\",\n   \"location\": {\n    \"path\": \"/usr/bin/busctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e99c88bd84501058\",\n   \"location\": {\n    \"path\": \"/usr/bin/c++filt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88eea7fd52df692f\",\n   \"location\": {\n    \"path\": \"/usr/bin/ca-legacy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c82c04ea31a10cba\",\n   \"location\": {\n    \"path\": \"/usr/bin/cal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd2b25a423845a5c\",\n   \"location\": {\n    \"path\": \"/usr/bin/cat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51a4c9a2770b8234\",\n   \"location\": {\n    \"path\": \"/usr/bin/catchsegv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dfe6ee4130c89ea\",\n   \"location\": {\n    \"path\": \"/usr/bin/cd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"470b7b713e33e57\",\n   \"location\": {\n    \"path\": \"/usr/bin/chacl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dff506a10e85835\",\n   \"location\": {\n    \"path\": \"/usr/bin/chage\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e707686548262205\",\n   \"location\": {\n    \"path\": \"/usr/bin/chcon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e7c3ca27eff5bf0\",\n   \"location\": {\n    \"path\": \"/usr/bin/chgrp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bc57de6dcf4395\",\n   \"location\": {\n    \"path\": \"/usr/bin/chmem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8dc5c91343838e6\",\n   \"location\": {\n    \"path\": \"/usr/bin/chmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa67d3bb99d41854\",\n   \"location\": {\n    \"path\": \"/usr/bin/chown\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55f688ca827a4d9a\",\n   \"location\": {\n    \"path\": \"/usr/bin/chrt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81af0f356941ea3\",\n   \"location\": {\n    \"path\": \"/usr/bin/cksum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9f5aa75e7b83406\",\n   \"location\": {\n    \"path\": \"/usr/bin/col\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"975ab8d4e9f8dddf\",\n   \"location\": {\n    \"path\": \"/usr/bin/colcrt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5337642ae7940087\",\n   \"location\": {\n    \"path\": \"/usr/bin/colrm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8328d92fcbd3fef0\",\n   \"location\": {\n    \"path\": \"/usr/bin/column\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2bf1060ea1efd46\",\n   \"location\": {\n    \"path\": \"/usr/bin/comm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bcba1e1a3873069\",\n   \"location\": {\n    \"path\": \"/usr/bin/command\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aeb63470b5c44880\",\n   \"location\": {\n    \"path\": \"/usr/bin/coredumpctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84126c7f8a022ea7\",\n   \"location\": {\n    \"path\": \"/usr/bin/coreutils\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"736eeac8a9e54b62\",\n   \"location\": {\n    \"path\": \"/usr/bin/cp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c17ffe7fa1df6502\",\n   \"location\": {\n    \"path\": \"/usr/bin/cpio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6856aa509375a3\",\n   \"location\": {\n    \"path\": \"/usr/bin/csplit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cd5b19e2a24b550\",\n   \"location\": {\n    \"path\": \"/usr/bin/curl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d13c238c38c83ccd\",\n   \"location\": {\n    \"path\": \"/usr/bin/cut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"541e8db880b943a\",\n   \"location\": {\n    \"path\": \"/usr/bin/date\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"caeeacba580301\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_archive\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0251e719aa7405a\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_checkpoint\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"becfac1543c6fdae\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_deadlock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c994064b6de51be\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_dump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7c9cd7b399c4f8e\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_dump185\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6895af4d8cbf9cc\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_hotbackup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"587870656f97d66\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_load\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a887004cb11efad3\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_log_verify\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4baf492d5038b96c\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_printlog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93881f5327144d01\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_recover\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9131a58cf8321c80\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_replicate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84ad52b6071be5e9\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_stat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee5b9d2e7cf7f1e5\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_tuner\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3041689f3ee3f2e5\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_upgrade\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fee15555ccf3323\",\n   \"location\": {\n    \"path\": \"/usr/bin/db_verify\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a32bc48d60641eac\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-cleanup-sockets\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c9b38c0779b2548\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-daemon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df8905d2c8ab9976\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-monitor\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0f1ef165a559277\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-run-session\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac8c000852bdd076\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-send\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23280fa0f6884a3d\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-test-tool\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10376014342dfff2\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-update-activation-environment\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96c03903f1ac9af5\",\n   \"location\": {\n    \"path\": \"/usr/bin/dbus-uuidgen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e45164a37174d20b\",\n   \"location\": {\n    \"path\": \"/usr/bin/dd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fc1f683a3457391\",\n   \"location\": {\n    \"path\": \"/usr/bin/df\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8ac0b3728972af3\",\n   \"location\": {\n    \"path\": \"/usr/bin/dir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c2396dce0bd5cd4\",\n   \"location\": {\n    \"path\": \"/usr/bin/dircolors\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"124fa8b34d452e0f\",\n   \"location\": {\n    \"path\": \"/usr/bin/dirmngr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82ed18cbb66ff3b8\",\n   \"location\": {\n    \"path\": \"/usr/bin/dirmngr-client\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e3ead344c6ae0f5\",\n   \"location\": {\n    \"path\": \"/usr/bin/dirname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33d8d9cf5857a4a8\",\n   \"location\": {\n    \"path\": \"/usr/bin/dmesg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72c17395fed78a23\",\n   \"location\": {\n    \"path\": \"/usr/bin/dnf-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4cadca3d32169d\",\n   \"location\": {\n    \"path\": \"/usr/bin/dracut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"597945399b89b7ed\",\n   \"location\": {\n    \"path\": \"/usr/bin/du\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40273ecc30447b20\",\n   \"location\": {\n    \"path\": \"/usr/bin/dwp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d387f953e9552157\",\n   \"location\": {\n    \"path\": \"/usr/bin/echo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f22997875e948567\",\n   \"location\": {\n    \"path\": \"/usr/bin/egrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"542f3481887d079\",\n   \"location\": {\n    \"path\": \"/usr/bin/eject\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c422a00def92297c\",\n   \"location\": {\n    \"path\": \"/usr/bin/elfedit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84e9fd1cdb33e9ca\",\n   \"location\": {\n    \"path\": \"/usr/bin/env\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f63c4b0263bb23e\",\n   \"location\": {\n    \"path\": \"/usr/bin/evmctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e36f2bc5b83b95e9\",\n   \"location\": {\n    \"path\": \"/usr/bin/expand\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9957c1debb2aabb5\",\n   \"location\": {\n    \"path\": \"/usr/bin/expr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2be9ff1f4be3b8a\",\n   \"location\": {\n    \"path\": \"/usr/bin/factor\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65a077f5b826427a\",\n   \"location\": {\n    \"path\": \"/usr/bin/fallocate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69464a5b747e3b74\",\n   \"location\": {\n    \"path\": \"/usr/bin/false\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76a677c60b358efe\",\n   \"location\": {\n    \"path\": \"/usr/bin/fc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"408875f347c3f7d3\",\n   \"location\": {\n    \"path\": \"/usr/bin/fg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7c8b9121f0b0ae0\",\n   \"location\": {\n    \"path\": \"/usr/bin/fgrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1db0c16d45eac7f4\",\n   \"location\": {\n    \"path\": \"/usr/bin/fincore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"510de2d876edfc48\",\n   \"location\": {\n    \"path\": \"/usr/bin/find\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ee0942dd456f75b\",\n   \"location\": {\n    \"path\": \"/usr/bin/findmnt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ae975e6bc9ce8ad\",\n   \"location\": {\n    \"path\": \"/usr/bin/fips-finish-install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5303a451282e3104\",\n   \"location\": {\n    \"path\": \"/usr/bin/fips-mode-setup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49f11956bc631e78\",\n   \"location\": {\n    \"path\": \"/usr/bin/flock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"106fd97321ca9057\",\n   \"location\": {\n    \"path\": \"/usr/bin/fmt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a295745aa90c847c\",\n   \"location\": {\n    \"path\": \"/usr/bin/fold\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a8fb3e6e9f9c9cd\",\n   \"location\": {\n    \"path\": \"/usr/bin/free\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"891d08d4d5e720cf\",\n   \"location\": {\n    \"path\": \"/usr/bin/g13\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b496a132ed67893e\",\n   \"location\": {\n    \"path\": \"/usr/bin/gapplication\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"623c3dcbf4ec4cd3\",\n   \"location\": {\n    \"path\": \"/usr/bin/gawk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d021aa59da5381a2\",\n   \"location\": {\n    \"path\": \"/usr/bin/gdbm_dump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93995cebbe285c7d\",\n   \"location\": {\n    \"path\": \"/usr/bin/gdbm_load\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"697a689f1c862d53\",\n   \"location\": {\n    \"path\": \"/usr/bin/gdbmtool\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81f6cbf269f82fc8\",\n   \"location\": {\n    \"path\": \"/usr/bin/gdbus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10d29f491001b593\",\n   \"location\": {\n    \"path\": \"/usr/bin/gencat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6489e6a56633a6f6\",\n   \"location\": {\n    \"path\": \"/usr/bin/getconf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62e693647d5c8935\",\n   \"location\": {\n    \"path\": \"/usr/bin/getent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"969b76f787084b0\",\n   \"location\": {\n    \"path\": \"/usr/bin/getfacl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20686dbcba892720\",\n   \"location\": {\n    \"path\": \"/usr/bin/getopt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f214aa52153066ae\",\n   \"location\": {\n    \"path\": \"/usr/bin/getopts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d83b49f4f733f6cc\",\n   \"location\": {\n    \"path\": \"/usr/bin/gio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8543fff9e84f67e2\",\n   \"location\": {\n    \"path\": \"/usr/bin/gio-querymodules-64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a6ae6d19294e4bc\",\n   \"location\": {\n    \"path\": \"/usr/bin/glib-compile-schemas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dec77e72783adf\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpasswd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f75e61ee09158ad\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42050034ba1f4f2c\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpg-agent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e070a58463f21e2\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpg-connect-agent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4294daf108c94a82\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpg-error\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecb2616573e68d80\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpg-zip\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"700a3fd41f3c2dc9\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpgconf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5345b96679e81b0\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpgparsemail\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25800df3f7d5702a\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpgsplit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c70e079ea152a9c\",\n   \"location\": {\n    \"path\": \"/usr/bin/gpgv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73068bdf0b7ebade\",\n   \"location\": {\n    \"path\": \"/usr/bin/gprof\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28467b5af310450d\",\n   \"location\": {\n    \"path\": \"/usr/bin/grep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b95057548777cdf\",\n   \"location\": {\n    \"path\": \"/usr/bin/groups\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b86bac67ec89003\",\n   \"location\": {\n    \"path\": \"/usr/bin/gsettings\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9b385f9fa6cbbea\",\n   \"location\": {\n    \"path\": \"/usr/bin/gunzip\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f41e7291bcb51fc\",\n   \"location\": {\n    \"path\": \"/usr/bin/gzexe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f849d2e43a3c881\",\n   \"location\": {\n    \"path\": \"/usr/bin/gzip\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"245b8401df9db66e\",\n   \"location\": {\n    \"path\": \"/usr/bin/hash\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"458bdead4ce2ead3\",\n   \"location\": {\n    \"path\": \"/usr/bin/head\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2527dca57ca8bb6c\",\n   \"location\": {\n    \"path\": \"/usr/bin/hexdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3971b65129ac1e5\",\n   \"location\": {\n    \"path\": \"/usr/bin/hostid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bf6a503154e7e74\",\n   \"location\": {\n    \"path\": \"/usr/bin/hostname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8081a5c9598b9f9\",\n   \"location\": {\n    \"path\": \"/usr/bin/hostnamectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7944f347043b657a\",\n   \"location\": {\n    \"path\": \"/usr/bin/iconv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b7e3c9aa56bbbc5\",\n   \"location\": {\n    \"path\": \"/usr/bin/id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ceb16c73e1170476\",\n   \"location\": {\n    \"path\": \"/usr/bin/info\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59c7f9d24783da1c\",\n   \"location\": {\n    \"path\": \"/usr/bin/install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c73cd3addf75aeb9\",\n   \"location\": {\n    \"path\": \"/usr/bin/ionice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75535a7271ea89ff\",\n   \"location\": {\n    \"path\": \"/usr/bin/ipcalc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f960ccde56b03ce3\",\n   \"location\": {\n    \"path\": \"/usr/bin/ipcmk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b4b9f71c056a666\",\n   \"location\": {\n    \"path\": \"/usr/bin/ipcrm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32fe6ea99ff89fe9\",\n   \"location\": {\n    \"path\": \"/usr/bin/ipcs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"646f357337adc9fd\",\n   \"location\": {\n    \"path\": \"/usr/bin/isosize\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cb628c306200d4e\",\n   \"location\": {\n    \"path\": \"/usr/bin/jobs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"860f3fa0971226db\",\n   \"location\": {\n    \"path\": \"/usr/bin/join\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a6df982c0c4eee7\",\n   \"location\": {\n    \"path\": \"/usr/bin/journalctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de080c58f864ca45\",\n   \"location\": {\n    \"path\": \"/usr/bin/kdumpctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d21443752664284\",\n   \"location\": {\n    \"path\": \"/usr/bin/kernel-install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b3facbcc4ca9b71\",\n   \"location\": {\n    \"path\": \"/usr/bin/kill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f587299e168fe53\",\n   \"location\": {\n    \"path\": \"/usr/bin/kmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e8f366c0631a8a\",\n   \"location\": {\n    \"path\": \"/usr/bin/last\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3cffb9be2af97d0\",\n   \"location\": {\n    \"path\": \"/usr/bin/lastlog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9996fa32a2ea8a8\",\n   \"location\": {\n    \"path\": \"/usr/bin/ld.bfd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96e0c80d4d6cabf9\",\n   \"location\": {\n    \"path\": \"/usr/bin/ld.gold\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"380c5ace2a23cf36\",\n   \"location\": {\n    \"path\": \"/usr/bin/ldd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75478a0bd1eef4f\",\n   \"location\": {\n    \"path\": \"/usr/bin/less\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4922f06e13aa7af1\",\n   \"location\": {\n    \"path\": \"/usr/bin/lessecho\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1525a9b0fbe67880\",\n   \"location\": {\n    \"path\": \"/usr/bin/lesskey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d88ecd67ad88e26\",\n   \"location\": {\n    \"path\": \"/usr/bin/lesspipe.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cff0e3dc123348d7\",\n   \"location\": {\n    \"path\": \"/usr/bin/link\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eeb1c92b92eeec9f\",\n   \"location\": {\n    \"path\": \"/usr/bin/ln\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aa11b1b771a360f\",\n   \"location\": {\n    \"path\": \"/usr/bin/locale\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f395a72ff568497f\",\n   \"location\": {\n    \"path\": \"/usr/bin/localectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f66df957c7d3cb09\",\n   \"location\": {\n    \"path\": \"/usr/bin/localedef\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89215071334f7349\",\n   \"location\": {\n    \"path\": \"/usr/bin/logger\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61a55a6644b6906e\",\n   \"location\": {\n    \"path\": \"/usr/bin/login\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4b22b7701350f63\",\n   \"location\": {\n    \"path\": \"/usr/bin/loginctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d97ccc556a33f1f0\",\n   \"location\": {\n    \"path\": \"/usr/bin/logname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15d578ae87ea244c\",\n   \"location\": {\n    \"path\": \"/usr/bin/look\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"736a93c79f0af7ed\",\n   \"location\": {\n    \"path\": \"/usr/bin/ls\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbfbce9af199fd6e\",\n   \"location\": {\n    \"path\": \"/usr/bin/lsblk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee2a2fa7430fd158\",\n   \"location\": {\n    \"path\": \"/usr/bin/lscpu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94e07acf584c6cea\",\n   \"location\": {\n    \"path\": \"/usr/bin/lsinitrd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dbc9b9313eba73f\",\n   \"location\": {\n    \"path\": \"/usr/bin/lsipc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a94fa6bd22510319\",\n   \"location\": {\n    \"path\": \"/usr/bin/lslocks\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3cd41c26467ac6f\",\n   \"location\": {\n    \"path\": \"/usr/bin/lslogins\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97426f0cc2f79ddd\",\n   \"location\": {\n    \"path\": \"/usr/bin/lsmem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6c31a21a97f1249\",\n   \"location\": {\n    \"path\": \"/usr/bin/lsns\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea745775f4a795cd\",\n   \"location\": {\n    \"path\": \"/usr/bin/makedb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"327b592f77b2815a\",\n   \"location\": {\n    \"path\": \"/usr/bin/mcookie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dce4d3283d72c8b4\",\n   \"location\": {\n    \"path\": \"/usr/bin/md5sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea05bb467f97533b\",\n   \"location\": {\n    \"path\": \"/usr/bin/mesg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2047c69529ea4e89\",\n   \"location\": {\n    \"path\": \"/usr/bin/mkdir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4decfc411c52707\",\n   \"location\": {\n    \"path\": \"/usr/bin/mkfifo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a19ce47386848d7\",\n   \"location\": {\n    \"path\": \"/usr/bin/mkinitrd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74785317f2d8705d\",\n   \"location\": {\n    \"path\": \"/usr/bin/mknod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6553fdb3229e3b48\",\n   \"location\": {\n    \"path\": \"/usr/bin/mktemp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cebbfdff8b22206c\",\n   \"location\": {\n    \"path\": \"/usr/bin/modulemd-validator-v1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"948f2ededd9aac91\",\n   \"location\": {\n    \"path\": \"/usr/bin/more\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df414812b8d89095\",\n   \"location\": {\n    \"path\": \"/usr/bin/mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2270348379a95145\",\n   \"location\": {\n    \"path\": \"/usr/bin/mountpoint\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c328bef537093947\",\n   \"location\": {\n    \"path\": \"/usr/bin/mv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de81ae82015f1478\",\n   \"location\": {\n    \"path\": \"/usr/bin/namei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"907b36265bb4a3c8\",\n   \"location\": {\n    \"path\": \"/usr/bin/newgidmap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7166958036d992a\",\n   \"location\": {\n    \"path\": \"/usr/bin/newgrp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"903d705373d91d40\",\n   \"location\": {\n    \"path\": \"/usr/bin/newuidmap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e6a6265141eaac7\",\n   \"location\": {\n    \"path\": \"/usr/bin/nice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71dbc992232a6860\",\n   \"location\": {\n    \"path\": \"/usr/bin/nl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51c7d389052c4ad3\",\n   \"location\": {\n    \"path\": \"/usr/bin/nm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2215d5807e8f156\",\n   \"location\": {\n    \"path\": \"/usr/bin/nohup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c670bc1ba6e28296\",\n   \"location\": {\n    \"path\": \"/usr/bin/nproc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67272cb3cd9cf0ac\",\n   \"location\": {\n    \"path\": \"/usr/bin/nsenter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58c2e141eab6fc68\",\n   \"location\": {\n    \"path\": \"/usr/bin/numfmt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7039ffc72dd27e3\",\n   \"location\": {\n    \"path\": \"/usr/bin/objcopy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e599eec294f07a6\",\n   \"location\": {\n    \"path\": \"/usr/bin/objdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca3dbd7a99ce9aac\",\n   \"location\": {\n    \"path\": \"/usr/bin/od\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb55af0aa4212537\",\n   \"location\": {\n    \"path\": \"/usr/bin/p11-kit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8c5c08ee266a8ad\",\n   \"location\": {\n    \"path\": \"/usr/bin/paste\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18de3ed27e7d6112\",\n   \"location\": {\n    \"path\": \"/usr/bin/pathchk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6725aa768ccebf0\",\n   \"location\": {\n    \"path\": \"/usr/bin/pgrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"baabf58d1a3b5aa7\",\n   \"location\": {\n    \"path\": \"/usr/bin/pidof\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d89c4276814ea659\",\n   \"location\": {\n    \"path\": \"/usr/bin/ping\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15f5a779fc7605aa\",\n   \"location\": {\n    \"path\": \"/usr/bin/pinky\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84b70fb915504b3c\",\n   \"location\": {\n    \"path\": \"/usr/bin/pkill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e4659da5fe4424c\",\n   \"location\": {\n    \"path\": \"/usr/bin/pldd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9877c483a7276853\",\n   \"location\": {\n    \"path\": \"/usr/bin/pmap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddd465ed907b7cf4\",\n   \"location\": {\n    \"path\": \"/usr/bin/pr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7eabbff4d66d3094\",\n   \"location\": {\n    \"path\": \"/usr/bin/printenv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eaee87678edb9c63\",\n   \"location\": {\n    \"path\": \"/usr/bin/printf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1953bbb75e9d8250\",\n   \"location\": {\n    \"path\": \"/usr/bin/prlimit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"912a58057b1432aa\",\n   \"location\": {\n    \"path\": \"/usr/bin/ps\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26234bb18831b9ed\",\n   \"location\": {\n    \"path\": \"/usr/bin/ptx\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83ed6428477073ae\",\n   \"location\": {\n    \"path\": \"/usr/bin/pwd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d274bbbade0ee10d\",\n   \"location\": {\n    \"path\": \"/usr/bin/pwdx\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c82db25ed14969e8\",\n   \"location\": {\n    \"path\": \"/usr/bin/pwmake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"435eff1466b945ba\",\n   \"location\": {\n    \"path\": \"/usr/bin/pwscore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26bcbbde756d8ce5\",\n   \"location\": {\n    \"path\": \"/usr/bin/pydoc3.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7311e081b60f3245\",\n   \"location\": {\n    \"path\": \"/usr/bin/pyvenv-3.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d56a66d313bc9913\",\n   \"location\": {\n    \"path\": \"/usr/bin/ranlib\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a45915b251acb8\",\n   \"location\": {\n    \"path\": \"/usr/bin/raw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5f226c136640d0f\",\n   \"location\": {\n    \"path\": \"/usr/bin/read\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ecb2afc37e4b450\",\n   \"location\": {\n    \"path\": \"/usr/bin/readelf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14b2d5ceb0113483\",\n   \"location\": {\n    \"path\": \"/usr/bin/readlink\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"571032c250d8d747\",\n   \"location\": {\n    \"path\": \"/usr/bin/realpath\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d5c0847ad135f5f\",\n   \"location\": {\n    \"path\": \"/usr/bin/rename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa50962d25d66626\",\n   \"location\": {\n    \"path\": \"/usr/bin/renice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38fff6a316b95c7f\",\n   \"location\": {\n    \"path\": \"/usr/bin/resolvectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16448628742fc5ac\",\n   \"location\": {\n    \"path\": \"/usr/bin/rev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4cc1064dd61509c\",\n   \"location\": {\n    \"path\": \"/usr/bin/rm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6df3601c781256e7\",\n   \"location\": {\n    \"path\": \"/usr/bin/rmdir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bdb6ae9e54cdd529\",\n   \"location\": {\n    \"path\": \"/usr/bin/rpm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f44fbd9de8d6d8aa\",\n   \"location\": {\n    \"path\": \"/usr/bin/rpm2archive\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8691c693d52423c1\",\n   \"location\": {\n    \"path\": \"/usr/bin/rpm2cpio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0a4bad313cb13c5\",\n   \"location\": {\n    \"path\": \"/usr/bin/rpmdb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b472adfb3ac222e\",\n   \"location\": {\n    \"path\": \"/usr/bin/rpmkeys\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0ea0fda3245b438\",\n   \"location\": {\n    \"path\": \"/usr/bin/runcon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9e8c7c5bb8700f9\",\n   \"location\": {\n    \"path\": \"/usr/bin/script\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4350010a1d2eaf53\",\n   \"location\": {\n    \"path\": \"/usr/bin/scriptreplay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2ba401f6b0a3a98\",\n   \"location\": {\n    \"path\": \"/usr/bin/sed\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cce3c5fa6e300bae\",\n   \"location\": {\n    \"path\": \"/usr/bin/seq\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e62c01fec3544ad\",\n   \"location\": {\n    \"path\": \"/usr/bin/setarch\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d401bb0be2f769b3\",\n   \"location\": {\n    \"path\": \"/usr/bin/setfacl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7285354185ec7ad1\",\n   \"location\": {\n    \"path\": \"/usr/bin/setpriv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ee4b0622e1edf15\",\n   \"location\": {\n    \"path\": \"/usr/bin/setsid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"728af0ae3ecee2b5\",\n   \"location\": {\n    \"path\": \"/usr/bin/setterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72dfd40f4659d15a\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha1hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"470e74d63828d719\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha1sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aae3598e6e67036\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha224hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3a2f836d7f0e343\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha224sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68b36f76915400bb\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha256hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68940e2d7383723\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha256sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6b9d2258798352c\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha384hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d30ca8ab9fe93af1\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha384sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fcbd9327f9d3df0\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha512hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"295c722e937c6e00\",\n   \"location\": {\n    \"path\": \"/usr/bin/sha512sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2229c09b18a7881\",\n   \"location\": {\n    \"path\": \"/usr/bin/shred\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eaaa4e2273b81a9\",\n   \"location\": {\n    \"path\": \"/usr/bin/shuf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41cc9eaedac7a5c7\",\n   \"location\": {\n    \"path\": \"/usr/bin/size\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"704319e2d0b72506\",\n   \"location\": {\n    \"path\": \"/usr/bin/skill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47f582bbc1b14c98\",\n   \"location\": {\n    \"path\": \"/usr/bin/slabtop\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f91096a588ba7fb5\",\n   \"location\": {\n    \"path\": \"/usr/bin/sleep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b45595cb4e4cada\",\n   \"location\": {\n    \"path\": \"/usr/bin/snice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"442883e7dc0998b5\",\n   \"location\": {\n    \"path\": \"/usr/bin/sort\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7360997fb1ce046\",\n   \"location\": {\n    \"path\": \"/usr/bin/sotruss\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a25943a79919171a\",\n   \"location\": {\n    \"path\": \"/usr/bin/split\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ef99f5faacdb382\",\n   \"location\": {\n    \"path\": \"/usr/bin/sprof\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bb17c0eaecd08ce\",\n   \"location\": {\n    \"path\": \"/usr/bin/stat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a72cfe38e112a3c2\",\n   \"location\": {\n    \"path\": \"/usr/bin/stdbuf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f937565cccc80de\",\n   \"location\": {\n    \"path\": \"/usr/bin/strings\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfbf8ad3e5579692\",\n   \"location\": {\n    \"path\": \"/usr/bin/strip\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac6404bc759da507\",\n   \"location\": {\n    \"path\": \"/usr/bin/stty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5426cd8d0f0b707c\",\n   \"location\": {\n    \"path\": \"/usr/bin/su\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50751389203c6e77\",\n   \"location\": {\n    \"path\": \"/usr/bin/sum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"254ca1e54ca76f07\",\n   \"location\": {\n    \"path\": \"/usr/bin/sync\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c553466030436c7a\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5adf58babd724f6\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-analyze\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5554d3ee00f87a07\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-ask-password\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a07654fb856ca384\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-cat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a13eccd770e77be\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-cgls\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb29599c371136d\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-cgtop\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"150d9c94c1ed9ca9\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-delta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5f676be9a6950f\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-detect-virt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44fff53c5ce5966a\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-escape\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c657e666bec8223\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-firstboot\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"638ffbed2d8982f2\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-hwdb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"989d73e371d80870\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-inhibit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ef33de539db5b4e\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-machine-id-setup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba54ebc365750aed\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bee9e8889f24532\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-notify\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e664e2e956b116a2\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-path\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92f5c8cde99a8eb7\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-run\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bac8e8feb06dfb47\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-socket-activate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"459486889c02f0ce\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-stdio-bridge\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6ec83b589eb14ae\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-sysusers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf7e5367320c925d\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-tmpfiles\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37d3113b4e48930c\",\n   \"location\": {\n    \"path\": \"/usr/bin/systemd-tty-ask-password-agent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b09ed235bd667bb\",\n   \"location\": {\n    \"path\": \"/usr/bin/tac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb901c9a0786d486\",\n   \"location\": {\n    \"path\": \"/usr/bin/tail\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39ed5185c9e00883\",\n   \"location\": {\n    \"path\": \"/usr/bin/tar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da1738abd720307\",\n   \"location\": {\n    \"path\": \"/usr/bin/taskset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cbd2f7b8f1644fd\",\n   \"location\": {\n    \"path\": \"/usr/bin/tee\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b93d1b4bad218f91\",\n   \"location\": {\n    \"path\": \"/usr/bin/test\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6242acfa93aac12\",\n   \"location\": {\n    \"path\": \"/usr/bin/timedatectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b517801be4289c35\",\n   \"location\": {\n    \"path\": \"/usr/bin/timeout\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c8f978faff0883d\",\n   \"location\": {\n    \"path\": \"/usr/bin/tload\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38e7325eb6c5fb18\",\n   \"location\": {\n    \"path\": \"/usr/bin/top\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6924eab3aa125e90\",\n   \"location\": {\n    \"path\": \"/usr/bin/touch\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70d5a916e16317b4\",\n   \"location\": {\n    \"path\": \"/usr/bin/tr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"604683803ecfbd4f\",\n   \"location\": {\n    \"path\": \"/usr/bin/tracepath\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d337c5b78f4e8e96\",\n   \"location\": {\n    \"path\": \"/usr/bin/true\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"924fbb4b786837a4\",\n   \"location\": {\n    \"path\": \"/usr/bin/truncate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e24df926477d3992\",\n   \"location\": {\n    \"path\": \"/usr/bin/trust\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2b792b9519210f\",\n   \"location\": {\n    \"path\": \"/usr/bin/tsort\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fef06f2d214e488\",\n   \"location\": {\n    \"path\": \"/usr/bin/tty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61e2381a1ead00a7\",\n   \"location\": {\n    \"path\": \"/usr/bin/type\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a3d2c3d886b6b43\",\n   \"location\": {\n    \"path\": \"/usr/bin/tzselect\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c03dfcc06e249fd7\",\n   \"location\": {\n    \"path\": \"/usr/bin/udevadm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37ed4eb154ba7185\",\n   \"location\": {\n    \"path\": \"/usr/bin/ul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"caa948f3cc3648d6\",\n   \"location\": {\n    \"path\": \"/usr/bin/ulimit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e20438c926ca1c91\",\n   \"location\": {\n    \"path\": \"/usr/bin/umask\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c68e3cb5ea505763\",\n   \"location\": {\n    \"path\": \"/usr/bin/umount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec85fcb69e91db6d\",\n   \"location\": {\n    \"path\": \"/usr/bin/unalias\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"deaa3f4f2a18452a\",\n   \"location\": {\n    \"path\": \"/usr/bin/uname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30f60e5f11d1e2e4\",\n   \"location\": {\n    \"path\": \"/usr/bin/unexpand\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acf2d00e297ef12a\",\n   \"location\": {\n    \"path\": \"/usr/bin/uniq\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7962d9622bbe0d38\",\n   \"location\": {\n    \"path\": \"/usr/bin/unlink\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7df55ef930993638\",\n   \"location\": {\n    \"path\": \"/usr/bin/unshare\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2d071b746e9507f\",\n   \"location\": {\n    \"path\": \"/usr/bin/update-ca-trust\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52b5b0abeff8aa67\",\n   \"location\": {\n    \"path\": \"/usr/bin/update-crypto-policies\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bdd6c5d066eb278\",\n   \"location\": {\n    \"path\": \"/usr/bin/uptime\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ae1591d4eb086c4\",\n   \"location\": {\n    \"path\": \"/usr/bin/users\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31de2d9491786bcd\",\n   \"location\": {\n    \"path\": \"/usr/bin/utmpdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec8b5d1d0d7a4dc9\",\n   \"location\": {\n    \"path\": \"/usr/bin/uuidgen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73c97881d2ecd134\",\n   \"location\": {\n    \"path\": \"/usr/bin/uuidparse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a22bcf59ee4ed15\",\n   \"location\": {\n    \"path\": \"/usr/bin/vdir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f08fae9bd8783146\",\n   \"location\": {\n    \"path\": \"/usr/bin/vi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ddd5e3a5aa076e0\",\n   \"location\": {\n    \"path\": \"/usr/bin/vmstat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed10028e7d4f7454\",\n   \"location\": {\n    \"path\": \"/usr/bin/w\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1db3b12998748a74\",\n   \"location\": {\n    \"path\": \"/usr/bin/wait\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30198fcf1feb2606\",\n   \"location\": {\n    \"path\": \"/usr/bin/wall\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f2a8683c8099e78\",\n   \"location\": {\n    \"path\": \"/usr/bin/watch\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"153159ced8db8471\",\n   \"location\": {\n    \"path\": \"/usr/bin/watchgnupg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f841a9c933916e31\",\n   \"location\": {\n    \"path\": \"/usr/bin/wc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fee8e285d7806592\",\n   \"location\": {\n    \"path\": \"/usr/bin/wdctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4537867a77f5a190\",\n   \"location\": {\n    \"path\": \"/usr/bin/whereis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f092586abc8a56\",\n   \"location\": {\n    \"path\": \"/usr/bin/who\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72d01db6cfc05415\",\n   \"location\": {\n    \"path\": \"/usr/bin/whoami\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"645161df28c8fc47\",\n   \"location\": {\n    \"path\": \"/usr/bin/write\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61ca9c1903fb2fdd\",\n   \"location\": {\n    \"path\": \"/usr/bin/xargs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a44be6065e3f734e\",\n   \"location\": {\n    \"path\": \"/usr/bin/xmlcatalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eef9bc70db74a8b3\",\n   \"location\": {\n    \"path\": \"/usr/bin/xmllint\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dccea57b7808fc50\",\n   \"location\": {\n    \"path\": \"/usr/bin/xmlwf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"690cd8d2ea0faaff\",\n   \"location\": {\n    \"path\": \"/usr/bin/xz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3df2452be6ccc65\",\n   \"location\": {\n    \"path\": \"/usr/bin/xzdec\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85f323aa34b082e2\",\n   \"location\": {\n    \"path\": \"/usr/bin/xzdiff\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2692b14d1cf18d9\",\n   \"location\": {\n    \"path\": \"/usr/bin/xzgrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40c4587c3638d72f\",\n   \"location\": {\n    \"path\": \"/usr/bin/xzless\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93d5b0961ce52526\",\n   \"location\": {\n    \"path\": \"/usr/bin/xzmore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"686462f2259ad5a5\",\n   \"location\": {\n    \"path\": \"/usr/bin/yes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9752ca791281840\",\n   \"location\": {\n    \"path\": \"/usr/bin/zcat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94cc3e5f923615f1\",\n   \"location\": {\n    \"path\": \"/usr/bin/zcmp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bb61af9004fd32a\",\n   \"location\": {\n    \"path\": \"/usr/bin/zdiff\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6946cc4ff571f1e\",\n   \"location\": {\n    \"path\": \"/usr/bin/zegrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c47a76d2a4375ef8\",\n   \"location\": {\n    \"path\": \"/usr/bin/zfgrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad76fa212d02b7c3\",\n   \"location\": {\n    \"path\": \"/usr/bin/zforce\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c94ade893c6797ce\",\n   \"location\": {\n    \"path\": \"/usr/bin/zgrep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3319ed7ea7d3acf\",\n   \"location\": {\n    \"path\": \"/usr/bin/zless\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbce97643043b578\",\n   \"location\": {\n    \"path\": \"/usr/bin/zmore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3deb264d48ca71f\",\n   \"location\": {\n    \"path\": \"/usr/bin/znew\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a92e1cc3bce2d517\",\n   \"location\": {\n    \"path\": \"/usr/include/python3.6m/pyconfig-64.h\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"778dff7b35a75fff\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-functions.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64e620a0e32ae402\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-init.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2fc0e39fdc21d25\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-initramfs-restore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"526628c9d8e8c954\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecb95d8e78ff3fa6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-logger.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5b19c983992d31e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut-version.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"967d38dce20c0627\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/dracut.conf.d/01-dist.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"999893f6d8d34adc\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/00bash/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"778dbbfab3594ba3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/00systemd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddc52c78cb8e4309\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/00warpclock/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4868060a9e527ddb\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/00warpclock/warpclock.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1b0371f721230c1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-boot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"507570cdc5306eb5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-load-crypto.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60788055138b54fa\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01fips/fips-noboot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"949a1d77c8faa4c7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01fips/fips.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9add616ed73ef412\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01fips/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95e1dd47bc9745bf\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/01systemd-initrd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d570a6d5fa13e13\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/02systemd-networkd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5ae3fec1f03ece4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/03modsign/load-modsign-keys.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83b670108827bbd9\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/03modsign/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4436ce6f106d3a77\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/03rescue/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14e9052dbfa7935f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/04watchdog/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef9a1ea6d6bdcedb\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/04watchdog/watchdog-stop.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"284f516a516fd5b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/04watchdog/watchdog.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f063dc357b61a814\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/05busybox/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27168d5e10b7362\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/06rngd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0f6bb74a0536e20\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/06rngd/rngd.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"305827df63a04c45\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/10i18n/10-console.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab92a233d56b86e8\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/10i18n/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26ab950bf1e04014\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/10i18n/console_init.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ed3d5dfcf790729\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/10i18n/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccf4affbeaa0191f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/10i18n/parse-i18n.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9786b96dfb07fa8\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/30convertfs/convertfs.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24d9a98904c55eea\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/30convertfs/do-convertfs.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"601282eed7085083\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/30convertfs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fca04fb98ba1fd1e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/dhclient-script.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95217a1e3d602052\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/dhclient.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2707921219956776\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/ifup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc08d3129da4d84f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/kill-dhclient.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ebafb496d8b99b2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea7e6bb21558716f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/net-genrules.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ed261e22789c3e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-bond.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc6a113a0ad294d1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-bridge.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"999df6f37d06c4c7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ibft.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"891fdfdc807acf69\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ifname.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15657915181be3ba\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-ip-opts.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd44e0f6138dd5ea\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-team.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff50764ef43e2d9c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-legacy/parse-vlan.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49ba612897bf40d2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-manager/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67a997f0705cd06a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-manager/nm-config.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55a0baf9bda4a39\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/35network-manager/nm-run.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"793ba63168899b7d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/40network/dhcp-root.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4316526945fa663c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/40network/ifname-genrules.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae55d668e906b5a2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/40network/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e71d457e72dbb080\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/40network/net-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e07dfc2d797f0f6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/40network/netroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb12cf4cf7e936ab\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/45ifcfg/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2885e33cc77a50e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/45ifcfg/write-ifcfg.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95e67b2bddbf8f66\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/45url-lib/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ded26040903bcd8\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/45url-lib/url-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fca641dd3b7d333\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50drm/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b37dc69eeddbd9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50plymouth/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f183fa66bf4fe007\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-emergency.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ea0814f23bc67b1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-newroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f344a252d94e793c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-populate-initrd.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d459ea9e133c042\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/50plymouth/plymouth-pretrigger.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c4bfdd809b4733f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/README.md\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f394106bd706faf5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/lvmmerge.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c3f77c5ec617b31\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/80lvmmerge/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16fa8555665b23f5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90btrfs/80-btrfs.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c33f890fedee73\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_device_ready.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4a71a1807cb5167\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_finished.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18420d314715dc9b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90btrfs/btrfs_timeout.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7c973a7db6237d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90btrfs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68aee2a41f889482\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-cleanup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17749eda622f92a1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea16bb5fb4661fa0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/crypt-run-generator.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21c1c0a16cb936b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/cryptroot-ask.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b105beae4d62238\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"574f9f91bab709bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/parse-crypt.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"206a055cc21bc6ae\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/parse-keydev.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8dbe87db58f3bc6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90crypt/probe-keydev.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea325657cf210417\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dm/11-dm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0c4cf46846cffed\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dm/59-persistent-storage-dm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f14a57e8ee7a569\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dm/dm-pre-udev.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"260f1e2bdc32eb26\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dm/dm-shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b706d635015fc73e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dm/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c359c4a07a687995\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dmraid/61-dmraid-imsm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88a499cb8b8a8d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dmraid/dmraid.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"634ed61e78bca0d0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dmraid/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9895ed105dd75bec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90dmraid/parse-dm.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5acea5a137c86856\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules-extra/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d30136aba39902c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/insmodpost.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6b61b3100e7922c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17fcc4497e0d1fcd\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90kernel-modules/parse-kernel.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93fd14c54bec0fec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90kernel-network-modules/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"122019bccafd39ad\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90lvm/64-lvm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d0987304c956338\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90lvm/lvm_scan.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4056397586897acf\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90lvm/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a089650995d09e2b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90lvm/parse-lvm.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da5f951e280bed16\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/59-persistent-storage-md.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9d19c81c13f7ca7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/65-md-incremental-imsm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8f485be1e098b43\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-noddf.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8dc4df33b8f47ec3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-noimsm.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f0aa6092fbaa94\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/md-shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cfaef4b3226a845\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdmon-pre-shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8b6aabdf31b2e27\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdmon-pre-udev.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"185ca8bbf9fcdf42\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-cleanup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d138a1f6561baa09\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-needshutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adad4374e08976d1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid-waitclean.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b6418d75f63bc57\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/mdraid_start.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ad89054061d31a4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7526b1e3fbd6e88\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90mdraid/parse-md.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"322d220b15eb5b4c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13a7dc9b4a193649\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipath-shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d42490ab3aa4bb2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd-needshutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f695515a88a6cf0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd-stop.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b1af3ac9bf106e4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9bfe1283412e06a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90multipath/multipathd.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67888c43b6aa2e8b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90qemu-net/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9af603022cededec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90qemu/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"548b03c0f4f6df46\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90stratis/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e8ebca9f20c5922\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-init.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef96165cbef4eb7a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-start.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68b1395a86c640a1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/90stratis/stratisd-stop.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7af7b0b2633a466\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6de9f2f46bbf000c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/crypt-gpg-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"312f9dbd64b77168\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/91crypt-gpg/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cec219a4abac5379\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/91crypt-loop/crypt-loop-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf6cf37b8b870d90\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/91crypt-loop/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69c93bdaab4b914a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95cifs/cifs-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87d92ebca63bd582\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95cifs/cifsroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff98265ef11c0254\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95cifs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fbbda95308cecb0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95cifs/parse-cifsroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c4741fd87e068c5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95debug/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ef18bdb200dfb6d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe-uefi/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22f99ea7324d8cc1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe-uefi/parse-uefifcoe.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b9bbf335a97d411\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/cleanup-fcoe.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fabee1757a4c3e1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-edd.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85ba6eb1645372c4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-genrules.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abf28e201bdcdd40\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/fcoe-up.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"268a0cb194b7e6bb\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/lldpad.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"133a884086e55770\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"765a5da52ce22bec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/parse-fcoe.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60e575fe512abd3c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fcoe/stop-fcoe.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7f21c08d83950a0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fstab-sys/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3271b577bcfc6ec4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95fstab-sys/mount-sys.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ffd92189509d138\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95iscsi/cleanup-iscsi.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7063d58880963db2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95iscsi/iscsiroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67383b0585aef2a0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95iscsi/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36b982f87fcf34ea\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95iscsi/mount-lun.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c8e84b65f7483ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95iscsi/parse-iscsiroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8792d88e04935fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95lunmask/fc_transport_scan_lun.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5096c13cba9c4d4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95lunmask/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d13d3b30e6e9a6f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95lunmask/parse-lunmask.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1f815801c5a15d6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95lunmask/sas_transport_scan_lun.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a813a45d016e60b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nbd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f411c737fe0c335f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nbd/nbd-generator.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5a927c09c9b8ff9\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nbd/nbdroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"769790359f90a6ff\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nbd/parse-nbdroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"707837e85ea92a6d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dcc5428126ec357\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfs-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb02dea0e1333cd3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfs-start-rpc.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6919fe4971a5b81\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfsroot-cleanup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb7656a423c24aa6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/nfsroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bf408cf82f6ea1d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95nfs/parse-nfsroot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ed9d1d849a723bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95resume/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45af2fc1d1100740\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95resume/parse-resume.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc7e5979cdbe374c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95resume/resume.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb32a7428d984548\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/block-genrules.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d3c1e54ee5045f4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c72f98b4a30c2a0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/mount-root.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a378557dfab0bd17\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/parse-block.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7f6bd142d596e93\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95rootfs-block/rootfallback.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5e19ef5c9f22329\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95ssh-client/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8cfb4a831e90f4b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95terminfo/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a8e5b16b02098ca\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/59-persistent-storage.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3fb126acbb785d2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/61-persistent-storage.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e70cb4a62188110b\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/load-modules.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2737a49b1c57de80\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95udev-rules/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bee8ad3db9fa033\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95virtfs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db3ca8505dc91c2d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95virtfs/mount-virtfs.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f094f1457fbf0707\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/95virtfs/parse-virtfs.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"410ab7cd1296d990\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/97biosdevname/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f1bc8f1743c769c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/97biosdevname/parse-biosdevname.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96e543b726aaad98\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline-ask.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a748c862515aa56e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline-ask.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aadc44c3a079e1e2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70b1352b6b79c9bd\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b1382d9c9f98e0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a21481cc808ef16\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9cfb90788a3d8e7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-emergency.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbba5ca0a00710aa\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-emergency.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"691c434585cd4ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5efb18fa511cc56\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8ddc4d8b0a847ef\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e36e5e1152043ea5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4d8c58d2ce8ab92\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8dc3cb4232d496d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71ad2bb4d79cee7e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ef80ca0adfc4faf\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc77e922f1e2f4d6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a8d454c2ad7e440\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e61d2d6adf8ebd2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67f0c7730fc61135\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae60c2120cdd9cb3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c78d97724790c307\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65bb23a8a8cee1bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"221c949544566e27\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85134cc793188261\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c3cb7b29edf7719\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7de3c4063d54141a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9772fb198ae0b748\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43998093969ac3ba\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1719e8a346eef3f6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"544e02f3e8997dce\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"638deefb834ccaf7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cff2f919d46cc543\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1359f1873723b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service.8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47cf643f9fb183b0\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-shutdown.service.8.asc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af4d859561257f54\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/dracut-tmpfiles.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f10ca38cb558a14\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/emergency.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5faa42b4d7bf8c8\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3299081737c7fe7\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98dracut-systemd/rootfs-generator.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a176bb190cfcebd5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92f56ccb85da92a2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/ecryptfs-mount.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82570af3112c0400\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98ecryptfs/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62815b2eb0f4572f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98pollcdrom/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"231b1f40b54b4f74\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98pollcdrom/pollcdrom.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c17649d05d12f51\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98selinux/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fee65dfa4739dd7e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98selinux/selinux-loadpolicy.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd2d46adcdc0c5f1\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94f1c68026fbf02f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd1a95e847cb852e\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/parse-syslog-opts.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5f9d89da1de1cd2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslog.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87eca2077402d45d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslogd-start.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c0bb1db555b24ac\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/rsyslogd-stop.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ce199845ec531c6\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98syslog/syslog-cleanup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59535f40d4639505\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98usrmount/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c295e865a283082f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/98usrmount/mount-usr.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea6aee239c754641\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/dracut-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f379ced1246c370f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/init.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aeeb36b7b79a2e5\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/initqueue.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fc38f76455e43da\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/loginit.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e9ae6f952a55f06\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/memtrace-ko.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"748b424cc4c19262\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96af9c5a8fbc0509\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/parse-root-opts.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a522bdd09b67f8d2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99base/rdsosreport.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e0b90b81093ea85\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99earlykdump/early-kdump.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aea3d13787a45817\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99earlykdump/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"850245490262da6a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99fs-lib/fs-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b90fc366a3ee733\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99fs-lib/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aa84ef71fdeeee3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-capture.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14b6c7f5dc21c60f\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-emergency.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23bc0ca151841d38\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-emergency.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3720c550b7586698\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-error-handler.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee60cc84bbea48c2\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump-error-handler.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39b1481321be6d14\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/kdump.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fe6fb4997d2854c\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2247ecaaedc12792\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99kdumpbase/monitor_dd_progress\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"282b4af0532ab135\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99shutdown/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfd40e587120b3e9\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99shutdown/shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c991137dc5e6927\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/clear-squash.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6ec9eddb08fb95a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/init.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e10ff5d4b2f569ab\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fb6a358c145595a\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/setup-squash.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38dbe7ebd06b9eb8\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/shutdown.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8b3a0ca4d41686d\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99squash/squash-mnt-clear.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c67b2a70e8078cd\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99uefi-lib/module-setup.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"732e0396052f8ec3\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/modules.d/99uefi-lib/uefi-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d223acddeb12493\",\n   \"location\": {\n    \"path\": \"/usr/lib/dracut/skipcpio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd246ea2318e6327\",\n   \"location\": {\n    \"path\": \"/usr/lib/kdump/kdump-lib-initramfs.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee3f17c1e7d1e163\",\n   \"location\": {\n    \"path\": \"/usr/lib/kdump/kdump-lib.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10e5e23bf340c087\",\n   \"location\": {\n    \"path\": \"/usr/lib/kernel/install.d/20-grubby.install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51ffef5bee190b27\",\n   \"location\": {\n    \"path\": \"/usr/lib/kernel/install.d/50-depmod.install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dae7dc91c79d2327\",\n   \"location\": {\n    \"path\": \"/usr/lib/kernel/install.d/50-dracut.install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cd7723f28c027ce\",\n   \"location\": {\n    \"path\": \"/usr/lib/kernel/install.d/90-loaderentry.install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c88f61100346e2a2\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_ADDRESS\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40993d0eb219c3e3\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_COLLATE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0c504015d6434a5\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_CTYPE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a981fcde66fd0492\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_IDENTIFICATION\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd87ac0babb108e0\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_MEASUREMENT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a54eb882fad44337\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2fa3985f372abc5\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_MONETARY\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c082b5a371666762\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_NAME\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"562e3224486a37dd\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_NUMERIC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51abbde3d6f57e39\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_PAPER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a4d51da5e56a6e8\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_TELEPHONE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"107e184e5fbea116\",\n   \"location\": {\n    \"path\": \"/usr/lib/locale/C.utf8/LC_TIME\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3ecc5b2c3834f73\",\n   \"location\": {\n    \"path\": \"/usr/lib/modprobe.d/systemd.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee87f8c4929aa80e\",\n   \"location\": {\n    \"path\": \"/usr/lib/os-release\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1661b6aed3be0b06\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2052dc72a162d89\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2759dc04a8cd0c78\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe8c46e249b05eb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f079b832735fab1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8e238afe0194bf9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/base.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d2df2acf5baa3c3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/base.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e361a7069fd15b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/callback.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f331c03b5a0b12c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/callback.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed3656c3b2a21d33\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/comps.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c769bdc32fde51ad\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/comps.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a7b59a4e5007731\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/const.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6110f44a31fc99d6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/const.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44e02092d16c53ce\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/crypto.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"312632333a03fe3b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/crypto.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42f1de85f24477f7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/dnssec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6d646803038eee0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/dnssec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54f4c6012fddc7e6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/drpm.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a79a4bb0d53f087\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/drpm.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b3e11e837d3363d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/exceptions.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"771a458d6cc8d972\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/exceptions.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce6f9b4693360009\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/goal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7585c771ce35e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/goal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32f2ed25d2be6e2b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/history.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a515fd795b2fe10\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/history.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fedfc595905eaf17\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/i18n.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1a234fee7b4ffa5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/i18n.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22963e7f2a45b454\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/lock.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18fa36cf467b0a0c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/lock.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f67a514eb207dd65\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/logging.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfe0e790f03be44a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/logging.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d5b3c7337b5f12b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/match_counter.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90ea349537d25128\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/match_counter.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81566be57f4f73c6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/package.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"665e51317f8023dd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/package.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af6041b8c0acee6e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/persistor.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf672599cb169b75\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/persistor.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccc2a20a8952dbc6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/plugin.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ac247d363593fa0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/plugin.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3b9a2b8bfecab4d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/pycomp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec91ea321dca5230\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/pycomp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1c9030a1dd4eb52\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/query.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"670f386101b80321\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/query.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"324d459f91b55929\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repo.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4877bf35cfd1f9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repo.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb448fce7a68fe69\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repodict.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9e7acfba5c55e8f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/repodict.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f54571631b06a15\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/sack.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b2012fda901259\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/sack.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e387ab6ae86b7db2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/selector.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f481da166645f9b0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/selector.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efc39771ebc18aa\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/subject.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6d4d69e60b22ea1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/subject.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce073c7ebdfd4457\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/transaction.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb6f35823859ab49\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/transaction.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77557a535a74c51\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bcdc176c09f3951\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dce6eecce73d0ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/base.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65b12f4ee0f40b3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/callback.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6416e9185a96ad3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a01d2412cf621c8e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7ed47326e6c52a4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5594732bc28e9eb6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/aliases.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33548b6db7cde05\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/aliases.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da394c02c30522f5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/cli.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0c7822eb3b57\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/cli.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65ec36297c7d7bc3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/completion_helper.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e527eee9a5e86385\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/completion_helper.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"746a3fc287f86876\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/demand.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a1409a0558cbe59\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/demand.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ae71708b6401faf\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/format.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80bedcf5ae9e6fe6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/format.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a948977fec15d3c1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/main.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e126ea0d5e2c992a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/main.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f45b8a547865ab9f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/option_parser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e29abfb877d3bc9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/option_parser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"203de15b7edd1614\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/output.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f0025fb991358dc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/output.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d30a7921ff9858f3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/progress.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c2631d921d4fe9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/progress.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1335e2ebd4cc910a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/term.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b80f9676723608\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/term.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f40ecb54e95ac558\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2678a8e48331bbf1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/__pycache__/utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e69640086c245186\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/aliases.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fae0420239ab9a7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/cli.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30f22d73f7fb1ea7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5483a35b727f852a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a2ddf18099ad55\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc0d9c09a7b747d7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/alias.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ead561bf42415e3d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/alias.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ea10095595a642c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/autoremove.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5a9133661acc76d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/autoremove.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ade8f4740c69459a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/check.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcaf2504f15f5be4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/check.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97a19532caa8b219\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/clean.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e6566e99677ecb4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/clean.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10b5df2c951a20f3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/deplist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc9685739dbb1b5e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/deplist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f87b68d62926ea5b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/distrosync.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34b35465618fcfd4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/distrosync.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80eda2fe51ad3080\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/downgrade.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"988bb71f71da0265\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/downgrade.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25c0222c86c7e78f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/group.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e9dae1000aef41\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/group.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44dfd4304d1eb431\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/install.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f34b9f681f5897c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/install.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1a1a1b0a39a192\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/makecache.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bffa1d8bac1dbf0a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/makecache.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fb6c962fbd9aeea\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/mark.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ce0fba4ddfc95fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/mark.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0bac5bd5cd92a4a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/module.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8e33ca83cfa880e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/module.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b72cb868dfbc4b66\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/reinstall.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97cfcd85a469922b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/reinstall.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f42577a6b3135cf6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/remove.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9fd2b4bd175bcc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/remove.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5cf2fd0044e7239\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repolist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3635c9ccc2b9a53\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repolist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf1b9d0177c47a76\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repoquery.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf2b86a67c6754eb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/repoquery.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e07ea94566fa1584\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/search.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7bc4837b4dda949\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/search.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e66348bfada47f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/shell.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb08177738fadd14\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/shell.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2d3ad879c885ba5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/swap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1a14dc860fa5d2f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/swap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89b874b14ebdca31\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/updateinfo.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"141d04f45ac38ce4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/updateinfo.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35effe27b1271fa5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrade.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ce1aa05cac47153\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrade.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ead7a07edff84247\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrademinimal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ba61bc110c8a726\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/__pycache__/upgrademinimal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c53e94e51ed9b7a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/alias.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e9ee0cd1f948226\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/autoremove.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46752c364a7869ef\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/check.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ef6eb460524fda3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/clean.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccbc8f6fe857fed2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/deplist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"797116b82ee5903b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/distrosync.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b0c8e90241bde61\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/downgrade.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b74116b21abcbf8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/group.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d7e50b60610cff7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/install.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dc97cb10aa54a3d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/makecache.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb0c3082b7637689\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/mark.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afe52868daa8b68e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/module.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32ace4f174efe47f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/reinstall.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb087e97ab0db5a0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/remove.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c139a991131b782\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/repolist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a25377450add3a2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/repoquery.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"166574cf570cd7cc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/search.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a178218841c0148\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/shell.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ec878b9a03e09f7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/swap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8ae21817eafd2c3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/updateinfo.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dee0cc256cbdc97\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/upgrade.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6741a75a2ba244e8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/commands/upgrademinimal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab5cc13a02174318\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/completion_helper.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c2655877adb22e1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/demand.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e3d5732136d0b35\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/format.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba7019920bcfee4e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/main.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8cc1399f3cf307c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/option_parser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df3256f529bde055\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/output.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddfe427aac2a402f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/progress.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"449c4d7423eecd0e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/term.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e501b55aa0ace9f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/cli/utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77a7bfd974c77c4c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/comps.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50565ea7b360da2a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68e9aa88f2449b3c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c98a5ed5485f5628\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff082f0218739258\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/config.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec85a7102c9e0dd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/config.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fe6a15f26b1da2e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/read.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a90992388fd166cc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/read.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"507275e1f1484add\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/substitutions.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d969ae5b09b1843c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/__pycache__/substitutions.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b335d683280aa1b9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/config.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"591c5dba346667d3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/read.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce0f386dfab11d1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/conf/substitutions.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e5fb3d7f69b6287\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/const.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4678376fcbb04d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/crypto.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eab593672000e7bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9d08e88ca54536f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5c24b90a65cb5fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f69a5ddafa95ae24\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/group.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"724f455182b1dc76\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/group.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63106817d4c60215\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/history.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0b17df7710bd8fd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/__pycache__/history.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c48b1b78860a5188\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/group.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b5d50d951d9fc48\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/db/history.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5faf156f54084aa6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/dnssec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76b8ec4ac4f2b09a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/drpm.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49f90b14c6009e92\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/exceptions.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dc3d87e90182c31\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/goal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e1bace9de6edfdb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/history.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5a358492f145c55\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/i18n.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4eb6daebb9cd311c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/lock.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b607c2f26d88ef9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/logging.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e752c94eb30cb03\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/match_counter.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d357c87f7754758b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee72f630c34e80f1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63e7595f8334fd7f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1c535d2ae3f87e2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/exceptions.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae1239e9e421d9f9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/exceptions.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f122b1fc7b2d4d4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/module_base.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95bdba0385faaba2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/__pycache__/module_base.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf8a67c2ce987fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/exceptions.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa247b5cfa40fd12\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/module/module_base.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3339a2cf36843fa0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/package.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2768e23c5e334c4e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/persistor.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5cef5a90d0116d1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/plugin.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28308cc2f4200752\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/pycomp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8c3371acf6fae5e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/query.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"991b1b5a4b58b2e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/repo.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf28a015e4148ff5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/repodict.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acc8e58f1172cbde\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a675e763eaf640b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b025ac8ed08cae8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ecd0c307a14a9c5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/connection.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e554564193ddd26\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/connection.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6960c96ea4f320b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/error.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6cddc4ef6f9164\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/error.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa3f7a956cd2c66f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/miscutils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab6fdef442e226dc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/miscutils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29a78b031cc5f6d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/transaction.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25e230a14d09e713\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/__pycache__/transaction.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"171d6df943834695\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/connection.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f25266ac310bdb56\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/error.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6056296633e20c64\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/miscutils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0b634e4744340d3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/rpm/transaction.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65399cb967d2deb0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/sack.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ae8db5c4dc6404a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/selector.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23b2ccc923769ad5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/subject.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3d67ec6ac82fc71\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/transaction.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14217301f21c16b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"167bb37775674ead\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5337197c6f2de198\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d8a73c96d15efa8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5db059db3db65e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/misc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"522ece119091213b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/misc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73092c2167d56a9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/rpmtrans.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"403f0e67ad5f15d6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/__pycache__/rpmtrans.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20fdc0dd598ba73e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/misc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c09f54c4a4cfd9b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/dnf/yum/rpmtrans.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1a4ceebae959905\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/easy_install.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34d2afe97b6b4429\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a87e67cc1a6edb2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6a5eb6e2e21fed4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"491d9455d659c87c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae92effb7008c7ff\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/py31compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b9dec6c59d9a3b0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30a9baadfd1ae9ba\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac51f385d284f273\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"107d6343cbfa3c6c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85475d0982626629\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35e665e2afcb1228\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bbe83e05f770bad\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6d1e5a61de25646\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3458003417963242\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b7a0fea9931ca3e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53dd06145b4b540a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13e018b6fec75ebf\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee121dcd92b2328b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa3571b859b81a9f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7bc72e7596f6400\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cab1f9b8071aa8f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf620d08470dbebc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86f98b3fad5c518d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30c48032a92ed8c5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a155bff7763d2c7b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb6cf95cdc1fbcd1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e78f3f94c41cf125\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"273e952e12701c88\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b4c5b7068aac1fe\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d107e0976b77157\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d10fc7ed5c22016\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"399c505fae1eaf65\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e54ef4cfee35cc4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc0361c60d15fa22\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a79af2b7aacf48c3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d52a6ee8be8ff1e2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5afd342761822477\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af6e4362cb83595d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a118c36a5c09ba6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d20242383eaa718\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21bf26a5bbe1c942\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a68c1b211151806\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"686872a0e34e3b0d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"545b03054cddf4b6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/_vendor/six.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44dbdc6fe83b0de\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81d5dde6d0842f7d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad4520b587e12d27\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b24f7ef32b247f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/pkg_resources/py31compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a32216f4be9a0c7b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/DESCRIPTION.rst\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e36bd090c3efc32\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/INSTALLER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b516e23afb4754\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/LICENSE.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b486760e43791580\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/METADATA\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88c462b274296ec7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/RECORD\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7dfca7ca1230049\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/WHEEL\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6cded1317e5f1ea\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/dependency_links.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be08a6b70086c1d9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/entry_points.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6405dbe1a7e49548\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/metadata.json\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1852cb275f42ca42\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/top_level.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a2d966f99fa6456\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools-39.2.0.dist-info/zip-safe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5aa78037206cb69\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53888d37455ac0d7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68cfa0c70b97bec7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16fec7cc644a8a97\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abf2d2f1c3351849\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8d1fc7f3b9ccdf2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c960480a289e80c2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/build_meta.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6547e6c246e55a03\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bcd91d2a2ec380b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/config.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6b12c16e4b2bbdd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c12c589d80033c35\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dep_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"794ad4ff43cd8c94\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66ce7b19656720f4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17a507c31b01843\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1000195f17b33c9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b013053646d1cfe\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fe2339e9077c4d0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"883f343b181d288f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90824cb9b5417d8b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glibc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d7e0851eb9c8374\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca5d8fc6fa7fb734\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d251ffd39b445710\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a302a84d73f6c1b5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"289ff9589ddbd8a4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"251b1ac907121948\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc61370b428623d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86ed90ea9753d995\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1144cf20f6fc30e6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c46d9f3a966ce0f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"430b3e5112f01b1a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa5b93f25d339e7c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66a31de6cad35bcc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cec5ef3426640580\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3396cde84176d5cb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bf95c4ad2f9a5b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/pep425tags.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35090b716ef45f08\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"913f0f7aa8d614ad\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"170098a1d8a88eda\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e02fdba9598d438\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92a8df889627cd8d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f31346ea856d24e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py33compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ac588d5c391a13a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b31511124847782\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/py36compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"379f3782c3eae961\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b84a81f4a4718dda\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63ed7f20b75fc428\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7aa920610b0d514c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"faf87a4a812107d9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a5ae374e7dc4a75\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a447a78b7cac01b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8aedc1f75cb5636a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6fe580cec5cba2d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32d81f50b297369\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5ed048560512b98\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36f8dd1543a41336\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/wheel.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dec4966e8c49482\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95029279fb6bf32e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fdf0522cfa3593b2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1718f1b493c8a475\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96f1ca263a9ba1d0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6a42e52b0187a65\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b17f010c739bb52\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"228433658602fc27\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"426b55fba352d0d4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/__pycache__/six.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4178eca6669ee256\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__about__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"108480029473995\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5efdfe697aa518fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad8e701b54d24f21\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89d3102fe384d79f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e85e4c8b7e7fbb41\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b112f4413d8fbc1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2a595a1f0ed67e0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"105993c03541bdfc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d286bc5f7fa2fcd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a85d32359f1186c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0158f5423b8bb1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a422041a988cb96\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"806a74962aa51078\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a00b2cc298d25fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70fe12696cf864c7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3971e0022f5669f0\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"269f681af7b4aff2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37a2a5bd6f85b295\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a3b694499db013\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2b6a8b6280e933\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/_compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b9f400fba12e0fa\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/_structures.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe7ddad3e38dfaad\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/markers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a10ced586905c3cf\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/requirements.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c321784303c06ba6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/specifiers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"301d5e6e3577120c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eef4a23cdf6d0b77\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/packaging/version.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8934bd4823520f91\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/pyparsing.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d675c4460d6ae0c1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/_vendor/six.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4134af40559e8c90\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/archive_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6acb5cea8cbe405e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/build_meta.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab4b03ff13c59209\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76b85acf2494ec70\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dbe7a8b1d24daaf\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b36c7b007a3f2b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad75a7c63f305720\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df78368086f345a9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8f667976484b9e5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"656fc27f84bc9e10\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48f2bde2e9768ca8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6df9d45884101010\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21ffdf9ef423659e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aedee9e07f3cc60e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf5040e0c0697395\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_clib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"840ebbb3d1088f33\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37733b29dc47f4eb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a0a164deb4c694\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c530077594dd2dfc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3646e1755c110cfd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4647bdad673d5151\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"311a950856e63eef\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebca81f3d56f19ce\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/dist_info.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"248c4db1eb5cc54e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"410e6d0fb3b884fe\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ba7f6b3de1a20d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abfa3f191cec3676\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7391b1afa8350948\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6dd4b3c15a3aaaf\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72be6566635e957a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96089759f4436998\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8073e0c97d1993bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bf265ad07593297\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1327c6b67418ad82\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"791c5147f046c66d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"327f3712daedcc37\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf1b47ed3dd650d8\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b523d14908842d9c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab21c674521710be\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58685d7326700e76\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c12277075470cfb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55d33a06434266c2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"344def375baadf84\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee5e74d82e381b21\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5000d86294d0f045\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37ec79e3969b0088\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea751aee625f59f6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3aac57482279acc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e842ecfb912fad1f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"677c875eb9d44b15\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"218a3e24285f7735\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5881ad431d873ad6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c59cf0c6824454b1\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a169ab8e6c710e9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/alias.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4873c9de201bca5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_egg.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb9e81413d0c9e8a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66880078ab383d93\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d15c17cb94178a27\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_clib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c4c0226483532b3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_ext.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66fa3669b804e6dc\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/build_py.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67f9e2972814dc88\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/develop.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fe367198996e757\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/dist_info.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9727f52069cba70\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/easy_install.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76f8a0e476711190\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/egg_info.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54fe31d710917233\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72571f2c180f1f2e\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_egg_info.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff390510353b90fa\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_lib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf953c518f852a35\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/install_scripts.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37e4e57359aff45c\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83e2cf09e0c092b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/py36compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc6bed1bc6244fec\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/register.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ae1a4f071dd0313\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/rotate.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70731889209abe82\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/saveopts.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2eb8fd2af7e0f813\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/sdist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc4766bd2528fb49\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/setopt.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6a852d6cc8479f5\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/test.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b588b0336298c58\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/upload.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e4d6b2d51ff1af6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/command/upload_docs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a95d9e307f430c62\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/config.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71ce6ae23a94bdb6\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/dep_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e518f7a4f5931b07\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/depends.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"484d53df46cb4db9\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/dist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7560a92aed6efd62\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extension.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d294dabbea714b4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9add77e049d8f855\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f7f0db866c6881f\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13f4888c60a218e7\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/glibc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2757b4fcf26f32b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/glob.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd41b526af349967\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/launch.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be4fa9d0c66c6933\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/lib2to3_ex.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d36d759df79bcb86\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/monkey.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c911fd734447d760\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/msvc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d200ddd5086577d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/namespaces.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e1d93e0ac9ed5aa\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/package_index.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6c84f70b104cf4b\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/pep425tags.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4ea9d7f9aa6eab3\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py27compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eae1ad4925559d73\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py31compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f422da443afef12a\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py33compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"542f07fb7abc1d9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/py36compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"113b0ae82a99a1d4\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/sandbox.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f07001528a392104\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/script (dev).tmpl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e02ae821a153cefd\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/script.tmpl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"646c2f6ca69da6af\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/site-patch.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6efc3a8c2e59e8d2\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/ssl_support.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ace2eaf14fa187\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/unicode_utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"777065e17ffa6e45\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/version.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e86ae29e572b485\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/wheel.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"334cdf7113a025bb\",\n   \"location\": {\n    \"path\": \"/usr/lib/python3.6/site-packages/setuptools/windows_support.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e49454db005de573\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c34bf409977ac9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/macros.d/macros.info\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf11bf0093a0a1ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/macros.d/macros.systemd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a46ab3fe015d61fd\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/aarch64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ae5588e2c3c7364\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alpha-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21bbef18d1220f09\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alphaev5-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fcd8285e5c3472a\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alphaev56-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff62bdceb95eedc7\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alphaev6-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cee4d51d8308f692\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alphaev67-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ad87b76e86b7c03\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/alphapca56-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eb1a96dcb215474\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/amd64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"120925dc2800b739\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv3l-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fd00524da665b5a\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv4b-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efb038560a559493\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv4l-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cd37e7b1c02a28b\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv5tejl-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a78da426fd28b50b\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv5tel-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cac1f0fd529f2081\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv5tl-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2a61950ffe97624\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv6hl-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75250765a1c3f07c\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv6l-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e91cb4fa24ee0e10\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv7hl-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a946c7ec7053350\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv7hnl-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b119ab86c603942\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/armv7l-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abe8992d382d50b8\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/athlon-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19d2f6f343d8e9ad\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/geode-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"380b2bc8aae8c6f4\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/i386-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dabb7d10d0d19f84\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/i486-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86a4762e9473343\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/i586-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fe75c8cd6d29db3\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/i686-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9db795da300aed6b\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ia32e-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19ff03b844637de6\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ia64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca6e5d2a3e52f718\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/m68k-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1855a4d56b6d243f\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mips-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"def54d854c70fd7d\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mips64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c280a32aceef0e7\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mips64el-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc6fbea94c3631e9\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mips64r6-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dcaeda69146f813\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mips64r6el-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd07411d1d3817a6\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mipsel-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b6d783a032479c6\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mipsr6-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80ab35bafcd0474d\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/mipsr6el-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bdde6f277fbdad5c\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/noarch-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b5f60e843774683\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/pentium3-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12adc5bd6810ab82\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/pentium4-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fab64663bbcc26f\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"326ea08a97493bec\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc32dy4-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58991fab5af1c452\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80ed92e2668f7fad\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc64iseries-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa1241babe4ca3d5\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc64le-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"737a8a83eb187044\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc64p7-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29a3a8977187064f\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc64pseries-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95be0ab287c631ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc8260-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e148581a4c6dcdbb\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppc8560-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a88bc0e7af30586f\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppciseries-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"193ae6552ecab064\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/ppcpseries-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9cca57e8cbfb03\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/riscv64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec0d2a3843df3a89\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/s390-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d2b15c974d2b240\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/s390x-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c60ce6fd4e3efc7c\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sh-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e3cbdb51dc790e4\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sh3-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d89f6d84afa1da90\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sh4-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c66108f568022203\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sh4a-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5b2f9842b8cc303\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparc-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e20e0c5814815415\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparc64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c2214c81f6d463\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparc64v-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcfb56bf187a56ca\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparcv8-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db8c7b3c435d69ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparcv9-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c36796d512782c71\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/sparcv9v-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bc50307708d458d\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/platform/x86_64-linux/macros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36431b9a14038c26\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/python-macro-helper\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c079cc99c57de281\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpm.daily\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1755b74711a01675\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpm.log\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"847edf7a55ab91bc\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpm.supp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9322400200e46e02\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpm2cpio.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a08e49ed55a0c23e\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpmdb_loadcvt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e25399e78a2ddbf0\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpmpopt-4.14.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95b05acf95ac6a1f\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/rpmrc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bddf9d75056e6681\",\n   \"location\": {\n    \"path\": \"/usr/lib/rpm/tgpg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5be02b175a072d8e\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysctl.d/10-default-yama-scope.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14839f2910a5ebdc\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysctl.d/50-coredump.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"327574da6a53ea20\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysctl.d/50-default.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f472dd603c73c747\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysctl.d/50-libkcapi-optmem_max.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"188346a125cf228e\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysctl.d/50-pid-max.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49932ad1157aeec0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/boot/efi/linuxx64.efi.stub\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef8a30d3c5abf9ca\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/boot/efi/systemd-bootx64.efi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb8f8dcd369dc659\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.be.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"605d7aa8dca30f87\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.be@latin.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d7bbc31e6dc200a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.bg.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bae42f4ce5fa8e36\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68029a6266400959\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.de.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41504dce68a05b8b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.fr.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be7626e0e8bdbdfe\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.it.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4b333cc2b961219\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.pl.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6d8e5a694aeb0ac\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.pt_BR.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8025016d3285586\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.ru.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9da0dd44a98acf84\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.zh_CN.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42da2d325a260a3d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/catalog/systemd.zh_TW.catalog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"104c7ecb0066f493\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/libsystemd-shared-239.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50d039d0106d8b00\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/network/99-default.link\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acd9a30f72b898b9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/portable/profile/default/service.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93d0e7ab2a6bb97a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/portable/profile/nonetwork/service.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e928deff132e6a00\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/portable/profile/strict/service.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8df13acc7b00486e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/portable/profile/trusted/service.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5da0110974483e2a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/portablectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b91c7e5ae32bcd94\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/purge-nobody-user\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64bbef2940bddb65\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/resolv.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30273167dbd00ef2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/kdump-dep-generator.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2ff6f1f3c734a3e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-cryptsetup-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f6a522824252c67\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-debug-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc1d0a87786c87e3\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-fstab-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b45a8efa3d4b2147\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-getty-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4387219232cafcf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-gpt-auto-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1c4848b1ded0187\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-hibernate-resume-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8dd7bc37bdc4b433\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-rc-local-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30f9d8905a6605fd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-system-update-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d259d0f138bf5a9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-sysv-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cd43e5a91ddf83f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-generators/systemd-veritysetup-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b39c44e53a36983f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-preset/85-display-manager.preset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"500102e98aa13706\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-preset/90-default.preset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c89785845e93512a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-preset/90-systemd.preset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffe597fbd9b8c8cd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system-preset/99-default-disable.preset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3188871f88bf0af\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/basic.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4a3c64212e775a4\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/bluetooth.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"330009ff9209cfd2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/console-getty.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad9c92ad57b21f4b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/container-getty@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fcf5b0e1c9693cf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/cryptsetup-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ffff94af64581cc\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/cryptsetup.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f74c623e1f8dd52\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dbus.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"141b495451aeb116\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dbus.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c845c6953aed674\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/debug-shell.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a87b05c8b4e7408e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dev-hugepages.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f0cbfe82102bac1\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dev-mqueue.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24f6052d8886f3eb\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dnf-makecache.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5faa2e01eaa58270\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/dnf-makecache.timer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"142cdac22ad2190\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/emergency.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd5c411e97bc872f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/emergency.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b522d059f52a8c8f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/exit.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25089e69c64df3bd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/final.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6211a1065e6501c2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/fstrim.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8aef682cd0e0d5e4\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/fstrim.timer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce5e1f4a7aa7aebf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/getty-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5d9dd8016be4b59\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/getty.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9c50df5e8d93c93\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/getty@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f35b6ba4aebf173\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/graphical.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58feb7d944526933\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/halt-local.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3c467d5d4f98b6c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/halt.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"540c52530a0728f1\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/hibernate.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3296d404233929e7\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/hybrid-sleep.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f47a5a00f52adc8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-cleanup.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf530692dba6acd8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-fs.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ab0bb361eb10742\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-parse-etc.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e45700d614dc2407\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-root-device.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbb9cce31511b20f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-root-fs.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"946f641886362a0c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-switch-root.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acd08777cdb1928\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-switch-root.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25a168a7f561633b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd-udevadm-cleanup-db.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35c006520ac0fcf7\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/initrd.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8568498fab9abe68\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/kdump.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dbd971b99256a34\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/kexec.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dcbc474ce552bb\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/kmod-static-nodes.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec128c5ca9e6fecd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/ldconfig.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1d84f76c873ad20\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/local-fs-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee23ef3f99533495\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/local-fs.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b3015fe27711bc0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/multi-user.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec66608c9a8afb1b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/network-online.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86d85c73cc90f4e9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/network-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adfc97da4f1f8c0f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/network.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7289ca64578e024d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/nis-domainname.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83805745c1ac42bf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/nss-lookup.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"caacd3b5137177c1\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/nss-user-lookup.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81f1fef19791a6c0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/paths.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2208ca39c91223f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/poweroff.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3cabf84b56756cd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/printer.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25b5393d2c50f1db\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/proc-sys-fs-binfmt_misc.automount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23a1207706bc763e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/proc-sys-fs-binfmt_misc.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3af9ae3a478af982\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/quotaon.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfb0ce727f52c289\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/rc-local.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1dec095d5cf45a8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/rdisc.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81b96c12ce886e2e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/reboot.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d62752ae826d918\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/remote-cryptsetup.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb284b2edf8aac7d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/remote-fs-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e88fc2af19b92477\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/remote-fs.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23d26cee2e8f8246\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/rescue.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c45bc734c522e1b5\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/rescue.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"551b7cf5cc34d821\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/rpcbind.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12162f8075a1cd6d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/serial-getty@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f70e83f0b3b24d4\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/shutdown.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ea38f1a00f251f0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sigpwr.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3881d0fca9f46bc3\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sleep.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d5fadeb72a8272c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/slices.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"705c6b45b5734fc9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/smartcard.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c8fa7ea2c09ab9b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sockets.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c4ef720dddebd1\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sound.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b053b3ce99c6cc7e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/suspend-then-hibernate.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a52a9e0501ef6459\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/suspend.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37acc2608b92f62c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/swap.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b145ae3e9ef1cc8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sys-fs-fuse-connections.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cee5dd845d80d88\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sys-kernel-config.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35ade8afcdedbde6\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sys-kernel-debug.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0e5c6cc02c7968d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/sysinit.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"383e7e5d764af8ce\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/syslog.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f66f6b40c6ec1e6\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/system-update-cleanup.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4983501441b9acdc\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/system-update-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82cdd5ba4117e60c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/system-update.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"394088db342aeeea\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-ask-password-console.path\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53f1a55520a5f11d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-ask-password-console.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2840a3b7dd121829\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-ask-password-wall.path\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d55a0388cb6b803d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-ask-password-wall.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"236ffa04e96f1f07\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-backlight@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d22ce49c831c9531\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-binfmt.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9047e92ce03de14\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-coredump.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ab036c1ea2b56d0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-coredump@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24ec31ba00329b09\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-exit.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b36ebb49cb8f9662\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-firstboot.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe17b4da4350f01\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-fsck-root.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e59bbc54e5b3d07\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-fsck@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca1f59840a6c1352\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-halt.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b89dc160ec28283\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-hibernate-resume@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a8fd46c71a1b111\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-hibernate.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1ff7365dbbacfb0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-hostnamed.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21bfa93de78b060\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-hwdb-update.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fc6c9eda36e581f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-hybrid-sleep.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be12a3120657131\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-initctl.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7cd06ca62f52fccb\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-initctl.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d897167fb3c1327\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journal-catalog-update.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ae2bcdcccf64bb8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journal-flush.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c8861c789418719\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journald-audit.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41e0c4556c95429d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journald-dev-log.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb0aa823a0f0a646\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journald.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b6e0fdd9827c50f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-journald.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60d945b2e57fa872\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-kexec.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4e02ba7cd6a1acb\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-localed.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e14976c259a92a9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-logind.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5489ccc6c6e41e3\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-machine-id-commit.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f24239738065aae\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-modules-load.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1e6d62526a3a62c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-portabled.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8690ab61c58a7ff7\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-poweroff.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3041dbeb0386f444\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-quotacheck.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96b7fca0a19d1c1f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-random-seed.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"438043a921c7a27a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-reboot.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93f7c454db8e6a6\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-remount-fs.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f99d08d1f6b8580c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-resolved.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17045f74fb352b5a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-rfkill.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dd45608d2cdaea8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-rfkill.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d892cc9648144c3d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-suspend-then-hibernate.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac06ea53e60ccec0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-suspend.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0fa9b77275c14de\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-sysctl.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79cc51b7d40a56bf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-sysusers.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"232b4ee7abfc47c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-timedated.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a524f69634d710e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-clean.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56280e7cfb5309e2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-clean.timer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afb49d8c5dd23bd8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-setup-dev.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50d5feac6221ff14\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-tmpfiles-setup.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1a1b82adc94c555\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udev-settle.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afcca2105c8d342\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udev-trigger.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa871ec75dbd04c3\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udev-trigger.service.d/systemd-udev-trigger-no-reload.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"161e0484345a9da5\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udevd-control.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a990e409eb65356\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udevd-kernel.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd26ea9d12234c84\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-udevd.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"705478744c19f0e8\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-update-done.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a64a7873304a4e63\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-update-utmp-runlevel.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d442ca1fd4549640\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-update-utmp.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"972089ad880be52\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-user-sessions.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7d0c4bec235d5dd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-vconsole-setup.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa758fe0c0e5bbeb\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/systemd-volatile-root.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a71c2ced6fa1aaf\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/time-sync.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bdcf7acd06d8935\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/timers.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"542fbadee5b22d46\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/tmp.mount\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9222857f90b8a4d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/umount.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc8380132fc59905\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/user-.slice.d/10-defaults.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3849dec5c5fb636\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/user-runtime-dir@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8c99674dddb191e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/user.slice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10dd1e0734d57c2c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/system/user@.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a637030b7c0aae9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64125b70703c141b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-ac-power\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbf5dcaefcb17918\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-backlight\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"984a069286db1ff\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-binfmt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"caa401ca9f18f8ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-cgroups-agent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f7f44ba9b8a6a2a\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-coredump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50e7dc25eded5d97\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-cryptsetup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd3bc139a540ba87\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-dissect\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95a70c9bfdc2bbd5\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-export\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"357f057cd6fdef57\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-fsck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"123fb94517a52620\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-growfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5521d956ba64de45\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-hibernate-resume\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9c060c487012ff0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-hostnamed\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4b5a908abc5f76d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-initctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd09797e39bb3ca4\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-journald\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8da895febb582e04\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-localed\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae1699c78449d347\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-logind\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1733dec103ed4773\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-makefs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b6b8674bd5f7dad\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-modules-load\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"156c1321a8db3bd9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-portabled\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dfbe3e1a1295352\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-quotacheck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14ce9a4a948aa180\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-random-seed\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd6f0bd71c9ac87d\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-remount-fs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e25878045f1e0aa3\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-reply-password\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2319903fe01603f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-resolved\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4def32e287ba66b2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-rfkill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"576d591f6c2df641\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-shutdown\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c5b000f86ee8f61\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-sleep\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea8c3d4506295d27\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-socket-proxyd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e6ae44289bff034\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-sulogin-shell\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"186567b9f25c0ebd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-sysctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b91acb4415a3f1a2\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-timedated\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61ebed417606e7cd\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-udevd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4527464f7216481\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-update-done\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"842f9c0bce1e08b\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-update-utmp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33c8c4f13aacc91c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-user-runtime-dir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da4878f3b6423ee\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-user-sessions\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"480835598251ef55\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-vconsole-setup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69540c94370cb9a9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-veritysetup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b10618584484e10f\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/systemd-volatile-root\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e6a0d04d9fef53c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7131321350799dc7\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user-preset/90-systemd.preset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c28e397849d6396\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/basic.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fc6d870273b9947\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/bluetooth.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb121c739d16e81c\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/dbus.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6543b1ffc425c313\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/dbus.socket\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3173b8fb296e8448\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/default.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8598001fb7d23cb9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/exit.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62fd8c841707c433\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/graphical-session-pre.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9482a6aa2ff761ac\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/graphical-session.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab6cc25f0f2d58f4\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/paths.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca1c826e37a0fa57\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/printer.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ce6a290a00ec971\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/shutdown.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c5d2bcdb3262b93\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/smartcard.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f28919e1f4e2cf9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/sockets.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81da3085491c55c1\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/sound.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec7d64993fde7d9\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/systemd-exit.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"205992332e51e2b5\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-clean.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcd610b831e0959e\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-clean.timer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a4bd5ad234f5656\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/systemd-tmpfiles-setup.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5442f5ebeb9a8ad0\",\n   \"location\": {\n    \"path\": \"/usr/lib/systemd/user/timers.target\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e930147a00a202ae\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysusers.d/basic.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fc433626bf70c7a\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysusers.d/dbus.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c17a1bcecf983076\",\n   \"location\": {\n    \"path\": \"/usr/lib/sysusers.d/systemd.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10297504841825cf\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/cryptsetup.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bec24a82249a0652\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/dbus.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82f6673cc7005107\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/dnf.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e69bcab17d7d16fd\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/etc.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b522abc8964fa3\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/home.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d975fa28b8f7ff08\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/journal-nocow.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad414c8f6b0207ea\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/legacy.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ecf2728671a17f0\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/libselinux.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cafe2b17af58c882\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/pam.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97c7e00f4db20d9d\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/portables.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"838f70f52a94de21\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/rpm.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bbaf3ee5efbf9a\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/systemd-nologin.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a25710e16161cb5c\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/systemd.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abc35a5a1799a6f8\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/tmp.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41a906d3c8ba1cda\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/var.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed3109dd4562063d\",\n   \"location\": {\n    \"path\": \"/usr/lib/tmpfiles.d/x11.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b77901298accfba3\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/ata_id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5a5794e7eadbc61\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/cdrom_id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ff6f6fa723ac5ae\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/collect\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd36bd9329776419\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/fido_id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef7fc117608ff9e9\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/kdump-udev-throttler\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c5f0edd7df34b03\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/mtd_probe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cc03118eec406f8\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/10-dm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5598e8b5a08c3922\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/13-dm-disk.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64dde3ce1557855\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/40-elevator.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c8ca71a6af04cb2\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/40-redhat.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbe3c5808daccbf5\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/50-udev-default.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5d550502bde72fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-alias-kmsg.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f6758bc7f139f83\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-block.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86c10e2118005510\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-cdrom_id.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"523236c0012cb18b\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-drm.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"719788eb7b5b46ff\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-evdev.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cf6a4be37644c23\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-fido-id.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"569382b005845133\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-input-id.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36ef46f74c3a3246\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-persistent-alsa.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e8451f13834008d\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-persistent-input.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17378428d6c11d6e\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-persistent-storage-tape.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85dbdd542f0156a5\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-persistent-storage.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d53ed011d31ed7a7\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-persistent-v4l.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d81487ef489f29\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-raw.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7db05b61d6510250\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-sensor.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1eff4a0784ed5781\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/60-serial.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ede46380ca8f4e7\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/64-btrfs.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69562eac663ac63c\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/70-joystick.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65d8007a1f664db2\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/70-mouse.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48b5efdf54bc7094\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/70-power-switch.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93c3be73e75c35ec\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/70-touchpad.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f58e180fdece73\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/70-uaccess.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18a10c8cd7368c3e\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/71-seat.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8cdb07ea7f841975\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/73-idrac.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd5587017e716a5e\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/73-seat-late.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e951d658c61cbc0\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/75-net-description.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1639e3845539a4fb\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/75-probe_mtd.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"967c4c84a38e6e37\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/78-sound-card.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1527351b06b5d28\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/80-drivers.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4855f97a96fbb604\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/80-net-setup-link.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca6f27dd0d3e6a36\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/90-vconsole.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ac1493f02e98f42\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/95-dm-notify.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b39a5dc6c4aa75e6\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/98-kexec.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf31bbfe3fa5da1a\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/rules.d/99-systemd.rules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2eefd460ea4d3bc4\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/scsi_id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2223c10971051f71\",\n   \"location\": {\n    \"path\": \"/usr/lib/udev/v4l_id\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bd530208fece114\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libcrypt.so.1.1.0.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49ab64ebcb77e466\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libcrypto.so.1.1.1c.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbae41d54fe0907b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libgcrypt.so.20.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1a67cbced0bac2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libgnutls.so.30.24.0.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcae7a6b1c6e3a27\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libhogweed.so.4.5.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcf41ff766632d6e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libnettle.so.6.5.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d460bde8cd0f2bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/.libssl.so.1.1.1c.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6541dff72108d53\",\n   \"location\": {\n    \"path\": \"/usr/lib64/audit/sotruss-lib.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"897ff0e34c7cc33d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/bind9-export/libdns-export.so.1107.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef916f1c1408e8d2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/bind9-export/libirs-export.so.161.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b19b4502ae527e58\",\n   \"location\": {\n    \"path\": \"/usr/lib64/bind9-export/libisc-export.so.1104.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cee9ee141e2670dc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/bind9-export/libisccfg-export.so.163.0.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a33ebb1c43f2d78\",\n   \"location\": {\n    \"path\": \"/usr/lib64/engines-1.1/afalg.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8462add368bfdc59\",\n   \"location\": {\n    \"path\": \"/usr/lib64/engines-1.1/capi.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45d3d597dd09e9c5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/engines-1.1/padlock.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5205178b1adb2d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/eppic_makedumpfile.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c8c0103b6b3ea53\",\n   \"location\": {\n    \"path\": \"/usr/lib64/fipscheck/libgmp.so.10.3.2.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c12da1fec2e07733\",\n   \"location\": {\n    \"path\": \"/usr/lib64/fipscheck/libkcapi.so.1.1.1.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4649b332b385228a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/filefuncs.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f68b72cea13795e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/fnmatch.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da12f2f3b907e639\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/fork.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d039f1c8e0e6db7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/inplace.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77004babc9f384ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/intdiv.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f37392996307385\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/ordchr.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"358af89423ae0055\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/readdir.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eea231cffe51adc1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/readfile.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3014ee6529b05c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/revoutput.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d4d59a88cd7235b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/revtwoway.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0b5c2899da1faa4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/rwarray.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d419e2556be1e687\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gawk/time.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87f08873bf5422d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ANSI_X3.110.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85d3d648cf981401\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ARMSCII-8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f11e0294e606c2cb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ASMO_449.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4291ec96c539ee89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/BIG5.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64f975a27bbebc1d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/BIG5HKSCS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da5a93308e8c90d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/BRF.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27f6b44d4969554f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP10007.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d8da8e45a93edeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1125.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a360999857d795f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1250.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fdb34a7ea17b78d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1251.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d38dcce6eb369034\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1252.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"958fb24437ce972b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1253.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cf1796276b46685\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1254.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b5cae1058a49f55\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1255.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97e26447364e623c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1256.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7691b71c42c9cbcf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1257.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c11bcd291c60c82d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP1258.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b688dcc2ada6335b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP737.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27545270bae60f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP770.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c722161968d996d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP771.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cceb604880825aa6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP772.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"232fec4ee003ef4b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP773.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eeaa6561cfbb46f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP774.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43567cc718a2792\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP775.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4acb54bd382da65f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CP932.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c090836e57abe86f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CSN_369103.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed4f897377589fc3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/CWI.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6c65a1139509bcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/DEC-MCS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75ae91d6cb5d9f99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-AT-DE-A.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"447c905108438014\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-AT-DE.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17e46612388f0d24\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-CA-FR.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bab3895a2730d965\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-DK-NO-A.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb6e2491463aa9dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-DK-NO.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10725d4281f7deba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-ES-A.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20a74790ae4376c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-ES-S.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51d5aa3cf8bb6741\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-ES.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f77c881395cd0de5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-FI-SE-A.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30d5f5a3cb7176f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-FI-SE.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da905e716ac2f512\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-FR.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ff71652d89578e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-IS-FRISS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db5dd2de0ffde7e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-IT.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31f16e4cbf326671\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-PT.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb81e11d0c9ea08\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-UK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c69cc087e69d3cb4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EBCDIC-US.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"745ec755fd4f9264\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ECMA-CYRILLIC.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c02251065f06aa0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-CN.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c83b63080ac365e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-JISX0213.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dda557fe318c4b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-JP-MS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ddd8cc58d8c2c8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-JP.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdf8c623bc2ec08a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-KR.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de7c369bb9da5ff6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/EUC-TW.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"405889b83c1e43e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GB18030.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"134c7d28f877ab01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GBBIG5.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9174b70a92cb5e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GBGBK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41866c6af263ee21\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GBK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b350351035e09f9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GEORGIAN-ACADEMY.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84621be7d4b939e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GEORGIAN-PS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26f5ccbfd631d10b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GOST_19768-74.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c383d53bb8049be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GREEK-CCITT.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"183544802a0579e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GREEK7-OLD.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24b268ebdc303bc9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/GREEK7.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dbba31a1281b519\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/HP-GREEK8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1dc79cbe33d7021d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/HP-ROMAN8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a3007b4ee7788a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/HP-ROMAN9.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7bef8e5fc3d47e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/HP-THAI8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4520a51de190f1b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/HP-TURKISH8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c530439e2bc8df0b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM037.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4b1a2f573958656\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM038.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbc1bc3a3b84be3a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1004.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8874112d72e632b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1008.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b60961a74985855\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1008_420.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0fa36db71a5b734\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1025.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"599dfcd946f109e5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1026.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4afe9fcdba599ead\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1046.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e625f68ebd57a2a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1047.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7cfeb83376a06e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1097.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f724bc2eb1946a6e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1112.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5366e0044c0d3f70\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1122.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34544561867193e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1123.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf6ad468e28c46c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1124.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d61efc11cf3a4a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1129.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72fb64bf66d8ce67\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1130.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81a22fa905de78af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1132.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca3f4d25cd85ff3f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1133.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35c9447aa74d2eb9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1137.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12c3b73b7490fbec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1140.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cc71d528d3c3159\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1141.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48c8a9a7c5c9fe94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1142.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d244b223e374041c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1143.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d0d962a94e28ff4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1144.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a5c4f715ea0fa43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1145.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c9d9a873b10900\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1146.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa7ec191d5ee8fa3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1147.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"101f806ef1af21c6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1148.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3544aa7f9c129564\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1149.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcc70e03a4ee6961\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1153.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fe42ee597f52bcf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1154.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fa01ce72c96633e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1155.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bbe8fe97dae9282\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1156.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e2b57b3acfef842\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1157.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e917d08985018350\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1158.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74ba3c46c060324\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1160.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48222b2f34a0a09e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1161.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67b9e9e59ee857b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1162.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6c2cfaade87b175\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1163.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fb083f2ee14b257\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1164.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e97da03b5e0bb030\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1166.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9a2f0dc1d695d8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1167.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f3475f6cfdc036c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM12712.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2787cab186fc8cdb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1364.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc5b93249044f62a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1371.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67752b88f05ecdf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1388.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5924dab68420b379\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1390.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"307e48b07af5c9fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM1399.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7f74566de9794a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM16804.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"312f7cffb9eccc28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM256.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc8cdba89b4deda7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM273.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fdb9b5866b8e3391\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM274.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82c5841b1924ef9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM275.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2306a06e78517f68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM277.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc0417cecfb5656e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM278.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5691b1d753e31ff4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM280.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ba6ca32343a041a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM281.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28eafbdddd4f0b03\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM284.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a7266fda78b6b85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM285.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0773ff81936eee4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM290.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"106802f609ae3af3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM297.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31e54458bbf773a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM420.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fb9088bcda13d65\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM423.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95f9f614b942dca4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM424.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b19954c86bb4bd5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM437.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8cd68066b9cfb94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM4517.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28c251ad7de9040a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM4899.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ad8ec571db17e10\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM4909.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"252288b429c7cd37\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM4971.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c56716364ff796\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM500.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3833888b4548c35d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM5347.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"595907ad60fa8aa5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM803.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ec38daa81359e7a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM850.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5246c7b913478ffa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM851.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3e71264cc698281\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM852.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5863eb7fe9ec7c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM855.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbdae007d29e36f1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM856.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"daee6847bde55c78\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM857.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d72865d2d98e25f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM858.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97b33338af54f6a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM860.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57fa6ac7101d5125\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM861.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9b52bf12b31fd9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM862.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6384f4869257567\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM863.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aa9f4fd98ad499e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM864.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4966c0ade5a44f7a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM865.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2180631c6970dbb1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM866.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e060fd64e3589b61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM866NAV.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2c7437ad7c3ccd8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM868.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf6bf063531119f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM869.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"759be3a11e4133bd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM870.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3a8ada2c88545ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM871.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a335a37a737926f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM874.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19286e5e6b914d9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM875.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6670996a29c1ca9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM880.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"883720543ee70457\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM891.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c92abe96b5f11ac0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM901.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac3aa18c62159153\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM902.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e15f3742025157d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM903.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea4d0931a5f417ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM9030.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3856ee87f0ab47a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM904.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d85cc70df364662c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM905.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2739054a7b0eda34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM9066.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e7e23450a11e6f1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM918.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1b179585e384110\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM921.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e54a44dc44582eb5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM922.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70b0760fe25760b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM930.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95c1180d025fcb2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM932.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88bccb99896c77d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM933.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa36174fb3f96fd1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM935.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc48eb1aa6941772\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM937.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9562f89c10765b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM939.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5d66cbb67a40ab4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM943.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2760ae2159ab2a8b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IBM9448.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b09f735915ba011\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/IEC_P27-1.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92b8046dc3b3c5eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/INIS-8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5aec7a9f943eee04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/INIS-CYRILLIC.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8511bf213310e9de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/INIS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"524bd013189e2753\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISIRI-3342.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89c683ae267aa860\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-2022-CN-EXT.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d774e4f8caed1df4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-2022-CN.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8ac5f4811b9e9fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-2022-JP-3.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fb64228e7ffdead\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-2022-JP.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fd2ceedbfd022e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-2022-KR.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff06ab7394fdb65d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-IR-197.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dedcb1eae344687\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO-IR-209.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96eb51c59e9bd45a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO646.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d8a4447a6425bf9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-1.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b02b39de70af2737\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-10.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e46f8786f2f8486\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-11.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5042c39b6a2ee9dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-13.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e6731738bcf1d6f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-14.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0d7a38ea98cd65b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-15.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3761c41f5bb226da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-16.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2765e35eb26b89e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-2.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a9049e7aebc217f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-3.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b201ac8c1142dd3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-4.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcccb75eb95c7a25\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-5.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7425fdc018fe9c95\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-6.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"998b41652fd03e66\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-7.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8cfc4036d917f5ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc7f5c582c53779b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-9.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb613340fa38c7bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO8859-9E.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0b94fd6cef99787\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_10367-BOX.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3271b39af8959c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_11548-1.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34be7c60167ef1ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_2033.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4dd3a0f9230d851\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_5427-EXT.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f510c21bf556959d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_5427.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"286b792561f6daa1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_5428.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a66f88b7e103fe83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_6937-2.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd90196c167a2c0a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/ISO_6937.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e723de1317174fb2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/JOHAB.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e82f6b54a397885\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/KOI-8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f8b65da70837cc4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/KOI8-R.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dacae5684c8ae1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/KOI8-RU.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40163695f2723961\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/KOI8-T.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"735c8a701e4f18b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/KOI8-U.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"741b437d165022ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/LATIN-GREEK-1.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9abe015b27608f36\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/LATIN-GREEK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8befe449a0b49dae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MAC-CENTRALEUROPE.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b6106f4f5958a09\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MAC-IS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5ab120fe3f4504c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MAC-SAMI.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b15ad2457658800\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MAC-UK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2caaf76e5adf042\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MACINTOSH.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"669d18d7814a9bdf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/MIK.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e3ac7b2b055fa06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/NATS-DANO.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d63b17248541cb85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/NATS-SEFI.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e82945a1ff11573\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/PT154.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb89919cc6d29b31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/RK1048.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a1ba70c49a7c094\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/SAMI-WS2.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50f3f49924eee221\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/SHIFT_JISX0213.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"832350b594838c2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/SJIS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4365385dff7f816\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/T.61.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2168ee31924543fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/TCVN5712-1.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c41f28b01d10c99a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/TIS-620.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85a7daefa4d220c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/TSCII.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64f1ad3ebf7a640d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/UHC.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a46c879c810eb941\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/UNICODE.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cfa71a34120f1fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/UTF-16.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edce2bc8b3952151\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/UTF-32.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b11b5a319232ab5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/UTF-7.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64bdc0eabada4b56\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/VISCII.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da30fdfb59ea64a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/gconv-modules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"282935167e903824\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/gconv-modules.cache\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abdefa001c02c187\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libCNS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72d894e5e45e92e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libGB.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1622b8becba935fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libISOIR165.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1412f45b85e227b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libJIS.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"582987899fb83377\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libJISX0213.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ade8d730e36da664\",\n   \"location\": {\n    \"path\": \"/usr/lib64/gconv/libKSC.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b88ef4d995e9c040\",\n   \"location\": {\n    \"path\": \"/usr/lib64/girepository-1.0/Modulemd-1.0.typelib\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9e0b7877a0f3eaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/hmaccalc/sha1hmac.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"696cdf24b2e30e9f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/hmaccalc/sha224hmac.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6155dd2817f00883\",\n   \"location\": {\n    \"path\": \"/usr/lib64/hmaccalc/sha256hmac.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"261b4d75199a1efe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/hmaccalc/sha384hmac.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb4fbc9120dff08\",\n   \"location\": {\n    \"path\": \"/usr/lib64/hmaccalc/sha512hmac.hmac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"650a5d0467f0b4c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/krb5/plugins/preauth/spake.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bad9ef16dd1eab9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/krb5/plugins/tls/k5tls.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d93f3d3e6d9d734f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/ld-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fe8787336fb0d04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libBrokenLocale-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90fcaf0f23ddad0e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libSegFault.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5f6de8acdd29e7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libacl.so.1.1.2253\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aaad97f071936963\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libanl-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a0ac7336f1d93f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libarchive.so.13.3.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d71a1cf54e15321b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libasm-0.178.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"162f8061a0b419db\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libassuan.so.0.8.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31c5623e9cb7d29\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libattr.so.1.1.2448\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db394ab6b5b821ae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libaudit.so.1.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b51c8b8323d3b5e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libauparse.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1c27fdaf1faa46d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libbfd-2.30-73.el8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa3231d8bd199209\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libblkid.so.1.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fdddc945ac2a9757\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libbz2.so.1.0.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"585f875ac83cb3d2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libc-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd0550255c87c789\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcap-ng.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9107f442db283148\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcap.so.2.26\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d54df85e5cac225\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcom_err.so.2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"892e03575a711c90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcomps.so.0.1.11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eebdb80be4bd39f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcrack.so.2.9.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e30a798cd585bb89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcrypt.so.1.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2a45fe46bcf0960\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcrypto.so.1.1.1c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e112056c6858f58\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcryptsetup.so.12.5.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a036100ae7858322\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libcurl.so.4.5.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86417064d41c05b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdb-5.3.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd5312f72be3832b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdbus-1.so.3.19.7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21dcb523bf2a9290\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdevmapper.so.1.02\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e56cb2afaf1e2ec9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdhcpctl.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73e9c1cfa58565e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdl-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a53269dae971c6f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdnf.so.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12e424714e43771a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdnf/plugins/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"653593d2471c4f50\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libdw-0.178.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce6f4ff120aaae1a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libelf-0.178.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"646385a0136da5ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libexpat.so.1.6.7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4320cf92554216c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libfdisk.so.1.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93cdbc29a7b221cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libffi.so.6.0.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d3d12fb6d00aa44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libform.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e38a390e1fef9fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libformw.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"845de80a5761c0c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgcc_s-8-20191121.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2ef99f1583908e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgcrypt.so.20.2.3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b458e8d9ed7cb58\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgdbm.so.6.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20382eab22acc5a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgdbm_compat.so.4.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58b7c486038b78d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgio-2.0.so.0.5600.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e8d0c37233c9125\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libglib-2.0.so.0.5600.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"481e10e7fcb2beb9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgmodule-2.0.so.0.5600.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bd919924cf942e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgmp.so.10.3.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"595f3d8f7ed4b98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgnutls.so.30.24.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe52c169b75ed5ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgobject-2.0.so.0.5600.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b8002d83424d970\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgpg-error.so.0.24.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"264e7c5eed7ee1b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgpgme.so.11.19.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2eba6d1b47d581e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgssapi_krb5.so.2.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46b6025241a420ed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgssrpc.so.4.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"668e3f36dbdc4777\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libgthread-2.0.so.0.5600.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c84e1e7809da3b24\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libhistory.so.7.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b50b6a784320089\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libhogweed.so.4.5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d34ca3a9bbc634b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libidn2.so.0.3.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ea80fe891f28982\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libimaevm.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4acdf6315ea4ebc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libip4tc.so.0.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a18ab3e3b80de20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libip4tc.so.2.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df125b8b9958acc5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libip6tc.so.0.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4167788fa655ca1e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libip6tc.so.2.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d12641715c60c0e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libiptc.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5f3787b05cd70b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libjson-c.so.4.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25c3af63d81495a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libk5crypto.so.3.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24f05ec51957bb79\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkcapi.so.1.1.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ccdbf79acfbfb54\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkdb5.so.9.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e051c2af04977175\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkeyutils.so.1.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e87be9845f0a059\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkmod.so.2.3.3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4565cd22306534\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkrad.so.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32346d49e3c0e8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkrb5.so.3.3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23685b7fe28b75e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libkrb5support.so.0.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea9153547a007443\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libksba.so.8.11.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c86c7778e792f81\",\n   \"location\": {\n    \"path\": \"/usr/lib64/liblber-2.4.so.2.10.9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41524b7cf9ed8b9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libldap-2.4.so.2.10.9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b590d9b45831070\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libldap_r-2.4.so.2.10.9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d70cb9e7cb48f889\",\n   \"location\": {\n    \"path\": \"/usr/lib64/liblua-5.3.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb4b4bd8ce278de1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/liblz4.so.1.8.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb4dc8137faec4ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/liblzma.so.5.2.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"407a2da2f4023283\",\n   \"location\": {\n    \"path\": \"/usr/lib64/liblzo2.so.2.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85178b88c9f96683\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libm-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ba455e67e863df0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmagic.so.1.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6f6ab7f2543acb1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmemusage.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"237caef3c9c08b85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmenu.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fbeeb72b91dbeeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmenuw.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6354268dcd66576b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmetalink.so.3.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fd4176aaa221f4e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmnl.so.0.2.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"baaeafae86a0cd96\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmodulemd.so.1.8.16\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4f17a5666c3ea0d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmount.so.1.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9a401aad1fa2fc0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmpfr.so.4.1.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e49d227a9553cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libmvec-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"748226b9ac3e0e40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libncurses.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7d33b2c3323aeb3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libncursesw.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9e77ebe82d89859\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnettle.so.6.5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6b0e76f3ff05d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnghttp2.so.14.17.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56b452af91ca5eb6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnpth.so.0.1.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a9c3cb793a489b3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnsl.so.2.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7aa5ea0ccf4dd9dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_compat-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71920654465dbdfb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_dns-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4cc9ccce0ad66a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_files-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"567a8aded2c28b88\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_myhostname.so.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86fd60e70c50f59c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_resolve.so.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4bbb157fdbffae7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libnss_systemd.so.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f62cfce7f0818513\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libomapi.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8a33d9ece162\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libopcodes-2.30-73.el8.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de40670d77c371a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libp11-kit.so.0.3.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4415d110f6fd129c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpam.so.0.84.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bb9a9738adbb1ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpam_misc.so.0.82.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f71f3e9af725d40b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpamc.so.0.82.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9ab44be1b926cef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpanel.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"671fb98c603236d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpanelw.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2aff333d0ac8b49\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcap.so.1.9.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21c2be92853b0017\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcprofile.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77405cb15919193f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcre.so.1.2.10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d47ffdea12f83ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcre2-8.so.0.7.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62a5b2523afe9fea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcre2-posix.so.2.0.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5a1e6e8883c4dad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpcreposix.so.0.0.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c486568818ca981\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpopt.so.0.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d03bfcb63445201\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libprocps.so.7.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b233b9c33b5521ad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpthread-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2db3019258a540b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpwquality.so.1.0.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfc0dee57d884072\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpython3.6m.so.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"977567c8954022d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libpython3.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb634f40b7009e84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libreadline.so.7.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7243b7cb66b4b6e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librepo.so.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"803c5823e0919f2e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libresolv-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec4720c1f0992106\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librpm.so.8.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6123d3b441054c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librpmbuild.so.8.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"594af0fcaba60b17\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librpmio.so.8.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ef68441e3b46e23\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librpmsign.so.8.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94e847f1e90e9181\",\n   \"location\": {\n    \"path\": \"/usr/lib64/librt-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6571e308cda3fdc6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsasl2.so.3.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5c29da054fa223c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libseccomp.so.2.4.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2be0e52506619d4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libselinux.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c448273e1b803642\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsemanage.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f213b3e277c470f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsepol.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac28621f1b03f663\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsigsegv.so.2.0.4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ae4ffd63ea823c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libslapi-2.4.so.2.10.9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"777915dc94dfd149\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsmartcols.so.1.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83d9c9e6676e622f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsnappy.so.1.1.7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f211e1664cd0d55\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsolv.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93da8a981724d939\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsolvext.so.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a42e858064aa3c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsqlite3.so.0.8.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb66daa7aab110c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libssl.so.1.1.1c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae1c4c3ebbf4b16b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libstdc++.so.6.0.25\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dcf05d284244072\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libsystemd.so.0.23.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2d8ae52fea52a3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libtasn1.so.6.5.5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d38a929bc43eab94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libthread_db-1.0.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f264c3ff1104d06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libtic.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30e2df54e8229b45\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libtinfo.so.6.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7579f73db2bc9395\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libtirpc.so.3.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0226e1bb4403b63\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libudev.so.1.6.11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"253bd28b1f40d73b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libunistring.so.2.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af6fc4d1e24c1b4f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libusb-1.0.so.0.1.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74dd767d2cc274c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libutempter.so.1.1.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcd82dd61a4a4948\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libutil-2.28.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ed32d44c419bf52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libuuid.so.1.3.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e338a2acd857ffbe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libverto.so.1.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bd56192f493ae2d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libxml2.so.2.9.7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0438d02d5a237a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libxtables.so.12.2.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"648440b995d2a4e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libyaml-0.so.2.0.5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"846ed031a32713c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libz.so.1.2.11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21291b78a1879c89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/libzstd.so.1.4.2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40c6c45329ba2be4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/pkcs11/p11-kit-trust.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bdca2bb070501a32\",\n   \"location\": {\n    \"path\": \"/usr/lib64/pm-utils/sleep.d/56dhclient\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a25571986c56ac9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__future__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e88bbfb5375e13de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__phello__.foo.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b957063bf15dead2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4707297f9e10c056\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c25e2cb9e6b3446\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__future__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"debbb37784bd8b40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a7e500eae4278e5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd504c31cef96f39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/__phello__.foo.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4895cbe5c80f4e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7353dc01e13a3571\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f61dea7fa3e70e40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_bootlocale.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2990d1c4c3d89c5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52a7f5ffae839b8b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d11c8acb3bde0108\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_collections_abc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"beaeb2e32405ac37\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd14e2b0d2cce745\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"244526da56a43299\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compat_pickle.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce76254b7c5079b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4eeeb3552a5c2117\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c8acd143db2452b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_compression.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"892ab3bceae5d7af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91bcb565dd9cf297\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6109c01d494ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_dummy_thread.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3608038e18eb5814\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20ed27b30156a275\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4171d867bd6a31e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_markupbase.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d22160dd4c8030e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f686b8901eaa17fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1aab6d8a9596420\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_osx_support.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a587e9de4888eaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e19d712716a2ed7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e3e81ecf96c0de3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pydecimal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ba012a9a3a5d9eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53d14ae80515bca8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0c2de2528bccec2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_pyio.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b0b7b2123ae5f19\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4eb741c5404f30f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71443272e4f3b390\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sitebuiltins.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b82dde09f92a442\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da314711f358f2b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac29338a8b1eae62\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_strptime.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abcffad9f29296c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dfd6187c662606a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a39414e4f2c9c50e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b06873f164c7f9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d66e74dc88e9e7f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45ee1eddc927614\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a3283f6f35daf40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c718c88187782fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e33c0b2fcb0eed46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_threading_local.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aaf1475c4cb9f42f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43ba99fe31774613\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c2516a6947aef89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/_weakrefset.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63703fc626b5aaca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3578e0dc5c27981\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d027a303d8bbcd8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/abc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"326b556de1e36130\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ca4af93830fd813\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"515393e6614a347e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/aifc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0736b6524358bdf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ef992b09eab6b9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3093fdd7e1d0fb1b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/antigravity.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67d90701f222e89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a426e8d1971bcbaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98d291fda584ed92\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/argparse.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abd774d7811b76aa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59da26f2f2e09a3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3449db3aac7ad3f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ast.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79e6a792388ebb16\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"294ff5de96c0797a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3053c1cc28351f68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asynchat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6005f6de9df8581\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8f86364106e2b2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f488b724ebd695c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/asyncore.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d311972e3ae54654\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b144083547d9172\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80f0e06efbd884d3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/base64.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea0e06fd0c0189bf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bb753f7e0398adc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41fff3561c69aec1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bdb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7f230cc974e147a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c373088e038f833a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33a1a66dfc1a62ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/binhex.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14abcd8872528cca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6ce6ec922c2be02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bc726cd930363bf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bisect.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45685b711cd26115\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb55f05722fa2bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b17cd6b03917e38a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/bz2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f31e4cd1369b164e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a066adb26e032f5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e780ec959d8bce8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cProfile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f44db3786d452d4f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d37161b98d60239\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"393aff5e0689b452\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/calendar.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9836cadde56e48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1d37c33ac1cb4b3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"209d917f0ed99352\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgi.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd340c8f12655816\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb122b43bdd506a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2b808777e948365\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cgitb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e41246e159ba095\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b77fbcb6bc2101ea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed28ba5fccdd1472\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/chunk.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72f65999b7e4f8d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a19a3cb60a3f5188\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84c372ec596bcdcb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/cmd.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78e05cd9c243f3b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10ca41a82c663c66\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e85c48d50dbcbb2c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/code.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5064637c8e97582f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7f230c4cdb7b14e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bce62ac5c28969af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codecs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"151bdc2f80a29c61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85d5c2feac6708f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"965ad62c1e80e761\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/codeop.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4ffee1bfc5c090c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1c042b7d83b21fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd800e599451abcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/colorsys.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b5eb75ab98a86fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"386fd57efa9f258\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3622556c061a7447\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/compileall.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83b2eea590149cbd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21c1a292d0c6f28c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40f3041c021bb327\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/configparser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3b666a45402c60f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7eec9be59dc4cd44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"221bbdd7c40e6996\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/contextlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20cd5172bb506859\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b80357c174efbc03\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92aaa6b4bc40177\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copy.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"259778b95c488d31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b17d868d015c1e40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c23314007b0584ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/copyreg.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b64900acda2d6a7c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"574f465f5a3c25a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b81f084f5a3f024a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/crypt.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49e3e3b418ce8989\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bf804ea81149d3a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2d55445802a02af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/csv.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a11e8380b6646e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3590133375ad5ecb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b78f660af001704a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/datetime.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44a696c03406365f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aba69be8d6e4737\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a050712f0097018c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/decimal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb8bb491de0f9b69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5a05c27ff98a65f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9dd492330df5f2c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/difflib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e7f2621e2264b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e1fda739b0686de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d5016c3cc9393d2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dis.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34559160a88f5c7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28d715cfc92c20a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bc24a915e6c7591\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/doctest.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd4f7add338539b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c264ef3e42e1a37\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e88d30d021bf1cac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/dummy_threading.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca8964f319e2ce85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da626e504da1297\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6bb3791267adaee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/enum.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a01976b4d3832ed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c17b90393bd7529c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac3db2a6000d61b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/filecmp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ea8ef5ac45dce57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92aecefc39a8168\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"daaf8536f4377967\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fileinput.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf1bdbe9fd7d486e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2c092c7bb8b5a02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"538d13aac890a674\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fnmatch.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26a298dcf9692f84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bc4d76f281c55f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1f8d1a8f1fd714\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/formatter.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"822c3b0fdfc03df2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54e1c893b07bf545\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d98734ab91c87e57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/fractions.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8386318ddda31abc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df3e6ef6c839003c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e086384182f85fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ftplib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f12b9e918d9cb14a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7e9542d2e74ecf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed179f629560fcf1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/functools.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7308f3afed21901\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"331211bffb8447f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2565bc70530f8f9e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/genericpath.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"677200baca2fda8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c9436c0a95a759\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f00ec99949659535\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getopt.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfbea4430677fd8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d0786a17c5bb48f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15d7e5d18d2c26be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/getpass.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16657f77e03a7253\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21c3c88c3bbd01a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6db021a0578546ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gettext.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87f36e87570dcffa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5725b06f78d813e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c624b549beb6ec69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/glob.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"757d235211342360\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9807dd58f7d45be3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d82c52b14c635cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/gzip.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26543ccc948a98c6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ce5c25ca9f2af87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5d3645d17be98ad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hashlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a37497baa148dcb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10f5d61183ff8c44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"daec2cbb2101e97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/heapq.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b143224be29c28d3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c800cfae6bac28b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"213b1bb9593de8de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/hmac.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"604371efc50e9d6c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb518618f3a5f9bd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"761de9f263761c1e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imaplib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4263f2e700e74293\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"faf7fdbb13d380d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1af9504926e690f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imghdr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9d6f95c4685bb9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59ab5ebf6965d0d3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"863e20706403ce81\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/imp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1abf1585636938\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"922d251eaea981c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d3c2ada3ecb3c31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/inspect.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e411d5e08be78472\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9c7e02d5b005dfd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2dbff82495f5c68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/io.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dc5dbf7b8c5fba7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"382fb2eff04d01fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d322f176c04f256\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ipaddress.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b0a7678161afb0a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd16b778913020a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1aa455fb85cf130\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/keyword.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12876211984fea39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c33485fc4ad6cbb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dc618a73aea8e89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/linecache.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b7517cefbbae0e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d129040ecb48db63\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bf8f08a0d3efdd9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/locale.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78e006d521d33952\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b6668d575fd71e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4d21be5a933aa72\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/lzma.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcfcd2608a389255\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe4aa0e192d7cf7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b94d38a5be56d279\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macpath.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ece51664ab52283c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41d86c211292dfa8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed6a9546d84b7f68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/macurl2path.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae918bca1651bd37\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e60b7a0983ff1ba8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"596eb4dd74fb3fac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailbox.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ed1cce0a57a9729\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce46ebe4e9063d7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c3765aa3b39dc4a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mailcap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"744d08e2a74ede50\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54d70c203109e11b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86b6b4a696d985\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/mimetypes.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8854b20d70d8f64f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cea2a9b49c6c0b48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f4c013a8bab390\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/modulefinder.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5618f7779a36b0c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a30918f7c3f88f21\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24ca9d8b43e66966\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/netrc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27683bf26e5c6d47\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88b9de192ac61511\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca2e26a88891a914\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nntplib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a176a2347490e4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29f9acd647b43fb9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e63128c71b254eca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ntpath.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"773569a0b5ae9f94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c00ee7c16290a283\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa5ddd37eb30f30d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/nturl2path.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50dcd3bdf9e4c407\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da9628f7edadef54\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"394aebd1ee603db8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/numbers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8df209b0e704359\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"374bb0c701fbf1e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c326e379159b997c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/opcode.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e19e2f3461def02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7bbee90022a180\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eda5d2580eb39d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/operator.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4574cceec761acd1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d04bc8392a6c2ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad9384c52e4eac12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/optparse.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e644c573d5cc052c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31132e7c22cc9030\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e87efd6d11acc0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/os.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c6fec2ecaa738c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a871997f9d8a664\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a06262d31c3715eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pathlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbeaabbebe08487f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c81478275ac0a950\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93ef83b816c8add0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pdb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5805add3c5abf99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee2342f66ee07f7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d7e3e1e88819946\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickle.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4e966c34c62d10a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1402cb88eb53fcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8aa7528e36a3af9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pickletools.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0e219a84893cdaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e016fb580ebeb094\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64c95a875e1baa17\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pipes.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e67f77b3431f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d762549b8d72f29\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7420e8d079a4bc43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pkgutil.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63d9e7d42d760558\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5351d224cf80fd4f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d82cfdb7d6afaedd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/platform.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b95f926e63a6e0fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64881ce46a3c8afc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2af6276db26b2af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/plistlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b949f548180304f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf926f8a93a31f36\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd2f7e6106a3e96d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/poplib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdb0a094c2db3ce6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45f8ba3f5523b415\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb9e52dd0451b2f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/posixpath.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e21092741542d89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55a0e2581677e979\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96b3384d37564ded\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pprint.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f43b79fa6bd8fe6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbbbb589fb486bfb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97862b142d595697\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/profile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92da80dde34dbdc9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"679b82ff2fcb6f23\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb33709ff8d6efaf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pstats.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c48f30c78f20a3d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b99b382f03764426\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"386f7dd28a977e9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pty.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b513e3c13c1646f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e91da8a04448b2f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea87ca52248ff4f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/py_compile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee501412823f9988\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ea3d9f6ba04a875\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7be55ee772fcedfe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pyclbr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddcf2a532f7080ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"563b226b8be3af7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd57818516bdc701\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/pydoc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e11b7fdfbe5bc279\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b190059d20b8c662\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d24b17e1746d1e81\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/queue.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f01fd4b7733a805f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fed9fc6470be440f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b18e6d9dd6c380e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/quopri.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7196c9775816306a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39c6498adfb3f50f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96d0b3ffc9edb7bd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/random.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc87e4bbb7329502\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4beb17ca7e982172\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"535482679b5986d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/re.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95d827aa8b8b66be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6b71c04e05a7b2e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ab9973b13052036\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/reprlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94e5133b7a63915d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3186253f9b3fadcb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b3274b14d79ea31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/rlcompleter.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16c315fc0abd4848\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e577a8f56d11ceeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52c94faf6c818c75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/runpy.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e317197332ea392\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be2a152a23ad99c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e7d0fd9355f0310\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sched.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29620057e3695a14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e580bfcccb861e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55518629a894127\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/secrets.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9792be2f813a4f8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bdca1430673895d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33ac473fc7957523\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/selectors.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2d52d65d008f541\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"277ebbfd5b89ca9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65789d477733b80b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shelve.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89866b64a2cf5364\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1de9733f4250d760\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"675804d0a5e6a6bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shlex.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61bba6053aa2fa5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac06f4e4658d4dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7640d1745d99ebe7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/shutil.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28335c99b71c8cef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eddb2a424804483d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ce69c4254795f64\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/signal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61c5222ee5c444eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4717e2e336d5292d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5220f59138528350\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/site.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83d9f81221b6b8eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1901de605d6703f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db0a99d247749a4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtpd.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc73a334ae78285\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebbcff8b2815505\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f82183379a494e8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/smtplib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32ab7dbcea38389\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b5bff878eda3433\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c51c5159ac4d2385\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sndhdr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cb14782e569fbdc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2164d62295d21754\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b557f642a894a55a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socket.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"862859e1027d9938\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c4b89ae08244ff7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"361822aeb3cb5525\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/socketserver.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87730d7df5a2986f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0918d797e7a9c6c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"199e58a06bf8452d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_compile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a8f8a074069b20e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e4cb5844b0536ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d21db85c2abb630c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_constants.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6393fb02c9644748\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b64e7cff92fdede\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8ec234e575fe9ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sre_parse.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b12847e553d46691\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b1abf35fa56342\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bc0e92688dbac46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/ssl.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb2c8d7d08d22a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75a84dc75a4f1a01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0b44025e6d5fe9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfe351cc407760b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a006725cbd48618\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5be0ec783a04104\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/statistics.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0b7d85369132e96\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4458da06b0b6c0d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ed5890fd64ed7e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/string.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2336fdca15efc2d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6543d77da57259e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d72c0349b01e1f7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/stringprep.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d923a50ccecbfa13\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fce854273b41cefb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ffefcd528eefc94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/struct.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0e106ad9cef0c64\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e0dafd4bb72d13b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9542cf3a5648a0d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/subprocess.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd779eff79684ef2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5a4bedde6ff7bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e7c5c29a8d4c9c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sunau.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c89db81e6b034f5b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7394c0b03f56311a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c47e7b5dc10436bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symbol.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f589f4e6361c28b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ef3bc1cc2bb968d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"107903e3b0ccec6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/symtable.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ba60e0c0ec9126\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c37cb61eb07f1a74\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14a471349a6c5f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/sysconfig.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dffcabbdaa0a0030\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41b9384426bc25d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20d2312bae5d1ef5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tabnanny.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"371a0cc2db670a28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94bda22bff545485\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b768915235e1812\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tarfile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e086fad9deb47cd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"113d77de1d9c73e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddc6ff64f222bcf4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/telnetlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4408ad6ab9808a8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0f380d63b9ce354\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ef8ac6ae602916e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tempfile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f3376de8a3414c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8905beafa20da2ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31353fe9d143dc4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/textwrap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8a97d7283411bd0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ed33b380ec8d14e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54bd82c0873f533\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/this.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fe31c4ba688c350\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dde1bccd4dc77102\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3896c1e9eea6e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/threading.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82d63d8410af93c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba7ee5f337ddc023\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2ea47385a6ca83b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/timeit.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28ddd57e2917c118\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6acaaceb54e75b84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcb4b9679947b06b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/token.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e93ed7e3a28ad197\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a21ac05fc6ff6a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eaff96e83c171e04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tokenize.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d8ff5c575808cba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e82193a279eed5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ed6a11ea2f68367\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/trace.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e21df6d1aa07496\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90e671aafe835e9e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c272b6794fbd858\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/traceback.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d09f30d5ccaa621\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22b48342423cdbbb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca01dd4eadb63968\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tracemalloc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9d4d5c87fffd687\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b2840d24fd461e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d51099cd2f0ab145\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/tty.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75d74be05816b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cec4015c6480ec99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4671709382246c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/types.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4959a152ff568280\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bda13f2eb9da217c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3ebc4dcb1673032\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/typing.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8b77b738f995888\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e297577a3e458298\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3262c96c9161badb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uu.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36b3ebda561a6439\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43efd7a65c9cd4f2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb6d9cce885694a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/uuid.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e0b55cddb165413\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"498c05ee1901ada6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ffb5aaf61a6c024\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/warnings.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a1a36b98886f1bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98fd654761e8a30f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f391595d924e5559\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/wave.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"baab62f29fad1fbd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f26d4d6535e6fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76669e224a505ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/weakref.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58ceda39bad3f289\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6119bea4515dbf25\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f32df71076d43c84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/webbrowser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"393bf4377bd551e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e3d87887e88f0cd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b62c6a8813c8e14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/xdrlib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7100531693abbc0a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbbdda044c7f54a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95ea9f9ee992714e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipapp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fa6586700455571\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55322985791a10af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab0ad49051519086\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/__pycache__/zipfile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9eba3fdf884a882c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_bootlocale.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2ce5f6ccd220a74\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_collections_abc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7eb24d404aa084a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_compat_pickle.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa0dfccd9aba0fca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_compression.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f5c7ac66a53b6f5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_dummy_thread.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e2e2cf35c3e935b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_markupbase.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67e9b604727768e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_osx_support.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbb308b8958ab481\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_pydecimal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4de43e77217738f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_pyio.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b3d2e03f6c38ac3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_sitebuiltins.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9fc24e7f107a5a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_strptime.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86f68a1f31da533\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_sysconfigdata_dm_linux_x86_64-linux-gnu.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1ebba23f7a090bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_sysconfigdata_m_linux_x86_64-linux-gnu.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4574ed67fa636f89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_threading_local.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb80119220b8bf85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/_weakrefset.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fda5de57781d42e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/abc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d6c9ba90dd7ed5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/aifc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e77fca81d59a0e86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/antigravity.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d81759ec3abe9bf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/argparse.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ab745c9f1778bf7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ast.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58442233b952f468\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asynchat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e492e016dc6c6306\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"feb3756e2c265216\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"def0c8c2d8b07d84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fe412f99a940592\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d34daa7951ea3bf7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c52bae2f79187504\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"221a7068cb236a39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b70194577c400e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e49a0ff075bf2d3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fb413ddf9e373fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_futures.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b89fd0f7ea5e2a57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d716cc378758d710\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48e43b4ac6d1fefc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_subprocess.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fd8e6f046818aac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75d3b2d9893e9e4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"185cd220c3fa4925\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/base_tasks.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c69db0f879ead39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c30cc05095c60dca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"840c66dc71a3da8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/compat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dddda75cfe206db3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee049837fd88d7e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53a3e7a173361080\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/constants.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"153da8a43d0f2034\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd0b4294f13008db\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d16dda5fdfd3309a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/coroutines.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2038bc7b27080a00\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c05949045f72e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0d1809cc322d8ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80be39d08dde7fc2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f584fc91f7ddf76\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a870babdcef45c9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/futures.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f5a4ee861ac77cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0401a74dab5137\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2081fc85a73dcaf1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/locks.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba40f67a69bae8a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58cc902b4624c637\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15f72f9d60da7883\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/log.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"718bba4ecb124295\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6630dfbff0d1287f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93204713a83cc339\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/proactor_events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65b5cdb1b449a4d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1719598f9dd5783\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"309364c46b25f6b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/protocols.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70e0b49f2e3a997\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c78f2cb58bcf11a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70072805f15018d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/queues.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b79506366bf8744\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90c2bf7dc9d2f373\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4727389afa865a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/selector_events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"567e3e5b623a32c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4b44e223506c44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a9477ca8eaf2791\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/sslproto.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec9f7a597c86a208\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a52c743787524051\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab1c7047ee8131e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/streams.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2edd62e14a67f140\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89dcf5f36d264f21\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea7bdbe50766a648\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/subprocess.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d36085586dee6f40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"432274d45c76de20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ee0ebb2a97156a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/tasks.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b6415f785701376\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1958a6eff8b72b6e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d28605fef1cd39c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/test_utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8c603176f05ee93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5c7f50ebf9a4c7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b236c5535baeaff2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/transports.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ada8b4d6ce3e67bd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c8f0cb6209beb22\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68aa8ae6d7b54e5b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/unix_events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8d11bc9a860299d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1360bfca359bb1d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bad3816243c821a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_events.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffc98173b82c6fd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6bfa3aabcddae5e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abc8a51d675e4d3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/__pycache__/windows_utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c5135435361c93a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/base_events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b95e818f69fbe11\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/base_futures.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4f21efef9cc0e20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/base_subprocess.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bec6d4b897535e68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/base_tasks.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e15ae5626deba361\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/compat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5afd5fcff944b23f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/constants.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53729b2bbbdab2e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/coroutines.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"781d43755e94009c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"241d57a012a23c28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/futures.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f4c8583523ef137\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/locks.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbd8943058133e60\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/log.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"311936d383b62041\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/proactor_events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d06524c5a6866f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/protocols.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5718889b801253e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/queues.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37b7a84b63a6f4ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/selector_events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a0d81ef74bbb31d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/sslproto.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7f600064d8e16b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/streams.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99ac448ea83c1cbf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/subprocess.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62b7f0874fdab1f2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/tasks.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bab0d45cea3ea3c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/test_utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d51007fd8ee6a905\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/transports.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b911bcffa00543d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/unix_events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6182969ac5ac8f00\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/windows_events.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f0c02697fc0c5a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncio/windows_utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21890b9051cee502\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/asyncore.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd4f5db625e1f527\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/base64.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de26f23dabadca56\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/bdb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7385907c013bef20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/binhex.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a09a919fe14da8b9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/bisect.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"860681a5e9f66f2e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/bz2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"592008737bb4a534\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/cProfile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4236293832bc016\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/calendar.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1edba1c5f6344acc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/cgi.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47a0ca6e2473f9f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/cgitb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a377bfc203ba2b1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/chunk.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cf5f88e29ee52fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/cmd.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3eddf83783bd307\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/code.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abcc2954d5096869\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/codecs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"867162abab34034d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/codeop.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddd9cfea78144555\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1851b1f877030500\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed8429b001787fc4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"493c4bcc8d1f873\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5badfcac4f426011\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fec834af6ff7b93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32afaaee5d0d0934\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/__pycache__/abc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6305a35ac9c6629\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/collections/abc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcf79f90a249a1cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/colorsys.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"991b274815620a43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/compileall.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89a169c42e43a05b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6b5bacf9f68b535\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b07de42b3239ded\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9288b6a0dbb6987\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41537665b408c9c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b3572034152d7a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8429a69ef07505e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45e1e25e684b7fc7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93e3ce967c36dd3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8baa1b9f740155a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"980587f7c7788737\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/_base.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6c42566f1a09422\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab29f3a728c0d01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"702d63044943bc2a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/process.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26ada25cf9ab1c5f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e14257d71a19dbaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc9626cb7487853f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/__pycache__/thread.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8816526e98a8569a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/_base.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aadf24b7a3069d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/process.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"530668a0566c5035\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/concurrent/futures/thread.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b67db5fe1307bb3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu/Makefile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9989ead10714ce50\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/configparser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98126dd27f9ad242\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/contextlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d40b6f0c7b5bc563\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/copy.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69b850c79daf67d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/copyreg.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee8fe86c630dfc0f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/crypt.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65dac05f989b89fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/csv.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2127c5dbc493b723\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b5b8e88d7985a6b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a433035feb4d3881\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14249625a7610f89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71a8b20f6fce14a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6038299cc7c8f0d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4b5724acb448b4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/_endian.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c6b378624b26ced\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21cf2c1801ca1a86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b543cc7fee2c2af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"702686203514caa4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1615d5e8f8d781fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c26911e4416a068\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/__pycache__/wintypes.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90a0fc71cdd87241\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/_endian.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46737213a2cd6531\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/README.ctypes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"affb98f8e790aa20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1208ba950a585b97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34d1c9e421a6f9dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35968b27a14e3c86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72d76f084aeceeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dffbb265314fe75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3ee740d3cfa14ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dyld.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"931e1de986a05ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3133a0475aa51f90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29ddf75376f90b42\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/dylib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f78cee014f3dca44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5c8e7cfd93bd10b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e199bf5adc62e618\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/__pycache__/framework.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8e10333fbadbcd9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/dyld.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db8be0e6e7793e98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/dylib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76792d0ac7264adb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/fetch_macholib\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bfa5e4837153ee9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/macholib/framework.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b30ff22362ca931\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7014d4863c40e735\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ctypes/wintypes.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dcfed811b4cdcfd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41705ec0da437134\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6586ca720f45648\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f58de3c058eda3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d3665aa69b9d8d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2c7dec22024aacd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a75e802d5670448d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/ascii.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dea32c324b31fcb4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d87bb9c4ff66eb47\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd2ea5d48642afd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/has_key.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa29663ed51c9629\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4efe6be8cc0d1461\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a2f6716534bd500\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/panel.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6de1eab7165e8e98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"946915b1281f11e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cd0e4cab0983e0b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/__pycache__/textpad.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1ded5747d2997fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/ascii.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"570891f06419f970\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/has_key.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af2d08846f181566\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/panel.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af113f3a5251a39e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/curses/textpad.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64514b2920e1bc51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/datetime.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"627a929efa880107\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aac3b9decbc49a5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49df73956f10bad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75409c7e2bbce83c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42e9f4212c0e8086\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81ed0805253142fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d53072b4d86bfd1d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/dumb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa051a8ec5966034\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"326a58c3ae037150\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f3e21ca46661cff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/gnu.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db8da3c5e7b75c29\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f295525ef82dc25\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab96764cd7fb006c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/__pycache__/ndbm.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1b5efc6fb1e439b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/dumb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1fe5203f7c67aaa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/gnu.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd91f4f3e443b057\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dbm/ndbm.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a55f96a4b9e71098\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/decimal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b09b8995836eda92\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/difflib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"543fa071a2f97c42\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dis.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"555753c4919030d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3de73840ca1d93d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"970613e7a82e10ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"631e34edf09a0dcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af03df82977083a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cce7801e43ba377\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e80dc634b378428\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49382c3925a3b1a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/_msvccompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a014d6342e4834bf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1032f4a1c0546fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc5a3848e6a47e9a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/archive_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fc9cbcebe49dd38\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24c0c57b7a5f5e06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"273d769dff206113\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/bcppcompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff43a88fa9d4cfec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"880fbcd7d75f6ae1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8443b63838a9ea8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/ccompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2235be48f6ddde7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18c3bda64c429efd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f05661d5e86b650\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cmd.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf7d880da3c958a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d955d5f29a4219ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87c94a3d01b7e309\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/config.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da476217023ba484\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4bfbefcb93afa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fce2f706a067fa9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/core.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3245c56b46dd6dff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a1268d9081ee0a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42954c200550b72c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/cygwinccompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a800591c5dbe7e69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5145d38bafbca44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a34b1161969cfc8b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/debug.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bfa2b7b0cb0c269\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94e826ab5834cf63\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8e985546b72062f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dep_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80b878ff6542c62c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a84c53d6784e5ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af5ce30dbe1af05e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dir_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32ab23c8dd7be1fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a297cb9fb75d4b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f2a746991121bda\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/dist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d7a83090bd9b6c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9acf8a842efe321e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a0f06620b40a5a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/errors.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"233d70a737ca6f7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"283037780154eb52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"853ceff5799787db\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/extension.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6e01df6a89786fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3615197f25a8082\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26fe2ddf9d79152a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/fancy_getopt.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5a32630f2916095\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86ad5085aeb5a2e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52212ebcbd634c9c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/file_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"620325f5510a7ddb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c57afd29a1109626\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f34f3c94e2e9798f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/filelist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e53a2b6bef8ff397\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb9e0e38d11fb9cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8db0eec91b854d4e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/log.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1bf276eb4dbd7ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4344ca1d0872ad49\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a5a3f53f3ba050c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvc9compiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20c99491de9bf81e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df212ecfeef6ea29\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d917d61ebdb0d07d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/msvccompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d99e9f90e952cc46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f0ad9071ed1991e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"910152165c2a489f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/spawn.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34275bdbac22709e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e259aa16332b673\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7529da7a56b41e51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/sysconfig.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff9156b052edb8ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e94b7b3b1b24273\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ae467c451a0f91c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/text_file.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e254a82c53628df\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2755e2fbbf65ee1c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85ab0ce7c8a1bb6a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/unixccompiler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b88d9dfa6f433da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a63e2ff724c88cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39027df4eea185aa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9ee789cb9f1f038\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ba4a75c39cb779b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fead73e77c09bcdf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/version.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2cac4e17a03bf3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d813f588f2d46e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b337f6e2bb88ad55\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/__pycache__/versionpredicate.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"556a3bc72ecb3ec8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/_msvccompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43a547f88b18cf8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/archive_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9162506d9b79ec7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/bcppcompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"249b279b5d0308bf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/ccompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fbd8ac259b93e57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/cmd.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64385ad9b252d93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee6ad2286c602056\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4075a18a176c786a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a965b9a2261b6f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c51b8c358a05fbc7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f573c4a8e1d82026\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f93e1804adbd3d50\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acc926965b8ce190\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c777d9675c64e536\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e0942ef9b43ace3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_dumb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8a08105317bdba7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"708b3e8ae93dbb92\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce4f64f72be09d49\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_msi.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a3e0f95eaa878dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8f207978f789a26\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a3fc70edab63203\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_rpm.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3140d25763857bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f392dc25607b711\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52bfc370207b48f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/bdist_wininst.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"466f17e029022e39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4990b536352bb141\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3e097f911c23de1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b7d290f7aba5619\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f25887d85d017a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f297c839c7b0bc4e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_clib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39b7c6dd65d1e343\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd071ff1169db053\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c991f5fc948cc5ea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_ext.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfeb77dbcd3dc585\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4bc77a4ea6f0a5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6deedd6bcbe5152c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_py.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68e94f40e550b98a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fed5c25016da621\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0e4d551dc236c85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/build_scripts.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"692d4ebbffd2ab08\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e8ac0736ed7b4e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62bffc8bd4f79c00\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/check.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c349d235709a4e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a5a353093df6587\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95d608fb6d1f5701\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/clean.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd3b5b3ca4b1a2b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb5433f8a6fbb82e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dadac53d65d23791\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/config.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e2157bd4e323380\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb53c6250f34372b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccf43eb8241090ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45b4d7dc6f03c549\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea2dc058dd9463da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7db7edcb69fb5c70\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_data.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfbe14cd67dc353e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75362e87efd77f21\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f014ecb506e47728\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_egg_info.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"977a57b0bf99f356\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af20df3d02c7e37f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"206a4e95e1fa215a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_headers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b809489d6ff12570\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1faf7a2d7e59c1c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39db8f2eba47dd57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_lib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"373ae40a5478ebac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6740b6b616857df2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35e541a27038b62b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/install_scripts.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92fff9d88a9a7a20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b573627b6e8012f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9da1d9de26b7db5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/register.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77b3bb4442228e23\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1052d5a4a98f1cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f32a62ef1cdda5e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/sdist.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26f563e70b0a67ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f36de392294bae1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83f7e32bf6e13b87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/__pycache__/upload.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e6811caec59a272\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/bdist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e87451a30229dfd1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_dumb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc278ac9759d735a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_msi.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11abdbe268ef8bc4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_rpm.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0e0548fe4e9f018\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/bdist_wininst.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3afa3d435989237\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/build.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16649c3844059259\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/build_clib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3df55d9afcd684ad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/build_ext.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79a563d7111b8949\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/build_py.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d583d6aeaa3b8981\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/build_scripts.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b78cec400d15b651\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/check.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc288b9922ccef97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/clean.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5894a94989df4f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/command_template\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1abd7d7113d3f41f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/config.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77577d49d709f4e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95b9460c0cced498\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install_data.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2579f9ff8f5f5115\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install_egg_info.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e2dd7a01bb0116e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install_headers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d5c5f36bdacb4fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install_lib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae205515de63d4ed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/install_scripts.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"369adb8aea300e4c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/register.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23cabbada7fa836f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/sdist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e078bb236f0fc75e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/command/upload.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52a702e76a1ba552\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/config.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20efd29f1e6f8a67\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/core.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce1214a7d868f1ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/cygwinccompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d9304cf592c1ff9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/debug.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf4c3e0dccdcace4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/dep_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1f7a646518ae4ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/dir_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97c2c7288882b7f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/dist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c5b411562b103f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/errors.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edb1703387b11104\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/extension.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9487d3adfe48573\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/fancy_getopt.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d29352305315d24e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/file_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb36c4bd3a7d7765\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/filelist.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4052f397da41c723\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/log.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce24959f627b4813\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/msvc9compiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7048a16857278391\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/msvccompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9f0c8e06eb2cc18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/spawn.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"558c625a68f9951f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/sysconfig.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b33efbbf067bde01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/text_file.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ab39b5953e309cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/unixccompiler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62b118ceef7189db\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13ec485759bcbb5c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/version.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ed94e18ed850f98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/distutils/versionpredicate.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cccdd0cfc89f1eb5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/doctest.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"565a7fe484b2127b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/dummy_threading.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c76e41f3aad2372e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48e3202eee31cd43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7775f73bea6cb204\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e808a3cfe7947d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4e5c3e2cc743efe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cd442d50f476bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"768bd48969261809\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_encoded_words.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbc04838f73f7c11\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f529315c960d9b9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ef2c5731603bef5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_header_value_parser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55d160eb35ffeaf0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfa38f118f7d16ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"559766514234b705\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_parseaddr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3eb8aa2156e3682\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a75cd9626e4209c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b24a556c223571e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/_policybase.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfb1c6c4ed5fe710\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acd2737ae1db401a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86d94acde9088637\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/base64mime.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51dd811ad4254170\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f2519aedc50b4f1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"124094de1dd498e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/charset.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73875e3fe3d6d1e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1503f1c5175af02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb47081ce133e38f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/contentmanager.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c86ded43fc6de31b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d188bdf9e41934f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa6f6b56a0565271\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/encoders.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b172a03e53e326f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2d3a19e1797c264\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4573696319875e36\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/errors.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94db8b97c746e2a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fc738c73a0b7970\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"230489e07214b704\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/feedparser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b8ec663dba143b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"194eac71e89dc64\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acc9420275af88f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/generator.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b195f7cf09602505\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a36337f9c272e35a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39260edf85bdd0fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/header.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de47a5caa601174e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45c2d227dd3c783e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fadc17fa279f90c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/headerregistry.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"287eac099860f0a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cba094382facf9f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49697fc130a12a14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/iterators.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d6ce50127c8e273\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"812d7a6e8844aba4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"465a2a7c4f53d443\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/message.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bd953dc9ad20f10\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9b852f23c125c13\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cce161c234e13a6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/parser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ca6059e8f2d4438\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ea1fb7686b2af13\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ea81da10344b013\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/policy.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3eabfb5515cedea5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcb84174cc00726d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6709d59172befbd1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/quoprimime.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e83104eb056e785\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec6d32608b7a2e0e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9c7fa3a422459e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/__pycache__/utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9088fb5f36c2beb1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/_encoded_words.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f731757c3bc94c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/_header_value_parser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1c6235d520d0959\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/_parseaddr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bd896d87fb87910\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/_policybase.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d866e1c9274a3ce9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/base64mime.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c83e1ceb3c0c17a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/charset.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84bc6b14daa25e4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/contentmanager.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5382ce20d6af96e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/encoders.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0654edebc15b339\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/errors.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"834e364fabfb6552\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/feedparser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11f3016361107a1b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/generator.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"773a4406accd01e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/header.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0c2684963dc19fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/headerregistry.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36076425bc914622\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/iterators.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5c8f1460abfa1f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/message.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1041ad678e5b360d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe7485113302f223\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c570e0a4bfc2edb6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28108caa955e865a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"632eab1bd34e674d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae3a28c4a82b4a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"221c3efffd49a86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/application.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92bed41131d59cb2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b03d8d6a1c97e9f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"672a885458344dec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/audio.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56bd7c3ec5a716d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dce2dea8089144b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42fe8129021b00a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/base.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6774cad07395418a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bb63a1fe51e286c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8de8629a15588202\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/image.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de811718eabea5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d449994447dfc85a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da432a8992d6a5be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/message.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c3a509e49c168f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"107566560f2ecbc6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab2ade9725821ac2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/multipart.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d19013b2d4f0de7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20cecc9f36b3fd5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a61ea28c9064662e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/nonmultipart.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88be500046d34c12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e61265e331398af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2312889e7110115\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/__pycache__/text.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d36d9f5cf054a44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/application.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b5aef421246c144\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/audio.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd8dd470861957d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/base.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d6b1a33dde65415\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/image.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da93e9d6100ed2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/message.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf1b9f8ef30aa1d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/multipart.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c5b189a2a9519f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/nonmultipart.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fad14ecc1b7d5c87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/mime/text.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35170a9bd6b67481\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/parser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c61e9b66002bd11f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/policy.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc10bc29bcb24d24\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/quoprimime.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64ab34dec19736b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/email/utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"171a23ecb62fc639\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4176ccc81745272\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c25ceac6f6b730a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dc88ce3630d8800\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e1c6a233e73d902\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f33618f3dd960a6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb2fc43ca33b8070\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/aliases.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddc1aa2c01be6d46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5c36a791fbdc8f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fc80c10953f313e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ascii.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab5bb3d3b1c9666e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f262a02d3f29e01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81e2606c1ab3182a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/base64_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"561fa2b90e460eb3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83074c2b896db595\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77a27357d2793e94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbee345bdc18987d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"346f88742c1f739b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a1a9ef54e18f427\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/big5hkscs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2c939bb3a3ac81c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3b4ee9027e37ea3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffd4f52a683fe596\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/bz2_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c99f3d4bd71faa4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbc34055b974496b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cad27ea5a417851\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/charmap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d25ec2bc95617dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1321428c0203737a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efdb3e0a0df180b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp037.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfdb5b1f8d4c9239\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"701cf5433703843a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2a43dab9df209d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1006.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95daaef27da3d925\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe63da81bacd608c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76bfb7292b83a0fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1026.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"379dbe83b3ca32e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"373e96d4b9bef762\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ca5448b8aad239c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1125.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ff392c9b711fa21\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3461c3b6e220a3d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a3636322e106c93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1140.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93d5067d60f5310\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b33e77bdda36ab85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddbbe353d2589c48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1250.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7b971af4fa0290d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa463e7c8ac11ec3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"876d959234120dba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1251.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a438609f606da843\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9984284132b4d89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ee1ef0651f3c4f5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1252.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff3775275403ef5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d2c40b04e9df8ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d7bfe69b872bd83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1253.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5394026f4ac3a9f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85641a6997f43824\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f0f93f042909c67\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1254.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a7a422f4b19f7a0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"774ee2abaf8a9850\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ce1861afba4a454\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1255.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"113bff3b2a17f63\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"760bb21203643383\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c084ef235c93631d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1256.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e576f2252d2dfa8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65af45562103990b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77eb57ac83b9b156\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1257.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b30b95d27dcb6ae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c4fb03fc4770476\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e50572b917bbe04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp1258.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c9d486b4008cab7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67b62a7db764d7cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63282fe4d59d3936\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp273.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f93877e3fa3cde42\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82f1acc89486bb28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"942ae52c97c2be7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp424.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6a1cde6a668721d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53dd3858bdb53ec9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21b33cc82b7779e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp437.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6597b68adee9648c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2558b5e71498cbc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35bcbad2aa222450\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp500.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d9ec9bade6c9a07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"808289f188c6350a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c13b05052447f37c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp65001.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a7248cd04fb1b8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7677a6fad52ca08c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d4072ee34381758\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp720.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb754b92f959bc9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2839111f2e69c06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2620c971fcea947\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp737.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c89e1fe4808bf84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d661706f7c1cdec7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be7aaeb5b19c0244\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp775.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a13b3c790fdb2678\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6ddbe2118aa6715\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"551d7e7aad8356af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp850.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d66bdc18fe1ac65\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"558c81407ead73aa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"851b90f81157b865\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp852.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aad785060f2bbba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f811cb87d0d30fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1734ca66c4b9a49f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp855.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"455ec7ada5f6e1ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dc19f7bb1c6f7da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bd97a0a78a54c72\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp856.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"478eaf42bafe7aa0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef5351c94f659629\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b170132af738ba99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp857.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23e1c687b187966e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9adc30b151bb3001\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"872c3d6569be04e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp858.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3eb5308ce0797916\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b19a5a47e41b70cb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1d85774964bac18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp860.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc83f16073e74836\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"801ab872c3bffaa1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6517c5b030937fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp861.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9ca33dd96c1866\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d83ad6e599630ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc016e4cfdfcb250\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp862.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5ea69c669f11b01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fe34072993db992\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adcedd62905858a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp863.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cd2d85aa0c3d97e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"889cf424762d3f2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"609fcdfa8b3ef26b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp864.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe016e5d9b91c893\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9820835f6020eb3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60391af07d952488\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp865.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b7c352c71e53f2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b3f80e3897d3c45\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c91ba90c6f293bef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp866.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"581748a1e398a43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ac2e57b5d06079b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c83fa4f28c416594\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp869.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1310ca003d7cca72\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"913669b2f9013648\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f7de9473358293d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp874.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba96b92d4626f34a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5ad24df0a51b040\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e0d23217054078\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp875.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a245ac8b480df967\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90136afdcbd109c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5168af0c154ced98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp932.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3c7e1badd82bb7d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71a8e9ba16c8a693\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8f2472a03ab539f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp949.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f13fbf84ce984fcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f98c942b2e15d01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"827f973de82a4cd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/cp950.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fd7eb61fe05cc3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bcc56e6a90bd368\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca836da10ce40afd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jis_2004.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a29d14fcd3cbf0c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20d3ca77bee0f384\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4de22314dc8e28b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jisx0213.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8e861bac72304f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65078fc977c34d39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"820f02069599e431\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_jp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f71c6d8c62188aa3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2abf14488dcbd89b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"178c5763ca1afd0a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/euc_kr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd3c19362e1e9b12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7297661dd539838\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3338d25ad89883e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb18030.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cb11b3d8d7e86e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e01e15a830aa79e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8feae66ce491ddf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gb2312.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85e77148d91df1a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"107ec6443d385a3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b0d77f22c4d63d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/gbk.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdf4db84d338ba3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80cf70de9e96bf99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a56e7e5a755bbdd7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hex_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c1047dd43893a9a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b1fd515f99730b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e96fff547815965e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hp_roman8.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"694ad803559c229e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4aca1c67de08123\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"723e0a8bb7ddf02f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/hz.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0150a90049380c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d83ca57c8c1fe2c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ceeacf05097388a6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/idna.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e454b14b9f895a73\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86c79ff6b7ad980\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e43c7feb1be47f47\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aff7d8c4ce4cbcf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e51b429b6a9031d4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b84c28d38a88864\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_1.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b02b140a832f35f0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d77db2fe564c0423\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e2561880e45af4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c8dcee9ce4d0f7a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87e6ef9f3e2eb56c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"665ddd3d6d14d6be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_2004.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b64d037aabd99f2b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f98bf5b342b1c83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e9982723963142f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_3.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbe906252d12a4e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e7d5422f4d2cd5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2f59a74141541b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_jp_ext.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31605a4b11885cef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d88b644597271ace\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cce9edede837d2a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso2022_kr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d09d933d6eeeb43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7baf42381b912ed0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dc510852265e9a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_1.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d87da10b5a6a9b5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5275869b9a40192\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae4c786818cf4c84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_10.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58ba08a2c343e4e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6a5b42a6246b082\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d401c6f3c66bfddf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_11.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"271e0d2e812897ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"446d4a82f3b821d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c190374bc2f78aa1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_13.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9f2bca1f6069e0c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f84095cfedeefbb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6695a99754022134\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_14.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11d7df2d1df6d234\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3f0cde8d3c7085d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14c3e1ba122e72e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_15.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e59d766c4f87fe1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69139ea386327bf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f8da57fd1fdb8c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_16.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af9b6e5d56fb955c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dadf08c476295684\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76c80a81c70c35e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a15c145be41dc5ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"610bd0532b73e790\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c44881b73e460067\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_3.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c64d36b27523be01\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fae355790a0fce5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f98a485eeb25b4bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_4.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bac8967d4b4d943\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6960aa7a42009d91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"300689144d351cca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_5.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59e72b77a2e8e8ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6c88108f365340e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43254a33ce1d1ee0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_6.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b3777e990f53a06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab9ac83c7bce18d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67be0efbf159be18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_7.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d042bc602d6d82c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbab13d7a8b06c51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6c0e42d4d9049cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_8.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a471e65edf04e878\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"820d566fc325fc19\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"626374dde4d5ca20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/iso8859_9.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4158233a3e0ca5bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10ccf6b52d339ce7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80e7bac4bd8eedb5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/johab.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d91dbeb34aedbae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3387595c1aa47049\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f15ef1ea34b32ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_r.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a3358db01baf8c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52bf33a27dbce89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e78e52597e47d0b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_t.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4469dc35bed3346\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6c2808f9e162dd7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c22818fec4380dcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/koi8_u.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51684d72b9b9209a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50199b815aa28680\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a30bb1f300c90c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/kz1048.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48c7b1057a1529b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9ae8f57cb482131\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccafd6e05dd5b02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/latin_1.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36c8a35e5c7db2b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3ad0910380e110\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adece6966191570d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_arabic.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a00b8b2176b6b533\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"172415d95808529\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af6ce186f891c3ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_centeuro.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4850facd5428882\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9744a1cb8e716cd0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a78d367a39e4d66c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_croatian.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d8b2228d4c764bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ff0140f9c718687\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43a19215a90f7c89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_cyrillic.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45b94d476c788f97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f9acec49dd3bbcf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"670a7d2d332aeaa9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_farsi.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70a5574555d4f14c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd623e8f0890c03d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9673ddc65bda3f51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_greek.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea0f5616f5180a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"114eb1a3b5b8b386\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41ece9f8bc079d55\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_iceland.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acce0241cebba82\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a33a38ecaff220f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9b6184cd153343c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_latin2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf02a75ae0472f87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"542aa760d9adae39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7f4914cb9ce184e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_roman.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b100fee96611b2d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5eb8a8fb61bdb2d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89be73d957c6e675\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_romanian.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ec2a6cebec31fe5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bffc6d77c9569283\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50723d03242ad36a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mac_turkish.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f284440460c2d7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27f6830636291037\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbd78b8b92dfe5c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/mbcs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"118931ac9de29e41\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aed281c984bdcf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1279cbbdeb705dab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/oem.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9d5624a3d60e259\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15cf42a46893be14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c01580f29aaccddc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/palmos.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c00b1457174e9b27\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bfa527d9ba54344\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fa6f9c8bbbeae93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/ptcp154.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"317ff1c060a68d41\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3e63ba06c3b9d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"760164cab9ab554b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/punycode.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6c3e0ceecdced34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a90dba9acda39b3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8502fe0059de4ac5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/quopri_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c78bac1cf41a84a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da2d394400ec4e27\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22d3b23cb60be1c5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/raw_unicode_escape.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b9a0f0fa0a435e7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6eb60bc18866452\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e59791c2acc561f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/rot_13.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9558b751dc84a44a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"186cded5c38be903\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bff8c60fec7d3c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edfa8361c28c1bd3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"841324d186348f18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ea39712e2e291e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jis_2004.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f3f7de5fc0c07d3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e8b671eb234e1a9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e93e401ae6f9f51a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/shift_jisx0213.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f51e037d62449050\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12b593483e0c250a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6c263763c188040\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/tis_620.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58fba0d80d177944\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef36c2ac7d6794a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b5c82bf452ac497\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/undefined.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37634bec517e7630\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aeedfe1fb959011\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9415818c6a1fdac4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_escape.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b3e3fca6b41fe86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e52e2a2f011dcbc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d35dbb212a60da33\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/unicode_internal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50bc94ee4cb13b6e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"202e651eee840aad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b01f3024849cde4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d002fa746a8d100c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b04ece388c7925\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cca97108fa1b8dc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_be.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c75ddf6810231d75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bf525f99a59bd7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8079476a28aef29b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_16_le.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67f9da930b666136\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aedf09d1dde16bfe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9adb305a9649c8d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc638797b36ab4aa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84c94a3c4686ef40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2bb34f943fbf133\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_be.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ef399a138057b43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ea58ffa3a6ec0be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c0da9929e5014fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_32_le.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4439acd255c0cbc6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5df41df3f9b02e89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb495d995034db28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_7.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21bb66de7e0b35dc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5688cb0713ca1d05\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"228255afd511abeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"123acf8572e8658b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b14135cf33e350c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"955231d5969f0261\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/utf_8_sig.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"475d0fbbea99958f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c93b5871042fadd8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d959efbf25fd765f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/uu_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d226ba29facae9f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f341f759b3aa40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed2c5a258619a8d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/__pycache__/zlib_codec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"736e247f29d9e90f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/aliases.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5188d1b7a7abb52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/ascii.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f07a316a7e422d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/base64_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bab6646ed66ac578\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/big5.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ca42515b43bd22a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/big5hkscs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcc0b03af781bb68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/bz2_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1f87c705d5c1847\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/charmap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7029b5bcc94d79a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp037.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73487b79638020d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1006.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf756eb56bf94153\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1026.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57644b6d27cab819\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1125.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc2dc60999fe9781\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1140.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17a1cde9e17822d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1250.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e62cea29d7b89dd3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1251.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f476e896e947ed1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1252.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ea1d67b9cb5463d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1253.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f02f2aa5c7728c8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1254.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2be89794ac0a3bf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1255.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82f61017643f5da8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1256.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6233b6398b843342\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1257.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cff12135eedba513\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp1258.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82f16538afa33915\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp273.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ac93889bf74ccfe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp424.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8953a578cd7cc73\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp437.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cb76317c7ec6279\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp500.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afc9c6a877880ceb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp65001.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc06303b97b3fe0d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp720.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9803c954acca1160\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp737.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b3458c307d4c4e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp775.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dc4c04e5adcc9da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp850.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28479a995e639520\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp852.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb626900ad5ca2a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp855.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c97098c579282f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp856.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a357404a30e99c80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp857.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c32739fc8a50df4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp858.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf68fb42b525ce04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp860.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6469a77b33e8b3e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp861.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b3a16240dec188c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp862.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cf95eff676f1958\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp863.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c124be84e174a3a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp864.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d133d80f1e70ffd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp865.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"749efe753388ed02\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp866.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71fd527993248805\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp869.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4208f917700e9345\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp874.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9e9dada2b735e60\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp875.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f7f688d39745b3f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp932.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86d1ec7539b4c515\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp949.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72f7b806c6cf0b27\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/cp950.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1c9257d35ff7a1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/euc_jis_2004.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f94a023f6cdefb11\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/euc_jisx0213.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"233435528f1da36e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/euc_jp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98b7401c0d0fce07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/euc_kr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"776a42d92324ad3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/gb18030.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8ecc1336be7c418\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/gb2312.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"541456ce1bf8d45a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/gbk.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc2bd13aa0d71d97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/hex_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27126c252af6e114\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/hp_roman8.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d754c1b65e1f7649\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/hz.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23cbe99e70dcba8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/idna.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29f8462b56b313c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9fa0f6c87e07844\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_1.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"321f7d141000f9d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c18616ad9451ab3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_2004.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5acf0316ecaad35\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_3.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab81470174e7c5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_jp_ext.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3b828fbc5f59938\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso2022_kr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffec5cea7e4ac65d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_1.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bcbb081586ef683\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_10.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44f0b14bdb7234fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_11.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a1f8b436989afa7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_13.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dd90d26876d5e1d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_14.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6acc0f74fe663b63\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_15.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14d76dd6e83f568b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_16.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e4985767d2cd3b5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74b7ae2654b11fdd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_3.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36ab08d91a804ea4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_4.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d079d1e37b9fdfa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_5.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dff56f03c4a772\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_6.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4933446128bf2f73\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_7.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a49e246778b2a09c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_8.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"464af475414e7ee7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/iso8859_9.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4288f9525ca7050\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/johab.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b4c6a228791af71\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/koi8_r.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc9312dabd7f7698\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/koi8_t.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c37d98fc363f7c18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/koi8_u.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f2f2b092318269\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/kz1048.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4b200274d91d69b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/latin_1.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"892eaf316530f992\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_arabic.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b498e9523687cc8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_centeuro.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb9abf99c7780fa0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_croatian.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"404a82e970f4d460\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_cyrillic.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"303241238376c89a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_farsi.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9bb711321686ad2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_greek.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91b6b626cd58071c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_iceland.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb938080c18fabf8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_latin2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9f4c8f4e820df60\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_roman.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99ebffd644157347\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_romanian.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4691b4037d0a12d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mac_turkish.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca39f6e1a3d037a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/mbcs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43a07004a8d7b56e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/oem.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da24f2979f37fa97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/palmos.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ea10834ec40de05\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/ptcp154.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d10fc4a086dcb067\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/punycode.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5ade0ffb01f9005\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/quopri_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54d63ed9abfca9c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/raw_unicode_escape.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a70312366c3995d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/rot_13.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5888f51a91bf046e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/shift_jis.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ceb3cd4bd1220235\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/shift_jis_2004.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec902402ea6efe4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/shift_jisx0213.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1a44b5d2b35b60\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/tis_620.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e017b40b9111d209\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/undefined.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bdad2bb89d5344c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/unicode_escape.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af9d6a4a076b10c0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/unicode_internal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9491aafa611abf9e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_16.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42693ffbed77aa2e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_16_be.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5cf7c99cf64228b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_16_le.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3da9f6f20e2df546\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_32.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b689d89a01dc9a88\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_32_be.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40805373c8abd999\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_32_le.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d84ef690cd3c4a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_7.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5f4e299939e96c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_8.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"552ca91a00985619\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/utf_8_sig.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f08eae0879d1d17b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/uu_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16d1d174a388d94b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/encodings/zlib_codec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40cd07cbdb6adaed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65b00e2d852ed1d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__main__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e65405733374d15\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99e396666b175941\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd57e2b4deabb606\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9126d8495e3f374d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11b79f907d9a09ad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9951269b70f5d60\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/__main__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf8d99948e51cfac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f971be08c42b730d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c6339080a019636\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/__pycache__/_uninstall.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6acf5384239873ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ensurepip/_uninstall.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36210ded1b671fc4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/enum.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2036531db018028\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/filecmp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"112173e32853f590\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/fileinput.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57d2a7a20157f466\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/fnmatch.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57fab03f41d43f2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/formatter.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c801c2e1b5a1ff9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/fractions.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ee44238a61e673a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ftplib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8514e63adb3f365\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/functools.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4892122c56f26f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/genericpath.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b88451d03bc947f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/getopt.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82a5d33ec34a6a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/getpass.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db4790301f6d21e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/gettext.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b06de8bccb7d4a9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/glob.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f56216d63867477a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/gzip.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2ee12b5e42dcd22\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/hashlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ea1e2486dd737a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/heapq.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a073447be58f46c0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/hmac.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ece18cc431180b90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"599fac28417263b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c62a47104a6eb1e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b947f60c03b25a2d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"126994cf7ff4816b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e70db9e683ceb989\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd24902bbbefe4a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/entities.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e1600dc9d41a39d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2582145ed506b6a6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81ab13e789c9a7e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/__pycache__/parser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d11e9a5bca2f51b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/entities.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8318ae8996d14412\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/html/parser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90ca98365bb443d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0f6603af7cab1e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2c5a0c4debb2711\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5396ab60deb853f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13ef70e4fc15c956\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd53d2acb1dcaed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae9cb4309b45a36c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/client.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cad716fc05a8aabb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b4c0f189bc8fb91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c7a1e968142ca57\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookiejar.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f320b40fec5dc25f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e140bf1a21d0992\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c51f08895fc5ab55\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/cookies.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f947a3ec3d9e724a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a179282c26bd563c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccf0e77c4aa0445c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/__pycache__/server.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4af5ba2b998b08f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/client.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2054ae51a626b1ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/cookiejar.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"818de22b22e9e242\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/cookies.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1058980c110f8778\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/http/server.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e9015941c4538f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/imaplib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f352ce367c75bfb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/imghdr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aab5c9ea3c0e8f68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/imp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75b5a5f6e7a57896\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc3877c29886a635\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56890fd3b1398fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c632a5adab659a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8994fa5674eed75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"863b166fde20209f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58aa1217293f8351\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b7895e3e54a5535\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25a44e03e508ea07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"801383c1c66c99b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/_bootstrap_external.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93ad9458219d1e1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c49ba2d2c62b36bd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4854e950bcbe2f36\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/abc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ae857ce899fee25\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfebe84476d63a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59c74907631da8bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/machinery.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dc999cdba3be879\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f5db9e261136449\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41b4baa03e44356e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"360b3624e7518429\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/_bootstrap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c07c1c9d674dcb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/_bootstrap_external.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0e9bb245d9651c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/abc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb85b0697906759d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/machinery.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d88ad7516341b32\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/importlib/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cac9efe9e6cc0134\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/inspect.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"745c599ef52621ac\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/io.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60c82e96b3f0d9b2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ipaddress.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd72438f93f594b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d7423f51d5f491b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"885c3df249db7d51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4fea87bdafeff20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d4d6c4e3e76ced8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c04decb96492bb61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcd2a0ce3b86cee1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/decoder.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"588d11f9bb8feaf9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4b5ac17ee3a394b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4759720c260be07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/encoder.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9de80749f01d044\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2b477dd01373519\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50e0fb8bbf1ef84e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/scanner.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81e4e2405b90473\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9253610b135f8ae3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb85a74420280dc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/__pycache__/tool.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5018a2e4a9b2c470\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/decoder.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9caadd872ad637ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/encoder.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"147475d5462fe125\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/scanner.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc066f7fefa31c28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/json/tool.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25ffee54d40cba83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/keyword.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"792f39731f433838\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_asyncio.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8413bca187ee021\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_bisect.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef5f885bc7597fed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_blake2.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fafce35d6a34e919\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2805c9c13dd78ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0837de4e9022625\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9e058ca513154e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da7f6beea553e0d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b7a91f9938f1550\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44fe5c4adf233f85\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b40a5fc000263016\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_crypt.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53dfb7c6f5e86d06\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_csv.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a52d0e6e12068f49\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6223c15fed501b34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_curses.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e8c35dfa007514f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_curses_panel.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5ee9d05b4e40dee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_datetime.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19c764d8a5851b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_dbm.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e17fbf30c1764f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_decimal.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1aa97f30ecfa4ff7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_elementtree.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71778cee822087c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_gdbm.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2c4a3dfb1fcb07b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"781c588af78db50d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_heapq.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa729a7df6172189\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_hmacopenssl.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ad231235bed6785\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_json.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7626845411ab4c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_lsprof.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af757096ee81e87c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cfae5940e7fe5f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"480d4e684457b95a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_multiprocessing.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbb65c470cbd5433\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff58dc78ae0eec59\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_pickle.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d8bebfda6a39974\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_posixsubprocess.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b057402a997d990c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_random.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4cd308e439c4883\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_sha3.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"876e0f5c90ce838d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_socket.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"529f827c92861b68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a256cecba56adf3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a98b06a4fcdd3284\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_struct.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21646455bde55519\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/_testmultiphase.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9c8edc98529a494\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/array.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9264207cd33e767f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/audioop.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fb7522963555ffd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/binascii.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64265eab31742e77\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/cmath.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afb828d970265c04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/fcntl.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d23a5a8d5e14bc3a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/grp.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cf10b446df25add\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/math.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72bd52974d18f83a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/mmap.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c51ac70269c319f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/nis.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e1f52fde3bfcd05\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/ossaudiodev.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a26ff8b43c873e25\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/parser.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5bf3933cfb84c7c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e39a90e029c9ef4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3478cdac1a945af7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bb6d7dd887b6b00\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/select.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5f9217fc022289c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/spwd.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1fb3282e7db4383\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/syslog.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72715f746ae3be7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45e4ecb342c8229d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/unicodedata.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8a9cf852ffc2792\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/xxlimited.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c10ba03f8d2f35b9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib-dynload/zlib.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8d2ad9e87de0e7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/Grammar.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9c2e4681ec72860\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/Grammar3.6.8.final.0.pickle\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab04b37fef78496d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/PatternGrammar.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fe30dec6c595b37\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/PatternGrammar3.6.8.final.0.pickle\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d211c757b8217691\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1095c95a7f21e7ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__main__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b48c6e7d50de6873\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7738992aebb2177a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"900f609f5979ea80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed36915cd8ea08da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc94b108048ef0fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d2bd967dd9b275c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/__main__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cad8e5dc717ac80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35db222adb53ba4a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ddd86fb776de060\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_matcher.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82b745e0ea89c55b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"802f5320020c2e4c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10eea0b50a40353\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/btm_utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5e07b5a1241b01b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"589743a40c7940be\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7140d74161751dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_base.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75cd7fcd8457d81d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85971daa3f216ccc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd596ee4d2688e13\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/fixer_util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ab2ecd63d11fdb8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63f8ca1a2e947b3e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"408b17f5da356a23\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/main.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b3c2ee124993606\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f63b1aea87367f80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9986e76a97a08c69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bae73e4b4ef207ff\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f08d0ae4ff8c80f5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d610b617de318a18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pygram.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5995be187c261543\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd924b685791d625\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa10105f9e45ba90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/pytree.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b18c8b9b9f2c58b3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5762e8209d2f90e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"623c169b4d737aa9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/__pycache__/refactor.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a334f5bedd9a72f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/btm_matcher.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c62c5ab3bac9037\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/btm_utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20ebe3d44d9b76a7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixer_base.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"784f333fdeb96541\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixer_util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b71c704c082ff95\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"680a35c7896b924a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f82dbc9ad772694\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9b352a44ad68400\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"809ad190a8cf6763\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a98a8b69883d1f52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9628863389b70067\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_apply.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f236d44780bc6016\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e8b25dd6d3eb549\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6accc1c3e904ff84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_asserts.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e1d95f0a8807393\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a180fc203aab37d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f62372e1f90fa98c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_basestring.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e07dce9394d4f422\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef6f7b61099bf9e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44ace7fa669a58c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_buffer.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b21d513dde25624d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"379e539a0ed54564\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b47b9644593b291\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_dict.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45f3659f88c66c1d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa727a17f8b7dfa5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb2bcb62c4740d9e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_except.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9b5f228f2e0ba04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb054193a9b1d25b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d85c54dcf558499\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exec.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"923f6fbc3139f6ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"624474492dcf80fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4ac4c582d1a4a0f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_execfile.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1860eab10847abb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcdc2fcd350d1cab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb3c289f6df368ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_exitfunc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51e9544613cbedc8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a405604db35f0798\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e2296ca6fb1efcc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_filter.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58d695c164cd38ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3201599c141e9117\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16d6e1a62cd285fc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_funcattrs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d7da1b6023d9caa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d2657ef1461f721\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f69e33863868a6d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_future.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7666b1f93d7b1ffb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a4c1d3564421811\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ec90ec37cd1809b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_getcwdu.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ea4475f61eb1c96\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"448ab5f73e6724f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22e0d8aa65b699d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_has_key.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10e6b6ad317b465b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b3b97707b53ad34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78156a4ee063005f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_idioms.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"443b39b7827f16b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1a3f4901698e151\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bf520d3dc3d97f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_import.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fd79d7947df5673\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"622be205e170d26f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcb81542d2417fa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4bf2f22687c92de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"963ed701906fb98d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b6f8df3c39afd9a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_imports2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbe6588a48b05d51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbd25614183bf4cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e77a2596da181d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_input.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5c97e49975237e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8b5c464a135f61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f779fcf59d7d65f5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_intern.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e4eb73bfc7871d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5ce7f531b661765\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1943dc10045665a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_isinstance.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83b65f7bda07a4b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a573aba00f397454\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13c2baa6c29aacea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f4df39fecdc2a9a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec1f952c176a533f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50c364b11383f5c6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_itertools_imports.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a34e28a4c9434bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccdb6ac66aecae87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5552fca07be0772e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_long.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb832fcb2d53f9b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e9d4774e58b3c1c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e90c18c8e9898c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_map.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63f62cc7fdd92d67\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e9a8546e51afa65\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d695b781dc42a771\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_metaclass.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a85700bb3d5551d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a3072fce8442937\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd61194b31ea2cbf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_methodattrs.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"946adbef33a50036\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1506d0cb75e8965\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc8cdbd04477cb47\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ne.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"947ffb18b89b927c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc44ee584378a72a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76f4e97d4a697723\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_next.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dad7c207ad46c5e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca59b96deb9ba3bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8250d82526944888\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_nonzero.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"324139cfc9a7edc0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"126632262faddfe2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b9683ffdddf1581\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_numliterals.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ba24b0f12a384af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a419395d83ce7069\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7feffafdd5df988\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_operator.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e39df7da0448fdce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e88756dec60f60a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbc6bd3a6c6fa5e4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_paren.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aee396fb673e1c9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3fd6d4a469e8e70\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eac5d87f7bff2735\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_print.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ce758866a054a89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3db4f3b245910d90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd8e87ac58634ad7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raise.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25dfd1aa43ff32e5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6f9d199251acbf5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7989567196f8abc5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_raw_input.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcfe533733a7b356\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28a7d2a376abe887\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"593a893dce75f4d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reduce.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9ed0ceb572802a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"101ea2c7d5cbfa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a090459945f691ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_reload.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8128b1b08781cf6d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8398831475278e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0a5b880ca539dbc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_renames.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b0ef51cfe9bd2f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8b0e96b3ebe6a43\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14505dec5c870185\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_repr.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"150567746d37600d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1a4032d377ed388\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d9fac646525185f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_set_literal.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21a5dbc910f973ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7323b4d922bb9181\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f56a8de8ed2bba15\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_standarderror.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d966b00e07db87c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"101a087b9f1aa09\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22eb13e1722c0a75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_sys_exc.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba5ff94b37b947d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fc2c778c0d76b46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24331f4b897ecb41\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_throw.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb7767cac3197143\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bea7b5d96e8bd31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc43fdb53c1a0294\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_tuple_params.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8decb786e950433f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6bbf0c696cc36c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35eae2dfea07b051\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_types.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7020b5deeb9ca17\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4647e71614dd99dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e826f575a8aaaf7d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_unicode.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39ef4ec5b6cd183f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18156bab90e7b16f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e60ab9d41d8111de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_urllib.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"528475731c77ab38\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef84d1241a645ccb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd53874147ff3ed3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_ws_comma.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c533e6e1dba70675\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce5331c24339ca69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"810712550c5e57a9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xrange.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30e7bb1a3b6215ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7cbbfa580f1fa9de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d3005974c0b1f11\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_xreadlines.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a85c89c8c0c6f806\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87053200052eb636\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55bf123f86828c91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/__pycache__/fix_zip.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e79d23b6fd151576\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_apply.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35648a3780bbc603\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_asserts.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2590118fbd5d0c84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_basestring.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7134425a9ccc0120\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_buffer.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4485cac4debaf73b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_dict.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"910fdcab8a91472d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_except.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d91c1bcadb978efc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_exec.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d381a841e87af4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_execfile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1ea02cab890c43d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_exitfunc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcbd37ad714b1d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_filter.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3040b6d94a0239a9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_funcattrs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2871332b608c41f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_future.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5007394198f04f7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_getcwdu.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57c05b14ebf69065\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_has_key.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db5d86479384e4ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_idioms.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e063c4e75d98888\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_import.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0d64ef17c1862af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_imports.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ced2176e68576255\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_imports2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55ef3b3a898c1a38\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_input.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78657edc603c8c15\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_intern.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"831adf6ba43bfd9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_isinstance.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54e80481350b717a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_itertools.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c217b1dd7578ea4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_itertools_imports.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7f81d09c6aae6c6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_long.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"211f42d796bba655\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_map.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b88b926531136bef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_metaclass.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19e341d6161f917b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_methodattrs.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4198eff1df6cb0f8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_ne.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37ec0e466d194383\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_next.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"626343cda28eddd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_nonzero.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f815f2a9c29afd18\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_numliterals.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"214a0dce2fe0741\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_operator.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d06970dcc20e9975\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_paren.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"418ce7232356e616\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_print.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fcf04f40ba9a0d2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_raise.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e7e0322838f5c1a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_raw_input.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a921199a495b4a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_reduce.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fc31d445b4f350e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_reload.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"356b5621d3726885\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_renames.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dcbe7cc2aceb379\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_repr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21c319e9a354045c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_set_literal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a50468561d9b1c11\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_standarderror.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bf501d49b61f431\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_sys_exc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"430bf0c969cadbf4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_throw.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"572c65535eb9ad10\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_tuple_params.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f2b45d26e7c5e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_types.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"102f43842b8f3f12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_unicode.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88b612d28ec7db48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_urllib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b19b9ed0009dc05\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_ws_comma.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29499a4ad106196e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_xrange.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b8327020e576309\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_xreadlines.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d409ea1c8f543b47\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/fixes/fix_zip.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f9ab42475a830c3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/main.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"441a72a7bcb9132f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/patcomp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92449d877e97dc22\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af2e40f02dc5deba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64dd5d157ad9f3f1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca0085f78373cdd3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e47aa006e58ce09\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80935a21fd4fd25f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32d7a67e9fb70815\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/conv.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf5a23d423fcf84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efb756e97510e273\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2401684a1d8dce66\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/driver.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"605f81e25825fa8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b5820e50dba6ba7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"489b18a68639cde4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/grammar.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ed0d9bd110d9789\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51409275d3016756\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"263d2107922cee53\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/literals.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7639a09e1d064da4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"643d6dc2e5b6083b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"876a327633140871\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/parse.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d2111fc276b4e6d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8e25b615110eafd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dd6e784b4e73209\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/pgen.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55c9183fe13b88c4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d99ffc01e016957\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11e0da6144710f6c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/token.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92bb0e53f399779f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11f3c6c2a65b711a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87e16cae87acd3f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/__pycache__/tokenize.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52845df3b0f9768c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/conv.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5eb067744a221d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/driver.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ec3376876988b6b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/grammar.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d70c594972bb8236\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/literals.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b61da5532e88e715\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/parse.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0d0305f427d487e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/pgen.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bf0e3423b0195f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/token.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"696e612869836e76\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pgen2/tokenize.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3b6564dca80419\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pygram.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"315a292a3aac7c3b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/pytree.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4301ad4d4dd82807\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lib2to3/refactor.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6924da8bf2c77c07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/linecache.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"351a0a317e0b7298\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/locale.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"341c5b8a16296bad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bf0f3ca77158b9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7056e492afeee39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37a78c6d4c4b8578\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd35356ef332c14b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"836eeda7010afd0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d81a9aa82b0270d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/config.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5340cd1075ddd462\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"949d5fa26e4f5e16\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3b4624db6749e00\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/__pycache__/handlers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38f8bc415a95b1cd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/config.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f7af4dec8e75cca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/logging/handlers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1acc3378b5e5fd5d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/lzma.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45b4c8da73275277\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/macpath.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e01d1c277b1dd8f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/macurl2path.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0e76aa40dcc240c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/mailbox.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e3fc7602b8a02c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/mailcap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31f9c0ca3eedf6a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/mimetypes.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37b31559a93c13ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/modulefinder.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffe5ef5f0067b40\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6956a8947a140136\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22e292a0b7a604f3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17f4a29154719ac8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a3b02d0ee40d3e0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d78016036aa8b1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b087850a6d046076\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/connection.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"299b57f2c59a8a68\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad49950ac5aaf736\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c84794d6b67a762d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/context.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f878bbc77ef27e6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1e9e7975cff0922\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9600b88aed5223e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35ca59ceee37c939\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8ebdfef3558ab31\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f5bb79f4567b952\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/heap.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c09266c66a0fd0e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcf749aba4466908\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d16dbadaa68aa134\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/managers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cc8042341886b0c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73d387190a6a0624\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1758139e4b73949\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/pool.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26cceef8ceca3e35\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1af9e14e20ea7498\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e83472a5608137e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_fork.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c77b134d3e77620d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"380bfa66b73562af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7cc0e6578abc7b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_forkserver.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e5fdadb5e89e950\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1e7011506548a8c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2371e950d6caf11c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_posix.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2e58d2f66af1665\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22b33452b2969323\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77b50de8f0668f7a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/popen_spawn_win32.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2eb92438a814914\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"231cd90e99662c61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"965fef3b059e3392\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/process.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77cb12700a7735b6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e19ee4a8f99e79ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e067f26a5a3a52ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/queues.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cfdd0df254f4084\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5918f421f1855f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29d40b748556e0c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/reduction.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30df698c9d1dc1af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5788e5009faea998\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3851d19bcedab5bc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/resource_sharer.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3d663002fbea48b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bccc884bf487c17d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97bef200fc5e122e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/semaphore_tracker.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b294e46607ab02c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d417c67e65cba668\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"703d2e76b86b0b69\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/sharedctypes.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c59b8e35f436fee3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abb0831ad7ba7083\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbfd74dd1cae36d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/spawn.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fdaa274592f33018\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ccc70a7b2bcb7c8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ef6e9f4f9b39daa\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc8084d273c1bc3a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97781bceb0909015\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"277a4738469253d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e2db3883f5b1139\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/connection.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cadd83c4feaaa169\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/context.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa1422acec4cdb7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ccdbf2e3c524c1c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78afb02d07ee6bcf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b8a7b67768c86e2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a39ff2fb8959e33\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"404e3c4dbafd40d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fb5cd27136cf000\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/__pycache__/connection.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e90c4e066c620da\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/dummy/connection.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa7efa2ac11f2dab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/forkserver.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"258cc73f8eea773f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/heap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"272188855c0979a4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/managers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d6b83180646eea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/pool.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e60e45923a7a257b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_fork.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba307ac9555cea6c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_forkserver.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"567b46f77316e74b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_spawn_posix.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82a2b3cd6c83e824\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/popen_spawn_win32.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c5545e4c403d115\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/process.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"104a3a842d9d812f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/queues.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"405c2808a38326ae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/reduction.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1bca23a8e59fe82\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/resource_sharer.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a74986f5703cbb3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/semaphore_tracker.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe20ebb05dddbb5a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/sharedctypes.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6f7829402bc616f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/spawn.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2c4986959370467\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/synchronize.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"278aa8c226af5909\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/multiprocessing/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abdf3a824cb12779\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/netrc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b88b174bd2fe07f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/nntplib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76647adbb87eee9a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ntpath.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e38b85b8a23ccaa6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/nturl2path.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f51e7a72b86c490a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/numbers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c43466c3fc3ffd4e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/opcode.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c92e43c1cc3d430f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/operator.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfb63e0f9d6d96a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/optparse.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"679655c8aabf711d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/os.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bb00f851889865c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pathlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f3d6b8715f5bf1e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pdb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55d79c481f9edea6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pickle.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1226741f478d9ffc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pickletools.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d41dee533e5dbff2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pipes.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bdd6fd88f4a1709\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pkgutil.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bef3ae1b85379eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/platform.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aa2cfa1fc6cf083\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/plistlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b84adb44f7cab52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/poplib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d261e1b3ad6613b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/posixpath.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c0e37bb361be2e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pprint.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae6192732a5a7f61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/profile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4b2cbf570da7506\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pstats.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f71a5946d443a9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pty.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36c8dead86653f79\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/py_compile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a01125f7b024fc0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pyclbr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8789ca1a55082610\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2da76e9167845757\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84a84b6f05e123\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"567f24583134d2f7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84770f84e0a91f0e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4daaf359fc119bcd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e468efa37ac7f9ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dce4f4cd60c4fb6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/__pycache__/topics.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a28c4310a1b4871\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/_pydoc.css\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cfcfd1e056e8f27\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/pydoc_data/topics.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1709d0e84eec96ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/queue.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a3dd96d094f46d2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/quopri.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"517d9777a087325b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/random.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9352d78a18837e89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/re.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c190f0a9de37afe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/reprlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a8f73811f3ef8a6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/rlcompleter.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30179739fffbdb3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/runpy.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3cc457dd042cda6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sched.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ea6db35b272fe2b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/secrets.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d94f9567cfea1338\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/selectors.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abd5002d8c7b42a0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/shelve.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87713f44b463ee71\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/shlex.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c511ee6700d1d8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/shutil.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8269b69b7494f6b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/signal.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fb38d37e2b88ea3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/README.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d10bba22e9840177\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg-1.10.0-py3.6.egg-info\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61e36436af8eea71\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94f206e576184a93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c26fbad08507a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d95b9cafc38672\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/callbacks.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6944b42aa13f36\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/callbacks.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1ea12fe63dc0f48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/core.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f49815439ca77d72\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/core.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"172102122803c853\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/errors.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78f6c5bbf6de69f6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/errors.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"522f4283045ea3cc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/gpgme.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1613134cbc15488e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/gpgme.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c16539172f8a484\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/results.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd199e7620b68d51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/results.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4795e08ab618c7e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9584e9e8cbb8023e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94dbae27eb98dfa0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/version.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ce627f751cd18ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/__pycache__/version.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c9d940d647f6e10\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/_gpgme.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61a42a14db4ad53e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/callbacks.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46bbce23f94216b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25d3bca05c28fcd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"514344c8b3aceab6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2950efe9c884fcdf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/create.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a2980c2bfe9777\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/create.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32e759b60d06e72\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/event.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87226d3132bd709a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/event.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33c2b2a73f65a3d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/import.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f66841626ad2696\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/import.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77f062c5e7fad4e8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/keysign.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c45118c3e9e60226\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/keysign.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26617a38d3cdc975\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/md.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45e710832d187d4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/md.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7be1be6cc32f6037\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/pk.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41fda91d3b829b20\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/pk.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64e7312e31b7547a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/protocol.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bcdf34e881e48d7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/protocol.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"208b9da094707bcb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/sigsum.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a22c808188cd1af\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/sigsum.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7de274f2a691a8ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/status.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2710fcb59bfb1016\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/status.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f06497249611464\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/validity.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9226e1a85252e630\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/__pycache__/validity.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93194b4b8a802c80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/create.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"365459393e1a7e77\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cdfb06499ea6ef0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47a242daa8665f0e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d3ce733583ffb90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/encoding.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"970e286e48411add\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/__pycache__/encoding.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e076723d788410df\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/data/encoding.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f80c3c7b7d185c9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/event.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f42f804ae6a145a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/import.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b60bf489e55a7c0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29afe1173a419458\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"521513f0e18cae86\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c85bce403feeabd8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/mode.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f4a5182fa08b252\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/__pycache__/mode.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cffab25540d84868\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keylist/mode.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2221e7bba4c2acf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/keysign.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfe1a86639617094\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/md.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b8d5179303f8fad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/pk.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"395fa2e08a633a28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/protocol.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5325351e8f70ab6d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcaa1a08c9d8086f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be41eebdc0f430d1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ce33c3e4ef7bf52\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/mode.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d93ad74a00dbdb5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/mode.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8bacffe338ddd90\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/notation.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f9b7a19ac365c3d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/__pycache__/notation.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c9619f14c383b82\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/mode.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"256f12aaa7de5fef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sig/notation.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ef19296fa9e70cb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/sigsum.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70d7e62897b0adca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/status.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b550c255e4f0b95\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5533bc6e678c7774\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c51ae588e0dad89b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ba9813a2b30b3c1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/policy.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38874b81948ef90f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/__pycache__/policy.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a8869514d56096b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/tofu/policy.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5945490da115451c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/constants/validity.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c85f99ee95897372\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/core.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90bf5df1c7e90b28\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/errors.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15d0e4c77cab703b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/gpgme.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e25c27443c21451\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/results.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95794df6e2a2b949\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"938043b0248daa59\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/gpg/version.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fb201b2c4ace12a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f69075e351d6cc2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de01b01058d84827\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ebe65244090cf34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/_hawkey.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d94efce98a76bdd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca224f92c29d469b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dd03da91902ab34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3c877ca98365962\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/hawkey/test/_hawkey_test.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b26a57089dfc2f99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65aca2f984440974\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3d4c0f434fba90c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1946f089d2a8140\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libcomps/_libpycomps.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"315ad0f6552385b2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afbf5c24a7c2e215\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba530fbf45e4ac5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc8f1a78938d28b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/common_types.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c5ab0d287f20484\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/common_types.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fd27a6ed735e1fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/conf.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a84fd8d1044a9eef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/conf.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acc4bbf4cfe607c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/module.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15d3ef29a9cfe857\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/module.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82e44b16f18cc74e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/repo.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a29d8243a78bbba5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/repo.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce375996deb6024d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/smartcols.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8051ae0c009b373\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/smartcols.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2c53b41dfb8d921\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/transaction.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d329d58812b5679c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/transaction.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93541b68370784fb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/utils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bdc2bf8c8b88b98\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/__pycache__/utils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec2484226e43fa78\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_common_types.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1df1680c65d83e81\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_conf.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b736fa0e1e114c61\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_module.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a7ff674910a5a4d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_repo.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd39100b82d454a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_smartcols.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"948703760f86b80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_transaction.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6803cc1bb007a07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/_utils.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62953ecc7ea4f604\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/common_types.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aaed8b80a353e49c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/conf.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fba0dba4c4a129ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/module.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a84ceee2571be9a1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/repo.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbe0c4dcdbbd9f4b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/smartcols.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9b60a45a862cfd9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/transaction.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd5580782e8602ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/libdnf/utils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df43bf63988bd07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm-4.14.2-py3.6.egg-info\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"973a97bc9c86ad79\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"362df84bb62fef0d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"145d80fefff73fec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11c3503433dc9eec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/transaction.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4f9cbc11e60abf8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/__pycache__/transaction.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89116c67da3d309b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpm.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"496eef9548d148de\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpm.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4c8301ff37ce8b5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpmb.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6980d9d19bc9c83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpmb.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96219629ab024515\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpms.cpython-36m-x86_64-linux-gnu.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"697f3af5dfb41f99\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/_rpms.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"950f12e1e6b4ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site-packages/rpm/transaction.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3f2080b16bb99ed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/site.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"add9f50ecbe54ea3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/smtpd.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c700b1fb934a5ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/smtplib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d23d0a176a5dd435\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sndhdr.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecbcfa011661a4b8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/socket.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a98f1e0fdda254e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/socketserver.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68ca0d1dee6f9cdb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b35de4c69d797a0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82b669352fc5c931\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43925327dbdf4c92\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ec6e10cf57a7e48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a2ec35f5d90e80a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c299a871a8710f66\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dbapi2.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"931ce04df6429c39\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"926a602fd796d534\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5eab26173ccfd5b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/__pycache__/dump.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ceaa325586f7d117\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/dbapi2.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d0e2ec1fc1d5e4a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sqlite3/dump.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27804533d3d22b09\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sre_compile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed0efb3e156baa41\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sre_constants.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d40fb9a36ac7ce2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sre_parse.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"555f727d381145a2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/ssl.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a919970545f68df8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/stat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7833e257bb8c6249\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/statistics.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d179a58d1b132bc0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/string.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e83a4c5cb65c89\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/stringprep.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77929ce212e69734\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/struct.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b09b3988f5a3e840\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/subprocess.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d157370fd07616c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sunau.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"219e0c3d7261f0ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/symbol.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e3bb658d99d65f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/symtable.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4de280a6f35944cb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/sysconfig.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f48aa3c0bd03a738\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tabnanny.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3459fa417292983\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tarfile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9446e16bec72a8d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/telnetlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59a60c5c76507699\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tempfile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4007db66884dba9f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82217a3fa2ebe98f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"611065f589447c38\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba99410aa29962a5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f53e045abd5272d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f5aa362e6d090cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9249c42cfd262244\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fee5a99a87b96a07\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"181a0cb10cda7a17\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d52ed44785bcee3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"357b0920dd4d7ad4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/script_helper.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25e6c60f6e31fde8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72dc4c30cb5027d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32ab61495be7f426\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/__pycache__/testresult.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d72ac3f7e1c2e76\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/script_helper.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0d6330c4a5954f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/test/support/testresult.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8abcd74ffa92387e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/textwrap.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"840cbe768ada4076\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/this.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92db61036a11038a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/threading.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"421ed2985f379f5c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/timeit.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9a1065dfba59533\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/token.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b99ba53a33affed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tokenize.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"996ec0459b57f1b3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/trace.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf6ea4d36a72ac9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/traceback.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6839624ba1c4a325\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tracemalloc.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"272b1b44a9bef603\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/tty.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e41a1ab6e5acf7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/types.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6b0ef57a3b1dff2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/typing.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38300d3c7c75abed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b08625437b39714\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__main__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e648448ebfeec04\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5aea5fd7032ac27f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"974e9a8ce4388194\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aec950c5271577e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35e7b1ee946e1c44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88b9c134acb52a7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/__main__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9c91fa006d865b7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ebe1c82a348b7ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab93cbeb03bba1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/case.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"784c89fba64e141c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eea2e977f2c52248\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"510d63799cfa6bfb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/loader.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a0f41fdd2ae8197\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14645c96ce7493c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac30f8210f73c57c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/main.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"903181b5c80708d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"866678f303499737\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4119d6d87074f306\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/mock.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecfd32d3a75d66ed\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c34955b5a286a3e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"deac7d789750c56a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/result.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8aa691697a9db7d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d65d02f01b8b56c2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a38ad2b1b5da8c5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/runner.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5014a6772545900\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da8c119213b7425d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5af4731c6320f05f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/signals.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e46aa588b39fe36d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8140b3e7ef821e6f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2b45ac812aa1014\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/suite.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34401c57e692f266\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9515ea8846066c7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93124ddb16c9d8ce\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6119c6a992c02fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/case.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69f5f99a9a34d14f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/loader.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d51279c990393803\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/main.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e9c5e35d6cb11f4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/mock.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32faa5d0b42056a0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/result.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62b8f076d6e2a1cb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/runner.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e722af786477840a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/signals.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"808ffe6116918827\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/suite.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf22d8acde485683\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/unittest/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"294e520909bd3dd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc69a06051c442ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84a6cb0286c9231e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"250184ddd1cc8718\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89fa937faac72855\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4368435b20f055e1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ed06aa477ca503b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/error.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"189ddd5166559a1a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6243061c7b4e7756\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de9bcf5913707c8e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/parse.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64f969bf5ceaa970\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3afc35534f9f3770\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53211a83ea1e5e7b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/request.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ab89e8b5abb1cf6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"238efeb107e0c834\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4fc4df4c7ea02ea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/response.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"928ced9aed65e559\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dac1b2e6480e76a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7914c3a5da27085e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/__pycache__/robotparser.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5feef07774faec8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/error.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e22a722619bc9fa7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/parse.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13cec3c080ff09ae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/request.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbf69bd3667e10ab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/response.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5fc5544b79c5208\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/urllib/robotparser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e783c3b8a5b9143\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/uu.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df1ec0b275ef8c7a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/uuid.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7671e45b5112dbf6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efc4bb77e90a51ba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__main__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12a2a76d760fa7f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c1e71fa91d9abb1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11a09be101e87560\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3d0b7eeee9da3b1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d542e9a59252d12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27b0a6149e2a3c87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/__pycache__/__main__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fa6f398bd2bcac0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/scripts/common/activate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55b16fe2af229458\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/scripts/posix/activate.csh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca7cb8832bb21f7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/venv/scripts/posix/activate.fish\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"985050ddd7b15c48\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/warnings.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2851bc780fd67c6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wave.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4577f110d1174de9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/weakref.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d2688f96bc836a3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/webbrowser.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88d856e3f70752ee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1004121692386ee8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb85968ee1cb1335\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cc729302115d91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa4e97173b656c2f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76ada7ff9974ee97\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eccc980331ee8438\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/handlers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61ff70517d0b3ce8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78ff00ca064a79a9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aafafbec4135728\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/headers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eda7e0dd1a35eeb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc455e99d0f38b93\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee99aa0879d00bd6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/simple_server.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"504bdd1197a8b72e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"371f523e301d90d9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d75b17842d0481fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/util.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bcea91ed87201cf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fff4f91f7a9d0f14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aec880ee728a0ea6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/__pycache__/validate.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffd8ba5ef96f3934\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/handlers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e2a0833acdc1e12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/headers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3a69b8c5f083425\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/simple_server.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55a33f99113363e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/util.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24e1522abad3221\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/wsgiref/validate.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a030531bc3e77741\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xdrlib.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"345b08705512c1c9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b510f9e72ede818a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d31c88c5afc00c81\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b71e272a2d43fdd1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8281a2f9ecff2afd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/NodeFilter.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a840197f39b0f9bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3179105573de10c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6ae2101ef852205\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a54ae192fd54e583\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/NodeFilter.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b343089d7ce9722\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44a959f8f488f1b9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7808ef85f3154ca\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3446f0a301f948e5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"949c963ebea5009b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83a2e1e97f5aaa6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/domreg.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54d574ce0a81be7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"776020e5e370f78d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d0a4c6f95d2d842\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/expatbuilder.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a45d033236becd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"462b618a79362074\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a3a0a2e020b091c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minicompat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"530be7132699c720\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2d8f867e33dca12\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f98af113cde08bd5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/minidom.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a16eaf7e4db6ffe9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62ade820d60bffee\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"961c11de12238643\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/pulldom.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b9ad7edb92c02e9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b24638f7c615925e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae1641912cfac3eb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/__pycache__/xmlbuilder.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14dc9cd2e648c106\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/domreg.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13abc8fc9ae8c337\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/expatbuilder.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eef9be02f398d6fd\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/minicompat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f9178c9ef5108ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/minidom.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70b5b45fc577bb94\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/pulldom.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51a9cb6c93b8506c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/dom/xmlbuilder.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bb4311fd71db03e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/ElementInclude.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d56ece8ed1cd06ec\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/ElementPath.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d787b4360fd5072\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/ElementTree.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3693b57f7bf13e45\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc6a59ebb572eadf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d7e041c9208e05b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d7eabcb47df244b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementInclude.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e62b3c1375c9f9\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61351cbb9fd0e37c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5eddfd2ecdfbd83\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementPath.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a8cb18e28b7aab0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d9b84de315a2998\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b26c6cc4df79f64c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/ElementTree.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9579d426ab63187\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9daa9b1f1b1f6c7e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a85c61cdb13c57ea\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2120b6a13c4679fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"124b009c171a1960\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fba265bd9889939c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/__pycache__/cElementTree.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"429a6fb51e7ec4b4\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/etree/cElementTree.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34a466e9b740215\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dba5bf548f36554a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"492bf595b8e38af3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a06a3d4dfb3ee09b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f03f8601d15105d6\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc321b2587f798d5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f385b3a85d0f469\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/__pycache__/expat.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e095f2e60ca2826c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/parsers/expat.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2990aba815449ee7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eafcb5dbe86239e3\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c96be19e4c0d0eab\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"207ed53507457a80\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"146696e98f65c1d8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b48b05f45c85857\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7d9b69412bd81ae\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/_exceptions.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2cbcda7cea473ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"472f02aad963eba\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4be9394e821555e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/expatreader.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c219d773f673a91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc8885ca6f4cf112\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd21b3bc05293143\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/handler.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f35ffe233f45c512\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f463cb04c7c009f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe095a6e3660584c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/saxutils.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4bacf04235cbca7\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26caa36c598d1872\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d01fff875a1c18f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab89aa3c8013be19\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/_exceptions.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13a886f83fd21cb1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/expatreader.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c80ccd83410dc9b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/handler.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6fbb8af361d309a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/saxutils.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44e4c3bf6e7b3b0d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xml/sax/xmlreader.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"850e3e36192e739\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"445d5a8861a6e25d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3b15fa271e77732\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1c0d073d4843b46\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c7317da89354a4a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b677302babecf1e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3846e86be2fb12f2\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/client.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a0020981ef08b38\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a371309e2f15667e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.opt-2.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b82d7276c33cda1f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/__pycache__/server.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e28148b50a1ba44\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/client.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0962e5130c1f51\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/xmlrpc/server.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8bd8f7cd638a6d66\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/zipapp.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"819ff0a184877e6c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/python3.6/zipfile.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4eefa13589197ddf\",\n   \"location\": {\n    \"path\": \"/usr/lib64/sasl2/libanonymous.so.3.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"363661d2134c7323\",\n   \"location\": {\n    \"path\": \"/usr/lib64/sasl2/libsasldb.so.3.0.0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d75d783ac1ac5539\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_access.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59130640a73cf852\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_cap.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e65be8ee574c669f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_chroot.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9734e3b3f235ea4c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_console.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14d0de02ac60cd4a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_cracklib.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3610110aba40285\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_debug.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3a4518d1df2589c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_deny.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"433b753d8c0ca827\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_echo.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf5cb0cf9d94eecc\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_env.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d26675b5dbb54c6e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_exec.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b3dcd544e3bce84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_faildelay.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a274f07db8638a8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_faillock.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65845d5fe328195c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_filter.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8862fbcdca9b501c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_filter/upperLOWER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0aaa229b986b827\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_ftp.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea9c992c0932ad87\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_group.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8c561ed933b66bb\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_issue.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eef23b4186fcffa8\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_keyinit.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e71941cc58f74b91\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_lastlog.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3771274f03df0e96\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_limits.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c588e4ae50c0200\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_listfile.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75f598abd35d6df1\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_localuser.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb63785cc75e403d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_loginuid.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38a67d419b153b14\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_mail.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfd611888b3a757e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_mkhomedir.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0466cbb17ea3de5\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_motd.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b27eb36470a5d54\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_namespace.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0faad9c904c03ef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_nologin.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db4a8fd024ac56d0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_permit.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f97a5c54e43fe402\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_postgresok.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7933f790bd358437\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_pwhistory.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aaddd641faab6d75\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_pwquality.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"425c396a4feebf84\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_rhosts.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe6cbaf60609562a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_rootok.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ac7e8e6e450a42e\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_securetty.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ba6a9d7d6c26e34\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_selinux.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"501c3eac1ceeaaef\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_sepermit.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3baae532876419c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_shells.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa54aac0846335b0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_stress.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b21c0678c0c74fe\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_succeed_if.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1b272ccb3ca4526\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_systemd.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a016b9e2dec06c9d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_time.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99d31bddecd4361d\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_timestamp.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ded0257134adf7f\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_tty_audit.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5e3482fbb583dad\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_umask.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f36e90f9740da6a\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_unix.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36699ebfdab5ef15\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_userdb.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e58e61726b4cc6c0\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_warn.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a37803c4a078965c\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_wheel.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"572a8cf3a8a8259b\",\n   \"location\": {\n    \"path\": \"/usr/lib64/security/pam_xauth.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6ae97a7c6351cf4\",\n   \"location\": {\n    \"path\": \"/usr/libexec/awk/grcat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7b0f39b557934f8\",\n   \"location\": {\n    \"path\": \"/usr/libexec/awk/pwcat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb0cd10a2c20a0f5\",\n   \"location\": {\n    \"path\": \"/usr/libexec/coreutils/libstdbuf.so\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba54fc21ae259142\",\n   \"location\": {\n    \"path\": \"/usr/libexec/dbus-1/dbus-daemon-launch-helper\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21086c76827b9a4c\",\n   \"location\": {\n    \"path\": \"/usr/libexec/dirmngr_ldap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc6bc64e188e7b48\",\n   \"location\": {\n    \"path\": \"/usr/libexec/getconf/POSIX_V6_LP64_OFF64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"929ef5709b2b9d71\",\n   \"location\": {\n    \"path\": \"/usr/libexec/getconf/POSIX_V7_LP64_OFF64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"371f0530eb79e228\",\n   \"location\": {\n    \"path\": \"/usr/libexec/getconf/XBS5_LP64_OFF64\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79fbefe27f2cc2dc\",\n   \"location\": {\n    \"path\": \"/usr/libexec/gpg-check-pattern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c51a8ea77b2e7d66\",\n   \"location\": {\n    \"path\": \"/usr/libexec/gpg-preset-passphrase\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8df45e1bfacd7a27\",\n   \"location\": {\n    \"path\": \"/usr/libexec/gpg-protect-tool\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"372555dccc1dad06\",\n   \"location\": {\n    \"path\": \"/usr/libexec/gpg-wks-client\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf894e0163c8d07b\",\n   \"location\": {\n    \"path\": \"/usr/libexec/grepconf.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b02a5ff33c3c462b\",\n   \"location\": {\n    \"path\": \"/usr/libexec/hostname/nis-domainname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecf5c0372abf16c2\",\n   \"location\": {\n    \"path\": \"/usr/libexec/no-python\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0c0a9c93ec042e3\",\n   \"location\": {\n    \"path\": \"/usr/libexec/p11-kit/p11-kit-remote\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82d6313935dbbb51\",\n   \"location\": {\n    \"path\": \"/usr/libexec/p11-kit/trust-extract-compat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a3f892e84a10bf8\",\n   \"location\": {\n    \"path\": \"/usr/libexec/platform-python3.6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67e7b298b50a76ba\",\n   \"location\": {\n    \"path\": \"/usr/libexec/platform-python3.6m\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1ffc483031e0120\",\n   \"location\": {\n    \"path\": \"/usr/libexec/scdaemon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1fbe0217da899d0\",\n   \"location\": {\n    \"path\": \"/usr/libexec/utempter/utempter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"761f8ece42fc0c6c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/addgnupghome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e8ce09f0416eeec\",\n   \"location\": {\n    \"path\": \"/usr/sbin/addpart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"842568e23b2f663e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/agetty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48960333983922fb\",\n   \"location\": {\n    \"path\": \"/usr/sbin/alternatives\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53783bf5cd320ee7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/applygnupgdefaults\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbee6cba1f7b4e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/arpd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d0dd74c62170cd7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/arping\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d478ba6192f99c4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/blkdeactivate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e9f1db6414536a9\",\n   \"location\": {\n    \"path\": \"/usr/sbin/blkdiscard\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8373f4263d590cb7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/blkid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2f90c8b706b2058\",\n   \"location\": {\n    \"path\": \"/usr/sbin/blkzone\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"782be75fa23b66bd\",\n   \"location\": {\n    \"path\": \"/usr/sbin/blockdev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49bcdc745ec7c584\",\n   \"location\": {\n    \"path\": \"/usr/sbin/bridge\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e07cc108bb30ac1\",\n   \"location\": {\n    \"path\": \"/usr/sbin/build-locale-archive\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aacac6ed046bb7b\",\n   \"location\": {\n    \"path\": \"/usr/sbin/capsh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e47d9f8d4c2815c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/cfdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"391c5de5ccc5e5cd\",\n   \"location\": {\n    \"path\": \"/usr/sbin/chcpu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"838674032f13f6e9\",\n   \"location\": {\n    \"path\": \"/usr/sbin/chgpasswd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2961b004decbf5ab\",\n   \"location\": {\n    \"path\": \"/usr/sbin/chkconfig\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e5c957e4d6a5bd9\",\n   \"location\": {\n    \"path\": \"/usr/sbin/chpasswd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc685765d3e7f251\",\n   \"location\": {\n    \"path\": \"/usr/sbin/chroot\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b7aef9271301b75\",\n   \"location\": {\n    \"path\": \"/usr/sbin/clockdiff\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f5c103f19727ab3\",\n   \"location\": {\n    \"path\": \"/usr/sbin/cracklib-check\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"496c50907421e72f\",\n   \"location\": {\n    \"path\": \"/usr/sbin/cracklib-format\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e9c06de5aa20cb7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/cracklib-packer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63f6009e9c03c036\",\n   \"location\": {\n    \"path\": \"/usr/sbin/cracklib-unpacker\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3e2c4370ee6b689\",\n   \"location\": {\n    \"path\": \"/usr/sbin/create-cracklib-dict\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5199973d9da1e0f6\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ctrlaltdel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62a47e2bf61680b4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/delpart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b850e3a514f5e3c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/devlink\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf0e9387377acf07\",\n   \"location\": {\n    \"path\": \"/usr/sbin/dhclient\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"339784b26545bc28\",\n   \"location\": {\n    \"path\": \"/usr/sbin/dhclient-script\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84d5e467ecfd2a2d\",\n   \"location\": {\n    \"path\": \"/usr/sbin/dmfilemapd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3893bfb8b5dc605d\",\n   \"location\": {\n    \"path\": \"/usr/sbin/dmsetup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5ae411e957fd4e2\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ethtool\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0f0a352fbd791da\",\n   \"location\": {\n    \"path\": \"/usr/sbin/faillock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bc3b97f01392dd3\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fdformat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a57406a7e8ad2d3\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34730ecf4fa33b7e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/findfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b361038296a4b6\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fix-info-dir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcf0df707b9896f5\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fsck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df2f911a721e0373\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fsck.cramfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee9620b6b524fe2a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fsck.minix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31e4d91bd6f6894d\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fsfreeze\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99b1092ab1f4a340\",\n   \"location\": {\n    \"path\": \"/usr/sbin/fstrim\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a5f1be8134c7d0a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/g13-syshelp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e88e887c58d5015\",\n   \"location\": {\n    \"path\": \"/usr/sbin/genl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4eb7dd890526bbe4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/getcap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7addb9fdf37ee\",\n   \"location\": {\n    \"path\": \"/usr/sbin/getpcaps\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42bef7793ab130db\",\n   \"location\": {\n    \"path\": \"/usr/sbin/groupadd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8165c0405ee1baf6\",\n   \"location\": {\n    \"path\": \"/usr/sbin/groupdel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77ab028e4f9f2623\",\n   \"location\": {\n    \"path\": \"/usr/sbin/groupmems\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d264dafccbe1298a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/groupmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79107eef756c370a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/grpck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9904177bfa8480\",\n   \"location\": {\n    \"path\": \"/usr/sbin/grpconv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f91e9616af8baf8\",\n   \"location\": {\n    \"path\": \"/usr/sbin/grpunconv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25b597780d557a31\",\n   \"location\": {\n    \"path\": \"/usr/sbin/hwclock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15f6bc2588f590\",\n   \"location\": {\n    \"path\": \"/usr/sbin/iconvconfig\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa600ec3567c46c3\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ifcfg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31ea3b35ba2bcc06\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ifenslave\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c98b3adc75efb22\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ifstat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73320cb11201272e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/install-info\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0b98eca7f022371\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ip\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2c1c5081076ea60\",\n   \"location\": {\n    \"path\": \"/usr/sbin/kexec\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7ad792346293baf\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ldattach\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"784b754277dbfe4a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ldconfig\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"261621f184732f5c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/lnstat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84b5422870cf44c0\",\n   \"location\": {\n    \"path\": \"/usr/sbin/losetup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69a75e0d766403f4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/makedumpfile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1f4341919ad33d1\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkdumprd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df7c3159e4d92440\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ab8cbab85d201a3\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkfs.cramfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79ef3afe5f8e9cf4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkfs.minix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a6dea21e36cc846\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkhomedir_helper\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0cb63ddbdb1acd1\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mksquashfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebba990330a4d899\",\n   \"location\": {\n    \"path\": \"/usr/sbin/mkswap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64ddb913bc6701a9\",\n   \"location\": {\n    \"path\": \"/usr/sbin/newusers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b17c7469308182e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/nologin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6743ce7cbbbb80b\",\n   \"location\": {\n    \"path\": \"/usr/sbin/nstat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9914a73334060dd8\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pam_console_apply\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38f7223254cf813e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pam_timestamp_check\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b02db04e493e7a7d\",\n   \"location\": {\n    \"path\": \"/usr/sbin/partx\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"642625a83bafd61\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pivot_root\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b68902453f9bbd5c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pwck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6375275de9ca6f7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pwconv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25f798442c64c646\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pwhistory_helper\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"412f3984a93ab109\",\n   \"location\": {\n    \"path\": \"/usr/sbin/pwunconv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f530dbdabd4c9ecf\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rdisc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eb7b4ad9d1115b4\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rdma\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6475c9811d8fa21\",\n   \"location\": {\n    \"path\": \"/usr/sbin/readprofile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2ed6d8d31cc7601\",\n   \"location\": {\n    \"path\": \"/usr/sbin/resizepart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8086e19d0256c8c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rfkill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b58392e0e49bb76\",\n   \"location\": {\n    \"path\": \"/usr/sbin/routef\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12c96d10ce044e0c\",\n   \"location\": {\n    \"path\": \"/usr/sbin/routel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de863f592fb01da7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rtacct\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a9a1e849429507a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rtcwake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edd1971a010cb81\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rtmon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"394edc589ba51bda\",\n   \"location\": {\n    \"path\": \"/usr/sbin/rtpr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3aba1b3eea08d210\",\n   \"location\": {\n    \"path\": \"/usr/sbin/runuser\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9da7e023002f2b98\",\n   \"location\": {\n    \"path\": \"/usr/sbin/sasldblistusers2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61ac9a33b0541c63\",\n   \"location\": {\n    \"path\": \"/usr/sbin/saslpasswd2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"790a6782c218bd7a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/setcap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6c7d6eb31548ce5\",\n   \"location\": {\n    \"path\": \"/usr/sbin/sfdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1163daa722c140ce\",\n   \"location\": {\n    \"path\": \"/usr/sbin/ss\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a967873b0079c3e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/sulogin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"253a9478edf7cdb2\",\n   \"location\": {\n    \"path\": \"/usr/sbin/swaplabel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64025d55e66cd60\",\n   \"location\": {\n    \"path\": \"/usr/sbin/swapoff\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bae667e57a8ba9e\",\n   \"location\": {\n    \"path\": \"/usr/sbin/swapon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8dce2266a5d8c043\",\n   \"location\": {\n    \"path\": \"/usr/sbin/switch_root\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ab8aa610c52286\",\n   \"location\": {\n    \"path\": \"/usr/sbin/sysctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf61b6cb122153d6\",\n   \"location\": {\n    \"path\": \"/usr/sbin/tipc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"297eccb32d5f12ad\",\n   \"location\": {\n    \"path\": \"/usr/sbin/unix_chkpwd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9153a78bbe7a0821\",\n   \"location\": {\n    \"path\": \"/usr/sbin/unix_update\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25f799b012ae4908\",\n   \"location\": {\n    \"path\": \"/usr/sbin/unsquashfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53fdebf63133c12f\",\n   \"location\": {\n    \"path\": \"/usr/sbin/useradd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da65a1f5f00a94b9\",\n   \"location\": {\n    \"path\": \"/usr/sbin/userdel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f384123a57ffd498\",\n   \"location\": {\n    \"path\": \"/usr/sbin/usermod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7609eeda1dd3f7d7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/vipw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee869e7aa4ab218a\",\n   \"location\": {\n    \"path\": \"/usr/sbin/vmcore-dmesg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcb96bea5c33fc48\",\n   \"location\": {\n    \"path\": \"/usr/sbin/weak-modules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bea5979ef0e5294f\",\n   \"location\": {\n    \"path\": \"/usr/sbin/wipefs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2013392c676aaaa7\",\n   \"location\": {\n    \"path\": \"/usr/sbin/zdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa765c5e777ee80\",\n   \"location\": {\n    \"path\": \"/usr/sbin/zic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90199af9a59e6aca\",\n   \"location\": {\n    \"path\": \"/usr/sbin/zramctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ade602d66044d956\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/assert.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5919b85698dd892e\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/bits2str.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88c0335b94d578f9\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/cliff_rand.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b48fa83ae4805eaf\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/ctime.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a0f501ec3869b87\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/ftrans.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63c0d49868a4d661\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/getopt.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb2021e33fd5a1ee\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/gettime.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20a78c962b662c17\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/group.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2399ec6f6190b49\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/have_mpfr.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa9f6c0cbb3a6f2f\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/inplace.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2272a257a4b96284\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/intdiv0.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da07d8781025bbc7\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/join.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42b6ad0581b9cbe7\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/libintl.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72f3514979e8e51e\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/noassign.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab3fa6b12de05e3\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/ord.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4f930b50c8ced67\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/passwd.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fabf9bf6792e6c2\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/processarray.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79c56fc7c08e8e2d\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/quicksort.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49ba63d1f970e77\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/readable.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"440389745bc32145\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/readfile.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6ca3c2edf503834\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/rewind.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4719a4d6f1117f7a\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/round.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24886f41dfdcb852\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/shellquote.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"556e34f80fe75011\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/strtonum.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ae9064ae07ed14c\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/walkarray.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"655f49d9f077a1e\",\n   \"location\": {\n    \"path\": \"/usr/share/awk/zerofile.awk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b272995369295298\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/addpart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd3598f98e4ea821\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/blkdiscard\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4001e4d56ee2418c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/blkid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a17ef36df568c7e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/blkzone\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf0f6460dffc3fdc\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/blockdev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ebbbd9ebf415df7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/bootctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d09fe80ce69f814\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/busctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f87c5ea3e2bf0cde\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/cal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7c15a557791725b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/cfdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9deb17a133fbb35b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/chcpu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e042c437dee66c2b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/chmem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5b42a546db3ab8a\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/chrt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ae9fc1e315868b8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/col\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e23cff080b1b48b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/colcrt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcef667e7b74df56\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/colrm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36b20fa60c2ce89b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/column\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"610625acce38589e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/coredumpctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36da13b774636a59\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ctrlaltdel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62e8e4ff9539c179\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/delpart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b1e6e6fa5494de6\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/dmesg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b28edd27b05d95e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/dnf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"757cc5e68fbd5037\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/dracut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad9cbaa32ade50f7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/eject\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b8445fb09869650\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fallocate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60f764a632861f38\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fdformat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f37bba675d106cab\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89e70932d041dd47\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fincore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a08428c67e943a4b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/findfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0e7d6c53a40dfa1\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/findmnt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f013240d1ab06be3\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/flock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a5b256022b77d59\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fsck\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c00728f1439abd7d\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fsck.cramfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b85a139ac99aed86\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fsck.minix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eca8810cf8f638bb\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fsfreeze\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"840687f069785faa\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/fstrim\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c58ec612962a87d8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/gapplication\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e42f39e309d15c69\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/gdbus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7b451034b68a525\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/getopt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82a78f91a76f3f6b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/gsettings\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93a20134def30f6f\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/hexdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"222695a713a1cab7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/hostnamectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbade992b259553c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/hwclock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1baa37c5128edaf\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ionice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fc0c0faf8fe8c54\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ipcmk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80ecc2a29a621e48\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ipcrm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7db25f232e5b0cc2\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ipcs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"748270d19b5645ee\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/isosize\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd1b0966972c2e56\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/journalctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c109d2553203fc\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/kernel-install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21bdb54062e085db\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/kmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d4bcdc54316b12\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/last\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3945dae075d743e8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ldattach\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cfd809fad8f80b1\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/localectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c1441f3c30c4278\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/logger\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b846333016387c8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/loginctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d56b4cdbc90d4579\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/look\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bce493090481869\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/losetup\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8b81586d786f9f7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lsblk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef161cbba20133eb\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lscpu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53934dbd96f44549\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lsinitrd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9f9723097374de1\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lsipc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"569135a25c4c87c4\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lslocks\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42acf809d2b67861\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lslogins\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99005946e84b2011\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lsmem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcaeecb35b254297\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/lsns\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bff1612bedfa128e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mcookie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1fcf347bcaeb402\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mesg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4510079a118e29\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mkfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"196c948c7d634b1d\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mkfs.cramfs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"403d51d8c4a39119\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mkfs.minix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54e32cde464464a6\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mkswap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2737c50837a045b6\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/more\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95399aa9ef2d7c58\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/mountpoint\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36d5189f363dda2e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/namei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44a738436e80628f\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/nsenter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bfdd9c3be81ca7d\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/partx\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c80fd60bc34a76ff\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/pivot_root\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45d0e58bc107cd32\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/portablectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd5513a0b63671c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/prlimit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7d27c2168e96e58\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/raw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b87e00d3e8f2e45e\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/readprofile\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7769814ba4aa43b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/rename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a378e35934afd95\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/renice\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6801f7a95ab201ec\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/resizepart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adc92a100b11fa8c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/resolvectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b626af5430d9acc9\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/rev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e689fcb6e346af16\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/rfkill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2571e17bcd10ddd9\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/rtcwake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f0cf55751c3c2d1\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/script\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5471d31c4ef4ffe\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/scriptreplay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d309a9b77d7d6695\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/setarch\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6e66625bfa9d615\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/setpriv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad552afc4425bc37\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/setsid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dddbc9867bbb9d2\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/setterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"450782e4c9c36e2c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/sfdisk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78854e1e5275e2d8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/su\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7331621ab2514e7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/swaplabel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4646973e1679d180\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/swapoff\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"520e6c55d4023920\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/swapon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26a0284a3ee07f2\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"137162cfec02980c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-analyze\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78f05ee059e19ca7\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-cat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"856a0c2f1b114292\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-cgls\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db28e8e4e9fe6b23\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-cgtop\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11e11538e527c438\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-delta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6885241f71a552af\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-detect-virt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e8dfcfaf4eecc5\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-path\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70685383ceb84717\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-resolve\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8bfe83e7b0d84ca\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/systemd-run\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9c766d3e737e96c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/taskset\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc8bb33181610a6b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/timedatectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f905985809f32931\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/udevadm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aea2f2454e4de7d3\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/ul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be697d06c0a22c25\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/unshare\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae0448f265d9b204\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/utmpdump\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bec2b806719c83f\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/uuidgen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9efdcaaebf6b4e35\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/uuidparse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac5ea8617809ffd\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/wall\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25de07c7b9c43133\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/wdctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2110a449920abae\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/whereis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e31001b56a0efcc8\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/wipefs\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5deeebb6b3ab75b\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/write\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57ecc2a80186d59c\",\n   \"location\": {\n    \"path\": \"/usr/share/bash-completion/completions/zramctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bedc7b04384711e8\",\n   \"location\": {\n    \"path\": \"/usr/share/centos-release/EULA\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab7b2b4e1f001a69\",\n   \"location\": {\n    \"path\": \"/usr/share/cracklib/cracklib.magic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb278a7e6c253a89\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/bind.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7e1ceab53a2fbb6\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/gnutls.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d008d5e9b4e20033\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/java.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57c6408d7c48e96e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/krb5.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f69ed83037c2d1f\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/libreswan.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d90a9d4c7b8ee50\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/libssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbf1db0cd66347a2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/nss.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac6acfc3a3898fe9\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/openssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddc981309a9d4c2d\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/opensshserver.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6acf771ab9826b13\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/openssl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67d08afc701136bd\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/DEFAULT/opensslcnf.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8e75d2d752608d4\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/bind.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ab6484220071cec\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/gnutls.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c37fa6674961051\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/java.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3638d22f1bd2e69f\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/krb5.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b15d8737ff257ef4\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/libreswan.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5168d2ea6e2a6cb0\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/libssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dc81d1ff1c13b68\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/nss.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"980bcd065e2837a2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/openssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e12dca281aedc039\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/opensshserver.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec62820fb64930d\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/openssl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55a4b8ee06c58b91\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/EMPTY/opensslcnf.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12f4e1254a79b9e6\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/bind.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1aeeb53ad2d24798\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/gnutls.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2b4060d52c70ef9\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/java.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ad9a1be1f2c76e6\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/krb5.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f46695f9f5baf2f4\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/libreswan.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c71e38dfa57e4cf5\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/libssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ce5d510139efa6c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/nss.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc9766ddcdab500\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/openssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fdc7f6a0a237e0bc\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/opensshserver.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29b0f6a50649a7b5\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/openssl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd0eda24ad4e61d6\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FIPS/opensslcnf.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3670d3a54ea5e62\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/bind.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"833900f7a28f330\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/gnutls.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3b3672eb7e1cdee\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/java.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87bace844700e099\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/krb5.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"420d3e89132f18a3\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/libreswan.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec142cfbd3a2461\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/libssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48406dabc4332fae\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/nss.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb5f39f7e0608bb2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/openssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58052824ffb8b70b\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/opensshserver.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c25feee2e6669df\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/openssl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcf5b99beb1f248\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/FUTURE/opensslcnf.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e318e8cf94597565\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/bind.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47e08191e217331c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/gnutls.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"588f9bfc2683c047\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/java.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5692f96848f87039\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/krb5.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cf3df530294b7c3\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/libreswan.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0586959252603fb\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/libssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55730ee0b391532c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/nss.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cb2040cbd828f75\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/openssh.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c50587c345cb07e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/opensshserver.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85d8fa4a4b8f1a77\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/openssl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9045e44223bd378c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/LEGACY/opensslcnf.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"423a99b3c1da161c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/bind.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df28a6423b152196\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/gnutls.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a19d89813c9326a\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/java.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"513acd6ae4b37468\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/krb5.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da4c3c1443ece11c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/libreswan.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7db65649507720a\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/libssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb28ee4d14288b7e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/nss.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb1962bed87fa96e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/openssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dfe5bb7e5f7edac\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/opensshserver.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9eb1e57b6309825\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/openssl.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e126f2d1a5d277\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/DEFAULT/opensslcnf.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"925e39c3f5d2e046\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/bind.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e00f8625ed61b982\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/gnutls.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecdd1e547dbfe656\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/java.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47a5cb49ff97e749\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/krb5.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48ec4a15ace5dddf\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/libreswan.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21f4154cebe71f44\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/libssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9768717aaf145bca\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/nss.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86e8df31c34080e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/openssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c4cbfb8aac26e0c\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/opensshserver.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d08e2efd1aed822e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/openssl.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a8a621ff929d1c9\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FIPS/opensslcnf.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80f47c5c8d0d511e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/bind.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e09ff0247f99f168\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/gnutls.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a60bef9da90b5aeb\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/java.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e990f2b9f30335a\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/krb5.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc1a1dde4d328fb5\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/libreswan.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b03bd34e19d132e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/libssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cbf8459fd0a25b5\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/nss.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cad9b201de1c88eb\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/openssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fe14ea604c510d6\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/opensshserver.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9766c53c26b6e05b\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/openssl.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1744140e3fdf04a1\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/FUTURE/opensslcnf.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a819077e4955365\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/bind.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"750be3820d6b7eef\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/gnutls.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d62154edf917576\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/java.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b3331a4e7ed4647\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/krb5.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5e61b02de677742\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/libreswan.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c00fa34330f918a9\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/libssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"255b3b02a034a1c0\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/nss.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee46813aef1227ac\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/openssh.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c92ef15dda90988\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/opensshserver.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"681c02b01c7146ad\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/openssl.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acfb7bb0c6babe11\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/back-ends/LEGACY/opensslcnf.config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95aa226804991628\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/default-config\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17b6320996ca917b\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/DEFAULT.pol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa048051bc15d0e4\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/EMPTY.pol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fc15781b275a7ab\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/FIPS.pol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2e122f03edf7896\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/FUTURE.pol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"886f7f821f24b4fe\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/LEGACY.pol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4893a4dac93895aa\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/modules/NO-CAMELLIA.pmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"986c9687b83cd89b\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/modules/NO-SHA1.pmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"738e5865283a7041\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/policies/modules/OSPP.pmod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"730e2be32c2e46fc\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/__pycache__/build-crypto-policies.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae7ac710b659662f\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/__pycache__/build-crypto-policies.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b30369b55b26991d\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/__pycache__/update-crypto-policies.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71b9a04f6b58f01e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/__pycache__/update-crypto-policies.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f9000ad389ae8da\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/build-crypto-policies.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b092f16556bb007\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7ea3b50cee62ab9\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae017ea13fc7c90\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ac2bffa453d7bf3\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/cryptopolicies.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7aa48f1ba7dc62d8\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/__pycache__/cryptopolicies.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f315cd264a168193\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/cryptopolicies/cryptopolicies.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2066739eb1b44d2a\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3114dabd4e747b7\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ba5c0c63d72fa58\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d521621614dea8c2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/bind.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3ffbb9292b3c81a\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/bind.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"294de5952cc6ea7b\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/configgenerator.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b6e1a6da64623d1\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/configgenerator.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e95af542cad60862\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/gnutls.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"832320814aceee86\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/gnutls.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be0864572222cbc2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/java.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"266d3b5c6b74bc74\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/java.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebd0d9bbaa060bfb\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/krb5.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e51d28db2197d5c8\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/krb5.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc4ad6b9a537baae\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58bc6ec21cebce7e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libreswan.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"156a0e587e87c7f3\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libssh.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e3c8135cfb51eab\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/libssh.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6dd2e680574c078\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/nss.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20ee778e713fae57\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/nss.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac8308ecae210ab7\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssh.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9eeff618c9bb393\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssh.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3dac90fe0f0cb5c8\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssl.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9e991f910066b87\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/__pycache__/openssl.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c60fd921a1df5a2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/bind.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42061c2316356d74\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/configgenerator.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d013b44c3b00dffe\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/gnutls.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94943eeed3227d1e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/java.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3f74b19927334c4\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/krb5.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8751223f9ff9598d\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/libreswan.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f1766ba6d84d454\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/libssh.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4f496506a96935d\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/nss.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9c8cda9e3a5987e\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/openssh.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8982b99810ef6f2\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/policygenerators/openssl.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ceec933dd7219347\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/python/update-crypto-policies.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"495701e514255965\",\n   \"location\": {\n    \"path\": \"/usr/share/crypto-policies/reload-cmds.sh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf0b50a0c64129c2\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/session.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a721f285025e556e\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.hostname1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1029c8f5edf346cc\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.locale1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a574541151708bb\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.login1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b97a681c0dc33134\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.portable1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b381c01b739fd61\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.resolve1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b346ff8a8844f4bb\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.systemd1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be78ea553882a8f2\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system-services/org.freedesktop.timedate1.service\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a4cf9971ae029e7\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a44f6001a4f3ec7e\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.hostname1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd4c669a539a1298\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.locale1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fabed572960142a8\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.login1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a67afefad276dc62\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.portable1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75c54c723c537d7f\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.resolve1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29037d1ebc084dc1\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.systemd1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1be3b3f6e16a9218\",\n   \"location\": {\n    \"path\": \"/usr/share/dbus-1/system.d/org.freedesktop.timedate1.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d6e3c9a80f8e2a0\",\n   \"location\": {\n    \"path\": \"/usr/share/doc/xz/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a2df0c739458823\",\n   \"location\": {\n    \"path\": \"/usr/share/doc/xz/COPYING.GPLv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4a1cae7f12aa0e4\",\n   \"location\": {\n    \"path\": \"/usr/share/factory/etc/nsswitch.conf\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b58b45a2fd84655\",\n   \"location\": {\n    \"path\": \"/usr/share/factory/etc/pam.d/other\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7785f87a7b35c415\",\n   \"location\": {\n    \"path\": \"/usr/share/factory/etc/pam.d/system-auth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5444e491cd14c7b\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37cfbb5fecd2faf9\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d2001ee4da132c0\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a69e748e3e8b545\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__init__.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4606cf8cd94cc8e4\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/__init__.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"654c4c3a7574b9dc\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/__init__.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e20ef02a6b321e8d\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/printers.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f0193af6f22f643\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/printers.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7f0a15e12405a30\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/xmethods.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ed14cde79bca29a\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/__pycache__/xmethods.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c74a0e1bfc30bf\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/printers.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3159f1790db06632\",\n   \"location\": {\n    \"path\": \"/usr/share/gcc-8/python/libstdcxx/v6/xmethods.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eccbd7a76170507c\",\n   \"location\": {\n    \"path\": \"/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.opt-1.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aa14678920f9211\",\n   \"location\": {\n    \"path\": \"/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.pyc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a5ba996a1968080\",\n   \"location\": {\n    \"path\": \"/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.25-gdb.py\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2044d677f8e48f7\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/distsigkey.gpg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea1e1eb4265b991c\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.be.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dae9e4ee47809fae\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.ca.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab5c7dc52d5e9f88\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.cs.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f81ce63df537819f\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.da.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4f87b036a5c44a\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.de.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86be63a721e3486a\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.el.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b82e3550b623b6af\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.eo.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d6572492ad68e75\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.es.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c7e6c9e679393e0\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.et.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"386fab980f8a401b\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.fi.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd522751231f0e4c\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.fr.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb42e8e14ca00135\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.gl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60bd10b568a05945\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.hu.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"772bf522feb66d26\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.id.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b03c688f4d2d7e0\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.it.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61e9a2f345bfef0b\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.ja.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"346f70d98116100b\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.nb.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ddbd37d406a226f0\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.pl.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c96ad7e90cba6b6a\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.pt.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45643b5b435dde0b\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.pt_BR.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6289dc8f434f23d0\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.ro.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c52e4f2e14ab1961\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.ru.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c011a8c2d1e917d\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.sk.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc3a38032284d825\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.sv.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f89abfab129d668\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.tr.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d7584cec35246cd\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ed7dd2b76327da7\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.zh_CN.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"354d874407f6f6f7\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/help.zh_TW.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63cdc89fd8f0d88b\",\n   \"location\": {\n    \"path\": \"/usr/share/gnupg/sks-keyservers.netCA.pem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da75925ea580455\",\n   \"location\": {\n    \"path\": \"/usr/share/info/dir\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e177cc1b95579ce\",\n   \"location\": {\n    \"path\": \"/usr/share/info/dir.old\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77a5383bfdebc38d\",\n   \"location\": {\n    \"path\": \"/usr/share/libgpg-error/errorref.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a0cb0b1b411dced\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/acl/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e132ef4908f243cd\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/acl/COPYING.LGPL\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d75f8ac5bd14c89d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/audit-libs/lgpl-2.1.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b6f3aad1dda6041\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/bash/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd8e36e1857144be\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/bind-export-libs/COPYRIGHT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5483154b96966cb2\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/binutils/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e05c15c05ad0b1d9\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/binutils/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af00928ac2c989fd\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/binutils/COPYING3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ed8463444063c5\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/binutils/COPYING3.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8678a1faf5777b33\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/bzip2-libs/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f77121618048c9a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/chkconfig/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1362874961d78f5c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/coreutils-single/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"546155ce8f5b1d41\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/cpio/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53bd16023e7b941d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/cracklib/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"676f7cce87a3e341\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/crypto-policies/COPYING.LESSER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9583e152e114dfa3\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/cryptsetup-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6cac1ddf34adeee\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/cryptsetup-libs/COPYING.LGPL\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b2dab201526d841\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/cyrus-sasl-lib/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94fb0e0e8e679ca\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dbus-daemon/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66c2a843bf6c91d9\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dbus-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17d29a16926145c0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dbus-tools/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b4a990a6c3fa29\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/device-mapper-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aa62a0d7a933f33\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/device-mapper-libs/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bdc0c887ba0d5e5\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/device-mapper/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebf56f4da6a8535d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/device-mapper/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61affb02f63895b7\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dhcp-common/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ba8769b2a814b34\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dnf/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2848729239b361c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dnf/PACKAGE-LICENSING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25a8496f048c56bb\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dracut/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff5155867a5e880b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/dracut/lgpl-2.1.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c5fc125ae14fd5e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/elfutils-libelf/COPYING-GPLV2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fdcdd9fba346ad8\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/elfutils-libelf/COPYING-LGPLV3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8b2f30619c059d7\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/elfutils-libs/COPYING-GPLV2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3783365a0cbec0b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/elfutils-libs/COPYING-LGPLV3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35bec70da48b6a40\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/ethtool/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63a99593f853da4e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/ethtool/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9eca3f6785b2d200\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/expat/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe5846510a7f1e28\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/file-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a589551f7e26dd3\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/findutils/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"beff77de4e1eddc1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gawk/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0170d1e8e68d26b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gawk/LICENSE.BSD\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"473857c4630d20d7\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gawk/LICENSE.GPLv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a019ed0f9fbce728\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gawk/LICENSE.LGPLv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26b252b3bf3155b8\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gdbm-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf5f0ffc6fc629\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/glib2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6d30cba89e1d5b9\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/glibc/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3abe7886f43e8ec\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/glibc/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bb3e80c72d47777\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/glibc/LICENSES\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f112c7ff2aa9dcec\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gmp/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cc36c5680941939\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gmp/COPYING.LESSERv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4073ad90c2f9bdae\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gmp/COPYINGv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df62150021ed8824\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gmp/COPYINGv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80251d78513d688c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gnupg2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53981bcf37987a58\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gnutls/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbfc7d9ae9c958c0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gnutls/COPYING.LESSER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6fb8d8fec8ec5a1d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gnutls/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fde7813bbc6ba798\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gpgme/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eebead59ea14619e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gpgme/COPYING.LESSER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7d44a37371bbc84\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/grep/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1594581f772eb80e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gzip/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bdef97a3ba36f6b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/gzip/fdl-1.3.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbfd17299feb9cec\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/hostname/gpl-2.0.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8eb86257f36bb4f\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/ima-evm-utils/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c4086e67eb2b78e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/info/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5701a84e79c41e66\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/ipcalc/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5807ee77ed1f2e3\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/iproute/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c70fa93ae1def9a0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/iputils/bsd.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3c2ca8558595e80\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/iputils/gpl-2.0.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b1b425d15fad0f8\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/json-c/AUTHORS\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22f90217f35ea901\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/json-c/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c267bfaa57a98a79\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/kexec-tools/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"181733915118b1b7\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/keyutils-libs/LICENCE.LGPL\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cde3879d593441ed\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/kmod-libs/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6740876c9e21a81a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/krb5-libs/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75f44866805677d5\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/less/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3117cdd00fd22b3a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/less/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e9f70afc163ae7a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libarchive/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1048aeea3018417d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libassuan/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"875b02c5994e4627\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libassuan/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc7f54a0b43fdf\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libcap-ng/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3f92588c1f6bd76\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libcap/License\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"def36e674a90b06a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libcom_err/NOTICE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99bdaccbca00a357\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libcomps/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"418605741fe54ae8\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libcurl-minimal/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87ec88d0e1441f36\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libdb/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7ebfe3c205d97aaf\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libdb/lgpl-2.1.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cca525331bf4864\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libdnf/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a16b10770ee6135c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libfdisk/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"515c36093a5d2ff4\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libfdisk/COPYING.LGPLv2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"114256d8b8d1e0f1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libffi/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aea3ae08b5115229\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcc/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"851fdab1699a1af5\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcc/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"652dc692798db75d\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcc/COPYING.RUNTIME\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"626e8e97e0a13c27\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcc/COPYING3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46f2f239bc9df7bf\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcc/COPYING3.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a126eee445b1bf6f\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgcrypt/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87ef850359f856ed\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgpg-error/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d47fed1d0f1e8e94\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libgpg-error/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"460332a0a15ce183\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libidn2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c8a20de3e2c4132\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libidn2/COPYING.LESSERv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcdf711196e2745f\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libidn2/COPYING.unicode\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f97f234f38ac91bc\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libidn2/COPYINGv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53f4b784be4dd4d3\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libkcapi/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec1196ac6b3d1d8b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libkcapi/COPYING.bsd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f77e955152f3d1b6\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libkcapi/COPYING.gplv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44414b09f756e71c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libksba/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4c2d2980691a01b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libksba/COPYING.GPLv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9531d0fb7dc3308b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libksba/COPYING.GPLv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4763d179bba6bf25\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libksba/COPYING.LGPLv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b87e1caf5bfa840\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libmetalink/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1dd9fc859555ea0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libmnl/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35171b039f521a1e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libmodulemd1/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1e36eae5adba2b9\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libmount/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33d847c5c285254a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libmount/COPYING.LGPLv2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"285d20cd29441b3\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libnghttp2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcefbbc64dba27e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libnsl2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17b80418ab77d984\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libpcap/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d830de1be518713c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libpwquality/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2511163dec631820\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/librepo/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b21c9d8a8ad39735\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libseccomp/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"225fdc0f9bb02e21\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libselinux/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"423799d6a68c76bf\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsemanage/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2098e90a274301\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsepol/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"546e68a362fb27d1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsigsegv/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d86cfe7c9f10689\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsmartcols/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67a2aebece96d68e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsmartcols/COPYING.LGPLv2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38da219d74a5257e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libsolv/LICENSE.BSD\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fa20ee6bea32fef\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libtasn1/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c09095e855a024f6\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libtasn1/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8181ba87b0f2f7c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libunistring/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd5327260a58bf26\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libunistring/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e2e89c87fe421ac\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libusbx/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"822c3967b68ec464\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libutempter/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5e1249f3fa6a34e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libuuid/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6ba846604305231\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libuuid/COPYING.BSD-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac1c965efb2a741b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libverto/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43231e669d8bd777\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libxcrypt/AUTHORS\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b9cdb5f2a1ab664\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libxcrypt/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a6f5c42d4faf1a2\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libxcrypt/LICENSING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"410846bc87b4e0e1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libxml2/Copyright\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9dc12bad15719cf\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libyaml/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4cdb49bfcba2e39\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libzstd/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e1ef9f0737a76d5\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/libzstd/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b996543463882976\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/lzo/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"617054de9b182683\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/mpfr/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e17a7f2a1a5aa035\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/mpfr/COPYING.LESSER\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ef98569f68dd569\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/ncurses-base/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72fdfb2f4c4326da\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/nettle/COPYING.LESSERv3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f514bb35c261ba0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/nettle/COPYINGv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"332e54562c4894d9\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/npth/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89b028d62a783d44\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/openldap/COPYRIGHT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68504196ae36da50\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/openldap/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1494e4bb3fb6ee17\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/openssl-libs/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"790474f9efcafda0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/p11-kit/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78a08ffb603d6252\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pam/Copyright\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a654d4e62b9aa05c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pam/gpl-2.0.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7287ff8791e50a8\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pcre/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"333ae005709d7322\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pcre/LICENCE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bccd50743349c8d6\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pcre2/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b22e0d709bced60\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/pcre2/LICENCE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0fd5d1d7d01560\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/platform-python-setuptools/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5b95e236e981ca6\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/platform-python/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bd5e169e54943b0\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/popt/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b44f6290a0cc8d2a\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/procps-ng/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a738100662536aae\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/procps-ng/COPYING.LIB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a916186428038f12\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/python3-libs/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c08c800c04f3908\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/python3-pip-wheel/LICENSE.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c05abd12c170412\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/python3-setuptools-wheel/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7856e689c100c172\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/readline/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f79667aa8e1309ec\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/readline/USAGE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c26d7978f4f94274\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/rpm/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d9d32e4250a7f0b\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/sed/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92a069821e56246f\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/setup/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8e2249307856597\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/shadow-utils/gpl-2.0.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98adc61a500fe6e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/shadow-utils/shadow-bsd.txt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24dd0d18e394e5df\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/systemd/LICENSE.GPL2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57e5cfcf3f291f52\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/systemd/LICENSE.LGPL2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d878ed1b48378245\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/tar/COPYING\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"969494196876ea91\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/tzdata/LICENSE\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c410427d382aa13e\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/util-linux/COPYING.BSD-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e17f271c80bb5a5c\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/util-linux/COPYING.GPLv2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9041d9aac6bdbb58\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/util-linux/COPYING.ISC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81a7ac9545ba0b87\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/util-linux/COPYING.LGPLv2.1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ee6882bcc676cf1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/util-linux/COPYING.UCB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a04f27ae1c37e5d1\",\n   \"location\": {\n    \"path\": \"/usr/share/licenses/zlib/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"40d284f3d70b187b\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_CA/LC_MESSAGES/glib20.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b430a2388a2f858e\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/Linux-PAM.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f1ef7ee24f3c065\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/chkconfig.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d723ce9fdca40c5\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/dnf.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42ad78bbf025c53b\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_GB/LC_MESSAGES/glib20.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84d45274fe5754de\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48d148ac73debeca\",\n   \"location\": {\n    \"path\": \"/usr/share/locale/locale.alias\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd3f45ecd057584a\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d2f004d168e6f7f\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3eee6bc2fb5e828e\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/dir_names_3_10_to_3_13.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d27e16abc9b2ef8f\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/dir_names_3_14_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53ae8de07dd1ce31\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/keyring_3_10_to_4_3.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffd8bec1420d8df0\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/keyring_4_4_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5197240a31ef2143\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/proc_names_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e34dcd6d5ca02d\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/tcp_sk_buf_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55ca3b588a7faa9a\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/udp_sk_buf_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"469a5af720129984\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/unix_sk_buff_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdb8d3d624accb26\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_net_buffers_3_10_to_3_18.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"509ce2c7ec90dc1b\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_net_buffers_3_19_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86a50cba68cd1f5b\",\n   \"location\": {\n    \"path\": \"/usr/share/makedumpfile/eppic_scripts/vhost_scsi_buffers_3_10_to_4_8.c\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e15389023a50531\",\n   \"location\": {\n    \"path\": \"/usr/share/metainfo/org.fedoraproject.LangPack-en.metainfo.xml\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbe787e5e980c15\",\n   \"location\": {\n    \"path\": \"/usr/share/misc/magic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"530e6440837e4330\",\n   \"location\": {\n    \"path\": \"/usr/share/misc/magic.mgc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a33882b65f600f1\",\n   \"location\": {\n    \"path\": \"/usr/share/p11-kit/modules/p11-kit-trust.module\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"618281aa2b0ca108\",\n   \"location\": {\n    \"path\": \"/usr/share/pkgconfig/dracut.pc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"153bf6ec23311d3e\",\n   \"location\": {\n    \"path\": \"/usr/share/pkgconfig/systemd.pc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f22b812476212afb\",\n   \"location\": {\n    \"path\": \"/usr/share/pkgconfig/udev.pc\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"717f3b720ffa4e62\",\n   \"location\": {\n    \"path\": \"/usr/share/pki/ca-trust-legacy/ca-bundle.legacy.default.crt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17dfb071c5183ad6\",\n   \"location\": {\n    \"path\": \"/usr/share/pki/ca-trust-legacy/ca-bundle.legacy.disable.crt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b4575a42d19b076\",\n   \"location\": {\n    \"path\": \"/usr/share/pki/ca-trust-source/README\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef2874da26dacdbd\",\n   \"location\": {\n    \"path\": \"/usr/share/pki/ca-trust-source/ca-bundle.trust.p11-kit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b68fc75c22967ffd\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.hostname1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dda62583e67af5ae\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.locale1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84d92ded2fd13f3a\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.login1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38364f35836eed59\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.portable1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79e353e0e11b470d\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.resolve1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed15b2fe71ca5f12\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2db4bad8dfe1f738\",\n   \"location\": {\n    \"path\": \"/usr/share/polkit-1/actions/org.freedesktop.timedate1.policy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"212f237d54b01b03\",\n   \"location\": {\n    \"path\": \"/usr/share/python3-wheels/pip-9.0.3-py2.py3-none-any.whl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b7d0ce7ed3b5059\",\n   \"location\": {\n    \"path\": \"/usr/share/python3-wheels/setuptools-39.2.0-py2.py3-none-any.whl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb1c19f93f68ca8a\",\n   \"location\": {\n    \"path\": \"/usr/share/systemd/kbd-model-map\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b181cf2fd59678ec\",\n   \"location\": {\n    \"path\": \"/usr/share/systemd/language-fallback-map\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3279bc24052e7013\",\n   \"location\": {\n    \"path\": \"/usr/share/tabset/std\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eab54dc8c2d2f62\",\n   \"location\": {\n    \"path\": \"/usr/share/tabset/stdcrt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27ca62356400910a\",\n   \"location\": {\n    \"path\": \"/usr/share/tabset/vt100\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd268ecfc1d7f61d\",\n   \"location\": {\n    \"path\": \"/usr/share/tabset/vt300\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"805c8daafa6c812\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/A/Apple_Terminal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"552f9be25d9f436a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/E/Eterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90a23be2a06e37dd\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/E/Eterm-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6e252c83a7ff1c8\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/E/Eterm-88color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b04f59ecd2b6cc3c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/E/Eterm-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ad59b09da47dbd2\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/a/ansi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43449e6540b2947f\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/a/ansi80x25\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76d38d66861147aa\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/a/ansis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"331ffc46a6a51fe3\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/a/aterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d00dafaca7e34950\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/b/bterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"710fd3ee41374542\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/c/cons25\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2caa17ef055527d\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/c/cygwin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"167016275e6b1fc7\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/d/dumb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84b0d908053e6423\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/e/eterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb4581ab40bd7ead\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/e/eterm-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a98b440d4b0271f\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/g/gnome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ae5cae1887e3980\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/g/gnome-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e45ca1c567102244\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/h/hurd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d52cce9ae9dee700\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/j/jfbterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71fdc26d74e47dd4\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/k/kon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e7a9bca91b8f1aa\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/k/kon2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9933b247da7443e4\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/k/konsole\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"760b12d1edf5c27a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/k/konsole-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24f98f4ee6c3fa59\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/l/linux\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51dad9555a92f983\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mach\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23300889d6b0c9cb\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mach-bold\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3015528f38dabb2f\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mach-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59846523bed6e4b9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mach-gnu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b8a546aad358d26\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mach-gnu-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d15a7c8d9f6aa768\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mlterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0b694f865652eb7\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/m/mrxvt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f235c47e08a268bd\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/n/nsterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d07990dc040ac55\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/n/nxterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9440362002b7e48c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/p/pcansi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b450005096af9103\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/p/putty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8af0745534ce3b3\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/p/putty-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48ad4a7d0c233502\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16e40f238e7cdbf9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-16color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74a39affb52f12f9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"725e9f1b0a9a6fd0\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-88color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b205aca030c0fa3\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-basic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c979dc7c237477b\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adc16aca51e5a6f1\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-cygwin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f96e668b081df4bb\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-cygwin-native\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"106f2e0910f226ab\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-unicode\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29584b0743f7bc3\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/r/rxvt-xpm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48292d0e5d3623fd\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b03d822b5b51199a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen-16color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3404e7a95f61813\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18f5c89553667093\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.Eterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99bdbacd4a688564\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.gnome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"824050574e19c076\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.konsole\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7502c3af1c4005f9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.konsole-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2693cab42013e1d\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.linux\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99bba1d5e33d22a5\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.mlterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2786ac3772281852\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.mlterm-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8582d51bfe3e840a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.mrxvt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3bef0dc992c6999\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.putty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16e0e265bffe08f7\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.putty-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e1acccb0a10dcaa\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.rxvt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea69f39cff564151\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.teraterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5778c3a1de19009a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.vte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3d8301d97a590d6\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.vte-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27c3ace8258467b9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.xterm-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef9978fb8a835205\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.xterm-new\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eabd73674e17bd17\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.xterm-r6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1339692d42cee296\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/screen.xterm-xfree86\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a3e6f01e3ef0468\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/st\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e89093b7f895773\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/st-16color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5083eb26ad265019\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/st-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"973fbf55e4e933ad\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/stterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eda6d2fbacfa059\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/stterm-16color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7e3fcf81dc78ab6\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/stterm-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4144f75e8dcf702\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/sun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bf5f360ab8a6fdd\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/sun1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfc14fd342847806\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/s/sun2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62ecdaf3b9b49193\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/t/teraterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbb8f0c33ef4931e\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/t/teraterm2.3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f355a8b7296fbe9\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/t/tmux\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88b949b74fa219b0\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/t/tmux-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8df23672a2baf130\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vs100\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ae30b299b2dde58\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt100\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b291b2ce47910ec0\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt100-am\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22ad09e7a3dfa63\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt100-nav\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"126340e3fb0869bf\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt102\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e66ff5024ad44cc2\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt200\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dca6db3ca670237\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt220\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad02a85e70c56b62\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vt52\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de7d0e94a3909b0a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a529218aa5457af5\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vte-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65c2d29725f513d\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/v/vwmterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9c922fdc723db8e\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/w/wsvt25\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6229d3160441329\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/w/wsvt25m\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1222dd2c71818c0b\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xfce\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ad054607abd4866\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97839ff12a1ca450\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-1002\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"470ec5773c9f840e\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-1003\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b42b65d0774d995\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-1005\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c6800d23a486637\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-1006\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2e97b8da67b13a4\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-16color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac7cf93ff6792aad\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-24\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"849591930d6dab45\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-256color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f61f5e49cd82582\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-88color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19c24dab38c86406\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-8bit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86c5b56f123d8f50\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-basic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb048b4b158e3bbb\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-bold\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42ba14c8a8ac1f2a\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-color\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a2c7f04048aeb47\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-direct\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5238215f2e2b4fb8\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-direct2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"299dc0d4eaaeedb\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-hp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5841cdb2d6b692c1\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-new\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ed75f621f5694a7\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-nic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc5a2f8b4b71c6be\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-noapp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3745c4468589fa17\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-old\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"572737ac4e8bd419\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-pcolor\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"838dba3f7a2f026c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-r5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8e5cf61ea12658c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-r6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4749963858c86f12\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-sco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae643ef63d70cc10\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-sun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe784ff1e58c3bcc\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-utf8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a2e45d3ee2a8a2c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-vt220\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6af7cd3de8aa9e06\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-vt52\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b516a8c3af03fafd\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-x10mouse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f0814336aa314a4\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-x11hilite\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf2c00768475d02e\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-x11mouse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afc17b50e0276a85\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v32\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3da474226d1c551d\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v33\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff2aa9c35f11c144\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v333\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"733203c9e00a4ead\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v40\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9abee347cb72520\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v43\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30baf4029193994c\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xf86-v44\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19805c1ca55f7407\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xfree86\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fb9c91b7cbb0517\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterm-xi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a28455cf92661da\",\n   \"location\": {\n    \"path\": \"/usr/share/terminfo/x/xterms\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4cfb69938335ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Abidjan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4749f0ba1f54a78b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Accra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34b55373435f48bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Addis_Ababa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9933095c0d9a1fcd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Algiers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0f690a3c14ffd70\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Asmara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"646823ae7ab973f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Asmera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43fc5d5631e33fd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Bamako\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13e33cfef370e22a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Bangui\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"393a164193440eda\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Banjul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd7318321fb40c09\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Bissau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3291b48f72640c8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Blantyre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49faa860393b57f0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Brazzaville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99cd527ea91c338e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Bujumbura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"feefd3a1222e1e97\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Cairo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef059b728e0895bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Casablanca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c291ea7858b02f1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Ceuta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eed0899318a14073\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Conakry\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c03dd6433ff931f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Dakar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a043619ec30fd2e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Dar_es_Salaam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee771acbc0911b95\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Djibouti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"716b9d1f94f37fbe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Douala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"529340abf7f920e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/El_Aaiun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"380da47fec74bc8e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Freetown\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"485f4c198cb399d5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Gaborone\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"375a3d4503881349\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Harare\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67d0fd1ea6c8a6c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Johannesburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7791672634774ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Juba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c22a5b61c3f899e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Kampala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39e0a483c7d082fe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Khartoum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec518dce057dc243\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Kigali\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8c96babed4dc1b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Kinshasa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f28d4defee45108b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Lagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1e815da45970c5e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Libreville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74816317441cec8c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Lome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f37b1fae7707755\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Luanda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ff687d0a2e300e3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Lubumbashi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a0e33c678c56bf1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Lusaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d14a69c18523c52\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Malabo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4135ee3049906286\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Maputo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86b5c9c4131afd2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Maseru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5f0b6e0e0675351\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Mbabane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e8ae55b14f5ff6f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Mogadishu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5739347cc4a4ac86\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Monrovia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe261078dc8f06d9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Nairobi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d91d3285b9fc734\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Ndjamena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7390a877d225667d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Niamey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4acf390d7568964\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Nouakchott\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67f5bb361e21ef05\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Ouagadougou\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2037ee5a834e2796\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Porto-Novo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58a41b400b964b02\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Sao_Tome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5afd3dd44ec5ce46\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Timbuktu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec2e745cfc156651\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Tripoli\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ead81ab847e8673e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Tunis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e492ffad0bf2126\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Africa/Windhoek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"595e65c24b47d8e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Adak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9de5e3513d41fe72\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Anchorage\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb8a413c304b74c1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Anguilla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c8e0efb1834a4cc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Antigua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9081acb432050a00\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Araguaina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ebadcef8f112c4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5807c391d1730537\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e355f01b15315da\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/ComodRivadavia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7cc7c4e96c0384f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8abde8fc195f1256\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dadedc718afe2cd8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/La_Rioja\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da52477fe47c7779\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34c12e654b4d779f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Rio_Gallegos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4a6e4c2cd872c96\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Salta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5794258043440441\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/San_Juan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9daf9ec6b0225ed\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/San_Luis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a28214852fa53db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Tucuman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86ad857b9f51a9eb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Argentina/Ushuaia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ad0f7975b5af8408\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Aruba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3cb35d7ba8901b9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Asuncion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7dcc7bca5269c3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Atikokan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dca5e4a9e78ca017\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Atka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95bca02d06b88e97\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Bahia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa955610b30fb909\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Bahia_Banderas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a66e0291f398ab1e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Barbados\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f7239c738825d37\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Belem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8de1ddbe03de1ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Belize\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67f35f19149899e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Blanc-Sablon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84f00dda3e9c52f9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Boa_Vista\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3683d23280b27130\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Bogota\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab70f83bfefc92d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Boise\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7a5156dca92ec4c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dce03ff14b512bbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cambridge_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf07ccbff1b24ec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Campo_Grande\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1514efe71d84f258\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cancun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1028443bea4f1b8f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Caracas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b9fb1a97646f258\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc200c0e87037c3a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cayenne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"669a672052b43a1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cayman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d47268a758c55679\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Chicago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa0fe036d95fa435\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Chihuahua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb7fbb4d58b2332f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Coral_Harbour\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dd060a07598593d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1e15d3acb96b44b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Costa_Rica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d17e3739963be53b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Creston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bde34a791b1d7a4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Cuiaba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa04d24a1ceb53e5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Curacao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2f705b581832579\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Danmarkshavn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5507aad2f8ec92d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Dawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a7b9a9290986f4c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Dawson_Creek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2740a1564e3c4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Denver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2787d964ffb0839d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Detroit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ead072110900c6f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Dominica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a0d2d6361b81f88\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Edmonton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78582424667901a8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Eirunepe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4ad4450dadd8efc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/El_Salvador\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd9c531c6ff43410\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Ensenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f82e2fb3a454300\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Fort_Nelson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47fce70e07732a2b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Fort_Wayne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44bc470160bfd97e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Fortaleza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f96e1679cda66f34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Glace_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e847d18452472b3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Godthab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22cfd4996132ccd5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Goose_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a443ab37241f945\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Grand_Turk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2829d95a352c2d8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Grenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48050c069cf5f3dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Guadeloupe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af1b80c42433055e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Guatemala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a1a1d863970dc1b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Guayaquil\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e584a5e1d878a724\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Guyana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3d519dc2e66fc2d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Halifax\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dd3b6dc22b84211\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Havana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec521190968280e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Hermosillo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ef8c625645f6a1d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67aa2a2e914fbba4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Knox\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e84b06deed1b9aa6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Marengo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4aba722e4524cc8f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Petersburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6e99307f94a8e9f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Tell_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"623794eec6c85e2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Vevay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"167238da41e2dc0a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Vincennes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d745902184ee6ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indiana/Winamac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f00f6990be98ea5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab8de906d86cb7f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Inuvik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80aec9e8ed9205ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Iqaluit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4469856fcadd93e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a05a2cabc34c7f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c3b0eca8f391cbb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Juneau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31b68216f8d9df26\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Kentucky/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80e39396d9ac786b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Kentucky/Monticello\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e96a7495769bf276\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Knox_IN\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f3c8a1ae5b31e03\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Kralendijk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f6926b41f347156\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/La_Paz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e450b62427d1951\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Lima\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24d7cb32320779e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Los_Angeles\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3c40466504c6e00\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"654f45d057e7e91c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Lower_Princes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"815a536cae7196b6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Maceio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8b916d7194fab71\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Managua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5bf588dcfe36cd9d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Manaus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cccca738c8ed760\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Marigot\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cefdc848f2115497\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Martinique\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6d5d4aa88bdef4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Matamoros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dce378728de8b7f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Mazatlan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5fa6769906b2da2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e522c7bd58a08829\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Menominee\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"962a70e639035cd1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Merida\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a02e897427aab411\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Metlakatla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3e98eda92527901\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Mexico_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62ac91784ca99a3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Miquelon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e600675d990e6983\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Moncton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3257a4d708998313\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Monterrey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db92210c0451a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Montevideo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91e7cc1510b97575\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Montreal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e26ace3df93bc233\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Montserrat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5ea879f10277a1b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Nassau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4114535342c2b96\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/New_York\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"103b410fee665adc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Nipigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dec44a6f9db77d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Nome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7e9291b470055aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Noronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d48336604a2bb246\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/North_Dakota/Beulah\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63adc95927e49430\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/North_Dakota/Center\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a637a5b259c3957e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/North_Dakota/New_Salem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c521d30f13f21dcf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Nuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8bf7f443a3c8fb1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Ojinaga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"541a79e88ed9aeb7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Panama\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b17c89815a3d4da0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Pangnirtung\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a6f748d657ec3d1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Paramaribo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b17cfefeac4927d6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Phoenix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe071c78015df0a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Port-au-Prince\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93d9bb226e00a8ea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Port_of_Spain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4b8498dca5fe4e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Porto_Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8722a0622b106824\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Porto_Velho\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d5586ee7048b54ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Puerto_Rico\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8176b1832126c3c2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Punta_Arenas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"58e92914c78d82e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Rainy_River\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8c6b2d77559781a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Rankin_Inlet\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99dd7b78e69518c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Recife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec1dddbd56d8765d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Regina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64e046232ad33fe6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Resolute\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ccd93c857102da\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Rio_Branco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"642ed159bc5681aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Rosario\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3af30884ebd68230\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Santa_Isabel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"88360b5ce1c1bc17\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Santarem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"936740b40c57fca8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Santiago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"20b08e4958a72d24\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Santo_Domingo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c504ad708621352a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Sao_Paulo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"615e4a81e52a7e5e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Scoresbysund\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d6b5196a1fd3a9f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Shiprock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c605a0bc1463495\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Sitka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"344986caf26a6285\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Barthelemy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c2c2b6fa5e853a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Johns\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe019b3e788161d9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Kitts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"519229f6889e4f0e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Lucia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7a3818af9be4b2b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Thomas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44aa396e5a6948bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/St_Vincent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2e00d0a2788fe51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Swift_Current\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dac2dc9a04ad4e5e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Tegucigalpa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a46234902c4fa1f2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Thule\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be0b686039ba6b0a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Thunder_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d81e3c1610493c55\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Tijuana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"322d5f5fdfc959b7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Toronto\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2fcf1e0f42bb36b7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Tortola\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c79d212bc7d92fa4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Vancouver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91ba6af5e97b8c4e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Virgin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9aaa831717161b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Whitehorse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d335404ff8e099e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Winnipeg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e47f6b5e4e99a6ca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Yakutat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37ad693dbf03dff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/America/Yellowknife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9eab6b35d02adddb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Casey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cb9df94e535eb78\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Davis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f21ae114df48b86e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/DumontDUrville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ea60b668dca1cec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Macquarie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac270ebbe8646be6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Mawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ff1cc45b44b3821\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/McMurdo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5143fcc9c100d34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Palmer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6542c023752c9f35\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Rothera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca5034b01a4f824c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/South_Pole\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb391040947c8219\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Syowa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fabc1e1b680cae2e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Troll\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87511a85792d303e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Antarctica/Vostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b53265beef4173b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Arctic/Longyearbyen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c4987ef305e689\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Aden\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c3fed55a5d14218\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Almaty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a4b89c66a011882\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Amman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eca76bf99c873c91\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Anadyr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a53b38675224cdb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Aqtau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83b4fe2052f827fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Aqtobe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a275b3d243f4de49\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ashgabat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cfb52c64d7e9a47\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ashkhabad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1502ed7eb7c1ccd6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Atyrau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acdcc7387c9f1449\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Baghdad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"717419db3432f60c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Bahrain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ac03c21668262a1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Baku\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e644c9787e3fb325\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Bangkok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df6b21e5ccf6464c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Barnaul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d2f9135a7c1f40\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Beirut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a1acb13659c2020\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Bishkek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6662055ac64d6fbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Brunei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60f4e7f61ef06e57\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Calcutta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebe024d24d4675c3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Chita\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f94ff44a225d1578\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Choibalsan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8a0ad235842b5b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Chongqing\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8cd705ff1d0fdea5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Chungking\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9beb22d2a255bdf7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Colombo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69e70ec05bb2f0b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Dacca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68d583dbc1128d4e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Damascus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8937e919558f4079\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Dhaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acc72c25ecff78ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Dili\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"307abb53fd8feced\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Dubai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cb4e1a21cb8af99\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Dushanbe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82f40579f1180555\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Famagusta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"daf7a6f3ebbed41d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Gaza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92adf7f1f28d0e33\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Harbin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f66ea39e6c58339\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Hebron\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd8c0231b7abcd65\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ho_Chi_Minh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68be6167934ae05d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Hong_Kong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb4a9af3ded12e9f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Hovd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd5b5dcf5b768f33\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Irkutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3865b25cea5d8a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c267969ae68f4a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Jakarta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5fc514f51d0fe28\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Jayapura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"389d0790873f5de0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Jerusalem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49d6969269b38c45\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kabul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d59b3c10235994d3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kamchatka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b7787fcb404d545\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Karachi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70143b8864d82e54\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kashgar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea9a87b00f66e329\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kathmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33881cb64fa36371\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Katmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"338ed01949e4b356\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Khandyga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"170675514091bd0e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kolkata\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24245361f765e720\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Krasnoyarsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a88a3af751f40cf3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kuala_Lumpur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbb43a7a643bdb26\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kuching\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dcb4bdbb43254bbc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Kuwait\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d88d6d6d6333e0ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Macao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f14664fa1c903963\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Macau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7629f7d7bbfbb22\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Magadan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2be61131188d72e2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Makassar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"393f3f4ab08c1996\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Manila\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f1009d7724434d2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Muscat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc0792201ef97b00\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa36471e38fbb1a1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Novokuznetsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47a23acb7a6a9593\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Novosibirsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b712838848d83966\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Omsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f237cdfe8c067d6d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Oral\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a99ac6ab46a08048\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Phnom_Penh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"10248312e7165d32\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Pontianak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f7cfc6d869c5c15\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Pyongyang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc0913c39eb5abc8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Qatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"917c8a641239e249\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Qostanay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd0d461791639592\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Qyzylorda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"823a250bc3aa6f38\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Rangoon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa814452176b1731\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Riyadh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d791100e1fc7944b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Saigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"286c4c2d19ac5a0d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Sakhalin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"489aacdc4c72a832\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Samarkand\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d87152146bd9ebd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Seoul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af8f6c61bd26fa24\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Shanghai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75ea7a464b1a7080\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b69bc68903cf913\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Srednekolymsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"295f420f360ab91b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Taipei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"355209e0d3be6048\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tashkent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f995f2f690bc163f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tbilisi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6137690a9ccdc2d8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tehran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b380b870c6ab3ba5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tel_Aviv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"583cae7b5c90ec4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Thimbu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"629aa47821c67c2c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Thimphu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac33781fa775e00b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tokyo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1315a146282f7727\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Tomsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0fb33c6d29ce196\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ujung_Pandang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74fbe5ed579ea660\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ulaanbaatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43c9076e62f58761\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ulan_Bator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df9df4896c3d1a39\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Urumqi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ed953d26264c327\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Ust-Nera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"499fe6a2c20b9576\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Vientiane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9532d8d641a363b7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Vladivostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df1c2062f1b53502\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Yakutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8d47c8e0d693520\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Yangon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43118d6600ad7911\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Yekaterinburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b55d5a76f68c487\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Asia/Yerevan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4b8ecb2bca7759a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Azores\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"885f841d46055a4f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Bermuda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e6f5b26094f6b20\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Canary\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"111998068faec80\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Cape_Verde\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8bdce61ec6e2084\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Faeroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"515a0d4baf4801c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Faroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b365274857e5f4fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Jan_Mayen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d205848b4ccaf34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Madeira\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d4e17f341aae62c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Reykjavik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a1a6ee4566b40f4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/South_Georgia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e4a665b7be6220c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/St_Helena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf3222ff2e00ad90\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Atlantic/Stanley\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"878c0efc6aa3e754\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/ACT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e0dc03b2f23300c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Adelaide\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f0f422d9f7b6ca9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Brisbane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"170ec32e92119a9f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Broken_Hill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"577f39c1d69ae6b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Canberra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46bcc90f7f6588e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Currie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d88fc448a3218a02\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Darwin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"479c2c6f4c23bbb0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Eucla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a65fb19dbc8e3f62\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Hobart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3684a79adaf3304c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/LHI\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64d0700db6aea114\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Lindeman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"320cd840c426b020\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Lord_Howe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fec617650d9b5b38\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Melbourne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ea394f52465b15\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/NSW\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5704e19dc83ba8cf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/North\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5295fec4b22361f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Perth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d2c66e57c90c818\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Queensland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac9721bcfc0239f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/South\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93553db1b810867f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Sydney\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9beafef9105eda1c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Tasmania\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e41c9a64090aeb7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Victoria\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"811652f975434168\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2bdb81ce2c50a25\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Australia/Yancowinna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bc8345b5d634032\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Brazil/Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f2873d10068c29e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Brazil/DeNoronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3758b075daf1aac\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Brazil/East\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ece09dc7f1fcfd43\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Brazil/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d963364b3924bd1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/CET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c38b6817625b1c32\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/CST6CDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be54855cf05be2dc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Atlantic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a0da74cba21345b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c13e6bec84ecdfd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c25d8e951cd329b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ab2242d5ace9583\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Newfoundland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edd9f6da9f0c1011\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b192d8666ffa85cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Saskatchewan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2843d8376cb9c64\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Canada/Yukon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25fa6e11eaf96f7e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Chile/Continental\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d156451d907ec948\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Chile/EasterIsland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbac7db263de21ef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Cuba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd17e2efdbe84fb0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/EET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"59a5ad4ff0742f6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/EST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36f06aa3a77c2e1c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/EST5EDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45dc8c716a1c028e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Egypt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1534dd1a0b91061\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b37bda928dc7c7d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34bc1b93d87204e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83224f9b1abf19ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a46715dc643666ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4be6593957817442\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0a151b7542a2357\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84c77320499af830\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77f204b93eec84db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e3295bfaf696b9d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2ec6b6cadc71666\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d00c882d3ee268cb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff5a550027fef5dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87d895424cfb1bf0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c32171637fa08f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT+9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5bd710de0e9673d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61f43af1ee90d0a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2836a8acf017d3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79aeb67892ba9ed9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e42d9b11078280de\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93826f736a07246d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-13\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9851a06373bc3bbc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-14\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4ac1282c190548\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0eafe961e27aa2e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12f42f1074c00e8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8015c3d2c7c5ab61\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"129f4b8d0c7bdb3b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6015a410b8df94b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e4aa3f77a41c0ca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b81aa377cfbf031\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT-9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"211448e253578aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9c1a2b28a18fc99\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50312dcbd7251218\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfacf60d260118ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1916d94f8573bc2b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a218dfe73b33ff5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Etc/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7da7a0d6f24c9648\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Amsterdam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56d5ec996e38e926\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Andorra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1dcccc21201889b3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Astrakhan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46c1cae7f6a62740\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Athens\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b8ea17d6507a926a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Belfast\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e7acde4e29117dbc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Belgrade\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73040905cdf89c1e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Berlin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a65f649ae5fd863\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Bratislava\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89ec22c91a6cdc60\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Brussels\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c2e852b3b83693a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Bucharest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b7c2971187ae26d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Budapest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ad8e5a7f90af741\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Busingen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4d9e5a56aaceb97\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Chisinau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"30039bb2e565b6e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Copenhagen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c2cb645390f57da\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Dublin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dfc7a3d2d7144a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Gibraltar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da140de0681b66fe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Guernsey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"faba1ec24d583db4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Helsinki\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ad4667ae5d88fa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Isle_of_Man\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55cd0f4c6effd202\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"462fe529cbc88826\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Jersey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76527177b1fe5042\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Kaliningrad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62e0a197aef70b95\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Kiev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21a3c45a185d7712\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Kirov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a3cd2542b1d16b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Lisbon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf8048071935afa0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Ljubljana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e929a6e24bb9e145\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/London\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aef308a5ae1ae686\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Luxembourg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ea8909c3c4dd50d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Madrid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25e11be8c0576105\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Malta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0b36ce7d4f405f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Mariehamn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6080565cc925a753\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Minsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25e181dddc2bc88f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Monaco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"126f1d3ac8a57b83\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Moscow\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"14914975c766f6d8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc8b61c5f98abee5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Oslo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0df04e42b1422ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Paris\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6519922d7a92961a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Podgorica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e83133fe5d91cfb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Prague\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2947fd05c968a9a0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Riga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1476364a091658a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Rome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"223c500fd6e384e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Samara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9741b879d92c0cdc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/San_Marino\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49b3876e979cfc09\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Sarajevo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bd92e80b2885cf4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Saratov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a976e31e9b3698db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Simferopol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46305d7b250fae87\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Skopje\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2bb5c9fb9cd380a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Sofia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8b0f96dfdcb2d9e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Stockholm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"219e33bc96d8a746\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Tallinn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e03a9115b41c06a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Tirane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7d67b757d88b818\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Tiraspol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45c87cdbc668dd0e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Ulyanovsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5805694a52c689d2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Uzhgorod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3ccd2071fd9096\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Vaduz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66c58d53d8c5eaec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Vatican\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27de4cb56ce854c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Vienna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b325a071855bcf60\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Vilnius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6df0ff0aa7d7d8c4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Volgograd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffb8569a99559ee3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Warsaw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92a35a1a5a5e3b3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Zagreb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b22aac909a7d4bbf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Zaporozhye\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac762cf40eb2d370\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Europe/Zurich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e9771f0b295426e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5616afffc4703d5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GB-Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a740ea4065e547\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bb37d59669dc4fc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0034c851d9e4351\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79d717bde45351c8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"950510d984a58320\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"acbc87b1c98a6acb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/HST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f58d4c8d4d93aee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Hongkong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b461a682d0c4fbc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Iceland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"548711cc52575d26\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Antananarivo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dd09fe156160fe9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Chagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f6885fe825d495f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Christmas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dde68331bcc7878d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Cocos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c57666026c97d199\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Comoro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f7f8bc04bb1856b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Kerguelen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abc23d0136b19de2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Mahe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"670b8f6573d8c13c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Maldives\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"653195b00e4d8fef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Mauritius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f1898e6aa59b458\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Mayotte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dedc1f41fe0271bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Indian/Reunion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b64171f34006ed9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Iran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bbe8adf417ab8faa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Israel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"261aa60de7c7f3b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48fe6d7908b2d723\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Japan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82fa93c9c0223316\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"102ff2d845732926\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Libya\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3fbac79ef45d286\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/MET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3d27514459223cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/MST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"549d7e2db24eb3d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/MST7MDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"541fc3164bd5d78f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Mexico/BajaNorte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe6e1a39ca4482a6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Mexico/BajaSur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d93da01d9acdb2b7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Mexico/General\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc9d8cc7e1d484ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/NZ\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5497448cbe605e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/NZ-CHAT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ae9ad20d11d04db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Navajo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"815076c4a156610c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/PRC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb148bdfbcff2af4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/PST8PDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e907ce57ce63ab3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Apia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1928f322017cc327\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Auckland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b94dc8e5d1afede9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Bougainville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa25e6026970c6fa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Chatham\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69b837809562eaed\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Chuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf04695ace8e8a24\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Easter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8acfffcd65670f58\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Efate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e21c26b31cd0fa47\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Enderbury\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c0a0d4f7be7d38c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Fakaofo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fadda75139c83980\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Fiji\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74d0c7a7811bcde2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Funafuti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"620b0bbbe8ed2efa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Galapagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d667501a5f86ec5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Gambier\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af8284d613643625\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Guadalcanal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"390ebee2c8cb3ff2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Guam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22c820ef31b07ef5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Honolulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"781facbbc2720b8f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Johnston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9a2cd60ed9405f87\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Kiritimati\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"368752da564dd7d0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Kosrae\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea0097f055e21cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d6eb4822e453c090\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Majuro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62ebf33508c0c006\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Marquesas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"850ec7bf17832fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Midway\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9aff209f241e638c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Nauru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12fa4d3b2794cf80\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Niue\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7c3ef12b820f44f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Norfolk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49f418723db88b25\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Noumea\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"552ceb99321a7094\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Pago_Pago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4dd5e6a4996ae5b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Palau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd6053561f57aeaf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Pitcairn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ff4001ab9eabc86\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Pohnpei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e898679f8ff93e06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Ponape\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e7dd77a89cfcdd0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Port_Moresby\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6595226b536940a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Rarotonga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"df3e644ef8f4d52f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Saipan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0c3425ed445aaa1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6818289bb8bba980\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Tahiti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b45c63e46fe0705\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Tarawa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99f2ebd902975091\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Tongatapu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1fd753590d222706\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Truk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9b5bb70a6b184bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Wake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abfe3a14d3615796\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Wallis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"725914da3a09ce3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Pacific/Yap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73ed8335e8722cb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Poland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62d6f428d6c8b236\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Portugal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"761043696d6ef3f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/ROC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8d72d83d4f4325d9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/ROK\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"526002f734b0164f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4d6e276582ab5a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Turkey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1838f654b4658a13\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a65ed24617c05b0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Alaska\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"194ea5d97d3a5b79\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Aleutian\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f14cf53f252bfe33\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Arizona\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca9b104502fb0c38\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff6165402f370a9f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/East-Indiana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef568c50fa5b1503\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29ce8517bd6074a4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Hawaii\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3260fb7058a505f2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Indiana-Starke\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e66a0e71096f4de\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Michigan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38e1bb8a553c4373\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c10a09bca5b0655\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78d2524debe20be4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Pacific-New\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98afa5cb7e122f62\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/US/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f50e7ffc162cc83\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b427cce92758d424\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24c59c7866f06c06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/W-SU\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcfbdcc87dd41384\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/WET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"821f1763452077ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94d6cce54243ee26\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/iso3166.tab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e69a6bd6ff5457bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/leapseconds\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28f62624fbb145f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Abidjan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6718397549b28402\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Accra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"258557b8acfd4e8c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Addis_Ababa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf0e373ed5d5e4e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Algiers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83554064ce11578a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Asmara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a79e0b1d37337466\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Asmera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c526397937097736\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Bamako\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9792f9ad095f5bd0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Bangui\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8af2bdf96e4d9b3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Banjul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5443b185f7611987\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Bissau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98829c8491fc0a50\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Blantyre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ef5ea071e6730a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Brazzaville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13bcb4fc36033c16\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Bujumbura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3123f3ff17da072\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Cairo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d64c0ed0805655f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Casablanca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef622eb099792f35\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Ceuta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"612409ff23389373\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Conakry\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f55026006696418d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Dakar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4895704902ac1f4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Dar_es_Salaam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25b2371c83e38c28\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Djibouti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d18e3fbc3f7b6e99\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Douala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d228bec864960aaa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/El_Aaiun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"841e8f9c19affe19\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Freetown\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c91452064a44337e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Gaborone\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1aa3f06035210d32\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Harare\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52cf7343dbf8e00b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Johannesburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2aab34cfdaa59dac\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Juba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe2fb1c40c7c679e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Kampala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d0108e74b7c7f49\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Khartoum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57e2405873ae85a0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Kigali\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7a8ab57b7a18c82\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Kinshasa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50b574bb8a06aca3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Lagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48dd091c9ee8ce1f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Libreville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"134c892888e82fcf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Lome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"488876d2ca27a704\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Luanda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7eb918b15e402577\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Lubumbashi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be8436aa94751472\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Lusaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ac7e9a7105ed225\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Malabo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c633c46cfb446249\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Maputo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12a2bd3746ff4b1e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Maseru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e4cbf587280168b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Mbabane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64a812e87787697\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Mogadishu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a309ea46a1dd42c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Monrovia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abbecfc277e7da0a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Nairobi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f80a7d9a4cf961b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Ndjamena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ed396f66298e093\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Niamey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7470a73fad35eef1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Nouakchott\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d19068d31bbf31af\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Ouagadougou\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cda26e70b1623f2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Porto-Novo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dfea3f2fd302c0de\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Sao_Tome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2d729a594bbb06b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Timbuktu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f15da473d50f71b3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Tripoli\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8092770cfe927afd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Tunis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33c12b8874d0b8db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Africa/Windhoek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffd0474e4fcbd061\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Adak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff445691a096e82e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Anchorage\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3bf677bba2b91d6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Anguilla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9c06b809a4ce12d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Antigua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"85aab8f4edb91b9a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Araguaina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55a14bf4700446d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fe2214536dd1e61\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a06df68e7e9c43db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/ComodRivadavia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3843f7ff43b6e110\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76f4596b51854537\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f56b09719e8e6fa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/La_Rioja\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae87a0c16f75db57\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b62de098406f3d08\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1ba0919d58235a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Salta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"875a8b599d23a81d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/San_Juan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a013bc55078468d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/San_Luis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"577a4bd7e01477f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Tucuman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c7bdc16bc900533\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Argentina/Ushuaia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"564c19a01935c87\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Aruba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d408885013535a0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Asuncion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52a4ee3f3d8d6e31\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Atikokan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee352f7162ca4ce2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Atka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"215e1d423c8e064a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Bahia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98a6e3b6cabeb799\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Bahia_Banderas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d3bc0d257874b3d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Barbados\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6aa3d9acc3ad4ab4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Belem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f22063772619e3a3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Belize\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a09a5bba6a0e19ca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Blanc-Sablon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc8aa1d30d8c936b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Boa_Vista\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe1294761b9750cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Bogota\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68cfd276f0421f92\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Boise\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d1fea6d30fa89d67\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f67642226d0cdc51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cambridge_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"227b568cd14685a8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Campo_Grande\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e2e202db565560f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cancun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2117fa1de14f64e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Caracas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1f330ec07f95c2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5544225867ea5dac\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cayenne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71562317964264b7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cayman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73748e042aece82c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Chicago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd2e200eb22e1fe3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Chihuahua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5319af7089c889b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Coral_Harbour\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"694a5bdce7fc5ba3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"739c76cc42d79c1f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Costa_Rica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a145f7849435f02\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Creston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67b12cc34dce7f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Cuiaba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f4116d2bfa53c1f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Curacao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"615ed78c05974e0d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Danmarkshavn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3d58bcdfe11e3e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Dawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2df924aeb95a7d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Dawson_Creek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55081fea4865fd51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Denver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d108bcaee697ec7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Detroit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc95660ac63cf979\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Dominica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7cabf35a3108662\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Edmonton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ffc4b3dfde3db723\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Eirunepe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8004a7c9bf930fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/El_Salvador\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5af1512e6dd2b90f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Ensenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a288b11d40e8a80d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Fort_Nelson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"326253303c7b11f0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Fort_Wayne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d6b25ab509c726e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Fortaleza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cad1fad3cd31d29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Glace_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f09de6df6cab8b83\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Godthab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"336cad4ba40ef7c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Goose_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6cb591749d913a5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Grand_Turk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"49a90c8c5d264797\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Grenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6550c7d25d7a256\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Guadeloupe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2723464c5559265f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Guatemala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f32c5f10f7e2c0e8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Guayaquil\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72873fcc26bf5102\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Guyana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15bbc989ed63c018\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Halifax\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f62bac6463f1d42\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Havana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"345ebde50bffcd35\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Hermosillo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be43664ac65b18a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b586af822bd4e66\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Knox\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"358eee027d354e23\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Marengo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77a90c881cf1e5bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Petersburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8080b8888d0d85c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Tell_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"626ae0651826a3ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Vevay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f45e8d408bb1b3bc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Vincennes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d83d528a28c6316d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indiana/Winamac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8420d3420da4900\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99b837bcfe62a9b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Inuvik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bb27579480ea97a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Iqaluit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"35f008819f8df45c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"814535a8b1839224\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3d2274f469cce25\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Juneau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"186ae07b9b580eeb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Kentucky/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95dbb64f0f7e48b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Kentucky/Monticello\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b84cf25d9216da7c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Knox_IN\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"361a38941a4ba48c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Kralendijk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2026d0ce855cdc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/La_Paz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d25f7602f74b4b59\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Lima\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba029f6bdf956d5f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Los_Angeles\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53a11ec263d99b1f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e871ae57e4aa4750\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Lower_Princes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"caffb099b7cad688\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Maceio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efa806fd7ab01a69\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Managua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8f48f75a319d161\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Manaus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"524ddde6bf7bd925\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Marigot\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cfdf9166f5916301\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Martinique\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98025d383ca467ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Matamoros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be7a8759bd51ed79\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Mazatlan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"33484874538fc550\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd56915dd5e74255\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Menominee\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78e087b67d5d4e1d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Merida\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e7ae7a53d8bb389\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Metlakatla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b901c51713826f5a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Mexico_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f24c6a60be819372\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Miquelon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b27f31e5ddc4833\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Moncton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e050d51e8f57ae2d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Monterrey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0fdc75e46b3cdaf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Montevideo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9228b7a7efb5dc3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Montreal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f13f94d8a3d1f506\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Montserrat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f2cc1a5c59b3a79\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Nassau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bba6dedbea305ca9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/New_York\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ccad7af2194913cf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Nipigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81d6f3acebe1b086\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Nome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c06ed10e5d9da69f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Noronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd4a884c050f8177\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/Beulah\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"474dc93478b35873\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/Center\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c5b398b0735b3e7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/North_Dakota/New_Salem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c8ae4ce2851eb4a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Nuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff740cbb7aa85e83\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Ojinaga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34b37f36fa0b445b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Panama\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c87ffa3493572b1c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Pangnirtung\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"69e538d373494e50\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Paramaribo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3686ca0333269020\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Phoenix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bab896b28f7c41e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Port-au-Prince\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0199a5e1123c21a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Port_of_Spain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b592a798fe3994b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Porto_Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b49d6f6129badd20\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Porto_Velho\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b5aaaa1dbf99ba0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Puerto_Rico\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c95cd0c0c710155\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Punta_Arenas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4e75b275e67fd7f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Rainy_River\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c880078349702123\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Rankin_Inlet\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fce0c37ee9ac1e81\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Recife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bcbe21cd1ef3414\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Regina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adb8cf9d073ad69f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Resolute\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab4a02a17f42aee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Rio_Branco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"660db7734ed9ed9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Rosario\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65e7e8bee8bc8734\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Santa_Isabel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e1259da98279548\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Santarem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79c4d160a20ff824\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Santiago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4f8fd6afa0c5507\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Santo_Domingo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81d3ee4ed5cffa60\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Sao_Paulo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a03d86699b6043bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Scoresbysund\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45f554668040dd70\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Shiprock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b81014594034f6e8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Sitka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e9766585ecc4bf5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Barthelemy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5e782d8dbb78331\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Johns\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3262136658cc651\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Kitts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a593fcffb575378\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Lucia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"432a24ec1423ea06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Thomas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a6ac666e533b78b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/St_Vincent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dc6f6cbefb38b43\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Swift_Current\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11baf6ea09587d75\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Tegucigalpa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f4365fc52c2f7bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Thule\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1acde2c5c93b29fd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Thunder_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1615618b8bebffd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Tijuana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60df29a04fff0844\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Toronto\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f6d375875b17872d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Tortola\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcbca3abdcc1309\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Vancouver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"209d9b04991530ad\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Virgin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9fcea6c83ffd5dba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Whitehorse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5fa862ff54b855d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Winnipeg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b460cf632f41af1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Yakutat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22c5434bea168b6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/America/Yellowknife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3a291f6b26efdb9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Casey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3715bb88aea9c57\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Davis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89b4a0031d6d3286\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/DumontDUrville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"586eee76f715b643\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Macquarie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc275a64ec7f6e85\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Mawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f3e36e1bfb23da9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/McMurdo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2724a1e2e01e5a4b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Palmer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"408d6d6839d4794a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Rothera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9575fb9cda44d3e2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/South_Pole\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"baecf3311d9336f7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Syowa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44c28f6445c70f73\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Troll\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce1e9285b56c0b96\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Antarctica/Vostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c6dcad4872576319\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Arctic/Longyearbyen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e07140d814a4ee1a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Aden\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b9060344eec8bbf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Almaty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f5cbeeded338f5e5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Amman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7642794b86e77084\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Anadyr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a1afb0b78514445\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Aqtau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6da2d6d26427d2d8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Aqtobe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a574d3889a5599dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ashgabat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd343b1ce4ea207b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ashkhabad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6035f79c3bc695e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Atyrau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2732a523b3a39867\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Baghdad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61a005796618cb5b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Bahrain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5a156f80485c491\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Baku\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef4e78482bc5e5bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Bangkok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4e47d55e856be53\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Barnaul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"928fa1fee172c761\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Beirut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d6941883b65fce2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Bishkek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cd1979951ec5651\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Brunei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e370c37d82fc04a8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Calcutta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"800d374642d311e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Chita\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"746dfaa495bbc90\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Choibalsan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"433df873898deda9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Chongqing\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96828c62f9916596\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Chungking\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68ca8c70347bc26c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Colombo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed54c56a6e14bdc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Dacca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44840da0a96bc9d9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Damascus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4152aa24034ae29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Dhaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50062574a4003c7b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Dili\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eb57717ef2bd30a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Dubai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7360bc371ba2bea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Dushanbe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36bc3355833a559b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Famagusta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f55b2a7a7a36f3ec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Gaza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"817e35800ec26afa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Harbin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e89cde9e5229b048\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Hebron\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3f863259641b92e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b73590cb0e48b22\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Hong_Kong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"348d2db5ed0fa56f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Hovd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb4b350732dd55dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Irkutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6d0b5f721f32731\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4abe9dbd0e67c410\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Jakarta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0521578fc62bda4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Jayapura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec38eccfc58e8bc3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Jerusalem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95641514d74cad52\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kabul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21178604bb046b93\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kamchatka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"901c64c2427bae15\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Karachi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d979d06092b228bc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kashgar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"589ae8b57e5d034c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kathmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cd7a170f6b9d6db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Katmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"824fc4c81e540dc5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Khandyga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b637ceea43af74e5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kolkata\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c54a346a1eb6155\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Krasnoyarsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c87e5950c0294bcb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuala_Lumpur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"862dde00c8f4fdbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuching\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"597982e7896606e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Kuwait\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcb2f49968a57433\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Macao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1243500fa488c8e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Macau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1038c93c60d884c1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Magadan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"881245db1b6a00a1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Makassar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48e75c9203db9df5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Manila\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c59634141da829f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Muscat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23446f3abe3faf35\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff570aa95d2be831\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Novokuznetsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a025568a7c384e8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Novosibirsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f50980212377db6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Omsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97474e73448c3eea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Oral\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f3eb50fcce22d86\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Phnom_Penh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4c852383a7b1fa10\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Pontianak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"375d1d313799dc7b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Pyongyang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"233344afdf786c01\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Qatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2474da709bbce36d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Qostanay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94358636c1f17f43\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Qyzylorda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"892d4d46917be47d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Rangoon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2b865dc818366441\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Riyadh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9404f1b6d9073648\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Saigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1517d85536151b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Sakhalin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28edae4947404ea5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Samarkand\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94977de176d3e219\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Seoul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bba38e4f41e9a103\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Shanghai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"981f70c68185af06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"908c7e1e5cc5b93b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Srednekolymsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7717531a49a0090b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Taipei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d0c87a8d48f45681\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tashkent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"975fd1900627e9d3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tbilisi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44c03eaa4de3a50d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tehran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ce6d9ea748fa2eb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tel_Aviv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5da8db447c98eceb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Thimbu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92132602b85775e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Thimphu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a893522b2011759e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tokyo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c50118bebb3e79d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Tomsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c34c87e7a6234ee1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ujung_Pandang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2871a2915c5b177f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ulaanbaatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c42fc2a4af328591\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ulan_Bator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1791e96b9459cd75\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Urumqi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6a5312b3f3184a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Ust-Nera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5dcb4efaf5025668\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Vientiane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"266ef17c2dcd528\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Vladivostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fae7e01a416ba535\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Yakutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22531449ce1dadd5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Yangon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6171e74fba2e509e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Yekaterinburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ccab86adac291bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Asia/Yerevan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bec4a76b14f5606\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Azores\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2ce31b9847e42b6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Bermuda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44d85ae254773dc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Canary\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15b89aa40a69f2e2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Cape_Verde\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5024908ef1d2b48\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Faeroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"82c6c25f650a2c6e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Faroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6dca304c45ab2d1b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Jan_Mayen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7717d98ce64d26d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Madeira\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e68e8a78ad36bd5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Reykjavik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2f530fd7f5c7bc5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/South_Georgia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1de8ac8a9c443034\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/St_Helena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc01df849044670b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Atlantic/Stanley\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ea1d0bdae6fafc5f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/ACT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b71cff35029714c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Adelaide\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76253080c14ce4a7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Brisbane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54720792d943e812\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Broken_Hill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5082b8668926f56e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Canberra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50d56166a539c4f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Currie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"876a20de358e703\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Darwin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e12a6e4a8a61e69\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Eucla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29d03b232b231c32\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Hobart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2f796012eb420d6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/LHI\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f26b63899bc1b536\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Lindeman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f44280f22935059b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Lord_Howe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ce96754f5b95958\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Melbourne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"90a89f4050e836b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/NSW\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"223ac0f9edcf227b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/North\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c40f5661648e68d6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Perth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f764e0da8fdc4b22\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Queensland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75b3ab7d34437187\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/South\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e16323986309c5b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Sydney\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5878e73d3dd4d2ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Tasmania\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c079b1cb29172b69\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Victoria\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99d0ed33388e48c1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61c1f7728ea8b385\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Australia/Yancowinna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b3de879b3d68e7e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Brazil/Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"563c500d593734c8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Brazil/DeNoronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"250a67cffe35e070\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Brazil/East\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bcb9a8460d8b999\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Brazil/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f837ec08c3d1139e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/CET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51800788fa63eec5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/CST6CDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"135106dac1f7623b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Atlantic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e688143957bb5f1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50106cfe80e02efc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"164eafeb030f9c39\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a71b3bc7a1bb226c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Newfoundland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0b1a75c080b4993\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3badc83d1893bbd3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Saskatchewan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da4ef521ab05a3bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Canada/Yukon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f74324c1e371992\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Chile/Continental\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be51fe97f74cbcef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Chile/EasterIsland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c689568d082b9b82\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Cuba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7107172690d2ab5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/EET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"feace31ee77da160\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/EST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d181d5956c6d5a3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/EST5EDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdc4dfd413f72957\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Egypt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f9fb7bf95ec2599\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34c041f5b1752b4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5ba7cb821e949d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"34ce8a7a38946dc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66a889092d7ca2f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51ad3eeedd139108\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92bd9693c1e263bd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0e08005cf08546d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4fa45ffb87b1d5cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91477076d7fbc1d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8901e238243adaa2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d53404f75a7bb272\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d017d95a5ba3906a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3bc99b806760f30\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a93434fcc1f2d7a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT+9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a77800baf7c5a3c3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4e66d2bbe5ad48d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa59745bdc2d198f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8eafe84165f659d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5150c118f94a3fa5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3c333b5962b348ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-13\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"533f9baf26358931\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-14\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39bd18d486cba6f0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da6171a3a9cfdedc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62a94ec37df0b23d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98daaa3e695fea9e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a79a1a532314fd14\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53a99955d7e9618f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4482bcec2ae6ad20\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e71a6285e525b375\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT-9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d20d6ce29a9908a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b327401aa7a72a22\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18ac31de1f2035a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a946453c5d6032e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9167d84ea15fa572\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3c12a1ab7c74107\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Etc/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4edf95fcaeb2780\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Amsterdam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"695e3ba0d05771c6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Andorra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb9a4bcc4b78f3f4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Astrakhan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b51a94d00a331fa9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Athens\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83f2f206499923ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Belfast\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dddc0e1ca6bedef8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Belgrade\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"526240a426a12a25\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Berlin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26d6d13919cf7b1f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Bratislava\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cd4b831324964c2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Brussels\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6685740476b9b35d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Bucharest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfcc9ece827d4c9c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Budapest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bc70c23fa945550\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Busingen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0c8b23405f6fb13\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Chisinau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"931c974ad7d0f090\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Copenhagen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b49e7df354c5c071\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Dublin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"328724c2d37fbe59\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Gibraltar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93e7db3e22a597fe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Guernsey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11d5b5872e39790d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Helsinki\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9cf01a425d3011b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Isle_of_Man\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c87567b7e304c11d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bc648c894940d0f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Jersey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a24edfb231bf0874\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Kaliningrad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c8cc9843c2147f6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Kiev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f662a3d3368fd7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Kirov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e59191ff1c1a95b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Lisbon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2f3da287b2b6b41\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Ljubljana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7bddc97063e0901\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/London\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e9eb8d27ec4b8045\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Luxembourg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"500e45676a302120\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Madrid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2a02781430d48169\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Malta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"957b4649cf3c4efd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Mariehamn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77091ff1ffe88e3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Minsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74d65c9f2284180e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Monaco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee6026cb6274ea73\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Moscow\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8e77e7b0b17f48c7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe4438e0ec77876\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Oslo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"46250d42f50f2e8a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Paris\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d5f6e67de6e1e10\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Podgorica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"468aff168fa37317\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Prague\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1fc41e815bcf306\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Riga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ca6622725a504c4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Rome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd22312087f3e38f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Samara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7187cad6b930159\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/San_Marino\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e099b7d1604389d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Sarajevo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45d7649e1866cf5f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Saratov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"741ab146b769b45d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Simferopol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3995955e83875183\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Skopje\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"97e7fbdfa05425e7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Sofia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac6b6de92aa4e7ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Stockholm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a0fb7b9da71ccf6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Tallinn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44c26874949131cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Tirane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dd3919f367e6dfc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Tiraspol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3d279526e3f58ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Ulyanovsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8514c45b3770617\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Uzhgorod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55b6f15534d09d80\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Vaduz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1074e8eb3719dc4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Vatican\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e65e7323381ac5a6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Vienna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcb298d3bf4f6548\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Vilnius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ab457979f46082f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Volgograd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7078a300cf477f5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Warsaw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6eb3c7dd6f641e19\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Zagreb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"730cd477d6b79d8f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Zaporozhye\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ea4cae6d7b7cd36\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Europe/Zurich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"954fb7eabec79814\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0d56c9da3674b94\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GB-Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"751100066534ec9b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0feb3c0c0618373\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b22194ac4684aeba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fbcffd5aa6a8199\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e385082ac6e76e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db941941a2e59a4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/HST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44f86490789dcb71\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Hongkong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa0f440da13c491d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Iceland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71caf0e8bc036bc1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Antananarivo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d10e0c6febba7bf2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Chagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"933ad435e51f73f1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Christmas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd970662ffbafcbb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Cocos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a93d651b0226f859\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Comoro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cfda6c46464ccbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Kerguelen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"53595bd792427903\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Mahe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c9d141903f48a7d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Maldives\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8de4c0bdef809307\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Mauritius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"252d8f04a682c75c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Mayotte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c74074535ee030d2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Indian/Reunion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"771d22dc4c25b474\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Iran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd05b99a76ee8db4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Israel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1343607d9bd71cda\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ce1b17acc157acf4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Japan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7bd78653f107cfdb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c8d43c0b14f7301\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Libya\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"427490c19dfa2185\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/MET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b8f92dc763a462b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/MST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24af319424b89d2d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/MST7MDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e82bcfa63ea01e5e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Mexico/BajaNorte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afadfada4f7e0b95\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Mexico/BajaSur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1a19b9bb57edea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Mexico/General\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3bda3a2005d664b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/NZ\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2db1f571a920ae\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/NZ-CHAT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9668ef758b1d584\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Navajo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11be640a8adbde47\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/PRC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"de6020f899e41eec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/PST8PDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b94710c0bc0f5687\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Apia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86ce836e3245cdba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Auckland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b39374f588fa1db0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Bougainville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"208bc01083dd9ede\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Chatham\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2a2ff79c313f51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Chuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"827a6d0c0d05b89e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Easter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf07f866cbb4c4dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Efate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d7ac9a70a8d2471\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Enderbury\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78733ec07bb29215\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Fakaofo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb7cbced3ceb2680\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Fiji\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62f6a9fc35153e9e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Funafuti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2dd90e97ef0450c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Galapagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"71afa038d1c33234\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Gambier\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b58494c650ca9281\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Guadalcanal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78800da6b3a95940\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Guam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d1f32d5eb7a3828\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Honolulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c14730f5f137dbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Johnston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e130b226fcab63a4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kiritimati\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bcce0da6eb2312ff\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kosrae\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8a3433ebc869686e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff6a394c24c8245\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Majuro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a892c95691662204\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Marquesas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1156f94e7524d422\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Midway\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dda4d65981e1f499\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Nauru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"81057994b43b6def\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Niue\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f1eeb7f5433e2ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Norfolk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1df7d636d6c03c4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Noumea\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bc0e063f1ceacc86\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pago_Pago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8028f427f288e2d2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Palau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7569a3905cf7b2c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pitcairn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae8c29e6d566357a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Pohnpei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f43a1ef8095a78b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Ponape\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95db07db7673f7fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Port_Moresby\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"102b3313557f8aa2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Rarotonga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24870bd1bce1e3ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Saipan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c7988994ff968c6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7cea85ee621b3e0e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tahiti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54bbb3ace2829a8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tarawa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36e287fcbfe613bc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Tongatapu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d832fe45593b625\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Truk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a86602d1f1a39c87\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Wake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9994ba7bba5c8f06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Wallis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52e09a4c374a730d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Pacific/Yap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc3caa984a190316\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Poland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a602a38c17e6ba81\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Portugal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd81150f815e1e4f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/ROC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17fd7164374f07dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/ROK\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5f494d9b9a21144\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc04abcc5f91d1d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Turkey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"928d332150ebb1f0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"51edc18b1ba12f5f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Alaska\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef30d64c3601388d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Aleutian\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bf0baf51444d217\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Arizona\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2f9c334c3a62561\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2d909dc7c4d1986f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/East-Indiana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f48737ace9b9b4d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d06ef4136e65ad5c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Hawaii\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a08feeb5b5da4eda\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Indiana-Starke\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb460da6495d6bc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Michigan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b9f42a48fe0eaa2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ac8604bd176b051\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5cbe75936863876c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Pacific-New\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ea4fc7ea5b4ea42\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/US/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd3642b96dd6ba29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d93e18fd8e421bef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"772732d9d8a63575\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/W-SU\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ab076d666970eb6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/WET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74350b7843d6515b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posix/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9285fca044ba4ed9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/posixrules\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e334516efab5c64a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Abidjan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9cd737ce77074ee9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Accra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"276570f43b780ce5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Addis_Ababa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f6f051f02a23055\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Algiers\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"337367f3e668274\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Asmara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dea330476f5df1cb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Asmera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e219cf7352369ada\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Bamako\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e07fa90333f5256\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Bangui\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec4e051b274288bb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Banjul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2f15fbf143cc36b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Bissau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a2cf940f1c54ffb7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Blantyre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb027c1ea441abfe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Brazzaville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c982ad8a51e566f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Bujumbura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d8a08249fb10ab3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Cairo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"924b5c22dc61c823\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Casablanca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2f256b7657f5cec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Ceuta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6b6327f8bb823076\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Conakry\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e3e462efc29ac3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Dakar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c962f86161910804\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Dar_es_Salaam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d29dc8fef9ace7da\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Djibouti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"108eb97f3067c5cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Douala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6172b3a065654316\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/El_Aaiun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee27736e18c1eb2b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Freetown\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dc351adcdb41d6ec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Gaborone\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"24b6a24f22bd1417\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Harare\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"43bf5a2ca293f764\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Johannesburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebd15f48d3a1bd51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Juba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b07033092b75269b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Kampala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70a18cbb29edf52f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Khartoum\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29875b4ae0128eb5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Kigali\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"74f3aef075ee5142\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Kinshasa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bd0b2e570937ccc7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Lagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fd05849b1dd21f38\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Libreville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8198e81d36606aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Lome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3291ea049dd941b9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Luanda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4699e01db572c42c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Lubumbashi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16c7a42713efadca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Lusaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2d5e4e2d83f9f6d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Malabo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bab9ea4ac40f8e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Maputo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d51127c3d3b1fd6d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Maseru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b36f42ce91fd455f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Mbabane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1937bc2210919185\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Mogadishu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"292d1a7262ef6f46\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Monrovia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8bf81a9afdddae5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Nairobi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"91b3433845a103c2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Ndjamena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ffc7d60e65c13ed\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Niamey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2381c9009877fd55\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Nouakchott\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55e970bec4bf7b74\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Ouagadougou\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4375bf3f00bac40\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Porto-Novo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"36c1db8589ab388e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Sao_Tome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebded4b98f1200b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Timbuktu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3b747d693c0df65\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Tripoli\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9fb6e4bb58d011a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Tunis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6eeb0a2f09efd800\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Africa/Windhoek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"11a5b5e554bc65e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Adak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d32c42bbd8b3e62\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Anchorage\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8a636b670ca5e5b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Anguilla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41b09048cca31224\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Antigua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e6d757fffa52603\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Araguaina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"849b4dd562e76dc4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f899c79d910b1762\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"babfe1eb1970fd6b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/ComodRivadavia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b804059a66851a98\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"382841e45c31409c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec0f771e5d149281\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/La_Rioja\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c79dc6710db5f63e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9b5394fe1a9eab6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1a1b3fb14590c8b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Salta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"343881b922e1f258\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/San_Juan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b641457b1512c8d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/San_Luis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e746066a50150655\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Tucuman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4e167caa90b0918b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Argentina/Ushuaia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c015f594d689854\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Aruba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fed8b0fb30f9d74\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Asuncion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b33aa7db01d446ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Atikokan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42784f91535d05ac\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Atka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dd9e979d1422a911\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Bahia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6db9ed341bd03374\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Bahia_Banderas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"13fa738074159f05\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Barbados\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2566e390d15da0fd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Belem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"513e040c3ac74153\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Belize\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e2bf7a0b063577f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Blanc-Sablon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2240f2ed88325c3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Boa_Vista\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"afc3e887239b934a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Bogota\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6e707296b2b1af7a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Boise\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d59fab0ef34992ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Buenos_Aires\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b186003a53e8d2cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cambridge_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"168f0c92b06f8e76\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Campo_Grande\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"351a807d3ccdaa97\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cancun\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"76f5e188680da479\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Caracas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ed60cbcd16051cb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Catamarca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cbac8a102fdecca7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cayenne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a6cac34f988a34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cayman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a9ecd2da42c31eee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Chicago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e61117d0a5536f73\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Chihuahua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d41235eed4b60a06\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Coral_Harbour\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"855aee1e02f87cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cordoba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f7e0a587b4512dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Costa_Rica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe63266507b0a0ea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Creston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4ff5ba920f675a98\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Cuiaba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c00775f7725a712\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Curacao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cd6cf187782dff0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Danmarkshavn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3911562f18d1675c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Dawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eeb042147b11144e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Dawson_Creek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"651c9618f70e98c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Denver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e88027a1cae6e2a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Detroit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7206a9d401f6d3a8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Dominica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f3c3a96ab182d89\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Edmonton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f63e039e3329e76e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Eirunepe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4d23b76e5a509f7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/El_Salvador\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8c1413ab8373aa5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Ensenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1cd80f278162f355\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Fort_Nelson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee32364f40ad4e9b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Fort_Wayne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b9b1bf0907278c3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Fortaleza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1119921039f3df15\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Glace_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9731da496667eb5e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Godthab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"897b4facdd78a3eb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Goose_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c2e825ae7b9a707\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Grand_Turk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af484b7639d300bd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Grenada\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b0b6d6fed462dae9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Guadeloupe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"608f5af3473e4409\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Guatemala\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"139979603e01edca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Guayaquil\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3565d14f94c15e9b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Guyana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dff41fd4fd23e1b4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Halifax\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d850ca7bf2217e54\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Havana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"abb66712413dd100\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Hermosillo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ee77e13a37fb40fb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7910e242ef9ac070\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Knox\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9d8826e67dbd233c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Marengo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fc59e9527cfe3802\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Petersburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dda70946a4f836c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Tell_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fafa0221bbeda56b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Vevay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c2a2202c1540cc4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Vincennes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"150c70db9c188c31\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indiana/Winamac\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72885bca209516aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Indianapolis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7d5efe0c11fe46e0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Inuvik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efe83a026ec48952\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Iqaluit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bf9d8b1c324b626a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d75a444e3ced5d87\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Jujuy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3a29d9896c5e691\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Juneau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e90300e530c496bc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Kentucky/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c176ee2474cb249f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Kentucky/Monticello\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c0778f7b95826cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Knox_IN\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eacf2392ed1b58d5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Kralendijk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cc710ec045e57b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/La_Paz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"942fef05f15ffb9d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Lima\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ec68fe5520588418\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Los_Angeles\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"250678a9e0d5e686\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Louisville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2171c28f5e32967d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Lower_Princes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e6104146951dc944\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Maceio\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a17cd322709e9c0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Managua\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e9ccc7bbf08adf1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Manaus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47e18d14c216619b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Marigot\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48787f6e1665a306\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Martinique\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1625b9c40fe9bdeb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Matamoros\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67e22e09b67a5ac1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Mazatlan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a480a95892298aa6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Mendoza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"94ef41dd274b0f02\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Menominee\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4c0055fd8042ab2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Merida\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"babd0d54b029c120\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Metlakatla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e01aae35005fc2e6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Mexico_City\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1f4b949231034d3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Miquelon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa55a9a2914af93e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Moncton\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"421656abdc5810e3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Monterrey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8571bc151b5a45ad\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Montevideo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9556384e955846b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Montreal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"45f8b600f6b3e0e1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Montserrat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"da928561ec69b40b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Nassau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"aa3488248b8a1120\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/New_York\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"305a73c00a691564\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Nipigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba9477e68433bb6b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Nome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68490c63822b9881\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Noronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6bd1206b52fda653\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/Beulah\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f212dde2990132a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/Center\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1948bc05bdf0687c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/North_Dakota/New_Salem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fae67d63d1d1928\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Nuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2cd9f08f3f20dee6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Ojinaga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83b240940e37dbb3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Panama\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8049b1b7698a4e6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Pangnirtung\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2ac10199f391c29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Paramaribo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fccca647e7fe3d0d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Phoenix\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86756afcaebd6ff3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Port-au-Prince\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed9e205266f02baa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Port_of_Spain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f01e756711a0a82\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Porto_Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ef899bcb8c8b507d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Porto_Velho\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fe06616143acc087\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Puerto_Rico\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5026a9005d1e8ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Punta_Arenas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e00d73b7c2fdfb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Rainy_River\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"73c502f0175c10f4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Rankin_Inlet\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9b6075fc648b23d4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Recife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"335c23cb5cede4b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Regina\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af1bddbc16583c19\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Resolute\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"571afc355a614b08\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Rio_Branco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ed4e5e41efc14b00\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Rosario\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2e8ae82534ccaf4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Santa_Isabel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7baf7b2f3c2029a6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Santarem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3be4700cdcc38a0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Santiago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22dfcbdca6176d3a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Santo_Domingo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25d5223da2eba7d8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Sao_Paulo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9152076b5f40ccc4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Scoresbysund\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a0383d4174fc66e2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Shiprock\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ffbd19989b44bb5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Sitka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1173c664c025194\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Barthelemy\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e1da5e9798382453\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Johns\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"21dd8a690641297b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Kitts\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a6a8f585148db03a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Lucia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"580b5a307f7af65\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Thomas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a42e69892e4d7f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/St_Vincent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d7eb53271f7e176b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Swift_Current\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61ac837bbf943ce1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Tegucigalpa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a220b38be91f686\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Thule\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99e58a8552306a72\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Thunder_Bay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae54bd0ec46cbc0c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Tijuana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eaa240f79ee8f569\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Toronto\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70c998a8aaf6257b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Tortola\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4d7658edfa34b2a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Vancouver\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cb06645f4bcc882\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Virgin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ba29d6ae3dab6d9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Whitehorse\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"251b5bdc5347f06b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Winnipeg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"78449937411d2f4a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Yakutat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c5c42656f9bba8a1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/America/Yellowknife\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c5fffa7ef17b7b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Casey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f8222648cb8440f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Davis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a28eea2aea032210\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/DumontDUrville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96db2240da7151b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Macquarie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62f31eb811ef59ae\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Mawson\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b00c8d94bfb9ce6f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/McMurdo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6857cb37116307df\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Palmer\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15bcb90c1f2da416\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Rothera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9dfa42847bcf1e9a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/South_Pole\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"db25c99efb9527ab\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Syowa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4694f6f1b4ed878d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Troll\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7dbf84694d8140d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Antarctica/Vostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6adbfb43e961baa2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Arctic/Longyearbyen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d8d759b4f31a8e29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Aden\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"480441f9be60adef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Almaty\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c88853afeaf4ad2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Amman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"147c7dbba7a5f9f1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Anadyr\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9c61730b54211e3d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Aqtau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"68f41e6036634069\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Aqtobe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"75b464c785b7565d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ashgabat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5921212c0d95061a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ashkhabad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3da6efa679ae157\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Atyrau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4633dd5c73b013d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Baghdad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"697e1cd76e9cea8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Bahrain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7c60001f2f60c761\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Baku\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e3a33ba8fdc8bb6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Bangkok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47d413bac2b4c6e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Barnaul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d2b40d247bb8caf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Beirut\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1dbc0c34ad516cf3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Bishkek\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c063ca1030e62e95\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Brunei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56bc18d91e1d86b3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Calcutta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"891776eebad66edc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Chita\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0f4a1944005864b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Choibalsan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f97f9f8aa8123aed\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Chongqing\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c335e3338edce0dd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Chungking\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"844ed0a8fa5d02b1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Colombo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"25fb3584bc8c58fe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Dacca\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af4825cd7dc06c9b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Damascus\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5941c6cf65a91010\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Dhaka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48ce1566a137b1b6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Dili\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"904c4ed75e321208\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Dubai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3aa3e6499317b6d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Dushanbe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"948ed273c0d64f4c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Famagusta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbbaff22d6f1d8ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Gaza\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"41651987ae85f203\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Harbin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4ea509ffb16c88d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Hebron\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b735a4b36167b68\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ho_Chi_Minh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"27f5fe5b850850a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Hong_Kong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a45ebc18d34d89bd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Hovd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8da35510b1fffa76\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Irkutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9844b50ecdaa3910\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1a7a10a89fdcc8f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Jakarta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d56040ad76b49986\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Jayapura\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"996d12185056da49\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Jerusalem\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ee724554c0c6d9e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kabul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1eb8eebb06559c57\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kamchatka\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"86445c0aa52a7740\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Karachi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9e17e49fd9fc557\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kashgar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d92f9dae4c3e8d0c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kathmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5f3a52499c4f942\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Katmandu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ecbea2bd051e9194\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Khandyga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b17ed36a7e208954\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kolkata\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"42fc06930db643e5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Krasnoyarsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f794d93133ce5f59\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kuala_Lumpur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"edf0277b69e2b975\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kuching\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47321aeff6d24a5a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Kuwait\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dd5d1ae93e23641\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Macao\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f68751cd79d3a6b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Macau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c725fe6062299634\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Magadan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5acb97cb4046c643\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Makassar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b4e73658774a3c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Manila\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff974657b7f47b4b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Muscat\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"66e7deca0b9678df\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2064f495a30c646\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Novokuznetsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2bd3dadf666a2f82\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Novosibirsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2283a2d525b4d34e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Omsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"efca6302ba75173d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Oral\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c19a2a42a912909f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Phnom_Penh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0856809274095f8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Pontianak\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"15dd5a24b6fd4838\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Pyongyang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2929a4b67de3849\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Qatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b3fc5e844aa0de1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Qostanay\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8fe1e1f5353b8cc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Qyzylorda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7c5ae01b811529f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Rangoon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e3daa360c6fd9426\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Riyadh\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"67076860549205ca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Saigon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f9417e9314c451f5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Sakhalin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f7894f5606709401\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Samarkand\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c1d6a28cb58dee4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Seoul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3b4aa5b02169802f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Shanghai\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57dd6792d8e35f2c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b3e348dbeb43d0f6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Srednekolymsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9f7e0f968de68f09\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Taipei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"985b4cb19383cd96\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tashkent\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7fb0f4b6ea2482b8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tbilisi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d2dc2fe153bedeb5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tehran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"306267506acbd1aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tel_Aviv\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"179427469bb19df\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Thimbu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"466e85728c07cba6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Thimphu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e0c60308efb662b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tokyo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ff4ef40f7ff299f7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Tomsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"99a3edaa4918b763\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ujung_Pandang\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52a9ac6b72b0d265\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ulaanbaatar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbe048550fe42e60\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ulan_Bator\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4629306b636d74ee\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Urumqi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b24104a33c6accf7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Ust-Nera\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b5b0c1f6b635f1cf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Vientiane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a7abed8684a77af2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Vladivostok\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"38f1ba5e7615ad34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Yakutsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"753416130ab2d734\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Yangon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"785c6a9a152de31d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Yekaterinburg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b03ff23650c58675\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Asia/Yerevan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c0feecabe560a666\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Azores\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b381bc7bd95f261a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Bermuda\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2814a559f716e88\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Canary\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b76d40b9e48bd67\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Cape_Verde\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fbbbc0268ecb7781\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Faeroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3a066d68464d8f3d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Faroe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"32dfa8606d482be\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Jan_Mayen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dae068143b721476\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Madeira\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b38893bc74084d95\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Reykjavik\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a1c386e2bb331a81\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/South_Georgia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f89d24ea927caaa7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/St_Helena\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cf1cdba19ebf0545\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Atlantic/Stanley\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"29cc61bd896ab650\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/ACT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"18ae282feb1381be\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Adelaide\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f224bf89ad858cfc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Brisbane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"95d8620826d0f066\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Broken_Hill\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e2cad637d24ce50\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Canberra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e69ed8a3d89d5fbd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Currie\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f81051c4fa6d4450\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Darwin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f0b971dda7d4a3af\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Eucla\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b7d6972d4b76525\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Hobart\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f383255a7f624ab5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/LHI\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba483a2d0622b8d3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Lindeman\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfb32092ec0a3d8b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Lord_Howe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4bcb03dd953a3fb6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Melbourne\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f39830c28fda67d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/NSW\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e42fad7a4958984\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/North\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"55f4c7bded63742a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Perth\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b24c1f095b777817\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Queensland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"28c0b02abfa13d69\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/South\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77781f255d9b5149\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Sydney\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7cfaeb02c0d5ec07\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Tasmania\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0e6fb430a338263\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Victoria\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"374ff9f7ab798de8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8771f10feed17332\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Australia/Yancowinna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d6fc822ef229ff1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Brazil/Acre\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2e8c2ac32e808a1b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Brazil/DeNoronha\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c124c9ee288d61d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Brazil/East\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"437c5e5968b5135\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Brazil/West\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"61f9f220e0085d09\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/CET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"136d9bd6d14dab7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/CST6CDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1ab23b83605d625e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Atlantic\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"816d2e9f2ced717f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2ea7c40ef2bd908\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f3646165b51e90c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80cd108ac19fa470\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Newfoundland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb1d320ef063d580\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"323d30b0cbd6b33a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Saskatchewan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e86b0d5914ef7bd7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Canada/Yukon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3988d7a1e65e7ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Chile/Continental\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ce754c7933b4555\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Chile/EasterIsland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a56783a4820febe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Cuba\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"931e62ff40c2ec75\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/EET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9df63cbe1a55e31f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/EST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c686cf5cdd86cb43\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/EST5EDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e78883a73bc47b6a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Egypt\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f56448c8d3bb356\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bb0feefb8c898293\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23c65a7d352225e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"87827de507c24027\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"48ac88cb5a4d836f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9177c0843896e837\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b598930dab32acd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f07dbe3b893b5009\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"64514cf38acf98b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c9b3403e6c27d5b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab75d262c1d0acdf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5ec6e39bdb20b0fa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fe6b7eb6757883c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"79c8c52a28b6a33a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e877196f36326769\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT+9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"291d0b57df2a41d2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e78734c315443ea3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-1\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c7e8a8f4e9e03c19\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-10\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"600ae252ed18ae5c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-11\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1098cb25fda554d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-12\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ee718c63ba1d6d3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-13\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6a1e4eb074071125\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-14\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"681ef219621eef7e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-2\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"98a3277c15f44e7e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-3\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab359c10163acc93\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-4\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"54b782c13a062b07\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5e4ef5027f367120\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-6\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83e2e78b1a94a4c2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-7\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"31d6df24d394f946\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-8\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c9deeff807c1dc58\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT-9\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd3bd9eaa4a719bf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"522d78aa56c711d7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a18ce7f41509bf7c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca2883db975ef711\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6d97879b68ff20f1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f29f68c1c8f8e6f3\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Etc/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfc6d1559f481b0b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Amsterdam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ac9d52f16814777c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Andorra\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b21e3960f815e7e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Astrakhan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"23103a56aba4fbec\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Athens\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c4e8c9a6ef0dbfd8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Belfast\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3f99e0b69c35885\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Belgrade\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"246dff13326e8c83\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Berlin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"57298089f1e31fa7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Bratislava\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65aa6eceede33325\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Brussels\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"63f76948fe650fad\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Bucharest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"16c3a7cc5a034f93\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Budapest\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"980371716a2e0ded\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Busingen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cedb3b44806062a4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Chisinau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8210c1e0e9849c8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Copenhagen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bddfb5608ee306a7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Dublin\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc27290b7e210d60\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Gibraltar\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b7ae1be70d50dc3e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Guernsey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b16fbf719056164d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Helsinki\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d188374a096bb9b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Isle_of_Man\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e11bab8d2b5a5d0f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Istanbul\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"155a0800aa682cf4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Jersey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"559920a1f4101484\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Kaliningrad\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e17850b78a7b5f16\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Kiev\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7da74533ec0cb668\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Kirov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e0884547ed6424ae\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Lisbon\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fcfd9b49479fe0e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Ljubljana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfa7815573d0ba0a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/London\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3edcd0ece7b03aa5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Luxembourg\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"22070a8ac69e258f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Madrid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"60076f03e6c895\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Malta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4f8eaeb2085b1600\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Mariehamn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e999d15379523ecd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Minsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7297eb7dbaf6f64c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Monaco\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5f67a353e5e494c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Moscow\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d3f0d7852ea772a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Nicosia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ff77fb4f4754de5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Oslo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2c01ed21a19893ef\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Paris\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4530222c12bdf0cc\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Podgorica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26a1d5c2a6899131\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Prague\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6cf05e9d553d9e25\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Riga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4a721b06713bc3e4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Rome\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1c8bbf90b7529e68\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Samara\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f320e99dbb220292\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/San_Marino\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e7db0a3aecd47a7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Sarajevo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c6d8194e40ab740\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Saratov\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a022827dfc887ce7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Simferopol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4cf51a3c8b5a1a6d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Skopje\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ca3b42f59b5b9c15\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Sofia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3ee5f21351ddf5c9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Stockholm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cb3729feaf6aec51\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Tallinn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2d9f9a06e6fb643\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Tirane\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89a45462fea2c10f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Tiraspol\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d6b1f210d50f754\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Ulyanovsk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1499bddb1c3cd9c4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Uzhgorod\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f000706231cd95de\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Vaduz\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"721952ef6b620ac1\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Vatican\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fbe6794523c945f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Vienna\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6c916621c9aa61ca\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Vilnius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b2da002461b2fb52\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Volgograd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5c228fc1c5ca344\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Warsaw\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"679c544ad742918b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Zagreb\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d79400b355f7420e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Zaporozhye\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c8591941d6a05c67\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Europe/Zurich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d06e5201e709b34\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GB\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e239e9b665518f29\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GB-Eire\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e5c29103e26f30a7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GMT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f9f701f984dda4c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GMT+0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96b127852e955cb0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GMT-0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39e4fc9fa8ac7912\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/GMT0\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a46fffe76909b308\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Greenwich\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a93f9bc1360c7bb6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/HST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9ccf2e0571d7a055\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Hongkong\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"2dcdc8a8603bf9db\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Iceland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ae5b2a5315fb6d71\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Antananarivo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b60d355d74a46900\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Chagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1f8a7d443890813a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Christmas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fa9f1e371d322b07\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Cocos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d9b92e9478e438cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Comoro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c15d29f19f32721\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Kerguelen\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8c222b15094fbb6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Mahe\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"80425d0ee2f44545\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Maldives\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c81353bcbbfea3aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Mauritius\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b71224ab10b4f91\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Mayotte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c96c29e5864f8b94\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Indian/Reunion\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d4893929cef0dc6f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Iran\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a3449adc47ac17eb\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Israel\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5c9b5e6012c69e7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Jamaica\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c326368bfa01c07d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Japan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89956b5d481c67cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e8f0f513bd9b13ce\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Libya\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9bbd324a879f36b2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/MET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"106d7a950c5b5f0c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/MST\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"44ae3ef628bccc75\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/MST7MDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ba2da31ba51b5257\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Mexico/BajaNorte\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4132f63c1d0bb298\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Mexico/BajaSur\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c2bdcd3cc0430d8e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Mexico/General\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b38cd39971319bc2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/NZ\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c77472fa4f652162\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/NZ-CHAT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a8a59fb790143aab\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Navajo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"117319ad54968820\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/PRC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ebafe7d06a2b8cbe\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/PST8PDT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5fbead6e401b30cf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Apia\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8646bf20d3afde1d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Auckland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e67a29dd15b4b65a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Bougainville\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f3085b5268db7362\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Chatham\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4d189da9d81511ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Chuuk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5a641cbeff9ab75f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Easter\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"9410c31a1980e92e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Efate\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b6bfbed32d1e3472\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Enderbury\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"72b6ff2be44410af\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Fakaofo\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"263961ba76d5705f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Fiji\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a02af1382ddb4b59\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Funafuti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab012a4cc84b1f39\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Galapagos\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"af2cac75fbcf0a0c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Gambier\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4b7024d1630ac2a2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Guadalcanal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93e3354e0f6a3990\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Guam\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"d3d5fcc3cc4e3082\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Honolulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"398add74fa39b132\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Johnston\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"93180e2362db5a4e\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Kiritimati\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"62545477798a16aa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Kosrae\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"4dbe91086defd9c8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Kwajalein\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"70ccf5a23f0d327\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Majuro\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"133ae8682a601c46\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Marquesas\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7b438478c161b802\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Midway\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b363bc9d9839fcf\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Nauru\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cff20d4e3a1d47b4\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Niue\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2afadf49169a48f\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Norfolk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f2fb2c5cd6f69a61\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Noumea\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1d842612a830a12d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Pago_Pago\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a34c7292f1c09296\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Palau\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cc6361d6652ae816\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Pitcairn\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3e1651f5e848f4cd\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Pohnpei\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"26d198e8f1eff1a9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Ponape\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"449ccb9d93dbcc47\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Port_Moresby\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"52334dcbd458f866\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Rarotonga\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"adcb51199b09bae7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Saipan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f324110b780824ac\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1bd3c3267b6b60e9\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Tahiti\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"fb6f3373a1d848\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Tarawa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4741f80dafdf342\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Tongatapu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1652232ed56b8ae5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Truk\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"840b44aeb660e6e8\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Wake\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8f53438d4570fe4b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Wallis\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3d559bf0ae151a2d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Pacific/Yap\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3cd6fd9b027bf04c\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Poland\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8844dd67d8c1ae84\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Portugal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"19c7b108da206caa\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/ROC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4b9d9effb641a1a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/ROK\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cdb03b1adada2eb0\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Singapore\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c3c7683ed1b4fb7\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Turkey\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"c101df9029f2eb75\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/UCT\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b1963125c1b2b602\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Alaska\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7dfa071c3ebb04ba\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Aleutian\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"3fbffe7f62fae03a\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Arizona\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7a3fa42e34647d80\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Central\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6f0ad9d09c257a76\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/East-Indiana\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"ab832d8fa26cc928\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Eastern\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5244d92ea9e1232d\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Hawaii\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f1110948ce35a690\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Indiana-Starke\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7faf9ed79fd96b26\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Michigan\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfe890fc293f00ea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Mountain\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"210136c7870615d5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Pacific\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"37497e70c7176ff2\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Pacific-New\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"89901b1fa534e635\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/US/Samoa\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"daf22d06c3871cf6\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/UTC\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"cd55f6fa16ce9367\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Universal\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6ac8775ef884f95b\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/W-SU\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"83dfd67e54569bea\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/WET\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65cc6726aea49573\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/right/Zulu\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"6950690b937823ad\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/tzdata.zi\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f71417898a21f3b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/zone.tab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8b794c5cc7c62d42\",\n   \"location\": {\n    \"path\": \"/usr/share/zoneinfo/zone1970.tab\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7f41c3d33b8c5c14\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_bootctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5b35dce09f72e0f0\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_busctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"dbb5ef99f38caac6\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_coredumpctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"39284c6278f0c117\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_curl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56b86062b7f7fb35\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_hostnamectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"65f524766c984c4f\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_journalctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"92f266814544288e\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_kernel-install\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"b63d6c75decd8622\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_localectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a4e215158f26e3f7\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_loginctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"513497eb517fa2b5\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_sd_hosts_or_user_at_host\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"17408aaf0aee505d\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_sd_machines\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a5a7ac9822ad9440\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_sd_outputmodes\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"e4ab200c6d017c67\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_sd_unit_files\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1b1db1b6a387b424\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemctl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"168a654f255eedc5\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f8999b68c3336793\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-analyze\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"77bb5a74f77e5243\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-delta\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1771c6f269725e15\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-inhibit\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96227d86eb19c4be\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-resolve\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"84bacc965ac1c0c0\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-run\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"eef2626f5841bdf2\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_systemd-tmpfiles\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5d15467f01848155\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_timedatectl\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f4c680570d84222\",\n   \"location\": {\n    \"path\": \"/usr/share/zsh/site-functions/_udevadm\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7736212392389cc0\",\n   \"location\": {\n    \"path\": \"/var/cache/ldconfig/aux-cache\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"573e85ff1c4f1984\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Basenames\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"96c2e44e3c37bef6\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Conflictname\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"be4728998b8832cc\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Dirnames\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"50299136d41f5b39\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Group\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"47fa00c3f98e7be4\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Installtid\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"555abef1d73a6f60\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Name\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"839eb54cb2a44de7\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Obsoletename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"373ba897759f83fc\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Packages\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"a587c13963391ae9\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Providename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"7e86eed918c06891\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Requirename\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"8ea8a7453e2f3a16\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Sha1header\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"bfb4df36b36e667e\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Sigmd5\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"823fdd2654c81055\",\n   \"location\": {\n    \"path\": \"/var/lib/rpm/Triggername\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"56b213599326178f\",\n   \"location\": {\n    \"path\": \"/var/lib/systemd/catalog/database\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"f442dbee1cfd7428\",\n   \"location\": {\n    \"path\": \"/var/lib/systemd/random-seed\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"5efc6daafe107565\",\n   \"location\": {\n    \"path\": \"/var/log/btmp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"12a68f870bc5fa70\",\n   \"location\": {\n    \"path\": \"/var/log/lastlog\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  },\n  {\n   \"id\": \"1e207f996725a978\",\n   \"location\": {\n    \"path\": \"/var/log/wtmp\",\n    \"layerID\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\"\n   }\n  }\n ],\n \"source\": {\n  \"id\": \"61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n  \"type\": \"image\",\n  \"target\": {\n   \"userInput\": \"centos:8.2.2004\",\n   \"imageID\": \"sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f\",\n   \"manifestDigest\": \"sha256:61ffd15907f2d16178b4c05172a71e85f85caffb4532169fc693a3cec2504d6f\",\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"tags\": [\n    \"centos:8.2.2004\"\n   ],\n   \"imageSize\": 215273207,\n   \"layers\": [\n    {\n     \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n     \"digest\": \"sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8\",\n     \"size\": 215273207\n    }\n   ],\n   \"manifest\": \"eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjoyMTc4LCJkaWdlc3QiOiJzaGEyNTY6ODMxNjkxNTk5Yjg4YWQ2Y2MyYTRhYmJkMGU4OTY2MWExMjFhZmYxNGNmYTI4OWFkODQwZmQzOTQ2ZjI3NGYxZiJ9LCJsYXllcnMiOlt7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLCJzaXplIjoyMjI1NzM1NjgsImRpZ2VzdCI6InNoYTI1NjplYjI5NzQ1YjgyMjhlMWU5N2MwMWIxZDVjMjU1NGEzMTljMDBhOTRkOGRkNTc0NmEzOTA0MjIyYWQ2NWExM2Y4In1dfQ==\",\n   \"config\": \"eyJhcmNoaXRlY3R1cmUiOiJhbWQ2NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vYmFzaCJdLCJBcmdzRXNjYXBlZCI6dHJ1ZSwiSW1hZ2UiOiJzaGEyNTY6NzJmZjE3NDhkMzYwZDAwNjljOTE1MDhjYTNmZmRlMGQ3NzQ4OTg5Yzc1ZDE5M2VlZTNiMGU4NWM2MjU1N2VmYSIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOnsib3JnLmxhYmVsLXNjaGVtYS5idWlsZC1kYXRlIjoiMjAyMDA2MTEiLCJvcmcubGFiZWwtc2NoZW1hLmxpY2Vuc2UiOiJHUEx2MiIsIm9yZy5sYWJlbC1zY2hlbWEubmFtZSI6IkNlbnRPUyBCYXNlIEltYWdlIiwib3JnLmxhYmVsLXNjaGVtYS5zY2hlbWEtdmVyc2lvbiI6IjEuMCIsIm9yZy5sYWJlbC1zY2hlbWEudmVuZG9yIjoiQ2VudE9TIn19LCJjb250YWluZXIiOiIwYTZiOGNiZGVlNzIxOGQxZGE4NDE0NWU4NjdjOGNlMWMzNmQyMjZhNWNmY2EyMDgxMjVkMDhhYzU2ZjdjNWFmIiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6IjBhNmI4Y2JkZWU3MiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9iYXNoXCJdIl0sIkFyZ3NFc2NhcGVkIjp0cnVlLCJJbWFnZSI6InNoYTI1Njo3MmZmMTc0OGQzNjBkMDA2OWM5MTUwOGNhM2ZmZGUwZDc3NDg5ODljNzVkMTkzZWVlM2IwZTg1YzYyNTU3ZWZhIiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6eyJvcmcubGFiZWwtc2NoZW1hLmJ1aWxkLWRhdGUiOiIyMDIwMDYxMSIsIm9yZy5sYWJlbC1zY2hlbWEubGljZW5zZSI6IkdQTHYyIiwib3JnLmxhYmVsLXNjaGVtYS5uYW1lIjoiQ2VudE9TIEJhc2UgSW1hZ2UiLCJvcmcubGFiZWwtc2NoZW1hLnNjaGVtYS12ZXJzaW9uIjoiMS4wIiwib3JnLmxhYmVsLXNjaGVtYS52ZW5kb3IiOiJDZW50T1MifX0sImNyZWF0ZWQiOiIyMDIwLTA2LTE3VDAwOjIyOjI1LjQ3MjgyNjg3WiIsImRvY2tlcl92ZXJzaW9uIjoiMTguMDkuNyIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIwLTA2LTE3VDAwOjIyOjI0LjkxODIzMzc2MloiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6ODQ3MDBjMTFmY2M5NjlhYzA4ZWYyNWYxMTU1MTNkNzZjN2I3MmE0MTE4YzAxZmJjODZlZjBhNjA1NmZkZWJlYiBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMjAtMDYtMTdUMDA6MjI6MjUuMjc2MDIxNDM4WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgTEFCRUwgb3JnLmxhYmVsLXNjaGVtYS5zY2hlbWEtdmVyc2lvbj0xLjAgb3JnLmxhYmVsLXNjaGVtYS5uYW1lPUNlbnRPUyBCYXNlIEltYWdlIG9yZy5sYWJlbC1zY2hlbWEudmVuZG9yPUNlbnRPUyBvcmcubGFiZWwtc2NoZW1hLmxpY2Vuc2U9R1BMdjIgb3JnLmxhYmVsLXNjaGVtYS5idWlsZC1kYXRlPTIwMjAwNjExIiwiZW1wdHlfbGF5ZXIiOnRydWV9LHsiY3JlYXRlZCI6IjIwMjAtMDYtMTdUMDA6MjI6MjUuNDcyODI2ODdaIiwiY3JlYXRlZF9ieSI6Ii9iaW4vc2ggLWMgIyhub3ApICBDTUQgW1wiL2Jpbi9iYXNoXCJdIiwiZW1wdHlfbGF5ZXIiOnRydWV9XSwib3MiOiJsaW51eCIsInJvb3RmcyI6eyJ0eXBlIjoibGF5ZXJzIiwiZGlmZl9pZHMiOlsic2hhMjU2OmViMjk3NDViODIyOGUxZTk3YzAxYjFkNWMyNTU0YTMxOWMwMGE5NGQ4ZGQ1NzQ2YTM5MDQyMjJhZDY1YTEzZjgiXX19\",\n   \"repoDigests\": [\n    \"centos@sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b\"\n   ],\n   \"architecture\": \"amd64\",\n   \"os\": \"linux\"\n  }\n },\n \"distro\": {\n  \"prettyName\": \"CentOS Linux 8 (Core)\",\n  \"name\": \"CentOS Linux\",\n  \"id\": \"centos\",\n  \"idLike\": [\n   \"rhel\",\n   \"fedora\"\n  ],\n  \"version\": \"8 (Core)\",\n  \"versionID\": \"8\",\n  \"homeURL\": \"https://www.centos.org/\",\n  \"bugReportURL\": \"https://bugs.centos.org/\",\n  \"cpeName\": \"cpe:/o:centos:centos:8\"\n },\n \"descriptor\": {\n  \"name\": \"syft\",\n  \"version\": \"[not provided]\",\n  \"configuration\": {\n   \"configPath\": \"\",\n   \"verbosity\": 0,\n   \"quiet\": false,\n   \"output\": [\n    \"json\"\n   ],\n   \"output-template-path\": \"\",\n   \"file\": \"\",\n   \"check-for-app-update\": true,\n   \"dev\": {\n    \"profile-cpu\": false,\n    \"profile-mem\": false\n   },\n   \"log\": {\n    \"structured\": false,\n    \"level\": \"warn\",\n    \"file-location\": \"\"\n   },\n   \"catalogers\": null,\n   \"package\": {\n    \"cataloger\": {\n     \"enabled\": true,\n     \"scope\": \"Squashed\"\n    },\n    \"search-unindexed-archives\": false,\n    \"search-indexed-archives\": true\n   },\n   \"attest\": {},\n   \"file-metadata\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"digests\": [\n     \"sha256\"\n    ]\n   },\n   \"file-classification\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    }\n   },\n   \"file-contents\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"Squashed\"\n    },\n    \"skip-files-above-size\": 1048576,\n    \"globs\": []\n   },\n   \"secrets\": {\n    \"cataloger\": {\n     \"enabled\": false,\n     \"scope\": \"AllLayers\"\n    },\n    \"additional-patterns\": {},\n    \"exclude-pattern-names\": [],\n    \"reveal-values\": false,\n    \"skip-files-above-size\": 1048576\n   },\n   \"registry\": {\n    \"insecure-skip-tls-verify\": false,\n    \"insecure-use-http\": false,\n    \"auth\": []\n   },\n   \"exclude\": [],\n   \"platform\": \"\",\n   \"name\": \"\",\n   \"parallelism\": 1\n  }\n },\n \"schema\": {\n  \"version\": \"7.0.1\",\n  \"url\": \"https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-7.0.1.json\"\n }\n}\n"
  },
  {
    "path": "test/install/.dockerignore",
    "content": "**"
  },
  {
    "path": "test/install/.gitignore",
    "content": "cache/"
  },
  {
    "path": "test/install/0_checksums_test.sh",
    "content": ". test_harness.sh\n\n# search for an asset in a release checksums file\ntest_search_for_asset_release() {\n  fixture=./testdata/syft_0.36.0_checksums.txt\n\n  # search_for_asset [checksums-file-path] [name] [os] [arch] [format]\n\n  # positive case\n  actual=$(search_for_asset \"${fixture}\" \"syft\" \"linux\" \"amd64\" \"tar.gz\")\n  assertEquals \"syft_0.36.0_linux_amd64.tar.gz\" \"${actual}\" \"unable to find release asset\"\n\n  # negative cases\n  actual=$(search_for_asset \"${fixture}\" \"syft\" \"Linux\" \"amd64\" \"tar.gz\")\n  assertEquals \"\" \"${actual}\" \"found a release asset but did not expect to (os)\"\n\n  actual=$(search_for_asset \"${fixture}\" \"syft\" \"darwin\" \"amd64\" \"rpm\")\n  assertEquals \"\" \"${actual}\" \"found a release asset but did not expect to (format)\"\n\n}\n\nrun_test_case test_search_for_asset_release\n\n\n# search for an asset in a snapshot checksums file\ntest_search_for_asset_snapshot() {\n  fixture=./testdata/syft_0.35.1-SNAPSHOT-d461f63_checksums.txt\n\n  # search_for_asset [checksums-file-path] [name] [os] [arch] [format]\n\n  # positive case\n  actual=$(search_for_asset \"${fixture}\" \"syft\" \"linux\" \"amd64\" \"rpm\")\n  assertEquals \"syft_0.35.1-SNAPSHOT-d461f63_linux_amd64.rpm\" \"${actual}\" \"unable to find snapshot asset\"\n\n  # negative case\n  actual=$(search_for_asset \"${fixture}\" \"syft\" \"linux\" \"amd64\" \"zip\")\n  assertEquals \"\" \"${actual}\" \"found a snapshot asset but did not expect to (format)\"\n}\n\nrun_test_case test_search_for_asset_snapshot\n\n\n# verify 256 digest of a file\ntest_hash_sha256() {\n  target=./testdata/assets/valid/syft_1.5.0_linux_arm64.tar.gz\n\n  # hash_sha256 [target]\n\n  # positive case\n  actual=$(hash_sha256 \"${target}\")\n  assertEquals \"8d57abb57a0dae3ff23c8f0df1f51951b7772822e0d560e860d6f68c24ef6d3d\" \"${actual}\" \"mismatched checksum\"\n}\n\nrun_test_case test_hash_sha256\n\n# verify 256 digest of a file relative to the checksums file\ntest_hash_sha256_verify() {\n\n  # hash_sha256_verify [target] [checksums]\n\n\n  # positive case\n\n  checksums=./testdata/assets/valid/checksums.txt\n  target=./testdata/assets/valid/syft_1.5.0_linux_arm64.tar.gz\n\n  hash_sha256_verify \"${target}\" \"${checksums}\"\n  assertEquals \"0\" \"$?\" \"mismatched checksum\"\n\n\n  # negative case\n\n  # we are expecting error messages, which is confusing to look at in passing tests... disable logging for now\n  log_set_priority -1\n\n  checksums=./testdata/assets/invalid/checksums.txt\n  target=./testdata/assets/invalid/syft_1.5.0_linux_arm64.tar.gz\n\n  hash_sha256_verify \"${target}\" \"${checksums}\"\n  assertEquals \"1\" \"$?\" \"verification did not catch mismatched checksum\"\n\n  # restore logging...\n  log_set_priority 0\n}\n\nrun_test_case test_hash_sha256_verify\n"
  },
  {
    "path": "test/install/1_download_snapshot_asset_test.sh",
    "content": ". test_harness.sh\n\nDOWNLOAD_SNAPSHOT_POSITIVE_CASES=0\n\n# helper for asserting test_positive_snapshot_download_asset positive cases\ntest_positive_snapshot_download_asset() {\n  os=\"$1\"\n  arch=\"$2\"\n  format=\"$3\"\n\n  # for troubleshooting\n  # log_set_priority 10\n\n  name=${PROJECT_NAME}\n  github_download=$(snapshot_download_url)\n  version=$(snapshot_version)\n\n  tmpdir=$(mktemp -d)\n\n  actual_filepath=$(download_asset \"${github_download}\" \"${tmpdir}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\" )\n\n  assertFileExists \"${actual_filepath}\" \"download_asset os=${os} arch=${arch} format=${format}\"\n\n  assertFilesEqual \\\n    \"$(snapshot_dir)/${name}_${version}_${os}_${arch}.${format}\" \\\n    \"${actual_filepath}\" \\\n    \"unable to download os=${os} arch=${arch} format=${format}\"\n\n  ((DOWNLOAD_SNAPSHOT_POSITIVE_CASES++))\n\n  rm -rf -- \"$tmpdir\"\n}\n\n\ntest_download_snapshot_asset_exercised_all_assets() {\n  expected=$(snapshot_assets_count)\n\n  assertEquals \"${expected}\" \"${DOWNLOAD_SNAPSHOT_POSITIVE_CASES}\" \"did not download all possible assets (missing an os/arch/format variant?)\"\n}\n\n# helper for asserting download_asset negative cases\ntest_negative_snapshot_download_asset() {\n  os=\"$1\"\n  arch=\"$2\"\n  format=\"$3\"\n\n  # for troubleshooting\n  # log_set_priority 10\n\n  name=${PROJECT_NAME}\n  github_download=$(snapshot_download_url)\n  version=$(snapshot_version)\n\n  tmpdir=$(mktemp -d)\n\n  actual_filepath=$(download_asset \"${github_download}\" \"${tmpdir}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\")\n\n  assertEquals \"\"  \"${actual_filepath}\" \"unable to download os=${os} arch=${arch} format=${format}\"\n\n  rm -rf -- \"$tmpdir\"\n}\n\ntest_sboms_have_packages() {\n  if ! command -v jq &> /dev/null; then\n    echo \"jq command not found. Please install jq or ensure it is in your PATH.\"\n    exit 1\n  fi\n\n  find \"$(snapshot_dir)/\" -name \"*.sbom\" -print0 | while IFS= read -r -d '' file; do\n      count=$(cat \"$file\" | jq \".artifacts | length\")\n      if [ \"$count\" -lt 80 ]; then\n          echo \"not enough packages found for file: $file\"\n          exit 1\n      fi\n  done\n}\n\n\nworker_pid=$(setup_snapshot_server)\ntrap 'teardown_snapshot_server ${worker_pid}' EXIT\n\n# exercise all possible assets\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"amd64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"amd64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"amd64\" \"rpm\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"amd64\" \"deb\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"arm64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"arm64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"arm64\" \"rpm\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"arm64\" \"deb\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"ppc64le\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"ppc64le\" \"tar.gz\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"ppc64le\" \"rpm\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"ppc64le\" \"deb\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"s390x\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"s390x\" \"tar.gz\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"s390x\" \"rpm\"\nrun_test_case test_positive_snapshot_download_asset \"linux\" \"s390x\" \"deb\"\n\nrun_test_case test_positive_snapshot_download_asset \"darwin\" \"amd64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"darwin\" \"amd64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_download_asset \"darwin\" \"arm64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"darwin\" \"arm64\" \"tar.gz\"\n\nrun_test_case test_positive_snapshot_download_asset \"windows\" \"amd64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"windows\" \"amd64\" \"zip\"\nrun_test_case test_positive_snapshot_download_asset \"windows\" \"arm64\" \"sbom\"\nrun_test_case test_positive_snapshot_download_asset \"windows\" \"arm64\" \"zip\"\n# note: the mac signing process produces a dmg which is not part of the snapshot process (thus is not exercised here)\n\n# let's make certain we covered all assets that were expected\nrun_test_case test_download_snapshot_asset_exercised_all_assets\n\n# make certain we handle missing assets alright\nrun_test_case test_negative_snapshot_download_asset \"bogus\" \"amd64\" \"zip\"\n\n# given we've downloaded the SBOMs, sanity check that they have a reasonable number of packages\nrun_test_case test_sboms_have_packages\n\ntrap - EXIT\nteardown_snapshot_server \"${worker_pid}\"\n"
  },
  {
    "path": "test/install/2_download_release_asset_test.sh",
    "content": ". test_harness.sh\n\ntest_download_release_asset() {\n  release=\"$1\"\n  os=\"$2\"\n  arch=\"$3\"\n  format=\"$4\"\n  expected_mime_type=\"$5\"\n\n  # for troubleshooting\n  # log_set_priority 10\n\n  name=${PROJECT_NAME}\n  version=$(tag_to_version ${release})\n  github_download=\"https://github.com/${OWNER}/${REPO}/releases/download/${release}\"\n\n  tmpdir=$(mktemp -d)\n\n  actual_filepath=$(download_asset \"${github_download}\" \"${tmpdir}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\" )\n\n  assertFileExists \"${actual_filepath}\" \"download_asset os=${os} arch=${arch} format=${format}\"\n\n  actual_mime_type=$(file -b --mime-type ${actual_filepath})\n\n  assertEquals \"${expected_mime_type}\" \"${actual_mime_type}\" \"unexpected mimetype for os=${os} arch=${arch} format=${format}\"\n\n  rm -rf -- \"$tmpdir\"\n}\n\n# always test against the latest release\nrelease=$(get_release_tag \"${OWNER}\" \"${REPO}\" \"latest\" )\n\n# exercise all possible assets against a real github release (based on asset listing from https://github.com/anchore/syft/releases/tag/v0.36.0)\n\n# verify all downloads against the checksums file + checksums file signature\nVERIFY_SIGN=true\n\nrun_test_case test_download_release_asset \"${release}\" \"darwin\" \"amd64\" \"tar.gz\" \"application/gzip\"\nrun_test_case test_download_release_asset \"${release}\" \"darwin\" \"arm64\" \"tar.gz\" \"application/gzip\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"amd64\" \"tar.gz\" \"application/gzip\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"amd64\" \"rpm\" \"application/x-rpm\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"amd64\" \"deb\" \"application/vnd.debian.binary-package\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"arm64\" \"tar.gz\" \"application/gzip\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"arm64\" \"rpm\" \"application/x-rpm\"\nrun_test_case test_download_release_asset \"${release}\" \"linux\" \"arm64\" \"deb\" \"application/vnd.debian.binary-package\"\n"
  },
  {
    "path": "test/install/3_install_asset_test.sh",
    "content": ". test_harness.sh\n\nINSTALL_ARCHIVE_POSITIVE_CASES=0\n\n# helper for asserting install_asset positive cases\ntest_positive_snapshot_install_asset() {\n  os=\"$1\"\n  arch=\"$2\"\n  format=\"$3\"\n\n  # for troubleshooting\n  # log_set_priority 10\n\n  name=${PROJECT_NAME}\n  binary=$(get_binary_name \"${os}\" \"${arch}\" \"${PROJECT_NAME}\")\n  github_download=$(snapshot_download_url)\n  version=$(snapshot_version)\n\n  download_dir=$(mktemp -d)\n  install_dir=$(mktemp -d)\n\n  download_and_install_asset \"${github_download}\" \"${download_dir}\" \"${install_dir}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\" \"${binary}\"\n\n  assertEquals \"0\" \"$?\" \"download/install did not succeed\"\n\n  expected_path=\"${install_dir}/${binary}\"\n  assertFileExists \"${expected_path}\" \"install_asset os=${os} arch=${arch} format=${format}\"\n\n  # directory structure for arch has been updated as of go 1.18\n  # https://goreleaser.com/customization/build/#why-is-there-a-_v1-suffix-on-amd64-buildsjk\n  if [ $arch == \"amd64\" ]; then\n\t  arch=\"amd64_v1\"\n  fi\n\n  # note: this is a change made in goreleaser v1.62.0\n  local_suffix=\"\"\n  if [ \"${arch}\" == \"arm64\" ]; then\n    local_suffix=\"_v8.0\"\n  fi\n\n  # note: this is a change made in goreleaser v2.5.0\n  if [ \"${arch}\" == \"ppc64le\" ]; then\n    local_suffix=\"_power8\"\n  fi\n\n\n  assertFilesEqual \\\n    \"$(snapshot_dir)/${os}-build_${os}_${arch}${local_suffix}/${binary}\" \\\n    \"${expected_path}\" \\\n    \"unable to verify installation of os=${os} arch=${arch} format=${format}\"\n\n ((INSTALL_ARCHIVE_POSITIVE_CASES++))\n\n  rm -rf -- \"$download_dir\"\n  rm -rf -- \"$install_dir\"\n}\n\n# helper for asserting install_asset negative cases\ntest_negative_snapshot_install_asset() {\n  os=\"$1\"\n  arch=\"$2\"\n  format=\"$3\"\n\n  # for troubleshooting\n  # log_set_priority 10\n\n  name=${PROJECT_NAME}\n  binary=$(get_binary_name \"${os}\" \"${arch}\" \"${PROJECT_NAME}\")\n  github_download=$(snapshot_download_url)\n  version=$(snapshot_version)\n\n  download_dir=$(mktemp -d)\n  install_dir=$(mktemp -d)\n\n  download_and_install_asset \"${github_download}\" \"${download_dir}\" \"${install_dir}\" \"${name}\" \"${os}\" \"${arch}\" \"${version}\" \"${format}\" \"${binary}\"\n\n  assertNotEquals \"0\" \"$?\" \"download/install should have failed but did not\"\n\n  rm -rf -- \"$download_dir\"\n  rm -rf -- \"$install_dir\"\n}\n\n\ntest_install_asset_exercised_all_archive_assets() {\n  expected=$(snapshot_assets_archive_count)\n\n  assertEquals \"${expected}\" \"${INSTALL_ARCHIVE_POSITIVE_CASES}\" \"did not download all possible archive assets (missing an os/arch/format variant?)\"\n}\n\n\nworker_pid=$(setup_snapshot_server)\ntrap 'teardown_snapshot_server ${worker_pid}' EXIT\n\n# exercise all possible archive assets (not rpm/deb/dmg) against a snapshot build\nrun_test_case test_positive_snapshot_install_asset \"linux\" \"amd64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"linux\" \"arm64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"linux\" \"ppc64le\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"linux\" \"s390x\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"darwin\" \"amd64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"darwin\" \"arm64\" \"tar.gz\"\nrun_test_case test_positive_snapshot_install_asset \"windows\" \"amd64\" \"zip\"\nrun_test_case test_positive_snapshot_install_asset \"windows\" \"arm64\" \"zip\"\n\n# let's make certain we covered all assets that were expected\nrun_test_case test_install_asset_exercised_all_archive_assets\n\n# make certain we handle missing assets alright\nrun_test_case test_negative_snapshot_install_asset \"bogus\" \"amd64\" \"zip\"\n\ntrap - EXIT\nteardown_snapshot_server \"${worker_pid}\"\n"
  },
  {
    "path": "test/install/4_prep_signature_verification_test.sh",
    "content": ". test_harness.sh\n\ntest_compare_semver() {\n  # compare_semver [version1] [version2]\n\n  # positive cases (version1 >= version2)\n  compare_semver \"0.32.0\" \"0.32.0\"\n  assertEquals \"0\" \"$?\" \"+ versions should equal\"\n\n  compare_semver \"0.32.1\" \"0.32.0\"\n  assertEquals \"0\" \"$?\" \"+ patch version should be greater\"\n\n  compare_semver \"0.33.0\" \"0.32.0\"\n  assertEquals \"0\" \"$?\" \"+ minor version should be greater\"\n\n  compare_semver \"0.333.0\" \"0.32.0\"\n  assertEquals \"0\" \"$?\" \"+ minor version should be greater (different length)\"\n\n  compare_semver \"00.33.00\" \"0.032.0\"\n  assertEquals \"0\" \"$?\" \"+ minor version should be greater (different length reversed)\"\n\n  compare_semver \"1.0.0\" \"0.9.9\"\n  assertEquals \"0\" \"$?\" \"+ major version should be greater\"\n\n  compare_semver \"v1.0.0\" \"1.0.0\"\n  assertEquals \"0\" \"$?\" \"+ can remove leading 'v' from version\"\n\n  # negative cases (version1 < version2)\n  compare_semver \"0.32.0\" \"0.32.1\"\n  assertEquals \"1\" \"$?\" \"- patch version should be less\"\n\n  compare_semver \"0.32.7\" \"0.33.0\"\n  assertEquals \"1\" \"$?\" \"- minor version should be less\"\n\n  compare_semver \"00.00032.070\" \"0.33.0\"\n  assertEquals \"1\" \"$?\" \"- minor version should be less (different length)\"\n\n  compare_semver \"0.32.7\" \"00.0033.000\"\n  assertEquals \"1\" \"$?\" \"- minor version should be less (different length reversed)\"\n\n  compare_semver \"1.9.9\" \"2.0.1\"\n  assertEquals \"1\" \"$?\" \"- major version should be less\"\n\n  compare_semver \"1.0.0\" \"v2.0.0\"\n  assertEquals \"1\" \"$?\" \"- can remove leading 'v' from version\"\n}\n\nrun_test_case test_compare_semver\n\n# ensure that various signature verification pre-requisites are correctly checked for\ntest_prep_signature_verification() {\n  # prep_sign_verification [version]\n\n  # we are expecting error messages, which is confusing to look at in passing tests... disable logging for now\n  log_set_priority -1\n\n  # backup original values...\n  OG_COSIGN_BINARY=${COSIGN_BINARY}\n\n  # check the verification path...\n  VERIFY_SIGN=true\n\n  # release does not support signature verification\n  prep_signature_verification \"0.103.0\"\n  assertEquals \"1\" \"$?\" \"release does not support signature verification\"\n\n  # check that the COSIGN binary exists\n  COSIGN_BINARY=fake-cosign-that-doesnt-exist\n  prep_signature_verification \"0.105.0\"\n  assertEquals \"1\" \"$?\" \"cosign binary verification failed\"\n  # restore original values...\n  COSIGN_BINARY=${OG_COSIGN_BINARY}\n\n  # ignore any failing conditions since we are not verifying the signature\n  VERIFY_SIGN=false\n  prep_signature_verification \"0.103.0\"\n  assertEquals \"0\" \"$?\" \"release support verification should not have been triggered\"\n\n  COSIGN_BINARY=fake-cosign-that-doesnt-exist\n  prep_signature_verification \"0.105.0\"\n  assertEquals \"0\" \"$?\" \"cosign binary verification should not have been triggered\"\n  # restore original values...\n  COSIGN_BINARY=${OG_COSIGN_BINARY}\n\n  # restore logging...\n  log_set_priority 0\n}\n\nrun_test_case test_prep_signature_verification\n"
  },
  {
    "path": "test/install/Makefile",
    "content": "NAME=syft\n\nFINGERPRINT_FILE := cache.fingerprint\n\n# for local testing (not testing within containers) use the binny-managed version of cosign.\n# this also means that the user does not need to install cosign on their system to run tests.\nCOSIGN_BINARY=../../.tool/cosign\n\nIMAGE_NAME=$(NAME)-install.sh-env\nUBUNTU_IMAGE=$(IMAGE_NAME):ubuntu-20.04\nALPINE_IMAGE=$(IMAGE_NAME):alpine-3.6\nBUSYBOX_IMAGE=$(IMAGE_NAME):busybox-1.36\n\nENVS=./environments\nDOCKER_RUN=docker run --rm -t -w /project/test/install -v $(shell pwd)/../../:/project\nUNIT=make unit-run\n\n# acceptance testing is running the current install.sh against the latest release. Note: this could be a problem down\n# the line if there are breaking changes made that don't align with the latest release (but will be OK with the next\n# release). This tests both installing with signature verification and without.\nACCEPTANCE_CMD=sh -c '../../install.sh -v -b /usr/local/bin && syft version && rm /usr/local/bin/syft && ../../install.sh -b /usr/local/bin && syft version'\n# we also want to test against a previous release to ensure that install.sh defers execution to a former install.sh\nPREVIOUS_RELEASE=v0.33.0\nACCEPTANCE_PREVIOUS_RELEASE_CMD=sh -c \"../../install.sh -b /usr/local/bin $(PREVIOUS_RELEASE) && syft version\"\n\n\ndefine title\n    @printf '\\n≡≡≡[ $(1) ]≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\\n'\nendef\n\n.PHONY: test\ntest: unit acceptance\n\n.PHONY: ci-test-mac\nci-test-mac: unit-run acceptance-local\n\n# note: do not add acceptance-local to this list\n.PHONY: acceptance\nacceptance: acceptance-ubuntu-20.04 acceptance-alpine-3.6 acceptance-busybox-1.36\n\n.PHONY: unit\nunit: unit-ubuntu-20.04\n\n.PHONY: unit-local\nunit-local:\n\t$(call title,unit tests)\n\t@for f in $(shell ls *_test.sh); do echo \"Running unit test suite '$${f}'\"; bash -c \"COSIGN_BINARY=$(COSIGN_BINARY) ./$${f}\" || exit 1; done\n\n.PHONY: unit-run\nunit-run:\n\t$(call title,unit tests)\n\t@for f in $(shell ls *_test.sh); do echo \"Running unit test suite '$${f}'\"; bash $${f} || exit 1; done\n\n.PHONY: acceptance-local\nacceptance-local: acceptance-current-release-local acceptance-previous-release-local\n\n.PHONY: acceptance-current-release-local\nacceptance-current-release-local:\n\t$(ACCEPTANCE_CMD)\n\n.PHONY: acceptance-previous-release-local\nacceptance-previous-release-local:\n\t$(ACCEPTANCE_PREVIOUS_RELEASE_CMD)\n\tsyft version | grep $(shell echo $(PREVIOUS_RELEASE)| tr -d \"v\")\n\n.PHONY: save\nsave: ubuntu-20.04 alpine-3.6 busybox-1.36\n\t@mkdir cache || true\n\tdocker image save -o cache/ubuntu-env.tar $(UBUNTU_IMAGE)\n\tdocker image save -o cache/alpine-env.tar $(ALPINE_IMAGE)\n\tdocker image save -o cache/busybox-env.tar $(BUSYBOX_IMAGE)\n\n.PHONY: load\nload:\n\tdocker image load -i cache/ubuntu-env.tar\n\tdocker image load -i cache/alpine-env.tar\n\tdocker image load -i cache/busybox-env.tar\n\n## UBUNTU #######################################################\n\n.PHONY: acceptance-ubuntu-20.04\nacceptance-ubuntu-20.04: ubuntu-20.04\n\t$(call title,ubuntu:20.04 - acceptance)\n\t$(DOCKER_RUN) $(UBUNTU_IMAGE) \\\n\t\t$(ACCEPTANCE_CMD)\n\n.PHONY: unit-ubuntu-20.04\nunit-ubuntu-20.04: ubuntu-20.04\n\t$(call title,ubuntu:20.04 - unit)\n\t$(DOCKER_RUN) $(UBUNTU_IMAGE) \\\n\t\t$(UNIT)\n\n.PHONY: ubuntu-20.04\nubuntu-20.04:\n\t$(call title,ubuntu:20.04 - build environment)\n\tdocker build -t $(UBUNTU_IMAGE) -f $(ENVS)/Dockerfile-ubuntu-20.04 .\n\n## ALPINE #######################################################\n\n# note: unit tests cannot be run with sh (alpine doesn't have bash by default)\n\n.PHONY: acceptance-alpine-3.6\nacceptance-alpine-3.6: alpine-3.6\n\t$(call title,alpine:3.6 - acceptance)\n\t$(DOCKER_RUN) $(ALPINE_IMAGE) \\\n\t\t$(ACCEPTANCE_CMD)\n\n.PHONY: alpine-3.6\nalpine-3.6:\n\t$(call title,alpine:3.6 - build environment)\n\tdocker build -t $(ALPINE_IMAGE) -f $(ENVS)/Dockerfile-alpine-3.6 .\n\n## BUSYBOX #######################################################\n\n# note: unit tests cannot be run with sh (busybox doesn't have bash by default)\n\n# note: busybox by default will not have cacerts, so you will get TLS warnings (we want to test under these conditions)\n\n.PHONY: acceptance-busybox-1.36\nacceptance-busybox-1.36: busybox-1.36\n\t$(call title,busybox-1.36 - acceptance)\n\t$(DOCKER_RUN) $(BUSYBOX_IMAGE) \\\n\t\t$(ACCEPTANCE_CMD)\n\t@echo \"\\n*** test note: you should see syft spit out a 'x509: certificate signed by unknown authority' error --this is expected ***\"\n\n.PHONY: busybox-1.36\nbusybox-1.36:\n\t$(call title,busybox-1.36 - build environment)\n\tdocker build -t $(BUSYBOX_IMAGE) -f $(ENVS)/Dockerfile-busybox-1.36 .\n\n## For CI ########################################################\n\n# requirement 3: we always need to recalculate the fingerprint based on source regardless of any existing fingerprint\n.PHONY: $(FINGERPRINT_FILE)\n$(FINGERPRINT_FILE):\n\t@find ./environments/* -type f -exec sha256sum {} \\; | sort -k2 > $(FINGERPRINT_FILE)\n\t@#cat $(FINGERPRINT_FILE) | sha256sum | awk '{print $$1}'\n"
  },
  {
    "path": "test/install/environments/Dockerfile-alpine-3.6",
    "content": "FROM alpine:3.6\nRUN apk update && apk add python3 wget curl unzip make ca-certificates jq\nRUN curl -O -L \"https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64\" && \\\n    mv cosign-linux-amd64 /usr/local/bin/cosign && \\\n    chmod +x /usr/local/bin/cosign\n"
  },
  {
    "path": "test/install/environments/Dockerfile-busybox-1.36",
    "content": "FROM alpine as certs\nRUN apk update && apk add ca-certificates\n\n# note: using qemu with a multi-arch image results in redirects not working with wget\n# so let docker pull the image that matches the hosts architecture first and then pull the correct asset\nFROM busybox:1.36.1-musl\n\nRUN ARCH=$(uname -m) && \\\n    if [ \"$ARCH\" = \"x86_64\" ]; then \\\n        COSIGN_ARCH=\"amd64\"; \\\n    elif [ \"$ARCH\" = \"aarch64\" ]; then \\\n        COSIGN_ARCH=\"arm64\"; \\\n    else \\\n        echo \"Unsupported architecture: $ARCH\" && exit 1; \\\n    fi && \\\n    echo \"Downloading cosign for $COSIGN_ARCH\" && \\\n    wget https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-${COSIGN_ARCH} && \\\n    mv cosign-linux-${COSIGN_ARCH} /bin/cosign && \\\n    chmod +x /bin/cosign\n\nCOPY --from=certs /etc/ssl/certs /etc/ssl/certs\n"
  },
  {
    "path": "test/install/environments/Dockerfile-ubuntu-20.04",
    "content": "FROM --platform=linux/amd64 ubuntu:20.04@sha256:33a5cc25d22c45900796a1aca487ad7a7cb09f09ea00b779e3b2026b4fc2faba\nRUN apt update -y && apt install make python3 curl unzip jq -y\nRUN LATEST_VERSION=$(curl https://api.github.com/repos/sigstore/cosign/releases/latest | grep tag_name | cut -d : -f2 | tr -d \"v\\\", \") && \\\n    curl -O -L \"https://github.com/sigstore/cosign/releases/latest/download/cosign_${LATEST_VERSION}_amd64.deb\" && \\\n    dpkg -i cosign_${LATEST_VERSION}_amd64.deb\n"
  },
  {
    "path": "test/install/github_test.sh",
    "content": ". test_harness.sh\n\n# check that we can extract single json values\ntest_extract_json_value() {\n  fixture=./testdata/github-api-syft-v0.36.0-release.json\n  content=$(cat ${fixture})\n\n  actual=$(extract_json_value \"${content}\" \"tag_name\")\n  assertEquals \"v0.36.0\" \"${actual}\" \"unable to find tag_name\"\n\n  actual=$(extract_json_value \"${content}\" \"id\")\n  assertEquals \"57501596\" \"${actual}\" \"unable to find tag_name\"\n}\n\nrun_test_case test_extract_json_value\n\n\n# check that we can extract github release tag from github api json\ntest_github_release_tag() {\n  fixture=./testdata/github-api-syft-v0.36.0-release.json\n  content=$(cat ${fixture})\n\n  actual=$(github_release_tag \"${content}\")\n  assertEquals \"v0.36.0\" \"${actual}\" \"unable to find release tag\"\n}\n\nrun_test_case test_github_release_tag\n\n\n# download a known good github release checksums and compare against a test-fixture\ntest_download_github_release_checksums() {\n  tmpdir=$(mktemp -d)\n\n  tag=v0.36.0\n  github_download=\"https://github.com/anchore/syft/releases/download/${tag}\"\n  name=${PROJECT_NAME}\n  version=$(tag_to_version \"${tag}\")\n\n  actual_filepath=$(download_github_release_checksums \"${github_download}\" \"${name}\" \"${version}\" \"${tmpdir}\")\n  assertFilesEqual \\\n    \"./testdata/syft_0.36.0_checksums.txt\" \\\n    \"${actual_filepath}\" \\\n    \"unable to find release tag\"\n\n  rm -rf -- \"$tmpdir\"\n}\n\nrun_test_case test_download_github_release_checksums\n\n\n# download a checksums file from a locally served-up snapshot directory and compare against the file in the snapshot dir\ntest_download_github_release_checksums_snapshot() {\n  tmpdir=$(mktemp -d)\n\n  github_download=$(snapshot_download_url)\n  name=${PROJECT_NAME}\n  version=$(snapshot_version)\n\n  actual_filepath=$(download_github_release_checksums \"${github_download}\" \"${name}\" \"${version}\" \"${tmpdir}\")\n  assertFilesEqual \\\n    \"$(snapshot_checksums_path)\" \\\n    \"${actual_filepath}\" \\\n    \"unable to find release tag\"\n\n  rm -rf -- \"$tmpdir\"\n}\n\nrun_test_case_with_snapshot_release test_download_github_release_checksums_snapshot"
  },
  {
    "path": "test/install/test_harness.sh",
    "content": "# disable using the install.sh entrypoint such that we can unit test\n# script functions without invoking main()\nTEST_INSTALL_SH=true\n\n. ../../install.sh\nset -u\n\nechoerr() {\n  echo \"$@\" 1>&2\n}\n\nprintferr() {\n  printf \"%s\" \"$*\" >&2\n}\n\n\nassertTrue() {\n  if eval \"$1\"; then\n    echo \"assertTrue failed: $2\"\n    exit 2\n  fi\n}\n\nassertFalse() {\n  if eval \"$1\"; then\n    echo \"assertFalse failed: $2\"\n    exit 2\n  fi\n}\n\nassertEquals() {\n  want=$1\n  got=$2\n  msg=$3\n  if [ \"$want\" != \"$got\" ]; then\n    echo \"assertEquals failed: want='$want' got='$got' $msg\"\n    exit 2\n  fi\n}\n\nassertFilesDoesNotExist() {\n  path=\"$1\"\n  msg=$2\n  if [ -f \"${path}\" ]; then\n    echo \"assertFilesDoesNotExist failed: path exists '$path': $msg\"\n    exit 2\n  fi\n}\n\nassertFileExists() {\n  path=\"$1\"\n  msg=$2\n  if [ ! -f \"${path}\" ]; then\n    echo \"assertFileExists failed: path does not exist '$path': $msg\"\n    exit 2\n  fi\n}\n\nassertFilesEqual() {\n  want=$1\n  got=$2\n  msg=$3\n\n  diff \"$1\" \"$2\"\n  if [ $? -ne 0 ]; then\n    echo \"assertFilesEqual failed: $msg\"\n    exit 2\n  fi\n}\n\nassertNotEquals() {\n  want=$1\n  got=$2\n  msg=$3\n  if [ \"$want\" = \"$got\" ]; then\n    echo \"assertNotEquals failed: want='$want' got='$got' $msg\"\n    exit 2\n  fi\n}\n\nlog_test_case() {\n  echo \"  running $@\"\n}\n\nrun_test_case_with_snapshot_release() {\n  log_test_case ${@:1}\n\n  worker_pid=$(setup_snapshot_server)\n  trap \"teardown_snapshot_server $worker_pid\" EXIT\n\n  # run test function with all arguments\n  ${@:1}\n\n  trap - EXIT\n  teardown_snapshot_server \"${worker_pid}\"\n}\n\nserve_port=8000\n\nsetup_snapshot_server() {\n  # if you want to see proof in the logs, feel free to adjust the redirection\n  python3 -m http.server --directory \"$(snapshot_dir)\" $serve_port &> /dev/null &\n  worker_pid=$!\n\n  echoerr \"serving up $(snapshot_dir) on port $serve_port\"\n\n  echoerr \"$(ls -1 $(snapshot_dir) | sed 's/^/  ▕―― /')\"\n\n  check_snapshots_server_ready\n\n  echoerr \"snapshot server ready! (worker=${worker_pid})\"\n\n  echo \"$worker_pid\"\n}\n\ncheck_snapshots_server_ready() {\n  i=0\n  until $(curl -m 3 --output /dev/null --silent --head --fail localhost:$serve_port/); do\n    sleep 1\n    ((i=i+1))\n    if [ \"$i\" -gt \"30\" ]; then\n      echoerr \"could not connect to local snapshot server! bailing...\"\n      exit 1\n    fi\n    printferr '.'\n  done\n}\n\nteardown_snapshot_server() {\n  worker_pid=\"$1\"\n  echoerr \"stopping worker=${worker_pid}\"\n  kill \"$worker_pid\"\n}\n\nsnapshot_version() {\n  partial=$(ls ../../snapshot/*_checksums.txt | grep -o \"_.*_checksums.txt\")\n  partial=\"${partial%_checksums.txt}\"\n  echo \"${partial#_}\"\n}\n\nsnapshot_download_url() {\n  echo \"localhost:${serve_port}\"\n}\n\nsnapshot_dir() {\n  echo \"../../snapshot\"\n}\n\nsnapshot_checksums_path() {\n  echo \"$(ls $(snapshot_dir)/*_checksums.txt)\"\n}\n\nsnapshot_assets_count() {\n  # example output before wc -l:\n\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_arm64.deb\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_arm64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_amd64.rpm\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_arm64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_amd64.deb\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_arm64.rpm\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_amd64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_windows_amd64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_arm64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_amd64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_amd64.tar.gz\n\n  echo \"$(find ../../snapshot -maxdepth 1 -type f | grep 'syft_' | grep -v checksums | wc -l | tr -d '[:space:]')\"\n}\n\n\nsnapshot_assets_archive_count() {\n  # example output before wc -l:\n\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_arm64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_arm64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_amd64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_windows_amd64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_arm64.zip\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_linux_amd64.tar.gz\n  #  ../../snapshot/syft_0.36.0-SNAPSHOT-e5e847a_darwin_amd64.tar.gz\n\n  echo \"$(find ../../snapshot -maxdepth 1  -type f | grep 'syft_' | grep 'tar\\|zip' | wc -l | tr -d '[:space:]')\"\n}\n\n\nrun_test_case() {\n  log_test_case ${@:1}\n  ${@:1}\n}\n"
  },
  {
    "path": "test/install/testdata/assets/invalid/.gitignore",
    "content": "!syft_1.5.0_linux_arm64.tar.gz"
  },
  {
    "path": "test/install/testdata/assets/invalid/checksums.txt",
    "content": "f459ecbed6621933b4dee4a613a6bdca915631742083f77ab88752f3ae0c6a9d  syft_1.5.0_darwin_amd64.sbom\n605322e3e7043a4f2f3d6e37f75a71389d38f6f290bff2e54bb2aaebbbf4829b  syft_1.5.0_darwin_amd64.tar.gz\n2feb92f6a4d117a3eb0cc5d887ac4b8da9a959ca404986dbe76e81ac83569d76  syft_1.5.0_darwin_arm64.sbom\nfe02d072e7ec9a8eb4ac866ba973396a8beae79829ee870acaadd4d862e5e65a  syft_1.5.0_darwin_arm64.tar.gz\n40562766f99db7221dac4c82c44ccae4d9983a6795a96127f4da955d6797c090  syft_1.5.0_linux_amd64.deb\n9adc0c0a3bbbdb8ce66914ffde5e176373cf5ec70a2a88cc886dc6ec54db0cd2  syft_1.5.0_linux_amd64.rpm\n9de7f1c549020a25df12f07dd58330e6f6dd0c5363cf0de1157eb4f01fc41020  syft_1.5.0_linux_amd64.sbom\n3d10023d46dfaf0fe75288df207b478b43597f7d2fff553f58430817166bd478  syft_1.5.0_linux_amd64.tar.gz\nb661dd1be48b75b735717f9bedc4beea587968af8bf2d8c2752a302ae0a34f89  syft_1.5.0_linux_arm64.deb\n5c311f44cc73fcae58884f8ea3328fc120bdaf3d21f4fe40270a22c6bb981f6d  syft_1.5.0_linux_arm64.rpm\na74549794fa5dac79ab9f6401ee7000db3bd9589435b302583c3ee4ca13fb8e3  syft_1.5.0_linux_arm64.sbom\nee2b1289a1e4b0de9409c3a78867949ca42788a5f50072b8a6e6e04e6a269f9c  syft_1.5.0_linux_arm64.tar.gz\n599e66f0a00ba8b5cc7817f774c66c5f23de32e6b935ca9c03a185e4d2554d80  syft_1.5.0_linux_ppc64le.deb\ndc4b8c4a02ffd8dd394ab94695ed44ed2bfceb06bc239835c51e84dd9b84a68c  syft_1.5.0_linux_ppc64le.rpm\n392044f2951ca6522d0bc71de43763202a548d40bf836098caf286041a7c8fa4  syft_1.5.0_linux_ppc64le.sbom\n551d98b67f7476bc2e38453a588177b0b038933850a351a94c4bf360813f01d0  syft_1.5.0_linux_ppc64le.tar.gz\n98cd582d9484f428cccd7351031543038f26d4e3f1481c5916e08e65983f1e21  syft_1.5.0_linux_s390x.deb\n3a5197d43a469feaa87c723448a47a2312cf26456eef4580b59eac447baef9d4  syft_1.5.0_linux_s390x.rpm\n5805bfb3e30452c8860665ea88bfdf356e9536a35c1b8ba28ac5b4717f2e6388  syft_1.5.0_linux_s390x.sbom\nff15f556660cc4c4279ce41e2475bffe2a0f72eb4423c21edf7380b2484fbf68  syft_1.5.0_linux_s390x.tar.gz\n6b22df07e992d8f4881901535c095d268f79924e10be34fab03dec2b4f9f9ca0  syft_1.5.0_windows_amd64.sbom\n5079c6a88e130f8677d0701cb2689f9eae2088022ecf5fa2b9f341b96d9983d2  syft_1.5.0_windows_amd64.zip\n"
  },
  {
    "path": "test/install/testdata/assets/valid/.gitignore",
    "content": "!syft_1.5.0_linux_arm64.tar.gz"
  },
  {
    "path": "test/install/testdata/assets/valid/checksums.txt",
    "content": "f459ecbed6621933b4dee4a613a6bdca915631742083f77ab88752f3ae0c6a9d  syft_1.5.0_darwin_amd64.sbom\n605322e3e7043a4f2f3d6e37f75a71389d38f6f290bff2e54bb2aaebbbf4829b  syft_1.5.0_darwin_amd64.tar.gz\n2feb92f6a4d117a3eb0cc5d887ac4b8da9a959ca404986dbe76e81ac83569d76  syft_1.5.0_darwin_arm64.sbom\nfe02d072e7ec9a8eb4ac866ba973396a8beae79829ee870acaadd4d862e5e65a  syft_1.5.0_darwin_arm64.tar.gz\n40562766f99db7221dac4c82c44ccae4d9983a6795a96127f4da955d6797c090  syft_1.5.0_linux_amd64.deb\n9adc0c0a3bbbdb8ce66914ffde5e176373cf5ec70a2a88cc886dc6ec54db0cd2  syft_1.5.0_linux_amd64.rpm\n9de7f1c549020a25df12f07dd58330e6f6dd0c5363cf0de1157eb4f01fc41020  syft_1.5.0_linux_amd64.sbom\n3d10023d46dfaf0fe75288df207b478b43597f7d2fff553f58430817166bd478  syft_1.5.0_linux_amd64.tar.gz\nb661dd1be48b75b735717f9bedc4beea587968af8bf2d8c2752a302ae0a34f89  syft_1.5.0_linux_arm64.deb\n5c311f44cc73fcae58884f8ea3328fc120bdaf3d21f4fe40270a22c6bb981f6d  syft_1.5.0_linux_arm64.rpm\na74549794fa5dac79ab9f6401ee7000db3bd9589435b302583c3ee4ca13fb8e3  syft_1.5.0_linux_arm64.sbom\n8d57abb57a0dae3ff23c8f0df1f51951b7772822e0d560e860d6f68c24ef6d3d  syft_1.5.0_linux_arm64.tar.gz\n599e66f0a00ba8b5cc7817f774c66c5f23de32e6b935ca9c03a185e4d2554d80  syft_1.5.0_linux_ppc64le.deb\ndc4b8c4a02ffd8dd394ab94695ed44ed2bfceb06bc239835c51e84dd9b84a68c  syft_1.5.0_linux_ppc64le.rpm\n392044f2951ca6522d0bc71de43763202a548d40bf836098caf286041a7c8fa4  syft_1.5.0_linux_ppc64le.sbom\n551d98b67f7476bc2e38453a588177b0b038933850a351a94c4bf360813f01d0  syft_1.5.0_linux_ppc64le.tar.gz\n98cd582d9484f428cccd7351031543038f26d4e3f1481c5916e08e65983f1e21  syft_1.5.0_linux_s390x.deb\n3a5197d43a469feaa87c723448a47a2312cf26456eef4580b59eac447baef9d4  syft_1.5.0_linux_s390x.rpm\n5805bfb3e30452c8860665ea88bfdf356e9536a35c1b8ba28ac5b4717f2e6388  syft_1.5.0_linux_s390x.sbom\nff15f556660cc4c4279ce41e2475bffe2a0f72eb4423c21edf7380b2484fbf68  syft_1.5.0_linux_s390x.tar.gz\n6b22df07e992d8f4881901535c095d268f79924e10be34fab03dec2b4f9f9ca0  syft_1.5.0_windows_amd64.sbom\n5079c6a88e130f8677d0701cb2689f9eae2088022ecf5fa2b9f341b96d9983d2  syft_1.5.0_windows_amd64.zip\n"
  },
  {
    "path": "test/install/testdata/github-api-syft-v0.36.0-release.json",
    "content": "{\"id\":57501596,\"tag_name\":\"v0.36.0\",\"update_url\":\"/anchore/syft/releases/tag/v0.36.0\",\"update_authenticity_token\":\"7XbNZgRHpbHegdv-xRlbe84Y983YgyXa3YKWwv_e0ocqTHagsHq5dxCTQUQnuX3vbsgdWQU3A3__hkVNhKGHSg\",\"delete_url\":\"/anchore/syft/releases/tag/v0.36.0\",\"delete_authenticity_token\":\"6tLaRtXKUc-zz4tHIwCbbD7CksxIHK5imZE1gnA39oVCe6fYux5a8cPD9J52kGUzM1Hs9JPBjceG7yyszBk_2A\",\"edit_url\":\"/anchore/syft/releases/edit/v0.36.0\"}\n"
  },
  {
    "path": "test/install/testdata/syft_0.35.1-SNAPSHOT-d461f63_checksums.txt",
    "content": "123745ee29779018ab386223a900f8cc704aa577f57ca43c157147c53c998a77  syft_0.35.1-SNAPSHOT-d461f63_linux_arm64.deb\n2083c5ad471028212e5ca72fdd3d60204052dbf3a9148c9579deac6af7865a3a  syft_0.35.1-SNAPSHOT-d461f63_linux_arm64.tar.gz\n6b95e8b17fdbb5da094c2251c8ee5a8e97e6059b6556308f1ff2b657a6a080bc  syft_0.35.1-SNAPSHOT-d461f63_darwin_x86_64.tar.gz\n940ea13dceedfcf3cf0ee2be24447123bf7efdb034c9f923e35549537b094aaa  syft_0.35.1-SNAPSHOT-d461f63_Windows_x86_64.zip\na96efc4139c79e0ecb526c7ab7c90fc94ee89c871c006c1089eb7c40c345ea65  syft_0.35.1-SNAPSHOT-d461f63_linux_x86_64.tar.gz\nb120a661ae5e24edc4b2c7932d5b4c9a54d6a90ceced6ba0acb9984ac45c0a4e  syft_0.35.1-SNAPSHOT-d461f63_linux_arm64.rpm\nd1bc4ac460d5bd5bc173425e32b974a0a0d06f892bef4ab5b431394063b2963a  syft_0.35.1-SNAPSHOT-d461f63_linux_amd64.rpm\nd65f963160acdc47a0f037bb42993866696181350e9901b8ad3d79f2dea35939  syft_0.35.1-SNAPSHOT-d461f63_darwin_arm64.zip\nd978c2bffaad36ea833203377f808725a4d3f8fd486f15552759f63909b210ba  syft_0.35.1-SNAPSHOT-d461f63_darwin_arm64.tar.gz\nda76cc564d8e597f9c5b33423d2280eb6bf65ba2f2092d7851cdd67718e0cbe1  syft_0.35.1-SNAPSHOT-d461f63_darwin_amd64.zip\ne75f4cbf5c2b05663f49f683f99ed01d8e6ebe0e082631461dceae6641c3103f  syft_0.35.1-SNAPSHOT-d461f63_linux_amd64.deb\n"
  },
  {
    "path": "test/install/testdata/syft_0.36.0_checksums.txt",
    "content": "16541ac64378d4216ac9fe2065d20e188a89e8c9cce4e637940a559daddb213b  syft_0.36.0_linux_amd64.rpm\n4596fdbb491251f6d8e3be38b64d361a9a35cf6a88da6bdad62c019511ffb1a5  syft_0.36.0_linux_amd64.deb\n5a69df410597d8649071b3419c17829f60d9f6f00edc8856b681842c2151f83c  syft_0.36.0_linux_amd64.tar.gz\n5c06f09d370740fb017c6a51657911a87860450d929fa28a9eff1cf00faac303  syft_0.36.0_darwin_arm64.tar.gz\n71403ffa346612f9203ce7657d2d191794a0e4367da355605377b8b5d457b7ef  syft_0.36.0_linux_arm64.tar.gz\n75989a83f0d361969b5f88f3ee3807ed9ddbdf9fae13b6edce1839cf5952a36c  syft_0.36.0_linux_arm64.deb\n860b42c5d7d03e484c87e18031e6a473f48d3b088a6268fcf8f9567d5b5c90d3  syft_0.36.0_linux_arm64.rpm\nfba022c6fac6f2d2f648295af78f86e873488565e41a252a97efafe75622ccf6  syft_0.36.0_darwin_amd64.tar.gz\n"
  },
  {
    "path": "test/rules/rules.go",
    "content": "//go:build gorules\n\npackage rules\n\nimport (\n\t\"strings\"\n\n\t\"github.com/quasilyte/go-ruleguard/dsl\"\n)\n\n// nolint:unused\nfunc resourceCleanup(m dsl.Matcher) {\n\t// this rule defends against use of internal.CloseAndLogError() without a defer statement\n\tm.Match(`$res, $err := $resolver.FileContentsByLocation($loc); if $*_ { $*_ }; $next`).\n\t\tWhere(m[\"res\"].Type.Implements(`io.Closer`) &&\n\t\t\tm[\"res\"].Type.Implements(`io.Reader`) &&\n\t\t\tm[\"err\"].Type.Implements(`error`) &&\n\t\t\t!m[\"next\"].Text.Matches(`defer internal.CloseAndLogError`)).\n\t\tReport(`please call \"defer internal.CloseAndLogError($res, $loc.RealPath)\" right after checking the error returned from $resolver.FileContentsByLocation.`)\n}\n\n// nolint:unused\nfunc isPtr(ctx *dsl.VarFilterContext) bool {\n\treturn strings.HasPrefix(ctx.Type.String(), \"*\") || strings.HasPrefix(ctx.Type.Underlying().String(), \"*\")\n}\n\n// nolint:unused\nfunc noUnboundedReads(m dsl.Matcher) {\n\t// flag io.ReadAll where the argument is not already wrapped in io.LimitReader\n\tm.Match(`io.ReadAll($reader)`).\n\t\tWhere(!m[\"reader\"].Text.Matches(`(?i)LimitReader|LimitedReader`)).\n\t\tReport(\"do not use unbounded io.ReadAll; wrap the reader with io.LimitReader or use a streaming parser\")\n\n\t// flag io.Copy only when the destination is an in-memory buffer\n\t// io.Copy to files, hash writers, encoders, etc. is streaming and safe\n\tm.Match(`io.Copy($dst, $src)`).\n\t\tWhere((m[\"dst\"].Type.Is(`*bytes.Buffer`) || m[\"dst\"].Type.Is(`*strings.Builder`)) && !m[\"src\"].Text.Matches(`(?i)LimitReader|LimitedReader`)).\n\t\tReport(\"do not use unbounded io.Copy to in-memory buffer; wrap the source reader with io.LimitReader\")\n}\n\n// nolint:unused\nfunc noDirectTempFiles(m dsl.Matcher) {\n\t// catalogers must use tmpdir.FromContext(ctx) instead of creating temp files/dirs directly,\n\t// so that all temp storage is centrally managed and cleaned up\n\tm.Match(\n\t\t`os.CreateTemp($*_)`,\n\t\t`os.MkdirTemp($*_)`,\n\t).\n\t\tWhere(m.File().PkgPath.Matches(`/cataloger/`)).\n\t\tReport(\"do not use os.CreateTemp/os.MkdirTemp in catalogers; use tmpdir.FromContext(ctx) instead\")\n}\n\n// nolint:unused\nfunc tmpCleanupDeferred(m dsl.Matcher) {\n\t// ensure the cleanup function returned by NewFile/NewChild is deferred, not discarded\n\tm.Match(\n\t\t`$_, $cleanup, $err := $x.NewFile($*_); if $*_ { $*_ }; $next`,\n\t\t`$_, $cleanup, $err = $x.NewFile($*_); if $*_ { $*_ }; $next`,\n\t).\n\t\tWhere(!m[\"next\"].Text.Matches(`^defer `)).\n\t\tReport(\"defer the cleanup function returned by NewFile immediately after the error check\")\n\n\tm.Match(\n\t\t`$_, $cleanup, $err := $x.NewChild($*_); if $*_ { $*_ }; $next`,\n\t\t`$_, $cleanup, $err = $x.NewChild($*_); if $*_ { $*_ }; $next`,\n\t).\n\t\tWhere(!m[\"next\"].Text.Matches(`^defer `)).\n\t\tReport(\"defer the cleanup function returned by NewChild immediately after the error check\")\n}\n\n// nolint:unused\nfunc packagesInRelationshipsAsValues(m dsl.Matcher) {\n\tm.Import(\"github.com/anchore/syft/syft/artifact\")\n\n\tisRelationship := func(m dsl.Matcher) bool {\n\t\treturn m[\"x\"].Type.Is(\"artifact.Relationship\")\n\t}\n\n\thasPointerType := func(m dsl.Matcher) bool {\n\t\treturn m[\"y\"].Filter(isPtr)\n\t}\n\n\t// this rule defends against using pointers as values in artifact.Relationship\n\tm.Match(\n\t\t`$x{$*_, From: $y, $*_}`,\n\t\t`$x{$*_, To: $y, $*_}`,\n\t\t`$x.From = $y`,\n\t\t`$x.To = $y`,\n\t).\n\t\tWhere(isRelationship(m) && hasPointerType(m)).\n\t\tReport(\"pointer used as a value for From/To field in artifact.Relationship (use values instead)\")\n}\n"
  }
]